diff --git a/try/JsSim.css b/try/JsSim.css index c76a25ce..06a556f9 100644 --- a/try/JsSim.css +++ b/try/JsSim.css @@ -6,8 +6,10 @@ html { height: 100%; } +/* Use only safe fonts to avoid CI testing issues https://www.w3schools.com/csSref/css_websafe_fonts.php */ body { height: 100%; + font-family: Arial, sans-serif; } .flex-content { @@ -32,7 +34,7 @@ body { .kappa-code { white-space : pre-wrap; word-break: break-all; - font-family: monospace; + font-family: 'Courier New', monospace; } .clickable { cursor: pointer; cursor: hand; } @@ -127,14 +129,14 @@ rect { stroke-width: 2; } fill-opacity:0.5; stroke-width : 2; } -.node-text { font: 10px sans-serif; } +.node-text { font-size: 10px; } .node-proof { opacity : 0.0; } .site-rect { stroke-width:1; stroke: #000; } -.site-text { font: 8x sans-serif; } +.site-text { font-size: 8px; } .node-proof { opacity : 0.0; } @@ -239,7 +241,7 @@ rect { stroke-width: 2; } #contact-map-display { -moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased; - font: 14px helvetica, arial, sans-serif; + font: 14px Arial, sans-serif; display: inline-block; position: relative; width: 100%; @@ -256,6 +258,11 @@ form { fill: none; stroke: transparent; } + +#din_table_id { + font-variant-numeric: tabular-nums; +} + .snap-tooltip { position: absolute; text-align: right; @@ -263,6 +270,7 @@ form { bottom: 0; right: 0; pointer-events: none; + font-variant-numeric: tabular-nums; } .tooltip { diff --git a/try/JsSim.js b/try/JsSim.js index 369638d3..e55f68b9 100644 --- a/try/JsSim.js +++ b/try/JsSim.js @@ -427080,7 +427080,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] [11, "[State_runtime.embedded] embedded_manager#log: ", [2, 0, 0]], "[State_runtime.embedded] embedded_manager#log: %s"], cst_File_gui_state_runtime_web$5 = - 'File "gui/state/runtime_web_workers.ml", line 247, characters 26-33', + 'File "gui/state/runtime_web_workers.ml", line 250, characters 26-33', cst_Message_posted_to_kasim_wo = "Message posted to kasim_worker", cst_File_gui_state_runtime_web$4 = 'File "gui/state/runtime_web_workers.ml", line 216, characters 37-44', @@ -427362,8 +427362,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] var response_text = response_message.data; if(debug_printing){ var - _bn_ = caml_call2(Stdlib[28], cst_Message_received_from, worker_name); - caml_call1(Kappa_webapp_lib_Common[8], _bn_); + _bv_ = caml_call2(Stdlib[28], cst_Message_received_from, worker_name); + caml_call1(Kappa_webapp_lib_Common[8], _bv_); caml_call2 (Kappa_webapp_lib_Common[3], cst_File_gui_state_runtime_web, @@ -427378,16 +427378,16 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] exception_creates_modal ? function (response_message){ - try{var _bm_ = process_message(response_message); return _bm_;} + try{var _bu_ = process_message(response_message); return _bu_;} catch(e$0){ var e = caml_wrap_exception(e$0), - _bi_ = caml_call1(Stdlib_Printexc[1], e), - _bj_ = - caml_call2(Stdlib[28], cst_raised_the_following_excep, _bi_), - _bk_ = caml_call2(Stdlib[28], worker_name, _bj_), - _bl_ = caml_call2(Stdlib[28], cst_Worker, _bk_); - caml_call2(Kappa_webapp_lib_Ui_common[11], 0, _bl_); + _bq_ = caml_call1(Stdlib_Printexc[1], e), + _br_ = + caml_call2(Stdlib[28], cst_raised_the_following_excep, _bq_), + _bs_ = caml_call2(Stdlib[28], worker_name, _br_), + _bt_ = caml_call2(Stdlib[28], cst_Worker, _bs_); + caml_call2(Kappa_webapp_lib_Ui_common[11], 0, _bt_); throw caml_maybe_attach_backtrace(e, 0); } } @@ -427407,10 +427407,10 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } var send_worker_exceptions_to_moda = 1 - _o_; function onerror(worker_name, apply_onerror){ - function _bg_(param){ + function _bo_(param){ var - _bh_ = caml_call2(Stdlib[28], worker_name, cst), - error_string = caml_call2(Stdlib[28], cst_Error_in, _bh_); + _bp_ = caml_call2(Stdlib[28], worker_name, cst), + error_string = caml_call2(Stdlib[28], cst_Error_in, _bp_); caml_call2 (Kappa_webapp_lib_Common[3], cst_File_gui_state_runtime_web$0, @@ -427419,45 +427419,45 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call1(apply_onerror, 0); return Js_of_ocaml_Js[7]; } - return caml_call1(Js_of_ocaml_Dom[10], _bg_); + return caml_call1(Js_of_ocaml_Dom[10], _bo_); } var manager_without_kasim = [], _p_ = 0, _q_ = 0; runtime.caml_update_dummy (manager_without_kasim, [0, 0, - function(_ar_){ - var - _as_ = caml_call2(CamlinternalOO[3], _ar_, cst$0), - _at_ = caml_call2(CamlinternalOO[3], _ar_, cst$1), - _au_ = caml_call2(CamlinternalOO[3], _ar_, cst$2), - _av_ = caml_call2(CamlinternalOO[3], _ar_, cst$3), - _aw_ = caml_call2(CamlinternalOO[3], _ar_, cst$4), - _ax_ = caml_call2(CamlinternalOO[3], _ar_, cst$5), - _ay_ = caml_call3(CamlinternalOO[4], _ar_, _n_, _m_), - _aI_ = _ay_[35], - _aJ_ = _ay_[37], - _aK_ = _ay_[38], - _az_ = _ay_[1], - _aA_ = _ay_[5], - _aB_ = _ay_[6], - _aC_ = _ay_[7], - _aD_ = _ay_[9], - _aE_ = _ay_[11], - _aF_ = _ay_[12], - _aG_ = _ay_[14], - _aH_ = _ay_[23]; - function _aL_(self_1){self_1[1 + _aJ_] = 0; return 0;} - caml_call3(CamlinternalOO[10], _ar_, _aI_, _aL_); - function _aM_(self_1){ + function(_az_){ + var + _aA_ = caml_call2(CamlinternalOO[3], _az_, cst$0), + _aB_ = caml_call2(CamlinternalOO[3], _az_, cst$1), + _aC_ = caml_call2(CamlinternalOO[3], _az_, cst$2), + _aD_ = caml_call2(CamlinternalOO[3], _az_, cst$3), + _aE_ = caml_call2(CamlinternalOO[3], _az_, cst$4), + _aF_ = caml_call2(CamlinternalOO[3], _az_, cst$5), + _aG_ = caml_call3(CamlinternalOO[4], _az_, _n_, _m_), + _aQ_ = _aG_[35], + _aR_ = _aG_[37], + _aS_ = _aG_[38], + _aH_ = _aG_[1], + _aI_ = _aG_[5], + _aJ_ = _aG_[6], + _aK_ = _aG_[7], + _aL_ = _aG_[9], + _aM_ = _aG_[11], + _aN_ = _aG_[12], + _aO_ = _aG_[14], + _aP_ = _aG_[23]; + function _aT_(self_1){self_1[1 + _aR_] = 0; return 0;} + caml_call3(CamlinternalOO[10], _az_, _aQ_, _aT_); + function _aU_(self_1){ var t1 = worker_onmessage (1, cst_kasa_worker, send_worker_exceptions_to_moda, - caml_call1(Kappa_json_api_Kasa_client[1], self_1[1 + _at_])), - t2 = self_1[1 + _as_]; + caml_call1(Kappa_json_api_Kasa_client[1], self_1[1 + _aB_])), + t2 = self_1[1 + _aA_]; t2.onmessage = t1; var t3 = @@ -427465,8 +427465,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] (1, cst_kamoha_worker, send_worker_exceptions_to_moda, - caml_call1(Kappa_json_api_Kamoha_client[2], self_1[1 + _av_])), - t4 = self_1[1 + _au_]; + caml_call1(Kappa_json_api_Kamoha_client[2], self_1[1 + _aD_])), + t4 = self_1[1 + _aC_]; t4.onmessage = t3; var t5 = @@ -427474,135 +427474,135 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] (1, cst_kastor_worker, send_worker_exceptions_to_moda, - caml_call1(Kappa_json_api_Kastor_client[3], self_1[1 + _ax_])), - t6 = self_1[1 + _aw_]; + caml_call1(Kappa_json_api_Kastor_client[3], self_1[1 + _aF_])), + t6 = self_1[1 + _aE_]; t6.onmessage = t5; function apply_onerror(param){ - return caml_call1(self_1[1][1 + _aI_], self_1); + return caml_call1(self_1[1][1 + _aQ_], self_1); } var t7 = onerror(cst_kasa_worker$0, apply_onerror), - t8 = self_1[1 + _as_]; + t8 = self_1[1 + _aA_]; t8.onerror = t7; var t9 = onerror(cst_kamoha_worker$0, apply_onerror), - t10 = self_1[1 + _au_]; + t10 = self_1[1 + _aC_]; t10.onerror = t9; var t11 = onerror(cst_kastor_worker$0, apply_onerror), - t12 = self_1[1 + _aw_]; + t12 = self_1[1 + _aE_]; return t12.onerror = t11; } - caml_call2(CamlinternalOO[14], _ar_, _aM_); + caml_call2(CamlinternalOO[14], _az_, _aU_); var - _aN_ = + _aV_ = caml_call6 (CamlinternalOO[18], - _ar_, + _az_, 0, 0, _c_, Kappa_json_api_Kasa_client[4], 1) [1], - _aO_ = + _aW_ = caml_call6 (CamlinternalOO[18], - _ar_, + _az_, 0, _k_, _e_, Kappa_json_api_Kamoha_client[4], 1) [1], - _aP_ = + _aX_ = caml_call6 (CamlinternalOO[18], - _ar_, + _az_, 0, _k_, _d_, Kappa_json_api_Kastor_client[4], 1) [1], - _aQ_ = + _aY_ = [0, - _aD_, + _aL_, function(self_1, simulation_load, patternSharing, overwrites){ - function _a3_(parsing_compil){ + function _a$_(parsing_compil){ var load = caml_call3 (simulation_load, patternSharing, parsing_compil, overwrites), init_kasa = - caml_call2(self_1[1][1 + _aG_], self_1, parsing_compil); - function _a6_(e){ - self_1[1 + _aK_] = 0; - var _bf_ = caml_call2(Kappa_data_structures_Result_u[13], 0, e); - return caml_call1(Lwt[4], _bf_); + caml_call2(self_1[1][1 + _aO_], self_1, parsing_compil); + function _bc_(e){ + self_1[1 + _aS_] = 0; + var _bn_ = caml_call2(Kappa_data_structures_Result_u[13], 0, e); + return caml_call1(Lwt[4], _bn_); } - function _a7_(param){ - function _a$_(e){ - self_1[1 + _aK_] = 0; + function _bd_(param){ + function _bh_(e){ + self_1[1 + _aS_] = 0; var - _be_ = caml_call2(Kappa_data_structures_Result_u[13], 0, e); - return caml_call1(Lwt[4], _be_); + _bm_ = caml_call2(Kappa_data_structures_Result_u[13], 0, e); + return caml_call1(Lwt[4], _bm_); } - function _ba_(infos){ - self_1[1 + _aK_] = infos; + function _bi_(infos){ + self_1[1 + _aS_] = infos; var - _bd_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _bd_); + _bl_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _bl_); } var - _bb_ = - caml_call2(Kappa_data_structures_Result_u[9], _ba_, _a$_), - _bc_ = caml_call1(self_1[1][1 + _aC_], self_1); - return caml_call2(Lwt[33][1], _bc_, _bb_); + _bj_ = + caml_call2(Kappa_data_structures_Result_u[9], _bi_, _bh_), + _bk_ = caml_call1(self_1[1][1 + _aK_], self_1); + return caml_call2(Lwt[33][1], _bk_, _bj_); } var - _a8_ = caml_call2(Kappa_data_structures_Result_u[9], _a7_, _a6_), - locators = caml_call2(Lwt[33][1], init_kasa, _a8_); - function _a9_(param){return locators;} - var _a__ = caml_call1(Kappa_json_api_Api_common[9], _a9_); - return caml_call2(Lwt[33][1], load, _a__); + _be_ = caml_call2(Kappa_data_structures_Result_u[9], _bd_, _bc_), + locators = caml_call2(Lwt[33][1], init_kasa, _be_); + function _bf_(param){return locators;} + var _bg_ = caml_call1(Kappa_json_api_Api_common[9], _bf_); + return caml_call2(Lwt[33][1], load, _bg_); } var - _a4_ = caml_call1(Kappa_json_api_Api_common[9], _a3_), - _a5_ = caml_call1(self_1[1][1 + _aB_], self_1); - return caml_call2(Lwt[33][1], _a5_, _a4_); + _ba_ = caml_call1(Kappa_json_api_Api_common[9], _a$_), + _bb_ = caml_call1(self_1[1][1 + _aJ_], self_1); + return caml_call2(Lwt[33][1], _bb_, _ba_); }, - _aH_, + _aP_, function(self_1, filename, pos){ - var _aW_ = self_1[1 + _aK_]; - function _aX_(param){ + var _a4_ = self_1[1 + _aS_]; + function _a5_(param){ var x = param[2]; return caml_call3 (Kappa_data_structures_Loc[10], filename, pos, x); } - var _aY_ = caml_call2(Stdlib_List[39], _aX_, _aW_); - function _aZ_(_a2_){return _a2_[1];} + var _a6_ = caml_call2(Stdlib_List[39], _a5_, _a4_); + function _a7_(_a__){return _a__[1];} var - _a0_ = + _a8_ = caml_call1 - (caml_call1(Kappa_data_structures_Option_u[1], _aZ_), _aY_), - _a1_ = + (caml_call1(Kappa_data_structures_Option_u[1], _a7_), _a6_), + _a9_ = caml_call1 - (caml_call1(Kappa_data_structures_Result_u[14], 0), _a0_); - return caml_call1(Lwt[4], _a1_); + (caml_call1(Kappa_data_structures_Result_u[14], 0), _a8_); + return caml_call1(Lwt[4], _a9_); }, - _aE_, - function(self_1){return self_1[1 + _aJ_];}, - _az_, - function(self_1){return self_1[1 + _as_].terminate();}, - _aF_, + _aM_, + function(self_1){return self_1[1 + _aR_];}, + _aH_, + function(self_1){return self_1[1 + _aA_].terminate();}, + _aN_, function(self_1){ var - _aV_ = - caml_call1(Kappa_json_api_Kasa_client[3], self_1[1 + _at_]); - return _aV_ ? _aV_ : caml_call1(self_1[1][1 + _aA_], self_1); + _a3_ = + caml_call1(Kappa_json_api_Kasa_client[3], self_1[1 + _aB_]); + return _a3_ ? _a3_ : caml_call1(self_1[1][1 + _aI_], self_1); }]; - caml_call2(CamlinternalOO[11], _ar_, _aQ_); + caml_call2(CamlinternalOO[11], _az_, _aY_); return function(env, self, param){ var kasa_worker = caml_call1(Js_of_ocaml_Worker[1], cst_KaSaWorker_js), @@ -427612,20 +427612,20 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] kamoha_mailbox = caml_call1(Kappa_json_api_Kamoha_client[1], 0), kastor_worker = caml_call1(Js_of_ocaml_Worker[1], cst_KaStorWorker_js), - _aR_ = caml_call1(Kappa_json_api_Kastor_client[2], 0), - _aS_ = _aR_[2], - _aT_ = _aR_[1], - _aU_ = caml_call2(CamlinternalOO[24], self, _ar_); - _aU_[1 + _ax_] = _aS_; - _aU_[1 + _aw_] = kastor_worker; - _aU_[1 + _av_] = kamoha_mailbox; - _aU_[1 + _au_] = kamoha_worker; - _aU_[1 + _at_] = kasa_mailbox; - _aU_[1 + _as_] = kasa_worker; - _aU_[1 + _aJ_] = 1; + _aZ_ = caml_call1(Kappa_json_api_Kastor_client[2], 0), + _a0_ = _aZ_[2], + _a1_ = _aZ_[1], + _a2_ = caml_call2(CamlinternalOO[24], self, _az_); + _a2_[1 + _aF_] = _a0_; + _a2_[1 + _aE_] = kastor_worker; + _a2_[1 + _aD_] = kamoha_mailbox; + _a2_[1 + _aC_] = kamoha_worker; + _a2_[1 + _aB_] = kasa_mailbox; + _a2_[1 + _aA_] = kasa_worker; + _a2_[1 + _aR_] = 1; caml_call4 - (_aN_, - _aU_, + (_aV_, + _a2_, function(param){return 1;}, function(message_text){ caml_call1 @@ -427639,8 +427639,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] }, kasa_mailbox); caml_call3 - (_aO_, - _aU_, + (_aW_, + _a2_, function(message_text){ caml_call1 (Kappa_webapp_lib_Common[8], cst_Message_posted_to_kamoha_w); @@ -427653,8 +427653,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] }, kamoha_mailbox); caml_call3 - (_aP_, - _aU_, + (_aX_, + _a2_, function(message_text){ caml_call1 (Kappa_webapp_lib_Common[8], cst_Message_posted_to_kastor_w); @@ -427665,102 +427665,110 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call1(Kappa_webapp_lib_Common[9], 0); return kastor_worker.postMessage(message_text); }, - _aT_); - _aU_[1 + _aK_] = 0; - return caml_call3(CamlinternalOO[26], self, _aU_, _ar_);}; + _a1_); + _a2_[1 + _aS_] = 0; + return caml_call3(CamlinternalOO[26], self, _a2_, _az_);}; }, _q_, _p_]); - function _r_(_W_){ - var - _X_ = caml_call2(CamlinternalOO[3], _W_, cst$6), - _Y_ = caml_call2(CamlinternalOO[8], _W_, _a_), - _Z_ = _Y_[1], - ___ = _Y_[6], - _$_ = _Y_[25], - _aa_ = _Y_[26], - _ab_ = _Y_[29], - _ac_ = _Y_[32], - _ad_ = _Y_[36], - _ae_ = + function _r_(_$_){ + var + _aa_ = caml_call2(CamlinternalOO[3], _$_, cst$6), + _ab_ = caml_call2(CamlinternalOO[8], _$_, _a_), + _ac_ = _ab_[1], + _ad_ = _ab_[5], + _ae_ = _ab_[6], + _af_ = _ab_[25], + _ag_ = _ab_[26], + _ah_ = _ab_[29], + _ai_ = _ab_[32], + _aj_ = _ab_[36], + _ak_ = caml_call6 - (CamlinternalOO[18], _W_, 0, 0, _j_, manager_without_kasim, 1), - _af_ = _ae_[1], - _ag_ = _ae_[2], - _ah_ = _ae_[25], - _ai_ = _ae_[28], - _aj_ = _ae_[36]; - function _ak_(self_2){ + (CamlinternalOO[18], _$_, 0, 0, _j_, manager_without_kasim, 1), + _al_ = _ak_[1], + _am_ = _ak_[2], + _an_ = _ak_[25], + _ao_ = _ak_[28], + _ap_ = _ak_[36]; + function _aq_(self_2){ var t20 = worker_onmessage (0, cst_kasim_worker, send_worker_exceptions_to_moda, - caml_call1(self_2[1][1 + _ab_], self_2)), - t21 = self_2[1 + _X_]; + caml_call1(self_2[1][1 + _ah_], self_2)), + t21 = self_2[1 + _aa_]; t21.onmessage = t20; - function apply_onerror(param){return caml_call1(_ag_, self_2);} + function apply_onerror(param){return caml_call1(_am_, self_2);} var t22 = onerror(cst_kasim_worker$0, apply_onerror), - t23 = self_2[1 + _X_]; + t23 = self_2[1 + _aa_]; return t23.onerror = t22; } - caml_call2(CamlinternalOO[14], _W_, _ak_); + caml_call2(CamlinternalOO[14], _$_, _aq_); var - _al_ = + _ar_ = caml_call6 (CamlinternalOO[18], - _W_, + _$_, 0, shared, _l_, Kappa_json_api_Kasim_client[2], 1) [1], - _am_ = + _as_ = [0, - ___, + _ae_, function(self_2, timeout){ return caml_call1(Js_of_ocaml_lwt_Lwt_js[1], timeout); }, - _Z_, + _ac_, function(self_2){ - caml_call1(_aj_, self_2); - return self_2[1 + _X_].terminate(); + caml_call1(_ap_, self_2); + return self_2[1 + _aa_].terminate(); }, - _ad_, + _aj_, function(self_2){ - var _aq_ = caml_call1(_ah_, self_2); - return _aq_ ? _aq_ : caml_call1(self_2[1][1 + _$_], self_2); + var _aw_ = caml_call1(_an_, self_2); + if(_aw_) + var _ax_ = _aw_; + else{ + var _ay_ = caml_call1(self_2[1][1 + _af_], self_2); + if(! _ay_) return caml_call1(self_2[1][1 + _ad_], self_2); + var _ax_ = _ay_; + } + return _ax_; }, - _ac_, + _ai_, function(self_2, patternSharing, overwrites){ function simulation_load(patternSharing, parsing_compil, overwrites){ return caml_call4 - (self_2[1][1 + _aa_], + (self_2[1][1 + _ag_], self_2, patternSharing, parsing_compil, overwrites); } return caml_call3 - (caml_call1(_ai_, self_2), + (caml_call1(_ao_, self_2), simulation_load, patternSharing, overwrites); }]; - caml_call2(CamlinternalOO[11], _W_, _am_); + caml_call2(CamlinternalOO[11], _$_, _as_); return function(env, self, param){ var - _an_ = caml_call1(Js_of_ocaml_Worker[1], cst_KaSimWorker_js), - _ao_ = caml_call2(CamlinternalOO[24], self, _W_); - _ao_[1 + _X_] = _an_; - caml_call2(_af_, _ao_, 0); - var _ap_ = 0; + _at_ = caml_call1(Js_of_ocaml_Worker[1], cst_KaSimWorker_js), + _au_ = caml_call2(CamlinternalOO[24], self, _$_); + _au_[1 + _aa_] = _at_; + caml_call2(_al_, _au_, 0); + var _av_ = 0; caml_call3 - (_al_, - _ao_, + (_ar_, + _au_, function(message_text){ caml_call1(Kappa_webapp_lib_Common[8], cst_Message_posted_to_kasim_wo); caml_call2 @@ -427768,10 +427776,10 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] cst_File_gui_state_runtime_web$4, caml_jsstring_of_string(message_text)); caml_call1(Kappa_webapp_lib_Common[9], 0); - return _an_.postMessage(message_text); + return _at_.postMessage(message_text); }, - _ap_); - return caml_call3(CamlinternalOO[26], self, _ao_, _W_);}; + _av_); + return caml_call3(CamlinternalOO[26], self, _au_, _$_);}; } var runtime_kasim_as_web_worker = caml_call2(CamlinternalOO[19], _f_, _r_), @@ -427779,18 +427787,20 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] function _t_(_v_){ var _w_ = caml_call2(CamlinternalOO[8], _v_, _g_), + _C_ = _w_[32], _x_ = _w_[1], - _y_ = _w_[24], - _z_ = _w_[29], - _A_ = _w_[31], - _B_ = _w_[32], - _C_ = + _y_ = _w_[5], + _z_ = _w_[24], + _A_ = _w_[29], + _B_ = _w_[31], + _D_ = caml_call6 (CamlinternalOO[18], _v_, 0, 0, _j_, manager_without_kasim, 1), - _D_ = _C_[1], - _E_ = _C_[28], - _F_ = _C_[36], - _G_ = + _E_ = _D_[1], + _F_ = _D_[25], + _G_ = _D_[28], + _H_ = _D_[36], + _I_ = caml_call6 (CamlinternalOO[18], _v_, @@ -427800,68 +427810,78 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] Kappa_json_api_Kasim_runtime[1], 1) [1], - _H_ = + _J_ = [0, - _A_, - function(self_3){return 1;}, - _x_, - function(self_3){caml_call1(_F_, self_3); return 0;}, _B_, function(self_3){return 1;}, - _z_, + _x_, + function(self_3){caml_call1(_H_, self_3); return 0;}, + _C_, + function(self_3){ + var _Y_ = caml_call1(_F_, self_3); + if(_Y_) + var _Z_ = _Y_; + else{ + var ___ = caml_call1(self_3[1][1 + _C_], self_3); + if(! ___) return caml_call1(self_3[1][1 + _y_], self_3); + var _Z_ = ___; + } + return _Z_; + }, + _A_, function(self_3, patternSharing, overwrites){ function simulation_load(patternSharing, parsing_compil, overwrites){ return caml_call4 - (self_3[1][1 + _y_], + (self_3[1][1 + _z_], self_3, patternSharing, parsing_compil, overwrites); } return caml_call3 - (caml_call1(_E_, self_3), + (caml_call1(_G_, self_3), simulation_load, patternSharing, overwrites); }]; - caml_call2(CamlinternalOO[11], _v_, _H_); - return function(_K_, _J_, _I_){ + caml_call2(CamlinternalOO[11], _v_, _J_); + return function(_M_, _L_, _K_){ if(! _s_[1]){ var - _N_ = caml_call1(CamlinternalOO[16], _b_), - _O_ = caml_call2(CamlinternalOO[8], _N_, _h_), - _P_ = _O_[1], - _Q_ = _O_[2], - _R_ = _O_[3], - _S_ = + _P_ = caml_call1(CamlinternalOO[16], _b_), + _Q_ = caml_call2(CamlinternalOO[8], _P_, _h_), + _R_ = _Q_[1], + _S_ = _Q_[2], + _T_ = _Q_[3], + _U_ = [0, - _Q_, + _S_, function(self_4, param){return 0.1;}, - _P_, - function(self_4){return Js_of_ocaml_lwt_Lwt_js[2];}, _R_, + function(self_4){return Js_of_ocaml_lwt_Lwt_js[2];}, + _T_, function(self_4, exn, msg){ var - _V_ = + _X_ = caml_jsstring_of_string (caml_call2(Stdlib_Format[132], _u_, msg)); caml_call2 (Kappa_webapp_lib_Common[3], cst_File_gui_state_runtime_web$5, - _V_); + _X_); return Lwt[36]; }]; - caml_call2(CamlinternalOO[11], _N_, _S_); - var _T_ = function(_U_){return caml_call2(CamlinternalOO[24], 0, _N_);}; - caml_call1(CamlinternalOO[17], _N_); - _s_[1] = _T_; + caml_call2(CamlinternalOO[11], _P_, _U_); + var _V_ = function(_W_){return caml_call2(CamlinternalOO[24], 0, _P_);}; + caml_call1(CamlinternalOO[17], _P_); + _s_[1] = _V_; } var - _L_ = caml_call1(_s_[1], 0), - _M_ = caml_call2(CamlinternalOO[24], _J_, _v_); - caml_call2(_D_, _M_, 0); - caml_call2(_G_, _M_, _L_); - return caml_call3(CamlinternalOO[26], _J_, _M_, _v_);}; + _N_ = caml_call1(_s_[1], 0), + _O_ = caml_call2(CamlinternalOO[24], _L_, _v_); + caml_call2(_E_, _O_, 0); + caml_call2(_I_, _O_, _N_); + return caml_call3(CamlinternalOO[26], _L_, _O_, _v_);}; } var runtime_kasim_embedded_in_main = caml_call2(CamlinternalOO[19], _f_, _t_), @@ -427875,7 +427895,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 1532 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" +//# 1552 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" (function (globalThis){ "use strict"; @@ -428227,7 +428247,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 1885 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" +//# 1905 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" (function (globalThis){ "use strict"; @@ -428305,7 +428325,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] [2, 0, [12, 39, 0]]], "[State_project.init_plot_period] failed to parse init_plot_period '%s'"], cst_File_gui_state_state_proje$1 = - 'File "gui/state/state_project.ml", line 389, characters 34-41', + 'File "gui/state/state_project.ml", line 390, characters 34-41', _c_ = [0, [11, @@ -428313,7 +428333,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] [2, 0, [12, 39, 0]]], "[State_project.init_model_seed] failed to parse model_seed '%s'"], cst_File_gui_state_state_proje$2 = - 'File "gui/state/state_project.ml", line 407, characters 34-41', + 'File "gui/state/state_project.ml", line 408, characters 34-41', _g_ = [0, [11, "Failed ", [2, 0, [11, " due to unavailable project.", 0]]], @@ -428329,10 +428349,10 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] [11, "[State_project.init] 2 : ", [2, 0, 0]], "[State_project.init] 2 : %s"], cst_File_gui_state_state_proje$4 = - 'File "gui/state/state_project.ml", line 553, characters 34-41', + 'File "gui/state/state_project.ml", line 554, characters 34-41', cst_add_project = "add project `", cst_File_gui_state_state_proje$3 = - 'File "gui/state/state_project.ml", line 540, characters 33-40', + 'File "gui/state/state_project.ml", line 541, characters 33-40', cst_plot_period = "plot_period", cst_pause_condition = "pause_condition", cst_model_seed = "model_seed", @@ -428346,7 +428366,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] cst_does_not_exists = " does not exists", cst_Project = "Project ", cst_File_gui_state_state_proje$0 = - 'File "gui/state/state_project.ml", line 237, characters 15-22', + 'File "gui/state/state_project.ml", line 238, characters 15-22', cst_state_project_set_seed_set = "[state_project.set_seed] set seed to ", cst_File_gui_state_state_proje = 'File "gui/state/state_project.ml", line 193, characters 20-27'; @@ -428611,14 +428631,14 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] var project_parameters = param[3], project_catalog = param[2], - me = param[1], + project = param[1], default_parameters = state_va[4]; function _a8_(out){ caml_call2 (set_state, 0, [0, - [0, me], + [0, project], project_catalog, 1, default_parameters, @@ -428626,7 +428646,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] return caml_call1(Lwt[4], out); } var - _a9_ = me[4], + _a9_ = project[4], _a__ = caml_call3(caml_get_public_method(_a9_, 863179533, 40), _a9_, 1, 0); return caml_call2(Lwt[33][1], _a__, _a8_); @@ -428669,7 +428689,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] cst_File_gui_state_state_proje$0, loop); var - me = + project = [0, project_id, project_is_computing, @@ -428686,7 +428706,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call2 (Kappa_data_structures_Result_u[14], 0, - [0, me, [0, me, catalog], params]); + [0, project, [0, project, catalog], params]); return caml_call1(Lwt[4], _a6_); }, _aX_ = caml_call1(Kappa_json_api_Api_common[9], _aW_), @@ -429083,7 +429103,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 2742 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" +//# 2762 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" (function (globalThis){ "use strict"; @@ -429916,7 +429936,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 3576 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" +//# 3596 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" (function (globalThis){ "use strict"; @@ -430001,7 +430021,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 3662 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" +//# 3682 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" (function (globalThis){ "use strict"; @@ -430504,7 +430524,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 4166 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" +//# 4186 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" (function (globalThis){ "use strict"; @@ -430573,7 +430593,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 4236 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" +//# 4256 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" (function (globalThis){ "use strict"; @@ -430600,7 +430620,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 4264 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" +//# 4284 "state/.kappa_webapp_state.objs/jsoo/default/kappa_webapp_state.cma.js" (function (globalThis){ "use strict"; @@ -431343,7 +431363,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] function _bZ_(param){return Lwt[36];} function _b0_(is_computing){ if(is_computing && caml_call1(React[2][3], tab_is_active)){ - var _cb_ = caml_call1(Js_of_ocaml_lwt_Lwt_js[1], 3.); + var _cb_ = caml_call1(Js_of_ocaml_lwt_Lwt_js[1], 1.); return caml_call2(Lwt[33][1], _cb_, inspect_stories); } return Lwt[36]; @@ -434835,7 +434855,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] _M_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], [0, "row", 0]), _N_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _M_), 0]], panel_heading = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _N_, _L_), - _S_ = [0, "gui/ui/panel_tabs/tab_editor/editor.ml", 226, 20], + _S_ = [0, "gui/ui/panel_tabs/tab_editor/editor.ml", 227, 20], cst_code_mirror = cst_code_mirror$0, _O_ = [0, "panel-body", [0, cst_flex_content, 0]], _P_ = [0, "no-panel-body", [0, cst_flex_content, 0]], @@ -434982,8 +435002,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] a: { if - (1 >= t46.length && ! caml_call1(Kappa_webapp_state_State_error[1], 0)){var delay = 5000.; break a;} - var delay = 1000.; + (1 >= t46.length && ! caml_call1(Kappa_webapp_state_State_error[1], 0)){var delay = 1000.; break a;} + var delay = 900.; } var _af_ = @@ -435422,13 +435442,13 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] global_data.Kappa_webapp_lib__Js_graphlogger, Kappa_webapp_state_State_file = global_data.Kappa_webapp_state__State_file, cst_File_gui_ui_panel_tabs_tab$4 = - 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 806, characters 55-62', + 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 802, characters 55-62', cst_influence_map_prev_node = "influence_map_prev_node", cst_File_gui_ui_panel_tabs_tab$3 = - 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 793, characters 55-62', + 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 789, characters 55-62', cst_influence_map_next_node = "influence_map_next_node", cst_File_gui_ui_panel_tabs_tab$2 = - 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 780, characters 55-62', + 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 776, characters 55-62', cst_influence_map_recenter = "influence_map_recenter", _aS_ = [0, [0, 0, 0, 1]], _aT_ = [1, 0], @@ -435437,11 +435457,11 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] cst_shown_bs_tab = "shown.bs.tab", cst_navinfluences$0 = cst_navinfluences$1, cst_File_gui_ui_panel_tabs_tab$1 = - 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 695, characters 48-55', + 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 691, characters 48-55', cst_influence_map_node_at = "influence_map_node_at", _aK_ = [0, 2], cst_File_gui_ui_panel_tabs_tab$0 = - 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 648, characters 47-54', + 'File "gui/ui/panel_tabs/tab_editor/subtab_influences.ml", line 644, characters 47-54', cst_influence_map = "influence_map", _aL_ = [0, 1], _aF_ = [0, cst_flex_content, 0], @@ -435473,8 +435493,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] _aA_ = [0, cst_form_group, 0], _aB_ = [0, cst_form_horizontal, 0], _aD_ = [0, "panel-scroll", 0], - cst_TODOTODOTODOTODOTODOTODOTO = - "TODOTODOTODOTODOTODOTODOTODOTODOTODOTODOTODOTODOTODO", + cst_influences_table = "influences-table", _aE_ = [0, cst_flex_content, 0], cst_Navigate_through_the_nodes = "Navigate through the nodes using the controls above.", @@ -436118,8 +436137,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] _cI_ = [0, [0, - caml_call1 - (Js_of_ocaml_tyxml_Tyxml_js[4][7], cst_TODOTODOTODOTODOTODOTODOTO), + caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], cst_influences_table), _cH_]], _cJ_ = [0, @@ -436609,7 +436627,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 5912 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" +//# 5910 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" (function (globalThis){ "use strict"; @@ -436783,7 +436801,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 6087 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" +//# 6085 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" (function (globalThis){ "use strict"; @@ -437222,7 +437240,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 6527 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" +//# 6525 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" (function (globalThis){ "use strict"; @@ -437271,6 +437289,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] global_data = runtime.caml_get_global_data(), cst$0 = " (", cst = cst$1, + din_table_id = "din-table-id", Js_of_ocaml_tyxml_Tyxml_js = global_data.Js_of_ocaml_tyxml__Tyxml_js, Js_of_ocaml_Js = global_data.Js_of_ocaml__Js, Js_of_ocaml_Dom = global_data.Js_of_ocaml__Dom, @@ -437312,9 +437331,9 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] cst_navDIN = cst_navDIN$1, cst_hide_bs_tab = "hide.bs.tab", cst_navDIN$0 = cst_navDIN$1, - _C_ = [0, "flex_content", [0, "table-responsive", 0]], + _D_ = [0, "flex_content", [0, "table-responsive", 0]], cst_File_gui_ui_panel_tabs_tab$1 = - 'File "gui/ui/panel_tabs/tab_din.ml", line 132, characters 42-49', + 'File "gui/ui/panel_tabs/tab_din.ml", line 138, characters 42-49', _m_ = [0, "success", 0], _n_ = [0, "info", 0], cst_hits = " hits)", @@ -437325,13 +437344,13 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] cst_File_gui_ui_panel_tabs_tab = 'File "gui/ui/panel_tabs/tab_din.ml", line 30, characters 67-74', _f_ = [0, "form-control", 0], - _q_ = [0, "table", [0, "table-condensed", [0, "table-bordered", 0]]], + _r_ = [0, "table", [0, "table-condensed", [0, "table-bordered", 0]]], cst_text_html = "text/html", - _u_ = [0, [18, [1, [0, 0, cst$1]], [15, [17, 0, 0]]], cst_a], + _v_ = [0, [18, [1, [0, 0, cst$1]], [15, [17, 0, 0]]], cst_a], cst_html = cst_html$1, cst_html$0 = cst_html$1, cst_text_vnd_graphviz = "text/vnd.graphviz", - _y_ = [0, [18, [1, [0, 0, cst$1]], [15, [17, 0, 0]]], cst_a], + _z_ = [0, [18, [1, [0, 0, cst$1]], [15, [17, 0, 0]]], cst_a], cst_dot = cst_dot$1, cst_dot$0 = cst_dot$1, cst_application_json = "application/json", @@ -437341,46 +437360,46 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] _b_ = caml_call1(React[2][15], _a_); function _c_(param){ var - _aG_ = 0, - _aH_ = + _aH_ = 0, + _aI_ = [0, function(manager, param){ return caml_call1 (caml_get_public_method(manager, -376819733, 125), manager); }], - _aI_ = + _aJ_ = [0, function(param){ - var _aS_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _aS_); + var _aT_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _aT_); }], - _aJ_ = + _aK_ = [0, function(param){ - var _aR_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _aR_); + var _aS_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _aS_); }], - _aK_ = + _aL_ = caml_call5 (Kappa_webapp_state_State_simul[9], cst_File_gui_ui_panel_tabs_tab, + _aK_, _aJ_, _aI_, - _aH_, - _aG_); - function _aL_(param){return _d_;} - function _aM_(din_ids){ - function _aO_(id){ + _aH_); + function _aM_(param){return _d_;} + function _aN_(din_ids){ + function _aP_(id){ var - _aP_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], id), - _aQ_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][181], id), 0]]; - return caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][314], _aQ_, _aP_); + _aQ_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], id), + _aR_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][181], id), 0]]; + return caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][314], _aR_, _aQ_); } - var out = caml_call2(Stdlib_List[21], _aO_, din_ids); + var out = caml_call2(Stdlib_List[21], _aP_, din_ids); return [1, out]; } - var _aN_ = caml_call2(Kappa_data_structures_Result_u[9], _aM_, _aL_); - return caml_call2(Lwt[28], _aN_, _aK_); + var _aO_ = caml_call2(Kappa_data_structures_Result_u[9], _aN_, _aM_); + return caml_call2(Lwt[28], _aO_, _aL_); } var _e_ = caml_call2(Lwt_react[1][43], _c_, _b_), @@ -437392,69 +437411,69 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] if(! param) return caml_call1(React[2][1], 0); var t0 = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[9][15], din_select); caml_call2(set_din_id, 0, caml_string_of_jsstring(t0.value)); - function _ar_(din_id){ - function _as_(param){ + function _as_(din_id){ + function _at_(param){ var - _au_ = 0, - _av_ = + _av_ = 0, + _aw_ = [0, function(manager, param){ var - _aE_ = + _aF_ = caml_call2 (caml_get_public_method(manager, 782725907, 127), manager, din_id), - _aF_ = + _aG_ = caml_call1(Kappa_data_structures_Result_u[11], Stdlib_Option[2]); - return caml_call2(Lwt[28], _aF_, _aE_); + return caml_call2(Lwt[28], _aG_, _aF_); }], - _aw_ = + _ax_ = [0, function(param){ - var _aD_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _aD_); + var _aE_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _aE_); }], - _ax_ = + _ay_ = [0, function(param){ - var _aC_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _aC_); + var _aD_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _aD_); }], - _ay_ = + _az_ = caml_call5 (Kappa_webapp_state_State_simul[9], cst_File_gui_ui_panel_tabs_tab$0, + _ay_, _ax_, _aw_, - _av_, - _au_); - function _az_(param){return 0;} - function _aA_(x){return x;} - var _aB_ = caml_call2(Kappa_data_structures_Result_u[9], _aA_, _az_); - return caml_call2(Lwt[28], _aB_, _ay_); + _av_); + function _aA_(param){return 0;} + function _aB_(x){return x;} + var _aC_ = caml_call2(Kappa_data_structures_Result_u[9], _aB_, _aA_); + return caml_call2(Lwt[28], _aC_, _az_); } - var _at_ = caml_call1(Lwt_react[1][36], _as_); - return caml_call3(React[2][9], 0, 0, _at_); + var _au_ = caml_call1(Lwt_react[1][36], _at_); + return caml_call3(React[2][9], 0, 0, _au_); } - return caml_call3(React[2][24], 0, din_id, _ar_); + return caml_call3(React[2][24], 0, din_id, _as_); } var _i_ = caml_call2(ReactiveData[1][12], 0, din_list), din_data = caml_call3(React[2][24], 0, _i_, _h_); function _j_(param){ if(! param) return 0; - var din = param[1], _aj_ = 0, _ak_ = 0, _al_ = din[1]; - function _am_(r, acc){ - var _aq_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], r), 0]; - return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][303], 0, _aq_), acc]; + var din = param[1], _ak_ = 0, _al_ = 0, _am_ = din[1]; + function _an_(r, acc){ + var _ar_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], r), 0]; + return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][303], 0, _ar_), acc]; } var - _an_ = caml_call3(Stdlib_Array[19], _am_, _al_, _ak_), - _ao_ = + _ao_ = caml_call3(Stdlib_Array[19], _an_, _am_, _al_), + _ap_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], cst_affects), 0], - _ap_ = [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][303], 0, _ao_), _an_]; - return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][304], 0, _ap_), _aj_]; + _aq_ = [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][303], 0, _ap_), _ao_]; + return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][304], 0, _aq_), _ak_]; } var _k_ = caml_call3(React[2][11], 0, _j_, din_data), @@ -437464,36 +437483,36 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] var din = param[1], all = 2 === din[2][1] ? 1 : 0, - _S_ = 0, - _T_ = din[2][4]; - function _U_(i, data, acc){ + _T_ = 0, + _U_ = din[2][4]; + function _V_(i, data, acc){ if(! all && 0 >= caml_check_bound(din[2][3], i)[1 + i]) return acc; - var _V_ = 0; - function _W_(v, acc){ - var - _ae_ = caml_call1(Stdlib[35], v), - _af_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _ae_), 0], - _ag_ = 0, - _ah_ = 0. < v ? _m_ : v < 0. ? _n_ : 0, - _ai_ = - [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _ah_), _ag_]]; + var _W_ = 0; + function _X_(v, acc){ + var + _af_ = caml_call1(Stdlib[35], v), + _ag_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _af_), 0], + _ah_ = 0, + _ai_ = 0. < v ? _m_ : v < 0. ? _n_ : 0, + _aj_ = + [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _ai_), _ah_]]; return [0, - caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][302], _ai_, _af_), + caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][302], _aj_, _ag_), acc]; } var - _X_ = caml_call3(Stdlib_Array[19], _W_, data, _V_), - _Y_ = caml_check_bound(din[2][3], i)[1 + i], - _Z_ = caml_call1(Stdlib[33], _Y_), - ___ = caml_call2(Stdlib[28], _Z_, cst_hits), - _$_ = caml_call2(Stdlib[28], cst$0, ___), - _aa_ = caml_check_bound(din[1], i)[1 + i], - _ab_ = caml_call2(Stdlib[28], _aa_, _$_), - _ac_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _ab_), 0], - _ad_ = [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][303], 0, _ac_), _X_]; - return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][304], 0, _ad_), acc]; + _Y_ = caml_call3(Stdlib_Array[19], _X_, data, _W_), + _Z_ = caml_check_bound(din[2][3], i)[1 + i], + ___ = caml_call1(Stdlib[33], _Z_), + _$_ = caml_call2(Stdlib[28], ___, cst_hits), + _aa_ = caml_call2(Stdlib[28], cst$0, _$_), + _ab_ = caml_check_bound(din[1], i)[1 + i], + _ac_ = caml_call2(Stdlib[28], _ab_, _aa_), + _ad_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _ac_), 0], + _ae_ = [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][303], 0, _ad_), _Y_]; + return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][304], 0, _ae_), acc]; } - var body = caml_call3(Kappa_data_structures_Tools[8], _U_, _T_, _S_); + var body = caml_call3(Kappa_data_structures_Tools[8], _V_, _U_, _T_); return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][300], 0, body), 0]; } var @@ -437501,7 +437520,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] din_table = caml_call2(ReactiveData[1][4], 0, _o_), _p_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[8][5][299], 0, din_header), thead = caml_call1(React[2][1], _p_), - _r_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _q_), 0]], + _q_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], din_table_id), 0], + _s_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _r_), _q_]], din = caml_call6 (Js_of_ocaml_tyxml_Tyxml_js[8][5][296], @@ -437509,55 +437529,55 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] 0, [0, thead], 0, - _r_, + _s_, din_table); function export_current_din(to_string, mime, filename){ var t1 = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[9][15], din_select), din_id = caml_string_of_jsstring(t1.value); - function _N_(manager){ - function _O_(din){ + function _O_(manager){ + function _P_(din){ var data = runtime.caml_jsstring_of_string(caml_call1(to_string, din)); caml_call3(Kappa_webapp_lib_Common[14], data, mime, filename); - var _R_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _R_); + var _S_ = caml_call2(Kappa_data_structures_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _S_); } var - _P_ = caml_call1(Kappa_json_api_Api_common[9], _O_), - _Q_ = + _Q_ = caml_call1(Kappa_json_api_Api_common[9], _P_), + _R_ = caml_call2 (caml_get_public_method(manager, 782725907, 129), manager, din_id); - return caml_call2(Lwt[33][1], _Q_, _P_); + return caml_call2(Lwt[33][1], _R_, _Q_); } return caml_call3 (Kappa_webapp_state_State_simul[10], cst_File_gui_ui_panel_tabs_tab$1, 0, - _N_); + _O_); } var - _s_ = caml_call1(React[2][1], 1), - _t_ = 0, - _v_ = caml_call2(Stdlib_Format[133], _u_, Kappa_runtime_Data[8]), - _w_ = + _t_ = caml_call1(React[2][1], 1), + _u_ = 0, + _w_ = caml_call2(Stdlib_Format[133], _v_, Kappa_runtime_Data[8]), + _x_ = [0, [0, cst_html$0, cst_html, - function(_M_){return export_current_din(_v_, cst_text_html, _M_);}], - _t_], - _x_ = caml_call1(Kappa_runtime_Data[7], 0), - _z_ = caml_call2(Stdlib_Format[133], _y_, _x_), - _A_ = + function(_N_){return export_current_din(_w_, cst_text_html, _N_);}], + _u_], + _y_ = caml_call1(Kappa_runtime_Data[7], 0), + _A_ = caml_call2(Stdlib_Format[133], _z_, _y_), + _B_ = [0, [0, cst_dot$0, cst_dot, - function(_L_){ - return export_current_din(_z_, cst_text_vnd_graphviz, _L_); + function(_M_){ + return export_current_din(_A_, cst_text_vnd_graphviz, _M_); }], - _w_], - _B_ = caml_call1(Kappa_runtime_Data[10], 0), + _x_], + _C_ = caml_call1(Kappa_runtime_Data[10], 0), export_configuration = [0, cst_din_export, @@ -437565,55 +437585,55 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] [0, cst_json$0, cst_json, - function(_K_){ - return export_current_din(_B_, cst_application_json, _K_); + function(_L_){ + return export_current_din(_C_, cst_application_json, _L_); }], - _A_], - _s_]; + _B_], + _t_]; function content(param){ var - _H_ = + _I_ = [0, din, [0, caml_call1(Kappa_webapp_lib_Widget_export[1], export_configuration), 0]], - _I_ = + _J_ = [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][305], 0, [0, din_select, 0]), - _H_], - _J_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _C_), 0]]; - return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _J_, _I_), 0]; + _I_], + _K_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _D_), 0]]; + return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _K_, _J_), 0]; } function navli(param){ - function _G_(state){ + function _H_(state){ if(! state) return 0; var state$0 = state[1]; return state$0[2][2]; } - return caml_call1(Kappa_webapp_ui_Ui_track_sim_s[2], _G_); + return caml_call1(Kappa_webapp_ui_Ui_track_sim_s[2], _H_); } function onload(param){ - function _D_(param){ + function _E_(param){ var t2 = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[9][15], din_select); caml_call2(set_din_id, 0, caml_string_of_jsstring(t2.value)); return Js_of_ocaml_Js[8]; } var - t3 = caml_call1(Js_of_ocaml_Dom[10], _D_), + t3 = caml_call1(Js_of_ocaml_Dom[10], _E_), t4 = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[9][15], din_select); t4.onchange = t3; caml_call1(Kappa_webapp_lib_Widget_export[6], export_configuration); - function _E_(param){return caml_call2(set_tab_is_active, 0, 1);} - caml_call3(Kappa_webapp_lib_Common[10], cst_navDIN, cst_shown_bs_tab, _E_); - function _F_(param){return caml_call2(set_tab_is_active, 0, 0);} + function _F_(param){return caml_call2(set_tab_is_active, 0, 1);} + caml_call3(Kappa_webapp_lib_Common[10], cst_navDIN, cst_shown_bs_tab, _F_); + function _G_(param){return caml_call2(set_tab_is_active, 0, 0);} return caml_call3 - (Kappa_webapp_lib_Common[10], cst_navDIN$0, cst_hide_bs_tab, _F_); + (Kappa_webapp_lib_Common[10], cst_navDIN$0, cst_hide_bs_tab, _G_); } function onresize(param){return 0;} var Kappa_webapp_ui_Tab_din = [0, navli, content, onload, onresize]; runtime.caml_register_global - (55, Kappa_webapp_ui_Tab_din, "Kappa_webapp_ui__Tab_din"); + (56, Kappa_webapp_ui_Tab_din, "Kappa_webapp_ui__Tab_din"); return; } (globalThis)); @@ -438452,37 +438472,42 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] Kappa_webapp_state_State_simul = global_data.Kappa_webapp_state__State_simulation, cst_File_gui_ui_panel_projects$5 = - 'File "gui/ui/panel_projects_controller.ml", line 36, characters 23-30', + 'File "gui/ui/panel_projects_controller.ml", line 39, characters 23-30', cst_File_gui_ui_panel_projects$6 = - 'File "gui/ui/panel_projects_controller.ml", line 35, characters 15-22', + 'File "gui/ui/panel_projects_controller.ml", line 38, characters 15-22', cst_File_gui_ui_panel_projects$3 = - 'File "gui/ui/panel_projects_controller.ml", line 30, characters 23-30', + 'File "gui/ui/panel_projects_controller.ml", line 33, characters 23-30', cst_File_gui_ui_panel_projects$4 = - 'File "gui/ui/panel_projects_controller.ml", line 29, characters 15-22', + 'File "gui/ui/panel_projects_controller.ml", line 32, characters 15-22', cst_File_gui_ui_panel_projects$1 = - 'File "gui/ui/panel_projects_controller.ml", line 25, characters 23-30', + 'File "gui/ui/panel_projects_controller.ml", line 28, characters 23-30', cst_File_gui_ui_panel_projects$2 = - 'File "gui/ui/panel_projects_controller.ml", line 24, characters 15-22', + 'File "gui/ui/panel_projects_controller.ml", line 27, characters 15-22', cst_File_gui_ui_panel_projects = - 'File "gui/ui/panel_projects_controller.ml", line 19, characters 23-30', + 'File "gui/ui/panel_projects_controller.ml", line 22, characters 23-30', cst_File_gui_ui_panel_projects$0 = - 'File "gui/ui/panel_projects_controller.ml", line 18, characters 15-22', + 'File "gui/ui/panel_projects_controller.ml", line 21, characters 15-22', _a_ = [0, 1]; - function refresh(r){ + function refresh(result_before){ var - r$0 = caml_call2(Kappa_webapp_state_State_file[16], _a_, 0), - r$1 = caml_call1(Kappa_webapp_state_State_simul[7], 0); - function _x_(r$0){ - function _y_(r$1){ + lwt_result_state_file_sync = + caml_call2(Kappa_webapp_state_State_file[16], _a_, 0), + lwt_result_simulation_refresh = + caml_call1(Kappa_webapp_state_State_simul[7], 0); + function _x_(result_state_file_sync){ + function _y_(result_simulation_refresh){ var _z_ = caml_call1 - (Kappa_json_api_Api_common[12], [0, r, [0, r$0, [0, r$1, 0]]]); + (Kappa_json_api_Api_common[12], + [0, + result_before, + [0, result_state_file_sync, [0, result_simulation_refresh, 0]]]); return caml_call1(Lwt[4], _z_); } - return caml_call2(Lwt[33][1], r$1, _y_); + return caml_call2(Lwt[33][1], lwt_result_simulation_refresh, _y_); } - return caml_call2(Lwt[33][1], r$0, _x_); + return caml_call2(Lwt[33][1], lwt_result_state_file_sync, _x_); } function create_project(project_id){ function _s_(param){ @@ -438575,7 +438600,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 7884 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" +//# 7889 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" (function (globalThis){ "use strict"; @@ -439337,7 +439362,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 8647 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" +//# 8652 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" (function (globalThis){ "use strict"; @@ -439372,6 +439397,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] cst$0 = " ", cst = cst$3, project_id_modal_id = "menu-editor-project-id-modal", + projects_tabs_id = "projects_tabs", Stdlib = global_data.Stdlib, Kappa_webapp_lib_Common = global_data.Kappa_webapp_lib__Common, Js_of_ocaml_Js = global_data.Js_of_ocaml__Js, @@ -439425,8 +439451,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] settings_client_id = runtime.caml_string_of_jsstring(project_id_input_dom.value); caml_call1(Kappa_webapp_ui_Panel_projects[1], settings_client_id); - var _T_ = caml_call2(Stdlib[28], cst, project_id_modal_id); - caml_call2(Kappa_webapp_lib_Common[19], _T_, cst_hide); + var _U_ = caml_call2(Stdlib[28], cst, project_id_modal_id); + caml_call2(Kappa_webapp_lib_Common[19], _U_, cst_hide); return Js_of_ocaml_Js[8]; } var @@ -439452,8 +439478,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] _s_], _B_ = Kappa_webapp_state_State_proje[3]; function _C_(model){ - var _H_ = model[2]; - function _I_(param){ + var _I_ = model[2]; + function _J_(param){ var model_project_is_computing = param[2], model_project_id = param[1], @@ -439461,61 +439487,66 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] if(match) var current_project_id = match[1], - _J_ = runtime.caml_string_equal(current_project_id, model_project_id); + _K_ = runtime.caml_string_equal(current_project_id, model_project_id); else - var _J_ = 0; + var _K_ = 0; var - li_class = _J_ ? _i_ : 0, - _K_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][320], cst_times), 0], - _L_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _j_), 0]], - span_close = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _L_, _K_); - function _M_(event){ + li_class = _K_ ? _i_ : 0, + _L_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][320], cst_times), 0], + _M_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _j_), 0]], + span_close = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _M_, _L_); + function _N_(event){ caml_call1(Kappa_webapp_ui_Panel_projects[3], model_project_id); caml_call1(Js_of_ocaml_Dom_html[116], event); return Js_of_ocaml_Js[8]; } var - t0 = caml_call1(Js_of_ocaml_Dom[10], _M_), + t0 = caml_call1(Js_of_ocaml_Dom[10], _N_), t1 = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[9][18], span_close); t1.onclick = t0; - function _N_(b){return b ? _k_ : _l_;} + function _O_(b){return b ? _k_ : _l_;} var - classes = caml_call3(React[2][11], 0, _N_, model_project_is_computing), - _O_ = + classes = caml_call3(React[2][11], 0, _O_, model_project_is_computing), + _P_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][5][5], classes), 0]], - computing = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][275], _O_, 0), - _P_ = caml_call2(Stdlib[28], cst$0, model_project_id), - _Q_ = + computing = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][275], _P_, 0), + _Q_ = caml_call2(Stdlib[28], cst$0, model_project_id), + _R_ = [0, computing, [0, - caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][322], _P_), + caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][322], _Q_), [0, span_close, 0]]], - a_project = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][279], 0, _Q_); - function _R_(param){ + a_project = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][279], 0, _R_); + function _S_(param){ caml_call1(Kappa_webapp_ui_Panel_projects[2], model_project_id); return Js_of_ocaml_Js[7]; } var - t2 = caml_call1(Js_of_ocaml_Dom[10], _R_), + t2 = caml_call1(Js_of_ocaml_Dom[10], _S_), t3 = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[9][35], a_project); t3.onclick = t2; var - _S_ = + _T_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], li_class), 0]]; return caml_call2 - (Js_of_ocaml_tyxml_Tyxml_js[4][253], _S_, [0, a_project, 0]); + (Js_of_ocaml_tyxml_Tyxml_js[4][253], _T_, [0, a_project, 0]); } - var acc = caml_call2(Stdlib_List[21], _I_, _H_); + var acc = caml_call2(Stdlib_List[21], _J_, _I_); return caml_call2(Stdlib_List[12], acc, [0, li_new, [0, li_prefs, 0]]); } var _D_ = caml_call3(React[2][11], 0, _C_, _B_), _E_ = caml_call2(ReactiveData[1][4], 0, _D_), - _F_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _m_), 0]], + _F_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _m_), 0], _G_ = - [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[8][5][250], _F_, _E_), _A_]; - return caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], 0, _G_); + [0, + [0, + caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], projects_tabs_id), + _F_]], + _H_ = + [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[8][5][250], _G_, _E_), _A_]; + return caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], 0, _H_); } function onload(param){ caml_call1(Kappa_webapp_ui_Panel_preferen[2], 0); @@ -439541,12 +439572,12 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] function onresize(param){return 0;} var Kappa_webapp_ui_Panel_projects$0 = [0, content, onload, onresize]; runtime.caml_register_global - (38, Kappa_webapp_ui_Panel_projects$0, "Kappa_webapp_ui__Panel_projects"); + (39, Kappa_webapp_ui_Panel_projects$0, "Kappa_webapp_ui__Panel_projects"); return; } (globalThis)); -//# 8857 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" +//# 8868 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" (function (globalThis){ "use strict"; @@ -439857,7 +439888,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] } (globalThis)); -//# 9169 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" +//# 9180 "ui/.kappa_webapp_ui.objs/jsoo/default/kappa_webapp_ui.cma.js" (function (globalThis){ "use strict"; @@ -439983,20 +440014,21 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] visible_class = [0, "visible", 0], id = "panel_preferences_pause_condition", id$0 = "panel_preferences_plot_period", - id$1 = "configuration_error_div", + id_error = "configuration_error_div", + id_alert = "configuration_alert_div", message_nav_inc_id = "panel_preferences_message_nav_inc_id", message_nav_dec_id = "panel_preferences_message_nav_dec_id", message_file_label_id = "panel_preferences_message_file_label", cst$2 = " \xc2\xab ", cst$3 = " \xc2\xbb ", - id$2 = "panel_preferences_start_button", - id$3 = "panel_preferences_clear_button", - id$4 = "panel_preferences_pause_button", - id$5 = "panel_preferences_get_trace_button", - id$6 = "panel_preferences_outputs_button", - id$7 = "panel_preferences_continue_button", - id$8 = "setting_status_indicator", - id$9 = "settings_runetime_layout", + id$1 = "panel_preferences_start_button", + id$2 = "panel_preferences_clear_button", + id$3 = "panel_preferences_pause_button", + id$4 = "panel_preferences_get_trace_button", + id$5 = "panel_preferences_outputs_button", + id$6 = "panel_preferences_continue_button", + id$7 = "setting_status_indicator", + id$8 = "settings_runetime_layout", React = global_data.React, Kappa_webapp_state_State_proje = global_data.Kappa_webapp_state__State_project, @@ -440072,7 +440104,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] _bR_ = [0, 0, [0, 3, 0]], _bS_ = [0, [0, cst_panel_body, [0, cst_panel_controls, 0]]], cst_File_gui_ui_panel_preferen$1 = - 'File "gui/ui/panel_preferences.ml", line 766, characters 69-76', + 'File "gui/ui/panel_preferences.ml", line 770, characters 69-76', _bu_ = [0, "visible-md-block", [0, "visible-lg-block", 0]], _bv_ = [0, cst_col_xs_3, 0], _bw_ = [0, cst_col_xs_9, 0], @@ -440140,9 +440172,9 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] _a8_ = [0, cst_btn, [0, cst_btn_default, 0]], _a9_ = [0, "disabled", 0], cst_File_gui_ui_panel_preferen$0 = - 'File "gui/ui/panel_preferences.ml", line 333, characters 32-39', + 'File "gui/ui/panel_preferences.ml", line 337, characters 32-39', cst_File_gui_ui_panel_preferen = - 'File "gui/ui/panel_preferences.ml", line 306, characters 32-39', + 'File "gui/ui/panel_preferences.ml", line 310, characters 32-39', _aD_ = [0, cst_alert_sm, [0, cst_alert, [0, "alert-danger", 0]]], _aE_ = [0, cst_alert_sm, [0, cst_alert, 0]], _av_ = [0, [12, 32, [2, 0, [12, 32, 0]]], " %s "], @@ -440403,7 +440435,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][3][221], error_message_text), 0], _ay_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _ax_), 0], - _az_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$1), _ay_]], + _az_ = + [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id_error), _ay_]], error_message = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][275], _az_, _aw_), _aA_ = caml_call2 @@ -440419,7 +440452,8 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] (Kappa_webapp_lib_Hooked[2][11], Kappa_webapp_state_State_error[2]), _aG_ = caml_call3(React[2][24], 0, _aF_, _aC_), _aH_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][3][5], _aG_), _aB_], - _aI_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$1), _aH_]], + _aI_ = + [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id_alert), _aH_]], alert_messages = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _aI_, _aA_); function index_click_handler(dom, delta){ @@ -440467,7 +440501,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][347][5], cst_type, cst_button), _aR_], - _aT_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$2), _aS_]], + _aT_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$1), _aS_]], button$0 = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _aT_, _aJ_), _aU_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][322], cst_clear), 0], _aW_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _aV_), 0], @@ -440476,7 +440510,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call2 (Js_of_ocaml_tyxml_Tyxml_js[4][347][5], cst_type$0, cst_button$0), _aW_], - _aY_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$3), _aX_]], + _aY_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$2), _aX_]], button$1 = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _aY_, _aU_), _aZ_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][322], cst_pause), 0], _a1_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _a0_), 0], @@ -440485,7 +440519,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call2 (Js_of_ocaml_tyxml_Tyxml_js[4][347][5], cst_type$1, cst_button$1), _a1_], - _a3_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$4), _a2_]], + _a3_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$3), _a2_]], button$2 = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _a3_, _aZ_), _a4_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][322], cst_get_trace), 0], @@ -440503,7 +440537,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call2 (Js_of_ocaml_tyxml_Tyxml_js[4][347][5], cst_type$2, cst_button$2), _a$_], - _bb_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$5), _ba_]], + _bb_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$4), _ba_]], button$3 = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _bb_, _a4_), _bc_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][322], cst_All_outputs), 0], @@ -440513,7 +440547,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call2 (Js_of_ocaml_tyxml_Tyxml_js[4][347][5], cst_type$3, cst_button$3), _be_], - _bg_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$6), _bf_]], + _bg_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$5), _bf_]], button$4 = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _bg_, _bc_), _bh_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][322], cst_continue), 0], @@ -440523,7 +440557,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] caml_call2 (Js_of_ocaml_tyxml_Tyxml_js[4][347][5], cst_type$4, cst_button$4), _bj_], - _bl_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$7), _bk_]], + _bl_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$6), _bk_]], button$5 = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _bl_, _bh_); function progress_bar(percent_signal, value_signal){ var _jb_ = 0; @@ -440982,7 +441016,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] _iw_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _iv_), _ix_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _iw_), _iy_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _ix_, _iu_), - _iz_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$9), 0], + _iz_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$8), 0], _iA_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _bH_), _iB_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _iA_), _iz_]]; return [0, @@ -441118,7 +441152,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] debug = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], 0, _cG_), _cH_ = caml_call6(Kappa_webapp_lib_Ui_common[8], [0, debug], 0, 0, 0, 0, 0), - _cI_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$8), 0]], + _cI_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], id$7), 0]], _cJ_ = [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _cI_, _cH_), 0], _cW_ = caml_call2(Stdlib[37], _cJ_, _cV_), _cX_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _bX_), 0]], @@ -441337,7 +441371,7 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] function onresize(param){return 0;} var Kappa_webapp_ui_Panel_preferen$0 = [0, content$0, onload, onresize]; runtime.caml_register_global - (240, + (241, Kappa_webapp_ui_Panel_preferen$0, "Kappa_webapp_ui__Panel_preferences"); return; @@ -441457,4 +441491,4 @@ wI=[2,pa],wJ=[0,0,[2,jF],a3,0,1],wK=[2,v2],wL=[0,0,[2,mp],t$,0,1],wM=[0,0,[2,hM] (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJKc1NpbS5iYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJuYW1lcyI6WyJjYW1sX2ludDY0X2lzX3plcm8iLCJ4IiwiY2FtbF9zdHJfcmVwZWF0IiwibiIsInMiLCJyIiwibCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiTWF0aCIsImNhbWxfcmFpc2VfY29uc3RhbnQiLCJ0YWciLCJjYW1sX2dsb2JhbF9kYXRhIiwiY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSIsIk1sSW50NjQiLCJsbyIsIm1pIiwiaGkiLCJ0aGlzIiwieGhpIiwiaCIsInNpZ24iLCJvZmZzZXQiLCJtb2R1bHVzIiwiZGl2aXNvciIsInF1b3RpZW50IiwieSIsInEiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50NjRfaXNfbmVnYXRpdmUiLCJjYW1sX2ludDY0X25lZyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInVuZGVmaW5lZCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiaSIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImZtdCIsImxlbiIsImYiLCJjIiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwidCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJiIiwiYzEiLCJjMiIsInYiLCJqIiwiU3RyaW5nIiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsInVuaXhfZXJyb3IiLCJtYWtlX3VuaXhfZXJyX2FyZ3MiLCJjb2RlIiwic3lzY2FsbCIsImVycm5vIiwidmFyaWFudCIsIm51bGwiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImEiLCJjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIiwiTWxCeXRlcyIsImNvbnRlbnRzIiwibGVuZ3RoIiwiY29udGVudCIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9qc2J5dGVzIiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52Iiwic2hpZnRfcmlnaHRfbmF0IiwibmF0MSIsIm9mczEiLCJsZW4xIiwibmF0MiIsIm9mczIiLCJuYml0cyIsIndyYXAiLCJjYW1sX2dyX3N0YXRlIiwiY2FtbF9ncl9zdGF0ZV9nZXQiLCJjYW1sX2dyX3BvaW50X2NvbG9yIiwiaW0iLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9ydW50aW1lX3dhcm5pbmdzIiwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyIsImJvb2wiLCJjYW1sX2NsYXNzaWZ5X2Zsb2F0IiwiaXNGaW5pdGUiLCJpc05hTiIsImNhbWxfbWxfY2hhbm5lbHMiLCJjYW1sX3JlZmlsbCIsImNoYW4iLCJzdHIiLCJzdHJfYSIsIm5yZWFkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2hhbmlkIiwicHJldl9tYXgiLCJjYW1sX2djX21pbm9yIiwidW5pdCIsImNhbWxfbWxfY29uZGl0aW9uX25ldyIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJiYSIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX2ludDY0X29mX2J5dGVzIiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiZSIsImNhbWxfY3JlYXRlX2ZpbGUiLCJqc29vX2NyZWF0ZV9maWxlIiwiY2FtbF9mc19pbml0IiwidG1wIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsInciLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwiZyIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImFyZ3VtZW50cyIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX29ial91cGRhdGVfdGFnIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nIiwiY2FtbF9nY19jb3VudGVycyIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX3VuaXhfY2xvc2VkaXIiLCJkaXJfaGFuZGxlIiwiY2FtbF91bml4X29wZW5kaXIiLCJjYW1sX3VuaXhfcmV3aW5kZGlyIiwibmV3X2Rpcl9oYW5kbGUiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsIkluZmluaXR5IiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJleHAiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsImNhbWxfaW50MzJfdW5tYXJzaGFsIiwiY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJudW0iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJOdW1iZXIiLCJjYW1sX2ludF9jb21wYXJlIiwiY2FtbF9zdHJpbmdfY29tcGFyZSIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfY29tcGFyZV92YWwiLCJzdGFjayIsInRhZ19hIiwidGFnX2IiLCJjYW1sX2dyZWF0ZXJ0aGFuIiwiZGl2X2hlbHBlciIsInoiLCJkaXZfZGlnaXRfbmF0IiwibmF0cSIsIm9mc3EiLCJuYXRyIiwib2ZzciIsInJlbSIsIm51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCIsInNoaWZ0X2xlZnRfbmF0IiwiTWxOYXQiLCJjcmVhdGVfbmF0IiwiYXJyIiwic2V0X3RvX3plcm9fbmF0IiwiaW5jcl9uYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsImxlbjIiLCJuYXRfb2ZfYXJyYXkiLCJtdWx0X2RpZ2l0X25hdCIsIm5hdDMiLCJvZnMzIiwieDEiLCJ4MiIsIngzIiwiZGVjcl9uYXQiLCJib3Jyb3ciLCJzdWJfbmF0IiwiY29tcGFyZV9uYXQiLCJkaXZfbmF0IiwicXVvIiwiY2FtbF9iYV9ibGl0Iiwic3JjIiwiZHN0IiwiaXNfZGlnaXRfaW50IiwiY2FtbF9pbnQ2NF9kaXYiLCJjYW1sX2pzX2h0bWxfZW50aXRpZXMiLCJlbnRpdHkiLCJ0ZW1wIiwiZG9jdW1lbnQiLCJjYW1sX3N0cmluZ191bnNhZmVfc2V0IiwiY2FtbF9pbnQ2NF9vZl9mbG9hdCIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYXJndiIsIm1haW4iLCJhcmd2IiwiYXJnczIiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfanNfZXZhbF9zdHJpbmciLCJldmFsIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9vb19sYXN0X2lkIiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX2dyX2ZpbGxfcmVjdCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsInBvczEiLCJiYTIiLCJwb3MyIiwic2xpY2UiLCJjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUiLCJqc25hbWUiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQiLCJjYW1sX2JhX3VpbnQ4X2dldDE2IiwiY2FtbF9jb21wYXJlIiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJoaCIsImlpIiwiY2FtbF9NRDVVcGRhdGUiLCJjdHgiLCJpbnB1dCIsImlucHV0X2xlbiIsImluX2J1ZiIsImlucHV0X3BvcyIsIm1pc3NpbmciLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImN1cnNvciIsImNhbGxiYWNrcyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iYV9nZXRfMSIsImNhbWxfYmlnc3RyaW5nX21lbWNtcCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfZXJmX2Zsb2F0IiwiYTEiLCJhMiIsImEzIiwiYTQiLCJhNSIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoIiwiY2FtbF9zdHJfaW5pdGlhbGl6ZSIsImNhbWxfb2JqX2Jsb2NrIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImJpZ3N0cmluZ190b19hcnJheV9idWZmZXIiLCJicyIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX2dyX3Bsb3QiLCJjb2xvciIsImNhbWxfYnl0ZXNfc2V0NjQiLCJpNjQiLCJjYW1sX3N0cmluZ19zZXQxNiIsImkxNiIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX2djX21ham9yIiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJzdGF0ZSIsImJhc2UiLCJiYWNrdHJrIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9sZXNzZXF1YWwiLCJjYW1sX2Fjb3NoX2Zsb2F0IiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJVaW50MzJBcnJheSIsImNhbWxfbWxfZmx1c2giLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dF82NCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjYW1sX2djX3NldCIsImNhbWxfanNfZ2V0IiwiY2FtbF91bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9tbF9zZXRfYnVmZmVyZWQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfbWxfYnl0ZXNfY29udGVudCIsImNhbWxfaGFzaF9taXhfYnl0ZXMiLCJjYW1sX2hhc2giLCJjb3VudCIsImxpbWl0Iiwic2VlZCIsIm9iaiIsInF1ZXVlIiwicmQiLCJ3ciIsIkJhc2VfaGFzaF9zdHJpbmciLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2VwaGVfZ2V0X2tleSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJEYXRlIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJjYW1sX3N5c19mZHMiLCJjYW1sX3N5c19jbG9zZSIsImNhbWxfbWxfY2xvc2VfY2hhbm5lbCIsIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViIiwiZXhwb25lbnQiLCJvbmUiLCJtdWwiLCJjYW1sX2F0b21pY19leGNoYW5nZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfanNfc2V0IiwiY2FtbF9hcnJheV9nZXQiLCJhcnJheSIsImluZGV4IiwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjIiwiY29udCIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwibXV0ZXgiLCJpZCIsImNhbWxfdW5peF9ta2RpciIsInBlcm0iLCJjYW1sX2ludDY0X3NoaWZ0X2xlZnQiLCJjYW1sX25vdGVxdWFsIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIiwiY2FtbF9pc19qcyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXQiLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQiLCJjYW1sX2JhX2RpbSIsImNhbWxfYmFfZGltXzEiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX2J5dGVzX3Vuc2FmZV9nZXQiLCJjYW1sX2J5dGVzX2dldDY0IiwiY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIiLCJldmVudF9uYW1lIiwiZXZlbnRfdGFnIiwiZXZlbnRfdHlwZSIsImNhbWxfdW5peF9oYXNfc3ltbGluayIsImNhbWxfZXBoZV9zZXRfa2V5IiwiT2JqZWN0IiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIiwiQmFzZV9hbV90ZXN0aW5nIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsInBhcnNlSW50IiwiY2FtbF9zeXNfZ2V0Y3dkIiwiY2FtbF9pbnQ2NF9hZGQiLCJjYW1sX2ludDY0X211bCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIiwiY2FtbF9wYXJzZV9kaWdpdCIsImNhbWxfaW50NjRfb2Zfc3RyaW5nIiwiYmFzZTY0IiwidGhyZXNob2xkIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnQ2NF9vciIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsImdldCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsInN0IiwieDAiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9vdXRwdXRfdmFsIiwiV3JpdGVyIiwidmFsdWUiLCJub19zaGFyaW5nIiwiY2xvc3VyZXMiLCJjb25zb2xlIiwiaW50ZXJuX29ial90YWJsZSIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwib3BzIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwib2xkX3BvcyIsInR5cGVfb2ZfdiIsImNhbWxfc3RyaW5nX29mX2FycmF5IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9yYWlzZV9ub3RfYV9kaXIiLCJjYW1sX3N5c19zeXN0ZW1fY29tbWFuZCIsImNtZCIsImNoaWxkX3Byb2Nlc3MiLCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbiIsImNhbWxfdW5peF9nZXR1aWQiLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsImNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmciLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiVUludDhBcnJheVJlYWRlciIsImNhbWxfbWFyc2hhbF9kYXRhX3NpemUiLCJyZWFkdmxxIiwib3ZlcmZsb3ciLCJuNyIsImhlYWRlcl9sZW4iLCJkYXRhX2xlbiIsIk1sU3RyaW5nUmVhZGVyIiwiY2FtbF9kZWNvbXByZXNzX2lucHV0IiwiY2FtbF9mbG9hdF9vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIiLCJtYWdpYyIsImNvbXByZXNzZWQiLCJ1bmNvbXByZXNzZWRfZGF0YV9sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlIiwiYmxvY2siLCJjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcCIsImNhbWxfYXRvbWljX2NhcyIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX2F0b21pY19sb2FkIiwiY2FtbF9NRDVGaW5hbCIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9iYV9zZXRfZ2VuZXJpYyIsImNhbWxfbWxfY29uZGl0aW9uX3dhaXQiLCJtdXRleHQiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImJpdHMiLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW4iLCJjYW1sX2ludDY0X2FuZCIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZnMiLCJmZDIiLCJNbEZha2VGZF9vdXQiLCJjYW1sX3N5c19vcGVuX2ludGVybmFsIiwiaWR4IiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsIkVycm9yIiwicmVfc2VhcmNoX2JhY2t3YXJkIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfbWxfb3V0cHV0X3RhIiwiY2FtbF9iYV9zdWIiLCJjaGFuZ2VkX2RpbSIsIm5ld19kaW1zIiwibmV3X2RhdGEiLCJjYW1sX2djX2Z1bGxfbWFqb3IiLCJjYW1sX21sX211dGV4X3RyeV9sb2NrIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF91bml4X2dtdGltZSIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfZ3JfY3VycmVudF94IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IiwidGEiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfZnVuY3Rpb25fYXJpdHkiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2RpbV8zIiwiY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbiIsImNhbWxfZm9ybWF0X2V4Y2VwdGlvbiIsImJ1Y2tldCIsInN0YXJ0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50IiwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4IiwiY2FtbF9jcmVhdGVfc3RyaW5nIiwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IiwiY2FtbF9tZDVfY2hhbiIsInRvcmVhZCIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwiLCJjYW1sX3VuaXhfZmluZG5leHQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9tbF9kb21haW5faWQiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSIsImNhbWxfdHJhbXBvbGluZV9yZXR1cm4iLCJjYW1sX21sX2lzX2J1ZmZlcmVkIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHoiLCJjYW1sX2FycmF5X2FwcGVuZCIsImwxIiwibDIiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfanNfZXhwciIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwibGVuZ3RoX25hdCIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQiLCJjYW1sX2lzX3ByaW50YWJsZSIsImNhbWxfYnl0ZXNfbGVzc2VxdWFsIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfZXF1YWwiLCJyZV9wYXJ0aWFsX21hdGNoIiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJhbGxfZmluYWxpemVycyIsImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUiLCJjYiIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsInByZXYiLCJjYW1sX21hcnNoYWxfY29uc3RhbnRzIiwiY2FtbF9vYmpfcmF3X2ZpZWxkIiwiY2FtbF9qc19lcXVhbHMiLCJjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ncl9hcmNfYXV4IiwiY3giLCJjeSIsInJ5IiwicngiLCJyb3QiLCJ4UG9zIiwieVBvcyIsInhQb3NfcHJldiIsInlQb3NfcHJldiIsInNwYWNlIiwiZGVsdGEiLCJjYW1sX2dyX2ZpbGxfYXJjIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9hbGxvY19kdW1teV9pbmZpeCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2djX21ham9yX3NsaWNlIiwid29yayIsImNhbWxfanNfcHVyZV9leHByIiwiY29tcGFyZV9kaWdpdHNfbmF0IiwiY2FtbF9tbF9pbnB1dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3NpZ2lvX2hhbmRsZXIiLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwiY2FtbF9yZWNvcmRfYmFja3RyYWNlIiwiY2FtbF91bml4X2NsZWFudXAiLCJjYW1sX3N5c19nZXRfY29uZmlnIiwiY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIiwiY2FtbF9vYmpfaXNfc2hhcmVkIiwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCIsImNhbWxfYXNpbmhfZmxvYXQiLCJjYW1sX3Bvc19vdXQiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJjYW1sX21vZCIsImNhbWxfYmFfaW5pdCIsImNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQiLCJyZV9zdHJpbmdfbWF0Y2giLCJCaWdTdHJpbmdSZWFkZXIiLCJjYW1sX2dyX2R1bXBfaW1hZ2UiLCJjYW1sX2JhX2dldF9nZW5lcmljIiwiY2FtbF91bml4X3N0YXJ0dXAiLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9mb3JtYXRfZmxvYXQiLCJ0b0ZpeGVkIiwiZHAiLCJwcmVjIiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsImNhbWxfc3RyaW5nX2xlc3N0aGFuIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4iLCJjYW1sX2RpdiIsImNhbWxfb2JqX2R1cCIsImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5IiwiY2FtbF9tZW1wcm9mX3N0YXJ0IiwicmF0ZSIsInN0YWNrX3NpemUiLCJ0cmFja2VyIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX21sX2RvbWFpbl9zZXRfbmFtZSIsIl9uYW1lIiwiY2FtbF9qc190b19ib29sIiwiY2FtbF9ncl9jcmVhdGVfaW1hZ2UiLCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5IiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX2J1aWxkX3N5bWJvbHMiLCJzeW1iIiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm5pZCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJjaGFubmVsIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfb2pzX25ld19hcnIiLCJGIiwiY29tcGxlbWVudF9uYXQiLCJjYW1sX2RvbWFpbl9kbHMiLCJjYW1sX2RvbWFpbl9kbHNfc2V0IiwiY2FtbF9vYmpfdGFnIiwiY2FtbF9sYXp5X3JlYWRfcmVzdWx0IiwiY2FtbF9qc19yZWdleHBzIiwiY2FtbF9qc19odG1sX2VzY2FwZSIsImNhbWxfYmFfZGltXzIiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3NpbmhfZmxvYXQiLCJjYW1sX2xkZXhwX2Zsb2F0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJsYW5kX2RpZ2l0X25hdCIsImNhbWxfaW50NjRfbW9kIiwiY2FtbF9vYmpfc2V0X3RhZyIsImNhbWxfaW50MzJfYnN3YXAiLCJjYW1sX2JhX3NldF8zIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwibnRoX2RpZ2l0X25hdF9uYXRpdmUiLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsImRpZ2l0IiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9jcmVhdGVfZnJvbSIsImRhdGExIiwiZGF0YTIiLCJqc3R5cCIsImNhbWxfdGFuaF9mbG9hdCIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsImNhbWxfZ3JfZHJhd19zdHIiLCJkeCIsImNhbWxfZ3JfZHJhd19zdHJpbmciLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJpbWFnZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3N0cmluZ19zZXQiLCJjYW1sX3N5c19ybWRpciIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfbWxfcG9zX291dCIsIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9iYV9jcmVhdGUiLCJkaW1zX21sIiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwidSIsImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5IiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2UiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2luaXRpYWxfdGltZSIsImNhbWxfc3lzX3RpbWUiLCJjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4iLCJCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3BvcyIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX3VuaXhfZ2V0cHd1aWQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJuZWciLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsImNhbWxfdW5peF9maW5kY2xvc2UiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJCYXNlX2hhc2hfZG91YmxlIiwiY2FtbF9qc19uZXciLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZm9ybWF0X2ludCIsImpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQiLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuIiwiY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4YyIsImh2YWwiLCJoZXhuIiwiaGVmZiIsImNhbWxfb2JqX3RydW5jYXRlIiwiY2FtbF9qc190b19zdHJpbmciLCJpc19kaWdpdF9vZGQiLCJjYW1sX3J1bnRpbWVfdmFyaWFudCIsImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCIsImJ1ZmZlcmVkIiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJkb2MiLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2xvZzFwX2Zsb2F0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvciIsImNhbWxfbGF6eV9tYWtlX2ZvcndhcmQiLCJsb3JfZGlnaXRfbmF0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl93aW5kb3dfaWQiLCJjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwiLCJzZXRfZGlnaXRfbmF0IiwiY2FtbF9ieXRlc19zZXQxNiIsImNhbWxfZ3JfZG9jX29mX3N0YXRlIiwiY2FtbF9tbF9vdXRwdXRfaW50IiwiY2FtbF9vYmpfd2l0aF90YWciLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZSIsImV2ZW50IiwiZXZlbnRfY29udGVudCIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfc3lzX2FyZ3YiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX21vZGZfZmxvYXQiLCJjYW1sX2djX2dldCIsImNhbWxfZmxvYXRfY29tcGFyZSIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCIsImNhbWxfanNvb19mbGFnc19lZmZlY3RzIiwiY2FtbF91cGRhdGVfZHVtbXkiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX3N5c19ta2RpciIsImNhbWxfc3RyaW5nX25vdGVxdWFsIiwiY2FtbF9ieXRlc19ncmVhdGVydGhhbiIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX3JlYWRfZmlsZV9jb250ZW50IiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJvcmlnaW4iLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJtYWtlIiwidiIsImdldCIsInIiLCJzZXQiLCJleGNoYW5nZSIsImN1ciIsImNvbXBhcmVfYW5kX3NldCIsInNlZW4iLCJmZXRjaF9hbmRfYWRkIiwibiIsImluY3IiLCJkZWNyIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb25fZmxvYXQiLCJtYXhfaW50IiwibWluX2ludCIsInN5bWJvbCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkiLCJpJDAiLCJzdHJpbmdfb2ZfZmxvYXQiLCJmbG9hdF9vZl9zdHJpbmdfb3B0Iiwic3ltYm9sJDAiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX291dF9nZW4iLCJtb2RlIiwicGVybSIsIm5hbWUiLCJjIiwib3Blbl9vdXQiLCJvcGVuX291dF9iaW4iLCJmbHVzaF9hbGwiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiYWNjdSIsImJlZyIsImFjY3UkMCIsInJlcyIsImNsb3NlX2luX25vZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wkMSIsInN0cjIiLCJzdHIxIiwiZXhpdF9mdW5jdGlvbiIsImF0X2V4aXQiLCJmX3lldF90b19ydW4iLCJvbGRfZXhpdCIsImZfeWV0X3RvX3J1biQwIiwib2xkX2V4aXQkMCIsIm5ld19leGl0Iiwic3VjY2VzcyIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaW5hcnlfaW50Iiwic2Vla19vdXQiLCJwb3Nfb3V0Iiwib3V0X2NoYW5uZWxfbGVuZ3RoIiwic2V0X2JpbmFyeV9tb2RlX291dCIsImlucHV0X2NoYXIiLCJpbnB1dF9ieXRlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X3ZhbHVlIiwic2Vla19pbiIsInBvc19pbiIsImluX2NoYW5uZWxfbGVuZ3RoIiwiY2xvc2VfaW4iLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQiLCJzZXExIiwic2VxMiIsIm1hcCIsInNlcSIsImZpbHRlcl9tYXAiLCJzZXEkMCIsImZpbHRlciIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsIml0ZXIiLCJ1bmZvbGQiLCJ1IiwidSQwIiwibm9uZSIsInNvbWUiLCJ2YWx1ZSIsIm8iLCJkZWZhdWx0JDAiLCJiaW5kIiwiam9pbiIsImZvbGQiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsIiwiZXEiLCJvMCIsIm8xIiwidjEiLCJ2MCIsImNvbXBhcmUiLCJjbXAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwibGVmdCIsInJpZ2h0IiwiaXNfbGVmdCIsImlzX3JpZ2h0IiwiZmluZF9sZWZ0IiwiZmluZF9yaWdodCIsIm1hcF9sZWZ0IiwiZSIsIm1hcF9yaWdodCIsInYkMCIsImUxIiwiZTIiLCJ2MiIsInYxJDAiLCJ2MiQwIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJlc2NhcGVkIiwicyQwIiwibG93ZXJjYXNlIiwidXBwZXJjYXNlIiwibG93ZXJjYXNlX2FzY2lpIiwidXBwZXJjYXNlX2FzY2lpIiwiYzEiLCJjMiIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJsb19ib3VuZCIsImhpX2JvdW5kIiwiYm9tIiwicmVwIiwic3VjYyIsInByZWQiLCJpc192YWxpZCIsIm9mX2ludCIsImlzX2NoYXIiLCJvZl9jaGFyIiwidG9fY2hhciIsInVuc2FmZV90b19jaGFyIiwiaGFzaCIsImxlbmd0aCIsImwkMCIsIm50aCIsIm4kMCIsImwkMSIsIm4kMSIsIm50aF9vcHQiLCJyZXZfYXBwZW5kIiwibDEkMCIsImwyJDAiLCJsMSQxIiwibDIkMSIsInJldiIsImluaXRfYXV4IiwicmV2X2luaXRfdGhyZXNob2xkIiwiaW5pdCIsImZsYXR0ZW4iLCJtYXBpIiwicmV2X21hcCIsIml0ZXJpIiwiYWNjdSQxIiwiZm9sZF9yaWdodCIsIm1hcDIiLCJhMiIsImExIiwicmV2X21hcDIiLCJpdGVyMiIsImZvbGRfbGVmdDIiLCJmb2xkX3JpZ2h0MiIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwibWVtIiwibWVtcSIsImFzc29jIiwiYXNzb2Nfb3B0IiwiYXNzcSIsImFzc3Ffb3B0IiwibWVtX2Fzc29jIiwibWVtX2Fzc3EiLCJyZW1vdmVfYXNzb2MiLCJwYWlyIiwicmVtb3ZlX2Fzc3EiLCJmaW5kIiwiZmluZF9vcHQiLCJmaW5kX21hcCIsInJlc3VsdCIsImZpbmRfYWxsIiwiZmlsdGVyaSIsImNvbmNhdF9tYXAiLCJ4cyIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJwYXJ0aXRpb24iLCJ5ZXMiLCJubyIsInBhcnRpdGlvbl9tYXAiLCJzcGxpdCIsInJ5IiwicngiLCJjb21iaW5lIiwibWVyZ2UiLCJ0MiIsImgyIiwidDEiLCJoMSIsInN0YWJsZV9zb3J0Iiwic29ydCIsIngyIiwieDEiLCJ0bCQxIiwieDMiLCJ4MiQwIiwieDEkMCIsIm4xIiwibjIiLCJyZXZfc29ydCIsInRsJDAiLCJzb3J0X3VuaXEiLCJjJDAiLCJjJDEiLCJjJDIiLCJjJDMiLCJjJDQiLCJjJDUiLCJjJDYiLCJhY2N1JDIiLCJjb21wYXJlX2xlbmd0aHMiLCJjb21wYXJlX2xlbmd0aF93aXRoIiwiYXV4IiwidGFpbCIsIm9mX3NlcSIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsImoiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImkkMSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsImNhcGl0YWxpemUiLCJ1bmNhcGl0YWxpemUiLCJ0b19zZXFpIiwibmV3X2xlbiIsIm5ld19idWYiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDY0X2xlIiwic2V0X2ludDY0X2JlIiwic2V0X3VpbnQ4Iiwic2V0X3VpbnQxNl9uZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiaGVhZGVyX3NpemUiLCJkYXRhX3NpemUiLCJ0b3RhbF9zaXplIiwiZnJvbV9ieXRlcyIsImZyb21fc3RyaW5nIiwiaXNfYmxvY2siLCJkb3VibGVfZmllbGQiLCJzZXRfZG91YmxlX2ZpZWxkIiwibWFyc2hhbCIsIm9iaiIsInVubWFyc2hhbCIsImN1c3RvbV90YWciLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJpbnRfdGFnIiwib3V0X29mX2hlYXBfdGFnIiwidW5hbGlnbmVkX3RhZyIsImluZm8iLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJleHRlbnNpb25fY29uc3RydWN0b3IiLCJleHRlbnNpb25fbmFtZSIsImV4dGVuc2lvbl9pZCIsIm1heF9lcGhlX2xlbmd0aCIsImNyZWF0ZSIsInJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IiwibXNnIiwiZ2V0X2tleSIsImdldF9rZXlfY29weSIsInNldF9rZXkiLCJ1bnNldF9rZXkiLCJjaGVja19rZXkiLCJibGl0X2tleSIsIm8yIiwibWFrZV9mbG9hdCIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImxhIiwibGIiLCJyZXMkMCIsImxpc3RfbGVuZ3RoIiwidCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJiMCIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJpJDYiLCJlJDEiLCJpJDQiLCJlJDAiLCJpJDUiLCJqJDAiLCJpJDIiLCJpJDMiLCJmYXRoZXIiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJkIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwicGkiLCJpc19pbnRlZ2VyIiwibWluX21heCIsIm1pbl9udW0iLCJtYXhfbnVtIiwibWluX21heF9udW0iLCJ1bnNhZmVfZmlsbCIsImNoZWNrIiwiaGxlbiIsInNyYyIsInNvZnMiLCJkb2ZzIiwiaCIsIm1lbV9pZWVlIiwibWFwX3RvX2FycmF5IiwibWFwX2Zyb21fYXJyYXkiLCJtYXhfaW50JDAiLCJ1bnNpZ25lZF90b19pbnQiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwib3B0IiwicmVhZF9mdW4iLCJzdGgiLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhY3Rpb24iLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwiaXNfZW1wdHkiLCJyZW1vdmUiLCJ1bmlvbiIsInIyIiwicjIkMCIsInIxJDAiLCJpbnRlciIsInNwbGl0X2JpcyIsImRpc2pvaW50IiwiY29uc19lbnVtIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwic3Vic2V0IiwicHYiLCJsZiIsImx0IiwicmYiLCJydCIsImNhcmRpbmFsIiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJmaW5kX2ZpcnN0IiwidjAkMSIsInYwJDAiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJ0cnlfam9pbiIsInYkMSIsIngwIiwibCQzIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJkMCQxIiwiZDAiLCJkMCQwIiwibWluX2JpbmRpbmciLCJtaW5fYmluZGluZ19vcHQiLCJtYXhfYmluZGluZyIsIm1heF9iaW5kaW5nX29wdCIsInJlbW92ZV9taW5fYmluZGluZyIsInVwZGF0ZSIsImRhdGEkMCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiY2xlYXIiLCJwdXNoIiwicG9wIiwicG9wX29wdCIsInRvcCIsInRvcF9vcHQiLCJjZWxsIiwibWF0Y2giLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSIsInRha2Vfb3B0IiwiY2VsbCQwIiwicV9yZXMiLCJwcmV2IiwicHJldiQwIiwidHJhbnNmZXIiLCJxMSIsInEyIiwicmFpc2VfdW5kZWZpbmVkIiwiZm9yY2VfbGF6eV9ibG9jayIsImJsayIsImNsb3N1cmUiLCJmb3JjZV92YWxfbGF6eV9ibG9jayIsImZvcmNlIiwibHp2IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcF92YWwiLCJjb3VudCIsImZpbGxfYnVmZiIsImdldF9kYXRhIiwiZDExIiwiYSQwIiwiYSQxIiwicGVla19kYXRhIiwianVua19kYXRhIiwianVuayIsIm5nZXRfZGF0YSIsImFsIiwibnBlZWsiLCJzdHJtIiwiZnJvbSIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wIiwiZHVtcF9kYXRhIiwiY29udGVudHMiLCJyZXNldCIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsImFkZF91dGZfOF91Y2hhciIsInBvcyQxIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaGkiLCJsbyIsImFkZF91dGZfMTZsZV91Y2hhciIsImFkZF9zdWJzdHJpbmciLCJvZmZzZXQiLCJuZXdfcG9zaXRpb24iLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2J1ZmZlciIsImJzIiwiYWRkX2NoYW5uZWwiLCJ0b19yZWFkJDEiLCJhbHJlYWR5X3JlYWQiLCJ0b19yZWFkIiwiYWxyZWFkeV9yZWFkJDAiLCJ0b19yZWFkJDAiLCJvdXRwdXRfYnVmZmVyIiwiYWRkX3N1YnN0aXR1dGUiLCJsaW0kMSIsInByZXZpb3VzIiwicHJldmlvdXMkMCIsInN0YXJ0JDAiLCJvcGVuaW5nIiwibGltJDAiLCJzdG9wJDAiLCJrJDIiLCJjbG9zaW5nIiwic3RvcCIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwiaSQ3IiwiaSQ4IiwidHJ1bmNhdGUiLCJhZGRfaW50OCIsImFkZF9pbnQxNl9uZSIsImFkZF9pbnQzMl9uZSIsImFkZF9pbnQ2NF9uZSIsImFkZF9pbnQxNl9sZSIsImFkZF9pbnQxNl9iZSIsImFkZF9pbnQzMl9sZSIsImFkZF9pbnQzMl9iZSIsImFkZF9pbnQ2NF9sZSIsImFkZF9pbnQ2NF9iZSIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImNyZWF0ZV9jaGFyX3NldCIsImFkZF9pbl9jaGFyX3NldCIsInN0cl9pbmQiLCJtYXNrIiwiZnJlZXplX2NoYXJfc2V0IiwicmV2X2NoYXJfc2V0IiwiY2hhcl9zZXQkMCIsImlzX2luX2NoYXJfc2V0IiwicGFkX29mX3BhZF9vcHQiLCJwYWRfb3B0Iiwid2lkdGgiLCJwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQiLCJmbXQiLCJwYWRfb3B0JDAiLCJwYWRfb3B0JDEiLCJwYWRfb3B0JDIiLCJwYWRfb3B0JDMiLCJwYWRfb3B0JDQiLCJwcmVjX29wdCIsInBhZF9vcHQkNSIsIm5kZWMiLCJwYWRfb3B0JDYiLCJwYWRfb3B0JDciLCJwYWRfb3B0JDgiLCJkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiIsImJ1ZmZlcl9jcmVhdGUiLCJpbml0X3NpemUiLCJidWZmZXJfY2hlY2tfc2l6ZSIsIm92ZXJoZWFkIiwibWluX2xlbiIsIm5ld19zdHIiLCJidWZmZXJfYWRkX2NoYXIiLCJidWZmZXJfYWRkX3N0cmluZyIsInN0cl9sZW4iLCJidWZmZXJfY29udGVudHMiLCJjaGFyX29mX2ljb252IiwiY2hhcl9vZl9mY29udiIsImNGIiwiYnByaW50X3BhZHR5IiwicGFkdHkiLCJicHJpbnRfaWdub3JlZF9mbGFnIiwiaWduX2ZsYWciLCJicHJpbnRfcGFkX29wdCIsImJwcmludF9wYWRkaW5nIiwicGFkdHkkMCIsImJwcmludF9wcmVjaXNpb24iLCJicHJpbnRfaWNvbnZfZmxhZyIsImJwcmludF9hbHRpbnRfZm10IiwiYnByaW50X2Zjb252X2ZsYWciLCJzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQiLCJzdHIkMCIsImJwcmludF9jaGFyX2xpdGVyYWwiLCJicHJpbnRfc3RyaW5nX2xpdGVyYWwiLCJicHJpbnRfZm10dHkiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJmbXR0eSQ0IiwiZm10dHkkNSIsImZtdHR5JDYiLCJmbXR0eSQ3IiwiZm10dHkkOCIsImZtdHR5JDkiLCJzdWJfZm10dHkiLCJmbXR0eSQxMCIsInN1Yl9mbXR0eSQwIiwiZm10dHkkMTEiLCJmbXR0eSQxMiIsImZtdHR5JDEzIiwiZm10dHkkMTQiLCJmbXR0eSQxNSIsImludF9vZl9jdXN0b21fYXJpdHkiLCJzdHJpbmdfb2ZfZm10IiwiZm10aXRlciIsImZtdCQwIiwiaWduX2ZsYWckMCIsInN0ciQxIiwic2V0JDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwiZm10dHlfcmVsX2RldCIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwidHJhbnMiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsInJlc3QxIiwicmVzdDIiLCJyZXN0MSQwIiwicmVzdDIkMCIsInJlc3QxJDEiLCJyZXN0MiQxIiwicmVzdDEkMiIsInJlc3QyJDIiLCJyZXN0MSQzIiwicmVzdDIkMyIsInJlc3QxJDQiLCJyZXN0MiQ0IiwicmVzdDEkNSIsInJlc3QyJDUiLCJyZXN0MSQ2IiwicmVzdDIkNiIsInJlc3QxJDciLCJ0eTEkMCIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QxJDgiLCJ0eTEyIiwidHkxMSIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImY0IiwiZjIiLCJyZXN0MSQ5IiwicmVzdDIkOSIsInJlc3QxJDEwIiwicmVzdDIkMTAiLCJyZXN0MSQxMSIsInJlc3QyJDExIiwicmVzdDEkMTIiLCJyZXN0MiQxMiIsInJlc3QxJDEzIiwicmVzdDIkMTMiLCJmbXR0eV9vZl9mbXQiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJ0eSQwIiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfZm9ybWF0IiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHkwIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXQkNiIsImZtdF9yZXN0JDYiLCJwcmVjJDUiLCJwYWQkOSIsInBhZCQxMCIsImZtdHR5X3Jlc3QkNiIsInByZWMkNiIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsInBhZCQxMSIsInBhZCQxMiIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdCQ4IiwiZm10X3Jlc3QkOCIsInBhZCQxMyIsInBhZCQxNCIsImZtdHR5X3Jlc3QkOCIsImZtdCQ5IiwiZm10X3Jlc3QkOSIsImZtdCQxMCIsImZtdF9yZXN0JDEwIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXQkMTIiLCJmbXR0eV9yZXN0JDkiLCJmbXRfcmVzdCQxMiIsImZtdCQxMyIsImZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdCQxNSIsImZtdHR5X3Jlc3QkMTIiLCJmbXRfcmVzdCQxNSIsImZtdCQxNiIsImZtdF9yZXN0JDE2IiwiZm10dHkkMTYiLCJmbXQkMTciLCJmbXRfcmVzdCQxNyIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTciLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOCIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDE5IiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJ0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGkiLCJmbXR0eSQyMSIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIwIiwiZm10JDIxIiwic3ViX2ZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCQwIiwic3ViX2ZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkNyIsInN1Yl9mbXR0eV9yZXN0JDgiLCJzdWJfZm10dHlfcmVzdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHlfcmVzdCQxMSIsInN1Yl9mbXR0eV9yZXN0JDEyIiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJzdWJfZm10dHlfcmVzdCQxNCIsInN1YjJfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNSIsInN1YjJfZm10dHkkMCIsInN1Yl9mbXR0eV9yZXN0JDE2Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJzdWJfZm10dHlfcmVzdCQxOSIsInN1Yl9mbXR0eV9yZXN0JDIwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJzdWJfZm10dHlfcmVzdCQyMiIsInN1Yl9mbXR0eV9yZXN0JDIzIiwic3ViX2ZtdHR5X3Jlc3QkMjQiLCJzdWJfZm10dHlfcmVzdCQyNSIsInN1Yl9mbXR0eV9yZXN0JDI2IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrYWNjIiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9pZ25vcmVkX3BhcmFtIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJyZXN0JDI2IiwicmVzdCQyNyIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJwYXJzZSIsImxpdF9zdGFydCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJ4JDEiLCJyJDMiLCJhcmckNCIsIngkMiIsInNwZWNzIiwiZiQ0IiwiYXJnJDUiLCJmJDUiLCJmJDYiLCJmJDciLCJhcmckNiIsIm5ld2FyZyIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIiwicGFyc2VfYXJndl9keW5hbWljIiwiY3VycmVudCQwIiwicGFyc2VfYXJndiIsIm1zZyQwIiwibXNnJDEiLCJwYXJzZV9keW5hbWljIiwicGFyc2VfZXhwYW5kIiwic2Vjb25kX3dvcmQiLCJsb29wIiwibWF4X2FyZ19sZW4iLCJrd2QiLCJyZXBsYWNlX2xlYWRpbmdfdGFiIiwiYWxpZ24iLCJsaW1pdCIsImNvbXBsZXRlZCIsImtzZCIsImN1dGNvbCQwIiwic3BhY2VzJDAiLCJzcGVjJDAiLCJjdXRjb2wiLCJrd2RfbGVuIiwic3BhY2VzIiwicmVhZF9hdXgiLCJmaWxlIiwid29yZHMiLCJzdGFzaCIsIndvcmQiLCJ3b3JkJDAiLCJyZWFkX2FyZyIsInJlYWRfYXJnMCIsIndyaXRlX2F1eCIsImFyZ3MiLCJ3cml0ZV9hcmciLCJ3cml0ZV9hcmcwIiwibG9jZm10IiwicHJpbnRlcnMiLCJmaWVsZCIsIm90aGVyX2ZpZWxkcyIsInVzZV9wcmludGVycyIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJwYXJhbSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDEiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biQwIiwid29ya19leG4iLCJ3b3JrX2J0IiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJjcmVhdGVfYWxhcm0iLCJkZWxldGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImZpbGVuYW1lIiwiZGlnZXN0IiwiY2hhcl9oZXgiLCJ0b19oZXgiLCJmcm9tX2hleCIsImRpZ2l0IiwibmV3X3N0YXRlIiwiYXNzaWduIiwic3QxIiwic3QyIiwiZnVsbF9pbml0Iiwic2VlZCIsInNlZWQkMCIsIm1ha2Vfc2VsZl9pbml0IiwiYml0cyIsImN1cnZhbCIsIm5ld3ZhbCIsIm5ld3ZhbDMwIiwiaW50YXV4IiwiaW50JDAiLCJib3VuZCIsImZ1bGxfaW50IiwiYjEiLCJiMiIsIm1heF9pbnRfMzIiLCJicG9zIiwiYjMiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsImJvb2wiLCJiaXRzJDAiLCJpbnQkMSIsImZ1bGxfaW50JDAiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsInNjYWxlIiwiYm9vbCQwIiwiZnVsbF9pbml0JDAiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiaW5pdGlhbF9zaXplIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsImZpbmRfaW5fYnVja2V0IiwicmVwbGFjZSIsInJlcGxhY2Vfc2VxIiwic3oiLCJoYXNoX3BhcmFtIiwic2VlZGVkX2hhc2giLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4IiwiY3JlYXRlJDAiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsInVua25vd24iLCJwcF9lbnF1ZXVlIiwidG9rZW4iLCJwcF9pbmZpbml0eSIsInBwX291dHB1dF9zdHJpbmciLCJwcF9vdXRwdXRfbmV3bGluZSIsImZvcm1hdF9wcF90ZXh0IiwidGV4dCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInJlYWxfaW5kZW50IiwiYnJlYWtfbGluZSIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwicHBfY2xvc2VfYm94IiwicHBfb3Blbl9zdGFnIiwicHBfY2xvc2Vfc3RhZyIsInBwX29wZW5fdGFnIiwicHBfY2xvc2VfdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwicHBfcHJpbnRfYXNfc2l6ZSIsInBwX3ByaW50X2FzIiwiaXNpemUiLCJwcF9wcmludF9zdHJpbmciLCJwcF9wcmludF9ieXRlcyIsInBwX3ByaW50X2ludCIsInBwX3ByaW50X2Zsb2F0IiwicHBfcHJpbnRfYm9vbCIsInBwX3ByaW50X2NoYXIiLCJwcF9vcGVuX2hib3giLCJwcF9vcGVuX3Zib3giLCJwcF9vcGVuX2h2Ym94IiwicHBfb3Blbl9ob3Zib3giLCJwcF9vcGVuX2JveCIsInBwX3ByaW50X25ld2xpbmUiLCJwcF9wcmludF9mbHVzaCIsInBwX2ZvcmNlX25ld2xpbmUiLCJwcF9wcmludF9pZl9uZXdsaW5lIiwicHBfcHJpbnRfY3VzdG9tX2JyZWFrIiwicHBfcHJpbnRfYnJlYWsiLCJwcF9wcmludF9zcGFjZSIsInBwX3ByaW50X2N1dCIsInBwX29wZW5fdGJveCIsInBwX2Nsb3NlX3Rib3giLCJwcF9wcmludF90YnJlYWsiLCJwcF9wcmludF90YWIiLCJwcF9zZXRfdGFiIiwicHBfc2V0X21heF9ib3hlcyIsInBwX2dldF9tYXhfYm94ZXMiLCJwcF9vdmVyX21heF9ib3hlcyIsInBwX3NldF9lbGxpcHNpc190ZXh0IiwicHBfZ2V0X2VsbGlwc2lzX3RleHQiLCJwcF9saW1pdCIsInBwX3NldF9tYXhfaW5kZW50IiwicHBfZ2V0X21heF9pbmRlbnQiLCJwcF9zZXRfbWFyZ2luIiwibmV3X21heF9pbmRlbnQiLCJ2YWxpZGF0ZV9nZW9tZXRyeSIsIm1hcmdpbiIsIm1heF9pbmRlbnQiLCJjaGVja19nZW9tZXRyeSIsImdlb21ldHJ5IiwicHBfZ2V0X21hcmdpbiIsInBwX3NldF9mdWxsX2dlb21ldHJ5IiwicHBfc2V0X2dlb21ldHJ5IiwicHBfc2FmZV9zZXRfZ2VvbWV0cnkiLCJwcF9nZXRfZ2VvbWV0cnkiLCJwcF91cGRhdGVfZ2VvbWV0cnkiLCJwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGkiLCJwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGkiLCJkaXNwbGF5X25ld2xpbmUiLCJibGFua19saW5lIiwiZGlzcGxheV9ibGFua3MiLCJwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwiZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnIiwiZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWciLCJkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyIsInBwX21ha2VfZm9ybWF0dGVyIiwicHBfcXVldWUiLCJzeXNfdG9rIiwic2Nhbl9zdGFjayIsInBwX21hcmdpbiIsImZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIiwib3V0X2Z1bnMiLCJtYWtlX2Zvcm1hdHRlciIsInBwZiIsImZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCIsImZvcm1hdHRlcl9vZl9idWZmZXIiLCJwcF9idWZmZXJfc2l6ZSIsInBwX21ha2VfYnVmZmVyIiwic3RkYnVmIiwic3RkX2Zvcm1hdHRlciIsImVycl9mb3JtYXR0ZXIiLCJzdHJfZm9ybWF0dGVyIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3RhZyIsImNsb3NlX3RhZyIsIm9wZW5fc3RhZyIsImNsb3NlX3N0YWciLCJwcmludF9hcyIsInByaW50X2Jvb2wiLCJwcmludF9icmVhayIsInByaW50X2N1dCIsInByaW50X3NwYWNlIiwiZm9yY2VfbmV3bGluZSIsInByaW50X2ZsdXNoIiwicHJpbnRfaWZfbmV3bGluZSIsIm9wZW5fdGJveCIsImNsb3NlX3Rib3giLCJwcmludF90YnJlYWsiLCJzZXRfdGFiIiwicHJpbnRfdGFiIiwic2V0X21hcmdpbiIsImdldF9tYXJnaW4iLCJzZXRfbWF4X2luZGVudCIsImdldF9tYXhfaW5kZW50Iiwic2V0X2dlb21ldHJ5Iiwic2FmZV9zZXRfZ2VvbWV0cnkiLCJnZXRfZ2VvbWV0cnkiLCJ1cGRhdGVfZ2VvbWV0cnkiLCJzZXRfbWF4X2JveGVzIiwiZ2V0X21heF9ib3hlcyIsIm92ZXJfbWF4X2JveGVzIiwic2V0X2VsbGlwc2lzX3RleHQiLCJnZXRfZWxsaXBzaXNfdGV4dCIsInNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMiLCJzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsInNldF9wcmludF90YWdzIiwiZ2V0X3ByaW50X3RhZ3MiLCJzZXRfbWFya190YWdzIiwiZ2V0X21hcmtfdGFncyIsInNldF90YWdzIiwicHBfcHJpbnRfbGlzdCIsInBwX3YiLCJvcHQkMCIsInBwX3NlcCIsIm9wdCQxIiwicHBfcHJpbnRfc2VxIiwic2VxJDEiLCJzZXEkMiIsInBwX3ByaW50X3RleHQiLCJwcF9wcmludF9vcHRpb24iLCJwcF9wcmludF9yZXN1bHQiLCJwcF9wcmludF9laXRoZXIiLCJjb21wdXRlX3RhZyIsInRhZ19hY2MiLCJvdXRwdXRfZm9ybWF0dGluZ19saXQiLCJidHkiLCJwJDYiLCJwJDciLCJzaXplJDEiLCJwJDgiLCJrZHByaW50ZiIsImRwcmludGYiLCJrYXNwcmludGYiLCJhc3ByaW50ZiIsImZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMiLCJwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnUiLCJwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnUiLCJzZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3QiLCJnZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3QiLCJwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMiLCJzdHJpbmdpZnkiLCJwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMiLCJmdW5zIiwibWFya19vcGVuX3RhZyIsIm1hcmtfY2xvc2VfdGFnIiwicHJpbnRfb3Blbl90YWciLCJwcmludF9jbG9zZV90YWciLCJzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMiLCJudWxsX2NoYXIiLCJuZXh0X2NoYXIiLCJpYiIsInBlZWtfY2hhciIsImNoZWNrZWRfcGVla19jaGFyIiwiZW5kX29mX2lucHV0IiwiYmVnaW5uaW5nX29mX2lucHV0IiwibmFtZV9vZl9pbnB1dCIsImNoYXJfY291bnQiLCJpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciIsInRva2VuX3N0cmluZyIsInRva2VuX2J1ZmZlciIsInNraXBfY2hhciIsImlnbm9yZV9jaGFyIiwic3RvcmVfY2hhciIsImRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUiLCJpbmFtZSIsInNjYW5fY2xvc2VfYXRfZW5kIiwic2Nhbl9yYWlzZV9hdF9lbmQiLCJmcm9tX2ljIiwic2Nhbl9jbG9zZV9pYyIsImVvZiIsIm9wZW5faW5fZmlsZSIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsInNjYW5fYmluYXJ5X2ludCIsImlzX29jdGFsX2RpZ2l0Iiwic2Nhbl9vY3RhbF9pbnQiLCJpc19oZXhhX2RpZ2l0Iiwic2Nhbl9oZXhhZGVjaW1hbF9pbnQiLCJzY2FuX3NpZ24iLCJzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWwiLCJzY2FuX2ludF9jb252ZXJzaW9uIiwic2Nhbl9mcmFjdGlvbmFsX3BhcnQiLCJzY2FuX2V4cG9uZW50X3BhcnQiLCJzY2FuX2Zsb2F0IiwicHJlY2lzaW9uIiwicHJlY2lzaW9uJDAiLCJjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyIsInNjYW5faGV4X2Zsb2F0Iiwid2lkdGgkNCIsIndpZHRoJDUiLCJ3aWR0aCQ2Iiwid2lkdGgkMTAiLCJ3aWR0aCQ3Iiwid2lkdGgkOCIsIndpZHRoJDkiLCJzY2FuX2NhbWxfZmxvYXRfcmVzdCIsIndpZHRoX3ByZWNpc2lvbiIsImZyYWNfd2lkdGgiLCJzY2FuX2NhbWxfZmxvYXQiLCJzY2FuX3N0cmluZyIsInN0cCIsImhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIiLCJjaGVja19uZXh0X2NoYXIiLCJjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIiLCJjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4iLCJzY2FuJDMiLCJzY2FuJDQiLCJjb252JDAiLCJzY2FuJDUiLCJjb252JDEiLCJzY2FuJDYiLCJjb252JDIiLCJzY2FuJDciLCJzY2FuJDgiLCJmbXRpbmdfbGl0JDAiLCJzdHAkMCIsInMkMiIsInN0cl9yZXN0JDAiLCJhcmdfcmVzdCIsImtzY2FuZiIsImVmIiwiZXhjJDAiLCJleGMiLCJhcmdzJDEiLCJhcmdzJDAiLCJic2NhbmYiLCJrc3NjYW5mIiwic3NjYW5mIiwic2NhbmYiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsImtmc2NhbmYiLCJmc2NhbmYiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJkdW1teV9pdGVtIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJhcnIiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiYnVpbGRfcGF0aCIsImtleXMiLCJsb29rdXBfdGFibGVzIiwicm9vdCIsInJvb3RfZGF0YSIsInRhYmxlcyQwIiwidGFibGVzJDEiLCJ0YWJsZXNfZGF0YSIsIm5ld19jYWNoZSIsInNldF9tZXRob2RzIiwiY2xvIiwieCQyMCIsImNsbyQwIiwibiQzOCIsImUkMTAiLCJuJDM3IiwibiQzNiIsIm4kMiIsIm4kMzUiLCJmJDIwIiwieCQxOSIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ4JDE4IiwieSQwIiwibiQ2IiwiZiQxNSIsIngkMTciLCJuJDMxIiwieCQzIiwibiQ3IiwiZiQxNCIsIngkMTYiLCJlJDgiLCJuJDMwIiwieCQ0IiwibiQ4IiwiZiQxMyIsIngkMTUiLCJuJDI5IiwibiQ5IiwieCQ1IiwiZiQxMiIsIm4kMjgiLCJ4JDE0IiwiZiQ4IiwiZSQyIiwibiQxMCIsIngkNiIsImYkMTEiLCJlJDciLCJuJDI3IiwieCQxMyIsImYkOSIsIm4kMTEiLCJ4JDciLCJmJDEwIiwibiQyNiIsIngkMTIiLCJuJDEyIiwieCQ4IiwibiQyNSIsIngkMTEiLCJuJDEzIiwibiQyNCIsIm0kMTIiLCJuJDE0IiwiZSQzIiwibiQyMyIsImUkNiIsIm0kMTEiLCJuJDE1IiwibSQxIiwibiQyMiIsIm0kMTAiLCJtJDIiLCJ4JDkiLCJtJDkiLCJ4JDEwIiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwiaW5pdGlhbF9idWZmZXIiLCJidWZmZXIiLCJidWZwb3MiLCJyZXNldF9idWZmZXIiLCJzdG9yZSIsIm5ld2J1ZmZlciIsImdldF9zdHJpbmciLCJtYWtlX2xleGVyIiwia2V5d29yZHMiLCJrd2RfdGFibGUiLCJpZGVudF9vcl9rZXl3b3JkIiwia2V5d29yZF9vcl9lcnJvciIsIm5leHRfdG9rZW4iLCJlc2NhcGUiLCJjb21tZW50IiwibnVtYmVyIiwiaWRlbnQyIiwiZXhwb25lbnRfcGFydCIsImVuZF9leHBvbmVudF9wYXJ0IiwiYzMiLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwibmV3X2QiLCJidWNrZXRfbGVuZ3RoX2FsaXZlIiwic3RhdHNfYWxpdmUiLCJnZXRfZGF0YV9jb3B5Iiwic2V0X2RhdGEiLCJ1bnNldF9kYXRhIiwiY2hlY2tfZGF0YSIsImJsaXRfZGF0YSIsInNldF9rZXlfZGF0YSIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDAiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJjcmVhdGUkMSIsImdldF9rZXkkMCIsImdldF9rZXlfY29weSQwIiwic2V0X2tleSQwIiwidW5zZXRfa2V5JDAiLCJjaGVja19rZXkkMCIsImJsaXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwiZ2V0X2RhdGFfY29weSQxIiwic2V0X2RhdGEkMSIsInVuc2V0X2RhdGEkMSIsImNoZWNrX2RhdGEkMSIsImJsaXRfZGF0YSQxIiwia2kiLCJrMCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUiLCJxdW90ZV9jb21tYW5kIiwiYmFzZW5hbWUiLCJkaXJuYW1lIiwiaXNfZGlyX3NlcCQwIiwiaXNfcmVsYXRpdmUkMCIsImlzX2ltcGxpY2l0JDAiLCJjaGVja19zdWZmaXgkMCIsImNob3Bfc3VmZml4X29wdCQwIiwidGVtcF9kaXJfbmFtZSQwIiwicXVvdGUkMCIsImxvb3AkMCIsImxvb3BfYnMiLCJhZGRfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDEiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNob3Bfc3VmZml4IiwiZXh0ZW5zaW9uX2xlbiIsImkwIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJvcGVuX3RlbXBfZmlsZSIsInN0aCQwIiwicGVybXMiLCJzdGgkMSIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwic2l6ZV9pbl9ieXRlcyIsInNpemVfaW5fYnl0ZXMkMCIsIm9mX3ZhbHVlIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJvZl9hcnJheSIsImJhIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwidmVyc2lvbiIsImdpdF92ZXJzaW9uIiwicmFpc2UiLCJtYXgiLCJ4IiwieSIsIm1pbiIsImVxdWFsIiwiZXF1YWwkMCIsIm1heCQwIiwibWluJDAiLCJnbG9iYWwiLCJudWxsJDAiLCJ1bmRlZmluZWQkMCIsInJldHVybiQwIiwibWFwIiwiZiIsImJpbmQiLCJ0ZXN0IiwiaXRlciIsImNhc2UkMCIsImciLCJnZXQiLCJvcHRpb24iLCJ4JDAiLCJ0b19vcHRpb24iLCJyZXR1cm4kMSIsIm1hcCQwIiwiYmluZCQwIiwidGVzdCQwIiwiaXRlciQwIiwiY2FzZSQxIiwiZ2V0JDAiLCJvcHRpb24kMCIsInRvX29wdGlvbiQwIiwiY29lcmNlIiwiY29lcmNlX29wdCIsInRydWUkMCIsImZhbHNlJDAiLCJuZmMiLCJuZmQiLCJuZmtjIiwibmZrZCIsInN0cmluZ19jb25zdHIiLCJyZWdFeHAiLCJvYmplY3RfY29uc3RydWN0b3IiLCJvYmplY3Rfa2V5cyIsIm8iLCJhcnJheV9jb25zdHJ1Y3RvciIsImFycmF5X2dldCIsImFycmF5X3NldCIsImFycmF5X21hcCIsImEiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsImUiLCJyYWlzZV9qc19lcnJvciIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsIm9iaiIsImtleXMiLCJrZXkiLCJsaXN0X29mX25vZGVMaXN0IiwibGVuZ3RoIiwiYWNjIiwiaSQwIiwiYWNjJDAiLCJpJDEiLCJkaXNjb25uZWN0ZWQiLCJwcmVjZWRpbmciLCJmb2xsb3dpbmciLCJjb250YWlucyIsImNvbnRhaW5lZF9ieSIsImltcGxlbWVudGF0aW9uX3NwZWNpZmljIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInAiLCJuIiwicmVtb3ZlQ2hpbGQiLCJyZXBsYWNlQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJub2RlVHlwZSIsInQxMyIsImNhc3QiLCJ0MTQiLCJlbGVtZW50IiwidGV4dCIsImF0dHIiLCJub19oYW5kbGVyIiwiaGFuZGxlciIsInJlcyIsImZ1bGxfaGFuZGxlciIsInRoaXMkMCIsImludm9rZV9oYW5kbGVyIiwiZXZlbnQiLCJldmVudFRhcmdldCIsIm1ha2UiLCJhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMiLCJ0MjgiLCJ0eXAiLCJjYXB0dXJlIiwib25jZSIsInBhc3NpdmUiLCJoIiwiYiIsImV2IiwiY2FsbGJhY2siLCJhZGRFdmVudExpc3RlbmVyIiwiY2FwdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpZCIsInByZXZlbnREZWZhdWx0IiwiY3JlYXRlQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImRldGFpbCIsIm9wdF9pdGVyIiwiY29uc3RyIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJ1aW50OEFycmF5IiwiaW50MTZBcnJheSIsInVpbnQxNkFycmF5IiwiaW50MzJBcnJheSIsInVpbnQzMkFycmF5IiwiZmxvYXQzMkFycmF5IiwiZmxvYXQ2NEFycmF5Iiwic2V0IiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwiYWIiLCJ1aW50OCIsImJsb2JfY29uc3RyIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJvcHRpb25zJDAiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJhJDAiLCJsJDAiLCJmaWxlbmFtZSIsIm5hbWUkMCIsImRvY19jb25zdHIiLCJkb2N1bWVudCIsImJsb2IiLCJzdHJpbmciLCJsb2Fkc3RhcnQiLCJwcm9ncmVzcyIsImFib3J0IiwiZXJyb3IiLCJsb2FkIiwibG9hZGVuZCIsImZpbGVSZWFkZXIiLCJvbklFIiwiY2xpY2siLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwibW91c2V3aGVlbCIsIndoZWVsIiwiRE9NTW91c2VTY3JvbGwiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCIsImRyYWdzdGFydCIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsImRyYWciLCJkcm9wIiwiaGFzaGNoYW5nZSIsImNoYW5nZSIsImlucHV0IiwidGltZXVwZGF0ZSIsInN1Ym1pdCIsInNjcm9sbCIsImZvY3VzIiwiYmx1ciIsInVubG9hZCIsImJlZm9yZXVubG9hZCIsInJlc2l6ZSIsIm9yaWVudGF0aW9uY2hhbmdlIiwicG9wc3RhdGUiLCJzZWxlY3QiLCJvbmxpbmUiLCJvZmZsaW5lIiwiY2hlY2tpbmciLCJub3VwZGF0ZSIsImRvd25sb2FkaW5nIiwidXBkYXRlcmVhZHkiLCJjYWNoZWQiLCJvYnNvbGV0ZSIsImRvbUNvbnRlbnRMb2FkZWQiLCJhbmltYXRpb25zdGFydCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImFuaW1hdGlvbmNhbmNlbCIsInRyYW5zaXRpb25ydW4iLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9uZW5kIiwidHJhbnNpdGlvbmNhbmNlbCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmNhbmNlbCIsInBvaW50ZXJkb3duIiwicG9pbnRlcmxlYXZlIiwicG9pbnRlcm1vdmUiLCJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiLCJwb2ludGVydXAiLCJyYXRlY2hhbmdlIiwic2Vla2VkIiwic2Vla2luZyIsInN0YWxsZWQiLCJzdXNwZW5kIiwidm9sdW1lY2hhbmdlIiwid2FpdGluZyIsImQiLCJsb2NhdGlvbl9vcmlnaW4iLCJvcmlnaW4iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImRvYyIsInVuc2FmZUNyZWF0ZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50U3ludGF4IiwidW5zYWZlQ3JlYXRlRWxlbWVudEV4IiwidHlwZSIsImVsdCIsImNyZWF0ZUh0bWwiLCJjcmVhdGVIZWFkIiwiY3JlYXRlTGluayIsImNyZWF0ZVRpdGxlIiwiY3JlYXRlTWV0YSIsImNyZWF0ZUJhc2UiLCJjcmVhdGVTdHlsZSIsImNyZWF0ZUJvZHkiLCJjcmVhdGVGb3JtIiwiY3JlYXRlT3B0Z3JvdXAiLCJjcmVhdGVPcHRpb24iLCJjcmVhdGVTZWxlY3QiLCJjcmVhdGVJbnB1dCIsImNyZWF0ZVRleHRhcmVhIiwiY3JlYXRlQnV0dG9uIiwiY3JlYXRlTGFiZWwiLCJjcmVhdGVGaWVsZHNldCIsImNyZWF0ZUxlZ2VuZCIsImNyZWF0ZVVsIiwiY3JlYXRlT2wiLCJjcmVhdGVEbCIsImNyZWF0ZUxpIiwiY3JlYXRlRGl2IiwiY3JlYXRlRW1iZWQiLCJjcmVhdGVQIiwiY3JlYXRlSDEiLCJjcmVhdGVIMiIsImNyZWF0ZUgzIiwiY3JlYXRlSDQiLCJjcmVhdGVINSIsImNyZWF0ZUg2IiwiY3JlYXRlUSIsImNyZWF0ZUJsb2NrcXVvdGUiLCJjcmVhdGVQcmUiLCJjcmVhdGVCciIsImNyZWF0ZUhyIiwiY3JlYXRlSW5zIiwiY3JlYXRlRGVsIiwiY3JlYXRlQSIsImNyZWF0ZUltZyIsImNyZWF0ZU9iamVjdCIsImNyZWF0ZVBhcmFtIiwiY3JlYXRlTWFwIiwiY3JlYXRlQXJlYSIsImNyZWF0ZVNjcmlwdCIsImNyZWF0ZVRhYmxlIiwiY3JlYXRlQ2FwdGlvbiIsImNyZWF0ZUNvbCIsImNyZWF0ZUNvbGdyb3VwIiwiY3JlYXRlVGhlYWQiLCJjcmVhdGVUZm9vdCIsImNyZWF0ZVRib2R5IiwiY3JlYXRlVHIiLCJjcmVhdGVUaCIsImNyZWF0ZVRkIiwiY3JlYXRlU3ViIiwiY3JlYXRlU3VwIiwiY3JlYXRlU3BhbiIsImNyZWF0ZVR0IiwiY3JlYXRlSSIsImNyZWF0ZUIiLCJjcmVhdGVCaWciLCJjcmVhdGVTbWFsbCIsImNyZWF0ZUVtIiwiY3JlYXRlU3Ryb25nIiwiY3JlYXRlQ2l0ZSIsImNyZWF0ZURmbiIsImNyZWF0ZUNvZGUiLCJjcmVhdGVTYW1wIiwiY3JlYXRlS2JkIiwiY3JlYXRlVmFyIiwiY3JlYXRlQWJiciIsImNyZWF0ZURkIiwiY3JlYXRlRHQiLCJjcmVhdGVOb3NjcmlwdCIsImNyZWF0ZUFkZHJlc3MiLCJjcmVhdGVGcmFtZXNldCIsImNyZWF0ZUZyYW1lIiwiY3JlYXRlSWZyYW1lIiwiY3JlYXRlQXVkaW8iLCJjcmVhdGVWaWRlbyIsImNyZWF0ZUNhbnZhcyIsImh0bWxfZWxlbWVudCIsInQ1NCIsInVuc2FmZUNvZXJjZSIsInRhZyIsInQ1NSIsImFyZWEiLCJiYXNlIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjb2wiLCJjb2xncm91cCIsImRlbCIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJlbWJlZCIsImZvcm0iLCJmcmFtZXNldCIsImZyYW1lIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhyIiwiaHRtbCIsImlmcmFtZSIsImltZyIsImlucHV0JDAiLCJpbnMiLCJsYWJlbCIsImxlZ2VuZCIsImxpIiwibGluayIsIm1ldGEiLCJvYmplY3QiLCJvbCIsIm9wdGdyb3VwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwibW91c2VFdmVudCIsImtleWJvYXJkRXZlbnQiLCJ3aGVlbEV2ZW50IiwibW91c2VTY3JvbGxFdmVudCIsInBvcFN0YXRlRXZlbnQiLCJtZXNzYWdlRXZlbnQiLCJwYXJhbSIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbGVmdCIsInRyeV9rZXlfY29kZV9yaWdodCIsInRyeV9rZXlfY29kZV9udW1wYWQiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJydW5fbmV4dCIsInZhbHVlIiwic3ltYm9sIiwib2ZfZXZlbnQiLCJjaGFyX29mX2ludCIsImVtcHR5X3N0cmluZyIsIm5vbmUiLCJvZl9ldmVudCQwIiwiZWxlbWVudCQwIiwidGFnZ2VkIiwidDEwNSIsIm9wdF90YWdnZWQiLCJ0YWdnZWRFdmVudCIsIm9wdF90YWdnZWRFdmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImMiLCJyZXEiLCJub3ciLCJsYXN0IiwiZHQiLCJkdCQwIiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZm9ybV9lbGVtZW50cyIsImkkMiIsInN0aCIsIm5hbWUkMSIsImxpc3QiLCJmaWxlIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwiZW1wdHlfZm9ybV9jb250ZW50cyIsInBvc3RfZm9ybV9jb250ZW50cyIsImNvbnRlbnRzIiwiZ2V0X2Zvcm1fY29udGVudHMiLCJyZWFkeXN0YXRlY2hhbmdlIiwidGltZW91dCIsIndvcmtlciIsImNyZWF0ZSIsImltcG9ydF9zY3JpcHRzIiwic2NyaXB0cyIsInNldF9vbm1lc3NhZ2UiLCJqc19oYW5kbGVyIiwicG9zdF9tZXNzYWdlIiwibXNnIiwid2ViU29ja2V0IiwiaXNfc3VwcG9ydGVkIiwiZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzIiwid2ViZ2xjb250ZXh0bG9zdCIsIndlYmdsY29udGV4dHJlc3RvcmVkIiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciIsImdldENvbnRleHQiLCJjdHgiLCJnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMiLCJhdHRyaWJzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsX3JlIiwicXVvdGVfcmVwbCIsImdsb2JhbF9yZXBsYWNlIiwic19ieSIsInJlcGxhY2VfZmlyc3QiLCJ0MjkiLCJmbGFncyIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlX3JlIiwicXVvdGUiLCJyZWdleHBfc3RyaW5nIiwicmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQiLCJpbnRlcnJ1cHQiLCJwbHVzX3JlIiwidXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmciLCJ1cmxkZWNvZGUiLCJ1cmxlbmNvZGUiLCJvcHQiLCJ3aXRoX3BsdXMiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInBhdGhfb2ZfcGF0aF9zdHJpbmciLCJhdXgiLCJqIiwid29yZCIsImVuY29kZV9hcmd1bWVudHMiLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsImluZGV4IiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9yZSIsImZpbGVfcmUiLCJ1cmxfb2ZfanNfc3RyaW5nIiwiaGFuZGxlIiwicHJvdF9zdHJpbmciLCJzc2wiLCJwYXRoX3N0ciIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJwcm90b2NvbCIsInBhdGhfc3RyaW5nIiwiYXJndW1lbnRzJDAiLCJnZXRfZnJhZ21lbnQiLCJzZXRfZnJhZ21lbnQiLCJ1IiwiYXNfc3RyaW5nIiwidXBkYXRlX2ZpbGUiLCJjb250ZW50Iiwib2MiLCJzZXRfY2hhbm5lbF9mbHVzaGVyIiwib3V0X2NoYW5uZWwiLCJmJDAiLCJzZXRfY2hhbm5lbF9maWxsZXIiLCJpbl9jaGFubmVsIiwibW91bnQiLCJwcmVmaXgiLCJ1bm1vdW50IiwianNfb2Zfb2NhbWxfdmVyc2lvbiIsImVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zIiwicmVzaXplT2JzZXJ2ZXIiLCJvYnNlcnZlIiwibm9kZSIsImJveCIsIm9icyIsInBlcmZvcm1hbmNlT2JzZXJ2ZXIiLCJlbnRyeV90eXBlcyIsImVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQiLCJtdXRhdGlvbk9ic2VydmVyIiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsImsiLCJyZW1vdmUiLCJmaW5kIiwianNvbiIsInJldml2ZXIiLCJpbnB1dF9yZXZpdmVyIiwidW5zYWZlX2lucHV0IiwibWxJbnQ2NF9jb25zdHIiLCJvdXRwdXRfcmV2aXZlciIsIm91dHB1dCIsInN0cmluZ19vZl9uYW1lIiwibmFtZV9vZl9zdHJpbmciLCJyZ2Jfb2ZfbmFtZSIsInJnYiIsImhzbCIsInN0cmluZ19vZl90IiwiYiQwIiwiZyQwIiwiciQwIiwiYiQxIiwiZyQxIiwiciQxIiwiYiQyIiwiZyQyIiwiciQyIiwiYSQxIiwiaCQwIiwiaGV4X29mX3JnYiIsImJsdWUiLCJncmVlbiIsInJlZCIsImluX3JhbmdlIiwianNfdF9vZl9qc19zdHJpbmciLCJyZ2JfcmUiLCJyZ2JfcGN0X3JlIiwicmdiYV9yZSIsInJnYmFfcGN0X3JlIiwiaHNsX3JlIiwiaHNsYV9yZSIsImpzIiwiY24iLCJtbCIsImZhaWwiLCJyZV9yZ2IiLCJyZV9yZ2JfcGN0IiwicmVfaHNsIiwiaV9vZl9zX28iLCJmX29mX3MiLCJhbHBoYSIsInJlZCQwIiwiZ3JlZW4kMCIsImJsdWUkMCIsImFscGhhJDAiLCJyZWQkMSIsImdyZWVuJDEiLCJibHVlJDEiLCJhbHBoYSQxIiwic3RyaW5nX29mX3QkMCIsImYkMSIsImYkMiIsImYkMyIsImYkNCIsImYkNSIsImYkNiIsImYkNyIsImYkOCIsImYkOSIsImYkMTAiLCJmJDExIiwiZiQxMiIsImpzJDAiLCJtbCQwIiwicmUiLCJzdHJpbmdfb2ZfdCQxIiwianMkMSIsIm1sJDEiLCJsaXN0ZW4iLCJ0YXJnZXQiLCJzdG9wX2xpc3RlbiIsInhtbG5zIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsImVxdWFsIiwieCIsInkiLCJjb21wYXJlIiwidG9faW50IiwicHAiLCJpbnRlcnNlY3QiLCJzeW1ib2wiLCJsZXR0ZXIiLCJub3RfbGV0dGVyIiwiZHVtbXkiLCJpbmV4aXN0YW50IiwibmV3bGluZSIsImxhc3RuZXdsaW5lIiwic2VhcmNoX2JvdW5kYXJ5IiwiZnJvbV9jaGFyIiwic2V4cCIsImZtdCIsInMiLCJwYWlyIiwicHAxIiwicHAyIiwidjIiLCJ2MSIsInRyaXBsZSIsInBwMyIsInYzIiwib3B0aW50IiwiaSIsInF1b3RlIiwicHBfb2xpc3QiLCJwcF9lbGVtIiwicHBfc3RyX2xpc3QiLCJ0b190b19zdHJpbmciLCJiIiwiY2FueSIsInVuaW9uIiwibCQwIiwibCIsImwkMiIsImwkMSIsInIiLCJjMiIsImMxIiwiciQwIiwiYzIkMCIsImMxJDAiLCJsJDMiLCJsJDQiLCJpbnRlciIsImRpZmYiLCJyJDEiLCJzaW5nbGUiLCJjIiwiYWRkIiwic2VxIiwiYyQwIiwib2Zmc2V0IiwibyIsImVtcHR5IiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwibWVyZ2VfbWFya3Nfb2Zmc2V0Iiwib2xkIiwibnciLCJtZXJnZSIsIm0iLCJhY2N1JDEiLCJhY2N1JDIiLCJhIiwiYWNjdSQwIiwiaWR4IiwibWFya3MiLCJtYXJrc19zZXRfaWR4IiwicHBfbWFya3MiLCJwcF9zZW0iLCJrIiwicHBfcmVwX2tpbmQiLCJlIiwiZSQwIiwiZSQxIiwiZSQyIiwiayQwIiwiZSQzIiwiaSQwIiwiZmlyc3QiLCJyZXMiLCJjcmVhdGVfaWRzIiwibWtfZXhwciIsImlkcyIsImRlZiIsImVtcHR5JDAiLCJjc3QiLCJhbHQiLCJraW5kIiwiaXNfZXBzIiwiZXhwciIsImVwcyIsInJlcCIsInNlbSIsIm1hcmsiLCJwbWFyayIsImVyYXNlIiwibSQwIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZW5hbWUiLCJ6IiwieSQwIiwiZyIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsInIxIiwiZTEiLCJsMSQxIiwicjIiLCJlMiIsImwyJDEiLCJyMSQwIiwiZTEkMCIsIm1hcmtzMSIsInIyJDAiLCJlMiQwIiwibWFya3MyIiwicjEkMSIsIm1hcmtzMSQwIiwicjIkMSIsIm1hcmtzMiQwIiwiaGFzaCQwIiwibWFya3MkMCIsImFjY3UkMyIsInRzZXEiLCJwcmludF9zdGF0ZV9yZWMiLCJwcmludF9zdGF0ZV9sc3QiLCJwcCQwIiwibWsiLCJjYXQiLCJkZXNjIiwiY3JlYXRlIiwiZXF1YWwkMCIsImhhc2gkMSIsImNyZWF0ZV93b3JraW5nX2FyZWEiLCJpbmRleF9jb3VudCIsInciLCJtYXJrX3VzZWRfaW5kaWNlcyIsInRibCIsImZyZWVfaW5kZXgiLCJ0YmxfcmVmIiwibGVuIiwiaWR4JDAiLCJyZW1vdmVfbWF0Y2hlcyIsInNwbGl0X2F0X21hdGNoIiwicmVtb3ZlX2R1cGxpY2F0ZXMiLCJwcmV2IiwicHJldiQwIiwicHJldiQxIiwicHJldiQyIiwiciQyIiwiciQzIiwieCQxIiwicHJldiQzIiwiciQ0Iiwic2V0X2lkeCIsImZpbHRlcl9tYXJrcyIsImRlbHRhXzEkMCIsIm5leHRfY2F0IiwicHJldl9jYXQiLCJkZWx0YV8yJDAiLCJkZWx0YV8xIiwiZGVsdGFfc2VxJDAiLCJ5JDEiLCJraW5kJDAiLCJyZXBfa2luZCIsInkkMiIsIm1hcmtzJDEiLCJ5JDMiLCJtYXJrcyQyIiwiY2F0JDAiLCJtYXJrcyQzIiwiZGVsdGFfMiIsImRlbHRhX3NlcSIsImRlbHRhXzQiLCJyZW0kMCIsImRlbHRhIiwiY2hhciQwIiwic3QiLCJleHByJDAiLCJyZWRfdHIiLCJ0cjIiLCJzdDIiLCJzMiIsInRyMSIsInN0MSIsInMxIiwicHJlcGVuZF9kZXJpdiIsInJlc3RyaWN0IiwicyQxIiwicHJlcGVuZF9tYXJrc19leHByX2xzdCIsIm0kMSIsImRlcml2XzEkMCIsImFsbF9jaGFycyIsImNhdGVnb3JpZXMiLCJyZW0kMSIsImRlcml2XzIkMCIsImRlcml2XzEiLCJkZXJpdl9zZXEiLCJ6JDAiLCJyZW0kMiIsImNhdCQxIiwiZGVyaXZfMiIsInhsIiwieiQxIiwiZGVyaXZfNCIsImRlcml2IiwiZGVyIiwiZXhwciQxIiwic3RhdHVzIiwibWEiLCJzdCQwIiwibWFrZSIsImZsYXR0ZW4iLCJjbSIsImNvbG9yX3JlcHIiLCJzcGxpdCIsImR1bW15X29mZnNldCIsIm0xIiwicDEiLCJwMiIsImdldCIsInN0YXJ0Iiwic3VicyIsInN0b3AiLCJ0ZXN0IiwiZ2V0X29wdCIsImFsbF9vZmZzZXQiLCJhbGwiLCJvZmZzZXRzIiwic3RycyIsIm1hdGNoZXMiLCJwcF9tYXRjaCIsInN0ciIsIm5iX2dyb3VwcyIsIm4iLCJuJDAiLCJ2JDAiLCJ2JDEiLCJuJDEiLCJ1bmtub3duIiwiYnJlYWskMCIsInBwX3JlIiwicmUiLCJncm91cF9jb3VudCIsImdyb3VwX25hbWVzIiwiY2F0ZWdvcnkiLCJjb2xvciIsImR1bW15X25leHQiLCJ1bmtub3duX3N0YXRlIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvdyIsImVvdyIsImJvbCIsImVvbCIsIndvcmQiLCJib3MiLCJlb3MiLCJub3RfYm91bmRhcnkiLCJ3aG9sZV9zdHJpbmciLCJsZW9sIiwibG9uZ2VzdCIsInNob3J0ZXN0Iiwibm9uX2dyZWVkeSIsImdyb3VwIiwibm9fZ3JvdXAiLCJuZXN0Iiwic2V0IiwicmciLCJjb21wbCIsImFueSIsIm5vdG5sIiwibG93ZXIiLCJ1cHBlciIsImFscGhhIiwiZGlnaXQiLCJhbG51bSIsIndvcmRjIiwiYXNjaWkiLCJibGFuayIsImNudHJsIiwiZ3JhcGgiLCJwcmludCIsInB1bmN0Iiwic3BhY2UiLCJ4ZGlnaXQiLCJjYXNlJDAiLCJub19jYXNlIiwiY29tcGlsZSIsInJlZ2V4cCQwIiwicmVnZXhwIiwibG5sIiwiY29sb3JpemUiLCJyZWdleHAkMSIsInJlZ2V4cCQyIiwibmVlZF9sbmwiLCJuY29sb3IiLCJjb2xvcnMiLCJsbmwkMCIsIm5jb2xvciQwIiwiaW5pdGlhbCIsImV4ZWNfaW50ZXJuYWwiLCJzdGgiLCJzdGgkMCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwic3RoJDEiLCJtYXRjaF9iYWNrc2xhc2hlcyIsInN0aCQyIiwicGVyaW9kIiwic3RoJDMiLCJleHBhbmRfYnJhY2VzIiwic3RoJDQiLCJkb3VibGVfYXN0ZXJpc2siLCJ0b19yZSIsInJlYWQiLCJwaWVjZXMiLCJmb3VuZCIsInBpZWNlcyQwIiwic3RhdGUkOCIsInN0YXRlJDkiLCJleHBsaWNpdF9zbGFzaCQwIiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsIm5vdF9lbXB0eSIsIm1heWJlX2VtcHR5Iiwibm90X2VtcHR5JDEiLCJlbmNsb3NlZF9zZXQkMCIsInN0YXRlJDIiLCJzdGF0ZSQ0Iiwibm90X2VtcHR5JDAiLCJzdGF0ZSQ1Iiwic3RhdGUkNiIsImVuY2xvc2VkJDAiLCJzdGF0ZSQ3IiwiZW5jbG9zZWQkMSIsInN0YXRlJDMiLCJzdGF0ZSQxIiwiZW5jbG9zZWQkMiIsImVuY2xvc2VkJDMiLCJleHBsIiwiaW5uZXIiLCJhY2MiLCJiZWckMCIsImFjYyQwIiwiYmVnJDEiLCJhY2MkMSIsImkkMyIsImJlZyQyIiwiaSQ0IiwiaSQyIiwiZ2xvYiQwIiwiZ2xvYngiLCJnbG9ieCQwIiwicG9zaXhfY2xhc3Nfc3RyaW5ncyIsIm9wdHMiLCJ1bmdyZWVkeSIsImRvdGFsbCIsImRvbGxhcl9lbmRvbmx5IiwibXVsdGlsaW5lIiwiYWNjZXB0X3MiLCJ1bmdldCIsImdyZWVkeV9tb2QiLCJnciIsImdyJDAiLCJhdG9tIiwiaW50ZWdlciIsImhleGRpZ2l0IiwiY29kZSIsInMkMyIsInMkNCIsImNsYXNzJDAiLCJwb3NpeF9jbGFzcyIsInBhdCIsImZsYWdzIiwiZXh0cmFjdCIsInJleCIsImdldF9zdWJzdHJpbmciLCJnZXRfbmFtZWRfc3Vic3RyaW5nIiwiZ2V0X3N1YnN0cmluZ19vZnMiLCJwbWF0Y2giLCJzdWJzdGl0dXRlIiwic3Vic3QiLCJzcyIsImZpbiIsIm1heCIsInJlc3VsdHMiLCJkZWxpbSIsImZtYXAiLCJmIiwibmlsIiwic2luZ2xldG9uIiwieCIsImNvbnMiLCJ4cyIsImFwcGVuZCIsInkiLCJtYXAiLCJvZl9saXN0IiwibCIsImEiLCJiIiwibWsiLCJjaGlsZHJlbiIsInNlcSIsImNoaWxkcmVuJDAiLCJzZXEkMCIsInJlc3QiLCJxIiwiYXR0cnMiLCJuYW1lIiwidiIsInJlc3QkMCIsInN1Yl9jaGlsZHJlbiIsImNoaWxkcmVuJDEiLCJzZXEkMSIsInMiLCJjaGlsZHJlbiQyIiwic2VxJDIiLCJzJDAiLCJjaGlsZHJlbiQzIiwib2Zfc2VxIiwiYWRkX3Vuc2FmZV9jaGFyIiwiYyIsImVuY29kZV91bnNhZmVfY2hhciIsImVuY29kZV91bnNhZmVfY2hhcl9hbmRfYXQiLCJjb21wb3NlX2RlY2wiLCJvcHQiLCJzdGgiLCJ2ZXJzaW9uIiwic3RoJDAiLCJlbmNvZGluZyIsImNvbXBvc2VfZG9jdHlwZSIsImR0IiwiYXJncyIsInBwX2FyZ3MiLCJmbXQiLCJyZV9lbmRfY29tbWVudCIsInBwX251bWJlciIsInZpbnQiLCJzMSIsInMyIiwibiIsImkiLCJpJDAiLCJuJDAiLCJzdHJpbmdfb2ZfbnVtYmVyIiwibm9ybWFsaXplIiwic3JjIiwid2FybiIsImJ1ZmZlciIsImQiLCJjb2RlIiwibm9ybWFsaXplX2h0bWwiLCJ1IiwidSQwIiwicHBfbm9vcCIsIm9wZW5fYm94IiwiaW5kZW50IiwiY2xvc2VfYm94Iiwic3AiLCJjdXQiLCJzZXQiLCJpc19lbXB0eXRhZyIsInBwX2VuY29kZSIsImVuY29kZSIsInBwX3NlcCIsInBwX2F0dHJpYl92YWx1ZSIsInNsaXN0Iiwic2VwIiwicHBfYXR0cmliIiwicHBfYXR0cmlicyIsInBwX3RhZ19hbmRfYXR0cmlicyIsInRhZyIsInBwX2Nsb3NlZHRhZyIsInBwX3RhZyIsInBwX2VsdHMiLCJwcF9lbHQiLCJlbHQiLCJ0ZXh0ZSIsImciLCJ0ZXh0ZSQwIiwidGV4dGUkMSIsImUiLCJ4aF9hdHRycyIsInhoX3RhZ2xpc3QiLCJ4aF9hdHRycyQwIiwibmFtZSQwIiwicHAiLCJzeW1ib2wiLCJzZXBhcmF0b3JfdG9fc3RyaW5nIiwiYXR0cmliX3ZhbHVlX3RvX3N0cmluZyIsImF0dHJpYl90b19zdHJpbmciLCJ4aF9wcmludF9hdHRycyIsInF1ZXVlIiwiYXR0ciIsInhoX3ByaW50X2Nsb3NlZHRhZyIsInhoX3ByaW50X3RhZyIsInRhZ2xpc3QiLCJ4aF9wcmludF90YWdsaXN0IiwicHJpbnRfbm9kZXMiLCJ0YWdsaXN0JDAiLCJ0YWdsaXN0JDEiLCJwcmludF9saXN0IiwiZm9yZXQiLCJwcmludCIsImRvYyIsImFkdmVydCIsImRvYyQwIiwiYSQwIiwiZG9jJDEiLCJlbXB0eSIsImNvbmNhdCIsImYxIiwiZjIiLCJwdXQiLCJtYWtlIiwib3V0cHV0IiwiYW1hcDEiLCJhdHRyaWJzIiwiZWx0cyIsImF0dHJpYnMkMCIsImFtYXAiLCJhZGRfZmxvYXRfYXR0cmliIiwidmFsdWUiLCJoZWFkIiwidGFpbCIsInRhaWwkMCIsIm1hcF9mbG9hdF9hdHRyaWIiLCJpc19hdHRyaWIiLCJhdXgiLCJhZGRfaW50X2F0dHJpYiIsInJtX2F0dHJpYiIsIm1hcF9pbnRfYXR0cmliIiwiYWRkX3N0cmluZ19hdHRyaWIiLCJtYXBfc3RyaW5nX2F0dHJpYiIsImFkZF9zcGFjZV9zZXBfYXR0cmliIiwidmFsdWVzIiwiYWRkX2NvbW1hX3NlcF9hdHRyaWIiLCJybV9hdHRyaWJfZnJvbV9saXN0IiwiaXNfdmFsdWUiLCJ2YWx1ZXMkMCIsIm1hcF9zdHJpbmdfYXR0cmliX2luX2xpc3QiLCJmb2xkIiwib2ZfZW1wdHkiLCJvZl9jb21tZW50Iiwib2ZfdHh0Iiwib2ZfZW5jb2RlZHBjZGF0YSIsIm9mX2VudGl0eSIsIm9mX2xlYWYiLCJvZl9ub2RlIiwicyQxIiwicyQyIiwiYWxsX2VudGl0aWVzIiwiZW5hbWUiLCJmbGF0bWFwIiwidHJhbnNsYXRlIiwicm9vdF9sZWFmIiwicm9vdF9ub2RlIiwic3ViX2xlYWYiLCJzdWJfbm9kZSIsInVwZGF0ZV9zdGF0ZSIsInN0YXRlIiwiY29udGVudF90eXBlIiwic3RhbmRhcmQiLCJuYW1lc3BhY2UiLCJjc3QkMSIsInN0cmluZ19vZl9pcmkiLCJ0b19zdHJpbmciLCJ1bml0IiwidW5pdCQwIiwiYW5nbGVfbmFtZXMiLCJzdHJpbmdfb2ZfYW5nbGUiLCJsZW5ndGhfbmFtZXMiLCJzdHJpbmdfb2ZfbGVuZ3RoIiwibGlzdCIsInN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyIsInN0cmluZ19vZl9wYWludCIsImlyaSIsInN0cmluZ19vZl9maWxsX3J1bGUiLCJkb2N0eXBlIiwic3RyaW5nX29mX3VyaSIsInVyaV9vZl9zdHJpbmciLCJ0b3QiLCJ0b3RsIiwidG9lbHQiLCJ0b2VsdGwiLCJ0b19hdHRyaWIiLCJudWxsYXJ5IiwidW5hcnkiLCJzdGFyIiwidG9feG1sYXR0cmlicyIsImZsb2F0X2F0dHJpYiIsInN0cmluZ19hdHRyaWIiLCJzdHJpbmdfb2ZfY29vcmQiLCJzdHJpbmdfb2ZfbGVuZ3RocyIsInVzZXJfYXR0cmliIiwiY29sb3JfYXR0cmliIiwibWV0YWRhdGEiLCJmb3JlaWduT2JqZWN0IiwidHh0IiwiYV92ZXJzaW9uIiwiYV9iYXNlUHJvZmlsZSIsImFfeCIsImFfeSIsImFfd2lkdGgiLCJhX2hlaWdodCIsImFfcHJlc2VydmVBc3BlY3RSYXRpbyIsImFfY29udGVudFNjcmlwdFR5cGUiLCJhX2NvbnRlbnRTdHlsZVR5cGUiLCJhX3pvb21BbmRQYW4iLCJhX2hyZWYiLCJhX3hsaW5rX2hyZWYiLCJhX3JlcXVpcmVkRmVhdHVyZXMiLCJhX3JlcXVpcmVkRXh0ZW5zaW9ucyIsImFfc3lzdGVtTGFuZ3VhZ2UiLCJhX2V4dGVybmFsUmVzc291cmNlc1JlcXVpcmVkIiwiYV9pZCIsImFfdXNlcl9kYXRhIiwiYV94bWxfYmFzZSIsImFfeG1sX2xhbmciLCJhX3htbF9zcGFjZSIsImFfdHlwZSIsImFfbWVkaWEiLCJhX3hsaW5rX3RpdGxlIiwiYV9jbGFzcyIsImFfc3R5bGUiLCJhX3RyYW5zZm9ybSIsImFfdmlld0JveCIsImFfZCIsImFfcGF0aExlbmd0aCIsImFfcngiLCJhX3J5IiwiYV9jeCIsImFfY3kiLCJhX3IiLCJhX3gxIiwiYV95MSIsImFfeDIiLCJhX3kyIiwiYV9wb2ludHMiLCJhX3hfbGlzdCIsImFfeV9saXN0IiwiYV9keCIsImFfZHkiLCJhX2R4X2xpc3QiLCJhX2R5X2xpc3QiLCJhX2xlbmd0aEFkanVzdCIsImFfdGV4dExlbmd0aCIsImFfdGV4dF9hbmNob3IiLCJhX3RleHRfZGVjb3JhdGlvbiIsImFfdGV4dF9yZW5kZXJpbmciLCJhX3JvdGF0ZSIsImFfc3RhcnRPZmZzZXQiLCJhX21ldGhvZCIsImFfc3BhY2luZyIsImFfZ2x5cGhSZWYiLCJhX2Zvcm1hdCIsImFfbWFya2VyVW5pdHMiLCJhX3JlZlgiLCJhX3JlZlkiLCJhX21hcmtlcldpZHRoIiwiYV9tYXJrZXJIZWlnaHQiLCJhX29yaWVudCIsImFfbG9jYWwiLCJhX3JlbmRlcmluZ19pbnRlbnQiLCJhX2dyYWRpZW50VW5pdHMiLCJhX2dyYWRpZW50VHJhbnNmb3JtIiwiYV9zcHJlYWRNZXRob2QiLCJhX2Z4IiwiYV9meSIsImFfb2Zmc2V0IiwiYV9wYXR0ZXJuVW5pdHMiLCJhX3BhdHRlcm5Db250ZW50VW5pdHMiLCJhX3BhdHRlcm5UcmFuc2Zvcm0iLCJhX2NsaXBQYXRoVW5pdHMiLCJhX21hc2tVbml0cyIsImFfbWFza0NvbnRlbnRVbml0cyIsImFfcHJpbWl0aXZlVW5pdHMiLCJhX2ZpbHRlclJlcyIsImFfcmVzdWx0IiwiYV9pbiIsImFfaW4yIiwiYV9hemltdXRoIiwiYV9lbGV2YXRpb24iLCJhX3BvaW50c0F0WCIsImFfcG9pbnRzQXRZIiwiYV9wb2ludHNBdFoiLCJhX3NwZWN1bGFyRXhwb25lbnQiLCJhX3NwZWN1bGFyQ29uc3RhbnQiLCJhX2xpbWl0aW5nQ29uZUFuZ2xlIiwiYV9tb2RlIiwiYV9mZUNvbG9yTWF0cml4X3R5cGUiLCJhX3ZhbHVlcyIsImFfdHJhbnNmZXJfdHlwZSIsImFfdGFibGVWYWx1ZXMiLCJhX2ludGVyY2VwdCIsImFfYW1wbGl0dWRlIiwiYV9leHBvbmVudCIsImFfdHJhbnNmZXJfb2Zmc2V0IiwiYV9mZUNvbXBvc2l0ZV9vcGVyYXRvciIsImFfazEiLCJhX2syIiwiYV9rMyIsImFfazQiLCJhX29yZGVyIiwiYV9rZXJuZWxNYXRyaXgiLCJhX2Rpdmlzb3IiLCJhX2JpYXMiLCJhX2tlcm5lbFVuaXRMZW5ndGgiLCJhX3RhcmdldFgiLCJhX3RhcmdldFkiLCJhX2VkZ2VNb2RlIiwiYV9wcmVzZXJ2ZUFscGhhIiwiYV9zdXJmYWNlU2NhbGUiLCJhX2RpZmZ1c2VDb25zdGFudCIsImFfc2NhbGUiLCJhX3hDaGFubmVsU2VsZWN0b3IiLCJhX3lDaGFubmVsU2VsZWN0b3IiLCJhX3N0ZERldmlhdGlvbiIsImFfZmVNb3JwaG9sb2d5X29wZXJhdG9yIiwiYV9yYWRpdXMiLCJhX2Jhc2VGcmVucXVlbmN5IiwiYV9udW1PY3RhdmVzIiwiYV9zZWVkIiwiYV9zdGl0Y2hUaWxlcyIsImFfZmVUdXJidWxlbmNlX3R5cGUiLCJhX3hsaW5rX3Nob3ciLCJhX3hsaW5rX2FjdHVhdGUiLCJhX3RhcmdldCIsImFfdmlld1RhcmdldCIsImFfYXR0cmlidXRlTmFtZSIsImFfYXR0cmlidXRlVHlwZSIsImFfYmVnaW4iLCJhX2R1ciIsImFfbWluIiwiYV9tYXgiLCJhX3Jlc3RhcnQiLCJhX3JlcGVhdENvdW50IiwiYV9yZXBlYXREdXIiLCJhX2ZpbGwiLCJhX2FuaW1hdGlvbl9maWxsIiwiYV9maWxsX3J1bGUiLCJhX2NhbGNNb2RlIiwiYV9hbmltYXRpb25fdmFsdWVzIiwiYV9rZXlUaW1lcyIsImFfa2V5U3BsaW5lcyIsImFfZnJvbSIsImFfdG8iLCJhX2J5IiwiYV9hZGRpdGl2ZSIsImFfYWNjdW11bGF0ZSIsImFfa2V5UG9pbnRzIiwiYV9wYXRoIiwiYV9hbmltYXRlVHJhbnNmb3JtX3R5cGUiLCJhX2hvcml6X29yaWdpbl94IiwiYV9ob3Jpel9vcmlnaW5feSIsImFfaG9yaXpfYWR2X3giLCJhX3ZlcnRfb3JpZ2luX3giLCJhX3ZlcnRfb3JpZ2luX3kiLCJhX3ZlcnRfYWR2X3kiLCJhX3VuaWNvZGUiLCJhX2dseXBoX25hbWUiLCJhX29yaWVudGF0aW9uIiwiYV9hcmFiaWNfZm9ybSIsImFfbGFuZyIsImFfdTEiLCJhX3UyIiwiYV9nMSIsImFfZzIiLCJhX2siLCJhX2ZvbnRfZmFtaWx5IiwiYV9mb250X3N0eWxlIiwiYV9mb250X3ZhcmlhbnQiLCJhX2ZvbnRfd2VpZ2h0IiwiYV9mb250X3N0cmV0Y2giLCJhX2ZvbnRfc2l6ZSIsImFfdW5pY29kZV9yYW5nZSIsImFfdW5pdHNfcGVyX2VtIiwiYV9zdGVtdiIsImFfc3RlbWgiLCJhX3Nsb3BlIiwiYV9jYXBfaGVpZ2h0IiwiYV94X2hlaWdodCIsImFfYWNjZW50X2hlaWdodCIsImFfYXNjZW50IiwiYV93aWR0aHMiLCJhX2Jib3giLCJhX2lkZW9ncmFwaGljIiwiYV9hbHBoYWJldGljIiwiYV9tYXRoZW1hdGljYWwiLCJhX2hhbmdpbmciLCJhX3ZpZGVvZ3JhcGhpYyIsImFfdl9hbHBoYWJldGljIiwiYV92X21hdGhlbWF0aWNhbCIsImFfdl9oYW5naW5nIiwiYV91bmRlcmxpbmVfcG9zaXRpb24iLCJhX3VuZGVybGluZV90aGlja25lc3MiLCJhX3N0cmlrZXRocm91Z2hfcG9zaXRpb24iLCJhX3N0cmlrZXRocm91Z2hfdGhpY2tuZXNzIiwiYV9vdmVybGluZV9wb3NpdGlvbiIsImFfb3ZlcmxpbmVfdGhpY2tuZXNzIiwiYV9zdHJpbmciLCJhX25hbWUiLCJhX2FsaWdubWVudF9iYXNlbGluZSIsImFfZG9taW5hbnRfYmFzZWxpbmUiLCJhX29uYWJvcnQiLCJhX29uYWN0aXZhdGUiLCJhX29uYmVnaW4iLCJhX29uZW5kIiwiYV9vbmVycm9yIiwiYV9vbmZvY3VzaW4iLCJhX29uZm9jdXNvdXQiLCJhX29ubG9hZCIsImFfb25yZXBlYXQiLCJhX29ucmVzaXplIiwiYV9vbnNjcm9sbCIsImFfb251bmxvYWQiLCJhX29uem9vbSIsImFfb25jbGljayIsImFfb25tb3VzZWRvd24iLCJhX29ubW91c2V1cCIsImFfb25tb3VzZW92ZXIiLCJhX29ubW91c2VvdXQiLCJhX29ubW91c2Vtb3ZlIiwiYV9vbnRvdWNoc3RhcnQiLCJhX29udG91Y2hlbmQiLCJhX29udG91Y2htb3ZlIiwiYV9vbnRvdWNoY2FuY2VsIiwiYV9zdG9wX2NvbG9yIiwiYV9zdG9wX29wYWNpdHkiLCJhX3N0cm9rZSIsImFfc3Ryb2tlX3dpZHRoIiwiYV9zdHJva2VfbGluZWNhcCIsImFfc3Ryb2tlX2xpbmVqb2luIiwiYV9zdHJva2VfbWl0ZXJsaW1pdCIsImFfc3Ryb2tlX2Rhc2hhcnJheSIsImFfc3Ryb2tlX2Rhc2hvZmZzZXQiLCJhX3N0cm9rZV9vcGFjaXR5Iiwic3ZnIiwiZGVmcyIsImRlc2MiLCJ0aXRsZSIsInVzZSIsImltYWdlIiwic3dpdGNoJDAiLCJzdHlsZSIsInBhdGgiLCJyZWN0IiwiY2lyY2xlIiwiZWxsaXBzZSIsImxpbmUiLCJwb2x5bGluZSIsInBvbHlnb24iLCJ0ZXh0IiwidHNwYW4iLCJ0cmVmIiwidGV4dFBhdGgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiZ2x5cGhSZWYiLCJtYXJrZXIiLCJjb2xvcl9wcm9maWxlIiwibGluZWFyR3JhZGllbnQiLCJyYWRpYWxHcmFkaWVudCIsInN0b3AiLCJwYXR0ZXJuIiwiY2xpcFBhdGgiLCJmaWx0ZXIiLCJmZURpc3RhbnRMaWdodCIsImZlUG9pbnRMaWdodCIsImZlU3BvdExpZ2h0IiwiZmVCbGVuZCIsImZlQ29sb3JNYXRyaXgiLCJmZUNvbXBvbmVudFRyYW5zZmVyIiwiZmVGdW5jQSIsImZlRnVuY0ciLCJmZUZ1bmNCIiwiZmVGdW5jUiIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2h0aW5nIiwiZmVEaXNwbGFjZW1lbnRNYXAiLCJmZUZsb29kIiwiZmVHYXVzc2lhbkJsdXIiLCJmZUltYWdlIiwiZmVNZXJnZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVUaWxlIiwiZmVUdXJidWxlbmNlIiwiY3Vyc29yIiwidmlldyIsInNjcmlwdCIsImFuaW1hdGUiLCJhbmltYXRlTW90aW9uIiwibXBhdGgiLCJhbmltYXRlQ29sb3IiLCJhbmltYXRlVHJhbnNmb3JtIiwiZm9udCIsImdseXBoIiwibWlzc2luZ19nbHlwaCIsImhrZXJuIiwidmtlcm4iLCJmb250X2ZhY2UiLCJmb250X2ZhY2Vfc3JjIiwiZm9udF9mYWNlX3VyaSIsImZvbnRfZmFjZV9mb3JtYXQiLCJmb250X2ZhY2VfbmFtZSIsImRvY190b2VsdCIsImRhdGEiLCJsZWFmIiwibm9kZSIsImNvZXJjZV9lbHQiLCJmbG9hdF9hdHRyaWIkMCIsImludF9hdHRyaWIiLCJzdHJpbmdfYXR0cmliJDAiLCJ1cmlfYXR0cmliIiwic3BhY2Vfc2VwX2F0dHJpYiIsImNvbW1hX3NlcF9hdHRyaWIiLCJzdHJpbmdfb2ZfYWxpZ25tZW50X2Jhc2VsaW5lIiwic3RyaW5nX29mX2JpZ192YXJpYW50Iiwic3RyaW5nX29mX2Jvb2wiLCJzdHJpbmdfb2ZfY29vcmRzIiwic3RyaW5nX29mX2RvbWluYW50X2Jhc2VsaW5lIiwic3RyaW5nX29mX2luX3ZhbHVlIiwic3RyaW5nX29mX2ludCIsInN0cmluZ19vZl9wZXJjZW50YWdlIiwic3RyaW5nX29mX2ZvdXJmbG9hdHMiLCJzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWIiLCJzdHJpbmdfb2ZfbnVtYmVycyIsInN0cmluZ19vZl9udW1iZXJzX3NlbWljb2xvbiIsInN0cmluZ19vZl9vZmZzZXQiLCJ4JDAiLCJzdHJpbmdfb2Zfb3JpZW50Iiwic3RyaW5nX29mX3N0cm9rZWRhc2hhcnJheSIsInN0cmluZ19vZl90cmFuc2Zvcm0iLCJ4JDIiLCJhbmdsZSIsImFuZ2xlJDAiLCJhbmdsZSQxIiwieCQxIiwic3RyaW5nX29mX3RyYW5zZm9ybXMiLCJhbHRlcm5hdGl2ZV9jb250ZW50X3R5cGVzIiwiZW1wdHl0YWdzIiwiYm9vbF9hdHRyaWIiLCJjb25zdGFudF9hdHRyaWIiLCJsaW5rdHlwZXNfYXR0cmliIiwibWVkaWFkZXNjX2F0dHJpYiIsInNyY3NldF9hdHRyaWIiLCJhX3RpdGxlIiwiYV9wcm9wZXJ0eSIsImFfb25hZnRlcnByaW50IiwiYV9vbmJlZm9yZXByaW50IiwiYV9vbmJlZm9yZXVubG9hZCIsImFfb25ibHVyIiwiYV9vbmNhbnBsYXkiLCJhX29uY2FucGxheXRocm91Z2giLCJhX29uY2hhbmdlIiwiYV9vbmNsb3NlIiwiYV9vbmR1cmF0aW9uY2hhbmdlIiwiYV9vbmVtcHRpZWQiLCJhX29uZW5kZWQiLCJhX29uZm9jdXMiLCJhX29uZm9ybWNoYW5nZSIsImFfb25mb3JtaW5wdXQiLCJhX29uaGFzaGNoYW5nZSIsImFfb25pbnB1dCIsImFfb25pbnZhbGlkIiwiYV9vbm9mZmxpbmUiLCJhX29ub25saW5lIiwiYV9vbnBhdXNlIiwiYV9vbnBsYXkiLCJhX29ucGxheWluZyIsImFfb25wYWdlaGlkZSIsImFfb25wYWdlc2hvdyIsImFfb25wb3BzdGF0ZSIsImFfb25wcm9ncmVzcyIsImFfb25yYXRlY2hhbmdlIiwiYV9vbnJlYWR5c3RhdGVjaGFuZ2UiLCJhX29ucmVkbyIsImFfb25zZWVrZWQiLCJhX29uc2Vla2luZyIsImFfb25zZWxlY3QiLCJhX29uc2hvdyIsImFfb25zdGFsbGVkIiwiYV9vbnN0b3JhZ2UiLCJhX29uc3VibWl0IiwiYV9vbnN1c3BlbmQiLCJhX29udGltZXVwZGF0ZSIsImFfb251bmRvIiwiYV9vbnZvbHVtZWNoYW5nZSIsImFfb253YWl0aW5nIiwiYV9vbmxvYWRlZGRhdGEiLCJhX29ubG9hZGVkbWV0YWRhdGEiLCJhX29ubG9hZHN0YXJ0IiwiYV9vbm1lc3NhZ2UiLCJhX29ubW91c2V3aGVlbCIsImFfb25jb250ZXh0bWVudSIsImFfb25kYmxjbGljayIsImFfb25kcmFnIiwiYV9vbmRyYWdlbmQiLCJhX29uZHJhZ2VudGVyIiwiYV9vbmRyYWdsZWF2ZSIsImFfb25kcmFnb3ZlciIsImFfb25kcmFnc3RhcnQiLCJhX29uZHJvcCIsImFfb25rZXlwcmVzcyIsImFfb25rZXlkb3duIiwiYV9vbmtleXVwIiwiYV94bWxucyIsImFfbWFuaWZlc3QiLCJhX2NpdGUiLCJhX2FjY2Vzc2tleSIsImFfY2hhcnNldCIsImFfYWNjZXB0X2NoYXJzZXQiLCJhX2FjY2VwdCIsImFfaHJlZmxhbmciLCJhX2Rvd25sb2FkIiwiZmlsZSIsImFfcmVsIiwiYV90YWJpbmRleCIsImFfbWltZV90eXBlIiwiYV9hbHQiLCJwIiwiYV9zcmMiLCJhX2xhYmVsX2ZvciIsImFfb3V0cHV0X2ZvciIsImFfc2VsZWN0ZWQiLCJhX3RleHRfdmFsdWUiLCJhX2ludF92YWx1ZSIsImFfdmFsdWUiLCJhX2Zsb2F0X3ZhbHVlIiwiYV9hY3Rpb24iLCJhX2Zvcm1tZXRob2QiLCJhX2VuY3R5cGUiLCJhX2NoZWNrZWQiLCJhX2Rpc2FibGVkIiwiYV9yZWFkb25seSIsImFfbWF4bGVuZ3RoIiwiYV9taW5sZW5ndGgiLCJhX2FsbG93ZnVsbHNjcmVlbiIsImFfYWxsb3dwYXltZW50cmVxdWVzdCIsImFfcmVmZXJyZXJwb2xpY3kiLCJhX2F1dG9jb21wbGV0ZSIsImFfYXN5bmMiLCJhX2F1dG9mb2N1cyIsImFfYXV0b3BsYXkiLCJhX211dGVkIiwiYV9jcm9zc29yaWdpbiIsImFfaW50ZWdyaXR5IiwiYV9tZWRpYWdyb3VwIiwiYV9jaGFsbGVuZ2UiLCJhX2NvbnRlbnRlZGl0YWJsZSIsImNlIiwiYV9jb250ZXh0bWVudSIsImFfY29udHJvbHMiLCJhX2RpciIsImFfZHJhZ2dhYmxlIiwiYV9mb3JtIiwiYV9mb3JtYWN0aW9uIiwiYV9mb3JtZW5jdHlwZSIsImFfZm9ybW5vdmFsaWRhdGUiLCJhX2Zvcm10YXJnZXQiLCJhX2hpZGRlbiIsImFfaGlnaCIsImFfaWNvbiIsImFfaXNtYXAiLCJhX2tleXR5cGUiLCJhX2xpc3QiLCJhX2xvb3AiLCJhX2xvdyIsImFfaW5wdXRfbWF4IiwiYV9pbnB1dF9taW4iLCJhX2lucHV0bW9kZSIsImFfbm92YWxpZGF0ZSIsImFfb3BlbiIsImFfb3B0aW11bSIsImFfcGF0dGVybiIsImFfcGxhY2Vob2xkZXIiLCJhX3Bvc3RlciIsImFfcHJlbG9hZCIsImFfcHViZGF0ZSIsImFfcmFkaW9ncm91cCIsImFfcmVxdWlyZWQiLCJhX3JldmVyc2VkIiwiYV9zYW5kYm94IiwiYV9zcGVsbGNoZWNrIiwic2MiLCJhX3Njb3BlZCIsImFfc2VhbWxlc3MiLCJhX3NpemVzIiwic2l6ZXMiLCJhX3NwYW4iLCJhX3NyY2xhbmciLCJhX3NyY3NldCIsImFfaW1nX3NpemVzIiwiYV9zdGFydCIsImFfc3RlcCIsInN0ZXAiLCJhX3RyYW5zbGF0ZSIsImFfd3JhcCIsImFfc2l6ZSIsImFfaW5wdXRfdHlwZSIsIml0IiwiYV9tZW51X3R5cGUiLCJhX2NvbW1hbmRfdHlwZSIsImFfYnV0dG9uX3R5cGUiLCJidCIsImFfc2NyaXB0X3R5cGUiLCJhX211bHRpcGxlIiwiYV9jb2xzIiwiYV9yb3dzIiwiYV9zdW1tYXJ5IiwiYV9hbGlnbiIsImFfYXhpcyIsImFfY29sc3BhbiIsImFfaGVhZGVycyIsImFfcm93c3BhbiIsImFfc2NvcGUiLCJhX2JvcmRlciIsImFfcnVsZXMiLCJhX2NoYXIiLCJhX2RhdGEiLCJhX2NvZGV0eXBlIiwiYV9mcmFtZWJvcmRlciIsImFfbWFyZ2luaGVpZ2h0IiwiYV9tYXJnaW53aWR0aCIsImFfc2Nyb2xsaW5nIiwiYV9jb250ZW50IiwiYV9odHRwX2VxdWl2IiwiYV9yb2xlIiwiYV9hcmlhIiwidGVybWluYWwiLCJwbHVzIiwib3B0aW9uX2NvbnMiLCJib2R5IiwiaHRtbCIsImNvbnRlbnQiLCJmb290ZXIiLCJoZWFkZXIiLCJzZWN0aW9uIiwibmF2IiwiZW50aXR5Iiwic3BhY2UiLCJjZGF0YSIsImNkYXRhX3NjcmlwdCIsImNkYXRhX3N0eWxlIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGdyb3VwIiwiYWRkcmVzcyIsImJsb2NrcXVvdGUiLCJkaWFsb2ciLCJkaXYiLCJwcmUiLCJhYmJyIiwiYnIiLCJjaXRlIiwiZGZuIiwiZW0iLCJrYmQiLCJzYW1wIiwic3BhbiIsInN0cm9uZyIsInRpbWUiLCJ2YXIkMCIsImRsIiwib2wiLCJ1bCIsImRkIiwibGkiLCJociIsInNtYWxsIiwic3ViIiwic3VwIiwibWFyayIsInJwIiwicnQiLCJydWJ5Iiwid2JyIiwiYmRvIiwiZGlyIiwiYV9kYXRldGltZSIsImFfc2hhcGUiLCJhX2Nvb3JkcyIsImNvb3JkcyIsImFfdXNlbWFwIiwiYV9kZWZlciIsImFfbGFiZWwiLCJhcmVhIiwiYWx0IiwiZGVsIiwiaW5zIiwibm9zY3JpcHQiLCJ0ZW1wbGF0ZSIsImFydGljbGUiLCJhc2lkZSIsIm1haW4iLCJ2aWRlb19hdWRpbyIsInNyY3MiLCJ1cmkiLCJzcmNzJDAiLCJhdWRpbyIsInZpZGVvIiwiY2FudmFzIiwiY29tbWFuZCIsImxhYmVsIiwibWVudSIsImVtYmVkIiwic291cmNlIiwibWV0ZXIiLCJvdXRwdXRfZWx0IiwiZm9ybSIsImlucHV0Iiwia2V5Z2VuIiwib3B0aW9uIiwic2VsZWN0IiwidGV4dGFyZWEiLCJidXR0b24iLCJkYXRhbGlzdCIsInByb2dyZXNzIiwibGVnZW5kIiwiZGV0YWlscyIsInN1bW1hcnkiLCJmaWVsZHNldCIsIm9wdGdyb3VwIiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImMkMCIsImNhcHRpb24iLCJ0YWJsZXgiLCJjb2x1bW5zIiwidGhlYWQiLCJ0Zm9vdCIsImNvbHVtbnMkMCIsImNvbnRlbnQkMCIsImNvbnRlbnQkMSIsInRkIiwidGgiLCJ0ciIsImNvbGdyb3VwIiwiY29sIiwidGJvZHkiLCJpZnJhbWUiLCJvYmplY3QiLCJwYXJhbXMiLCJlbHRzJDAiLCJpbWciLCJwaWN0dXJlIiwidGFpbF9ub2RlIiwibWV0YSIsImxpbmsiLCJyZWwiLCJocmVmIiwiYmFzZSIsInBhcmFtIiwiaW50X2F0dHJpYiQwIiwidXJpX2F0dHJpYiQwIiwic3BhY2Vfc2VwX2F0dHJpYiQwIiwiY29tbWFfc2VwX2F0dHJpYiQwIiwic3RyaW5nX29mX3NhbmRib3hfdG9rZW4iLCJzdHJpbmdfb2ZfbGlua3R5cGUiLCJzdHJpbmdfb2ZfbWVkaWFkZXNjX3Rva2VuIiwic3RyaW5nX29mX3JlZmVycmVycG9saWN5Iiwic3RyaW5nX29mX2lucHV0X3R5cGUiLCJzdHJpbmdfb2Zfc2NyaXB0X3R5cGUiLCJzdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lIiwidCIsInN0cmluZ19vZl9jaGFyYWN0ZXIiLCJvbm9mZl9vZl9ib29sIiwidW5vcHRpb25fc3RyaW5nIiwic3RyaW5nX29mX3N0ZXAiLCJzdHJpbmdfb2Zfc2l6ZXMiLCJzdHJpbmdfb2Zfc2FuZGJveCIsInN0cmluZ19vZl9tZWRpYWRlc2MiLCJzdHJpbmdfb2ZfbGlua3R5cGVzIiwic3RyaW5nX29mX3NyY3NldCIsInVybCIsInVybCQwIiwidiQwIiwidXJsJDEiLCJzdHJpbmdfb2ZfYXV0b2NvbXBsZXRlIiwic3RycyIsInVyaV9vZl9zdHJpbmciLCJzIiwic3RyaW5nX29mX3VyaSIsImFjb250ZW50IiwiYSIsImFuYW1lIiwibmFtZSIsImZsb2F0X2F0dHJpYiIsInZhbHVlIiwiaW50X2F0dHJpYiIsInN0cmluZ19hdHRyaWIiLCJzcGFjZV9zZXBfYXR0cmliIiwidmFsdWVzIiwiY29tbWFfc2VwX2F0dHJpYiIsImV2ZW50X2hhbmRsZXJfYXR0cmliIiwibW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidXJpX2F0dHJpYiIsInVyaXNfYXR0cmliIiwiY29udGVudCIsImVsdCIsImVtcHR5IiwiY29tbWVudCIsImMiLCJwY2RhdGEiLCJkIiwiZW5jb2RlZHBjZGF0YSIsImVudGl0eSIsImUiLCJyZV9lbmRfY2RhdGEiLCJlbmNvZGVkX2NkYXRhIiwiczEiLCJzMiIsImNkYXRhIiwiY2RhdGFfc2NyaXB0IiwiY2RhdGFfc3R5bGUiLCJsZWFmIiwib3B0Iiwic3RoIiwibm9kZSIsImNoaWxkcmVuIiwicHJpbnQiLCJmbXQiLCJ4IiwicHAkMCIsInBwX2VsdCQwIiwibWVyZ2UiLCJtYXBfcGF0Y2giLCJtYXBfZGF0YSIsImVtcHR5IiwiY3JlYXRlIiwibCIsInNlbmQiLCJpbml0aWFsX2V2ZW50IiwiY3VycmVudCIsIm1zZyIsInAiLCJldmVudCIsImZyb21fZXZlbnQiLCJjb25zdCQwIiwieCIsIm1hcF9tc2ciLCJmIiwibWFwIiwicyIsInMkMCIsIm1zZyQwIiwidmFsdWUiLCJjIiwicGF0Y2giLCJzZXQiLCJmb2xkIiwiYWNjIiwiYWNjJDAiLCJzaWduYWwiLCJvcHQiLCJzdGgiLCJlcSIsImwkMCIsImZyb21fc2lnbmFsIiwiZCQwIiwiZCIsImkiLCJpJDAiLCJ4JDAiLCJpJDEiLCJqIiwiaSQyIiwicCQ1IiwibCQ3IiwibiIsInAkMyIsImkkMyIsInAkNCIsImwkMiIsIm9wIiwieHMiLCJuJDAiLCJhY2MkMSIsIm4kMSIsImwkMSIsInhzJDAiLCJ4JDEiLCJuJDIiLCJhY2MkMiIsIngkMiIsImkkNCIsImEiLCJvZmZzZXQiLCJpJDUiLCJhJDAiLCJsZW4iLCJpJDYiLCJ2IiwiaiQwIiwiaTAiLCJoIiwicCQwIiwiaTAkMCIsImwkMyIsInAkMSIsImkwJDEiLCJsJDQiLCJwJDIiLCJpMCQyIiwibCQ1IiwibCQ2IiwiZXF1YWwiLCJsMSIsImwyIiwibDEkMCIsImwyJDAiLCJ4MiIsImwxJDEiLCJ4MSIsImwyJDEiLCJtZW0iLCJoYXNoIiwiZGlmZiIsInN0aCQwIiwibHgkMSIsImx5JDMiLCJhZGQiLCJyZW1vdmUiLCJtZW14IiwibWVteSIsImxlZnQiLCJseCIsImx5IiwibHgkMCIsInkiLCJseSQwIiwibHkkMSIsImFjYyQzIiwiYWNjJDQiLCJseSQyIiwieSQwIiwiYWNjJDUiLCJuJDMiLCJhY2MkNiIsImFjYyQ3Iiwib3B0JDAiLCJlbXB0eSQwIiwiY29ucyIsInNub2MiLCJpbnNlcnQiLCJ1cGRhdGUiLCJtb3ZlIiwiaW5kZXgiLCJoZCIsInRsIiwidXBkYXRlX2VxIiwiaGFuZGxlIiwiZGF0YSIsInJlbW92ZV9sYXN0IiwicmVtb3ZlX2VxIiwic2luZ2xldG9uIiwic2luZ2xldG9uX3MiLCJmaXJzdCIsImUiLCJyZXN1bHQiLCJjb25jYXQiLCJ2MSIsInYyIiwic2l6ZTEiLCJzaXplMiIsInNpemVfd2l0aF9wYXRjaCIsInNpemV4Iiwic2l6ZV93aXRoX3NldCIsInBvcyIsIm0iLCJwb3MkMCIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInVwZGF0ZV9wYXRjaDEiLCJ1cGRhdGVfcGF0Y2gyIiwicDEiLCJwMiIsInR1cGxlX2V2IiwicDIkMiIsInAyJDMiLCJwMSQwIiwicDIkMCIsInMyIiwiczEiLCJwMSQxIiwiczIkMCIsInAyJDEiLCJtZXJnZWRfZXYiLCJpbnZlcnNlIiwicmV2IiwidCIsImZpbHRlciIsInByZWQiLCJzaXplIiwiZmlsdGVyX2xpc3QiLCJyZXMiLCJ0aGVpcl9pIiwibXlfaSIsIm15X2kkMCIsInRoZWlyX2kkMCIsInJlcyQwIiwidGhlaXJfaSQxIiwibm9ybWFsaXNlIiwidXBkYXRlX2luZGV4X2luc2VydCIsImluc2VydF9wb3NfZnVsbF9saXN0IiwidmlzaWJsZSIsImluc2VydF9wb3NfZnVsbF9saXN0JDAiLCJ1cGRhdGFibGVzIiwiZGlzcGxhY2VkIiwibGVmdF9hbG9uZSIsImRpc3BsYWNlZF9pbl9maWx0ZXJlZCIsInVwZGF0YWJsZXMkMCIsInVwZGF0ZV9qIiwial9mdWxsX2xpc3QiLCJqX2ZpbHRlcmVkX2xpc3QiLCJuZXdfal9maWx0ZXJlZCIsImluc2VydF9wb3NfZmlsdGVyZWQiLCJ1cGRhdGVfaW5kZXhfbW92ZSIsImZyb21fZnVsbF9saXN0IiwidG9fZnVsbF9saXN0IiwidG9fZmlsdGVyZWQiLCJ3YXNfdmlzaWJsZSIsImZvcndhcmQiLCJpX2Z1bGwiLCJkZWx0YSIsImlfZmlsdGVyZWQiLCJuZXdfdmFsIiwiaV9mdWxsJDAiLCJkZWx0YSQwIiwiaV9maWx0ZXJlZCQwIiwibmV3X3ZhbCQwIiwidG9fZmlsdGVyZWQkMCIsImNvbnZlcnRfcCIsInJlbW92ZV9wb3NfZnVsbF9saXN0IiwicmV0IiwibmV3X2oiLCJsYXN0X2kiLCJ1cGRhdGVfcG9zX2Z1bGxfbGlzdCIsIm9sZF9qIiwidXBkYXRlX2okMCIsInVwZGF0YWJsZXMkMSIsIm5vbmUiLCJ1cGRhdGVfaiQxIiwicHJldmlvdXNfcG9zX2ZpbHRlcmVkIiwibmV3X3Bvc19maWx0ZXJlZF9saXN0Iiwib2Zmc2V0X2Z1bGwiLCJvcmlnaW5fZnVsbCIsIm9yaWdpbl9mdWxsJDAiLCJkZXN0X2Z1bGwiLCJvcmlnaW5fZmlsdGVyZWQiLCJkZXN0X2ZpbHRlcmVkIiwic21hbGxfb25lcyIsImZpbHRlcl9lIiwiZm9yX2FsbCIsImZuIiwibWF5YmVfdXBkYXRlIiwiaW5pdCIsInVwZGF0ZV9pZHhfYWZ0ZXIiLCJ1cGRhdGVzIiwidiQwIiwiayIsImskMCIsImciLCJrZXkiLCJ3IiwidyQwIiwidiQxIiwiZyQwIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJyZWJ1aWxkX25vZGUiLCJvZl9lbGVtZW50IiwiZWx0Iiwib2Zfbm9kZSIsIm9mX3BjZGF0YSIsIm9mX2h0bWwiLCJvZl9oZWFkIiwib2ZfbGluayIsIm9mX3RpdGxlIiwib2ZfbWV0YSIsIm9mX2Jhc2UiLCJvZl9zdHlsZSIsIm9mX2JvZHkiLCJvZl9mb3JtIiwib2Zfb3B0Z3JvdXAiLCJvZl9vcHRpb24iLCJvZl9zZWxlY3QiLCJvZl9pbnB1dCIsIm9mX3RleHRhcmVhIiwib2ZfYnV0dG9uIiwib2ZfbGFiZWwiLCJvZl9maWVsZHNldCIsIm9mX2xlZ2VuZCIsIm9mX3VsIiwib2Zfb2wiLCJvZl9kbCIsIm9mX2xpIiwib2ZfZGl2Iiwib2ZfcCIsIm9mX2hlYWRpbmciLCJvZl9ibG9ja3F1b3RlIiwib2ZfcHJlIiwib2ZfYnIiLCJvZl9ociIsIm9mX2lucyIsIm9mX2RlbCIsIm9mX2EiLCJvZl9pbWciLCJvZl9vYmplY3QiLCJvZl9wYXJhbSIsIm9mX2FyZWEiLCJvZl9tYXAiLCJvZl9zY3JpcHQiLCJvZl90ZCIsIm9mX3RyIiwib2ZfY29sIiwib2ZfdGZvb3QiLCJvZl90aGVhZCIsIm9mX3Rib2R5Iiwib2ZfY2FwdGlvbiIsIm9mX3RhYmxlIiwib2ZfY2FudmFzIiwib2ZfaWZyYW1lIiwib2ZfYXVkaW8iLCJvZl92aWRlbyIsIm9mX2gxIiwib2ZfaDIiLCJvZl9oMyIsIm9mX2g0Iiwib2ZfaDUiLCJvZl9oNiIsIm9mX2FiYnIiLCJvZl9hZGRyZXNzIiwib2ZfYXJ0aWNsZSIsIm9mX2FzaWRlIiwib2ZfYiIsIm9mX2JkbyIsIm9mX2NpdGUiLCJvZl9jb2RlIiwib2ZfY29sZ3JvdXAiLCJvZl9jb21tYW5kIiwib2ZfZGF0YWxpc3QiLCJvZl9kZCIsIm9mX2RldGFpbHMiLCJvZl9kZm4iLCJvZl9kdCIsIm9mX2VtIiwib2ZfZW1iZWQiLCJvZl9maWdjYXB0aW9uIiwib2ZfZmlndXJlIiwib2ZfZm9vdGVyIiwib2ZfaGVhZGVyIiwib2ZfaGdyb3VwIiwib2ZfaSIsIm9mX2tiZCIsIm9mX2tleWdlbiIsIm9mX21haW4iLCJvZl9tYXJrIiwib2ZfbWVudSIsIm9mX21ldGVyIiwib2ZfbmF2Iiwib2Zfbm9zY3JpcHQiLCJvZl9vdXRwdXQiLCJvZl9wcm9ncmVzcyIsIm9mX3EiLCJvZl9ycCIsIm9mX3J0Iiwib2ZfcnVieSIsIm9mX3NhbXAiLCJvZl9zZWN0aW9uIiwib2Zfc21hbGwiLCJvZl9zb3VyY2UiLCJvZl9zcGFuIiwib2Zfc3Ryb25nIiwib2Zfc3ViIiwib2Zfc3VtbWFyeSIsIm9mX3N1cCIsIm9mX3RoIiwib2ZfdGltZSIsIm9mX3UiLCJvZl92YXIiLCJvZl93YnIiLCJvZl9vcHRHcm91cCIsIm9mX3RleHRBcmVhIiwib2ZfZmllbGRTZXQiLCJvZl91TGlzdCIsIm9mX29MaXN0Iiwib2ZfZExpc3QiLCJvZl9wYXJhZ3JhcGgiLCJvZl9xdW90ZSIsIm9mX21vZCIsIm9mX2FuY2hvciIsIm9mX2ltYWdlIiwib2ZfdGFibGVDZWxsIiwib2ZfdGFibGVSb3ciLCJvZl90YWJsZUNvbCIsIm9mX3RhYmxlU2VjdGlvbiIsIm9mX3RhYmxlQ2FwdGlvbiIsIm9mX2lGcmFtZSIsIndlYWtNYXAiLCJtYXAiLCJyZXRhaW4iLCJub2RlIiwia2VlcG1lIiwicHJldiIsInVyaV9vZl9zdHJpbmciLCJzIiwic3RyaW5nX29mX3VyaSIsImF0dHIiLCJuYW1lIiwidiIsImZsb2F0X2F0dHJpYiIsInZhbHVlIiwiaW50X2F0dHJpYiIsInN0cmluZ19hdHRyaWIiLCJzcGFjZV9zZXBfYXR0cmliIiwidmFsdWVzIiwiY29tbWFfc2VwX2F0dHJpYiIsImV2ZW50X2hhbmRsZXJfYXR0cmliIiwibW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidXJpX2F0dHJpYiIsInVyaXNfYXR0cmliIiwiZW1wdHkiLCJjb21tZW50IiwiYyIsInBjZGF0YSIsImVuY29kZWRwY2RhdGEiLCJzdHJpbmdfZm9sZCIsInBvcyIsImluaXQiLCJmIiwiciIsImkiLCJpbnZhbGlkX2VudGl0eSIsImUiLCJwYXJzZV9pbnQiLCJiYXNlIiwiYWNjIiwiZCIsImVudGl0eSIsImxlbiIsInN0ciIsIml0ZXJfcHJvcF9wcm90ZWN0ZWQiLCJuIiwiYXR0YWNoX2F0dHJpYnMiLCJsIiwiYXR0IiwibiQwIiwiaCIsImV2IiwiaCQwIiwiaCQxIiwiaCQyIiwiYSIsImxlYWYiLCJvcHQiLCJzdGgiLCJjaGlsZHJlbiIsImNkYXRhIiwiY2RhdGFfc2NyaXB0IiwiY2RhdGFfc3R5bGUiLCJsZWFmJDAiLCJub2RlJDAiLCJlbHQkMCIsImFkZF90byIsImNvbnRlbnQiLCJrZWVwIiwiaWQiLCJib2R5IiwiaGVhZCIsImh0bWwiLCJyZXR1cm4kMCIsImZtYXAiLCJuaWwiLCJzaW5nbGV0b24iLCJjb25zIiwieHMiLCJtYXAkMCIsImFwcGVuZCIsImluc2VydEF0IiwiZG9tIiwicmVtb3ZlQ2hpbGRyZW4iLCJ1cGRhdGVfY2hpbGRyZW4iLCJub2RlcyIsIm1zZyIsInAiLCJpJDAiLCJpJDEiLCJpJDIiLCJ4JDAiLCJpJDMiLCJpJDQiLCJvbGQiLCJtb3ZlIiwiaSQ1IiwiaSQ2IiwiaSQ3IiwiZmlsdGVyX2F0dHJpYiIsIm9uIiwiYSQwIiwiYXR0ciQwIiwiZmxvYXRfYXR0cmliJDAiLCJpbnRfYXR0cmliJDAiLCJzdHJpbmdfYXR0cmliJDAiLCJzcGFjZV9zZXBfYXR0cmliJDAiLCJjb21tYV9zZXBfYXR0cmliJDAiLCJldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwibW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIkMCIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJ0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwidXJpX2F0dHJpYiQwIiwidXJpc19hdHRyaWIkMCIsInBjZGF0YSQwIiwiZW5jb2RlZHBjZGF0YSQwIiwiZW50aXR5JDAiLCJub2RlJDEiLCJub2RlJDIiLCJnZXQiLCJub2RlIiwic2V0IiwiZGF0YSIsInJlbW92ZSIsImNyZWF0ZSIsInNlcSIsImNsZWFyIiwiaXNfZW1wdHkiLCJsZW5ndGgiLCJjdXJyJDEiLCJjdXJyIiwibGVuIiwibGVuJDAiLCJjdXJyJDAiLCJhZGRfbCIsImFkZF9yIiwidGFrZV9sIiwidGFrZV9yIiwidGFrZV9vcHRfbCIsInRha2Vfb3B0X3IiLCJ0cmFuc2Zlcl9sIiwiczEiLCJzMiIsInRyYW5zZmVyX3IiLCJpdGVyX2wiLCJmIiwiaXRlcl9yIiwiaXRlcl9ub2RlX2wiLCJpdGVyX25vZGVfciIsImZvbGRfbCIsImFjYyIsImN1cnIkMiIsImFjYyQwIiwiYWNjJDEiLCJmb2xkX3IiLCJmaW5kX25vZGVfbCIsImZpbmRfbm9kZV9yIiwiZmluZF9ub2RlX29wdF9sIiwiZmluZF9ub2RlX29wdF9yIiwiY29tcGFyZSIsInN0YXRlX29mX3Jlc3VsdCIsIngiLCJleG4iLCJ1bmRlcmx5aW5nIiwicCIsInAkMCIsInAkMSIsInNldF9wcm9taXNlX3N0YXRlIiwic3RhdGUiLCJoYW5kbGVfYWxsIiwiaGFuZGxlX2FsbF9leGNlcHRfcnVudGltZSIsInYiLCJydW4iLCJlIiwibmV4dF9rZXlfaWQiLCJuZXdfa2V5IiwiaWQiLCJjdXJyZW50X3N0b3JhZ2UiLCJrZXkiLCJyZWZyZXNoIiwidmFsdWUiLCJ3aXRoX3ZhbHVlIiwibmV3X3N0b3JhZ2UiLCJzYXZlZF9zdG9yYWdlIiwicmVzdWx0IiwiZXhuJDAiLCJjb25jYXRfcmVndWxhcl9jYWxsYmFja3MiLCJsMSIsImwyIiwiY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMiLCJjYWxsYmFja3MiLCJsMSQwIiwibDIkMCIsImNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbCIsImNlbGwiLCJwcyIsImNsZWFudXBzX2RlZmVycmVkIiwiYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlIiwiZXhpc3RpbmciLCJub2RlJDAiLCJhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWMiLCJhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGIiLCJzZWxmX3JlbW92aW5nX2NhbGxiYWNrX3dyYXBwZXIiLCJhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGIkMCIsImFkZF9jYW5jZWxfY2FsbGJhY2siLCJhc3luY19leGNlcHRpb25faG9vayIsImhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9obyIsInJ1bl9jYWxsYmFja3MiLCJpc19jYW5jZWxlZCIsImZzIiwiaXRlcl9jYWxsYmFja19saXN0JDIiLCJyZXN0IiwiZnMkMCIsInJlc3QkMCIsIml0ZXJfbGlzdCQwIiwiZnMkMSIsImZzJDIiLCJyZXN0JDEiLCJzdG9yYWdlIiwiaXRlcl9jYWxsYmFja19saXN0IiwiaXRlcl9jYWxsYmFja19saXN0JDEiLCJpdGVyX2xpc3QiLCJmJDAiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMCIsImN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCIsImRlZmVycmVkX2NhbGxiYWNrcyIsImRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aSIsImxlYXZlX3Jlc29sdXRpb25fbG9vcCIsInN0b3JhZ2Vfc25hcHNob3QiLCJydW5faW5fcmVzb2x1dGlvbl9sb29wIiwiYWJhbmRvbl93YWtldXBzIiwicnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtIiwib3B0Iiwic3RoIiwiYWxsb3dfZGVmZXJyaW5nIiwic3RoJDAiLCJtYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGgiLCJzaG91bGRfZGVmZXIiLCJyZXNvbHZlIiwicnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0IiwiaWZfZGVmZXJyZWQiLCJydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWkiLCJkZWZlcnJlZF9yZXN1bHQiLCJkZWZlcnJlZF9jYWxsYmFjayIsImltbWVkaWF0ZV9yZXN1bHQiLCJkZWZlcnJlZF9yZWNvcmQiLCJ3YWtldXBfZ2VuZXJhbCIsImFwaV9mdW5jdGlvbl9uYW1lIiwiciIsInJlc3VsdCQwIiwid2FrZXVwX3Jlc3VsdCIsIndha2V1cCIsIndha2V1cF9leG4iLCJ3YWtldXBfbGF0ZXJfZ2VuZXJhbCIsIndha2V1cF9sYXRlcl9yZXN1bHQiLCJ3YWtldXBfbGF0ZXIiLCJ3YWtldXBfbGF0ZXJfZXhuIiwiY2FuY2VsIiwiY2FuY2VsZWRfcmVzdWx0IiwiY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyIsImNhbGxiYWNrc19hY2N1bXVsYXRvciIsInAkMiIsInBhcmFtIiwicmV0dXJuJDAiLCJvZl9yZXN1bHQiLCJmYWlsIiwicmV0dXJuX3VuaXQiLCJyZXR1cm5fbm9uZSIsInJldHVybl9zb21lIiwicmV0dXJuX25pbCIsInJldHVybl90cnVlIiwicmV0dXJuX2ZhbHNlIiwicmV0dXJuX29rIiwicmV0dXJuX2Vycm9yIiwiZmFpbF93aXRoIiwibXNnIiwiZmFpbF9pbnZhbGlkX2FyZyIsIm5ld19wZW5kaW5nIiwiaG93X3RvX2NhbmNlbCIsIndhaXQiLCJ0YXNrIiwiYWRkX3Rhc2tfciIsInNlcXVlbmNlIiwiYWRkX3Rhc2tfbCIsInByb3RlY3RlZCQwIiwicF9pbnRlcm5hbCIsImNhbGxiYWNrIiwicF9yZXN1bHQiLCJyZW1vdmVfdGhlX2NhbGxiYWNrIiwicF9jYWxsYmFja3MiLCJub19jYW5jZWwiLCJtYWtlX2ludG9fcHJveHkiLCJvdXRlcl9wcm9taXNlIiwidXNlcl9wcm92aWRlZF9wcm9taXNlIiwib3V0ZXJfY2FsbGJhY2tzIiwicmVndWxhcl9jYWxsYmFja3MiLCJjbGVhbnVwc19kZWZlcnJlZCQwIiwicmVndWxhcl9jYWxsYmFja3MkMCIsImNhbmNlbF9jYWxsYmFja3MiLCJzeW1ib2xfYmluZCIsImNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbCIsImJhY2t0cmFjZV9iaW5kIiwiYWRkX2xvYyIsInN5bWJvbCIsInBfcmVzdWx0JDAiLCJjYXRjaCQwIiwiaCIsImJhY2t0cmFjZV9jYXRjaCIsInRyeV9iaW5kIiwiZXhuJDEiLCJwJDMiLCJiYWNrdHJhY2VfdHJ5X2JpbmQiLCJmaW5hbGl6ZSIsImJhY2t0cmFjZV9maW5hbGl6ZSIsIm9uX2NhbmNlbCIsIm9uX3N1Y2Nlc3MiLCJjYWxsYmFja19pZl9kZWZlcnJlZCIsIm9uX2ZhaWx1cmUiLCJvbl90ZXJtaW5hdGlvbiIsIm9uX2FueSIsImciLCJ3cmFwX2luX2NhbmNlbGFibGUiLCJwX3VuZGVybHlpbmciLCJkb250X3dhaXQiLCJhc3luYyIsImlnbm9yZV9yZXN1bHQiLCJqb2luIiwibnVtYmVyX3BlbmRpbmdfaW5fcHMiLCJqb2luX3Jlc3VsdCIsIm5ld19yZXN1bHQiLCJwcyQwIiwicHMkMSIsImJvdGgiLCJwMSIsInAyIiwicGFpciIsInAxJDAiLCJwMiQwIiwidjIiLCJ2MSIsImFsbCIsInkiLCJ2cyIsImluZGV4IiwiaSQxIiwiaSIsImkkMCIsImNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIiwidG90YWwkMSIsInBzJDIiLCJwcyQzIiwidG90YWwkMiIsInJlamVjdGVkJDEiLCJ0b3RhbCIsInJlamVjdGVkIiwicmVqZWN0ZWQkMCIsInRvdGFsJDAiLCJudGhfcmVzb2x2ZWQiLCJuIiwibiQwIiwibiQyIiwibiQxIiwibnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluIiwicHJuZyIsImNob29zZSIsInBpY2siLCJxcyIsImNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdCIsInJlc3VsdHMiLCJyZXN1bHRzJDAiLCJyZXN1bHRzJDEiLCJuY2hvb3NlIiwidiQwIiwibnBpY2siLCJuY2hvb3NlX3NwbGl0IiwicGVuZGluZ19hY2MiLCJwX2ludGVybmFsJDAiLCJwZW5kaW5nX2FjYyQwIiwidG9fcmVzb2x2ZSIsImZ1bGZpbGxlZCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJmdWxmaWxsZWQkMCIsImRlYnVnX3N0YXRlX2lzIiwiZXhwZWN0ZWRfc3RhdGUiLCJpc19zbGVlcGluZyIsInBvbGwiLCJhcHBseSIsIndyYXAiLCJ3cmFwMSIsIngxIiwid3JhcDIiLCJ4MiIsIndyYXAzIiwieDMiLCJ3cmFwNCIsIng0Iiwid3JhcDUiLCJ4NSIsIndyYXA2IiwieDYiLCJ3cmFwNyIsIng3IiwicGF1c2VfaG9vayIsInBhdXNlZCIsInBhdXNlIiwid2FrZXVwX3BhdXNlZCIsInRtcCIsInJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIiwiYWJhbmRvbl9wYXVzZWQiLCJwYXVzZWRfY291bnQiLCJtYXAiLCJ0IiwiYmluZCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibGV0JDAiLCJpc19vbiIsInN3aXRjaCQwIiwiY2hlY2siLCJhZGRfaG9vayIsImhvb2siLCJvcyIsImFkZF9ob29rX29yX2V4ZWMiLCJ0dXJuX29mZiIsImhvb2tzIiwid2l0aF9zd2l0Y2giLCJmbiIsImVtcHR5IiwicmV0dXJuX2x3dCIsImNvbnMiLCJjb25zX2x3dCIsInNlcTEiLCJzZXEyIiwibmV4dCIsImFwcGVuZCIsIngkMCIsIm1hcF9zIiwiZmlsdGVyX21hcCIsImZpbHRlcl9tYXBfcyIsIm9rIiwiZmlsdGVyIiwiZmlsdGVyX3MiLCJmbGF0X21hcF9hcHAiLCJ0YWlsIiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhdXgiLCJmb2xkX2xlZnRfcyIsIml0ZXIiLCJpdGVyX3MiLCJpdGVyX3AiLCJpdGVyX24iLCJtYXhfY29uY3VycmVuY3kiLCJtZXNzYWdlIiwibG9vcCIsInJ1bm5pbmciLCJhdmFpbGFibGUiLCJlbHQiLCJjb21wbGV0ZSIsInVuZm9sZCIsInUiLCJleGMkMCIsImV4YyIsInUkMCIsInVuZm9sZF9sd3QiLCJvZl9saXN0IiwibCIsInRvX2xpc3QkMCIsIm9mX3NlcSIsIm5leHQkMCIsIm9mX3NlcV9sd3QiLCJuZXdfbm9kZSIsImNsb25lIiwicyIsImZyb21fc291cmNlIiwic291cmNlIiwiY2xvc2UiLCJjbG9zZWQiLCJmcm9tIiwiZnJvbV9kaXJlY3QiLCJpc19jbG9zZWQiLCJlbnF1ZXVlIiwibGFzdCIsIm5ld19sYXN0IiwiZW5xdWV1ZSQwIiwiY3JlYXRlX3dpdGhfcmVmZXJlbmNlIiwicHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJwdXNoX3NpZ25hbCIsInB1c2hfc2lnbmFsX3Jlc29sdmVyJDAiLCJwdXNoIiwib2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyIiwibmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyIiwibmV3X3dhaXRlciIsImEiLCJzdHJlYW0iLCJzJDAiLCJvZl9sd3Rfc2VxIiwib2ZfaXRlciIsIm9mX2FycmF5Iiwib2Zfc3RyaW5nIiwibm90aWZ5X3B1c2hlciIsImluZm8iLCJvbGRfd2FrZW5lciIsIndha2VuZXIiLCJ3YWl0ZXIiLCJzZWxmXzEiLCJzaXplIiwibmV3X3dha2VuZXIiLCJjcmVhdGVfYm91bmRlZCIsInB1c2hfd2FrZW5lciIsInB1c2hfd2FpdGVyIiwid2FrZW5lcl9jZWxsIiwiZmVlZCIsInRocmVhZCIsInB1c2gkMCIsImNvbnN1bWUiLCJwZWVrX3JlYyIsInBlZWsiLCJucGVla19yZWMiLCJub2RlJDEiLCJucGVlayIsImdldF9yZWMiLCJnZXRfZXhuX3JlYyIsIndyYXBfZXhuIiwibmdldF9yZWMiLCJuZ2V0IiwiZ2V0X3doaWxlX3JlYyIsInRlc3QiLCJnZXRfd2hpbGUiLCJnZXRfd2hpbGVfc19yZWMiLCJnZXRfd2hpbGVfcyIsIm5leHRfcmVjIiwibGFzdF9uZXdfcmVjIiwieCQxIiwibGFzdF9uZXciLCJ0b19saXN0X3JlYyIsInRvX2xpc3QiLCJ0b19zdHJpbmdfcmVjIiwiYnVmIiwidG9fc3RyaW5nIiwianVuayIsIm5qdW5rX3JlYyIsIm5qdW5rIiwianVua193aGlsZV9yZWMiLCJqdW5rX3doaWxlIiwianVua193aGlsZV9zX3JlYyIsImp1bmtfd2hpbGVfcyIsImp1bmtfb2xkIiwiZ2V0X2F2YWlsYWJsZSIsImdldF9hdmFpbGFibGVfdXBfdG8iLCJtYXBfbGlzdCIsInBlbmRpbmdzIiwibWFwX2xpc3RfcyIsImZsYXR0ZW4iLCJmb2xkX3JlYyIsImZvbGQiLCJmb2xkX3NfcmVjIiwiZm9sZF9zIiwiaXRlcl9yZWMiLCJpdGVyX3NfcmVjIiwiaXRlcl9wX3JlYyIsInJlcyIsImZpbmRfcmVjIiwiZmluZCIsImZpbmRfc19yZWMiLCJmaW5kX3MiLCJmaW5kX21hcF9yZWMiLCJmaW5kX21hcCIsImZpbmRfbWFwX3NfcmVjIiwiZmluZF9tYXBfcyIsImNvbWJpbmUiLCJ0MSIsInQyIiwibjEiLCJuMiIsImN1cnJlbnRfcyIsImNvbmNhdCIsInNfdG9wIiwic3RyZWFtcyIsInN0cmVhbXMkMCIsImwkMCIsInBhcnNlIiwiaGV4ZHVtcCIsIm51bSIsInBvcyIsInBvcyQxIiwicG9zJDIiLCJjaCIsImxpZnQiLCJlcnJvciIsIm1hcF9lcnJvciIsIm1hcF9lcnIiLCJnZXRfZXhuIiwiYmluZF9lcnJvciIsImJpbmRfbHd0IiwiYmluZF9yZXN1bHQiLCJiaW5kX2x3dF9lcnJvciIsImJpbmRfbHd0X2VyciIsImIiLCJzZXRfb25jZSIsImIkMCIsImEkMCIsIml0ZXJfZXJyb3IiLCJtYXAkMCIsImxpbmsiLCJjMiIsInIyIiwiYzEiLCJyMSIsImMiLCJpbnMiLCJ0JDAiLCJ0cyQwIiwidCQxIiwidHMkMSIsInRzIiwiYWRkIiwidW5pb24iLCJ0czIiLCJ0czEiLCJmaW5kX21pbiIsImxvb2t1cF9taW4iLCJnZXRfbWluIiwicmVtb3ZlX21pbiIsInRsIiwidGFpbF9yZWN1cnNpdmVfbWFwIiwidGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYiLCJoZCIsIml0ZXJpX3MiLCJpdGVyaV9wIiwiaW5uZXIiLCJjb2xsZWN0X3JldiIsIm1hcF9wIiwiZmlsdGVyX21hcF9wIiwiY29sbGVjdF9vcHRpb25hbF9yZXYiLCJtYXBpX3MiLCJtYXBpX3AiLCJyZXZfbWFwX2FwcGVuZF9zIiwicmV2X21hcF9zIiwicmV2X21hcF9wIiwibCQxIiwiZm9sZF9yaWdodF9zIiwiZm9yX2FsbF9zIiwiZm9yX2FsbF9wIiwiYmwiLCJleGlzdHNfcyIsImV4aXN0c19wIiwib3B0aW9uYWxpemUiLCJmaWx0ZXJfcCIsInBhcnRpdGlvbl9zIiwiYWNjMSIsImFjYzIiLCJwYXJ0aXRpb25fcCIsImdyb3VwMSIsImdyb3VwMiIsIm0iLCJ2YWxpZGF0ZSIsInN0aCQxIiwiZGlzcG9zZSIsImNyZWF0ZV9tZW1iZXIiLCJyZWxlYXNlIiwidmFsaWRhdGVfYW5kX3JldHVybiIsInVzZSIsImNsZWFyZWQiLCJjbGVhcmVkJDAiLCJwcm9taXNlIiwiZWxlbWVudCIsImVsZW1lbnRzIiwib2xkX2NsZWFyZWQiLCJ3YWl0X3F1ZXVlX2xlbmd0aCIsImNyZWF0ZV9lbXB0eSIsInB1dCIsIm12YXIiLCJ3IiwidyQwIiwidGFrZV9hdmFpbGFibGUiLCJ0YWtlIiwibG9jayIsInVubG9jayIsIndpdGhfbG9jayIsImlzX2xvY2tlZCIsIm11dGV4IiwiY3ZhciIsInNpZ25hbCIsImFyZyIsImJyb2FkY2FzdCIsIndha2VuZXJzIiwiYnJvYWRjYXN0X2V4biIsIndpdGhfZmluYWxpc2VyIiwiZiIsImV2ZW50IiwiciIsIngiLCJuZXh0IiwiZXYiLCJ3YWtlbmVyIiwid2FpdGVyIiwiZXYkMCIsImxpbWl0IiwiZSIsImxpbWl0ZXIiLCJkZWxheWVkIiwicHVzaCIsIml0ZXIiLCJjZWxsIiwiY2VsbCQwIiwiY2FuY2VsX3RocmVhZCIsInQiLCJmcm9tIiwibG9vcCIsInRvX3N0cmVhbSIsInNldF9yZWYiLCJzdHJlYW0iLCJvZl9zdHJlYW0iLCJ2IiwiZXhuJDAiLCJleG4iLCJkZWxheSIsInRocmVhZCIsInNlbmQiLCJrZWVwIiwicnVuX3AiLCJydW5fcyIsIm11dGV4IiwibWFwX3AiLCJtYXBfcyIsImFwcF9wIiwiZWYiLCJhcHBfcyIsImZpbHRlcl9wIiwiZmlsdGVyX3MiLCJmbWFwX3AiLCJmbWFwX3MiLCJkaWZmX3MiLCJwcmV2aW91cyIsInkiLCJhY2N1bV9zIiwiYWNjIiwiYWNjJDAiLCJmb2xkX3MiLCJyZXZfZm9sZCIsImwiLCJtZXJnZV9zIiwiZWwiLCJ3aXRoX2ZpbmFsaXNlciQwIiwic2lnbmFsIiwibGltaXQkMCIsImVxIiwicyIsImtlZXAkMCIsInJ1bl9zJDAiLCJtYXBfcyQwIiwiYXBwX3MkMCIsInNmIiwiZmlsdGVyX3MkMCIsImkiLCJmbWFwX3MkMCIsImRpZmZfcyQwIiwic2FtcGxlX3MiLCJhY2N1bV9zJDAiLCJmb2xkX3MkMCIsInJldl9mb2xkJDAiLCJtZXJnZV9zJDAiLCJzbCIsImwxX3MiLCJzMSIsImwyX3MiLCJzMiIsIngxIiwieDIiLCJsM19zIiwiczMiLCJ4MyIsImw0X3MiLCJzNCIsIng0IiwibDVfcyIsInM1IiwieDUiLCJsNl9zIiwiczYiLCJ4NiIsImJpbmRfcyIsInN5bWJvbCIsIngiLCJ5Iiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCIsIm1pbiIsImVxdWFsJDAiLCJlcXVhbCQxIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkMCIsIm1pbiQwIiwiYyIsInBlcmZvcm1fcmF3Iiwib3B0IiwiY29udGVudF90eXBlIiwicHJvZ3Jlc3MiLCJ1cGxvYWRfcHJvZ3Jlc3MiLCJjb250ZW50cyIsIm92ZXJyaWRlX21pbWVfdHlwZSIsIm92ZXJyaWRlX21ldGhvZCIsIndpdGhfY3JlZGVudGlhbHMiLCJzdGgiLCJoZWFkZXJzIiwic3RoJDAiLCJnZXRfYXJncyIsInN0aCQxIiwiY2hlY2tfaGVhZGVycyIsInVybCIsImMkMCIsImFyZ3MiLCJvbmx5X3N0cmluZ3MiLCJmb3JtX2NvbnRlbnRzIiwidmFsdWUiLCJuYW1lIiwiYiIsImNvbnRlbnRzJDAiLCJvdmVycmlkZV9tZXRob2QkMCIsIm0iLCJ2IiwiZm9ybSIsImNvbnRlbnRfdHlwZSQxIiwibWV0aG9kIiwibWV0aG9kJDAiLCJ1cmwkMCIsInciLCJyZXMiLCJtaW1lX3R5cGUiLCJjJDEiLCJjb250ZW50X3R5cGUkMiIsIm4iLCJoZWFkZXJzJDAiLCJzIiwic3QiLCJkb19jaGVja19oZWFkZXJzIiwiY29kZSIsInJlc3BvbnNlIiwiY29kZSQwIiwiY29kZSQxIiwiY29kZSQyIiwiY29kZSQzIiwiY29kZSQ0IiwiZG9jIiwicHJvZ3Jlc3MkMCIsInVwbG9hZF9wcm9ncmVzcyQwIiwibCIsImwkMCIsImYiLCJiJDAiLCJwZXJmb3JtX3Jhd191cmwiLCJwZXJmb3JtIiwiZ2V0Iiwic2xlZXAiLCJkIiwidCIsImlkIiwieWllbGQkMCIsIndha2V1cCIsInByZXJyX3N0cmluZyIsImV4biIsImNhbGxfY3VzdG9tX3VybCIsInRpbWVvdXQiLCJtYWtlX3VyaSIsInByZWZpeCIsInVzZXJfY2IiLCJlcnJvcl9jYiIsInNpemUiLCJpIiwidXJpIiwiZmluYWxpemUiLCJwYXJlbnQiLCJleGVjdXRlZCIsImRlbGF5Iiwid2FpdCIsIm5ld190IiwiYWRkX3BhcmFtIiwiY2FsbCIsInBhcmFtIiwiY2JuYW1lIiwiaHR0cCIsIm5ld191cmwiLCJodHRwJDAiLCJmaWxlIiwic3ltYm9sX2JpbmQiLCJhc3luYyIsIm9wdF9tYXAiLCJtYWtlX2V2ZW50IiwiZXZlbnRfa2luZCIsInVzZV9jYXB0dXJlIiwicGFzc2l2ZSIsInRhcmdldCIsImVsIiwiY2FuY2VsIiwiZXYiLCJjYXRjaF9jYW5jZWwiLCJlIiwid2l0aF9lcnJvcl9sb2ciLCJzZXFfbG9vcCIsImV2aCIsImhhbmRsZXIiLCJjYW5jZWxfaGFuZGxlciIsImNhbmNlbGxlZCIsImN1ciIsImN1cl9oYW5kbGVyIiwibHQiLCJhdXgiLCJhc3luY19sb29wIiwiYnVmZmVyZWRfbG9vcCIsImNhbmNlbF9xdWV1ZSIsInF1ZXVlIiwic3Bhd24iLCJzcGF3bmVyIiwicnVubmVyIiwidGwiLCJmdW5jX2xpbWl0ZWRfbG9vcCIsImV2ZW50IiwibGltaXRlZF9mdW5jIiwiY291bnQiLCJuYiIsImxpbWl0ZWRfbG9vcCIsImVsYXBzZWRfdGltZSIsImNsaWNrIiwiY29weSIsImN1dCIsInBhc3RlIiwiZGJsY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZXVwIiwibW91c2VvdmVyIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJrZXlwcmVzcyIsImtleWRvd24iLCJrZXl1cCIsImNoYW5nZSIsImlucHV0IiwidGltZXVwZGF0ZSIsImRyYWdzdGFydCIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsImRyYWciLCJkcm9wIiwiZm9jdXMiLCJibHVyIiwic2Nyb2xsIiwic3VibWl0Iiwic2VsZWN0IiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJjYW5wbGF5IiwiY2FucGxheXRocm91Z2giLCJkdXJhdGlvbmNoYW5nZSIsImVtcHRpZWQiLCJlbmRlZCIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvYWRzdGFydCIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJyYXRlY2hhbmdlIiwic2Vla2VkIiwic2Vla2luZyIsInN0YWxsZWQiLCJzdXNwZW5kIiwidm9sdW1lY2hhbmdlIiwid2FpdGluZyIsIm1vdXNld2hlZWwiLCJkeCIsImR5Iiwid2hlZWwiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCIsImxvc3Rwb2ludGVyY2FwdHVyZSIsImdvdHBvaW50ZXJjYXB0dXJlIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmNhbmNlbCIsInBvaW50ZXJkb3duIiwicG9pbnRlcmxlYXZlIiwicG9pbnRlcm1vdmUiLCJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiLCJwb2ludGVydXAiLCJ0cmFuc2l0aW9uZW5kIiwiZWx0IiwidHJhbnNpdGlvbnN0YXJ0IiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25jYW5jZWwiLCJjbGlja3MiLCJjb3BpZXMiLCJjdXRzIiwicGFzdGVzIiwiZGJsY2xpY2tzIiwibW91c2Vkb3ducyIsIm1vdXNldXBzIiwibW91c2VvdmVycyIsIm1vdXNlbW92ZXMiLCJtb3VzZW91dHMiLCJrZXlwcmVzc2VzIiwia2V5ZG93bnMiLCJrZXl1cHMiLCJjaGFuZ2VzIiwiaW5wdXRzIiwidGltZXVwZGF0ZXMiLCJkcmFnc3RhcnRzIiwiZHJhZ2VuZHMiLCJkcmFnZW50ZXJzIiwiZHJhZ292ZXJzIiwiZHJhZ2xlYXZlcyIsImRyYWdzIiwiZHJvcHMiLCJtb3VzZXdoZWVscyIsIndoZWVscyIsInRvdWNoc3RhcnRzIiwidG91Y2htb3ZlcyIsInRvdWNoZW5kcyIsInRvdWNoY2FuY2VscyIsImZvY3VzZXMiLCJibHVycyIsInNjcm9sbHMiLCJzdWJtaXRzIiwic2VsZWN0cyIsImFib3J0cyIsImVycm9ycyIsImxvYWRzIiwiY2FucGxheXMiLCJjYW5wbGF5dGhyb3VnaHMiLCJkdXJhdGlvbmNoYW5nZXMiLCJlbXB0aWVkcyIsImVuZGVkcyIsImxvYWRlZGRhdGFzIiwibG9hZGVkbWV0YWRhdGFzIiwibG9hZHN0YXJ0cyIsInBhdXNlcyIsInBsYXlzIiwicGxheWluZ3MiLCJyYXRlY2hhbmdlcyIsInNlZWtlZHMiLCJzZWVraW5ncyIsInN0YWxsZWRzIiwic3VzcGVuZHMiLCJ2b2x1bWVjaGFuZ2VzIiwid2FpdGluZ3MiLCJsb3N0cG9pbnRlcmNhcHR1cmVzIiwiZ290cG9pbnRlcmNhcHR1cmVzIiwicG9pbnRlcmVudGVycyIsInBvaW50ZXJjYW5jZWxzIiwicG9pbnRlcmRvd25zIiwicG9pbnRlcmxlYXZlcyIsInBvaW50ZXJtb3ZlcyIsInBvaW50ZXJvdXRzIiwicG9pbnRlcm92ZXJzIiwicG9pbnRlcnVwcyIsInRyYW5zaXRpb25lbmRzIiwidHJhbnNpdGlvbnN0YXJ0cyIsInRyYW5zaXRpb25ydW5zIiwidHJhbnNpdGlvbmNhbmNlbHMiLCJyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSIsIm9ubG9hZCIsImRvbUNvbnRlbnRMb2FkZWQiLCJ3YWtldXBfZXhuIiwicmVndWxhciIsInJlYWR5c3RhdGVjaGFuZ2UiLCJpbml0Iiwib251bmxvYWQiLCJvbmJlZm9yZXVubG9hZCIsIm9ucmVzaXplIiwib25vcmllbnRhdGlvbmNoYW5nZSIsIm9ucG9wc3RhdGUiLCJvbmhhc2hjaGFuZ2UiLCJvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXoiLCJvbnJlc2l6ZXMiLCJvbm9yaWVudGF0aW9uY2hhbmdlcyIsIm9ucG9wc3RhdGVzIiwib25oYXNoY2hhbmdlcyIsIm9ub3JpZW50YXRpb25jaGFuZ2VzX29yX29ucmVzaSIsImxpbWl0ZWRfb25yZXNpemVzIiwibGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlcyIsImxpbWl0ZWRfb25vcmllbnRhdGlvbmNoYW5nZXNfbyIsInJlYWRlciIsImtpbmQiLCJmaWxlUmVhZGVyIiwicmVhZEFzQmluYXJ5U3RyaW5nIiwicmVhZEFzVGV4dCIsInJlYWRBc1RleHRfd2l0aEVuY29kaW5nIiwicmVhZEFzRGF0YVVSTCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJvcHQiLCJzdGgiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJjb2VyY2UiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfdF9zZXhwX2dyYW1tYXIiLCJlbXB0eV9zZXhwX2dyYW1tYXIiLCJib29sX3NleHBfZ3JhbW1hciIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsImludF9zZXhwX2dyYW1tYXIiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwicmVmX3NleHBfZ3JhbW1hciIsImdyYW1tYXIiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInBhcmFtIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJhcmciLCJoYW5kbGVyIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJkZXNjZW5kaW5nIiwieCIsInkiLCJtYXgiLCJtaW4iLCJkb19hdF9leGl0IiwidW5zYWZlX3JlYWxseV9pbnB1dCIsInZhbGlkX2Zsb2F0X2xleGVtIiwiYXRfZXhpdCIsImV4aXQiLCJzeW1ib2wiLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic2V0X2JpbmFyeV9tb2RlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJjbG9zZV9pbiIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwicmVhbGx5X2lucHV0IiwiaW5wdXQiLCJpbnB1dF9saW5lIiwiaW5wdXRfY2hhciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luIiwic2V0X2JpbmFyeV9tb2RlX291dCIsImNsb3NlX291dF9ub2VyciIsImNsb3NlX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsInBvc19vdXQiLCJzZWVrX291dCIsIm91dHB1dF92YWx1ZSIsIm91dHB1dF9iaW5hcnlfaW50Iiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0Iiwib3V0cHV0X2J5dGVzIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dF9jaGFyIiwiZmx1c2hfYWxsIiwiZmx1c2giLCJvcGVuX291dF9nZW4iLCJvcGVuX291dF9iaW4iLCJvcGVuX291dCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9saW5lIiwicHJlcnJfbmV3bGluZSIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9mbG9hdCIsInByZXJyX2ludCIsInByZXJyX2J5dGVzIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfY2hhciIsInByaW50X25ld2xpbmUiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfZmxvYXQiLCJwcmludF9pbnQiLCJwcmludF9ieXRlcyIsInByaW50X3N0cmluZyIsInByaW50X2NoYXIiLCJzdGRlcnIiLCJzdGRvdXQiLCJzdGRpbiIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzdHJpbmdfb2ZfZmxvYXQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9ib29sIiwiY2hhcl9vZl9pbnQiLCJlcHNpbG9uX2Zsb2F0IiwibWluX2Zsb2F0IiwibWF4X2Zsb2F0IiwibmFuIiwibmVnX2luZmluaXR5IiwiaW5maW5pdHkiLCJtaW5faW50IiwibWF4X2ludCIsImJvb2xfdG9faW50Iiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJzeW1ib2wkMTIiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwic3ltYm9sJDI0IiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsInN5bWJvbCQzMCIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsInN5bWJvbCQ0MiIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJzeW1ib2wkNDgiLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwic3ltYm9sJDU0IiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsInN5bWJvbCQ2MCIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsInN5bWJvbCQ2MyIsInN5bWJvbCQ2NCIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJkZWNyIiwiaW5jciIsImZsb2F0X29mX3N0cmluZyIsImFtX3Rlc3RpbmciLCJmYWlsd2l0aGYiLCJmbXQiLCJzIiwiaW52YWxpZF9hcmdmIiwiYmFja2VuZF90eXBlIiwiaW50ZXJhY3RpdmUiLCJvc190eXBlIiwidW5peCIsIndpbjMyIiwiY3lnd2luIiwid29yZF9zaXplX2luX2JpdHMiLCJpbnRfc2l6ZV9pbl9iaXRzIiwiYmlnX2VuZGlhbiIsIm1heF9zdHJpbmdfbGVuZ3RoIiwibWF4X2FycmF5X2xlbmd0aCIsInJ1bnRpbWVfdmFyaWFudCIsInJ1bnRpbWVfcGFyYW1ldGVycyIsImFyZ3YiLCJnZXRfYXJndiIsIm9jYW1sX3ZlcnNpb24iLCJlbmFibGVfcnVudGltZV93YXJuaW5ncyIsInJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsImdldGVudl9leG4iLCJ2YXIkMCIsImdldGVudiIsIm1heF9sZW5ndGgiLCJjcmVhdGUiLCJsZW4iLCJjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCIsImFwcGVuZCIsImJsaXQiLCJjb25jYXQiLCJjb3B5IiwiZmlsbCIsImluaXQiLCJtYWtlX21hdHJpeCIsIm9mX2xpc3QiLCJzdWIiLCJ0b19saXN0IiwiZm9sZCIsInQiLCJmIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmciLCJ0b19mbG9hdCIsIm9mX2Zsb2F0Iiwic3VjYyIsImhkX2V4biIsImxlbmd0aCIsInJldl9hcHBlbmQiLCJ0bF9leG4iLCJ1bnppcCIsImV4aXN0cyIsImV4aXN0czJfb2siLCJsMSIsImwyIiwiZm9sZDJfb2siLCJmb3JfYWxsIiwiZm9yX2FsbDJfb2siLCJpdGVyMl9vayIsIm5vbnRhaWxfbWFwIiwibm9udGFpbF9tYXBpIiwicGFydGl0aW9uIiwicmV2X21hcCIsInJldl9tYXAyX29rIiwic29ydCIsImwiLCJyZXYiLCJyZXMiLCJyZXN0IiwiYSIsImIiLCJoYXNoX2ZvbGRfdW5pdCIsImhhc2hfZm9sZF9pbnQiLCJoYXNoX2ZvbGRfaW50NjQiLCJoYXNoX2ZvbGRfZmxvYXQiLCJoYXNoX2ZvbGRfc3RyaW5nIiwiYXNfaW50IiwiaGFzaF9mb2xkX2ludDMyIiwiaGFzaF9mb2xkX2NoYXIiLCJoYXNoX2ZvbGRfYm9vbCIsImhhc2hfZm9sZF9uYXRpdmVpbnQiLCJoYXNoX2ZvbGRfb3B0aW9uIiwiaGFzaF9mb2xkX2VsZW0iLCJoYXNoX2ZvbGRfbGlzdCIsInMkMSIsImxpc3QkMSIsInMkMiIsImxpc3QiLCJsaXN0JDAiLCJzJDAiLCJoYXNoX2ZvbGRfbGF6eV90IiwiaGFzaF9mb2xkX3JlZl9mcm96ZW4iLCJoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIiwiYXJyYXkiLCJlIiwiaSQwIiwiaGFzaF9uYXRpdmVpbnQiLCJoYXNoX2ludDY0IiwiaGFzaF9pbnQzMiIsImhhc2hfY2hhciIsImhhc2hfaW50IiwiaGFzaF9ib29sIiwiaGFzaF9zdHJpbmciLCJoYXNoX2Zsb2F0IiwiaGFzaF91bml0Iiwic2VlZCIsIm9mX2ZvbGQiLCJoYXNoX2ZvbGRfdCIsInJ1biIsImZvbGRlciIsIm9wdCIsInN0aCIsImNvbXBhcmVfc3RhdGUiLCJzdGF0ZV90b19zdHJpbmciLCJzdGF0ZSIsInQkMCIsInQkMSIsInQkMiIsInQkMyIsInQkNCIsInQkNSIsImNvbXBhcmVfYWJzdHJhY3QiLCJ0eXBlX25hbWUiLCJlcXVhbF9hYnN0cmFjdCIsImNvbXBhcmVfYm9vbCIsImNvbXBhcmVfY2hhciIsImNvbXBhcmVfZmxvYXQiLCJjb21wYXJlX2ludCIsImNvbXBhcmVfaW50MzIiLCJjb21wYXJlX2ludDY0IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJjb21wYXJlX3N0cmluZyIsImNvbXBhcmVfdW5pdCIsImNvbXBhcmVfYXJyYXkiLCJjb21wYXJlX2VsdCIsImxlbl9hIiwibGVuX2IiLCJyZXQiLCJyIiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJ4cyIsImNvbXBhcmVfb3B0aW9uIiwiY29tcGFyZV9yZWYiLCJlcXVhbF9ib29sIiwiZXF1YWxfY2hhciIsImVxdWFsX2ludCIsImVxdWFsX2ludDMyIiwiZXF1YWxfaW50NjQiLCJlcXVhbF9uYXRpdmVpbnQiLCJlcXVhbF9zdHJpbmciLCJlcXVhbF91bml0IiwiZXF1YWxfZmxvYXQiLCJlcXVhbF9hcnJheSIsImVxdWFsX2VsdCIsImVxdWFsX2xpc3QiLCJlcXVhbF9vcHRpb24iLCJlcXVhbF9yZWYiLCJhXzAwMSIsImJfMDAyIiwiYV8wMDMiLCJiXzAwNCIsImFfMDA1IiwiYl8wMDYiLCJoYXNoIiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsInRfc2V4cF9ncmFtbWFyIiwiaW52YXJpYW50Iiwic2V4cF9vZl90IiwibnVtX2JpdHMiLCJ3b3JkX3NpemUiLCJhbGwiLCJyZWdpc3RlciIsInAiLCJwcCIsIm1vZHVsZV9uYW1lIiwiZm9ybWF0dGVyIiwiYXJnMV8wMDIiLCJhcmcwXzAwMSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJhcmcxXzAwNiIsImFyZzBfMDA1IiwicmVzMF8wMDciLCJyZXMxXzAwOCIsImNyZWF0ZV9zIiwic2V4cCIsInJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicmVyYWlzZSIsImV4biIsInN0ciIsImV4biQwIiwiYnQiLCJyZXJhaXNlZiIsImV4YyIsImZvcm1hdCIsInRvX3N0cmluZ19tYWNoIiwic2V4cF9vZl90JDAiLCJwcm90ZWN0eCIsImZpbmFsbHkkMCIsImZpbmFsX2V4biQwIiwiZmluYWxfZXhuIiwicHJvdGVjdCIsImRvZXNfcmFpc2UiLCJwcGYiLCJwcmludF93aXRoX2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfYXV4IiwiZXhjJDAiLCJoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQiLCJoYW5kbGVfdW5jYXVnaHQiLCJtdXN0X2V4aXQiLCJleGl0JDAiLCJyZXJhaXNlX3VuY2F1Z2h0IiwiZnVuYyIsInJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIiwiaW5pdGlhbGl6ZV9tb2R1bGUiLCJjbGVhcl9iYWNrdHJhY2UiLCJ3aXRoX3JldHVybiIsImlzX2FsaXZlIiwicmV0dXJuJDAiLCJ3aXRoX3JldHVybl9vcHRpb24iLCJwcmVwZW5kIiwicGFyYW0iLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJtYXBfdmlhX2JpbmQiLCJtYSIsInN5bWJvbF9iaW5kJDAiLCJzeW1ib2xfbWFwJDAiLCJzeW1ib2xfYmluZCQxIiwic3ltYm9sX21hcCQxIiwiYm90aCIsImxvb3AiLCJ2cyIsInRzIiwidiIsImJpbmQkMCIsInJldHVybiQxIiwibWFwJDAiLCJ0b19tb25hZCIsIm9mX21vbmFkIiwiZGVyaXZlZF9tYXAiLCJtYXAyIiwidGEiLCJ0YiIsIm1hcDMiLCJ0YyIsInN5bWJvbCQwIiwidSIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJjIiwiYXBwbHkiLCJtZiIsIm14IiwidHgiLCJjdXN0b21fbWFwIiwiYXBwbHkkMCIsImJsaXRfc3RyaW5nIiwibWFrZSIsInVuc2FmZV9ibGl0IiwidW5zYWZlX3RvX3N0cmluZyIsInVuc2FmZV9vZl9zdHJpbmdfcHJvbWlzZV9ub19tdSIsImNvbXBhcmF0b3IiLCJlcnJvcl9zb3VyY2VfMDExIiwiY21wX2YiLCJjbXBfcyIsImhhc2hfZm9sZF9mIiwiaGFzaF9mb2xkX3MiLCJ0X29mX3NleHAiLCJvZl9mXzAwNyIsIm9mX3NfMDA4Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsIm9mX2ZfMDI1Iiwib2Zfc18wMjYiLCJhcmcwXzAyNyIsInJlczBfMDI4IiwiYXJnMF8wMjkiLCJyZXMwXzAzMCIsImZfc2V4cF9ncmFtbWFyIiwic19zZXhwX2dyYW1tYXIiLCJvcGFxdWVfaWRlbnRpdHkiLCJuYW1lIiwiZ2V0IiwiZnNldCIsInNldHRlciIsInVwZGF0ZXIiLCJmaWVsZCIsImNhcGl0YWxpemUiLCJ1bmNhcGl0YWxpemUiLCJzZXAiLCJuIiwibiQwIiwibiQxIiwiaHN2JDIiLCJwb3NfY251bV8wMTAiLCJwb3NfYm9sXzAwOCIsInBvc19sbnVtXzAwNiIsInBvc19mbmFtZV8wMDQiLCJhcmdfMDExIiwiYm5kc18wMDMiLCJhcmdfMDA5IiwiYm5kc18wMDMkMCIsImFyZ18wMDciLCJibmRzXzAwMyQxIiwiYXJnXzAwNSIsImJuZHNfMDAzJDIiLCJoYXNoX2ZvbGRfdCQwIiwiaGFzaCQwIiwibWFrZV9sb2NhdGlvbl9zdHJpbmciLCJwb3NfZm5hbWUiLCJwb3NfbG51bSIsInBvc19jbnVtIiwicG9zX2JvbCIsImlzX2VtcHR5IiwicGFydGl0aW9uX21hcCIsImZzdCQwIiwieSQwIiwic25kJDAiLCJlcnJvcl9zb3VyY2VfMDA1Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA3IiwidGFnXzAwOCIsInNleHBfYXJnc18wMDkiLCJhcmcwXzAxMCIsInJlczBfMDExIiwic2V4cF9hcmdzXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJvZl9hXzAxOSIsIm9mX2JfMDIwIiwiYXJnMF8wMjMiLCJyZXMwXzAyNCIsImFfc2V4cF9ncmFtbWFyIiwiYl9zZXhwX2dyYW1tYXIiLCJjbXBfYSIsImNtcF9iIiwiYV8wMjciLCJiXzAyOCIsImFfMDI5IiwiYl8wMzAiLCJhXzAzMSIsImJfMDMyIiwiYV8wMzMiLCJiXzAzNCIsImFfMDM1IiwiYl8wMzYiLCJhXzAzNyIsImJfMDM4IiwiaGFzaF9mb2xkX2EiLCJoYXNoX2ZvbGRfYiIsIngkMCIsImNoZWNrX29rIiwiY2hlY2tfZXJyb3IiLCJvayIsImVycm9yIiwiZmFpbCIsImZhaWxmIiwibWFwX2Vycm9yIiwiYmluZCQxIiwibWFwJDEiLCJyZXR1cm4kMiIsImlzX29rIiwiaXNfZXJyb3IiLCJvZl9vcHRpb24iLCJpdGVyX2Vycm9yIiwidG9fZWl0aGVyIiwib2ZfZWl0aGVyIiwib2tfaWZfdHJ1ZSIsImJvb2wiLCJ0cnlfd2l0aCIsIm9rX2V4biIsIm9rX29yX2ZhaWx3aXRoIiwiY29tYmluZSIsImVyciIsIm9rMSIsIm9rMiIsImVycjEiLCJlcnIyIiwiY29tYmluZV9lcnJvcnMiLCJlcnJzIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImNvdW50Iiwic3VtIiwiTSIsImZvbGRfcmVzdWx0IiwiYWNjIiwiaXRlbSIsImZvbGRfdW50aWwiLCJmaW5pc2giLCJtaW5fZWx0IiwiZWx0IiwibWF4X2VsdCIsImZpbmRfbWFwIiwiZmluZCIsInRvX2FycmF5IiwiaXRlciQwIiwiaXRlciQxIiwibGVuZ3RoJDAiLCJsZW5ndGgkMSIsImlzX2VtcHR5JDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkJDAiLCJtZW0iLCJjb21wYXJlX2EiLCJlcXVhbF9hIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJ0MSQwIiwidDIkMCIsIm1ha2VfZGVmYXVsdCIsImRlZmF1bHQkMCIsImdldF9zdGF0ZSIsImZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyIsImFsbG93X2luX3Rlc3RzIiwiYml0cyIsImludCQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImNoYXIkMCIsImFzY2lpIiwibWFrZV9zZWxmX2luaXQiLCJpbnRfb25fNjRiaXRzIiwiYm91bmQiLCJpbnRfb25fMzJiaXRzIiwiaW50JDEiLCJiaXRzJDAiLCJmdWxsX3JhbmdlX2ludDY0IiwiYml0cyQxIiwiZnVsbF9yYW5nZV9pbnQzMiIsImZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyIsImZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyIsImZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyQwIiwiZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9uYXRpdmVpbnQiLCJyYWlzZV9jcm9zc2VkX2JvdW5kcyIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQiLCJzdHJpbmdfb2ZfYm91bmQiLCJpbnRfaW5jbCIsImxvIiwiaGkiLCJkaWZmIiwiaW50MzJfaW5jbCIsIm5hdGl2ZWludF9pbmNsIiwiaW50NjRfaW5jbCIsImZsb2F0JDAiLCJzY2FsZSIsInIxIiwicjIiLCJyZXN1bHQiLCJmbG9hdF9yYW5nZSIsImRlZmF1bHQkMSIsImJpdHMkMiIsImludCQyIiwiaW50MzIkMCIsIm5hdGl2ZWludCQwIiwiaW50NjQkMCIsImZsb2F0JDEiLCJpbnRfaW5jbCQwIiwiaW50MzJfaW5jbCQwIiwibmF0aXZlaW50X2luY2wkMCIsImludDY0X2luY2wkMCIsImZsb2F0X3JhbmdlJDAiLCJib29sJDAiLCJjaGFyJDEiLCJhc2NpaSQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic2V0X3N0YXRlIiwicGVybXV0ZSIsInJhbmRvbV9zdGF0ZSIsInN0aCQwIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJjb25zdCQwIiwibm9uIiwiZm9yZXZlciIsImUkMCIsImNvbXBvc2UiLCJnIiwiZmxpcCIsImFwcGx5X25fdGltZXMiLCJ4JDEiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMjIiLCJmb2xkX2xlZnQiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDgiLCJiXzAwOSIsIm9mX2FfMDEwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsInJhbmdlIiwic3RyaWRlIiwic3RhcnRfaSIsInN0b3BfaSIsInN0YXJ0IiwibmV4dF9pIiwib3JkZXIiLCJyYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW0iLCJpbml0aWFsX3N0cmlkZV9vcmRlciIsInN0YXJ0X2kkMCIsImFjY3VtIiwiaV90b19zdG9wX29yZGVyIiwibmV4dF9pJDAiLCJhY2N1bSQwIiwicmFuZ2UkMCIsInN0aCQxIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9yX2FsbDIiLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyIiwiZXhpc3RzMl9leG4iLCJicyIsInJldl9maWx0ZXIiLCJhY2N1IiwiZmlsdGVyIiwibm90X2ZvdW5kIiwiZmluZF9tYXBfZXhuIiwibm90X2ZvdW5kJDAiLCJmaW5kX2V4biIsImZpbmRpIiwibm90X2ZvdW5kJDEiLCJmaW5kaV9leG4iLCJmaW5kX21hcGkiLCJub3RfZm91bmQkMiIsImZpbmRfbWFwaV9leG4iLCJmb3JfYWxsaSIsImV4aXN0c2kiLCJtYXhfbm9uX3RhaWxjYWxsIiwiY291bnRfYXBwZW5kIiwieDEiLCJ4MiIsIngzIiwieDQiLCJ4NSIsImNvdW50X21hcCIsImN0ciIsIngxJDAiLCJmMSQzIiwieDIkMCIsImYxJDIiLCJmMiQyIiwieDMkMCIsImYxJDEiLCJmMiQxIiwiZjMkMSIsIng0JDAiLCJmMSQwIiwiZjIkMCIsImYzJDAiLCJmNCQwIiwieDUkMCIsImYxIiwiZjIiLCJmMyIsImY0IiwiZjUiLCJicyQwIiwieHMkMCIsIng4IiwieDciLCJ4NiIsIngwIiwieTAkMCIsInkxJDAiLCJ5MiQwIiwieTMkMCIsInk0JDAiLCJ5NSQwIiwieTYkMCIsInk3JDAiLCJ5OCQwIiwieTgiLCJ5NyIsInk2IiwieTUiLCJ5NCIsInkzIiwieTIiLCJ5MSIsInkwIiwiZm9sZGluZ19tYXAiLCJuZXdfYWNjIiwiZm9sZF9tYXAiLCJtYXAyX29rIiwibWFwMl9leG4iLCJyZXZfbWFwM19vayIsImwxJDAiLCJsMiQwIiwibDMkMCIsImFjIiwibDMkMSIsImwyJDEiLCJsMSQxIiwiYWMkMCIsInJldl9tYXAzIiwicmV2X21hcDNfZXhuIiwibWFwM19vayIsIm1hcDNfZXhuIiwicmV2X21hcF9hcHBlbmQiLCJoIiwibGlzdCQyIiwidW56aXAzIiwieiIsInppcF9leG4iLCJ6aXAiLCJyZXZfbWFwaSIsImZvbGRpbmdfbWFwaSIsImZvbGRfbWFwaSIsImZvbGRpIiwiZmlsdGVyaSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJyZWR1Y2VfYmFsYW5jZWQiLCJzdGVwX2FjY3VtIiwibnVtIiwibnVtJDAiLCJhY2MkMCIsImFjYyQxIiwibnVtJDEiLCJyZWR1Y2VfYmFsYW5jZWRfZXhuIiwiZ3JvdXBpIiwiYnJlYWskMCIsImdyb3VwcyIsImN1cnJlbnRfZ3JvdXAiLCJncm91cCIsInNvcnRfYW5kX2dyb3VwIiwiY29uY2F0X21hcCIsImNvbmNhdF9tYXBpIiwiY29udCIsIm1lcmdlIiwiaDIiLCJoMSIsIm1hcDIkMCIsIm1hcDMkMCIsInN5bWJvbCQyIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExIiwiYTEkMCIsImEyIiwicmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMiLCJ3aGljaF90b19rZWVwIiwidGwkMCIsInRvX2tlZXAkMiIsInRvX2tlZXAiLCJ0b19rZWVwJDAiLCJ0b19rZWVwJDEiLCJkZWR1cF9hbmRfc29ydCIsInNvcnRlZCIsImZpbmRfYV9kdXAiLCJsJDAiLCJoZDIiLCJoZDEiLCJjb250YWluc19kdXAiLCJsc3QiLCJmaW5kX2FsbF9kdXBzIiwic29ydGVkJDIiLCJwcmV2JDEiLCJzb3J0ZWQkMCIsInByZXYiLCJhbHJlYWR5X3JlY29yZGVkIiwic29ydGVkJDEiLCJwcmV2JDAiLCJhbGxfZXF1YWwiLCJjb3VudGkiLCJpZHgiLCJyZXZfZmlsdGVyX21hcCIsImZpbHRlcl9tYXAiLCJyZXZfZmlsdGVyX21hcGkiLCJpJDEiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9vcHQiLCJwYXJ0aXRpb24zX21hcCIsInRyZCIsInRyZCQwIiwieSQxIiwicGFydGl0aW9uX3RmIiwiZiQwIiwicGFydGl0aW9uX3Jlc3VsdCIsInRfb2Zfc2V4cCQwIiwib2ZfYV8wMTQiLCJvZl9iXzAxNSIsInhfMDIzIiwic2V4cF8wMjEiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMF8wMTkiLCJyZXMxXzAyMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMjQiLCJvZl9iXzAyNSIsInhfMDMwIiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczFfMDI5IiwidF9zZXhwX2dyYW1tYXIkMCIsInBhaXJfb2ZfZ3JvdXAiLCJrIiwiZ3JvdXAkMCIsImFsaXN0Iiwic29ydF9hbmRfZ3JvdXAkMCIsImtleSIsImtleSQwIiwibm90X2ZvdW5kJDMiLCJmaW5kX2V4biQwIiwidmFsdWUiLCJtZW0kMCIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwidDIkMSIsInQxJDEiLCJ0cmFuc3Bvc2UiLCJyb3dzJDAiLCJyb3dzIiwiY29sdW1ucyIsImRvX3JldiIsImNvbHVtbl9hY2MiLCJ0cmltbWVkX3Jvd3MiLCJmb3VuZF9lbXB0eSIsInRyaW1tZWQiLCJjb2x1bW5fYWNjJDAiLCJjb2x1bW4iLCJkb19yZXYkMCIsImNvbHVtbnMkMCIsImFyZzBfMDMxIiwicmVzMF8wMzIiLCJ0cmFuc3Bvc2VfZXhuIiwiaW50ZXJzcGVyc2UiLCJpc19zdWZmaXgiLCJzdWZmaXgiLCJsaXN0X2xlbiIsInN1ZmZpeF9sZW4iLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwicmVzMF8wMDQiLCJyZXMwXzAwNiIsImFyZzBfMDA3IiwicmVzMF8wMDgiLCJhcmcyXzAxMSIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsImhlcmUiLCJoZXJlJDAiLCJ0b19zZXhwX2h1bSIsInNleHBzIiwidG9fbWVzc2FnZSIsImluZm8iLCJvZl9tZXNzYWdlIiwidG9fc3RyaW5nX2h1bSIsIm1lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQiLCJvZl9sYXp5Iiwib2ZfbGF6eV9zZXhwIiwib2ZfbGF6eV90IiwibGF6eV90IiwiY3JlYXRlZiIsIm9mX3RodW5rIiwic3RyaWN0Iiwic2V4cF9vZl94IiwidGFnX3NfbGF6eSIsInRhZ19zIiwidGFnX2FyZyIsInRvX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJiYWNrdHJhY2UkMiIsInJhaXNlIiwicmFpc2VfcyIsInRvX2luZm8iLCJvZl9pbmZvIiwiY2hlY2tfZmllbGQiLCJhXzAwNyIsImJfMDA4Iiwib2ZfYV8wMTMiLCJ4XzAxNSIsIm9mX2FfMDE2IiwieF8wMTciLCJpbnZhcmlhbnRfYSIsImUxIiwiZTIiLCJ0cnlfd2l0aF9qb2luIiwib2ZfZXhuX3Jlc3VsdCIsImVycm9yX3MiLCJlcnJvcl9zdHJpbmciLCJlcnJvcmYiLCJ1bmltcGxlbWVudGVkIiwiZmlsdGVyX29rX2F0X2xlYXN0X29uZSIsImZpbmRfb2siLCJmaW5kX21hcF9vayIsImVycm9yX3NvdXJjZV8wMDMiLCJzZXhwXzAwNCIsImdlcSIsImxlcSIsImJldHdlZW4iLCJsb3ciLCJoaWdoIiwiY2xhbXBfdW5jaGVja2VkIiwiY2xhbXBfZXhuIiwiY2xhbXAiLCJsZXhpY29ncmFwaGljIiwiY21wcyIsImNtcHMkMCIsImxpZnQiLCJyZXZlcnNlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJoYXNoX3BhcmFtIiwicG9seSIsIm9mX2tleSIsIktleSIsInRvX2tleSIsImhhc2hfcGFyYW0kMCIsInBvbHkkMCIsIm9mX2tleSQwIiwidG9fa2V5JDAiLCJoYXNoYWJsZSIsImdldF9wb3NfbGVuIiwiZmluZF9maXJzdF9zYXRpc2Z5aW5nIiwicHJlZCIsInBvcyQwIiwiaGkkMCIsImxvJDEiLCJtaWQiLCJsbyQyIiwibG8kMCIsImZpbmRfbGFzdF9zYXRpc2Z5aW5nIiwiYmluYXJ5X3NlYXJjaCIsImhvdyIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwic2VnbWVudF9vZiIsImlzX2xlZnQiLCJpc19yaWdodCIsImFsbCQwIiwic3JjIiwic3JjX3BvcyIsImRzdCIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJ2YWx1ZV9tYXAiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJhX29mX3NleHAiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJpc19maXJzdCIsImlzX3NlY29uZCIsImZpcnN0Iiwic2Vjb25kIiwiZXExIiwiZXEyIiwib3RoZXIiLCJlaXRoZXIiLCJvdGhlcl9sb29wIiwicmV0dXJuX2xvb3AiLCJjb21iaW5lX2FsbCIsIm90aGVyX2xvb3AkMCIsInJldHVybl9sb29wJDAiLCJjb21iaW5lX2FsbF91bml0IiwidG9fb3B0aW9uIiwiZWl0aGVyJDAiLCJjb21iaW5lJDAiLCJpdGVyaSQwIiwiaXRlcmkkMSIsImZvbGRpJDAiLCJmb2xkaSQxIiwiY291bnRpJDAiLCJleGlzdHNpJDAiLCJmb3JfYWxsaSQwIiwiZmluZF9tYXBpJDAiLCJmaW5kaSQwIiwiZXJyb3Jfc291cmNlXzAyNSIsIm9mX3NfMDAyIiwibmV4dF9zdGVwIiwiZGVsYXllZF9mb2xkX3N0ZXAiLCJuZXh0IiwidW5mb2xkX3N0ZXAiLCJ1bmZvbGQiLCJ1bmZvbGRfd2l0aCIsInNlZWQkMCIsInNlZWQkMSIsInVuZm9sZF93aXRoX2FuZF9maW5pc2giLCJydW5uaW5nX3N0ZXAiLCJpbm5lcl9maW5pc2hlZCIsImZpbmlzaGluZ19zdGVwIiwic3RhdGUkMCIsInN0YXRlJDEiLCJzdGF0ZSQyIiwiaW5uZXJfc3RhdGUiLCJzdGF0ZSQzIiwiaW5uZXJfc3RhdGUkMCIsImlubmVyX3N0YXRlJDEiLCJzdGF0ZSQ0Iiwic3RhdGUkNSIsInNlZWQkMiIsInYkMCIsInRvX2xpc3RfcmV2Iiwic3RhcnRfdiIsInN0b3BfdiIsInN0ZXAiLCJ0X2xhenkiLCJsJDIiLCJzb21lX2IiLCJlbXB0eSIsIm5leHQkMCIsInMkMyIsImFfMDExIiwiYl8wMTIiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE5IiwiYV8wMTciLCJiXzAyMCIsImJfMDE4IiwiYTAkMSIsImhzdiQzIiwib2ZfYV8wMjEiLCJvZl9iXzAyMiIsInNleHBfMDI3IiwidGFnXzAyOCIsInNleHBfYXJnc18wMzQiLCJhcmcwXzAzNSIsInJlczBfMDM2Iiwic2V4cF9hcmdzXzAyOSIsImFyZzBfMDMwIiwic2V4cF9hcmdzXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwib2ZfYV8wNDYiLCJvZl9iXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMV8wNTMiLCJhcmcwXzA1MiIsInJlczBfMDU0IiwicmVzMV8wNTUiLCJtZXJnZV93aXRoX2R1cGxpY2F0ZXMiLCJuZXh0MiIsInMyIiwibmV4dDEiLCJzMSIsInMyJDAiLCJzMiQxIiwiczEkMCIsInMyJDIiLCJzMSQxIiwiczIkMyIsImNvbXBhcmlzb24iLCJtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWQiLCJtZXJnZV9zb3J0ZWQiLCJ0bF9lYWdlcmx5X2V4biIsImxpZnRfaWRlbnRpdHkiLCJjaHVua3NfZXhuIiwiemlwX2Z1bGwiLCJib3VuZGVkX2xlbmd0aCIsImF0X21vc3QiLCJsZW5ndGhfaXNfYm91bmRlZF9ieSIsImN1ciIsImN1ciQwIiwibGFzdF9lbHQiLCJsYXN0X2VsdCQwIiwic2hpZnRfcmlnaHQiLCJzaGlmdF9yaWdodF93aXRoX2xpc3QiLCJzJDUiLCJhJDEiLCJzJDQiLCJyZXBlYXQiLCJjeWNsZV9saXN0X2V4biIsInNhIiwic2IiLCJzaW5nbGV0b24iLCJkZWxheWVkX2ZvbGQiLCJvcHRpb24iLCJmb2xkX20iLCJpdGVyX20iLCJmb3JjZV9lYWdlcmx5IiwibWVtb2l6ZSIsImRyb3BfZWFnZXJseSIsImRyb3Bfd2hpbGVfb3B0aW9uIiwidjIiLCJ2MSIsInJvdW5kX3JvYmluIiwiZG9uZV9zdGFjayIsInRvZG9fc3RhY2siLCJ0b2RvX3N0YWNrJDAiLCJpbnRlcmxlYXZlIiwiaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QiLCJvZl9zZXEiLCJzZXEiLCJ0b19zZXEiLCJ5aWVsZCQwIiwib2Zfc2VxdWVuY2UiLCJzZXF1ZW5jZSIsInRodW5rIiwic2V0Iiwic3dhcCQwIiwidG1wIiwibGVmdCIsInJpZ2h0IiwiZmluYWxfcG9zIiwiaV9uZXh0IiwiaGVhcGlmeSIsInJvb3QiLCJyb290JDAiLCJyZWxhdGl2ZV9yb290IiwibGVmdF9jaGlsZCIsInJpZ2h0X2NoaWxkIiwibGFyZ2VzdCIsImxhcmdlc3QkMCIsInNvcnQkMCIsImZpdmVfZWxlbWVudF9zb3J0IiwibTEiLCJtMiIsIm0zIiwibTQiLCJtNSIsImNvbXBhcmVfYW5kX3N3YXAiLCJpbnRyb19zb3J0IiwibWF4X2RlcHRoIiwibWF4X2RlcHRoJDAiLCJsZWZ0JDAiLCJtYXhfZGVwdGgkMSIsInNpeHRoIiwibTJfdmFsIiwibTNfdmFsIiwibTRfdmFsIiwibWlkZGxlX3NvcnRlZCIsInBpdm90MiIsInBpdm90MSIsInAkMSIsInIkMiIsInB2IiwiciQwIiwiciQxIiwicCQwIiwibGVmdCQxIiwic29ydCQxIiwic29ydCQyIiwiZWx0X2lfbWludXNfMSIsIm1lcmdlZCIsImExX2luZGV4IiwiYTJfaW5kZXgiLCJ1c2VfYTEiLCJjb3B5X21hdHJpeCIsInJldl9pbnBsYWNlIiwib2ZfbGlzdF9yZXYiLCJvZl9saXN0X21hcCIsIm9mX2xpc3RfbWFwaSIsIm9mX2xpc3RfcmV2X21hcCIsIm9mX2xpc3RfcmV2X21hcGkiLCJtYXBfaW5wbGFjZSIsImZpbmRpX2ludGVybmFsIiwiaWZfZm91bmQiLCJpZl9ub3RfZm91bmQiLCJmb3VuZCIsInZhbHVlX2ZvdW5kIiwicmVzMSIsInJlczIiLCJzb3J0ZWRfY29weSIsInBhcnRpdGlvbmlfdGYiLCJ0cnVlcyIsImZhbHNlcyIsInRvX3NlcXVlbmNlX211dGFibGUiLCJ0b19zZXF1ZW5jZSIsImkxIiwiaTIiLCJ0dCIsIndpZHRoIiwiZGVwdGgiLCJkIiwidyIsInR0JDAiLCJnZXQkMCIsInplcm9fb2JqIiwiY3JlYXRlX3plcm8iLCJ1bnNhZmVfZ2V0IiwidW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5Iiwib2JqIiwic2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJ1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW4iLCJvbGRfb2JqIiwidW5zYWZlX3NldCIsInVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZSIsInVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5XyIsInVuc2FmZV9zZXRfaW50IiwidW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIiLCJ1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQiLCJjcmVhdGVfb2JqX2FycmF5Iiwib2ZfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImkkMiIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJjb250YWlucyIsInBvcyQxIiwiZW5kIiwiaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJpbmRleF9leG5faW50ZXJuYWwiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tX2V4biIsInJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCIsInJpbmRleF9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb21fZXhuIiwicmluZGV4IiwiaW5kZXhfZnJvbSIsInJpbmRleF9mcm9tIiwiY2FzZV9zZW5zaXRpdmUiLCJwYXR0ZXJuIiwia21wX2ludGVybmFsX2xvb3AiLCJtYXRjaGVkX2NoYXJzIiwibmV4dF90ZXh0X2NoYXIiLCJrbXBfYXJyYXkiLCJjaGFyX2VxdWFsIiwibWF0Y2hlZF9jaGFycyQwIiwiZ2V0X2NoYXJfZXF1YWwiLCJpbmRleF9pbnRlcm5hbCIsInRleHQiLCJtYXRjaGVzIiwiaW4kMCIsImluZGV4X2V4biQwIiwiaW5kZXhfYWxsIiwibWF5X292ZXJsYXAiLCJyZXBsYWNlX2ZpcnN0Iiwid2l0aCQwIiwibGVuX3MiLCJsZW5fdCIsImxlbl93aXRoIiwicmVwbGFjZV9hbGwiLCJudW1fbWF0Y2hlcyIsIm5leHRfZHN0X3BvcyIsIm5leHRfc3JjX3BvcyIsInNwbGl0X29uIiwicGF0dGVybl9sZW4iLCJhXzAwMiIsImJfMDAzIiwia21wX2FycmF5XzAxMSIsImNhc2Vfc2Vuc2l0aXZlXzAwOSIsInBhdHRlcm5fMDA3IiwiYXJnXzAxMiIsImJuZHNfMDA2IiwiYXJnXzAxMCIsImJuZHNfMDA2JDAiLCJhcmdfMDA4IiwiYm5kc18wMDYkMSIsInJlcHJlc2VudGF0aW9uIiwic3Vic3RyX2luZGV4X2dlbiIsInN1YnN0cl9pbmRleF9leG5fZ2VuIiwic3Vic3RyX2luZGV4X2FsbF9nZW4iLCJzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4iLCJzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIiwiaXNfc3Vic3RyaW5nX2dlbiIsInN1YnN0cmluZyIsInN1YnN0cl9pbmRleCIsInN1YnN0cl9pbmRleF9leG4iLCJzdWJzdHJfaW5kZXhfYWxsIiwic3Vic3RyX3JlcGxhY2VfZmlyc3QiLCJzdWJzdHJfcmVwbGFjZV9hbGwiLCJpc19zdWJzdHJpbmciLCJpc19zdWJzdHJpbmdfYXRfZ2VuIiwic3RyX3BvcyQxIiwic3RyX2xlbiIsInN1Yl9sZW4iLCJzdHJfcG9zIiwic3ViX3BvcyIsInN1Yl9wb3MkMCIsInN0cl9wb3MkMCIsImlzX3N1ZmZpeF9nZW4iLCJzdHJpbmdfbGVuIiwiaXNfcHJlZml4X2dlbiIsInByZWZpeF9sZW4iLCJzZXhwX29mX3QkMiIsInN0cmluZzEiLCJzdHJpbmcyIiwibGVuMiIsImxlbjEiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0IiwibHNwbGl0Ml9leG4iLCJsaW5lIiwiZGVsaW0iLCJub3RfZm91bmQkNCIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsIm9uIiwicnNwbGl0MiIsImNoYXJfbGlzdF9tZW0iLCJzcGxpdF9nZW4iLCJpc19kZWxpbSIsImxhc3RfcG9zIiwibGFzdF9wb3MkMSIsImxhc3RfcG9zJDAiLCJwb3MxIiwic3ViX3N0ciIsInNwbGl0Iiwic3BsaXRfb25fY2hhcnMiLCJjaGFycyIsImJhY2tfdXBfYXRfbmV3bGluZSIsImVvbCIsInNwbGl0X2xpbmVzIiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZ19hdCQwIiwid3JhcF9zdWJfbiIsIm9uX2Vycm9yIiwiZHJvcF9wcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImxmaW5kaSIsInJmaW5kaSIsImxhc3Rfbm9uX2Ryb3AiLCJyc3RyaXAiLCJmaXJzdF9ub25fZHJvcCIsImxzdHJpcCIsInN0cmlwIiwidHIiLCJ0cl9tdWx0aSIsImNvbmNhdF9hcnJheSIsImFyIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwiYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoIiwiZXNjYXBld29ydGh5X21hcCIsImVzY2FwZV9jaGFyIiwiZXNjYXBld29ydGh5X21hcCQwIiwidmFscyIsImNfdG8iLCJjX2Zyb20iLCJrJDAiLCJlc2NhcGVfZ2VuIiwiZXNjYXBld29ydGh5IiwidG9fZXNjYXBlX2xlbiIsInRvX2VzY2FwZSIsImxhc3RfaWR4IiwibGFzdF9kc3RfcG9zIiwibGFzdF9pZHgkMCIsImxhc3RfZHN0X3BvcyQwIiwidG9fZXNjYXBlJDAiLCJlc2NhcGVkX2NoYXIiLCJsYXN0X2lkeCQxIiwibGFzdF9kc3RfcG9zJDEiLCJlc2NhcGVfZ2VuX2V4biIsImVzY2FwZSIsInVuZXNjYXBlX2dlbiIsInN0YXR1cyIsInRvX3VuZXNjYXBlIiwic3RhdHVzJDAiLCJ0b191bmVzY2FwZSQwIiwidW5lc2NhcGVfZ2VuX2V4biIsInVuZXNjYXBlIiwicHJlY2VkaW5nX2VzY2FwZV9jaGFycyIsImNudCIsImNudCQwIiwidXBkYXRlX2VzY2FwZV9zdGF0dXMiLCJlc2NhcGVfc3RhdHVzIiwib2RkIiwiY2hlY2tfYm91bmQiLCJmdW5jdGlvbl9uYW1lIiwiaXNfY2hhcl9lc2NhcGluZyIsImlzX2NoYXJfZXNjYXBlZCIsImlzX2NoYXJfbGl0ZXJhbCIsImluZGV4X2Zyb20kMCIsInN0YXR1cyQxIiwiaW5kZXhfZnJvbV9leG4kMCIsImluZGV4JDEiLCJpbmRleF9leG4kMSIsInJpbmRleF9mcm9tJDAiLCJlc2NhcGVfY2hhcnMiLCJyaW5kZXhfZnJvbV9leG4kMCIsInJpbmRleCQwIiwicmluZGV4X2V4biQwIiwic3BsaXRfZ2VuJDAiLCJzcGxpdCQwIiwic3BsaXRfb25fY2hhcnMkMCIsInNwbGl0X2F0IiwibHNwbGl0MiQwIiwicnNwbGl0MiQwIiwibHNwbGl0Ml9leG4kMCIsInJzcGxpdDJfZXhuJDAiLCJsYXN0X25vbl9kcm9wX2xpdGVyYWwiLCJmaXJzdF9ub25fZHJvcF9saXRlcmFsIiwicnN0cmlwX2xpdGVyYWwiLCJsc3RyaXBfbGl0ZXJhbCIsInN0cmlwX2xpdGVyYWwiLCJiZXR3ZWVuJDAiLCJjbGFtcF9leG4kMCIsImNsYW1wJDAiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwidW5zYWZlX2JsaXQkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibWludXNfb25lIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJtYXhfdmFsdWVfMzBfYml0cyIsImFicyIsInJlbSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJyZWZsIiwic3ltIiwidHJhbnMiLCJjb252IiwiZGV0dXBsZTIiLCJ0dXBsZTIiLCJ3aXRuZXNzIiwidl8wMDUiLCJ0b19zZXhwIiwidWlkIiwic2FtZV93aXRuZXNzIiwic2FtZSIsInNhbWVfd2l0bmVzc19leG4iLCJub25lX3N1YnN0aXR1dGUiLCJub25lIiwidmFsdWVfdW5zYWZlIiwib2Zfc2V4cGFibGUiLCJ0b19zZXhwYWJsZSIsInhfMDAzIiwib2ZfYV8wMDQiLCJ4XzAwNSIsImluaXRfc29tZSIsImdldF9zb21lX2V4biIsImlzX25vbmUkMCIsImlzX3NvbWUkMCIsInNldF9zb21lIiwic2V0X25vbmUiLCJ1bnNhZmVfZ2V0X3NvbWVfZXhuIiwidW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUiLCJ1bnNhZmVfaXNfc29tZSIsInVuc2FmZV9zZXRfc29tZSIsInVuc2FmZV9zZXRfbm9uZSIsImNsZWFyIiwiZWxlbSIsIm1hcF9zb21lIiwib2ZfYXJyYXlfc29tZSIsImNhcGFjaXR5IiwiZWx0cyIsImxlbmd0aF8wMDMiLCJlbHRzXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwMiIsImFyZ18wMDQiLCJibmRzXzAwMiQwIiwicmVzaXplIiwic2l6ZSIsInNldF9jYXBhY2l0eSIsIm5ld19jYXBhY2l0eSIsIm5ld19jYXBhY2l0eSQwIiwicHVzaCIsInBvcF9ub25lbXB0eSIsInBvcF9lcnJvciIsInBvcCIsInBvcF9leG4iLCJ0b3Bfbm9uZW1wdHkiLCJ0b3BfZXJyb3IiLCJ0b3AiLCJ0b3BfZXhuIiwidW50aWxfZW1wdHkiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDI3IiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9zZXhwX2dyYW1tIiwiYWxsX29mX2EiLCJlbnVtZXJhdGVfMDAyIiwiZW51bWVyYXRlXzAwMSIsImFjYyQyIiwib2ZfYV8wMDMiLCJzZXhwXzAwOCIsInRhZ18wMDkiLCJzZXhwX2FyZ3NfMDEwIiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJpbnRlcnZhbF9jb21wYXJpc29uX29mX3NleHAiLCJzZXhwXzAyOCIsInNleHBfb2ZfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImNvbXBhcmVfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIiwiaGFzaF9pbnRlcnZhbF9jb21wYXJpc29uIiwiaW5jbCIsImV4Y2wiLCJpc19sb3dlcl9ib3VuZCIsImlzX3VwcGVyX2JvdW5kIiwiYm91bmRzX2Nyb3NzZWQiLCJsb3dlciIsInVwcGVyIiwibG93ZXIkMCIsInVwcGVyJDAiLCJjb21wYXJlX3RvX2ludGVydmFsX2V4biIsImludGVydmFsX2NvbnRhaW5zX2V4biIsImVycm9yX3NvdXJjZV8wNTciLCJyaWdodF8wMDQiLCJsZWZ0XzAwMyIsInJpZ2h0XzAwOCIsImxlZnRfMDA3Iiwib2ZfYV8wMDkiLCJ2XzAxMCIsImNtcF9rIiwiY21wX3YiLCJ0XzAxNCIsInRfMDEzIiwidF8wMTYiLCJ0XzAxNSIsInJpZ2h0XzAxOCIsImxlZnRfMDE3IiwicmlnaHRfMDIyIiwibGVmdF8wMjEiLCJ0XzAyNCIsInRfMDIzIiwidF8wMjYiLCJ0XzAyNSIsInJpZ2h0XzAyMCIsImxlZnRfMDE5IiwidF8wMzAiLCJ0XzAyOSIsInRfMDMyIiwidF8wMzEiLCJyaWdodF8wMzQiLCJsZWZ0XzAzMyIsInJpZ2h0XzAzOCIsImxlZnRfMDM3IiwidF8wNDAiLCJ0XzAzOSIsInRfMDQyIiwidF8wNDEiLCJyaWdodF8wMzYiLCJsZWZ0XzAzNSIsIm9mX2tfMDQzIiwib2Zfdl8wNDQiLCJzZXhwXzA3MSIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsImF0b21fMDQ3Iiwic2V4cF9hcmdzXzA1MCIsImF0b21fMDQ3JDAiLCJhcmcwXzA1OCIsInJlczBfMDU5IiwiYXJnMF8wNjEiLCJyZXMwXzA2MiIsImFyZzBfMDY0IiwicmVzMF8wNjUiLCJyZXMxXzA3MCIsIm9mX2tfMDcyIiwib2Zfdl8wNzMiLCJhcmcxXzA4MiIsImFyZzBfMDgxIiwicmVzMF8wODMiLCJ2XzA3NCIsInJlczFfMDg0Iiwidl8wNzYiLCJhcmcxXzA3OCIsImFyZzBfMDc3IiwicmVzMF8wNzkiLCJyZXMxXzA4MCIsInZfMDc1Iiwia19zZXhwX2dyYW1tYXIiLCJ2X3NleHBfZ3JhbW1hciIsImNtcF9sZWZ0IiwiY21wX3JpZ2h0IiwiYV8wODUiLCJiXzA4NiIsInJpZ2h0XzA5MiIsImxlZnRfMDkxIiwidF8wOTQiLCJ0XzA5MyIsInRfMDk2IiwidF8wOTUiLCJyaWdodF8wODgiLCJsZWZ0XzA4NyIsInJpZ2h0XzA5MCIsImxlZnRfMDg5IiwiYV8wOTciLCJiXzA5OCIsInJpZ2h0XzEwNCIsImxlZnRfMTAzIiwidF8xMDYiLCJ0XzEwNSIsInRfMTA4IiwidF8xMDciLCJyaWdodF8xMDAiLCJsZWZ0XzA5OSIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwib2ZfbGVmdF8xMDkiLCJvZl9yaWdodF8xMTAiLCJ2XzExMyIsImFyZzFfMTE1IiwiYXJnMF8xMTQiLCJyZXMwXzExNiIsInJlczFfMTE3Iiwidl8xMTEiLCJ2XzExMiIsInNleHBfb2ZfdCQzIiwiaGVpZ2h0IiwiaW5fcmFuZ2UiLCJobCIsImhyIiwibG93ZXIkMSIsImludmFyaWFudHMiLCJoJDEiLCJoJDAiLCJzbCIsInNyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwia2wiLCJrJDEiLCJrbCQwIiwiayQyIiwia3IiLCJsZWZ0X2xlbmd0aCIsInJpZ2h0X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQiLCJhcnJheV9sZW5ndGgiLCJvZl9zb3J0ZWRfYXJyYXkiLCJpbmNyZWFzaW5nIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2JDAiLCJscmwiLCJscnYiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYkMCIsInJsbCIsInJsdiIsImF1eCIsImxoIiwibHYkMCIsInJoIiwicnYkMCIsIm1pbl9lbHRfZXhuIiwiZm9sZF91bnRpbF9oZWxwZXIiLCJ2YWx1ZSQwIiwibWF4X2VsdF9leG4iLCJyZW1vdmVfbWluX2VsdCIsIm1heWJlX2VsdCIsIm1heWJlX2VsdCQwIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwicmVtb3ZlX2luZGV4IiwibF9zaXplIiwidW5pb24iLCJ2MSQwIiwidjIkMCIsInIyJDAiLCJyMSQwIiwidW5pb25fbGlzdCIsInRvX3RyZWUiLCJpbnRlciIsIm90aGVyX3NldCIsImUkMSIsImNvbnNfcmlnaHQiLCJvZl9zZXQiLCJlbnVtJDAiLCJ0cmVlIiwic3ltbWV0cmljX2RpZmYiLCJlbHQkMCIsImVudW0xIiwidHJlZTEiLCJlbnVtMiIsInRyZWUyIiwiY29tcGFyZV9yZXN1bHQiLCJuZXh0X3N0YXRlIiwiZ3JlYXRlcl9vcl9lcXVhbF90byIsImxlc3Nfb3JfZXF1YWxfdG8iLCJpbmNsdXNpdmVfYm91bmQiLCJzaWRlIiwibWF5YmUiLCJ2JDEiLCJpbml0JDAiLCJ2JDIiLCJ2JDMiLCJ2JDQiLCJlJDIiLCJtZXJnZV90b19zZXF1ZW5jZSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInQyJDIiLCJ0MSQyIiwiaXNfc3Vic2V0IiwiYXJlX2Rpc2pvaW50IiwiYWNjdSQwIiwiYWNjdSQxIiwiZmlsdCIsInBhcnQiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImNob29zZSIsImNob29zZV9leG4iLCJwb3NfcmVmIiwiZ3JvdXBfYnkiLCJlcXVpdiIsInNldCQwIiwiZXF1aXZfY2xhc3NlcyIsIm5vdF9lcXVpdl94IiwiZXF1aXZfeCIsImVxdWl2X2NsYXNzZXMkMCIsInN0YWJsZV9kZWR1cF9saXN0IiwibGVmdG92ZXJzIiwiYWxyZWFkeV9zZWVuIiwiYWxyZWFkeV9zZWVuJDAiLCJsZWZ0b3ZlcnMkMCIsInRfb2Zfc2V4cF9kaXJlY3QiLCJlbHRfbHN0IiwiZWxfc2V4cCIsImlzX3N1YnNldCQwIiwic3Vic2V0Iiwic3VwZXJzZXQiLCJzZXhwX29mX2VsdCIsImludmFsaWRfZWxlbWVudHMiLCJpbnZhbGlkX2VsZW1lbnRzX3NleHAiLCJsaWtlIiwiaW52YXJpYW50cyQwIiwiZWxlbWVudHMkMCIsIm1pbl9lbHRfZXhuJDAiLCJtYXhfZWx0X2V4biQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJmb2xkX3JpZ2h0JDAiLCJpdGVyMiQwIiwiZmlsdGVyJDAiLCJhZGQkMCIsInJlbW92ZSQwIiwidW5pb24kMCIsImludGVyJDAiLCJkaWZmJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiY29tcGFyZV9kaXJlY3QiLCJpc19zdWJzZXQkMSIsIm9mIiwiYXJlX2Rpc2pvaW50JDAiLCJ0b19uYW1lZF90cmVlIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsImdyb3VwX2J5JDAiLCJudGgkMCIsInJlbW92ZV9pbmRleCQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJtZXJnZV90b19zZXF1ZW5jZSQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsInRfb2Zfc2V4cF9kaXJlY3QkMCIsImludmFyaWFudHMkMSIsImlzX2VtcHR5JDEiLCJlbGVtZW50cyQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJjaG9vc2UkMSIsImNob29zZV9leG4kMSIsInRvX2xpc3QkMSIsInRvX2FycmF5JDEiLCJpdGVyJDIiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImNvdW50JDEiLCJzdW0kMSIsImZpbmQkMSIsImZpbmRfZXhuJDEiLCJmaW5kX21hcCQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZmlsdGVyJDEiLCJmaWx0ZXJfbWFwJDAiLCJwYXJ0aXRpb25fdGYkMSIsIml0ZXIyJDEiLCJtZW0kMSIsImFkZCQxIiwicmVtb3ZlJDEiLCJ1bmlvbiQxIiwiaW50ZXIkMSIsImRpZmYkMSIsInN5bW1ldHJpY19kaWZmJDEiLCJjb21wYXJlX2RpcmVjdCQwIiwiaXNfc3Vic2V0JDMiLCJhcmVfZGlzam9pbnQkMSIsIm9mX2xpc3QkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9hcnJheSQwIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQwIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDAiLCJvZl9zb3J0ZWRfYXJyYXkkMCIsInVuaW9uX2xpc3QkMCIsInN0YWJsZV9kZWR1cF9saXN0JDAiLCJncm91cF9ieSQxIiwic3BsaXQkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiY29tcGFyYXRvcl9zIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDEiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJibmRzXzAwMiQxIiwiYm5kc18wMDIkMiIsImJuZHNfMDAyJDMiLCJtdXQyIiwibXV0MSIsImZyb250IiwiY2FwYWNpdHkkMCIsImNhcGFjaXR5JDEiLCJibGl0X3RvX2FycmF5IiwiZnJvbnRfbGVuIiwicmVzdF9sZW4iLCJkZXNpcmVkX2NhcGFjaXR5IiwiZW5xdWV1ZSIsImRlcXVldWVfbm9uZW1wdHkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWUiLCJmcm9udF9ub25lbXB0eSIsImxhc3Rfbm9uZW1wdHkiLCJwZWVrIiwicGVla19leG4iLCJibGl0X3RyYW5zZmVyIiwibGVuJDEiLCJkc3Rfc3RhcnQiLCJzcmNfaSIsImRzdF9pIiwiZW5xdWV1ZV9hbGwiLCJ0X3Jlc3VsdCIsImZpbHRlcl9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsImQkMCIsImFkZF9leG4iLCJhZGRfZXhuX2ludGVybmFsIiwic2luZ2xldG9uX3RvX3RyZWVfZXhuIiwiY29sbGFwc2UiLCJnbyIsImFkZF91bmNoZWNrZWQiLCJnbyQwIiwidG9fdHJlZV91bmNoZWNrZWQiLCJtYXhfa2V5Iiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsImJ1aWxkZXIiLCJwcmV2X2tleSIsImpvaW4kMCIsImxkJDAiLCJsayQwIiwicmsiLCJyZCQwIiwicmskMCIsImxrIiwiY21wJDAiLCJtYXliZSQwIiwic3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IiwiaW50byIsImJvdW5kYXJ5X29wdCIsImluc2VydF9pbnRvIiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJpbml0JDEiLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwicmVtb3ZlX2xvb3AiLCJjaGFuZ2UiLCJjaGFuZ2VfY29yZSIsImQkMSIsImxlbmd0aCQyIiwibGVuZ3RoJDMiLCJ1cGRhdGUiLCJ1cGRhdGVfY29yZSIsInJlbW92ZV9tdWx0aSIsIm5vbl9lbXB0eV90YWlsIiwiaXRlcl9rZXlzIiwiaXRlcmlfdW50aWxfbG9vcCIsIml0ZXJpX3VudGlsIiwiZm9sZF91bnRpbF9sb29wIiwiZmluYWwkMSIsImZpbmFsJDAiLCJmaWx0ZXJfa2V5cyIsInBhcnRpdGlvbl9tYXBpIiwicGFpcjIiLCJwYWlyMSIsImN1cnIiLCJrMiIsIm5leHQkMSIsImRhdGFfZXF1YWwiLCJrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8iLCJrZXlzX2xlc3Nfb3JfZXF1YWxfdG8iLCJkJDIiLCJjb21wYXJlX2RhdGEiLCJkMiIsImQxIiwiZm9sZDIkMCIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJkZWx0YSIsImFjYyQzIiwiYWNjJDQiLCJhY2MkNSIsImFjYyQ2IiwiYWNjJDciLCJyaWdodCQyIiwibGVmdCQyIiwicmlnaHQkMSIsImtleXMiLCJvZl9mb2xkYWJsZV9mb2xkIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9yZWR1Y2UiLCJuZXdfZGF0YSIsIm9mX2ZvbGRhYmxlIiwib2ZfZm9sZGFibGVfb3JfZXJyb3IiLCJvZl9mb2xkYWJsZV9leG4iLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2ZvbGRhYmxlX211bHRpIiwib2ZfYWxpc3RfbXVsdGkiLCJmb2xkJDIiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IiLCJvZl9zZXF1ZW5jZV9leG4iLCJvZl9zZXF1ZW5jZV9tdWx0aSIsInRvX2FsaXN0Iiwia2V5X29yZGVyIiwibWVyZ2VfbGFyZ2VfZmlyc3QiLCJsZW5ndGhfbGFyZ2UiLCJ0X2xhcmdlIiwidF9zbWFsbCIsIm1lcmdlX3NrZXdlZCIsImxlbmd0aDEiLCJsZW5ndGgyIiwicmVwYWNrYWdlIiwibWFya2VyIiwiY2xvc2VzdF9rZXkiLCJmb3VuZF9tYXJrZXIiLCJmb3VuZF9rZXkiLCJmb3VuZF92YWx1ZSIsImZvdW5kX3ZhbHVlJDAiLCJmb3VuZF9rZXkkMCIsInJhbmsiLCJudW1fdG9fc2VhcmNoIiwicGFpciIsInBhaXIkMCIsImJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIiwibWF5YmVfYm91bmQiLCJpZl9leGNsdXNpdmUiLCJpZl9pbmNsdXNpdmUiLCJmaW5kX2JvdW5kIiwiYm91bmQkMCIsImJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyIsImxvd2VyX2JvdW5kJDAiLCJ1cHBlcl9ib3VuZCQwIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJrZXlfb2Zfc2V4cCIsInZhbHVlX29mX3NleHAiLCJhbGlzdF9zZXhwcyIsImZvdW5kX2ZpcnN0X2siLCJrMl9zZXhwIiwic2V4cF9vZl92YWx1ZSIsImVycm9yX3RyZWUiLCJva3MiLCJtYXBfa2V5cyIsIm1hcF9rZXlzX2V4biIsImxpa2UyIiwibGlrZV9tYXliZV9ub19vcCIsIm9sZF90Iiwib2xkX3RyZWUiLCJ3aXRoX3NhbWVfbGVuZ3RoIiwic2V0JDEiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsIml0ZXJfa2V5cyQwIiwiaXRlcmlfdW50aWwkMCIsImZvbGQkMyIsImZvbGQyJDEiLCJmaWx0ZXJfa2V5cyQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJjb21iaW5lX2Vycm9ycyQwIiwia2V5cyQwIiwidG9fYWxpc3QkMCIsImZvbGRfc3ltbWV0cmljX2RpZmYkMCIsIm1lcmdlJDAiLCJtZXJnZV9za2V3ZWQkMCIsImJvdGhfbGVuIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm9mX2FsaXN0JDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwib2ZfYWxpc3RfZm9sZCQwIiwib2ZfYWxpc3RfcmVkdWNlJDAiLCJvZl9pdGVyaSQwIiwib2ZfaXRlcmlfZXhuJDAiLCJyZXF1aXJlZF9ieV9pbnRmIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQwIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMCIsIm9mX3NlcXVlbmNlX2V4biQwIiwib2Zfc2VxdWVuY2VfbXVsdGkkMCIsIm9mX3NlcXVlbmNlX2ZvbGQkMCIsIm9mX3NlcXVlbmNlX3JlZHVjZSQwIiwic2V0JDIiLCJhZGRfZXhuJDEiLCJhZGRfbXVsdGkkMSIsInJlbW92ZV9tdWx0aSQxIiwiZmluZF9tdWx0aSQxIiwiY2hhbmdlJDEiLCJ1cGRhdGUkMSIsIml0ZXJfa2V5cyQxIiwiaXRlcmlfdW50aWwkMSIsIm1hcGkkMSIsImZvbGQkNCIsImZvbGQyJDIiLCJmaWx0ZXJfa2V5cyQxIiwiZmlsdGVyaSQxIiwiZmlsdGVyX21hcGkkMSIsInBhcnRpdGlvbl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwJDEiLCJwYXJ0aXRpb25pX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwia2V5cyQxIiwiZGF0YSQxIiwidG9fYWxpc3QkMSIsImZvbGRfc3ltbWV0cmljX2RpZmYkMSIsIm1lcmdlJDEiLCJtZXJnZV9za2V3ZWQkMSIsImZvcl9hbGxpJDEiLCJleGlzdHNpJDEiLCJjb3VudGkkMSIsImFwcGVuZCQxIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDEiLCJyYW5nZV90b19hbGlzdCQxIiwiY2xvc2VzdF9rZXkkMSIsIm50aCQyIiwibnRoX2V4biQwIiwicmFuayQxIiwia19vZl9zZXhwIiwidl9vZl9zZXhwIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQwIiwibWFwX2tleXMkMCIsImR1cCIsIm1hcF9rZXlzX2V4biQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl90cmVlJDIiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJtYXBfa2V5cyQxIiwibWFwX2tleXNfZXhuJDEiLCJvZl90cmVlJDMiLCJvZl9hbGlzdCQyIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMiIsIm9mX2FsaXN0X2V4biQyIiwib2ZfYWxpc3RfbXVsdGkkMiIsIm9mX2FsaXN0X2ZvbGQkMiIsIm9mX2FsaXN0X3JlZHVjZSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwiSyIsInZfZ3JhbW1hciIsImNvbXBhcmVfdiIsImVxdWFsX3YiLCJoYXNoX2ZvbGRfdiIsIm9mX3RyZWUkNCIsImVtcHR5JDMiLCJvZl9hbGlzdCQzIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMyIsIm9mX2FsaXN0X2V4biQzIiwib2ZfYWxpc3RfbXVsdGkkMyIsIm9mX2FsaXN0X2ZvbGQkMyIsIm9mX2FsaXN0X3JlZHVjZSQzIiwib2ZfaXRlcmkkMyIsIm9mX2l0ZXJpX2V4biQzIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQzIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMyIsIm9mX3NlcXVlbmNlX2V4biQzIiwib2Zfc2VxdWVuY2VfbXVsdGkkMyIsIm9mX3NlcXVlbmNlX2ZvbGQkMyIsIm9mX3NlcXVlbmNlX3JlZHVjZSQzIiwibWFwX2tleXMkMyIsIm1hcF9rZXlzX2V4biQzIiwidHJhbnNmZXIiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ3cmFwX21vZHVsbyIsInVud3JhcCIsImNseiIsImN0eiIsImludmFsaWRfc3RyIiwic2lnbmVkbmVzcyIsInBvc19zdHIiLCJpbnQ2MyIsImludDYzJDAiLCJvbmUkMCIsIm9mX25hdGl2ZWludF90cnVuYyIsInRvX25hdGl2ZWludF90cnVuYyIsInRvX3N0cmluZyQxIiwicmVwciIsIm9mX2ludF90cnVuYyIsInJlcHIkMCIsImluY2x1ZGUiLCJvZl9mbG9hdCQwIiwidG9fZmxvYXQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludF9leG4kMCIsInBwJDAiLCJoYXNoYWJsZSQwIiwiaXNfcG9zaXRpdmUkMCIsImlzX25vbl9uZWdhdGl2ZSQwIiwiaXNfbmVnYXRpdmUkMCIsImlzX25vbl9wb3NpdGl2ZSQwIiwic2lnbiQwIiwiaW52YXJpYW50JDAiLCJ0b19zdHJpbmdfaHVtJDAiLCJtaW51c19vbmUkMCIsInJlbSQwIiwicm91bmQkMCIsInJvdW5kX3Rvd2FyZHNfemVybyQwIiwicm91bmRfZG93biQwIiwicm91bmRfdXAkMCIsInJvdW5kX25lYXJlc3QkMCIsInN1Y2MkMCIsInByZWQkMCIsInBvdyQwIiwiYml0X2FuZCQwIiwiYml0X29yJDAiLCJiaXRfeG9yJDAiLCJiaXRfbm90JDAiLCJwb3Bjb3VudCQwIiwic2hpZnRfbGVmdCQwIiwic2hpZnRfcmlnaHQkMCIsImRlY3IkMCIsImluY3IkMCIsIm9mX2ludDMyX2V4biQwIiwidG9faW50MzJfZXhuJDAiLCJvZl9pbnQ2NF9leG4kMCIsInRvX2ludDY0JDAiLCJvZl9uYXRpdmVpbnRfZXhuJDAiLCJ0b19uYXRpdmVpbnRfZXhuJDAiLCJudW1fYml0cyQwIiwibWF4X3ZhbHVlJDAiLCJtaW5fdmFsdWUkMCIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMCIsImNlaWxfcG93MiQwIiwiZmxvb3JfcG93MiQwIiwiY2VpbF9sb2cyJDAiLCJpc19wb3cyJDAiLCJjbHokMCIsImN0eiQwIiwib2ZfaW50JDAiLCJ0b19pbnQkMCIsInRvX2ludF90cnVuYyQwIiwidG9faW50MzIkMCIsIm9mX2ludDY0JDAiLCJvZl9uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludCQwIiwidG9fbmF0aXZlaW50X3RydW5jJDAiLCJvZl9mbG9hdF91bmNoZWNrZWQkMCIsInJlcHIkMSIsImJzd2FwMzIkMCIsImJzd2FwNDgkMCIsInBvc19kaWZmIiwibmVnYXRpdmVfb25lIiwiZGl2X3dvdWxkX292ZXJmbG93IiwicHJvZHVjdCIsImFicyQxIiwibmVnJDAiLCJyYW5kb21fb2ZfaW50IiwicmFuZG9tX29mX2ludDY0IiwicmFuZG9tX29mX2ludCQwIiwicmFuZG9tX2luY2xfb2ZfaW50IiwicmFuZG9tX2luY2xfb2ZfaW50NjQiLCJyYW5kb21faW5jbCIsImludiIsImxlZnRfa2V5IiwicmlnaHRfa2V5IiwidXBkYXRlX2hlaWdodCIsIm9sZF9oZWlnaHQiLCJuZXdfaGVpZ2h0IiwiYmFsYW5jZSIsInJvb3Rfbm9kZSIsImxlZnRfbm9kZSIsInJpZ2h0X25vZGUiLCJsZWZ0X25vZGVfbGVmdCIsImxlZnRfbm9kZV9yaWdodCIsImxyX2xlZnQiLCJscl9yaWdodCIsInJpZ2h0X25vZGVfbGVmdCIsInJpZ2h0X25vZGVfcmlnaHQiLCJybF9sZWZ0IiwicmxfcmlnaHQiLCJzZXRfbGVmdCIsIm5vZGUiLCJ0cmVlJDAiLCJzZXRfcmlnaHQiLCJhZGRlZCIsImZpbmRpX2FuZF9jYWxsX2ltcGwiLCJhcmcxIiwiYXJnMiIsImNhbGxfaWZfZm91bmQiLCJjYWxsX2lmX25vdF9mb3VuZCIsImZpbmRfYW5kX2NhbGwiLCJjYWxsX2lmX2ZvdW5kJDAiLCJjYWxsX2lmX25vdF9mb3VuZCQwIiwiZmluZGlfYW5kX2NhbGwiLCJjYWxsX2lmX2ZvdW5kJDEiLCJjYWxsX2lmX25vdF9mb3VuZCQxIiwiZmluZF9hbmRfY2FsbDEiLCJjYWxsX2lmX2ZvdW5kJDIiLCJjYWxsX2lmX25vdF9mb3VuZCQyIiwiZmluZGlfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQzIiwiY2FsbF9pZl9ub3RfZm91bmQkMyIsImZpbmRfYW5kX2NhbGwyIiwiY2FsbF9pZl9mb3VuZCQ0IiwiY2FsbF9pZl9ub3RfZm91bmQkNCIsImZpbmRpX2FuZF9jYWxsMiIsImlmX2ZvdW5kJDAiLCJpZl9ub3RfZm91bmQkMCIsInJlbW92ZWQiLCJrZXkkNCIsImRhdGEkNCIsInJrZXkiLCJyZGF0YSIsImtleSQxIiwicmtleSQwIiwicmRhdGEkMCIsImxrZXkkMCIsImxkYXRhJDAiLCJrZXkkMyIsImRhdGEkMyIsInJrZXkkMSIsInJkYXRhJDEiLCJsa2V5IiwibGRhdGEiLCJrZXkkMiIsImRhdGEkMiIsIm1hcGlfaW5wbGFjZSIsImVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIiwid2l0aG91dF9tdXRhdGluZyIsIm1heF90YWJsZV9sZW5ndGgiLCJncm93dGhfYWxsb3dlZCIsInNpemUkMCIsInNpemUkMSIsInNsb3QiLCJhZGRfd29ya2VyIiwibmV3X3Jvb3QiLCJtYXliZV9yZXNpemVfdGFibGUiLCJzaG91bGRfZ3JvdyIsIm5ld19hcnJheV9sZW5ndGgiLCJuZXdfdGFibGUiLCJvbGRfdGFibGUiLCJzZXhwX29mX2tleSQwIiwiYWRkZWRfb3JfcmVtb3ZlZCIsImJ1Y2tldCIsImNob29zZV9ub25lbXB0eSIsInRhYmxlIiwiYXZsdHJlZSIsImludmFyaWFudF9rZXkiLCJpbnZhcmlhbnRfZGF0YSIsInJlYWxfbGVuIiwibmV3X3QiLCJ0MCIsIm5ld19kYXRhJDAiLCJmaW5kX29yX2FkZCIsImlkIiwiZmluZGlfb3JfYWRkIiwiZmluZF9hbmRfcmVtb3ZlIiwidXBkYXRlX2FuZF9yZXR1cm4iLCJpbmNyX2J5IiwicmVtb3ZlX2lmX3plcm8iLCJieSIsImNyZWF0ZV9tYXBwZWQiLCJnZXRfa2V5IiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhIiwiYWN0aW9uIiwiZHN0X2RhdGEkMCIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwibWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSIsIm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUiLCJwaSIsInNxcnRfcGkiLCJzcXJ0XzJwaSIsImV1bGVyIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsImlyb3VuZF9uZWFyZXN0XzY0JDAiLCJpcm91bmRfbmVhcmVzdF9leG5fMzIiLCJpcm91bmRfbmVhcmVzdF9leG5fNjQiLCJpcm91bmRfbmVhcmVzdF9leG4iLCJpcm91bmRfZXhuIiwiaXJvdW5kIiwiaXNfaW5mIiwiaXNfZmluaXRlIiwibWluX2luYW4iLCJtYXhfaW5hbiIsInNxdWFyZSIsImZyYWN0aW9uYWwiLCJpbnRlZ3JhbCIsInJvdW5kX25lYXJlc3RfaW5saW5lIiwicm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4iLCJjZWlsX29yX3N1Y2MiLCJkaWZmX2Zsb29yIiwiZGlmZl9jZWlsIiwiaW50NjNfcm91bmRfbGJvdW5kIiwiaW50NjNfcm91bmRfdWJvdW5kIiwiaW50NjNfcm91bmRfdXBfZXhuIiwiaW50NjNfcm91bmRfZG93bl9leG4iLCJpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biIsImNsYXNzaWZ5Iiwic3RyaXBfemVybyIsImRlY2ltYWxzIiwiZXhwbGljaXRfcGx1cyIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0byIsImtpbG8iLCJtZWdhIiwiZ2lnYSIsInRlcmEiLCJwZXRhIiwibWFnIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJoaWdoZXIiLCJkaWZmX3JpZ2h0IiwiZGlmZl9sZWZ0IiwicGV0YSQwIiwidG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIiwicm91bmRfZ2VuIiwic2QiLCJkZCIsImRkJDAiLCJzZCQwIiwiZGQkMSIsInNkJDEiLCJhYnNfZGQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWwiLCJkZWNpbWFsX2RpZ2l0cyIsInNpZ25fZXhuIiwic2lnbl9vcl9uYW4iLCJpZWVlX25lZ2F0aXZlIiwibWFudGlzc2FfYml0cyIsImV4cG9uZW50X21hc2s2NCIsImV4cG9uZW50X21hc2siLCJtYW50aXNzYV9tYXNrIiwibWFudGlzc2FfbWFzazY0IiwiaWVlZV9leHBvbmVudCIsImllZWVfbWFudGlzc2EiLCJjcmVhdGVfaWVlZV9leG4iLCJuZWdhdGl2ZSIsIm1hbnRpc3NhIiwic2lnbl9iaXRzIiwiZXhwdF9iaXRzIiwibWFudF9iaXRzIiwiY3JlYXRlX2llZWUiLCJzcGVjaWFsaXplZF9oYXNoIiwiYWRkX3N1YnN0cmluZyIsImFkZF9zdWJieXRlcyIsImVsaWRlZF9tZXNzYWdlIiwiZWxpZGUiLCJhdF9tb3N0X251bV9mcmFtZXMiLCJ0b19zdHJpbmdfbGlzdCIsInNldF9yZWNvcmRpbmciLCJhbV9yZWNvcmRpbmciLCJtb3N0X3JlY2VudCIsIm1vc3RfcmVjZW50X2Zvcl9leG4iLCJ3aXRoX3JlY29yZGluZyIsInNhdmVkIiwib2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhIiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJib29sX29mX3NleHAiLCJzZXhwX29mX2Jvb2wiLCJib29sX3NleHBfZ3JhbW1hciIsImNoYXJfb2Zfc2V4cCIsInNleHBfb2ZfY2hhciIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJmdW5jJDEiLCJmbG9hdF9vZl9zZXhwIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X3NleHBfZ3JhbW1hciIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZnVuYyQ1IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fb2Zfc2V4cCIsInNleHBfb2Zfb3B0aW9uIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInJlZl9vZl9zZXhwIiwic2V4cF9vZl9yZWYiLCJyZWZfc2V4cF9ncmFtbWFyIiwic3RyaW5nX29mX3NleHAiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJjb21wYXJlX2J5dGVzIiwiZXF1YWxfYnl0ZXMiLCJieXRlc19vZl9zZXhwIiwic2V4cF9vZl9ieXRlcyIsImJ5dGVzX3NleHBfZ3JhbW1hciIsImZ1bmMkNiIsInVuaXRfb2Zfc2V4cCIsInNleHBfb2ZfdW5pdCIsInVuaXRfc2V4cF9ncmFtbWFyIiwiZmFpbHdpdGgiLCJpbnZhbGlkX2FyZyIsImNvbXBhcmVfYXJyYXkkMCIsImVxdWFsX2FycmF5JDAiLCJhcnJheV9vZl9zZXhwJDAiLCJzZXhwX29mX2FycmF5JDAiLCJhcnJheV9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYm9vbCQwIiwiZXF1YWxfYm9vbCQwIiwiaGFzaF9mb2xkX2Jvb2wkMCIsImhhc2hfYm9vbCQwIiwiYm9vbF9vZl9zZXhwJDAiLCJzZXhwX29mX2Jvb2wkMCIsImJvb2xfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2NoYXIkMCIsImVxdWFsX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJoYXNoX2ZvbGRfZmxvYXQkMCIsImhhc2hfZmxvYXQkMCIsImZsb2F0X29mX3NleHAkMCIsInNleHBfb2ZfZmxvYXQkMCIsImZsb2F0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQkMCIsImVxdWFsX2ludCQwIiwiaGFzaF9mb2xkX2ludCQwIiwiaGFzaF9pbnQkMCIsImludF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludCQwIiwiaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQzMiQwIiwiZXF1YWxfaW50MzIkMCIsImhhc2hfZm9sZF9pbnQzMiQwIiwiaGFzaF9pbnQzMiQwIiwiaW50MzJfb2Zfc2V4cCQwIiwic2V4cF9vZl9pbnQzMiQwIiwiaW50MzJfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDY0JDAiLCJlcXVhbF9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiaGFzaF9mb2xkX2xpc3QkMCIsImxpc3Rfb2Zfc2V4cCQwIiwic2V4cF9vZl9saXN0JDAiLCJsaXN0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9uYXRpdmVpbnQkMCIsImVxdWFsX25hdGl2ZWludCQwIiwiaGFzaF9mb2xkX25hdGl2ZWludCQwIiwiaGFzaF9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9vZl9zZXhwJDAiLCJzZXhwX29mX25hdGl2ZWludCQwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9vcHRpb24kMCIsImVxdWFsX29wdGlvbiQwIiwiaGFzaF9mb2xkX29wdGlvbiQwIiwib3B0aW9uX29mX3NleHAkMCIsInNleHBfb2Zfb3B0aW9uJDAiLCJvcHRpb25fc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3JlZiQwIiwiZXF1YWxfcmVmJDAiLCJyZWZfb2Zfc2V4cCQwIiwic2V4cF9vZl9yZWYkMCIsInJlZl9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfc3RyaW5nJDAiLCJlcXVhbF9zdHJpbmckMCIsImhhc2hfZm9sZF9zdHJpbmckMCIsImhhc2hfc3RyaW5nJDAiLCJzdHJpbmdfb2Zfc2V4cCQwIiwic2V4cF9vZl9zdHJpbmckMCIsInN0cmluZ19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYnl0ZXMkMCIsImVxdWFsX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiaGFzaF9mb2xkX3VuaXQkMCIsImhhc2hfdW5pdCQwIiwidW5pdF9vZl9zZXhwJDAiLCJzZXhwX29mX3VuaXQkMCIsInVuaXRfc2V4cF9ncmFtbWFyJDAiLCJyYWlzZV9zJDAiLCJwaHlzX2VxdWFsJDAiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJzZXRfaW5wdXRfbmFtZSIsIm5hbWUiLCJzZXRfaW5wdXRfbGV4YnVmIiwibGV4YnVmX29wdCIsInZlcnNpb25fc3BlY2lmaWNfdF9vZl90IiwieCIsImlzX3dlbGxfZm9ybWVkIiwiZXJyb3IiLCJzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIiwibXNnIiwibWFpbl9tc2ciLCJtYWluIiwibG9jIiwic3ViX21zZ3MiLCJzdWIiLCJlcnIiLCJzdWIkMCIsImFjYyIsInRhaWwiLCJzdWIkMSIsIm9mX2V4biIsImV4biIsImUiLCJzZXRfbWFpbl9tc2ciLCJ0eHQiLCJwcGYiLCJtYWtlIiwibWsiLCJzZXRfbWFpbl9sb2MiLCJyYWlzZV9lcnJvcmYkMCIsInBhcnNlIiwicyIsImFzdF9pbXBsX21hZ2ljX251bWJlciIsImFzdF9pbnRmX21hZ2ljX251bWJlciIsInJpZ2h0IiwiZm10IiwiZm10JDAiLCJmbXQkMSIsIm9wdCIsInByZWZpeF9zeW1ib2xzIiwiaW5maXhfc3ltYm9scyIsInNwZWNpYWxfaW5maXhfc3RyaW5ncyIsInJlc2V0X2N0eHQiLCJ2YWx1ZSIsInQiLCJkZWZhdWx0JDAiLCJmaXhpdHlfb2Zfc3RyaW5nIiwiZmlyc3RfaXMiLCJjIiwic3RyIiwibGFzdF9pcyIsIm5lZWRzX3BhcmVucyIsImZpeCIsIm5lZWRzX3NwYWNlcyIsInN0cmluZ19sb2MiLCJwcm90ZWN0X2lkZW50IiwiZm9ybWF0Iiwib3ZlcnJpZGUiLCJ2aWV3X2V4cHIiLCJleHAiLCJleHAkMCIsImV4cCQxIiwiZTEiLCJhY2MkMCIsImIiLCJscyIsImlzX3NpbXBsZV9jb25zdHJ1Y3QiLCJwcCIsInVuZGVyX3NlbWkiLCJjdHh0IiwibGlzdCIsInNlcCIsImZpcnN0IiwibGFzdCIsImZ1IiwieHMiLCJmaXJzdCQwIiwieCQwIiwibGFzdCQwIiwieCQxIiwic2VwJDAiLCJ4JDMiLCJ4JDIiLCJ4cyQwIiwib3B0aW9uIiwiYSIsInBhcmVuIiwic3RoIiwic3RoJDAiLCJwcmludF9sb25naWRlbnQiLCJsb25ncHJlZml4IiwicyQwIiwieSIsImxvbmdpZGVudF9sb2MiLCJjb25zdGFudCIsImkiLCJtIiwiaSQwIiwiaSQxIiwiZGVsaW0iLCJpJDIiLCJtJDAiLCJtdXRhYmxlX2ZsYWciLCJ2aXJ0dWFsX2ZsYWciLCJyZWNfZmxhZyIsInJmIiwibm9ucmVjX2ZsYWciLCJkaXJlY3Rpb25fZmxhZyIsInByaXZhdGVfZmxhZyIsImNvbnN0YW50X3N0cmluZyIsInR5dmFyIiwidHl2YXJfbG9jIiwic3RyaW5nX3F1b3QiLCJjbGFzc19wYXJhbXNfZGVmIiwibCIsInR5cGVfcGFyYW0iLCJ0eXBlX3dpdGhfbGFiZWwiLCJsYWJlbCIsImNvcmVfdHlwZTEiLCJjb3JlX3R5cGUiLCJhdHRyaWJ1dGVzIiwiY3QyIiwiY3QxIiwiY3QiLCJzbCIsImN0JDAiLCJjdCQxIiwibCQwIiwibGkiLCJsJDEiLCJjb3JlX2ZpZWxkX3R5cGUiLCJmaWVsZF92YXIiLCJsJDIiLCJsaSQwIiwibG93IiwiY2xvc2VkIiwibCQzIiwiZmlyc3RfaXNfaW5oZXJpdCIsInR5cGVfdmFyaWFudF9oZWxwZXIiLCJjdGwiLCJjc3RycyIsImxpZCIsImF1eCIsImV4dGVuc2lvbiIsInBhdHRlcm4kMSIsInBhdHRlcm4iLCJwIiwicDIiLCJwMSIsIm9ycGF0cyIsInBhdHRlcm4xIiwicGF0dGVybjEkMCIsInBhdHRlcm5fbGlzdF9oZWxwZXIiLCJwYXQyIiwicGF0MSIsInNpbXBsZV9wYXR0ZXJuIiwic2ltcGxlX3BhdHRlcm4kMCIsInBvIiwidmwiLCJjMiIsImMxIiwibG9uZ2lkZW50X3hfcGF0dGVybiIsInAkMCIsInAkMSIsInAkMiIsIndpdGhfcGFyZW4iLCJsYWJlbF9leHAiLCJyZXN0IiwidHh0JDAiLCJvJDAiLCJzdWdhcl9leHByIiwiYXJncyIsImlkIiwibGFiIiwicHJpbnRfaW5kZXhvcCIsInBhdGhfcHJlZml4IiwiYXNzaWduIiwibGVmdCIsInByaW50X2luZGV4IiwiaW5kaWNlcyIsInJlbV9hcmdzIiwicHJpbnRfcGF0aCIsInNpbXBsZV9leHByIiwiZSQwIiwicGF0aCIsImZ1bmMiLCJvdGhlcl9hcmdzIiwiYSQwIiwiYXNzaWduJDAiLCJwcmludCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJvcHQkMCIsInRsIiwicG1kJDAiLCJhdHRycyIsIm1kIiwiYXR0cnMkMCIsIm1kJDAiLCJvZCIsImluY2wiLCJjbGFzc19kZXNjcmlwdGlvbiIsInN0cnVjdHVyZV9pdGVtIiwibWUkMCIsIm1lMiIsIm1lMSIsIm10JDAiLCJtZSQxIiwic3RydWN0dXJlIiwicHBfcHJpbnRfcGV4cF9mdW5jdGlvbiIsInR5dmFyc19zdHIiLCJ0eXZhcnMiLCJwYXQkMCIsInR5cCIsInBhdCIsInJ0IiwiYXJnc190eXZhcnMiLCJnYWR0X3BhdHRlcm4iLCJ0eXZhcnMkMCIsImdhZHRfZXhwIiwiZV9jdCIsInZhcl9uYW1lcyQwIiwicHRfY3QiLCJwdF90eXZhcnMiLCJjaGVja192YXJpYWJsZSIsInZhcl9uYW1lcyIsImxvb3AiLCJkZXNjIiwiY29yZV90eXBlJDAiLCJsb25naWRlbnQiLCJsc3QkMCIsImxzdCQxIiwibG9vcF9vYmplY3RfZmllbGQiLCJsc3QkMiIsImxvbmdpZGVudCQwIiwic3RyaW5nIiwiY29yZV90eXBlJDEiLCJsYmxfbHN0X29wdGlvbiIsImZsYWciLCJyb3dfZmllbGRfbGlzdCIsImxvb3Bfcm93X2ZpZWxkIiwiY29yZV90eXBlJDIiLCJzdHJpbmdfbHN0IiwibHN0JDMiLCJsb25naWRlbnQkMSIsImFyZyIsImZpZWxkIiwicHJmX2Rlc2MiLCJwb2ZfZGVzYyIsInQkMCIsImV0eSIsInR5dmFycyQxIiwidHkiLCJiaW5kaW5nJDAiLCJtYXRjaCIsInB2YXIiLCJldmFyIiwicmYkMCIsImYkMCIsImFyZ19vcHQiLCJtZSQyIiwicG1iIiwiZXhwciIsImwyJDAiLCJsMiIsImNsYXNzX2NvbnN0cmFpbnQiLCJjbGFzc19kZWNsYXJhdGlvbiIsImNsJDMiLCJjbCQwIiwiY2wkMiIsImNsJDEiLCJjb25zdHIiLCJleHBvcnRlZCIsInR5cGVfZGVjbCIsImVxIiwicmVjb3JkX2RlY2xhcmF0aW9uIiwibGJscyIsInR5cGVfcmVjb3JkX2ZpZWxkIiwicGxkIiwicHJpdiIsIm1hbmlmZXN0IiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBjZCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwicmVwciIsInZhcmlhbnRzIiwiY29uc3RyYWludHMiLCJleHRlbnNpb25fY29uc3RydWN0b3IkMCIsInJlcyIsInZhcnMiLCJuYW1lJDAiLCJwcF92YXJzIiwidnMiLCJyIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJzaW1wbGVfbmFtZSIsImxibCIsImRpcmVjdGl2ZV9hcmd1bWVudCIsInRvcGxldmVsX3BocmFzZSIsInBkaXJfbmFtZSIsInBkaXJfYXJnIiwic3RyaW5nX29mX2V4cHJlc3Npb24iLCJzdHJpbmdfb2Zfc3RydWN0dXJlIiwidG9wX3BocmFzZSIsInBhdHRlcm4kMCIsInNpZ25hdHVyZSQwIiwic3RydWN0dXJlJDAiLCJjbGFzc19leHByJDAiLCJjbGFzc19maWVsZCQwIiwiY2xhc3NfdHlwZSQwIiwiY2xhc3Nfc2lnbmF0dXJlJDAiLCJjbGFzc190eXBlX2ZpZWxkJDAiLCJtb2R1bGVfZXhwciQwIiwibW9kdWxlX3R5cGUkMCIsInNpZ25hdHVyZV9pdGVtJDAiLCJzdHJ1Y3R1cmVfaXRlbSQwIiwidHlwZV9kZWNsYXJhdGlvbiQwIiwibWlncmF0aW9uX2Vycm9yIiwibWlzc2luZ19mZWF0dXJlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwiZnVuX2JvZHkiLCJ0eXBfY29uc3RyYWludCIsInBhcmFtcyIsInBhcmFtcyQwIiwiY29weV9mdW5jdGlvbl9wYXJhbSIsInR5cF9jb25zdHJhaW50JDAiLCJjb3B5X3R5cGVfY29uc3RyYWludCIsImZ1bl9ib2R5JDAiLCJjb3B5X2Z1bmN0aW9uX2JvZHkiLCJ4MSQwIiwiY29weV9hcmdfbGFiZWwiLCJ4MSQxIiwieDAkMyIsImNvcHlfY2FzZSIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwiY29weV9wYXR0ZXJuIiwieDEkMTIiLCJ4MCQxNiIsImNvcHlfY29yZV90eXBlIiwieDIkMyIsIngxJDEzIiwieDAkMTciLCJ4MSQxNCIsIngwJDE4IiwiY29weV9sYWJlbCIsIngwJDE5IiwieDEkMTUiLCJ4MCQyMCIsIngwJDIxIiwieDIkNCIsIngxJDE2IiwieDAkMjIiLCJjb3B5X21vZHVsZV9leHByIiwieDEkMTciLCJ4MCQyMyIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwieDAkMjQiLCJ4MCQyNSIsIngxJDE4IiwieDAkMjYiLCJ4MCQyNyIsImNvcHlfY2xhc3Nfc3RydWN0dXJlIiwieDEkMTkiLCJ4MCQyOCIsIngwJDI5IiwieDEkMjAiLCJ4MCQzMCIsImNvcHlfb3Blbl9kZWNsYXJhdGlvbiIsIngwJDMxIiwiY29weV9sZXRvcCIsIngwJDMyIiwiY29weV9leHRlbnNpb24iLCJjb3B5X2JpbmRpbmdfb3AiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwiY29weV9mdW5jdGlvbl9wYXJhbV9kZXNjIiwicHBhcmFtX2Rlc2MiLCJwcGFyYW1fbG9jIiwiY2FzZXMiLCJ0MiIsInQxIiwicHZiX2xvYyIsInB2Yl9hdHRyaWJ1dGVzIiwicHZiX2NvbnN0cmFpbnQiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJjb3B5X3ZhbHVlX2NvbnN0cmFpbnQiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwcGF0X2xvY19zdGFjayIsInBwYXRfbG9jIiwicHBhdF9kZXNjIiwiY29weV9wYXR0ZXJuX2Rlc2MiLCJjb3B5X2Nsb3NlZF9mbGFnIiwibG9jYWxseV9hYnN0cmFjdF91bml2YXJzIiwiY29lcmNpb24iLCJncm91bmQiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwiY29weV9jb3JlX3R5cGVfZGVzYyIsImNvcHlfbG9jYXRpb24iLCJjb3B5X29iamVjdF9maWVsZCIsImNvcHlfcm93X2ZpZWxkIiwiY29weV9wYWNrYWdlX3R5cGUiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJjb3B5X3Jvd19maWVsZF9kZXNjIiwicG9mX2F0dHJpYnV0ZXMiLCJwb2ZfbG9jIiwiY29weV9vYmplY3RfZmllbGRfZGVzYyIsImNvcHlfYXR0cmlidXRlIiwiYXR0cl9sb2MiLCJhdHRyX3BheWxvYWQiLCJhdHRyX25hbWUiLCJjb3B5X3BheWxvYWQiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsImNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyIsImNvcHlfdmFsdWVfZGVzY3JpcHRpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2V4Y2VwdGlvbiIsImNvcHlfbW9kdWxlX2JpbmRpbmciLCJjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jbGFzc19kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9pbmZvcyIsImNvcHlfY2xhc3NfaW5mb3MiLCJjb3B5X2NsYXNzX2V4cHIiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsImNvcHlfY2xhc3NfZXhwcl9kZXNjIiwiY29weV9jbGFzc190eXBlIiwiY29weV9vcGVuX2Rlc2NyaXB0aW9uIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImNvcHlfY2xhc3NfZmllbGQiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsImNvcHlfY2xhc3NfZmllbGRfZGVzYyIsImNvcHlfb3ZlcnJpZGVfZmxhZyIsImNvcHlfY2xhc3NfZmllbGRfa2luZCIsImNvcHlfbXV0YWJsZV9mbGFnIiwiY29weV9wcml2YXRlX2ZsYWciLCJjb3B5X29wZW5faW5mb3MiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1vZF9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2Rlc2MiLCJjb3B5X21vZHVsZV9leHByX2Rlc2MiLCJjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIiwiY29weV9tb2R1bGVfdHlwZSIsInBtdHlfYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9kZXNjIiwiY29weV9tb2R1bGVfdHlwZV9kZXNjIiwiY29weV93aXRoX2NvbnN0cmFpbnQiLCJjb3B5X3NpZ25hdHVyZV9pdGVtIiwicHNpZ19sb2MiLCJwc2lnX2Rlc2MiLCJjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiIsImNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsImNvcHlfY2xhc3NfZGVzY3JpcHRpb24iLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3R5X2xvYyIsInBjdHlfZGVzYyIsImNvcHlfY2xhc3NfdHlwZV9kZXNjIiwiY29weV9jbGFzc19zaWduYXR1cmUiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwiY29weV9jbGFzc190eXBlX2ZpZWxkIiwicGN0Zl9hdHRyaWJ1dGVzIiwicGN0Zl9sb2MiLCJwY3RmX2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyIsImNvcHlfdmlydHVhbF9mbGFnIiwieDMkMCIsImYwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsImNvcHlfaW5qZWN0aXZpdHkiLCJjb3B5X3ZhcmlhbmNlIiwicGluY2xfYXR0cmlidXRlcyIsInBpbmNsX2xvYyIsInBpbmNsX21vZCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwbXRkX2xvYyIsInBtdGRfYXR0cmlidXRlcyIsInBtdGRfdHlwZSIsInBtdGRfbmFtZSIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luIiwiY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMiLCJwdHlwZV9sb2MiLCJwdHlwZV9hdHRyaWJ1dGVzIiwicHR5cGVfbWFuaWZlc3QiLCJwdHlwZV9wcml2YXRlIiwicHR5cGVfa2luZCIsInB0eXBlX2NzdHJzIiwicHR5cGVfcGFyYW1zIiwicHR5cGVfbmFtZSIsImNvcHlfdHlwZV9raW5kIiwiY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsImNvcHlfbGFiZWxfZGVjbGFyYXRpb24iLCJwY2RfYXR0cmlidXRlcyIsInBjZF9sb2MiLCJwY2RfcmVzIiwicGNkX2FyZ3MiLCJwY2RfdmFycyIsInBjZF9uYW1lIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwY29uc3RfZGVzYyIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwidGNvbnN0cmFpbnQiLCJhdHRyIiwiZXhwciQzIiwiYzEkMCIsImV4cHIkMSIsInBhcmFtIiwiZXhwMCIsInBleHBfZGVzYyQwIiwiZXhwciQyIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsImFjYyQxIiwiYXJnX2xpc3QiLCJjMiQwIiwidHlwZV9jb25zdHJhaW50Iiwib3B0X2RlZmF1bHQkMCIsImFyZ19sYWJlbCQwIiwieDAkMzMiLCJ4MiQ1IiwieDEkMjEiLCJ4MCQzNCIsIm1lcmdlX2xvYyIsImdob3N0X2xvYyIsImdob3N0X2NvbnN0cmFpbnQiLCJwdmJfcGF0JDAiLCJwdmJfZXhwciQwIiwiY29uc3RyYWluX3BhdCIsInR5cCQwIiwiY29lcmNpb24kMCIsInB0eXBfbG9jJDAiLCJ0eXAkMyIsInB2Yl9wYXQkMyIsImdyb3VuZCQwIiwicGV4cF9sb2MkMCIsInB2Yl9leHByJDMiLCJwdmJfZXhwciQxIiwicHZiX3BhdCQxIiwidHlwJDIiLCJ0eXAkMSIsInR5cF9wb2x5IiwicHZiX3BhdCQyIiwidmFyJDAiLCJwdmJfZXhwciQyIiwibG9jJDAiLCJlbXB0eV9zdHJ1Y3QiLCJsb2NfZ2hvc3QiLCJsb2NfZW5kIiwibG9jX3N0YXJ0IiwiY29weV9wb3NpdGlvbiIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyIsInR5X2V4dCIsInJ0JDAiLCJ2YWx1ZV9wYXR0ZXJuIiwidmFsdWVfZXhwIiwiaW5uZXJfZSIsImV4dGVybl9jdCIsImV4dGVybl9jdCQwIiwicHRfdHl2YXJzJDAiLCJ3aXRoX2NvbnN0cmFpbnQiLCJ0eV92YXJzIiwicHZiX2NvbnN0cmFpbnQkMCIsImNvZXJjZSIsImdyIiwicHZiX2NvbnN0cmFpbnQkMSIsImlzX3VuaXQiLCJjb3B5X2V4cHIiLCJjb3B5X2Nhc2VzIiwiY29weV9wYXQiLCJjb3B5X3R5cCIsIm1hcF9vcHRpb24iLCJjb3B5X29wdGlvbiIsImNvcHlfYm9vbCIsImNvcHlfbG9uZ2lkZW50IiwieDBfbG9jIiwid3JhcCIsIngyJDYiLCJhdCIsImF0YXQiLCJwb3Blbl9saWQiLCJjdHkiLCJsb2MkMSIsIm5vbG9jIiwiZnJvbV9sb2MiLCJwb3MiLCJpbmplY3RfcHJlZGVmX29wdGlvbiIsImQiLCJpZGVudCIsInR5cGVfZGVjbGFyYXRpb25zIiwicmVjZmxhZyIsInR5cGVzIiwiZXh0cmFjdF9wcmVkZWZfb3B0aW9uIiwiaXNfbm9ucmVjIiwidHlwZXMkMCIsImlzX2tleXdvcmQiLCJpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2kiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJkZWZhdWx0X2xvYyIsInNldF9yZWYiLCJyIiwid2l0aF9kZWZhdWx0X2xvYyIsImwiLCJyZWYiLCJiYWNrdXAiLCJ4IiwiZSQwIiwiZSIsImludGVnZXIiLCJzdWZmaXgiLCJpIiwiaW50JDAiLCJpbnQzMiIsIm9wdCIsInN0aCIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsImNoYXIkMCIsImMiLCJzdHJpbmciLCJxdW90YXRpb25fZGVsaW1pdGVyIiwicyIsImxvYyIsIm1rIiwibmFtZSIsInBheWxvYWQiLCJtayQwIiwiZCIsInN0aCQwIiwiYXR0cnMiLCJhdHRyIiwiYSIsImFueSIsInZhciQwIiwiYXJyb3ciLCJiIiwidHVwbGUiLCJjb25zdHIiLCJvYmplY3QiLCJjbGFzcyQwIiwiYWxpYXMiLCJ2YXJpYW50IiwicG9seSIsInBhY2thZ2UkMCIsImV4dGVuc2lvbiIsImZvcmNlX3BvbHkiLCJ0IiwidmFyaWZ5X2NvbnN0cnVjdG9ycyIsInZhcl9uYW1lcyIsImNoZWNrX3ZhcmlhYmxlIiwidmwiLCJ2YXJfbmFtZXMkMCIsImxvb3AiLCJkZXNjIiwiY29yZV90eXBlIiwiY29yZV90eXBlJDAiLCJsYWJlbCIsImxzdCIsImxvbmdpZGVudCIsImxzdCQwIiwibHN0JDEiLCJsb29wX29iamVjdF9maWVsZCIsImxzdCQyIiwibG9uZ2lkZW50JDAiLCJjb3JlX3R5cGUkMSIsImxibF9sc3Rfb3B0aW9uIiwiZmxhZyIsInJvd19maWVsZF9saXN0IiwibG9vcF9yb3dfZmllbGQiLCJjb3JlX3R5cGUkMiIsInN0cmluZ19sc3QiLCJsc3QkMyIsImxvbmdpZGVudCQxIiwidHlwIiwibiIsImFyZyIsInMkMCIsImZpZWxkIiwicHJmX2Rlc2MiLCJwb2ZfZGVzYyIsInQkMCIsIm1rJDEiLCJhdHRyJDAiLCJhbnkkMCIsInZhciQxIiwiYWxpYXMkMCIsImNvbnN0YW50IiwiaW50ZXJ2YWwiLCJ0dXBsZSQwIiwiY29uc3RydWN0IiwidmFyaWFudCQwIiwicmVjb3JkIiwiYXJyYXkiLCJvciIsImNvbnN0cmFpbnQiLCJ0eXBlIiwibGF6eSIsInVucGFjayIsIm9wZW4iLCJleGNlcHRpb24iLCJleHRlbnNpb24kMCIsIm1rJDIiLCJhdHRyJDEiLCJpZGVudCIsImNvbnN0YW50JDAiLCJsZXQkMCIsImZ1biIsImZ1bmN0aW9uJDAiLCJhcHBseSIsInRyeSQwIiwidHVwbGUkMSIsImNvbnN0cnVjdCQwIiwidmFyaWFudCQxIiwicmVjb3JkJDAiLCJzZXRmaWVsZCIsImFycmF5JDAiLCJpZnRoZW5lbHNlIiwic2VxdWVuY2UiLCJ3aGlsZSQwIiwiZm9yJDAiLCJjb25zdHJhaW50JDAiLCJjb2VyY2UiLCJzZW5kIiwibmV3JDAiLCJzZXRpbnN0dmFyIiwib3ZlcnJpZGUiLCJsZXRtb2R1bGUiLCJsZXRleGNlcHRpb24iLCJhc3NlcnQiLCJsYXp5JDAiLCJwb2x5JDAiLCJvYmplY3QkMCIsIm5ld3R5cGUiLCJwYWNrIiwib3BlbiQwIiwibGV0b3AiLCJhbmRzIiwiYm9keSIsImV4dGVuc2lvbiQxIiwidW5yZWFjaGFibGUiLCJjYXNlJDAiLCJsaHMiLCJndWFyZCIsInJocyIsImJpbmRpbmdfb3AiLCJvcCIsInBhdCIsImV4cCIsIm1rJDMiLCJhdHRyJDIiLCJpZGVudCQwIiwiYWxpYXMkMSIsInNpZ25hdHVyZSIsImZ1bmN0b3IiLCJ3aXRoJDAiLCJ0eXBlb2YkMCIsImV4dGVuc2lvbiQyIiwibWF0Y2giLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInN0aCQxIiwicHJpbSIsIm1rJDEyIiwibWskMTMiLCJzeW4iLCJtayQxNCIsIm1rJDE1IiwiZXhwciIsIm1rJDE2IiwibWskMTciLCJtZXhwciIsIm1rJDE4IiwibWskMTkiLCJ2aXJ0Iiwic3RoJDIiLCJwYXJhbXMiLCJtayQyMCIsIm1hbmlmZXN0IiwiY3N0cnMiLCJzdGgkMyIsImtpbmQiLCJzdGgkNCIsInByaXYiLCJjb25zdHJ1Y3RvciIsInJlcyIsInZhcnMiLCJhcmdzIiwiZmllbGQkMCIsIm11dCIsIm1rJDIxIiwicGF0aCIsImNvbnN0cnVjdG9ycyIsIm1rX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yJDAiLCJkZWNsIiwicmViaW5kIiwibGlkIiwibWskMjIiLCJzZWxmIiwiZmllbGRzIiwibWskMjMiLCJtayQyNCIsInRhZyIsImNvbnN0JDAiLCJ0eXMiLCJpbmhlcml0JDEiLCJ0eSIsIm1rJDI1IiwidGFnJDAiLCJpbmhlcml0JDIiLCJzdHJpbmdfdmVyc2lvbiIsInN0cmluZ192ZXJzaW9uJDAiLCJzdHJpbmdfdmVyc2lvbiQxIiwic3RyaW5nX3ZlcnNpb24kMiIsInN0cmluZ192ZXJzaW9uJDMiLCJzdHJpbmdfdmVyc2lvbiQ0Iiwic3RyaW5nX3ZlcnNpb24kNSIsInN0cmluZ192ZXJzaW9uJDYiLCJzdHJpbmdfdmVyc2lvbiQ3Iiwic3RyaW5nX3ZlcnNpb24kOCIsInN0cmluZ192ZXJzaW9uJDkiLCJzdHJpbmdfdmVyc2lvbiQxMCIsInN0cmluZ192ZXJzaW9uJDExIiwic3RyaW5nX3ZlcnNpb24kMTIiLCJzdHJpbmdfdmVyc2lvbiQxMyIsInN0cmluZ192ZXJzaW9uJDE0Iiwic3RyaW5nX3ZlcnNpb24kMTUiLCJtaWdyYXRpb25faW5mbyIsImlkIiwibWlncmF0aW9uX2lkZW50aXR5IiwiY29tcG9zZSIsImciLCJtaWdyYXRpb25fZnVuY3Rpb25zIiwiaXNfdW5kZWZpbmVkIiwiaW1tZWRpYXRlX21pZ3JhdGlvbiIsIkEiLCJkaXJlY3Rpb24iLCJ2ZXJzaW9uIiwidG8iLCJmdW5zIiwiQiIsIm0kMSIsIlRvIiwiYWIiLCJ0bzIiLCJiYyIsIm0kMCIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJjb3B5X3NpZ25hdHVyZV9pdGVtIiwiY29weV9tb2R1bGVfdHlwZSIsImNvcHlfbW9kdWxlX2V4cHIiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGQiLCJjb3B5X2NsYXNzX3NpZ25hdHVyZSIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfY2xhc3NfZmllbGQiLCJjb3B5X2NsYXNzX2V4cHIiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImNvcHlfdHlwZV9leHRlbnNpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2Nhc2UiLCJjb3B5X3BhdHRlcm4iLCJjb3B5X2V4cHJlc3Npb24iLCJjb3B5X2NvcmVfdHlwZSIsImNvcHlfdG9wbGV2ZWxfcGhyYXNlIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZSIsIm1pZ3JhdGlvbl9pbmZvJDAiLCJ2ZXJzaW9uJDAiLCJtaWdyYXRpb25faW5mbyQxIiwidmVyc2lvbiQxIiwibWlncmF0aW9uX2luZm8kMiIsInZlcnNpb24kMiIsIm1pZ3JhdGlvbl9pbmZvJDMiLCJ2ZXJzaW9uJDMiLCJtaWdyYXRpb25faW5mbyQ0IiwidmVyc2lvbiQ0IiwibWlncmF0aW9uX2luZm8kNSIsInZlcnNpb24kNSIsIm1pZ3JhdGlvbl9pbmZvJDYiLCJ2ZXJzaW9uJDYiLCJtaWdyYXRpb25faW5mbyQ3IiwidmVyc2lvbiQ3IiwibWlncmF0aW9uX2luZm8kOCIsInZlcnNpb24kOCIsIm1pZ3JhdGlvbl9pbmZvJDkiLCJ2ZXJzaW9uJDkiLCJtaWdyYXRpb25faW5mbyQxMCIsInZlcnNpb24kMTAiLCJtaWdyYXRpb25faW5mbyQxMSIsInZlcnNpb24kMTEiLCJtaWdyYXRpb25faW5mbyQxMiIsInZlcnNpb24kMTIiLCJtaWdyYXRpb25faW5mbyQxMyIsInZlcnNpb24kMTMiLCJtaWdyYXRpb25faW5mbyQxNCIsInZlcnNpb24kMTQiLCJtaWdyYXRpb25faW5mbyQxNSIsInZlcnNpb24kMTUiLCJhbGxfdmVyc2lvbnMiLCJmcm9tX21hZ2ljIiwibWFnaWMiLCJhbGxfdmVyc2lvbnNfdG9wX2Rvd24iLCJ0YWlsIiwiVmVyc2lvbiIsIm9mX29jYW1sIiwibm9kZSIsInkiLCJ0b19vY2FtbCIsIm9mX29jYW1sX21hcHBlciIsIml0ZW0iLCJjdHh0IiwidG9fb2NhbWxfbWFwcGVyIiwiaW1wbGVtZW50YXRpb24iLCJsZXhidWYiLCJpbnRlcmZhY2UkMCIsInRvcGxldmVsX3BocmFzZSIsInVzZV9maWxlIiwiZXhwcmVzc2lvbiIsInBhdHRlcm4iLCJkZWZhdWx0X3ByaW50X3dhcm5pbmciLCJhYm91dF9pdGVfYnJhbmNoX3JlZiIsImNhcmVfYWJvdXRfaXRlX2JyYW5jaCIsImFib3V0X2l0ZV9icmFuY2giLCJzZWxmXzEiLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19mbmFtZSQwIiwicG9zX2xudW0kMCIsInBvc19ib2wkMCIsInBvc19jbnVtJDAiLCJsb2NfZ2hvc3QiLCJsb2NfZW5kIiwibG9jX3N0YXJ0IiwibG9jX3N0YXJ0JDAiLCJsb2NfZW5kJDAiLCJsb2NfZ2hvc3QkMCIsInR4dCIsInR4dCQwIiwibG9jJDAiLCJhJDAiLCJhJDEiLCJhJDIiLCJiJDAiLCJiJDEiLCJhJDMiLCJhJDQiLCJiJDIiLCJjJDAiLCJiJDMiLCJhJDUiLCJhJDYiLCJiJDQiLCJhdHRyX2xvYyIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImF0dHJfbmFtZSQwIiwiYXR0cl9wYXlsb2FkJDAiLCJhdHRyX2xvYyQwIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsInB0eXBfZGVzYyQwIiwicHR5cF9sb2MkMCIsInB0eXBfbG9jX3N0YWNrJDAiLCJwdHlwX2F0dHJpYnV0ZXMkMCIsImEkNyIsImEkOCIsImIkNSIsImEkOSIsImEkMTAiLCJiJDYiLCJiJDciLCJhJDExIiwiYSQxMiIsImIkOCIsImMkMSIsImIkOSIsImEkMTMiLCJhJDE0IiwiYiQxMCIsImMkMiIsImIkMTEiLCJhJDE1IiwiYSQxNiIsImIkMTIiLCJhJDE3IiwiYSQxOCIsImEkMTkiLCJhJDIwIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwicHJmX2Rlc2MkMCIsInByZl9sb2MkMCIsInByZl9hdHRyaWJ1dGVzJDAiLCJwb2ZfYXR0cmlidXRlcyIsInBvZl9sb2MiLCJwb2ZfZGVzYyQwIiwicG9mX2xvYyQwIiwicG9mX2F0dHJpYnV0ZXMkMCIsInBwYXRfYXR0cmlidXRlcyIsInBwYXRfbG9jX3N0YWNrIiwicHBhdF9sb2MiLCJwcGF0X2Rlc2MiLCJwcGF0X2Rlc2MkMCIsInBwYXRfbG9jJDAiLCJwcGF0X2xvY19zdGFjayQwIiwicHBhdF9hdHRyaWJ1dGVzJDAiLCJhJDIxIiwiYSQyMiIsImEkMjMiLCJhJDI0IiwiYSQyNSIsImEkMjYiLCJhJDI3IiwiYSQyOCIsImEkMjkiLCJhJDMwIiwiYiQxMyIsImEkMzEiLCJhJDMyIiwiYiQxNCIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJwZXhwX2Rlc2MkMCIsInBleHBfbG9jJDAiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJkJDAiLCJiJDE1IiwiYiQxNiIsImMkMyIsImIkMTciLCJiJDE4IiwiYyQ0IiwiYyQ1IiwiYiQxOSIsImIkMjAiLCJjJDYiLCJiJDIxIiwiYiQyMiIsImIkMjMiLCJhJDMzIiwiYSQzNCIsImIkMjQiLCJkJDEiLCJjJDciLCJiJDI1IiwiYSQzNSIsImEkMzYiLCJiJDI2IiwiYyQ4IiwiZCQyIiwiYiQyNyIsImEkMzciLCJhJDM4IiwiYiQyOCIsImMkOSIsImIkMjkiLCJhJDM5IiwiYSQ0MCIsImIkMzAiLCJjJDEwIiwiYiQzMSIsImEkNDEiLCJhJDQyIiwiYiQzMiIsImEkNDMiLCJhJDQ0IiwiYiQzMyIsImEkNDUiLCJhJDQ2IiwiYiQzNCIsImEkNDciLCJhJDQ4IiwiYyQxMSIsImIkMzUiLCJhJDQ5IiwiYSQ1MCIsImIkMzYiLCJjJDEyIiwiYiQzNyIsImEkNTEiLCJhJDUyIiwiYiQzOCIsImEkNTMiLCJhJDU0IiwiYSQ1NSIsImEkNTYiLCJiJDM5IiwiYSQ1NyIsImEkNTgiLCJiJDQwIiwiYSQ1OSIsImEkNjAiLCJiJDQxIiwiYSQ2MSIsImEkNjIiLCJiJDQyIiwiYSQ2MyIsImEkNjQiLCJiJDQzIiwiYSQ2NSIsImEkNjYiLCJiJDQ0IiwiYSQ2NyIsImEkNjgiLCJhJDY5IiwiYSQ3MCIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwicGNfbGhzJDAiLCJwY19ndWFyZCQwIiwicGNfcmhzJDAiLCJhbmRzJDAiLCJib2R5JDAiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwicGJvcF9vcCQwIiwicGJvcF9wYXQkMCIsInBib3BfZXhwJDAiLCJwYm9wX2xvYyQwIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwdmFsX25hbWUkMCIsInB2YWxfdHlwZSQwIiwicHZhbF9wcmltJDAiLCJwdmFsX2F0dHJpYnV0ZXMkMCIsInB2YWxfbG9jJDAiLCJwdHlwZV9sb2MiLCJwdHlwZV9hdHRyaWJ1dGVzIiwicHR5cGVfbWFuaWZlc3QiLCJwdHlwZV9wcml2YXRlIiwicHR5cGVfa2luZCIsInB0eXBlX2NzdHJzIiwicHR5cGVfcGFyYW1zIiwicHR5cGVfbmFtZSIsInB0eXBlX25hbWUkMCIsInB0eXBlX3BhcmFtcyQwIiwicHR5cGVfY3N0cnMkMCIsInB0eXBlX2tpbmQkMCIsInB0eXBlX3ByaXZhdGUkMCIsInB0eXBlX21hbmlmZXN0JDAiLCJwdHlwZV9hdHRyaWJ1dGVzJDAiLCJwdHlwZV9sb2MkMCIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInBsZF9uYW1lJDAiLCJwbGRfbXV0YWJsZSQwIiwicGxkX3R5cGUkMCIsInBsZF9sb2MkMCIsInBsZF9hdHRyaWJ1dGVzJDAiLCJwY2RfYXR0cmlidXRlcyIsInBjZF9sb2MiLCJwY2RfcmVzIiwicGNkX2FyZ3MiLCJwY2RfdmFycyIsInBjZF9uYW1lIiwicGNkX25hbWUkMCIsInBjZF92YXJzJDAiLCJwY2RfYXJncyQwIiwicGNkX3JlcyQwIiwicGNkX2xvYyQwIiwicGNkX2F0dHJpYnV0ZXMkMCIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInB0eWV4dF9wYXRoJDAiLCJwdHlleHRfcGFyYW1zJDAiLCJwdHlleHRfY29uc3RydWN0b3JzJDAiLCJwdHlleHRfcHJpdmF0ZSQwIiwicHR5ZXh0X2xvYyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMkMCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwicGV4dF9uYW1lJDAiLCJwZXh0X2tpbmQkMCIsInBleHRfbG9jJDAiLCJwZXh0X2F0dHJpYnV0ZXMkMCIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4bl9jb25zdHJ1Y3RvciQwIiwicHR5ZXhuX2xvYyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMkMCIsInBjdHlfYXR0cmlidXRlcyIsInBjdHlfbG9jIiwicGN0eV9kZXNjIiwicGN0eV9kZXNjJDAiLCJwY3R5X2xvYyQwIiwicGN0eV9hdHRyaWJ1dGVzJDAiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwicGNzaWdfc2VsZiQwIiwicGNzaWdfZmllbGRzJDAiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsInBjdGZfZGVzYyQwIiwicGN0Zl9sb2MkMCIsInBjdGZfYXR0cmlidXRlcyQwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsInBjaV92aXJ0JDAiLCJwY2lfcGFyYW1zJDAiLCJwY2lfbmFtZSQwIiwicGNpX2V4cHIkMCIsInBjaV9sb2MkMCIsInBjaV9hdHRyaWJ1dGVzJDAiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsInBjbF9kZXNjJDAiLCJwY2xfbG9jJDAiLCJwY2xfYXR0cmlidXRlcyQwIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc3RyX3NlbGYkMCIsInBjc3RyX2ZpZWxkcyQwIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJwY2ZfZGVzYyQwIiwicGNmX2xvYyQwIiwicGNmX2F0dHJpYnV0ZXMkMCIsInBtdHlfYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9kZXNjIiwicG10eV9kZXNjJDAiLCJwbXR5X2xvYyQwIiwicG10eV9hdHRyaWJ1dGVzJDAiLCJwc2lnX2xvYyIsInBzaWdfZGVzYyIsInBzaWdfZGVzYyQwIiwicHNpZ19sb2MkMCIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwbWRfbmFtZSQwIiwicG1kX3R5cGUkMCIsInBtZF9hdHRyaWJ1dGVzJDAiLCJwbWRfbG9jJDAiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtc19uYW1lJDAiLCJwbXNfbWFuaWZlc3QkMCIsInBtc19hdHRyaWJ1dGVzJDAiLCJwbXNfbG9jJDAiLCJwbXRkX2xvYyIsInBtdGRfYXR0cmlidXRlcyIsInBtdGRfdHlwZSIsInBtdGRfbmFtZSIsInBtdGRfbmFtZSQwIiwicG10ZF90eXBlJDAiLCJwbXRkX2F0dHJpYnV0ZXMkMCIsInBtdGRfbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG9wZW5fZXhwciQwIiwicG9wZW5fb3ZlcnJpZGUkMCIsInBvcGVuX2xvYyQwIiwicG9wZW5fYXR0cmlidXRlcyQwIiwicGluY2xfYXR0cmlidXRlcyIsInBpbmNsX2xvYyIsInBpbmNsX21vZCIsInBpbmNsX21vZCQwIiwicGluY2xfbG9jJDAiLCJwaW5jbF9hdHRyaWJ1dGVzJDAiLCJwbW9kX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfZGVzYyIsInBtb2RfZGVzYyQwIiwicG1vZF9sb2MkMCIsInBtb2RfYXR0cmlidXRlcyQwIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJwc3RyX2Rlc2MkMCIsInBzdHJfbG9jJDAiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJwdmJfcGF0JDAiLCJwdmJfZXhwciQwIiwicHZiX2F0dHJpYnV0ZXMkMCIsInB2Yl9sb2MkMCIsInBtYl9sb2MiLCJwbWJfYXR0cmlidXRlcyIsInBtYl9leHByIiwicG1iX25hbWUiLCJwbWJfbmFtZSQwIiwicG1iX2V4cHIkMCIsInBtYl9hdHRyaWJ1dGVzJDAiLCJwbWJfbG9jJDAiLCJwZGlyX2xvYyIsInBkaXJfYXJnIiwicGRpcl9uYW1lIiwicGRpcl9uYW1lJDAiLCJwZGlyX2FyZyQwIiwicGRpcl9sb2MkMCIsInBkaXJhX2xvYyIsInBkaXJhX2Rlc2MiLCJwZGlyYV9kZXNjJDAiLCJwZGlyYV9sb2MkMCIsInNlbGZfMiIsInNlbGZfMyIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJhY2MkMiIsImFjYyQzIiwiYWNjJDQiLCJhY2MkNSIsImFjYyQ2IiwiYWNjJDciLCJhY2MkOCIsImFjYyQ5IiwiYWNjJDEwIiwiYWNjJDExIiwiYWNjJDEyIiwiYWNjJDEzIiwiYWNjJDE0IiwiYWNjJDE1IiwiYWNjJDE2IiwiYWNjJDE3IiwiYWNjJDE4IiwiYWNjJDE5IiwiYWNjJDIwIiwiYWNjJDIxIiwiYWNjJDIyIiwiYWNjJDIzIiwiYWNjJDI0IiwiYWNjJDI1IiwiYWNjJDI2IiwiYWNjJDI3IiwiYWNjJDI4IiwiYWNjJDI5IiwiYWNjJDMwIiwiYWNjJDMxIiwiYWNjJDMyIiwiYWNjJDMzIiwiYWNjJDM0IiwiYWNjJDM1IiwiYWNjJDM2IiwiYWNjJDM3IiwiYWNjJDM4IiwiYWNjJDM5IiwiYWNjJDQwIiwiYWNjJDQxIiwiYWNjJDQyIiwiYWNjJDQzIiwiYWNjJDQ0IiwiYWNjJDQ1IiwiYWNjJDQ2IiwiYWNjJDQ3IiwiYWNjJDQ4IiwiYWNjJDQ5IiwiYWNjJDUwIiwiYWNjJDUxIiwiYWNjJDUyIiwiYWNjJDUzIiwiYWNjJDU0IiwiYWNjJDU1Iiwic2VsZl80IiwiYWNjJDU2IiwiYWNjJDU3IiwiYWNjJDU4IiwiYWNjJDU5IiwiYWNjJDYwIiwiYWNjJDYxIiwiYWNjJDYyIiwiYWNjJDYzIiwiYWNjJDY0IiwiYWNjJDY1IiwiYWNjJDY2IiwiYWNjJDY3IiwiYWNjJDY4Iiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwidG9fZXh0ZW5zaW9uIiwiZXJyb3IiLCJzdWJfbXNncyIsIm1haW5fbXNnIiwiZXJyX2V4dGVuc2lvbl9uYW1lIiwibWtfc3RyaW5nX2NvbnN0YW50IiwiZXh0ZW5zaW9uX29mX3N1Yl9tc2ciLCJzdWJfbXNnIiwicmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuIiwibWVzc2FnZSIsInNldF9tZXNzYWdlIiwibWFrZSIsInN1YiIsInN1YiQwIiwidXBkYXRlX2xvYyIsImdldF9sb2NhdGlvbiIsIm9mX2V4biIsInJhaXNlIiwicHJpbnQiLCJkaWZmX2NvbW1hbmQiLCJvcHQiLCJmaWxlMSIsImZpbGUyIiwic3RoIiwiZXh0cmFfcGF0ZGlmZl9hcmdzIiwic3RoJDAiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwib3B0IiwiZmlsZSIsInN0aCIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsIm1lcmdlIiwicmVtb3ZlX2Fzc29jIiwicmVtb3ZlX2Fzc3EiLCJyZXZfbWFwaSIsImxpc3QiLCJsaXN0JDAiLCJpIiwiYWNjIiwidGFpbCIsImhlYWQiLCJhY2MkMCIsImkkMCIsImZvbGRfcmlnaHQyIiwibGlzdDEiLCJsaXN0MiIsImluaXQiLCJtYXAkMCIsIm1hcGkkMCIsImZvbGRfcmlnaHQkMCIsImFwcGVuZCIsImNvbmNhdCQwIiwicmV2X2NvbWJpbmUiLCJjb21iaW5lIiwic3BsaXQiLCJ5cyIsInhzIiwibWFwMiIsInBhcnRpdGlvbl9tYXAiLCJwIiwibCIsImxlZnQiLCJyaWdodCIsImwkMCIsInYiLCJ2JDAiLCJpbml0JDAiLCJwb3MkMCIsImlzX2VtcHR5IiwicmV2X2ZpbHRlcl9vcHQiLCJvcHRpb24iLCJmaWx0ZXJfb3B0IiwiZmlsdGVyX21hcCIsImNvbmNhdF9tYXAiLCJmaW5kX21hcCIsInNvbWUiLCJmaW5kX21hcF9leG4iLCJsYXN0IiwicmVzdCIsInNwbGl0X3doaWxlIiwiZmluZF9hX2R1cCIsInNldCQxIiwic2V0JDAiLCJhc3NvY19vcHQiLCJpdGVyJDIiLCJpc19zb21lIiwiaXRlciQzIiwibWFwJDEiLCJ2YWx1ZSIsInRvX2xpc3QiLCJiaW5kIiwiYSIsImUiLCJtYXAkMiIsIm1hcF9lcnJvciIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImhhbmRsZV9lcnJvciIsInN5bWJvbCQzNSIsInEyIiwidDIiLCJxMSIsInQxIiwiaGQkMCIsInRvX2xpc3QkMCIsInEiLCJtYXAkMyIsImNyZWF0ZSQxIiwic3RoJDAiLCJzdGgkMSIsImZhaWxfaWZfZXhpc3RzIiwic3RoJDIiLCJwZXJtIiwiZmxhZ3MkMSIsImZsYWdzJDIiLCJ3aXRoX2ZpbGUkMCIsIndyaXRlX2FsbCIsImlzX2VtcHR5JDAiLCJwcmVmaXgiLCJzdWZmaXgiLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwiaXNfcHJlZml4IiwiaXNfc3VmZml4Iiwic3VmZml4X29mZnNldCIsInBvcyQxIiwiZXhpc3RzJDEiLCJmb3JfYWxsJDEiLCJpbmRleF9vcHQkMCIsInJpbmRleF9vcHQkMCIsImluZGV4X2Zyb21fb3B0JDAiLCJyaW5kZXhfZnJvbV9vcHQkMCIsImxzcGxpdDIiLCJvbiIsImNhcGl0YWxpemVfYXNjaWkkMCIsImxvd2VyY2FzZV9hc2NpaSQxIiwidW5jYXBpdGFsaXplX2FzY2lpJDAiLCJzcGxpdF9vbl9jaGFyJDAiLCJzZXAiLCJjb21wYXJlJDciLCJlcXVhbCQ3Iiwic3ltYm9sJDM2Iiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5Iiwic3ltYm9sJDQwIiwic3ltYm9sJDQxIiwibWluJDUiLCJtYXgkNSIsImZpbmRfb3B0JDEiLCJzeW1ib2wkNDIiLCJvdXRwdXQiLCJvYyIsImJ5dGVzIiwib3V0cHV0X3N1YnN0cmluZyIsInN0cmluZyIsImluX2ZpbGUiLCJuYW1lIiwibG9jIiwic2V0X2ZpbGVuYW1lIiwiZm4iLCJsb2Nfc3RhcnQiLCJsb2NfZW5kIiwibm9uZSIsImluaXQiLCJsZXhidWYiLCJmbmFtZSIsInJhaXNlX2Vycm9yZiIsImZtdCIsInJlcG9ydF9leGNlcHRpb24iLCJvZl9sZXhidWYiLCJwcmludCIsInBwZiIsInQiLCJjb21wYXJlX3BvcyIsInAxIiwicDIiLCJjb2x1bW4iLCJwIiwibiIsIm1pbl9wb3MiLCJtYXhfcG9zIiwiY29tcGFyZSIsImxvYzEiLCJsb2MyIiwiY3JlYXRlZiIsInN0ciIsImVycm9yX2V4dGVuc2lvbmYiLCJlIiwiZmFpbCIsImV4cGVjdGVkIiwiYXR0cmlidXRlIiwicGF5bG9hZCIsImJpbmRpbmdfb3AiLCJvcCIsInBhdCIsImV4cCIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwicGNsX2NvbnN0ciIsIngwIiwieDEiLCJwY2xfc3RydWN0dXJlIiwicGNsX2Z1biIsIngyIiwieDMiLCJwY2xfYXBwbHkiLCJwY2xfbGV0IiwicGNsX2NvbnN0cmFpbnQiLCJwY2xfZXh0ZW5zaW9uIiwicGNsX29wZW4iLCJwY2ZfaW5oZXJpdCIsInBjZl92YWwiLCJwY2ZfbWV0aG9kIiwicGNmX2NvbnN0cmFpbnQiLCJwY2ZfaW5pdGlhbGl6ZXIiLCJwY2ZfYXR0cmlidXRlIiwicGNmX2V4dGVuc2lvbiIsImNsYXNzX2luZm9zIiwidmlydCIsInBhcmFtcyIsImV4cHIiLCJjbGFzc19zaWduYXR1cmUiLCJzZWxmIiwiZmllbGRzIiwiY2xhc3Nfc3RydWN0dXJlIiwicGN0eV9jb25zdHIiLCJwY3R5X3NpZ25hdHVyZSIsInBjdHlfYXJyb3ciLCJwY3R5X2V4dGVuc2lvbiIsInBjdHlfb3BlbiIsInBjdGZfaW5oZXJpdCIsInBjdGZfdmFsIiwicGN0Zl9tZXRob2QiLCJwY3RmX2NvbnN0cmFpbnQiLCJwY3RmX2F0dHJpYnV0ZSIsInBjdGZfZXh0ZW5zaW9uIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJ2YXJzIiwiYXJncyIsInJlcyIsInB0eXBfYW55IiwicHR5cF92YXIiLCJwdHlwX2Fycm93IiwicHR5cF90dXBsZSIsInB0eXBfY29uc3RyIiwicHR5cF9vYmplY3QiLCJwdHlwX2NsYXNzIiwicHR5cF9hbGlhcyIsInB0eXBfdmFyaWFudCIsInB0eXBfcG9seSIsInB0eXBfcGFja2FnZSIsInB0eXBfZXh0ZW5zaW9uIiwicGRpcl9zdHJpbmciLCJwZGlyX2ludCIsInBkaXJfaWRlbnQiLCJwZGlyX2Jvb2wiLCJwZXhwX2lkZW50IiwicGV4cF9jb25zdGFudCIsInBleHBfbGV0IiwicGV4cF9mdW5jdGlvbiIsInBleHBfZnVuIiwicGV4cF9hcHBseSIsInBleHBfbWF0Y2giLCJwZXhwX3RyeSIsInBleHBfdHVwbGUiLCJwZXhwX2NvbnN0cnVjdCIsInBleHBfdmFyaWFudCIsInBleHBfcmVjb3JkIiwicGV4cF9maWVsZCIsInBleHBfc2V0ZmllbGQiLCJwZXhwX2FycmF5IiwicGV4cF9pZnRoZW5lbHNlIiwicGV4cF9zZXF1ZW5jZSIsInBleHBfd2hpbGUiLCJwZXhwX2ZvciIsIng0IiwicGV4cF9jb25zdHJhaW50IiwicGV4cF9jb2VyY2UiLCJwZXhwX3NlbmQiLCJwZXhwX25ldyIsInBleHBfc2V0aW5zdHZhciIsInBleHBfb3ZlcnJpZGUiLCJwZXhwX2xldG1vZHVsZSIsInBleHBfbGV0ZXhjZXB0aW9uIiwicGV4cF9hc3NlcnQiLCJwZXhwX2xhenkiLCJwZXhwX3BvbHkiLCJwZXhwX29iamVjdCIsInBleHBfbmV3dHlwZSIsInBleHBfcGFjayIsInBleHBfb3BlbiIsInBleHBfbGV0b3AiLCJwZXhwX2V4dGVuc2lvbiIsInBleHBfdW5yZWFjaGFibGUiLCJleHRlbnNpb25fY29uc3RydWN0b3IiLCJraW5kIiwiaW5jbHVkZV9pbmZvcyIsIm1vZCIsImxhYmVsX2RlY2xhcmF0aW9uIiwibXV0YWJsZSIsInR5cGUiLCJsZXRvcCIsImxldCQwIiwiYW5kcyIsImJvZHkiLCJsb2NhdGlvbiIsInN0YXJ0IiwiZW5kIiwiZ2hvc3QiLCJtb2R1bGVfYmluZGluZyIsIm1vZHVsZV9kZWNsYXJhdGlvbiIsInBtb2RfaWRlbnQiLCJwbW9kX3N0cnVjdHVyZSIsInBtb2RfZnVuY3RvciIsInBtb2RfYXBwbHkiLCJwbW9kX2NvbnN0cmFpbnQiLCJwbW9kX3VucGFjayIsInBtb2RfZXh0ZW5zaW9uIiwibW9kdWxlX3N1YnN0aXR1dGlvbiIsIm1hbmlmZXN0IiwicG10eV9pZGVudCIsInBtdHlfc2lnbmF0dXJlIiwicG10eV9mdW5jdG9yIiwicG10eV93aXRoIiwicG10eV90eXBlb2YiLCJwbXR5X2V4dGVuc2lvbiIsInBtdHlfYWxpYXMiLCJtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsIm90YWciLCJvaW5oZXJpdCIsIm9wZW5faW5mb3MiLCJvdmVycmlkZSIsInBwYXRfYW55IiwicHBhdF92YXIiLCJwcGF0X2FsaWFzIiwicHBhdF9jb25zdGFudCIsInBwYXRfaW50ZXJ2YWwiLCJwcGF0X3R1cGxlIiwicHBhdF9jb25zdHJ1Y3QiLCJwcGF0X3ZhcmlhbnQiLCJwcGF0X3JlY29yZCIsInBwYXRfYXJyYXkiLCJwcGF0X29yIiwicHBhdF9jb25zdHJhaW50IiwicHBhdF90eXBlIiwicHBhdF9sYXp5IiwicHBhdF91bnBhY2siLCJwcGF0X2V4Y2VwdGlvbiIsInBwYXRfZXh0ZW5zaW9uIiwicHBhdF9vcGVuIiwicG9zaXRpb24iLCJsbnVtIiwiYm9sIiwiY251bSIsInJ0YWciLCJyaW5oZXJpdCIsInBzaWdfdmFsdWUiLCJwc2lnX3R5cGUiLCJwc2lnX3R5cGVzdWJzdCIsInBzaWdfdHlwZXh0IiwicHNpZ19leGNlcHRpb24iLCJwc2lnX21vZHVsZSIsInBzaWdfbW9kc3Vic3QiLCJwc2lnX3JlY21vZHVsZSIsInBzaWdfbW9kdHlwZSIsInBzaWdfbW9kdHlwZXN1YnN0IiwicHNpZ19vcGVuIiwicHNpZ19pbmNsdWRlIiwicHNpZ19jbGFzcyIsInBzaWdfY2xhc3NfdHlwZSIsInBzaWdfYXR0cmlidXRlIiwicHNpZ19leHRlbnNpb24iLCJwc3RyX2V2YWwiLCJwc3RyX3ZhbHVlIiwicHN0cl9wcmltaXRpdmUiLCJwc3RyX3R5cGUiLCJwc3RyX3R5cGV4dCIsInBzdHJfZXhjZXB0aW9uIiwicHN0cl9tb2R1bGUiLCJwc3RyX3JlY21vZHVsZSIsInBzdHJfbW9kdHlwZSIsInBzdHJfb3BlbiIsInBzdHJfY2xhc3MiLCJwc3RyX2NsYXNzX3R5cGUiLCJwc3RyX2luY2x1ZGUiLCJwc3RyX2F0dHJpYnV0ZSIsInBzdHJfZXh0ZW5zaW9uIiwidG9wbGV2ZWxfZGlyZWN0aXZlIiwiYXJnIiwidHlwZV9kZWNsYXJhdGlvbiIsImNzdHJzIiwicHJpdmF0ZSQwIiwidHlwZV9leGNlcHRpb24iLCJjb25zdHJ1Y3RvciIsInR5cGVfZXh0ZW5zaW9uIiwicGF0aCIsImNvbnN0cnVjdG9ycyIsInZhbHVlX2JpbmRpbmciLCJ2YWx1ZV9kZXNjcmlwdGlvbiIsInByaW0iLCJ0eHQiLCJtYWtlIiwibWFwIiwiZiIsImlzX25vcm1hbF9pZGVudF9jaGFyIiwic2hvcnRfbmFtZSIsInN0cmluZyIsInMiLCJiIiwiYSIsImIkMCIsImEkMCIsInNleHBfb2ZfdCIsImZsYXR0ZW5fZXhuIiwibGlkJDAiLCJhY2N1IiwicyQwIiwibGlkIiwibGFzdF9leG4iLCJ1bmZsYXR0ZW4iLCJsIiwiYWNjIiwicGFyc2UiLCJpbnZhbGlkIiwidmFyaWFudCIsImxlbiIsImxwb3MiLCJvcGVuZWQiLCJwb3MiLCJscG9zJDAiLCJwb3MkMCIsIm9wZW5lZCQwIiwib3BlbmVkJDEiLCJwb3MkMSIsInBvcyQyIiwicGFyIiwiciIsImwkMCIsImluc2lkZSIsImdyb3VwIiwiYmVmb3JlIiwibCQxIiwicyQxIiwieCIsIm1rIiwibWFwX2xpZGVudCIsImxpZGVudCIsInBwYXRfY29uc3RydWN0JDAiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiQwIiwicHN0cl92YWx1ZV9saXN0IiwicmVjX2ZsYWciLCJ2YnMiLCJub25yZWNfdHlwZV9kZWNsYXJhdGlvbiIsImVpbnQiLCJlY2hhciIsImVzdHJpbmciLCJlZmxvYXQiLCJlaW50MzIiLCJlaW50NjQiLCJlbmF0aXZlaW50IiwicGludCIsInBjaGFyIiwicHN0cmluZyIsInBmbG9hdCIsInBpbnQzMiIsInBpbnQ2NCIsInBuYXRpdmVpbnQiLCJlYm9vbCIsInBib29sIiwiZXZhciIsInYiLCJwdmFyIiwiZXVuaXQiLCJwdW5pdCIsInBleHBfdHVwbGUkMCIsInBwYXRfdHVwbGUkMCIsInB0eXBfdHVwbGUkMCIsInBleHBfdHVwbGVfb3B0IiwicHBhdF90dXBsZV9vcHQiLCJwdHlwX3BvbHkkMCIsInR5IiwicGV4cF9hcHBseSQwIiwiZWwiLCJlJDAiLCJlYXBwbHkiLCJlYWJzdHJhY3QiLCJwcyIsImVzZXF1ZW5jZSIsInRsIiwiaGQiLCJwY29uc3RydWN0IiwiY2QiLCJlY29uc3RydWN0IiwiZWxpc3RfdGFpbCIsInRhaWwiLCJlbGlzdCIsInBsaXN0X3RhaWwiLCJwbGlzdCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdCIsImlkZW50IiwibiQwIiwidHlwZV9jb25zdHJfY29udiIsImFwcGx5X2xvYyIsImxvbmdpZGVudCIsImxvYyQwIiwibW9kdWxlX3BhdGgiLCJzdWZmaXhfbiIsImZ1bmN0b3IiLCJmdW5jdG9yX2FyZ3MiLCJyZXN0IiwiZnVuY3RvciQwIiwiZnVuY3Rvcl9wYXRoIiwiaWRlbnQkMCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IiwiZ2F0aGVyX2FyZ3MiLCJhcmdzJDAiLCJib2R5JDAiLCJldGFfcmVkdWNlIiwiZXhwciQwIiwic3VicGF0IiwibGFiZWwiLCJhY2MkMCIsIm5hbWUkMCIsImFjYyQxIiwiZl9pZGVudCIsInBhcmFtX2xhYmVsIiwiYXJnX2xhYmVsIiwicGFyYW0kMCIsInR5X29wdCIsInR5JDAiLCJldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9uIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24kMCIsInBleHBfdHVwbGVfb3B0JDAiLCJwcGF0X3R1cGxlX29wdCQwIiwiZWludCQwIiwiZWNoYXIkMCIsImVzdHJpbmckMCIsImVmbG9hdCQwIiwiZWludDMyJDAiLCJlaW50NjQkMCIsImVuYXRpdmVpbnQkMCIsImVib29sJDAiLCJldmFyJDAiLCJwaW50JDAiLCJwY2hhciQwIiwicHN0cmluZyQwIiwicGZsb2F0JDAiLCJwaW50MzIkMCIsInBpbnQ2NCQwIiwicG5hdGl2ZWludCQwIiwicGJvb2wkMCIsInB2YXIkMCIsImV1bml0JDAiLCJwdW5pdCQwIiwiZWFwcGx5JDAiLCJlYWJzdHJhY3QkMCIsImVzZXF1ZW5jZSQwIiwiZWxpc3RfdGFpbCQwIiwicGxpc3RfdGFpbCQwIiwiZWxpc3QkMCIsInBsaXN0JDAiLCJ0eXBlX2NvbnN0cl9jb252JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiQwIiwiZ2V0Iiwic2tpcCIsInNraXAkMCIsInN0YWNrIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwicmVnaXN0ZXJlZF9uYW1lIiwibmFtZXNfYXRfYmVzdF9kaXN0YW5jZSIsImJlc3RfZGlzdGFuY2UiLCJkaXN0Iiwic3VnZ2VzdGlvbnMiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJvcHQiLCJzdGgiLCJhbGxvd2xpc3QiLCJrZXkiLCJjdHgiLCJhbGxfZnJvbV9jb250ZXh0Iiwib3RoZXJfY29udGV4dHMiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQwIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHJpYnV0ZXNfZXJyb3JzIiwiYXR0ciIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJwYXR0ZXJuIiwiY29yZV90eXBlIiwiZXhwcmVzc2lvbiIsImNsYXNzX3R5cGUiLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwibW9kdWxlX3R5cGUiLCJvcGVuX2Rlc2NyaXB0aW9uIiwibW9kdWxlX2V4cHIiLCJvYmplY3RfdHlwZV9maWVsZCIsImdldF9wc3RyX2V2YWwiLCJzdCIsImdldF9wc3RyX2V4dGVuc2lvbiIsImdldF9wc2lnX2V4dGVuc2lvbiIsImdldF9hdHRyaWJ1dGVzIiwic2V0X2F0dHJpYnV0ZXMiLCJhdHRycyIsInN0cnVjdHVyZV9pdGVtIiwic2lnbmF0dXJlX2l0ZW0iLCJjbGFzc19maWVsZCQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwiZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19uIiwiYSQxIiwiYSQyIiwiZHVtbXlfZXh0IiwicmVnaXN0cmFyIiwiZGVjbGFyZV93aXRoX2FsbF9hcmdzIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRyJDAiLCJhdHRycyQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJiYXNlbmFtZSIsIm1haW5fbW9kdWxlX25hbWUiLCJlbmNsb3NpbmdfbW9kdWxlIiwiZW5jbG9zaW5nX3ZhbHVlIiwic3VibW9kdWxlX3BhdGgiLCJsb2NhdGVkIiwiZnVsbHlfcXVhbGlmaWVkX3BhdGgiLCJ2YWx1ZSQwIiwiZW50ZXJfZXhwciIsImVudGVyX21vZHVsZSIsIm1vZHVsZV9uYW1lIiwiZW50ZXJfdmFsdWUiLCJ2YWx1ZV9uYW1lIiwidG9fc3RyaW5nX3BhdGgiLCJ3aXRoX3N0cmluZ19wYXRoIiwidG9vbF9uYW1lIiwiaW5wdXRfbmFtZSIsImNvZGVfcGF0aCIsImV4dGVuc2lvbl9wb2ludF9sb2MiLCJiYXNlIiwiY29kZV9wYXRoJDAiLCJpbnB1dF9uYW1lJDAiLCJ0b29sX25hbWUkMCIsIndpdGhfbG9jX2FuZF9wYXRoIiwiY3R4dCIsIm1ha2UkMCIsImRlcml2ZWRfaXRlbV9sb2MiLCJpbmxpbmUiLCJjb2RlX3BhdGgkMSIsImlucHV0X25hbWUkMSIsInRvb2xfbmFtZSQxIiwid2l0aF9sb2NfYW5kX3BhdGgkMCIsImVudGVyIiwiZW50ZXJfb3B0IiwibmFtZV9vcHQiLCJtYiIsIm1kIiwibXRkIiwidmFyX25hbWVzX29mIiwiZWNfZW50ZXJfbW9kdWxlX29wdCIsImRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIiwiZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvIiwiZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhIiwiZG9fbm90X2VudGVyX2xldF9tb2R1bGUiLCJ0YWciLCJwZXhwX2xvY19zdGFjayIsInBleHBfZGVzYyIsIndpdGhfdmFsdWUiLCJjdHh0JDAiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJzaGlmdCIsImFyZyQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJzcGVjaWFsX2Z1bmN0aW9uJDAiLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyQwIiwidmFscyIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwib3B0aW9uIiwid2l0aF9jb250ZXh0IiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJsYXN0X2lzX3RleHQkMSIsImxvb3BfY29uc2VjdXRpdmVfcmVwbHMiLCJ0bXBfZm4iLCJzYW5pdGl6ZSIsImJpbmRpbmdzIiwiQXN0IiwicXVvdGUiLCJxdW90ZWRfZXhwciQwIiwiYmluZGluZ19leHByJDAiLCJiaW5kaW5nX2V4cHIiLCJxdW90ZWRfZXhwciIsImJpbmRpbmciLCJta19hdHRyX25vbG9jIiwiaGlkZV9hdHRyaWJ1dGUiLCJmb2N1c19hdHRyaWJ1dGUiLCJoaWRlX3BhdHRlcm4iLCJmb2N1c19wYXR0ZXJuIiwiaGlkZV9leHByZXNzaW9uIiwiZm9jdXNfZXhwcmVzc2lvbiIsImVtcHR5IiwicmFuZ2VzIiwibm9kZV9sb2MiLCJub2RlX25hbWUiLCJ4X2xvYyIsInhfbmFtZSIsInAyJDAiLCJwMSQwIiwiaW5zZXJ0IiwiYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQiLCJmaWxlIiwic2FtZV9maWxlX3NvX2ZhciIsInNob3VsZF9pZ25vcmUiLCJvcmlnX2ZuYW1lIiwiZXh0cmFjdF9jb25zdHJhaW50IiwiZG9fY2hlY2siLCJjaGlsZHJlbnNfbG9jcyIsInNpYmxpbmdzX2xvY3MiLCJtYXhfcG9zJDAiLCJtaW5fcG9zJDAiLCJjaGlsZF9sb2MiLCJjaGlsZF9uYW1lIiwibDIiLCJsMSIsInlzIiwieXMkMCIsInhzJDAiLCJlbmZvcmNlX2ludmFyaWFudHMiLCJzaWJsaW5ncyIsImN0ZSIsImN0cCIsIm91dG1vc3RfbG9jIiwiaW5pdGlhbF9yZXMkMCIsInJlcyQxIiwiaW5pdGlhbF9yZXMiLCJyZXMkMCIsImNoaWxkc19sb2NzIiwiYXR0cnNfbG9jcyIsInNpYmxpbmdzX2xvYyIsInRkZWNsIiwiZXhwcl9vIiwibGFiZWxzIiwiYWNjJDIiLCJvcG4iLCJlX2xvYyIsImNlIiwib2QiLCJhY2MkMyIsImFjYyQ0IiwiZmxhZyIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50Iiwic3RoJDEiLCJhbGlhc2VzIiwicnVsZXMkMCIsImltcGwkMCIsImludGYkMCIsInByZXByb2Nlc3NfaW1wbCQwIiwicHJlcHJvY2Vzc19pbnRmJDAiLCJjdCQwIiwibG9jX29mX2xpc3QiLCJsJDIiLCJmaXJzdCIsIm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIiLCJnZW5faGVhZGVyX2FuZF9mb290ZXIiLCJ3aG9sZV9sb2MiLCJmb290ZXIiLCJoZWFkZXIiLCJsb2NfaGVhZGVyIiwibG9jX2Zvb3RlciIsIm1hcF9pbXBsIiwic3Rfd2l0aF9hdHRycyIsIm1hcF9pbnRmIiwic2dfd2l0aF9hdHRycyIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nXyIsImFkZF9jdHh0X2FyZyIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uJDAiLCJsaW50X2ltcGwkMCIsImxpbnRfaW50ZiQwIiwiZW5jbG9zZV9pbXBsJDAiLCJlbmNsb3NlX2ludGYkMCIsInJlZ2lzdGVyX2NvZGVfdHJhbnNmb3JtYXRpb24iLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18kMCIsImdldF93aG9sZV9hc3RfcGFzc2VzIiwiY3RzIiwiYWZ0X2kiLCJiZWZfaSIsInJlZHVjZWRfdCIsImluc3RyIiwidHJhbnNmIiwidHJhbnNmJDAiLCJ0cmFuc2Zvcm1zIiwiYWZ0ZXJfaW5zdHJzIiwiYmVmb3JlX2luc3RycyIsInByZXByb2Nlc3MiLCJsaW50ZXJzIiwiZ2V0X2VuY2xvc2VycyIsImltcGxfZW5jbG9zZXJzIiwiaW50Zl9lbmNsb3NlcnMiLCJtZXJnZV9lbmNsb3NlciIsImVuY2xvc2VycyIsImZvb3RlcnMiLCJoZWFkZXJzIiwiaGVhZGVycyQwIiwiZm9vdGVycyQwIiwiYXBwbHlfdHJhbnNmb3JtcyIsImxpbnRfZmllbGQiLCJkcm9wcGVkX3NvX2ZhciIsImxpbnRfZXJyb3JzIiwib2xkX2Ryb3BwZWQiLCJsaW50X2Vycm9ycyQwIiwiZXJyb3JzJDEiLCJtb3JlX2Vycm9ycyIsIm5ld19kcm9wcGVkIiwicHJpbnRfZGlmZiIsIndoYXQiLCJkaWZmIiwiZHJvcHBlZCIsImVycm9yX3RvX2V4dGVuc2lvbiIsImV4dCQwIiwic29ydF9lcnJvcnNfYnlfbG9jIiwiZXJyb3IkMCIsIm1hcF9zdHJ1Y3R1cmVfZ2VuIiwid2l0aF9lcnJvcnMiLCJzb3J0ZWQiLCJzdCQxIiwidW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIiwidW51c2VkX2V4dGVuc2lvbl9lcnJvcnMiLCJub3Rfc2Vlbl9lcnJvcnMiLCJtYXBfc2lnbmF0dXJlX2dlbiIsInNnJDEiLCJtYXBfc2lnbmF0dXJlIiwidmVyc2lvbmVkX2Vycm9yZiIsImlucHV0X2ZpbGVfbmFtZSIsInJlbW92ZV9ub19lcnJvciIsIm5ld19mbiIsIm9sZF9mbiIsInJlbG9jYXRlX21hcHBlciIsInNldF9pbnB1dF9uYW1lIiwiZXh0cmFjdF9jb29raWVzIiwicHJlZml4JDEiLCJwcmVmaXgkMiIsImNvcnJlY3Rpb25zIiwiYWRkX3RvX2xpc3QiLCJyZWdpc3Rlcl9jb3JyZWN0aW9uIiwicHJvY2Vzc19maWxlX2hvb2tzIiwicmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2siLCJhbGwkMCIsInByb2Nlc3NfYXN0Iiwib3V0cHV0X21vZGUiLCJzZXRfaW5wdXQiLCJzZXRfa2luZCIsInNldF9vdXRwdXRfbW9kZSIsIm1vZGUiLCJtYXRjaCIsImFyZ19vZl9vdXRwdXRfbW9kZSIsInBhcnNlX2FwcGx5X2xpc3QiLCJtYXNrIiwiaGFuZGxlX2FwcGx5IiwiaGFuZGxlX2RvbnRfYXBwbHkiLCJpbnRlcnByZXRfbWFzayIsInNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIiwiaXNfY2FuZGlkYXRlIiwibmFtZXMkMCIsImlzX3NlbGVjdGVkIiwic2V0X2Nvb2tpZSIsInNoYXJlZF9hcmdzIiwiYXNfcHAiLCJzdGFuZGFsb25lX2FyZ3MiLCJnZXRfYXJncyIsInN0YW5kYWxvbmVfYXJncyQwIiwic3RhbmRhbG9uZV9tYWluIiwidXNhZ2UiLCJyZWxvY2F0ZSIsIm91dHB1dCQwIiwiZW1iZWRfZXJyb3JzJDAiLCJvdXRwdXRfbW9kZSQwIiwicmVwbGFjZW1lbnRzIiwiaG9vayQwIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIkMCIsImFzdF9pbnB1dF9uYW1lIiwiYXN0X2tpbmQiLCJmYWxsX2JhY2tfdmVyc2lvbiIsInVua25vd25fbWFnaWMiLCJmYWxsX2JhY2tfdmVyc2lvbiQwIiwidG1wZmlsZSIsImZhaWxlZF9jb21tYW5kIiwicHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQiLCJpbnB1dF9mbmFtZSIsImlucHV0X3ZlcnNpb24kMCIsImlucHV0X3ZlcnNpb24kMSIsImlucHV0X3ZlcnNpb24kMiIsIm1ldGFkYXRhIiwiaW5wdXRfY29udGVudHMiLCJ0ZXN0IiwibWFnaWNfbnVtYmVyIiwiY29ycmVjdGVkIiwiY29ycmVjdGlvbnMkMCIsIm1pc21hdGNoZXNfZm91bmQiLCJudWxsX2FzdCIsInBhcnNlX2lucHV0IiwicGFzc2VkX2luX2FyZ3MiLCJ2YWxpZF9hcmdzIiwiaW5jb3JyZWN0X2lucHV0X21zZyIsIm1zZyQwIiwicnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIiwiZmxhZ3NfYW5kX3Byb2dfbmFtZSIsImlucHV0X2ZuIiwib3V0cHV0X2ZuIiwicHJvZ19uYW1lX2FuZF9mbGFncyIsImFzdCQ0IiwiYXN0JDMiLCJzdGFuZGFsb25lIiwiYXJndiIsInJ1bl9hc19wcHhfcmV3cml0ZXIiLCJwcmV0dHkkMCIsImVuYWJsZV9jaGVja3MiLCJlbmFibGVfbG9jYXRpb25fY2hlY2siLCJkaXNhYmxlX2xvY2F0aW9uX2NoZWNrIiwibWFwX3N0cnVjdHVyZSIsInZhciQwIiwidmFyc19vZiIsImlnbiIsImFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMiLCJtcyIsImZwIiwiYmluZHNfbW9kdWxlX25hbWVzIiwid2FybmluZ3MiLCJkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmkiLCJrZWVwX3czMl9pbXBsIiwia2VlcF93MzJfaW50ZiIsImtlZXBfdzMyX3NwZWMiLCJjb252X3czMl9zcGVjIiwia2VlcF93MzJfaW1wbCQwIiwia2VlcF93NjBfaW1wbCIsImtlZXBfdzYwX2ludGYiLCJrZWVwX3c2MF9zcGVjIiwiYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MiLCJhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyQwIiwicHB4X2FsbG93c191bnVzZWRfY29kZV93YXJuaW5nIiwiYWxsb3dfdW51c2VkX3R5cGVfd2FybmluZ3MiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJpZ25vcmUiLCJnZW4iLCJkZXBzIiwidW51c2VkX2NvZGVfd2FybmluZ3MiLCJhcmdfbmFtZXMiLCJtYWtlX25vYXJnIiwibWFrZV9ub2FyZyQwIiwiYXBwbHkkMCIsInBhcmFtIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJzcGVsbGNoZWNrX21zZyIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJsZXJyIiwibGVyciQwIiwic3RyX3R5cGVfZGVjbCIsInN0cl90eXBlX2V4dCIsInN0cl9leGNlcHRpb24iLCJzdHJfbW9kdWxlX3R5cGVfZGVjbCIsInNpZ190eXBlX2RlY2wiLCJzaWdfdHlwZV9leHQiLCJzaWdfZXhjZXB0aW9uIiwic2lnX21vZHVsZV90eXBlX2RlY2wiLCJyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyIsImNvbGxlY3RlZCIsImRydiIsImFsaWFzIiwicmVzb2x2ZV9pbnRlcm5hbCIsImciLCJub3Rfc3VwcG9ydGVkIiwicmVzb2x2ZV9hbGwiLCJkZXJpdmVycyIsImRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyIsImRlcml2ZXJzX2FuZF9hcmdzIiwic2VlbiIsIm5hbWVkX2dlbmVyYXRvcnMiLCJhY3R1YWxfZGVyaXZlcl9uYW1lIiwiZHVwX2Vycm9yIiwiZGVwIiwiZGVwX25hbWUiLCJsX2VyciIsImRlcF9lcnJvcnMiLCJhZGQiLCJhY3R1YWxfZGVyaXZlciIsImV4dGVuc2lvbiQwIiwiYWRkX2FsaWFzIiwic2V0JDAiLCJwYXJzZV9hcmd1bWVudHMiLCJta19kZXJpdmluZ19hdHRyIiwiZ2VuZXJhdG9yX25hbWUiLCJnZW5lcmF0b3IiLCJkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSIsIndhcm5pbmciLCJpbmxpbmVfZG9jX2F0dHIiLCJ3cmFwX3N0ciIsImhpZGUiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyQwIiwid2FybmluZ3MkMCIsIndhcm5pbmdzJDIiLCJ3YXJuaW5ncyQxIiwid3JhcCIsInBpbmNsX2F0dHJpYnV0ZXMiLCJ3cmFwX3NpZyIsIm1lcmdlX2dlbmVyYXRvcnMiLCJtZXJnZV9kZXJpdmVkIiwibGlzdHMiLCJkZXJpdmVkIiwib3RoZXIiLCJleHBhbmRfc3RyX3R5cGVfZGVjbHMiLCJsX2VyciQwIiwidW51c2VkX3R5cGVfd2FybmluZ3MiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJsaWJuYW1lIiwicyIsImxpYiIsImdldCIsImkiLCJuYW1lIiwiYWxsX3RhZ3MiLCJuYW1lX29mX3BweF9yZXdyaXRlciIsIm1heWJlX2Ryb3BfbW9kZSIsInNldF9kZWZhdWx0X21heWJlX2Ryb3AiLCJ4IiwiaWQiLCJzIiwibWF5YmVfZHJvcCIsImxvYyIsImNvZGUiLCJhcHBseV90b19kZXNjciIsImxpZCIsImlubmVyX2xvYyQwIiwiZV9vcHQiLCJpZF9vcHQiLCJ0YWdzIiwibW9yZV9hcmciLCJzdGgiLCJpbm5lcl9sb2MiLCJmaWxlbmFtZSIsImxpbmUiLCJzdGFydF9wb3MiLCJlbmRfcG9zIiwiZSQxIiwiZSIsImUkMCIsInNfc2hvcnQiLCJyZXMiLCJjIiwiZGVzY3IiLCJlJDIiLCJlJDMiLCJlbmRfcG9zJDAiLCJzdGFydF9wb3MkMCIsImxpbmUkMCIsImZpbGVuYW1lJDAiLCJkZXNjciQwIiwiZXhwciIsInZhbGlkYXRlX2V4dGVuc2lvbl9wb2ludF9leG4iLCJ0YWciLCJoaW50IiwiaGludCQwIiwiaGludCQxIiwiZXhwYW5kX3Rlc3QiLCJsb2MkMCIsImV4cGFuZF90ZXN0X3VuaXQiLCJleHBhbmRfdGVzdF9tb2R1bGUiLCJtIiwiZiIsIm9wdF9uYW1lX2FuZF9leHByIiwiYXR0cmlidXRlcyIsIm5hbWVfb3B0IiwidGVzdCIsInRlc3RfdW5pdCIsInRlc3RfbW9kdWxlIiwiYWxsIiwicGFydGl0aW9uIiwibGlibmFtZSIsImxvYyQxIiwiaGVhZGVyIiwibG9jJDIiLCJmb290ZXIiLCJwcmVfdGVzdF9ob29rIiwidF9zZXhwX2dyYW1tYXIiLCJuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoIiwidCIsImVuYWJsZV9ldmVyeXRoaW5nIiwiYW1fcnVubmluZ19pbmxpbmVfdGVzdF9lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImFsbG93X291dHB1dF9wYXR0ZXJucyIsImRpc3BsYXllZF9kZXNjciIsImRlc2NyIiwiZmlsZW5hbWUiLCJsaW5lIiwic3RhcnRfcG9zIiwiZW5kX3BvcyIsIm5hbWUiLCJyZXN0IiwibGliIiwidGVzdHMiLCJsaXN0X3BhcnRpdGlvbnMiLCJwYXJ0aXRpb24iLCJ0YWdfcHJlZGljYXRlIiwibmFtZV9maWx0ZXIiLCJtc2ckMSIsImYiLCJhbm9uIiwicyIsInN0ciIsImZpbGUiLCJpbmRleCIsImluZGV4JDAiLCJpIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJ0YWciLCJsIiwiYXJndiIsIm1zZyIsIm1zZyQwIiwidiIsImFtX3Rlc3RfcnVubmVyIiwiYW1fcnVubmluZ19pbmxpbmVfdGVzdCIsInRlc3RpbmciLCJ3YWxsX3RpbWVfY2xvY2tfbnMiLCJ3aGVyZV90b19jdXRfYmFja3RyYWNlIiwidGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fIiwiYmVmb3JlX25zIiwicmVzIiwiZXhuJDAiLCJleG4iLCJzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSIsInNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlIiwic3RyaW5nX29mX21vZHVsZV9kZXNjciIsInByaW50X2RlbGF5ZWRfZXJyb3JzIiwiZGVsYXllZF9lcnJvcnMkMCIsIm1lc3NhZ2UiLCJlcHJpbnRmX29yX2RlbGF5IiwiZm10IiwiYWRkX2hvb2tzIiwiQyIsImh1bV9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJ0ZXN0X2lubmVyIiwiY29uZmlnIiwidGFncyIsImRlZl9maWxlbmFtZSIsImRlZl9saW5lX251bWJlciIsImJvb2xfb2ZfZiIsIndoYXRfdG9fZG8iLCJ3aGljaF90YWdzIiwib25seV90ZXN0X2xvY2F0aW9uIiwibGlibmFtZSIsImYkMCIsImRlc2NyJDAiLCJjb21wbGV0ZV90YWdzIiwidXNlZCIsImxpbmVfbnVtYmVyX29wdCIsInBvc2l0aW9uX3N0YXJ0IiwiZW5kX29mX2RlZl9maWxlbmFtZSIsImxpbmVfbnVtYmVyIiwiZm91bmQiLCJyZXEiLCJkcm9wcGVkIiwiZGVzY3IkMSIsInN1YnN0cmluZyIsInNob3VsZF9ydW4iLCJkZXNjciQyIiwiY2giLCJyZXN1bHQkMCIsImNhbWxfcmFuZG9tX3N0YXRlIiwiYmFzZV9yYW5kb21fc3RhdGUiLCJyZXN1bHQiLCJiYWNrdHJhY2UkMCIsImV4bl9zdHIiLCJzZXAiLCJzZXRfbGliX2FuZF9wYXJ0aXRpb24iLCJzdGF0aWNfbGliIiwid2hpY2hfdGVzdHMiLCJyZXF1aXJlc19wYXJ0aXRpb24iLCJ1bnNldF9saWIiLCJ0ZXN0IiwiYiIsInRlc3RfdW5pdCIsInRlc3RfbW9kdWxlIiwicGFydGlhbF90YWdzIiwicHJldiIsIngiLCJlJDAiLCJlIiwic3VtbWFyaXplIiwiayIsImFjYyIsImNvdW50IiwiY291bnRfdGVzdF9tb2R1bGVzIiwidW51c2VkX3Rlc3RzIiwiZXJyb3JzIiwidXNlX2NvbG9yJDAiLCJpbl9wbGFjZSQwIiwiZGlmZl9jb21tYW5kJDAiLCJzb3VyY2VfdHJlZV9yb290JDAiLCJhbGxvd19vdXRwdXRfcGF0dGVybnMkMCIsImV2YWx1YXRvcnMiLCJhZGRfZXZhbHVhdG9yIiwiZXhpdCIsImRlYnVnX3ByaW50aW5nIiwiY3JlYXRlX25vX3NldCIsIm9wdCIsInN0aCIsImRlYnVnIiwic3RoJDAiLCJlcSIsInNldF9zaWduYWwiLCJzaWduYWwiLCJob29rZWQiLCJyZWdpc3RlciIsImYiLCJyZWdpc3Rlcl9sd3QiLCJ2YWx1ZSIsInNldCIsInZhbHVlX2NoYW5nZWQiLCJjcmVhdGUiLCJzZXRfaG9va2VkIiwibWFwIiwibmV3X2hvb2tlZCIsImZtYXAiLCJkZWZhdWx0JDAiLCJ4IiwidiIsIm9uIiwiY29uZF9ob29rZWQiLCJpbml0aWFsX3ZhbHVlIiwiYiIsIm5ld192YWx1ZSIsImwyIiwiaG9va2VkMSIsImhvb2tlZDIiLCJuZXdfdmFsdWUxIiwibmV3X3ZhbHVlMiIsIm9mX3JlYWN0X3NpZ25hbCIsImxpbmtfdG9fb3JpZ2luYWxfc2lnbmFsIiwidG9fcmVhY3Rfc2lnbmFsIiwiY29uc3QkMCIsImNyZWF0ZV9ub19zZW5kIiwic2VuZF9ldmVudCIsImV2ZW50Iiwic2VuZCIsInNlbmRfaG9va2VkIiwidG9fcmVhY3RfZXZlbnQiLCJkZWJ1Z19wcmludCIsInNldF9hIiwiYSIsInIiLCJpIiwic2V0X3MiLCJzIiwiaCIsInNldF9jb25kIiwiY29uZCIsIm91dCIsInN0cmVhbSQxIiwic3RyZWFtJDAiLCJzdHJlYW0iLCJ2ZXJzaW9uIiwib2NhbWxfbGV4X3RhYmxlcyIsIm9jYW1sX2xleF90YWJsZXMkMCIsIm9jYW1sX2xleF90YWJsZXMkMSIsImpzb25fZXJyb3IiLCJzIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJ3cml0ZV9mbG9hdF9wcmVjIiwid3JpdGVfc3RkX2Zsb2F0Iiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMiLCJ3cml0ZV9pbnRsaXQiLCJ3cml0ZV9mbG9hdGxpdCIsIndyaXRlX3N0cmluZ2xpdCIsIml0ZXIyIiwiZl9lbHQiLCJmX3NlcCIsImwkMCIsInkkMCIsImwiLCJ5Iiwid3JpdGVfanNvbiIsImwkMSIsIndyaXRlX3R1cGxlIiwibyIsInMkMCIsIndyaXRlX3ZhcmlhbnQiLCJ3cml0ZV9hc3NvYyIsIndyaXRlX2xpc3QiLCJiIiwicyQxIiwiZiIsInMkMiIsInMkMyIsIndyaXRlX3N0ZF9qc29uIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ0b19idWZmZXIiLCJzdWYiLCJzdGgkMCIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJhIiwidiQwIiwibCQyIiwicHAiLCJmbXQiLCJ0dXAiLCJzZXAiLCJ2YWx1ZSIsIm5hbWUiLCJ4JDEiLCJ4cyIsImtleSIsInhzJDAiLCJ4JDAiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJ4JDUiLCJ4JDYiLCJzaG93IiwiZXF1YWwiLCJhJDAiLCJiJDAiLCJiJDEiLCJhJDEiLCJ5cyIsImNvbXBhcmVfa2V5cyIsImtleSQwIiwieXMkMCIsInZhbHVlJDAiLCJyZXN1bHQiLCJ5cyQxIiwieHMkMSIsImIkMiIsImEkMiIsIm5hbWUkMCIsInJlc3VsdCQwIiwiYiQzIiwiYSQzIiwiYiQ0IiwiYSQ0IiwiYiQ1IiwiYSQ1IiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicHBfbGlzdCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwicyQ0Iiwib3AiLCJyZXByZXNlbnRhdGlvbiIsInJlcHJlc2VudGF0aW9uJDAiLCJwcCQwIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwiaGV4JDAiLCJ3cml0ZV9zcGVjaWFsJDAiLCJ3cml0ZV9zdHJpbmckMCIsImpzb25fc3RyaW5nX29mX3N0cmluZyQwIiwid3JpdGVfbnVsbCQwIiwid3JpdGVfYm9vbCQwIiwid3JpdGVfZGlnaXRzJDAiLCJ3cml0ZV9pbnQkMCIsImZsb2F0X25lZWRzX3BlcmlvZCQwIiwid3JpdGVfZmxvYXQkMCIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjJDAiLCJ3cml0ZV9mbG9hdF9wcmVjJDAiLCJ3cml0ZV9zdGRfZmxvYXQkMCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjJDAiLCJpdGVyMiQwIiwiZl9zZXAkMCIsIndyaXRlX2pzb24kMCIsIndyaXRlX2Fzc29jJDAiLCJ3cml0ZV9saXN0JDAiLCJ3cml0ZV9zdGRfanNvbiQwIiwidG9fYnVmZmVyJDAiLCJ0b19zdHJpbmckMCIsInRvX2NoYW5uZWwkMCIsInRvX291dHB1dCQwIiwidG9fZmlsZSQwIiwic2VxX3RvX2J1ZmZlciQwIiwic2VxX3RvX3N0cmluZyQwIiwic2VxX3RvX2NoYW5uZWwkMCIsInNlcV90b19maWxlJDAiLCJzb3J0JDAiLCJwcF9saXN0JDAiLCJpc19hdG9tJDAiLCJmb3JtYXQkMCIsInBwJDEiLCJwcCQyIiwic2hvdyQwIiwiZXF1YWwkMCIsInByZXR0eV9wcmludCQwIiwicHJldHR5X3RvX3N0cmluZyQwIiwicHJldHR5X3RvX2NoYW5uZWwkMCIsImhleCQxIiwiY3VzdG9tX2Vycm9yIiwiZGVzY3IiLCJsZXhidWYiLCJvZmZzIiwiYm9sIiwicG9zMSIsInBvczIiLCJmaWxlX2xpbmUiLCJieXRlcyIsIm1zZyIsImxleGVyX2Vycm9yIiwicmVhZF9qdW5rIiwibG9uZ19lcnJvciIsImp1bmsiLCJleHRyYV9qdW5rIiwibWluMTAiLCJtYXgxMCIsImV4dHJhY3RfcG9zaXRpdmVfaW50IiwiZXh0cmFjdF9uZWdhdGl2ZV9pbnQiLCJuZXdsaW5lIiwiYWRkX2xleGVtZSIsInJlYWRfanNvbiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwiZmluaXNoX3N0cmluZyIsImFjYyIsInJlYWRfc3BhY2UiLCJyZWFkX29iamVjdF9lbmQiLCJmaWVsZF9uYW1lIiwicmVhZF9pZGVudCIsInJlYWRfY29sb24iLCJyZWFkX29iamVjdF9zZXAiLCJmaWVsZF9uYW1lJDAiLCJhY2MkMCIsInJlYWRfYXJyYXlfZW5kIiwicmVhZF9hcnJheV9zZXAiLCJmaW5pc2hfY29tbWVudCIsImZpbmlzaF9lc2NhcGVkX2NoYXIiLCJtYXBfc3RyaW5nIiwiYyQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsImMkMSIsImQkMCIsImZpbmlzaF9zdHJpbmdsaXQiLCJmaW5pc2hfdmFyaWFudCIsInJlYWRfZ3QiLCJyZWFkX2x0IiwicmVhZF9jb21tYSIsInN0YXJ0X2FueV92YXJpYW50IiwicmVhZF9lb2YiLCJyZWFkX251bGwiLCJyZWFkX251bGxfaWZfcG9zc2libGUiLCJyZWFkX2Jvb2wiLCJyZWFkX2ludCIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsIm1hcF9pZGVudCIsInJlYWRfc2VxdWVuY2UiLCJyZWFkX2NlbGwiLCJpbml0X2FjYyIsInJlYWRfbGlzdF9yZXYiLCJyZWFkX3R1cGxlIiwicmVhZF90dXBsZV9lbmQiLCJyZWFkX3R1cGxlX2VuZDIiLCJyZWFkX3R1cGxlX3NlcCIsInJlYWRfdHVwbGVfc2VwMiIsInJlYWRfYWJzdHJhY3RfZmllbGRzIiwicmVhZF9rZXkiLCJyZWFkX2ZpZWxkIiwicmVhZF9sY3VybCIsInN0YXJ0X2FueV90dXBsZSIsInJlYWRfbHBhciIsInJlYWRfcnBhciIsInJlYWRfbGJyIiwicmVhZF9yYnIiLCJza2lwX2pzb24iLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQiLCJza2lwX2lkZW50IiwiZmluaXNoX3NraXBfdmFyaWFudCIsImJ1ZmZlcl9qc29uIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQiLCJidWZmZXJfc3BhY2UiLCJidWZmZXJfaWRlbnQiLCJidWZmZXJfY29sb24iLCJvY2FtbF9sZXhfc3RhdGUkMyIsIm9jYW1sX2xleF9zdGF0ZSQ0Iiwib2NhbWxfbGV4X3N0YXRlJDUiLCJvY2FtbF9sZXhfc3RhdGUkNiIsIm9jYW1sX2xleF9zdGF0ZSQ3Iiwib2NhbWxfbGV4X3N0YXRlJDgiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQiLCJyZWFkX2ludDgiLCJyZWFkX2xpc3QiLCJyZWFkX2FycmF5IiwidGwiLCJyIiwicmVhZF9maWVsZHMiLCJmcm9tX2xleGJ1ZiIsImZyb21fc3RyaW5nJDAiLCJmcm9tX2NoYW5uZWwkMCIsImljIiwiZnJvbV9maWxlIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwiZmluX2UkMCIsImZpbl9lIiwic2VxX2Zyb21fc3RyaW5nIiwic2VxX2Zyb21fY2hhbm5lbCIsInNlcV9mcm9tX2ZpbGUiLCJmbmFtZSQwIiwibGluZXNlcV9mcm9tX2NoYW5uZWwiLCJsbnVtMCIsImxpbmUiLCJsaW5lc2VxX2Zyb21fZmlsZSIsInByZXR0aWZ5IiwiY29tcGFjdCIsInR5cGVyciIsImpzIiwibWVtYmVyIiwib2JqIiwicGF0aCIsIm9iaiQwIiwiYXNzb2MiLCJvYmokMSIsImluZGV4Iiwid3JhcHBlZF9pbmRleCIsIm1hcCIsInRvX2Fzc29jIiwidG9fb3B0aW9uIiwidG9fYm9vbCIsInRvX2Jvb2xfb3B0aW9uIiwidG9fbnVtYmVyIiwidG9fbnVtYmVyX29wdGlvbiIsInRvX2Zsb2F0IiwidG9fZmxvYXRfb3B0aW9uIiwidG9faW50IiwidG9faW50X29wdGlvbiIsInRvX2xpc3QiLCJ0b19zdHJpbmckMSIsInRvX3N0cmluZ19vcHRpb24iLCJjb252ZXJ0X2VhY2giLCJmaWx0ZXJfbWFwIiwiZmxhdHRlbiIsImwyIiwiZmlsdGVyX2luZGV4IiwiZmlsdGVyX2xpc3QiLCJmaWx0ZXJfbWVtYmVyIiwiZmlsdGVyX2Fzc29jIiwiZmlsdGVyX2Jvb2wiLCJmaWx0ZXJfaW50IiwiZmlsdGVyX2Zsb2F0IiwiZmlsdGVyX251bWJlciIsImZpbHRlcl9zdHJpbmciLCJrZXlzIiwidmFsdWVzIiwiY29tYmluZSIsImZpcnN0Iiwic2Vjb25kIiwidG9fYmFzaWMiLCJoZXgkMiIsIndyaXRlX3NwZWNpYWwkMSIsIndyaXRlX3N0cmluZyQxIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDEiLCJ3cml0ZV9udWxsJDEiLCJ3cml0ZV9ib29sJDEiLCJ3cml0ZV9kaWdpdHMkMSIsIndyaXRlX2ludCQxIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDEiLCJ3cml0ZV9mbG9hdCQxIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2Zsb2F0X3ByZWMkMSIsIndyaXRlX3N0ZF9mbG9hdCQxIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2ludGxpdCQwIiwiaXRlcjIkMSIsImZfc2VwJDEiLCJ3cml0ZV9qc29uJDEiLCJ3cml0ZV90dXBsZSQwIiwid3JpdGVfYXNzb2MkMSIsIndyaXRlX2xpc3QkMSIsIndyaXRlX3ZhcmlhbnQkMCIsIndyaXRlX3N0ZF9qc29uJDEiLCJ3cml0ZV9zdGRfdHVwbGUkMCIsIndyaXRlX3N0ZF92YXJpYW50JDAiLCJ0b19idWZmZXIkMSIsInRvX3N0cmluZyQyIiwidG9fY2hhbm5lbCQxIiwidG9fb3V0cHV0JDEiLCJ0b19maWxlJDEiLCJzZXFfdG9fYnVmZmVyJDEiLCJzZXFfdG9fc3RyaW5nJDEiLCJzZXFfdG9fY2hhbm5lbCQxIiwic2VxX3RvX2ZpbGUkMSIsInNvcnQkMSIsInBwX2xpc3QkMSIsImlzX2F0b20kMSIsImZvcm1hdCQxIiwicHAkMyIsInBwJDQiLCJzaG93JDEiLCJlcXVhbCQxIiwicHJldHR5X3ByaW50JDEiLCJwcmV0dHlfdG9fc3RyaW5nJDEiLCJwcmV0dHlfdG9fY2hhbm5lbCQxIiwiaGV4JDMiLCJjdXN0b21fZXJyb3IkMCIsImxleGVyX2Vycm9yJDAiLCJyZWFkX2p1bmskMCIsImxvbmdfZXJyb3IkMCIsIm1pbjEwJDAiLCJtYXgxMCQwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQkMCIsImV4dHJhY3RfbmVnYXRpdmVfaW50JDAiLCJuZXdsaW5lJDAiLCJhZGRfbGV4ZW1lJDAiLCJyZWFkX2pzb24kMCIsImZpbmlzaF9zdHJpbmckMCIsInJlYWRfc3BhY2UkMCIsInJlYWRfb2JqZWN0X2VuZCQwIiwicmVhZF9pZGVudCQwIiwicmVhZF9jb2xvbiQwIiwicmVhZF9vYmplY3Rfc2VwJDAiLCJyZWFkX2FycmF5X2VuZCQwIiwicmVhZF9hcnJheV9zZXAkMCIsImFjYyQxIiwicmVhZF90dXBsZV9lbmQkMCIsInJlYWRfdHVwbGVfc2VwJDAiLCJjb25zIiwiZmluaXNoX3ZhcmlhbnQkMCIsImZpbmlzaF9jb21tZW50JDAiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDAiLCJtYXBfc3RyaW5nJDAiLCJmaW5pc2hfc3RyaW5nbGl0JDAiLCJyZWFkX2d0JDAiLCJyZWFkX2x0JDAiLCJyZWFkX2NvbW1hJDAiLCJzdGFydF9hbnlfdmFyaWFudCQwIiwicmVhZF9lb2YkMCIsInJlYWRfbnVsbCQwIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDAiLCJyZWFkX2Jvb2wkMCIsInJlYWRfaW50JDAiLCJyZWFkX2ludDMyJDAiLCJyZWFkX2ludDY0JDAiLCJyZWFkX251bWJlciQwIiwicmVhZF9zdHJpbmckMCIsIm1hcF9pZGVudCQwIiwicmVhZF9zZXF1ZW5jZSQwIiwicmVhZF9saXN0X3JldiQwIiwicmVhZF90dXBsZSQwIiwicG9zIiwicmVhZF90dXBsZV9lbmQyJDAiLCJyZWFkX3R1cGxlX3NlcDIkMCIsInJlYWRfYWJzdHJhY3RfZmllbGRzJDAiLCJyZWFkX2xjdXJsJDAiLCJzdGFydF9hbnlfdHVwbGUkMCIsInJlYWRfbHBhciQwIiwicmVhZF9ycGFyJDAiLCJyZWFkX2xiciQwIiwicmVhZF9yYnIkMCIsInNraXBfanNvbiQwIiwiZmluaXNoX3NraXBfc3RyaW5nbGl0JDAiLCJza2lwX2lkZW50JDAiLCJmaW5pc2hfc2tpcF92YXJpYW50JDAiLCJidWZmZXJfanNvbiQwIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQkMCIsImJ1ZmZlcl9zcGFjZSQwIiwiYnVmZmVyX2lkZW50JDAiLCJidWZmZXJfY29sb24kMCIsIm9jYW1sX2xleF9zdGF0ZSQ5Iiwib2NhbWxfbGV4X3N0YXRlJDEwIiwib2NhbWxfbGV4X3N0YXRlJDExIiwib2NhbWxfbGV4X3N0YXRlJDEyIiwib2NhbWxfbGV4X3N0YXRlJDEzIiwib2NhbWxfbGV4X3N0YXRlJDE0Iiwib2NhbWxfbGV4X3N0YXRlJDE1Iiwib2NhbWxfbGV4X3N0YXRlJDE2IiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDAiLCJqdW5rJDAiLCJyZWFkX2ludDgkMCIsInJlYWRfbGlzdCQwIiwicmVhZF9hcnJheSQwIiwicmVhZF9maWVsZHMkMCIsImZyb21fbGV4YnVmJDAiLCJmcm9tX3N0cmluZyQyIiwiZnJvbV9jaGFubmVsJDIiLCJmcm9tX2ZpbGUkMCIsInNlcV9mcm9tX2xleGJ1ZiQwIiwic2VxX2Zyb21fc3RyaW5nJDAiLCJzZXFfZnJvbV9jaGFubmVsJDAiLCJzZXFfZnJvbV9maWxlJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQwIiwibGluZXNlcV9mcm9tX2ZpbGUkMCIsInByZXR0aWZ5JDAiLCJjb21wYWN0JDAiLCJ0eXBlcnIkMCIsIm1lbWJlciQwIiwicGF0aCQwIiwiaW5kZXgkMCIsIm1hcCQwIiwidG9fYXNzb2MkMCIsInRvX29wdGlvbiQwIiwidG9fYm9vbCQwIiwidG9fYm9vbF9vcHRpb24kMCIsInRvX251bWJlciQwIiwidG9fbnVtYmVyX29wdGlvbiQwIiwidG9fZmxvYXQkMCIsInRvX2Zsb2F0X29wdGlvbiQwIiwidG9faW50JDAiLCJ0b19pbnRfb3B0aW9uJDAiLCJ0b19saXN0JDAiLCJ0b19zdHJpbmckMyIsInRvX3N0cmluZ19vcHRpb24kMCIsImNvbnZlcnRfZWFjaCQwIiwiZmlsdGVyX21hcCQwIiwiZmxhdHRlbiQwIiwiZmlsdGVyX2luZGV4JDAiLCJmaWx0ZXJfbGlzdCQwIiwiZmlsdGVyX21lbWJlciQwIiwiZmlsdGVyX2Fzc29jJDAiLCJmaWx0ZXJfYm9vbCQwIiwiZmlsdGVyX2ludCQwIiwiZmlsdGVyX2Zsb2F0JDAiLCJmaWx0ZXJfbnVtYmVyJDAiLCJmaWx0ZXJfc3RyaW5nJDAiLCJrZXlzJDAiLCJ2YWx1ZXMkMCIsImNvbWJpbmUkMCIsImhleCQ0Iiwid3JpdGVfc3BlY2lhbCQyIiwid3JpdGVfc3RyaW5nJDIiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMiIsIndyaXRlX251bGwkMiIsIndyaXRlX2Jvb2wkMiIsIndyaXRlX2ludGxpdCQxIiwid3JpdGVfZmxvYXRsaXQkMCIsIndyaXRlX3N0cmluZ2xpdCQwIiwiaXRlcjIkMiIsImZfc2VwJDIiLCJ3cml0ZV9qc29uJDIiLCJ3cml0ZV9hc3NvYyQyIiwid3JpdGVfbGlzdCQyIiwid3JpdGVfdHVwbGUkMSIsIndyaXRlX3ZhcmlhbnQkMSIsIndyaXRlX3N0ZF9qc29uJDIiLCJ3cml0ZV9zdGRfdHVwbGUkMSIsIndyaXRlX3N0ZF92YXJpYW50JDEiLCJ0b19idWZmZXIkMiIsInRvX3N0cmluZyQ0IiwidG9fY2hhbm5lbCQyIiwidG9fb3V0cHV0JDIiLCJ0b19maWxlJDIiLCJzZXFfdG9fYnVmZmVyJDIiLCJzZXFfdG9fc3RyaW5nJDIiLCJzZXFfdG9fY2hhbm5lbCQyIiwic2VxX3RvX2ZpbGUkMiIsInNvcnQkMiIsInBwX2xpc3QkMiIsImlzX2F0b20kMiIsImZvcm1hdCQyIiwicHAkNSIsInBwJDYiLCJzaG93JDIiLCJlcXVhbCQyIiwicHJldHR5X3ByaW50JDIiLCJwcmV0dHlfdG9fc3RyaW5nJDIiLCJwcmV0dHlfdG9fY2hhbm5lbCQyIiwiaGV4JDUiLCJjdXN0b21fZXJyb3IkMSIsImxleGVyX2Vycm9yJDEiLCJyZWFkX2p1bmskMSIsImxvbmdfZXJyb3IkMSIsIm1pbjEwJDEiLCJtYXgxMCQxIiwibmV3bGluZSQxIiwiYWRkX2xleGVtZSQxIiwicmVhZF9qc29uJDEiLCJmaW5pc2hfc3RyaW5nbGl0JDEiLCJyZWFkX3NwYWNlJDEiLCJyZWFkX29iamVjdF9lbmQkMSIsInJlYWRfaWRlbnQkMSIsInJlYWRfY29sb24kMSIsInJlYWRfb2JqZWN0X3NlcCQxIiwicmVhZF9hcnJheV9lbmQkMSIsInJlYWRfYXJyYXlfc2VwJDEiLCJyZWFkX3R1cGxlX2VuZCQxIiwicmVhZF90dXBsZV9zZXAkMSIsImZpbmlzaF92YXJpYW50JDEiLCJmaW5pc2hfY29tbWVudCQxIiwiZmluaXNoX3N0cmluZyQxIiwiZmluaXNoX2VzY2FwZWRfY2hhciQxIiwibWFwX3N0cmluZyQxIiwicmVhZF9ndCQxIiwicmVhZF9sdCQxIiwicmVhZF9jb21tYSQxIiwic3RhcnRfYW55X3ZhcmlhbnQkMSIsInJlYWRfZW9mJDEiLCJyZWFkX251bGwkMSIsInJlYWRfbnVsbF9pZl9wb3NzaWJsZSQxIiwicmVhZF9ib29sJDEiLCJyZWFkX2ludCQxIiwic3RhcnQkMCIsInN0b3AkMCIsIm4kMCIsImkkMCIsInJlYWRfaW50MzIkMSIsInJlYWRfaW50NjQkMSIsInJlYWRfbnVtYmVyJDEiLCJyZWFkX3N0cmluZyQxIiwibWFwX2lkZW50JDEiLCJyZWFkX3NlcXVlbmNlJDEiLCJyZWFkX2xpc3RfcmV2JDEiLCJyZWFkX3R1cGxlJDEiLCJyZWFkX3R1cGxlX2VuZDIkMSIsInJlYWRfdHVwbGVfc2VwMiQxIiwicmVhZF9hYnN0cmFjdF9maWVsZHMkMSIsInJlYWRfbGN1cmwkMSIsInN0YXJ0X2FueV90dXBsZSQxIiwicmVhZF9scGFyJDEiLCJyZWFkX3JwYXIkMSIsInJlYWRfbGJyJDEiLCJyZWFkX3JiciQxIiwic2tpcF9qc29uJDEiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQkMSIsInNraXBfaWRlbnQkMSIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMSIsImJ1ZmZlcl9qc29uJDEiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCQxIiwiYnVmZmVyX3NwYWNlJDEiLCJidWZmZXJfaWRlbnQkMSIsImJ1ZmZlcl9jb2xvbiQxIiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDEiLCJqdW5rJDEiLCJyZWFkX2ludDgkMSIsInJlYWRfbGlzdCQxIiwicmVhZF9hcnJheSQxIiwicmVhZF9maWVsZHMkMSIsImZyb21fbGV4YnVmJDEiLCJmcm9tX3N0cmluZyQ0IiwiZnJvbV9jaGFubmVsJDQiLCJmcm9tX2ZpbGUkMSIsInNlcV9mcm9tX2xleGJ1ZiQxIiwic2VxX2Zyb21fc3RyaW5nJDEiLCJzZXFfZnJvbV9jaGFubmVsJDEiLCJzZXFfZnJvbV9maWxlJDEiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQxIiwibGluZXNlcV9mcm9tX2ZpbGUkMSIsInByZXR0aWZ5JDEiLCJjb21wYWN0JDEiLCJ0eXBlcnIkMSIsIm1lbWJlciQxIiwicGF0aCQxIiwiaW5kZXgkMSIsIm1hcCQxIiwidG9fYXNzb2MkMSIsInRvX29wdGlvbiQxIiwidG9fYm9vbCQxIiwidG9fYm9vbF9vcHRpb24kMSIsInRvX251bWJlciQxIiwidG9fbnVtYmVyX29wdGlvbiQxIiwidG9fZmxvYXQkMSIsInRvX2Zsb2F0X29wdGlvbiQxIiwidG9faW50JDEiLCJ0b19pbnRfb3B0aW9uJDEiLCJ0b19saXN0JDEiLCJ0b19zdHJpbmckNSIsInRvX3N0cmluZ19vcHRpb24kMSIsImNvbnZlcnRfZWFjaCQxIiwiZmlsdGVyX21hcCQxIiwiZmxhdHRlbiQxIiwiZmlsdGVyX2luZGV4JDEiLCJmaWx0ZXJfbGlzdCQxIiwiZmlsdGVyX21lbWJlciQxIiwiZmlsdGVyX2Fzc29jJDEiLCJmaWx0ZXJfYm9vbCQxIiwiZmlsdGVyX2ludCQxIiwiZmlsdGVyX2Zsb2F0JDEiLCJmaWx0ZXJfbnVtYmVyJDEiLCJmaWx0ZXJfc3RyaW5nJDEiLCJrZXlzJDEiLCJ2YWx1ZXMkMSIsImNvbWJpbmUkMSIsInJhd192ZXJzaW9uX3N0cmluZyIsImV4dHJhY3RfdGFnX3JlIiwiZ3IiLCJ2ZXJzaW9uX3N0cmluZyIsInZlcnNpb25fbXNnIiwidmVyc2lvbl9rYXNhX2Z1bGxfbmFtZSIsInZlcnNpb25fa2FkZV9mdWxsX25hbWUiLCJ0a19pc19pbml0aWFsaXplZCIsInBwX2V4Y2VwdGlvbiIsImYiLCJleGMiLCJ4IiwieCQwIiwieCQxIiwieCQyIiwieSIsIngkMyIsImVyIiwieSQwIiwieCQ0IiwiZXIkMCIsIngkNSIsImNzdCIsImZsb2F0X2lzX3plcm8iLCJ4IiwicG93IiwiaSIsImoiLCJhdXgiLCJrIiwiYWNjdSIsImskMCIsImFjY3UkMCIsImFjY3UkMSIsImskMSIsImZhY3QiLCJpJDAiLCJpJDEiLCJnZXRfcHJvZHVjdF9pbWFnZV9vY2MiLCJzdGFydCIsImNvbWJpbmUiLCJmIiwibCIsImwkMCIsInQkMSIsIm9sZCQxIiwibCQxIiwib2xkIiwib2NjIiwidCIsImgiLCJvY2MkMCIsInQkMCIsIm9sZCQwIiwiZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjXzIiLCJsMSIsImwyIiwibDEkMCIsImwyJDAiLCJjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCIsImgkMCIsImwxJDEiLCJsMiQxIiwiaDIiLCJoMSIsIm9jYzEiLCJsMSQyIiwib2NjMiIsImwyJDIiLCJvY2MyJDAiLCJsMiQzIiwib2NjMSQwIiwibDEkMyIsImFjY3UkMiIsImRpdjIiLCJwb3c2NCIsIm4iLCJjYW50b3JfcGFpcmluZyIsInkiLCJzIiwicmVhZF9pbnB1dCIsInVzZXJfaW5wdXQiLCJhY2MiLCJjIiwiYWNjJDAiLCJub3RfYW5faWQiLCJhcnJheV9mb2xkX2xlZnRfbWFwaSIsImEiLCJvdXQiLCJ5JDAiLCJvIiwiYXJyYXlfbWFwX29mX2xpc3QiLCJ4JDAiLCJsZW4iLCJhbnMiLCJhcnJheV9yZXZfb2ZfbGlzdCIsImFycmF5X3Jldl9tYXBfb2ZfbGlzdCIsImFycmF5X2ZvbGRfbGVmdGkiLCJlIiwiYXJyYXlfZm9sZF9yaWdodGkiLCJ4JDEiLCJhcnJheV9mb2xkX2xlZnQyaSIsImExIiwiYTIiLCJhcnJheV9maWx0ZXIiLCJhcnJheV9taW5fZXF1YWxfbm90X251bGwiLCJhZzEiLCJuYjEiLCJhZzIiLCJuYjIiLCJqJDAiLCJvdXQkMSIsImkkMiIsInZhIiwiYWcxJDAiLCJuYjEkMCIsImFnMiQwIiwibmIyJDAiLCJvdXQkMCIsImFycmF5X2NvbXBhcmUiLCJjb21wYXJlIiwiYiIsImQiLCJpdGVyaSIsInJlY3RpIiwibWluX3Bvc19pbnRfbm90X3plcm8iLCJkYXRhYiIsImtleWIiLCJkYXRhYSIsImtleWEiLCJtYXhfcG9zX2ludF9ub3RfemVybyIsImZvbGRfb3Zlcl9wZXJtdXRhdGlvbnMiLCJ0b19kbyIsImRpc2NhcmRlZCIsInBlcm11dGF0aW9uIiwidG9fZG8kMCIsImRpc2NhcmRlZCQwIiwidG9fZG8kMSIsImxpc3QiLCJ0b19kbzEiLCJkaXNjYXJkZWQkMSIsImdjZF8yIiwiYSQwIiwiYiQwIiwiYiQxIiwibGNtXzIiLCJsY20iLCJnZXRfaW50ZXJ2YWxfbGlzdCIsInAiLCJhZGQiLCJjdXJyZW50Iiwib3V0cHV0IiwiY3VycmVudCQwIiwib3V0cHV0JDAiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwic3RyaW5nX3NwbGl0X29uX2NoYXIiLCJkZWxpbWl0ZXIiLCJpbmRleCIsImxlbmd0aCIsInNtYXNoX2R1cGxpY2F0ZV9pbl9vcmRlcmVkX2xpcyIsInRhaWwkMiIsIm5vY2MkMiIsImN1cnJlbnQkMSIsInRhaWwiLCJub2NjIiwidGFpbCQwIiwibm9jYyQwIiwidGFpbCQxIiwibm9jYyQxIiwiY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIiwibmFtZSIsImV4dCIsImZpbmRfYXZhaWxhYmxlX25hbWUiLCJhbHJlYWR5X3RoZXJlIiwiZmFjdWx0YXRpdmUiLCJleHQkMCIsImJhc2UiLCJiYXNlJDAiLCJ2IiwiZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIiwiZ2V0X3JlZiIsInJlZiIsInJlbW92ZV9kb3VibGVfZWxlbWVudHMiLCJzb3J0X2J5X3ByaW9yaXR5Iiwia2V5cyIsInNvcnQiLCJrZXkiLCJlbHQiLCJtYXBfb3B0Iiwib3B0IiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsIndyaXRlX3RvX2NoYW5uZWwiLCJzdHJpbmdfb2Zfd3JpdGUiLCJzdGgiLCJvYiIsInJlYWRfb2Zfc3RyaW5nIiwibGV4X3N0IiwibGV4X2J1ZiIsInJlYWRfYmV0d2Vlbl9zcGFjZXMiLCJyZWFkX25leHRfaXRlbSIsInN0IiwiZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24iLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcnJvcl9tc2ciLCJvZl9pbnQiLCJ0b19pbnQiLCJvZl9ib29sIiwidG9fYm9vbCIsIm9mX3VuaXQiLCJ0b191bml0Iiwib2Zfb3B0aW9uIiwidG9fanNvbiIsInRvX29wdGlvbiIsIndyaXRlX29wdGlvbiIsInJlYWRfb3B0aW9uIiwibGIiLCJvZl9saXN0IiwidG9fbGlzdCIsIm9mX2pzb24iLCJ3cml0ZV9jb21tYSIsIndyaXRlX2xpc3QiLCJmX2VsdCIsIm9mX2FycmF5IiwidG9fYXJyYXkiLCJ3cml0ZV9hcnJheSIsIndyaXRlX3NlcXVlbmNlIiwicSQwIiwiZiQwIiwicSIsInJlYWRfdmFyaWFudCIsInJlYWRfaWQiLCJyZWFkIiwic21hcnRfYXNzb2MiLCJvZl9hc3NvYyIsInRvX2Fzc29jIiwianNvbiIsIndyaXRlX2ZpZWxkIiwibmEiLCJvZl9wYWlyIiwidG9fanNvbjEiLCJ0b19qc29uMiIsImxhYjEiLCJzdGgkMCIsImxhYjIiLCJ0b190cmlwbGUiLCJvZl9qc29uMSIsIm9mX2pzb24yIiwib2ZfanNvbjMiLCJzdGgkMSIsImxhYjMiLCJzdGgkMiIsIm9mX3RyaXBsZSIsInRvX2pzb24zIiwidG9fcGFpciIsIndyaXRlX2NvbXBhY3RfcGFpciIsImciLCJyZWFkX2NvbXBhY3RfcGFpciIsImNvbXBhY3RfdG9fcGFpciIsIm9mX21hcCIsImZvbGQiLCJrZXlfdG9fanNvbiIsInZhbHVlX3RvX2pzb24iLCJtYXAiLCJsYWJfa2V5IiwibGFiX3ZhbHVlIiwidmFsdWUiLCJ0b19tYXAiLCJlbXB0eSIsImpzb25fdG9fa2V5IiwianNvbl90b192YWx1ZSIsIm9mX3VuaXhfbGFiZWwiLCJpbnQkMCIsInRvX3VuaXhfbGFiZWwiLCJvZl91bml4X2Vycm9yIiwidG9fdW5peF9lcnJvciIsInN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCIsImNyZWF0ZSIsImdldCIsInNldCIsIm4kMSIsIm4kMCIsImFycmF5IiwiaW5pdCIsImFwcGVuZCIsImxhIiwiY29uY2F0Iiwic29sIiwibSIsIm9mZnNldCIsIm9mZnNldCQwIiwic3ViIiwic2l6ZSIsImNvcHkiLCJmaWxsIiwiZGVmYXVsdCQwIiwiaXRlciIsImZvbGRfbGVmdGkiLCJmb2xkX3JpZ2h0aSIsImJsaXQiLCJvZnMxIiwib2ZzMiIsInByaW50IiwidHJhaWxpbmciLCJwcl9zIiwicHJfYSIsIm1heF9hcnJheV9zaXplMSIsIm1heF9hcnJheV9zaXplMiIsImV1Y2xpZGVlbiIsInAkMCIsIm0kMCIsImEkMSIsImcyIiwiZzEiLCJpbml0JDAiLCJwcl9zZXAiLCJwcl9lbCIsInN1Y2Nlc3MiLCJzdG9wIiwic3VjY2Vzc19vcl9zdG9wIiwiaGVpZ2h0Iiwibm9kZSIsImxlZnQiLCJyaWdodCIsImhsIiwiaHIiLCJobCQwIiwiaXNfZW1wdHkiLCJzaW5nbGV0b24iLCJpc19zaW5nbGV0b24iLCJzZXQyIiwic2V0MSIsImJhbGFuY2UiLCJoZWlnaHRfbGVmdCIsImhlaWdodF9yaWdodCIsImxlZnRyaWdodCIsImxlZnR2YWx1ZSIsImxlZnRsZWZ0IiwibGVmdHJpZ2h0cmlnaHQiLCJsZWZ0cmlnaHR2YWx1ZSIsImxlZnRyaWdodGxlZnQiLCJyaWdodHJpZ2h0IiwicmlnaHR2YWx1ZSIsInJpZ2h0bGVmdCIsInJpZ2h0bGVmdHJpZ2h0IiwicmlnaHRsZWZ0dmFsdWUiLCJyaWdodGxlZnRsZWZ0IiwiYmFsYW5jZV93aXRoX2xvZ3MiLCJ3YXJuIiwicGFyYW1ldGVycyIsImVycm9yIiwibG9jIiwiZXJyb3IkMCIsInIiLCJvJDAiLCJhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MiLCJuZXdfdmFsIiwidmFsdWVfc2V0IiwicmlnaHQkMCIsImJvb2wiLCJzZXQkMCIsImVycm9yJDEiLCJsZWZ0JDAiLCJib29sJDAiLCJlcnJvciQyIiwic2V0JDEiLCJlcnJvciQzIiwiYWRkX3dpdGhfbG9ncyIsIm5ld192YWx1ZSIsImFkZF9ldmVuX2lmX2l0X2V4aXN0cyIsImpvaW4iLCJyaWdodGhlaWdodCIsImxlZnRoZWlnaHQiLCJzYWZlX2V4dHJhY3RfbWluX2VsdCIsIm1pbiIsIm1pbl9lbHRfd2l0aF9sb2dzIiwicmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIiwiam9pbl93aXRoX2xvZ3MiLCJyaWdodDIiLCJ2YWx1ZTIiLCJsZWZ0MiIsInNldDIkMCIsIm1pbjIiLCJjb25jYXRfd2l0aF9sb2dzIiwiZWx0X29wdCIsInNwbGl0X3dpdGhfbG9ncyIsInNwbGl0X3ZhbCIsInNldF92YWwiLCJsZWZ0bGVmdCQwIiwicmlnaHRyaWdodCQwIiwicmVtb3ZlIiwicmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIiwiZXJyb3IkNCIsImVycm9yJDUiLCJlcnJvciQ2IiwiZXJyb3IkNyIsImVycm9yJDgiLCJzZXQkMiIsImVycm9yJDkiLCJyZW1vdmVfd2l0aF9sb2dzIiwic3BsaXQiLCJzcGxpdF92YWx1ZSIsInNldF92YWx1ZSIsInVuaW9uIiwiaGVpZ2h0MiIsImhlaWdodDEiLCJyaWdodDEiLCJ2YWx1ZTEiLCJsZWZ0MSIsInJpZ2h0MiQwIiwibGVmdDIkMCIsInJpZ2h0MSQwIiwibGVmdDEkMCIsImRpc2pvaW50X3VuaW9uIiwidW5pb25fZ2VuIiwiYWRkX2dlbiIsInVuaW9uX3dpdGhfbG9ncyIsInciLCJzJDAiLCJkaXNqb2ludF91bmlvbl93aXRoX2xvZ3MiLCJzdXR1cmVfbm90IiwiaW50ZXIiLCJ0cmlwbGUyIiwic3V0dXJlX25vdF93aXRoX2xvZ3MiLCJpbnRlcl93aXRoX2xvZ3MiLCJkaWZmIiwiZGlmZl93aXRoX2xvZ3MiLCJtaW51cyIsIm1pbnVzX3dpdGhfbG9ncyIsIm1lbSIsInNlYXJjaGVkX3ZhbHVlIiwiZmlsdGVyIiwiZmlsdCIsImZpbHRlcl93aXRoX2xvZ3MiLCJwYXJ0aXRpb24iLCJwYXJ0IiwicGFydGl0aW9uX3dpdGhfbG9ncyIsInJoIiwiY29uc19lbnVtIiwiZW51bSQxIiwiZTIkMiIsImUxJDIiLCJlMSIsImUyIiwiZTIkMCIsInIyIiwidjIiLCJlMSQwIiwicjEiLCJ2MSIsImUyJDEiLCJlMSQxIiwiZXF1YWwiLCJzdWJzZXQiLCJzZXQxJDAiLCJmb2xkX2ludiIsImZvcl9hbGwiLCJleGlzdHMiLCJlbGVtZW50cyIsImVsZW1lbnRzX2F1eCIsImF1eF9wcmludCIsImtleSQxIiwia2V5JDAiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNob29zZSIsInJhbmRvbSIsInJzIiwiYWltX2FjYyIsImFjY19sIiwiYWNjX3IiLCJlbXB0eSQwIiwiaGVpZ2h0JDAiLCJzaXplJDAiLCJub2RlJDAiLCJrZXkwIiwiZGF0YSIsImlzX2VtcHR5JDAiLCJyb290IiwibWF4X2tleSIsImJhbGFuY2UkMCIsInJpZ2h0MCIsImRhdGEwIiwibGVmdDAiLCJkYXRhMSIsImtleTEiLCJyaWdodDAkMCIsImRhdGEwJDAiLCJrZXkwJDAiLCJsZWZ0MCQwIiwiZGF0YTEkMCIsImtleTEkMCIsImJhbGFuY2Vfd2l0aF9sb2dzJDAiLCJhZGQkMCIsImRhdGFfbWFwIiwia2V5X21hcCIsImNtcCIsImFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyQwIiwicGFyYW1ldGVyIiwibWFwJDAiLCJhZGRfd2l0aF9sb2dzJDAiLCJleHRyYWN0X21pbl9iaW5kaW5nIiwiZGF0YTIiLCJrZXkyIiwiZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3MiLCJtZXJnZSIsIm1hcDEiLCJtYXAyIiwiZGF0YTMiLCJrZXkzIiwibWVyZ2Vfd2l0aF9sb2dzIiwicmVtb3ZlJDAiLCJyZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UkMCIsIm1hcCQxIiwibWFwJDIiLCJyZW1vdmVfd2l0aF9sb2dzJDAiLCJwb3AiLCJqb2luJDAiLCJ2YWx1ZSQwIiwiam9pbl93aXRoX2xvZ3MkMCIsInNwbGl0JDAiLCJkYXRhMiQwIiwibGVmdDIkMSIsInJpZ2h0MiQxIiwic3BsaXRfd2l0aF9sb2dzJDAiLCJkaWZmJDAiLCJvbGVmdDIiLCJvbGVmdDEiLCJvcmlnaHQyIiwib3JpZ2h0MSIsInVuaW9uJDAiLCJvcF9kYXRhMiIsImQyIiwiZDIkMCIsIm9wX2RhdGExIiwiZDEiLCJkMSQwIiwidW5pb25fd2l0aF9sb2dzJDAiLCJ1cGRhdGUiLCJ1cGRhdGVfd2l0aF9sb2dzIiwiZGlmZl9wcmVkIiwicHJlZCIsIm1pbl9lbHQkMCIsImZpbmRfb3B0aW9uIiwiZmluZF9kZWZhdWx0IiwiZmluZF9vcHRpb25fd2l0aF9sb2dzIiwiZmluZF9kZWZhdWx0X3dpdGhfbG9ncyIsIm1lbSQwIiwiZmlsdGVyX29uZSIsIml0ZXIkMCIsImZvbGQkMCIsInZhbHVlJDEiLCJvdXRwdXRsIiwiaW50ZXJydXB0ZWQiLCJ2YWxfb3B0IiwiZm9sZF93aXRoX2ludGVycnVwdGlvbiIsIm1vbmFkaWNfZm9sZCIsInBhcmFtIiwiZXJyIiwiZXJyJDAiLCJlcnIkMSIsInZhbHVlJDIiLCJlcnIkMiIsIm1vbmFkaWNfZm9sZDIiLCJyZXMiLCJyaCQwIiwibWFwMSQwIiwibWFwMiQwIiwicmVzJDAiLCJyZXMkMSIsInJoJDEiLCJyZXMkMiIsInJoJDIiLCJyZXMkMyIsInJoJDMiLCJyZXMkNCIsInJoJDQiLCJtb25hZGljX2ZvbGQyX3NwYXJzZSIsImlkIiwibW9uYWRpY19pdGVyMl9zcGFyc2UiLCJtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24iLCJtYXBpIiwibWFwX3dpdGhfbG9ncyIsImVycm9ycyIsImVycm9ycyQwIiwiZGF0YSQwIiwiZXJyb3JzJDEiLCJtYXAyX3dpdGhfbG9ncyIsIm1hcDJ6X3dpdGhfbG9ncyIsImZvbGQyX3dpdGhfbG9ncyIsImZvbGQyel93aXRoX2xvZ3MiLCJmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIiwiaXRlcjJfc3BhcnNlX3dpdGhfbG9ncyIsInBhciIsImZvcl9hbGwkMCIsImNvbnNfZW51bSQwIiwiZSQwIiwiZSQxIiwiY29tcGFyZSQwIiwibTEiLCJtMiIsImMkMCIsImVxdWFsJDAiLCJiaW5kaW5nc19hdXgiLCJiaW5kaW5ncyIsImF1eF9wcmludCQwIiwicHIiLCJkYXRhJDEiLCJkYXRhJDIiLCJwcmludCQwIiwiZGlmZl93aXRoX2xvZ3MkMCIsIm8xJDEiLCJvMiQxIiwibzEiLCJvMiIsIm8xJDAiLCJvMiQwIiwiZGlmZl9wcmVkX3dpdGhfbG9ncyIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nXyIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIiwicHJval9tYXAiLCJpZGVudGl0eV9lbHQiLCJrZXlfYSIsImRhdGFfYSIsIm1hcF9iIiwia2V5X2IiLCJwcm9qX21hcF9tb25hZGljIiwiaGFuZGxlciIsIm1vbmFkaWNfbWVyZ2UiLCJoYW5kbGVyJDAiLCJwcm9qX3NldCIsInNldF9hIiwicHJval9zZXRfbW9uYWRpYyIsInNldF9iIiwicGFydGl0aW9uX3NldCIsInBhcnRpdGlvbl9zZXRfbW9uYWRpYyIsInByb2oyIiwia2V5X2MiLCJzdWJtYXAiLCJzdWJtYXAkMCIsInByb2oyX21vbmFkaWMiLCJpbnRfY29tcGFyZSIsImludF9wYWlyX2NvbXBhcmUiLCJzdHJpbmdfcGFpcl9jb21wYXJlIiwicGFpcl9lcXVhbCIsImVxYSIsImVxYiIsInliIiwieWEiLCJ4YiIsInhhIiwicHJpbnQkMSIsInByaW50JDIiLCJwcmludCQzIiwidW5zb21lIiwidW5zb21lX29yX3JhaXNlIiwiZXhjZXAiLCJiaW5kIiwiZXEiLCJnZXRfYW5ub3QiLCJhbm5vdCIsImNvcHlfYW5ub3QiLCJtYXBfYW5ub3QiLCJvZl9wb3MiLCJzdGFydF9sb2NhdGlvbiIsImVuZF9sb2NhdGlvbiIsImR1bW15X3Bvc2l0aW9uIiwiZHVtbXkiLCJhbm5vdF93aXRoX2R1bW15IiwiaXNfZHVtbXkiLCJpc19hbm5vdGVkX3dpdGhfZHVtbXkiLCJwcl9mIiwicHJfbCIsInByaW50X2Fubm90ZWQiLCJyZWFkX3Bvc2l0aW9uIiwiY2hyIiwibGluZSIsIndyaXRlX3Bvc2l0aW9uIiwidG9fY29tcGFjdF95b2pzb24iLCJkZWNscyIsIm9mX2NvbXBhY3RfeW9qc29uIiwiZmlsZW5hbWVzIiwiZmlsZSIsIngkMiIsIm9mX2xpbmUiLCJ4JDMiLCJvZl9jaHIiLCJ4JDQiLCJ0b19jaHIiLCJ4JDUiLCJ0b19saW5lIiwieW9qc29uX29mX2Fubm90ZWQiLCJqcCIsImFubm90ZWRfb2ZfeW9qc29uIiwid3JpdGVfcmFuZ2UiLCJzdHJpbmdfb2ZfcmFuZ2UiLCJyZWFkX3JhbmdlIiwicmFuZ2Vfb2Zfc3RyaW5nIiwiaXNfaW5jbHVkZWRfaW4iLCJyYW5nZSIsInN0cmluZ19hbm5vdGVkX3RvX2pzb24iLCJzdHJpbmdfYW5ub3RlZF9vZl9qc29uIiwic3RyaW5nX29wdGlvbl9hbm5vdGVkX3RvX2pzb24iLCJzdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiIsImxpc3RpIiwiZWwiLCJoYXNodGJsIiwidGJsIiwiYm90dG9tIiwibnUiLCJlbXB0eV9zZXQiLCJjb21tYSIsImRvdCIsImNvbXBhY3RfY29tbWEiLCJjb2xvbiIsInNwYWNlIiwiY3V0IiwidW5pdCIsInBhaXIiLCJwcGEiLCJwcGIiLCJvcHRpb24iLCJ3aXRoX3NwYWNlIiwicGxhaW5fYXJyYXkiLCJsaXN0X3RvX3N0cmluZyIsInNldF90b19zdHJpbmciLCJhY2N2YWwiLCJyJDAiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJhY2NfbHJyIiwiYWNjX2wkMSIsImFjY19yJDEiLCJhY2NfciQwIiwicnIiLCJydiIsInJsIiwiYWNjX2wkMCIsInJsciIsInJsdiIsInJsbCIsImFjY19ybGwiLCJ3ZWlnaHQiLCJ3ZWlnaHQkMCIsInJlbW92ZV9taW5fYmluZGluZyIsInQyIiwidDEiLCJzdGF0ZSIsImFpbV9hY2MkMSIsIndyaXRlX3NldmVyaXR5Iiwid3JpdGVfc3RhdHVzIiwid3JpdGVfbWVzc2FnZSIsInRleHQiLCJzZXZlcml0eSIsInJlYWRfbWVzc2FnZSIsInByaW50X21lc3NhZ2UiLCJyYW5nZSQwIiwid3JpdGVfdCIsIndyaXRlX29rIiwid3JpdGVfZXJyb3IiLCJzdGF0dXMiLCJzdGF0dXMkMCIsInN0cmluZ19vZl90IiwicmVhZF90X2NvbnRlbnQiLCJyZWFkX3QiLCJyZWFkX29rIiwicmVhZF9lcnJvciIsImF1eF9yZWFkX3QiLCJjbG9zaW5nIiwicG9zIiwidiQwIiwidF9vZl9zdHJpbmciLCJsaWZ0Iiwib2tfc3RhdHVzIiwiZXJyb3Jfc3RhdHVzIiwib2siLCJvdmVyd3JpdGVfc3RhdHVzIiwic3BlY2lhbF92YWwiLCJpZGVudGl0eSIsIm1heCIsImltbWVkaWF0ZSIsImlzX2lkZW50aXR5IiwiY29tcHV0ZSIsInYkMSIsImZvcmNlIiwiaW1hZ2UiLCJkZWJ1Z19tb2RlIiwibm90X29rIiwidW5zYWZlX2ltcGVyYXRpdmVfYWRkIiwiaW1wZXJhdGl2ZV9hZGQiLCJvcmlnaW4iLCJjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0Iiwic3RvcF9hdCIsInByZSQxIiwic3Vic3QiLCJwcmUiLCJwcmUkMCIsImFwcGx5IiwiY29tcG9zZSIsImV4dGVuc2libGUiLCJpbnZlcnNlIiwic3JjIiwiZHN0IiwicHJpbnRfZnVsbCIsInRvX3lvanNvbiIsIm9mX3lvanNvbiIsIm1hc2siLCJ1bm1hc2siLCJpc19pbmZpbml0ZSIsImZpbmQiLCJjb3B5X3ZlY3RfaW4iLCJjb3B5X2luIiwiZGVjbGFyZV91bmJhbGFuY2VkIiwidXBkYXRlX3N0cnVjdHVyZSIsIm5fbGF5ZXIiLCJ1cGRhdGVfc3RydWN0dXJlX2F1eCIsImZhdGhlciIsInRfbm9kZSIsInRfc3VidHJlZSIsImxheWVyIiwiY3VycmVudF9sYXllciIsImxheWVyX2VuZCIsInVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyIiwidW5iYWxhbmNlZF9ldmVudHMiLCJsYXllcl9lbmQkMCIsImN1cnJlbnRfbGF5ZXIkMCIsInckMCIsInRvdGFsIiwicmVwIiwiciQxIiwibHNvbiIsInJzb24iLCJyJDIiLCJkZWJ1Z19wcmludCIsImludiIsImluZiIsImdyYXBoX3BhZ2UiLCJ0aXRsZSIsInN1YnRpdGxlIiwiZGVwcyIsImhlYWRlciIsImNvcmUiLCJkZXBlbmRlbmN5IiwiYmluX2FsZ19vcF90b19zdHJpbmciLCJiaW5fYWxnX29wX2lzX3ByZWZpeCIsInByaW50X2Jpbl9hbGdfb3AiLCJmeCIsImZ5Iiwib3AiLCJiaW5fYWxnX29wX3RvX2pzb24iLCJiaW5fYWxnX29wX29mX2pzb24iLCJ1bl9hbGdfb3BfdG9fc3RyaW5nIiwicHJpbnRfdW5fYWxnX29wIiwidW5fYWxnX29wX3RvX2pzb24iLCJ1bl9hbGdfb3Bfb2ZfanNvbiIsInN0YXRlX2FsZ19vcF90b19zdHJpbmciLCJwcmludF9zdGF0ZV9hbGdfb3AiLCJzdGF0ZV9hbGdfb3BfdG9fanNvbiIsInN0YXRlX2FsZ19vcF9vZl9qc29uIiwiYmluX2Jvb2xfb3BfdG9fc3RyaW5nIiwicHJpbnRfYmluX2Jvb2xfb3AiLCJiaW5fYm9vbF9vcF90b19qc29uIiwiYmluX2Jvb2xfb3Bfb2ZfanNvbiIsInVuX2Jvb2xfb3BfdG9fc3RyaW5nIiwicHJpbnRfdW5fYm9vbF9vcCIsInVuX2Jvb2xfb3BfdG9fanNvbiIsInVuX2Jvb2xfb3Bfb2ZfanNvbiIsImNvbXBhcmVfb3BfdG9fc3RyaW5nIiwicHJpbnRfY29tcGFyZV9vcCIsImNvbXBhcmVfb3BfdG9fanNvbiIsImNvbXBhcmVfb3Bfb2ZfanNvbiIsInByaW50X3Jldl9kZXAiLCJpZCQwIiwiaWQkMSIsInJldl9kZXBfdG9feW9qc29uIiwicmV2X2RlcF9vZl95b2pzb24iLCJkZXBzZXRfdG9feW9qc29uIiwiZGVwc2V0X29mX3lvanNvbiIsInplcm8iLCJvbmUiLCJjYXN0X2Jpbl9vcCIsIm9wX2YiLCJvcF9pIiwib3BfaTY0IiwieSQxIiwieSQyIiwieSQzIiwieSQ0Iiwib3BfaSQwIiwieSQ1Iiwib3BfaTY0JDAiLCJ5JDYiLCJ5JDciLCJvcF9pNjQkMSIsInkkOCIsIm9wX2k2NCQyIiwiY2FzdF91bl9vcCIsIm9wX2YkMCIsIm9wX2kkMSIsIm9wX2YkMSIsIm9wX2YkMiIsIm4xIiwibjIiLCJpc19ncmVhdGVyIiwiaXNfc21hbGxlciIsImlzX2VxdWFsIiwibXVsdCIsInJlbSIsImludGVybmFsX2RpdiIsInN1Y2MiLCJuZWciLCJ0b19mbG9hdCIsImlzX3plcm8iLCJpc19zdHJpY3RseV9wb3NpdGl2ZSIsInBvc19wb3ciLCJwcmV0dHlfcHJpbnQiLCJwcmludF9vcHRpb24iLCJtYXliZV9pdGVyaSIsIm9mX2Jpbl9hbGdfb3AiLCJvZl91bl9hbGdfb3AiLCJvZl9jb21wYXJlX29wIiwid2FybmluZ19idWZmZXIiLCJmb3JiaWRkZW4iLCJiYWQiLCJjcmVhdGVfZnJvbV9saXN0IiwiY3JlYXRlX25vX2xvYyIsIm5kIiwiZWx0X25hbWUiLCJlbHRfaWQiLCJraW5kIiwic2VwIiwicHAiLCJlbHRfdmFsIiwicmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VyIiwibGlzdCQwIiwiYnVmZmVyIiwibGlzdCQxIiwibGlzdCQyIiwiYnVmZmVyJDAiLCJsYXN0IiwicG9wX2xhc3QiLCJjb25zX29wdGlvbiIsInNtYXJ0X2ZpbHRlciIsInNtYXJ0X21hcCIsInJldl9tYXBpIiwibWFwX29wdGlvbiIsImV4aXN0c191bmlxIiwibWVyZ2VfdW5pcSIsInQyJDAiLCJoMiQwIiwidDEkMCIsImgxJDAiLCJyZXZfbWFwX2FwcGVuZCIsImFjYyQxIiwibWFwX2ZsYXR0ZW4iLCJyZW1vdmVfY29uc2VjdXRpdmVfZG91YmxlIiwicSQxIiwibGFzdCQxIiwibGFzdCQwIiwiZm9sZF9yaWdodF9tYXAiLCJmb2xkX2xlZnQyIiwiY2xlYW4iLCJpbnRfb2ZfaGFzaGVkX2xpc3QiLCJmc3RfZWx0X2lkIiwiZnN0X2xpc3RfaWQiLCJjb25zIiwiY2FjaGUkMCIsImhlYWQiLCJoYXNoX2hlYWQiLCJjYWNoZSQxIiwic3VidGFiIiwic3VidGFiJDAiLCJzdWJ0YWIkMSIsImhhc2gkMCIsImhhc2giLCJjYWNoZSIsImZvcm1hdHRlciIsInByaW50X2NhY2hlIiwib3B0JDAiLCJzaW1wbGlmeSIsImdjZCIsImRpdiIsImJfaW52IiwicHVzaCIsImNyY190YWJsZSIsInN0cmluZyIsInN0ciIsImNyYyIsInRyaXBsZV9vZl9jb2xvciIsImNyZWF0ZV9pbmZpbml0ZSIsInQkMiIsInQkNCIsInQkMyIsIm92ZXJ3cml0dGVuX3ZhbHVlIiwib3ZlcndyaXR0ZW5fdmFsdWUkMCIsImNvbnRlbnRzIiwibnRoIiwib2ZzIiwiY2xlYXIiLCJyZXNldCIsInJlc2l6ZSIsIm1vcmUiLCJuZXdfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJkZWZhdWx0X2FscGhhYmV0IiwidXJpX3NhZmVfYWxwaGFiZXQiLCJwYWRkaW5nIiwib2ZfY2hhciIsImFscGhhYmV0IiwidG9fY2hhciIsImRlY29kZSIsImlucHV0IiwiaW5wdXQkMCIsImxlbmd0aCQwIiwid29yZHMiLCJwYWRkaW5nJDAiLCJ6IiwiZW5jb2RlIiwicGFkIiwicGFkZGluZ19sZW4iLCJwcmludCIsImNvbXBhcmUiLCJ5IiwieCIsInkkMCIsIngkMCIsImMiLCJwcmludF9hZ2VudCIsIndpdGhfaWQiLCJ3aXRoX2xpbmsiLCJub2RlIiwiZiIsImFnIiwiaWQiLCJzaSIsImkiLCJwJDAiLCJwYWNrIiwicCIsImZyZWVfaWQiLCJkYW5nbGluZyIsInR5IiwibCIsIm15c2VsZiIsInZhIiwidmEkMCIsInByaW50X2NjIiwibWl4IiwibGluayIsImFsIiwiYXIiLCJzdG9yZSIsInByaW50X2RvdF9jYyIsIm5iX2NjIiwiaWwiLCJpciIsInYiLCJzIiwibGlua3MiLCJzJDAiLCJhciQwIiwiYWwkMCIsIndyaXRlX3NpdGUiLCJvYiIsIndyaXRlX2NjX3NpdGUiLCJsaW5rc19vZl95b2pzb24iLCJiIiwiZXJyb3JfbXNnIiwicmVhZF9jY19zaXRlIiwibGIiLCJrZXkkMCIsIm4iLCJrZXkiLCJwb3J0X3N0YXRlcyIsInBvcnRfbGlua3MiLCJvdXQiLCJzaXRlX3R5cGUiLCJzaXRlX25hbWUiLCJ3cml0ZV9jY19ub2RlIiwibm9kZV9pZCIsInJlYWRfY2Nfbm9kZSIsIm5vZGVfc2l0ZXMiLCJub2RlX3R5cGUiLCJ3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IiwicmVhZF9jb25uZWN0ZWRfY29tcG9uZW50Iiwic3RyaW5nX29mX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJvcHQiLCJzdGgiLCJsZW4iLCJjb25uZWN0ZWRfY29tcG9uZW50X29mX3N0cmluZyIsImludmVydGVkX2NvdW50ZXJfc3VmZml4IiwiZm9sZCIsIm8iLCJudW1fb2Zfc2l0ZSIsImFnZW50X25hbWUiLCJzaWduYXR1cmUiLCJhZ2VudF9uYW1lJDAiLCJraW5kIiwic2l0ZV9vZl9udW0iLCJhZGRyIiwibnVtX29mX2ludGVybmFsX3N0YXRlIiwic2l0ZV9pZCIsInN0YXRlIiwic2l0ZV9zaWciLCJpbnRlcm5hbF9zdGF0ZV9vZl9zaXRlX2lkIiwidmFsX2lkIiwiY291bnRlcl9vZl9zaXRlX2lkIiwiaGFzX2NvdW50ZXIiLCJwX2lkIiwib2siLCJvayQwIiwiYSIsImFjYyIsIm9uZV90b19qc29uIiwiYzFfb3B0IiwiYzJfb3B0IiwiYzMiLCJvbmVfb2ZfanNvbiIsInNpemUiLCJzaWdzIiwiZ2V0IiwiYWdlbnRfaWQiLCJhcml0eSIsIm1heF9hcml0eSIsImFnZW50X29mX251bSIsIm51bV9vZl9hZ2VudCIsIm5hbWUiLCJpZF9vZl9zaXRlIiwiYWdlbnRfdHkiLCJzaXRlX29mX2lkIiwiaWRfb2ZfaW50ZXJuYWxfc3RhdGUiLCJpbnRlcm5hbF9zdGF0ZV9vZl9pZCIsImlkX3NpdGUiLCJpZF9zdGF0ZSIsImludGVybmFsX3N0YXRlc19udW1iZXIiLCJkZWZhdWx0X2ludGVybmFsX3N0YXRlIiwiYWxsb3dlZF9saW5rIiwiYWcxIiwiczEiLCJhZzIiLCJzMiIsImFnMSQwIiwiczEkMCIsImFnMiQwIiwiczIkMCIsImNyZWF0ZSIsImNvdW50ZXJzX3Blcl9hZ2VudCIsImFnZW50X3NpZ3MiLCJpc19jb3VudGVyX2FnZW50IiwiYWdlbnRfaW5mbyIsInBvcnRzX2lmX2NvdW50ZXJfYWdlbnQiLCJzaXRlX2lzX2NvdW50ZXIiLCJhZ190eSIsImdldF9jb3VudGVyX2FnZW50X2luZm8iLCJjb3VudGVyX2FnZW50X2luZm8iLCJpc19pbnZlcnRlZF9jb3VudGVyIiwiY291bnRlcl9uYW1lIiwicHJpbnRfc2l0ZSIsInByaW50X2ludGVybmFsX3N0YXRlIiwic2l0ZSIsInByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUiLCJwcmludF9jb3VudGVyX2luZm8iLCJpX29wdCIsImpfb3B0IiwiaiIsImkkMCIsImkkMSIsInByaW50X2NvdW50ZXIiLCJwcF9pbnQiLCJuYSIsInRvX2pzb24iLCJvZl9qc29uIiwiYWdlbnRfc2lnbmF0dXJlIiwicG9ydHMiLCJlbXB0eSIsImluY3JlbWVudF9pbl9zbmFwc2hvdCIsInJhdyIsImNidF9hIiwiY2xhc3NpZnkiLCJhZ3MiLCJuYiIsImhzIiwiYXV4X2luY3JlbWVudCIsInQiLCJoIiwiY2J0X3kiLCJoMSIsImJvb2wiLCJkb24iLCJxIiwiYiQwIiwiaV9vayIsImRvbiQxIiwidG9kbyIsImEkMCIsImFncyQwIiwiY291bnRlcl92YWx1ZSIsImNjIiwiY291bnQiLCJzaWQiLCJuaWQiLCJjY190b191c2VyX2NjIiwiZGVidWdfbW9kZSIsImtlZXBfaW52ZXJ0ZWRfY291bnRlcnMiLCJyIiwicG9zIiwiaW5kZXhlcyIsImluZGV4ZXMkMCIsImNjX2xpc3Rfd2l0aG91dF9jb3VudGVycyIsImNjX3dpdGhvdXRfY291bnRlcnMiLCJkbl9pZCIsImRuX2lkJDAiLCJub2RlX3NpdGVzX2FsbCIsImV4cG9ydCQwIiwianNvbl9kaWN0aW9ubmFyeSIsIm1ha2UiLCJzb3J0Iiwic2lncyQwIiwiYWdlbnQiLCJwcmludF9pbnRlcm5hbCIsInByaW50X3Jhd19pbnRlcm5hbCIsInJlbmFtZSIsImluaiIsIm5fdHkiLCJuX2lkIiwiaWQyIiwiaWQxIiwid3JpdGVfanNvbiIsInJlYWRfanNvbiIsInByaW50JDAiLCJsb29waW5nIiwiaW50X2wiLCJtYXJrIiwib2xkIiwidGVzdCIsInJlc2V0IiwiaXRlcmlfcmVzZXQiLCJrIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImNvcHkiLCJncmFwaCIsInRhYmxlcyIsImNjcyIsInN0YXRzIiwiZnJlZV9pZHMiLCJ0b3BfaWQiLCJhZGRfYWdlbnQiLCJhaSIsImlkJDAiLCJuZXdfaWQiLCJuZXdfaWQkMCIsInQkMCIsImgkMCIsImZyZWVfaWQkMCIsIm1pc3NpbmdzIiwiYWRkX2ZyZWUiLCJhZGRfaW50ZXJuYWwiLCJhZGRfbGluayIsIm5vZGUyIiwidHkkMCIsIm5vZGUxIiwiY2FjaGUiLCJjY19pZF9vcCIsIm5leHQkMSIsInRvZG9zIiwic2l0ZSQzIiwibmV4dCIsIm5leHQkMCIsInNpdGUkMSIsInNpdGUkMCIsInNpdGUkMiIsInJlbW92ZV9hZ2VudCIsImlkcyIsImFnJDAiLCJyZW1vdmVfZnJlZSIsImdldF9pbnRlcm5hbCIsImdldF9zaXRlcyIsImFyciIsImdldF9zb3J0IiwicmVtb3ZlX2ludGVybmFsIiwicmVtb3ZlX2xpbmsiLCJvdGhlcl9vcmlnJDEiLCJ0aGlzX29yaWciLCJ0aGlzX2NhY2hlIiwib3RoZXJfY2FjaGUiLCJvbGRfY2NfaWQiLCJpbnNwZWN0X3NpdGUiLCJkc3RfY2FjaGUiLCJkYyIsIm90aGVyX29yaWckMCIsIm90aGVyX2NhY2hlJDEiLCJvdGhlcl9uZXh0JDAiLCJvdGhlcl9vcmlnIiwib3RoZXJfY2FjaGUkMCIsIm90aGVyX25leHQiLCJ0b2RvcyQwIiwidGhpc19uZXh0IiwiaXNfYWdlbnQiLCJpc19hZ2VudF9pZCIsImlzX2ZyZWUiLCJpc19pbnRlcm5hbCIsImxpbmtfZXhpc3RzIiwicyQxIiwiYWckMSIsImV4aXN0c19mcmVzaCIsImxpbmtfZGVzdGluYXRpb24iLCJpdGVyX25laWdoYm9ycyIsImFnX3RhYmxlIiwiYWxsX2FnZW50c193aGVyZSIsImluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCIsImdldF9jb25uZWN0ZWRfY29tcG9uZW50Iiwib25lX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJrbm93biIsIm5vZGUkMCIsImtub3duJDAiLCJrbm93biQxIiwidG9kb3MkMSIsInNpdGVzIiwibm9kZV9pZF9pbl93aXRuZXNzIiwic2l0ZV9zdGF0ZSIsInNwZWNpZXMiLCJyb290Iiwic3BlY2llIiwiYnVpbGRfc25hcHNob3QiLCJjY3MkMSIsIm5vZGUkMSIsImNjcyQwIiwibm9kZSQyIiwiYnVpbGRfdXNlcl9zbmFwc2hvdCIsImRlYnVnX3ByaW50IiwicHJpbnRfc2l0ZXMiLCJpbnQkMCIsInByaW50X3BhdGgiLCJlbXB0eV9wYXRoIiwic2luZ2xldG9uX3BhdGgiLCJuJDAiLCJyZXZfcGF0aCIsImlzX3ZhbGlkX3BhdGgiLCJhcmVfY29ubmVjdGVkIiwibWF4X2Rpc3RhbmNlIiwibm9kZXNfeCIsIm5vZGVzX3kiLCJwcmVwYXJlIiwiZGVwdGgiLCJvdXQkMSIsImlkJDEiLCJhY2MkMSIsInNpdGUkNCIsInBhdGgiLCJwYXRoJDAiLCJvdXQkMCIsImFjYyQwIiwibmV4dCQyIiwib3V0JDIiLCJzdG9wIiwiZCIsInByaW50X2lkIiwicHJpbnRfaWRfc2l0ZSIsInNvdXJjZSIsImZpbmRfdHkiLCJ0eSQxIiwicG9ydF90b195b2pzb24iLCJwb3J0X29mX3lvanNvbiIsInN0ZXBfdG9feW9qc29uIiwic3RlcF9vZl95b2pzb24iLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJleHRlbmQiLCJwb3J0IiwidCQxIiwiY29tcGF0aWJsZV9mcmVzaF9wb2ludCIsImUiLCJzc2l0ZSIsImFycm93Iiwic3R5IiwiaW5qJDAiLCJpbmokMyIsInNzaXRlJDEiLCJzdHkkMSIsInNpZCQxIiwiaWQkMiIsImluaiQxIiwiaW5qJDIiLCJzc2l0ZSQwIiwic3R5JDAiLCJzaWQkMCIsImNvbXBhdGlibGVfcG9pbnQiLCJlJDAiLCJpZCQzIiwidHkkMiIsImlkJDQiLCJzaXRlJDUiLCJ0eSQzIiwiaWQkNSIsInNzaXRlJDIiLCJzaWQkMiIsImluaiQ0Iiwic2l0ZSQ2IiwidHkkNCIsImlkJDYiLCJpc19zdWJuYXZpZ2F0aW9uIiwibmF2JDAiLCJnb2FsIiwibmF2JDEiLCJyZW5hbWVfaWQiLCJpbmoyY2MiLCJpbWciLCJ4JDEiLCJ0JDIiLCJjaGVja19lZGdlIiwiZHN0X2lzX29rYXkiLCJpbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UiLCJkc3QiLCJkc3QkMCIsInJ0eSIsInJ0eSQwIiwicm9vdCQwIiwiaW1wZXJhdGl2ZV9kc3RfaXNfb2theSIsImltcGVyYXRpdmVfZWRnZV9pc192YWxpZCIsImNvbmNyZXRpemVfcG9ydCIsImNvbmNyZXRpemUiLCJuYXYiLCJzdGVwIiwic3QiLCJmcm9tX29yaWdpbmFsX2FzdF95b2pzb25fc3RyIiwiZnJvbV9jbHRlX2VsaW1pbmF0aW9uX3lvanNvbl9zIiwiZnJvbV9zaWdfbmFtZV9zdHIiLCJjb252ZXJ0X3ZhbHVlX3N0ciIsImNvbnZlcnRfZGVsdGFfc3RyIiwiY291bnRlcl9zaWdfbmFtZV9zdHIiLCJjb3VudGVyX3NpZ19taW5fc3RyIiwiY291bnRlcl9zaWdfbWF4X3N0ciIsImNvdW50ZXJfc2lnX3Zpc2libGVfc3RyIiwiY291bnRlcl9zaWdfZGVmYXVsdF9zdHIiLCJhcHBseV9pbnQiLCJhcHBseV9vcmlnaW5fdG9fdmFsdWUiLCJhcHBseV9vcmlnaW5fdG9fZGVsdGEiLCJyZW9yZGVyX2JvdW5kcyIsInByaW50X2JvdW5kIiwid2hlcmUiLCJzaWduIiwicHJpbnRfbG93ZXJfYm91bmQiLCJwcmludF91cHBlcl9ib3VuZCIsInByaW50X2dlbiIsIm9yaWdpbmFsX25hbWUiLCJjb252ZXJ0IiwicHJpbnRfc2lnX3Zpc2libGUiLCJwcmludF9jb3VudGVyX3NpZyIsImNvdW50ZXJzX2luZm8iLCJwcmludF9rYXBwYSIsIm5vQ291bnRlcnMiLCJpbnRmIiwiY291bnRlcl9zaWdfb3B0IiwiY291bnRlcl9zaWciLCJpbnRfb3B0X2Fubm90ZWRfb3B0X3RvX3lvanNvbiIsImZpbGVuYW1lcyIsImludF9vcHRfYW5ub3RlZF9vcHRfb2ZfeW9qc29uIiwidHJhbnNsYXRlX2ludF90b195b2pzb24iLCJ0cmFuc2xhdGVfaW50X29mX3lvanNvbiIsInRyYW5zbGF0ZV9pbnRfanNvbiIsIm9yaWdpbiIsImNvbnZlcnNpb25faW5mbyIsImpzb24iLCJsJDAiLCJjb3VudGVyX3NpZ19uYW1lIiwiY291bnRlcl9zaWdfbWluIiwiY291bnRlcl9zaWdfbWF4Iiwib3JpZ2luX2pzb24iLCJjb252ZXJzaW9uX2luZm9fanNvbiIsImNvdW50ZXJfc2lnX3Zpc2libGUiLCJmcm9tX3NpZ19uYW1lIiwiY29udmVydF92YWx1ZSIsImNvbnZlcnRfZGVsdGEiLCJjb3VudGVyX3NpZ19kZWZhdWx0IiwicmFpc2VfZXJyb3IiLCJleGNlcHQkMCIsImV4Y2VwdCIsImV4Y2VwdCQxIiwiZ2V0X2NvdW50ZXJfc2lnIiwiZXJyb3IiLCJnZXRfY29udmVyc2lvbl9pbmZvIiwiY291bnRlcl9jb252ZXJzaW9uIiwiY29weV9hZ2VudCIsImFnZW50IiwiY3JlYXRlIiwibiIsImkiLCJmaW5kX2F1eCIsImEiLCJhaSIsInJvb3QiLCJmaW5kIiwiaCIsIngiLCJjb21iaW5lX3JhbmtzIiwiYnkiLCJpeSIsImJ4IiwiaXgiLCJieSQwIiwidW5pb24iLCJ5Iiwicm9vdF94Iiwicm9vdF95IiwicmFua194IiwicmFua195IiwidW5pb25fZmluZF9jb3VudGVycyIsInNpZ3MiLCJtaXgiLCJ0Iiwic2lncyQwIiwiYWciLCJhZnRlciIsImJlZm9yZSIsImIiLCJsbmtfYiIsImxua19hIiwicyIsInByaW50Iiwibm9Db3VudGVycyIsImNyZWF0ZWQiLCJpbml0aWFsX2NvbW1hIiwiY291bnRlcnNfaW5mbyIsImYiLCJjb3VudGVyX2FnZW50cyIsInNvbWUiLCJhZ190eSIsImFnX3R5JDAiLCJpbnRzIiwicG9ydHMiLCJlbXB0eSIsIm1pbl92YWx1ZSIsImNvdW50ZXJzX2luZm8kMCIsImNvdW50ZXJfc2lnIiwiaSQxIiwibWluX3ZhbHVlJDAiLCJpc19jb3VudGVyIiwiY291bnRlciIsIm0iLCJpJDIiLCJpJDAiLCJhZ2VudF90b19qc29uIiwiYWNjIiwiYWdlbnRfb2ZfanNvbiIsInAiLCJ0b19qc29uIiwib2ZfanNvbiIsImwiLCJlX3RvX3lvanNvbiIsImZpbGVuYW1lcyIsImZfbWl4IiwiZl9pZCIsIm9wIiwiYSQwIiwib3AkMCIsIm9wJDEiLCJjYyIsIm5vIiwieWVzIiwiY29uZCIsImJvb2xfdG9feW9qc29uIiwidG9rZW4iLCJleHByIiwibWl4dHVyZSIsImV4cHIkMCIsImIkMCIsImEkMSIsImVfb2ZfeW9qc29uIiwiYm9vbF9vZl95b2pzb24iLCJ0b2siLCJwcl9taXgiLCJwcl90b2siLCJwcl92YXIiLCJsYWIiLCJhc3QiLCJ0ayIsInByaW50X2Jvb2wiLCJjb25zdCQwIiwiaW50JDAiLCJmbG9hdCQwIiwiYWRkIiwiZTEiLCJlMiIsIm1pbnVzIiwibXVsdCIsImRpdiIsInBvdyIsImxvZyIsImxuIiwic2luIiwiY29zIiwidW1pbnVzIiwic3FydCIsImFkZF9kZXAiLCJkIiwieCQwIiwib3V0IiwidG9rc19kIiwiaW5fZSIsImluX3QiLCJqIiwiYWRkX2RlcF9ib29sIiwiaGFzX21peCQwIiwidmFyX2RlY2xzIiwiaGFzX21peCIsImJvb2xfaGFzX21peCQwIiwiYm9vbF9oYXNfbWl4IiwiaXNfY29uc3RhbnQiLCJjIiwiYm9vbF9pc19jb25zdGFudCIsImlzX3RpbWVfaG9tb2dlbmVvdXMiLCJib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMiLCJhdXhfZXh0cmFjdF9jYyIsImFjYyQwIiwiZXh0cmFjdF9jY19ib29sIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYiIsInNldHVwX2FsZ192YXJzX3Jldl9kZXAiLCJ0b2tzIiwidmFycyIsInByb3BhZ2F0ZV9jb25zdGFudCIsIndhcm5pbmciLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJ1cGRhdGVkX3ZhcnMiLCJwb3MiLCJjMSIsImMyIiwicG9zJDAiLCJhJDIiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsImNvbmQkMCIsInByb3BhZ2F0ZV9jb25zdGFudF9ib29sIiwicG9zJDUiLCJ0JDAiLCJhJDMiLCJhJDQiLCJwb3MkNiIsImEkNSIsImEkNiIsImIkMSIsImIkMiIsIm4xIiwibjIiLCJoYXNfcHJvZ3Jlc3NfZGVwIiwib25seV90aW1lIiwidmFyc19kZXBzIiwiZGVwcyIsImF1eCIsImsiLCJib29sX2hhc19wcm9ncmVzc19kZXAiLCJpc19lcXVhbGl0eV90ZXN0X3RpbWUiLCJtYXBfb25fbWl4dHVyZSIsIm8iLCJwJDAiLCJ4JDEiLCJvJDAiLCJwJDEiLCJwJDIiLCJ5JDAiLCJ4JDIiLCJtYXBfYm9vbF9vbl9taXh0dXJlIiwicCQzIiwibyQxIiwiZm9sZF9vbl9taXh0dXJlJDAiLCJmb2xkX29uX21peHR1cmUiLCJ2IiwidSIsImZvbGRfYm9vbF9vbl9taXh0dXJlJDAiLCJmb2xkX2Jvb2xfb25fbWl4dHVyZSIsImVxdWFsIiwiYTIiLCJhMSIsIm9wYSIsImIyIiwiYjEiLCJvcGIiLCJhMSQwIiwib3BhJDAiLCJiMSQwIiwib3BiJDAiLCJvcGEkMSIsIm9wYiQxIiwiaWQxIiwiaWQyIiwibWl4MSIsIm1peDIiLCJpZDEkMCIsImlkMiQwIiwiYTIkMCIsImExJDEiLCJjb25kYSIsImIyJDAiLCJiMSQxIiwiY29uZGIiLCJlcXVhbF9ib29sIiwidG9feW9qc29uIiwib2ZfeW9qc29uIiwiYXJyYXlfb2ZfanNvbiIsImxzIiwiYXJyYXkxIiwiYXJyYXkyIiwicHJpbnRfa2FwcGEiLCJpbnRmIiwiaXMiLCJzZCIsImFkIiwicHJpbnRfY3ljbGVzIiwiZm9ybSIsImNvbnRhY3RfbWFwIiwiZGZzIiwicGF0aCIsImxhc3RfcyIsImtub3duIiwia25vd24kMCIsInMkMCIsInR5IiwiYWNjJDEiLCJhZyQwIiwid3JpdGVfc2hhcmluZ19sZXZlbCIsIm9iIiwic3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwiLCJvcHQiLCJyZWFkX3NoYXJpbmdfbGV2ZWwiLCJsYiIsInNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIiwiZGVidWdfcHJpbnRfaWQiLCJmbXQiLCJpZCIsInNpemVfb2ZfY2MiLCJjb21wYXJlX2Nhbm9uaWNhbHMiLCJjYyQwIiwiaXNfZXF1YWxfY2Fub25pY2FscyIsImNvYXJzZV9oYXNoIiwicGx1c19pbnRlcm5hbCIsImUiLCJuJDAiLCJleHRyYSIsIm5vZGVfc2hhcGUiLCJpZF90b195b2pzb24iLCJpZF9vZl95b2pzb24iLCJkdW1teSIsImVtcHR5X2NjIiwibmJ0IiwicmF3X2ZpbmRfdHkiLCJ0eXMiLCJmaW5kX3R5IiwiYWRkX29yaWdpbiIsInJlY29uc3RydWN0aW9uX25hdmlnYXRpb24iLCJhbHJlYWR5X3NwZWNpZmllZCIsInJhd19maW5kX3Jvb3QiLCJub2Rlc19ieV90eXBlIiwidHkkMCIsImZpbmRfcm9vdCIsIndlaWdodCIsImwkMCIsImQkMCIsImwkMSIsImRvdWJsZSQwIiwibGlua3MiLCJhcmVfY29tcGF0aWJsZSIsImRlYnVnX21vZGUiLCJwb3NzaWJpbGl0aWVzIiwic3RyaWN0Iiwicm9vdDEiLCJjYzEiLCJyb290MiIsImNjMiIsInJlbmFtZSQxIiwiYXRfbGVhc3Rfb25lX2VkZ2UkMSIsImF0X2xlYXN0X29uZV9lZGdlIiwicmVuYW1lIiwidG9kb3MiLCJwYWlyIiwibHkiLCJseCIsInJlbiIsInRvZG8iLCJvbmVfZWRnZSIsIm9uZV9lZGdlJDEiLCJzMSIsInMyIiwiciIsIm9uZV9lZGdlJDAiLCJjb25mbGljdCIsInJlbmFtZSQwIiwidG9kb3MkMCIsImF0X2xlYXN0X29uZV9lZGdlJDAiLCJhZ3MiLCJoMSIsImJvb2wiLCJhZ3MkMCIsImF1dG9tb3JwaGlzbXMiLCJwb3RlbnRpYWxfcGFpcmluZyIsImxhIiwibWF0Y2hpbmdzIiwicmF3X3RvX25hdmlnYXRpb24iLCJmdWxsIiwibm9kZXMiLCJkb24iLCJmaXJzdCIsImRvbiQxIiwiaCQwIiwicmUiLCJhbnMiLCJhbnMkMCIsImZpcnN0JDAiLCJvdXQkMCIsImluZnMiLCJjYW5kX25vZGVzIiwibG5rMSIsImxuazEkMCIsIml5JDAiLCJpeSQ2IiwiaXkkMiIsIml5JDUiLCJpeSQzIiwiaXkkNCIsIml5JDEiLCJvdXRsIiwiY2FuZF9ub2RlcyQwIiwibm9kZXNfYnlfdHlwZSQwIiwicmVmX25idCIsInJlZl9uYnQkMCIsInIkMiIsImlkcyIsInEiLCJxJDAiLCJyJDAiLCJsc3QiLCJmc3RzIiwiciQxIiwicmUkMCIsInJlX2ltZyIsInJlX2ltZyQwIiwicmUkMSIsInNpdGVzIiwic2l0ZXMkMCIsImNvdW50ZXJfdmFsdWUiLCJzaWQkMCIsIm5pZCQwIiwiY291bnQiLCJzaWQiLCJuaWQiLCJvdGhlciIsImVsIiwiZGkiLCJkbiIsImNvdW50JDAiLCJjb3VudGVyX3ZhbHVlX2NjIiwiZXh0cmVtaXR5IiwiZG90Y29tbWEiLCJkb3RuZXQiLCJwcmludF9jYyIsImNjX2lkIiwid2l0aF9pZCIsInN0aCIsInN0aCQwIiwiZnVsbF9zcGVjaWVzIiwiY2NfaWQkMCIsIm5laWdoIiwibGlua19pZHMiLCJub3RfZW1wdHkiLCJhZ194IiwiYWdfdCIsImFnX2kiLCJzdCIsImZyZWUiLCJkc3RfcCIsImRzdF9hIiwiZHN0X3R5Iiwib3V0JDEiLCJzaWdzJDEiLCJraW5kIiwicHJpbnRfY2NfYXNfaWQiLCJub3RfZW1wdHkkMCIsIm1lcmdlX2NvbXBhdGlibGUiLCJyZXNlcnZlZF9pZHMiLCJmcmVlX2lkIiwiaW5qMV90b18yIiwiaW1nIiwiYXZhaWxhYmxlX2lkcyIsInVzZWRfaWRzIiwiYXZhaWxhYmxlX2luX2NjMSIsImZyZWVfaWRfZm9yX2NjMSIsImdldF9jYzIiLCJwYWNrIiwidG9kb3MyIiwidG9kb3MxIiwiaW5qMiIsImluajEiLCJmcmVlX2lkJDAiLCJmcmVlX2lkJDEiLCJnZXRfY2MxIiwibm9kZXNpIiwibm9kZXNvIiwibm9kZXNqIiwibm9kZXNvJDAiLCJub2Rlc2okMCIsInN0aSQxIiwibiQxIiwic3RqJDMiLCJzdG8kMCIsIm4kMiIsInN0aiIsInN0aSIsInN0aiQyIiwic3RvIiwic3RqJDAiLCJzdGkkMCIsInN0aiQxIiwiaW5qMiQwIiwicGFjayQwIiwidG9kb3MyJDAiLCJqJDAiLCJub2Rlc2kkMCIsImluajIkMSIsInBhY2skMSIsImNvbnRlbnQiLCJyb290cyIsInNvbnMiLCJzaWduYXR1cmVzIiwiZW52IiwicHJpbnQkMCIsInBwX3BvaW50IiwicF9pZCIsImdldF9zaW5nbGVfYWdlbnQiLCJnZXQkMCIsInRvX25hdmlnYXRpb24iLCJ0cmFuc2l0aW9uX3RvX3lvanNvbiIsInRyYW5zaXRpb25fb2ZfeW9qc29uIiwiZHN0Iiwic29ydHMiLCJzaWdfZGVjbCIsImwkMiIsInMkMSIsImwkMyIsIm5ld19vYnNfbWFwIiwiZ2V0X2VsZW1lbnRhcnkiLCJkb21haW4iLCJub2RlIiwiYXJyb3ciLCJzYSIsInRhaWwiLCJpbmoiLCJwcmludCQxIiwiZW1iZWRkaW5nc190b19mdWxseV9zcGVjaWZpZWQiLCJhX2lkIiwicHJlZW52IiwiZnJlc2giLCJpZF9ieV90eXBlIiwibmJfaWQiLCJpbnNlcnRfbmF2aWdhdGlvbiIsImRzdF9pZCIsImNjX2QiLCJpbmoyZHN0IiwiaW5qMmRzdCQwIiwicF9pZCQwIiwicG9pbnQiLCJ0JDMiLCJuYXYkMCIsInNpIiwic2kkMCIsInQkMSIsInNpJDEiLCJhZyQxIiwibiQzIiwic2lsIiwiYWdsIiwiaW5qJDAiLCJ0JDIiLCJuJDQiLCJzdXAiLCJpbmpfZTJzdXAiLCJpbmpfc3VwMmRzdCIsImlual9kX3RvX28iLCJjY19vIiwiaW50ZXIiLCJkaXNjIiwibm9kZXNkIiwiZGlzYyQwIiwibm9kZXNvJDEiLCJkcyIsImRsIiwib3MiLCJvbCIsImxpIiwiZGlzIiwiaW50JDEiLCJpbnRlcm4kMSIsImFsbF9saW5rcyIsImRpc2NvdmVyZWQkMiIsImRpc2NvdmVyZWQiLCJuZXh0X3JvdW5kIiwicmVjb2duIiwiaW50ZXJuIiwiaW50ZXJuJDAiLCJyZWNvZ24kMCIsInJlY29nbiQxIiwibmF2IiwiaW5qX3BfMmRzdCIsInBfaWQkMSIsImluajJkc3QkMSIsImFkZF9jYyIsInRvcGxldmVsIiwib3JpZ2luIiwiZWxlbWVudCIsInciLCJoYXNoIiwicnR5JDAiLCJyaWQkMCIsInJvb3RzJDAiLCJydHkiLCJyaWQiLCJlbnZfdyIsIm91dF9pZCIsImVudl93X2giLCJvZl9lbnYiLCJhY2NfdyIsImRlYnVnX3ByaW50IiwiY2hlY2tfZGFuZ2xpbmciLCJ3ayIsImJlZ2luX25ldyIsImZyZXNoX2NjX2lkIiwicmF3X2ZpbmlzaF9uZXciLCJjY19jYW5kaWRhdGUiLCJmaW5pc2hfbmV3IiwibmV3X2xpbmsiLCJ4X24iLCJ5X24iLCJzdHkiLCJzdHgiLCJuZXdfZnJlZSIsIm5ld19pbnRlcm5hbF9zdGF0ZSIsInZhIiwibmV3X25vZGUiLCJ0eXBlX2lkIiwiYXJpdHkiLCJub2RlJDAiLCJmb2xkX2J5X3R5cGUiLCJhZ2VudF90eXBlIiwibGlzdF9wb3MiLCJmb2xkIiwiZmluYWxpemUiLCJzaGFyaW5nIiwiZW52JDAiLCJ3JDAiLCJ3JDEiLCJ3JDIiLCJ3JDMiLCJ3JDQiLCJ3JDUiLCJkb21haW4kMSIsImxldmVsJDQiLCJhY2MkMyIsImxldmVsJDEiLCJkb21haW4kMCIsImxpc3QiLCJhY2MkMiIsInRoaXMkMCIsImxldmVsIiwidGhpcyQxIiwicmVuYW1pbmciLCJhY2NuIiwibm9kZXMxIiwibm9kZXMyIiwiaTIiLCJsMiIsImkxIiwibDEiLCJpbWFnZSIsIm5ld3MiLCJtaWQiLCJpZCQwIiwiaWQkMSIsImxldmVsJDIiLCJsZXZlbCQzIiwiY29tcGxldGVfZG9tYWluIiwiZG9tYWluJDIiLCJzaW5nbGVzIiwiZWxlbWVudGFyaWVzIiwic3RlcCIsImFyciIsInR5MSIsInNhMSIsInMyJDAiLCJ0eTIiLCJzYTIiLCJkb21haW5fbGV2ZWwiLCJhY2NfbGV2ZWwiLCJsbCIsImFjY2wiLCJpbmpzIiwiaW5qX2VfeCIsInN0YXRfbmF2X3N0ZXBzIiwibGV2ZWwwIiwic2luZ2xlX2FnZW50X3BvaW50cyIsIm1lcmdlX29uX2luZiIsImcxIiwiZzIiLCJtX2xpc3QiLCJwYWlyaW5nIiwibSQwIiwicHVzaG91dCIsImxlbmd0aCIsImNvIiwiY28kMCIsIm5tIiwiY2NpZCIsInJlY29uc3RydWN0X3JlbmFtaW5nIiwiZ3JhcGgiLCJyaWRzIiwiaW5qZWN0aXZlIiwicmVjb25zdHJ1Y3QiLCJpc19yb290X29mIiwicm9vdCQwIiwicm9vdHNfb2YiLCJnZXQiLCJlbGVtZW50c193aXRoX3R5cGVzIiwiY2NzIiwibWFwIiwiY29tcGFyZSIsImVtcHR5X2NhY2hlIiwiZnJvbV9lZGdlIiwic2l0ZSIsImNhY2hlIiwiY2FjaGUkMCIsInJldl9kZXBzIiwib2JzIiwicmVtYWlucyIsImlual9wb2ludDJncmFwaCIsInBpZCIsImlual9wb2ludDJncmFwaCQwIiwicGlkJDAiLCJzb24iLCJjYSIsImNhJDAiLCJuZXh0IiwiY2FjaGUkMSIsInJlbWFpbnMkMCIsIm9ic2VydmFibGVzX2Zyb21fYWdlbnQiLCJyZGVwcyIsIm9ic2VydmFibGVzX2Zyb21fZnJlZSIsIm9ic2VydmFibGVzX2Zyb21faW50ZXJuYWwiLCJvYnNlcnZhYmxlc19mcm9tX2xpbmsiLCJzaXRlJDAiLCJwcmludF9zaXRlIiwicGxhY2UiLCJwcmludF9pbnRlcm5hbCIsImdldF90eXBlIiwiZ2V0X2lkIiwiaXNfZnJlc2giLCJjb25jcmV0aXplIiwiaW5qX2ZyZXNoIiwiaW5qX25vZGVzIiwiZW1wdHlfZXZlbnQiLCJqc29uX2RpY3Rpb25uYXJ5IiwiYWN0aW9uIiwid2VpZ2h0X3JldmVyc2UiLCJzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0Iiwic29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdF9yZXZlIiwic29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdCIsInNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3RfcmV2ZSIsImNvbmNyZXRpemVfdGVzdCIsImluajJncmFwaCIsInBsIiwicGwkMCIsInBsJDEiLCJwbCQyIiwicyQyIiwicGwkMyIsInMkMyIsInBsJDQiLCJzJDQiLCJwbCQ1IiwiY29uY3JldGl6ZV9hY3Rpb24iLCJwbCQ2IiwidHJ5X2NvbmNyZXRpemVfYWN0aW9uIiwiYWN0aW9ucyIsImNvbmNyZXRpemVfZXZlbnQiLCJidCIsIm1hcF90ZXN0IiwibWFwX2FjdGlvbiIsIm1hdGNoX3Rlc3RzIiwiYiQzIiwiYyQwIiwibWF0Y2hfYWN0aW9ucyIsImJscyIsImFscyIsIm9rIiwiZ2V0X2lkcyIsIm1hdGNoX3F1YXJrcyIsImFfcXVhcmtzIiwiY19xdWFya3MiLCJmbWF0Y2giLCJhX3F1YXJrcyQwIiwiY19xdWFya3MkMCIsImFfcXVhcmtzJDEiLCJhcSIsImFxJDAiLCJjcSIsImNfcXVhcmtzJDEiLCJjcXMiLCJtYXRjaGluZ19hYnN0cmFjdF9jb25jcmV0ZSIsImFlIiwiY2UiLCJhZV90ZXN0cyIsImNlX3Rlc3RzIiwiYWJzdHJhY3RfaWRzIiwiY29uY3JldGVfaWRzIiwicGFydGl0aW9uIiwiZm1hcCIsIm1hdGNoaW5nIiwidGVzdHMiLCJjYWN0aW9ucyQwIiwidGwiLCJjaWQiLCJjaWQkMCIsInRlc3QiLCJjdGVzdHMiLCJjaWQkMSIsImFjdCIsImNhY3Rpb25zIiwic3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IiwibmEiLCJhZ2VudCQwIiwic3Vic3RfbWFwX3NpdGUiLCJzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCIsImludGVybmFsX3N0YXRlIiwic2l0ZSQxIiwic2l0ZSQyIiwic2l0ZSQzIiwic2l0ZSQ0IiwiYmluZGluZ190eXBlIiwic2l0ZSQ1Iiwic2l0ZSQ2Iiwic2l0ZTIiLCJzaXRlMSIsInNpdGUxJDAiLCJzaXRlMiQwIiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3RlIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCIsInJlbmFtZV9hYnN0cmFjdF90ZXN0Iiwic3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24iLCJmJDAiLCJzMSQwIiwiczIkMSIsInMxJDEiLCJzMSQyIiwiczIkMiIsImFnZW50JDEiLCJhZ2VudCQyIiwic3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hYyIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiIsInJlbmFtZV9hYnN0cmFjdF9hY3Rpb24iLCJzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QiLCJic3RhdGUiLCJic3RhdGUkMCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9zaSIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZSIsInJlbmFtZV9hYnN0cmFjdF9zaWRlX2VmZmVjdCIsInN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldiIsInN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZSIsImYkMSIsImYkMiIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IiwicmVuYW1lX2Fic3RyYWN0X2V2ZW50IiwicHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSIsInByaW50X2NvbmNyZXRlX3Rlc3QiLCJwcmludF9jb25jcmV0ZV9hY3Rpb24iLCJwcmludF9jb25jcmV0ZV9iaW5kaW5nX3N0YXRlIiwiYWdfaWQiLCJzaWdzJDIiLCJzaWdzJDMiLCJ3cml0ZV9iaW5kaW5nX3R5cGUiLCJyZWFkX2JpbmRpbmdfdHlwZSIsImJpbmRpbmdfdHlwZV90b19qc29uIiwid3JpdGVfcXVhcmsiLCJyZWFkX3F1YXJrIiwicXVhcmtfdG9fanNvbiIsInF1YXJrX29mX2pzb24iLCJ3cml0ZV90ZXN0IiwicmVhZF90ZXN0IiwiYmkiLCJ0ZXN0X3RvX2pzb24iLCJ0ZXN0X29mX2pzb24iLCJ3cml0ZV9hY3Rpb24iLCJpbmZvIiwicmVhZF9hY3Rpb24iLCJhY3Rpb25fdG9fanNvbiIsImFjdGlvbl9vZl9qc29uIiwid3JpdGVfZXZlbnQiLCJiZiIsInJlYWRfZXZlbnQiLCJzaWRlX2VmZmVjdHNfc3JjIiwic2lkZV9lZmZlY3RzX2RzdCIsImNvbm5lY3Rpdml0eV90ZXN0cyIsImV2ZW50X3RvX2pzb24iLCJjY3QiLCJldmVudF9vZl9qc29uIiwiY190Iiwic19lX2RzdCIsInNfZV9zcmMiLCJjY2wiLCJwMiIsInAxIiwicDEkMCIsInAyJDAiLCJwJDQiLCJwJDUiLCJwJDYiLCJwJDciLCJwJDgiLCJuJDUiLCJtYXBfZm9sZF9hZ2VudCIsImFjYyQ0IiwiYWNjJDUiLCJhJDciLCJhY2MkNiIsImEkOCIsIm1hcF9hZ2VudCIsImZvbGRfYWdlbnQiLCJzJDUiLCJzJDYiLCJhJDkiLCJnZXRfbmVnYXRpdmVfcGFydCIsImNyZWF0ZWRfYWdlbnRzIiwibG5rX2RzdCIsImFnZW50c19jcmVhdGVkX2J5X2FjdGlvbiIsIm5lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hYyIsInBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hYyIsInNpZGVfZWZmZWN0X2RzdHMiLCJyZW0iLCJyZXYiLCJleHRyYWN0X2NjX2lkcyIsImV4dHJhY3RfYWJzdHJhY3RfZXZlbnQiLCJhbGdfZXhwcl90b195b2pzb24iLCJhbGdfZXhwcl9vZl95b2pzb24iLCJydWxlX3RvX3lvanNvbiIsInJ1bGVfb2ZfeW9qc29uIiwiZnVsbHlfc3BlY2lmaWVkX3BhdHRlcm5fdG9fcG9zIiwiZyIsImVtYiIsImckMCIsImVtYiQwIiwidHIiLCJwcmludF9leHByX3RvX3lvanNvbiIsImZfdmFyIiwicHJpbnRfZXhwcl9vZl95b2pzb24iLCJtYXBfZXhwcl9wcmludCIsImZvbGRfZXhwcl9wcmludCIsImRpbl9raW5kX3RvX3lvanNvbiIsImRpbl9raW5kX29mX3lvanNvbiIsIndyaXRlX2Rpbl9raW5kIiwic3RyaW5nX29mX2Rpbl9raW5kIiwibGVuIiwicmVhZF9kaW5fa2luZCIsImRpbl9raW5kX29mX3N0cmluZyIsInByaW50X3RfZXhwcl90b195b2pzb24iLCJwcmludF90X2V4cHJfb2ZfeW9qc29uIiwibW9kaWZpY2F0aW9uX3RvX3lvanNvbiIsInJhdyIsIm5hbWUiLCJpZHMkMCIsIm5hbWUkMCIsImYkMyIsInRlc3RzJDAiLCJpZHMkMSIsImYkNCIsImYkNSIsIm1vZGlmaWNhdGlvbl9vZl95b2pzb24iLCJyYXckMCIsImJvb2xfZXhwcl90b195b2pzb24iLCJib29sX2V4cHJfb2ZfeW9qc29uIiwicGVydHVyYmF0aW9uX3RvX3lvanNvbiIsInBlcnR1cmJhdGlvbl9vZl95b2pzb24iLCJleGlzdHNfbW9kaWZpY2F0aW9uIiwiY2hlY2siLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2UiLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3AiLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX20iLCJlJDAiLCJmbiIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbSQwIiwibWFwX2V4cHJfcnVsZSIsImZvbGRfZXhwcl9ydWxlIiwibWFwX2V4cHJfcGVydHVyYmF0aW9uIiwiZl9hbGciLCJmX2Jvb2wiLCJmb2xkX2V4cHJfcGVydHVyYmF0aW9uIiwicHJpbnRfbGluayIsInByX3BvcnQiLCJwcl90eXBlIiwicHJfYW5ub3QiLCJsaW5rX3RvX2pzb24iLCJwb3J0X3RvX2pzb24iLCJ0eXBlX3RvX2pzb24iLCJhbm5vdF90b19qc29uIiwibGlua19vZl9qc29uIiwicG9ydF9vZl9qc29uIiwidHlwZV9vZl9qc29uIiwiYW5ub3RlZF9vZl9qc29uIiwicHJpbnRfbGlua19hbm5vdCIsImx0eXBlcyIsInJ1bGVfaW50ZXJuYWxfb2ZfanNvbiIsInByaW50X2NvdW50ZXJfdGVzdCIsImNvbnZlcnQiLCJwcmludF9ydWxlX21peHR1cmUiLCJjcmVhdGVkX2NvdW50ZXJzIiwic2hvd19lcmFzZWQiLCJzaG93X2VyYXNlZCQwIiwiY291bnRlcnMiLCJzd2l0Y2gkMCIsImlzX2NvdW50ZXIkMCIsImVxIiwiZGVsdGEiLCJtc2ciLCJwcmludF9yYXRlcyIsIm1heF9kaXN0IiwicmEiLCJtZCIsInByaW50X3J1bGUiLCJuYiIsImx0eXBlcyQwIiwicnVsZV9taXh0dXJlX3RvX2pzb24iLCJydWxlX21peHR1cmVfb2ZfanNvbiIsImxhbGdfZXhwcl90b19qc29uIiwibGFsZ19leHByX29mX2pzb24iLCJydWxlX3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJyYWlzZV9pZl9tb2RpZmljYXRpb24iLCJyYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyIsInJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIiwic3RhdHVzIiwic2lkZSIsImFnZW50X25hbWUiLCJyYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXQiLCJyYWlzZV9jb3VudGVyX21pc3VzZWQiLCJyYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSIsInJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQiLCJjb3B5X3J1bGVfYWdlbnQiLCJhZ2VudF90b19lcmFzZWQiLCJyYV9wb3J0cyIsInJhX2ludHMiLCJ0b19lcmFzZWQiLCJ0b19tYWludGFpbmVkIiwidG9fcmF3X21peHR1cmUiLCJpbnRlcm5hbHMiLCJwb3J0X25hbWUiLCJtYXhfbGlua19pZCIsIm1heF9zIiwibWF4X2xpbmtfaWRfc2l0ZXMiLCJtYXhfaWQiLCJsaW5rX29jY3VyZW5jZV9mYWlsdXJlIiwia2V5IiwicG9ydHNfZnJvbV9jb250YWN0X21hcCIsInR5X2lkIiwiYWRkX29uZV9pbXBsaWNpdF9pbmZvIiwibGluayIsInByZXZzIiwiZnJlc2hfb25seV9hY2MiLCJwX3N3aXRjaCIsImRzdF9pbmZvIiwiYWdfdGFpbCIsIm91dF90YWlsIiwicG9ydCIsInBvcnRzJDAiLCJzdyIsInRvZG8kMCIsInBvcnRzJDEiLCJpc19saW5rZWRfb25fcG9ydCIsIm1lIiwiaXNfbGlua2VkX29uIiwiZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24iLCJ0cmFuc2YiLCJsaW5rc190cmFuc2YiLCJjYW5kIiwiYWRkZWQiLCJyZW1vdmVkIiwibGlua3NfdHJhbnNmJDAiLCJsaW5rc190cmFuc2YkMSIsImRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiIsImFkZF9pbnN0YW50aWF0aW9uX2ZyZWUiLCJhZGRfc2lkZV9zaXRlIiwic2lkZV9zaXRlcyIsImFkZF9mcmVlZF9zaWRlX2VmZmVjdCIsInNpZGVfZWZmZWN0cyIsImFkZF9hZ2VudHNfaW5fY2MiLCJyZWdpc3RlcmVkX2xpbmtzIiwiaW5zdGFudGlhdGlvbnMiLCJhZ19sIiwid2skMCIsInRyYW5zZiQwIiwiaGFuZGxlX3BvcnRzIiwicl9sIiwiY19sIiwibF90Iiwic2l0ZV9pZCQ0Iiwicl9sJDAiLCJsaW5rcyQyIiwibF90JDAiLCJzaXRlX2lkJDUiLCJpc19lcmFzZWQiLCJyZWZfcG9ydHMiLCJvX2NjX3Rlc3RzIiwidGhpc19jY190ZXN0cyIsInNpZGVfZWZmZWN0c19kc3QkMSIsInNpZGVfZWZmZWN0c19zcmMkMSIsImFjdGlvbnMkMyIsInRlc3RzJDIiLCJzaXRlX2lkJDIiLCJpbnN0YW50aWF0aW9ucyQwIiwiYWN0aW9ucyQwIiwibGlua3MkMCIsInNpZGVfZWZmZWN0c19kc3QkMCIsInNpZGVfZWZmZWN0c19zcmMkMCIsImFjdGlvbnMkMiIsInRlc3RzJDEiLCJzaWRlX2VmZmVjdHMkMSIsImFjdGlvbnMkMSIsInNpdGVfaWQkMyIsInNpZGVfZWZmZWN0cyQyIiwic2l0ZV9pZCQxIiwic2l0ZV9pZCIsInNpdGVfaWQkMCIsInNpZGVfZWZmZWN0cyQwIiwid2skMSIsImokMSIsImokMiIsImkkMyIsImkkNCIsIndrJDYiLCJ0cmFuc2YkNyIsIndrJDIiLCJsX3QkMiIsInRyYW5zZiQxIiwic2l0ZV9pZCQ3IiwibF90JDEiLCJzaXRlX2lkJDYiLCJkc3RfcGxhY2UiLCJ3ayQzIiwiY19sJDAiLCJsX3QkMyIsInRyYW5zZiQyIiwic2l0ZV9pZCQ4Iiwicl9sJDEiLCJyX2wkMiIsImxfdCQ3IiwidHJhbnNmJDYiLCJyZSQyIiwic2l0ZV9pZCQxMiIsInNpdGVfaWQkMTEiLCJzaXRlX2lkJDkiLCJsX3QkNSIsInRyYW5zZiQ0Iiwid2skNCIsImxfdCQ2IiwidHJhbnNmJDUiLCJjX2wkMSIsInNpdGVfaWQkMTAiLCJpbmNyX29yaWdpbiIsImNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbSIsImNvbXBpbGVfbW9kZV9vbiIsInByZWNvbXBfbWl4cyIsIm5ld19zd2l0Y2giLCJhdXhfb25lJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJjdXJyZW50JDAiLCJhdXhfYWdzJDAiLCJpJDUiLCJvcl90eSIsInByZXYiLCJhdXhfb25lIiwiaSQ2Iiwib3JfdHkkMCIsImkkNyIsInRvZG9zJDEiLCJhdXhfYWdzIiwiYWxsX21peHMiLCJvbmx5X2ZyZXNoIiwib25seV9mcmVzaCQwIiwidHJhbnNmb3JtYXRpb25zJDAiLCJldmVudCIsImFkZGVkJDUiLCJ3a19vdXQiLCJlbnYkMSIsImFkZGVkJDYiLCJyZW1vdmVkJDAiLCJpbnN0YW50aWF0aW9ucyQxIiwibGlua3NfdHJhbnNmJDIiLCJhZGRlZCQ3IiwicmVtb3ZlZCQxIiwiYWNzIiwiYXkiLCJheCIsImFjdGlvbnMkNCIsInJlbW92ZWQkMiIsInRyYW5zZm9ybWF0aW9ucyQyIiwiY3JlYXRlX2FjdGlvbnMiLCJhZGRlZCQ0IiwiYWRkZWQkMCIsImFkZGVkJDEiLCJwb2ludCQwIiwiYWRkZWQkMiIsImFkZGVkJDMiLCJpbnRmJDAiLCJjcmVhdGVfYWN0aW9ucyQwIiwidHJhbnNmb3JtYXRpb25zJDMiLCJhY3Rpb25zJDUiLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0kMCIsImNjX2VudiIsInJ1bGVzIiwibGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSIsIm5iX2NjIiwibWl4cyIsImxua19wYWNrIiwia25vd25fc3JjIiwiZHN0X3MiLCJzcmNfaW5mbyIsImxua19wYWNrJDAiLCJ0cmFuc2ZzIiwiZnIiLCJmaWQiLCJhX3R5cGUiLCJlZGl0IiwiY2NfaWQxIiwiY2NfaWQyIiwiZWRpdCQwIiwidGVzdCQwIiwiZWRpdCQxIiwidGVzdCQxIiwiZWlkIiwiZWRpdCQyIiwidGVzdCQyIiwiaWQkMyIsImNjX2lkJDEiLCJpZCQyIiwidHJhbnNmcyQwIiwicl9taXgiLCJyX2NyZWF0ZWQiLCJwYXR0ZXJuc19vZl9taXh0dXJlIiwicHJlX2VudiIsInNuYXAiLCJjY19jYWNoZSIsInJhX3R5cGUiLCJhciIsImRhbmdsaW5nIiwiZGFuZ2xpbmckMCIsImRhbmdsaW5nJDEiLCJjY19jYWNoZSQwIiwicHJlX2VudiQwIiwiaW5pdCIsInRva2VucyIsImFsZ3MiLCJvYnNlcnZhYmxlcyIsImludGVydmVudGlvbnMiLCJhc3RfcnVsZXMiLCJhbGdfcmQiLCJ0b2tfcmQiLCJkZXBzX2luX2UiLCJkZXBzX2luX3QiLCJkZWNvbnN0cnVjdCIsImdldF9vYnMiLCJnZXRfcnVsZXMiLCJuZXdfZG9tYWluIiwidG9rZW5zX2ZpbmRlciIsImFsZ3NfZmluZGVyIiwibnVtX29mX2FnZW50Iiwibm1lIiwiY291bnRlcl9pbmZvIiwiZm9sZF9ydWxlcyIsInJ1bGUiLCJmb2xkX3BlcnR1cmJhdGlvbnMiLCJnZXRfcnVsZSIsImdldF9hc3RfcnVsZV93aXRoX2xhYmVsIiwiZ2V0X2FzdF9ydWxlIiwiZm9sZF9hc3RfcnVsZXMiLCJsa2FwcGFfcnVsZSIsImdldF9hc3RfcnVsZV9yYXRlX3BvcyIsInVuYXJ5IiwibmJfcnVsZXMiLCJudW1zX29mX3J1bGUiLCJuYl9zeW50YWN0aWNfcnVsZXMiLCJudW1fb2ZfYWxnIiwiZ2V0X2FsZyIsImdldF9hbGdzIiwibmJfYWxncyIsIm51bV9vZl90b2tlbiIsInN0ciIsIm5iX3Rva2VucyIsImdldF9wZXJ0dXJiYXRpb24iLCJuYl9wZXJ0dXJiYXRpb25zIiwiZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyIsImdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyIsImFsbF9kZXBlbmRlbmNpZXMiLCJwcmludF9hZ2VudCIsInByaW50X2FsZyIsInNwZWNpYWwiLCJwcmludF90b2tlbiIsInByaW50X2FzdF9ydWxlIiwibWFwX29ic2VydmFibGVzIiwicHJfYWxnIiwicHJfcnVsZSIsInByX3BlcnQiLCJwcl9ydWxlJDAiLCJjaGVja19pZl9jb3VudGVyX2lzX2ZpbGxlZF9lbm8iLCJvdmVyd3JpdGVfdmFycyIsImFsZ19vdmVyd3JpdGUiLCJmb2xkX21peHR1cmVfaW5fZXhwciIsIngxIiwieDIiLCJ4MyIsImthcHBhX2luc3RhbmNlX3RvX3lvanNvbiIsImZpbGVzIiwia2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uIiwidW5hcnlfcGF0dGVybnMiLCJjY19taXgiLCJhbGdfZXhwciIsImJvb2xfZXhwciIsInByaW50X2V4cHIiLCJhbGciLCJwcmludF9leHByX3ZhbCIsImFsZ192YWwiLCJkZWNvbXBpbGVkX3J1bGUiLCJkaXN0IiwicmF0ZSIsImVsZW1lbnRhcnlfcnVsZSIsInByX3RyYW5zIiwiYm94ZWRfY2MiLCJtb2RpZmljYXRpb24iLCJmbiQwIiwiZm4kMSIsImZuJDIiLCJ2YSQwIiwiY2MkMSIsImZuJDMiLCJmbiQ0IiwicGVydHVyYmF0aW9uIiwicGVydCIsImF1eF9hbGFybSIsImVudl9rYXBwYSIsImRlY29tcGlsZWRfZW52IiwicGFyc2UiLCJyZXN1bHQiLCJnZXRfdmFsdWUiLCJwb3NfcCIsInBhcmFtIiwidmFsdWVfbGlzdCIsInBhcmFtJDAiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwiY29uZiIsInNwIiwidXAiLCJmb3JtYXRDZmxvdyQwIiwidmFsdWUiLCJwb3NfdiIsImVycm9yIiwidGwkMCIsInRsJDEiLCJkaXZpZGVfZXhwcl9ieV9pbnQiLCJvcHQkMCIsInJvb3Rfb25seSIsImxvYyIsImIkMjAiLCJhJDEzIiwicm9vdF9vbmx5JDAiLCJiJDciLCJiJDYiLCJsb2NfY3N0JDAiLCJsb2NfY3N0JDEiLCJjJDEiLCJjJDIiLCJiJDQiLCJsb2NfY3N0JDIiLCJiJDUiLCJsb2NfY3N0IiwiZXhwciQzIiwib3B0JDMiLCJleHByJDIiLCJvcHQkMiIsImV4cHIkMSIsIm9wdCQxIiwiYiQ5IiwiYiQ4IiwibG9jZGl2IiwiYyQ1IiwiYiQxMyIsImV4cHIkNiIsIm9wdCQ2IiwiYiQxNCIsImIkMTAiLCJjJDQiLCJsb2NfYmluJDAiLCJiJDExIiwiZXhwciQ1Iiwib3B0JDUiLCJjJDMiLCJsb2NfYmluIiwiZXhwciQ0Iiwib3B0JDQiLCJhJDEwIiwiYiQxMiIsImIkMTYiLCJhJDExIiwiYiQxNSIsImIkMTgiLCJhJDEyIiwiYiQxNyIsImIkMTkiLCJsb2MkMCIsImEkMTQiLCJhJDE1IiwiYSQxOCIsImEkMTYiLCJhJDE3IiwibG9jJDEiLCJubyQwIiwieWVzJDAiLCJzaW1wbGlmeV9ib29sIiwibG9jJDIiLCJleHByJDciLCJleHByJDgiLCJsb2MkMyIsImV4cHIkOSIsImV4cHIkMTAiLCJleHByX2Jvb2wiLCJzaW1wbGlmeSIsImNsZWFuIiwiY2xlYW5fYm9vbCIsImR0IiwiZHQkMCIsImNzdCIsImNvcnJlY3RlZF9yYXRlIiwiY29ycmVjdGVkX3JhdGUxIiwiY29ycmVjdGVkX3JhdGUyIiwiZSQxIiwiY3N0JDAiLCJjb3JyZWN0ZWRfcmF0ZSQwIiwiY3N0JDEiLCJnZXRfY29ycmVjdGVkX3JhdGUkMCIsImNvcnJlY3RlZF9yYXRlX2NvbnN0IiwibmVjZXNzYXJpbHlfZXF1YWwiLCJhX29wdCIsImJfb3B0IiwiZGVwIiwiYWRkX21peHR1cmUiLCJhZGRfdG9rZW4iLCJkZXBfZW52IiwidGltZV92YXIiLCJhY2N1IiwiYWNjdSQwIiwiYWNjdSQxIiwiZGlmZl9nZW4iLCJmX3Rva2VuIiwiZl9zeW1iIiwiZl90aW1lIiwiZTIkMCIsImRpZmZfdG9rZW4iLCJkaWZmX21peHR1cmUiLCJmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIiwiYXJyYXlfaWQiLCJmb2xkX292ZXJfbWl4dHVyZXNfaW5fYWxnX2V4cHIiLCJtb2RlbCIsImFsZ3NfZXhwciIsInVuYXJ5X3JhdGUiLCJkZWx0YV90b2tlbnMiLCJhY2N1JDIiLCJqc29uX2RpY3Rpb25uYXJ5IiwianNvbl9kaWN0aW9ubmFyeSQwIiwidXBkYXRlX3Byb2ZpbGluZ19pbmZvIiwiYSIsImluZm8iLCJldmVudCIsInN0b3J5X2lkIiwiY29tcGFyZV9ieV9zdG9yeV9pZCIsIngiLCJ5IiwidG9fanNvbiIsImYiLCJvZl9qc29uIiwic3RvcnlfZXZlbnQiLCJzdG9yeV90aW1lIiwid3JpdGVfanNvbiIsIm9iIiwibyIsInJlYWRfanNvbiIsInN0IiwiYiIsInByb2ZpbGluZ19pbmZvIiwicHJpbnRfZXZlbnRfa2luZCIsImVudiIsImkiLCJsIiwicyQxIiwiZW52JDAiLCJyX2lkIiwicyIsInMkMCIsInByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90Iiwic3Vic19zdGVwIiwiZHVtbXlfc3RlcCIsInByaW50X2V2ZW50IiwiY29tcGFjdCIsImxvZyIsImUiLCJldl9raW5kIiwic2lncyIsInN0YXRlIiwic2l0ZSIsImFnIiwiYWdfaWQiLCJwcmludF9zdGVwIiwib3B0IiwiZW52JDEiLCJzdGgiLCJ5JDAiLCJ4JDAiLCJhY3Rpb25zIiwidGVzdHMiLCJzaWdzJDAiLCJnZXRfdHlwZXNfZnJvbV9pbml0IiwiYWNjIiwiYWN0aW9uIiwiYXR5cGUiLCJwcmludF9sYWJlbF9vZl9zdGVwIiwieCQzIiwieCQ0IiwiYSQwIiwibCQwIiwieCQ1IiwieCQxIiwieCQyIiwid3JpdGVfc3RlcCIsInoiLCJ6JDAiLCJ6JDEiLCJ5JDEiLCJyZWFkX3N0ZXAiLCJiJDAiLCJzdGVwX3RvX3lvanNvbiIsInJldl9hY3Rpb25zIiwid3JpdGVfanNvbiQwIiwicmVhZF9qc29uJDAiLCJzdHJpbmdfb2Zfc3RlcCIsImxlbiIsInN0ZXBfb2Zfc3RyaW5nIiwic3RlcF9pc19vYnMiLCJzdGVwX2lzX2luaXQiLCJzdGVwX2lzX3N1YnMiLCJzdGVwX2lzX3J1bGUiLCJzdGVwX2lzX3BlcnQiLCJzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCIsImNyZWF0aW9uX29mX2FjdGlvbnMiLCJvcCIsImNyZWF0aW9uX29mX3N0ZXAiLCJhYyIsImhhc19jcmVhdGlvbl9vZl9zdGVwIiwidGVzdHNfb2Zfc3RlcCIsImFjdGlvbnNfb2Zfc3RlcCIsInNpZGVfZWZmZWN0c19vZl9zdGVwIiwiaW5pdF90cmFjZV9maWxlIiwidXVpZCIsImRlc2MiLCJhc3NlcnRfZmllbGQiLCJpZGVudCIsInJlYWRfdHJhY2VfaGVhZGVycyIsImxleF9zdCIsImxleF9idWYiLCJ1dWlkJDAiLCJ1dWlkJDEiLCJpZGVudCQwIiwiZm9sZF90cmFjZSIsImluaXQiLCJvdXQiLCJmb2xkX3RyYWNlX2ZpbGUiLCJmbmFtZSIsImdldF9oZWFkZXJzX2Zyb21fZmlsZSIsInNpemUiLCJuYiIsInQiLCJ3cml0ZV90Iiwic3RyaW5nX29mX3QiLCJyZWFkX3QiLCJwIiwibGIiLCJ0X29mX3N0cmluZyIsImN1cnJlbnRfc3RvcnkiLCJjIiwiY3VycmVudF90aW1lIiwiY3VycmVudF9ldmVudCIsIm5iX251bGxfZXZlbnQiLCJjb25zZWN1dGl2ZV9udWxsX2V2ZW50IiwicnVsZV9pZCIsImNvbnNlY3V0aXZlX2Jsb2NrZWQiLCJpbmNfc3RvcmllcyIsImNoZWNrX3RpbWUiLCJtYXgiLCJjaGVja19ldmVudHMiLCJvbmVfdGltZV9hZHZhbmNlIiwiZHQiLCJvbmVfY29uc3RydWN0aXZlX2V2ZW50IiwidCQwIiwib25lX25vX21vcmVfYmluYXJ5X2V2ZW50Iiwib25lX25vX21vcmVfdW5hcnlfZXZlbnQiLCJvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQiLCJvbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IiwidGkiLCJ0aSQwIiwib25lX2Jsb2NrZWRfZXZlbnQiLCJnZXRfZWZmaWNpZW5jeSIsInByaW50X2VmZmljaWVuY3kiLCJhbGwiLCJpbml0X3RpbWUiLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJwbG90X3BlcmlvZCIsInRpbWVfcmF0aW8iLCJ0bWF4IiwiZXZlbnRfcmF0aW8iLCJlbWF4Iiwic2V0X21heF90aW1lIiwic2V0X21heF9ldmVudHMiLCJ0cmFja2VkX2V2ZW50cyIsImNvdW50ZXIiLCJzZXRfcGxvdF9wZXJpb2QiLCJjcmVhdGUiLCJtYXhfZXZlbnQiLCJuYl9ydWxlcyIsImluaXRfdCIsInN0aCQwIiwiaW5pdF9lIiwicmVpbml0aWFsaXplIiwibmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyIsImN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIiwibmV4dF9zdG9yeSIsInBvc2l0aXZlX3Bsb3RfcGVyaW9kIiwiZmlsbCIsIm91dHB1dHMiLCJkRSIsIm5leHQiLCJkVCIsImxhc3QiLCJuIiwiZFQkMCIsInRpbWUiLCJjb3VudGVyJDAiLCJwb2ludHMiLCJmYWtlX3RpbWUiLCJhcnJvd2hlYWQiLCJjb2xvciIsInByaW50X2luaXRpYWxfaW5wdXRzIiwiY29uZiIsImlucHV0c19mb3JtIiwibm9Db3VudGVycyIsImNvdW50ZXJzX2luZm8iLCJyIiwiaW5zX2ZyZXNoIiwidGsiLCJwcmludF9zbmFwc2hvdCIsImVsIiwibmEiLCJtaXgiLCJwcmludF9kb3Rfc25hcHNob3QiLCJ3cml0ZV9zbmFwc2hvdCIsInJlYWRfc25hcHNob3QiLCJrZXkiLCJzbmFwc2hvdF90b2tlbnMiLCJzbmFwc2hvdF9hZ2VudHMiLCJzbmFwc2hvdF90aW1lIiwic25hcHNob3RfZXZlbnQiLCJzdHJpbmdfb2Zfc25hcHNob3QiLCJzbmFwc2hvdF9vZl9zdHJpbmciLCJ3cml0ZV9kaW4iLCJyZWFkX2RpbiIsImgiLCJrIiwiZGluX2VuZCIsImRpbl9ydWxlcyIsImRpbl9mbHV4cyIsImRpbl9oaXRzIiwiZGluX3N0YXJ0IiwiZGluX2tpbmQiLCJzdHJpbmdfb2ZfZGluIiwiZGluX29mX3N0cmluZyIsInByaW50X2RvdF9kaW4iLCJmbHV4IiwiZCIsInYiLCJhcnJvd2hlYWQkMCIsImNvbG9yJDAiLCJwcmludF9odG1sX2RpbiIsImFkZF9wbG90X2xpbmUiLCJuZXdfb2JzZXJ2YWJsZXMiLCJwbG90IiwibmJyIiwibmV3X3ZhbHVlcyIsImluaXRfcGxvdCIsInBsb3RfbGVnZW5kIiwid3JpdGVfcGxvdCIsInJlYWRfcGxvdCIsInBsb3Rfc2VyaWVzIiwic3RyaW5nX29mX3Bsb3QiLCJwbG90X29mX3N0cmluZyIsInByaW50X3Bsb3Rfc2VwIiwiaXNfdHN2IiwicHJpbnRfcGxvdF9sZWdlbmQiLCJwcmludF9wbG90X2xpbmUiLCJwcCIsImV4cG9ydF9wbG90IiwicHJpbnRfd2FybmluZyIsInBvcyIsIm1zZyIsInByIiwicG9zJDAiLCJjcmVhdGVfZmx1eCIsImluY3JfZmx1eF9mbHV4Iiwib2ZfcnVsZSIsIm9uX3J1bGUiLCJpbmNyX2ZsdXhfaGl0Iiwic3RvcF9mbHV4IiwiZGluX2RhdGEiLCJqIiwiZW1wdHkiLCJpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIiwicGF0dGVybiIsIm1hdGNoaW5ncyIsImFkZF9pbnRzZXRfaW5faW50bWFwIiwiaWQiLCJzZXQiLCJtYXAiLCJicmVha19hcGFydF9jYyIsImVkZ2VzIiwibW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSIsIm5ld19jYyIsIm9yaWdpbl9jYyIsIm1vZF9jb25uIiwiY2NfaWQiLCJjY19tYXAiLCJvc2V0Iiwib3NldCQwIiwibnNldCIsIm1lcmdlX2NjIiwiY2MyIiwiY2MxIiwibW9kX2Nvbm5lY3Rpdml0eSIsImNjX21hcCQwIiwic2V0MiIsInNldDEiLCJ1cGRhdGVfcm9vdHMiLCJpc19hZGQiLCJ1bmFyeV9jY3MiLCJyb290IiwidmEiLCJzZXQkMCIsIm51bWJlciIsInBhdCIsImRlYnVnX3ByaW50IiwiZG9tYWluIiwicm9vdHNfb2ZfcGF0dGVybnMiLCJyb290cyIsInJvb3RzX29mX3BhdHRlcm5zJDAiLCJyb290X21hcHMiLCJvZl9wYXR0ZXJuIiwicGF0X2lkIiwib2ZfdW5hcnlfcGF0dGVybiIsInJlY2VpdmVfbWVzc2FnZSIsImNjcyIsImlzX3ZhbGlkIiwibnVtYmVyX29mX2luc3RhbmNlcyIsInBhdHMiLCJudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2MiLCJwYXQyIiwicGF0MSIsIm1hcDEiLCJtYXAyIiwiY2MiLCJwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIiwicmFuZG9tX3N0YXRlIiwicm9vdDEiLCJyb290MiIsImZvbGRfcGlja2VkX2luc3RhbmNlIiwiYWNjJDIiLCJhY2MkMCIsInJvb3Rfb3B0IiwiYWNjJDEiLCJpJDAiLCJub19ub19ubyIsImZvbGRfaW5zdGFuY2VzIiwiZXhjcCIsInNlbnRfdG9fZml4ZWRfcm9vdCIsImV4Y3Bfcm9vdCIsInNlbnRfdG9fZXhjcF9yb290IiwidGFiIiwiYXV4IiwiaXRoX3Jvb3RzIiwiaSQxIiwiZm9sZF91bmFyeV9pbnN0YW5jZXMiLCJleGVjX2FsZyQwIiwidGltZSQwIiwiZ2V0X2FsZyIsImdldF9taXgiLCJnZXRfdG9rIiwiYWxnIiwic2siLCJhbGckMCIsInNrJDAiLCJhbGckMSIsInNrJDEiLCJhbGckMiIsIm9wJDAiLCJzayQyIiwid2l0aF92YWx1ZSIsImFsZyQzIiwibiQwIiwibm8iLCJ5ZXMiLCJjb25kIiwiZXhlY19ib29sJDAiLCJleGVjX2FsZyIsImV4cHIiLCJleHByJDAiLCJleHByJDEiLCJleHByJDIiLCJvcCQxIiwiZXhlY19ib29sIiwieWVzJDAiLCJzayQ0Iiwic2skMyIsInNrJDUiLCJuMSIsInNrJDYiLCJuMSQwIiwib3AkMiIsInNrJDciLCJvcCQzIiwic2skOCIsInZhbHVlX2Jvb2wiLCJ2YWx1ZV9hbGciLCJnZXRfZWRnZXMiLCJzdW1faW5zdGFuY2VzX251bWJlcnMiLCJpbnN0cyIsInBhdHRlcm5zIiwicmVjb21wdXRlIiwib3ZlcndyIiwiYWN0aXZpdHkiLCJzZXRfYWN0aXZpdHkiLCJydWxlIiwid2l0aF90cmFjZSIsImFjdGl2aXR5X3RyZWUiLCJ1bmFyeV9wYXR0ZXJucyIsImRlcHNfaW5fZSIsImRlcHNfaW5fdCIsImFsd2F5c19vdXRkYXRlZCIsIndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMiLCJ2YXJpYWJsZXNfb3ZlcndyaXRlIiwidmFyaWFibGVzX2NhY2hlIiwicmF0ZSIsImlzX2Jsb2NrZWQiLCJkZWJ1Z19tb2RlIiwibWF0Y2hpbmciLCJ0b19ibG9jayIsImFic3RyYWN0X2FjdGlvbnMiLCJpbmoiLCJhYnN0cmFjdF90ZXN0cyIsImluaiQwIiwic2V0X2V2ZW50c190b19ibG9jayIsInByZWRpY2F0ZSIsImFsbF9pbmplY3Rpb25zIiwidW5hcnlfcmF0ZSIsInN0YXRlX2luc3RzIiwicGF0dGVybmEiLCJpbnN0YW5jZSIsIm1hdGNoaW5nJDAiLCJyZXZfcm9vdHMiLCJtYXhfZGlzdGFuY2UiLCJub2RlcyIsInIyIiwicjEiLCJwaWNrX2FfcnVsZV9pbnN0YW5jZSIsImZyb21fcGF0dGVybnMiLCJwcmludCIsInN0YXRzIiwicHJpbnRfc3RhdHMiLCJhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiIsImluc3RhbmNlcyIsInNpZGVfZWZmZWN0cyIsImVkZ2VzJDAiLCJpZCQwIiwiZWRnZXMkMSIsImlkJDEiLCJpZCQyIiwiY2NfbW9kaWYiLCJlZGdlcyQyIiwicyQyIiwiaWQkMyIsInNpZGVfZWZmZWN0cyQwIiwicyQzIiwibmMiLCJpZCQ0IiwiY2NfbW9kaWYkMCIsImVkZ2VzJDMiLCJzJDQiLCJpZCQ1IiwiZWRnZXMkNCIsImFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIiwiaW5qMmdyYXBoIiwidHkiLCJmcmVlX2lkIiwiaW5qX2ZyZXNoIiwiaW5qX25vZGVzIiwiaW5qMmdyYXBoJDAiLCJuYyQwIiwibiQxIiwibiQyIiwibmMkMSIsIm5jJDIiLCJtb2RpZl9jYyIsInNpZGVfZWZmZWN0cyQxIiwibiQzIiwibmMkMyIsImFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZiIsIm9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIiwibmMkNCIsIm5jJDUiLCJzJDUiLCJuYyQ2Iiwib2JzX2Zyb21fdHJhbnNmb3JtYXRpb25zIiwidHJhbnMiLCJnZXRfc3BlY2llc19vYnMiLCJvYnMiLCJ0cmFja2VkIiwiZm4iLCJvayIsInBpZCIsInNwZWMiLCJ1cGRhdGVfZWRnZXNfZnJvbV9hY3Rpb25zIiwic2lkZV9lZmZlY3RfZHN0IiwibG5rX2RzdCIsImNvbmNyZXRlX3JlbW92ZWQiLCJkZWxfZGVwcyIsImRlbF9vYnMiLCJlZGdlc19hZnRlcl9uZWciLCJjb25jcmV0ZV9pbnNlcnRlZCIsIm5ld19kZXBzIiwibmV3X29icyIsInNwZWNpZXMiLCJtaXh0dXJlIiwiZmlsZSIsInJldl9kZXBzIiwibWF4X2Rpc3RfdG9faW50Iiwic3RvcmVfYWN0aXZpdHkiLCJzdG9yZSIsInN5bnRheF9pZCIsImNjX3ZhIiwicmF0ZSQwIiwiYWN0IiwidW5hcnkiLCJvbGRfYWN0IiwidXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMiLCJrbm93bl9wZXJ0cyIsImRlcCIsInBlcnRzIiwibWF0Y2hpbmdzX29mX3J1bGUiLCJydWxlJDAiLCJwYXR0ZXJuX3ZhIiwidW5hcnlfY2FuZGlkYXRlcyIsIm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyIsIm1vZGlmaWVkX2NjcyIsInBhY2skMCIsInVucmF0ZSIsIm9sZF9wYWNrIiwiaV9pbnN0IiwibmV3X3YiLCJuZXdfcGFjayIsIm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyQwIiwidW5hcnlfY2FuZGlkYXRlcyQwIiwicGFjayIsIm92ZXJ3cml0ZV92YXIiLCJ0cmFuc2Zvcm1fYnlfYV9ydWxlIiwic3RhdGUkMSIsImV2ZW50X2tpbmQiLCJwYXRoJDAiLCJpbmplY3RlZCQwIiwiaW5qZWN0ZWQiLCJyZGVwcyIsImRlcHMiLCJzdGF0ZSQwIiwiaCQwIiwicmVtYWluaW5nX3NpZGVfZWZmZWN0cyIsImZpbmFsX2luajJncmFwaCIsImNvbmNyZXRlX2luc2VydGVkJDAiLCJldiIsInRlc3RzJDAiLCJuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzIiwiY2V2ZW50IiwicGF0aCIsImtub3duX2FnZW50cyIsInByZXRlc3RzIiwidGUiLCJ0ZSQwIiwiYWckMCIsInRlJDEiLCJhZyQxIiwicGF0aF90ZXN0cyIsImZ1bGxfY29uY3JldGVfZXZlbnQiLCJhcHBseV9naXZlbl9pbnN0YW5jZSIsImRpc3QiLCJkaXN0JDAiLCJyb290MCIsImFwcGx5X2dpdmVuX3J1bGUiLCJpbnN0IiwiZm9yY2VfcnVsZSIsIm91dCQxIiwiZGlzdF9vcHQiLCJsb2MiLCJvdXQkMCIsInNuYXBzaG90IiwicmF3IiwicGlja19hbl9pbnN0YW5jZSIsInJ0IiwiY2hvaWNlIiwicGF0dGVybjEiLCJwYXR0ZXJuMiIsImluajEiLCJpbmpfb3V0IiwiaXNfY29ycmVjdF9pbnN0YW5jZSIsImdyYXBoIiwiaXNfdW5hcnkiLCJpbnZfcm9vdHMiLCJhcHBseV9pbnN0YW5jZSIsIm1heENvbnNlY3V0aXZlQmxvY2tlZCIsIm1heENvbnNlY3V0aXZlQ2xhc2giLCJncmFwaCQwIiwiY2F1c2UiLCJhcHBseV9naXZlbiIsImdyYXBoJDEiLCJmaW5hbF9zdGVwIiwiY29udGludWUkMCIsImRvbWFpbiQwIiwibGlzdCIsImNhbmRzIiwibWF0Y2hlcyIsIm1hdGNoZXMkMCIsImF1eF9hZGRfdHJhY2tlZCIsIm5hbWUiLCJ0cGF0dGVybiIsImFkZF90cmFja2VkIiwicmVtb3ZlX3RyYWNrZWQiLCJuYW1lJDAiLCJ0ZXN0ZXIiLCJwbGlzdCIsInRlc3RlciQwIiwiYWRkX3RyYWNrZWRfc3BlY2llcyIsInJlbW92ZV90cmFja2VkX3NwZWNpZXMiLCJnZXRfcmFuZG9tX3N0YXRlIiwic2VuZF9pbnN0YW5jZXNfbWVzc2FnZSIsImFkZF9vdXRkYXRlZF9kZXBlbmRlbmNpZXMiLCJvdXRkYXRlZF9lbGVtZW50cyIsImRlYnVnX3ByaW50X2luc3RhbmNlcyIsImNvbXBhcmVfc3RvcHMiLCJwMiIsInQyIiwicDEiLCJ0MSIsIndpdGhfZGVsdGFfYWN0aXZpdGllcyIsInQwIiwiYWxnc19kZXBzIiwic3RvcHBpbmdfdGltZXMiLCJzdG9wcyIsInRpbWVfZGVwZW5kZW50X3BlcnRzIiwib2JzZXJ2YWJsZXNfdmFsdWVzIiwiZG9fbW9kaWZpY2F0aW9uIiwiZXh0cmEiLCJtb2RpZmljYXRpb24iLCJwcmludF9leHByX3ZhbCIsInRleHQiLCJnIiwiZXh0cmEkMCIsImdyYXBoJDIiLCJleHRyYSQxIiwiZ3JhcGgkMyIsInBleHByIiwicGV4cHIkMCIsImZpbGUkMCIsInJlbCIsImZpbGUkMSIsImZpbGUkMiIsIm90aGVycyIsInRoZXNlIiwiY2MkMCIsIm5hbWUkMSIsInBlX2V4cHIiLCJwZV9maWxlIiwiZmlsZV9vcHQiLCJsaW5lIiwiY2MkMSIsImZpbGUkMyIsImZpbGUkNCIsInBlcnR1cmJhdGUiLCJpc19hbGFybSQwIiwibWl4X2NoYW5nZWQkMCIsInRhaWwiLCJwZXJ0IiwibW9kX2FsYXJtIiwibWl4X2NoYW5nZWQkMSIsImVmZmVjdCIsInN0b3AiLCJ0YWlsJDAiLCJhbGl2ZSIsIm1peF9jaGFuZ2VkJDIiLCJkb19tb2RpZmljYXRpb25zIiwiaW5pdGlhbGl6ZSIsImJpbmQiLCJyZXR1cm4kMCIsImdyYXBoMCIsInN0YXRlMCIsImluaXRfbCIsIm1zdGF0ZSIsImNvbXBpbGVkX3J1bGUiLCJ2YWx1ZSIsImNyZWF0aW9uc19zb3J0IiwibWdyYXBoIiwibWlkX2dyYXBoIiwibWl4X2NoYW5nZWQiLCJwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIiwicGUiLCJvdXRwdXRzJDAiLCJjYW5kIiwicmVndWxhcl9sb29wX2JvZHkiLCJwaWNrZWRfaW5zdGFuY2UiLCJzdG9wJDAiLCJwcmV2X2FjdGl2aXR5IiwiYWN0X3N0YWNrIiwiYXBwbGllZF9yaWRfc3ludGF4IiwibXlfc3ludGF4X3JkX2lkIiwicmVnaXN0ZXJfbmV3X2FjdGl2aXR5Iiwic3ludGF4X3JkX2lkIiwibmV3X2FjdCIsImZsIiwiY3QiLCJmb3JjZV90ZXN0ZWQiLCJleHRyYV9wZXJ0Iiwibl9hY3Rpdml0eSIsImZpbmFsX3N0ZXAkMCIsImFfbG9vcCIsImR1bXBJZkRlYWRsb2NrZWQiLCJzdGF0ZSQyIiwicmQiLCJkdCQyIiwiZHRpIiwiZHQkMCIsImR0JDEiLCJzdG9wJDEiLCJuZWVkc19iYWNrdHJhY2siLCJlbmRfb2Zfc2ltdWxhdGlvbiIsImluaXRfc3RhdGUiLCJjY19vZl9zdGF0ZSIsImNjX21hcHMiLCJhZ2VudCIsImUkMCIsIndvcmskNSIsImZvbGRfYXJpdHlfbGlzdCIsImFyaXR5IiwiYWRkX2FnZW50IiwidG9kb3MiLCJtb3JwaGlzbSIsIndvcmsiLCJhaWQiLCJ3b3JrJDAiLCJ3X2FnZW50IiwidG9kb3MkMCIsIndvcmskMSIsInciLCJpbnRlcm5hbCIsIm0iLCJ0b2RvcyQzIiwibW9ycGhpc20kMCIsIndvcmskMyIsInBvcnQiLCJhaWQkMCIsImFpZCQxIiwibm90X2FnZW50IiwiYmlkIiwibm90X2FnZW50JDAiLCJub3RfYWdlbnRzIiwiYmlkJDAiLCJ3Yl9hZ2VudCQwIiwidG9kb3MkMSIsIndiX2FnZW50Iiwid29yayQyIiwidG9kb3MkMiIsInRvZG8iLCJtb3JwaGlzbSQxIiwid29yayQ0IiwiZW4iLCJjaWQiLCJkb19uZWdhdGl2ZV9wYXJ0IiwiY2NfY2hhbmdlIiwiY2NzJDAiLCJpbnZvbHZlZF9hZ2VudHMiLCJ0ZXN0c19wYXNzX29uIiwiYWckMiIsImFnX3R5IiwiYWckMyIsImRzdF9zIiwiZHN0X2FnX3R5IiwiYWckNCIsImFnJDUiLCJpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIiwiaXNfc3RlcF90cmlnZ2VyYWJsZSIsImRvX2FjdGlvbnMiLCJpc19yZW1vdmFsIiwicmVtb3ZhbHMiLCJkb19pbl9vcmRlciIsImNjcyQzIiwiYSQxIiwidHkkMCIsImNjcyQ0IiwiY2NzJDUiLCJjY3MkNiIsIngyIiwiczIiLCJhMiIsIngxIiwiczEiLCJhMSIsImNjcyQxIiwiY2NzJDIiLCJkb19zdGVwIiwia2luZCIsInVuYXJ5X2Rpc3RhbmNlcyIsImNjMV9hZ3MiLCJjYzJfYWdzIiwiY29ubmVjdGVkX2NvbXBvbmVudHMiLCJwcmVncmFwaCIsImluZm8kMCIsImV2ZW50JDAiLCJjb25uZWN0ZWRfY29tcG9uZW50cyQwIiwicHJlZ3JhcGgkMCIsImNvbm5lY3RlZF9jb21wb25lbnRzJDEiLCJpbmZvJDEiLCJlbXB0eV9jb21waWwiLCJtZXJnZV92ZXJzaW9uIiwiYSIsImIiLCJjb3VudGVyX3NpZ19vZl9jb3VudGVyIiwiYyIsImxvYyIsImkiLCJjb3VudGVyX3NpZ19kZWZhdWx0IiwiY291bnRlcl9zaWdfbWluIiwibG9jJDAiLCJpJDAiLCJjb3VudGVyX3NpZ19tYXgiLCJmbGlwX2xhYmVsIiwic3RyIiwibm9fbW9yZV9zaXRlX29uX3JpZ2h0IiwiZXJyb3IiLCJsZWZ0IiwicmlnaHQiLCJwIiwicCQwIiwicHJpbnRfY291bnRlcl90ZXN0IiwiZiIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJwcmludF9jb3VudGVyX21pbiIsInByaW50X2NvdW50ZXJfbWF4IiwicHJpbnRfY291bnRlciIsInRlc3QiLCJkZWx0YSIsInByaW50X2NvdW50ZXJfc2lnIiwibWluIiwiY291bnRlcl90ZXN0X3RvX2pzb24iLCJjb3VudGVyX3Rlc3Rfb2ZfanNvbiIsIngkMyIsImJ1aWxkX3BvcnRfb2ZfanNvbiIsImZpbGVuYW1lcyIsIm4iLCJsIiwibW9kX2wiLCJtb2RfaSIsInBvcnRfaW50X21vZCIsInBvcnRfaW50IiwibSQxIiwiaSQxIiwibSQyIiwicG9ydF9pbnRfbW9kJDAiLCJwb3J0X2ludCQwIiwibCQwIiwicG9ydF9saW5rX21vZCIsInBvcnRfbGluayIsIm0iLCJsJDEiLCJtJDAiLCJwb3J0X2xpbmtfbW9kJDAiLCJwb3J0X2xpbmskMCIsInNpdGVfc2lnX29mX2pzb24iLCJuJDIiLCJuJDAiLCJuJDEiLCJkZWZhdWx0JDAiLCJtYXgiLCJuJDMiLCJzaXRlX29mX2pzb24iLCJkIiwidCIsImNvdW50ZXJfdG9fanNvbiIsImNvdW50ZXJfc2lnX3RvX2pzb24iLCJwcmludF9hZ2VudF9tb2QiLCJwcmludF9hc3RfYWdlbnQiLCJhZ2VudF9uYW1lIiwiYWdlbnRfbW9kX29mX3lvanNvbiIsImFnZW50X3RvX2pzb24iLCJuYSIsImFnZW50X29mX2pzb24iLCJzIiwicyQwIiwiYWdlbnRfb2ZfanNvbiQwIiwiYWdlbnRfdG9fanNvbiQwIiwicHJpbnRfYXN0X21peCIsInBvcyIsInRvX2VyYXNlZF9taXh0dXJlIiwidG9fY3JlYXRlZF9taXh0dXJlIiwidG9fZHVtbXlfdXNlcl9zaXRlIiwiY291bnRlcl9uYW1lIiwicG9ydF9uYW1lIiwic3QiLCJzaSIsInR5IiwidG9fZHVtbXlfdXNlcl9hZ2VudCIsInNldHVwX2xpbmsiLCJ2YSIsInNpdGUiLCJyb3ciLCJsaW5lIiwibm9kZV9zaXRlcyIsIm1peHR1cmVfdG9fdXNlcl9ncmFwaCIsIm91dCIsImFjYyIsImlkIiwiYWNjJDAiLCJ2YSQwIiwiYWNjJDEiLCJwcmludF9vbmVfc2l6ZSIsInRrIiwibWl4IiwicHJfdmFyIiwicHJfdG9rIiwicHJfbWl4IiwibmIiLCJwcmludF9hcnJvdyIsImJpZGlyIiwicHJpbnRfYXN0X2FsZ19leHByIiwicHJpbnRfcmF0ZXNfb25lX2RpciIsInVuIiwiZGVmIiwibWF4X2Rpc3QiLCJtZCIsInByaW50X3J1bGVfY29udGVudCIsImJpZGlyZWN0aW9uYWwiLCJyIiwiciQwIiwicHJpbnRfYXN0X3J1bGUiLCJwcmludF9jb25maWd1cmF0aW9uIiwicHJpbnRfaW5pdCIsInByaW50X2FzdF9ib29sX2V4cHIiLCJwcmludF9wcmludF9leHByIiwiYXV4IiwiYWxnIiwiZSIsInByaW50X21vZGlmIiwicmF3IiwiZmlsZSIsIm9uIiwicCQxIiwib24kMCIsInAkMiIsImsiLCJwJDMiLCJwJDQiLCJvbiQxIiwicHJpbnRfcGVydHVyYmF0aW9uIiwicmVwIiwibW9kaWYiLCJjb25kIiwiYWxhcm0iLCJwcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSIsInJ1bGVfdG9fanNvbiIsImZfbWl4IiwiZl92YXIiLCJyJDEiLCJtaXhfdG9fanNvbiIsInJ1bGVfb2ZfanNvbiIsIm1peF9vZl9qc29uIiwibW9kaWZfb2ZfanNvbiIsImV4cHIiLCJmaWxlJDAiLCJmaWxlJDEiLCJmaWxlJDIiLCJiJDAiLCJpZCQwIiwiYiQxIiwiYiQyIiwiYWxnJDAiLCJ5IiwibWVyZ2VfaW50ZXJuYWxzIiwibWVyZ2Vfc2l0ZXNfY291bnRlciIsImgiLCJjJDAiLCJtZXJnZV9zaXRlc19wb3J0IiwiaCQwIiwieF9vcCIsInQkMCIsIm1lcmdlX3NpdGVzIiwiY28iLCJuYSQwIiwibWVyZ2VfYWdlbnRzIiwidG9rIiwibyIsIm1lcmdlX3Rva2VucyIsInRva3MiLCJhZ3MiLCJzaWdfZnJvbV9pbml0cyIsInNpZ19mcm9tX3J1bGUiLCJ0b2tzJDEiLCJhZ3MkMCIsInNpZ19mcm9tX3J1bGVzIiwic2lnX2Zyb21fcGVydHMiLCJpbmZlcl9hZ2VudF9zaWduYXR1cmVzIiwic3BsaXRfbWl4dHVyZSIsInJocyIsImxocyIsImFnIiwicGFjayIsImludGYiLCJwb3MkMCIsImludGZyIiwiaW50ZmwiLCJyciIsImxsIiwiY29tcGlsX3RvX2pzb24iLCJmaWxlcyIsIm1hcCIsInZhcl90b19qc29uIiwicG9zdCIsInByZSIsImNvbXBpbF9vZl9qc29uIiwidmFyX29mX2pzb24iLCJ3cml0ZV9wYXJzaW5nX2NvbXBpbCIsImFzdCIsInJlYWRfcGFyc2luZ19jb21waWwiLCJsYiIsInByaW50X2FzdF9taXgkMCIsImNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXAiLCJsczEiLCJsczIiLCJjcyIsImRzIiwidXBkYXRlX3JhdGUiLCJjb3VudGVyX3Zhcl92YWx1ZXMiLCJ1cGRhdGVfYm9vbF9leHByIiwiYTIiLCJrMiIsImExIiwiazEiLCJvcCIsImskMCIsIm9wJDAiLCJhMiQwIiwiazIkMCIsImExJDAiLCJrMSQwIiwib3AkMSIsInVwZGF0ZV9leHByIiwiYTMiLCJrMyIsImExJDEiLCJrMSQxIiwiazIkMSIsImExJDIiLCJrMSQyIiwidmFyX3ZhbHVlIiwiY291bnRlcnNfbWF0Y2hpbmdfcyIsIm5hbWVfbWF0Y2giLCJoYXNfY291bnRlcnMiLCJjb21waWwiLCJzaXRlcyIsInNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fcyIsIndhcm5pbmciLCJkZWJ1Z19tb2RlIiwic2lnbmF0dXJlcyIsInJ1bGVzJDEiLCJzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwiLCJpZHMiLCJjb3VudGVyX2RlZnMiLCJjb3VudGVyIiwiY291bnRlcl9kZWYiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJ2YWx1ZSIsImFubm90IiwidmFsdWUkMCIsInZhcl9uYW1lIiwiYW5ub3QkMCIsImNvdW50ZXJfZGVsdGEiLCJtYXhfbG9jIiwibWluX2xvYyIsIm1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbCIsInZhbHVlJDEiLCJjb3VudGVyX2RlbHRhJDAiLCJzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwkMCIsInNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbCQxIiwiYXN0X2FnZW50Iiwic2l0ZXMkMCIsInNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbCIsInZhcl92YWx1ZXMiLCJ1cGRhdGVfb3B0X3JhdGUiLCJ1cGRhdGVfcGFpcl9yYXRlIiwicjIiLCJyMSIsImNoZWNrX3N5bnRheCIsInByZXBhcmVfbGhzX3J1bGUiLCJyc2l0ZXMiLCJybmEiLCJsc2l0ZXMkMCIsImxuYSIsInByZXBhcmVfc2l0ZSIsInRsIiwiaGQiLCJyc2l0ZSIsImNvdW50ZXJzIiwibHNpdGVzIiwibGFnZW50JDAiLCJsc2l0ZXMkMSIsImxhZ2VudCIsInJ1bGUiLCJjb250ZW50IiwicnVsZXMiLCJydWxlX2Fubm90ZWQiLCJydWxlX25hbWUiLCJtaXhfbGhzIiwiY29udGVudCQwIiwicl9rX29wX3VuX3JhdGVzIiwicl9rdW5fcmF0ZXMiLCJleHByc19mcm9tX3JhdGVzIiwiYXV4X2V4cHIiLCJleHByJDAiLCJleHByJDEiLCJleHByJDIiLCJleHByJDMiLCJhY2MkMiIsImF1eF9ib29sIiwiZXhwcl9vcHQiLCJtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3YiLCJrX2RlZiIsImtfdW4iLCJrX29wIiwia19vcF91biIsImxocyQwIiwibmV3X3J1bGVfbmFtZSIsImNvdW50ZXJzX2lkc19hc19zdHJpbmciLCJsb2NhbGl0eSIsInJ1bGVfbmFtZV9zdHJpbmciLCJydWxlcyQwIiwibGFiZWwiLCJhZGRfaW5jciIsImZpcnN0X2xpbmsiLCJsYXN0X2xpbmsiLCJlcXVhbCIsInNpZ3MiLCJpc19maXJzdCIsImlzX2xhc3QiLCJqIiwiY291bnRlcl9hZ2VudF9pbmZvIiwicG9ydF9hIiwicG9ydF9iIiwicG9ydHMiLCJpbnRlcm5hbHMiLCJiZWZvcmUiLCJhZnRlciIsInJhd19pbmNyIiwibGlua19pbmNyIiwiYWdfaW5mbyIsImxpbmsiLCJjcmVhdGVkIiwicmFfZXJhc2VkIiwiZHN0IiwicmFfdHlwZSIsInJhX3BvcnRzIiwiYmVmb3JlX3N3aXRjaCIsInJhX2ludHMiLCJyYV9hZ2VudCIsImVyYXNlX2luY3IiLCJpbmNycyIsImluY3JfcyIsImluY3IiLCJydWxlX2FnZW50IiwiY29tcGlsZV9jb3VudGVyX2luX3J1bGUiLCJjb3VudGVyc19pbmZvIiwicnVsZV9hZ2VudCQwIiwicmF3X2FnZW50Iiwib2siLCJsbmtfbmIiLCJsbmtfbmIkMCIsImNyZWF0ZWRfaW5jciIsIm1peF9pbmNyIiwiY291bnRlcnNfZGVmcyIsInBvcnRfaWQiLCJzdGFydF9saW5rX25iIiwiYWNjX2luY3JzIiwiY291bnRlcl9zaWciLCJyYSIsImxvY19kZWx0YSIsImNvdW50ZXJfdGVzdCIsImokMCIsInN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQiLCJsaW5rX2Zvcl9lcmFzZWQiLCJ0ZXN0X2luY3IiLCJhZGp1c3RfZGVsdGEiLCJzd2l0Y2gkMCIsIm5ld19saW5rX25iIiwibmV3X2luY3JzIiwiYmxzIiwiYWxzIiwiY3JlYXRlZF9pbmNyX25ldyIsIm1peF9pbmNyX25ldyIsImluY3JzX2NyZWF0ZWQiLCJyYXdfYWdlbnQkMCIsImFnZW50X25hbWUkMCIsImNvcnJlY3RlZF9qIiwiZmluYWxfbG5rX25iIiwiaW5jcnNfY3JlYXRlZCQwIiwicnVsZV9hZ2VudF9taXgiLCJyYXdfbWl4IiwiY291bnRlcnNfcGVydHVyYmF0aW9ucyIsImFzdF9zaWdzIiwiYWdlbnRfdHlwZSIsImZpbGVuYW1lIiwic3RvcF9tZXNzYWdlIiwibW9kcyIsImxvY19hZyIsImFnX2lkIiwic2lnbiIsImFyaXR5IiwiY19uYSIsImNfaWQiLCJtYXhfdmFsIiwidmFsX29mX2NvdW50ZXIiLCJtYWtlX2NvdW50ZXIiLCJuYW1lIiwiYWRkX2NvdW50ZXJfdG9fY29udGFjdF9tYXAiLCJhZGRfbGlua19jb250YWN0X21hcCIsImFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMiLCJhc3RfY291bnRlcnMiLCJyYV9jb3VudGVycyIsInBzZXQiLCJwc2V0JDAiLCJhbm5vdGF0ZV9lZGl0X2NvdW50ZXJzIiwiYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIiwibGMiLCJyYyIsImNzZXQiLCJjc2V0JDAiLCJyYyQwIiwiYyQxIiwicmNfciIsImFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMiLCJjb3VudGVyX2xpc3QiLCJhZ2VudF9pZCIsImFnZW50X3NpZ25hdHVyZSIsImNvdW50ZXJfaW5mbyIsImNvbnZlcnRfdmFsdWUiLCJjb252ZXJ0X2RlbHRhIiwibWFwX29wdCIsIm9wdCIsInJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCIsImJ1aWxkX2xfdHlwZSIsImRzdF90eSIsImRzdF9wIiwidHlfaWQiLCJwX2lkIiwiY29udGFjdF9tYXAiLCJzdHkiLCJzcCIsImR0eSIsImRwIiwiY29udGFjdF9tYXAkMCIsInNsIiwiZGwiLCJkaSIsInJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIiwic29ydCIsIndhcm5pbmdfZm9yX2NvdW50ZXJzIiwic2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIiwiYWdfdHkiLCJidWlsZF9saW5rIiwid2Fybl9vbl9zd2FwIiwibGlua3NfdHdvIiwibGlua3Nfb25lIiwib25lJDAiLCJuZXdfbGluayIsIm9uZSIsInN3aXRjaCQxIiwiZHN0X2lkIiwibWFpbnRhaW5lZCIsImxpbmtfc3dhcCIsImFubm90YXRlX2Ryb3BwZWRfYWdlbnQiLCJzeW50YXhfdmVyc2lvbiIsInJfZWRpdF9zdHlsZSIsImxpbmtzX2Fubm90Iiwic2ltcGxlX3BvcnRfbGlzdCIsImxhbm5vdCIsInBfcG9zIiwicG9zJDUiLCJwb3MkMSIsInBvc19saW5rIiwicG9zJDIiLCJwb3J0X25hbWUkMCIsInBvcyQzIiwibGFubm90JDAiLCJwb3NfbGluayQwIiwicG9zJDQiLCJwb3J0X25hbWUkMSIsImFubm90YXRlX2NyZWF0ZWRfYWdlbnQiLCJyYW5ub3QiLCJyYW5ub3QkMCIsInRyYW5zbGF0ZV9tb2RpZmljYXRpb24iLCJ3YXJuX2luZm8iLCJyaHNfbGlua3MiLCJsaHNfbGlua3MiLCJzaXRlX25hbWUiLCJwb3NfaiIsInJoc19saW5rcyQwIiwiYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIiwibHAiLCJycCIsInJlZ2lzdGVyX3BvcnRfbW9kaWYiLCJsbmsxIiwicmhzX2xpbmtzJDEiLCJwb3MkNiIsIm5hJDEiLCJyaHNfbGlua3MkMiIsInBvcyQ3IiwiaSQyIiwibGhzX2xpbmtzJDIiLCJ2YSQxIiwibGhzX2xpbmtzJDAiLCJsaHNfbGlua3MkMSIsInJoc19saW5rcyQzIiwicG9zX2xpbmskMSIsImRzdF90eSQwIiwiZHN0X3AkMCIsInBvcyQxMSIsIm5hJDQiLCJwb3MkOCIsIm5hJDIiLCJwb3MkOSIsImkkMyIsInBvcyQxMCIsIm5hJDMiLCJyaHNfbGlua3MkNCIsImRzdF90eSQxIiwiZHN0X3AkMSIsInBvcyQxMiIsImkkNCIsInJoc19saW5rcyQ1IiwicmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYiLCJpbnQxIiwidmFwb3MiLCJ2YXBvcyQwIiwidmEkMiIsImFubm90ZWQiLCJycCQwIiwiYW5ub3RlZCQwIiwicnBfciIsInNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdSIsImxzIiwicHMiLCJmaW5hbF9ydWxlX3Nhbml0eSIsInJoc19saW5rc19vbmUiLCJsaHNfbGlua3NfdHdvIiwibGhzX2xpbmtzX29uZSIsInJhJDAiLCJtb2RzJDAiLCJ3YXJuaW5nJDAiLCJhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIiwic3ludGF4X3ZlcnNpb24kMSIsImxocyQ3IiwicmhzJDkiLCJyaHMkMCIsImxpbmtzX2Fubm90JDEiLCJlcmFzZWQiLCJhZGRlZCIsImxtb2QiLCJsYWdfcyIsImxwb3MiLCJsYWdlbnRfbmFtZSIsInJtb2QiLCJyYWdfcyIsInJwb3MiLCJyYWdlbnRfbmFtZSIsImxhZ19jIiwibGFnX3AiLCJyYWdfYyIsInJhZ19wIiwibGlua3NfYW5ub3QkMCIsImxhZyIsInJhZyIsImxsaW5rcyIsInJsaW5rcyIsImNtaXgiLCJzeW50YXhfdmVyc2lvbiQwIiwibGlua3NfYW5ub3QkNyIsImxpbmtzX2Fubm90JDYiLCJtaXgkMyIsImNtaXgkMiIsImxocyQ0IiwicmhzJDYiLCJsaHMkNSIsInJocyQ3IiwicmhzJDgiLCJsaHMkNiIsImxpbmtzX2Fubm90JDIiLCJtaXgkMCIsImNtaXgkMCIsImxocyQxIiwicmhzJDEiLCJsYWdlbnRfbmFtZSQwIiwibGhzJDIiLCJsbW9kJDAiLCJscG9zJDAiLCJyaHMkMyIsInJhJDEiLCJtaXgkMiIsImxpbmtzX2Fubm90JDQiLCJyaHMkMiIsInJtb2QkMCIsInJhZ19zJDAiLCJycG9zJDAiLCJyYWdlbnRfbmFtZSQwIiwibGFnX2MkMCIsImxhZ19wJDAiLCJyYWdfYyQwIiwicmFnX3AkMCIsImxpbmtzX2Fubm90JDMiLCJtaXgkMSIsImxocyQzIiwicmhzJDQiLCJybW9kJDEiLCJhZ2VudF90eXBlJDAiLCJjb3VudGVyX2xpc3QkMCIsInNpbXBsZV9wb3J0X2xpc3QkMCIsImNtaXgkMSIsImxpbmtzX2Fubm90JDUiLCJyaHMkNSIsImFubm90YXRlX2VkaXRfbWl4dHVyZSIsImlzX3J1bGUiLCJuZXdzIiwic2Nhbl9wb3J0IiwibW9kaWYkMCIsIm1vZGlmJDEiLCJtb2RpZiQyIiwibW9kaWYkMyIsInZhJDMiLCJtb2RpZiQ0IiwiaV9pZCIsIm1peHR1cmVfb2ZfYXN0IiwiY29udmVydF90b2tlbl9uYW1lIiwidGtfbmFtZSIsImFsZ19leHByX29mX2FzdCIsImFsZ3MiLCJtYXhfYWxsb3dlZF92YXIiLCJhJDAiLCJsYWIiLCJubyIsInllcyIsImJvb2xfZXhwcl9vZl9hc3QiLCJ0a19uYW1lJDAiLCJhc3QkMCIsInkkMCIsInByaW50X2V4cHJfb2ZfYXN0IiwiYXNzZW1ibGVfcnVsZSIsInJfY3JlYXRlZCIsInJfbWl4IiwiYWwiLCJyX2RlbHRhX3Rva2VucyIsInJfcmF0ZSIsImRpc3QiLCJ1bl9yYXRlIiwidW5fcmF0ZSQwIiwicl91bl9yYXRlIiwibW9kaWZfZXhwcl9vZl9hc3QiLCJhc3RfcnVsZSIsInJ1bGVfY29udGVudCIsImNyZWF0ZWRfbWl4IiwibWl4dHVyZSIsInJ1bGVfY29udGVudCQwIiwiY3JlYXRlZF9taXgkMCIsIm1peHR1cmUkMCIsImhvdyIsInJlbCIsInAkNSIsImFkZF91bl92YXJpYWJsZSIsInJhdGVfdmFyIiwiayQxIiwiYWNjX3VuIiwiYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfIiwiYnVpbGRfY29udGFjdF9tYXAiLCJhZ2VudF9zaWdzX3ByZSIsInNpemVfc2lncyIsImFnX25hbWUiLCJzaXRlX25hbWVfYWcxIiwic2l0ZV9zaWciLCJzaXRlX2xpbmtzIiwiYWcyX25hbWUiLCJzaXRlX25hbWVfYWcyIiwiYWcyX2lkIiwic2l0ZV9pZCIsInNob3VsZF9yYWlzZV9mb3JfbWlzc2luZ19saW5rIiwiaW5pdF9vZl9hc3QiLCJpbml0cyIsImluaSIsIndobyIsImludmVydGVkX2NvdW50ZXJfbmFtZSIsImNvbXBpbF9vZl9hc3QiLCJ2YXJfb3ZlcndyaXRlIiwiYXN0X2NvbXBpbCQwIiwiY291bnRlcl9mb2xkX2luX21peHR1cmUiLCJhY2MyIiwiYWdlbnRfbGlzdCIsImFjYzMiLCJhZ2VudCIsInNpdGVfbGlzdCIsImFjYzQiLCJjb3VudGVyX2ZvbGRfaW5fZXhwciQwIiwiZTEiLCJjb3VudGVyX2ZvbGRfaW5fZXhwciIsImUyIiwiZTEkMCIsImViIiwiY291bnRlcl9mb2xkX2luX2JleHByJDAiLCJiZXhwciIsImJleHByJDAiLCJiZXhwciQxIiwiYmUxIiwiY291bnRlcl9mb2xkX2luX2JleHByIiwiYmV4cHIkMiIsImNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQiLCJjb3VudGVyX2ZvbGRfaW5fcnVsZSIsInJ1bGUkMCIsImUkMCIsImUkMSIsImUkMiIsImFjYyQzIiwiZSQzIiwiYWNjJDQiLCJjb3VudGVyX2ZvbGRfaW5fcHJpbnQiLCJpbml0IiwibDEiLCJ2YXJpYWJsZV9kZWYiLCJsMiIsIm9ic19kZWYiLCJsMyIsImw0IiwicGVydHVyYmF0aW9uIiwiYjJfb3B0IiwibW9kX2xpc3QiLCJiMV9vcHQiLCJtb2RfZGVmIiwibCQyIiwiY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzIiwiYWdlbnRfbW9kIiwiY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fIiwiY291bnRlcl9vcmlnIiwiY291bnRlcl9zaWdfbmFtZSIsInVwZGF0ZSIsInJlZl9tYXgiLCJyZWZfbWluIiwiY29udmVydF9pbmZvIiwiY291bnRlcl9zaWdfdmlzaWJsZSIsIm1hcCQwIiwibmV3X2NvdW50ZXJfc2l0ZXMiLCJjb3VudGVyX2NvbnZlcnNpb25faW5mb19tYXAiLCJyZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IiwiY29udmVyc2lvbl9pbmZvIiwiY2x0ZV92YWx1ZV9vcl9ub25lIiwibmV3X3NpdGUiLCJvcmlnaW5hbF9jb3VudGVyX3NpdGUiLCJpbnZlcnRlZF9jb3VudGVyX3NpdGUiLCJzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMiLCJhZGRlZF9zaXRlcyIsIm5ld19zaXRlX2xpc3QiLCJhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X20iLCJtYXBfZXhwciIsIm1hcF9iZXhwciIsIm1hcF9ydWxlIiwicmV3cml0ZSIsInJ1bGVfZGVmIiwiaW5pdF9raW5kIiwicXVhbnRpdHlfYWxnX2V4cHIiLCJpbml0JDAiLCJ2YXJpYWJsZXMiLCJvYnNlcnZhYmxlcyIsIm1hcF9wcmludCIsIm1hcF9tb2RpZiIsImwkMyIsImEkMSIsImwkNCIsImwkNSIsImV4dCIsInBlcnR1cmJhdGlvbnMiLCJhc3RfY29tcGlsIiwiYWdlbnRfc2lnX2lzX2ltcGxpY2l0IiwiYXN0X2NvbXBpbCQxIiwiYXN0X2NvbXBpbCQyIiwiYWNjMCIsImFjYzEiLCJhY2NfY291bnRlcnNfcGVyX2FnZW50IiwiYWNjX3NpZ3MiLCJhY2NfY291bnRlcl9uYW1lcyIsImFjY19zaXRlX3NpZ3MiLCJhY2NfbGlua3MiLCJjb3VudGVyc19hZ2VudCIsInNpdGVfc2lnc19wcmVfbmFtZWRkZWNscyIsInNpdGVfc2lnc19uZCIsImNvdW50ZXJzX3Blcl9hZ2VudCIsInNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyIsInNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyQwIiwiY291bnRlcl9hZ2VudF9uYW1lIiwiYV9wb3J0X25hbWUiLCJiX3BvcnRfbmFtZSIsImFfcG9ydF9zaWciLCJjb3VudGVyc19mcm9tX2FnZW50IiwiYWdlbnRfY291bnRlcl9wb3J0X25hbWUiLCJiX2xpbmtzIiwiYl9wb3J0X3NpZyIsInNpdGVfc2lnc19jb3VudGVyX2FnZW50IiwiYWdlbnRfc2lncyIsImFnZW50c19zaWciLCJzaXplIiwiaW50ZXJmYWNlJDAiLCJyX3BvcyIsImxhYmVsX29wdCIsInByaW50ZXIiLCJzZXQiLCJzZXQkMCIsInNldCQxIiwicnVsZV9sYWJlbCIsInJ1bGVfbmFtZXMiLCJrX2RlZiQwIiwia19kZWYkMSIsInJhdGVfdmFyJDAiLCJyYXRlX3Zhcl91biIsImNyZWF0ZWRfbWl4JDEiLCJtaXh0dXJlJDEiLCJyYXRlX3Zhcl91biQwIiwia19vcF91biQwIiwiYWNjX3VuJDAiLCJjcmVhdGVkX21peCQyIiwibWl4dHVyZSQyIiwiY2xlYW5lZF9ydWxlcyIsImV4dHJhX3ZhcnMiLCJ2YXJzIiwidmFyJDAiLCJhY2NfdmFycyIsIm92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZyIsIm90aGVyX292ZXJ3cml0ZV92YXJzIiwibWF0Y2hzIiwidiIsImFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcCIsInJldl9hbGdfdmFycyIsInZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQiLCJhbGdfdmFyc193aXRoX3Jld3JpdHRlbl92YXJzIiwiYWxnX3ZhcnNfYXJyYXkiLCJhbGdfdmFyc19maW5kZXIiLCJ0b2tlbl9uYW1lcyIsInRva2Vuc19maW5kZXIiLCJ1cF92YXJzJDAiLCJ1cF92YXJzIiwidXBkYXRlZF9hbGdfdmFycyIsInBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzIiwicGVydHVyYmF0aW9ucyQwIiwidmFyaWFibGVzJDAiLCJvYnNlcnZhYmxlcyQwIiwiaW5pdCQxIiwieXlsaHMiLCJ5eWxlbiIsInl5ZGVmcmVkIiwieXlkZ290byIsInl5c2luZGV4IiwieXlyaW5kZXgiLCJ5eWdpbmRleCIsInl5dGFibGUiLCJ5eWNoZWNrIiwieXluYW1lc19jb25zdCIsInl5bmFtZXNfYmxvY2siLCJhZGRfcG9zIiwicmhzX3BvcyIsImVuZF9wb3MiLCJzdGFydF9wb3MiLCJpbnRlcm5hbF9tZW1vcnkiLCJhZGQiLCJ5eXRyYW5zbF9jb25zdCIsInl5dHJhbnNsX2Jsb2NrIiwieXl0YWJsZXNpemUiLCJ5eWFjdCIsImNhbWxfcGFyc2VyX2VudiIsIl8yIiwiXzEiLCJfNSIsIl8zIiwiXzciLCJfNCIsIl84IiwiYW4iLCJwZW5kIiwiXzkiLCJfMTEiLCJ6Iiwicm1fdG9rZW4iLCJhZGRfdG9rZW4iLCJkZWx0YV90b2tlbiIsIl82Iiwia2JhY2sxIiwia2JhY2siLCJwb3NfZW5kIiwiZXBhdCIsInBhdCIsInBlbmRwIiwicGF1c2UiLCJlZmYiLCJ5eXRhYmxlcyIsIm1vZGVsIiwibGV4ZnVuIiwibGV4YnVmIiwiaW50ZXJhY3RpdmVfY29tbWFuZCIsInN0YW5kYWxvbmVfZWZmZWN0X2xpc3QiLCJzdGFuZGFsb25lX2Jvb2xfZXhwciIsImFwcGVuZF90b19hc3RfY29tcGlsIiwicmV2X2luc3RyIiwic3RyX3BvcyIsInZvbF9wYXJhbSIsInZvbCIsInZvbF90eXBlIiwiaW5pdF90IiwidmFyJDEiLCJsYmwiLCJlZmZlY3QiLCJ2YWx1ZV9saXN0IiwicGFyYW1fbmFtZSIsInJ1Iiwib2NhbWxfbGV4X3RhYmxlcyIsImtleXdvcmRzIiwidG9rZW4iLCJvY2FtbF9sZXhfdG9rZW5fcmVjIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsImlubGluZV9jb21tZW50IiwicyQxIiwibGFiJDAiLCJzJDIiLCJhY2MkNSIsImFjYyQ2IiwieCQ0IiwiYWNjJDciLCJ4JDUiLCJhY2MkOCIsImFjYyQ5IiwiZXJyIiwiZXJyJDAiLCJjb21waWxlIiwibG9nZ2VyIiwiZmljIiwiY29tcGlsJDAiLCJtc2ciLCJ3cml0ZV9jYXRhbG9nX2l0ZW0iLCJvYiIsInBvc2l0aW9uIiwicmVhZF9jYXRhbG9nX2l0ZW0iLCJrZXkiLCJjb3VudCIsImNyZWF0ZSIsInB1dCIsInJhbmsiLCJjYXRhbG9nIiwiYWllIiwiZmlsZV9jcmVhdGUiLCJmaWxlX21vdmUiLCJmaWxlX3BhdGNoIiwiZmlsZV9kZWxldGUiLCJmaWxlX2dldCIsInBhcnNlIiwieWllbGQkMCIsInRleHQiLCJyYW5nZSIsImNvbXBpbGUkMCIsImV4biIsIm1lc3NhZ2UiLCJtZXNzYWdlJDAiLCJpbnN0cyIsIm92ZXJ3cml0ZSIsIml0Iiwic3RhcnRfcnVsZSIsInNwYWNlX2NoYXJzIiwicmVzZXRfZW9mIiwidG9rZW4kMCIsInJlYWRfbGFiZWwiLCJvY2FtbF9sZXhfc3RhdGUkMiIsIm9jYW1sX2xleF9zdGF0ZSQzIiwic3RyJDAiLCJjaGFyX2xpc3QiLCJyZXBseSIsIndyaXRlX3YiLCJ3cml0ZV9jYXRhbG9nX2l0ZW1zIiwibGlmdF9hbnN3ZXIiLCJvbl9tZXNzYWdlIiwiY3VycmVudF9pZCIsImFuc3dlciIsIm1zZ19pZCIsIm1zZ19pZCQwIiwibXNnX2lkJDEiLCJtc2dfaWQkMiIsIm91dCQ0IiwicG9zaXRpb24kMCIsImlkJDQiLCJjb250ZW50JDEiLCJvdXQkMyIsImlkJDMiLCJvdXQkMiIsImlkJDIiLCJvdXQkMSIsImlkJDEiLCJvdXQkMCIsImNvbXBpbGVfbW9kZV9vbiIsImRvbWFpbiIsImRvbWFpbiQwIiwiZG9tYWluJDEiLCJhJDIiLCJkb21haW4kMiIsImRvbWFpbiQzIiwib3JpZ2luIiwiY2NzIiwiZG9tYWluJDQiLCJvdXRfY2NzIiwiY29uZCQwIiwiZG9tYWluJDUiLCJ5ZXMkMCIsImRvbWFpbiQ2Iiwibm8kMCIsImRvbWFpbiQ3IiwiYSQzIiwiYSQ0IiwiY29tcGlsZV9wdXJlX2FsZyIsImNvbXBpbGVfYWxnIiwiY29tcGlsZV9ib29sIiwicnVsZXNfb2ZfYXN0IiwiZGVwc19tYWNoaW5lcnkiLCJzeW50YXhfcmVmIiwiYWxnX2V4cHIiLCJkZWx0YV90b2tzIiwiZGVwcyIsImNycCIsInJhdGUiLCJkJDAiLCJkJDEiLCJkaXN0JDAiLCJ1bnJhdGUiLCJ1bmFyeV9pbmZvcyIsImJvb2wiLCJvcmlnaW4kMCIsInJ1bGVfbWl4dHVyZXMiLCJkZXBzX2FsZ3MkMCIsIm5lZyIsInN5bnRheCIsImNjcyQwIiwidXIiLCJkZXBzX2FsZ3MiLCJydWxlc19sIiwibyQwIiwiZCQyIiwiZCQzIiwiY29tcGlsZV9wcmludF9leHByIiwiZXgiLCJlbCIsImFzdF9hbGciLCJlZmZlY3RzX29mX21vZGlmcyIsImFzdF9hbGdzIiwiYXN0X3J1bGVzIiwicmV2X2VmZmVjdHMiLCJhbGdfcG9zIiwiZWxlbV9ydWxlcyIsImVsZW1fcnVsZSIsImFsZ19leHByJDAiLCJhbGdfcG9zJDAiLCJwZXhwciIsInBleHByJDAiLCJwZXhwciQxIiwicGV4cHIkMiIsInByaW50IiwicGV4cHIkMyIsInBleHByJDQiLCJwcmludCQwIiwidGVzdHMiLCJkb21haW4kOCIsInBleHByJDUiLCJwZXhwciQ2IiwiZG9tYWluJDkiLCJwZXhwciQ3IiwicGV4cHIkOCIsImRvbWFpbiQxMCIsInBleHByJDkiLCJwZXhwciQxMCIsImRvbWFpbiQxMSIsImNjcyQxIiwiZG9tYWluJDEyIiwiYXJyIiwiY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIiwiY29tcGlsZV9pbml0cyIsInJlc2NhbGUiLCJlbnYiLCJwcmVlbnYiLCJtaXhfcG9zIiwiYWxnJDEiLCJwcmVlbnYkMCIsImZha2VfcnVsZSIsImNvbXBpbGVkX3J1bGUiLCJwcmVlbnYkMSIsInRrX2wiLCJ0a19pZCIsImZha2VfcnVsZSQwIiwiY29tcGlsZWRfcnVsZSQwIiwiaW5pdF9sIiwib3V0cHV0cyIsInJldHVybiQwIiwic2hhcmluZyIsIm92ZXJ3cml0ZV9pbml0Iiwib3ZlcndyaXRlX3QwIiwicmVzY2FsZV9pbml0Iiwic2lnc19uZCIsInRrX25kIiwicmVzdWx0IiwibGJsX3BvcyIsImFsZ19hIiwiYWxnX25kIiwiYWxnX2RlcHMiLCJjciIsImZkb21haW4iLCJmcnVsZXMiLCJmYWxnX2RlcHMiLCJjb21waWxlZF9ydWxlcyIsImFsZ19kZXBzJDAiLCJydWxlX25kIiwib3B0X3Bvc3QiLCJtb2RpZl9leHByX2xpc3QiLCJwcmVfZXhwciIsInRyYWNraW5nX2VuYWJsZWQiLCJscGVydCIsInByZV9leHByJDAiLCJ0X3ZhciIsInQwIiwiZWZmZWN0cyIsInBvc3RfZXhwciIsInBvc3RfcG9zIiwiaGFzX3RyYWNraW5nIiwibmVlZHNfYmFja3RyYWNrIiwicmVwZWF0IiwicGVydCIsIm91dF9hbGdfZGVwcyIsImNvbnQiLCJvYnMiLCJkb21fc3RhdHMiLCJidWlsZF9pbml0aWFsX3N0YXRlIiwiYmluZCIsIndpdGhfdHJhY2UiLCJ3aXRoX2RlbHRhX2FjdGl2aXRpZXMiLCJyYW5kb21fc3RhdGUiLCJncmFwaDAiLCJzdGF0ZTAiLCJkb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIiwiZ3JhcGgiLCJzdGF0ZSIsImNjX3ByZWVudiIsImNjX3ByZWVudiQwIiwiZ3JhcGgkMCIsImVudiQwIiwiZmVudiIsImdyYXBoJDEiLCJlbnYkMSIsIm9zdGF0ZSIsIm9ncmFwaCIsIm9zdG9wIiwiZ2V0X3BhdXNlX2NyaXRlcmlhIiwiYnBvcyIsInBvc19iIiwiZmluZF9hbGxfZW1iZWRkaW5ncyIsInRyIiwiZHVtbXlfaW5zdGFuY2VzIiwicm9vdCIsImV4cGVydF9tb2RlIiwiY29tcGFyZSIsImQiLCJjIiwiYiIsImEiLCJjbXAiLCJwcmludCIsImZtdCIsIm1heF9sZXZlbF9vcHQiLCJiJDAiLCJzaG93X2xldmVsIiwibHZsIiwiYWNjZXB0X2xldmVsX2Rpc3BsYXkiLCJhY2NlcHRfbGV2ZWxfdXNlIiwibm9rZXkiLCJrIiwiY3V0X2xpc3QiLCJzIiwiZG9pdCIsImFjY3VtIiwicG9zIiwiaSIsInAiLCJsIiwibCQwIiwiaSQwIiwib3JkZXIiLCJvcmRlcmVkIiwiY2F0Iiwib2xkX2x2bCIsImFzc28iLCJjaGVjayIsIm9wdHMiLCJrZXkiLCJ0IiwiZiIsInByaW50X21zZyIsInByaW50X29wdGlvbiIsInZlcmJvc2UiLCJtc2ciLCJzcGVjIiwia2V5MiIsInIiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJzJDAiLCJyJDQiLCJyJDUiLCJsaXN0IiwibGlzdCQwIiwidGFpbCIsImgyIiwiaDEiLCJyJDYiLCJyJDciLCJ2IiwiciQ4IiwiciQ5IiwibCQxIiwicHJpbnRfaGVscCIsImhlYWRlciIsIm5iIiwiaGVhZGVyJDAiLCJsdmwkMCIsImx2bF9vcHQiLCJ4IiwidmVyYm9zZSQwIiwidmVyYm9zZSQxIiwicGFyc2VfbGlzdCIsIndpdGhfdGsiLCJ0aXRsZSIsImxvbmdfaGVscCIsInNob3J0X2hlbHAiLCJzaG93X3ZlcnNpb24iLCJhY2N1bSQwIiwicmVtIiwib3B0Iiwib3B0JDAiLCJhYSIsInJlbSQzIiwicmVtJDIiLCJyZW0kMSIsInYkMCIsInJlbSQ3IiwicmVtJDUiLCJyZW0kNCIsInJlbSQ2IiwicmVtJDgiLCJ2JDEiLCJyZW0kOSIsInYkMiIsInJlbSQxMyIsInJlbSQxMSIsInJlbSQxMCIsInJlbSQxMiIsInYkMyIsInJlbSQxNyIsInJlbSQxNSIsInJlbSQxNCIsInJlbSQxNiIsInYkNCIsInJlbSQyMiIsInJlbSQyMCIsInJlbSQxOCIsInYkNSIsInJlbSQxOSIsInJlbSQyMSIsInYkNiIsInJlbSQyNSIsInJlbSQyNCIsInJlbSQyMyIsInYkNyIsInJlbSQyOSIsInJlbSQyNyIsInJlbSQyNiIsInJlbSQyOCIsInJlbSQzMCIsInYkOCIsInJlbSQzMSIsInYkOSIsInJlbSQzMiIsInIkMTAiLCJ5IiwicmVtJDMzIiwidiQxMCIsInJlbSQzNCIsImwkMiIsInJlbSQzNSIsInYkMTEiLCJyZW0kMzYiLCJyZW0kMCIsImZpbGVuYW1lcyIsIngkMCIsInBhcnNlIiwiZGVmIiwiYXJncyIsImRhdGFfc2V0Iiwib3V0cHV0Iiwic2VtYW50aWNzIiwiaW50ZWdyYXRpb25fc2V0dGluZ3MiLCJtb2RlbF9yZWR1Y3Rpb24iLCJzdGF0aWNfYW5hbHlzaXMiLCJkZWJ1Z19tb2RlIiwiZGVmYXVsdCQwIiwiZGVmYXVsdF9ndWkiLCJkb192ZXJzaW9uIiwiZG9fZ2x1dHRvbnkiLCJjb3B5X2Zyb21fZ3VpIiwidF9ndWkiLCJvcHRpb25zX2dlbiIsIm9wdGlvbnMiLCJvcHRpb25zX2d1aSIsImUiLCJhdXgiLCJhY2N1IiwiYWNjdSQwIiwidmFyX3ZhbCIsImFjY3UkMSIsIm0iLCJvdXRwdXREaXJlY3RvcnkiLCJvdXRwdXREYXRhRmlsZSIsInBvaW50TnVtYmVyVmFsdWUiLCJ0aW1lIiwiZmljIiwiY3JlYXRlIiwiYmFyX3NpemUiLCJiYXJfY2hhciIsImZvciQwIiwicHBfbm90X251bGwiLCJwcF90ZXh0IiwiZGVsdGFfdCIsInRfciIsImV2ZW50IiwiZV9yIiwiZHQiLCJzdHJpbmciLCJhdXhfdGljayIsInNvbWV0aGluZyIsIm4iLCJzb21ldGhpbmckMCIsIm4kMCIsIm4kMSIsInRpY2siLCJlZmZpY2llbmN5Iiwibl90Iiwibl9lIiwicnVuIiwiY29tcGxldGVfcHJvZ3Jlc3NfYmFyIiwidCQwIiwib3V0cHV0RGlyTmFtZSIsIm1hcnNoYWxpemVkT3V0RmlsZSIsImNmbG93RmlsZU5hbWUiLCJmbHV4RmlsZU5hbWUiLCJta19kaXJfciIsIm92ZXJ3cml0ZV9wZXJtaXNzaW9uIiwicGF0aCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfZnJlc2giLCJuYW1lIiwiY29uY2F0X2xpc3QiLCJmYWN1bHRhdGl2ZSIsImV4dCIsIm5hbWUkMCIsInRtcF9uYW1lIiwiYmFzZSIsIm92ZXJfZmxhZyIsImZsYWdzIiwiYmFzZSQwIiwic2V0IiwiZXh0X29wdCIsImZuYW1lIiwiY2hlY2tfbm90X2V4aXN0cyIsImZpbGUiLCJmaWxlJDAiLCJhbnN3ZXIiLCJzZXRDaGVja0ZpbGVFeGlzdHMiLCJiYXRjaG1vZGUiLCJvdXRwdXRGaWxlIiwid2l0aF9jaGFubmVsIiwic3RyIiwiZGVzYyIsIndyYXBfZm9ybWF0dGVyIiwiZnIiLCJzZXRfZGlyIiwiZ2V0X2RpciIsInNldF9tYXJzaGFsaXplZCIsIndpdGhfbWFyc2hhbGl6ZWQiLCJzZXRfY2Zsb3ciLCJ3aXRoX2NmbG93X2ZpbGUiLCJvcGVuX3Rhc2tzX3Byb2ZpbGluZyIsIm9wZW5fYnJhbmNoX2FuZF9jdXRfZW5naW5lX3BybyIsInNldF9mbHV4Iiwibm1lIiwid2l0aF9mbHV4Iiwic3RyJDAiLCJ3aXRoX3NuYXBzaG90Iiwic2l6ZSIsImJvcmRlciQwIiwiYm9yZGVyIiwiZHVtbXlfdmFsdWVzIiwiY29sb3JzIiwic3R5bGVzIiwiZ3JhZHVhdGlvbl9zdGVwIiwiZHJhd19sIiwibWluX2dyYWRfbCIsInZhX21pbiIsInZhX21heCIsIm5icl9kZWx0YSIsImRlbHRhX3ZhIiwibmJfZ3JhZCIsImV4YWN0X3N0ZXAiLCJkZWx0YV9ncmFkIiwidmFfbWluJDAiLCJ2YV9tYXgkMCIsImRyYXciLCJoJDAiLCJ3JDAiLCJiX2giLCJ6ZXJvX3ciLCJiX29wIiwiaCIsInciLCJ2YSQwIiwidF9tYXgiLCJxIiwidmEiLCJ2YV9tYXgkMSIsInZhX21pbiQyIiwidF9tYXgkMSIsImRhdGFfdyIsImRhdGFfaCIsInRfbWF4JDIiLCJncmFkX3ciLCJuYl93IiwidmFfbWF4JDIiLCJncmFkX2giLCJuYl9oIiwidmFfbWluJDMiLCJ6ZXJvX2giLCJkcmF3X2Z1biIsInkkMCIsInBwX2xpbmUiLCJ0b19zdHJpbmciLCJzdGgiLCJ3aWR0aCIsInRvX2ZpbGUiLCJjaGFuIiwiZm9ybSIsInhsc3dlYWtGaWxlTmFtZSIsInhsc3N0cm9uZ0ZpbGVOYW1lIiwiZGVmYXVsdEV4dEFycmF5U2l6ZSIsImRlZmF1bHRHcmFwaFNpemUiLCJkZWZhdWx0TGlmdFNldFNpemUiLCJkZWZhdWx0SGVhcFNpemUiLCJkZWJ1Z19tb2RlT24iLCJ0aW1lX2luZGVwZW5kZW50IiwiYmxhY2tsaXN0X2V2ZW50cyIsImRvX2dsb2JhbF9jdXQiLCJjdXRfcHNldWRvX2ludmVyc2VfZXZlbnQiLCJkb19sb2NhbF9jdXQiLCJkb19kZXRlY3Rfc2VwYXJhYmxlX2NvbXBvbmVudHMiLCJsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IiwibG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0IiwibG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MiLCJkdW1wX2dyaWRfYmVmb3JlX3dlYWtfY29tcHJlc3MiLCJkdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmUiLCJkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmkiLCJkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmkkMCIsImdldF9jYWNoZV9zaXplIiwicHJpbnRfZGVzYyIsInNwZWNpZXNfZGVzYyIsInV1aWQiLCJnZXRfZGVzYyIsInRibCIsImRfY2hhbiIsImFjdHNEZXNjciIsImVtcHR5QWN0cyIsInBsb3REZXNjciIsInRyYWNlRGVzY3IiLCJ0cmFjZU5vdEVtcHR5IiwiaW5pdGlhbGl6ZSIsImFjdGl2aXRpZXNfZmlsZSIsInRyYWNlX2ZpbGUiLCJwbG90UGFjayIsImVudiIsImRlc2MkMCIsIm5vQ291bnRlcnMiLCJuYl9yIiwicGFjayIsIndhcm5pbmdfYnVmZmVyIiwiZ28iLCJmbHV4IiwiZGluX25hbWUiLCJmbHV4JDAiLCJsYXN0IiwiayQwIiwiaGVhZCIsImZpbGVuYW1lIiwiZm9ybWF0IiwiaXNfdHN2IiwiZmQiLCJwJDAiLCJzdGVwIiwiZCQwIiwicyQxIiwibWl4dHVyZSIsImZpbGUkMSIsImlucHV0c0Rlc2MiLCJmbHVzaF93YXJuaW5nIiwiY2xvc2UiLCJldmVudCQwIiwicGxvdCIsImlucHV0cyIsImluaXRpYWxfaW5wdXRzIiwiY29uZiIsImluaXQiLCJpbnB1dHNfZm9ybSIsImlucHV0X21vZGlmaWNhdGlvbnMiLCJtb2RzIiwibG9nRmlsZSIsInRyYWNlRmlsZSIsImRvbWFpbk91dHB1dEZpbGUiLCJtYXJzaGFsaXplT3V0RmlsZSIsInRtcF92YXJfbmFtZSIsInByZXByb2Nlc3NfYXN0Iiwid2FybmluZyIsImthc2ltX2FyZ3MiLCJjbGlfYXJncyIsImFzdCIsImNmbG93RmlsZSIsImZvcm1hdENmbG93Iiwic3RvcnlfY29tcHJlc3Npb24iLCJzeW50YXhfdmVyc2lvbiIsImthc2ltX2FyZ3MkMCIsImluaXRpYWxNaXgiLCJ2YXJfb3ZlcndyaXRlIiwiYXN0X2NvbXBpbGVkX2RhdGEiLCJjb21waWwiLCJjb25mJDAiLCJvdmVyd3JpdGVfdDAkMCIsIm92ZXJ3cml0ZV9pbml0IiwiZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMiLCJmaWxlX2xpc3QiLCJjb21waWxpbmdfZnVuY3Rpb24iLCJnZXRfYXN0X2Zyb21fY2xpX2FyZ3MiLCJnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV8iLCJnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3QiLCJjb21waWxlX21vZGVfb24iLCJwcmVwcm9jZXNzZWRfYXN0IiwiaW5pdF9sIiwiaGFzX3RyYWNraW5nIiwiZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayIsImluaXRfdF9mcm9tX2ZpbGVzIiwicGxvdF9wZXJpb2QkMCIsIm1heF9ldmVudCQwIiwiaW5pdF9lIiwibWF4X3RpbWUiLCJpbml0X3QiLCJhJDAiLCJwbG90X3BlcmlvZCQxIiwibWF4X3RpbWUkMCIsImluaXRfdCQwIiwiY291bnRlciIsImdldF9jb21waWxhdGlvbl9mcm9tX3ByZXByb2NlcyIsInN0aCQwIiwiZ2V0X2NvbXBpbGF0aW9uIiwibWFyc2hhbGl6ZWRfZmlsZSIsImNvbXBpbGF0aW9uX3Jlc3VsdCIsImFsZ19vdmVyd3JpdGUiLCJvdmVyd3JpdGVfdDAiLCJyYXdfaW5pdHMiLCJlJDAiLCJkJDEiLCJlcnJvcl9tc2ciLCJhZ2VudCIsImNvbnRhY3RtYXAiLCJhY2N1cmFjeV9zdHJpbmciLCJkZWFkX3J1bGVzIiwiZGVhZF9hZ2VudHMiLCJtYXAiLCJpbnRlcmZhY2UkMCIsInNpdGUiLCJzdGF0ZXNsaXN0Iiwic2l0ZW5hbWUiLCJzaXRldHlwZSIsInNpdGVsaW5rcyIsInNpdGVzdGF0ZXMiLCJzaXRlbm9kZW5hbWUiLCJzaXRlbm9kZWlkIiwic2l0ZW5vZGVzaXRlcyIsImh5cCIsInJlZmluZW1lbnQiLCJkb21haW5fbmFtZSIsInJlZmluZW1lbnRzX2xpc3QiLCJyZWZpbmVtZW50X2xlbW1hcyIsInJ1bGVfaWQiLCJhZ2VudF9pZCIsImxhYmVsIiwiYXN0IiwicG9zaXRpb24iLCJwb3NpdGlvbl9saXN0IiwidmFyaWFibGUiLCJydWxlIiwiZGlyZWN0Iiwic2lkZV9lZmZlY3QiLCJzb3VyY2UiLCJ0YXJnZXRfbWFwIiwidGFyZ2V0IiwibG9jYXRpb25fcGFpcl9saXN0IiwicmhzIiwibGhzIiwiaW5mbHVlbmNlbWFwIiwibm9kZXNvZmluZmx1ZW5jZW1hcCIsIndha2V1cCIsImluaGliaXRpb24iLCJub2RlcyIsInRvdGFsX3N0cmluZyIsImZ3ZF9zdHJpbmciLCJid2Rfc3RyaW5nIiwib3JpZ2luIiwiZGlyZWN0aW9uIiwicnVsZV9oaWRkZW4iLCJzY2MiLCJhY2N1cmFjeV9jbSIsImFjY3VyYWN5X3NjYyIsImNvbnRhY3RtYXBzY2MiLCJjb3VudGVyIiwiaW5mIiwic3VwIiwia2V5IiwibG9jYWxpdHkiLCJhY2N1cmFjeV9sZXZlbHMiLCJjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbHMiLCJpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVscyIsInJlZHVjdGlvbl9hY2N1cmFjeV9sZXZlbHMiLCJmcmVlIiwid2lsZGNhcmQiLCJib3VuZCIsImJvbmRfaWQiLCJib3VuZF90byIsImJpbmRpbmdfdHlwZSIsInByb3AiLCJiaW5kIiwiYmluZGluZ190eXBlX2JhY2tlbmRfc3ltYm9sIiwiZnJlZV9iYWNrZW5kX3N5bWJvbCIsIm1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfcyIsIndpbGRjYXJkX2JhY2tlbmRfc3ltYm9sIiwiYm91bmRfdG9fdW5rbm93bl9iYWNrZW5kX3N5bWJvIiwiaW50ZXJuYWxfc3RhdGVfaW50cm9kdWN0aW9uX2JhIiwiaW50ZXJuYWxfc3RhdGVfZGVsaW1pdGVyX2JhY2tlIiwiYmluZGluZ19zdGF0ZV9kZWxpbWl0ZXJfYmFja2VuIiwiYmluZGluZ19zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfIiwiYmluZGluZ19zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfIiwiaW50ZXJuYWxfc3RhdGVfb3BlbmluZ19iYWNrZW5kIiwiaW50ZXJuYWxfc3RhdGVfY2xvc2luZ19iYWNrZW5kIiwiY291bnRlcl9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfIiwiY291bnRlcl9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfIiwiY291bnRlcl9zdGF0ZV9yYW5nZV9iYWNrZW5kX3N5Iiwib3Blbl9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sIiwiY2xvc2VfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvIiwib3Blbl9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sIiwiY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvIiwicGx1c19pbmZpbml0eV9zeW1ib2wiLCJtaW51c19pbmZpbml0eV9zeW1ib2wiLCJhY2N1cmFjeV90b19zdHJpbmciLCJhY2N1cmFjeV90b19qc29uIiwieCIsImFjY3VyYWN5X29mX3N0cmluZyIsImFjY3VyYWN5X29mX2pzb24iLCJqc29uIiwiY29tcGFyZSIsImEiLCJiIiwicHJpbnQiLCJmIiwic2l0ZV90b19qc29uIiwicCIsImwiLCJ5IiwieHIiLCJ4bCIsInR5Iiwic2kiLCJpIiwic2l0ZV9vZl9qc29uIiwibCQwIiwianNvbiQxIiwic2l0ZV9uYW1lIiwianNvbiQyIiwicG9ydF9saW5rcyIsImpzb24kMCIsInBvcnRfc3RhdGVzIiwic2l0ZV90eXBlIiwic2l0ZV9ub2RlX3NpdGVzX29mX2pzb24iLCJzaXRlX25vZGVfdG9fanNvbiIsIm5vZGUiLCJsaXN0Iiwic2l0ZV9ub2RlX29mX2pzb24iLCJub2RlX2lkIiwibm9kZV90eXBlIiwibm9kZV9zaXRlcyIsImNvbnRhY3RfbWFwX3RvX2pzb24iLCJjb250YWN0X21hcCIsImNvbnRhY3RfbWFwX29mX2pzb24iLCJzdHJpbmdfcGFpcl90b19qc29uIiwic3RyaW5nX3BhaXJfb2ZfanNvbiIsInN0cmluZ19wYWlyX3BhaXJfdG9fanNvbiIsInN0cmluZ19wYWlyX3BhaXJfb2ZfanNvbiIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF90b19qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF90b18iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF9vZl8iLCJzY2NfdG9fanNvbiIsInNjY19hY2MiLCJjbV9hY2MiLCJzY2Nfb2ZfanNvbiIsInJ1bGVfdG9fanNvbiIsImQiLCJqc29uX3RvX3J1bGUiLCJzIiwidmFyX3RvX2pzb24iLCJ2YXIkMCIsImpzb25fdG9fdmFyIiwiaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsImkkMCIsImluZmx1ZW5jZV9ub2RlX29mX2pzb24iLCJzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIiwic2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsImxvYyIsInBvc19vZl9ydWxlc19hbmRfdmFyc190b19qc29uIiwicG9zX29mX3J1bGVzX2FuZF92YXJzX29mX2pzb24iLCJzaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSIsInBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlXyIsInIiLCJ2IiwiY29tcGFyZSQwIiwicHJpbnQkMCIsInIkMCIsImR1bXBfbG9jYXRpb24iLCJmbXQiLCJpbnQkMCIsImludCQxIiwiZHVtcF9sb2NhdGlvbl9wYWlyIiwiZHVtcF9sb2NhdGlvbl9wYWlyX2xpc3QiLCJzdHJpbmdfb2ZfbGFiZWxfbGlzdCIsImxvY2F0aW9uX3RvX2pzb24iLCJsb2NhdGlvbl9vZl9qc29uIiwib3B0Iiwic3RoIiwiaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiIsIm5vZGVzX2xpc3RfdG9fanNvbiIsIm5vZGVzX2xpc3Rfb2ZfanNvbiIsImluZmx1ZW5jZV9tYXBfdG9fanNvbiIsImluZmx1ZW5jZV9tYXAiLCJub2Rlc19vZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJub2Rlc19saXN0Iiwibm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uIiwibG9jYWxfaW5mbHVlbmNlX21hcF90b19qc29uIiwiaW5mbHVlbmNlX21hcCQwIiwib3JpZ2luX29wdCIsImZ3ZCIsImJ3ZCIsInRvdGFsIiwiYWNjdXJhY3kiLCJpbmZsdWVuY2VfbWFwX29mX2pzb24iLCJsb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24iLCJlcnJvcl9tc2ckMCIsIm9yaWdpbiQwIiwieCQwIiwibCQxIiwiZGVhZF9ydWxlc190b19qc29uIiwiZGVhZF9ydWxlc19vZl9qc29uIiwianNvbl90b19hZ2VudF9raW5kIiwiYWdlbnRfa2luZF90b19qc29uIiwiYWdlbnRfa2luZCIsImpzb25fb2ZfZGVhZF9hZ2VudHMiLCJqc29uX3RvX2RlYWRfYWdlbnRzIiwic2VwYXJhdGluZ190cmFuc2l0aW9uc190b19qc29uIiwic2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIiwibGVtbWFfdG9fanNvbiIsInNpdGVfZ3JhcGhfdG9fanNvbiIsImxlbW1hX29mX2pzb24iLCJzaXRlX2dyYXBoX29mX2pzb24iLCJnZXRfaHlwIiwiaCIsImdldF9yZWZpbmVtZW50Iiwic3RyaW5nX29mX2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWUiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiYmluZGluZ19zdGF0ZV9saWdodF9vZl9qc29uIiwiaiIsImJpbmRpbmdfc3RhdGVfbGlnaHRfdG9fanNvbiIsImJvbmRfaW5kZXgiLCJjb3VudGVyX3N0YXRlX2xpZ2h0X29mX2pzb24iLCJjb3VudGVyX3N0YXRlX2xpZ2h0X3RvX2pzb24iLCJpbnRlcmZhY2VfbGlnaHRfdG9fanNvbiIsImludGYiLCJjIiwiayIsImludGVyZmFjZV9saWdodF9vZl9qc29uIiwibGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4iLCJpbnRlcmZhY2Vfb2ZfanNvbiIsImxlbW1hc19saXN0X29mX2pzb24iLCJsZW1tYXNfbGlzdF90b19qc29uX2dlbiIsImludGVyZmFjZV90b19qc29uIiwiY29uc3RyYWludHMiLCJsZW1tYXNfbGlzdF90b19qc29uIiwiY2xvc2VfY2VsbF9zeW1ib2wiLCJvcGVuX2NlbGxfc3ltYm9sIiwiY29tcGFyZSIsImJyZWFrYWJsZSIsIngiLCJnZXRfZW5jb2RpbmdfZm9ybWF0IiwidCIsImR1bW15X2h0bWxfbG9nZ2VyIiwiZHVtbXlfdHh0X2xvZ2dlciIsImR1bXBfY2xlYW5fc3RyaW5nIiwiZm10IiwiYSIsIm9wdCIsImxvZ2dlciIsInN0aCIsImZwcmludG5ld2xpbmUiLCJmcHJpbnRuZXdsaW5lJDAiLCJiIiwiZm10X2J1ZmZlciQwIiwic3RyIiwic3RyJDAiLCJidWZmZXIiLCJmbXRfYnVmZmVyIiwicyIsInByaW50X2JyZWFrYWJsZV9zcGFjZSIsInByaW50X2JyZWFrYWJsZV9oaW50IiwiZHVtcF90b2tlbiIsImYiLCJwcmludF9uZXdsaW5lIiwiYmYiLCJiZiQwIiwiYmYkMSIsImJmJDIiLCJwcmludF9jZWxsIiwiY2xvc2VfY2VsbF9zeW1ib2wkMCIsIm9wZW5fY2VsbF9zeW1ib2wkMCIsImZsdXNoX2xvZ2dlciIsImNsb3NlX2xvZ2dlciIsInByaW50X3ByZWFtYmxlIiwib3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIiwiY2hhbm5lbCIsIm1vZGUiLCJmb3JtYXR0ZXIiLCJvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciIsIm9wZW5fY2lyY3VsYXJfYnVmZmVyIiwic3RoJDAiLCJzaXplIiwib3Blbl9pbmZpbml0ZV9idWZmZXIiLCJvcGVuX3JvdyIsImNsb3NlX3JvdyIsImZvcm1hdHRlcl9vZl9sb2dnZXIiLCJyZWRpcmVjdCIsInByaW50X2FzX2xvZ2dlciIsImZsdXNoX2J1ZmZlciIsImZsdXNoX2FuZF9jbGVhbiIsImZwcmludGYiLCJjaGFubmVsX29mX2xvZ2dlciIsInByaW50X2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWUiLCJzaXRlX25hbWUiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiZHVtcF9qc29uIiwianNvbiIsImNoYW5uZWxfb3B0IiwibGluZV90b19qc29uIiwibGluZSIsImxpbmVfb2ZfanNvbiIsImdlbl9pdGVyIiwiaXRlciIsImxpc3QiLCJvdXRwdXQiLCJvZl9qc29uIiwidG9fanNvbiIsInN0cmluZ19vZl91bl9vcCIsIm9wIiwiZm9ybWF0Iiwic3RyaW5nX29mX2NvbXBhcmVfb3AiLCJzdHJpbmdfb2ZfYmluX29wIiwic3RyaW5nX29mX2Jpbl9ib29sX29wIiwic3RyaW5nX29mX3VuX2Jvb2xfb3AiLCJsaWZ0IiwidCIsImV4dGVuZF9sb2dnZXIiLCJsb2dnZXIiLCJyZWZyZXNoX2lkIiwiYWRkX25vZGUiLCJzIiwiZCIsImFkZF9lZGdlIiwiczEiLCJzMiIsIm1hcCIsImwiLCJvbGRfbGlzdCIsImdyYXBoX29mX2xvZ2dlciIsImdldF9lZGdlX21hcCIsImdldF9ub2RlcyIsImludF9vZl9zdHJpbmdfaWQiLCJzdHJpbmciLCJhIiwiaSIsImR1bW15X25vZGUiLCJkdW1teV9lZGdlIiwiaHRtbF9kZXBzIiwiZG90X2NvbG9yX2VuY29kaW5nIiwieCIsInN2Z19jb2xvcl9lbmNvZGluZyIsImlzX25vX25vZGVfYXR0cmlidXRlcyIsIm5vZGVfYXR0cmlidXRlIiwiYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCIsImJvb2wiLCJiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCIsInNoYWxsX0lfZG9faXQiLCJmb3JtYXQiLCJmaWx0ZXJfaW4iLCJmaWx0ZXJfb3V0IiwiYjEiLCJwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyIsImYiLCJ0aXRsZSIsInByaW50X2dyYXBoX3ByZWFtYmxlIiwib3B0Iiwic3RoIiwic3RoJDAiLCJzdGgkMSIsImhlYWRlciIsImZfb3B0IiwiZGVwZW5kZW5jeSIsImZfb3B0JDAiLCJmJDAiLCJzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCIsInN0eWxlIiwibWVyZ2UiLCJzJDAiLCJwcmludF9mb290X3NoYXJlZF9odG1sX2pzIiwibGlzdCIsImlkMiIsImlkMSIsImxpc3QkMCIsImlkMV9pbnQiLCJpZDJfaW50IiwiYXR0cmlidXRlcyIsIm9wdGlvbl9saXN0Iiwib3B0aW9uIiwicyQxIiwicyQyIiwicyQzIiwicyQ0IiwicyQ1IiwicyQ2IiwianNvbiIsInMkNyIsInMkOCIsInAiLCJhdHRyaWJ1dGVzJDAiLCJzdHJpbmdfbGlzdCIsImZtdCIsInNfb3B0Iiwic19vcHQkMCIsImJvb2wkMCIsImNvbG9yIiwiYm9vbCQxIiwiYm9vbCQyIiwiYm9vbCQzIiwicHJpbnRfZ3JhcGhfZm9vdCIsIm5vZGVzIiwiZWRnZXMiLCJzZXAiLCJiIiwib3B0aW9ucyIsImNvbG9yX3ZhbHVlIiwicHJpbnRfY29tbWVudCIsIm9wZW5fYXNzbyIsImNsb3NlX2Fzc28iLCJwcmludF9hc3NvIiwic3RyaW5nMSIsInN0cmluZzIiLCJzaGFwZV9pbl9kb3QiLCJzaGFwZSIsInN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCIsInByaW50X25vZGUiLCJpZCIsImRpcmVjdGl2ZXMiLCJpJDAiLCJpZF9pbnQiLCJzdHJpbmckMCIsInN0cmluZyQxIiwic2hhcGUkMCIsInN0cmluZyQyIiwic2hhcGUkMSIsImkkMSIsImkkMiIsImJvb2wkNCIsImJvb2wkNSIsImxhYmVsIiwicHJpbnRfZWRnZSIsInByZWZpeCIsImVkZ2VfYXR0cmlidXRlIiwiZGlyZWN0aW9uIiwiYXJyb3ciLCJwcmludF9vbmVfdG9fbl9yZWxhdGlvbiIsImlkbGlzdCIsInN0eWxlX29uZSIsInN0eWxlX24iLCJmaWN0aXRpb3VzIiwiZGlyZWN0aXZlc19maWN0IiwiZGlyZWN0aXZlc19vbmUiLCJkaXJlY3RpdmVzX24iLCJoZWFka2luZF90b19qc29uIiwiaGVhZGtpbmQiLCJjb2xvcl90b19qc29uIiwiZGlyZWN0aXZlX3RvX2pzb24iLCJjb2xvciQwIiwiaW50JDAiLCJpbnQkMSIsImhlYWRraW5kJDAiLCJsaW5lc3R5bGUiLCJkaXJlY3RpdmVzX3RvX2pzb24iLCJub2RlX3RvX2pzb24iLCJlZGdlX3RvX2pzb24iLCJub2Rlc190b19qc29uIiwiZWRnZXNfdG9fanNvbiIsInRvX2pzb24iLCJncmFwaCIsImhlYWRraW5kX29mX2pzb24iLCJjb2xvcl9vZl9qc29uIiwiZGlyZWN0aXZlX29mX2pzb24iLCJwb3NfbGlzdCIsImNvbnRleHR1YWxfaGVscCIsImRpcmVjdGl2ZXNfb2ZfanNvbiIsImlkX29mX2pzb24iLCJub2RlX29mX2pzb24iLCJlZGdlX29mX2pzb24iLCJub2Rlc19vZl9qc29uIiwiZWRnZXNfb2ZfanNvbiIsIm9mX2pzb24iLCJzeW1ib2xfdGFibGVfVjMiLCJzeW1ib2xfdGFibGVfVjQiLCJub3RfYnJlYWthYmxlIiwic3ltYm9sX3RhYmxlIiwic3ltYm9sX3RhYmxlX1YzX2xpZ2h0Iiwic3ltYm9sX3RhYmxlX2RvdG5ldCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WM19saSIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZSIsIndpdGhfZG90X2FuZF9wbHVzIiwiZW1wdHlfZW5naW5lX3N0YXRlIiwid2FrZV91cF9tYXAiLCJlcnJvciIsImVuZ2luZV9zdGF0ZSIsImVtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91biIsImV4bl90b19qc29uIiwieCIsIngkMCIsIngkMSIsIngkMiIsImMiLCJiIiwiYSIsImMkMCIsImIkMCIsImEkMCIsIngkMyIsIngkNCIsImNhdWdodF9leGNlcHRpb25fdG9fanNvbiIsIngkNSIsInVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJleG5fb2ZfanNvbiIsImpzb24iLCJsIiwibCQwIiwidW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24iLCJjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24iLCJidWlsZF91bmNhdWdodF9leGNlcHRpb24iLCJmaWxlX25hbWUiLCJtZXNzYWdlIiwiZXhuIiwiYnVpbGRfY2F1Z2h0X2V4Y2VwdGlvbiIsInN0YWNrIiwicmFpc2VfZXhjZXB0aW9uIiwia2V5IiwicHBfZXhjZXB0aW9uIiwiZiIsImV4YyIsInBwX3VuY2F1Z2h0IiwicHBfY2F1Z2h0Iiwid2l0aF9zcGFjZSIsInN0cmluZ2xpc3Rfb2ZfZXhjZXB0aW9uIiwic3RyaW5nbGlzdF9vZl9jYXVnaHQiLCJ4JDYiLCJzdHJpbmdsaXN0X29mX3VuY2F1Z2h0Iiwic29sIiwic3RyaW5nIiwic3RyaW5nbGlzdF9vZl9jYXVnaHRfbGlnaHQiLCJzdGFjayQwIiwidG9fanNvbiIsImV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCIsIm9mX2pzb24iLCJjYXVnaHRfdG9fdWkiLCJ1bmNhdWdodF90b191aSIsImFkZF91bmNhdWdodF9lcnJvciIsInRvX3VpIiwiZXJyb3IkMCIsImdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QiLCJnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3UiLCJnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QiLCJnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG8iLCJpc19lbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmQiLCJkYXRlIiwidmVyc2lvbiIsIm91dHB1dF9kaXJlY3RvcnkiLCJvdXRwdXRfY21fZGlyZWN0b3J5Iiwib3V0cHV0X2ltX2RpcmVjdG9yeSIsIm91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3RvcnkiLCJ1bnNhZmUiLCJ0cmFjZSIsInN5bnRheF92ZXJzaW9uIiwiZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjIiwibG9nIiwiZm9ybWF0dGVyIiwiZmlsZSIsImxpbmtfbW9kZSIsImRvX2luZmx1ZW5jZV9tYXAiLCJydWxlX3NoYXBlIiwicnVsZV9jb2xvciIsInZhcmlhYmxlX3NoYXBlIiwidmFyaWFibGVfY29sb3IiLCJjZW50ZXJfY29sb3IiLCJ3YWtlX3VwX2NvbG9yIiwiaW5oaWJpdGlvbl9jb2xvciIsIndha2VfdXBfYXJyb3ciLCJpbmhpYml0aW9uX2Fycm93IiwiaW5mbHVlbmNlX21hcF9maWxlIiwiaW5mbHVlbmNlX21hcF9mb3JtYXQiLCJwcm9tcHRfZnVsbF92YXJfZGVmIiwicHJvbXB0X2Z1bGxfcnVsZV9kZWYiLCJtYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG8iLCJkb19jb250YWN0X21hcCIsImRvX3NjYyIsInB1cmVfY29udGFjdCIsImNvbnRhY3RfbWFwX2ZpbGUiLCJjb250YWN0X21hcF9mb3JtYXQiLCJiaW5kaW5nX3NpdGVfc2hhcGUiLCJiaW5kaW5nX3NpdGVfY29sb3IiLCJpbnRlcm5hbF9zaXRlX3NoYXBlIiwiaW50ZXJuYWxfc2l0ZV9jb2xvciIsImNvdW50ZXJfc2l0ZV9zaGFwZSIsImNvdW50ZXJfc2l0ZV9jb2xvciIsImFnZW50X3NoYXBlX2FycmF5IiwiYWdlbnRfY29sb3JfYXJyYXkiLCJhZ2VudF9zaGFwZV9kZWYiLCJhZ2VudF9jb2xvcl9kZWYiLCJsaW5rX2NvbG9yIiwiaW5mbHVlbmNlX2NvbG9yIiwiaW5mbHVlbmNlX2Fycm93IiwiZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24iLCJkb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXQiLCJkb19zaXRlX2RlcGVuZGVuY2llcyIsImR1bXBfc2l0ZV9kZXBlbmRlbmNpZXMiLCJkb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMiLCJ2ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGkiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXMiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19jb3YiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGUiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGEiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW4iLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWYiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCIsImhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZSIsImhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydCIsInNtYXNoX3JlbGF0aW9ucyIsInVzZV9uYXR1cmFsX2xhbmd1YWdlIiwiY29tcHV0ZV9sb2NhbF90cmFjZXMiLCJzaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2UiLCJ1c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF8iLCJhZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMiLCJhZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMiLCJkb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmciLCJsb2NhbF90cmFjZV9wcmVmaXgiLCJsb2NhbF90cmFjZV9mb3JtYXQiLCJjb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMiLCJ3aXRoX3ZpZXdzX2FuYWx5c2lzIiwid2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpIiwid2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyIsIndpdGhfZHluYW1pY19jb250YWN0X21hcCIsIndpdGhfY291bnRlcnNfYW5hbHlzaXMiLCJjb3VudGVyX2FuYWx5c2lzX2RvbWFpbiIsInZpZXdfYWNjdXJhY3lfbGV2ZWwiLCJpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsIiwiY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwiLCJzY2NfYWNjdXJhY3lfbGV2ZWwiLCJkb19zeW1tZXRyaWVzIiwicmF0ZV9jb252ZW50aW9uIiwicHJpbnRfZWZmaWNpZW5jeSIsImJhY2tkb29yX25icl9vZl9zY2MiLCJiYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjIiwiYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzIiwiYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzIiwiYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMiLCJiYWNrZG9vcl9uYnJfb2ZfcnVsZXMiLCJiYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyIsImJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbiIsImJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldiIsImJhY2tkb29yX3RpbWluZyIsImJhY2tkb29yX2ZpbGUiLCJiYWNrZG9vcl9kaXJlY3RvcnkiLCJjc3RfdGV4IiwiY3N0X2h0bWwkMCIsImFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbSIsImV4dCIsInNpemVfYSIsInNpemVfZXh0Iiwib3Blbl9vdXQiLCJkIiwib3Blbl9hcHBlbmQiLCJjb21wb3NlIiwiZyIsImV4dF9mb3JtYXQiLCJmZXRjaF9sZXZlbF9nZW4iLCJzIiwiciIsImZldGNoX2dyYXBoX2Zvcm1hdCIsImZldGNoX2FjY3VyYWN5X2xldmVsIiwiZ2V0X3N5bnRheF92ZXJzaW9uIiwicmVhY2hhYmlsaXR5X21hcF8wIiwicmVhY2hhYmlsaXR5X21hcF8xIiwicmVhY2hhYmlsaXR5X21hcF8yIiwicmVhY2hhYmlsaXR5X21hcF8zIiwicmVhY2hhYmlsaXR5X21hcF80IiwiZ2V0X3JlYWNoYWJpbGl0eV9wYXJhbWV0ZXJzIiwiY2FjaGUiLCJnZXRfcGFyYW1ldGVycyIsIm9wdCIsImNhbGxlZF9mcm9tIiwic3RoIiwiaHRtbF9tb2RlIiwiY29tbWFuZCQwIiwiY2hhbm5lbF9iYWNrZG9vciQwIiwiY2hhbm5lbF9lcnIkMCIsImNoYW5uZWwkMSIsImNoYW5uZWwiLCJjaGFubmVsJDAiLCJjb21tYW5kJDIiLCJyZWFjaGFiaWxpdHkkMCIsInJlYWNoYWJpbGl0eSIsIm1hcCIsImEkMSIsImZtdCIsImNoYW5uZWwkMiIsImR1bW15X3BhcmFtZXRlcnMiLCJwIiwicCQwIiwiZ2V0X2JvdW5kX3N5bWJvbF8xIiwic3ltYm9sIiwiZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGVfMSIsImdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGVfMSIsImdldF9saW5rX3RvX2FueV8xIiwiZ2V0X2xpbmtfdG9fc29tZV8xIiwiZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbF8xIiwiZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMSIsImdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZV8xIiwiZ2V0X2ZyZWVfMSIsImdldF9hdF9zeW1ib2xfMSIsImdldF9hZ2VudF9vcGVuX3N5bWJvbF8xIiwiZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2xfMSIsImdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2xfMSIsImdldF9hZ2VudF9zZXBfZG90X3N5bWJvbF8xIiwiZ2V0X2J0eXBlX3NlcF9zeW1ib2xfMSIsImdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2xfMSIsImdldF9naG9zdF9hZ2VudF9zeW1ib2xfMSIsImdldF9kb193ZV9zaG93X2dob3N0XzEiLCJnZXRfdW5pX2Fycm93X3N5bWJvbF8xIiwiZ2V0X3Jldl9hcnJvd19zeW1ib2xfMSIsImdldF9iaV9hcnJvd19zeW1ib2xfMSIsImdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIiwiZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIiwiZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbF8xIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2IiwiZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2IiwiZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5IiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0IiwiZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sXzEiLCJnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sXzEiLCJnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW0iLCJnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzEiLCJnZXRfb3Blbl9jb3VudGVyY2VxXzEiLCJnZXRfb3Blbl9jb3VudGVyY3Zhcl8xIiwiZ2V0X29wZW5fY291bnRlcmNndGVfMSIsImdldF9vcGVuX2NvdW50ZXJkZWx0YV8xIiwiZ2V0X29wZW5fY291bnRlcnZhbF8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGVfMSIsImdldF9jbG9zZV9jb3VudGVyY2VxXzEiLCJnZXRfY2xvc2VfY291bnRlcmN2YXJfMSIsImdldF9jbG9zZV9jb3VudGVyY2d0ZV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJ2YWxfMSIsImdldF9jb3VudGVyY2VxX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzEiLCJnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sXzEiLCJnZXRfY291bnRlcnZhbF9zeW1ib2xfMSIsImdldF9pbV9mb3JtYXRfMSIsImluZmx1ZW5jZSIsImdldF9pbV9maWxlXzEiLCJnZXRfaW1fZGlyZWN0b3J5XzEiLCJnZXRfcnVsZV9zaGFwZV8xIiwiZ2V0X3J1bGVfY29sb3JfMSIsImdldF92YXJpYWJsZV9zaGFwZV8xIiwiZ2V0X3ZhcmlhYmxlX2NvbG9yXzEiLCJnZXRfd2FrZV91cF9jb2xvcl8xIiwiZ2V0X2luaGliaXRpb25fY29sb3JfMSIsImdldF93YWtlX3VwX2Fycm93XzEiLCJnZXRfaW5oaWJpdGlvbl9hcnJvd18xIiwiZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWZfMSIsImdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xIiwiZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfMSIsImdldF9wdXJlX2NvbnRhY3RfMSIsImNtIiwiZ2V0X2NtX2Zvcm1hdF8xIiwiZ2V0X2NtX2ZpbGVfMSIsImdldF9jbV9kaXJlY3RvcnlfMSIsImdldF9iaW5kaW5nX3NpdGVfc2hhcGVfMSIsImdldF9iaW5kaW5nX3NpdGVfY29sb3JfMSIsImdldF9pbnRlcm5hbF9zaXRlX3NoYXBlXzEiLCJnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvcl8xIiwiZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZV8xIiwiZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xIiwiZ2V0X2FnZW50X3NoYXBlX2FycmF5XzEiLCJnZXRfYWdlbnRfY29sb3JfYXJyYXlfMSIsImdldF9hZ2VudF9zaGFwZV9kZWZfMSIsImdldF9hZ2VudF9jb2xvcl9kZWZfMSIsImdldF9saW5rX2NvbG9yXzEiLCJnZXRfaW5mbHVlbmNlX2NvbG9yXzEiLCJnZXRfaW5mbHVlbmNlX2Fycm93XzEiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMCIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQxIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDIiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ0IiwiZ2V0X3NtYXNoX3JlbGF0aW9uc18xIiwiZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fIiwiZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfIiwiZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xIiwiZ2V0X2JhY2tlbmRfbW9kZV8xIiwiZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdF8xIiwiZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzEiLCJnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXQiLCJnZXRfaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNfMSIsImdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdCIsImdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sbyIsImdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXNfMSIsImdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXNfMSIsImdldF9sb2NhbF90cmFjZV9wcmVmaXhfMSIsImdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnlfMSIsImdldF92aWV3X2FuYWx5c2lzXzEiLCJnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMiLCJnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMSIsImdldF9keW5hbWljX2NvbnRhY3RfbWFwXzEiLCJnZXRfY291bnRlcnNfYW5hbHlzaXNfMSIsImdldF9jb3VudGVyc19kb21haW5fMSIsImdldF9jb21wdXRlX3N5bW1ldHJpZXNfMSIsIm1hcnNoYWxpc2FibGUiLCJnZXRfcmF0ZV9jb252ZW50aW9uXzEiLCJnZXRfZW1wdHlfaGFzaHRibF9zaXplXzEiLCJnZXRfc3ltYm9sc18xIiwiZ2V0X2ZpbGVfMSIsImdldF9pbmZsdWVuY2VfbWFwXzEiLCJnZXRfY29udGFjdF9tYXBfMSIsImdldF9yZWFjaGFiaWxpdHlfbWFwXzEiLCJnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmEiLCJnZXRfdW5zYWZlXzEiLCJnZXRfdHJhY2VfMSIsImdldF9kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleSIsImdldF9wcmVmaXhfMSIsImdldF9jYWxsX3N0YWNrXzEiLCJnZXRfbGlua19tb2RlXzEiLCJnZXRfa2FzYV9zdGF0ZV8xIiwiZ2V0X2RvX2NvbnRhY3RfbWFwXzEiLCJnZXRfc3ludGF4X3ZlcnNpb25fMSIsImdldF9kb19zY2NfMSIsImdldF9kb19pbmZsdWVuY2VfbWFwXzEiLCJnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24iLCJnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm8iLCJnZXRfZG9fc2l0ZV9kZXBlbmRlbmNpZXNfMSIsImdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzEiLCJnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXzEiLCJnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXYiLCJnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfc2NjX2FjY3VyYWN5X2xldmVsXzEiLCJnZXRfdmlld19hY2N1cmFjeV9sZXZlbF8xIiwiZ2V0X2xhdW5jaGluZ19kYXRlXzEiLCJ0IiwiZ210IiwiZ2V0X3Nob3J0X3ZlcnNpb25fMSIsImdldF9mdWxsX3ZlcnNpb25fMSIsImdldF9sYXVuY2hlZF93aGVyZV8xIiwiZ2V0X2NvbW1hbmRfbGluZV8xIiwiZ2V0X21hcnNoYWxpc2FibGUiLCJwYXJhbWV0ZXIiLCJnZXRfbG9nZ2VyIiwiZ2V0X2xvZ2dlcl9lcnIiLCJnZXRfbG9nZ2VyX2JhY2tkb29yIiwidXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQiLCJnZXRfY29tbWFuZF9saW5lIiwiZ2V0X3Nob3J0X3ZlcnNpb24iLCJnZXRfbGF1bmNoZWRfd2hlcmUiLCJnZXRfZnVsbF92ZXJzaW9uIiwiZ2V0X2xhdW5jaGluZ19kYXRlIiwiZ2V0X2xhdW5jaGVkX3doZW5fYW5kX3doZXJlIiwicGFyYW1ldGVycyIsImdldF9kb19jb250YWN0X21hcCIsImdldF9zeW50YXhfdmVyc2lvbiQwIiwiZ2V0X2RvX3NjYyIsImdldF9kb19pbmZsdWVuY2VfbWFwIiwiZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uJDAiLCJnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm8kMCIsImdldF9kb19zaXRlX2RlcGVuZGVuY2llcyIsImdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzIiwiZ2V0X3N5bWJvbHMiLCJnZXRfZmlsZSIsImdldF9jb21wdXRlX3N5bW1ldHJpZXMiLCJnZXRfcmF0ZV9jb252ZW50aW9uIiwiZ2V0X2luZmx1ZW5jZV9tYXAiLCJnZXRfY29udGFjdF9tYXAiLCJnZXRfcmVhY2hhYmlsaXR5X21hcCIsImdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYSQwIiwiZ2V0X3Vuc2FmZSIsImdldF90cmFjZSIsImdldF9kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleSQwIiwiZ2V0X3ByZWZpeCIsImdldF9jYWxsX3N0YWNrIiwiZ2V0X2xpbmtfbW9kZSIsImdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCQwIiwiZ2V0X3NjY19hY2N1cmFjeV9sZXZlbCIsImdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldiQwIiwiZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfZW1wdHlfaGFzaHRibF9zaXplIiwidXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllIiwidXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIiwidXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQiLCJ1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF8iLCJ1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWwiLCJnZXRfYm91bmRfc3ltYm9sIiwiZ2V0X29wZW5fYmluZGluZ19zdGF0ZSIsImdldF9jbG9zZV9iaW5kaW5nX3N0YXRlIiwiZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZSIsImdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2wiLCJnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZSIsImdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZSIsImdldF9saW5rX3RvX2FueSIsImdldF9saW5rX3RvX3NvbWUiLCJnZXRfZnJlZV9zeW1ib2wiLCJnZXRfYXRfc3ltYm9sIiwiZ2V0X2FnZW50X29wZW5fc3ltYm9sIiwiZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbCIsImdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbCIsImdldF9hZ2VudF9zZXBfZG90X3N5bWJvbCIsImdldF9idHlwZV9zZXBfc3ltYm9sIiwiZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbCIsImdldF9naG9zdF9hZ2VudF9zeW1ib2wiLCJnZXRfZG9fd2Vfc2hvd19naG9zdCIsImdldF91bmlfYXJyb3dfc3ltYm9sIiwiZ2V0X3Jldl9hcnJvd19zeW1ib2wiLCJnZXRfYmlfYXJyb3dfc3ltYm9sIiwiZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sIiwiZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbCIsImdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2wiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXYkMCIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdiQwIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5JDAiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2kkMCIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaSQwIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0JDAiLCJnZXRfcGx1c19pbmZpbml0eV9zeW1ib2wiLCJnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sIiwiZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltJDAiLCJnZXRfb3Blbl9jb3VudGVyX3N0YXRlIiwiZ2V0X29wZW5fY291bnRlcmNlcSIsImdldF9vcGVuX2NvdW50ZXJjZ3RlIiwiZ2V0X29wZW5fY291bnRlcmN2YXIiLCJnZXRfb3Blbl9jb3VudGVyZGVsdGEiLCJnZXRfb3Blbl9jb3VudGVydmFsIiwiZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGUiLCJnZXRfY2xvc2VfY291bnRlcmNlcSIsImdldF9jbG9zZV9jb3VudGVyY2d0ZSIsImdldF9jbG9zZV9jb3VudGVyY3ZhciIsImdldF9jbG9zZV9jb3VudGVyZGVsdGEiLCJnZXRfY2xvc2VfY291bnRlcnZhbCIsImdldF9jb3VudGVyY2VxX3N5bWJvbCIsImdldF9jb3VudGVyY2d0ZV9zeW1ib2wiLCJnZXRfY291bnRlcmN2YXJfc3ltYm9sIiwiZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sIiwiZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCIsImdldF9jb3VudGVydmFsX3N5bWJvbCIsImdldF9pbV9mb3JtYXQiLCJnZXRfaW1fZmlsZSIsImdldF9pbV9kaXJlY3RvcnkiLCJnZXRfcnVsZV9zaGFwZSIsImdldF9ydWxlX2NvbG9yIiwiZ2V0X3ZhcmlhYmxlX3NoYXBlIiwiZ2V0X3ZhcmlhYmxlX2NvbG9yIiwiZ2V0X3dha2VfdXBfY29sb3IiLCJnZXRfaW5oaWJpdGlvbl9jb2xvciIsImdldF93YWtlX3VwX2Fycm93IiwiZ2V0X2luaGliaXRpb25fYXJyb3ciLCJnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZiIsImdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZiIsImdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdCIsImdldF9wdXJlX2NvbnRhY3QiLCJnZXRfY21fZm9ybWF0IiwiZ2V0X2NtX2ZpbGUiLCJnZXRfY21fZGlyZWN0b3J5IiwiZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZSIsImdldF9iaW5kaW5nX3NpdGVfY29sb3IiLCJnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZSIsImdldF9pbnRlcm5hbF9zaXRlX2NvbG9yIiwiZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZSIsImdldF9jb3VudGVyX3NpdGVfY29sb3IiLCJnZXRfYWdlbnRfc2hhcGVfYXJyYXkiLCJnZXRfYWdlbnRfY29sb3JfYXJyYXkiLCJnZXRfYWdlbnRfc2hhcGVfZGVmIiwiZ2V0X2FnZW50X2NvbG9yX2RlZiIsImdldF9saW5rX2NvbG9yIiwiZ2V0X2luZmx1ZW5jZV9jb2xvciIsImdldF9pbmZsdWVuY2VfYXJyb3ciLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ2IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDciLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkOCIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ5IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDEwIiwiZ2V0X3Bvc3RfcHJvY2Vzc2luZyIsImdldF9iYWNrZW5kX21vZGUiLCJnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV8kMCIsImdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0XyQwIiwiZ2V0X3NtYXNoX3JlbGF0aW9ucyIsImdldF9sb2NhbF90cmFjZV9mb3JtYXQiLCJnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXMiLCJnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXQkMCIsInNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCIsInIkMCIsInIkMSIsInNldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sbyIsImdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdCQwIiwiZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvJDAiLCJnZXRfaWdub3JlX2xvY2FsX2xvc2FuZ2VzIiwiZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyIsImdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMiLCJnZXRfbG9jYWxfdHJhY2VfcHJlZml4IiwiZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSIsImdldF92aWV3X2FuYWx5c2lzIiwiZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIiwiZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzJDAiLCJnZXRfZHluYW1pY19jb250YWN0X21hcCIsImdldF9jb3VudGVyc19hbmFseXNpcyIsImdldF9jb3VudGVyc19kb21haW4iLCJnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIiwic2V0X3ByZWZpeF8xIiwicHJlZml4Iiwic2V0X2NhbGxfc3RhY2tfMSIsImNhbGxfc3RhY2siLCJzZXRfdHJhY2VfMSIsImJvb2wiLCJ1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUiLCJzZXRfcHJlZml4Iiwic2V0X2NhbGxfc3RhY2siLCJzZXRfdHJhY2UiLCJ1cGRhdGVfcHJlZml4Iiwic3VmZml4IiwidXBkYXRlX2NhbGxfc3RhY2siLCJuYW1lIiwicmVwX2Jvb2wiLCJvcGVuX2luZmx1ZW5jZV9tYXBfZmlsZSIsIm1hdGNoJDEiLCJmb3JtYXQiLCJsb2dnZXIiLCJvcGVuX2NvbnRhY3RfbWFwX2ZpbGUiLCJsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmwiLCJnZXRfY2FsbGVkX2Zyb20iLCJnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIiwiYmFja2Rvb3JzIiwiZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zIiwiZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzIiwiZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50IiwiZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhIiwiZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5IiwiZ2V0X2JhY2tkb29yX3RpbWluZ18xIiwiZ2V0X2JhY2tkb29yX2ZpbGVfMSIsImdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMSIsImdldF9iYWNrZG9vcnMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yIiwiZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYSQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiIsImdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseSQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoJDAiLCJnZXRfYmFja2Rvb3JfdGltaW5nXzIiLCJnZXRfYmFja2Rvb3JfZmlsZV8yIiwiZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yIiwiZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50JDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmEkMSIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjIiwiZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aCQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5JDEiLCJnZXRfYmFja2Rvb3JfdGltaW5nIiwiZ2V0X2JhY2tkb29yX2ZpbGUiLCJnZXRfYmFja2Rvb3JfZGlyZWN0b3J5IiwiZ2V0X3Byb2ZpbGVyIiwiZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIiLCJnZXRfa2FzYV9zdGF0ZSIsInNldF9wcmludF9lZmZpY2llbmN5IiwiZ2V0X3ByaW50X2VmZmljaWVuY3kiLCJzZXRfbG9nZ2VyIiwic2F2ZV9lcnJvcl9saXN0Iiwic2F2ZV9wcm9ncmVzc19iYXIiLCJiYXIiLCJyZXNldF9wcm9ncmVzc19iYXIiLCJzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJyZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIiwiZGVmYXVsdCQwIiwiY29tYmluZSIsImwxIiwibDIiLCJsaXN0IiwiYTEiLCJhMiIsIm9wdGlvbnMiLCJnZXRfb3B0aW9uIiwidGl0bGUiLCJpbnB1dCIsImJ1aWxkX2thc2FfcGFyYW1ldGVycyIsInRfY29tbW9uIiwiZG90X2NvbW1lbnQiLCJkb3RfdG9fcGRmIiwiaGVhZCIsInEiLCJoZWFkX2luZmx1ZW5jZV9tYXBfaW5fZG90IiwiaGVhZF9jb250YWN0X21hcF9pbl9kb3QiLCJvdXRwdXQiLCJhY3Rpb25zIiwic3ludGF4IiwidHJhY2VzIiwiY29udGFjdF9tYXAiLCJpbmZsdWVuY2VfbWFwIiwiZmxvdyIsImRlYnVnIiwidG9zcyQwIiwiZSIsImlkJDAiLCJ2YWx1ZSIsImRlYnVnJDAiLCJsb2MiLCJsb2ckMCIsImluZm8kMCIsIndhcm4kMCIsImVycm9yJDAiLCJsb2dfZ3JvdXAkMCIsImxhYmVsIiwibG9nX2dyb3VwX2VuZCQwIiwianF1ZXJ5X29uIiwic2VsZWN0b3IiLCJldmVudCIsImhhbmRsZXIiLCJvcHRpb25fc3RyaW5nIiwiaWQiLCJwbG90UE5HJDAiLCJwbG90U3R5bGVJZCIsInBsb3REaXZJZCIsInRpdGxlIiwicGxvdE5hbWUiLCJwbG90U1ZHJDAiLCJzYXZlRmlsZSQwIiwiZGF0YSIsIm1pbWUiLCJmaWxlbmFtZSIsIm1ldGhvZF90b19zdHJpbmciLCJhamF4X3JlcXVlc3QiLCJ0aW1lb3V0IiwidXJsIiwibWV0aCIsInRpbWVvdXQkMCIsInN0YXR1cyIsInJlc3BvbnNlIiwiZGF0YSQwIiwiYXN5bmMiLCJ0YXNrIiwiZXhuIiwidHJhY2UiLCJsb2dfdHJhY2UiLCJndWlkJDAiLCJtb2RhbCQwIiwiYWN0aW9uIiwiZWxlbWVudF9kYXRhIiwiZWxlbWVudCIsImNyZWF0ZV9zb3J0IiwiY2hpbGRyZW5fdmFsdWUiLCJtYXAiLCJoaWRlX2NvZGVtaXJyb3IiLCJzaG93X2NvZGVtaXJyb3IiLCJzdHJpbmdfb2Zfb3B0aW9uIiwic3RyaW5nX29mX3ZhbHVlIiwiaV9vcHQiLCJpIiwib3B0aW9uX2xhYmVsIiwib3B0Iiwic3RoIiwibWF4X3NpemUiLCJleHBvcnRfY29udHJvbHMiLCJleHBvcnRfc2VsZWN0X2lkIiwiZXhwb3J0X2ZpbGVuYW1lX2lkIiwiZXhwb3J0X2J1dHRvbl9pZCIsImV4cG9ydF9kYXRhX2xhYmVsIiwiZXhwb3J0X2Zvcm1hdHMiLCJleHBvcnRfZmlsZW5hbWUiLCJleHBvcnRfYnV0dG9uIiwiZm9ybWF0IiwiZXhwb3J0X2Zvcm1hdHNfc2VsZWN0IiwiZG9jdW1lbnQiLCJhcmd1bWVudHMkMCIsImtleSIsImsiLCJ2ZXJzaW9uIiwidGVzdCIsImRldiIsInRlc3QkMCIsIm5hdmxpIiwiZm9yY2VfY2xhc3MiLCJkZWNvcmF0aW9ucyIsImRlZmF1bHRfYXR0cmlidXRlcyIsImwiLCJhdHRyaWJ1dGVzIiwidGV4dCIsIm5hdnRhYnMiLCJuYXZ0YWJzX2lkIiwidCIsInRpIiwibGkiLCJhX2NsYXNzIiwib25lbmF2Y29udGVudCIsImFjdGl2ZSIsImNsYXNzZXMiLCJjb250ZW50IiwibmF2Y29udGVudCIsImMiLCJjbCIsImlkJDEiLCJsZXZlbCIsImRlYnVnIiwiaW5mbyIsImxvZyIsIndhcm5pbmciLCJlcnJvciIsImV4dHJhY3QiLCJ2YWx1ZSQwIiwiZmVhdHVyZXMiLCJkZWZhdWx0JDAiLCJmZWF0dXJlIiwibWF0Y2hlcyIsImlucHV0X2NoYW5nZSIsInNpZ25hbF9oYW5kbGVyIiwiaWRfZG9tIiwic3dpdGNoX2NsYXNzIiwiZWx0X2lkIiwiYWRkX2xpc3QiLCJyZW1vdmVfbGlzdCIsImNsYXNzX3N0ciIsImNyZWF0ZV9tb2RhbF90ZXh0X2lucHV0IiwidGl0bGVfbGFiZWwiLCJib2R5Iiwic3VibWl0X2xhYmVsIiwiYnV0dG9uIiwiZm9ybSIsImNyZWF0ZV9tb2RhbF9lcnJvciIsImlzX2NyaXRpY2FsIiwiZXJyb3JfY29udGVudCIsImJ1dHRvbl90eXBlIiwiYmFja2Ryb3BfYXR0cmliIiwiaW5kZXhfbW9kYWwiLCJvcGVuX21vZGFsX2Vycm9yIiwibW9kYWwiLCJtYWluIiwiZXhwb3J0X2Zvcm1hdF9pZCIsImNvbmZpZ3VyYXRpb24iLCJpbmxpbmVfY29udGVudCIsIm9ubG9hZCIsImV4cG9ydF9idXR0b25fdG9nZ2xlIiwicm9vdCIsImV4cG9ydF9zdmciLCJzdmdfc3R5bGVfaWQiLCJzdmdfZGl2X2lkIiwiZXhwb3J0X3BuZyIsImV4cG9ydF9qc29uIiwic2VyaWFsaXplX2pzb24iLCJjcmVhdGVfc3RvcnlfcmVuZGVyaW5nIiwiY3JlYXRlX3NuYXBzaG90IiwiY29sb3JpbmciLCJjcmVhdGVfb2JzZXJ2YWJsZV9wbG90IiwibWFpbl9kaXZfaWQiLCJjcmVhdGVfZ3JhcGhfbG9nZ2VyIiwib25fY2xpY2siLCJjb25zdHJ1Y3Rvcl9jb25maWd1cmF0aW9uIiwiY3JlYXRlX2NvbmZpZ3VyYXRpb24iLCJiZWdpbl90aW1lX2lkIiwiZW5kX3RpbWVfaWQiLCJzZWxlY3RfY29ycmVjdGlvbl9pZCIsInRvZ2dsZV9ydWxlc19pZCIsImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlX2lkIiwibmJfZXZlbnRzX2lkIiwic3ZnX2lkIiwicnVsZXNfY2hlY2tib3hlc19pZCIsImNvbnN0cnVjdG9yX2RhdGEiLCJjcmVhdGVfZGF0YSIsImZsdXhfcnVsZXMiLCJmbHV4X2hpdHMiLCJmbHV4X2ZsdXhzIiwiY3JlYXRlX2ZsdXhfbWFwIiwiY3JlYXRlX2NvbnRhY3RfbWFwIiwicHJpbnRfc3RyaW5nIiwicyIsImxpc3QiLCJwcmludF9uZXdsaW5lIiwicHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUiLCJhIiwicHJpbnRfc2l0ZV9ncmFwaCIsImFnZW50X2xpc3QiLCJhZ2VudCIsImxpc3QkMyIsImIiLCJsaXN0JDQiLCJpbnRlcmZhY2UkMCIsImFnZW50X25hbWUiLCJzaXRlIiwiYiQxIiwibGlzdCQ1IiwiY291bnRlcl9vcHQiLCJiaW5kaW5nX29wdCIsInByb3Bfb3B0Iiwic2l0ZV9uYW1lIiwic2l0ZV9uYW1lJDAiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwibGlzdCQwIiwiYSQxIiwiYiQwIiwiYSQwIiwiaW5mIiwib3Blbl9yYW5nZSIsImluZiQwIiwib3Blbl9yYW5nZSQwIiwic3VwIiwiY2xvc2VfcmFuZ2UiLCJzdXAkMCIsImNsb3NlX3JhbmdlJDAiLCJsaXN0JDEiLCJhJDIiLCJsaXN0JDIiLCJwcmludF9leGNlcHRpb25zX2NhdWdodF9hbmRfdW4iLCJtaCIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwieCIsImRlYnVnX3ByaW50IiwicHJvdG90eXBlIiwiY3JlYXRlX2hhbmRsZXIiLCJoZWFkIiwidGFpbCIsIm9uX2xhYmVsIiwid3JhcHBlciIsInBvc2l0aW9uIiwiY29uc3RydWN0b3JfbGludCIsImNyZWF0ZV9saW50IiwibWVzc2FnZSIsInNldmVyaXR5IiwiZnJvbSIsInQxMSIsImNvbnN0cnVjdG9yX2NoYW5nZSIsImNyZWF0ZV9jaGFuZ2UiLCJjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb24iLCJjcmVhdGVfbGludF9jb25maWd1cmF0aW9uIiwiZGVmYXVsdF9jb25maWd1cmF0aW9uIiwiZnJvbVRleHRBcmVhIiwiZG9tIiwic2V0TGludENvbmZpZyIsImNtIiwiY29tbWFuZHMiLCJhdG9tIiwibGlzdCIsImxhYmVsIiwibGlzdF90cnVlIiwibGlzdF9mYWxzZSIsImxhYmVsX3RydWUiLCJsYWJlbF9mYWxzZSIsInNldF9lc2NhcGUiLCJmbXQiLCJlc2NhcGUiLCJmbHVzaDAiLCJwcmludDAiLCJ0YWdmMCIsImlzX3RhZyIsIm1vdCIsInRhZyIsIm1jdCIsInByaW50IiwicyIsInAiLCJuIiwidGFnZiIsImRlZmluZV9zdHlsZXMiLCJlc2NhcGUkMCIsImwiLCJ0YmwxIiwidGJsMiIsInN0eWxlIiwic3R5bGVfbmFtZSIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsImVzYyIsImVzYyQwIiwiczAiLCJzMSIsInBwX29wZW5feGJveCIsImluZGVudCIsImV4dHJhX2JveCIsIndyYXAiLCJvcGVuX3RhZyIsImNsb3NlX3RhZyIsInRhZ19zdHJpbmciLCJvIiwiZnByaW50X3QiLCJwYXJhbSQwIiwicCQwIiwiZnByaW50X2xpc3QiLCJwJDEiLCJjbCIsInNlcCIsIm9wIiwidGwiLCJoZCIsImZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCIsIngiLCJscCIsImxhYiIsImwkMCIsInAkMiIsImNsJDAiLCJzZXAkMCIsIm9wJDAiLCJpbmRlbnQkMCIsImYiLCJmcHJpbnRfb3B0X2xhYmVsIiwicGFyYW0iLCJjbCQxIiwib3AkMSIsImJhc2VfaW5kZW50Iiwic2VwX2luZGVudCIsImNsb3NlX2V4dHJhJDAiLCJvcGVuX2V4dHJhJDAiLCJjbG9zZV9leHRyYSIsIm9wZW5fZXh0cmEiLCJ0b19mb3JtYXR0ZXIiLCJpbml0X2FjYyIsIm1lcmdlX2FjYyIsImZvcmNlX2JyZWFrczEiLCJmb3JjZV9icmVha3MyIiwiZm9yY2VfYnJlYWtzMSQwIiwibWFwX25vZGUiLCJmb3JjZV9icmVha3MiLCJjaGlsZHJlbiIsImEiLCJiIiwibHAkMCIsImF1eCIsIngkMCIsImFjYyIsIm5ld19jaGlsZHJlbiIsImFjY3MiLCJhY2MkMCIsInh5cyIsInkiLCJ4MiIsIngxIiwicGFyYW0kMSIsImFjYzAiLCJhY2MxIiwibmV3X3gxIiwiYWNjMiIsIm5ld194MiIsImFjYyQxIiwiYWNjJDIiLCJuZXdfeCIsInRvX2J1ZmZlciIsIm9wdCIsImJ1ZiIsInN0aCIsInN0aCQwIiwic3R5bGVzIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCIsIm9jIiwidG9fc3Rkb3V0IiwidG9fc3RkZXJyIiwiZnByaW50X3QkMCIsImxhYmVsJDAiLCJ0b19idWZmZXIkMCIsInRvX3N0cmluZyQwIiwidG9fZm9ybWF0dGVyJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19zdGRvdXQkMCIsInRvX3N0ZGVyciQwIiwiZXJyb3IiLCJzIiwic3RyaW5nOF9vZl9pbnQiLCJ4IiwiaSIsInN0cmluZzRfb2ZfaW50IiwicHJpbnRfYml0cyIsIm9wdCIsImxlbiIsInN0aCIsInBvcyIsInNsZW4iLCJsZW4kMCIsImxlbiQxIiwiciIsImsiLCJqIiwiYyIsImludF9zaXplIiwiZHVtbXlfdHlwZV9pZCIsIm4iLCJjcmVhdGVfdHlwZV9pZCIsImVxdWFsIiwidDIiLCJ4MiIsInQxIiwieDEiLCJoYXNoIiwiY3JlYXRlIiwiY2xlYXIiLCJ0YmwiLCJwdXQiLCJwb3MwIiwiY3JlYXRlJDAiLCJjbGVhciQwIiwicHV0JDAiLCJnZXQiLCJ0cnlfcHJlcmVhZCIsImliIiwicmVhZCIsInBvcyQwIiwicmVhZF9jaGFyIiwiYyQwIiwicGVlayIsImZyb21fYnl0ZXMiLCJzdGgkMCIsInNocmxlbiIsImZyb21fc3RyaW5nIiwiZnJvbV9jaGFubmVsIiwiaWMiLCJuJDAiLCJyZW1fbGVuIiwidG9fcmVhZCIsImFjY3UiLCJhY2N1JDAiLCJyZWFsbHlfcmVhZCIsInJlYWxseV9leHRlbmQiLCJiIiwic2xlbjAiLCJyZXFsZW4iLCJmbHVzaF90b19vdXRwdXQiLCJhYnN0cmFjdF9vdXRwdXQiLCJmbHVzaF90b19jaGFubmVsIiwib2MiLCJtYWtlX3Jvb20iLCJjcmVhdGVfY2hhbm5lbF93cml0ZXIiLCJmbHVzaF9jaGFubmVsX3dyaXRlciIsImNyZWF0ZV9vdXRwdXRfd3JpdGVyIiwib3V0IiwiZXh0ZW5kIiwiYWxsb2MiLCJhZGRfc3ViIiwiYmxpdCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2NoYXIiLCJ1bnNhZmVfYWRkX2NoYXIiLCJhZGRfY2hhcjIiLCJjMSIsImMyIiwiYWRkX2NoYXI0IiwiYzMiLCJjNCIsInJlc2V0IiwiY29udGVudHMiLCJtIiwibWF4X2hpZ2hlc3RfYnl0ZSIsIm1heF92aW50X2J5dGVzIiwibSQwIiwiaCIsInVuc2lnbmVkX29mX3NpZ25lZCIsIndyaXRlX3V2aW50IiwiYnVmIiwiYnl0ZSQwIiwid3JpdGVfc3ZpbnQiLCJ1dmludF9vZl91aW50IiwiYnVmZmVyIiwic3ZpbnRfb2ZfaW50IiwicmVhZF91dmludCIsImF2YWlsIiwicmVhZF9zdmludCIsImNoZWNrX2VuZF9vZl9pbnB1dCIsInVpbnRfb2ZfdXZpbnQiLCJpbnRfb2Zfc3ZpbnQiLCJyZWFkX3N0cmVhbSIsIm9mX3N0cmluZyIsImkkMiIsImkkMCIsIm4kMSIsImkkMSIsInN0IiwiYSIsIm5leHQiLCJhJDAiLCJ3cml0ZV9zdHJlYW0iLCJ0b19zdHJpbmciLCJjaHVua19sZW4iLCJhY2MiLCJmbHVzaF9jaHVuayIsImwiLCJ0bCIsInRsJDAiLCJoZCIsIm4kMyIsIm4kMiIsInRlc3QiLCJzdCQwIiwibCQwIiwiYm9vbF90YWciLCJpbnQ4X3RhZyIsImludDE2X3RhZyIsImludDMyX3RhZyIsImludDY0X3RhZyIsImZsb2F0MzJfdGFnIiwiZmxvYXQ2NF90YWciLCJ1dmludF90YWciLCJzdmludF90YWciLCJzdHJpbmdfdGFnIiwiYXJyYXlfdGFnIiwidHVwbGVfdGFnIiwicmVjb3JkX3RhZyIsIm51bV92YXJpYW50X3RhZyIsInZhcmlhbnRfdGFnIiwidW5pdF90YWciLCJ0YWJsZV90YWciLCJzaGFyZWRfdGFnIiwibWFrZV9zaWduZWQiLCJoYXNoX25hbWUiLCJ3cml0ZV9oYXNodGFnIiwib2IiLCJoJDAiLCJoYXNfYXJnIiwiaCQxIiwiaCQyIiwiaCQzIiwic3RyaW5nX29mX2hhc2h0YWciLCJyZWFkX2hhc2h0YWciLCJjb250IiwieDAiLCJ4MyIsIng0IiwicmVhZF9maWVsZF9oYXNodGFnIiwid3JpdGVfbnVtdGFnIiwicmVhZF9udW10YWciLCJtYWtlX3VuaGFzaCIsInMkMCIsIndyaXRlX3RhZyIsIndyaXRlX3VudGFnZ2VkX3VuaXQiLCJ3cml0ZV91bnRhZ2dlZF9ib29sIiwid3JpdGVfdW50YWdnZWRfY2hhciIsIndyaXRlX3VudGFnZ2VkX2ludDgiLCJ3cml0ZV91bnRhZ2dlZF9pbnQxNiIsIndyaXRlX3VudGFnZ2VkX2ludDMyIiwiaGlnaCIsIndyaXRlX3VudGFnZ2VkX2Zsb2F0MzIiLCJmbG9hdF9lbmRpYW5uZXNzIiwicmVhZF91bnRhZ2dlZF9mbG9hdDY0IiwiaiQwIiwid3JpdGVfdW50YWdnZWRfZmxvYXQ2NCIsIndyaXRlX3VudGFnZ2VkX2ludDY0Iiwic2FmZXR5X3Rlc3QiLCJ5Iiwid3JpdGVfdW50YWdnZWRfc3RyaW5nIiwid3JpdGVfdW50YWdnZWRfdXZpbnQiLCJ3cml0ZV91bnRhZ2dlZF9zdmludCIsIndyaXRlX3VuaXQiLCJ3cml0ZV9ib29sIiwid3JpdGVfY2hhciIsIndyaXRlX2ludDgiLCJ3cml0ZV9pbnQxNiIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50NjQiLCJ3cml0ZV9mbG9hdDMyIiwid3JpdGVfZmxvYXQ2NCIsIndyaXRlX3N0cmluZyIsIndyaXRlX3QiLCJ0YWdnZWQiLCJ0YWdnZWQkMCIsIngkMCIsIngkMSIsIngkMiIsIm8iLCJub2RlX3RhZyIsIngkMyIsIngkNCIsIngkNSIsImEkMSIsIngkNiIsInYiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDciLCJvJDAiLCJhJDIiLCJmaWVsZHMiLCJyb3dfbnVtIiwiY29sX251bSIsInRhZyIsImFpIiwieCQ4IiwidiQwIiwieCQ5Iiwib2Zmc2V0Iiwid3JpdGVfdHJlZSIsInN0cmluZ19vZl90cmVlIiwidGFnX29mX3RyZWUiLCJyZWFkX3RhZyIsInJlYWRfdW50YWdnZWRfdW5pdCIsInJlYWRfdW50YWdnZWRfYm9vbCIsInJlYWRfdW50YWdnZWRfY2hhciIsInJlYWRfdW50YWdnZWRfaW50OCIsInJlYWRfdW50YWdnZWRfaW50MTYiLCJyZWFkX3VudGFnZ2VkX2ludDMyIiwicmVhZF91bnRhZ2dlZF9mbG9hdDMyIiwicmVhZF91bnRhZ2dlZF9pbnQ2NCIsInJlYWRfdW50YWdnZWRfc3RyaW5nIiwic3RyIiwicmVtIiwiYnl0ZXNfcmVhZCIsInJlYWRfdW50YWdnZWRfdXZpbnQiLCJyZWFkX3VudGFnZ2VkX3N2aW50IiwicmVhZF91bml0IiwicmVhZF9ib29sIiwicmVhZF9pbnQ4IiwicmVhZF9pbnQxNiIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9mbG9hdDMyIiwicmVhZF9mbG9hdDY0IiwicmVhZF9zdHJpbmciLCJyZWFkX3RyZWUiLCJ1bmhhc2giLCJyZWFkX2FycmF5IiwicmVhZGVyX29mX3RhZyIsInJlYWRfdHVwbGUiLCJyZWFkX3JlY29yZCIsIm5hbWUiLCJyZWFkX251bV92YXJpYW50X2NvbnQiLCJyZWFkX251bV92YXJpYW50IiwicmVhZF92YXJpYW50X2NvbnQiLCJyZWFkX3ZhcmlhbnQiLCJyZWFkX3RhYmxlIiwicmVhZGVycyIsInJlYWRfc2hhcmVkIiwidHJlZV9vZl9zdHJpbmciLCJza2lwX2J5dGVzIiwic2tpcF91bml0Iiwic2tpcF9ib29sIiwic2tpcF9pbnQ4Iiwic2tpcF9pbnQxNiIsInNraXBfaW50MzIiLCJza2lwX2ludDY0Iiwic2tpcF9mbG9hdDMyIiwic2tpcF9mbG9hdDY0Iiwic2tpcF91dmludCIsInNraXBfc3ZpbnQiLCJza2lwX3N0cmluZyIsInNraXBfYXJyYXkiLCJza2lwcGVyX29mX3RhZyIsInNraXBfdHVwbGUiLCJza2lwIiwic2tpcF9yZWNvcmQiLCJza2lwX251bV92YXJpYW50X2NvbnQiLCJza2lwX251bV92YXJpYW50Iiwic2tpcF92YXJpYW50X2NvbnQiLCJza2lwX3ZhcmlhbnQiLCJza2lwX3RhYmxlIiwiYXJyYXkiLCJyZWNvcmQiLCJ0dXBsZSIsIm1hcCIsImYiLCJmb3JtYXQiLCJzaGFyZWQiLCJvcHRfbmFtZSIsInN1ZmZpeCIsImNvbnMiLCJwIiwiYWEiLCJoZWFkZXIiLCJoZWFkZXIkMCIsInJlY29yZF9hcnJheSIsImluaXQiLCJ2aWV3X29mX3RyZWUiLCJ0IiwicHJpbnRfdmlld19vZl90cmVlIiwib3V0cHV0X3ZpZXdfb2ZfdHJlZSIsInZpZXciLCJwcmludF92aWV3Iiwib3V0cHV0X3ZpZXciLCJzcGxpdCIsInN0b3AiLCJzdGFydCIsImxvYWRfbGluZXMiLCJsb2FkIiwic3ltYm9sIiwiZGVmYXVsdF9kaWN0X3BhdGgiLCJsb2FkX2RpY3Rpb25hcnkiLCJkaWNfZmlsZSIsImZuIiwiZSQwIiwiZSIsIndyaXRlX3VuaXEiLCJsYXN0Iiwic2F2ZV9kaWN0aW9uYXJ5IiwiZmluYWxseSQwIiwiaW5wdXRfZmlsZSIsImZuYW1lIiwicmVhZCIsImljIiwieCIsImUkMCIsImUiLCJvdXRwdXRfZmlsZSIsIndyaXRlIiwib2MiLCJmcm9tX2NoYW5uZWwiLCJsZW4iLCJvcHQiLCJzdGgiLCJzaHJsZW4iLCJpYiIsImZyb21fZmlsZSIsInRvX2NoYW5uZWwiLCJvYiIsInRvX2ZpbGUiLCJmcm9tX2xleGJ1ZiIsImxzIiwibGV4YnVmIiwic3RyZWFtIiwiZnJvbV9zdHJpbmciLCJidWYiLCJsbnVtIiwicyIsImZyb21fY2hhbm5lbCQwIiwiZnJvbV9maWxlJDAiLCJzcmMiLCJmbmFtZTAiLCJzZXFfdW5mb2xkIiwiZiIsInUiLCJ1JDAiLCJzZXFfZnJvbV9sZXhidWYiLCJmaW4iLCJ2Iiwic2VxX2Zyb21fc3RyaW5nIiwic2VxX2Zyb21fY2hhbm5lbCIsInNlcV9mcm9tX2ZpbGUiLCJmaW4kMCIsImxpc3RfZnJvbV9zdHJpbmciLCJzZXEiLCJsaXN0X2Zyb21fY2hhbm5lbCIsImxpc3RfZnJvbV9maWxlIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCQwIiwidG9fZmlsZSQwIiwic2VxX3RvX3N0cmluZyIsInN0aCQwIiwibGYiLCJzZXFfdG9fY2hhbm5lbCIsInNlcV90b19maWxlIiwibGlzdF90b19zdHJpbmciLCJsIiwibGlzdF90b19jaGFubmVsIiwibGlzdF90b19maWxlIiwicHJlc2V0X3Vua25vd25fZmllbGRfaGFuZGxlciIsImxvYyIsIm5hbWUiLCJtc2ciLCJ1bmtub3duX2ZpZWxkX2hhbmRsZXIiLCJzdHJpbmdfb2ZfcGF0aCIsIm4iLCJlcnJvciIsInBhdGgiLCJzdHJpbmdfb2ZfZXJyb3IiLCJ2YWxpZGF0ZV9saXN0IiwiaSIsImwkMCIsInN1YnBhdGgiLCJlcnIiLCJ2YWxpZGF0ZV9hcnJheSIsImEiLCJpJDAiLCJ2YWxpZGF0ZV9vcHRpb24iLCJlcnJvcl93aXRoX2xpbmUiLCJwIiwiczIiLCJsaXN0X2l0ZXIiLCJzZXAiLCJsJDEiLCJ5JDAiLCJ5IiwiYXJyYXlfaXRlciIsIndyaXRlX2NvbW1hIiwid3JpdGVfbGlzdCIsIndyaXRlX2l0ZW0iLCJ3cml0ZV9hcnJheSIsIndyaXRlX2Fzc29jX2xpc3QiLCJ3cml0ZV9rZXkiLCJrIiwid3JpdGVfYXNzb2NfYXJyYXkiLCJ3cml0ZV9vcHRpb24iLCJ3cml0ZV9zdGRfb3B0aW9uIiwid3JpdGVfbnVsbGFibGUiLCJ3cml0ZV9pbnRfYXNfc3RyaW5nIiwid3JpdGVfaW50OCIsIndyaXRlX2ludDhfYXNfc3RyaW5nIiwid3JpdGVfaW50MzIiLCJ3cml0ZV9pbnQzMl9hc19zdHJpbmciLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X2FzX3N0cmluZyIsIm1pbl9mbG9hdCIsIm1heF9mbG9hdCIsIndyaXRlX2Zsb2F0X2FzX2ludCIsIndyaXRlX2Zsb2F0X2FzX2ludF9zdHJpbmciLCJyZWFkX251bGwiLCJsYiIsInJlYWRfYm9vbCIsInJlYWRfaW50IiwicmVhZF9pbnQ4IiwicmVhZF9pbnQzMiIsInJlYWRfaW50NjQiLCJyZWFkX251bWJlciIsInJlYWRfc3RyaW5nIiwicmVhZF9qc29uIiwicmVhZF9saXN0IiwicmVhZF9pdGVtIiwicmVhZF9hcnJheSIsInJlYWRfYXNzb2NfbGlzdF9yZXYiLCJyZWFkX2tleSIsImFjYyIsInJlYWRfYXNzb2NfbGlzdCIsInJlYWRfYXNzb2NfYXJyYXkiLCJ0bCIsInIiLCJyZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIiwibWlzc2luZ190dXBsZV9maWVsZHMiLCJyZXFfZmllbGRzIiwibWlzc2luZyIsIm1pc3NpbmdfZmllbGQiLCJmaWVsZF9uYW1lIiwibWlzc2luZ19maWVsZHMiLCJiaXRfZmllbGRzIiwiZmllbGRfbmFtZXMiLCJ6IiwiaiIsImludmFsaWRfdmFyaWFudF90YWciLCJyZWFkX3dpdGhfYWRhcHRlciIsIm5vcm1hbGl6ZSIsInJlYWRlciIsImFzdCIsImFzdCQwIiwibGIkMCIsIndyaXRlX3dpdGhfYWRhcHRlciIsInJlc3RvcmUiLCJ3cml0ZXIiLCJvYl90bXAiLCJzX3RtcCIsInJlYWRfZXJyb3IiLCJyZWFkX2Vycm9yX2F0IiwidGFnX2Vycm9yIiwidGFnIiwidW5zdXBwb3J0ZWRfdmFyaWFudCIsImgiLCJoYXNfYXJnIiwiZ2V0X3VuaXRfcmVhZGVyIiwicmVhZF91bml0IiwiZ2V0X2Jvb2xfcmVhZGVyIiwiZ2V0X2ludF9yZWFkZXIiLCJnZXRfY2hhcl9yZWFkZXIiLCJyZWFkX2NoYXIiLCJnZXRfaW50MzJfcmVhZGVyIiwiZ2V0X2ludDY0X3JlYWRlciIsImdldF9mbG9hdDMyX3JlYWRlciIsImdldF9mbG9hdDY0X3JlYWRlciIsInJlYWRfZmxvYXQzMiIsInJlYWRfZmxvYXQ2NCIsImdldF9zdHJpbmdfcmVhZGVyIiwicmVhZF9hcnJheV92YWx1ZSIsImdldF9yZWFkZXIiLCJnZXRfYXJyYXlfcmVhZGVyIiwiZ2V0X2xpc3RfcmVhZGVyIiwid3JpdGVfdW50YWdnZWRfb3B0aW9uIiwieCQwIiwiYXJyYXlfaW5pdDIiLCJhcnJheV9pdGVyMiIsIndyaXRlX3VudGFnZ2VkX2FycmF5IiwiY2VsbF90YWciLCJ3cml0ZV91bnRhZ2dlZF9saXN0Iiwic2FmZV9yIiwidHlwZV9maWVsZF9uYW1lIiwibm9ybWFsaXplX3R5cGVfZmllbGQiLCJmaWVsZHMiLCJ0eXBlIiwicmVzdG9yZV90eXBlX2ZpZWxkIiwiZmllbGRzJDAiLCJub3JtYWxpemUkMCIsInZhbHVlIiwicmVzdG9yZSQwIiwidGJsIiwiaXNfa25vd25fdGFnIiwiaXNfY2F0Y2hfYWxsX3RhZyIsImNhdGNoX2FsbF90YWciLCJmb3VuZCIsImZpZWxkIiwidmFyaWFudCIsImZpZWxkcyQxIiwidGFnZ2VkIiwidGFnJDAiLCJyZWFsX3YiLCJyZWFsX3RhZyIsIm9wdF92YWx1ZSIsInRhZyQxIiwidiQwIiwiZW1wdHlfZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuIiwiaXNfZW1wdHlfZXhjZXB0aW9uc19jYXVnaHRfYW5kIiwid2Fybl9hdXgiLCJwYXJhbWV0ZXJzIiwiZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IiwidG9fdWkiLCJmaWxlX25hbWUiLCJtZXNzYWdlIiwiZXhuIiwiZGVmYXVsdCQwIiwidW5jYXVnaHQkMCIsImRmdCIsImVycm9yIiwidW5jYXVnaHQiLCJzdHJpbmdsaXN0Iiwid2Fybl93aXRoX2V4biIsIm9wdCIsImxpbmUiLCJmaWxlIiwic3RoIiwic3RoJDAiLCJwb3MiLCJsaWFpc29uIiwicyIsInBvcyQwIiwid2FybiIsImZpbGVfbGluZSIsInByaW50X2Zvcl9LYVNpbSIsImhhbmRsZXJzIiwicGFyYW1ldGVycyQwIiwiY2F1Z2h0IiwicHJpbnQiLCJwcmludF9lcnJvcnNfbGlnaHRfZm9yX2thc2ltIiwid3JhcCIsInN0cmluZyIsInN0cmluZ19vcHQiLCJjaGVja19wb2ludCIsInBhcmFtZXRlciIsImVycm9yJDAiLCJlcnJvciQxIiwiZm9yX0thU2ltIiwiZiIsImxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIiwiYSIsImIiLCJsaWZ0X2dlbmVyaWNfYmluYXJ5X2JpbmFyeV9mb3IiLCJjIiwiYiQwIiwibGlmdF9nZW5lcmljX3Rlcm5hcnlfZm9yX0thU2ltIiwibGlmdF9nZW5fdW5hcnkiLCJkdW1wIiwib3V0cHV0IiwibGlmdF9nZW5fYmluYXJ5IiwibGlmdF9nZW5fdGVybmFyeSIsImxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdSIsImxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfYiIsImxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdCIsImxpZnRfd2l0aG91dF9sb2dnaW5nX3VuYXJ5IiwibGlmdF93aXRob3V0X2xvZ2dpbmdfYmluYXJ5IiwibGlmdF93aXRob3V0X2xvZ2dpbmdfdGVybmFyeSIsInN0cmluZ19vZl9zdGVwX2tpbmQiLCJ4IiwiaW50JDAiLCJpbnQkMSIsInN0cmluZyIsImludCQyIiwiaW50JDMiLCJpbnQkNCIsImludCQ1Iiwic3RyaW5nJDAiLCJzdHJpbmckMSIsInByaW50X3N0ZXBfa2luZCIsInBhcmFtZXRlcnMiLCJwcmludF90YXNrIiwicGFyYW1ldGVyIiwiYiIsImEiLCJrIiwibCIsIm91dHB1dCIsInEiLCJ0Iiwib3V0cHV0JDAiLCJrJDAiLCJrJDEiLCJvdXRwdXQkMSIsIm91dHB1dCQyIiwiayQyIiwiYiQwIiwidGFiIiwiaSIsImkkMCIsInRpbWUiLCJjbG9zZV9sb2dnZXIiLCJmbHVzaF9sb2dnZXIiLCJpc19kdW1teSIsInN0ZXBfa2luZCIsImFkZF9ldmVudCIsImVycm9yIiwiZiIsImxvZ19pbmZvIiwiZXJyb3IkMCIsIm5leHRfZGVwdGgiLCJmJDAiLCJ0YXNrIiwidGVybWluYXRlZF90YXNrIiwiY3VycmVudF90YXNrIiwiY2xvc2VfZXZlbnQiLCJsb2dfaW5mbyQwIiwiZXJyb3IkMSIsImludGVycnVwdGVkIiwiZXJyb3IkMiIsInRhaWwiLCJ0YWlsJDAiLCJ0ZXJtaW5hdGVkX3Rhc2skMCIsImxvZ19pbmZvJDEiLCJzaXplX2FmdGVyIiwiZ2VuX29wdCIsImdlbiIsImUiLCJhZGRfZXZlbnRfb3B0IiwiY2xvc2VfZXZlbnRfb3B0IiwicHJvcGFnYXRpb25fbGFiZWxzIiwicHJvcGFnYXRpb25fY2FzZXMiLCJjb3B5IiwiaW5pdF9sb2dfaW5mbyIsImxvZ19pbmZvX3RvX2pzb24iLCJmbG9hdF9vZl9qc29uIiwiaW50X29mX2pzb24iLCJsb2dfaW5mb19vZl9qc29uIiwiaW5pdCIsImR1bXBfc2hvcnRfbG9nIiwicmVzZXRfbG9nIiwibG9nIiwiZWxsYXBzZWRfdGltZSIsImVsbGFwc2VkX2dsb2JhbF90aW1lIiwic2V0X3RpbWUiLCJzZXRfc3RlcF90aW1lIiwic2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUiLCJzdCIsInNldF9jb25jdXJyZW50X2V2ZW50X2RldGVjdGlvbiIsInNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uXyIsInNldF9ncmlkX2dlbmVyYXRpb24iLCJzZXRfY2Fub25pY2FsaXNhdGlvbiIsImFkZF9jYXNlIiwiYWRkX2xvb2tfZG93bl9jYXNlIiwiYWRkX2xvb2tfdXBfY2FzZSIsImFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24iLCJhZGRfcHJvcGFnYXRpb25fY2FzZV91cCIsImluY19jdXQiLCJpbmNfYnJhbmNoIiwiaW5jX25fa2FzaW1fZXZlbnRzIiwiaW5jX25fb2JzX2V2ZW50cyIsImluY19uX3NpZGVfZXZlbnRzIiwiaW5jX25faW5pdF9ldmVudHMiLCJpbmNfY3V0X2V2ZW50cyIsImluY19rX2N1dF9ldmVudHMiLCJyZXNldF9jdXRfZXZlbnRzIiwiaW5jX3NlbGVjdGVkX2V2ZW50cyIsImluY19yZW1vdmVkX2V2ZW50cyIsImR1bXBfY29tcGxldGVfbG9nIiwibG9nZ2VyIiwidGljayIsInNldF9nbG9iYWxfY3V0IiwibiIsInNldF9wc2V1ZG9faW52IiwibGlmdCIsImYiLCJlbXB0eSIsImlzX2VtcHR5Iiwic2luZ2xldG9uIiwiaXNfc2luZ2xldG9uIiwiYWRkIiwiYWRkX3doZW5fbm90X2luIiwicCIsImUiLCJ4IiwicyIsInMkMCIsImUkMCIsInJlbW92ZSIsInVuaW9uIiwiZGlzam9pbnRfdW5pb24iLCJpbnRlciIsImRpZmYiLCJtaW51cyIsImNhcmRpbmFsIiwibWVtIiwiZXhpc3RzIiwiZmlsdGVyIiwiZm9yX2FsbCIsInBhcnRpdGlvbiIsImNvbXBhcmUiLCJlcXVhbCIsInN1YnNldCIsIml0ZXIiLCJmb2xkIiwiZm9sZF9pbnYiLCJlbGVtZW50cyIsImNob29zZSIsIm1pbl9lbHQiLCJtYXhfZWx0IiwiZW1wdHkkMCIsImlzX2VtcHR5JDAiLCJtaW5fZWx0JDAiLCJtZW0kMCIsImZpbmRfb3B0aW9uIiwiYSIsImIiLCJjIiwiZCIsImZpbmRfZGVmYXVsdCIsImZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyIsImZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MiLCJhZGQkMCIsIm92ZXJ3cml0ZSIsInBhcmFtZXRlciIsImVycm9yIiwibWFwIiwiYm9vbCIsImVycm9yJDAiLCJhZGRfb3Jfb3ZlcndyaXRlIiwicmVtb3ZlJDAiLCJyZW1vdmVfb3Jfbm90IiwidXBkYXRlIiwibWFwMiIsIm1hcDJ6IiwiZm9sZDJ6IiwiZm9sZDIiLCJpdGVyMiIsImciLCJoIiwibWFwZiIsIm1hcGciLCJmb2xkMl9zcGFyc2UiLCJpdGVyMl9zcGFyc2UiLCJkaWZmJDAiLCJkaWZmX3ByZWQiLCJtZXJnZSIsInVuaW9uJDAiLCJmb2xkX3Jlc3RyaWN0aW9uIiwiZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfIiwiaXRlciQwIiwiZm9sZCQwIiwibWFwaSIsImZvcl9hbGwkMCIsImZpbHRlcl9vbmUiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwiYmluZGluZ3MiLCJ0b19qc29uIiwib2ZfanNvbiIsInByb2pfbWFwIiwiaWRlbnRpdHlfZWx0Iiwia2V5X2EiLCJkYXRhX2EiLCJtYXBfYiIsImtleV9iIiwib2xkIiwibW9uYWRpY19wcm9qX21hcF9pIiwiZXJyb3IkMSIsImRhdGEiLCJlcnJvciQyIiwiZGF0YSQwIiwiZXJyb3IkMyIsIm1vbmFkaWNfcHJval9tYXAiLCJwYXJ0aXRpb25fc2V0Iiwic2V0IiwibmV3c2V0IiwibW9uYWRpY19wYXJ0aXRpb25fc2V0IiwicHJval9zZXQiLCJzZXRfYSIsInNldF9iIiwibW9uYWRpY19wcm9qX3NldCIsInByb2oyIiwia2V5X2MiLCJzdWJtYXAiLCJzdWJtYXAkMCIsInByb2oyX21vbmFkaWMiLCJoYW5kbGVyIiwibXZiZHVfaGFuZGxlciIsImhhbmRsZXIkMCIsImhhbmRsZXIkMSIsIm12YmR1X2hhbmRsZXIkMCIsImhhbmRsZXIkMiIsImhhbmRsZXIkMyIsImhhbmRsZXIkNCIsImxvY2FsX3RyYWNlIiwicG9vbCIsInB1c2giLCJvdXRfbGlzdCIsImluX2xpc3QiLCJhZGRfZWx0IiwiZm9sZF9sZWZ0IiwiYWNjIiwicHJpbnRfd2wiLCJwYXJhbWV0ZXJzIiwid2wiLCJpIiwicG9wIiwieCQwIiwidGwiLCJyZW1vdmVfZWx0IiwieCQxIiwiaW52YWxpZF9hcmciLCJtaCIsInBvcyIsImV4biIsInZhbHVlIiwiZGltZW5zaW9uIiwia2V5X2xpc3QiLCJwYXJlbWV0ZXJzIiwidCIsInNpemUiLCJhcnJheSIsImsiLCJzb2wiLCJzb2wkMCIsImskMCIsImskMSIsImNyZWF0ZSIsImNyZWF0ZV9iaWdnZXN0X2tleSIsImV4cGFuZF9hbmRfY29weSIsImRpbWVuc2lvbiQwIiwiYXJyYXkkMCIsImtleSIsImluaXQiLCJhcnJheSQyIiwiZXJyb3IkNCIsImFycmF5JDEiLCJnZXQiLCJmcmVlIiwidW5zYWZlX2dldCIsInByaW50IiwicHJpbnRfZWx0IiwiZWx0IiwicGFyYW1ldGVycyQwIiwiaSQwIiwicmVtYW5lbnQkMSIsInJlbWFuZW50IiwicmVtYW5lbnQkMCIsImZvbGRfd2l0aF9pbnRlcnJ1cHRpb24iLCJvdXRwdXRfb3B0IiwiZm9sZDJfY29tbW9uIiwidDEiLCJ0MiIsImFycmF5MSIsImFycmF5MiIsIngyIiwieDEiLCJyZW1hbmVudCQ0IiwieDIkMCIsInJlbWFuZW50JDIiLCJrJDIiLCJyZW1hbmVudCQzIiwiayQzIiwiZnJlZV9hbGwiLCJvbGRfZGltZW5zaW9uIiwibWF0cml4IiwibWF0cml4JDAiLCJleHRfbGlzdCIsImxpc3QiLCJ0MiQwIiwibDIiLCJrZXkyIiwiZGltIiwiaiIsIm9sZF91bmRlcmx5aW5nIiwib2xkX3VuZGVybHlpbmckMCIsIm9sZF91bmRlcmx5aW5nJDEiLCJvbGRfdW5kZXJseWluZyQyIiwibmV3X3VuZGVybHlpbmciLCJuZXdfbWF0cml4IiwidW5kZXJseWluZyIsInVuZGVybHlpbmckMCIsInByaW50X29mIiwiZm9sZF9nZW4iLCJmb2xkMSIsImIkMCIsImMkMCIsImJhc2ljIiwibiIsImtleXMiLCJuZXdfYXJyYXkiLCJuZXdfYmFzaWMiLCJpbSIsImltJDAiLCJsIiwidCQwIiwib3V0cHV0JDEiLCJsaXN0JDAiLCJvdXRwdXQiLCJ0YWlsIiwiaGVhZCIsIm91dHB1dCQwIiwiZmluZFNldCIsInBhcmVudCIsInJvb3QiLCJsJDAiLCJnZXRfcmVwcmVzZW50ZW50IiwidW5pb25fbGlzdCIsInRvX3Zpc2l0IiwidCQxIiwidG9fdmlzaXQkMCIsImEkMCIsInRvX3Zpc2l0JDEiLCJ0JDIiLCJyb290X3giLCJyb290X3kiLCJ1bmlvbl9hcnJheSIsIml0ZXJpIiwiZnN0X29wdGlvbiIsInNuZF9vcHRpb24iLCJlc2NhcGVfbGFiZWxfaW5fZG90IiwibWFrZV9pZF9jb21wYXRpYmxlX3dpdGhfZG90X2ZvIiwic3RyaW5nIiwidGFiIiwicG9zJDIiLCJjaGFyJDAiLCJsaXN0ZV9jaGFyIiwicG9zJDAiLCJsJDEiLCJwb3MkMSIsInNvcnRlZF9wYXJ0c19vZl9saXN0IiwiYXV4Iiwic3VmZml4IiwibGlzdCQxIiwic29ydF9saXN0IiwicmVmaW5lZF9saXN0Iiwia2V5JDAiLCJyZWZpbmVkX3NvcnRlZF9saXN0IiwiY29uc3RfdW5pdCIsImFycmF5X29mX2xpc3QiLCJxIiwiYSQxIiwidW5zb21lIiwidHJhY2UiLCJpbnRlcl9saXN0IiwibDEkMSIsImwyJDEiLCJsMSIsInJlcCIsImwyJDAiLCJsMSQwIiwicmVwJDAiLCJsaXN0XzBfbiIsImxpc3RfbWludXMiLCJxMiIsInExIiwicTEkMCIsInByaW50X2NvbW1hIiwiY29tbWEiLCJmZXRjaF9hcnJheSIsImRlZiIsImkkMSIsImFzc28iLCJpbnQkMCIsImZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5Iiwibm9kZV9vZl9pbnQiLCJpbnRfb2Zfbm9kZSIsIm5vZGVfb2Zfbm9kZV9sYWJlbCIsIm5vZGVfbGlzdCIsImVkZ2VfbGlzdCIsIm0iLCJtYXhfbm9kZSIsIm5vZGVzIiwibm9kZXMkMCIsImVkZ2VzIiwiZWRnZSIsIm4yIiwibGFiZWwiLCJuMSIsImVkZ2VzJDAiLCJjb21wdXRlX3NjYyIsImxvdyIsInByZSIsIm9uX3N0YWNrIiwibl90b19zdHJpbmciLCJncmFwaCIsIm9uX3N0YWNrJDAiLCJwcmUkMCIsImxvdyQwIiwib25fc3RhY2skMSIsInByZSQxIiwibG93JDEiLCJlcnJvciQ4IiwibG93JDQiLCJsb3ckNSIsImVycm9yJDkiLCJsb3ckNiIsImVycm9yJDE0IiwicHJlJDQiLCJwcmUkNSIsImVycm9yJDEwIiwicHJlJDYiLCJlcnJvciQxMyIsIm9uX3N0YWNrJDQiLCJvbl9zdGFjayQ1IiwiZXJyb3IkMTEiLCJvbl9zdGFjayQ2IiwiZXJyb3IkMTIiLCJzY2NfbGlzdCIsInN0YWNrIiwiY291bnRlciIsInYiLCJzdGFjayQwIiwiY291bnRlciQwIiwiZWRnZXNfdiIsInciLCJwcmVfdyIsInNjY19saXN0JDAiLCJsb3dfdiIsImxvd193IiwiZXJyb3IkNSIsInN0YWNrJDEiLCJzY2NfbGlzdCQxIiwiY291bnRlciQxIiwibG93JDIiLCJlcnJvciQ2IiwibG93X3YkMCIsImVycm9yJDciLCJwcmVfdyQwIiwibG93JDMiLCJwcmVfdiIsIm9uX3N0YWNrJDIiLCJzdGFjayQyIiwiY2MiLCJzdGFjayQzIiwib25fc3RhY2skMyIsImNjJDAiLCJwcmUkMiIsInByZSQzIiwiYWRkX2JyaWRnZXMiLCJzY2MiLCJzdHJpbmdfb2ZfbiIsInN0cmluZ19vZl9lIiwiYnJpZGdlcyIsInNjYyQwIiwic2NjJDEiLCJzY2MkNCIsIm5vZGUiLCJuJDAiLCJzY2MkMiIsIm5pIiwic2NjaSIsInNjY2kkMCIsInNjY2kkMSIsIm5qIiwic2NjaiIsInNjY2okMCIsInNjY2okMSIsIm5zdHJpbmdpIiwibnN0cmluZ2oiLCJicmlkZ2VzJDAiLCJzY2MkMyIsImludmFsaWQiLCJQT1MiLCJtZXNzYWdlIiwiaW52YWxpZF9hcmdfYm9vbCIsIm1lbWJlciIsImRpY3Rpb25hcnkiLCJpbl9jb25zdHJ1Y3Rpb24iLCJzdGFiaWxpemUiLCJhc3NvJDAiLCJ0cmFuc2xhdGUiLCJkaWN0aW9uYXJ5JDAiLCJzdGFiaWxpemVkIiwiYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IiwidW5pcXVlbHkiLCJidWlsZCIsImZyZXNoIiwiYXNzb19pZCQxIiwiaGFzaF90YWJsZSIsImhhc2giLCJkaWN0aW9uYXJ5JDEiLCJhc3NvX2lkIiwiYXNzb19pZCQwIiwiYWxsb2NhdGUiLCJhYSIsImFsbG9jYXRlX3VuaXF1ZWx5IiwiYWxsb2NhdGVfYm9vbCIsInVuc2FmZV9hbGxvY2F0ZSIsImRpYyIsImRpYyQwIiwibGFzdF9lbnRyeSIsInRpY2tfc3RvcmllcyIsImYiLCJjb25mIiwic2F2ZV9wcm9ncmVzc19iYXIiLCJuX3N0b3JpZXMiLCJjb3VudGVyIiwibGFzdCIsImluaXQiLCJjIiwibiIsIm5jIiwibmwiLCJuJDAiLCJiYXIiLCJuJDEiLCJ0aWNrJDAiLCJ0aWNrIiwiY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzIiwiY29uZmlnX3NtYWxsX2dyYXBoIiwiY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyIiwiaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBoIiwiY2hlY2tfbW9kZSIsInN3YXAiLCJhIiwiYiIsImlnbm9yZV9mc3QiLCJjb21wYXJlX3N1Y2MiLCJwIiwibCIsImwkMCIsInEiLCJzdHJpY3RseV9pbmNyZWFzaW5nIiwic3RyaWN0bHlfZGVjcmVhc2luZyIsImNvbmNhdCIsInByaW50X2xpc3QiLCJjaGVjayIsImZvcm0iLCJzdHJpbmciLCJyZXAiLCJpc19zdHJpY3Rfc3VibGlzdCIsImEkMCIsImIkMCIsImgiLCJ0IiwiaCQwIiwidCQwIiwidCQxIiwiaW5zZXJ0X2VsdCIsImUiLCJkaWZmX2xpc3QiLCJhY2N1IiwiYWNjdSQwIiwiY29tcGFyZV9ib29sIiwiZGlmZl9saXN0X2RlY3JlYXNpbmciLCJ4IiwieSIsIm1lcmdlX2xpc3RfZGVjcmVhc2luZyIsImNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCIsInBhcmFtZXRlciIsImhhbmRsZXIiLCJsb2dfaW5mbyIsImVycm9yIiwiZXZlbnQiLCJjb25maWciLCJwcmVjIiwiaXNfb2JzIiwiZXJyX2xvZ2dlciIsImlzX29icyQwIiwiaSIsIm1heF9pbmRleCIsIm5fZWRnZXMiLCJmJDAiLCJjbG9zZSIsImNsb3NlX3RpY2siLCJ0aWNrJDEiLCJkb190aWNrIiwiY2xvc2VfdGljayQwIiwiZG9fdGljayQwIiwic19wcmVkX3N0YXIiLCJtYXhfc3VjYyIsInN1Y2MiLCJwcmVkIiwiaXNfbGFzdF9zdWNjX29mIiwiYWRkIiwibm9kZSIsIm9sZF9sIiwibG9nX2luZm8kMCIsImVycm9yJDAiLCJzX3ByZWQiLCJqIiwibF9wcmVkIiwicHJlZF9zdGFyIiwibmV3X2wiLCJkaWZmIiwiayIsIm91dHB1dCIsImNsb3N1cmVfYm90dG9tX3VwIiwiZXZlbnRfb3B0IiwicyIsImdyYXBoIiwiY2xvc3VyZV90b3BfZG93biIsImRlbHRhIiwicHJlYyQwIiwibWVyZ2VfdGFpbnRzIiwibDEiLCJsMiIsInEkMCIsInRhaW50aW5nIiwib3V0cHV0JDEiLCJkZWx0YSQwIiwib3V0cHV0JDAiLCJkZWx0YSQxIiwibmV3X3RhaW50IiwidGFpbnRzIiwidGFpbnQiLCJzaGlmdGVkX3RhaW50cyIsImdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfdyIsIm1vZGUiLCJtIiwiY2xvc3VyZV9jaGVjayIsImxvZ19pbmZvJDEiLCJlcnJvciQxIiwicyQwIiwicyQxIiwiY2xvc3VyZSIsInJlZHVjdGlvbl90b3BfZG93biIsInByZWNfc3RhciIsImVpZCIsIm5laWdoIiwib3V0IiwidG9fcmVtb3ZlIiwibDEkMCIsImwyJDAiLCJsMSQxIiwiY21wIiwibDEkMiIsInNldCIsImxvZ19pbmZvJDIiLCJlcnJvciQyIiwiYXRvbV90ZXN0ZWQiLCJhdG9tX21vZGlmaWVkIiwiZW1wdHlfY29uZmlnIiwicHJpbnRfZXZlbnRfa2luZCIsImVudiIsImRlYnVnX3ByaW50X2NhdXNhbCIsImRlYnVnX3ByaW50X2F0b20iLCJkZWJ1Z19wcmludF9ncmlkIiwiZyIsInNpdGVfaWQiLCJub2RlX2lkIiwiZW1wdHlfZ3JpZCIsImdyaWRfZmluZCIsImdyaWQiLCJxdWFyayIsImlzX2xpbmsiLCJ2YSIsImV2ZW50X251bWJlciIsImtpbmQiLCJhdHQkMCIsImF0dCIsImF0dHJpYnV0ZSIsInBpZCIsImVpZF9pbml0Iiwib2xkIiwiYWRkX2FjdGlvbnMiLCJhY3Rpb25zIiwiZ3JpZCQwIiwic2l0ZSIsInEkMSIsInNpdGUyIiwic2l0ZTEiLCJncmlkJDQiLCJxJDIiLCJzaXRlMSQwIiwicSQzIiwic2l0ZSQwIiwiYWciLCJuYSIsInNpZ3MiLCJhZ19pbnRmIiwiZ3JpZCQxIiwiYWckMCIsIm5hJDAiLCJzaWdzJDAiLCJncmlkJDIiLCJhZGRfdGVzdHMiLCJ0ZXN0cyIsInJlY29yZCIsInJlY29yZF9vYnMiLCJzaWRlX2VmZmVjdHMiLCJyZWNvcmRfaW5pdCIsImxibCIsImN1dCIsIm9wdCIsImF0dHJpYnV0ZV9pZHMiLCJzdGgiLCJ3aXRoX3JlZHVjdGlvbiIsImF0dHJpYnV0ZV9pZHMkMCIsImNmZyIsImF0dHJpYnV0ZV9pZHMkMSIsInR5cGVfaSIsInNpdGVfaSIsIm5vZGVfaSIsImF0dHJpYnV0ZSQxIiwiYXR0cmlidXRlJDIiLCJhdG9tJDAiLCJldmVudHNfa2luZCQxIiwicHJlZHMkMCIsInByZWNfMSQwIiwibGFzdF90ZXN0ZWQkMiIsImxhc3RfbW9kaWYkMSIsImNvbmZpZyQzIiwibGFzdF9tb2RpZiIsImxhc3RfdGVzdGVkIiwiYXR0cmlidXRlJDAiLCJhdG9tIiwiZXZlbnRzX2tpbmQkMCIsInByZWRzIiwicHJlY18xIiwiY29uZmlnJDAiLCJldmVudHNfa2luZCIsImNmbGN0X3NldCIsImNmbGN0IiwiY29uZmlnJDIiLCJsYXN0X3Rlc3RlZCQxIiwicHJlZF9pZCIsInByZWRfc2V0IiwiY29uZmlnJDEiLCJsYXN0X3Rlc3RlZCQwIiwibGFzdF9tb2RpZiQwIiwiY2ZnJDAiLCJyZWR1Y3Rpb24iLCJyZWR1Y3Rpb24kMCIsImlkc19vZl9ncmlkIiwia2V5IiwicHJlY19zdGFyX29mX2NvbmZpZyIsImVucmljaF9ncmlkIiwiY29uZmlnX2Nsb3N1cmUiLCJrZWVwX2wiLCJ0b19rZWVwIiwiaWRzIiwicHJlY19laWRzIiwiZW1hcCIsImQiLCJkJDAiLCJkZXB0aCIsImRlcHRoX29mX2V2ZW50IiwiZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyIsImNoZWNrX2NyZWF0ZV9xdWFya3MiLCJhaWQiLCJzaXRlcyIsInF1YXJrcyIsImludGVybmFsIiwiY2hlY2tfbW9kaWZpZWRfcXVhcmtzIiwibW9kaWYiLCJjaGVja190ZXN0ZWRfcXVhcmtzIiwiY2hlY2tfZXZlbnRfcXVhcmtzIiwiYXNpdGUiLCJhc2l0ZSQwIiwiYWlkJDAiLCJhc2l0ZTIiLCJhc2l0ZTEiLCJwcmV0dHlfcHJpbnQiLCJkb3RGb3JtYXQiLCJjb21wcmVzc2lvbl90eXBlIiwibGFiZWwiLCJncmlkX2xpc3QiLCJlcnJfZm10IiwiY29tcHJlc3Npb25fdHlwZSQwIiwieiIsImxpc3QiLCJ4JDAiLCJzdG9yeV9saXN0Iiwic3RvcnlfbGlzdCQwIiwiY3B0Iiwic3RvcmllcyIsImVucmljaGVkX2NvbmZpZyIsInN0ZXBzIiwiaW5mbyIsImF2X3QiLCJncmlkX3N0b3J5IiwidGJsIiwiYXR0X2xzIiwiZG1hcCIsInNvcnRlZF9ldmVudHMiLCJub2RlX3RvX2pzb24iLCJldmVudF9raW5kIiwic3RwIiwicmlkIiwicmlkJDAiLCJzdHAkMCIsInN0cCQxIiwicGVydCIsInBlcnQkMCIsInN0cCQyIiwiZWlkc19hdF9kIiwibHMiLCJscyQwIiwibm9kZXNfdG9fbGlzdCIsIm5vZGVzX3RvX2pzb24iLCJlZGdlX3RvX2pzb24iLCJlaWQkMCIsInByZWNfZWRnZXMiLCJwcmVjX2VkZ2VzX3RvX2pzb24iLCJwcmVjJDEiLCJwcmVjJDIiLCJib29sIiwiY29uZmxfZWRnZXMiLCJjb25mbF9lZGdlc190b19qc29uIiwicHJvZmlsaW5nIiwiZGVzYyIsInRpdGxlIiwiYXRvbV9raW5kIiwicHJvZmlsaW5nJDAiLCJuYW1lIiwic3RvcnkiLCJzaXplIiwidGltZSIsInByaW50X3N0YXQiLCJlbnJpY2hlZF9ncmlkIiwiY291bnRfb2JzIiwibl9zdGVwIiwibG9uZ2VzdF9zdG9yeSIsIm5fbm9uZW1wdHkiLCJsZW5ndGhfc3VtIiwibGVuZ3RoX3NxdWFyZV9zdW0iLCJjYyIsImNjJDAiLCJsZW5ndGhfc3F1YXJlX3N1bSQwIiwibGVuZ3RoX3N1bSQwIiwibl9ub25lbXB0eSQwIiwibG9uZ2VzdF9zdG9yeSQwIiwibl9zdGVwJDAiLCJrJDAiLCJzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8iLCJwaSIsImFnJDEiLCJjb21wYXJlIiwicHJpbnQiLCJlbXB0eSIsIml0ZXIiLCJoYXNoIiwicHJlZGljYXRlIiwibGlmdCIsInByZWRpY2F0ZV9pZCIsInRhYiIsImZpbmRfZGVmYXVsdCIsImRlZiIsImZpbmRfb3B0aW9uIiwibWVtIiwicmVjeWNsZSIsInByZWRpY2F0ZV9tYXgiLCJlbXB0eSQwIiwiaXRlciQwIiwiZmluZF9kZWZhdWx0JDAiLCJmaW5kX29wdGlvbiQwIiwibWVtJDAiLCJhZGQkMCIsImNhdXNhbCIsIndlYWsiLCJzdHJvbmciLCJtaW5fbGV2ZWwiLCJoaWdoZXN0IiwiaGlnaCIsImFib3ZlX2F2ZXJhZ2UiLCJhdmVyYWdlIiwiYmVsbG93X2F2ZXJhZ2UiLCJsb3ciLCJsb3dlc3QiLCJzdHJpbmdfb2ZfbGV2ZWwiLCJsZXZlbCIsImxvd2VyIiwiaGlnaGVyIiwibl9zdG9yeSIsIm5fYnJhbmNoIiwic3RhcnQiLCJpbnByb2dyZXNzIiwic3VjY2VzcyIsImZhaWxsdXJlIiwiaW50X29mX2pzb24iLCJtZXNzYWdlX3RvX2pzb24iLCJwcm9ncmVzc19iYXIiLCJvbmVfY29tcHJlc3Npb24iLCJsb2dfaW5mb190b19qc29uIiwibmV3X3N0b3J5IiwiaW50JDAiLCJtZXNzYWdlX29mX2pzb24iLCJ4JDMiLCJsb2dfaW5mb19vZl9qc29uIiwibCQxIiwibCQyIiwieCQxIiwibCQzIiwieCQyIiwicCQwIiwiZ2V0X2NhdXNhbF90cmFjZSIsImdldF9jYXVzYWxfdHJhY2Vfb25seSIsImdldF93ZWFrX2NvbXByZXNzaW9uIiwiZ2V0X3N0cm9uZ19jb21wcmVzc2lvbiIsImdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUiLCJidWlsZF9wYXJhbWV0ZXIiLCJjYWxsZWRfZnJvbSIsIm5vbmUiLCJzZW5kX21lc3NhZ2UiLCJsb2dfc3RlcF9jaGFubmVsJDAiLCJvdXRfY2hhbm5lbF9wcm9maWxpbmckMCIsIm91dF9jaGFubmVsX2VyciQwIiwib3V0X2NoYW5uZWwkMCIsIm91dF9zZXJ2ZXIiLCJzZXJ2ZXIiLCJjaGFubmVsIiwibG9nX3N0ZXBfY2hhbm5lbCQxIiwib3V0X2NoYW5uZWxfcHJvZmlsaW5nJDEiLCJvdXRfY2hhbm5lbF9lcnIkMSIsIm91dF9jaGFubmVsJDEiLCJvdXRfc2VydmVyJDAiLCJzZXRfY29tcHJlc3Npb25fd2VhayIsInNldF9jb21wcmVzc2lvbl9zdHJvbmciLCJzZXRfY29tcHJlc3Npb25fbm9uZSIsImluaXRfaGFuZGxlciIsIm5fcnVsZXMiLCJydWxlX25hbWVfY2FjaGUiLCJyIiwibl9hZ2VudHMiLCJhZ2VudF9uYW1lX2NhY2hlIiwic3RlcHNfYnlfY29sdW1uIiwic3RyaW5nX29mX2V4biIsImdldF9wcmlvcml0aWVzIiwic2V0X2ZpcnN0X3N0b3J5X3Blcl9vYnMiLCJzZXRfYWxsX3N0b3JpZXNfcGVyX29icyIsImdldF9hbGxfc3Rvcmllc19wZXJfb2JzIiwiZ2V0X2RlYnVnZ2luZ19tb2RlIiwic2V0X2RlYnVnZ2luZ19tb2RlIiwiZ2V0X2xvZ19zdGVwIiwic2V0X2xvZ19zdGVwIiwiZ2V0X2xvZ2dlciIsInNldF9sb2dnZXIiLCJmbXQiLCJnZXRfb3V0X2NoYW5uZWwiLCJzZXRfb3V0X2NoYW5uZWwiLCJnZXRfZGVidWdnaW5nX2NoYW5uZWwiLCJzZXRfZGVidWdnaW5nX2NoYW5uZWwiLCJnZXRfa2FzYV9wYXJhbWV0ZXJzIiwic2V0X2thc2FfcGFyYW1ldGVycyIsInBhcmFtZXRlciQwIiwiZG9fd2VfdXNlX2J1Y2tldF9zb3J0IiwidXNlX2J1Y2tldF9zb3J0IiwidXNlX2Z1c2lvbl9zb3J0IiwiYWx3YXlzX2Rpc2FtYmlndWF0ZSIsInNldF9hbHdheXNfZGlzYW1iaWd1YXRlIiwiZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIiwic2V0X2l0dGVyYXRpb25fYm91bmQiLCJnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIiLCJnZXRfcHJvZmlsaW5nX2xvZ2dlciIsInN0cmluZ19vZl9ydWxlX2lkIiwic3RyaW5nX29mX2FnZW50X2lkIiwiZ2V0X3ByZWRpY2F0ZV9tYXAiLCJnZXRfaXNfdGltZV9pbmRlcGVuZGVudCIsImdldF9ibGFja2xpc3RfZXZlbnRzIiwiaXNfc2VydmVyX21vZGUiLCJnZXRfc2VydmVyX2NoYW5uZWwiLCJzaHV0X2Rvd25fc2VydmVyX2NoYW5uZWwiLCJpc19zZXJ2ZXJfY2hhbm5lbF9vbiIsInNhdmVfY3VycmVudF9waGFzZV90aXRsZSIsImR1bXBfanNvbiIsIm1lc3NhZ2UiLCJyZXNldF9wcm9ncmVzc19iYXIiLCJyZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIiwic2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIiwic2V0X3NhdmVfcHJvZ3Jlc3NfYmFyIiwic2V0X3Jlc2V0X3Byb2dyZXNzX2JhciIsInNhdmVfZXJyb3JfbG9nIiwic2V0X3NhdmVfZXJyb3JfbG9nIiwicHVzaF9qc29uIiwianNvbiIsInJlZiIsInBvcF9qc29uIiwiZWx0X29wdCIsImZpZm8iLCJkZWJ1Z19tb2RlIiwiY29tcG9zZV93aXRoX2hhbmRsZXIiLCJlbXB0eV9zaWRlX2VmZmVjdCIsInNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUiLCJhZ2VudF9uYW1lX29mX2JpbmRpbmdfdHlwZSIsImFnZW50X2lkX29mX2FnZW50IiwiYWdlbnRfbmFtZV9vZl9hZ2VudCIsImFnZW50X29mX3NpdGUiLCJhZ2VudF9pZF9vZl9zaXRlIiwiYWdlbnRfbmFtZV9vZl9zaXRlIiwic2l0ZV9uYW1lX29mX3NpdGUiLCJnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCIsImdldF90aW1lX29mX3JlZmluZWRfc3RlcCIsImdldF9pZF9vZl9yZWZpbmVkX3N0ZXAiLCJidWlsZF9ncmlkIiwiZW1wdHlfc2V0Iiwic2lkZSIsInN1YnMiLCJzaWRlX2VmZmVjdCIsIm1heWJlX3NpZGVfZWZmZWN0Iiwic2UiLCJ0cmFuc2xhdGUiLCJpZCIsImV2ZW50JDAiLCJzaWRlX2VmZmVjdHNfZHN0IiwiaW5mbyQwIiwiZXZlbnQkMSIsImlkJDAiLCJldmVudCQyIiwic2lkZV9lZmZlY3RzX2RzdCQwIiwiYWN0aW9ucyQwIiwiaW5mbyQxIiwiaWQkMSIsInRlc3RzJDAiLCJjbGVhbl9ldmVudHMiLCJwcmludF9zaWRlX2VmZmVjdCIsImxvZyIsInNpZGVfZWZmZWN0X29mX2xpc3QiLCJsZXZlbF9vZl9ldmVudCIsInByaW9yaXR5X29wdCIsInByaW9yaXRpZXMiLCJwcmlvcml0eSIsImFnX2lkIiwiZGlzYW1iaWd1YXRlIiwiZXZlbnRfbGlzdCIsIm1hcHBpbmciLCJ1c2VkIiwibWF4X2lkIiwibWFwcGluZyQwIiwidXNlZCQwIiwibWF4X2lkJDAiLCJhJDEiLCJldmVudF9saXN0X3JldiIsImNvbnZlcnRfaW5pdCIsInJlbWFuZW50Iiwic3RlcF9saXN0IiwiYWN0aW9uX2xpc3QiLCJyZWN1ciIsImFjYyIsInNvdXAiLCJhY2MkMiIsInNpdGVfbGlzdCIsInNvdXAkMCIsInRoaXMkMCIsInN0YW5kYWxvbmUiLCJ0aGlzJDEiLCJtYXAiLCJ1IiwiYWdlbnRfaW5mbyIsImFzX2luaXQiLCJyZXN0cmljdGlvbl9tYXAiLCJhZ2lkIiwicmVzdHJpY3Rpb24iLCJ1bmJpbmQiLCJyZW0iLCJzX25hbWUiLCJhZ19pbmZvIiwiYWdfaW5mbyQwIiwicmVtYW5lbnQkMCIsImJpbmQiLCJzcGxpdF9pbml0IiwicmVmaW5lZF9zdGVwX2xpc3QiLCJyZWZpbmVkX3N0ZXAiLCJhZGRfaW5fc2NvcGUiLCJzY29wZSIsIm9sZF9zZXQiLCJuZXdfc2V0IiwiZGVhbF93aXRoX3Rlc3RzIiwiZmlsbF9zaXBob24iLCJyZXZfdHJhY2UiLCJzY29wZSQxIiwic2NvcGUkMCIsInJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3QiLCJzdGF0ZSIsInN0YXRlX3JlZiIsImFnX2luZm8kMSIsInJlbWFuZW50JDEiLCJzZXQkMCIsImFnZW50X2lkX2luX29icyIsInByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIiwic2lkZXMiLCJzX2lkIiwiaW5pdF9jdXQiLCJmaW5hbGl6ZV9jdXQiLCJjdXRfc3RlcCIsIm5fY3V0Iiwia2VwdCIsInNlZW4iLCJhY3Rpb24iLCJpbnRlcmZhY2UkMCIsImxpc3QkMCIsImVsdCIsInNlZW4kMCIsInEwIiwiYWdfaWQkMCIsInMyIiwiczEiLCJxMSIsInQxIiwia2VwdCQwIiwidGVzdCIsImFnZW50IiwicHJlZGljYXRlX2luZm8iLCJzZWVuJDEiLCJzZWVuJDIiLCJjdXRfcmV2X3RyYWNlIiwicmV2X2V2ZW50X2xpc3QiLCJ0cmFjZSIsImNsZWFuIiwiY29sdW1uIiwiYmxhY2tib2FyZCIsInRhaWwiLCJoZWFkIiwiY29sdW1uJDAiLCJibGFja2JvYXJkJDAiLCJwb3AiLCJwcmVkaWNhdGVfbGlzdCIsImJsYWNrYm9hcmQkMSIsIm5fc3RlcHMiLCJzdGVwIiwiYmxhY2tib2FyZCQzIiwicHJlX2V2ZW50IiwidGVzdF9saXN0IiwidW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIiwiYnVpbGRfbWFwX3Rlc3QiLCJwcmVkaWNhdGVfaWQkMCIsInByZWRpY2F0ZV9pZCQxIiwiYWdfaWQkMSIsInNpdGVfaWQkMCIsInByZWRpY2F0ZV9pZCQyIiwiYWdfaWQkMiIsInNpdGVfaWQkMSIsInByZWRpY2F0ZV9pZCQzIiwiYWdfaWQxIiwiYWdfaWQyIiwic2l0ZV9pZDEiLCJzaXRlX2lkMiIsInByZWRpY2F0ZV9pZDEiLCJwcmVkaWNhdGVfaWQyIiwidGVzdF9tYXAiLCJib29sX2NyZWF0aW9uIiwiYWN0aW9uX21hcCIsImxpc3QyIiwibGlzdDEiLCJsaXN0MSQwIiwibGlzdDIkMCIsImFnZW50X25hbWUxIiwiYWdlbnRfbmFtZTIiLCJzMiQwIiwiczEkMCIsImFnX2lkMSQwIiwiYWdfaWQyJDAiLCJhZ2VudF9uYW1lMiQwIiwic2l0ZV9pZDEkMCIsInNpdGVfaWQyJDAiLCJwcmVkaWNhdGVfaWQxJDAiLCJib29sX2NyZWF0aW9uJDAiLCJib29sJDAiLCJib29sX2NyZWF0aW9uJDEiLCJib29sJDEiLCJ2YWx1ZSIsImlzX3JlbW92ZV9hY3Rpb24iLCJ0ZXN0X21hcCQwIiwibWVyZ2VkX21hcCIsIm1hcCQwIiwiYWN0aW9uJDAiLCJ0ZXN0JDAiLCJ0ZXN0JDEiLCJhY3Rpb24kMSIsIm1lcmdlZF9tYXAkMCIsIm5zaWQiLCJtb2Rfd2l0aG91dF90ZXN0Iiwibl9tb2RpZmljYXRpb25zIiwib2xkX2xpc3QiLCJ2Iiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwibW9kX3dpdGhvdXRfdGVzdCQwIiwibW9kX3dpdGhvdXRfdGVzdCQxIiwiYm9vbF9hY3Rpb24iLCJuX21vZGlmaWNhdGlvbnMkMCIsInByZV9zdGVwc19ieV9jb2x1bW4iLCJibGFja2JvYXJkJDIiLCJwcmVkaWNhdGVfbGlzdCQwIiwicHJlZGljYXRlX2xpc3QkMSIsInkkMCIsImNhbmRpZGF0ZXMiLCJlaWRiIiwiZWlkYSIsImNvbHVtbiQxIiwiY29sdW1uJDIiLCJ0b19wb3AiLCJlMiIsImUxIiwiYmxhY2tib2FyZCQ0IiwiYmxhY2tib2FyZCQ1IiwiZXJyb3IkMyIsImskMiIsImxpc3QkMSIsImskMSIsIndhcm4iLCJwb3MiLCJleG4iLCJkZWZhdWx0JDAiLCJ6ZXJvX3N0ZXBfaWQiLCJkdW1teV9zdGVwX2lkIiwiaW50X29mX3N0ZXBfaWQiLCJzdGVwX2lkX29mX2ludCIsImRlY19zdGVwX2lkIiwiaW5jX3N0ZXBfaWQiLCJ6ZXJvX3N0ZXBfc2hvcnRfaWQiLCJkdW1teV9zdGVwX3Nob3J0X2lkIiwiaW50X29mX3N0ZXBfc2hvcnRfaWQiLCJzdGVwX3Nob3J0X2lkX29mX2ludCIsImluY19zdGVwX3Nob3J0X2lkIiwiZGVjX3N0ZXBfc2hvcnRfaWQiLCJ3ZWFrZW5pbmciLCJkZWZpbmVkIiwidW5kZWZpbmVkJDAiLCJ1bmtub3duIiwiaXNfdW5rbm93biIsImlzX3VuZGVmaW5lZCIsImNvbXBhcmUkMCIsInByaW50JDAiLCJjb21wYXJlJDEiLCJwcmludCQxIiwibGV2ZWxzIiwiZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiIsImdldF9wcmVfZXZlbnQiLCJwcmludF9wcmVkaWNhdGVfaW5mbyIsImkkMCIsImkkMSIsImludDQiLCJpbnQzIiwiaW50MiIsImludDIkMCIsImludCQxIiwiaW50MiQxIiwiaW50JDIiLCJpbnQzJDAiLCJpbnQyJDIiLCJpbnQkMyIsImlkMiIsImlkMSIsInByaW50X2tub3duIiwic3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSIsImFnZW50X2lkIiwiaW50ZXJuYWxfc3RhdGUiLCJhZ2VudF9uYW1lIiwiYWdlbnRfaWQkMCIsInByaW50X3ByZWRpY2F0ZV92YWx1ZSIsInByaW50X3ByZWRpY2F0ZV9pZCIsInByaW50X3ByZWJsYWNrYm9hcmQiLCJuZXZlbnRzIiwic2VpZCIsInN0cmljdGx5X21vcmVfcmVmaW5lZCIsIm1vcmVfcmVmaW5lZCIsImNvbmoiLCJjb21wYXRpYmxlIiwiZGlzanVuY3Rpb24iLCJhbGxvY2F0ZSIsIm1hcF9pbnYiLCJzaWQkMCIsInNpZCIsImNyZWF0ZV9hZ2VudCIsIm5ld19saXN0IiwiZnJlZV9hZ2VudCIsImZyZWVfYWdlbnRfaWZfaXRfZXhpc3RzIiwicHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3VicyIsImxvZ19pbmZvJDMiLCJlcnJvciQ0IiwibG9nX2luZm8kNCIsImVycm9yJDUiLCJibGFja2JvYXJkJDYiLCJsb2dfaW5mbyQ1IiwiZXJyb3IkNiIsImJsYWNrYm9hcmQkNyIsImxvZ19pbmZvJDYiLCJlcnJvciQ3IiwicHJlZGljYXRlX2lkMiQwIiwiYmxhY2tib2FyZCQ4IiwibG9nX2luZm8kNyIsImVycm9yJDgiLCJibGFja2JvYXJkJDkiLCJsb2dfaW5mbyQ4IiwiZXJyb3IkOSIsImJsYWNrYm9hcmQkMTAiLCJsb2dfaW5mbyQ5IiwiZXJyb3IkMTAiLCJibGFja2JvYXJkJDExIiwibG9nX2luZm8kMTAiLCJlcnJvciQxMSIsInByZWRpY2F0ZWlkIiwiYmxhY2tib2FyZCQxMiIsImVycm9yJDEyIiwicHJlZGljYXRlc19vZl9hY3Rpb25fc3VicyIsInByZWRpY2F0ZXNfb2ZfYWN0aW9uIiwicHJlZGljYXRlc19vZl90ZXN0Iiwic2l0ZV9uYW1lIiwidHlwZV9vZl9zdGVwIiwiZ2V0X2xldmVsX29mX2V2ZW50IiwiaW5pdF9maWN0aXRpb3VzX2FjdGlvbiIsImluaXRfc3RlcCIsIm5zaWQkMCIsImFkZF9maWN0aXRpb3VzX2FjdGlvbiIsInZhbHVlJDAiLCJwcmVkaWNhdGVfdGFyZ2V0X2lkIiwic25hbWUiLCJwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGEiLCJidCIsInBvdGVudGlhbF90YXJnZXQiLCJiaW5kaW5nX3N0YXRlIiwiZm9ybWVyX3N0YXRlcyIsImJ0JDAiLCJpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyIsImFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MiLCJkYXRhX3N0cnVjdHVyZSIsImFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rcyIsImRhdGFfc3RydWN0dXJlJDAiLCJhZGRfc3VyZV90ZXN0IiwiYWRkX3N1YnNfdGVzdCIsImFkZF9zdWJzX3Rlc3RfbGluayIsImxpbmsiLCJsaW5rJDAiLCJkYXRhX3N0cnVjdHVyZSQxIiwiYWRkX3N1cmVfYWN0aW9uIiwiYWRkX3N1YnNfYWN0aW9uIiwiYWRkX3N1YnNfYWN0aW9uX2xpbmsiLCJhZGRfc3RlcF9zdHJvbmciLCJzdGVwX2lkIiwiYWcxX2lkIiwiYWcyX2lkIiwic2l0ZTFfaWQiLCJzaXRlMl9pZCIsInRlc3RlZF9zaXRlcyIsIm1vZF9zaXRlcyIsInByaW9yaXR5X3NpdGVzIiwic3VyZV9hZ2VudHMiLCJzdXJlX2FnZW50IiwiYWdlbnQxIiwiYWdlbnQyIiwibWl4X3NpdGUxIiwibWl4X3NpdGUyIiwiZGF0YV9zdHJ1Y3R1cmUkMiIsImRhdGFfc3RydWN0dXJlJDMiLCJhZ2VudCQwIiwic2l0ZV9uYW1lMSIsInNpdGVfbmFtZTIiLCJ3ZWFrMSIsIndlYWsyIiwiYWdlbnQkMSIsImRhdGFfc3RydWN0dXJlJDQiLCJkYXRhX3N0cnVjdHVyZSQ1IiwiZGF0YV9zdHJ1Y3R1cmUkNiIsImEyIiwiYTEiLCJzaWRlX2VmZmVjdCQwIiwiYWN0aW9uX2xpc3QkMCIsInRlc3RfbGlzdCQwIiwiZmljdGl0aW91c19sb2NhbF9saXN0IiwiZmljdGl0aW91c19saXN0IiwibWl4dHVyZV9hZ2VudF9pZF9tdXRleCIsInJ1bGVfYWdlbnRfaWRfc3VicyIsInJ1bGVfYWdlbnRfaWRfbXV0ZXgiLCJpbml0X3N0ZXAkMCIsInJ1bGVfYWdlbnRfaWRfbXV0ZXgkMCIsImZpY3RpdGlvdXNfbG9jYWxfbGlzdCQwIiwiZmljdGl0aW91c19saXN0JDAiLCJwcmVkaWNhdGVfaW5mbyQwIiwicnVsZV9hZ2VudF9pZF9zdWJzJDAiLCJpbml0X3N0ZXAkMSIsImluaXRfc3RlcCQyIiwicnVsZV9hZ2VudF9pZF9zdWJzJDEiLCJtaXh0dXJlX2FnZW50X2lkX211dGV4JDAiLCJpbml0X3N0ZXAkMyIsImxpbmtzX211dGV4IiwibGlua3NfbXV0ZXgkMCIsImZpY3RpdGlvdXNfbGlzdCQxIiwiYnVpbGRfbWFwIiwiYWRkX3N0YXRlIiwiZmFkZCIsIm5zaWRfdm9pZCIsIm5zaWRfbmV4dCIsInNpZGVfZWZmZWN0JDEiLCJ0ZXN0X2xpc3QkMSIsInBvdGVudGlhbF90YXJnZXQkMCIsInJ1bGVfYWdfaWQiLCJmaWN0aXRpb3VzX2xpc3QkMiIsInNpZGVfZWZmZWN0JDIiLCJzdGVwX2lkJDAiLCJwcmVfc3RlcHNfYnlfY29sdW1uJDAiLCJvYnNlcnZhYmxlX2xpc3QkMCIsImJsYWNrYm9hcmQkMTQiLCJubGlzdCIsIm1peHR1cmVfYWdfaWQiLCJwaWRfcnVsZV9hZ2VudF9tdXRleCIsInBpZF9ydWxlX2FnZW50X211dGV4JDAiLCJ0ZXN0X21hcCQxIiwiYWN0aW9uX21hcCQwIiwibV9pZCIsImFjdGlvbl9tYXAkMiIsInRlc3RfbWFwJDIiLCJubGlzdCQwIiwibWVyZ2VkX21hcCQxIiwibWVyZ2VkX21hcCQyIiwibGlua19tdXRleCIsInJ1bGVfYWdfaWQyIiwicnVsZV9hZ19pZDEiLCJsX2FnXzEiLCJsX2FnXzIiLCJtaXh0dXJlX2FnXzEiLCJzdWJzJDAiLCJtaXh0dXJlX2FnXzIiLCJhY3Rpb25fbGlzdCQxIiwibV9pZCQwIiwiZmljdGl0aW91c19saXN0JDMiLCJ1bmFtYmlndW91c19zaWRlX2VmZmVjdHMkMCIsImZpY3RpdGlvdXNfbG9jYWxfbGlzdCQxIiwiZmljdGl0aW91c19saXN0JDQiLCJsb2dfaW5mbyQxMSIsImVycm9yJDEzIiwibWVyZ2VkX21hcCQzIiwibWVyZ2VkX21hcCQ0Iiwic2lkZV9lZmZlY3QkMyIsIm9ic2VydmFibGVfbGlzdCIsImJsYWNrYm9hcmQkMTMiLCJhZGRfc3RlcCIsImZpbmFsaXplIiwiaGV1cmlzdGljIiwiYWdlbnRzX2luX29icyIsIm5fcHJlZGljYXRlcyIsImV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIiwibl9ldmVudHNfcGVyX3ByZWRpY2F0ZSIsIm5fZXZlbnRzIiwibWFuZGF0b3J5X2V2ZW50cyIsImdldF9maWN0aXRpb3VzX29ic2VydmFibGUiLCJnZXRfc2lkZV9lZmZlY3QiLCJpZ25vcmUiLCJmYWlsIiwiaXNfaWdub3JlZCIsImlzX2ZhaWxlZCIsImlzX3N1Y2NlZWRlZCIsIm51bGxfcG9pbnRlciIsInBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmQiLCJpc19iZWZvcmVfYmxhY2tib2FyZCIsImJ1aWxkX3BvaW50ZXIiLCJwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIiwiaXNfYm91bmRhcnkiLCJldmVudF9hZGRyZXNzIiwiYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIiwiaXNfZXhpc3RfZXZlbnQiLCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiIsIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uXyIsInBvaW50ZXJfdG9fbmV4dCIsInZhbHVlX2FmdGVyIiwicG9pbnRlcl90b19wcmV2aW91cyIsIm5fdW5yZXNvbHZlZF9ldmVudHMiLCJuX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIiwiZXhpc3QiLCJzdHJpbmdfb2ZfcG9pbnRlciIsInByZWRpY2F0ZV92YWx1ZSIsInBvaW50ZXIiLCJib29sZWFuJDAiLCJjYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGQiLCJwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSIsImNhc2VfdmFsdWUiLCJ5JDEiLCJsaW5lIiwiZmlsZSIsImR1bW15X2Nhc2VfaW5mb19zdGF0aWMiLCJkdW1teV9jYXNlX2luZm9fZHluYW1pYyIsImNvcnJlY3RfcG9pbnRlciIsImludF9zZWlkIiwiZHVtbXlfY2FzZV9pbmZvIiwicHJvZmlsaW5nX2luZm8iLCJnZXRfZXZlbnQiLCJnZXRfbl9laWQiLCJnZXRfc3RhY2tfZGVwdGgiLCJmb3JjZWRfZXZlbnRzIiwic2lkZV9lZmZlY3Rfb2ZfZXZlbnQiLCJjYXNlX2xpc3Rfb2ZfZWlkIiwiZ2V0X2Nhc2UiLCJjYXNlX2FkZHJlc3MiLCJnZXRfc3RhdGljIiwiYWRkcmVzcyIsImNhc2UkMCIsInN0YXRpYyQwIiwicHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIiwiZ2V0X25wcmVkaWNhdGVfaWQiLCJnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQiLCJnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQkMCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIiwiZm9sbG93X3BvaW50ZXJfZG93biIsImZvbGxvd19wb2ludGVyX3VwIiwiZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCIsImdldF9sYXN0X2xpbmtlZF9ldmVudCIsInByaW50X2tub3duX2Nhc2UiLCJwcmVmIiwiaW5mIiwic3VmIiwic3RyaW5nX29mX3ZhbHVlIiwicGIiLCJwcmludF9hc3NpZ25tZW50IiwiaSQyIiwiaSQzIiwiaSQ0IiwiaSQ1IiwiaSQ2IiwiaSQ3IiwibG9nJDAiLCJpJDgiLCJwcmludF9ibGFja2JvYXJkIiwiZXJyIiwiYXJyYXkiLCJqJDIiLCJqJDAiLCJzdGF0dXMiLCJqJDEiLCJzdGFjayIsImVtcHR5X3N0YWNrIiwiZXhpc3RfY2FzZSIsInNldF9jYXNlIiwiY2FzZV9hZGRyZXNzJDAiLCJjYXNlX3ZhbHVlJDAiLCJjYXNlX2FkZHJlc3MkMSIsIm9sZCQwIiwiY2FzZV92YWx1ZSQxIiwiY2FzZV9hZGRyZXNzJDIiLCJvbGQkMSIsImNhc2VfdmFsdWUkMiIsImxldmVsJDAiLCJjYXNlX2FkZHJlc3MkMyIsIm9sZCQyIiwiY2FzZV92YWx1ZSQzIiwiaXNfc2VsZWN0ZWRfZXZlbnQiLCJnZXQiLCJjYXNlJDEiLCJjYXNlJDIiLCJjYXNlX2FkZHJlc3MkNCIsImNhc2VfYWRkcmVzcyQ1IiwiY2FzZSQzIiwibHZsIiwiY2FzZV9hZGRyZXNzJDYiLCJjYXNlJDQiLCJleHBvcnRfYmxhY2tib2FyZF90b194bHMiLCJwcmVmaXgiLCJmaWxlX25hbWUiLCJkZXNjX2NoYW4iLCJyb3dfb2ZfcHJlY29uZGl0aW9uIiwiY29sb3JzIiwiYmFja2NvbG9yIiwiY29sb3IiLCJjb2xvciQwIiwidGV4dGNvbG9yIiwiZ2V0Y2VsbCIsInJvdyIsImNvbCIsInByaW50X2Nhc2UiLCJjb2xvcl9mb250IiwiY29sb3JfYmFjayIsInByaW50X2Nhc2VfZnVuIiwicF9pbmZvIiwicm93X3ByZWNvbmRpdGlvbiIsInJvd19wb3N0Y29uZGl0aW9uIiwibWF5YmVrZXB0IiwiZWlkJDEiLCJzdHJpbmdfZWlkIiwidmFsdWVfYmVmb3JlIiwiY2FuZCIsInN0cmluZ19laWQkMCIsInN0YWNrJDAiLCJzdGFjayQxIiwicmVjb3JkX21vZGlmIiwicmVmaW5lIiwib3ZlcndyaXRlIiwiZGVjIiwiYnJhbmNoIiwicmVzZXRfbGFzdF9icmFuY2hpbmciLCJyZXNldF9pbml0IiwiaXNfbWF4aW1hbF9zb2x1dGlvbiIsInRyYW5zbGF0ZV9ibGFja2JvYXJkIiwic3RlcF9hcnJheSIsInNpZGVfYXJyYXkiLCJwcmludF9zdGFjayIsImV2ZW50X2xpc3QkMiIsImV2ZW50X2FycmF5Iiwia2VwdF9ldmVudHMiLCJrZXB0X2V2ZW50cyQwIiwia2VwdF9ldmVudHMkMSIsImV2ZW50X2xpc3QkMCIsImV2ZW50X2Nhc2VfYWRkcmVzcyIsInBvaW50ZXIkMCIsInByZXZfZXZlbnRfY2FzZV9hZGRyZXNzIiwicHJldl9jYXNlIiwicHJldl9laWQiLCJwb2ludGVyJDEiLCJwcmV2X2VpZCQwIiwia2VwdF9ldmVudHMkMiIsImV2ZW50X2xpc3QkMSIsImV2ZW50c190b19rZWVwIiwibl9ldmVudHNfcmVtb3ZlZCIsImN1dF9jYXVzYWxfZmxvdyIsImltcG9ydCQwIiwicHJlYmxhY2tib2FyZCIsInJlZmluZWRfZXZlbnQiLCJwcmVibGFja2JvYXJkJDAiLCJ0b194bHMiLCJwcmVibGFja2JvYXJkJDEiLCJwcmVibGFja2JvYXJkJDMiLCJ0b194bHMkMCIsInN0cmluZyQwIiwicHJlYmxhY2tib2FyZCQ0IiwicHJlYmxhY2tib2FyZCQyIiwicHJlX2JsYWNrYm9hcmQiLCJldmVudF9jYXNlX2xpc3QiLCJuX3NlaWQiLCJ1bnNvbHZlZF9ieV9sZXZlbCIsImxldmVsX29wdCQxIiwibGV2ZWxfb3B0Iiwid2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlIiwibGV2ZWxfb3B0JDAiLCJ3ZWlndGhfb2ZfcHJlZGljYXRlX2lkIiwibGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlIiwicF9pZCQxIiwicF9pZCIsInNpemUkMCIsInNlaWQkMSIsInRyaXBsZSIsInNpemUkMSIsInVuc29sdmVkIiwic2VpZCQwIiwicHJlZF9zaXplIiwicF9pZCQwIiwidW5zb2x2ZWRfYnlfbGV2ZWwkMCIsImxldmVsJDEiLCJtYXAkMSIsImxvZ19pbmZvJDEyIiwiZmljdGl0aW91c19vYnMiLCJsb2dfaW5mbyQxMyIsImxvb2tfdXBfZm9yX2JldHRlcl9jdXQiLCJsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQiLCJkdW1teV91cGRhdGVfb3JkZXIiLCJmb3JiaWRkZW5fZXZlbnRzIiwicGFyYW10ZXIiLCJnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGkiLCJmaXJzdCIsInN0b3AiLCJrX2luaXQiLCJrX2VuZCIsImdldF9nZW5fdW5yZXNvbHZlZF9ldmVudCIsIm5leHRfY2hvaWNlIiwicHJpb3JpdHkkMCIsIm5fcF9pZCIsImxldmVsX29wdCQyIiwiYmVzdCQxIiwiYmVzdCIsImdyYWRlIiwiYmVzdCQwIiwic3RlcCQwIiwiZXZlbnRfaWQiLCJldmVudF9pZCQwIiwicHJvcGFnYXRlX2Rvd24iLCJpbnN0cnVjdGlvbl9saXN0IiwicHJvcGFnYXRlX2xpc3QiLCJuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcyIsImJvb2wyIiwibmV4dF9hY3Rpb24iLCJuZXh0X3Rlc3QiLCJwcmVkaWNhdGVfdmFsdWUkMCIsImNvbmokMCIsImxvZ19pbmZvJDE0IiwibG9nX2luZm8kMTUiLCJuZXh0X2FjdGlvbiQwIiwibmV4dF90ZXN0JDAiLCJuZXh0X2VpZCIsImxvZ19pbmZvJDE2IiwibG9nX2luZm8kMTciLCJsb2dfaW5mbyQxOCIsImxvZ19pbmZvJDE5IiwiY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUkMCIsImxvZ19pbmZvJDI0IiwibG9nX2luZm8kMjUiLCJjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSIsImxvZ19pbmZvJDIwIiwibG9nX2luZm8kMjEiLCJsb2dfaW5mbyQyMiIsImxvZ19pbmZvJDIzIiwibGFzdF9jaGFuY2VfdXAiLCJldmVudF9jYXNlX2FkZHJlc3MkMCIsInByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzIiwicHJldmlld19jYXNlX2FkZHJlc3MiLCJwcmV2aWV3X2Nhc2VfdmFsdWUiLCJwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSIsInByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzJDAiLCJwcmV2aWV3X2Nhc2VfYWRkcmVzcyQwIiwicHJldmlld19jYXNlX3ZhbHVlJDAiLCJwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSQwIiwibGFzdF9jaGFuY2VfdXAkMCIsInByb3BhZ2F0ZV91cCIsImxvZ19pbmZvJDMxIiwibmV3X3ByZWRpY2F0ZV92YWx1ZSIsInByZXYiLCJsb2dfaW5mbyQyOSIsImVycm9yJDE2IiwibG9nX2luZm8kMzAiLCJuZXdfdGVzdCIsImVycm9yJDE0IiwibmV3X3ByZWRpY2F0ZV92YWx1ZSQwIiwibG9nX2luZm8kMjYiLCJlcnJvciQxNSIsImxvZ19pbmZvJDI3IiwibG9nX2luZm8kMjgiLCJsb2dfaW5mbyQzMiIsImxvZ19pbmZvJDMzIiwicHJvcGFnYXRlIiwiY3V0X2Nhc2UiLCJwb2ludGVyX25leHQiLCJwb2ludGVyX3ByZXZpb3VzIiwicmVzdWx0IiwibG9va19kb3duIiwibGlzdF92YWx1ZXMiLCJjYSIsIm5leHRfY2FzZSIsInByb3BhZ2F0ZV9saXN0JDAiLCJsb29rX2Rvd24kMCIsInJlZmluZV92YWx1ZV9hZnRlciIsInJlZmluZV92YWx1ZV9iZWZvcmUiLCJkaXNjYXJkX2Nhc2UiLCJyZXN1bHQkMCIsImluc3RydWN0aW9uX2xpc3QkMCIsInByb3BhZ2F0ZV9saXN0JDEiLCJnZW5fZXZlbnQiLCJmX2Nhc2UiLCJzdWNjZXNzJDEiLCJzdWNjZXNzJDAiLCJzdWNjZXNzMiIsInN1Y2Nlc3MkMiIsImFwcGx5X2luc3RydWN0aW9uIiwiaW5zdHJ1Y3Rpb24iLCJpbnN0cnVjdGlvbl9saXN0JDMiLCJwcm9wYWdhdGVfbGlzdCQyIiwicmVzdWx0JDEiLCJpbnN0cnVjdGlvbl9saXN0JDEiLCJpbnN0cnVjdGlvbl9saXN0JDIiLCJzdGVwX2lkJDEiLCJhZGRyZXNzJDAiLCJlbXB0eV9jaG9pY2VfbGlzdCIsImFzc2lnbl9yZXN1bHQiLCJhc3NpZ25fcmVzdWx0JDAiLCJiYWNrdHJhY2siLCJjaG9pY2VfbGlzdCIsImNob2ljZV9saXN0JDAiLCJjaG9pY2VfbGlzdCQxIiwic3VibGlzdCIsImRldGVjdF9pbmRlcGVuZGVudF9ldmVudHMiLCJsaXN0X2VpZCIsInRyYW5zbGF0ZV9yZXN1bHQiLCJmaWx0ZXIiLCJzb2wiLCJzb2wkMCIsInNvbCQxIiwiZXZlbnRzX3RvX3JlbW92ZSIsInN1YiIsImNvbXByZXNzIiwibGlzdF9vcmRlciIsImNob2ljZV9saXN0JDIiLCJjaG9pY2VfbGlzdCQzIiwiY2hvaWNlX2xpc3QkNCIsImNob2ljZV9saXN0JDUiLCJjaG9pY2UiLCJjaG9pY2VfbGlzdCQ2IiwiY2hvaWNlX2xpc3QkNyIsInN0b3J5X2xpc3QkMSIsImdvb2RvbmVzJDEiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJnb29kb25lcyIsImdvb2RvbmVzJDAiLCJoJDEiLCJ0b192aXNpdCQxIiwiYmxhY2tfbGlzdCIsImlzX2JsYWNrX2xpc3RlZCIsImR1bW15X2dyYXBoIiwiY29tcGFyZV9lbHQiLCJxdWlja19jb21wYXJlIiwidDIiLCJhdXgiLCJsMiQxIiwiY29tcGFyZV9jYW5vbmljIiwiZ3JhcGhfb2ZfZ3JpZCIsInN1Y2Nfc2l6ZSIsImxhYmVscyIsImNvbmZsaWN0X3ByZWQiLCJsaXN0MiQyIiwibGlzdDIkMSIsImxpc3QxJDEiLCJjb21wYXJlX25vZGUiLCJwcmVoYXNoIiwid2VpZ2h0JDIiLCJmb3JtZXIkMSIsImZvcm1lciIsIndlaWdodCIsImZvcm1lciQwIiwid3QiLCJ3ZWlnaHQkMCIsIndlaWdodCQxIiwiY2Fub25pY2FsaXplIiwiYXNzbyIsImNhbmRpZGF0ZSIsInRvX2JlYXQiLCJjYW5kaWRhdGUkMCIsInRvX2JlYXQkMCIsImNhbmRpZGF0ZSQxIiwicXIiLCJ0ciIsInRvX2JlYXQkMSIsInZpc2l0IiwiZnJlc2hfcG9zIiwiZnJlc2hfcG9zJDAiLCJzaWJibGluZzEiLCJzaWJibGluZzIiLCJtJDAiLCJjYW5kaWRhdGVzJDEiLCJub3RfYmVzdCIsImNhbmRpZGF0ZXMkMCIsInJlc2lkdWUiLCJmcmVzaCIsImVuY29kaW5nIiwidG9fYmVhdF9hZnRlciIsIm5vdF9iZXN0JDAiLCJyZWNvcmQkMCIsIm5vdF9iZXN0JDEiLCJyZWNvcmQkMSIsInJlY29yZCQyIiwibm90X2Jlc3QkMiIsInRvX2JlYXRfYWZ0ZXIkMCIsInNpYmJsaW5nMSQwIiwidG9fYmVhdCQyIiwiZnJlc2hfcG9zJDEiLCJ0b19iZWF0JDMiLCJnJDAiLCJzaWJibGluZzIkMCIsInRvX2JlYXQkNCIsImxpc3QkMiIsImZyZXNoX3BvcyQyIiwibWFwJDIiLCJ0b19iZWF0JDUiLCJsaXN0JDMiLCJzb3J0X291dGVyIiwic29ydF9pbm5lciIsImNvbXBhcmUkMiIsImdldF9jYW5ub25pY2FsX2Zvcm0iLCJ0YWJsZSIsImFzc29jIiwiY2Fubm9uaWMiLCJjYW5ub25pYyQwIiwidGFibGUkMCIsImNob29zZV9mc3QiLCJpbml0X3RhYmxlIiwicGFyYW1ldGVycyIsImFkZF9zdG9yeSIsInByZXRyYWNlIiwic3RvcnlfaW5mbyIsInRhYmxlJDIiLCJ0YWJsZSQzIiwiZ3JhcGgkMCIsInByZWhhc2gkMSIsImxvZ2dlciQwIiwibG9nZ2VyIiwibm9kZV9raW5kIiwiZGlyZWN0aXZlcyIsImFkZF9zdG9yeV9pbmZvIiwiYXNzb19vcHQiLCJjYW5vbmljIiwidXBkYXRlX2Fzc29jIiwiY2Fub25pY19mb3JtIiwiYXV4X2lubmVyMiIsImNhbm9uaWNfZm9ybSQwIiwidHJlZSIsInRhYmxlJDEiLCJpZCQyIiwidGFibGUkNCIsImF1eF9vdXRlcjIiLCJwcmVoYXNoJDAiLCJjYW5ub25pY19mb3JtIiwiYXNzb2MkMCIsImNhbm5vbmljX2Zvcm0kMCIsImlubmVyIiwidGFibGUkNSIsImF1eF9pbm5lciIsInN1ZmZpeCIsImlubmVyX3RyZWUiLCJpbm5lcl90cmVlJDAiLCJpbm5lcl90cmVlJDEiLCJpbm5lcl90cmVlJDIiLCJpZCQzIiwiaWQkNCIsImF1eF9vdXRlciIsIm91dGVyX3RyZWUiLCJpZCQ1IiwidGFibGUkOCIsImlkJDciLCJpZCQ2IiwiZ3JhcGgkMSIsImFzc29jJDEiLCJ0YWJsZSQ2IiwiaW5uZXIkMCIsInRhYmxlJDciLCJpZCQ4IiwidGFibGUkOSIsImlubmVyJDEiLCJzdWZmaXgkMCIsImFzc29jJDIiLCJpbm5lciQyIiwidGFibGUkMTAiLCJvdXRlcl90cmVlJDAiLCJvdXRlcl90cmVlJDEiLCJoYXNoX2xpc3QiLCJlbGVtZW50c190b19zdG9yZSQyIiwiZWxlbWVudHNfdG9fc3RvcmUkMyIsInN0b3JlZF9lbGVtZW50cyQxIiwibGFzdF9lbGVtZW50JDIiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMyIsImVsZW1lbnRzX3RvX3N0b3JlJDQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkNCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ1IiwibGFzdF9lbGVtZW50JDMiLCJzdG9yZWRfZWxlbWVudHMkMiIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ2IiwibGFzdF9lbGVtZW50JDQiLCJkYWciLCJkYWckMCIsImRhZyQxIiwiZGFnJDIiLCJlbGVtZW50c190b19zdG9yZSIsImVsZW1lbnRzX3RvX3N0b3JlJDAiLCJzdG9yZWRfZWxlbWVudHMiLCJsYXN0X2VsZW1lbnQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMiLCJlbGVtZW50c190b19zdG9yZSQxIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDAiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMSIsImxhc3RfZWxlbWVudCQwIiwic3RvcmVkX2VsZW1lbnRzJDAiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMiIsImxhc3RfZWxlbWVudCQxIiwiYWNjJDAiLCJzb3J0X2xpc3QiLCJsaXN0X291dCIsInR1cGxlIiwiZmxhdF9saXN0IiwiY29tcGFyZV9wYWlyIiwiZmxhdF9saXN0JDAiLCJjb3VudF9zdG9yaWVzIiwiZm9sZF90YWJsZSIsIndlX3NoYWxsIiwid2Vfc2hhbGxfbm90IiwiZ2V0X3ByZXRyYWNlX29mX3RyYWNlIiwic2l6ZV9vZl9wcmV0cmFjZSIsInNldF9hbWJpZ3VpdHlfbGV2ZWwiLCJnZXRfY29tcHJlc3NlZF90cmFjZSIsImlzX2NvbXByZXNzZWRfdHJhY2UiLCJ0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWkiLCJ3aXRoX2FtYmlndWl0eSIsInRyYWNlX29mX3ByZXRyYWNlIiwiZ2V0X2lkX29mX2V2ZW50IiwiZ2V0X3NpbXVsYXRpb25fdGltZV9vZl9ldmVudCIsInByaW50X3RyYWNlIiwidHJhbnNmb3JtX3RyYWNlX2dlbiIsImxvZ19tZXNzYWdlIiwiZGVidWdfbWVzc2FnZSIsInByb2ZpbGluZ19ldmVudCIsImthcHBhX2hhbmRsZXIiLCJzaGFsbF93ZV9jb21wdXRlIiwic3RoJDAiLCJwcmludF9pZl96ZXJvIiwicHJvZmlsaW5nX2luZm8kMCIsImxvZ19tZXNzYWdlJDAiLCJwcmV0cmFjZSQwIiwicHJvZmlsaW5nX2luZm8kMSIsInRyYWNlJDAiLCJ0cmFjZSQxIiwicHJvZmlsaW5nX2luZm8kMiIsIm1vbmFkaWNfbGlmdCIsIm1ha2VfdW5hbWJpZ3VvdXMiLCJzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmYiLCJzdGgkMSIsImxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllcyIsInJlcXVpcmVtZW50IiwiZWZmZWN0IiwidHJhY2UkMiIsIm9uX3RoZV9mbHlfY3V0X2luaXQiLCJvbl90aGVfZmx5X2N1dF9zdGVwIiwib25fdGhlX2ZseV9jdXRfZmluYWxpemUiLCJjdXRfc3RhdGUiLCJyZW1vdmVfb2JzX2JlZm9yZSIsImxhc3RfaW5mbyIsImxhc3RfZWlkIiwibGFzdF9pbmZvJDAiLCJzY29yZSIsInNjb3JlJDAiLCJyZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIiwicmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyIsInN0b3J5X3RhYmxlIiwiZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFiIiwiZXJyb3JfaW5pdCIsImV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRzX2Zyb21fbSIsImV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRfZnJvbV9tdSIsImMkMCIsImNhdXNhbF9wcmVmaXhfb2ZfYW5fb2JzZXJ2YWJsZSIsIm9ic2VydmFibGVfaWQiLCJldmVudF9pZF9saXN0IiwiZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMiLCJwcmludF9tdXNpY2FsX2dyaWQiLCJjcmVhdGVfc3RvcnlfdGFibGUiLCJjbG9zZV9wcm9ncmVzc19iYXJfb3B0IiwicHJpbnRfZmFpbHMiLCJpbmNfZmFpbHMiLCJmb2xkX3N0b3J5X3RhYmxlX2dlbiIsIm5fc3Rvcmllc19pbnB1dCIsIm5fZmFpbHMiLCJwcm9ncmVzc19iYXIkMCIsIm5fZmFpbHMkMCIsImZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzcyIsImZvbGRfc3RvcnlfdGFibGVfd2l0aG91dF9wcm9nciIsImdldF9jb3VudGVyIiwic3RvcmVfdHJhY2UiLCJjb21wdXRhdGlvbl9pbmZvJDEiLCJvYnNfaW5mbyIsImNvbXB1dGF0aW9uX2luZm8kMiIsInRyYWNlMiIsImNvbXB1dGF0aW9uX2luZm8iLCJjb21wdXRhdGlvbl9pbmZvJDAiLCJjb21wdXRhdGlvbl9pbmZvJDMiLCJjb21wdXRhdGlvbl9pbmZvJDQiLCJzdG9yeV90YWJsZSQwIiwiY29tcHV0YXRpb25faW5mbyQ1IiwiZmxhdHRlbl9zdG9yeV90YWJsZSIsImxpc3Rfb3JkZXIkMCIsInN0cm9uZ2x5X2NvbXByZXNzIiwid2Vha2x5X2NvbXByZXNzIiwiY29udmVydF90cmFjZV9pbnRvX2dyaWQiLCJjb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3QiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2wiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEkMCIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYSQxIiwic29ydF9zdG9yeV9saXN0IiwiZXhwb3J0X3N0b3J5X3RhYmxlIiwiaGFzX29icyIsImZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiIsInN0aCQyIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDAiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kOSIsIm5fZmFpbCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQxIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDIiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNCIsImJhciQwIiwibl9mYWlsJDAiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNSIsIm91dHB1dF9vcHQiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMyIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ2IiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDciLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kOCIsImZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2ZfbyIsImxvZ19zdGVwIiwib2JzZXJ2YWJsZV9oaXQiLCJjYXVzYWxfcGFzdCIsImluZm8kMiIsImNvcHlfbG9nX2luZm8iLCJjb21wYXJlX2Nhbm9uaWNhbF9mb3JtIiwiY29tcHV0ZV9jYW5vbmljYWxfZm9ybSIsImtleV9vZl9ldmVudCIsImNyZWF0ZV9ibGFja19saXN0IiwiYmxhY2tsaXN0IiwiYmxhY2tsaXN0JDAiLCJyZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQiLCJsYXN0X2VpZF9pbl9wcmV0cmFjZSIsInByb2ZpbGluZ19zdGF0ZV90b19qc29uIiwiZXJyb3JfbGlzdF90b19qc29uIiwiY29tcHV0YXRpb25fc3RlcHNfdG9fanNvbiIsImNtcF9vcHQiLCJjbXBfZmxvYXRfb3B0IiwiY21wX2ludF9vcHQiLCJnZW5fYmluX29wdCIsIm9wIiwiYWRkX2Zsb2F0X29wdCIsIm11bHRfZmxvYXRfb3B0IiwibXVsdF9pbnRfb3B0IiwibWF4X29wdCIsImNmbG93X3BhcmFtZXRlcnMiLCJuZXZlciIsImdsb2JhbF90cmFjZV9zaW1wbGlmaWNhdGlvbiIsInN0b3JlX3Jlc3VsdCIsImdsb2JhbF9zdGF0dXMiLCJzdG9wX25leHQiLCJnbG9iYWxfc3RhdHVzJDAiLCJzdG9wJDAiLCJnbG9iYWxfc3RhdHVzJDEiLCJnbG9iYWxfc3RhdHVzJDIiLCJzdGFydF9pdGVyYXRpb24iLCJlbmRfc2ltcGxpZmljYXRpb24iLCJnZXRfc3RkX2J1ZmZlciIsImNmbG93X3N0YXRlIiwiZ2V0X2Vycl9idWZmZXIiLCJnZXRfcHJvZmlsaW5nX2J1ZmZlciIsImdldF9icmFuY2hfYW5kX2N1dF9zdGF0dXMiLCJnZXRfcHJvZ3Jlc3NfYmFyIiwiZ2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJnZXRfY2F1c2FsX2Zsb3dfdGFibGUiLCJnZXRfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSIsImdldF93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIiwiZ2V0X3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSIsImdldF9lcnJvcl9saXN0Iiwic2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCIsImNmbG93X3N0YXRlX3B0ciIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4Iiwic2F2ZV9wcm9ncmVzc19iYXJfYXV4IiwicmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eCIsInNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4Iiwic2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlX2F1Iiwic2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfIiwic2F2ZV9lcnJvcl9sb2dfYXV4IiwicmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXgiLCJsb2dnZXJzIiwicmVkaXJlY3RfZXJyX2J1ZmZlcl9hdXgiLCJyZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyX2F1eCIsInJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciIsImNmbG93X3N0YXRlX3B0cl9vcHQiLCJkYXRhIiwibGlmdF9yZXNldCIsInNhdmVfY2F1c2FsX2Zsb3dfdGFibGUiLCJzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUkMCIsInNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSIsInNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV9lcnJvcl9saXN0IiwicmVkaXJlY3Rfc3RkX2J1ZmZlciIsInJlZGlyZWN0X2Vycl9idWZmZXIiLCJyZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyIiwicmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyJDAiLCJpbml0X3NlY3JldF9sb2dfaW5mbyIsImRvX25vdF9sb2ciLCJjb21wcmVzc19hbmRfcHJpbnQiLCJqc19pbnRlcmZhY2UiLCJwYXJhbWV0ZXIkMSIsInBhcmFtZXRlciQxMiIsInBhcmFtZXRlciQyIiwiY2F1c2FsX3RyYWNlX29uIiwid2Vha19jb21wcmVzc2lvbl9vbiIsInN0cm9uZ19jb21wcmVzc2lvbl9vbiIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInBhcmFtZXRlciQzIiwicGFyYW1ldGVyJDQiLCJwYXJhbWV0ZXIkNSIsInBhcmFtZXRlciQ2IiwicGFyYW1ldGVyJDciLCJwYXJhbWV0ZXIkOCIsInBhcmFtZXRlciQ5IiwicGFyYW1ldGVyX2NhdXNhbCIsInBhcmFtZXRlcl93ZWFrIiwicGFyYW1ldGVyX3N0cm9uZyIsInN0ZXBfbGlzdCQwIiwic3Ryb25nJDAiLCJlcnJvciQxOSIsInN0ZXBfbGlzdCQxIiwic3RlcF9saXN0JDIiLCJzdGVwX2xpc3QkMyIsInRyYWNlX2JlZm9yZV9jb21wcmVzc2lvbiIsImNhdXNhbF9zdG9yeV9hcnJheSIsImNhdXNhbF9zdG9yeV9saXN0IiwiY2F1c2FsX3N0b3J5X2xpc3QkMCIsImNhdXNhbF90YWJsZSIsInBhcmFtZXRlcl9kZWVwZXIiLCJldmVudF9saXN0JDMiLCJ3ZWFrbHlfc3RvcnlfdGFibGUiLCJ0YWJsZTIkMCIsInRhYmxlMyQwIiwid2Vha19zdG9yeV90YWJsZSIsImNhdXNhbF9zdG9yeV90YWJsZSIsImNhdXNhbF9zdG9yeV90YWJsZSQwIiwid2Vha19zdG9yeV90YWJsZSQwIiwiY2F1c2FsX3N0b3J5X3RhYmxlJDEiLCJlcnJvciQyOSIsImNhdXNhbF9zdG9yeV90YWJsZSQyIiwiZXJyb3IkMzAiLCJuX2NhdXNhbF9zdG9yaWVzIiwicGFyYW1ldGVyJDExIiwibGlzdF9pbmZvIiwid2Vha2x5X3N0b3J5X3RhYmxlJDAiLCJlcnJvciQzMSIsIndlYWtseV9zdG9yeV90YWJsZSQxIiwiZXJyb3IkMzIiLCJuX3dlYWtfc3RvcmllcyIsInBhcmFtZXRlciQxMCIsInJlZmluZWRfZXZlbnRfbGlzdCIsInN0cm9uZ2x5X3N0b3J5X3RhYmxlIiwic3Ryb25nbHlfc3RvcnlfdGFibGUkMCIsImVycm9yJDE3IiwiZXJyb3IkMTgiLCJleHBvcnQkMCIsImVycm9yJDIwIiwiZXJyb3IkMjEiLCJlcnJvciQyMiIsImV4cG9ydCQxIiwiZXJyb3IkMjMiLCJlcnJvciQyNCIsImVycm9yJDI1IiwiZXhwb3J0JDIiLCJlcnJvciQyNiIsImVycm9yJDI3IiwiZXJyb3IkMjgiLCJvbl9tZXNzYWdlIiwidGV4dCIsInN0Iiwibm9uZSQwIiwiYiQxIiwid2VhayQwIiwiYiQyIiwiZSQwIiwiZm9sZCIsImNvbXBhcmVfbGlzdCIsImgxIiwiaDIiLCJjb21wYXJlX3N1cGVybGlzdCIsInNvcnQiLCJzdXBlcmxpc3QiLCJkdW1wX3N1cGVyX2xpc3QiLCJjb21wYXJlX2ZzdF90cmlwbGUiLCJzbWFzaCIsImFjY3UkMSIsInRvX2RvJDEiLCJjdXJyZW50JDIiLCJ0b19kbyIsImN1cnJlbnQiLCJ0b19kbyQwIiwiY3VycmVudCQwIiwiY3VycmVudCQxIiwiZXJyb3JfbXNnIiwib3B0IiwicmFuZ2UiLCJ0ZXh0Iiwic3RoIiwic2V2ZXJpdHkiLCJlcnJfcmVzdWx0X29mX3N0cmluZyIsInJlc3VsdF9jb2RlIiwibWVzc2FnZSIsImVycl9yZXN1bHRfb2ZfbXNncyIsIm1lc3NhZ2VzIiwiZXJyX3Jlc3VsdF9vZl9tc2ciLCJlcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiIsImUiLCJtZXNzYWdlX29mX2NhdWdodF9leGNlcHRpb24iLCJjYXVnaHRfZXhjZXB0aW9uIiwibWVzc2FnZV9vZl91bmNhdWdodF9leGNlcHRpb24iLCJ1bmNhdWdodF9leGNlcHRpb24iLCJlcnJfcmVzdWx0X29mX2V4Y2VwdGlvbnMiLCJleGNzIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJ4IiwibCIsInJlc3VsdF9iaW5kX3dpdGhfbHd0Iiwib2siLCJzdGF0dXMiLCJ2YWx1ZSIsImRhdGEiLCJyZXN1bHRfZm9sZF93aXRoX2x3dCIsImYiLCJpZCIsInQiLCJoIiwicmVzdWx0IiwicmVzdWx0X2JpbmRfbHd0IiwibHd0X3Jlc3VsdCIsInJlc3VsdF9jb21iaW5lIiwiZGF0YV8xIiwiZGF0YV9yIiwibWQ1c3VtIiwid3JpdGVfc25hcHNob3RfaWQiLCJzdHJpbmdfb2Zfc25hcHNob3RfaWQiLCJsZW4iLCJvYiIsInJlYWRfc25hcHNob3RfaWQiLCJzbmFwc2hvdF9pZF9vZl9zdHJpbmciLCJzIiwid3JpdGVfc25hcHNob3QiLCJzdHJpbmdfb2Zfc25hcHNob3QiLCJyZWFkX3NuYXBzaG90Iiwic25hcHNob3Rfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCIsInNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmciLCJ3cml0ZV9zbmFwc2hvdF9pZF9saXN0IiwicmVhZF9zbmFwc2hvdF9pZF9saXN0Iiwic3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2ciLCJzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX3NpdGVfZ3JhcGgiLCJzdHJpbmdfb2Zfc2l0ZV9ncmFwaCIsInJlYWRfc2l0ZV9ncmFwaCIsInNpdGVfZ3JhcGhfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSIsInN0cmluZ19vZl9zaW11bGF0aW9uX3N0YXRlIiwicmVhZF9zaW11bGF0aW9uX3N0YXRlIiwicCIsImxiIiwieCQwIiwieCQxIiwic2ltdWxhdGlvbl9zdGF0ZV9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX3NlZWQiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zZWVkIiwicmVhZF9zaW11bGF0aW9uX3NlZWQiLCJzaW11bGF0aW9uX3NlZWRfb2Zfc3RyaW5nIiwid3JpdGVfaW50X251bGxhYmxlIiwicmVhZF9pbnRfbnVsbGFibGUiLCJ3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIiwiaXNfZmlyc3QiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wcm9ncmVzcyIsInJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSQwIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVuIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVuJDAiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWMiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3IiLCJwb3MiLCJpIiwiZiQwIiwiaSQwIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwieCQ5IiwieCQxMCIsInNpbXVsYXRpb25fcHJvZ3Jlc3Nfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIiwicmVhZF9zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUiLCJ3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciIsInN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciIsInJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIiwiZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpIiwiZmllbGRfc2ltdWxhdGlvbl9zZWVkIiwiZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSIsInNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fb3V0cHV0Iiwid3JpdGVfcGxvdCIsIndyaXRlX2RpbnMiLCJ3cml0ZV9maWxlX2xpbmVzIiwid3JpdGVfc25hcHNob3RzIiwid3JpdGVfaW5wdXRzIiwid3JpdGVfbG9nX21lc3NhZ2VzIiwic3RyaW5nX29mX3NpbXVsYXRpb25fb3V0cHV0IiwicmVhZF9zaW11bGF0aW9uX291dHB1dCIsInJlYWRfcGxvdCIsInJlYWRfZGlucyIsInJlYWRfZmlsZV9saW5lcyIsInJlYWRfc25hcHNob3RzIiwicmVhZF9pbnB1dHMiLCJyZWFkX2xvZ19tZXNzYWdlcyIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9sIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNoIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lIiwic2ltdWxhdGlvbl9vdXRwdXRfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnQiLCJyZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyIiwid3JpdGVfb3V0cHV0XzkzNDBhZDYiLCJyZWFkX291dHB1dF85MzQwYWQ2Iiwic3RyaW5nX29mX3NpbXVsYXRpb25faW5mb19vdXRwIiwic2ltdWxhdGlvbl9pbmZvX291dHB1dF9vZl9zdHJpIiwid3JpdGVfc2ltdWxhdGlvbl9pbmZvIiwic3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyIsInJlYWRfc2ltdWxhdGlvbl9pbmZvIiwiZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIiwiZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCIsInNpbXVsYXRpb25faW5mb19vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX2lkIiwic3RyaW5nX29mX3NpbXVsYXRpb25faWQiLCJyZWFkX3NpbXVsYXRpb25faWQiLCJzaW11bGF0aW9uX2lkX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCIsInJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCIsImZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdSIsInNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIiwid3JpdGVfc2hhcmluZ19sZXZlbCIsInN0cmluZ19vZl9zaGFyaW5nX2xldmVsIiwicmVhZF9zaGFyaW5nX2xldmVsIiwic2hhcmluZ19sZXZlbF9vZl9zdHJpbmciLCJ3cml0ZV9yZXN1bHQiLCJ3cml0ZV9vayIsIndyaXRlX2Vycm9yIiwic3RyaW5nX29mX3Jlc3VsdCIsInJlYWRfcmVzdWx0IiwicmVhZF9vayIsInJlYWRfZXJyb3IiLCJyZXN1bHRfb2Zfc3RyaW5nIiwid3JpdGVfcGFyc2luZ19jb21waWwiLCJzdHJpbmdfb2ZfcGFyc2luZ19jb21waWwiLCJyZWFkX3BhcnNpbmdfY29tcGlsIiwicGFyc2luZ19jb21waWxfb2Zfc3RyaW5nIiwid3JpdGVfbmJyIiwic3RyaW5nX29mX25iciIsInJlYWRfbmJyIiwibmJyX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19uYnJfbGlzdCIsInN0ZF90dXBsZSIsImVuZF9vZl90dXBsZSIsIngwIiwieDEiLCJyZWFkX3N0cmluZ19uYnJfbGlzdCIsIndyaXRlX3Byb2plY3RfcGFyc2UiLCJzdHJpbmdfb2ZfcHJvamVjdF9wYXJzZSIsInJlYWRfcHJvamVjdF9wYXJzZSIsImZpZWxkX3BhdHRlcm5fc2hhcmluZyIsImZpZWxkX2FzdCIsImZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIiwicHJvamVjdF9wYXJzZV9vZl9zdHJpbmciLCJ3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciIsInN0cmluZ19vZl9wcm9qZWN0X3BhcmFtZXRlciIsInJlYWRfcHJvamVjdF9wYXJhbWV0ZXIiLCJmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWMiLCJwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmciLCJ3cml0ZV9wbG90X2xpbWl0Iiwic3RyaW5nX29mX3Bsb3RfbGltaXQiLCJyZWFkX3Bsb3RfbGltaXQiLCJmaWVsZF9wbG90X2xpbWl0X29mZnNldCIsImZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzIiwicGxvdF9saW1pdF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIiLCJwbG90X3BhcmFtZXRlcl9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfcGxvdCIsInBsb3Rfb2Zfc3RyaW5nIiwid3JpdGVfbWVzc2FnZSIsInN0cmluZ19vZl9tZXNzYWdlIiwicmVhZF9tZXNzYWdlIiwibWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9sb2dfbWVzc2FnZSIsInN0cmluZ19vZl9sb2dfbWVzc2FnZSIsInJlYWRfbG9nX21lc3NhZ2UiLCJsb2dfbWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9rYXBwYV9jb2RlIiwic3RyaW5nX29mX2thcHBhX2NvZGUiLCJyZWFkX2thcHBhX2NvZGUiLCJrYXBwYV9jb2RlX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19udWxsYWJsZSIsInJlYWRfc3RyaW5nX251bGxhYmxlIiwid3JpdGVfZmlsZV9saW5lIiwic3RyaW5nX29mX2ZpbGVfbGluZSIsInJlYWRfZmlsZV9saW5lIiwiZmllbGRfZmlsZV9saW5lX25hbWUiLCJmaWVsZF9maWxlX2xpbmVfdGV4dCIsImZpbGVfbGluZV9vZl9zdHJpbmciLCJ3cml0ZV9maWxlX2xpbmVfbGlzdCIsInJlYWRfZmlsZV9saW5lX2xpc3QiLCJzdHJpbmdfb2ZfZmlsZV9saW5lX2RldGFpbCIsImZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIiwid3JpdGVfc3RyaW5nX2xpc3QiLCJyZWFkX3N0cmluZ19saXN0Iiwic3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nIiwiZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIiwid3JpdGVfZW52aXJvbm1lbnRfaW5mbyIsInN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvIiwicmVhZF9lbnZpcm9ubWVudF9pbmZvIiwiZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMiLCJmaWVsZF9lbnZpcm9ubWVudF9idWlsZCIsImVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIiwid3JpdGVfZGluX2lkIiwic3RyaW5nX29mX2Rpbl9pZCIsInJlYWRfZGluX2lkIiwiZGluX2lkX29mX3N0cmluZyIsIndyaXRlX2Rpbl9pZF9saXN0IiwicmVhZF9kaW5faWRfbGlzdCIsInN0cmluZ19vZl9kaW5fY2F0YWxvZyIsImRpbl9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX2RpbiIsInN0cmluZ19vZl9kaW4iLCJyZWFkX2RpbiIsImRpbl9vZl9zdHJpbmciLCJuZXdfbWFpbGJveCIsInJlY2VpdmUiLCJtYWlsYm94IiwidGhyZWFkIiwidGhyZWFkJDAiLCJvdXQiLCJ0aHJlYWQkMSIsInRocmVhZCQyIiwidGhyZWFkJDMiLCJ0aHJlYWQkNCIsInRocmVhZCQ1IiwidGhyZWFkJDYiLCJqc29uIiwidGhyZWFkJDciLCJqc29uJDAiLCJ0aHJlYWQkOCIsImpzb24kMSIsInRocmVhZCQ5IiwianNvbiQyIiwidGhyZWFkJDEwIiwianNvbiQzIiwidGhyZWFkJDExIiwianNvbiQ0IiwidGhyZWFkJDEyIiwianNvbiQ1IiwidGhyZWFkJDEzIiwianNvbiQ2IiwidGhyZWFkJDE0IiwidGhyZWFkJDE1IiwidGhyZWFkJDE2IiwidGhyZWFkJDE3IiwidGhyZWFkJDE4IiwidGhyZWFkJDE5IiwidGhyZWFkJDIwIiwiaXNfY29tcHV0aW5nIiwic2VsZl8xIiwiaGFuZGxlIiwicmVxdWVzdCIsImZlZWRlciIsImIiLCJmaWxlX2lkIiwiZmlsZV9jb250ZW50IiwiZmlsZV9wb3NpdGlvbiIsImFzdCIsImNvbXBpbCIsImFjY3VyYWN5IiwiZndkIiwiYndkIiwib3JpZ2luIiwidG90YWwiLCJmaWxlbmFtZSIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwicGF1c2UiLCJwYXJhbWV0ZXIiLCJpbnRlcnZlbnRpb24iLCJ3cml0ZV9zbmFwc2hvdF9kZXRhaWwiLCJyZWFkX3NuYXBzaG90X2RldGFpbCIsIndyaXRlX3NuYXBzaG90X2NhdGFsb2ciLCJyZWFkX3NuYXBzaG90X2NhdGFsb2ciLCJ3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9lZmZpY2llbmMiLCJyZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSIsInNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbiIsIndyaXRlX2FwaV9yZXN1bHQiLCJzdHJpbmdfb2ZfYXBpX3Jlc3VsdCIsInJlYWRfYXBpX3Jlc3VsdCIsImFwaV9yZXN1bHRfb2Zfc3RyaW5nIiwid3JpdGVfYXBpX21lc3NhZ2UiLCJzdHJpbmdfb2ZfYXBpX21lc3NhZ2UiLCJyZWFkX2FwaV9tZXNzYWdlIiwiYXBpX21lc3NhZ2Vfb2Zfc3RyaW5nIiwid3JpdGVfYXBpX21lc3NhZ2VfbGlzdCIsInJlYWRfYXBpX21lc3NhZ2VfbGlzdCIsIndyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIiwicmVhZF9maWxlX2xpbmVfY2F0YWxvZyIsIndyaXRlX2Rpbl9jYXRhbG9nIiwicmVhZF9kaW5fY2F0YWxvZyIsIndyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCIsIngkMTEiLCJ4JDEyIiwieCQxMyIsIngkMTQiLCJ4JDE1IiwieCQxNiIsInN0cmluZ19vZl9yZXN0X3Jlc3BvbnNlX2NvbnRlbiIsInJlYWRfcmVzdF9yZXNwb25zZV9jb250ZW50IiwieCQzNSIsIngkMTciLCJ4JDI2IiwieCQyNSIsIngkMjQiLCJ4JDIzIiwieCQyMiIsIngkMjEiLCJ4JDIwIiwieCQxOSIsIngkMTgiLCJ4JDM0IiwieCQzMyIsIngkMzIiLCJ4JDMxIiwieCQzMCIsIngkMjkiLCJ4JDI4IiwieCQyNyIsInJlc3RfcmVzcG9uc2VfY29udGVudF9vZl9zdHJpbiIsIndyaXRlX3Jlc3VsdF80Y2E2YjhmIiwicmVhZF9yZXN1bHRfNGNhNmI4ZiIsInN0cmluZ19vZl9yZXN0X3Jlc3BvbnNlIiwicmVzdF9yZXNwb25zZV9vZl9zdHJpbmciLCJ3cml0ZV9wbG90X3BhcmFtZXRlciIsInJlYWRfcGxvdF9wYXJhbWV0ZXIiLCJ3cml0ZV9yZXN0X3JlcXVlc3QiLCJzdHJpbmdfb2ZfcmVzdF9yZXF1ZXN0IiwicmVhZF9yZXN0X3JlcXVlc3QiLCJyZXN0X3JlcXVlc3Rfb2Zfc3RyaW5nIiwid3JpdGVfcmVzcG9uc2VfY29udGVudCIsInN0cmluZ19vZl9yZXNwb25zZV9jb250ZW50IiwicmVhZF9yZXNwb25zZV9jb250ZW50IiwicmVzcG9uc2VfY29udGVudF9vZl9zdHJpbmciLCJ3cml0ZV9yZXN1bHRfODkwZDlmZSIsInJlYWRfcmVzdWx0Xzg5MGQ5ZmUiLCJzdHJpbmdfb2ZfcmVzcG9uc2UiLCJyZXNwb25zZV9vZl9zdHJpbmciLCJ3cml0ZV9yZXF1ZXN0Iiwic3RyaW5nX29mX3JlcXVlc3QiLCJyZWFkX3JlcXVlc3QiLCJyZXF1ZXN0X29mX3N0cmluZyIsIndyaXRlX2lkIiwic3RyaW5nX29mX2lkIiwicmVhZF9pZCIsImlkX29mX3N0cmluZyIsIndyaXRlX2RhdGEiLCJyZWFkX2RhdGEiLCJmaWVsZF9pZCIsImZpZWxkX2RhdGEiLCJ3cml0ZV9maWxlX2xpbmVfZGV0YWlsIiwicmVhZF9maWxlX2xpbmVfZGV0YWlsIiwicHJpbnRfY29tcHJlc3Npb25fbW9kZXMiLCJzdHJvbmciLCJ3ZWFrIiwiY2F1c2FsIiwiaW5pdGlhbF9zdGF0ZSIsInVwZGF0ZV9zdGF0ZSIsImluaXRfc3RhdGUiLCJjdXJyZW50X3N0YXRlIiwibSIsIm0kMCIsIm0kMSIsIm0kMiIsImMiLCJncmFwaCIsImluZm9zIiwiY20iLCJ0cmFjZV90ZXh0IiwiYXBpX3NuYXBzaG90X2RvdCIsInNuYXBzaG90IiwiYXBpX3NuYXBzaG90X2thcHBhIiwiYXBpX3NpbXVsYXRpb25fc3RhdHVzIiwicHJvZ3Jlc3MiLCJkZXRhaWwiLCJwbG90Iiwib3V0cHV0IiwiYWdlbnRfY291bnQiLCJzcGVjaWVzIiwibXNnX3Byb2Nlc3Nfbm90X3BhdXNlZCIsImV4biIsImdldF9ncmFwaCIsInNldF9ncmFwaCIsImNhdGNoX2Vycm9yIiwiaGFuZGxlciIsInJhbmdlJDAiLCJtZXNzYWdlJDAiLCJyYW5nZSQxIiwibWVzc2FnZSQxIiwiZXJyb3IiLCJtZXNzYWdlJDIiLCJwYXJzZSIsInBhcnNpbmdfY29tcGlsIiwidmFyX292ZXJ3cml0ZSIsInN5c3RlbV9wcm9jZXNzIiwieWllbGQkMCIsImxvZ19idWZmZXIiLCJsb2dfZm9ybSIsImlucHV0c19idWZmZXIiLCJpbnB1dHNfZm9ybSIsImNvbmYiLCJ3YXJuaW5nIiwibXNnIiwiYXN0X2NvbXBpbGVkX2RhdGEiLCJsYXN0eWllbGQiLCJvdXRwdXRzIiwiaW5pdF9sIiwiZW52IiwiY291bnRlciIsInBhcnNlZF9zZWVkIiwic3RhdGUiLCJtYXhDb25zZWN1dGl2ZUNsYXNoIiwiZHVtcElmRGVhZGxvY2tlZCIsImNvbnRhY3RfbWFwIiwic2ltdWxhdGlvbiIsImUkMCIsImZsdXhfbWFwIiwiZmx1eF9uYW1lIiwibmV3X29ic2VydmFibGVzIiwiZmlsZV9saW5lIiwibmEiLCJsaW5lcyIsInN0IiwiYWxyZWFkeV90aGVyZSIsInNuYXBzaG90X2ZpbGUiLCJtaXgiLCJ0aW1lIiwiZmlsZSIsImZpbmFsaXplX3NpbXVsYXRpb24iLCJydW5fc2ltdWxhdGlvbiIsInN0b3BwZWQiLCJyc3RvcCIsIml0ZXIiLCJzdG9wIiwic3RvcCQwIiwic3RhcnQiLCJsZXhidWYiLCJ1c2VyX3NlZWQiLCJzaW11bGF0aW9uX3NlZWQiLCJwYXJzZWRfc2VlZCQwIiwicGFyc2VkX3NlZWQkMSIsInJhbmRvbV9zZWVkIiwicmFuZG9tX3N0YXRlIiwiZmlyc3Rfb2JzIiwicGVydHVyYmF0aW9uIiwiZm9ybWF0dGVyIiwidiIsImNvbnRpbnVlJDAiLCJwYXVzZV9jb25kaXRpb24iLCJlZmZpY2llbmN5IiwiZ2V0X3Jhd190cmFjZSIsImdldF9yYXdfYXN0IiwicnVudGltZV9zdGF0ZSIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwic2VsZl8yIiwid3JpdGUxIiwib2MiLCJuIiwid3JpdGUyIiwid3JpdGU0Iiwid3JpdGU0X2ludCIsIndyaXRlc3RyaW5nIiwiZG9zdGltZV9vZl91bml4dGltZSIsInRtIiwib3Blbl9vdXQiLCJjb21tZW50IiwiY2xvc2Vfb3V0Iiwib2ZpbGUiLCJzdGFydF9jZCIsInZlcnNpb24iLCJkYXRlIiwiY2Rfc2l6ZSIsIm51bV9lbnRyaWVzIiwiYWRkX2VudHJ5X2hlYWRlciIsImV4dHJhIiwibGV2ZWwiLCJtdGltZSIsImFkZF9kYXRhX2Rlc2NyaXB0b3IiLCJjcmMiLCJjb21wcl9zaXplIiwidW5jb21wcl9zaXplIiwiZW50cnkiLCJhZGRfZW50cnkiLCJuYW1lIiwic3RoJDAiLCJzdGgkMSIsInN0aCQyIiwiY3JjJDAiLCJhZGRfZW50cnlfZ2VuZXJhdG9yIiwiZmluaXNoZWQiLCJjaGVjayIsImJ1ZiIsImJpbmRfc2ltdWxhdGlvbiIsInNpbXVsYXRpb24kMCIsImRldGFpbF9wcm9qZWN0aW9uIiwicHJvamVjdGlvbiIsImVycm9ycyIsInNpbXVsYXRpb25fZGV0YWlsIiwiZmlsZV9saW5lcyIsImZpbGVfbGluZV9jYXRhbG9nIiwiZmlsZV9saW5lX2lkIiwiZmlsZV9saW5lX2xpc3QiLCJmbHV4X21hcF9jYXRhbG9nIiwiZmx1eF9tYXBfaWQiLCJmbHV4X21hcHNfbGlzdCIsInNlbGZfMyIsInNlbGZfNCIsInBsb3RfbGltaXQiLCJwbG90X3RpbWVfc2VyaWVzIiwicGxvdF9kZXRhaWxfc2l6ZSIsInBsb3RfbGltaXRfb2Zmc2V0IiwicGxvdF9saW1pdF9wb2ludHMiLCJvZmZzZXQiLCJuYiIsIm5iJDAiLCJuZXdfcGxvdF90aW1lX3NlcmllcyIsInBsb3RfcGFyYW1ldGVyIiwic2VsZl81Iiwic25hcHNob3RzIiwiYWNjIiwic25hcHNob3RfY2F0YWxvZyIsInNuYXBzaG90X2lkIiwic25hcHNob3RfbGlzdCIsInNlbGZfNiIsImhhcmFraXJpIiwiZmFjYWRlIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXJfd2l0aF9zZWVkIiwiY29udGVudCIsImZsdXgiLCJkaW5fbmFtZSIsIm5hbWUkMCIsInNpbXVsYXRpb25fcGVydHVyYmF0aW9uIiwib25fbWVzc2FnZSIsIm1hbmFnZXIiLCJwb3N0X21lc3NhZ2UiLCJ0ZXh0X21lc3NhZ2UiLCJwYWNrIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJkaW5faWQiLCJ2YXJpYWJsZV9vdmVyd3JpdHRlbiIsInBhdHRlcm5fc2hhcmluZyIsInNpbXVsYXRpb25fcGFyYW1ldGVyJDAiLCJyZXNwb25zZSIsImxvZ19tZXNzYWdlIiwic2ltdWxhdGlvbl9zdGF0dXMiLCJpbmZvIiwic2ltdWxhdGlvbl9pZCIsInJlc3BvbnNlX3RleHQiLCJtYWlsYm94ZXMiLCJtYWlsYm94ZXMkMCIsIm1lc3NhZ2VfdGV4dCIsInJlcXVlc3QkNCIsInJlcXVlc3QkMyIsInJlcXVlc3QkMiIsInJlcXVlc3QkMSIsInJlcXVlc3QkMCIsImVyciIsImlkJDAiLCJwb3N0Iiwib3V0YnVmIiwib3V0YiIsImEiLCJiJDAiLCJ1cmxfYXJncyIsIm9wdCIsImtleSIsInN0aCIsImRlZmF1bHQkMCIsImFyZ3MiLCJrIiwic29tZSIsImNvbnN0cnVjdG9yX3Byb2Nlc3NfY29uZmlndXJhdCIsImxhdW5jaF9hZ2VudCIsIm9uQ2xvc2UiLCJtZXNzYWdlX2RlbGltaXRlciIsImNvbW1hbmQiLCJoYW5kbGVyIiwiYnVmZmVyIiwibXNnIiwibXNnJDAiLCJwcmVmaXgiLCJzdWZmaXgiLCJtc2ckMSIsImNvbmZpZ3VyYXRpb24iLCJ4Iiwic2VsZl8xIiwidGltZW91dCIsInN0aCQwIiwic3dpdGNoX3JlIiwic3Rvcl9jb21tYW5kIiwic3dpdGNoX21haWxib3giLCJ1cGRhdGVfc3Rvcl9zdGF0ZSIsInN0b3Jfc3RhdGUiLCJydW5uaW5nX3JlZiIsInN0b3JfcHJvY2VzcyIsIm1lc3NhZ2VfdGV4dCIsIndvcmtlcl9vbm1lc3NhZ2UiLCJkZWJ1Z19wcmludGluZyIsIndvcmtlcl9uYW1lIiwiZXhjZXB0aW9uX2NyZWF0ZXNfbW9kYWwiLCJ3b3JrZXJfcmVjZWl2ZV9mIiwicHJvY2Vzc19tZXNzYWdlIiwicmVzcG9uc2VfdGV4dCIsImhhbmRsZXJfZiIsInJlc3BvbnNlX21lc3NhZ2UiLCJlJDAiLCJlIiwibm9fZXhjX21vZGFsX2FyZyIsInMiLCJzZW5kX3dvcmtlcl9leGNlcHRpb25zX3RvX21vZGEiLCJvbmVycm9yIiwiYXBwbHlfb25lcnJvciIsImVycm9yX3N0cmluZyIsInNpbXVsYXRpb25fbG9hZCIsInBhdHRlcm5TaGFyaW5nIiwib3ZlcndyaXRlcyIsInBhcnNpbmdfY29tcGlsIiwibG9hZCIsImluaXRfa2FzYSIsImluZm9zIiwibG9jYXRvcnMiLCJmaWxlbmFtZSIsInBvcyIsImthc2Ffd29ya2VyIiwia2FzYV9tYWlsYm94Iiwia2Ftb2hhX3dvcmtlciIsImthbW9oYV9tYWlsYm94Iiwia2FzdG9yX3dvcmtlciIsInNlbGZfMiIsInNlbGZfMyIsInNlbGZfNCIsImV4biIsInNwZWNfbGFiZWwiLCJyZW1vdGUiLCJzcGVjX2lkIiwiaHR0cCIsImNsaSIsInJlYWRfc3BlYyIsInVybCIsImNsZWFuZWRfdXJsIiwiY2xlYW5lZCIsImxlbmd0aCIsInJhd19wYXJzZWQiLCJmaWxlX3VybCIsInBhcnNlZCIsInByb3RvY29sIiwiaHR0cHMkMSIsImZpbGUkMSIsImh0dHAkMSIsImh0dHBzJDAiLCJmaWxlJDAiLCJsYWJlbCIsImh0dHAkMCIsImh0dHBzIiwiZmlsZSIsInNldF9zdGF0ZSIsInN0YXRlIiwiY3JlYXRlX21hbmFnZXIiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwiZXJyb3JfbXNnIiwianNfbm9kZV9ydW50aW1lIiwiZXJyb3JfbXNnJDAiLCJjcmVhdGVfc3BlYyIsImlkIiwicnVudGltZSIsImN1cnJlbnRfc3RhdGUkMCIsImN1cnJlbnRfc3RhdGUiLCJtb2RlbCIsImluaXQiLCJob3N0cyIsInVybHMiLCJ1cmwkMCIsInVybHMkMCIsInN5bmMiLCJpbml0X2RlZmF1bHRfcGFyYW1ldGVycyIsInByb2plY3RfZXF1YWwiLCJhIiwiYiIsInN0YXRlX2VxdWFsIiwieSIsIm1vZGVsX2VxdWFsIiwiaW5pdF9zdGF0ZSIsInVwZGF0ZV9wYXJhbWV0ZXJzIiwic3QiLCJwcm9qIiwicHJvamVjdF9wYXJhbWV0ZXJzIiwiZGVmYXVsdF9wYXJhbWV0ZXJzIiwicHJvamVjdF9wYXJhbWV0ZXJzJDAiLCJkZWZhdWx0X3BhcmFtZXRlcnMkMCIsInNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQiLCJwYSIsImxzIiwidmEiLCJzZXRfcGxvdF9wZXJpb2QiLCJwbG90X3BlcmlvZCIsInBhcmFtIiwic2V0X3BhdXNlX2NvbmRpdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInNldF9zZWVkIiwic2VlZCIsInNldF9zdG9yZV90cmFjZSIsInN0b3JlX3RyYWNlIiwic2V0X3Nob3dfZGVhZF9ydWxlcyIsInNob3dfZGVhZF9ydWxlcyIsInNldF9zaG93X2RlYWRfYWdlbnRzIiwic2hvd19kZWFkX2FnZW50cyIsInNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZSIsInNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYSIsImFkZF9wcm9qZWN0Iiwic3RhdGVfdmEiLCJjYXRhbG9nIiwicHJvamVjdF9jYXRhbG9nIiwibWUiLCJvdXQiLCJwcm9qZWN0X21hbmFnZXIiLCJzZXRfY29tcHV0ZXMiLCJwcm9qZWN0X2lzX2NvbXB1dGluZyIsInNldHRlciIsInByb2plY3Rfd2F0Y2hlcl9jYW5jZWwiLCJkZWxheSIsImxvb3AiLCJwYXJhbXMiLCJjcmVhdGVfcHJvamVjdCIsInNldF9wcm9qZWN0IiwiZHVtbXlfbW9kZWwiLCJwIiwibW9kZWxfY2F0YWxvZyIsIm1vZGVsX3BhcmFtZXRlcnMiLCJjdXJyZW50IiwicmVtb3ZlX3Byb2plY3QiLCJzdGF0ZSQwIiwidiIsImgiLCJwcm9qZWN0X2N1cnJlbnQiLCJvdXQkMCIsIm1hbmFnZXIiLCJtIiwiZXhpc3RpbmdfcHJvamVjdHMiLCJhcmdfcGxvdF9wZXJpb2QiLCJkZWZhdWx0JDEiLCJhcmdfcGF1c2VfY29uZGl0aW9uIiwiZGVmYXVsdCQyIiwiYXJnX21vZGVsX3NlZWQiLCJkZWZhdWx0JDMiLCJhcmdfc3RvcmVfdHJhY2UiLCJkZWZhdWx0JDQiLCJhcmdfc2hvd19kZWFkX3J1bGVzIiwiZGVmYXVsdCQ1IiwiYXJnX3Nob3dfZGVhZF9hZ2VudHMiLCJkZWZhdWx0JDYiLCJhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGkiLCJhcmciLCJhcmckMCIsImgkMCIsImFyZyQxIiwiYXJnJDIiLCJoJDEiLCJoJDIiLCJoJDMiLCJoJDQiLCJoJDUiLCJwcm9qZWN0cyIsImFkZF9wcm9qZWN0cyIsInByb2plY3RzJDAiLCJwcm9qZWN0IiwiZXJyb3JzIiwiZXZhbF93aXRoX3Byb2plY3QiLCJvbl9wcm9qZWN0X2NoYW5nZV9hc3luYyIsImVxIiwib24iLCJpbml0X290aGVycyIsIm90aGVycyIsIm90aGVyc19lcSIsImVxX3BhaXIiLCJvdGgiLCJlcnJvcl9tc2ckMiIsImVycm9yX21zZyQxIiwiZHVtbXlfY3Vyc29yX3BvcyIsImJsYW5rX3N0YXRlIiwic2V0X2RpcmVjdG9yeV9zdGF0ZSIsIm1vZGVsX2hvb2tlZCIsInJlZnJlc2hfZmlsZV9ob29rX3NlbmQiLCJyZWZyZXNoX2ZpbGVfaG9vayIsIm5hbWUiLCJjdXJyZW50X2ZpbGVuYW1lIiwiYXBwbHlfb25fY3VycmVudF9wb3Nfb2ZfbW9kZWwiLCJmIiwid2l0aF9jdXJyZW50X3BvcyIsIndpdGhfY3VycmVudF9maWxlIiwiYWN0aXZlIiwiZ2V0X2ZpbGUiLCJ0ZXh0IiwibmFtZSQwIiwicmFuayIsInNlbmRfcmVmcmVzaCIsImxpbmUiLCJvdXRfb2Zfc3luYyIsImNvbnRlbnQiLCJ1cGRhdGVfZGlyZWN0b3J5IiwicmVzZXQiLCJhY2MiLCJwb3NpdGlvbiIsImRpcmVjdG9yeSIsImNyZWF0ZV9maWxlIiwiZmlsZV9tZXRhZGF0YSIsIm1hdGNoaW5nX2ZpbGUiLCJtZXRhZGF0YSIsIm1heF9wb3MiLCJzZWxlY3RfZmlsZSIsInQiLCJzZXRfY29udGVudCIsInNldF9jb21waWxlIiwiZmlsZV9pZCIsImNvbXBpbGUiLCJyYW5rJDAiLCJyZW1vdmVfZmlsZSIsImxvY2FsIiwiZG9fYV9tb3ZlIiwieCQwIiwiY3Vyc29yX3BvcyIsInNldF9wb3NpdGlvbiIsIm9yZGVyX2ZpbGVzIiwiZmlsZW5hbWVzIiwib3JkZXJfZmlsZSIsImluZGV4IiwidGFpbCIsImN1cnNvcl9hY3Rpdml0eSIsImNoIiwiY2FuZCIsImxvYWRfbW9kZWxzIiwibW9kZWxzIiwiYWRkX21vZGVscyIsImxvYWRfZmlsZSIsIm1vZGVscyQwIiwidSIsImZpbGVjb250ZW50IiwiZGVmYXVsdEZvbnRTaXplIiwiY3VycmVudEZvbnRTaXplIiwibWluRm9udFNpemUiLCJtYXhGb250U2l6ZSIsInVwZGF0ZUZvbnRTaXplIiwiZGVsdGEiLCJhZ2VudF9jb2xvcmluZyIsImVycm9yX21zZyQ4IiwiZXJyb3JfbXNnJDciLCJlcnJvcl9tc2ckNiIsImVycm9yX21zZyQ1IiwiZXJyb3JfbXNnJDQiLCJlcnJvcl9tc2ckMyIsImdldF9zaW11bGF0aW9uX2luZm8iLCJzaW11bGF0aW9uIiwic2ltdWxhdGlvbl9pbmZvIiwic2ltdWxhdGlvbl9zdGF0dXNfdG9fc3RyaW5nIiwibW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSIsInVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIiwic2ltdWxhdGlvbl9zdGF0ZSIsImV2YWxfd2l0aF9zaW1fbWFuYWdlciIsInByb2plY3RfaGFuZGxlciIsImZhaWxfbHd0IiwiZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIiwic3RvcHBlZCIsImluaXRpYWxpemluZyIsInN0aCQxIiwicmVhZHkiLCJldmFsX3doZW5fcmVhZHkiLCJzbGVlcF90aW1lIiwicmVmcmVzaCIsImNvbnRpbnVlX3NpbXVsYXRpb24iLCJwYXVzZV9zaW11bGF0aW9uIiwic3RvcF9zaW11bGF0aW9uIiwic3RhcnRfc2ltdWxhdGlvbiIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwib25fZXJyb3IiLCJlcnJvcl9tc2dzIiwiZXJyb3IiLCJtZXNzYWdlIiwic2ltdWxhdGlvbl9zdGF0dXMiLCJpbnRlcnZlbmVfc2ltdWxhdGlvbiIsImNvZGUiLCJvbmxvYWQiLCJzZXRfbW9kZWxfaW50ZXJ2ZW50aW9uIiwibW9kZWxfaW50ZXJ2ZW50aW9uIiwic3RhdGVfZXJyb3Jfc2V0Iiwic3RhdGVfZXJyb3IiLCJoYXNfZXJyb3JzIiwiYWRkX2Vycm9yIiwibG9jYXRpb24iLCJjdXJyZW50X3N0YXRlX2Vycm9yIiwibmV3X3N0YXRlX2Vycm9yIiwidmFsdWUiLCJ3cmFwIiwiciIsImFwcGVuZCIsInRvZ2dsZV9lbGVtZW50IiwicHJvamVjdGlvbiIsImNvbnRlbnQiLCJtb2RlbCIsImxhYmVsX25ld3MiLCJ0YWJfaXNfYWN0aXZlIiwiY291bnRlciIsInNpbXVsYXRpb25faW5mbyIsImxhc3RfdmFsdWUiLCJ0YWJfYWN0aXZlIiwidiIsImJhZGdlIiwiY291bnQiLCJncmFwaF9kaXNwbGF5X2lkIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsIm5hdmxpIiwibm9uZV9jaGVja2JveCIsIndlYWtfY2hlY2tib3giLCJzdHJvbmdfY2hlY2tib3giLCJsYXVuY2hfYnV0dG9uIiwibGlzdF9jb250cm9sIiwic3RvcnlfbGlzdCIsImNtIiwiaWQiLCJzdG9yeV9saXN0X2h0bWwiLCJzZWxlY3Rfc3RvcmllcyIsInNldHVwX2Zvcm0iLCJsb2dfY29udHJvbCIsInN0b3J5X2xvZyIsInNldF9pbmZvIiwiY3VycmVudF9pbmZvIiwibGluZSIsInN0b3J5X2xvZ19odG1sIiwibG9nX2RpdiIsImxvZ19wYW5lbCIsInN0b3J5X2dyYXBoIiwibGlmdF9yZXN1bHQiLCJ4IiwiZSIsImRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCIsIm1hbmFnZXIiLCJjYXVzYWwiLCJ3ZWFrIiwic3Ryb25nIiwicHJlZF9pZCIsInNldF9hX3N0b3J5IiwidmEiLCJkIiwiZiIsImluc3BlY3Rfc3RvcmllcyIsImlzX2NvbXB1dGluZyIsImFjYyIsInN0b3J5X2xpc3RfZnJvbV9tYW5hZ2VyIiwibWFuYWdlcl9pc19jb21wdXRpbmciLCJsb2dfbGluZXMiLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsInRyYWNlIiwib25yZXNpemUiLCJkaXNwbGF5X2lkIiwiZXhwb3J0X2lkIiwiYWNjdXJhY3lfY2hvb3Nlcl9pZCIsInNldF9hY2N1cmFjeSIsImFjY3VyYWN5IiwiY29udGFjdF9tYXBfanMiLCJtaCIsImNvbnRhY3RfanNvbiIsImNvbnRhY3QiLCJjb250YWN0JDAiLCJtYXBfanNvbiIsImRhdGEiLCJjb250YWN0X21hcF90ZXh0IiwiY29uZmlndXJhdGlvbiIsIm9wdGlvbl9nZW4iLCJsIiwiYWNjdXJhY3lfY2hvb3NlciIsImFjY3VyYWN5X2Zvcm0iLCJ2YSQwIiwic2VsZWN0X2lkIiwiZm9ybWF0X3NlbGVjdF9pZCIsInNldF9jdXJyZW50X3NuYXBzaG90IiwiY3VycmVudF9zbmFwc2hvdCIsInNldF9kaXNwbGF5X2Zvcm1hdCIsImRpc3BsYXlfZm9ybWF0Iiwic25hcHNob3RfY291bnQiLCJzdGF0ZSIsInN0YXRlJDAiLCJjb25maWd1cmF0aW9uX3RlbXBsYXRlIiwiYWRkaXRpb25hbF9oYW5kbGVycyIsInMiLCJqc29uX2hhbmRsZXIiLCJrYXBwYV9oYW5kbGVyIiwiZmlsZW5hbWUiLCJkb3RfaGFuZGxlciIsImRlZmF1bHRfaGFuZGxlcnMiLCJjb25maWd1cmF0aW9uX2thcHBhIiwiY29uZmlndXJhdGlvbl9ncmFwaCIsInJlbmRlcl9zbmFwc2hvdF9ncmFwaCIsInNuYXBzaG90X2pzIiwic25hcHNob3QiLCJqc29uIiwiY29udGFjdF9tYXAiLCJzZWxlY3Rfc25hcHNob3QiLCJmaWxlaW5kZXgiLCJpbmRleCIsInNpbXVsYXRpb25fb3V0cHV0IiwiaW5kZXgkMCIsInNuYXBzaG90X2lkcyIsInNuYXBzaG90X2lkIiwiZiQwIiwic25hcHNob3RfY2xhc3MiLCJlbXB0eSIsInNpbmdsZSIsIm11bHRpcGxlIiwieG1sIiwiaSIsImxpc3QiLCJzbmFwc2hvdF9maWxlIiwic25hcHNob3RfbGFiZWwiLCJzbmFwc2hvdF9zZWxlY3QiLCJzbmFwc2hvdF9jaG9vc2VyIiwidG9nZ2xlX2NvbnRyb2xzIiwia2FwcGEiLCJncmFwaCIsImV4cG9ydF9jb250cm9scyIsInNuYXBzaG90JDAiLCJrYXBwYV9zbmFwc2hvdF9kaXNwbGF5Iiwia2FwcGFfZ3JhcGhfZGlzcGxheSIsImZvcm1hdF9jaG9vc2VyIiwidXBkYXRlX2Zvcm1hdCIsImZvcm1hdF90ZXh0IiwiZm9ybWF0IiwiZGl2X2Rpc3BsYXlfaWQiLCJwbG90X3BvaW50c19pbnB1dF9pZCIsInBsb3Rfb2Zmc2V0X2lucHV0X2lkIiwic2V0X29mZnNldCIsIm9mZnNldCIsImRlZmF1bHRfcG9pbnQiLCJzZXRfcG9pbnRzIiwicG9pbnQiLCJwbG90X3JlZiIsImhhc19wbG90IiwiZXhwb3J0X2pzb24iLCJwbG90IiwiZXhwb3J0JDAiLCJtaW1lIiwicGxvdF9wb2ludHNfaW5wdXQiLCJtYXhfb2Zmc2V0IiwicGxvdF9vZmZzZXRfaW5wdXQiLCJ1cGRhdGVfcGxvdCIsImpzX3Bsb3QiLCJzaW11bGF0aW9uX21vZGVsIiwic2ltdWxhdGlvbl9pbmZvJDAiLCJwbG90X3NpemUiLCJvZmZzZXRfbWF4Iiwib2xkX29mZnNldCIsIm9mZnNldCQwIiwib2Zmc2V0X2N1cnJlbnQiLCJuZXdfb2Zmc2V0IiwicG9pbnQkMCIsIm91dCIsInBsb3Rfb2Zmc2V0X2lucHV0X2RvbSIsInBsb3RfcG9pbnRzX3N0cmluZyIsInBsb3RfcG9pbnQkMCIsInBsb3RfcG9pbnRzX29wdGlvbiIsInBsb3RfcG9pbnRzIiwicGxvdF9wb2ludCIsInBsb3RfcG9pbnRfc3RyaW5nIiwidmFsdWUiLCJzZXRfY3VycmVudF9maWxlIiwiY3VycmVudF9maWxlIiwidXBkYXRlX291dHB1dHMiLCJrZXkiLCJsaW5lcyIsImZpbGVfY291bnQiLCJmaWxlX2xpbmVfaWRzIiwiY3VycmVudF9maWxlX2lkIiwiZmlsZV9vcHRpb25zIiwic2VsZWN0X2ZpbGUiLCJmaWxlX3NlbGVjdCIsImZpbGVfY29udGVudCIsInQiLCJjb250ZW50X2xvZ19pZCIsIngkMCIsImxvZyIsInRleHQiLCJ3aXRoX2ZpbGUiLCJoYW5kbGVyIiwic2V0X2NvbnRlbnQiLCJmaWxlY29udGVudCIsImN1cnJlbnRfZmlsZW5hbWUiLCJyIiwiciQwIiwibXNnIiwiY3JlYXRlX2ZpbGUiLCJvcHQiLCJzdGgiLCJ0eHQiLCJzZXRfZmlsZSIsImZpbGVfaWQiLCJjbG9zZV9maWxlIiwic2V0X2ZpbGVfY29tcGlsZSIsInJhbmsiLCJjb21waWxlIiwib3JkZXJfZmlsZXMiLCJmaWxlbmFtZXMiLCJleHBvcnRfY3VycmVudF9maWxlIiwiZmlsZV9uZXdfbW9kYWxfaWQiLCJmaWxlX25ld19pbnB1dF9pZCIsImZpbGVfZHJvcGRvd25fbWVudV9pZCIsImZpbGVfbmV3X2xpX2lkIiwiZmlsZV9vcGVuX2xpX2lkIiwiZmlsZV9vcGVuX3NlbGVjdG9yX2lkIiwiZmlsZV9jbG9zZV9saV9pZCIsImZpbGVfZXhwb3J0X2xpX2lkIiwiZmlsZV9jb21waWxlX2NoZWNrYm94IiwiZWxlbWVudF9nZXRfZmlsZW5hbWUiLCJlbGVtZW50IiwiZWxlbWVudF9zZXRfZmlsZW5hbWUiLCJuYW1lIiwiZmlsZV9uZXdfaW5wdXQiLCJvcGVuX2lucHV0IiwiaGlkZV9vbl9lbXB0eSIsImN1cnJlbnRfZmlsZV9wb3MiLCJsb2NhbCIsImlzX2NoZWNrZWQiLCJsaV9jbGFzcyIsImNoZWNrZWRfYXR0cmlidXRlIiwiZmlsZV9saSIsInNlcGFyYXRvcl9saSIsIm5ld19saSIsIm9wZW5fbGkiLCJjbG9zZV9saSIsImV4cG9ydF9saSIsImxpX2xpc3QiLCJmaWxlIiwib3V0X29mX3N5bmMiLCJmaWxlX3NlbGVjdF9oYW5kbGVyIiwiZmlsZXMiLCJvcGVuX2lucHV0X2RvbSIsInRhcmdldCIsInRvZ2dsZV9idXR0b25faWQiLCJwYW5lbF9oZWFkaW5nX2dyb3VwX2lkIiwiY29kZW1pcnJvcl9pZCIsImVkaXRvcl9wYW5lbF9pZCIsInNldF9lZGl0b3JfZnVsbCIsImVkaXRvcl9mdWxsIiwic2V0X2ZpbGVuYW1lIiwibW92ZV9jdXJzb3JfaG9va19zZW5kIiwibW92ZV9jdXJzb3JfaG9vayIsImZpbGVfbGFiZWwiLCJ0b2dnbGVfYnV0dG9uIiwibWVudV9lZGl0b3JfZmlsZV9jb250ZW50IiwiYnV0dG9ucyIsInBhbmVsX2hlYWRpbmciLCJ0ZXh0YXJlYSIsImVycm9ycyIsInBvc2l0aW9uIiwicCIsInJhbmdlIiwidmFsdWUkMCIsImNvZGVtaXJyb3IiLCJ0aW1lb3V0IiwiY2hhbmdlIiwidGltZW91dCQwIiwiZGVsYXkiLCJmaWxlbmFtZSQwIiwiY29kZW1pcnJvciQwIiwiY2giLCJlZGl0b3JfZnVsbCQwIiwicmVmcmVzaCIsImNhbmQiLCJtb2RlIiwidG9wIiwibWlkZGxlSGVpZ2h0Iiwic2Nyb2xsTGluZSIsInBvcyIsImJlZyIsImZpcnN0IiwiZW4iLCJsYXN0IiwidGl0bGUiLCJtIiwiY29uc3RyYWludHMiLCJwYW5lbHMiLCJiIiwiYSIsImxlbW1hIiwiaHlwIiwiY29uY2x1c2lvbiIsInNpdGVfZ3JhcGgiLCJsaXN0JDQiLCJsaXN0JDAiLCJsaXN0JDEiLCJib29sIiwibGlzdCQyIiwibGlzdCQzIiwibGlzdCQ1IiwibGlzdCQ2IiwidGV4dHMiLCJjb25zdHJhaW50c19kaXYiLCJpbmZsdWVuY2Vfc3R5bGVfaWQiLCJvcmlnaW5fbGFiZWwiLCJyZW1vdmVfbGlzdCIsImFkZF9saXN0IiwiZW1wdHlfc3BoZXJlIiwiZHVtbXlfbW9kZWwiLCJ0b3RhbF9pbnB1dF9pZCIsImZ3ZF9pbnB1dF9pZCIsImJ3ZF9pbnB1dF9pZCIsInRyYWNrX2N1cnNvcl9zd2l0Y2hfaWQiLCJyZW5kZXJpbmdfY2hvb3Nlcl9pZCIsInRhYl9pc19hY3RpdmVfc2lnbmFsIiwidHJhY2tfY3Vyc29yX3NldCIsInRyYWNrX2N1cnNvciIsInRyYWNrX2N1cnNvcl9zaWduYWwiLCJzZXRfbW9kZWwiLCJtb2RlbF9zaWduYWwiLCJpbmZsdWVuY2Vfbm9kZV9sYWJlbCIsInVwZGF0ZV9tb2RlbF9ncmFwaCIsImciLCJ1cGRhdGVfbW9kZWwiLCJub2RlIiwib3JpZ2luIiwiaW5mbHVlbmNlbWFwIiwidG90YWxfaW5wdXQiLCJmd2RfaW5wdXQiLCJid2RfaW5wdXQiLCJuZXh0X25vZGUiLCJwcmV2X25vZGUiLCJyZWNlbnRlciIsInRyYWNrX2VuYWJsZWQiLCJyZW1vdmVfbGlzdCQwIiwiYWRkX2xpc3QkMCIsIm9uX2NsaWNrIiwidHJhY2tfY3Vyc29yX3N3aXRjaCIsImV4cG9ydF9jb25maWciLCJpbmZsdWVuY2VzX3N0cmluZyIsInJlbmRlcmluZyIsImwkMCIsInJlbmRlcmluZ19jaG9vc2VyIiwiaXNfY2VudGVyIiwib3JpZ2luX3Nob3J0X29wdCIsImlkJDAiLCJhJDAiLCJ0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb24iLCJpbmZsdWVuY2VfbWFwIiwibmFtZXIiLCJvcmlnaW5faWRfb3B0Iiwib3JpZ2luX2lkIiwic3JjIiwiZHN0IiwiYnkiLCJvbiIsInYkMCIsInBvc2l0aXZlX2J5IiwicG9zaXRpdmVfb24iLCJuZWdhdGl2ZV9ieSIsIm5lZ2F0aXZlX29uIiwicG9wX2NlbGwiLCJwb3NpdGl2ZSIsImluZmx1ZW5jZV9zcGhlcmUiLCJncmFwaF9mb3JtIiwic3BoZXJlIiwib3JpZ2luX2xhYmVsX29wdCIsImVycm9yIiwibGFiZWwiLCJieSQxIiwib24kMSIsImJ5JDAiLCJvbiQwIiwibyIsImFjYyQwIiwib3V0cyIsIm91dHMkMCIsIm9yaWdpbl9sYWJlbCQwIiwidG90YWwiLCJid2QiLCJmd2QiLCJpbmZsdWVuY2VzIiwiYnVmIiwiZm10IiwibG9nZ2VyIiwibG9nZ2VyX2dyYXBoIiwibm9kZXMiLCJiaWdnZXN0X2lkIiwibiIsIm1heF9ydWxlX2lkIiwiZ2V0X2lkX29mX25vZGVfaWQiLCJub2RlX2lkIiwiY29udGV4dHVhbF9oZWxwIiwiZmlsbGNvbG9yIiwiZGlyZWN0aXZlcyIsInBvcyQwIiwiY29udGV4dHVhbF9oZWxwJDAiLCJmaWxsY29sb3IkMCIsInByaW50X21hcHMiLCJtYXAiLCJzb3VyY2UiLCJzb3VyY2VfaWQiLCJsYWJlbF9saXN0IiwidGFyZ2V0X2lkIiwibGFiZWxfc3RyaW5nIiwiZGlyZWN0aXZlcyQwIiwiZ3JhcGhfanNvbiIsInVwZGF0ZV9tb2RlbF93aXRoX29yaWdpbl9yZWZpbiIsIm9yaWdpbl9yZWZpbmVkIiwiY3Vyc29yX3BvcyIsInNpdGUiLCJzY2MiLCJzY2MkMCIsImxpc3RfZWRnZXMiLCJjIiwib3V0cHV0IiwidGFiIiwic2tpcCIsInBsdXJhbCIsInJpZ2h0c3VicGFuZWxfaWQiLCJjaGlsZHNfaGlkZSIsImRvbnRfZ2NfbWUiLCJydWxlIiwid2FybmluZ3MiLCJhZ2VudCIsImNvbnRleHRfbGlzdCIsInRhYiQwIiwic2tpcCQwIiwicGx1cmFsJDAiLCJzZXRfZGluX2lkIiwiZGluX2lkIiwiZGluX2lkcyIsImRpbl9saXN0IiwiZGluX3NlbGVjdCIsImRpbl9kYXRhIiwiZGluIiwiZGluX2hlYWRlciIsImFsbCIsImJvZHkiLCJkaW5fdGFibGUiLCJ0aGVhZCIsImV4cG9ydF9jdXJyZW50X2RpbiIsInRvX3N0cmluZyIsImV4cG9ydF9jb25maWd1cmF0aW9uIiwibmF2dGFic19pZCIsIm5hdmNvbnRlbnRzX2lkIiwibmF2dGFicyIsInN0b3J5X2NsYXNzIiwibmF2Y29udGVudHMiLCJyJDEiLCJjcmVhdGVfcHJvamVjdCIsInByb2plY3RfaWQiLCJzZXRfcHJvamVjdCIsImNsb3NlX3Byb2plY3QiLCJzZXRfbWFuYWdlciIsInJ1bnRpbWVfaWQiLCJjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWQiLCJwcmVmZXJlbmNlc19tb2RhbF9pZCIsInByZWZlcmVuY2VzX2J1dHRvbiIsIm9wdGlvbl9zZWVkX2lucHV0Iiwib3B0aW9uX3dpdGh0cmFjZSIsIm9wdGlvbl93aXRoZGVhZHJ1bGVzIiwib3B0aW9uX3dpdGhkZWFkYWdlbnRzIiwib3B0aW9uX3dpdGhpcnJldmVyc2libGUiLCJkZWNyZWFzZV9mb250IiwiaW5jcmVhc2VfZm9udCIsImxpc3RfdCIsImN1cnJlbnRfaWQiLCJzcGVjIiwic3BlY19pZCIsImJhY2tlbmRfb3B0aW9ucyIsImJhY2tlbmRfc2VsZWN0IiwiYm9kaWVzIiwic2V0X2J1dHRvbiIsInNhdmVfYnV0dG9uIiwiaGVhZCIsImZvb3QiLCJtb2RhbCIsInNldF9hY3Rpb24iLCJpbnB1dF92YWx1ZSIsIm1vZGVsX3NlZWQiLCJzcCIsInByb2plY3RfaWRfbW9kYWxfaWQiLCJwcm9qZWN0X2lkX2lucHV0IiwibGlfbmV3IiwibGlfcHJlZnMiLCJzZXR0aW5nc19jbGllbnRfaWQiLCJtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZyIsIm1vZGVsX3Byb2plY3RfaWQiLCJjdXJyZW50X3Byb2plY3RfaWQiLCJzcGFuX2Nsb3NlIiwiZXZlbnQiLCJjbGFzc2VzIiwiY29tcHV0aW5nIiwiYV9wcm9qZWN0IiwiY29udGludWVfc2ltdWxhdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInBhdXNlX3NpbXVsYXRpb24iLCJzdG9wX3NpbXVsYXRpb24iLCJzdGFydF9zaW11bGF0aW9uIiwicGFyYW0kMCIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwiaW50ZXJ2ZW5lX3NpbXVsYXRpb24iLCJtb2RlbF9wZXJ0dXJiYXRpb24iLCJmb2N1c19yYW5nZSIsInNpbXVsYXRpb25fdHJhY2UiLCJkYXRhX3N0cmluZyIsInNpbXVsYXRpb25fb3V0cHV0cyIsImRhdGFfYmlnc3RyaW5nIiwiaGlkZGVuX2NsYXNzIiwidmlzaWJsZV9jbGFzcyIsImlkJDEiLCJtZXNzYWdlX25hdl9pbmNfaWQiLCJtZXNzYWdlX25hdl9kZWNfaWQiLCJtZXNzYWdlX2ZpbGVfbGFiZWxfaWQiLCJpZCQyIiwiaWQkMyIsImlkJDQiLCJpZCQ1IiwiaWQkNiIsImlkJDciLCJpZCQ4IiwiaWQkOSIsInZpc2libGVfb25fc3RhdGVzIiwiYV9jbGFzcyIsImN1cnJlbnRfc3RhdGUiLCJpbnB1dCIsImJ1dHRvbiIsImZvcm0iLCJzaWduYWxfY2hhbmdlIiwic2lnbmFsX2hhbmRsZXIiLCJpbnB1dCQwIiwiZG9tIiwibGVuZ3RoIiwiaW5wdXQkMSIsImVycm9yX2luZGV4X3NldCIsImVycm9yX2luZGV4Iiwic2FuaXRpemVfaW5kZXgiLCJpbmRleCQxIiwiZ2V0X21lc3NhZ2UiLCJtZXNzYWdlX25hdl90ZXh0IiwibWVzc2FnZV9uYXZfZGVjIiwibWVzc2FnZV9uYXZfaW5jIiwibWVzc2FnZV9uYXYiLCJtZXNzYWdlIiwicmFuZ2UkMCIsImZpbGVfbGFiZWxfdGV4dCIsImVycm9yX21lc3NhZ2VfdGV4dCIsImVycm9yX21lc3NhZ2UiLCJhbGVydF9tZXNzYWdlcyIsImluZGV4X2NsaWNrX2hhbmRsZXIiLCJkZWx0YSIsImJ1dHRvbiQwIiwiYnV0dG9uJDEiLCJidXR0b24kMiIsImJ1dHRvbiQzIiwiYnV0dG9uJDQiLCJidXR0b24kNSIsInByb2dyZXNzX2JhciIsInBlcmNlbnRfc2lnbmFsIiwidmFsdWVfc2lnbmFsIiwidHJhY2tlZF9ldmVudHMiLCJzdGF0dXMiLCJ0cmFja2VkX2V2ZW50cyQwIiwic2V0X3N0YXRlX2xvZyIsInN0YXRlX2xvZyIsImVmZiIsImN1cnJlbnRfZXZlbnQiLCJ0aW1lIiwidGltZSQwIiwidGltZV9wZXJjZW50IiwidGltZV9wZXJjZW50JDAiLCJldmVudCQwIiwiZXZlbnRfcGVyY2VudGFnZSIsImV2ZW50X3BlcmNlbnRhZ2UkMCIsInN0b3BwZWRfYm9keSIsInN0b3BwZWRfcm93IiwicGF1c2VkX3JvdyIsImZvb3RlciIsImRlYnVnIiwiY29udGVudCQwIiwicmVzZXRfdmFsdWUiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJkb20kMSIsImRvbSQyIiwib25sb2FkIiwibWFpbiIsIngiXSwic291cmNlcyI6WyIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK3J1bnRpbWVfZXZlbnRzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2Jhc2VfaW50ZXJuYWxoYXNoX3R5cGVzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8rY29tcGFyZS5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytiaWdzdHJpbmcuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcnVudGltZS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8rc3luYy5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK3BybmcuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxBdG9taWMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0ZGxpYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcGVydmFzaXZlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC91Y2hhci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2xleGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcGFyc2luZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9hcmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3ByaW50ZXhjLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2djLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zY2FuZi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxNb2QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2dlbmxleC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZXBoZW1lcm9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY29tcGxleC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lX18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc19vZl9vY2FtbF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9kb20ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3R5cGVkX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9kb21faHRtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZm9ybS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3dvcmtlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd2ViU29ja2V0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3JlZ2V4cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvdXJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3Jlc2l6ZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9wZXJmb3JtYW5jZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9ldmVudHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9zdmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9maXJlYnVnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9nZW9sb2NhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ludGwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9mbXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2NzZXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9hdXRvbWF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY29sb3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvZW1hY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvZ2xvYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcGVybC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcG9zaXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX3dyYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfcHJpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX2l0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3Ivc3ZnX2YubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IvaHRtbF9mLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC90eXhtbF94bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL3R5eG1sX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvdHl4bWxfaHRtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmVhY3RpdmVEYXRhL3JlYWN0aXZlRGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtdHl4bWwvanNfb2Zfb2NhbWxfdHl4bWxfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtdHl4bWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC90eXhtbF9jYXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC90eXhtbF9qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zd2l0Y2gubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc2VxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfcHF1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfcG9vbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9tdmFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X211dGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X2NvbmRpdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0X3JlYWN0L2x3dF9yZWFjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2pzX29mX29jYW1sX2x3dF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X3htbEh0dHBSZXF1ZXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzb25wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2x3dF9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvanNfb2Zfb2NhbWxfbHd0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2NhbWwvY2FtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvc2V4cGxpYjAvc2V4cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvc2V4cGxpYjAvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvc2V4cGxpYjAvc2V4cF9jb252Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcG9seTAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaW1wb3J0MC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9hcnJheTAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvY2hhcjAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaW50MC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9saXN0MC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3BweF9jb21wYXJlX2xpYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9wcHhfaGFzaF9saWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS93b3JkX3NpemUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcHJldHR5X3ByaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3dpdGhfcmV0dXJuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvbW9uYWQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYXBwbGljYXRpdmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYnl0ZXMwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvZWl0aGVyMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9zdHJpbmcwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvY29udGFpbmVyX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2xhenkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcmFuZG9tX3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvZm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvb3JkZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9zaWduMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9jb21wYXJhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9iaW5hcnlfc2VhcmNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYmxpdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvc2V4cGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2luZGV4ZWRfY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL29ial9hcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS91bmlmb3JtX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9jaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2J5dGVzX3RyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludF9jb252ZXJzaW9ucy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9wb3dfb3ZlcmZsb3dfYm91bmRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3BvcGNvdW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3R5cGVfZXF1YWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL21heWJlX2JvdW5kLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL21hcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NldC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9yZWYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZTAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludDYzX2VtdWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9pbnQ2My5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYXZsdHJlZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYmFzZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDE0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDNfNTAyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAyXzUwMy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAyXzUwMS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMV81MDIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMV81MDAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDBfNTAxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF81MDAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDE0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDExLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDExLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQxMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA1Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDA1Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwMl80MDMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIva2V5d29yZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3Qvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdC9hc3RfaGVscGVyX2xpdGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3QvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0L3dhcm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0L2xvY2F0aW9uX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC1jb21waWxlci1saWJzL3NoYWRvdy9vY2FtbF9zaGFkb3cubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhfZGVyaXZlcnMvcHB4X2Rlcml2ZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvdHJhdmVyc2VfYnVpbHRpbnMvcHB4bGliX3RyYXZlcnNlX2J1aWx0aW5zLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0X3BhdHRlcm4wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvbG9jLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9jYWxsZXJfaWQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9zcGVsbGNoZWNrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdF9wYXR0ZXJuX2dlbmVyYXRlZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXR0cmlidXRlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvY29kZV9wYXRoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RfdHJhdmVyc2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9za2lwX2hhc2hfYmFuZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvY29kZV9tYXRjaGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvZXh0ZW5zaW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvcmVjb25jaWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvcXVvdGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9sb2NhdGlvbl9jaGVjay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL29wdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9pZ25vcmVfdW51c2VkX3dhcm5pbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9kZXJpdmluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvcHB4bGliLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhfaW5saW5lX3Rlc3QvbGlibmFtZS9wcHhfaW5saW5lX3Rlc3RfbGlibmFtZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4X2lubGluZV90ZXN0L3BweF9pbmxpbmVfdGVzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4X2lubGluZV90ZXN0L2NvbmZpZy9pbmxpbmVfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweF9zZXhwX2NvbnYvcnVudGltZS1saWIvcHB4X3NleHBfY29udl9saWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweF9lbnVtZXJhdGUvcnVudGltZS1saWIvcHB4X2VudW1lcmF0ZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliX25vX2pzb28vaG9va2VkLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi95b2pzb24veW9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdmVyc2lvbi92ZXJzaW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdXRpbHMvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy90b29scy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2pzb25VdGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvZHluYW1pY0FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbGFyZ2VBcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3N0b3AubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9zZXRNYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9tb2RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvb3B0aW9uX3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9sb2MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9wcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3ZhbE1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3Jlc3VsdF91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcmVuYW1pbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9yYW5kb21fdHJlZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3BwX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9vcGVyYXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL25ici5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL0V4Y2VwdGlvbkRlZm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9uYW1lZERlY2xzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbGlzdF91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvaW50Q29sbGVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2luZmluaXRlX2J1ZmZlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9oYXNoZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ZyYWN0aW9ucy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ZpZm8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jcmMzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NvbG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY2lyY3VsYXJfYnVmZmVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NhY2hlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvYmlnYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvYmFzZTY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy91c2VyX2dyYXBoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9zaWduYXR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9hZ2VudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvZWRnZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL25hdmlnYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL2NvdW50ZXJzX2luZm8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3Jhd19taXh0dXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9hbGdfZXhwci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vY29udGFjdF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL21hdGNoaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9pbnN0YW50aWF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wcmltaXRpdmVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9sS2FwcGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm5fY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm5fZGVjb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vbW9kZWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2thcHBhX3ByaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2NvbmZpZ3VyYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2FsZ19leHByX2V4dHJhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi90cmFjZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vY291bnRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZmx1eG1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vcm9vdHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2luc3RhbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZXhwcl9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZ2VuZXJpY19ydWxlX2ludGVycHJldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9zdGF0ZV9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vcmVwbGF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9hc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2NvdW50ZXJzX2NvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9sS2FwcGFfY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHkiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2NzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2xleGVyNC5tbGwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tsZXhlcjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tmaWxlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seSIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thbW9oYV9tcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2V2YWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2V2YWx1YXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9zdXBlcmFyZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9zdXBlcmFyZ1RrLm5vdGsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvY29tbW9uX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcnVuX2NsaV9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3Byb2dyZXNzX3JlcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9rYXBwYV9maWxlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9wcF9zdmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcGFyYW1ldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL291dHB1dHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkva2FzaW1fYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9jbGlfaW5pdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9hZ2VudF9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvdHlwZV9pbnRlcmZhY2UvcHVibGljX2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9sb2dnaW5nL2xvZ2dlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9sb2dnaW5nL2xvZ2dlcnNfc3RyaW5nX29mX29wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xhc3NpY2FsX2dyYXBocy9ncmFwaF9sb2dnZXJzX3NpZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfbG9nZ2Vycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvc3ltYm9sX3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9yZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2V4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9yZW1hbmVudF9wYXJhbWV0ZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9vZGVfYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvaGVhZGVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvZmlsZU5hbWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9nZXRfb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvdWlfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvd2lkZ2V0X2V4cG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliL2pzX3N0b3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvanNfc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2xpYi9qc19wbG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvanNfZ3JhcGhsb2dnZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2xpYi9qc19mbHV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvanNfY29udGFjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliL2h0bWxfdXRpbGl0eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliL2hvb2tlZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliL2NvZGVtaXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Vhc3ktZm9ybWF0L2Vhc3lfZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3NoYXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfaW5idWYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9vdXRidWYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV92aW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfaW8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9kdW1wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9vdl9ydW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL29qX3J1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvb2JfcnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9qc29uX2FkYXB0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9lcnJvcl9oYW5kbGVycy9leGNlcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9lcnJvcl9oYW5kbGVycy9saWZ0X2Vycm9yX2xvZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wcm9maWxpbmcvc3RvcnlQcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL21hcF93cmFwcGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy93b3JraW5nX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2ludF9zdG9yYWdlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy90b29sc19rYXNhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9taXNjX3NhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9oYXNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9ncmFwaHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2RpY3Rpb25hcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy90aWNrX3N0b3JpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ncmFwaF9jbG9zdXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2F1c2FsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHJlZGljYXRlX21hcHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wcmlvcml0eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3N0b3J5X2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jZmxvd19oYW5kbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cva2FwcGFfaW5zdGFudGlhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3BvX2N1dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3BzZXVkb19pbnZlcnNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tib2FyZF9nZW5lcmF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tib2FyZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3Byb3BhZ2F0aW9uX2hldXJpc3RpY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9nZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2JsYWNrX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9kYWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy91dGlsaXRpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy91dGlsaXRpZXNfZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2Zsb3dfanNfaW50ZXJmYWNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY29tcHJlc3Npb25fbWFpbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2thc3Rvcl9tcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9kYWcyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX3R5cGVzX2oubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvc3dpdGNobWFuX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9tcGlfbWVzc2FnZV9qLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc3Rvcl9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FwcGFfZmFjYWRlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2Vudmlyb25tZW50X21lbW9yeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9mYWtlemlwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc2ltX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FzaW1fbXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc2ltX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYXNhX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYW1vaGFfY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9jb21tb25fc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlL3J1bnRpbWVfcHJvY2Vzc2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9ydW50aW1lX3dlYl93b3JrZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9zdGF0ZV9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9zdGF0ZV9wcm9qZWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9zdGF0ZV9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9zdGF0ZV9wcmVmZXJlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGUvc3RhdGVfc2ltdWxhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGUvc3RhdGVfdWkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlL3N0YXRlX3BlcnR1cmJhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGUvc3RhdGVfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3VpX3RyYWNrX3NpbV9zdGF0dXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX3N0b3JpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9zdWJ0YWJfY29udGFjdF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF90YWJzL3RhYl9wbG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF90YWJzL3RhYl9vdXRwdXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF90YWJzL3RhYl9sb2cubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9lZGl0b3JfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfZWRpdG9yL2VkaXRvcl9tZW51X2ZpbGVfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfZWRpdG9yL2VkaXRvcl9tZW51X2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9lZGl0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9zdWJ0YWJfY29uc3RyYWludHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9zdWJ0YWJfaW5mbHVlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfZWRpdG9yL3N1YnRhYl9wb2x5bWVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfZWRpdG9yL3RhYl9lZGl0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2Rpbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfYWJvdXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvcGFuZWxfdGFicy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfcHJlZmVyZW5jZXNfbW9kYWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3Byb2plY3RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF9wcmVmZXJlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvSnNTaW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0EwT0EsU0FBU0EsbUJBQW1CQyxHQUFLLFNBQVFBLFdBQVk7R0N6THJELFNBQVNDLGdCQUFnQkMsR0FBR0M7SUFDMUIsR0FBR0QsUUFBUTtJQUNYLEdBQUlDLFVBQVUsT0FBUUEsU0FBU0Q7SUFDL0IsSUFBSUUsUUFBUUM7SUFDWixPQUFRO0tBQ04sR0FBSUgsT0FBT0UsS0FBS0Q7S0FDaEJEO0tBQ0EsR0FBSUEsUUFBUSxPQUFPRTtLQUNuQkQsS0FB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Ozs7O007O0s7O0k7Rzs7STs7Ozs7O0c7O0ksc0I7Rzs7STtLLE07SyxNOztJO0k7SSxXO0ksc0I7Rzs7O0ksa0Isc0IsZ0M7OztLLE07OztPLGE7O087USxLO1EsSzs7Ozs7TztRLE87USxPO1EsSzs7Z0M7O3VDO1E7Ozs7c0M7Tzs7TztRLE87USxPO1EsTztRLEs7Ozs7O3dDO1M7Ozs7dUM7UTs7Tzs7Rzs7STtLLEs7SyxLOzs7OzRCOztJLHNCO0c7O0k7SyxLO0ssSzs7O0s7O2E7O0k7cUM7Rzs7O0ssbUI7STtJLEksaUIsbUI7OztNLE07O00sTTtLOzs7Ozs7Ozs4Qjs7Ozs4Qjs7Ozs7O00sWTs7Ozs7OzhCOzs7OztNOztJLGdEO2dCOztLLE07STtHOztJOztlO2U7OztLLE8seUI7O0ksbUIsSTtJO2MseUI7SSxJLGtCOzs7O00seUI7TTs7Ozs7SSxPOztxQixpQzs7STs7OztHOztJOzs7O0k7Rzs7STs2Qzs7Szs7TSxLO0s7SyxPOztJO0ksTztHOzRCLCtCOzs7Szs7OztJO0k7SSxZLE87Ozs7O29DOzhCO0c7O0k7O0ksTztHOztJO0k7OztJOztLLEs7O0s7Ozt5QjtJO0c7O0k7STs7OztJOzs7O2MsNEI7OztHOztJOztLOzs7STtHOztJO0k7SSx5QjttQixpQjs7STs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw2QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw2QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozt3Qzs7O0k7O0s7O007TSxzQjtLOzZCOzs7Ozs7SyxjO0s7NkI7Ozs7O0k7OztLOzZCOzs7OzhCOztJOzs7OztHOzs7SyxJOzs7OztNOzs7Ozs7TTs7Ozs7eUI7O007O007TyxLO087Ozs7Ozs7OztLOztNO08sSzs7TztrQjtrQjs7TTs7O08seUI7Ozs7TTtLO0s7TSxLOztNOztNLE07OztROztROzs7Ozs7Ozs7c0I7O1E7O2lDOztROztJO0k7STtHO3FCLHlDO29CLDhCO3NCLDhCO3FCLGtCOztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7Uzs7Ozs7aUIsVSxXLFU7Ozs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxROzs7Ozs7OztPO087TztPOzs7Ozs7O1M7O21COzs7OztpQixVLFcsVTs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJOzs7Ozs7Rzs7STs7Ozs7Ozs7OztLO00sTzs7Ozs7Ozs7OzttQzs7Szs7TSxVO00sTTs7Ozs7STs7Ozs7Ozs7WTs7Ozs7Ozs7OzthOzs7YyxPOzthLGMsUTs7Ozs7YyxPOzs7Ozs7O2MsTzs7OzthLE87OztHO3NCLE8scUI7NEIsYTsyQixhO2tDLGE7NkIsYTttQyxhOzJCLFk7MkIsWTtnQyxZOztJOzs7RztxQixpQzs7STs7Ozs7OztZOzs7OztHOztJOzs7O087USxPO08sTzs7Szs7OztLOztLLE87O0ksa0IsSTtJOztJLE87Rzs0Qiw2Qjs7O0s7Ozs7STtJLEk7O2lEOzZCO0c7O2tCLHFCLGE7O0ksYyxNLGlDO0k7OztpQywwQjs7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7SztLOzs7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7SztLO0s7Szs7Ozs7Ozs7SztLO00sb0I7Ozs7O0k7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNO007TyxvQjs7Ozs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNO007TyxvQjs7Ozs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7Rzs7STs7O0ssSSxNOzs7Ozs7STs7Ozs7O1k7Ozs7Rzt5QixPLHVCO2dDLFk7MkIsWTtHOztJO0ssTTtLOztpQjs7OztLOzs7O0s7OztJO0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7Syx5QjtLO007O08sUTs7Ozs7cUIsTztNOztPLFE7Ozs7O0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7O0ssWSxPO0s7O007O08sUTs7Ozs7TSxZLE87TTs7TztTOzs7OztHOztJOzs7OztJOztLLE07OztJO2tCOztLLFksTztLOztNOztPLFE7Ozs7O00sWSxPO007O087Uzs7Ozs7RztHOztJLFU7dUIsTyx5QztJOzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksVTt1QixPLHlDO0k7SztNOzs7SztLO0s7OztJOztHOztJLFU7dUIsTyx5QztJO0s7TTs7O0s7SztLOzs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztZSTdIQWEsTUFBT0MsR0FBVUMsR0FBVyxPQUFyQkQsTUFBVUMsVUFBZ0I7T0FDakNDO1lBQ0FDLE9BQU9ILEdBQUksT0FBSkEsRUFBSztPQUNaSTtZQUVBQyxVQUFVTCxHQUFFQyxHQUFJLGNBQU5ELElBQUVDLFdBQWlCO1lBQzdCSyxPQUFLTixHQUFFQyxHQUFJLE9BQU5ELElBQUVDLEVBQVc7O0lBSWxCTTtJQUNBQztJQUhBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztZQUVBQztJQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUxaTjs7V0FEQUQ7R0FjVTs7OztPQWxCVkQ7T0FVQVE7T0FSQUw7T0FDQUM7T0FDQUg7T0FDQUM7T0FDQUc7T0FDQUM7T0FDQUM7T0FaQVY7T0FGQUo7T0FDQUc7T0FJQUc7T0FGQUQ7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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RUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBS0FDO1lBQ0FDO1lB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsbENFN1g7SUFDQThYOztJQUNBcGdCO0lBQ0F1STtJQUNBQztJQUdBNlg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLFcscUM7O0ksTzs7O0c7c0IsTyxvQzs7SSxRO0k7SSxPO0c7O0ksVzs7SyxVO0s7OztJOzs7Rzs7STs7SSxPO0c7O0ksSSx1Qzs7OztNLFk7NkM7TTs7Ozs7O0c7O0ksSSxxQjs7O2tCOzs7Rzs7STtJO0s7TTs7TTtNO2tCOzs7OztLOzs7RztHLCtCOzRCLG9CLHVCOztJLGlCOzs7STtJLEk7STs7Syw2QixtQjtpQjs7Ozs7O007OztVOztHOztJLG1DOzs7O00sWTs7TTs7Ozs7O0c7MkIsK0I7Z0MsbUI7O0k7Ozs7TTtNOzs7Ozs7Rzs7STs7STtLO007O1M7MkIsTyxrQjtTOzs7UTtNOztTOzJCLE8sa0I7Uzs7O1E7TSxxQixxQztLOzs7Ozs7UTtTO1M7UztTO1U7VSxXO1U7VTs7O1U7Ozs7Ozs7O2tCLFMsUzs7O007O0s7Szs7O0s7TSxvQyxtQjt5QixPLHNCO0s7SztLOzs7Rzs7STs7Ozs7Ozs7OztRO1MsYTs7Ozs7Ozs7OztHOzt1QixTO2dDLFM7O0k7Rzs7STtJOzs7OztPLFk7Ozs7UztTLE07Ozs7Ozs7Ozs7Ozs0Qjs7O0c7O0k7STs7Ozs7WTtRO1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJO0ksNkIsbUI7RzswQiw2Qjs7STtJOzs7OztJLGdCOzs7STs7Ozs7TTs7O087Ozs7O1UsRztXLE07Ozs7OztRLEk7Ozs7Ozs7TztRLFk7OztRO1EsSTs7Ozs7OztpQjs7Ozs7Ozs7OztHO0c7eUIsK0I7O0k7Ozs7Ozs7Rzs7SSxJLGdCOztHOztJLGM7OztJO2lCOzs7O00sMkQ7TTtLOzs7Rzs7STs7SyxNOztJO0c7dUIsbUM7MkIsa0IsYzs7STs7SSxrQjs7O0c7O0k7O0ssTTs7STtHOzJCLGtDOztJOztJLHdCO2tCLCtCO0k7Rzs7STs7O0ksRywwQjs7OztHOztJOzs7Rzs7O0k7STs7O2E7Yzs7YztjOzs7O2M7Ozs7YzthOztHOztJOzs7STtHOztJLFk7O0k7OztJOzs7aUI7STtHOztJO0k7a0I7YTtLOztNOzBCLG9COzs7UztTO1M7UTtLO0s7OztJLFE7SSxnQjt3QixrQzs7SztpQjs7SyxhO0s7STtJO0k7STtHOztJLFk7SSxrQjtzQixvQjs7SztLOztJO0k7STtHOztJLFk7SSxrQjtzQixvQjs7bUIsa0M7SztJO0k7STtHOztJLFk7O0ksUztJLGdCO3NCLGdDOztLOzs7TSxlOztLO0k7STtJO0k7OztJLFk7SSxrQjtzQixvQjtrQixlLGtDO0k7STs7O0ksUTtJLGM7c0Isb0I7a0IsMEI7STtJO0c7O0ksWTtJLGtCO3NCLG9COztLO0ssTztJO0k7STs7O0ksWTtJLGtCO3NCLG9COztLLFk7aUI7O0s7STtJO0k7OztJLFk7SSxrQix5QjtzQixvQjs7SyxJLGU7Ozs7TSxlOzs7O0k7STtJOzs7STtJLFk7SSxrQix5QjtzQixvQjs7SyxJLGU7Ozs7TSxPOzs7SztJO0k7STs7O0ksUTs7STtJLGU7c0IsZ0M7O0s7STtJO0k7STs7O0ksUTs7SSxRO0ksZTtzQixnQztrQixpRDtJO0k7STs7O0ksUTs7SSxRO0ksZTtzQixnQzs7Szs7Ozs7O0k7STtJO0k7OztJLFM7SSxlLHlCO3NCLG9COztLO2M7SztJO0k7STtHOztJLFk7SSxrQix5QjtzQixvQjs7SztjO0s7STtJO0k7O3NCLDZCOztJOzs7TTtNLFc7Ozs7TTs7O087Tzs7Ozs7OztHOztJO0s7OztLOztzQixZO0ssTztJOztLO007O3dCO007Ozs7O08sTTs7O0k7dUIsNEI7STtJO0c7O0k7Szs7O0s7O3NCLFk7SyxPO0k7O0s7O2tCOztNO087USxROzs7Ozs7STt1Qiw0QjtJO0k7Rzs7SSxZOztJO0ksSSxlOztLO2lCOztLO0k7O0s7Ozs7TyxNOztNOztLLGtCO3FDOzthLHlCLDJCOztLO0s7SztNO007OzttQjs7SztJOzBCO0k7STs7O0k7SztLOzs7eUIsUzs7VSxNO1M7SyxPOzttQzs7bUM7c0IsUzs7Szs7O0ssMEI7O0k7STtJO0k7Rzs7SSxTO2E7SSw0QiwwQjtzQixpQzs7Szs7O00sZTs7SztJO0k7STtJO0c7O0ksUzthO2E7STs7OztLO0s7SztzQiw2Qzs7Szs7O00sZTs7SztJO0k7STtJO0k7Rzs7SSxTO2E7YTthO0k7Ozs7O0s7SztLOztLO0k7O0s7OztNLGU7O0s7STtJO0k7STtJO0k7Rzs7SSxTO2E7YTthO2E7STs7Ozs7O0s7SztLO0s7O0s7STs7Szs7Ozs7Ozs7Ozs7OztNLGU7O0s7STtJO0k7STtJO0k7STtHOztJLFM7YTthO2E7YTthO0k7Ozs7Ozs7SztLO0s7Szs7Szs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7OztNLGU7O0s7STtJO0k7STtJO0k7STtJO0c7b0IsdUIsYyxNOztJLGdCLHdCLFM7Ozs7Szs7ZSxZOztlO2M7Ozs7SSxRO0ksYztzQixnQzs7SztnQjs7aUI7O0s7STtJO0k7STtHO0c7O0k7Ozt1QyxTO0ksd0I7a0IsdUIsTzs7Szs7SztLO0s7SyxPO0k7STtHO3VCLGM7O0k7STs7STs7O2E7YSxHLDJCOztjOzs7YztjOzs7O2M7Ozs7Yzs7OztHOztJOzs7STtHOztJLG1COztJO0c7O0k7Ozs7Z0IsTzs7O0k7Rzs7SSxtQjs7O0ksd0I7O0ssTTsyQiwwQjtJOzs7STtJOztvQyxPOzs7Ozs7STtHOztJO0k7a0I7a0Msa0I7Szs7TTtNO00sb0Isb0I7OztTO1M7UztRO0s7Szs7O0k7Szs7TTs0QixxQjs7O1MsYTtTOztRO0s7Szs7SSxnQixlO3dCLGtDOztLLEksZTttQyxHLDRCO0ssYTtLO0k7STtJO0k7Rzs7STtJLFk7SSxrQjtzQixvQjs7SztpQjs7SztJO0k7STs7O0k7SSxxQyxXO0ksa0I7c0Isb0I7a0IsZSxnQztJO0k7OztJO0k7O3FCOztLLFc7Ozs7Szs7TTswQixxQjtzQixlLGlDO0s7Szs7SSxnQjt3QixpQzs7SztLLGU7STtJO0k7STtHOztJO0ksNkIsTztJLGM7c0Isb0I7O0s7SyxPO0k7STtJO0c7O0k7STtLOztNOzBCLG9COzs7UyxZO3FCOztTO1E7SztLOztJLGtCLFE7Z0I7O0k7OztJLG1CO0ksa0IseUI7c0Isb0I7O0ssSSxhOztNLE07OztLLGU7STtnQyxpQztJO0k7OztJLG1CO0ksa0I7c0Isb0I7a0IsZ0M7STtJO0c7O0k7O0ssd0IsTyxxQjs7O0ksUTtJLGU7c0IsaUM7O0s7aUI7O0ssZTtJO0k7STtJOzs7STtJOztJO0s7O007MEIscUI7c0IsdUM7SztLOztJLGU7d0IsaUM7b0IsZ0Q7STtJO0k7Rzs7STtJLFE7O0k7Szs7TTswQixxQjtzQix1QztLO0s7O0ksZTt3QixpQztvQixnRDtJO0k7STtHOztJO0ksUztJLGU7c0Isb0I7O0s7aUI7O0ssZTtJO0k7STtHOztJO0ksWTtJLGtCO3NCLG9COztLO2lCOztLLGU7STtJO0k7OztJO0k7SyxtQjs7Szs7STtLLG1COztLOztJLG1CO3NCLGlEOztLO00scUMsTzs7TSxPOztLLGU7STs7SyxtQjs7SztJO0k7STtHOztJO0kscUM7STs7SztLO0s7O0s7d0I7O0s7STs7Szs7O3lCOztNOzs7Z0Q7Szs7O00sb0I7TTtNOzs7Szs7TTtNO007OztLO0s7OztJO0k7STtJOzs7STs7O3dDOzs7Rzs7STs7SztLO21CO0s7SztLO0k7STtLO0s7O29DLFMsbUIsUztLLE87OztLOzs7MEIsUztzQix3QjtNO0s7Szs7O21DO3dCLFM7b0IsZ0M7STtJO0k7STtHOztJO0k7O29DLFc7Szs7TTswQixvQjtzQixlLG1DO0s7Szs7OztLOztNOzRCLHFCO3dCLGUsc0M7SztLOztJLGU7d0IsaUM7O0s7SyxlO0k7STtJO0k7Rzs7STtJOzs7O3NDLFc7Ozs7Ozs7O087O1E7UTtROzRCLDZDOzs7VyxJLGlCO1csZTtVO087TztPO087Ozs7STs7O3dDOzs7OztHOztJO0k7Ozs7Ozs7O1EsVzs7Ozs7Ozs7Ozs7O1E7O1M7UztTOzs7WTtXOzs7WSxJLGlCLGlCO1ksZTtXO1E7UTtRO1E7UTs7Ozs7STs7O3dDOzs7Ozs7Rzs7STtJOzs7Ozs7Ozs7O1MsVzs7Ozs7Ozs7Ozs7Ozs7O1M7O1U7VTtVO1U7OzthOzs7WTs7O2E7YztjO2M7YztjLEk7YTtZO1M7UztTO1M7UztTOzs7Ozs7STs7O3dDOzs7Ozs7O0c7O0k7STs7Ozs7Ozs7Ozs7O1UsVzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7O1c7VztXO1c7Vzs7O2M7Ozs7O2E7OztjO2U7ZTtlO2U7ZTtlLEk7YzthO1U7VTtVO1U7VTtVO1U7Ozs7Ozs7STs7O3dDOzs7Ozs7OztHOzZCO2dDO21CLDBDOztJOzs7OztHOztJOzs7OztHO29CLG9COztJLG1CO0ksa0I7c0Isb0I7O0ssVztLO0k7STtJOztvQix5QjtvQix5Qjs7SSxZOztJLDBCO0k7c0Isb0I7a0Isb0Q7STtJOztnQzs7SSwwQztHOztJLDBDO0c7O0ksMEM7Rzs7STs7a0M7OztHOztJOztrQzs7O0c7O0k7Rzt3QixvRDttQiwwQztHLEksMkI7O0k7Z0Q7Rzs7STtnRDtHOztJO2dEO0c7b0IsMEM7O0k7Z0Q7Rzs7STs7a0M7OztHOztJO2dEO0c7Z0M7O0ksMEM7Rzs7STtnRDtHOztJO2dEO0c7O0k7Z0Q7Rzs7STtnRDtHOztJOztnQzs7O0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7cUIsd0Q7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0k7O2dDOzs7RztvQix1RDtvQix1RDtvQix1RDs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSw2QztHOztJO0c7O0k7Rzs7STtHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7RztJO0k7STtJO0k7STs7STtJLG9DO0c7O0ksK0IsaUI7Rzt1QiwrQixvQjt1QiwrQixvQjtHOztJOztLOztNOztTOztVLE87O1MsTTtROzs7O0ksK0IsYztHOztJO0k7O2lDOzBEOztLLCtCO0ssZTttQjtLO007MEIscUI7OztTO1M7O1E7SztLOzs7Ozs7O00sbUMsUzs7Syx1Qjs7TTtPOzZCLHNCOzs7VTtzQjs7VTtTO007TTs7SztNO00sc0Isc0I7OztTO3FCOztTO1E7Z0Msb0M7OztTO1M7OztVOzs7VTtTO1E7SztLO0s7Ozs7O0s7OztlLFk7O2U7Yzs7O0ksdUI7d0Isb0M7O0s7aUI7O0s7STtJO0k7STtHO0c7OEIsOEM7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O2dDOzs7Rzs7STs7Z0M7OztHOzs7dUIsNEI7MkIsZ0M7MEIsMkI7eUIsOEI7dUIsNEI7O0s7SyxxQjtJOztLO0sscUI7STsyQiw4Qjs7SztLLHFCO0k7MEIsK0I7O0s7SyxxQjtJOzZCLGtDO3lCLDRCO3lCLDhCOztLO0sscUI7STsyQixnQzsrQixvQzttQyx3Qzs7SztJOztLO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJSS9oQ1EsSUFuQlJpRCxjQUNBQyxrQkFDQUMsaUJBaUJBQzthQUVBQyxPQUFPQztLQUNUO01BQXlCLFFBQUE7TUFBUEM7TUFBZEM7TUFDQUMsY0FGS0g7bUJBR29CSTtNQUN6QixTQUR5QkE7V0FHZkMsSUFIZUQ7T0FEekJELGFBSTBCLFdBM0I1QlIsT0EyQllVLEdBSlZGOztlQUdRSCxJQUZpQkksUUFEekJELGFBR1FIO01BR1IsT0FMeUJJO0tBS3RCO0tBTEssSUFBUkUsUUFBUSwrQkFGUko7S0FRSixtQkFQSUMsU0FDQUcsU0FGY0w7SUFRTTthQUV0Qk0sV0FBV1AsR0FBRUU7S0FDRCxJQUFW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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN6SEFDLFdBQVdDLEdBQUVDLEdBQUksT0FBQSxhQUFKQSxHQUFGRCxHQUFpQjs7SUFDNUJFO0lBQ0FDO21DQUZBSixZQUVBSSxLQURBRDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0M0QlU7Ozs7OztJQXZDVkU7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7Ozs7T0EwSkU2b0c7T0FDQUM7T0FFQUM7T0FJQUM7T0FJQ0M7T0FVREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FNQUM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FHQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQUM7T0FVQUM7T0FJQUM7T0FJQ0M7T0FTREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FFQ0M7T0FTREM7T0FJQUM7T0FJQUM7T0FVQUM7T0FJQUM7T0FJQ0M7T0FVREM7T0FDQUM7T0FFQUM7T0FJQUM7T0FJQ0M7T0FRREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMENENWxHO09BWUEyYjtPQUNBRTtPQU9Bblg7T0FDQUU7T0FDQWloRztPQUlBQzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLEksTzs7OztJO0ssSSxPOzs7Ozs7Ozs7RztJLE07SSxNO0ksTTtJLHNCO0ksTTtJLE07SSxNO0ksb0I7Ozs7Ozs7Ozs7OztJO0s7TSxXO007O1MsUTt1QztTO1E7TTtROztNLGE7TSxjO00sVTtNLE87Ozs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0k7Ozs7OztJOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0Isc0I7RyxxQixzQjtHLHNCLHNCO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7O3lCLE87O3lCLE87O3lCLE87Ozs7OztLLE87O0k7SSxPO0c7O0ksWTtnQjs7STs7OzsyQjttQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0IsZ0I7SSxPO0c7O0ksVTtJO0s7ZTs7O2lCOzs7bUI7bUI7STtJO0ksTztHOztJLFU7O0s7Szs7TyxXO00sSSxJLDJCOzs7Ozs7WTtZO1c7NkI7UyxPO1E7UyxNO1M7Ozs7WTs7WTs7WTs7USxPOzs7c0MsTztNO00sSTs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssZ0Q7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7OztLLFk7Ozs7eUM7O0s7O1E7SyxPO0k7STtLO00sTTtNLE07Ozs7MkI7OztjO0k7Ozs7SztPOzs7O3VDO0ksVztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7eUIsTSw0QztJLE87Rzs2QixPLG1DOztJOzs7a0MsTztJOzs7eUMsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07O0c7O0ksUztJOztJLE07Rzs7eUIsbUQ7SSxPO0c7Rzt5QixrQixvQjtJLGE7STt5Qix3QjtJLE87Rzs7SSxTO0ksNEI7SSxXO0c7O0ksWTtJLGtDLE07STs7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7Rzs7SSxZOztJLE87OztJO0ssTTs7bUI7STs7Szs7O0k7Rzs7STtJOzs7Z0I7SyxnQyxJO0ssWTs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7STtnQixXOzs7TSxNO0s7OztNLEk7TTs7Ozs7Rzs7STtJO2UsVzs7aUI7Syw4Qjs7Rzs7STtJO21CLFc7O00sTTtLOzs7TTtNOzs7OztHOztJO0k7OztnQjtLLGtDLE87SyxXOzs7Rzs7STtJOzs7TSxHO087UTs7Ozs7OztLLFc7O0c7O0ksUSxPOztJLE87RztHOztJOztLOztJO2lCO0ssRyxxQztLLEk7O0c7O0k7STtpQjtLLEssNEI7SyxJOztHOztJO0s7OztTLFk7O1M7UTtNLFc7Szs7Ozs0Qjs7O0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxHLDZCO00sSztPO08sTzs7OztJOztJO2lCLE07Szs7O00sb0I7SyxHLGdDOzs7Rzs7SSxJLFE7STtpQixNO0s7OztNLFc7TSxZO0ssRyxpQztLLEcsZ0M7OztHOztJO0s7TSxPO00sYztLOzs7O2dDOzs7Rzs7SSwwQztLOztRO0ssTzs7STtHOzs7O0k7O2M7O0c7O0ksVTs7SztLLE87STtJO0k7Rzs7SSxXO0k7SyxRO0ssWTtLOztHOztJLEksTztJO2dCO0s7TSxPO00sSTtLLFksTTtLOzs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7STtLLE87SyxXO0s7Tzs7O0ksSSxVOzs7SztLO0ssTTs7STtJLEksa0Q7OztLO0ssTTs7Rzs7SSxjO3lCLE8sdUI7SSwrQiw2QjtJO2lDLE8sZ0M7OztHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSw4QztLLE87bUIsc0I7SSxPO0c7O0k7SSxxQztHOztJO0kscUM7Rzs7STs7Rzs7STtJLHFDO0c7O0k7SyxVO0ssVztJO0s7TSxNO00sYTs7O007UTtXO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1E7TSxJOzs7O0c7O0k7STtLLEk7Ozs7TTtPO1M7Ozs7O08sTztNLE87O0s7TSxTO3NCO007Ozs7Rzs7STtJO3VDO0ssVzs7Ozs7OztNOzs7OztPOztTLFc7USxXOzs7OztRLEk7Ozs7TTtPO08sWTs7Ozs7SyxJOztHO3VCLHdCLFM7O0ksWTtnQjs7OztHOzBDOzBDOzBDOzBDOzBDOzBDOzBDOztJOztLLE07SztLOzs7O00sVztNO007Ozs7O0k7SztLLE87STtJO0c7O0k7O0s7SyxPOztHOztJOzs7SSxPO0c7O0k7OztJLE87Rzs7SSx3Qjs7OztNO007Ozs7OztHOztJLHdCOzs7O00seUI7TTs7Ozs7O0c7O0k7Ozs7TTtNO007Ozs7OztHOztJOztLO2M7Szs7O0k7SSxPO0c7O0k7STtJO0c7Rzs7Ozs7Ozs7Ozs7OztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7MEIsTyxxQztJO0ssUTtLO0k7SztpQjtLLHFCOzs7OztJLE87Rzs7STtJLGM7a0I7STtLOzs7O0ssTztJLE87Rzs7STtLLE07SztPOzs7OztJLFc7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7OEIscUI7MEIsNEI7O0k7Ozs7Ozt1QixNOztJO0c7Rzs7STtLLFk7Ozs7STtLO007O007Ozs7NkIsTzs7OztJOztLOzs7UztVO1c7O1U7Ozs7aUMsTzs7Ozs7OztJO0k7STtHO0c7O0k7STs7OztHO0k7O08sSSxJLE87Ozs7OztPLFc7TztRO1MsTztTLGM7OztPOztPO2U7O0c7O0k7O0s7Szs7Ozs7OztJO0c7Rzs7STtLLEk7O0s7Ozs7Z0I7TyxXO087O007Ozs7O0ksTztHOztJOztLLE07OztJOzs7TSxROztPO087UTs7Ozs7Ozs7OztPOztRLGU7Ozs7Ozs7Ozs7O087TztROzs7Ozs7TTs7OztROzs7VTtROzs7Ozs7Ozs7Ozs7SyxPOztHOztJO0k7O0s7SyxPLGdDO0k7STtLLG1CO0ssVzs7Ozs7O087UTs7Ozs7Ozs7OztJOztLOzhCO21EO0ssTzs7Ozs7Ozs7STtJO0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7OztLLGU7Szs7OztNLE87TSxPO0ssVztJO0ksTztHOztJLFk7STtHO0c7c0IsaUI7RztJLE07SSxNO3NCLGlCO0c7SSxNO0ksTTtJLFk7O0k7Ozs7Ozt5QjswRDswRDswRDswRDs7Ozs7OzswRDs7MkQ7MkQ7MkQ7MkQ7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTztrQjtRO0ssTzs7OztJO0ssYTtLO087SztnQjs7SSxJLGM7Z0I7STtHOztJLGE7SSxJOzs7OztJLGE7Rzs7SSx5QztJLE87OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztLLEcsdUM7SztNO00sTTtNO1E7Ozs7O0ssTzs7O0ksRyx5QztJO0s7SyxRO0s7Tzs7Ozs7SSxPO0c7O0k7STtLOztRO1U7Szs7ZSxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7TSxJO0ssaUI7Ozs7SyxPOzs7Szs7O00sTTtNLFU7SyxPOzs7Szs7Ozs7TSxNO0s7Ozs7SyxPOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sTztLO0ssTztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVOztNO00sVztLO0ssZTtJOzs7TSxPOzs7Z0IsTzs7ZTs7SztLLE87STs7O0s7SyxPOztzQyxPLDZCOzs7STs7SyxVO3VCO0ssTztJOzswQixPLG1CLHVCO0ssTztJOztLLE87O2dDLE8seUI7OztJOztLLE87OztlOztnQixJLFk7Ozs7OzJCOzs7MEI7O2UsTztjOzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7dUIsTywrQzs7UyxPO1E7OztVLE87OztvQixPO21COztTO1MsTztROztTLE87UTs7Uzs7b0IsTztTLGMsTTs4QixPLHdCO1MsTztROztTLFU7UyxlO1E7UTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UyxPOzs7bUI7a0I7OztROztTLFE7O1U7VSxPO1M7UztTO1E7MkIsaUQ7O1MsUSxtQjs0QixPLDJCO1M7UztROztTLEksVSw0Qjs7OztVLFE7VTtVOztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsaUI7MEIsTyx5QztvQixTO3dCLHVCOzs7Ozs7Ozs7Ozs7Ozs7STtJO0ksTztHO3lCLE8sOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7O0ksMEI7SSxPO0c7c0IsUztHOztJLDhCO0ksTztHO0c7STtNLHVCO0k7TTtROztJO1c7Yzs7SSxPO0c7d0IsUzs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTLFU7UyxrQjtTO1UsUyxXOzs7VSxJLGE7Ozs7VyxJLFk7OztZLE07O1c7O1UsYTs7O1ksTTs7Ozs7VyxVO1csSSxZOzs7WSxNOztXOztjOzs7OztXLEksYzs7O1ksTTs7Vzs7VSxNO1M7UyxhOzs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNCO0ksVTtJLE87Rzs7STtHO0c7STtJOztJO0k7STtJO0k7O0k7STtJO0k7STtJO0k7O0k7OztJO0c7Rzs7STs7Ozs7Ozs7OztJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7STtJO0k7STtJOztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtLOzs7O0s7O2U7OztLLFU7Yzs7O0k7STtJO0k7STtJO0k7STtJO0k7STs7OztHO0c7STtJOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7STtJOztJLEc7O0ksTTtHOztJLFU7STtLOztNLG9CO00sbUI7TTs7Ozs7OztHO0c7STtJO0k7OztROzs7Ozs7Tzs7UTs7Vzs7VzttQjs7Tzs7O0k7STs7O1E7OztPO3VCLDBDOzs7STt5QixPLHNDOztJOztPOztPOztPO2U7O0c7O0k7Ozs7Ozs7OztHOztJOztPOztPOztPO2U7O0c7dUMsUztxQywyQjs7STtLOztNO007Szs7STtLLE0sVztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztlO21COztTO1E7TSxLO0s7TTs7TztPLFE7Ozs7O1c7Ozs7Ozs7RztHOztJO3lDOztnQjtJLHFCO0k7RztHOztJO0c7O0k7SSxrQjtJO0ssZTtLOzs7RztHLEksbUI7O0k7OztHOzs7SztLO00sVztNO007TSxVO007Ozs7O29COztPOzs7STtJLE87Rzs7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHLEksOEI7O0k7OztHOztJO0ksSSwrQjs7OztLLEksVTs7OztNO08sYTs7Ozs7O0s7Ozs7SztNLGU7TTs7OztJOztLOzs7UztTO1U7VTs7UyxPOzs7OztRO0ksTztHOztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7O0ksSSwrQjs7Z0M7SyxvQjtLLFc7O0c7OztLO007Ozt3QjtNO0ssTztJOztLOztNO1E7Ozs7O08scUI7TyxPOzs7Ozs7O0s7STtJO0c7O0k7MEIseUI7SSxROztLOztJO0ksVzs7OztLO007TTtNOzs7UyxtQjs7O1E7Szs7O1E7O0k7O0s7Ozs7OztNOzs7O2tCO00sUTs7O007O0s7STtJLE87Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjs7TTs7K0I7Ozs7K0I7OztNO007OzZCO0s7SyxXO0k7STs7Ozs7MEM7OztJLFc7STs7O007TSxPOzs7ZSw2QjtLO0s7SyxPOztJO0k7Szs7TSxlLGlCO007O1csaUI7VztLOztJLGE7Ozs7TTs7TztNO08sZ0M7TTtLO0s7SyxPOztJOzs7O007SztLO00sTSxXO00sUTs7O3FCLFM7SyxHO00sVTtNOztLLFU7dUI7SyxPOztzQjtJLE87RztxQjtHO0ksZTtJLE07SSxjO3FCO0c7SSxjOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztJOzs7Ozs0QiwwQjs7STtLLE07OztLOztlOzs7Ozs7STtJLE87Rzs7eUIsTyx5QjtJO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Szs7TSxnQjs7O0s7STtJLFk7O0k7Rzs7STtLLE07OztLOzs7STtJOzt5QixpQztLOzs7STtJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJLFE7SSxjOzs7Ozs7O29CLFk7dUIsWTs7STtLO00sTTtNLE07Ozs7Ozs7O0ksaUI7RztHLFc7O0ksbUI7SyxNO0k7STs7O0c7dUIsMkM7O0k7Rzs7STs7SyxTO0s7SyxVO0ssTztJO0ksTztHOztJO2M7O0c7O0ksbUI7SyxNOztvQixPLHdDO0k7SyxXO2lCOzs7OztVOzs7OztHOztJLG1CO0ssTTs7O0ssUztZO007SztNLFE7TSxVOztlOztJO0k7OztHO3lCLHdCOztJLG1CO0ssTTtJO2M7O0c7O0ksTyxrQjtHOztJLG1CO0ssTTs7SyxPO0k7SSxPO0c7O0ksbUI7SyxNOztLLFU7SyxPOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksSSxJLE07Ozs7OztJO007UyxzQztLO0k7Rzs7SSxXO0k7Rzs7STtpQjtHOztJO2lCO0c7O0k7STtJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SztLO0s7O0ksVTs7SyxNO0k7RztpQyxrQixTOztvQixPLGdDO0k7SyxRO0ssUztLLEk7O2U7Szs7VTs7Szs7STtLLFE7OztvQixPLHlDO0k7STt3QixPLG1DO0k7SSxPO0c7O29CLE8sZ0M7SSxZO29CLE8sOEI7SSxZO0k7Rzs7SSxZOztJLE87Rzs7STs7O1E7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssOEI7SyxNO0ssTTs7O0sscUI7Ozs7OEI7Ozs7Ozs7OztROzs7O0k7OztTOzs7Ozs7Ozs7Ozs7O0ksRztLLFE7SztNLFk7TSxHLDRCO087TTtPLFU7Tzs7O2dCLDJCOztJO0c7O0k7SSxxQjtJLG9COztLO0ssZTs7O0ssTTtJO0s7Szs7Uzs7SyxVO0ssZTs7STtHOzs7Szs7Ozs7OztXLEssNkM7VztZO1k7Yzs7Ozs7WSxNO1ksVTtXLEksVSxtQzs7O2tDOzs7VTttQixXOztNOzs7VTs7O2E7dUI7VztZO2M7Ozs7OzhCLHlCO1csTzs7VTtTO087cUIsVztPLCtCO08sTTs7Uzs7O007TztPLE07TyxNO08sOEI7TyxNOzs7Ozs7Ozs7Ozs7O1UsTTs7OztTOzs7SztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO0k7SSxJOztJO3dCLE8sNEM7SSxPO0c7Rzs4QixPLG9DOztJOztLLE07OztPLHVCLDZDO087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO0k7OztRO1E7OztJOztJLE87RzswQixrQjt1Qix5Qjs7STs7SztNOzs7O0k7Rzs7STs7SztNOzs7O0k7Rzs7STtJOzthO2E7YSxJLFEsa0IsZTs7O2M7YyxNOzs7Rzs7STtLO007Ozs7Z0I7OztJOzs7Ozs7OztHOztJOztLLFk7O00sTTs7SztNLFE7TSxVOzs7TztROzJCLG9CLDBCO08sa0IsTzs7Tzs7Ozs7OztVO1c7OztXLHNCO1U7VyxPOztVOztTO1U7OztVLHNCO1Msa0IsTzs7Uzs7OztVO1c7OztXLHNCO1U7VyxPOztVOztTO1U7OztVLHNCO1Msa0IsTzs7Uzs7SyxNOztJO3FCOztLO0s7O08sWTs7Ozs7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7TyxTLEk7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TztPLHNCO00sTzs7Szs7OztNLE87Ozs7TztPOzs7Ozs7STs7SztNLE07O0s7SztNO007MkM7YyxvQztPO1E7Z0M7Ozs7Szs7TTtNOztRLE87TyxZOzs7Ozs7OztTO1U7VSxtQjs7Ozs7OztVLEk7VTtXLE87OztVOzs7Ozs7WSxJO1k7YSxPOzs7WTs7O1ksSTtZO2EsTzs7O1k7OztPOztLOzhCOztNLG9DO00sVzs7O1EsSTs7O1M7eUI7O21CO3NCO1U7Vzs7O3NCOzs7Ozs7UTs7O1M7UTtTLE87O1E7Ozs7TztRO1EsZTtPO1EsTzs7Tzs7TTtLO0s7SztLO007O1MsTzs7UyxPO2lCLE87OztLO00sc0IsVztNOztLOzs7O087O007O0s7TTtROzs7TTtLLDBCO0s7OztNO007SztNOztPLFc7TyxPO007TTs7UztNLDBCO0s7O007Tzs7O2tCOztrQjs7Ozs7O1EsTzs7TztRLFk7O08sTzs7TSxPO0s7Szs7TSwyQixzQixXO00sTztNO1E7O0s7STtJOzs7O0s7OztZOzs7SztNO1E7TSxVO007Ozs7Tzs7Ozs7Ozs7OztVOzs7Ozs7Ozs7VTs7Ozs7OztJOztJO0c7RztHOztJLE87Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7TyxXO08sTzs7OztRLE07O1E7UyxPO1MsTztRLE87O087O1EsTztPLE87Ozs7USxNOzs7O1EsTzs7Ozs7OztPLFc7TyxPOzs7O2lCOzs7Tzs7USxPO08sTzs7OztRLE07OztROztTO1c7Ozs7OztRLE87O087UTtVOztRLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7MkI7O087O1EsTztPLE87OztPLE87OztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87Ozs7O1UsVztVLE87O1U7a0I7VSxPOztVOzthO1UsTzs7O087Ozs7UTtRLE87USxPO087O1UsTzs7VSxPOzs7VSxPOzs7Ozs7UTs7UyxPO1MsTztRLE87OztRLE07TztRLE87USxPO1EsTztRLE87TyxPOzs7O1E7Ozs7UztXOztTLE87UyxPO1MsTztRLE87Ozs7USxNO087O1E7VTtRLE87USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxPO1EsYTtPLE87Ozs7USxPOztPLE87OztPOzs7O08sa0I7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOztRLFM7TztRLE07OztRO1MsTztpQjs7b0I7TyxPOzs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7Rzs7SSxtQjtJO0ksSSxvQixtQixlO3lCLHlDO0ksWTs7Ozs7O2tDOzs7O2dCOztJO0c7O0k7Ozs7OztnQjs7O2tCOzs7Ozs7OztROzs7STtJLGM7Ozs7Ozs7Ozs7Ozs7STtHO0c7K0IseUI7O0k7OztJLE07Rzs7O0s7SztNOztPLE87Yzs7O0ssTztJO0k7STs7O0ssSSxJLCtCOzs7TztRLE87USxPO1EsTztPOzs7TyxjLE87Tzs7SzttQixPOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OzsrQixPLGtDO1E7O1M7O1M7OztTO1UsUTs7O1UsTTtTO1UsTTs7UztROztTLEkseUM7Ozs7VyxPOzs7UTs7UyxJLHlDOzs7O1csTTs7O1E7O1MsTztROztTLE87UTs7UyxJLE0sZ0Q7O1U7VztrQjtZO1c7Ozs7aUM7OztTO1MsTztROztTOztVO1c7a0I7WSxNO1c7Ozs7O1ksTzs7O1M7UyxPO1E7O1M7O1U7VyxVOzs7UztTOzs7VTtXLEs7Vzs7UztTLE87UTs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztVLFM7VSxXO1UsSTsyQjtTO1UsUTtVO1U7VTs7OztXLG1CO3FCO1c7Ozs7Ozs7VTs7VyxJLEksTTs7OztvQjs7VztVO1UsTztTO1M7VSxnQjs7VSxTO1UsUTtVOztVO29CO1U7VTtVOztVOzs7UztTLDBCOzs7O1c7Vzs7Ozs7Uzs7O1UsYTs7O1c7O1c7VTtVLE87UztTO1M7VSxXO1UsYTtVOztVO29CO1U7O1U7VTtVLE87UztTOzs7O1c7O1k7OztXOzs7OztTOztVLDhCO1Usa0I7O1U7Ozs7O1U7VztXOztXO1csTztVO1U7VztVO1M7UztTOztZOztVO1csTTs7O1c7WTs7NkIsK0M7VyxlOztVO1c7VztXO2E7OztVO1M7UyxPO1E7O1M7MkI7UyxPO1E7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DOzs7SyxNOzs7O1Esa0Q7USxPO087O3dCLFM7d0IsUzs7b0IsYzswQixPLDRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsUzswQixTO3NCLGM7O0ksTztHOzs7O3lCO3lCO3lCO3lCOzhCOzhCOzhCOzhCOzhCOzhCOzs7Ozs7Ozs7c0I7MkI7MkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7O0c7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7O087Ozs7VyxRO1csTztVO1E7VTs7USxNO08sTzs7O08sTzs7MkIsTzs7RztHOztJOzs7O0ssTTs0Qjs7Ozs7UTs7OztJO0ssMEIsMEIsSTtLLE87O0c7O0k7STsyQjtLLFE7VztLLEk7O0c7O0k7eUIsTyw4QjtHOztJLFU7STtJO0c7O0ksTyx1QjtHOzZCLHdCOzs7STtjO2M7Ozs7STtjO2M7OztJLEksNkIsUTs7SyxNOytCOztJO0c7OztJO2M7Yzs7O0k7OztHOztJLFk7Z0IsTTs7STtHOztJO0k7Rzs7O0k7Ozs7Ozs7O2tCO0s7O0k7Rzs7O0s7aUM7STtJO0c7Ozs7OzBCLDRCO3lCLE8sdUM7Ozs7Ozs7a0I7Szs7STtHOzs7STs7YztjLE87YTs7Rzs7STtJO0ssVTtLLFU7SyxVO0ssVTtLLFc7Ozs7Ozs7Ozs7Ozs7O007TTtPO08sVTs7Ozs7Ozs7Ozs7TyxNOzhCOztNLEk7Ozs7Ozs7MEM7Uzs7Ozs7OztNO087TztPO087Tzt5QjtPOzs7VTtXO1c7Ozs7VztZO1k7WTtZOzs7VTtTO08sZ0I7Tzs7O1ksWTs7WTtXOzs7Tzs7Ozs7O1E7O1E7UTs7O1c7O1k7O1ksUztZO1c7VTtvQjs7O007Tzs7VTtXO1c7c0I7O1U7O087O1U7VztXO1UsTzs7TTs7OztPO087UTtRLDRCO087TztRO1EsVTtPLEc7USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0IsTztpQjs7d0I7O1k7b0I7O3NCO2lDO1c7OzhCO087Ozs7WTtZLE87VztXLE87O087Ozs7O007TTtPO08sSTs7Ozs7Ozs7OztPLFU7Ozs7Ozs7Ozs7UTtTO1M7UztTO1M7UztTO1EsRzs7O1M7VTtnQztVO1M7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7O1M7VTtVOzs7YTs7YztjOzs7YztjOztjOzs7OztjOzs7OzthOzs7Ozs7OztZO1UsVztTOzs7VTtXOzs7OztjO2M7Ozs7Ozs7O2E7d0I7O1E7Ozs7VSxNO1M7O1U7O1c7VztXOzs7Yzs7ZTs7ZTs7ZTtjO2E7O3FCOzs7Ozs7UTtTOztZO3dCO1k7Ozs7YTtlOzs7WSxXOztTOztZO1ksTzs7UTs7TyxNOzJDOztNLE07MkM7OztJLE07Rzs7STtLO00sSzs0QixhOzRCLE8sMkI7TSxJOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7RztzQixtQjs2QixtQjs2QixtQjt1QixjOztJOzs7MkI7O3lCLE07OztPLEksVTs7OztRLE07Ozs7OztHOztJO0k7aUI7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOzt5QixXOzsyQixXOztPOzs7O1EsTztPLFc7O087Ozs7USxPO08sVzs7OzBCLDRDOztzQix5QjtJLE87Ozs7Rzs7cUIseUI7SSxPOzs7O0c7O0k7Rzs7STtHOztJO0c7cUIsdUI7O0k7STtJO0k7Rzs7STtLO0s7STtJOzs7Rzs7STs7O0ssTTtLO087O0s7O1E7Ozs7O0k7O0k7SztNO007TTs7TTs7OztPLG9COzs7Ozs7OzthOzs7Ozs7WTtTO1M7Ozs7O087Ozs7OzswRDs7Ozs7UTtTOztPO08sTztNO00sTztLO0s7TTtNO007TTs7OztPOzs7O1M7Ozs7Ozs7O2lCO2tCO2tCLE07a0I7aUI7Ozs7OzBCOztnQjtnQjtlO1k7Ozs7Ozs7OztnQjtpQjtpQixNO2lCO2dCOzs7Ozt5Qjs7ZTtlO2M7Vzs7Ozs7WSxPOzs7Ozt1Qjt1QjsrQjs7c0I7c0I7cUI7VztXO1ksa0IsYztZO1k7WSxrQixjO1k7WTs7Vzs7Ozs7aUIsWTs7O2tCOzs7aUI7Z0I7Z0IsTzs7ZTtlLE87O2M7WTtjO1k7O1c7WTs7O2U7Ozs7O2dCLFE7ZTtjO1k7O2U7O2lCOzs7Ozs7O2tCO29COzs7aUI7Ozs7OztlO2M7VyxNOztTOzs7OztPOzs7Ozs7O0c7O0k7SztLOztLOzs7O00sc0I7Ozs7UTs7Ozs7Ozs7O1E7Uzs7Ozs7VTs7Ozs7UTs7Ozs7TTs7Ozs7OztLLE07Ozs7Z0M7Szs7TSxNOztLOzs7Ozs7O0ssSTs7Rzs7O0ssVTtLO0k7STtJO0c7O0k7O2tCOztJOzs7Ozs7VyxZO1c7VTs7Ozs7OztXO1ksUTs7OztXO1U7Ozs7Ozs7VztZLFE7OztZO1c7VTs7STtJO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSx5QjtJO0c7Rzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STt5QiwrQjs7STs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxHO0s7TSxPO2tDOzs7STtLO0s7TTtPLE87TyxNO00sRyw2QjtNLEs7TyxHO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7SyxPOzs7OztLO0k7SyxpQztJOztLLGE7SyxPO0k7STs7Ozs7Ozs7Ozs7O0k7SztLOztJO0k7SztLOztLO0s7OztLO0s7Ozs7O0k7SztLO0s7O0ksTztHOztJOzs7NkIsTyx5QztJLE87Rzs7O0s7OztNLE87TSxjO0s7STtJLE87Rzs7STtLOztrQixNO0ssSTs7OztpQjtPOzs7OztLLFc7MEIsTTtLO0s7SztLO0ssdUM7Ozs7a0I7O2dDLG1DO08sRztROztnQyxtQztPLEc7UTtPLFE7Tzs7Tzs7Ozs7SztLO0ssVztLOzs7OzRCOzs7Rzs7STtJO0s7SztLO0ssSTs7SztNLFc7TTs7Ozs7STtJOztNLFk7OztPO29COztPOzs7TTs7OztHOztJO3VCLHFCO0ksTztHOztJOzs7Szs7SztNLE87TSxjOzs7STtHOztJOzs7Ozs7Ozs7Ozs7Szs7Ozs7aUI7SztLLFc7SyxJLG9COztNOztPO007SztLLGdCOztNOzs7Ozs7O00sTzs7O0s7SztNLE87TSxPOztNO00sbUIsMkI7TTtNLE87SztLLFUsVzs7TTtNOztROztPOzs7TyxNOzt3Qjs7TTtLO0s7TSxROzs7SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7O007Ozs7Ozs7Ozs7TSxXOztNO087USxNO1E7O1csSSxlLDhCOzs7b0M7OztVO1E7O2tDO087Tzs7OztrQzs7O0s7SyxJOzs7Ozs7O1E7UztTLHFCLHVCOzs7WSxXO2lDO1ksUTtZO1k7VztTOzs7Ozs7OzJDLHFCO087UTtTOzRCLDRCOzs7WSxzQjtZLFE7WTtZO1c7Ozs7Ozs7Ozs7TTs7OzhCOztPOzs7Ozs7O08sRyxnQztRO08sRyxnQztRO087TTtNLFk7Ozs7O007SztLLFksVzs7TTs7Ozs7TSxXOzttQjtNOztPO007SztLO00sVTs7Ozs7Ozs7OztXO1c7VTtlOzs7Ozs7TTs7Ozs7TTs7Yzs7SztLLGMsVztLOzs7Ozs7OztRO1E7Ozs7Ozs7Ozs7YztjLE87YTttQjtXO1U7Vzs7Vzs7Ozs7YztjLE87YTttQjtXO1U7Ozs7O1E7Ozs7O007OztVOztXO1U7VSxhO1U7UztPLE87TSxXOzs7SyxPO0k7SSxPOztHO0c7SSxPO0c7O0k7SSxvQjs7SztLOzs7TyxPOztNLFU7TyxJOzs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt3QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7Rzs7SyxXO0ssTztJO0ksTztHO0c7STs7O0ssTztLLE87SSxPOztHO0k7O0c7Ryw4Qyx3QjtHOzs7Ozs7Ozs7Ozs7O0s7OzBCLG9CLFc7SztNLFc7TTtNO1E7SztLLE87STtJLDhDLFM7STtLOztlOztJO0k7Ozs7Ozs7OztHOztJLGdDOzs7O0s7O0k7Rzs7SSxPOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7O0k7O0ksa0I7SSxPOzs7STtJO0k7Ozs7YyxPO2E7Rzs7STtJO0ksdUMsTyx1QjtHOztJO0c7O0ksWTtrQzs7Ozs7OztJO0ssTztJO0k7SyxPO0sseUI7O0s7Syx5QjtJO0ksVTtJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHOztJLE87Rzs7STtnQjs7STtHOztJO0c7O0k7STtJO0c7O0k7RztHO3FDLGtDOzs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O00sVztLOztJO0k7SyxJOzs7TTs7OztlLE07O21DOztLOztHO0c7Rzs7TSx1Qjs7TTtLOztJOzs7SyxNO0k7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJOzs7OzBCOztROzs7Uzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxRO0ksMEI7dUIsaUI7SSxXO0c7O0k7Z0I7O0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7OztJLFc7SSxXO0ksVzs7Szs7USxPOztRO29DOztJO0ksTztHO2lDLCtCLFU7eUIsaUQ7K0IsYTs4QixhO0c7O0k7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0k7Ozs7OztPO1E7a0I7Ozs7OztJO0c7OztJOzs7TTtNLE87OztJO0c7RztJOzs7O0k7O0s7SztLO0k7Rzs7d0IsbUQ7STtLLE87SyxNO0ksTztHOztJO0k7aUI7OzBEOzs7Rzs7STs7aUIsTzs7Ozs7OztNLEk7OztHOztxQiwrQztJLE87RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7OztJLE87RzsrQixzQjs7SSxXO0c7O0k7SSxXO0c7O0k7SSxXO0c7O0k7SSxXO0c7K0Isc0I7c0IsYzs7STtJO0c7O0k7STtHO0c7O0k7STtJO0c7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO2tEO0k7Rzs7STtLLFc7SztNLE07SztJO3FCLFk7SSxrQjs7Szs7Ozs7OztTOzs7O1M7Ozs7VTs7Ozs7O3FCOzs7Ozs7OztXLEc7Ozs7aUM7Ozs7Ozs7O3FCOzs7Ozs7a0M7Ozs7Uzs7Ozs7Ozs7OzthOzs7Ozs7Ozs2QiwrQztTOzs7Ozs7Ozs7O2E7YTtZOztpQzs7Ozs7Ozs7O0s7STs7Szs7Ozs7O21DOzs7SztJOztLOzs7OztLO0k7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7cUMsMkI7aUMsZ0M7c0MsbUM7b0MsZ0M7dUMsbUM7bUMsZ0M7d0MsbUM7d0MsbUM7cUMsbUM7aUMsZ0M7aUMsbUM7eUMsb0M7Z0MsaUM7Z0MsaUM7a0MsaUM7bUMsb0M7cUMsaUM7dUMsaUM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7aUMsZ0M7c0MsZ0M7dUMsc0M7O0k7RztzQyxnQztvQyxtQztvQyxtQzttQyxnQzswQyxtQzt3QyxvQzt1QyxvQztvQyxvQzs7STtHO21DLGlDOzRDO0c7dUMsb0M7c0Msb0M7O0k7RzsyQztHOztJO0c7bUMsb0M7aUMsaUM7eUMsb0M7b0MsaUM7O0k7RzsyQztHO2tDLGlDO2tDLGlDO3FDLG9DO29DLGlDO3NDLG9DO2dDLGlDO3FDLG9DOztJO0c7dUMsaUM7MkMsMkI7b0MsNEI7MEMsOEI7O0k7STtJO0c7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7O29DLG1DOztJO0k7STtHOztJLFc7STtHO21DLGdDO3FDLGdDOzZDO0c7d0MscUM7NkM7RztvQyxnQzt1QyxnQztHOzs7Ozs7Ozs7Ozs7O0k7STtHOzBCLHlCO3FDLG1DOytCLHlCO21DLHlCO2dDLHlCOzJCLHlCOzhCLHlCOytCLHlCOzRCLHlCO2tDLHlCOzJCLDBCOzRCLDBCOzRCLDBCOytCLDBCOztJO0k7Rzs4QiwwQjs7O0ssTyxxQjtJO0ksWTs7SyxXO0sscUI7STtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJO0k7RzsrQiw0Qjs4Qix5QjtxQyxtQztxQyx5QjtnQyx5Qjs2Qix5QjtpQyx5Qjs4Qix5QjsyQix5Qjs0QiwwQjtpQywwQjs4QiwwQjs7STtJO0c7Z0MsMEI7OztLLE8scUI7STtJLFk7O0ssVztLLHVCO0k7SSxPO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7RztzQyxtQzt1QyxzQzsyQztHO3VDLGdDO3FDLG1DO0c7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7O0k7STtJOzs7O0ksbUI7RzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87Rzs7SSxXO0k7Rzs7STtJO0k7Ozs7SSxtQjtHOztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7OztLLE8scUI7STtJLFk7O0ssVztLLHVCO0k7SSxPO0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7STtJO0k7Ozs7STtJLDRCO0c7Rzs7STtJO0k7Ozs7STtJLFc7SSxzQjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksc0I7RztHOztJO0k7STs7OztJO0ksVztJLHNCO0c7Rzs7STtJO0k7STtJLFc7SSx1QjtHO0c7O0k7STtJO0k7SSxnQztHO0c7O0k7STtJO0ksdUI7RztHOztJO0k7STtJO0ksVTtJLHNCO0c7Rzs7STtJO0k7STtJO0k7SSxVO0k7Ozs7OztZO0c7Rzs7STtJO0k7STtJO0k7STtJO0ksVTtJOzs7Ozs7O1k7O0c7O0k7STtJO0k7SSxpQztHOztJO0k7STtJO0ksZ0M7RztHOztJO0k7STtJO0k7STs7Ozs7O1k7Rzs7STtJO0k7SSw2QjtHOztJO0k7STtJO0ksVTtJLDRCO0c7O0k7STtJO0k7STtJLFU7STs7OztZO0c7O0k7STtJO0k7SSxVO0ksZ0M7RztHO2dDLHlCO0c7Z0MseUI7Rzs7STtJO0k7Rzs7STtHOytCLDhCO0c7O0k7STtJO0c7O0k7RzsrQiw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0M7SSxHO0s7SSxXO0ksRztLO0ksVztJLEc7SztJLFUsdUI7Ozs7O3lCOzswQjs7MkI7O1M7VSxPO2lCOzs7Ozs7Ozs7Ozs7Ozs7SSxTOzs7Ozt3Qjs7MEI7OzJCOztTO1UsTzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7SyxPO0ssYztJO0c7O0k7SyxPO0s7O1U7Ozs7OztJO0c7O0k7Ozs7OztJOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7OztNO08sVztPLFc7TyxXO08sTzs7Ozs7STtHOztJO0k7Rzs7STtHOztJO0ksTztHOzRCLDJCOztJOzs7OzsrQzs7Z0Q7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7YTs7Ozs7Ozs7OzswQjs7Ozt3Qjs7O087OzttQjs7STtHOztJOzs7Ozs7Szs7STtHO0c7NkIsZ0M7O0k7OzthO2lDLE87STs7OztNLE07O29CLHdCLE87O0s7Szs7O0c7O0k7O0ksUTs7STtJO0ksTztHOztJO0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7O087OztRO08sTzs7Ozs7Ozs7O08sTzs7Ozs7SSxPO0c7O0k7Ozs7UTs7Uzs7O1k7WSxPO1c7UTs7OEIsTyx1QjtPOzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7O1M7OztZO1ksTztXO1E7OzhCLE8sdUI7Tzs7O21DLGU7bUMsbUI7NEIsWSwyQjsrQixnQix1Qjs7SSxlLHlCOzttQyxtQjtrQyxPLDBCOztJLDJDO0ssTztJLE87Rzs4Qix3Qjs4QixPLDBCOztJLFE7SSwwQjtJLEk7SSxPOzs7OztjOzs7Ozs7SSw4QjtJOztLLE87Ozs7O21DOzs7O0ksTzs7Ozs7a0M7Ozs7STtJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7Uzs7OztVLDRCO1U7UyxPOzs7OzttQjs7Ozs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsTzs7Ozs7OEIsUTs7OEIsTzs7Ozs7d0M7Ozs2Qjs7bUI7O3dDOzs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7TyxPOzs7OztpQixROztrQjs7OztnRDs7OztpQixPOzs7OytDOztnQjs7Ozs7Ozs7OztXOztZOzs7YTthLDRCO2EsNEI7WSxPOzs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOztZLGtDO1ksTzs7Ozs7O3NCOzs7O3NCLFE7c0I7dUI7O3NCLEk7c0IsTzs7Ozs7Z0M7OztxQjs7MEM7Ozs7VztVO08sTzs7Ozs7aUIsd0I7O2lCO2tCOzs7Ozs7OztpQixPO2dCOzs7aUI7Ozs7bUIsTzs7Ozs7NkI7Ozs7O2lCO2dCOzs7Ozs7Ozs7O1csTzs7Ozs7O3lDOzs7TyxZLE87O08sTzs7Ozs7OztpQjs7Ozt5Qjs7Tzs7OztxQzs7OztHOztJO0s7O00sNEI7TTtLLE87Ozs7bUM7Ozs7Ozs7SyxnQztLLE87Ozs7bUM7Ozs7Ozs7Ozs7Szs7Ozs7TTs7O087Ozs7OztJOztLO00sNEI7TTs7SyxPOzs7OztlOzs7OztJO0ssTzs7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7cUM7Ozs7Ozs7Szs7O0s7TSxPOztLOzs7Ozs7Ozs7Ozs7OztTO1UsTzs7Uzs7O1EsRztTLE87aUIsTzs7O1M7O1U7aUM7OztTLE87Ozs7Ozs7bUI7Ozs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7O21COzs7Ozs7STtLLE87O0k7Rzs7STs7O0k7SztNLE87O0s7OztrQyxPOzs7OEI7O3lCLE87OztPLE87O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxHO2MsTzs7OztXLE87Ozs7Ozt5Qzs7O087O1EsTzs7Ozs7a0I7Ozs7OztPLE87Ozs7O2lCOzs7OztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087USw0Qjs7O08sTzs7Ozs7OztpQjs7OztJOzs7O2tDOzs7Rzs7STs7OztJO0ssTzs7OzttQzs7STtLLGdCOzs7OztNLEcsNkIsTzs7O0ssTzs7Ozs7bUM7OztJLGlCOzs7OztLLEs7ZSxPOztLLE87Ozs7O21DOzs7O0ssTzs7Ozs7bUM7OztJLE87Ozs7O2tDOztrQzs7OztJLGU7Ozs7Ozs7Ozs7OEIsNkM7TSxLO007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O1k7O2E7b0M7OzthO1k7Ozs7bUM7Ozs7OztlOzs7Ozs7WTs7OztXLHdCO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7Uzs2QjtPLFE7Ozs7Ozs7O1c7Ozs7a0M7O1c7Ozs7Ozs7Ozs7Ozs7WTs7O2EsVzthO2E7O2dCOzs7WTs7Ozs7aUI7OztrQjtpQjs7OzsrQzs7Ozs7O2dCOzs7aUI7Z0I7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OzttRDs7Ozs7Ozs7Ozs7cUI7Ozs7O3NCO3FCOzs7O21EOzs7Ozs7Ozs7O21COzs7O29CO21COzs7O2lEOzs7Ozs7O2lCOzs7a0I7aUI7Ozs7K0M7Ozs7Ozs7WTs7Ozs7Ozs7Ozs7UztVO1csZ0I7Vzs7Ozs7WTs7OztVO1c7VyxJO1c7O2dCO2dCOzs7Ozs7O1ksTTs7Ozs7OztVO3NCO1csUzs7O3FDO3FDO1U7Ozs7Ozs7Ozs7Ozs7O007OztJO0c7O0k7O007O08sNEI7TztNLE87Ozs7b0M7Ozs7OzttQyxPOzs7OztTOzs7VTtvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7ZSxPOzs7Ozt5Qjs7Ozs7eUI7Ozs7OztXO1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7Ozs7WSxHOzs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7O1c7Ozs7YSxPOzs7OzsyQzs7OztXO1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UztTLE87Ozs7O21CO21CO29COzttQixJO21CLE87Ozs7aUQ7Ozs2Qjs7O2tCOzs7Ozs7UztTOzs7VyxPOzs7Ozs7eUM7Ozs7O1U7Ozs7d0M7Ozs7UyxNOzs7OztTLE87Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87O1M7OztVLDRCO1MsTzs7Ozs7OzthLDBCO2EsTzs7OztTLE87Ozs7O21COzs7Ozs7UyxPOzs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozs7VSxPOzs7O3dDOzs7UyxPOzs7O3VDOzt1Qzs7OzhCOzs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7OztTOzs7O3VDOzs7Ozs7Ozs7VSxPOzs7O3dDOzs7VTs7Ozs7Vyw0QjtXO1UsTzs7Ozt3Qzs7Ozs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O3dDOzt3Qzs7O1U7Ozs7Vyw0QjtXO2tDO1UsTzs7OzttQjs7Ozs7OztVLE87Ozs7O29COzs7d0M7OztVOzs7Vyw0QjtVLE87O1U7OztXLDRCOztXLDRCO1UsTzs7O1U7Ozs7O1csNEI7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7Ozs7Ozs7Vzs7Ozt5Qzs7Ozs7O2E7Ozs7YztjO3FDO2EsTzs7Ozs7Ozs7O3VCLFM7dUIsZTt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlOzs7Z0I7Ozs7OzthO2MsTTtjO2MsNEI7Yzs7YSxPOzs7Ozt1Qjs7Ozs7O007Ozs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O08sTzs7Ozs7aUI7Ozs7TTtPLE87O007OztHOzRCOztJOzs7Ozs7UyxPOzs7O3VDOzs7OztTLGtDO1MsTzs7Ozt1Qzs7OztLO00sTzs7Szs7SSxrQixPOztJO0c7O0k7OztJO0ssa0IsTzs7Szs7Ozs7OzJCOzswQjs7UTs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7a0MsTztvQyxPOzs7OztXOztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7UTs7Ozs7WSxpQzs7Ozs7YSxHO2MsTzs7O1ksTzs7Ozs7OzBDOzs7OztTOztZOztTLDRCOztRLE87Ozs7O2tCOzs7Ozs7UTs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJOztLLDBCO0ssTzs7SSxPO0c7O0k7O0ssMEI7SyxPOztJLE87Rzs7STtJLDBCO0ksTztHOzs7Szs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7OztrQzs7OztHOzs7SSwwQjtJLE87Ozs7SSwwQjtJLE87OztJO0ksMEI7O0ksTzs7Ozs7Yzs7Ozs7Rzs7STs7O08sbUM7TyxPOzs7OztpQixRO2lCO2tCOztpQixJO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7cUM7Ozs7Ozs7OztXOzs7YyxtQjtjLE87Ozs7NEM7Ozt3Qjs7OztjOzs7Ozs7ZTtlOztrQjs7ZTtzQztjLE87Ozs7Ozs7Ozs7Ozs7O2M7Ozs7OztlO2U7O2tCOztlO3NDO2MsTzs7Ozs7Ozs7Ozs7Ozs7Yzs7OztlO2MsTzs7Ozs0Qzs7NEM7Ozt3Qjs7OztnQzs7O2M7Yzs7VTs7O087Ozs7O1UseUM7VSxPOzs7O3dDOztTOzs7VTs7Ozs7Tzs7OztRLDRCO1E7TyxPOzs7OztpQjs7Ozs7OztPOzs7Tzs7O1EsNEI7O08sTzs7O0c7OztLLDhCO0ssMEI7O0ssMEI7SywwQjtLLE87Ozs7Ozs7Ozs7Ozs7O0k7SSxROztlOztJO0s7O0ksSTtJLE87Ozs7O2M7Ozs7Yzs7O0c7OztJOzs7O1E7Ozs7UztTO2dDOzs7WSxTOztZLE87VztTLDRCO1EsTzs7Ozs7Uzs7VTtVO2lDO1UsNEI7UyxPOzs7UTs7O1M7UztnQztTLDRCOztRLE87Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7aUM7VSw0QjtTLE87Ozs7Ozs7Ozs7OztROzs7OztZOzs7O1c7UztTO2dDOzs7WTs7Ozs7O2M7O2UsNEI7ZTtzQztjLE87OzthOzs7VztRLE87Ozs7Ozs7Ozs7OztROzs7O1M7USxPOzs7O3NDOztzQzs7O2tCOzs7O1Esb0I7USxPOzs7O3NDOzs7a0I7Ozs7MEI7OztROzs7O0ksSTtJLE87Ozs7O2M7Ozs7OzBCOzs7O2dEOzswQjs7OztnRDs7YTs7O2M7Ozs7O0k7Ozs7O1EsTzs7Ozs7a0I7O2tCO21COztrQixJO2tCLE87Ozs7OzRCOzs7aUI7Ozs7OzJCOztROzs7OztTLDRCO1M7USxPOzs7O3NDOzs7OztROzs7Uzs7WTs7Uzs7O1EsTzs7OztzQzs7O2tCOzs7O1E7Ozs7Uyw0QjtTO1EsTzs7OztzQzs7Ozs7O1EsTzs7OztzQzs7c0M7Ozs0Qjs7UTs7O1MsNEI7O1EsTzs7Ozs7SSwwQjtJO0ksTzs7OztrQzs7OztHOztJO0k7O007O08sNEI7TztNLE87Ozs7b0M7Ozs7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7Uzs7VTs7YTs7Z0I7Ozs7dUM7aUIsTztpQjt3QztnQixPOzs7OzswQjs7Ozs7OzBCOzs7OztnQixPOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7Ozs7OEM7OztnQjs7Ozt1QztpQixPO2lCO3dDO2dCLE87Ozs7OzBCOzs7Ozs7MEI7Ozs7O2dCLE87Ozs7VTs7UyxPOzs7O3VDOzs7bUI7Ozs7Ozs7UTtTLE87O1E7OztHOztJOzs7STs7OzsyQixPOztROztTLDRCO1M7OztRLE87Ozs7O2tCOzs7OztRLE87Ozs7c0M7OzswQjs7O1EsTzs7UTs7OztzQzs7Ozs7STtLLE87O0k7Rzs7STs7O0k7Ozs7a0M7OztHOztJOzs7Tzs7O1E7USw0QjtROytCO08sTzs7Ozs7Ozs7Ozs7OztPOzsyQjs7MEI7OzBCOzs7O1E7O1M7UztnQztRLE87Ozs7aUI7Ozs7OztPO1E7USw0Qjs7USw0QjtPLE87Ozs7Z0I7Ozs7OztPOztRO1EsNEI7TyxPOzs7O087O1EsVTs7UTtTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7OztTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7Ozs7OztPOzs7OztRLDRCOzs7VyxTOztXO1csTzs7Ozt5Qzs7VTtPLE87Ozs7Ozs7TztRLE07Tzs7USw0QjtRLDRCO08sTzs7Tzs7UTtRLDRCOztPLE87OztPOztRO1EsNEI7O08sTzs7OztxQzs7Ozs7Ozs7O1csOEI7VztZOzs7VywwQjtXO1k7O1csTzs7Ozs7Ozs7Ozs7Ozs7O08sVTs7b0I7Tzs7UTs7Vzs7UTs7TyxPOzs7OztpQjs7OztpQjs7OzsyQjs7eUI7OztPO087O0c7O0k7Szs7TSw0QjtNO0ssTzs7OzttQzs7Ozs7Ozs7MEIsTzs7Tzs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7UTs7OztTLDRCO1MsNEI7USxPOzs7O2lCOzs7Ozs7O08sTzs7OztxQzs7OztPLE87Ozs7cUM7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7VSxPOzs7OztvQjs7Ozs7UztTLE87Ozs7dUM7Ozs7OztTLE87O0ssTzs7OzttQzs7STtJO3NCLFk7SyxPO0k7Ozs7Ozs7Ozs7USxPOzs7OztrQjs7O3NDOztzQzs7Ozs7OztLLE87Ozs7bUM7O21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztXOzs7WTs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7TTs7Ozs7Ozs7O087TSxHO08sVTtPLEc7Ozs7Ozs7Ozs7Ozs7TTs7OztPLDRCO08sNEI7Tzs7OztNLE87Ozs7b0M7OztnQjs7Ozs7Ozs7O0ssTzs7OzttQzs7bUM7O21DOzs7Ozs7Ozs7USxPOzs7OztrQjs7Ozs7OztRLGlDOzs7O1MsTzs7Ozs7bUI7Ozt1Qzs7dUM7OztRLE87Ozs7O2tCOzs7c0M7O3NDOzs7SSxPOzs7O2tDOztrQzs7Ozs7O0s7SyxPOzs7Ozs7O21DOzttQzs7STtJLFE7O2U7O0ksMEI7SSxJO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxHO08sTzs7Ozs7SSwwQjtJLDBCO0ksTztHOztJOzs7O08sTzs7OztxQzs7O2lCOzs7O08saUM7TyxPOzs7O3FDOzs7Tzs7UTtRLDRCO1E7K0I7TyxPOzs7OztRLE07O087OzBCOzswQjs7Tzs7O1EsNEI7Ozs7Vzs7OztZOzs7OzthO2M7OztlO3NDO2M7Ozs7Z0I7Ozs7O2M7Ozs7O1c7Ozs7YSxPOzs7OzJDOzsyQzs7O1csTzs7Ozt5Qzs7VTtPLE87Ozs7Z0I7Ozs7Ozs7Ozs7OztZOzs7YTthO29DO2E7b0M7YTtvQztZLE87Ozs7cUI7Ozs7Ozs7O1c7VztZOzs7VywwQjtXLE87Ozs7b0I7Ozs7OztPO1EsTTs7O1E7Ozs7OztZLG9CO1ksTztXOztTO2dDO1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7Ozs7Tzs7OztXLG9CO1csTztVOztRLDRCOztRLDRCO08sTzs7OztnQjs7Ozs7Ozs7Tzs7Ozs7USw0Qjs7O1csUzs7VztXLE87Ozs7eUM7O1U7TyxPOztPOztRO1EsNEI7O1EsNEI7TyxPOzs7Ozs7VyxPOzs7O3lDOztVOzs7Vyw4Qjs7Ozs7Ozs7O2E7Ozs7O2M7Ozs7OztXLEksTzs7Ozs7Ozs7O1c7VztZOztXLDBCOztXO1k7O1csMEI7VyxJO1c7WTs7VztZOztXLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxVOztvQjtPOztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOztPOztRO1EsNEI7O08sTzs7OztxQzs7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7OztLOzs7OztLO0ssMEI7SywwQjs7SyxPOzs7Ozs7OztlLFE7ZSwwQjtlLE87Ozs7O3lCOzs7Ozs7Ozs7OztJO0ksUSxNOztlOztJLDBCO0ksSTtJLE87Ozs7a0M7OztjOzs7Ozs7SztLLDBCOztLLDBCO0ssTzs7Ozs7Ozs7Ozs7STs7SSxPOzs7OztjOzs7Rzs7cUIsa0Isd0I7O0s7aUI7OztlOzs7OztxQzs7ZTs7OztxQzs7STs7SztLOztJOzt1Qix3Qix3QjtLOzsrQjs7Ozs7O1UsYSxPOztVLE87Ozs7O29COzs7O1M7TSxPOzs7SyxPOzs7Ozs7O2U7OztJOztLOztNO00sTzs7OztvQzs7b0M7O0s7SyxPO0k7SSxPO0c7OztLLE87Ozs7O2U7OztJO0k7SSwwQjs7STtLOzs7SSxPOzs7OztjLFE7YywwQjtjLE87Ozs7O3dCOzs7YTs7Ozs7Ozs7OztHOzs7Ozs7OztJO0ssTzs7Ozs7O2U7O2dCLE87Ozs7OzBCOzs7Ozt1QjtlLDBCO2UsSTtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7OztjOztlLE87Ozs7O3lCOzs7NkM7Ozs7O2MsMEI7YywwQjtjLEk7YyxPOzs7Ozt3Qjs7Ozs7YTs7a0M7Ozs7STs7O0s7O0ksbUI7SSwwQjtJLE87Rzs7O0s7Ozs7TTtLLDBCO0ssMEI7SztLLE87Ozs7bUM7OztlOzs7Ozs7STtHOztJLGdDOzs7Ozs7Ozs7Ozs7O0ksMEI7STs7SyxPO2U7ZTs7Ozs7cUM7Ozs7SSxPO2M7Yzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7Szs7TTs2QjtNOzs7SyxPOzs7OztlOzs7OztnQixPOztJLE87Rzs7SSxPOzs7O2tDOztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7O0k7STtJO0ksTztHO0csaUM7RywrQjtHLGlDO0csaUM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLGlDOzs7STtHOztJO0k7bUI7Z0I7SyxvQjs7Rzs7STtJO2dCOztLLFMsdUI7OztHOztJLFM7O0k7Rzs7SSxpQjtHOztJOzs7Ozs7Z0I7OztHOztJOzs7Ozs7Z0I7O0ksTztHOzs7SSxhOztLLFk7a0I7a0I7SyxPO0k7SSxPO0c7OztLLFk7SyxPO0k7SSxPO0c7O3lCLHFCLFk7eUIsdUIsYzt5QixzQixhO0k7SztHOzt1QyxnQztJO0s7RztHO0k7STtJO0k7O0k7Ozs7Ozs7Rzs7STs7SyxNOztLLHdCLE87SyxPOztJOzs7SyxPO0ssTztJLE87Rzs7STs7SyxNOztJO0c7O0k7STs7O2EsWTthO2E7WTtHOztJO0k7OzthO2MsUzs7O2E7YTtZO0c7O0k7OztLOzs7STtLLFc7Szs7OzsrQjs7Ozs7cUIsd0I7SSxPO0c7O0k7SyxJO0ssSTs7OztJO2dCLE87SyxJLGlCLEksOEI7Ozs7Ozs7TTtNLEk7OztLO00sc0I7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHOzs7STs7SyxJOztJO2dCLE87SyxJLGlCLEk7SzttQixNO007OztPO1EsTTs7O087Ozt1QixNO007TztTO1c7TyxPO007Ozs7OztNOzs7OztHOztJO0k7Rzs7STtLLEk7SyxPO0ssTztJO0ksYTtJO0c7O0k7OztHOzs7Ozs7Ozs7SSxTLE87STs7Szs7O0ksTzs7b0IsYyw2Qjs7SSxVLE07SSxrQjs7O0s7O08sYztPOzs7Ozs7OztHO3NCLGMsbUI7O0k7STs7O0c7c0IsWTtzQixrRDs7SSxzQjs7Szs7TTs7Ozs7Ozs7Ozs7SyxPO0k7SSxRO0k7O00sTTtLOzs7TSxJO007TTs7OztPLEksd0M7Ozs7Uzs7O1c7O1M7Ozs7O087Ozs7O0ssYzs7O0ssTTtJOzs7O0ssTTtLO0s7Ozs7O00sSSxZOzs7Ozs7OztTOzs7OztROzs7OztNLHVCO007Ozs7O0ksYztHOztJO0ssSTtrQjs7STtHOztJLGdDOzs7O1E7O1E7UyxJOzJCOztROztRO1MsTTs2Qjs7UTs7USxPOzs7Z0I7aUI7Ozs7SyxNOztnQjthOzs7YTs7O2E7Ozs7Ozs7O0k7OztHOztJO0ssTTtJLHNCOzs7OztPLE07TTs7Ozs7O0ssSTtLO2dCO007TSxHOzs7TztROzs7Ozs7O0k7SSxXOztLOztJO0k7SSxJLGUsc0I7O0s7OztNO087Ozs7Ozs7O1U7Ozs7WSxNOztXO1csSyxrQzs7Ozs7Ozs7Ozs7O087TyxJOzs7Ozs7Ozs7Ozs7OztPO087Ozs7Ozs7TTs7O0k7STtJO0c7Ozs7Szs7O007O0ssTTs7SSxNOzs7STs7O0ssVzs7OztJLHNCOztLOztLO0k7SSxJLFEsOEM7O0ssTTtJLEksWTs7SztNLGlCOztPOzs7UTs7OztPOzs7OztJO0ksVztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7OzsyQixTOzs7Ozs7O1M7UztzQjtVO1csUzs7Ozs7UTs7UztTLE07UTtxQyx5QixTO29DLHlCLFM7O1M7UzttQjttQjtRO2dDLDJCOztTO1E7O1M7O1U7Vzs7O1UsZSxPOztVLE87OztxQixPO1MsTTtROztTO1M7UTs7UztROztTO1M7UyxNO1E7OztTO1M7UTs7UztTOzswQywrQjs7bUI7bUI7OzZCLFM7Ozs7Ozs4RSxTOzhELCtCO3NELFM7OzRCOztrQjs7UTs7O1M7bUI7O1E7O1M7b0I7Uzs7VTtTLE87UTs7UztvQjtTOztVO1MsTztROztTO29CO1M7O1U7O1U7UyxPOztROztTLGU7UTs7UyxlO1E7O1M7bUI7O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO2lDO2lDOzs7O1M7VSxNOztTO21CO21CO1E7O1M7UyxHLFc7VTtTLE07UTs7UyxHLFc7VTtTLE07UTs7UztTO1E7O1M7UztROztTOzs7NkI7O1U7Ozs4Qjs7UztRO21ELHlCOztTOzs7OztVO1M7OztTO1U7VTtVO1M7UTs7UztTLE87UTs7UztTLE87UTs2Qix1Qzs7UztVO1U7UyxPO1E7O1M7VSxNOztROztTO1M7UTs7UyxJLGU7UztROztTOzs7Ozs7UztROztTO1M7d0I7VTtXLFM7Ozs7O1E7O1M7Uzs7OzttQixPLGM7a0I7O1E7O1M7Uzs7OzttQjs7NkIsYztrQjs7UTs7UyxPO1E7bUMsdUI7K0IsdUI7O1M7VTs7Vzs7OztjO2M7YTtVLE87Ozs7Ozs7Ozs7Uzs7VTs7VSxRO3FCO1M7O1U7UztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOztXO1c7Ozs7MkI7O1c7Vzs7O1E7O1Msb0IsVztTLE87UTs7Ozs7OztTLEksUSx3QixVOzs7VTtVO1UsTzs7UztROztTOztROztTLG1DLE87UztTO1MsaUI7OzswQyxrQzt3QyxpQzs7UztTLFk7O1U7O1csTztXLE87VTtVO1UsVztVLE87O1M7O1E7O1M7Uzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxROztTOztVLE87O1M7O1U7Vzs7WSxPO1ksTztXLE87Ozs7Ozs7Ozs7a0I7VTtTOztVLFE7VTs7OztXO1c7VTtTOztVLEsseUI7a0I7O1U7Uzs7VSxRO1UsSSxZOzs7OEI7OztVO1csVTtXO1U7Uzs7VSxRO1U7VTtTOztVOzs7VTtVO1M7O1U7O1c7WTthOzs7O2MsTzthOztZO1k7O1UsTztTOztVOzs7O1U7Vzs7O2M7OztjOzs7O2UsTTtjO2U7O2tCLDJCO2tCLHFCO29DO2tCO2tCOztlOztrQixROzs7OztlOztrQixHLDhCOzJCOzs7O21COztrQixNOzs7YyxPOzs7VSxPO1M7O1U7VyxRO1c7O1U7Uzs7VTtVOzs7OztXO1ksTTtXOztjO2UsUztlLGU7ZTs7Ozs7dUM7O2M7ZTtlOzs7OztTOztVLDBCO1U7OztvQjs7O1M7O1U7VTs7OztlO2dCLFM7Z0IsZTs7Ozt3QyxPOzs7ZTtnQjs7OztXLE87O1M7O1U7Ozs7OztXLE07Ozs7VztZOztlO2dCLFM7Z0IsYTs7Ozt1QyxPOzs7ZTtnQjs7OztXLE87O1M7O1U7VTs7OzswQzs7ZTtnQjs7OztlOztXLE07O1M7O1U7VztXLGU7O1M7O1U7OztxQzttQjttQjs7Uzs2QiwyQjs7VSxtQjs7OztTOztVOztXO1ksTTtrQjs7O1U7Uzs7VTtTOzs7VTs7O1U7NEIsUztrQyxTO1UsTztTOztVO1M7O1UsbUI7O1M7O1UsSztXLE87VSxHO1csTTtVO1csUTtXLFU7VTtTO29DLGdCOztVO1U7eUI7Vzt1QjtXLHNCOztTOztVO3NCOztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0k7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7STs7OztJOzs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7NEIsTyxzQzs0QixPLHVDOzZCLGdDOztJLGlCLDZCO0k7Rzs7STtHO2dDLHlDOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzBCLDhCOztJO0ksTztHOztJO0c7O0ksMEM7OztJLE87Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7O0k7K0I7OztLLE07O0k7OztJLFk7O0k7OztJLFk7O0k7OztJLE07Rzs7STtLO0s7SSxNO0c7O0k7SSxNO0c7O0k7SSxNO0c7O0k7Ozt3QjtJOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0kscUI7Ozs7Ozs7Ozs7OztnQjs7Z0I7OztNOzs7STtHO0c7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7O0k7Ozs7OztLO0ssUTs7O0ssSztJOzs7O0ksVztJOzs7SSxJO0k7Rzs7STtJLFc7Rzs7STtJO0c7eUIsaUM7O0k7Ozs4QixXLDhCO0k7Rzs7SSwwQyxjO0c7O0k7SSxPO0c7O2dDLHNDO0ksTztHOztJOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO3VCLHdCO0ksTztHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7aUMsd0I7YyxPO2E7O0c7O0k7SyxPO0ssTztJO0c7O0k7Ozs7SztxQztJOzs7OztZOzs7OztJO2E7STtHOztJO0k7Rzs7STtLLE07STs7SyxtQjtLLHFDO3VCO3VCO3VCOztNLE07O00sTTs7O00sTTs7SztJO0k7OzsyQjs7OztRLDBDO1Esa0I7Ozs7STtHO3FDLDZCOztJO0c7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7Rzs7STs7O3dCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7bUM7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHOztJOzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7Uzs7UztTOztTLDRCO1E7Ozs7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1MsTTtTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UyxLO1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTLEk7UTtPOztROzs7Ozs7Ozs7UyxPO1MsTztTO1MsSTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTLE87UztRO087O1E7Ozs7Ozs7OztTOzs7Uzs7Ozs7Ozs7UTtRLGU7O1MsTTtRO1MsTztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztRO087O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7OztPOztROztTOzs7Ozs7OztTO1M7O1MsTztTOzs7aUI7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTtPOztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztRO087O1E7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOztTO1M7UyxPO1M7OztpQjs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7O087O1E7O1M7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTtPOztROztTOzs7Ozs7O1M7UyxPO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7OztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7OztPOztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7OztPOztROzs7Ozs7Ozs7UztTO1M7UTs7Ozs7O087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UyxNO1M7UTtPOztROzs7Ozs7Ozs7UztTLE07UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTO1M7Vzs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTLEs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UTtPOztROzs7Ozs7O1M7UztTOztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztRO087O1E7O1M7Ozs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7O1EsSSxrQztRO087O1E7O1M7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7USxJLGtDO1E7Tzs7UTs7Ozs7Ozs7O1M7OztTOzs7Ozs7OztRO1E7UyxXO1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTtPOztROztTOzs7Ozs7Ozs7UztRO1E7UztTLEk7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7OztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7Uzs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOztTLE87UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTO1M7Uzs7O1MsTztTLFE7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxPO1M7UztXOzs7Ozs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLG1COzs7YztTLFc7UztTO1c7O1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7Ozs7OztVLE07OztRO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTLFE7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTOzs7Uzs7UztTO1M7UTs7Ozs7O087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1MsTztTO1MsTztTO1c7Ozs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsSTtTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UyxJO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTO1MsSztRO1E7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7UztTLEk7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UyxPO1MsTztTLEk7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UyxPO1MsTztTLEk7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTLEk7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UyxJO1M7UTtPOztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7OztTO1U7OztRO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7Uzs7OztTO1U7OztRO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7O1M7VTs7O1E7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7O1M7VTs7O1E7UztTOztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSTtRO087O1E7Ozs7Ozs7Ozs7O1MsSTtRO087O1E7Ozs7Ozs7OztTO1M7UyxPO1MsSTtRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTOztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTO1c7UztRO087O1E7O1M7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Uzs7UztTOztRO1EsTTtPOztROzs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1M7UTs7Ozs7O087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1E7UTtTLE87UyxPO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UTtRO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7O1M7UztRO1E7UyxPO1MsTztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsZTtTO1M7UTtPOztROzs7Ozs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87Uzs7WTs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxXO1M7UztRO087O1E7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsTztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7UztXOzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7Ozs7O1M7Vzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Ozs7O1M7Vzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7Ozs7OztTO1c7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7Ozs7OztTO1c7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7UztXOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7Ozs7OztTO1c7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7UztXOzs7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1E7Ozs7OztPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTs7OztRLEkscUI7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1E7Ozs7USxJLHFCO1E7Tzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztROzs7O1EsSSxxQjtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7O1E7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1E7Ozs7UTtTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7OztRO1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7O1M7UyxPO1MsVztTO1c7Ozs7Ozs7OztTO2U7UTtPOztROztTOzs7OztTLFE7UztRO087O1E7O1M7Ozs7Ozs7UztTLE87Uyx5QjtRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UTtTLE07UTtTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTLE87UyxRO1M7O1k7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UTtRO1M7UyxPO1MsUTtTOztZOzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLE87UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztTOztTLFE7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UyxXO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7O1M7O1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UyxLO1MsSztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxLO1MsSztTOztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsTztTLFc7UztXOztTO2U7UTtPOztROztTOzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7Uzs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1MsSztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTLEs7UTtRO1MsTztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7Ozs7Ozs7Ozs7O1U7Ozs7Ozs7Ozs7Ozs7UTtRO1MsVztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztRO1E7UztTLE87UyxRO1M7O1k7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLE87UztTLFE7UztXOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTtPOztROztTOzs7Ozs7OztTO1M7UztTLE87UyxRO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTOztTO1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1c7O2M7Ozs7UTtPOztROztTOzs7OztTO1M7Vzs7Yzs7OztRO087O1E7O1M7Ozs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsSztTLE87UztRO087O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzt3RCxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHOztJO0c7O0k7OztLO0s7Ozs7OztJOzs7STtJOzs7MEI7SSxjOzs7STtJO0c7O0ksZ0I7O0k7SSxJLFUsNkI7STtJO0c7O0ksTTswQjtHOztJLE07Rzs7STs7OztNLFU7Ozs7Ozs7Ozs7TyxNOzs7TyxNOztNOzs7Ozs7Rzs7STs7OztTOztTOztTOzs7c0I7STtHOztJLGdCO0ksTTs4QjtHOztJOzJCLE87STs7cUM7Rzs7STsyQixPO0k7O3FDO0c7O0k7SSxPO0c7O0ksVztJO0c7O0k7STs7Ozs7OztHO0csSSx1Qjs7SSxXO0ksTzs7RztHLEksNEI7O0k7O0c7O0k7Rzs7SSx1Qjs7OztpQjs7TTtPLFU7Yzs7OztROztTLE87Z0I7OztROzs7Uzs7WSxrQjs7WSxPO1c7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7OzttQjs7UTs7UyxlO2dCOzs7OztnQjs7Ozs7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7O0k7RztHOztJLGE7STtJO0ssTzs7STtHOzBCOztJO0k7Szs7UTs7Ozs7OztVOztVOzthOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7O1UsbUI7VTs7OztTLFM7cUM7UztTO1UsTzs7Uzs7UyxnQzs7UztVLE87O1M7O1M7O1M7O1M7O1M7O1k7O1M7Uzs7Uzs7WTs7UztTOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7UzttQjtTO1UsVztVOzs7O2lDOzs7O1M7bUI7UztTOztTO21CO1M7O1M7bUI7UztTOztTO2dCO1M7O1M7VTtZOztVLFE7Uzs7UztrQjtTOztTO1U7WTs7VSxVO1M7O1M7O1k7Uzs7UztVOzs7Uzs7UztVO1k7O1U7OzZCOzs7Uzs7UztVO1k7O1UsVztVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTO1U7WTs7VSxhO1U7OzZCOzs7VTtTOztTO1U7VTtZOztVO1UsVTtVLGE7VTs7NkI7OztVO1M7O1MsZ0M7O1MsUTtTOztTLFU7Uzs7Uzs7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7UztVOzs7Uzs7UztVOzs7O3dCOzRCOztTO1U7WTs7VTs7O2UsYTtlO2M7Ozs7Uzs7O1UsVztVOztTO1U7OztTOztTOztZOztTLDJCO1UsVztVLFk7O1MseUI7O1MsWTtTOzs7O1M7O1M7UyxzQjtTO3VCOztVOztVO1c7O2M7Ozs7OztXOzs7VTtXO1c7VyxNO1c7VztXLFM7VztXLFk7OztXLEksZTs7Ozs7OztrQjs7OztXOzs7VTs7OztvQzs7OztTOztTOztTOztTOztTOztTOztTOztTOztTO2lCOzs7Szs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7OzttQztROzs7OztTLE07OztTLE87Ozs7UTs7OzhCO1E7OztZOzs7Ozs7Vyx3Qjs7WSxNO1c7O1ksTztZLFE7O1c7Ozs7Ozs7UTs7O1E7O1M7UyxROzhCO1E7OztZOzs7Ozs7Vyw0Qjs7WSxNO1c7O1ksTztZLFU7O1c7Ozs7Ozs7UTtRO1E7OztROztRLGdDOztROztROztROztROztROzs7O1MsTTtROztTLE87UyxVOztROztRLGdDOztRO2dCOzs7Rzs7STtrQjs7SztNOztTOzs7TTs7Ozs7OztROztTO1MsUTtRO1Esa0I7OztRLFE7UTs7O1E7O1E7O1E7OztRO1MsTTtTLE07Uzs7Ozs7O1M7VTtVO1k7ZTtzQztRO1M7O1M7Ozs7UyxVO1M7O1E7Ozs7UyxVO1M7O1E7UTs7OzZCOztRLFU7UTs7O0c7O0k7O0s7TTs7Uzs7O007Ozs7O1EsZ0M7OzZCOztROztXOztRLEc7UTs7O1EsUTtROzs7Rzs7STtJO0s7O1E7Ozs7O1M7O1M7aUI7O0s7OztHOztJO2M7O0ksTztHOztJLGU7O0s7SztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtVO1csTTtXLE07VyxVO1U7VSxHLGtCOzs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7O1U7Ozs7Ozs7Ozs7O00sYzs7Ozs7UyxVO1M7UyxVO1M7OztTLFU7UztTOzs7Ozs7UyxVO1M7UztVLE07VSxNO1M7UztVLE07VSxNO1M7UyxVO1M7OztTLFU7UztTO1UsTTtVLE07UztTLFU7UztTLFU7UztTOzs7TTs7STtJO0c7O0k7Ozs7Yzs7SSxPO0c7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TyxLO087TyxNOzs7Ozs7TyxVO08sRztRO08sTTs7TSxHO087TyxNOzs7OztHOztHLDZCO0c7RywwQjtHO0csOEI7RztHLHVCO0c7Ryx3QjtHO0cseUI7RztHLHNCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7RztHLHlCOztJLDhCOzs7O087Ozs7O1E7O2U7Yzs7Ozs7O2M7Ozs7OztjOzs7aUM7Ozs7Ozs7VTs7OztpQzs7Ozs7O2M7Ozs7OztjOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztHOztJLHFCO0k7SyxhOztJLDBCOztJLDBCO0k7O2tCO0c7O0k7O3FCLE87OztPLE87Ozs7TyxPOzs7Ozs7Ozs7Rzs7SSxPO0c7O0k7Ozs7Ozs7O0c7O0k7Rzs7SSxpQixPOztHOztJLFksTzs7SSxPOzs7STs7O08sTzs7cUIsTzs7OztRLE87O08sTzs7OztPLE87OztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJLFc7STtJLE87Rzs7SSxRO0k7SSxXO0k7STtHOztJLFE7O0k7SSxPO0c7O0ksTztHOzhCLE8saUM7O0ksTztHOztJLE87Rzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7UTtROzs7UTtROzs7UTtRO1M7OztZOzs7YTthO2E7OztZO1k7VztRLE87OztRO1E7OztROzs7OztRO1E7UTs7O2tCO21CO2lCOzs7Ozs7Ozs7O2E7O1k7WSxPO1c7UTs7Ozs7UTtROzs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7OztRLE87OztRLE87Ozs7UTtROzs7UTtROzs7a0I7a0I7a0I7aUI7Ozs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7Ozs7UTtRO1E7UyxPOztROzs7UTtROzs7UTs7Ozs7USxPOzs7UTs7Ozs7Ozs7O1E7UTtTLE87O1E7OztROzs7O0c7O0k7OztJO0k7O0s7SztLLEksbUI7bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7O1EsTzs7O1E7Ozs7O1E7UTs7O1E7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1E7Ozs7Ozs7OztRO1E7UTs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7STtJO0k7STs7Rzs7O0k7OztJO0k7STtJO0k7STtJO0k7STtJLGdCOzttQiwyQjs7O0s7Szs7OztLO0s7OztJO0k7O0c7O0k7STs7Rzs7STs7SztLO0s7STtJLE87Rzs7STs7eUI7OzJCOzs7TztRLE87O087Ozs7O1E7UTs7UTtTLE87O1E7O087USxPOztPOzs7O0k7OztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SztLOzs7STtJLE87Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTtROzs7O1E7UTtROzs7OztRO1E7OztROzs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7O2lDLHVDOztJO0k7SSxJLGlCOzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7Tzs7Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOzs7Ozs7Tzs7O087TztPOzs7TztPOzs7TztPOzt5Qjs7Ozs7Ozs7TztPO087O0c7O0ksWTs7STs7O0k7OztPO087OztPLE87Ozs7Ozs7O087Tzs7O087Tzs7O087Tzs7O08sTzs7Ozs7OztHOztJO0k7O0s7SztLLEksbUI7Ozs7USxPOzswQixzQjs7Ozs7UztTOzs7OztTOzs7Ozs7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztHOztJOztpQyx1Qzs7STtJO0ksSSxpQjs7OztPO087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPO087OztPO087OztPO087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJO0k7O0c7O0k7STs7Rzs7O0k7STtJOzs7Ozs7Ozs7STtJO0k7STtJOzs7SSxxQzs7STs7Ozs7Ozs7O0k7STtJO0k7STs7OztJO0k7Ozs7STtJOzs7SztLOztJOzs7STtJO0k7O0c7O0k7STtJOztHOzs7STtJOzs7O0k7STs7OztJO0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLHVDO21DLHVDOztJOzs7SztLOzs7Ozs7O0k7bUI7Ozs7NkIsTzs7O3FCLE87O08sTzs7O08sTzs7TyxvQixPO08sTzs7Rzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7O1c7Ozs7WSxNO1ksUTtXO1k7OzthLE87Ozs4QztXLE87O1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7TyxnQyxPO08sTzs7O087Ozs7UTs7Vzs7OztZLE07WSxRO1c7WTs7OzthLE87YSxPOzs7NEM7VyxPOztRLE87TyxPOzs7Tzs7O1EsTztRLHNCO1EsTztPLE87OztPOzs7O1EsTztRLHNCO1Esc0I7USxPO1E7TyxPOzs7TyxpQixPO08sTzs7OztJOzs7Ozs7Ozs7SyxNO0ssUTtLO0ssZTtLLFc7SyxLO0ssSztLLEs7SztJO0s7Ozs7TSxPO00sTztLLFc7O0k7SyxXO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0s7SyxPO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7STs7OztLLE07SyxRO0ssTztJLE87OztJOzs7OztLLE07SyxROztLOzs7TSxlOzs7O0k7SSxPOzs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7USxPO1EsTztPLE87OztPLG1CLE87TyxPOztPOzs7USxPO1EsTztPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPLGtCLE87TyxPOztPOzs7Ozs7USxPO1E7TyxPOzs7Tzs7Ozs7O1EsTztRO08sTzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLE87SyxPO0ssTztJLE87OztJLFk7SSxpQyxPO0k7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sa0IsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxpQixPO08sTzs7TyxtQjtPLE87Ozs7STs7TyxrQyxPO087O08sdUM7Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O087OztRLE87Tzs7TyxvQztPOzs7O0k7OztLLFE7STs7TyxrQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssUTtJOztPOzs7USxVO1EsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPLGtCLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOzs7USxVO1EsTztPLE87Ozs7STs7OztLLFE7SyxVO0k7SyxPO0k7O08saUI7TyxPOztPLG1CLE87TyxPOztPOzs7O1EsTztRLE87USxPO08sTzs7O08sbUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87USxzQjtRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxlO1E7TyxPOzs7Tzs7O1EsZTtPLE87OztPOzs7USxlO1EsTztRLHNCO1Esc0I7USxPO08sTzs7O087OztRO1EsTztPLE87OztPOzs7O1EsTztRO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7OztRLGU7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7Ozs7USxPO1EsTztRLE87USxPO08sTzs7Ozs7Ozs7OztPOzs7USxPO1EsTztPLE87OztPOzs7O1EsTztRLGU7USxPO08sTzs7O087OztRO1EsTztPLE87OztPLHFCO08sTzs7Tzs7O1EsTztRO08sTzs7O087O1EsTztRLHNCO1Esc0I7USxPO08sTzs7Tzs7OztRLE87USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7Tzs7O1EsZTtRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRO08sTzs7O08sb0IsTztPLE87O087OztRLE87USxPO08sTzs7O087Ozs7O1EsTztRLE87USxPO1EsTztPLE87OztPLG1CLE87TyxPOzs7O0k7Ozs7O0s7SyxNO0ssTTtLLE07SSxPOzs7STs7OztLLFE7SyxVO0k7SyxPO0k7O08saUI7TyxPOztPOzs7UTtRLE87TyxPOzs7TyxpQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztROzs7YTs7O2MsTzthLG9CO2EsVztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1Esc0I7USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87USxzQjtRLE87USxPO08sTzs7O087Ozs7USxPO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOztLLFc7OztJLGM7OztJOzs7O0ssUTtLLFU7STs7Tzs7OztRLDhCO1EsTztPLE87OztPOzs7OztRO1E7TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLE87SyxPO0ksVzs7O0k7Ozs7Ozs7SyxNO0ssUTtLLE87SztLLE87SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7OztHOzs7O1E7UyxPO1MsTztRO087O1EsVztRLE87Tzs7O1E7Ozs7UyxPO1MsZTtRLFc7Tzs7USxXO1EsTztPOztRLFc7USxzQjtPOztRLFc7USxzQjtPOzs7Ozs7O1EsVztRLHNCO087Ozs7UTs7Ozs7O1M7UyxlO1M7UyxXO1MsVztRLE87Tzs7O1E7OztTLE87UTtPOzs7UTs7OztTLE87UyxXO1MsVztRLE87Tzs7UTs7OztTLE87UyxXO1MsVztRLE87Tzs7UTs7Ozs7O1MsTztTO1MsVztTLFc7USxPOzs7Ozs7OztPOzJCLFM7O1E7Ozs7O1MsTztTO1MsVztTLFc7USxPO087O1E7Ozs7O1MsTztTO1MsVztTLFc7USxPO087O1E7Ozs7O1M7UztTLFc7UyxXO1EsTztPOzs7O1E7Ozs7O1M7UyxlO1MsVztTLFc7USxPO087O1E7Ozs7O1MsTztTLFc7UyxXO1EsTzs7Tzs7UTs7Ozs7UztTLFc7UyxXO1EsTzs7Tzs7O1E7OzZCLFc7OztXLFc7OztXLFc7O1c7OztZLGU7VyxXOztPOztRLFc7USxPO087OztRLFc7USxPO087Ozs7Ozs7O1E7Ozs7O1MsTztTLE87UyxXO1MsVztRLE87Tzs7UTs7Ozs7O1MsTztTO1MsVztTLFc7USxPOztPOzs7OztLLE07O0k7SyxPO0k7O0s7O007TSxPO00sZTtLLE87Ozs7O0k7STtLLE87O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7NkIsd0I7c0IsbUM7O0ksVztJLE87Rzs7STtLO0ssTzs7STtJLE87Rzs7STtLOzs7O00sVztNLFc7TTtLLE87O0k7SSxPO0c7O0k7SyxPO0s7OztVOzs7VztVLE87OztJO0c7O0k7SztLLE87SyxlO0k7Rzs7STs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7OztLOztNO007YTs7SztNO2E7STs7Szs7Syw4Qjs7Szs7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O1E7Ozs7O0ksTztHOzs7SzswQjs7O007Ozs7Ozs7Tzs7TSxPO0s7O007Ozs7Ozs7OztROzs7Tzs7TSxPO0s7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7O1EsbUM7USxXOzs7O00sTzs7Ozs7Tzs7Ozs7Ozs7O087Ozs7O087Ozs7O087Ozs7O087Ozs7O087TyxhOzs7OztPO1E7Ozs7Ozs7Ozs7OztjOzthLE87Ozs7OztXO1csTztVO29COzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQjs7Ozs7O087Ozs7O087TyxPOzs7Tzs7Ozs7Tzs7Ozs7SztJO0ksTztHOzs7Szs7TTtLO0k7STtLLFc7SztJLE87Rzs7SSxZO2dCLE07OztLOztJO0c7OztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SztNO08sVztPLE07Ozs7TTs7Tzs7O0ssSSxtQztLLFc7STtJO0ssSztLO08sMkI7O0ssVTs7SyxVO0s7SztNLFE7TSxLO0s7SztLO0ssTztJO0ksTzs7Yzs7O2lCOztnQjtHOztJOzs7Ozs7TyxjO087Ozs7STs7O0k7Ozs7OztPLGM7Tzs7OztJOzs7STtJLFc7Rzs7STtJLFc7Rzs7SSxrRCxjO0c7O0k7SyxrQztLO007OztVO1c7WSxNO1ksTSxtQjtXOzs7Vzs7WTttQyxNLG9DO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O2lELE87aUQsTzs7O0k7SSxPOzs7SSxZOztJLE87Ozs7SSxPOzs7O0k7STs7SyxzQixPO0ssTzs7O0ksTzs7OztJO0k7OztLLE87OztJLE87Ozs7STtJOzs7OztRO1EsTzs7USxtQixPO1EsTzs7O1E7USxXO1EsTzs7UTs7UyxzQjtRLE87OztRO1EsVztRLE87O3lCLE87O1Esa0Isc0I7USxPOzsyQixPOzs7UTtRO1MsTztTLHNCO1Msc0I7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJLG9CO0k7STtLLEs7SyxLO0ssSztJOztLO0s7SyxPOztJO0k7SSxTO0k7SSxPOzs7STs7SyxrQixPO0ssTzs7SSxvQixPO0ksTzs7O0k7SyxrQixPO0ssTzs7SSxvQixPO0ksTzs7Ozs7Ozs7O0k7SSxXO0k7SSxXO0ksb0I7STtJO0ksTzs7Ozs7OztJO0k7SSxPOzs7Ozs7OztJOzs7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVztPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFc7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFc7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGdDLE07TztPLE87OzBCLE87OztPLFM7TztPLE87OztPO087USxNO1Esb0I7TyxPOzs7TztPLE87OztPO08sTzs7TyxrQixNO08sTzs7O087TyxnQjs7eUIsZ0I7O087OztRLE07USxvQjtRLG9CO087TyxnQjs7O087Tzs7O087TztPLE87O08sb0IsTTtPLE87OztPO087TyxnQjs7O087TyxPOzs7TztPLE87OztPO087TztPLE87OztPO08sTzs7O087TyxTO08sTzs7MEIsTzs7NEI7OztPO08sTzs7Tzs7USxNO1Esb0I7USxvQjtPLE87OztPO087TyxPOzs7TztPLE87OzJCLE87OzJCLE87OztPO08sZ0I7OzBCLE87OzJCLE87OzJCLE87OztPO08sTzs7Ozs7OztPO08sVTtPO08sTztrQyxPOzs7Ozs7Ozs7STtJO0k7SSxPOzs7O0k7STtpQzs7O3dCOzs7TztPOztPOztPOztPLGtCLE07TyxPOzs7TztPOztpQjtpQixrQjtpQjtpQixPO2dCOzs7MEIsZ0I7O087O1EsTTtRLG9CO1Esb0I7TyxPOztPLG9CLE07TyxPOzs7TztPLE87OztPO08sTzs7MEI7OzBCLE87OzBCOzswQixPOzt3QixPOzs7TztPLE87Ozs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPLFM7TztPLE87OztPO087USxNO1Esb0I7TyxPOztPLG1DLE07TztPLE87OztPO08sTzs7d0IsTzs7O087TyxPOzs7O0kscUMsTzs7SSxPOzs7O0k7STs7O3lCLE87OztPO087OztPO087OztPO08sTzs7d0IsTzs7d0IsTztrQyxPOzs7OztJO0ksVTtJLE87OztJOzs7Ozs7SyxNO0ksa0I7STtJO0k7STtJLE87O0c7STs7O1E7UTs7Tzs7USxVO1EsTztPOzs7UTtRO1EsUztRLE87Tzs7USxVO1EsTztPOztRLFU7USxxQjtPOztRLFU7USxxQjtPOzs7Ozs7O1EsVTtRLHFCO087OztROzs7Ozs7UTtRO1EsUztRO1EsTztPOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7Ozs7Ozs7OztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STs7Ozs7Ozs7OztvQix1RDtJLFk7Z0I7OytDOzs7SyxNOztJLE07O0c7O0k7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7dUI7O1E7Ozs7O0k7Rzs7STtnQjs7STtHOztJLEk7Ozs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7Ozs7WTs7cUIsTztvQjs7Ozs7OztZOztxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7O2U7O3dCLE87dUI7Ozs7OztXOztvQixPO21COzs7USxNO08sTzs7Ozs7Ozs7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7STtHOztJLEcsc0M7SSxXO0ksTztHOztJOzs7Ozt5RDs7Szs7STtnQjs7STtHOzJCLE8sMkM7O0ksSTs7Szs7TTs7MEM7O007SztLLE87STtJLE87Rzs7STs7SztLLE87STtJLE87Rzs7SSxJLDhCOztLLGM7ZTtLO0ssTztJO0ksTztHOztJO0k7bUI7Ozs7OztLOztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7STs7SztLLE87STtJLE87Rzs7SSxPO0c7O0k7O0s7O007O0s7TTtPLE07TyxNO08sTTtNOzs7Ozs7TTs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7O1E7Ozs7Ozs7Ozs7Ozs7O1csYyxPOzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztTLEksVSw0Qjs7Ozs7O1U7Ozs7OztLOzs7Ozs7a0U7OztJLFc7STtLO00sTTtNO0s7SyxVO0s7Szs7OztLO0ssTTs7Rzs7STs7OztLO0k7RztHLDhCOztJOzs7O0s7STtHO0cscUI7O0k7Ozs7SztJO0c7RyxnQjs7STs7OztLO0k7RztHLGtCO3dCLE8sd0M7O0ksa0I7SSxPO0c7O0ksa0I7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJO0k7Ozs7Ozs7O0s7ZTs7SyxPOztHOzs7STtJLGlCOztLO0k7Rzs7STtJLGlCOzs7O21EOzs7OzsyQixtQiw0QjtRLE87O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7UTs7MkI7OztxQjs7OzJCLG1CLDRCO1EsTzs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OzRCOzs0Qjs7OztROzs7cUI7OzsyQixtQiw0QjtRLE87Ozs7Ozs7Ozs7Szs7STtHOztJOzt1Qjs7STtHOztJO0ksaUI7OzswQjs7c0I7O0k7Rzs7STs7dUI7O0k7RztHO0ksTztHOztJO2tCOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7O29COztvQjs7STtHOztJO0ksaUI7OztvQjs7O1EsTzs7O0k7Rzs7STs7Ozs7OztnQjtHOztJOzs7Ozs7O2dCO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0k7STs7STtJLFc7Rzt5QixrQzs7O0ksb0I7SSxXO0ksVzs7Ozs7SztLLE87STtJLE87OztJLFEsTTtJOzs7SyxROzs7SSxJLGtDOzs7NEI7OztHOztJOzt1QixPOztPLDhCO08sTztlLE07O0c7Rzs7STtLOztHOzs7O0s7Szs7O1EsSSxJOzs7O29COztROztROzs7Uzs7Ozs7O1E7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJOzs7O0s7SSxXO0ksTTtHOztJO0k7O21DOzs7UTs7O1E7Ozs7USxtQixzQjtRLE87OztRO1EsMEI7USxPOzs7Ozs7WTtZOzthOzs7WTtXO1EsTzs7O1E7USwwQjtRLE87Ozs7Ozs7O1k7WTthOztjLHNCO2EsTzs7O1k7VztRLE87Ozs7O1E7UTtnQyxrQixTO1MsTztTLHNCO1EsTztrQzs7O0c7O0ksWTs7SSxPOzs7STtLLGtCLHNCO0ssTzs7O3FCLDBCO0ksTzs7O0k7O0s7SztLO0k7STtJO0k7OztLOztNOztTOztTLG9CO1MsTzs7SyxPOzs7dUIsNEI7SSxPO0c7O0k7OztLO0ssMEI7SyxPOzs7STtHOztJOztJLG9CO0ksTztHOztJO0c7Rzs7STtJOzttQzs7O1E7Ozs7USxtQixzQjtRLE87OztRO1E7cUMsa0Isa0I7Ozs7MkI7Ozs7OztZO1k7WTtXO1EsTzs7USxxQixzQjtRLE87OztROzs7OztRO1E7OzJCOzs7O1E7O1M7OztZO2E7O1c7USxPOzs7OzBCOztROzs7Uzs7OztnQjs7O0c7O0k7STs7Rzs7STtJOzttQzs7OzBCOztROztROzs7O1M7Ozs7OzhCOzs7UTtRLEk7Ozs7UTs7K0Isa0IseUI7USxPOzs7UTtROzs7UTtROztROztTLHFCO1EsTzs7O1E7UTs7K0I7Ozs7Ozs7WTtZO1k7VztRO1E7OztRO1E7OztRO1E7Ozs7UTs7UyxxQjtRLE87OztRO1E7UTs7O1E7Ozs7O1E7Ozs7O1E7UTs7Ozs7UTtROzs7UTtRO1E7Ozs7MkI7Ozs7OzsrQixrQix5QjtRLE87O1E7Ozs7UztTOzs7O2lCOzs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1MscUI7USxPOzs7OztRO1MsTzs7UTs7UTs7O1M7Ozs7O1E7Ozs7O1M7O1E7UywwQjtTLE87Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjs7Ozs7OzthOzs7Vzs7OztROzs7Rzs4Qjs7STtLOzs7O007SztLOztJLE87Rzs7d0IsNkI7STtLLE87SztvQiw0QjtJO0k7Rzs7STs7Rzs7STtJOzs7OzBCOzswQjs7O1E7O1M7Ozs7O2lCOzs7Ozs7Ozs7OztROzs7O1k7O2tDOzttQzs7bUM7O3FDOztvQzs7cUM7O1c7USxPOzs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087Ozs7Vzt1Qjs7VyxPO1U7USxRO1EsTztRLE07NEIsaUM7TztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7Tzs7USxvQjtPO087O087O1Esb0I7TztPOztPOzt5QixxQjs7TyxrQjt5QztPOztJLGtCO0k7STs7O0ksSTtJO0ksTztHOztJLEk7STtJLE87Rzs7STs7O3lCOzt5QjtlLDJCOztHOztJO0k7Ozs7MEI7OzBCLHdCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1MsTzs7UTtvQzs7O0c7O0k7OztJO0k7Ozs7O1E7USx3QjtRLE87OztRO1E7Ozs7OzttQzs7cUM7O3VDOzs7ZTtlOztlO3lDOzs7USxPOzs7UTs7OzswQjs7UTs7O1M7Ozs7O0c7NkM7RztrRDtHOztJO0s7OztJO0k7Rzs7SSxPOzs7OztHOztJLGlDOzs7eUIsaUI7O08sbUM7Tzs7MEIscUI7O087O1Esb0I7TztPOzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087Ozs7Vzt1Qjs7VyxPO1U7USxRO1EsTztRLE07MEIsbUM7TztPOztPLG9CO3lDO087OzBCOztPOztRLHFCO087Tzs7Tzs7USxvQjtPO087O087O1E7OzswQixtQjtPO1EsUTtRLE07TyxXOztPO21DLHVCOzs7O0k7STtHO3NDLDhCLFM7OEM7Rzs7SSxtQjs7STs7O0k7STs7Ozs7UTtRLHdCO1EsTzs7UTs7OztTO1Msb0I7USxPOzs7UTtRLEk7Ozs7UTs7K0Isa0IseUI7USxPOztROzs7O1M7Ozs7OztRO1E7OzBCOztROzs7Uzs7Ozs7Rzs7STs7Ozs7MkI7Ozs7Ozs7Ozs7Ozs7UTtROzs0Qjs7UTtvQzs7Szs7STtHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxlO0ksYzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7STtJO0c7NkIsa0IsOEI7aUMsYzt3QixxQixZOztJLGMsTzs7STtJO0c7O0k7OzhCLE87OzhCOztPOzs7USxNO1EsTTtPLE87O0c7O0ksd0M7STs7O0ssTTtLLE07SSxPO0c7OEIsOEI7O0k7Ozs7Ozs7Ozs7OztLOztJLE87Rzs7STs7Ozs7Ozs7OztTLE87Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7Rzs7STs7O0c7MEIsNEI7NkIsOEI7O0k7Szs7Ozs7Z0M7USxPOztROzs7O1MsbUI7OzRCO1EsTzs7O1EsTzs7Ozs7OzRCO1EsTztNO0c7c0MsdUI7MkIsdUI7OztJOzs7STtHOztJOzs7OztNOztxQjs7TywyQztPOzs7SyxNOzsyQjs7O0s7O29COztNOzs7Ozs7TztNOzs7SSxNO0c7O0ksWTtJOzs7OztLLEk7STs7Ozs7Ozs7SSxZLE87Ozs7Szs7O0k7Rzs7SSxRO0k7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7O00sSTtLO007OzttQixNOztPOzs7Ozs7Ozs7OzttQixNO0s7Ozs7TSxJO0ssWTs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7TSxJO0ssWSx5Qjs7Ozs7Ozs7TTs7OztPLFM7Tzs7Ozs7b0I7Ozs7Ozs7OztJO0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STtJOztjO2MscUI7YTs7OztHOzs7O21COztLO0s7Ozs7O0k7STtLLHFCLE87O0s7Syw0QjtHOztJOzs7O3VCOztRLGlCOzs7OztXLG1COzs7bUI7Ozs7Ozs7OzsyQixPO21COzs7Ozs7Ozs7O1c7Ozs7Szs7STtHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7Ozs7OztVLE87Ozs7OztVOzs7VyxNO1UsVTs7Ozs7Ozs7VSxvQztVLFU7Ozs7Ozs7OztHOztJO0k7dUI7Ozs7Ozs7O1UsTzs7Ozs7O1Usa0M7VSxpQjs7Ozs7O1Msb0M7UyxjOzs7O3dCOztLOztHOzs7Ozs7USxxQixNO1EsTzs7OztRLHNDO2dCOzs7O2dDLHFDOztJO0k7Ozs2QixPOzs7O1E7OztTO1M7USxPOztHOzBCLFM7O0k7STs7MEIsTzs7O08sRztRO1MsTTtlOztrQjtPO08sTzs7Tzs7O1E7USxNO1EsTTtRO08sTzs7OztJOzswQixPOzs7TyxPOzs7TyxPOzs7O0k7STs7OzZCOzs7O1EsTTs7Rzs7STs7OzsyQjs7UTs7O1M7Ozs7Z0I7O0c7O0k7SztLOzs7MEI7Ozs7Uzs7O1U7Ozs7STtJO0c7O0k7STs7OzZCLE87OzRCOzs7Rzs7SSxHO2lCO0ksTTtHOztJOzs7TyxhLDRCOzs7O087UTs7O0k7Rzs7STtHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0ksVTtJO0s7TSxNO007Ozs7WSxNO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7Ozs7TTs7Ozs7O087TTs7OztNOzs7OytDOzs7b0IsdUI7SSxHLHlDO0ksTTtHOztJOztPOzs7STtLLFU7SyxhO0k7STtLO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOztJLE87Rzt5QixZOztJOzs7Ozs7Ozs7Szs7STtHOztJOzs7NkMsVTs7aUQsVTt3RCxVOzs7Z0M7O0k7Rzs7STtLO0ssTTtLLG1COztHOztJOztPLE87O08sTztlLE87O0c7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7O0k7Ozs7O0k7Ozs7Ozs0Qjs7Ozs7O2dCOztJO0c7O0k7SyxRO0ssVTs7Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0Qix5QjtvQixZOzBCLHlCOzJDO0c7NEIsb0I7OEIscUI7OEIscUI7RztJOzs7c0IsTyxrQzs7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7O0ksVTtJO0c7Rzs7Ozs7Ozs7Ozs7OztJOzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzBCLGU7MEIsZTsyQixnQzt1Qix5Qjs7STtJO2U7Rzs7STtJLHFCO0c7Rzs7STtJOzs7OztJO0k7Rzt5QixpQzt5QixxQiwyQjs7SSxJLGlCLGlCO0k7Rzs7STtJLE87Rzt5Qix5Qjs7SSxzQixpQixrQjs7Rzs7STtJLE87Rzt3QixxRDs7STs7TyxPOztPLE87ZSxPOzs7O0k7SyxPO0k7SSxVO0ksTztHOztJO0ksTztHOztJO2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7OztVLE07VTs7OztJO0c7O0k7Ozs7OztLO0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7O0c7cUMsbUIsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7OztJLFM7O0k7O0c7MkIsbUM7bUMsMkI7O0k7a0Q7STtHOztJO2tEO0k7Rzs7STtrRDtJO0c7O3NCO0csWTs7STs7OztHOztJO0k7Ozs7O0s7O0c7Ozs7Ozs7Ozs7Uzs7Ozs7OztNO007O0s7Ozs7STs7Ozs7USw2Qjs7O3dCOztJO0c7O0k7STs7Ozs7Szs7Rzs7STs7Ozs7O1E7O1MsTzs7Ozs7O08sYzs7NEIsZTs7Szs7Rzs7STs7O0s7TTs7O007O087Ozs7OzttQjs7Ozs7Ozs7OztJO2M7Szs7O00sTTs7OztHOztJO0k7O0s7OztNLEcsK0I7Ozs7O0s7O0c7O0k7STtLLEk7OztLOztHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxJLHVCO1U7SSxJLHVCOzs7OzBCOztROzs7USxNOztJO0c7MEIsc0I7MkIsNEM7O0ksSSx1QjtlOzs7SyxrQjtxRDtLO0k7SSxPO0c7O0ksSSx3RDs7OztNLFc7O007Ozs7Ozs7Rzs7SSxJLGdCOzs7OztROztzQzs7Ozs7Ozs7O1k7O1ksTTs7Ozs7OzRCLHNCOztJO0c7O0k7Ozs7O1E7UyxJLGlCOztTOzs7NEI7O0k7Rzs7STs7Rzs7STs7Ozs7VTtXOztJO0c7O0k7Ozs7OztRLGdCLG1COzs7MEI7OztJO0c7O0k7Z0I7SSxtQixpQjs7O0s7TTtPO087Ozs7Ozs7O00sTzs7O0k7Rzs7STtJO0s7Ozs7UyxtQjs7OztXLE87OzsyQyxPOztTO1E7TSxTO007Ozs7Ozs7Ozs7UyxNOztLOzs7O1M7UyxPO1E7TSxVO21COztLOztHOztJO0ksbUMsTyxpQjtHOztJO0k7O21DOzs7UTs7USxvQyxTO1EsTzs7MEIsTzs7NEIsTzs7O21CLE87USxvQixXO1EsTzs7UTs7O1MsVztRLE87Ozs7USxNOztRLG9CO1EsTzs7UTs7UTs7O1MsVztRLE87Ozs7OztZO1ksTztXO1EsTzs7O0c7O0k7STtnQyxPLGlCO0c7Ozs7cUM7OztNO007Ozs7Ozs7O0k7O0ssTzs7O3FCLE8sb0I7SSxPOzs7STs7SyxXOzs7O0ssMkMsTztLO0k7SSxXOzs7STs7NkMsTyxvQjtLLE87Ozs7SztLLE87STtJLE87OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksa0IsTztJO0k7SSxrQixPO0k7O0c7O0ksbUIsTztJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxXO087TyxPOzs7Tzs7Ozs7VztXLE87VTtPOzs7OztXO1c7VyxXO1csTztVO08sTzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlOzs7Ozs7OztROztTOzsyQixrQixPLHNCO1EsTzs7Ozs7O0ssTzs7STtHO3VCLFM7O0k7O0ssaUM7Ozs7O1E7Ozs7O1M7UztTLE87Ozs7Ozs0Qzs7Ozs7O0s7STtJLEksUyx1Qzs7Ozs7OzJCOzs7STtJO0c7O0k7STs7O08sTTtNOzs7aUI7OztHOztJO0k7O0ssNkI7Szs7OztROzs7OztTO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1E7O1Esb0I7O1EsTTs7USxNOztROztROzs7UyxRO1EsWTs7Ozs7OztZO1ksYztXO1EsaUI7OztHOztJOztHOztJLEs7SyxNO0ksYzs7O0s7Ozs7Ozs7O0c7O0k7SztLLE07Ozs7SztLLE87STtJO29CLG1CO0k7STtHO0c7Ozs7cUM7Ozs7O00sVSw2Qjs7Ozs7OztHLFc7O0k7dUIsc0I7STs7O0c7O0k7OztHOztJLDRCOzs7O0ssTTs7O0ksRyxtQzs7STtHOztJOzs7MkI7OztHOztJLGdEO0k7Rzs7SSw4Qjs7STtHOztJLDhCOzs7SyxPOzs7SSxPO0c7O0k7O2lCOztLLEc7TTswQztLLEk7O0c7O0k7OztPLE87OztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7O0c7RyxvQjs7STs7Rzs7STs7STs7Ozs7O0s7Ozs7K0I7OztLO0ssTzs7STtHOztJO2dDO0c7O0k7O2tDO0ksTztHOztJOztrQztJLE87Rzs7STs7O0c7NEIsZ0Q7O0k7OztHOztJOzs7Rzs2QixnRDs7STs7STtHOztJLDRDOzs7ZTs7STs7Ozs7TyxNO007Ozs7OztLLG9DOztLLEk7Ozs7O3VDOztJOzs7O00scUI7Ozs7O0s7Ozs7OztROzs7Ozs7SztJO0ksTzs7Z0MscUM7O0k7Rzs7STtHOztJLEksMkI7STtHOztJO0s7SztJO0c7O0ksSSxpQjtJO0c7aUMscUM7O0ksSSxpQjtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEk7Ozs7RzttQyx1QjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJOzsyQixrQixzQjtJLE87Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLFcseUI7OzsyQixPOzs7Rzs7STtjO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7Rzs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUyxJOzs7Ozs7Ozs7STtHOztJO2M7YztHOztJLGM7O3FCO0ksUztZOzs7SztNLEs7O2E7O1c7OztJO2dCLE87SyxZOzs7O007O0ssSTs7Rzs7SSxVO0k7bUI7Rzs7O0s7Ozs7Ozs7VyxPOzs7Ozs7OztVOzs7Yzs7VSxPOzs7Ozs7Ozs7Ozs7OztVLE87Ozs7Ozs7Ozs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07OztROztTOztZOztRLE87OztRLE87OzBDOzs7USxtQjtRLE87OztRLE87OztRLE87OztRLE87OztRLE87O1E7O1M7O1k7O1EsTzs7MkIsTzs7UTs7UztTOzs7O3lCOzs7Ozs7NkI7YTs7O2lCOzthOzs7OztTLDRCO1EsTzs7O1E7Ozs7MkI7UztVOztVLGM7O1csb0IsVTs7Ozs7O1U7VztZOztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7O1ksUTs7WSwrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZSxXOzs7ZTs7a0I7OztlLFc7Ozs7Yzs7Ozs7dUI7O1c7OztXOzs7O3dCO1M7Ozs7O1UsTzs7OzsyQixPOztROztTOztZOztRLE87Ozs7UyxPOzs7SywwQjtLLE87OztLO0s7Ozs7NEI7O2dDO2dCOzs7Ozs7STtJO0c7Rzs7OzttQjs7c0IsTzs7SztLOzs7O0csZ0M7cUIsTyx5Qzt3QixPLDRDO0c7Ryw2Qjs7STs7OztRLE87Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SyxHO007TTs7SztLO0s7SztLLE87O0k7OztJO0s7O007O1M7O0ssTzs7STs7O0k7Ozs7USxPOzs7Ozs7Ozs7OztRO1E7UTtRLE87O1E7OztTLDRCO1EsTzs7MEI7O3VCLE87O1E7OztTLGM7USxPOztROzs7OztTOztZOzs7YyxPOztZOzs7O1k7O2E7Ozt1QixPO3NCOzs7OztZOzs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1E7UTtTOzs7WTs7OztZLE87O1c7UTtRLE87OztRLE87Ozs7O1E7UTtRO1E7USxPOztJOzs7STs7O2tCOztNO007Ozs7SSxPO0c7Ozs7O2lCO00sdUI7TSxPOzs7O007OztPLDRCO00sTzs7OztLO2M7Ozs7Ozs7SztlOzs7aUI7aUI7STtJO0s7O0ksTzs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7RyxJLGtDO3FCLE8seUM7O0ksTztjO2M7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7Ozs7OztJLFU7dUIsTywwQztJO0s7O0ksTzs7O0k7Ozs7Ozs7VyxVOztXO1k7O1csTzs7TyxPOzs7Tzs7OztRO1U7YTs7TyxPOzs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7UTs7Vzs7TyxPOzs7OztJOzs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sTzs7OztHO0k7STs7O1EsTztPO0k7O3VCLE8sK0M7STs7O1EsTztPO0k7OztRLE87TztJOzs7USxPO087O0k7OztNOztPOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7OztRLE87Ozs7OztPOzs7Vzs7OztZOzs7OztnQixPO2U7YTs7Z0I7Ozs7O1csTzs7Ozs7OztVO1E7O08sTzs7Ozs7Ozs7Ozs7USxPOztPLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztPOzs7Vzs7WTtZLE87Ozs7Ozs7O1c7VyxPO1U7OztXOzs7WSxPOzs7Ozs7Ozs7WSxPO1c7VztZOzs7VTtROztXOztZLE87O1c7Ozs7Vzs7Ozs7Ozs7VTtROzs7Ozs7TztROztXLG1COztROztXOztjOztjLE87c0IsTzs7VTtROztXLGU7VTs7O1c7Ozs7Ozs7O2MsTzs7Ozs7Ozs7Ozs7OztrQjttQixPOzttQixPO2tCO2tCO21COztrQixPOztpQjtjLE87Ozs7Ozs7OztjLE87Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztPOzs7UTs7VyxZOztXOztZLE87VztXLE87O1E7Ozs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SztNLE87Ozs7Ozs7Szs7O1M7O0ssTzs7Ozs7Ozs7OztjLE87STtLOztJLE87Ozs7Szs7O00sTzs7Ozs7Ozs7d0IsTywwQztLO007OztJO0k7dUIsTywwQztJO0s7OztJLE87Ozs7Ozs7O0c7Rzs7Ozs7OztJLFk7OztLOzs7TTs7O0s7Ozs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO007OztnQjs7Ozs7O0k7O0s7Ozs7Szs7O2M7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O1EsTzs2QixPOztRLE87TyxZOztRLE87O08sTzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJO0k7WTs7Ozs7RzsrQixvQzs7STtJO1k7Ozs7O0c7O0k7Ozs7SyxPO0k7RztpQyxzQzs7SSw4QixPO0k7RzttQyx3QzswQixzQztnQyw2Qzs7STtnQztrQztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsbUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7Uzs7OztHOztJLEksVTs7Ozs7O1M7O3VDO2lCLE87Ozs7cUIsTzs7STtHOztJLEksVTs7Ozs7O1M7O3VDO2lCLE87Ozs7O0ssTTs7STtHOztJLFk7OzsyQjs7O087O087OztPOztHOztJLEksVTs7OzRCOzs7O0c7RyxhO29DLHlCOztJOztHOztJOzs7Ozs7O0k7RztHOzs7O1EsTTtPOztJLEksTywyQjs7Ozs7UTs7OztXO29COztZLHVDOzs7OzRCOzs7bUM7OzswQztRO1E7UTs7O0k7STtLLEs7SyxXOzRCO29DO0k7STs7Ozs7Ozs7UTs7OztTO1c7Ozs7YTs7Ozs7TSxNOzs7OztTOzs7VSxzQjtVLFM7OztVLEksVTs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7OztTOzs7VTtVOzs7VTs7O1c7WSxzQjtZLE87Ozs7Ozs7Ozs7UyxTOzs7Ozs7Uzs7VSxRO1UsTztVOzs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7WSxXO1k7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7OztlOztlLFU7NkI7Ozs7OztZLE07Ozs7VTtVOzs7VyxzQjtXLE87Vzs7Vzs7OztZOzs7Ozs7Ozs7Ozs7Uzs7Ozs7YTthO1k7VSxPOzs7O0s7TSxzQjthOztJO0k7Rzs7OEIsaUM7SSxPO0c7O0k7O0s7SztLO0k7Rzs7STtLOztNLHNCO0ssVzs7O0ksb0I7SSxXOzs7STs7OztLO0s7O0s7Ozs7Ozs7Ozs7OztLOzs7TSxzQjtpQjs7Szs7O007O1M7O1U7VTs7UyxvQjtTO1UsTztVO1M7O2lCOztJLG9CO0k7WTs7Ozs7Ozs7Ozs7Ozs7Rzs7OEIsNkM7SSxPO0c7O0k7O087Ozs7UTtRLHNCO1EsUTtRO087O087Ozs7O1c7VyxvQjtXLFc7VztVO1EsTzs7Ozs7VztXO1U7USxPO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJO0s7Szs7SSxvQjtJO1k7Ozs7Ozs7O0c7OzhCLDhDO0ksTztHOztJOztLO0s7O0s7Szs7SSxvQjtJO1k7Ozs7Ozs7Rzs7OEIsK0M7SSxPO0c7OzhCLCtCO0ksTztHOztJOztLO0s7O0k7Rzs7OEIsK0M7SSxPO0c7O0k7O0s7Ozs7SSxvQjtJO0ssTztLOztJLG9CO0ksVztJO0c7OztLO0k7SSxPO0c7O0k7OztPLEksWSxtQzs7Ozs7O1k7O3NDO29CLE87Ozs7O3dCOzs7OztROzs7O1E7Ozs7UyxPO1M7UTs7TyxxQztPO2lDOzs7O0k7Ozs7Ozs7VztZLE87WSxPO1csTztVOzs7Ozs7UyxXO1MsTztROzs7Ozs7O1E7Ozs7O1MsTztTOzs7OztROzs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLE87Uzs7Ozs7UTs7Ozs7OztTLE87UztTOzs7Ozs7UTs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7UTs7Ozs7O1MsUTtTO1M7Ozs7Ozs7SyxvQjtLLE87STtJLE87Rzs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7Ozs7Ozs7Tzs7O087OztPOztHOzs7SztJO0ksTztHOztJLG9CLHdCO0k7Rzs7STs7SztLOztJLG9CO0ksVztHOzs7SyxVO0ssTztJO0ksTztHOztJOzs7Ozs7Ozs7SztxQzs7O0s7cUM7OztJOzs7ZTs7Z0I7Ozs7Z0Isa0I7Z0I7aUIsVztpQjtnQjtlO2UsTzs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOztJO0k7STtLLE07Szs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtLOzs7Szs7O2lDLFM7SztNLFE7TSxNOzs7TTs7OztTOzs7Ozs7Ozs7Ozs7SyxPO0k7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7OztLOzs7Ozs7OztLO0s7OztTOztTO1E7SztLOzs7UztTO1E7SztLOzs7Ozs7Ozs7Ozs7Ozs7OztLO087Ozs7WTs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0ssTTtLLE07SyxNO0s7Tzs7SyxNO0ssTTtLO087Ozs7WTs7Ozs7STtLOztJO0s7SztJO0c7b0IsVywrQjtHO0ksaUI7SSxtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztLO0s7TTtPLE87TyxNO00sVTs7Ozs7bUI7O1Usb0IsUTtVO1UsYztvQjs7O29COzs7Ozs7TSxPOztJO0k7STs7Rzs7SSxPO0c7O0k7Ozs7O3dCLFk7WTtJO0s7O00sNEI7TTtNLE07cUI7OztJO0c7O0k7Szs7O0kseUM7STs7Syw4QjtLLGM7SyxRO0ssTTs7O0ssTTtLOzs7Ozs7O1E7Ozs7Ozs7OztJOzs7O0c7O0k7Ozs7O0k7Szs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7OztHO0c7SSxPO0k7O0k7OztJOztpQixNOzs7O00sRyxpQzs7Ozs7Ozs7VTs7Ozs7OztLOztHOztJOztLOzs7TTtNO007TTs7O1M7UyxHOzs7Ozs7OztRO0s7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O2E7Ozs7Ozs7Ozs7O1M7O0s7O0k7Rzs7STs7Szs7O007TTtNO1E7VTs7O1MsWTtTOzs7VTs7Ozs7VTs7YTs7Ozs7Ozs7Ozs7UztTO1M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0ssSztNO007TTs7SztLOztNLE07Szs7TztTO00sTTtLOztROzs7SyxNOzs7Ozs7O007TSxNOztLO0ssTTs7Rzs7STtJO0k7STtLLE07SztJO0k7STtHOztJOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7OztJLHVCOztJLFc7RztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7dUIsTSxnRDtHO0k7OztRO1M7VSxPO1UsVzs7OztnQzs7O1EseUI7TztJOztJO0ssTTtLO0s7SSxXO0c7O0k7Ozs7OztJOzs7STs7STtHOzs7K0Isc0M7STtLO087SyxNO0ksTzs7Ozt3Qjs7Ozs7O0s7Ozs7O0ksSSxVOzs7MkI7OztjOztJOzs7STs7O0ssVzs7SztLLE87O0ksTztHO2dDLGtCOzZDLCtCOztJLFU7d0IsTyxpQjtJLFU7STtJO0c7Ozs7SyxVOztLLE87STtJLE87OztJOzs7SztLO0s7SztJLEc7Szs7O0s7Ozs7OztpQjs7SztJO0k7O0ssSTs7Ozs7O007OztJO0k7Rzs7STtJLEc7SyxNO0ksSSxVOzs7OzZCLE07SyxZOzs7TTtNO08sSztPO007O0s7SyxNOztjLE07O0k7Rzs7STtJO0ssTTtLO0ssSztJO0k7RztnQyw2Qzs7STs7SyxVOztLO0ssVTtLOzs7O1UsSSxvQyxhOzs7O1k7WSxPOzs7WTs7YSxNO2E7WSxPOzs7O1c7Ozs7Ozs7aUI7Ozs7Ozs7OztjLE07Ozs7dUI7Ozs7O3VCOztXO1csTzs7UztNLE87Ozs7OztJO0c7O0k7SSxJLFc7Ozs7TSxNOzs7SSxXLE07O0k7Rzs7STs7O0ssTTtJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87OztJOzs7Ozs7O0ssUTtLO0k7Rzs7STs7SztLO00sTztLO0s7TSxNO007Ozs7TTtLOzs7O007OztVOztVO2tCOztNO0s7SztLO0s7STtJLDhCLE8sK0I7SSxPO0c7O0k7Szs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7USxPOzs7Ozs7TTtHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0kscUI7SSxvQjtJLHNCOztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07OztHOzJCLFM7O0k7O0s7Ozs7O007TTs7O00sSSxhOzs7Ozs7O007OztVOzs7OztlLFcsTzs7ZSxPO2M7OztVO1M7TyxPO2dCOzs7Ozs7SSxXO3lCLHFCLDBCO0ksVztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7Rzs7STtJO0s7TTtPLFU7OztPO007Ozs7OztvQyxNOztPOzs7UTs7O08sYzs7Ozs7OztNO087UTtVLGlCO1E7Ozs7O1MsSTs7OztVOzs7O1M7OztPOzs7Ozs7OztHOztJOzs7OztLO007TztTLGlCO087Ozs7Ozs7Ozs7O0s7OztNOzs7UztTLGM7UTthO0ksVzs7SztLO0k7SSxXO0ksTztHOztJO0k7O0s7Ozs7UyxPLGM7UTtNLFE7TTttQzs7OztNOzs7VSxPO21EO1M7TztTLFc7Ozs7Ozs7O087TyxPLGdDO007Ozs7Rzs7STtJOzs7O2dDLE8sc0M7Szs7bUM7Ozs7Ozs7VTtXLGE7VywyQjtVLE8sYztTO007Ozs7Ozs7TztPLE8sOEI7TTs7OztHOztJO0k7Szs7c0Msb0I7TSxRO007Ozs7O0ssSSx1QixjOzs7NkI7OztJO0ksTztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQztHO0k7OztRLE07TztJOzs7USxNO087Ozs7Ozs7OztJLFc7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0s7TSxPOztJOzs7Ozs7Ozs7Ozs7O0c7aUMsbUM7O0ksVztHOztJO2tEO0k7Rzs7STtLO0s7SyxPOzs7OztJO0s7O3NDLG9CO00sUTtNOzs7OztLLEk7Ozs7Ozs7Ozs7O0ssVztTLHFCLGM7Ozs2Qjs7O0k7STtLLE87SyxPO0s7SSxPO0c7NkIsUzs0QixnQjs2QixnQjtHO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07Tzt3QixpRDs7STtLLG1CLE87SyxPOzs7SSxPOztHO2lDLHVCO2dDLGlDO3FCLE8seUM7O0ksVztJLGlCO0c7O0ksTztLO0ksaUI7Ozs7O007Tzs7USxnQzs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7O1k7Rzs7STs7SztLO0s7SyxLO0s7OztLLDhCOztLO0k7STtLLFM7SyxPO0s7SyxjO0ssa0I7SztLOzs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjtJOztJLE87Rzs7STtHOztJLE87Rzs7SSxPOztHOztJLE87O0c7O0ksTztHOztJLE87Rzs7STtJO0k7STtJO0k7Rzs7STtJO0k7STtHOztJO0k7STtHOztJLFk7Ozs7SSxPOztHOztJO3VCOztJO0c7O0k7cUI7SSxJLFcsNkM7Ozs7SyxJLFEsa0M7Ozs7OztvQjs7Ozs7O0ssWTtLO0s7O0c7O0k7O1EsSTs7O0ssd0I7Ozs7SyxxQjt1QixNOztJO0c7O0k7O3lCOztPLDhCO08sTzs7Tzs7O1E7USxNO08sTzs7O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7Tzs7Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7O0k7O3lCOztPLDhCO08sTztlLE07O0c7O0k7O3lCOztPLDhCO08sTztlLE07O0c7O0k7O3lCOztPLDhCO08sTztlLE07O0c7O0k7O3lCOztPLDhCO08sTztlLE07O0c7a0MscUM7a0MscUM7NEMsZ0M7c0MsNkI7Ozs7SyxNO0kscUIsTzt3QjtJLEksUyx5Qzs7O0s7O0ksTTs7O0ksWTs7OztPLEksVzs7OytCOzs7Tzs7O08sSTs7OztTLE07OztPLEksWTs7OztTLE07OztPLFc7OztROztPLE07OztPLEk7Ozs7UyxNOzs7Tzs7O08sSTs7OztTLE07OztPOzs7UTtTO2dDLE8sZ0M7VSxTOzs7OztVLE07OztROztPLE07O0c7OEIsaUM7cUMsaUM7O0k7O3lCOztPLDhCO08sbUI7ZSxNOztHOztJOztLOzs7STtHOztJLE87Rzs7STtHOztJO0c7O0k7O08sa0IsK0I7cUIsTTs7Tzs7Tzs7O1E7Z0I7TztvQixNO1EscUM7b0M7Ozs7ZSxNOztHOztJOztPOztRLE87USxPOztPOztPOzs7UTtRLFM7USxRO087ZSxNOztHO0csdUI7MEMsa0M7d0MsMkI7O0ksVztJOzs7TTs7TyxPO2tCOzs7Ozs7Ozs7O0c7O0k7OztPLFUsMkI7Tzs7Tyw4Qjs7Ozs7Tzs7O1E7UTs7UTtPOzs7O0k7OztNLHNCOzs7TztRLE87USxPO087UTtTLE87b0I7OztnQjs7Ozs7OztLOzs7Ozs7TTs7cUM7Ozs7O007Ozs7Rzs7SSxJLCtDOzs7OztNLE07O0s7O0c7O0k7O087O08sOEI7O2UsTTs7Rzs7STs7Tzs7Ozs7USxHO1MsVztTLEs7Ozs7Ozs7O2UsTTs7Rzs7STtJO0s7OztNLEk7Ozs7Ozs7Ozs7O0s7O0c7cUMsaUM7O0ksSSw2Qjs7OztLLHVDOztLOztJLE07Rzs7SSxJLDZCO2dCLE07O0k7Rzs7STtnQixNOztJO0c7O0k7STs7OztRLEksbUMsYzs7O2dDOzs7OztnQjs7Rzs7SSxXO0k7SyxtQjtLOztNOzs7Ozs7SyxJLEksTzs7OztNLFM7TTs7O0s7SztJO0ksSSxnQjtJO0s7Ozs7Ozs7Ozs7OztzQjtHOztJLFU7O0ksTztHO0c7O0ksaUI7SSxtQjs7O0ssRztNLFc7TSxLLHlEOzs7STtLOztLOzs7OzRCOzs7Rzs7STtxQixPLGlCO0k7SSxXOztJO0c7OztLO0ssTztJO0k7SztLLG9DLHVCOzs7TyxZOzs7Ozs7Ozs7TyxZO087NEI7Tyx3QjsyQixpRDtPOzs7UTtPO08sTztNOzs7Szs7Szs7O2U7ZTtnQjtpQixVO2lCO21COzRCOztnQjs7ZSxtQjs7ZTtjOztHOztJOzs7O0c7O0k7MkIsTyw4QjtJLE87Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7OztXO1csK0Q7VztVO08sTzs7Tzs7O1E7K0IsZ0I7UTt5QjtRLE07TyxPO2U7O0c7OzBCLGdCOzs7Tzs7UTt5Qzs7O087OztRO1E7O1c7O1EsTTtlOzs7O3dCO0ksTztHOztJOztPLHNCOztRLE07O087UTtROzs7OytCOzs7O08scUI7TztRO1E7Ozs7K0I7Ozs7a0I7O08sTzs7Rzs7SSxJLEksTzs7Ozs7O0ksTztHOztJOztLLE87SSxPO0c7MkQsTztHO3VELE87Rzs7STs7Ozs7OztLOzs7Tzs7Tzs7UTs7Ozs7Ozs7OztROztXLFk7VyxvQixPO1cscUI7Ozs7Ozs7Ozs7O1c7OztZLGlCO1k7Ozs7O1c7Ozs7OztZLG1CO1k7OztZLGtCO1k7Ozs7Ozs7O1c7Ozs7OztZLG1CO1k7OztZLGtCO1k7Ozs7Ozs7O1c7Ozs7Ozs7WSxtQjtZOzs7WSxrQjtZOzs7Ozs7OztXOzs7OztZLG1CO1k7OztrQyxPLG1DOzs7O1k7YztZOzs7Ozs7OztXOzs7Ozs7WSxtQjtZOzs7WSxrQjtZOzs7Ozs7OztXOzs7Ozs7WSxtQjtZOzs7WSxrQjtZOzs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO1E7OztXO1c7O2M7OztlLFM7ZTs7OzsyQjs7Ozs7YztlO2U7ZSxPO3FCOzs7Yzs7O2U7ZSxhO2UsTztjOzs7OztlOztnQixPO3NDO2dCLE87OzttQjs7a0I7ZTs7OztlOztnQjtnQixPO3NDO2dCLFE7OzttQjs7O2tCO2U7OztjO2U7ZTtlLE87cUI7Yzs7ZTs7O2U7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxRO2U7ZSxRO2U7ZTtlO2dDOzs7Yzs7OztlLG9CO2UsTztjOzs7Z0IsTTtlOztnQjt5Qjs7OztjO2UsUztlOzs7Ozs7Ozs7O2U7ZTtlLE87cUI7Ozs7O2M7OztlOzJCO2UsVztlO2lCO2U7ZSxPO3FCOzs7O2M7OztlLFM7ZTtlO2U7ZSxPO3FCOzs7Yzs7O2UsUztlO2UsTztxQjs7O1U7TztPOztPOzs7UTtRLGM7USxPO1EsTztRLE87Ozs7OzZCOzs7TztxQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0ssSSxlLHVCLHNCO0s7SyxXO0s7Ozs7cUI7OEI7Ozs7OztVOztVLFc7VSxPO1M7TSxPOzs7Ozs7O0c7O0k7O0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssZ0Q7Ozs7aUIsMEI7Tzs7Ozs7Ozs7OztHOztJO0ksaUI7O0s7STtJO0k7Szs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STt5RCxlO0s7O0ksSSxxQjs7Ozs7OztLOztNLFM7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO1c7aUI7VztZO1k7O2U7Ozs7Ozs7Ozs7OztXO1csVztXOzs7OzJCO29DOzs7OztnQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MkI7O2dCO2dCLE87ZTtZOzs7O1M7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCOzttQjs7Szs7TTtNLGU7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO2lCO1c7WTtZLHNCO1c7VztZLE87WSx1Qjs7Ozs7Z0I7O2lCOzsyQjs7Z0I7Z0IsTztlO1k7Ozs7Uzs7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCO00sZTs7O0k7Szs7O0s7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SztLLE87SztJOzBDOzs7STtLOztNLGU7TTtNO1k7TTtPO08sc0I7TTs7OztVOztXOztxQjs7O1U7VSxPO1M7TTs7O0k7OztLOzs7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SztJO0k7SSxhO0k7Szs7TSxrQjt5Qjs7NEI7STtLOzs7Szs7O0s7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOzs7Szs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLOzs7Szs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7bUMsMkI7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLOzs7O0s7Szs7Rzs7OztJOzs7SztLLE87STs7Ozs7Ozs7Ozs7OztHOztJO0k7Rzs7STtHOztJO0k7Rzs7STs7O0s7b0MsZTs7O21DLGU7Ozs7Ozs7TSxNOzs7YTs7O2dCO0k7STtHO3VDLG9DOztJO0k7RztvQyxpQzs7STtHOztJLG9CLE87STs7Ozs7Ozs7Ozs7OztHOztJO0ssSztLO0s7STtHOztJO0ssSztLO0k7Rzs7STtLLEs7SztLO0k7Rzs7SSxTO0k7Rzs7STtLLEs7SztJO0c7O0k7SyxLO0s7SztJO0c7O0k7SyxLO0s7STtHOztJO0c7O0k7O3lDOzs7Tzs7O087OztPOzs7Tzs7O087OztPOztHOztJO0k7Z0I7Szs7O007Ozs7Rzs7SSxXO0k7Rzs7STtLLEs7OztLOzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJO0ssSzs7O0s7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLEk7Ozs0Qjs7O3FCOzt1Qjs7O0s7Ozs7NEIsTyxpQixxQjs7O0s7STs7Szs7Ozs0QixPLGlCLHFCOzs7SztJO0k7Szs7Syw0Qix5QjtLOztLLDJCLHdCO0s7O0sseUIsMEI7Szs7Syx3Qix5QjtLOztLLDJCLHlCO0s7O0ssMEIsMEI7Szs7SywwQix5QjtLOztLLDBCLDBCO0k7Ozs7Ozs7Ozs7Ozs7O0c7OztLO00sTTswQjs7SyxHLDhCO0ssTTtJO0ksSTs7OzRCOzs7O0s7OztNLEc7O08sVzs7O0ssTTtJOztLOzs7TSxHOztPLFc7OztLLE07STtJOzs7O0s7SztLO0s7SztLO0s7STs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxxQjs7SyxNO0k7Rzs7STtJO0k7STtLOztlO2U7SyxjO0ssaUI7SyxpQjs7OztLOzs7O1U7O3VDOztTO007O0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7VTs7aUI7Ozs7Ozs7OztXOzs7Ozs7UTtLOztJO0c7O0k7SztPOzs7Ozs7SyxLO0s7O0ssTTs7STtHOztJOzs7Ozs7Ozs7Ozs7OztLOztJO0c7O0ksd0I7SztJO0ssTztLLE87SSxPOzs7Rzs7STtLLE87SyxPO0ssTyxXO0ksTztHOzs7STtJO0k7SyxPO0ssTztLO087O1M7OztJO0k7Rzs7STsyQixXO0c7OzsrQiw0QztJOztHOztHO0k7O0c7RyxnQztHO0ksUTs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOzt5QixPLDBCO0ksTztHOztJLGtCO0ksTTtHOztJLFU7O0k7OztLO007UTs7VztNLE87TSxPO0ssTztJO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7SSxXO0ksTztHOztJLFU7SSxvQjs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJLFU7Ozs7SyxJLFc7Ozs7OztLOztJLFc7SSxPO0c7O0ksVTtnQjs7O0s7OztNLEksVzs7Ozs7O007Ozs7SSxNO0c7O0ksVTtnQjs7O0s7OztNO08sVzs7Ozs7OztNOzs7O0ksTTtHOztJO0c7O0k7OztTLEk7OztNO08sSSxXOzs7Ozs7Ozs7Ozs7O0k7SyxrQjs7Szs7OztLOztLOztJLEk7Ozs7TTs7O0k7STtHOztJO2dCOztLOztNO00sTztLO0s7STtJLE87Rzs7STs7Tzs7UTs7O087O087OztROzs7Tzs7TztROzs7O1E7VTs7Tzs7Rzs7STtLOzs7Szs7OztNOztLOzs7a0I7O0k7Rzs7STs7O0s7OztNOzs7TTs7Ozs7SztLO0k7STtLLGtCO0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVzs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVzs7OztTOzs7TztPO087O08sTTs7Rzs7STs7TyxnQjtrQjs7OztXOztZO1ksTztXO1c7VTtPLE87Ozs7Ozs7O1EsSSxhOzs7Ozs7Ozs7OztjO2E7YTtZO1MsTzs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7Ozs7OztRLEksWTs7Ozs7Ozs7Ozs7YzthO2E7WTtTLE87OztPOztPLE07O0c7O0k7O0ssTTs7STtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0k7Ozs7OztRO087OztPOztPO1E7OztPOztHOztJO0k7Rzs7STtJLGlCO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7SSxJOzs7Ozs7O087Ozs7O0k7Rzs7STs7SSxzQjtHOztJO0ksSTs7OzRCOzs7Ozs7Ozs7VTtTO1M7UTtLLE87O0k7Rzs7STtJLEk7Ozs7Ozs7Tzs7Ozs7STtHOztJOztJLHNCO0c7O0k7SSxJOzs7NEI7Ozs7Ozs7O2lDLDRDO1M7UTtLLE87O0k7Rzs7STtJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STtHOztJLEk7Ozs7SyxhO0ssSTs7OzZCOzs7Szs7STtHOztJLEkseUI7Ozs0Qjs7O0k7Rzs7SSx1QyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJO0ssVztLOzs7ZTtlLE87Yzs7OztJOztLOzs7Szt5QjtJLG9CLE87O0ssTyw0QjtJO0ksTztHOztJO0s7OztNOzBCO0s7O00sTzs7O1MsWTs7UyxPO1E7SyxPOztJLFk7NEIsTyx5Qjs7STtLOzs2QixzQixzQjtNLFE7TTtnQjtLOzs7OzRCLHdDO007USxXOzs7O0c7O0k7O0s7OztlO2U7Z0I7O21COzRCO2dCOztpQjttQjtnQixPOztlLG1CO2U7O2dCO2tCO2UsTztjOzs7O0k7O0s7OztLO3lCOzs7SyxTO0ssTztJO0ksTztHOzs7SyxnQjs7SyxPO0k7c0IsYTt1QixjO0k7SztHOzs0QixPLDJCO3NCLGE7dUIsYztJO0s7Rzs7c0IsYTt1QixjO0k7SztHOztrQyxPLGlDO3NCLGE7dUIsYztJO0s7Rzs7c0IsYTt1QixjO0k7SztHOzttQyxPLGtDO3NCLGE7dUIsYztJO0s7Rzs7c0IsYTt1QixjO0k7SztHOztJOzs7Szs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsdUM7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7Ozs7SyxJLEs7SyxXO0k7SSxXO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7STtJOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0ksYztJOzs7Ozs7Ozs7Ozs7O0c7RztJOzs7USxNO087STs7O1EsTTtPOzs7SyxXO0ssTztJO0k7OzhDLHFCO08sTzs7Ozs7K0IsNEI7TyxPO2U7O0c7OztLLFc7SyxPO0k7SSxPO0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJO0k7OEMsc0I7Ozs7Rzs7STtJLDZDLHlCOztHOztJO0ksdUMseUI7O0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJO0k7K0Msc0I7O0c7O0ksSTtJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7O087TztrQjtxQztPLE87Ozs7Ozs7OztPO087OztPO087OztPO087OztPO08sSTs7OztTOzs7TyxPOzs7Ozs7Ozs7O087TyxJOzs7O1M7OztPLE87Ozs7Ozs7Ozs7TztPLEk7Ozs7Uzs7O08sTzs7Ozs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7OztPO08sTzs7Ozs7Ozs7Ozs7O0k7OztPO08sRztRLFc7UTs7O1E7UyxPO1MsTztROztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7TyxPOzs7Tzs7OztJLHVCO0k7O0s7SztPOztVO0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztpQyxxQjs7STtjO2M7O3VCLGlCOztJLEksTSxxQixXO0k7Rzs7STs7O0ksTztHO3lCLHVCOztJLFk7STtpQjs7ZSxPO0ssbUIsSTtXOzs7Rzs7STtHOztJO0s7O3dCOzs7OztTLG1COzs7O0s7O0ksTztHOztJLGtCO0kscUI7RztxRDtHOztJOzt1Qjs7Ozs7OztXOzs7Vzs7Ozs7Ozs7Uzs7O1E7Ozs7cUM7O0k7RzswQixPLHlDOztJO0c7O0ksc0M7SSxPO0c7O0ksMkI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJO0c7O0ksOEI7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPLGtDO087OztHO2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7Ozs7MkIsb0IsTyxzQjtRLE87OztRLE87OzRCLE87OzRCLE87OzRCLE87OztRO1EsTzs7STtHOztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7Ozs7OztZO1ksbUI7VztRLFc7OztRLFc7O3lCLFc7O3NCLFc7O3dCLFk7O1EseUMsTTtRLFk7O0k7Rzs7STs7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7a0MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O3dCLG1CLFU7SSxPO0c7O0k7SSxPO0c7O0k7Rzs7STtJO0s7O0k7cUIscUM7STs7Rzs7STtJLE87Rzs7STtHOytCLE8scUM7O0k7Ozs7Ozs7Ozs7OztZLEk7Ozs7OztROztRLHdDO1E7Uzs7Ozs7O1U7Ozs7Ozs7O1M7Ozs7K0I7Ozs7STs7O3lCLHlCO0k7Rzs7O0k7Szs7K0IsVzs7O21CO0s7STtJO0s7STs7Szs7Ozs2Qjs7Uzs7O1U7OztVOzs7VTs7aUM7Uzs7c0M7Ozs7OztLO0k7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O3VCLHVCOztJLHFDOztJO0c7O0ksWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxNOzs7Ozs7Ozs7Ozs7OztPLE07OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TSxJOzs7TSxJO007TztxQjtPOzs7O1E7O1EsSTs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0s7aUI7Szs7OztNOzs7O0s7OztPLFU7TyxPO007TTtPO1E7Ozs7O007OztPLFU7O087Ozs7OztRLE07USxRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7TyxTO087O007TztTOzs7OztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0c7O0kscUI7STs7O2tCO0c7O0k7O3FCLE87OztPLE87Ozs7TyxPOzs7Ozs7Ozs7Rzs7STtHOzs7SSxZLE87O0ksTzs7O0k7OztPLE87OztPLE87OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7cUIsTzs7cUIsTzs7OztRLE87O08sTzs7O3VCLE87O3VCLE87O3VCLE87O3VCLE87O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0k7STs7Rzs7STs7SztLO0ssTztJO0ksTztHOztJO0k7O0s7SztLLEksbUI7bUM7OzswQixPOzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTs7O1E7UTtTOzs7WTtZOzthO2E7YTs7O1k7WTtXO1EsTzs7O1E7UTs7O1E7Ozs7O1E7UTtROzs7a0I7bUI7aUI7Ozs7Ozs7Ozs7YSxPO1k7WSxPO1c7UTs7Ozs7UTtROzs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7Ozs7OztNO087Tzs7O087OztVO1U7VTs7OztVO1U7Ozs7VTtVOztNLEk7Ozs7c0M7Ozs7UyxPOzs7Uzs7Ozs7UyxPOzs7UztTOzs7UztTO1M7OzttQjs7b0I7O3FCLE87cUIsTztvQixPO21CO21CO29CLFE7b0IsTzttQjttQjtrQjs7Ozs7UztTOzs7UztTOzs7UztTOzs7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7UztTOzs7OztHOztJO0k7O0s7SztLOzs7OztTOzs7O1k7WTtZOzs7O1k7WTtZO1k7Ozs7WTtZO1k7Ozs7WTtZOztTO1E7TSxNO007bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7Ozs7O1E7UTtRO1E7O1M7O1M7Uzs7VTs7O2dDOzthO2E7O1M7Uzs7UTtROzs7VTs7VTs7Ozs7WTs7OztZOzs7O1k7O1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTs7Ozs7OztTO1M7Uzs7O1E7UTtROzs7USxPOzs7USxPOzs7UTs7Ozs7UTtROzs7UTtROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7O1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1EsTzs7O1E7UTtROzs7O0c7O0k7OztJO0k7STtJOztHOztJO0k7O0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SztLOzs7STtJLE87Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7O1E7Ozs7O0c7O0k7STtJO0k7Ozs7O087Tzs7Ozs7Ozs7Tzs7Tzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOztHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7Ozs7OztTO1M7Uzs7Ozs7O1E7Ozs7O0c7OztJO0k7STs7O0k7STtJO0k7Ozs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087O3lCOztHOztJOztLO0s7OztJO0k7OztJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7O0s7SztLLEksbUI7Ozs7USxPOzs7UTs7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTtROzs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7O0c7O0k7STtJOztHOztJO0k7STs7Rzs7SSxZOztJOzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7Ozs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7Ozs7Ozs7UztTO1M7VSxPOztTOzs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087a0MsbUIsVTtPOzs7O2dCOzs7TztrQyxtQixVO087Ozs7Z0I7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7STtJO0k7STtJOzs7SSxxQzs7STs7Ozs7Ozs7O0k7STtJO0k7STs7OztJO0k7OztJO0k7STs7O0s7Szs7O0k7SyxPOztJO0c7O0k7OztJO0k7STs7Rzs7O0k7STs7OztJO0k7WTs7STs7OztJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQywwQzttQywwQzs7O0k7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxNOztPLE07ZSxNOztHOzBDLGtDO2lDLDBDO0c7Ozt5QixvQjs2QixpQzs7SSxNO0c7O0ksTTsyQjtHO0c7O0ksc0I7STs7O0ssVztJLFc7RztHO0c7STtJO0k7STs7STtJO0ksZ0I7SSxlO0ksZTtJLGM7O0k7Ozs7O0c7O0k7Ozs7O0c7cUMsd0I7O0k7OztHOztJOzs7OztHOztJOzs7O0c7O0k7Ozs7Rzs7STtLLFE7OztxQjs7OztHOztJOztHOztJOztHOztJOztJO0c7cUMsK0I7O0k7O2dDOzs7ZSxNOztrQjtHO0c7O0k7O0s7TSxPO007O3lDOzs7O0k7Rzs7STs7Rzs7SSxJLHFDLEk7STtJO0c7Rzs7STs7OztLO0k7Rzs7d0IsTywyQzs7SSxPO0c7aUMsTyxxQzs7SSxPO0c7MkIsa0M7aUMscUM7RyxJLG1COzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7STtHOztJLE87Ozs7Ozs7Ozs7RztxQyw4Qjs7STsyQztJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxJLE8sd0I7OztNOzs7OztPOzs7Ozs7SztLLE87STtJLFc7Rzs7O0s7SyxPO0k7SSxPO0c7O0k7Ozs7TTtPLE87TyxPO08sTztNLFc7OztNOztPLE87TyxPO08sTztNLFc7Ozs7Ozs7Ozs7Ozs7O0ssRztNO087OzthO00sSTs7TTs7OztPOzs7O0c7O0k7STtLLEksTyx3Qjs7Ozs7Ozs7Szs7Rzs7STs7MkM7STtHOztJO2tEO0k7Rzs7SSxjOzs7SztNLEksTyx3Qjs7OztVLFc7VTtVOzs7VSxHLG1DOzs7O00sTTs7O0ksTTtHOztJLGM7OztLO00sSSxPLHdCOzs7O1U7Ozs7TSxNOzs7SSxNO0c7O0ksWTs7O0ssTzs7SSxNO0c7O0ksWTs7OztROzsyQixPOztJLE87Rzs7SSxZOzs7Ozs7OztTLGtCLFE7dUM7O1MsTztRO0ssTzs7SSxNO0c7O0k7STs7Ozs7K0I7OztHOztJLE87Rzs7STtJOzs7OztROzs7O0c7O0k7SSxPO0c7RyxzQjs7STs7O00sSztPOzs7O00sSztPOztLO00sUTtNLFE7Ozs7OztLOztPLFc7TyxXOzs7TyxXO08sVzs7Ozs7Ozs7Ozs7TSxHO087UTs7OztjO08sSTs7TyxJOzs7STtHOztJLFk7STs7OztLO0ssUTtrQzs7O0ssVSw2Qjs7STs7RztJO0k7STs7STtJO0ssSSxPLHdCLE87SyxXOzs7Ozs7Ozs7VTtzQjtjOzs7Ozs7O1U7O1csc0I7VSxPOzs7Ozs7O1M7Ozs7UyxtQixROztTLDBCO1M7UyxlO29COzs7O0ssYyxzQjtLLE87O0c7O0k7O0k7Ozs7STtHOztJO3dCO0ksUztJO0k7Rzs7STtnQjs7SSxNO0c7O0k7Szs7Ozs7MkMseUI7TTs7Ozs7OztVO1UsVzs7O1csTzs7OzJCLHlCO1UsTztTO007Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7O0k7SyxtQjtLOzs7STtJOztLOzs7TSxPO0ssYztJO0k7STtLLFc7Szs7OztTOzs7O3VCOztTLEksNEI7Ozs7O1UsTTs7O1E7SztLLFc7SztLO0s7SztLOzs7OztLLHFCLE87SztLO0s7Szs7RzsrQixPLG9DOztJO0ssTzs7OztJOzs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxPOztRO00sTzs7Ozs7OztROzs7Uzs7Ozs7Ozs7Ozs7O007TSxPOzs7Ozs7STtHOztJO0k7Rzs7STtJO0ssVzs7Ozs7OztVO1U7Ozs7O1U7VSxPOzs7VTtXOztXLE87Ozs7O1U7Ozs7O1U7Ozs2QixtQiw0QjtVLE87O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7SyxJOztHOztJO0k7SztNLE87TTtNLE87SyxXO3lCOzs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1U7VyxPOzs7Ozs7SywwQjtLLE87O0c7O0ksVztJO0s7SyxXO0s7Ozs7OztLO0ssTTs7Rzs7SSxJLE87O3lCO0s7OztNLDBCO00sTzs7Ozs7OztHOztJLEksb0M7Ozs7O0s7O0c7O0k7STtLLEksTzs7eUI7Ozs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7OzttQyxtQjt1Qjs7VTs7Ozs7O2U7Z0IsTztnQixzQjs7YzsyQjtVOztZLE07VyxXO1c7VztXOzs7Ozs7VztXLDBCO1csTzs7Ozs7Ozs7cUI7Vzs7Ozs7Ozs7O1c7c0I7VTs7O1M7O1UsUTtVOzs7O3FCO1c7Ozs7Ozs7UztTLDBCO1MsTzs7O29CO1U7VSxHLCtCO1U7Ozs7OztLO0ssMEI7SyxPOztHOztJLEksTzs7SSxXO0ksSSwwQjs7OztLO0s7O0c7O0ksSSw4Qjs7Ozs7Szs7Rzs7SSxJLE87OztTLGtCOzs7Ozs7O0ssSTs7OztJLGlCO0k7STtLOztJOzs7O3dCOzs7UTtROzs7dUI7OztTO1UsTTs7Ozs7Ozs7O1M7VTtpQyxtQjs7cUI7O1E7O1Msc0I7USxHLDZDOzs7OzthLE87O3VCOzs7O1k7WSxPO1c7USxxQjtRLEksVzs7O29DOzs7UTs7OztnQyxtQix3QjtRLE87O0ksb0I7SSxPO0c7O0k7SSxXO0k7RzsrQiwwQjs7STtLLFE7SyxRO0s7Szs7SyxXOzs7O3FCO29COzs7Ozs7OztLOzs7OztLO0s7SyxvQjtLLE87STs7Szs7TTtpQjtNOzs7Tzs7USxPO1E7Ozs7cUI7Ozs7OztLO0k7STs7SyxjLHNCO0s7O0k7O0s7O0k7SSxPO0c7O0ksVztJO0ssWTtnQjs7Ozs7OztLO0s7SztNO00sc0I7SyxPOztHOztJLGU7STtJLG1COztLOztNLG1CLE87TSxHLHlDOztLO007TyxRO08sVzs7a0I7Tzs7USxzQjtlOzs7O007Ozs7O00sZTtNO007O08sc0I7TSxPOztJOztLLFc7SztJO0k7STtLLEksVyw4Qzs7Ozs7O007Rzs7O0ssSSxPLHNCLE87SyxXOzhCLE07SztLLE87STtJLEksUyxJOzs7Ozs7STtJO0c7Rzs7SSxzQjtJLEksTyx3Qjt5RTs4Qzs7Ozs7TSxNO0s7Ozs7TSxPO007UTs7Ozs7NEIsTzs7STtJO0k7STs7Ozs7O1M7OztVOzs7Ozs7Ozs7OztjLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7OztxQjs7Ozs7O1M7OztTLGdDLFU7Ozs7OztnQjs7O1U7cUI7Ozs7O1M7O1UsTTtVLE87VTs7Ozs7OztZOzs7OztVOzs7Vzs7Ozs7Ozs7Ozs7OztlOzs7OztZLE07O1c7Ozt3Qjs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7O2E7OztjOztpQixrQixRO2lFO2lCOzthLGlCO2MsVztjO2dCO3FCOzs7O21COzs7Ozs7Ozs7Ozs7Ozs7O1U7O3NCOzs7OztnQjs7STtJO0c7O0k7Ozs7eUIsc0M7SSxPO0c7O0k7O0k7O0k7Rzs7O3NCLDRCO0ssTztJO0ksTztHO0c7O0k7O0c7O0k7SztNLE87Ozs7Ozs7OztLO0k7OztPO2lCO0s7SSxPO0c7O0k7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTtHOztJLFc7Ozs7O0s7O00sTztNLE87SyxPOzs7Rzs7O0s7Ozs7Ozs7VTtXO1c7O1c7VyxROzs7O1U7VztXO1UsRztXLE87VSxNO1M7TTs7SztNO007OztLLG9CO0s7TSxVO007OztLLG9CO0ssWTtLO0k7SSxPO0c7OztzQixxQztLO00sVTtNO0s7STtJLE87Rzs7O0s7SyxvQjtLO00sVTs7O0ssb0I7SztNLFM7TTtLO0k7SSxPO0c7O0k7Ozs7Ozs7Uzs7OztVLE87UztRO0ssVzs7OztLOzs7O00sTztNLE87SztJO0ksVzs7OztLOzs7Ozs7Ozs7Ozs7O0ssb0I7SztNLE87Ozs7O007Z0M7Ozs7O0ssb0I7SzthOzs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOztJOztJO0c7OztLOztROzs7Ozs7UyxzQjtTLFE7UztROztROztTOzs7WTtZLG9CO1ksYztXO1MsTzs7Ozs7WTtZO1c7UyxPO1E7O1E7Ozs7UztROzs7O0s7SyxvQjtLO00sVztNO0s7STtJLE87Rzs7SSxjO2EsTzs7STtHO0c7O0ksSSxPLHNCLFU7SSxHOzhCO0ssSSxrQjs7Ozs7UztTLE87OztLOztJO0s7TSxVOzs7TSxVOzs7TTtPLFE7OztVLFc7VSxPO1M7Yzs7O0ssUyxNO0s7Ozs7O0ssSSxvQjs7Ozs7OztVLE07Ozs7Ozs7Ozs7SztNOztTOztNOzs7Ozs7VTs7VyxNO1csTztXLE87VztXO1U7VztZLE87WSxrQjs7O1U7VyxROzs7O1U7OztXLE87OEIsbUI7VyxPO1csVTtrQyxnQztXLE87VyxZOzs7Ozs7O2lCOztLO0s7O0c7O0ksZ0I7O0s7OztNOztLLE07STtJLFc7d0IseUI7SSxZOztJO0s7Szs7Ozs7OztJOztJO0c7O0k7O0s7STtJLE87Rzs7O0ssWTs7Ozs7Ozs7Ozs7O00sSTs7SztLO0k7SSxPO0c7Rzs7OztRLE07Tzs7SSxXO087SyxNOzs7STs7O0s7OztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0s7SyxXO0s7O0s7Ozs7OztLO0ssTTs7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0csK0I7O0c7O0k7Szs7Ozs7Szs7Ozs7O007TSxVOztNLEksVTs7OztPLGE7TyxHO1EsTTtPLE87OztNO087UTs7Ozs7Ozs7TSxjO007TTtNOzs7O00sSTs7Ozs7SyxJOzs7OztLLFc7Szs7SSxNO0c7O0k7Rzs7SSxJLDhCLHVCOzs7OztLLE07O0c7O0ksVztJLEksd0IsYzs7O2dDLDZCOztLO0s7Szs7Rzs7SSxJLE8sc0I7O0ssTztJLE07Rzs7SSxXO0ksSSxxQzs7OztLO0s7SyxNOztHOztJLFc7SSxJLGlEOzs7Z0M7OztHOztJLEksc0Q7OzsrQixPOzs7Szs7Rzs7SSxJLHNEOzs7Z0MsTzs7O0c7OztJLEksTyxzQjs7SyxrQixPO3VCO0ssSTs7OztPLE07OztLO007OztLOztJLE07Rzs7STtHOztJLEksTyxzQjs7SyxPO0ksTTtHOztJLFc7SSxJLHlDOzs7O0s7SyxNOztHOztJLEksMEQ7Ozs7Z0MsTzs7O0c7O0k7SyxXO0ssSSxJOzs7O007TTtNO087UTs7Ozs7O2tCOztNOzs7Ozs7O0ksSSxPLHdCOzs7Ozs7TyxrQixPO08sRztRLE87Ozs7STtHOztJOzthOzthOzs7Ozs0Qjs7O0c7O0k7SyxJLE8sNkI7SztVLGdDLEk7Ozs7Ozs7O0s7TTs7Ozs7OzRCOzs7RztHOzs7Ozs7c0IsTTs7Ozs7O1MsOEM7UztVLEc7VyxNO1U7VyxZO1c7O2M7O1csTztVOzs7OztVO1c7WTtZO1c7Ozs7O1ksTTs7Ozs7O1M7O0ssMEI7TTtPLFk7Tzs7VTs7TSxPOztLOzs7Rzt3Qix1Qjs7STs7Ozs7OztJO0k7OztNOzRCLDBCOzs7OztLO0ssTTs7Rzs7SSxJLG9COzs7d0I7OztHOztJLEksb0IsYzs7O3dCOzs7Rzs7STtLLE87SyxXOzs7Ozs7O1MsRztVLE07UyxzRDtTO1M7VTs7Ozs7Ozs7O1U7Ozs7OztVLEksSSxPOzs7Ozs7Ozs7Yzs7O2U7Z0IsTzsrQjtjO2E7VSxPOzs7O1MsYTs7Szs7TTtPOztPO3dCO00sTzs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1M7VTs7O2M7MkI7YTtlO1c7VTs7OztpQzs7O1E7TTtNOzs7Ozs7a0IsdUI7Ozs7OztRO1EsTzs7Ozs7SyxNOzs7O0ksSSwrQzs7OztNOzs7Rzs7STtJOztLLEksTyxzQixPO0ssVztLLEc7TTtNO08sTzs7TTs7SztNO08sVTtPLFc7O08sdUIsTztvQjs7Ozs7TTs7Ozs7bUI7TTtPLE87O007O0k7O0s7OztLOzs7Ozt3Qjs7UztVO1csSztXOzs7Yzs7O29CO3dCOzthO1csTztVOzs7Ozs7O1UsMEI7VSxPOzs7UyxlOzs7Uzs7O1UsTztVLFU7UztVLE87O1M7O0ssb0I7SyxPO0k7O0s7O3lCLGtDO0k7SztLLDJCLGlDO0ksTztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDRCLGM7Ozs0Qjs7O0c7O0ksSSwwQjs7Ozs7Szs7Rzs7SSxrQixPO0ksTztHO0csa0I7O0k7OztLOzs7O21COzs7VSxtQixPO1UsTztTO1MsTzttQjs7O00sSTtlO0k7O0s7SztNLFU7TSxHLDBDO21COzs7Ozs7eUI7O1U7VztZLEs7WTs7O2UsZTs7YztZLE87Vzs7Ozs7WSxPOzs7O1UsVztVOzs7Ozs7O2MsVztjLE87YTtVLEcseUM7Ozs7TSxPOztJO0k7Rzs7STs7SztLLE87STtJO0ssZ0I7SyxRO0ssUTtxQixPLDBDO0ksRztLO3FCLE8sMEM7SSxHO0s7cUIsc0I7SSxVO3FCLHNCO0ksVTs7eUIsTyxzQjtJO0s7SywyQix3QztJLE87Rzs7STtLO0s7Ozs7OztLOztHO0c7O0ksb0I7SSxhO0ksb0I7SSxhOztLO00sSSxLLHdCOzs7O1E7UTtRO1E7OztNOztLO00sTztNO00sWTtNLE87TSxPO00sVztLO0k7SSxPO0c7O0ksSTtJO0c7O0k7STtzQzs7TTs7O08sTztNLFM7Ozs7TSx1Qjs7Rzs7O0ssUztLO0ssVztJO0ksTztHOztJO0c7O0k7Rzs7O0s7TSxPOztvQjtLLFc7cUIsTTtLLE87STtJLEksZSwyQixjOzs7O0s7Szs7RztHOztJOztLLE07O0k7Rzs7STs7SztnQzs7O0s7TTs7TTtNLFE7OztNO00sSTs7SztJO0k7O0ssVztLLEcsMkM7a0I7Ozs7O1M7O1U7OztTOzs7OztTO1U7VSxPOzs7O1Msa0IsTTs7Z0I7VSxLO1csZ0I7O1k7O2E7OzthO2E7YSxPO1k7O2E7OztXLE07O1UsUzs7UyxPOztLLE87STtJO0c7O0k7SztNLE87Ozs7Ozs7Ozs7Ozs0Qjs7O0c7O0ksSSw2Qjs7Rzs7STtLLEksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs0Qjs7O0c7O0ksSSxPLHNCOzs7SztNO08sbUI7TztNOzs7Ozs7TTs7O0k7Rzs7STtJO3VCO0ssSSxPLHdCLE87dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsRyxpQzs7Ozs7Ozs7Ozs7TTs7SztNO007TSxPO00sTzt1QjtLO00sVztNOzs7OztNOzs7Ozs7Ozs7Ozs7OzBDOzs7Ozs7Ozs7Ozs7Ozs7O3dCO29CO3dCLCtCOzs7O21COzs7Ozs7Ozs7Ozs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7bUI7b0I7cUIsUztxQixTO3FCLE87OztxQjs7O3NCO3VCLE87dUIsYztzQjs7O3VCLFc7dUI7Ozs7Ozs7OztvQjtxQjtzQjt1QixPO3VCLE87dUIsTzs7Ozs7Ozs7OEMsUzs2Qjs7cUI7c0IsTzs7O3lCO3lCO3dCOzZCOzs7cUI7c0IsTTs7Ozs7Ozs7Ozs7Ozs7MkIsSzsyQjs7Ozs7Ozs7Ozs7OzBCOzswQjs7Ozs7Ozs7Ozs7Ozs7O2dDOzs7Ozs4QixNOzs7Ozs7Ozs7Z0M7Ozs7Ozs7O2dDOzs7OzhCLE07OzZCLFc7NkIsSyxrQjs4QixNOzs7Ozs7MkIsTTs7Ozs7Ozt5Qjs7Ozs7Ozs7Ozt1Qjs7OztzQixNOzs7O29COzs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7bUI7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7O29CLFM7b0IsUztvQjs7OztvQjs7dUIsa0IsUTt1RTt1Qjs7b0I7OzZCO21COzs7Ozs7OEI7bUIsUyxNOzs7O3VCOzs7d0IsUTt3QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7OzZCOzs4QjsrQzs2QixPOzs7Ozs7Ozs7Ozs7OzZCOzs4QjsrQzs2QixPOzs7Ozs7Ozs7Ozs7Ozs7d0IsTTs7dUI7c0I7bUIsTzs7Ozs7OztrQjttQjttQjs7Ozs7b0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtvQjs7Ozs7Ozs7OzswQjs7b0I7Ozs7O3FCLE07Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O1U7Ozs7UztVLE07O1E7OztTLE07Ozs7Ozs7OztPO1E7UyxPO1M7UztRLFMsTTtROzs7OytCOzs7O00sTTs7O0c7O0ksVztPO0ssTTtJLDBCO0ksTztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0k7SztrQjtJO0ksa0I7STtJO0ssTztLOzs7O0s7TSxPO007YSxNOztLOzs7OztNLE87TSxPOzs7O087OztNLE07O0s7STtJLE87Rzs7O0s7Szs7OztRO1EsVzs7VSxrQjs7Ozs7USxNOzs7cUI7TSxNOztJO0k7Rzs7SSxXO0c7O0ksSSxvQjs7OytCOzs7Rzs7STs7SyxJLE8sc0IsTztLLFc7O0s7SyxPO0k7STtJOztHOztJLE87Rzs7STtLOzs7Ozs7OztJOztLOztzQjs7SyxJOzs7Ozs7O0ksVztJO0s7SztLLE87SyxrQjtLO2E7SSxPO0c7RyxtQjs7STtHOztJLFc7SSxTO0k7SztLO0ksTztHO0c7STs7O1EsTTtPO0k7OztRLE07TztJOzs7STtLOzswQjs7O1E7OztRO007Rzs7STtJO0ssTTtLLFE7O0s7SztrQjs7OztPLEc7USxXO1E7OztNLHNCO00sSSxVOzs7Ozs7Ozs7Ozs7O1M7VSxTOzs7Ozs7Vzs7Ozs7Ozs7OzZCLE07Ozs7Uzs7Ozs7TSxNOztJO0ksSSw4Qjs7OzRCLE07OztHOztJO0s7Szt3QjtJLFc7d0I7SSx1Qjs7O0s7TztVOztLLE07O0k7RztHOztJOzs7OztNO087TztPO087Ozs7OEI7Ozs7OztHOztJLEs7SyxNO0k7SSxJOzs7NEM7OztJLEksOEI7Ozs7O0s7O0k7STtHOztJOztLLE07O0ksTztHOztJO0ksSTs7OztNO007TTtNOzs7Ozs7SSxPO0c7O0ksYztJLEksTyxzQixPO0kseUI7STtJOzs7Ozs7Ozs7OztXOzt5RDtXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7Ozs7O2lCO21COzs7OztrQjtrQjtrQjs7O2lCO21COztrQjttQjs7b0I7O29COzs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YztjO2M7Ozs7Ozs7O1E7UTs7OztNOztLO0s7Ozs7OztLO0ssTTs0Qjs7Rzs7STtJO0k7SztLO0ssSztLLFE7STtJO0k7STtJLHlCO0ksSSxPLHNCLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSSxxQzs7Ozs7TSwwQjs7STtHOztJOzs7Ozs7O0s7TTs7Uzs7Ozs7WTs7Ozs7Ozs7O1k7WSxPOzs7Ozs7O007OztLO0s7OztLOzs7Ozs7Ozs7UTtxQjs7O1M7OztVLE87Uzs7Ozs7Ozs7Ozs7SztNOztNOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7a0I7c0IsK0I7Ozs7O2dCO2dCO2dCO2lCLE87aUIsVTs7OztrQjs7O3dDOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O3FDLHFDO2tCOzs7Ozs7O2lCO2tCO21COzttQjtvQztrQixLO21CO29CO3FCLE87cUIsTztxQixPOzs7Ozs7Ozs0QyxTOzJCOzttQjtvQixPOzs7dUI7dUIsTTs7d0IsVzt3QixJLDZCOzs7Ozt5Qjt5Qjt5Qjs7dUI7dUI7O3NCO21COzs7O2lCOzs7Z0I7Ozs7Ozs7O2M7Ozs7ZSxXO3lCOzs7O2U7ZTs7OzthO2M7YztjOzs7Ozs7Ozs7Ozs7OztnQjtnQixjOzs7Ozs7O21CLHFCLE87Ozs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7O2lCLFc7aUIsSTs7Ozs7a0I7a0I7a0I7a0I7bUI7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7O2lCOzs7a0IsNEI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQjtpQjs7O2tCO3lDO2lCOzs7Ozs7b0M7aUI7a0IsTzs7b0MsbUIsc0I7aUI7Ozs7Ozs7Ozs7VTs7OztXO1c7Vzs7Ozs7Ozs7O1E7UTtRO1E7UTs7O08sYzs7Ozs7UyxHO1U7O1c7O1csUzs7OztRLEc7Uzs7Uzs7Uzs7Ozs7O1EsTTs7O08sTTtNOzs7Ozs7OztPO087TztPLEksbUIsSTs7Ozs7O087Tzs7USxJLE8sc0IsTztROzs7OztLOzs7Ozs7SztLOztHOztJLFc7TywwQztJLDBCO0ksTztHOztJO0s7OztLOzs7Szs7OztLLEs7SyxLOzs7SyxRO0k7Szs7TSxPO0s7STtJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsUzs7Ozs7Ozs7OztnQjs7Ozs7OztJO0s7Szs7STtLLFM7SyxnQjs7OztTOzs7Ozs7UztTOztXO1c7O1U7VTs7Ozs7O1UsTTtpQzs7O1E7SztLOzs7O0s7SztLLE07O0c7O0ksSSxPLDJCLE87c0I7Ozs7OztNLE87O0s7OztPLE87O00sVzs7O0ksTTtHOztJO0ssUztLLFM7SyxNO0ssTTtJLHVCO0k7Szs7Ozs7OztLO00sTztNLEs7OztTLGtCLE87UyxPO1E7Szs7OztTO1M7VSxXO1UsTTsrQjs7OztpQzs7O1E7Szs7STtLLFM7SyxTO0s7Ozs7O1k7cUI7SyxROzs7STs7TTs7O08sUTs7O29COzZCOztLO0ssTztJO0k7O007bUI7SztLLE87STtJO0ssSSxrQjs7TSxJLGtCOzs7OztXOzs7eUI7a0M7O1U7ZTs7Ozs7Ozs7O0ksUzs7Ozs7TTtNOztvQyxtQjs7Ozs7OztNO007O29DLG1COzs7Ozs7Ozs7Szs7TSxROzs7Ozs7UTs7OztROytCO1MsYTtROzs7Ozs7OztPOzs7SyxTOztNLFc7TTs7SyxLO007O1M7O007TTtNLE87O3FCO0ssTztlOztJO0ksSTtJO0s7Szs7OztTO1M7VTs7VTs7Ozs7O1U7O1E7SztLLEc7TSxTO00sRztPLFc7Tzs7O0s7Ozs7SztLO0ssTTs7Rzs7STtJO0s7TSxPO00sTzs7OztTLFksTztTLG9CO1M7O007TTs7Ozs7O3VCOzttQzs7O087O2dDLE8sZ0M7Ozs7Ozs7Ozs7c0M7Ozs7Uzs7O21CO21CLFM7bUI7bUI7bUI7b0I7cUIsc0I7cUIsTztvQjs7Ozs7b0IsTTs7a0I7Ozs7Ozt1Qjs7OztTOztrQyxPLGtDOzs7Ozs7OztROztpQyxPLGtDOzs7Ozs7d0I7O1MsVztZO1U7VztXOzs7VztVO1U7VSxnQztVLE87OztROzs7Ozs7Ozs7O3dCO2lDOzs7OztTLGM7O1UsMEM7bUI7O1UsMEI7VTs7Ozs7Ozs7Ozs7O1E7UTtTLFE7UyxRO1M7Ozs7MkI7O2EsSztjOzs7O1M7Uzs7UyxzQjtTLFU7Ozs7UyxzQjtTLFU7Ozs7O1M7OztXOztZLE87WSxzQjtXOzs7Ozs7Uzs7Ozs7WSxTO1k7WTtXO1E7Ozs7WSxTO1k7WTtXO1E7UTtTO1M7O1M7OztTO1E7USxPOzs7OztTOztrQyxPLGtDOzs7Ozs7O1M7OzttQjttQixTO21CO21CO21CO29CO3lDLDBCO3FCLE87b0I7Ozs7O29CLE07O2tCOzs7OztLOztHOztJLFc7SSxJLCtCOzs7OztLO0ssTTs7O0c7O0k7OztLLG9CO0s7Ozs7dUIsMEI7O0s7Szs7Ozs7SztLLE07O0c7O0ksSSxPLHNCLE87c0I7OztLO007SztLO007TTtNO007TTtNOzs7Ozs7TTs7OytCO007OztJO0c7OztJO0k7RzttQywwQzs7STtLO0s7STtJO0c7O0ksSSxpQzs7OztROztTO1M7UyxNO1E7UTs7OzthO1Msa0M7Ozs7UTs7STtHOztJO0k7SyxJLHFDOzs7O1M7O1U7VTs7VSxPO1M7Uzs7Uzs7Ozs7VSxTO1k7eUI7VTs7Ozs7Szs7Rzs7SSxJLG1DOzs7O1EsSSxvQjtRO1E7UTtROzswQjs7STtHO3FELG9DO0c7O0k7SSxJLFcseUM7Ozs7SyxlO2dCO0s7O0c7OztLLFc7MEI7UTtNLE07SyxXO0ssYztJO0ksSSxXOzs7O0s7Szs7STtJO0c7O0k7OztHOztJLGM7SSxJLE8sc0IsTztzQjtJOzs7Ozs7O1U7VztXO1c7c0I7Ozs7Ozs7O1csSzs7Ozs7O007TztPO08sTztPLE87Ozs7TztRO1MsTzs7Ozs7O1E7Ozs7Ozs7Ozs7O2E7YztjO3lCOzs7Ozs7Ozs7Ozs7OzttQjtlOztzQiwrQjs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YyxLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7O2UsUztlLFM7ZSxNO2UsTTs7OztlO2dCLE87Z0I7Z0I7Z0I7Ozs7O2dCO2lCOzs7Ozs4Qjs7OzBCOzs7aUI7Ozs7Ozs7OztrQjs7OztpQixHOztrQjs7cUI7Ozs7a0I7a0I7a0I7Ozs7Ozs7O2tCOzs7aUI7OztnQjs7Ozs7bUI7bUI7b0I7cUIsTztxQixPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQzs7Ozs7Ozs7Ozs7MEI7MEI7Ozs7OEI7NkI7a0M7Ozs7Ozt5QjtvQzs7Ozs7Ozs7Ozs7O21DOzBCOzBCLFc7NkI7MkI7NEI7OytCOzttQzs7Ozs7OytCOzhCO21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7O29CLE07OztrQjt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7OztnQjs7OztxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7SyxNOzhCOzs7Rzs7SSxXO08sMEM7STtLOztJLE87Rzs7STtLOzs7Szs7O0s7Ozs7SSwrQjtJOzs7OztNLHdCOztLOzs7Ozs7SztLLEksc0Q7Ozs7O00sTTsrQjs7O0k7SSxPO0c7O0ksSSxPLDJCLE87c0I7Ozs7OztNLE87O0s7O08sTTtNLFc7OztJLE07Rzs7STtJO0c7O0k7O0k7O0k7O0s7MkI7STtJO0s7SywyQix1QztJLE87Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLEksTyx3QixPO0ssVzs7Ozs7UztVLFc7Ozs7Uzs7VSxRO1UsTztVLE87VSxrQjs7VTtXLFM7VztXLE87VTs7UywwQjtTO1MsZTtvQjtTLEksTzs7O0ssMEI7SyxPOztHOztJO0k7STs7Rzs7STs7SztLLE87OzRDO0k7SSxPO0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJO0ksTTs7OztpQjs7Rzs7SSxJOzs7cUM7OztJO0c7O0k7O0k7O0k7Rzs7STs7Szs7Ozs7O007O0s7STtJLEc7Ozs7O1Msa0MsTztTLFc7UTtnQjs7O0c7O0ksYztJLEksTyxzQixPO3NCO0k7Ozs7Ozs7O1c7WTtZO2E7ZTs7Ozs7Ozs7Ozs7K0IsNEM7WSxHO2E7Ozs7Ozs7Ozs7VyxLOzs7Ozs7TTtPO087TyxPO08sTzs7OztPO1E7UyxPOzs7Ozs7UTs7Ozs7Ozs7Ozs7O2M7ZTtlO2dCO2tCOzs7Ozs7Ozs7Ozs7O21COztrQjtlLEc7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7MEM7Ozs7OztjO2UsUztlLFM7ZTs7Ozs7O2U7Ozs7Z0I7MkI7Yzt1QjtjO3VCO3FCO2U7Ozs7a0I7a0I7bUI7b0IsUTtvQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjt5QixXOzRCOzBCOzJCOzs4Qjs7a0M7OzBCOzs7OEI7OzBCOzs7OzhCOzZCO2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21COzs7Ozs7O21CLE07OztpQjtzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlOzs7Z0I7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7SyxNOytCOzs7Rzs7SSxXO08sMEM7STtLOztJLE87Rzs7STtJO0s7TTs7O007Ozs7Ozs7TTtPLE87Tzs7OztjOztLLGE7OztLO007Ozs7SztvQztzQzs7OztTOzs7Ozs7VSxPO1UsTzs7Ozs7Vzs7O1U7OztTO1U7VTs7Ozs7O1UsTTs7O3VCOzs7UTtLLE87O0c7O0k7SSxXOztLO0k7STtLO0ssMkIsTyw0QjtJLE87Rzs7STtHOztJO3FCO0c7O0ksSTs7OzhCOzs7STtHOztJO0k7SztNLFc7TSxnQjs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7YTs7YyxvQjtjLG9COzs7Ozs7aUI7aUI7a0I7a0I7Ozs7Ozs7a0IsTTs7Ozs7O2dCO2E7Ozs7O2lCOzt5QjtpQjtrQjtrQjs7Ozs7OztrQixNOzs7Ozs7Z0I7YTs7Ozs7Ozs7Ozs7O2EsRztjLEk7Ozs7OztlLE07Ozs7Yzs7Ozs7TyxNOzs7TTs7Szs7Ozs7Ozs7TSxNOzs7OztHOztJO0k7SyxhO0s7O0k7O0ssTzs7STs7SztLO0ssSztLLEs7STtJO0s7OztLOzs7Szs7Ozs7O0ssa0MsTTs7OzBCO0s7O087WTtNO0s7STtJLFk7eUIsa0IsUztJLHFCO3FCLGM7STtLLE87SyxVO0k7O0s7SyxJLHNCOzs7a0Q7OztJO0k7SyxVOzs7SztLO007TyxROzs7Ozs7Ozs7TTs7Ozs2Qjs7O0k7STtLLFU7OztLO0ssaUI7TTtLO0k7STtLLFU7SyxPO0ssTzs7SyxPOzs7STtJLGM7STs7O0s7TTtNLEk7Ozs7Ozs7O0k7Rzs7O0k7SyxhO0s7SztLO0ssSztLLEs7STtJO0s7OztLOzs7Szs7Ozs7O0s7OztNLE07O0ssTzs7O0k7SSxZO3lCLGtCLFM7SSxxQjtxQixjO0k7SyxPO0ssVTtJOztLOzs7O00sTztNLE87Ozs7TztxQztROzs7OztPLFc7O00sTTs7SztJO0k7SyxVOzs7SztLO007TyxROzs7Ozs7Ozs7TTs7Ozs2Qjs7O0k7STtLLFU7OztLO0ssaUI7TTtLO0k7STtLLFU7SyxPO0ssTzs7SyxPOzs7STtJLGM7SSxZO0k7SztNLEs7TSxLOztNLE07Ozs7UyxJLG9EOzs7OztVLE07OztRO0s7SztNO08sb0I7TyxvQjs7Ozs7O1U7VTtXO1c7Ozs7OztXLE07Ozs7OztTO007Ozs7O1U7O2tCO1U7VztXOzs7Ozs7VyxNOzs7Ozs7UztNOzs7Ozs7O0s7TSx5QiwwQjtNLGM7TSxPO007O3FCO0s7Ozs7OztLOztHO0c7NEIseUM7O0k7O2lDOztLOztJO0c7O0k7NkIsbUIsMEI7SSxPO0c7O0k7STtlOztpRTs7O0c7O0ksTztHOztJLEksVSw2Qjs7SyxNO0ksbUIsTzs7Ozs7TSxHLDZCOzs7SSxNO0c7O0k7SSxPO0c7O0ksSSxNLHFCOztjLHNCOztLOzs7O2tCO087USxVOztRO1E7Ozs7K0I7Ozs7O08sNEI7TztRO1E7OztROzs7UTtPOzs7Tyw0QjtPO1E7UTs7Vzs7USxVO1E7TyxhO2lDO08scUI7OztPOzs7OztRLFU7Ozs7Ozs7UTs7Uzs7O1U7Vzs7O1U7Vzs7Ozs7OztZLE07OztVLEksTyxzQjs7Ozs7WSxHO2EsMEI7YSxHO2MsTTthO2E7YztjO2M7Ozs7O2EsSztjLE07OztjOzs7YTthLEk7Ozs7ZSxNOzs7YTthOzs7O1UsTTs7UyxNOzs7OztTO1U7OztTOzs7O08sNEI7TztPO1EsSSxPOztTO1M7VTtXO1c7Ozs7Ozs7UTs7OztZO2EsUTs7O1k7Ozs7Ozs7VztTLE87UztROztnQzs7NkI7OztROzs7OytCOzs7OztPO1E7Uzs7UztTOzs7UTs7Tzs7Tzs7OztROzs7UTs7O1E7Tzs7TyxvQixRO08sZ0M7UTtTOztTO1M7OztZLDhCLFE7Ozs7Ozs7YTs7Yzs7Ozs7Ozs7Ozs7YTs7WSxNO1c7UyxXO1M7Uzs7O1M7K0I7Uzs7WTs7Ozs7O1E7O087O087OztROzs7Tzs7O08sTTtlOztHOztJOztJO0c7RyxlOztJO0k7SyxJLE8sd0IsTzt1QjtLLEkscUQ7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QjttQjs7O3dCLCtCOzs7O2tCO21COzs7MkI7Ozs7bUI7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO3FCO21CLE07Ozs7bUM7Ozs7OztzQjs7bUM7Ozs7cUI7a0IsTzs7Ozs7Ozs7Ozs7Ozs7OzttQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7a0Isc0I7a0IsRzttQjttQixHO29COzs7O2tCO21COzs7bUI7OzttQjs7Ozs7Ozs7Ozs7NEI7Ozs7Ozs7Ozs7O3dCO3VDOzs7O2tCOzs7bUI7O29COzs7Ozs7d0I7dUM7Ozs7OztzQjtzQjs7bUM7Ozs7cUI7a0IsTzs7Ozs7Ozs7Ozs7OztrQjttQjtvQixTO29CLFM7b0I7Ozs7OztvQixRO29CLFE7b0I7Ozs7Ozs7Ozs7OzswQixHOzs7OztvQzs7Ozs7Ozs7Ozs7Ozs7eUI7MEI7OztrQzs7Ozs7OzZCOzs7OEIsUTs4QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDOzs2Qzs7Ozs7Ozs4Qjs7NkIsTTs0QjtpQzs7Ozs7Ozs7Ozs7MEI7OzsyQixROzJCLFU7d0Q7Ozs7Ozs7Ozs7OzhCOzsyQzs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7MEM7Ozs7Ozs7Ozs7NEI7OzBCLE07eUI7OEI7Ozs7b0IsTTs7bUI7Ozs7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCO3dCO21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7bUI7b0I7O29COzs7O3VCLGtDO3VCOzsrQjs7O3NCO29CLFU7OztvQjtxQixhOzs7c0I7Ozs7MkI7MkI7MEI7dUI7Ozs7Ozs7c0I7d0I7dUI7a0M7Ozs7cUI7cUIsTTs7K0I7O21COzs7OztvQjs7Ozs7Ozs7Ozs7O1M7Ozs7UztVLEk7Ozs7Ozs7UTtTLEk7Ozs7Ozs7O1MsRztVO1c7WSxPO1ksTzs7OztlOzs7Z0IsUTs7O2U7Ozs7K0I7Ozs7OztnQjs7NkI7Ozs7ZTs7Z0IsTztlOzs7d0I7Ozs7YztZLE87Vzs7Ozs7WTs7OztRO1MsSSxROzs7Ozs7Ozs7b0I7Ozs7Ozs7Ozs7Ozs7UTtTLFc7UyxJLDhCLEk7Ozs7O1U7OztTO1UsSTs7Ozs7O007OztHOztJOztJOzs7a0I7STtJO0ssVzs7TTtNLEksaUQ7Ozs7TyxvQixPO08sTTs7OzBDOzs7O0s7SyxPLHdDO0c7O0ksSSxPLHNCOzs7Ozs7UTs7Ozs7UztRLE87O1E7OztRLE07OztHOztJLEksTyxzQjs7OztROzs7UztRLE87O1E7O1MsUTtTOzs7OztTLE87USxPOzs7Ozs7UTs7O0c7O0ksWTs7STtHO0c7STtJOztJO0k7SyxXO0ssRywyQztrQjs7Ozs7O1UsTTs7OztTO1U7VyxzQjtXLE87VTs7Ozs7VTs7Vzs7OztXOzs7OztZLE07Ozs7OztrQiw2Qjs7OztTOztVLFE7VSxzQjtTO1MsZTtvQjs7OztLLDBCO0ssTzs7Rzs7STtJO0s7O0s7Szs7Ozs7O0s7O0c7O0k7SyxPO0ssVztlO2lCO0ksUzs7O0ssSywrQjs7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07Ozs7Ozs7UyxrQzs7Ozs7VyxvQjtZOztZLEksTSxxQjs7YTs7Ozs7O2lCOzt3Qjs7Ozs7Vzs7UyxXOztVO1c7OztXLE87VTs7OztTOztVLFE7VTs7O2EsaUMsSTs7O2M7Ozs7O2lCOzs7OztrQjs7OztzQixJOzs7Z0Q7OztzQjtxQjtxQixPOzs7b0I7a0IsUTs7OzttQixXO3NCOztvQzs7Ozs7Ozs7O2E7WTtVLFc7aUMsMkM7VSxPOzs7YTthLE87WTtVLFc7Uzs7Ozs7Ozs7SSxvQjtJLE87Rzs7STtHO0c7SSxjO0ksa0I7O0k7SSxPO0c7O0k7STs7Ozs7Szs7Ozs7OztTOztLLEksVyw0Qzs7OztNLFc7TTs7Ozs7Ozs7VztZLGM7OzthLE07OztZO2E7O2E7OEI7YSxjOzs7Ozs7O1k7YTtjLEk7Ozs7O2M7Ozs7OztjLE07Ozs7Ozs7Vyx3Qzs7O1ksRzs7O2E7O2M7K0I7a0M7Ozs7Ozs7O1c7O1ksUTtZLE87VztZLFU7WTtZLEk7Ozs7O1k7WTthLFc7YTs7a0I7Ozs7O2E7OEI7YSxRO2E7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEc7WTthO2EsVTs7O2EsTTs7Ozs7OztnQjs7O3lCOzs7OztPOzs7USxzQjtlOztNO007OztHOztJO0s7SztLOzs7Ozs7SztLLE07O0c7OztJO0s7OztNLHNCO00sUzs7O007OztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOztHOztJO0ssWTs7OztPOztRLEs7UTtRLFU7Ozs7O08sTTs7TTs7O08sc0I7TyxnQjs7OztLOzs7TSxzQjtNLE87TTs7TSxzQjtNLFc7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7OztVOztVLHNCO1MsYzs7Ozs7UTs7Ozs7WTtZLG9CO1ksYztXO1MsTzs7Ozs7WTtZO1c7UyxPO1E7OztROzs7O1M7UTs7OztJLEc7SyxNOzs7Ozs7Ozs7OztJOztLOzs7SSxvQjtJOzs7UTs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7O0s7OztJLG9CO0k7OztROzs7Ozs7O0k7STtHOztJLFc7SSxHLDRDO0ksSSxnQzs7Szs7TSxRO007OztTLG1CLFE7Ozs7OztZOzs7OzthLHNCO1k7WSxPOzs7O1M7UTtLO0ssMEI7SyxPOztJLG9CO0ksTztHOztJO0ksb0I7SSxPO0c7O0k7SztLO0s7Ozs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7O1Esb0IsUTs7Ozs7O2E7Ozs7Ozs7Yzs7YTtZO1MsSyx5Qzs7UTs7STtHOztJOzs7Ozs7Ozs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsTzs7O08sTzs7O08sTzs7Ozs7c0IsYztxQixZOzZCLHdCO0c7O0k7Rzs7SSxXO0ksTztHOztJOztPOztPOztPOztPOztPO2U7O0c7OztJOztPOztPOztPOztPOztPO2U7O0c7O0k7SSxPO0c7O0ksdUI7Rzs7STtJOzs7bUM7O21DOzttQzs7bUM7O21DOzs7SztLOzs7OzRCOzs7RztHOztJO0s7SyxZO0ssVzs7Szs7TTs7Tzs7Tzs7Ozs7OztJO0c7O0ksaUI7OztHOztJLFc7SSxPO0c7eUIsK0M7O0k7STtJLFc7d0I7SSxXLFc7SSxPLFc7Rzs7STtLLE87STtJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtxQix1QjtJO0ssYTtLLG9CO0ssVTs7Szs7TTtNO007SztLO0k7STtJO0ssWTs7O00sTzs7eUI7SztNLE87TSxPO0ssTzs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVztHO0c7c0IseUI7Ozt5QixzQjtxQjtJLG1CO0c7O0ksSSxlLHlDOzs7NEI7OztHOzZCLE8seUM7RyxVOztJO0k7Rzs7STtJO0k7RztHLEksdUM7O0k7SyxXO0ssTztJO0k7Ozs7O1M7O0ksTztHOztJOzs7TTs7TyxPO2M7OztLO00sVztNO087UTtRLE07Ozs7O08sSSxlOztvQjtPOzs7O1M7O1U7OztTO1M7MEI7Uzs7O1MsRyxpQztTOztVOzs7VTs7O1M7UztVOzs7YTthO1k7UztTOztzQjtTOzs7UyxTO1M7VTs7O1U7O3NCO1M7Ozs7SSxXO0c7O0ksVzs7Tzs7O0s7OztTO1U7Z0M7OztTO1U7Z0M7OztTO1U7Z0M7OztTO1U7Z0M7OztTO1U7Z0M7Ozs7OzRCLE0sMEM7O007Ozs7Ozs7Ozs7bUM7STtHOzs7SztLO0s7STs7Rzs7STtJLE87RztHLG1COztJO0k7NEI7SyxVLGdDO007SyxJOztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7RzttRDtHOztJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2MsNEI7Ozs7Ozs7c0M7Ozs7OztPOzs7UztVO1c7VyxNOzs7OztVLEksZTsyQjs7Ozs7Ozs7WTs7O2E7OztZO1k7WTs7eUI7Ozs7Ozs7O1E7Ozs7UTtTLFc7UyxLO1U7Ozs7Tzs7TyxvQztPOzs7O0k7Rzs7STtJLE87Rzs7SSxPO0c7O0k7SSxvQjtJO0ssUTtLLE87SSxPO0c7OztJLHNCLGlCLGtCOztHOztJLFksTzs7O3NCLE8sZ0Q7SyxPO0k7SSxPOztHLEksb0I7O0k7STtxQzs7O007Ozs7Rzs7SSxZLE87O0ksTzs7O0ksOEI7eUM7O0ksTztHO0c7O0k7Ozs7OztNLEc7TSxJOzs7SyxPOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxzQjtHOztJO0ssTzs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1MsSztVLEk7Ozs7O1E7USxPOzs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztRO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7O1c7c0IsTzs7VyxPOztVO08sTzs7Ozs7Ozs7Ozs7Ozs7OztVLEs7VyxJOzs7Ozs7VTtXO1ksTzs7Ozs7Ozs7Ozs7cUI7OztRLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztXO3NCLE87O1csTzs7VTs7Ozs7OztXO1csTztVO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7O08sTzs7Ozs7Ozs7O087Ozs4QjtRLE87TyxPOzs7OztJLFksTzs7OztlO2U7OztLLE87OztJLE87OztJO0ssTzs7Ozs7Ozs7O1M7cUIsTzs7UyxPO1E7SyxPOzs7O2dCLE87O0ksTzs7O0k7OztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7O0ksVztJLE87Rzs7SSxRLE07OztHOztJO0k7SztNLFE7OztNLFc7TSxPOzs7OztPOzs7USxRO1EsTzs7O1c7eUM7UyxHOzs7OztRO1MsVztTLEc7Ozs7OztZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1ksc0I7WSxLO1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7O0c7O0k7O087O1EsUztRLEk7OztRLEcseUM7OztPOztPLGtCO087O087OztROzs7Tzs7Rzs7STtLLFk7SyxPO0ksYztHOztJO0k7Ozs7O3dCOzs7Szs7O1M7O1U7Ozs7O1M7VTtXLEk7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1E7TSxPOzs7O0k7Rzs7STtJO0k7O0ssMkIsZ0M7SSxPO0c7O0ksWTtJLG9CO0ksTztHOztJOzswQixXOzt3Qzs7TyxvQztPOztHOztJLCtCO3VCO0k7Szs7OztLLFE7Szs7MkM7O2MsTTs7Ozs7VTs7VyxvQjtXLEcsa0Q7O1U7O1csSTtXLE87VyxPOzs7Vzs7OzthOzs7OzRCLDRDO2M7OztpQjtpQixPO2dCO2MsTzthOzs7YztlO2tDLE8sK0I7ZSxPO2M7ZTtnQixPO3VCOzs7Ozs7Ozs7Ozs7VTs7UztNOztJOzs7Ozs7Ozs7Ozs7OztNO087USxPOzhCOzBCOzs7OztLLEksSTs7Ozs7O0s7O0c7RztJO0k7STtJO0k7STs7STs7OztHOztJOzs7Ozs7OztTLE87Ozs7OztJO0c7O0ksVztJOzs7Szs7OztTO1MsTztRO00sTztLOzs7O0k7Rzs7STs7TTtPLE87TyxPO08sTztjOztNO08sTztjO0s7SyxpQzs7Rzs7STtLO00sTztNLE87SztLOztPO3dCO007OztHOztJLEksVywwQzs7OztLLEksVyw4Qzs7Ozs7Ozs7Ozs7Ozs7WSx1Qiw0Qjs7Ozs7O2lCO2lCLE87Z0I7YSxLO2EsVzsrQjs7Ozs7O2tCOztNLEc7O007OztHO2tDLDJCLFM7O0ksSSxRLDZDOztLO0ssVztJO2U7O0c7RyxJLDBCLGtCOztJO0ssVzs7O0c7O0ksdUIsTztJLE87Rzs7SSxJLEssMkI7O0c7O0k7Ozs7MEI7Ozs7UTs7STtHOztJOzs7O0ssa0IsUTs7TSxnQzs7O3dCOzs7Ozs7SztJO0ksTztHOztJO0k7SyxJLE8sNkIsSztLLEc7TTtLLEksZ0M7bUM7OztROzs7UTs7OztROztTLHNCO1EsTzs7UTs7OztTO1Msc0I7USxPOzs7USxHO1M7USxHOzs7O1M7O1UsTztVLHNCO1MsTzs7O2tCOzs7WTs7OzBCOztXO1EsTzs7O1EsUztTOzs7Ozs7O1EsTzs7UTs7O1EsRztTO1EsWTtlOzs7OztTO1UsMEI7VSxPOzs7USwwQjtRLE87O1E7Ozs7OzRCLG9CO1E7Ozs7Ozs7O1k7WTtXO1EsTzs7O0c7O0k7STtHOztJOzs7OztHOztJO0k7STtHOztJO0k7Rzs7STtJLE87RztHOztJLEksTywyQixLO0k7TTtXO0s7TTs7OEI7TTtLOzs7Szs7OztTO1U7VTs7OEI7O1M7Ozs7O1UsMEI7OztTLEc7VSxXOzs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7O1M7OzZCOztTOzs7VTs7O1U7O1UsMkI7UztTOzs7Uzs7UyxPOztTOztTLG9CLFE7Ozs7OztjOzJCO2E7b0I7OztTOzs7YSxrQixROzZEO2E7WTtVLFU7VSxPO1UsYztVOzs7VTtXO1k7OztZO1k7WTs0Qjt1QztXO1c7Ozs7bUM7d0I7Vzs7O1M7Ozs7O1U7O2EsZ0MsUTsyQzs7Ozs7OztlOzs7Ozs7O2U7OzthOztVLFc7Uzs7OztpQzt3QjtTOztTOzs7d0I7Uzs7VSxRO1MsZ0I7O1M7UztVLHNCO1UsSztVO1M7O1M7O1M7Ozs7O2E7OztjO2MsTzthLFc7WTtVLE87Uzs7SztJO0ksRztLOztNLHNCO2tCOztJO0s7SztLOztJO0c7O0ksb0I7SSxPO0c7O0k7SztNLFU7Ozs7OztTOzs7O1UsUTtTLHlDO1M7UTtNLGlCOzs7UztTLE87UTtNLGdCO007OztLOzs7Z0IsTztJOzs7O0ssMEI7SztLOzs7SSxZO0ksTTtHOztJO0s7TSxPO007Ozs7Rzs7STtLOzs7OztNO007OztLOzs7Ozs7Ozs7Ozs7NkI7O0k7OztJO0ksTztHO3NDLDBCOztJO0k7Rzs4QiwwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJLGtCO0k7Rzs7STtJO0c7O0k7O0s7TSxPO00sTztRLG9DO0s7SztJO0ksTztHOztJOztLLFc7SyxPO21COztJO0ksYTtJLE87Rzs7STs7SyxPOzs7cUIsd0I7SSxPO0c7O0kscUM7O0ksZTtHOztJLFc7d0IsNEM7STtnQjtJLG9COztJLEksOEI7O0k7Rzs7SSxJO0ksVztHOztJO0k7SSxPO0c7O0k7STtJLE87Rzs7STtJO0ksSSxpQzs7Szs7TSxPOzs7Uzs7Ozs7O1UsVztVLGM7O1M7UTtLOztJO0k7SSxXO0k7OztzQzs7OztPOztRLFE7UTs7Ozs7OztVLEc7OztjOzs7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7OzRDLHdCO0s7Ozs7Ozs7Uzs7UTtLOzs7SyxrQjs7SztJOzs7Ozs7Ozs7Ozs7Ozs7OzsyQiwyQjtjOzs7SSxJOztLO00sTztNLFM7SyxzQjs7O00sVztNOzs7OztTO1UsTztpQjs7Ozs7Ozs7Ozs7Ozs7SztNLFU7OztNOztLO0k7SSxXOztLOzs7Ozs7SztJO0k7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Yzs7O0s7Ozs7O007O2M7Ozs7STs7Ozs7O2E7Ozs7Rzs7STtJLE87Rzs7STtJLE87Rzs7SSxtQjtJLDJCOztJO0s7Szs7STtHOztJO0k7SyxVO0s7STtJO0ksVztJO0k7STs7Szt5RTtLO0k7STtLLGM7SyxPO0s7OztLO0k7Ozs7Ozs7STtHOztJO0ksTztHOztJO0k7SyxPO0s7OztJLE87Ozs7OztHOztJO0ssTztLO0s7Szs7OzsrQjs7Ozs7STtHOztJO0ksTztHOztJOzs7SyxRO0ssVTtJOzs7O007OztJOzs7Ozs7O1E7OztTLE07UztTLE87UTs7VTthO1MsVztTLEs7VSxPOzs7OztROztTLFE7UyxLO1EsRztTOzs7UTtTLE87a0I7OEIsdUM7UTs7OztpQyxrQixzQjtRLE87OztROzs7Ozs7Ozs7UTs7OztTLE07UztTLE87UTs7VTthOzs7OztTO1M7Ozs7O1E7O1MsUTtTOzs7NkM7O1MsTztrQjs7Uzs7O1k7WTtXO1MsUztTOzs7O1k7WTtXO1MsVztTLGE7OztZO1k7Ozs7Ozs7VztTLFM7O1M7OztZLEssc0M7WTthLFM7O2EsVzthOzs7YTtZO1k7O1MsUztRLG9COzs7OztTLDBCOzs7USxHO1MsVzs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssTztLLE87Szs7Ozs7O0k7Rzs7STtLO0s7TztVOztJO0c7RyxxQjs7STtJO0k7STtJLFU7STtJLFc7STtJLG9CLG1CO0k7O0s7SztLLE87SyxPO0kscUI7Rzs7STtJLE87Rzs7SSxhO0k7STtJO0ksVTtJO0ksVztJO0ksb0IsbUI7STtLLE87SyxPO2M7O0s7O00sTztNLGU7SztJO0ksVztJOzs7Ozs7OztTOztRO2E7STtLO0s7SyxPO0ssTztJLGlCO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O2lCLGM7a0IsVztrQixPOztpQjtnQjtnQixPOzs4Qjs7Rzs7SSxXO0ksTztHOztJO0k7O3lCOztPLG1CO087Ozs7OztTOztVLFE7O3FCOztTLEksc0IsVzs7Ozt1QyxTO087OztRO1E7O2dDO087bUM7Ozs7STsyQixXOztjOztlO21DO2UsTztjO2MsTzthOztHOztJO0ssTztLLGE7O0s7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOzs7O1c7OztjOzs4Qzs7YzthO1csVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztNO007TyxRO087O08sa0I7Tzs7OztPO2tEOztPO007TTtPLE07Tzs7OztZLE87VztNLFc7SztLO00sTTtNO007OztVO1M7TSxROzs7SztLO0k7STtJLE87Rzs7STs7Ozs7SSxXO0c7O0ksSSx3QjtJLFc7Rzs7SSxZLHNCOzs7Szs7O007TSxPO0ssTzs7STs7SztLLE87SSxPOzs7SSxTOztzQixrRDtJOztLLE87SyxzQjtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7OztLLG1CLDJCO0ssVztLLFc7O0k7SztPOzs7Ozs7Ozs7STtJO0k7O0s7O00sb0I7O0ssTzs7STtJLE8sVztHOztJLE87Rzs7STtJLE87Rzs7STtJO0k7SztLLE87SztJO0s7TSxZO00sTztLO0s7O0ksTztHOztJO0ssTTtLLE07Ozs7Ozs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7OztHOzs7STtLLFk7Szs7STtLLE87VyxzQztLO0s7SSxPOzs7STs7SyxPOzs7SSxPOzs7Ozs7Ozs7RztJLE87SSxpQjs7O0ksRywrQjtJO0k7OztJOztLLE87OztJLE87Ozs7Ozs7Ozs7SSxZOztnQjs7SSwwQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSyxrQyw4QiwrQyxVO0k7OztJOzt5Qjs7OzRDOzs7STtHOzs7SyxPOztROztvQjs7SztJO0ksUzs7SSxnQjtHOztJOzhCO0c7Ozs7bUI7Ozs7TTs7O007Ozs7O0c7STs7NEIsTyx5QztJLGlCOztJLEksTTs7OztjO0s7TSxPOzs7O00sTztNLE87SyxPOzs7STtHOztJLGtDO0k7Z0M7STs7MkIsTywwQzs7SSxPO0c7RyxpQjs7SSxZOzs7SyxPOztJO0c7O0ksVztJLEksc0MsSTs7Ozs7O0k7STtHOztJLFksTzs7SSxPOzs7O0s7Ozs7Ozs7Ozs7UztVOzttQixPO2tCOzs7O1M7VTs7bUIsTztrQjs7UTs7OztTLFc7Ozt5QixXOztXOzs7a0M7WSxPO1c7bUI7Ozs7Ozs7OztnRDs7Ozs7a0I7aUM7Ozs7O2U7OztZOzthO2EsTzs7ZTs7VzttQjs7O1csa0IsTztXO21COzs7Ozs7Ozs7OztTLFc7OztTO2lCOzs7USxXOzs7Ozs7O2dCOzs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7a0M7Ozs7dUI7Ozs7O1csVzs7O1csVzs7O1csVzs7O1c7bUI7Ozs7Ozs7Ozs7USxXOzs7UTs7Ozs7O1k7b0I7OztRLDBCOztJO0ksTztHOztJLFU7O0ksTztHOztJOzs7SyxJLDZCOzs7O08sTzs7OztJO0c7O0k7OztxRCxTO0k7Ozs7YztjO2U7O29DLHNDOztlO2M7ZSxNOztjOztlO2dCOzs7Z0I7O2lCOztvQjs7O3FCLE87Ozs7O3FDLGlCOztvQjs7NEI7OztlO2dCLE87Z0IsTzs7Z0I7O2lCLE07O21COzs7Ozs7Ozs7O2dEO2U7Z0IsTztnQixzQjs7Ozs7Ozs7ZTtnQjtnQjt1QztlOzs7Ozs7Ozs7a0I7O2dCO2dCOztlOzs7Ozs7OztlLE07O2E7Rzs7RyxzRTs7Rzs7STtLOzs7Tzs7Rzs7STtLOzs7Tzs7O0k7STtHOztJO0k7O007OztPLGE7TyxPO08sTztPO1M7O1csVzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7Ryw4Qzs7O0ksWTs7STs7O0k7OztJLG1COztJLFc7Rzs7STtJLFc7Rzs7STs7OztjO2lDLHNDO2M7ZTs7c0M7ZTs7b0Msc0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztjO2U7Ozs7Ozs7OztjOztlLE87Yzs7MEI7YyxvQjs7YztlOzs7Ozs7Ozs7YyxPOzs7Ozs7OzthO0c7O0k7Ozs7YztjO2M7ZSxNOztlOztrQjs7ZSxPOzs7Ozs7Ozs7OztjLGlCO2MsTzs7Ozs7Ozs7OzthO0c7O0csOEI7RyxpQzs7STtHOztJOzs2QiwrQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtHOztJO0ssTzs7O08sTzs7Tzs7O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7VTtPLE87O087OztRLG9CLE8seUM7NEIsTyx5QztPLE87O087Ozs7O1Esb0IsTyx5Qzs7d0IsTyw4QztPLE87OztPOzs7OztRLG9CLE8seUM7OztXLE87VTtPLE87Ozs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O0ksWTs7STs7TSxPO0s7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0ksSSx1Qiw4Qjs7OzRCOzs7Rzs7SSxPO0c7O0k7OzswQjs7Ozs7Ozs7VTs7Ozs7OztVO1csTztXLFU7VTs7Ozs7Ozs7STtHOztJO0k7Z0I7Ozs7O1E7Ozs7UyxxQixPO1MsRzs7Ozs7Ozs7Ozs7Uzs7VSxrQjtVLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UTs7OztrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCOzs7O1E7Ozs2Qjs7O1E7OztROzs7Rzs7STtxQjtrQjs7STtHOzs7STs7Tzs7d0I7OztPO2U7O0c7O0ksUzs7O0s7Ozs7Ozs7TTs7O007Szs7Ozs7STtHOztJO0k7OztRLGtCLFE7b0I7O1EsSSxnQjs7OztVLE07Ozs7OztROztTLFE7UyxVOzs7UyxzQjtTLFk7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztRLEk7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7O1Msc0I7Uzs7O2dCOztROzs7OztlLE07UTs7OztPLGlCOzs7TyxpQjs7OztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTtJLEksZ0I7Ozs0Qjs7O2lDO0k7SyxPO0ssVTtLLE87SyxTO0ssUTtJLEk7Ozs0Qjs7O0ksZ0I7STs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksaUI7O0k7Szs7O1E7Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7K0I7Ozs7OztnQjs7O0ksVztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRO1MsUTs7Ozs7O1E7Ozs7RztxQyx1Qzs7Ozs7OztRO1MsWTtxQixNO1Msb0I7Uzs7Ozs7VSxNOzs7O1E7O1M7O1k7Ozs7Ozs7Ozs7O3VDOzs7O2EsTTs7WTs7USxPLFc7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7OztROzs7UztTO1MsTTtTO1MsTTtRLE87O0c7O0k7STtLLEksYyx1Qzs7Ozt1QjtNLDZCO00sRywrQjtNLEk7O0c7O0k7OztJO0s7TSxtQzs7Ozs7Ozs7SSxPO0c7O0k7SztLLFE7Ozs7Ozs7O087USxRO1E7VTs7Ozs7Ozs7Rzs7SSxTOzs7Ozs7Ozs7Ozs7Ozs7O1MsRzs7Ozs7Ozs7Ozs7O087OztZO087Ozs7O087OztpQjs7d0I7O0c7OztLLEksNkIsYTs7OzRCOzs7STs7STtHOztJO0s7TTtNO007OztTLG9CO29COztROzs7Uzs7Ozs7Ozs7O2lCLG1CO2lCOztrQjtrQixtQjs0Qjs7Z0I7YSxPOzs7MkI7Ozs7UztROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7O1M7UyxPO1E7TSxPO00sMEIsTyxrQztNLDhCLFc7O0s7Ozs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxJLE8sMkI7Ozs7OzttQjs7SyxPO0k7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7O2E7YyxNO2MsTTthLE87WTtnQjs7O1M7O1U7Z0I7OztTOzs7VTtnQjs7O1M7Ozs7VTtnQjs7O1M7Ozs7VTtnQjs7SztLOztHOztJLE87Rzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SSxJOzs7OztLLE07O0ksSTs7Ozs7O1M7TyxHOzs7USxHO1MsRzs7Ozs7OztVOzs7YSxNOzs7Ozs7WSxNOztXLEs7VyxJOzs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7STs7Z0I7aUU7Szs7STtHO3VDLDRCOztJO0c7O3FCLE8seUM7STs7Tzs7OztROzs0QixPLHlDO1csaUI7Vzs7WTtZO1ksTztXLE87Ozs7TyxPOztPOzs7O1EsTztRLE87TyxPOztPOzs7UTtRLE87TyxPOztPLG9CO08sTzs7Rzs7cUIsTyx5QztJLDRCO0k7O087OztPOztPOztRO1E7USxPO08sTzs7Tzs7UTtRO1EsTztPLE87O0c7O3FCLE8seUM7SSxVOztJO0s7O0k7SyxPO0ssTztJLE87Rzs7STs0QixpQixpQjtJO3dCLE8seUM7SztNOztTOztTOztTO2lCOztLOztROztROztROztROzs7UTs7Ozs0QixPLHlDO1E7O1c7Ozs7WTs7ZTs7Ozs7VyxPOztXOzs7O1ksTztZLE87VyxPOztXOzs7WTtZLE87VyxPOzs7USxzQjtRLE87OztROztTLFU7UTtrQjtrQjs7O0ksTztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzJCLG9CO0ksTztHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7Rzs7STs7Ozs7O0k7O3NCOztNOzs7cUI7Szs7O00sTztLLEcscUI7TTtLLFc7Szs7Ozs7O007TyxNO08sTTtNLEk7Ozs7Ozs7OztpQztLOztNO007Ozs7Ozs7Rzs7STtLLFE7SyxRO0s7Ozs7Ozs7UyxrQjtVO1csVTs7O3FCO1U7O1k7O1csTTtVO1csVTs7O1U7Ozs7OztXOzs7ZTtlO2M7WSxPO1ksVTs7O1c7WTthLE87YSxPO1k7Ozs7Ozs7Ozs7Ozs7d0I7O1U7Ozs7Ozs7UyxrQjtVO1csUztXLFM7VTs7WTs7VyxNO1U7VyxROzs7Ozs7O1cseUIsVTs7Ozs7Ozs7Ozs7OztXOzs7ZSxrQixROytEO2U7YztZLFU7Vzs7OztXOztZOzthOzs7Ozs7YyxVO2MsVTs7Ozs7Ozs7Ozs7Z0IsVzttQjtpQjtrQixRO2tCLFE7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7O2lCOzs7a0I7a0I7Ozs7Ozs7Ozs7OztjOztnQjs7O2lCO2lCOzs7Ozs7Ozs7Ozs7OztZLEk7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7STs7TTtPLE87TyxPO007OztNOzs7Ozs7Szs7STtHOztJO0k7Ozs7Ozs7OzhCOzs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7O087UTtTOztZLFc7WSxPO1c7O1E7cUI7O087OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLE07Ozs7Ozs7Ozs7Ozs7Ozs7OztPO1E7Uzs7WSxXO1ksTztXOztRO3FCOzs7Ozs7Ozs7Ozs7Vzs7OztZOzs7YSxPO1ksRyxxQjs7WSxXO1k7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQjs7OztJO0ssYzs7Ozs7Ozs7O0ksZ0I7STs7Ozs7O0ksb0I7STtLOzs7SyxPOzs7SztLLG1CLGdEO0s7TSxROzs7TSxVOzs7OztNLEksc0I7OztPLFc7TyxVOzs7Ozs7Z0I7SztNLFU7Ozs7O00sVTs7Ozs7TTtLO007TTtPLEksb0I7Ozs7OztLO0k7SSxPO0c7O0k7O0s7O0k7SyxNO0ssTTtLO0s7SSxJOzs7OztLOztJOzs7O0ksc0I7O3lCO0k7Rzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SyxPO0k7SSxPOzs7STs7SztLLE87STtJOztHOztJLHlCLE87SSxPOzs7O0ksTzs7NkMsUzs7O0ksTzs7O0ksd0I7Rzs7SSx3QjtHOzs7STs7OzhCLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTztPLE87OzRCLE87OzZCLE87Ozs7OztXO1csTztVO08sTzs7Ozs7O1c7VyxPO1U7TyxPOzs7TyxxQjtlOzs7c0Msc0M7OztJLE87OztJO0ssa0IsTztLLE87OztJLG9CO0ksTzs7O0k7O0s7O007OztTO1MsVztTLE87O0ssTzs7O0ksb0I7SSxPOzs7Ozs7Ozs7SztLO0ssTztJO0k7STtJLFc7STs7SztLLE87STtJLE87OztJLHFCLE07SSxPOzs7O3dCLGtCLE8sNEI7STtJLFU7SSxPOzs7O0ksTzs7OztJLHNCOztJO0ksVTtJLE87OztJO0k7STs7SywwQjtLOzt1QixPOztRO2dDLE87OztJO3FDOzs7Tzs7NEIsTzs7Tzs7TyxxQixNO08sTzs7Tzs7O1EsTTtPOzs7O1c7VyxPO1U7TyxPOztPLHNCLE07TyxPOzs7Ozs7VztXLE87VTtPLE87O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7Rzs7OztLOzs7d0IsTzs7USw4QixNO1E7USxPOztRLGdCLE07USxPO2dCOztJO0k7STtxQzs7O087O087OztPO08sTzs7Tyx5QixNO08sTzs7O087Ozs7VyxrQixNO1csTztVO08sTzs7O087TyxVO08sTzs7O087TyxVO08sTzs7TywwQixNO08sTzs7Tyx3QixNO08sTzs7Tyx3QixNO08sTzs7Ozs7OztXOzhCOztXLE87VTtPO08sVTtPLE87O2dDLE87OztPO08sTzs7TywwQixNO08sTzs7O087TztPLFU7TyxPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sVTtPLE87O087O087O2dDLE87Ozs7OztXO1csTztVO08sTzs7O087TyxPOzs7TztPLE87O2dDLE87O2dDLE87OzZCLE87O2tDLE87OztPO08sVTtPO08sTzs7Tzs7O087TyxPOzs7Ozt3QixrQixPLDRCO0ksTzs7OztJLE87Ozs7STtJLFU7SSxPOzs7O0k7Ozs0QixPOzs7TyxPOzsrQixPOzs2QixPOzs4QixPOzs0QixPOzs4QixPOztPLDBCLE07TyxPOzs4QixPOzs4QixPOzs2QixPOzs7TyxxQjs7TywwQixNO08sTzs7TywwQixNO08sTztlOzs7O0ksd0I7Rzs7SSxZOztJLE87Ozs7STs7O087OzZCLE87OztPO08sTzs7O087Ozs7VztXLE87VTtPLE87O2dDLE87ZTs7OztJOzs0QixPOztPOztPOzs4QixPOztPO2U7Ozs7O0ksTzs7OztJO0ksTzs7O0ksOEI7Ozs7Ozs7O1c7VyxPO1U7Tzs7OztXO1csTztVO08sTzs7O087TyxPOztpQyxPOzs7TztPLE87Ozs7O0k7OztPOzs2QixPOzs7TztPLE87OztPO087TyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7SSxPOzs7O0k7OztPLHNCLE07TyxPOzsrQixPOzs7Tzs7OztXO1csTztVO087TyxPOzs7Tzs7OztXLGtCLE07VyxPO1U7TyxPOzs7Ozs7O087Ozs7VztXLE87VTtPO08sTzs7O087TyxVO08sTzs7O087TyxPOzs7OztJOzs7TywwQixNO08sTzs7Z0MsTzs7O087TyxPOzs7TztPLE87Ozs7O0k7SSxVO0ksTzs7OztJOzs2QixPOztrQyxPOztrQyxPOzs7TztPLE87ZTs7Ozs7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7TywyQixNO08sTzs7TywyQixNO08sTzs7TywyQixNO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzt3QyxPOzs7OztJO0ksVTtJLE87Ozs7STtLLHVCLE07SyxPOzs7SSxPOzs7O0k7O0ssTzs7O0ksTzs7O0k7O0ssTzs7O0ksTzs7OztJOzs0QixPOzsyQjs7NkI7OztPO08sTzs7NkIsTztlOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7STtJLE87OzRCLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O2tCLFM7O0ksZ0MsTztJLFc7OztJOzs7O0ssTztLLE87SSxXOzs7STs7OztLLE87SyxPO0ksVzs7O0k7Ozs7O0ssTzs7Ozs7OztLLE87SSxvQjtJLFc7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SyxXO0k7Rzs7SSxjO0k7RzswQyxTOztJO0ksVztHOztJLHdCO0c7O0ksd0I7Rzs7STs7OztLLFk7STs7Ozs7eUI7OztPOzs7USxROzs7Ozs7NkM7OztPOzs7USxVOzs7Ozs7OEM7OzsrQzs7OzhDOzs7Tzs7USxPO3lCOzs7NkM7Ozs4Qzs7O087O1EsTztRLHNCOzBCOzs7Tzs7USxPO1Esc0I7MEI7Ozs7O3dDOzs7O0k7OztJLGU7STtHOztJLGM7STtHOztJO0ssa0IsTztLLFc7OztJLG9CO0ksVzs7O0k7O0s7O007O1M7VTtVO1UsTztVLFM7Uzs7SyxXOzs7SSxvQjtJLFc7OztJOztLLE87SyxPO0ksb0I7STtLLFk7SyxXO0s7SyxPO0ssZTtLO0ssTztJLG9CO0ksaUI7STs7Ozs7Ozs7Ozs7Rzs7SSwwQyxPO0kscUI7OztJLGlCLE87SSxvQjtJO0ssZTtLO0ssTztLLHFCO0k7Rzs7SSx3QjtJO0c7O0k7O0s7OztNLE87TSxPOzs7O0k7Rzs7SSxJLFUsZ0M7STtLOzs7d0IsVzs7O1Msc0I7O0s7O0ksb0I7SSxJLFkseUM7Ozs7Ozs7Ozs7eUI7OztTOztVLE87eUI7OztTOzs7Ozs7O2E7YSxlO1k7VSxRO1UsTzs7eUI7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjt5Qjs7O1M7O1UsTzt5Qjs7OzRDOzs7Uzs7VSxPO3FCOzs7NkM7OztTOzs7O1UsTzswQjs7Ozs7STtHOzs7Szs7d0IsVzs7UTs7O1MsTztTLE87USxXOztRLGdCLE87USxXO2dCOztJO0k7SSxvQjtJO0ssWTtLLFU7Szs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7OztTLE87UyxVOzs7O1E7OztTLE87UyxPO1Msc0I7UyxPO3dCOzs7UTs7OztTLE87UyxPO3dCOzs7UTs7O1MsTztTLE87d0I7OztROztTLE87d0I7OztROzs7O1MsTztpQzs7O1E7OztTLE87MkI7OztROzs7Ozs7WTtpRDs7WSwyQjtXO1MsVztTLE87Ozs7O1k7Ozs7Ozs7eUI7OztROzs7OztTLE87eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7UTs7OztTLE87UyxPO3lCOzs7Ozs7Ozs2Qzs7O1E7OztTLE87UyxzQjsrQjs7O1E7Ozs7OztTLE87d0M7OztROzs7UyxPO3lCOzs7MEM7OzswQzs7Ozs7O3lCOzs7Ozt5Qjs7O1E7Ozs7OztTLE87UyxPO1MsTzs7O1k7Ozs7Ozs7OztROzs7UyxPO3lCOzs7Ozs7O0k7Rzs7SSxpQixPO0ksb0I7SSxrQjtJO0c7O0ksaUIsTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJLEksVSxnQzs7O29DOztPOzs7USxROzs7Ozs7OztpQjs7OztxQzs7c0M7O3NDOztzQzs7Tzs7USxPO3VCOzs7c0M7O3NDOztzQzs7OztzQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OztJO0c7O0ksd0I7Rzs7SSxZOztJLGtCOzs7SSxJLFUsZ0M7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1Esc0I7USxPO3VCOzs7d0M7Ozs7STtHOztJOzt3QixXOzswQixXO2U7Ozs7SSxnQyxPO0k7Rzs7STs7O0ssTTs7O0ksVztHOztJLDhCOzs7Tzs7Ozs7VztXLGM7VTtRLE87OztXO1csa0I7VTtRLE87Tzs7TyxrQyxNO08sVzs7TyxnQyxNO087O087Ozs7USxNO08sVzs7OztJLEksVSxnQzs7Ozs7cUM7O087OztRLE07Ozs7Tzs7OztRLE07USxNO3VCOzs7OztROzs7UyxNO1MsVTttQjs7UTs7UyxNO21COzs7Ozs7O3VCOztJO0c7O0ksYztJO0c7O0ksSSxTLGdDOzs7Tzs7OztRLE07aUM7OzsyQzs7O087Ozs7OztRLE07USxNO1Esb0I7USxNOzZCOzs7Tzs7O1EsTTtRLE07USxvQjtRLE07c0I7OztPOzs7OztRLFU7OztRLE07USxNO1Esb0I7Ozs7O1c7Ozs7Tzs7Ozs7O1EsTTtRLE07c0I7OztPOzs7USxNO3NCOztJO0c7O0ksSSxZLGdDOzs7Tzs7OztRLE07b0M7Ozs0Qzs7O087Ozs7USxNO2dDOzs7Tzs7O1EsTTt5Qjs7STtHOztJO0ssWTtLO0ssTTtLLGM7STtHOztJOzs7cUM7Ozs7Ozs7O3lDOzs7Ozs7Ozs7OEM7OztPOzs7O1EsTTsyQjs7OztJO0c7O0ksSSxXLGdDOzs7Ozs7Uzs7OztVLE07aUM7OztTOztVLE07MEI7OztTOzs7O1UsTTtxQzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTs7K0I7Ozs7OzswQjs7O1M7Ozs7VSxNOztnQjs7Ozs7OzhCOzs7MEM7Ozs7O0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7STs7Szs7OztNLE07OEI7O3NDO0k7Rzs7STs7Ozs7MkI7O3dDO0k7Rzs7STs7SyxXOzs7SSxnQjs7O0k7Ozs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7USxNO3NCOzs7cUM7OztJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7Rzs7STtLLFM7SyxVO0k7Rzt3QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RyxJLHNCOztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLLEk7d0IsaUM7SztNLEs7Ozs7O0s7Ozs7TSxJOzs7O0s7TTs7Ozs7OztTLEc7VTtVOztTOzs7Ozs7OztTO1M7Uzs7O1MsRztVO1U7O1M7O1U7VTtVOzs7O1U7VTtVO1U7VTs7OztVO1U7VTtVO1U7O1M7UztpQjs7TSxHO087Tzs7TTs7Ozs7OztPOzs7TTtNOztPLE87TTtNO007TSxRO007TTtNOztLO0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLE8sbUM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3lCLFc7OzJCLFc7O3lCLFc7OztPLHFCOzswQixXOzsyQixXOzsyQixXOzsyQixXOztHO0c7MEIsTywyQjs7SSxTOztLO0ssRzs7O00sSztPLE07TSxZO007TztPLEc7USxJOzs7Ozs7OztLO0k7STtLO0ssMEIsTywyQjtJLE87Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7O0k7Ozs7O1M7Ozs7aUI7OztTO1U7WTtVLE07VSxNOzs7ZTs7VSxNO1UsTTtVLE07O1UsTTs7Ozs7Ozs7O3dCOzs7Ozt3Qjs7Ozs7d0I7Ozs7O3dCOzs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTLE87UTtLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ksbUIsTyw4QjtHOztJO29CLGU7SSxPO0c7OztLO0s7TSxvQjs7O0s7STtJLE87Rzs7SSxVO0ksTztHOztJO0k7SztLLE87STs7SztLO0ssTztJOztLOzs7Ozs7Uzs7VSxZO1Usb0I7UztVO1csTztXOzs7Ozs7Ozs7Uzs7Ozs7VTs7OztVOzs7Ozs7NEI7Ozs7Uzs7O1U7VSxNO1M7Ozs7TTs7O0s7SyxPO0k7O0ssYztLO0ssTztJOztLLGtCOzs7Ozs7OztZO1c7UTtTOzJDLHFCOzs7O1E7OztROztTO1Msb0I7UTs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0k7O3VCLE87O3VCLE87O3VCLE87O3VCLE87O3VCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STtvQzs7O0k7STs7O087TyxPOztPOztRLG9CO087TyxPO2U7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVO1c7O0k7Rzs7STs7MEIsVzs7dUM7O08sa0M7Tzs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7VztXLE87VTtvQjs7Ozs7OztXO1csTztVO29COzs7d0M7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7OztJLFc7OztJO0ssTTtLLFE7Szs7SyxPO0ssTztLO0ssVzs7O0s7Ozs7TSxPO00sTztLLFc7STtJLEksVztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7OztHOztJOztLLGtCLE87SyxXOztJLG9CLE87SSxXO0c7O0k7SyxrQixPO0ssVzs7SSxvQixPO0ksVzs7O0k7SyxNO0ssUTtLOztLLE87SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLOztJLG9CO0ksZTtJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7OztNLE87TSxPOzs7O0k7SSxPOztHOztJO0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1ksTzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLHdCOzs7Ozs7Ozs7OztXLEc7Ozs7c0I7Ozs7Ozs7Uzs7VSxPO3FCOzs7O1M7VTs7Ozs7O2M7YyxXO2E7VyxPOytCOzs7Uzs7VztZLE87WSxPO3VCOzsyQzs7Ozs7OztVOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7Ozs7OztTOzs7VSxPOzRCOzs7Ozs7OzthOzs7YyxPO2E7WTtxQjs7O1M7O1UsTztxQjs7O3VDOztvQzs7eUM7OztTOzs7VSxPO3FCOzs7O0ksTztHOztJOzs7O0ssTztLLE87SyxPO0ksVztHOztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7O1c7OztZLE87cUM7Ozs7O1U7O1csTztzQjs7VSwwQztVO1c7WSxPO1ksTztXLEs7VyxJOztVO1csTztXLE87VzthO1csTzs7Ozs7Yzs7Ozs7OztROzs7Ozs7WTtZLFc7O1ksc0I7VztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7OztTLE87UyxPO29COzs7UTs7UyxPO29COzs7O1E7O1U7VyxPO1csTztzQjs7d0M7Ozs7Ozs7O1E7OztTLE87NEI7OztROzs7Uzs7O1k7K0I7O1ksb0I7VztTLFM7UyxPOzs7O1k7OztROzs7UztxQjs7O1E7Ozs7UyxPO1M7cUI7OztROztTLE87cUI7OztROzs7O1MsTztTLE87UyxPO3FCOzs7UTs7O1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7Ozs7UyxPO1MsTzs7d0I7Ozs7UTtzQzs7Uzs7VSxPO2lCO3dCOzs7OztROzs7UyxPOzs7O1E7OztTLE87Ozs7Ozs7O1k7OzthLE87WTtXO3FCOzs7UTs7OztTLE87NkI7OztROzs7UyxPO3FCOzs7MEM7OzsyQzs7O3VDOzs7O3FCOzs7UTs7OztTO1M7a0M7OztTLFE7UyxPO1MsUztTLFM7Ozs7UTs7UztTLE87Ozs7O3FCOzs7UTs7O1MsTztxQjs7STtLLE87O0k7Szs7OztNLFE7TSxVO0s7OzhDOzs7UTs7O1MsTztTLE87MkI7OztROztTLE87MkI7Ozs7O3FCOztLLE87O0ksTztHOztJOztLLFc7SyxXO0s7STtHOztJOztLO0ssYztJO0ksVztJO0c7O0k7SyxNO0ssUTtLOztLLE87SyxPO0ksTzs7Rzs7SSxrQixPO0ksTztHOztJLEksTSxtQzs7O29DOztPOzs7USxPOzZCOzs7Tzs7USxPO21COzs7d0M7OztzQzs7cUM7O3FDOztPOztRLE87bUI7OztzQzs7d0M7OztzQzs7d0M7OztPOztRLE87b0I7OztPOztRLE87b0I7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7O0k7SyxNO0ssUTtLO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0ksTztHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0k7SyxNO0ssUTtLLE87Szs7SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7O0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTs7SSxpQjs7O0k7SyxNO0ssUTtLOzs7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1EsTzttQjs7O3dDOzs7O0ksTztHOzs7STs7TyxvQixPO087O08sb0I7Tzs7TyxtQixRO087O08sc0IsTztPOztPLHNCO087O08scUIsUTtPOzs7O0k7SyxNO0ssUTtLOzs7SyxPOzs7Ozs7O3FDOztPOzs7USxNOzs7O087OztRLE07bUI7Ozs7O1EsTTtPOztRLE07bUI7OzhDOztJLE87Rzs7STtLLE07SyxRO0s7OztPLE07O3dDOzs7Tzs7OztRLE07NkI7OztPOzs7Ozs7VztXLFc7O1csc0I7VTtRLE07bUI7OztPOzs7O1EsTTtRLE07NkI7Ozs7Ozs7Uzs7O1UsTTtVLE07Ozs7OztTLE07UTs7UyxNO21COzs7OztPOzs7USxNO21COztJLE87Rzs7STtLLE07SyxRO0s7OztPOzs7USxNO1EsTTs7OztzQzs7Tzs7OztRLE07MEI7OztPOzs7USxNO21COztJLE87Rzs7STs7SyxNO0ssTTtJLFc7Rzs7STtLLE07SyxRO0s7OztxQzs7Tzs7Ozs7O1EsTTt1Qjs7O087Ozs7OztRLE07O2tCOzs7Tzs7OztRLE07dUI7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7Ozs7OztROzs7O1MsTTsyQjs7O1E7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7O1E7OztTLE07b0I7OztROzs7UyxNO1MsTTs7Ozs7OztvQjs7O1E7Ozs7UyxNO29COzs7UTs7OzJCLE8sa0M7UyxTOzRCOzs7d0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7O0ssa0M7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7OzBCLE8sa0M7USxNO3dCOzs7Ozs7O3FDOzs7Ozt3Qzs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUM7Ozs7O087OztRLE07dUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQjs7OztJLE87Rzs2QixTO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0Isb0I7O0k7O087O087O087ZTs7RztpQywwQjs7STtJLFc7STtLLFU7SyxPO0s7Tzs7Z0I7O0k7Rzs7SSxJLFE7Ozs0Qjs7O0k7Rzs7SSxJLFE7Ozs0Qjs7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO2lDLFcsaUM7Ozs7O0k7O08saUM7Tzs7TyxxQztPOztPOzs7USxPO1E7Tzs7TyxxQztPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7STs7O2tCOztxQixPOztNO007Ozs7SSxPO0c7O3FCLE8seUM7SSwwQjtJOztPOzs7UTs7Vzs7UTs7Vzs7TyxPOzs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7O1EsVzs7UTs7O1M7Ozs7O1Esa0I7O1MsVzs7O0c7O0k7b0I7SSxvQixTO0k7Rzs7STtJOzs7Ozs7O1U7VyxPO1c7d0I7Ozs7Uzs7VSxPO1UsTztVLE87UyxHLGlDO1M7VTtVOzs7Ozs7Ozs7Uzs7Ozs7WTs7YTs0Qjs7WTs7WTs7Ozs7Ozs7WTs7O2E7Ozs7OzthOzs7Ozs7Z0Q7Ozs7Yzs7Ozs7Ozs7ZTs7Z0I7OztnQjs7O2dCOzs7O2U7Ozs7OzthOztZO2E7OzthOzs7YTs7OztZOzs7Ozs7OztVLEcsZ0M7VSxXO1U7OztXO1ksTztZLE87WSxPO21CO1U7O1MsSSxXOzs7Ozs7O1k7Ozs7O1M7c0Q7Uzs7VTs7O3dCOztTOzs7Tzs7USxPO1EsTztROzsyQjtPO1E7UTtPOzs7SztNO007TTtLOztHOztJOztNOzs7OztPLFM7Tzs7Ozs7Ozs7UTs7UyxVOztpQjs7OztpQjs7Ozs7O2dCOzs7TTs7O3NCO0k7Rzs7O0k7O0ssNEM7O0ksYTtJO0c7O0k7SyxPO0ssVTs7Szs7O007O0s7SztJOzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O087OztNOzs7O007TyxNOzs7Ozs7Szs7TTs7OztJO3dCLCtDO0ksVzs7Ozs7TztROzs7Ozs7O1k7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7WSxJOzs7Ozs7Ozs7OztTO1M7OztPOztNOzs7Tzs7Ozs7OztRLEc7Ozs7O2E7Ozs7Ozs7Ozs7O007TztRLFU7Ozs7Tzs7MEI7OzBCOzswQjs7OztPOzs7Ozs7O087Ozs7Ozs7Ozs7OztJO0c7O0ksYTs7Ozs7Ozs7Ozs7OztTO1MsMEI7UyxVO1M7VTtXLE87VztpQjs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7Ozs7Ozs7Ozs7O1M7Ozs7VTtVLE87VTtZOzs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1M7Ozs7Ozs7O1M7UywwQjtTOzs7O2dDLGlCO1UsUzs7Ozs7OzthLE07OztnQyx1QjtzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7Ozs7Ozs7OztTOzs7O1UsUTtVLFM7Ozs7Ozs7O0ssTTs7STtLOzs7STs7Szs7Ozs7STtHOztJO0s7O0s7Ozs7OztNOzBCOztLOzs7eUI7O0k7Rzs7STtJOzs7Ozs7OztLLHNCO0s7O0c7RztJO0k7O0k7STs7Rzs7STt1Qjs7STtHOzs7Ozs7Ozs7OztJOzs7O0s7aUIsTTs7Szs7O007TSxNO0s7O0k7SyxRO0ssUztLO0ksTTs7Rzs7O0k7O0s7O1M7Ozs7Ozt5QztJLHdCO0ksTTtHOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLFk7TTttQjtPOztRLFE7Tzs7OztPOztRLFE7USxRO087O00sWTtNOztLOztJO0ssUTtLLE07STtHOztJLGlEO0k7SztNOztLO0k7STtLLFM7SyxTO0s7SztJLE87Ozs7STs7Tzs7Tzs7Tzs7O1E7UTtxQyxZOzs7O1M7OztVLE07VSxNO1MsRyx3Qzs7a0I7O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7TTs7Tzs7O1U7VyxRO1csUTtVLE87UztPLFE7TyxRO007O3NCO0s7O00sUTtNLE07TTtNLE07TSxNO0s7O0k7Rzs7STtLOzs7SztJOzs7Ozs7O1E7Ozs7O1E7Ozs7Ozs7O0s7O0k7SyxTO0ssVztLO0s7SSxPOztHOztJO3lDOztJLE07Rzs7STt5Qzs7SSxNO0c7O0k7O3VCOzs7SyxNOztJLE07O0c7OztJOzs7OztNOztLO00sTTs7OzZDOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztNOzs7Tzs7OztxQjs7O1EsTTtPOzs7USxtQjs7Ozs7O0ksTTtHOztJLFksTzs7Ozs7TyxPOzs7O08sTzs7Ozs7Ozs7O08sb0M7TyxPOzs7TyxzQztPLE87Ozs7O0k7SyxPO0k7OztJOzs7O1EsZ0M7USxPOzs7USxvQztRLE87OztJLE87OztJLFk7O2dCOztJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxRO21CO0c7O0ksOEI7OztPOztRO1Esc0I7O087Ozs7OEI7OzttQixlOzs7Ozs7OztPOzs7UTtRLHNCO1E7TzsrQjs7OztlLE07O0c7Ozs7bUI7OztNOzs7TztPLHNCO087TTs4Qjs7Ozs7SyxvQjs7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7STtJLE87Rzs7STs7O0ssTztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7OztTLGUsVTt1QixNOzs7O00sTTs7Ozs7NEIsTzs7OztHOztJO0ksTzs7YztHOzs7STtJOzs7SSxXO0ksTztHOztJLE87RztpQyxtQjs7STs7Ozs7Szs7STtHOztJO2dCOztJO0c7O0kscUMsTzs7SSxPOzs7STtnQixPOztJLCtDO0k7Ozs7SztJLE87Rzs7STtnQixPOztJO0c7O0k7Z0IsTzs7O0s7OztNO00sTztLLE87Ozs7OztNLE87O0k7Rzs7STs7Szs7TTs7TTtLLE87O1ksTztJO0ksaUQ7STs7OztLO0ksTztHOztJOzs7SyxxQixPLGdDOztZLE87STtJO0c7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7STt3QztJO0c7OztLOzs7TTtNO00sTztLLE87Ozs7Ozs7Ozt3QjtJO0ssTztLLFMsVztJLE87Rzs7O0s7O1E7Ozs7O0s7STtJO0c7O0k7SyxhOzs7O007Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7SyxPO0ksTztHOztJLCtDO3lCLG1EO0ksVztJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7Ozs7d0IsTyw0QztNLE87SzthOzs7OztpQjs7O0s7O007Ozs7STs7SzswQix5QztJLE87Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7Szs7Ozs7OzttQjtNO087TyxJOzs7Ozs7Ozs7STtjO3NDO0c7O0ksUTtJLFc7MEIsTyxzQjtJLFc7SSxPO0c7O0k7O087O1EsSztRLEs7TyxPOzs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztJO0s7O0ksd0IsTztJLE87O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJO0c7O0k7SyxPOztJLFc7Rzs7O0k7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7STs7SztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLFU7Tzs7O087USxPOzs7O087Ozs7OztJOzs7Ozs7Ozs7O2U7O0ssZTs7SztJO0k7SztLO0ssTztLO0s7O0ksTzs7OztLOzs7TTtNO08sTztPLE87TztNLE87OztNLE07O0s7OztROztROztTOzs7OztjOzs7ZSxPOztlLE87YyxPOzs7O1M7Uzs7Ozs7WSxNO1csc0I7Vzs7OzswQzs7OztXOztZLGU7Vzs7Ozs7Ozs7Vzs7WSxlO1c7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7UTs7O0k7SSxPO0c7O0k7O08sc0I7TyxPOzsrQjs7TyxvQyxpQjtPLE87Ozs7OztrQjtrQjs7Tzs7UTtRO1E7USxzQjtPLE87Ozs7STs7TyxzQjtPLE87OzZCOztPLGdDOzs7Ozs7VTs7VzswQjs7OzswQzs7TztPLE87OztnRDtPOztRO1E7UTtRLHNCO08sTzs7Ozs7STs7Szs7UTs7UyxROzs7Ozs7Ozs7Ozs7Vzs7WTtZO1k7Ozs7cUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTO29COzs7USxtQjs7UyxNOzs7b0I7O0ssYTtrQixzQjs7NEIsTyxzQjtNLE87SztLO0k7SSxPOzs7O0s7TTs7TztPLFc7TSxXOztxQzs7Ozs7Ozs7TTtPLGM7O08sTztNOzs7NkI7TTs7Ozs7O1UsaUI7VSxPOzs7O1MsdUM7Ozs7a0I7UztVO1Usc0I7VTtVLE87UyxPOzs7O007TyxlOztPO007TTtPO087TztPLE07TSxPOzs7Ozs7OztLO0ssVztJO0ksTztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087STs7O1EsTTtPOzs7O0s7SyxHO00sTTtLLE87STtJO0ssTTtLLE87O0s7OztNOzs7TSxPO007O1M7Ozs7Ozs7O0ssTzs7Ozs7STtJLGdCOztHO0k7STtJO0k7O0k7STs7O0c7O0k7SSxXO0c7OztJOzs7OztJLFE7O0ksRztLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLLFc7Szs7Ozs7SyxlO0ssTTs7Rzs7STtLLE87SyxxQjs7Rzs7O0ssbUI7O007TTs7O00sTTs7Szs7TyxnQjtPLE07O007TSxNOzs7OztNOztPO007O0k7SSxPO0c7O0k7O0k7Rzs7eUIsMEM7SSxPO0c7O0k7O0s7STtJOzs7Ozs7TyxNOzs7Szs7Ozs7O1EsZ0I7USxNOztPO1E7UyxPO1MsTzs7Ozs7O1E7UztVLE87VSxPOzs7Ozs7Ozs7O1U7Ozs7OztPOztPOzs7O1E7UTtRO1E7VTthOztRLE87Tzs7O08sTztRLE07TztRLHNCO1EsTzs4QixlO1EsVztRLE87Tzs7Tzs7O1EsVTs7Ozs7UTs7Ozs7a0MsUzttQjs7Ozs7O087VTtRLFc7USxNOzs7TztRLHNCO1EsTztRLFM7UTs7Ozs7O1c7Ozs7TztRLE87OztXO1c7WSxXO1k7Ozs7O1ksb0IsVTtZLE07OztVO087Tzs4QixlO1EsTztRLFM7Tzs7Tzs7O1EsWTs7O1c7WSxXO1ksSzthLEk7Ozs7ZSxNOzs7O1k7Ozs7O2EsTzs7O1U7Ozs7Ozs7OztZO2E7O2M7c0I7Ozs7OzthLEksSSxvQzs7Ozs7OztpQixNOzs7OztpQixHO2tCLE07OztpQjs7Ozs7O21CLE07OztrQjs7Ozs7YSxNOzs7WTs7Ozs7Z0I7c0M7ZTthO2U7YTtZOzs7Vzs7USxnQjtRO2tDLDBCO1EsVztROzs7YTs7O1c7VyxPO1U7USxRO08sbUM7Ozs7O1E7UyxVOzs7Ozs7O1M7O3dCLE07VSx1QixVOzs7O2E7O2MsUzs7Ozs7Ozs7O1MsRztVOztVOzs7OztRLE07Ozs7O1E7Ozs7MkM7Ozs7OzsyQjs7K0I7O1M7VSxVOzs7Uzs7Ozs7O1M7UyxNOzs7O1U7USxXO1EsTTs7O087USxzQjtRLFM7USxXO1EsTzs7O1c7VyxJLFcsd0M7Ozs7O1ksb0IsVTtZLE07OztVO087Tzs4QixlO1EsVTtPO1E7UyxPO1MsTzs7Ozs7O1EsTTs7O087Ozs7O3FDOzs7OztXOztZLFE7WTs7O2U7OztnQixROzs7Ozs7Ozs7Ozs7OztlO2M7WSxXO1k7O1ksVztXO1k7Ozs7O2EsTzs7O1k7Ozs7O2E7Ozs7c0I7Ozs7UTs7TyxNOzs7Tzs7UztVLE87Ozs7OztTO1UsTztnQjs7UTtRLEk7Ozs7O1M7O1UsVTtTLE07Ozs7Ozs7OzJCO1E7O1M7O1E7USxJOzs7OztTOztVLFU7UyxNOzs7O1M7Uzs7UTtTLE07UyxLO1M7Ozs7OzthOzs7Ozs7YTs7Ozs7OztPOztPOzs7O1E7UTs7VztXLE87VTtRLFU7OztXLFE7VztZO2EsUTs7O1ksRzthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7O1csdUIsMEI7Ozs7YTs7YztjO3dCOzs7Ozs7Ozs7Ozs7YTsyQjs7MkI7Ozs7Ozs7aUIsTTs7OztpQixLO2lCO2tCLFE7a0I7OztxQjs7O3NCOzt1QixLOzs7Ozs7Ozs7O3dCLE07Ozs7OztxQjtvQjtpQjs7OzthLE07Ozs7O1k7OztnQixvQjtnQixPO2U7YSxLOzs7YTs7YyxLO2U7cUMsYztnQixROzs7Ozs7eUI7OztjLE07Ozs7WTs7O1c7VTtRLFU7UTtxQyxpQjtRLFc7Tzs7Ozs7WSxlOzthLE07O1k7VztROztPOztRO1E7O1c7Ozs7OztRLFc7TztROzs7OztTLE87OztROzs7OztTOzs7O08sVztPOztPOzs7MkIsWTtRLFM7TztPOzhCLHVDO1EsYztRO29CO08sSSx3Qzs7TztPO087Ozs7Vzs7O1ksSTtXLEssaUM7Ozs7O2E7YTs7O1csTTs7VTtRLFU7USxtQjtRLFE7UTtPO087O087Ozs7UTs7O1E7USxRO087Tzs7O1c7VztVO1EsTztRLFM7OztXO1c7VTtRLG9CO1EsUTtPOzs7TyxNO2tDOztHOztJLEksTywyQixPO0ksVzs7O0s7O00sUTtNLE87SyxHO007O087Ozs7Ozs7VSx3QixROzs7Vzs7VTtTO087OztXOzs7Ozs7TTs7SyxPOztJLE87Rzs7STtJLE87Rzs7RztJOzs7SSxJLFk7O0s7OztNO00sTztLLEksbUMsSTtpQjtnQjtLOzs7O29COzs7Ozs7Ozs7TztRLE87ZTs7O007TyxNO3dDOztNOzs7Tzs7O0k7STs7STtLOztNO00sSSxXLG9DOzs7OztPLE07O0s7SyxPLHdDO0c7O0k7O0ksMEI7STtJO0k7Rzs7STs7O0k7SSxJLGlDOzs7SztNLE87TTs7OzthOzs7O0k7STtJO0k7STs7O0ssSSxNLDBCOzs7O087Tzs7O0s7STtJLFk7STtJOzs7O0ssTztLLE87STtHOztJOztJO0k7STtJO0k7STtJLGdCO0c7O0k7STtJO0k7STtJO0c7O0k7SyxPOzs7Tzs7UTs7VyxPOzt5QjtVO1E7VTs4QixPLGtDO08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OztPLE87O087O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7Tzs7USxvQixPLHlDOzRCLE8seUM7TyxPOzt5QixPOzs7TyxPOzs7Ozs7O1c7VztZLE07O1ksTztXLE87Ozs7Ozs7Ozs7VTtPLE87OztPOzs7OztTOztVOzRCLFcscUM7UyxPOzs7Tzs7O08sTzs7Ozs7Ozs7O08sTzs7O087TyxHO1E7ZTtROztRO08sTzs7O08sTzs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7VTtPLE87Ozs7OztXLFksTzs7VyxPO1U7TyxPOzs7TyxPOzs7O0k7Szs7OztNLHlCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztxQixPOzt1QixPOztxQixPOztxQixPOzt1QixPOzt1QixPOytCLE87O0c7O0k7O0s7OztNOztLO00sTztLOztRLE87O1EsTzs7USxPOzs7OztLLE87OztPLG9CLE87TyxPOzs7TyxPOzs7TyxvQjtPLE87O087O1EsNEI7TyxPOzs7Ozs7USxPOzs7Tzs7OztROzs7OztTLE87Ozs7Ozs7Ozs7O1E7cUM7USxPOzs7O1E7NEIsbUM7UyxPO1MsNEI7UyxPO1EsTzs7O087b0M7TyxPOzs7cUIsTzs7TyxPOztPOzs7MEIsK0M7USxlO08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7OztPOztRLDRCO08sTzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksdUI7SSxPOzs7O0ksWTs7OztLLE87Ozs7Ozs7Ozs7O0ksTzs7OztJLE87Rzs7STtJLFU7SSxPO0c7OztLO0s7SyxPO0k7SSxPO0c7O0k7O0s7SyxPO0k7STtJLE87Rzs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0k7Ozs7c0IsaUQ7O3dCLGE7SSxPO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7Szs7Rzs7STs7Ozs7Ozs7OzsyQjs7OztPOzs4QixvQixXO1EsTzs4QixvQixXO1EsTzs7Ozs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7VSxZOzs7VyxPOztVLE07Uzs7Ozs7Ozs7Ozs7STtHOztJOzs7O3lCOztPOzt5QixPOzsrQjtpQzs7Rzs7c0IseUM7STs7Ozs7O1E7O1M7Ozs7Ozs7O1E7Ozs7WTtZO1c7UyxNOzs7O1E7Ozs7Uzs7Ozs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHO0c7Ozs7OztJLE07SSx5Qjs7STtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7O1k7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7STtJO0s7OztTO2dEO1M7UTtNLFk7Ozs7NEI7OztJLG9CO0ksTztHOzt5Qix3QixZO0ksTztHOztJLGE7Rzs7STs7O0s7O0k7Rzs7STs7Ozs7USxPOzs7Ozs7USxlLE87USxPLDJCOzs7O0ksTztHOztJO0k7Ozs7OztRO1M7Uzs7Ozs7UTtTO1M7Ozs7O1E7UztTOzs7Ozs7O087UTtROzs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0IsTztpQixXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCOzs7aUI7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO2tCLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7OztTLGdDO1MsUzs7Ozs7O1Esa0M7USxTOzs7OztNOztJOzBCOztLOzs7TyxrQixPOztPOzs7bUI7SztJOztLO0s7OztROzs7OztTO1EsVzs7Ozs7c0I7TTs7STtJOzswQiwwQztHOzs7O0k7O0ksaUM7Rzs7STtLO0ssTztLLE87Szt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7Ozs7O1csTzs7Ozs7Ozs7Ozs7OztpQjs7OzhDOztJO0c7O0k7a0Q7aUQ7SSxPO0c7O0k7Ozs7Ozs7Ozs7a0MsTzs7a0MsTzs7Ozt5QyxPOztPOztNOzs7Ozs7UTs7UTs7UyxNO1M7OztZO1k7YTs7O2lCOztnQjtjLE07Ozs7Ozs7O1k7VztRLE87O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7Vzs7OytCLCtCO2MsTzthO1csUztXOzs7Ozs7a0I7O007OztJO0c7O0ksUztZLE87STs7OztLOzs7STtHOztJOzs7O1E7O1M7OztROztROzs7O1M7OztROzs7OztVLE07Ozs7O1E7O1E7OztTOzs7Ozs7O1k7WTs7c0I7O1k7VztROzs7bUI7Ozs7OztROztTOzs7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7Ozs7TTtNO0s7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7TTtLO007Tzs7Ozs7SztNOzs7O0k7SyxZO0s7Tzs7SztLLGtCO0k7SSxjLFc7STtHO0c7O0ksbUI7SSx1Qzs7SztNLE07O29CLFc7O0s7STs7Z0IsVzs7STtHO0csbUI7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7Ozs7YSxrQjtpRjthLE07WTtVLFM7VSxNO1MsZ0I7Ozs7O2M7OztlLFE7Ozs7ZSxPOztjO2E7VSxPOzs7Ozs7OzthOzs7MkI7a0M7WTtTLE87Ozs7TTs7O00sTTs7STtHOztJOzs7Ozs7SyxPO0k7Z0I7Ozs7OztHOztJO0ssTTs7bUI7SSxtQjtJO0c7O0ksWTs7O0s7TTtPLFU7TyxVOzs7OztRO1M7O3lDOzttQjs7O007Ozs7O08sTzs7OztJLE87Rzs7STtHOzs7STs7SztLLGlCOztLLFc7STtJLGE7eUIsOEI7STtLLFE7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7OztTOzJFO1MsTztRO00sZTtNO00sUztLLGdCLE07SywwQjtLLGtCOztJO0c7O3lCLGtCLE8sdUI7SSxJLE07STtLLEs7O00sZ0I7O0ssSSxNOztHOztJO0k7Ozs7Ozs7Ozs7Ozs7VSxvQjs7Ozs7OztrQyxrQixTO1UscUI7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTs7OztXLGtDO3NCO1c7Vyx3QjtVO08sTzs7Ozs7OztPOzs7O1E7TyxTO08sSTs7Ozs7USxvQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTs7Ozs7O0c7O0ksVTthO0k7OztLLE87SyxPOztLO0ssd0M7SztNOzs7UzsyQixrQjtTLE87UTtNOzs7Ozs7Ozs7VTtVLHFCO1U7VztXOzBDO1csTTtVLG9CO1UsTztTO1MsVztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksb0I7SSxPO0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNO087Ozs7Uzs7O087TTtNLEk7OztNOzs7O087TSxTO00sSTs7O007TztPLFU7OztPO08sTztPOzs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPOztLO007O087NEIscUI7TSxPOztLOztNLFc7TSxPO0s7SyxPO0k7SSxPLFc7Rzs7STtJLHdDO0k7SztLOzs7Szs7a0MsdUI7TSxPO00sTztNLE87OztTOzs7OztVLHVCO1U7VztXOzRCO1csTTtXLHNCO1UsTzs7Uzs7OztXO1ksTTtXLHVCOzs7YSxNOzs7OztZO2E7b0I7Ozs7Ozs7VSxXOztTO1M7OztXLHVCOzs7Ozs7Z0I7aUI7O2lCOzs7eUI7Ozs7OztlOztnQjtlLEc7Ozs7OztrQjt5QzttQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COzs7Ozs7O2tCOzs7c0Isa0I7Ozs0RDs7c0IsTTs7cUI7bUIsWTttQixPOzs7Ozs7Ozs7OzswQzttQjs7Ozs7OztvQjs7cUI7O3VCLE07c0IsUztzQixLOzs7cUIsSTs7Ozs7Ozs7Ozs7Ozs7O2tCO3lDO21COzs7O3dCOzs7OzBCLE87Ozt3QixNOzt1Qjs7d0I7d0I7b0M7dUI7Ozs7Ozs7a0I7c0MsYzttQjs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7bUMsZSw0Qjs7Ozs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COzs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COzs7Ozs7OztlOzs7OzttQixrQjt1RjttQixNOztrQjtnQixPOzs7bUI7bUI7a0I7Z0IsTTtnQjs7OzttQjttQixHLHdDO21CLFk7aUQ7OztvQjs7O21CO2tCO2dCLFU7Ozs7Ozs7b0I7bUI7dUI7OztlLEc7Ozs7Z0I7aUIsSztpQjtrQixROzs7Ozs7OztlOzs7bUIsa0I7dUY7bUIsTTs7a0I7Z0IsYzs7ZTtnQixLO2dCLEk7Ozs7O21DOzs7Ozs7Ozs7OzZCLE87Ozs2QixzQjtTLE87UTtLLE8sVzs7STtLO0ssTzt1QixzQjtJLE87Rzs7STs7SywwQztLLE07STtJLE8sVztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7O08sWTtPOzs7UTtRO1E7TztNO007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7Uyx5QixROztjO1U7VyxNO1c7Ozs7YyxrQixROzhGLDZCO2M7YTtXLEs7Ozs7Vzs7O1ksa0I7WSxPO1c7Ozs7Ozs7O087Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix3Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OzsyQixpQjtRLEk7OEIsaUI7USxPO2U7Ozs7OytCLFM7ZTs7OztVLGlDOzs7OztXOzs7Ozs7Ozs7WSxNOztXOzs7WTtZO1k7WTtZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7OzswQjs7Ozs7Ozs7O2MsVzs7eUI7OztZOztXOztVLE07UztNLE87O0s7OztNLE87TSxPOzs7OztVOztXLE07VSxrQixPOzZCO1M7TSxHO087UTtRLE07Ozs7TztRO1E7Ozs7Ozs7OztRO1M7Uzs7Ozs7TztRO1EsUTs7Ozs7OztRLHNCOztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztRO1E7OzthLFc7YTtZOzs7Ozs7OztHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQzs7Ozs7Ozs7OztjOzs7ZSxPO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7OztpQixPO2dCLFc7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7O1U7Ozs7Ozs7O2M7O2U7OztjOzs7Ozs7Ozs7O2M7O2UsTztlLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7STtJOztNOzs7OztPO00sVzs7OztLOztHOzs7OztvQjs7OzhCLE8sd0I7TSxHOzs7TyxJOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsSztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEcsNkI7Ozs7Ozs7Ozs7Ozs7OztnQjs7OztvQixTOzZCOzs7Ozs7Ozs7Ozs7O3FCOztxQjtvQjtvQjttQjtpQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0IscUIsTzttQjtnQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0Isb0I7Z0I7Ozs7Ozs7OztROzs7Ozs7UTtTLE87O1E7O087Ozs7TztRLE87O087OztLLE07O0c7c0I7O0k7SztLO007Ozs7OztPOzs7Ozs7OztLOzs7OztLLGtCLE87O0s7O0c7O0k7Szs7Ozs7TTtLOztJO0c7O3FCLDZCO0ksZ0I7STtHOztJO0ssWTs7SztJOztLOzs7TSxROzs7TTtLO0k7STtLLFE7OztJO0k7Rzs7STtJO21COzs7O007Ozs7Rzs7STtJO21COzs7O007Ozs7Rzt3QixPLHlDO0c7O0k7O0k7SyxPO0ssTztJLE87Rzs7STtLLFU7SyxTOztLO0s7Ozs7Ozs7Vzs7Ozs7NEIsaUI7OztVLGlCOztVOzs7O1c7VztVO1UsWTs7Ozs7Ozs7OztVOztVOzs7VyxRO1U7O1U7Ozs7YyxrQztjO2M7YyxXO2E7VyxTO1U7OztVLGlCOzs4Qjs7VSxrQztVOztNOztJO0k7STtHOztJLEksSyxrQzs7Ozs7Ozs7Ozs7bUIsbUI7Ozs7Ozs7UyxJLFU7Ozs7Ozs7Ozs7Vzs7OztlLFc7YztZLFM7Ozs7O1UsTzttQyxjO1csSzs7VTtXO1csc0I7a0I7Ozs7Ozs7O2U7O2lEOztLO007Ozs7Szs7STtLOzs7O0k7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7Ozs7YztjO2E7VSxPOzs7O1U7OztXOzs7Ozs7Ozs7TyxPOzs7OztLOztHOztJLFc7STs7Ozt5Qiw2QjthO0ksVzs7O2lCO0s7Ozs7OztNO0s7O007TyxPO087OztvQixXO087Tzs0Qjs7Ozs7Ozs7Ozs7Ozs7K0I7OztPOzs7UTtROzs7Uzs7O2EsMEM7YSxNO1k7VSxRO1U7VTs7OztVOzs7VTtjLGtFOzs7Ozs7OztnQjs7Ozs7NEIsTyxrQztROzs7Ozs7OztNLE07OztNLEk7Ozs7Rzs2QiwwQjs7SSxjO0k7SztLOzs7Ozs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7ZTs7YztXLE87O1csb0M7VyxXOzs7OztXOzs7K0IsZTtRLE87Ozs7O007O0k7STtHOztJLEksNkI7O0s7O00seUI7TTs7UztVOzs7O1MsTzs7TSxtQixXO00sUTs7O00sRztPO1E7UyxNO1MsTTtRO1E7Uzs7OztZOzs7O2E7O1k7VztRLEc7UztRLEksTzs7O087Ozs7Ozs7O0ssWTtNOzs7OzttQjtJO0s7OzRCLHVDO00sTzs7Ozs7O1U7O3NDO2EsMEI7VSxlO1UsTztTO007OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O3dCO0k7SyxjO0s7O0s7TztJLE87Rzs7SSxVO0k7Ozs7Uzt1QjtTLHNCOztVOzs7O1k7O2EsTzs7O2dCLFM7O2U7WTs7O1c7Ozs7VyxPO1U7VSxXO1UsVzs7Ozs7Ozs7Ozs7YSxLO2MsTTs7O2MsSzt3Qjs7OzthOzs7O1UsTTtTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOztVLE87VSxPO1UsTTtnQjtVO1c7aUMsc0I7VztnQzs7Vzs7WSxZO2tCO1k7YSxPO2EsTSxXO2E7WTs7OztTO1E7Szs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztLO0ssTztJO0ksSSxRO0k7Szs7O1M7UyxlO1E7TSxZOzs7Uzs7VSxPO1M7UyxPO1E7TSxVOztLO00sTTs7O1M7Ozs7VSxXO1MsTztRO00sWTtLLEc7Ozs7SztLLE87STtJO0k7Rzs7d0IsUztJLFU7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7OztJLEksVywwQzs7Ozs7O0c7OztLO00sTztNO0ssRyx1QztLLGE7a0I7Syw0QjtLOzs7O1M7OztVLEk7OztVOztZO2lCO21COztTO1M7OztTLE87OztTLGU7UztVO1csTztXLG9CLE8sb0M7Vzs7OzZCLE8sK0I7YyxJLGlCO2M7OztlO2dCO2dCO2dCO2MsVztjO2UsSztlLE87ZSxLO2UsTztlLE87ZSxPO2UsTztlLE87ZSxPO2UsTztlLEs7ZTtjO2UsSSxjOzs7Yzs7O2U7Z0I7Z0I7Z0I7YyxTO2M7YTtXLE87VTs7Ozs7VTs7VyxzQjtVLE87Ozs4Qjs7O1M7Uzs7UyxNOztTOztVLFE7VTs7O2Esa0IsUTs7O2U7Ozs7aUMsTyxpQztnQixRO2dCLEk7Z0Isc0I7ZSxPOzs7K0M7O2E7WTtTO1M7OzhCOzs7OztVOztZO2lCOzs7Ozs7YTthO1k7UyxPOztLO0k7STtHOztJO0ssTztLLE87SyxPO0ksTztHO0csZ0I7Ozs7Ozs7Szs7OztNO29CO0s7STtJO0ssYTtLLFM7Szs7SztLO0k7STs7Ozs7UyxLO1U7VSxLO1c7WTs7O2U7ZTtnQixXO2dCLEcsMkM7NkI7Z0I7Z0IsRyxtQzs7Ozs7b0IsTTs7O29CO3FCLFc7cUI7Ozs7Ozs7cUIsVzs7c0IsTTs7Ozs7Z0IsTzs7YztXO1k7WTtZOzs7O21DOzs7OztTO1E7Szs7O0s7TTs7O1M7UztTO1U7VSxROzs7VSxLO1UsTztTOzs7Ozs7Ozs7VSxNOzs7Ozs7O1E7SztLO00sTztNLE07d0IsVyx1QztNLFE7SztNO087OztVO1UsRywwQjs7Ozs7Z0I7VTtTO007TTtPOzs7VSxXO1UsRywyQztVLGdCOztVO1c7VyxPO1c7OztXLE87cUI7O1U7VSxTO1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1UsSztXLE87Ozs7Ozs7O1UsTTs7O1M7OEIsbUIsbUI7TTs7OztLOzs7O007TTs7OztNLGU7OztLOztNO00sTTs7O00sRyxvQztNLEc7Ozs7Ozs7YTtjOzs7O21DO0ssVztLLE87STtJLE87O29CLGtCO0csZ0I7O0kscUMsTzs7O0s7SztJO0ksTztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOztLOztNLFE7TSxNO00sTTtNOzs7UztTO1UsTTtTLGlDOztVLEksTzs7Ozs7Z0MsTyxvQzttQjs7Ozs7Ozs7O1MsUSxNO1M7UTtLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs7Ozs7Ozs7Ozs7VTs7Ozs7OztTO00sTzs7Ozs7STs7Szs7Szs7OztTO1M7UTtNLE07SztzQzs7O29CLDBCO0ksRztLO3dCLHdCO00sTTtNLE07SztzQzs7d0IsbUIsK0I7SSxXO29CLHVCO0k7SyxNO0ssUTtJO0s7O0ksYzs7SyxNO0k7OztLLE07SyxPOztLLEcsa0M7O0s7STtJLE87OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtHOztJO0ssVTtLOztlO0c7RztJLE87RztHO0k7d0IsbUI7SSxPO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7OztHO0c7Ozs7Ozs7Ozs7O0k7OztzQjtJLFU7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7O0s7Ozs7OztLOzs7STtJO0ssUTs7O0s7Tzs7Szs7Ozs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE07TSxPO007OztNLEksVTs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOzs7Ozs7VTtXO1csTzs7Ozs7Uzs7UztpQjs7O0s7O0c7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsTyxpQztPLE87O00sYztzQzs7O08sTzs7TSw0QixJOzs7Ozs7TSxPOzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs0Qiw4Qzs7K0IsVyw4QjtHLEksUzs7STtJO0ssWTttQzt3QjtLOzs7TTs7OztHOztJO0ssTTtLLE87O0s7SyxrRTtLLE07STtJLE8sVztHO0c7O0k7O0k7O0k7Rzs7O0ssSSxtQjtLLFc7STtJLE87Rzs7Ozs7OztJOzs7SSxJLFUsbUM7Ozs7OztHOzs7SztLO007TyxPO087TyxVOztPOztRLE07cUI7OztNOzs7O087TyxPO007TSxHO087OzhCLE8scUM7UTtPLE87O007TyxNO08sUTs7TztPO087Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7OztZLE87O1k7OzthLE87Ozs7Z0I7Ozs7OzttQjs7OztvQjs7Ozs7Ozs7OztnQixPOzs7YSxNO1ksTzs7Ozs7Ozs7TyxZOzs7Ozs7Ozs7Ozs7O1kseUM7Ozs7Ozs7Ozs7OzthO2M7Ozs7Ozs7cUI7OztzQixRO3NCO21DOzs7OztpRDs7bUI7OztlO2lCO2UsUTtlOzs7Ozs7Ozs7Ozt1Qzs7Ozs7WSxNOzs7Ozs7OztXLE87VTtPLE87Ozs7STtJO0c7O0k7d0IsUztJLE87Rzs7O0s7OztNLG1CO0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLOztNOztPO087TTs7SztLLG9CO0ssTzs7OztlOztJO0s7Tzs7OztLLGlCOztLO00sTTtNLFk7O00sTTtLO0k7STtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Ozs7OzsyQzs7OztxQjs7O1UsTTs7Ozs7Ozs7Ozs7O3VCO2tCOzhDLFM7SyxPOzs7Syw4Qjs7O0ksOEI7O0c7O0ksZTtJLEksZ0M7OzswQjs7O0c7O0k7SyxNO0ssTTs7RztHLGtDLGdCO0cseUIsdUI7RyxtQywrQjtHO0k7Ozs7Ozs7Ozs7Ozs7OztHO0cscUMsUztHOztJLE87Rzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QixPLDBDO0ksTztHOztJLFk7c0U7STtHOztJO2tCOzs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7UTs7Tzs7Ozs7Ozs7Rzs7STs7SyxNO0ksa0IsSywrQjs7Ozs7USxxQixJO2U7UyxNOzs7O1Esc0IsUTtROzs7O1EsRztTLE07Ozs7O0ssTzs7SSxNO0c7Ozs7SyxJLGUsdUM7Ozs7TyxNOzs7O0ksTztHOztJO0ssTTtJOztLO0ssRztNLE07cUI7O0k7STs7Ozs7Ozs7O007TyxRO08sTTtNLFc7SztLLE87O0ksYTs7SyxtQjs7Ozs7O0ssSSxPLHlCLE87SztJO0ksYTtJO0c7O0k7Szs7TSxPO00sTTtNO3lCLFk7SyxlOztJOztLOzs7STs7O0k7SztNOzs7Szs7SSxnQyxJO0k7STtLOzs7SyxZO0s7SyxVOzs7SyxHO007TTs7O0k7SyxPO0ssb0I7SSxNO0c7OztJO0k7STt5QixvQixjO0ksSSxTLDRDOztLOzs7O00sTztLLFc7STtJO0ssUTtLLFU7SyxRO0k7O00sTTs7Ozs7OztLOzs7UyxNO1E7TTs7O087O087OztNOzs7UTs7Ozs7O3NCOzs7VTs7Ozs7OztXOzJCOzs7VTs7Ozs7Tzs7OztNOzs7UTt3Qjs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TyxvQjtPLFU7Ozs7Ozs7Ozs7Ozs7NEIsNkI7UTs7TTs7SztNOzs7UztTLEc7VSxNOzswQjs7UTtLO0s7TTswQixPLGtDO00sTztlO00sTTtLO007OztVO1csTztXOzs7OztXO1csTztXLE87VztVO1M7UyxPO1E7TTtNLE87TSxVOzs7Ozs7O0s7O007OztLOzs7TTs7O1UsZTs7Ozs7WSxPOzs7VTtTO08sUTtLO007TTs7Ozs7O0s7O007TSxNOzs7OztJO0ssUTs7OztLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7TTtNO0ssSSxXLHNDOzs7OztNLE07O0k7STtJO0k7SztNO08sTztPLFc7TyxVOzs7OztPLE07Ozs7Szs7STs7Ozs7Ozs7Ozs7OztJO0k7O2dCOztJLE87Rzs7STtJO0ssVztLLEcsMkM7a0I7Ozs7OztTLEksVzs7OztXLE07OztTO1UsTztVLE87UyxJOzs7OztVLE07OztTOzs7YTs7UyxPOzs7OztpQjs7OztLOzt1QjtLLE87O0c7OztLOzs7TSxTOzs7O08sTTs7TSxHO087OztJO0ksTztHOztJOzs7Ozs7TSxtQixVOzs7TztRO1MsUztTLE87O1c7OztTLEk7Ozs7Ozs7UztVLE87VSxPO1UsTzs7WTs7Ozs7UyxNOzs7Ozs7UyxNOzs7O00sTTs7O0k7Rzs7STs7SyxXO0ssRzs7Ozs7aUM7Ozs7OztPLE07bUM7TSxNO2tDOzs7TSxXO00sRzs7O087USxPO1E7Ozs7Ozs7OztjOzs7Ozs7O1U7O1c7eUI7Ozs7Ozs7OztLLGdCO0s7O007O2dDO08sc0I7TTtNLEk7Ozs7Ozs7Szs7OztNLHNCO00sRztpQztPOzs7Tzs7USxzQjtPOztNO087USxPO1EsUTtRLG9CO087Ozs7O2lDO08sTzs7O3lCO0ssTztJO0ksVztJO0s7O00sc0I7TSxPO0s7Ozs7OEIsTzs7O0c7O0ksSTs7SztNO0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0ksTztHOztJLGtCO0k7O0s7SztNO08sTztPLFc7aUI7Ozs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VTs7O2M7OztVLE87Ozs7O2tCOzs7O007OztVOztNLE87O0k7OztLO00sUTs7Ozs7SyxvQjtLO0s7STtJLE87Rzs7STs7Ozs7TTtPO1EsTztRLE87TyxLLG1DO087UTtRLE87TztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLEc7TSxPOzs7STtHOzs7SztLO0k7SSxPO0c7O0k7SSxrQjs7Szs7TTtNLE87TSxhO007TTtLOzs7Ozs7Ozs7STtJO0ssTztLLGU7SyxROztLLEksTyx5QixPO0ssVztJO0ksZTtJO0k7O0s7Ozs7Ozs7Ozs7Vzs7WSxNOztVO087OztNO08sTztnQjs7SyxZO0ssYTtLOzs7O00sTztNLE87Ozs7NEI7Ozs7MEIsTywyQjtLOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Szs7STtLO087SztLLGM7Ozs7TTtPO08sSzs7O1U7Ozs7OztVLFc7VTtVLE87UztNO007O0s7Ozs7OztNO0s7SyxPOztJO0ssTztLO087eUIsK0I7SSxZOztJO0ssUztLLFU7O0s7Ozs7Ozs7VTtXO1ksTztZO2M7Ozs7Vzs7Ozs7WSxPOzs7O1M7TSxPOzs7O007TTtPO1EsTztRO1U7O087Ozs7O1EsTzs7O0s7SyxPO0k7STtJO0k7Ozs7Uzs7VTtVO1UsTztVO3FCO1MsbUI7OEIsTyw0QjtTLGE7UztVO1csTztXLE87VTs7Ozs7O1UsTTs7O1E7Szs7STt5QixxQiw2QjtJO2dDLG1CLHlCO0k7bUI7O0s7OztNO00sTTt1Qjs7MEIsTyw0QjtLO00sTztNLE87SztrQztJO0k7O0ssbUI7O0ssTztJOztLO0s7O2M7Ozs7STtJO0k7SyxxQjtLOzs7Yzs7Ozs7STs7SyxxQixRO2lCOztLLE07STtJO0k7Szs7TTtNOzs7TTtNO0s7Szs7Ozs7O1Esa0I7OztTOzs7USxNOztPLG9COztROztTOztZLE87VztTO1c7OztZO1k7YTtjLE87YyxROzs7OztjLE07Ozs7OzthOzs7Ozs7O21CO2tCO2U7Ozs7Ozs7O2U7Ozs7YSxNOzs7O2E7O1k7VztROzs7TyxNOzs7OzttQjtLLHFCOztNLE07O0s7O0k7STtLOzs7UztTO1E7TSxPO007UTtVO00sTyxXO007USxXOzs7Ozs7TSxNOzs7O00sTTs7Ozs7SyxNOztJO0k7O0s7O0k7O0s7Szs7Ozs7Ozs7Ozs7STtJLGtCO0k7Rzs7OztLO0k7SSxPO0c7MkIsK0I7OztLLFk7SztLO0s7O00sUTs7O007Ozs7TztROztnQyxpQztTLE07Ozs7Ozs7O08sTTs7O007Ozs7VTtXLFE7OztVO1M7TyxnQjtPLE87Ozs7TztRLE87OztXOzs7OztZO1k7Ozs7OztVO1EsTTtNOztPLE07OztNO087OEIsb0IsYztPLGM7TyxPO08sTztNO007Ozs7Tzs7VTs7O08sZTtNO007Ozs7VTs7UztNOzs7O1UsWTtzQjs7VSxNOztTO007Ozs7VTtXOztjOzs7Ozs7Vzs7Ozs7OztXLE07O1M7TTtNOzs7VTtVLE87UztPLFM7Tzs7Ozs7Ozs7O007O0ssTTtJO0ksTztHOztJLFk7STtJO0k7O0k7STtJO0ksWTs7O0ssTTs7O0k7SztLLFM7STtHOztJO3lCLG1DO0k7SyxROzs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7Szs7Ozs7Ozs7Ozs7SztpQixPOztLLE07O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7a0I7SSx1QixROzs7Ozs7TyxHOzs7OztNLEc7TSxHO00sRztNLEc7Ozs7O0ssTTs7O0k7Rzs7STs7SyxVO0s7Ozs7Ozs7OztPLE07OztNOzs7TztPOzs7TTs7O0s7O0ksTTtHOzs7SyxJLE0sMEM7O007Ozs7O007Tzs7OztPO1M7OztPO1EsTztRLHVCOzs7O08sTTs7Ozs7c0I7OztNO08sTTtNOzs7VTtXLE87VyxPO1U7Ozs7O2E7O2MsUztrQzs7Ozs7O1c7Ozs7a0M7OztTO087UztPOzs7VSxnQjtVLE87UztNO007TyxPO08sTzs7OztNLEs7TyxNO007TyxPO08sTzs7O0s7O00sdUIsZTtNLFU7OztNO0s7STtJLE87Rzs7O0k7STtJO0ksSSxnQjt5QixvQixjO0k7SyxTO0ssUTtLOztLOzs7O00sTTtNLFE7SztJO0k7SyxjO0s7OztLOztNLE07Ozs7O0k7SyxhOztJOzs7OztTO1M7VSxXO1U7Ozs7OztVLE07OztRO0s7OztLO0s7TSxXO007Ozs7OztNLE07O0k7STs7Ozs7Ozs7STs7Ozs7O2E7Ozs7Ozs7OztJO0ssTztLLE87OztLOzs7Ozs7OztROzs7Ozs7Ozs7SztJO0k7SSxjOzs7SyxNOzs7STtLO0ssVztJO0s7O1E7Ozs7Ozs7SyxNOztJOztPO0k7Szs7UTs7Ozs7OztLLE07O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOzs7Ozs7Ozs7OztHOztJO0ssVztLO0ssVztJO0k7STs7OztLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxZOztLOztNO3NDO0ssVztJO0ksTztHOzs0QixPLHNDO0k7STtJO0c7O0k7Szs7O1MsVztTLE87UTtNLEs7TSxNO00sVztLO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O3FCLFk7SSxPO0c7O0k7OztRLE87O1EsTzs7Ozs7OztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7O3lCLE87OztPLE87OztPLE87OztPLE87Ozs7USxPOzs7Ozs7OztPOztRO1U7O08sTzs7Ozs7Ozs7Ozs7O087Ozt3QixPLDBDOzt3QixPLDBDO087TyxPOzs7Tzs7O3dCLE8sMEM7O3dCLE8sMEM7TztPLE87O087OztRO3dCLE8sMEM7O3dCLE8sMEM7TyxPOztPOzs7OztROzs7VyxPOzs7Ozs7Ozs7UTs7VyxPO1U7OztXLE87b0I7OztVO087TztPOztRO1MsTzs7UyxPOztTLE87USxPOzs7Ozs7Ozs7Ozs7TztRLE87O1EsTzs7USxPO08sTzs7OztPO087USxPO1E7Ozs7O1M7Ozs7YTs7OztrQyxTOztzQyxXO1k7VSxROzs7Ozs7Yzs7ZSxVOzs7OEI7Yzs7OztnQyxrQixTOzs7aUI7aUIsTztnQjs7O2Msb0IsUTtvQztjO2U7O2tCOzttQixPO2tCLE87aUI7OztrQixrQixROzs7OzZEOztvQixPOzs7bUQ7O2tCLE87aUI7Yzs7O1U7Ozs7Ozs7UTs7OztzQixZOzs7VyxXO1csTztVOzs7O1E7Ozs7O1c7VyxPO1U7OztXOzs7Ozs7OztVOztPLE87OztPLE87Ozs7Ozs7OztPLE87Ozs7Ozs7OztPOzs7UTtVOzs7OztRLE87TyxPOzs7Ozs7Ozs7O087Ozs7UTt3QixPLDBDOzs7VyxPO1U7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7OztPOzs7O1E7O1c7Ozs7WTtXOzt1Qjt1Qjs7dUI7dUI7Ozs7O1c7Ozs7Ozs7O1c7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7O2E7cUI7Ozs7UTs7Ozs7Ozs7O3dDO08sSSxxQjtPLE87OztPLE87OztPO087Tzs7OztxQixTOzt5QixhO08sTzs7O2lCO2lCOztPLHFCO08sTzs7Tzs7UTs7OztPLE87OztPOztROztXLFksTzs7VyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztJLEksSzs7OztNOztPO08sUztPLFU7Ozs7TztRLFM7USxNO1EsaUI7Ozs7TztRLFE7OztNLEk7Ozs7O08sTTs7OztPO1EsTztRLE87OztXOzs7Ozs7WSxHO2EsTzs7O1c7VTtPOzs7O087O1EsTztRO1E7O1c7O1E7O1c7O2M7USxNOzs7O1EsTTs7O1EsdUI7Ozs7Ozs7Ozs7O1k7YSxTO2EsTztlO2EsTTtZLHNCLE87WTs7Ozs7Ozs7O1ksTTs7O1UsTTs7Ozs7OztPLE07O00sTTs7Szs7O007Ozs7Ozs7Ozs7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7STtHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE87Szs7O0ssSSxVOzs7NEI7Ozs7Ozs7Ozs7Ozs7OztNLGM7b0I7O007O0s7O0k7Rzs0Qiw2Qjs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJO0ksTztHOytCLDBDOztJO0ksd0M7Ozs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Vzs7O1U7Ozs7Z0M7OztROzs7UTs7Ozs7USxNOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLEcsc0M7OztLLEc7OztTOzs7OztpQjs7OztJO0c7NEIsdUM7b0MsdUM7O0k7Ozs7Ozs7TztTO1c7USxJLFUsNkM7Ozs7K0I7Ozs7OztJO0c7O0k7Ozs7Ozs7O1E7OztTO1E7Ozs7O0k7Rzs7STs7O0ssRyxvQztLLEcsb0M7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Z0I7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7Szs7STtHOztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7STs7Ozs7dUI7OztJO0c7cUMsd0I7O0k7STs7Ozs7OzsyQjs7UyxJLFcsaUM7OztpQzs7Ozs7OztVOztXLG1CO1csTzs7VTtTO1M7VTtZOzs7Ozs7a0YsZTs7UyxPOzs7Ozs7Uzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7O0s7O0c7Rzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHOztJLFU7O0ksSSxXLDRCOzs7NEI7OztHOzs7O0ssSSxxQjtLLE87STtJLE87Rzs7SSxPO0c7O0ksb0I7SSxPO0c7OztLO0s7STtJLE87Rzs7OzJCLE8sMEI7SSxPO0c7O0ksbUI7Rzs7SSxPO0c7O0k7O0ksTztHOzs2QixtQix3QjtJLE87Rzs7cUIsd0I7SSxpQjtHOzJCLGE7O0ksTztHOztJLE8seUI7Rzs7STtrQzs7OzJCOztPOztPOzs7O1E7UTs7Vzs7TyxzQjs7Tzs7USwwQix1Qjs7USxzQjtPLHNCOzs7Ozs7Ozs7OztRO1EsSSxVO1Esc0I7O087Ozs7O1csc0I7O1E7VTtRO2tDO1E7USxzQjtPLHNCOzs7Tzt5Qix1QjtRO1MsTztTLFE7OztTLE87UztRLHVDOztPOzs7USw0Qix1Qjs7OzZCO1E7TyxzQjs7Tzs7O1Esc0I7TyxzQjs7Tyx5Qzs7OztTOzs7VTs7MkI7Ozs7O087OztRLHNCO1E7Ozs4QjtPLHNCOztPOzs7USxzQjtPLHNCOzs7OztRO1M7Ozs7O087O1E7USxzQjtrQztROzs7WTtZOzs7O1k7VztXLE87O1E7NkI7TyxzQjs7Tyw4QjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O087O1EsVTs7USxzQjtPLHNCOztPOzs7Ozs7NkI7OztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRO2tDOztRO2tDOztRO1EsMEI7TyxzQjs7Tzs7OztRO1Esc0I7a0M7O1E7USwwQjtPLHNCOztPLGdDO08sc0I7O087Ozs7O1E7USwwQjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O087OztRLDRDOztRO1Esc0I7a0M7O1E7USwwQjtPLHNCOztPOzs7O1E7UTtRLDRCO08sc0I7O08sMEM7TyxtQixPOztPLDhCO08sc0I7O08sb0IsVTs7Ozs7O087TyxzQjs7Z0M7OztPLGtCLE87O087O087Ozs7O1E7USxtQjtrQzs7UTtRLHNCO1EsMEI7TyxzQjs7TyxnQztPLHNCOztPOzs7UTtRLDRCO08sc0I7O0c7NEI7O0ksdUM7SSxzQjtHOztJO0ksc0I7Rzs7STs7O08sNkI7TyxzQjs7MkI7OzZCOztPOztPLDRCO08sc0I7ZTs7Rzs7SSxpQjtJLDBCO0ksc0I7Rzs7STs7OzJCOzs7Tzs7O1M7Ozs4Qjs7O1k7O1k7O1k7O1k7O29DLG1CLFU7YSxVO2E7WTs7WSx1QixPO1k7OztZOztZOzs7O2dCO2dCO2U7YSxhO21DO2EsTzs7OztnQjtpQjs7a0I7a0I7a0I7MEM7O2lCO2tCO2tCOzBDO2dCOzthO1k7OytCOztZOzthLGlEO2EsWTs7OztnQjs7YTtZOztZOzs7O2EsZTthO1k7b0I7O1E7USxPOztPLDRCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Ozs7OztXO1csc0I7VTs7O087c0M7OztXOzs7OztZO1ksc0I7Vzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7OztPLHNCOztPLHlCO08sc0I7O087Ozs7UTtRO2lDOztRO1EsMEI7TyxzQjs7Rzs7STs7Szs7TSxNO007TTtNO00sdUI7Ozs7Szs7TTtNLHlCOzs7STtHOztJOzs7SztLLFk7SztJO0c7O0k7STs7OztRLDZCO1EscUI7OzJCOztROzs7NkI7UyxNO1M7UztRLG1COztROzs7Ozs7WSxxQjs7O1M7UyxvQjtpQzs7UztTLHdCO1EscUI7O1E7Ozs7UztTOztZOztRLHFCOzs7Ozs7Rzs7STt1Qjs7STtHOztxQixhO0k7SyxpQjtLO0k7Szs7O1M7OztVO1U7VTs7O1U7O1M7VSxlO1U7Uzs7TSxNO00sUTs7OztLOzs7Tzs7MEI7TTtNLFk7TSxHOzs7Ozs7OztTOzs7VTtTOzs7STtHOztJOzs7Ozs7SSxrQjtJLDRCO0k7SywwQjtLLHdDO0c7O0k7SztLLE07cUIscUI7STtLLE0sVztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7SSxJLDJCOztLO0s7STtJO0ssUTs7O2tCLDhCO0k7Rzs7O0s7Szs7Ozs7Ozs7Ozs7OztTOzs7Ozs7O0k7O0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHO0k7STtJO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJLFc7Ozs7Ozs7SyxHLHVDOzs7SSxNO0c7O0ksSSxROzs7Szs7SSxNO0c7O0k7SyxROzs7Ozt1Qjs7OEI7SSxNO0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7Rzs7STs7SyxNOztJO0c7RyxzQjs7STtJOztNOztPO2M7VTs7Szs7Ozs7O00sTTs7Ozs7SyxNOzs7Rzs7STtJO0c7O0k7SztLOzs7Ozs7Ozs7O08sTTs7Ozs7O0c7O0k7Ozs7Uzt1RDtTO1E7SSxPO0c7O0k7Ozs7Uzs7Ozs7O21COzs7O1c7WSxRO1ksVTsyQzs7Ozs7O2MsZSxPOzs7Ozs7O2M7ZTs7Z0IsTTtlOztnQjtnQjs7Z0Isc0I7ZSxPOzs7Ozs7YSxLO2MsTzs7O1c7O1UsTTs7UztRO0ksTztHO0c7STtJO0k7STs7STs7Ozs7Rzs7STtJOzs7O0k7O0ssc0I7SyxPLGtCO0k7SSxHO0ssTTs7SSxTOzs7OztNLE07OztJO0c7OztLLCtCLE87SyxPLDRCO0k7SSxPO0c7O0k7Ozs7Ozs7O1M7O1Usc0I7VSxNO2tCOzs7Ozs7Ozs7Ozs7OztTO1M7VSxzQjtVLFE7VSxVOzs7VSxPOzs7YTs7O2M7O2Esc0I7WTtTOzs7O1M7OztVLHNCO1UsSztVOzs7O2M7Ozs7O2tCOzs7Uzs7VSxPO1UsTTs7UztVLE87OzthO2E7WTtVLE07OzthO2MsUTs7O2E7Ozs7YyxXO2M7ZSxXOzs7Ozs7Ozs7Ozs7O2E7YztlLE07OztlO2M7Ozs7OzthO2MsVTs7O2E7YTtZO1M7Ozs7O1M7VTs7VyxROzs7O1csTzs7YTs7OztTLEksZ0M7Uzs7Ozs7O0k7O0s7Szs7TTtNLFM7TTtNO007TyxPO08sTztNO007O0s7STtJLE87Rzs7STtJO0ssSSxJLFc7Ozs7OztLOzs7b0M7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7Rzs7OztJLFk7c0U7SSxNO0c7OztLLDRCO0k7O0s7TSxTO007d0IsTTs7SztNOzs7VTtVLE8sa0I7UztPLE07Ozs7O007O3lCLG1CLE8sd0I7TyxjO00sTTs7Ozs7Ozs7SztLO0k7Ozs7b0IsTztNLHNDLE87TSxHOzs7TyxJOzs7O0s7MEIsb0IsMEI7SztNLFc7TTtNOzsrQjs7OytCOztNO00sTztLO0ssTztJOztLLGtCLE07OztNLG9CO007O0ssTztJOztLO0s7TTtNLFk7OztLOztpQjtLLE87STs7SztNLE87TSxPO00sVztLLE87STs7MEIsTywrQjtLO00sUztNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7OztLO0s7Ozs7Szs7Ozs7Ozs7TyxJOzs7O1EsSTs7OztTO2lCO1U7OzthOztjO2M7YTtZO1UsTTtTLE07OztRLEcsMEI7MEI7Ozs7O087OztTOztVLFU7Ozs7VyxNO1U7OztXO1U7Vzs7Vzs7O1U7OztTOzs7Ozs7TSxjOzs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztPLE07Ozs7SyxHO007SztJO0k7OztJLEksVyxrQjs7Ozs7O0ssTTs7O0c7OzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7OztJO3NCLE8sYyxnQzs7SyxPLDZCLE8sMEI7STtJLE87Rzs7O0k7Ozs7OztPLEc7Ozs7WSxrQzs7YSxNOztZLGdCO1c7d0I7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs7OztVLGtDOzZCOztVO1M7c0I7OztLOzs7UztTLE87UTtNLE07TTtNO007TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPO1E7OztTOzs7VSxRO1M7O1c7O1ksTztZOztZLE87VztXO1csVztXLE87OztXLG9CO1c7Ozs7O29CO1c7O1UsYTt1QjtVLGU7OztTOzs7Ozs7Ozs7Ozs7UTtNLGE7O007O00sVTs7Tzs7Ozs7O1c7VztVO1EsUTtRLE87USx5QztRLE87USxzQjtPLEc7USxnQjtROzs7Ozs7WTtZLE87VztROzs7OztNLFc7TTs7Ozs7Szs7STtJLG1CO0k7Rzs7NkIsZTs2QixlOztJLFE7VTtJLFc7O0s7OztTOytDOztRO0ssTzs7STtHOzRCLFM7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7NEIsa0IsOEI7UyxPOztTLGtDO1MsUzs7Ozs7Ozs7UyxPOzs7Uzs7Ozs7Ozs7Ozs7Szs7Rzs7SSxJLFcsdUM7Ozs7O0ssTTs7O0c7RztJO0k7O0ksbUIsTztJLFc7Rzs7STtJOzs7Rzs7STtJOzs7O00sSSwwQzs7Ozs7Ozs7O0ssTzs7Rzs7SSxZOztJO0c7O0ksa0I7Rzs7SSx3QjtHOzs7Szs7STtJLE87Rzs7OztLOztLO007O0ksSSxhOztLLCtCO0s7STs7Szs7a0I7OztJO0ksb0IsTyx1Qjt1QixPLHVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7UztTOzs7Ozs7bUI7OztRO0ssVzs7Syx3QjtLLGU7O21CO00sTTs7Ozs7OztLOztPLE07Ozs7O0s7Szs7OztPOztRLE87UTtVO2E7O087OztPO1EsTTs7OztXO1c7VztXO1c7Vzs7O1U7Tzs7Tzs7UTtROzs7Ozs7Ozs7OztTOzs7VTtVOzthO2MsTzthO2MsWTtjLE87YSxPO1k7O1U7Uzs7OztPLE07OztPLE87USxNO087K0IsTywyQjtRLGU7USxPO1EsYztPO08sYztPOztpQixnQztpQjs7O2dCOzs7aUI7a0MsWTtpQixlO2lCOzs7Ozs7MkI7OztnQjs7O087UTtTOzs7O2dCOztTOzs7Ozs7OztPOzs7OztTLEs7VSxNO3NCOzs7UTtTLGE7Ozs7Ozs7Ozs7Ozs7Ozs7TztROzs7USxNOzs7UTs7UyxPO1MsTTtTO1EsTTs7Ozs7Ozs7Ozs7Ozs7O1MsTTs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7Ozs7UTtTLE87UyxROztTOztVLE87VSxPO1UsSztTOzs7USxNOztPO087USxnQjs7O1c7Ozs7O1c7O1U7UTs7UTs7OztTO1MsVTs7OztTO1M7OztZO2EsTzthO2U7Ozs7WTtXO1MsTTtRO1E7UyxVOzs7O1E7UTs7UTtTLE07UyxNO1E7UyxNOzs7O1UsVztVO1U7VyxPO3FCOztVLE07OztTOzs7O1M7NkIsWTtVLFE7OzthLFc7Ozs7Ozs7YyxHO2UsTzs7O2EsTTs7WTtVLE07O1UsTTs7O1E7Uzs7Ozs7OztRO1M7Vzs7O1M7Ozs7O087TztPO087O1E7Ozs7O2E7YTthO2E7YyxPO2MsYztjO3dCO2E7O2dCOzthO2EsTTtZO1M7Ozs7Ozs7Ozs7O1c7Vzs7Ozs7Ozs7Z0I7Ozs7Z0IsTTs7O1k7O1U7O1E7Ozs7WTtZO1c7UTs7Tzs7O1c7Vzs7Ozs7O3FCOzs7VTtRLE87Tzs7aUIsZ0M7aUI7OztnQjs7Ozs7TyxHOzs7UyxNOztPOztzQztROzs7Vzs7Ozs7USxnQjtPLEc7UTs7OztVOztPO1EsVzs7O1c7Ozs7Ozs7WSxPO1c7Ozs7Ozs7Ozs7OztVOztROzs7UyxtQixtQjtROztPOzs7TztRLE07O1E7Uzs7O1MsUTtTO2dCOztTOzs7Ozs7O3dCOzs7Ozs7VztXO1ksUTs7O1c7WTs7Ozs7Yzs7Ozs7Ozs7YyxNOzs7Ozs7O1c7VztXOztZLE87VztXOzs7O1c7O1k7O2E7YSxVOzs7Z0Isc0I7Z0I7aUIsTTs7O2dCO2dCOztZOzs7MkI7WTthO2M7O2M7Ozs7Ozs7O2U7Ozs7OztjO2UsTztlLEk7Yzs7Ozs7O1c7Ozs7bUI7OztVOzRCLG1DO087Ozs7a0MsMEM7UTs7Ozs7Ozs7Ozs7O087Ozs7O21COzs7Ozs7Ozs7Ozs7O087O1EsUztRLGdCO087Z0M7Tzs7aUI7aUI7OztnQjs7O2lCO2lCOzs7Ozs7MkI7OztnQjs7O087UTs7UztTO1MsYTtRO1EsVTs7UTs7O1ksaUIsUztZO1c7UztTO1M7Uzs7O1EsSSxvQjtROzs7Ozs7WTtZO1c7UTs7OztZO1k7VztRO1E7O1M7Uzs7O1k7WTthOzs7c0Msc0IsYTtpQixPO2dCO2E7Ozs7Ozs7Ozs7ZSxLO2dCO2lCLE87aUI7bUI7c0I7OztnQixNOzs7Ozs7O2U7Z0IsVztnQjtnQjs7Ozs7OztnQixNOzs7ZTs7OztnQzthLE07OztXO1M7UyxPOzs7O1E7Ozs7OztrQjs7OztPOztRO1E7OztXOztxQjtxQjtvQjs7VTtPLGU7Tzs7O1c7OzthLE07Ozs7O1c7WTtnQyxTO2E7Ozs7Ozt3QztzQzs7O1c7VTtRO1E7OztROzs7OztZLE07Ozs7Ozs7Ozs7O1M7VSxNO1M7Ozs7UyxrQjtTOzs7Ozs7bUI7Ozs7OztPOzs7Ozs7OztTO1UsTTtTO1UsVTs7OztTOzs7OztXOzs7OztVO1U7cUI7VTtVO1U7Ozs7Ozs7Ozs7UyxNOzs7OztPO1EsTTtPO087USxVOzs7O087O087TyxXO087c0M7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxPO1U7Tzs7O087USxNO087O1EsVTs7O1E7K0IsTyw0QjtRLFE7USxPO1EsTztROzs7USxHO1M7VSxPOzs7YTs7Ozs7YyxROzs7O2U7Ozs7Yzs7OzthO1k7VSxXOzs7VSxPO1U7O2E7Ozs7OztVLE87VTs7Ozs7VSxPO1U7OzthO2E7WTtVLFM7UztVLE07O1M7Ozs7O2E7WTtVLEk7VTtTLE87Ozs7Ozs7Ozs7Ozs7O08sTTs7O087O1EsSztRLE87TztnQzs7OztXO1c7Ozs7OztxQjs7O1U7Tzs7O087USxNO08sSSxJLHlDOztROzs7Tzs7UTtRO087Ozs7Ozs7Ozs7Tzs7OztXO3dCLE87VyxNO1U7UTtPOzs7TyxNO2tDOzs7TztRLE07TztRLFc7Ozs7Ozs7VyxzQixROztZLE07OztXLE87Ozs7Ozs7OztVO087O0c7OztJO0k7OztlOztLOzs7Ozs7OzBCLFM7STtJLE87O0c7OztJO0k7SztLO0s7STtLO0s7SztLO0s7Ozs7OztLO0s7O0c7O0k7OztlOzs7STtJO0s7OztJLE87Rzs7STs7O2U7O0s7Ozs7TTtPLE07OztLO0k7SSxPO0c7OztLO0ssTztJO0ksTztHOzs7Szs7Ozs7O007TSxPO007K0M7SyxPO0k7SSxPO0c7O0k7STtLLEs7SztJO0s7Szs7SSxXO3FCLE8saUI7STtJLEc7Syw0QztJLEk7O0s7Ozs7Ozs7OztLLGtCLHFDO0s7TSxLO00sTztNLFU7TTtROzs7Ozs7TTtROzs7Ozs7SztJO0k7SyxROzs7O0k7Rzs7STtLLE87SyxPO0ssaUI7SyxXO0ssUztJO0k7SyxLO0s7SyxPO3FCLE8saUI7STtJO0s7SztLOztJOztLOzs7Ozs7Ozs7TSxPO00sTztNLE87TTs7Ozs7O1M7TSx1QixxQztNLE87SyxXO0k7STtLLFE7Ozs7STtHO0c7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87O0s7SztLLE87STtJO0k7STtJLE87Rzs7STtJOzs7Ozs7OztVOzs7K0IsOEI7VyxPO1UsVzs7Ozs7Ozs7WSxrQjtZLFc7WTttQzthLE87WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxzQztVLFc7Ozs7Yzs7OztlO2M7ZTtlO2dCO2lCOzs7cUI7b0U7cUI7b0I7NEI7Ozs7OztjO2E7VSxPOzs7VSxPOzs7VSxPOzs7VTtXLE87O1U7O1U7Ozs7O2M7Yyx3Qjs7O2E7VyxPO1UsVzs7Ozs7Ozs7Ozs7VSx1QztVLFc7Ozs7Ozs7OztxQjs7Ozs7Ozs7VTs7OztXOzs7Yzs7O2lCOzs7a0Q7O2lCO2lCOztpQjs7aUI7O3FDO3lCOzthO1csTztVO1c7Ozs7ZTtlOzs7YztZLE87WTs7Ozs7O1U7VyxPOztVOzs7Ozs7Ozs7TztPLFc7Ozs7TTs7Szs7Rzs7STs7O0k7STs7OztROztTOzs7WTs7Ozs7b0MsOEI7ZSxPOztlOztnQjt1QyxpQztlLE87Ozs7Ozs7Ozs7bUI7bUI7a0I7ZSxPOztlOztlOzs7O3VCOztZO1c7USxPOztROzs7OztRO1MsTzs7UTtnQjs7O0c7O0k7OztJLFk7O0k7SyxPOztJO0c7O0k7OytCLDhCOztJLFU7O0s7O00sVzs7TSxNO0s7STtJLE87Rzs7O0ssZTs7TSxNO0s7STtJLE87Rzs7STs7Ozs7TSxPOzs7STtHOztJO0k7Ozs7O1M7OztVO1k7MkI7ZTtVO1MsTzs7Uzs7VSxzQjtVLFc7UyxPOztTOzs7VSxVOzs7VTtZO1UsTztTO1Usc0I7VSxNO1MsTzs7OztLLE87O0c7O0k7STs7Ozs7Ozs7O1U7O1c7VyxjO1UsTzs7OztTOzs7VTtZOzJCO2U7VTtTLE87Ozs7Ozs7O1M7O1Usc0I7VSxXO1MsTzs7Ozs7O1M7OztVO1U7UyxJLHVDOzs7OztVLE07Ozs7Uzs7OztVOzs7O3NCO1M7UyxJLHlDOzs7Ozs7VSxNOzs7O0ssTzs7Rzs7STtJOztLO00sUztNLEc7TyxXOzs7Tzs7O1E7UTs7Ozs7O00sVztNLFc7OztJLE87Rzs7O0k7STtJO0ksVTtJOzs7Szs7O1c7TSxVOzs7SztLO0s7SztLO00sVTs7O007Z0I7SztNLGM7TSxzQjtLLE07O0ksTTtHOzs7SyxTOztNOztPLEcsb0M7Ozs7Ozs7Ozs7O1E7UTs7Ozs7Ozs7Ozs7OzsyQixpQztNLFk7O00sTztLOzs7OztxRCxZOzs7Ozs7Ozs7Ozs7c0MsaUM7YyxHO2U7Ozs7Ozs7Ozs7cUMsc0Isb0I7a0IsTzs7O2tCOzs7cUMsc0Isb0I7a0IsTzs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7a0IsTzs7Ozs7O2M7OztTOztLO0k7STtHOzs7SyxJLE8sMkIsTztLLFc7MEIsTTtLO0ssTztJO0ksSSxXLDJCLGM7Ozs7SztLOztHO0c7O0k7O0ssRyxvQixNOzs7Ozs7NkIsTzs7Ozs2QixPOzs7O2lDLGtCLGU7UyxPOzs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7Ozs7bUIsTztLLHNDOzs7OzRCOzs4Qjs7Ozs7O3FCLFk7SSwrQjtHOztJO0k7Ozs7Ozs7O0s7TTtNOzs7Ozs7Ozs7O1EsTTs7Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFc7OztLLDhCLE87Ozs7OztNO08sUTtPLE07TyxNO087Ozs7Tzs7O1EsTztRLE87USxPO087USxXO1E7UyxXO1M7VSxXO1U7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0k7Rzs7SSxrQixPOztJLEksa0I7Ozs7Ozs7OztPO087TyxNOzs7OztHOztJO3VDO0c7O0ksMkI7O0s7O0k7SSxVO0k7STtHOztJO0k7Szs7SztJO0s7OztLOztRLFc7UTtPO0s7STtJOzs7Szs2Qjs7OztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7USxTO1E7O2U7O1E7Ozs7O1MsRzs7OzttQjs7Ozs7OztPOztROzs7OztrQjs7OztPO087UTswQyxtQztvQyx1Qjs7O1k7WTs7Ozs7OztZO1c7Uyx1Qiw0QjtTO3VCLGtCLG1DO21DLGtDO2lDLHdCOzs7WTtZO1c7OztZOztlOztlO3VCOztXOzs7WTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7dUI7O1c7OztZO2Esa0I7YTs7WTtZO1c7OztZO2E7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7Ozs7OztlOzs7Ozs7Ozs7ZTs7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O1c7OztZLDRCOzs7YTs7O1k7Vzs7O1k7Ozs7O1k7Vzs7O1k7YTs7OztlOzs7ZTs7Ozs7O2U7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7OztlOzs7ZTs7Ozs7O2U7Ozs7OztlOzs7Ozs7OztlOzs7Ozs7Ozs7ZTs7OztlOzs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7OztlOzs7Ozs7OztlOzs7Ozs7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOztlLE07O1c7OztXOztTOzs7Ozs7O1EsTTs7O087Tzs7Ozs7Ozs7OztVOztXOzs7Ozs7OzBCOzs7Ozs7Ozs7Tzs7O1E7OztpQjtROzs7OztROzBCO087Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7UTs7O1MsVztROzs7Ozs7Ozs7O08sSztRLE07Tzs7USxPO1EsTzttQjtRLE87USxPO1EsTztRO3FCO1EsTztRLE87USxhO1E7USxPO1EsTztRLFM7USxPO1EsTTtRO2M7USxPO1EsZTtRO1U7USxXO087Ozs7Ozs7Ozs7TztRLE07Tzs7O1c7OEI7Vzs7WTtZOztXLFM7Vzs7Vzs7WTthLFM7YSxHLHlDOzs7O2M7ZSxXO2U7Ozs7O2dCLE07Ozs7YztlOzs7OzthOzs7VztXO1U7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7VztXO1k7Ozs7Ozs7Ozs7Ozs7OztVO1c7WTs7Ozs7Ozs7OztPO087UTs7O1k7WSxPO1c7VyxPO1U7UTtROzs7Vzs7Ozs7WSxXO1k7Ozs7O2U7Z0IsSztnQixLOzs7d0I7ZTt1QjtlOzs7Ozs7b0I7Z0Isb0M7Ozs7Ozs7Ozs7O2dCO2dCLEc7aUIsZ0M7Z0I7ZTtZOzs7Ozs0Qjs7Ozs7VztZOztnQjs7Ozs7WTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXLGU7VyxNOzs7UTtPOzs7UTtTOzs7Uzs7Uzs2QixXLHlCO1UsUztVLE87VSxPOztVO2tDLHlDO1csTztVO1c7K0IsdUI7WSxPO1c7WTthLHNCO2EsTzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7O1E7OztVLHVCO1U7O1ksVztZO1ksSTs7Ozs7Ozs7OztVO1c7WSxPO1ksVzs7O1k7Vzs7Ozs7O1E7O1MsWTs7Ozs7Ozs7Ozs7OztVO1c7WSxXO1ksVzs7Ozs7Ozs7Ozs7Ozs7VztXLFM7OztZOzs7Ozs7OztzQzs7VztXO1ksUztZLFc7Ozs7Ozs7OztZOzthLG1CO2M7Ozs7a0I7a0I7Ozs7aUI7Ozs7OztpQjtnQjs7WTtXOztZOzs7WTs7cUI7cUIsd0I7b0I7Vzs7OzthLE07Ozs7Ozs7aUIsMEI7Ozs7Ozs7a0I7a0IsTyx3QjtpQjtjLEs7Ozs7bUI7a0I7ZSxHOzs7Ozs7OzthLE07Ozs7Ozs7OztZLGU7Ozs7Ozs7O2EsYTs7OzRCO2E7YyxnQjtjOzs7Ozs7Ozs7YyxlO2M7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztRO1M7Vzs7OztTLE87OztZO3dCOztZLGtCO1c7UyxTO1M7UyxZOzs7O087Tyx1QixPO087TztPLEkscUI7Ozs7Ozs7a0MseUM7VSxPOzs7Ozs7O087TztPO08seUI7TztPO1E7Ozs7O1E7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087K0IsTywyQjtRLFc7USxXO087O1U7dUM7UztPOzs2QixnRDtRLE87UTsyQixZO1EsVztPO3VDOzs7Tzs7O087OztRLGU7TztRLGM7OztTLGM7Ozs7OztZOzthLFE7YSxTO2EsTzthLFc7YSxPO2EsVzs7Ozs7Ozs7O2U7O2dCO2dCOzs7Ozs7Ozs7ZTs7OztZLE07Ozs7OztRLE07Ozs7O1E7O1Msc0I7UyxROzhCLGM7UyxXO1M7Uzs7OzthOzs7OztROzs7OztrQjs7Ozs7O087USxNOzs7MkI7UTs7UztTOzs7Ozs7Tzs7O1c7WTthOzs7O29COzthO1k7Ozs7bUM7OztVO1E7Ozs7Ozs7OztpQztRO1Msd0I7O1UscUIsTztVO1U7VyxPO1csTztVO1U7Ozs7Ozs7OztPOzsyQixTOzs7VyxPO1U7UTs7UTs7Ozs7YTs7Ozs7Ozs7Ozs7O087O1UsVztVOzZCO1M7O087Ozs7OztVLE07Ozs7O087YztROzs7WTs7VztXLE87VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTthOztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7Ozs7WSxJOzs7OzthO3FDLG9CLGM7YztnQjthO2M7O2tDLFk7ZSxjOzs7OztlLE07OzthO2M7Ozs7Z0M7O2tCLEs7bUI7a0IsSTs7O2M7YSxNOzs7O1k7VztTLHNCOzs7O1EsTTs7Ozs7OzthOztnQjtPO21COzs7b0MsdUI7UTtVO1E7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztRLFc7OztPO087OztPOzs7O1E7Ozs7UTtrQztROzs7Ozs7Tzs7USxNOzs7Tzs7Ozs7aUI7Ozs7Tzs7USxPO1EsYTtPOztVO3lDO1M7Tzs7eUIsa0Q7USxPO1E7Tzs7Ozs7aUI7Ozs7Tzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087Tzs7Tzs7O1E7UTtPOztPOzs7UTtRO1E7Tzs7Ozs7aUI7Ozs7Tzs7Ozs7O1E7UTs7O2tDOzs7UyxNO1E7O1MsTztTLE87UyxXO1MsdUIsZTs7Ozs7OztPLEksbUQ7Tzs7Ozs7aUI7Ozs7O087TyxJLE0sc0M7TztPO087USxPO1E7O3FDO087Ozs7Ozs7Ozs7OztRO1E7UyxXOzs7O1MsVzs7OztRO1MsYztTO1M7Uzs7Ozs7O1MsTTs7O1E7UTtRO1E7UztTLE87Ozs7OztzQzs7O1E7UyxXOzs7O1E7UTtRO1E7UyxLO1M7UTtROzs7UyxPOzs7Ozs7Ozs7Ozs7OztZLEs7O1k7Ozs7OztTO2lCO29CO1U7VztZLE87bUI7VztZO1k7WSxJOzs7Ozs7WTs7Ozs7VTtXLGM7VztXOztvQjs7Ozs7Ozs7VyxNOzs7O1M7VSxXOzs7UztTLEk7Ozs7O1U7O1csVztVLE07Ozs7Ozs7Tzs7Ozs7Ozs7OzswQjtPLEksMkI7Tzs7Ozs7Ozs7Ozs7YztlLFc7OztlLE87YyxHO2U7Ozs7O2MsSSxnQjs7Ozs7ZTtzQztnQixrQjtlLE07OztjO2UsVztlLFc7ZSxXO2UsVzs7Ozs7Ozs7O2U7O2tCO2dCLGM7Z0IsVzs7O2U7ZSxXO2U7ZTtnQjtnQixVO2dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Z0I7Ozs7O1M7Uzs7USxJLFE7Ozs7O1k7YSxRO2EsTzthLE87WTs7Ozs7O2E7OztjOztzQjt3Qjs7O3dCOzs7OztTOztTOztRLE07Ozs7Ozs7Ozs7OzZDLHFCOzhCOztTLGU7Ozs7Vzs7dUI7WTs7O2U7OztrQjs7Ozs7OztRLE07Ozs7Tzs7USxXOzs7UTs7USxNOztPLHlCO087Ozs7O2lCOzs7O087OztRLFc7Ozs7O087USxNOztPO1E7O3NDO1EsVztvQjtRO087Ozs7O2lCOzs7Ozs7Ozs7Vzs0QixPLGdDO1csRztZLE07O1c7VTtPO087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7WTthO2MsUTs7O2M7Ozs7OzJDO2E7Ozs7OzthO2M7O2dELHNCO2MsUzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxRO087TztRLFU7USxPO087Tzs7USxRO1EsTztRLE87UTs7O1E7O1MsVzs7Ozs7OztPO087O087TztPOzs7Ozs7Ozs7Tzs7O1EsVzs7O1E7Tzs7Tzs7UTtROzs7Ozs7d0I7Ozt1Qjs7Tzs7Tzs7USxRO1EsYTtPOztVO3lDO1M7TyxJLG9EO087Ozs7O2lCOzs7OzswQjs7UTs7UyxRO1MsUTtTOztpQjs7UTtTLFE7Ozs7UTtROzs7UTs7VyxXO1c7OEI7VTtPLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7Ozs7WTsrQjtZO2EsVzs7OzthO2E7O1k7WTtZOztZOzs7YSxPOzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7OztPOztPOzs7UTtVO2E7YTtPO087USxTO1EsVTtRLFc7OztRO1EsTzs7O1csRywyQztXOzs7Ozs7NkIsTzs7O1csTztVO1EsTTtPO087Tzs7Ozs7Ozs7O087O1EsTzttQjs7OztXLE07O1cseUM7Ozs7b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsTztRLFc7OztRO087Tzs7Ozs7OzswQjtPOztROzs7USxVO1EsVzs7Ozs7Tzs7UTs7O1MsUTs7UztTO1c7Ozs7O1MsUzs7Ozs7TztRLGlCO1EsVTtRLFk7USxjO1E7Ozs7Vzs7USxRO08sSTs7Ozs7USxNOzs7O1E7UTtRO1E7UTs7Tzs7OztXO1k7Ozs7Ozs7Ozs4QjtXO1k7OztZLFU7WSxTO1ksVTtZLFk7WSxjO1ksUTtXLEk7Ozs7O1ksTTs7OztZO1k7WTtZOztXO1k7OztZO1c7WTthLE87YSxPO1k7Ozs7Ozs7WSxNOzs7VztXO1U7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7Ozs7Ozs7OztROztTO1M7UztTO1MsTztROztPLE07Ozs7OztRLE07bUM7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7Rzs7STtJO0ssUTs7O0ssVTs7OztzQzs7Ozs7SSxXOzs7Ozs7Ozs7Ozs7O0ssTTs7STtHOztJOztLLE07Szs7O0s7Ozs7OztzQjs7O1M7O1UsVzttQjs7Ozs7O0k7Rzs7O0k7Ozs7OztLO00sVzs7O2tEO0ksYTtJO0s7TSxPO00sUTs7Ozs7SyxJLEs7O00sTTs7SyxNOzs7Ozs7Ozs7SSxHO0ssUztLLEksNEI7Ozs7O08sTTs7Ozs7OztJO0s7SztLOztJO0s7Ozs7Ozs7Ozs7OztLLE87STtLO007OztNLHNCO00sTztNOzs7O0k7Z0I7Szs7STtLO0ssTztJOzs7OztjOzs7Rzs7SSxtQjtJOztLO0s7OztJO0s7TTs7OzthOztNOzs7Ozs7OztJO0ssUzs7OztLOzs7Ozs7Ozs7STtHOzs7STtrRDtJLGEsMEI7STtLLFE7Ozs7STtLO0s7Szs7STtLO00sTztNLE87Szs7Ozs7O0ssTTs7O0ksZTtJLGEsMEI7OztNLE07O0ssTTs7O0k7aUM7Szs7b0M7STtJOzs7O00seUI7TTs7TTs7O08sTzs7Ozs7OztLO0s7TTtNO007TTtNO007TTs7O08sTztPO00sc0I7TTtNOztNOzs7TyxPO087Ozs7Ozs7O1EsTTs7TSxNOzs7STs7Ozs7SztNOzs7TTtnQjs7SyxvQjtLLE87STtJOzs7O1M7VSxROzs7Ozs7VTs7UztRO0ssRztNO08sTztPO08sMkIsTyw0QjtjOzs7Ozs7O0k7Szs7O0s7Szs7O3VCO0k7O0s7Szs7Ozs7Ozs7Ozs7O087USxjOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztZOzs7OztLOzs7O3NCO0s7OztTO1UsSztVLE87VSxPO1U7VSxVOztVOzswQjs7Ozs7OztTOzswQjs7Ozs7OztRO007Ozs7d0Isa0IsTyw0QjtNLFk7SztjO0s7TTs7Ozs7Ozs7Ozs7TTs7OztVOzs7Ozs7TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07Rzs7STs7O0k7SztNOzs7O2E7O007Ozs7Ozs7O0k7SyxVOzs7OztLOzs7Ozs7Ozs7STs7Ozs7OztPLHVCOzs7Ozs7Ozs7OztJO087SyxXO0ssTTs7O2tEO0ksYSwwQjtJO0ssVTs7O0s7STtLO0s7Szs7O1E7UyxPOzs7UyxPO1E7O087SztLO0s7O0ksYzs7SyxNO0k7OztLOztLLHVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0ksVzs7SztLO0k7SSxXOztLOzs7Ozs7Ozs7SyxNOztJLE07Rzs7STtJO0k7STtLLEs7SyxLO0ssTztLOzs7OztNLGlCOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7SyxrQjtLOzt1QiwwQztLOztJO0k7STtHOztJLEksSyw2Qjs7SztLO0s7TSxVO00sTztNLE87TSxPO00sTztLO0s7O00sUTtNO00sUTs7O0s7SztJO0k7SyxROzs7SztLO0s7SyxPO0sscUI7O0s7SztLO0s7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7STt5QixrQixTO0k7SyxXO0s7TztJO0s7OztTO1UsTztVLE87UyxXOzs7VSxvQixRO2lCOzs7OztlLGtCLFE7O2dCLE07ZTtjO1c7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7O087Ozs7Ozs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O0ksa0I7SSx3QjtJO0ssTTtLO0k7STs7Szt3QjtLO0ssa0I7SztLO0s7SztNO007TSxNO00sVTtNLFE7OzBCOztNO007TTs7O08sTzs7Ozs7SztLO007TTs7O1U7d0Y7VTtTO0s7Ozs7Ozs7YTtJO0ksdUI7eUIsMEIsaUI7SSxXO3lCLDhCLHFCO0k7eUI7Ozs7TTtPLGtCOztrQjs7O0s7TSw4QixXOzs7O0ksZTs7O007TTtLO0ssTztJO0k7SSxHO0s7TSxzQjtNLE87SztLOzs7cUIsTyxpQjtJOztLLFc7O0s7SyxPOzs7aUIsVztpQixPO2dCOztJO0k7STtJOztLO0ssTztJO0k7STs7YTs7Szs7Ozs7Ozs7O007d0I7TSx1QixlO007OzBCLGU7O00scUMsTztNLHNCO0s7SyxnQjs7TTtNLFM7TTtNOzs7O21DO0s7Ozs7Ozs7O0s7TTs7Ozs7Ozs7O00sTztLO0k7STtLLFE7SztLOztLO00sVzt5QixzQztLOztJO0k7SztNLE87cUI7Ozs7SztNOztTLFk7O1M7Ozs7Uzs7Ozs7VSxROzs7VSxNO1MsbUI7UztRO00sTzs7Ozs7Ozs7YSxNOzs7Ozs7OztNOzs7TztPOzs7Vzs7WTs7OzthLFE7YTs7O2dCOzs7aUIsTztpQixvQjs7ZTs7aUI7YTs7ZTtvQjs7OzJDOzs7YTtjOzs7aUI7Ozs7O2MsTzs7O2MsTzthOzs7Ozs7WTs7VztVO00sTyxXO0s7SztpQiwwQjtLO0s7aUI7SztLLE87STtJO0ssa0MsdUI7O0s7O0s7SyxXO0ssMEI7O0k7Rzs7O0k7Ozs2QixlO0k7OztvQyxlO0k7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7O007Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7O0s7STtJLFk7eUIsTyw0QjtJLG1CO0k7SSxJOzs7O007O0s7SyxPOztJO0ssVztLLE07SyxPOztLLHFDLE87SyxzQjtJO0k7SyxVO0s7SyxRO3dCO0k7SyxhOztJOzs7O1M7Ozs7Vzs7Ozs7WSxPOzs7Ozs7UztRO0s7OztLO0s7Z0I7Ozs7STtJOztLO0s7Ozs7UztTOzs7VSxPO1M7UTttQjs7OztxQixPLGlCO0k7STtLLHFCO2lFO0s7O0k7O1k7O00sTTs7Ozs7UyxzQixPO1MsTzs7bUI7UTtnQjs7OztJLEksdUI7OztNO08sTztPLE87TTs7O087USxPO1EsTztPOzs7Ozs7O007SztLLE87STtJOztPOzs7TSxpQztNO087TztPLE87O087USxLO1EsTztRO1EsTztPOzs7O3VCO2dDOztROztXOztXOztZLE87VyxPO1U7O1E7Ozs7Ozs7USxXO1E7Ozs7TztPLE87TTtNO007SztLLE87STtJO3FCOztLOzs7OztLOzs7O3lCO007TyxVOzs7O087Tzs7TTs7O1U7OztTO08sUTtNOzs7TTs7O0s7SyxVO0s7STtJOztPOzs7O0s7TSxROzs7TSx1QixPLHlDO0s7OztLO0s7STtJLFc7O0s7O007TTtNO0s7SyxPO0k7STs7Szs7OztNLE87SztJO0ksWTtJOztLLG9CO0s7STtJO0k7O0s7Szs7Syx5QjtLOztJO0k7SSxROztLO0s7STtJLFU7STs7OztTLG9COzs7O2E7O2dEOztTLE07UTtLOzs7SztxQzs7O007b0Q7TTtLO0ssZTs7STtJO0k7Rzs7STtJOzs7Syx1QixlO0s7O3lCLGU7Ozs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtJO0k7STtJLHlCO0k7OztLOztNO2E7Szs7STtHOzs7SyxPO0k7SSxPO0c7OztJO0ssa0I7O0s7STtJLE87Rzs7STs7Ozs7Ozs7NkM7Ozs7OzBCOzs7OzswQjs7Ozs7MEI7Ozs7TTs7Uzs7WTs7O2M7OztnQjs7O08sVzs7TTs7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJOztLOzs7Ozs7OztJO0ksTztHOzt5QiwyQjtJLE87Rzs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7O087OztROzs7Ozs7Ozs7Ozs7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Ozs7Ozs7VyxXO1c7VyxXO1csdUI7VTtPLE87O087Ozs7UTs7Ozs7Ozs7Ozs7Ozs7TztRO3dCLE8sMEM7O3dCLE8sMEM7Tzs7Ozs7OztrQjs7Ozs7TyxvQixPOztRLE87Ozs7Ozs7O08sTzs7Ozs7Ozs7O087Ozs7UTs7VztZLE87VyxXO1csTzs7UTsyQjtPLE87Ozs7Ozs7Ozs7O08sTzs7Tzs7UTs7O1ksVztZLE87VztXLE87VTtPLE87Ozs7TyxPOzs7Ozs7Ozs7Ozs7OztZO1ksRzthOzs7Ozs7OzthOzs7YyxPO2M7O2lCOzthOzs7Ozs7Ozs7Ozs7O1k7VztXLE87VTtPLE87O087Ozs7O1EsWTtRLFM7UTs7OztZLE87O1c7O1ksTzs7Ozs7Ozs7Vzs7WSxPOzs7Ozs7OztXO1csTzs7VTtPLE87OztPLE87Ozs7Ozs7Ozs7WTtnQzs7WTtXO1csTztVO08sTzs7Ozs7Ozs7VztXO1U7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7OztXO1c7VTtPLE87OztPLE87Ozs7Ozs7O1csTzs7Ozs7OztVO08sTzs7O08sTzs7Ozs7Ozs7Ozs7WSxPO1c7O1k7YSxROzs7YSxPO1ksTztXO1c7O3FCOzs7Ozs7OztVO08sTzs7O087UTs7O1k7O1EsTzs7O087OztXOztPLE87Ozs7Ozs7UTtTLE87Z0I7Tzs7O1c7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7O08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O087Ozs7Ozs7Ozs7Ozs7OztPO1E7OztZLE87eUI7VztTLFU7Ozs7O1MsTzs7OztPLE87OztPLE87Ozs7Ozs7Ozs7O08sTzs7O08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7USxPO1EsTztPLE87Ozs7Ozs7Ozs7OztJOztLOzttQzs7STtHO0c7Ozs7STtHOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPOztJLG9COztJO0k7Ozs7Ozs7Uzs7Ozs7OztTOzs7O0s7Z0Msa0IsTyxvQjtLOztNO00sTztLO0ssTztHOztJO0ssTztjO0s7O0s7SyxPOztlO0k7SSxPO0c7O0k7STs7Ozs7UTs7UTs7OztTO1EsTzs7Rzs7STtJOzs7UTs7UTs7O0c7O0k7SyxPO0s7SyxPO2M7Szs7SztLLE87STtJO0ssTzs7O29DLHNCO0ksVztHOztJLGlCOztJO0c7Ozs7OztROzs7UyxPO1E7Ozs7O1E7Ozs7O1k7WSxPO1c7UTs7Ozs7WSxtQixPO1ksTztXO1EsTzs7O1E7Ozs7cUIsc0MsWTs7STs7OztLLFk7SyxZO0ssTztLLDZCO0ssUTs7O0s7STtHOztJOztLO00sUTs7Ozs7O00sTTs7SztNLE87TSxPO0s7Ozs7Ozs7Ozs7O00sTTs7Ozs7Ozs7Ozs7Ozs7O0s7STtHOzs7STtJOztLLE07O0ksSTs7Ozs7Ozs7Ozs7USxNOzs7OztLLE07O0k7SyxhO0s7OztLO0ssc0I7STtJO0ssYTtLLFk7Ozs7O2tDOzs7YTtPLDBCO087O2E7TywwQjtPOzs7O0s7TztVO00sTTs7STtLLGdCO0ssYztJO0c7Rzs7STtLLE07SztLLFE7SztJLEk7Ozs7O0ssTTs7O0k7Rzs7cUIsTyxrQztJO0ssWTtLO0ssTztLLE87SSxPO0c7OztJO0s7ZTtNOzs7Ozs7OztJLE87Ozs7O007SztLOzs7UTs7O1MsVTs7O1EsRztTLE07O1E7UyxVOzs7UyxPO1c7UztVLE87VSxPO1MsTTs7O1E7OztZLEksTSwwQztZLEksMEM7Ozs7OzthLE07OztXO1MsTztTO1E7O1E7Ozs7UztTLFc7Ozs7UyxPO1M7UztTLFk7UyxPO1MsTztRO1EsSTs7OztVLE07Ozs7UTs7O1k7WTs7Yzs7Ozs7ZTttQyw4QjtjOzs7aUI7O2tCO2tCOzs7Ozs7OztpQjtrQjs7Ozs7Ozs7Ozs7a0I7b0I7aUI7Ozs7OztpQjs7Ozs7O2tCLFE7a0I7a0I7aUI7Ozs7OztpQjs7Ozs7Ozs7b0I7Ozs7O3FCLEksMEM7Ozs7OztzQixNOzs7O29CO2tCLE07a0I7Ozs7OzttQjs7b0IsTTtvQjtvQjs7O3VCO3dCLE07d0I7dUI7Ozs7c0I7O3dCOzs7O2tCO21CLE07bUI7a0I7OztpQjs7O3VCOztpQjs7Ozs7O2lCOzs7O2tCOzs7aUI7Ozs7Ozs7aUI7aUI7Ozs7Ozs7aUIsTTs0Qzs7O2E7YSxPOztZLE87VztTLFE7Ozs7O1M7Uyx3QjtTO1E7O1E7Ozs7UyxRO1M7UztXO2M7O1M7UztROzs7USxNO21DOztROzs7UyxVOzs7UztROztJO0ksTztHOztJO0k7SztLLE87Ozs7Ozs7STs7STtHOzs7STs7Ozs7Ozs7Szt3Qiw2QjtJO0s7OztLOzs7Tzs7OztRO1E7Ozs7O087UTs7Ozs7Ozs7Ozs7O1E7Ozs7Vzs7O1k7OztZOzs7OztXO1U7USxVOzs7Ozs7O1csb0I7VTtRLFk7O1E7OztTOzs7OzhCLGU7Ozs7Ozs7Ozs7OztPOzs7OztrQjs7Ozs7Ozs7Ozs7OzJCO1E7UyxRO1M7O1M7Uzs7UTtTOzs7O1E7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7O08sRztRLE07Ozs7Ozs7TyxHO3dCOzs7USxNOzs7Ozs7OzBCO08sVTs7UTtROztPO1E7Ozs7USxPO1EsTztPOzs7OztrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztjO1MsTTtTLE07UztRLEk7Ozs7O1MsTTs7O1E7Ozs7aUM7Ozs7Ozs7O08sMkM7Ozs7cUI7O08sRztRLE07O08sRzt3Qjs7O1EsTTs7OztVOzs7Ozs7UztVOztXLFE7VyxRO1c7VTs7UyxjOzs7OzthO2MsTztjLE87YTthLFc7YTs7O2E7OztzQjtjLE07YTs7Ozs7O1MsTTs7USxNOzs7Ozs7USxNOzs7O087UTtROzs7VztpQjtZLE87WSxZO1c7O1c7bUI7VztXO1U7USxRO1EsTztPOzs7ZTs7Ozs7O087Ozs7UTs7O087OztxQzs7Ozs7Ozs7Tzs7UTtRO1E7OztZO1k7YSx5QjthLE87YSxZOztZO29CO1k7WTs7Tzs7Ozs7Ozs7OztPO087O3dDOzs7Ozs7OztPLE07a0M7Ozs7STs7O0s7SztLLE87SyxZOztLO00sTztNLE87Szs7STs4QjtLO087Ozs7Ozs7O0s7STtLLEksTyxrQzs7O0ksSTs7OztNLE07Ozs7O0s7TSxPO00sTztLLE87STtJO0s7TTs7O1M7Ozs7VSxVO1M7VTtXLE87VyxPO1U7OztVLE07O1E7Szs7STs7Szs7Ozs7Ozs7OztLOztPOztNO00sTzs7SyxPO0k7STtLLFU7Ozs7SyxPO0k7OztLO0s7STtJO0s7OztROzs7Szs7SztrQjtJO0ksaUI7O0s7SyxPOztnQjtJO0k7O1k7TSxNOztLO007TTs7OztTO1M7UTtNLE87Ozs7TSxNOztLO00sTzs7O1M7Ozs7VSxnQjtTLE87UTtNLGU7SztNLFc7TTtNOzs7Ozs7TSxNOzs7Ozs7SztLLE87STtJOztLO0ssZTtJO2U7O0ssa0IsTztLLE87STtJO0ksVzs7Ozs7OztJLEksVyx5Qzt5QixtQixVO0k7SyxVO0s7O0s7a0I7STtJLGdCO0kscUIsa0IsUztJO0ssUTtLLEs7SyxLO3FCLE8sbUM7SSxZO29COzs7Ozs7Ozs7WTtJOzs7O0s7STtJLE87Rzs7STs7O087OztRLFU7OztPLEc7USxNOztPOzZCLE8seUM7USxNO1EsVTs7O1E7USxPO1U7UTtTLE87UyxPO1EsTTs7Ozs7O1c7VztZLFc7WTs7Ozs7O1ksTTs7O1U7TztPO1E7UTs7OztPOzs7Ozs7OztPOztROzs7Tzs7OztROzs7O1M7UyxPO1MsTztvQjtTLE87UyxPO1MsTztTLGtCO1MsTztTLE87UyxhO1MsTztTLE87UyxTO1M7ZTtTLE87UyxPO1MsTztTO1c7UTs7OzBCO087USxVOzs7Ozs7UTtROzs7O1ksTzs7UTs7Tzs7O1c7OztZO1ksSztZLE87O1ksVztXOzs7OEI7Ozs7OztVO1EsTztRLE87USxRO1E7VTs7Ozs7OztPO087TztPLFc7Tzs7Ozs7O1U7Ozs7Ozs7Ozs7Ozs7O08sUztPOzs7USxjO087Ozs7Ozs7OztPO1EsTTswQjtPOztROztROzs7Ozs7O1E7OztTLEc7OztVLEk7O1E7UyxPO1MsTzs7UztpQyx5QztVLE87UztVOzhCLHVCO1csTztVO1c7WSxzQjtZLE87WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7O1U7O1csbUI7WTthLE87YSxNO2EsTTtvQjs7O3NCOztVO1M7O1UsVztTOzs7O1csTTs7Ozs7OztlLHdCOzs7Ozs7O2dCO2dCLE8sMEI7ZTtZLEs7Ozs7O1csTTs7Ozs7O1UsYzs7Vzs7Ozs7WTswQjtXO1ksZ0I7WTs7Ozs7Ozs7O1k7YztpQjs7Ozs7Ozs7O1M7O1U7Ozs7Ozs7Ozs7UTs7O1k7WTtXO1MsUTtTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVzs7O1E7USxPOzs7Vzs7OztZO1ksSztXO1c7WSxPOztZLFc7WTs7eUI7Ozs7OztXO1c7VztZO1ksTztZLE87Vzs7bUI7VTtRLFc7OztROzBCO087Ozs7Ozs7OztPO087USxVO1E7TztPO1EsWTtRO087TztPLG9CLE87TyxtQjtPLHNCLE87TyxtQjtPLFk7O1EsTTs7TztROzs7O1E7USxPO087Ozs7Ozs7OztPLE07a0M7O087OztRO1E7VTs7OztVO1E7Tzs7RztHO0ksTTtJLGE7O0k7STs7OztROzs7UztXO2M7YztTO1EsTzs7Ozs7Z0IsTzs7O0c7O0k7dUIsTztJOzs7SztPO1U7VTtLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7Ozs7Ozs7O0k7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTztNLE87TSxPO00sTztNLE87TSxPO0s7O2E7Ozs7O0k7SSxZO0k7STtJO0s7Ozs7Ozs7OztNLFE7TTs7OztNOzs7O00sYzt3QjtLOzs7TSxvQjtNOzs7O007O007dUI7TTtROzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7OztJO0ssUTs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPOztJO0ssVTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7OztLLEk7Ozs7O00sTTs7O0s7TSxZO00sTztNLE87Z0I7O007OztPLE87TSxXO00sWTtvQzs7TSxPO0s7SztLOztLO0s7SztLO0s7SztLOztNLE87TSxPOzs7Ozs7Ozs7UTs7Ozs7OztZOzs7YSxPO1k7Ozs7OztPLHFCLE87Tzs7Ozs7O1k7O2EsTzthOztXO2dCOzs7Ozs7TTs7TyxPO2M7Ozs7O00sTTs7SztNLE87TSxROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztNOzt5QixPLHdDO3lCLE8sMkM7SyxNOzs7STtLLFE7SyxRO0ksSSxjOzs7Ozs7SyxNOztJLFk7STs7Ozs7Ozs7Ozs7TTtPLE87Yzs7O0s7TSxPO00sTztNLE87TSxPO00sTztLLE87O0ksWTtJOzs7Ozs7Ozs7Ozs7Ozs7OztNLGtCOztPOzs7USxVOzs7USxVOzs7USxPO087TyxJOzs7OztRLE07OztjO1EsTTs7OztNLE07O0s7Ozs7Ozs7Ozs7Ozs7O0ksWTtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztJO0k7OztLLEksZSx1Qzs7OztPLE07Ozs7SSxnQjt5QixvQixjO0k7SyxTO0s7STs7SztNLFE7TSxPOzs7Ozs7SyxNOzs7STtJO0ssTTtLLE87Yzs7Szs7O00sTztLLGM7STtJO0ksSSxLLDRCLE87STtJO0k7SyxROzs7SyxTO0ssSztJO1c7SyxNO0k7SyxXO0s7Ozs7O0s7OzZCO0ssTTs7SSxJOzs7O0ssMkI7SyxNOztJO0ssVTs7O0ssTztJO0ksVztJO0k7SyxXO0s7Ozs7O0s7TSxPO00sbUI7SyxNOztJLEk7Ozs7SyxlO0ssTTs7O0k7SztNLE87TTtLOzs7Ozs7SyxNOzs7STtLLE87SyxlO0s7OztLOzs7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTs7SztNLE87TTtNOzs7O1M7UztRO00sTzs7OztNLE07OztJO0ssUTtLLE87SyxPO2dCO3lCLG9CLFc7STtLLFk7SyxVOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJLFc7STtJO0ssVTtLOzs7SyxPO0s7Ozs7Ozs7UTs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7OztjOzs7Ozs7STtJOztrQjtJO0c7O0k7STtHOztJO0s7OztzQiw2QjtJO0ssTztLLFU7OztJO0k7Rzs7STtHOztJO0s7Ozs7Szs7Ozs7Ozs7O0k7SSxXO0c7O0k7O0s7MEI7O0s7Ozs7O1M7VTtXLE87a0I7VyxPO1csTztVOzs7O2lDO1UsTTs7OzRCOzs7Ozs7Ozs7O0k7SSxPO0c7O0k7STtLOztTOzs7SyxNO0k7STtLLE87Yzt5QixrQixTO0ksWTtJO0k7Rzs7O0k7SyxPO0ssTztLLE87STtHOztJO21COztHOzt5QiwwQjtJLE87Rzs7STtLLE87Ozs7Tzs7NkIsTyx5Qzs2QixPLHlDO087TyxPOztPOzs7O1EscUIsTyx5Qzs7O1csTztVO08sTzs7O08sTzs7TyxPOzs7Ozs7UTtTLE87Z0I7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7TyxPOzs7TztPO1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7USxxQixPLHlDOzt3QixPLDRDO08sTzs7Tzs7Ozs7UTs7O1ksTztXO1csTztVO1E7Ozs7OztXO3FCOzt1Qjt1QjtVO1EsTztPLE87Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7TztPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7NkIsTzs7O08sTzs7Tzs7O1E7O1csdUI7VztXO1ksTzs7WSxPO1csTzs7Ozs7Ozs7OztVO1E7O1c7Ozs7OztZOzs7Ozs7O1c7OztPO08sTzs7O087OztRLE87TyxPOzs7TyxPOztPOzs7Ozs7VztZLE87Vzs7WSxPO1c7VyxPO1U7USxPO08sTzs7Tzs7UTt3QixPLDBDOzt3QixPLDBDO08sTzs7Ozs7OztPLE87Ozs7USxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O0k7Szs7OztNLDRCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087O087O087O087ZTs7RztHO0k7STs7STs7d0Isc0I7O2lDO2UsTTs7Rzs7SSxZOzs7MEI7OztPLE07ZSxNOztHOztJLFk7OzswQjs7O08sTTs7TyxNOztHOztJO0ssTztLO087NkM7SSxTO0k7SSxNO0c7OztJOztLO00sUztNLE87SztLLFU7SztJO0k7O00sVztNLE87SztLLE87STtJO0ssTztLLFE7OztLOzs7TyxLO1E7Uzs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7SSxPOztHOzs7SztJO0k7SyxROzs7SztJO0c7Rzs7OztRLE07Tzs7d0I7SSxpQjs7Szs7O00sTzs7TSxXO00sTztLO0ssTztJO0ksTztHOztJLFk7STs7O2M7OztJO0ssTztJO0ksWTtJO0ksTztHOztJO0k7OztROzs7OztRO1E7USxPOztHOztJO0ssUTtLLFU7Ozs7Szs7Ozs7OztNLE87SyxXOztLOzs7bUI7TTs7O08sTztNLFc7Ozs7STtHOztJO0s7Szs7Ozs7OztLLGlCLE87Syx1QztLOztNOzs7Ozs7Ozs7Ozs7Ozs7VSxPOzs7O0s7OztJOzs7Ozs7Ozs7OztJOzs7O2M7Ozs7Ozs7Ozs7Ozs7aUIsTzs7Yzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7OzRCLFM7STs7Ozs7Ozs7Ozs7Ozs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXO1k7O2E7Ozs7O1k7Ozs7OztZOzs7YTs7Ozs7WSxNOzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7OztJO0k7bUI7Szs7O00sTzs7TSxXO00sUzs7OztLOztHOztJOzs7Ozs7O0ksSSxtQjtJO0s7TSxPOzs7O2tCOzs7O08sRyxrQjtROztNOztPOzs7O0k7OztNO007SztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0Isa0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjOzs7Ozs7O2lCOzs7Ozs7OztpQjs7OztrQixPO2tCLE87a0IsTztpQixPO2dCO2MsTztjOzs7O3FDLE8sMkI7Yzs7aUI7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjO2dCOzs7Ozs7OztjO2M7Ozs7YTs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7O2M7YztnQjs7OzthOzs7Ozs7Ozs7OztTLEcsa0I7VTtXO2E7O1c7O1c7Ozs7VyxXO1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHLGtCO2M7O2UsUTtlO2UsVTtjO2M7Ozs7Ozs7O2EsRyxrQjtjLG9CO2M7OztjOzs7OztTLEcsa0I7VTtXO1c7Ozs7O1c7Ozs7OztXO1k7OztVOzs7Ozs7Ozs7Ozs7O1UsRyxrQjs7OztZOzs7VztZO2EsTzthLE87YTtZOzs7OztXOzs7O1c7Ozs7OztLO0k7O0ssYztLO007O0ssWTs7TSxNOzs7SztJO0k7SztNLFE7TTs7O0s7Ozs7O087UTs7O1EsVTs7USxNO087OztROztRLE07Ozs7O1k7Ozs7dUI7c0I7c0IsVzs7O3VCO3dCOzs7Ozs7Ozs7O3lCLGM7eUIsVTt5QixROzs7OzBCOzsyQjs2Qjs7OzsyQixNOzs7Ozs7Ozs7Ozs7d0IsTTs7Ozs7c0I7cUI7Vzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7OztrQjtpQjtjLEc7ZTtnQjs7Ozs7Ozs7OztlLE07Ozs7WSxPO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPO1E7O1Msb0Isb0I7Ozs7O087TyxXOzs7Ozs7O1E7UyxNOzs7Ozs7OztXOzs7WSxPO2M7Vzs7Ozs7Z0Isa0I7Ozs7OztrQixHLDJCOzs7OztnQixNO2U7WTs7Ozs7Ozs7Ozs7Ozs7OztTLEksYzs7OztXLE07Ozs7Ozs7YSxPO1k7OztTO1UsTzs7UztVLE07Ozs7O2EsTztZOztRO1MsTTtTO1c7Z0I7OztROztTLFE7Uzs7NkIsTyx5QztTLFE7Z0I7OztROztTLHFCLE8sb0M7UyxRO1MsUTtnQjs7OztLOztLO0s7Ozs7OztLLE07OztHOztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7Ozs7ZTtPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O087OztROzs7Vzs7O2M7Yzs7O2M7YztzQjs7VTtPO087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7O1E7O1MsVTs7O1k7O2E7YSxXO1k7WSxPO1c7UyxVOzs7WTtZLE87VztTLFc7UztROztrQjtrQjtpQjs7OztROztTO1MsVTtTLFU7OztROztROztTO1MsVTtvQjs7Ozs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTtTO1M7Uzs7O2M7Ozs7O2E7OztRLE87Ozs7Rzs7STtJLG9CO0ksVztHOztJO0s7SyxPO0ssTztLLE87SyxPO0ssTztLLE87STs7YTs7Ozs7Ozs7Rzs7STs7OztPOzs7Ozs7Ozt5Qjs7Ozs7eUI7eUI7Ozs7STs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7Z0IsTzs7O0ssTTs7O0k7SSxJLHVCOztLO007Ozs7OztJO0ksTztHOztJOzs7O0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STs7MEI7OzRCOzs0Qjs7NEI7OzRCOzs0QjtvQzs7Rzs7SSxXO0k7SztNLE87TSxNO3lCO0ssWTs7TTs7Ozs7TTtLO0ssTzs7SSxPO0c7O0k7O0s7OztLO0k7SSxvQjs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7O1M7Ozs7O0ssRyxnRDs7OzthO087USxvQixlO1EsTzs0QixlO1EsUTtROzs7TztPLFc7O3dCOztLO007TztRLE87Ozs7OztPOztRLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxNOzs7OztLO0k7SSxPO0c7O0kscUI7STtHOztJLFc7STtHOztJO0k7STtHOztJO0k7STtHOzs7SyxtQjs7O1E7O1M7UTs7USxvQjtROzs7O1M7OztVOzs7VTs7VyxRO1csTztXLE87VztXLFU7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7O1M7UztTOztTO1M7Ozs7Ozs7Ozs7OztlOzs7Z0IsVTs7Ozs7OztlOzs7Z0I7Ozs7O2U7OztnQjs7Ozs7Ozs7Ozs7O2U7OztnQixVOzs7Z0I7Ozs7WTthOzs7WTs7UyxVOzs7UyxVO1M7UyxPO1E7MkI7Ozs7OztROztTLFE7UyxVOzs7UTs7O1EsTTttQzs7UTs7UztTLE87UTs7STtJLE87Rzs7STtLOzs7O0ssTztJO0c7O0k7O0ssUztLLGdDLGU7OztROztTLFU7OztRO1E7Uzs7OztTO1E7O1E7OztTLFU7Ozs2QiwwQztRO1E7Uzs7OztTOzs7OEIsZ0M7OztROzs7OztROztTLFU7Ozs7O1k7Ozs7Ozs7O2EsTTs7WTthLE07WTs7YSxPO2EsUTthO1k7VztRO1E7Uzs7OztROzs7OztROztTLFU7OztTOzhCLDhDO1E7UTtTOzs7O1M7OytCLGtDOzs7UTs7Ozs7UTs7UyxVOzs7UztRO1E7Uzs7OztTO1E7O1E7O1MsUTtnQyxtQztTLE87O1MsTztTLE87Uzs7O1M7O1UsVzs7O1M7Ozs7O1E7Uzs7Ozs7Ozs7UTs7Ozs7Ozs7OztROztTLFU7UyxXOzs7UyxnQjtRO1M7VSxPO1UsTzs7OztROztTO1c7OztTLHVCO1E7UTtTOzs7O1E7Ozs7Ozs7Ozs7UTs7Uzs7Ozs7WSxtQzt3Qjs7WTtXO1MsVTs7O1k7WTtXO1E7UTtTOzs7O1M7OztjOzs7O2U7YzthOzs7K0I7UTs7O3VCOzs7OztROztTOzs7O1E7UTtTOzs7O1E7Ozs7O1E7O1M7OztTOztTLE07UTs7UztTLFE7Uzs7OztRO1E7Uzs7OztROzs7OztROztTOzs7Uzs7OztROztROztTO2dDLGlDO1MsUztTO1MsVTtTO1MsVzs7Ozs7UzswQjtRO1E7UztTOzs7O1MsTztROzs7OztROztTLFc7Ozs7O1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7OzthOzs7UyxPOytCLGdCO1M7O3VCOztROztROztTLFc7Ozs7O1k7WTtZOztXO1E7UTtTOzs7O1M7Uzs7O2M7Ozs7O2E7OztTLE87K0IsZTtTOzs7bUI7O1E7OztRO1E7Uzs7OztROzs7Ozs7USxNO21DOzs7STtJLDJCOztLO00sbUI7Ozs7TTtNO0s7SztJO0ksTztHOzs7Szs7Ozs7TSxPO0ssb0I7SztNLE87TSxPO00sTztzQixZO0s7TTs7Uzs7OztNLFE7TSxROzs7TTtLO0k7SSxPO0c7Ozs7TTt3QixtRDtNLE87SztLLE87STs7O007MkIscUM7TTtPLE87TztNO0s7SyxPO0k7STs7TTt3QixtQjtNLE87SztLLE87STtJLFk7O0ssb0IsTztLLE87STtJLFU7OztNLFc7TSxPO0s7SyxPO0k7SSxpQjs7SztNLE87TSxPOzs7OzBCLDZCO0ssYTtLO0k7STtLLE87Szt5Qiw4QjtJLEksTywrQjtJO0ksSSwrQjtJOztLOzs7OztNO0s7STtJLGE7STtHO0c7O0k7STs7OzswQjs7OztTO1M7Ozs7OztLLE07O0c7O0ksSSxzQzs7OzZCOzs7Rzs7Ozs7O1E7O1E7O1MsUTtTOztZOzs7ZSxPOztrQzt1Qjs7O1EsTzs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7O2dCOzs7O0k7Szs7USxzQixXOztTLE07O1E7O1Esc0I7O1MsTTs7UTtnQjs7O0ksTztHO29CLGU7Ryx1Qjs7STs7SyxPOztJO0c7O0ksa0I7SSxZOzs7O08sTTs7Ozs7O1c7Ozs7ZTs7OztnQixXO2UsRztnQjtpQixXO2lCLEs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7OztlOztrQjtrQjtpQzs7Ozs7O3FCLEcscUI7c0I7Ozs7O2lCOzs7O2U7ZTs7Ozs7O2M7O1c7VTtPLFc7ZSxNOztHOzs7SztLLFc7STtJOytCO0c7Ozs7TTttQjtLO0ssVztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7OztJO0k7SztpQjs7Ozs7O0ssTTs7STtHOztJO29CO2dCOztJO0c7O0k7O0s7STtJLE87Rzs7STs7O087O1EsTztRO1EsZ0I7Ozs7UyxXO1M7Ozs7USxVOzs7OztVO1c7WSxPO1ksUTs7OzsyQjs7Ozs7Ozs7Ozs7Ozt5Qjs7Ozs7Tzs7Tzs7UTs7Ozs7UTtRO1EsTztjOzs7Ozs7UTs7O1M7UyxROzs7Uzs7VSxPO1UsTztVO1UsVTs7Ozs7Ozs7Ozs7Ozs7O087Tzs7Ozs7Ozs7Tzs7O1E7OztTO1M7Uzs7Ozs7WTs7O1M7Ozs7Tzs7OztZOztXO3dCOzs7TztRO1E7O1csa0I7Ozs7Ozs7Z0IsTTs7Ozs7cUI7O2U7Z0IsTTs7ZTs7Ozs7Ozs7Ozs7YztlOztrQjs7Ozs7Ozs7Ozs7O2U7Z0I7a0I7Z0I7ZSxNOzs7Yzs7ZSx1QixRO2U7Ozt5Qjs7OzsyQjs7OztnQjs7aUI7bUI7Z0I7Ozs7O2dCO2lCO2tCLE87Ozs7Ozs7O2lCO2lCLE07Ozs7Ozs7O2dCO2lCOztvQjs7Ozs7OztpQjs7OztpQjs7OztjOztjOzs7Ozs7OztjLE07OztjO2UsTztlO2MsTTs7OztPLE87O087OztRO1E7UTtPOzs7MEI7TyxVOztRO1E7O3FCOzs7O1csTTs7Ozs7Ozs7ZTs0QjtjO1csRztZLE07Ozs7OztxQjs7b0I7VztZO1ksb0I7VztZLE07Vzs7TyxNOzs7O08sTTtrQzs7Rzs7O0s7O007O087OztPO087TTs7SztNO00sUTtNO00sVTs7Ozs7Ozs7SyxvQjtLOztNOzsyQzs7O1M7OztTOzs7Uzs7O1M7OztTOzs7Uzs7SztLO00sTztNO0s7STtJLE87Rzs7STtJOzs7Szs7UTs7OzsyQixPLHVDO1MsTztROztROzs7UyxROzs7MkI7UTtTLE87OztZO1k7WSxlO1c7UTs7Z0I7OztROztTLFU7OztRO1E7Ozs7O1E7OztTLFU7Ozs2QiwwQztROzs7Ozs7YTs7O2MsYztjLFM7YSxPO1k7aUI7Ozs7UTs7OztxQyxvQzs7Ozs7UTs7UyxVOzs7Uzs4Qiw4QztROztROzs7b0Msa0M7Ozs7O1E7O1MsVTs7O1M7UTtROzs7OztROzs7Ozs7UyxjO1MsVTs7O1k7Ozs7Ozs7Ozs7OztZO1c7UyxPOztTLE87UyxTO1M7Ozs7OztROzs7Uzs7VSxVOzs7Uzs7Ozs7Ozs7Ozs7UTs7Ozs7UTs7OztZOzthLE07Ozs7Ozs7O1k7VztTLFU7OztZOzs7OztZO1c7Uzs7cUI7Ozs7O1ksbUI7WSxvQjtZLE87VztRO1E7OztZOzs7Ozs7Ozs7O2E7Ozs7c0I7OztZO1k7YSxPO2E7WTtXO1MsYzs7O1ksbUM7d0I7WSxtQjtZLE87VztTLFc7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7OzthOztjLFc7YyxlO2E7YSxVO2E7WTtVLFk7O1M7OzthO2EsVTthOzs7O2M7Ozs7O2EsTztZO1UsUTtVOzs7YTthLFU7O2EsTztZO1UsTTs7Ozs7OztROzs7WTs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7OzthLE07OztZO2E7Ozs7Ozs7YTtZOztTLFk7OztZLG1DOzhCLHdCO1ksTztXO1MsTTtTO1M7OztjO2M7YTs7OytCO1E7b0I7Ozs7UTs7Uzs7OztRO1E7O1E7O1M7Ozs7O1E7O1E7O1MsVzs7Ozs7WTtZO1k7WTs7VztRO1E7O1M7OztjOzs7Ozs7O2E7OztTLE87OEIsNkI7UTtxQjs7OztROztTLFc7Ozs7O1k7WTtZOztXO1E7UTs7Uzs7O2M7Ozs7O2E7OztTLE87NkIsZ0M7UTtxQjs7OztROztTOzs7WTtXO1MsUztTLFU7UztTLFc7Ozs7UyxzQjtRO1E7UTs7O1E7UTs7O1EsTTttQzs7OztJO0ssVztLOzs7TSx1QjtNOzs7O007SztLO007Ozs7Szs7YTs7STtJLDJCOztLO007Ozs7TTtLO0s7STtJLDJCO0c7O0k7STtLOzs7OztJO0c7O0c7STs7O0c7STs7RyxJO0c7STs7O0ksTztHOztJOzs4QixPOzs7Tzs7OzhCOzs7bUI7OztlOztHOztJO0s7Szs7Szs7TSxVOzs7Ozs7SSxVOztLLE07STtHOztJOzswQjs7O087ZSxNOztHOztJO0k7SyxVO0s7SyxRO0k7Ozs7Ozs7Ozs7Ozs7OztPO1E7USxVOzs7UTs7O1c7O2M7O2U7O2UsTztlLFU7Yzs7Yzs7ZTs7ZSxPO2U7aUI7YztzQjs7VTtRLFE7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNO08sMkI7Ozs7SztNOzs7UztTLEk7OztpQzs7O1MsSSxXOzs7aUM7Ozt5QjtTLFE7UztRO00sTzs7Ozs7O0k7OztLO0s7TTtPLE87TyxPO007Ozs7O08sTTs7OztJO0k7STtJO0c7O0k7Rzs7STtHOzs7Ozs7STtLOzs7Ozs7OztJLGU7SSxPO0c7OztJOztLO0s7d0I7SztNOzs7OztNOztNOzs7O1UsVztVLE87Ozs7OztTO007TTtNOztLOztNLE87TSxhO0ssRztNO087USxPO1EsWTs7Ozs7TztPLE07OztnQjs7Ozs7TTtPLFM7TztTOztNO007TztPLE87TTs7Ozs7Ozs7TTtNOztLLFc7SztLOztROzs7Ozs7OztLO0s7Szs7TTtPLFM7TyxPO08sTTtPO08sTztNOzs7Ozs7OztNOztLO0k7STs7OztTO1UsTztVLGE7VSxPO1M7Ozs7Ozs7O1M7UTtJLE87Rzs7O0ksVztJLE87Ozs7Ozs7O0c7cUMsa0M7OztLO00sTztNLE87TSxVO00sTztNLEs7TSxPO00sa0I7O00sTTs7SyxXO0ssb0I7STtJLFk7STs7Szs7O00sUTtNLFE7SztJO0k7SyxpQjtLOztLO0ssTztJO0ksWTs7Szs7O00sTztNLE87TSxPO007SztJO0k7SyxLO0ssUztLLFU7SSxHO1k7TTtNLE07OztlOzs7OztLO00sUztNLE87Szs7SyxPOzs7Ozs7Ozs7d0I7STtLLGE7SyxPOztLO0ssVztJO0ksYzs7SztNLE87TTtROztNO00sTztLOzs7STtHOzt5QiwwQjtJLE87Rzs7STs7O1EsTzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87Z0IsTzs7Ozs7TyxPOztPOztRLE87TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOzs7USxTO08sTzs7O087Ozs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7OztPLHNDO08sTzs7O08sTzs7Tzs7O1EsTztPLE87OztPLE87OztPLE87Ozs7TyxPOzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7TyxPOzs7OztROzs7Ozs7OztTO1M7UyxPO1M7OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7OztRO1E7USxPO1E7TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxvQixPO08sTzs7Tzs7O1E7USxPO08sTzs7OztJOztLOzttQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNCO0c7OztJOzs7SyxZOzs7Ozs7Ozs7OztNO08sTTthOzs7Ozs7O0ksYTtJLHFCLE07SSxPO0c7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzsyQixxQjs7SSxVOztLO0k7STtLLFE7SyxNO0ssTTtJLE87Rzs7SSxZOztJLEc7SyxNO0k7SyxlO0s7Ozs7OztJOzs7Ozs7Ozs7OztHOztJLFk7STs7SztLO0k7RzsrQixPLG1DOztJO0ssUTtLLFE7OztJOzs7ZTtLOzs7TSxJO0ssRyxxRDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDs7O0c7O0k7O0ssTztJO0ksTztHOztJO0k7Ozs7Uzs7UyxVO1M7OztRO0ssVTs7a0I7O0s7Szs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7eUM7OzZDO29EOzs7Ozs7TSxPOzs7STtHOztJOzs7Ozs7Ozs7Ozs7TTs7Ozs7STtHOztJOzs7Ozs7Ozs7Szs7STtHOztJOztlOzttQjswQjs7STtHO3lCLG1CO0c7STtJO0k7Ozs7Ozs7STs7SSxJLGdCLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVOzs7O2E7YTtZO1UsTzs7Ozs7YTthO1k7VSxPO1U7Uzs7Uzs7Ozs7VTs7O2E7YTtZO1UsTztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxvQjtLLE87STs7SyxZOztLOztJLEksc0M7Ozs2Qjs7O0c7O0ksa0MsTztJLFc7SSxpQztHOzs7Ozs7TyxPLGU7OztPLHdCLEs7Tzs7TTs7Tzs7Ozs7STtHOztJLFk7O0ksTzs7O0k7OztPO08sTzs7K0IsTzs7Ozs7OztPOzsrQixvQixPLG1CO08sTzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPOzs7OztXO1csTztVO087Ozs7O1c7VyxPO1U7Tzs7OztPOzs7MEIsb0IsTyxzQjtPO087OzhCLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOzt5QixPOzs7TyxPOzsyQixPOzsyQixPO2U7O0k7SSxPOzt3Qyw2Qjs7STtJOzs7Ozs7UTs7UTs7OzsrQjtTLE87UyxPO1M7USxPOzs7Ozs7UTs7OytCO1MsTztTOytCO1MsTztTLE87USxPOzs7UTs7UTs7O1M7K0I7UyxPOzsrQjtTLE87Uzs7O1M7c0I7USw2QjtRLE87O1E7Ozs7K0I7UyxPO1M7USxnQjtRLDhCO1EsTzs7O1E7O1E7Ozs7UzsrQjtTLE87UyxPO1M7UyxPO1EsTzs7UTs7OztTO1M7UyxPO1EsTzs7UTs7OztTO1M7UztTLE87USxPOztROzs7UztTO1EsTzs7UTs7O1M7UztRLE87O1E7Ozs7O1M7UztTLFE7UztTLE87USxPOztRLHVDO1EsTzs7UTs7OztTO1M7UTtpQjs7Ozs7cUMsTzs7SztNO00sTztNO0ssTzs7Rzs7O0s7SyxPO0k7SSxPO0c7RztvQyx3Qzs7STtJOzs7Ozs7eUQ7Ozs7O0s7O0c7O0k7Ozs7Ozs7O087Ozs7O1E7Ozs7O087O0ksTzs7O0k7O0ssTzs7O0k7OztJLEksVzs7OztLO00sTztNLE87SyxPOztJO0c7O0k7Rzs7STtHO2tEO0c7O0k7Rzs7STtLLE87SyxNO0s7SSxJLFU7Ozs7SztNLE87TSxPO0ssTzs7O0k7Rzs7STs7bUIsTztJLG9CLE07STs7O0k7Ozs7STtLLHFDO0ssaUI7STtJO0s7O007Ozs7O087OztNO0s7SyxPO0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O1E7O1M7Ozs7O1M7UTs7UTs7Ozs7O1M7OztTO1E7O1E7Ozs7O1M7OztTO1E7O1E7OztTOzs7UztTOzs7WTs7USxXOzs7UTs7UTs7OztTOztTLHNCO1MsTzs7O1Msc0I7UyxPO1M7UTs7UTs7Ozs7UztTOzs7WTs7UyxPO1E7OztROztROzs7Ozs7Uzs7O1M7UTs7UTs7OztTOzs7UztROztROzs7O1M7UztROztRLGtDO1E7O1Esa0M7UTs7UTs7Ozs7O1M7OztTO1M7UTs7O1EsRztTLE07USxJLEksTzs7Ozs7O1E7O1E7Ozs7OztTO1M7UTs7UTs7O1M7Uzt3QixPLHNDOzs7WTs7Ozt3QixJOzs7Z0Q7Ozt3QixPOzs7O1ksTzs7Ozt1QixJOzs7K0M7Ozt1QixPOztXO1MsYzswQyxPLHdCO1MsVTtTO1E7OztRLEksSSxPOzs7Ozs7UTs7STs7SyxrQjtLLE87STs7O0s7OztLLFk7O0s7O0k7Rzs7O0ssWTtLLE87STt5QixtQjtJLFE7STtHOztJO0ksdUMsVztHOztJOztPOzs7Ozs7OztRLE07Tzs7Z0I7Ozs7Ozs7Ozs7Ozs7OztPLHVDOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPOzs7USxNOzs7VztXLGM7VTtPLFc7OztPLGM7O087Ozs7USxNOzs7O1c7VyxjO1U7USxNOzs7OztXO1csYztVO1EsTTtRO08sVzs7Tzs7Ozs7USxNOzs7VztXLGM7VTtRLE07TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOzZCLHlDO3lCLDZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7TyxPOzs7O0k7O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1EsTztnQixPOztJLG1CO0ksTzs7O0k7OztROztRO2dCOzs7STtHOztJOztrQjs7a0I7MEI7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO0ksTztHOztJOztlO2U7Ozs7aUI7aUI7O3FCLE87OztPLE87O0c7O0k7OztNOztPLHNCO00sRyxzQzs7O08sYztPOzs7O1c7VyxPO1U7TztPLE87O007TSxPOzs7STtHOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Z0IsTzs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7NkI7OzZCOzs4Qjs7OEI7OzhCOzs4Qjs7Ozs7Vzs7Vzs7Vzs7Vzs7VzttQjs7OztROzs7UTs7O1EsTzs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O3lCLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7Ozs7Ozs7O0ksaUI7YTs7OztROztROztROzs0Qjs7O087O087Ozs7TyxPOztPLE87ZTs7OztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1k7YTthO2M7OztpQjs7OztrQjtpQjtpQjtnQjthO2EsTzs7O2E7YSxPOzs7Ozs7OztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7O1M7O1k7O2E7O2M7OzthLE87O1k7WSxPO1c7USxPOzs7Ozs7Ozs7UTs7O1M7OzthLE87WTtZLE87VztRLE87Ozs7Ozs7OztROzs7Uzs7WSxJLGM7O2E7O2M7OzthLE87WTtZOzs7YTs7Yzs7O2EsTztZO1k7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZOzthOztjOzs7YSxXO2EsTztZO1k7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7OzthLE87WTtZLE87VztRLE87Ozs7Ozs7Ozs7O2E7YSxPOztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7OzthLE87WTtZLE87VztTO1EsTzs7Ozs7Ozs7Ozs7O1Esa0M7Ozs7Ozs7Ozs7Ozs7O21CO1E7OztTLE87UTs7Ozs7Ozs7UyxPO1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O0s7TTs7Uzs7O1k7O2U7O2U7dUI7OztZOztZLE07O1E7TTtLOzs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7OztpQixPOztNO007Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQjs7SSxPOzs7cUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7SztLO007OztNO0s7O00sWTtrQjs7TTtPO1EsVTs7OzhCO087Ozs7O087ZTtPOztLOztNOzJCLG9CLFc7TSxXO00sTztLOztNOztPO087TTtNO08sTztPLE87Tzs7TztPO087MEI7O087TztNO007TTtLOztLLDBCO0s7Szs7O2tDOztJO0k7Ozs7OztzQjs7O2lDLFk7Ozs7OztTO1M7UTtROztTOzs7UTs7Ozs7Ozs7O1M7OztTOzs7UTs7Uzs7VTtZO1MsYztROztTOzs7O1U7WTs7VSxLOzs7Uzs7Ozs7VTs7Vzs7OztXOzs7O1UsRztXO1k7Yzs7WTtZOzs7O2E7YTthOzs7Ozs7WTthOzs7Ozs7Ozs7Ozs7O1c7VztXLHlCOzs7O2E7O2M7YTthOzs7Ozs7OztXO1ksTTtZO1k7Ozs7YTthO2E7Ozs7O1c7VztXLHlCOzs7O2E7O2M7YTthOzs7Ozs7OztXO1ksTTtZO1k7Ozs7YTthO2E7Ozs7O1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7c0I7O1M7OztpQjs7O1E7USxJLEksc0M7O1MsSSxlOzs7Ozs7O1k7WTs7Ozs7OztXLEcsdUI7Ozs7O1UsTzs7O1M7O1UsVTtVO1c7Ozs7O1c7Vzs7VTtVO1M7Uzs7VTs7OztVO1U7UyxJLFcsdUM7Ozs7O1U7VyxNO1U7O1c7Vzs7Ozs7O1k7O2EsSSx1QixPO2E7Ozs7Ozs7O1U7Ozs7O1c7O1k7Ozs7Ozs7O1ksRzthO2M7Ozs7Ozs7Ozs7OztjOztjO2E7YTthO2M7O2M7Ozs7Ozs7WTthOzs7VztZOzs7Ozs7VTtVOztROztTOzs7VTs7O1U7VTs7Ozs7OztTO1M7Uyx5Qix3QjtTO1E7O1M7O1U7VTtVO1U7Ozs7VztZOzs7WTtZOzs7Ozs7O1c7VztXLHlCLHdCO1c7b0I7Ozs7Vzs7Ozs7OztVO1c7VztXO1c7Vzs7Ozs7Ozs7YztlOzs7Ozs7Ozs7Ozs7ZTs7ZTtjO2M7YztlOztlO2M7Ozs7O2M7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7O1U7VztXO1c7VztXOzs7O1k7YTs7Ozs7O2E7Ozs7Ozs7YztjO2E7YTthO2M7O2M7YTs7Ozs7O1k7Ozs7Ozs7Ozs7UyxJLCtCO1M7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEkscUI7WSxxQjs7Vzs7O2U7Z0I7Z0I7Z0I7ZSxxQjtjO1ksTztXLE87OztxQyxzQztxQyx1Qzs7OztXLEksc0I7VyxzQjs7VTs7O2M7ZTtlO2U7YyxzQjthO1csTztVLE87O1M7O1U7Ozs7OztVO1U7Ozs7VyxJLDRCO1csTzs7O1M7VTtXO1c7Ozs7Ozs7UztVO1U7Ozs7Ozs7O1M7OztVO1UsTTtzQjs7b0M7Uzs7VSxlO1UsSTtTO1U7UztTLEk7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7OztpQjtnQjtZOzs7Vzs7O1c7Ozs7O1ksTTtZLE07WTs7OzthO2M7Ozs7YTtjO2UsTTs7Ozs7OztjO2M7Ozs7Ozs7ZTtlOzs7OzthOzs7OztXO1k7WSxPOzs7OztlO2U7ZTtjO1c7OztZO2EsTzs7YSxPO1k7WSxVO1ksTztXOztXOztXO1c7OztVLEksbUI7O1M7VSxNO1M7UyxhOztVO1U7VTtTO1M7UztTOzs7UywrQixTOztVO1c7O1ksUTs7O1k7OzBCLE8sYyxxQjtXLE87OztVO1M7UyxnQjtTO1E7O1M7VSxNO1M7VSxZO1U7OztTLE87UTs7UztVLE07UztVLFk7VTs7O1U7O29DO2tDLFc7UyxtQjtTLE87UTs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFcsTzs7O0s7SyxXO0k7SSxROztLO0s7SztJO0k7SSxPO0c7O0k7OztnQixPOzs7Ozs7OztLO2lCOzs7Ozs7O0k7Rzs7SSxRO0ksTztHOztJO0c7OztJLFc7OztJLG9CO0ksTztHOzs7STs7Ozs7Ozs7Ozs7OztROzs7Ozs7OztROzs7UztROztROzs7O1M7UztRLE87Ozs7Z0I7O0k7RztHOztvQixPLGlDOztzQiw0QjtJLE87Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHOztJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUztLLFE7Ozt3QixPLGtDO0ksbUIsTSx3QztzQiwwQjtJLEk7O29CO3FDO2lCOzs7Ozs7Ozs7UyxhOztROzs7Ozs7NEI7O1E7Ozs7Ozs7O1E7Ozs7O1Msc0IsTztTLGE7O1E7Ozs7O1M7OztVLE87VTs7O1E7Ozs7Ozs7O1E7O0ksTztHOztJLFk7O0ksTztHOztJLFc7STtHOzs7STtLLE07O0k7Ozs7STtLLE07O0k7Ozs7SSxXLE07O0k7Ozs7SSxXLE07O0ksZTs7O3FCLGtCLGdDOzRCLHFCOztJO087SyxPO0ksVztJLE87RzswQixPLHlDOztJO0s7OztNOzs7SyxtQjs7SSxPO0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxJOzs7Ozs7O00saUI7TTs7STtJO0c7OztLO0ssWSxPOztLO00sNkI7TTs7OzsrQjs7O0k7SSxPO0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJOztLLGlDO0ssTztJO0ksTztHOzs7STtHOzs7SztLO29COzs7O087O007OztPOztVO1csTTs7VTtTO08sUTs7TztPO3NCO1E7Ozs7O1MsTTtTOzs7Ozs7Vzs7WTtZLE87Ozs7Ozs7OztVLEksOEI7Ozs7OzthLG9DO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsTTs7WSxNOzs7Ozs7VTtVLE87Ozs7Ozs7Ozs7O1E7USxJLGtCOzs7Ozs7O1EsVztXO1M7USxNOztNO2lDLHNDO007Ozs7O0k7STtHOztJLDBCO0ksb0I7Rzs7SSxZOztJO0c7O0ksVTs7SSxHLGtCO0ksRyxxQjtJLEk7STs7O0ksWTs7SSxHLGtCOztJOzs7OEIscUI7OEIsK0M7O0ksVztlOzs7Ozs7Ozs7Ozs7OztJO0k7Rzs7STs7O00scUQ7TTs7O0k7Rzs7O0s7SyxjO0k7SSxPO0c7Rzs7STs7eUIsa0I7O0k7STs7Ozs7OzZDOztLOztHOztJO2dDLDRCLFc7SSxVO0k7OzthLG1COzs7WTtHOztJLFk7O3NDO0k7OztLLFc7bUI7OztLLE8sVzs7SSxPO0c7Ozs7Szs7Ozs7TSxRO00sVTs7OztzRDs7Ozs7Szs7O007TyxXO2tCLDRCO0s7STtJLE87OztJLG9COzs7Ozs7Ozs7OztPOzs7O007O087OztNO007cUM7Ozs7UTs7OztTOzJCOzs7OzttQjtROztTO1E7Ozs7O1E7UyxRLG1DO1M7O1M7UTs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHO0csYTs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7O0s7SyxXO0k7SSxXO0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7Ozs7Z0I7Z0I7ZTthOzs7O2lCOzs7O2E7OztnQixvQixPO2dCLE87ZTthLFE7YSxPOzs7Z0I7Z0IsTztlO2EsTyxXOzs7Z0I7Z0IsZTtlO2E7ZSxXO2EsUzthLFc7bUM7YTtlOzs7Z0I7Z0I7aUI7OztxQixlO29CO2tCOzs7OzttQjs7OzttQjs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCOzs7Ozs7d0I7MkMsTyxrQzs7Ozs7Ozs7MkI7OzRCOzZDO2tEOzs7Ozs7MEI7Ozs7MkI7Ozs4Qjs7Ozs7a0M7OzBCOzsyQjs0Qzs7NEM7Ozs7eUI7Ozs7OzBCOzJDOzs7Ozs7OEI7Ozt5Qjs7Ozs7MEI7MkM7Ozs7Ozs7OEI7Ozt1Qjt3Qjt3QixPOzJDLGM7d0I7dUM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjt3Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7O2lCOzs7O2U7YTs7O2dCO2dCO2U7YSxZLFc7YTs7YTs7O1k7b0I7OztXO1k7OztXOzs7Ozs7O1U7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7Ozs7O1ksSTtZLE07Ozs7Ozs7VztZO29CO3VCOztZO1ksSTs7O1csSTs7Ozs7Ozs7Ozs7UTs7O1k7Ozs7O2EsTTthOzthO2E7O1k7VztTLE87UTs7Ozs7YTthLHFCO1k7aUI7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7Ozs7TztROzs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7USxJOzs7OztNO08sSTs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TSxJOztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087OztVO1U7VyxNO1UsSTs7O1M7TyxVO08sMkMsVztPOzs7OztNLFk7TTs7O1U7O2dDOzthO3NDOztTOzs7VTs7O1c7VSxzQjtTO08sTztPOzs7VTtVO1M7TyxTO007OztJO0c7O0k7Rzs7STtLOzs7STtHOztJLFksTztJOzs7SztLLE87SztJOzs7STt5QixrQixPLDJCO0ksWTs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YztjO2MsTTs7Ozs7Rzs7STt5RTtJLE07Rzs7STs7O0ssTzs7SSxNO0c7O0k7O0c7O0k7a0M7O0ssTTs7STtHO0csbUI7O0k7O2E7YyxZO2MsTTtjLFE7O2M7ZSxPO2UsTztjLE87OzthLEksVTs7Ozs7YztlLE87ZSxPO2UsTztlLE87YyxPOzs7YSxPOztHO0c7STs7STs7STtLOztNOzs7TTs7Ozs7Ozs7Szs7O0s7TSxVO007Ozs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztLLE07Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksVzs7SztLO0s7STtJO0ksTztHOztJOzs7SyxPOztJLE07Rzs7STs7O0ssTzs7SSxNO0c7RztJO1U7STtVOztJLGlCLE87SSxTO0ksMEI7Rzs7SSxTLE07O0ksVztJO0s7Ozs7STtHOztJLFU7O0s7TTs7Ozs7O0s7OztlO2dCO2dCO2U7Ozs7Yzs7Ozs7O00sTTs7O0k7Ozs7ZTtlOzs7Ozs7O2M7YyxPO2E7Rzs7STtLOzs7ZTtjOztJOzs7O2U7Yzt3QztjLFU7YzthO0c7O0kseUIsUzs7SztNOztPOzs7Tzs0QixTLHNCO007OztLO0k7STtHOztJLFk7STsrQjs7OztLO0ssZ0I7STtJO0ssTztLLE87Szs7O0ssUztJOzs7OztLO0s7STtJLFc7STtHOztJO0k7Ozs7O08sUztRO08sSTs7OztLOztHOzs7SztLLE87STtJLFU7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsNkM7dUMsK0I7O0ksSSxZOzs7O00saUI7O007Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPLDZCO0k7SSxPO0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO1U7Ozs7O1c7VTtXOzs7Ozs7SztNLE07O007Ozs7O087Tzs7Ozs7Ozs7O29COzs7SztNLFU7Ozs7O3dCO1U7Ozs7O1csWTs7Vzs7Ozs7O2UsTTs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7O2UsaUM7SztNLE07SztNO2lCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0s7Ozs7O0ksTztHOztJLFksTzs7bUI7Ozs7Ozs7O0k7Rzs7SSxZO0k7Z0I7O0k7Rzs7STtLLFk7Szs7Ozs7TTs7O0s7TTtLOzs2Qjs7O1E7O1EsTTs7STtJO0s7OztLO0k7Rzs7SSxRO0k7Ozs7Ozs7Rzs7STs7Ozs7Ozs7O1E7O1E7OztRO1E7O1E7UTtTLE87UyxPO1EsTzs7STtHO0c7O0k7O2lCO0s7Ozs7Ozs7TTs7O007Tzs7O1E7OztPLEksWTs7O2lDOzs7TyxlOztNLE87SztLO00sTztNLE07SyxJLFU7Ozs7TSxJOzs7Szs7O00sUTs7Ozs7Ozs7O007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUIsSTs7Ozs7UTs7Ozs7Ozs7TTtPLEksVTs7Ozs7OztPOzs7UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7Ozs4Qiw4QjtRLE87Ozs7OEIsOEI7USxPOztLOzs7O0k7Ozs7UTtrQjs7Ozs7Ozs7O1M7VTs7OztXO1U7Ozs7Ozs7Ozs7OztTO1U7O1c7VTs7Ozs7O087Ozs7UTtRO1E7Tzs7O1EsVzs7TyxPOztJLE87Rzs7STtnQixPOztJO0c7OztJO0k7O00sTztLLEksWTs7OzswQixNOzs7Ozs7Ozs7Ozs7Ozs7a0I7TTs7Ozs7Tzs7O007Ozs7TyxJLFU7Ozs7UTtTOzs7Ozs7Tzs7O1E7UTs7Ozs7OztHOztJOzs7OztNLEs7TztNO087OztNO2lDOzs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO0ksb0I7STtLLFE7SztLOzs7STs7Ozs7Ozs7Rzs7O0k7Ozs7Szs7O1U7Ozs7Ozs7Ozs7VTs7OztZO0k7OztJOzs7Ozs7Ozs7Ozs7O1U7Ozs7VztXOzs7Ozs7Ozs7Ozs7Ozs7USxNOzs7Tzs7aUI7Ozs7Ozs7Tzs7UTs7OztPOztPLGlCOztRLE07Tzs7O1EsUztRO1E7Ozs7Ozs7O29COzRDOzs4QixvQjs4Qjs7Ozs7Ozs7Ozs7Ozs7O1U7O29COzs7O29COzs4QixvQjs7Ozs7O3VDOzs4Qjs7OztnQzs7Ozs7K0I7K0I7OEI7aUQ7Ozs7Ozs7Ozs7OEI7NkI7Ozs7Ozs7Ozs7O29COztxQjs7b0I7O3FCO3NCOzs7c0I7d0I7c0I7O3lCLFk7eUI7Ozs7OzBCOzs7eUI7Ozs7Ozt5QixNOzt3QjtzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCLE07Ozs7Ozs7Ozs7c0I7dUIsTTs7OzBCOzs7MkIsTTswQjs7Ozt5Qjt1Qjt5Qjs7Ozs7cUI7Ozt5Qjs7OzBCLE07eUI7Ozs7d0I7c0I7d0I7cUI7O29CO3FCLFM7Ozs7OztxQjs7O3lCO3lCO3dCO3NCO3dCOztzQixNOztxQjs7c0IsbUMsbUI7c0I7O3lCLE87Ozs7Ozs7Ozt3QjtzQixPO3NCLE87c0IsWTtzQjt3QjtzQjs0QywrQjt1QixZOzs7O3NCO3VCOzs7Ozs7Ozs7O3VCOzs7MkI7OzRCOzhDLE8sZ0M7NEIsTzsyQjsyQixPOzBCO3dCLFU7Ozt1Qjt3QjsrQzt5QjttQzs7Ozs7OztzQjt1Qjs7OzBCOzs7OzsyQjs7MkI7MEI7MEI7MkIsVTsyQjs7MkIsVTs7MkIsTzs7cUM7Ozs7MEI7MEI7MEI7eUI7dUIsVTs7Ozs7O3NCO3VCOzs7Ozs7Ozs7Ozs7b0I7cUI7dUI7cUI7O3lCOzs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQjs7Ozs7OzJCOzs7Ozs7Ozs7c0I7Ozs7Ozs7Ozs7dUI7Ozt3QixROzs7O3NDOzs7dUI7OzsyQjsyQixjOzBCO3dCLFM7OzsyQjsyQixjOzBCO3dCLFM7d0IsTzt3Qjs7O3dCLFM7dUI7Ozs7Ozt1Qjs7OzJCOzJCOzBCO3dCLE87OzsyQjsyQjswQjt3Qjs7OzJCOzs7Ozs7Ozt3Qjt5QixJOzs7NEIsa0I7d0M7OzRCOzZCLEksTzs7Ozs7Ozs7NEIsTzs7d0I7d0I7d0I7eUI7eUI7Ozs0Qjs7OzsyQjt3Qjs7eUI7Ozs7NkIsb0I7eUM7Ozs0QjswQixTOzBCOzBCLE87OzBCLE87Ozs7O2tDOzs7Ozs7b0I7Ozs7OztVOztvQjs7Ozs7b0I7OztxQjs7O29COzt1Qjs7OzJCOzs0QixNOzs7MkI7MEI7d0I7MEI7Ozs7Ozs7Ozs7O3VCOzs7MkI7OzRCLE07OzsyQjswQjt3QjswQjs7Ozs7O3VCO3dCOzs7MkI7MkI7NEIsTTs7OzJCOzBCO3dCLEs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0M7bUM7Z0M7Ozs4QixNOzs7Ozs7K0I7K0IsTzs7OytCLE07OzhCOzsrQjs4QixPOzs7Ozs7Ozs7Ozs7VTs7O1c7O2M7OztlLE07ZTs7Ozs7O21CLGtCLFE7Ozs7Ozs7bUI7a0I7ZTs7Ozs7ZTtjO2M7ZTtlO2lCO2U7OztlOzs7Ozs7Ozs7Ozs7OztjO2U7Ozs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs0Qjs7OztpQjs7OztpQjs7Ozs7Ozs7OztlO2dCOzs7Ozs7OztnQjs7Ozs7O2M7OztVOztvQjs7OztvQjs7OztxQixNOztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1QjtzQjt1Qjt3QixPO3FDOzs7Ozs7Ozs7K0I7c0IsVTtzQjt1Qjs7d0I7d0I7O3dCOzsyQixvQjsyQjs7dUI7O2lDOzs7Ozs7O3NCO3VCO3VCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7b0I7b0I7Ozs7OztVLFc7VTs7b0I7Ozs7b0I7OzhCLG9COzsrQjs7Z0M7OzttQzs7Ozs7OztrQzsrQjs7OEIsTTs7O2tEOzs7Ozs7O29COzs7cUI7OztxQixTO3FCOzs7cUI7dUI7Ozs7OztvQjs7Ozs7O0c7OztJO0ssUTs7O0s7OztJO0c7O0k7a0Q7STtHO3dCLE8seUM7O0k7Ozs7NkIsMEM7SyxPOztJO0c7O0ksTztHOztJLFk7Ozs7O1M7OztVLE87UztVLFc7VTs7Ozs7UztRO0ssSyxpRDs7STs7O0k7SztHOzs7STtLO007TSxVOzs7SyxzQjtLLE07O0k7SyxZO0s7Z0I7SztJLEksVTs7OztNLE07Ozs7SSx3Qjs7OztLO00sTztNLE87TSxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7OztJO0s7SztLO087bUMsbUI7STs7Ozs7Ozs7Yzs7YTtHOztJOztHOztJOztHOztJOztHOztJOzs7OztROzs7UTs7c0M7Ozs7OztROzs7Ozs7O2E7YTtZO1ksTztXOztTLHNCO1MsTztTOztTO1E7O1E7Ozs7O1Msc0I7UyxPOzs7WTtZO1c7UTs7Z0I7Ozs7USx3QztROztRLDJDO1E7O1E7Ozs7UztROztzQzs7bUM7Ozs7Szs7SSxPOzs7STtrQzs7SyxtQixJO0s7O0k7SztLLFM7SyxZOztLO0ssZTtJO0kscUI7eUIsbUIsVTtJO0ssYztLOzs7O1c7Ozs7Ozs7Ozs7OzBDLGtDO2dCLE87Ozs7Ozs7OztnQixPOzs7OztXLGM7NkIsZSwyQjtXLGdCO1c7OztvQjs7O1U7VTtXO1csYztVOztXLE87O1U7O1csTzs7VTtpQjtVLHVCLFcsZ0M7VTs7MEI7OztXOztVLE87Ozs7OztHOztJO0ssTzs7O1M7Ozs7c0IsdUI7SSxJLE87Ozs7Ozs7OztjOzs7OzZCOzthO0c7O0k7a0MsTzt1QixNOztJO0c7O0k7O0s7SztJO0ksSSxPOztLO2lCLE87OztvQjs7OztNLFc7TTs7TTtPLE07aUI7OztNLE07O0s7STtJLFc7Rzs7STs7Tzs7Ozs7UTs7O1c7O1EsTztPOztPLE07Z0M7O0c7O0k7SyxXOztJO0c7OztJLFM7O0ksTzs7O0ksZTt5QixrQixjO0k7SyxXO0s7SyxPO0s7SztLO08sbUMsaUI7Szs7Ozs7Ozs7Ozs7VTtVLG9CO1U7VyxlO1c7OztXLE87O1csbUIsTzs7VztVO1UsVTs0Qix1QjtVO1csTztXOztXO1c7VTtVO1csYTtXO1c7OztnQjtpQjs7OztrQjs7OztpQjs7MkI7Ozs7Ozs7O2dCOzs7Ozs7OztXLE87VTtrQjs7UztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztJLFU7SSxTOzs7Ozs7Ozs7STs7SztNLEksYywyQzs7Ozs7TyxTO087Tzs7O0k7RztHO0k7STtJO0k7O0k7STtJO0c7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHLHFCOztJLEksUTs4QixtQztJLGE7STtJO0c7O0k7SyxNOztLLE07O0ksVzs7OztLOztNOzs7Ozs7Ozs7OztNOzs7STtLO2lELDJCOzs7STtHOztJLHFCOztLLE07SSxzQjs7SSxJLFE7Ozs7Ozs7Ozs7Ozs7STs2Qix5QjtHO0c7STtJO0k7STs7STtJO0c7O0k7Ozs7Uzs7O1MsSSxTLGtCOztVOzs7Ozs7Ozs7UztTLGU7UztRO0ssTzs7OzBCLE87d0IsTyxpQjtJLE87Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztLO0k7Rzs7STs7Ozs7Ozs7OztxQjs7Szs7STtHOztJOzs7Ozs7O29COztJO0c7O0k7Ozs7Ozs7b0I7O0k7Rzs7STs7OztLO0k7Rzs7b0IsMkI7STtLLFE7OztJOzs7O007Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7O1EsTzs7OztLLFc7Rzs7STtLLGlDO0s7SyxPLG9EO0c7O0k7Ozs7OztLOztJO0c7O0k7Ozs7Ozs7SyxJLFE7OzsrQjs7O0s7O0k7Rzs7STtLOzs7STs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7OztLLFE7SyxnQixPO0s7TSxNLFc7TSxNLFc7TSxNLFc7Szs7STtJO3VCOztrQjtJLHFCLFU7a0I7O0k7Rzs7SSxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7OztJLFU7STs2QztJO0k7Rzs7SSxXOzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtHOztJO2U7Ozs7Ozs7STtHOztJOzs7O0ssTzs7STtHOztJO2tEOzs7O007Ozs7Tzs7TTtNO007Ozs7STtJO0c7O0k7d0I7Ozs7c0I7TTtNOzs7O0k7STtHOztJO21COzs7O3NCO007TTtNOzs7O0k7STtHOztJO0s7OztLO0k7Rzs7O0s7TTs7O007OztNOzs7OztPOzs7Ozs7OztNO087Ozs7OztLOzs7Ozs7OztJO0k7Rzs7STtLOzs7SztJO0c7O0k7Szs7OztNO0s7STtJO0ssUTs7O0k7Ozs7Ozs7O0s7O007O0s7Ozs7Ozs7VTs7Ozs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLE87OztpRDtLLE87O0k7Ozs7Ozs7O3VEOztLLE87OytCOzs7STtLO0s7SztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0k7b0Msc0I7SSxPO0c7Rzs7SSxnQjtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2tDLHlCO2EsUztZOzs7Ozs7Ozs7Ozs7bUI7Ozs7OztZOzs7O2EsK0I7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7OztZOzs7OzthLFU7OzsyQjtZOzs7OztZOzs7OzthLFU7OzsrQjtZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TyxHO1E7UyxPO3VCOzs7Tzs7TztnQjtPOztPOzs7Ozs7Ozs7TyxpQjtPOztHO0c7STtNO0ksVTs7SSxPO0c7O0ksTztHOztJOzs7Ozs7Ozs7Uzs7O1UsTzs7O1U7Ozs7Ozs7Ozs7O1csTTs7OztTOzs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7Ozs7O1M7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLFc7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7OztNOzs7OztxQjtTOzs7O1EsTzs7OzBCOzs7Ozs7OztVLG1CO1U7Ozs7Ozs7Ozs7OztXLEc7Ozs7OztVOzs7Ozs7VyxNOzs7O1M7Ozs7O21COztTLHFCO1M7Ozs7SSxNO3VCO0c7O0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Ozs7Ozs7STthLE07STtHOztJO0s7O1M7Szs7STtLLFc7SztLLGU7STtJO3lCLG1CLGU7STtLLE87SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOzs7STs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087STs7O1EsTTtPO0k7VTs7O0ssVztLLE87STtJO0ssUztLOzs7O007O08sTztjOztpQjs7OztnQjtJLEksTSw2Qzs7Ozs7dUM7O0s7Ozs7OztJLE87RztHOztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOzs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7STtJLE87Rzs7STs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YztjOzs7Ozs7Ozs7Ozs7Ozs7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthO2M7Yzs7Ozs7Ozs7Ozs7Ozs7O1E7UTs7OztNO087USxRO1E7USxNO1EsTztROzs7VyxXOztRLFU7Ozs7Ozs7O1E7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7O087Ozs0Qjs7Ozs7Ozs7Ozs7Szs7Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7SztNO00sUTs7O007Szs7OztrQjs7SSxPO0c7O0k7SyxPO0s7SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7SSxpQixPO0k7Ozs7Ozs7O0k7Szs0QjtLLE87O0k7SyxPOzs7STtHOztJOzs7STs7SyxNOzs7O087Z0I7Ozs7OzsyQjs7Tzs7OztRO087O087Ozs7USxtQztROzs7OzthOzs7YyxjO2E7O1k7Ozs7Ozs7USxRO1E7TyxPOzs7Ozs7O1M7Ozs7O1U7b0I7Ozs2Qiw2QztVLEc7VztZOzs7OztlOztnQixNOztlO2M7WSxXO1k7WTs7WSxPO1k7Yzs7Ozs7Ozs7OztXLHFCO1c7WSxVOzs7WSxVOzs7WSxVOzs7WTtXOzs7Ozs7Ozs7O3NCOzs7Ozs7O087O1EsVTs7O1EsVTs7O1EsVTs7O1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7OEIsZTtZLGlCO1c7VyxlO2dDLG1CLFU7VyxVOztZO1ksZTtXO1c7WSxZO1ksTztZLE87WSxPO1c7O1k7VztXO1k7WTtrQyx5QztZLE07WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7K0I7VztZLE87WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7OztjLFc7YyxXO2E7VyxVO2tDLG1CLGU7VyxRO1c7YTs7Ozs7VyxNO1U7Vzs7YTs7Ozs7O1M7Z0M7VSxPO1UsUztVLEk7VTtZOzs7Ozs7UztVLE07UztVOztZOzs7Ozs7O1c7Ozs7VztVO08sTzs7Tzs7O1EsSzsyQiw2QjtRLFU7USxzQjtRLE87USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztpQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVOzs7VztXO1k7O2EsZTtZOztXOztZLGE7OztZO2E7OzthOztnQixNOzs7Ozs7Vzs7OztvQjs7VTtRLEs7USxPO1EsVzs7OzswQixnRDtRLE07TztzQixNO1EsVztRO1M7Ozs7dUI7O1M7OztZLE07Ozs7b0IsTTs7Ozs7OztRLGE7UTtTOzs7Ozs7Uzs7O1ksTTs7Ozs7OztZOzthLE87Ozs7OztPLDBCOztPOztPOzs7UTtROzs7UyxXO1M7Ozs7OztXOztXLFc7Vzs7TyxXO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Ozs7UTtTLE87O1E7O087UTtRLFE7TztROztTLFc7OztTOzs7O087O087OztRLFE7UTtPOzs7O3FCOzs7Ozs7OztPOzs7USxRO1EsTztRLFE7Tzs7Tzs7OztRLFE7USxTO1EsUTtPOztPOzs7USxRO1EsUztRLE07UTs7O1c7OztZLFE7Vzs7O1U7USxPO087Ozs7OztpQjs7Ozs7Ozs7Ozs7Uzs7Ozs7VSxhO1U7VTs7YTs7OztVO2lCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7OztROzswQjtPLEksaUM7Tzs7TyxvQixXOzs7UztVLE87VSxPO1U7Uzs7Ozs7UTtTLE87O1E7OztRO1MsTzs7UTs7O1E7UyxPO1M7UTs7TztRLE87UTtRO1E7Ozs7b0I7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7Ozs7VyxZO1c7OztZLFU7WSxXOzs7O1k7O2dCOzs7OztZO1k7Ozs7O2dCOzs7O1ksTTtZO1csTzs7Ozs7UTs7WTs7Ozs7UTtRLGM7OztXOzs7Ozs7OztVO1E7Ozs7Ozs7USxTO1E7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7O1c7Vzs7Ozs7Ozs7cUI7OztVO2lCO087Ozs7ZTs7O0c7O0k7OztJO0k7Ozs7UTs7O2dCOzs7Rzs7SSxvQjtJLE87Rzs7O0ssWTtLO0k7SSxXO0ksTztHOztJO0ksWTs7STs7Rzs7O0k7Ozs7STs7SztJO0k7SztLLDJCLDRDO0ksTzs7O0k7STtJOzs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O2lDO08sbUI7Ozs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTsrQixvQixXO08sRzs7Ozs7Ozs7K0I7NkI7TztROzs7VztXLG9CO1csVztVO1EsTTtRLFM7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1c7VztVO08sTzs7TTs7OztPOzs7Ozs7SyxnQyxPO0ssb0I7SyxXO0k7SSwyQjtHOzs7SSxnQjs7Szs7Ozs7Ozs7Ozs7Ozs7OztRLEc7UztVLE87VSxjO1U7Ozs7Ozs7Ozs7Ozs7Uzs7aUI7Ozs7Ozs7OztvQjtROzs7OztLOztJO0k7Rzs7O0k7Ozs7OztPLFU7VTtRO1M7VSxPOzs7YTthLFc7WTtVLGlCO1M7VSxNO1M7Ozs4Qiw4QztVLG1COzs7YTs7YyxVO2MsTzthO2EsTztZO1UsUTs7O2EsVztZO1UsVTs4QjtVLFM7Z0MsNEM7VSxpQjs7O2E7YTtZO1UsTTtVOzs7YTtTOzs7OztVOzs7Ozs7OztJOztHOzs7STtLOzs7TSxNOzs7UyxvQixNO1MsTztRO2E7OztvQiw2QjtJLFk7SSxrQjtJLFU7STs7WTs7Rzs0QztHOztJOzs7Ozs7SSxZOzs7SztNLHlCOztJO0c7O0k7STtLOzs7UyxvQjs7OztnQzs7c0U7OztTLE07UTtNLFM7OztTOzs7OztVO1UsUTtTOztNO1E7SyxzQiwwQjs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STtHOztJO0ksZTtHOztJO2M7Yzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGlCOzs7O007Ozs7O08sTztPLE87VTtPOzs7Z0I7Ozs7Ozs7STtHOzs7STs7O0ksTztHO3lCLHNDOzRCLE8saUM7O0ksYyxXO3VCLGdCO0ksa0I7SSxPO0c7O0k7Ozs7eUI7SSxlO0c7OztLOzs7TTs7Szs7Ozt3Qjs7STtJLE87Rzs7OztLO0s7STtJOzs7OzthOzs7STs7OzsyQjs7NkI7O0ksTztHOzs7STtJOzs7O1E7O1MsYTtTOztROzs7Ozs7a0I7Ozs7OztRO1MsTTtTLFc7UTs7Ozs7bUI7O1E7O1MsTTtTLHFCOzs7O1k7Ozs7YTs7O2U7O2dCOzs7Ozs7O29DLGtCOzs7O2U7Ozs7O2dCOzs7Ozs7O2U7O1k7VztTLFU7Ozs7OztZO1k7O1c7UyxhO1EsRztTO1U7OztTOzs0Qjs7UTs7Ozs7Z0I7OztROzs7Ozs7OztvQjs7OztROzs7OztTOzs7OzthOzs7Ozs7OztZO2E7YSxPO2E7WTs7Ozs7cUI7Ozs7Ozs7Ozs7Vzs7O1M7Ozs7Ozs7OztROztROzs7Uzs7Ozs7UTs7Z0I7OztROzs7OztTOzs7OzthOzs7Ozs7UTs7Z0I7Ozs7Ozs7O0c7O0ksYzs7OztLOzs7aUI7Ozs7STs7O2dCOzs7Rzs7SSxZLE07O0ksTzs7cUQ7OztJO0k7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7Uzs7OztZOzs7OzthOzs7ZTs7OztnQjs7Z0I7OzttQjttQjtvQjtxQjs7O2dDO3FCOzs7OztvQzs7b0I7Ozs7MkM7OztrQjtnQjs7Ozs7OztxQjs7Ozs7Ozs7ZTs7ZTs7OztnQjtlOzs7O2dCOztpQixXO2lCO21CO2dDOzs7aUI7OzRCO2tCO21CLE87bUIsTTs7Ozs7Ozt1Qjs7Ozs7OztnQjs7O3dCOztnQjs7O3dCOzs7OztlOztnQjs7O21CO2dDO2U7Ozs7OEI7Ozs7O2U7O1k7VztTLFU7Ozs7O1M7O1M7c0MsNkI7UyxRO1MsTTtTLFE7Ozs7VTtXOztjO2M7Ozs7OzRCOzs7a0I7Ozs7Ozs7UyxJLE0sZ0M7Ozs7VTtXO2lDO1c7OytCOzs7O1M7VSxPOzs7YTthO2E7WTtVLE87O2dDO1U7Ozs7K0I7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7OztZLFc7VztTLGE7UyxnQjs7O1M7OztROzs7Ozs7Ozs7O1E7Ozs7Ozs7OztTLEs7VSxNO1M7VSxNO1UsTTs7Ozs7YTthOzs7Ozs7WTtVLFk7OzthO2E7Ozs7OztZO1UsWTtVO1U7O1UsK0I7VSxPO1M7Ozs7Ozs2Qjs7Ozs7O1k7Ozs7Ozs7Ozs7VztRLFM7UTtTOzs7O29COzs7O1E7Ozs7dUI7Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OztjO2MsTzs7YTs7SSxpQixTO0k7Rzs7STtJOzs7Ozs7UzttQjtXLE07Ozs7O1csTTs7O1E7UyxTO1MsVztROztRLE07O1E7Ozs7Uzs7Ozs7O1k7YTthLE87YTtZOzs7OztxQjs7Ozs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007OztTLFc7O1M7Ozs7VTs7VyxLOzhCLFcsK0I7VSxPOzs7OztNOzs7O1U7O1csSTtXLE87VTs7eUI7MEI7Ozs7Ozs7OztvQzs7Ozs7Ozs7OztPOzs7O00sa0I7Ozs7Ozs7Ozs7Ozs7O2EsRztjOzs2Qzs7Ozs7Ozs7Ozs7OzthLEc7Yzs7Ozs7Ozs7O1csRztZOzs7OztNLE07SztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjtxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VSxJOzs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0ksb0I7SSxPO0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztNOztPOzs2QixtQjtrQjs7Ozs7O0s7TSxPO00sTztNOztLO007Ozs7Ozs7YSxROztZO1MsTzs7Ozs7Ozs7OzthO3FCOztZO1MsTzs7Ozs7O2E7cUI7O1k7UyxPOzs7aUI7OzsrQjs7Ozs7O21COzs7O1M7aUI7O2M7O0s7SztLO00sTztNLE87O0s7TTtRO00sTztNLE87b0I7SyxJLHFCOztNO007TSxPO0s7SyxPO0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTs7SyxXO0ssTyx5QjtJO0k7SyxjO0ssTztLLFU7O0s7TSxTO00sTztLO00sTTs7SztJO0k7O0s7Szs7Ozt3Qjs7STs7SztLOzs7Ozs7Ozs7OztxQjs7Ozs7O0s7TTs7O00sSzt5QixXLGdDO0ssRztNO087d0I7O007O087Ozs7O087Ozs7YTs7Ozs7Ozs7Ozs7O0s7OztLO0s7Ozs7Ozs7Ozs7O0k7SyxTO0ssUzs7Ozs7Ozs7O0s7TTs7MEIsZTtzQjs7OztLO007OzBCLGU7OzJCO0ksVzs7SztLO0k7SSxnQjs7SztLOzs7O3dCOztJOztLLHFCLE87SyxPO0k7SSxnQjs7SztLO0k7SSxlOztLO0k7STtLO007TTs7OztZOzs7Ozs7O0s7TTs7OztNO21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Szs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7O2E7OztJO0c7O0k7Rzs7OztJLE87Ozs7SSx1Qjs7SSxXO0c7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7STs7SztNO00sTTtLO0k7SSxPO0c7O0ksOEI7Ozs7Ozs7OztZO1c7Vzs7WTs7Vzs7dUI7VztVO08sTzs7Tzs7O1EsUTtRO1E7UTs7OztROzs7Uzs7O1UsVTtVO1U7VTs7Ozs7Ozs7O1c7O1k7WTs7Ozs7Ozs7a0I7Ozs7O1c7OztvQjs7Ozs7VTtPLE87Ozs7Ozs7TyxPOztPOzs7O1EsTTsrQix1QztPLE87O0c7O0ksSSxLLDZCOztLOzs7Ozs7SyxLLGlDO0s7TSxPO00sTztNLE87Szs7Ozs7d0M7OztJO0k7SyxROzs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLOzs7Z0I7Ozs7aUI7OztnQjtlO2EsUzthLE87OztnQjs0RDtnQjs7aUI7OztnQjtlO1ksVzs7Ozs7Ozs7OztZOzs7YTtZOzs7OztnQzs7O007OztJLE87RztHOztJOzs7Szs7OztJO0c7RztJLFc7STs7OztLOzs7Ozs7VSxZOzs7O2E7O2EsTTs7O2EsTTs7O1M7OztVO1U7c0I7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7OztnQzs7O21CLEs7Z0M7Ozs7Z0I7O2U7ZSxNOzs7O2UsTTs7OztjOzs7O2UsUTs7Ozs7O2MsTTs7Ozs7ZTs7O2dCOztvQjtlOztjOzs7ZSxROzs7OztjOzs7O2UsUTs7Ozs7YyxxQjtjLFc7Ozs7UztNO087UTs7USxROzs7O21CO1E7Ozs7Ozs7O21COzs7Ozs7Ozs7Ozs7O007TyxRO087OztLLFc7SztJO0ksaUI7eUIsbUIsVTtJO0ssTztLLEs7eUIsb0IsVztJO0ssTztLLE07eUIscUIsWTtJO0ssTztLLE87eUIsb0IsVztJO0ssTztLLE07SyxLO0s7SyxTO0s7O0s7O007Ozs7VTs7VyxNO1Usa0I7O1csTTs7VTtTOzs7TTtPOzs7Ozs7VTtVLE07Ozs7Ozs7UyxJOzs7O08sTTs7O2lCOzs7O0s7TTtNLEksNkI7Ozs7UTs7O1M7O1U7UyxHO1U7Ozs7UTs7Ozs7O0s7O007TTs7Ozs7Ozs7Ozs7OztLO0s7STtJLEksNkI7Ozs7TTs7TyxNO2tCO007Ozs7Ozs7SztLOzs7Ozs7UTs7Ozs7O1M7UTs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7OztJOztLO0s7Ozs7OztROzs7OztPOzs7O0k7O0s7SztvQjs7Ozs7UTs7Ozs7UztROzs7a0I7Ozs7Ozs7Ozs7Ozs7O0k7STtHOzt5QixtQixhO0ksVTs7Szs7Ozs7O0s7O2E7STtJLGdCO0c7O0k7STtLLHNCLE87SztLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRO1M7OztZOzs7Ozs7WTthOzthOzs7YyxxQjs7Ozs7Ozs7Ozs7Ozs7YSxZOzs7Ozs7Ozs7ZTtnQixPOzs7Ozs0QjthOztnQjs7YyxNO2lDO2E7O2M7Ozs7Ozs7WSxPO2EsTTtZOzs7O2E7Ozs7OztjLFU7YztjO2M7YTtZO1k7YTtlOzs7WTs7Ozs7Ozs7VztRLE87O1E7Ozs7UyxVOzs7UztTOzs7Ozs7Ozs7O1M7MEI7USxPOztROzs7Uzs7Ozs7O1E7bUM7OztHOzs7STs7Ozs7Ozs7O087USxTO1EsTzs0QixlOzswQjs7Tzs7O1EsTztRLEk7UTs7Vzs7O1U7USxROzs7VztXO1k7Ozs7O2EsTztZLE87O1c7VTtRLGlCOzs7VztXLFc7VTtRLGdCO1EsVTtROzs7Ozs7Ozs7Ozs7Ozs7O007O0sseUM7OztROztTOzs7O1EsZ0I7O1E7OztTO1c7UyxPO1MsYTtTOzs7OztRLFc7OztROzs7Ozs7UTs7Uzs4QixjO1MsTTtTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VSxzQjtVOzs0QjtVO1k7Ozs7O1M7VTs7OztTO1U7Ozs7O29COzs7Uzs7O1U7Ozs7Yzs7OztTOztrQjs7Ozs7OztRLEksYyxPO1E7USxxQixPO1E7Ozs7UTs7NkIsYTtTLE87UyxlO1M7Ozs7O1M7Ozs7YyxTO2M7O2U7ZTs7bUI7ZTtjOzs7dUI7Ozs7YTs7O1E7O1EsbUIsTzs7UTtTLFE7UyxNOzs7WTs7O1k7OzthOzs7WTs7Ozs7Ozs7c0I7Ozs7Uzs7O1E7Ozs7UTs7Uzs7O1M7Ozs7YTs7Ozs7OztROztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJO0k7Szs7Ozs7b0I7Ozs7SztJO0k7OztLLGdCLHdDO0ssTztJO0k7SyxPOzs7SyxrQjtJO0k7SyxXO0ssTztLLGE7STtJO0k7Rzs7O0k7O0k7STtLLFk7SyxTOztLO0k7STtLLFE7OztJOzs7STs7O0s7SztJOzs7STtJO21CO0sseUM7Ozs7O1E7O1M7UyxPO1EsTzs7Ozs7O1E7O1M7OzhCLGM7UyxPO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTOzZCLGE7UyxPO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7Z0MsbUIsYTtTLE87USxPOzs7O1E7O1M7UyxPO1EsTzs7OztHOztJO0k7bUI7Syx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxJLHlCO1MsTzs7Ozs7Ozs7O1EsbUI7NkI7USx3QjtRLE87Ozs7Ozs7Ozs7VTs7VztXO1UsTzs7Ozs7Ozs7Rzs7STtJO21CO0sseUM7Ozs7O1E7O1M7UyxPO1EsTzs7Ozs7O1E7O1M7OzhCLGM7UyxPO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTOzZCLGE7UyxPO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO2dDLG1CLGE7UyxPO1EsTzs7Ozs7Ozs7VTs7O1c7VztXLE87VyxPO1UsTzs7O1EsSSx3QixPO1EsTzs7OztHO0c7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRO1MsTzs7OzJDLFc7USxPOzs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VztnQyxjO1csUTtXO1c7O1c7OztVO2tCOzs7VTs7O1c7VyxNO1csUTtXOzs7VztVOzs7OzttQjs7Ozs7Ozs7OztlOzs7O2dCLE87ZTtlO2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7b0MsZTtnQjsyQjtlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFE7Vzs7O1c7VTs7O29CO3FCOztzQjs7OzBCOzs7b0IsTzttQjs7Ozs7O1c7O1k7O1ksUTtZO1ksUTtZLE87WTs7O2U7OztlOzs7Z0I7Z0I7ZTs7Ozs7OztZO1c7O21COztVLFc7O1U7VyxRO1csTTtXLFE7OztjOzs7Yzs7O2U7Yzs7Ozs7OztXO1c7VTs7OztrQjs7O1U7O1c7OztXO1c7OztVO2tCOzs7Ozs7Ozs7YTs7Ozs7O2MsTzthO2E7YztjO2M7O2tCO2MsUzs7O2lCOzttQjs7Ozs7b0I7b0I7O21DOztvQjttQjs7OzsyQjs7Ozs7Ozs7Ozs7aUIsTTs7Z0I7YTs7OztVO1csUTtXO1csUTtXOzs7Yzs7O2M7OztlO2U7OzhCOztjOzs7Ozs7O3VCOzs7VztXO1U7Ozs7a0I7Ozs7Ozs7TTtPO1EsUTs7O1E7UTs7Ozs7Tzs7Ozs7TztRLE87USxPO08sTzs7Szs7TSxvQjtNLE87Szs7TTtPO1EsUTs7Ozs7O1c7Ozs7Ozs7UyxNOzs7Tzs7Ozs7USxNOzs7Szs7TSwwQjtNLE87Szs7O007Ozs7OztpQjs7Ozs7O007Ozs7O08sVztPO007Ozs7O0s7TSxVOztNO0ssTztJO0ksTzs7O0k7SyxPO0ssUztJO0c7O0ksc0M7O0k7SyxlO0ssUztLOzs7O0k7O0c7SSxnQjtJO0k7OztJLDhCLE87d0I7O0c7O0ksSSxXLDhDOzs7NEIsTzs7O0c7O0k7STs7Ozs7Ozs7Ozs7RztvQyxxQzs7STtJOztJOztNOzs7Tzs7Ozs7Ozs7Ozs7OztVOztXLFM7VyxNOzthOzs7OztVOzs7O1U7O1c7Z0MsYztXLFc7VTtVO1csTzs7Ozs7VTtVO1csTzs7Ozs7Ozs7WTtZO2E7O2lCOzs7Ozs7Ozs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFc7VyxPOzs7OztnQixTOztnQjt5Qjs7OztlOzs7OztVLG1CLE87O1U7VyxNO1csTTs7O2MsWTtjOzs7ZTtjOzs7O1c7Ozs7VTs7Vzs7O1U7Ozs7O2M7OztVOztXLFE7VztXLFE7OztjLFk7Yzs7O2U7Yzs7OztXOzs7OztrQjs7TTtLO0s7WTtNLE07O007TTs7Ozs7Ozs7Ozs7Ozs7OztLO0ssTzs7SSxPO0c7O0ksWTs7STtHOztJO2dCOzs7TSxNO2lDOztJOzs7Ozs7OztlOztHOztJOzs7O1E7O0k7Ozs7Rzs7STtLLFU7Syw4QjtLLFk7STs7Szs7TTs7O1c7Ozs7VTs7O0ssVzs7O0ssTTtJOztLOzs7UTs7SyxNO0s7Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTtNLE07TSxVO0ssTztJO0k7O087O087O087ZTs7OztJLFksTztJOztLLFU7SSxPOzs7O0ksdUI7O0k7RztHOztJOzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7O0k7OztPLEc7USxNO087O087Ozs7Ozs7USxzQjtRLE87Tzs7TyxXO08sRztRLE07Tzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOztPOzs7UTs7O1c7VztVO08sVzs7Ozs7Ozs7Ozs7O2MsRyxnQzs7Ozs7Ozs7Ozs7Ozs7ZSxHO2dCOzs7Ozs7Ozs7Ozs7YSxHO2M7Ozs7O087OztRLHNCO08sYzs7Tzs7Ozs7USxzQjtRLE87Ozs7VztXO1U7USxPOzs7OztXO1c7VTtRLE87UTtPOztPOzs7OztRLHNCO1EsTzs7O1c7VztVO1EsTztPOztPOzs7USxzQjtPLGU7O087Ozs7UTtPOztPOzs7O1E7Tzs7Tzs7OztRO1E7Tzs7TyxrQztPOztPLGtDO087O087Ozs7OztRO1E7Tzs7O087O087Ozs7OztRLHNCO1EsTztRO087O29DOzs7TztlOzs7OztJO0ssVztZOzs7Ozs7OztTOztVLE87WSw2QztrQyxnQjtTLFc7Ozs7Ozs7Uzs7VSxPO2dCOzs7Ozs7O0k7Ozs7SztLO0k7SSxPO0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7Ozs7Ozs7Ozs7Ozs7O1k7WTtXO1E7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7O1E7a0Q7OztRO2tEOztROztTLHNCO1EsTzs7O1E7Ozs7WTtZO1c7UTtRLDBCO1EsTzs7O1EsTzs7O1E7Ozs7O1E7Ozs7O1E7UTs7Ozs7UTs7Ozs7UTs7Ozs7UTtROzs7Ozs7OztRO1E7USxPOzs7OztLOzs7Rzs7cUIsZ0Msa0I7SSxPO0c7O0ksb0I7SSxPO0c7Ozs7Szs7Ozs7O1E7VSwwQjs7VztnQjtTO1U7OztTOzs7OzttQixNO0ssUzs7TSxtQixPO00sUyxNO007SztLO0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SzswQixrQix5QjtLO00sTztNO3lCO0s7TSxPO00sZTtNLFU7OztNLE87SztLO00sUTtNLFM7dUIsa0I7Szs7Ozs7VTs7Ozs7Szs7STtLO007Ozs7TTs7OztLOzs7OztNOzs7OztHOzhCO0c7STs7O0k7SyxRO0ssWTtLLFc7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7OztVO1c7Ozs7Vzs7Ozs7O1MsTzs7Ozs7UTtRLE87Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7Ozs7OztLLE87STsyQiw0Qjs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7O00sa0M7TTtLO0ssTztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1M7O1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7NEIsa0IsMkI7Uzs7OztTOztVLHNCO1MsTzs7Ozs7VTs7VyxVO1csVTs7VztXOzs7O1csTTtVOztTOzs7OzRCLGtCLDJCO1M7Ozs7NEIsa0IsMkI7UyxPOzs7Uzs7OzRCLGtCLDJCO1M7aUI7OztVOzs7Ozs7OztTO1MsMEI7UyxPOzs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7OztTOzs7O1U7VSxzQjtTLE87Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7OztVLHNCO1UsTztTOzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1U7Uzs7Uzs7Ozs7VTtTOztTOzs7VTs7O2E7YTtZO1MsVzs7Uzs7OztVLHNCO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTs7OzthO2E7WTtVLGE7Ozs7YTthO1k7VSxhOztVLHNCO1UsVztTOzs7OztTOzs7OztVLHNCO1UsTzs7O2E7YTtZO1UsTztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VSxzQjtVLE87UztVO1csVTs7Ozs7YztjLFc7YTtXLEs7Ozs7YztjLE87YTtXLE07VyxPOzs7YztjO2E7VyxPO1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1Usc0I7VSxPO1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7VTtVLG9CO1UsTztTO1M7O1U7Vzt5Qjs7Ozs7OztTOzs7Ozs7Ozs7Ozs7VTtXO1c7Ozs7Uzs7Ozs7Ozs7O1M7Ozs7Ozs7aUMsa0Isd0I7Uzs7OztTOztVLHNCO1MsTzs7Ozs7VTs7VyxVO1csVTs7VztXOzs7O1csTTtVOztTOzs7aUMsa0Isd0I7Uzs7O2lDLGtCLHdCO1MsTzs7O1M7O29DLGtCLHNCO1M7aUI7OzZCOzs7O1M7O1Usc0I7UyxPOzs7Uzs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7OztTOzs7O1U7VSxzQjtTLE87Ozs7Ozs7Ozs7OztJO0ksYztJO0s7O00sZSw2Qjs7SztJO0k7Szs7TSxlLDZCOztLO0k7O0s7Szs7OztTLEksVSwyQzs7O2dDOzs7Ozs7O1U7Ozs7O1csTTtVO1M7Uzs7VTtXO3VCO1c7O1k7Ozs7O1M7O1M7Ozs7Ozs7O1U7Ozs7Ozs7Ozs7O1k7YSxNO2EsTTtnQjthOzs7c0I7Ozs7Ozs7O1M7Ozs7O1U7VztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YztjLEksMkI7Yzs7Ozs7Ozs7O2lCLE07Ozs7O2U7OztlOzs7OztnQjs7Ozs7O1k7Ozs7O2E7WTs7WTs7Ozs7YTs7O2M7Yzs7OzthO2E7Ozs7Ozs7YTthOzs7Ozs7Uzs7Ozs7VTtTOztTOzs7VTs7O2E7YTtZO1MsVzs7O1MsYzs7Uzs7OztVOzs7O2E7YTtZO1UsYTs7OzthO2E7WTtVLGE7VSxXO1M7Ozs7O1M7Ozs7O1UsTTs7O2E7YTtZO1UsTTtTOzs7UyxlOztTOzs7Ozs7VTtTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7OztVLG1CO1U7OztTO1U7VTs7Ozs7UyxrQztTOztTOzs7Ozs7VTtVO1M7O3lDOztTOzs7Ozs7VSxNO1U7Uzs7d0M7OztTLHlCOzs7aUI7O0k7STtLO0s7SyxhO0ksUTtJO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztJO0k7OztJLHVCOzs7Rzs7SSxVOzs7OztHOztJLFU7O0s7SztLLE87STtJO0ksVTtJO0k7OztHO0c7Ozs7SSxrQjtJO0k7SyxlO0s7TywyQjtJLEc7SyxNO0k7O0k7Ozs7TTtPLE87TyxNOztNOzs7Ozs7Rzt1QixvRDs7STs7ZTttQjs7OztpQixNOztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7K0IsMkM7STtLLE07ZTthO0c7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OztJLG1COztJLE87RztHLEksc0I7O0ksaUI7O0c7O0k7b0IsVyxxQztxQjs7Rzs7SSxHO0ssTztJOzs7TztTO0s7O1E7O0ssTzs7STtHOztJO0ssVztLO007TyxhO087UztZOzs7Ozs7Ozs7SztnQjs7OztPLEksWTs7OztROztTLE07UyxNO2U7Ozs7OztPLFk7Ozs7UTs7UyxNO1MsTTtTLE07ZTs7Ozs7Ozs7Ozs7SSxPO0c7O0k7Ozs7Rzs7STs7aUI7Ozs7TSxHLHVDO00sSTs7O007OztPLE87TTs7bUM7Tzs7TSxJOzs7RztHOztJOztJLGlCOztJLE07Rzs7STtJO0s7TSxNO00sSztLOzs7cUI7Ozs7OztNOzs7Ozs7OztHOztJLEksUTs7OzJCOzs7SSxPO0c7O0k7O0s7cUI7O0c7O0k7SztLLE07SyxNO0s7cUI7STtLLE07SyxNO3NCLGdCO3FCOzs7O0c7O0k7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7MkIscUM7O0s7NEI7SztJOztLOztLO0k7STs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJO0c7O0ksSSx5RDs7OztNLE07NkI7OztHOztJO0c7Rzs7STtJO0c7O0ksSSx5RDs7Ozs7Ozs7O1E7O00sWTtrQixNOztvQjtNLHVCO007TTs7Szs7Rzs7STttQjs7STtHOztJO0ssTzs7O0s7SztJO0k7STtHOztJO0s7SyxJOztLOzs7O007TTtNO007Ozs7O0ksTztHOztJO0ksTztHOztJLEksMEQ7Ozs7TTtNO007Ozs7O0k7STtJLG9DOzs7O007TTtNOzs7OztJO0k7SSxvQzs7OztNO007TTs7Ozs7SSxPO0c7O0k7O0ssSSxJLE87Ozs7ZTs7SztNO007Ozs7Ozs7O0k7STs7SyxTOztNLEksUSxlOzs7K0I7OztLO0s7TTtNLDJCLE8sMkI7SyxPO0k7Ozs7SyxPO0ksZTs7Szs7O1E7VTtNLE07SztJO0k7SztLLDJCLE8sK0I7SSxPO0c7O0k7STtJOztHOzs7Szs7O1E7OztTOztROzs7UTs7O1E7OztROztJO0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCO1E7OztXO1c7OztVO087Tzs7Tzs7UTtVLCtCOzs7VyxPLCtCO1U7TztPO21DOztHOztJLEksTyx1Qzs7SyxxQztLO0s7STtJOztJO0c7O0k7RzttQyx1Qjs7STtPO0s7SSxJLE8seUI7O0sscUM7SztLO0k7STs7O0c7O0k7SztNO08sVztPOzt5QixPLDRDO3lCLE8sNEM7MEIsTzs7Ozs7O00sUztNO007NkIsTywyQjtPLE07a0I7O3VCO0ssWTs7Szs7O00sUTtNO1E7OztLLEksSSxNOzs7Ozs7SztLLEksSSxNOzs7Ozs7SztLOzs7Ozs7SyxPOztHO29DLDhCOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7STs7Szt3Qjs7SztJO0ksTztHOztJOztLO3dCOztLO0k7SSxPO0c7O0k7O0s7d0I7Szs7TSxVOzs7TSxNOzZCO0s7STtJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7SSxJLDJCOztLO00sTTtNOzt3Qjs7O0k7STtJO0c7O0k7Rzs7STtHOzs7STs7eUIsTzs7O08sTzs7O08sTzs7O08sTzs7OztJLHVCOztJLFc7RztHOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksa0I7SSxPO0c7O0ksd0I7RztpQyx1Qzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUzs7SztNO00sUywyQjtLLEs7TSxNO0ssVTs7SyxPO0k7STtLO0s7OztTOztRO0ksTztHOztJLFM7STtJLFU7STtLO007TSxTO00sTTtNLE07TSxPO2lCO0s7O007TSxNOztZO00sTTtLLFM7SztNO08sTTs7Ozs7Ozs7SztLLEssNkM7SztLLE07O0ksVztJO0c7O0k7STtlO0k7OztrQixXO0ssUSxXO0k7STtHOztJO0k7ZTtJOzs7a0IsVztLLFEsVztJO0k7Rzs7STs7O0c7Rzs7O0ksUztJO0s7ZTtLLEc7OztNLFU7TSxHLGtCO08sTTs7Ozs7Ozs7OztXOzs7O0k7Rzs7SSxjLCtCO0c7O0k7SztLOzs7STs7TSxVOzs7TyxVO087O00sVTsrQjs7OztNO00sYTtNOzs7NkIsTyw4QjtlOzs7OztLO0ssTTs7STt3QixvRDtJLE87Rzs7STs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7STtJOzs7TTtLO0ssTyxXO0k7STtLO0ssMEIsc0M7SSxPO0c7O0k7SSxrQjtJO0c7O0k7SSxrQjtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7OztJLE87Rzs7STtJO0k7STtJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJO0ksTTtHOztJO0ksTTtHOztJLFk7O0k7Rzs7SSxZOztJO0c7RztJO0k7STtJO0k7STtJO0k7STs7STtLLEc7TSxNO2E7TSxNO0ssZ0Q7Ozs7TyxZOzs7O1M7Ozs7Ozs7Ozs7O1E7Ozs7O08sTTs7O0s7Szs7Ozs0Qjs7O0c7O0k7ZTtJLFc7SSxPO0c7O0ksZTtJO0s7TSxNO00sTzs7Ozs7Ozs7SSxhO0k7STtHO0c7O0ksTzs7Rzs7STs7O08sTTs7Ozs7Szt5QixPLDhCO00sTztLOzs7OztLLDBCO0ssTzs7Rzs7SSxnQjs7SywwQjtLLE87O0c7O0kscUM7eUM7SSxvQjtJO0k7Rzs7STtLLFM7SyxPO0ssUTtrQyxPO0ksVztJLG9CO0k7STtHO0c7O0k7SyxPO0ssTztJLE8sVztHOzs7SywrQixTO0k7O0ssK0IsYTtJOzs7Ozs7Ozs7OzswQjs7OztVOztVOztVOztVOztTOzswQjs7Ozs7VTs7Uzs7UTs7Ozs7Uzs7Uzs7O1U7O1M7Ozs7Uzs7VTs7O1UsTzs7Ozs7O1E7OztRO1MseUIsUztTO1M7b0I7USxxQjs7OztRLDBCO1EsTzs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7OztTOztTOzs7USxvQjs7O1MsMEI7UyxPOzs7O007TyxRO087Ozs7Ozs7TyxjOzs7Ozs7Tzs7USxzQjtPLE87Ozs7O1EsTzs7Ozs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOztTLGM7dUI7Uzs7VSxPO1Usc0I7UyxPOzs7UyxPOzs7Ozs7OztTOztTOztTOztTLGM7Ozs7OztTOztVLHNCO1MsTzs7O1M7Ozs7Ozs7Ozs7OzswQztTOztVLE87VSxPOzs7Ozs7OztTOzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs7USxPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7O1E7Ozs7SSxlO2U7O0ksb0I7SSxPO0c7O0k7Ozs7STs7Tzs7SSxHO0ssSSxTOztNOztPLE87TyxXO08sTztNLFc7TSxNOztLO00sTTs7OztLO007TztROztXOztXO1U7USxPOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7d0IscUQ7aUI7O0s7O007OztTLGM7Uzs7VSxhO1UsWTtTLE87O2lCOztLO0s7STtJO0k7SyxRO0ssRzs7O087OztRLFE7Ozs7Ozs7OztxQjs7O1M7VSxPO2lCOzs7OztPOzs7Ozs7VSxJLGM7Ozs7WSxNOzs7cUI7Ozs7VTtXLEk7O1c7WTs7Ozs7O1U7VyxNOzs7Ozs7O087USxNOztPO1EsTztRLE87Ozs7Ozs7O087Ozs7Ozs7Ozs7O1U7VTtTO007Ozs7Ozs7SSxXOztJLFc7OztHOztJO0k7SyxNO0ssTTtJLE87RztHOztJO0s7SyxNO0ssTTtJLE87RztHOztJOztHOztJOztLOztPO1k7TSxHO00sRzs7Ozs7O0k7RzsyQiw0QjsyQiw0Qjs7STs7O0s7OzRCLDRCO00sTTtZO007Ozs7Ozs7O1MsbUI7O1MsTztRO1k7OztJLFE7SSxVO0k7Ozs7Ozs7O007TTtNO007O08sVTs7O0s7Szs7OEI7OztRO1E7UTs7O1M7O1UsVTs7Ozs7Ozs7O1E7Ozs7Ozs7aUI7UyxNOzs7OztROztVO2U7O1c7Uzs7VztnQjtVOzs7ZTs7OztVLGM7Ozs7Vzs7VTs7YTtVLE07Ozs7Ozs7OztROztTLE07Ozs7UTs7UyxNOzs7OztJOzs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7O0k7STtLO1k7Szs7Ozs7TTs7TyxZO08sTSxXO08sTTtPLFk7TTtNLE07OztLOztNLE0sVztNLFksVztNLFc7SztLLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzt5QixTO0ksaUI7STs7OztHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7Rzs7RztJOztHO0c7STs7RztHO0k7O0c7RztJOztHO0c7STs7O0k7OztZO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Ozs7STtLLE07O0k7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt5QixvRDs7STtHO3VCLGtEO3VCLGtEOztJO0c7dUIsa0Q7d0IsbUQ7eUIsb0Q7eUIsb0Q7O0k7Rzs7STtHO3lCLG9EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7a0IsMEQ7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O0ssYTs7Ozs7Ozs7Ozs7Ozs7OztLO007O1MsTTs7UTs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7O0ssc0Q7O007OztpQyxpQzs7bUM7TTtPO2tCOztNO2tDLFcsYztNOzs7Uyx1QixrQixpQjs7O1M7O2tCO2tCLHVCO2lCOzs7UywyQixZLGlCOzs7UywyQixZLGlCOzs7Uzs2QixvQiwwQjs7O1MsdUIsWSwwQjs7O1M7O2tCO2tCLHVCO2lCOzs7Uzs7a0I7a0IsdUI7aUI7OztTOztrQjtrQix1QjtpQjs7O1M7O2tCO2tCLHVCO2lCOzs7cUI7Uzs7O1U7VSxzQjtVLE87Uzs7O1M7OzZCLG9CLDBCOzs7Uzs7a0I7MkQ7a0I7aUI7OztTOztrQjtrQjtrQixPO2lCO29DOztLO0s7STtJLE87RzswQixtQjs0QixtQjs7Ryx1QjtHLEk7RywwQjtHO0cseUI7RztHLHNCO0c7Ryw2QjtHO0csNEI7RztHLDRCO0c7RywyQjtHO0csaUM7RztHLGtDO0c7RyxnQztHO0csd0I7RztHLHdCO0c7Ryx3QjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDJCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2QjtHO0csNkI7O0k7SyxPO0ssTztJLE8sVztHOzttQixvRDtHO0ksUTtJO0csdUI7RztHLDBCO0c7RywwQjtHO0csdUI7RztHLDBCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCO0c7Ryx3Qjs0QixPLGtDOztJLE87O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7RzttQyw2Qjs7RywwQjtHO0csNkI7RztHLHVCO0c7RyxtQztHO0csOEM7RztHLHlDOztJO0k7SSxPO0c7O0k7STtJO0ksTztHOztHLHVDO3NCLGtDOztHLDhCO3FDLDhCOztHLHVCOztHLGlCO0c7RyxxQjtHLEk7Ryx3QjtHO0csaUI7a0Isa0M7O0ksZTtJLE87RztxQixrRDs7NEIsdUM7NEIsaUM7O0csOEI7d0Isa0M7O0csaUI7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7RztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csd0I7RztHLDRCO3lCLFM7O0k7SSxNO0c7O0k7SSxNO0c7O0csc0I7OEIsOEI7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOztHLDBCOztJLE87RzswQixtRDtxQixPLGlEO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOztHLHdCOztJLE87Rzs7Ryx5QjtHOzJCO0csSTtHLHlCO0c7RyxzQjtHO0csMEI7RztHLHdCOztJLGU7SSxPO0c7O0ksVzs7O0c7O0k7Ozs7Rzs7Ryw4Qjs7STs7OztHOztJOzs7Rzs7STs7O0c7eUIsNkI7MkIsNkI7dUIsTyxxQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7O0ssTTtLLE07SyxTO0ssTTtLLFc7SyxNO0ssZTtJO0ksTztHOztJO0k7STs7SyxNOzs7SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJO0k7Rzs7STtLO00sTTtNLEs7TSxXOzs7UztTLE87UTs7OztLO00sb0I7Ozt3QixPLDBCO0ksTztHOzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixnQztHOytCLGdDOztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87MkIsTyxxQztNLFE7TSxRO00sTzsyQixPLG1DO00sUzs7SztrQixNOzs7Ozs7Ozs7OztROztTO1MsRztTLEc7UyxJOzs7Ozs7Ozs7O0s7O007UTs7VztNLFc7TSxXO00sVztNOzs7UyxPLHFCO1E7TSxhO007OztTLE8scUI7UTtNLFk7Szs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O087UTs7d0I7TTs7Ozs7TyxPO2tCOztLOzs7OzRCOzs7OztJO0ssRzs7OzswQix5QjtjOzs7OztJLEs7SyxPOztJOztLLFU7TSxJOztNLEk7O0k7SztPOzs7STs7TSxPO0ssVTtNO007TSxJOzs7TSwwQjtNLEk7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0ssaUI7SztNO087Uzs7TyxPOzs7O1U7VyxTO1csTztVO1UsVTtVLE87UztPLGE7TyxJO007TTs7OztNO00sTTs7Szs7OztLOztNO007OztLLFM7SztNOztNLGE7TTtNO087O1E7UyxZOzs7Ozs7Ozs7Ozs7Ozs7OzthO2MsYzs7Yzs7Ozs7Ozs7Ozs7Ozs7YTs7YyxPOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7TTtNOzs7Szs7Rzs7Ozs7Ozs7SztLOzs7O1M7O1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiw0Qjs7UTtLO0ssTzs7O0s7TSxhOztNLDRCOztRO00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXOzs7SyxPLHFCO0k7SSxHOzs7OztLOztNOzs7O0ksMEI7STtLO087Ozs7SyxXO0s7Tzs7OztLLFc7SztPOzs7TSxXO007ZTs7Ozs7Ozs7O0k7SyxjLGUsd0IsUztLO00sTztNLE87SyxPO0k7Ozs7Ozs7OztHOztJOzs7Ozs7Rzs7STs7STs7SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOzs7Szs7O00sSTtLLEc7TTtPLE87Tyw0QjtNLE87O0ssVztLLE87STtJLE87Rzs7RztJOzs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0s7TSxPO00sTztNLFU7SyxHO007YztNOztLLFM7O007TyxPO08sNEI7OztVLFc7VSxPO1M7TTs7SztNLE87TSxPOztNOzs7OztLOzs7O0s7TTs7O1M7OztLO007OztTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7STtLOzJCOztJOztJO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkI7Ozs7Ozs7MEIsa0M7Ozs7Ozs7MEIsNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7NkI7Ozs7Ozs7NkI7Ozt3QixjOzs7Ozs2Qjs7O3lCLG1COzs7Ozs2Qjs7O3lCLG1COzs7Ozs7OzhCOzs7Ozs7Ozs7OzhCOzs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7TTtNLFU7eUIsaUI7TSxzQjtLO0ssZTtLO0s7O007O08sSTtPOzs7VTs7Ozs7VyxPO1csTztXLFU7VztXO1U7O1U7UztPLFU7OztVOzs7OztVO1c7O1U7O1c7WSxHO2E7WSxXO1k7O1csRztZO1csVztXO1U7VTs7O1csVztXLFM7Ozs7O1U7UztNO007Ozs7Ozs7Ozs7VztZLFE7OztZOzs7WTthLE87YTs7VztXOzs7OztxQjtxQjs7VTtPOzs7TztjO08sVztPO1E7O3FDLHdDO087Tzs7OztXO1csTztVO1EsYzs7O1c7Vzs7O1k7OzthO1ksTzs7VztXO1c7VyxPO1U7TztPOztNOzs7TSxXO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7TTs7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQixPLHNDO21CLE8seUM7bUIsTyxzQztxQixPLHdDOzs7STtJLGtCO0k7STtLLE07SztPOztLLE87Ozs7Ozs7Ozs7STtJLE8sVztHOztJO0ssTTtLO08sVztJLE87YTtHOzs7SztNLE0sVztNO1E7VTtNOzs7OztVLFU7VSxPO21COzs7O1M7TTs7SztLO0s7SztJO0ksTyxXO0c7O0k7SyxTO0ssTTtLLEs7SSxPOztHOzs7SztLLEcsNkI7SyxJOztJO0ksTyxXO0c7O0k7SyxNO0s7TyxXO0ksTzthO0c7O0k7SyxNO0s7TztTLFc7SSxPO2E7Rzs7OztNOztPLFU7TyxPO007TSxPO0s7O007TSxLO087TyxLLDZCOztNLE87SztLLE87STtJLE8sVztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0dDampCTzs7O0lBQ1BDO0lBRE8sVUFDUEE7WUFJQUMsSUFBSUMsR0FBRUM7SUFBSSxLQUFKQSxHQUF5QjtRQUFZQyxJQUFyQ0Q7SUFBMEMsV0FBSyxXQUFqREQsR0FBdUNFO0dBQWU7R0FEaEQsSUFBQSxhQUNWSDs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDSEZJLGVBQWVDLE1BQU8sZ0JBQVBBLGVBQXlCO1lBQ3hDQyxpQkFBaUJDO0lBQWEsa0JBQWJBOztHQUF1QztZQW1DdERDLHdCQUF3REMsR0FDeEMsc0JBRHdDQSxHQUM1QjtZQUc1QkMsZUFBZUM7SUFDWCxZQUxKSCx3QkFJZUc7O0dBSUs7WUFFcEJDLHVCQUF3QkM7SUFFSCwyQ0FGR0E7R0FFeUI7WUFFakRDLFNBQVNIO0lBQ0wsVUFmSkgsd0JBY1NHOztLQUdQLElBRFdJLGtCQUNYLE1BRFdBO0tBQ1gsV0FQRkgsdUJBTWFHOzt3QkFFQUYsZ0JBQUtHO0lBQVksV0FBakJILEtBQUtHO0dBQThCO1lBRWhEQyxTQUFTTjtJQUNMLFVBckJKSCx3QkFvQlNHOzs7TUFFSU87O2lCQUVKQztTQUFPLFVBQVBBO1NBQU8sV0FkaEJQLHVCQWNTTztRQUEwRDtLQURqRSxPQUFBLGlDQURXRDs7UUFJQUUsbUJBQ3VCQyxpQkFEdkJEOztpQkFFRCxPQUR3QkM7S0FHRjtNQURKQzs7TUFBWkM7TUFBTFY7TUFBTEc7TUFDMEIsZ0JBRHJCSCxLQUFMRyxNQUY0Qks7TUFBQUE7Y0FHMEIsdUJBRDVDRSxPQUFZRDs7R0FHSTtZQUVsQ0UsT0FBT0M7SUFDZSxZQUFBLHlCQURmQTs7O3lDQUNpREMsZ0JBQU0sV0FBTkE7O0lBQWlEO0dBQUk7WUFlN0dDLGFBQWFoQixPQUFNRTthQUpLZSxJQUFJQyxLQUFNLE9BQWQsOEJBQVFBLEtBSVRoQixLQUo2QztJQUN2RCxJQUFQRSxXQURzQmEsS0FJWGpCO0lBRmYsV0FFZUEsVUFIWEksTUFHV0o7R0FFOEI7WUFxQjNDbUIsS0FBTVosS0FBSUw7SUFFTSxJQWJrQkcsTUFXeEJILFFBWDZCZSxNQVc3QmY7SUFSWixTQUFJa0IsR0FBR2YsS0FBSVA7S0FBSTtzQkFEb0JvQixLQUFNLE9BQUEsOEJBQU5BLEtBQ3hCcEI7YUFBSk87SUFBK0I7O0tBSXJCLElBQU9BLGdCQUFLWTtLQUFTLE9BSmxDRyxHQUlvQmYsS0FBS1k7SUFBb0I7SUFBekMsVUFBQSxpQ0FJQVY7SUFQUixjQURJYSxHQUhnQ2YsS0FBS1k7R0FhWTtZQVFuREksYUFBYXJCLE9BQU1LO0lBSFYsSUFBUEQsV0FHV0osYUFBTUs7SUFGckIsV0FFZUwsVUFIWEksTUFHV0o7R0FFOEI7WUFHN0NzQixlQUFjakIsS0FBSUg7SUFJRSxPQUFBLHlCQUpORyxRQUFJSDtHQUl1Qjs7Ozs7UUF4RnZDSDtRQVVBSTtRQU1BRztRQThCQVU7UUFpQ0FLO1FBVkFGO1FBdkNBTjtPQXRFRnBCO09BQ0FFOzs7O09BMkhBMkI7Ozs7RTs7Ozs7O0dFM0djOztJQXNqQ1pHO0lBQ0FDO0lBdmpDWTtJQStDQztJQXNnQ0gsYUFDVkQsdUJBQ0FDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNoYmdCQzs7Ozs7Ozs7Ozs7Ozs7O0lBOEdWQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUE2SEFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBK1VnQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBN2tDNUJDO0lBOUNaQzs7O0lBSUFDOzs7Ozs7Ozs7Ozs7O0lBZ0lBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWpNRUMsTUFBTUMsR0FBR0M7SUFBVSxLQUFiRCxHQUFrQyxPQUEvQkM7UUFBOEN4QyxJQUFqRHVDO0lBQXNELE9BQUx2QztHQUFNO1lBdUYvRHlDLGlCQU9BZjtJQVBtQiwwQkFPbkJBLFlBTk07SUFDQyxHQUFBLDRCQUtQQSxHQTdCQVU7S0F3QjJDLHVCQUszQ1Y7SUFKZ0IsV0FBQSxnQkFJaEJBO0lBSk8sR0FBQSxrQ0E3QlBTO0tBNkJ1Qyx1QkFJdkNUO0lBSGdCLFdBQUEsZ0JBR2hCQTtJQUhPLEdBQUEsa0NBZ0JLUTtLQWhCNEIsdUJBR3hDUjtJQUZPLFVBQUEsZ0JBRVBBLE9BRnNCLHNCQUV0QkE7eUNBQUFBOzs7O3lCQXhCQyxnQkF3QkRBOzswQkF2QkMsZ0JBdUJEQTs7MkJBdEJDLGdCQXNCREE7O1NBckJVO1VBQUEsT0FBQSxnQkFxQlZBO2lCQXJCVSxrQ0FaVlM7Ozs7Ozs7Ozs7Ozs7OztJQWdDTyxTQUFXLHFCQUNsQlQ7eUNBQUFBOzs7O3dCQWpCQyxnQkFpQkRBOzswQkFoQkMsZ0JBZ0JEQTs7MkJBZkMsZ0JBZURBOztTQWRVO1VBQUEsT0FBQSxnQkFjVkE7bURBakNBUzs7Ozs7Ozs7Ozs7Ozs7O0lBaUNPLDZCQUFQVDtHQUNZO1lBVVpnQixTQUFTQyxHQUFFQztJQUFNO0tBQUEsT0FBQSxxQkFBTkE7S0FBTSxjQUFhLGdCQUFuQkEsWUFBRkQ7SUFBcUI7R0FBVztZQUN6Q0UsUUFBUUYsR0FBRUM7SUFBTTtLQUFBLE9BQUEscUJBQU5BO0tBQU07O1VBQWE7WUFBbkJBLDJCQUFBQTtjQUFGRDs7OztJQUFxQjtHQUErQjtZQUk1REcsYUFBYTNCO0lBQ0wsSUFBTjRCLE1BeEJGTixpQkF1QmF0Qjs7O2VBQ1g0QixtQ0FBQUE7OztJQUNKOzs7OztnQkFESUEsa0NBQUFBOzs7S0FDWTs7Ozs7O2lCQURaQTttQkFBQUE7Ozs7Ozs7TUFDNkI7T0FMVixXQUFBLHFCQUdSNUI7T0FIUSxXQUFBO09BQXNCLFdBQUEsZ0JBRzlCQTtPQUg4QixPQUFBLGtDQUEvQmU7Ozs7O0lBS2Q7R0FDaUM7WUFJL0JjLGFBQWE3QjtJQUFNLFdBWm5CdUIsYUFZYXZCO0lBQU0scUJBWG5CMEIsWUFXYTFCO0dBQXlDO1lBQ3REOEIsV0FBVzdCLEtBQUlwQjtJQUFJLHNDQUFSb0IsVUFBSXBCO0dBQTBCO1lBR3pDa0QsY0FBYzlCLEtBQUlEO0lBRVgsSUFETGdDLFNBWkZMLGFBV2tCM0IsT0FKbEI2QixhQUlrQjdCO0lBTXBCLE9BQUEsK0JBTmdCQyxLQUNaK0IsUUFEZ0JoQztHQU1FO1lBWXBCaUMsZ0JBQVcsMkJBQXNDO1lBa0JqREMsVUFBVUM7SUFDWixXQURZQTs7U0F5Qk10RCxvQkFBQUE7OzsrQ0F2QmdDOztnREFDQTs7Ozs7OzthQUVqQ3VELFFBTExELEtBS1MxQztTQUNmO3FCQURXMkM7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFBQUE7WUFlQzthQWZEQzthQVc0QkM7YUFYeEJDLFlBV3dCRCxJQVh4QjdDO2FBQUoyQyxRQUFBQzthQUFJNUMsTUFBQThDOzs7Ozs7O3NEQUFKSDswQkFNTiwyQkFOVTNDOzs7O3dCQWdCUCwrQkFoQkcyQyxPQUFJM0M7O1dBa0JUK0MsY0FBSkM7T0FDSixPQURRRCxvQkFBSkMsdUJBQUFBOzs7bUJBRXNCLHNCQUFaNUQ7O0lBQ1g7R0FBTztZQUVaNkQ7SUFBMEM7Ozs7OztLQUVyQjs7SUFEa0I7R0FDYjtHQUZnQixJQUkxQ0M7WUFNQUMsV0FBV0MsTUFBTyxXQUFQQSxZQUFBQSxTQUFnQztZQVEzQ0MsS0FTRUMsS0FBS0MsT0FBT0MsTUFBS0MsSUFBRzdFLEdBQUU4RTtJQUMxQixHQURTSCxXQUN5Qm5FLElBRHpCbUUsVUFDeUJJLFVBQUF2RSxZQUFBdUU7T0FEbEJILFVBRWdCSSxNQUZoQkosU0FFZ0JLLFNBQUFELGNBQUFDO09BRjVCUCxTQUcwQlEsTUFIMUJSLFFBR0FTLFFBQTBCRCxjQUExQkM7U0FIc0JMLElBS2hCO1NBTGdCQSxXQU1wQk0sTUFOb0JOLE9BTWIsT0FBQSxXQU5RRCxJQUFHN0UsR0FNbEJvRjtJQVVBLFdBdkNKZCxJQXVCc0J0RSxHQUNVK0U7Z0JBRFJEOzs7TUFjWCxNQUFBO1NBTEhPO29CQUFPLFdBVEVSLElBQUc3RSxHQVNacUYsTUFMWixPQUFBLFdBM0JFZixJQXVCc0J0RSxHQUVRaUY7U0FRakJLO0tBQ0gsV0FYU1QsSUFBRzdFLEdBU1pxRjtLQUdBLFdBbkNWZixJQXVCc0J0RSxHQUdwQm1GO2lCQU9XRzs7R0FVUDtZQUVOQyxPQVFFWixPQUFPQyxNQUFLQyxJQUFHN0UsR0FBRXdGO0lBQ3JCLEdBREliLFdBQzhCbkUsSUFEOUJtRSxVQUM4QkksVUFBQXZFLFlBQUF1RTtPQUR2QkgsVUFFcUJJLE1BRnJCSixTQUVQSyxTQUE0QkQsY0FBNUJDO0lBQ0osS0FIcUJPLEdBSVg7UUFDSE4sTUFMY007SUFNakIsV0EzREZsQixJQXFEaUJ0RSxHQUNlK0U7SUFNOUIsV0FQWUYsSUFBRzdFLEdBS1prRjtJQUVILE9BQUEsV0E1REZaLElBcURpQnRFLEdBRWZpRjtHQU1TO1lBRVhRLE1BU0doRCxXQUFxRDBCLEdBQUVVLElBQUc3RSxHQUFFUTtJQUNqRSxHQURLaUMsU0FBUWlELE1BQVJqRCxRQUFBa0MsUUFBUWUsY0FBUmY7SUFDTCxhQUR3Q2dCLGlCQUFQZixPQUFPZSxnQkFBUGY7SUFDakMsT0FEMERUO2VBRXhEO2dCQTFFQUcsSUF3RTZEdEU7Y0FHN0QsV0EzRUFzRSxJQXdFNkR0RSxHQUExRDJFO2NBSUgsV0FKMERFLElBQUc3RSxHQUFFUTtjQUsvRCxXQTdFQThELElBd0U2RHRFLEdBQTlCNEU7Y0FLL0IsV0E3RUFOLElBd0U2RHRFO2NBTzFELFdBUHVENkUsSUFBRzdFLEdBQUVRO0dBT3REO1lBM0lhb0YsZ0JBNklSaEU7STs7V0FDUE0sY0FBSyxPQXRKWndCLGNBcUpjOUIsS0FDUE07O09BNUlBO1FBRjBDUDtRQUFYa0U7UUFDcENsQyxTQXBCRkwsYUFtQmlEM0IsT0FaakQ2QixhQVlpRDdCO09BTW5ELE9BQUE7O2dCQXVJZ0JDO2dCQTVJWitCO2dCQURvQmlDO2dCQUFnQkM7Z0JBQVdsRTs7V0FnSnRDbUUsZ0JBQUhDO09BQVMsT0FBQTtnQkFwRmpCekIsSUFpRmMxQyxVQTdJUWdFLGlCQWdKZEcsR0FoSmNILGlCQWdKWEU7OztZQUVYRSxjQUFjaEcsR0FBRVE7SUFBSSxPQTFGc0IsV0FJMUM4RCxJQXNGY3RFLFFBbEpRNEYsaUJBa0pOcEY7R0FBNkI7WUFFN0N5RixTQUFTakc7STs7NkJBSU9rRzs7UUFFNkM7U0FEckNDO1NBQ3FDLFdBRjdDRCxHQUNRQzs7b0JBQ01uRztZQUFMLElBQVdtRyxjQUFIRDtZQUFTLE9BQUEsV0E5RjFDNUIsSUE4RjhCdEUsUUFBR2tHLEdBQUdDO1dBQXNCO1FBQUcsT0EvQjdEVixZQW5KQXZDLGFBZ0xnQmdELFVBSlBsRzs7MkJBSStDQSxHQUFLLE9BQUEsV0E1RjdEc0UsSUE0RndEdEUsUUFBYztPQUExQyxPQTdCNUJ5RixZQW5KQXZDLGFBZ0xnQmdELFVBSlBsRyxHQUlPa0c7O1dBSEpFLGdCQUFLLE9BQUEsV0F6RmpCOUIsSUF3RlN0RSxRQUNHb0c7OytCQUNHQztxQkFBZSxPQUFBLFdBMUY5Qi9CLElBd0ZTdEUsUUFFTXFHO1dBQ1dDO09BQVUsT0FBQSxXQTNGcENoQyxJQXdGU3RFLFFBR2lCc0csT0FEWEQsS0FDV0M7OytCQUlaQzs7UUFFK0M7U0FEdkNDO1NBQ3VDLFdBRi9DRCxLQUNRQzs7b0JBQ1F4RztZQUFMLElBQVdtRyxjQUFIRDtZQUFTLE9BQUEsV0FqRzFDNUIsSUFpRzhCdEUsUUFBR2tHLEdBQUdDO1dBQXNCO1FBQUcsT0FsQzdEVixZQW5KQXZDLGFBbUxjcUQsWUFQTHZHOzsyQkFPNkNBLEdBQUssT0FBQSxXQS9GM0RzRSxJQStGc0R0RSxRQUFjO09BQTFDLE9BaEMxQnlGLFlBbkpBdkMsYUFtTGNxRCxZQVBMdkcsR0FPS3VHOzs7WUFLZEUsYUFBYXpHLFUsZUFBMEMsV0FwR3ZEc0UsSUFvR2F0RTtZQUNiMEcsYUFBYTFHLFUsbUJBQXlDLFdBckd0RHNFLElBcUdhdEU7WUFHYjJHLFNBQVMzRyxHQUFFNEcsSUFDYixPQURhQSxLQUNtQyxXQXpHOUN0QyxJQXdHU3RFLFlBQ2dEO1lBRXpENkcsWUFBWTdHLEdBQUU0RyxJQUNoQixPQURnQkEsU0FDYyxXQTVHNUJ0QyxJQTJHWXRFLFFBQ2dEO1lBRTVEOEcsZUFBZTlHO0ksZUFFTCxXQWhIVnNFLElBOEdldEUsVUFDUCxXQS9HUnNFLElBOEdldEU7O1lBSWYrRyxhQUFhL0csVSxtQkFBdUMsV0FsSHBEc0UsSUFrSGF0RTtZQUViZ0gsZ0JBQWdCaEgsR0FBRWtDLEdBQUksT0FBQSxXQXBIdEJvQyxJQW9IZ0J0RSxRQUFFa0MsR0FBZTtZQUVqQytFLE1BQU1yRixLQUFJTTtJQUNaLDhCQURZQSxhQUNlLGdCQURmQTtLQUlWLE9BQUEsK0JBSk1OLFVBQUlNO0lBS1AsT0FBQSwrQkFMR04sVUFBSU07R0FLbUI7WUFFN0JnRixVQUFVbEgsR0FBRW9ELEtBQU0sT0FQbEI2RCxNQU9VakgsR0FBRW9ELFFBQXFCO1lBVnhCK0QsWUFXR25ILEdBQUVRLEdBQUksT0FBQSxXQTlIbEI4RCxJQThIWXRFLFFBQUVRLEdBQWdCO1lBRzFCNEcsaUJBQWlCNUMsTUFBS3hFLEdBRTFCcUg7SSxLQUFBQSxHQURNO0lBQzhCLDBCLE9BOHFDcENDLFdBaHJDcUI5QztJQUVlLElBQUE7SUFBL0IsT0FBQTthQW5JTEY7YUFpSTBCdEU7OztjLE9BbkgxQnlFOzthQXFIQTRDOztZQUVBRSxnQkFBZ0IvQyxNQUFLeEU7UUFBVW1ELGNBQVBxRTtJQUMxQixVQUQwQkEsb0JBRWIsT0E2QlhDLFdBL0JnQmpELE1BQUt4RSxHQUFVbUQ7SUFDakMsU0FEMEJxRTtTQUdmdEYsSUFIZXNGO0tBR1YsT0FBQTtjQXhJZGxEO2NBcUlxQnRFOztjQUdaa0M7bUMsT0E0QlR1RixXQS9CZ0JqRDtjQUFlckI7O1FBSXRCMkMsTUFKZTBCO0lBSVYsT0FBQTthQXpJZGxEO2FBcUlxQnRFOzthQUlaOEY7a0MsT0EyQlQyQixXQS9CZ0JqRDthQUFlckI7O1lBTS9CdUUsVUFBVWxELE1BQUt4RSxHQUFFUTtJQUNuQixJQURtQndFLE1BQUF4RTtJQUNuQjtjQURtQndFO01BSWY7Y0FKZUE7T0FJZiw0QixPQXFpQkYyQyxXQXppQlVuRDtPQUdSLFdBSGVRLFFBQUFBLFFBQUFBO01BL0l5QixPQUFBO2VBSTFDVjtlQTJJZXRFOztvQyxPQUFmMEgsVUFBVWxEOzs7OztpQkFBT1E7Ozs7U0FTcUI7VUFGaEI0QztVQUFMQztVQUFIUjtVQUV3Qiw0QixPQVR0Q0ssVUFBVWxEO1VBU21CLFdBRmY2QyxHQUFHUTtTQUNiLE9BQUE7a0JBbkpKdkQ7a0JBMklldEU7OzttQixPQU5mdUgsZ0JBTVUvQzs7OztrQkFPWW9EOzthQUdKMUYsY0FBSjRGO1NBQ1YsT0FBQTtrQkF0Skp4RDtrQkEySWV0RTs7dUMsT0F5QmZ5SCxXQXpCVWpEO2tCQVVJc0Q7a0JBL0JkYjtrQkErQmtCL0U7O2FBR0w2RjtZQUFBQTtjQUFJQztVQUNiLE9BQUE7bUJBekpKMUQ7bUJBMklldEU7OzRCQWVKQSxHQUFFcUg7b0JBQ0wsT0FBQTs2QkEzSlIvQzs2QkEwSld0RTs7c0NBRUlBLEdBQUVxSDs4QkFDTCxLQURLQSxHQUVHOzs4QkFDRCxPQUFBO3VDQS9KbkIvQzt1Q0E0SmV0RTs7O3dDLE9BOUlmeUUsc0JBK0dBeUM7O3VDQStCaUJHOzZCQUc2Qzs2QkFMakRBO21CQU1GO21CQVJFVTt3QyxPQWJiTCxVQUFVbEQ7bUJBYU93RDs7YUFiQUMsaUJBQUFqRCxNQUFBaUQ7OztLQXVCVixPQUFBO2NBbEtQM0Q7Y0EySWV0RTs7bUMsT0F5QmZ5SCxXQXpCVWpEO2NBQU9ROztHQXVCMEI7WUFFM0N5QyxXQUFXakQsTUFBS3hFLEdBQUVRO0lBQ3BCLFNBRG9CQSxNQUNZLE9BMUI5QmtILFVBeUJXbEQsTUFBS3hFLEdBQUVRO2dCQUFBQTtrQ0FJSixPQUFBLFdBeEtkOEQsSUFvS2dCdEU7OztXQUtMa0MsY0FBSyxPQW5EaEIrRSxNQThDZ0JqSCxHQUtMa0M7O09BQ3lCO1FBQXZCbUY7UUFBdUIsNEIsT0FOcENJLFdBQVdqRDtRQU15Qjs7T0FBbEIsT0FBQTtnQkExS2xCRjtnQkFvS2dCdEU7OztpQixPQXRKaEJ5RTs7Z0JBNEphNEM7O1dBQ01hLGdCQUFKQztPQUNYLE9BQUE7Z0JBNUtKN0Q7Z0JBb0tnQnRFOzt5QkFTTEEsR0FBRXFIO2lCQUNMLEtBREtBLEdBRUc7b0JBRkhBO2tCQUlFLE9BbktmNUM7Ozs7Z0QsT0E2SEFpRCxVQXlCV2xEOzJCQVNBeEU7MkJBQUVxSDtxQkFHRDdHLElBSEM2RztpQkFHTSxPQUFBOzBCQWhMbkIvQzswQkE2S1d0RTs7K0MsT0FUWHlILFdBQVdqRDswQkFZQ2hFO2dCQUM4RDtnQkFOdkQwSDtnQkFyRm5CbEM7Z0JBcUZlbUM7OztRQTRDR2xJO1FBQUhtSTtRQUNQQzttQkFBZ0JySSxHQUFFUTtXQUNwQixZQURvQkE7O1lBSWhCO2FBRk9zSDthQUFIVDthQUVKLE9BSmdCN0c7YUFLZCw0QixPQXVkWm1ILFdBaGhCV25EO2FBd0RtQyw0QixPQWpGOUNrRCxVQXlCV2xEO1lBd0RELE9BQUEsV0E1TlZGLElBd053QnRFLFNBRVZxSCxZQUFHUzs7ZUFJQUU7V0FBTSxPQUFBO29CQTlOdkIxRDtvQkF3TndCdEU7O3lDLE9BN0V4QjBILFVBeUJXbEQ7b0JBMERNd0Q7VUFBK0M7UUFFeERNO21CQUFVdEk7VztxQkFUSG9JLE1BWStCLFdBbk85QzlELElBZ09rQnRFLFdBR1csV0FuTzdCc0UsSUFnT2tCdEU7Ozs7O09BS2QsT0FBQTtnQkFyT0pzRTtnQkFvS2dCdEU7OztpQixPQXRKaEJ5RSx1QkEwTVE0RDs7Z0JBRE9EO2dCQVNQRTtnQkFUVXJJOztPQXFCTjtRQUhNc0k7UUFBSkM7UUFHRiw0QixPQWpHWmQsVUF5QldsRDtPQXVFUCxPQUFBO2dCQTNPSkY7Z0JBb0tnQnRFOzs7aUIsT0F0SmhCeUU7O2dCQTJOa0I4RDtnQkFuSmxCdkM7Z0JBbUpjd0M7O1dBdERhQyxnQkFBUkMsbUJBQUhDOzs7V0FBQUEsYUFBQUEsa0JBQ1JDO1lBQUFBOzs7UUFLQUM7bUJBQW9CN0ksR0FBRVE7V0FDeEIsWUFEd0JBOztZQUdwQixJQURVc0ksZ0JBQU56QixjQUNKLE9BSG9CN0c7WUFHcEIsT0FBQTtxQkE1TFY4RDtxQkF5TDRCdEU7OzhCQXRFakJ3RTswQkFBTzdDO3NCQUFpQixPQUExQndGLFlBQUUzQyxNQUFPN0M7O3FCQXdFSjBGOzhCQUVHckgsR0FBRXFIO3NCQUNMLEtBREtBLEdBRUc7c0JBQ3FCO3VCLE9BckQzQ0ssVUF5QldsRDs7c0JBNEJnQyxJQUFBO3NCQXBNRCxPQUFBOytCQUkxQ0Y7K0JBNkxpQnRFOzs7Z0MsT0EvS2pCeUU7OytCQTZLb0JxRTtxQkFLcUQ7cUJBTHJEQTswQyxPQXlmcEJuQixXQWhoQlduRDs7O2VBOEJNc0Q7V0FBTSxPQXZEdkJKLFVBeUJXbEQsTUFxQmlCeEUsR0FTWDhIO1VBQXlCO09BRXRDLE9BQUE7Z0JBcE1KeEQ7Z0JBb0tnQnRFOzt5QkFpQ0xBLEdBQUVxSDtpQkFDTCxLQURLQSxVQWxCTXFCLFNBcUJHLFdBeE10QnBFLElBcU1XdEU7O2lCQVVHO2tCLE9Bak1keUU7NkNBMktRb0U7Ozs7b0JBTldIOzt1QkFBUUQsY0FDbkJHO2lCQXNCSSxPQUFBLFdBMU1adEUsSUFxTVd0RSxxQkFBRXFIO2dCQVdFO2dCQTdCQ3NCO3lCQStCTDNJLEdBQUV5STtpQkFDTCxHQURLQTtzQkFHRTNELEtBSEYyRDtxQkFHRTNEOzttQkFBTSxPQUFBOzRCQXJOckJSOzRCQWtOV3RFOzs7NkIsT0FwTVh5RSx1QkFxR1MwQzs7NEJBa0dNckM7OztpQkFEYTtnQkFDMkI7Z0JBbEM1QjJEOzs7O1FBMkROTTtRQUFMQztRQUNSQzttQkFBSWpKO2VBQU04SCxlQUFINUY7V0FDVCxPQUFBO29CQWhQTm9DO29CQStPWXRFOztvQkF6SlpnRztvQkF5SmU5RDt5QyxPQXBHZndGLFVBeUJXbEQ7b0JBMkVPc0Q7O09BR2QsS0FKaUJpQixPQUtULE9BQUEsV0FuUFp6RSxJQW9LZ0J0RSxTQTlFaEJnRyxlQXdKZ0JnRDs7T0FPUixPQUFBO2dCQXJQUjFFO2dCQW9LZ0J0RTs7Z0JBOUVoQmdHO2dCQXdKZ0JnRDs7aUIsT0FoT2hCdkUsdUJBaU9Rd0U7O2dCQURhRjs7V0FTSnRILGNBQUssT0FrZHRCeUgsVUFyaUJXMUUsTUFBS3hFLEdBbUZDeUI7O09BQ1YsT0F6TFBnRTs7OztxQyxPQTRFQWlDLFVBeUJXbEQ7Z0JBQUt4RTtnQkFBRVE7O0dBb0ZvQjtZQUl0QzJJLG1CQVdXM0UsTUFBS3hFLEdBQ09RO0lBWHpCLFNBV3lCQTtLQVJyQjthQVFxQkE7TUFSckIsNEIsT0FvYkZtSCxXQTdhV25EO01BUlQsV0FTcUJoRSxNQUFBQSxNQUFBQTtLQTVRbUIsT0FBQTtjQUkxQzhEO2NBdVFnQnRFOzttQyxPQVhoQm9KLFFBV1c1RTs7Ozs7Z0JBQ1loRTs7S0FKbkIsSUFEYTBCLGNBQUhtSCxjQUNWLE9BRGFuSDtLQUNiLE9BQUE7Y0FwUUpvQztjQXVRZ0J0RTs7bUMsT0FYaEJvSixRQVdXNUU7Y0FKRzZFO2NBdlVkM0Y7Ozs7Ozs7U0E0VXVCc0IsTUFBQXhFLEdBQUVZO0tBQ3pCO2lCQUR1QjREOzs7U0FBQUE7TUFHQztPQURLc0U7T0FGTkM7T0FBRXJGLFlBRUlvRixJQUZKbEk7T0FBRjRELE1BQUF1RTtPQUFFbkksTUFBQThDOzs7O0lBSWxCLElBS1BzRixhQVR1QnhFLEtBQUU1RDtPQVN6Qm9JO0tBQWdEO01BQUEsNEIsT0FFaERDLFNBWldqRjtNQVVxQzs7S0FBdEMsT0FBQTtjQWpSVkY7Y0F1UWdCdEU7OztlLE9BelBoQnlFOztjQW1RQStFOztRQURFdEUsTUFDRnNFO0lBRFM7S0FBQSxPQUFBLHVCQUdURSxnQkFaV2xGLE1BQUt4RSxHQVNka0Y7O0lBQU8sT0FHVHdFLHNCQVpXbEYsTUFBS3hFLEdBU2RrRjtHQVh3QjtZQVQxQmtFLFFBV1c1RSxNQUFLeEUsR0FDT1E7SSx1QkFadkIySSxhQVdXM0UsTUFBS3hFLEdBQ09ROztZQVd2QmtKLG9CQUFTbEYsTUFBTXhFLEdBQXVCUTthQUNoQ21KLG9CQUFvQjNKLEdBU3hCcUo7Z0JBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztVQUFBQTtXQUptRE8sZ0JBQU5DO09BRzNDLE9BQUE7Z0JBNVJKdkY7Z0JBb1IwQnRFOztxQyxPQWdDMUI4SixlQWpDU3RGO2dCQU1zQ3FGO2dCQUx6Q0Y7Z0JBSytDQzs7OztLQUk5QyxPQVZQSCxTQUFTakYsTUFDaUJ4RSxHQVN4QnFKOzthQVZvQzdJO0tBWVI7TUFBQSxPQUFBLHVCQW5DOUIySSxlQXVCUzNFLE1BQU14RSxHQUF1QlE7O0tBWVIsT0FuQzlCMkkscUJBdUJTM0UsTUFBTXhFLEdBQXVCUTs7Z0JBQUFBOzs7O1lBbUJwQjJILGVBQUd4RyxNQUFId0c7O2lCQUFHeEc7b0JBQUFBOzs7OztTQURqQjtVQUFBLE9BQUEsdUJBZUpvSSxzQkFqQ1N2RixNQUFNeEUsR0FBdUJROztTQWtCbEMsT0FlSnVKLDRCQWpDU3ZGLE1BQU14RSxHQUF1QlE7O1lBbUJBd0o7UUFFL0IsR0FBQSxXQUZjckk7U0FFUyxPQUFBLFdBeFM5QjJDLElBbVJldEUsU0FDVDJKLHFCQURnQ25KO2FBbUJBd0osSUFXdEIsT0FBQSxXQWpUaEIxRixJQW1SZXRFLFNBN0xmZ0csZUFnTmtCbUM7c0JBQW9CNkIsT0FPeEJDO1dBQUFBO1NBR0M7VUFIR2pGO1VBR0g7aUMsT0FJZjhFLGVBakNTdEY7OztTQTJCQyxPQUFBO2tCQTlTVkY7a0JBbVJldEU7O2tCQTdMZmdHO2tCQWdOa0JtQzs7bUIsT0F4UmxCMUQsdUJBckZBaEI7O2tCQW9YY3dHOztrQkFBSWpGOztZQUZBRTtRQUNSLE9BQUE7aUJBNVNWWjtpQkFtUmV0RTs7aUJBN0xmZ0c7aUJBZ05rQm1DOztrQixPQWNsQjJCLGVBakNTdEY7O2lCQXdCU1U7Ozs7YUFUTW1FLGdCQUFSaEM7U0FDWixPQUFBO2tCQW5TSi9DO2tCQW1SZXRFOztrQkFlQ3FIOzttQixPQWtCaEJ5QyxlQWpDU3RGOztrQkFlZTZFOzs7O0lBZ0JqQjtLQUFBLE9BQUEsdUJBRVBVLHNCQWpDU3ZGLE1BQU14RSxHQUF1QlE7O0lBK0IvQixPQUVQdUosNEJBakNTdkYsTUFBTXhFLEdBQXVCUTtHQStCUjtZQS9COUJpSixTQUFTakYsTUFBTXhFLEdBQXVCUTtJLHVCQUF0Q2tKLGNBQVNsRixNQUFNeEUsR0FBdUJROztZQWlDdEN1SiwwQkFBZXZGLE1BQU14RSxHQUF1QlE7SUFDOUMsU0FEOENBO0tBQ2Q7TUFBQSxPQUFBLHVCQXpEOUIySSxlQXdEZTNFLE1BQU14RSxHQUF1QlE7O0tBQ2QsT0F6RDlCMkkscUJBd0RlM0UsTUFBTXhFLEdBQXVCUTs7Z0JBQUFBO2tDQU05QixPQUFBLFdBMVRkOEQsSUFvVHFCdEU7OztXQU9SMkIsbUJBQVksT0EvWHpCK0IsY0F3WHFCMUQsR0FPUjJCOztXQW9CR3dCLGNBQUssT0FBQSxXQS9VckJtQixJQW9UcUJ0RSxTQTVOckJpRyxVQXVQZ0I5Qzs7V0FDSytHLGVBQUpDO09BQVcsT0FBQSxXQWhWNUI3RixJQW9UcUJ0RSxTQTVOckJpRyxVQXdQaUJrRSxJQXhQakJsRSxVQXdQcUJpRTs7T0FGbUI7UUFEM0I3QztRQUMyQiw0QixPQTNEeENvQyxTQWlDZWpGO1FBMEJ5Qjs7T0FBcEMsT0FBQTtnQkE5VUpGO2dCQW9UcUJ0RTs7O2lCLE9BdFNyQnlFOztnQkErVGE0Qzs7OztZQXJCb0JyQzs7K0JBQUFBO2tDQUFBQTs7dUJBQzdCLE9BQUEsV0F6VEpWLElBb1RxQnRFLFNBSVlnRjs7Ozs7WUF5QmpCa0Q7UUFBWSxPQUFBLFdBalY1QjVELElBb1RxQnRFLFNBNkJMa0k7Ozs7O1FBakJFUTtRQUFITjtRQUNQZ0M7bUJBQW9CcEs7V0FDdEIsSUFENkJxSixjQUFKbEIsZUFDekIsT0FEeUJBOzs7dUJBQUlrQjs7Z0JBQUFBO2lCQUdBMUgsa0JBRFZPO2FBRVosR0FBQSxrQkFGWUEsR0FDVVA7Y0FFekIsT0FBQSxXQXRVVjJDLElBaVU0QnRFLFNBM081QmdHLGVBMk8rQm1DOzs7O1dBTWxCLE9BQUE7b0JBdlViN0Q7b0JBaVU0QnRFOztvQkEzTzVCZ0c7b0JBMk8rQm1DO3lDLE9BOUMvQnNCLFNBaUNlakY7b0JBYW9CNkU7O09BUS9CLEdBVGNYOztRQVlQLE9BQUE7aUJBNVVYcEU7aUJBb1RxQnRFOzs7a0IsT0F0U3JCeUU7NkNBbVRRMkY7O2lCQURPaEM7OztPQVdQLE9BQUE7Z0JBM1VSOUQ7Z0JBb1RxQnRFOzs7aUIsT0F0U3JCeUU7NENBbVRRMkY7O2dCQURPaEM7O09BSjhCO1FBQWhDRztRQUFnQyw0QixPQXpDN0NrQixTQWlDZWpGO1FBUThCOztPQUEzQixPQUFBO2dCQTVUbEJGO2dCQW9UcUJ0RTs7O2lCLE9BdFNyQnlFOztnQkE4U2E4RDs7V0FzQlNULGVBQUh1QjtPQUNmLE9BQUE7Z0JBblZKL0U7Z0JBb1RxQnRFOztxQyxPQWpDckJ5SixTQWlDZWpGO2dCQThCSTZFO3FDLE9Bdk1uQjNCLFVBeUtlbEQ7Z0JBOEJPc0Q7O1dBbkJWSyxlQUFNLE9BQUEsV0EvVGxCN0QsSUFvVHFCdEUsU0E5TnJCZ0csZUF5T1ltQzs7V0FxQkFrQztPQUFLLE9BQUE7Z0JBcFZqQi9GO2dCQW9UcUJ0RTs7cUMsT0FBckI4SixlQUFldEY7Z0JBZ0NINkY7OztxQkF2Qm9CLE9BQUEsV0E3VGhDL0YsSUFvVHFCdEU7V0FVTWtDO09BQU8sT0FBQSxXQTlUbENvQyxJQW9UcUJ0RSxTQVVNa0M7O1dBdUJWb0k7T0FBSyxPQUFBO2dCQXJWdEJoRztnQkFvVHFCdEU7O3FDLE9BakNyQnlKLFNBaUNlakY7Z0JBaUNFOEY7O1dBQ0E3SSxjQUFLLE9BbVh0QnlILFVBclplMUUsTUFBTXhFLEdBa0NKeUI7O09BRWIsSUFEYzhJLGdCQUFMdkIsZ0JBQ1QsT0FEY3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQUNWQzs7O1lBQUFBOztPQVFtQjtRQUFBLDRCLE9BN0UzQmYsU0FpQ2VqRjs7O09BMkNYLE9BQUE7Z0JBL1ZKRjtnQkFvVHFCdEU7O2dCQTlOckJnRztnQkFpUWFnRDs7aUIsT0F4UmJ2RCxrQkF5UlErRTs7Z0JBRFVEOztJQVdYLE9BblNQOUU7Ozs7a0MsT0E2TEEyRCxRQXdEZTVFO2FBQU14RTthQUF1QlE7R0E4Q1I7WUE5Q3BDc0osZUFBZXRGLE1BQU14RSxHQUF1QlE7SSx1QkFBNUN1SixvQkFBZXZGLE1BQU14RSxHQUF1QlE7O1lBZ0Q1Q2lLLFVBQVVqRyxNQUFLeEU7UUFBV3FKLGNBQUw1RyxnQkFBSDRFO0lBQ3BCLFVBRG9CQTtLQUloQixPQUFBO2NBeFdGL0M7Y0FvV2V0RTs7bUMsT0FoRGY4SixlQWdEVXRGO2NBQWdCNkU7SUFDNUIsU0FEb0JoQztLQWlCSixJQUFMYSxNQWpCU2IsTUFpQkosT0FqQllnQzs7O1NBQUFBO1VBbUJHMUg7TUFBc0MsR0FBQSxrQkFBdENBLEtBRnBCdUcsTUFJSCxPQUFBLFdBelhONUQsSUFvV2V0RSxTQWlCTmtJOzs7S0FLQSxPQUFBO2NBMVhUNUQ7Y0FvV2V0RTs7Y0FpQk5rSTttQyxPQWpFVDRCLGVBZ0RVdEY7Y0FBZ0I2RTs7SUFLVCxJQUFScUIsT0FMU3JELE1BS0QsT0FMU2dDOzs7UUFBQUE7U0FPR3NCO0tBQ3BCLEtBQUEsa0JBRG9CQSxPQUZwQkQ7VUFMWWpJLEtBV0wsT0FBQSxXQS9XaEI2QixJQW9XZXRFLFNBS04wSztTQUtJRSxNQVZRbkk7S0FVSCxPQUFBO2NBOVdsQjZCO2NBb1dldEU7O2NBS04wSzttQyxXQUxDbEc7Y0FVR29HOztTQVZRbkk7S0FnQkwsT0FBQTtjQXBYaEI2QjtjQW9XZXRFOztjQUtOMEs7bUMsT0FyRFRaLGVBZ0RVdEY7Y0FBZ0I2RTtRQWNicEosSUFkUXdDO0lBZVgsT0FBQTthQW5YVjZCO2FBb1dldEU7O2FBS04wSztrQyxPQXRGVGpCLFNBaUZVakY7YUFBZ0I2RTtrQyxXQUFoQjdFO2FBY0d2RTs7WUFVYjRLLFdBQVdyRyxNQUFLeEUsR0FBRXlCO0lBQ3BCLFNBRG9CQSxNQUNZO2VBRFpBOzs7Ozs7O09BTVpxSjtPQURpQ0M7OEJBRW5CLElBQU1DLDZCQUFBQSxZQUF5QjtNQUE1QyxLQUFBLGtDQURERjtNQW9CUztPQWxCUEc7O1VBQWN6RjtVQUFFMEY7VUFBWUM7VUFBT0M7VUFBSzFHO1VBQUlyQztVQUFNZ0o7VUFDbERDO1VBQVFDO21CQUNOQyxXQUFXNUo7VyxZQUNIO2VBQ0h1RTtXQUFLLE9BQUEsV0F4WXBCN0IsSUFzWXFCMUMsV0FsY0NnRSxpQkFvY1BPOztVQUVULEdBTjhCZ0Y7Y0FDcEJJLGNBQUFBO1lBYUo7YUFISXJMLElBVkFxTDthQWFKO29DLE9BcU9aRSxZQTNQV2pIOzs7YUFxQnlCLFdBYllFO1lBWXRDO2NBaFpWSjtjQTRYZ0J0RTs7bUMsT0EyUGhCeUwsWUEzUFdqSDtjQVFXZ0I7Y0FFWmdHO2NBRmNOO2NBQW1CRTs7ZSxPQXRYM0MzRyx1QkFzWDBENEc7O2NBQ2xEQztjQUQ0Q2pKOztjQVdwQ25DO1lBQ047OztvQkFYTXFMO1dBUVEsd0JBQUEsV0FUd0I3RztXQVF0QzthQTVZVko7YUE0WGdCdEU7O2tDLE9BMlBoQnlMLFlBM1BXakg7YUFRV2dCO2FBRVpnRzthQUZjTjthQUFtQkU7O2MsT0F0WDNDM0csdUJBc1gwRDRHOzthQUNsREM7YUFENENqSjtXQVExQzs7VUFRRztTQUFLOzZCO09BRUgsUUFBQSxrQ0FwQlR5STs7O2NBRGlDQzs7cUJBQUFBOztlQXNCbkJXO1dBQ1o7YUF4WlJwSDthQTRYZ0J0RTs7a0MsT0EyUGhCeUwsWUEzUFdqSDthQTJCU2tIO1dBQ1o7O2NBcUJNeEo7OztjQW5CRnlKLE9BekIyQlosT0F5QnJCYSxPQXpCcUJiOzs7O2tDQXlCckJhO3FDQUFBQTs7O1lBQ0c7YUFEOEJDO2FBQUxDO2FBQ2xDQyxXQUFTLGtCQURISDthQUVWO2FBQUlJOztnQixPQXhCSmY7eUJBc0JzQ2EsV0FDbENDOztZQUVKLE9BSElKOzswQkFBQUE7OzZEQUF1Q0U7aUJBT0g7a0JBRGhCSSxTQU5tQko7a0JBTXhCeEYsTUFOd0J3RjtrQkFPSCxXQURyQnhGO2lCQUNmLE9BTEEyRjs7OzsrQyxXQWhDRHhIOzswQkFvQ3FCeUg7Ozt1QkFObUJKO2dCQUtIO2lCQURqQkssU0FKb0JMO2lCQUl6QnRGLE1BSnlCc0Y7aUJBS0gsV0FEdEJ0RjtnQkFDZCxPQUhBeUY7Ozs7OEMsV0FoQ0R4SDs7eUJBa0NvQjBIOzs7OzBCQUpuQlA7OzsyQkFBQUE7Ozs7a0VBQXVDRTsrQkFBQUE7Ozt5QkFlcUJNLFNBZnJCTixlQWVkTztxQkFFekIsT0FmQUo7Ozs7bUQsT0EyTlpQLFlBM1BXakg7OEJBNkMwQjRIOzhCQUFtQ0Q7Ozs7MEJBZnJCTjs4QkFBQUE7Ozs7cUJBYUQ7c0JBRGNRO3NCQUFOQztzQkFBTkM7c0JBQU5DLEtBWktYO3NCQWFELFdBREpXLFFBQU1ELFFBQU1EO3FCQUM5QyxPQVhBTjs7OzttRCxPQTJOWlAsWUEzUFdqSDs7OEJBMENxRDZIOzs7Ozt5QkFaYlI7Z0NBQUFBOzttQkFXRDtvQkFEUVk7b0JBQU5DO29CQUFOQyxPQVZLZDtvQkFXRCxXQURKYyxVQUFNRDttQkFDeEMsT0FUQVY7Ozs7aUQsT0EyTlpQLFlBM1BXakg7OzRCQXdDK0NpSTs7Ozt3QkFWUFo7aUJBU0Q7a0JBREVlLFNBUkRmO2tCQVFMZ0IsT0FSS2hCO2tCQVNELFdBREpnQjtpQkFDbEMsT0FQQWI7Ozs7K0MsT0EyTlpQLFlBM1BXakg7OzBCQXNDeUNvSTs7Ozs7WUFVckM7OztjQUNEMUssSUE1Q3lCNkk7Ozs7Ozs7YUE0Q0dMLG1CQUFMeEUsZ0JBQUxWO1NBQW9CLEdBamdCcER0QyxhQWlnQmNoQjtVQUtjO1dBQWhCNEssZ0JBQWdCLDhCQUxkNUs7V0FNTixVQU42QmdFOzs7O2dCQVFkbUI7WUFBTyxHQUhsQnlGLG1CQUNBMUcsTUFFV2lCOztlQUZYakIsVUFOeUJGOztVQVdoQjtXQUFUaUYsU0EzZ0JaOUgsWUFnZ0JjbkI7V0FjQTZLLElBRk4sc0JBWk03SztXQVlGOEs7YUFEQTdCO2dCQUlhLGdCQWZYakosR0FjQTZLO2dCQUMwQixnQkFmMUI3SyxHQWNBNks7b0JBRkZDO2VBS01DLFVBQUE1SyxPQUFOK0k7eUJBTEE0QjtlQUtNQyxrQkFBTjdCOztzQkFMQTRCO1lBVUssTUFBQTtlQUxDQyxrQkFBTjdCOzttQkE3RDJCTDtlQXFFVDVFLElBckVTNEUsT0FvRTNCRyxrQkFDa0IvRTs7ZUFEbEIrRTtVQUdPO3NCQUFvQiw4QkEzQnpCaEosR0FpQkZrSjtXQVVBOEIsU0FBTyw4QkEzQkxoTDs7YUFLRjRLO3FDLFdBdEREdEk7cUMsT0EyUFhpSCxZQTNQV2pIO1VBNkVILE9BckVBeUc7bUJBeUN3QnpGO21CQXdCcEIwRjttQkFiQUM7bUJBZ0JBK0I7O21CQVZNRDs7bUJBWE43RzttQkFOOEJzRTs7Ozs7TUErQi9COzs7SUFDSjtHQUFLOzBCQUVEbEcsTUFBS3hFLEdBQUVRO0lBQ3BCO2NBRG9CQTtNQUloQjtjQUpnQkE7T0FJaEIsNEIsT0FpT0ZtSCxXQXJPV25EO09BR1QsV0FIZ0JoRSxNQUFBQSxNQUFBQTtNQW5kd0IsT0FBQTtlQUkxQzhEO2VBK2NnQnRFOztvQyxXQUFMd0U7Ozs7O2lCQUFPaEU7bUNBb0pJLE9BQUEsV0FubUJ0QjhELElBK2NnQnRFOzs7OztTQXNDTDtVQURNbU47VUFBSEM7VUFDSCxXQXpIWHZDLFdBbUZXckcsTUFBS3hFLEdBQUVRO29CQXNDUDtvQkFERzRNOzs7Ozs7O2NBQUFBO2VBL2tCMEIvRix1QkFYeENwRSxpQkFXd0NvRTs7Ozs7Ozs7ZUFrbEJ6QnZCO1dBQUssR0FISHFIO2dCQUtIRSxPQUxHRjtzQkFLSEU7d0JBTEdGOztrQkFLcUJHO3dCQUFBQTtlQUV4QixPQUFBO3dCQTNmZGhKO3dCQStjZ0J0RTs7O3lCLE9BOCtCaEJ1Tix5QkF6N0NBMUs7O3dCQXFmY3dLO3dCQUZDdkg7O3lCLE9BczhCZnlILHlCQTkrQlcvSTs7d0JBMEMyQjhJOzs7O1dBU2hCO1lBQUE7O2UsT0EyN0J0QkMseUJBOStCVy9JOztZQW1EVzs7O1dBRFIsT0FBQTtvQkFqZ0JkRjtvQkErY2dCdEU7O3lDLE9Bd0toQnlMLFlBeEtXakg7b0JBcUNHNEk7O3FCLE9BdGVkM0k7O29CQXNlaUIwSTs7O2VBZ0JESzs7O1lBR0YsR0FBQSw0QkFIRUE7Ozs7aUJBaEJDTDswQkFBQUE7Z0VBQUFBOzs7Ozs7ZUFpQkhNO2lCQVNHOzttQkFWREQ7O3lDQUFBQTs7OztnQkFDRkMsTUFERUQ7O1dBYU4sR0E3Qk9MO3VCQUFBQTtnREFBQUE7aUJBOEJPbkk7YUFBUSxPQUFBO3NCQWxoQmhDVjtzQkErY2dCdEU7O3NCQXNERnlOOzJDLE9Ba0hkaEMsWUF4S1dqSDtzQkFtRWFROzs7V0FHRjtZQUFBOztlLE9BdzZCdEJ1SSx5QkE5K0JXL0k7O1lBc0VXOzs7V0FEUixPQUFBO29CQXBoQmRGO29CQStjZ0J0RTs7eUMsT0F3S2hCeUwsWUF4S1dqSDtvQkFxQ0c0STs7cUIsT0F0ZWQzSTs7b0JBc2VpQjBJOzs7U0EyQ0wsZUEzQ0VDLEtBQUdEO1NBMkNMLE9BQUE7a0JBL2hCWjdJO2tCQStjZ0J0RTs7MkJBMEVDQTttQkFBTCxJQUFXcUgsY0FBSDVGO21CQUVFO29CLE9BazZCdEI4TCx5QkF6N0NBMUs7O21CQXVoQnNCLElBQUE7bUJBRFIsT0FBQTs0QkExaEJkeUI7NEJBeWhCaUJ0RTs7aUQsT0FxRmpCME4sWUEvSldsSjs0QkEwRVMvQzs7NkIsT0EzZ0JwQmdEOzs0QkEyZ0J1QjRDO2tCQUtnQjs7Ozs7YUFFWnNHLG1CQUFUeEY7U0FBc0IsR0FwaUJ4QzlELG9CQTVCQVIsVUErZWtCckQ7U0FvRlIsY0Fua0JWcUQsVUErZWtCckQ7OztXQXNGRCxPQUFBO29CQXJpQmpCOEQ7b0JBK2NnQnRFOztvQkF6WGhCZ0c7b0JBMGNrQm1DO3lDLE9BdUZsQnNELFlBeEtXakg7b0JBaUZnQm1KOzs7Y0FJZnZKO1VBQU0sT0F0aEJsQks7Ozs7d0MsT0F5bUJBZ0gsWUF4S1dqSDttQkFBS3hFO21CQXFGSm9FOztTQUVELE1BQUE7Ozs7YUF1RGF3SixtQkFBUkM7U0FBZSxPQUFBO2tCQTdsQi9Cdko7a0JBK2NnQnRFOztrQkE4SUE2Tjt1QyxPQTBCaEJwQyxZQXhLV2pIO2tCQThJYW9KOzthQXREQ0UsaUJBQUp0RixpQkFBSnVGO1NBQ2IsT0FBQTtrQkF4aUJKeko7a0JBK2NnQnRFOzt1QyxPQXdLaEJ5TCxZQXhLV2pIO2tCQXdGTXVKO2tCQWpkakIvSDtrQkFpZHFCd0M7dUMsT0FnRnJCaUQsWUF4S1dqSDtrQkF3RmNzSjs7YUF5QmRFO1NBQU0sT0FBQSxXQWhrQmpCMUosSUErY2dCdEUsU0F6WGhCZ0csZUEwZVdnSTs7U0FFMkI7VUFEaEJDO1VBQUhDO1VBQ21CLDRCLFdBbkgzQjFKO1NBbUhQLE9BQUEsV0Fsa0JKRixJQStjZ0J0RSxTQWtIR2tPLGNBQUdEOzs7VUFFTkU7VUFFUkM7cUJBQW9CcE87aUJBQU15QixjQUFIUzthQUNRLDBCLFdBdkg1QnNDO2FBdUhMLE9BQUEsV0F0a0JORixJQXFrQjRCdEUsU0FBR2tDLFlBQUdUOzs7O1NBRzlCLE9BQUE7a0JBeGtCSjZDO2tCQStjZ0J0RTs7O21CLE9BamNoQnlFOzhDQXVqQlEySjs7a0JBRlFEOzthQWNGRTtTQUFLLE9BQUE7a0JBamxCbkIvSjtrQkErY2dCdEU7O3VDLE9Bd0toQnlMLFlBeEtXakg7a0JBa0lHNko7O2FBQ0ZDO1NBQUssT0FBQTtrQkFsbEJqQmhLO2tCQStjZ0J0RTs7dUMsT0F3S2hCeUwsWUF4S1dqSDtrQkFtSUM4Sjs7aUNBR0NDOztVQUFZLE9BQUE7bUJBcmxCekJqSzttQkErY2dCdEU7O3dDLE9Bd0toQnlMLFlBeEtXakg7bUJBc0lFK0o7YUFDUXpHO1NBQ2pCLE9BQUE7a0JBdmxCSnhEO2tCQStjZ0J0RTs7dUMsT0F3S2hCeUwsWUF4S1dqSDtrQkFzSUUrSjt1QyxPQTFjYjdHLFVBb1VXbEQ7a0JBdUlVc0Q7O2FBWUowRyxpQkFBSyxPQXVHdEJ0RixVQTFQVzFFLE1BQUt4RSxHQW1KQ3dPOzs7Ozs7O1lBbkpOaEs7VUFnQlAsT0FoYUppQjs7Ozt3QyxXQTNEQTVDO21CQTJjZ0I3QzttQkFBRVE7Ozs7Ozs7O2NBQVBnRSxhQUFBQTtTQVVQLE9BMVpKaUI7Ozs7dUMsV0EzREE1QztrQkEyY2dCN0M7a0JBQUVROzs7Ozs7Y0FzQkY0SDtVQUFLLE9BQUE7bUJBcmVyQjlEO21CQStjZ0J0RTs7d0MsT0FvK0JoQnlPLFVBcCtCV2pLO21CQXNCSzREOztVQUhWO1dBRmdCc0Q7V0FBSHJDO1dBQUpxRjtXQUFIbkc7V0FFTiw0QixXQW5CSy9EO1dBa0JzQyxXQURyQytELEtBQUdtRyxJQUFJckY7VUFDZixPQUFBO21CQWplSi9FO21CQStjZ0J0RTs7d0MsT0EzR2hCeUssVUEyR1dqRzs7O21CQWlCV2tIOztjQU1ML0MsZ0JBQUhnRztVQUNWLE9BQUE7bUJBdmVKcks7bUJBK2NnQnRFOzt3QyxXQTNjaEI2QzttQkFrZWM4TDt3QyxPQTY4QmRGLFVBcCtCV2pLO21CQXVCTW1FOztjQUdGaUcsZ0JBQUhDO1VBQ1IsT0FBQTttQkExZUp2SzttQkErY2dCdEU7O3dDLFdBM2NoQjZDO21CQXFlWWdNO3dDLE9BMDhCWkosVUFwK0JXaks7bUJBMEJJb0s7O1VBbUdtQjtXQUhURTtXQUFKQztXQUFIN007V0FHZ0IsNEIsV0E3SHZCc0M7V0E2SEw7a0MsT0FxY053SyxZQTdnQ0FuTTtVQXNrQkksT0FBQTttQkExa0JKeUIsSUErY2dCdEUsU0E1b0JkOEMsTUFzd0JnQloscUJBQUc2TSxVQUFJRDs7Y0FJQUcsZ0JBQUpDO1VBQ2pCLE9BQUE7bUJBOWtCSjVLO21CQStjZ0J0RTs7O29CLE9BMDlCaEJtUCxzQkExOUJXM0s7O21CQThIVTBLO3dDLFdBOUhWMUs7bUJBOEhjeUs7O1VBekd5QjtXQUQ3Qkc7V0FBTHBHO1dBQ2tDLDRCLFdBckJ2Q3hFO1VBcUJQLE9BQUEsV0FwZUpGLElBK2NnQnRFLFNBb0JBZ0osY0FBS29HOztVQXlIaUI7V0FIdEJDO1dBQUhwUDtXQUd5Qiw0QixXQTdJM0J1RTtrQkEwSUV2RTtXQUdQLDRCLE9BcWJOK08sWUFsa0JXeEs7VUEySVAsT0FBQTttQkExbEJKRixJQStjZ0J0RSxTQWpnQmhCNEQsU0Eyb0JhM0QseUJBQUdvUDs7VUFRTDs7V0FIZ0JDO1dBQU5DO1dBQU5DO1dBR0osNEIsV0FsSkFoTDtXQWlKVyw0QixPQWlrQnRCaUwsV0FsdEJXakw7V0FpSlc7O1VBRGxCLE9BQUE7bUJBL2xCSkY7bUJBK2NnQnRFOzt3QyxPQWt0QmhCeVAsV0FsdEJXakw7bUJBK0lJZ0w7O29CLE9BaGxCZi9LOzttQkFnbEJxQjhLOzttQkFBTUQ7OzthQS9JaEI5SztXQVlQLE9BNVpKaUI7Ozs7eUMsV0EzREE1QztvQkEyY2dCN0M7b0JBQUVROzs7O2FBeGNNO2NBbWlCR2tQO2NBQUpDO2NBQUoxTDtjQW5pQkssV0F3Y2JPLFNBQUFBO2NBZ0dIb0w7cUM7YUFDSixPQUFBO3NCQWhqQkp0TDtzQkErY2dCdEU7c0JBNkZSc0M7c0JBR0FzTjtzQkFMVzNMO3NCQUtYMkw7c0JBTGVEOytCQU9aM1AsR0FBRTBQO3VCQUNMLEtBREtBLElBSUs7dUJBRCtCLElBRGxDbFAsSUFGRmtQLE9BR29DLE9BOWlCakRuTCxXQXljV0M7dUJBcUdDLE9BQUE7Z0NBcGpCWkY7Z0NBaWpCV3RFOztxRDtnQ0FFSVE7c0JBRUs7c0JBWE9rUDs7Ozs7O2tCQWVDdE8sU0FHcEJsQixJQTdHVU07OzBCQTZHVk47OztrQkFBQUE7ZUFEa0I7Z0JBRGUyUDtnQkFBSkM7Z0JBQ1gsWUFEV0EsTUFEVDFPO2dCQUFBQTtnQkFHcEJsQixJQUZpQzJQOzs7O2FBRW5CO2NBRWRFLE1BRmMsK0JBQWQ3UCxHQUhvQmtCO2NBTVksT0F6akJ4Q21ELFdBeWNXQztjQWdIaUIsNEI7Y0FBQTs7YUFBeEIsT0FBQTtzQkEvakJKRjtzQkErY2dCdEU7Ozt1QixPQWpjaEJ5RTs7c0JBZ2pCUXNMOzs7O01BM0VGO09BTGF0TztPQUFIeUc7T0FBSnRCO09BS04sNEIsV0FwQ0twQztPQW1DNkMsV0FKNUNvQyxJQUFJc0I7TUFJWixPQUFBO2VBbGZKNUQ7ZUErY2dCdEU7O29DLE9BcXNCaEJnUSxTQWhwQ0FuTjs7O2VBMGVtQnBCOztjQS9CRGpCO29CQUFBQTs7V0EySkp5UDtPQUFNLE9BQUE7Z0JBMW1CcEIzTDtnQkErY2dCdEU7OztpQixPQTZYaEJrUSxnQkE3WFcxTDs7Z0JBMkpHeUw7O01BQ1A7T0FBQSxPQUFBLHVCQUdQRSxtQkEvSlczTCxNQUFLeEUsR0FBRVE7O01BNEpYLE9BR1AyUCx5QkEvSlczTCxNQUFLeEUsR0FBRVE7OztHQXFKUztnQkFySmhCZ0UsTUFBS3hFLEdBQUVRLEcsK0JBQVBnRSxNQUFLeEUsR0FBRVE7WUErSmxCMlAsdUJBQVkzTCxNQUFLeEUsR0FBRVE7SUFDckIsU0FEcUJBO2lCQUFBQTs7OzthQUlGMkgsZUFBSDFHO1NBQ1YsT0FBQTtrQkFubkJKNkM7a0JBOG1CaUJ0RTs7dUMsT0FTakJ5TCxZQVRZakg7a0JBSUUvQztrQkE1aEJkdUU7a0JBNGhCaUJtQzs7U0FFSyxJQUFOakcsY0FBSHdKLGdCQUFTLE9BQU54SjtTQUFNLE9BQUE7a0JBcG5CdEJvQztrQkE4bUJpQnRFOzt1QyxPQVNqQnlMLFlBVFlqSDtrQkFNQ2tIOzs7S0FDTjtNQUFBLE9BQUEsdUJBRVAwRSxtQkFUWTVMLE1BQUt4RSxHQUFFUTs7S0FPWixPQUVQNFAseUJBVFk1TCxNQUFLeEUsR0FBRVE7O0lBQ1csa0JBQUEsT0FBQSxpQ0FEbEJnRSxNQUFLeEUsR0FBRVE7O0lBQ1csdUJBRGxCZ0UsTUFBS3hFLEdBQUVRO0dBT1E7WUFQM0JrTixZQUFZbEosTUFBS3hFLEdBQUVRO0ksdUJBQW5CMlAsaUJBQVkzTCxNQUFLeEUsR0FBRVE7O1lBU25CNFAsdUJBQVk1TCxNQUFLeEUsR0FBRVE7SUFDckIsU0FEcUJBO0tBQ1csa0JBQUEsT0FBQSxpQ0FEbEJnRSxNQUFLeEUsR0FBRVE7O0tBQ1csdUJBRGxCZ0UsTUFBS3hFLEdBQUVROztnQkFBQUE7Ozs7WUFjTjJILGVBQU0sT0EvaUJuQm5DLGNBaWlCaUJoRyxHQWNKbUk7O1lBSUdoRixjQUFLLE9BampCckI4QyxTQStoQmlCakcsR0FrQkRtRDs7UUFHZ0I7U0FEbkJrRTtTQUNtQiw0QixPQXJCaENvRSxZQUFZakg7U0FxQm9COztRQUE1QixPQUFBO2lCQTVvQkpGO2lCQXVuQmlCdEU7OztrQixPQXptQmpCeUU7O2lCQTZuQmE0Qzs7UUFoQlcsR0EvbkJ4QmhELG9CQTVCQVIsVUF1cEJtQnJEO1NBS1QsY0E1cEJWcUQsVUF1cEJtQnJEOztrQ0FNTCxPQUFBLFdBN25CZDhELElBdW5CaUJ0RTtvQ0FPRCxPQUFBLFdBOW5CaEJzRSxJQXVuQmlCdEU7Ozs7O1dBVVc7WUFGaEI4RTtZQUVnQixPQTNuQjVCUCxXQWluQllDO1lBVUksNEI7WUFBQTs7V0FEUixPQUFBO29CQWhvQlJGO29CQXVuQmlCdEU7OztxQixPQXptQmpCeUU7O29CQWluQllLOzs7ZUFJRUU7V0FBSyxPQS9yQkdZLGdCQW1yQkw1RixHQVlIZ0Y7OztTQUNILE1BQUE7Ozs7O2FBaUJLa0Q7U0FBWSxPQUFBLFdBcnBCNUI1RCxJQXVuQmlCdEUsU0E4QkRrSTs7OztRQWFWO1NBWll3SDtTQUFIdEg7U0FDUGlJO29CQUF1QnJRO1lBQ3pCLElBRGdDeUIsY0FBSjBHLGVBQzVCLE9BRGdDMUc7OztnQkFBQUE7aUJBRUhFO2FBQ3RCLEdBQUEsV0FIcUJ3RyxPQUVDeEc7Y0FFekIsT0FBQSxXQTNwQlYyQyxJQXVwQitCdEUsU0Fqa0IvQmdHLGVBaWtCa0NtQzs7O1lBTXhCLE9BQUE7cUJBN3BCVjdEO3FCQXVwQitCdEU7O3FCQWprQi9CZ0c7cUJBaWtCa0NtQzswQyxPQWhDbENzRCxZQUFZakg7cUJBZ0MwQi9DOzs7O1NBV2hDOztZLE9BcHBCTmdELHVCQXlvQlE0TDs7U0FTc0IsNEIsT0F6QzlCNUUsWUFBWWpIOztRQXdDUixPQUFBO2lCQS9wQkpGO2lCQXVuQmlCdEU7OztrQixPQTFrQmpCdUY7O2lCQXltQmtCbUs7O2lCQUFIdEg7O1FBZ0JVO1NBRlpHO1NBRVksT0FocUJ6QmhFLFdBaW5CWUM7U0ErQ0EsNEIsT0EvQ1ppSDtTQStDWTs7UUFEUixPQUFBO2lCQXJxQkpuSDtpQkF1bkJpQnRFOzs7a0IsT0F6bUJqQnlFOztpQkFzcEJhOEQ7O1lBSUtvSCxlQUFKMUw7UUFFVixPQUFBO2lCQTFxQkpLO2lCQXVuQmlCdEU7aUJBa0RUdUM7c0MsV0FsRElpQztpQkFpREVQO3NDLFdBakRGTztpQkFpRE1tTDs7UUFPRztTQUpNVztTQUFKQztTQUFKVjtTQUFKQztTQUFINU47U0FJSnNPLGtDLFdBeERJaE07UUF5RFIsT0FBQTtpQkFockJKRjtpQkF1bkJpQnRFO2lCQXFEVHdDO3NDLE9BaGJSNEcsUUEyWFk1RTtpQkFvREF0QztpQkFJSnNPO2lCQUpPVjtpQkE3akJmaEo7aUJBNmpCdUJ5SjtpQkFJZkM7aUJBSldYO2lCQUlYVztpQkFKbUJGOztZQTlCTHhJLGVBQUhyRztRQUNmLE9BQUE7aUJBOW9CSjZDO2lCQXVuQmlCdEU7O3NDLFdBQUx3RTtpQkFzQk8vQztzQyxPQWxnQm5CaUcsVUE0ZVlsRDtpQkFzQlVzRDs7UUFJUjtTQUZVRTtTQUFOeUk7U0FBSC9FO1NBRUQsNEIsT0F0Z0JkaEUsVUE0ZVlsRDtRQXlCUixPQUFBO2lCQWhwQkpGO2lCQXVuQmlCdEU7O3NDLFdBQUx3RTtpQkF3QkdrSDs7a0IsT0FsbUJmbkc7O2lCQWttQmtCa0w7c0MsT0FwZ0JsQi9JLFVBNGVZbEQ7aUJBd0JZd0Q7O1lBTForRztRQUFNLE9BQUE7aUJBMW9CbEJ6SztpQkF1bkJpQnRFOztzQyxPQTBaakJnUCxZQTFaWXhLO2lCQW1CQXVLOztJQXdDTCxPQW5uQlB0Sjs7OztrQyxXQXdqQllqQjthQUFLeEU7YUFBRVE7R0EyRG9CO1lBM0R2Q2lMLFlBQVlqSCxNQUFLeEUsR0FBRVE7SSx1QkFBbkI0UCxpQkFBWTVMLE1BQUt4RSxHQUFFUTs7WUE2RG5CbUgsV0FHVW5ELE1BQUt4RSxHQUhHcUg7SUFBYyxjQUdmN0I7Z0JBQUFBO0tBQ3NCLDBCLE9Bb1h2Q2tMLFFBclhVbE07S0EzckJnQyxPQUFBLFdBSTFDRixJQXVyQmV0RSxTQUFFd0Y7O0lBSEssT0FBQSxrQ0FBSjZCO0dBQWtDO1lBQ3BEc0osZ0JBS2VuTSxNQUFLeEUsR0FMR3FIO0lBQWMsY0FLZjdCO2dCQUFBQTtLQUNtQiwwQixPQWlYekNrTCxRQWxYZWxNO0tBOXJCMkIsT0FBQSxXQUkxQ0YsSUEwckJvQnRFLFNBQUV3Rjs7SUFMSyxPQUFBLGtDQUFKNkI7R0FBdUM7WUFROUR1SixtQkFBbUJwTSxNQUFLeEUsR0FBRXdGO0lBQzVCLFdBRDRCQTtJQUNpQiwwQixPQThXM0NrTCxRQS9XbUJsTTtJQWpzQnVCLE9BQUEsV0FJMUNGLElBNnJCd0J0RSxTQUFFd0Y7R0FDOEM7WUFFeEVxTCxrQkFBa0JyTSxNQUFLeEUsR0FBRVE7a0JBSXBCUixHQUFFUTtLQUNMLGlCQURLQTs7Z0JBQUFBO0tBeHNCbUMsT0FBQTtjQUkxQzhEO2NBb3NCS3RFOzs7ZSxPQXRyQkx5RSx1QkFzR0F1Qzs7O0lBa2xCcUQ7ZUFONUJ4RztJQUczQixPQUFBO2FBbnNCRThEO2FBZ3NCdUJ0RTs7a0MsT0FyakJ2QjBILFVBcWpCa0JsRDs7O2FBQU9oRTtHQU94QjtZQUVEMEksVUFBVTFFLE1BQUt4RTtRQUFNeUIsY0FBSFM7SUFBdUMsMEIsT0FtV3pEd08sUUFuV1VsTTtJQUFnQixPQUFBLFdBenNCMUJGLElBeXNCZXRFLFNBQUdrQyxZQUFHVDs7WUFFckJxUCxlQUFldE0sTUFBS3hFO1FBQU15QixjQUFIUztJQUNRLDBCLE9BZ1cvQndPLFFBaldlbE07SUFDakIsT0FBQSxXQTVzQkVGLElBMnNCb0J0RSxTQUFHa0MsWUFBR1Q7O1lBRzFCc1Asc0JBQXNCdk0sTUFBS3hFLEdBQUVRO0lBQy9CLFdBRCtCQTtJQUdSLDBCLE9BNUJyQm1RLGdCQXlCc0JuTTtlQUFPaEU7SUFsdEJhLE9BQUE7YUFJMUM4RDthQThzQjJCdEU7OztjLE9BMnRCM0JtUCxzQkEzdEJzQjNLOzs7OztHQUd5QztZQUUvRHdNLGlCQUFpQnhNLE1BQUt4RSxHQUFFUTtJQUMxQixZQUQwQkE7OztPQUd0QixJQURXc0gsZUFDWCxPQUhzQnRIO09BR3RCLE9BQUE7Z0JBdHRCRjhEO2dCQW10QnNCdEU7O3FDLE9BNkJ0QmlSLFdBN0JpQnpNO2dCQUVKc0Q7O2lCLE9BaENiNkksZ0JBOEJpQm5NOzs7O09BTWY7O1FBRG1Cd0Q7UUFBSmtKO1FBQUpDO1FBQUhqUDtRQUNSLE9BTnNCMUI7UUFPQSw0QixPQXJDeEJtUSxnQkE4QmlCbk07UUFPYiw0QixPQS9rQkprRCxVQXdrQmlCbEQ7T0FNZixPQUFBO2dCQXp0QkZGO2dCQW10QnNCdEU7O2dCQS9tQnRCeUc7Z0JBb25CYTBLO2dCQW5uQmJ6SztnQkFtbkJpQndLO2dCQUFQaFA7O2dCQUFXOEY7Ozs7T0FJbkI7O1FBRHNCQztRQUFKbUo7UUFBSkM7UUFBSHZMO1FBQ1gsT0FUc0J0RjtRQVVBLDRCLE9BeEN4Qm1RLGdCQThCaUJuTTtRQVViLDRCLE9BbGxCSmtELFVBd2tCaUJsRDtPQVNmLE9BQUE7Z0JBNXRCRkY7Z0JBbXRCc0J0RTs7Z0JBam1CdEIrRztnQkF5bUJnQnNLO2dCQXRuQmhCM0s7Z0JBc25Cb0IwSztnQkFBUHRMOztnQkFBV21DOzs7O09BSXRCOztRQURvQkw7UUFBTEM7UUFDZixPQVpzQnJIO09BWXRCLE9BQUE7Z0JBL3RCRjhEO2dCQW10QnNCdEU7O3FDLE9BeGtCdEIwSCxVQXdrQmlCbEQ7Z0JBV0FxRDtxQyxPQW5sQmpCSCxVQXdrQmlCbEQ7Z0JBV0tvRDs7aUIsT0F6Q3RCK0ksZ0JBOEJpQm5NOzs7O1dBY0ZnQixjQUFLLE9BcENwQm9MLG1CQXNCaUJwTSxNQUFLeEUsR0FjUHdGOztXQUNBL0Q7T0F2QmZxUCxlQVFpQnRNLE1BQUt4RSxHQWVQeUI7Y0E3Q2ZrUCxnQkE4QmlCbk0sTUFBS3hFLEdBQUVROztHQWlCa0I7WUFFMUM4USxnQkFBZ0I5TSxNQUFLeEU7UUFBb0NxSCxjQUFuQlM7SUFNaEMsMEIsT0F6Qk5rSixpQkFtQmdCeE07SUFNVixJQUFBO0lBTFIsT0FBQTthQXZ1QkVGO2FBc3VCcUJ0RTs7c0JBRWhCQSxHQUVEOEg7Y0FGSixVQUVJQSx3QkFBQUEsT0FEcUQ7Y0FDL0MsT0FBQTt1QkExdUJWeEQ7dUJBd3VCS3RFOzs0QyxPQTdsQkwwSCxVQTJsQmdCbEQ7dUJBSVpzRDthQUF1QzthQUpMQTs7YyxPQXh0QnRDckQ7O2FBd3RCeUQ0Qzs7WUFVekQ0SixXQUFXek0sTUFBS3hFLEdBQUVRO0lBQ3BCLFlBRG9CQTs7O09BTWhCLElBRGU2RyxjQUFKYyxlQUNYLE9BTmdCM0g7T0FNaEIsT0FBQTtnQkF0dkJGOEQ7Z0JBZ3ZCZ0J0RTs7eUJBT1BBLEdBQUVxSDtpQkFDTCxLQURLQSxHQUVHO2lCQUNtQjtrQixPQS9tQmpDSyxVQXFtQldsRDs7aUJBVXNCLElBQUE7aUJBQXBCLE9BQUE7MEJBMXZCYkY7MEJBdXZCU3RFOzs7MkIsT0F6dUJUeUU7OzBCQXl1Qlc0QztnQkFHa0Q7Z0JBTDVDQTtnQkEvcEJqQnJCO2dCQStwQmFtQztxQyxPQWpFYlIsV0E0RFduRDs7O1dBRUl5TDtPQVpmcUIsZ0JBVVc5TSxNQUFLeEUsR0FFRGlRO2NBOURmdEksV0E0RFduRCxNQUFLeEUsR0FBRVE7O09BY2lCO1FBRmhCK1E7UUFBSkM7UUFBSHRKO1FBRXVCLDRCLE9BZG5DK0ksV0FBV3pNO1FBY2dCLFdBRmYwRCxLQUFHc0o7T0FDYixPQUFBO2dCQTd2QkZsTjtnQkFndkJnQnRFOzs7aUIsT0EzbUJoQnVILGdCQTJtQlcvQzs7OztnQkFZUStNOztXQUdKOVA7T0F0RGZ5SCxVQXVDVzFFLE1BQUt4RSxHQWVEeUI7Y0EzRWZrRyxXQTREV25ELE1BQUt4RSxHQUFFUTs7T0FxQmE7UUFIakJrTDtRQUFIekw7UUFHb0IsNEIsT0FyQi9CZ1IsV0FBV3pNO2VBa0JBdkU7T0FDVCxPQUFBO2dCQW53QkZxRSxJQWd2QmdCdEUsU0FseUJoQjRELFNBb3pCVzNELE9BNXFCWCtGLDJCQTRxQmMwRjs7R0FHb0M7WUFHbEQrRiw0QkFBNEJqTixNQUFLeEUsR0FBRXFIO2FBQ2pDcUssdUJBQXVCQyxLQUFJM1IsR0FBRVE7S0FDL0IsSUFBb0NtQixNQURMbkIsU0FDWjRELEtBRFk1RCxNQUUvQixPQUYrQkE7S0FJN0IsMEIsT0F4RkZtUSxnQkFtRjRCbk07Z0JBQ0doRTtLQUdFLDBCLE9BNUJqQ3lRLFdBd0I0QnpNO0tBSTFCLDBCLE9BM29CRTRDLGlCQXVvQndCNUM7S0FHNUIsT0FBQTtjQTN3QkFGO2NBeXdCNkJ0RTs7Y0FBSjJSO2NBcHFCekJqTDtjQW9xQitCbEc7O2NBQ1o0RDtjQUFpQnpDOzs7OztJQUdLO0lBRTNDLEtBUHFDMEYsR0FRN0I7UUFDSjdHLElBVGlDNkc7U0FBQUEsTUFTMUIsT0FSUHFLLHlDQUQrQjFSLEdBUy9CUTtRQUNHc0UsS0FWOEJ1QztJQWNmO0ssT0FibEJxSzs7SUFha0IsSUFBQTtJQUhsQixPQUFBO2FBbnhCRnBOO2FBd3dCaUN0RTs7O2MsT0FDL0IwUjs7YUFRQWxSOztjLE9BbndCRmlFOzthQW93QktLO0dBS0M7WUFFTjhNLFlBQVlwTixNQUFLeEUsR0FBRVE7SUFDckIsWUFEcUJBOzs7T0FHakI7UUFEb0JxUjtRQUFKQztRQUFMQztRQUNYLE9BSGlCdlI7UUFNWiw0QixPQTFHUG1RLGdCQW9HWW5NOzttQkFJSHhFLEdBQUU2UjtXQUNMLEtBREtBLElBQ2lCO2VBQVUzUCxJQUQzQjJQO1dBQ2dDLE9BQUEsV0E5eEIzQ3ZOLElBNnhCU3RFLFNBQzZCa0M7VUFBeUI7UUFGWiw0QixPQTJEbkQ4UCxXQTlEWXhOO09BR1YsT0FBQTtnQkE1eEJGRixJQXl4QmlCdEUsU0EzMEJqQjRELFNBNjBCYW1PLFlBQUtELFVBQUlEOzsrQ0FLVlYsY0FBSGpQOztRQU9QO1NBRDBCNEY7U0FDMUIsT0FkaUJ0SDtTQWVLO2dDLE9Bbkh4Qm1RLGdCQW9HWW5NO1NBZVIsNEIsT0E3cEJKa0QsVUE4b0JZbEQ7UUFjVixPQUFBO2lCQXZ5QkZGLElBeXhCaUJ0RSxTQXJyQmpCeUcsY0E0ckJZMEssSUFBSGpQLFlBTW1CNEY7O09BTDFCO1FBRGlDckc7UUFBTHdRO1FBQzVCLE9BUmlCelI7UUFTSyw0QixPQTdHeEJtUSxnQkFvR1luTTtRQVNSLDRCLFdBVFFBO2VBT0h0QztPQUNQLE9BQUE7Z0JBanlCRm9DO2dCQXl4QmlCdEU7O2dCQTMwQmpCNEQsU0FrMUI4QnFPO2dCQTVyQjlCeEw7Z0JBNHJCWTBLOzs7Z0JBQXVCMVA7Ozs7K0NBU3BCNFAsY0FBSHZMOztRQUxWO1NBRDZCa0M7U0FDN0IsT0FYaUJ4SDtTQVlLO2dDLE9BaEh4Qm1RLGdCQW9HWW5NO1NBWVIsNEIsT0ExcEJKa0QsVUE4b0JZbEQ7UUFXVixPQUFBO2lCQXB5QkZGO2lCQXl4QmlCdEU7O2lCQXZxQmpCK0c7aUJBdXJCZXNLO2lCQUFIdkw7O2lCQU5tQmtDOzs7O09Bc0I3QjtRQWhCb0MwRDtRQUFMd0c7UUFDM0JDO21CQUFLMVE7V0FDUCxPQXFSSjJRO29CQXZTWTVOO29CQUFLeEU7OzZCQWdCTDhGO3FCQUNEckU7OztVQWFKO1FBRUwsT0FoQ2lCakI7UUF1Q2IsNEIsT0EzSU5tUSxnQkFvR1luTTs7bUJBaUNIeEU7V0FBTDs7O2dDQUc2QnlCOzs7YUFEd0I7Y0FEaEJxRztjQUNnQiw0QixXQW5DN0N0RDtjQW1DeUIsNEIsT0FqckJyQ2tELFVBOG9CWWxEO2FBbUNGLE9BQUEsV0E1ekJWRixJQTB6QlN0RSxTQWpCRzhGLGNBa0I2QmdDLFVBRVJyRzs7O1lBQ3ZCLE9BcEJKMFEsS0FtQjJCMVE7O2tCQW5CM0IwUSxLQURnQ3pHO1VBc0JsQjtPQU5sQixPQUFBO2dCQXp6QkZwSDtnQkF5eEJpQnRFOztnQkEzMEJqQjRELFNBMjFCaUNzTztnQkF2ckJqQ25MO2dCQXVyQmVzSzs7Z0JBQXVCM0Y7Ozs7T0F5QnBDOztRQURtQjlEO1FBQUxDO1FBQ2QsT0F6Q2lCckg7T0F5Q2pCLE9BQUE7Z0JBbDBCRjhEO2dCQXl4QmlCdEU7O3FDLE9BOW9CakIwSCxVQThvQllsRDtnQkF3Q0lxRDtxQyxPQXRyQmhCSCxVQThvQllsRDtnQkF3Q1NvRDs7aUIsT0E1SXJCK0ksZ0JBb0dZbk07Ozs7T0E0Q1YsSUFEY21LLGdCQUNkLE9BNUNpQm5PO09BNENqQixPQUFBO2dCQXIwQkY4RDtnQkF5eEJpQnRFOztxQyxXQUFMd0U7Z0JBMkNJbUs7O2lCLE9BL0loQmdDLGdCQW9HWW5NOzs7O1dBOENFZ0IsY0FBSyxPQTFJbkJvTCxtQkE0RllwTSxNQUFLeEUsR0E4Q0h3Rjs7V0FDQXFKO09BN0hkaUMsZUE4RVl0TSxNQUFLeEUsR0ErQ0g2TztjQW5KZDhCLGdCQW9HWW5NLE1BQUt4RSxHQUFFUTs7R0FpRHNCO1lBRXpDMFAsZ0JBQWdCMUwsTUFBS3hFO1FBQW1DcUgsY0FBbEJnQztJQVFoQywwQixPQTNETnVJLFlBbURnQnBOO0lBUVYsSUFBQTtJQVBSLE9BQUE7YUE3MEJFRjthQTQwQnFCdEU7O3NCQUVoQkEsR0FBRXFKO2NBQ0wsV0FES0E7Ozs7OzBCQUdrQjsyQkFqMUJ6Qi9FOzJCQTgwQkt0RTs7Z0QsT0FsbEJMb0osUUFnbEJnQjVFOzJCQUVUNkU7MEJBSUU7MkJBbDFCVC9FOzJCQTgwQkt0RTs7Z0QsT0FsbEJMb0osUUFnbEJnQjVFOzJCQUVUNkU7YUFJK0I7YUFOQUE7O2MsT0E5ekJ0QzVFOzthQTh6QndENEM7O1lBV3hEMkssV0FBV3hOLE1BQUt4RSxHQUFFUTtJQUNwQixTQURvQkE7aUJBQUFBOzs7WUFrQkE2RyxjQUFKYztRQUNWLE9BQUE7aUJBMTJCSjdEO2lCQXUxQmdCdEU7OzBCQW9CTEEsR0FBRXFIO2tCQUNMLGlCQURLQTs7a0JBQytCO21CLE9BanVCNUNLLFVBNHNCV2xEOztrQkFxQmlDLElBQUE7a0JBQXBCLE9BQUE7MkJBNTJCeEJGOzJCQTIyQld0RTs7OzRCLE9BNzFCWHlFOzsyQkE2MUJhNEM7aUJBQzJEO2lCQUh0REE7aUJBbnhCbEJyQjtpQkFteEJjbUM7O1lBWEU4SCxlQUFNLE9BbEJ0QkMsZ0JBV1cxTCxNQUFLeEUsR0FPQWlROztRQUV1QztTQURsQ3hPO1NBQUg0SDtTQUFKcUc7U0FBSHhIO1NBQzRDLDRCLE9BVHZEOEosV0FBV3hOO1NBU2lDLFdBRGpDMEQsS0FBR3dILElBQUlyRztRQUNkLE9BQUE7aUJBaDJCSi9FO2lCQXUxQmdCdEU7O3NDLE9BbmZoQnlLLFVBbWZXakc7OztpQkFRVS9DOztRQVFUO1NBSksyRztTQUFKMEo7U0FJRDs7WSxPQXNsQlp2RSx5QkF0bUJXL0k7O1NBZ0JDOzs7UUFIUixPQUFBO2lCQXAyQkpGO2lCQXUxQmdCdEU7O3NDLE9BQWhCZ1MsV0FBV3hOO2lCQVlFc047O2tCLE9BcjFCYnJOOztpQkFxMUJpQjJEOztRQUQ2QjtTQUQ1QmlLO1NBQUg5SjtTQUFKM0I7U0FDbUMsNEIsT0FYOUNvTCxXQUFXeE47U0FXMkIsV0FEM0JvQyxJQUFJMkI7UUFDWCxPQUFBO2lCQWwyQkpqRTtpQkF1MUJnQnRFOztzQyxPQTZUaEJnUSxTQTdUV3hMOzs7aUJBVU82Tjs7WUFhSXZLLGVBQUp3SztRQUNkLE9BQUE7aUJBLzJCSmhPO2lCQXUxQmdCdEU7O3NDLE9BQWhCZ1MsV0FBV3hOO2lCQXVCTzhOO3NDLE9BOUhsQnJCLFdBdUdXek07aUJBdUJXc0Q7O1lBRU40RCxnQkFBSyxPQXZLckJ4QyxVQThJVzFFLE1BQUt4RSxHQXlCQTBMOztRQUlpQjtTQUhsQmlEO1NBQUgxTztTQUdxQiw0QixPQTdCakMrUixXQUFXeE47Z0JBMEJDdkU7UUFDUixPQUFBO2lCQWwzQkpxRSxJQXUxQmdCdEUsU0F6NEJoQjRELFNBbTZCWTNELE9BM3hCWitGLDJCQTJ4QmUySTs7O2VBMUJHbk87SUFJaEIsMEIsT0F2S0ZtSCxXQW1LV25EO0lBR1QsZUFIZ0JoRSxNQUFBQTtJQTMxQndCLE9BQUE7YUFJMUM4RDthQXUxQmdCdEU7O2tDLE9BQWhCZ1MsV0FBV3hOOzs7O0dBNkJ5QztZQUVwRCtOLHVCQXdCZ0IvTixNQXhCQ3hFLEdBQUVRO0lBQ3JCLElBRHFCd0UsTUFBQXhFO0lBQ3JCO2NBRHFCd0U7TUFJakI7Y0FKaUJBO09BSWpCLDRCLE9BdE1GMkMsV0EwTmdCbkQ7T0FyQmQsV0FIaUJRLFFBQUFBO01BMTNCdUIsT0FBQTtlQUkxQ1Y7ZUFzM0JpQnRFOztvQyxPQUFqQndTLFlBd0JnQmhPOzs7OztnQkF4QkdROzs7OzthQU9HeU47U0FDbEIsT0FBQTtrQkE5M0JKbk87a0JBczNCaUJ0RTs7dUMsT0FBakJ3UyxZQXdCZ0JoTztrQkFqQk1pTzs7UUFFa0IsSUFBUkMsZUFBTkMsZ0JBQUh6USxjQUFpQixVQUFqQkE7O1NBR2YsT0FBQTtrQkFsNEJSb0M7a0JBczNCaUJ0RTs7dUMsT0E0Q2pCNFMsYUFwQmdCcE87a0JBZlVtTzt1QyxPQVQxQkgsWUF3QmdCaE87a0JBZmdCa087WUFLckJ0UztRQUNILE9BQUE7aUJBcjRCUmtFO2lCQXMzQmlCdEU7O2lCQWNOSTtzQyxPQWRYb1MsWUF3QmdCaE87aUJBZlVtTztzQyxPQVQxQkgsWUF3QmdCaE87aUJBZmdCa087O1lBVGJHOztTQW9CUDtVQUZLeEw7VUFFTDtxQkFJU3JIO2E7O2dCQUVWO2lCQURLOFM7aUJBQWtCMU8sS0FBbEIwTztpQkFBSjNLO3VDO2lCQUNONEssT0FBSyxrQ0FEdUIzTztpQkFHeEI7d0MsT0F2d0JWc0QsVUFtd0JnQmxEO2dCQUdkLE9BQUE7eUJBajVCRkY7eUJBODRCcUJ0RTs7OzBCLE9BaDRCckJ5RTs7eUJBazRCTXNPO3lCQTF6Qk4vTTt5QkF5ekJZbUM7OzBCLE9BbWNaNkssaUJBcGNnQnhPOzt5QkFDQXNPOztvQkFLRUcsZ0JBQUp6SztnQkFDWixPQUFBO3lCQXI1QkZsRSxJQTg0QnFCdEUsU0F4ekJyQmdHLGVBOHpCY3dDLE1BOXpCZHhDLGVBOHpCa0JpTjs7b0JBRUNDLGdCQUFKbEY7Z0JBQ2IsT0FBQTt5QkF2NUJGMUo7eUJBODRCcUJ0RTs7eUJBeHpCckJnRzt5QkFnMEJlZ0k7OEMsT0FoQ2Z3RSxZQXdCZ0JoTzt5QkFRRzBPOztvQkFTS0Msa0JBQUpDO2dCQUNsQixPQUFBO3lCQWg2QkY5Tzt5QkE4NEJxQnRFOzt5QkF4ekJyQmdHO3lCQXkwQm9Cb047OEMsT0F6Q3BCWixZQXdCZ0JoTzt5QkFpQlEyTzs7Z0JBTmI7aUJBRFVFO2lCQUFrQkMsT0FBbEJEO2lCQUFKRTt1QztpQkFDWEMsT0FBSyxrQ0FENEJGO2lCQUc3Qjt3QyxPQWh4QlY1TCxVQW13QmdCbEQ7Z0JBWWQsT0FBQTt5QkExNUJGRjt5QkE4NEJxQnRFOzs7MEIsT0FoNEJyQnlFOzt5QkEyNEJNK087eUJBbjBCTnhOO3lCQWswQmlCdU47OzBCLE9BMGJqQlAsaUJBcGNnQnhPOzt5QkFVSzZPOztvQkFLREksa0JBQUpDO2dCQUNkLE9BQUE7eUJBOTVCRnBQLElBODRCcUJ0RSxTQXh6QnJCZ0csZUF1MEJnQjBOLE1BdjBCaEIxTixlQXUwQm9CeU47OztVQW5CUjs7U0FEUixPQUFBO2tCQXo0QkpuUDtrQkFzM0JpQnRFOzt1QyxPQTRDakI0UyxhQXBCZ0JwTztrQkF4QkdxTzs7bUIsT0F4MkJuQnBPOztrQkEwM0JpQjRDOztZQWxCRXJDLE1BQUE2Tjs7O1FBc0JaO1NBQUEsT0FBQSx1QkFzQlBjLG9CQXBCZ0JuUCxNQXhCQ3hFLEdBQUVnRjs7UUFzQlosT0FzQlAyTywwQkFwQmdCblAsTUF4QkN4RSxHQUFFZ0Y7OztHQXNCUztZQXRCNUJ3TixZQXdCZ0JoTyxNQXhCQ3hFLEdBQUVRO0ksdUJBQW5CK1IsaUJBd0JnQi9OLE1BeEJDeEUsR0FBRVE7O1lBNENuQm1ULHdCQUFhblAsTUFBS3hFLEdBQUVRO0lBQ3RCLFNBRHNCQTtpQkFBQUE7OztZQUlQMkgsZUFBTSxPQUFBLFdBdDZCbkI3RCxJQWs2QmtCdEUsU0E1MEJsQmdHLGVBZzFCYW1DOztRQUlEO1NBRktqRztTQUVMLDRCLE9BVVowUixlQWxCYXBQO1NBUUQ7OztRQURSLE9BQUE7aUJBejZCSkY7aUJBazZCa0J0RTs7O2tCLE9BcDVCbEJ5RTs7aUJBMDVCaUJ2Qzs7WUFLSDZNO1FBQ1YsT0FBQTtpQkE5NkJKeks7aUJBazZCa0J0RTs7c0MsT0ErR2xCZ1AsWUEvR2F4SztpQkFXQ3VLOztZQUVHdE4sY0FBSyxPQXRPdEJ5SCxVQXlOYTFFLE1BQUt4RSxHQWFEeUI7O1lBUkorRztRQUFNLE9BQUEsV0F2NkJuQmxFLElBazZCa0J0RSxTQTUwQmxCZ0csZUFpMUJhd0M7O1FBU04sT0FqM0JQL0M7Ozs7c0MsT0F1ekJBK00sWUE0Q2FoTztpQkFBS3hFO2lCQUFFUTs7O0lBQ1U7S0FBQSxPQUFBLHVCQTdDOUIrUixtQkE0Q2EvTixNQUFLeEUsR0FBRVE7O0lBQ1UsT0E3QzlCK1IseUJBNENhL04sTUFBS3hFLEdBQUVRO0dBY29CO1lBZHhDb1MsYUFBYXBPLE1BQUt4RSxHQUFFUTtJLHVCQUFwQm1ULGtCQUFhblAsTUFBS3hFLEdBQUVROztZQWdCcEJxVCxVQUFVclAsTUFBS3hFLEdBQUVRO0lBQUksT0FwNkJyQmlFOzs7O2tDLE9BczZCQW1QLGVBRlVwUDthQUFLeEU7YUFBRVE7R0FBNkM7WUFFOURvVCxlQUFlcFAsTUFBS3hFLEdBQUVRO0lBQ3hCLFlBRHdCQTs7O09BVXBCO1FBRlNzVDtRQUNMQyxjQURLRDtRQUVULE9BRlNBO1FBR3FCLDRCLE9BMVFoQ25ELGdCQStQZW5NO1FBV1g7K0IsT0EvUEpxTSxrQkFvUGVyTTtPQVViLE9BQUE7Z0JBOTdCRkY7Z0JBbzdCb0J0RTs7Z0JBU2QrVDtnQkFqZ0NOclE7Z0JBZ2dDV29ROztnQkFBQUE7Ozs7V0FOSXpNLGNBQUpUO09BQStCLE9Ba1kxQ29OLGNBcFlleFAsTUFBS3hFLE9BRVQ0RyxPQUFJUzs7V0FDQWEsZ0JBSVEsT0E2WHZCOEwsY0FwWWV4UCxNQUFLeEUsYUFHTGtJOztXQVNIK0wsZUFBTSxPQStibEJDLGVBM2NlMVAsTUFBS3hFLEdBWVJpVTs7V0FDR0UsZUFBTSxPQW5QckJwRCxzQkFzT2V2TSxNQUFLeEUsR0FhTG1VOztXQWtCYkMsdUJBQUFBOztRQUlBO1NBSHVDQztTQUd2QyxPQUpBRDtTQU1zQjtnQyxPQXBTeEJ6RCxnQkErUGVuTTtRQW1DYixPQUFBO2lCQXY5QkZGO2lCQW83Qm9CdEU7O2lCQWpuQ2xCOEMsTUFncENBc1I7aUJBNzNCRnBPO2lCQTgzQnlDcU87Ozs7T0FPdkM7UUFBQSxPQVJBRDtRQVVrQyw0QixPQXhTcEN6RCxnQkErUGVuTTtlQStCYjRQO1FBVUUsNEIsT0F2R0o1QixZQThEZWhPO09BdUNiLE9BQUE7Z0JBMzlCRkYsSUFvN0JvQnRFLFNBam5DbEI4QyxNQWdwQ0FzUjs7T0FhQTtRQURZRTtRQUNaLE9BRFlBO1FBRU8sNEIsT0E1U3JCM0QsZ0JBK1Blbk07T0E0Q2IsT0FBQTtnQkFoK0JGRixJQW83Qm9CdEUsU0EyQ05zVSxXQXo0QmR0TyxlQXk0QmNzTzs7V0E0QndDQyxrQkFBZEMsV0FBY3BNLE1BQUFtTTtPQUNsRDtXQURvQ0MsV0FBUTlPLE1BQVI4TyxVQUFBN1AsUUFBUWUsY0FBUmY7UUFDcEMsS0FEa0R5RCxLQUUxQztZQUNDcU0sS0FIeUNyTSxRQUdoRHNNLFFBSGdEdE07UUFJOUMsR0FKZ0N6RDtTQVlLO2lCQVR2QytQO1VBU3VDO2lDLE9BbFY3Qy9ELGdCQStQZW5NO2lCQTBFVGtRO1VBU00sNEIsT0FyR1o5QixhQWtCZXBPO1NBaUZMO1dBcmdDVkYsSUFvN0JvQnRFLFNBam5DbEI4QyxNQTJyQ0k0Ujs7O1NBSXVDO2lCQUp2Q0E7VUFJdUM7aUMsT0E3VTdDL0QsZ0JBK1Blbk07aUJBMEVUa1E7VUFJTSw0QixPQWhHWjlCLGFBa0JlcE87U0E0RUw7V0FoZ0NWRixJQW83Qm9CdEUsU0FqbkNsQjhDLE1BMnJDSTRSOztZQUhrQ0YsUUFBQS9SLEtBQWMyRixNQUd6Q3FNOzs7O09BYk47O1FBUnlERTtRQUF0QkM7UUFBZjFTO1FBUXBCLDRCLE9BNVRQeU8sZ0JBK1Blbk07O21CQXVETnhFLEdBQUU0VTtXQUNMLEtBREtBLElBRUs7ZUFDSC9CLEtBSEYrQjtXQUlELDhCQUpENVU7V0FJQyxPQUFBO29CQS8rQlZzRTtvQkEyK0JTdEU7O3lDLE9BckhUd1MsWUE4RGVoTztvQkEwREZxTztVQUVpQztPQU41QyxPQUFBLFdBMStCRnZPLElBbzdCb0J0RSxTQXFET2tDLFlBQWUwUyxVQUFzQkQ7Ozs7UUFTS0U7UUFBdEJDO1FBQWZoUDtPQUU5QixLQUY2Q2dQO1FBR3JCLE1BQUE7T0FHdEI7UUFKRWpDLEtBRnlDaUM7UUFNM0MsNEIsT0FuVUpuRSxnQkErUGVuTTtRQW1FcUMsNEIsT0FqSXBEZ08sWUE4RGVoTztPQW1FYixPQUFBLFdBdi9CRkYsSUFvN0JvQnRFLFNBOERZOEYsY0FFMUIrTSxVQUYrRGdDOztPQWZuRTtRQURRRTtRQUNSLE9BRFFBO1FBR3NCLDRCLE9BaFRoQ3BFLGdCQStQZW5NO2VBOENMdVE7T0FDUixPQUFBO2dCQW4rQkZ6USxJQW83Qm9CdEUsU0F0K0JwQjRELFNBb2hDVW1SLFFBNTRCVi9POztPQWk1QkU7UUFEV2dQO1FBQ1gsT0FEV0E7UUFFVCw0QixPQW5USnJFLGdCQStQZW5NO2VBa0RGd1E7T0FDWCxPQUFBO2dCQXYrQkYxUTtnQkFvN0JvQnRFOztxQyxPQTlEcEJ3UyxZQThEZWhPOzs7Ozs7UUFjSitEO1FBQ0wwTTttQkFBa0J0RCxLQUFJM1IsR0FDdEJRO1dBQ0YsSUFEbUNtQixNQUFqQ25CLFNBQWdCNEQsS0FBaEI1RCxNQUNGLE9BREVBO1dBR0E7WSxPQWxSTm1RLGdCQStQZW5NOztzQkFnQlRoRTtXQUUrQiwwQixPQXROckN5USxXQW9NZXpNO1dBa0JUO1ksT0FyMEJGNEMsaUJBbXpCVzVDOztXQWlCWCxPQUFBO29CQXI4QkpGO29CQW04QjRCdEU7O29CQUFKMlI7b0JBOTFCeEJqTDtvQkErMUJNbEc7O29CQUFnQjREO29CQUFpQnpDOzs7Ozs7T0FLckMsS0FQUzRHLEtBUUQ7V0FDSnZELE1BVEt1RDtZQUFBQSxRQVNFLE9BUlAwTSwrQkFmY2pWLEdBdUJkZ0Y7T0FLa0I7UUFKZkYsS0FWRXlEO1FBY2E7O1csT0FibEIwTTs7UUFha0I7O09BSGxCLE9BQUE7Z0JBNzhCTjNRO2dCQW83Qm9CdEU7OztpQixPQWVkaVY7O2dCQVFBalE7O2lCLE9BNzdCTlA7O2dCQTg3QlNLOztXQTZDTzZELGdCQUFLLE9BalByQjhJLDRCQTRLZWpOLE1BQUt4RSxHQXFFSjJJOztXQW1CRG5ELGNBQUssT0EvVXBCb0wsbUJBdVBlcE0sTUFBS3hFLEdBd0ZMd0Y7O1dBQ0lzRyxnQkFBSHJLO09BbFVoQnFQLGVBeU9ldE0sTUFBS3hFLEdBeUZKeUI7T0FDZCxPQXpWRmtQLGdCQStQZW5NLE1BQUt4RSxHQXlGRDhMOztHQUVPO1lBRTFCa0QsWUFBWXhLLE1BQUt4RSxHQUFFUTtJQUNyQixTQURxQkE7S0FJakI7YUFKaUJBO01BSWpCLDRCLE9BaldGbUgsV0E2VlluRDtNQUdWLFdBSGlCaEUsTUFBQUE7S0FyaEN1QixPQUFBO2NBSTFDOEQ7Y0FpaENpQnRFOzttQyxPQUFqQmdQLFlBQVl4Szs7Ozs7Z0JBQU9oRTs7O1dBYU4ySCxlQUFNLE9BQUEsV0E5aENuQjdELElBaWhDaUJ0RSxTQTM3QmpCZ0csZUF3OEJhbUM7O09BSkQ7UUFGS2pHO1FBRUwsNEIsT0FxSlpnVCxlQTlKWTFRO1FBU0E7O09BRFIsT0FBQTtnQkF6aENKRjtnQkFpaENpQnRFOzs7aUIsT0FuZ0NqQnlFOztnQkEwZ0NpQnZDOzs7O1FBV1c7U0FIRzZNO1NBQUw4RDtTQUFIL007U0FHSyw0QixPQWxCNUJrSixZQUFZeEs7U0FrQk4sNEIsT0E3S05nTyxZQTJKWWhPO1FBZ0JSLE9BQUE7aUJBamlDSkYsSUFpaENpQnRFLFNBOXNDZjhDLE1BNnRDcUJnRCx1QkFBRytNLFVBQUs5RDs7V0FEVG9HO09BQU8sT0FBQTtnQkEvaEM3QjdRO2dCQWloQ2lCdEU7O3FDLE9BQWpCZ1AsWUFBWXhLO2dCQWNVMlE7O1dBS0hDLGdCQUFMQztPQUNWLE9BQUE7Z0JBcmlDSi9RO2dCQWloQ2lCdEU7O3FDLE9BQWpCZ1AsWUFBWXhLO2dCQW1CRTZRO3FDLE9BbkJkckcsWUFBWXhLO2dCQW1CTzRROztXQVJJRSxpQkFBSkM7T0FDZixPQUFBO2dCQTdoQ0pqUjtnQkFpaENpQnRFOztxQyxPQUFqQmdQLFlBQVl4SztnQkFXTytRO3FDLE9BdEtuQi9DLFlBMkpZaE87Z0JBV1c4UTs7V0FXVDdUO09BQUssT0FBQTtnQkF2aUNuQjZDO2dCQWloQ2lCdEU7O3FDLFdBQUx3RTtnQkFzQkUvQzttQkFDR2lLLGdCQUFLLE9BL1Z0QnhDLFVBd1VZMUUsTUFBS3hFLEdBdUJBMEw7O0dBQXVCO1lBRXhDOEosVUFBVWhSLE1BQUt4RSxHQUFFUTtJQUFJLE9BNWhDckJpRTs7OztrQyxPQWlxQ0F5USxlQXJJVTFRO2FBQUt4RTthQUFFUTtHQUE2QztZQUU5RGtRLFFBQVFsTSxNQUFLeEU7STs7V0FHUlE7VUFBQUE7bUJBQUFBOzhCQUFBQTthQUY4Qm1VLGlCQUFIbFQ7U0FDOUIsT0FBQTtrQkE5aUNGNkM7a0JBNGlDYXRFOzt1QyxXQUFMd0U7a0JBQ3dCL0M7O21CLE9BeFhoQ2tQLGdCQXVYUW5NOztrQkFDMkJtUTs7O09BRXpCLE9BTFZhLFVBRVFoUixNQUFLeEUsR0FHUlE7O1dBSUF3RTtPQUNILFdBcGpDRlYsSUE0aUNhdEU7T0FRWCxPQWxJRjZULFVBMEhRclAsTUFBS3hFLEdBT1JnRjs7V0FIQUU7T0FDSCxXQWpqQ0ZaLElBNGlDYXRFO09BS1gsT0F0NkJGMEgsVUFpNkJRbEQsTUFBS3hFLEdBSVJrRjs7NkJBTUNHOztZQUdRcUc7UUFDWixXQTFqQ0ZwSCxJQTRpQ2F0RTtRQWh6QmJvSixRQWd6QlE1RSxNQUFLeEUsR0FVUHFGO1FBTUosV0E1akNGZixJQTRpQ2F0RTtRQWdCWCxXQWhCTXdFLE1BQUt4RSxHQWFDMEw7O09BRlosV0F2akNGcEgsSUE0aUNhdEU7T0FXWCxPQTN6QkZvSixRQWd6QlE1RSxNQUFLeEUsR0FVUHFGOzs7WUFVTitNLFFBQVE1TixNQUFLeEU7UUFBNEJRLGNBQWQ2STthQUVyQm9NLHVCQUF1QnpWLEdBQUVRO0tBQy9CLFNBRCtCQTtNQUNDLE9BQUE7ZUFua0NoQzhEO2VBa2tDNkJ0RTs7b0MsV0FGckJ3RTtlQUV1QmhFO2lCQUFBQTs7OzthQUlIaUIsY0FBSDRILGNBQUpxRyxlQUFQbEk7U0FDUixTQURRQTtVQUVOLE9BQUE7bUJBeGtDUmxEO21CQWtrQzZCdEU7OztvQixPQTl3QjdCOEosZUE0d0JRdEY7O21CQU1pQjZFO21CQUpuQm9NO21CQUlzQmhVO1NBSVcsZUFKekIrRixPQUFPa0ksSUFBSXJHO1NBSWpCLE9BQUE7a0JBMWtDUi9FO2tCQWtrQzZCdEU7O3VDLE9BOXRCN0J5SyxVQTR0QlFqRzs7a0JBRUZpUjtrQkFJc0JoVTs7YUFNTGlLLGdCQUFMdEk7U0FDWixPQUFBLFdBN2tDTmtCLElBa2tDNkJ0RSxTQVVYb0QsUUFWWnFTLHdCQVVpQi9KOztLQUVkLE9BQUE7Y0E5a0NUcEg7Y0Fra0M2QnRFOzttQyxXQUZyQndFO2NBRXVCaEU7SUFZVTtJQUUzQyxTQUFJa1YsV0FBV0M7bUJBQXVCelYsR0FBSyxPQUFMQSxLQUFVO0tBQXhCLE9BQUEsa0NBQVR5VjtJQUF5QzthQWhCYm5WO2dCQUFkNkk7OztVQW1EcEJ1TSx3QkFBQUE7O1dBQ0FDLHNCQUFBQTs7V0FwRG9CeE07UUF3RHZCLE9BQUE7aUJBeG5DSi9FO2lCQWdrQ2F0RTs7O2tCLE9BNXdCYjhKLGVBNHdCUXRGOztpQkFtRERvUjtzQyxPQXgrQlBsTyxVQXE3QlFsRDtpQkFvRERxUjtzQyxXQXBEQ3JSO2lCQUFpQ2hFOzs7Ozs7S0EwRGxDLE9BQUE7Y0ExbkNQOEQ7Y0Fna0NhdEU7O21DLE9BcDBCYm9KLFFBbzBCUTVFO2NBQW1CNkU7bUMsV0FBbkI3RTtjQUFpQ2hFOztlQUFkNkk7Ozs7O1VBdUJsQnlNLHNCQUFBQTs7OztXQXZCa0J6TTs7U0F3Qm9CME07U0FBYkM7U0FOOUJDLHVCQUtLSCxLQUN5QkUsYUFBYUQ7Ozs7Ozs7U0FOM0NFOzs7Ozs7Ozs7O1dBWWFOLFlBQU9sVSxJQTlCaUJqQjs7T0ErQnZDO21CQURzQmlCOzs7Ozs7Y0FBQUE7V0FHVDtZQUhTa047WUFFUTFIO1lBRmZpUCxlQUVlalAsT0FGZjBPO1lBQUFBLFNBQUFPO1lBQU96VSxJQUFBa047Ozs7Ozs7U0FBQWxOOztPQUljcUc7T0FBSDREO09BSS9CeUssbUJBSFEsMkJBTEtSLFNBSWtCakssS0FBRzVEOzs7U0FJbENxTzs7OztRQXBCQUYsZ0JBb0JBRTtNQUcwQjtjQUgxQkE7T0FFNkNDO09BQUh2SDtPQUFWd0g7ZUF0QmhDSjtPQXNCa0JLO09BQVhDO09BQUhsTTtPQUNzQixPQXpCNUJxTCxXQXdCa0NXO01BQzdCLEdBQUEsV0F6QkxYLFdBd0JTYTtPQWp5Q2I7UUFBSUM7bUJBQWV2TSxJQUFHbEosS0FBSWI7V0FDckIsV0FBQSw0QkFEcUJBLEdBQVArSjtXQUNkO3FCQUNELG1DQUZrQmxKLFdBQUliOztVQUUyQzt3QkFFdkNBLEdBQUssT0FBTEEsS0FBVTtRQUFwQ3VXLFlBQVksa0NBNnhDc0JKO1FBNXhDOUJLO21CQUFLM1Q7V0FDWCxZQURXQTs7Z0JBQ1A0VDs7OzttQkFHU25XO2VBVFhnVyxlQUlBQyxXQUNTMVQsTUFJRXZDO21CQUhUbVcsV0FHU25XOzs7ZUFJNEI7Z0JBRFBrSDtnQkFBWGtQO2dCQUFQcFA7Z0JBQ3lCLE9BUm5Da1AsS0FPNEJoUDtnQkFOOUJpUCxXQU1ZblAsT0FQVmtQLEtBT2lCRTs7OztnQkFFUjdHO2dCQVJYNEcsV0FRNkIsNEJBVDNCRCxNQVNTM0c7OzttQkFJRThHLDZCQUFBQTs7OztxQkFIeUIzVTtpQkFBYyxHQUFBLDRCQUFkQSxHQVh4Q3VVLDJCQVd3Q3ZVOzs7aUJBR2Q0VTs7dUJBQVhELFdBQ2EsNEJBZHhCSCxNQWFzQkk7O21CQVp4Qkg7Ozs7Z0JBY2tCMVc7Z0JBQUw4VztnQkFkYko7O21CQWNxQyw0QkF5QnZDSyxtQkF6QmVEO21CQUFLOVc7Ozs7Z0JBQ0tnWDtnQkFBWEM7Z0JBZlpQO3NCQWVZTyxhQUEwQyw0QkFoQnBEUixNQWdCcUJPOzs7bUJBQ0FFLG1CQUFYQztlQXRCZFosZUFJQUMsV0FDUzFULE1BaUJnQm9VO21CQWhCdkJSLFdBREVELEtBaUJVVSxjQUFXRDs7OztnQkFHYUU7Z0JBQU5DO2dCQUFoQkM7Z0JBbkJkWjs7bUJBcUJLLDRCQVdQYSxnQkFiZ0JEO21CQUFnQkQ7bUJBQU1EOzs7O2dCQUdiSTtnQkFBWkM7OzJCQUVGeFgsR0FBSyxPQTlCaEJzVyxlQUlBQyxXQUNTMVQsTUF5QkU3QyxNQUE4QztlQURyRCxrQ0FEU3dYO21CQXRCWGYsV0FzQldlLFlBdkJUaEIsS0F1QnFCZTs7Ozs7Z0JBS0VFO2dCQUFYQzs7O21CQUNzQixJQUFTL0IsZ0JBQUg5STttQkFBVyxXQUFYQSxHQTdCeEMySixLQTZCMkNiO2tCQUFzQjtnQkE1Qm5FYzs7dUJBMkJjaUIsYUFDYSxrQ0FERkQ7Ozs7O2dCQUVORTtnQkFBSC9SO2dCQTdCaEI2USxnQkE2QmdCN1EsS0FBRytSOztXQUV2QixXQS9CSWxCLE1BRE81VCxNQUFBQSxNQUFBQTtVQWdDZ0I7UUFDekJ5VTttQkFBZU07V0FDakIsWUFEaUJBOzs7YUFHTS9IO2FBQU51SDthQUFQOVA7YUFGTnVRO21CQUVNdlEsT0FBTzhQLE1BQWlDLDRCQXBDNUNaLE1Bb0NpQjNHOztnQkFDVmhOLGNBSFRnVixlQWxDRXJCLEtBcUNPM1Q7V0FFYixXQUxJZ1YsVUFEYUQsVUFBQUE7VUFNTTtRQUNyQmQ7bUJBQWtCYztXQUNwQixZQURvQkE7OzthQUdIL1U7YUFBUHlFO2FBRk53USxlQUVNeFEsT0EzQ0prUCxLQTJDVzNUOztnQkFDSmtWLGdCQUhURCxlQXpDRXRCLEtBNENPdUI7V0FFYixXQUxJRCxVQURnQkYsVUFBQUE7VUFNRztRQWd2Q2ZJLE1BOXhDRnhCLEtBNHhDMkNOO09BRzFDLEdBQUEsV0FEQzhCLEtBRmM1Qjs4QkFBZGpNLEtBQUdrTSxXQUFzQ0gsTUFBSHZIOzs7Ozs7Ozs7OzRCQXFCdEN2RTs7TUFNc0M7T0FIdkJ3RTtPQUFKOUc7T0FBUm1RO09BR21DLDRCLFdBbkV0QzNUO09BbUVrQiw0QixPQXgvQjFCa0QsVUFxN0JRbEQ7T0FtRUYsT0FuREprUixXQWdEU3lDOzs7O01BQ1AsT0FBQTtlQWpvQ0o3VDtlQWdrQ2F0RTs7b0MsT0E1d0JiOEosZUE0d0JRdEY7ZUE2REE4Rjs7Z0IsT0EvbUNSN0Y7Ozs7ZUFrbkNtQnVEOztlQUFJOEc7O1NBSEpHLGVBQUpoSDtLQUNYLE9BQUE7Y0E5bkNKM0Q7Y0Fna0NhdEU7O21DLE9BNXdCYjhKLGVBNHdCUXRGO2NBNkRBOEY7bUMsT0FsL0JSNUMsVUFxN0JRbEQ7Y0E2RE95RDttQyxXQTdEUHpEO2NBNkRXeUs7O2VBN0RRNUY7Ozs7O1dBQUFBO1FBZ0ZuQixPQUFBO2lCQWhwQ1IvRTtpQkFna0NhdEU7OztrQixPQTV3QmI4SixlQTR3QlF0Rjs7aUJBQW1CNkU7aUJBRXJCb007aUJBRm1DalY7O1dBQWQ2STtRQXNFNEMsSUFBL0IrTyxjQUFIN04sZUFBa0MsT0FBL0I2Tjs7O1lBQUFBO1NBSTVCLE9BQUE7a0JBMW9DWjlUO2tCQWdrQ2F0RTs7O21CLE9BNXdCYjhKLGVBNHdCUXRGOztrQkFzRTZCK0Y7dUMsT0EzL0JyQzdDLFVBcTdCUWxEO2tCQXNFZ0M0VDt1QyxXQXRFaEM1VDtrQkFBaUNoRTs7UUE2RTdCLE9BQUE7aUJBN29DWjhEO2lCQWdrQ2F0RTs7O2tCLE9BNXdCYjhKLGVBNHdCUXRGOztpQkFzRTZCK0Y7c0MsT0EzL0JyQzdDLFVBcTdCUWxEO2lCQXNFZ0M0VDtzQyxXQXRFaEM1VDtpQkFBaUNoRTs7SUFpRjlCLE9BQUE7YUFqcENYOEQ7YUFna0NhdEU7O2tDLE9BcDBCYm9KLFFBbzBCUTVFO2FBQW1CNkU7a0MsV0FBbkI3RTthQUFpQ2hFOztZQW9GekN3UCxTQUFTeEwsTUFBS3hFO1FBQU9xSCxjQUFKVDthQUNmeVIsVUFBUTFHLEtBQUkvSyxJQUFHNUcsR0FBRVE7S0FDbkIsV0FEbUJBO0tBenBDdUIsT0FBQTtjQUkxQzhEO2NBcXBDaUJ0RTs7Y0FBUDJSO2NBN2lDVmhMO2NBNmlDY0M7bUMsT0FyRmR3TCxRQW9GUzVOO2NBQ1VoRTttQyxPQWhlbkJtUSxnQkErZFNuTTs7SUFHZ0M7SUFFM0MsS0FMdUI2QyxHQU1mO1FBQ0o3RyxJQVBtQjZHO1NBQUFBLE1BT1osT0FOUGdSLHFCQURlelIsSUFBSDVHLEdBT1pRO1FBQ0dzRSxLQVJnQnVDO0lBVUQsMEIsT0FUbEJnUjtJQVNrQixJQUFBO0lBRGxCLE9BQUE7YUE3cENGL1Q7YUFvcENjdEU7O2tDLE9BQ1pxWSxtQkFEZXpSO2FBT2ZwRzs7YyxPQTdvQ0ZpRTs7YUE4b0NLSzs7WUFLTDJLLFdBQVdqTCxNQUFLeEUsR0FBRVE7SUFDcEIsSUFTRXNWLE1BVmtCdFYsTUFVYjhYLFFBVmE5WCxhQVVsQnNWOzs7UUFBQUE7Z0JBQUt3Qzs7NkJBUjRCQzs7U0FRNUJEO1VBTnFDRTtNQUlyQyxHQUFBLGtCQU40QkQsTUFFU0M7T0FLeEMsT0FBQSxXQTFxQ0ZsVSxJQWlxQ2dCdEUsU0FBRVEsU0FJd0JnWTs7Ozs7SUFRdEMsMEIsV0FaT2hVO0lBV2dDLDBCLE9BaDdCM0M0RSxRQXE2Qlc1RTtJQVdULE9BQUEsV0E1cUNGRixJQWlxQ2dCdEUsU0FBRVEsZUFVbEJzVixXQUFLd0M7R0FFb0I7WUFFekJwRCxlQUFlMVEsTUFBS3hFLEdBQUVRO0lBQ3hCLFlBRHdCQTs7O1dBRVJtVSxrQkFBSGxUO09BQ1QsT0FBQTtnQkFsckNGNkM7Z0JBK3FDb0J0RTs7cUMsV0FBTHdFO2dCQUVKL0M7O2lCLE9BNWZYa1AsZ0JBMGZlbk07O2dCQUVEbVE7O09BTXFCLElBRm5CdE4sY0FBSlQsZUFFdUIsV0FGdkJBLElBQUlTO09BRW1CLE9BQUE7Z0JBdnJDbkMvQztnQkErcUNvQnRFOztxQyxPQTNCcEJnUSxTQTJCZXhMOzs7T0F5RmI7UUFEYXNQO1FBQ2IsT0FEYUE7UUFFaUIsNEIsT0FwbEJoQ25ELGdCQTBmZW5NO1FBMEZYOytCLE9BemtCSnFNLGtCQStlZXJNO09BeUZiLE9BQUE7Z0JBeHdDRkYsSUErcUNvQnRFLFNBbnZDcEIwRCxlQTIwQ2VvUSxnQkFBQUE7O1dBbkZKMkU7O1FBRFUsTUFBQTtXQUNOdlE7T0FBMkIsT0FvSTFDOEwsY0F6SWV4UCxNQUFLeEUsT0FLVHlZLFNBQUl2UTs7V0FJSCtMLGVBQU0sT0F1TWxCQyxlQWhOZTFQLE1BQUt4RSxHQVNSaVU7O1dBQ0dFLGVBQU0sT0EzZXJCcEQsc0JBaWVldk0sTUFBS3hFLEdBVUxtVTs7T0EyQkE7UUExQkhuUDtlQUFBQTtRQTBCRyw0QixPQS9oQmYyTCxnQkEwZmVuTTtlQVdIUTs7bUJBY0gwVCxLQUFFbkQ7V0FDTDs7O2dCQUFJeEcsS0FEQ3dHO1lBYmU7d0JBY2hCeEc7O2dCQUFBQTtpQkFiaUNvRyxnQkFBVHdEO2FBQzFCLEdBRDBCQTtjQU1wQjtlQUhNOUYsS0FIYzhGO2VBR2pCelcsSUFIaUJ5VztlQU1wQjtzQyxPQTVVZG5HLFlBeVRlaE87Y0FpQkgsV0Foc0NaRixJQStxQ29CdEUsU0E1MkNsQjhDLE1BNDNDZVoscUJBQUcyUTs7O2NBREYsV0E5ckNsQnZPLElBK3FDb0J0RTtpQkEwQlYrTyxLQWJpQ29HOzs7O1dBY3JDLFdBRElwRzs7Z0JBS091RyxnQkFBTHNEO29CQUFLdEQsZ0JBTFB2RzthQVFBLE9BQUE7c0JBanRDVnpLO3NCQXdzQ1NvVTs7MkMsT0FsVlRsRyxZQXlUZWhPO3NCQStCRThROzJDLE9BN0xqQnRHLFlBOEpleEs7c0JBK0JIb1U7O1dBS0MsT0FBQTtvQkFudENidFU7b0JBd3NDU29VOzt5QyxPQXZMVDFKLFlBOEpleEs7b0JBMEJMdUs7VUFVc0M7T0F2dENOLE9BQUE7Z0JBSTFDekssSUErcUNvQnRFLFNBNTJDbEI4QyxNQXUzQ1VrQzs7O1FBbUZHdVA7UUFFVHRMO21CQUFJakosR0FDSjZZO3VCQUFBQTs7WUFDRTthQURnRGhEO2FBQU5pRDthQUMxQyxPQURGRDthQUlJO29DLE9BL2xCVmxJLGdCQTBmZW5NO2FBb0drQjtvQyxPQWxRakN3SyxZQThKZXhLO2FBb0dMO29DLE9BN1pWZ08sWUF5VGVoTztZQWtHUCxPQUFBO3FCQWp4Q1JGO3FCQSt3Q1V0RTs7cUJBNThDUjhDLE1BNjhDSStWOztxQkFBa0RoRDs7cUJBQU5pRDs7OztXQU0xQyxXQU5GRDtXQVFvQztZLE9Bbm1CMUNsSSxnQkEwZmVuTTs7c0JBaUdUcVU7V0FRSSwwQixPQXZRVjdKLFlBOEpleEs7V0F1R1AsT0FBQTtvQkF0eENSRjtvQkErd0NVdEU7O29CQTU4Q1I4QyxNQTY4Q0krVjs7Ozs7O09BV0osS0FkYXRFO1FBOEJOLE1BQUE7V0FmTHNFLE1BZld0RSxvQkFlWHNFOztRQUtJO1NBSkRFLE9BaEJReEU7U0Fld0NzQjtTQUFOaUQ7O29CQU1wQzlZLEdBQUVnWjtZQUFnQixvQixPQW5CekIvUCxJQW1CT2pKO1lBQVEsT0FBQSxrQ0FBTmdaO1dBQTBCO2dCQU5yQ0g7U0FLSTtnQyxPQTVtQlJsSSxnQkEwZmVuTTtTQWlIZ0IsNEIsT0EvUS9Cd0ssWUE4SmV4SztTQWlIUCw0QixPQTFhUmdPLFlBeVRlaE87UUErR1QsT0FBQTtpQkE5eENORjtpQkErcUNvQnRFOztpQkE1MkNsQjhDLE1BeTlDRStWOztpQkFBbURoRDs7aUJBQU5pRDs7OztpQkFDMUNDOztPQVVpQztRQUg3QkMsS0F2Qkl6RTs7bUJBNEJGdlUsR0FBRWdaO1dBQWdCLG9CLE9BMUJ6Qi9QLElBMEJPako7V0FBUSxPQUFBLGtDQUFOZ1o7VUFBMEI7ZUFickNIO1FBV29DLDRCLE9BbG5CeENsSSxnQkEwZmVuTTtlQTZHWHFVO1FBV0ksNEIsT0F0UlI3SixZQThKZXhLO09Bc0hULE9BQUE7Z0JBcnlDTkY7Z0JBK3FDb0J0RTs7Z0JBNTJDbEI4QyxNQXk5Q0UrVjs7Ozs7O2dCQVFPRzs7T0FsRUo7O1FBUnlEbkU7UUFBdEJEO1FBQWYxUztRQVFwQiw0QixPQTdpQlB5TyxnQkEwZmVuTTs7bUJBNkNOeEUsR0FBRTRVO1dBQ0wsS0FES0EsSUFFSztlQUNIL0IsS0FIRitCO1dBSUQsOEJBSkQ1VTtXQUlDLE9BQUE7b0JBaHVDVnNFO29CQTR0Q1N0RTs7eUMsT0F0V1R3UyxZQXlUZWhPO29CQWdERnFPO1VBRWlDO09BTjVDLE9BQUEsV0EzdENGdk8sSUErcUNvQnRFLFNBMkNPa0MsWUFBZTBTLFVBQXNCQzs7T0FKOUQ7UUFEUUU7UUFDUixPQURRQTtRQUcyQiw0QixPQW5pQnJDcEUsZ0JBMGZlbk07ZUFzQ0x1UTtRQUdOLDRCLE9Bdk1KL0YsWUE4SmV4SztPQXVDYixPQUFBLFdBdHRDRkYsSUErcUNvQnRFLFNBanVDcEI0RCxTQXV3Q1VtUjs7O1FBY0MzTTtRQWdCTDZRO21CQUFpQmpaLEdBQUU4SDtXQUFLLE9BQUE7b0JBbnZDOUJ4RDtvQkFtdkN1QnRFOzt5QyxPQW5nQnZCaVIsV0ErYmV6TTtvQkFvRVVzRDtVQUEwQztRQUM3RG9SO21CQUFrQnZILEtBQUkzUixHQUN0QlE7V0FDRixJQURtQ21CLE1BQWpDbkIsU0FBZ0I0RCxLQUFoQjVELE1BakJtQjJZLE9BaUJuQjNZOzs7O2dCQWhCV1ksU0FLSG1RLEtBTlc0SDs7d0JBTVg1SDs7Z0JBQUFBO2FBSEM7Y0FEeUI2SDtjQUFIL1A7Y0FBSnFHO2NBQUhySTtjQUNmLGdCQURlQSxHQUFHcUksSUFBSXJHLElBRHBCakk7Y0FBQUE7Y0FLSG1RLEtBSjBCNkg7Ozs7V0FFekIsSUFjUHRPLE9BZE8sMkJBSEUxSixhQUtIbVE7OztrQ0FBQUE7aUJBRzRCekosY0FBTHVSLGdCQVNmQyxPQVRlRCxNQVN2QkUsYUFUNEJ6Ujs7O2dCQVNwQndSLE9BWlIvSCxJQVlBZ0k7O1dBQ1YsV0FGRS9ZO1dBTUE7WSxPQXRrQk5tUSxnQkEwZmVuTTs7V0EyRTZCLDBCLE9BbmE1Q3dOLFdBd1ZleE47O1dBMkVKO1ksT0E3c0NYZSxtQkFzc0NNMFQ7O1dBTU0sMEIsT0FyNUJaeE8sVUEyMEJlakc7V0EwRUgsSUFBQTtXQUFOO1ksT0EzdUNOQzs7V0EwdUNNO1ksT0F2bkNGMkMsaUJBOGlDVzVDOztXQXdFWCxPQUFBO29CQXZ2Q0pGO29CQW92QzRCdEU7O29CQUFKMlI7b0JBL29DeEJqTDtvQkFncENNbEc7O29CQUFnQjREO29CQUFpQnpDOztvQkFDL0JtSjs7b0JBQU15Tzs7b0JBQVFEOzs7O09BT3BCLEtBMUJTbFIsS0EyQkQ7V0FDSmxELE1BNUJLa0Q7WUFBQUEsUUE0QkUsT0FYUDhRLCtCQXJFY2xaLEdBZ0Zka0Y7T0FLa0I7UUFKZkosS0E3QkVzRDtRQWlDYTs7VyxPQWhCbEI4UTs7UUFnQmtCOztPQUhsQixPQUFBO2dCQWp3Q041VTtnQkErcUNvQnRFOzs7aUIsT0FxRWRrWjs7Z0JBV0FoVTs7aUIsT0FqdkNOVDs7Z0JBa3ZDU0s7O1dBTU95RCxnQkFBSyxPQTlmckJrSiw0QkF1YWVqTixNQUFLeEUsR0F1Rkp1STs7T0FLZDtRQURXeU07UUFDWCxPQURXQTtRQUVULDRCLE9BdmxCSnJFLGdCQTBmZW5NO2VBMkZGd1E7T0FDWCxPQUFBO2dCQTN3Q0YxUTtnQkErcUNvQnRFOztxQyxPQTlKcEJnUCxZQThKZXhLOzs7OztXQTZIQWdCLGNBQUssT0EvbUJwQm9MLG1CQWtmZXBNLE1BQUt4RSxHQTZITHdGOztXQUNJc0csZ0JBQUhKO09BbG1CaEJvRixlQW9lZXRNLE1BQUt4RSxHQThISjBMO09BQ2QsT0F6bkJGaUYsZ0JBMGZlbk0sTUFBS3hFLEdBOEhEOEw7O0dBRU87WUFFMUJ4RSxXQUFXOUMsTUFBS3hFOzBCQUFXbUUsY0FBSHFCLGNBQUxzQztJQUNnQywwQixPQXZxQ25ESixVQXNxQ1dsRDtlQUFnQkw7V0FBSHFCOzs7Ozs7O0lBQzFCLE9BQUEsV0FsekNFbEIsSUFpekNnQnRFLDJCQUFHOEg7O1lBT25Ca00sY0FBY3hQLE1BQUt4RTtRQUFpQnFILGNBQVZtUyxxQkFBSjVTO2FBQ3BCNlMsVUFBVTlILEtBQUkvSyxJQUFHNUcsR0FBRVE7S0FDckI7O2VBRHFCQSxjQUFBQSxVQUNqQmtaO1VBQUFBLEtBRnNCRjs7S0FPMUIsV0FOcUJoWjtLQVFuQiwwQixPQTVvQkZtUSxnQkFtb0Jjbk07S0FRdUIsMEIsT0FrQnJDd08saUJBMUJjeE87Z0JBQ09oRSxnQkFBQUE7S0FNckIsT0FBQTtjQS96Q0E4RDtjQXl6Q21CdEU7O2NBQVAyUjtjQTlzQ1o5SztjQThzQ2dCRDt1QkFMQzVHLEdBRWpCcUg7ZSxLQUFBQSxHQURNO2VBQ2dCLDBCLE9BTHRCQyxXQU9jOUM7ZUFGVCxPQUFBO3dCQXR6Q0xGO3dCQW96Q2lCdEU7Ozt5QixPQXR5Q2pCeUU7O3dCQXd5Q0E0Qzs7OztjQUlJcVM7O2NBRGlCbFo7OztJQVFzQjtJQUU3QyxLQVhzQzZHLEdBWTlCLE1BQUE7UUFDSjdHLElBYmtDNkc7U0FBQUEsTUFhM0IsT0FaUG9TLHNCQURvQjdTLElBQUg1RyxHQWFqQlE7UUFDR3NFLEtBZCtCdUM7SUFnQmhCLDBCLE9BZmxCb1M7SUFla0IsSUFBQTtJQURsQixPQUFBO2FBdjBDRm5WO2FBd3pDbUJ0RTs7a0MsT0FDakJ5WixvQkFEb0I3UzthQWFwQnBHOztjLE9BdnpDRmlFOzthQXd6Q0tLOztZQUtMNlUsbUJBQW1CblYsTUFBS3hFLEdBQUU0WjthQUN4QkMsa0JBQWtCN1osR0FBRThaO0tBQ3RCLFdBRHNCQTtLQUVVLDBCLE9BMXBCaENuUyxXQXVwQm1CbkQ7Z0JBQ0dzVjtLQUVwQiwwQixPQW5zQ0ZwUyxVQWdzQ21CbEQ7S0EvMEN1QixPQUFBO2NBSTFDRjtjQTQwQ29CdEU7O2NBeHVDcEJ5RztjQXd1Q3NCcVQ7Y0FBQUE7Ozs7O0lBRThDOztJQUV0RSxPQUFBO2FBaDFDRXhWO2FBMjBDd0J0RTs7O2MsT0E3ekN4QnlFLHVCQTh6Q0VvVjs7YUFEd0JEO0dBSzRCO1lBRXRENUcsaUJBQWlCeE8sTUFBS3hFLEdBQUVRO2FBR3RCdVosS0FBSy9aLEdBQ1AsT0FKd0JRLFdBSTZCLFdBdDFDckQ4RCxJQXExQ090RSxTQUM4RDthQUVuRWdhLFNBQVNoYTtLQUNYLFlBUHdCUTtpQkFRZDtTQUNIdUY7a0JBVGlCdkY7ZUFXbEI7Z0JBNzFDTjhEO2dCQXcxQ1d0RTs7Z0JBSFQrWjtxQyxPQTFzQ0ZyUyxVQXVzQ2lCbEQ7Z0JBU1Z1QjtlQUdFO2dCQTkxQ1R6QjtnQkF3MUNXdEU7O3FDLE9BN3NDWDBILFVBdXNDaUJsRDtnQkFTVnVCO0lBR2dDO2FBRXJDa1UsMEJBQXdCamEsR0FBRWthO0tBQzVCLFdBajJDQTVWLElBZzJDMEJ0RTtLQUd4QixPQTBDRm1hO2NBM0RpQjNWLE1BY1N4RSxPQUFFa2EsV0FBQUEsUUFBQUEsUUFBQUEsUUFBQUE7SUFPSjthQUV0QkUsS0FBS3BhO2NBQ0grVCxNQUFNL1QsR0FBSSxhQXhCVVEsV0F3QjhCLFdBMTJDdEQ4RCxJQTAyQ1V0RSxTQUFzRDtLQUNoRSxZQXpCd0JROzsrQkF1QjFCLFdBejJDRThELElBeTJDT3RFLFNBQ0grVCxPQXJCRmdHOzs7T0F1QmNqVjtPQUNSdVY7a0JBQVMvWCxLQUFJd0M7VUFDZixTQURlQSxJQUNDLE9BQUEsV0E5MkN0QlIsSUE2MkNpQmhDOztVQUVOLE9BQUE7bUJBLzJDWGdDO21CQTYyQ2lCaEM7OztvQixPQS8xQ2pCbUM7K0NBazFDRXdWOzttQkFhbUJuVjtTQUVpRDtNQUVsRSxPQUFBLFdBajNDSlIsSUF5MkNPdEUsU0FDSCtULE9BckJGZ0csTUF3Qk1NLFVBRFF2Vjs7U0FPRHVDO0tBQUssT0FBQTtjQW4zQ3BCL0M7Y0F5MkNPdEU7O2NBQ0grVDtjQXJCRmdHOztlLE9BVkZKLG1CQU9pQm5WOztjQWlDRjZDO0lBQzJCO2FBRXhDaVQsWUFBWXRhO0tBQ2QsV0FyQ3dCUTs7TUFzQ3RCLElBQVdvSCxnQkFBTEM7TUFDSixPQUFBO2VBejNDSnZEO2VBczNDY3RFOztvQyxPQTN1Q2QwSCxVQXVzQ2lCbEQ7ZUFzQ1RxRDtvQyxPQTd1Q1JILFVBdXNDaUJsRDtlQXNDSm9EO0tBRWM7S0FGekIsT0FBQTtJQUdhO0lBRWpCLE9BQUEsV0E3M0NFdEQsSUFrMUNzQnRFLFNBTXBCZ2EsVUFpQkFJLE1BYUFFO0dBT21DO1lBRXJDcEcsZUFBZTFQLE1BQUt4RSxHQUFFUTthQUNwQitaLHdCQUFzQnZhLEdBQUVRO0tBQzFCLE9BQUE7Y0FqNENBOEQ7Y0FnNEN3QnRFOzs7ZSxPQXlDeEJtUCxzQkExQ2UzSzs7Y0FDV2hFO0lBQ29CO0lBRWhELFdBSndCQTtJQVlBLDBCLE9BdHRCdEJtUSxnQkEwc0Jlbk07ZUFBT2hFO0lBV3RCO0ssT0E1M0NBaUUsdUJBazNDRThWOztlQURvQi9aLGFBQUFBLGFBQUFBO0lBSXhCLE9BQUE7YUFuNENFOEQ7YUErM0NvQnRFOztzQkFLZkEsR0FFRHFIO2NBRkosS0FFSUEsR0FETTtjQUVjLDBCLE9BdEZ4QkMsV0E4RWU5QztjQVFULE9BQUE7dUJBdjRDTkY7dUJBbzRDS3RFOzs7d0IsT0F0M0NMeUU7O3VCQXczQ0k0QzthQUN1RTs7YUFqekMzRXJCOzthQTRCQWU7Ozs7OztHQXl4Q2dFO1lBRWhFb1Qsd0JBQXdCM1YsTUFBS3hFOztLQUEwQjJVO0tBQUw2RjtLQUFOMVA7S0FBTjJQO0tBQU5yYTtLQUM5QnNhLDhCQUQ4QnRhLGdCQUFBQTthQUU5QnVhLFFBQVEzYSxHQUdSNGE7S0FGRixLQUVFQSxJQURNOztLQUNBLE9BQUE7Y0FsNUNSdFc7Y0ErNENVdEU7OztlLE9BajRDVnlFLHVCQStHQXlDOztjQXF4Q0UwVDtJQUFrRDtJQUV0RCxLQVBvREo7S0FTaEQsT0FBQTtjQXQ1Q0ZsVztjQTY0QzZCdEU7O2NBQzNCMGE7dUJBU08xYTtlQUFMO29CQUlpQmtJO2dCQUFLLE9BQUE7eUJBMzVDMUI1RDt5QkF1NUNTdEU7OzswQixPQTVFVDJaLG1CQWtFd0JuVjs7eUJBY0gwRDs7bUJBRkRiO29CQUFBQSxHQURNO2VBRU0sMEIsT0F0dkNoQ0ksV0F5dUN3QmpEO2VBYVEsSUFBQTtlQUF0QixPQUFBO3dCQTE1Q1ZGO3dCQXU1Q1N0RTs7O3lCLE9BejRDVHlFOzt3QkEyNENvQjRDO2NBRWtEO2NBZDFCeUQ7bUMsT0F6dEI1Q25ELFdBeXRCd0JuRDtjQUErQm1RO1FBZ0JsRGtHLElBaEI2Q0w7SUFpQmhELE9BQUE7YUE5NUNGbFc7YUE2NEM2QnRFOzthQUMzQjBhO2FBQ0FDO2FBRm9DRjtzQkFrQjdCemE7Y0FBTDttQkFNaUJrSTtlQUNYLE9BQUE7d0JBdDZDVjVEO3dCQSs1Q1N0RTs7O3lCLE9BcEZUMlosbUJBa0V3Qm5WOzt3QkF3QkgwRDs2QyxPQWp3Q3JCVCxXQXl1Q3dCakQ7d0JBZ0JuQnFXOztrQkFJZXhUO21CQUFBQSxVQTd2Q3BCSSxXQXl1Q3dCakQsTUFrQmZ4RSxHQUZKNmE7Y0FPUywwQixPQWh3Q2RwVCxXQXl1Q3dCakQ7Y0FzQk4sMEIsT0EvdkNsQmlELFdBeXVDd0JqRDtjQXNCTixJQUFBO2NBdjZDd0IsT0FBQTt1QkFJMUNGO3VCQSs1Q1N0RTs7O3dCLE9BajVDVHlFOzt1QkFtNUNvQjRDOzt1QkFKZndUO2FBU3VFO2FBekJoQy9QO2tDLE9BenRCNUNuRCxXQXl0QndCbkQ7YUFBK0JtUTs7WUE0QnZEeEYsc0JBQXNCM0ssTUFBS3hFLEdBQUVRO0lBRS9CLFlBRitCQTs7U0FHWnFhLGNBQUh4VCxjQUFIbkg7S0FFUCxPQWpDSmlhLHdCQTRCc0IzVixNQUFLeEUsT0FBRVEsU0FHbEJOLEdBQUdtSCxHQUFHd1QsR0FIWXJhOztJQU8zQixJQURVMkgsZUFDVixPQVAyQjNIO0lBT3lCLDBCLE9BNXZCdERtSCxXQXF2QnNCbkQ7SUFPcEIsT0FBQSxXQWg3Q0ZGLElBeTZDMkJ0RSxTQUFFUSxTQW4xQzdCd0YsZUF5MUNZbUM7R0FFUztZQUVyQnNHLFVBQVVqSyxNQUFLeEUsR0FBRXFIO2FBQ2Y0QixJQUFJako7S0EvNkNZO01BKzZDVThhO01BQVZDO01BQVJDO01BLzZDUSxjQTg2Q1J4VyxTQUFBQTtLQUtSLDBCO0tBRlEsMEIsV0FIQUE7S0FHQTtLQURWLE9BQUE7Y0FyN0NBRjtjQW83Q010RTs7bUMsT0F4ckNOb0osUUF1ckNVNUU7Y0FDQXdXOztlLE9BdjRDVnpWOztjQXU0Q2tCd1Y7O2NBQVVEOztJQU85QixPQTc2Q0VyVyxpQkFzNkNFd0UsS0FEYWpKLEdBQUVxSDtHQVFDO1lBRWxCa0cseUJBQXlCL0ksTUFBS3hFO0lBQ2hDLElBRHNDeUIsY0FBSDRGLGNBQ25DLE9BRHNDNUY7Ozs7Ozs7U0FBQUE7VUFHTXlHLGVBRnhDK1Msa0JBRXdDL1M7OztTQUZ4QytTOztJQU1KLFVBUG1DNVQsZ0JBUXRCLE9BdjFCWHFHLFlBKzBCeUJsSixNQUFLeEUsR0FBTXlCO0lBT3RDLFNBUG1DNEY7U0FZeEI2VCxNQVp3QjdUO0tBYTVCLE9BQUEsZUFESTZULE1BWFBEO2VBWStCLFdBMThDakMzVyxJQTY3QzhCdEUsU0FZckJrYjtlQUVGO2dCQTM4Q1A1VztnQkE2N0M4QnRFOztnQkFZckJrYjtxQyxPQWwxQlR6UCxZQXMwQnlCakg7Z0JBQVcvQzs7UUFTM0IyQixNQVR3QmlFO0lBVTVCLE9BQUEsZUFESWpFLE1BUlA2WDtjQVMrQixXQXY4Q2pDM1csSUE2N0M4QnRFLFNBU3JCb0Q7Y0FFRjtlQXg4Q1BrQjtlQTY3QzhCdEU7O2VBU3JCb0Q7b0MsT0EvMEJUcUksWUFzMEJ5QmpIO2VBQVcvQzs7WUFnQnBDMFosbUJBQW1CbmIsR0FBRVE7SUFDdkIsWUFEdUJBOzs7V0FFVDBCLGNBQUssT0FBQSxXQS84Q2pCb0MsSUE2OENtQnRFLFNBRVBrQzs7K0JBQ0Y2SztxQkFBWSxPQUFBLFdBaDlDdEJ6SSxJQTY4Q21CdEUsU0FHVCtNO1dBQ1E1RztPQUFNLE9BQUEsV0FqOUN4QjdCLElBNjhDbUJ0RSxTQUdUK00sR0FDUTVHOztXQUNQZ0MsZUFBTSxPQUFBLFdBbDlDakI3RCxJQTY4Q21CdEUsU0F6Z0RHNEYsaUJBOGdEWHVDOztXQUNEaEU7T0FBaUIsT0FBQSxXQW45QzNCRyxJQTY4Q21CdEUsU0FNUSx1QkFBakJtRTs7R0FBbUM7WUFFN0NpWCxnQkFBZ0JwYixHQUFFUTtJQUNwQixTQURvQkE7S0FFc0I7TUFBL0IwQixJQUZTMUI7TUFFc0I7NkIsT0F4U3hDMFUsZUEzcUNBclM7TUFtOUN3Qzs7O0tBQTFCLE9BQUE7Y0F2OUNkeUI7Y0FxOUNnQnRFOzs7ZSxPQXY4Q2hCeUU7O2NBeThDU3ZDOztlQUZTMUIsdUJBTVA2YTtnQkEvOUMrQixPQUFBLFdBSTFDL1csSUFxOUNnQnRFLFNBTUxxYjtRQUUyQkM7SUFDcEMsT0FBQSxXQTk5Q0ZoWCxJQXE5Q2dCdEUsU0FNTHFiLGNBZFhGLG9CQWdCc0NHO0dBQzhCO1lBRXBFOUssV0FBV3hRLEdBQUVRO0lBQUksT0FBQTthQWgrQ2pCOEQ7YUFnK0NXdEU7O2tDLFdBNTlDWDZDO2FBNDlDYXJDO0dBQTJDO1lBRXhEK2EscUJBQXFCL2E7SUFDaEI7SUFDUCxJQUFJUjtJQUpGd1EsV0FJRXhRLEdBRm1CUTtJQUd2QixPQUFBO0dBQ3NCO1lBRXBCZ2Isb0JBQW9CaGI7SUFDZjtJQUNQLElBQUlSO0lBaGNGd1YsVUF0aUNBM1MsWUFzK0NFN0MsR0FGa0JRO0lBR3RCLE9BQUE7R0FDc0I7WUFFcEJpYixXQUFXemIsR0FBRVE7SUFDZiw4QkFEYVI7SUF6QlhvYixnQkF5QldwYixHQUFFUTtJQUdmLFdBai9DRThELElBOCtDV3RFO0lBR2IsT0FBQSw4QkFIYUE7R0FJUTtHQUVQLFNBQVo0Vyx3QixPQXoyQ0FsUCxVQXZJQTdFO0dBaS9DVSxTQUFWNlksc0IsT0F6dkNBdFMsUUF4UEF2RztHQWsvQ1ksU0FBWjhZLHdCLE9BcGtCQTlILFVBOTZCQWhSO0dBbS9DWSxTQUFaK1ksd0IsT0E3Y0FwRyxVQXRpQ0EzUztHQW8vQ2EsU0FBYmdaO0ksT0FqcUJBN0osV0FuMUJBblA7O0dBcS9DYyxTQUFkaVo7SSxPQWh1QkFsSyxZQXJ4QkEvTzs7R0FzL0NhLFNBQWJrWjtJLE9BMXdCQTlLLFdBNXVCQXBPOztHQXUvQ2tCLFNBQWxCbVo7SSxPQXJ4QkExSyxnQkFsdUJBek87O0dBdy9DbUIsU0FBbkJvWjtJLE9BenlCQWpMLGlCQS9zQkFuTzs7R0F5L0NjLFNBQWRxWjtJLE9BNWVBbE4sWUE3Z0NBbk07O0dBMC9DYyxTQUFkc1o7SSxPQXhvQkEzSixZQWwzQkEzUDs7R0EyL0NpQixTQUFqQnVaO0ksT0Eza0JBeEksZUFoN0JBL1E7O0dBNC9DaUIsU0FBakJ3WjtJLE9BalZBbkgsZUEzcUNBclM7O0dBNi9DbUIsU0FBbkJ5WjtJLE9BL0tBdEosaUJBOTBDQW5ROzs7OztPQWk5Q0F1WTtPQVdBNUs7T0FFQStLO09BWUFFO09BTUE3RTtPQUNBOEU7T0FDQUM7T0FDQUM7T0FmQUo7T0FnQkFLO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7O0dDN3REYzs7SUFpbkNabmE7SUFDQUM7SUFsbkNZO0lBK0NDO0lBaWtDSCxhQUNWRCx1QkFDQUM7Ozs7RTs7Ozs7O0dDbG5DWTs7SUFrb0NaRDtJQUNBQztJQW5vQ1k7SUErQ0M7SUFrbENILGFBQ1ZELHVCQUNBQzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztZQy9uQ0ZtYSxnQkFBZ0J4YixLQUFJeWI7SUFDdEIsT0FBQSxtQ0FEa0J6YixXQUFJeWI7R0FFb0Q7WUFFcEVDO0lBRU4sdUJBQzZCQyxlQUN6QixXQXNkRkMsZUF2ZDJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU0wQjtPQUFBLGlDQUk3QjBCLHlCQVRHekI7SUFHTCxXQW91Q0UwQixrQkFudUM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhLGtCQUVBeUI7R0FNSjtZQUVDQztJQUdILElBQW9DRSxzQkFBOUJDO0lBQ0wsV0FLRUMsNkJBTkdELGFBQThCRDtHQUlsQztZQUVDRTtJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlIsaUNBQ3NCcGMsR0FBSyxPQUFMQSxFQUFNO09BQXRELFdBRDBCb2MsTUFDTSx1Q0FERlE7O1dBRUhDLGlCQUMzQixXQXdzQ0ZDLGlCQXpzQzZCRDttQkFFREUsaUJBQU0sV0FBTkE7O0dBQW9DO1lBRWhFQztJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BNFlwQ0MsZ0JBbFpHSjtLQUtnQyxPQXNUbkNLLG9CQTVUR0o7SUFHTCxXQU9FSyxxQkFaR0gsWUFDQUQ7R0FTSjtZQUVDSTtJQUVGLDhCQThHd0M7OztXQTdHVHJCLGVBQzNCLFdBd3JDRk0sU0FOQU0sa0JBbnJDNkJaOztXQUVHRSxpQkFDOUIsV0FvcUNGb0IsY0FycUNnQ3BCOztPQUl1QjtRQUZuQnFCO1FBQUpiO1FBQUpDO1FBRTJCLE9BeEJ2REcsZ0JBc0JvQ1M7UUFFYixPQUFBLDRCQW9MdkJDLG9CQXRMZ0NkO09BQzlCLFdBNnBDRmUsY0E5cEM0QmQ7O09BSWI7UUFEMENlO1FBQWhCQztRQUFSQztRQUMzQkMsV0FBUyw0QkF1SWZDLHFCQXhJaUNGO1FBRTNCRztVQUFpQjtrQ0F1SnZCQyxzQkF6SnlDTDtRQUduQ00sYUE2SU5DLG1CQWhKeURSO09BSXZELFdBSElHLFVBQ0FFLGtCQUNBRTs7T0FLQTtRQUg0QkU7UUFBSnRCOzttQkFJakIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXBDOUJnZCxnQkFtQ2tCSjtXQUNSLFdBbW9DVjBCLGVBcG9DY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDRCbUM7T0FDaEMsV0EvQkZyQixnQkE4QjhCRDs7T0FTc0I7UUFEbEJ3QjtRQUFKQztRQUNzQixPQUFBLDRCQXlKcERDLFdBMUprQ0Y7T0FDaEMsV0F2Q0Z2QixnQkFzQzhCd0I7O09BR29CO1FBRGxCRTtRQUFKQztRQUNzQixPQUFBLDRCQXVKbERGLFdBeEpnQ0M7T0FDOUIsV0F6Q0YxQixnQkF3QzRCMkI7O1dBRUNDO09BQzNCLFdBQTZCLDRCQTNDL0I1QixpQkEwQzZCNEI7O09BSU07UUFGR0M7UUFBSkM7UUFFQyxPQUFBLGlDQTlDbkM5QixpQkE0Q3NDNkI7T0FDcEMsV0E4cENGckMsU0FOQU0sa0JBenBDa0NnQzs7V0FHRUMsaUJBQUpDO09BQzlCO2VBRDhCQTtlQUVaLGlDQWpEcEJoQyxpQkErQ29DK0I7O09BVTlCO1FBUDZCRTtRQUFKQztRQU96QixPQUFBLGlDQXpETmxDLGlCQWtEbUNpQzs7bUJBR3RCamY7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0F2RHpDZ2QsZ0JBc0RrQko7V0FDUixXQW9wQ1ZKLFNBTkFNLGtCQS9vQ2NaO1VBQzhDO09BSjFELFlBQ0ksa0NBRnlCZ0Q7O09BVU47UUFGU0M7UUFBSkM7UUFFTCxPQStvQ3pCNUMsU0FOQU0sa0JBM29Da0NxQztPQUNoQyxZQTNERm5DLGdCQTBEOEJvQzs7T0FLeUI7UUFGZEM7UUFBSkM7UUFBSkM7UUFFc0IsT0EvRHZEdkMsZ0JBNkR5Q3FDO1FBRWhCLE9BNG9DekI3QyxTQU5BTSxrQkF4b0NxQ3dDO09BQ25DLFlBOURGdEMsZ0JBNkRpQ3VDOztXQUdKQztPQUMzQixZQUE2Qiw0QkFqRS9CeEMsaUJBZ0U2QndDOztPQUlnQjtRQUZGQztRQUFKQztRQUFKQztRQUVVLE9BQUEsaUNBcEU3QzNDLGlCQWtFMkN5QztRQUVsQixPQXBFekJ6QyxnQkFrRXVDMEM7T0FDckMsWUFuRUYxQyxnQkFrRW1DMkM7O09BSW9CLElBRGxCQyxpQkFBSkMsa0JBQ3NCLE9BdEV2RDdDLGdCQXFFcUM0QztPQUNuQyxZQXRFRjVDLGdCQXFFaUM2Qzs7T0FHbUIsSUFEbEJDLGtCQUFKQyxrQkFDc0IsT0F4RXBEL0MsZ0JBdUVrQzhDO09BQ2hDLFlBeEVGOUMsZ0JBdUU4QitDOztPQVF4QjtRQU5zQ0M7UUFBSkM7UUFBSkM7UUFBSkM7UUFBSkM7UUFNdEIsT0EvRU5wRCxnQkF5RTRDZ0Q7UUFLdEMsT0E0R05LLG9CQWpId0NKO1FBSWxDLE9BN0VOakQsZ0JBeUVvQ2tEO1FBRzlCLE9BNUVObEQsZ0JBeUVnQ21EO09BQzlCLFlBb0pGRyxhQXJKNEJGOztPQVE2QixJQURsQkcsa0JBQUpDLGtCQUNzQixPQWlPekRDLGVBbE91Q0Y7T0FDckMsWUFqRkZ2RCxnQkFnRm1Dd0Q7O09BSW9CO1FBRmhCRTtRQUFKQztRQUFKQztRQUV3QixPQThOdkRILGVBaE91Q0M7UUFFZCxPQUFBLGlDQThOekJELGdCQWhPbUNFO09BQ2pDLFlBbkZGM0QsZ0JBa0YrQjREOztPQUlvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FxbkNuRHRFLFNBekJBdUUsWUE3bENpQ0Y7T0FDL0IsWUF0RkY3RCxnQkFxRjZCOEQ7O1dBRUZFLGtCQUN6QixZQW1uQ0Z4RSxTQU5BTSxrQkE5bUMyQmtFOztPQUlFLElBRlVDLGtCQUFKQyxrQkFFTixPQTNGN0JsRSxnQkF5RnVDaUU7T0FDckMsWUFpbkNGekUsU0F6QkF1RSxZQXpsQ21DRzs7O1FBR0hDOzttQkFHcEJuaEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFc0IsT0FqR2xDZ2QsZ0JBZ0dpQko7V0FDUixXQTBtQ1RKLFNBekJBdUUsWUFsbENhN0U7VUFDd0M7T0FKbkQsWUFDRSxrQ0FGNEJpRjs7T0FXMUI7UUFKb0NDO1FBQUpDO1FBQUpDO1FBSTVCLE9BdkdOdEUsZ0JBbUcwQ29FO1FBR3BDLE9BOGZORyxpQkFqZ0JzQ0Y7T0FDcEM7ZUF1bUNGN0U7MEJBdG1Db0J4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZoQnNoQjs7OztPQU9FLElBRktFLGtCQUFKQyxrQkFFRCxPQTFHcEN6RSxnQkF3R3lDd0U7T0FDdkMsWUEyNUJGRSwyQkE1NUJxQ0Q7O1dBR1BFLGtCQUM1QixZQTVHRjNFLGdCQTJHOEIyRTs7V0FFRkMsa0JBQzFCLFlBOUdGNUUsZ0JBNkc0QjRFOztPQUlIO1FBRlFDO1FBQUpDO1FBRUosT0FBQSxpQ0FpTXpCckIsZ0JBbk1pQ29CO09BQy9CLFlBaEhGN0UsZ0JBK0c2QjhFOztXQUdDQyxrQkFDNUIsWUFxYUZDLHFCQXRhOEJEOztPQUlDLElBRktFLGtCQUFKQyxrQkFFRCxPQXRIL0JsRixnQkFvSG9DaUY7T0FDbEMsWUFzbENGekYsa0JBcmxDbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT2tpQjs7V0FHSkMsa0JBQzFCLFlBNGVGWixpQkE3ZTRCWTs7T0FHNkIsSUFEeEJDLGtCQUFKQyxrQkFDNEIsT0ExSHpEckYsZ0JBeUhpQ29GO09BQy9CLFlBc2RGRSxzQkF2ZDZCRDs7V0FFQUUsa0JBQzNCLFlBS0ZDLFdBTjZCRDttQkFFSUUsa0JBQy9CLFlBaXRCRkMsZUFsdEJpQ0Q7O0dBRXVDO1lBRXhFRDtJQUNIO0tBQXNEMVQ7S0FBeEJDO0tBQXhCQztLQUlzQixPQXRJekJnTyxnQkFrSW1EbE87S0FHMUIsT0FBQSw0QkFJekI2VCxpQkFQMkI1VDtJQUM3QixXQU1FNFQsZ0JBUEczVDtHQUtKO1lBRUMyVDtJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBUTBCLE9BcEo3Qi9GLGdCQThJRzZGO0tBSzBCLE9BMkU3QnZDLGFBakZHd0M7SUFJTDtZQTBqQ0V0RyxrQkF6akMwQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU43QytpQjs7O1lBR0FIO0dBT0o7WUFFQ0k7SUFFd0M7S0FHYTtNQUZqQm5hO01BQUg1SDtNQUFINEY7TUFFdUIsT0FpRXJEeVosYUFuRW9Delg7TUFFYixPQUFBLGlDQTdKdkJtVSxpQkEySmlDL2I7S0FDL0IsV0EyZ0NGcWQsZUE1Z0M4QnpYOztRQUdHN0c7SUFDL0IsV0E0aUNGd2Msa0JBNWlDa0R4YyxHQUFLLE9BQUxBLEVBQU0sR0FEdkJBO0dBQzJCO1lBRTVEZ2U7SUFFSCxJQUFvQ2lGLHdCQUE5QkM7SUFDTCxXQURLQSxZQVhIRix5QkFXaUNDO0dBSWxDO1lBRUM3RTtJQUVGLHVCQUNtQ25kLGNBQy9CLFdBN0tGK2IsZ0JBNEtpQy9iO0lBSWlCO0tBRkhrRztLQUFMNUc7S0FBUDRpQjtLQUVlLE9Bd09sRDlGLGdCQTFPK0NsVztJQUM3QyxXQUNHLDRCQWdCTHNYLFdBbEJtQzBFLFFBQU81aUI7R0FFbUM7WUFFN0UyZDtJQUVGLHVCQUNnQzNiLGNBQzVCLFdBNEhGa2UsZUE3SDhCbGU7SUFHNkIsSUFENUI2Z0IsZUFBSkMsZUFDZ0MsT0EwSDNENUMsZUEzSCtCMkM7SUFDN0IsV0FBMkIsaUNBMEg3QjNDLGdCQTNIMkI0QztHQUNrRDtZQUU3RWhELDJCQUVGLHFCQUVvRDtZQUVsRDVCO0lBQ0g7S0FHTW5FO0tBREFDO0tBREFDO0tBT3dCLE9Bek0zQndDLGdCQW9NRzFDO0tBSTBCLE9BQUEsaUNBeE03QjBDLGlCQW1NR3pDO0lBR0wsV0F3QkUrRixhQTVCRzlGO0dBUUo7WUFFQ2tEO0lBRUg7S0FLTTRGO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE9BOExuQ3JHLGdCQXRNR2tHO0tBT0Q7T0FBQSxpQ0F3RUZJLHVCQWhGR0g7S0FNMEIsT0F2TjdCeEcsZ0JBZ05HeUc7SUFLTCxXQVNFbkQsYUFmR29ELDRCQUlBSjtHQVNKO1lBRUNoRDtJQUNIO0tBSU1zRDtLQURBQztLQUdEQztLQUxDQztLQVVpQyxPQThLcEMxRyxnQkFyTEd1RztLQU1nQyxPQXdGbkN0RyxvQkEvRkd1RztJQUlMLFdBT0VHLGtCQVJFRixVQUxDQyxZQUtERDtHQU1IO1lBRUNFLGtCQUFrQnpqQjtJLDhCQUVZOzs7V0FDSDJiLGVBQ3pCLFdBMDlCRk0sa0JBMTlCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEdkJrYzs7T0FHc0I7UUFEZlU7UUFBSlI7UUFDbUIsT0F3OUJqREksa0JBeDlCK0R4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbkM0YztPQUNoQyxXQXJCRjBELGFBb0I4QmxFOztXQUVFUyxpQkFDOUIsV0FvOEJGVyxjQXI4QmdDWDs7T0FHcUIsSUFEaEJ3QixpQkFBSnRCLGlCQUNvQixPQWs4QnJEUyxjQW44QnFDYTtPQUNuQyxXQWs4QkZiLGNBbjhCaUNUOztXQUVKeUI7T0FDM0IsV0FBNkIsNEJBM0IvQjhCLGNBMEI2QjlCOztPQUt2QjtRQUhnQ0Q7UUFBSkk7O21CQUlyQjNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRThDLE9BbEMzRHNnQixhQWlDa0IxRDt5QkFDTzVjLEdBQUssT0EyOEI5QndjLGtCQTM4QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtXQUEzQyxXQUFDLGtDQURHa2M7VUFDNkQ7UUFIckUsT0FBQSx1Q0FIZ0NxQztPQUNwQyxXQWc5QkYvQixTQU5BTSxrQkEzOEJrQzZCOztXQVFFRCxpQkFBSkU7T0FDOUIsV0FEOEJBLE1BQ2lCLGlDQXJDakQwQixjQW9Db0M1Qjs7T0FTOUI7UUFQNkJHO1FBQUpDO1FBT3pCLE9BazZCTm1GLGlCQXo2Qm1DcEY7O21CQUd0QjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BM0N6Q3NnQixhQTBDa0IxRDtXQUNSLFdBazhCVkosU0FOQU0sa0JBNzdCY1o7VUFDMkM7T0FKdkQsV0FDSSxrQ0FGeUI0Qzs7V0FRRkU7T0FDM0IsV0FBNkIsNEJBL0MvQnNCLGNBOEM2QnRCOztPQUdpQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BakQ5Q29CLGFBZ0QrQnZCO09BQzdCLFdBakRGdUIsYUFnRDJCcEI7O09BRzJCLElBRGZELGlCQUFKRyxpQkFDbUIsT0FpQ3REcUIsZUFsQ3VDeEI7T0FDckMsWUFuREZxQixhQWtEbUNsQjs7V0FFUEcsa0JBQzFCLFlBdzdCRi9DLFNBTkFNLGtCQW43QjRCeUM7O1dBRUFDLGtCQUMxQixZQXZERmMsYUFzRDRCZDs7V0FFRUc7T0FDNUI7ZUFvN0JGbkQ7MEJBbjdCbUJ4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZuQjJmOztXQUdHRSxrQkFDL0IsWUE1REZTLGFBMkRpQ1Q7O09BRUUsT0F4VW5DOUQsZ0JBMFJrQnhiOztXQStDZXdmLGtCQUMvQixZQWtqQkYyQyxlQW5qQmlDM0M7O09BRzRCLElBRDVCWixpQkFBSmlCLGtCQUNnQyxPQWpFN0RFLGFBZ0VpQ25CO09BQy9CLFlBNDZCRjNDLFNBTkFNLGtCQXY2QjZCc0Q7OztZQUc3QnVEO0lBRUY7S0FNYztNQUxpRHRPO01BQTFCNk87TUFLdkIsT0FTWnpELGVBZDZEcEw7c0JBSTdCclYsR0FBSyxPQUFMQSxFQUFNO01BQXJCLHNCLE9BbTZCakJ3YztLQXI2Qkk7YUFFSSxrQ0FKMkIwSDs7O0lBV2xCO0tBSndCQztLQUFSQztLQUloQixPQUdqQjNELGVBUHlDMEQ7SUFFckMsV0FDVyxpQ0FJZjFELGdCQVBpQzJEO0dBSzVCO1lBRUwzRDtJQUVIO0tBSU00RDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQTBGcENuSCxnQkFoR0dnSDtLQUtnQyxPQUluQy9HLG9CQVZHZ0g7SUFHTCxXQVdFRyxvQkFoQkdELFlBQ0FEO0dBU0o7WUFFQ2pILG9CQUVDdGQ7SUFBSyxPQUFBLDRCQTg0Qk4wa0IsZUE5NEJDMWtCO0dBQTZCO1lBRTlCeWtCO0lBRUYsOEJBQ2dDOzs7V0FDSHZJLGVBQU0sV0FBTkE7O09BR2dCO1FBRkx1QjtRQUFKYjtRQUFKUjtRQUVhLE9BMUIzQ3FFLGVBd0JzQ2hEO1FBRWQsT0ExQnhCZ0QsZUF3QmtDN0Q7T0FDaEMsV0E0MUJGMEIsZUE3MUI4QmxDOztXQUdEUztPQUMzQixXQUE2Qiw0QkE1Qi9CNEQsZ0JBMkI2QjVEOztPQUlNO1FBRkF3QjtRQUFKdEI7UUFFSSxPQUFBLDRCQS9CbkMwRCxnQkE2Qm1DcEM7T0FDakMsV0EyM0JGN0IsU0FOQU0sa0JBdDNCK0JDOztPQUtLLElBRkR3QixpQkFBSkMsaUJBRUssT0F5MUJwQ3lGLGlCQTMxQm1DMUY7T0FDakMsV0FDRyw0QkF1RExvRyxtQkF6RCtCbkc7O09BS0k7UUFGREU7UUFBSkM7UUFFSyxPQUFBLDRCQXJDbkM4QixnQkFtQ2tDL0I7T0FDaEMsV0FxM0JGbEMsU0FOQU0sa0JBaDNCOEI2Qjs7T0FJcUI7UUFEakJFO1FBQUpEO1FBQ3FCLE9BazNCbkRwQyxrQkFsM0JpRXhjLEdBQUssT0FBTEEsRUFBTSxHQURyQzZlO09BQ2hDLFdBdkNGNEIsZUFzQzhCN0I7O09BTXhCO1FBSmtDUztRQUFKTjtRQUFKRDt3QkFJVjllLEdBQUssT0FBQSw0QkFvMUIzQitnQixZQXAxQnNCL2dCLEdBQTBCO1FBQTFDLE9BQUEsdUNBSmtDcWY7UUFHbEMsT0FnMUJONEUsaUJBbjFCb0NsRjtPQUNsQztlQUNJLDRCQXlCTjZGLGdCQTNCZ0M5Rjs7OztPQU9xQjtRQUZwQkc7UUFBSkQ7UUFFd0IsT0EvQ3JEeUIsZUE2Q2lDeEI7d0JBRWRqZixHQUFLLE9BMDJCeEJ3YyxrQkExMkJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7T0FEN0MsV0FDRyxrQ0FGd0JnZjs7V0FHRUUsaUJBQzdCLFdBT0YyRixrQkFSK0IzRjs7T0FJSSxJQUZGdEgsZUFBSndILGlCQUVNLE9BcERuQ3FCLGVBa0RpQzdJO09BQy9CLFlBczJCRjRFLFNBTkFNLGtCQWoyQjZCc0M7bUJBR0lHLGtCQUMvQixZQXVlRm1ELGVBeGVpQ25EOztHQUNxQjtZQUV0RHNGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQWhFbkN5Z0IsZUErRFk3RDtLQUNSLFdBeTFCSkosU0FOQU0sa0JBcDFCUVo7SUFDNkM7SUFIckQsV0FBQSxrQ0FGTVU7SUFDUixXQTYxQkVKLFNBTkFNLGtCQXgxQkVaO0dBTUk7WUFFTjBJO0lBRUg7S0FHTUU7S0FEQUM7S0FEQXhOO0tBT2dDLE9BeUJuQzhGLGdCQTlCR3lIO0lBRUwsV0FNRUUsb0JBVkd6TixXQUNBd047R0FPSjtZQUVDQztJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBckZqQ3VFLGdCQW1GZ0NoRDtLQUM5QixXQXEwQkZqQixTQXpCQXVFLFlBN3lCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0F2RkZxRSxlQXNGMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtJQUVMLFdBNndCRUUsdUJBanhCRzNOLFdBQ0EwTjtHQU9KO1lBRUM3SCxnQkFFQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTThCLE9BSWpDQyxhQVRHRjtJQUdMLFdBd3lCRTlJLGtCQXZ5QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCLGtCQUVBRjtHQU1KO1lBRUNHO0lBQ0Y7O1dBQ3lCdEosZUFBTSxXQU03QkMsZUFOdUJEOztXQUNBRSxpQkFBTSxXQTBSN0JxSixlQTFSdUJySjs7V0FDQVMsaUJBQU0sV0EzSDdCNEQsZUEySHVCNUQ7O09BRW9CO1FBRGZEO1FBQUpHO1FBQ21CLE9BQUEsaUNBL2EzQ0MsaUJBOGE0Qko7T0FDMUIsV0FqTkYwRCxhQWdOd0J2RDs7R0FDaUQ7WUFFekVaLGVBRUNuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O09BRVcsSUFEbEJqSixlQUFKVixlQUNzQixPQXpDbkRtQixnQkF3Q2lDVDtPQUMvQixXQWpjRkksZ0JBZ2M2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBeFB2QnNCLG9CQXNQa0NXO09BQ2hDLFdBaXZCRlYsY0FsdkI4QnZCOztXQUdHUyxpQkFDL0IsV0F3c0JGaUosdUJBenNCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkFzbEJ2QmdKLHVCQXhsQmlDeEg7T0FDL0IsV0E0dUJGWixjQTd1QjZCWjs7V0FHQ3lCLGlCQUM1QixXQThoQkZ3SCxvQkEvaEI4QnhIOztXQUVHRyxpQkFDL0IsV0E4Z0JGc0gsb0JBL2dCaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0F1ZEZtSCw2QkF4ZCtCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkE4Uko4Ryw2QkFoU2tDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQWxFRnlGLGVBaUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BeEV2RHhDLGdCQXVFc0NxQjtPQUNwQyxZQStXRmdFLGVBaFhrQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0F3Wk51bUIsbUJBelJBaEYsa0JBL0hDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0E0V053bUIsaUJBMVdBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BN0ZuQ3ZKLGdCQXdGR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGRGpLO1FBQUpWO1FBRUssT0FBQSw0QkEzTW5DdUUsZ0JBeU1rQzdEO09BQ2hDLFdBK3NCRkosU0FOQU0sa0JBMXNCOEJaOztXQUdFRSxpQkFDOUIsV0F5QkY0RixxQkExQmdDNUY7O09BTzFCO1FBTGlDNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtyQixPQTFCTjRKLGdCQXFCdUN4RztRQUlqQyxPQXRTTkssYUFrU21DN0M7UUFHN0IsT0FBQSxpQ0FuZ0JOVCxpQkFnZ0IrQnFCO09BQzdCLFdBc3FCRkMsZUF2cUIyQnpCOztPQVNyQjtRQUgyQjBCO1FBQUp4Qjs7bUJBSWhCL2M7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0E1Z0I5QmdkLGdCQTJnQmtCSjtXQUNSLFdBMnBCVjBCLGVBNXBCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDJCcUM7T0FDL0IsV0E1QkZrSSxnQkEyQjZCMUo7O09BVTBCO1FBRnBCc0M7UUFBSlg7UUFBSkY7UUFFNEIsT0FyQ3ZEaUksZ0JBbUNtQ3BIO1FBRVosT0FBQSw0QkFwVXZCM0Isb0JBa1UrQmdCO09BQzdCLFdBcXFCRmYsY0F0cUIyQmE7O09BSTZCLElBRGxCSyxpQkFBSkYsaUJBQ3NCLE9BK094RG1JLGdCQWhQc0NqSTtPQUNwQyxXQXZDRjRILGdCQXNDa0M5SDs7V0FFRkMsaUJBQzlCLFdBMlRGOEQsZUE1VGdDOUQ7O09BR3dCLElBRHhCRyxpQkFBSkQsaUJBQzRCLE9BM0N4RDJILGdCQTBDZ0MxSDtPQUM5QixXQXdYRmdJLHNCQXpYNEJqSTs7R0FDK0M7WUFFM0VrRDtJQUVIO0tBQW9DZ0Y7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyxrQkFOaUNGO0lBQ25DLFdBN1RFMUcsYUE0VEcyRztHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0FsSm5DaEssZ0JBNklHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7d0JBSVRsYyxHQUFLLE9BdXBCM0J3YyxrQkF2cEJ5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7UUFBNUMsT0FBQSx1Q0FKaUN5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQW9YRjJLLG1CQXJYK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9Bc2tCOUJvSSxrQkF2a0JhcEo7T0FEWCxlQXFwQkY3QixTQXpCQXVFLFlBM25CU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9Bc2dCOUJpSSxrQkF2Z0Jhbko7T0FEWCxlQWlwQkYvQixTQXpCQXVFLFlBdm5CU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQTlRekI4QixlQTZRYS9CO09BRFgsZUE1UUYrQixlQTZRUzdCOztXQUV5QkUsaUJBQ2hDLFdBbGtCRjlCLGdCQWlrQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0F5UUZ3RCxlQTFRZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBMVJGdUUsZUF5UjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQTlrQnpEWSxnQkE2a0JvQ0o7SUFDbEMsV0F1VkYySyxtQkF4VmdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9BZ1VOMm5CLGdCQTlTQXBHLGtCQWxCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVNnQyxPQXhNbkMxSyxnQkFpTUd3SztLQU0wQixPQUs3QnRHLGlCQVpHdUc7SUFJTDtZQSttQkV0TDt1QkE3bUJnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDK25COzs7WUFHQUg7R0FRSjtZQUVDckc7SUFFSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPaUMsT0F0TnBDN0ssZ0JBaU5HMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQmpNLGVBQzNCLFdBc2xCRk0sU0FOQU0sa0JBamxCNkJaOztXQUVJRSxpQkFDL0IsV0F0TUZELGVBcU1pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDMEUsaUJBb0JvQzNFO09BQ2xDLFdBY0Z3TCx1QkFmZ0N2TDs7T0FJcUIsSUFEbkJ3QixpQkFBSnRCLGlCQUN1QixPQXhCckR3RSxpQkF1QmtDbEQ7T0FDaEMsV0F4QkZrRCxpQkF1QjhCeEU7O1dBRUl5QixpQkFDaEMsV0ExQkYrQyxpQkF5QmtDL0M7O09BSVIsSUFGYUQsaUJBQUpJLGlCQUVULE9BYzFCMEosaUJBaEJ1QzlKO09BQ3JDLFdBNUJGZ0QsaUJBMkJtQzVDOztXQUdMQyxpQkFDNUIsV0Fub0JGNUIsZ0JBa29COEI0QjttQkFFR0UsaUJBQy9CLFdBME1GNEQsZUEzTWlDNUQ7O0dBQ3FCO1lBRXREc0o7SUFFRixZQUM0QjtJQUc2QixJQUYxQnhMLGVBQUpWLGVBRThCLE9BRXZEbU0saUJBSjZCekw7SUFDM0I7WUErakJGSjt1QkE5akJtQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBRnhCa2M7O0dBRWtEO1lBRTNFbU07SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQWpRcENuTCxnQkE0UEdpTDtJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQytCdk0sZUFDM0IsV0EyaUJGTSxTQU5BTSxrQkF0aUI2Qlo7O1dBRUlFLGlCQUMvQixXQW9DRnFKLGVBckNpQ3JKOztPQUlELElBRklRLGVBQUpDLGlCQUVBLE9BdEJoQ3dMLGlCQW9Cb0N6TDtPQUNsQyxXQTdCRndMLHVCQTRCZ0N2TDs7T0FLTjtRQUZPd0I7UUFBSnRCO1FBRUgsT0FBQSw0QkFRMUIyTCxzQkFWaUNySztPQUMvQixXQXhCRmdLLGlCQXVCNkJ0TDs7V0FHQ3lCLGlCQUM1QixXQXRFRitDLGlCQXFFOEIvQzs7V0FFR0csaUJBQy9CLFdBbUtGK0QsZUFwS2lDL0Q7O1dBRUpDLGlCQUMzQixXQTZoQkZwQyxTQU5BTSxrQkF4aEI2QjhCOztHQUNnQztZQUU3RDhKO0lBRUY7O09BR3FDLElBRkQ5TCxlQUFKVixlQUVLLE9BMFduQzZKLHNCQTVXa0NuSjtPQUNoQyxXQXVoQkZKLFNBTkFNLGtCQWxoQjhCWjs7T0FLSztRQUZDbUM7UUFBSmpDO1FBRUcsT0FtaEJuQ0ksU0FOQU0sa0JBL2dCb0N1QjtPQUNsQyxXQW9oQkY3QixTQU5BTSxrQkEvZ0JnQ1Y7O09BS0csSUFGRW1DLGlCQUFKMUIsaUJBRUUsT0E1Q25Dd0wsaUJBMENxQzlKO09BQ25DLFdBaWhCRi9CLFNBTkFNLGtCQTVnQmlDRDs7T0FLRSxJQUZPNkIsaUJBQUozQixpQkFFSCxPQS9DbkNzTCxpQkE2QzBDM0o7T0FDeEMsV0E4Z0JGbEMsU0FOQU0sa0JBemdCc0NDOztPQUtIO1FBRkk4QjtRQUFKTDtRQUVBLE9BOFZuQ3VILHNCQWhXdUNsSDtPQUNyQyxXQTJnQkZyQyxTQU5BTSxrQkF0Z0JtQzBCOztPQUtBO1FBRkdPO1FBQUpKO1FBRUMsT0F1Z0JuQ25DLFNBTkFNLGtCQW5nQnNDaUM7T0FDcEMsV0F3Z0JGdkMsU0FOQU0sa0JBbmdCa0M2Qjs7R0FFOEI7WUFFaEU4RyxlQUVDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7V0FDWDVNLGVBQzNCLFdBd2JGNEosdUJBemI2QjVKOztPQUlOO1FBRlVVO1FBQUpSO1FBRU4sT0FBQSw0QkFzVXZCMkosdUJBeFVpQ25KO09BQy9CLFdBNGRGZSxjQTdkNkJ2Qjs7V0FHSVM7T0FDL0IsV0FBaUMsNEJBb1VuQ2tKLHVCQXJVaUNsSjs7V0FFSEUsaUJBQzVCLFdBNFFGaUosb0JBN1E4QmpKOztXQUVHeUIsaUJBQy9CLFdBNFBGeUgsb0JBN1BpQ3pIOztXQUVIRyxpQkFDNUIsV0F5T0ZvSyx3QkExTzhCcEs7O1dBRUVDLGlCQUM5QixXQXVORm9LLHlCQXhOZ0NwSzs7V0FFQ0U7T0FDL0IsV0FBaUMsNEJBcU9uQ2lLLHlCQXRPaUNqSzs7V0FFRkUsaUJBQzdCLFdBbU1GbUgsNkJBcE0rQm5IOztXQUVLRSxpQkFDbEMsV0FpTUZpSCw2QkFsTW9Dakg7O1dBRVJFLGlCQUMxQixZQW1LRjJILHNCQXBLNEIzSDs7V0FFR0csa0JBQzdCLFlBMklGMEoseUJBNUkrQjFKOztXQUVGQztPQUMzQixZQUE2Qiw0QkFjL0IwSix3QkFmNkIxSjs7V0FFS0c7T0FDaEM7ZUFDRSw0QkFNSjBHLDZCQVJrQzFHOztXQUdERSxrQkFDL0IsWUF4VkZ1RixlQXVWaUN2Rjs7T0FHc0IsSUFEakJ4QixpQkFBSjBCLGtCQUNxQixPQTlWdkQxQyxnQkE2VnNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0MzQzs7R0FDd0M7WUFFMUVzRyw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BblhwQ2hNLGdCQThXRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkFqZW5DdUUsZ0JBK2RtQzdEO09BQ2pDLFdBeWJGSixTQU5BTSxrQkFwYitCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0F0ZXhCZ0QsZUFvZWtDcEM7T0FDaEMsV0FnWkZDLGVBalo4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWtIRndJLHNCQW5INkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0EvZUUvSSxlQThlR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQXhacEN4TSxnQkFtWkdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixPQTVnQlBxRSxlQXdnQnFCUjtRQUdkLE9Bc0RQOEosa0JBekRpQnRNO1FBRVYsT0FrVVBnSyxrQkFwVWE3SztPQURYLGVBa1pGSixTQXpCQXVFLFlBeFhTbEU7O09BTVA7UUFENEJFO1FBRVRpTixPQUZTak47UUFFYnNDLE9BRmF0QztRQUVqQnNCLE9BRmlCdEI7UUFFckJ5QixPQUZxQnpCO1FBTXZCLE9BbmhCUDBELGVBK2dCcUJ1SjtRQUdkLE9BK0NQRCxrQkFsRGlCMUs7UUFFVixPQStQUHFJLGtCQWpRYXJKO09BRFgsZUEyWUY3QixTQXpCQXVFLFlBalhTdkM7O09BTVA7UUFEZ0NHO1FBRXJCSixPQUZxQkk7UUFFekJDLE9BRnlCRDtRQUdULE9BdmhCekI4QixlQXNoQmFsQztPQURYLGVBcmhCRmtDLGVBc2hCUzdCOztXQUV3QkUsaUJBQy9CLFdBL2FGc0csZUE4YWlDdEc7bUJBRUFFLGlCQUMvQixXQUVGMEQsZUFIaUMxRDs7R0FDcUI7WUFFdEQwRCxlQUVDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BMWF6QndsQixhQXlhTTVJO0lBQ1IsV0F3WEVKLGtCQXhYYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBb0JnQyxNQXhkbkNsTixnQkF5Y0c2TTtLQWEwQixNQUFBLFdBcEI1QkQsSUFLRUc7S0FjMEIsT0E4VjdCNU4sa0JBOVYyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWY5Q3FxQjtrQkFTTXJxQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsT0F3UjNCNE4saUJBelJnQm5NO01BQ1IsV0E2UlJvTSxjQTlSWXJPO0tBRE4sV0F2akJOcUUsZUFzakJVdkU7SUFHdUM7SUFML0MsV0FBQSxrQ0FUQ29PO0lBTUwsV0FnQkVQLGtCQXZCR1EsNEJBSUFKO0dBaUJKO1lBRUNKLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQTlPQThCLGtCQTRPQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsTUFuZnJDdk4sZ0JBOGVHcU47SUFFTCxXQUNnQyxXQVA3QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQsc0JBRUMvbUI7SUFBSyxPQUVOMm5CO3NCQUYyQjNuQixHQUFLLE9BMlRoQ3djLFNBTkFNLGtCQXJUMkI5YyxHQUFnQyxHQUExREE7R0FBNkQ7WUFFOUQybkIsZ0JBS0NzQztJQUFKO0tBS01ZO0tBREFDO0tBREFDO0tBREFDO0tBU2tDLE1BMWdCckMzTixnQkFvZ0JHd047S0FJZ0MsTUFLbkN0RCxtQkFYR3dEO0lBSUwsV0FDaUMsV0FSOUJkLElBRUVlLGtCQUVBRjtHQVFKO1lBRUN2RCwwQkFDbUUscUJBRW5CO1lBRWhEcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRaUMsTUE5aEJwQy9OLGdCQXdoQkc2TjtLQUsyQixNQUFBLGlDQXRTOUI3QyxrQkFnU0c4QztJQUlMO1lBd1JFM08sa0JBdlI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2pDO0lBR0g7S0FJTXFDO0tBREFDO0tBREFDO0tBREFDO0tBUWdDLE1BOWlCbkNuTyxnQkF3aUJHaU87S0FLOEIsTUFzUWpDOU8sU0FOQU0sa0JBdFFHeU87SUFJTCxXQXdRRS9PLGtCQXZRMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOOUN3ckIscUJBR0FIO0dBT0o7WUFFQ3RDO0lBR0g7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBU2dDLE1BL2pCbkN2TyxnQkF3akJHcU87S0FNMEIsTUF2VTdCckQsaUJBZ1VHc0Q7SUFJTDtZQXdQRW5QO3VCQXRQZ0J4Yzs0QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHNDQUFMQTtjQUE4QjtjQVAzQzRyQjs7O1lBR0FIO0dBUUo7WUFFQ3hGO0lBRUg7S0FHTTRGO0tBREFDO0tBREFDO0tBUW1DLE1BOWtCdEMxTyxnQkF3a0JHd087SUFFTDtZQWtDRW5LLDJCQXRDR3FLO1lBQ0FEOztHQVFKO1lBRUM5RjtJQUVIO0tBTU1nRztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQXFCbUMsTUF6bUJ0Q2hQLGdCQXlsQkcyTztLQWNnQyxNQW1FbkN0RSxrQkFuRkd3RTtLQWVEO09BQUE7MEJBTUZ4Syw0QkF0Qkd5SztpQkFTTW5zQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUF3STNCNE4saUJBeklnQm5NO01BQ1IsVUE2SVJvTSxjQTlJWXJPO0tBRE4sV0F2c0JOcUUsZUFzc0JVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ2tRO0lBTUw7WUF3TkU1UCxTQU5BTSxrQkF6Tkd1UDs7OztZQUlBSjs7R0FrQko7WUFFQ3ZLO0lBR0g7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE1Bem5CcENwUCxnQkFtbkJHaVA7S0FJMkIsTUFLOUJJLCtCQVhHRjtJQUlMO1lBOExFaFEsa0JBN0w0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFK0M7S0FLekM7TUFKK0JqUDtNQUFKYjtNQUFKVjtNQUl2QixNQUFBLGlDQXp1Qk51RSxnQkFxdUJxQ2hEO01BRy9CLE1BMkVOa1AsMkJBOUVpQy9QO3FCQUViNWMsR0FBSyxPQWtMekJ3YyxrQkFsTHVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtLQUQ5QyxXQUNJLGlDQUZ1QmtjOztRQUtDRTtJQUM1QixXQThLRkksU0FOQU0sa0JBeks4QlY7R0FDZ0M7WUFFOUQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTRCa0MsTUF0cUJyQzlQLGdCQWdwQkd3UDtLQXFCZ0MsTUFBQSxpQ0Ezd0JuQ3BNLGdCQXF2QkdxTTtLQXFCK0IsTUFNbENwRixrQkE1QkdxRjtLQXFCNEIsTUFZL0JLLGVBbENHSjtpQkFrQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXZ3QjFCeWdCLGVBc3dCYzdEO0tBQ1IsV0F2d0JONkQsZUFzd0JVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBbEJDd1A7aUJBV01qdEI7S0FDSDtNQUFRNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFHT3FlLE9BRkZ6QjtNQUVGUixPQUZFUTtNQUdhLE1BZ0YzQjROLGlCQWpGZ0JuTTtNQUNSLFVBcUZSb00sY0F0RllyTztLQUROLFdBL3ZCTnFFLGVBOHZCVXZFO0lBR3VDO0lBTC9DLFVBQUEsaUNBWENnUjtJQVFMO1lBZ0tFMVEsa0JBL0o2Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVZoRG10Qjs7Ozs7OztZQU9BUDtHQXVCSjtZQUVDbEYseUJBQ2lFLHFCQUVmO1lBRWxEMEY7SUFDRTs7U0FFOEJsUjtLQUM5QixXQUFnQyw0QkFLbENtUiw4QkFOZ0NuUjs7UUFFREU7SUFDN0IsV0FBK0IsNEJBZ0NqQ2tSLHdCQWpDK0JsUjtHQUU2QjtZQUU1RGlSO0lBR0g7S0FNTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FjZ0MsTUExc0JuQ3ZRLGdCQWlzQkdrUTtLQU95QixNQUFBLGlDQTl5QjVCOU0sZ0JBcXlCR2dOO0tBUTBCLE1BTTdCZCwyQkFmR2U7aUJBUWExdEIsR0FBSyxPQTZHckJ3YyxrQkE3R21DeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtJQUExQyxVQUFBLGlDQVRDMnRCO0lBTUw7WUFnSEVuUixrQkEvRzJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUjlDNHRCOzs7O1lBSUFKOztHQVdKO1lBRUNiO0lBRTBDO1NBQ1p6UTtLQUM1QixXQUE4Qiw0QkF2ekJoQ3VFLGdCQXN6QjhCdkU7O1FBRUNFO0lBQzdCLFdBQStCLDRCQUVqQ2tSLHdCQUgrQmxSO0dBQ3NDO1lBRXJFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVdnQyxNQW51Qm5DNVEsZ0JBNHRCR3dRO0tBSzBCLE1BdjBCN0JwTixlQWcwQkdzTjtLQU02QixNQU1oQ3RHLGtCQWJHdUc7SUFLTDtZQXFGRXhSLGtCQXBGMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ2lFLHFCQUViO1lBRXBEK0Msd0JBQytELHFCQUVDO1lBRWhFQztJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSDs7R0FBMkI7WUFFMUQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVVpQyxNQW53QnBDalIsZ0JBNHZCRzhRO2lCQU15Q251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVAzQm91QjtLQU0yQixNQXYyQjlCM04sZUFnMkJHNE47SUFLTDtZQW9ERTdSLGtCQW5ENEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQL0NzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDL0k7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BajNCbER1RSxlQWczQjRCN0Q7S0FDMUIsV0F3Q0ZKLFNBekJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBbjNCRnFFLGVBazNCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDSCxJQUFNK1E7SUFDTCxPQURLQTs7O1FBRW1DM1IsS0FGbkMyUjtRQUUrQnJTLEtBRi9CcVM7dUJBR3FEdnVCLEdBQUssT0FBTEEsRUFBTTtPQUE1RCxXQURnQ2tjLElBQ00sc0NBREZVOztXQUVSUixPQUozQm1TLGdCQUlpQyxXQUFOblM7OztRQUNXcUIsS0FMdEM4UTtRQUtrQ2xRLE9BTGxDa1E7UUFLOEIxUixPQUw5QjBSO3VCQU93Q3Z1QixHQUFLLE9BQUxBLEVBQU07T0FEL0MsV0FEK0I2YyxNQUFJd0IsTUFFVixzQ0FGY1o7OztRQUdMYyxPQVJqQ2dRO1FBUTZCeFIsT0FSN0J3Ujt1QkFTbUR2dUIsR0FBSyxPQUFMQSxFQUFNO09BQTFELFdBRDhCK2MsTUFDTSxzQ0FERndCOztHQUM2QjtZQUVqRXpCO0lBQWdEOztXQUMvQlosZUFBTSxXQUFOQTs7V0FDR1UsZUFBSlI7T0FBVyxXQUYzQlUsaUJBRWdCVixPQUFJUTs7T0FFcUIsSUFEbkJ5QixpQkFBSnhCLGlCQUN1QixNQUp6Q0MsaUJBR3NCdUI7T0FDcEIsV0FKRnZCLGlCQUdrQkQ7O0dBQzJDO1lBRTdETCxTQUdDeU47SUFBSixJQUErQjFwQixnQkFBdEJZO0lBQ1IsV0FBeUIsV0FEdEI4b0IsSUFBSzlvQixNQUFzQlo7R0FDNkM7WUFFekVta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNOzs7O09BOXZDckQrYjtPQUlJRTtPQVFKSTtPQWNBRTtPQVNBSTtPQVVBSztPQWVBTztPQWtIQWlGO09BUUFHO09BZUFLO09BU0FoRjtPQVFBSTtPQVNBRjtPQVFBbUM7T0FNQTVCO09BWUFmO09Ba0JBNEM7T0FlQTBEO09Bb0RBTDtPQWlCQWxEO09BZUFuRDtPQUlBbUg7T0FxQ0FJO09BV0FEO09BYUFJO09BU0FMO09BYUF0SDtPQUlBK0g7T0FhQUk7T0FRQXJKO09BSUF1SjtPQVFBRztPQXFDQVM7T0FLQUY7T0FJQUs7T0FhQUk7T0FnQ0E3RTtPQVFBa0Y7T0FhQUk7T0EyQkFFO09BUUFsRjtPQUlBNEQ7T0FnQkEzRTtPQWFBNEc7T0FzQkFDO09BUUFDO09BYUFJO09Bb0JBQztPQXNCQWpEO09BSUFrRDtPQVFBRztPQXNDQXpDO09BS0E2QztPQUlBcEM7T0FhQXdDO09BZ0JBQztPQVFBRztPQWFBSTtPQTRCQXBIO09BTUE4RDtPQThCQXVEO09BS0FkO09BS0ExQztPQWlCQVE7T0FJQVk7T0FtQkFKO09BS0FwQjtPQWdCQTZDO09BZ0JBRDtPQWlCQTlDO09BY0FEO09BMkJBdEU7T0FnQkFnTDtPQVdBM0c7T0FtQ0EyQjtPQUtBMEY7T0FTQUM7T0FxQkFWO09BUUFXO09BaUJBN0Y7T0FLQStDO09BS0FDO09BTUEzRTtPQWlCQVg7T0FRQTdHO09BTUEyRjtPQUtBbEQ7T0FFQXBEO09BS0FIO09BWUFWO09BTUFOO09BTUFrSTs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7O1lDOXZDSXpJO0lBRU4sdUJBQzZCQyxlQUN6QixXQW9kRkMsZUFyZDJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU0wQjtPQUFBLGlDQUk3QjBCLHlCQVRHekI7SUFHTCxXQXF1Q0UwQixrQkFwdUM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhLGtCQUVBeUI7R0FNSjtZQUVDQztJQUdILElBQW9DRSxzQkFBOUJDO0lBQ0wsV0FLRUMsNkJBTkdELGFBQThCRDtHQUlsQztZQUVDRTtJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlIsaUNBQ3NCcGMsR0FBSyxPQUFMQSxFQUFNO09BQXRELFdBRDBCb2MsTUFDTSx1Q0FERlE7O1dBRUhDLGlCQUMzQixXQXlzQ0ZDLGlCQTFzQzZCRDttQkFFREUsaUJBQU0sV0FBTkE7O0dBQW9DO1lBRWhFQztJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BMFlwQ0MsZ0JBaFpHSjtLQUtnQyxPQW9UbkNLLG9CQTFUR0o7SUFHTCxXQU9FSyxxQkFaR0gsWUFDQUQ7R0FTSjtZQUVDSTtJQUVGLDhCQThHd0M7OztXQTdHVHJCLGVBQzNCLFdBeXJDRk0sU0FOQU0sa0JBcHJDNkJaOztXQUVHRSxpQkFDOUIsV0FrcUNGb0IsY0FucUNnQ3BCOztPQUl1QjtRQUZuQnFCO1FBQUpiO1FBQUpDO1FBRTJCLE9BeEJ2REcsZ0JBc0JvQ1M7UUFFYixPQUFBLDRCQW9MdkJDLG9CQXRMZ0NkO09BQzlCLFdBMnBDRmUsY0E1cEM0QmQ7O09BSWI7UUFEMENlO1FBQWhCQztRQUFSQztRQUMzQkMsV0FBUyw0QkF1SWZDLHFCQXhJaUNGO1FBRTNCRztVQUFpQjtrQ0F1SnZCQyxzQkF6SnlDTDtRQUduQ00sYUE2SU5DLG1CQWhKeURSO09BSXZELFdBSElHLFVBQ0FFLGtCQUNBRTs7T0FLQTtRQUg0QkU7UUFBSnRCOzttQkFJakIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXBDOUJnZCxnQkFtQ2tCSjtXQUNSLFdBaW9DVjBCLGVBbG9DY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDRCbUM7T0FDaEMsV0EvQkZyQixnQkE4QjhCRDs7T0FTc0I7UUFEbEJ3QjtRQUFKQztRQUNzQixPQUFBLDRCQXlKcERDLFdBMUprQ0Y7T0FDaEMsV0F2Q0Z2QixnQkFzQzhCd0I7O09BR29CO1FBRGxCRTtRQUFKQztRQUNzQixPQUFBLDRCQXVKbERGLFdBeEpnQ0M7T0FDOUIsV0F6Q0YxQixnQkF3QzRCMkI7O1dBRUNDO09BQzNCLFdBQTZCLDRCQTNDL0I1QixpQkEwQzZCNEI7O09BSU07UUFGR0M7UUFBSkM7UUFFQyxPQUFBLGlDQTlDbkM5QixpQkE0Q3NDNkI7T0FDcEMsV0ErcENGckMsU0FOQU0sa0JBMXBDa0NnQzs7V0FHRUMsaUJBQUpDO09BQzlCO2VBRDhCQTtlQUVaLGlDQWpEcEJoQyxpQkErQ29DK0I7O09BVTlCO1FBUDZCRTtRQUFKQztRQU96QixPQUFBLGlDQXpETmxDLGlCQWtEbUNpQzs7bUJBR3RCamY7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0F2RHpDZ2QsZ0JBc0RrQko7V0FDUixXQXFwQ1ZKLFNBTkFNLGtCQWhwQ2NaO1VBQzhDO09BSjFELFlBQ0ksa0NBRnlCZ0Q7O09BVU47UUFGU0M7UUFBSkM7UUFFTCxPQWdwQ3pCNUMsU0FOQU0sa0JBNW9Da0NxQztPQUNoQyxZQTNERm5DLGdCQTBEOEJvQzs7T0FLeUI7UUFGZEM7UUFBSkM7UUFBSkM7UUFFc0IsT0EvRHZEdkMsZ0JBNkR5Q3FDO1FBRWhCLE9BNm9DekI3QyxTQU5BTSxrQkF6b0NxQ3dDO09BQ25DLFlBOURGdEMsZ0JBNkRpQ3VDOztXQUdKQztPQUMzQixZQUE2Qiw0QkFqRS9CeEMsaUJBZ0U2QndDOztPQUlnQjtRQUZGQztRQUFKQztRQUFKQztRQUVVLE9BQUEsaUNBcEU3QzNDLGlCQWtFMkN5QztRQUVsQixPQXBFekJ6QyxnQkFrRXVDMEM7T0FDckMsWUFuRUYxQyxnQkFrRW1DMkM7O09BSW9CLElBRGxCQyxpQkFBSkMsa0JBQ3NCLE9BdEV2RDdDLGdCQXFFcUM0QztPQUNuQyxZQXRFRjVDLGdCQXFFaUM2Qzs7T0FHbUIsSUFEbEJDLGtCQUFKQyxrQkFDc0IsT0F4RXBEL0MsZ0JBdUVrQzhDO09BQ2hDLFlBeEVGOUMsZ0JBdUU4QitDOztPQVF4QjtRQU5zQ0M7UUFBSkM7UUFBSkM7UUFBSkM7UUFBSkM7UUFNdEIsT0EvRU5wRCxnQkF5RTRDZ0Q7UUFLdEMsT0E0R05LLG9CQWpId0NKO1FBSWxDLE9BN0VOakQsZ0JBeUVvQ2tEO1FBRzlCLE9BNUVObEQsZ0JBeUVnQ21EO09BQzlCLFlBb0pGRyxhQXJKNEJGOztPQVE2QixJQURsQkcsa0JBQUpDLGtCQUNzQixPQStOekRDLGVBaE91Q0Y7T0FDckMsWUFqRkZ2RCxnQkFnRm1Dd0Q7O09BSW9CO1FBRmhCRTtRQUFKQztRQUFKQztRQUV3QixPQTROdkRILGVBOU51Q0M7UUFFZCxPQUFBLGlDQTROekJELGdCQTlObUNFO09BQ2pDLFlBbkZGM0QsZ0JBa0YrQjREOztPQUlvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FzbkNuRHRFLFNBNUJBdUUsWUEzbENpQ0Y7T0FDL0IsWUF0RkY3RCxnQkFxRjZCOEQ7O1dBRUZFLGtCQUN6QixZQW9uQ0Z4RSxTQU5BTSxrQkEvbUMyQmtFOztPQUlFLElBRlVDLGtCQUFKQyxrQkFFTixPQTNGN0JsRSxnQkF5RnVDaUU7T0FDckMsWUFrbkNGekUsU0E1QkF1RSxZQXZsQ21DRzs7O1FBR0hDOzttQkFHcEJuaEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFc0IsT0FqR2xDZ2QsZ0JBZ0dpQko7V0FDUixXQTJtQ1RKLFNBNUJBdUUsWUFobENhN0U7VUFDd0M7T0FKbkQsWUFDRSxrQ0FGNEJpRjs7T0FXMUI7UUFKb0NDO1FBQUpDO1FBQUpDO1FBSTVCLE9BdkdOdEUsZ0JBbUcwQ29FO1FBR3BDLE9BNGZORyxpQkEvZnNDRjtPQUNwQztlQXdtQ0Y3RTswQkF2bUNvQnhjO2dDQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2tCQUF0QixPQUFBLHVDQUFMQTtpQkFBOEI7aUJBRmhCc2hCOzs7O09BT0UsSUFGS0Usa0JBQUpDLGtCQUVELE9BMUdwQ3pFLGdCQXdHeUN3RTtPQUN2QyxZQXk1QkZFLDJCQTE1QnFDRDs7V0FHUEUsa0JBQzVCLFlBNUdGM0UsZ0JBMkc4QjJFOztXQUVGQyxrQkFDMUIsWUE5R0Y1RSxnQkE2RzRCNEU7O09BSUg7UUFGUUM7UUFBSkM7UUFFSixPQUFBLGlDQStMekJyQixnQkFqTWlDb0I7T0FDL0IsWUFoSEY3RSxnQkErRzZCOEU7O1dBR0NDLGtCQUM1QixZQW1hRkMscUJBcGE4QkQ7O09BSUMsSUFGS0Usa0JBQUpDLGtCQUVELE9BdEgvQmxGLGdCQW9Ib0NpRjtPQUNsQyxZQXVsQ0Z6RixrQkF0bENtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZPa2lCOztXQUdKQyxrQkFDMUIsWUEwZUZaLGlCQTNlNEJZOztPQUc2QixJQUR4QkMsa0JBQUpDLGtCQUM0QixPQTFIekRyRixnQkF5SGlDb0Y7T0FDL0IsWUFvZEZFLHNCQXJkNkJEOztXQUVBRSxrQkFDM0IsWUFLRkMsV0FONkJEO21CQUVJRSxrQkFDL0IsWUErc0JGQyxlQWh0QmlDRDs7R0FFdUM7WUFFeEVEO0lBQ0g7S0FBc0QxVDtLQUF4QkM7S0FBeEJDO0tBSXNCLE9BdEl6QmdPLGdCQWtJbURsTztLQUcxQixPQUFBLDRCQUl6QjZULGlCQVAyQjVUO0lBQzdCLFdBTUU0VCxnQkFQRzNUO0dBS0o7WUFFQzJUO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMEIsT0FwSjdCL0YsZ0JBOElHNkY7S0FLMEIsT0EyRTdCdkMsYUFqRkd3QztJQUlMO1lBMmpDRXRHLGtCQTFqQzBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjdDK2lCOzs7WUFHQUg7R0FPSjtZQUVDSTtJQUV3QztLQUdhO01BRmpCbmE7TUFBSDVIO01BQUg0RjtNQUV1QixPQWlFckR5WixhQW5Fb0N6WDtNQUViLE9BQUEsaUNBN0p2Qm1VLGlCQTJKaUMvYjtLQUMvQixXQXlnQ0ZxZCxlQTFnQzhCelg7O1FBR0c3RztJQUMvQixXQTZpQ0Z3YyxrQkE3aUNrRHhjLEdBQUssT0FBTEEsRUFBTSxHQUR2QkE7R0FDMkI7WUFFNURnZTtJQUVILElBQW9DaUYsd0JBQTlCQztJQUNMLFdBREtBLFlBWEhGLHlCQVdpQ0M7R0FJbEM7WUFFQzdFO0lBRUYsdUJBQ21DbmQsY0FDL0IsV0E3S0YrYixnQkE0S2lDL2I7SUFJaUI7S0FGSGtHO0tBQUw1RztLQUFQNGlCO0tBRWUsT0FzT2xEOUYsZ0JBeE8rQ2xXO0lBQzdDLFdBQ0csNEJBZ0JMc1gsV0FsQm1DMEUsUUFBTzVpQjtHQUVtQztZQUU3RTJkO0lBRUYsdUJBQ2dDM2IsY0FDNUIsV0EwSEZrZSxlQTNIOEJsZTtJQUc2QixJQUQ1QjZnQixlQUFKQyxlQUNnQyxPQXdIM0Q1QyxlQXpIK0IyQztJQUM3QixXQUEyQixpQ0F3SDdCM0MsZ0JBekgyQjRDO0dBQ2tEO1lBRTdFaEQsMkJBRUYscUJBRW9EO1lBRWxENUI7SUFDSDtLQUdNbkU7S0FEQUM7S0FEQUM7S0FPd0IsT0F6TTNCd0MsZ0JBb01HMUM7S0FJMEIsT0FBQSxpQ0F4TTdCMEMsaUJBbU1HekM7SUFHTCxXQXdCRStGLGFBNUJHOUY7R0FRSjtZQUVDa0Q7SUFFSDtLQUtNNEY7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXZ0MsT0E0TG5DckcsZ0JBcE1Ha0c7S0FPRDtPQUFBLGlDQXNFRkksdUJBOUVHSDtLQU0wQixPQXZON0J4RyxnQkFnTkd5RztJQUtMLFdBU0VuRCxhQWZHb0QsNEJBSUFKO0dBU0o7WUFFQ2hEO0lBQ0g7S0FJTXNEO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BNktwQzFHLGdCQW5MR3VHO0tBS2dDLE9BdUZuQ3RHLG9CQTdGR3VHO0lBR0wsV0FPRUcsa0JBWkdELFlBQ0FEO0dBU0o7WUFFQ0U7SUFDbUUsOEJBQ3JDOzs7V0FDSDlILGVBQ3pCLFdBNDlCRk0sa0JBNTlCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEdkJrYzs7T0FHc0I7UUFEZlU7UUFBSlI7UUFDbUIsT0EwOUJqREksa0JBMTlCK0R4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbkM0YztPQUNoQyxXQXBCRjBELGFBbUI4QmxFOztXQUVFUyxpQkFDOUIsV0FtOEJGVyxjQXA4QmdDWDs7T0FHcUIsSUFEaEJ3QixpQkFBSnRCLGlCQUNvQixPQWk4QnJEUyxjQWw4QnFDYTtPQUNuQyxXQWk4QkZiLGNBbDhCaUNUOztXQUVKeUI7T0FDM0IsV0FBNkIsNEJBMUIvQjhCLGNBeUI2QjlCOztPQUt2QjtRQUhnQ0Q7UUFBSkk7O21CQUlyQjNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRThDLE9BakMzRHNnQixhQWdDa0IxRDt5QkFDTzVjLEdBQUssT0E2OEI5QndjLGtCQTc4QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtXQUEzQyxXQUFDLGtDQURHa2M7VUFDNkQ7UUFIckUsT0FBQSx1Q0FIZ0NxQztPQUNwQyxXQWs5QkYvQixTQU5BTSxrQkE3OEJrQzZCOztXQVFFRCxpQkFBSkU7T0FDOUIsV0FEOEJBLE1BQ2lCLGlDQXBDakQwQixjQW1Db0M1Qjs7T0FTOUI7UUFQNkJHO1FBQUpDO1FBT3pCLE9BaTZCTm1GLGlCQXg2Qm1DcEY7O21CQUd0QjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BMUN6Q3NnQixhQXlDa0IxRDtXQUNSLFdBbzhCVkosU0FOQU0sa0JBLzdCY1o7VUFDMkM7T0FKdkQsV0FDSSxrQ0FGeUI0Qzs7V0FRRkU7T0FDM0IsV0FBNkIsNEJBOUMvQnNCLGNBNkM2QnRCOztPQUdpQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BaEQ5Q29CLGFBK0MrQnZCO09BQzdCLFdBaERGdUIsYUErQzJCcEI7O09BRzJCLElBRGZELGlCQUFKRyxpQkFDbUIsT0FnQ3REcUIsZUFqQ3VDeEI7T0FDckMsWUFsREZxQixhQWlEbUNsQjs7V0FFUEcsa0JBQzFCLFlBMDdCRi9DLFNBTkFNLGtCQXI3QjRCeUM7O1dBRUFDLGtCQUMxQixZQXRERmMsYUFxRDRCZDs7V0FFRUc7T0FDNUI7ZUFzN0JGbkQ7MEJBcjdCbUJ4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZuQjJmOztXQUdHRSxrQkFDL0IsWUEzREZTLGFBMERpQ1Q7O1dBRUFFLGtCQUMvQixZQWtqQkYyQyxlQW5qQmlDM0M7O09BRzRCLElBRDVCWixpQkFBSmlCLGtCQUNnQyxPQS9EN0RFLGFBOERpQ25CO09BQy9CLFlBKzZCRjNDLFNBTkFNLGtCQTE2QjZCc0Q7O0dBQ2dEO1lBRTdFdUQ7SUFFRjtLQU1jO01BTGlEdE87TUFBMUI2TztNQUt2QixPQVNaekQsZUFkNkRwTDtzQkFJN0JyVixHQUFLLE9BQUxBLEVBQU07TUFBckIsc0IsT0FzNkJqQndjO0tBeDZCSTthQUVJLGtDQUoyQjBIOzs7SUFXbEI7S0FKd0JDO0tBQVJDO0tBSWhCLE9BR2pCM0QsZUFQeUMwRDtJQUVyQyxXQUNXLGlDQUlmMUQsZ0JBUGlDMkQ7R0FLNUI7WUFFTDNEO0lBRUg7S0FJTTREO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BMEZwQ25ILGdCQWhHR2dIO0tBS2dDLE9BSW5DL0csb0JBVkdnSDtJQUdMLFdBV0VHLG9CQWhCR0QsWUFDQUQ7R0FTSjtZQUVDakgsb0JBRUN0ZDtJQUFLLE9BQUEsNEJBaTVCTjBrQixlQWo1QkMxa0I7R0FBNkI7WUFFOUJ5a0I7SUFFRiw4QkFDZ0M7OztXQUNIdkksZUFBTSxXQUFOQTs7T0FHZ0I7UUFGTHVCO1FBQUpiO1FBQUpSO1FBRWEsT0ExQjNDcUUsZUF3QnNDaEQ7UUFFZCxPQTFCeEJnRCxlQXdCa0M3RDtPQUNoQyxXQTQxQkYwQixlQTcxQjhCbEM7O1dBR0RTO09BQzNCLFdBQTZCLDRCQTVCL0I0RCxnQkEyQjZCNUQ7O09BSU07UUFGQXdCO1FBQUp0QjtRQUVJLE9BQUEsNEJBL0JuQzBELGdCQTZCbUNwQztPQUNqQyxXQTgzQkY3QixTQU5BTSxrQkF6M0IrQkM7O09BS0ssSUFGRHdCLGlCQUFKQyxpQkFFSyxPQXkxQnBDeUYsaUJBMzFCbUMxRjtPQUNqQyxXQUNHLDRCQXVETG9HLG1CQXpEK0JuRzs7T0FLSTtRQUZERTtRQUFKQztRQUVLLE9BQUEsNEJBckNuQzhCLGdCQW1Da0MvQjtPQUNoQyxXQXczQkZsQyxTQU5BTSxrQkFuM0I4QjZCOztPQUlxQjtRQURqQkU7UUFBSkQ7UUFDcUIsT0FxM0JuRHBDLGtCQXIzQmlFeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJDNmU7T0FDaEMsV0F2Q0Y0QixlQXNDOEI3Qjs7T0FNeEI7UUFKa0NTO1FBQUpOO1FBQUpEO3dCQUlWOWUsR0FBSyxPQUFBLDRCQW8xQjNCK2dCLFlBcDFCc0IvZ0IsR0FBMEI7UUFBMUMsT0FBQSx1Q0FKa0NxZjtRQUdsQyxPQWcxQk40RSxpQkFuMUJvQ2xGO09BQ2xDO2VBQ0ksNEJBeUJONkYsZ0JBM0JnQzlGOzs7O09BT3FCO1FBRnBCRztRQUFKRDtRQUV3QixPQS9DckR5QixlQTZDaUN4Qjt3QkFFZGpmLEdBQUssT0E2MkJ4QndjLGtCQTcyQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZ3QmdmOztXQUdFRSxpQkFDN0IsV0FPRjJGLGtCQVIrQjNGOztPQUlJLElBRkZ0SCxlQUFKd0gsaUJBRU0sT0FwRG5DcUIsZUFrRGlDN0k7T0FDL0IsWUF5MkJGNEUsU0FOQU0sa0JBcDJCNkJzQzttQkFHSUcsa0JBQy9CLFlBdWVGbUQsZUF4ZWlDbkQ7O0dBQ3FCO1lBRXREc0Ysa0JBRUM3a0I7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGM7a0JBSU1BO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BaEVuQ3lnQixlQStEWTdEO0tBQ1IsV0E0MUJKSixTQU5BTSxrQkF2MUJRWjtJQUM2QztJQUhyRCxXQUFBLGtDQUZNVTtJQUNSLFdBZzJCRUosU0FOQU0sa0JBMzFCRVo7R0FNSTtZQUVOMEk7SUFFSDtLQUdNRTtLQURBQztLQURBeE47S0FPZ0MsT0F5Qm5DOEYsZ0JBOUJHeUg7SUFFTCxXQU1FRSxvQkFWR3pOLFdBQ0F3TjtHQU9KO1lBRUNDO0lBRUY7S0FHbUM7TUFGRHZIO01BQUpiO01BQUpWO01BRVMsT0FBQSw0QkFyRmpDdUUsZ0JBbUZnQ2hEO0tBQzlCLFdBdzBCRmpCLFNBNUJBdUUsWUE3eUJ3QjdFLEtBQUlVOztRQUdEUjtJQUN6QixXQXZGRnFFLGVBc0YyQnJFO0dBQ3FCO1lBRWhEdUk7SUFFSDtLQUdNTTtLQURBQztLQURBMU47S0FPZ0MsT0FHbkM2RixnQkFSRzRIO0lBRUwsV0E2d0JFRSx1QkFqeEJHM04sV0FDQTBOO0dBT0o7WUFFQzdILGdCQUVDcmQ7SUFBSyxPQUFBLDRCQUVOb2xCLGdCQUZDcGxCO0dBQThCO1lBRS9Cb2xCO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FNOEIsT0FJakNDLGFBVEdGO0lBR0wsV0EyeUJFOUksa0JBMXlCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FML0N1bEIsa0JBRUFGO0dBTUo7WUFFQ0c7SUFDRjs7V0FDeUJ0SixlQUFNLFdBTTdCQyxlQU51QkQ7O1dBQ0FFLGlCQUFNLFdBMFI3QnFKLGVBMVJ1QnJKOztXQUNBUyxpQkFBTSxXQTNIN0I0RCxlQTJIdUI1RDs7T0FFb0I7UUFEZkQ7UUFBSkc7UUFDbUIsT0FBQSxpQ0E3YTNDQyxpQkE0YTRCSjtPQUMxQixXQS9NRjBELGFBOE13QnZEOztHQUNpRDtZQUV6RVosZUFFQ25jO0lBQUssT0FBQSw0QkFFTjBsQixxQkFGQzFsQjtHQUFtQztZQUVwQzBsQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7T0FFVyxJQURsQmpKLGVBQUpWLGVBQ3NCLE9BekNuRG1CLGdCQXdDaUNUO09BQy9CLFdBL2JGSSxnQkE4YjZCZDs7T0FJTjtRQUZXbUM7UUFBSmpDO1FBRVAsT0FBQSw0QkF0UHZCc0Isb0JBb1BrQ1c7T0FDaEMsV0FpdkJGVixjQWx2QjhCdkI7O1dBR0dTLGlCQUMvQixXQXdzQkZpSix1QkF6c0JpQ2pKOztPQUlWO1FBRlUwQjtRQUFKeEI7UUFFTixPQUFBLDRCQXNsQnZCZ0osdUJBeGxCaUN4SDtPQUMvQixXQTR1QkZaLGNBN3VCNkJaOztXQUdDeUIsaUJBQzVCLFdBOGhCRndILG9CQS9oQjhCeEg7O1dBRUdHLGlCQUMvQixXQThnQkZzSCxvQkEvZ0JpQ3RIOztXQUVIQyxpQkFDNUIsV0FxSUZzSCxvQkF0SThCdEg7O1dBRUdFO09BQy9CLFdBQWlDLDRCQW1JbkNvSCxxQkFwSWlDcEg7O1dBRUZFLGlCQUM3QixXQXVkRm1ILDZCQXhkK0JuSDs7V0FFSEUsaUJBQzFCLFdBMkhGb0Qsc0JBNUg0QnBEOztXQUVDRTtPQUMzQixZQUE2Qiw0QkFnQi9CZ0gsd0JBakI2QmhIOztXQUVLRztPQUNoQztlQUNFLDRCQThSSjhHLDZCQWhTa0M5Rzs7V0FHSEMsa0JBQzdCLFlBTUY4Ryx5QkFQK0I5Rzs7V0FFRUcsa0JBQy9CLFlBbEVGeUYsZUFpRWlDekY7O09BR3NCLElBRGpCakIsaUJBQUptQixrQkFDcUIsT0F4RXZEeEMsZ0JBdUVzQ3FCO09BQ3BDLFlBK1dGZ0UsZUFoWGtDN0M7O0dBQ3dDO1lBRTFFeUcseUJBR0N0bUI7SUFBSyxPQXdaTnVtQixtQkF6UkFoRixrQkEvSEN2aEI7R0FBMEM7WUFFM0NvbUIsdUJBRUNwbUI7SUFBSyxPQTRXTndtQixpQkExV0FDLGlCQUZDem1CO0dBQXVDO1lBRXhDeW1CO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0E3Rm5DdkosZ0JBd0ZHcUo7SUFFTCxXQU1FRyxxQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUdxQztRQUZEaks7UUFBSlY7UUFFSyxPQUFBLDRCQTNNbkN1RSxnQkF5TWtDN0Q7T0FDaEMsV0FrdEJGSixTQU5BTSxrQkE3c0I4Qlo7O1dBR0VFLGlCQUM5QixXQXlCRjRGLHFCQTFCZ0M1Rjs7T0FPMUI7UUFMaUM2RDtRQUFKeEM7UUFBSlk7UUFBSnhCO1FBS3JCLE9BMUJONEosZ0JBcUJ1Q3hHO1FBSWpDLE9BcFNOSyxhQWdTbUM3QztRQUc3QixPQUFBLGlDQWpnQk5ULGlCQThmK0JxQjtPQUM3QixXQXNxQkZDLGVBdnFCMkJ6Qjs7T0FTckI7UUFIMkIwQjtRQUFKeEI7O21CQUloQi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BMWdCOUJnZCxnQkF5Z0JrQko7V0FDUixXQTJwQlYwQixlQTVwQmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUgyQnFDO09BQy9CLFdBNUJGa0ksZ0JBMkI2QjFKOztPQVUwQjtRQUZwQnNDO1FBQUpYO1FBQUpGO1FBRTRCLE9BckN2RGlJLGdCQW1DbUNwSDtRQUVaLE9BQUEsNEJBbFV2QjNCLG9CQWdVK0JnQjtPQUM3QixXQXFxQkZmLGNBdHFCMkJhOztPQUk2QixJQURsQkssaUJBQUpGLGlCQUNzQixPQStPeERtSSxnQkFoUHNDakk7T0FDcEMsV0F2Q0Y0SCxnQkFzQ2tDOUg7O1dBRUZDLGlCQUM5QixXQTJURjhELGVBNVRnQzlEOztPQUd3QixJQUR4QkcsaUJBQUpELGlCQUM0QixPQTNDeEQySCxnQkEwQ2dDMUg7T0FDOUIsV0F3WEZnSSxzQkF6WDRCakk7O0dBQytDO1lBRTNFa0Q7SUFFSDtLQUFvQ2dGO0tBQTlCQztLQUc4QixPQUFBLDRCQUdqQ0Msa0JBTmlDRjtJQUNuQyxXQTNURTFHLGFBMFRHMkc7R0FJSjtZQUVDQztJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BbEpuQ2hLLGdCQTZJRzhKO0lBRUwsV0FNRUcsc0JBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FLUTtRQUppQzdKO1FBQUpiO1FBQUpWO3dCQUlUbGMsR0FBSyxPQTBwQjNCd2Msa0JBMXBCeUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO1FBQTVDLE9BQUEsdUNBSmlDeWQ7UUFHakMsT0F4RU5nSixnQkFxRW1DN0o7T0FDakMsV0FvWEYySyxtQkFyWCtCckw7O09BTTdCO1FBRHdCRTtRQUVUaUQsT0FGU2pEO1FBRWJpQyxPQUZhakM7UUFFakJTLE9BRmlCVDtRQUcwQixPQWdCcERvTCxzQkFqQmlCbkk7UUFDYSxPQXNrQjlCb0ksa0JBdmtCYXBKO09BRFgsZUF3cEJGN0IsU0E1QkF1RSxZQTNuQlNsRTs7T0FHUDtRQUQyQkU7UUFFWjBDLE9BRlkxQztRQUVoQndCLE9BRmdCeEI7UUFFcEJ5QixPQUZvQnpCO1FBR3VCLE9BWXBEeUssc0JBYmlCL0g7UUFDYSxPQXNnQjlCaUksa0JBdmdCYW5KO09BRFgsZUFvcEJGL0IsU0E1QkF1RSxZQXZuQlN2Qzs7T0FHUDtRQUQrQkc7UUFFcEJELE9BRm9CQztRQUV4QkMsT0FGd0JEO1FBR1IsT0E5UXpCOEIsZUE2UWEvQjtPQURYLGVBNVFGK0IsZUE2UVM3Qjs7V0FFeUJFLGlCQUNoQyxXQWhrQkY5QixnQkErakJrQzhCOztXQUVGRSxpQkFDOUIsV0F4S0ZvRyxlQXVLZ0NwRzttQkFFQUUsaUJBQzlCLFdBeVFGd0QsZUExUWdDeEQ7O0dBQ3FCO1lBRXJEc0k7SUFFRix1QkFDZ0N0TCxlQUM1QixXQTFSRnVFLGVBeVI4QnZFO0lBRzJCLElBRHJCVSxlQUFKUixpQkFDeUIsT0E1a0J6RFksZ0JBMmtCb0NKO0lBQ2xDLFdBdVZGMkssbUJBeFZnQ25MO0dBQzRDO1lBRTVFa0csc0JBRUN0aUI7SUFBSyxPQWdVTjJuQixnQkE5U0FwRyxrQkFsQkN2aEI7R0FBdUM7WUFFeENrbUI7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FTZ0MsT0F4TW5DMUssZ0JBaU1Hd0s7S0FNMEIsT0FLN0J0RyxpQkFaR3VHO0lBSUw7WUFrbkJFdEw7dUJBaG5CZ0J4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQVAzQytuQjs7O1lBR0FIO0dBUUo7WUFFQ3JHO0lBRUg7S0FHTXlHO0tBREFDO0tBREFDO0tBT2lDLE9BdE5wQzdLLGdCQWlORzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0JqTSxlQUMzQixXQXlsQkZNLFNBTkFNLGtCQXBsQjZCWjs7V0FFSUUsaUJBQy9CLFdBdE1GRCxlQXFNaUNDOztPQUlELElBRklRLGVBQUpDLGlCQUVBLE9BdEJoQzBFLGlCQW9Cb0MzRTtPQUNsQyxXQWNGd0wsdUJBZmdDdkw7O09BSXFCLElBRG5Cd0IsaUJBQUp0QixpQkFDdUIsT0F4QnJEd0UsaUJBdUJrQ2xEO09BQ2hDLFdBeEJGa0QsaUJBdUI4QnhFOztXQUVJeUIsaUJBQ2hDLFdBMUJGK0MsaUJBeUJrQy9DOztPQUlSLElBRmFELGlCQUFKSSxpQkFFVCxPQWMxQjBKLGlCQWhCdUM5SjtPQUNyQyxXQTVCRmdELGlCQTJCbUM1Qzs7V0FHTEMsaUJBQzVCLFdBam9CRjVCLGdCQWdvQjhCNEI7bUJBRUdFLGlCQUMvQixXQTBNRjRELGVBM01pQzVEOztHQUNxQjtZQUV0RHNKO0lBRUYsWUFDNEI7SUFHNkIsSUFGMUJ4TCxlQUFKVixlQUU4QixPQUV2RG1NLGlCQUo2QnpMO0lBQzNCO1lBa2tCRko7dUJBamtCbUJ4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQUZ4QmtjOztHQUVrRDtZQUUzRW1NO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0FqUXBDbkwsZ0JBNFBHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQnZNLGVBQzNCLFdBOGlCRk0sU0FOQU0sa0JBemlCNkJaOztXQUVJRSxpQkFDL0IsV0FvQ0ZxSixlQXJDaUNySjs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEN3TCxpQkFvQm9Dekw7T0FDbEMsV0E3QkZ3TCx1QkE0QmdDdkw7O09BS047UUFGT3dCO1FBQUp0QjtRQUVILE9BQUEsNEJBUTFCMkwsc0JBVmlDcks7T0FDL0IsV0F4QkZnSyxpQkF1QjZCdEw7O1dBR0N5QixpQkFDNUIsV0F0RUYrQyxpQkFxRThCL0M7O1dBRUdHLGlCQUMvQixXQW1LRitELGVBcEtpQy9EOztXQUVKQyxpQkFDM0IsV0FnaUJGcEMsU0FOQU0sa0JBM2hCNkI4Qjs7R0FDZ0M7WUFFN0Q4SjtJQUVGOztPQUdxQyxJQUZEOUwsZUFBSlYsZUFFSyxPQTBXbkM2SixzQkE1V2tDbko7T0FDaEMsV0EwaEJGSixTQU5BTSxrQkFyaEI4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9Bc2hCbkNJLFNBTkFNLGtCQWxoQm9DdUI7T0FDbEMsV0F1aEJGN0IsU0FOQU0sa0JBbGhCZ0NWOztPQUtHLElBRkVtQyxpQkFBSjFCLGlCQUVFLE9BNUNuQ3dMLGlCQTBDcUM5SjtPQUNuQyxXQW9oQkYvQixTQU5BTSxrQkEvZ0JpQ0Q7O09BS0UsSUFGTzZCLGlCQUFKM0IsaUJBRUgsT0EvQ25Dc0wsaUJBNkMwQzNKO09BQ3hDLFdBaWhCRmxDLFNBTkFNLGtCQTVnQnNDQzs7T0FLSDtRQUZJOEI7UUFBSkw7UUFFQSxPQThWbkN1SCxzQkFoV3VDbEg7T0FDckMsV0E4Z0JGckMsU0FOQU0sa0JBemdCbUMwQjs7T0FLQTtRQUZHTztRQUFKSjtRQUVDLE9BMGdCbkNuQyxTQU5BTSxrQkF0Z0JzQ2lDO09BQ3BDLFdBMmdCRnZDLFNBTkFNLGtCQXRnQmtDNkI7O0dBRThCO1lBRWhFOEcsZUFFQ3psQjtJQUFLLE9BQUEsNEJBRU4yb0IscUJBRkMzb0I7R0FBbUM7WUFFcEMyb0I7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O1dBQ1g1TSxlQUMzQixXQXdiRjRKLHVCQXpiNkI1Sjs7T0FJTjtRQUZVVTtRQUFKUjtRQUVOLE9BQUEsNEJBc1V2QjJKLHVCQXhVaUNuSjtPQUMvQixXQTRkRmUsY0E3ZDZCdkI7O1dBR0lTO09BQy9CLFdBQWlDLDRCQW9VbkNrSix1QkFyVWlDbEo7O1dBRUhFLGlCQUM1QixXQTRRRmlKLG9CQTdROEJqSjs7V0FFR3lCLGlCQUMvQixXQTRQRnlILG9CQTdQaUN6SDs7V0FFSEcsaUJBQzVCLFdBeU9Gb0ssd0JBMU84QnBLOztXQUVFQyxpQkFDOUIsV0F1TkZvSyx5QkF4TmdDcEs7O1dBRUNFO09BQy9CLFdBQWlDLDRCQXFPbkNpSyx5QkF0T2lDaks7O1dBRUZFLGlCQUM3QixXQW1NRm1ILDZCQXBNK0JuSDs7V0FFS0UsaUJBQ2xDLFdBaU1GaUgsNkJBbE1vQ2pIOztXQUVSRSxpQkFDMUIsWUFtS0YySCxzQkFwSzRCM0g7O1dBRUdHLGtCQUM3QixZQTJJRjBKLHlCQTVJK0IxSjs7V0FFRkM7T0FDM0IsWUFBNkIsNEJBYy9CMEosd0JBZjZCMUo7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBTUowRyw2QkFSa0MxRzs7V0FHREUsa0JBQy9CLFlBeFZGdUYsZUF1VmlDdkY7O09BR3NCLElBRGpCeEIsaUJBQUowQixrQkFDcUIsT0E5VnZEMUMsZ0JBNlZzQ2dCO09BQ3BDLFlBeUZGcUUsZUExRmtDM0M7O0dBQ3dDO1lBRTFFc0csNEJBR0NybUI7SUFBSyxPQTBGTndtQixpQkFwRkFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FzRk53bUIsaUJBcEZBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUVIO0tBR01xQztLQURBQztLQURBQztLQU9pQyxPQW5YcENoTSxnQkE4V0c4TDtJQUVMLFdBTUVHLHFCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkExTTtRQUFKVjtRQUVJLE9BQUEsNEJBamVuQ3VFLGdCQStkbUM3RDtPQUNqQyxXQTRiRkosU0FOQU0sa0JBdmIrQlo7O1dBR0VFLGlCQUMvQixXQVNGbU4scUJBVmlDbk47O09BSVU7UUFGTHFCO1FBQUpZO1FBQUp4QjtRQUVhLE9BdkIzQ2lLLGdCQXFCc0NySjtRQUVkLE9BdGV4QmdELGVBb2VrQ3BDO09BQ2hDLFdBZ1pGQyxlQWpaOEJ6Qjs7V0FHR0UsaUJBQy9CLFdBcURGMkYsZUF0RGlDM0Y7O09BR3dCLElBRHhCd0IsaUJBQUpDLGlCQUM0QixPQTNCekRzSSxnQkEwQmlDdkk7T0FDL0IsV0FrSEZ3SSxzQkFuSDZCdkk7O0dBQytDO1lBRTVFK0s7SUFFSDtLQUFvQ0M7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyx1QkFOaUNGO0lBQ25DLFdBL2VFL0ksZUE4ZUdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0F4WnBDeE0sZ0JBbVpHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUUwQzs7V0FDWDVOLGVBQzdCLFdBdERGNEssZ0JBcUQrQjVLOztPQUc3QjtRQUR5QkU7UUFFTjZELEtBRk03RDtRQUVWcUIsS0FGVXJCO1FBRWRRLEtBRmNSO1FBRWxCUyxPQUZrQlQ7UUFNcEIsT0E1Z0JQcUUsZUF3Z0JxQlI7UUFHZCxPQXNEUDhKLGtCQXpEaUJ0TTtRQUVWLE9Ba1VQZ0ssa0JBcFVhN0s7T0FEWCxlQXFaRkosU0E1QkF1RSxZQXhYU2xFOztPQU1QO1FBRDRCRTtRQUVUaU4sT0FGU2pOO1FBRWJzQyxPQUZhdEM7UUFFakJzQixPQUZpQnRCO1FBRXJCeUIsT0FGcUJ6QjtRQU12QixPQW5oQlAwRCxlQStnQnFCdUo7UUFHZCxPQStDUEQsa0JBbERpQjFLO1FBRVYsT0ErUFBxSSxrQkFqUWFySjtPQURYLGVBOFlGN0IsU0E1QkF1RSxZQWpYU3ZDOztPQU1QO1FBRGdDRztRQUVyQkosT0FGcUJJO1FBRXpCQyxPQUZ5QkQ7UUFHVCxPQXZoQnpCOEIsZUFzaEJhbEM7T0FEWCxlQXJoQkZrQyxlQXNoQlM3Qjs7V0FFd0JFLGlCQUMvQixXQS9hRnNHLGVBOGFpQ3RHO21CQUVBRSxpQkFDL0IsV0FFRjBELGVBSGlDMUQ7O0dBQ3FCO1lBRXREMEQsZUFFQzFpQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixPQTFhekJ3bEIsYUF5YU01STtJQUNSLFdBMlhFSixrQkEzWGF4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NLLGlCQUtDeUQ7SUFBSjtLQU9NQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQW9CZ0MsTUF4ZG5DbE4sZ0JBeWNHNk07S0FhMEIsTUFBQSxXQXBCNUJELElBS0VHO0tBYzBCLE1BaVc3QjVOLGtCQWpXMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FmOUNxcUI7a0JBU01ycUI7S0FDSDtNQUFRNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFHT3FlLE9BRkZ6QjtNQUVGUixPQUZFUTtNQUdhLE9Bd1IzQjROLGlCQXpSZ0JuTTtNQUNSLFdBNlJSb00sY0E5UllyTztLQUROLFdBdmpCTnFFLGVBc2pCVXZFO0lBR3VDO0lBTC9DLFdBQUEsa0NBVENvTztJQU1MLFdBZ0JFUCxrQkF2QkdRLDJCQUlBSjtHQWlCSjtZQUVDSix5QkFDaUUscUJBRVg7WUFFdERkLHlCQUdDanBCO0lBQUssT0FFTnVtQixtQkE5T0E4QixrQkE0T0Nyb0I7R0FBMEM7WUFFM0N1bUIsbUJBS0MwRDtJQUFKO0tBSU1TO0tBREFDO0tBREFDO0tBT2tDLE1BbmZyQ3ZOLGdCQThlR3FOO0lBRUwsV0FDZ0MsV0FQN0JULElBRUVXLFlBQ0FEO0dBT0o7WUFFQzVELHNCQUVDL21CO0lBQUssT0FFTjJuQjtzQkFGMkIzbkIsR0FBSyxPQThUaEN3YyxTQU5BTSxrQkF4VDJCOWMsR0FBZ0MsR0FBMURBO0dBQTZEO1lBRTlEMm5CLGdCQUtDc0M7SUFBSjtLQUtNWTtLQURBQztLQURBQztLQURBQztLQVNrQyxNQTFnQnJDM04sZ0JBb2dCR3dOO0tBSWdDLE1BS25DdEQsbUJBWEd3RDtJQUlMLFdBQ2lDLFdBUjlCZCxJQUVFZSxrQkFFQUY7R0FRSjtZQUVDdkQsMEJBQ21FLHFCQUVuQjtZQUVoRHBCO0lBR0g7S0FJTThFO0tBREFDO0tBREFDO0tBREFDO0tBUWlDLE1BOWhCcEMvTixnQkF3aEJHNk47S0FLMkIsTUFBQSxpQ0F0UzlCN0Msa0JBZ1NHOEM7SUFJTDtZQTJSRTNPLGtCQTFSNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0NvckI7OztZQUdBSDtHQU9KO1lBRUNqQztJQUdIO0tBSU1xQztLQURBQztLQURBQztLQURBQztLQVFnQyxNQTlpQm5Dbk8sZ0JBd2lCR2lPO0tBSzhCLE1BeVFqQzlPLFNBTkFNLGtCQXpRR3lPO0lBSUwsV0EyUUUvTyxrQkExUTJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjlDd3JCLHFCQUdBSDtHQU9KO1lBRUN0QztJQUdIO0tBSU0wQztLQURBQztLQURBQztLQURBQztLQVNnQyxNQS9qQm5Ddk8sZ0JBd2pCR3FPO0tBTTBCLE1BdlU3QnJELGlCQWdVR3NEO0lBSUw7WUEyUEVuUDt1QkF6UGdCeGM7NEJBQXFCQSxHQUFLLE9BQUxBLEVBQU07ZUFBdEIsT0FBQSxzQ0FBTEE7Y0FBOEI7Y0FQM0M0ckI7OztZQUdBSDtHQVFKO1lBRUN4RjtJQUVIO0tBR000RjtLQURBQztLQURBQztLQVFtQyxNQTlrQnRDMU8sZ0JBd2tCR3dPO0lBRUw7WUFrQ0VuSywyQkF0Q0dxSztZQUNBRDs7R0FRSjtZQUVDOUY7SUFFSDtLQU1NZ0c7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FxQm1DLE1Bem1CdENoUCxnQkF5bEJHMk87S0FjZ0MsTUFtRW5DdEUsa0JBbkZHd0U7S0FlRDtPQUFBOzBCQU1GeEssNEJBdEJHeUs7aUJBU01uc0I7S0FDSDtNQUFRNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFHT3FlLE9BRkZ6QjtNQUVGUixPQUZFUTtNQUdhLE1Bd0kzQjROLGlCQXpJZ0JuTTtNQUNSLFVBNklSb00sY0E5SVlyTztLQUROLFdBdnNCTnFFLGVBc3NCVXZFO0lBR3VDO0lBTC9DLFVBQUEsaUNBVENrUTtJQU1MO1lBMk5FNVAsU0FOQU0sa0JBNU5HdVA7Ozs7WUFJQUo7O0dBa0JKO1lBRUN2SztJQUdIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVNpQyxNQXpuQnBDcFAsZ0JBbW5CR2lQO0tBSTJCLE1BSzlCSSwrQkFYR0Y7SUFJTDtZQWlNRWhRLGtCQWhNNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0N5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRStDO0tBS3pDO01BSitCalA7TUFBSmI7TUFBSlY7TUFJdkIsTUFBQSxpQ0F6dUJOdUUsZ0JBcXVCcUNoRDtNQUcvQixNQTJFTmtQLDJCQTlFaUMvUDtxQkFFYjVjLEdBQUssT0FxTHpCd2Msa0JBckx1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7S0FEOUMsV0FDSSxpQ0FGdUJrYzs7UUFLQ0U7SUFDNUIsV0FpTEZJLFNBTkFNLGtCQTVLOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0E0QmtDLE1BdHFCckM5UCxnQkFncEJHd1A7S0FxQmdDLE1BQUEsaUNBM3dCbkNwTSxnQkFxdkJHcU07S0FxQitCLE1BTWxDcEYsa0JBNUJHcUY7S0FxQjRCLE1BWS9CSyxlQWxDR0o7aUJBa0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUF2d0IxQnlnQixlQXN3QmM3RDtLQUNSLFdBdndCTjZELGVBc3dCVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWxCQ3dQO2lCQVdNanRCO0tBQ0g7TUFBUTRjLEtBREw1YztNQUNDa2MsS0FERGxjO01BR09xZSxPQUZGekI7TUFFRlIsT0FGRVE7TUFHYSxNQWdGM0I0TixpQkFqRmdCbk07TUFDUixVQXFGUm9NLGNBdEZZck87S0FETixXQS92Qk5xRSxlQTh2QlV2RTtJQUd1QztJQUwvQyxVQUFBLGlDQVhDZ1I7SUFRTDtZQW1LRTFRLGtCQWxLNkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FWaERtdEI7Ozs7Ozs7WUFPQVA7R0F1Qko7WUFFQ2xGLHlCQUNpRSxxQkFFZjtZQUVsRDBGO0lBQ0U7O1NBRThCbFI7S0FDOUIsV0FBZ0MsNEJBS2xDbVIsOEJBTmdDblI7O1FBRURFO0lBQzdCLFdBQStCLDRCQWdDakNrUix3QkFqQytCbFI7R0FFNkI7WUFFNURpUjtJQUdIO0tBTU1FO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBY2dDLE1BMXNCbkN2USxnQkFpc0JHa1E7S0FPeUIsTUFBQSxpQ0E5eUI1QjlNLGdCQXF5QkdnTjtLQVEwQixNQU03QmQsMkJBZkdlO2lCQVFhMXRCLEdBQUssT0FnSHJCd2Msa0JBaEhtQ3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7SUFBMUMsVUFBQSxpQ0FUQzJ0QjtJQU1MO1lBbUhFblIsa0JBbEgyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVI5QzR0Qjs7OztZQUlBSjs7R0FXSjtZQUVDYjtJQUUwQztTQUNaelE7S0FDNUIsV0FBOEIsNEJBdnpCaEN1RSxnQkFzekI4QnZFOztRQUVDRTtJQUM3QixXQUErQiw0QkFFakNrUix3QkFIK0JsUjtHQUNzQztZQUVyRWtSO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXZ0MsTUFudUJuQzVRLGdCQTR0Qkd3UTtLQUswQixNQXYwQjdCcE4sZUFnMEJHc047S0FNNkIsTUFNaEN0RyxrQkFiR3VHO0lBS0w7WUF3RkV4UixrQkF2RjJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDlDaXVCOzs7WUFHQUg7O0dBU0o7WUFFQ3JHLHlCQUNpRSxxQkFFYjtZQUVwRCtDLHdCQUMrRCxxQkFFQztZQUVoRUM7SUFDRixzQkFDZ0MsaUJBQ0ksa0JBQ0g7O0dBQTJCO1lBRTFEM0U7SUFFSDtLQUtNb0k7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FVaUMsTUFud0JwQ2pSLGdCQTR2Qkc4UTtpQkFNeUNudUIsR0FBSyxPQUFMQSxFQUFNO0lBQXBCO0tBQUEsTUFBQSxpQ0FQM0JvdUI7S0FNMkIsTUF2MkI5QjNOLGVBZzJCRzROO0lBS0w7WUF1REU3UixrQkF0RDRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUC9Dc3VCOzs7O1lBSUFKO0dBUUo7WUFFQy9JO0lBRUY7S0FFb0QsSUFEdEJ2SSxlQUFKVixlQUMwQixNQWozQmxEdUUsZUFnM0I0QjdEO0tBQzFCLFdBMkNGSixTQTVCQXVFLFlBaEJ3QjdFOztRQUVHRTtJQUN6QixXQW4zQkZxRSxlQWszQjJCckU7R0FDcUI7WUFFaERrQztJQUNGLDhCQUM4QjsyQkFDRnBDLGVBQU0sV0FBTkE7UUFDQUU7SUFBTSxXQUFOQTtHQUFrQztZQUU1RDZILHdCQUMrRCxxQkFFakI7WUFFOUNsRCxXQUFvRS9nQixHQUFLLE9BQUxBLEVBQU07WUFFMUUyZCxxQkFDRixxQkFFMEQ7WUFFeERILGNBQ0M3YTtJQUNILE9BREdBOzs7UUFHdUNpYSxLQUh2Q2phO1FBR21DdVosS0FIbkN2Wjt1QkFJeUQzQyxHQUFLLE9BQUxBLEVBQU07UUFIOUR1dUIsa0JBRWtDclMsSUFDTSxzQ0FERlU7OztXQUVSUixPQUwvQnpaLE1BQ0M0ckIsa0JBSThCblM7OztRQUNXcUIsS0FOMUM5YTtRQU1zQzBiLE9BTnRDMWI7UUFNa0NrYSxPQU5sQ2xhO3VCQVE0QzNDLEdBQUssT0FBTEEsRUFBTTtRQVBqRHV1QjtjQUtpQzFSLE1BQUl3QixNQUVWLHNDQUZjWjs7OztRQUdMYyxPQVRyQzViO1FBU2lDb2EsT0FUakNwYTt1QkFVdUQzQyxHQUFLLE9BQUxBLEVBQU07UUFUNUR1dUIsa0JBUWdDeFIsTUFDTSxzQ0FERndCOztJQUd4QyxXQVhJZ1E7R0FXdUM7WUFFekN6UjtJQUFnRDs7V0FDL0JaLGVBQU0sV0FBTkE7O1dBQ0dVLGVBQUpSO09BQVcsV0FGM0JVLGlCQUVnQlYsT0FBSVE7O09BRXFCLElBRG5CeUIsaUJBQUp4QixpQkFDdUIsTUFKekNDLGlCQUdzQnVCO09BQ3BCLFdBSkZ2QixpQkFHa0JEOztHQUMyQztZQUU3REwsU0FHQ3lOO0lBQUosSUFBK0IxcEIsZ0JBQXRCWTtJQUNSLFdBQXlCLFdBRHRCOG9CLElBQUs5b0IsTUFBc0JaO0dBQzZDO1lBRXpFbWtCLGNBQStDMWtCLEdBQUssT0FBTEEsRUFBTTs7OztPQTN2Q2pEaWM7T0FRSkk7T0FjQUU7T0FTQUk7T0FVQUs7T0FlQU87T0FrSEFpRjtPQVFBRztPQWVBSztPQVNBaEY7T0FRQUk7T0FTQUY7T0FRQW1DO09BTUE1QjtPQVlBZjtPQWtCQTRDO09BY0EwRDtPQW1EQUw7T0FpQkFsRDtPQWVBbkQ7T0FJQW1IO09BcUNBSTtPQVdBRDtPQWFBSTtPQVNBTDtPQWFBdEg7T0FJQStIO09BYUFJO09BUUFySjtPQUlBdUo7T0FRQUc7T0FxQ0FTO09BS0FGO09BSUFLO09BYUFJO09BZ0NBN0U7T0FRQWtGO09BYUFJO09BMkJBRTtPQVFBbEY7T0FJQTREO09BZ0JBM0U7T0FhQTRHO09Bc0JBQztPQVFBQztPQWFBSTtPQW9CQUM7T0FzQkFqRDtPQUlBa0Q7T0FRQUc7T0FzQ0F6QztPQUtBNkM7T0FJQXBDO09BYUF3QztPQWdCQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQU1BOEQ7T0E4QkF1RDtPQUtBZDtPQUtBMUM7T0FpQkFRO09BSUFZO09BbUJBSjtPQUtBcEI7T0FnQkE2QztPQWdCQUQ7T0FpQkE5QztPQWNBRDtPQTJCQXRFO09BZ0JBZ0w7T0FXQTNHO09BbUNBMkI7T0FLQTBGO09BU0FDO09BcUJBVjtPQVFBVztPQWlCQTdGO09BS0ErQztPQUtBQztPQU1BM0U7T0FpQkFYO09BUUE3RztPQU1BMkY7T0FLQWxEO09BRUFwRDtPQUtBSDtPQWVBVjtPQU1BTjtPQU1Ba0k7Ozs7RTs7Ozs7O0dDL3ZDYzs7SUErakNaL2lCO0lBQ0FDO0lBaGtDWTtJQStDQztJQStnQ0gsYUFDVkQsdUJBQ0FDOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzVqQ0ZtYSxnQkFBZ0J4YixLQUFJeWI7SUFDdEIsT0FBQSxtQ0FEa0J6YixXQUFJeWI7R0FFb0Q7WUFFeEV3UyxjQUFjNXVCO0lBQ2hCLGVBRGdCQTtHQUtmO1lBRUs2dUIsZ0JBQWdCN2pCLE1BQUsvSTtJQUMzQixXQURzQitJLGdCQUFLL0k7OztpRUFJMEIsT0FKL0IrSTs7Ozs7Ozs7K0NBSytCLE9BTDFCL0k7Ozs7O1lBUWQ2c0IsMkJBQUFBOzs7Ozs7OztVQUFnQ3phO1VBQUowYTtVQURacHVCO2lCQVBQcUs7aUJBQUFBO2lCQUFBQTtpQkFRVDhqQjtpQkFBQUE7aUJBQUFBO1NBRVQ7OzJCQUh5Qm51Qjs7OzRCQUNZb3VCLFFBUm5DRixnQkFRdUN4YSxJQVJsQnBTOzs7Ozs7Ozs7Ozs7SUFxQnBCLE9BQUE7R0FBbUQ7WUFFeEQrc0IsOEJBQThCdFc7SUFDaEMsSUFDSS9YLE1BRjRCK1gsU0FHaEMsT0FIZ0NBOzs7Ozs7T0FNMUI7UUFGa0J1VztRQUFUQztRQUNQQzs7K0NBSEp4dUI7MkJBRjRCK1gsVUFFNUIvWDtXQUFBQTtRQVdJeXVCLFNBcENGUCxnQkEyQlNLLFNBQVNEO09BVXBCO2VBRElHO2VBQUFBO2VBQUFBO21CQVJBRCxnQkFMd0J6Vzs7OztJQWV6QixPQWZ5QkE7R0FlckI7WUFFVDJXLDJCQUEyQkM7O0tBRTNCLElBQWtCNVcsaUJBQVo2Vyx1QkFDSixPQURJQTs7TUFHQSxXQUhBQSxZQW5CTlAsOEJBbUJrQnRXO0tBSVQsV0FKSDZXLFlBQVk3VztJQUlVO0lBTDlCLE9BQUEsa0NBRDZCNFc7R0FPckI7WUFFTkUsNEJBQTRCbGY7SUFDOUI7YUFEOEJBO2dCQUFBQTs7VUFLeEJtZix1QkFBQUE7O1dBR1EvVyx1QkFBQUE7Ozs7UUFHTztTQUgrQ25SO1NBQTFCK25CO1NBR2xDSSxhQXBCTkwsMkJBaUJ3Q0M7U0FJbENLLG9CQURBRCxnQkFITWhYLFNBQUFBLFNBQUFBO1FBS1YsdUJBRElpWCxVQUo0RHBvQixhQUg5RGtvQjs7Ozs7SUFTQyxPQWR1Qm5mO0dBY2hCO1lBRVIrTDtJQUVOLHVCQUM2QkMsZUFDekIsV0F3Z0JGQyxlQXpnQjJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU0wQjtPQUFBLGlDQUk3QjBCLHlCQVRHekI7SUFHTCxXQXF4Q0UwQixrQkFweEM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhLGtCQUVBeUI7R0FNSjtZQUVDQztJQUdILElBQW9DRSxzQkFBOUJDO0lBQ0wsV0FLRUMsNkJBTkdELGFBQThCRDtHQUlsQztZQUVDRTtJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlIsaUNBQ3NCcGMsR0FBSyxPQUFMQSxFQUFNO09BQXRELFdBRDBCb2MsTUFDTSx1Q0FERlE7O1dBRUhDLGlCQUMzQixXQXl2Q0ZDLGlCQTF2QzZCRDttQkFFREUsaUJBQU0sV0FBTkE7O0dBQW9DO1lBRWhFQztJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BMGJwQ0MsZ0JBaGNHSjtLQUtnQyxPQXFXbkNLLG9CQTNXR0o7SUFHTCxXQU9FSyxxQkFaR0gsWUFDQUQ7R0FTSjtZQUVDSTtJQUVGLDhCQWlNd0M7OztXQWhNVHJCLGVBQzNCLFdBeXVDRk0sU0FOQU0sa0JBcHVDNkJaOztXQUVHRSxpQkFDOUIsV0FzdENGb0IsY0F2dENnQ3BCOztPQUl1QjtRQUZuQnFCO1FBQUpiO1FBQUpDO1FBRTJCLE9BeEJ2REcsZ0JBc0JvQ1M7UUFFYixPQUFBLDRCQXFPdkJDLG9CQXZPZ0NkO09BQzlCLFdBK3NDRmUsY0FodEM0QmQ7O1dBRzBCL04saUJBQWIwZ0Isd0JBQVIxUjtPQUMvQixTQURvRGhQO1FBR3pCLElBQVJ3SixPQUhpQ3hKLFNBR3pCLE9BQVJ3Sjs7OztVQU1FO1dBQVBtWCxPQW5KaEJqQjtXQW9KZ0JrQixTQW5DaEIxUyxnQkE0QnFCMUU7c0JBT0xvWCxXQUFBQSxXQUFBQSxlQURBRCxNQUNBQzs7O29CQW5DaEIxUyxnQkE0QnFCMUU7O1lBRmYwVzs7O1FBa0JzQjtTQU5PN2EsUUFibUJyRjtTQWF4QnZPLE1BYndCdU87U0FhL0JxVSxRQWIrQnJVO1NBbUIxQixPQTBaNUJ1TyxnQkFoYW1DbEo7U0FaN0I2YTs7Z0JBZXNDLDRCQXdNNUN2USxXQTNNdUIwRTtZQUFPNWlCOzs7T0FTNUIsR0F0QnVDaXZCO29CQUFBQTs7O1VBeUJqQjdzQjtpQkF4QmxCcXNCOzBCQUFBQSxRQXVVTnZPLGVBL1N3QjlkOztTQVNQO1VBRFErRztVQUFKQztVQUNUZ21CLE9BQUssaUNBc1NqQmxQLGdCQXZTcUI5VztpQkFoQ2ZxbEI7MEJBQUFBLFFBaUNNVyxNQXNTWmxQLGVBdlN5Qi9XO1lBWG5Ca21COzs7WUFBQUEsU0FyQkFaO09BMkNGOzttQkFDT2EsT0FBTXZYO1dBQ1QsWUFER3VYOztZQVVPO2FBUDhDaG5CO2FBQU5pbkI7YUFBTHBWO2FBT25DLE9BK0xsQjRGLGFBdE1nRXpYO2FBTTlDLE9BQUEsaUNBL0VsQm1VLGlCQXlFMEQ4UzthQUcxQzFTLGdCQTZvQ2hCa0IsZUFocENxRDVELGtCQUhwQ3BDO1lBYUwsV0FQSThFLGVBTkx5UyxhQUFNdlg7O1dBMEJIO1lBRjJCdFk7WUFDekIrdkIsbUJBNnBDaEJ2VCxrQkE1cEM0RHhjLEdBQUssT0FBTEEsRUFBTSxHQUZ6QkEsSUF4QnhCc1k7V0E0QkwsV0FISXlYLGlCQXpCTEYsYUFBTXZYO1VBc0NKO1FBeENQMFgsU0FDRixrQ0E1QzZCbFMsUUFzQjNCOFI7T0FnRUosT0EzQ0lJOztPQWdEQTtRQUg0QjNSO1FBQUp0Qjs7bUJBSWpCL2M7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F2SDlCZ2QsZ0JBc0hrQko7V0FDUixXQWttQ1YwQixlQW5tQ2NwQztVQUNtQztRQUgzQyxPQUFBLGtDQUg0Qm1DO09BQ2hDLFdBbEhGckIsZ0JBaUg4QkQ7O09BU3NCO1FBRGxCd0I7UUFBSkM7UUFDc0IsT0FBQSw0QkF1SHBEQyxXQXhIa0NGO09BQ2hDLFdBMUhGdkIsZ0JBeUg4QndCOztPQUdvQjtRQURsQkU7UUFBSkM7UUFDc0IsT0FBQSw0QkFxSGxERixXQXRIZ0NDO09BQzlCLFdBNUhGMUIsZ0JBMkg0QjJCOztXQUVDQztPQUMzQixXQUE2Qiw0QkE5SC9CNUIsaUJBNkg2QjRCOztPQUlNO1FBRkdDO1FBQUpDO1FBRUMsT0FBQSxpQ0FqSW5DOUIsaUJBK0hzQzZCO09BQ3BDLFdBNG5DRnJDLFNBTkFNLGtCQXZuQ2tDZ0M7O1dBR0VDLGlCQUFKQztPQUM5QjtlQUQ4QkE7ZUFFWixpQ0FwSXBCaEMsaUJBa0lvQytCOztPQVU5QjtRQVA2QkU7UUFBSkM7UUFPekIsT0FBQSxpQ0E1SU5sQyxpQkFxSW1DaUM7O21CQUd0QmpmO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BMUl6Q2dkLGdCQXlJa0JKO1dBQ1IsV0FrbkNWSixTQU5BTSxrQkE3bUNjWjtVQUM4QztPQUoxRCxZQUNJLGtDQUZ5QmdEOztPQVVOO1FBRlNDO1FBQUpDO1FBRUwsT0E2bUN6QjVDLFNBTkFNLGtCQXptQ2tDcUM7T0FDaEMsWUE5SUZuQyxnQkE2SThCb0M7O09BS3lCO1FBRmRDO1FBQUpDO1FBQUpDO1FBRXNCLE9BbEp2RHZDLGdCQWdKeUNxQztRQUVoQixPQTBtQ3pCN0MsU0FOQU0sa0JBdG1DcUN3QztPQUNuQyxZQWpKRnRDLGdCQWdKaUN1Qzs7V0FHSkM7T0FDM0IsWUFBNkIsNEJBcEovQnhDLGlCQW1KNkJ3Qzs7T0FJZ0I7UUFGRkM7UUFBSkM7UUFBSkM7UUFFVSxPQUFBLGlDQXZKN0MzQyxpQkFxSjJDeUM7UUFFbEIsT0F2SnpCekMsZ0JBcUp1QzBDO09BQ3JDLFlBdEpGMUMsZ0JBcUptQzJDOztPQUlvQixJQURsQkMsaUJBQUpDLGtCQUNzQixPQXpKdkQ3QyxnQkF3SnFDNEM7T0FDbkMsWUF6SkY1QyxnQkF3SmlDNkM7O09BR21CLElBRGxCQyxrQkFBSkMsa0JBQ3NCLE9BM0pwRC9DLGdCQTBKa0M4QztPQUNoQyxZQTNKRjlDLGdCQTBKOEIrQzs7T0FReEI7UUFOc0NDO1FBQUpDO1FBQUpDO1FBQUpDO1FBQUpDO1FBTXRCLE9BbEtOcEQsZ0JBNEo0Q2dEO1FBS3RDLE9BMEVOSyxvQkEvRXdDSjtRQUlsQyxPQWhLTmpELGdCQTRKb0NrRDtRQUc5QixPQS9KTmxELGdCQTRKZ0NtRDtPQUM5QixZQWtIRkcsYUFuSDRCRjs7T0FRNkIsSUFEbEJHLGtCQUFKQyxrQkFDc0IsT0E2THpEQyxlQTlMdUNGO09BQ3JDLFlBcEtGdkQsZ0JBbUttQ3dEOztPQUlvQjtRQUZoQkU7UUFBSkM7UUFBSkM7UUFFd0IsT0EwTHZESCxlQTVMdUNDO1FBRWQsT0FBQSxpQ0EwTHpCRCxnQkE1TG1DRTtPQUNqQyxZQXRLRjNELGdCQXFLK0I0RDs7T0FJb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BbWxDbkR0RSxTQXhCQXVFLFlBNWpDaUNGO09BQy9CLFlBektGN0QsZ0JBd0s2QjhEOztXQUVGRSxrQkFDekIsWUFpbENGeEUsU0FOQU0sa0JBNWtDMkJrRTs7T0FJRSxJQUZVQyxrQkFBSkMsa0JBRU4sT0E5SzdCbEUsZ0JBNEt1Q2lFO09BQ3JDLFlBK2tDRnpFLFNBeEJBdUUsWUF4akNtQ0c7OztRQUdIQzs7bUJBR3BCbmhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BcExsQ2dkLGdCQW1MaUJKO1dBQ1IsV0F3a0NUSixTQXhCQXVFLFlBampDYTdFO1VBQ3dDO09BSm5ELFlBQ0Usa0NBRjRCaUY7O09BVzFCO1FBSm9DQztRQUFKQztRQUFKQztRQUk1QixPQTFMTnRFLGdCQXNMMENvRTtRQUdwQyxPQTZkTkcsaUJBaGVzQ0Y7T0FDcEM7ZUFxa0NGN0U7MEJBcGtDb0J4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZoQnNoQjs7OztPQU9FLElBRktFLGtCQUFKQyxrQkFFRCxPQTdMcEN6RSxnQkEyTHlDd0U7T0FDdkMsWUEwM0JGRSwyQkEzM0JxQ0Q7O1dBR1BFLGtCQUM1QixZQS9MRjNFLGdCQThMOEIyRTs7V0FFRkMsa0JBQzFCLFlBak1GNUUsZ0JBZ000QjRFOztPQUlIO1FBRlFDO1FBQUpDO1FBRUosT0FBQSxpQ0E2SnpCckIsZ0JBL0ppQ29CO09BQy9CLFlBbk1GN0UsZ0JBa002QjhFOztXQUdDQyxrQkFDNUIsWUFvWUZDLHFCQXJZOEJEOztPQUlDLElBRktFLGtCQUFKQyxrQkFFRCxPQXpNL0JsRixnQkF1TW9DaUY7T0FDbEMsWUFvakNGekYsa0JBbmpDbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT2tpQjs7V0FHSkMsa0JBQzFCLFlBMmNGWixpQkE1YzRCWTs7T0FHNkIsSUFEeEJDLGtCQUFKQyxrQkFDNEIsT0E3TXpEckYsZ0JBNE1pQ29GO09BQy9CLFlBcWJGRSxzQkF0YjZCRDs7V0FFQUUsa0JBQzNCLFlBS0ZDLFdBTjZCRDttQkFFSUUsa0JBQy9CLFlBZ3JCRkMsZUFqckJpQ0Q7O0dBRXVDO1lBRXhFRDtJQUNIO0tBQXNEMVQ7S0FBeEJDO0tBQXhCQztLQUlzQixPQXpOekJnTyxnQkFxTm1EbE87S0FHMUIsT0FBQSw0QkFJekI2VCxpQkFQMkI1VDtJQUM3QixXQU1FNFQsZ0JBUEczVDtHQUtKO1lBRUMyVDtJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBUTBCLE9Bdk83Qi9GLGdCQWlPRzZGO0tBSzBCLE9BeUM3QnZDLGFBL0NHd0M7SUFJTDtZQXdoQ0V0RyxrQkF2aEMwQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU43QytpQjs7O1lBR0FIO0dBT0o7WUFFQ3ZDLDJCQUVGLHFCQUVvRDtZQUVsRDVCO0lBQ0g7S0FHTW5FO0tBREFDO0tBREFDO0tBT3dCLE9BMVAzQndDLGdCQXFQRzFDO0tBSTBCLE9BQUEsaUNBelA3QjBDLGlCQW9QR3pDO0lBR0wsV0F3QkUrRixhQTVCRzlGO0dBUUo7WUFFQ2tEO0lBRUg7S0FLTTRGO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE9BMkxuQ3JHLGdCQW5NR2tHO0tBT0Q7T0FBQSxpQ0FzRUZJLHVCQTlFR0g7S0FNMEIsT0F4UTdCeEcsZ0JBaVFHeUc7SUFLTCxXQVNFbkQsYUFmR29ELDRCQUlBSjtHQVNKO1lBRUNoRDtJQUNIO0tBSU1zRDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQTRLcEMxRyxnQkFsTEd1RztLQUtnQyxPQXVGbkN0RyxvQkE3Rkd1RztJQUdMLFdBT0VHLGtCQVpHRCxZQUNBRDtHQVNKO1lBRUNFO0lBQ21FLDhCQUNyQzs7O1dBQ0g5SCxlQUN6QixXQTI5QkZNLGtCQTM5QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHZCa2M7O09BR3NCO1FBRGZVO1FBQUpSO1FBQ21CLE9BeTlCakRJLGtCQXo5QitEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRG5DNGM7T0FDaEMsV0FwQkYwRCxhQW1COEJsRTs7V0FFRVMsaUJBQzlCLFdBczhCRlcsY0F2OEJnQ1g7O09BR3FCLElBRGhCd0IsaUJBQUp0QixpQkFDb0IsT0FvOEJyRFMsY0FyOEJxQ2E7T0FDbkMsV0FvOEJGYixjQXI4QmlDVDs7V0FFSnlCO09BQzNCLFdBQTZCLDRCQTFCL0I4QixjQXlCNkI5Qjs7T0FLdkI7UUFIZ0NEO1FBQUpJOzttQkFJckIzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU4QyxPQWpDM0RzZ0IsYUFnQ2tCMUQ7eUJBQ081YyxHQUFLLE9BNDhCOUJ3YyxrQkE1OEI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7V0FBM0MsV0FBQyxrQ0FER2tjO1VBQzZEO1FBSHJFLE9BQUEsdUNBSGdDcUM7T0FDcEMsV0FpOUJGL0IsU0FOQU0sa0JBNThCa0M2Qjs7V0FRRUQsaUJBQUpFO09BQzlCLFdBRDhCQSxNQUNpQixpQ0FwQ2pEMEIsY0FtQ29DNUI7O09BUzlCO1FBUDZCRztRQUFKQztRQU96QixPQW82Qk5tRixpQkEzNkJtQ3BGOzttQkFHdEI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTFDekNzZ0IsYUF5Q2tCMUQ7V0FDUixXQW04QlZKLFNBTkFNLGtCQTk3QmNaO1VBQzJDO09BSnZELFdBQ0ksa0NBRnlCNEM7O1dBUUZFO09BQzNCLFdBQTZCLDRCQTlDL0JzQixjQTZDNkJ0Qjs7T0FHaUIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWhEOUNvQixhQStDK0J2QjtPQUM3QixXQWhERnVCLGFBK0MyQnBCOztPQUcyQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BZ0N0RHFCLGVBakN1Q3hCO09BQ3JDLFlBbERGcUIsYUFpRG1DbEI7O1dBRVBHLGtCQUMxQixZQXk3QkYvQyxTQU5BTSxrQkFwN0I0QnlDOztXQUVBQyxrQkFDMUIsWUF0REZjLGFBcUQ0QmQ7O1dBRUVHO09BQzVCO2VBcTdCRm5EOzBCQXA3Qm1CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGbkIyZjs7V0FHR0Usa0JBQy9CLFlBM0RGUyxhQTBEaUNUOztXQUVBRSxrQkFDL0IsWUFxakJGMkMsZUF0akJpQzNDOztPQUc0QixJQUQ1QlosaUJBQUppQixrQkFDZ0MsT0EvRDdERSxhQThEaUNuQjtPQUMvQixZQTg2QkYzQyxTQU5BTSxrQkF6NkI2QnNEOztHQUNnRDtZQUU3RXVEO0lBRUY7S0FNYztNQUxpRHRPO01BQTFCNk87TUFLdkIsT0FTWnpELGVBZDZEcEw7c0JBSTdCclYsR0FBSyxPQUFMQSxFQUFNO01BQXJCLHNCLE9BcTZCakJ3YztLQXY2Qkk7YUFFSSxrQ0FKMkIwSDs7O0lBV2xCO0tBSndCQztLQUFSQztLQUloQixPQUdqQjNELGVBUHlDMEQ7SUFFckMsV0FDVyxpQ0FJZjFELGdCQVBpQzJEO0dBSzVCO1lBRUwzRDtJQUVIO0tBSU00RDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQXlGcENuSCxnQkEvRkdnSDtLQUtnQyxPQUluQy9HLG9CQVZHZ0g7SUFHTCxXQVdFRyxvQkFmR0YsVUFEQUMsWUFDQUQ7R0FTSjtZQUVDakgsb0JBRUN0ZDtJQUFLLE9BQUEsNEJBZzVCTjBrQixlQWg1QkMxa0I7R0FBNkI7WUFFOUJ5a0Isb0JBQW9CbGtCO0ksOEJBR1U7OztXQUNIMmIsZUFBTSxXQUFOQTs7T0FHZ0I7UUFGTHVCO1FBQUpiO1FBQUpSO1FBRWEsT0ExQjNDcUUsZUF3QnNDaEQ7UUFFZCxPQTFCeEJnRCxlQXdCa0M3RDtPQUNoQyxXQSsxQkYwQixlQWgyQjhCbEM7O1dBR0RTO09BQzNCLFdBQTZCLDRCQTVCL0I0RCxnQkEyQjZCNUQ7O09BSU07UUFGQXdCO1FBQUp0QjtRQUVJLE9BQUEsNEJBL0JuQzBELGdCQTZCbUNwQztPQUNqQyxXQTYzQkY3QixTQU5BTSxrQkF4M0IrQkM7O09BS0ssSUFGRHdCLGlCQUFKQyxpQkFFSyxPQTQxQnBDeUYsaUJBOTFCbUMxRjtPQUNqQyxXQUNHLDRCQXNETG9HLG1CQXhEK0JuRzs7T0FLSTtRQUZERTtRQUFKQztRQUVLLE9BQUEsNEJBckNuQzhCLGdCQW1Da0MvQjtPQUNoQyxXQXUzQkZsQyxTQU5BTSxrQkFsM0I4QjZCOztPQUk1QixJQURnQ0UsaUJBQUpELGlCQUM1QixPQURnQ0M7T0FDaEMsV0F2Q0Y0QixlQXNDOEI3Qjs7T0FNeEI7UUFKa0NTO1FBQUpOO1FBQUpEO3dCQUlWOWUsR0FBSyxPQUFBLDRCQXUxQjNCK2dCLFlBdjFCc0IvZ0IsR0FBMEI7UUFBMUMsT0FBQSx1Q0FKa0NxZjtRQUdsQyxPQW0xQk40RSxpQkF0MUJvQ2xGO09BQ2xDO2VBQ0ksNEJBd0JONkYsZ0JBMUJnQzlGOzs7O09BT3FCO1FBRnBCRztRQUFKRDtRQUV3QixPQS9DckR5QixlQTZDaUN4Qjt3QkFFZGpmLEdBQUssT0E0MkJ4QndjLGtCQTUyQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZ3QmdmOztXQUdFRSxpQkFDN0IsV0FNRjJGLGtCQVArQjNGOztPQUs3QixPQTNnQkZuRCxnQkF5ZW9CeGI7bUJBK0JhNmUsaUJBQy9CLFlBNmVGc0QsZUE5ZWlDdEQ7OztZQUtqQ3lGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQS9EbkN5Z0IsZUE4RFk3RDtLQUNSLFdBNDFCSkosU0FOQU0sa0JBdjFCUVo7SUFDNkM7SUFIckQsV0FBQSxrQ0FGTVU7SUFDUixXQWcyQkVKLFNBTkFNLGtCQTMxQkVaO0dBTUk7WUFFTjBJO0lBRUg7S0FHTUU7S0FEQUM7S0FEQXhOO0tBT2dDLE9BeUJuQzhGLGdCQTlCR3lIO0lBRUwsV0FNRUUsb0JBVkd6TixXQUNBd047R0FPSjtZQUVDQztJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBcEZqQ3VFLGdCQWtGZ0NoRDtLQUM5QixXQXcwQkZqQixTQXhCQXVFLFlBanpCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0F0RkZxRSxlQXFGMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtJQUVMLFdBaXhCRUUsdUJBcnhCRzNOLFdBQ0EwTjtHQU9KO1lBRUM3SCxnQkFFQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQjtJQUVIO0tBR01DO0tBREFDO0tBREFDOzs0QkFBQUE7VUFjSEMsYUFiR0Y7VUFhSEUsYUFwaEJBNEosNEJBdWdCRzlKO0lBR0wsV0EyeUJFOUksa0JBMXlCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FML0N1bEIsa0JBRUFGO0dBVUo7WUFFQ0c7SUFDRjs7V0FDeUJ0SixlQUFNLFdBTTdCQyxlQU51QkQ7O1dBQ0FFLGlCQUFNLFdBMFI3QnFKLGVBMVJ1QnJKOztXQUNBUyxpQkFBTSxXQTlIN0I0RCxlQThIdUI1RDs7T0FFb0I7UUFEZkQ7UUFBSkc7UUFDbUIsT0FBQSxpQ0FqZTNDQyxpQkFnZTRCSjtPQUMxQixXQWxORjBELGFBaU53QnZEOztHQUNpRDtZQUV6RVosZUFFQ25jO0lBQUssT0FBQSw0QkFFTjBsQixxQkFGQzFsQjtHQUFtQztZQUVwQzBsQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7T0FFVyxJQURsQmpKLGVBQUpWLGVBQ3NCLE9BN0NuRG1CLGdCQTRDaUNUO09BQy9CLFdBbmZGSSxnQkFrZjZCZDs7T0FJTjtRQUZXbUM7UUFBSmpDO1FBRVAsT0FBQSw0QkF6UHZCc0Isb0JBdVBrQ1c7T0FDaEMsV0FpdkJGVixjQWx2QjhCdkI7O1dBR0dTLGlCQUMvQixXQXdzQkZpSix1QkF6c0JpQ2pKOztPQUlWO1FBRlUwQjtRQUFKeEI7UUFFTixPQUFBLDRCQXNsQnZCZ0osdUJBeGxCaUN4SDtPQUMvQixXQTR1QkZaLGNBN3VCNkJaOztXQUdDeUIsaUJBQzVCLFdBOGhCRndILG9CQS9oQjhCeEg7O1dBRUdHLGlCQUMvQixXQThnQkZzSCxvQkEvZ0JpQ3RIOztXQUVIQyxpQkFDNUIsV0FxSUZzSCxvQkF0SThCdEg7O1dBRUdFO09BQy9CLFdBQWlDLDRCQW1JbkNvSCxxQkFwSWlDcEg7O1dBRUZFLGlCQUM3QixXQXVkRm1ILDZCQXhkK0JuSDs7V0FFSEUsaUJBQzFCLFdBMkhGb0Qsc0JBNUg0QnBEOztXQUVDRTtPQUMzQixZQUE2Qiw0QkFnQi9CZ0gsd0JBakI2QmhIOztXQUVLRztPQUNoQztlQUNFLDRCQThSSjhHLDZCQWhTa0M5Rzs7V0FHSEMsa0JBQzdCLFlBTUY4Ryx5QkFQK0I5Rzs7V0FFRUcsa0JBQy9CLFlBdEVGeUYsZUFxRWlDekY7O09BR3NCLElBRGpCakIsaUJBQUptQixrQkFDcUIsT0E1RXZEeEMsZ0JBMkVzQ3FCO09BQ3BDLFlBK1dGZ0UsZUFoWGtDN0M7O0dBQ3dDO1lBRTFFeUcseUJBR0N0bUI7SUFBSyxPQXdaTnVtQixtQkF6UkFoRixrQkEvSEN2aEI7R0FBMEM7WUFFM0NvbUIsdUJBRUNwbUI7SUFBSyxPQTRXTndtQixpQkExV0FDLGlCQUZDem1CO0dBQXVDO1lBRXhDeW1CO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0FqR25DdkosZ0JBNEZHcUo7SUFFTCxXQU1FRyxxQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUdxQztRQUZEaks7UUFBSlY7UUFFSyxPQUFBLDRCQTlNbkN1RSxnQkE0TWtDN0Q7T0FDaEMsV0E4c0JGSixTQU5BTSxrQkF6c0I4Qlo7O1dBR0VFLGlCQUM5QixXQXlCRjRGLHFCQTFCZ0M1Rjs7T0FPMUI7UUFMaUM2RDtRQUFKeEM7UUFBSlk7UUFBSnhCO1FBS3JCLE9BMUJONEosZ0JBcUJ1Q3hHO1FBSWpDLE9BdlNOSyxhQW1TbUM3QztRQUc3QixPQUFBLGlDQXJqQk5ULGlCQWtqQitCcUI7T0FDN0IsV0FzcUJGQyxlQXZxQjJCekI7O09BU3JCO1FBSDJCMEI7UUFBSnhCOzttQkFJaEIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQTlqQjlCZ2QsZ0JBNmpCa0JKO1dBQ1IsV0EycEJWMEIsZUE1cEJjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIMkJxQztPQUMvQixXQTVCRmtJLGdCQTJCNkIxSjs7T0FVMEI7UUFGcEJzQztRQUFKWDtRQUFKRjtRQUU0QixPQXJDdkRpSSxnQkFtQ21DcEg7UUFFWixPQUFBLDRCQXJVdkIzQixvQkFtVStCZ0I7T0FDN0IsV0FxcUJGZixjQXRxQjJCYTs7T0FJNkIsSUFEbEJLLGlCQUFKRixpQkFDc0IsT0ErT3hEbUksZ0JBaFBzQ2pJO09BQ3BDLFdBdkNGNEgsZ0JBc0NrQzlIOztXQUVGQyxpQkFDOUIsV0EyVEY4RCxlQTVUZ0M5RDs7T0FHd0IsSUFEeEJHLGlCQUFKRCxpQkFDNEIsT0EzQ3hEMkgsZ0JBMENnQzFIO09BQzlCLFdBd1hGZ0ksc0JBelg0QmpJOztHQUMrQztZQUUzRWtEO0lBRUg7S0FBb0NnRjtLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLGtCQU5pQ0Y7SUFDbkMsV0E5VEUxRyxhQTZURzJHO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQXRKbkNoSyxnQkFpSkc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BS1E7UUFKaUM3SjtRQUFKYjtRQUFKVjt3QkFJVGxjLEdBQUssT0FzcEIzQndjLGtCQXRwQnlDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtRQUE1QyxPQUFBLHVDQUppQ3lkO1FBR2pDLE9BeEVOZ0osZ0JBcUVtQzdKO09BQ2pDLFdBb1hGMkssbUJBclgrQnJMOztPQU03QjtRQUR3QkU7UUFFVGlELE9BRlNqRDtRQUViaUMsT0FGYWpDO1FBRWpCUyxPQUZpQlQ7UUFHMEIsT0FnQnBEb0wsc0JBakJpQm5JO1FBQ2EsT0Fza0I5Qm9JLGtCQXZrQmFwSjtPQURYLGVBb3BCRjdCLFNBeEJBdUUsWUEzbkJTbEU7O09BR1A7UUFEMkJFO1FBRVowQyxPQUZZMUM7UUFFaEJ3QixPQUZnQnhCO1FBRXBCeUIsT0FGb0J6QjtRQUd1QixPQVlwRHlLLHNCQWJpQi9IO1FBQ2EsT0FzZ0I5QmlJLGtCQXZnQmFuSjtPQURYLGVBZ3BCRi9CLFNBeEJBdUUsWUF2bkJTdkM7O09BR1A7UUFEK0JHO1FBRXBCRCxPQUZvQkM7UUFFeEJDLE9BRndCRDtRQUdSLE9BalJ6QjhCLGVBZ1JhL0I7T0FEWCxlQS9RRitCLGVBZ1JTN0I7O1dBRXlCRSxpQkFDaEMsV0FwbkJGOUIsZ0JBbW5Ca0M4Qjs7V0FFRkUsaUJBQzlCLFdBNUtGb0csZUEyS2dDcEc7bUJBRUFFLGlCQUM5QixXQXlRRndELGVBMVFnQ3hEOztHQUNxQjtZQUVyRHNJO0lBRUYsdUJBQ2dDdEwsZUFDNUIsV0E3UkZ1RSxlQTRSOEJ2RTtJQUcyQixJQURyQlUsZUFBSlIsaUJBQ3lCLE9BaG9CekRZLGdCQStuQm9DSjtJQUNsQyxXQXVWRjJLLG1CQXhWZ0NuTDtHQUM0QztZQUU1RWtHLHNCQUVDdGlCO0lBQUssT0FnVU4ybkIsZ0JBOVNBcEcsa0JBbEJDdmhCO0dBQXVDO1lBRXhDa21CO0lBRUg7S0FJTTBCO0tBREFDO0tBREFDO0tBREFDO0tBU2dDLE9BNU1uQzFLLGdCQXFNR3dLO0tBTTBCLE9BSzdCdEcsaUJBWkd1RztJQUlMO1lBOG1CRXRMO3VCQTVtQmdCeGM7NkJBQXFCQSxHQUFLLE9BQUxBLEVBQU07ZUFBdEIsT0FBQSx1Q0FBTEE7Y0FBOEI7Y0FQM0MrbkI7OztZQUdBSDtHQVFKO1lBRUNyRztJQUVIO0tBR015RztLQURBQztLQURBQztLQU9pQyxPQTFOcEM3SyxnQkFxTkcySztJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQytCak0sZUFDM0IsV0FxbEJGTSxTQU5BTSxrQkFobEI2Qlo7O1dBRUlFLGlCQUMvQixXQXRNRkQsZUFxTWlDQzs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEMwRSxpQkFvQm9DM0U7T0FDbEMsV0FjRndMLHVCQWZnQ3ZMOztPQUlxQixJQURuQndCLGlCQUFKdEIsaUJBQ3VCLE9BeEJyRHdFLGlCQXVCa0NsRDtPQUNoQyxXQXhCRmtELGlCQXVCOEJ4RTs7V0FFSXlCLGlCQUNoQyxXQTFCRitDLGlCQXlCa0MvQzs7T0FJUixJQUZhRCxpQkFBSkksaUJBRVQsT0FjMUIwSixpQkFoQnVDOUo7T0FDckMsV0E1QkZnRCxpQkEyQm1DNUM7O1dBR0xDLGlCQUM1QixXQXJyQkY1QixnQkFvckI4QjRCO21CQUVHRSxpQkFDL0IsV0EwTUY0RCxlQTNNaUM1RDs7R0FDcUI7WUFFdERzSjtJQUVGLFlBQzRCO0lBRzZCLElBRjFCeEwsZUFBSlYsZUFFOEIsT0FFdkRtTSxpQkFKNkJ6TDtJQUMzQjtZQThqQkZKO3VCQTdqQm1CeGM7NkJBQXFCQSxHQUFLLE9BQUxBLEVBQU07ZUFBdEIsT0FBQSx1Q0FBTEE7Y0FBOEI7Y0FGeEJrYzs7R0FFa0Q7WUFFM0VtTTtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2lDLE9BclFwQ25MLGdCQWdRR2lMO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0J2TSxlQUMzQixXQTBpQkZNLFNBTkFNLGtCQXJpQjZCWjs7V0FFSUUsaUJBQy9CLFdBb0NGcUosZUFyQ2lDcko7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDd0wsaUJBb0JvQ3pMO09BQ2xDLFdBN0JGd0wsdUJBNEJnQ3ZMOztPQUtOO1FBRk93QjtRQUFKdEI7UUFFSCxPQUFBLDRCQVExQjJMLHNCQVZpQ3JLO09BQy9CLFdBeEJGZ0ssaUJBdUI2QnRMOztXQUdDeUIsaUJBQzVCLFdBdEVGK0MsaUJBcUU4Qi9DOztXQUVHRyxpQkFDL0IsV0FtS0YrRCxlQXBLaUMvRDs7V0FFSkMsaUJBQzNCLFdBNGhCRnBDLFNBTkFNLGtCQXZoQjZCOEI7O0dBQ2dDO1lBRTdEOEo7SUFFRjs7T0FHcUMsSUFGRDlMLGVBQUpWLGVBRUssT0EwV25DNkosc0JBNVdrQ25KO09BQ2hDLFdBc2hCRkosU0FOQU0sa0JBamhCOEJaOztPQUtLO1FBRkNtQztRQUFKakM7UUFFRyxPQWtoQm5DSSxTQU5BTSxrQkE5Z0JvQ3VCO09BQ2xDLFdBbWhCRjdCLFNBTkFNLGtCQTlnQmdDVjs7T0FLRyxJQUZFbUMsaUJBQUoxQixpQkFFRSxPQTVDbkN3TCxpQkEwQ3FDOUo7T0FDbkMsV0FnaEJGL0IsU0FOQU0sa0JBM2dCaUNEOztPQUtFLElBRk82QixpQkFBSjNCLGlCQUVILE9BL0NuQ3NMLGlCQTZDMEMzSjtPQUN4QyxXQTZnQkZsQyxTQU5BTSxrQkF4Z0JzQ0M7O09BS0g7UUFGSThCO1FBQUpMO1FBRUEsT0E4Vm5DdUgsc0JBaFd1Q2xIO09BQ3JDLFdBMGdCRnJDLFNBTkFNLGtCQXJnQm1DMEI7O09BS0E7UUFGR087UUFBSko7UUFFQyxPQXNnQm5DbkMsU0FOQU0sa0JBbGdCc0NpQztPQUNwQyxXQXVnQkZ2QyxTQU5BTSxrQkFsZ0JrQzZCOztHQUU4QjtZQUVoRThHLGVBRUN6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztXQUNYNU0sZUFDM0IsV0F3YkY0Six1QkF6YjZCNUo7O09BSU47UUFGVVU7UUFBSlI7UUFFTixPQUFBLDRCQXNVdkIySix1QkF4VWlDbko7T0FDL0IsV0E0ZEZlLGNBN2Q2QnZCOztXQUdJUztPQUMvQixXQUFpQyw0QkFvVW5Da0osdUJBclVpQ2xKOztXQUVIRSxpQkFDNUIsV0E0UUZpSixvQkE3UThCako7O1dBRUd5QixpQkFDL0IsV0E0UEZ5SCxvQkE3UGlDekg7O1dBRUhHLGlCQUM1QixXQXlPRm9LLHdCQTFPOEJwSzs7V0FFRUMsaUJBQzlCLFdBdU5Gb0sseUJBeE5nQ3BLOztXQUVDRTtPQUMvQixXQUFpQyw0QkFxT25DaUsseUJBdE9pQ2pLOztXQUVGRSxpQkFDN0IsV0FtTUZtSCw2QkFwTStCbkg7O1dBRUtFLGlCQUNsQyxXQWlNRmlILDZCQWxNb0NqSDs7V0FFUkUsaUJBQzFCLFlBbUtGMkgsc0JBcEs0QjNIOztXQUVHRyxrQkFDN0IsWUEySUYwSix5QkE1SStCMUo7O1dBRUZDO09BQzNCLFlBQTZCLDRCQWMvQjBKLHdCQWY2QjFKOztXQUVLRztPQUNoQztlQUNFLDRCQU1KMEcsNkJBUmtDMUc7O1dBR0RFLGtCQUMvQixZQTVWRnVGLGVBMlZpQ3ZGOztPQUdzQixJQURqQnhCLGlCQUFKMEIsa0JBQ3FCLE9BbFd2RDFDLGdCQWlXc0NnQjtPQUNwQyxZQXlGRnFFLGVBMUZrQzNDOztHQUN3QztZQUUxRXNHLDRCQUdDcm1CO0lBQUssT0EwRk53bUIsaUJBcEZBTSxpQkFOQzltQjtHQUF1QztZQUV4Q2twQix1QkFFQ2xwQjtJQUFLLE9Bc0ZOd21CLGlCQXBGQU0saUJBRkM5bUI7R0FBdUM7WUFFeEM4bUI7SUFFSDtLQUdNcUM7S0FEQUM7S0FEQUM7S0FPaUMsT0F2WHBDaE0sZ0JBa1hHOEw7SUFFTCxXQU1FRyxxQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUdxQztRQUZBMU07UUFBSlY7UUFFSSxPQUFBLDRCQXBlbkN1RSxnQkFrZW1DN0Q7T0FDakMsV0F3YkZKLFNBTkFNLGtCQW5iK0JaOztXQUdFRSxpQkFDL0IsV0FTRm1OLHFCQVZpQ25OOztPQUlVO1FBRkxxQjtRQUFKWTtRQUFKeEI7UUFFYSxPQXZCM0NpSyxnQkFxQnNDcko7UUFFZCxPQXpleEJnRCxlQXVla0NwQztPQUNoQyxXQWdaRkMsZUFqWjhCekI7O1dBR0dFLGlCQUMvQixXQXFERjJGLGVBdERpQzNGOztPQUd3QixJQUR4QndCLGlCQUFKQyxpQkFDNEIsT0EzQnpEc0ksZ0JBMEJpQ3ZJO09BQy9CLFdBa0hGd0ksc0JBbkg2QnZJOztHQUMrQztZQUU1RStLO0lBRUg7S0FBb0NDO0tBQTlCQztLQUc4QixPQUFBLDRCQUdqQ0MsdUJBTmlDRjtJQUNuQyxXQWxmRS9JLGVBaWZHZ0o7R0FJSjtZQUVDQztJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2lDLE9BNVpwQ3hNLGdCQXVaR3NNO0lBRUwsV0FNRUcsMkJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFMEM7O1dBQ1g1TixlQUM3QixXQXRERjRLLGdCQXFEK0I1Szs7T0FHN0I7UUFEeUJFO1FBRU42RCxLQUZNN0Q7UUFFVnFCLEtBRlVyQjtRQUVkUSxLQUZjUjtRQUVsQlMsT0FGa0JUO1FBTXBCLE9BL2dCUHFFLGVBMmdCcUJSO1FBR2QsT0FzRFA4SixrQkF6RGlCdE07UUFFVixPQWtVUGdLLGtCQXBVYTdLO09BRFgsZUFpWkZKLFNBeEJBdUUsWUF4WFNsRTs7T0FNUDtRQUQ0QkU7UUFFVGlOLE9BRlNqTjtRQUVic0MsT0FGYXRDO1FBRWpCc0IsT0FGaUJ0QjtRQUVyQnlCLE9BRnFCekI7UUFNdkIsT0F0aEJQMEQsZUFraEJxQnVKO1FBR2QsT0ErQ1BELGtCQWxEaUIxSztRQUVWLE9BK1BQcUksa0JBalFhcko7T0FEWCxlQTBZRjdCLFNBeEJBdUUsWUFqWFN2Qzs7T0FNUDtRQURnQ0c7UUFFckJKLE9BRnFCSTtRQUV6QkMsT0FGeUJEO1FBR1QsT0ExaEJ6QjhCLGVBeWhCYWxDO09BRFgsZUF4aEJGa0MsZUF5aEJTN0I7O1dBRXdCRSxpQkFDL0IsV0FuYkZzRyxlQWtiaUN0RzttQkFFQUUsaUJBQy9CLFdBRUYwRCxlQUhpQzFEOztHQUNxQjtZQUV0RDBELGVBRUMxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0ExYXpCd2xCLGFBeWFNNUk7SUFDUixXQXVYRUosa0JBdlhheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FvQmdDLE9BNWRuQ2xOLGdCQTZjRzZNO0tBYTBCLE9BQUEsV0FwQjVCRCxJQUtFRztLQWMwQixPQTZWN0I1TixrQkE3VjJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBZjlDcXFCO2tCQVNNcnFCO0tBQ0g7TUFBUTRjLEtBREw1YztNQUNDa2MsS0FERGxjO01BR09xZSxPQUZGekI7TUFFRlIsT0FGRVE7TUFHYSxPQXdSM0I0TixpQkF6UmdCbk07TUFDUixXQTZSUm9NLGNBOVJZck87S0FETixXQTFqQk5xRSxlQXlqQlV2RTtJQUd1QztJQUwvQyxXQUFBLGtDQVRDb087SUFNTCxXQWdCRVAsa0JBdkJHUSw2QkFJQUo7R0FpQko7WUFFQ0oseUJBQ2lFLHFCQUVYO1lBRXREZCx5QkFHQ2pwQjtJQUFLLE9BRU51bUIsbUJBOU9BOEIsa0JBNE9Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU9rQyxNQXZmckN2TixnQkFrZkdxTjtJQUVMLFdBQ2dDLFdBUDdCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RCxzQkFFQy9tQjtJQUFLLE9BRU4ybkI7c0JBRjJCM25CLEdBQUssT0EwVGhDd2MsU0FOQU0sa0JBcFQyQjljLEdBQWdDLEdBQTFEQTtHQUE2RDtZQUU5RDJuQixnQkFLQ3NDO0lBQUo7S0FLTVk7S0FEQUM7S0FEQUM7S0FEQUM7S0FTa0MsTUE5Z0JyQzNOLGdCQXdnQkd3TjtLQUlnQyxNQUtuQ3RELG1CQVhHd0Q7SUFJTCxXQUNpQyxXQVI5QmQsSUFFRWUsa0JBRUFGO0dBUUo7WUFFQ3ZELDBCQUNtRSxxQkFFbkI7WUFFaERwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVFpQyxNQWxpQnBDL04sZ0JBNGhCRzZOO0tBSzJCLE1BQUEsaUNBdFM5QjdDLGtCQWdTRzhDO0lBSUw7WUF1UkUzTyxrQkF0UjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9Db3JCOzs7WUFHQUg7R0FPSjtZQUVDakM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUFsakJuQ25PLGdCQTRpQkdpTztLQUs4QixNQXFRakM5TyxTQU5BTSxrQkFyUUd5TztJQUlMLFdBdVFFL08sa0JBdFEyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45Q3dyQixxQkFHQUg7R0FPSjtZQUVDdEM7SUFHSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTZ0MsTUFua0JuQ3ZPLGdCQTRqQkdxTztLQU0wQixNQXZVN0JyRCxpQkFnVUdzRDtJQUlMO1lBdVBFblA7dUJBclBnQnhjOzRCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsc0NBQUxBO2NBQThCO2NBUDNDNHJCOzs7WUFHQUg7R0FRSjtZQUVDeEY7SUFFSDtLQUdNNEY7S0FEQUM7S0FEQUM7S0FRbUMsTUFsbEJ0QzFPLGdCQTRrQkd3TztJQUVMO1lBa0NFbkssMkJBdENHcUs7WUFDQUQ7O0dBUUo7WUFFQzlGO0lBRUg7S0FNTWdHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBcUJtQyxNQTdtQnRDaFAsZ0JBNmxCRzJPO0tBY2dDLE1BbUVuQ3RFLGtCQW5GR3dFO0tBZUQ7T0FBQTswQkFNRnhLLDRCQXRCR3lLO2lCQVNNbnNCO0tBQ0g7TUFBUTRjLEtBREw1YztNQUNDa2MsS0FERGxjO01BR09xZSxPQUZGekI7TUFFRlIsT0FGRVE7TUFHYSxNQXdJM0I0TixpQkF6SWdCbk07TUFDUixVQTZJUm9NLGNBOUlZck87S0FETixXQTFzQk5xRSxlQXlzQlV2RTtJQUd1QztJQUwvQyxVQUFBLGlDQVRDa1E7SUFNTDtZQXVORTVQLFNBTkFNLGtCQXhOR3VQOzs7O1lBSUFKOztHQWtCSjtZQUVDdks7SUFHSDtLQUlNNEs7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsTUE3bkJwQ3BQLGdCQXVuQkdpUDtLQUkyQixNQUs5QkksK0JBWEdGO0lBSUw7WUE2TEVoUSxrQkE1TDRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9DeXNCOztZQUVBRjs7R0FRSjtZQUVDRztJQUUrQztLQUt6QztNQUorQmpQO01BQUpiO01BQUpWO01BSXZCLE1BQUEsaUNBNXVCTnVFLGdCQXd1QnFDaEQ7TUFHL0IsTUEyRU5rUCwyQkE5RWlDL1A7cUJBRWI1YyxHQUFLLE9BaUx6QndjLGtCQWpMdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO0tBRDlDLFdBQ0ksaUNBRnVCa2M7O1FBS0NFO0lBQzVCLFdBNktGSSxTQU5BTSxrQkF4SzhCVjtHQUNnQztZQUU5RDJKO0lBRUg7S0FRTTZHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBNEJrQyxNQTFxQnJDOVAsZ0JBb3BCR3dQO0tBcUJnQyxNQUFBLGlDQTl3Qm5DcE0sZ0JBd3ZCR3FNO0tBcUIrQixNQU1sQ3BGLGtCQTVCR3FGO0tBcUI0QixNQVkvQkssZUFsQ0dKO2lCQWtCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BMXdCMUJ5Z0IsZUF5d0JjN0Q7S0FDUixXQTF3Qk42RCxlQXl3QlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FsQkN3UDtpQkFXTWp0QjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUFnRjNCNE4saUJBakZnQm5NO01BQ1IsVUFxRlJvTSxjQXRGWXJPO0tBRE4sV0Fsd0JOcUUsZUFpd0JVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FYQ2dSO0lBUUw7WUErSkUxUSxrQkE5SjZDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVmhEbXRCOzs7Ozs7O1lBT0FQO0dBdUJKO1lBRUNsRix5QkFDaUUscUJBRWY7WUFFbEQwRjtJQUNFOztTQUU4QmxSO0tBQzlCLFdBQWdDLDRCQUtsQ21SLDhCQU5nQ25SOztRQUVERTtJQUM3QixXQUErQiw0QkFnQ2pDa1Isd0JBakMrQmxSO0dBRTZCO1lBRTVEaVI7SUFHSDtLQU1NRTtLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQWNnQyxNQTlzQm5DdlEsZ0JBcXNCR2tRO0tBT3lCLE1BQUEsaUNBanpCNUI5TSxnQkF3eUJHZ047S0FRMEIsTUFNN0JkLDJCQWZHZTtpQkFRYTF0QixHQUFLLE9BNEdyQndjLGtCQTVHbUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO0lBQTFDLFVBQUEsaUNBVEMydEI7SUFNTDtZQStHRW5SLGtCQTlHMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FSOUM0dEI7Ozs7WUFJQUo7O0dBV0o7WUFFQ2I7SUFFMEM7U0FDWnpRO0tBQzVCLFdBQThCLDRCQTF6QmhDdUUsZ0JBeXpCOEJ2RTs7UUFFQ0U7SUFDN0IsV0FBK0IsNEJBRWpDa1Isd0JBSCtCbFI7R0FDc0M7WUFFckVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE1BdnVCbkM1USxnQkFndUJHd1E7S0FLMEIsTUExMEI3QnBOLGVBbTBCR3NOO0tBTTZCLE1BTWhDdEcsa0JBYkd1RztJQUtMO1lBb0ZFeFIsa0JBbkYyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDaUUscUJBRWI7WUFFcEQrQyx3QkFDK0QscUJBRUM7WUFFaEVDO0lBQ0Ysc0JBQ2dDLGlCQUNJLGtCQUNIOztHQUEyQjtZQUUxRDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVWlDLE1BdndCcENqUixnQkFnd0JHOFE7aUJBTXlDbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUDNCb3VCO0tBTTJCLE1BMTJCOUIzTixlQW0yQkc0TjtJQUtMO1lBbURFN1Isa0JBbEQ0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAvQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUMvSTtJQUVGO0tBRW9ELElBRHRCdkksZUFBSlYsZUFDMEIsTUFwM0JsRHVFLGVBbTNCNEI3RDtLQUMxQixXQXVDRkosU0F4QkF1RSxZQWhCd0I3RTs7UUFFR0U7SUFDekIsV0F0M0JGcUUsZUFxM0IyQnJFO0dBQ3FCO1lBRWhEa0M7SUFDRiw4QkFDOEI7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBa0M7WUFFNUQ2SCx3QkFDK0QscUJBRWpCO1lBRTlDbEQsV0FBb0UvZ0IsR0FBSyxPQUFMQSxFQUFNO1lBRTFFMmQscUJBQ0YscUJBRTBEO1lBRXhESDtJQUNGOztXQUN3Q1osZUFBSlYsOEJBQ3NCbGMsR0FBSyxPQUFMQSxFQUFNO09BQTVELFdBRGdDa2MsSUFDTSxzQ0FERlU7O1dBRVJSLGlCQUFNLFdBQU5BOzs7UUFDV3FCO1FBQUpZO1FBQUp4Qjt1QkFFVTdjLEdBQUssT0FBTEEsRUFBTTtPQUQvQyxXQUQrQjZjLE1BQUl3QixNQUVWLHNDQUZjWjs7V0FHTGMsaUJBQUp4QixnQ0FDc0IvYyxHQUFLLE9BQUxBLEVBQU07T0FBMUQsV0FEOEIrYyxNQUNNLHNDQURGd0I7O0dBQzZCO1lBRWpFekI7SUFBZ0Q7O1dBQy9CWixlQUFNLFdBQU5BOztXQUNHVSxlQUFKUjtPQUFXLFdBRjNCVSxpQkFFZ0JWLE9BQUlROztPQUVxQixJQURuQnlCLGlCQUFKeEIsaUJBQ3VCLE1BSnpDQyxpQkFHc0J1QjtPQUNwQixXQUpGdkIsaUJBR2tCRDs7R0FDMkM7WUFFN0RMLFNBR0N5TjtJQUFKLElBQStCMXBCLGdCQUF0Qlk7SUFDUixXQUF5QixXQUR0QjhvQixJQUFLOW9CLE1BQXNCWjtHQUM2QztZQUV6RW1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07Ozs7T0F2M0NyRCtiO09BSUF5UztPQU9JQztPQXVCSkc7T0FpQkFLO09BU0FHO09BZ0JJblQ7T0FRSkk7T0FjQUU7T0FTQUk7T0FVQUs7T0FlQU87T0FxTUFpRjtPQVFBRztPQWVBdEM7T0FNQTVCO09BWUFmO09Ba0JBNEM7T0FjQTBEO09BbURBTDtPQWlCQWxEO09BZUFuRDtPQUlBbUg7T0FvQ0FJO09BV0FEO09BYUFJO09BU0FMO09BYUF0SDtPQUlBK0g7T0FpQkFJO09BUUFySjtPQUlBdUo7T0FRQUc7T0FxQ0FTO09BS0FGO09BSUFLO09BYUFJO09BZ0NBN0U7T0FRQWtGO09BYUFJO09BMkJBRTtPQVFBbEY7T0FJQTREO09BZ0JBM0U7T0FhQTRHO09Bc0JBQztPQVFBQztPQWFBSTtPQW9CQUM7T0FzQkFqRDtPQUlBa0Q7T0FRQUc7T0FzQ0F6QztPQUtBNkM7T0FJQXBDO09BYUF3QztPQWdCQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQU1BOEQ7T0E4QkF1RDtPQUtBZDtPQUtBMUM7T0FpQkFRO09BSUFZO09BbUJBSjtPQUtBcEI7T0FnQkE2QztPQWdCQUQ7T0FpQkE5QztPQWNBRDtPQTJCQXRFO09BZ0JBZ0w7T0FXQTNHO09BbUNBMkI7T0FLQTBGO09BU0FDO09BcUJBVjtPQVFBVztPQWlCQTdGO09BS0ErQztPQUtBQztPQU1BM0U7T0FpQkFYO09BUUE3RztPQU1BMkY7T0FLQWxEO09BRUFwRDtPQUtBSDtPQVdBVjtPQU1BTjtPQU1Ba0k7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O1lDcDNDQXVMLGFBQWFyd0IsTUFBTXVVO0lBQ3JCLElBQWF2VCxpQkFEUXVUOztpQkFFWCxjQUFPLDJCQURKdlQ7U0FLVCt0QixlQUhpRXVCLGNBQXJCNUssZUFHNUNxSixPQUhrQ3h0QixNQUdsQ3d0QjtLQUZLLEdBQUEsMEJBRDZCeHRCLEtBSHZCdkI7TUFLVCxlQUYwQzBsQixlQUV0Qiw0QkFKYjFrQixLQUV3RHN2QjtLQUdoRCxJQUFYamMsZUFBVyxZQUFqQjBhLElBTFMvdEIsTUFBQUEscUJBS0hxVDs7R0FFRztZQUVYMmEsOEJBQThCdFc7SUFDaEM7S0FFRSxRQWJBMlgsNkNBVThCM1g7S0FFbkI2WDtLQUFUamdCO0lBR0osS0FISUE7S0FNRTtNQURFa04seUJBUHdCOUU7TUFVeEJ1VyxhQUhBelIsV0FQd0I5RSxTQUFBQTtLQVk1QixtQkFaNEJBLFVBVXhCdVcsY0FWd0J2VyxTQUFBQSxTQUVuQjZYOztlQUFUamdCOzs7OztzREFlb0M4ZSxrQkFBcUIsT0FBckJBOzs7SUFDNUIsT0FBQTtHQUF3RDtZQUVsRUMsMkJBQTJCQzs7S0FFM0IsSUFBa0I1VyxpQkFBWjZXLHVCQUNKLE9BRElBOztNQUdBLFdBSEFBLFlBdEJOUCw4QkFzQmtCdFc7S0FJVCxXQUpINlcsWUFBWTdXO0lBSVU7SUFMOUIsT0FBQSxrQ0FENkI0VztHQU9yQjtZQUVORSw0QkFBNEJsZjtJQUM5QjthQUQ4QkE7Z0JBQUFBOztVQUt4Qm1mLHVCQUFBQTs7V0FHUS9XLHVCQUFBQTs7OztRQUdPO1NBSCtDblI7U0FBMUIrbkI7U0FHbENJLGFBcEJOTCwyQkFpQndDQztTQUlsQ0ssb0JBREFELGdCQUhNaFgsU0FBQUEsU0FBQUE7UUFLVix1QkFESWlYLFVBSjREcG9CLGFBSDlEa29COzs7OztJQVNDLE9BZHVCbmY7R0FjaEI7WUFFUitMO0lBRU4sdUJBQzZCQyxlQUN6QixXQWdnQkZDLGVBamdCMkJEO1FBRUFFO0lBQ3pCLFdBRUZDLHdCQUgyQkQ7R0FDOEI7WUFFekRDO0lBR0g7S0FHTUM7S0FEQXhCO0tBREFEO0tBTTBCO09BQUEsaUNBSTdCMEIseUJBVEd6QjtJQUdMLFdBNndDRTBCLGtCQTV3QzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DNmEsa0JBRUF5QjtHQU1KO1lBRUNDO0lBR0gsSUFBb0NFLHNCQUE5QkM7SUFDTCxXQUtFQyw2QkFOR0QsYUFBOEJEO0dBSWxDO1lBRUNFO0lBRTRDOztXQUNkVCxlQUFNLFdBQU5BOztXQUNFVSxlQUFKUixpQ0FDc0JwYyxHQUFLLE9BQUxBLEVBQU07T0FBdEQsV0FEMEJvYyxNQUNNLHVDQURGUTs7V0FFSEMsaUJBQzNCLFdBaXZDRkMsaUJBbHZDNkJEO21CQUVERSxpQkFBTSxXQUFOQTs7R0FBb0M7WUFFaEVDO0lBRUg7S0FJTUM7S0FEQUM7S0FHREM7S0FMQ0M7S0FVaUMsT0FpYnBDQyxnQkF4YkdKO0tBTWdDLE9BNlZuQ0ssb0JBcFdHSjtJQUlMO1lBT0VLLHFCQVJFSixVQUxDQztZQUtERDs7O0dBTUg7WUFFQ0kscUJBQXFCaGQ7SSw4QkEyTGlCOzs7V0F4TFQyYixlQUMzQixXQWd1Q0ZNLFNBTkFNLGtCQTN0QzZCWjs7V0FFR0UsaUJBQzlCLFdBNnNDRm9CLGNBOXNDZ0NwQjs7T0FJdUI7UUFGbkJxQjtRQUFKYjtRQUFKQztRQUUyQixPQXpCdkRHLGdCQXVCb0NTO1FBRWIsT0FBQSw0QkE2TnZCQyxvQkEvTmdDZDtPQUM5QixXQXNzQ0ZlLGNBdnNDNEJkOztXQUdJRTtPQUM5Qjs7O21CQUd1Qyw0QkE0TXpDMEIsV0FoTmdDMUIsT0FWWHhjOzs7UUF3RWtDK1g7UUFBSmhEO1FBQVo4YTtRQUFWQztRQXhEdkJDO21CQUFXcnZCO1dBQ2IsWUFEYUE7O1lBTUw7YUFKMEJnTjthQUkxQixPQXdaWm9QLGdCQTlaaUJwYztvQkFBQUE7WUFHVDtvQkFDSSw0QkFzTVp3ZCxXQXhNc0N4UTs7OztXQUszQixXQXZDWCtPLGdCQWdDaUIvYjtVQU84QztRQWlEdEN5QztRQUFJNnNCLGNBQUFGO1FBQVVHLGdCQUFBSjtRQUFZSyxRQUFBbmI7UUEvQ3JCMGEsU0ErQ3lCMVg7T0FDbkQ7UUFLUTtTQUFBLE9BMEtaZ0ksYUFoTG1EbVE7U0FLdkM7V0FBQSxpQ0E3Rlp6VCxpQkF3RnVDd1Q7U0FFN0J2TixrQkF1bkNWM0UsZUF6bkM2QmlTO1NBL0NKRyxnQkErQzBCRCxVQUV6Q3hOLGNBRmV2ZjtTQWNuQml0QixXQTdEbUJEO1NBQUt6dkIsSUFBQSt1Qjs7UUFDMUI7O2tCQUQwQi91QjtzQkFBQUE7Ozs7OztjQXNDbEI7ZUFYb0NxRztlQUFMaEU7ZUFVN0JrRSxlQTRRZGlaLGVBdFJnRG5aOytCQVVsQ0UsTUE5Q1I4b0IsVUFvQ3FDaHRCOzs7Y0FnQnhCO2VBRjZCb0c7ZUFBSkM7ZUFBTHBHO2VBRXpCb3NCLE9BQUssaUNBc1FuQmxQLGdCQXhRNEM5VztlQUc5QmluQixPQXFRZG5RLGVBeFFnRC9XO3VDQUVsQ2ltQixNQUNBaUIsUUFyRFJOLFVBa0RpQy9zQjs7O2NBckIzQjtlQXBCa0Jxc0I7ZUFrQlVydEI7ZUFsQmYzQixjQWtCZTJCLFVBQUFBLEtBMkNsQ291QjtlQUFBQSxXQTdEbUIvdkI7ZUFBS0ssSUFBQTJ1Qjs7O2lDQVR4QlUsVUFTd0JydkI7Ozs7V0FLakJrVCxRQTlJYjhiLDZDQXlJOEJodkI7OzBCQXpDOUIrYixvQkF5QzhCL2IsTUFBQUEsTUFBQUEsTUFLakJrVDthQXdEb0JyRixtQkFBakIraEI7U0FHZDtpQkFBaUMsMkJBSDdCRjtpQkFBVUU7aUJBQWlCL2hCOzs7U0Fkc0JrZ0I7U0FBSjVaO1NBQVowYjtTQUFWQztTQUFKcnRCLFFBY25CaXRCO1NBZHVCSixjQUFBUTtTQUFVUCxnQkFBQU07U0FBWUwsUUFBQXJiO1NBL0NyQjRhLFNBK0N5QmhCOzs7O09BcUJqRDtRQUg0QjNRO1FBQUpHOzttQkFJakJ4ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQWhIOUJnZCxnQkErR2tCSjtXQUNSLFdBaW1DVjBCLGVBbG1DY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDRCbUM7T0FDaEMsV0EzR0ZyQixnQkEwRzhCd0I7O09BU3NCO1FBRGxCRDtRQUFKSTtRQUNzQixPQUFBLDRCQXVIcERGLFdBeEhrQ0Y7T0FDaEMsV0FuSEZ2QixnQkFrSDhCMkI7O09BR29CO1FBRGxCRDtRQUFKRTtRQUNzQixPQUFBLDRCQXFIbERILFdBdEhnQ0M7T0FDOUIsV0FySEYxQixnQkFvSDRCNEI7O1dBRUNFO09BQzNCLFdBQTZCLDRCQXZIL0I5QixpQkFzSDZCOEI7O09BSU07UUFGR0Q7UUFBSkc7UUFFQyxPQUFBLGlDQTFIbkNoQyxpQkF3SHNDNkI7T0FDcEMsV0EybkNGckMsU0FOQU0sa0JBdG5Da0NrQzs7V0FHRUQsaUJBQUpHO09BQzlCO2VBRDhCQTtlQUVaLGlDQTdIcEJsQyxpQkEySG9DK0I7O09BVTlCO1FBUDZCRTtRQUFKRztRQU96QixPQUFBLGlDQXJJTnBDLGlCQThIbUNpQzs7bUJBR3RCamY7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0FuSXpDZ2QsZ0JBa0lrQko7V0FDUixXQWluQ1ZKLFNBTkFNLGtCQTVtQ2NaO1VBQzhDO09BSjFELFlBQ0ksa0NBRnlCa0Q7O09BVU47UUFGU0Q7UUFBSkk7UUFFTCxPQTRtQ3pCL0MsU0FOQU0sa0JBeG1Da0NxQztPQUNoQyxZQXZJRm5DLGdCQXNJOEJ1Qzs7T0FLeUI7UUFGZEY7UUFBSkM7UUFBSkU7UUFFc0IsT0EzSXZEeEMsZ0JBeUl5Q3FDO1FBRWhCLE9BeW1DekI3QyxTQU5BTSxrQkFybUNxQ3dDO09BQ25DLFlBMUlGdEMsZ0JBeUlpQ3dDOztXQUdKRztPQUMzQixZQUE2Qiw0QkE3SS9CM0MsaUJBNEk2QjJDOztPQUlnQjtRQUZGRjtRQUFKQztRQUFKRztRQUVVLE9BQUEsaUNBaEo3QzdDLGlCQThJMkN5QztRQUVsQixPQWhKekJ6QyxnQkE4SXVDMEM7T0FDckMsWUEvSUYxQyxnQkE4SW1DNkM7O09BSW9CLElBRGxCRCxpQkFBSkcsa0JBQ3NCLE9BbEp2RC9DLGdCQWlKcUM0QztPQUNuQyxZQWxKRjVDLGdCQWlKaUMrQzs7T0FHbUIsSUFEbEJELGtCQUFKTSxrQkFDc0IsT0FwSnBEcEQsZ0JBbUprQzhDO09BQ2hDLFlBcEpGOUMsZ0JBbUo4Qm9EOztPQVF4QjtRQU5zQ0o7UUFBSkM7UUFBSkM7UUFBSkM7UUFBSks7UUFNdEIsT0EzSk54RCxnQkFxSjRDZ0Q7UUFLdEMsT0EwRU5LLG9CQS9Fd0NKO1FBSWxDLE9BekpOakQsZ0JBcUpvQ2tEO1FBRzlCLE9BeEpObEQsZ0JBcUpnQ21EO09BQzlCLFlBa0hGRyxhQW5INEJFOztPQVE2QixJQURsQkQsa0JBQUpLLGtCQUNzQixPQTZMekRILGVBOUx1Q0Y7T0FDckMsWUE3SkZ2RCxnQkE0Sm1DNEQ7O09BSW9CO1FBRmhCRjtRQUFKQztRQUFKRztRQUV3QixPQTBMdkRMLGVBNUx1Q0M7UUFFZCxPQUFBLGlDQTBMekJELGdCQTVMbUNFO09BQ2pDLFlBL0pGM0QsZ0JBOEorQjhEOztPQUlvQjtRQURsQkQ7UUFBSkc7UUFDc0IsT0FrbENuRHhFLFNBeEJBdUUsWUEzakNpQ0Y7T0FDL0IsWUFsS0Y3RCxnQkFpSzZCZ0U7O1dBRUZFLGtCQUN6QixZQWdsQ0YxRSxTQU5BTSxrQkEza0MyQm9FOztPQUlFLElBRlVELGtCQUFKRSxrQkFFTixPQXZLN0JuRSxnQkFxS3VDaUU7T0FDckMsWUE4a0NGekUsU0F4QkF1RSxZQXZqQ21DSTs7O1FBR0hHOzttQkFHcEJ0aEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFc0IsT0E3S2xDZ2QsZ0JBNEtpQko7V0FDUixXQXVrQ1RKLFNBeEJBdUUsWUFoakNhN0U7VUFDd0M7T0FKbkQsWUFDRSxrQ0FGNEJvRjs7T0FXMUI7UUFKb0NGO1FBQUpDO1FBQUpJO1FBSTVCLE9BbkxOekUsZ0JBK0swQ29FO1FBR3BDLE9BNGRORyxpQkEvZHNDRjtPQUNwQztlQW9rQ0Y3RTswQkFua0NvQnhjO2dDQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2tCQUF0QixPQUFBLHVDQUFMQTtpQkFBOEI7aUJBRmhCeWhCOzs7O09BT0UsSUFGS0Qsa0JBQUpHLGtCQUVELE9BdExwQzNFLGdCQW9MeUN3RTtPQUN2QyxZQXkzQkZFLDJCQTEzQnFDQzs7V0FHUEMsa0JBQzVCLFlBeExGNUUsZ0JBdUw4QjRFOztXQUVGRSxrQkFDMUIsWUExTEY5RSxnQkF5TDRCOEU7O09BSUg7UUFGUUQ7UUFBSkU7UUFFSixPQUFBLGlDQTZKekJ0QixnQkEvSmlDb0I7T0FDL0IsWUE1TEY3RSxnQkEyTDZCK0U7O1dBR0NHLGtCQUM1QixZQW1ZRkYscUJBcFk4QkU7O09BSUMsSUFGS0Qsa0JBQUpFLGtCQUVELE9BbE0vQm5GLGdCQWdNb0NpRjtPQUNsQyxZQW1qQ0Z6RixrQkFsakNtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZPbWlCOztXQUdKRSxrQkFDMUIsWUEwY0ZkLGlCQTNjNEJjOztPQUc2QixJQUR4QkQsa0JBQUpHLGtCQUM0QixPQXRNekR2RixnQkFxTWlDb0Y7T0FDL0IsWUFvYkZFLHNCQXJiNkJDOztXQUVBRSxrQkFDM0IsWUFLRkQsV0FONkJDO21CQUVJdU8sa0JBQy9CLFlBK3FCRnRPLGVBaHJCaUNzTzs7O1lBSWpDeE87SUFDSDtLQUFzRDFUO0tBQXhCQztLQUF4QkM7S0FJc0IsT0FsTnpCZ08sZ0JBOE1tRGxPO0tBRzFCLE9BQUEsNEJBSXpCNlQsaUJBUDJCNVQ7SUFDN0IsV0FNRTRULGdCQVBHM1Q7R0FLSjtZQUVDMlQ7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVEwQixPQWhPN0IvRixnQkEwTkc2RjtLQUswQixPQXlDN0J2QyxhQS9DR3dDO0lBSUw7WUF1aENFdEcsa0JBdGhDMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FON0MraUI7OztZQUdBSDtHQU9KO1lBRUN2QywyQkFFRixxQkFFb0Q7WUFFbEQ1QjtJQUNIO0tBR01uRTtLQURBQztLQURBQztLQU93QixPQW5QM0J3QyxnQkE4T0cxQztLQUkwQixPQUFBLGlDQWxQN0IwQyxpQkE2T0d6QztJQUdMLFdBd0JFK0YsYUE1Qkc5RjtHQVFKO1lBRUNrRDtJQUVIO0tBS000RjtLQURBQztLQURBQztLQURBQztLQURBQztLQVdnQyxPQTBMbkNyRyxnQkFsTUdrRztLQU9EO09BQUEsaUNBc0VGSSx1QkE5RUdIO0tBTTBCLE9BalE3QnhHLGdCQTBQR3lHO0lBS0wsV0FTRW5ELGFBZkdvRCw0QkFJQUo7R0FTSjtZQUVDaEQ7SUFDSDtLQUlNc0Q7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0EyS3BDMUcsZ0JBakxHdUc7S0FLZ0MsT0F1Rm5DdEcsb0JBN0ZHdUc7SUFHTCxXQU9FRyxrQkFaR0QsWUFDQUQ7R0FTSjtZQUVDRTtJQUNtRSw4QkFDckM7OztXQUNIOUgsZUFDekIsV0EwOUJGTSxrQkExOUI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUR2QmtjOztPQUdzQjtRQURmVTtRQUFKUjtRQUNtQixPQXc5QmpESSxrQkF4OUIrRHhjLEdBQUssT0FBTEEsRUFBTSxHQURuQzRjO09BQ2hDLFdBcEJGMEQsYUFtQjhCbEU7O1dBRUVTLGlCQUM5QixXQXE4QkZXLGNBdDhCZ0NYOztPQUdxQixJQURoQndCLGlCQUFKdEIsaUJBQ29CLE9BbThCckRTLGNBcDhCcUNhO09BQ25DLFdBbThCRmIsY0FwOEJpQ1Q7O1dBRUp5QjtPQUMzQixXQUE2Qiw0QkExQi9COEIsY0F5QjZCOUI7O09BS3ZCO1FBSGdDRDtRQUFKSTs7bUJBSXJCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFOEMsT0FqQzNEc2dCLGFBZ0NrQjFEO3lCQUNPNWMsR0FBSyxPQTI4QjlCd2Msa0JBMzhCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO1dBQTNDLFdBQUMsa0NBREdrYztVQUM2RDtRQUhyRSxPQUFBLHVDQUhnQ3FDO09BQ3BDLFdBZzlCRi9CLFNBTkFNLGtCQTM4QmtDNkI7O1dBUUVELGlCQUFKRTtPQUM5QixXQUQ4QkEsTUFDaUIsaUNBcENqRDBCLGNBbUNvQzVCOztPQVM5QjtRQVA2Qkc7UUFBSkM7UUFPekIsT0FtNkJObUYsaUJBMTZCbUNwRjs7bUJBR3RCN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0ExQ3pDc2dCLGFBeUNrQjFEO1dBQ1IsV0FrOEJWSixTQU5BTSxrQkE3N0JjWjtVQUMyQztPQUp2RCxXQUNJLGtDQUZ5QjRDOztXQVFGRTtPQUMzQixXQUE2Qiw0QkE5Qy9Cc0IsY0E2QzZCdEI7O09BR2lCLElBRGZELGlCQUFKRyxpQkFDbUIsT0FoRDlDb0IsYUErQytCdkI7T0FDN0IsV0FoREZ1QixhQStDMkJwQjs7T0FHMkIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWdDdERxQixlQWpDdUN4QjtPQUNyQyxZQWxERnFCLGFBaURtQ2xCOztXQUVQRyxrQkFDMUIsWUF3N0JGL0MsU0FOQU0sa0JBbjdCNEJ5Qzs7V0FFQUMsa0JBQzFCLFlBdERGYyxhQXFENEJkOztXQUVFRztPQUM1QjtlQW83QkZuRDswQkFuN0JtQnhjO2dDQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2tCQUF0QixPQUFBLHVDQUFMQTtpQkFBOEI7aUJBRm5CMmY7O1dBR0dFLGtCQUMvQixZQTNERlMsYUEwRGlDVDs7V0FFQUUsa0JBQy9CLFlBb2pCRjJDLGVBcmpCaUMzQzs7T0FHNEIsSUFENUJaLGlCQUFKaUIsa0JBQ2dDLE9BL0Q3REUsYUE4RGlDbkI7T0FDL0IsWUE2NkJGM0MsU0FOQU0sa0JBeDZCNkJzRDs7R0FDZ0Q7WUFFN0V1RDtJQUVGO0tBTWM7TUFMaUR0TztNQUExQjZPO01BS3ZCLE9BU1p6RCxlQWQ2RHBMO3NCQUk3QnJWLEdBQUssT0FBTEEsRUFBTTtNQUFyQixzQixPQW82QmpCd2M7S0F0NkJJO2FBRUksa0NBSjJCMEg7OztJQVdsQjtLQUp3QkM7S0FBUkM7S0FJaEIsT0FHakIzRCxlQVB5QzBEO0lBRXJDLFdBQ1csaUNBSWYxRCxnQkFQaUMyRDtHQUs1QjtZQUVMM0Q7SUFFSDtLQUlNNEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F3RnBDbkgsZ0JBOUZHZ0g7S0FLZ0MsT0FJbkMvRyxvQkFWR2dIO0lBR0wsV0FXRUcsb0JBaEJHRCxZQUNBRDtHQVNKO1lBRUNqSCxvQkFFQ3RkO0lBQUssT0FBQSw0QkErNEJOMGtCLGVBLzRCQzFrQjtHQUE2QjtZQUU5QnlrQjtJQUVGLDhCQUNnQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdnQjtRQUZMdUI7UUFBSmI7UUFBSlI7UUFFYSxPQTFCM0NxRSxlQXdCc0NoRDtRQUVkLE9BMUJ4QmdELGVBd0JrQzdEO09BQ2hDLFdBODFCRjBCLGVBLzFCOEJsQzs7V0FHRFM7T0FDM0IsV0FBNkIsNEJBNUIvQjRELGdCQTJCNkI1RDs7T0FJTTtRQUZBd0I7UUFBSnRCO1FBRUksT0FBQSw0QkEvQm5DMEQsZ0JBNkJtQ3BDO09BQ2pDLFdBNDNCRjdCLFNBTkFNLGtCQXYzQitCQzs7T0FLSyxJQUZEd0IsaUJBQUpDLGlCQUVLLE9BMjFCcEN5RixpQkE3MUJtQzFGO09BQ2pDLFdBQ0csNEJBcURMb0csbUJBdkQrQm5HOztPQUtJO1FBRkRFO1FBQUpDO1FBRUssT0FBQSw0QkFyQ25DOEIsZ0JBbUNrQy9CO09BQ2hDLFdBczNCRmxDLFNBTkFNLGtCQWozQjhCNkI7O09BS04sSUFGVUUsaUJBQUpELGlCQUVOLFdBRlVDLE1BQUpEO09BQzVCLFdBdkNGNkIsZUFzQzhCN0I7O09BT3hCO1FBSmtDUztRQUFKTjtRQUFKRDt3QkFJVjllLEdBQUssT0FBQSw0QkFxMUIzQitnQixZQXIxQnNCL2dCLEdBQTBCO1FBQTFDLE9BQUEsdUNBSmtDcWY7UUFHbEMsT0FpMUJONEUsaUJBcDFCb0NsRjtPQUNsQztlQUNJLDRCQXNCTjZGLGdCQXhCZ0M5Rjs7OztPQU9xQjtRQUZwQkc7UUFBSkQ7UUFFd0IsT0FoRHJEeUIsZUE4Q2lDeEI7d0JBRWRqZixHQUFLLE9BMDJCeEJ3YyxrQkExMkJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7T0FEN0MsV0FDRyxrQ0FGd0JnZjs7V0FHRUUsaUJBQzdCLFdBSUYyRixrQkFMK0IzRjttQkFFRUUsaUJBQy9CLFlBMmVGc0QsZUE1ZWlDdEQ7O0dBQ3FCO1lBRXREeUYsa0JBRUM3a0I7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGM7a0JBSU1BO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BOURuQ3lnQixlQTZEWTdEO0tBQ1IsV0E0MUJKSixTQU5BTSxrQkF2MUJRWjtJQUM2QztJQUhyRCxXQUFBLGtDQUZNVTtJQUNSLFdBZzJCRUosU0FOQU0sa0JBMzFCRVo7R0FNSTtZQUVOMEk7SUFFSDtLQUdNRTtLQURBQztLQURBeE47S0FPZ0MsT0F5Qm5DOEYsZ0JBOUJHeUg7SUFFTCxXQU1FRSxvQkFWR3pOLFdBQ0F3TjtHQU9KO1lBRUNDO0lBRUY7S0FHbUM7TUFGRHZIO01BQUpiO01BQUpWO01BRVMsT0FBQSw0QkFuRmpDdUUsZ0JBaUZnQ2hEO0tBQzlCLFdBdzBCRmpCLFNBeEJBdUUsWUFqekJ3QjdFLEtBQUlVOztRQUdEUjtJQUN6QixXQXJGRnFFLGVBb0YyQnJFO0dBQ3FCO1lBRWhEdUk7SUFFSDtLQUdNTTtLQURBQztLQURBMU47S0FPZ0MsT0FHbkM2RixnQkFSRzRIO0lBRUwsV0FpeEJFRSx1QkFyeEJHM04sV0FDQTBOO0dBT0o7WUFFQzdILGdCQUVDcmQ7SUFBSyxPQUFBLDRCQUVOb2xCLGdCQUZDcGxCO0dBQThCO1lBRS9Cb2xCO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7OzRCQUFBQTtVQWNIQyxhQWJHRjtVQWFIRSxhQTVnQkE0Siw0QkErZkc5SjtJQUdMLFdBMnlCRTlJLGtCQTF5QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCLGtCQUVBRjtHQVVKO1lBRUNHO0lBQ0Y7O1dBQ3lCdEosZUFBTSxXQU03QkMsZUFOdUJEOztXQUNBRSxpQkFBTSxXQTBSN0JxSixlQTFSdUJySjs7V0FDQVMsaUJBQU0sV0E3SDdCNEQsZUE2SHVCNUQ7O09BRW9CO1FBRGZEO1FBQUpHO1FBQ21CLE9BQUEsaUNBemQzQ0MsaUJBd2Q0Qko7T0FDMUIsV0FqTkYwRCxhQWdOd0J2RDs7R0FDaUQ7WUFFekVaLGVBRUNuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O09BRVcsSUFEbEJqSixlQUFKVixlQUNzQixPQTdDbkRtQixnQkE0Q2lDVDtPQUMvQixXQTNlRkksZ0JBMGU2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBeFB2QnNCLG9CQXNQa0NXO09BQ2hDLFdBaXZCRlYsY0FsdkI4QnZCOztXQUdHUyxpQkFDL0IsV0F3c0JGaUosdUJBenNCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkFzbEJ2QmdKLHVCQXhsQmlDeEg7T0FDL0IsV0E0dUJGWixjQTd1QjZCWjs7V0FHQ3lCLGlCQUM1QixXQThoQkZ3SCxvQkEvaEI4QnhIOztXQUVHRyxpQkFDL0IsV0E4Z0JGc0gsb0JBL2dCaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0F1ZEZtSCw2QkF4ZCtCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkE4Uko4Ryw2QkFoU2tDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQXRFRnlGLGVBcUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BNUV2RHhDLGdCQTJFc0NxQjtPQUNwQyxZQStXRmdFLGVBaFhrQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0F3Wk51bUIsbUJBelJBaEYsa0JBL0hDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0E0V053bUIsaUJBMVdBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BakduQ3ZKLGdCQTRGR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGRGpLO1FBQUpWO1FBRUssT0FBQSw0QkE3TW5DdUUsZ0JBMk1rQzdEO09BQ2hDLFdBOHNCRkosU0FOQU0sa0JBenNCOEJaOztXQUdFRSxpQkFDOUIsV0F5QkY0RixxQkExQmdDNUY7O09BTzFCO1FBTGlDNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtyQixPQTFCTjRKLGdCQXFCdUN4RztRQUlqQyxPQXRTTkssYUFrU21DN0M7UUFHN0IsT0FBQSxpQ0E3aUJOVCxpQkEwaUIrQnFCO09BQzdCLFdBc3FCRkMsZUF2cUIyQnpCOztPQVNyQjtRQUgyQjBCO1FBQUp4Qjs7bUJBSWhCL2M7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F0akI5QmdkLGdCQXFqQmtCSjtXQUNSLFdBMnBCVjBCLGVBNXBCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDJCcUM7T0FDL0IsV0E1QkZrSSxnQkEyQjZCMUo7O09BVTBCO1FBRnBCc0M7UUFBSlg7UUFBSkY7UUFFNEIsT0FyQ3ZEaUksZ0JBbUNtQ3BIO1FBRVosT0FBQSw0QkFwVXZCM0Isb0JBa1UrQmdCO09BQzdCLFdBcXFCRmYsY0F0cUIyQmE7O09BSTZCLElBRGxCSyxpQkFBSkYsaUJBQ3NCLE9BK094RG1JLGdCQWhQc0NqSTtPQUNwQyxXQXZDRjRILGdCQXNDa0M5SDs7V0FFRkMsaUJBQzlCLFdBMlRGOEQsZUE1VGdDOUQ7O09BR3dCLElBRHhCRyxpQkFBSkQsaUJBQzRCLE9BM0N4RDJILGdCQTBDZ0MxSDtPQUM5QixXQXdYRmdJLHNCQXpYNEJqSTs7R0FDK0M7WUFFM0VrRDtJQUVIO0tBQW9DZ0Y7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyxrQkFOaUNGO0lBQ25DLFdBN1RFMUcsYUE0VEcyRztHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0F0Sm5DaEssZ0JBaUpHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7d0JBSVRsYyxHQUFLLE9Bc3BCM0J3YyxrQkF0cEJ5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7UUFBNUMsT0FBQSx1Q0FKaUN5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQW9YRjJLLG1CQXJYK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9Bc2tCOUJvSSxrQkF2a0JhcEo7T0FEWCxlQW9wQkY3QixTQXhCQXVFLFlBM25CU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9Bc2dCOUJpSSxrQkF2Z0Jhbko7T0FEWCxlQWdwQkYvQixTQXhCQXVFLFlBdm5CU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQWhSekI4QixlQStRYS9CO09BRFgsZUE5UUYrQixlQStRUzdCOztXQUV5QkUsaUJBQ2hDLFdBNW1CRjlCLGdCQTJtQmtDOEI7O1dBRUZFLGlCQUM5QixXQTVLRm9HLGVBMktnQ3BHO21CQUVBRSxpQkFDOUIsV0F5UUZ3RCxlQTFRZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBNVJGdUUsZUEyUjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQXhuQnpEWSxnQkF1bkJvQ0o7SUFDbEMsV0F1VkYySyxtQkF4VmdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9BZ1VOMm5CLGdCQTlTQXBHLGtCQWxCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVNnQyxPQTVNbkMxSyxnQkFxTUd3SztLQU0wQixPQUs3QnRHLGlCQVpHdUc7SUFJTDtZQThtQkV0TDt1QkE1bUJnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDK25COzs7WUFHQUg7R0FRSjtZQUVDckc7SUFFSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPaUMsT0ExTnBDN0ssZ0JBcU5HMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQmpNLGVBQzNCLFdBcWxCRk0sU0FOQU0sa0JBaGxCNkJaOztXQUVJRSxpQkFDL0IsV0F0TUZELGVBcU1pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDMEUsaUJBb0JvQzNFO09BQ2xDLFdBY0Z3TCx1QkFmZ0N2TDs7T0FJcUIsSUFEbkJ3QixpQkFBSnRCLGlCQUN1QixPQXhCckR3RSxpQkF1QmtDbEQ7T0FDaEMsV0F4QkZrRCxpQkF1QjhCeEU7O1dBRUl5QixpQkFDaEMsV0ExQkYrQyxpQkF5QmtDL0M7O09BSVIsSUFGYUQsaUJBQUpJLGlCQUVULE9BYzFCMEosaUJBaEJ1QzlKO09BQ3JDLFdBNUJGZ0QsaUJBMkJtQzVDOztXQUdMQyxpQkFDNUIsV0E3cUJGNUIsZ0JBNHFCOEI0QjttQkFFR0UsaUJBQy9CLFdBME1GNEQsZUEzTWlDNUQ7O0dBQ3FCO1lBRXREc0o7SUFFRixZQUM0QjtJQUc2QixJQUYxQnhMLGVBQUpWLGVBRThCLE9BRXZEbU0saUJBSjZCekw7SUFDM0I7WUE4akJGSjt1QkE3akJtQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBRnhCa2M7O0dBRWtEO1lBRTNFbU07SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQXJRcENuTCxnQkFnUUdpTDtJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQytCdk0sZUFDM0IsV0EwaUJGTSxTQU5BTSxrQkFyaUI2Qlo7O1dBRUlFLGlCQUMvQixXQW9DRnFKLGVBckNpQ3JKOztPQUlELElBRklRLGVBQUpDLGlCQUVBLE9BdEJoQ3dMLGlCQW9Cb0N6TDtPQUNsQyxXQTdCRndMLHVCQTRCZ0N2TDs7T0FLTjtRQUZPd0I7UUFBSnRCO1FBRUgsT0FBQSw0QkFRMUIyTCxzQkFWaUNySztPQUMvQixXQXhCRmdLLGlCQXVCNkJ0TDs7V0FHQ3lCLGlCQUM1QixXQXRFRitDLGlCQXFFOEIvQzs7V0FFR0csaUJBQy9CLFdBbUtGK0QsZUFwS2lDL0Q7O1dBRUpDLGlCQUMzQixXQTRoQkZwQyxTQU5BTSxrQkF2aEI2QjhCOztHQUNnQztZQUU3RDhKO0lBRUY7O09BR3FDLElBRkQ5TCxlQUFKVixlQUVLLE9BMFduQzZKLHNCQTVXa0NuSjtPQUNoQyxXQXNoQkZKLFNBTkFNLGtCQWpoQjhCWjs7T0FLSztRQUZDbUM7UUFBSmpDO1FBRUcsT0FraEJuQ0ksU0FOQU0sa0JBOWdCb0N1QjtPQUNsQyxXQW1oQkY3QixTQU5BTSxrQkE5Z0JnQ1Y7O09BS0csSUFGRW1DLGlCQUFKMUIsaUJBRUUsT0E1Q25Dd0wsaUJBMENxQzlKO09BQ25DLFdBZ2hCRi9CLFNBTkFNLGtCQTNnQmlDRDs7T0FLRSxJQUZPNkIsaUJBQUozQixpQkFFSCxPQS9DbkNzTCxpQkE2QzBDM0o7T0FDeEMsV0E2Z0JGbEMsU0FOQU0sa0JBeGdCc0NDOztPQUtIO1FBRkk4QjtRQUFKTDtRQUVBLE9BOFZuQ3VILHNCQWhXdUNsSDtPQUNyQyxXQTBnQkZyQyxTQU5BTSxrQkFyZ0JtQzBCOztPQUtBO1FBRkdPO1FBQUpKO1FBRUMsT0FzZ0JuQ25DLFNBTkFNLGtCQWxnQnNDaUM7T0FDcEMsV0F1Z0JGdkMsU0FOQU0sa0JBbGdCa0M2Qjs7R0FFOEI7WUFFaEU4RyxlQUVDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7V0FDWDVNLGVBQzNCLFdBd2JGNEosdUJBemI2QjVKOztPQUlOO1FBRlVVO1FBQUpSO1FBRU4sT0FBQSw0QkFzVXZCMkosdUJBeFVpQ25KO09BQy9CLFdBNGRGZSxjQTdkNkJ2Qjs7V0FHSVM7T0FDL0IsV0FBaUMsNEJBb1VuQ2tKLHVCQXJVaUNsSjs7V0FFSEUsaUJBQzVCLFdBNFFGaUosb0JBN1E4QmpKOztXQUVHeUIsaUJBQy9CLFdBNFBGeUgsb0JBN1BpQ3pIOztXQUVIRyxpQkFDNUIsV0F5T0ZvSyx3QkExTzhCcEs7O1dBRUVDLGlCQUM5QixXQXVORm9LLHlCQXhOZ0NwSzs7V0FFQ0U7T0FDL0IsV0FBaUMsNEJBcU9uQ2lLLHlCQXRPaUNqSzs7V0FFRkUsaUJBQzdCLFdBbU1GbUgsNkJBcE0rQm5IOztXQUVLRSxpQkFDbEMsV0FpTUZpSCw2QkFsTW9Dakg7O1dBRVJFLGlCQUMxQixZQW1LRjJILHNCQXBLNEIzSDs7V0FFR0csa0JBQzdCLFlBMklGMEoseUJBNUkrQjFKOztXQUVGQztPQUMzQixZQUE2Qiw0QkFjL0IwSix3QkFmNkIxSjs7V0FFS0c7T0FDaEM7ZUFDRSw0QkFNSjBHLDZCQVJrQzFHOztXQUdERSxrQkFDL0IsWUE1VkZ1RixlQTJWaUN2Rjs7T0FHc0IsSUFEakJ4QixpQkFBSjBCLGtCQUNxQixPQWxXdkQxQyxnQkFpV3NDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0MzQzs7R0FDd0M7WUFFMUVzRyw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BdlhwQ2hNLGdCQWtYRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkFuZW5DdUUsZ0JBaWVtQzdEO09BQ2pDLFdBd2JGSixTQU5BTSxrQkFuYitCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0F4ZXhCZ0QsZUFzZWtDcEM7T0FDaEMsV0FnWkZDLGVBalo4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWtIRndJLHNCQW5INkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0FqZkUvSSxlQWdmR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQTVacEN4TSxnQkF1WkdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixPQTlnQlBxRSxlQTBnQnFCUjtRQUdkLE9Bc0RQOEosa0JBekRpQnRNO1FBRVYsT0FrVVBnSyxrQkFwVWE3SztPQURYLGVBaVpGSixTQXhCQXVFLFlBeFhTbEU7O09BTVA7UUFENEJFO1FBRVRpTixPQUZTak47UUFFYnNDLE9BRmF0QztRQUVqQnNCLE9BRmlCdEI7UUFFckJ5QixPQUZxQnpCO1FBTXZCLE9BcmhCUDBELGVBaWhCcUJ1SjtRQUdkLE9BK0NQRCxrQkFsRGlCMUs7UUFFVixPQStQUHFJLGtCQWpRYXJKO09BRFgsZUEwWUY3QixTQXhCQXVFLFlBalhTdkM7O09BTVA7UUFEZ0NHO1FBRXJCSixPQUZxQkk7UUFFekJDLE9BRnlCRDtRQUdULE9BemhCekI4QixlQXdoQmFsQztPQURYLGVBdmhCRmtDLGVBd2hCUzdCOztXQUV3QkUsaUJBQy9CLFdBbmJGc0csZUFrYmlDdEc7bUJBRUFFLGlCQUMvQixXQUVGMEQsZUFIaUMxRDs7R0FDcUI7WUFFdEQwRCxlQUVDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BMWF6QndsQixhQXlhTTVJO0lBQ1IsV0F1WEVKLGtCQXZYYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBb0JnQyxNQTVkbkNsTixnQkE2Y0c2TTtLQWEwQixNQUFBLFdBcEI1QkQsSUFLRUc7S0FjMEIsT0E2VjdCNU4sa0JBN1YyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWY5Q3FxQjtrQkFTTXJxQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsT0F3UjNCNE4saUJBelJnQm5NO01BQ1IsV0E2UlJvTSxjQTlSWXJPO0tBRE4sV0F6akJOcUUsZUF3akJVdkU7SUFHdUM7SUFML0MsV0FBQSxrQ0FUQ29PO0lBTUwsV0FnQkVQLGtCQXZCR1EsNEJBSUFKO0dBaUJKO1lBRUNKLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQTlPQThCLGtCQTRPQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsTUF2ZnJDdk4sZ0JBa2ZHcU47SUFFTCxXQUNnQyxXQVA3QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQsc0JBRUMvbUI7SUFBSyxPQUVOMm5CO3NCQUYyQjNuQixHQUFLLE9BMFRoQ3djLFNBTkFNLGtCQXBUMkI5YyxHQUFnQyxHQUExREE7R0FBNkQ7WUFFOUQybkIsZ0JBS0NzQztJQUFKO0tBS01ZO0tBREFDO0tBREFDO0tBREFDO0tBU2tDLE1BOWdCckMzTixnQkF3Z0JHd047S0FJZ0MsTUFLbkN0RCxtQkFYR3dEO0lBSUwsV0FDaUMsV0FSOUJkLElBRUVlLGtCQUVBRjtHQVFKO1lBRUN2RCwwQkFDbUUscUJBRW5CO1lBRWhEcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRaUMsTUFsaUJwQy9OLGdCQTRoQkc2TjtLQUsyQixNQUFBLGlDQXRTOUI3QyxrQkFnU0c4QztJQUlMO1lBdVJFM08sa0JBdFI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2pDO0lBR0g7S0FJTXFDO0tBREFDO0tBREFDO0tBREFDO0tBUWdDLE1BbGpCbkNuTyxnQkE0aUJHaU87S0FLOEIsTUFxUWpDOU8sU0FOQU0sa0JBclFHeU87SUFJTCxXQXVRRS9PLGtCQXRRMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOOUN3ckIscUJBR0FIO0dBT0o7WUFFQ3RDO0lBR0g7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBU2dDLE1BbmtCbkN2TyxnQkE0akJHcU87S0FNMEIsTUF2VTdCckQsaUJBZ1VHc0Q7SUFJTDtZQXVQRW5QO3VCQXJQZ0J4Yzs0QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHNDQUFMQTtjQUE4QjtjQVAzQzRyQjs7O1lBR0FIO0dBUUo7WUFFQ3hGO0lBRUg7S0FHTTRGO0tBREFDO0tBREFDO0tBUW1DLE1BbGxCdEMxTyxnQkE0a0JHd087SUFFTDtZQWtDRW5LLDJCQXRDR3FLO1lBQ0FEOztHQVFKO1lBRUM5RjtJQUVIO0tBTU1nRztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQXFCbUMsTUE3bUJ0Q2hQLGdCQTZsQkcyTztLQWNnQyxNQW1FbkN0RSxrQkFuRkd3RTtLQWVEO09BQUE7MEJBTUZ4Syw0QkF0Qkd5SztpQkFTTW5zQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUF3STNCNE4saUJBeklnQm5NO01BQ1IsVUE2SVJvTSxjQTlJWXJPO0tBRE4sV0F6c0JOcUUsZUF3c0JVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ2tRO0lBTUw7WUF1TkU1UCxTQU5BTSxrQkF4Tkd1UDs7OztZQUlBSjs7R0FrQko7WUFFQ3ZLO0lBR0g7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE1BN25CcENwUCxnQkF1bkJHaVA7S0FJMkIsTUFLOUJJLCtCQVhHRjtJQUlMO1lBNkxFaFEsa0JBNUw0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFK0M7S0FLekM7TUFKK0JqUDtNQUFKYjtNQUFKVjtNQUl2QixNQUFBLGlDQTN1Qk51RSxnQkF1dUJxQ2hEO01BRy9CLE1BMkVOa1AsMkJBOUVpQy9QO3FCQUViNWMsR0FBSyxPQWlMekJ3YyxrQkFqTHVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtLQUQ5QyxXQUNJLGlDQUZ1QmtjOztRQUtDRTtJQUM1QixXQTZLRkksU0FOQU0sa0JBeEs4QlY7R0FDZ0M7WUFFOUQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTRCa0MsTUExcUJyQzlQLGdCQW9wQkd3UDtLQXFCZ0MsTUFBQSxpQ0E3d0JuQ3BNLGdCQXV2QkdxTTtLQXFCK0IsTUFNbENwRixrQkE1QkdxRjtLQXFCNEIsTUFZL0JLLGVBbENHSjtpQkFrQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXp3QjFCeWdCLGVBd3dCYzdEO0tBQ1IsV0F6d0JONkQsZUF3d0JVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBbEJDd1A7aUJBV01qdEI7S0FDSDtNQUFRNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFHT3FlLE9BRkZ6QjtNQUVGUixPQUZFUTtNQUdhLE1BZ0YzQjROLGlCQWpGZ0JuTTtNQUNSLFVBcUZSb00sY0F0RllyTztLQUROLFdBandCTnFFLGVBZ3dCVXZFO0lBR3VDO0lBTC9DLFVBQUEsaUNBWENnUjtJQVFMO1lBK0pFMVEsa0JBOUo2Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVZoRG10Qjs7Ozs7OztZQU9BUDtHQXVCSjtZQUVDbEYseUJBQ2lFLHFCQUVmO1lBRWxEMEY7SUFDRTs7U0FFOEJsUjtLQUM5QixXQUFnQyw0QkFLbENtUiw4QkFOZ0NuUjs7UUFFREU7SUFDN0IsV0FBK0IsNEJBZ0NqQ2tSLHdCQWpDK0JsUjtHQUU2QjtZQUU1RGlSO0lBR0g7S0FNTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FjZ0MsTUE5c0JuQ3ZRLGdCQXFzQkdrUTtLQU95QixNQUFBLGlDQWh6QjVCOU0sZ0JBdXlCR2dOO0tBUTBCLE1BTTdCZCwyQkFmR2U7aUJBUWExdEIsR0FBSyxPQTRHckJ3YyxrQkE1R21DeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtJQUExQyxVQUFBLGlDQVRDMnRCO0lBTUw7WUErR0VuUixrQkE5RzJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUjlDNHRCOzs7O1lBSUFKOztHQVdKO1lBRUNiO0lBRTBDO1NBQ1p6UTtLQUM1QixXQUE4Qiw0QkF6ekJoQ3VFLGdCQXd6QjhCdkU7O1FBRUNFO0lBQzdCLFdBQStCLDRCQUVqQ2tSLHdCQUgrQmxSO0dBQ3NDO1lBRXJFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVdnQyxNQXZ1Qm5DNVEsZ0JBZ3VCR3dRO0tBSzBCLE1BejBCN0JwTixlQWswQkdzTjtLQU02QixNQU1oQ3RHLGtCQWJHdUc7SUFLTDtZQW9GRXhSLGtCQW5GMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ2lFLHFCQUViO1lBRXBEK0Msd0JBQytELHFCQUVDO1lBRWhFQztJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSDs7R0FBMkI7WUFFMUQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVVpQyxNQXZ3QnBDalIsZ0JBZ3dCRzhRO2lCQU15Q251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVAzQm91QjtLQU0yQixNQXoyQjlCM04sZUFrMkJHNE47SUFLTDtZQW1ERTdSLGtCQWxENEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQL0NzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDL0k7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BbjNCbER1RSxlQWszQjRCN0Q7S0FDMUIsV0F1Q0ZKLFNBeEJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBcjNCRnFFLGVBbzNCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDRjs7V0FDd0NaLGVBQUpWLDhCQUNzQmxjLEdBQUssT0FBTEEsRUFBTTtPQUE1RCxXQURnQ2tjLElBQ00sc0NBREZVOztXQUVSUixpQkFBTSxXQUFOQTs7O1FBQ1dxQjtRQUFKWTtRQUFKeEI7dUJBRVU3YyxHQUFLLE9BQUxBLEVBQU07T0FEL0MsV0FEK0I2YyxNQUFJd0IsTUFFVixzQ0FGY1o7O1dBR0xjLGlCQUFKeEIsZ0NBQ3NCL2MsR0FBSyxPQUFMQSxFQUFNO09BQTFELFdBRDhCK2MsTUFDTSxzQ0FERndCOztHQUM2QjtZQUVqRXpCO0lBQWdEOztXQUMvQlosZUFBTSxXQUFOQTs7V0FDR1UsZUFBSlI7T0FBVyxXQUYzQlUsaUJBRWdCVixPQUFJUTs7T0FFcUIsSUFEbkJ5QixpQkFBSnhCLGlCQUN1QixNQUp6Q0MsaUJBR3NCdUI7T0FDcEIsV0FKRnZCLGlCQUdrQkQ7O0dBQzJDO1lBRTdETCxTQUdDeU47SUFBSixJQUErQjFwQixnQkFBdEJZO0lBQ1IsV0FBeUIsV0FEdEI4b0IsSUFBSzlvQixNQUFzQlo7R0FDNkM7WUFFekVta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNOzs7O09BMTFDckRpd0I7T0FVQXJCO09Bb0JBSztPQVNBRztPQWdCSW5UO09BUUpJO09BY0FFO09BU0FJO09BVUFLO09BZ0JBTztPQTZMQWlGO09BUUFHO09BZUF0QztPQU1BNUI7T0FZQWY7T0FrQkE0QztPQWNBMEQ7T0FtREFMO09BaUJBbEQ7T0FlQW5EO09BSUFtSDtPQW1DQUk7T0FXQUQ7T0FhQUk7T0FTQUw7T0FhQXRIO09BSUErSDtPQWlCQUk7T0FRQXJKO09BSUF1SjtPQVFBRztPQXFDQVM7T0FLQUY7T0FJQUs7T0FhQUk7T0FnQ0E3RTtPQVFBa0Y7T0FhQUk7T0EyQkFFO09BUUFsRjtPQUlBNEQ7T0FnQkEzRTtPQWFBNEc7T0FzQkFDO09BUUFDO09BYUFJO09Bb0JBQztPQXNCQWpEO09BSUFrRDtPQVFBRztPQXNDQXpDO09BS0E2QztPQUlBcEM7T0FhQXdDO09BZ0JBQztPQVFBRztPQWFBSTtPQTRCQXBIO09BTUE4RDtPQThCQXVEO09BS0FkO09BS0ExQztPQWlCQVE7T0FJQVk7T0FtQkFKO09BS0FwQjtPQWdCQTZDO09BZ0JBRDtPQWlCQTlDO09BY0FEO09BMkJBdEU7T0FnQkFnTDtPQVdBM0c7T0FtQ0EyQjtPQUtBMEY7T0FTQUM7T0FxQkFWO09BUUFXO09BaUJBN0Y7T0FLQStDO09BS0FDO09BTUEzRTtPQWlCQVg7T0FRQTdHO09BTUEyRjtPQUtBbEQ7T0FFQXBEO09BS0FIO09BV0FWO09BTUFOO09BTUFrSTs7OztFOzs7Ozs7O0dDLzFDYzs7SUFTWi9pQjtJQUNBQztJQVZZO0lBSUM7SUFJSCxhQUNWRCx1QkFDQUM7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O1lDUkVxYTtJQUVOLHVCQUM2QkMsZUFDekIsV0Fra0JGQyxlQW5rQjJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU8wQixPQTQyQzdCNkosY0FqM0NHcEk7S0FJMEI7T0FBQSxpQ0FJN0JDLHlCQVRHekI7SUFHTCxXQXkyQ0UwQixrQkF4MkM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhO0dBUUo7WUFFQzBCO0lBR0g7S0FBb0NFO0tBQTlCQztLQUcyQixPQW0yQzlCZ0ksY0F0MkNpQ2pJO0lBQ25DLFdBS0VFLDZCQU5HRDtHQUlKO1lBRUNDO0lBRTRDOztXQUNkVCxlQUFNLFdBQU5BOztXQUNFVSxlQUFKUixpQ0FDc0JwYyxHQUFLLE9BQUxBLEVBQU07T0FBdEQsV0FEMEJvYyxNQUNNLHVDQURGUTs7V0FFSEMsaUJBQzNCLFdBNjBDRkMsaUJBOTBDNkJEO21CQUVERSxpQkFBTSxXQUFOQTs7R0FBb0M7WUFFaEVDO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F3ZnBDQyxnQkE5ZkdKO0tBS2dDLE9BcWFuQ0ssb0JBM2FHSjtLQUswQixPQTQwQzdCd0gsY0FsMUNHdkg7SUFJTCxXQU9FSSxxQkFaR0g7R0FVSjtZQUVDRztJQUVGLDhCQWlId0M7OztXQWhIVHJCLGVBQzNCLFdBNnpDRk0sU0FOQU0sa0JBeHpDNkJaOztXQUVHRSxpQkFDOUIsV0EweUNGb0IsY0EzeUNnQ3BCOztPQUl1QjtRQUZuQnFCO1FBQUpiO1FBQUpDO1FBRTJCLE9BeEJ2REcsZ0JBc0JvQ1M7UUFFYixPQUFBLDRCQXFKdkJDLG9CQXZKZ0NkO09BQzlCLFdBbXlDRmUsY0FweUM0QmQ7O1dBR0lFO09BQzlCLFdBQWdDLDRCQXVJbEMwQixXQXhJZ0MxQjs7T0FPMUI7UUFMa0NrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLdEIsT0FoQ054QixnQkEyQndDaUQ7UUFJbEMsT0FpVU5LLGFBclVvQ2pCO1FBRzlCLE9BQUEsaUNBOUJOckMsaUJBMkJnQ3FCO09BQzlCLFdBaXhDRkMsZUFseEM0QkU7O09BU3RCO1FBSDRCRDtRQUFKSTs7bUJBSWpCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F2QzlCZ2QsZ0JBc0NrQko7V0FDUixXQXN3Q1YwQixlQXZ3Q2NwQztVQUNtQztRQUgzQyxPQUFBLGtDQUg0QnFDO09BQ2hDLFdBbENGdkIsZ0JBaUM4QjJCOztPQVNzQjtRQURsQkQ7UUFBSkU7UUFDc0IsT0FBQSw0QkF1SHBESCxXQXhIa0NDO09BQ2hDLFdBMUNGMUIsZ0JBeUM4QjRCOztPQUdvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FBQSw0QkFxSGxETCxXQXRIZ0NJO09BQzlCLFdBNUNGN0IsZ0JBMkM0QjhCOztXQUVDRTtPQUMzQixXQUE2Qiw0QkE5Qy9CaEMsaUJBNkM2QmdDOztPQUlNO1FBRkdEO1FBQUpHO1FBRUMsT0FBQSxpQ0FqRG5DbEMsaUJBK0NzQytCO09BQ3BDLFdBZ3lDRnZDLFNBTkFNLGtCQTN4Q2tDb0M7O1dBR0VELGlCQUFKRztPQUM5QjtlQUQ4QkE7ZUFFWixpQ0FwRHBCcEMsaUJBa0RvQ2lDOztPQVU5QjtRQVA2QkU7UUFBSkk7UUFPekIsT0FBQSxpQ0E1RE52QyxpQkFxRG1DbUM7O21CQUd0Qm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BMUR6Q2dkLGdCQXlEa0JKO1dBQ1IsV0FzeENWSixTQU5BTSxrQkFqeENjWjtVQUM4QztPQUoxRCxZQUNJLGtDQUZ5QnFEOztPQVVOO1FBRlNEO1FBQUpFO1FBRUwsT0FpeEN6QmhELFNBTkFNLGtCQTd3Q2tDd0M7T0FDaEMsWUE5REZ0QyxnQkE2RDhCd0M7O09BS3lCO1FBRmRDO1FBQUpDO1FBQUpDO1FBRXNCLE9BbEV2RDNDLGdCQWdFeUN5QztRQUVoQixPQTh3Q3pCakQsU0FOQU0sa0JBMXdDcUM0QztPQUNuQyxZQWpFRjFDLGdCQWdFaUMyQzs7V0FHSkU7T0FDM0IsWUFBNkIsNEJBcEUvQjdDLGlCQW1FNkI2Qzs7T0FJZ0I7UUFGRks7UUFBSk47UUFBSkc7UUFFVSxPQUFBLGlDQXZFN0MvQyxpQkFxRTJDa0Q7UUFFbEIsT0F2RXpCbEQsZ0JBcUV1QzRDO09BQ3JDLFlBdEVGNUMsZ0JBcUVtQytDOztPQUlvQixJQURsQkQsa0JBQUpNLGtCQUNzQixPQXpFdkRwRCxnQkF3RXFDOEM7T0FDbkMsWUF6RUY5QyxnQkF3RWlDb0Q7O09BR21CLElBRGxCRCxrQkFBSkssa0JBQ3NCLE9BM0VwRHhELGdCQTBFa0NtRDtPQUNoQyxZQTNFRm5ELGdCQTBFOEJ3RDs7T0FReEI7UUFOc0NSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNdEIsT0FsRk41RCxnQkE0RTRDZ0Q7UUFLdEMsT0EwRU5LLG9CQS9Fd0MySjtRQUlsQyxPQWhGTmhOLGdCQTRFb0MwRDtRQUc5QixPQS9FTjFELGdCQTRFZ0N1RDtPQUM5QixZQW1SRkQsYUFwUjRCTTs7T0FRNkIsSUFEbEJELGtCQUFKRyxrQkFDc0IsT0E2VXpETCxlQTlVdUNFO09BQ3JDLFlBcEZGM0QsZ0JBbUZtQzhEOztPQUlvQjtRQUZoQk07UUFBSlA7UUFBSkc7UUFFd0IsT0EwVXZEUCxlQTVVdUNXO1FBRWQsT0FBQSxpQ0EwVXpCWCxnQkE1VW1DSTtPQUNqQyxZQXRGRjdELGdCQXFGK0JnRTs7T0FJb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BdXZDbkQxRSxTQXhCQXVFLFlBaHVDaUNFO09BQy9CLFlBekZGakUsZ0JBd0Y2QmtFOztXQUVGQyxrQkFDekIsWUFxdkNGM0UsU0FOQU0sa0JBaHZDMkJxRTs7T0FJRSxJQUZVRSxrQkFBSkMsa0JBRU4sT0E5RjdCdEUsZ0JBNEZ1Q3FFO09BQ3JDLFlBbXZDRjdFLFNBeEJBdUUsWUE1dENtQ087OztRQUdIRzs7bUJBR3BCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BcEdsQ2dkLGdCQW1HaUJKO1dBQ1IsV0E0dUNUSixTQXhCQXVFLFlBcnRDYTdFO1VBQ3dDO09BSm5ELFlBQ0Usa0NBRjRCdUY7O09BVzFCO1FBSm9Dd1A7UUFBSnpQO1FBQUpHO1FBSTVCLE9BMUdOM0UsZ0JBc0cwQ2lVO1FBR3BDLE9BdW1CTjFQLGlCQTFtQnNDQztPQUNwQztlQXl1Q0ZoRjswQkF4dUNvQnhjO2dDQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2tCQUF0QixPQUFBLHVDQUFMQTtpQkFBOEI7aUJBRmhCMmhCOzs7O09BT0UsSUFGS0Usa0JBQUpELGtCQUVELE9BN0dwQzVFLGdCQTJHeUM2RTtPQUN2QyxZQThoQ0ZILDJCQS9oQ3FDRTs7V0FHUEUsa0JBQzVCLFlBL0dGOUUsZ0JBOEc4QjhFOztXQUVGQyxrQkFDMUIsWUFqSEYvRSxnQkFnSDRCK0U7O09BSUg7UUFGUUU7UUFBSkM7UUFFSixPQUFBLGlDQTZTekJ6QixnQkEvU2lDd0I7T0FDL0IsWUFuSEZqRixnQkFrSDZCa0Y7O1dBR0NDLGtCQUM1QixZQThnQkZILHFCQS9nQjhCRzs7T0FJQyxJQUZLQyxrQkFBSkMsa0JBRUQsT0F6SC9CckYsZ0JBdUhvQ29GO09BQ2xDLFlBd3RDRjVGLGtCQXZ0Q21CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk9xaUI7O1dBR0pFLGtCQUMxQixZQXFsQkZoQixpQkF0bEI0QmdCOztPQUc2QixJQUR4QjJPLGtCQUFKek8sa0JBQzRCLE9BN0h6RHpGLGdCQTRIaUNrVTtPQUMvQixZQStqQkY1TyxzQkFoa0I2Qkc7O1dBRUF1TyxrQkFDM0IsWUFLRnhPLFdBTjZCd087bUJBRUlHLGtCQUMvQixZQW8xQkZ6TyxlQXIxQmlDeU87O0dBRXVDO1lBRXhFM087SUFDSDtLQUFzRDFUO0tBQXhCQztLQUF4QkM7S0FJc0IsT0F6SXpCZ08sZ0JBcUltRGxPO0tBRzFCLE9BQUEsNEJBSXpCNlQsaUJBUDJCNVQ7SUFDN0IsV0FNRTRULGdCQVBHM1Q7R0FLSjtZQUVDMlQ7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVMwQixPQThyQzdCMkIsY0Fwc0NHOUI7S0FLMEIsT0F2SjdCNUYsZ0JBaUpHNkY7S0FLMEIsT0EwTTdCdkMsYUFoTkd3QztJQUlMLFdBNHJDRXRHLGtCQTNyQzBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjdDK2lCO0dBVUo7WUFFQzFDLDJCQUVGLHFCQUVvRDtZQUVsRDVCO0lBQ0g7S0FHTW5FO0tBREFDO0tBREFDO0tBT3dCLE9BMUszQndDLGdCQXFLRzFDO0tBSTBCLE9BQUEsaUNBeks3QjBDLGlCQW9LR3pDO0lBR0wsV0F5TEUrRixhQTdMRzlGO0dBUUo7WUFFQ2tEO0lBRUg7S0FLTTRGO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0lBTUwsU0FBSTBOLFVBQVV4bUIsTUFBSy9JLE9BQ2pCLFdBRFkrSSxTQUFLL0ksYUFFMkQ7SUFFOUUsU0FBSXd2QixVQUFVOXdCLEtBQU0sV0FBTkEsUUFBQUEsV0FBNEM7YUFDdEQrd0IsaUJBQWlCaGMsS0FBSUQ7S0FFckIsSUFERXlPLFdBRkZ1TixVQUpBRCxVQUtpQjliLFFBQUlEO0tBS3ZCLGdCQUxtQkMsS0FBSUQsTUFDbkJ5TztJQVNIO0lBRVc7S0FBVnlOLFlBeUpGalIsYUFoTEdvRDtLQXVCa0M4TixhQXZNckN4VSxnQkFpTEd5RzthQXVCRGdPLGNBQWNuYyxLQUFJRCxLQUFJaUQ7S0FDeEIsSUFBSW9aLFFBd05KalIsZUF6Tm9CcEwsTUFFaEJxTyxVQWZGNE4saUJBYWNoYyxLQUNab2M7S0FFSixXQURJaE8sU0FIaUM4TjtJQUlsQjs7O1FBekJoQmhPO2tCQUFBQTs7T0E4SWdCO1FBRFlXO1FBQVJDO1FBQ2Z1TixhQWlHUmxSLGVBbEcrQjBEO1FBRXZCeU4sYUF2SU5QLFVBc0lNTTtRQUVBRSxtQkFGQUYsYUFDQUMsWUFEQUQ7UUFVQUcsWUEvSU5SLGlCQVlBQyxXQTJITU07UUFTQUUsV0FBUyxpQ0FzRmpCdFIsZ0JBbEd1QjJEO1FBYWY0TixhQXRKTlosVUFvSk1VLGNBbkk2Qk47UUFzSTdCUzs7Z0JBdEk2QlQsWUFvSTdCTyxVQVhBSjtXQVlBSztXQXJJNkJSOztRQU0xQlUsYUFnSUhEO1FBaElORSxZQTZITUw7OztVQWpIbUI1Tjs7O1lBQUFBO1lBTlhrTyx5QkFBQUE7O29CQVpkYjs7YUFBQUE7O2tCQUNBRSxjQURBRixXQVljYSxPQVpxQlo7V0FNMUJVO1dBQVRDOzs7Ozs7a0JBTkFaOztXQUFBQTtRQTBFWTtTQXhEdUNHO1NBR2ZXLFFBcU10QzVSLGVBeE1xRGlSO1NBeUQ3Q3ZVLFdBNUZOaVUsVUFpQkFHLGNBQW1DQztTQTRFN0JqTjtXQTFEbUJMO2NBL0J6Qm1OLFVBd0ZNbFU7Y0F4Rk5rVSxVQWtDb0NnQjtTQTREbEM7Z0JBNURrQ0E7eUJBQ0YzeUIsR0FBSyxPQUFMQSxLQUFtQjtTQUE3Q3VXO1dBQVksa0NBSktpTztTQUtiaE87b0JBQUszVDtZQUNYLFlBRFdBOztpQkFDUDRUOzs7O29CQUdTblcsY0FIVG1XLFdBR1NuVzs7Z0JBRTRCO2lCQURQa0g7aUJBQVhrUDtpQkFBUHBQO2lCQUN5QixPQU5uQ2tQLEtBSzRCaFA7aUJBSjlCaVAsV0FJWW5QLE9BTFZrUCxLQUtpQkU7Ozs7aUJBRVI3RztpQkFOWDRHLFdBTTZCLDRCQVAzQkQsTUFPUzNHOzs7b0JBSUU4Ryw2QkFBQUE7Ozs7c0JBSHlCM1U7a0JBQ2pDLEdBQUEsNEJBRGlDQSxHQVR4Q3VVLDJCQVN3Q3ZVOzs7a0JBR2Q0VTs7d0JBQVhELFdBQ2EsNEJBWnhCSCxNQVdzQkk7O29CQVZ4Qkg7Ozs7aUJBWWtCMVc7aUJBQUw4VztpQkFaYko7O29CQWFlLDRCQTBCakJLLG1CQTNCZUQ7b0JBQUs5Vzs7OztpQkFFS2dYO2lCQUFYQztpQkFkWlA7dUJBY1lPLGFBQ2EsNEJBaEJ2QlIsTUFlcUJPOzs7O2lCQUVBRTtpQkFBWEM7aUJBaEJaVCxXQURFRCxLQWlCVVUsY0FBV0Q7Ozs7aUJBRWFFO2lCQUFOQztpQkFBaEJDO2lCQWxCZFo7O29CQW9CTSw0QkFXUmEsZ0JBYmdCRDtvQkFBZ0JEO29CQUFNRDs7OztpQkFLYkk7aUJBQVpDO2lCQXZCWGYsV0F1QldlLFlBeEJUaEIsS0F3QnFCZTs7Ozs7aUJBRUVFO2lCQUFYQzs7O29CQUVXLElBQVMvQixnQkFBSDlJO29CQUFXLFdBQVhBLEdBNUI3QjJKLEtBNEJnQ2I7bUJBQXNCO2lCQTNCeERjOzt3QkF5QmNpQixhQUVFLGtDQUZTRDs7Ozs7aUJBR05FO2lCQUFIL1I7aUJBNUJoQjZRLGdCQTRCZ0I3USxLQUFHK1I7O1lBRXZCLFdBOUJJbEIsTUFETzVULE1BQUFBLE1BQUFBO1dBK0JnQjtTQUN6QnlVO29CQUFlTTtZQUNqQixZQURpQkE7OztjQUd3Qi9IO2NBQU51SDtjQUFQOVA7Y0FGeEJ1UTtvQkFFd0J2USxPQUFPOFAsTUFDUSw0QkFwQ3JDWixNQW1DbUMzRzs7aUJBRTVCaE4sY0FKVGdWLGVBakNFckIsS0FxQ08zVDtZQUViLFdBTklnVixVQURhRCxVQUFBQTtXQU9NO1NBQ3JCZDtvQkFBa0JjO1lBQ3BCLFlBRG9CQTs7O2NBR2UvVTtjQUFQeUU7Y0FGeEJ3USxlQUV3QnhRLE9BM0N0QmtQLEtBMkM2QjNUOztpQkFFdEJrVixnQkFKVEQsZUF6Q0V0QixLQTZDT3VCO1lBRWIsV0FOSUQsVUFEZ0JGLFVBQUFBO1dBT0c7U0FXdkJnYjs7Z0JBL0RtQnBPLDBCQUtiaE8sS0FGd0JtYztZQXVEOUI5Tjs7O1NBaUJBVCxXQTFHTnVOLFVBSkFELFVBaUJBRyxjQXFCb0NjO1NBNkVsQixPQTlHbEJmLGlCQVlBQyxXQWlGTWU7U0FpQkFDLHlCQUxBek87U0FzQkEsT0FBQSwyQkFqR21CSTtTQTJGbkIsZ0JBN0c2QnNOLFlBcUJDYSxRQXNEOUJsVixVQTNFNkJxVTs7b0JBcUd4QmxaLE1BQUtrYTtZQUNSLGdCQURRQSxPQUFMbGEsT0ExQkw2RSxVQTBCSzdFO1dBT0Y7U0FUSG1hLGFBQ0Y7U0E5RktQLGFBNkZITztTQTdGTk4sWUE0Rk1JOzs7O1dBaEZtQnJPOztRQW9HNkI3TztlQXJIdERvYyxjQURBRixXQXNIc0RsYyxLQXRIbkJtYztRQU0xQlU7UUFBVEM7Ozs7U0FBU0QsYUFOMEJWLFlBTW5DVyxZQU5BWjs7SUFzSjBCLFdBeS9CNUI3TSxjQWxxQ0dwQjtJQXFLTCxXQTVJSTZPLFdBQVNELFlBdVRYN1UsZ0JBalZHa0c7R0EyS0o7WUFFQ2pEO0lBQ0g7S0FJTXNEO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BeUpwQzFHLGdCQS9KR3VHO0tBS2dDLE9Bc0VuQ3RHLG9CQTVFR3VHO0tBSzBCLE9BNitCN0JhLGNBbi9CR1o7SUFJTCxXQU9FRSxrQkFaR0Q7R0FVSjtZQUVDQztJQUNtRSw4QkFDckM7OztXQUNIOUgsZUFDekIsV0E4OUJGTSxrQkE5OUI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUR2QmtjOztPQUdzQjtRQURmVTtRQUFKUjtRQUNtQixPQTQ5QmpESSxrQkE1OUIrRHhjLEdBQUssT0FBTEEsRUFBTSxHQURuQzRjO09BQ2hDLFdBcEJGMEQsYUFtQjhCbEU7O1dBRUVTLGlCQUM5QixXQXk4QkZXLGNBMThCZ0NYOztPQUdxQixJQURoQndCLGlCQUFKdEIsaUJBQ29CLE9BdThCckRTLGNBeDhCcUNhO09BQ25DLFdBdThCRmIsY0F4OEJpQ1Q7O1dBRUp5QjtPQUMzQixXQUE2Qiw0QkExQi9COEIsY0F5QjZCOUI7O09BS3ZCO1FBSGdDRDtRQUFKSTs7bUJBSXJCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFOEMsT0FqQzNEc2dCLGFBZ0NrQjFEO3lCQUNPNWMsR0FBSyxPQSs4QjlCd2Msa0JBLzhCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO1dBQTNDLFdBQUMsa0NBREdrYztVQUM2RDtRQUhyRSxPQUFBLHVDQUhnQ3FDO09BQ3BDLFdBbzlCRi9CLFNBTkFNLGtCQS84QmtDNkI7O1dBUUVELGlCQUFKRTtPQUM5QixXQUQ4QkEsTUFDaUIsaUNBcENqRDBCLGNBbUNvQzVCOztPQVM5QjtRQVA2Qkc7UUFBSkM7UUFPekIsT0F1NkJObUYsaUJBOTZCbUNwRjs7bUJBR3RCN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0ExQ3pDc2dCLGFBeUNrQjFEO1dBQ1IsV0FzOEJWSixTQU5BTSxrQkFqOEJjWjtVQUMyQztPQUp2RCxXQUNJLGtDQUZ5QjRDOztXQVFGRTtPQUMzQixXQUE2Qiw0QkE5Qy9Cc0IsY0E2QzZCdEI7O09BR2lCLElBRGZELGlCQUFKRyxpQkFDbUIsT0FoRDlDb0IsYUErQytCdkI7T0FDN0IsV0FoREZ1QixhQStDMkJwQjs7T0FHMkIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWV0RHFCLGVBaEJ1Q3hCO09BQ3JDLFlBbERGcUIsYUFpRG1DbEI7O1dBRVBHLGtCQUMxQixZQTQ3QkYvQyxTQU5BTSxrQkF2N0I0QnlDOztXQUVBQyxrQkFDMUIsWUF0REZjLGFBcUQ0QmQ7O1dBRUVHO09BQzVCO2VBdzdCRm5EOzBCQXY3Qm1CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGbkIyZjs7V0FHR0Usa0JBQy9CLFlBM0RGUyxhQTBEaUNUOztXQUVBRSxrQkFDL0IsWUF3akJGMkMsZUF6akJpQzNDOztPQUc0QixJQUQ1QlosaUJBQUppQixrQkFDZ0MsT0EvRDdERSxhQThEaUNuQjtPQUMvQixZQWk3QkYzQyxTQU5BTSxrQkE1NkI2QnNEOztHQUNnRDtZQUU3RUs7SUFFSDtLQUlNNEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F1RnBDbkgsZ0JBN0ZHZ0g7S0FLZ0MsT0FJbkMvRyxvQkFWR2dIO0tBSzBCLE9BMjZCN0JJLGNBajdCR0g7SUFJTCxXQVdFRSxvQkFoQkdEO0dBVUo7WUFFQ2xILG9CQUVDdGQ7SUFBSyxPQUFBLDRCQW82Qk4wa0IsZUFwNkJDMWtCO0dBQTZCO1lBRTlCeWtCO0lBRUYsOEJBQ2dDOzs7V0FDSHZJLGVBQU0sV0FBTkE7O09BR2dCO1FBRkx1QjtRQUFKYjtRQUFKUjtRQUVhLE9BMUIzQ3FFLGVBd0JzQ2hEO1FBRWQsT0ExQnhCZ0QsZUF3QmtDN0Q7T0FDaEMsV0FtM0JGMEIsZUFwM0I4QmxDOztXQUdEUztPQUMzQixXQUE2Qiw0QkE1Qi9CNEQsZ0JBMkI2QjVEOztPQUlNO1FBRkF3QjtRQUFKdEI7UUFFSSxPQUFBLDRCQS9CbkMwRCxnQkE2Qm1DcEM7T0FDakMsV0FpNUJGN0IsU0FOQU0sa0JBNTRCK0JDOztPQUtLLElBRkR3QixpQkFBSkMsaUJBRUssT0FnM0JwQ3lGLGlCQWwzQm1DMUY7T0FDakMsV0FDRyw0QkFvRExvRyxtQkF0RCtCbkc7O09BS0k7UUFGREU7UUFBSkM7UUFFSyxPQUFBLDRCQXJDbkM4QixnQkFtQ2tDL0I7T0FDaEMsV0EyNEJGbEMsU0FOQU0sa0JBdDRCOEI2Qjs7V0FHSUUsaUJBQUpEO09BQzVCLFdBdkNGNkIsZUFzQzhCN0IsT0FBSUM7O09BTTVCO1FBSmtDUTtRQUFKTjtRQUFKRDt3QkFJVjllLEdBQUssT0FBQSw0QkEyMkIzQitnQixZQTMyQnNCL2dCLEdBQTBCO1FBQTFDLE9BQUEsdUNBSmtDcWY7UUFHbEMsT0F1MkJONEUsaUJBMTJCb0NsRjtPQUNsQztlQUNJLDRCQXNCTjZGLGdCQXhCZ0M5Rjs7OztPQU9xQjtRQUZwQkc7UUFBSkQ7UUFFd0IsT0EvQ3JEeUIsZUE2Q2lDeEI7d0JBRWRqZixHQUFLLE9BZzRCeEJ3YyxrQkFoNEJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7T0FEN0MsV0FDRyxrQ0FGd0JnZjs7V0FHRUUsaUJBQzdCLFdBSUYyRixrQkFMK0IzRjttQkFFRUUsaUJBQy9CLFlBaWdCRnNELGVBbGdCaUN0RDs7R0FDcUI7WUFFdER5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0E3RG5DeWdCLGVBNERZN0Q7S0FDUixXQWszQkpKLFNBTkFNLGtCQTcyQlFaO0lBQzZDO0lBSHJELFdBQUEsa0NBRk1VO0lBQ1IsV0FzM0JFSixTQU5BTSxrQkFqM0JFWjtHQU1JO1lBRU4wSTtJQUVIO0tBR01FO0tBREFDO0tBREF4TjtLQU9nQyxPQXlCbkM4RixnQkE5Qkd5SDtLQUl5QixPQTQyQjVCSixjQWozQkdLO0lBR0wsV0FNRUMsb0JBVkd6TjtHQVFKO1lBRUN5TjtJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBbEZqQ3VFLGdCQWdGZ0NoRDtLQUM5QixXQTgxQkZqQixTQXhCQXVFLFlBdjBCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0FwRkZxRSxlQW1GMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtLQUl5QixPQXMxQjVCUCxjQTMxQkdRO0lBR0wsV0F1eUJFQyx1QkEzeUJHM047R0FRSjtZQUVDNkYsZ0JBRUNyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU8wQixPQW8wQjdCYixjQXowQkdXO0tBSThCLE9BSWpDRyxhQVRHRjtJQUdMLFdBaTBCRTlJLGtCQWgwQjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCO0dBUUo7WUFFQ0M7SUFDRjs7V0FDeUJ0SixlQUFNLFdBTTdCQyxlQU51QkQ7O1dBQ0FFLGlCQUFNLFdBb1Q3QnFKLGVBcFR1QnJKOztXQUNBUyxpQkFBTSxXQXhIN0I0RCxlQXdIdUI1RDs7T0FFb0I7UUFEZkQ7UUFBSkc7UUFDbUIsT0FBQSxpQ0EzaEIzQ0MsaUJBMGhCNEJKO09BQzFCLFdBM0xGMEQsYUEwTHdCdkQ7O0dBQ2lEO1lBRXpFWixlQUVDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUg7S0FBbUNDO0tBQTdCQztLQUcwQixPQWd6QjdCbEIsY0FuekJnQ2lCO0lBQ2xDLFdBS0VFLHlCQU5HRDtHQUlKO1lBRUNDO0lBRXdDOztPQUVXLElBRGxCakosZUFBSlYsZUFDc0IsT0F6Q25EbUIsZ0JBd0NpQ1Q7T0FDL0IsV0E3aUJGSSxnQkE0aUI2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBbll2QnNCLG9CQWlZa0NXO09BQ2hDLFdBMndCRlYsY0E1d0I4QnZCOztXQUdHUyxpQkFDL0IsV0FrdUJGaUosdUJBbnVCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkFnbkJ2QmdKLHVCQWxuQmlDeEg7T0FDL0IsV0Fzd0JGWixjQXZ3QjZCWjs7V0FHQ3lCLGlCQUM1QixXQXdqQkZ3SCxvQkF6akI4QnhIOztXQUVHRyxpQkFDL0IsV0F3aUJGc0gsb0JBemlCaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0FpZkZtSCw2QkFsZitCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkF3VEo4Ryw2QkExVGtDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQWxFRnlGLGVBaUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BeEV2RHhDLGdCQXVFc0NxQjtPQUNwQyxZQXlZRmdFLGVBMVlrQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0FrYk51bUIsbUJBblRBaEYsa0JBL0hDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0FzWU53bUIsaUJBcFlBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BN0ZuQ3ZKLGdCQXdGR3FKO0tBSXlCLE9Bc3ZCNUJoQyxjQTN2QkdpQztJQUdMLFdBTUVFLHFCQVZHRDtHQVFKO1lBRUNDO0lBRUY7O09BR3FDO1FBRkRqSztRQUFKVjtRQUVLLE9BQUEsNEJBeE1uQ3VFLGdCQXNNa0M3RDtPQUNoQyxXQXd1QkZKLFNBTkFNLGtCQW51QjhCWjs7V0FHRUUsaUJBQzlCLFdBeUJGNEYscUJBMUJnQzVGOztPQU8xQjtRQUxpQzZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLckIsT0ExQk40SixnQkFxQnVDeEc7UUFJakMsT0FoUk5LLGFBNFFtQzdDO1FBRzdCLE9BQUEsaUNBL21CTlQsaUJBNG1CK0JxQjtPQUM3QixXQWdzQkZDLGVBanNCMkJ6Qjs7T0FTckI7UUFIMkIwQjtRQUFKeEI7O21CQUloQi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BeG5COUJnZCxnQkF1bkJrQko7V0FDUixXQXFyQlYwQixlQXRyQmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUgyQnFDO09BQy9CLFdBNUJGa0ksZ0JBMkI2QjFKOztPQVUwQjtRQUZwQnNDO1FBQUpYO1FBQUpGO1FBRTRCLE9BckN2RGlJLGdCQW1DbUNwSDtRQUVaLE9BQUEsNEJBL2N2QjNCLG9CQTZjK0JnQjtPQUM3QixXQStyQkZmLGNBaHNCMkJhOztPQUk2QixJQURsQkssaUJBQUpGLGlCQUNzQixPQXlReERtSSxnQkExUXNDakk7T0FDcEMsV0F2Q0Y0SCxnQkFzQ2tDOUg7O1dBRUZDLGlCQUM5QixXQXFWRjhELGVBdFZnQzlEOztPQUd3QixJQUR4QkcsaUJBQUpELGlCQUM0QixPQTNDeEQySCxnQkEwQ2dDMUg7T0FDOUIsV0FrWkZnSSxzQkFuWjRCakk7O0dBQytDO1lBRTNFa0Q7SUFFSDtLQUFvQ2dGO0tBQTlCQztLQUc4QixPQUFBLDRCQUdqQ0Msa0JBTmlDRjtJQUNuQyxXQXZTRTFHLGFBc1NHMkc7R0FJSjtZQUVDQztJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BbEpuQ2hLLGdCQTZJRzhKO0tBSXlCLE9BaXNCNUJ6QyxjQXRzQkcwQztJQUdMLFdBTUVFLHNCQVZHRDtHQVFKO1lBRUNDO0lBRUY7O09BS1E7UUFKaUM3SjtRQUFKYjtRQUFKVjt3QkFJVGxjLEdBQUssT0FnckIzQndjLGtCQWhyQnlDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtRQUE1QyxPQUFBLHVDQUppQ3lkO1FBR2pDLE9BeEVOZ0osZ0JBcUVtQzdKO09BQ2pDLFdBOFlGMkssbUJBL1krQnJMOztPQU03QjtRQUR3QkU7UUFFVGlELE9BRlNqRDtRQUViaUMsT0FGYWpDO1FBRWpCUyxPQUZpQlQ7UUFHMEIsT0FnQnBEb0wsc0JBakJpQm5JO1FBQ2EsT0FnbUI5Qm9JLGtCQWptQmFwSjtPQURYLGVBOHFCRjdCLFNBeEJBdUUsWUFycEJTbEU7O09BR1A7UUFEMkJFO1FBRVowQyxPQUZZMUM7UUFFaEJ3QixPQUZnQnhCO1FBRXBCeUIsT0FGb0J6QjtRQUd1QixPQVlwRHlLLHNCQWJpQi9IO1FBQ2EsT0FnaUI5QmlJLGtCQWppQmFuSjtPQURYLGVBMHFCRi9CLFNBeEJBdUUsWUFqcEJTdkM7O09BR1A7UUFEK0JHO1FBRXBCRCxPQUZvQkM7UUFFeEJDLE9BRndCRDtRQUdSLE9BM1F6QjhCLGVBMFFhL0I7T0FEWCxlQXpRRitCLGVBMFFTN0I7O1dBRXlCRSxpQkFDaEMsV0E5cUJGOUIsZ0JBNnFCa0M4Qjs7V0FFRkUsaUJBQzlCLFdBeEtGb0csZUF1S2dDcEc7bUJBRUFFLGlCQUM5QixXQW1TRndELGVBcFNnQ3hEOztHQUNxQjtZQUVyRHNJO0lBRUYsdUJBQ2dDdEwsZUFDNUIsV0F2UkZ1RSxlQXNSOEJ2RTtJQUcyQixJQURyQlUsZUFBSlIsaUJBQ3lCLE9BMXJCekRZLGdCQXlyQm9DSjtJQUNsQyxXQWlYRjJLLG1CQWxYZ0NuTDtHQUM0QztZQUU1RWtHLHNCQUVDdGlCO0lBQUssT0EwVk4ybkIsZ0JBeFVBcEcsa0JBbEJDdmhCO0dBQXVDO1lBRXhDa21CO0lBRUg7S0FJTTBCO0tBREFDO0tBREFDO0tBREFDO0tBVXlCLE9BeW9CNUJyRCxjQWhwQkdrRDtLQU1nQyxPQXhNbkN2SyxnQkFpTUd3SztLQU0wQixPQUs3QnRHLGlCQVpHdUc7SUFJTDtZQXdvQkV0TDt1QkF0b0JnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDK25COzs7O0dBV0o7WUFFQ3hHO0lBRUg7S0FHTXlHO0tBREFDO0tBREFDO0tBSUQzbkIsTUErbkJGbWtCLGNBbG9CR3VEO0tBT2lDLE9Bdk5wQzVLLGdCQWlORzJLO0lBR0wsV0FNRUcsc0JBUEU1bkIsS0FKQzJuQixZQUlEM25CO0dBS0g7WUFFQzRuQixzQkFBc0I1bkI7STs7V0FHTzJiLGVBQzNCLFdBOG1CRk0sU0FOQU0sa0JBem1CNkJaOztXQUVJRSxpQkFDL0IsV0F2TUZELGVBc01pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F2QmhDMEUsaUJBcUJvQzNFO09BQ2xDLFdBdUNGd0wsdUJBeENnQ3ZMOztPQUlyQjtRQUR1QndCO1FBQUp0QjtRQUN4QndCLE9BekJOZ0QsaUJBd0JrQ2xEO1FBRWhDLE9BRElFOzs7O1NBSVk7aUJBSlpBO1VBSU1tVTtVQUNBMUs7O3FEQURBMEssYUFBQUE7YUFKTm5VO1VBQ0FHLFdBREFILFNBQUFBLFNBS015Sjs7O1lBSk50SixPQURBSDs7T0FpQkosV0ExQ0ZnRCxpQkF3QjhCeEUsT0FFeEIyQjs7T0FvQkEsSUFINEJGLGlCQUM1Qm1VLHdCQTlCZ0JweUI7T0FzQ3BCLFdBcERGZ2hCLGlCQTJDa0MvQyxPQUM1Qm1VOztPQVdvQixJQUZhOVQsaUJBQUpGLGlCQUVULE9BYzFCMEosaUJBaEJ1Q3hKO09BQ3JDLFdBdERGMEMsaUJBcURtQzVDOztXQUdMQyxpQkFDNUIsV0F6d0JGNUIsZ0JBd3dCOEI0QjttQkFFR0UsaUJBQy9CLFdBME1GNEQsZUEzTWlDNUQ7OztZQUdqQ3NKO0lBRUYsWUFDNEI7SUFHNkIsSUFGMUJ4TCxlQUFKVixlQUU4QixPQUV2RG1NLGlCQUo2QnpMO0lBQzNCO1lBOGpCRko7dUJBN2pCbUJ4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQUZ4QmtjOztHQUVrRDtZQUUzRW1NO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0EzUnBDbkwsZ0JBc1JHaUw7S0FJMEIsT0F3akI3QjVELGNBN2pCRzZEO0lBR0wsV0FNRUUsc0JBVkdEO0dBUUo7WUFFQ0M7SUFFRjs7V0FDK0J2TSxlQUMzQixXQTBpQkZNLFNBTkFNLGtCQXJpQjZCWjs7V0FFSUUsaUJBQy9CLFdBb0NGcUosZUFyQ2lDcko7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDd0wsaUJBb0JvQ3pMO09BQ2xDLFdBN0JGd0wsdUJBNEJnQ3ZMOztPQUtOO1FBRk93QjtRQUFKdEI7UUFFSCxPQUFBLDRCQVExQjJMLHNCQVZpQ3JLO09BQy9CLFdBeEJGZ0ssaUJBdUI2QnRMOztXQUdDeUIsaUJBQzVCLFdBaEdGK0MsaUJBK0Y4Qi9DOztXQUVHRyxpQkFDL0IsV0FtS0YrRCxlQXBLaUMvRDs7V0FFSkMsaUJBQzNCLFdBNGhCRnBDLFNBTkFNLGtCQXZoQjZCOEI7O0dBQ2dDO1lBRTdEOEo7SUFFRjs7T0FHcUMsSUFGRDlMLGVBQUpWLGVBRUssT0EwV25DNkosc0JBNVdrQ25KO09BQ2hDLFdBc2hCRkosU0FOQU0sa0JBamhCOEJaOztPQUtLO1FBRkNtQztRQUFKakM7UUFFRyxPQWtoQm5DSSxTQU5BTSxrQkE5Z0JvQ3VCO09BQ2xDLFdBbWhCRjdCLFNBTkFNLGtCQTlnQmdDVjs7T0FLRyxJQUZFbUMsaUJBQUoxQixpQkFFRSxPQTVDbkN3TCxpQkEwQ3FDOUo7T0FDbkMsV0FnaEJGL0IsU0FOQU0sa0JBM2dCaUNEOztPQUtFLElBRk82QixpQkFBSjNCLGlCQUVILE9BL0NuQ3NMLGlCQTZDMEMzSjtPQUN4QyxXQTZnQkZsQyxTQU5BTSxrQkF4Z0JzQ0M7O09BS0g7UUFGSThCO1FBQUpMO1FBRUEsT0E4Vm5DdUgsc0JBaFd1Q2xIO09BQ3JDLFdBMGdCRnJDLFNBTkFNLGtCQXJnQm1DMEI7O09BS0E7UUFGR087UUFBSko7UUFFQyxPQXNnQm5DbkMsU0FOQU0sa0JBbGdCc0NpQztPQUNwQyxXQXVnQkZ2QyxTQU5BTSxrQkFsZ0JrQzZCOztHQUU4QjtZQUVoRThHLGVBRUN6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUg7S0FBbUNDO0tBQTdCQztLQUcwQixPQWlnQjdCbkUsY0FwZ0JnQ2tFO0lBQ2xDLFdBS0VFLHlCQU5HRDtHQUlKO1lBRUNDO0lBRXdDOztXQUNYNU0sZUFDM0IsV0F3YkY0Six1QkF6YjZCNUo7O09BSU47UUFGVVU7UUFBSlI7UUFFTixPQUFBLDRCQXNVdkIySix1QkF4VWlDbko7T0FDL0IsV0E0ZEZlLGNBN2Q2QnZCOztXQUdJUztPQUMvQixXQUFpQyw0QkFvVW5Da0osdUJBclVpQ2xKOztXQUVIRSxpQkFDNUIsV0E0UUZpSixvQkE3UThCako7O1dBRUd5QixpQkFDL0IsV0E0UEZ5SCxvQkE3UGlDekg7O1dBRUhHLGlCQUM1QixXQXlPRm9LLHdCQTFPOEJwSzs7V0FFRUMsaUJBQzlCLFdBdU5Gb0sseUJBeE5nQ3BLOztXQUVDRTtPQUMvQixXQUFpQyw0QkFxT25DaUsseUJBdE9pQ2pLOztXQUVGRSxpQkFDN0IsV0FtTUZtSCw2QkFwTStCbkg7O1dBRUtFLGlCQUNsQyxXQWlNRmlILDZCQWxNb0NqSDs7V0FFUkUsaUJBQzFCLFlBbUtGMkgsc0JBcEs0QjNIOztXQUVHRyxrQkFDN0IsWUEySUYwSix5QkE1SStCMUo7O1dBRUZDO09BQzNCLFlBQTZCLDRCQWMvQjBKLHdCQWY2QjFKOztXQUVLRztPQUNoQztlQUNFLDRCQU1KMEcsNkJBUmtDMUc7O1dBR0RFLGtCQUMvQixZQWxYRnVGLGVBaVhpQ3ZGOztPQUdzQixJQURqQnhCLGlCQUFKMEIsa0JBQ3FCLE9BeFh2RDFDLGdCQXVYc0NnQjtPQUNwQyxZQXlGRnFFLGVBMUZrQzNDOztHQUN3QztZQUUxRXNHLDRCQUdDcm1CO0lBQUssT0EwRk53bUIsaUJBcEZBTSxpQkFOQzltQjtHQUF1QztZQUV4Q2twQix1QkFFQ2xwQjtJQUFLLE9Bc0ZOd21CLGlCQXBGQU0saUJBRkM5bUI7R0FBdUM7WUFFeEM4bUI7SUFFSDtLQUdNcUM7S0FEQUM7S0FEQUM7S0FPaUMsT0E3WXBDaE0sZ0JBd1lHOEw7S0FJMEIsT0FzYzdCekUsY0EzY0cwRTtJQUdMLFdBTUVFLHFCQVZHRDtHQVFKO1lBRUNDO0lBRUY7O09BR3FDO1FBRkExTTtRQUFKVjtRQUVJLE9BQUEsNEJBeGZuQ3VFLGdCQXNmbUM3RDtPQUNqQyxXQXdiRkosU0FOQU0sa0JBbmIrQlo7O1dBR0VFLGlCQUMvQixXQVNGbU4scUJBVmlDbk47O09BSVU7UUFGTHFCO1FBQUpZO1FBQUp4QjtRQUVhLE9BdkIzQ2lLLGdCQXFCc0NySjtRQUVkLE9BN2Z4QmdELGVBMmZrQ3BDO09BQ2hDLFdBZ1pGQyxlQWpaOEJ6Qjs7V0FHR0UsaUJBQy9CLFdBcURGMkYsZUF0RGlDM0Y7O09BR3dCLElBRHhCd0IsaUJBQUpDLGlCQUM0QixPQTNCekRzSSxnQkEwQmlDdkk7T0FDL0IsV0FrSEZ3SSxzQkFuSDZCdkk7O0dBQytDO1lBRTVFK0s7SUFFSDtLQUFvQ0M7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyx1QkFOaUNGO0lBQ25DLFdBdGdCRS9JLGVBcWdCR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQWxicEN4TSxnQkE2YUdzTTtLQUkwQixPQWlhN0JqRixjQXRhR2tGO0lBR0wsV0FNRUUsMkJBVkdEO0dBUUo7WUFFQ0M7SUFFMEM7O1dBQ1g1TixlQUM3QixXQXRERjRLLGdCQXFEK0I1Szs7T0FHN0I7UUFEeUJFO1FBRU42RCxLQUZNN0Q7UUFFVnFCLEtBRlVyQjtRQUVkUSxLQUZjUjtRQUVsQlMsT0FGa0JUO1FBTXBCLE9BbmlCUHFFLGVBK2hCcUJSO1FBR2QsT0FzRFA4SixrQkF6RGlCdE07UUFFVixPQWtVUGdLLGtCQXBVYTdLO09BRFgsZUFpWkZKLFNBeEJBdUUsWUF4WFNsRTs7T0FNUDtRQUQ0QkU7UUFFVGlOLE9BRlNqTjtRQUVic0MsT0FGYXRDO1FBRWpCc0IsT0FGaUJ0QjtRQUVyQnlCLE9BRnFCekI7UUFNdkIsT0ExaUJQMEQsZUFzaUJxQnVKO1FBR2QsT0ErQ1BELGtCQWxEaUIxSztRQUVWLE9BK1BQcUksa0JBalFhcko7T0FEWCxlQTBZRjdCLFNBeEJBdUUsWUFqWFN2Qzs7T0FNUDtRQURnQ0c7UUFFckJKLE9BRnFCSTtRQUV6QkMsT0FGeUJEO1FBR1QsT0E5aUJ6QjhCLGVBNmlCYWxDO09BRFgsZUE1aUJGa0MsZUE2aUJTN0I7O1dBRXdCRSxpQkFDL0IsV0F6Y0ZzRyxlQXdjaUN0RzttQkFFQUUsaUJBQy9CLFdBRUYwRCxlQUhpQzFEOztHQUNxQjtZQUV0RDBELGVBRUMxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0FwY3pCd2xCLGFBbWNNNUk7SUFDUixXQXVYRUosa0JBdlhheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FvQmdDLE9BbGZuQ2xOLGdCQW1lRzZNO0tBY3lCLE9BaVc1QnhGLGNBaFhHeUY7S0FjMEIsT0FBQSxXQXBCNUJGLElBS0VHO0tBYzBCLE9BNlY3QjVOLGtCQTdWMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FmOUNxcUI7a0JBU01ycUI7S0FDSDtNQUFRNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFHT3FlLE9BRkZ6QjtNQUVGUixPQUZFUTtNQUdhLE9Bd1IzQjROLGlCQXpSZ0JuTTtNQUNSLFdBNlJSb00sY0E5UllyTztLQUROLFdBOWtCTnFFLGVBNmtCVXZFO0lBR3VDO0lBTC9DLFdBQUEsa0NBVENvTztJQU1MLFdBZ0JFUCxrQkF2QkdRO0dBcUJKO1lBRUNSLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQTlPQThCLGtCQTRPQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsT0E3Z0JyQ3ZOLGdCQXdnQkdxTjtLQUkyQixPQXNVOUJoRyxjQTNVR2lHO0lBR0wsV0FDZ0MsV0FQN0JWLElBRUVXO0dBUUo7WUFFQzdELHNCQUVDL21CO0lBQUssT0FFTjJuQjtzQkFGMkIzbkIsR0FBSyxPQTBUaEN3YyxTQU5BTSxrQkFwVDJCOWMsR0FBZ0MsR0FBMURBO0dBQTZEO1lBRTlEMm5CLGdCQUtDc0M7SUFBSjtLQUtNWTtLQURBQztLQURBQztLQURBQztLQVNrQyxPQXBpQnJDM04sZ0JBOGhCR3dOO0tBSzJCLE9BK1M5Qm5HLGNBclRHb0c7S0FLZ0MsT0FLbkN2RCxtQkFYR3dEO0lBSUwsV0FDaUMsV0FSOUJkLElBRUVlO0dBVUo7WUFFQ3pELDBCQUNtRSxxQkFFbkI7WUFFaERwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVMwQixPQXlSN0IxRyxjQS9SR3VHO0tBS2lDLE9BeGpCcEM1TixnQkFrakJHNk47S0FLMkIsT0FBQSxpQ0F0UzlCN0Msa0JBZ1NHOEM7SUFJTCxXQXVSRTNPLGtCQXRSNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0NvckI7R0FVSjtZQUVDcEM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTeUIsT0F5UTVCOUcsY0EvUUcyRztLQUtnQyxPQXhrQm5DaE8sZ0JBa2tCR2lPO0tBSzhCLE9BcVFqQzlPLFNBTkFNLGtCQXJRR3lPO0lBSUwsV0F1UUUvTyxrQkF0UTJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjlDd3JCO0dBVUo7WUFFQ3pDO0lBR0g7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBVXlCLE9Bd1A1QmxILGNBL1BHK0c7S0FNZ0MsT0F6bEJuQ3BPLGdCQWtsQkdxTztLQU0wQixPQXZVN0JyRCxpQkFnVUdzRDtJQUlMO1lBdVBFblA7dUJBclBnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDNHJCOzs7O0dBV0o7WUFFQzNGO0lBRUg7S0FHTTRGO0tBREFDO0tBREFDO0tBUW1DLE1BeG1CdEMxTyxnQkFrbUJHd087S0FLNEIsTUEyTy9CbkgsY0FqUEdvSDtJQUdMLFdBa0NFcEssMkJBdENHcUs7R0FTSjtZQUVDL0Y7SUFFSDtLQU1NZ0c7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FxQm1DLE1Bbm9CdENoUCxnQkFtbkJHMk87S0FlNEIsTUFnTi9CdEgsY0FoT0d1SDtLQWVnQyxNQW1FbkN2RSxrQkFuRkd3RTtLQWVEO09BQUE7MEJBTUZ4Syw0QkF0Qkd5SztpQkFTTW5zQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUF3STNCNE4saUJBeklnQm5NO01BQ1IsVUE2SVJvTSxjQTlJWXJPO0tBRE4sV0E5dEJOcUUsZUE2dEJVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ2tRO0lBTUw7WUF1TkU1UCxTQU5BTSxrQkF4Tkd1UDs7Ozs7O0dBc0JKO1lBRUMzSztJQUdIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVNpQyxNQW5wQnBDcFAsZ0JBNm9CR2lQO0tBSzBCLE1BZ003QjVILGNBdE1HNkg7S0FLMkIsTUFLOUJHLCtCQVhHRjtJQUlMLFdBNkxFaFEsa0JBNUw0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjtHQVVKO1lBRUNDO0lBRStDO0tBS3pDO01BSitCalA7TUFBSmI7TUFBSlY7TUFJdkIsTUFBQSxpQ0Fod0JOdUUsZ0JBNHZCcUNoRDtNQUcvQixNQTJFTmtQLDJCQTlFaUMvUDtxQkFFYjVjLEdBQUssT0FpTHpCd2Msa0JBakx1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7S0FEOUMsV0FDSSxpQ0FGdUJrYzs7UUFLQ0U7SUFDNUIsV0E2S0ZJLFNBTkFNLGtCQXhLOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0E2QjJCLE1BaUo5QnpJLGNBdktHa0k7S0FxQmtDLE1BaHNCckN2UCxnQkEwcUJHd1A7S0FxQmdDLE1BQUEsaUNBbHlCbkNwTSxnQkE0d0JHcU07S0FxQitCLE1BTWxDcEYsa0JBNUJHcUY7S0FxQjRCLE1BWS9CSyxlQWxDR0o7aUJBa0JNaHRCO0tBQ0g7TUFBWXlkLEtBRFR6ZDtNQUNLNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFFb0MsTUF1SjdDMGtCLGNBeEprQmpIO01BQ1EsTUE5eEIxQmdELGVBNnhCYzdEO0tBQ1IsV0E5eEJONkQsZUE2eEJVdkU7SUFDb0Q7SUFINUQsVUFBQSxpQ0FsQkMrUTtpQkFXTWp0QjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUFnRjNCNE4saUJBakZnQm5NO01BQ1IsVUFxRlJvTSxjQXRGWXJPO0tBRE4sV0F0eEJOcUUsZUFxeEJVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FYQ2dSO0lBUUw7WUErSkUxUSxrQkE5SjZDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVmhEbXRCOzs7Ozs7OztHQThCSjtZQUVDekYseUJBQ2lFLHFCQUVmO1lBRWxEMEY7SUFDRTs7U0FFOEJsUjtLQUM5QixXQUFnQyw0QkFLbENtUiw4QkFOZ0NuUjs7UUFFREU7SUFDN0IsV0FBK0IsNEJBZ0NqQ2tSLHdCQWpDK0JsUjtHQUU2QjtZQUU1RGlSO0lBR0g7S0FNTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FjZ0MsTUFwdUJuQ3ZRLGdCQTJ0QkdrUTtLQVF5QixNQStHNUI3SSxjQXhIRzhJO0tBUXlCLE1BQUEsaUNBcjBCNUIvTSxnQkE0ekJHZ047S0FRMEIsTUFNN0JkLDJCQWZHZTtpQkFRYTF0QixHQUFLLE9BNEdyQndjLGtCQTVHbUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO0lBQTFDLFVBQUEsaUNBVEMydEI7SUFNTDtZQStHRW5SLGtCQTlHMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FSOUM0dEI7Ozs7OztHQWVKO1lBRUNqQjtJQUUwQztTQUNaelE7S0FDNUIsV0FBOEIsNEJBOTBCaEN1RSxnQkE2MEI4QnZFOztRQUVDRTtJQUM3QixXQUErQiw0QkFFakNrUix3QkFIK0JsUjtHQUNzQztZQUVyRWtSO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXZ0MsTUE3dkJuQzVRLGdCQXN2Qkd3UTtLQU15QixNQXNGNUJuSixjQTdGR29KO0tBTTBCLE1BOTFCN0JyTixlQXUxQkdzTjtLQU02QixNQU1oQ3RHLGtCQWJHdUc7SUFLTCxXQW9GRXhSLGtCQW5GMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUNpdUI7R0FZSjtZQUVDeEcseUJBQ2lFLHFCQUViO1lBRXBEK0Msd0JBQytELHFCQUVDO1lBRWhFQztJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSDs7R0FBMkI7WUFFMUQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVcwQixNQW9EN0I1SixjQTNER3dKO0tBTWlDLE1BN3hCcEM3USxnQkFzeEJHOFE7aUJBTXlDbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUDNCb3VCO0tBTTJCLE1BOTNCOUIzTixlQXUzQkc0TjtJQUtMO1lBbURFN1Isa0JBbEQ0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAvQ3N1Qjs7Ozs7R0FZSjtZQUVDbko7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BeDRCbER1RSxlQXU0QjRCN0Q7S0FDMUIsV0F1Q0ZKLFNBeEJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBMTRCRnFFLGVBeTRCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDRjs7V0FDd0NaLGVBQUpWLDhCQUNzQmxjLEdBQUssT0FBTEEsRUFBTTtPQUE1RCxXQURnQ2tjLElBQ00sc0NBREZVOztXQUVSUixpQkFBTSxXQUFOQTs7T0FHSDtRQUZjcUI7UUFBSlk7UUFBSnhCO3VCQUVVN2MsR0FBSyxPQUFMQSxFQUFNO1FBQXRCLE1BQUEsc0NBRmN5ZDtPQUN2QyxXQUQrQlosTUFrQmpDNkgsY0FsQnFDckc7O1dBR0RFLGlCQUFKeEIsZ0NBQ3NCL2MsR0FBSyxPQUFMQSxFQUFNO09BQTFELFdBRDhCK2MsTUFDTSxzQ0FERndCOztHQUM2QjtZQUVqRXpCO0lBQWdEOztXQUMvQlosZUFBTSxXQUFOQTs7V0FDR1UsZUFBSlI7T0FBVyxXQUYzQlUsaUJBRWdCVixPQUFJUTs7T0FFcUIsSUFEbkJ5QixpQkFBSnhCLGlCQUN1QixNQUp6Q0MsaUJBR3NCdUI7T0FDcEIsV0FKRnZCLGlCQUdrQkQ7O0dBQzJDO1lBRTdETCxTQUdDeU47SUFBSixJQUErQjFwQixnQkFBdEJZLGdCQUNnRCxNQUV0RHVqQixjQUg0Qm5rQjtJQUM5QixXQUF5QixXQUR0QjBwQixJQUFLOW9CO0dBQ21FO1lBRXpFdWpCO0lBQ0g7S0FBNENrTztLQUFsQkM7S0FBcEJDO0tBR2dCLE1BSW5CQyxjQVB1QkY7SUFDekIsV0FNRUUsY0FQR0QsaUJBQXNDRjtHQUsxQztZQUVDRztJQUNIO0tBQXlEQztLQUFoQkM7S0FBakJDO0tBQWxCQztJQUNMLFdBREtBLFdBQWtCRCxVQUFpQkQsU0FBZ0JEO0dBQ2M7Ozs7T0F6NENoRS9XO09BUUpJO09BY0FFO09BU0FJO09BVUFLO09BZUFPO09BcUhBaUY7T0FRQUc7T0FlQXRDO09BTUE1QjtPQVlBZjtPQW1MQTRDO09BY0EwRDtPQW1EQXZEO09BZUFuRDtPQUlBbUg7T0FrQ0FJO09BV0FEO09BYUFJO09BU0FMO09BYUF0SDtPQUlBK0g7T0FhQUk7T0FRQXJKO09BSUF1SjtPQVFBRztPQXFDQVM7T0FLQUY7T0FJQUs7T0FhQUk7T0FnQ0E3RTtPQVFBa0Y7T0FhQUk7T0EyQkFFO09BUUFsRjtPQUlBNEQ7T0FnQkEzRTtPQWNBNEc7T0ErQ0FDO09BUUFDO09BYUFJO09Bb0JBQztPQXNCQWpEO09BSUFrRDtPQVFBRztPQXNDQXpDO09BS0E2QztPQUlBcEM7T0FhQXdDO09BZ0JBQztPQVFBRztPQWFBSTtPQTRCQXBIO09BTUE4RDtPQThCQXVEO09BS0FkO09BS0ExQztPQWlCQVE7T0FJQVk7T0FtQkFKO09BS0FwQjtPQWdCQTZDO09BZ0JBRDtPQWlCQTlDO09BY0FEO09BMkJBdEU7T0FnQkFnTDtPQVdBM0c7T0FtQ0EyQjtPQUtBMEY7T0FTQUM7T0FxQkFWO09BUUFXO09BaUJBN0Y7T0FLQStDO09BS0FDO09BTUEzRTtPQWlCQVg7T0FRQTdHO09BTUEyRjtPQUtBbEQ7T0FFQXBEO09BS0FIO09BV0FWO09BTUFOO09BTUFrSTtPQVFBcU87Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7WUN2NENJOVc7SUFFTix1QkFDNkJDLGVBQ3pCLFdBOGhCRkMsZUEvaEIyQkQ7UUFFQUU7SUFDekIsV0FFRkMsd0JBSDJCRDtHQUM4QjtZQUV6REM7SUFHSDtLQUdNQztLQURBeEI7S0FEQUQ7S0FPMEIsT0FnMEM3QjZKLGNBcjBDR3BJO0tBSTBCO09BQUEsaUNBSTdCQyx5QkFUR3pCO0lBR0wsV0E2ekNFMEIsa0JBNXpDNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FML0M2YTtHQVFKO1lBRUMwQjtJQUdIO0tBQW9DRTtLQUE5QkM7S0FHMkIsT0F1ekM5QmdJLGNBMXpDaUNqSTtJQUNuQyxXQUtFRSw2QkFOR0Q7R0FJSjtZQUVDQztJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlIsaUNBQ3NCcGMsR0FBSyxPQUFMQSxFQUFNO09BQXRELFdBRDBCb2MsTUFDTSx1Q0FERlE7O1dBRUhDLGlCQUMzQixXQWl5Q0ZDLGlCQWx5QzZCRDttQkFFREUsaUJBQU0sV0FBTkE7O0dBQW9DO1lBRWhFQztJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9Bb2RwQ0MsZ0JBMWRHSjtLQUtnQyxPQWlZbkNLLG9CQXZZR0o7S0FLMEIsT0FneUM3QndILGNBdHlDR3ZIO0lBSUwsV0FPRUkscUJBWkdIO0dBVUo7WUFFQ0c7SUFFRiw4QkFpSHdDOzs7V0FoSFRyQixlQUMzQixXQWl4Q0ZNLFNBTkFNLGtCQTV3QzZCWjs7V0FFR0UsaUJBQzlCLFdBOHZDRm9CLGNBL3ZDZ0NwQjs7T0FJdUI7UUFGbkJxQjtRQUFKYjtRQUFKQztRQUUyQixPQXhCdkRHLGdCQXNCb0NTO1FBRWIsT0FBQSw0QkFxSnZCQyxvQkF2SmdDZDtPQUM5QixXQXV2Q0ZlLGNBeHZDNEJkOztXQUdJRTtPQUM5QixXQUFnQyw0QkF1SWxDMEIsV0F4SWdDMUI7O09BTzFCO1FBTGtDa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS3RCLE9BaENOeEIsZ0JBMkJ3Q2lEO1FBSWxDLE9BNlJOSyxhQWpTb0NqQjtRQUc5QixPQUFBLGlDQTlCTnJDLGlCQTJCZ0NxQjtPQUM5QixXQXF1Q0ZDLGVBdHVDNEJFOztPQVN0QjtRQUg0QkQ7UUFBSkk7O21CQUlqQjNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BdkM5QmdkLGdCQXNDa0JKO1dBQ1IsV0EwdENWMEIsZUEzdENjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FINEJxQztPQUNoQyxXQWxDRnZCLGdCQWlDOEIyQjs7T0FTc0I7UUFEbEJEO1FBQUpFO1FBQ3NCLE9BQUEsNEJBdUhwREgsV0F4SGtDQztPQUNoQyxXQTFDRjFCLGdCQXlDOEI0Qjs7T0FHb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BQUEsNEJBcUhsREwsV0F0SGdDSTtPQUM5QixXQTVDRjdCLGdCQTJDNEI4Qjs7V0FFQ0U7T0FDM0IsV0FBNkIsNEJBOUMvQmhDLGlCQTZDNkJnQzs7T0FJTTtRQUZHRDtRQUFKRztRQUVDLE9BQUEsaUNBakRuQ2xDLGlCQStDc0MrQjtPQUNwQyxXQW92Q0Z2QyxTQU5BTSxrQkEvdUNrQ29DOztXQUdFRCxpQkFBSkc7T0FDOUI7ZUFEOEJBO2VBRVosaUNBcERwQnBDLGlCQWtEb0NpQzs7T0FVOUI7UUFQNkJFO1FBQUpJO1FBT3pCLE9BQUEsaUNBNUROdkMsaUJBcURtQ21DOzttQkFHdEJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTFEekNnZCxnQkF5RGtCSjtXQUNSLFdBMHVDVkosU0FOQU0sa0JBcnVDY1o7VUFDOEM7T0FKMUQsWUFDSSxrQ0FGeUJxRDs7T0FVTjtRQUZTRDtRQUFKRTtRQUVMLE9BcXVDekJoRCxTQU5BTSxrQkFqdUNrQ3dDO09BQ2hDLFlBOURGdEMsZ0JBNkQ4QndDOztPQUt5QjtRQUZkQztRQUFKQztRQUFKQztRQUVzQixPQWxFdkQzQyxnQkFnRXlDeUM7UUFFaEIsT0FrdUN6QmpELFNBTkFNLGtCQTl0Q3FDNEM7T0FDbkMsWUFqRUYxQyxnQkFnRWlDMkM7O1dBR0pFO09BQzNCLFlBQTZCLDRCQXBFL0I3QyxpQkFtRTZCNkM7O09BSWdCO1FBRkZLO1FBQUpOO1FBQUpHO1FBRVUsT0FBQSxpQ0F2RTdDL0MsaUJBcUUyQ2tEO1FBRWxCLE9BdkV6QmxELGdCQXFFdUM0QztPQUNyQyxZQXRFRjVDLGdCQXFFbUMrQzs7T0FJb0IsSUFEbEJELGtCQUFKTSxrQkFDc0IsT0F6RXZEcEQsZ0JBd0VxQzhDO09BQ25DLFlBekVGOUMsZ0JBd0VpQ29EOztPQUdtQixJQURsQkQsa0JBQUpLLGtCQUNzQixPQTNFcER4RCxnQkEwRWtDbUQ7T0FDaEMsWUEzRUZuRCxnQkEwRThCd0Q7O09BUXhCO1FBTnNDUjtRQUFKZ0s7UUFBSnRKO1FBQUpIO1FBQUpLO1FBTXRCLE9BbEZONUQsZ0JBNEU0Q2dEO1FBS3RDLE9BMEVOSyxvQkEvRXdDMko7UUFJbEMsT0FoRk5oTixnQkE0RW9DMEQ7UUFHOUIsT0EvRU4xRCxnQkE0RWdDdUQ7T0FDOUIsWUErT0ZELGFBaFA0Qk07O09BUTZCLElBRGxCRCxrQkFBSkcsa0JBQ3NCLE9BeVN6REwsZUExU3VDRTtPQUNyQyxZQXBGRjNELGdCQW1GbUM4RDs7T0FJb0I7UUFGaEJNO1FBQUpQO1FBQUpHO1FBRXdCLE9Bc1N2RFAsZUF4U3VDVztRQUVkLE9BQUEsaUNBc1N6QlgsZ0JBeFNtQ0k7T0FDakMsWUF0RkY3RCxnQkFxRitCZ0U7O09BSW9CO1FBRGxCQztRQUFKQztRQUNzQixPQTJzQ25EMUUsU0F4QkF1RSxZQXByQ2lDRTtPQUMvQixZQXpGRmpFLGdCQXdGNkJrRTs7V0FFRkMsa0JBQ3pCLFlBeXNDRjNFLFNBTkFNLGtCQXBzQzJCcUU7O09BSUUsSUFGVUUsa0JBQUpDLGtCQUVOLE9BOUY3QnRFLGdCQTRGdUNxRTtPQUNyQyxZQXVzQ0Y3RSxTQXhCQXVFLFlBaHJDbUNPOzs7UUFHSEc7O21CQUdwQnpoQjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVzQixPQXBHbENnZCxnQkFtR2lCSjtXQUNSLFdBZ3NDVEosU0F4QkF1RSxZQXpxQ2E3RTtVQUN3QztPQUpuRCxZQUNFLGtDQUY0QnVGOztPQVcxQjtRQUpvQ3dQO1FBQUp6UDtRQUFKRztRQUk1QixPQTFHTjNFLGdCQXNHMENpVTtRQUdwQyxPQW1rQk4xUCxpQkF0a0JzQ0M7T0FDcEM7ZUE2ckNGaEY7MEJBNXJDb0J4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZoQjJoQjs7OztPQU9FLElBRktFLGtCQUFKRCxrQkFFRCxPQTdHcEM1RSxnQkEyR3lDNkU7T0FDdkMsWUFrL0JGSCwyQkFuL0JxQ0U7O1dBR1BFLGtCQUM1QixZQS9HRjlFLGdCQThHOEI4RTs7V0FFRkMsa0JBQzFCLFlBakhGL0UsZ0JBZ0g0QitFOztPQUlIO1FBRlFFO1FBQUpDO1FBRUosT0FBQSxpQ0F5UXpCekIsZ0JBM1FpQ3dCO09BQy9CLFlBbkhGakYsZ0JBa0g2QmtGOztXQUdDQyxrQkFDNUIsWUEwZUZILHFCQTNlOEJHOztPQUlDLElBRktDLGtCQUFKQyxrQkFFRCxPQXpIL0JyRixnQkF1SG9Db0Y7T0FDbEMsWUE0cUNGNUYsa0JBM3FDbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT3FpQjs7V0FHSkUsa0JBQzFCLFlBaWpCRmhCLGlCQWxqQjRCZ0I7O09BRzZCLElBRHhCMk8sa0JBQUp6TyxrQkFDNEIsT0E3SHpEekYsZ0JBNEhpQ2tVO09BQy9CLFlBMmhCRjVPLHNCQTVoQjZCRzs7V0FFQXVPLGtCQUMzQixZQUtGeE8sV0FONkJ3TzttQkFFSUcsa0JBQy9CLFlBd3lCRnpPLGVBenlCaUN5Tzs7R0FFdUM7WUFFeEUzTztJQUNIO0tBQXNEMVQ7S0FBeEJDO0tBQXhCQztLQUlzQixPQXpJekJnTyxnQkFxSW1EbE87S0FHMUIsT0FBQSw0QkFJekI2VCxpQkFQMkI1VDtJQUM3QixXQU1FNFQsZ0JBUEczVDtHQUtKO1lBRUMyVDtJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBUzBCLE9Ba3BDN0IyQixjQXhwQ0c5QjtLQUswQixPQXZKN0I1RixnQkFpSkc2RjtLQUswQixPQXNLN0J2QyxhQTVLR3dDO0lBSUwsV0FncENFdEcsa0JBL29DMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FON0MraUI7R0FVSjtZQUVDMUMsMkJBRUYscUJBRW9EO1lBRWxENUI7SUFDSDtLQUdNbkU7S0FEQUM7S0FEQUM7S0FPd0IsT0ExSzNCd0MsZ0JBcUtHMUM7S0FJMEIsT0FBQSxpQ0F6SzdCMEMsaUJBb0tHekM7SUFHTCxXQXFKRStGLGFBekpHOUY7R0FRSjtZQUVDa0Q7SUFFSDtLQUlNNEY7S0FEQUM7S0FEQUU7S0FEQUM7SUF5REwsU0FBSXhPLFdBQVdDO21CQUF1QnpWLEdBQUssT0FBTEEsS0FBbUI7S0FBakMsT0FBQSxrQ0FBVHlWO0lBQWtEO2FBQzdEaWUsMEJBQTBCdnFCLEdBQUU1SDtLQUM5QixXQUQ0QjRIOzs7OztXQU1uQnVNLHdCQUFBQTs7OzthQUNBaWUseUJBQUFBOzthQVBtQnhxQjtVQVV0QixJQUgwQ3lxQixnQkFBYjlkLHVCQUc3QixPQUgwQzhkOzs7Ozs7O1dBRzFDLE1BQUE7O1dBQ0kxYixLQUp5QnBDLGNBQTFCNmQsU0FBdUNDO21DQUR2Q2xlLE9BQzBCSSxhQUFhOGQsTUFJdEMxYjs7OztXQVhrQi9PO1lBYzJCME0seUNBUjlDSCxPQVE4Q0c7O1dBYm5EZ2U7OztVQUFBQTs7Ozs7Ozs7OztZQW1CY3BlLFlBQU9qSyxNQXBCS2pLOztRQXFCNUI7b0JBRHVCaUs7Ozs7OztlQUFBQTtZQU1UO2FBTlNtRDthQUdzQjVIO2FBSDdCaVAsZUFHNkJqUCxPQUg3QjBPO2FBQUFBLFNBQUFPO2FBQU94SyxNQUFBbUQ7Ozs7Ozs7VUFBQW5EOztRQU9hNUQ7UUFBSDZHO1FBSS9CcWxCLG9CQUhRLDJCQVJNcmUsU0FPaUJoSCxLQUFHN0c7OztVQUlsQ2tzQjs7S0FDSixVQS9CSUQ7aUJBQUFBOzttQkFBQUEsa0JBNENZL3JCLGlCQUFMOE47T0FBZSwyQkFBZkEsS0FBSzlOLE1BN0Njdkc7OztxQkFDMUJzeUIsa0JBMENJMXBCO1VBWkoycEI7UUFHMEI7bUJBSDFCQTtTQUU4RDVkO1NBQVQ2ZDtTQUFWNWQ7U0FBbEI2ZDtTQUFQNWQ7U0FBWEM7U0FDbUIsT0FuQzVCYixXQWtDNkNXO1FBQ3hDLEdBQUEsV0FuQ0xYLFdBa0NTYTtTQXBGSzswQkFBY3JXLEdBQUssT0FBTEEsS0FBbUI7VUFBN0N1VyxZQUFZLGtDQW9GK0JKO1VBbkZ2Q0s7cUJBQUszVDthQUNYLFlBRFdBOztrQkFDUDRUOzs7O3FCQUdTblcsY0FIVG1XLFdBR1NuVzs7aUJBRTRCO2tCQURQa0g7a0JBQVhrUDtrQkFBUHBQO2tCQUN5QixPQU5uQ2tQLEtBSzRCaFA7a0JBSjlCaVAsV0FJWW5QLE9BTFZrUCxLQUtpQkU7Ozs7a0JBRVI3RztrQkFOWDRHLFdBTTZCLDRCQVAzQkQsTUFPUzNHOzs7cUJBSUU4Ryw2QkFBQUE7Ozs7dUJBSHlCM1U7bUJBQ2pDLEdBQUEsNEJBRGlDQSxHQVR4Q3VVLDJCQVN3Q3ZVOzs7bUJBR2Q0VTs7eUJBQVhELFdBQ2EsNEJBWnhCSCxNQVdzQkk7O3FCQVZ4Qkg7Ozs7a0JBWWtCMVc7a0JBQUw4VztrQkFaYko7O3FCQVlxQyw0QkF1QnZDSyxtQkF2QmVEO3FCQUFLOVc7Ozs7a0JBQ0tnWDtrQkFBWEM7a0JBYlpQO3dCQWFZTyxhQUNhLDRCQWZ2QlIsTUFjcUJPOzs7O2tCQUVBRTtrQkFBWEM7a0JBZlpULFdBREVELEtBZ0JVVSxjQUFXRDs7OztrQkFDYUU7a0JBQU5DO2tCQUFoQkM7a0JBaEJkWjs7cUJBa0JLLDRCQVNQYSxnQkFYZ0JEO3FCQUFnQkQ7cUJBQU1EOzs7O2tCQUdiSTtrQkFBWkM7a0JBbkJYZixXQW1CV2UsWUFwQlRoQixLQW9CcUJlOzs7OztrQkFFRUU7a0JBQVhDOzs7cUJBRVcsSUFBUy9CLGdCQUFIOUk7cUJBQVcsV0FBWEEsR0F4QjdCMkosS0F3QmdDYjtvQkFBc0I7a0JBdkJ4RGM7O3lCQXFCY2lCLGFBRUUsa0NBRlNEOzs7OztrQkFHTkU7a0JBQUgvUjtrQkF4QmhCNlEsZ0JBd0JnQjdRLEtBQUcrUjs7YUFFdkIsV0ExQklsQixNQURPNVQsTUFBQUEsTUFBQUE7WUEyQmdCO1VBQ3pCeVU7cUJBQWVNO2FBQ2pCLFlBRGlCQTs7O2VBR3dCL0g7ZUFBTnVIO2VBQVA5UDtlQUZ4QnVRO3FCQUV3QnZRLE9BQU84UCxNQUNRLDRCQWhDckNaLE1BK0JtQzNHOztrQkFFNUJoTixjQUpUZ1YsZUE3QkVyQixLQWlDTzNUO2FBRWIsV0FOSWdWLFVBRGFELFVBQUFBO1lBT007VUFDckJkO3FCQUFrQmM7YUFDcEIsWUFEb0JBOzs7ZUFHZS9VO2VBQVB5RTtlQUZ4QndRLGVBRXdCeFEsT0F2Q3RCa1AsS0F1QzZCM1Q7O2tCQUV0QmtWLGdCQUpURCxlQXJDRXRCLEtBeUNPdUI7YUFFYixXQU5JRCxVQURnQkYsVUFBQUE7WUFPRztVQTBDakJJLE1BckZBeEIsS0FtRjBETjtTQUczRCxPQUFBLFdBREM4QixLQUZjNUI7d0NBVWRqTSxLQVZHa00sV0FBdURILE1BQVQ2ZDtzQ0FVakQ1cEIsS0FWR2tNLFdBQWtCMmQsV0FqQ0N6eUI7OztXQTJDRDB5QiwwQkFBbEJDO09BQ1AsMEJBREkvcEIsS0FBRytwQixhQUFrQkQsYUEzQ0MxeUI7OztLQThDdkI7SUFBSztJQUVkLFNBQUk0eUIsZ0JBQWdCQyxTQUFRemU7S0FDaEIsSUFBTnFjLFFBa0dKalIsZUFuRzBCcEw7S0FFMUIsZUFGa0J5ZSxTQUNkcEM7SUFHNkM7SUFHM0MsWUF2REowQiwwQkExREMxUCxTQUNBRDs7O1NBK0drQkQsb0JBQVZnTyxhQS9HUi9OLFVBK0dEOE4sWUFoSEM3Tjs7OztNQWlJNkI7O09BakJyQndPO09BaUJHN2M7T0FqQlo4YztPQUFtQjRCLG1CQU5uQkYsbUJBdUJZeGU7T0FqQk9tTyxpQkFBQXVRO09BQVZ2QyxhQUFBVTtPQUFUWCxZQUFBWTs7MkJBSVU3Yzs7O1FBWVlnRDtRQUFKaFI7UUFoQkNrYyxpQkFObkJxUSxtQkFzQmtCdnNCO1FBaEJUa3FCLGFBZ0JhbFo7UUFoQnRCaVosWUFJVWpjOztPQUFzQixJQUFUMFosa0JBQUp4bkIsZ0JBQWEsT0FBVHduQjs7O1dBQUFBO1FBS0o7U0FGc0JnRjtTQUFKQztTQUFOckU7U0FFckJ4TCxTQUFTLGlDQW9GckIzRCxnQkF0RnVDd1Q7U0FHM0I5UCxXQW1GWjFELGVBdEYyQ3VUO1NBSS9CRSwyQkFGQTlQLFFBQ0FEO1NBVlNYLGlCQVdUMFE7U0FYRDFDLGFBT3NCNUI7U0FQL0IyQixZQUlVamM7Ozs7UUFKU2tPLGlCQU5uQnFRLG1CQVVtQnJzQjtRQUpWZ3FCLGFBSWN4QztRQUp2QnVDLFlBSVVqYzs7Ozs7O09BRm9DclU7T0FBTHl3QjtPQUFUb0M7T0FBSGpyQjtPQUZWMmEsaUJBTm5CcVEsZ0JBUWdDQyxTQUFTcEM7T0FGaENGLGFBRXFDdndCO09BRjlDc3dCLFlBRTZCMW9COztJQXVCSDtLQUFBLE9BaS9CNUI2YixjQXZuQ0dwQjtLQXFJZ0MsT0F3S25DakcsZ0JBOVNHa0c7S0FvSTBCLE9BdFQ3QnZHLGdCQWdTV3dVO0lBb0JiLFdBUUVsUixhQTVCRWlSLGtCQUFtQi9OO0dBMEJ0QjtZQUVDbEQ7SUFDSDtLQUlNc0Q7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F5SnBDMUcsZ0JBL0pHdUc7S0FLZ0MsT0FzRW5DdEcsb0JBNUVHdUc7S0FLMEIsT0FxK0I3QmEsY0EzK0JHWjtJQUlMLFdBT0VFLGtCQVpHRDtHQVVKO1lBRUNDO0lBQ21FLDhCQUNyQzs7O1dBQ0g5SCxlQUN6QixXQXM5QkZNLGtCQXQ5QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHZCa2M7O09BR3NCO1FBRGZVO1FBQUpSO1FBQ21CLE9BbzlCakRJLGtCQXA5QitEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRG5DNGM7T0FDaEMsV0FwQkYwRCxhQW1COEJsRTs7V0FFRVMsaUJBQzlCLFdBaThCRlcsY0FsOEJnQ1g7O09BR3FCLElBRGhCd0IsaUJBQUp0QixpQkFDb0IsT0ErN0JyRFMsY0FoOEJxQ2E7T0FDbkMsV0ErN0JGYixjQWg4QmlDVDs7V0FFSnlCO09BQzNCLFdBQTZCLDRCQTFCL0I4QixjQXlCNkI5Qjs7T0FLdkI7UUFIZ0NEO1FBQUpJOzttQkFJckIzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU4QyxPQWpDM0RzZ0IsYUFnQ2tCMUQ7eUJBQ081YyxHQUFLLE9BdThCOUJ3YyxrQkF2OEI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7V0FBM0MsV0FBQyxrQ0FER2tjO1VBQzZEO1FBSHJFLE9BQUEsdUNBSGdDcUM7T0FDcEMsV0E0OEJGL0IsU0FOQU0sa0JBdjhCa0M2Qjs7V0FRRUQsaUJBQUpFO09BQzlCLFdBRDhCQSxNQUNpQixpQ0FwQ2pEMEIsY0FtQ29DNUI7O09BUzlCO1FBUDZCRztRQUFKQztRQU96QixPQSs1Qk5tRixpQkF0NkJtQ3BGOzttQkFHdEI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTFDekNzZ0IsYUF5Q2tCMUQ7V0FDUixXQTg3QlZKLFNBTkFNLGtCQXo3QmNaO1VBQzJDO09BSnZELFdBQ0ksa0NBRnlCNEM7O1dBUUZFO09BQzNCLFdBQTZCLDRCQTlDL0JzQixjQTZDNkJ0Qjs7T0FHaUIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWhEOUNvQixhQStDK0J2QjtPQUM3QixXQWhERnVCLGFBK0MyQnBCOztPQUcyQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BZXREcUIsZUFoQnVDeEI7T0FDckMsWUFsREZxQixhQWlEbUNsQjs7V0FFUEcsa0JBQzFCLFlBbzdCRi9DLFNBTkFNLGtCQS82QjRCeUM7O1dBRUFDLGtCQUMxQixZQXRERmMsYUFxRDRCZDs7V0FFRUc7T0FDNUI7ZUFnN0JGbkQ7MEJBLzZCbUJ4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZuQjJmOztXQUdHRSxrQkFDL0IsWUEzREZTLGFBMERpQ1Q7O1dBRUFFLGtCQUMvQixZQWdqQkYyQyxlQWpqQmlDM0M7O09BRzRCLElBRDVCWixpQkFBSmlCLGtCQUNnQyxPQS9EN0RFLGFBOERpQ25CO09BQy9CLFlBeTZCRjNDLFNBTkFNLGtCQXA2QjZCc0Q7O0dBQ2dEO1lBRTdFSztJQUVIO0tBSU00RDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQXVGcENuSCxnQkE3RkdnSDtLQUtnQyxPQUluQy9HLG9CQVZHZ0g7S0FLMEIsT0FtNkI3QkksY0F6NkJHSDtJQUlMLFdBV0VFLG9CQWhCR0Q7R0FVSjtZQUVDbEgsb0JBRUN0ZDtJQUFLLE9BQUEsNEJBNDVCTjBrQixlQTU1QkMxa0I7R0FBNkI7WUFFOUJ5a0I7SUFFRiw4QkFDZ0M7OztXQUNIdkksZUFBTSxXQUFOQTs7T0FHZ0I7UUFGTHVCO1FBQUpiO1FBQUpSO1FBRWEsT0ExQjNDcUUsZUF3QnNDaEQ7UUFFZCxPQTFCeEJnRCxlQXdCa0M3RDtPQUNoQyxXQTIyQkYwQixlQTUyQjhCbEM7O1dBR0RTO09BQzNCLFdBQTZCLDRCQTVCL0I0RCxnQkEyQjZCNUQ7O09BSU07UUFGQXdCO1FBQUp0QjtRQUVJLE9BQUEsNEJBL0JuQzBELGdCQTZCbUNwQztPQUNqQyxXQXk0QkY3QixTQU5BTSxrQkFwNEIrQkM7O09BS0ssSUFGRHdCLGlCQUFKQyxpQkFFSyxPQXcyQnBDeUYsaUJBMTJCbUMxRjtPQUNqQyxXQUNHLDRCQW9ETG9HLG1CQXREK0JuRzs7T0FLSTtRQUZERTtRQUFKQztRQUVLLE9BQUEsNEJBckNuQzhCLGdCQW1Da0MvQjtPQUNoQyxXQW00QkZsQyxTQU5BTSxrQkE5M0I4QjZCOztXQUdJRSxpQkFBSkQ7T0FDNUIsV0F2Q0Y2QixlQXNDOEI3QixPQUFJQzs7T0FNNUI7UUFKa0NRO1FBQUpOO1FBQUpEO3dCQUlWOWUsR0FBSyxPQUFBLDRCQW0yQjNCK2dCLFlBbjJCc0IvZ0IsR0FBMEI7UUFBMUMsT0FBQSx1Q0FKa0NxZjtRQUdsQyxPQSsxQk40RSxpQkFsMkJvQ2xGO09BQ2xDO2VBQ0ksNEJBc0JONkYsZ0JBeEJnQzlGOzs7O09BT3FCO1FBRnBCRztRQUFKRDtRQUV3QixPQS9DckR5QixlQTZDaUN4Qjt3QkFFZGpmLEdBQUssT0F3M0J4QndjLGtCQXgzQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZ3QmdmOztXQUdFRSxpQkFDN0IsV0FJRjJGLGtCQUwrQjNGO21CQUVFRSxpQkFDL0IsWUF5ZkZzRCxlQTFmaUN0RDs7R0FDcUI7WUFFdER5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0E3RG5DeWdCLGVBNERZN0Q7S0FDUixXQTAyQkpKLFNBTkFNLGtCQXIyQlFaO0lBQzZDO0lBSHJELFdBQUEsa0NBRk1VO0lBQ1IsV0E4MkJFSixTQU5BTSxrQkF6MkJFWjtHQU1JO1lBRU4wSTtJQUVIO0tBR01FO0tBREFDO0tBREF4TjtLQU9nQyxPQXlCbkM4RixnQkE5Qkd5SDtLQUl5QixPQW8yQjVCSixjQXoyQkdLO0lBR0wsV0FNRUMsb0JBVkd6TjtHQVFKO1lBRUN5TjtJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBbEZqQ3VFLGdCQWdGZ0NoRDtLQUM5QixXQXMxQkZqQixTQXhCQXVFLFlBL3pCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0FwRkZxRSxlQW1GMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtLQUl5QixPQTgwQjVCUCxjQW4xQkdRO0lBR0wsV0EreEJFQyx1QkFueUJHM047R0FRSjtZQUVDNkYsZ0JBRUNyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU8wQixPQTR6QjdCYixjQWowQkdXO0tBSThCLE9BSWpDRyxhQVRHRjtJQUdMLFdBeXpCRTlJLGtCQXh6QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCO0dBUUo7WUFFQ0M7SUFDRjs7V0FDeUJ0SixlQUFNLFdBTTdCQyxlQU51QkQ7O1dBQ0FFLGlCQUFNLFdBNFM3QnFKLGVBNVN1QnJKOztXQUNBUyxpQkFBTSxXQXhIN0I0RCxlQXdIdUI1RDs7T0FFb0I7UUFEZkQ7UUFBSkc7UUFDbUIsT0FBQSxpQ0F2ZjNDQyxpQkFzZjRCSjtPQUMxQixXQTNMRjBELGFBMEx3QnZEOztHQUNpRDtZQUV6RVosZUFFQ25jO0lBQUssT0FBQSw0QkFFTjBsQixxQkFGQzFsQjtHQUFtQztZQUVwQzBsQjtJQUVIO0tBQW1DQztLQUE3QkM7S0FHMEIsT0F3eUI3QmxCLGNBM3lCZ0NpQjtJQUNsQyxXQUtFRSx5QkFOR0Q7R0FJSjtZQUVDQztJQUV3Qzs7T0FFVyxJQURsQmpKLGVBQUpWLGVBQ3NCLE9BekNuRG1CLGdCQXdDaUNUO09BQy9CLFdBemdCRkksZ0JBd2dCNkJkOztPQUlOO1FBRldtQztRQUFKakM7UUFFUCxPQUFBLDRCQS9WdkJzQixvQkE2VmtDVztPQUNoQyxXQW13QkZWLGNBcHdCOEJ2Qjs7V0FHR1MsaUJBQy9CLFdBMHRCRmlKLHVCQTN0QmlDako7O09BSVY7UUFGVTBCO1FBQUp4QjtRQUVOLE9BQUEsNEJBd21CdkJnSix1QkExbUJpQ3hIO09BQy9CLFdBOHZCRlosY0EvdkI2Qlo7O1dBR0N5QixpQkFDNUIsV0FnakJGd0gsb0JBampCOEJ4SDs7V0FFR0csaUJBQy9CLFdBZ2lCRnNILG9CQWppQmlDdEg7O1dBRUhDLGlCQUM1QixXQXFJRnNILG9CQXRJOEJ0SDs7V0FFR0U7T0FDL0IsV0FBaUMsNEJBbUluQ29ILHFCQXBJaUNwSDs7V0FFRkUsaUJBQzdCLFdBeWVGbUgsNkJBMWUrQm5IOztXQUVIRSxpQkFDMUIsV0EySEZvRCxzQkE1SDRCcEQ7O1dBRUNFO09BQzNCLFlBQTZCLDRCQWdCL0JnSCx3QkFqQjZCaEg7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBZ1RKOEcsNkJBbFRrQzlHOztXQUdIQyxrQkFDN0IsWUFNRjhHLHlCQVArQjlHOztXQUVFRyxrQkFDL0IsWUFsRUZ5RixlQWlFaUN6Rjs7T0FHc0IsSUFEakJqQixpQkFBSm1CLGtCQUNxQixPQXhFdkR4QyxnQkF1RXNDcUI7T0FDcEMsWUFpWUZnRSxlQWxZa0M3Qzs7R0FDd0M7WUFFMUV5Ryx5QkFHQ3RtQjtJQUFLLE9BMGFOdW1CLG1CQTNTQWhGLGtCQS9IQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9BOFhOd21CLGlCQTVYQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQTdGbkN2SixnQkF3RkdxSjtLQUl5QixPQTh1QjVCaEMsY0FudkJHaUM7SUFHTCxXQU1FRSxxQkFWR0Q7R0FRSjtZQUVDQztJQUVGOztPQUdxQztRQUZEaks7UUFBSlY7UUFFSyxPQUFBLDRCQXhNbkN1RSxnQkFzTWtDN0Q7T0FDaEMsV0FndUJGSixTQU5BTSxrQkEzdEI4Qlo7O1dBR0VFLGlCQUM5QixXQXlCRjRGLHFCQTFCZ0M1Rjs7T0FPMUI7UUFMaUM2RDtRQUFKeEM7UUFBSlk7UUFBSnhCO1FBS3JCLE9BMUJONEosZ0JBcUJ1Q3hHO1FBSWpDLE9BaFJOSyxhQTRRbUM3QztRQUc3QixPQUFBLGlDQTNrQk5ULGlCQXdrQitCcUI7T0FDN0IsV0F3ckJGQyxlQXpyQjJCekI7O09BU3JCO1FBSDJCMEI7UUFBSnhCOzttQkFJaEIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXBsQjlCZ2QsZ0JBbWxCa0JKO1dBQ1IsV0E2cUJWMEIsZUE5cUJjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIMkJxQztPQUMvQixXQTVCRmtJLGdCQTJCNkIxSjs7T0FVMEI7UUFGcEJzQztRQUFKWDtRQUFKRjtRQUU0QixPQXJDdkRpSSxnQkFtQ21DcEg7UUFFWixPQUFBLDRCQTNhdkIzQixvQkF5YStCZ0I7T0FDN0IsV0F1ckJGZixjQXhyQjJCYTs7T0FJNkIsSUFEbEJLLGlCQUFKRixpQkFDc0IsT0FpUXhEbUksZ0JBbFFzQ2pJO09BQ3BDLFdBdkNGNEgsZ0JBc0NrQzlIOztXQUVGQyxpQkFDOUIsV0E2VUY4RCxlQTlVZ0M5RDs7T0FHd0IsSUFEeEJHLGlCQUFKRCxpQkFDNEIsT0EzQ3hEMkgsZ0JBMENnQzFIO09BQzlCLFdBMFlGZ0ksc0JBM1k0QmpJOztHQUMrQztZQUUzRWtEO0lBRUg7S0FBb0NnRjtLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLGtCQU5pQ0Y7SUFDbkMsV0F2U0UxRyxhQXNTRzJHO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQWxKbkNoSyxnQkE2SUc4SjtLQUl5QixPQXlyQjVCekMsY0E5ckJHMEM7SUFHTCxXQU1FRSxzQkFWR0Q7R0FRSjtZQUVDQztJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7d0JBSVRsYyxHQUFLLE9Bd3FCM0J3YyxrQkF4cUJ5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7UUFBNUMsT0FBQSx1Q0FKaUN5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQXNZRjJLLG1CQXZZK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9Bd2xCOUJvSSxrQkF6bEJhcEo7T0FEWCxlQXNxQkY3QixTQXhCQXVFLFlBN29CU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9Bd2hCOUJpSSxrQkF6aEJhbko7T0FEWCxlQWtxQkYvQixTQXhCQXVFLFlBem9CU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQTNRekI4QixlQTBRYS9CO09BRFgsZUF6UUYrQixlQTBRUzdCOztXQUV5QkUsaUJBQ2hDLFdBMW9CRjlCLGdCQXlvQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0EyUkZ3RCxlQTVSZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBdlJGdUUsZUFzUjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQXRwQnpEWSxnQkFxcEJvQ0o7SUFDbEMsV0F5V0YySyxtQkExV2dDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9Ba1ZOMm5CLGdCQWhVQXBHLGtCQWxCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVV5QixPQWlvQjVCckQsY0F4b0JHa0Q7S0FNZ0MsT0F4TW5DdkssZ0JBaU1Hd0s7S0FNMEIsT0FLN0J0RyxpQkFaR3VHO0lBSUw7WUFnb0JFdEw7dUJBOW5CZ0J4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQVAzQytuQjs7OztHQVdKO1lBRUN4RztJQUVIO0tBR015RztLQURBQztLQURBQztLQU9pQyxPQXROcEM3SyxnQkFpTkcySztLQUkwQixPQXFuQjdCdEQsY0ExbkJHdUQ7SUFHTCxXQU1FRSxzQkFWR0Q7R0FRSjtZQUVDQztJQUVGOztXQUMrQmpNLGVBQzNCLFdBdW1CRk0sU0FOQU0sa0JBbG1CNkJaOztXQUVJRSxpQkFDL0IsV0F0TUZELGVBcU1pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDMEUsaUJBb0JvQzNFO09BQ2xDLFdBZ0NGd0wsdUJBakNnQ3ZMOztXQUdFd0IsaUJBQUp0Qix3QkFBSXNCOzs7O2FBSUx6ZCxtQkFKS3lkOzs7ZUFhdEJzUTs7O2VBQUFBO1lBQXlCO2FBQW5CMWE7YUFBbUIsWUFBekIwYSxJQVRpQi90QjthQUFBQTt1QkFTWHFUOzs7O1lBRkhpYzt3QkFDQSw0QkFSY3R2QixLQU9kc3ZCOzs7MkJBTEksMkJBRlV0dkI7O1dBV0ErQztXQUFqQnFrQjtXQWRGbU0sVUFjbUJ4d0I7V0FkdkI0YSxXQUQ0QkYsU0FBQUEsU0FldEIySjs7OztZQWRGbU0sYUFBSjVWLE9BRDRCRjs7VUFDeEI4VixTQWtCUSxXQTFDbEI1UyxpQkF1QjhCeEU7T0FxQnlCLFdBNUN2RHdFLGlCQXdCTWhEO09Bb0JGLFdBNUNKZ0QsaUJBdUI4QnhFOztPQXdCSixJQUZhMkIsaUJBQUpGLGlCQUVULE9BYzFCNkosaUJBaEJ1QzNKO09BQ3JDLFdBOUNGNkMsaUJBNkNtQy9DOztXQUdMRyxpQkFDNUIsV0E3dEJGM0IsZ0JBNHRCOEIyQjttQkFFR0MsaUJBQy9CLFdBME1GOEQsZUEzTWlDOUQ7O0dBQ3FCO1lBRXREd0o7SUFFRixZQUM0QjtJQUc2QixJQUYxQnhMLGVBQUpWLGVBRThCLE9BRXZEbU0saUJBSjZCekw7SUFDM0I7WUE4akJGSjt1QkE3akJtQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBRnhCa2M7O0dBRWtEO1lBRTNFbU07SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQW5ScENuTCxnQkE4UUdpTDtLQUkwQixPQXdqQjdCNUQsY0E3akJHNkQ7SUFHTCxXQU1FRSxzQkFWR0Q7R0FRSjtZQUVDQztJQUVGOztXQUMrQnZNLGVBQzNCLFdBMGlCRk0sU0FOQU0sa0JBcmlCNkJaOztXQUVJRSxpQkFDL0IsV0FvQ0ZxSixlQXJDaUNySjs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEN3TCxpQkFvQm9Dekw7T0FDbEMsV0E3QkZ3TCx1QkE0QmdDdkw7O09BS047UUFGT3dCO1FBQUp0QjtRQUVILE9BQUEsNEJBUTFCMkwsc0JBVmlDcks7T0FDL0IsV0F4QkZnSyxpQkF1QjZCdEw7O1dBR0N5QixpQkFDNUIsV0F4RkYrQyxpQkF1RjhCL0M7O1dBRUdHLGlCQUMvQixXQW1LRitELGVBcEtpQy9EOztXQUVKQyxpQkFDM0IsV0E0aEJGcEMsU0FOQU0sa0JBdmhCNkI4Qjs7R0FDZ0M7WUFFN0Q4SjtJQUVGOztPQUdxQyxJQUZEOUwsZUFBSlYsZUFFSyxPQTBXbkM2SixzQkE1V2tDbko7T0FDaEMsV0FzaEJGSixTQU5BTSxrQkFqaEI4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9Ba2hCbkNJLFNBTkFNLGtCQTlnQm9DdUI7T0FDbEMsV0FtaEJGN0IsU0FOQU0sa0JBOWdCZ0NWOztPQUtHLElBRkVtQyxpQkFBSjFCLGlCQUVFLE9BNUNuQ3dMLGlCQTBDcUM5SjtPQUNuQyxXQWdoQkYvQixTQU5BTSxrQkEzZ0JpQ0Q7O09BS0UsSUFGTzZCLGlCQUFKM0IsaUJBRUgsT0EvQ25Dc0wsaUJBNkMwQzNKO09BQ3hDLFdBNmdCRmxDLFNBTkFNLGtCQXhnQnNDQzs7T0FLSDtRQUZJOEI7UUFBSkw7UUFFQSxPQThWbkN1SCxzQkFoV3VDbEg7T0FDckMsV0EwZ0JGckMsU0FOQU0sa0JBcmdCbUMwQjs7T0FLQTtRQUZHTztRQUFKSjtRQUVDLE9Bc2dCbkNuQyxTQU5BTSxrQkFsZ0JzQ2lDO09BQ3BDLFdBdWdCRnZDLFNBTkFNLGtCQWxnQmtDNkI7O0dBRThCO1lBRWhFOEcsZUFFQ3psQjtJQUFLLE9BQUEsNEJBRU4yb0IscUJBRkMzb0I7R0FBbUM7WUFFcEMyb0I7SUFFSDtLQUFtQ0M7S0FBN0JDO0tBRzBCLE9BaWdCN0JuRSxjQXBnQmdDa0U7SUFDbEMsV0FLRUUseUJBTkdEO0dBSUo7WUFFQ0M7SUFFd0M7O1dBQ1g1TSxlQUMzQixXQXdiRjRKLHVCQXpiNkI1Sjs7T0FJTjtRQUZVVTtRQUFKUjtRQUVOLE9BQUEsNEJBc1V2QjJKLHVCQXhVaUNuSjtPQUMvQixXQTRkRmUsY0E3ZDZCdkI7O1dBR0lTO09BQy9CLFdBQWlDLDRCQW9VbkNrSix1QkFyVWlDbEo7O1dBRUhFLGlCQUM1QixXQTRRRmlKLG9CQTdROEJqSjs7V0FFR3lCLGlCQUMvQixXQTRQRnlILG9CQTdQaUN6SDs7V0FFSEcsaUJBQzVCLFdBeU9Gb0ssd0JBMU84QnBLOztXQUVFQyxpQkFDOUIsV0F1TkZvSyx5QkF4TmdDcEs7O1dBRUNFO09BQy9CLFdBQWlDLDRCQXFPbkNpSyx5QkF0T2lDaks7O1dBRUZFLGlCQUM3QixXQW1NRm1ILDZCQXBNK0JuSDs7V0FFS0UsaUJBQ2xDLFdBaU1GaUgsNkJBbE1vQ2pIOztXQUVSRSxpQkFDMUIsWUFtS0YySCxzQkFwSzRCM0g7O1dBRUdHLGtCQUM3QixZQTJJRjBKLHlCQTVJK0IxSjs7V0FFRkM7T0FDM0IsWUFBNkIsNEJBYy9CMEosd0JBZjZCMUo7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBTUowRyw2QkFSa0MxRzs7V0FHREUsa0JBQy9CLFlBMVdGdUYsZUF5V2lDdkY7O09BR3NCLElBRGpCeEIsaUJBQUowQixrQkFDcUIsT0FoWHZEMUMsZ0JBK1dzQ2dCO09BQ3BDLFlBeUZGcUUsZUExRmtDM0M7O0dBQ3dDO1lBRTFFc0csNEJBR0NybUI7SUFBSyxPQTBGTndtQixpQkFwRkFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FzRk53bUIsaUJBcEZBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUVIO0tBR01xQztLQURBQztLQURBQztLQU9pQyxPQXJZcENoTSxnQkFnWUc4TDtLQUkwQixPQXNjN0J6RSxjQTNjRzBFO0lBR0wsV0FNRUUscUJBVkdEO0dBUUo7WUFFQ0M7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkFoZm5DdUUsZ0JBOGVtQzdEO09BQ2pDLFdBd2JGSixTQU5BTSxrQkFuYitCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0FyZnhCZ0QsZUFtZmtDcEM7T0FDaEMsV0FnWkZDLGVBalo4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWtIRndJLHNCQW5INkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0E5ZkUvSSxlQTZmR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQTFhcEN4TSxnQkFxYUdzTTtLQUkwQixPQWlhN0JqRixjQXRhR2tGO0lBR0wsV0FNRUUsMkJBVkdEO0dBUUo7WUFFQ0M7SUFFMEM7O1dBQ1g1TixlQUM3QixXQXRERjRLLGdCQXFEK0I1Szs7T0FHN0I7UUFEeUJFO1FBRU42RCxLQUZNN0Q7UUFFVnFCLEtBRlVyQjtRQUVkUSxLQUZjUjtRQUVsQlMsT0FGa0JUO1FBTXBCLE9BM2hCUHFFLGVBdWhCcUJSO1FBR2QsT0FzRFA4SixrQkF6RGlCdE07UUFFVixPQWtVUGdLLGtCQXBVYTdLO09BRFgsZUFpWkZKLFNBeEJBdUUsWUF4WFNsRTs7T0FNUDtRQUQ0QkU7UUFFVGlOLE9BRlNqTjtRQUVic0MsT0FGYXRDO1FBRWpCc0IsT0FGaUJ0QjtRQUVyQnlCLE9BRnFCekI7UUFNdkIsT0FsaUJQMEQsZUE4aEJxQnVKO1FBR2QsT0ErQ1BELGtCQWxEaUIxSztRQUVWLE9BK1BQcUksa0JBalFhcko7T0FEWCxlQTBZRjdCLFNBeEJBdUUsWUFqWFN2Qzs7T0FNUDtRQURnQ0c7UUFFckJKLE9BRnFCSTtRQUV6QkMsT0FGeUJEO1FBR1QsT0F0aUJ6QjhCLGVBcWlCYWxDO09BRFgsZUFwaUJGa0MsZUFxaUJTN0I7O1dBRXdCRSxpQkFDL0IsV0FqY0ZzRyxlQWdjaUN0RzttQkFFQUUsaUJBQy9CLFdBRUYwRCxlQUhpQzFEOztHQUNxQjtZQUV0RDBELGVBRUMxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0E1YnpCd2xCLGFBMmJNNUk7SUFDUixXQXVYRUosa0JBdlhheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FvQmdDLE9BMWVuQ2xOLGdCQTJkRzZNO0tBY3lCLE9BaVc1QnhGLGNBaFhHeUY7S0FjMEIsT0FBQSxXQXBCNUJGLElBS0VHO0tBYzBCLE9BNlY3QjVOLGtCQTdWMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FmOUNxcUI7a0JBU01ycUI7S0FDSDtNQUFRNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFHT3FlLE9BRkZ6QjtNQUVGUixPQUZFUTtNQUdhLE9Bd1IzQjROLGlCQXpSZ0JuTTtNQUNSLFdBNlJSb00sY0E5UllyTztLQUROLFdBdGtCTnFFLGVBcWtCVXZFO0lBR3VDO0lBTC9DLFdBQUEsa0NBVENvTztJQU1MLFdBZ0JFUCxrQkF2QkdRO0dBcUJKO1lBRUNSLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQTlPQThCLGtCQTRPQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsT0FyZ0JyQ3ZOLGdCQWdnQkdxTjtLQUkyQixPQXNVOUJoRyxjQTNVR2lHO0lBR0wsV0FDZ0MsV0FQN0JWLElBRUVXO0dBUUo7WUFFQzdELHNCQUVDL21CO0lBQUssT0FFTjJuQjtzQkFGMkIzbkIsR0FBSyxPQTBUaEN3YyxTQU5BTSxrQkFwVDJCOWMsR0FBZ0MsR0FBMURBO0dBQTZEO1lBRTlEMm5CLGdCQUtDc0M7SUFBSjtLQUtNWTtLQURBQztLQURBQztLQURBQztLQVNrQyxPQTVoQnJDM04sZ0JBc2hCR3dOO0tBSzJCLE9BK1M5Qm5HLGNBclRHb0c7S0FLZ0MsT0FLbkN2RCxtQkFYR3dEO0lBSUwsV0FDaUMsV0FSOUJkLElBRUVlO0dBVUo7WUFFQ3pELDBCQUNtRSxxQkFFbkI7WUFFaERwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVMwQixPQXlSN0IxRyxjQS9SR3VHO0tBS2lDLE9BaGpCcEM1TixnQkEwaUJHNk47S0FLMkIsT0FBQSxpQ0F0UzlCN0Msa0JBZ1NHOEM7SUFJTCxXQXVSRTNPLGtCQXRSNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0NvckI7R0FVSjtZQUVDcEM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTeUIsT0F5UTVCOUcsY0EvUUcyRztLQUtnQyxPQWhrQm5DaE8sZ0JBMGpCR2lPO0tBSzhCLE9BcVFqQzlPLFNBTkFNLGtCQXJRR3lPO0lBSUwsV0F1UUUvTyxrQkF0UTJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjlDd3JCO0dBVUo7WUFFQ3pDO0lBR0g7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBVXlCLE1Bd1A1QmxILGNBL1BHK0c7S0FNZ0MsT0FqbEJuQ3BPLGdCQTBrQkdxTztLQU0wQixPQXZVN0JyRCxpQkFnVUdzRDtJQUlMO1lBdVBFblA7dUJBclBnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDNHJCOzs7O0dBV0o7WUFFQzNGO0lBRUg7S0FHTTRGO0tBREFDO0tBREFDO0tBUW1DLE1BaG1CdEMxTyxnQkEwbEJHd087S0FLNEIsTUEyTy9CbkgsY0FqUEdvSDtJQUdMLFdBa0NFcEssMkJBdENHcUs7R0FTSjtZQUVDL0Y7SUFFSDtLQU1NZ0c7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FxQm1DLE1BM25CdENoUCxnQkEybUJHMk87S0FlNEIsTUFnTi9CdEgsY0FoT0d1SDtLQWVnQyxNQW1FbkN2RSxrQkFuRkd3RTtLQWVEO09BQUE7MEJBTUZ4Syw0QkF0Qkd5SztpQkFTTW5zQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUF3STNCNE4saUJBeklnQm5NO01BQ1IsVUE2SVJvTSxjQTlJWXJPO0tBRE4sV0F0dEJOcUUsZUFxdEJVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ2tRO0lBTUw7WUF1TkU1UCxTQU5BTSxrQkF4Tkd1UDs7Ozs7O0dBc0JKO1lBRUMzSztJQUdIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVNpQyxNQTNvQnBDcFAsZ0JBcW9CR2lQO0tBSzBCLE1BZ003QjVILGNBdE1HNkg7S0FLMkIsTUFLOUJHLCtCQVhHRjtJQUlMLFdBNkxFaFEsa0JBNUw0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjtHQVVKO1lBRUNDO0lBRStDO0tBS3pDO01BSitCalA7TUFBSmI7TUFBSlY7TUFJdkIsTUFBQSxpQ0F4dkJOdUUsZ0JBb3ZCcUNoRDtNQUcvQixNQTJFTmtQLDJCQTlFaUMvUDtxQkFFYjVjLEdBQUssT0FpTHpCd2Msa0JBakx1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7S0FEOUMsV0FDSSxpQ0FGdUJrYzs7UUFLQ0U7SUFDNUIsV0E2S0ZJLFNBTkFNLGtCQXhLOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0E2QjJCLE1BaUo5QnpJLGNBdktHa0k7S0FxQmtDLE1BeHJCckN2UCxnQkFrcUJHd1A7S0FxQmdDLE1BQUEsaUNBMXhCbkNwTSxnQkFvd0JHcU07S0FxQitCLE1BTWxDcEYsa0JBNUJHcUY7S0FxQjRCLE1BWS9CSyxlQWxDR0o7aUJBa0JNaHRCO0tBQ0g7TUFBWXlkLEtBRFR6ZDtNQUNLNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFFb0MsTUF1SjdDMGtCLGNBeEprQmpIO01BQ1EsTUF0eEIxQmdELGVBcXhCYzdEO0tBQ1IsV0F0eEJONkQsZUFxeEJVdkU7SUFDb0Q7SUFINUQsVUFBQSxpQ0FsQkMrUTtpQkFXTWp0QjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUFnRjNCNE4saUJBakZnQm5NO01BQ1IsVUFxRlJvTSxjQXRGWXJPO0tBRE4sV0E5d0JOcUUsZUE2d0JVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FYQ2dSO0lBUUw7WUErSkUxUSxrQkE5SjZDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVmhEbXRCOzs7Ozs7OztHQThCSjtZQUVDekYseUJBQ2lFLHFCQUVmO1lBRWxEMEY7SUFDRTs7U0FFOEJsUjtLQUM5QixXQUFnQyw0QkFLbENtUiw4QkFOZ0NuUjs7UUFFREU7SUFDN0IsV0FBK0IsNEJBZ0NqQ2tSLHdCQWpDK0JsUjtHQUU2QjtZQUU1RGlSO0lBR0g7S0FNTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FjZ0MsTUE1dEJuQ3ZRLGdCQW10QkdrUTtLQVF5QixNQStHNUI3SSxjQXhIRzhJO0tBUXlCLE1BQUEsaUNBN3pCNUIvTSxnQkFvekJHZ047S0FRMEIsTUFNN0JkLDJCQWZHZTtpQkFRYTF0QixHQUFLLE9BNEdyQndjLGtCQTVHbUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO0lBQTFDLFVBQUEsaUNBVEMydEI7SUFNTDtZQStHRW5SLGtCQTlHMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FSOUM0dEI7Ozs7OztHQWVKO1lBRUNqQjtJQUUwQztTQUNaelE7S0FDNUIsV0FBOEIsNEJBdDBCaEN1RSxnQkFxMEI4QnZFOztRQUVDRTtJQUM3QixXQUErQiw0QkFFakNrUix3QkFIK0JsUjtHQUNzQztZQUVyRWtSO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXZ0MsTUFydkJuQzVRLGdCQTh1Qkd3UTtLQU15QixNQXNGNUJuSixjQTdGR29KO0tBTTBCLE1BdDFCN0JyTixlQSswQkdzTjtLQU02QixNQU1oQ3RHLGtCQWJHdUc7SUFLTCxXQW9GRXhSLGtCQW5GMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUNpdUI7R0FZSjtZQUVDeEcseUJBQ2lFLHFCQUViO1lBRXBEK0Msd0JBQytELHFCQUVDO1lBRWhFQztJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSDs7R0FBMkI7WUFFMUQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVcwQixNQW9EN0I1SixjQTNER3dKO0tBTWlDLE1BcnhCcEM3USxnQkE4d0JHOFE7aUJBTXlDbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUDNCb3VCO0tBTTJCLE1BdDNCOUIzTixlQSsyQkc0TjtJQUtMO1lBbURFN1Isa0JBbEQ0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAvQ3N1Qjs7Ozs7R0FZSjtZQUVDbko7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BaDRCbER1RSxlQSszQjRCN0Q7S0FDMUIsV0F1Q0ZKLFNBeEJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBbDRCRnFFLGVBaTRCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDRjs7V0FDd0NaLGVBQUpWLDhCQUNzQmxjLEdBQUssT0FBTEEsRUFBTTtPQUE1RCxXQURnQ2tjLElBQ00sc0NBREZVOztXQUVSUixpQkFBTSxXQUFOQTs7T0FHSDtRQUZjcUI7UUFBSlk7UUFBSnhCO3VCQUVVN2MsR0FBSyxPQUFMQSxFQUFNO1FBQXRCLE1BQUEsc0NBRmN5ZDtPQUN2QyxXQUQrQlosTUFrQmpDNkgsY0FsQnFDckc7O1dBR0RFLGlCQUFKeEIsZ0NBQ3NCL2MsR0FBSyxPQUFMQSxFQUFNO09BQTFELFdBRDhCK2MsTUFDTSxzQ0FERndCOztHQUM2QjtZQUVqRXpCO0lBQWdEOztXQUMvQlosZUFBTSxXQUFOQTs7V0FDR1UsZUFBSlI7T0FBVyxXQUYzQlUsaUJBRWdCVixPQUFJUTs7T0FFcUIsSUFEbkJ5QixpQkFBSnhCLGlCQUN1QixNQUp6Q0MsaUJBR3NCdUI7T0FDcEIsV0FKRnZCLGlCQUdrQkQ7O0dBQzJDO1lBRTdETCxTQUdDeU47SUFBSixJQUErQjFwQixnQkFBdEJZLGdCQUNnRCxNQUV0RHVqQixjQUg0Qm5rQjtJQUM5QixXQUF5QixXQUR0QjBwQixJQUFLOW9CO0dBQ21FO1lBRXpFdWpCO0lBQ0g7S0FBNENrTztLQUFsQkM7S0FBcEJDO0tBR2dCLE1BSW5CQyxjQVB1QkY7SUFDekIsV0FNRUUsY0FQR0QsaUJBQXNDRjtHQUsxQztZQUVDRztJQUNIO0tBQXlEQztLQUFoQkM7S0FBakJDO0tBQWxCQztJQUNMLFdBREtBLFdBQWtCRCxVQUFpQkQsU0FBZ0JEO0dBQ2M7Ozs7T0E3MUNoRS9XO09BUUpJO09BY0FFO09BU0FJO09BVUFLO09BZUFPO09BcUhBaUY7T0FRQUc7T0FlQXRDO09BTUE1QjtPQVlBZjtPQStJQTRDO09BY0EwRDtPQW1EQXZEO09BZUFuRDtPQUlBbUg7T0FrQ0FJO09BV0FEO09BYUFJO09BU0FMO09BYUF0SDtPQUlBK0g7T0FhQUk7T0FRQXJKO09BSUF1SjtPQVFBRztPQXFDQVM7T0FLQUY7T0FJQUs7T0FhQUk7T0FnQ0E3RTtPQVFBa0Y7T0FhQUk7T0EyQkFFO09BUUFsRjtPQUlBNEQ7T0FnQkEzRTtPQWFBNEc7T0F3Q0FDO09BUUFDO09BYUFJO09Bb0JBQztPQXNCQWpEO09BSUFrRDtPQVFBRztPQXNDQXpDO09BS0E2QztPQUlBcEM7T0FhQXdDO09BZ0JBQztPQVFBRztPQWFBSTtPQTRCQXBIO09BTUE4RDtPQThCQXVEO09BS0FkO09BS0ExQztPQWlCQVE7T0FJQVk7T0FtQkFKO09BS0FwQjtPQWdCQTZDO09BZ0JBRDtPQWlCQTlDO09BY0FEO09BMkJBdEU7T0FnQkFnTDtPQVdBM0c7T0FtQ0EyQjtPQUtBMEY7T0FTQUM7T0FxQkFWO09BUUFXO09BaUJBN0Y7T0FLQStDO09BS0FDO09BTUEzRTtPQWlCQVg7T0FRQTdHO09BTUEyRjtPQUtBbEQ7T0FFQXBEO09BS0FIO09BV0FWO09BTUFOO09BTUFrSTtPQVFBcU87Ozs7RTs7Ozs7OztZQ2wxQ0E1VyxlQUVJbmMsR0FBSyxPQUFMQSxFQUFNO1lBRVZ5bEIsZUFFSXpsQixHQUFLLE9BQUxBLEVBQU07WUFFVmljLHFCQUVJamMsR0FBSyxPQUFMQSxFQUFNO1lBRVZ5Z0IsZUFFSXpnQixHQUFLLE9BQUxBLEVBQU07WUFFVmdkLGdCQUVJaGQsR0FBSyxPQUFMQSxFQUFNO1lBRVZzZ0IsYUFFSXRnQixHQUFLLE9BQUxBLEVBQU07WUFFVnllLFVBRUl6ZSxHQUFLLE9BQUxBLEVBQU07WUFFVitsQixzQkFFSS9sQixHQUFLLE9BQUxBLEVBQU07WUFFVmdtQixvQkFFSWhtQixHQUFLLE9BQUxBLEVBQU07WUFFVjBoQiwyQkFFSTFoQixHQUFLLE9BQUxBLEVBQU07WUFFVnltQixnQkFFSXptQixHQUFLLE9BQUxBLEVBQU07WUFFVmtuQixpQkFFSWxuQixHQUFLLE9BQUxBLEVBQU07WUFFVjhtQixnQkFFSTltQixHQUFLLE9BQUxBLEVBQU07WUFFVnVwQixxQkFFSXZwQixHQUFLLE9BQUxBLEVBQU07WUFFVjBwQixzQkFFSTFwQixHQUFLLE9BQUxBLEVBQU07WUFFVnVoQixpQkFFSXZoQixHQUFLLE9BQUxBLEVBQU07WUFFVnFvQixpQkFFSXJvQixHQUFLLE9BQUxBLEVBQU07WUFFVjJvQixvQkFFSTNvQixHQUFLLE9BQUxBLEVBQU07WUFFVjBsQixvQkFFSTFsQixHQUFLLE9BQUxBLEVBQU07Ozs7T0ExRVZtYztPQUlBc0o7T0FJQXhKO09BSUF3RTtPQUlBekQ7T0FJQXNEO09BSUE3QjtPQUlBc0g7T0FJQUM7T0FJQXRFO09BSUErRTtPQUlBUztPQUlBSjtPQUlBeUM7T0FJQUc7T0FJQW5JO09BSUE4RztPQUlBTTtPQUlBakQ7Ozs7RTs7Ozs7OztZQ3hFQXZKLGVBRUluYyxHQUFLLE9BQUxBLEVBQU07WUFFVnlsQixlQUVJemxCLEdBQUssT0FBTEEsRUFBTTtZQUVWaWMscUJBRUlqYyxHQUFLLE9BQUxBLEVBQU07WUFFVnlnQixlQUVJemdCLEdBQUssT0FBTEEsRUFBTTtZQUVWZ2QsZ0JBRUloZCxHQUFLLE9BQUxBLEVBQU07WUFFVnNnQixhQUVJdGdCLEdBQUssT0FBTEEsRUFBTTtZQUVWeWUsVUFFSXplLEdBQUssT0FBTEEsRUFBTTtZQUVWK2xCLHNCQUVJL2xCLEdBQUssT0FBTEEsRUFBTTtZQUVWZ21CLG9CQUVJaG1CLEdBQUssT0FBTEEsRUFBTTtZQUVWMGhCLDJCQUVJMWhCLEdBQUssT0FBTEEsRUFBTTtZQUVWeW1CLGdCQUVJem1CLEdBQUssT0FBTEEsRUFBTTtZQUVWa25CLGlCQUVJbG5CLEdBQUssT0FBTEEsRUFBTTtZQUVWOG1CLGdCQUVJOW1CLEdBQUssT0FBTEEsRUFBTTtZQUVWdXBCLHFCQUVJdnBCLEdBQUssT0FBTEEsRUFBTTtZQUVWMHBCLHNCQUVJMXBCLEdBQUssT0FBTEEsRUFBTTtZQUVWdWhCLGlCQUVJdmhCLEdBQUssT0FBTEEsRUFBTTtZQUVWcW9CLGlCQUVJcm9CLEdBQUssT0FBTEEsRUFBTTtZQUVWMm9CLG9CQUVJM29CLEdBQUssT0FBTEEsRUFBTTtZQUVWMGxCLG9CQUVJMWxCLEdBQUssT0FBTEEsRUFBTTs7OztPQTFFVm1jO09BSUFzSjtPQUlBeEo7T0FJQXdFO09BSUF6RDtPQUlBc0Q7T0FJQTdCO09BSUFzSDtPQUlBQztPQUlBdEU7T0FJQStFO09BSUFTO09BSUFKO09BSUF5QztPQUlBRztPQUlBbkk7T0FJQThHO09BSUFNO09BSUFqRDs7OztFOzs7Ozs7R0NsRWM7O0lBOCtCWi9qQjtJQUNBQztJQS8rQlk7SUErQ0M7SUE4N0JILGFBQ1ZELHVCQUNBQzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDOS9CRm1hLGdCQUFnQnhiLEtBQUl5YjtJQUN0QixPQUFBLG1DQURrQnpiLFdBQUl5YjtHQUVvRDtZQUVwRUM7SUFFTix1QkFDNkJDLGVBQ3pCLFdBOFpGQyxlQS9aMkJEO1FBRUFFO0lBQ3pCLFdBRUZDLHdCQUgyQkQ7R0FDOEI7WUFFekRDO0lBR0g7S0FHTUM7S0FEQXhCO0tBREFEO0tBTTBCO09BQUEsaUNBSTdCMEIseUJBVEd6QjtJQUdMLFdBd3FDRTBCLGtCQXZxQzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DNmEsa0JBRUF5QjtHQU1KO1lBRUNDO0lBR0gsSUFBb0NFLHNCQUE5QkM7SUFDTCxXQUtFQyw2QkFOR0QsYUFBOEJEO0dBSWxDO1lBRUNFO0lBRTRDOztXQUNkVCxlQUFNLFdBQU5BOztXQUNFVSxlQUFKUixpQ0FDc0JwYyxHQUFLLE9BQUxBLEVBQU07T0FBdEQsV0FEMEJvYyxNQUNNLHVDQURGUTs7V0FFSEMsaUJBQzNCLFdBRDJCQTttQkFFREUsaUJBQU0sV0FBTkE7O0dBQW9DO1lBRWhFQztJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9Bb1ZwQ0MsZ0JBMVZHSjtJQUVMO1lBT0VNLHFCQVpHSDtZQUNBRDtZQUNBRDs7R0FRSjtZQUVDSztJQUVGLDhCQWlId0M7OztXQWhIVHJCLGVBQzNCLFdBNG5DRk0sU0FGQU0sa0JBM25DNkJaOztXQUVHRSxpQkFDOUIsV0E2bUNGb0IsY0E5bUNnQ3BCOztPQUl1QjtRQUZuQnFCO1FBQUpiO1FBQUpDO1FBRTJCLE9BeEJ2REcsZ0JBc0JvQ1M7UUFFYixPQUFBLDRCQXFKdkJDLG9CQXZKZ0NkO09BQzlCLFdBc21DRmUsY0F2bUM0QmQ7O1dBR0lFO09BQzlCLFdBQWdDLDRCQXVJbEMwQixXQXhJZ0MxQjs7T0FPMUI7UUFMa0NrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLdEIsT0FoQ054QixnQkEyQndDaUQ7UUFJbEMsT0E2Sk5LLGFBaktvQ2pCO1FBRzlCLE9BQUEsaUNBOUJOckMsaUJBMkJnQ3FCO09BQzlCLFdBb2xDRkMsZUFybEM0QkU7O09BU3RCO1FBSDRCRDtRQUFKSTs7bUJBSWpCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F2QzlCZ2QsZ0JBc0NrQko7V0FDUixXQXlrQ1YwQixlQTFrQ2NwQztVQUNtQztRQUgzQyxPQUFBLGtDQUg0QnFDO09BQ2hDLFdBbENGdkIsZ0JBaUM4QjJCOztPQVNzQjtRQURsQkQ7UUFBSkU7UUFDc0IsT0FBQSw0QkF1SHBESCxXQXhIa0NDO09BQ2hDLFdBMUNGMUIsZ0JBeUM4QjRCOztPQUdvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FBQSw0QkFxSGxETCxXQXRIZ0NJO09BQzlCLFdBNUNGN0IsZ0JBMkM0QjhCOztXQUVDRTtPQUMzQixXQUE2Qiw0QkE5Qy9CaEMsaUJBNkM2QmdDOztPQUlNO1FBRkdEO1FBQUpHO1FBRUMsT0FBQSxpQ0FqRG5DbEMsaUJBK0NzQytCO09BQ3BDLFdBK2xDRnZDLFNBRkFNLGtCQTlsQ2tDb0M7O1dBR0VELGlCQUFKRztPQUM5QjtlQUQ4QkE7ZUFFWixpQ0FwRHBCcEMsaUJBa0RvQ2lDOztPQVU5QjtRQVA2QkU7UUFBSkk7UUFPekIsT0FBQSxpQ0E1RE52QyxpQkFxRG1DbUM7O21CQUd0Qm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BMUR6Q2dkLGdCQXlEa0JKO1dBQ1IsV0FxbENWSixTQUZBTSxrQkFwbENjWjtVQUM4QztPQUoxRCxZQUNJLGtDQUZ5QnFEOztPQVVOO1FBRlNEO1FBQUpFO1FBRUwsT0FnbEN6QmhELFNBRkFNLGtCQWhsQ2tDd0M7T0FDaEMsWUE5REZ0QyxnQkE2RDhCd0M7O09BS3lCO1FBRmRDO1FBQUpDO1FBQUpDO1FBRXNCLE9BbEV2RDNDLGdCQWdFeUN5QztRQUVoQixPQTZrQ3pCakQsU0FGQU0sa0JBN2tDcUM0QztPQUNuQyxZQWpFRjFDLGdCQWdFaUMyQzs7V0FHSkU7T0FDM0IsWUFBNkIsNEJBcEUvQjdDLGlCQW1FNkI2Qzs7T0FJZ0I7UUFGRks7UUFBSk47UUFBSkc7UUFFVSxPQUFBLGlDQXZFN0MvQyxpQkFxRTJDa0Q7UUFFbEIsT0F2RXpCbEQsZ0JBcUV1QzRDO09BQ3JDLFlBdEVGNUMsZ0JBcUVtQytDOztPQUlvQixJQURsQkQsa0JBQUpNLGtCQUNzQixPQXpFdkRwRCxnQkF3RXFDOEM7T0FDbkMsWUF6RUY5QyxnQkF3RWlDb0Q7O09BR21CLElBRGxCRCxrQkFBSkssa0JBQ3NCLE9BM0VwRHhELGdCQTBFa0NtRDtPQUNoQyxZQTNFRm5ELGdCQTBFOEJ3RDs7T0FReEI7UUFOc0NSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNdEIsT0FsRk41RCxnQkE0RTRDZ0Q7UUFLdEMsT0EwRU5LLG9CQS9Fd0MySjtRQUlsQyxPQWhGTmhOLGdCQTRFb0MwRDtRQUc5QixPQS9FTjFELGdCQTRFZ0N1RDtPQUM5QixZQStHRkQsYUFoSDRCTTs7T0FRNkIsSUFEbEJELGtCQUFKRyxrQkFDc0IsT0F5S3pETCxlQTFLdUNFO09BQ3JDLFlBcEZGM0QsZ0JBbUZtQzhEOztPQUlvQjtRQUZoQk07UUFBSlA7UUFBSkc7UUFFd0IsT0FzS3ZEUCxlQXhLdUNXO1FBRWQsT0FBQSxpQ0FzS3pCWCxnQkF4S21DSTtPQUNqQyxZQXRGRjdELGdCQXFGK0JnRTs7T0FJb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9Bc2pDbkQxRSxTQXBCQXVFLFlBbmlDaUNFO09BQy9CLFlBekZGakUsZ0JBd0Y2QmtFOztXQUVGQyxrQkFDekIsWUFvakNGM0UsU0FGQU0sa0JBbmpDMkJxRTs7T0FJRSxJQUZVRSxrQkFBSkMsa0JBRU4sT0E5RjdCdEUsZ0JBNEZ1Q3FFO09BQ3JDLFlBa2pDRjdFLFNBcEJBdUUsWUEvaENtQ087OztRQUdIRzs7bUJBR3BCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BcEdsQ2dkLGdCQW1HaUJKO1dBQ1IsV0EyaUNUSixTQXBCQXVFLFlBeGhDYTdFO1VBQ3dDO09BSm5ELFlBQ0Usa0NBRjRCdUY7O09BVzFCO1FBSm9Dd1A7UUFBSnpQO1FBQUpHO1FBSTVCLE9BMUdOM0UsZ0JBc0cwQ2lVO1FBR3BDLE9BbWNOMVAsaUJBdGNzQ0M7T0FDcEM7ZUF3aUNGaEY7MEJBdmlDb0J4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZoQjJoQjs7OztPQU9FLElBRktFLGtCQUFKRCxrQkFFRCxPQTdHcEM1RSxnQkEyR3lDNkU7T0FDdkMsWUE4MUJGSCwyQkEvMUJxQ0U7O1dBR1BFLGtCQUM1QixZQS9HRjlFLGdCQThHOEI4RTs7V0FFRkMsa0JBQzFCLFlBakhGL0UsZ0JBZ0g0QitFOztPQUlIO1FBRlFFO1FBQUpDO1FBRUosT0FBQSxpQ0F5SXpCekIsZ0JBM0lpQ3dCO09BQy9CLFlBbkhGakYsZ0JBa0g2QmtGOztXQUdDQyxrQkFDNUIsWUEwV0ZILHFCQTNXOEJHOztPQUlDLElBRktDLGtCQUFKQyxrQkFFRCxPQXpIL0JyRixnQkF1SG9Db0Y7T0FDbEMsWUF1aENGNUYsa0JBdGhDbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT3FpQjs7V0FHSkUsa0JBQzFCLFlBaWJGaEIsaUJBbGI0QmdCOztPQUc2QixJQUR4QjJPLGtCQUFKek8sa0JBQzRCLE9BN0h6RHpGLGdCQTRIaUNrVTtPQUMvQixZQTJaRjVPLHNCQTVaNkJHOztXQUVBdU8sa0JBQzNCLFlBS0Z4TyxXQU42QndPO21CQUVJRyxrQkFDL0IsWUFvcEJGek8sZUFycEJpQ3lPOztHQUV1QztZQUV4RTNPO0lBQ0g7S0FBc0QxVDtLQUF4QkM7S0FBeEJDO0tBSXNCLE9Bekl6QmdPLGdCQXFJbURsTztLQUcxQixPQUFBLDRCQUl6QjZULGlCQVAyQjVUO0lBQzdCLFdBTUU0VCxnQkFQRzNUO0dBS0o7WUFFQzJUO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMEIsT0F2SjdCL0YsZ0JBaUpHNkY7S0FLMEIsT0FzQzdCdkMsYUE1Q0d3QztJQUlMO1lBMi9CRXRHLGtCQTEvQjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjdDK2lCOzs7WUFHQUg7R0FPSjtZQUVDdkMsMkJBRUYscUJBRW9EO1lBRWxENUI7SUFDSDtLQUdNbkU7S0FEQUM7S0FEQUM7S0FPd0IsT0ExSzNCd0MsZ0JBcUtHMUM7S0FJMEIsT0FBQSxpQ0F6SzdCMEMsaUJBb0tHekM7SUFHTCxXQXFCRStGLGFBekJHOUY7R0FRSjtZQUVDa0Q7SUFFSDtLQUlNNEY7S0FEQUM7S0FEQUU7S0FEQUM7S0FRZ0MsT0F3S25DckcsZ0JBOUtHa0c7S0FLMEIsT0F2TDdCdkcsZ0JBaUxHeUc7SUFJTCxXQU9FbkQsYUFaR29ELHNCQUdBSjtHQU9KO1lBRUNoRDtJQUNIO0tBSU1zRDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQXlKcEMxRyxnQkEvSkd1RztJQUVMLFdBT0VJLGtCQVpHRCxZQUNBRCxVQUNBRDtHQVFKO1lBRUNHO0lBQ21FLDhCQUNyQzs7O1dBQ0g5SCxlQUN6QixXQWk4QkZNLGtCQWo4QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHZCa2M7O09BR3NCO1FBRGZVO1FBQUpSO1FBQ21CLE9BKzdCakRJLGtCQS83QitEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRG5DNGM7T0FDaEMsV0FwQkYwRCxhQW1COEJsRTs7V0FFRVMsaUJBQzlCLFdBZzdCRlcsY0FqN0JnQ1g7O09BR3FCLElBRGhCd0IsaUJBQUp0QixpQkFDb0IsT0E4NkJyRFMsY0EvNkJxQ2E7T0FDbkMsV0E4NkJGYixjQS82QmlDVDs7V0FFSnlCO09BQzNCLFdBQTZCLDRCQTFCL0I4QixjQXlCNkI5Qjs7T0FLdkI7UUFIZ0NEO1FBQUpJOzttQkFJckIzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU4QyxPQWpDM0RzZ0IsYUFnQ2tCMUQ7eUJBQ081YyxHQUFLLE9BazdCOUJ3YyxrQkFsN0I0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7V0FBM0MsV0FBQyxrQ0FER2tjO1VBQzZEO1FBSHJFLE9BQUEsdUNBSGdDcUM7T0FDcEMsV0F1N0JGL0IsU0FGQU0sa0JBdDdCa0M2Qjs7V0FRRUQsaUJBQUpFO09BQzlCLFdBRDhCQSxNQUNpQixpQ0FwQ2pEMEIsY0FtQ29DNUI7O09BUzlCO1FBUDZCRztRQUFKQztRQU96QixPQTg0Qk5tRixpQkFyNUJtQ3BGOzttQkFHdEI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTFDekNzZ0IsYUF5Q2tCMUQ7V0FDUixXQXk2QlZKLFNBRkFNLGtCQXg2QmNaO1VBQzJDO09BSnZELFdBQ0ksa0NBRnlCNEM7O1dBUUZFO09BQzNCLFdBQTZCLDRCQTlDL0JzQixjQTZDNkJ0Qjs7T0FHaUIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWhEOUNvQixhQStDK0J2QjtPQUM3QixXQWhERnVCLGFBK0MyQnBCOztPQUcyQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BZXREcUIsZUFoQnVDeEI7T0FDckMsWUFsREZxQixhQWlEbUNsQjs7V0FFUEcsa0JBQzFCLFlBKzVCRi9DLFNBRkFNLGtCQTk1QjRCeUM7O1dBRUFDLGtCQUMxQixZQXRERmMsYUFxRDRCZDs7V0FFRUc7T0FDNUI7ZUEyNUJGbkQ7MEJBMTVCbUJ4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZuQjJmOztXQUdHRSxrQkFDL0IsWUEzREZTLGFBMERpQ1Q7O1dBRUFFLGtCQUMvQixZQTRoQkYyQyxlQTdoQmlDM0M7O09BRzRCLElBRDVCWixpQkFBSmlCLGtCQUNnQyxPQS9EN0RFLGFBOERpQ25CO09BQy9CLFlBbzVCRjNDLFNBRkFNLGtCQW41QjZCc0Q7O0dBQ2dEO1lBRTdFSztJQUVIO0tBSU00RDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQXVGcENuSCxnQkE3RkdnSDtJQUVMLFdBV0VJLG9CQWhCR0QsWUFDQUQsVUFDQUQ7R0FRSjtZQUVDaEgsb0JBRUN0ZCxHQUFLLE9BQUxBLEVBQU07WUFFUHlrQjtJQUVGLDhCQUNnQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdnQjtRQUZMdUI7UUFBSmI7UUFBSlI7UUFFYSxPQTFCM0NxRSxlQXdCc0NoRDtRQUVkLE9BMUJ4QmdELGVBd0JrQzdEO09BQ2hDLFdBMDFCRjBCLGVBMzFCOEJsQzs7V0FHRFM7T0FDM0IsV0FBNkIsNEJBNUIvQjRELGdCQTJCNkI1RDs7T0FJTTtRQUZBd0I7UUFBSnRCO1FBRUksT0FBQSw0QkEvQm5DMEQsZ0JBNkJtQ3BDO09BQ2pDLFdBbzNCRjdCLFNBRkFNLGtCQW4zQitCQzs7T0FLSyxJQUZEd0IsaUJBQUpDLGlCQUVLLE9BdTFCcEN5RixpQkF6MUJtQzFGO09BQ2pDLFdBQ0csNEJBb0RMb0csbUJBdEQrQm5HOztPQUtJO1FBRkRFO1FBQUpDO1FBRUssT0FBQSw0QkFyQ25DOEIsZ0JBbUNrQy9CO09BQ2hDLFdBODJCRmxDLFNBRkFNLGtCQTcyQjhCNkI7O1dBR0lFLGlCQUFKRDtPQUM1QixXQXZDRjZCLGVBc0M4QjdCLE9BQUlDOztPQU01QjtRQUprQ1E7UUFBSk47UUFBSkQ7d0JBSVY5ZSxHQUFLLE9BQUEsNEJBazFCM0IrZ0IsWUFsMUJzQi9nQixHQUEwQjtRQUExQyxPQUFBLHVDQUprQ3FmO1FBR2xDLE9BODBCTjRFLGlCQWoxQm9DbEY7T0FDbEM7ZUFDSSw0QkFzQk42RixnQkF4QmdDOUY7Ozs7T0FPcUI7UUFGcEJHO1FBQUpEO1FBRXdCLE9BL0NyRHlCLGVBNkNpQ3hCO3dCQUVkamYsR0FBSyxPQW0yQnhCd2Msa0JBbjJCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRndCZ2Y7O1dBR0VFLGlCQUM3QixXQUlGMkYsa0JBTCtCM0Y7bUJBRUVFLGlCQUMvQixZQXFlRnNELGVBdGVpQ3REOztHQUNxQjtZQUV0RHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTdEbkN5Z0IsZUE0RFk3RDtLQUNSLFdBcTFCSkosU0FGQU0sa0JBcDFCUVo7SUFDNkM7SUFIckQsV0FBQSxrQ0FGTVU7SUFDUixXQXkxQkVKLFNBRkFNLGtCQXgxQkVaO0dBTUk7WUFFTjBJO0lBRUg7S0FHTUU7S0FEQUM7S0FEQXhOO0tBT2dDLE9BeUJuQzhGLGdCQTlCR3lIO0lBRUwsV0FNRUUsb0JBVkd6TixXQUNBd047R0FPSjtZQUVDQztJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBbEZqQ3VFLGdCQWdGZ0NoRDtLQUM5QixXQWkwQkZqQixTQXBCQXVFLFlBOXlCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0FwRkZxRSxlQW1GMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtJQUVMLFdBOHdCRUUsdUJBbHhCRzNOLFdBQ0EwTjtHQU9KO1lBRUM3SCxnQkFFQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTThCLE9BSWpDQyxhQVRHRjtJQUdMLFdBb3lCRTlJLGtCQW55QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCLGtCQUVBRjtHQU1KO1lBRUNHO0lBQ0Y7O1dBQ3lCdEosZUFBTSxXQU03QkMsZUFOdUJEOztXQUNBRSxpQkFBTSxXQXdSN0JxSixlQXhSdUJySjs7V0FDQVMsaUJBQU0sV0F4SDdCNEQsZUF3SHVCNUQ7O09BRW9CO1FBRGZEO1FBQUpHO1FBQ21CLE9BQUEsaUNBdlgzQ0MsaUJBc1g0Qko7T0FDMUIsV0EzTEYwRCxhQTBMd0J2RDs7R0FDaUQ7WUFFekVaLGVBRUNuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O09BRVcsSUFEbEJqSixlQUFKVixlQUNzQixPQXpDbkRtQixnQkF3Q2lDVDtPQUMvQixXQXpZRkksZ0JBd1k2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBL052QnNCLG9CQTZOa0NXO09BQ2hDLFdBa3ZCRlYsY0FudkI4QnZCOztXQUdHUyxpQkFDL0IsV0F5c0JGaUosdUJBMXNCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkFzbEJ2QmdKLHVCQXhsQmlDeEg7T0FDL0IsV0E2dUJGWixjQTl1QjZCWjs7V0FHQ3lCLGlCQUM1QixXQTRoQkZ3SCxvQkE3aEI4QnhIOztXQUVHRyxpQkFDL0IsV0E0Z0JGc0gsb0JBN2dCaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0FxZEZtSCw2QkF0ZCtCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkE0Uko4Ryw2QkE5UmtDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQWxFRnlGLGVBaUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BeEV2RHhDLGdCQXVFc0NxQjtPQUNwQyxZQTZXRmdFLGVBOVdrQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0FzWk51bUIsbUJBdlJBaEYsa0JBL0hDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0EwV053bUIsaUJBeFdBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BN0ZuQ3ZKLGdCQXdGR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGRGpLO1FBQUpWO1FBRUssT0FBQSw0QkF4TW5DdUUsZ0JBc01rQzdEO09BQ2hDLFdBMnNCRkosU0FGQU0sa0JBMXNCOEJaOztXQUdFRSxpQkFDOUIsV0F5QkY0RixxQkExQmdDNUY7O09BTzFCO1FBTGlDNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtyQixPQTFCTjRKLGdCQXFCdUN4RztRQUlqQyxPQWhSTkssYUE0UW1DN0M7UUFHN0IsT0FBQSxpQ0EzY05ULGlCQXdjK0JxQjtPQUM3QixXQXVxQkZDLGVBeHFCMkJ6Qjs7T0FTckI7UUFIMkIwQjtRQUFKeEI7O21CQUloQi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BcGQ5QmdkLGdCQW1ka0JKO1dBQ1IsV0E0cEJWMEIsZUE3cEJjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIMkJxQztPQUMvQixXQTVCRmtJLGdCQTJCNkIxSjs7T0FVMEI7UUFGcEJzQztRQUFKWDtRQUFKRjtRQUU0QixPQXJDdkRpSSxnQkFtQ21DcEg7UUFFWixPQUFBLDRCQTNTdkIzQixvQkF5UytCZ0I7T0FDN0IsV0FzcUJGZixjQXZxQjJCYTs7T0FJNkIsSUFEbEJLLGlCQUFKRixpQkFDc0IsT0E2T3hEbUksZ0JBOU9zQ2pJO09BQ3BDLFdBdkNGNEgsZ0JBc0NrQzlIOztXQUVGQyxpQkFDOUIsV0F5VEY4RCxlQTFUZ0M5RDs7T0FHd0IsSUFEeEJHLGlCQUFKRCxpQkFDNEIsT0EzQ3hEMkgsZ0JBMENnQzFIO09BQzlCLFdBc1hGZ0ksc0JBdlg0QmpJOztHQUMrQztZQUUzRWtEO0lBRUg7S0FBb0NnRjtLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLGtCQU5pQ0Y7SUFDbkMsV0F2U0UxRyxhQXNTRzJHO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQWxKbkNoSyxnQkE2SUc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BS1E7UUFKaUM3SjtRQUFKYjtRQUFKVjt3QkFJVGxjLEdBQUssT0FtcEIzQndjLGtCQW5wQnlDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtRQUE1QyxPQUFBLHVDQUppQ3lkO1FBR2pDLE9BeEVOZ0osZ0JBcUVtQzdKO09BQ2pDLFdBa1hGMkssbUJBblgrQnJMOztPQU03QjtRQUR3QkU7UUFFVGlELE9BRlNqRDtRQUViaUMsT0FGYWpDO1FBRWpCUyxPQUZpQlQ7UUFHMEIsT0FnQnBEb0wsc0JBakJpQm5JO1FBQ2EsT0F1a0I5Qm9JLGtCQXhrQmFwSjtPQURYLGVBaXBCRjdCLFNBcEJBdUUsWUE1bkJTbEU7O09BR1A7UUFEMkJFO1FBRVowQyxPQUZZMUM7UUFFaEJ3QixPQUZnQnhCO1FBRXBCeUIsT0FGb0J6QjtRQUd1QixPQVlwRHlLLHNCQWJpQi9IO1FBQ2EsT0FzZ0I5QmlJLGtCQXZnQmFuSjtPQURYLGVBNm9CRi9CLFNBcEJBdUUsWUF4bkJTdkM7O09BR1A7UUFEK0JHO1FBRXBCRCxPQUZvQkM7UUFFeEJDLE9BRndCRDtRQUdSLE9BM1F6QjhCLGVBMFFhL0I7T0FEWCxlQXpRRitCLGVBMFFTN0I7O1dBRXlCRSxpQkFDaEMsV0ExZ0JGOUIsZ0JBeWdCa0M4Qjs7V0FFRkUsaUJBQzlCLFdBeEtGb0csZUF1S2dDcEc7bUJBRUFFLGlCQUM5QixXQXVRRndELGVBeFFnQ3hEOztHQUNxQjtZQUVyRHNJO0lBRUYsdUJBQ2dDdEwsZUFDNUIsV0F2UkZ1RSxlQXNSOEJ2RTtJQUcyQixJQURyQlUsZUFBSlIsaUJBQ3lCLE9BdGhCekRZLGdCQXFoQm9DSjtJQUNsQyxXQXFWRjJLLG1CQXRWZ0NuTDtHQUM0QztZQUU1RWtHLHNCQUVDdGlCO0lBQUssT0E4VE4ybkIsZ0JBNVNBcEcsa0JBbEJDdmhCO0dBQXVDO1lBRXhDa21CO0lBRUg7S0FJTTBCO0tBREFDO0tBREFDO0tBREFDO0tBU2dDLE9BeE1uQzFLLGdCQWlNR3dLO0tBTTBCLE9BSzdCdEcsaUJBWkd1RztJQUlMO1lBMm1CRXRMO3VCQXptQmdCeGM7NkJBQXFCQSxHQUFLLE9BQUxBLEVBQU07ZUFBdEIsT0FBQSx1Q0FBTEE7Y0FBOEI7Y0FQM0MrbkI7OztZQUdBSDtHQVFKO1lBRUNyRztJQUVIO0tBR015RztLQURBQztLQURBQztLQU9pQyxPQXROcEM3SyxnQkFpTkcySztJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQytCak0sZUFDM0IsV0FrbEJGTSxTQUZBTSxrQkFqbEI2Qlo7O1dBRUlFLGlCQUMvQixXQXRNRkQsZUFxTWlDQzs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEMwRSxpQkFvQm9DM0U7T0FDbEMsV0FZRndMLHVCQWJnQ3ZMOztPQUlxQixJQURuQndCLGlCQUFKdEIsaUJBQ3VCLE9BeEJyRHdFLGlCQXVCa0NsRDtPQUNoQyxXQXhCRmtELGlCQXVCOEJ4RTs7T0FJSixJQUZhd0IsaUJBQUpDLGlCQUVULE9BYzFCNkosaUJBaEJ1QzlKO09BQ3JDLFdBMUJGZ0QsaUJBeUJtQy9DOztXQUdMRyxpQkFDNUIsV0F6a0JGM0IsZ0JBd2tCOEIyQjttQkFFR0MsaUJBQy9CLFdBME1GOEQsZUEzTWlDOUQ7O0dBQ3FCO1lBRXREd0o7SUFFRixZQUM0QjtJQUc2QixJQUYxQnhMLGVBQUpWLGVBRThCLE9BRXZEbU0saUJBSjZCekw7SUFDM0I7WUE2akJGSjt1QkE1akJtQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBRnhCa2M7O0dBRWtEO1lBRTNFbU07SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQS9QcENuTCxnQkEwUEdpTDtJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQytCdk0sZUFDM0IsV0F5aUJGTSxTQUZBTSxrQkF4aUI2Qlo7O1dBRUlFLGlCQUMvQixXQW9DRnFKLGVBckNpQ3JKOztPQUlELElBRklRLGVBQUpDLGlCQUVBLE9BdEJoQ3dMLGlCQW9Cb0N6TDtPQUNsQyxXQTdCRndMLHVCQTRCZ0N2TDs7T0FLTjtRQUZPd0I7UUFBSnRCO1FBRUgsT0FBQSw0QkFRMUIyTCxzQkFWaUNySztPQUMvQixXQXhCRmdLLGlCQXVCNkJ0TDs7V0FHQ3lCLGlCQUM1QixXQXBFRitDLGlCQW1FOEIvQzs7V0FFR0csaUJBQy9CLFdBbUtGK0QsZUFwS2lDL0Q7O1dBRUpDLGlCQUMzQixXQTJoQkZwQyxTQUZBTSxrQkExaEI2QjhCOztHQUNnQztZQUU3RDhKO0lBRUY7O09BR3FDLElBRkQ5TCxlQUFKVixlQUVLLE9BNFduQzZKLHNCQTlXa0NuSjtPQUNoQyxXQXFoQkZKLFNBRkFNLGtCQXBoQjhCWjs7T0FLSztRQUZDbUM7UUFBSmpDO1FBRUcsT0FpaEJuQ0ksU0FGQU0sa0JBamhCb0N1QjtPQUNsQyxXQWtoQkY3QixTQUZBTSxrQkFqaEJnQ1Y7O09BS0csSUFGRW1DLGlCQUFKMUIsaUJBRUUsT0E1Q25Dd0wsaUJBMENxQzlKO09BQ25DLFdBK2dCRi9CLFNBRkFNLGtCQTlnQmlDRDs7T0FLRSxJQUZPNkIsaUJBQUozQixpQkFFSCxPQS9DbkNzTCxpQkE2QzBDM0o7T0FDeEMsV0E0Z0JGbEMsU0FGQU0sa0JBM2dCc0NDOztPQUtIO1FBRkk4QjtRQUFKTDtRQUVBLE9BZ1duQ3VILHNCQWxXdUNsSDtPQUNyQyxXQXlnQkZyQyxTQUZBTSxrQkF4Z0JtQzBCOztPQUtBO1FBRkdPO1FBQUpKO1FBRUMsT0FxZ0JuQ25DLFNBRkFNLGtCQXJnQnNDaUM7T0FDcEMsV0FzZ0JGdkMsU0FGQU0sa0JBcmdCa0M2Qjs7R0FFOEI7WUFFaEU4RyxlQUVDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7V0FDWDVNLGVBQzNCLFdBMmJGNEosdUJBNWI2QjVKOztPQUlOO1FBRlVVO1FBQUpSO1FBRU4sT0FBQSw0QkF3VXZCMkosdUJBMVVpQ25KO09BQy9CLFdBK2RGZSxjQWhlNkJ2Qjs7V0FHSVM7T0FDL0IsV0FBaUMsNEJBc1VuQ2tKLHVCQXZVaUNsSjs7V0FFSEUsaUJBQzVCLFdBNFFGaUosb0JBN1E4QmpKOztXQUVHeUIsaUJBQy9CLFdBNFBGeUgsb0JBN1BpQ3pIOztXQUVIRyxpQkFDNUIsV0F5T0ZvSyx3QkExTzhCcEs7O1dBRUVDLGlCQUM5QixXQXVORm9LLHlCQXhOZ0NwSzs7V0FFQ0U7T0FDL0IsV0FBaUMsNEJBcU9uQ2lLLHlCQXRPaUNqSzs7V0FFRkUsaUJBQzdCLFdBbU1GbUgsNkJBcE0rQm5IOztXQUVLRSxpQkFDbEMsV0FpTUZpSCw2QkFsTW9Dakg7O1dBRVJFLGlCQUMxQixZQW1LRjJILHNCQXBLNEIzSDs7V0FFR0csa0JBQzdCLFlBMklGMEoseUJBNUkrQjFKOztXQUVGQztPQUMzQixZQUE2Qiw0QkFjL0IwSix3QkFmNkIxSjs7V0FFS0c7T0FDaEM7ZUFDRSw0QkFNSjBHLDZCQVJrQzFHOztXQUdERSxrQkFDL0IsWUF0VkZ1RixlQXFWaUN2Rjs7T0FHc0IsSUFEakJ4QixpQkFBSjBCLGtCQUNxQixPQTVWdkQxQyxnQkEyVnNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0MzQzs7R0FDd0M7WUFFMUVzRyw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BalhwQ2hNLGdCQTRXRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkE1ZG5DdUUsZ0JBMGRtQzdEO09BQ2pDLFdBdWJGSixTQUZBTSxrQkF0YitCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0FqZXhCZ0QsZUErZGtDcEM7T0FDaEMsV0FtWkZDLGVBcFo4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWtIRndJLHNCQW5INkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0ExZUUvSSxlQXllR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQXRacEN4TSxnQkFpWkdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixPQXZnQlBxRSxlQW1nQnFCUjtRQUdkLE9Bc0RQOEosa0JBekRpQnRNO1FBRVYsT0FxVVBnSyxrQkF2VWE3SztPQURYLGVBZ1pGSixTQXBCQXVFLFlBM1hTbEU7O09BTVA7UUFENEJFO1FBRVRpTixPQUZTak47UUFFYnNDLE9BRmF0QztRQUVqQnNCLE9BRmlCdEI7UUFFckJ5QixPQUZxQnpCO1FBTXZCLE9BOWdCUDBELGVBMGdCcUJ1SjtRQUdkLE9BK0NQRCxrQkFsRGlCMUs7UUFFVixPQWlRUHFJLGtCQW5RYXJKO09BRFgsZUF5WUY3QixTQXBCQXVFLFlBcFhTdkM7O09BTVA7UUFEZ0NHO1FBRXJCSixPQUZxQkk7UUFFekJDLE9BRnlCRDtRQUdULE9BbGhCekI4QixlQWloQmFsQztPQURYLGVBaGhCRmtDLGVBaWhCUzdCOztXQUV3QkUsaUJBQy9CLFdBN2FGc0csZUE0YWlDdEc7bUJBRUFFLGlCQUMvQixXQUVGMEQsZUFIaUMxRDs7R0FDcUI7WUFFdEQwRCxlQUVDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BeGF6QndsQixhQXVhTTVJO0lBQ1IsV0FzWEVKLGtCQXRYYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBb0JnQyxNQXRkbkNsTixnQkF1Y0c2TTtLQWEwQixNQUFBLFdBcEI1QkQsSUFLRUc7S0FjMEIsTUE0VjdCNU4sa0JBNVYyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWY5Q3FxQjtpQkFTTXJxQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUEyUjNCNE4saUJBNVJnQm5NO01BQ1IsVUFnU1JvTSxjQWpTWXJPO0tBRE4sV0FsakJOcUUsZUFpakJVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ29PO0lBTUwsV0FnQkVQLGtCQXZCR1EsMEJBSUFKO0dBaUJKO1lBRUNKLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQTlPQThCLGtCQTRPQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsTUFqZnJDdk4sZ0JBNGVHcU47SUFFTCxXQUNnQyxXQVA3QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQsc0JBRUMvbUI7SUFBSyxPQUVOMm5CO3NCQUYyQjNuQixHQUFLLE9BeVRoQ3djLFNBRkFNLGtCQXZUMkI5YyxHQUFnQyxHQUExREE7R0FBNkQ7WUFFOUQybkIsZ0JBS0NzQztJQUFKO0tBS01ZO0tBREFDO0tBREFDO0tBREFDO0tBU2tDLE1BeGdCckMzTixnQkFrZ0JHd047S0FJZ0MsTUFLbkN0RCxtQkFYR3dEO0lBSUwsV0FDaUMsV0FSOUJkLElBRUVlLGtCQUVBRjtHQVFKO1lBRUN2RCwwQkFDbUUscUJBRW5CO1lBRWhEcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRaUMsTUE1aEJwQy9OLGdCQXNoQkc2TjtLQUsyQixNQUFBLGlDQXRTOUI3QyxrQkFnU0c4QztJQUlMO1lBc1JFM08sa0JBclI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2pDO0lBR0g7S0FJTXFDO0tBREFDO0tBREFDO0tBREFDO0tBUWdDLE1BNWlCbkNuTyxnQkFzaUJHaU87S0FLOEIsTUFvUWpDOU8sU0FGQU0sa0JBeFFHeU87SUFJTCxXQXNRRS9PLGtCQXJRMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOOUN3ckIscUJBR0FIO0dBT0o7WUFFQ3RDO0lBR0g7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBU2dDLE1BN2pCbkN2TyxnQkFzakJHcU87S0FNMEIsTUF2VTdCckQsaUJBZ1VHc0Q7SUFJTDtZQXNQRW5QO3VCQXBQZ0J4Yzs0QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHNDQUFMQTtjQUE4QjtjQVAzQzRyQjs7O1lBR0FIO0dBUUo7WUFFQ3hGO0lBRUg7S0FHTTRGO0tBREFDO0tBREFDO0tBUW1DLE1BNWtCdEMxTyxnQkFza0JHd087SUFFTDtZQWtDRW5LLDJCQXRDR3FLO1lBQ0FEOztHQVFKO1lBRUM5RjtJQUVIO0tBTU1nRztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQXFCbUMsTUF2bUJ0Q2hQLGdCQXVsQkcyTztLQWNnQyxNQXFFbkN0RSxrQkFyRkd3RTtLQWVEO09BQUE7MEJBTUZ4Syw0QkF0Qkd5SztpQkFTTW5zQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUEySTNCNE4saUJBNUlnQm5NO01BQ1IsVUFnSlJvTSxjQWpKWXJPO0tBRE4sV0Fsc0JOcUUsZUFpc0JVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ2tRO0lBTUw7WUFzTkU1UCxTQUZBTSxrQkEzTkd1UDs7OztZQUlBSjs7R0FrQko7WUFFQ3ZLO0lBR0g7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE1Bdm5CcENwUCxnQkFpbkJHaVA7S0FJMkIsTUFLOUJJLCtCQVhHRjtJQUlMO1lBNExFaFEsa0JBM0w0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFK0M7U0FRakJ0UTtLQUM1QixXQTBLRkksU0FGQU0sa0JBeks4QlY7O1FBUE9xQixlQUFKYixlQUFKVjtJQUFlLEdBQWZBO1NBS3pCeVMsS0FMeUJ6UztLQU12QixPQWhoQ05ILGdCQStnQ0k0Uzs7SUFEb0MsVUFBQSxpQ0FwdUJ4Q2xPLGdCQWd1QnFDaEQ7SUFHL0IsV0E4RU5rUCwyQkFqRmlDL1A7R0FRNkI7WUFFOURtSjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTRCa0MsTUF0cUJyQzlQLGdCQWdwQkd3UDtLQXFCZ0MsTUFBQSxpQ0F4d0JuQ3BNLGdCQWt2QkdxTTtLQXFCK0IsTUFNbENwRixrQkE1QkdxRjtLQXFCNEIsTUFZL0JLLGVBbENHSjtpQkFrQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXB3QjFCeWdCLGVBbXdCYzdEO0tBQ1IsV0Fwd0JONkQsZUFtd0JVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBbEJDd1A7aUJBV01qdEI7S0FDSDtNQUFRNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFHT3FlLE9BRkZ6QjtNQUVGUixPQUZFUTtNQUdhLE1BaUYzQjROLGlCQWxGZ0JuTTtNQUNSLFVBc0ZSb00sY0F2RllyTztLQUROLFdBNXZCTnFFLGVBMnZCVXZFO0lBR3VDO0lBTC9DLFVBQUEsaUNBWENnUjtJQVFMO1lBNEpFMVEsa0JBM0o2Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVZoRG10Qjs7Ozs7OztZQU9BUDtHQXVCSjtZQUVDbEYseUJBQ2lFLHFCQUVmO1lBRWxEMEY7SUFDRTs7U0FFOEJsUjtLQUM5QixXQUFnQyw0QkFLbENtUiw4QkFOZ0NuUjs7UUFFREU7SUFDN0IsV0FBK0IsNEJBaUNqQ2tSLHdCQWxDK0JsUjtHQUU2QjtZQUU1RGlSO0lBR0g7S0FNTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7SUFPTCxHQU5LRDtTQWVIZ0IsS0FmR2hCO0tBZVEsT0F6bENYNVIsZ0JBeWxDQTRTOztJQUZ1QztLQUFBLE1BMXNCdkN0UixnQkFpc0JHa1E7S0FPNkIsTUFBQSxpQ0EzeUJoQzlNLGdCQWt5QkdnTjtLQVE4QixNQU9qQ2QsMkJBaEJHZTtJQU9EO1lBMEdGbFIsa0JBekcrQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVZsRDR0Qjs7O1lBSUFKOztHQVlxRTtZQUV4RWI7SUFFMEM7U0FDWnpRO0tBQzVCLFdBQThCLDRCQXJ6QmhDdUUsZ0JBb3pCOEJ2RTs7UUFFQ0U7SUFDN0IsV0FBK0IsNEJBRWpDa1Isd0JBSCtCbFI7R0FDc0M7WUFFckVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE1BcHVCbkM1USxnQkE2dEJHd1E7S0FLMEIsTUFyMEI3QnBOLGVBOHpCR3NOO0tBTTZCLE1BTWhDdEcsa0JBYkd1RztJQUtMO1lBZ0ZFeFIsa0JBL0UyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDaUUscUJBRWI7WUFFcEQrQyx3QkFDK0QscUJBRUM7WUFFaEVDO0lBQ0Ysc0JBQ2dDLGlCQUNJLGtCQUNIOztHQUEyQjtZQUUxRDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVWlDLE1BcHdCcENqUixnQkE2dkJHOFE7aUJBTXlDbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUDNCb3VCO0tBTTJCLE1BcjJCOUIzTixlQTgxQkc0TjtJQUtMO1lBK0NFN1Isa0JBOUM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAvQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUMvSTtJQUVGO0tBRW9ELElBRHRCdkksZUFBSlYsZUFDMEIsTUEvMkJsRHVFLGVBODJCNEI3RDtLQUMxQixXQW1DRkosU0FwQkF1RSxZQWhCd0I3RTs7UUFFR0U7SUFDekIsV0FqM0JGcUUsZUFnM0IyQnJFO0dBQ3FCO1lBRWhEa0M7SUFDRiw4QkFDOEI7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBa0M7WUFFNUQ2SCx3QkFDK0QscUJBRWpCO1lBRTlDbEQsV0FBb0UvZ0IsR0FBSyxPQUFMQSxFQUFNO1lBRTFFMmQscUJBQ0YscUJBRTBEO1lBRXhESDtJQUNGOztXQUN3Q1osZUFBSlYsOEJBQ3NCbGMsR0FBSyxPQUFMQSxFQUFNO09BQTVELFdBRGdDa2MsSUFDTSxzQ0FERlU7O1dBRVJSLGlCQUFNLFdBQU5BOzs7UUFDV3FCO1FBQUpZO1FBQUp4Qjt1QkFFVTdjLEdBQUssT0FBTEEsRUFBTTtPQUQvQyxXQUQrQjZjLE1BQUl3QixNQUVWLHNDQUZjWjs7V0FHTGMsaUJBQUp4QixnQ0FDc0IvYyxHQUFLLE9BQUxBLEVBQU07T0FBMUQsV0FEOEIrYyxNQUNNLHNDQURGd0I7O0dBQzZCO1lBRWpFekIsaUJBQW9EOWMsR0FBSyxPQUFMQSxFQUFNO1lBRTFEd2MsU0FHQ3lOO0lBQUosSUFBK0IxcEIsZ0JBQXRCWTtJQUNSLFdBQXlCLFdBRHRCOG9CLElBQUs5b0IsTUFBc0JaO0dBQzZDO1lBRXpFbWtCLGNBQStDMWtCLEdBQUssT0FBTEEsRUFBTTs7OztPQWxzQ3JEK2I7T0FJSUU7T0FRSkk7T0FjQUU7T0FTQUk7T0FVQUs7T0FlQU87T0FxSEFpRjtPQVFBRztPQWVBdEM7T0FNQTVCO09BWUFmO09BZUE0QztPQWNBMEQ7T0FtREF2RDtPQWVBbkQ7T0FJQW1IO09Ba0NBSTtPQVdBRDtPQWFBSTtPQVNBTDtPQWFBdEg7T0FJQStIO09BYUFJO09BUUFySjtPQUlBdUo7T0FRQUc7T0FxQ0FTO09BS0FGO09BSUFLO09BYUFJO09BZ0NBN0U7T0FRQWtGO09BYUFJO09BMkJBRTtPQVFBbEY7T0FJQTREO09BZ0JBM0U7T0FhQTRHO09Bb0JBQztPQVFBQztPQWFBSTtPQW9CQUM7T0FzQkFqRDtPQUlBa0Q7T0FRQUc7T0FzQ0F6QztPQUtBNkM7T0FJQXBDO09BYUF3QztPQWdCQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQU1BOEQ7T0E4QkF1RDtPQUtBZDtPQUtBMUM7T0FpQkFRO09BSUFZO09BbUJBSjtPQUtBcEI7T0FnQkE2QztPQWdCQUQ7T0FpQkE5QztPQWNBRDtPQTJCQXRFO09BZ0JBZ0w7T0FhQTNHO09BbUNBMkI7T0FLQTBGO09BU0FDO09Bc0JBVjtPQVFBVztPQWlCQTdGO09BS0ErQztPQUtBQztPQU1BM0U7T0FpQkFYO09BUUE3RztPQU1BMkY7T0FLQWxEO09BRUFwRDtPQUtBSDtPQVdBVjtPQUVBTjtPQU1Ba0k7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O1lDbHNDSXpJO0lBRU4sdUJBQzZCQyxlQUN6QixXQThaRkMsZUEvWjJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU0wQjtPQUFBLGlDQUk3QjBCLHlCQVRHekI7SUFHTCxXQWlxQ0UwQixrQkFocUM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhLGtCQUVBeUI7R0FNSjtZQUVDQztJQUdILElBQW9DRSxzQkFBOUJDO0lBQ0wsV0FLRUMsNkJBTkdELGFBQThCRDtHQUlsQztZQUVDRTtJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlIsaUNBQ3NCcGMsR0FBSyxPQUFMQSxFQUFNO09BQXRELFdBRDBCb2MsTUFDTSx1Q0FERlE7O1dBRUhDLGlCQUMzQixXQUQyQkE7bUJBRURFLGlCQUFNLFdBQU5BOztHQUFvQztZQUVoRUM7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVNpQyxPQW9WcENDLGdCQTFWR0o7SUFFTDtZQU9FTSxxQkFaR0g7WUFDQUQ7WUFDQUQ7O0dBUUo7WUFFQ0s7SUFFRiw4QkFpSHdDOzs7V0FoSFRyQixlQUMzQixXQXFuQ0ZNLFNBRkFNLGtCQXBuQzZCWjs7V0FFR0UsaUJBQzlCLFdBc21DRm9CLGNBdm1DZ0NwQjs7T0FJdUI7UUFGbkJxQjtRQUFKYjtRQUFKQztRQUUyQixPQXhCdkRHLGdCQXNCb0NTO1FBRWIsT0FBQSw0QkFxSnZCQyxvQkF2SmdDZDtPQUM5QixXQStsQ0ZlLGNBaG1DNEJkOztXQUdJRTtPQUM5QixXQUFnQyw0QkF1SWxDMEIsV0F4SWdDMUI7O09BTzFCO1FBTGtDa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS3RCLE9BaENOeEIsZ0JBMkJ3Q2lEO1FBSWxDLE9BNkpOSyxhQWpLb0NqQjtRQUc5QixPQUFBLGlDQTlCTnJDLGlCQTJCZ0NxQjtPQUM5QixXQTZrQ0ZDLGVBOWtDNEJFOztPQVN0QjtRQUg0QkQ7UUFBSkk7O21CQUlqQjNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BdkM5QmdkLGdCQXNDa0JKO1dBQ1IsV0Fra0NWMEIsZUFua0NjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FINEJxQztPQUNoQyxXQWxDRnZCLGdCQWlDOEIyQjs7T0FTc0I7UUFEbEJEO1FBQUpFO1FBQ3NCLE9BQUEsNEJBdUhwREgsV0F4SGtDQztPQUNoQyxXQTFDRjFCLGdCQXlDOEI0Qjs7T0FHb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BQUEsNEJBcUhsREwsV0F0SGdDSTtPQUM5QixXQTVDRjdCLGdCQTJDNEI4Qjs7V0FFQ0U7T0FDM0IsV0FBNkIsNEJBOUMvQmhDLGlCQTZDNkJnQzs7T0FJTTtRQUZHRDtRQUFKRztRQUVDLE9BQUEsaUNBakRuQ2xDLGlCQStDc0MrQjtPQUNwQyxXQXdsQ0Z2QyxTQUZBTSxrQkF2bENrQ29DOztXQUdFRCxpQkFBSkc7T0FDOUI7ZUFEOEJBO2VBRVosaUNBcERwQnBDLGlCQWtEb0NpQzs7T0FVOUI7UUFQNkJFO1FBQUpJO1FBT3pCLE9BQUEsaUNBNUROdkMsaUJBcURtQ21DOzttQkFHdEJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTFEekNnZCxnQkF5RGtCSjtXQUNSLFdBOGtDVkosU0FGQU0sa0JBN2tDY1o7VUFDOEM7T0FKMUQsWUFDSSxrQ0FGeUJxRDs7T0FVTjtRQUZTRDtRQUFKRTtRQUVMLE9BeWtDekJoRCxTQUZBTSxrQkF6a0NrQ3dDO09BQ2hDLFlBOURGdEMsZ0JBNkQ4QndDOztPQUt5QjtRQUZkQztRQUFKQztRQUFKQztRQUVzQixPQWxFdkQzQyxnQkFnRXlDeUM7UUFFaEIsT0Fza0N6QmpELFNBRkFNLGtCQXRrQ3FDNEM7T0FDbkMsWUFqRUYxQyxnQkFnRWlDMkM7O1dBR0pFO09BQzNCLFlBQTZCLDRCQXBFL0I3QyxpQkFtRTZCNkM7O09BSWdCO1FBRkZLO1FBQUpOO1FBQUpHO1FBRVUsT0FBQSxpQ0F2RTdDL0MsaUJBcUUyQ2tEO1FBRWxCLE9BdkV6QmxELGdCQXFFdUM0QztPQUNyQyxZQXRFRjVDLGdCQXFFbUMrQzs7T0FJb0IsSUFEbEJELGtCQUFKTSxrQkFDc0IsT0F6RXZEcEQsZ0JBd0VxQzhDO09BQ25DLFlBekVGOUMsZ0JBd0VpQ29EOztPQUdtQixJQURsQkQsa0JBQUpLLGtCQUNzQixPQTNFcER4RCxnQkEwRWtDbUQ7T0FDaEMsWUEzRUZuRCxnQkEwRThCd0Q7O09BUXhCO1FBTnNDUjtRQUFKZ0s7UUFBSnRKO1FBQUpIO1FBQUpLO1FBTXRCLE9BbEZONUQsZ0JBNEU0Q2dEO1FBS3RDLE9BMEVOSyxvQkEvRXdDMko7UUFJbEMsT0FoRk5oTixnQkE0RW9DMEQ7UUFHOUIsT0EvRU4xRCxnQkE0RWdDdUQ7T0FDOUIsWUErR0ZELGFBaEg0Qk07O09BUTZCLElBRGxCRCxrQkFBSkcsa0JBQ3NCLE9BeUt6REwsZUExS3VDRTtPQUNyQyxZQXBGRjNELGdCQW1GbUM4RDs7T0FJb0I7UUFGaEJNO1FBQUpQO1FBQUpHO1FBRXdCLE9Bc0t2RFAsZUF4S3VDVztRQUVkLE9BQUEsaUNBc0t6QlgsZ0JBeEttQ0k7T0FDakMsWUF0RkY3RCxnQkFxRitCZ0U7O09BSW9CO1FBRGxCQztRQUFKQztRQUNzQixPQStpQ25EMUUsU0FwQkF1RSxZQTVoQ2lDRTtPQUMvQixZQXpGRmpFLGdCQXdGNkJrRTs7V0FFRkMsa0JBQ3pCLFlBNmlDRjNFLFNBRkFNLGtCQTVpQzJCcUU7O09BSUUsSUFGVUUsa0JBQUpDLGtCQUVOLE9BOUY3QnRFLGdCQTRGdUNxRTtPQUNyQyxZQTJpQ0Y3RSxTQXBCQXVFLFlBeGhDbUNPOzs7UUFHSEc7O21CQUdwQnpoQjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVzQixPQXBHbENnZCxnQkFtR2lCSjtXQUNSLFdBb2lDVEosU0FwQkF1RSxZQWpoQ2E3RTtVQUN3QztPQUpuRCxZQUNFLGtDQUY0QnVGOztPQVcxQjtRQUpvQ3dQO1FBQUp6UDtRQUFKRztRQUk1QixPQTFHTjNFLGdCQXNHMENpVTtRQUdwQyxPQW1jTjFQLGlCQXRjc0NDO09BQ3BDO2VBaWlDRmhGOzBCQWhpQ29CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGaEIyaEI7Ozs7T0FPRSxJQUZLRSxrQkFBSkQsa0JBRUQsT0E3R3BDNUUsZ0JBMkd5QzZFO09BQ3ZDLFlBODFCRkgsMkJBLzFCcUNFOztXQUdQRSxrQkFDNUIsWUEvR0Y5RSxnQkE4RzhCOEU7O1dBRUZDLGtCQUMxQixZQWpIRi9FLGdCQWdINEIrRTs7T0FJSDtRQUZRRTtRQUFKQztRQUVKLE9BQUEsaUNBeUl6QnpCLGdCQTNJaUN3QjtPQUMvQixZQW5IRmpGLGdCQWtINkJrRjs7V0FHQ0Msa0JBQzVCLFlBMFdGSCxxQkEzVzhCRzs7T0FJQyxJQUZLQyxrQkFBSkMsa0JBRUQsT0F6SC9CckYsZ0JBdUhvQ29GO09BQ2xDLFlBZ2hDRjVGLGtCQS9nQ21CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk9xaUI7O1dBR0pFLGtCQUMxQixZQWliRmhCLGlCQWxiNEJnQjs7T0FHNkIsSUFEeEIyTyxrQkFBSnpPLGtCQUM0QixPQTdIekR6RixnQkE0SGlDa1U7T0FDL0IsWUEyWkY1TyxzQkE1WjZCRzs7V0FFQXVPLGtCQUMzQixZQUtGeE8sV0FONkJ3TzttQkFFSUcsa0JBQy9CLFlBb3BCRnpPLGVBcnBCaUN5Tzs7R0FFdUM7WUFFeEUzTztJQUNIO0tBQXNEMVQ7S0FBeEJDO0tBQXhCQztLQUlzQixPQXpJekJnTyxnQkFxSW1EbE87S0FHMUIsT0FBQSw0QkFJekI2VCxpQkFQMkI1VDtJQUM3QixXQU1FNFQsZ0JBUEczVDtHQUtKO1lBRUMyVDtJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBUTBCLE9Bdko3Qi9GLGdCQWlKRzZGO0tBSzBCLE9Bc0M3QnZDLGFBNUNHd0M7SUFJTDtZQW8vQkV0RyxrQkFuL0IwQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU43QytpQjs7O1lBR0FIO0dBT0o7WUFFQ3ZDLDJCQUVGLHFCQUVvRDtZQUVsRDVCO0lBQ0g7S0FHTW5FO0tBREFDO0tBREFDO0tBT3dCLE9BMUszQndDLGdCQXFLRzFDO0tBSTBCLE9BQUEsaUNBeks3QjBDLGlCQW9LR3pDO0lBR0wsV0FxQkUrRixhQXpCRzlGO0dBUUo7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUWdDLE9Bd0tuQ3JHLGdCQTlLR2tHO0tBSzBCLE9Bdkw3QnZHLGdCQWlMR3lHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUlNc0Q7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F5SnBDMUcsZ0JBL0pHdUc7SUFFTCxXQU9FSSxrQkFaR0QsWUFDQUQsVUFDQUQ7R0FRSjtZQUVDRztJQUNtRSw4QkFDckM7OztXQUNIOUgsZUFDekIsV0EwN0JGTSxrQkExN0I0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUR2QmtjOztPQUdzQjtRQURmVTtRQUFKUjtRQUNtQixPQXc3QmpESSxrQkF4N0IrRHhjLEdBQUssT0FBTEEsRUFBTSxHQURuQzRjO09BQ2hDLFdBcEJGMEQsYUFtQjhCbEU7O1dBRUVTLGlCQUM5QixXQXk2QkZXLGNBMTZCZ0NYOztPQUdxQixJQURoQndCLGlCQUFKdEIsaUJBQ29CLE9BdTZCckRTLGNBeDZCcUNhO09BQ25DLFdBdTZCRmIsY0F4NkJpQ1Q7O1dBRUp5QjtPQUMzQixXQUE2Qiw0QkExQi9COEIsY0F5QjZCOUI7O09BS3ZCO1FBSGdDRDtRQUFKSTs7bUJBSXJCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFOEMsT0FqQzNEc2dCLGFBZ0NrQjFEO3lCQUNPNWMsR0FBSyxPQTI2QjlCd2Msa0JBMzZCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO1dBQTNDLFdBQUMsa0NBREdrYztVQUM2RDtRQUhyRSxPQUFBLHVDQUhnQ3FDO09BQ3BDLFdBZzdCRi9CLFNBRkFNLGtCQS82QmtDNkI7O1dBUUVELGlCQUFKRTtPQUM5QixXQUQ4QkEsTUFDaUIsaUNBcENqRDBCLGNBbUNvQzVCOztPQVM5QjtRQVA2Qkc7UUFBSkM7UUFPekIsT0F1NEJObUYsaUJBOTRCbUNwRjs7bUJBR3RCN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0ExQ3pDc2dCLGFBeUNrQjFEO1dBQ1IsV0FrNkJWSixTQUZBTSxrQkFqNkJjWjtVQUMyQztPQUp2RCxXQUNJLGtDQUZ5QjRDOztXQVFGRTtPQUMzQixXQUE2Qiw0QkE5Qy9Cc0IsY0E2QzZCdEI7O09BR2lCLElBRGZELGlCQUFKRyxpQkFDbUIsT0FoRDlDb0IsYUErQytCdkI7T0FDN0IsV0FoREZ1QixhQStDMkJwQjs7T0FHMkIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWV0RHFCLGVBaEJ1Q3hCO09BQ3JDLFlBbERGcUIsYUFpRG1DbEI7O1dBRVBHLGtCQUMxQixZQXc1QkYvQyxTQUZBTSxrQkF2NUI0QnlDOztXQUVBQyxrQkFDMUIsWUF0REZjLGFBcUQ0QmQ7O1dBRUVHO09BQzVCO2VBbzVCRm5EOzBCQW41Qm1CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGbkIyZjs7V0FHR0Usa0JBQy9CLFlBM0RGUyxhQTBEaUNUOztXQUVBRSxrQkFDL0IsWUE0aEJGMkMsZUE3aEJpQzNDOztPQUc0QixJQUQ1QlosaUJBQUppQixrQkFDZ0MsT0EvRDdERSxhQThEaUNuQjtPQUMvQixZQTY0QkYzQyxTQUZBTSxrQkE1NEI2QnNEOztHQUNnRDtZQUU3RUs7SUFFSDtLQUlNNEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F1RnBDbkgsZ0JBN0ZHZ0g7SUFFTCxXQVdFSSxvQkFoQkdELFlBQ0FELFVBQ0FEO0dBUUo7WUFFQ2hILG9CQUVDdGQsR0FBSyxPQUFMQSxFQUFNO1lBRVB5a0I7SUFFRiw4QkFDZ0M7OztXQUNIdkksZUFBTSxXQUFOQTs7T0FHZ0I7UUFGTHVCO1FBQUpiO1FBQUpSO1FBRWEsT0ExQjNDcUUsZUF3QnNDaEQ7UUFFZCxPQTFCeEJnRCxlQXdCa0M3RDtPQUNoQyxXQW0xQkYwQixlQXAxQjhCbEM7O1dBR0RTO09BQzNCLFdBQTZCLDRCQTVCL0I0RCxnQkEyQjZCNUQ7O09BSU07UUFGQXdCO1FBQUp0QjtRQUVJLE9BQUEsNEJBL0JuQzBELGdCQTZCbUNwQztPQUNqQyxXQTYyQkY3QixTQUZBTSxrQkE1MkIrQkM7O09BS0ssSUFGRHdCLGlCQUFKQyxpQkFFSyxPQWcxQnBDeUYsaUJBbDFCbUMxRjtPQUNqQyxXQUNHLDRCQW9ETG9HLG1CQXREK0JuRzs7T0FLSTtRQUZERTtRQUFKQztRQUVLLE9BQUEsNEJBckNuQzhCLGdCQW1Da0MvQjtPQUNoQyxXQXUyQkZsQyxTQUZBTSxrQkF0MkI4QjZCOztXQUdJRSxpQkFBSkQ7T0FDNUIsV0F2Q0Y2QixlQXNDOEI3QixPQUFJQzs7T0FNNUI7UUFKa0NRO1FBQUpOO1FBQUpEO3dCQUlWOWUsR0FBSyxPQUFBLDRCQTIwQjNCK2dCLFlBMzBCc0IvZ0IsR0FBMEI7UUFBMUMsT0FBQSx1Q0FKa0NxZjtRQUdsQyxPQXUwQk40RSxpQkExMEJvQ2xGO09BQ2xDO2VBQ0ksNEJBc0JONkYsZ0JBeEJnQzlGOzs7O09BT3FCO1FBRnBCRztRQUFKRDtRQUV3QixPQS9DckR5QixlQTZDaUN4Qjt3QkFFZGpmLEdBQUssT0E0MUJ4QndjLGtCQTUxQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZ3QmdmOztXQUdFRSxpQkFDN0IsV0FJRjJGLGtCQUwrQjNGO21CQUVFRSxpQkFDL0IsWUFxZUZzRCxlQXRlaUN0RDs7R0FDcUI7WUFFdER5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0E3RG5DeWdCLGVBNERZN0Q7S0FDUixXQTgwQkpKLFNBRkFNLGtCQTcwQlFaO0lBQzZDO0lBSHJELFdBQUEsa0NBRk1VO0lBQ1IsV0FrMUJFSixTQUZBTSxrQkFqMUJFWjtHQU1JO1lBRU4wSTtJQUVIO0tBR01FO0tBREFDO0tBREF4TjtLQU9nQyxPQXlCbkM4RixnQkE5Qkd5SDtJQUVMLFdBTUVFLG9CQVZHek4sV0FDQXdOO0dBT0o7WUFFQ0M7SUFFRjtLQUdtQztNQUZEdkg7TUFBSmI7TUFBSlY7TUFFUyxPQUFBLDRCQWxGakN1RSxnQkFnRmdDaEQ7S0FDOUIsV0EwekJGakIsU0FwQkF1RSxZQXZ5QndCN0UsS0FBSVU7O1FBR0RSO0lBQ3pCLFdBcEZGcUUsZUFtRjJCckU7R0FDcUI7WUFFaER1STtJQUVIO0tBR01NO0tBREFDO0tBREExTjtLQU9nQyxPQUduQzZGLGdCQVJHNEg7SUFFTCxXQXV3QkVFLHVCQTN3QkczTixXQUNBME47R0FPSjtZQUVDN0gsZ0JBRUNyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU04QixPQUlqQ0MsYUFUR0Y7SUFHTCxXQTZ4QkU5SSxrQkE1eEI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQ3VsQixrQkFFQUY7R0FNSjtZQUVDRztJQUNGOztXQUN5QnRKLGVBQU0sV0FNN0JDLGVBTnVCRDs7V0FDQUUsaUJBQU0sV0F3UjdCcUosZUF4UnVCcko7O1dBQ0FTLGlCQUFNLFdBeEg3QjRELGVBd0h1QjVEOztPQUVvQjtRQURmRDtRQUFKRztRQUNtQixPQUFBLGlDQXZYM0NDLGlCQXNYNEJKO09BQzFCLFdBM0xGMEQsYUEwTHdCdkQ7O0dBQ2lEO1lBRXpFWixlQUVDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztPQUVXLElBRGxCakosZUFBSlYsZUFDc0IsT0F6Q25EbUIsZ0JBd0NpQ1Q7T0FDL0IsV0F6WUZJLGdCQXdZNkJkOztPQUlOO1FBRldtQztRQUFKakM7UUFFUCxPQUFBLDRCQS9OdkJzQixvQkE2TmtDVztPQUNoQyxXQTJ1QkZWLGNBNXVCOEJ2Qjs7V0FHR1MsaUJBQy9CLFdBa3NCRmlKLHVCQW5zQmlDako7O09BSVY7UUFGVTBCO1FBQUp4QjtRQUVOLE9BQUEsNEJBa2xCdkJnSix1QkFwbEJpQ3hIO09BQy9CLFdBc3VCRlosY0F2dUI2Qlo7O1dBR0N5QixpQkFDNUIsV0E0aEJGd0gsb0JBN2hCOEJ4SDs7V0FFR0csaUJBQy9CLFdBNGdCRnNILG9CQTdnQmlDdEg7O1dBRUhDLGlCQUM1QixXQXFJRnNILG9CQXRJOEJ0SDs7V0FFR0U7T0FDL0IsV0FBaUMsNEJBbUluQ29ILHFCQXBJaUNwSDs7V0FFRkUsaUJBQzdCLFdBcWRGbUgsNkJBdGQrQm5IOztXQUVIRSxpQkFDMUIsV0EySEZvRCxzQkE1SDRCcEQ7O1dBRUNFO09BQzNCLFlBQTZCLDRCQWdCL0JnSCx3QkFqQjZCaEg7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBNFJKOEcsNkJBOVJrQzlHOztXQUdIQyxrQkFDN0IsWUFNRjhHLHlCQVArQjlHOztXQUVFRyxrQkFDL0IsWUFsRUZ5RixlQWlFaUN6Rjs7T0FHc0IsSUFEakJqQixpQkFBSm1CLGtCQUNxQixPQXhFdkR4QyxnQkF1RXNDcUI7T0FDcEMsWUE2V0ZnRSxlQTlXa0M3Qzs7R0FDd0M7WUFFMUV5Ryx5QkFHQ3RtQjtJQUFLLE9Bc1pOdW1CLG1CQXZSQWhGLGtCQS9IQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9BMFdOd21CLGlCQXhXQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQTdGbkN2SixnQkF3RkdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkRqSztRQUFKVjtRQUVLLE9BQUEsNEJBeE1uQ3VFLGdCQXNNa0M3RDtPQUNoQyxXQW9zQkZKLFNBRkFNLGtCQW5zQjhCWjs7V0FHRUUsaUJBQzlCLFdBeUJGNEYscUJBMUJnQzVGOztPQU8xQjtRQUxpQzZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLckIsT0ExQk40SixnQkFxQnVDeEc7UUFJakMsT0FoUk5LLGFBNFFtQzdDO1FBRzdCLE9BQUEsaUNBM2NOVCxpQkF3YytCcUI7T0FDN0IsV0FncUJGQyxlQWpxQjJCekI7O09BU3JCO1FBSDJCMEI7UUFBSnhCOzttQkFJaEIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXBkOUJnZCxnQkFtZGtCSjtXQUNSLFdBcXBCVjBCLGVBdHBCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDJCcUM7T0FDL0IsV0E1QkZrSSxnQkEyQjZCMUo7O09BVTBCO1FBRnBCc0M7UUFBSlg7UUFBSkY7UUFFNEIsT0FyQ3ZEaUksZ0JBbUNtQ3BIO1FBRVosT0FBQSw0QkEzU3ZCM0Isb0JBeVMrQmdCO09BQzdCLFdBK3BCRmYsY0FocUIyQmE7O09BSTZCLElBRGxCSyxpQkFBSkYsaUJBQ3NCLE9BNk94RG1JLGdCQTlPc0NqSTtPQUNwQyxXQXZDRjRILGdCQXNDa0M5SDs7V0FFRkMsaUJBQzlCLFdBeVRGOEQsZUExVGdDOUQ7O09BR3dCLElBRHhCRyxpQkFBSkQsaUJBQzRCLE9BM0N4RDJILGdCQTBDZ0MxSDtPQUM5QixXQXNYRmdJLHNCQXZYNEJqSTs7R0FDK0M7WUFFM0VrRDtJQUVIO0tBQW9DZ0Y7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyxrQkFOaUNGO0lBQ25DLFdBdlNFMUcsYUFzU0cyRztHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0FsSm5DaEssZ0JBNklHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7d0JBSVRsYyxHQUFLLE9BNG9CM0J3YyxrQkE1b0J5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7UUFBNUMsT0FBQSx1Q0FKaUN5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQWtYRjJLLG1CQW5YK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9BZ2tCOUJvSSxrQkFqa0JhcEo7T0FEWCxlQTBvQkY3QixTQXBCQXVFLFlBcm5CU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9Ba2dCOUJpSSxrQkFuZ0Jhbko7T0FEWCxlQXNvQkYvQixTQXBCQXVFLFlBam5CU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQTNRekI4QixlQTBRYS9CO09BRFgsZUF6UUYrQixlQTBRUzdCOztXQUV5QkUsaUJBQ2hDLFdBMWdCRjlCLGdCQXlnQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0F1UUZ3RCxlQXhRZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBdlJGdUUsZUFzUjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQXRoQnpEWSxnQkFxaEJvQ0o7SUFDbEMsV0FxVkYySyxtQkF0VmdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9BOFROMm5CLGdCQTVTQXBHLGtCQWxCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVNnQyxPQXhNbkMxSyxnQkFpTUd3SztLQU0wQixPQUs3QnRHLGlCQVpHdUc7SUFJTDtZQW9tQkV0TDt1QkFsbUJnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDK25COzs7WUFHQUg7R0FRSjtZQUVDckc7SUFFSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPaUMsT0F0TnBDN0ssZ0JBaU5HMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQmpNLGVBQzNCLFdBMmtCRk0sU0FGQU0sa0JBMWtCNkJaOztXQUVJRSxpQkFDL0IsV0F0TUZELGVBcU1pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDMEUsaUJBb0JvQzNFO09BQ2xDLFdBWUZ3TCx1QkFiZ0N2TDs7T0FJcUIsSUFEbkJ3QixpQkFBSnRCLGlCQUN1QixPQXhCckR3RSxpQkF1QmtDbEQ7T0FDaEMsV0F4QkZrRCxpQkF1QjhCeEU7O09BSUosSUFGYXdCLGlCQUFKQyxpQkFFVCxPQWMxQjZKLGlCQWhCdUM5SjtPQUNyQyxXQTFCRmdELGlCQXlCbUMvQzs7V0FHTEcsaUJBQzVCLFdBemtCRjNCLGdCQXdrQjhCMkI7bUJBRUdDLGlCQUMvQixXQTBNRjhELGVBM01pQzlEOztHQUNxQjtZQUV0RHdKO0lBRUYsWUFDNEI7SUFHNkIsSUFGMUJ4TCxlQUFKVixlQUU4QixPQUV2RG1NLGlCQUo2QnpMO0lBQzNCO1lBc2pCRko7dUJBcmpCbUJ4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQUZ4QmtjOztHQUVrRDtZQUUzRW1NO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0EvUHBDbkwsZ0JBMFBHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQnZNLGVBQzNCLFdBa2lCRk0sU0FGQU0sa0JBamlCNkJaOztXQUVJRSxpQkFDL0IsV0FvQ0ZxSixlQXJDaUNySjs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEN3TCxpQkFvQm9Dekw7T0FDbEMsV0E3QkZ3TCx1QkE0QmdDdkw7O09BS047UUFGT3dCO1FBQUp0QjtRQUVILE9BQUEsNEJBUTFCMkwsc0JBVmlDcks7T0FDL0IsV0F4QkZnSyxpQkF1QjZCdEw7O1dBR0N5QixpQkFDNUIsV0FwRUYrQyxpQkFtRThCL0M7O1dBRUdHLGlCQUMvQixXQW1LRitELGVBcEtpQy9EOztXQUVKQyxpQkFDM0IsV0FvaEJGcEMsU0FGQU0sa0JBbmhCNkI4Qjs7R0FDZ0M7WUFFN0Q4SjtJQUVGOztPQUdxQyxJQUZEOUwsZUFBSlYsZUFFSyxPQXdXbkM2SixzQkExV2tDbko7T0FDaEMsV0E4Z0JGSixTQUZBTSxrQkE3Z0I4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9BMGdCbkNJLFNBRkFNLGtCQTFnQm9DdUI7T0FDbEMsV0EyZ0JGN0IsU0FGQU0sa0JBMWdCZ0NWOztPQUtHLElBRkVtQyxpQkFBSjFCLGlCQUVFLE9BNUNuQ3dMLGlCQTBDcUM5SjtPQUNuQyxXQXdnQkYvQixTQUZBTSxrQkF2Z0JpQ0Q7O09BS0UsSUFGTzZCLGlCQUFKM0IsaUJBRUgsT0EvQ25Dc0wsaUJBNkMwQzNKO09BQ3hDLFdBcWdCRmxDLFNBRkFNLGtCQXBnQnNDQzs7T0FLSDtRQUZJOEI7UUFBSkw7UUFFQSxPQTRWbkN1SCxzQkE5VnVDbEg7T0FDckMsV0FrZ0JGckMsU0FGQU0sa0JBamdCbUMwQjs7T0FLQTtRQUZHTztRQUFKSjtRQUVDLE9BOGZuQ25DLFNBRkFNLGtCQTlmc0NpQztPQUNwQyxXQStmRnZDLFNBRkFNLGtCQTlma0M2Qjs7R0FFOEI7WUFFaEU4RyxlQUVDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7V0FDWDVNLGVBQzNCLFdBb2JGNEosdUJBcmI2QjVKOztPQUlOO1FBRlVVO1FBQUpSO1FBRU4sT0FBQSw0QkFvVXZCMkosdUJBdFVpQ25KO09BQy9CLFdBd2RGZSxjQXpkNkJ2Qjs7V0FHSVM7T0FDL0IsV0FBaUMsNEJBa1VuQ2tKLHVCQW5VaUNsSjs7V0FFSEUsaUJBQzVCLFdBNFFGaUosb0JBN1E4QmpKOztXQUVHeUIsaUJBQy9CLFdBNFBGeUgsb0JBN1BpQ3pIOztXQUVIRyxpQkFDNUIsV0F5T0ZvSyx3QkExTzhCcEs7O1dBRUVDLGlCQUM5QixXQXVORm9LLHlCQXhOZ0NwSzs7V0FFQ0U7T0FDL0IsV0FBaUMsNEJBcU9uQ2lLLHlCQXRPaUNqSzs7V0FFRkUsaUJBQzdCLFdBbU1GbUgsNkJBcE0rQm5IOztXQUVLRSxpQkFDbEMsV0FpTUZpSCw2QkFsTW9Dakg7O1dBRVJFLGlCQUMxQixZQW1LRjJILHNCQXBLNEIzSDs7V0FFR0csa0JBQzdCLFlBMklGMEoseUJBNUkrQjFKOztXQUVGQztPQUMzQixZQUE2Qiw0QkFjL0IwSix3QkFmNkIxSjs7V0FFS0c7T0FDaEM7ZUFDRSw0QkFNSjBHLDZCQVJrQzFHOztXQUdERSxrQkFDL0IsWUF0VkZ1RixlQXFWaUN2Rjs7T0FHc0IsSUFEakJ4QixpQkFBSjBCLGtCQUNxQixPQTVWdkQxQyxnQkEyVnNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0MzQzs7R0FDd0M7WUFFMUVzRyw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BalhwQ2hNLGdCQTRXRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkE1ZG5DdUUsZ0JBMGRtQzdEO09BQ2pDLFdBZ2JGSixTQUZBTSxrQkEvYStCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0FqZXhCZ0QsZUErZGtDcEM7T0FDaEMsV0E0WUZDLGVBN1k4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWtIRndJLHNCQW5INkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0ExZUUvSSxlQXllR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQXRacEN4TSxnQkFpWkdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixPQXZnQlBxRSxlQW1nQnFCUjtRQUdkLE9Bc0RQOEosa0JBekRpQnRNO1FBRVYsT0E4VFBnSyxrQkFoVWE3SztPQURYLGVBeVlGSixTQXBCQXVFLFlBcFhTbEU7O09BTVA7UUFENEJFO1FBRVRpTixPQUZTak47UUFFYnNDLE9BRmF0QztRQUVqQnNCLE9BRmlCdEI7UUFFckJ5QixPQUZxQnpCO1FBTXZCLE9BOWdCUDBELGVBMGdCcUJ1SjtRQUdkLE9BK0NQRCxrQkFsRGlCMUs7UUFFVixPQTZQUHFJLGtCQS9QYXJKO09BRFgsZUFrWUY3QixTQXBCQXVFLFlBN1dTdkM7O09BTVA7UUFEZ0NHO1FBRXJCSixPQUZxQkk7UUFFekJDLE9BRnlCRDtRQUdULE9BbGhCekI4QixlQWloQmFsQztPQURYLGVBaGhCRmtDLGVBaWhCUzdCOztXQUV3QkUsaUJBQy9CLFdBN2FGc0csZUE0YWlDdEc7bUJBRUFFLGlCQUMvQixXQUVGMEQsZUFIaUMxRDs7R0FDcUI7WUFFdEQwRCxlQUVDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BeGF6QndsQixhQXVhTTVJO0lBQ1IsV0ErV0VKLGtCQS9XYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBb0JnQyxNQXRkbkNsTixnQkF1Y0c2TTtLQWEwQixNQUFBLFdBcEI1QkQsSUFLRUc7S0FjMEIsTUFxVjdCNU4sa0JBclYyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWY5Q3FxQjtpQkFTTXJxQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUFvUjNCNE4saUJBclJnQm5NO01BQ1IsVUF5UlJvTSxjQTFSWXJPO0tBRE4sV0FsakJOcUUsZUFpakJVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ29PO0lBTUwsV0FnQkVQLGtCQXZCR1EsMEJBSUFKO0dBaUJKO1lBRUNKLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQTlPQThCLGtCQTRPQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsTUFqZnJDdk4sZ0JBNGVHcU47SUFFTCxXQUNnQyxXQVA3QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQsc0JBRUMvbUI7SUFBSyxPQUVOMm5CO3NCQUYyQjNuQixHQUFLLE9Ba1RoQ3djLFNBRkFNLGtCQWhUMkI5YyxHQUFnQyxHQUExREE7R0FBNkQ7WUFFOUQybkIsZ0JBS0NzQztJQUFKO0tBS01ZO0tBREFDO0tBREFDO0tBREFDO0tBU2tDLE1BeGdCckMzTixnQkFrZ0JHd047S0FJZ0MsTUFLbkN0RCxtQkFYR3dEO0lBSUwsV0FDaUMsV0FSOUJkLElBRUVlLGtCQUVBRjtHQVFKO1lBRUN2RCwwQkFDbUUscUJBRW5CO1lBRWhEcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRaUMsTUE1aEJwQy9OLGdCQXNoQkc2TjtLQUsyQixNQUFBLGlDQXRTOUI3QyxrQkFnU0c4QztJQUlMO1lBK1FFM08sa0JBOVE0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2pDO0lBR0g7S0FJTXFDO0tBREFDO0tBREFDO0tBREFDO0tBUWdDLE1BNWlCbkNuTyxnQkFzaUJHaU87S0FLOEIsTUE2UGpDOU8sU0FGQU0sa0JBalFHeU87SUFJTCxXQStQRS9PLGtCQTlQMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOOUN3ckIscUJBR0FIO0dBT0o7WUFFQ3RDO0lBR0g7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBU2dDLE1BN2pCbkN2TyxnQkFzakJHcU87S0FNMEIsTUF2VTdCckQsaUJBZ1VHc0Q7SUFJTDtZQStPRW5QO3VCQTdPZ0J4Yzs0QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHNDQUFMQTtjQUE4QjtjQVAzQzRyQjs7O1lBR0FIO0dBUUo7WUFFQ3hGO0lBRUg7S0FHTTRGO0tBREFDO0tBREFDO0tBUW1DLE1BNWtCdEMxTyxnQkFza0JHd087SUFFTDtZQWtDRW5LLDJCQXRDR3FLO1lBQ0FEOztHQVFKO1lBRUM5RjtJQUVIO0tBTU1nRztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQXFCbUMsTUF2bUJ0Q2hQLGdCQXVsQkcyTztLQWNnQyxNQWlFbkN0RSxrQkFqRkd3RTtLQWVEO09BQUE7MEJBTUZ4Syw0QkF0Qkd5SztpQkFTTW5zQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUFvSTNCNE4saUJBcklnQm5NO01BQ1IsVUF5SVJvTSxjQTFJWXJPO0tBRE4sV0Fsc0JOcUUsZUFpc0JVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ2tRO0lBTUw7WUErTUU1UCxTQUZBTSxrQkFwTkd1UDs7OztZQUlBSjs7R0FrQko7WUFFQ3ZLO0lBR0g7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE1Bdm5CcENwUCxnQkFpbkJHaVA7S0FJMkIsTUFLOUJJLCtCQVhHRjtJQUlMO1lBcUxFaFEsa0JBcEw0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFK0M7S0FHUDtNQUZQOVA7TUFBSlY7TUFFVyxNQUFBLGlDQWx1QnhDdUUsZ0JBZ3VCaUM3RDtLQUMvQixjQXlFRitQLDJCQTFFNkJ6UTs7UUFHQ0U7SUFDNUIsV0F1S0ZJLFNBRkFNLGtCQXRLOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0E0QmtDLE1BbHFCckM5UCxnQkE0b0JHd1A7S0FxQmdDLE1BQUEsaUNBcHdCbkNwTSxnQkE4dUJHcU07S0FxQitCLE1BTWxDcEYsa0JBNUJHcUY7S0FxQjRCLE1BWS9CSyxlQWxDR0o7aUJBa0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFod0IxQnlnQixlQSt2QmM3RDtLQUNSLFdBaHdCTjZELGVBK3ZCVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWxCQ3dQO2lCQVdNanRCO0tBQ0g7TUFBUTRjLEtBREw1YztNQUNDa2MsS0FERGxjO01BR09xZSxPQUZGekI7TUFFRlIsT0FGRVE7TUFHYSxNQThFM0I0TixpQkEvRWdCbk07TUFDUixVQW1GUm9NLGNBcEZZck87S0FETixXQXh2Qk5xRSxlQXV2QlV2RTtJQUd1QztJQUwvQyxVQUFBLGlDQVhDZ1I7SUFRTDtZQXlKRTFRLGtCQXhKNkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FWaERtdEI7Ozs7Ozs7WUFPQVA7R0F1Qko7WUFFQ2xGLHlCQUNpRSxxQkFFZjtZQUVsRDBGO0lBQ0U7O1NBRThCbFI7S0FDOUIsV0FBZ0MsNEJBS2xDbVIsOEJBTmdDblI7O1FBRURFO0lBQzdCLFdBQStCLDRCQThCakNrUix3QkEvQitCbFI7R0FFNkI7WUFFNURpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBWWdDLE1BcHNCbkN2USxnQkE0ckJHa1E7S0FNeUIsTUFBQSxpQ0FyeUI1QjlNLGdCQTZ4QkdnTjtLQU8wQixNQU03QmQsMkJBZEdlO0tBUTBCO0lBSC9CO1lBMEdFbFIsa0JBekcyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5QzR0Qjs7OztZQUdBSjs7R0FVSjtZQUVDYjtJQUUwQztTQUNaelE7S0FDNUIsV0FBOEIsNEJBOXlCaEN1RSxnQkE2eUI4QnZFOztRQUVDRTtJQUM3QixXQUErQiw0QkFFakNrUix3QkFIK0JsUjtHQUNzQztZQUVyRWtSO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXZ0MsTUE3dEJuQzVRLGdCQXN0Qkd3UTtLQUswQixNQTl6QjdCcE4sZUF1ekJHc047S0FNNkIsTUFNaEN0RyxrQkFiR3VHO0lBS0w7WUFnRkV4UixrQkEvRTJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDlDaXVCOzs7WUFHQUg7O0dBU0o7WUFFQ3JHLHlCQUNpRSxxQkFFYjtZQUVwRCtDLHdCQUMrRCxxQkFFQztZQUVoRUM7SUFDRixzQkFDZ0MsaUJBQ0ksa0JBQ0g7O0dBQTJCO1lBRTFEM0U7SUFFSDtLQUtNb0k7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FVaUMsTUE3dkJwQ2pSLGdCQXN2Qkc4UTtpQkFNeUNudUIsR0FBSyxPQUFMQSxFQUFNO0lBQXBCO0tBQUEsTUFBQSxpQ0FQM0JvdUI7S0FNMkIsTUE5MUI5QjNOLGVBdTFCRzROO0lBS0w7WUErQ0U3UixrQkE5QzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUC9Dc3VCOzs7O1lBSUFKO0dBUUo7WUFFQy9JO0lBRUY7S0FFb0QsSUFEdEJ2SSxlQUFKVixlQUMwQixNQXgyQmxEdUUsZUF1MkI0QjdEO0tBQzFCLFdBbUNGSixTQXBCQXVFLFlBaEJ3QjdFOztRQUVHRTtJQUN6QixXQTEyQkZxRSxlQXkyQjJCckU7R0FDcUI7WUFFaERrQztJQUNGLDhCQUM4QjsyQkFDRnBDLGVBQU0sV0FBTkE7UUFDQUU7SUFBTSxXQUFOQTtHQUFrQztZQUU1RDZILHdCQUMrRCxxQkFFakI7WUFFOUNsRCxXQUFvRS9nQixHQUFLLE9BQUxBLEVBQU07WUFFMUUyZCxxQkFDRixxQkFFMEQ7WUFFeERIO0lBQ0Y7O1dBQ3dDWixlQUFKViw4QkFDc0JsYyxHQUFLLE9BQUxBLEVBQU07T0FBNUQsV0FEZ0NrYyxJQUNNLHNDQURGVTs7V0FFUlIsaUJBQU0sV0FBTkE7OztRQUNXcUI7UUFBSlk7UUFBSnhCO3VCQUVVN2MsR0FBSyxPQUFMQSxFQUFNO09BRC9DLFdBRCtCNmMsTUFBSXdCLE1BRVYsc0NBRmNaOztXQUdMYyxpQkFBSnhCLGdDQUNzQi9jLEdBQUssT0FBTEEsRUFBTTtPQUExRCxXQUQ4QitjLE1BQ00sc0NBREZ3Qjs7R0FDNkI7WUFFakV6QixpQkFBb0Q5YyxHQUFLLE9BQUxBLEVBQU07WUFFMUR3YyxTQUdDeU47SUFBSixJQUErQjFwQixnQkFBdEJZO0lBQ1IsV0FBeUIsV0FEdEI4b0IsSUFBSzlvQixNQUFzQlo7R0FDNkM7WUFFekVta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNOzs7O09BdnJDakRpYztPQVFKSTtPQWNBRTtPQVNBSTtPQVVBSztPQWVBTztPQXFIQWlGO09BUUFHO09BZUF0QztPQU1BNUI7T0FZQWY7T0FlQTRDO09BY0EwRDtPQW1EQXZEO09BZUFuRDtPQUlBbUg7T0FrQ0FJO09BV0FEO09BYUFJO09BU0FMO09BYUF0SDtPQUlBK0g7T0FhQUk7T0FRQXJKO09BSUF1SjtPQVFBRztPQXFDQVM7T0FLQUY7T0FJQUs7T0FhQUk7T0FnQ0E3RTtPQVFBa0Y7T0FhQUk7T0EyQkFFO09BUUFsRjtPQUlBNEQ7T0FnQkEzRTtPQWFBNEc7T0FvQkFDO09BUUFDO09BYUFJO09Bb0JBQztPQXNCQWpEO09BSUFrRDtPQVFBRztPQXNDQXpDO09BS0E2QztPQUlBcEM7T0FhQXdDO09BZ0JBQztPQVFBRztPQWFBSTtPQTRCQXBIO09BTUE4RDtPQThCQXVEO09BS0FkO09BS0ExQztPQWlCQVE7T0FJQVk7T0FtQkFKO09BS0FwQjtPQWdCQTZDO09BZ0JBRDtPQWlCQTlDO09BY0FEO09BMkJBdEU7T0FnQkFnTDtPQVNBM0c7T0FtQ0EyQjtPQUtBMEY7T0FTQUM7T0FtQkFWO09BUUFXO09BaUJBN0Y7T0FLQStDO09BS0FDO09BTUEzRTtPQWlCQVg7T0FRQTdHO09BTUEyRjtPQUtBbEQ7T0FFQXBEO09BS0FIO09BV0FWO09BRUFOO09BTUFrSTs7OztFOzs7Ozs7R0N4cUNjOztJQXUrQlovaUI7SUFDQUM7SUF4K0JZO0lBK0NDO0lBdTdCSCxhQUNWRCx1QkFDQUM7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN2L0JGbWEsZ0JBQWdCeGIsS0FBSXliO0lBQ3RCLE9BQUEsbUNBRGtCemIsV0FBSXliO0dBRW9EO1lBRXBFQztJQUVOLHVCQUM2QkMsZUFDekIsV0FtYUZDLGVBcGEyQkQ7UUFFQUU7SUFDekIsV0FFRkMsd0JBSDJCRDtHQUM4QjtZQUV6REM7SUFHSDtLQUdNQztLQURBeEI7S0FEQUQ7S0FNMEI7T0FBQSxpQ0FJN0IwQix5QkFUR3pCO0lBR0wsV0FxcUNFMEIsa0JBcHFDNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FML0M2YSxrQkFFQXlCO0dBTUo7WUFFQ0M7SUFHSCxJQUFvQ0Usc0JBQTlCQztJQUNMLFdBS0VDLDZCQU5HRCxhQUE4QkQ7R0FJbEM7WUFFQ0U7SUFFNEM7O1dBQ2RULGVBQU0sV0FBTkE7O1dBQ0VVLGVBQUpSLGlDQUNzQnBjLEdBQUssT0FBTEEsRUFBTTtPQUF0RCxXQUQwQm9jLE1BQ00sdUNBREZROztXQUVIQyxpQkFDM0IsV0FEMkJBO21CQUVERSxpQkFBTSxXQUFOQTs7R0FBb0M7WUFFaEVDO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F5VnBDQyxnQkEvVkdKO0tBS2dDLE9Bc1FuQ0ssb0JBNVFHSjtJQUdMLFdBT0VLLHFCQVpHSCxZQUNBRDtHQVNKO1lBRUNJO0lBRUYsOEJBaUh3Qzs7O1dBaEhUckIsZUFDM0IsV0F5bkNGTSxTQUZBTSxrQkF4bkM2Qlo7O1dBRUdFLGlCQUM5QixXQTBtQ0ZvQixjQTNtQ2dDcEI7O09BSXVCO1FBRm5CcUI7UUFBSmI7UUFBSkM7UUFFMkIsT0F4QnZERyxnQkFzQm9DUztRQUViLE9BQUEsNEJBcUp2QkMsb0JBdkpnQ2Q7T0FDOUIsV0FtbUNGZSxjQXBtQzRCZDs7V0FHSUU7T0FDOUIsV0FBZ0MsNEJBdUlsQzBCLFdBeElnQzFCOztPQU8xQjtRQUxrQ2tEO1FBQUpaO1FBQUpoQjtRQUFKRztRQUt0QixPQWhDTnhCLGdCQTJCd0NpRDtRQUlsQyxPQTZKTkssYUFqS29DakI7UUFHOUIsT0FBQSxpQ0E5Qk5yQyxpQkEyQmdDcUI7T0FDOUIsV0FpbENGQyxlQWxsQzRCRTs7T0FTdEI7UUFINEJEO1FBQUpJOzttQkFJakIzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXZDOUJnZCxnQkFzQ2tCSjtXQUNSLFdBc2tDVjBCLGVBdmtDY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDRCcUM7T0FDaEMsV0FsQ0Z2QixnQkFpQzhCMkI7O09BU3NCO1FBRGxCRDtRQUFKRTtRQUNzQixPQUFBLDRCQXVIcERILFdBeEhrQ0M7T0FDaEMsV0ExQ0YxQixnQkF5QzhCNEI7O09BR29CO1FBRGxCQztRQUFKQztRQUNzQixPQUFBLDRCQXFIbERMLFdBdEhnQ0k7T0FDOUIsV0E1Q0Y3QixnQkEyQzRCOEI7O1dBRUNFO09BQzNCLFdBQTZCLDRCQTlDL0JoQyxpQkE2QzZCZ0M7O09BSU07UUFGR0Q7UUFBSkc7UUFFQyxPQUFBLGlDQWpEbkNsQyxpQkErQ3NDK0I7T0FDcEMsV0E0bENGdkMsU0FGQU0sa0JBM2xDa0NvQzs7V0FHRUQsaUJBQUpHO09BQzlCO2VBRDhCQTtlQUVaLGlDQXBEcEJwQyxpQkFrRG9DaUM7O09BVTlCO1FBUDZCRTtRQUFKSTtRQU96QixPQUFBLGlDQTVETnZDLGlCQXFEbUNtQzs7bUJBR3RCbmY7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0ExRHpDZ2QsZ0JBeURrQko7V0FDUixXQWtsQ1ZKLFNBRkFNLGtCQWpsQ2NaO1VBQzhDO09BSjFELFlBQ0ksa0NBRnlCcUQ7O09BVU47UUFGU0Q7UUFBSkU7UUFFTCxPQTZrQ3pCaEQsU0FGQU0sa0JBN2tDa0N3QztPQUNoQyxZQTlERnRDLGdCQTZEOEJ3Qzs7T0FLeUI7UUFGZEM7UUFBSkM7UUFBSkM7UUFFc0IsT0FsRXZEM0MsZ0JBZ0V5Q3lDO1FBRWhCLE9BMGtDekJqRCxTQUZBTSxrQkExa0NxQzRDO09BQ25DLFlBakVGMUMsZ0JBZ0VpQzJDOztXQUdKRTtPQUMzQixZQUE2Qiw0QkFwRS9CN0MsaUJBbUU2QjZDOztPQUlnQjtRQUZGSztRQUFKTjtRQUFKRztRQUVVLE9BQUEsaUNBdkU3Qy9DLGlCQXFFMkNrRDtRQUVsQixPQXZFekJsRCxnQkFxRXVDNEM7T0FDckMsWUF0RUY1QyxnQkFxRW1DK0M7O09BSW9CLElBRGxCRCxrQkFBSk0sa0JBQ3NCLE9BekV2RHBELGdCQXdFcUM4QztPQUNuQyxZQXpFRjlDLGdCQXdFaUNvRDs7T0FHbUIsSUFEbEJELGtCQUFKSyxrQkFDc0IsT0EzRXBEeEQsZ0JBMEVrQ21EO09BQ2hDLFlBM0VGbkQsZ0JBMEU4QndEOztPQVF4QjtRQU5zQ1I7UUFBSmdLO1FBQUp0SjtRQUFKSDtRQUFKSztRQU10QixPQWxGTjVELGdCQTRFNENnRDtRQUt0QyxPQTBFTkssb0JBL0V3QzJKO1FBSWxDLE9BaEZOaE4sZ0JBNEVvQzBEO1FBRzlCLE9BL0VOMUQsZ0JBNEVnQ3VEO09BQzlCLFlBK0dGRCxhQWhINEJNOztPQVE2QixJQURsQkQsa0JBQUpHLGtCQUNzQixPQThLekRMLGVBL0t1Q0U7T0FDckMsWUFwRkYzRCxnQkFtRm1DOEQ7O09BSW9CO1FBRmhCTTtRQUFKUDtRQUFKRztRQUV3QixPQTJLdkRQLGVBN0t1Q1c7UUFFZCxPQUFBLGlDQTJLekJYLGdCQTdLbUNJO09BQ2pDLFlBdEZGN0QsZ0JBcUYrQmdFOztPQUlvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FtakNuRDFFLFNBcEJBdUUsWUFoaUNpQ0U7T0FDL0IsWUF6RkZqRSxnQkF3RjZCa0U7O1dBRUZDLGtCQUN6QixZQWlqQ0YzRSxTQUZBTSxrQkFoakMyQnFFOztPQUlFLElBRlVFLGtCQUFKQyxrQkFFTixPQTlGN0J0RSxnQkE0RnVDcUU7T0FDckMsWUEraUNGN0UsU0FwQkF1RSxZQTVoQ21DTzs7O1FBR0hHOzttQkFHcEJ6aEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFc0IsT0FwR2xDZ2QsZ0JBbUdpQko7V0FDUixXQXdpQ1RKLFNBcEJBdUUsWUFyaENhN0U7VUFDd0M7T0FKbkQsWUFDRSxrQ0FGNEJ1Rjs7T0FXMUI7UUFKb0N3UDtRQUFKelA7UUFBSkc7UUFJNUIsT0ExR04zRSxnQkFzRzBDaVU7UUFHcEMsT0F3Y04xUCxpQkEzY3NDQztPQUNwQztlQXFpQ0ZoRjswQkFwaUNvQnhjO2dDQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2tCQUF0QixPQUFBLHVDQUFMQTtpQkFBOEI7aUJBRmhCMmhCOzs7O09BT0UsSUFGS0Usa0JBQUpELGtCQUVELE9BN0dwQzVFLGdCQTJHeUM2RTtPQUN2QyxZQW0yQkZILDJCQXAyQnFDRTs7V0FHUEUsa0JBQzVCLFlBL0dGOUUsZ0JBOEc4QjhFOztXQUVGQyxrQkFDMUIsWUFqSEYvRSxnQkFnSDRCK0U7O09BSUg7UUFGUUU7UUFBSkM7UUFFSixPQUFBLGlDQThJekJ6QixnQkFoSmlDd0I7T0FDL0IsWUFuSEZqRixnQkFrSDZCa0Y7O1dBR0NDLGtCQUM1QixZQStXRkgscUJBaFg4Qkc7O09BSUMsSUFGS0Msa0JBQUpDLGtCQUVELE9BekgvQnJGLGdCQXVIb0NvRjtPQUNsQyxZQW9oQ0Y1RixrQkFuaENtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZPcWlCOztXQUdKRSxrQkFDMUIsWUFzYkZoQixpQkF2YjRCZ0I7O09BRzZCLElBRHhCMk8sa0JBQUp6TyxrQkFDNEIsT0E3SHpEekYsZ0JBNEhpQ2tVO09BQy9CLFlBZ2FGNU8sc0JBamE2Qkc7O1dBRUF1TyxrQkFDM0IsWUFLRnhPLFdBTjZCd087bUJBRUlHLGtCQUMvQixZQXlwQkZ6TyxlQTFwQmlDeU87O0dBRXVDO1lBRXhFM087SUFDSDtLQUFzRDFUO0tBQXhCQztLQUF4QkM7S0FJc0IsT0F6SXpCZ08sZ0JBcUltRGxPO0tBRzFCLE9BQUEsNEJBSXpCNlQsaUJBUDJCNVQ7SUFDN0IsV0FNRTRULGdCQVBHM1Q7R0FLSjtZQUVDMlQ7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVEwQixPQXZKN0IvRixnQkFpSkc2RjtLQUswQixPQXNDN0J2QyxhQTVDR3dDO0lBSUw7WUF3L0JFdEcsa0JBdi9CMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FON0MraUI7OztZQUdBSDtHQU9KO1lBRUN2QywyQkFFRixxQkFFb0Q7WUFFbEQ1QjtJQUNIO0tBR01uRTtLQURBQztLQURBQztLQU93QixPQTFLM0J3QyxnQkFxS0cxQztLQUkwQixPQUFBLGlDQXpLN0IwQyxpQkFvS0d6QztJQUdMLFdBcUJFK0YsYUF6Qkc5RjtHQVFKO1lBRUNrRDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVFnQyxPQTZLbkNyRyxnQkFuTEdrRztLQUswQixPQXZMN0J2RyxnQkFpTEd5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FJTXNEO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BOEpwQzFHLGdCQXBLR3VHO0tBS2dDLE9BMkVuQ3RHLG9CQWpGR3VHO0lBR0wsV0FPRUcsa0JBWkdELFlBQ0FEO0dBU0o7WUFFQ0U7SUFDbUUsOEJBQ3JDOzs7V0FDSDlILGVBQ3pCLFdBODdCRk0sa0JBOTdCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEdkJrYzs7T0FHc0I7UUFEZlU7UUFBSlI7UUFDbUIsT0E0N0JqREksa0JBNTdCK0R4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbkM0YztPQUNoQyxXQXBCRjBELGFBbUI4QmxFOztXQUVFUyxpQkFDOUIsV0E2NkJGVyxjQTk2QmdDWDs7T0FHcUIsSUFEaEJ3QixpQkFBSnRCLGlCQUNvQixPQTI2QnJEUyxjQTU2QnFDYTtPQUNuQyxXQTI2QkZiLGNBNTZCaUNUOztXQUVKeUI7T0FDM0IsV0FBNkIsNEJBMUIvQjhCLGNBeUI2QjlCOztPQUt2QjtRQUhnQ0Q7UUFBSkk7O21CQUlyQjNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO1dBRUgsR0FESWtjO2dCQUdGdEUsS0FIRXNFO1lBelFkSCxnQkE0UVluRTs7V0FHRixPQXRDVjBJLGFBZ0NrQjFEO1VBTU87UUFSbkIsT0FBQSx1Q0FIZ0MyQjtPQUNwQyxXQW83QkYvQixTQUZBTSxrQkFuN0JrQzZCOztXQWFFRCxpQkFBSkU7T0FDOUIsV0FEOEJBLE1BQ2lCLGlDQXpDakQwQixjQXdDb0M1Qjs7T0FTOUI7UUFQNkJHO1FBQUpDO1FBT3pCLE9BczRCTm1GLGlCQTc0Qm1DcEY7O21CQUd0QjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BL0N6Q3NnQixhQThDa0IxRDtXQUNSLFdBaTZCVkosU0FGQU0sa0JBaDZCY1o7VUFDMkM7T0FKdkQsV0FDSSxrQ0FGeUI0Qzs7V0FRRkU7T0FDM0IsV0FBNkIsNEJBbkQvQnNCLGNBa0Q2QnRCOztPQUdpQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BckQ5Q29CLGFBb0QrQnZCO09BQzdCLFdBckRGdUIsYUFvRDJCcEI7O09BRzJCLElBRGZELGlCQUFKRyxpQkFDbUIsT0FldERxQixlQWhCdUN4QjtPQUNyQyxZQXZERnFCLGFBc0RtQ2xCOztXQUVQRyxrQkFDMUIsWUF1NUJGL0MsU0FGQU0sa0JBdDVCNEJ5Qzs7V0FFQUMsa0JBQzFCLFlBM0RGYyxhQTBENEJkOztXQUVFRztPQUM1QjtlQW01QkZuRDswQkFsNUJtQnhjO2dDQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2tCQUF0QixPQUFBLHVDQUFMQTtpQkFBOEI7aUJBRm5CMmY7O1dBR0dFLGtCQUMvQixZQWhFRlMsYUErRGlDVDs7V0FFQUUsa0JBQy9CLFlBNGhCRjJDLGVBN2hCaUMzQzs7T0FHNEIsSUFENUJaLGlCQUFKaUIsa0JBQ2dDLE9BcEU3REUsYUFtRWlDbkI7T0FDL0IsWUE0NEJGM0MsU0FGQU0sa0JBMzRCNkJzRDs7R0FDZ0Q7WUFFN0VLO0lBRUg7S0FJTTREO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BdUZwQ25ILGdCQTdGR2dIO0tBS2dDLE9BSW5DL0csb0JBVkdnSDtJQUdMLFdBV0VHLG9CQWhCR0QsWUFDQUQ7R0FTSjtZQUVDakgsb0JBRUN0ZDtJQUFLLE9BQUEsNEJBKzNCTjBrQixlQS8zQkMxa0I7R0FBNkI7WUFFOUJ5a0I7SUFFRiw4QkFDZ0M7OztXQUNIdkksZUFBTSxXQUFOQTs7T0FHZ0I7UUFGTHVCO1FBQUpiO1FBQUpSO1FBRWEsT0ExQjNDcUUsZUF3QnNDaEQ7UUFFZCxPQTFCeEJnRCxlQXdCa0M3RDtPQUNoQyxXQWsxQkYwQixlQW4xQjhCbEM7O1dBR0RTO09BQzNCLFdBQTZCLDRCQTVCL0I0RCxnQkEyQjZCNUQ7O09BSU07UUFGQXdCO1FBQUp0QjtRQUVJLE9BQUEsNEJBL0JuQzBELGdCQTZCbUNwQztPQUNqQyxXQTQyQkY3QixTQUZBTSxrQkEzMkIrQkM7O09BS0ssSUFGRHdCLGlCQUFKQyxpQkFFSyxPQSswQnBDeUYsaUJBajFCbUMxRjtPQUNqQyxXQUNHLDRCQW9ETG9HLG1CQXREK0JuRzs7T0FLSTtRQUZERTtRQUFKQztRQUVLLE9BQUEsNEJBckNuQzhCLGdCQW1Da0MvQjtPQUNoQyxXQXMyQkZsQyxTQUZBTSxrQkFyMkI4QjZCOztXQUdJRSxpQkFBSkQ7T0FDNUIsV0F2Q0Y2QixlQXNDOEI3QixPQUFJQzs7T0FNNUI7UUFKa0NRO1FBQUpOO1FBQUpEO3dCQUlWOWUsR0FBSyxPQUFBLDRCQTAwQjNCK2dCLFlBMTBCc0IvZ0IsR0FBMEI7UUFBMUMsT0FBQSx1Q0FKa0NxZjtRQUdsQyxPQXMwQk40RSxpQkF6MEJvQ2xGO09BQ2xDO2VBQ0ksNEJBc0JONkYsZ0JBeEJnQzlGOzs7O09BT3FCO1FBRnBCRztRQUFKRDtRQUV3QixPQS9DckR5QixlQTZDaUN4Qjt3QkFFZGpmLEdBQUssT0EyMUJ4QndjLGtCQTMxQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZ3QmdmOztXQUdFRSxpQkFDN0IsV0FJRjJGLGtCQUwrQjNGO21CQUVFRSxpQkFDL0IsWUFxZUZzRCxlQXRlaUN0RDs7R0FDcUI7WUFFdER5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0E3RG5DeWdCLGVBNERZN0Q7S0FDUixXQTYwQkpKLFNBRkFNLGtCQTUwQlFaO0lBQzZDO0lBSHJELFdBQUEsa0NBRk1VO0lBQ1IsV0FpMUJFSixTQUZBTSxrQkFoMUJFWjtHQU1JO1lBRU4wSTtJQUVIO0tBR01FO0tBREFDO0tBREF4TjtLQU9nQyxPQXlCbkM4RixnQkE5Qkd5SDtJQUVMLFdBTUVFLG9CQVZHek4sV0FDQXdOO0dBT0o7WUFFQ0M7SUFFRjtLQUdtQztNQUZEdkg7TUFBSmI7TUFBSlY7TUFFUyxPQUFBLDRCQWxGakN1RSxnQkFnRmdDaEQ7S0FDOUIsV0F5ekJGakIsU0FwQkF1RSxZQXR5QndCN0UsS0FBSVU7O1FBR0RSO0lBQ3pCLFdBcEZGcUUsZUFtRjJCckU7R0FDcUI7WUFFaER1STtJQUVIO0tBR01NO0tBREFDO0tBREExTjtLQU9nQyxPQUduQzZGLGdCQVJHNEg7SUFFTCxXQXN3QkVFLHVCQTF3QkczTixXQUNBME47R0FPSjtZQUVDN0gsZ0JBRUNyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU04QixPQUlqQ0MsYUFUR0Y7SUFHTCxXQTR4QkU5SSxrQkEzeEI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQ3VsQixrQkFFQUY7R0FNSjtZQUVDRztJQUNGOztXQUN5QnRKLGVBQU0sV0FNN0JDLGVBTnVCRDs7V0FDQUUsaUJBQU0sV0F1UjdCcUosZUF2UnVCcko7O1dBQ0FTLGlCQUFNLFdBeEg3QjRELGVBd0h1QjVEOztPQUVvQjtRQURmRDtRQUFKRztRQUNtQixPQUFBLGlDQTVYM0NDLGlCQTJYNEJKO09BQzFCLFdBaE1GMEQsYUErTHdCdkQ7O0dBQ2lEO1lBRXpFWixlQUVDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztPQUVXLElBRGxCakosZUFBSlYsZUFDc0IsT0F6Q25EbUIsZ0JBd0NpQ1Q7T0FDL0IsV0E5WUZJLGdCQTZZNkJkOztPQUlOO1FBRldtQztRQUFKakM7UUFFUCxPQUFBLDRCQXBPdkJzQixvQkFrT2tDVztPQUNoQyxXQTB1QkZWLGNBM3VCOEJ2Qjs7V0FHR1MsaUJBQy9CLFdBaXNCRmlKLHVCQWxzQmlDako7O09BSVY7UUFGVTBCO1FBQUp4QjtRQUVOLE9BQUEsNEJBa2xCdkJnSix1QkFwbEJpQ3hIO09BQy9CLFdBcXVCRlosY0F0dUI2Qlo7O1dBR0N5QixpQkFDNUIsV0E0aEJGd0gsb0JBN2hCOEJ4SDs7V0FFR0csaUJBQy9CLFdBNGdCRnNILG9CQTdnQmlDdEg7O1dBRUhDLGlCQUM1QixXQXFJRnNILG9CQXRJOEJ0SDs7V0FFR0U7T0FDL0IsV0FBaUMsNEJBbUluQ29ILHFCQXBJaUNwSDs7V0FFRkUsaUJBQzdCLFdBcWRGbUgsNkJBdGQrQm5IOztXQUVIRSxpQkFDMUIsV0EySEZvRCxzQkE1SDRCcEQ7O1dBRUNFO09BQzNCLFlBQTZCLDRCQWdCL0JnSCx3QkFqQjZCaEg7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBNFJKOEcsNkJBOVJrQzlHOztXQUdIQyxrQkFDN0IsWUFNRjhHLHlCQVArQjlHOztXQUVFRyxrQkFDL0IsWUFsRUZ5RixlQWlFaUN6Rjs7T0FHc0IsSUFEakJqQixpQkFBSm1CLGtCQUNxQixPQXhFdkR4QyxnQkF1RXNDcUI7T0FDcEMsWUE2V0ZnRSxlQTlXa0M3Qzs7R0FDd0M7WUFFMUV5Ryx5QkFHQ3RtQjtJQUFLLE9Bc1pOdW1CLG1CQXZSQWhGLGtCQS9IQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9BMFdOd21CLGlCQXhXQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQTdGbkN2SixnQkF3RkdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkRqSztRQUFKVjtRQUVLLE9BQUEsNEJBeE1uQ3VFLGdCQXNNa0M3RDtPQUNoQyxXQW1zQkZKLFNBRkFNLGtCQWxzQjhCWjs7V0FHRUUsaUJBQzlCLFdBeUJGNEYscUJBMUJnQzVGOztPQU8xQjtRQUxpQzZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLckIsT0ExQk40SixnQkFxQnVDeEc7UUFJakMsT0FyUk5LLGFBaVJtQzdDO1FBRzdCLE9BQUEsaUNBaGROVCxpQkE2YytCcUI7T0FDN0IsV0ErcEJGQyxlQWhxQjJCekI7O09BU3JCO1FBSDJCMEI7UUFBSnhCOzttQkFJaEIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXpkOUJnZCxnQkF3ZGtCSjtXQUNSLFdBb3BCVjBCLGVBcnBCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDJCcUM7T0FDL0IsV0E1QkZrSSxnQkEyQjZCMUo7O09BVTBCO1FBRnBCc0M7UUFBSlg7UUFBSkY7UUFFNEIsT0FyQ3ZEaUksZ0JBbUNtQ3BIO1FBRVosT0FBQSw0QkFoVHZCM0Isb0JBOFMrQmdCO09BQzdCLFdBOHBCRmYsY0EvcEIyQmE7O09BSTZCLElBRGxCSyxpQkFBSkYsaUJBQ3NCLE9BNk94RG1JLGdCQTlPc0NqSTtPQUNwQyxXQXZDRjRILGdCQXNDa0M5SDs7V0FFRkMsaUJBQzlCLFdBeVRGOEQsZUExVGdDOUQ7O09BR3dCLElBRHhCRyxpQkFBSkQsaUJBQzRCLE9BM0N4RDJILGdCQTBDZ0MxSDtPQUM5QixXQXNYRmdJLHNCQXZYNEJqSTs7R0FDK0M7WUFFM0VrRDtJQUVIO0tBQW9DZ0Y7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyxrQkFOaUNGO0lBQ25DLFdBNVNFMUcsYUEyU0cyRztHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0FsSm5DaEssZ0JBNklHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7d0JBSVRsYyxHQUFLLE9BMm9CM0J3YyxrQkEzb0J5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7UUFBNUMsT0FBQSx1Q0FKaUN5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQWtYRjJLLG1CQW5YK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9BK2pCOUJvSSxrQkFoa0JhcEo7T0FEWCxlQXlvQkY3QixTQXBCQXVFLFlBcG5CU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9Ba2dCOUJpSSxrQkFuZ0Jhbko7T0FEWCxlQXFvQkYvQixTQXBCQXVFLFlBaG5CU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQTNRekI4QixlQTBRYS9CO09BRFgsZUF6UUYrQixlQTBRUzdCOztXQUV5QkUsaUJBQ2hDLFdBL2dCRjlCLGdCQThnQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0F1UUZ3RCxlQXhRZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBdlJGdUUsZUFzUjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQTNoQnpEWSxnQkEwaEJvQ0o7SUFDbEMsV0FxVkYySyxtQkF0VmdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9BOFROMm5CLGdCQTVTQXBHLGtCQWxCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVNnQyxPQXhNbkMxSyxnQkFpTUd3SztLQU0wQixPQUs3QnRHLGlCQVpHdUc7SUFJTDtZQW1tQkV0TDt1QkFqbUJnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDK25COzs7WUFHQUg7R0FRSjtZQUVDckc7SUFFSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPaUMsT0F0TnBDN0ssZ0JBaU5HMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQmpNLGVBQzNCLFdBMGtCRk0sU0FGQU0sa0JBemtCNkJaOztXQUVJRSxpQkFDL0IsV0F0TUZELGVBcU1pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDMEUsaUJBb0JvQzNFO09BQ2xDLFdBWUZ3TCx1QkFiZ0N2TDs7T0FJcUIsSUFEbkJ3QixpQkFBSnRCLGlCQUN1QixPQXhCckR3RSxpQkF1QmtDbEQ7T0FDaEMsV0F4QkZrRCxpQkF1QjhCeEU7O09BSUosSUFGYXdCLGlCQUFKQyxpQkFFVCxPQWMxQjZKLGlCQWhCdUM5SjtPQUNyQyxXQTFCRmdELGlCQXlCbUMvQzs7V0FHTEcsaUJBQzVCLFdBOWtCRjNCLGdCQTZrQjhCMkI7bUJBRUdDLGlCQUMvQixXQTBNRjhELGVBM01pQzlEOztHQUNxQjtZQUV0RHdKO0lBRUYsWUFDNEI7SUFHNkIsSUFGMUJ4TCxlQUFKVixlQUU4QixPQUV2RG1NLGlCQUo2QnpMO0lBQzNCO1lBcWpCRko7dUJBcGpCbUJ4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQUZ4QmtjOztHQUVrRDtZQUUzRW1NO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0EvUHBDbkwsZ0JBMFBHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQnZNLGVBQzNCLFdBaWlCRk0sU0FGQU0sa0JBaGlCNkJaOztXQUVJRSxpQkFDL0IsV0FtQ0ZxSixlQXBDaUNySjs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEN3TCxpQkFvQm9Dekw7T0FDbEMsV0E3QkZ3TCx1QkE0QmdDdkw7O09BS047UUFGT3dCO1FBQUp0QjtRQUVILE9BQUEsNEJBUTFCMkwsc0JBVmlDcks7T0FDL0IsV0F4QkZnSyxpQkF1QjZCdEw7O1dBR0N5QixpQkFDNUIsV0FwRUYrQyxpQkFtRThCL0M7O1dBRUdHLGlCQUMvQixXQW1LRitELGVBcEtpQy9EOztXQUVKQyxpQkFDM0IsV0FtaEJGcEMsU0FGQU0sa0JBbGhCNkI4Qjs7R0FDZ0M7WUFFN0Q4SjtJQUVGOztPQUdxQyxJQUZEOUwsZUFBSlYsZUFFSyxPQXdXbkM2SixzQkExV2tDbko7T0FDaEMsV0E2Z0JGSixTQUZBTSxrQkE1Z0I4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9BeWdCbkNJLFNBRkFNLGtCQXpnQm9DdUI7T0FDbEMsV0EwZ0JGN0IsU0FGQU0sa0JBemdCZ0NWOztXQUdNbUM7T0FDcEMsT0FsckJGeEMsZ0JBaXJCc0N3Qzs7V0FFS0c7T0FDekMsT0FwckJGM0MsZ0JBbXJCMkMyQzs7T0FLUjtRQUZJRztRQUFKaEM7UUFFQSxPQTZWbkNrSixzQkEvVnVDbEg7T0FDckMsV0FrZ0JGckMsU0FGQU0sa0JBamdCbUNEOztPQUtBO1FBRkdrQztRQUFKaEM7UUFFQyxPQThmbkNQLFNBRkFNLGtCQTlmc0NpQztPQUNwQyxXQStmRnZDLFNBRkFNLGtCQTlma0NDOztHQUU4QjtZQUVoRTBJLGVBRUN6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztXQUNYNU0sZUFDM0IsV0FvYkY0Six1QkFyYjZCNUo7O09BSU47UUFGVVU7UUFBSlI7UUFFTixPQUFBLDRCQXFVdkIySix1QkF2VWlDbko7T0FDL0IsV0F3ZEZlLGNBemQ2QnZCOztXQUdJUztPQUMvQixXQUFpQyw0QkFtVW5Da0osdUJBcFVpQ2xKOztXQUVIRSxpQkFDNUIsV0E2UUZpSixvQkE5UThCako7O1dBRUd5QixpQkFDL0IsV0E2UEZ5SCxvQkE5UGlDekg7O1dBRUhHLGlCQUM1QixXQTBPRm9LLHdCQTNPOEJwSzs7V0FFRUMsaUJBQzlCLFdBd05Gb0sseUJBek5nQ3BLOztXQUVDRTtPQUMvQixXQUFpQyw0QkFzT25DaUsseUJBdk9pQ2pLOztXQUVGRSxpQkFDN0IsV0FvTUZtSCw2QkFyTStCbkg7O1dBRUtFO09BQ2xDLE9BaHVCRm5ELGdCQSt0Qm9DbUQ7O1dBR1JFLGlCQUMxQixXQW1LRjJILHNCQXBLNEIzSDs7V0FFR0csa0JBQzdCLFlBMklGMEoseUJBNUkrQjFKOztXQUVGQztPQUMzQixZQUE2Qiw0QkFjL0IwSix3QkFmNkIxSjs7V0FFS0c7T0FDaEM7ZUFDRSw0QkFNSjBHLDZCQVJrQzFHOztXQUdERSxrQkFDL0IsWUF0VkZ1RixlQXFWaUN2Rjs7T0FHc0IsSUFEakJ4QixpQkFBSjBCLGtCQUNxQixPQTVWdkQxQyxnQkEyVnNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0MzQzs7R0FDd0M7WUFFMUVzRyw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BalhwQ2hNLGdCQTRXRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkE1ZG5DdUUsZ0JBMGRtQzdEO09BQ2pDLFdBK2FGSixTQUZBTSxrQkE5YStCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0FqZXhCZ0QsZUErZGtDcEM7T0FDaEMsV0EyWUZDLGVBNVk4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWtIRndJLHNCQW5INkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0ExZUUvSSxlQXllR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQXRacEN4TSxnQkFpWkdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixPQXZnQlBxRSxlQW1nQnFCUjtRQUdkLE9Bc0RQOEosa0JBekRpQnRNO1FBRVYsT0E2VFBnSyxrQkEvVGE3SztPQURYLGVBd1lGSixTQXBCQXVFLFlBblhTbEU7O09BTVA7UUFENEJFO1FBRVRpTixPQUZTak47UUFFYnNDLE9BRmF0QztRQUVqQnNCLE9BRmlCdEI7UUFFckJ5QixPQUZxQnpCO1FBTXZCLE9BOWdCUDBELGVBMGdCcUJ1SjtRQUdkLE9BK0NQRCxrQkFsRGlCMUs7UUFFVixPQTZQUHFJLGtCQS9QYXJKO09BRFgsZUFpWUY3QixTQXBCQXVFLFlBNVdTdkM7O09BTVA7UUFEZ0NHO1FBRXJCSixPQUZxQkk7UUFFekJDLE9BRnlCRDtRQUdULE9BbGhCekI4QixlQWloQmFsQztPQURYLGVBaGhCRmtDLGVBaWhCUzdCOztXQUV3QkUsaUJBQy9CLFdBN2FGc0csZUE0YWlDdEc7bUJBRUFFLGlCQUMvQixXQUVGMEQsZUFIaUMxRDs7R0FDcUI7WUFFdEQwRCxlQUVDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BeGF6QndsQixhQXVhTTVJO0lBQ1IsV0E4V0VKLGtCQTlXYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBb0JnQyxNQXRkbkNsTixnQkF1Y0c2TTtLQWEwQixNQUFBLFdBcEI1QkQsSUFLRUc7S0FjMEIsTUFvVjdCNU4sa0JBcFYyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWY5Q3FxQjtpQkFTTXJxQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUFtUjNCNE4saUJBcFJnQm5NO01BQ1IsVUF3UlJvTSxjQXpSWXJPO0tBRE4sV0FsakJOcUUsZUFpakJVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ29PO0lBTUwsV0FnQkVQLGtCQXZCR1EsMEJBSUFKO0dBaUJKO1lBRUNKLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQTlPQThCLGtCQTRPQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsTUFqZnJDdk4sZ0JBNGVHcU47SUFFTCxXQUNnQyxXQVA3QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQsc0JBRUMvbUI7SUFBSyxPQUVOMm5CO3NCQUYyQjNuQixHQUFLLE9BaVRoQ3djLFNBRkFNLGtCQS9TMkI5YyxHQUFnQyxHQUExREE7R0FBNkQ7WUFFOUQybkIsZ0JBS0NzQztJQUFKO0tBS01ZO0tBREFDO0tBREFDO0tBREFDO0tBU2tDLE1BeGdCckMzTixnQkFrZ0JHd047S0FJZ0MsTUFLbkN0RCxtQkFYR3dEO0lBSUwsV0FDaUMsV0FSOUJkLElBRUVlLGtCQUVBRjtHQVFKO1lBRUN2RCwwQkFDbUUscUJBRW5CO1lBRWhEcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRaUMsTUE1aEJwQy9OLGdCQXNoQkc2TjtLQUsyQixNQUFBLGlDQXRTOUI3QyxrQkFnU0c4QztJQUlMO1lBOFFFM08sa0JBN1E0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2pDO0lBR0g7S0FJTXFDO0tBREFDO0tBREFDO0tBREFDO0tBUWdDLE1BNWlCbkNuTyxnQkFzaUJHaU87S0FLOEIsTUE0UGpDOU8sU0FGQU0sa0JBaFFHeU87SUFJTCxXQThQRS9PLGtCQTdQMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOOUN3ckIscUJBR0FIO0dBT0o7WUFFQ3RDO0lBR0g7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBU2dDLE1BN2pCbkN2TyxnQkFzakJHcU87S0FNMEIsTUF2VTdCckQsaUJBZ1VHc0Q7SUFJTDtZQThPRW5QO3VCQTVPZ0J4Yzs0QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHNDQUFMQTtjQUE4QjtjQVAzQzRyQjs7O1lBR0FIO0dBUUo7WUFFQ3hGO0lBRUg7S0FHTTRGO0tBREFDO0tBREFDO0tBUW1DLE1BNWtCdEMxTyxnQkFza0JHd087SUFFTDtZQWtDRW5LLDJCQXRDR3FLO1lBQ0FEOztHQVFKO1lBRUM5RjtJQUVIO0tBTU1nRztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQXFCbUMsTUF2bUJ0Q2hQLGdCQXVsQkcyTztLQWNnQyxNQWlFbkN0RSxrQkFqRkd3RTtLQWVEO09BQUE7MEJBTUZ4Syw0QkF0Qkd5SztpQkFTTW5zQjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUFtSTNCNE4saUJBcElnQm5NO01BQ1IsVUF3SVJvTSxjQXpJWXJPO0tBRE4sV0Fsc0JOcUUsZUFpc0JVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FUQ2tRO0lBTUw7WUE4TUU1UCxTQUZBTSxrQkFuTkd1UDs7OztZQUlBSjs7R0FrQko7WUFFQ3ZLO0lBR0g7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE1Bdm5CcENwUCxnQkFpbkJHaVA7S0FJMkIsTUFLOUJJLCtCQVhHRjtJQUlMO1lBb0xFaFEsa0JBbkw0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFK0M7S0FHWDtNQUZIOVA7TUFBSlY7TUFFTyxNQUFBLGlDQWx1QnBDdUUsZ0JBZ3VCaUM3RDtLQUMvQixXQXdFRitQLDJCQXpFNkJ6UTs7UUFHQ0U7SUFDNUIsV0FzS0ZJLFNBRkFNLGtCQXJLOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0E0QmtDLE1BbHFCckM5UCxnQkE0b0JHd1A7S0FxQmdDLE1BQUEsaUNBcHdCbkNwTSxnQkE4dUJHcU07S0FxQitCLE1BTWxDcEYsa0JBNUJHcUY7S0FxQjRCLE1BWS9CSyxlQWxDR0o7aUJBa0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFod0IxQnlnQixlQSt2QmM3RDtLQUNSLFdBaHdCTjZELGVBK3ZCVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWxCQ3dQO2lCQVdNanRCO0tBQ0g7TUFBUTRjLEtBREw1YztNQUNDa2MsS0FERGxjO01BR09xZSxPQUZGekI7TUFFRlIsT0FGRVE7TUFHYSxNQTZFM0I0TixpQkE5RWdCbk07TUFDUixVQWtGUm9NLGNBbkZZck87S0FETixXQXh2Qk5xRSxlQXV2QlV2RTtJQUd1QztJQUwvQyxVQUFBLGlDQVhDZ1I7SUFRTDtZQXdKRTFRLGtCQXZKNkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FWaERtdEI7Ozs7Ozs7WUFPQVA7R0F1Qko7WUFFQ2xGLHlCQUNpRSxxQkFFZjtZQUVsRDBGO0lBQ0U7O1NBRThCbFI7S0FDOUIsV0FBZ0MsNEJBS2xDbVIsOEJBTmdDblI7O1FBRURFO0lBQzdCLFdBQStCLDRCQTZCakNrUix3QkE5QitCbFI7R0FFNkI7WUFFNURpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBV2dDLE1BbnNCbkN2USxnQkE0ckJHa1E7S0FLeUIsTUFBQSxpQ0FweUI1QjlNLGdCQTZ4QkdnTjtLQU0wQixNQU03QmQsMkJBYkdlO0lBS0w7WUF5R0VsUixrQkF4RzJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDlDNHRCOzs7WUFHQUo7O0dBU0o7WUFFQ2I7SUFFMEM7U0FDWnpRO0tBQzVCLFdBQThCLDRCQTd5QmhDdUUsZ0JBNHlCOEJ2RTs7UUFFQ0U7SUFDN0IsV0FBK0IsNEJBRWpDa1Isd0JBSCtCbFI7R0FDc0M7WUFFckVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE1BNXRCbkM1USxnQkFxdEJHd1E7S0FLMEIsTUE3ekI3QnBOLGVBc3pCR3NOO0tBTTZCLE1BTWhDdEcsa0JBYkd1RztJQUtMO1lBZ0ZFeFIsa0JBL0UyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDaUUscUJBRWI7WUFFcEQrQyx3QkFDK0QscUJBRUM7WUFFaEVDO0lBQ0Ysc0JBQ2dDLGlCQUNJLGtCQUNIOztHQUEyQjtZQUUxRDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVWlDLE1BNXZCcENqUixnQkFxdkJHOFE7aUJBTXlDbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUDNCb3VCO0tBTTJCLE1BNzFCOUIzTixlQXMxQkc0TjtJQUtMO1lBK0NFN1Isa0JBOUM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAvQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUMvSTtJQUVGO0tBRW9ELElBRHRCdkksZUFBSlYsZUFDMEIsTUF2MkJsRHVFLGVBczJCNEI3RDtLQUMxQixXQW1DRkosU0FwQkF1RSxZQWhCd0I3RTs7UUFFR0U7SUFDekIsV0F6MkJGcUUsZUF3MkIyQnJFO0dBQ3FCO1lBRWhEa0M7SUFDRiw4QkFDOEI7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBa0M7WUFFNUQ2SCx3QkFDK0QscUJBRWpCO1lBRTlDbEQsV0FBb0UvZ0IsR0FBSyxPQUFMQSxFQUFNO1lBRTFFMmQscUJBQ0YscUJBRTBEO1lBRXhESDtJQUNGOztXQUN3Q1osZUFBSlYsOEJBQ3NCbGMsR0FBSyxPQUFMQSxFQUFNO09BQTVELFdBRGdDa2MsSUFDTSxzQ0FERlU7O1dBRVJSLGlCQUFNLFdBQU5BOzs7UUFDV3FCO1FBQUpZO1FBQUp4Qjt1QkFFVTdjLEdBQUssT0FBTEEsRUFBTTtPQUQvQyxXQUQrQjZjLE1BQUl3QixNQUVWLHNDQUZjWjs7V0FHTGMsaUJBQUp4QixnQ0FDc0IvYyxHQUFLLE9BQUxBLEVBQU07T0FBMUQsV0FEOEIrYyxNQUNNLHNDQURGd0I7O0dBQzZCO1lBRWpFekIsaUJBQW9EOWMsR0FBSyxPQUFMQSxFQUFNO1lBRTFEd2MsU0FHQ3lOO0lBQUosSUFBK0IxcEIsZ0JBQXRCWTtJQUNSLFdBQXlCLFdBRHRCOG9CLElBQUs5b0IsTUFBc0JaO0dBQzZDO1lBRXpFbWtCLGNBQStDMWtCLEdBQUssT0FBTEEsRUFBTTs7OztPQS9yQ3JEK2I7T0FJSUU7T0FRSkk7T0FjQUU7T0FTQUk7T0FVQUs7T0FlQU87T0FxSEFpRjtPQVFBRztPQWVBdEM7T0FNQTVCO09BWUFmO09BZUE0QztPQWNBMEQ7T0F3REF2RDtPQWVBbkQ7T0FJQW1IO09Ba0NBSTtPQVdBRDtPQWFBSTtPQVNBTDtPQWFBdEg7T0FJQStIO09BYUFJO09BUUFySjtPQUlBdUo7T0FRQUc7T0FxQ0FTO09BS0FGO09BSUFLO09BYUFJO09BZ0NBN0U7T0FRQWtGO09BYUFJO09BMkJBRTtPQVFBbEY7T0FJQTREO09BZ0JBM0U7T0FhQTRHO09Bb0JBQztPQVFBQztPQWFBSTtPQW9CQUM7T0FxQkFqRDtPQUlBa0Q7T0FRQUc7T0F1Q0F6QztPQUtBNkM7T0FJQXBDO09BYUF3QztPQWdCQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQU1BOEQ7T0E4QkF1RDtPQUtBZDtPQUtBMUM7T0FpQkFRO09BSUFZO09BbUJBSjtPQUtBcEI7T0FnQkE2QztPQWdCQUQ7T0FpQkE5QztPQWNBRDtPQTJCQXRFO09BZ0JBZ0w7T0FTQTNHO09BbUNBMkI7T0FLQTBGO09BU0FDO09Ba0JBVjtPQVFBVztPQWlCQTdGO09BS0ErQztPQUtBQztPQU1BM0U7T0FpQkFYO09BUUE3RztPQU1BMkY7T0FLQWxEO09BRUFwRDtPQUtBSDtPQVdBVjtPQUVBTjtPQU1Ba0k7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O1lDL3JDSXpJO0lBRU4sdUJBQzZCQyxlQUN6QixXQTBaRkMsZUEzWjJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU0wQjtPQUFBLGlDQUk3QjBCLHlCQVRHekI7SUFHTCxXQW9wQ0UwQixrQkFucEM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhLGtCQUVBeUI7R0FNSjtZQUVDQztJQUdILElBQW9DRSxzQkFBOUJDO0lBQ0wsV0FLRUMsNkJBTkdELGFBQThCRDtHQUlsQztZQUVDRTtJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlIsaUNBQ3NCcGMsR0FBSyxPQUFMQSxFQUFNO09BQXRELFdBRDBCb2MsTUFDTSx1Q0FERlE7O1dBRUhDLGlCQUMzQixXQUQyQkE7bUJBRURFLGlCQUFNLFdBQU5BOztHQUFvQztZQUVoRUM7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVNpQyxPQWdWcENDLGdCQXRWR0o7S0FLZ0MsT0E2UG5DSyxvQkFuUUdKO0lBR0wsV0FPRUsscUJBWkdILFlBQ0FEO0dBU0o7WUFFQ0k7SUFFRiw4QkFpSHdDOzs7V0FoSFRyQixlQUMzQixXQXdtQ0ZNLFNBRkFNLGtCQXZtQzZCWjs7V0FFR0UsaUJBQzlCLFdBeWxDRm9CLGNBMWxDZ0NwQjs7T0FJdUI7UUFGbkJxQjtRQUFKYjtRQUFKQztRQUUyQixPQXhCdkRHLGdCQXNCb0NTO1FBRWIsT0FBQSw0QkFxSnZCQyxvQkF2SmdDZDtPQUM5QixXQWtsQ0ZlLGNBbmxDNEJkOztXQUdJRTtPQUM5QixXQUFnQyw0QkF1SWxDMEIsV0F4SWdDMUI7O09BTzFCO1FBTGtDa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS3RCLE9BaENOeEIsZ0JBMkJ3Q2lEO1FBSWxDLE9BNkpOSyxhQWpLb0NqQjtRQUc5QixPQUFBLGlDQTlCTnJDLGlCQTJCZ0NxQjtPQUM5QixXQWdrQ0ZDLGVBamtDNEJFOztPQVN0QjtRQUg0QkQ7UUFBSkk7O21CQUlqQjNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BdkM5QmdkLGdCQXNDa0JKO1dBQ1IsV0FxakNWMEIsZUF0akNjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FINEJxQztPQUNoQyxXQWxDRnZCLGdCQWlDOEIyQjs7T0FTc0I7UUFEbEJEO1FBQUpFO1FBQ3NCLE9BQUEsNEJBdUhwREgsV0F4SGtDQztPQUNoQyxXQTFDRjFCLGdCQXlDOEI0Qjs7T0FHb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BQUEsNEJBcUhsREwsV0F0SGdDSTtPQUM5QixXQTVDRjdCLGdCQTJDNEI4Qjs7V0FFQ0U7T0FDM0IsV0FBNkIsNEJBOUMvQmhDLGlCQTZDNkJnQzs7T0FJTTtRQUZHRDtRQUFKRztRQUVDLE9BQUEsaUNBakRuQ2xDLGlCQStDc0MrQjtPQUNwQyxXQTJrQ0Z2QyxTQUZBTSxrQkExa0NrQ29DOztXQUdFRCxpQkFBSkc7T0FDOUI7ZUFEOEJBO2VBRVosaUNBcERwQnBDLGlCQWtEb0NpQzs7T0FVOUI7UUFQNkJFO1FBQUpJO1FBT3pCLE9BQUEsaUNBNUROdkMsaUJBcURtQ21DOzttQkFHdEJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTFEekNnZCxnQkF5RGtCSjtXQUNSLFdBaWtDVkosU0FGQU0sa0JBaGtDY1o7VUFDOEM7T0FKMUQsWUFDSSxrQ0FGeUJxRDs7T0FVTjtRQUZTRDtRQUFKRTtRQUVMLE9BNGpDekJoRCxTQUZBTSxrQkE1akNrQ3dDO09BQ2hDLFlBOURGdEMsZ0JBNkQ4QndDOztPQUt5QjtRQUZkQztRQUFKQztRQUFKQztRQUVzQixPQWxFdkQzQyxnQkFnRXlDeUM7UUFFaEIsT0F5akN6QmpELFNBRkFNLGtCQXpqQ3FDNEM7T0FDbkMsWUFqRUYxQyxnQkFnRWlDMkM7O1dBR0pFO09BQzNCLFlBQTZCLDRCQXBFL0I3QyxpQkFtRTZCNkM7O09BSWdCO1FBRkZLO1FBQUpOO1FBQUpHO1FBRVUsT0FBQSxpQ0F2RTdDL0MsaUJBcUUyQ2tEO1FBRWxCLE9BdkV6QmxELGdCQXFFdUM0QztPQUNyQyxZQXRFRjVDLGdCQXFFbUMrQzs7T0FJb0IsSUFEbEJELGtCQUFKTSxrQkFDc0IsT0F6RXZEcEQsZ0JBd0VxQzhDO09BQ25DLFlBekVGOUMsZ0JBd0VpQ29EOztPQUdtQixJQURsQkQsa0JBQUpLLGtCQUNzQixPQTNFcER4RCxnQkEwRWtDbUQ7T0FDaEMsWUEzRUZuRCxnQkEwRThCd0Q7O09BUXhCO1FBTnNDUjtRQUFKZ0s7UUFBSnRKO1FBQUpIO1FBQUpLO1FBTXRCLE9BbEZONUQsZ0JBNEU0Q2dEO1FBS3RDLE9BMEVOSyxvQkEvRXdDMko7UUFJbEMsT0FoRk5oTixnQkE0RW9DMEQ7UUFHOUIsT0EvRU4xRCxnQkE0RWdDdUQ7T0FDOUIsWUErR0ZELGFBaEg0Qk07O09BUTZCLElBRGxCRCxrQkFBSkcsa0JBQ3NCLE9BcUt6REwsZUF0S3VDRTtPQUNyQyxZQXBGRjNELGdCQW1GbUM4RDs7T0FJb0I7UUFGaEJNO1FBQUpQO1FBQUpHO1FBRXdCLE9Ba0t2RFAsZUFwS3VDVztRQUVkLE9BQUEsaUNBa0t6QlgsZ0JBcEttQ0k7T0FDakMsWUF0RkY3RCxnQkFxRitCZ0U7O09BSW9CO1FBRGxCQztRQUFKQztRQUNzQixPQWtpQ25EMUUsU0FwQkF1RSxZQS9nQ2lDRTtPQUMvQixZQXpGRmpFLGdCQXdGNkJrRTs7V0FFRkMsa0JBQ3pCLFlBZ2lDRjNFLFNBRkFNLGtCQS9oQzJCcUU7O09BSUUsSUFGVUUsa0JBQUpDLGtCQUVOLE9BOUY3QnRFLGdCQTRGdUNxRTtPQUNyQyxZQThoQ0Y3RSxTQXBCQXVFLFlBM2dDbUNPOzs7UUFHSEc7O21CQUdwQnpoQjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVzQixPQXBHbENnZCxnQkFtR2lCSjtXQUNSLFdBdWhDVEosU0FwQkF1RSxZQXBnQ2E3RTtVQUN3QztPQUpuRCxZQUNFLGtDQUY0QnVGOztPQVcxQjtRQUpvQ3dQO1FBQUp6UDtRQUFKRztRQUk1QixPQTFHTjNFLGdCQXNHMENpVTtRQUdwQyxPQStiTjFQLGlCQWxjc0NDO09BQ3BDO2VBb2hDRmhGOzBCQW5oQ29CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGaEIyaEI7Ozs7T0FPRSxJQUZLRSxrQkFBSkQsa0JBRUQsT0E3R3BDNUUsZ0JBMkd5QzZFO09BQ3ZDLFlBazFCRkgsMkJBbjFCcUNFOztXQUdQRSxrQkFDNUIsWUEvR0Y5RSxnQkE4RzhCOEU7O1dBRUZDLGtCQUMxQixZQWpIRi9FLGdCQWdINEIrRTs7T0FJSDtRQUZRRTtRQUFKQztRQUVKLE9BQUEsaUNBcUl6QnpCLGdCQXZJaUN3QjtPQUMvQixZQW5IRmpGLGdCQWtINkJrRjs7V0FHQ0Msa0JBQzVCLFlBc1dGSCxxQkF2VzhCRzs7T0FJQyxJQUZLQyxrQkFBSkMsa0JBRUQsT0F6SC9CckYsZ0JBdUhvQ29GO09BQ2xDLFlBbWdDRjVGLGtCQWxnQ21CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk9xaUI7O1dBR0pFLGtCQUMxQixZQTZhRmhCLGlCQTlhNEJnQjs7T0FHNkIsSUFEeEIyTyxrQkFBSnpPLGtCQUM0QixPQTdIekR6RixnQkE0SGlDa1U7T0FDL0IsWUF1WkY1TyxzQkF4WjZCRzs7V0FFQXVPLGtCQUMzQixZQUtGeE8sV0FONkJ3TzttQkFFSUcsa0JBQy9CLFlBd29CRnpPLGVBem9CaUN5Tzs7R0FFdUM7WUFFeEUzTztJQUNIO0tBQXNEMVQ7S0FBeEJDO0tBQXhCQztLQUlzQixPQXpJekJnTyxnQkFxSW1EbE87S0FHMUIsT0FBQSw0QkFJekI2VCxpQkFQMkI1VDtJQUM3QixXQU1FNFQsZ0JBUEczVDtHQUtKO1lBRUMyVDtJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBUTBCLE9Bdko3Qi9GLGdCQWlKRzZGO0tBSzBCLE9Bc0M3QnZDLGFBNUNHd0M7SUFJTDtZQXUrQkV0RyxrQkF0K0IwQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU43QytpQjs7O1lBR0FIO0dBT0o7WUFFQ3ZDLDJCQUVGLHFCQUVvRDtZQUVsRDVCO0lBQ0g7S0FHTW5FO0tBREFDO0tBREFDO0tBT3dCLE9BMUszQndDLGdCQXFLRzFDO0tBSTBCLE9BQUEsaUNBeks3QjBDLGlCQW9LR3pDO0lBR0wsV0FxQkUrRixhQXpCRzlGO0dBUUo7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUWdDLE9Bb0tuQ3JHLGdCQTFLR2tHO0tBSzBCLE9Bdkw3QnZHLGdCQWlMR3lHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUlNc0Q7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0FxSnBDMUcsZ0JBM0pHdUc7S0FLZ0MsT0FrRW5DdEcsb0JBeEVHdUc7SUFHTCxXQU9FRyxrQkFaR0QsWUFDQUQ7R0FTSjtZQUVDRTtJQUNtRSw4QkFDckM7OztXQUNIOUgsZUFDekIsV0E2NkJGTSxrQkE3NkI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUR2QmtjOztPQUdzQjtRQURmVTtRQUFKUjtRQUNtQixPQTI2QmpESSxrQkEzNkIrRHhjLEdBQUssT0FBTEEsRUFBTSxHQURuQzRjO09BQ2hDLFdBcEJGMEQsYUFtQjhCbEU7O1dBRUVTLGlCQUM5QixXQTQ1QkZXLGNBNzVCZ0NYOztPQUdxQixJQURoQndCLGlCQUFKdEIsaUJBQ29CLE9BMDVCckRTLGNBMzVCcUNhO09BQ25DLFdBMDVCRmIsY0EzNUJpQ1Q7O1dBRUp5QjtPQUMzQixXQUE2Qiw0QkExQi9COEIsY0F5QjZCOUI7O09BS3ZCO1FBSGdDRDtRQUFKSTt3QkFHWjNlLEdBQUssY0E5QjNCc2dCLGFBOEJzQnRnQixJQUF5QjtRQUF6QyxPQUFBLHVDQUhnQ3VlO09BQ3BDLFdBbTZCRi9CLFNBRkFNLGtCQWw2QmtDNkI7O1dBSUVELGlCQUFKRTtPQUM5QixXQUQ4QkEsTUFDaUIsaUNBaENqRDBCLGNBK0JvQzVCOztPQVM5QjtRQVA2Qkc7UUFBSkM7UUFPekIsT0E4M0JObUYsaUJBcjRCbUNwRjs7bUJBR3RCN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0F0Q3pDc2dCLGFBcUNrQjFEO1dBQ1IsV0F5NUJWSixTQUZBTSxrQkF4NUJjWjtVQUMyQztPQUp2RCxXQUNJLGtDQUZ5QjRDOztXQVFGRTtPQUMzQixXQUE2Qiw0QkExQy9Cc0IsY0F5QzZCdEI7O09BR2lCLElBRGZELGlCQUFKRyxpQkFDbUIsT0E1QzlDb0IsYUEyQytCdkI7T0FDN0IsV0E1Q0Z1QixhQTJDMkJwQjs7T0FHMkIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWV0RHFCLGVBaEJ1Q3hCO09BQ3JDLFlBOUNGcUIsYUE2Q21DbEI7O1dBRVBHLGtCQUMxQixZQSs0QkYvQyxTQUZBTSxrQkE5NEI0QnlDOztXQUVBQyxrQkFDMUIsWUFsREZjLGFBaUQ0QmQ7O1dBRUVHO09BQzVCO2VBMjRCRm5EOzBCQTE0Qm1CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGbkIyZjs7V0FHR0Usa0JBQy9CLFlBdkRGUyxhQXNEaUNUOztXQUVBRSxrQkFDL0IsWUFvaEJGMkMsZUFyaEJpQzNDOztPQUc0QixJQUQ1QlosaUJBQUppQixrQkFDZ0MsT0EzRDdERSxhQTBEaUNuQjtPQUMvQixZQW80QkYzQyxTQUZBTSxrQkFuNEI2QnNEOztHQUNnRDtZQUU3RUs7SUFFSDtLQUlNNEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F1RnBDbkgsZ0JBN0ZHZ0g7S0FLZ0MsT0FJbkMvRyxvQkFWR2dIO0lBR0wsV0FXRUcsb0JBaEJHRCxZQUNBRDtHQVNKO1lBRUNqSCxvQkFFQ3RkO0lBQUssT0FBQSw0QkF1M0JOMGtCLGVBdjNCQzFrQjtHQUE2QjtZQUU5QnlrQjtJQUVGLDhCQUNnQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdnQjtRQUZMdUI7UUFBSmI7UUFBSlI7UUFFYSxPQTFCM0NxRSxlQXdCc0NoRDtRQUVkLE9BMUJ4QmdELGVBd0JrQzdEO09BQ2hDLFdBMDBCRjBCLGVBMzBCOEJsQzs7V0FHRFM7T0FDM0IsV0FBNkIsNEJBNUIvQjRELGdCQTJCNkI1RDs7T0FJTTtRQUZBd0I7UUFBSnRCO1FBRUksT0FBQSw0QkEvQm5DMEQsZ0JBNkJtQ3BDO09BQ2pDLFdBbzJCRjdCLFNBRkFNLGtCQW4yQitCQzs7T0FLSyxJQUZEd0IsaUJBQUpDLGlCQUVLLE9BdTBCcEN5RixpQkF6MEJtQzFGO09BQ2pDLFdBQ0csNEJBb0RMb0csbUJBdEQrQm5HOztPQUtJO1FBRkRFO1FBQUpDO1FBRUssT0FBQSw0QkFyQ25DOEIsZ0JBbUNrQy9CO09BQ2hDLFdBODFCRmxDLFNBRkFNLGtCQTcxQjhCNkI7O1dBR0lFLGlCQUFKRDtPQUM1QixXQXZDRjZCLGVBc0M4QjdCLE9BQUlDOztPQU01QjtRQUprQ1E7UUFBSk47UUFBSkQ7d0JBSVY5ZSxHQUFLLE9BQUEsNEJBazBCM0IrZ0IsWUFsMEJzQi9nQixHQUEwQjtRQUExQyxPQUFBLHVDQUprQ3FmO1FBR2xDLE9BOHpCTjRFLGlCQWowQm9DbEY7T0FDbEM7ZUFDSSw0QkFzQk42RixnQkF4QmdDOUY7Ozs7T0FPcUI7UUFGcEJHO1FBQUpEO1FBRXdCLE9BL0NyRHlCLGVBNkNpQ3hCO3dCQUVkamYsR0FBSyxPQW0xQnhCd2Msa0JBbjFCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRndCZ2Y7O1dBR0VFLGlCQUM3QixXQUlGMkYsa0JBTCtCM0Y7bUJBRUVFLGlCQUMvQixZQTZkRnNELGVBOWRpQ3REOztHQUNxQjtZQUV0RHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTdEbkN5Z0IsZUE0RFk3RDtLQUNSLFdBcTBCSkosU0FGQU0sa0JBcDBCUVo7SUFDNkM7SUFIckQsV0FBQSxrQ0FGTVU7SUFDUixXQXkwQkVKLFNBRkFNLGtCQXgwQkVaO0dBTUk7WUFFTjBJO0lBRUg7S0FHTUU7S0FEQUM7S0FEQXhOO0tBT2dDLE9BeUJuQzhGLGdCQTlCR3lIO0lBRUwsV0FNRUUsb0JBVkd6TixXQUNBd047R0FPSjtZQUVDQztJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBbEZqQ3VFLGdCQWdGZ0NoRDtLQUM5QixXQWl6QkZqQixTQXBCQXVFLFlBOXhCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0FwRkZxRSxlQW1GMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtJQUVMLFdBOHZCRUUsdUJBbHdCRzNOLFdBQ0EwTjtHQU9KO1lBRUM3SCxnQkFFQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTThCLE9BSWpDQyxhQVRHRjtJQUdMLFdBb3hCRTlJLGtCQW54QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCLGtCQUVBRjtHQU1KO1lBRUNHO0lBQ0Y7O1dBQ3lCdEosZUFBTSxXQU03QkMsZUFOdUJEOztXQUNBRSxpQkFBTSxXQWtSN0JxSixlQWxSdUJySjs7V0FDQVMsaUJBQU0sV0F4SDdCNEQsZUF3SHVCNUQ7O09BRW9CO1FBRGZEO1FBQUpHO1FBQ21CLE9BQUEsaUNBblgzQ0MsaUJBa1g0Qko7T0FDMUIsV0F2TEYwRCxhQXNMd0J2RDs7R0FDaUQ7WUFFekVaLGVBRUNuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O09BRVcsSUFEbEJqSixlQUFKVixlQUNzQixPQXpDbkRtQixnQkF3Q2lDVDtPQUMvQixXQXJZRkksZ0JBb1k2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBM052QnNCLG9CQXlOa0NXO09BQ2hDLFdBa3VCRlYsY0FudUI4QnZCOztXQUdHUyxpQkFDL0IsV0F5ckJGaUosdUJBMXJCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkEwa0J2QmdKLHVCQTVrQmlDeEg7T0FDL0IsV0E2dEJGWixjQTl0QjZCWjs7V0FHQ3lCLGlCQUM1QixXQW9oQkZ3SCxvQkFyaEI4QnhIOztXQUVHRyxpQkFDL0IsV0FvZ0JGc0gsb0JBcmdCaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0E2Y0ZtSCw2QkE5YytCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkFvUko4Ryw2QkF0UmtDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQWxFRnlGLGVBaUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BeEV2RHhDLGdCQXVFc0NxQjtPQUNwQyxZQXFXRmdFLGVBdFdrQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0E4WU51bUIsbUJBL1FBaEYsa0JBL0hDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0FrV053bUIsaUJBaFdBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BN0ZuQ3ZKLGdCQXdGR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGRGpLO1FBQUpWO1FBRUssT0FBQSw0QkF4TW5DdUUsZ0JBc01rQzdEO09BQ2hDLFdBMnJCRkosU0FGQU0sa0JBMXJCOEJaOztXQUdFRSxpQkFDOUIsV0F5QkY0RixxQkExQmdDNUY7O09BTzFCO1FBTGlDNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtyQixPQTFCTjRKLGdCQXFCdUN4RztRQUlqQyxPQTVRTkssYUF3UW1DN0M7UUFHN0IsT0FBQSxpQ0F2Y05ULGlCQW9jK0JxQjtPQUM3QixXQXVwQkZDLGVBeHBCMkJ6Qjs7T0FTckI7UUFIMkIwQjtRQUFKeEI7O21CQUloQi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BaGQ5QmdkLGdCQStja0JKO1dBQ1IsV0E0b0JWMEIsZUE3b0JjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIMkJxQztPQUMvQixXQTVCRmtJLGdCQTJCNkIxSjs7T0FVMEI7UUFGcEJzQztRQUFKWDtRQUFKRjtRQUU0QixPQXJDdkRpSSxnQkFtQ21DcEg7UUFFWixPQUFBLDRCQXZTdkIzQixvQkFxUytCZ0I7T0FDN0IsV0FzcEJGZixjQXZwQjJCYTs7T0FJNkIsSUFEbEJLLGlCQUFKRixpQkFDc0IsT0FxT3hEbUksZ0JBdE9zQ2pJO09BQ3BDLFdBdkNGNEgsZ0JBc0NrQzlIOztXQUVGQyxpQkFDOUIsV0FpVEY4RCxlQWxUZ0M5RDs7T0FHd0IsSUFEeEJHLGlCQUFKRCxpQkFDNEIsT0EzQ3hEMkgsZ0JBMENnQzFIO09BQzlCLFdBOFdGZ0ksc0JBL1c0QmpJOztHQUMrQztZQUUzRWtEO0lBRUg7S0FBb0NnRjtLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLGtCQU5pQ0Y7SUFDbkMsV0FuU0UxRyxhQWtTRzJHO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQWxKbkNoSyxnQkE2SUc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BS1E7UUFKaUM3SjtRQUFKYjtRQUFKVjt3QkFJVGxjLEdBQUssT0Ftb0IzQndjLGtCQW5vQnlDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtRQUE1QyxPQUFBLHVDQUppQ3lkO1FBR2pDLE9BeEVOZ0osZ0JBcUVtQzdKO09BQ2pDLFdBMFdGMkssbUJBM1crQnJMOztPQU03QjtRQUR3QkU7UUFFVGlELE9BRlNqRDtRQUViaUMsT0FGYWpDO1FBRWpCUyxPQUZpQlQ7UUFHMEIsT0FnQnBEb0wsc0JBakJpQm5JO1FBQ2EsT0F1akI5Qm9JLGtCQXhqQmFwSjtPQURYLGVBaW9CRjdCLFNBcEJBdUUsWUE1bUJTbEU7O09BR1A7UUFEMkJFO1FBRVowQyxPQUZZMUM7UUFFaEJ3QixPQUZnQnhCO1FBRXBCeUIsT0FGb0J6QjtRQUd1QixPQVlwRHlLLHNCQWJpQi9IO1FBQ2EsT0EwZjlCaUksa0JBM2Zhbko7T0FEWCxlQTZuQkYvQixTQXBCQXVFLFlBeG1CU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQTNRekI4QixlQTBRYS9CO09BRFgsZUF6UUYrQixlQTBRUzdCOztXQUV5QkUsaUJBQ2hDLFdBdGdCRjlCLGdCQXFnQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0ErUEZ3RCxlQWhRZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBdlJGdUUsZUFzUjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQWxoQnpEWSxnQkFpaEJvQ0o7SUFDbEMsV0E2VUYySyxtQkE5VWdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9Bc1ROMm5CLGdCQXBTQXBHLGtCQWxCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVNnQyxPQXhNbkMxSyxnQkFpTUd3SztLQU0wQixPQUs3QnRHLGlCQVpHdUc7SUFJTDtZQTJsQkV0TDt1QkF6bEJnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDK25COzs7WUFHQUg7R0FRSjtZQUVDckc7SUFFSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPaUMsT0F0TnBDN0ssZ0JBaU5HMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQmpNLGVBQzNCLFdBa2tCRk0sU0FGQU0sa0JBamtCNkJaOztXQUVJRSxpQkFDL0IsV0F0TUZELGVBcU1pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDMEUsaUJBb0JvQzNFO09BQ2xDLFdBWUZ3TCx1QkFiZ0N2TDs7T0FJcUIsSUFEbkJ3QixpQkFBSnRCLGlCQUN1QixPQXhCckR3RSxpQkF1QmtDbEQ7T0FDaEMsV0F4QkZrRCxpQkF1QjhCeEU7O09BSUosSUFGYXdCLGlCQUFKQyxpQkFFVCxPQWMxQjZKLGlCQWhCdUM5SjtPQUNyQyxXQTFCRmdELGlCQXlCbUMvQzs7V0FHTEcsaUJBQzVCLFdBcmtCRjNCLGdCQW9rQjhCMkI7bUJBRUdDLGlCQUMvQixXQWtNRjhELGVBbk1pQzlEOztHQUNxQjtZQUV0RHdKO0lBRUYsWUFDNEI7SUFHNkIsSUFGMUJ4TCxlQUFKVixlQUU4QixPQUV2RG1NLGlCQUo2QnpMO0lBQzNCO1lBNmlCRko7dUJBNWlCbUJ4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQUZ4QmtjOztHQUVrRDtZQUUzRW1NO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0EvUHBDbkwsZ0JBMFBHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQnZNLGVBQzNCLFdBeWhCRk0sU0FGQU0sa0JBeGhCNkJaOztXQUVJRSxpQkFDL0IsV0E4QkZxSixlQS9CaUNySjs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEN3TCxpQkFvQm9Dekw7T0FDbEMsV0E3QkZ3TCx1QkE0QmdDdkw7O09BS047UUFGT3dCO1FBQUp0QjtRQUVILE9BQUEsNEJBUTFCMkwsc0JBVmlDcks7T0FDL0IsV0F4QkZnSyxpQkF1QjZCdEw7O1dBR0N5QixpQkFDNUIsV0FwRUYrQyxpQkFtRThCL0M7O1dBRUdHLGlCQUMvQixXQTJKRitELGVBNUppQy9EOztXQUVKQyxpQkFDM0IsV0EyZ0JGcEMsU0FGQU0sa0JBMWdCNkI4Qjs7R0FDZ0M7WUFFN0Q4SjtJQUVGOztPQUdxQyxJQUZEOUwsZUFBSlYsZUFFSyxPQWdXbkM2SixzQkFsV2tDbko7T0FDaEMsV0FxZ0JGSixTQUZBTSxrQkFwZ0I4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9BaWdCbkNJLFNBRkFNLGtCQWpnQm9DdUI7T0FDbEMsV0FrZ0JGN0IsU0FGQU0sa0JBamdCZ0NWOztPQUtHO1FBRkltQztRQUFKMUI7UUFFQSxPQTBWbkNrSixzQkE1VnVDeEg7T0FDckMsV0ErZkYvQixTQUZBTSxrQkE5Zm1DRDs7T0FLQTtRQUZHNkI7UUFBSjNCO1FBRUMsT0EyZm5DUCxTQUZBTSxrQkEzZnNDNEI7T0FDcEMsV0E0ZkZsQyxTQUZBTSxrQkEzZmtDQzs7R0FFOEI7WUFFaEUwSSxlQUVDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7V0FDWDVNLGVBQzNCLFdBaWJGNEosdUJBbGI2QjVKOztPQUlOO1FBRlVVO1FBQUpSO1FBRU4sT0FBQSw0QkFrVXZCMkosdUJBcFVpQ25KO09BQy9CLFdBcWRGZSxjQXRkNkJ2Qjs7V0FHSVM7T0FDL0IsV0FBaUMsNEJBZ1VuQ2tKLHVCQWpVaUNsSjs7V0FFSEUsaUJBQzVCLFdBMFFGaUosb0JBM1E4QmpKOztXQUVHeUIsaUJBQy9CLFdBMFBGeUgsb0JBM1BpQ3pIOztXQUVIRyxpQkFDNUIsV0F1T0ZvSyx3QkF4TzhCcEs7O1dBRUVDLGlCQUM5QixXQXFORm9LLHlCQXROZ0NwSzs7V0FFQ0U7T0FDL0IsV0FBaUMsNEJBbU9uQ2lLLHlCQXBPaUNqSzs7V0FFRkUsaUJBQzdCLFdBaU1GbUgsNkJBbE0rQm5IOztXQUVIRSxpQkFDMUIsWUFtS0Y2SCxzQkFwSzRCN0g7O1dBRUdFLGlCQUM3QixZQTJJRjZKLHlCQTVJK0I3Sjs7V0FFRkc7T0FDM0IsWUFBNkIsNEJBYy9CMkosd0JBZjZCM0o7O1dBRUtDO09BQ2hDO2VBQ0UsNEJBTUo2Ryw2QkFSa0M3Rzs7V0FHREcsa0JBQy9CLFlBOVVGeUYsZUE2VWlDekY7O09BR3NCLElBRGpCdEIsaUJBQUp3QixrQkFDcUIsT0FwVnZEeEMsZ0JBbVZzQ2dCO09BQ3BDLFlBeUZGcUUsZUExRmtDN0M7O0dBQ3dDO1lBRTFFd0csNEJBR0NybUI7SUFBSyxPQTBGTndtQixpQkFwRkFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FzRk53bUIsaUJBcEZBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUVIO0tBR01xQztLQURBQztLQURBQztLQU9pQyxPQXpXcENoTSxnQkFvV0c4TDtJQUVMLFdBTUVHLHFCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkExTTtRQUFKVjtRQUVJLE9BQUEsNEJBcGRuQ3VFLGdCQWtkbUM3RDtPQUNqQyxXQSthRkosU0FGQU0sa0JBOWErQlo7O1dBR0VFLGlCQUMvQixXQVNGbU4scUJBVmlDbk47O09BSVU7UUFGTHFCO1FBQUpZO1FBQUp4QjtRQUVhLE9BdkIzQ2lLLGdCQXFCc0NySjtRQUVkLE9BemR4QmdELGVBdWRrQ3BDO09BQ2hDLFdBMllGQyxlQTVZOEJ6Qjs7V0FHR0UsaUJBQy9CLFdBcURGMkYsZUF0RGlDM0Y7O09BR3dCLElBRHhCd0IsaUJBQUpDLGlCQUM0QixPQTNCekRzSSxnQkEwQmlDdkk7T0FDL0IsV0FrSEZ3SSxzQkFuSDZCdkk7O0dBQytDO1lBRTVFK0s7SUFFSDtLQUFvQ0M7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyx1QkFOaUNGO0lBQ25DLFdBbGVFL0ksZUFpZUdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0E5WXBDeE0sZ0JBeVlHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUUwQzs7V0FDWDVOLGVBQzdCLFdBdERGNEssZ0JBcUQrQjVLOztPQUc3QjtRQUR5QkU7UUFFTjZELEtBRk03RDtRQUVWcUIsS0FGVXJCO1FBRWRRLEtBRmNSO1FBRWxCUyxPQUZrQlQ7UUFNcEIsT0EvZlBxRSxlQTJmcUJSO1FBR2QsT0FzRFA4SixrQkF6RGlCdE07UUFFVixPQTZUUGdLLGtCQS9UYTdLO09BRFgsZUF3WUZKLFNBcEJBdUUsWUFuWFNsRTs7T0FNUDtRQUQ0QkU7UUFFVGlOLE9BRlNqTjtRQUVic0MsT0FGYXRDO1FBRWpCc0IsT0FGaUJ0QjtRQUVyQnlCLE9BRnFCekI7UUFNdkIsT0F0Z0JQMEQsZUFrZ0JxQnVKO1FBR2QsT0ErQ1BELGtCQWxEaUIxSztRQUVWLE9BNlBQcUksa0JBL1Bhcko7T0FEWCxlQWlZRjdCLFNBcEJBdUUsWUE1V1N2Qzs7T0FNUDtRQURnQ0c7UUFFckJKLE9BRnFCSTtRQUV6QkMsT0FGeUJEO1FBR1QsT0ExZ0J6QjhCLGVBeWdCYWxDO09BRFgsZUF4Z0JGa0MsZUF5Z0JTN0I7O1dBRXdCRSxpQkFDL0IsV0FyYUZzRyxlQW9haUN0RzttQkFFQUUsaUJBQy9CLFdBRUYwRCxlQUhpQzFEOztHQUNxQjtZQUV0RDBELGVBRUMxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUFoYXpCd2xCLGFBK1pNNUk7SUFDUixXQThXRUosa0JBOVdheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FvQmdDLE1BOWNuQ2xOLGdCQStiRzZNO0tBYTBCLE1BQUEsV0FwQjVCRCxJQUtFRztLQWMwQixNQW9WN0I1TixrQkFwVjJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBZjlDcXFCO2lCQVNNcnFCO0tBQ0g7TUFBUTRjLEtBREw1YztNQUNDa2MsS0FERGxjO01BR09xZSxPQUZGekI7TUFFRlIsT0FGRVE7TUFHYSxNQW1SM0I0TixpQkFwUmdCbk07TUFDUixVQXdSUm9NLGNBelJZck87S0FETixXQTFpQk5xRSxlQXlpQlV2RTtJQUd1QztJQUwvQyxVQUFBLGlDQVRDb087SUFNTCxXQWdCRVAsa0JBdkJHUSwwQkFJQUo7R0FpQko7WUFFQ0oseUJBQ2lFLHFCQUVYO1lBRXREZCx5QkFHQ2pwQjtJQUFLLE9BRU51bUIsbUJBdE9BOEIsa0JBb09Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU9rQyxNQXplckN2TixnQkFvZUdxTjtJQUVMLFdBQ2dDLFdBUDdCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RCxzQkFFQy9tQjtJQUFLLE9BRU4ybkI7c0JBRjJCM25CLEdBQUssT0FpVGhDd2MsU0FGQU0sa0JBL1MyQjljLEdBQWdDLEdBQTFEQTtHQUE2RDtZQUU5RDJuQixnQkFLQ3NDO0lBQUo7S0FLTVk7S0FEQUM7S0FEQUM7S0FEQUM7S0FTa0MsTUFoZ0JyQzNOLGdCQTBmR3dOO0tBSWdDLE1BS25DdEQsbUJBWEd3RDtJQUlMLFdBQ2lDLFdBUjlCZCxJQUVFZSxrQkFFQUY7R0FRSjtZQUVDdkQsMEJBQ21FLHFCQUVuQjtZQUVoRHBCO0lBR0g7S0FJTThFO0tBREFDO0tBREFDO0tBREFDO0tBUWlDLE1BcGhCcEMvTixnQkE4Z0JHNk47S0FLMkIsTUFBQSxpQ0E5UjlCN0Msa0JBd1JHOEM7SUFJTDtZQThRRTNPLGtCQTdRNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0NvckI7OztZQUdBSDtHQU9KO1lBRUNqQztJQUdIO0tBSU1xQztLQURBQztLQURBQztLQURBQztLQVFnQyxNQXBpQm5Dbk8sZ0JBOGhCR2lPO0tBSzhCLE1BNFBqQzlPLFNBRkFNLGtCQWhRR3lPO0lBSUwsV0E4UEUvTyxrQkE3UDJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjlDd3JCLHFCQUdBSDtHQU9KO1lBRUN0QztJQUdIO0tBSU0wQztLQURBQztLQURBQztLQURBQztLQVNnQyxNQXJqQm5Ddk8sZ0JBOGlCR3FPO0tBTTBCLE1BL1Q3QnJELGlCQXdUR3NEO0lBSUw7WUE4T0VuUDt1QkE1T2dCeGM7NEJBQXFCQSxHQUFLLE9BQUxBLEVBQU07ZUFBdEIsT0FBQSxzQ0FBTEE7Y0FBOEI7Y0FQM0M0ckI7OztZQUdBSDtHQVFKO1lBRUN4RjtJQUVIO0tBR000RjtLQURBQztLQURBQztLQVFtQyxNQXBrQnRDMU8sZ0JBOGpCR3dPO0lBRUw7WUFrQ0VuSywyQkF0Q0dxSztZQUNBRDs7R0FRSjtZQUVDOUY7SUFFSDtLQU1NZ0c7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FxQm1DLE1BL2xCdENoUCxnQkEra0JHMk87S0FjZ0MsTUFpRW5DdEUsa0JBakZHd0U7S0FlRDtPQUFBOzBCQU1GeEssNEJBdEJHeUs7aUJBU01uc0I7S0FDSDtNQUFRNGMsS0FETDVjO01BQ0NrYyxLQUREbGM7TUFHT3FlLE9BRkZ6QjtNQUVGUixPQUZFUTtNQUdhLE1BbUkzQjROLGlCQXBJZ0JuTTtNQUNSLFVBd0lSb00sY0F6SVlyTztLQUROLFdBMXJCTnFFLGVBeXJCVXZFO0lBR3VDO0lBTC9DLFVBQUEsaUNBVENrUTtJQU1MO1lBOE1FNVAsU0FGQU0sa0JBbk5HdVA7Ozs7WUFJQUo7O0dBa0JKO1lBRUN2SztJQUdIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVNpQyxNQS9tQnBDcFAsZ0JBeW1CR2lQO0tBSTJCLE1BSzlCSSwrQkFYR0Y7SUFJTDtZQW9MRWhRLGtCQW5MNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0N5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRStDO0tBR1g7TUFGSDlQO01BQUpWO01BRU8sTUFBQSxpQ0ExdEJwQ3VFLGdCQXd0QmlDN0Q7S0FDL0IsV0F3RUYrUCwyQkF6RTZCelE7O1FBR0NFO0lBQzVCLFdBc0tGSSxTQUZBTSxrQkFySzhCVjtHQUNnQztZQUU5RDJKO0lBRUg7S0FRTTZHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBNEJrQyxNQTFwQnJDOVAsZ0JBb29CR3dQO0tBcUJnQyxNQUFBLGlDQTV2Qm5DcE0sZ0JBc3VCR3FNO0tBcUIrQixNQU1sQ3BGLGtCQTVCR3FGO0tBcUI0QixNQVkvQkssZUFsQ0dKO2lCQWtCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BeHZCMUJ5Z0IsZUF1dkJjN0Q7S0FDUixXQXh2Qk42RCxlQXV2QlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FsQkN3UDtpQkFXTWp0QjtLQUNIO01BQVE0YyxLQURMNWM7TUFDQ2tjLEtBRERsYztNQUdPcWUsT0FGRnpCO01BRUZSLE9BRkVRO01BR2EsTUE2RTNCNE4saUJBOUVnQm5NO01BQ1IsVUFrRlJvTSxjQW5GWXJPO0tBRE4sV0FodkJOcUUsZUErdUJVdkU7SUFHdUM7SUFML0MsVUFBQSxpQ0FYQ2dSO0lBUUw7WUF3SkUxUSxrQkF2SjZDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVmhEbXRCOzs7Ozs7O1lBT0FQO0dBdUJKO1lBRUNsRix5QkFDaUUscUJBRWY7WUFFbEQwRjtJQUNFOztTQUU4QmxSO0tBQzlCLFdBQWdDLDRCQUtsQ21SLDhCQU5nQ25SOztRQUVERTtJQUM3QixXQUErQiw0QkE2QmpDa1Isd0JBOUIrQmxSO0dBRTZCO1lBRTVEaVI7SUFHSDtLQUtNRTtLQURBQztLQURBQztLQURBQztLQURBRTtLQVdnQyxNQTNyQm5DdlEsZ0JBb3JCR2tRO0tBS3lCLE1BQUEsaUNBNXhCNUI5TSxnQkFxeEJHZ047S0FNMEIsTUFNN0JkLDJCQWJHZTtJQUtMO1lBeUdFbFIsa0JBeEcyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRTBDO1NBQ1p6UTtLQUM1QixXQUE4Qiw0QkFyeUJoQ3VFLGdCQW95QjhCdkU7O1FBRUNFO0lBQzdCLFdBQStCLDRCQUVqQ2tSLHdCQUgrQmxSO0dBQ3NDO1lBRXJFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVdnQyxNQXB0Qm5DNVEsZ0JBNnNCR3dRO0tBSzBCLE1BcnpCN0JwTixlQTh5QkdzTjtLQU02QixNQU1oQ3RHLGtCQWJHdUc7SUFLTDtZQWdGRXhSLGtCQS9FMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ2lFLHFCQUViO1lBRXBEK0Msd0JBQytELHFCQUVDO1lBRWhFQztJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSDs7R0FBMkI7WUFFMUQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVVpQyxNQXB2QnBDalIsZ0JBNnVCRzhRO2lCQU15Q251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVAzQm91QjtLQU0yQixNQXIxQjlCM04sZUE4MEJHNE47SUFLTDtZQStDRTdSLGtCQTlDNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQL0NzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDL0k7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BLzFCbER1RSxlQTgxQjRCN0Q7S0FDMUIsV0FtQ0ZKLFNBcEJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBajJCRnFFLGVBZzJCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDRjs7V0FDd0NaLGVBQUpWLDhCQUNzQmxjLEdBQUssT0FBTEEsRUFBTTtPQUE1RCxXQURnQ2tjLElBQ00sc0NBREZVOztXQUVSUixpQkFBTSxXQUFOQTs7O1FBQ1dxQjtRQUFKWTtRQUFKeEI7dUJBRVU3YyxHQUFLLE9BQUxBLEVBQU07T0FEL0MsV0FEK0I2YyxNQUFJd0IsTUFFVixzQ0FGY1o7O1dBR0xjLGlCQUFKeEIsZ0NBQ3NCL2MsR0FBSyxPQUFMQSxFQUFNO09BQTFELFdBRDhCK2MsTUFDTSxzQ0FERndCOztHQUM2QjtZQUVqRXpCLGlCQUFvRDljLEdBQUssT0FBTEEsRUFBTTtZQUUxRHdjLFNBR0N5TjtJQUFKLElBQStCMXBCLGdCQUF0Qlk7SUFDUixXQUF5QixXQUR0QjhvQixJQUFLOW9CLE1BQXNCWjtHQUM2QztZQUV6RW1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07Ozs7T0ExcUNqRGljO09BUUpJO09BY0FFO09BU0FJO09BVUFLO09BZUFPO09BcUhBaUY7T0FRQUc7T0FlQXRDO09BTUE1QjtPQVlBZjtPQWVBNEM7T0FjQTBEO09BK0NBdkQ7T0FlQW5EO09BSUFtSDtPQWtDQUk7T0FXQUQ7T0FhQUk7T0FTQUw7T0FhQXRIO09BSUErSDtPQWFBSTtPQVFBcko7T0FJQXVKO09BUUFHO09BcUNBUztPQUtBRjtPQUlBSztPQWFBSTtPQWdDQTdFO09BUUFrRjtPQWFBSTtPQTJCQUU7T0FRQWxGO09BSUE0RDtPQWdCQTNFO09BYUE0RztPQW9CQUM7T0FRQUM7T0FhQUk7T0FvQkFDO09BZ0JBakQ7T0FJQWtEO09BUUFHO09Bb0NBekM7T0FLQTZDO09BSUFwQztPQWFBd0M7T0FnQkFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FNQThEO09BOEJBdUQ7T0FLQWQ7T0FLQTFDO09BaUJBUTtPQUlBWTtPQW1CQUo7T0FLQXBCO09BZ0JBNkM7T0FnQkFEO09BaUJBOUM7T0FjQUQ7T0EyQkF0RTtPQWdCQWdMO09BU0EzRztPQW1DQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBK0M7T0FLQUM7T0FNQTNFO09BaUJBWDtPQVFBN0c7T0FNQTJGO09BS0FsRDtPQUVBcEQ7T0FLQUg7T0FXQVY7T0FFQU47T0FNQWtJOzs7O0U7Ozs7OztHQzNwQ2M7O0lBbytCWi9pQjtJQUNBQztJQXIrQlk7SUE0Q0M7SUF1N0JILGFBQ1ZELHVCQUNBQzs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7WUNwL0JFcWE7SUFFTix1QkFDNkJDLGVBQ3pCLFdBeVpGQyxlQTFaMkJEO1FBRUFFO0lBQ3pCLFdBRUZDLHdCQUgyQkQ7R0FDOEI7WUFFekRDO0lBR0g7S0FHTUM7S0FEQXhCO0tBREFEO0tBTTBCO09BQUEsaUNBSTdCMEIseUJBVEd6QjtJQUdMLFdBOG9DRTBCLGtCQTdvQzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DNmEsa0JBRUF5QjtHQU1KO1lBRUNDO0lBR0gsSUFBb0NFLHNCQUE5QkM7SUFDTCxXQUtFQyw2QkFOR0QsYUFBOEJEO0dBSWxDO1lBRUNFO0lBRTRDOztXQUNkVCxlQUFNLFdBQU5BOztXQUNFVSxlQUFKUixpQ0FDc0JwYyxHQUFLLE9BQUxBLEVBQU07T0FBdEQsV0FEMEJvYyxNQUNNLHVDQURGUTs7V0FFSEMsaUJBQzNCLFdBRDJCQTttQkFFREUsaUJBQU0sV0FBTkE7O0dBQW9DO1lBRWhFQztJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BK1VwQ0MsZ0JBclZHSjtJQUVMO1lBT0VNLHFCQVpHSDtZQUNBRDtZQUNBRDs7R0FRSjtZQUVDSztJQUVGLDhCQWlId0M7OztXQWhIVHJCLGVBQzNCLFdBa21DRk0sU0FGQU0sa0JBam1DNkJaOztXQUVHRSxpQkFDOUIsV0FtbENGb0IsY0FwbENnQ3BCOztPQUl1QjtRQUZuQnFCO1FBQUpiO1FBQUpDO1FBRTJCLE9BeEJ2REcsZ0JBc0JvQ1M7UUFFYixPQUFBLDRCQXFKdkJDLG9CQXZKZ0NkO09BQzlCLFdBNGtDRmUsY0E3a0M0QmQ7O1dBR0lFO09BQzlCLFdBQWdDLDRCQXVJbEMwQixXQXhJZ0MxQjs7T0FPMUI7UUFMa0NrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLdEIsT0FoQ054QixnQkEyQndDaUQ7UUFJbEMsT0E2Sk5LLGFBaktvQ2pCO1FBRzlCLE9BQUEsaUNBOUJOckMsaUJBMkJnQ3FCO09BQzlCLFdBMGpDRkMsZUEzakM0QkU7O09BU3RCO1FBSDRCRDtRQUFKSTs7bUJBSWpCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F2QzlCZ2QsZ0JBc0NrQko7V0FDUixXQStpQ1YwQixlQWhqQ2NwQztVQUNtQztRQUgzQyxPQUFBLGtDQUg0QnFDO09BQ2hDLFdBbENGdkIsZ0JBaUM4QjJCOztPQVNzQjtRQURsQkQ7UUFBSkU7UUFDc0IsT0FBQSw0QkF1SHBESCxXQXhIa0NDO09BQ2hDLFdBMUNGMUIsZ0JBeUM4QjRCOztPQUdvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FBQSw0QkFxSGxETCxXQXRIZ0NJO09BQzlCLFdBNUNGN0IsZ0JBMkM0QjhCOztXQUVDRTtPQUMzQixXQUE2Qiw0QkE5Qy9CaEMsaUJBNkM2QmdDOztPQUlNO1FBRkdEO1FBQUpHO1FBRUMsT0FBQSxpQ0FqRG5DbEMsaUJBK0NzQytCO09BQ3BDLFdBcWtDRnZDLFNBRkFNLGtCQXBrQ2tDb0M7O1dBR0VELGlCQUFKRztPQUM5QjtlQUQ4QkE7ZUFFWixpQ0FwRHBCcEMsaUJBa0RvQ2lDOztPQVU5QjtRQVA2QkU7UUFBSkk7UUFPekIsT0FBQSxpQ0E1RE52QyxpQkFxRG1DbUM7O21CQUd0Qm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BMUR6Q2dkLGdCQXlEa0JKO1dBQ1IsV0EyakNWSixTQUZBTSxrQkExakNjWjtVQUM4QztPQUoxRCxZQUNJLGtDQUZ5QnFEOztPQVVOO1FBRlNEO1FBQUpFO1FBRUwsT0FzakN6QmhELFNBRkFNLGtCQXRqQ2tDd0M7T0FDaEMsWUE5REZ0QyxnQkE2RDhCd0M7O09BS3lCO1FBRmRDO1FBQUpDO1FBQUpDO1FBRXNCLE9BbEV2RDNDLGdCQWdFeUN5QztRQUVoQixPQW1qQ3pCakQsU0FGQU0sa0JBbmpDcUM0QztPQUNuQyxZQWpFRjFDLGdCQWdFaUMyQzs7V0FHSkU7T0FDM0IsWUFBNkIsNEJBcEUvQjdDLGlCQW1FNkI2Qzs7T0FJZ0I7UUFGRks7UUFBSk47UUFBSkc7UUFFVSxPQUFBLGlDQXZFN0MvQyxpQkFxRTJDa0Q7UUFFbEIsT0F2RXpCbEQsZ0JBcUV1QzRDO09BQ3JDLFlBdEVGNUMsZ0JBcUVtQytDOztPQUlvQixJQURsQkQsa0JBQUpNLGtCQUNzQixPQXpFdkRwRCxnQkF3RXFDOEM7T0FDbkMsWUF6RUY5QyxnQkF3RWlDb0Q7O09BR21CLElBRGxCRCxrQkFBSkssa0JBQ3NCLE9BM0VwRHhELGdCQTBFa0NtRDtPQUNoQyxZQTNFRm5ELGdCQTBFOEJ3RDs7T0FReEI7UUFOc0NSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNdEIsT0FsRk41RCxnQkE0RTRDZ0Q7UUFLdEMsT0EwRU5LLG9CQS9Fd0MySjtRQUlsQyxPQWhGTmhOLGdCQTRFb0MwRDtRQUc5QixPQS9FTjFELGdCQTRFZ0N1RDtPQUM5QixZQStHRkQsYUFoSDRCTTs7T0FRNkIsSUFEbEJELGtCQUFKRyxrQkFDc0IsT0FvS3pETCxlQXJLdUNFO09BQ3JDLFlBcEZGM0QsZ0JBbUZtQzhEOztPQUlvQjtRQUZoQk07UUFBSlA7UUFBSkc7UUFFd0IsT0FpS3ZEUCxlQW5LdUNXO1FBRWQsT0FBQSxpQ0FpS3pCWCxnQkFuS21DSTtPQUNqQyxZQXRGRjdELGdCQXFGK0JnRTs7T0FJb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BNGhDbkQxRSxTQXBCQXVFLFlBemdDaUNFO09BQy9CLFlBekZGakUsZ0JBd0Y2QmtFOztXQUVGQyxrQkFDekIsWUEwaENGM0UsU0FGQU0sa0JBemhDMkJxRTs7T0FJRSxJQUZVRSxrQkFBSkMsa0JBRU4sT0E5RjdCdEUsZ0JBNEZ1Q3FFO09BQ3JDLFlBd2hDRjdFLFNBcEJBdUUsWUFyZ0NtQ087OztRQUdIRzs7bUJBR3BCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BcEdsQ2dkLGdCQW1HaUJKO1dBQ1IsV0FpaENUSixTQXBCQXVFLFlBOS9CYTdFO1VBQ3dDO09BSm5ELFlBQ0Usa0NBRjRCdUY7O09BVzFCO1FBSm9Dd1A7UUFBSnpQO1FBQUpHO1FBSTVCLE9BMUdOM0UsZ0JBc0cwQ2lVO1FBR3BDLE9BOGJOMVAsaUJBamNzQ0M7T0FDcEM7ZUE4Z0NGaEY7MEJBN2dDb0J4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZoQjJoQjs7OztPQU9FLElBRktFLGtCQUFKRCxrQkFFRCxPQTdHcEM1RSxnQkEyR3lDNkU7T0FDdkMsWUFpMUJGSCwyQkFsMUJxQ0U7O1dBR1BFLGtCQUM1QixZQS9HRjlFLGdCQThHOEI4RTs7V0FFRkMsa0JBQzFCLFlBakhGL0UsZ0JBZ0g0QitFOztPQUlIO1FBRlFFO1FBQUpDO1FBRUosT0FBQSxpQ0FvSXpCekIsZ0JBdElpQ3dCO09BQy9CLFlBbkhGakYsZ0JBa0g2QmtGOztXQUdDQyxrQkFDNUIsWUFxV0ZILHFCQXRXOEJHOztPQUlDLElBRktDLGtCQUFKQyxrQkFFRCxPQXpIL0JyRixnQkF1SG9Db0Y7T0FDbEMsWUE2L0JGNUYsa0JBNS9CbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT3FpQjs7V0FHSkUsa0JBQzFCLFlBNGFGaEIsaUJBN2E0QmdCOztPQUc2QixJQUR4QjJPLGtCQUFKek8sa0JBQzRCLE9BN0h6RHpGLGdCQTRIaUNrVTtPQUMvQixZQXNaRjVPLHNCQXZaNkJHOztXQUVBdU8sa0JBQzNCLFlBS0Z4TyxXQU42QndPO21CQUVJRyxrQkFDL0IsWUF1b0JGek8sZUF4b0JpQ3lPOztHQUV1QztZQUV4RTNPO0lBQ0g7S0FBc0QxVDtLQUF4QkM7S0FBeEJDO0tBSXNCLE9Bekl6QmdPLGdCQXFJbURsTztLQUcxQixPQUFBLDRCQUl6QjZULGlCQVAyQjVUO0lBQzdCLFdBTUU0VCxnQkFQRzNUO0dBS0o7WUFFQzJUO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMEIsT0F2SjdCL0YsZ0JBaUpHNkY7S0FLMEIsT0FzQzdCdkMsYUE1Q0d3QztJQUlMO1lBaStCRXRHLGtCQWgrQjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjdDK2lCOzs7WUFHQUg7R0FPSjtZQUVDdkMsMkJBRUYscUJBRW9EO1lBRWxENUI7SUFDSDtLQUdNbkU7S0FEQUM7S0FEQUM7S0FPd0IsT0ExSzNCd0MsZ0JBcUtHMUM7S0FJMEIsT0FBQSxpQ0F6SzdCMEMsaUJBb0tHekM7SUFHTCxXQXFCRStGLGFBekJHOUY7R0FRSjtZQUVDa0Q7SUFFSDtLQUlNNEY7S0FEQUM7S0FEQUU7S0FEQUM7S0FRZ0MsT0FtS25DckcsZ0JBektHa0c7S0FLMEIsT0F2TDdCdkcsZ0JBaUxHeUc7SUFJTCxXQU9FbkQsYUFaR29ELHNCQUdBSjtHQU9KO1lBRUNoRDtJQUNIO0tBSU1zRDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQW9KcEMxRyxnQkExSkd1RztJQUVMLFdBT0VJLGtCQVpHRCxZQUNBRCxVQUNBRDtHQVFKO1lBRUNHO0lBQ21FLDhCQUNyQzs7O1dBQ0g5SCxlQUN6QixXQXU2QkZNLGtCQXY2QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHZCa2M7O09BR3NCO1FBRGZVO1FBQUpSO1FBQ21CLE9BcTZCakRJLGtCQXI2QitEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRG5DNGM7T0FDaEMsV0FwQkYwRCxhQW1COEJsRTs7V0FFRVMsaUJBQzlCLFdBczVCRlcsY0F2NUJnQ1g7O09BR3FCLElBRGhCd0IsaUJBQUp0QixpQkFDb0IsT0FvNUJyRFMsY0FyNUJxQ2E7T0FDbkMsV0FvNUJGYixjQXI1QmlDVDs7V0FFSnlCO09BQzNCLFdBQTZCLDRCQTFCL0I4QixjQXlCNkI5Qjs7T0FJTTtRQUZHRDtRQUFKSTtRQUVDLE9BQUEsaUNBN0JuQzJCLGNBMkJzQy9CO09BQ3BDLFdBNjVCRi9CLFNBRkFNLGtCQTU1QmtDNkI7O1dBR0VELGlCQUFKRTtPQUM5QixXQUQ4QkEsTUFDaUIsaUNBL0JqRDBCLGNBOEJvQzVCOztPQVM5QjtRQVA2Qkc7UUFBSkM7UUFPekIsT0F5M0JObUYsaUJBaDRCbUNwRjs7bUJBR3RCN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0FyQ3pDc2dCLGFBb0NrQjFEO1dBQ1IsV0FvNUJWSixTQUZBTSxrQkFuNUJjWjtVQUMyQztPQUp2RCxXQUNJLGtDQUZ5QjRDOztXQVFGRTtPQUMzQixXQUE2Qiw0QkF6Qy9Cc0IsY0F3QzZCdEI7O09BR2lCLElBRGZELGlCQUFKRyxpQkFDbUIsT0EzQzlDb0IsYUEwQytCdkI7T0FDN0IsV0EzQ0Z1QixhQTBDMkJwQjs7T0FHMkIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWV0RHFCLGVBaEJ1Q3hCO09BQ3JDLFlBN0NGcUIsYUE0Q21DbEI7O1dBRVBHLGtCQUMxQixZQTA0QkYvQyxTQUZBTSxrQkF6NEI0QnlDOztXQUVBQyxrQkFDMUIsWUFqREZjLGFBZ0Q0QmQ7O1dBRUVHO09BQzVCO2VBczRCRm5EOzBCQXI0Qm1CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGbkIyZjs7V0FHR0Usa0JBQy9CLFlBdERGUyxhQXFEaUNUOztXQUVBRSxrQkFDL0IsWUFvaEJGMkMsZUFyaEJpQzNDOztPQUc0QixJQUQ1QlosaUJBQUppQixrQkFDZ0MsT0ExRDdERSxhQXlEaUNuQjtPQUMvQixZQSszQkYzQyxTQUZBTSxrQkE5M0I2QnNEOztHQUNnRDtZQUU3RUs7SUFFSDtLQUlNNEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F1RnBDbkgsZ0JBN0ZHZ0g7SUFFTCxXQVdFSSxvQkFoQkdELFlBQ0FELFVBQ0FEO0dBUUo7WUFFQ2hILG9CQUVDdGQsR0FBSyxPQUFMQSxFQUFNO1lBRVB5a0I7SUFFRiw4QkFDZ0M7OztXQUNIdkksZUFBTSxXQUFOQTs7T0FHZ0I7UUFGTHVCO1FBQUpiO1FBQUpSO1FBRWEsT0ExQjNDcUUsZUF3QnNDaEQ7UUFFZCxPQTFCeEJnRCxlQXdCa0M3RDtPQUNoQyxXQXEwQkYwQixlQXQwQjhCbEM7O1dBR0RTO09BQzNCLFdBQTZCLDRCQTVCL0I0RCxnQkEyQjZCNUQ7O09BSU07UUFGQXdCO1FBQUp0QjtRQUVJLE9BQUEsNEJBL0JuQzBELGdCQTZCbUNwQztPQUNqQyxXQSsxQkY3QixTQUZBTSxrQkE5MUIrQkM7O09BS0ssSUFGRHdCLGlCQUFKQyxpQkFFSyxPQWswQnBDeUYsaUJBcDBCbUMxRjtPQUNqQyxXQUNHLDRCQW9ETG9HLG1CQXREK0JuRzs7T0FLSTtRQUZERTtRQUFKQztRQUVLLE9BQUEsNEJBckNuQzhCLGdCQW1Da0MvQjtPQUNoQyxXQXkxQkZsQyxTQUZBTSxrQkF4MUI4QjZCOztXQUdJRSxpQkFBSkQ7T0FDNUIsV0F2Q0Y2QixlQXNDOEI3QixPQUFJQzs7T0FNNUI7UUFKa0NRO1FBQUpOO1FBQUpEO3dCQUlWOWUsR0FBSyxPQUFBLDRCQTZ6QjNCK2dCLFlBN3pCc0IvZ0IsR0FBMEI7UUFBMUMsT0FBQSx1Q0FKa0NxZjtRQUdsQyxPQXl6Qk40RSxpQkE1ekJvQ2xGO09BQ2xDO2VBQ0ksNEJBc0JONkYsZ0JBeEJnQzlGOzs7O09BT3FCO1FBRnBCRztRQUFKRDtRQUV3QixPQS9DckR5QixlQTZDaUN4Qjt3QkFFZGpmLEdBQUssT0E4MEJ4QndjLGtCQTkwQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZ3QmdmOztXQUdFRSxpQkFDN0IsV0FJRjJGLGtCQUwrQjNGO21CQUVFRSxpQkFDL0IsWUE2ZEZzRCxlQTlkaUN0RDs7R0FDcUI7WUFFdER5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0E3RG5DeWdCLGVBNERZN0Q7S0FDUixXQWcwQkpKLFNBRkFNLGtCQS96QlFaO0lBQzZDO0lBSHJELFdBQUEsa0NBRk1VO0lBQ1IsV0FvMEJFSixTQUZBTSxrQkFuMEJFWjtHQU1JO1lBRU4wSTtJQUVIO0tBR01FO0tBREFDO0tBREF4TjtLQU9nQyxPQXlCbkM4RixnQkE5Qkd5SDtJQUVMLFdBTUVFLG9CQVZHek4sV0FDQXdOO0dBT0o7WUFFQ0M7SUFFRjtLQUdtQztNQUZEdkg7TUFBSmI7TUFBSlY7TUFFUyxPQUFBLDRCQWxGakN1RSxnQkFnRmdDaEQ7S0FDOUIsV0E0eUJGakIsU0FwQkF1RSxZQXp4QndCN0UsS0FBSVU7O1FBR0RSO0lBQ3pCLFdBcEZGcUUsZUFtRjJCckU7R0FDcUI7WUFFaER1STtJQUVIO0tBR01NO0tBREFDO0tBREExTjtLQU9nQyxPQUduQzZGLGdCQVJHNEg7SUFFTCxXQXl2QkVFLHVCQTd2QkczTixXQUNBME47R0FPSjtZQUVDN0gsZ0JBRUNyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU04QixPQUlqQ0MsYUFUR0Y7SUFHTCxXQSt3QkU5SSxrQkE5d0I0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQ3VsQixrQkFFQUY7R0FNSjtZQUVDRztJQUNGOztXQUN5QnRKLGVBQU0sV0FNN0JDLGVBTnVCRDs7V0FDQUUsaUJBQU0sV0FrUjdCcUosZUFsUnVCcko7O1dBQ0FTLGlCQUFNLFdBeEg3QjRELGVBd0h1QjVEOztPQUVvQjtRQURmRDtRQUFKRztRQUNtQixPQUFBLGlDQWxYM0NDLGlCQWlYNEJKO09BQzFCLFdBdExGMEQsYUFxTHdCdkQ7O0dBQ2lEO1lBRXpFWixlQUVDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztPQUVXLElBRGxCakosZUFBSlYsZUFDc0IsT0F6Q25EbUIsZ0JBd0NpQ1Q7T0FDL0IsV0FwWUZJLGdCQW1ZNkJkOztPQUlOO1FBRldtQztRQUFKakM7UUFFUCxPQUFBLDRCQTFOdkJzQixvQkF3TmtDVztPQUNoQyxXQTZ0QkZWLGNBOXRCOEJ2Qjs7V0FHR1MsaUJBQy9CLFdBb3JCRmlKLHVCQXJyQmlDako7O09BSVY7UUFGVTBCO1FBQUp4QjtRQUVOLE9BQUEsNEJBMGtCdkJnSix1QkE1a0JpQ3hIO09BQy9CLFdBd3RCRlosY0F6dEI2Qlo7O1dBR0N5QixpQkFDNUIsV0FvaEJGd0gsb0JBcmhCOEJ4SDs7V0FFR0csaUJBQy9CLFdBb2dCRnNILG9CQXJnQmlDdEg7O1dBRUhDLGlCQUM1QixXQXFJRnNILG9CQXRJOEJ0SDs7V0FFR0U7T0FDL0IsV0FBaUMsNEJBbUluQ29ILHFCQXBJaUNwSDs7V0FFRkUsaUJBQzdCLFdBNmNGbUgsNkJBOWMrQm5IOztXQUVIRSxpQkFDMUIsV0EySEZvRCxzQkE1SDRCcEQ7O1dBRUNFO09BQzNCLFlBQTZCLDRCQWdCL0JnSCx3QkFqQjZCaEg7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBb1JKOEcsNkJBdFJrQzlHOztXQUdIQyxrQkFDN0IsWUFNRjhHLHlCQVArQjlHOztXQUVFRyxrQkFDL0IsWUFsRUZ5RixlQWlFaUN6Rjs7T0FHc0IsSUFEakJqQixpQkFBSm1CLGtCQUNxQixPQXhFdkR4QyxnQkF1RXNDcUI7T0FDcEMsWUFxV0ZnRSxlQXRXa0M3Qzs7R0FDd0M7WUFFMUV5Ryx5QkFHQ3RtQjtJQUFLLE9BOFlOdW1CLG1CQS9RQWhGLGtCQS9IQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9Ba1dOd21CLGlCQWhXQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQTdGbkN2SixnQkF3RkdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkRqSztRQUFKVjtRQUVLLE9BQUEsNEJBeE1uQ3VFLGdCQXNNa0M3RDtPQUNoQyxXQXNyQkZKLFNBRkFNLGtCQXJyQjhCWjs7V0FHRUUsaUJBQzlCLFdBeUJGNEYscUJBMUJnQzVGOztPQU8xQjtRQUxpQzZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLckIsT0ExQk40SixnQkFxQnVDeEc7UUFJakMsT0EzUU5LLGFBdVFtQzdDO1FBRzdCLE9BQUEsaUNBdGNOVCxpQkFtYytCcUI7T0FDN0IsV0FrcEJGQyxlQW5wQjJCekI7O09BU3JCO1FBSDJCMEI7UUFBSnhCOzttQkFJaEIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQS9jOUJnZCxnQkE4Y2tCSjtXQUNSLFdBdW9CVjBCLGVBeG9CY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDJCcUM7T0FDL0IsV0E1QkZrSSxnQkEyQjZCMUo7O09BVTBCO1FBRnBCc0M7UUFBSlg7UUFBSkY7UUFFNEIsT0FyQ3ZEaUksZ0JBbUNtQ3BIO1FBRVosT0FBQSw0QkF0U3ZCM0Isb0JBb1MrQmdCO09BQzdCLFdBaXBCRmYsY0FscEIyQmE7O09BSTZCLElBRGxCSyxpQkFBSkYsaUJBQ3NCLE9BcU94RG1JLGdCQXRPc0NqSTtPQUNwQyxXQXZDRjRILGdCQXNDa0M5SDs7V0FFRkMsaUJBQzlCLFdBaVRGOEQsZUFsVGdDOUQ7O09BR3dCLElBRHhCRyxpQkFBSkQsaUJBQzRCLE9BM0N4RDJILGdCQTBDZ0MxSDtPQUM5QixXQThXRmdJLHNCQS9XNEJqSTs7R0FDK0M7WUFFM0VrRDtJQUVIO0tBQW9DZ0Y7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyxrQkFOaUNGO0lBQ25DLFdBbFNFMUcsYUFpU0cyRztHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0FsSm5DaEssZ0JBNklHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7d0JBSVRsYyxHQUFLLE9BOG5CM0J3YyxrQkE5bkJ5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7UUFBNUMsT0FBQSx1Q0FKaUN5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQTBXRjJLLG1CQTNXK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9BdWpCOUJvSSxrQkF4akJhcEo7T0FEWCxlQTRuQkY3QixTQXBCQXVFLFlBdm1CU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9BMGY5QmlJLGtCQTNmYW5KO09BRFgsZUF3bkJGL0IsU0FwQkF1RSxZQW5tQlN2Qzs7T0FHUDtRQUQrQkc7UUFFcEJELE9BRm9CQztRQUV4QkMsT0FGd0JEO1FBR1IsT0EzUXpCOEIsZUEwUWEvQjtPQURYLGVBelFGK0IsZUEwUVM3Qjs7V0FFeUJFLGlCQUNoQyxXQXJnQkY5QixnQkFvZ0JrQzhCOztXQUVGRSxpQkFDOUIsV0F4S0ZvRyxlQXVLZ0NwRzttQkFFQUUsaUJBQzlCLFdBK1BGd0QsZUFoUWdDeEQ7O0dBQ3FCO1lBRXJEc0k7SUFFRix1QkFDZ0N0TCxlQUM1QixXQXZSRnVFLGVBc1I4QnZFO0lBRzJCLElBRHJCVSxlQUFKUixpQkFDeUIsT0FqaEJ6RFksZ0JBZ2hCb0NKO0lBQ2xDLFdBNlVGMkssbUJBOVVnQ25MO0dBQzRDO1lBRTVFa0csc0JBRUN0aUI7SUFBSyxPQXNUTjJuQixnQkFwU0FwRyxrQkFsQkN2aEI7R0FBdUM7WUFFeENrbUI7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FTZ0MsT0F4TW5DMUssZ0JBaU1Hd0s7S0FNMEIsT0FLN0J0RyxpQkFaR3VHO0lBSUw7WUFzbEJFdEw7dUJBcGxCZ0J4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQVAzQytuQjs7O1lBR0FIO0dBUUo7WUFFQ3JHO0lBRUg7S0FHTXlHO0tBREFDO0tBREFDO0tBT2lDLE9BdE5wQzdLLGdCQWlORzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0JqTSxlQUMzQixXQTZqQkZNLFNBRkFNLGtCQTVqQjZCWjs7V0FFSUUsaUJBQy9CLFdBdE1GRCxlQXFNaUNDOztPQUlELElBRklRLGVBQUpDLGlCQUVBLE9BdEJoQzBFLGlCQW9Cb0MzRTtPQUNsQyxXQVlGd0wsdUJBYmdDdkw7O09BSXFCLElBRG5Cd0IsaUJBQUp0QixpQkFDdUIsT0F4QnJEd0UsaUJBdUJrQ2xEO09BQ2hDLFdBeEJGa0QsaUJBdUI4QnhFOztPQUlKLElBRmF3QixpQkFBSkMsaUJBRVQsT0FjMUI2SixpQkFoQnVDOUo7T0FDckMsV0ExQkZnRCxpQkF5Qm1DL0M7O1dBR0xHLGlCQUM1QixXQXBrQkYzQixnQkFta0I4QjJCO21CQUVHQyxpQkFDL0IsV0FrTUY4RCxlQW5NaUM5RDs7R0FDcUI7WUFFdER3SjtJQUVGLFlBQzRCO0lBRzZCLElBRjFCeEwsZUFBSlYsZUFFOEIsT0FFdkRtTSxpQkFKNkJ6TDtJQUMzQjtZQXdpQkZKO3VCQXZpQm1CeGM7NkJBQXFCQSxHQUFLLE9BQUxBLEVBQU07ZUFBdEIsT0FBQSx1Q0FBTEE7Y0FBOEI7Y0FGeEJrYzs7R0FFa0Q7WUFFM0VtTTtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2lDLE9BL1BwQ25MLGdCQTBQR2lMO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0J2TSxlQUMzQixXQW9oQkZNLFNBRkFNLGtCQW5oQjZCWjs7V0FFSUUsaUJBQy9CLFdBOEJGcUosZUEvQmlDcko7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDd0wsaUJBb0JvQ3pMO09BQ2xDLFdBN0JGd0wsdUJBNEJnQ3ZMOztPQUtOO1FBRk93QjtRQUFKdEI7UUFFSCxPQUFBLDRCQVExQjJMLHNCQVZpQ3JLO09BQy9CLFdBeEJGZ0ssaUJBdUI2QnRMOztXQUdDeUIsaUJBQzVCLFdBcEVGK0MsaUJBbUU4Qi9DOztXQUVHRyxpQkFDL0IsV0EySkYrRCxlQTVKaUMvRDs7V0FFSkMsaUJBQzNCLFdBc2dCRnBDLFNBRkFNLGtCQXJnQjZCOEI7O0dBQ2dDO1lBRTdEOEo7SUFFRjs7T0FHcUMsSUFGRDlMLGVBQUpWLGVBRUssT0FnV25DNkosc0JBbFdrQ25KO09BQ2hDLFdBZ2dCRkosU0FGQU0sa0JBL2Y4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9BNGZuQ0ksU0FGQU0sa0JBNWZvQ3VCO09BQ2xDLFdBNmZGN0IsU0FGQU0sa0JBNWZnQ1Y7O09BS0c7UUFGSW1DO1FBQUoxQjtRQUVBLE9BMFZuQ2tKLHNCQTVWdUN4SDtPQUNyQyxXQTBmRi9CLFNBRkFNLGtCQXpmbUNEOztPQUtBO1FBRkc2QjtRQUFKM0I7UUFFQyxPQXNmbkNQLFNBRkFNLGtCQXRmc0M0QjtPQUNwQyxXQXVmRmxDLFNBRkFNLGtCQXRma0NDOztHQUU4QjtZQUVoRTBJLGVBRUN6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztXQUNYNU0sZUFDM0IsV0E0YUY0Six1QkE3YTZCNUo7O09BSU47UUFGVVU7UUFBSlI7UUFFTixPQUFBLDRCQWtVdkIySix1QkFwVWlDbko7T0FDL0IsV0FnZEZlLGNBamQ2QnZCOztXQUdJUztPQUMvQixXQUFpQyw0QkFnVW5Da0osdUJBalVpQ2xKOztXQUVIRSxpQkFDNUIsV0EwUUZpSixvQkEzUThCako7O1dBRUd5QixpQkFDL0IsV0EwUEZ5SCxvQkEzUGlDekg7O1dBRUhHLGlCQUM1QixXQXVPRm9LLHdCQXhPOEJwSzs7V0FFRUMsaUJBQzlCLFdBcU5Gb0sseUJBdE5nQ3BLOztXQUVDRTtPQUMvQixXQUFpQyw0QkFtT25DaUsseUJBcE9pQ2pLOztXQUVGRSxpQkFDN0IsV0FpTUZtSCw2QkFsTStCbkg7O1dBRUhFLGlCQUMxQixXQW1LRjZILHNCQXBLNEI3SDs7V0FFR0UsaUJBQzdCLFlBMklGNkoseUJBNUkrQjdKOztXQUVGRztPQUMzQixZQUE2Qiw0QkFjL0IySix3QkFmNkIzSjs7V0FFS0M7T0FDaEM7ZUFDRSw0QkFNSjZHLDZCQVJrQzdHOztXQUdERyxrQkFDL0IsWUE5VUZ5RixlQTZVaUN6Rjs7T0FHc0IsSUFEakJ0QixpQkFBSndCLGtCQUNxQixPQXBWdkR4QyxnQkFtVnNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0M3Qzs7R0FDd0M7WUFFMUV3Ryw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BeldwQ2hNLGdCQW9XRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkFwZG5DdUUsZ0JBa2RtQzdEO09BQ2pDLFdBMGFGSixTQUZBTSxrQkF6YStCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0F6ZHhCZ0QsZUF1ZGtDcEM7T0FDaEMsV0FzWUZDLGVBdlk4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWtIRndJLHNCQW5INkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0FsZUUvSSxlQWllR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQTlZcEN4TSxnQkF5WUdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixNQS9mUHFFLGVBMmZxQlI7UUFHZCxNQXNEUDhKLGtCQXpEaUJ0TTtRQUVWLE1BNlRQZ0ssa0JBL1RhN0s7T0FEWCxlQW1ZRkosU0FwQkF1RSxZQTlXU2xFOztPQU1QO1FBRDRCRTtRQUVUaU4sT0FGU2pOO1FBRWJzQyxPQUZhdEM7UUFFakJzQixPQUZpQnRCO1FBRXJCeUIsT0FGcUJ6QjtRQU12QixPQXRnQlAwRCxlQWtnQnFCdUo7UUFHZCxPQStDUEQsa0JBbERpQjFLO1FBRVYsT0E2UFBxSSxrQkEvUGFySjtPQURYLGVBNFhGN0IsU0FwQkF1RSxZQXZXU3ZDOztPQU1QO1FBRGdDRztRQUVyQkosT0FGcUJJO1FBRXpCQyxPQUZ5QkQ7UUFHVCxPQTFnQnpCOEIsZUF5Z0JhbEM7T0FEWCxlQXhnQkZrQyxlQXlnQlM3Qjs7V0FFd0JFLGlCQUMvQixXQXJhRnNHLGVBb2FpQ3RHO21CQUVBRSxpQkFDL0IsV0FFRjBELGVBSGlDMUQ7O0dBQ3FCO1lBRXREMEQsZUFFQzFpQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixNQWhhekJ3bEIsYUErWk01STtJQUNSLFdBeVdFSixrQkF6V2F4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NLLGlCQUtDeUQ7SUFBSjtLQU9NQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQW9CZ0MsTUE5Y25DbE4sZ0JBK2JHNk07S0FhMEIsTUFBQSxXQXBCNUJELElBS0VHO0tBYzBCLE1BK1U3QjVOLGtCQS9VMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FmOUNxcUI7aUJBU01ycUI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFHR29jLE9BRkVRLE9BR04sTUFtUlI2TixjQXBSWXJPO0tBRE4sV0ExaUJOcUUsZUF5aUJVdkU7SUFHZ0I7SUFMeEIsVUFBQSxpQ0FUQ29PO0lBTUwsV0FnQkVQLGtCQXZCR1EsMEJBSUFKO0dBaUJKO1lBRUNKLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQXRPQThCLGtCQW9PQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsTUF6ZXJDdk4sZ0JBb2VHcU47SUFFTCxXQUNnQyxXQVA3QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQsc0JBRUMvbUI7SUFBSyxPQUVOMm5CO3NCQUYyQjNuQixHQUFLLE9BNFNoQ3djLFNBRkFNLGtCQTFTMkI5YyxHQUFnQyxHQUExREE7R0FBNkQ7WUFFOUQybkIsZ0JBS0NzQztJQUFKO0tBS01ZO0tBREFDO0tBREFDO0tBREFDO0tBU2tDLE1BaGdCckMzTixnQkEwZkd3TjtLQUlnQyxNQUtuQ3RELG1CQVhHd0Q7SUFJTCxXQUNpQyxXQVI5QmQsSUFFRWUsa0JBRUFGO0dBUUo7WUFFQ3ZELDBCQUNtRSxxQkFFbkI7WUFFaERwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVFpQyxNQXBoQnBDL04sZ0JBOGdCRzZOO0tBSzJCLE1BQUEsaUNBOVI5QjdDLGtCQXdSRzhDO0lBSUw7WUF5UUUzTyxrQkF4UTRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9Db3JCOzs7WUFHQUg7R0FPSjtZQUVDakM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUFwaUJuQ25PLGdCQThoQkdpTztLQUs4QixNQXVQakM5TyxTQUZBTSxrQkEzUEd5TztJQUlMLFdBeVBFL08sa0JBeFAyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45Q3dyQixxQkFHQUg7R0FPSjtZQUVDdEM7SUFHSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTZ0MsTUFyakJuQ3ZPLGdCQThpQkdxTztLQU0wQixNQS9UN0JyRCxpQkF3VEdzRDtJQUlMO1lBeU9FblA7dUJBdk9nQnhjOzRCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsc0NBQUxBO2NBQThCO2NBUDNDNHJCOzs7WUFHQUg7R0FRSjtZQUVDeEY7SUFFSDtLQUdNNEY7S0FEQUM7S0FEQUM7S0FRbUMsTUFwa0J0QzFPLGdCQThqQkd3TztJQUVMO1lBa0NFbkssMkJBdENHcUs7WUFDQUQ7O0dBUUo7WUFFQzlGO0lBRUg7S0FNTWdHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBcUJtQyxNQS9sQnRDaFAsZ0JBK2tCRzJPO0tBY2dDLE1BaUVuQ3RFLGtCQWpGR3dFO0tBZUQ7T0FBQTswQkFNRnhLLDRCQXRCR3lLO2lCQVNNbnNCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BR0dvYyxPQUZFUSxPQUdOLE1BbUlSNk4sY0FwSVlyTztLQUROLFdBMXJCTnFFLGVBeXJCVXZFO0lBR2dCO0lBTHhCLFVBQUEsaUNBVENrUTtJQU1MO1lBeU1FNVAsU0FGQU0sa0JBOU1HdVA7Ozs7WUFJQUo7O0dBa0JKO1lBRUN2SztJQUdIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVNpQyxNQS9tQnBDcFAsZ0JBeW1CR2lQO0tBSTJCLE1BSzlCSSwrQkFYR0Y7SUFJTDtZQStLRWhRLGtCQTlLNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0N5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRStDO0tBR1g7TUFGSDlQO01BQUpWO01BRU8sTUFBQSxpQ0ExdEJwQ3VFLGdCQXd0QmlDN0Q7S0FDL0IsV0F3RUYrUCwyQkF6RTZCelE7O1FBR0NFO0lBQzVCLFdBaUtGSSxTQUZBTSxrQkFoSzhCVjtHQUNnQztZQUU5RDJKO0lBRUg7S0FRTTZHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBNEJrQyxNQTFwQnJDOVAsZ0JBb29CR3dQO0tBcUJnQyxNQUFBLGlDQTV2Qm5DcE0sZ0JBc3VCR3FNO0tBcUIrQixNQU1sQ3BGLGtCQTVCR3FGO0tBcUI0QixNQVkvQkssZUFsQ0dKO2lCQWtCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BeHZCMUJ5Z0IsZUF1dkJjN0Q7S0FDUixXQXh2Qk42RCxlQXV2QlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FsQkN3UDtpQkFXTWp0QjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUdHb2MsT0FGRVEsT0FHTixNQTZFUjZOLGNBOUVZck87S0FETixXQWh2Qk5xRSxlQSt1QlV2RTtJQUdnQjtJQUx4QixVQUFBLGlDQVhDZ1I7SUFRTDtZQW1KRTFRLGtCQWxKNkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FWaERtdEI7Ozs7Ozs7WUFPQVA7R0F1Qko7WUFFQ2xGLHlCQUNpRSxxQkFFZjtZQUVsRDBGO0lBQ0U7O1NBRThCbFI7S0FDOUIsV0FBZ0MsNEJBS2xDbVIsOEJBTmdDblI7O1FBRURFO0lBQzdCLFdBQStCLDRCQTZCakNrUix3QkE5QitCbFI7R0FFNkI7WUFFNURpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBV2dDLE1BM3JCbkN2USxnQkFvckJHa1E7S0FLeUIsTUFBQSxpQ0E1eEI1QjlNLGdCQXF4QkdnTjtLQU0wQixNQU03QmQsMkJBYkdlO0lBS0w7WUFvR0VsUixrQkFuRzJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDlDNHRCOzs7WUFHQUo7O0dBU0o7WUFFQ2I7SUFFMEM7U0FDWnpRO0tBQzVCLFdBQThCLDRCQXJ5QmhDdUUsZ0JBb3lCOEJ2RTs7UUFFQ0U7SUFDN0IsV0FBK0IsNEJBRWpDa1Isd0JBSCtCbFI7R0FDc0M7WUFFckVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE1BcHRCbkM1USxnQkE2c0JHd1E7S0FLMEIsTUFyekI3QnBOLGVBOHlCR3NOO0tBTTZCLE1BTWhDdEcsa0JBYkd1RztJQUtMO1lBMkVFeFIsa0JBMUUyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDaUUscUJBRWI7WUFFcERnRDtJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSDs7R0FBMEI7WUFFekQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVVpQyxNQS91QnBDalIsZ0JBd3VCRzhRO2lCQU15Q251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVAzQm91QjtLQU0yQixNQWgxQjlCM04sZUF5MEJHNE47SUFLTDtZQStDRTdSLGtCQTlDNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQL0NzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDL0k7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BMTFCbER1RSxlQXkxQjRCN0Q7S0FDMUIsV0FtQ0ZKLFNBcEJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBNTFCRnFFLGVBMjFCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDRjs7V0FDd0NaLGVBQUpWLDhCQUNzQmxjLEdBQUssT0FBTEEsRUFBTTtPQUE1RCxXQURnQ2tjLElBQ00sc0NBREZVOztXQUVSUixpQkFBTSxXQUFOQTs7O1FBQ1dxQjtRQUFKWTtRQUFKeEI7dUJBRVU3YyxHQUFLLE9BQUxBLEVBQU07T0FEL0MsV0FEK0I2YyxNQUFJd0IsTUFFVixzQ0FGY1o7O1dBR0xjLGlCQUFKeEIsZ0NBQ3NCL2MsR0FBSyxPQUFMQSxFQUFNO09BQTFELFdBRDhCK2MsTUFDTSxzQ0FERndCOztHQUM2QjtZQUVqRXpCLGlCQUFvRDljLEdBQUssT0FBTEEsRUFBTTtZQUUxRHdjLFNBR0N5TjtJQUFKLElBQStCMXBCLGdCQUF0Qlk7SUFDUixXQUF5QixXQUR0QjhvQixJQUFLOW9CLE1BQXNCWjtHQUM2QztZQUV6RW1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07Ozs7T0FwcUNqRGljO09BUUpJO09BY0FFO09BU0FJO09BVUFLO09BZUFPO09BcUhBaUY7T0FRQUc7T0FlQXRDO09BTUE1QjtPQVlBZjtPQWVBNEM7T0FjQTBEO09BOENBdkQ7T0FlQW5EO09BSUFtSDtPQWtDQUk7T0FXQUQ7T0FhQUk7T0FTQUw7T0FhQXRIO09BSUErSDtPQWFBSTtPQVFBcko7T0FJQXVKO09BUUFHO09BcUNBUztPQUtBRjtPQUlBSztPQWFBSTtPQWdDQTdFO09BUUFrRjtPQWFBSTtPQTJCQUU7T0FRQWxGO09BSUE0RDtPQWdCQTNFO09BYUE0RztPQW9CQUM7T0FRQUM7T0FhQUk7T0FvQkFDO09BZ0JBakQ7T0FJQWtEO09BUUFHO09Bb0NBekM7T0FLQTZDO09BSUFwQztPQWFBd0M7T0FnQkFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FNQThEO09BOEJBdUQ7T0FLQWQ7T0FLQTFDO09BaUJBUTtPQUlBWTtPQW1CQUo7T0FLQXBCO09BZ0JBNkM7T0FnQkFEO09BaUJBOUM7T0FjQUQ7T0EyQkF0RTtPQWdCQWdMO09BU0EzRztPQW1DQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FNQTNFO09BaUJBWDtPQVFBN0c7T0FNQTJGO09BS0FsRDtPQUVBcEQ7T0FLQUg7T0FXQVY7T0FFQU47T0FNQWtJOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztZQ3BxQ0l6STtJQUVOLHVCQUM2QkMsZUFDekIsV0F5WkZDLGVBMVoyQkQ7UUFFQUU7SUFDekIsV0FFRkMsd0JBSDJCRDtHQUM4QjtZQUV6REM7SUFHSDtLQUdNQztLQURBeEI7S0FEQUQ7S0FNMEI7T0FBQSxpQ0FJN0IwQix5QkFUR3pCO0lBR0wsV0F3b0NFMEIsa0JBdm9DNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FML0M2YSxrQkFFQXlCO0dBTUo7WUFFQ0M7SUFHSCxJQUFvQ0Usc0JBQTlCQztJQUNMLFdBS0VDLDZCQU5HRCxhQUE4QkQ7R0FJbEM7WUFFQ0U7SUFFNEM7O1dBQ2RULGVBQU0sV0FBTkE7O1dBQ0VVLGVBQUpSLGlDQUNzQnBjLEdBQUssT0FBTEEsRUFBTTtPQUF0RCxXQUQwQm9jLE1BQ00sdUNBREZROztXQUVIQyxpQkFDM0IsV0FEMkJBO21CQUVERSxpQkFBTSxXQUFOQTs7R0FBb0M7WUFFaEVDO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0ErVXBDQyxnQkFyVkdKO0lBRUw7WUFPRU0scUJBWkdIO1lBQ0FEO1lBQ0FEOztHQVFKO1lBRUNLO0lBRUYsOEJBaUh3Qzs7O1dBaEhUckIsZUFDM0IsV0E0bENGTSxTQUZBTSxrQkEzbEM2Qlo7O1dBRUdFLGlCQUM5QixXQTZrQ0ZvQixjQTlrQ2dDcEI7O09BSXVCO1FBRm5CcUI7UUFBSmI7UUFBSkM7UUFFMkIsT0F4QnZERyxnQkFzQm9DUztRQUViLE9BQUEsNEJBcUp2QkMsb0JBdkpnQ2Q7T0FDOUIsV0Fza0NGZSxjQXZrQzRCZDs7V0FHSUU7T0FDOUIsV0FBZ0MsNEJBdUlsQzBCLFdBeElnQzFCOztPQU8xQjtRQUxrQ2tEO1FBQUpaO1FBQUpoQjtRQUFKRztRQUt0QixPQWhDTnhCLGdCQTJCd0NpRDtRQUlsQyxPQTZKTkssYUFqS29DakI7UUFHOUIsT0FBQSxpQ0E5Qk5yQyxpQkEyQmdDcUI7T0FDOUIsV0FvakNGQyxlQXJqQzRCRTs7T0FTdEI7UUFINEJEO1FBQUpJOzttQkFJakIzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXZDOUJnZCxnQkFzQ2tCSjtXQUNSLFdBeWlDVjBCLGVBMWlDY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDRCcUM7T0FDaEMsV0FsQ0Z2QixnQkFpQzhCMkI7O09BU3NCO1FBRGxCRDtRQUFKRTtRQUNzQixPQUFBLDRCQXVIcERILFdBeEhrQ0M7T0FDaEMsV0ExQ0YxQixnQkF5QzhCNEI7O09BR29CO1FBRGxCQztRQUFKQztRQUNzQixPQUFBLDRCQXFIbERMLFdBdEhnQ0k7T0FDOUIsV0E1Q0Y3QixnQkEyQzRCOEI7O1dBRUNFO09BQzNCLFdBQTZCLDRCQTlDL0JoQyxpQkE2QzZCZ0M7O09BSU07UUFGR0Q7UUFBSkc7UUFFQyxPQUFBLGlDQWpEbkNsQyxpQkErQ3NDK0I7T0FDcEMsV0ErakNGdkMsU0FGQU0sa0JBOWpDa0NvQzs7V0FHRUQsaUJBQUpHO09BQzlCO2VBRDhCQTtlQUVaLGlDQXBEcEJwQyxpQkFrRG9DaUM7O09BVTlCO1FBUDZCRTtRQUFKSTtRQU96QixPQUFBLGlDQTVETnZDLGlCQXFEbUNtQzs7bUJBR3RCbmY7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0ExRHpDZ2QsZ0JBeURrQko7V0FDUixXQXFqQ1ZKLFNBRkFNLGtCQXBqQ2NaO1VBQzhDO09BSjFELFlBQ0ksa0NBRnlCcUQ7O09BVU47UUFGU0Q7UUFBSkU7UUFFTCxPQWdqQ3pCaEQsU0FGQU0sa0JBaGpDa0N3QztPQUNoQyxZQTlERnRDLGdCQTZEOEJ3Qzs7T0FLeUI7UUFGZEM7UUFBSkM7UUFBSkM7UUFFc0IsT0FsRXZEM0MsZ0JBZ0V5Q3lDO1FBRWhCLE9BNmlDekJqRCxTQUZBTSxrQkE3aUNxQzRDO09BQ25DLFlBakVGMUMsZ0JBZ0VpQzJDOztXQUdKRTtPQUMzQixZQUE2Qiw0QkFwRS9CN0MsaUJBbUU2QjZDOztPQUlnQjtRQUZGSztRQUFKTjtRQUFKRztRQUVVLE9BQUEsaUNBdkU3Qy9DLGlCQXFFMkNrRDtRQUVsQixPQXZFekJsRCxnQkFxRXVDNEM7T0FDckMsWUF0RUY1QyxnQkFxRW1DK0M7O09BSW9CLElBRGxCRCxrQkFBSk0sa0JBQ3NCLE9BekV2RHBELGdCQXdFcUM4QztPQUNuQyxZQXpFRjlDLGdCQXdFaUNvRDs7T0FHbUIsSUFEbEJELGtCQUFKSyxrQkFDc0IsT0EzRXBEeEQsZ0JBMEVrQ21EO09BQ2hDLFlBM0VGbkQsZ0JBMEU4QndEOztPQVF4QjtRQU5zQ1I7UUFBSmdLO1FBQUp0SjtRQUFKSDtRQUFKSztRQU10QixPQWxGTjVELGdCQTRFNENnRDtRQUt0QyxPQTBFTkssb0JBL0V3QzJKO1FBSWxDLE9BaEZOaE4sZ0JBNEVvQzBEO1FBRzlCLE9BL0VOMUQsZ0JBNEVnQ3VEO09BQzlCLFlBK0dGRCxhQWhINEJNOztPQVE2QixJQURsQkQsa0JBQUpHLGtCQUNzQixPQW9LekRMLGVBckt1Q0U7T0FDckMsWUFwRkYzRCxnQkFtRm1DOEQ7O09BSW9CO1FBRmhCTTtRQUFKUDtRQUFKRztRQUV3QixPQWlLdkRQLGVBbkt1Q1c7UUFFZCxPQUFBLGlDQWlLekJYLGdCQW5LbUNJO09BQ2pDLFlBdEZGN0QsZ0JBcUYrQmdFOztPQUlvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FzaENuRDFFLFNBcEJBdUUsWUFuZ0NpQ0U7T0FDL0IsWUF6RkZqRSxnQkF3RjZCa0U7O1dBRUZDLGtCQUN6QixZQW9oQ0YzRSxTQUZBTSxrQkFuaEMyQnFFOztPQUlFLElBRlVFLGtCQUFKQyxrQkFFTixPQTlGN0J0RSxnQkE0RnVDcUU7T0FDckMsWUFraENGN0UsU0FwQkF1RSxZQS8vQm1DTzs7O1FBR0hHOzttQkFHcEJ6aEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFc0IsT0FwR2xDZ2QsZ0JBbUdpQko7V0FDUixXQTJnQ1RKLFNBcEJBdUUsWUF4L0JhN0U7VUFDd0M7T0FKbkQsWUFDRSxrQ0FGNEJ1Rjs7T0FXMUI7UUFKb0N3UDtRQUFKelA7UUFBSkc7UUFJNUIsT0ExR04zRSxnQkFzRzBDaVU7UUFHcEMsT0E4Yk4xUCxpQkFqY3NDQztPQUNwQztlQXdnQ0ZoRjswQkF2Z0NvQnhjO2dDQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2tCQUF0QixPQUFBLHVDQUFMQTtpQkFBOEI7aUJBRmhCMmhCOzs7O09BT0UsSUFGS0Usa0JBQUpELGtCQUVELE9BN0dwQzVFLGdCQTJHeUM2RTtPQUN2QyxZQTYwQkZILDJCQTkwQnFDRTs7V0FHUEUsa0JBQzVCLFlBL0dGOUUsZ0JBOEc4QjhFOztXQUVGQyxrQkFDMUIsWUFqSEYvRSxnQkFnSDRCK0U7O09BSUg7UUFGUUU7UUFBSkM7UUFFSixPQUFBLGlDQW9JekJ6QixnQkF0SWlDd0I7T0FDL0IsWUFuSEZqRixnQkFrSDZCa0Y7O1dBR0NDLGtCQUM1QixZQXFXRkgscUJBdFc4Qkc7O09BSUMsSUFGS0Msa0JBQUpDLGtCQUVELE9BekgvQnJGLGdCQXVIb0NvRjtPQUNsQyxZQXUvQkY1RixrQkF0L0JtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZPcWlCOztXQUdKRSxrQkFDMUIsWUE0YUZoQixpQkE3YTRCZ0I7O09BRzZCLElBRHhCMk8sa0JBQUp6TyxrQkFDNEIsT0E3SHpEekYsZ0JBNEhpQ2tVO09BQy9CLFlBc1pGNU8sc0JBdlo2Qkc7O1dBRUF1TyxrQkFDM0IsWUFLRnhPLFdBTjZCd087bUJBRUlHLGtCQUMvQixZQXVvQkZ6TyxlQXhvQmlDeU87O0dBRXVDO1lBRXhFM087SUFDSDtLQUFzRDFUO0tBQXhCQztLQUF4QkM7S0FJc0IsT0F6SXpCZ08sZ0JBcUltRGxPO0tBRzFCLE9BQUEsNEJBSXpCNlQsaUJBUDJCNVQ7SUFDN0IsV0FNRTRULGdCQVBHM1Q7R0FLSjtZQUVDMlQ7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVEwQixPQXZKN0IvRixnQkFpSkc2RjtLQUswQixPQXNDN0J2QyxhQTVDR3dDO0lBSUw7WUEyOUJFdEcsa0JBMTlCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FON0MraUI7OztZQUdBSDtHQU9KO1lBRUN2QywyQkFFRixxQkFFb0Q7WUFFbEQ1QjtJQUNIO0tBR01uRTtLQURBQztLQURBQztLQU93QixPQTFLM0J3QyxnQkFxS0cxQztLQUkwQixPQUFBLGlDQXpLN0IwQyxpQkFvS0d6QztJQUdMLFdBcUJFK0YsYUF6Qkc5RjtHQVFKO1lBRUNrRDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVFnQyxPQW1LbkNyRyxnQkF6S0drRztLQUswQixPQXZMN0J2RyxnQkFpTEd5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FJTXNEO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9Bb0pwQzFHLGdCQTFKR3VHO0lBRUwsV0FPRUksa0JBWkdELFlBQ0FELFVBQ0FEO0dBUUo7WUFFQ0c7SUFDbUUsOEJBQ3JDOzs7V0FDSDlILGVBQ3pCLFdBaTZCRk0sa0JBajZCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEdkJrYzs7T0FHc0I7UUFEZlU7UUFBSlI7UUFDbUIsT0ErNUJqREksa0JBLzVCK0R4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbkM0YztPQUNoQyxXQXBCRjBELGFBbUI4QmxFOztXQUVFUyxpQkFDOUIsV0FnNUJGVyxjQWo1QmdDWDs7T0FHcUIsSUFEaEJ3QixpQkFBSnRCLGlCQUNvQixPQTg0QnJEUyxjQS80QnFDYTtPQUNuQyxXQTg0QkZiLGNBLzRCaUNUOztXQUVKeUI7T0FDM0IsV0FBNkIsNEJBMUIvQjhCLGNBeUI2QjlCOztPQUlNO1FBRkdEO1FBQUpJO1FBRUMsT0FBQSxpQ0E3Qm5DMkIsY0EyQnNDL0I7T0FDcEMsV0F1NUJGL0IsU0FGQU0sa0JBdDVCa0M2Qjs7V0FHRUQsaUJBQUpFO09BQzlCLFdBRDhCQSxNQUNpQixpQ0EvQmpEMEIsY0E4Qm9DNUI7O09BUzlCO1FBUDZCRztRQUFKQztRQU96QixPQW0zQk5tRixpQkExM0JtQ3BGOzttQkFHdEI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQXJDekNzZ0IsYUFvQ2tCMUQ7V0FDUixXQTg0QlZKLFNBRkFNLGtCQTc0QmNaO1VBQzJDO09BSnZELFdBQ0ksa0NBRnlCNEM7O1dBUUZFO09BQzNCLFdBQTZCLDRCQXpDL0JzQixjQXdDNkJ0Qjs7T0FHaUIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQTNDOUNvQixhQTBDK0J2QjtPQUM3QixXQTNDRnVCLGFBMEMyQnBCOztPQUcyQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BZXREcUIsZUFoQnVDeEI7T0FDckMsWUE3Q0ZxQixhQTRDbUNsQjs7V0FFUEcsa0JBQzFCLFlBbzRCRi9DLFNBRkFNLGtCQW40QjRCeUM7O1dBRUFDLGtCQUMxQixZQWpERmMsYUFnRDRCZDs7V0FFRUc7T0FDNUI7ZUFnNEJGbkQ7MEJBLzNCbUJ4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZuQjJmOztXQUdHRSxrQkFDL0IsWUF0REZTLGFBcURpQ1Q7O1dBRUFFLGtCQUMvQixZQW9oQkYyQyxlQXJoQmlDM0M7O09BRzRCLElBRDVCWixpQkFBSmlCLGtCQUNnQyxPQTFEN0RFLGFBeURpQ25CO09BQy9CLFlBeTNCRjNDLFNBRkFNLGtCQXgzQjZCc0Q7O0dBQ2dEO1lBRTdFSztJQUVIO0tBSU00RDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQXVGcENuSCxnQkE3RkdnSDtJQUVMLFdBV0VJLG9CQWhCR0QsWUFDQUQsVUFDQUQ7R0FRSjtZQUVDaEgsb0JBRUN0ZCxHQUFLLE9BQUxBLEVBQU07WUFFUHlrQjtJQUVGLDhCQUNnQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdnQjtRQUZMdUI7UUFBSmI7UUFBSlI7UUFFYSxPQTFCM0NxRSxlQXdCc0NoRDtRQUVkLE9BMUJ4QmdELGVBd0JrQzdEO09BQ2hDLFdBK3pCRjBCLGVBaDBCOEJsQzs7V0FHRFM7T0FDM0IsV0FBNkIsNEJBNUIvQjRELGdCQTJCNkI1RDs7T0FJTTtRQUZBd0I7UUFBSnRCO1FBRUksT0FBQSw0QkEvQm5DMEQsZ0JBNkJtQ3BDO09BQ2pDLFdBeTFCRjdCLFNBRkFNLGtCQXgxQitCQzs7T0FLSyxJQUZEd0IsaUJBQUpDLGlCQUVLLE9BNHpCcEN5RixpQkE5ekJtQzFGO09BQ2pDLFdBQ0csNEJBb0RMb0csbUJBdEQrQm5HOztPQUtJO1FBRkRFO1FBQUpDO1FBRUssT0FBQSw0QkFyQ25DOEIsZ0JBbUNrQy9CO09BQ2hDLFdBbTFCRmxDLFNBRkFNLGtCQWwxQjhCNkI7O1dBR0lFLGlCQUFKRDtPQUM1QixXQXZDRjZCLGVBc0M4QjdCLE9BQUlDOztPQU01QjtRQUprQ1E7UUFBSk47UUFBSkQ7d0JBSVY5ZSxHQUFLLE9BQUEsNEJBdXpCM0IrZ0IsWUF2ekJzQi9nQixHQUEwQjtRQUExQyxPQUFBLHVDQUprQ3FmO1FBR2xDLE9BbXpCTjRFLGlCQXR6Qm9DbEY7T0FDbEM7ZUFDSSw0QkFzQk42RixnQkF4QmdDOUY7Ozs7T0FPcUI7UUFGcEJHO1FBQUpEO1FBRXdCLE9BL0NyRHlCLGVBNkNpQ3hCO3dCQUVkamYsR0FBSyxPQXcwQnhCd2Msa0JBeDBCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRndCZ2Y7O1dBR0VFLGlCQUM3QixXQUlGMkYsa0JBTCtCM0Y7bUJBRUVFLGlCQUMvQixZQTZkRnNELGVBOWRpQ3REOztHQUNxQjtZQUV0RHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTdEbkN5Z0IsZUE0RFk3RDtLQUNSLFdBMHpCSkosU0FGQU0sa0JBenpCUVo7SUFDNkM7SUFIckQsV0FBQSxrQ0FGTVU7SUFDUixXQTh6QkVKLFNBRkFNLGtCQTd6QkVaO0dBTUk7WUFFTjBJO0lBRUg7S0FHTUU7S0FEQUM7S0FEQXhOO0tBT2dDLE9BeUJuQzhGLGdCQTlCR3lIO0lBRUwsV0FNRUUsb0JBVkd6TixXQUNBd047R0FPSjtZQUVDQztJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBbEZqQ3VFLGdCQWdGZ0NoRDtLQUM5QixXQXN5QkZqQixTQXBCQXVFLFlBbnhCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0FwRkZxRSxlQW1GMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtJQUVMLFdBbXZCRUUsdUJBdnZCRzNOLFdBQ0EwTjtHQU9KO1lBRUM3SCxnQkFFQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTThCLE9BSWpDQyxhQVRHRjtJQUdMLFdBeXdCRTlJLGtCQXh3QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCLGtCQUVBRjtHQU1KO1lBRUNHO0lBQ0Y7O1dBQ3lCdEosZUFBTSxXQU03QkMsZUFOdUJEOztXQUNBRSxpQkFBTSxXQWtSN0JxSixlQWxSdUJySjs7V0FDQVMsaUJBQU0sV0F4SDdCNEQsZUF3SHVCNUQ7O09BRW9CO1FBRGZEO1FBQUpHO1FBQ21CLE9BQUEsaUNBbFgzQ0MsaUJBaVg0Qko7T0FDMUIsV0F0TEYwRCxhQXFMd0J2RDs7R0FDaUQ7WUFFekVaLGVBRUNuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O09BRVcsSUFEbEJqSixlQUFKVixlQUNzQixPQXpDbkRtQixnQkF3Q2lDVDtPQUMvQixXQXBZRkksZ0JBbVk2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBMU52QnNCLG9CQXdOa0NXO09BQ2hDLFdBdXRCRlYsY0F4dEI4QnZCOztXQUdHUyxpQkFDL0IsV0E4cUJGaUosdUJBL3FCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkFza0J2QmdKLHVCQXhrQmlDeEg7T0FDL0IsV0FrdEJGWixjQW50QjZCWjs7V0FHQ3lCLGlCQUM1QixXQWtoQkZ3SCxvQkFuaEI4QnhIOztXQUVHRyxpQkFDL0IsV0FrZ0JGc0gsb0JBbmdCaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0EyY0ZtSCw2QkE1YytCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkFvUko4Ryw2QkF0UmtDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQWxFRnlGLGVBaUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BeEV2RHhDLGdCQXVFc0NxQjtPQUNwQyxZQXFXRmdFLGVBdFdrQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0E0WU51bUIsbUJBN1FBaEYsa0JBL0hDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0FrV053bUIsaUJBaFdBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BN0ZuQ3ZKLGdCQXdGR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGRGpLO1FBQUpWO1FBRUssT0FBQSw0QkF4TW5DdUUsZ0JBc01rQzdEO09BQ2hDLFdBZ3JCRkosU0FGQU0sa0JBL3FCOEJaOztXQUdFRSxpQkFDOUIsV0F5QkY0RixxQkExQmdDNUY7O09BTzFCO1FBTGlDNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtyQixPQTFCTjRKLGdCQXFCdUN4RztRQUlqQyxPQTNRTkssYUF1UW1DN0M7UUFHN0IsT0FBQSxpQ0F0Y05ULGlCQW1jK0JxQjtPQUM3QixXQTRvQkZDLGVBN29CMkJ6Qjs7T0FTckI7UUFIMkIwQjtRQUFKeEI7O21CQUloQi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BL2M5QmdkLGdCQThja0JKO1dBQ1IsV0Fpb0JWMEIsZUFsb0JjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIMkJxQztPQUMvQixXQTVCRmtJLGdCQTJCNkIxSjs7T0FVMEI7UUFGcEJzQztRQUFKWDtRQUFKRjtRQUU0QixPQXJDdkRpSSxnQkFtQ21DcEg7UUFFWixPQUFBLDRCQXRTdkIzQixvQkFvUytCZ0I7T0FDN0IsV0Eyb0JGZixjQTVvQjJCYTs7T0FJNkIsSUFEbEJLLGlCQUFKRixpQkFDc0IsT0FxT3hEbUksZ0JBdE9zQ2pJO09BQ3BDLFdBdkNGNEgsZ0JBc0NrQzlIOztXQUVGQyxpQkFDOUIsV0FpVEY4RCxlQWxUZ0M5RDs7T0FHd0IsSUFEeEJHLGlCQUFKRCxpQkFDNEIsT0EzQ3hEMkgsZ0JBMENnQzFIO09BQzlCLFdBNFdGZ0ksc0JBN1c0QmpJOztHQUMrQztZQUUzRWtEO0lBRUg7S0FBb0NnRjtLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLGtCQU5pQ0Y7SUFDbkMsV0FsU0UxRyxhQWlTRzJHO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQWxKbkNoSyxnQkE2SUc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BS1E7UUFKaUM3SjtRQUFKYjtRQUFKVjt3QkFJVGxjLEdBQUssT0F3bkIzQndjLGtCQXhuQnlDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtRQUE1QyxPQUFBLHVDQUppQ3lkO1FBR2pDLE9BeEVOZ0osZ0JBcUVtQzdKO09BQ2pDLFdBd1dGMkssbUJBelcrQnJMOztPQU03QjtRQUR3QkU7UUFFVGlELE9BRlNqRDtRQUViaUMsT0FGYWpDO1FBRWpCUyxPQUZpQlQ7UUFHMEIsT0FnQnBEb0wsc0JBakJpQm5JO1FBQ2EsT0FpakI5Qm9JLGtCQWxqQmFwSjtPQURYLGVBc25CRjdCLFNBcEJBdUUsWUFqbUJTbEU7O09BR1A7UUFEMkJFO1FBRVowQyxPQUZZMUM7UUFFaEJ3QixPQUZnQnhCO1FBRXBCeUIsT0FGb0J6QjtRQUd1QixPQVlwRHlLLHNCQWJpQi9IO1FBQ2EsT0FvZjlCaUksa0JBcmZhbko7T0FEWCxlQWtuQkYvQixTQXBCQXVFLFlBN2xCU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQTNRekI4QixlQTBRYS9CO09BRFgsZUF6UUYrQixlQTBRUzdCOztXQUV5QkUsaUJBQ2hDLFdBcmdCRjlCLGdCQW9nQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0ErUEZ3RCxlQWhRZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBdlJGdUUsZUFzUjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQWpoQnpEWSxnQkFnaEJvQ0o7SUFDbEMsV0EyVUYySyxtQkE1VWdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9Bb1ROMm5CLGdCQWxTQXBHLGtCQWxCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVNnQyxPQXhNbkMxSyxnQkFpTUd3SztLQU0wQixPQUs3QnRHLGlCQVpHdUc7SUFJTDtZQWdsQkV0TDt1QkE5a0JnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDK25COzs7WUFHQUg7R0FRSjtZQUVDckc7SUFFSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPaUMsT0F0TnBDN0ssZ0JBaU5HMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQmpNLGVBQzNCLFdBdWpCRk0sU0FGQU0sa0JBdGpCNkJaOztXQUVJRSxpQkFDL0IsV0F0TUZELGVBcU1pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDMEUsaUJBb0JvQzNFO09BQ2xDLFdBWUZ3TCx1QkFiZ0N2TDs7T0FJcUIsSUFEbkJ3QixpQkFBSnRCLGlCQUN1QixPQXhCckR3RSxpQkF1QmtDbEQ7T0FDaEMsV0F4QkZrRCxpQkF1QjhCeEU7O09BSUosSUFGYXdCLGlCQUFKQyxpQkFFVCxPQWMxQjZKLGlCQWhCdUM5SjtPQUNyQyxXQTFCRmdELGlCQXlCbUMvQzs7V0FHTEcsaUJBQzVCLFdBcGtCRjNCLGdCQW1rQjhCMkI7bUJBRUdDLGlCQUMvQixXQWtNRjhELGVBbk1pQzlEOztHQUNxQjtZQUV0RHdKO0lBRUYsWUFDNEI7SUFHNkIsSUFGMUJ4TCxlQUFKVixlQUU4QixPQUV2RG1NLGlCQUo2QnpMO0lBQzNCO1lBa2lCRko7dUJBamlCbUJ4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQUZ4QmtjOztHQUVrRDtZQUUzRW1NO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0EvUHBDbkwsZ0JBMFBHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQnZNLGVBQzNCLFdBOGdCRk0sU0FGQU0sa0JBN2dCNkJaOztXQUVJRSxpQkFDL0IsV0E4QkZxSixlQS9CaUNySjs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEN3TCxpQkFvQm9Dekw7T0FDbEMsV0E3QkZ3TCx1QkE0QmdDdkw7O09BS047UUFGT3dCO1FBQUp0QjtRQUVILE9BQUEsNEJBUTFCMkwsc0JBVmlDcks7T0FDL0IsV0F4QkZnSyxpQkF1QjZCdEw7O1dBR0N5QixpQkFDNUIsV0FwRUYrQyxpQkFtRThCL0M7O1dBRUdHLGlCQUMvQixXQTJKRitELGVBNUppQy9EOztXQUVKQyxpQkFDM0IsV0FnZ0JGcEMsU0FGQU0sa0JBL2Y2QjhCOztHQUNnQztZQUU3RDhKO0lBRUY7O09BR3FDLElBRkQ5TCxlQUFKVixlQUVLLE9BNFZuQzZKLHNCQTlWa0NuSjtPQUNoQyxXQTBmRkosU0FGQU0sa0JBemY4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9Bc2ZuQ0ksU0FGQU0sa0JBdGZvQ3VCO09BQ2xDLFdBdWZGN0IsU0FGQU0sa0JBdGZnQ1Y7O09BS0c7UUFGSW1DO1FBQUoxQjtRQUVBLE9Bc1ZuQ2tKLHNCQXhWdUN4SDtPQUNyQyxXQW9mRi9CLFNBRkFNLGtCQW5mbUNEOztPQUtBO1FBRkc2QjtRQUFKM0I7UUFFQyxPQWdmbkNQLFNBRkFNLGtCQWhmc0M0QjtPQUNwQyxXQWlmRmxDLFNBRkFNLGtCQWhma0NDOztHQUU4QjtZQUVoRTBJLGVBRUN6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztXQUNYNU0sZUFDM0IsV0FzYUY0Six1QkF2YTZCNUo7O09BSU47UUFGVVU7UUFBSlI7UUFFTixPQUFBLDRCQThUdkIySix1QkFoVWlDbko7T0FDL0IsV0EwY0ZlLGNBM2M2QnZCOztXQUdJUztPQUMvQixXQUFpQyw0QkE0VG5Da0osdUJBN1RpQ2xKOztXQUVIRSxpQkFDNUIsV0F3UUZpSixvQkF6UThCako7O1dBRUd5QixpQkFDL0IsV0F3UEZ5SCxvQkF6UGlDekg7O1dBRUhHLGlCQUM1QixXQXFPRm9LLHdCQXRPOEJwSzs7V0FFRUMsaUJBQzlCLFdBbU5Gb0sseUJBcE5nQ3BLOztXQUVDRTtPQUMvQixXQUFpQyw0QkFpT25DaUsseUJBbE9pQ2pLOztXQUVGRSxpQkFDN0IsV0ErTEZtSCw2QkFoTStCbkg7O1dBRUhFLGlCQUMxQixXQWlLRjZILHNCQWxLNEI3SDs7V0FFR0UsaUJBQzdCLFlBeUlGNkoseUJBMUkrQjdKOztXQUVGRztPQUMzQixZQUE2Qiw0QkFjL0IySix3QkFmNkIzSjs7V0FFS0M7T0FDaEM7ZUFDRSw0QkFNSjZHLDZCQVJrQzdHOztXQUdERyxrQkFDL0IsWUE5VUZ5RixlQTZVaUN6Rjs7T0FHc0IsSUFEakJ0QixpQkFBSndCLGtCQUNxQixPQXBWdkR4QyxnQkFtVnNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0M3Qzs7R0FDd0M7WUFFMUV3Ryw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BeldwQ2hNLGdCQW9XRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkFwZG5DdUUsZ0JBa2RtQzdEO09BQ2pDLFdBb2FGSixTQUZBTSxrQkFuYStCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0F6ZHhCZ0QsZUF1ZGtDcEM7T0FDaEMsV0FnWUZDLGVBalk4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWdIRndJLHNCQWpINkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0FsZUUvSSxlQWllR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQTlZcEN4TSxnQkF5WUdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixNQS9mUHFFLGVBMmZxQlI7UUFHZCxNQW9EUDhKLGtCQXZEaUJ0TTtRQUVWLE1BdVRQZ0ssa0JBelRhN0s7T0FEWCxlQTZYRkosU0FwQkF1RSxZQXhXU2xFOztPQU1QO1FBRDRCRTtRQUVUaU4sT0FGU2pOO1FBRWJzQyxPQUZhdEM7UUFFakJzQixPQUZpQnRCO1FBRXJCeUIsT0FGcUJ6QjtRQU12QixPQXRnQlAwRCxlQWtnQnFCdUo7UUFHZCxPQTZDUEQsa0JBaERpQjFLO1FBRVYsT0F1UFBxSSxrQkF6UGFySjtPQURYLGVBc1hGN0IsU0FwQkF1RSxZQWpXU3ZDOztPQU1QO1FBRGdDRztRQUVyQkosT0FGcUJJO1FBRXpCQyxPQUZ5QkQ7UUFHVCxPQTFnQnpCOEIsZUF5Z0JhbEM7T0FEWCxlQXhnQkZrQyxlQXlnQlM3Qjs7V0FFd0JFLGlCQUMvQixXQXJhRnNHLGVBb2FpQ3RHO21CQUVBRSxpQkFDL0IsV0FFRjBELGVBSGlDMUQ7O0dBQ3FCO1lBRXREMEQsZUFFQzFpQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixNQWhhekJ3bEIsYUErWk01STtJQUNSLFdBbVdFSixrQkFuV2F4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NLLGlCQUtDeUQ7SUFBSjtLQU9NQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQWtCZ0MsTUE1Y25DbE4sZ0JBK2JHNk07S0FXMEIsTUFBQSxXQWxCNUJELElBS0VHO0tBWTBCLE1BMlU3QjVOLGtCQTNVMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FiOUNxcUI7aUJBU01ycUI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsVUErUTFCeXFCLGNBaFJjN047S0FDUixXQTFpQk42RCxlQXlpQlV2RTtJQUNtRTtJQUgzRSxVQUFBLGlDQVRDb087SUFNTCxXQWNFUCxrQkFyQkdRLDBCQUlBSjtHQWVKO1lBRUNKLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQXBPQThCLGtCQWtPQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsTUF2ZXJDdk4sZ0JBa2VHcU47SUFFTCxXQUNnQyxXQVA3QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQsc0JBRUMvbUI7SUFBSyxPQUVOMm5CO3NCQUYyQjNuQixHQUFLLE9Bd1NoQ3djLFNBRkFNLGtCQXRTMkI5YyxHQUFnQyxHQUExREE7R0FBNkQ7WUFFOUQybkIsZ0JBS0NzQztJQUFKO0tBS01ZO0tBREFDO0tBREFDO0tBREFDO0tBU2tDLE1BOWZyQzNOLGdCQXdmR3dOO0tBSWdDLE1BS25DdEQsbUJBWEd3RDtJQUlMLFdBQ2lDLFdBUjlCZCxJQUVFZSxrQkFFQUY7R0FRSjtZQUVDdkQsMEJBQ21FLHFCQUVuQjtZQUVoRHBCO0lBR0g7S0FJTThFO0tBREFDO0tBREFDO0tBREFDO0tBUWlDLE1BbGhCcEMvTixnQkE0Z0JHNk47S0FLMkIsTUFBQSxpQ0E1UjlCN0Msa0JBc1JHOEM7SUFJTDtZQXFRRTNPLGtCQXBRNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0NvckI7OztZQUdBSDtHQU9KO1lBRUNqQztJQUdIO0tBSU1xQztLQURBQztLQURBQztLQURBQztLQVFnQyxNQWxpQm5Dbk8sZ0JBNGhCR2lPO0tBSzhCLE1BbVBqQzlPLFNBRkFNLGtCQXZQR3lPO0lBSUwsV0FxUEUvTyxrQkFwUDJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjlDd3JCLHFCQUdBSDtHQU9KO1lBRUN0QztJQUdIO0tBSU0wQztLQURBQztLQURBQztLQURBQztLQVNnQyxNQW5qQm5Ddk8sZ0JBNGlCR3FPO0tBTTBCLE1BN1Q3QnJELGlCQXNUR3NEO0lBSUw7WUFxT0VuUDt1QkFuT2dCeGM7NEJBQXFCQSxHQUFLLE9BQUxBLEVBQU07ZUFBdEIsT0FBQSxzQ0FBTEE7Y0FBOEI7Y0FQM0M0ckI7OztZQUdBSDtHQVFKO1lBRUN4RjtJQUVIO0tBR000RjtLQURBQztLQURBQztLQVFtQyxNQWxrQnRDMU8sZ0JBNGpCR3dPO0lBRUw7WUFnQ0VuSywyQkFwQ0dxSztZQUNBRDs7R0FRSjtZQUVDOUY7SUFFSDtLQU1NZ0c7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FtQm1DLE1BM2xCdENoUCxnQkE2a0JHMk87S0FZZ0MsTUErRG5DdEUsa0JBN0VHd0U7S0FhRDtPQUFBOzBCQU1GeEssNEJBcEJHeUs7aUJBU01uc0I7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsVUFpSTFCeXFCLGNBbEljN047S0FDUixXQXhyQk42RCxlQXVyQlV2RTtJQUNtRTtJQUgzRSxVQUFBLGlDQVRDa1E7SUFNTDtZQXFNRTVQLFNBRkFNLGtCQTFNR3VQOzs7O1lBSUFKOztHQWdCSjtZQUVDdks7SUFHSDtLQUlNNEs7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsTUEzbUJwQ3BQLGdCQXFtQkdpUDtLQUkyQixNQUs5QkksK0JBWEdGO0lBSUw7WUE2S0VoUSxrQkE1SzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9DeXNCOztZQUVBRjs7R0FRSjtZQUVDRztJQUUrQztLQUdYO01BRkg5UDtNQUFKVjtNQUVPLE1BQUEsaUNBdHRCcEN1RSxnQkFvdEJpQzdEO0tBQy9CLFdBc0VGK1AsMkJBdkU2QnpROztRQUdDRTtJQUM1QixXQStKRkksU0FGQU0sa0JBOUo4QlY7R0FDZ0M7WUFFOUQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTBCa0MsTUFwcEJyQzlQLGdCQWdvQkd3UDtLQW1CZ0MsTUFBQSxpQ0F0dkJuQ3BNLGdCQWt1QkdxTTtLQW1CK0IsTUFNbENwRixrQkExQkdxRjtLQW1CNEIsTUFZL0JLLGVBaENHSjtpQkFnQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQWx2QjFCeWdCLGVBaXZCYzdEO0tBQ1IsV0FsdkJONkQsZUFpdkJVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBaEJDd1A7aUJBV01qdEI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsVUE2RTFCeXFCLGNBOUVjN047S0FDUixXQTV1Qk42RCxlQTJ1QlV2RTtJQUNtRTtJQUgzRSxVQUFBLGlDQVhDZ1I7SUFRTDtZQWlKRTFRLGtCQWhKNkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FWaERtdEI7Ozs7Ozs7WUFPQVA7R0FxQko7WUFFQ2xGLHlCQUNpRSxxQkFFZjtZQUVsRDBGO0lBQ0U7O1NBRThCbFI7S0FDOUIsV0FBZ0MsNEJBS2xDbVIsOEJBTmdDblI7O1FBRURFO0lBQzdCLFdBQStCLDRCQTZCakNrUix3QkE5QitCbFI7R0FFNkI7WUFFNURpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBV2dDLE1BcnJCbkN2USxnQkE4cUJHa1E7S0FLeUIsTUFBQSxpQ0F0eEI1QjlNLGdCQSt3QkdnTjtLQU0wQixNQU03QmQsMkJBYkdlO0lBS0w7WUFvR0VsUixrQkFuRzJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDlDNHRCOzs7WUFHQUo7O0dBU0o7WUFFQ2I7SUFFMEM7U0FDWnpRO0tBQzVCLFdBQThCLDRCQS94QmhDdUUsZ0JBOHhCOEJ2RTs7UUFFQ0U7SUFDN0IsV0FBK0IsNEJBRWpDa1Isd0JBSCtCbFI7R0FDc0M7WUFFckVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE1BOXNCbkM1USxnQkF1c0JHd1E7S0FLMEIsTUEveUI3QnBOLGVBd3lCR3NOO0tBTTZCLE1BTWhDdEcsa0JBYkd1RztJQUtMO1lBMkVFeFIsa0JBMUUyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDaUUscUJBRWI7WUFFcERnRDtJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSjs7R0FBMkI7WUFFekQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVVpQyxNQXp1QnBDalIsZ0JBa3VCRzhRO2lCQU15Q251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVAzQm91QjtLQU0yQixNQTEwQjlCM04sZUFtMEJHNE47SUFLTDtZQStDRTdSLGtCQTlDNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQL0NzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDL0k7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BcDFCbER1RSxlQW0xQjRCN0Q7S0FDMUIsV0FtQ0ZKLFNBcEJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBdDFCRnFFLGVBcTFCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDRjs7V0FDd0NaLGVBQUpWLDhCQUNzQmxjLEdBQUssT0FBTEEsRUFBTTtPQUE1RCxXQURnQ2tjLElBQ00sc0NBREZVOztXQUVSUixpQkFBTSxXQUFOQTs7O1FBQ1dxQjtRQUFKWTtRQUFKeEI7dUJBRVU3YyxHQUFLLE9BQUxBLEVBQU07T0FEL0MsV0FEK0I2YyxNQUFJd0IsTUFFVixzQ0FGY1o7O1dBR0xjLGlCQUFKeEIsZ0NBQ3NCL2MsR0FBSyxPQUFMQSxFQUFNO09BQTFELFdBRDhCK2MsTUFDTSxzQ0FERndCOztHQUM2QjtZQUVqRXpCLGlCQUFvRDljLEdBQUssT0FBTEEsRUFBTTtZQUUxRHdjLFNBR0N5TjtJQUFKLElBQStCMXBCLGdCQUF0Qlk7SUFDUixXQUF5QixXQUR0QjhvQixJQUFLOW9CLE1BQXNCWjtHQUM2QztZQUV6RW1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07Ozs7T0E5cENqRGljO09BUUpJO09BY0FFO09BU0FJO09BVUFLO09BZUFPO09BcUhBaUY7T0FRQUc7T0FlQXRDO09BTUE1QjtPQVlBZjtPQWVBNEM7T0FjQTBEO09BOENBdkQ7T0FlQW5EO09BSUFtSDtPQWtDQUk7T0FXQUQ7T0FhQUk7T0FTQUw7T0FhQXRIO09BSUErSDtPQWFBSTtPQVFBcko7T0FJQXVKO09BUUFHO09BcUNBUztPQUtBRjtPQUlBSztPQWFBSTtPQWdDQTdFO09BUUFrRjtPQWFBSTtPQTJCQUU7T0FRQWxGO09BSUE0RDtPQWdCQTNFO09BYUE0RztPQW9CQUM7T0FRQUM7T0FhQUk7T0FvQkFDO09BZ0JBakQ7T0FJQWtEO09BUUFHO09Bb0NBekM7T0FLQTZDO09BSUFwQztPQWFBd0M7T0FnQkFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FNQThEO09BNEJBdUQ7T0FLQWQ7T0FLQTFDO09BaUJBUTtPQUlBWTtPQW1CQUo7T0FLQXBCO09BZ0JBNkM7T0FnQkFEO09BaUJBOUM7T0FjQUQ7T0F5QkF0RTtPQWdCQWdMO09BU0EzRztPQWlDQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FNQTNFO09BaUJBWDtPQVFBN0c7T0FNQTJGO09BS0FsRDtPQUVBcEQ7T0FLQUg7T0FXQVY7T0FFQU47T0FNQWtJOzs7O0U7Ozs7OztHQy9vQ2M7O0lBbytCWi9pQjtJQUNBQztJQXIrQlk7SUE0Q0M7SUF1N0JILGFBQ1ZELHVCQUNBQzs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7WUNwL0JFcWE7SUFFTix1QkFDNkJDLGVBQ3pCLFdBa2FGQyxlQW5hMkJEO1FBRUFFO0lBQ3pCLFdBRUZDLHdCQUgyQkQ7R0FDOEI7WUFFekRDO0lBR0g7S0FHTUM7S0FEQXhCO0tBREFEO0tBTTBCO09BQUEsaUNBSTdCMEIseUJBVEd6QjtJQUdMLFdBZ3BDRTBCLGtCQS9vQzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DNmEsa0JBRUF5QjtHQU1KO1lBRUNDO0lBR0gsSUFBb0NFLHNCQUE5QkM7SUFDTCxXQUtFQyw2QkFOR0QsYUFBOEJEO0dBSWxDO1lBRUNFO0lBRTRDOztXQUNkVCxlQUFNLFdBQU5BOztXQUNFVSxlQUFKUixpQ0FDc0JwYyxHQUFLLE9BQUxBLEVBQU07T0FBdEQsV0FEMEJvYyxNQUNNLHVDQURGUTs7V0FFSEMsaUJBQzNCLFdBRDJCQTttQkFFREUsaUJBQU0sV0FBTkE7O0dBQW9DO1lBRWhFQztJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9Bd1ZwQ0MsZ0JBOVZHSjtLQUtnQyxPQXFRbkNLLG9CQTNRR0o7SUFHTCxXQVNFSyxxQkFkR0gsWUFDQUQ7R0FTSjtZQUVDaVgsVUFBVXAwQixHQUFJLE9BZmRnZCxnQkFlVWhkLEdBQXFCO1lBRS9CdWQ7SUFFRiw4QkFpSHdDOzs7V0FoSFRyQixlQUMzQixXQWttQ0ZNLFNBRkFNLGtCQWptQzZCWjs7V0FFR0UsaUJBQzlCLFdBb2xDRm9CLGNBcmxDZ0NwQjs7T0FJdUI7UUFGbkJxQjtRQUFKYjtRQUFKQztRQUUyQixPQTFCdkRHLGdCQXdCb0NTO1FBRWIsT0FBQSw0QkF3SnZCQyxvQkExSmdDZDtPQUM5QixXQTZrQ0ZlLGNBOWtDNEJkOztXQUdJRTtPQUM5QixXQUFnQyw0QkF1SWxDMEIsV0F4SWdDMUI7O09BTzFCO1FBTGtDa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS3RCLE9BbENOeEIsZ0JBNkJ3Q2lEO1FBSWxDLE9BZ0tOSyxhQXBLb0NqQjtRQUc5QixPQUFBLGlDQWhDTnJDLGlCQTZCZ0NxQjtPQUM5QixXQTJqQ0ZDLGVBNWpDNEJFOztPQVN0QjtRQUg0QkQ7UUFBSkk7O21CQUlqQjNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BekM5QmdkLGdCQXdDa0JKO1dBQ1IsV0FnakNWMEIsZUFqakNjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FINEJxQztPQUNoQyxXQXBDRnZCLGdCQW1DOEIyQjs7T0FTc0I7UUFEbEJEO1FBQUpFO1FBQ3NCLE9BQUEsNEJBdUhwREgsV0F4SGtDQztPQUNoQyxXQTVDRjFCLGdCQTJDOEI0Qjs7T0FHb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BQUEsNEJBcUhsREwsV0F0SGdDSTtPQUM5QixXQTlDRjdCLGdCQTZDNEI4Qjs7V0FFQ0U7T0FDM0IsV0FBNkIsNEJBaEQvQmhDLGlCQStDNkJnQzs7T0FJTTtRQUZHRDtRQUFKRztRQUVDLE9BQUEsaUNBbkRuQ2xDLGlCQWlEc0MrQjtPQUNwQyxXQXFrQ0Z2QyxTQUZBTSxrQkFwa0NrQ29DOztXQUdFRCxpQkFBSkc7T0FDOUI7ZUFEOEJBO2VBRVosaUNBdERwQnBDLGlCQW9Eb0NpQzs7T0FVOUI7UUFQNkJFO1FBQUpJO1FBT3pCLE9BQUEsaUNBOUROdkMsaUJBdURtQ21DOzttQkFHdEJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTVEekNnZCxnQkEyRGtCSjtXQUNSLFdBMmpDVkosU0FGQU0sa0JBMWpDY1o7VUFDOEM7T0FKMUQsWUFDSSxrQ0FGeUJxRDs7T0FVTjtRQUZTRDtRQUFKRTtRQUVMLE9Bc2pDekJoRCxTQUZBTSxrQkF0akNrQ3dDO09BQ2hDLFlBaEVGdEMsZ0JBK0Q4QndDOztPQUt5QjtRQUZkQztRQUFKQztRQUFKQztRQUVzQixPQXBFdkQzQyxnQkFrRXlDeUM7UUFFaEIsT0FtakN6QmpELFNBRkFNLGtCQW5qQ3FDNEM7T0FDbkMsWUFuRUYxQyxnQkFrRWlDMkM7O1dBR0pFO09BQzNCLFlBQTZCLDRCQXRFL0I3QyxpQkFxRTZCNkM7O09BSWdCO1FBRkZLO1FBQUpOO1FBQUpHO1FBRVUsT0FBQSxpQ0F6RTdDL0MsaUJBdUUyQ2tEO1FBRWxCLE9BekV6QmxELGdCQXVFdUM0QztPQUNyQyxZQXhFRjVDLGdCQXVFbUMrQzs7T0FJb0IsSUFEbEJELGtCQUFKTSxrQkFDc0IsT0EzRXZEcEQsZ0JBMEVxQzhDO09BQ25DLFlBM0VGOUMsZ0JBMEVpQ29EOztPQUdtQixJQURsQkQsa0JBQUpLLGtCQUNzQixPQTdFcER4RCxnQkE0RWtDbUQ7T0FDaEMsWUE3RUZuRCxnQkE0RThCd0Q7O09BUXhCO1FBTnNDUjtRQUFKZ0s7UUFBSnRKO1FBQUpIO1FBQUpLO1FBTXRCLE9BcEZONUQsZ0JBOEU0Q2dEO1FBS3RDLE9BMEVOSyxvQkEvRXdDMko7UUFJbEMsT0FsRk5oTixnQkE4RW9DMEQ7UUFHOUIsT0FqRk4xRCxnQkE4RWdDdUQ7T0FDOUIsWUFrSEZELGFBbkg0Qk07O09BUTZCLElBRGxCRCxrQkFBSkcsa0JBQ3NCLE9BeUt6REwsZUExS3VDRTtPQUNyQyxZQXRGRjNELGdCQXFGbUM4RDs7T0FJb0I7UUFGaEJNO1FBQUpQO1FBQUpHO1FBRXdCLE9Bc0t2RFAsZUF4S3VDVztRQUVkLE9BQUEsaUNBc0t6QlgsZ0JBeEttQ0k7T0FDakMsWUF4RkY3RCxnQkF1RitCZ0U7O09BSW9CO1FBRGxCQztRQUFKQztRQUNzQixPQTRoQ25EMUUsU0FuQkF1RSxZQTFnQ2lDRTtPQUMvQixZQTNGRmpFLGdCQTBGNkJrRTs7V0FFRkMsa0JBQ3pCLFlBMGhDRjNFLFNBRkFNLGtCQXpoQzJCcUU7O09BSUUsSUFGVUUsa0JBQUpDLGtCQUVOLE9BaEc3QnRFLGdCQThGdUNxRTtPQUNyQyxZQXdoQ0Y3RSxTQW5CQXVFLFlBdGdDbUNPOzs7UUFHSEc7O21CQUdwQnpoQjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVzQixPQXRHbENnZCxnQkFxR2lCSjtXQUNSLFdBaWhDVEosU0FuQkF1RSxZQS8vQmE3RTtVQUN3QztPQUpuRCxZQUNFLGtDQUY0QnVGOztPQVcxQjtRQUpvQ3dQO1FBQUp6UDtRQUFKRztRQUk1QixPQTVHTjNFLGdCQXdHMENpVTtRQUdwQyxPQXFjTjFQLGlCQXhjc0NDO09BQ3BDO2VBOGdDRmhGOzBCQTdnQ29CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGaEIyaEI7Ozs7T0FPRSxJQUZLRSxrQkFBSkQsa0JBRUQsT0EvR3BDNUUsZ0JBNkd5QzZFO09BQ3ZDLFlBbzFCRkgsMkJBcjFCcUNFOztXQUdQRSxrQkFDNUIsWUFqSEY5RSxnQkFnSDhCOEU7O1dBRUZDLGtCQUMxQixZQW5IRi9FLGdCQWtINEIrRTs7T0FJSDtRQUZRRTtRQUFKQztRQUVKLE9BQUEsaUNBeUl6QnpCLGdCQTNJaUN3QjtPQUMvQixZQXJIRmpGLGdCQW9INkJrRjs7V0FHQ0Msa0JBQzVCLFlBNFdGSCxxQkE3VzhCRzs7T0FJQyxJQUZLQyxrQkFBSkMsa0JBRUQsT0EzSC9CckYsZ0JBeUhvQ29GO09BQ2xDLFlBNi9CRjVGLGtCQTUvQm1CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk9xaUI7O1dBR0pFLGtCQUMxQixZQW1iRmhCLGlCQXBiNEJnQjs7T0FHNkIsSUFEeEIyTyxrQkFBSnpPLGtCQUM0QixPQS9IekR6RixnQkE4SGlDa1U7T0FDL0IsWUE2WkY1TyxzQkE5WjZCRzs7V0FFQXVPLGtCQUMzQixZQUtGeE8sV0FONkJ3TzttQkFFSUcsa0JBQy9CLFlBOG9CRnpPLGVBL29CaUN5Tzs7R0FFdUM7WUFFeEUzTztJQUNIO0tBQXNEMVQ7S0FBeEJDO0tBQXhCQztLQUlzQixPQTNJekJnTyxnQkF1SW1EbE87S0FHMUIsT0FBQSw0QkFJekI2VCxpQkFQMkI1VDtJQUM3QixXQU1FNFQsZ0JBUEczVDtHQUtKO1lBRUMyVDtJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBUTBCLE9Beko3Qi9GLGdCQW1KRzZGO0tBSzBCLE9BeUM3QnZDLGFBL0NHd0M7SUFJTDtZQWkrQkV0RyxrQkFoK0IwQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU43QytpQjs7O1lBR0FIO0dBT0o7WUFFQ3ZDLDJCQUVGLHFCQUVvRDtZQUVsRDVCO0lBQ0g7S0FHTW5FO0tBREFDO0tBREFDO0tBT3dCLE9BNUszQndDLGdCQXVLRzFDO0tBSTBCLE9BQUEsaUNBM0s3QjBDLGlCQXNLR3pDO0lBR0wsV0F3QkUrRixhQTVCRzlGO0dBUUo7WUFFQzZaLFdBQ0NyMEIsR0FBSyxPQUFBLDRCQWJOeWUsV0FhQ3plLEdBQXlCO1lBRTFCMGQ7SUFFSDtLQUlNNEY7S0FEQUM7S0FEQUU7S0FEQUM7S0FRZ0MsT0F1S25DckcsZ0JBN0tHa0c7S0FLMEIsT0E1TDdCdkcsZ0JBc0xHeUc7SUFJTCxXQU9FbkQsYUFaR29ELHNCQUdBSjtHQU9KO1lBRUNoRDtJQUNIO0tBSU1zRDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQXdKcEMxRyxnQkE5Skd1RztLQUtnQyxPQXFFbkN0RyxvQkEzRUd1RztJQUdMLFdBU0VHLGtCQWRHRCxZQUNBRDtHQVNKO1lBRUN3USxTQUFTdDBCLEdBQUksT0FkYnNnQixhQWNTdGdCLEdBQWtCO1lBRTNCZ2tCO0lBQ21FLDhCQUNyQzs7O1dBQ0g5SCxlQUN6QixXQWs2QkZNLGtCQWw2QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHZCa2M7O09BR3NCO1FBRGZVO1FBQUpSO1FBQ21CLE9BZzZCakRJLGtCQWg2QitEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRG5DNGM7T0FDaEMsV0F0QkYwRCxhQXFCOEJsRTs7V0FFRVMsaUJBQzlCLFdBazVCRlcsY0FuNUJnQ1g7O09BR3FCLElBRGhCd0IsaUJBQUp0QixpQkFDb0IsT0FnNUJyRFMsY0FqNUJxQ2E7T0FDbkMsV0FnNUJGYixjQWo1QmlDVDs7V0FFSnlCO09BQzNCLFdBQTZCLDRCQTVCL0I4QixjQTJCNkI5Qjs7T0FJTTtRQUZHRDtRQUFKSTtRQUVDLE9BQUEsaUNBL0JuQzJCLGNBNkJzQy9CO09BQ3BDLFdBdzVCRi9CLFNBRkFNLGtCQXY1QmtDNkI7O1dBR0VELGlCQUFKRTtPQUM5QixXQUQ4QkEsTUFDaUIsaUNBakNqRDBCLGNBZ0NvQzVCOztPQVM5QjtRQVA2Qkc7UUFBSkM7UUFPekIsT0FxM0JObUYsaUJBNTNCbUNwRjs7bUJBR3RCN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0F2Q3pDc2dCLGFBc0NrQjFEO1dBQ1IsV0ErNEJWSixTQUZBTSxrQkE5NEJjWjtVQUMyQztPQUp2RCxXQUNJLGtDQUZ5QjRDOztXQVFGRTtPQUMzQixXQUE2Qiw0QkEzQy9Cc0IsY0EwQzZCdEI7O09BR2lCLElBRGZELGlCQUFKRyxpQkFDbUIsT0E3QzlDb0IsYUE0QytCdkI7T0FDN0IsV0E3Q0Z1QixhQTRDMkJwQjs7T0FHMkIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWV0RHFCLGVBaEJ1Q3hCO09BQ3JDLFlBL0NGcUIsYUE4Q21DbEI7O1dBRVBHLGtCQUMxQixZQXE0QkYvQyxTQUZBTSxrQkFwNEI0QnlDOztXQUVBQyxrQkFDMUIsWUFuREZjLGFBa0Q0QmQ7O1dBRUVHO09BQzVCO2VBaTRCRm5EOzBCQWg0Qm1CeGM7Z0NBQXFCQSxHQUFLLE9BQUxBLEVBQU07a0JBQXRCLE9BQUEsdUNBQUxBO2lCQUE4QjtpQkFGbkIyZjs7V0FHR0Usa0JBQy9CLFlBeERGUyxhQXVEaUNUOztXQUVBRSxrQkFDL0IsWUFzaEJGMkMsZUF2aEJpQzNDOztPQUc0QixJQUQ1QlosaUJBQUppQixrQkFDZ0MsT0E1RDdERSxhQTJEaUNuQjtPQUMvQixZQTAzQkYzQyxTQUZBTSxrQkF6M0I2QnNEOztHQUNnRDtZQUU3RUs7SUFFSDtLQUlNNEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F5RnBDbkgsZ0JBL0ZHZ0g7S0FLZ0MsT0FNbkMvRyxvQkFaR2dIO0lBR0wsV0FhRUcsb0JBbEJHRCxZQUNBRDtHQVNKO1lBRUNnUSxTQUFTdjBCLEdBQUksT0FmYnlnQixlQWVTemdCLEdBQW9CO1lBRTdCc2Qsb0JBRUN0ZDtJQUFLLE9BQUEsNEJBMjJCTjBrQixlQTMyQkMxa0I7R0FBNkI7WUFFOUJ5a0I7SUFFRiw4QkFDZ0M7OztXQUNIdkksZUFBTSxXQUFOQTs7T0FHZ0I7UUFGTHVCO1FBQUpiO1FBQUpSO1FBRWEsT0E1QjNDcUUsZUEwQnNDaEQ7UUFFZCxPQTVCeEJnRCxlQTBCa0M3RDtPQUNoQyxXQSt6QkYwQixlQWgwQjhCbEM7O1dBR0RTO09BQzNCLFdBQTZCLDRCQTlCL0I0RCxnQkE2QjZCNUQ7O09BSU07UUFGQXdCO1FBQUp0QjtRQUVJLE9BQUEsNEJBakNuQzBELGdCQStCbUNwQztPQUNqQyxXQXcxQkY3QixTQUZBTSxrQkF2MUIrQkM7O09BS0ssSUFGRHdCLGlCQUFKQyxpQkFFSyxPQTR6QnBDeUYsaUJBOXpCbUMxRjtPQUNqQyxXQUNHLDRCQW9ETG9HLG1CQXREK0JuRzs7T0FLSTtRQUZERTtRQUFKQztRQUVLLE9BQUEsNEJBdkNuQzhCLGdCQXFDa0MvQjtPQUNoQyxXQWsxQkZsQyxTQUZBTSxrQkFqMUI4QjZCOztXQUdJRSxpQkFBSkQ7T0FDNUIsV0F6Q0Y2QixlQXdDOEI3QixPQUFJQzs7T0FNNUI7UUFKa0NRO1FBQUpOO1FBQUpEO3dCQUlWOWUsR0FBSyxPQUFBLDRCQXV6QjNCK2dCLFlBdnpCc0IvZ0IsR0FBMEI7UUFBMUMsT0FBQSx1Q0FKa0NxZjtRQUdsQyxPQW16Qk40RSxpQkF0ekJvQ2xGO09BQ2xDO2VBQ0ksNEJBc0JONkYsZ0JBeEJnQzlGOzs7O09BT3FCO1FBRnBCRztRQUFKRDtRQUV3QixPQWpEckR5QixlQStDaUN4Qjt3QkFFZGpmLEdBQUssT0F1MEJ4QndjLGtCQXYwQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZ3QmdmOztXQUdFRSxpQkFDN0IsV0FJRjJGLGtCQUwrQjNGO21CQUVFRSxpQkFDL0IsWUE2ZEZzRCxlQTlkaUN0RDs7R0FDcUI7WUFFdER5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0EvRG5DeWdCLGVBOERZN0Q7S0FDUixXQXl6QkpKLFNBRkFNLGtCQXh6QlFaO0lBQzZDO0lBSHJELFdBQUEsa0NBRk1VO0lBQ1IsV0E2ekJFSixTQUZBTSxrQkE1ekJFWjtHQU1JO1lBRU4wSTtJQUVIO0tBR01FO0tBREFDO0tBREF4TjtLQU9nQyxPQXlCbkM4RixnQkE5Qkd5SDtJQUVMLFdBTUVFLG9CQVZHek4sV0FDQXdOO0dBT0o7WUFFQ0M7SUFFRjtLQUdtQztNQUZEdkg7TUFBSmI7TUFBSlY7TUFFUyxPQUFBLDRCQXBGakN1RSxnQkFrRmdDaEQ7S0FDOUIsV0FxeUJGakIsU0FuQkF1RSxZQW54QndCN0UsS0FBSVU7O1FBR0RSO0lBQ3pCLFdBdEZGcUUsZUFxRjJCckU7R0FDcUI7WUFFaER1STtJQUVIO0tBR01NO0tBREFDO0tBREExTjtLQU9nQyxPQUduQzZGLGdCQVJHNEg7SUFFTCxXQW12QkVFLHVCQXZ2QkczTixXQUNBME47R0FPSjtZQUVDN0gsZ0JBRUNyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU04QixPQUlqQ0MsYUFUR0Y7SUFHTCxXQXd3QkU5SSxrQkF2d0I0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQ3VsQixrQkFFQUY7R0FNSjtZQUVDRztJQUNGOztXQUN5QnRKLGVBQU0sV0FNN0JDLGVBTnVCRDs7V0FDQUUsaUJBQU0sV0FrUjdCcUosZUFsUnVCcko7O1dBQ0FTLGlCQUFNLFdBMUg3QjRELGVBMEh1QjVEOztPQUVvQjtRQURmRDtRQUFKRztRQUNtQixPQUFBLGlDQTNYM0NDLGlCQTBYNEJKO09BQzFCLFdBMUxGMEQsYUF5THdCdkQ7O0dBQ2lEO1lBRXpFWixlQUVDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztPQUVXLElBRGxCakosZUFBSlYsZUFDc0IsT0F6Q25EbUIsZ0JBd0NpQ1Q7T0FDL0IsV0E3WUZJLGdCQTRZNkJkOztPQUlOO1FBRldtQztRQUFKakM7UUFFUCxPQUFBLDRCQTlOdkJzQixvQkE0TmtDVztPQUNoQyxXQXV0QkZWLGNBeHRCOEJ2Qjs7V0FHR1MsaUJBQy9CLFdBOHFCRmlKLHVCQS9xQmlDako7O09BSVY7UUFGVTBCO1FBQUp4QjtRQUVOLE9BQUEsNEJBc2tCdkJnSix1QkF4a0JpQ3hIO09BQy9CLFdBa3RCRlosY0FudEI2Qlo7O1dBR0N5QixpQkFDNUIsV0FraEJGd0gsb0JBbmhCOEJ4SDs7V0FFR0csaUJBQy9CLFdBa2dCRnNILG9CQW5nQmlDdEg7O1dBRUhDLGlCQUM1QixXQXFJRnNILG9CQXRJOEJ0SDs7V0FFR0U7T0FDL0IsV0FBaUMsNEJBbUluQ29ILHFCQXBJaUNwSDs7V0FFRkUsaUJBQzdCLFdBMmNGbUgsNkJBNWMrQm5IOztXQUVIRSxpQkFDMUIsV0EySEZvRCxzQkE1SDRCcEQ7O1dBRUNFO09BQzNCLFlBQTZCLDRCQWdCL0JnSCx3QkFqQjZCaEg7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBb1JKOEcsNkJBdFJrQzlHOztXQUdIQyxrQkFDN0IsWUFNRjhHLHlCQVArQjlHOztXQUVFRyxrQkFDL0IsWUFsRUZ5RixlQWlFaUN6Rjs7T0FHc0IsSUFEakJqQixpQkFBSm1CLGtCQUNxQixPQXhFdkR4QyxnQkF1RXNDcUI7T0FDcEMsWUFxV0ZnRSxlQXRXa0M3Qzs7R0FDd0M7WUFFMUV5Ryx5QkFHQ3RtQjtJQUFLLE9BNFlOdW1CLG1CQTdRQWhGLGtCQS9IQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9Ba1dOd21CLGlCQWhXQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQTdGbkN2SixnQkF3RkdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkRqSztRQUFKVjtRQUVLLE9BQUEsNEJBMU1uQ3VFLGdCQXdNa0M3RDtPQUNoQyxXQStxQkZKLFNBRkFNLGtCQTlxQjhCWjs7V0FHRUUsaUJBQzlCLFdBeUJGNEYscUJBMUJnQzVGOztPQU8xQjtRQUxpQzZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLckIsT0ExQk40SixnQkFxQnVDeEc7UUFJakMsT0EvUU5LLGFBMlFtQzdDO1FBRzdCLE9BQUEsaUNBL2NOVCxpQkE0YytCcUI7T0FDN0IsV0E0b0JGQyxlQTdvQjJCekI7O09BU3JCO1FBSDJCMEI7UUFBSnhCOzttQkFJaEIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXhkOUJnZCxnQkF1ZGtCSjtXQUNSLFdBaW9CVjBCLGVBbG9CY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDJCcUM7T0FDL0IsV0E1QkZrSSxnQkEyQjZCMUo7O09BVTBCO1FBRnBCc0M7UUFBSlg7UUFBSkY7UUFFNEIsT0FyQ3ZEaUksZ0JBbUNtQ3BIO1FBRVosT0FBQSw0QkExU3ZCM0Isb0JBd1MrQmdCO09BQzdCLFdBMm9CRmYsY0E1b0IyQmE7O09BSTZCLElBRGxCSyxpQkFBSkYsaUJBQ3NCLE9BcU94RG1JLGdCQXRPc0NqSTtPQUNwQyxXQXZDRjRILGdCQXNDa0M5SDs7V0FFRkMsaUJBQzlCLFdBaVRGOEQsZUFsVGdDOUQ7O09BR3dCLElBRHhCRyxpQkFBSkQsaUJBQzRCLE9BM0N4RDJILGdCQTBDZ0MxSDtPQUM5QixXQTRXRmdJLHNCQTdXNEJqSTs7R0FDK0M7WUFFM0VrRDtJQUVIO0tBQW9DZ0Y7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyxrQkFOaUNGO0lBQ25DLFdBdFNFMUcsYUFxU0cyRztHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0FsSm5DaEssZ0JBNklHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7d0JBSVRsYyxHQUFLLE9BdW5CM0J3YyxrQkF2bkJ5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7UUFBNUMsT0FBQSx1Q0FKaUN5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQXdXRjJLLG1CQXpXK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9BaWpCOUJvSSxrQkFsakJhcEo7T0FEWCxlQXFuQkY3QixTQW5CQXVFLFlBam1CU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9Bb2Y5QmlJLGtCQXJmYW5KO09BRFgsZUFpbkJGL0IsU0FuQkF1RSxZQTdsQlN2Qzs7T0FHUDtRQUQrQkc7UUFFcEJELE9BRm9CQztRQUV4QkMsT0FGd0JEO1FBR1IsT0E3UXpCOEIsZUE0UWEvQjtPQURYLGVBM1FGK0IsZUE0UVM3Qjs7V0FFeUJFLGlCQUNoQyxXQTlnQkY5QixnQkE2Z0JrQzhCOztXQUVGRSxpQkFDOUIsV0F4S0ZvRyxlQXVLZ0NwRzttQkFFQUUsaUJBQzlCLFdBK1BGd0QsZUFoUWdDeEQ7O0dBQ3FCO1lBRXJEc0k7SUFFRix1QkFDZ0N0TCxlQUM1QixXQXpSRnVFLGVBd1I4QnZFO0lBRzJCLElBRHJCVSxlQUFKUixpQkFDeUIsT0ExaEJ6RFksZ0JBeWhCb0NKO0lBQ2xDLFdBMlVGMkssbUJBNVVnQ25MO0dBQzRDO1lBRTVFa0csc0JBRUN0aUI7SUFBSyxPQW9UTjJuQixnQkFsU0FwRyxrQkFsQkN2aEI7R0FBdUM7WUFFeENrbUI7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FTZ0MsT0F4TW5DMUssZ0JBaU1Hd0s7S0FNMEIsT0FLN0J0RyxpQkFaR3VHO0lBSUw7WUEra0JFdEw7dUJBN2tCZ0J4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQVAzQytuQjs7O1lBR0FIO0dBUUo7WUFFQ3JHO0lBRUg7S0FHTXlHO0tBREFDO0tBREFDO0tBT2lDLE9BdE5wQzdLLGdCQWlORzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0JqTSxlQUMzQixXQXNqQkZNLFNBRkFNLGtCQXJqQjZCWjs7V0FFSUUsaUJBQy9CLFdBdE1GRCxlQXFNaUNDOztPQUlELElBRklRLGVBQUpDLGlCQUVBLE9BdEJoQzBFLGlCQW9Cb0MzRTtPQUNsQyxXQVlGd0wsdUJBYmdDdkw7O09BSXFCLElBRG5Cd0IsaUJBQUp0QixpQkFDdUIsT0F4QnJEd0UsaUJBdUJrQ2xEO09BQ2hDLFdBeEJGa0QsaUJBdUI4QnhFOztPQUlKLElBRmF3QixpQkFBSkMsaUJBRVQsT0FjMUI2SixpQkFoQnVDOUo7T0FDckMsV0ExQkZnRCxpQkF5Qm1DL0M7O1dBR0xHLGlCQUM1QixXQTdrQkYzQixnQkE0a0I4QjJCO21CQUVHQyxpQkFDL0IsV0FrTUY4RCxlQW5NaUM5RDs7R0FDcUI7WUFFdER3SjtJQUVGLFlBQzRCO0lBRzZCLElBRjFCeEwsZUFBSlYsZUFFOEIsT0FFdkRtTSxpQkFKNkJ6TDtJQUMzQjtZQWlpQkZKO3VCQWhpQm1CeGM7NkJBQXFCQSxHQUFLLE9BQUxBLEVBQU07ZUFBdEIsT0FBQSx1Q0FBTEE7Y0FBOEI7Y0FGeEJrYzs7R0FFa0Q7WUFFM0VtTTtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2lDLE9BL1BwQ25MLGdCQTBQR2lMO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0J2TSxlQUMzQixXQTZnQkZNLFNBRkFNLGtCQTVnQjZCWjs7V0FFSUUsaUJBQy9CLFdBOEJGcUosZUEvQmlDcko7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDd0wsaUJBb0JvQ3pMO09BQ2xDLFdBN0JGd0wsdUJBNEJnQ3ZMOztPQUtOO1FBRk93QjtRQUFKdEI7UUFFSCxPQUFBLDRCQVExQjJMLHNCQVZpQ3JLO09BQy9CLFdBeEJGZ0ssaUJBdUI2QnRMOztXQUdDeUIsaUJBQzVCLFdBcEVGK0MsaUJBbUU4Qi9DOztXQUVHRyxpQkFDL0IsV0EySkYrRCxlQTVKaUMvRDs7V0FFSkMsaUJBQzNCLFdBK2ZGcEMsU0FGQU0sa0JBOWY2QjhCOztHQUNnQztZQUU3RDhKO0lBRUY7O09BR3FDLElBRkQ5TCxlQUFKVixlQUVLLE9BNFZuQzZKLHNCQTlWa0NuSjtPQUNoQyxXQXlmRkosU0FGQU0sa0JBeGY4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9BcWZuQ0ksU0FGQU0sa0JBcmZvQ3VCO09BQ2xDLFdBc2ZGN0IsU0FGQU0sa0JBcmZnQ1Y7O09BS0c7UUFGSW1DO1FBQUoxQjtRQUVBLE9Bc1ZuQ2tKLHNCQXhWdUN4SDtPQUNyQyxXQW1mRi9CLFNBRkFNLGtCQWxmbUNEOztPQUtBO1FBRkc2QjtRQUFKM0I7UUFFQyxPQStlbkNQLFNBRkFNLGtCQS9lc0M0QjtPQUNwQyxXQWdmRmxDLFNBRkFNLGtCQS9la0NDOztHQUU4QjtZQUVoRTBJLGVBRUN6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztXQUNYNU0sZUFDM0IsV0FzYUY0Six1QkF2YTZCNUo7O09BSU47UUFGVVU7UUFBSlI7UUFFTixPQUFBLDRCQThUdkIySix1QkFoVWlDbko7T0FDL0IsV0EwY0ZlLGNBM2M2QnZCOztXQUdJUztPQUMvQixXQUFpQyw0QkE0VG5Da0osdUJBN1RpQ2xKOztXQUVIRSxpQkFDNUIsV0F3UUZpSixvQkF6UThCako7O1dBRUd5QixpQkFDL0IsV0F3UEZ5SCxvQkF6UGlDekg7O1dBRUhHLGlCQUM1QixXQXFPRm9LLHdCQXRPOEJwSzs7V0FFRUMsaUJBQzlCLFdBbU5Gb0sseUJBcE5nQ3BLOztXQUVDRTtPQUMvQixXQUFpQyw0QkFpT25DaUsseUJBbE9pQ2pLOztXQUVGRSxpQkFDN0IsV0ErTEZtSCw2QkFoTStCbkg7O1dBRUhFLGlCQUMxQixXQWlLRjZILHNCQWxLNEI3SDs7V0FFR0UsaUJBQzdCLFlBeUlGNkoseUJBMUkrQjdKOztXQUVGRztPQUMzQixZQUE2Qiw0QkFjL0IySix3QkFmNkIzSjs7V0FFS0M7T0FDaEM7ZUFDRSw0QkFNSjZHLDZCQVJrQzdHOztXQUdERyxrQkFDL0IsWUE5VUZ5RixlQTZVaUN6Rjs7T0FHc0IsSUFEakJ0QixpQkFBSndCLGtCQUNxQixPQXBWdkR4QyxnQkFtVnNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0M3Qzs7R0FDd0M7WUFFMUV3Ryw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BeldwQ2hNLGdCQW9XRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkF0ZG5DdUUsZ0JBb2RtQzdEO09BQ2pDLFdBbWFGSixTQUZBTSxrQkFsYStCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0EzZHhCZ0QsZUF5ZGtDcEM7T0FDaEMsV0FnWUZDLGVBalk4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWdIRndJLHNCQWpINkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0FwZUUvSSxlQW1lR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQTlZcEN4TSxnQkF5WUdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixNQWpnQlBxRSxlQTZmcUJSO1FBR2QsTUFvRFA4SixrQkF2RGlCdE07UUFFVixNQXVUUGdLLGtCQXpUYTdLO09BRFgsZUE0WEZKLFNBbkJBdUUsWUF4V1NsRTs7T0FNUDtRQUQ0QkU7UUFFVGlOLE9BRlNqTjtRQUVic0MsT0FGYXRDO1FBRWpCc0IsT0FGaUJ0QjtRQUVyQnlCLE9BRnFCekI7UUFNdkIsT0F4Z0JQMEQsZUFvZ0JxQnVKO1FBR2QsT0E2Q1BELGtCQWhEaUIxSztRQUVWLE9BdVBQcUksa0JBelBhcko7T0FEWCxlQXFYRjdCLFNBbkJBdUUsWUFqV1N2Qzs7T0FNUDtRQURnQ0c7UUFFckJKLE9BRnFCSTtRQUV6QkMsT0FGeUJEO1FBR1QsT0E1Z0J6QjhCLGVBMmdCYWxDO09BRFgsZUExZ0JGa0MsZUEyZ0JTN0I7O1dBRXdCRSxpQkFDL0IsV0FyYUZzRyxlQW9haUN0RzttQkFFQUUsaUJBQy9CLFdBRUYwRCxlQUhpQzFEOztHQUNxQjtZQUV0RDBELGVBRUMxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUFoYXpCd2xCLGFBK1pNNUk7SUFDUixXQWtXRUosa0JBbFdheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FrQmdDLE1BNWNuQ2xOLGdCQStiRzZNO0tBVzBCLE1BQUEsV0FsQjVCRCxJQUtFRztLQVkwQixNQTBVN0I1TixrQkExVTJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBYjlDcXFCO2lCQVNNcnFCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BK1ExQnlxQixjQWhSYzdOO0tBQ1IsV0E1aUJONkQsZUEyaUJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FUQ29PO0lBTUwsV0FjRVAsa0JBckJHUSwwQkFJQUo7R0FlSjtZQUVDSix5QkFDaUUscUJBRVg7WUFFdERkLHlCQUdDanBCO0lBQUssT0FFTnVtQixtQkFwT0E4QixrQkFrT0Nyb0I7R0FBMEM7WUFFM0N1bUIsbUJBS0MwRDtJQUFKO0tBSU1TO0tBREFDO0tBREFDO0tBT2tDLE1BdmVyQ3ZOLGdCQWtlR3FOO0lBRUwsV0FDZ0MsV0FQN0JULElBRUVXLFlBQ0FEO0dBT0o7WUFFQzVELHNCQUVDL21CO0lBQUssT0FFTjJuQjtzQkFGMkIzbkIsR0FBSyxPQXVTaEN3YyxTQUZBTSxrQkFyUzJCOWMsR0FBZ0MsR0FBMURBO0dBQTZEO1lBRTlEMm5CLGdCQUtDc0M7SUFBSjtLQUtNWTtLQURBQztLQURBQztLQURBQztLQVNrQyxNQTlmckMzTixnQkF3Zkd3TjtLQUlnQyxNQUtuQ3RELG1CQVhHd0Q7SUFJTCxXQUNpQyxXQVI5QmQsSUFFRWUsa0JBRUFGO0dBUUo7WUFFQ3ZELDBCQUNtRSxxQkFFbkI7WUFFaERwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVFpQyxNQWxoQnBDL04sZ0JBNGdCRzZOO0tBSzJCLE1BQUEsaUNBNVI5QjdDLGtCQXNSRzhDO0lBSUw7WUFvUUUzTyxrQkFuUTRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9Db3JCOzs7WUFHQUg7R0FPSjtZQUVDakM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUFsaUJuQ25PLGdCQTRoQkdpTztLQUs4QixNQWtQakM5TyxTQUZBTSxrQkF0UEd5TztJQUlMLFdBb1BFL08sa0JBblAyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45Q3dyQixxQkFHQUg7R0FPSjtZQUVDdEM7SUFHSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTZ0MsTUFuakJuQ3ZPLGdCQTRpQkdxTztLQU0wQixNQTdUN0JyRCxpQkFzVEdzRDtJQUlMO1lBb09FblA7dUJBbE9nQnhjOzRCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsc0NBQUxBO2NBQThCO2NBUDNDNHJCOzs7WUFHQUg7R0FRSjtZQUVDeEY7SUFFSDtLQUdNNEY7S0FEQUM7S0FEQUM7S0FRbUMsTUFsa0J0QzFPLGdCQTRqQkd3TztJQUVMO1lBZ0NFbkssMkJBcENHcUs7WUFDQUQ7O0dBUUo7WUFFQzlGO0lBRUg7S0FNTWdHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBbUJtQyxNQTNsQnRDaFAsZ0JBNmtCRzJPO0tBWWdDLE1BK0RuQ3RFLGtCQTdFR3dFO0tBYUQ7T0FBQTswQkFNRnhLLDRCQXBCR3lLO2lCQVNNbnNCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BaUkxQnlxQixjQWxJYzdOO0tBQ1IsV0ExckJONkQsZUF5ckJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FUQ2tRO0lBTUw7WUFvTUU1UCxTQUZBTSxrQkF6TUd1UDs7OztZQUlBSjs7R0FnQko7WUFFQ3ZLO0lBR0g7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE1BM21CcENwUCxnQkFxbUJHaVA7S0FJMkIsTUFLOUJJLCtCQVhHRjtJQUlMO1lBNEtFaFEsa0JBM0s0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFK0M7S0FHWDtNQUZIOVA7TUFBSlY7TUFFTyxNQUFBLGlDQXh0QnBDdUUsZ0JBc3RCaUM3RDtLQUMvQixXQXNFRitQLDJCQXZFNkJ6UTs7UUFHQ0U7SUFDNUIsV0E4SkZJLFNBRkFNLGtCQTdKOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0EwQmtDLE1BcHBCckM5UCxnQkFnb0JHd1A7S0FtQmdDLE1BQUEsaUNBeHZCbkNwTSxnQkFvdUJHcU07S0FtQitCLE1BTWxDcEYsa0JBMUJHcUY7S0FtQjRCLE1BWS9CSyxlQWhDR0o7aUJBZ0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFwdkIxQnlnQixlQW12QmM3RDtLQUNSLFdBcHZCTjZELGVBbXZCVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWhCQ3dQO2lCQVdNanRCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BNkUxQnlxQixjQTlFYzdOO0tBQ1IsV0E5dUJONkQsZUE2dUJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FYQ2dSO0lBUUw7WUFnSkUxUSxrQkEvSTZDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVmhEbXRCOzs7Ozs7O1lBT0FQO0dBcUJKO1lBRUNsRix5QkFDaUUscUJBRWY7WUFFbEQwRjtJQUNFOztTQUU4QmxSO0tBQzlCLFdBQWdDLDRCQUtsQ21SLDhCQU5nQ25SOztRQUVERTtJQUM3QixXQUErQiw0QkE2QmpDa1Isd0JBOUIrQmxSO0dBRTZCO1lBRTVEaVI7SUFHSDtLQUtNRTtLQURBQztLQURBQztLQURBQztLQURBRTtLQVdnQyxNQXJyQm5DdlEsZ0JBOHFCR2tRO0tBS3lCLE1BQUEsaUNBeHhCNUI5TSxnQkFpeEJHZ047S0FNMEIsTUFNN0JkLDJCQWJHZTtJQUtMO1lBbUdFbFIsa0JBbEcyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRTBDO1NBQ1p6UTtLQUM1QixXQUE4Qiw0QkFqeUJoQ3VFLGdCQWd5QjhCdkU7O1FBRUNFO0lBQzdCLFdBQStCLDRCQUVqQ2tSLHdCQUgrQmxSO0dBQ3NDO1lBRXJFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVdnQyxNQTlzQm5DNVEsZ0JBdXNCR3dRO0tBSzBCLE1BanpCN0JwTixlQTB5QkdzTjtLQU02QixNQU1oQ3RHLGtCQWJHdUc7SUFLTDtZQTBFRXhSLGtCQXpFMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ2lFLHFCQUViO1lBRXBEZ0Q7SUFDRixzQkFDZ0MsaUJBQ0ksa0JBQ0o7O0dBQTBCO1lBRXhEM0U7SUFFSDtLQUtNb0k7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FVaUMsTUF6dUJwQ2pSLGdCQWt1Qkc4UTtpQkFNeUNudUIsR0FBSyxPQUFMQSxFQUFNO0lBQXBCO0tBQUEsTUFBQSxpQ0FQM0JvdUI7S0FNMkIsTUE1MEI5QjNOLGVBcTBCRzROO0lBS0w7WUE4Q0U3UixrQkE3QzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUC9Dc3VCOzs7O1lBSUFKO0dBUUo7WUFFQy9JO0lBRUY7S0FFb0QsSUFEdEJ2SSxlQUFKVixlQUMwQixNQXQxQmxEdUUsZUFxMUI0QjdEO0tBQzFCLFdBa0NGSixTQW5CQXVFLFlBaEJ3QjdFOztRQUVHRTtJQUN6QixXQXgxQkZxRSxlQXUxQjJCckU7R0FDcUI7WUFFaERrQztJQUNGLDhCQUM4QjsyQkFDRnBDLGVBQU0sV0FBTkE7UUFDQUU7SUFBTSxXQUFOQTtHQUFrQztZQUU1RDZILHdCQUMrRCxxQkFFakI7WUFFOUNsRCxXQUFvRS9nQixHQUFLLE9BQUxBLEVBQU07WUFFMUUyZCxxQkFDRixxQkFFMEQ7WUFFeERIO0lBQ0Y7O1dBQ3dDWixlQUFKViw4QkFDc0JsYyxHQUFLLE9BQUxBLEVBQU07T0FBNUQsV0FEZ0NrYyxJQUNNLHNDQURGVTs7V0FFUlIsaUJBQU0sV0FBTkE7O1dBQ1VxQixlQUFQWixnQ0FDc0I3YyxHQUFLLE9BQUxBLEVBQU07T0FBM0QsV0FEK0I2YyxNQUNNLHNDQURDWTs7V0FFSlksaUJBQUp0QixnQ0FDc0IvYyxHQUFLLE9BQUxBLEVBQU07T0FBMUQsV0FEOEIrYyxNQUNNLHNDQURGc0I7O0dBQzZCO1lBRWpFdkIsaUJBQW9EOWMsR0FBSyxPQUFMQSxFQUFNO1lBRTFEd2MsU0FHQ3lOO0lBQUosSUFBK0IxcEIsZ0JBQXRCWTtJQUNSLFdBQXlCLFdBRHRCOG9CLElBQUs5b0IsTUFBc0JaO0dBQzZDO1lBRXpFbWtCLGNBQStDMWtCLEdBQUssT0FBTEEsRUFBTTs7OztPQXRxQ2pEaWM7T0FRSkk7T0FjQUU7T0FTQUk7T0FVQUs7T0FlQW9YO09BRUE3VztPQXFIQWlGO09BUUFHO09BZUF0QztPQU1BNUI7T0FZQTRWO09BR0EzVztPQWVBNEM7T0FjQWdVO09BRUF0UTtPQThDQXZEO09BZUE4VDtPQUVBalg7T0FJQW1IO09Ba0NBSTtPQVdBRDtPQWFBSTtPQVNBTDtPQWFBdEg7T0FJQStIO09BYUFJO09BUUFySjtPQUlBdUo7T0FRQUc7T0FxQ0FTO09BS0FGO09BSUFLO09BYUFJO09BZ0NBN0U7T0FRQWtGO09BYUFJO09BMkJBRTtPQVFBbEY7T0FJQTREO09BZ0JBM0U7T0FhQTRHO09Bb0JBQztPQVFBQztPQWFBSTtPQW9CQUM7T0FnQkFqRDtPQUlBa0Q7T0FRQUc7T0FvQ0F6QztPQUtBNkM7T0FJQXBDO09BYUF3QztPQWdCQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQU1BOEQ7T0E0QkF1RDtPQUtBZDtPQUtBMUM7T0FpQkFRO09BSUFZO09BbUJBSjtPQUtBcEI7T0FnQkE2QztPQWdCQUQ7T0FpQkE5QztPQWNBRDtPQXlCQXRFO09BZ0JBZ0w7T0FTQTNHO09BaUNBMkI7T0FLQTBGO09BU0FDO09Ba0JBVjtPQVFBVztPQWlCQTdGO09BS0FnRDtPQU1BM0U7T0FpQkFYO09BUUE3RztPQU1BMkY7T0FLQWxEO09BRUFwRDtPQUtBSDtPQVVBVjtPQUVBTjtPQU1Ba0k7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztZQ3RxQ0l6STtJQUVOLHVCQUM2QkMsZUFDekIsV0FrYUZDLGVBbmEyQkQ7UUFFQUU7SUFDekIsV0FFRkMsd0JBSDJCRDtHQUM4QjtZQUV6REM7SUFHSDtLQUdNQztLQURBeEI7S0FEQUQ7S0FNMEI7T0FBQSxpQ0FJN0IwQix5QkFUR3pCO0lBR0wsV0FpcENFMEIsa0JBaHBDNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FML0M2YSxrQkFFQXlCO0dBTUo7WUFFQ0M7SUFHSCxJQUFvQ0Usc0JBQTlCQztJQUNMLFdBS0VDLDZCQU5HRCxhQUE4QkQ7R0FJbEM7WUFFQ0U7SUFFNEM7O1dBQ2RULGVBQU0sV0FBTkE7O1dBQ0VVLGVBQUpSLGlDQUNzQnBjLEdBQUssT0FBTEEsRUFBTTtPQUF0RCxXQUQwQm9jLE1BQ00sdUNBREZROztXQUVIQyxpQkFDM0IsV0FEMkJBO21CQUVERSxpQkFBTSxXQUFOQTs7R0FBb0M7WUFFaEVDO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0F3VnBDQyxnQkE5VkdKO0tBS2dDLE9BcVFuQ0ssb0JBM1FHSjtJQUdMLFdBU0VLLHFCQWRHSCxZQUNBRDtHQVNKO1lBRUNpWCxVQUFVcDBCLEdBQUksT0FmZGdkLGdCQWVVaGQsR0FBcUI7WUFFL0J1ZDtJQUVGLDhCQWlId0M7OztXQWhIVHJCLGVBQzNCLFdBbW1DRk0sU0FGQU0sa0JBbG1DNkJaOztXQUVHRSxpQkFDOUIsV0FvbENGb0IsY0FybENnQ3BCOztPQUl1QjtRQUZuQnFCO1FBQUpiO1FBQUpDO1FBRTJCLE9BMUJ2REcsZ0JBd0JvQ1M7UUFFYixPQUFBLDRCQXdKdkJDLG9CQTFKZ0NkO09BQzlCLFdBNmtDRmUsY0E5a0M0QmQ7O1dBR0lFO09BQzlCLFdBQWdDLDRCQXVJbEMwQixXQXhJZ0MxQjs7T0FPMUI7UUFMa0NrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLdEIsT0FsQ054QixnQkE2QndDaUQ7UUFJbEMsT0FnS05LLGFBcEtvQ2pCO1FBRzlCLE9BQUEsaUNBaENOckMsaUJBNkJnQ3FCO09BQzlCLFdBMmpDRkMsZUE1akM0QkU7O09BU3RCO1FBSDRCRDtRQUFKSTs7bUJBSWpCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F6QzlCZ2QsZ0JBd0NrQko7V0FDUixXQWdqQ1YwQixlQWpqQ2NwQztVQUNtQztRQUgzQyxPQUFBLGtDQUg0QnFDO09BQ2hDLFdBcENGdkIsZ0JBbUM4QjJCOztPQVNzQjtRQURsQkQ7UUFBSkU7UUFDc0IsT0FBQSw0QkF1SHBESCxXQXhIa0NDO09BQ2hDLFdBNUNGMUIsZ0JBMkM4QjRCOztPQUdvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FBQSw0QkFxSGxETCxXQXRIZ0NJO09BQzlCLFdBOUNGN0IsZ0JBNkM0QjhCOztXQUVDRTtPQUMzQixXQUE2Qiw0QkFoRC9CaEMsaUJBK0M2QmdDOztPQUlNO1FBRkdEO1FBQUpHO1FBRUMsT0FBQSxpQ0FuRG5DbEMsaUJBaURzQytCO09BQ3BDLFdBc2tDRnZDLFNBRkFNLGtCQXJrQ2tDb0M7O1dBR0VELGlCQUFKRztPQUM5QjtlQUQ4QkE7ZUFFWixpQ0F0RHBCcEMsaUJBb0RvQ2lDOztPQVU5QjtRQVA2QkU7UUFBSkk7UUFPekIsT0FBQSxpQ0E5RE52QyxpQkF1RG1DbUM7O21CQUd0Qm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BNUR6Q2dkLGdCQTJEa0JKO1dBQ1IsV0E0akNWSixTQUZBTSxrQkEzakNjWjtVQUM4QztPQUoxRCxZQUNJLGtDQUZ5QnFEOztPQVVOO1FBRlNEO1FBQUpFO1FBRUwsT0F1akN6QmhELFNBRkFNLGtCQXZqQ2tDd0M7T0FDaEMsWUFoRUZ0QyxnQkErRDhCd0M7O09BS3lCO1FBRmRDO1FBQUpDO1FBQUpDO1FBRXNCLE9BcEV2RDNDLGdCQWtFeUN5QztRQUVoQixPQW9qQ3pCakQsU0FGQU0sa0JBcGpDcUM0QztPQUNuQyxZQW5FRjFDLGdCQWtFaUMyQzs7V0FHSkU7T0FDM0IsWUFBNkIsNEJBdEUvQjdDLGlCQXFFNkI2Qzs7T0FJZ0I7UUFGRks7UUFBSk47UUFBSkc7UUFFVSxPQUFBLGlDQXpFN0MvQyxpQkF1RTJDa0Q7UUFFbEIsT0F6RXpCbEQsZ0JBdUV1QzRDO09BQ3JDLFlBeEVGNUMsZ0JBdUVtQytDOztPQUlvQixJQURsQkQsa0JBQUpNLGtCQUNzQixPQTNFdkRwRCxnQkEwRXFDOEM7T0FDbkMsWUEzRUY5QyxnQkEwRWlDb0Q7O09BR21CLElBRGxCRCxrQkFBSkssa0JBQ3NCLE9BN0VwRHhELGdCQTRFa0NtRDtPQUNoQyxZQTdFRm5ELGdCQTRFOEJ3RDs7T0FReEI7UUFOc0NSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNdEIsT0FwRk41RCxnQkE4RTRDZ0Q7UUFLdEMsT0EwRU5LLG9CQS9Fd0MySjtRQUlsQyxPQWxGTmhOLGdCQThFb0MwRDtRQUc5QixPQWpGTjFELGdCQThFZ0N1RDtPQUM5QixZQWtIRkQsYUFuSDRCTTs7T0FRNkIsSUFEbEJELGtCQUFKRyxrQkFDc0IsT0F5S3pETCxlQTFLdUNFO09BQ3JDLFlBdEZGM0QsZ0JBcUZtQzhEOztPQUlvQjtRQUZoQk07UUFBSlA7UUFBSkc7UUFFd0IsT0FzS3ZEUCxlQXhLdUNXO1FBRWQsT0FBQSxpQ0FzS3pCWCxnQkF4S21DSTtPQUNqQyxZQXhGRjdELGdCQXVGK0JnRTs7T0FJb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BNmhDbkQxRSxTQXBCQXVFLFlBMWdDaUNFO09BQy9CLFlBM0ZGakUsZ0JBMEY2QmtFOztXQUVGQyxrQkFDekIsWUEyaENGM0UsU0FGQU0sa0JBMWhDMkJxRTs7T0FJRSxJQUZVRSxrQkFBSkMsa0JBRU4sT0FoRzdCdEUsZ0JBOEZ1Q3FFO09BQ3JDLFlBeWhDRjdFLFNBcEJBdUUsWUF0Z0NtQ087OztRQUdIRzs7bUJBR3BCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BdEdsQ2dkLGdCQXFHaUJKO1dBQ1IsV0FraENUSixTQXBCQXVFLFlBLy9CYTdFO1VBQ3dDO09BSm5ELFlBQ0Usa0NBRjRCdUY7O09BVzFCO1FBSm9Dd1A7UUFBSnpQO1FBQUpHO1FBSTVCLE9BNUdOM0UsZ0JBd0cwQ2lVO1FBR3BDLE9BcWNOMVAsaUJBeGNzQ0M7T0FDcEM7ZUErZ0NGaEY7MEJBOWdDb0J4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZoQjJoQjs7OztPQU9FLElBRktFLGtCQUFKRCxrQkFFRCxPQS9HcEM1RSxnQkE2R3lDNkU7T0FDdkMsWUFvMUJGSCwyQkFyMUJxQ0U7O1dBR1BFLGtCQUM1QixZQWpIRjlFLGdCQWdIOEI4RTs7V0FFRkMsa0JBQzFCLFlBbkhGL0UsZ0JBa0g0QitFOztPQUlIO1FBRlFFO1FBQUpDO1FBRUosT0FBQSxpQ0F5SXpCekIsZ0JBM0lpQ3dCO09BQy9CLFlBckhGakYsZ0JBb0g2QmtGOztXQUdDQyxrQkFDNUIsWUE0V0ZILHFCQTdXOEJHOztPQUlDLElBRktDLGtCQUFKQyxrQkFFRCxPQTNIL0JyRixnQkF5SG9Db0Y7T0FDbEMsWUE4L0JGNUYsa0JBNy9CbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT3FpQjs7V0FHSkUsa0JBQzFCLFlBbWJGaEIsaUJBcGI0QmdCOztPQUc2QixJQUR4QjJPLGtCQUFKek8sa0JBQzRCLE9BL0h6RHpGLGdCQThIaUNrVTtPQUMvQixZQTZaRjVPLHNCQTlaNkJHOztXQUVBdU8sa0JBQzNCLFlBS0Z4TyxXQU42QndPO21CQUVJRyxrQkFDL0IsWUE4b0JGek8sZUEvb0JpQ3lPOztHQUV1QztZQUV4RTNPO0lBQ0g7S0FBc0QxVDtLQUF4QkM7S0FBeEJDO0tBSXNCLE9BM0l6QmdPLGdCQXVJbURsTztLQUcxQixPQUFBLDRCQUl6QjZULGlCQVAyQjVUO0lBQzdCLFdBTUU0VCxnQkFQRzNUO0dBS0o7WUFFQzJUO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMEIsT0F6SjdCL0YsZ0JBbUpHNkY7S0FLMEIsT0F5QzdCdkMsYUEvQ0d3QztJQUlMO1lBaytCRXRHLGtCQWorQjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjdDK2lCOzs7WUFHQUg7R0FPSjtZQUVDdkMsMkJBRUYscUJBRW9EO1lBRWxENUI7SUFDSDtLQUdNbkU7S0FEQUM7S0FEQUM7S0FPd0IsT0E1SzNCd0MsZ0JBdUtHMUM7S0FJMEIsT0FBQSxpQ0EzSzdCMEMsaUJBc0tHekM7SUFHTCxXQXdCRStGLGFBNUJHOUY7R0FRSjtZQUVDNlosV0FDQ3IwQixHQUFLLE9BQUEsNEJBYk55ZSxXQWFDemUsR0FBeUI7WUFFMUIwZDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVFnQyxPQXVLbkNyRyxnQkE3S0drRztLQUswQixPQTVMN0J2RyxnQkFzTEd5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FJTXNEO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9Bd0pwQzFHLGdCQTlKR3VHO0tBS2dDLE9BcUVuQ3RHLG9CQTNFR3VHO0lBR0wsV0FTRUcsa0JBZEdELFlBQ0FEO0dBU0o7WUFFQ3dRLFNBQVN0MEIsR0FBSSxPQWRic2dCLGFBY1N0Z0IsR0FBa0I7WUFFM0Jna0I7SUFDbUUsOEJBQ3JDOzs7V0FDSDlILGVBQ3pCLFdBbTZCRk0sa0JBbjZCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEdkJrYzs7T0FHc0I7UUFEZlU7UUFBSlI7UUFDbUIsT0FpNkJqREksa0JBajZCK0R4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbkM0YztPQUNoQyxXQXRCRjBELGFBcUI4QmxFOztXQUVFUyxpQkFDOUIsV0FrNUJGVyxjQW41QmdDWDs7T0FHcUIsSUFEaEJ3QixpQkFBSnRCLGlCQUNvQixPQWc1QnJEUyxjQWo1QnFDYTtPQUNuQyxXQWc1QkZiLGNBajVCaUNUOztXQUVKeUI7T0FDM0IsV0FBNkIsNEJBNUIvQjhCLGNBMkI2QjlCOztPQUlNO1FBRkdEO1FBQUpJO1FBRUMsT0FBQSxpQ0EvQm5DMkIsY0E2QnNDL0I7T0FDcEMsV0F5NUJGL0IsU0FGQU0sa0JBeDVCa0M2Qjs7V0FHRUQsaUJBQUpFO09BQzlCLFdBRDhCQSxNQUNpQixpQ0FqQ2pEMEIsY0FnQ29DNUI7O09BUzlCO1FBUDZCRztRQUFKQztRQU96QixPQXEzQk5tRixpQkE1M0JtQ3BGOzttQkFHdEI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQXZDekNzZ0IsYUFzQ2tCMUQ7V0FDUixXQWc1QlZKLFNBRkFNLGtCQS80QmNaO1VBQzJDO09BSnZELFdBQ0ksa0NBRnlCNEM7O1dBUUZFO09BQzNCLFdBQTZCLDRCQTNDL0JzQixjQTBDNkJ0Qjs7T0FHaUIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQTdDOUNvQixhQTRDK0J2QjtPQUM3QixXQTdDRnVCLGFBNEMyQnBCOztPQUcyQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BZXREcUIsZUFoQnVDeEI7T0FDckMsWUEvQ0ZxQixhQThDbUNsQjs7V0FFUEcsa0JBQzFCLFlBczRCRi9DLFNBRkFNLGtCQXI0QjRCeUM7O1dBRUFDLGtCQUMxQixZQW5ERmMsYUFrRDRCZDs7V0FFRUc7T0FDNUI7ZUFrNEJGbkQ7MEJBajRCbUJ4YztnQ0FBcUJBLEdBQUssT0FBTEEsRUFBTTtrQkFBdEIsT0FBQSx1Q0FBTEE7aUJBQThCO2lCQUZuQjJmOztXQUdHRSxrQkFDL0IsWUF4REZTLGFBdURpQ1Q7O1dBRUFFLGtCQUMvQixZQXNoQkYyQyxlQXZoQmlDM0M7O09BRzRCLElBRDVCWixpQkFBSmlCLGtCQUNnQyxPQTVEN0RFLGFBMkRpQ25CO09BQy9CLFlBMjNCRjNDLFNBRkFNLGtCQTEzQjZCc0Q7O0dBQ2dEO1lBRTdFSztJQUVIO0tBSU00RDtLQURBQztLQURBQztLQURBQztLQVNpQyxPQXlGcENuSCxnQkEvRkdnSDtLQUtnQyxPQU1uQy9HLG9CQVpHZ0g7SUFHTCxXQWFFRyxvQkFsQkdELFlBQ0FEO0dBU0o7WUFFQ2dRLFNBQVN2MEIsR0FBSSxPQWZieWdCLGVBZVN6Z0IsR0FBb0I7WUFFN0JzZCxvQkFFQ3RkO0lBQUssT0FBQSw0QkE0MkJOMGtCLGVBNTJCQzFrQjtHQUE2QjtZQUU5QnlrQjtJQUVGLDhCQUNnQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdnQjtRQUZMdUI7UUFBSmI7UUFBSlI7UUFFYSxPQTVCM0NxRSxlQTBCc0NoRDtRQUVkLE9BNUJ4QmdELGVBMEJrQzdEO09BQ2hDLFdBK3pCRjBCLGVBaDBCOEJsQzs7V0FHRFM7T0FDM0IsV0FBNkIsNEJBOUIvQjRELGdCQTZCNkI1RDs7T0FJTTtRQUZBd0I7UUFBSnRCO1FBRUksT0FBQSw0QkFqQ25DMEQsZ0JBK0JtQ3BDO09BQ2pDLFdBeTFCRjdCLFNBRkFNLGtCQXgxQitCQzs7T0FLSyxJQUZEd0IsaUJBQUpDLGlCQUVLLE9BNHpCcEN5RixpQkE5ekJtQzFGO09BQ2pDLFdBQ0csNEJBb0RMb0csbUJBdEQrQm5HOztPQUtJO1FBRkRFO1FBQUpDO1FBRUssT0FBQSw0QkF2Q25DOEIsZ0JBcUNrQy9CO09BQ2hDLFdBbTFCRmxDLFNBRkFNLGtCQWwxQjhCNkI7O1dBR0lFLGlCQUFKRDtPQUM1QixXQXpDRjZCLGVBd0M4QjdCLE9BQUlDOztPQU01QjtRQUprQ1E7UUFBSk47UUFBSkQ7d0JBSVY5ZSxHQUFLLE9BQUEsNEJBdXpCM0IrZ0IsWUF2ekJzQi9nQixHQUEwQjtRQUExQyxPQUFBLHVDQUprQ3FmO1FBR2xDLE9BbXpCTjRFLGlCQXR6Qm9DbEY7T0FDbEM7ZUFDSSw0QkFzQk42RixnQkF4QmdDOUY7Ozs7T0FPcUI7UUFGcEJHO1FBQUpEO1FBRXdCLE9BakRyRHlCLGVBK0NpQ3hCO3dCQUVkamYsR0FBSyxPQXcwQnhCd2Msa0JBeDBCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRndCZ2Y7O1dBR0VFLGlCQUM3QixXQUlGMkYsa0JBTCtCM0Y7bUJBRUVFLGlCQUMvQixZQTZkRnNELGVBOWRpQ3REOztHQUNxQjtZQUV0RHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQS9EbkN5Z0IsZUE4RFk3RDtLQUNSLFdBMHpCSkosU0FGQU0sa0JBenpCUVo7SUFDNkM7SUFIckQsV0FBQSxrQ0FGTVU7SUFDUixXQTh6QkVKLFNBRkFNLGtCQTd6QkVaO0dBTUk7WUFFTjBJO0lBRUg7S0FHTUU7S0FEQUM7S0FEQXhOO0tBT2dDLE9BeUJuQzhGLGdCQTlCR3lIO0lBRUwsV0FNRUUsb0JBVkd6TixXQUNBd047R0FPSjtZQUVDQztJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBcEZqQ3VFLGdCQWtGZ0NoRDtLQUM5QixXQXN5QkZqQixTQXBCQXVFLFlBbnhCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0F0RkZxRSxlQXFGMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtJQUVMLFdBbXZCRUUsdUJBdnZCRzNOLFdBQ0EwTjtHQU9KO1lBRUM3SCxnQkFFQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTThCLE9BSWpDQyxhQVRHRjtJQUdMLFdBeXdCRTlJLGtCQXh3QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCLGtCQUVBRjtHQU1KO1lBRUNHO0lBQ0Y7O1dBQ3lCdEosZUFBTSxXQU03QkMsZUFOdUJEOztXQUNBRSxpQkFBTSxXQWtSN0JxSixlQWxSdUJySjs7V0FDQVMsaUJBQU0sV0ExSDdCNEQsZUEwSHVCNUQ7O09BRW9CO1FBRGZEO1FBQUpHO1FBQ21CLE9BQUEsaUNBM1gzQ0MsaUJBMFg0Qko7T0FDMUIsV0ExTEYwRCxhQXlMd0J2RDs7R0FDaUQ7WUFFekVaLGVBRUNuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O09BRVcsSUFEbEJqSixlQUFKVixlQUNzQixPQXpDbkRtQixnQkF3Q2lDVDtPQUMvQixXQTdZRkksZ0JBNFk2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBOU52QnNCLG9CQTROa0NXO09BQ2hDLFdBdXRCRlYsY0F4dEI4QnZCOztXQUdHUyxpQkFDL0IsV0E4cUJGaUosdUJBL3FCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkFza0J2QmdKLHVCQXhrQmlDeEg7T0FDL0IsV0FrdEJGWixjQW50QjZCWjs7V0FHQ3lCLGlCQUM1QixXQWtoQkZ3SCxvQkFuaEI4QnhIOztXQUVHRyxpQkFDL0IsV0FrZ0JGc0gsb0JBbmdCaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0EyY0ZtSCw2QkE1YytCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkFvUko4Ryw2QkF0UmtDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQWxFRnlGLGVBaUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BeEV2RHhDLGdCQXVFc0NxQjtPQUNwQyxZQXFXRmdFLGVBdFdrQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0E0WU51bUIsbUJBN1FBaEYsa0JBL0hDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0FrV053bUIsaUJBaFdBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BN0ZuQ3ZKLGdCQXdGR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGRGpLO1FBQUpWO1FBRUssT0FBQSw0QkExTW5DdUUsZ0JBd01rQzdEO09BQ2hDLFdBZ3JCRkosU0FGQU0sa0JBL3FCOEJaOztXQUdFRSxpQkFDOUIsV0F5QkY0RixxQkExQmdDNUY7O09BTzFCO1FBTGlDNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtyQixPQTFCTjRKLGdCQXFCdUN4RztRQUlqQyxPQS9RTkssYUEyUW1DN0M7UUFHN0IsT0FBQSxpQ0EvY05ULGlCQTRjK0JxQjtPQUM3QixXQTRvQkZDLGVBN29CMkJ6Qjs7T0FTckI7UUFIMkIwQjtRQUFKeEI7O21CQUloQi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BeGQ5QmdkLGdCQXVka0JKO1dBQ1IsV0Fpb0JWMEIsZUFsb0JjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIMkJxQztPQUMvQixXQTVCRmtJLGdCQTJCNkIxSjs7T0FVMEI7UUFGcEJzQztRQUFKWDtRQUFKRjtRQUU0QixPQXJDdkRpSSxnQkFtQ21DcEg7UUFFWixPQUFBLDRCQTFTdkIzQixvQkF3UytCZ0I7T0FDN0IsV0Eyb0JGZixjQTVvQjJCYTs7T0FJNkIsSUFEbEJLLGlCQUFKRixpQkFDc0IsT0FxT3hEbUksZ0JBdE9zQ2pJO09BQ3BDLFdBdkNGNEgsZ0JBc0NrQzlIOztXQUVGQyxpQkFDOUIsV0FpVEY4RCxlQWxUZ0M5RDs7T0FHd0IsSUFEeEJHLGlCQUFKRCxpQkFDNEIsT0EzQ3hEMkgsZ0JBMENnQzFIO09BQzlCLFdBNFdGZ0ksc0JBN1c0QmpJOztHQUMrQztZQUUzRWtEO0lBRUg7S0FBb0NnRjtLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLGtCQU5pQ0Y7SUFDbkMsV0F0U0UxRyxhQXFTRzJHO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQWxKbkNoSyxnQkE2SUc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BS1E7UUFKaUM3SjtRQUFKYjtRQUFKVjt3QkFJVGxjLEdBQUssT0F3bkIzQndjLGtCQXhuQnlDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtRQUE1QyxPQUFBLHVDQUppQ3lkO1FBR2pDLE9BeEVOZ0osZ0JBcUVtQzdKO09BQ2pDLFdBd1dGMkssbUJBelcrQnJMOztPQU03QjtRQUR3QkU7UUFFVGlELE9BRlNqRDtRQUViaUMsT0FGYWpDO1FBRWpCUyxPQUZpQlQ7UUFHMEIsT0FnQnBEb0wsc0JBakJpQm5JO1FBQ2EsT0FpakI5Qm9JLGtCQWxqQmFwSjtPQURYLGVBc25CRjdCLFNBcEJBdUUsWUFqbUJTbEU7O09BR1A7UUFEMkJFO1FBRVowQyxPQUZZMUM7UUFFaEJ3QixPQUZnQnhCO1FBRXBCeUIsT0FGb0J6QjtRQUd1QixPQVlwRHlLLHNCQWJpQi9IO1FBQ2EsT0FvZjlCaUksa0JBcmZhbko7T0FEWCxlQWtuQkYvQixTQXBCQXVFLFlBN2xCU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQTdRekI4QixlQTRRYS9CO09BRFgsZUEzUUYrQixlQTRRUzdCOztXQUV5QkUsaUJBQ2hDLFdBOWdCRjlCLGdCQTZnQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0ErUEZ3RCxlQWhRZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBelJGdUUsZUF3UjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQTFoQnpEWSxnQkF5aEJvQ0o7SUFDbEMsV0EyVUYySyxtQkE1VWdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9Bb1ROMm5CLGdCQWxTQXBHLGtCQWxCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVNnQyxPQXhNbkMxSyxnQkFpTUd3SztLQU0wQixPQUs3QnRHLGlCQVpHdUc7SUFJTDtZQWdsQkV0TDt1QkE5a0JnQnhjOzZCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsdUNBQUxBO2NBQThCO2NBUDNDK25COzs7WUFHQUg7R0FRSjtZQUVDckc7SUFFSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPaUMsT0F0TnBDN0ssZ0JBaU5HMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQmpNLGVBQzNCLFdBdWpCRk0sU0FGQU0sa0JBdGpCNkJaOztXQUVJRSxpQkFDL0IsV0F0TUZELGVBcU1pQ0M7O09BSUQsSUFGSVEsZUFBSkMsaUJBRUEsT0F0QmhDMEUsaUJBb0JvQzNFO09BQ2xDLFdBWUZ3TCx1QkFiZ0N2TDs7T0FJcUIsSUFEbkJ3QixpQkFBSnRCLGlCQUN1QixPQXhCckR3RSxpQkF1QmtDbEQ7T0FDaEMsV0F4QkZrRCxpQkF1QjhCeEU7O09BSUosSUFGYXdCLGlCQUFKQyxpQkFFVCxPQWMxQjZKLGlCQWhCdUM5SjtPQUNyQyxXQTFCRmdELGlCQXlCbUMvQzs7V0FHTEcsaUJBQzVCLFdBN2tCRjNCLGdCQTRrQjhCMkI7bUJBRUdDLGlCQUMvQixXQWtNRjhELGVBbk1pQzlEOztHQUNxQjtZQUV0RHdKO0lBRUYsWUFDNEI7SUFHNkIsSUFGMUJ4TCxlQUFKVixlQUU4QixPQUV2RG1NLGlCQUo2QnpMO0lBQzNCO1lBa2lCRko7dUJBamlCbUJ4Yzs2QkFBcUJBLEdBQUssT0FBTEEsRUFBTTtlQUF0QixPQUFBLHVDQUFMQTtjQUE4QjtjQUZ4QmtjOztHQUVrRDtZQUUzRW1NO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0EvUHBDbkwsZ0JBMFBHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQnZNLGVBQzNCLFdBOGdCRk0sU0FGQU0sa0JBN2dCNkJaOztXQUVJRSxpQkFDL0IsV0E4QkZxSixlQS9CaUNySjs7T0FJRCxJQUZJUSxlQUFKQyxpQkFFQSxPQXRCaEN3TCxpQkFvQm9Dekw7T0FDbEMsV0E3QkZ3TCx1QkE0QmdDdkw7O09BS047UUFGT3dCO1FBQUp0QjtRQUVILE9BQUEsNEJBUTFCMkwsc0JBVmlDcks7T0FDL0IsV0F4QkZnSyxpQkF1QjZCdEw7O1dBR0N5QixpQkFDNUIsV0FwRUYrQyxpQkFtRThCL0M7O1dBRUdHLGlCQUMvQixXQTJKRitELGVBNUppQy9EOztXQUVKQyxpQkFDM0IsV0FnZ0JGcEMsU0FGQU0sa0JBL2Y2QjhCOztHQUNnQztZQUU3RDhKO0lBRUY7O09BR3FDLElBRkQ5TCxlQUFKVixlQUVLLE9BNFZuQzZKLHNCQTlWa0NuSjtPQUNoQyxXQTBmRkosU0FGQU0sa0JBemY4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9Bc2ZuQ0ksU0FGQU0sa0JBdGZvQ3VCO09BQ2xDLFdBdWZGN0IsU0FGQU0sa0JBdGZnQ1Y7O09BS0c7UUFGSW1DO1FBQUoxQjtRQUVBLE9Bc1ZuQ2tKLHNCQXhWdUN4SDtPQUNyQyxXQW9mRi9CLFNBRkFNLGtCQW5mbUNEOztPQUtBO1FBRkc2QjtRQUFKM0I7UUFFQyxPQWdmbkNQLFNBRkFNLGtCQWhmc0M0QjtPQUNwQyxXQWlmRmxDLFNBRkFNLGtCQWhma0NDOztHQUU4QjtZQUVoRTBJLGVBRUN6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztXQUNYNU0sZUFDM0IsV0FzYUY0Six1QkF2YTZCNUo7O09BSU47UUFGVVU7UUFBSlI7UUFFTixPQUFBLDRCQThUdkIySix1QkFoVWlDbko7T0FDL0IsV0EwY0ZlLGNBM2M2QnZCOztXQUdJUztPQUMvQixXQUFpQyw0QkE0VG5Da0osdUJBN1RpQ2xKOztXQUVIRSxpQkFDNUIsV0F3UUZpSixvQkF6UThCako7O1dBRUd5QixpQkFDL0IsV0F3UEZ5SCxvQkF6UGlDekg7O1dBRUhHLGlCQUM1QixXQXFPRm9LLHdCQXRPOEJwSzs7V0FFRUMsaUJBQzlCLFdBbU5Gb0sseUJBcE5nQ3BLOztXQUVDRTtPQUMvQixXQUFpQyw0QkFpT25DaUsseUJBbE9pQ2pLOztXQUVGRSxpQkFDN0IsV0ErTEZtSCw2QkFoTStCbkg7O1dBRUhFLGlCQUMxQixXQWlLRjZILHNCQWxLNEI3SDs7V0FFR0UsaUJBQzdCLFlBeUlGNkoseUJBMUkrQjdKOztXQUVGRztPQUMzQixZQUE2Qiw0QkFjL0IySix3QkFmNkIzSjs7V0FFS0M7T0FDaEM7ZUFDRSw0QkFNSjZHLDZCQVJrQzdHOztXQUdERyxrQkFDL0IsWUE5VUZ5RixlQTZVaUN6Rjs7T0FHc0IsSUFEakJ0QixpQkFBSndCLGtCQUNxQixPQXBWdkR4QyxnQkFtVnNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0M3Qzs7R0FDd0M7WUFFMUV3Ryw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BeldwQ2hNLGdCQW9XRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkF0ZG5DdUUsZ0JBb2RtQzdEO09BQ2pDLFdBb2FGSixTQUZBTSxrQkFuYStCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0EzZHhCZ0QsZUF5ZGtDcEM7T0FDaEMsV0FnWUZDLGVBalk4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWdIRndJLHNCQWpINkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0FwZUUvSSxlQW1lR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQTlZcEN4TSxnQkF5WUdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixNQWpnQlBxRSxlQTZmcUJSO1FBR2QsTUFvRFA4SixrQkF2RGlCdE07UUFFVixPQXVUUGdLLGtCQXpUYTdLO09BRFgsZUE2WEZKLFNBcEJBdUUsWUF4V1NsRTs7T0FNUDtRQUQ0QkU7UUFFVGlOLE9BRlNqTjtRQUVic0MsT0FGYXRDO1FBRWpCc0IsT0FGaUJ0QjtRQUVyQnlCLE9BRnFCekI7UUFNdkIsT0F4Z0JQMEQsZUFvZ0JxQnVKO1FBR2QsT0E2Q1BELGtCQWhEaUIxSztRQUVWLE9BdVBQcUksa0JBelBhcko7T0FEWCxlQXNYRjdCLFNBcEJBdUUsWUFqV1N2Qzs7T0FNUDtRQURnQ0c7UUFFckJKLE9BRnFCSTtRQUV6QkMsT0FGeUJEO1FBR1QsT0E1Z0J6QjhCLGVBMmdCYWxDO09BRFgsZUExZ0JGa0MsZUEyZ0JTN0I7O1dBRXdCRSxpQkFDL0IsV0FyYUZzRyxlQW9haUN0RzttQkFFQUUsaUJBQy9CLFdBRUYwRCxlQUhpQzFEOztHQUNxQjtZQUV0RDBELGVBRUMxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUFoYXpCd2xCLGFBK1pNNUk7SUFDUixXQW1XRUosa0JBbldheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FrQmdDLE1BNWNuQ2xOLGdCQStiRzZNO0tBVzBCLE1BQUEsV0FsQjVCRCxJQUtFRztLQVkwQixNQTJVN0I1TixrQkEzVTJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBYjlDcXFCO2lCQVNNcnFCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BK1ExQnlxQixjQWhSYzdOO0tBQ1IsV0E1aUJONkQsZUEyaUJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FUQ29PO0lBTUwsV0FjRVAsa0JBckJHUSwwQkFJQUo7R0FlSjtZQUVDSix5QkFDaUUscUJBRVg7WUFFdERkLHlCQUdDanBCO0lBQUssT0FFTnVtQixtQkFwT0E4QixrQkFrT0Nyb0I7R0FBMEM7WUFFM0N1bUIsbUJBS0MwRDtJQUFKO0tBSU1TO0tBREFDO0tBREFDO0tBT2tDLE1BdmVyQ3ZOLGdCQWtlR3FOO0lBRUwsV0FDZ0MsV0FQN0JULElBRUVXLFlBQ0FEO0dBT0o7WUFFQzVELHNCQUVDL21CO0lBQUssT0FFTjJuQjtzQkFGMkIzbkIsR0FBSyxPQXdTaEN3YyxTQUZBTSxrQkF0UzJCOWMsR0FBZ0MsR0FBMURBO0dBQTZEO1lBRTlEMm5CLGdCQUtDc0M7SUFBSjtLQUtNWTtLQURBQztLQURBQztLQURBQztLQVNrQyxNQTlmckMzTixnQkF3Zkd3TjtLQUlnQyxNQUtuQ3RELG1CQVhHd0Q7SUFJTCxXQUNpQyxXQVI5QmQsSUFFRWUsa0JBRUFGO0dBUUo7WUFFQ3ZELDBCQUNtRSxxQkFFbkI7WUFFaERwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVFpQyxNQWxoQnBDL04sZ0JBNGdCRzZOO0tBSzJCLE1BQUEsaUNBNVI5QjdDLGtCQXNSRzhDO0lBSUw7WUFxUUUzTyxrQkFwUTRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9Db3JCOzs7WUFHQUg7R0FPSjtZQUVDakM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUFsaUJuQ25PLGdCQTRoQkdpTztLQUs4QixNQW1QakM5TyxTQUZBTSxrQkF2UEd5TztJQUlMLFdBcVBFL08sa0JBcFAyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45Q3dyQixxQkFHQUg7R0FPSjtZQUVDdEM7SUFHSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FTZ0MsTUFuakJuQ3ZPLGdCQTRpQkdxTztLQU0wQixNQTdUN0JyRCxpQkFzVEdzRDtJQUlMO1lBcU9FblA7dUJBbk9nQnhjOzRCQUFxQkEsR0FBSyxPQUFMQSxFQUFNO2VBQXRCLE9BQUEsc0NBQUxBO2NBQThCO2NBUDNDNHJCOzs7WUFHQUg7R0FRSjtZQUVDeEY7SUFFSDtLQUdNNEY7S0FEQUM7S0FEQUM7S0FRbUMsTUFsa0J0QzFPLGdCQTRqQkd3TztJQUVMO1lBZ0NFbkssMkJBcENHcUs7WUFDQUQ7O0dBUUo7WUFFQzlGO0lBRUg7S0FNTWdHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBbUJtQyxNQTNsQnRDaFAsZ0JBNmtCRzJPO0tBWWdDLE1BK0RuQ3RFLGtCQTdFR3dFO0tBYUQ7T0FBQTswQkFNRnhLLDRCQXBCR3lLO2lCQVNNbnNCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BaUkxQnlxQixjQWxJYzdOO0tBQ1IsV0ExckJONkQsZUF5ckJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FUQ2tRO0lBTUw7WUFxTUU1UCxTQUZBTSxrQkExTUd1UDs7OztZQUlBSjs7R0FnQko7WUFFQ3ZLO0lBR0g7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE1BM21CcENwUCxnQkFxbUJHaVA7S0FJMkIsTUFLOUJJLCtCQVhHRjtJQUlMO1lBNktFaFEsa0JBNUs0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFK0M7S0FHWDtNQUZIOVA7TUFBSlY7TUFFTyxNQUFBLGlDQXh0QnBDdUUsZ0JBc3RCaUM3RDtLQUMvQixXQXNFRitQLDJCQXZFNkJ6UTs7UUFHQ0U7SUFDNUIsV0ErSkZJLFNBRkFNLGtCQTlKOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0EwQmtDLE1BcHBCckM5UCxnQkFnb0JHd1A7S0FtQmdDLE1BQUEsaUNBeHZCbkNwTSxnQkFvdUJHcU07S0FtQitCLE1BTWxDcEYsa0JBMUJHcUY7S0FtQjRCLE1BWS9CSyxlQWhDR0o7aUJBZ0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFwdkIxQnlnQixlQW12QmM3RDtLQUNSLFdBcHZCTjZELGVBbXZCVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWhCQ3dQO2lCQVdNanRCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BNkUxQnlxQixjQTlFYzdOO0tBQ1IsV0E5dUJONkQsZUE2dUJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FYQ2dSO0lBUUw7WUFpSkUxUSxrQkFoSjZDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVmhEbXRCOzs7Ozs7O1lBT0FQO0dBcUJKO1lBRUNsRix5QkFDaUUscUJBRWY7WUFFbEQwRjtJQUNFOztTQUU4QmxSO0tBQzlCLFdBQWdDLDRCQUtsQ21SLDhCQU5nQ25SOztRQUVERTtJQUM3QixXQUErQiw0QkE2QmpDa1Isd0JBOUIrQmxSO0dBRTZCO1lBRTVEaVI7SUFHSDtLQUtNRTtLQURBQztLQURBQztLQURBQztLQURBRTtLQVdnQyxNQXJyQm5DdlEsZ0JBOHFCR2tRO0tBS3lCLE1BQUEsaUNBeHhCNUI5TSxnQkFpeEJHZ047S0FNMEIsTUFNN0JkLDJCQWJHZTtJQUtMO1lBb0dFbFIsa0JBbkcyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRTBDO1NBQ1p6UTtLQUM1QixXQUE4Qiw0QkFqeUJoQ3VFLGdCQWd5QjhCdkU7O1FBRUNFO0lBQzdCLFdBQStCLDRCQUVqQ2tSLHdCQUgrQmxSO0dBQ3NDO1lBRXJFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVdnQyxNQTlzQm5DNVEsZ0JBdXNCR3dRO0tBSzBCLE1BanpCN0JwTixlQTB5QkdzTjtLQU02QixNQU1oQ3RHLGtCQWJHdUc7SUFLTDtZQTJFRXhSLGtCQTFFMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ2lFLHFCQUViO1lBRXBEZ0Q7SUFDRixzQkFDZ0MsaUJBQ0ksa0JBQ0o7O0dBQTBCO1lBRXhEM0U7SUFFSDtLQUtNb0k7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FVaUMsTUF6dUJwQ2pSLGdCQWt1Qkc4UTtpQkFNeUNudUIsR0FBSyxPQUFMQSxFQUFNO0lBQXBCO0tBQUEsTUFBQSxpQ0FQM0JvdUI7S0FNMkIsTUE1MEI5QjNOLGVBcTBCRzROO0lBS0w7WUErQ0U3UixrQkE5QzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUC9Dc3VCOzs7O1lBSUFKO0dBUUo7WUFFQy9JO0lBRUY7S0FFb0QsSUFEdEJ2SSxlQUFKVixlQUMwQixNQXQxQmxEdUUsZUFxMUI0QjdEO0tBQzFCLFdBbUNGSixTQXBCQXVFLFlBaEJ3QjdFOztRQUVHRTtJQUN6QixXQXgxQkZxRSxlQXUxQjJCckU7R0FDcUI7WUFFaERrQztJQUNGLDhCQUM4QjsyQkFDRnBDLGVBQU0sV0FBTkE7UUFDQUU7SUFBTSxXQUFOQTtHQUFrQztZQUU1RDZILHdCQUMrRCxxQkFFakI7WUFFOUNsRCxXQUFvRS9nQixHQUFLLE9BQUxBLEVBQU07WUFFMUUyZCxxQkFDRixxQkFFMEQ7WUFFeERIO0lBQ0Y7O1dBQ3dDWixlQUFKViw4QkFDc0JsYyxHQUFLLE9BQUxBLEVBQU07T0FBNUQsV0FEZ0NrYyxJQUNNLHNDQURGVTs7V0FFUlIsaUJBQU0sV0FBTkE7O09BR047UUFGYWlDO1FBQUp4Qjt1QkFFTzdjLEdBQUssT0FBTEEsRUFBTTtRQUF0QixNQUFBLHNDQUZhcWU7T0FDbkMsV0FEK0J4Qjs7V0FHRzBCLGlCQUFKeEIsZ0NBQ3NCL2MsR0FBSyxPQUFMQSxFQUFNO09BQTFELFdBRDhCK2MsTUFDTSxzQ0FERndCOztHQUM2QjtZQUVqRXpCLGlCQUFvRDljLEdBQUssT0FBTEEsRUFBTTtZQUUxRHdjLFNBR0N5TjtJQUFKLElBQStCMXBCLGdCQUF0Qlk7SUFDUixXQUF5QixXQUR0QjhvQixJQUFLOW9CLE1BQXNCWjtHQUM2QztZQUV6RW1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07Ozs7T0F2cUNqRGljO09BUUpJO09BY0FFO09BU0FJO09BVUFLO09BZUFvWDtPQUVBN1c7T0FxSEFpRjtPQVFBRztPQWVBdEM7T0FNQTVCO09BWUE0VjtPQUdBM1c7T0FlQTRDO09BY0FnVTtPQUVBdFE7T0E4Q0F2RDtPQWVBOFQ7T0FFQWpYO09BSUFtSDtPQWtDQUk7T0FXQUQ7T0FhQUk7T0FTQUw7T0FhQXRIO09BSUErSDtPQWFBSTtPQVFBcko7T0FJQXVKO09BUUFHO09BcUNBUztPQUtBRjtPQUlBSztPQWFBSTtPQWdDQTdFO09BUUFrRjtPQWFBSTtPQTJCQUU7T0FRQWxGO09BSUE0RDtPQWdCQTNFO09BYUE0RztPQW9CQUM7T0FRQUM7T0FhQUk7T0FvQkFDO09BZ0JBakQ7T0FJQWtEO09BUUFHO09Bb0NBekM7T0FLQTZDO09BSUFwQztPQWFBd0M7T0FnQkFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FNQThEO09BNEJBdUQ7T0FLQWQ7T0FLQTFDO09BaUJBUTtPQUlBWTtPQW1CQUo7T0FLQXBCO09BZ0JBNkM7T0FnQkFEO09BaUJBOUM7T0FjQUQ7T0F5QkF0RTtPQWdCQWdMO09BU0EzRztPQWlDQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FNQTNFO09BaUJBWDtPQVFBN0c7T0FNQTJGO09BS0FsRDtPQUVBcEQ7T0FLQUg7T0FXQVY7T0FFQU47T0FNQWtJOzs7O0U7Ozs7OztHQ3hwQ2M7O0lBbStCWi9pQjtJQUNBQztJQXArQlk7SUE4Q0M7SUFvN0JILGFBQ1ZELHVCQUNBQzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNwL0JGbWEsZ0JBQWdCeGIsS0FBSXliO0lBQ3RCLE9BQUEsbUNBRGtCemIsV0FBSXliO0dBRW9EO1lBRXhFd1ksV0FBV2gxQixHQUFFUTtJQUFJLEtBQUpBLEdBQXlCO1FBQVl3RSxNQUFyQ3hFO0lBQTBDLFdBQUssV0FBakRSLEdBQXVDZ0Y7R0FBZTtZQUU3RHlYO0lBRU4sdUJBQzZCQyxlQUN6QixXQWthRkMsZUFuYTJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU0wQixPQXBCN0IyWixXQXdCQWpZLHlCQVRHekI7SUFHTCxXQXlwQ0UwQixrQkF4cEM0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhLGtCQUVBeUI7R0FNSjtZQUVDQztJQUdILElBQW9DRSxzQkFBOUJDO0lBQ0wsV0FLRUMsNkJBTkdELGFBQThCRDtHQUlsQztZQUVDRTtJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlI7T0FDMUIsV0FEMEJBLE1BckM1Qm9ZLG9CQXNDa0R4MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHhCNGM7O1dBRUhDLGlCQUMzQixXQUQyQkE7bUJBRURFLGlCQUFNLFdBQU5BOztHQUFvQztZQUVoRUM7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVNpQyxPQXdWcENDLGdCQTlWR0o7S0FLZ0MsT0FzUW5DSyxvQkE1UUdKO0lBR0wsV0FPRUsscUJBWkdILFlBQ0FEO0dBU0o7WUFFQ0k7SUFFRiw4QkFxSHdDOzs7V0FwSFRyQixlQUMzQixXQTZtQ0ZNLFNBRkFNLGtCQTVtQzZCWjs7V0FFR0UsaUJBQzlCLFdBK2xDRm9CLGNBaG1DZ0NwQjs7T0FJdUI7UUFGbkJxQjtRQUFKYjtRQUFKQztRQUUyQixPQXhCdkRHLGdCQXNCb0NTO1FBRWIsT0FBQSw0QkE0SnZCQyxvQkE5SmdDZDtPQUM5QixXQXdsQ0ZlLGNBemxDNEJkOztXQUdJRTtPQUM5QixXQUFnQyw0QkEySWxDMEIsV0E1SWdDMUI7O09BTzFCO1FBTGtDa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS3RCLE9BaENOeEIsZ0JBMkJ3Q2lEO1FBSWxDLE9Bb0tOSyxhQXhLb0NqQjtRQUc5QixPQXpFTm1WLFdBMkNBeFgsaUJBMkJnQ3FCO09BQzlCLFdBc2tDRkMsZUF2a0M0QkU7O09BU3RCO1FBSDRCRDtRQUFKSTs7bUJBSWpCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F2QzlCZ2QsZ0JBc0NrQko7V0FDUixXQTJqQ1YwQixlQTVqQ2NwQztVQUNtQztRQUgzQyxPQUFBLGtDQUg0QnFDO09BQ2hDLFdBbENGdkIsZ0JBaUM4QjJCOztPQVNzQjtRQURsQkQ7UUFBSkU7UUFDc0IsT0FBQSw0QkEySHBESCxXQTVIa0NDO09BQ2hDLFdBMUNGMUIsZ0JBeUM4QjRCOztPQUdvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0FBQSw0QkF5SGxETCxXQTFIZ0NJO09BQzlCLFdBNUNGN0IsZ0JBMkM0QjhCOztXQUVDRTtPQUMzQixXQUE2Qiw0QkE5Qy9CaEMsaUJBNkM2QmdDOztPQUlNO1FBRkdEO1FBQUpHO1FBRUMsT0E1Rm5Dc1YsV0EyQ0F4WCxpQkErQ3NDK0I7T0FDcEMsV0FnbENGdkMsU0FGQU0sa0JBL2tDa0NvQzs7V0FHRUQsaUJBQUpHO09BQzlCLFlBRDhCQSxNQTdGaENvVixXQTJDQXhYLGlCQWtEb0NpQzs7T0FVOUI7UUFQNkJFO1FBQUpJO1FBT3pCLE9BdkdOaVYsV0EyQ0F4WCxpQkFxRG1DbUM7O21CQUd0Qm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BMUR6Q2dkLGdCQXlEa0JKO1dBQ1IsV0Fza0NWSixTQUZBTSxrQkFya0NjWjtVQUM4QztPQUoxRCxZQUNJLGtDQUZ5QnFEOztPQVVOO1FBRlNEO1FBQUpFO1FBRUwsT0Fpa0N6QmhELFNBRkFNLGtCQWprQ2tDd0M7T0FDaEMsWUE5REZ0QyxnQkE2RDhCd0M7O09BS3lCO1FBRmRDO1FBQUpDO1FBQUpDO1FBRXNCLE9BbEV2RDNDLGdCQWdFeUN5QztRQUVoQixPQThqQ3pCakQsU0FGQU0sa0JBOWpDcUM0QztPQUNuQyxZQWpFRjFDLGdCQWdFaUMyQzs7V0FHSkU7T0FDM0IsWUFBNkIsNEJBcEUvQjdDLGlCQW1FNkI2Qzs7T0FJZ0I7UUFGRks7UUFBSk47UUFBSkc7UUFFVSxPQWxIN0N5VSxXQTJDQXhYLGlCQXFFMkNrRDtRQUVsQixPQXZFekJsRCxnQkFxRXVDNEM7T0FDckMsWUF0RUY1QyxnQkFxRW1DK0M7O09BSW9CLElBRGxCRCxrQkFBSk0sa0JBQ3NCLE9BekV2RHBELGdCQXdFcUM4QztPQUNuQyxZQXpFRjlDLGdCQXdFaUNvRDs7T0FHbUIsSUFEbEJELGtCQUFKSyxrQkFDc0IsT0EzRXBEeEQsZ0JBMEVrQ21EO09BQ2hDLFlBM0VGbkQsZ0JBMEU4QndEOztPQVF4QjtRQU5zQ1I7UUFBSmdLO1FBQUp0SjtRQUFKSDtRQUFKSztRQU10QixPQWxGTjVELGdCQTRFNENnRDtRQUt0QyxPQThFTkssb0JBbkZ3QzJKO1FBSWxDLE9BaEZOaE4sZ0JBNEVvQzBEO1FBRzlCLE9BL0VOMUQsZ0JBNEVnQ3VEO09BQzlCLFlBc0hGRCxhQXZINEJNOztPQVE2QixJQURsQkQsa0JBQUpHLGtCQUNzQixPQThLekRMLGVBL0t1Q0U7T0FDckMsWUFwRkYzRCxnQkFtRm1DOEQ7O09BSW9CO1FBRmhCTTtRQUFKUDtRQUFKRztRQUV3QixPQTJLdkRQLGVBN0t1Q1c7UUFFZCxPQWxJekJvVCxXQTZTQS9ULGdCQTdLbUNJO09BQ2pDLFlBdEZGN0QsZ0JBcUYrQmdFOztPQUlvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0F1aUNuRDFFLFNBbkJBdUUsWUFyaENpQ0U7T0FDL0IsWUF6RkZqRSxnQkF3RjZCa0U7O1dBRUZDLGtCQUN6QixZQXFpQ0YzRSxTQUZBTSxrQkFwaUMyQnFFOztPQUlFLElBRlVFLGtCQUFKQyxrQkFFTixPQTlGN0J0RSxnQkE0RnVDcUU7T0FDckMsWUFtaUNGN0UsU0FuQkF1RSxZQWpoQ21DTzs7O1FBR0hHOzttQkFHcEJ6aEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFc0IsT0FwR2xDZ2QsZ0JBbUdpQko7V0FDUixXQTRoQ1RKLFNBbkJBdUUsWUExZ0NhN0U7VUFDd0M7T0FKbkQsWUFDRSxrQ0FGNEJ1Rjs7T0FlMUI7UUFSb0N3UDtRQUFKelA7UUFBSkc7UUFRNUIsT0E5R04zRSxnQkFzRzBDaVU7UUFPcEMsT0F1Y04xUCxpQkE5Y3NDQztPQUNwQztlQXloQ0ZoRjs7a0JBdmhDUTttQkFDWSxPQXpKcEJULGdCQXFKa0M0RjtzQkFLakIzaEI7a0JBQUssT0FBTEE7aUJBQU87aUJBTFUyaEI7Ozs7T0FXRSxJQUZLRSxrQkFBSkQsa0JBRUQsT0FqSHBDNUUsZ0JBK0d5QzZFO09BQ3ZDLFlBMjFCRkgsMkJBNTFCcUNFOztXQUdQRSxrQkFDNUIsWUFuSEY5RSxnQkFrSDhCOEU7O1dBRUZDLGtCQUMxQixZQXJIRi9FLGdCQW9INEIrRTs7T0FJSDtRQUZRRTtRQUFKQztRQUVKLE9Bbkt6QnNTLFdBNlNBL1QsZ0JBNUlpQ3dCO09BQy9CLFlBdkhGakYsZ0JBc0g2QmtGOztXQUdDQyxrQkFDNUIsWUEwV0ZILHFCQTNXOEJHOztPQUlDLElBRktDLGtCQUFKQyxrQkFFRCxPQTdIL0JyRixnQkEySG9Db0Y7T0FDbEMsWUFvZ0NGNUYsa0JBbmdDbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT3FpQjs7V0FHSkUsa0JBQzFCLFlBcWJGaEIsaUJBdGI0QmdCOztPQUc2QixJQUR4QjJPLGtCQUFKek8sa0JBQzRCLE9Bakl6RHpGLGdCQWdJaUNrVTtPQUMvQixZQTJaRjVPLHNCQTVaNkJHOztXQUVBdU8sa0JBQzNCLFlBS0Z4TyxXQU42QndPO21CQUVJRyxrQkFDL0IsWUFpcEJGek8sZUFscEJpQ3lPOztHQUV1QztZQUV4RTNPO0lBQ0g7S0FBc0QxVDtLQUF4QkM7S0FBeEJDO0tBSXNCLE9BN0l6QmdPLGdCQXlJbURsTztLQUcxQixPQUFBLDRCQUl6QjZULGlCQVAyQjVUO0lBQzdCLFdBTUU0VCxnQkFQRzNUO0dBS0o7WUFFQzJUO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMEIsT0EzSjdCL0YsZ0JBcUpHNkY7S0FLMEIsT0F5QzdCdkMsYUEvQ0d3QztJQUlMO1lBdytCRXRHLGtCQXYrQjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjdDK2lCOzs7WUFHQUg7R0FPSjtZQUVDdkMsMkJBRUYscUJBRW9EO1lBRWxENUI7SUFDSDtLQUdNbkU7S0FEQUM7S0FEQUM7S0FPd0IsT0E5SzNCd0MsZ0JBeUtHMUM7S0FJMEIsT0F4TjdCa2EsV0EyQ0F4WCxpQkF3S0d6QztJQUdMLFdBd0JFK0YsYUE1Qkc5RjtHQVFKO1lBRUM2WixXQUNDcjBCLEdBQUssT0FBQSw0QkFiTnllLFdBYUN6ZSxHQUF5QjtZQUUxQjBkO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUWdDLE9BcUtuQ3JHLGdCQTNLR2tHO0tBSzBCLE9BOUw3QnZHLGdCQXdMR3lHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUlNc0Q7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0FzSnBDMUcsZ0JBNUpHdUc7S0FLZ0MsT0FvRW5DdEcsb0JBMUVHdUc7SUFHTCxXQU9FRyxrQkFaR0QsWUFDQUQ7R0FTSjtZQUVDRTtJQUNtRSw4QkFDckM7OztXQUNIOUgsZUFDekIsV0EyNkJGTSxrQkEzNkI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUR2QmtjOztPQUdzQjtRQURmVTtRQUFKUjtRQUNtQixPQXk2QmpESSxrQkF6NkIrRHhjLEdBQUssT0FBTEEsRUFBTSxHQURuQzRjO09BQ2hDLFdBcEJGMEQsYUFtQjhCbEU7O1dBRUVTLGlCQUM5QixXQTI1QkZXLGNBNTVCZ0NYOztPQUdxQixJQURoQndCLGlCQUFKdEIsaUJBQ29CLE9BeTVCckRTLGNBMTVCcUNhO09BQ25DLFdBeTVCRmIsY0ExNUJpQ1Q7O1dBRUp5QjtPQUMzQixXQUE2Qiw0QkExQi9COEIsY0F5QjZCOUI7O09BSU07UUFGR0Q7UUFBSkk7UUFFQyxPQTNRbkM2VixXQThPQWxVLGNBMkJzQy9CO09BQ3BDLFdBaTZCRi9CLFNBRkFNLGtCQWg2QmtDNkI7O1dBR0VELGlCQUFKRTtPQUM5QixXQUQ4QkEsTUE1UWhDNFYsV0E4T0FsVSxjQThCb0M1Qjs7T0FTOUI7UUFQNkJHO1FBQUpDO1FBT3pCLE9BODNCTm1GLGlCQXI0Qm1DcEY7O21CQUd0QjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BckN6Q3NnQixhQW9Da0IxRDtXQUNSLFdBdzVCVkosU0FGQU0sa0JBdjVCY1o7VUFDMkM7T0FKdkQsV0FDSSxrQ0FGeUI0Qzs7V0FRRkU7T0FDM0IsV0FBNkIsNEJBekMvQnNCLGNBd0M2QnRCOztPQUdpQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BM0M5Q29CLGFBMEMrQnZCO09BQzdCLFdBM0NGdUIsYUEwQzJCcEI7O09BRzJCLElBRGZELGlCQUFKRyxpQkFDbUIsT0FrQnREcUIsZUFuQnVDeEI7T0FDckMsWUE3Q0ZxQixhQTRDbUNsQjs7V0FFUEcsa0JBQzFCLFlBODRCRi9DLFNBRkFNLGtCQTc0QjRCeUM7O1dBRUFDLGtCQUMxQixZQWpERmMsYUFnRDRCZDs7V0FFRUc7T0FDNUI7ZUEwNEJGbkQ7O2tCQXg0Qk87bUJBQ1ksT0F4U25CVCxnQkFvUzhCNEQ7c0JBSXNDM2Y7a0JBQUssT0FBTEE7aUJBQU87aUJBSjdDMmY7O1dBTUdFLGtCQUMvQixZQXpERlMsYUF3RGlDVDs7V0FFQUUsa0JBQy9CLFlBd2hCRjJDLGVBemhCaUMzQzs7T0FHNEIsSUFENUJaLGlCQUFKaUIsa0JBQ2dDLE9BN0Q3REUsYUE0RGlDbkI7T0FDL0IsWUFnNEJGM0MsU0FGQU0sa0JBLzNCNkJzRDs7R0FDZ0Q7WUFFN0VLO0lBRUg7S0FJTTREO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9Bc0ZwQ25ILGdCQTVGR2dIO0tBS2dDLE9BSW5DL0csb0JBVkdnSDtJQUdMLFdBVUVHLG9CQWZHRCxZQUNBRDtHQVNKO1lBRUNqSCxvQkFDQ3RkO0lBQUssT0FBQSw0QkFvM0JOMGtCLGVBcDNCQzFrQjtHQUE2QjtZQUU5QnlrQjtJQUVGLDhCQUNnQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdnQjtRQUZMdUI7UUFBSmI7UUFBSlI7UUFFYSxPQXpCM0NxRSxlQXVCc0NoRDtRQUVkLE9BekJ4QmdELGVBdUJrQzdEO09BQ2hDLFdBdzBCRjBCLGVBejBCOEJsQzs7V0FHRFM7T0FDM0IsV0FBNkIsNEJBM0IvQjRELGdCQTBCNkI1RDs7T0FJTTtRQUZBd0I7UUFBSnRCO1FBRUksT0FBQSw0QkE5Qm5DMEQsZ0JBNEJtQ3BDO09BQ2pDLFdBaTJCRjdCLFNBRkFNLGtCQWgyQitCQzs7T0FLSyxJQUZEd0IsaUJBQUpDLGlCQUVLLE9BcTBCcEN5RixpQkF2MEJtQzFGO09BQ2pDLFdBQ0csNEJBb0RMb0csbUJBdEQrQm5HOztPQUtJO1FBRkRFO1FBQUpDO1FBRUssT0FBQSw0QkFwQ25DOEIsZ0JBa0NrQy9CO09BQ2hDLFdBMjFCRmxDLFNBRkFNLGtCQTExQjhCNkI7O1dBR0lFLGlCQUFKRDtPQUM1QixXQXRDRjZCLGVBcUM4QjdCLE9BQUlDOztPQU01QjtRQUprQ1E7UUFBSk47UUFBSkQ7UUFJMUI7VUF4Vk4wVjtxQkF3VnNCeDBCLEdBQUssT0FBQSw0QkFnMEIzQitnQixZQWgwQnNCL2dCLEdBQTBCO1lBSlJxZjtRQUdsQyxPQTR6Qk40RSxpQkEvekJvQ2xGO09BQ2xDO2VBQ0ksNEJBc0JONkYsZ0JBeEJnQzlGOzs7O09BT3FCO1FBRnBCRztRQUFKRDtRQUV3QixPQTlDckR5QixlQTRDaUN4Qjt3QkFFZGpmLEdBQUssT0FnMUJ4QndjLGtCQWgxQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZ3QmdmOztXQUdFRSxpQkFDN0IsV0FJRjJGLGtCQUwrQjNGO21CQUVFRSxpQkFDL0IsWUFrZUZzRCxlQW5laUN0RDs7R0FDcUI7WUFFdER5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0E1RG5DeWdCLGVBMkRZN0Q7S0FDUixXQWswQkpKLFNBRkFNLGtCQWowQlFaO0lBQzZDO0lBSHJELFdBQUEsa0NBRk1VO0lBQ1IsV0FzMEJFSixTQUZBTSxrQkFyMEJFWjtHQU1JO1lBRU4wSTtJQUVIO0tBR01FO0tBREFDO0tBREF4TjtLQU9nQyxPQXlCbkM4RixnQkE5Qkd5SDtJQUVMLFdBTUVFLG9CQVZHek4sV0FDQXdOO0dBT0o7WUFFQ0M7SUFFRjtLQUdtQztNQUZEdkg7TUFBSmI7TUFBSlY7TUFFUyxPQUFBLDRCQWpGakN1RSxnQkErRWdDaEQ7S0FDOUIsV0E4eUJGakIsU0FuQkF1RSxZQTV4QndCN0UsS0FBSVU7O1FBR0RSO0lBQ3pCLFdBbkZGcUUsZUFrRjJCckU7R0FDcUI7WUFFaER1STtJQUVIO0tBR01NO0tBREFDO0tBREExTjtLQU9nQyxPQUduQzZGLGdCQVJHNEg7SUFFTCxXQTR2QkVFLHVCQWh3QkczTixXQUNBME47R0FPSjtZQUVDN0gsZ0JBRUNyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU04QixPQUlqQ0MsYUFUR0Y7SUFHTCxXQWl4QkU5SSxrQkFoeEI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQ3VsQixrQkFFQUY7R0FNSjtZQUVDRztJQUNGOztXQUN5QnRKLGVBQU0sV0FNN0JDLGVBTnVCRDs7V0FDQUUsaUJBQU0sV0F1UjdCcUosZUF2UnVCcko7O1dBQ0FTLGlCQUFNLFdBdkg3QjRELGVBdUh1QjVEOztPQUVvQjtRQURmRDtRQUFKRztRQUNtQixPQXRhM0N5WCxXQTJDQXhYLGlCQTBYNEJKO09BQzFCLFdBeExGMEQsYUF1THdCdkQ7O0dBQ2lEO1lBRXpFWixlQUVDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztPQUVXLElBRGxCakosZUFBSlYsZUFDc0IsT0F6Q25EbUIsZ0JBd0NpQ1Q7T0FDL0IsV0E3WUZJLGdCQTRZNkJkOztPQUlOO1FBRldtQztRQUFKakM7UUFFUCxPQUFBLDRCQTVOdkJzQixvQkEwTmtDVztPQUNoQyxXQWd1QkZWLGNBanVCOEJ2Qjs7V0FHR1MsaUJBQy9CLFdBdXJCRmlKLHVCQXhyQmlDako7O09BSVY7UUFGVTBCO1FBQUp4QjtRQUVOLE9BQUEsNEJBK2tCdkJnSix1QkFqbEJpQ3hIO09BQy9CLFdBMnRCRlosY0E1dEI2Qlo7O1dBR0N5QixpQkFDNUIsV0EyaEJGd0gsb0JBNWhCOEJ4SDs7V0FFR0csaUJBQy9CLFdBMmdCRnNILG9CQTVnQmlDdEg7O1dBRUhDLGlCQUM1QixXQXFJRnNILG9CQXRJOEJ0SDs7V0FFR0U7T0FDL0IsV0FBaUMsNEJBbUluQ29ILHFCQXBJaUNwSDs7V0FFRkUsaUJBQzdCLFdBZ2RGbUgsNkJBamQrQm5IOztXQUVIRSxpQkFDMUIsV0EySEZvRCxzQkE1SDRCcEQ7O1dBRUNFO09BQzNCLFlBQTZCLDRCQWdCL0JnSCx3QkFqQjZCaEg7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBeVJKOEcsNkJBM1JrQzlHOztXQUdIQyxrQkFDN0IsWUFNRjhHLHlCQVArQjlHOztXQUVFRyxrQkFDL0IsWUFsRUZ5RixlQWlFaUN6Rjs7T0FHc0IsSUFEakJqQixpQkFBSm1CLGtCQUNxQixPQXhFdkR4QyxnQkF1RXNDcUI7T0FDcEMsWUEwV0ZnRSxlQTNXa0M3Qzs7R0FDd0M7WUFFMUV5Ryx5QkFHQ3RtQjtJQUFLLE9BaVpOdW1CLG1CQTlRQWhGLGtCQW5JQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9BdVdOd21CLGlCQXJXQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQTdGbkN2SixnQkF3RkdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkRqSztRQUFKVjtRQUVLLE9BQUEsNEJBdk1uQ3VFLGdCQXFNa0M3RDtPQUNoQyxXQXdyQkZKLFNBRkFNLGtCQXZyQjhCWjs7V0FHRUUsaUJBQzlCLFdBeUJGNEYscUJBMUJnQzVGOztPQU8xQjtRQUxpQzZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLckIsT0ExQk40SixnQkFxQnVDeEc7UUFJakMsT0E3UU5LLGFBeVFtQzdDO1FBRzdCLE9BMWZOK1csV0EyQ0F4WCxpQkE0YytCcUI7T0FDN0IsV0FxcEJGQyxlQXRwQjJCekI7O09BU3JCO1FBSDJCMEI7UUFBSnhCOzttQkFJaEIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXhkOUJnZCxnQkF1ZGtCSjtXQUNSLFdBMG9CVjBCLGVBM29CY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDJCcUM7T0FDL0IsV0E1QkZrSSxnQkEyQjZCMUo7O09BVTBCO1FBRnBCc0M7UUFBSlg7UUFBSkY7UUFFNEIsT0FyQ3ZEaUksZ0JBbUNtQ3BIO1FBRVosT0FBQSw0QkF4U3ZCM0Isb0JBc1MrQmdCO09BQzdCLFdBb3BCRmYsY0FycEIyQmE7O09BSTZCLElBRGxCSyxpQkFBSkYsaUJBQ3NCLE9BME94RG1JLGdCQTNPc0NqSTtPQUNwQyxXQXZDRjRILGdCQXNDa0M5SDs7V0FFRkMsaUJBQzlCLFdBc1RGOEQsZUF2VGdDOUQ7O09BR3dCLElBRHhCRyxpQkFBSkQsaUJBQzRCLE9BM0N4RDJILGdCQTBDZ0MxSDtPQUM5QixXQWlYRmdJLHNCQWxYNEJqSTs7R0FDK0M7WUFFM0VrRDtJQUVIO0tBQW9DZ0Y7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyxrQkFOaUNGO0lBQ25DLFdBcFNFMUcsYUFtU0cyRztHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0FsSm5DaEssZ0JBNklHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7UUFJekI7VUEzaUJOc1k7cUJBMmlCc0J4MEIsR0FBSyxPQWdvQjNCd2Msa0JBaG9CeUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCLEdBSlh5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQTZXRjJLLG1CQTlXK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9BMGpCOUJvSSxrQkEzakJhcEo7T0FEWCxlQThuQkY3QixTQW5CQXVFLFlBMW1CU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9BNmY5QmlJLGtCQTlmYW5KO09BRFgsZUEwbkJGL0IsU0FuQkF1RSxZQXRtQlN2Qzs7T0FHUDtRQUQrQkc7UUFFcEJELE9BRm9CQztRQUV4QkMsT0FGd0JEO1FBR1IsT0ExUXpCOEIsZUF5UWEvQjtPQURYLGVBeFFGK0IsZUF5UVM3Qjs7V0FFeUJFLGlCQUNoQyxXQTlnQkY5QixnQkE2Z0JrQzhCOztXQUVGRSxpQkFDOUIsV0F4S0ZvRyxlQXVLZ0NwRzttQkFFQUUsaUJBQzlCLFdBb1FGd0QsZUFyUWdDeEQ7O0dBQ3FCO1lBRXJEc0k7SUFFRix1QkFDZ0N0TCxlQUM1QixXQXRSRnVFLGVBcVI4QnZFO0lBRzJCLElBRHJCVSxlQUFKUixpQkFDeUIsT0ExaEJ6RFksZ0JBeWhCb0NKO0lBQ2xDLFdBZ1ZGMkssbUJBalZnQ25MO0dBQzRDO1lBRTVFa0csc0JBRUN0aUI7SUFBSyxPQXlUTjJuQixnQkFuU0FwRyxrQkF0QkN2aEI7R0FBdUM7WUFFeENrbUI7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FhZ0MsT0E1TW5DMUssZ0JBaU1Hd0s7S0FVMEIsT0FLN0J0RyxpQkFoQkd1RztJQUlMO1lBd2xCRXRMOztlQXJsQkk7Z0JBRVksT0E1bEJoQlQ7eUJBa2xCR2dNO21CQVNVL25CO2VBQUssT0FBTEE7Y0FDMkQ7Y0FWckUrbkI7OztZQUdBSDtHQVlKO1lBRUNyRztJQUVIO0tBR015RztLQURBQztLQURBQztLQU9pQyxPQTFOcEM3SyxnQkFxTkcySztJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQytCak0sZUFDM0IsV0EyakJGTSxTQUZBTSxrQkExakI2Qlo7O1dBRUlFLGlCQUMvQixXQTFNRkQsZUF5TWlDQzs7T0FHcEI7UUFEdUJRO1FBQUpDO1FBQ25CLFFBWWJ1TCx1QkFiZ0N2TDtRQUN2QnRYO1FBQUh2RjtPQUNKLFdBRElBLEdBQUd1RixHQXJCVGdjLGlCQW9Cb0MzRTs7T0FJaUIsSUFEbkJ5QixpQkFBSnRCLGlCQUN1QixPQXhCckR3RSxpQkF1QmtDbEQ7T0FDaEMsV0F4QkZrRCxpQkF1QjhCeEU7O09BSUosSUFGYXdCLGlCQUFKQyxpQkFFVCxPQWUxQjZKLGlCQWpCdUM5SjtPQUNyQyxXQTFCRmdELGlCQXlCbUMvQzs7V0FHTEcsaUJBQzVCLFdBamxCRjNCLGdCQWdsQjhCMkI7bUJBRUdDLGlCQUMvQixXQW1NRjhELGVBcE1pQzlEOztHQUNxQjtZQUV0RHdKO0lBR0YsWUFDNEI7SUFHdEIsSUFGeUJ4TCxlQUFKVixlQUVyQixXQUVKbU0saUJBSjZCekw7SUFDM0I7WUFxaUJGSjs7ZUFyaUJhLFlBQWtCO21CQUFXeGM7ZUFBSyxPQUFMQTtjQUFPO2NBRHhCa2M7O0dBRU87WUFFaENtTTtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2lDLE9BcFFwQ25MLGdCQStQR2lMO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0J2TSxlQUMzQixXQWloQkZNLFNBRkFNLGtCQWhoQjZCWjs7V0FFSUUsaUJBQy9CLFdBOEJGcUosZUEvQmlDcko7O09BR3BCO1FBRHVCUTtRQUFKQztRQUNuQixRQTlCYnVMLHVCQTZCZ0N2TDtRQUN2QnRYO1FBQUh2RjtPQUNKLFdBRElBLEdBQUd1RixHQXJCVDhpQixpQkFvQm9Dekw7O09BS1Y7UUFGT3lCO1FBQUp0QjtRQUVILE9BQUEsNEJBUTFCMkwsc0JBVmlDcks7T0FDL0IsV0F4QkZnSyxpQkF1QjZCdEw7O1dBR0N5QixpQkFDNUIsV0FyRUYrQyxpQkFvRThCL0M7O1dBRUdHLGlCQUMvQixXQTJKRitELGVBNUppQy9EOztXQUVKQyxpQkFDM0IsV0FtZ0JGcEMsU0FGQU0sa0JBbGdCNkI4Qjs7R0FDZ0M7WUFFN0Q4SjtJQUVGOztPQUdxQyxJQUZEOUwsZUFBSlYsZUFFSyxPQWdXbkM2SixzQkFsV2tDbko7T0FDaEMsV0E2ZkZKLFNBRkFNLGtCQTVmOEJaOztPQUtLO1FBRkNtQztRQUFKakM7UUFFRyxPQXlmbkNJLFNBRkFNLGtCQXpmb0N1QjtPQUNsQyxXQTBmRjdCLFNBRkFNLGtCQXpmZ0NWOztPQUtHO1FBRkltQztRQUFKMUI7UUFFQSxPQTBWbkNrSixzQkE1VnVDeEg7T0FDckMsV0F1ZkYvQixTQUZBTSxrQkF0Zm1DRDs7T0FLQTtRQUZHNkI7UUFBSjNCO1FBRUMsT0FtZm5DUCxTQUZBTSxrQkFuZnNDNEI7T0FDcEMsV0FvZkZsQyxTQUZBTSxrQkFuZmtDQzs7R0FFOEI7WUFFaEUwSSxlQUVDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7V0FDWDVNLGVBQzNCLFdBMGFGNEosdUJBM2E2QjVKOztPQUlOO1FBRlVVO1FBQUpSO1FBRU4sT0FBQSw0QkFrVXZCMkosdUJBcFVpQ25KO09BQy9CLFdBOGNGZSxjQS9jNkJ2Qjs7V0FHSVM7T0FDL0IsV0FBaUMsNEJBZ1VuQ2tKLHVCQWpVaUNsSjs7V0FFSEUsaUJBQzVCLFdBNFFGaUosb0JBN1E4QmpKOztXQUVHeUIsaUJBQy9CLFdBNFBGeUgsb0JBN1BpQ3pIOztXQUVIRyxpQkFDNUIsV0FxT0ZvSyx3QkF0TzhCcEs7O1dBRUVDLGlCQUM5QixXQW1ORm9LLHlCQXBOZ0NwSzs7V0FFQ0U7T0FDL0IsV0FBaUMsNEJBaU9uQ2lLLHlCQWxPaUNqSzs7V0FFRkUsaUJBQzdCLFdBK0xGbUgsNkJBaE0rQm5IOztXQUVIRSxpQkFDMUIsV0FpS0Y2SCxzQkFsSzRCN0g7O1dBRUdFLGlCQUM3QixZQXlJRjZKLHlCQTFJK0I3Sjs7V0FFRkc7T0FDM0IsWUFBNkIsNEJBYy9CMkosd0JBZjZCM0o7O1dBRUtDO09BQ2hDO2VBQ0UsNEJBTUo2Ryw2QkFSa0M3Rzs7V0FHREcsa0JBQy9CLFlBblZGeUYsZUFrVmlDekY7O09BR3NCLElBRGpCdEIsaUJBQUp3QixrQkFDcUIsT0F6VnZEeEMsZ0JBd1ZzQ2dCO09BQ3BDLFlBeUZGcUUsZUExRmtDN0M7O0dBQ3dDO1lBRTFFd0csNEJBR0NybUI7SUFBSyxPQTBGTndtQixpQkFwRkFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FzRk53bUIsaUJBcEZBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUVIO0tBR01xQztLQURBQztLQURBQztLQU9pQyxPQTlXcENoTSxnQkF5V0c4TDtJQUVMLFdBTUVHLHFCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkExTTtRQUFKVjtRQUVJLE9BQUEsNEJBeGRuQ3VFLGdCQXNkbUM3RDtPQUNqQyxXQXVhRkosU0FGQU0sa0JBdGErQlo7O1dBR0VFLGlCQUMvQixXQVNGbU4scUJBVmlDbk47O09BSVU7UUFGTHFCO1FBQUpZO1FBQUp4QjtRQUVhLE9BdkIzQ2lLLGdCQXFCc0NySjtRQUVkLE9BN2R4QmdELGVBMmRrQ3BDO09BQ2hDLFdBb1lGQyxlQXJZOEJ6Qjs7V0FHR0UsaUJBQy9CLFdBcURGMkYsZUF0RGlDM0Y7O09BR3dCLElBRHhCd0IsaUJBQUpDLGlCQUM0QixPQTNCekRzSSxnQkEwQmlDdkk7T0FDL0IsV0FnSEZ3SSxzQkFqSDZCdkk7O0dBQytDO1lBRTVFK0s7SUFFSDtLQUFvQ0M7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyx1QkFOaUNGO0lBQ25DLFdBdGVFL0ksZUFxZUdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0FuWnBDeE0sZ0JBOFlHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUUwQzs7V0FDWDVOLGVBQzdCLFdBdERGNEssZ0JBcUQrQjVLOztPQUc3QjtRQUR5QkU7UUFFTjZELEtBRk03RDtRQUVWcUIsS0FGVXJCO1FBRWRRLEtBRmNSO1FBRWxCUyxPQUZrQlQ7UUFNcEIsTUFuZ0JQcUUsZUErZnFCUjtRQUdkLE1Bb0RQOEosa0JBdkRpQnRNO1FBRVYsTUEyVFBnSyxrQkE3VGE3SztPQURYLGVBZ1lGSixTQW5CQXVFLFlBNVdTbEU7O09BTVA7UUFENEJFO1FBRVRpTixPQUZTak47UUFFYnNDLE9BRmF0QztRQUVqQnNCLE9BRmlCdEI7UUFFckJ5QixPQUZxQnpCO1FBTXZCLE1BMWdCUDBELGVBc2dCcUJ1SjtRQUdkLE1BNkNQRCxrQkFoRGlCMUs7UUFFVixNQTJQUHFJLGtCQTdQYXJKO09BRFgsZUF5WEY3QixTQW5CQXVFLFlBcldTdkM7O09BTVA7UUFEZ0NHO1FBRXJCSixPQUZxQkk7UUFFekJDLE9BRnlCRDtRQUdULE9BOWdCekI4QixlQTZnQmFsQztPQURYLGVBNWdCRmtDLGVBNmdCUzdCOztXQUV3QkUsaUJBQy9CLFdBMWFGc0csZUF5YWlDdEc7bUJBRUFFLGlCQUMvQixXQUVGMEQsZUFIaUMxRDs7R0FDcUI7WUFFdEQwRCxlQUVDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE1BcmF6QndsQixhQW9hTTVJO0lBQ1IsV0FzV0VKLGtCQXRXYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBa0JnQyxNQWpkbkNsTixnQkFvY0c2TTtLQVcwQixNQUFBLFdBbEI1QkQsSUFLRUc7S0FZMEIsTUE4VTdCNU4sa0JBOVUyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWI5Q3FxQjtpQkFTTXJxQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQW1SMUJ5cUIsY0FwUmM3TjtLQUNSLFdBOWlCTjZELGVBNmlCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENvTztJQU1MLFdBY0VQLGtCQXJCR1EsMEJBSUFKO0dBZUo7WUFFQ0oseUJBQ2lFLHFCQUVYO1lBRXREZCx5QkFHQ2pwQjtJQUFLLE9BRU51bUIsbUJBcE9BOEIsa0JBa09Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU9rQyxNQTVlckN2TixnQkF1ZUdxTjtJQUVMLFdBQ2dDLFdBUDdCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RCxzQkFFQy9tQjtJQUFLLE9BRU4ybkI7c0JBRjJCM25CLEdBQUssT0EyU2hDd2MsU0FGQU0sa0JBelMyQjljLEdBQWdDLEdBQTFEQTtHQUE2RDtZQUU5RDJuQixnQkFLQ3NDO0lBQUo7S0FLTVk7S0FEQUM7S0FEQUM7S0FEQUM7S0FTa0MsTUFuZ0JyQzNOLGdCQTZmR3dOO0tBSWdDLE1BS25DdEQsbUJBWEd3RDtJQUlMLFdBQ2lDLFdBUjlCZCxJQUVFZSxrQkFFQUY7R0FRSjtZQUVDdkQsMEJBQ21FLHFCQUVuQjtZQUVoRHBCO0lBR0g7S0FJTThFO0tBREFDO0tBREFDO0tBREFDO0tBUWlDLE1BdmhCcEMvTixnQkFpaEJHNk47S0FLMkIsTUFyNkI5QnNKLFdBeW9CQW5NLGtCQXNSRzhDO0lBSUw7WUF3UUUzTyxrQkF2UTRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9Db3JCOzs7WUFHQUg7R0FPSjtZQUVDakM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUF2aUJuQ25PLGdCQWlpQkdpTztLQUs4QixNQXNQakM5TyxTQUZBTSxrQkExUEd5TztJQUlMLFdBd1BFL08sa0JBdlAyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45Q3dyQixxQkFHQUg7R0FPSjtZQUVDdEM7SUFHSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FhZ0MsTUE1akJuQ3ZPLGdCQWlqQkdxTztLQVUwQixNQWpVN0JyRCxpQkFzVEdzRDtJQUlMO1lBd09FblA7O2VBck9JO2dCQUNZLE9BMzhCaEJUO3lCQWs4Qkc2UDttQkFVVTVyQjtlQUFLLE9BQUxBO2NBQU87Y0FWakI0ckI7OztZQUdBSDtHQVlKO1lBRUN4RjtJQUVIO0tBR000RjtLQURBQztLQURBQztLQVFtQyxNQTNrQnRDMU8sZ0JBcWtCR3dPO0lBRUw7WUFnQ0VuSywyQkFwQ0dxSztZQUNBRDs7R0FRSjtZQUVDOUY7SUFFSDtLQU1NZ0c7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FtQm1DLE1BcG1CdENoUCxnQkFzbEJHMk87S0FZZ0MsTUErRG5DdEUsa0JBN0VHd0U7S0FhRDtPQUFBOzBCQU1GeEssNEJBcEJHeUs7aUJBU01uc0I7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFpSTFCeXFCLGNBbEljN047S0FDUixXQWhzQk42RCxlQStyQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVRDa1E7SUFNTDtZQW9NRTVQLFNBRkFNLGtCQXpNR3VQOzs7O1lBSUFKOztHQWdCSjtZQUVDdks7SUFHSDtLQUlNNEs7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsTUFwbkJwQ3BQLGdCQThtQkdpUDtLQUkyQixNQUs5QkksK0JBWEdGO0lBSUw7WUE0S0VoUSxrQkEzSzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9DeXNCOztZQUVBRjs7R0FRSjtZQUVDRztJQUUrQztLQUdYLElBRkg5UCxlQUFKVixlQUVPLE1BM2dDcENzWSxXQTZTQS9ULGdCQTR0QmlDN0Q7S0FDL0IsV0FzRUYrUCwyQkF2RTZCelE7O1FBR0NFO0lBQzVCLFdBOEpGSSxTQUZBTSxrQkE3SjhCVjtHQUNnQztZQUU5RDJKO0lBRUg7S0FRTTZHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBMEJrQyxNQTdwQnJDOVAsZ0JBeW9CR3dQO0tBbUJnQyxNQTNpQ25DMkgsV0E2U0EvVCxnQkEwdUJHcU07S0FtQitCLE1BTWxDcEYsa0JBMUJHcUY7S0FtQjRCLE1BWS9CSyxlQWhDR0o7aUJBZ0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUExdkIxQnlnQixlQXl2QmM3RDtLQUNSLFdBMXZCTjZELGVBeXZCVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWhCQ3dQO2lCQVdNanRCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BNkUxQnlxQixjQTlFYzdOO0tBQ1IsV0FwdkJONkQsZUFtdkJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FYQ2dSO0lBUUw7WUFnSkUxUSxrQkEvSTZDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVmhEbXRCOzs7Ozs7O1lBT0FQO0dBcUJKO1lBRUNsRix5QkFDaUUscUJBRWY7WUFFbEQwRjtJQUNFOztTQUU4QmxSO0tBQzlCLFdBQWdDLDRCQUtsQ21SLDhCQU5nQ25SOztRQUVERTtJQUM3QixXQUErQiw0QkE2QmpDa1Isd0JBOUIrQmxSO0dBRTZCO1lBRTVEaVI7SUFHSDtLQUtNRTtLQURBQztLQURBQztLQURBQztLQURBRTtLQVdnQyxNQTlyQm5DdlEsZ0JBdXJCR2tRO0tBS3lCLE1BM2tDNUJpSCxXQTZTQS9ULGdCQXV4QkdnTjtLQU0wQixNQU03QmQsMkJBYkdlO0lBS0w7WUFtR0VsUixrQkFsRzJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDlDNHRCOzs7WUFHQUo7O0dBU0o7WUFFQ2I7SUFFMEM7U0FDWnpRO0tBQzVCLFdBQThCLDRCQXZ5QmhDdUUsZ0JBc3lCOEJ2RTs7UUFFQ0U7SUFDN0IsV0FBK0IsNEJBRWpDa1Isd0JBSCtCbFI7R0FDc0M7WUFFckVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE1BdnRCbkM1USxnQkFndEJHd1E7S0FLMEIsTUF2ekI3QnBOLGVBZ3pCR3NOO0tBTTZCLE1BTWhDdEcsa0JBYkd1RztJQUtMO1lBMEVFeFIsa0JBekUyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDaUUscUJBRWI7WUFFcERnRDtJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSjs7R0FBMEI7WUFFeEQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVVpQyxNQWx2QnBDalIsZ0JBMnVCRzhRO2lCQU15Q251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVAzQm91QjtLQU0yQixNQWwxQjlCM04sZUEyMEJHNE47SUFLTDtZQThDRTdSLGtCQTdDNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQL0NzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDL0k7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BNTFCbER1RSxlQTIxQjRCN0Q7S0FDMUIsV0FrQ0ZKLFNBbkJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBOTFCRnFFLGVBNjFCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDRjs7V0FDd0NaLGVBQUpWO09BQ2hDLFdBRGdDQSxJQWpxQ2xDc1ksb0JBa3FDd0R4MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHhCNGM7O1dBRVJSLGlCQUFNLFdBQU5BOztXQUNPaUMsaUJBQUp4QjtPQUMvQixXQUQrQkEsTUFwcUNqQzJYLG9CQXFxQ3VEeDBCLEdBQUssT0FBTEEsRUFBTSxHQUR4QnFlOztXQUVERSxpQkFBSnhCO09BQzlCLFdBRDhCQSxNQXRxQ2hDeVgsb0JBdXFDc0R4MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHhCdWU7O0dBQzZCO1lBRWpFekIsaUJBQW9EOWMsR0FBSyxPQUFMQSxFQUFNO1lBRTFEd2MsU0FHQ3lOO0lBQUosSUFBK0IxcEIsZ0JBQXRCWTtJQUNSLFdBQXlCLFdBRHRCOG9CLElBQUs5b0IsTUFBc0JaO0dBQzZDO1lBRXpFbWtCLGNBQStDMWtCLEdBQUssT0FBTEEsRUFBTTs7OztPQXJyQ3JEK2I7T0FJQXlZO09BRUl2WTtPQVFKSTtPQWNBRTtPQVNBSTtPQVVBSztPQWVBTztPQXlIQWlGO09BUUFHO09BZUF0QztPQU1BNUI7T0FZQTRWO09BR0EzVztPQWVBNEM7T0FjQTBEO09BaURBdkQ7T0FlQW5EO09BR0FtSDtPQWtDQUk7T0FXQUQ7T0FhQUk7T0FTQUw7T0FhQXRIO09BSUErSDtPQWFBSTtPQVFBcko7T0FJQXVKO09BUUFHO09BcUNBUztPQUtBRjtPQUlBSztPQWFBSTtPQWdDQTdFO09BUUFrRjtPQWFBSTtPQTJCQUU7T0FRQWxGO09BSUE0RDtPQW9CQTNFO09BYUE0RztPQW9CQUM7T0FTQUM7T0FhQUk7T0FvQkFDO09BZ0JBakQ7T0FJQWtEO09BUUFHO09Bb0NBekM7T0FLQTZDO09BSUFwQztPQWFBd0M7T0FnQkFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FNQThEO09BNEJBdUQ7T0FLQWQ7T0FLQTFDO09BaUJBUTtPQUlBWTtPQW1CQUo7T0FLQXBCO09BZ0JBNkM7T0FnQkFEO09BcUJBOUM7T0FjQUQ7T0F5QkF0RTtPQWdCQWdMO09BU0EzRztPQWlDQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FNQTNFO09BaUJBWDtPQVFBN0c7T0FNQTJGO09BS0FsRDtPQUVBcEQ7T0FLQUg7T0FVQVY7T0FFQU47T0FNQWtJO09BdG9DQTFIO09BbU1Bc0Q7T0ErREFHOzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O1lDalRBK1QsV0FBV2gxQixHQUFFUTtJQUFJLEtBQUpBLEdBQXlCO1FBQVl3RSxNQUFyQ3hFO0lBQTBDLFdBQUssV0FBakRSLEdBQXVDZ0Y7R0FBZTtZQUU3RHlYO0lBRU4sdUJBQzZCQyxlQUN6QixXQXFaRkMsZUF0WjJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU0wQixPQXBCN0IyWixXQXdCQWpZLHlCQVRHekI7SUFHTCxXQXVvQ0UwQixrQkF0b0M0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhLGtCQUVBeUI7R0FNSjtZQUVDQztJQUdILElBQW9DRSxzQkFBOUJDO0lBQ0wsV0FLRUMsNkJBTkdELGFBQThCRDtHQUlsQztZQUVDRTtJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlI7T0FDMUIsV0FEMEJBLE1BckM1Qm9ZLG9CQXNDa0R4MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHhCNGM7O1dBRUhDLGlCQUMzQixXQUQyQkE7bUJBRURFLGlCQUFNLFdBQU5BOztHQUFvQztZQUVoRUM7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVNpQyxPQTJVcENDLGdCQWpWR0o7S0FLZ0MsT0FBQSw0QkF5bUNuQ3lILGVBL21DR3hIO0lBR0wsV0FPRUsscUJBWkdILFlBQ0FEO0dBU0o7WUFFQ0k7SUFFRiw4QkErR3dDOzs7V0E5R1RyQixlQUMzQixXQTJsQ0ZNLFNBRkFNLGtCQTFsQzZCWjs7V0FFR0UsaUJBQzlCLFdBNmtDRm9CLGNBOWtDZ0NwQjs7T0FJdUI7UUFGbkJxQjtRQUFKYjtRQUFKQztRQUUyQixPQXhCdkRHLGdCQXNCb0NTO1FBRWIsT0FBQSw0QkFzSnZCQyxvQkF4SmdDZDtPQUM5QixXQXNrQ0ZlLGNBdmtDNEJkOztXQUdJRSxpQkFDOUIsV0FxSUZzWCxXQXRJZ0N0WDs7T0FPMUI7UUFMa0NrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLdEIsT0FoQ054QixnQkEyQndDaUQ7UUFJbEMsT0E4Sk5LLGFBbEtvQ2pCO1FBRzlCLE9BekVObVYsV0EyQ0F4WCxpQkEyQmdDcUI7T0FDOUIsV0FvakNGQyxlQXJqQzRCRTs7T0FTdEI7UUFINEJEO1FBQUpJOzttQkFJakIzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXZDOUJnZCxnQkFzQ2tCSjtXQUNSLFdBeWlDVjBCLGVBMWlDY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDRCcUM7T0FDaEMsV0FsQ0Z2QixnQkFpQzhCMkI7O09BU3NCLElBRGxCRCxpQkFBSkUsaUJBQ3NCLE9BcUhwRHlWLFdBdEhrQzNWO09BQ2hDLFdBMUNGMUIsZ0JBeUM4QjRCOztPQUdvQixJQURsQkMsaUJBQUpDLGlCQUNzQixPQW1IbER1VixXQXBIZ0N4VjtPQUM5QixXQTVDRjdCLGdCQTJDNEI4Qjs7V0FFQ0U7T0FDM0IsV0FBNkIsNEJBOUMvQmhDLGlCQTZDNkJnQzs7T0FJTTtRQUZHRDtRQUFKRztRQUVDLE9BNUZuQ3NWLFdBMkNBeFgsaUJBK0NzQytCO09BQ3BDLFdBOGpDRnZDLFNBRkFNLGtCQTdqQ2tDb0M7O1dBR0VELGlCQUFKRztPQUM5QixZQUQ4QkEsTUE3RmhDb1YsV0EyQ0F4WCxpQkFrRG9DaUM7O09BVTlCO1FBUDZCRTtRQUFKSTtRQU96QixPQXZHTmlWLFdBMkNBeFgsaUJBcURtQ21DOzttQkFHdEJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTFEekNnZCxnQkF5RGtCSjtXQUNSLFdBb2pDVkosU0FGQU0sa0JBbmpDY1o7VUFDOEM7T0FKMUQsWUFDSSxrQ0FGeUJxRDs7T0FVTjtRQUZTRDtRQUFKRTtRQUVMLE9BK2lDekJoRCxTQUZBTSxrQkEvaUNrQ3dDO09BQ2hDLFlBOURGdEMsZ0JBNkQ4QndDOztPQUt5QjtRQUZkQztRQUFKQztRQUFKQztRQUVzQixPQWxFdkQzQyxnQkFnRXlDeUM7UUFFaEIsT0E0aUN6QmpELFNBRkFNLGtCQTVpQ3FDNEM7T0FDbkMsWUFqRUYxQyxnQkFnRWlDMkM7O1dBR0pFO09BQzNCLFlBQTZCLDRCQXBFL0I3QyxpQkFtRTZCNkM7O09BSWdCO1FBRkZLO1FBQUpOO1FBQUpHO1FBRVUsT0FsSDdDeVUsV0EyQ0F4WCxpQkFxRTJDa0Q7UUFFbEIsT0F2RXpCbEQsZ0JBcUV1QzRDO09BQ3JDLFlBdEVGNUMsZ0JBcUVtQytDOztPQUlvQixJQURsQkQsa0JBQUpNLGtCQUNzQixPQXpFdkRwRCxnQkF3RXFDOEM7T0FDbkMsWUF6RUY5QyxnQkF3RWlDb0Q7O09BR21CLElBRGxCRCxrQkFBSkssa0JBQ3NCLE9BM0VwRHhELGdCQTBFa0NtRDtPQUNoQyxZQTNFRm5ELGdCQTBFOEJ3RDs7T0FReEI7UUFOc0NSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNdEIsT0FsRk41RCxnQkE0RTRDZ0Q7UUFLdEMsT0F3RU5LLG9CQTdFd0MySjtRQUlsQyxPQWhGTmhOLGdCQTRFb0MwRDtRQUc5QixPQS9FTjFELGdCQTRFZ0N1RDtPQUM5QixZQWdIRkQsYUFqSDRCTTs7T0FRNkIsSUFEbEJELGtCQUFKRyxrQkFDc0IsT0FvS3pETCxlQXJLdUNFO09BQ3JDLFlBcEZGM0QsZ0JBbUZtQzhEOztPQUlvQjtRQUZoQk07UUFBSlA7UUFBSkc7UUFFd0IsT0FpS3ZEUCxlQW5LdUNXO1FBRWQsT0FsSXpCb1QsV0FtU0EvVCxnQkFuS21DSTtPQUNqQyxZQXRGRjdELGdCQXFGK0JnRTs7T0FJb0I7UUFEbEJDO1FBQUpDO1FBQ3NCLE9BcWhDbkQxRSxTQW5CQXVFLFlBbmdDaUNFO09BQy9CLFlBekZGakUsZ0JBd0Y2QmtFOztXQUVGQyxrQkFDekIsWUFtaENGM0UsU0FGQU0sa0JBbGhDMkJxRTs7T0FJRSxJQUZVRSxrQkFBSkMsa0JBRU4sT0E5RjdCdEUsZ0JBNEZ1Q3FFO09BQ3JDLFlBaWhDRjdFLFNBbkJBdUUsWUEvL0JtQ087OztRQUdIRzs7bUJBR3BCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BcEdsQ2dkLGdCQW1HaUJKO1dBQ1IsV0EwZ0NUSixTQW5CQXVFLFlBeC9CYTdFO1VBQ3dDO09BSm5ELFlBQ0Usa0NBRjRCdUY7O09BU3lCO1FBRmZ3UDtRQUFKelA7UUFBSkc7UUFFdUIsT0F4R3pEM0UsZ0JBc0cwQ2lVO1FBRU4sT0EwYnBDMVAsaUJBNWJzQ0M7T0FDcEMsWUF1Z0NGaEYsa0JBdGdDbUJ4YyxHQUFLLFdBQUxBLEdBQVcsR0FGSTJoQjs7T0FLRSxJQUZLRSxrQkFBSkQsa0JBRUQsT0EzR3BDNUUsZ0JBeUd5QzZFO09BQ3ZDLFlBKzBCRkgsMkJBaDFCcUNFOztXQUdQRSxrQkFDNUIsWUE3R0Y5RSxnQkE0RzhCOEU7O1dBRUZDLGtCQUMxQixZQS9HRi9FLGdCQThHNEIrRTs7T0FJSDtRQUZRRTtRQUFKQztRQUVKLE9BN0p6QnNTLFdBbVNBL1QsZ0JBeElpQ3dCO09BQy9CLFlBakhGakYsZ0JBZ0g2QmtGOztXQUdDQyxrQkFDNUIsWUFtV0ZILHFCQXBXOEJHOztPQUlDLElBRktDLGtCQUFKQyxrQkFFRCxPQXZIL0JyRixnQkFxSG9Db0Y7T0FDbEMsWUF3L0JGNUYsa0JBdi9CbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT3FpQjs7V0FHSkUsa0JBQzFCLFlBeWFGaEIsaUJBMWE0QmdCOztPQUc2QixJQUR4QjJPLGtCQUFKek8sa0JBQzRCLE9BM0h6RHpGLGdCQTBIaUNrVTtPQUMvQixZQW9aRjVPLHNCQXJaNkJHOztXQUVBdU8sa0JBQzNCLFlBS0Z4TyxXQU42QndPO21CQUVJRyxrQkFDL0IsWUEwb0JGek8sZUEzb0JpQ3lPOztHQUV1QztZQUV4RTNPO0lBQ0g7S0FBc0QxVDtLQUF4QkM7S0FBeEJDO0tBSXNCLE9Bdkl6QmdPLGdCQW1JbURsTztLQUcxQixPQUFBLDRCQUl6QjZULGlCQVAyQjVUO0lBQzdCLFdBTUU0VCxnQkFQRzNUO0dBS0o7WUFFQzJUO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMEIsT0FySjdCL0YsZ0JBK0lHNkY7S0FLMEIsT0F5QzdCdkMsYUEvQ0d3QztJQUlMO1lBNDlCRXRHLGtCQTM5QjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjdDK2lCOzs7WUFHQUg7R0FPSjtZQUVDdkMsMkJBRUYscUJBRW9EO1lBRWxEZ1UsV0FDQ3IwQixHQUFLLE9BQUEsNEJBRU55ZSxXQUZDemUsR0FBeUI7WUFFMUJ5ZTtJQUNIO0tBR01uRTtLQURBQztLQURBQztLQU93QixPQTNLM0J3QyxnQkFzS0cxQztLQUkwQixPQXJON0JrYSxXQTJDQXhYLGlCQXFLR3pDO0lBR0wsV0FxQkUrRixhQXpCRzlGO0dBUUo7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUWdDLE9BOEpuQ3JHLGdCQXBLR2tHO0tBSzBCLE9BeEw3QnZHLGdCQWtMR3lHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUlNc0Q7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0ErSXBDMUcsZ0JBckpHdUc7S0FLZ0MsT0FBQSw0QkE2NkJuQ2MsZUFuN0JHYjtJQUdMLFdBT0VHLGtCQVpHRCxZQUNBRDtHQVNKO1lBRUNFO0lBQ21FLDhCQUNyQzs7O1dBQ0g5SCxlQUN6QixXQSs1QkZNLGtCQS81QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHZCa2M7O09BR3NCO1FBRGZVO1FBQUpSO1FBQ21CLE9BNjVCakRJLGtCQTc1QitEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRG5DNGM7T0FDaEMsV0FwQkYwRCxhQW1COEJsRTs7V0FFRVMsaUJBQzlCLFdBKzRCRlcsY0FoNUJnQ1g7O09BR3FCLElBRGhCd0IsaUJBQUp0QixpQkFDb0IsT0E2NEJyRFMsY0E5NEJxQ2E7T0FDbkMsV0E2NEJGYixjQTk0QmlDVDs7V0FFSnlCO09BQzNCLFdBQTZCLDRCQTFCL0I4QixjQXlCNkI5Qjs7T0FJTTtRQUZHRDtRQUFKSTtRQUVDLE9BclFuQzZWLFdBd09BbFUsY0EyQnNDL0I7T0FDcEMsV0FxNUJGL0IsU0FGQU0sa0JBcDVCa0M2Qjs7V0FHRUQsaUJBQUpFO09BQzlCLFdBRDhCQSxNQXRRaEM0VixXQXdPQWxVLGNBOEJvQzVCOztPQVM5QjtRQVA2Qkc7UUFBSkM7UUFPekIsT0FrM0JObUYsaUJBejNCbUNwRjs7bUJBR3RCN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0FyQ3pDc2dCLGFBb0NrQjFEO1dBQ1IsV0E0NEJWSixTQUZBTSxrQkEzNEJjWjtVQUMyQztPQUp2RCxXQUNJLGtDQUZ5QjRDOztXQVFGRTtPQUMzQixXQUE2Qiw0QkF6Qy9Cc0IsY0F3QzZCdEI7O09BR2lCLElBRGZELGlCQUFKRyxpQkFDbUIsT0EzQzlDb0IsYUEwQytCdkI7T0FDN0IsV0EzQ0Z1QixhQTBDMkJwQjs7T0FHMkIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWN0RHFCLGVBZnVDeEI7T0FDckMsWUE3Q0ZxQixhQTRDbUNsQjs7V0FFUEcsa0JBQzFCLFlBazRCRi9DLFNBRkFNLGtCQWo0QjRCeUM7O1dBRUFDLGtCQUMxQixZQWpERmMsYUFnRDRCZDs7V0FFRUc7T0FDNUIsWUE4M0JGbkQsa0JBOTNCK0N4YyxHQUFLLFdBQUxBLEdBQVcsR0FENUIyZjs7V0FFR0Usa0JBQy9CLFlBckRGUyxhQW9EaUNUOztXQUVBRSxrQkFDL0IsWUFxaEJGMkMsZUF0aEJpQzNDOztPQUc0QixJQUQ1QlosaUJBQUppQixrQkFDZ0MsT0F6RDdERSxhQXdEaUNuQjtPQUMvQixZQXczQkYzQyxTQUZBTSxrQkF2M0I2QnNEOztHQUNnRDtZQUU3RUs7SUFFSDtLQUlNNEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0FtRnBDbkgsZ0JBekZHZ0g7S0FLZ0MsT0FBQSw0QkFpM0JuQ0ssZUF2M0JHSjtJQUdMLFdBT0VHLG9CQVpHRCxZQUNBRDtHQVNKO1lBRUNFO0lBRUYsOEJBQ2dDOzs7V0FDSHZJLGVBQU0sV0FBTkE7O09BR2dCO1FBRkx1QjtRQUFKYjtRQUFKUjtRQUVhLE9BdEIzQ3FFLGVBb0JzQ2hEO1FBRWQsT0F0QnhCZ0QsZUFvQmtDN0Q7T0FDaEMsV0FtMEJGMEIsZUFwMEI4QmxDOztXQUdEUztPQUMzQixXQUE2Qiw0QkF4Qi9CNEQsZ0JBdUI2QjVEOztPQUlNO1FBRkF3QjtRQUFKdEI7UUFFSSxPQUFBLDRCQTNCbkMwRCxnQkF5Qm1DcEM7T0FDakMsV0E0MUJGN0IsU0FGQU0sa0JBMzFCK0JDOztPQUtLLElBRkR3QixpQkFBSkMsaUJBRUssT0FnMEJwQ3lGLGlCQWwwQm1DMUY7T0FDakMsV0FDRyw0QkFvRExvRyxtQkF0RCtCbkc7O09BS0k7UUFGREU7UUFBSkM7UUFFSyxPQUFBLDRCQWpDbkM4QixnQkErQmtDL0I7T0FDaEMsV0FzMUJGbEMsU0FGQU0sa0JBcjFCOEI2Qjs7V0FHSUUsaUJBQUpEO09BQzVCLFdBbkNGNkIsZUFrQzhCN0IsT0FBSUM7O09BTTVCO1FBSmtDUTtRQUFKTjtRQUFKRDtRQUkxQjtVQTNVTjBWO3FCQTJVc0J4MEIsR0FBSyxPQUFBLDRCQTJ6QjNCK2dCLFlBM3pCc0IvZ0IsR0FBMEI7WUFKUnFmO1FBR2xDLE9BdXpCTjRFLGlCQTF6Qm9DbEY7T0FDbEM7ZUFDSSw0QkFzQk42RixnQkF4QmdDOUY7Ozs7T0FPcUI7UUFGcEJHO1FBQUpEO1FBRXdCLE9BM0NyRHlCLGVBeUNpQ3hCO3dCQUVkamYsR0FBSyxPQTIwQnhCd2Msa0JBMzBCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRndCZ2Y7O1dBR0VFLGlCQUM3QixXQUlGMkYsa0JBTCtCM0Y7bUJBRUVFLGlCQUMvQixZQWtlRnNELGVBbmVpQ3REOztHQUNxQjtZQUV0RHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQXpEbkN5Z0IsZUF3RFk3RDtLQUNSLFdBNnpCSkosU0FGQU0sa0JBNXpCUVo7SUFDNkM7SUFIckQsV0FBQSxrQ0FGTVU7SUFDUixXQWkwQkVKLFNBRkFNLGtCQWgwQkVaO0dBTUk7WUFFTjBJO0lBRUg7S0FHTUU7S0FEQUM7S0FEQXhOO0tBT2dDLE9BeUJuQzhGLGdCQTlCR3lIO0lBRUwsV0FNRUUsb0JBVkd6TixXQUNBd047R0FPSjtZQUVDQztJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBOUVqQ3VFLGdCQTRFZ0NoRDtLQUM5QixXQXl5QkZqQixTQW5CQXVFLFlBdnhCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0FoRkZxRSxlQStFMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtJQUVMLFdBdXZCRUUsdUJBM3ZCRzNOLFdBQ0EwTjtHQU9KO1lBRUM3SCxnQkFFQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTThCLE9BSWpDQyxhQVRHRjtJQUdMLFdBNHdCRTlJLGtCQTN3QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCLGtCQUVBRjtHQU1KO1lBRUNHO0lBQ0Y7O1dBQ3lCdEosZUFBTSxXQU03QkMsZUFOdUJEOztXQUNBRSxpQkFBTSxXQXVSN0JxSixlQXZSdUJySjs7V0FDQVMsaUJBQU0sV0FwSDdCNEQsZUFvSHVCNUQ7O09BRW9CO1FBRGZEO1FBQUpHO1FBQ21CLE9BelozQ3lYLFdBMkNBeFgsaUJBNlc0Qko7T0FDMUIsV0FqTEYwRCxhQWdMd0J2RDs7R0FDaUQ7WUFFekVaLGVBRUNuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O09BRVcsSUFEbEJqSixlQUFKVixlQUNzQixPQXpDbkRtQixnQkF3Q2lDVDtPQUMvQixXQWhZRkksZ0JBK1g2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBck52QnNCLG9CQW1Oa0NXO09BQ2hDLFdBMnRCRlYsY0E1dEI4QnZCOztXQUdHUyxpQkFDL0IsV0FrckJGaUosdUJBbnJCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkEwa0J2QmdKLHVCQTVrQmlDeEg7T0FDL0IsV0FzdEJGWixjQXZ0QjZCWjs7V0FHQ3lCLGlCQUM1QixXQXNoQkZ3SCxvQkF2aEI4QnhIOztXQUVHRyxpQkFDL0IsV0FzZ0JGc0gsb0JBdmdCaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0FnZEZtSCw2QkFqZCtCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkF5Uko4Ryw2QkEzUmtDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQWxFRnlGLGVBaUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BeEV2RHhDLGdCQXVFc0NxQjtPQUNwQyxZQTBXRmdFLGVBM1drQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0FpWk51bUIsbUJBblJBaEYsa0JBOUhDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0F1V053bUIsaUJBcldBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BN0ZuQ3ZKLGdCQXdGR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGRGpLO1FBQUpWO1FBRUssT0FBQSw0QkFwTW5DdUUsZ0JBa01rQzdEO09BQ2hDLFdBbXJCRkosU0FGQU0sa0JBbHJCOEJaOztXQUdFRSxpQkFDOUIsV0F5QkY0RixxQkExQmdDNUY7O09BTzFCO1FBTGlDNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtyQixPQTFCTjRKLGdCQXFCdUN4RztRQUlqQyxPQXRRTkssYUFrUW1DN0M7UUFHN0IsT0E3ZU4rVyxXQTJDQXhYLGlCQStiK0JxQjtPQUM3QixXQWdwQkZDLGVBanBCMkJ6Qjs7T0FTckI7UUFIMkIwQjtRQUFKeEI7O21CQUloQi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BM2M5QmdkLGdCQTBja0JKO1dBQ1IsV0Fxb0JWMEIsZUF0b0JjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIMkJxQztPQUMvQixXQTVCRmtJLGdCQTJCNkIxSjs7T0FVMEI7UUFGcEJzQztRQUFKWDtRQUFKRjtRQUU0QixPQXJDdkRpSSxnQkFtQ21DcEg7UUFFWixPQUFBLDRCQWpTdkIzQixvQkErUitCZ0I7T0FDN0IsV0Erb0JGZixjQWhwQjJCYTs7T0FJNkIsSUFEbEJLLGlCQUFKRixpQkFDc0IsT0EwT3hEbUksZ0JBM09zQ2pJO09BQ3BDLFdBdkNGNEgsZ0JBc0NrQzlIOztXQUVGQyxpQkFDOUIsV0FzVEY4RCxlQXZUZ0M5RDs7T0FHd0IsSUFEeEJHLGlCQUFKRCxpQkFDNEIsT0EzQ3hEMkgsZ0JBMENnQzFIO09BQzlCLFdBaVhGZ0ksc0JBbFg0QmpJOztHQUMrQztZQUUzRWtEO0lBRUg7S0FBb0NnRjtLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLGtCQU5pQ0Y7SUFDbkMsV0E3UkUxRyxhQTRSRzJHO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQWxKbkNoSyxnQkE2SUc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BS1E7UUFKaUM3SjtRQUFKYjtRQUFKVjtRQUl6QjtVQTloQk5zWTtxQkE4aEJzQngwQixHQUFLLE9BMm5CM0J3YyxrQkEzbkJ5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEIsR0FKWHlkO1FBR2pDLE9BeEVOZ0osZ0JBcUVtQzdKO09BQ2pDLFdBNldGMkssbUJBOVcrQnJMOztPQU03QjtRQUR3QkU7UUFFVGlELE9BRlNqRDtRQUViaUMsT0FGYWpDO1FBRWpCUyxPQUZpQlQ7UUFHMEIsT0FnQnBEb0wsc0JBakJpQm5JO1FBQ2EsT0FxakI5Qm9JLGtCQXRqQmFwSjtPQURYLGVBeW5CRjdCLFNBbkJBdUUsWUFybUJTbEU7O09BR1A7UUFEMkJFO1FBRVowQyxPQUZZMUM7UUFFaEJ3QixPQUZnQnhCO1FBRXBCeUIsT0FGb0J6QjtRQUd1QixPQVlwRHlLLHNCQWJpQi9IO1FBQ2EsT0F3ZjlCaUksa0JBemZhbko7T0FEWCxlQXFuQkYvQixTQW5CQXVFLFlBam1CU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQXZRekI4QixlQXNRYS9CO09BRFgsZUFyUUYrQixlQXNRUzdCOztXQUV5QkUsaUJBQ2hDLFdBamdCRjlCLGdCQWdnQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0FvUUZ3RCxlQXJRZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBblJGdUUsZUFrUjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQTdnQnpEWSxnQkE0Z0JvQ0o7SUFDbEMsV0FnVkYySyxtQkFqVmdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9BeVROMm5CLGdCQXhTQXBHLGtCQWpCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVFnQyxPQXZNbkMxSyxnQkFpTUd3SztLQUswQixPQUs3QnRHLGlCQVhHdUc7SUFJTDtZQW1sQkV0TCxrQkFsbEIyQ3hjLEdBQUssV0FBTEEsR0FBVyxHQU5uRCtuQjs7O1lBR0FIO0dBT0o7WUFFQ3JHO0lBRUg7S0FHTXlHO0tBREFDO0tBREFDO0tBT2lDLE9Bck5wQzdLLGdCQWdORzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0JqTSxlQUMzQixXQTJqQkZNLFNBRkFNLGtCQTFqQjZCWjs7V0FFSUUsaUJBQy9CLFdBck1GRCxlQW9NaUNDOztPQVczQjtRQVRrQ3FCO1FBQUpiO1FBQUpDO1FBUzFCLE9BN0JOMEUsaUJBb0J3QzlEO2VBQVJaOzs7Ozs7O2dCQUFJRDtXQUtVO1lBRDVCOUgsT0FKa0I4SDtZQUtVLE9BZTlDeUwsaUJBaEJrQnZUO3VCQW9qQmxCMEgseUJBbmpCb0MsU0FBSSxHQUxSSzs7OzttQkFBSUQ7WUFBQUE7VUFPWTtXQURoQ3ZLLEtBTm9CdUs7V0FPWSxPQWFoRHlMLGlCQWRnQmhXO3NCQWtqQmhCbUssa0JBampCK0J4YyxHQUFLLFdBQUxBLEdBQVcsR0FQVjZjOzs7O1FBUW5CLE1BQUE7O09BUFg7O09BVW1ELElBRG5Cd0IsaUJBQUp0QixpQkFDdUIsT0EvQnJEd0UsaUJBOEJrQ2xEO09BQ2hDLFdBL0JGa0QsaUJBOEI4QnhFOztPQUlKLElBRmF3QixpQkFBSkMsaUJBRVQsT0FNMUI2SixpQkFSdUM5SjtPQUNyQyxXQWpDRmdELGlCQWdDbUMvQzs7V0FHTEcsaUJBQzVCLFdBdGtCRjNCLGdCQXFrQjhCMkI7bUJBRUdDLGlCQUMvQixXQWlNRjhELGVBbE1pQzlEOztHQUNxQjtZQUV0RHlKO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0E3UHBDbkwsZ0JBd1BHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQnZNLGVBQzNCLFdBbWhCRk0sU0FGQU0sa0JBbGhCNkJaOztXQUVJRSxpQkFDL0IsV0FxQ0ZxSixlQXRDaUNySjs7T0FXM0I7UUFUa0NxQjtRQUFKYjtRQUFKQztRQVMxQixPQTdCTndMLGlCQW9Cd0M1SztlQUFSWjs7Ozs7OztnQkFBSUQ7V0FLVTtZQUQ1QjlILE9BSmtCOEg7WUFLVSxPQXpCOUN5TCxpQkF3QmtCdlQ7dUJBNGdCbEIwSCx5QkEzZ0JvQyxTQUFJLEdBTFJLOzs7O21CQUFJRDtZQUFBQTtVQU9ZO1dBRGhDdkssS0FOb0J1SztXQU9ZLE9BM0JoRHlMLGlCQTBCZ0JoVztzQkEwZ0JoQm1LLGtCQXpnQitCeGMsR0FBSyxXQUFMQSxHQUFXLEdBUFY2Yzs7OztRQVFuQixNQUFBOztPQVBYOztPQVd3QjtRQUZPd0I7UUFBSnRCO1FBRUgsT0FBQSw0QkFRMUIyTCxzQkFWaUNySztPQUMvQixXQS9CRmdLLGlCQThCNkJ0TDs7V0FHQ3lCLGlCQUM1QixXQTFFRitDLGlCQXlFOEIvQzs7V0FFR0csaUJBQy9CLFdBMkpGK0QsZUE1SmlDL0Q7O1dBRUpDLGlCQUMzQixXQThmRnBDLFNBRkFNLGtCQTdmNkI4Qjs7R0FDZ0M7WUFFN0Q4SjtJQUVGOztPQUdxQyxJQUZEOUwsZUFBSlYsZUFFSyxPQTJWbkM2SixzQkE3VmtDbko7T0FDaEMsV0F3ZkZKLFNBRkFNLGtCQXZmOEJaOztPQUtLO1FBRkNtQztRQUFKakM7UUFFRyxPQW9mbkNJLFNBRkFNLGtCQXBmb0N1QjtPQUNsQyxXQXFmRjdCLFNBRkFNLGtCQXBmZ0NWOztPQUtHO1FBRkltQztRQUFKMUI7UUFFQSxPQXFWbkNrSixzQkF2VnVDeEg7T0FDckMsV0FrZkYvQixTQUZBTSxrQkFqZm1DRDs7T0FLQTtRQUZHNkI7UUFBSjNCO1FBRUMsT0E4ZW5DUCxTQUZBTSxrQkE5ZXNDNEI7T0FDcEMsV0ErZUZsQyxTQUZBTSxrQkE5ZWtDQzs7R0FFOEI7WUFFaEUwSSxlQUVDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7V0FDWDVNLGVBQzNCLFdBcWFGNEosdUJBdGE2QjVKOztPQUlOO1FBRlVVO1FBQUpSO1FBRU4sT0FBQSw0QkE2VHZCMkosdUJBL1RpQ25KO09BQy9CLFdBeWNGZSxjQTFjNkJ2Qjs7V0FHSVM7T0FDL0IsV0FBaUMsNEJBMlRuQ2tKLHVCQTVUaUNsSjs7V0FFSEUsaUJBQzVCLFdBdVFGaUosb0JBeFE4QmpKOztXQUVHeUIsaUJBQy9CLFdBdVBGeUgsb0JBeFBpQ3pIOztXQUVIRyxpQkFDNUIsV0FxT0ZvSyx3QkF0TzhCcEs7O1dBRUVDLGlCQUM5QixXQW1ORm9LLHlCQXBOZ0NwSzs7V0FFQ0U7T0FDL0IsV0FBaUMsNEJBaU9uQ2lLLHlCQWxPaUNqSzs7V0FFRkUsaUJBQzdCLFdBK0xGbUgsNkJBaE0rQm5IOztXQUVIRSxpQkFDMUIsV0FpS0Y2SCxzQkFsSzRCN0g7O1dBRUdFLGlCQUM3QixZQXlJRjZKLHlCQTFJK0I3Sjs7V0FFRkc7T0FDM0IsWUFBNkIsNEJBYy9CMkosd0JBZjZCM0o7O1dBRUtDO09BQ2hDO2VBQ0UsNEJBTUo2Ryw2QkFSa0M3Rzs7V0FHREcsa0JBQy9CLFlBblZGeUYsZUFrVmlDekY7O09BR3NCLElBRGpCdEIsaUJBQUp3QixrQkFDcUIsT0F6VnZEeEMsZ0JBd1ZzQ2dCO09BQ3BDLFlBeUZGcUUsZUExRmtDN0M7O0dBQ3dDO1lBRTFFd0csNEJBR0NybUI7SUFBSyxPQTBGTndtQixpQkFwRkFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FzRk53bUIsaUJBcEZBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUVIO0tBR01xQztLQURBQztLQURBQztLQU9pQyxPQTlXcENoTSxnQkF5V0c4TDtJQUVMLFdBTUVHLHFCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkExTTtRQUFKVjtRQUVJLE9BQUEsNEJBcmRuQ3VFLGdCQW1kbUM3RDtPQUNqQyxXQWthRkosU0FGQU0sa0JBamErQlo7O1dBR0VFLGlCQUMvQixXQVNGbU4scUJBVmlDbk47O09BSVU7UUFGTHFCO1FBQUpZO1FBQUp4QjtRQUVhLE9BdkIzQ2lLLGdCQXFCc0NySjtRQUVkLE9BMWR4QmdELGVBd2RrQ3BDO09BQ2hDLFdBK1hGQyxlQWhZOEJ6Qjs7V0FHR0UsaUJBQy9CLFdBcURGMkYsZUF0RGlDM0Y7O09BR3dCLElBRHhCd0IsaUJBQUpDLGlCQUM0QixPQTNCekRzSSxnQkEwQmlDdkk7T0FDL0IsV0FnSEZ3SSxzQkFqSDZCdkk7O0dBQytDO1lBRTVFK0s7SUFFSDtLQUFvQ0M7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyx1QkFOaUNGO0lBQ25DLFdBbmVFL0ksZUFrZUdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0FuWnBDeE0sZ0JBOFlHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUUwQzs7V0FDWDVOLGVBQzdCLFdBdERGNEssZ0JBcUQrQjVLOztPQUc3QjtRQUR5QkU7UUFFTjZELEtBRk03RDtRQUVWcUIsS0FGVXJCO1FBRWRRLEtBRmNSO1FBRWxCUyxPQUZrQlQ7UUFNcEIsTUFoZ0JQcUUsZUE0ZnFCUjtRQUdkLE1Bb0RQOEosa0JBdkRpQnRNO1FBRVYsTUFzVFBnSyxrQkF4VGE3SztPQURYLGVBMlhGSixTQW5CQXVFLFlBdldTbEU7O09BTVA7UUFENEJFO1FBRVRpTixPQUZTak47UUFFYnNDLE9BRmF0QztRQUVqQnNCLE9BRmlCdEI7UUFFckJ5QixPQUZxQnpCO1FBTXZCLE1BdmdCUDBELGVBbWdCcUJ1SjtRQUdkLE1BNkNQRCxrQkFoRGlCMUs7UUFFVixPQXNQUHFJLGtCQXhQYXJKO09BRFgsZUFvWEY3QixTQW5CQXVFLFlBaFdTdkM7O09BTVA7UUFEZ0NHO1FBRXJCSixPQUZxQkk7UUFFekJDLE9BRnlCRDtRQUdULE9BM2dCekI4QixlQTBnQmFsQztPQURYLGVBemdCRmtDLGVBMGdCUzdCOztXQUV3QkUsaUJBQy9CLFdBMWFGc0csZUF5YWlDdEc7bUJBRUFFLGlCQUMvQixXQUVGMEQsZUFIaUMxRDs7R0FDcUI7WUFFdEQwRCxlQUVDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE1BcmF6QndsQixhQW9hTTVJO0lBQ1IsV0FpV0VKLGtCQWpXYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBa0JnQyxNQWpkbkNsTixnQkFvY0c2TTtLQVcwQixNQUFBLFdBbEI1QkQsSUFLRUc7S0FZMEIsTUF5VTdCNU4sa0JBelUyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWI5Q3FxQjtpQkFTTXJxQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQThRMUJ5cUIsY0EvUWM3TjtLQUNSLFdBM2lCTjZELGVBMGlCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENvTztJQU1MLFdBY0VQLGtCQXJCR1EsMEJBSUFKO0dBZUo7WUFFQ0oseUJBQ2lFLHFCQUVYO1lBRXREZCx5QkFHQ2pwQjtJQUFLLE9BRU51bUIsbUJBM09BOEIsa0JBeU9Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU9rQyxNQTVlckN2TixnQkF1ZUdxTjtJQUVMLFdBQ2dDLFdBUDdCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RCxzQkFFQy9tQjtJQUFLLE9BRU4ybkI7c0JBRjJCM25CLEdBQUssT0FzU2hDd2MsU0FGQU0sa0JBcFMyQjljLEdBQWdDLEdBQTFEQTtHQUE2RDtZQUU5RDJuQixnQkFLQ3NDO0lBQUo7S0FLTVk7S0FEQUM7S0FEQUM7S0FEQUM7S0FTa0MsTUFuZ0JyQzNOLGdCQTZmR3dOO0tBSWdDLE1BS25DdEQsbUJBWEd3RDtJQUlMLFdBQ2lDLFdBUjlCZCxJQUVFZSxrQkFFQUY7R0FRSjtZQUVDdkQsMEJBQ21FLHFCQUVuQjtZQUVoRHBCO0lBR0g7S0FJTThFO0tBREFDO0tBREFDO0tBREFDO0tBUWlDLE1BdmhCcEMvTixnQkFpaEJHNk47S0FLMkIsTUF4NUI5QnNKLFdBcW5CQW5NLGtCQTZSRzhDO0lBSUw7WUFtUUUzTyxrQkFsUTRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9Db3JCOzs7WUFHQUg7R0FPSjtZQUVDakM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUF2aUJuQ25PLGdCQWlpQkdpTztLQUs4QixNQWlQakM5TyxTQUZBTSxrQkFyUEd5TztJQUlMLFdBbVBFL08sa0JBbFAyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45Q3dyQixxQkFHQUg7R0FPSjtZQUVDdEM7SUFHSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUF2akJuQ3ZPLGdCQWlqQkdxTztLQUswQixNQW5VN0JyRCxpQkE2VEdzRDtJQUlMO1lBbU9FblAsa0JBbE8yQ3hjLEdBQUssV0FBTEEsR0FBVyxHQU5uRDRyQjs7O1lBR0FIO0dBT0o7WUFFQ3hGO0lBRUg7S0FHTTRGO0tBREFDO0tBREFDO0tBUW1DLE1BdGtCdEMxTyxnQkFna0JHd087SUFFTDtZQWdDRW5LLDJCQXBDR3FLO1lBQ0FEOztHQVFKO1lBRUM5RjtJQUVIO0tBTU1nRztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQW1CbUMsTUEvbEJ0Q2hQLGdCQWlsQkcyTztLQVlnQyxNQStEbkN0RSxrQkE3RUd3RTtLQWFEO09BQUE7MEJBTUZ4Syw0QkFwQkd5SztpQkFTTW5zQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQWlJMUJ5cUIsY0FsSWM3TjtLQUNSLFdBeHJCTjZELGVBdXJCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENrUTtJQU1MO1lBb01FNVAsU0FGQU0sa0JBek1HdVA7Ozs7WUFJQUo7O0dBZ0JKO1lBRUN2SztJQUdIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVNpQyxNQS9tQnBDcFAsZ0JBeW1CR2lQO0tBSTJCLE1BSzlCSSwrQkFYR0Y7SUFJTDtZQTRLRWhRLGtCQTNLNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0N5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRStDO0tBR1gsSUFGSDlQLGVBQUpWLGVBRU8sTUF6L0JwQ3NZLFdBbVNBL1QsZ0JBb3RCaUM3RDtLQUMvQixXQXNFRitQLDJCQXZFNkJ6UTs7UUFHQ0U7SUFDNUIsV0E4SkZJLFNBRkFNLGtCQTdKOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0EwQmtDLE1BeHBCckM5UCxnQkFvb0JHd1A7S0FtQmdDLE1BemhDbkMySCxXQW1TQS9ULGdCQWt1QkdxTTtLQW1CK0IsTUFNbENwRixrQkExQkdxRjtLQW1CNEIsTUFZL0JLLGVBaENHSjtpQkFnQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQWx2QjFCeWdCLGVBaXZCYzdEO0tBQ1IsV0FsdkJONkQsZUFpdkJVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBaEJDd1A7aUJBV01qdEI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUE2RTFCeXFCLGNBOUVjN047S0FDUixXQTV1Qk42RCxlQTJ1QlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVhDZ1I7SUFRTDtZQWdKRTFRLGtCQS9JNkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FWaERtdEI7Ozs7Ozs7WUFPQVA7R0FxQko7WUFFQ2xGLHlCQUNpRSxxQkFFZjtZQUVsRDBGO0lBQ0U7O1NBRThCbFI7S0FDOUIsV0FBZ0MsNEJBS2xDbVIsOEJBTmdDblI7O1FBRURFO0lBQzdCLFdBQStCLDRCQTZCakNrUix3QkE5QitCbFI7R0FFNkI7WUFFNURpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBV2dDLE1BenJCbkN2USxnQkFrckJHa1E7S0FLeUIsTUF6akM1QmlILFdBbVNBL1QsZ0JBK3dCR2dOO0tBTTBCLE1BTTdCZCwyQkFiR2U7SUFLTDtZQW1HRWxSLGtCQWxHMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUM0dEI7OztZQUdBSjs7R0FTSjtZQUVDYjtJQUUwQztTQUNaelE7S0FDNUIsV0FBOEIsNEJBL3hCaEN1RSxnQkE4eEI4QnZFOztRQUVDRTtJQUM3QixXQUErQiw0QkFFakNrUix3QkFIK0JsUjtHQUNzQztZQUVyRWtSO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXZ0MsTUFsdEJuQzVRLGdCQTJzQkd3UTtLQUswQixNQS95QjdCcE4sZUF3eUJHc047S0FNNkIsTUFNaEN0RyxrQkFiR3VHO0lBS0w7WUEwRUV4UixrQkF6RTJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDlDaXVCOzs7WUFHQUg7O0dBU0o7WUFFQ3JHLHlCQUNpRSxxQkFFYjtZQUVwRGdEO0lBQ0Ysc0JBQ2dDLGlCQUNJLGtCQUNKOztHQUEwQjtZQUV4RDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVWlDLE1BN3VCcENqUixnQkFzdUJHOFE7aUJBTXlDbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUDNCb3VCO0tBTTJCLE1BMTBCOUIzTixlQW0wQkc0TjtJQUtMO1lBOENFN1Isa0JBN0M0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAvQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUMvSTtJQUVGO0tBRW9ELElBRHRCdkksZUFBSlYsZUFDMEIsTUFwMUJsRHVFLGVBbTFCNEI3RDtLQUMxQixXQWtDRkosU0FuQkF1RSxZQWhCd0I3RTs7UUFFR0U7SUFDekIsV0F0MUJGcUUsZUFxMUIyQnJFO0dBQ3FCO1lBRWhEa0M7SUFDRiw4QkFDOEI7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBa0M7WUFFNUQ2SCx3QkFDK0QscUJBRWpCO1lBRTlDbEQsV0FBb0UvZ0IsR0FBSyxPQUFMQSxFQUFNO1lBRTFFMmQscUJBQ0YscUJBRTBEO1lBRXhESDtJQUNGOztXQUN3Q1osZUFBSlY7T0FDaEMsV0FEZ0NBLElBL29DbENzWSxvQkFncEN3RHgwQixHQUFLLE9BQUxBLEVBQU0sR0FEeEI0Yzs7V0FFUlIsaUJBQU0sV0FBTkE7O1dBQ09pQyxpQkFBSnhCO09BQy9CLFdBRCtCQSxNQWxwQ2pDMlgsb0JBbXBDdUR4MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHhCcWU7O1dBRURFLGlCQUFKeEI7T0FDOUIsV0FEOEJBLE1BcHBDaEN5WCxvQkFxcENzRHgwQixHQUFLLE9BQUxBLEVBQU0sR0FEeEJ1ZTs7R0FDNkI7WUFFakV6QixpQkFBb0Q5YyxHQUFLLE9BQUxBLEVBQU07WUFFMUR3YyxTQUdDeU47SUFBSixJQUErQjFwQixnQkFBdEJZO0lBQ1IsV0FBeUIsV0FEdEI4b0IsSUFBSzlvQixNQUFzQlo7R0FDNkM7WUFFekVta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNOzs7O09BL3BDckR3MEI7T0FFSXZZO09BUUpJO09BY0FFO09BU0FJO09BVUFLO09BZUFPO09BbUhBaUY7T0FRQUc7T0FlQXRDO09BTUFnVTtPQUdBNVY7T0FZQWY7T0FlQTRDO09BY0EwRDtPQTZDQXZEO09BZUFnRTtPQWtDQUk7T0FXQUQ7T0FhQUk7T0FTQUw7T0FhQXRIO09BSUErSDtPQWFBSTtPQVFBcko7T0FJQXVKO09BUUFHO09BcUNBUztPQUtBRjtPQUlBSztPQWFBSTtPQWdDQTdFO09BUUFrRjtPQWFBSTtPQTJCQUU7T0FRQWxGO09BSUE0RDtPQWVBM0U7T0FhQTRHO09BMkJBRTtPQWFBSTtPQTJCQUM7T0FnQkFqRDtPQUlBa0Q7T0FRQUc7T0FvQ0F6QztPQUtBNkM7T0FJQXBDO09BYUF3QztPQWdCQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQU1BOEQ7T0E0QkF1RDtPQUtBZDtPQUtBMUM7T0FpQkFRO09BSUFZO09BbUJBSjtPQUtBcEI7T0FnQkE2QztPQWdCQUQ7T0FnQkE5QztPQWNBRDtPQXlCQXRFO09BZ0JBZ0w7T0FTQTNHO09BaUNBMkI7T0FLQTBGO09BU0FDO09Ba0JBVjtPQVFBVztPQWlCQTdGO09BS0FnRDtPQU1BM0U7T0FpQkFYO09BUUE3RztPQU1BMkY7T0FLQWxEO09BRUFwRDtPQUtBSDtPQVVBVjtPQUVBTjtPQU1Ba0k7T0FwbkNBMUg7T0E2TEFzRDtPQTJEQUc7Ozs7RTs7Ozs7O0dDeFFjOztJQW0rQlo5ZTtJQUNBQztJQXArQlk7SUE4Q0M7SUFvN0JILGFBQ1ZELHVCQUNBQzs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7WUM5L0JFcWE7SUFFTix1QkFDNkJDLGVBQ3pCLFdBOFpGQyxlQS9aMkJEO1FBRUFFO0lBQ3pCLFdBRUZDLHdCQUgyQkQ7R0FDOEI7WUFFekRDO0lBR0g7S0FHTUM7S0FEQXhCO0tBREFEO0tBTTBCO09BQUEsaUNBSTdCMEIseUJBVEd6QjtJQUdMLFdBc29DRTBCLGtCQXJvQzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DNmEsa0JBRUF5QjtHQU1KO1lBRUNDO0lBR0gsSUFBb0NFLHNCQUE5QkM7SUFDTCxXQUtFQyw2QkFOR0QsYUFBOEJEO0dBSWxDO1lBRUNFO0lBRTRDOztXQUNkVCxlQUFNLFdBQU5BOztXQUNFVSxlQUFKUixpQ0FDc0JwYyxHQUFLLE9BQUxBLEVBQU07T0FBdEQsV0FEMEJvYyxNQUNNLHVDQURGUTs7V0FFSEMsaUJBQzNCLFdBRDJCQTttQkFFREUsaUJBQU0sV0FBTkE7O0dBQW9DO1lBRWhFd1gsU0FDQ3YwQixHQUFLLE9BZ1FOeWdCLGVBaFFDemdCLEdBQXFCO1lBRXRCczBCLFNBQ0N0MEIsR0FBSyxPQWtNTnNnQixhQWxNQ3RnQixHQUFtQjtZQUVwQm8wQixVQUNDcDBCLEdBQUssT0FFTmdkLGdCQUZDaGQsR0FBc0I7WUFFdkJnZDtJQUVIO0tBSU1DO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BMlVwQ0MsZ0JBalZHSjtLQUtnQyxPQUFBLDRCQStsQ25DeUgsZUFybUNHeEg7SUFHTCxXQU9FSyxxQkFaR0gsWUFDQUQ7R0FTSjtZQUVDSTtJQUVGLDhCQStHd0M7OztXQTlHVHJCLGVBQzNCLFdBaWxDRk0sU0FGQU0sa0JBaGxDNkJaOztXQUVHRSxpQkFDOUIsV0Fta0NGb0IsY0Fwa0NnQ3BCOztPQUl1QjtRQUZuQnFCO1FBQUpiO1FBQUpDO1FBRTJCLE9BeEJ2REcsZ0JBc0JvQ1M7UUFFYixPQUFBLDRCQXNKdkJDLG9CQXhKZ0NkO09BQzlCLFdBNGpDRmUsY0E3akM0QmQ7O1dBR0lFLGlCQUM5QixXQXFJRnNYLFdBdElnQ3RYOztPQU8xQjtRQUxrQ2tEO1FBQUpaO1FBQUpoQjtRQUFKRztRQUt0QixPQWhDTnhCLGdCQTJCd0NpRDtRQUlsQyxPQThKTkssYUFsS29DakI7UUFHOUIsT0FBQSxpQ0E5Qk5yQyxpQkEyQmdDcUI7T0FDOUIsV0EwaUNGQyxlQTNpQzRCRTs7T0FTdEI7UUFINEJEO1FBQUpJOzttQkFJakIzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXZDOUJnZCxnQkFzQ2tCSjtXQUNSLFdBK2hDVjBCLGVBaGlDY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDRCcUM7T0FDaEMsV0FsQ0Z2QixnQkFpQzhCMkI7O09BU3NCLElBRGxCRCxpQkFBSkUsaUJBQ3NCLE9BcUhwRHlWLFdBdEhrQzNWO09BQ2hDLFdBMUNGMUIsZ0JBeUM4QjRCOztPQUdvQixJQURsQkMsaUJBQUpDLGlCQUNzQixPQW1IbER1VixXQXBIZ0N4VjtPQUM5QixXQTVDRjdCLGdCQTJDNEI4Qjs7V0FFQ0U7T0FDM0IsV0FBNkIsNEJBOUMvQmhDLGlCQTZDNkJnQzs7T0FJTTtRQUZHRDtRQUFKRztRQUVDLE9BQUEsaUNBakRuQ2xDLGlCQStDc0MrQjtPQUNwQyxXQW9qQ0Z2QyxTQUZBTSxrQkFuakNrQ29DOztXQUdFRCxpQkFBSkc7T0FDOUI7ZUFEOEJBO2VBRVosaUNBcERwQnBDLGlCQWtEb0NpQzs7T0FVOUI7UUFQNkJFO1FBQUpJO1FBT3pCLE9BQUEsaUNBNUROdkMsaUJBcURtQ21DOzttQkFHdEJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQTFEekNnZCxnQkF5RGtCSjtXQUNSLFdBMGlDVkosU0FGQU0sa0JBemlDY1o7VUFDOEM7T0FKMUQsWUFDSSxrQ0FGeUJxRDs7T0FVTjtRQUZTRDtRQUFKRTtRQUVMLE9BcWlDekJoRCxTQUZBTSxrQkFyaUNrQ3dDO09BQ2hDLFlBOURGdEMsZ0JBNkQ4QndDOztPQUt5QjtRQUZkQztRQUFKQztRQUFKQztRQUVzQixPQWxFdkQzQyxnQkFnRXlDeUM7UUFFaEIsT0FraUN6QmpELFNBRkFNLGtCQWxpQ3FDNEM7T0FDbkMsWUFqRUYxQyxnQkFnRWlDMkM7O1dBR0pFO09BQzNCLFlBQTZCLDRCQXBFL0I3QyxpQkFtRTZCNkM7O09BSWdCO1FBRkZLO1FBQUpOO1FBQUpHO1FBRVUsT0FBQSxpQ0F2RTdDL0MsaUJBcUUyQ2tEO1FBRWxCLE9BdkV6QmxELGdCQXFFdUM0QztPQUNyQyxZQXRFRjVDLGdCQXFFbUMrQzs7T0FJb0IsSUFEbEJELGtCQUFKTSxrQkFDc0IsT0F6RXZEcEQsZ0JBd0VxQzhDO09BQ25DLFlBekVGOUMsZ0JBd0VpQ29EOztPQUdtQixJQURsQkQsa0JBQUpLLGtCQUNzQixPQTNFcER4RCxnQkEwRWtDbUQ7T0FDaEMsWUEzRUZuRCxnQkEwRThCd0Q7O09BUXhCO1FBTnNDUjtRQUFKZ0s7UUFBSnRKO1FBQUpIO1FBQUpLO1FBTXRCLE9BbEZONUQsZ0JBNEU0Q2dEO1FBS3RDLE9Bd0VOSyxvQkE3RXdDMko7UUFJbEMsT0FoRk5oTixnQkE0RW9DMEQ7UUFHOUIsT0EvRU4xRCxnQkE0RWdDdUQ7T0FDOUIsWUFnSEZELGFBakg0Qk07O09BUTZCLElBRGxCRCxrQkFBSkcsa0JBQ3NCLE9Bb0t6REwsZUFyS3VDRTtPQUNyQyxZQXBGRjNELGdCQW1GbUM4RDs7T0FJb0I7UUFGaEJNO1FBQUpQO1FBQUpHO1FBRXdCLE9BaUt2RFAsZUFuS3VDVztRQUVkLE9BQUEsaUNBaUt6QlgsZ0JBbkttQ0k7T0FDakMsWUF0RkY3RCxnQkFxRitCZ0U7O09BSW9CO1FBRGxCQztRQUFKQztRQUNzQixPQTJnQ25EMUUsU0FuQkF1RSxZQXovQmlDRTtPQUMvQixZQXpGRmpFLGdCQXdGNkJrRTs7V0FFRkMsa0JBQ3pCLFlBeWdDRjNFLFNBRkFNLGtCQXhnQzJCcUU7O09BSUUsSUFGVUUsa0JBQUpDLGtCQUVOLE9BOUY3QnRFLGdCQTRGdUNxRTtPQUNyQyxZQXVnQ0Y3RSxTQW5CQXVFLFlBci9CbUNPOzs7UUFHSEc7O21CQUdwQnpoQjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVzQixPQXBHbENnZCxnQkFtR2lCSjtXQUNSLFdBZ2dDVEosU0FuQkF1RSxZQTkrQmE3RTtVQUN3QztPQUpuRCxZQUNFLGtDQUY0QnVGOztPQVNvQjtRQUZWd1A7UUFBSnpQO1FBQUpHO1FBRWtCLE9BeEdwRDNFLGdCQXNHMENpVTtRQUVYLE9BMGIvQjFQLGlCQTVic0NDO09BQ3BDLFlBNi9CRmhGLGtCQTUvQm1CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRlMyaEI7O09BS0UsSUFGS0Usa0JBQUpELGtCQUVELE9BM0dwQzVFLGdCQXlHeUM2RTtPQUN2QyxZQXEwQkZILDJCQXQwQnFDRTs7V0FHUEUsa0JBQzVCLFlBN0dGOUUsZ0JBNEc4QjhFOztXQUVGQyxrQkFDMUIsWUEvR0YvRSxnQkE4RzRCK0U7O09BSUg7UUFGUUU7UUFBSkM7UUFFSixPQUFBLGlDQXNJekJ6QixnQkF4SWlDd0I7T0FDL0IsWUFqSEZqRixnQkFnSDZCa0Y7O1dBR0NDLGtCQUM1QixZQW1XRkgscUJBcFc4Qkc7O09BSUMsSUFGS0Msa0JBQUpDLGtCQUVELE9BdkgvQnJGLGdCQXFIb0NvRjtPQUNsQyxZQTgrQkY1RixrQkE3K0JtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZPcWlCOztXQUdKRSxrQkFDMUIsWUF5YUZoQixpQkExYTRCZ0I7O09BRzZCLElBRHhCMk8sa0JBQUp6TyxrQkFDNEIsT0EzSHpEekYsZ0JBMEhpQ2tVO09BQy9CLFlBb1pGNU8sc0JBclo2Qkc7O1dBRUF1TyxrQkFDM0IsWUFLRnhPLFdBTjZCd087bUJBRUlHLGtCQUMvQixZQWdvQkZ6TyxlQWpvQmlDeU87O0dBRXVDO1lBRXhFM087SUFDSDtLQUFzRDFUO0tBQXhCQztLQUF4QkM7S0FJc0IsT0F2SXpCZ08sZ0JBbUltRGxPO0tBRzFCLE9BQUEsNEJBSXpCNlQsaUJBUDJCNVQ7SUFDN0IsV0FNRTRULGdCQVBHM1Q7R0FLSjtZQUVDMlQ7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVEwQixPQXJKN0IvRixnQkErSUc2RjtLQUswQixPQXlDN0J2QyxhQS9DR3dDO0lBSUw7WUFrOUJFdEcsa0JBajlCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FON0MraUI7OztZQUdBSDtHQU9KO1lBRUN2QywyQkFFRixxQkFFb0Q7WUFFbERnVSxXQUNDcjBCLEdBQUssT0FBQSw0QkFFTnllLFdBRkN6ZSxHQUF5QjtZQUUxQnllO0lBQ0g7S0FHTW5FO0tBREFDO0tBREFDO0tBT3dCLE9BM0szQndDLGdCQXNLRzFDO0tBSTBCLE9BQUEsaUNBMUs3QjBDLGlCQXFLR3pDO0lBR0wsV0FxQkUrRixhQXpCRzlGO0dBUUo7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUWdDLE9BOEpuQ3JHLGdCQXBLR2tHO0tBSzBCLE9BeEw3QnZHLGdCQWtMR3lHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUlNc0Q7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0ErSXBDMUcsZ0JBckpHdUc7S0FLZ0MsT0FBQSw0QkFtNkJuQ2MsZUF6NkJHYjtJQUdMLFdBT0VHLGtCQVpHRCxZQUNBRDtHQVNKO1lBRUNFO0lBQ21FLDhCQUNyQzs7O1dBQ0g5SCxlQUN6QixXQXE1QkZNLGtCQXI1QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHZCa2M7O09BR3NCO1FBRGZVO1FBQUpSO1FBQ21CLE9BbTVCakRJLGtCQW41QitEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRG5DNGM7T0FDaEMsV0FwQkYwRCxhQW1COEJsRTs7V0FFRVMsaUJBQzlCLFdBcTRCRlcsY0F0NEJnQ1g7O09BR3FCLElBRGhCd0IsaUJBQUp0QixpQkFDb0IsT0FtNEJyRFMsY0FwNEJxQ2E7T0FDbkMsV0FtNEJGYixjQXA0QmlDVDs7V0FFSnlCO09BQzNCLFdBQTZCLDRCQTFCL0I4QixjQXlCNkI5Qjs7T0FJTTtRQUZHRDtRQUFKSTtRQUVDLE9BQUEsaUNBN0JuQzJCLGNBMkJzQy9CO09BQ3BDLFdBMjRCRi9CLFNBRkFNLGtCQTE0QmtDNkI7O1dBR0VELGlCQUFKRTtPQUM5QixXQUQ4QkEsTUFDaUIsaUNBL0JqRDBCLGNBOEJvQzVCOztPQVM5QjtRQVA2Qkc7UUFBSkM7UUFPekIsT0F3MkJObUYsaUJBLzJCbUNwRjs7bUJBR3RCN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0FyQ3pDc2dCLGFBb0NrQjFEO1dBQ1IsV0FrNEJWSixTQUZBTSxrQkFqNEJjWjtVQUMyQztPQUp2RCxXQUNJLGtDQUZ5QjRDOztXQVFGRTtPQUMzQixXQUE2Qiw0QkF6Qy9Cc0IsY0F3QzZCdEI7O09BR2lCLElBRGZELGlCQUFKRyxpQkFDbUIsT0EzQzlDb0IsYUEwQytCdkI7T0FDN0IsV0EzQ0Z1QixhQTBDMkJwQjs7T0FHMkIsSUFEZkQsaUJBQUpHLGlCQUNtQixPQWN0RHFCLGVBZnVDeEI7T0FDckMsWUE3Q0ZxQixhQTRDbUNsQjs7V0FFUEcsa0JBQzFCLFlBdzNCRi9DLFNBRkFNLGtCQXYzQjRCeUM7O1dBRUFDLGtCQUMxQixZQWpERmMsYUFnRDRCZDs7V0FFRUc7T0FDNUIsWUFvM0JGbkQsa0JBcDNCK0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FEdkIyZjs7V0FFR0Usa0JBQy9CLFlBckRGUyxhQW9EaUNUOztXQUVBRSxrQkFDL0IsWUEyZ0JGMkMsZUE1Z0JpQzNDOztPQUc0QixJQUQ1QlosaUJBQUppQixrQkFDZ0MsT0F6RDdERSxhQXdEaUNuQjtPQUMvQixZQTgyQkYzQyxTQUZBTSxrQkE3MkI2QnNEOztHQUNnRDtZQUU3RUs7SUFFSDtLQUlNNEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsT0FtRnBDbkgsZ0JBekZHZ0g7S0FLZ0MsT0FBQSw0QkF1MkJuQ0ssZUE3MkJHSjtJQUdMLFdBT0VHLG9CQVpHRCxZQUNBRDtHQVNKO1lBRUNFO0lBRUYsOEJBQ2dDOzs7V0FDSHZJLGVBQU0sV0FBTkE7O09BR2dCO1FBRkx1QjtRQUFKYjtRQUFKUjtRQUVhLE9BdEIzQ3FFLGVBb0JzQ2hEO1FBRWQsT0F0QnhCZ0QsZUFvQmtDN0Q7T0FDaEMsV0F5ekJGMEIsZUExekI4QmxDOztXQUdEUztPQUMzQixXQUE2Qiw0QkF4Qi9CNEQsZ0JBdUI2QjVEOztPQUlNO1FBRkF3QjtRQUFKdEI7UUFFSSxPQUFBLDRCQTNCbkMwRCxnQkF5Qm1DcEM7T0FDakMsV0FrMUJGN0IsU0FGQU0sa0JBajFCK0JDOztPQUtLLElBRkR3QixpQkFBSkMsaUJBRUssT0FzekJwQ3lGLGlCQXh6Qm1DMUY7T0FDakMsV0FDRyw0QkFvRExvRyxtQkF0RCtCbkc7O09BS0k7UUFGREU7UUFBSkM7UUFFSyxPQUFBLDRCQWpDbkM4QixnQkErQmtDL0I7T0FDaEMsV0E0MEJGbEMsU0FGQU0sa0JBMzBCOEI2Qjs7V0FHSUUsaUJBQUpEO09BQzVCLFdBbkNGNkIsZUFrQzhCN0IsT0FBSUM7O09BTTVCO1FBSmtDUTtRQUFKTjtRQUFKRDt3QkFJVjllLEdBQUssT0FBQSw0QkFpekIzQitnQixZQWp6QnNCL2dCLEdBQTBCO1FBQTFDLE9BQUEsdUNBSmtDcWY7UUFHbEMsT0E2eUJONEUsaUJBaHpCb0NsRjtPQUNsQztlQUNJLDRCQXNCTjZGLGdCQXhCZ0M5Rjs7OztPQU9xQjtRQUZwQkc7UUFBSkQ7UUFFd0IsT0EzQ3JEeUIsZUF5Q2lDeEI7d0JBRWRqZixHQUFLLE9BaTBCeEJ3YyxrQkFqMEJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7T0FEN0MsV0FDRyxrQ0FGd0JnZjs7V0FHRUUsaUJBQzdCLFdBSUYyRixrQkFMK0IzRjttQkFFRUUsaUJBQy9CLFlBd2RGc0QsZUF6ZGlDdEQ7O0dBQ3FCO1lBRXREeUYsa0JBRUM3a0I7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGM7a0JBSU1BO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BekRuQ3lnQixlQXdEWTdEO0tBQ1IsV0FtekJKSixTQUZBTSxrQkFsekJRWjtJQUM2QztJQUhyRCxXQUFBLGtDQUZNVTtJQUNSLFdBdXpCRUosU0FGQU0sa0JBdHpCRVo7R0FNSTtZQUVOMEk7SUFFSDtLQUdNRTtLQURBQztLQURBeE47S0FPZ0MsT0F5Qm5DOEYsZ0JBOUJHeUg7SUFFTCxXQU1FRSxvQkFWR3pOLFdBQ0F3TjtHQU9KO1lBRUNDO0lBRUY7S0FHbUM7TUFGRHZIO01BQUpiO01BQUpWO01BRVMsT0FBQSw0QkE5RWpDdUUsZ0JBNEVnQ2hEO0tBQzlCLFdBK3hCRmpCLFNBbkJBdUUsWUE3d0J3QjdFLEtBQUlVOztRQUdEUjtJQUN6QixXQWhGRnFFLGVBK0UyQnJFO0dBQ3FCO1lBRWhEdUk7SUFFSDtLQUdNTTtLQURBQztLQURBMU47S0FPZ0MsT0FHbkM2RixnQkFSRzRIO0lBRUwsV0E2dUJFRSx1QkFqdkJHM04sV0FDQTBOO0dBT0o7WUFFQzdILGdCQUVDcmQ7SUFBSyxPQUFBLDRCQUVOb2xCLGdCQUZDcGxCO0dBQThCO1lBRS9Cb2xCO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FNOEIsT0FJakNDLGFBVEdGO0lBR0wsV0Frd0JFOUksa0JBandCNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FML0N1bEIsa0JBRUFGO0dBTUo7WUFFQ0c7SUFDRjs7V0FDeUJ0SixlQUFNLFdBTTdCQyxlQU51QkQ7O1dBQ0FFLGlCQUFNLFdBNlE3QnFKLGVBN1F1QnJKOztXQUNBUyxpQkFBTSxXQXBIN0I0RCxlQW9IdUI1RDs7T0FFb0I7UUFEZkQ7UUFBSkc7UUFDbUIsT0FBQSxpQ0E5VzNDQyxpQkE2VzRCSjtPQUMxQixXQWpMRjBELGFBZ0x3QnZEOztHQUNpRDtZQUV6RVosZUFFQ25jO0lBQUssT0FBQSw0QkFFTjBsQixxQkFGQzFsQjtHQUFtQztZQUVwQzBsQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7T0FFVyxJQURsQmpKLGVBQUpWLGVBQ3NCLE9BekNuRG1CLGdCQXdDaUNUO09BQy9CLFdBaFlGSSxnQkErWDZCZDs7T0FJTjtRQUZXbUM7UUFBSmpDO1FBRVAsT0FBQSw0QkFyTnZCc0Isb0JBbU5rQ1c7T0FDaEMsV0FpdEJGVixjQWx0QjhCdkI7O1dBR0dTLGlCQUMvQixXQXdxQkZpSix1QkF6cUJpQ2pKOztPQUlWO1FBRlUwQjtRQUFKeEI7UUFFTixPQUFBLDRCQWdrQnZCZ0osdUJBbGtCaUN4SDtPQUMvQixXQTRzQkZaLGNBN3NCNkJaOztXQUdDeUIsaUJBQzVCLFdBNGdCRndILG9CQTdnQjhCeEg7O1dBRUdHLGlCQUMvQixXQTRmRnNILG9CQTdmaUN0SDs7V0FFSEMsaUJBQzVCLFdBcUlGc0gsb0JBdEk4QnRIOztXQUVHRTtPQUMvQixXQUFpQyw0QkFtSW5Db0gscUJBcElpQ3BIOztXQUVGRSxpQkFDN0IsV0FzY0ZtSCw2QkF2YytCbkg7O1dBRUhFLGlCQUMxQixXQTJIRm9ELHNCQTVINEJwRDs7V0FFQ0U7T0FDM0IsWUFBNkIsNEJBZ0IvQmdILHdCQWpCNkJoSDs7V0FFS0c7T0FDaEM7ZUFDRSw0QkErUUo4Ryw2QkFqUmtDOUc7O1dBR0hDLGtCQUM3QixZQU1GOEcseUJBUCtCOUc7O1dBRUVHLGtCQUMvQixZQWxFRnlGLGVBaUVpQ3pGOztPQUdzQixJQURqQmpCLGlCQUFKbUIsa0JBQ3FCLE9BeEV2RHhDLGdCQXVFc0NxQjtPQUNwQyxZQWdXRmdFLGVBaldrQzdDOztHQUN3QztZQUUxRXlHLHlCQUdDdG1CO0lBQUssT0F1WU51bUIsbUJBelFBaEYsa0JBOUhDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0E2Vk53bUIsaUJBM1ZBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBT2dDLE9BN0ZuQ3ZKLGdCQXdGR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGRGpLO1FBQUpWO1FBRUssT0FBQSw0QkFwTW5DdUUsZ0JBa01rQzdEO09BQ2hDLFdBeXFCRkosU0FGQU0sa0JBeHFCOEJaOztXQUdFRSxpQkFDOUIsV0F5QkY0RixxQkExQmdDNUY7O09BTzFCO1FBTGlDNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtyQixPQTFCTjRKLGdCQXFCdUN4RztRQUlqQyxPQXRRTkssYUFrUW1DN0M7UUFHN0IsT0FBQSxpQ0FsY05ULGlCQStiK0JxQjtPQUM3QixXQXNvQkZDLGVBdm9CMkJ6Qjs7T0FTckI7UUFIMkIwQjtRQUFKeEI7O21CQUloQi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BM2M5QmdkLGdCQTBja0JKO1dBQ1IsV0EybkJWMEIsZUE1bkJjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIMkJxQztPQUMvQixXQTVCRmtJLGdCQTJCNkIxSjs7T0FVMEI7UUFGcEJzQztRQUFKWDtRQUFKRjtRQUU0QixPQXJDdkRpSSxnQkFtQ21DcEg7UUFFWixPQUFBLDRCQWpTdkIzQixvQkErUitCZ0I7T0FDN0IsV0Fxb0JGZixjQXRvQjJCYTs7T0FJNkIsSUFEbEJLLGlCQUFKRixpQkFDc0IsT0FnT3hEbUksZ0JBak9zQ2pJO09BQ3BDLFdBdkNGNEgsZ0JBc0NrQzlIOztXQUVGQyxpQkFDOUIsV0E0U0Y4RCxlQTdTZ0M5RDs7T0FHd0IsSUFEeEJHLGlCQUFKRCxpQkFDNEIsT0EzQ3hEMkgsZ0JBMENnQzFIO09BQzlCLFdBdVdGZ0ksc0JBeFc0QmpJOztHQUMrQztZQUUzRWtEO0lBRUg7S0FBb0NnRjtLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLGtCQU5pQ0Y7SUFDbkMsV0E3UkUxRyxhQTRSRzJHO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQWxKbkNoSyxnQkE2SUc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BS1E7UUFKaUM3SjtRQUFKYjtRQUFKVjt3QkFJVGxjLEdBQUssT0FpbkIzQndjLGtCQWpuQnlDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtRQUE1QyxPQUFBLHVDQUppQ3lkO1FBR2pDLE9BeEVOZ0osZ0JBcUVtQzdKO09BQ2pDLFdBbVdGMkssbUJBcFcrQnJMOztPQU03QjtRQUR3QkU7UUFFVGlELE9BRlNqRDtRQUViaUMsT0FGYWpDO1FBRWpCUyxPQUZpQlQ7UUFHMEIsT0FnQnBEb0wsc0JBakJpQm5JO1FBQ2EsT0EyaUI5Qm9JLGtCQTVpQmFwSjtPQURYLGVBK21CRjdCLFNBbkJBdUUsWUEzbEJTbEU7O09BR1A7UUFEMkJFO1FBRVowQyxPQUZZMUM7UUFFaEJ3QixPQUZnQnhCO1FBRXBCeUIsT0FGb0J6QjtRQUd1QixPQVlwRHlLLHNCQWJpQi9IO1FBQ2EsT0E4ZTlCaUksa0JBL2Vhbko7T0FEWCxlQTJtQkYvQixTQW5CQXVFLFlBdmxCU3ZDOztPQUdQO1FBRCtCRztRQUVwQkQsT0FGb0JDO1FBRXhCQyxPQUZ3QkQ7UUFHUixPQXZRekI4QixlQXNRYS9CO09BRFgsZUFyUUYrQixlQXNRUzdCOztXQUV5QkUsaUJBQ2hDLFdBamdCRjlCLGdCQWdnQmtDOEI7O1dBRUZFLGlCQUM5QixXQXhLRm9HLGVBdUtnQ3BHO21CQUVBRSxpQkFDOUIsV0EwUEZ3RCxlQTNQZ0N4RDs7R0FDcUI7WUFFckRzSTtJQUVGLHVCQUNnQ3RMLGVBQzVCLFdBblJGdUUsZUFrUjhCdkU7SUFHMkIsSUFEckJVLGVBQUpSLGlCQUN5QixPQTdnQnpEWSxnQkE0Z0JvQ0o7SUFDbEMsV0FzVUYySyxtQkF2VWdDbkw7R0FDNEM7WUFFNUVrRyxzQkFFQ3RpQjtJQUFLLE9BK1NOMm5CLGdCQTlSQXBHLGtCQWpCQ3ZoQjtHQUF1QztZQUV4Q2ttQjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVFnQyxPQXZNbkMxSyxnQkFpTUd3SztLQUswQixPQUs3QnRHLGlCQVhHdUc7SUFJTDtZQXlrQkV0TCxrQkF4a0IyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45QytuQjs7O1lBR0FIO0dBT0o7WUFFQ3JHO0lBRUg7S0FHTXlHO0tBREFDO0tBREFDO0tBT2lDLE9Bck5wQzdLLGdCQWdORzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDK0JqTSxlQUMzQixXQWlqQkZNLFNBRkFNLGtCQWhqQjZCWjs7V0FFSUUsaUJBQy9CLFdBck1GRCxlQW9NaUNDOztPQU0zQjtRQUprQ3FCO1FBQUpiO1FBQUpDO1FBSTFCLE9BeEJOMEUsaUJBb0J3QzlEO1FBR2xDLE9BQUEsaUNBWU40SyxrQkFmb0N6TDtPQUNsQyxXQTZpQkZKLGtCQTVpQm9CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk02Yzs7T0FNcUIsSUFEbkJ3QixpQkFBSnRCLGlCQUN1QixPQTFCckR3RSxpQkF5QmtDbEQ7T0FDaEMsV0ExQkZrRCxpQkF5QjhCeEU7O09BSUosSUFGYXdCLGlCQUFKQyxpQkFFVCxPQU0xQjZKLGlCQVJ1QzlKO09BQ3JDLFdBNUJGZ0QsaUJBMkJtQy9DOztXQUdMRyxpQkFDNUIsV0Fqa0JGM0IsZ0JBZ2tCOEIyQjttQkFFR0MsaUJBQy9CLFdBNExGOEQsZUE3TGlDOUQ7O0dBQ3FCO1lBRXREeUo7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQXhQcENuTCxnQkFtUEdpTDtJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQytCdk0sZUFDM0IsV0E4Z0JGTSxTQUZBTSxrQkE3Z0I2Qlo7O1dBRUlFLGlCQUMvQixXQWdDRnFKLGVBakNpQ3JKOztPQU0zQjtRQUprQ3FCO1FBQUpiO1FBQUpDO1FBSTFCLE9BeEJOd0wsaUJBb0J3QzVLO1FBR2xDLE9BQUEsaUNBdkJONEssa0JBb0JvQ3pMO09BQ2xDLFdBMGdCRkosa0JBemdCb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGTTZjOztPQU9OO1FBRk93QjtRQUFKdEI7UUFFSCxPQUFBLDRCQVExQjJMLHNCQVZpQ3JLO09BQy9CLFdBMUJGZ0ssaUJBeUI2QnRMOztXQUdDeUIsaUJBQzVCLFdBaEVGK0MsaUJBK0Q4Qi9DOztXQUVHRyxpQkFDL0IsV0EySkYrRCxlQTVKaUMvRDs7V0FFSkMsaUJBQzNCLFdBOGZGcEMsU0FGQU0sa0JBN2Y2QjhCOztHQUNnQztZQUU3RDhKO0lBRUY7O09BR3FDLElBRkQ5TCxlQUFKVixlQUVLLE9BMlZuQzZKLHNCQTdWa0NuSjtPQUNoQyxXQXdmRkosU0FGQU0sa0JBdmY4Qlo7O09BS0s7UUFGQ21DO1FBQUpqQztRQUVHLE9Bb2ZuQ0ksU0FGQU0sa0JBcGZvQ3VCO09BQ2xDLFdBcWZGN0IsU0FGQU0sa0JBcGZnQ1Y7O09BS0c7UUFGSW1DO1FBQUoxQjtRQUVBLE9BcVZuQ2tKLHNCQXZWdUN4SDtPQUNyQyxXQWtmRi9CLFNBRkFNLGtCQWpmbUNEOztPQUtBO1FBRkc2QjtRQUFKM0I7UUFFQyxPQThlbkNQLFNBRkFNLGtCQTllc0M0QjtPQUNwQyxXQStlRmxDLFNBRkFNLGtCQTlla0NDOztHQUU4QjtZQUVoRTBJLGVBRUN6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBbUNDLHFCQUE3QkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBNkJEO0dBSWpDO1lBRUNFO0lBRXdDOztXQUNYNU0sZUFDM0IsV0FxYUY0Six1QkF0YTZCNUo7O09BSU47UUFGVVU7UUFBSlI7UUFFTixPQUFBLDRCQTZUdkIySix1QkEvVGlDbko7T0FDL0IsV0F5Y0ZlLGNBMWM2QnZCOztXQUdJUztPQUMvQixXQUFpQyw0QkEyVG5Da0osdUJBNVRpQ2xKOztXQUVIRSxpQkFDNUIsV0F1UUZpSixvQkF4UThCako7O1dBRUd5QixpQkFDL0IsV0F1UEZ5SCxvQkF4UGlDekg7O1dBRUhHLGlCQUM1QixXQXFPRm9LLHdCQXRPOEJwSzs7V0FFRUMsaUJBQzlCLFdBbU5Gb0sseUJBcE5nQ3BLOztXQUVDRTtPQUMvQixXQUFpQyw0QkFpT25DaUsseUJBbE9pQ2pLOztXQUVGRSxpQkFDN0IsV0ErTEZtSCw2QkFoTStCbkg7O1dBRUhFLGlCQUMxQixXQWlLRjZILHNCQWxLNEI3SDs7V0FFR0UsaUJBQzdCLFlBeUlGNkoseUJBMUkrQjdKOztXQUVGRztPQUMzQixZQUE2Qiw0QkFjL0IySix3QkFmNkIzSjs7V0FFS0M7T0FDaEM7ZUFDRSw0QkFNSjZHLDZCQVJrQzdHOztXQUdERyxrQkFDL0IsWUF6VUZ5RixlQXdVaUN6Rjs7T0FHc0IsSUFEakJ0QixpQkFBSndCLGtCQUNxQixPQS9VdkR4QyxnQkE4VXNDZ0I7T0FDcEMsWUF5RkZxRSxlQTFGa0M3Qzs7R0FDd0M7WUFFMUV3Ryw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBRUg7S0FHTXFDO0tBREFDO0tBREFDO0tBT2lDLE9BcFdwQ2hNLGdCQStWRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7T0FHcUM7UUFGQTFNO1FBQUpWO1FBRUksT0FBQSw0QkEzY25DdUUsZ0JBeWNtQzdEO09BQ2pDLFdBa2FGSixTQUZBTSxrQkFqYStCWjs7V0FHRUUsaUJBQy9CLFdBU0ZtTixxQkFWaUNuTjs7T0FJVTtRQUZMcUI7UUFBSlk7UUFBSnhCO1FBRWEsT0F2QjNDaUssZ0JBcUJzQ3JKO1FBRWQsT0FoZHhCZ0QsZUE4Y2tDcEM7T0FDaEMsV0ErWEZDLGVBaFk4QnpCOztXQUdHRSxpQkFDL0IsV0FxREYyRixlQXREaUMzRjs7T0FHd0IsSUFEeEJ3QixpQkFBSkMsaUJBQzRCLE9BM0J6RHNJLGdCQTBCaUN2STtPQUMvQixXQWdIRndJLHNCQWpINkJ2STs7R0FDK0M7WUFFNUUrSztJQUVIO0tBQW9DQztLQUE5QkM7S0FHOEIsT0FBQSw0QkFHakNDLHVCQU5pQ0Y7SUFDbkMsV0F6ZEUvSSxlQXdkR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9pQyxPQXpZcEN4TSxnQkFvWUdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRTBDOztXQUNYNU4sZUFDN0IsV0F0REY0SyxnQkFxRCtCNUs7O09BRzdCO1FBRHlCRTtRQUVONkQsS0FGTTdEO1FBRVZxQixLQUZVckI7UUFFZFEsS0FGY1I7UUFFbEJTLE9BRmtCVDtRQU1wQixNQXRmUHFFLGVBa2ZxQlI7UUFHZCxNQW9EUDhKLGtCQXZEaUJ0TTtRQUVWLE1Bc1RQZ0ssa0JBeFRhN0s7T0FEWCxlQTJYRkosU0FuQkF1RSxZQXZXU2xFOztPQU1QO1FBRDRCRTtRQUVUaU4sT0FGU2pOO1FBRWJzQyxPQUZhdEM7UUFFakJzQixPQUZpQnRCO1FBRXJCeUIsT0FGcUJ6QjtRQU12QixNQTdmUDBELGVBeWZxQnVKO1FBR2QsT0E2Q1BELGtCQWhEaUIxSztRQUVWLE9Bc1BQcUksa0JBeFBhcko7T0FEWCxlQW9YRjdCLFNBbkJBdUUsWUFoV1N2Qzs7T0FNUDtRQURnQ0c7UUFFckJKLE9BRnFCSTtRQUV6QkMsT0FGeUJEO1FBR1QsT0FqZ0J6QjhCLGVBZ2dCYWxDO09BRFgsZUEvZkZrQyxlQWdnQlM3Qjs7V0FFd0JFLGlCQUMvQixXQWhhRnNHLGVBK1ppQ3RHO21CQUVBRSxpQkFDL0IsV0FFRjBELGVBSGlDMUQ7O0dBQ3FCO1lBRXREMEQsZUFFQzFpQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixNQTNaekJ3bEIsYUEwWk01STtJQUNSLFdBaVdFSixrQkFqV2F4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NLLGlCQUtDeUQ7SUFBSjtLQU9NQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQWtCZ0MsTUF2Y25DbE4sZ0JBMGJHNk07S0FXMEIsTUFBQSxXQWxCNUJELElBS0VHO0tBWTBCLE1BeVU3QjVOLGtCQXpVMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FiOUNxcUI7aUJBU01ycUI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUE4UTFCeXFCLGNBL1FjN047S0FDUixXQWppQk42RCxlQWdpQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVRDb087SUFNTCxXQWNFUCxrQkFyQkdRLDBCQUlBSjtHQWVKO1lBRUNKLHlCQUNpRSxxQkFFWDtZQUV0RGQseUJBR0NqcEI7SUFBSyxPQUVOdW1CLG1CQXRPQThCLGtCQW9PQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPa0MsTUFsZXJDdk4sZ0JBNmRHcU47SUFFTCxXQUNnQyxXQVA3QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQsc0JBRUMvbUI7SUFBSyxPQUVOMm5CO3NCQUYyQjNuQixHQUFLLE9Bc1NoQ3djLFNBRkFNLGtCQXBTMkI5YyxHQUFnQyxHQUExREE7R0FBNkQ7WUFFOUQybkIsZ0JBS0NzQztJQUFKO0tBS01ZO0tBREFDO0tBREFDO0tBREFDO0tBU2tDLE1BemZyQzNOLGdCQW1mR3dOO0tBSWdDLE1BS25DdEQsbUJBWEd3RDtJQUlMLFdBQ2lDLFdBUjlCZCxJQUVFZSxrQkFFQUY7R0FRSjtZQUVDdkQsMEJBQ21FLHFCQUVuQjtZQUVoRHBCO0lBR0g7S0FJTThFO0tBREFDO0tBREFDO0tBREFDO0tBUWlDLE1BN2dCcEMvTixnQkF1Z0JHNk47S0FLMkIsTUFBQSxpQ0E5UjlCN0Msa0JBd1JHOEM7SUFJTDtZQW1RRTNPLGtCQWxRNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOL0NvckI7OztZQUdBSDtHQU9KO1lBRUNqQztJQUdIO0tBSU1xQztLQURBQztLQURBQztLQURBQztLQVFnQyxNQTdoQm5Dbk8sZ0JBdWhCR2lPO0tBSzhCLE1BaVBqQzlPLFNBRkFNLGtCQXJQR3lPO0lBSUwsV0FtUEUvTyxrQkFsUDJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjlDd3JCLHFCQUdBSDtHQU9KO1lBRUN0QztJQUdIO0tBSU0wQztLQURBQztLQURBQztLQURBQztLQVFnQyxNQTdpQm5Ddk8sZ0JBdWlCR3FPO0tBSzBCLE1BOVQ3QnJELGlCQXdUR3NEO0lBSUwsV0FtT0VuUCxrQkFsTzJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjlDNHJCLHFCQUdBSDtHQU9KO1lBRUN4RjtJQUVIO0tBR000RjtLQURBQztLQURBQztLQVFtQyxNQTVqQnRDMU8sZ0JBc2pCR3dPO0lBRUw7WUFnQ0VuSywyQkFwQ0dxSztZQUNBRDs7R0FRSjtZQUVDOUY7SUFFSDtLQU1NZ0c7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FtQm1DLE1BcmxCdENoUCxnQkF1a0JHMk87S0FZZ0MsTUErRG5DdEUsa0JBN0VHd0U7S0FhRDtPQUFBOzBCQU1GeEssNEJBcEJHeUs7aUJBU01uc0I7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFpSTFCeXFCLGNBbEljN047S0FDUixXQTlxQk42RCxlQTZxQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVRDa1E7SUFNTDtZQW9NRTVQLFNBRkFNLGtCQXpNR3VQOzs7O1lBSUFKOztHQWdCSjtZQUVDdks7SUFHSDtLQUlNNEs7S0FEQUM7S0FEQUM7S0FEQUM7S0FTaUMsTUFybUJwQ3BQLGdCQStsQkdpUDtLQUkyQixNQUs5QkksK0JBWEdGO0lBSUw7WUE0S0VoUSxrQkEzSzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9DeXNCOztZQUVBRjs7R0FRSjtZQUVDRztJQUUrQztLQUdYO01BRkg5UDtNQUFKVjtNQUVPLE1BQUEsaUNBNXNCcEN1RSxnQkEwc0JpQzdEO0tBQy9CLFdBc0VGK1AsMkJBdkU2QnpROztRQUdDRTtJQUM1QixXQThKRkksU0FGQU0sa0JBN0o4QlY7R0FDZ0M7WUFFOUQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTBCa0MsTUE5b0JyQzlQLGdCQTBuQkd3UDtLQW1CZ0MsTUFBQSxpQ0E1dUJuQ3BNLGdCQXd0QkdxTTtLQW1CK0IsTUFNbENwRixrQkExQkdxRjtLQW1CNEIsTUFZL0JLLGVBaENHSjtpQkFnQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXh1QjFCeWdCLGVBdXVCYzdEO0tBQ1IsV0F4dUJONkQsZUF1dUJVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBaEJDd1A7aUJBV01qdEI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUE2RTFCeXFCLGNBOUVjN047S0FDUixXQWx1Qk42RCxlQWl1QlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVhDZ1I7SUFRTDtZQWdKRTFRLGtCQS9JNkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FWaERtdEI7Ozs7Ozs7WUFPQVA7R0FxQko7WUFFQ2xGLHlCQUNpRSxxQkFFZjtZQUVsRDBGO0lBQ0U7O1NBRThCbFI7S0FDOUIsV0FBZ0MsNEJBS2xDbVIsOEJBTmdDblI7O1FBRURFO0lBQzdCLFdBQStCLDRCQTZCakNrUix3QkE5QitCbFI7R0FFNkI7WUFFNURpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBV2dDLE1BL3FCbkN2USxnQkF3cUJHa1E7S0FLeUIsTUFBQSxpQ0E1d0I1QjlNLGdCQXF3QkdnTjtLQU0wQixNQU03QmQsMkJBYkdlO0lBS0w7WUFtR0VsUixrQkFsRzJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDlDNHRCOzs7WUFHQUo7O0dBU0o7WUFFQ2I7SUFFMEM7U0FDWnpRO0tBQzVCLFdBQThCLDRCQXJ4QmhDdUUsZ0JBb3hCOEJ2RTs7UUFFQ0U7SUFDN0IsV0FBK0IsNEJBRWpDa1Isd0JBSCtCbFI7R0FDc0M7WUFFckVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBV2dDLE1BeHNCbkM1USxnQkFpc0JHd1E7S0FLMEIsTUFyeUI3QnBOLGVBOHhCR3NOO0tBTTZCLE1BTWhDdEcsa0JBYkd1RztJQUtMO1lBMEVFeFIsa0JBekUyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDaUUscUJBRWI7WUFFcERnRDtJQUNGLHNCQUNnQyxpQkFDSSxrQkFDSjs7R0FBMEI7WUFFeEQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVVpQyxNQW51QnBDalIsZ0JBNHRCRzhRO2lCQU15Q251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVAzQm91QjtLQU0yQixNQWgwQjlCM04sZUF5ekJHNE47SUFLTDtZQThDRTdSLGtCQTdDNEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQL0NzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDL0k7SUFFRjtLQUVvRCxJQUR0QnZJLGVBQUpWLGVBQzBCLE1BMTBCbER1RSxlQXkwQjRCN0Q7S0FDMUIsV0FrQ0ZKLFNBbkJBdUUsWUFoQndCN0U7O1FBRUdFO0lBQ3pCLFdBNTBCRnFFLGVBMjBCMkJyRTtHQUNxQjtZQUVoRGtDO0lBQ0YsOEJBQzhCOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQWtDO1lBRTVENkgsd0JBQytELHFCQUVqQjtZQUU5Q2xELFdBQW9FL2dCLEdBQUssT0FBTEEsRUFBTTtZQUUxRTJkLHFCQUNGLHFCQUUwRDtZQUV4REg7SUFDRjs7V0FDd0NaLGVBQUpWLDhCQUNzQmxjLEdBQUssT0FBTEEsRUFBTTtPQUE1RCxXQURnQ2tjLElBQ00sc0NBREZVOztXQUVSUixpQkFBTSxXQUFOQTs7V0FDT2lDLGlCQUFKeEIsZ0NBQ3NCN2MsR0FBSyxPQUFMQSxFQUFNO09BQTNELFdBRCtCNmMsTUFDTSxzQ0FERndCOztXQUVERSxpQkFBSnhCLGdDQUNzQi9jLEdBQUssT0FBTEEsRUFBTTtPQUExRCxXQUQ4QitjLE1BQ00sc0NBREZ3Qjs7R0FDNkI7WUFFakV6QixpQkFBb0Q5YyxHQUFLLE9BQUxBLEVBQU07WUFFMUR3YyxTQUdDeU47SUFBSixJQUErQjFwQixnQkFBdEJZO0lBQ1IsV0FBeUIsV0FEdEI4b0IsSUFBSzlvQixNQUFzQlo7R0FDNkM7WUFFekVta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNOzs7O09BNXBDakRpYztPQVFKSTtPQWNBRTtPQVNBSTtPQVVBNFg7T0FHQUQ7T0FHQUY7T0FHQXBYO09BZUFPO09BbUhBaUY7T0FRQUc7T0FlQXRDO09BTUFnVTtPQUdBNVY7T0FZQWY7T0FlQTRDO09BY0EwRDtPQTZDQXZEO09BZUFnRTtPQWtDQUk7T0FXQUQ7T0FhQUk7T0FTQUw7T0FhQXRIO09BSUErSDtPQWFBSTtPQVFBcko7T0FJQXVKO09BUUFHO09BcUNBUztPQUtBRjtPQUlBSztPQWFBSTtPQWdDQTdFO09BUUFrRjtPQWFBSTtPQTJCQUU7T0FRQWxGO09BSUE0RDtPQWVBM0U7T0FhQTRHO09Bc0JBRTtPQWFBSTtPQXNCQUM7T0FnQkFqRDtPQUlBa0Q7T0FRQUc7T0FvQ0F6QztPQUtBNkM7T0FJQXBDO09BYUF3QztPQWdCQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQU1BOEQ7T0E0QkF1RDtPQUtBZDtPQUtBMUM7T0FpQkFRO09BSUFZO09BbUJBSjtPQUtBcEI7T0FnQkE2QztPQWdCQUQ7T0FnQkE5QztPQWNBRDtPQXlCQXRFO09BZ0JBZ0w7T0FTQTNHO09BaUNBMkI7T0FLQTBGO09BU0FDO09Ba0JBVjtPQVFBVztPQWlCQTdGO09BS0FnRDtPQU1BM0U7T0FpQkFYO09BUUE3RztPQU1BMkY7T0FLQWxEO09BRUFwRDtPQUtBSDtPQVVBVjtPQUVBTjtPQU1Ba0k7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O1lDNXBDSXpJO0lBRU4sdUJBQzZCQyxlQUN6QixXQThaRkMsZUEvWjJCRDtRQUVBRTtJQUN6QixXQUVGQyx3QkFIMkJEO0dBQzhCO1lBRXpEQztJQUdIO0tBR01DO0tBREF4QjtLQURBRDtLQU0wQjtPQUFBLGlDQUk3QjBCLHlCQVRHekI7SUFHTCxXQXNvQ0UwQixrQkFyb0M0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUwvQzZhLGtCQUVBeUI7R0FNSjtZQUVDQztJQUdILElBQW9DRSxzQkFBOUJDO0lBQ0wsV0FLRUMsNkJBTkdELGFBQThCRDtHQUlsQztZQUVDRTtJQUU0Qzs7V0FDZFQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlIsaUNBQ3NCcGMsR0FBSyxPQUFMQSxFQUFNO09BQXRELFdBRDBCb2MsTUFDTSx1Q0FERlE7O1dBRUhDLGlCQUMzQixXQUQyQkE7bUJBRURFLGlCQUFNLFdBQU5BOztHQUFvQztZQUVoRXdYLFNBQ0N2MEIsR0FBSyxPQWdRTnlnQixlQWhRQ3pnQixHQUFxQjtZQUV0QnMwQixTQUNDdDBCLEdBQUssT0FrTU5zZ0IsYUFsTUN0Z0IsR0FBbUI7WUFFcEJvMEIsVUFDQ3AwQixHQUFLLE9BRU5nZCxnQkFGQ2hkLEdBQXNCO1lBRXZCZ2Q7SUFFSDtLQUlNQztLQURBQztLQURBQztLQURBQztLQVNpQyxPQTJVcENDLGdCQWpWR0o7S0FLZ0MsT0FBQSw0QkErbENuQ3lILGVBcm1DR3hIO0lBR0wsV0FPRUsscUJBWkdILFlBQ0FEO0dBU0o7WUFFQ0k7SUFFRiw4QkErR3dDOzs7V0E5R1RyQixlQUMzQixXQWlsQ0ZNLFNBRkFNLGtCQWhsQzZCWjs7V0FFR0UsaUJBQzlCLFdBbWtDRm9CLGNBcGtDZ0NwQjs7T0FJdUI7UUFGbkJxQjtRQUFKYjtRQUFKQztRQUUyQixPQXhCdkRHLGdCQXNCb0NTO1FBRWIsT0FBQSw0QkFzSnZCQyxvQkF4SmdDZDtPQUM5QixXQTRqQ0ZlLGNBN2pDNEJkOztXQUdJRSxpQkFDOUIsV0FxSUZzWCxXQXRJZ0N0WDs7T0FPMUI7UUFMa0NrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLdEIsT0FoQ054QixnQkEyQndDaUQ7UUFJbEMsT0E4Sk5LLGFBbEtvQ2pCO1FBRzlCLE9BQUEsaUNBOUJOckMsaUJBMkJnQ3FCO09BQzlCLFdBMGlDRkMsZUEzaUM0QkU7O09BU3RCO1FBSDRCRDtRQUFKSTs7bUJBSWpCM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F2QzlCZ2QsZ0JBc0NrQko7V0FDUixXQStoQ1YwQixlQWhpQ2NwQztVQUNtQztRQUgzQyxPQUFBLGtDQUg0QnFDO09BQ2hDLFdBbENGdkIsZ0JBaUM4QjJCOztPQVNzQixJQURsQkQsaUJBQUpFLGlCQUNzQixPQXFIcER5VixXQXRIa0MzVjtPQUNoQyxXQTFDRjFCLGdCQXlDOEI0Qjs7T0FHb0IsSUFEbEJDLGlCQUFKQyxpQkFDc0IsT0FtSGxEdVYsV0FwSGdDeFY7T0FDOUIsV0E1Q0Y3QixnQkEyQzRCOEI7O1dBRUNFO09BQzNCLFdBQTZCLDRCQTlDL0JoQyxpQkE2QzZCZ0M7O09BSU07UUFGR0Q7UUFBSkc7UUFFQyxPQUFBLGlDQWpEbkNsQyxpQkErQ3NDK0I7T0FDcEMsV0FvakNGdkMsU0FGQU0sa0JBbmpDa0NvQzs7V0FHRUQsaUJBQUpHO09BQzlCO2VBRDhCQTtlQUVaLGlDQXBEcEJwQyxpQkFrRG9DaUM7O09BVTlCO1FBUDZCRTtRQUFKSTtRQU96QixPQUFBLGlDQTVETnZDLGlCQXFEbUNtQzs7bUJBR3RCbmY7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFNEIsT0ExRHpDZ2QsZ0JBeURrQko7V0FDUixXQTBpQ1ZKLFNBRkFNLGtCQXppQ2NaO1VBQzhDO09BSjFELFlBQ0ksa0NBRnlCcUQ7O09BVU47UUFGU0Q7UUFBSkU7UUFFTCxPQXFpQ3pCaEQsU0FGQU0sa0JBcmlDa0N3QztPQUNoQyxZQTlERnRDLGdCQTZEOEJ3Qzs7T0FLeUI7UUFGZEM7UUFBSkM7UUFBSkM7UUFFc0IsT0FsRXZEM0MsZ0JBZ0V5Q3lDO1FBRWhCLE9Ba2lDekJqRCxTQUZBTSxrQkFsaUNxQzRDO09BQ25DLFlBakVGMUMsZ0JBZ0VpQzJDOztXQUdKRTtPQUMzQixZQUE2Qiw0QkFwRS9CN0MsaUJBbUU2QjZDOztPQUlnQjtRQUZGSztRQUFKTjtRQUFKRztRQUVVLE9BQUEsaUNBdkU3Qy9DLGlCQXFFMkNrRDtRQUVsQixPQXZFekJsRCxnQkFxRXVDNEM7T0FDckMsWUF0RUY1QyxnQkFxRW1DK0M7O09BSW9CLElBRGxCRCxrQkFBSk0sa0JBQ3NCLE9BekV2RHBELGdCQXdFcUM4QztPQUNuQyxZQXpFRjlDLGdCQXdFaUNvRDs7T0FHbUIsSUFEbEJELGtCQUFKSyxrQkFDc0IsT0EzRXBEeEQsZ0JBMEVrQ21EO09BQ2hDLFlBM0VGbkQsZ0JBMEU4QndEOztPQVF4QjtRQU5zQ1I7UUFBSmdLO1FBQUp0SjtRQUFKSDtRQUFKSztRQU10QixPQWxGTjVELGdCQTRFNENnRDtRQUt0QyxPQXdFTkssb0JBN0V3QzJKO1FBSWxDLE9BaEZOaE4sZ0JBNEVvQzBEO1FBRzlCLE9BL0VOMUQsZ0JBNEVnQ3VEO09BQzlCLFlBZ0hGRCxhQWpINEJNOztPQVE2QixJQURsQkQsa0JBQUpHLGtCQUNzQixPQW9LekRMLGVBckt1Q0U7T0FDckMsWUFwRkYzRCxnQkFtRm1DOEQ7O09BSW9CO1FBRmhCTTtRQUFKUDtRQUFKRztRQUV3QixPQWlLdkRQLGVBbkt1Q1c7UUFFZCxPQUFBLGlDQWlLekJYLGdCQW5LbUNJO09BQ2pDLFlBdEZGN0QsZ0JBcUYrQmdFOztPQUlvQjtRQURsQkM7UUFBSkM7UUFDc0IsT0EyZ0NuRDFFLFNBbkJBdUUsWUF6L0JpQ0U7T0FDL0IsWUF6RkZqRSxnQkF3RjZCa0U7O1dBRUZDLGtCQUN6QixZQXlnQ0YzRSxTQUZBTSxrQkF4Z0MyQnFFOztPQUlFLElBRlVFLGtCQUFKQyxrQkFFTixPQTlGN0J0RSxnQkE0RnVDcUU7T0FDckMsWUF1Z0NGN0UsU0FuQkF1RSxZQXIvQm1DTzs7O1FBR0hHOzttQkFHcEJ6aEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFc0IsT0FwR2xDZ2QsZ0JBbUdpQko7V0FDUixXQWdnQ1RKLFNBbkJBdUUsWUE5K0JhN0U7VUFDd0M7T0FKbkQsWUFDRSxrQ0FGNEJ1Rjs7T0FTb0I7UUFGVndQO1FBQUp6UDtRQUFKRztRQUVrQixPQXhHcEQzRSxnQkFzRzBDaVU7UUFFWCxPQTBiL0IxUCxpQkE1YnNDQztPQUNwQyxZQTYvQkZoRixrQkE1L0JtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZTMmhCOztPQUtFLElBRktFLGtCQUFKRCxrQkFFRCxPQTNHcEM1RSxnQkF5R3lDNkU7T0FDdkMsWUFxMEJGSCwyQkF0MEJxQ0U7O1dBR1BFLGtCQUM1QixZQTdHRjlFLGdCQTRHOEI4RTs7V0FFRkMsa0JBQzFCLFlBL0dGL0UsZ0JBOEc0QitFOztPQUlIO1FBRlFFO1FBQUpDO1FBRUosT0FBQSxpQ0FzSXpCekIsZ0JBeElpQ3dCO09BQy9CLFlBakhGakYsZ0JBZ0g2QmtGOztXQUdDQyxrQkFDNUIsWUFtV0ZILHFCQXBXOEJHOztPQUlDLElBRktDLGtCQUFKQyxrQkFFRCxPQXZIL0JyRixnQkFxSG9Db0Y7T0FDbEMsWUE4K0JGNUYsa0JBNytCbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGT3FpQjs7V0FHSkUsa0JBQzFCLFlBeWFGaEIsaUJBMWE0QmdCOztPQUc2QixJQUR4QjJPLGtCQUFKek8sa0JBQzRCLE9BM0h6RHpGLGdCQTBIaUNrVTtPQUMvQixZQW9aRjVPLHNCQXJaNkJHOztXQUVBdU8sa0JBQzNCLFlBS0Z4TyxXQU42QndPO21CQUVJRyxrQkFDL0IsWUFnb0JGek8sZUFqb0JpQ3lPOztHQUV1QztZQUV4RTNPO0lBQ0g7S0FBc0QxVDtLQUF4QkM7S0FBeEJDO0tBSXNCLE9Bdkl6QmdPLGdCQW1JbURsTztLQUcxQixPQUFBLDRCQUl6QjZULGlCQVAyQjVUO0lBQzdCLFdBTUU0VCxnQkFQRzNUO0dBS0o7WUFFQzJUO0lBRUg7S0FJTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMEIsT0FySjdCL0YsZ0JBK0lHNkY7S0FLMEIsT0F5QzdCdkMsYUEvQ0d3QztJQUlMO1lBazlCRXRHLGtCQWo5QjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjdDK2lCOzs7WUFHQUg7R0FPSjtZQUVDdkMsMkJBRUYscUJBRW9EO1lBRWxEZ1UsV0FDQ3IwQixHQUFLLE9BQUEsNEJBRU55ZSxXQUZDemUsR0FBeUI7WUFFMUJ5ZTtJQUNIO0tBR01uRTtLQURBQztLQURBQztLQU93QixPQTNLM0J3QyxnQkFzS0cxQztLQUkwQixPQUFBLGlDQTFLN0IwQyxpQkFxS0d6QztJQUdMLFdBcUJFK0YsYUF6Qkc5RjtHQVFKO1lBRUNrRDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVFnQyxPQThKbkNyRyxnQkFwS0drRztLQUswQixPQXhMN0J2RyxnQkFrTEd5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FJTXNEO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BK0lwQzFHLGdCQXJKR3VHO0tBS2dDLE9BQUEsNEJBbTZCbkNjLGVBejZCR2I7SUFHTCxXQU9FRyxrQkFaR0QsWUFDQUQ7R0FTSjtZQUVDRTtJQUNtRSw4QkFDckM7OztXQUNIOUgsZUFDekIsV0FxNUJGTSxrQkFyNUI0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUR2QmtjOztPQUdzQjtRQURmVTtRQUFKUjtRQUNtQixPQW01QmpESSxrQkFuNUIrRHhjLEdBQUssT0FBTEEsRUFBTSxHQURuQzRjO09BQ2hDLFdBcEJGMEQsYUFtQjhCbEU7O1dBRUVTLGlCQUM5QixXQXE0QkZXLGNBdDRCZ0NYOztPQUdxQixJQURoQndCLGlCQUFKdEIsaUJBQ29CLE9BbTRCckRTLGNBcDRCcUNhO09BQ25DLFdBbTRCRmIsY0FwNEJpQ1Q7O1dBRUp5QjtPQUMzQixXQUE2Qiw0QkExQi9COEIsY0F5QjZCOUI7O09BSU07UUFGR0Q7UUFBSkk7UUFFQyxPQUFBLGlDQTdCbkMyQixjQTJCc0MvQjtPQUNwQyxXQTI0QkYvQixTQUZBTSxrQkExNEJrQzZCOztXQUdFRCxpQkFBSkU7T0FDOUIsV0FEOEJBLE1BQ2lCLGlDQS9CakQwQixjQThCb0M1Qjs7T0FTOUI7UUFQNkJHO1FBQUpDO1FBT3pCLE9BdzJCTm1GLGlCQS8yQm1DcEY7O21CQUd0QjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTRCLE9BckN6Q3NnQixhQW9Da0IxRDtXQUNSLFdBazRCVkosU0FGQU0sa0JBajRCY1o7VUFDMkM7T0FKdkQsV0FDSSxrQ0FGeUI0Qzs7V0FRRkU7T0FDM0IsV0FBNkIsNEJBekMvQnNCLGNBd0M2QnRCOztPQUdpQixJQURmRCxpQkFBSkcsaUJBQ21CLE9BM0M5Q29CLGFBMEMrQnZCO09BQzdCLFdBM0NGdUIsYUEwQzJCcEI7O09BRzJCLElBRGZELGlCQUFKRyxpQkFDbUIsT0FjdERxQixlQWZ1Q3hCO09BQ3JDLFlBN0NGcUIsYUE0Q21DbEI7O1dBRVBHLGtCQUMxQixZQXczQkYvQyxTQUZBTSxrQkF2M0I0QnlDOztXQUVBQyxrQkFDMUIsWUFqREZjLGFBZ0Q0QmQ7O1dBRUVHO09BQzVCLFlBbzNCRm5ELGtCQXAzQitDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHZCMmY7O1dBRUdFLGtCQUMvQixZQXJERlMsYUFvRGlDVDs7V0FFQUUsa0JBQy9CLFlBMmdCRjJDLGVBNWdCaUMzQzs7T0FHNEIsSUFENUJaLGlCQUFKaUIsa0JBQ2dDLE9BekQ3REUsYUF3RGlDbkI7T0FDL0IsWUE4MkJGM0MsU0FGQU0sa0JBNzJCNkJzRDs7R0FDZ0Q7WUFFN0VLO0lBRUg7S0FJTTREO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE9BbUZwQ25ILGdCQXpGR2dIO0tBS2dDLE9BQUEsNEJBdTJCbkNLLGVBNzJCR0o7SUFHTCxXQU9FRyxvQkFaR0QsWUFDQUQ7R0FTSjtZQUVDRTtJQUVGLDhCQUNnQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdnQjtRQUZMdUI7UUFBSmI7UUFBSlI7UUFFYSxPQXRCM0NxRSxlQW9Cc0NoRDtRQUVkLE9BdEJ4QmdELGVBb0JrQzdEO09BQ2hDLFdBeXpCRjBCLGVBMXpCOEJsQzs7V0FHRFM7T0FDM0IsV0FBNkIsNEJBeEIvQjRELGdCQXVCNkI1RDs7T0FJTTtRQUZBd0I7UUFBSnRCO1FBRUksT0FBQSw0QkEzQm5DMEQsZ0JBeUJtQ3BDO09BQ2pDLFdBazFCRjdCLFNBRkFNLGtCQWoxQitCQzs7T0FLSyxJQUZEd0IsaUJBQUpDLGlCQUVLLE9Bc3pCcEN5RixpQkF4ekJtQzFGO09BQ2pDLFdBQ0csNEJBb0RMb0csbUJBdEQrQm5HOztPQUtJO1FBRkRFO1FBQUpDO1FBRUssT0FBQSw0QkFqQ25DOEIsZ0JBK0JrQy9CO09BQ2hDLFdBNDBCRmxDLFNBRkFNLGtCQTMwQjhCNkI7O1dBR0lFLGlCQUFKRDtPQUM1QixXQW5DRjZCLGVBa0M4QjdCLE9BQUlDOztPQU01QjtRQUprQ1E7UUFBSk47UUFBSkQ7d0JBSVY5ZSxHQUFLLE9BQUEsNEJBaXpCM0IrZ0IsWUFqekJzQi9nQixHQUEwQjtRQUExQyxPQUFBLHVDQUprQ3FmO1FBR2xDLE9BNnlCTjRFLGlCQWh6Qm9DbEY7T0FDbEM7ZUFDSSw0QkFzQk42RixnQkF4QmdDOUY7Ozs7T0FPcUI7UUFGcEJHO1FBQUpEO1FBRXdCLE9BM0NyRHlCLGVBeUNpQ3hCO3dCQUVkamYsR0FBSyxPQWkwQnhCd2Msa0JBajBCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRndCZ2Y7O1dBR0VFLGlCQUM3QixXQUlGMkYsa0JBTCtCM0Y7bUJBRUVFLGlCQUMvQixZQXdkRnNELGVBemRpQ3REOztHQUNxQjtZQUV0RHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUU0QixPQXpEbkN5Z0IsZUF3RFk3RDtLQUNSLFdBbXpCSkosU0FGQU0sa0JBbHpCUVo7SUFDNkM7SUFIckQsV0FBQSxrQ0FGTVU7SUFDUixXQXV6QkVKLFNBRkFNLGtCQXR6QkVaO0dBTUk7WUFFTjBJO0lBRUg7S0FHTUU7S0FEQUM7S0FEQXhOO0tBT2dDLE9BeUJuQzhGLGdCQTlCR3lIO0lBRUwsV0FNRUUsb0JBVkd6TixXQUNBd047R0FPSjtZQUVDQztJQUVGO0tBR21DO01BRkR2SDtNQUFKYjtNQUFKVjtNQUVTLE9BQUEsNEJBOUVqQ3VFLGdCQTRFZ0NoRDtLQUM5QixXQSt4QkZqQixTQW5CQXVFLFlBN3dCd0I3RSxLQUFJVTs7UUFHRFI7SUFDekIsV0FoRkZxRSxlQStFMkJyRTtHQUNxQjtZQUVoRHVJO0lBRUg7S0FHTU07S0FEQUM7S0FEQTFOO0tBT2dDLE9BR25DNkYsZ0JBUkc0SDtJQUVMLFdBNnVCRUUsdUJBanZCRzNOLFdBQ0EwTjtHQU9KO1lBRUM3SCxnQkFFQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQjtJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTThCLE9BSWpDQyxhQVRHRjtJQUdMLFdBa3dCRTlJLGtCQWp3QjRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTC9DdWxCLGtCQUVBRjtHQU1KO1lBRUNHO0lBQ0Y7O1dBQ3lCdEosZUFBTSxXQU03QkMsZUFOdUJEOztXQUNBRSxpQkFBTSxXQTZRN0JxSixlQTdRdUJySjs7V0FDQVMsaUJBQU0sV0FwSDdCNEQsZUFvSHVCNUQ7O09BRW9CO1FBRGZEO1FBQUpHO1FBQ21CLE9BQUEsaUNBOVczQ0MsaUJBNlc0Qko7T0FDMUIsV0FqTEYwRCxhQWdMd0J2RDs7R0FDaUQ7WUFFekVaLGVBRUNuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFtQ0MscUJBQTdCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUE2QkQ7R0FJakM7WUFFQ0U7SUFFd0M7O09BRVcsSUFEbEJqSixlQUFKVixlQUNzQixPQXpDbkRtQixnQkF3Q2lDVDtPQUMvQixXQWhZRkksZ0JBK1g2QmQ7O09BSU47UUFGV21DO1FBQUpqQztRQUVQLE9BQUEsNEJBck52QnNCLG9CQW1Oa0NXO09BQ2hDLFdBaXRCRlYsY0FsdEI4QnZCOztXQUdHUyxpQkFDL0IsV0F3cUJGaUosdUJBenFCaUNqSjs7T0FJVjtRQUZVMEI7UUFBSnhCO1FBRU4sT0FBQSw0QkFna0J2QmdKLHVCQWxrQmlDeEg7T0FDL0IsV0E0c0JGWixjQTdzQjZCWjs7V0FHQ3lCLGlCQUM1QixXQTRnQkZ3SCxvQkE3Z0I4QnhIOztXQUVHRyxpQkFDL0IsV0E0ZkZzSCxvQkE3ZmlDdEg7O1dBRUhDLGlCQUM1QixXQXFJRnNILG9CQXRJOEJ0SDs7V0FFR0U7T0FDL0IsV0FBaUMsNEJBbUluQ29ILHFCQXBJaUNwSDs7V0FFRkUsaUJBQzdCLFdBc2NGbUgsNkJBdmMrQm5IOztXQUVIRSxpQkFDMUIsV0EySEZvRCxzQkE1SDRCcEQ7O1dBRUNFO09BQzNCLFlBQTZCLDRCQWdCL0JnSCx3QkFqQjZCaEg7O1dBRUtHO09BQ2hDO2VBQ0UsNEJBK1FKOEcsNkJBalJrQzlHOztXQUdIQyxrQkFDN0IsWUFNRjhHLHlCQVArQjlHOztXQUVFRyxrQkFDL0IsWUFsRUZ5RixlQWlFaUN6Rjs7T0FHc0IsSUFEakJqQixpQkFBSm1CLGtCQUNxQixPQXhFdkR4QyxnQkF1RXNDcUI7T0FDcEMsWUFnV0ZnRSxlQWpXa0M3Qzs7R0FDd0M7WUFFMUV5Ryx5QkFHQ3RtQjtJQUFLLE9BdVlOdW1CLG1CQXpRQWhGLGtCQTlIQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9BNlZOd21CLGlCQTNWQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU9nQyxPQTdGbkN2SixnQkF3RkdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkRqSztRQUFKVjtRQUVLLE9BQUEsNEJBcE1uQ3VFLGdCQWtNa0M3RDtPQUNoQyxXQXlxQkZKLFNBRkFNLGtCQXhxQjhCWjs7V0FHRUUsaUJBQzlCLFdBeUJGNEYscUJBMUJnQzVGOztPQU8xQjtRQUxpQzZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLckIsT0ExQk40SixnQkFxQnVDeEc7UUFJakMsT0F0UU5LLGFBa1FtQzdDO1FBRzdCLE9BQUEsaUNBbGNOVCxpQkErYitCcUI7T0FDN0IsV0Fzb0JGQyxlQXZvQjJCekI7O09BU3JCO1FBSDJCMEI7UUFBSnhCOzttQkFJaEIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQTNjOUJnZCxnQkEwY2tCSjtXQUNSLFdBMm5CVjBCLGVBNW5CY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSDJCcUM7T0FDL0IsV0E1QkZrSSxnQkEyQjZCMUo7O09BVTBCO1FBRnBCc0M7UUFBSlg7UUFBSkY7UUFFNEIsT0FyQ3ZEaUksZ0JBbUNtQ3BIO1FBRVosT0FBQSw0QkFqU3ZCM0Isb0JBK1IrQmdCO09BQzdCLFdBcW9CRmYsY0F0b0IyQmE7O09BSTZCLElBRGxCSyxpQkFBSkYsaUJBQ3NCLE9BZ094RG1JLGdCQWpPc0NqSTtPQUNwQyxXQXZDRjRILGdCQXNDa0M5SDs7V0FFRkMsaUJBQzlCLFdBNFNGOEQsZUE3U2dDOUQ7O09BR3dCLElBRHhCRyxpQkFBSkQsaUJBQzRCLE9BM0N4RDJILGdCQTBDZ0MxSDtPQUM5QixXQXVXRmdJLHNCQXhXNEJqSTs7R0FDK0M7WUFFM0VrRDtJQUVIO0tBQW9DZ0Y7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyxrQkFOaUNGO0lBQ25DLFdBN1JFMUcsYUE0UkcyRztHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPZ0MsT0FsSm5DaEssZ0JBNklHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUVGOztPQUtRO1FBSmlDN0o7UUFBSmI7UUFBSlY7d0JBSVRsYyxHQUFLLE9BaW5CM0J3YyxrQkFqbkJ5Q3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7UUFBNUMsT0FBQSx1Q0FKaUN5ZDtRQUdqQyxPQXhFTmdKLGdCQXFFbUM3SjtPQUNqQyxXQW1XRjJLLG1CQXBXK0JyTDs7T0FNN0I7UUFEd0JFO1FBRVRpRCxPQUZTakQ7UUFFYmlDLE9BRmFqQztRQUVqQlMsT0FGaUJUO1FBRzBCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9BMmlCOUJvSSxrQkE1aUJhcEo7T0FEWCxlQSttQkY3QixTQW5CQXVFLFlBM2xCU2xFOztPQUdQO1FBRDJCRTtRQUVaMEMsT0FGWTFDO1FBRWhCd0IsT0FGZ0J4QjtRQUVwQnlCLE9BRm9CekI7UUFHdUIsT0FZcER5SyxzQkFiaUIvSDtRQUNhLE9BOGU5QmlJLGtCQS9lYW5KO09BRFgsZUEybUJGL0IsU0FuQkF1RSxZQXZsQlN2Qzs7T0FHUDtRQUQrQkc7UUFFcEJELE9BRm9CQztRQUV4QkMsT0FGd0JEO1FBR1IsT0F2UXpCOEIsZUFzUWEvQjtPQURYLGVBclFGK0IsZUFzUVM3Qjs7V0FFeUJFLGlCQUNoQyxXQWpnQkY5QixnQkFnZ0JrQzhCOztXQUVGRSxpQkFDOUIsV0F4S0ZvRyxlQXVLZ0NwRzttQkFFQUUsaUJBQzlCLFdBMFBGd0QsZUEzUGdDeEQ7O0dBQ3FCO1lBRXJEc0k7SUFFRix1QkFDZ0N0TCxlQUM1QixXQW5SRnVFLGVBa1I4QnZFO0lBRzJCLElBRHJCVSxlQUFKUixpQkFDeUIsT0E3Z0J6RFksZ0JBNGdCb0NKO0lBQ2xDLFdBc1VGMkssbUJBdlVnQ25MO0dBQzRDO1lBRTVFa0csc0JBRUN0aUI7SUFBSyxPQStTTjJuQixnQkE5UkFwRyxrQkFqQkN2aEI7R0FBdUM7WUFFeENrbUI7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsT0F2TW5DMUssZ0JBaU1Hd0s7S0FLMEIsT0FLN0J0RyxpQkFYR3VHO0lBSUw7WUF5a0JFdEwsa0JBeGtCMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOOUMrbkI7OztZQUdBSDtHQU9KO1lBRUNyRztJQUVIO0tBR015RztLQURBQztLQURBQztLQU9pQyxPQXJOcEM3SyxnQkFnTkcySztJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQytCak0sZUFDM0IsV0FpakJGTSxTQUZBTSxrQkFoakI2Qlo7O1dBRUlFLGlCQUMvQixXQXJNRkQsZUFvTWlDQzs7T0FNM0I7UUFKa0NxQjtRQUFKYjtRQUFKQztRQUkxQixPQXhCTjBFLGlCQW9Cd0M5RDtRQUdsQyxPQUFBLGlDQVlONEssa0JBZm9Dekw7T0FDbEMsV0E2aUJGSixrQkE1aUJvQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNNmM7O09BTXFCLElBRG5Cd0IsaUJBQUp0QixpQkFDdUIsT0ExQnJEd0UsaUJBeUJrQ2xEO09BQ2hDLFdBMUJGa0QsaUJBeUI4QnhFOztPQUlKLElBRmF3QixpQkFBSkMsaUJBRVQsT0FNMUI2SixpQkFSdUM5SjtPQUNyQyxXQTVCRmdELGlCQTJCbUMvQzs7V0FHTEcsaUJBQzVCLFdBamtCRjNCLGdCQWdrQjhCMkI7bUJBRUdDLGlCQUMvQixXQTRMRjhELGVBN0xpQzlEOztHQUNxQjtZQUV0RHlKO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0F4UHBDbkwsZ0JBbVBHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUMrQnZNLGVBQzNCLFdBOGdCRk0sU0FGQU0sa0JBN2dCNkJaOztXQUVJRSxpQkFDL0IsV0FnQ0ZxSixlQWpDaUNySjs7T0FNM0I7UUFKa0NxQjtRQUFKYjtRQUFKQztRQUkxQixPQXhCTndMLGlCQW9Cd0M1SztRQUdsQyxPQUFBLGlDQXZCTjRLLGtCQW9Cb0N6TDtPQUNsQyxXQTBnQkZKLGtCQXpnQm9CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk02Yzs7T0FPTjtRQUZPd0I7UUFBSnRCO1FBRUgsT0FBQSw0QkFRMUIyTCxzQkFWaUNySztPQUMvQixXQTFCRmdLLGlCQXlCNkJ0TDs7V0FHQ3lCLGlCQUM1QixXQWhFRitDLGlCQStEOEIvQzs7V0FFR0csaUJBQy9CLFdBMkpGK0QsZUE1SmlDL0Q7O1dBRUpDLGlCQUMzQixXQThmRnBDLFNBRkFNLGtCQTdmNkI4Qjs7R0FDZ0M7WUFFN0Q4SjtJQUVGOztPQUdxQyxJQUZEOUwsZUFBSlYsZUFFSyxPQTJWbkM2SixzQkE3VmtDbko7T0FDaEMsV0F3ZkZKLFNBRkFNLGtCQXZmOEJaOztPQUtLO1FBRkNtQztRQUFKakM7UUFFRyxPQW9mbkNJLFNBRkFNLGtCQXBmb0N1QjtPQUNsQyxXQXFmRjdCLFNBRkFNLGtCQXBmZ0NWOztPQUtHO1FBRkltQztRQUFKMUI7UUFFQSxPQXFWbkNrSixzQkF2VnVDeEg7T0FDckMsV0FrZkYvQixTQUZBTSxrQkFqZm1DRDs7T0FLQTtRQUZHNkI7UUFBSjNCO1FBRUMsT0E4ZW5DUCxTQUZBTSxrQkE5ZXNDNEI7T0FDcEMsV0ErZUZsQyxTQUZBTSxrQkE5ZWtDQzs7R0FFOEI7WUFFaEUwSSxlQUVDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQW1DQyxxQkFBN0JDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTZCRDtHQUlqQztZQUVDRTtJQUV3Qzs7V0FDWDVNLGVBQzNCLFdBcWFGNEosdUJBdGE2QjVKOztPQUlOO1FBRlVVO1FBQUpSO1FBRU4sT0FBQSw0QkE2VHZCMkosdUJBL1RpQ25KO09BQy9CLFdBeWNGZSxjQTFjNkJ2Qjs7V0FHSVM7T0FDL0IsV0FBaUMsNEJBMlRuQ2tKLHVCQTVUaUNsSjs7V0FFSEUsaUJBQzVCLFdBdVFGaUosb0JBeFE4QmpKOztXQUVHeUIsaUJBQy9CLFdBdVBGeUgsb0JBeFBpQ3pIOztXQUVIRyxpQkFDNUIsV0FxT0ZvSyx3QkF0TzhCcEs7O1dBRUVDLGlCQUM5QixXQW1ORm9LLHlCQXBOZ0NwSzs7V0FFQ0U7T0FDL0IsV0FBaUMsNEJBaU9uQ2lLLHlCQWxPaUNqSzs7V0FFRkUsaUJBQzdCLFdBK0xGbUgsNkJBaE0rQm5IOztXQUVIRSxpQkFDMUIsV0FpS0Y2SCxzQkFsSzRCN0g7O1dBRUdFLGlCQUM3QixZQXlJRjZKLHlCQTFJK0I3Sjs7V0FFRkc7T0FDM0IsWUFBNkIsNEJBYy9CMkosd0JBZjZCM0o7O1dBRUtDO09BQ2hDO2VBQ0UsNEJBTUo2Ryw2QkFSa0M3Rzs7V0FHREcsa0JBQy9CLFlBelVGeUYsZUF3VWlDekY7O09BR3NCLElBRGpCdEIsaUJBQUp3QixrQkFDcUIsT0EvVXZEeEMsZ0JBOFVzQ2dCO09BQ3BDLFlBeUZGcUUsZUExRmtDN0M7O0dBQ3dDO1lBRTFFd0csNEJBR0NybUI7SUFBSyxPQTBGTndtQixpQkFwRkFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FzRk53bUIsaUJBcEZBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUVIO0tBR01xQztLQURBQztLQURBQztLQU9pQyxPQXBXcENoTSxnQkErVkc4TDtJQUVMLFdBTUVHLHFCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O09BR3FDO1FBRkExTTtRQUFKVjtRQUVJLE9BQUEsNEJBM2NuQ3VFLGdCQXljbUM3RDtPQUNqQyxXQWthRkosU0FGQU0sa0JBamErQlo7O1dBR0VFLGlCQUMvQixXQVNGbU4scUJBVmlDbk47O09BSVU7UUFGTHFCO1FBQUpZO1FBQUp4QjtRQUVhLE9BdkIzQ2lLLGdCQXFCc0NySjtRQUVkLE9BaGR4QmdELGVBOGNrQ3BDO09BQ2hDLFdBK1hGQyxlQWhZOEJ6Qjs7V0FHR0UsaUJBQy9CLFdBcURGMkYsZUF0RGlDM0Y7O09BR3dCLElBRHhCd0IsaUJBQUpDLGlCQUM0QixPQTNCekRzSSxnQkEwQmlDdkk7T0FDL0IsV0FnSEZ3SSxzQkFqSDZCdkk7O0dBQytDO1lBRTVFK0s7SUFFSDtLQUFvQ0M7S0FBOUJDO0tBRzhCLE9BQUEsNEJBR2pDQyx1QkFOaUNGO0lBQ25DLFdBemRFL0ksZUF3ZEdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPaUMsT0F6WXBDeE0sZ0JBb1lHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUUwQzs7V0FDWDVOLGVBQzdCLFdBdERGNEssZ0JBcUQrQjVLOztPQUc3QjtRQUR5QkU7UUFFTjZELEtBRk03RDtRQUVWcUIsS0FGVXJCO1FBRWRRLEtBRmNSO1FBRWxCUyxPQUZrQlQ7UUFNcEIsTUF0ZlBxRSxlQWtmcUJSO1FBR2QsTUFvRFA4SixrQkF2RGlCdE07UUFFVixNQXNUUGdLLGtCQXhUYTdLO09BRFgsZUEyWEZKLFNBbkJBdUUsWUF2V1NsRTs7T0FNUDtRQUQ0QkU7UUFFVGlOLE9BRlNqTjtRQUVic0MsT0FGYXRDO1FBRWpCc0IsT0FGaUJ0QjtRQUVyQnlCLE9BRnFCekI7UUFNdkIsTUE3ZlAwRCxlQXlmcUJ1SjtRQUdkLE9BNkNQRCxrQkFoRGlCMUs7UUFFVixPQXNQUHFJLGtCQXhQYXJKO09BRFgsZUFvWEY3QixTQW5CQXVFLFlBaFdTdkM7O09BTVA7UUFEZ0NHO1FBRXJCSixPQUZxQkk7UUFFekJDLE9BRnlCRDtRQUdULE9BamdCekI4QixlQWdnQmFsQztPQURYLGVBL2ZGa0MsZUFnZ0JTN0I7O1dBRXdCRSxpQkFDL0IsV0FoYUZzRyxlQStaaUN0RzttQkFFQUUsaUJBQy9CLFdBRUYwRCxlQUhpQzFEOztHQUNxQjtZQUV0RDBELGVBRUMxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUEzWnpCd2xCLGFBMFpNNUk7SUFDUixXQWlXRUosa0JBaldheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FrQmdDLE1BdmNuQ2xOLGdCQTBiRzZNO0tBVzBCLE1BQUEsV0FsQjVCRCxJQUtFRztLQVkwQixNQXlVN0I1TixrQkF6VTJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBYjlDcXFCO2lCQVNNcnFCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BOFExQnlxQixjQS9RYzdOO0tBQ1IsV0FqaUJONkQsZUFnaUJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FUQ29PO0lBTUwsV0FjRVAsa0JBckJHUSwwQkFJQUo7R0FlSjtZQUVDSix5QkFDaUUscUJBRVg7WUFFdERkLHlCQUdDanBCO0lBQUssT0FFTnVtQixtQkF0T0E4QixrQkFvT0Nyb0I7R0FBMEM7WUFFM0N1bUIsbUJBS0MwRDtJQUFKO0tBSU1TO0tBREFDO0tBREFDO0tBT2tDLE1BbGVyQ3ZOLGdCQTZkR3FOO0lBRUwsV0FDZ0MsV0FQN0JULElBRUVXLFlBQ0FEO0dBT0o7WUFFQzVELHNCQUVDL21CO0lBQUssT0FFTjJuQjtzQkFGMkIzbkIsR0FBSyxPQXNTaEN3YyxTQUZBTSxrQkFwUzJCOWMsR0FBZ0MsR0FBMURBO0dBQTZEO1lBRTlEMm5CLGdCQUtDc0M7SUFBSjtLQUtNWTtLQURBQztLQURBQztLQURBQztLQVNrQyxNQXpmckMzTixnQkFtZkd3TjtLQUlnQyxNQUtuQ3RELG1CQVhHd0Q7SUFJTCxXQUNpQyxXQVI5QmQsSUFFRWUsa0JBRUFGO0dBUUo7WUFFQ3ZELDBCQUNtRSxxQkFFbkI7WUFFaERwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVFpQyxNQTdnQnBDL04sZ0JBdWdCRzZOO0tBSzJCLE1BQUEsaUNBOVI5QjdDLGtCQXdSRzhDO0lBSUw7WUFtUUUzTyxrQkFsUTRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTi9Db3JCOzs7WUFHQUg7R0FPSjtZQUVDakM7SUFHSDtLQUlNcUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUE3aEJuQ25PLGdCQXVoQkdpTztLQUs4QixNQWlQakM5TyxTQUZBTSxrQkFyUEd5TztJQUlMLFdBbVBFL08sa0JBbFAyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45Q3dyQixxQkFHQUg7R0FPSjtZQUVDdEM7SUFHSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRZ0MsTUE3aUJuQ3ZPLGdCQXVpQkdxTztLQUswQixNQTlUN0JyRCxpQkF3VEdzRDtJQUlMLFdBbU9FblAsa0JBbE8yQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU45QzRyQixxQkFHQUg7R0FPSjtZQUVDeEY7SUFFSDtLQUdNNEY7S0FEQUM7S0FEQUM7S0FRbUMsTUE1akJ0QzFPLGdCQXNqQkd3TztJQUVMO1lBZ0NFbkssMkJBcENHcUs7WUFDQUQ7O0dBUUo7WUFFQzlGO0lBRUg7S0FNTWdHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBbUJtQyxNQXJsQnRDaFAsZ0JBdWtCRzJPO0tBWWdDLE1BK0RuQ3RFLGtCQTdFR3dFO0tBYUQ7T0FBQTswQkFNRnhLLDRCQXBCR3lLO2lCQVNNbnNCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BaUkxQnlxQixjQWxJYzdOO0tBQ1IsV0E5cUJONkQsZUE2cUJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FUQ2tRO0lBTUw7WUFvTUU1UCxTQUZBTSxrQkF6TUd1UDs7OztZQUlBSjs7R0FnQko7WUFFQ3ZLO0lBR0g7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBU2lDLE1Bcm1CcENwUCxnQkErbEJHaVA7S0FJMkIsTUFLOUJJLCtCQVhHRjtJQUlMO1lBNEtFaFEsa0JBM0s0Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4vQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFK0M7S0FHWDtNQUZIOVA7TUFBSlY7TUFFTyxNQUFBLGlDQTVzQnBDdUUsZ0JBMHNCaUM3RDtLQUMvQixXQXNFRitQLDJCQXZFNkJ6UTs7UUFHQ0U7SUFDNUIsV0E4SkZJLFNBRkFNLGtCQTdKOEJWO0dBQ2dDO1lBRTlEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0EwQmtDLE1BOW9CckM5UCxnQkEwbkJHd1A7S0FtQmdDLE1BQUEsaUNBNXVCbkNwTSxnQkF3dEJHcU07S0FtQitCLE1BTWxDcEYsa0JBMUJHcUY7S0FtQjRCLE1BWS9CSyxlQWhDR0o7aUJBZ0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUF4dUIxQnlnQixlQXV1QmM3RDtLQUNSLFdBeHVCTjZELGVBdXVCVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWhCQ3dQO2lCQVdNanRCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BNkUxQnlxQixjQTlFYzdOO0tBQ1IsV0FsdUJONkQsZUFpdUJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FYQ2dSO0lBUUw7WUFnSkUxUSxrQkEvSTZDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVmhEbXRCOzs7Ozs7O1lBT0FQO0dBcUJKO1lBRUNsRix5QkFDaUUscUJBRWY7WUFFbEQwRjtJQUNFOztTQUU4QmxSO0tBQzlCLFdBQWdDLDRCQUtsQ21SLDhCQU5nQ25SOztRQUVERTtJQUM3QixXQUErQiw0QkE2QmpDa1Isd0JBOUIrQmxSO0dBRTZCO1lBRTVEaVI7SUFHSDtLQUtNRTtLQURBQztLQURBQztLQURBQztLQURBRTtLQVdnQyxNQS9xQm5DdlEsZ0JBd3FCR2tRO0tBS3lCLE1BQUEsaUNBNXdCNUI5TSxnQkFxd0JHZ047S0FNMEIsTUFNN0JkLDJCQWJHZTtJQUtMO1lBbUdFbFIsa0JBbEcyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVA5QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRTBDO1NBQ1p6UTtLQUM1QixXQUE4Qiw0QkFyeEJoQ3VFLGdCQW94QjhCdkU7O1FBRUNFO0lBQzdCLFdBQStCLDRCQUVqQ2tSLHdCQUgrQmxSO0dBQ3NDO1lBRXJFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVdnQyxNQXhzQm5DNVEsZ0JBaXNCR3dRO0tBSzBCLE1BcnlCN0JwTixlQTh4QkdzTjtLQU02QixNQU1oQ3RHLGtCQWJHdUc7SUFLTDtZQTBFRXhSLGtCQXpFMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQOUNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ2lFLHFCQUViO1lBRXBEZ0Q7SUFDRixzQkFDZ0MsaUJBQ0ksa0JBQ0o7O0dBQTBCO1lBRXhEM0U7SUFFSDtLQUtNb0k7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FVaUMsTUFudUJwQ2pSLGdCQTR0Qkc4UTtpQkFNeUNudUIsR0FBSyxPQUFMQSxFQUFNO0lBQXBCO0tBQUEsTUFBQSxpQ0FQM0JvdUI7S0FNMkIsTUFoMEI5QjNOLGVBeXpCRzROO0lBS0w7WUE4Q0U3UixrQkE3QzRDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUC9Dc3VCOzs7O1lBSUFKO0dBUUo7WUFFQy9JO0lBRUY7S0FFb0QsSUFEdEJ2SSxlQUFKVixlQUMwQixNQTEwQmxEdUUsZUF5MEI0QjdEO0tBQzFCLFdBa0NGSixTQW5CQXVFLFlBaEJ3QjdFOztRQUVHRTtJQUN6QixXQTUwQkZxRSxlQTIwQjJCckU7R0FDcUI7WUFFaERrQztJQUNGLDhCQUM4QjsyQkFDRnBDLGVBQU0sV0FBTkE7UUFDQUU7SUFBTSxXQUFOQTtHQUFrQztZQUU1RDZILHdCQUMrRCxxQkFFakI7WUFFOUNsRCxXQUFvRS9nQixHQUFLLE9BQUxBLEVBQU07WUFFMUUyZCxxQkFDRixxQkFFMEQ7WUFFeERIO0lBQ0Y7O1dBQ3dDWixlQUFKViw4QkFDc0JsYyxHQUFLLE9BQUxBLEVBQU07T0FBNUQsV0FEZ0NrYyxJQUNNLHNDQURGVTs7V0FFUlIsaUJBQU0sV0FBTkE7O1dBQ09pQyxpQkFBSnhCLGdDQUNzQjdjLEdBQUssT0FBTEEsRUFBTTtPQUEzRCxXQUQrQjZjLE1BQ00sc0NBREZ3Qjs7V0FFREUsaUJBQUp4QixnQ0FDc0IvYyxHQUFLLE9BQUxBLEVBQU07T0FBMUQsV0FEOEIrYyxNQUNNLHNDQURGd0I7O0dBQzZCO1lBRWpFekIsaUJBQW9EOWMsR0FBSyxPQUFMQSxFQUFNO1lBRTFEd2MsU0FHQ3lOO0lBQUosSUFBK0IxcEIsZ0JBQXRCWTtJQUNSLFdBQXlCLFdBRHRCOG9CLElBQUs5b0IsTUFBc0JaO0dBQzZDO1lBRXpFbWtCLGNBQStDMWtCLEdBQUssT0FBTEEsRUFBTTs7OztPQTVwQ2pEaWM7T0FRSkk7T0FjQUU7T0FTQUk7T0FVQTRYO09BR0FEO09BR0FGO09BR0FwWDtPQWVBTztPQW1IQWlGO09BUUFHO09BZUF0QztPQU1BZ1U7T0FHQTVWO09BWUFmO09BZUE0QztPQWNBMEQ7T0E2Q0F2RDtPQWVBZ0U7T0FrQ0FJO09BV0FEO09BYUFJO09BU0FMO09BYUF0SDtPQUlBK0g7T0FhQUk7T0FRQXJKO09BSUF1SjtPQVFBRztPQXFDQVM7T0FLQUY7T0FJQUs7T0FhQUk7T0FnQ0E3RTtPQVFBa0Y7T0FhQUk7T0EyQkFFO09BUUFsRjtPQUlBNEQ7T0FlQTNFO09BYUE0RztPQXNCQUU7T0FhQUk7T0FzQkFDO09BZ0JBakQ7T0FJQWtEO09BUUFHO09Bb0NBekM7T0FLQTZDO09BSUFwQztPQWFBd0M7T0FnQkFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FNQThEO09BNEJBdUQ7T0FLQWQ7T0FLQTFDO09BaUJBUTtPQUlBWTtPQW1CQUo7T0FLQXBCO09BZ0JBNkM7T0FnQkFEO09BZ0JBOUM7T0FjQUQ7T0F5QkF0RTtPQWdCQWdMO09BU0EzRztPQWlDQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FNQTNFO09BaUJBWDtPQVFBN0c7T0FNQTJGO09BS0FsRDtPQUVBcEQ7T0FLQUg7T0FVQVY7T0FFQU47T0FNQWtJOzs7O0U7Ozs7OztHQ3BvQ2M7O0lBODRCWi9pQjtJQUNBQztJQS80Qlk7SUE4Q0M7SUErMUJILGFBQ1ZELHVCQUNBQzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN4NkJGbWEsZ0JBQWdCeGIsS0FBSXliO0lBQ3RCLE9BQUEsbUNBRGtCemIsV0FBSXliO0dBRW9EO1lBRXBFQztJQUM2RCx1QkFDekNDLGVBQU0sV0F5VjlCQyxlQXpWd0JEOzBCQUlwQnBCLHFCQURBRDtJQUlGLEdBSEVDO1NBT1N6RCxNQVBUeUQsb0JBU0p5Qix3QkFGYWxGOzs7SUFKWCxXQUpFd0Q7R0FRNkM7WUFFakQwQjtJQUVILElBQU1HO0lBQ0wsT0FFRUMsNkJBSEdEO0dBQ2tDO1lBRXJDQztJQUVGOztXQUM2QlQsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlI7T0FDdkIsV0FEdUJBLE1BcWlDekJxWSxxQkFwaUM4Q3owQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7V0FFSEMsaUJBQU0sV0FBTkE7bUJBQ0RFLGlCQUFNLFdBNmlDL0IyWCxVQTdpQ3lCM1g7O0dBQTJDO1lBRXBFQztJQUNIO0tBSU1DO0tBRkFFO0tBREFDO0tBUTRCLE9Ba1MvQkMsZ0JBdlNHSjtJQUVMLFdBTUVNLHFCQVhHSCxZQUNBRDtHQVFKO1lBRUNJO0lBQ2lFLDhCQWdIOUI7OztXQS9HVHJCLGVBQ3hCLFdBcWhDRk0sU0FGQW1ZLGdCQXBoQzBCelk7O1dBRUdFLGlCQUMzQixXQXFnQ0ZvQixjQXRnQzZCcEI7O09BSTBCO1FBRnRCcUI7UUFBSmI7UUFBSkM7UUFFOEIsT0FyQnZERyxnQkFtQmlDUztRQUVWLE9BQUEsNEJBd0h2QkMsb0JBMUg2QmQ7T0FDM0IsV0ErL0JGZSxjQWhnQ3lCZDs7V0FHSUU7T0FDM0IsV0FBMkIsNEJBOEc3QjBCLFdBL0c2QjFCOztPQU92QjtRQUwrQmtEO1FBQUpaO1FBQUpoQjtRQUFKRztRQUtuQixPQTdCTnhCLGdCQXdCcUNpRDtRQUkvQixPQWdJTkssYUFwSWlDakI7UUFHM0IsT0FxZ0NOb1YsWUFoaUNBelgsaUJBd0I2QnFCO09BQzNCLFdBOCtCRkMsZUEvK0J5QkU7O09BU25CO1FBSHlCRDtRQUFKSTs7bUJBSWQzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXBDOUJnZCxnQkFtQ2tCSjtXQUNSLFdBbStCVjBCLGVBcCtCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHlCcUM7T0FDN0IsV0EvQkZ2QixnQkE4QjJCMkI7O09BU29CO1FBRGhCRDtRQUFKRTtRQUNvQixPQUFBLDRCQThGL0NILFdBL0YrQkM7T0FDN0IsV0F2Q0YxQixnQkFzQzJCNEI7O09BR2tCO1FBRGhCQztRQUFKQztRQUNvQixPQUFBLDRCQTRGN0NMLFdBN0Y2Qkk7T0FDM0IsV0F6Q0Y3QixnQkF3Q3lCOEI7O1dBRUNFO09BQ3hCLFdBQXdCLDRCQTNDMUJoQyxpQkEwQzBCZ0M7O09BSU87UUFGRUQ7UUFBSkc7UUFFRSxPQWsvQmpDdVYsWUFoaUNBelgsaUJBNENtQytCO09BQ2pDLFdBdy9CRnZDLFNBRkFtWSxnQkF2L0IrQnpWOztXQUdFRCxpQkFBSkc7T0FDM0IsWUFEMkJBLE1BaS9CN0JxVixZQWhpQ0F6WCxpQkErQ2lDaUM7O09BUzNCO1FBUDBCRTtRQUFKSTtRQU90QixPQXcrQk5rVixZQWhpQ0F6WCxpQkFpRGdDbUM7O21CQUduQm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BdER2Q2dkLGdCQXFEa0JKO1dBQ1IsV0ErK0JWSixTQUZBbVksZ0JBOStCY3pZO1VBQzRDO09BSnhELFlBQ0ksa0NBRnNCcUQ7O09BU21CO1FBRGhCRDtRQUFKRTtRQUNvQixPQTIrQi9DaEQsU0FGQW1ZLGdCQTErQitCclY7T0FDN0IsWUExREZ0QyxnQkF5RDJCd0M7O09BSTBCO1FBRmZDO1FBQUpDO1FBQUpDO1FBRXVCLE9BN0RyRDNDLGdCQTJEc0N5QztRQUViLE9BdytCekJqRCxTQUZBbVksZ0JBeCtCa0NqVjtPQUNoQyxZQTVERjFDLGdCQTJEOEIyQzs7V0FHSkU7T0FDeEIsWUFBd0IsNEJBL0QxQjdDLGlCQThEMEI2Qzs7T0FJbUI7UUFGTEs7UUFBSk47UUFBSkc7UUFFYSxPQTg5QjdDMFUsWUFoaUNBelgsaUJBZ0V3Q2tEO1FBRWYsT0FsRXpCbEQsZ0JBZ0VvQzRDO09BQ2xDLFlBakVGNUMsZ0JBZ0VnQytDOztPQUlrQixJQURoQkQsa0JBQUpNLGtCQUNvQixPQXBFbERwRCxnQkFtRWtDOEM7T0FDaEMsWUFwRUY5QyxnQkFtRThCb0Q7O09BR2lCLElBRGhCRCxrQkFBSkssa0JBQ29CLE9BdEUvQ3hELGdCQXFFK0JtRDtPQUM3QixZQXRFRm5ELGdCQXFFMkJ3RDs7T0FRckI7UUFObUNSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNbkIsT0E3RU41RCxnQkF1RXlDZ0Q7UUFLbkMsT0FvRE5LLG9CQXpEcUMySjtRQUkvQixPQTNFTmhOLGdCQXVFaUMwRDtRQUczQixPQTFFTjFELGdCQXVFNkJ1RDtPQUMzQixZQW9GRkQsYUFyRnlCTTs7T0FRMkIsSUFEaEJELGtCQUFKRyxrQkFDb0IsT0FzSXBETCxlQXZJb0NFO09BQ2xDLFlBL0VGM0QsZ0JBOEVnQzhEOztPQUl3QjtRQUZwQk07UUFBSlA7UUFBSkc7UUFFNEIsT0FtSXhEUCxlQXJJb0NXO1FBRVgsT0E4OEJ6QnFULFlBMzBCQWhVLGdCQXJJZ0NJO09BQzlCLFlBakZGN0QsZ0JBZ0Y0QmdFOztPQUlrQjtRQURoQkM7UUFBSkM7UUFDb0IsT0FpOUI5QzFFLFNBcEJBdUUsWUE5N0I4QkU7T0FDNUIsWUFwRkZqRSxnQkFtRjBCa0U7O1dBRUZDLGtCQUN0QixZQSs4QkYzRSxTQUZBbVksZ0JBOThCd0J4VDs7T0FHZ0MsSUFEcEJFLGtCQUFKQyxrQkFDd0IsT0F4RnhEdEUsZ0JBdUZvQ3FFO09BQ2xDLFlBNjhCRjdFLFNBcEJBdUUsWUExN0JnQ087OztRQUVIRzs7bUJBR2pCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BOUZsQ2dkLGdCQTZGaUJKO1dBQ1IsV0F1OEJUSixTQXBCQXVFLFlBcDdCYTdFO1VBQ3dDO09BSm5ELFlBQ0Usa0NBRnlCdUY7O09BU3VCO1FBRmJ3UDtRQUFKelA7UUFBSkc7UUFFcUIsT0FsR3BEM0UsZ0JBZ0d1Q2lVO1FBRVIsT0F5Wi9CMVAsaUJBM1ptQ0M7T0FDakMsWUFvOEJGaEYsa0JBbjhCbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGTTJoQjs7T0FLSyxJQUZFRSxrQkFBSkQsa0JBRUUsT0FyR3BDNUUsZ0JBbUdzQzZFO09BQ3BDLFlBc3hCRkgsMkJBdnhCa0NFOztXQUdQRSxrQkFDekIsWUF2R0Y5RSxnQkFzRzJCOEU7O1dBRUZDLGtCQUFNLFlBeEcvQi9FLGdCQXdHeUIrRTs7T0FFcUI7UUFEaEJFO1FBQUpDO1FBQ29CLE9BczdCOUN1UyxZQTMwQkFoVSxnQkE1RzhCd0I7T0FDNUIsWUExR0ZqRixnQkF5RzBCa0Y7O1dBRUNDLGtCQUN6QixZQTJVRkgscUJBNVUyQkc7O09BRzRCLElBRHRCQyxrQkFBSkMsa0JBQzBCLE9BOUd2RHJGLGdCQTZHaUNvRjtPQUMvQixZQXU3QkY1RixrQkF2N0IyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQURwQnFpQjs7V0FFSkUsa0JBQU0sWUE0WS9CaEIsaUJBNVl5QmdCOztXQUNLMk8sa0JBQUp6TywwQkFBQUE7MEJBU3BCLE9BMUpOMUcsZ0JBaUowQjBHO09BTWhCO1FBSktqYTtRQUlMLE9BdEhWd1UsZ0JBZ0g4QmtVO1FBS3BCLE9BZzdCVjFVLFNBRkFtWSxnQkFqN0JlbnNCO09BQ1QsWUE2ckJOK2UsbUJBaHNCMEI5RTs7V0FVRXpUO09BQzFCLE9BNUpGK00sZ0JBMko0Qi9NO21CQUVFZ2lCLGtCQUM1QixZQWltQkZ0TyxlQWxtQjhCc087O0dBRWtDO1lBRWhFM1EsMkJBQzZELHFCQUVuQjtZQUUxQzVCO0lBQ0g7S0FBc0RuRTtLQUF6QkM7S0FBdkJDO0tBSW1CLE9BMUl0QndDLGdCQXNJbUQxQztLQUczQixPQXU1QnhCbWEsWUFoaUNBelgsaUJBc0kwQnpDO0lBQzVCLFdBcUJFK0YsYUF0Qkc5RjtHQUtKO1lBRUNrRDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVEyQixPQW9KOUJyRyxnQkExSkdrRztLQUtxQixPQXZKeEJ2RyxnQkFpSkd5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FJTXNEO0tBRkFFO0tBREFDO0tBUTRCLE9Bc0kvQjFHLGdCQTNJR3VHO0lBRUwsV0FNRUksa0JBWEdELFlBQ0FEO0dBUUo7WUFFQ0U7SUFDRSw4QkFDeUI7OztXQUNIOUgsZUFDdEIsV0F3M0JGTSxrQkF4M0J1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQURyQmtjOztPQUdvQjtRQURiVTtRQUFKUjtRQUNpQixPQXMzQjVDSSxrQkF0M0IwRHhjLEdBQUssT0FBTEEsRUFBTSxHQURqQzRjO09BQzdCLFdBbkJGMEQsYUFrQjJCbEU7O1dBRUVTLGlCQUMzQixXQXMyQkZXLGNBdjJCNkJYOztPQUdtQixJQURkd0IsaUJBQUp0QixpQkFDa0IsT0FvMkJoRFMsY0FyMkJrQ2E7T0FDaEMsV0FvMkJGYixjQXIyQjhCVDs7V0FFSnlCO09BQ3hCLFdBQXdCLDRCQXpCMUI4QixjQXdCMEI5Qjs7T0FJTztRQUZFRDtRQUFKSTtRQUVFLE9BdzJCakM4VixZQXA0QkFuVSxjQTBCbUMvQjtPQUNqQyxXQTgyQkYvQixTQUZBbVksZ0JBNzJCK0JoVzs7V0FHRUQsaUJBQUpFO09BQzNCLFdBRDJCQSxNQXUyQjdCNlYsWUFwNEJBblUsY0E2QmlDNUI7O09BUzNCO1FBUDBCRztRQUFKQztRQU90QixPQTAwQk5tRixpQkFqMUJnQ3BGOzttQkFHbkI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQXBDdkNzZ0IsYUFtQ2tCMUQ7V0FDUixXQXEyQlZKLFNBRkFtWSxnQkFwMkJjelk7VUFDeUM7T0FKckQsV0FDSSxrQ0FGc0I0Qzs7V0FRRkU7T0FDeEIsV0FBd0IsNEJBeEMxQnNCLGNBdUMwQnRCOztPQUdlLElBRGJELGlCQUFKRyxpQkFDaUIsT0ExQ3pDb0IsYUF5QzRCdkI7T0FDMUIsV0ExQ0Z1QixhQXlDd0JwQjs7T0FHeUIsSUFEYkQsaUJBQUpHLGlCQUNpQixPQWFqRHFCLGVBZG9DeEI7T0FDbEMsWUE1Q0ZxQixhQTJDZ0NsQjs7V0FFUEcsa0JBQ3ZCLFlBMjFCRi9DLFNBRkFtWSxnQkExMUJ5QnBWOztXQUVBQyxrQkFBTSxZQS9DL0JjLGFBK0N5QmQ7O1dBQ0VHO09BQ3pCLFlBdzFCRm5ELGtCQXgxQjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCMmY7O1dBRUdFLGtCQUM1QixZQW5ERlMsYUFrRDhCVDs7V0FFQUUsa0JBQzVCLFlBNmdCRjJDLGVBOWdCOEIzQzs7T0FHd0IsSUFEeEJaLGlCQUFKaUIsa0JBQzRCLE9BdkR0REUsYUFzRDhCbkI7T0FDNUIsWUFrMUJGM0MsU0FGQW1ZLGdCQWoxQjBCdlU7O0dBQzRDO1lBRXRFSztJQUNIO0tBSU00RDtLQUZBRTtLQURBQztLQVE0QixPQTZFL0JuSCxnQkFsRkdnSDtJQUVMLFdBTUVJLG9CQVhHRCxZQUNBRDtHQVFKO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdtQjtRQUZSdUI7UUFBSmI7UUFBSlI7UUFFZ0IsT0FuQjNDcUUsZUFpQm1DaEQ7UUFFWCxPQW5CeEJnRCxlQWlCK0I3RDtPQUM3QixXQWd5QkYwQixlQWp5QjJCbEM7O1dBR0RTO09BQ3hCLFdBQXdCLDRCQXJCMUI0RCxnQkFvQjBCNUQ7O09BSU87UUFGRHdCO1FBQUp0QjtRQUVLLE9BQUEsNEJBeEJqQzBELGdCQXNCZ0NwQztPQUM5QixXQXl6QkY3QixTQUZBbVksZ0JBeHpCNEI1WDs7T0FLUSxJQUZKd0IsaUJBQUpDLGlCQUVRLE9BNHhCcEN5RixpQkE5eEJnQzFGO09BQzlCLFdBQ0csNEJBNkNMb0csbUJBL0M0Qm5HOztPQUtLO1FBRkZFO1FBQUpDO1FBRU0sT0FBQSw0QkE5QmpDOEIsZ0JBNEIrQi9CO09BQzdCLFdBbXpCRmxDLFNBRkFtWSxnQkFsekIyQmhXOztXQUdJRSxpQkFBSkQ7T0FDekIsV0FoQ0Y2QixlQStCMkI3QixPQUFJQzs7T0FNekI7UUFKK0JRO1FBQUpOO1FBQUpEO1FBSXZCO1VBc3lCTjJWO3FCQXR5QnVCejBCLEdBQUssT0FBQSw0QkF1eEI1QitnQixZQXZ4QnVCL2dCLEdBQTBCO1lBSlpxZjtRQUcvQixPQW14Qk40RSxpQkF0eEJpQ2xGO09BQy9CO2VBQ0ksNEJBc0JONkYsZ0JBeEI2QjlGOzs7O09BT3dCO1FBRnZCRztRQUFKRDtRQUUyQixPQXhDckR5QixlQXNDOEJ4Qjt3QkFFWGpmLEdBQUssT0F3eUJ4QndjLGtCQXh5QnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBQXpCQSxHQUE0QjtPQUQ3QyxXQUNHLGtDQUZxQmdmOztXQUdFRSxpQkFDMUIsV0FJRjJGLGtCQUw0QjNGO21CQUVFRSxpQkFDNUIsWUE2ZEZzRCxlQTlkOEJ0RDs7R0FDbUI7WUFFakR5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0F0RGpDeWdCLGVBcURZN0Q7S0FDUixXQTB4QkpKLFNBRkFtWSxnQkF6eEJRelk7SUFDMkM7SUFIbkQsV0FBQSxrQ0FGTVU7SUFDUixXQTh4QkVKLFNBRkFtWSxnQkE3eEJFelk7R0FNSTtZQUVOMEk7SUFDSCxJQUdNRSwyQkFGQXZOO0lBSUwsU0FKS0E7S0FVRztNQUx1QmtHLEtBTDFCbEc7TUFLc0JxRixLQUx0QnJGO01BS2tCMkUsS0FMbEIzRTtNQVVHLE9BQUEsNEJBckVOa0osZ0JBZ0U2QmhEO01BSXZCLE9Ba3hCTmlYLFVBdHhCeUI5WDtNQUduQixPQW9CTlMsZ0JBMUJHeUg7S0FJRCxXQSt3QkZ0SSxTQXBCQXVFLFlBNXZCcUI3RTs7UUFNR0UsT0FYckI3RTtJQVcyQixXQXRFOUJrSixlQXNFd0JyRTtHQUErQztZQUV2RXVJO0lBRUgsSUFHTU0sMkJBRkF6TjtJQUlMLFNBSktBO0tBU0c7TUFKbUJvRixLQUx0QnBGO01BS2tCMEUsS0FMbEIxRTtNQVNHLE9BcEZOaUosZUFnRnlCN0Q7TUFHbkIsT0FJTlMsZ0JBVkc0SDtLQUlELFdBK3ZCRnpJLFNBcEJBdUUsWUE1dUJxQjdFOztRQUtHRSxPQVZyQjVFO0lBVTJCLFdBckY5QmlKLGVBcUZ3QnJFO0dBQStDO1lBRXZFaUIsZ0JBQ0NyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEI7SUFDSDtLQUVNRTtLQURBQztLQUk2QixPQUVoQ0MsYUFMR0Y7SUFHTCxXQWd2QkU5SSxrQkFodkJheGMsR0FBSyxPQUFMQSxFQUFNLEdBSmhCdWxCO0dBSXVEO1lBRTFEQztJQUFnRTs7V0FDNUN0SixlQUFNLFdBTTFCQyxlQU5vQkQ7O1dBQ0FFLGlCQUFNLFdBa1IxQnFKLGVBbFJvQnJKOztXQUNBUyxpQkFBTSxXQXJHMUI0RCxlQXFHb0I1RDs7T0FFa0I7UUFEYkQ7UUFBSkc7UUFDaUIsT0FvdUJ0QzBYLFlBaGlDQXpYLGlCQTJUeUJKO09BQ3ZCLFdBaEtGMEQsYUErSnFCdkQ7O0dBQ2dEO1lBRXJFWixlQUNDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O09BRWdELElBRGhCakosZUFBSlYsZUFDb0IsT0FqQzlDbUIsZ0JBZ0M4QlQ7T0FDNUIsV0E3VUZJLGdCQTRVMEJkOztPQUdtQjtRQURkbUM7UUFBSmpDO1FBQ2tCLE9BQUEsNEJBbE03Q3NCLG9CQWlNK0JXO09BQzdCLFdBb3NCRlYsY0Fyc0IyQnZCOztXQUVHUyxpQkFDNUIsV0FxcUJGaUosdUJBdHFCOEJqSjs7T0FJUDtRQUZPMEI7UUFBSnhCO1FBRUgsT0FBQSw0QkE4akJ2QmdKLHVCQWhrQjhCeEg7T0FDNUIsV0Fnc0JGWixjQWpzQjBCWjs7V0FHQ3lCLGlCQUN6QixXQTRnQkZ3SCxvQkE3Z0IyQnhIOztPQUtwQjtRQUh1Qkc7UUFFckIxZCxJQWlpQlR5Z0IsMkJBbmlCOEIvQztRQVFELE9BbkQ3QnRCLGdCQTJDOEJzQjtRQVFyQixPQUFBLHVCQU5BMWQ7T0FEUCxlQUNPQSxNQUFBQSxNQUFBQTs7V0FRa0IyZCxpQkFDekIsV0EwSUZzSCxvQkEzSTJCdEg7O1dBRUdFO09BQzVCLFdBQTRCLDRCQXdJOUJvSCxxQkF6SThCcEg7O1dBRUZFLGlCQUMxQixXQStjRm1ILDZCQWhkNEJuSDs7V0FFSEUseUJBQUFBOzBCQWNuQixPQXRaTm5ELGdCQXdZeUJtRDtPQVViO1FBUkcxVztRQVFILE9BckVaNlUsZ0JBMkR5QjZCO2VBQUFBO1FBT2IsT0FrY1pxSSxtQkF6Y3lCckk7T0FHbkIsZUEyckJOMUMsU0FGQW1ZLGdCQTFyQmVuc0I7O1dBYVc0VztPQUN4QixZQUF3Qiw0QkFjMUJnSCx3QkFmMEJoSDs7V0FFS0c7T0FDN0I7ZUFBNkIsNEJBNlEvQjhHLDZCQTlRK0I5Rzs7V0FFSEMsa0JBQzFCLFlBTUY4Ryx5QkFQNEI5Rzs7V0FFRUcsa0JBQzVCLFlBOUVGeUYsZUE2RThCekY7O09BR29CLElBRGZqQixpQkFBSm1CLGtCQUNtQixPQW5GbER4QyxnQkFrRm1DcUI7T0FDakMsWUErVkZnRSxlQWhXK0I3Qzs7R0FDc0M7WUFFckV5Ryx5QkFFQ3RtQjtJQUFLLE9BNllOdW1CLG1CQXJSQWhGLGtCQXhIQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9Bb1dOd21CLGlCQWxXQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQXRHOUJ2SixnQkFpR0dxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ2lFOztPQUdoQztRQUZGaks7UUFBSlY7UUFFTSxPQUFBLDRCQXBNakN1RSxnQkFrTStCN0Q7T0FDN0IsV0E2b0JGSixTQUZBbVksZ0JBNW9CMkJ6WTs7V0FHRUUsaUJBQzNCLFdBNEJGNEYscUJBN0I2QjVGOztPQU92QjtRQUw4QjZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLbEIsT0F4Qk40SixnQkFtQm9DeEc7UUFJOUIsT0FwUU5LLGFBZ1FnQzdDO1FBRzFCLE9BaW9CTmdYLFlBaGlDQXpYLGlCQTRaNEJxQjtPQUMxQixXQTBtQkZDLGVBM21Cd0J6Qjs7T0FTbEI7UUFId0IwQjtRQUFKeEI7O21CQUliL2M7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F4YTlCZ2QsZ0JBdWFrQko7V0FDUixXQStsQlYwQixlQWhtQmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh3QnFDO09BQzVCLFdBMUJGa0ksZ0JBeUIwQjFKOztPQVU2QjtRQUZ2QnNDO1FBQUpYO1FBQUpGO1FBRStCLE9BbkN2RGlJLGdCQWlDZ0NwSDtRQUVULE9BQUEsNEJBL1J2QjNCLG9CQTZSNEJnQjtPQUMxQixXQXdtQkZmLGNBem1Cd0JhOztPQUkyQixJQURoQkssaUJBQUpGLGlCQUNvQixPQWlPbkRtSSxnQkFsT21Dakk7T0FDakMsV0FyQ0Y0SCxnQkFvQytCOUg7O1dBRUZDLGlCQUMzQixXQThTRjhELGVBL1M2QjlEOztPQU12QjtRQUp1Qkc7UUFBSkQ7UUFJbkIsT0E1Q04ySCxnQkF3QzZCMUg7UUFHdkIsT0FpbkJOdkMsU0FGQW1ZLGdCQWxuQnlCN1Y7T0FDdkIsV0E4WEZ5SSxtQkEvWHlCekk7O0dBSUM7WUFFMUJrRDtJQUVIO0tBQWlDZ0Y7S0FBM0JDO0tBR3lCLE9BQUEsNEJBRzVCQyxrQkFOOEJGO0lBQ2hDLFdBOVJFMUcsYUE2UkcyRztHQUlKO1lBRUNDO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPMkIsT0E1SjlCaEssZ0JBdUpHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7T0FLN0Q7UUFKOEI3SjtRQUFKYjtRQUFKVjtRQUl0QjtVQStrQk51WTtxQkEva0J1QnowQixHQUFLLE9Bb2xCNUJ3YyxrQkFwbEIwQ3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEIsR0FKZnlkO1FBRzlCLE9BdkVOZ0osZ0JBb0VnQzdKO09BQzlCLFdBa1dGMkssbUJBblc0QnJMOztPQU0xQjtRQURxQkU7UUFFTmlELE9BRk1qRDtRQUVWaUMsT0FGVWpDO1FBRWRTLE9BRmNUO1FBRzZCLE9BZ0JwRG9MLHNCQWpCaUJuSTtRQUNhLE9BdWhCOUJvSSxrQkF4aEJhcEo7T0FEWCxlQWtsQkY3QixTQXBCQXVFLFlBN2pCU2xFOztPQUdQO1FBRHdCRTtRQUVUMEMsT0FGUzFDO1FBRWJ3QixPQUZheEI7UUFFakJ5QixPQUZpQnpCO1FBRzBCLE9BWXBEeUssc0JBYmlCL0g7UUFDYSxPQTBkOUJpSSxrQkEzZGFuSjtPQURYLGVBOGtCRi9CLFNBcEJBdUUsWUF6akJTdkM7O09BR1A7UUFENEJHO1FBRWpCRCxPQUZpQkM7UUFFckJDLE9BRnFCRDtRQUdMLE9BeFF6QjhCLGVBdVFhL0I7T0FEWCxlQXRRRitCLGVBdVFTN0I7O1dBRXNCRSxpQkFDN0IsV0EvZEY5QixnQkE4ZCtCOEI7O1dBRUZFLGlCQUMzQixXQWxMRm9HLGVBaUw2QnBHO21CQUVBRSxpQkFDM0IsV0EyUEZ3RCxlQTVQNkJ4RDs7R0FDbUI7WUFFaERzSTtJQUNtRSx1QkFDeEN0TCxlQUN6QixXQW5SRnVFLGVBa1IyQnZFO0lBR3lCLElBRG5CVSxlQUFKUixpQkFDdUIsT0ExZXBEWSxnQkF5ZWlDSjtJQUMvQixXQXNVRjJLLG1CQXZVNkJuTDtHQUMwQztZQUV2RThKO0lBRUg7S0FJTTBCO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE9BM005QjFLLGdCQXFNR3dLO0tBS3FCLE9BS3hCdEcsaUJBWEd1RztJQUlMO1lBaWpCRXRMLGtCQWhqQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTnpDK25COzs7WUFHQUg7R0FPSjtZQUVDckc7SUFDSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPNEIsT0F4Ti9CN0ssZ0JBbU5HMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7V0FDekNqTSxlQUN4QixXQTJoQkZNLFNBRkFtWSxnQkExaEIwQnpZOztXQUVJRSxpQkFDNUIsV0E5TUZELGVBNk04QkM7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk4wRSxpQkFrQnFDOUQ7UUFHL0IsT0FnaEJOZ1gsWUFyZ0JBcE0sa0JBZGlDekw7T0FDL0IsV0F1aEJGSixrQkF0aEJvQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZHNmM7O09BTW1CLElBRGpCd0IsaUJBQUp0QixpQkFDcUIsT0F4QmhEd0UsaUJBdUIrQmxEO09BQzdCLFdBeEJGa0QsaUJBdUIyQnhFOztPQUcwQixJQURqQndCLGlCQUFKQyxpQkFDcUIsT0FNckQ2SixpQkFQb0M5SjtPQUNsQyxXQTFCRmdELGlCQXlCZ0MvQzs7V0FFTEcsaUJBQ3pCLFdBdmhCRjNCLGdCQXNoQjJCMkI7bUJBRUdDLGlCQUM1QixXQXFNRjhELGVBdE04QjlEOztHQUNtQjtZQUVqRHlKO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsT0F4UC9CbkwsZ0JBbVBHaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7V0FDekN2TSxlQUN4QixXQTJmRk0sU0FGQW1ZLGdCQTFmMEJ6WTs7V0FFSUUsaUJBQzVCLFdBK0JGcUosZUFoQzhCcko7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk53TCxpQkFrQnFDNUs7UUFHL0IsT0FnZk5nWCxZQXJnQkFwTSxrQkFrQmlDekw7T0FDL0IsV0F1ZkZKLGtCQXRmb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGRzZjOztPQU9IO1FBRkl3QjtRQUFKdEI7UUFFQSxPQUFBLDRCQVExQjJMLHNCQVY4QnJLO09BQzVCLFdBeEJGZ0ssaUJBdUIwQnRMOztXQUdDeUIsaUJBQ3pCLFdBM0RGK0MsaUJBMEQyQi9DOztXQUVHRyxpQkFDNUIsV0FzS0YrRCxlQXZLOEIvRDs7V0FFSkMsaUJBQ3hCLFdBMmVGcEMsU0FGQW1ZLGdCQTFlMEIvVjs7R0FDNEI7WUFFdEQ4SjtJQUNpRTs7T0FHaEMsSUFGRjlMLGVBQUpWLGVBRU0sT0FrVmpDNkosc0JBcFYrQm5KO09BQzdCLFdBc2VGSixTQUZBbVksZ0JBcmUyQnpZOztPQUtNO1FBRkFtQztRQUFKakM7UUFFSSxPQWtlakNJLFNBRkFtWSxnQkFsZWlDdFc7T0FDL0IsV0FtZUY3QixTQUZBbVksZ0JBbGU2QnZZOztPQUtJO1FBRkdtQztRQUFKMUI7UUFFQyxPQTRVakNrSixzQkE5VW9DeEg7T0FDbEMsV0FnZUYvQixTQUZBbVksZ0JBL2RnQzlYOztPQUtDO1FBRkU2QjtRQUFKM0I7UUFFRSxPQTRkakNQLFNBRkFtWSxnQkE1ZG1Dalc7T0FDakMsV0E2ZEZsQyxTQUZBbVksZ0JBNWQrQjVYOztHQUU2QjtZQUU1RDBJLGVBQ0N6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O1dBQzRCNU0sZUFDeEIsV0E0WkY0Six1QkE3WjBCNUo7O09BSUg7UUFGT1U7UUFBSlI7UUFFSCxPQUFBLDRCQXFUdkIySix1QkF2VDhCbko7T0FDNUIsV0F1YkZlLGNBeGIwQnZCOztXQUdJUztPQUM1QixHQUQ0QkE7WUFJdEIrUCxZQUpzQi9QLFlBQ3hCK1gsU0FHRWhJOztZQUhGZ0k7T0FLSixPQXJvQkY3WSxnQkFnb0JNNlk7O1dBTXFCN1gsaUJBQ3pCLFdBNFBGaUosb0JBN1AyQmpKOztPQUtwQjtRQUh1QnlCO1FBRXJCdmQsSUFpUlR5Z0IsMkJBblI4QmxEO1FBUUQsT0FuVTdCbkIsZ0JBMlQ4Qm1CO1FBUXJCLE9BQUEsdUJBTkF2ZDtPQURQLGVBQ09BLE1BQUFBLE1BQUFBOztXQVFrQjBkLGlCQUN6QixXQW1ORm9LLHdCQXBOMkJwSzs7V0FFRUM7T0FDM0IsT0FycEJGN0MsZ0JBb3BCNkI2Qzs7V0FFQ0U7T0FDNUIsV0FBNEIsNEJBK005QmlLLHlCQWhOOEJqSzs7V0FFRkUsaUJBQzFCLFdBNkxGbUgsNkJBOUw0Qm5IOztXQUVIRSxpQkFDdkIsV0F1S0Y2SCxzQkF4S3lCN0g7O1dBRUdFLGlCQUMxQixXQWdKRjZKLHlCQWpKNEI3Sjs7V0FFRkc7T0FDeEIsV0FBd0IsNEJBYTFCMkosd0JBZDBCM0o7O1dBRUtDO09BQzdCO2VBQTZCLDRCQU0vQjZHLDZCQVArQjdHOztXQUVERyxrQkFDNUIsWUFuVkZ5RixlQWtWOEJ6Rjs7T0FHb0IsSUFEZnRCLGlCQUFKd0Isa0JBQ21CLE9BeFZsRHhDLGdCQXVWbUNnQjtPQUNqQyxZQTBGRnFFLGVBM0YrQjdDOztHQUNzQztZQUVyRXdHLDRCQUdDcm1CO0lBQUssT0FrR053bUIsaUJBNUZBTSxpQkFOQzltQjtHQUF1QztZQUV4Q2twQix1QkFFQ2xwQjtJQUFLLE9BOEZOd21CLGlCQTVGQU0saUJBRkM5bUI7R0FBdUM7WUFFeEM4bUI7SUFDSDtLQUdNcUM7S0FEQUM7S0FEQUM7S0FPNEIsT0E1Vy9CaE0sZ0JBdVdHOEw7SUFFTCxXQU1FRyxxQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNpRTs7T0FHaEM7UUFGRDFNO1FBQUpWO1FBRUssT0FBQSw0QkExY2pDdUUsZ0JBd2NnQzdEO09BQzlCLFdBdVlGSixTQUZBbVksZ0JBdFk0QnpZOztXQUdFRSxpQkFDNUIsV0FZRm1OLHFCQWI4Qm5OOztPQUlhO1FBRlJxQjtRQUFKWTtRQUFKeEI7UUFFZ0IsT0FyQjNDaUssZ0JBbUJtQ3JKO1FBRVgsT0EvY3hCZ0QsZUE2YytCcEM7T0FDN0IsV0FvV0ZDLGVBclcyQnpCOztXQUdHRSxpQkFDNUIsV0F3REYyRixlQXpEOEIzRjs7T0FNeEI7UUFKd0J3QjtRQUFKQztRQUlwQixPQTVCTnNJLGdCQXdCOEJ2STtRQUd4QixPQTJYTi9CLFNBRkFtWSxnQkE1WDBCblc7T0FDeEIsV0F3SUYrSSxtQkF6STBCL0k7O0dBSUE7WUFFMUIrSztJQUVIO0tBQWlDQztLQUEzQkM7S0FHeUIsTUFBQSw0QkFHNUJDLHVCQU44QkY7SUFDaEMsV0EzZEUvSSxlQTBkR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU80QixNQW5aL0J4TSxnQkE4WUdzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQzhCNU4sZUFDMUIsV0F2REY0SyxnQkFzRDRCNUs7O09BRzFCO1FBRHNCRTtRQUVINkQsS0FGRzdEO1FBRVBxQixLQUZPckI7UUFFWFEsS0FGV1I7UUFFZlMsT0FGZVQ7UUFNakIsTUF4ZlBxRSxlQW9mcUJSO1FBR2QsTUEyRFA4SixrQkE5RGlCdE07UUFFVixNQWlTUGdLLGtCQW5TYTdLO09BRFgsZUE2VkZKLFNBcEJBdUUsWUF4VVNsRTs7T0FNUDtRQUR5QkU7UUFFTmlOLE9BRk1qTjtRQUVWc0MsT0FGVXRDO1FBRWRzQixPQUZjdEI7UUFFbEJ5QixPQUZrQnpCO1FBTXBCLE1BL2ZQMEQsZUEyZnFCdUo7UUFHZCxNQW9EUEQsa0JBdkRpQjFLO1FBRVYsTUFpT1BxSSxrQkFuT2FySjtPQURYLGVBc1ZGN0IsU0FwQkF1RSxZQWpVU3ZDOztPQU1QO1FBRDZCRztRQUVsQkosT0FGa0JJO1FBRXRCQyxPQUZzQkQ7UUFHTixNQW5nQnpCOEIsZUFrZ0JhbEM7T0FEWCxlQWpnQkZrQyxlQWtnQlM3Qjs7V0FFcUJFLGlCQUM1QixXQTNhRnNHLGVBMGE4QnRHO21CQUVBRSxpQkFDNUIsV0FFRjBELGVBSDhCMUQ7O0dBQ21CO1lBRWpEMEQsZUFDQzFpQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVILE1BRElrYzs7Ozs7d0RBQ0FtQyxPQURJekI7Y0FBQUE7a0JBQUFBOztXQUtZM0ksZUFBTjBhLGVBSlZ0USxlQUlVc1EsUUFBQUEsSUFBTTFhOzs7O1NBSmhCb0ssT0FESXpCOztJQVNtQixVQWxiekI0SSxhQTBhRW5IO0lBUUosV0E0VEU3QixrQkE1VGF4YyxHQUFLLE9BQUxBLEVBQU0sR0FUakJrYztHQVN1QztZQUV6Q3NLLGlCQUtDeUQ7SUFBSjtLQU9NQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQWtCMkIsTUF4ZDlCbE4sZ0JBMmNHNk07S0FXcUIsTUFBQSxXQWxCdkJELElBS0VHO0tBWXFCLE1Bb1N4QjVOLGtCQXBTc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FiekNxcUI7aUJBU01ycUI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFrUDFCeXFCLGNBblBjN047S0FDUixXQTFpQk42RCxlQXlpQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVRDb087SUFNTCxXQWNFUCxrQkFyQkdRLDBCQUlBSjtHQWVKO1lBRUNKLHlCQUNGLHFCQUVnRDtZQUU5Q2QseUJBRUNqcEI7SUFBSyxPQUVOdW1CLG1CQXJQQThCLGtCQW1QQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPNkIsTUFsZmhDdk4sZ0JBNmVHcU47SUFFTCxXQUMyQixXQVB4QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQ7SUFFSDtLQUlNOEQ7S0FEQUM7S0FEQUM7S0FEQUM7S0FTNkIsTUFqZ0JoQzNOLGdCQTJmR3dOO0tBSTJCLE1BSzlCdEQsbUJBWEd3RDtJQUlMLFdBNFBFdk8sU0FGQW1ZLGdCQS9QRzNKLGtCQUVBRjtHQVFKO1lBRUN2RCwwQkFDMkQscUJBRW5CO1lBRXhDcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRNEIsTUFyaEIvQi9OLGdCQStnQkc2TjtLQUtzQixNQWdPekJ1SixZQXJnQkFwTSxrQkErUkc4QztJQUlMO1lBdU9FM08sa0JBdE91Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4xQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2xDO0lBRUg7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE1BcGlCOUJ2TyxnQkE4aEJHcU87S0FLcUIsTUFwVHhCckQsaUJBOFNHc0Q7SUFJTCxXQXdORW5QLGtCQXZOc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekM0ckIscUJBR0FIO0dBT0o7WUFnQkN6RjtJQUVIO0tBTU1nRztLQUZBRTtLQURBQztLQURBQztLQURBQztLQWtCOEIsTUEza0JqQ2hQLGdCQThqQkcyTztLQVkyQixNQTZEOUJ0RSxrQkEzRUd3RTtLQWFEO09BQUE7MEJBS0Z4Syw0QkFuQkd5SztpQkFTTW5zQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQStIMUJ5cUIsY0FoSWM3TjtLQUNSLFdBN3BCTjZELGVBNHBCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENrUTtJQU1MLFdBeUxFNVAsU0FGQW1ZLGdCQTlMR3RJO0dBbUJKO1lBRUMzSztJQUVIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVM0QixNQTFsQi9CcFAsZ0JBb2xCR2lQO0tBSXNCLE1BS3pCSSwrQkFYR0Y7SUFJTDtZQW1LRWhRLGtCQWxLdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUN5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRTBDO0tBR04sSUFGTjlQLGVBQUpWLGVBRVUsTUFrSnBDdVksWUEzMEJBaFUsZ0JBdXJCOEI3RDtLQUM1QixXQXNFRitQLDJCQXZFMEJ6UTs7UUFHQ0U7SUFDekIsV0FxSkZJLFNBRkFtWSxnQkFwSjJCdlk7R0FDNEI7WUFFdkQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTBCNkIsTUFub0JoQzlQLGdCQSttQkd3UDtLQW1CMkIsTUFrSDlCNEgsWUEzMEJBaFUsZ0JBcXNCR3FNO0tBbUIwQixNQU03QnBGLGtCQTFCR3FGO0tBbUJ1QixNQVkxQkssZUFoQ0dKO2lCQWdCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BcnRCMUJ5Z0IsZUFvdEJjN0Q7S0FDUixXQXJ0Qk42RCxlQW90QlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FoQkN3UDtpQkFXTWp0QjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQTZFMUJ5cUIsY0E5RWM3TjtLQUNSLFdBL3NCTjZELGVBOHNCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBWENnUjtJQVFMO1lBdUlFMVEsa0JBdEl3Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVYzQ210Qjs7Ozs7OztZQU9BUDtHQXFCSjtZQUVDbEYseUJBQ0YscUJBRTRDO1lBRTFDMEY7SUFDRjs7U0FFK0JsUjtLQUMzQixXQUEyQiw0QkFLN0JtUiw4QkFONkJuUjs7UUFFREU7SUFDMUIsV0FBMEIsNEJBNkI1QmtSLHdCQTlCNEJsUjtHQUV3QjtZQUVwRGlSO0lBR0g7S0FLTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUU7S0FXMkIsTUFwcUI5QnZRLGdCQTZwQkdrUTtLQUtvQixNQWtGdkJrSCxZQTMwQkFoVSxnQkFrdkJHZ047S0FNcUIsTUFNeEJkLDJCQWJHZTtJQUtMO1lBMEZFbFIsa0JBekZzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRUY7U0FDNkJ6UTtLQUN6QixXQUF5Qiw0QkFsd0IzQnVFLGdCQWl3QjJCdkU7O1FBRUNFO0lBQzFCLFdBQTBCLDRCQUU1QmtSLHdCQUg0QmxSO0dBQ29DO1lBRWhFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVcyQixNQTdyQjlCNVEsZ0JBc3JCR3dRO0tBS3FCLE1BbHhCeEJwTixlQTJ3QkdzTjtLQU13QixNQU0zQnRHLGtCQWJHdUc7SUFLTDtZQWlFRXhSLGtCQWhFc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FQekNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ0YscUJBRThDO1lBRTVDZ0Q7SUFBaUUsc0JBQ3RDLGlCQUNJLGtCQUNKOztHQUFxQjtZQUVoRDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVTRCLE1BdnRCL0JqUixnQkFndEJHOFE7aUJBTW9DbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUHRCb3VCO0tBTXNCLE1BNXlCekIzTixlQXF5Qkc0TjtJQUtMO1lBc0NFN1Isa0JBckN1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAxQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUM1UDtJQUFvRSw4QkFDM0M7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBNkI7WUFFcEQ2SCx3QkFDRixxQkFFd0M7WUFFdENsRCxXQUE0RC9nQixHQUFLLE9BQUxBLEVBQU07WUFFbEUyZCxxQkFBaUUscUJBRWpCO1lBRWhESDtJQUFtRTs7V0FDaENaLGVBQUpWO09BQzdCLFdBRDZCQSxJQVEvQnVZLHFCQVBvRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7V0FFUlIsaUJBQU0sV0FBTkE7O1dBQ09pQyxpQkFBSnhCO09BQzVCLFdBRDRCQSxNQUs5QjRYLHFCQUptRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkJxZTs7V0FFREUsaUJBQUp4QjtPQUMzQixXQUQyQkEsTUFHN0IwWCxxQkFGa0R6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCdWU7O0dBQzRCO1lBRTdEa1csWUFDQ3hLO0lBQUosWUFBMkI7UUFBWS9OO0lBQU0sV0FBSyxXQUE5QytOLElBQW1DL047R0FBa0I7WUFFdER5WSxlQUFrRDMwQixHQUFLLE9BQUxBLEVBQU07WUFFeER3YyxTQUVDeU47SUFBSixJQUE0QjFwQixnQkFBbkJZO0lBQ1IsV0FBb0IsV0FEakI4b0IsSUFBSzlvQixNQUFtQlo7R0FDc0M7WUFFL0Rta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNO1lBQ3JEMDBCLGlCQUEyQixxQkFBc0M7WUFFakVMLFdBQVdyMEIsR0FBSSxPQUFBLDRCQXg2QmZ5ZSxXQXc2Qld6ZSxHQUF3Qjs7OztPQTlrQ25DK2I7T0FJSUU7T0FlSk07T0FLQUk7T0FTQUs7T0FhQU87T0FtSEE4QztPQUtBNUI7T0FRQWY7T0FlQTRDO09BYUEwRDtPQTRDQXZEO09BYUFnRTtPQWlDQUk7T0FXQUQ7T0FlQUQ7T0FlQXRIO09BR0ErSDtPQVFBSTtPQU9Bcko7T0FHQXVKO09BUUFHO09Bd0RBUztPQUlBRjtPQUlBSztPQVlBSTtPQWtDQTdFO09BUUFrRjtPQVlBSTtPQTBCQUU7T0FPQXRCO09BZUEzRTtPQVlBNEc7T0FvQkFFO09BWUFJO09BcUJBQztPQWVBakQ7T0FHQWtEO09BUUFHO09BZ0RBekM7T0FLQTZDO09BSUFwQztPQVlBd0M7T0FrQkFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FhQThEO09BNEJBdUQ7T0FLQWQ7T0FJQTFDO09BaUJBUTtPQWVBUTtPQUtBcEI7T0FnQkE0QztPQTZCQS9DO09Bd0JBdEU7T0FlQWdMO09BU0EzRztPQWlDQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FLQTNFO09BaUJBeEg7T0FLQTJGO09BS0FsRDtPQUVBcEQ7T0FJQUg7T0FTQWlYO09BR0FFO09BRUFuWTtPQUtBa0k7T0FDQWdRO09BRUFMO09BajVCQS9UO09BNUpBdEQ7T0FxTkF5RDs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7SUN0UEl4RTtJQVlKTTtJQWVBUztJQWFBTztJQXNIQThDO0lBS0E1QjtJQVFBZjtJQWVBNEM7SUFhQTBEO0lBNENBdkQ7SUFhQWdFO0lBaUNBSTtJQVdBRDtJQWlCQUQ7SUFnQkF0SDtJQUdBK0g7SUFTQUk7SUFPQXJKO0lBR0F1SjtJQVFBRztJQW1FQVM7SUFJQUY7SUFJQUs7SUFZQUk7SUFzQ0E3RTtJQWNBa0Y7SUFZQUk7SUEwQkFFO0lBT0F0QjtJQWVBM0U7SUFZQTRHO0lBb0JBRTtJQVlBSTtJQXFCQUM7SUFlQWpEO0lBR0FrRDtJQVFBRztJQThDQXpDO0lBS0E2QztJQUlBcEM7SUFZQXdDO0lBc0JBQztJQWdCQUc7SUFhQUk7SUE0QkFwSDtJQWFBOEQ7SUE0QkF1RDtJQUtBZDtJQUlBMUM7O0lBaUJBUTtJQWVBUTtJQUtBcEI7SUFnQkE0QztJQWVBL0M7SUF3QkF0RTtJQWVBZ0w7O0lBU0EzRztJQWlDQTJCO0lBS0EwRjtJQVNBQztJQWtCQVY7SUFRQVc7SUFpQkE3RjtJQUtBZ0Q7SUFLQTNFO0lBaUJBeEg7SUFLQTJGO0lBS0FsRDtJQUVBcEQ7SUFJQUg7SUFTQWlYO0lBR0FFO0lBRUFuWTtJQUtBa0k7SUFDQWdROztLQTlsQ0l6WTs7TUFDNkQ7V0FDekNDO09BQU0sV0FBc0IsV0E4VnBEQyxnQkE5VndCRDs7TUFNTTtPQUxEVTtPQUFKUjs7T0FLSyxPQUFBLFdBSTlCRyx5QkFUNkJLO01BQzNCLG1CQUR1QlI7S0FPcEI7WUFLSHlZLEtBQUtuWSxZQUNQLGVBRE9BLGlDQUNpRTs7S0FKeEVIOztNQU1GLDhCQUM4Qjs7O2FBQ0RMLGVBQU0sT0FML0IyWSxTQUt5QjNZOzthQUNFVSxlQUFKUjtTQUN2QixPQVBBeVk7O21CQU11QnpZO21CQUNJLFdBNmpDN0JxWSxzQkE3akM4Q3owQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7YUFFSEM7U0FDeEIsT0FUQWdZLFNBU3dCLFdBOGpDMUJGLGdCQS9qQzBCOVg7O2FBRURFLGlCQUFNLE9BVjdCOFgsU0FVb0QsV0Fxa0N0REgsV0Fya0N5QjNYOztLQUFtRDs7S0FFNUVDOztNQUNIO09BR01DO09BREFFO09BREFDO09BUTRCLE9BQUEsV0F3Uy9CQyxpQkE5U0dKO09BSXFCLE9BQUEsV0EwakN4QnlILGVBL2pDR3ZIO01BR0wsV0FDMkIsV0FNekJJLHNCQVhHSDtLQVNKOztLQUVDRzs7TUFDaUUsOEJBbUg5Qjs7O2FBbEhUckI7U0FDeEIsV0FBd0IsV0E2aUMxQk0sVUFGQW1ZLGdCQTVpQzBCelk7O2FBRUdFLGlCQUMzQixXQUEyQixXQTZoQzdCb0IsZUE5aEM2QnBCOztTQUkwQjtVQUZ0QnFCO1VBQUpiO1VBQUpDO1VBRThCLE9BQUEsV0FyQnZERyxpQkFtQmlDUztVQUVWLE9BQUEsNEJBMkh2QkMsb0JBN0g2QmQ7U0FDM0IsV0FDRyxXQXNoQ0xlLGVBeGhDeUJkOzthQUdJRTtTQUMzQixXQUEyQiw0QkFpSDdCMEIsV0FsSDZCMUI7O1NBT3ZCO1VBTCtCa0Q7VUFBSlo7VUFBSmhCO1VBQUpHO1VBS25CLE9BQUEsV0E3Qk54QixpQkF3QnFDaUQ7VUFJL0IsT0FBQSxXQW1JTkssY0F2SWlDakI7VUFHM0IsT0FBQSxXQTZoQ05vVixhQXhqQ0F6WCxpQkF3QjZCcUI7U0FDM0IsV0FDSSxXQXFnQ05DLGdCQXZnQ3lCRTs7U0FTbkI7VUFIeUJEO1VBQUpJOztxQkFJZDNlO2FBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BQUEsV0FwQzlCZ2QsaUJBbUNrQko7YUFDUixXQUFDLFdBMi9CWDBCLGdCQTUvQmNwQztZQUNtQztVQUgzQyxPQUFBLGtDQUh5QnFDO1NBQzdCLFdBQ0ksV0FoQ052QixpQkE4QjJCMkI7O1NBU29CO1VBRGhCRDtVQUFKRTtVQUNvQixPQUFBLDRCQWlHL0NILFdBbEcrQkM7U0FDN0IsV0FBeUIsV0F2QzNCMUIsaUJBc0MyQjRCOztTQUdrQjtVQURoQkM7VUFBSkM7VUFDb0IsT0FBQSw0QkErRjdDTCxXQWhHNkJJO1NBQzNCLFdBQXVCLFdBekN6QjdCLGlCQXdDeUI4Qjs7YUFFQ0U7U0FDeEIsV0FBd0IsNEJBM0MxQmhDLGlCQTBDMEJnQzs7U0FJTztVQUZFRDtVQUFKRztVQUVFLE9BQUEsV0EwZ0NqQ3VWLGFBeGpDQXpYLGlCQTRDbUMrQjtTQUNqQyxXQUNHLFdBK2dDTHZDLFVBRkFtWSxnQkEvZ0MrQnpWOztTQUlhO1VBRFhEO1VBQUpHO1VBQ2UsT0FBQSxXQXdnQzVDcVYsYUF4akNBelgsaUJBK0NpQ2lDO1NBQy9CLFlBQTJCLFdBeS9CN0I4QixZQTEvQjZCM0I7O1NBU3ZCO1VBUDBCRDtVQUFKSTtVQU90QixPQUFBLFdBZ2dDTmtWLGFBeGpDQXpYLGlCQWlEZ0NtQzs7cUJBR25CbmY7YUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0FBQSxXQXREdkNnZCxpQkFxRGtCSjthQUNSLFdBQUMsV0F1Z0NYSixVQUZBbVksZ0JBdGdDY3pZO1lBQzRDO1NBSnhELFlBQ0ksa0NBRnNCcUQ7O1NBU21CO1VBRGhCRDtVQUFKRTtVQUNvQixPQUFBLFdBbWdDL0NoRCxVQUZBbVksZ0JBbGdDK0JyVjtTQUM3QixZQUF5QixXQTFEM0J0QyxpQkF5RDJCd0M7O1NBSTBCO1VBRmZDO1VBQUpDO1VBQUpDO1VBRXVCLE9BQUEsV0E3RHJEM0MsaUJBMkRzQ3lDO1VBRWIsT0FBQSxXQWdnQ3pCakQsVUFGQW1ZLGdCQWhnQ2tDalY7U0FDaEMsWUFDRyxXQTdETDFDLGlCQTJEOEIyQzs7YUFHSkU7U0FDeEIsWUFBd0IsNEJBL0QxQjdDLGlCQThEMEI2Qzs7U0FJbUI7VUFGTEs7VUFBSk47VUFBSkc7VUFFYSxPQUFBLFdBcy9CN0MwVSxhQXhqQ0F6WCxpQkFnRXdDa0Q7VUFFZixPQUFBLFdBbEV6QmxELGlCQWdFb0M0QztTQUNsQyxZQUNHLFdBbEVMNUMsaUJBZ0VnQytDOztTQUlrQjtVQURoQkQ7VUFBSk07VUFDb0IsT0FBQSxXQXBFbERwRCxpQkFtRWtDOEM7U0FDaEMsWUFBNEIsV0FwRTlCOUMsaUJBbUU4Qm9EOztTQUdpQjtVQURoQkQ7VUFBSks7VUFDb0IsT0FBQSxXQXRFL0N4RCxpQkFxRStCbUQ7U0FDN0IsWUFBeUIsV0F0RTNCbkQsaUJBcUUyQndEOztTQVFyQjtVQU5tQ1I7VUFBSmdLO1VBQUp0SjtVQUFKSDtVQUFKSztVQU1uQixPQUFBLFdBN0VONUQsaUJBdUV5Q2dEO1VBS25DLE9BQUEsV0F1RE5LLHFCQTVEcUMySjtVQUkvQixPQUFBLFdBM0VOaE4saUJBdUVpQzBEO1VBRzNCLE9BQUEsV0ExRU4xRCxpQkF1RTZCdUQ7U0FDM0IsWUFDSSxXQXNGTkQsY0F4RnlCTTs7U0FRMkI7VUFEaEJEO1VBQUpHO1VBQ29CLE9BQUEsV0F5SXBETCxnQkExSW9DRTtTQUNsQyxZQUE4QixXQS9FaEMzRCxpQkE4RWdDOEQ7O1NBSXdCO1VBRnBCTTtVQUFKUDtVQUFKRztVQUU0QixPQUFBLFdBc0l4RFAsZ0JBeElvQ1c7VUFFWCxPQUFBLFdBcytCekJxVCxhQWgyQkFoVSxnQkF4SWdDSTtTQUM5QixZQUNHLFdBbEZMN0QsaUJBZ0Y0QmdFOztTQUlrQjtVQURoQkM7VUFBSkM7VUFDb0IsT0FBQSxXQXkrQjlDMUUsVUFwQkF1RSxZQXQ5QjhCRTtTQUM1QixZQUF3QixXQXBGMUJqRSxpQkFtRjBCa0U7O2FBRUZDO1NBQ3RCLFlBQXNCLFdBdStCeEIzRSxVQUZBbVksZ0JBdCtCd0J4VDs7U0FHZ0M7VUFEcEJFO1VBQUpDO1VBQ3dCLE9BQUEsV0F4RnhEdEUsaUJBdUZvQ3FFO1NBQ2xDLFlBQThCLFdBcStCaEM3RSxVQXBCQXVFLFlBbDlCZ0NPOzs7VUFFSEc7O3FCQUdqQnpoQjthQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVzQixPQUFBLFdBOUZsQ2dkLGlCQTZGaUJKO2FBQ1IsV0FBQyxXQSs5QlZKLFVBcEJBdUUsWUE1OEJhN0U7WUFDd0M7U0FKbkQsWUFDRSxrQ0FGeUJ1Rjs7U0FTdUI7VUFGYndQO1VBQUp6UDtVQUFKRztVQUVxQixPQUFBLFdBbEdwRDNFLGlCQWdHdUNpVTtVQUVSLE9BQUEsV0FxYi9CMVAsa0JBdmJtQ0M7U0FDakM7aUJBQ0csV0EyOUJMaEYsbUJBMzlCbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGTTJoQjs7OztTQUtLO1VBRkVFO1VBQUpEO1VBRUUsT0FBQSxXQXJHcEM1RSxpQkFtR3NDNkU7U0FDcEMsWUFDRyxXQTZ5QkxILDRCQS95QmtDRTs7YUFHUEU7U0FDekIsWUFBeUIsV0F2RzNCOUUsaUJBc0cyQjhFOzthQUVGQztTQUFNLFlBQXVCLFdBeEd0RC9FLGlCQXdHeUIrRTs7U0FFcUI7VUFEaEJFO1VBQUpDO1VBQ29CLE9BQUEsV0E4OEI5Q3VTLGFBaDJCQWhVLGdCQS9HOEJ3QjtTQUM1QixZQUF3QixXQTFHMUJqRixpQkF5RzBCa0Y7O2FBRUNDO1NBQ3pCLFlBQXlCLFdBaVczQkgsc0JBbFcyQkc7O1NBRzRCO1VBRHRCQztVQUFKQztVQUMwQixPQUFBLFdBOUd2RHJGLGlCQTZHaUNvRjtTQUMvQjtpQkFBMkIsV0ErOEI3QjVGLG1CQS84QjJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHBCcWlCOzs7YUFFSkU7U0FBTSxZQUF1QixXQXdhdERoQixrQkF4YXlCZ0I7O1NBZW5CO1VBZDRCdVM7VUFBSjVEO1VBQUp6TztVQWNwQixPQUFBLFdBOUhOekYsaUJBZ0hrQzhYO2lCQUFKNUQ7VUFVUSxPQUFBLFdBNHRCdEMzSixvQkF0dUIwQjlFO2lCQUFJeU87U0FDNUI7Ozt1QkFLb0MsV0F1OEJ0QzFVLFVBRkFtWSxnQkEzOEI4QnpEOzs7Ozs7OzthQWVBRixrQkFDNUIsWUFBNEIsV0Fvb0I5QnRPLGdCQXJvQjhCc087O0tBRWtDOztLQUVoRTNRLHFDQUM2RCxxQkFFbkI7O0tBRTFDNUI7O01BQ0g7T0FBc0RuRTtPQUF6QkM7T0FBdkJDO09BSW1CLE9BQUEsV0E3SXRCd0MsaUJBeUltRDFDO09BRzNCLE9BQUEsV0E0NkJ4Qm1hLGFBeGpDQXpYLGlCQXlJMEJ6QztNQUM1QixXQUN3QixXQW9CdEIrRixjQXRCRzlGO0tBS0o7O0tBRUNrRDs7TUFFSDtPQUlNNEY7T0FEQUM7T0FEQUU7T0FEQUM7T0FTb0IsT0FBQSxXQXM2QnZCZ0IsZUE1NkJHcEI7T0FLMkIsT0FBQSxXQXVKOUJqRyxpQkE3SkdrRztPQUtxQixPQUFBLFdBMUp4QnZHLGlCQW9KR3lHO01BSUwsV0FDeUIsV0FNdkJuRCxjQVpHb0Q7S0FVSjs7S0FFQ3BEOztNQUNIO09BR01zRDtPQURBRTtPQURBQztPQVE0QixPQUFBLFdBeUkvQjFHLGlCQS9JR3VHO09BSXFCLE9BQUEsV0EyNUJ4QmMsZUFoNkJHWjtNQUdMLFdBQzJCLFdBTXpCRSxtQkFYR0Q7S0FTSjs7S0FFQ0M7O01BQ0UsOEJBQ3lCOzs7YUFDSDlIO1NBQ3RCLFdBQXNCLFdBNjRCeEJNLG1CQTc0QnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCa2M7O1NBR29CO1VBRGJVO1VBQUpSO1VBQ2lCLE9BQUEsV0EyNEI1Q0ksbUJBMzRCMER4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakM0YztTQUM3QixXQUF5QixXQW5CM0IwRCxjQWtCMkJsRTs7YUFFRVMsaUJBQzNCLFdBQTJCLFdBMjNCN0JXLGVBNTNCNkJYOztTQUdtQjtVQURkd0I7VUFBSnRCO1VBQ2tCLE9BQUEsV0F5M0JoRFMsZUExM0JrQ2E7U0FDaEMsV0FBNEIsV0F5M0I5QmIsZUExM0I4QlQ7O2FBRUp5QjtTQUN4QixXQUF3Qiw0QkF6QjFCOEIsY0F3QjBCOUI7O1NBSU87VUFGRUQ7VUFBSkk7VUFFRSxPQUFBLFdBNjNCakM4VixhQXo1QkFuVSxjQTBCbUMvQjtTQUNqQyxXQUNHLFdBazRCTC9CLFVBRkFtWSxnQkFsNEIrQmhXOztTQUlhO1VBRFhEO1VBQUpFO1VBQ2UsT0FBQSxXQTIzQjVDNlYsYUF6NUJBblUsY0E2QmlDNUI7U0FDL0IsV0FBMkIsV0E0MkI3QnFDLFlBNzJCNkJuQzs7U0FTdkI7VUFQMEJDO1VBQUpDO1VBT3RCLE9BQUEsV0ErMUJObUYsa0JBdDJCZ0NwRjs7cUJBR25CN2U7YUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0FBQSxXQXBDdkNzZ0IsY0FtQ2tCMUQ7YUFDUixXQUFDLFdBMDNCWEosVUFGQW1ZLGdCQXozQmN6WTtZQUN5QztTQUpyRCxXQUNJLGtDQUZzQjRDOzthQVFGRTtTQUN4QixXQUF3Qiw0QkF4QzFCc0IsY0F1QzBCdEI7O1NBR2U7VUFEYkQ7VUFBSkc7VUFDaUIsT0FBQSxXQTFDekNvQixjQXlDNEJ2QjtTQUMxQixXQUFzQixXQTFDeEJ1QixjQXlDd0JwQjs7U0FHeUI7VUFEYkQ7VUFBSkc7VUFDaUIsT0FBQSxXQWFqRHFCLGdCQWRvQ3hCO1NBQ2xDLFlBQThCLFdBNUNoQ3FCLGNBMkNnQ2xCOzthQUVQRztTQUN2QixZQUF1QixXQWczQnpCL0MsVUFGQW1ZLGdCQS8yQnlCcFY7O2FBRUFDLGtCQUFNLFlBQXVCLFdBL0N0RGMsY0ErQ3lCZDs7YUFDRUc7U0FDekIsWUFBeUIsV0E2MkIzQm5ELG1CQTcyQjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCMmY7O2FBRUdFLGtCQUM1QixZQUE0QixXQW5EOUJTLGNBa0Q4QlQ7O2FBRUFFLGtCQUM1QixZQUE0QixXQWdqQjlCMkMsZ0JBampCOEIzQzs7U0FHd0I7VUFEeEJaO1VBQUppQjtVQUM0QixPQUFBLFdBdkR0REUsY0FzRDhCbkI7U0FDNUIsWUFBd0IsV0F1MkIxQjNDLFVBRkFtWSxnQkF0MkIwQnZVOztLQUM0Qzs7S0FFdEVLOztNQUNIO09BR000RDtPQURBRTtPQURBQztPQVE0QixPQUFBLFdBZ0YvQm5ILGlCQXRGR2dIO09BSXFCLE9BQUEsV0FrMkJ4QkssZUF2MkJHSDtNQUdMLFdBQzJCLFdBTXpCRSxxQkFYR0Q7S0FTSjs7S0FFQ0M7O01BQytELDhCQUNwQzs7O2FBQ0h2SSxlQUFNLFdBQU5BOztTQUdtQjtVQUZSdUI7VUFBSmI7VUFBSlI7VUFFZ0IsT0FBQSxXQW5CM0NxRSxnQkFpQm1DaEQ7VUFFWCxPQUFBLFdBbkJ4QmdELGdCQWlCK0I3RDtTQUM3QixXQUNHLFdBb3pCTDBCLGdCQXR6QjJCbEM7O2FBR0RTO1NBQ3hCLFdBQXdCLDRCQXJCMUI0RCxnQkFvQjBCNUQ7O1NBSU87VUFGRHdCO1VBQUp0QjtVQUVLLE9BQUEsNEJBeEJqQzBELGdCQXNCZ0NwQztTQUM5QixXQUNHLFdBNjBCTDdCLFVBRkFtWSxnQkE3MEI0QjVYOztTQUtRO1VBRkp3QjtVQUFKQztVQUVRLE9BQUEsV0FpekJwQ3lGLGtCQW56QmdDMUY7U0FDOUI7aUJBQ0csNEJBK0NMb0csbUJBakQ0Qm5HOzs7U0FLSztVQUZGRTtVQUFKQztVQUVNLE9BQUEsNEJBOUJqQzhCLGdCQTRCK0IvQjtTQUM3QixXQUNHLFdBdTBCTGxDLFVBRkFtWSxnQkF2MEIyQmhXOzthQUdJRSxpQkFBSkQ7U0FDekIsV0FBeUIsV0FoQzNCNkIsZ0JBK0IyQjdCLE9BQUlDOztTQU16QjtVQUorQlE7VUFBSk47VUFBSkQ7VUFJdkI7WUFBQTtjQTJ6Qk4yVjt1QkEzekJ1QnowQixHQUFLLE9BQUEsNEJBNHlCNUIrZ0IsWUE1eUJ1Qi9nQixHQUEwQjtjQUpacWY7VUFHL0IsT0FBQSxXQXd5Qk40RSxrQkEzeUJpQ2xGO1NBQy9CO2lCQUNJLDRCQXNCTjZGLGdCQXhCNkI5Rjs7OztTQU93QjtVQUZ2Qkc7VUFBSkQ7VUFFMkIsT0FBQSxXQXhDckR5QixnQkFzQzhCeEI7O3FCQUVYamY7YUFBSyxPQUFBLFdBNnpCeEJ3YyxtQkE3ekJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkE7WUFBNEI7U0FEN0MsV0FDRyxrQ0FGcUJnZjs7YUFHRUUsaUJBQzFCLFdBQTBCLFdBSTVCMkYsbUJBTDRCM0Y7O2FBRUVFLGlCQUM1QixZQUE0QixXQWdnQjlCc0QsZ0JBamdCOEJ0RDs7S0FDbUI7O0tBRWpEeUY7Y0FFQzdrQjtNQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztvQkFJTUE7T0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0FBQSxXQXREakN5Z0IsZ0JBcURZN0Q7T0FDUixXQUFDLFdBK3lCTEosVUFGQW1ZLGdCQTl5QlF6WTtNQUMyQztNQUhuRCxXQUFBLGtDQUZNVTtNQUNSLFdBQUUsV0FtekJBSixVQUZBbVksZ0JBbHpCRXpZO0tBTUk7O0tBRU4wSTs7TUFDRjtPQU9vQztRQU5EM0U7UUFBSnhDO1FBQUpiO1FBQUpWO1FBTWEsT0FBQSxXQXlCbENtQixpQkEvQnlCVDtlQUFKVjtRQUkwQixPQUFBLDRCQS9EL0N1RSxnQkEyRGlDUjtRQUlBLE9BQUEsV0E0eUJqQ3lVLFdBaHpCNkJqWDtPQUMzQjttQkFHTyxXQXN5QlRqQixVQXBCQXVFLFlBdHhCcUI3RTs7OztVQVFHRSx3QkFBQUE7TUFDdEIsZUFDZ0QsV0FyRWxEcUUsZ0JBbUV3QnJFO0tBS3JCOztLQUVIdUk7O01BQ0U7T0FNZ0M7UUFMTGxIO1FBQUpiO1FBQUpWO1FBS2EsT0FBQSxXQVNsQ21CLGlCQWR5QlQ7ZUFBSlY7UUFHNEIsT0FBQSxXQS9FakR1RSxnQkE0RTZCaEQ7T0FDM0IsZUFFdUIsV0FzeEJ6QmpCLFVBcEJBdUUsWUFyd0JxQjdFOztVQU9HRSx3QkFBQUE7TUFDdEIsZUFDZ0QsV0FyRmxEcUUsZ0JBbUZ3QnJFO0tBS3JCOztLQUVIaUI7Y0FDQ3JkLEdBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQixHQUE4Qjs7S0FFL0JvbEI7Y0FDQ3BsQjtNQUNIO09BQVE0YyxLQURMNWM7T0FDQ2tjLEtBRERsYztPQUVILE9BRElrYztPQUcwQixPQUFBLFdBSTVCc0osY0FQTTVJO01BQ1IsV0FDMkIsV0Fvd0J6QkosbUJBcHdCdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FGM0NrYztLQUtIOztLQUVDc0o7O01BQWdFOzthQUM1Q3RKLGVBQU0sV0FBa0IsV0FNNUNDLGdCQU5vQkQ7O2FBQ0FFLGlCQUFNLFdBQWtCLFdBdVM1Q3FKLGdCQXZTb0JySjs7YUFDQVMsaUJBQU0sV0FBa0IsV0F6RzVDNEQsZ0JBeUdvQjVEOztTQUVrQjtVQURiRDtVQUFKRztVQUNpQixPQUFBLFdBcXZCdEMwWCxhQXhqQ0F6WCxpQkFrVXlCSjtTQUN2QixXQUFtQixXQXBLckIwRCxjQW1LcUJ2RDs7S0FDZ0Q7O0tBRXJFWjtjQUNDbmMsR0FBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCLEdBQW1DOztLQUVwQzBsQjs7TUFFSDtPQUFnQ0M7T0FBMUJDO09BR3FCLE9BQUEsV0FxdkJ4QmxCLGVBeHZCNkJpQjtNQUMvQixXQUMyQixXQUl6QkUsMEJBTkdEO0tBSUo7O0tBRUNDOztNQUVGOztTQUVnRDtVQURoQmpKO1VBQUpWO1VBQ29CLE9BQUEsV0FsQzlDbUIsaUJBaUM4QlQ7U0FDNUIsV0FBd0IsV0FwVjFCSSxpQkFtVjBCZDs7U0FHbUI7VUFEZG1DO1VBQUpqQztVQUNrQixPQUFBLDRCQXRNN0NzQixvQkFxTStCVztTQUM3QixXQUF5QixXQXF0QjNCVixlQXR0QjJCdkI7O2FBRUdTO1NBQzVCLFdBQTRCLFdBc3JCOUJpSix3QkF2ckI4QmpKOztTQUlQO1VBRk8wQjtVQUFKeEI7VUFFSCxPQUFBLDRCQStrQnZCZ0osdUJBamxCOEJ4SDtTQUM1QixXQUNHLFdBZ3RCTFosZUFsdEIwQlo7O2FBR0N5QjtTQUN6QixXQUF5QixXQTZoQjNCd0gscUJBOWhCMkJ4SDs7U0FHekI7VUFENEJHO1VBQzVCLE9BRDRCQTs7O2FBR3hCOzs7O2NBR1M7YUFESDtZQUNRO1VBSmhCLFFBQUE7VUFEUW9XO1VBQU5DO1VBUUFwVyxXQVR3QkQsU0FBQUEsU0FBQUEsU0FDbEJvVztVQWEyQixPQUFBLFdBMUR2QzFYLGlCQTZDTTJYO2lCQVFBcFc7U0FDSjtxQkFFc0MsV0F3aUJ4QzhDLDRCQTNpQk05Qzs7YUFPcUJFO1NBQ3pCLFdBQXlCLFdBeUozQm9ILHFCQTFKMkJwSDs7YUFFR0U7U0FDNUIsV0FBNEIsNEJBdUo5QmtILHFCQXhKOEJsSDs7YUFFRkU7U0FDMUIsV0FBMEIsV0F3ZTVCaUgsOEJBemU0QmpIOztTQW9CVTs7VUFibEMyTDtVQURBQztVQURBQztVQURBa0s7VUFnQmtDLE9BQUEsV0FwRnRDNVgsaUJBdUVJd047VUFZMkIsT0FBQSxXQTZyQi9CbkcsZUExc0JJb0c7VUFZZ0MsT0FBQSxXQWtkcEN2RCxvQkEvZEl3RDtTQUlGOzs7dUJBS2tDLFdBNnJCcEN2TyxVQUZBbVksZ0JBcnNCSU07bUJBRUFuSzs7Ozs7O2FBZ0JzQjFMO1NBQ3hCO2lCQUF3Qiw0QkFjMUJnSCx3QkFmMEJoSDs7YUFFS0c7U0FDN0I7aUJBQTZCO29DQXFSL0I4Ryw2QkF0UitCOUc7O2FBRUhDO1NBQzFCLFlBQTBCLFdBTTVCOEcsMEJBUDRCOUc7O2FBRUVHLGtCQUM1QixZQUE0QixXQTFGOUJ5RixnQkF5RjhCekY7O1NBR29CO1VBRGZqQjtVQUFKbUI7VUFDbUIsT0FBQSxXQS9GbER4QyxpQkE4Rm1DcUI7U0FDakMsWUFBNkIsV0FtWC9CZ0UsZ0JBcFgrQjdDOztLQUNzQzs7S0FFckV5RztjQUVDdG1CLEdBQUssT0FBQSxXQWlhTnVtQixvQkEvUkFoRixrQkFsSUN2aEIsR0FBMEM7O0tBRTNDb21CO2NBRUNwbUIsR0FBSyxPQUFBLFdBd1hOd21CLGtCQXRYQUMsaUJBRkN6bUIsR0FBdUM7O0tBRXhDeW1COztNQUNIO09BR01DO09BREFDO09BREFDO09BTzJCLE9BQUEsV0FsSDlCdkosaUJBNkdHcUo7T0FJb0IsT0FBQSxXQStwQnZCaEMsZUFwcUJHaUM7TUFHTCxXQUMwQixXQUt4QkUsc0JBVkdEO0tBUUo7O0tBRUNDOztNQUNpRTs7U0FHaEM7VUFGRmpLO1VBQUpWO1VBRU0sT0FBQSw0QkFuTmpDdUUsZ0JBaU4rQjdEO1NBQzdCLFdBQ0csV0FrcEJMSixVQUZBbVksZ0JBbHBCMkJ6WTs7YUFHRUU7U0FDM0IsV0FBMkIsV0FnQzdCNEYsc0JBakM2QjVGOztTQU92QjtVQUw4QjZEO1VBQUp4QztVQUFKWTtVQUFKeEI7VUFLbEIsT0FBQSxXQXhCTjRKLGlCQW1Cb0N4RztVQUk5QixPQUFBLFdBblJOSyxjQStRZ0M3QztVQUcxQixPQUFBLFdBdW9CTmdYLGFBeGpDQXpYLGlCQThhNEJxQjtTQUMxQixXQUNJLFdBK21CTkMsZ0JBam5Cd0J6Qjs7U0FTbEI7VUFId0IwQjtVQUFKeEI7O3FCQUliL2M7YUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0FBQSxXQTFiOUJnZCxpQkF5YmtCSjthQUNSLFdBQUMsV0FxbUJYMEIsZ0JBdG1CY3BDO1lBQ21DO1VBSDNDLE9BQUEsa0NBSHdCcUM7U0FDNUIsV0FDSSxXQTNCTmtJLGlCQXlCMEIxSjs7U0FVNkI7VUFGdkJzQztVQUFKWDtVQUFKRjtVQUUrQixPQUFBLFdBbkN2RGlJLGlCQWlDZ0NwSDtVQUVULE9BQUEsNEJBOVN2QjNCLG9CQTRTNEJnQjtTQUMxQixXQUNHLFdBNm1CTGYsZUEvbUJ3QmE7O1NBSTJCO1VBRGhCSztVQUFKRjtVQUNvQixPQUFBLFdBeU9uRG1JLGlCQTFPbUNqSTtTQUNqQyxXQUE2QixXQXJDL0I0SCxpQkFvQytCOUg7O2FBRUZDLGlCQUMzQixXQUEyQixXQWtVN0I4RCxnQkFuVTZCOUQ7O1NBVXZCO1VBUjJCYTtVQUFKVjtVQUFKRDtVQVFuQixPQUFBLFdBaEROMkgsaUJBd0NpQ2hIO2lCQUFKVjtVQUlTLE9BQUEsV0ErWXRDd0ksb0JBblp5QnpJO1NBQ3ZCOztrQkFFZ0MsV0F1bkJsQ3RDLFVBRkFtWSxnQkF4bkI2QjVWOzs7Ozs7S0FRSDs7S0FFMUJpRDs7TUFFSCxJQUFpQ2dGLHlCQUEzQkM7b0JBR0tqaUIsR0FBaUNyQixHQUNyQyx3QkFESXFCLFlBQWlDckIsWUFDNEI7TUFGckU7T0FERXVyQixTQUNGLGtDQUY4QmxJO09BU0YsT0FBQSw0QkFHNUJFLGtCQVhFZ0k7TUFNSixXQUM0QixXQXhUMUI1TyxjQWdURzJHO0tBVUo7O0tBRUNDOztNQUNIO09BR01DO09BREFDO09BREFDO09BTzJCLE9BQUEsV0FsTDlCaEssaUJBNktHOEo7T0FJb0IsT0FBQSxXQStsQnZCekMsZUFwbUJHMEM7TUFHTCxXQUMwQixXQUt4QkUsdUJBVkdEO0tBUUo7O0tBRUNDOztNQUNtRTs7U0FLN0Q7VUFKOEI3SjtVQUFKYjtVQUFKVjtVQUl0QjtZQUFBO2NBMmtCTnVZO3VCQTNrQnVCejBCO2VBQUssT0FBQSxXQWdsQjVCd2MsbUJBaGxCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBO2NBQTRCO2NBSmZ5ZDtVQUc5QixPQUFBLFdBakZOZ0osaUJBOEVnQzdKO1NBQzlCLFdBQ0ksV0EyV04ySyxvQkE3VzRCckw7O1NBTTFCO1VBRHFCRTtVQUVOaUQsT0FGTWpEO1VBRVZpQyxPQUZVakM7VUFFZFMsT0FGY1Q7VUFHNkIsT0FBQSxXQWdCcERvTCx1QkFqQmlCbkk7VUFDYSxPQUFBLFdBbWhCOUJvSSxtQkFwaEJhcEo7U0FEWCxlQUVJLFdBNGtCTjdCLFVBcEJBdUUsWUF6akJTbEU7O1NBR1A7VUFEd0JFO1VBRVQwQyxPQUZTMUM7VUFFYndCLE9BRmF4QjtVQUVqQnlCLE9BRmlCekI7VUFHMEIsT0FBQSxXQVlwRHlLLHVCQWJpQi9IO1VBQ2EsT0FBQSxXQXNkOUJpSSxtQkF2ZGFuSjtTQURYLGVBRUksV0F3a0JOL0IsVUFwQkF1RSxZQXJqQlN2Qzs7U0FHUDtVQUQ0Qkc7VUFFakJELE9BRmlCQztVQUVyQkMsT0FGcUJEO1VBR0wsT0FBQSxXQWpTekI4QixnQkFnU2EvQjtTQURYLGVBRUksV0FqU04rQixnQkFnU1M3Qjs7YUFFc0JFLGlCQUM3QixXQUE2QixXQTNmL0I5QixpQkEwZitCOEI7O2FBRUZFLGlCQUMzQixXQUEyQixXQXhNN0JvRyxnQkF1TTZCcEc7O2FBRUFFLGlCQUMzQixXQUEyQixXQXFRN0J3RCxnQkF0UTZCeEQ7O0tBQ21COztLQUVoRHNJOztNQUNtRTtXQUN4Q3RMO09BQ3pCLFdBQXlCLFdBNVMzQnVFLGdCQTJTMkJ2RTs7TUFHeUI7T0FEbkJVO09BQUpSO09BQ3VCLE9BQUEsV0F0Z0JwRFksaUJBcWdCaUNKO01BQy9CLFdBQTJCLFdBZ1Y3QjJLLG9CQWpWNkJuTDtLQUMwQzs7S0FFdkU4Sjs7TUFFSDtPQUlNMEI7T0FEQUM7T0FEQUM7T0FEQUM7T0FTb0IsT0FBQSxXQThpQnZCckQsZUFwakJHa0Q7T0FLMkIsT0FBQSxXQWpPOUJ2SyxpQkEyTkd3SztPQUtxQixPQUFBLFdBS3hCdEcsa0JBWEd1RztNQUlMO2NBQzBCLFdBNGlCeEJ0TCxtQkE1aUJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU56QytuQjs7OztLQVVKOztLQUVDeEc7O01BQ0g7T0FHTXlHO09BREFDO09BREFDO09BTzRCLE9BQUEsV0E5Ty9CN0ssaUJBeU9HMks7T0FJcUIsT0FBQSxXQW1pQnhCdEQsZUF4aUJHdUQ7TUFHTCxXQUMyQixXQUt6QkUsdUJBVkdEO0tBUUo7O0tBRUNDOztNQUNtRTs7YUFDekNqTTtTQUN4QixXQUF3QixXQXVoQjFCTSxVQUZBbVksZ0JBdGhCMEJ6WTs7YUFFSUUsaUJBQzVCLFdBQTRCLFdBbk85QkQsZ0JBa084QkM7O1NBTXhCO1VBSitCcUI7VUFBSmI7VUFBSkM7VUFJdkIsT0FBQSxXQXRCTjBFLGtCQWtCcUM5RDtVQUcvQixPQUFBLFdBNGdCTmdYLGFBamdCQXBNLGtCQWRpQ3pMO1NBQy9CO2lCQUNJLFdBa2hCTkosbUJBbGhCb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGRzZjOzs7O1NBTW1CO1VBRGpCd0I7VUFBSnRCO1VBQ3FCLE9BQUEsV0F4QmhEd0Usa0JBdUIrQmxEO1NBQzdCLFdBQXlCLFdBeEIzQmtELGtCQXVCMkJ4RTs7U0FHMEI7VUFEakJ3QjtVQUFKQztVQUNxQixPQUFBLFdBTXJENkosa0JBUG9DOUo7U0FDbEMsV0FBOEIsV0ExQmhDZ0Qsa0JBeUJnQy9DOzthQUVMRyxpQkFDekIsV0FBeUIsV0FuakIzQjNCLGlCQWtqQjJCMkI7O2FBRUdDLGlCQUM1QixXQUE0QixXQStNOUI4RCxnQkFoTjhCOUQ7O0tBQ21COztLQUVqRHlKOztNQUNIO09BR01DO09BREFDO09BREFDO09BTzRCLE9BQUEsV0E5US9CbkwsaUJBeVFHaUw7T0FJcUIsT0FBQSxXQW1nQnhCNUQsZUF4Z0JHNkQ7TUFHTCxXQUMyQixXQUt6QkUsdUJBVkdEO0tBUUo7O0tBRUNDOztNQUNtRTs7YUFDekN2TTtTQUN4QixXQUF3QixXQXVmMUJNLFVBRkFtWSxnQkF0ZjBCelk7O2FBRUlFLGlCQUM1QixXQUE0QixXQStCOUJxSixnQkFoQzhCcko7O1NBTXhCO1VBSitCcUI7VUFBSmI7VUFBSkM7VUFJdkIsT0FBQSxXQXRCTndMLGtCQWtCcUM1SztVQUcvQixPQUFBLFdBNGVOZ1gsYUFqZ0JBcE0sa0JBa0JpQ3pMO1NBQy9CO2lCQUNJLFdBa2ZOSixtQkFsZm9CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7OztTQU9IO1VBRkl3QjtVQUFKdEI7VUFFQSxPQUFBLDRCQVExQjJMLHNCQVY4QnJLO1NBQzVCLFdBQ0csV0F6QkxnSyxrQkF1QjBCdEw7O2FBR0N5QixpQkFDekIsV0FBeUIsV0EzRDNCK0Msa0JBMEQyQi9DOzthQUVHRyxpQkFDNUIsV0FBNEIsV0FnTDlCK0QsZ0JBakw4Qi9EOzthQUVKQztTQUN4QixXQUF3QixXQXVlMUJwQyxVQUZBbVksZ0JBdGUwQi9WOztLQUM0Qjs7S0FFdEQ4Sjs7TUFDaUU7O1NBR2hDO1VBRkY5TDtVQUFKVjtVQUVNLE9BQUEsV0E4VWpDNkosdUJBaFYrQm5KO1NBQzdCLFdBQ0csV0FpZUxKLFVBRkFtWSxnQkFqZTJCelk7O1NBS007VUFGQW1DO1VBQUpqQztVQUVJLE9BQUEsV0E4ZGpDSSxVQUZBbVksZ0JBOWRpQ3RXO1NBQy9CLFdBQ0csV0E4ZEw3QixVQUZBbVksZ0JBOWQ2QnZZOztTQUtJO1VBRkdtQztVQUFKMUI7VUFFQyxPQUFBLFdBd1VqQ2tKLHVCQTFVb0N4SDtTQUNsQyxXQUNHLFdBMmRML0IsVUFGQW1ZLGdCQTNkZ0M5WDs7U0FLQztVQUZFNkI7VUFBSjNCO1VBRUUsT0FBQSxXQXdkakNQLFVBRkFtWSxnQkF4ZG1Dalc7U0FDakMsV0FDRyxXQXdkTGxDLFVBRkFtWSxnQkF4ZCtCNVg7O0tBRTZCOztLQUU1RDBJO2NBQ0N6bEIsR0FBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CLEdBQW1DOztLQUVwQzJvQjs7TUFFSDtPQUFnQ0M7T0FBMUJDO09BR3FCLE9BQUEsV0FtZHhCbkUsZUF0ZDZCa0U7TUFDL0IsV0FDMkIsV0FJekJFLDBCQU5HRDtLQUlKOztLQUVDQzs7TUFFRjs7YUFDNEI1TTtTQUN4QixXQUF3QixXQXdaMUI0Six3QkF6WjBCNUo7O1NBSUg7VUFGT1U7VUFBSlI7VUFFSCxPQUFBLDRCQWlUdkIySix1QkFuVDhCbko7U0FDNUIsV0FDRyxXQWtiTGUsZUFwYjBCdkI7O2FBR0NTO1NBQ3pCLFdBQXlCLFdBK1AzQm1KLHFCQWhRMkJuSjs7U0FHekI7VUFENEJFO1VBQzVCLE9BRDRCQTs7O2FBR3hCOzs7O2NBR1M7YUFESDtZQUNRO1VBSmhCLFFBQUE7VUFEUWdZO1VBQU5DO1VBUUF4VyxXQVR3QnpCLFNBQUFBLFNBQUFBLFNBQ2xCZ1k7VUFjMkIsT0FBQSxXQXpWdkMxWCxpQkEyVU0yWDtpQkFRQXhXO1NBRUo7cUJBRXNDLFdBeVF4Q2tELDRCQTdRTWxEOzthQVFxQkc7U0FDekIsV0FBeUIsV0E2TjNCb0sseUJBOU4yQnBLOzthQUVHQztTQUM1QjtpQkFBNEIsNEJBMk45Qm1LLHlCQTVOOEJuSzs7YUFFRkU7U0FDMUIsV0FBMEIsV0F5TTVCcUgsOEJBMU00QnJIOzthQUVIRTtTQUN2QixXQUF1QixXQW1MekIrSCx1QkFwTHlCL0g7O2FBRUdFO1NBQzFCLFlBQTBCLFdBNEo1QitKLDBCQTdKNEIvSjs7YUFFRkU7U0FDeEI7aUJBQXdCLDRCQWExQjhKLHdCQWQwQjlKOzthQUVLRztTQUM3QjtpQkFBNkI7b0NBTS9COEcsNkJBUCtCOUc7O2FBRURDLGtCQUM1QixZQUE0QixXQXZXOUI0RixnQkFzVzhCNUY7O1NBR29CO1VBRGZuQjtVQUFKc0I7VUFDbUIsT0FBQSxXQTVXbER0QyxpQkEyV21DZ0I7U0FDakMsWUFBNkIsV0FzRy9CcUUsZ0JBdkcrQi9DOztLQUNzQzs7S0FFckUwRztjQUdDcm1CLEdBQUssT0FBQSxXQThHTndtQixrQkF4R0FNLGlCQU5DOW1CLEdBQXVDOztLQUV4Q2twQjtjQUVDbHBCLEdBQUssT0FBQSxXQTBHTndtQixrQkF4R0FNLGlCQUZDOW1CLEdBQXVDOztLQUV4QzhtQjs7TUFDSDtPQUdNcUM7T0FEQUM7T0FEQUM7T0FPNEIsT0FBQSxXQWhZL0JoTSxpQkEyWEc4TDtPQUlxQixPQUFBLFdBaVp4QnpFLGVBdFpHMEU7TUFHTCxXQUMyQixXQUt6QkUsc0JBVkdEO0tBUUo7O0tBRUNDOztNQUNpRTs7U0FHaEM7VUFGRDFNO1VBQUpWO1VBRUssT0FBQSw0QkFqZWpDdUUsZ0JBK2RnQzdEO1NBQzlCLFdBQ0csV0FvWUxKLFVBRkFtWSxnQkFwWTRCelk7O2FBR0VFO1NBQzVCLFdBQTRCLFdBZ0I5Qm1OLHNCQWpCOEJuTjs7U0FJYTtVQUZScUI7VUFBSlk7VUFBSnhCO1VBRWdCLE9BQUEsV0FyQjNDaUssaUJBbUJtQ3JKO1VBRVgsT0FBQSxXQXRleEJnRCxnQkFvZStCcEM7U0FDN0IsV0FDRyxXQWlXTEMsZ0JBblcyQnpCOzthQUdHRSxpQkFDNUIsV0FBNEIsV0FvRTlCMkYsZ0JBckU4QjNGOztTQVV4QjtVQVI0QnNDO1VBQUpkO1VBQUpDO1VBUXBCLE9BQUEsV0FoQ05zSSxpQkF3QmtDekg7aUJBQUpkO1VBSVEsT0FBQSxXQWlKdENnSixvQkFySjBCL0k7U0FDeEI7O2tCQUVnQyxXQXlYbENoQyxVQUZBbVksZ0JBMVg4QnBXOzs7Ozs7S0FRSjs7S0FFMUJnTDs7TUFFSCxJQUFpQ0MseUJBQTNCQztvQkFHS3prQixHQUNBckIsR0FDSix3QkFGSXFCLFlBQ0FyQixZQUMrRDtNQUh2RTtPQURFdXJCLFNBQ0Ysa0NBRjhCMUY7T0FXRixPQUFBLDRCQUc1QkUsdUJBYkV3RjtNQVFKLFdBQzRCLFdBL2YxQnpPLGdCQXFmR2dKO0tBWUo7O0tBRUNDOztNQUVIO09BR01DO09BREFDO09BREFDO09BTzRCLE9BQUEsV0FuYi9CeE0saUJBOGFHc007T0FJcUIsT0FBQSxXQThWeEJqRixlQW5XR2tGO01BR0w7Y0FDMkIsV0FLekJFLDRCQVZHRDs7O0tBUUo7O0tBRUNDOztNQUVGOzthQUM4QjVOLGVBQzFCLFdBQTBCLFdBbkU1QjRLLGlCQWtFNEI1Szs7U0FHMUI7VUFEc0JFO1VBRUg2RCxLQUZHN0Q7VUFFUHFCLEtBRk9yQjtVQUVYUSxLQUZXUjtVQUVmUyxPQUZlVDtVQU1qQixPQUFBLFdBM2hCUHFFLGdCQXVoQnFCUjtVQUdkLE9BQUEsV0EyRFA4SixtQkE5RGlCdE07VUFFVixPQUFBLFdBbVJQZ0ssbUJBclJhN0s7U0FEWDtxQkFFSyxXQTZVUEosVUFwQkF1RSxZQTFUU2xFOztTQU1QO1VBRHlCRTtVQUVOaU4sT0FGTWpOO1VBRVZzQyxPQUZVdEM7VUFFZHNCLE9BRmN0QjtVQUVsQnlCLE9BRmtCekI7VUFNcEIsT0FBQSxXQWxpQlAwRCxnQkE4aEJxQnVKO1VBR2QsT0FBQSxXQW9EUEQsbUJBdkRpQjFLO1VBRVYsT0FBQSxXQW1OUHFJLG1CQXJOYXJKO1NBRFg7cUJBRUssV0FzVVA3QixVQXBCQXVFLFlBblRTdkM7O1NBTVA7VUFENkJHO1VBRWxCSixPQUZrQkk7VUFFdEJDLE9BRnNCRDtVQUdOLE9BQUEsV0F0aUJ6QjhCLGdCQXFpQmFsQztTQURYLGVBRUksV0F0aUJOa0MsZ0JBcWlCUzdCOzthQUVxQkUsaUJBQzVCLFdBQTRCLFdBM2M5QnNHLGdCQTBjOEJ0Rzs7YUFFQUUsaUJBQzVCLFdBQTRCLFdBRTlCMEQsZ0JBSDhCMUQ7O0tBQ21COztLQUVqRDBEO2NBQ0MxaUI7TUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFSCxPQURJa2M7Ozs7OzJEQUNBbUMsT0FESXpCO2dCQUFBQTttQkFBQUE7Ozs7Y0FLaUIzSSxlQUFYMGEsY0FKVnRRLGVBSVVzUSxJQUFXMWE7Ozs7O1dBSnJCb0ssT0FESXpCOztNQVNtQixXQUFBLFdBamR6QjRJLGNBeWNFbkg7TUFRSixXQUFDLFdBOFNDN0IsbUJBOVNheGMsR0FBSyxPQUFMQSxFQUFNLEdBVGpCa2M7S0FTdUM7O0tBRXpDc0s7Y0FLQ3lEO01BQUo7T0FPTUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FrQjJCLE1BQUEsV0F4ZjlCbE4saUJBMmVHNk07T0FZb0IsTUFBQSxXQXlSdkJ4RixlQXRTR3lGO09BWXFCLE1BQUEsV0FsQnZCRixJQUtFRztPQVlxQixNQUFBLFdBc1J4QjVOLG1CQXRSc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FiekNxcUI7bUJBU01ycUI7T0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0FBQSxXQW9PMUJ5cUIsZUFyT2M3TjtPQUNSLFdBQUMsV0E3a0JQNkQsZ0JBNGtCVXZFO01BQ2lDO01BSHpDLFVBQUEsaUNBVENvTztNQU1MO2NBQzBCLFdBYXhCUCxtQkFyQkdROzs7Ozs7S0FtQko7O0tBRUNSLG1DQUNGLHFCQUVnRDs7S0FFOUNkO2NBRUNqcEIsR0FBSyxPQUFBLFdBRU51bUIsb0JBL1BBOEIsa0JBNlBDcm9CLEdBQTBDOztLQUUzQ3VtQjtjQUtDMEQ7TUFBSjtPQUlNUztPQURBQztPQURBQztPQU82QixNQUFBLFdBbGhCaEN2TixpQkE2Z0JHcU47T0FJc0IsTUFBQSxXQStQekJoRyxlQXBRR2lHO01BR0wsV0FDMkIsV0FQeEJWLElBRUVXO0tBUUo7O0tBRUM3RDs7TUFFSDtPQUlNOEQ7T0FEQUM7T0FEQUM7T0FEQWtLO09BUzZCLE1BQUEsV0FqaUJoQzVYLGlCQTJoQkd3TjtPQUtzQixNQUFBLFdBZ1B6Qm5HLGVBdFBHb0c7T0FLMkIsTUFBQSxXQUs5QnZELG9CQVhHd0Q7TUFJTDtjQUM0QixXQTZPMUJ2TyxVQUZBbVksZ0JBalBHTTs7OztLQVVKOztLQUVDMU4sb0NBQzJELHFCQUVuQjs7S0FFeENwQjs7TUFHSDtPQUlNOEU7T0FEQUM7T0FEQUM7T0FEQUM7T0FTcUIsTUFBQSxXQTBOeEIxRyxlQWhPR3VHO09BSzRCLE1BQUEsV0FyakIvQjVOLGlCQStpQkc2TjtPQUtzQixNQUFBLFdBa056QnVKLGFBamdCQXBNLGtCQXlTRzhDO01BSUw7Y0FDMkIsV0F3TnpCM08sbUJBeE51Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4xQ29yQjs7OztLQVVKOztLQUVDckM7O01BRUg7T0FJTTBDO09BREFDO09BREFDO09BREFDO09BU29CLE1BQUEsV0EyTXZCbEgsZUFqTkcrRztPQUsyQixNQUFBLFdBcGtCOUJwTyxpQkE4akJHcU87T0FLcUIsTUFBQSxXQTlUeEJyRCxrQkF3VEdzRDtNQUlMO2NBQzBCLFdBeU14Qm5QLG1CQXpNc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekM0ckI7Ozs7S0FVSjs7S0FFQzVGOztNQUVIO09BS01nRztPQURBRTtPQURBQztPQURBQztPQURBQztPQWtCOEIsTUFBQSxXQTdsQmpDaFAsaUJBK2tCRzJPO2FBSkFLO09BZ0IyQixNQUFBLFdBOEQ5QjNFLG1CQTNFR3dFO09BWUQ7U0FBQTs0QkFNRnhLLDRCQW5CR3lLO21CQVFNbnNCO09BQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BQUEsV0FnSTFCeXFCLGVBakljN047T0FDUixXQUFDLFdBanJCUDZELGdCQWdyQlV2RTtNQUNpQztNQUh6QyxVQUFBLGlDQVJDa1E7TUFLTDtjQUM2QixXQXlMM0I1UCxVQUZBbVksZ0JBOUxHdEk7Ozs7OztLQW1CSjs7S0FFQzNLOztNQUVIO09BSU00SztPQURBQztPQURBQztPQURBQztPQVM0QixNQUFBLFdBNW1CL0JwUCxpQkFzbUJHaVA7T0FLcUIsTUFBQSxXQXFLeEI1SCxlQTNLRzZIO09BS3NCLE1BQUEsV0FLekJHLGdDQVhHRjtNQUlMO2NBQzJCLFdBa0t6QmhRLG1CQWxLdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUN5c0I7Ozs7S0FVSjs7S0FFQ0M7O01BRTBDO09BR047UUFGTjlQO1FBQUpWO1FBRVUsTUFBQSxXQWtKcEN1WSxhQWgyQkFoVSxnQkE0c0I4QjdEO09BQzVCLFdBQ0csV0FxRUwrUCw0QkF2RTBCelE7O1VBR0NFO01BQ3pCLFdBQXlCLFdBcUozQkksVUFGQW1ZLGdCQXBKMkJ2WTtLQUM0Qjs7S0FFdkQySjs7TUFFSDtPQVFNNkc7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0EyQnNCLE1BQUEsV0EwSHpCekksZUE5SUdrSTtPQW1CNkIsTUFBQSxXQXJwQmhDdlAsaUJBaW9CR3dQO09BbUIyQixNQUFBLFdBa0g5QjRILGFBaDJCQWhVLGdCQTB0QkdxTTtPQW1CMEIsTUFBQSxXQU03QnBGLG1CQTFCR3FGO09BbUJ1QixNQUFBLFdBWTFCSyxnQkFoQ0dKO21CQWdCTWh0QjtPQUNIO1FBQVl5ZCxLQURUemQ7UUFDSzRjLEtBREw1YztRQUNDa2MsS0FERGxjO1FBRW9DLE1BQUEsV0FnSTdDMGtCLGVBaklrQmpIO1FBQ1EsTUFBQSxXQTF1QjFCZ0QsZ0JBeXVCYzdEO09BQ1IsV0FBQyxXQTF1QlA2RCxnQkF5dUJVdkU7TUFDb0Q7TUFINUQsVUFBQSxpQ0FoQkMrUTttQkFXTWp0QjtPQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQUFBLFdBNkUxQnlxQixlQTlFYzdOO09BQ1IsV0FBQyxXQXB1QlA2RCxnQkFtdUJVdkU7TUFDaUM7TUFIekMsVUFBQSxpQ0FYQ2dSO01BUUw7Y0FDNEIsV0FzSTFCMVEsbUJBdEl3Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVYzQ210Qjs7Ozs7Ozs7S0E0Qko7O0tBRUN6RixtQ0FDRixxQkFFNEM7O0tBRTFDMEY7O01BQ0Y7O1dBRStCbFI7T0FDM0I7ZUFBMkIsNEJBSzdCbVIsOEJBTjZCblI7O1VBRURFO01BQzFCLFdBQTBCLDRCQTZCNUJrUix3QkE5QjRCbFI7S0FFd0I7O0tBRXBEaVI7O01BR0g7T0FLTUU7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUU7T0FXMkIsTUFBQSxXQXRyQjlCdlEsaUJBK3FCR2tRO09BTW9CLE1BQUEsV0EyRnZCN0ksZUFsR0c4STtPQU1vQixNQUFBLFdBa0Z2QmlILGFBaDJCQWhVLGdCQXV3QkdnTjtPQU1xQixNQUFBLFdBTXhCZCw0QkFiR2U7TUFLTDtjQUMwQixXQXlGeEJsUixtQkF6RnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUHpDNHRCOzs7OztLQVlKOztLQUVDakI7O01BRUY7V0FDNkJ6UTtPQUN6QixXQUF5Qiw0QkF2eEIzQnVFLGdCQXN4QjJCdkU7O1VBRUNFO01BQzFCLFdBQTBCLDRCQUU1QmtSLHdCQUg0QmxSO0tBQ29DOztLQUVoRWtSOztNQUVIO09BS01PO09BREFDO09BREFDO09BREFDO09BREFDO09BVzJCLE1BQUEsV0Evc0I5QjVRLGlCQXdzQkd3UTtPQU1vQixNQUFBLFdBa0V2Qm5KLGVBekVHb0o7T0FNcUIsTUFBQSxXQXZ5QnhCck4sZ0JBZ3lCR3NOO09BTXdCLE1BQUEsV0FNM0J0RyxtQkFiR3VHO01BS0w7Y0FDMEIsV0FnRXhCeFIsbUJBaEVzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6Q2l1Qjs7Ozs7S0FZSjs7S0FFQ3hHLG1DQUNGLHFCQUU4Qzs7S0FFNUNnRDs7TUFBaUUsc0JBQ3RDLGlCQUNJLGtCQUNKOztLQUFxQjs7S0FFaEQzRTs7TUFFSDtPQUtNb0k7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FXcUIsTUFBQSxXQXNDeEI1SixlQTdDR3dKO09BTTRCLE1BQUEsV0F6dUIvQjdRLGlCQWt1Qkc4UTttQkFNb0NudUIsR0FBSyxPQUFMQSxFQUFNO01BQXBCO09BQUEsTUFBQSxpQ0FQdEJvdUI7T0FNc0IsTUFBQSxXQWowQnpCM04sZ0JBMHpCRzROO01BS0w7Y0FDMkIsV0FxQ3pCN1IsbUJBckN1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAxQ3N1Qjs7Ozs7S0FZSjs7S0FFQ2hROztNQUFvRSw4QkFDM0M7NkJBQ0ZwQyxlQUFNLFdBQU5BO1VBQ0FFO01BQU0sV0FBTkE7S0FBNkI7cUJBRXBENkgsa0NBQ0YscUJBRXdDO3FCQUV0Q2xELHFCQUE0RC9nQixHQUFLLE9BQUxBLEVBQU07cUJBRWxFMmQsK0JBQWlFLHFCQUVqQjs7S0FFaERIOztNQUFtRTs7YUFDaENaLGVBQUpWO1NBQzdCLFdBRDZCQSxJQUNJLFdBT25DdVksc0JBUG9EejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QjRjOzthQUVSUixpQkFBTSxXQUFOQTs7YUFDT2lDLGlCQUFKeEI7U0FDNUI7aUJBRDRCQTtpQkFDSSxXQUlsQzRYLHNCQUptRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkJxZTs7YUFFREUsaUJBQUp4QjtTQUMzQjtpQkFEMkJBO2lCQUNJLFdBRWpDMFgsc0JBRmtEejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QnVlOztLQUM0Qjs7S0FFN0RrVztjQUNDeEs7TUFBSixZQUEyQjtVQUFZL047TUFBTSxXQUFLLFdBQTlDK04sSUFBbUMvTjtLQUFrQjtxQkFFdER5WSx5QkFBa0QzMEIsR0FBSyxPQUFMQSxFQUFNOztLQUV4RHdjO2NBRUN5TjtNQUFKO09BQTRCMXBCO09BQW5CWTtPQUNzQyxNQUFBLFdBRTVDdWpCLGVBSHlCbmtCO01BQzNCLFdBQW9CLFdBRGpCMHBCLElBQUs5b0I7S0FDeUQ7cUJBRS9EdWpCLHdCQUErQzFrQixHQUFLLE9BQUxBLEVBQU07cUJBQ3JEMDBCLDJCQUEyQixxQkFBc0M7WUFFakVMLFdBQVdyMEIsR0FBSSxPQUFBLDRCQTc3QmZ5ZSxXQTY3Qld6ZSxHQUF3Qjs7OztPQWhtQy9CaWM7T0FZSk07T0FlQVM7T0FhQU87T0FzSEE4QztPQUtBNUI7T0FRQWY7T0FlQTRDO09BYUEwRDtPQTRDQXZEO09BYUFnRTtPQWlDQUk7T0FXQUQ7T0FpQkFEO09BZ0JBdEg7T0FHQStIO09BU0FJO09BT0FySjtPQUdBdUo7T0FRQUc7T0FtRUFTO09BSUFGO09BSUFLO09BWUFJO09Bc0NBN0U7T0FjQWtGO09BWUFJO09BMEJBRTtPQU9BdEI7T0FlQTNFO09BWUE0RztPQW9CQUU7T0FZQUk7T0FxQkFDO09BZUFqRDtPQUdBa0Q7T0FRQUc7T0E4Q0F6QztPQUtBNkM7T0FJQXBDO09BWUF3QztPQXNCQUM7T0FnQkFHO09BYUFJO09BNEJBcEg7T0FhQThEO09BNEJBdUQ7T0FLQWQ7T0FJQTFDO09BaUJBUTtPQWVBUTtPQUtBcEI7T0FnQkE0QztPQWVBL0M7T0F3QkF0RTtPQWVBZ0w7T0FTQTNHO09BaUNBMkI7T0FLQTBGO09BU0FDO09Ba0JBVjtPQVFBVztPQWlCQTdGO09BS0FnRDtPQUtBM0U7T0FpQkF4SDtPQUtBMkY7T0FLQWxEO09BRUFwRDtPQUlBSDtPQVNBaVg7T0FHQUU7T0FFQW5ZO09BS0FrSTtPQUNBZ1E7T0FFQUw7T0F0NkJBL1Q7T0EvSkF0RDtPQXdOQXlEOzs7O0U7Ozs7OztHQzFOYzs7SUFnNUJaOWU7SUFDQUM7SUFqNUJZO0lBOENDO0lBaTJCSCxhQUNWRCx1QkFDQUM7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7WUMxNUJFb2I7SUFDUDtLQUdNQztLQURBRTtLQURBQztLQU80QixPQTBRL0JDLGdCQS9RR0o7SUFFTCxXQU1FTSxxQkFWR0gsWUFDQUQ7R0FPSjtZQUVDSTtJQUNpRSw4QkF1RzlCOzs7V0F0R1RyQixlQUN4QixXQSs3QkZNLFNBRkFtWSxnQkE5N0IwQnpZOztXQUVHRSxpQkFDM0IsV0ErNkJGb0IsY0FoN0I2QnBCOztPQUkwQjtRQUZ0QnFCO1FBQUpiO1FBQUpDO1FBRThCLE9BcEJuREcsZ0JBa0I2QlM7UUFFVixPQUFBLDRCQStHdkJDLG9CQWpINkJkO09BQzNCLFdBeTZCRmUsY0ExNkJ5QmQ7O1dBR0lFO09BQzNCLFdBQTJCLDRCQXFHN0IwQixXQXRHNkIxQjs7T0FPdkI7UUFMK0JrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLbkIsT0E1QkZ4QixnQkF1QmlDaUQ7UUFJL0IsT0F1SE5LLGFBM0hpQ2pCO1FBRzNCLE9BKzZCTm9WLFlBejhCSXpYLGlCQXVCeUJxQjtPQUMzQixXQXc1QkZDLGVBejVCeUJFOztPQVNuQjtRQUh5QkQ7UUFBSkk7O21CQUlkM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0FuQzFCZ2QsZ0JBa0NjSjtXQUNSLFdBNjRCVjBCLGVBOTRCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHlCcUM7T0FDN0IsV0E5QkV2QixnQkE2QnVCMkI7O09BU29CO1FBRGhCRDtRQUFKRTtRQUNvQixPQUFBLDRCQXFGL0NILFdBdEYrQkM7T0FDN0IsV0F0Q0UxQixnQkFxQ3VCNEI7O09BR2tCO1FBRGhCQztRQUFKQztRQUNvQixPQUFBLDRCQW1GN0NMLFdBcEY2Qkk7T0FDM0IsV0F4Q0U3QixnQkF1Q3FCOEI7O1dBRUNFO09BQ3hCLFdBQXdCLDRCQTFDdEJoQyxpQkF5Q3NCZ0M7O09BSU87UUFGRUQ7UUFBSkc7UUFFRSxPQTQ1QmpDdVYsWUF6OEJJelgsaUJBMkMrQitCO09BQ2pDLFdBazZCRnZDLFNBRkFtWSxnQkFqNkIrQnpWOztXQUdFRCxpQkFBSkc7T0FDM0IsWUFEMkJBLE1BMjVCN0JxVixZQXo4Qkl6WCxpQkE4QzZCaUM7O09BUzNCO1FBUDBCRTtRQUFKSTtRQU90QixPQWs1Qk5rVixZQXo4Qkl6WCxpQkFnRDRCbUM7O21CQUduQm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BckRuQ2dkLGdCQW9EY0o7V0FDUixXQXk1QlZKLFNBRkFtWSxnQkF4NUJjelk7VUFDNEM7T0FKeEQsWUFDSSxrQ0FGc0JxRDs7T0FTbUI7UUFEaEJEO1FBQUpFO1FBQ29CLE9BcTVCL0NoRCxTQUZBbVksZ0JBcDVCK0JyVjtPQUM3QixZQXpERXRDLGdCQXdEdUJ3Qzs7T0FJMEI7UUFGZkM7UUFBSkM7UUFBSkM7UUFFdUIsT0E1RGpEM0MsZ0JBMERrQ3lDO1FBRWIsT0FrNUJ6QmpELFNBRkFtWSxnQkFsNUJrQ2pWO09BQ2hDLFlBM0RFMUMsZ0JBMEQwQjJDOztXQUdKRTtPQUN4QixZQUF3Qiw0QkE5RHRCN0MsaUJBNkRzQjZDOztPQUltQjtRQUZMSztRQUFKTjtRQUFKRztRQUVhLE9BdzRCN0MwVSxZQXo4Qkl6WCxpQkErRG9Da0Q7UUFFZixPQWpFckJsRCxnQkErRGdDNEM7T0FDbEMsWUFoRUU1QyxnQkErRDRCK0M7O09BSWtCLElBRGhCRCxrQkFBSk0sa0JBQ29CLE9BbkU5Q3BELGdCQWtFOEI4QztPQUNoQyxZQW5FRTlDLGdCQWtFMEJvRDs7T0FHaUIsSUFEaEJELGtCQUFKSyxrQkFDb0IsT0FyRTNDeEQsZ0JBb0UyQm1EO09BQzdCLFlBckVFbkQsZ0JBb0V1QndEOztPQVFyQjtRQU5tQ1I7UUFBSmdLO1FBQUp0SjtRQUFKSDtRQUFKSztRQU1uQixPQTVFRjVELGdCQXNFcUNnRDtRQUtuQyxPQTJDTkssb0JBaERxQzJKO1FBSS9CLE9BMUVGaE4sZ0JBc0U2QjBEO1FBRzNCLE9BekVGMUQsZ0JBc0V5QnVEO09BQzNCLFlBMkVGRCxhQTVFeUJNOztPQVEyQixJQURoQkQsa0JBQUpHLGtCQUNvQixPQTRIcERMLGVBN0hvQ0U7T0FDbEMsWUE5RUUzRCxnQkE2RTRCOEQ7O09BSXdCO1FBRnBCTTtRQUFKUDtRQUFKRztRQUU0QixPQXlIeERQLGVBM0hvQ1c7UUFFWCxPQXczQnpCcVQsWUEvdkJBaFUsZ0JBM0hnQ0k7T0FDOUIsWUFoRkU3RCxnQkErRXdCZ0U7O09BSWtCO1FBRGhCQztRQUFKQztRQUNvQixPQTIzQjlDMUUsa0JBMzNCNER4YyxHQUFLLE9BQUxBLEVBQU0sR0FEcENpaEI7T0FDNUIsWUFuRkVqRSxnQkFrRnNCa0U7O1dBRUZDLGtCQUN0QixZQXkzQkYzRSxTQUZBbVksZ0JBeDNCd0J4VDs7T0FHa0MsSUFEdEJFLGtCQUFKQyxrQkFDMEIsT0F2RnREdEUsZ0JBc0ZnQ3FFO09BQ2xDLFlBdTNCRjdFLGtCQXYzQjhDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHBCc2hCOzs7UUFFSEc7O21CQUdqQnpoQjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixPQTdGaENnZCxnQkE0RmFKO1dBQ1IsV0FpM0JUSixrQkFqM0J3QnhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO1VBQzBDO09BSnJELFlBQ0Usa0NBRnlCdUY7O09BU3VCO1FBRmJ3UDtRQUFKelA7UUFBSkc7UUFFcUIsT0FqR2hEM0UsZ0JBK0ZtQ2lVO1FBRVIsT0EyVy9CMVAsaUJBN1dtQ0M7T0FDakMsWUE4MkJGaEYsa0JBNzJCbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGTTJoQjs7T0FLSyxJQUZFRSxrQkFBSkQsa0JBRUUsT0FwR2hDNUUsZ0JBa0drQzZFO09BQ3BDLFlBZ3NCRkgsMkJBanNCa0NFOztXQUdQRSxrQkFDekIsWUF0R0U5RSxnQkFxR3VCOEU7O1dBRUZDLGtCQUFNLFlBdkczQi9FLGdCQXVHcUIrRTs7T0FFcUI7UUFEaEJFO1FBQUpDO1FBQ29CLE9BZzJCOUN1UyxZQS92QkFoVSxnQkFsRzhCd0I7T0FDNUIsWUF6R0VqRixnQkF3R3NCa0Y7O1dBRUNDLGtCQUN6QixZQXlSRkgscUJBMVIyQkc7O09BRzRCLElBRHRCQyxrQkFBSkMsa0JBQzBCLE9BN0duRHJGLGdCQTRHNkJvRjtPQUMvQixZQWkyQkY1RixrQkFqMkIyQ3hjLEdBQUssT0FBTEEsRUFBTSxHQURwQnFpQjs7V0FFSkUsa0JBQU0sWUE4Vi9CaEIsaUJBOVZ5QmdCOztPQUcrQjtRQUZ0QnVTO1FBQUo1RDtRQUFKek87UUFFOEIsT0FqSHBEekYsZ0JBK0c4QjhYO1FBRU4sT0E2MUI1QnRZLFNBRkFtWSxnQkE3MUI4QnpEO09BQzVCLFlBd25CRjNKLG1CQXpuQjBCOUU7bUJBR0l1TyxrQkFDNUIsWUEyaUJGdE8sZUE1aUI4QnNPOztHQUVrQztZQUVoRTNRLDJCQUM2RCxxQkFFbkI7WUFFMUM1QjtJQUNIO0tBQXNEbkU7S0FBekJDO0tBQXZCQztLQUltQixPQWhJbEJ3QyxnQkE0SCtDMUM7S0FHM0IsT0EwMEJ4Qm1hLFlBejhCSXpYLGlCQTRIc0J6QztJQUM1QixXQXFCRStGLGFBdEJHOUY7R0FLSjtZQUVDa0Q7SUFFSDtLQUlNNEY7S0FEQUM7S0FEQUU7S0FEQUM7S0FRMkIsT0FxSTlCckcsZ0JBM0lHa0c7S0FLcUIsT0E3SXBCdkcsZ0JBdUlEeUc7SUFJTCxXQU9FbkQsYUFaR29ELHNCQUdBSjtHQU9KO1lBRUNoRDtJQUNIO0tBR01zRDtLQURBRTtLQURBQztLQU80QixPQXdIL0IxRyxnQkE3SEd1RztJQUVMLFdBTUVJLGtCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ0UsOEJBQ3lCOzs7V0FDSDlILGVBQ3RCLFdBNHlCRk0sa0JBNXlCdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEckJrYzs7T0FHb0I7UUFEYlU7UUFBSlI7UUFDaUIsT0EweUI1Q0ksa0JBMXlCMER4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakM0YztPQUM3QixXQWxCRjBELGFBaUIyQmxFOztXQUVFUyxpQkFDM0IsV0EweEJGVyxjQTN4QjZCWDs7T0FHbUIsSUFEZHdCLGlCQUFKdEIsaUJBQ2tCLE9Bd3hCaERTLGNBenhCa0NhO09BQ2hDLFdBd3hCRmIsY0F6eEI4QlQ7O1dBRUp5QjtPQUN4QixXQUF3Qiw0QkF4QjFCOEIsY0F1QjBCOUI7O09BSU87UUFGRUQ7UUFBSkk7UUFFRSxPQTR4QmpDOFYsWUF2ekJBblUsY0F5Qm1DL0I7T0FDakMsV0FreUJGL0IsU0FGQW1ZLGdCQWp5QitCaFc7O1dBR0VELGlCQUFKRTtPQUMzQixXQUQyQkEsTUEyeEI3QjZWLFlBdnpCQW5VLGNBNEJpQzVCOztPQVMzQjtRQVAwQkc7UUFBSkM7UUFPdEIsT0E4dkJObUYsaUJBcndCZ0NwRjs7bUJBR25CN2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0FuQ3ZDc2dCLGFBa0NrQjFEO1dBQ1IsV0F5eEJWSixTQUZBbVksZ0JBeHhCY3pZO1VBQ3lDO09BSnJELFdBQ0ksa0NBRnNCNEM7O1dBUUZFO09BQ3hCLFdBQXdCLDRCQXZDMUJzQixjQXNDMEJ0Qjs7T0FHZSxJQURiRCxpQkFBSkcsaUJBQ2lCLE9BekN6Q29CLGFBd0M0QnZCO09BQzFCLFdBekNGdUIsYUF3Q3dCcEI7O09BR3lCLElBRGJELGlCQUFKRyxpQkFDaUIsT0FhakRxQixlQWRvQ3hCO09BQ2xDLFlBM0NGcUIsYUEwQ2dDbEI7O1dBRVBHLGtCQUN2QixZQSt3QkYvQyxTQUZBbVksZ0JBOXdCeUJwVjs7V0FFQUMsa0JBQU0sWUE5Qy9CYyxhQThDeUJkOztXQUNFRztPQUN6QixZQTR3QkZuRCxrQkE1d0IwQ3hjLEdBQUssT0FBTEEsRUFBTSxHQURyQjJmOztXQUVHRSxrQkFDNUIsWUFsREZTLGFBaUQ4QlQ7O1dBRUFFLGtCQUM1QixZQXdkRjJDLGVBemQ4QjNDOztPQUd3QixJQUR4QlosaUJBQUppQixrQkFDNEIsT0F0RHRERSxhQXFEOEJuQjtPQUM1QixZQXN3QkYzQyxTQUZBbVksZ0JBcndCMEJ2VTs7R0FDNEM7WUFFdEVLO0lBQ0g7S0FHTTREO0tBREFFO0tBREFDO0tBTzRCLE9BZ0UvQm5ILGdCQXJFR2dIO0lBRUwsV0FNRUksb0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDK0QsOEJBQ3BDOzs7V0FDSHZJLGVBQU0sV0FBTkE7O09BR21CO1FBRlJ1QjtRQUFKYjtRQUFKUjtRQUVnQixPQWxCM0NxRSxlQWdCbUNoRDtRQUVYLE9BbEJ4QmdELGVBZ0IrQjdEO09BQzdCLFdBcXRCRjBCLGVBdHRCMkJsQzs7V0FHRFM7T0FDeEIsV0FBd0IsNEJBcEIxQjRELGdCQW1CMEI1RDs7T0FJTztRQUZEd0I7UUFBSnRCO1FBRUssT0FBQSw0QkF2QmpDMEQsZ0JBcUJnQ3BDO09BQzlCLFdBOHVCRjdCLFNBRkFtWSxnQkE3dUI0QjVYOztPQUtRLElBRkp3QixpQkFBSkMsaUJBRVEsT0FpdEJwQ3lGLGlCQW50QmdDMUY7T0FDOUIsV0FDRyw0QkF3Q0xvRyxtQkExQzRCbkc7O09BS0s7UUFGRkU7UUFBSkM7UUFFTSxPQUFBLDRCQTdCakM4QixnQkEyQitCL0I7T0FDN0IsV0F3dUJGbEMsU0FGQW1ZLGdCQXZ1QjJCaFc7O1dBR0lFLGlCQUFKRDtPQUN6QixXQS9CRjZCLGVBOEIyQjdCLE9BQUlDOztPQU16QjtRQUorQlE7UUFBSk47UUFBSkQ7UUFJdkI7VUEydEJOMlY7cUJBM3RCdUJ6MEIsR0FBSyxPQUFBLDRCQTRzQjVCK2dCLFlBNXNCdUIvZ0IsR0FBMEI7WUFKWnFmO1FBRy9CLE9Bd3NCTjRFLGlCQTNzQmlDbEY7T0FDL0I7ZUFDSSw0QkFzQk42RixnQkF4QjZCOUY7Ozs7T0FPd0I7UUFGdkJHO1FBQUpEO1FBRTJCLE9BdkNyRHlCLGVBcUM4QnhCO3dCQUVYamYsR0FBSyxPQTZ0QnhCd2Msa0JBN3RCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRnFCZ2Y7O1dBR0VFLGlCQUMxQixXQUlGMkYsa0JBTDRCM0Y7bUJBRUVFLGlCQUM1QixZQXlhRnNELGVBMWE4QnREOztHQUNtQjtZQUVqRHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQXJEakN5Z0IsZUFvRFk3RDtLQUNSLFdBK3NCSkosU0FGQW1ZLGdCQTlzQlF6WTtJQUMyQztJQUhuRCxXQUFBLGtDQUZNVTtJQUNSLFdBbXRCRUosU0FGQW1ZLGdCQWx0QkV6WTtHQU1JO1lBRU4wSTtJQUNGO0tBTVE7TUFMMkIzRTtNQUFKeEM7TUFBSmI7TUFBSlY7TUFLZixPQUFBLDRCQS9ETnVFLGdCQTBEaUNSO01BSTNCLE9BNHNCTnlVLFVBaHRCNkJqWDtNQUd2QixPQVlOSixnQkFmeUJUO0tBQ3ZCLFdBeXNCRkosU0FwQkF1RSxZQXRyQnFCN0U7O1FBTUdFO0lBQU0sV0FoRTlCcUUsZUFnRXdCckU7R0FBK0M7WUFFdkV1STtJQUNFO0tBR2lEO01BRnRCbEg7TUFBSmI7TUFBSlY7TUFFOEIsT0F0RW5EdUUsZUFvRTZCaEQ7TUFFRSxPQUcvQkosZ0JBTHlCVDtLQUN2QixXQStyQkZKLGtCQTlyQm1CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkprYzs7UUFHR2xjO0lBQUssV0F2RTdCeWdCLGVBdUV3QnpnQjtHQUE2QztZQUVyRXFkLGdCQUNDcmQ7SUFBSyxPQUFBLDRCQUVOb2xCLGdCQUZDcGxCO0dBQThCO1lBRS9Cb2xCLGVBQ0NwbEI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0FFekJ3bEIsYUFITTVJO0lBQ1IsV0FxckJFSixrQkFyckJheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSjtJQUFnRTs7V0FDNUN0SixlQUFNLFdBTTFCQyxlQU5vQkQ7O1dBQ0FFLGlCQUFNLFdBK1AxQnFKLGVBL1BvQnJKOztXQUNBUyxpQkFBTSxXQXBGMUI0RCxlQW9Gb0I1RDs7T0FFa0I7UUFEYkQ7UUFBSkc7UUFDaUIsT0F5cUJ0QzBYLFlBejhCSXpYLGlCQStScUJKO09BQ3ZCLFdBOUlGMEQsYUE2SXFCdkQ7O0dBQ2dEO1lBRXJFWixlQUNDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O09BRWdELElBRGhCakosZUFBSlYsZUFDb0IsT0E5QjlDbUIsZ0JBNkI4QlQ7T0FDNUIsV0FqVEVJLGdCQWdUc0JkOztPQUdtQjtRQURkbUM7UUFBSmpDO1FBQ2tCLE9BQUEsNEJBaEw3Q3NCLG9CQStLK0JXO09BQzdCLFdBeW9CRlYsY0Exb0IyQnZCOztXQUVHUyxpQkFDNUIsV0EwbUJGaUosdUJBM21COEJqSjs7T0FJUDtRQUZPMEI7UUFBSnhCO1FBRUgsT0FBQSw0QkFtZ0J2QmdKLHVCQXJnQjhCeEg7T0FDNUIsV0Fxb0JGWixjQXRvQjBCWjs7V0FHQ3lCLGlCQUN6QixXQWtkRndILG9CQW5kMkJ4SDs7V0FFR0csaUJBQzVCLFdBdWVGK0MsMkJBeGU4Qi9DOztXQUVIQyxpQkFDekIsV0ErSEZzSCxvQkFoSTJCdEg7O1dBRUdFO09BQzVCLFdBQTRCLDRCQTZIOUJvSCxxQkE5SDhCcEg7O1dBRUZFLGlCQUMxQixXQTJhRm1ILDZCQTVhNEJuSDs7V0FFSEUsaUJBQ3ZCLFdBcVpGNkgsc0JBdFp5QjdIOztXQUVDRTtPQUN4QixZQUF3Qiw0QkFjMUJnSCx3QkFmMEJoSDs7V0FFS0c7T0FDN0I7ZUFBNkIsNEJBOFAvQjhHLDZCQS9QK0I5Rzs7V0FFSEMsa0JBQzFCLFlBTUY4Ryx5QkFQNEI5Rzs7V0FFRUcsa0JBQzVCLFlBdERGeUYsZUFxRDhCekY7O09BR29CLElBRGZqQixpQkFBSm1CLGtCQUNtQixPQTNEbER4QyxnQkEwRG1DcUI7T0FDakMsWUFnVkZnRSxlQWpWK0I3Qzs7R0FDc0M7WUFFckV5Ryx5QkFFQ3RtQjtJQUFLLE9Bc1hOdW1CLG1CQTVQQWhGLGtCQTFIQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9BNlVOd21CLGlCQTNVQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQTlFOUJ2SixnQkF5RUdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ2lFOztPQUdoQztRQUZGaks7UUFBSlY7UUFFTSxPQUFBLDRCQTlKakN1RSxnQkE0SitCN0Q7T0FDN0IsV0F1bUJGSixTQUZBbVksZ0JBdG1CMkJ6WTs7V0FHRUUsaUJBQzNCLFdBMEJGNEYscUJBM0I2QjVGOztPQU92QjtRQUw4QjZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLbEIsT0F4Qk40SixnQkFtQm9DeEc7UUFJOUIsT0E3Tk5LLGFBeU5nQzdDO1FBRzFCLE9BMmxCTmdYLFlBejhCSXpYLGlCQTJXd0JxQjtPQUMxQixXQW9rQkZDLGVBcmtCd0J6Qjs7T0FTbEI7UUFId0IwQjtRQUFKeEI7O21CQUliL2M7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F2WDFCZ2QsZ0JBc1hjSjtXQUNSLFdBeWpCVjBCLGVBMWpCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHdCcUM7T0FDNUIsV0ExQkZrSSxnQkF5QjBCMUo7O09BVTZCO1FBRnZCc0M7UUFBSlg7UUFBSkY7UUFFK0IsT0FuQ3ZEaUksZ0JBaUNnQ3BIO1FBRVQsT0FBQSw0QkF4UHZCM0Isb0JBc1A0QmdCO09BQzFCLFdBa2tCRmYsY0Fua0J3QmE7O09BSTJCLElBRGhCSyxpQkFBSkYsaUJBQ29CLE9Ba05uRG1JLGdCQW5ObUNqSTtPQUNqQyxXQXJDRjRILGdCQW9DK0I5SDs7V0FFRkMsaUJBQzNCLFdBK1JGOEQsZUFoUzZCOUQ7O09BSTZCO1FBRnZCdE47UUFBTC9RO1FBQUxnUjtRQUVpQyxPQTFDMURrVixnQkF3Q21DblY7UUFFTixPQTRrQjdCa0wsU0FGQW1ZLGdCQTVrQjhCcDBCO09BQzVCLFdBdVdGZ25CLG1CQXhXeUJoVzs7R0FFb0Q7WUFFN0V5UTtJQUVIO0tBQWlDZ0Y7S0FBM0JDO0tBR3lCLE9BQUEsNEJBRzVCQyxrQkFOOEJGO0lBQ2hDLFdBclBFMUcsYUFvUEcyRztHQUlKO1lBRUNDO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPMkIsT0FsSTlCaEssZ0JBNkhHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7T0FLN0Q7UUFKOEI3SjtRQUFKYjtRQUFKVjt3QkFJS2xjLEdBQUssT0FBTEEsRUFBTTtRQUFqQyxPQTJpQk55MEIsMkIsT0FLQWpZLHdCQXBqQm9DaUI7UUFHOUIsT0FyRU5nSixnQkFrRWdDN0o7T0FDOUIsV0E2VUYySyxtQkE5VTRCckw7O09BTTFCO1FBRHFCRTtRQUVOaUQsT0FGTWpEO1FBRVZpQyxPQUZVakM7UUFFZFMsT0FGY1Q7UUFLaEIsT0FrQlBvTCxzQkFyQmlCbkk7UUFFVixPQWtmUG9JLGtCQXBmYXBKO09BRFgsZUE4aUJGN0Isa0JBNWlCcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEI2Yzs7T0FLUDtRQUR3QkU7UUFFVDBDLE9BRlMxQztRQUVid0IsT0FGYXhCO1FBRWpCeUIsT0FGaUJ6QjtRQUtuQixPQVlQeUssc0JBZmlCL0g7UUFFVixPQW1iUGlJLGtCQXJiYW5KO09BRFgsZUF3aUJGL0Isa0JBdGlCcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEJ3ZTs7T0FLUDtRQUQ0Qkc7UUFFakJELE9BRmlCQztRQUVyQkMsT0FGcUJEO1FBR0wsT0FwT3pCOEIsZUFtT2EvQjtPQURYLGVBbE9GK0IsZUFtT1M3Qjs7V0FFc0JFLGlCQUM3QixXQWhiRTlCLGdCQSthMkI4Qjs7V0FFRkUsaUJBQzNCLFdBNUpGb0csZUEySjZCcEc7bUJBRUFFLGlCQUMzQixXQTBPRndELGVBM082QnhEOztHQUNtQjtZQUVoRHNJO0lBQ21FLHVCQUN4Q3RMLGVBQ3pCLFdBL09GdUUsZUE4TzJCdkU7SUFHeUIsSUFEbkJVLGVBQUpSLGlCQUN1QixPQTNiaERZLGdCQTBiNkJKO0lBQy9CLFdBNlNGMkssbUJBOVM2Qm5MO0dBQzBDO1lBRXZFOEo7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsT0FyTDlCMUssZ0JBK0tHd0s7S0FLcUIsT0FLeEJ0RyxpQkFYR3VHO0lBSUw7WUF5Z0JFdEwsa0JBeGdCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekMrbkI7OztZQUdBSDtHQU9KO1lBRUNyRztJQUNIO0tBR015RztLQURBQztLQURBQztLQU80QixPQWxNL0I3SyxnQkE2TEcySztJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztXQUN6Q2pNLGVBQ3hCLFdBbWZGTSxTQUZBbVksZ0JBbGYwQnpZOztXQUVJRSxpQkFDNUIsV0EzTEZELGVBMEw4QkM7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk4wRSxpQkFrQnFDOUQ7UUFHL0IsT0F3ZU5nWCxZQTdkQXBNLGtCQWRpQ3pMO09BQy9CLFdBK2VGSixrQkE5ZW9CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7T0FNbUIsSUFEakJ3QixpQkFBSnRCLGlCQUNxQixPQXhCaER3RSxpQkF1QitCbEQ7T0FDN0IsV0F4QkZrRCxpQkF1QjJCeEU7O09BRzBCLElBRGpCd0IsaUJBQUpDLGlCQUNxQixPQU1yRDZKLGlCQVBvQzlKO09BQ2xDLFdBMUJGZ0QsaUJBeUJnQy9DOztXQUVMRyxpQkFDekIsV0F4ZUUzQixnQkF1ZXVCMkI7bUJBRUdDLGlCQUM1QixXQW9MRjhELGVBckw4QjlEOztHQUNtQjtZQUVqRHlKO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsT0FsTy9CbkwsZ0JBNk5HaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7V0FDekN2TSxlQUN4QixXQW1kRk0sU0FGQW1ZLGdCQWxkMEJ6WTs7V0FFSUUsaUJBQzVCLFdBK0JGcUosZUFoQzhCcko7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk53TCxpQkFrQnFDNUs7UUFHL0IsT0F3Y05nWCxZQTdkQXBNLGtCQWtCaUN6TDtPQUMvQixXQStjRkosa0JBOWNvQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZHNmM7O09BT0g7UUFGSXdCO1FBQUp0QjtRQUVBLE9BQUEsNEJBUTFCMkwsc0JBVjhCcks7T0FDNUIsV0F4QkZnSyxpQkF1QjBCdEw7O1dBR0N5QixpQkFDekIsV0EzREYrQyxpQkEwRDJCL0M7O1dBRUdHLGlCQUM1QixXQXFKRitELGVBdEo4Qi9EOztXQUVKQyxpQkFDeEIsV0FtY0ZwQyxTQUZBbVksZ0JBbGMwQi9WOztHQUM0QjtZQUV0RDhKO0lBQ2lFOztPQUdoQyxJQUZGOUwsZUFBSlYsZUFFTSxPQTBTakM2SixzQkE1UytCbko7T0FDN0IsV0E4YkZKLFNBRkFtWSxnQkE3YjJCelk7O09BS007UUFGQW1DO1FBQUpqQztRQUVJLE9BMGJqQ0ksU0FGQW1ZLGdCQTFiaUN0VztPQUMvQixXQTJiRjdCLFNBRkFtWSxnQkExYjZCdlk7O09BS0k7UUFGR21DO1FBQUoxQjtRQUVDLE9Bb1NqQ2tKLHNCQXRTb0N4SDtPQUNsQyxXQXdiRi9CLFNBRkFtWSxnQkF2YmdDOVg7O09BS0M7UUFGRTZCO1FBQUozQjtRQUVFLE9Bb2JqQ1AsU0FGQW1ZLGdCQXBibUNqVztPQUNqQyxXQXFiRmxDLFNBRkFtWSxnQkFwYitCNVg7O0dBRTZCO1lBRTVEMEksZUFDQ3psQjtJQUFLLE9BQUEsNEJBRU4yb0IscUJBRkMzb0I7R0FBbUM7WUFFcEMyb0I7SUFFSCxJQUFnQ0MscUJBQTFCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUEwQkQ7R0FJOUI7WUFFQ0U7SUFFRjs7V0FDNEI1TSxlQUN4QixXQW9YRjRKLHVCQXJYMEI1Sjs7T0FJSDtRQUZPVTtRQUFKUjtRQUVILE9BQUEsNEJBNlF2QjJKLHVCQS9ROEJuSjtPQUM1QixXQStZRmUsY0FoWjBCdkI7O1dBR0NTLGlCQUN6QixXQTRORm1KLG9CQTdOMkJuSjs7V0FFR0UsaUJBQzVCLFdBaVBGMkUsMkJBbFA4QjNFOztXQUVIeUIsaUJBQ3pCLFdBeU1GdUssd0JBMU0yQnZLOztXQUVHRztPQUM1QixXQUE0Qiw0QkF1TTlCb0sseUJBeE04QnBLOztXQUVGQyxpQkFDMUIsV0FxTEZ1SCw2QkF0TDRCdkg7O1dBRUhFLGlCQUN2QixXQStKRmlJLHNCQWhLeUJqSTs7V0FFR0UsaUJBQzFCLFdBd0lGaUsseUJBekk0QmpLOztXQUVGRTtPQUN4QixXQUF3Qiw0QkFhMUJnSyx3QkFkMEJoSzs7V0FFS0U7T0FDN0I7ZUFBNkIsNEJBTS9CaUgsNkJBUCtCakg7O1dBRURHLGtCQUM1QixZQTVTRjZGLGVBMlM4QjdGOztPQUdvQixJQURmbEIsaUJBQUptQixrQkFDbUIsT0FqVGxEbkMsZ0JBZ1RtQ2dCO09BQ2pDLFlBMEZGcUUsZUEzRitCbEQ7O0dBQ3NDO1lBRXJFNkcsNEJBR0NybUI7SUFBSyxPQTBGTndtQixpQkFwRkFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FzRk53bUIsaUJBcEZBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUNIO0tBR01xQztLQURBQztLQURBQztLQU80QixPQXJVL0JoTSxnQkFnVUc4TDtJQUVMLFdBTUVHLHFCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ2lFOztPQUdoQztRQUZEMU07UUFBSlY7UUFFSyxNQUFBLDRCQXJaakN1RSxnQkFtWmdDN0Q7T0FDOUIsV0FnWEZKLFNBRkFtWSxnQkEvVzRCelk7O1dBR0VFLGlCQUM1QixXQVlGbU4scUJBYjhCbk47O09BSWE7UUFGUnFCO1FBQUpZO1FBQUp4QjtRQUVnQixNQXJCM0NpSyxnQkFtQm1Dcko7UUFFWCxPQTFaeEJnRCxlQXdaK0JwQztPQUM3QixXQTZVRkMsZUE5VTJCekI7O1dBR0dFLGlCQUM1QixXQXdERjJGLGVBekQ4QjNGOztPQU14QjtRQUo4Qm1ZO1FBQUwzMEI7UUFBTGdSO1FBSXBCLE9BNUJOdVYsZ0JBd0JvQ29PO1FBRzlCLE9Bb1dOMVksU0FGQW1ZLGdCQXJXK0JwMEI7T0FDN0IsV0FnSUZnbkIsbUJBakkwQmhXOztHQUlDO1lBRTNCZ1k7SUFFSDtLQUFpQ0M7S0FBM0JDO0tBR3lCLE1BQUEsNEJBRzVCQyx1QkFOOEJGO0lBQ2hDLFdBdGFFL0ksZUFxYUdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsTUE1Vy9CeE0sZ0JBdVdHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUM4QjVOLGVBQzFCLFdBdkRGNEssZ0JBc0Q0QjVLOztPQUcxQjtRQURzQkU7UUFFSDZELEtBRkc3RDtRQUVQcUIsS0FGT3JCO1FBRVhRLEtBRldSO1FBRWZTLE9BRmVUO1FBTWpCLE1BbmNQcUUsZUErYnFCUjtRQUdkLE1BbURQOEosa0JBdERpQnRNO1FBRVYsTUEwUVBnSyxrQkE1UWE3SztPQURYLGVBc1VGSixrQkFwVXFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCNmM7O09BTVA7UUFEeUJFO1FBRU5pTixPQUZNak47UUFFVnNDLE9BRlV0QztRQUVkc0IsT0FGY3RCO1FBRWxCeUIsT0FGa0J6QjtRQU1wQixNQTFjUDBELGVBc2NxQnVKO1FBR2QsTUE0Q1BELGtCQS9DaUIxSztRQUVWLE1BME1QcUksa0JBNU1hcko7T0FEWCxlQStURjdCLGtCQTdUcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEJ3ZTs7T0FNUDtRQUQ2Qkc7UUFFbEJKLE9BRmtCSTtRQUV0QkMsT0FGc0JEO1FBR04sTUE5Y3pCOEIsZUE2Y2FsQztPQURYLGVBNWNGa0MsZUE2Y1M3Qjs7V0FFcUJFLGlCQUM1QixXQXBZRnNHLGVBbVk4QnRHO21CQUVBRSxpQkFDNUIsV0FFRjBELGVBSDhCMUQ7O0dBQ21CO1lBRWpEMEQsZUFDQzFpQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixNQXRZekJ3bEIsYUFxWU01STtJQUNSLFdBNlNFSixrQkE3U2F4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NLLGlCQUtDeUQ7SUFBSjtLQU9NQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQWtCMkIsTUF6YTlCbE4sZ0JBNFpHNk07S0FXcUIsTUFBQSxXQWxCdkJELElBS0VHO0tBWXFCLE1BcVJ4QjVOLGtCQXJSc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FiekNxcUI7aUJBU01ycUI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFtTzFCeXFCLGNBcE9jN047S0FDUixXQTdlTjZELGVBNGVVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FUQ29PO0lBTUwsV0FjRVAsa0JBckJHUSwwQkFJQUo7R0FlSjtZQUVDSix5QkFDRixxQkFFZ0Q7WUFFOUNkLHlCQUVDanBCO0lBQUssT0FFTnVtQixtQkE1TkE4QixrQkEwTkNyb0I7R0FBMEM7WUFFM0N1bUIsbUJBS0MwRDtJQUFKO0tBSU1TO0tBREFDO0tBREFDO0tBTzZCLE1BbmNoQ3ZOLGdCQThiR3FOO0lBRUwsV0FDMkIsV0FQeEJULElBRUVXLFlBQ0FEO0dBT0o7WUFFQzVEO0lBRUg7S0FJTThEO0tBREFDO0tBREFDO0tBREFrSztLQVM2QixNQWxkaEM1WCxnQkE0Y0d3TjtLQUkyQixNQUs5QnRELG1CQVhHd0Q7SUFJTCxXQTZPRXZPLFNBRkFtWSxnQkFoUEdNLGlCQUVBbks7R0FRSjtZQUVDdkQsMEJBQzJELHFCQUVuQjtZQUV4Q3BCO0lBR0g7S0FJTThFO0tBREFDO0tBREFDO0tBREFDO0tBUTRCLE1BdGUvQi9OLGdCQWdlRzZOO0tBS3NCLE1BaU56QnVKLFlBN2RBcE0sa0JBc1FHOEM7SUFJTDtZQXdORTNPLGtCQXZOdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUNvckI7OztZQUdBSDtHQU9KO1lBRUNsQztJQUVIO0tBSU0wQztLQURBQztLQURBQztLQURBQztLQVEyQixNQXJmOUJ2TyxnQkErZUdxTztLQUtxQixNQTNSeEJyRCxpQkFxUkdzRDtJQUlMLFdBeU1FblAsa0JBeE1zQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU56QzRyQixxQkFHQUg7R0FPSjtZQUVDekY7SUFFSDtLQUtNZ0c7S0FEQUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FpQjhCLE1BN2dCakNoUCxnQkFnZ0JHMk87S0FZMkIsTUE2RDlCdEUsa0JBMUVHd0U7S0FZRDtPQUFBOzBCQUtGeEssNEJBbEJHeUs7aUJBUU1uc0I7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUErSDFCeXFCLGNBaEljN047S0FDUixXQWpsQk42RCxlQWdsQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVJDa1E7SUFLTCxXQXlMRTVQLFNBRkFtWSxnQkE3TEd0STtHQWtCSjtZQUVDM0s7SUFFSDtLQUlNNEs7S0FEQUM7S0FEQUM7S0FEQUM7S0FTNEIsTUE1aEIvQnBQLGdCQXNoQkdpUDtLQUlzQixNQUt6QkksK0JBWEdGO0lBSUw7WUFtS0VoUSxrQkFsS3VDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjFDeXNCOztZQUVBRjs7R0FRSjtZQUVDRztJQUUwQztLQUdOLElBRk45UCxlQUFKVixlQUVVLE1Ba0pwQ3VZLFlBL3ZCQWhVLGdCQTJtQjhCN0Q7S0FDNUIsV0FzRUYrUCwyQkF2RTBCelE7O1FBR0NFO0lBQ3pCLFdBcUpGSSxTQUZBbVksZ0JBcEoyQnZZO0dBQzRCO1lBRXZEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0EwQjZCLE1BcmtCaEM5UCxnQkFpakJHd1A7S0FtQjJCLE1Ba0g5QjRILFlBL3ZCQWhVLGdCQXluQkdxTTtLQW1CMEIsTUFNN0JwRixrQkExQkdxRjtLQW1CdUIsTUFZMUJLLGVBaENHSjtpQkFnQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXpvQjFCeWdCLGVBd29CYzdEO0tBQ1IsV0F6b0JONkQsZUF3b0JVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBaEJDd1A7aUJBV01qdEI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUE2RTFCeXFCLGNBOUVjN047S0FDUixXQW5vQk42RCxlQWtvQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVhDZ1I7SUFRTDtZQXVJRTFRLGtCQXRJd0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FWM0NtdEI7Ozs7Ozs7WUFPQVA7R0FxQko7WUFFQ2xGLHlCQUNGLHFCQUU0QztZQUUxQzBGO0lBQ0Y7O1NBRStCbFI7S0FDM0IsV0FBMkIsNEJBSzdCbVIsOEJBTjZCblI7O1FBRURFO0lBQzFCLFdBQTBCLDRCQTZCNUJrUix3QkE5QjRCbFI7R0FFd0I7WUFFcERpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBVzJCLE1BdG1COUJ2USxnQkErbEJHa1E7S0FLb0IsTUFrRnZCa0gsWUEvdkJBaFUsZ0JBc3FCR2dOO0tBTXFCLE1BTXhCZCwyQkFiR2U7SUFLTDtZQTBGRWxSLGtCQXpGc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FQekM0dEI7OztZQUdBSjs7R0FTSjtZQUVDYjtJQUVGO1NBQzZCelE7S0FDekIsV0FBeUIsNEJBdHJCM0J1RSxnQkFxckIyQnZFOztRQUVDRTtJQUMxQixXQUEwQiw0QkFFNUJrUix3QkFINEJsUjtHQUNvQztZQUVoRWtSO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXMkIsTUEvbkI5QjVRLGdCQXduQkd3UTtLQUtxQixNQXRzQnhCcE4sZUErckJHc047S0FNd0IsTUFNM0J0RyxrQkFiR3VHO0lBS0w7WUFpRUV4UixrQkFoRXNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUHpDaXVCOzs7WUFHQUg7O0dBU0o7WUFFQ3JHLHlCQUNGLHFCQUU4QztZQUU1Q2dEO0lBQWlFLHNCQUN0QyxpQkFDSSxrQkFDSjs7R0FBcUI7WUFFaEQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVU0QixNQXpwQi9CalIsZ0JBa3BCRzhRO2lCQU1vQ251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVB0Qm91QjtLQU1zQixNQWh1QnpCM04sZUF5dEJHNE47SUFLTDtZQXNDRTdSLGtCQXJDdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQMUNzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDNVA7SUFBb0UsOEJBQzNDOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQTZCO1lBRXBENkgsd0JBQ0YscUJBRXdDO1lBRXRDbEQsV0FBNEQvZ0IsR0FBSyxPQUFMQSxFQUFNO1lBRWxFMmQscUJBQWlFLHFCQUVqQjtZQUVoREg7SUFBbUU7O1dBQ2hDWixlQUFKVjtPQUM3QixXQUQ2QkEsSUFRL0J1WSxxQkFQb0R6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCNGM7O1dBRVJSLGlCQUFNLFdBQU5BOztXQUNPaUMsaUJBQUp4QjtPQUM1QixXQUQ0QkEsTUFLOUI0WCxxQkFKbUR6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCcWU7O1dBRURFLGlCQUFKeEI7T0FDM0IsV0FEMkJBLE1BRzdCMFgscUJBRmtEejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QnVlOztHQUM0QjtZQUU3RGtXLFlBQ0N4SztJQUFKLFlBQTJCO1FBQVkvTjtJQUFNLFdBQUssV0FBOUMrTixJQUFtQy9OO0dBQWtCO1lBRXREeVksZUFBa0QzMEIsR0FBSyxPQUFMQSxFQUFNO1lBRXhEd2MsU0FFQ3lOO0lBQUosSUFBNEIxcEIsZ0JBQW5CWTtJQUNSLFdBQW9CLFdBRGpCOG9CLElBQUs5b0IsTUFBbUJaO0dBQ3NDO1lBRS9EbWtCLGNBQStDMWtCLEdBQUssT0FBTEEsRUFBTTtZQUNyRDAwQixpQkFBMkIscUJBQXNDO1lBRTdEelk7SUFDNkQsdUJBQ3pDQyxlQUFNLFdBdHJCOUJDLGVBc3JCd0JEO1FBQ0tVLGVBQUpSO0lBQ3ZCLFdBRHVCQSxNQUd6Qkcsd0JBSDZCSztHQUMyQjtZQUV4REw7SUFFRiw4QkFDOEI7OztXQUNETCxlQUFNLFdBQU5BOztXQUNFVSxlQUFKUjtPQUN2QixXQUR1QkEsTUF4QnpCcVkscUJBeUI4Q3owQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7V0FFSEMsaUJBQU0sV0FBTkE7bUJBQ0RFLGlCQUFNLFdBaEIvQjJYLFVBZ0J5QjNYOztHQUEyQztZQUVwRXNYLFdBQVdyMEIsR0FBSSxPQUFBLDRCQTMyQmZ5ZSxXQTIyQld6ZSxHQUF3Qjs7OztPQXQrQi9CZ2Q7T0FZSk87T0EwR0E4QztPQUtBNUI7T0FRQWY7T0FlQTRDO09BWUEwRDtPQTRDQXZEO09BWUFnRTtPQWlDQUk7T0FXQUQ7T0FVQUQ7T0FPQXRIO09BR0ErSDtPQUtBSTtPQU9Bcko7T0FHQXVKO09BUUFHO09BbUNBUztPQUlBRjtPQUlBSztPQVlBSTtPQWdDQTdFO09BUUFrRjtPQVlBSTtPQThCQUU7T0FPQXRCO09BZUEzRTtPQVlBNEc7T0FvQkFFO09BWUFJO09BcUJBQztPQWVBakQ7T0FHQWtEO09BUUFHO09BK0JBekM7T0FLQTZDO09BSUFwQztPQVlBd0M7T0FrQkFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FLQThEO09BNEJBdUQ7T0FLQWQ7T0FJQTFDO09BaUJBUTtPQWVBUTtPQUtBcEI7T0FnQkE0QztPQWVBL0M7T0F1QkF0RTtPQWVBZ0w7T0FTQTNHO09BaUNBMkI7T0FLQTBGO09BU0FDO09Ba0JBVjtPQVFBVztPQWlCQTdGO09BS0FnRDtPQUtBM0U7T0FpQkF4SDtPQUtBMkY7T0FLQWxEO09BRUFwRDtPQUlBSDtPQVNBaVg7T0FHQUU7T0FFQW5ZO09BS0FrSTtPQUNBZ1E7T0FFSXpZO09BTUpNO09BVUE4WDtPQXAxQkEvVDtPQWxKSXREO09BME1KeUQ7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7WUMxTUl6RDtJQUNQO0tBR01DO0tBREFFO0tBREFDO0tBTzRCLE9BMFEvQkMsZ0JBL1FHSjtJQUVMLFdBTUVNLHFCQVZHSCxZQUNBRDtHQU9KO1lBRUNJO0lBQ2lFLDhCQXVHOUI7OztXQXRHVHJCLGVBQ3hCLFdBKzdCRk0sU0FGQW1ZLGdCQTk3QjBCelk7O1dBRUdFLGlCQUMzQixXQSs2QkZvQixjQWg3QjZCcEI7O09BSTBCO1FBRnRCcUI7UUFBSmI7UUFBSkM7UUFFOEIsT0FwQm5ERyxnQkFrQjZCUztRQUVWLE9BQUEsNEJBK0d2QkMsb0JBakg2QmQ7T0FDM0IsV0F5NkJGZSxjQTE2QnlCZDs7V0FHSUU7T0FDM0IsV0FBMkIsNEJBcUc3QjBCLFdBdEc2QjFCOztPQU92QjtRQUwrQmtEO1FBQUpaO1FBQUpoQjtRQUFKRztRQUtuQixPQTVCRnhCLGdCQXVCaUNpRDtRQUkvQixPQXVITkssYUEzSGlDakI7UUFHM0IsT0ErNkJOb1YsWUF6OEJJelgsaUJBdUJ5QnFCO09BQzNCLFdBdzVCRkMsZUF6NUJ5QkU7O09BU25CO1FBSHlCRDtRQUFKSTs7bUJBSWQzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQW5DMUJnZCxnQkFrQ2NKO1dBQ1IsV0E2NEJWMEIsZUE5NEJjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIeUJxQztPQUM3QixXQTlCRXZCLGdCQTZCdUIyQjs7T0FTb0I7UUFEaEJEO1FBQUpFO1FBQ29CLE9BQUEsNEJBcUYvQ0gsV0F0RitCQztPQUM3QixXQXRDRTFCLGdCQXFDdUI0Qjs7T0FHa0I7UUFEaEJDO1FBQUpDO1FBQ29CLE9BQUEsNEJBbUY3Q0wsV0FwRjZCSTtPQUMzQixXQXhDRTdCLGdCQXVDcUI4Qjs7V0FFQ0U7T0FDeEIsV0FBd0IsNEJBMUN0QmhDLGlCQXlDc0JnQzs7T0FJTztRQUZFRDtRQUFKRztRQUVFLE9BNDVCakN1VixZQXo4Qkl6WCxpQkEyQytCK0I7T0FDakMsV0FrNkJGdkMsU0FGQW1ZLGdCQWo2QitCelY7O1dBR0VELGlCQUFKRztPQUMzQixZQUQyQkEsTUEyNUI3QnFWLFlBejhCSXpYLGlCQThDNkJpQzs7T0FTM0I7UUFQMEJFO1FBQUpJO1FBT3RCLE9BazVCTmtWLFlBejhCSXpYLGlCQWdENEJtQzs7bUJBR25CbmY7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0FyRG5DZ2QsZ0JBb0RjSjtXQUNSLFdBeTVCVkosU0FGQW1ZLGdCQXg1QmN6WTtVQUM0QztPQUp4RCxZQUNJLGtDQUZzQnFEOztPQVNtQjtRQURoQkQ7UUFBSkU7UUFDb0IsT0FxNUIvQ2hELFNBRkFtWSxnQkFwNUIrQnJWO09BQzdCLFlBekRFdEMsZ0JBd0R1QndDOztPQUkwQjtRQUZmQztRQUFKQztRQUFKQztRQUV1QixPQTVEakQzQyxnQkEwRGtDeUM7UUFFYixPQWs1QnpCakQsU0FGQW1ZLGdCQWw1QmtDalY7T0FDaEMsWUEzREUxQyxnQkEwRDBCMkM7O1dBR0pFO09BQ3hCLFlBQXdCLDRCQTlEdEI3QyxpQkE2RHNCNkM7O09BSW1CO1FBRkxLO1FBQUpOO1FBQUpHO1FBRWEsT0F3NEI3QzBVLFlBejhCSXpYLGlCQStEb0NrRDtRQUVmLE9BakVyQmxELGdCQStEZ0M0QztPQUNsQyxZQWhFRTVDLGdCQStENEIrQzs7T0FJa0IsSUFEaEJELGtCQUFKTSxrQkFDb0IsT0FuRTlDcEQsZ0JBa0U4QjhDO09BQ2hDLFlBbkVFOUMsZ0JBa0UwQm9EOztPQUdpQixJQURoQkQsa0JBQUpLLGtCQUNvQixPQXJFM0N4RCxnQkFvRTJCbUQ7T0FDN0IsWUFyRUVuRCxnQkFvRXVCd0Q7O09BUXJCO1FBTm1DUjtRQUFKZ0s7UUFBSnRKO1FBQUpIO1FBQUpLO1FBTW5CLE9BNUVGNUQsZ0JBc0VxQ2dEO1FBS25DLE9BMkNOSyxvQkFoRHFDMko7UUFJL0IsT0ExRUZoTixnQkFzRTZCMEQ7UUFHM0IsT0F6RUYxRCxnQkFzRXlCdUQ7T0FDM0IsWUEyRUZELGFBNUV5Qk07O09BUTJCLElBRGhCRCxrQkFBSkcsa0JBQ29CLE9BNEhwREwsZUE3SG9DRTtPQUNsQyxZQTlFRTNELGdCQTZFNEI4RDs7T0FJd0I7UUFGcEJNO1FBQUpQO1FBQUpHO1FBRTRCLE9BeUh4RFAsZUEzSG9DVztRQUVYLE9BdzNCekJxVCxZQS92QkFoVSxnQkEzSGdDSTtPQUM5QixZQWhGRTdELGdCQStFd0JnRTs7T0FJa0I7UUFEaEJDO1FBQUpDO1FBQ29CLE9BMjNCOUMxRSxrQkEzM0I0RHhjLEdBQUssT0FBTEEsRUFBTSxHQURwQ2loQjtPQUM1QixZQW5GRWpFLGdCQWtGc0JrRTs7V0FFRkMsa0JBQ3RCLFlBeTNCRjNFLFNBRkFtWSxnQkF4M0J3QnhUOztPQUdrQyxJQUR0QkUsa0JBQUpDLGtCQUMwQixPQXZGdER0RSxnQkFzRmdDcUU7T0FDbEMsWUF1M0JGN0Usa0JBdjNCOEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEcEJzaEI7OztRQUVIRzs7bUJBR2pCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BN0ZoQ2dkLGdCQTRGYUo7V0FDUixXQWkzQlRKLGtCQWozQndCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7VUFDMEM7T0FKckQsWUFDRSxrQ0FGeUJ1Rjs7T0FTdUI7UUFGYndQO1FBQUp6UDtRQUFKRztRQUVxQixPQWpHaEQzRSxnQkErRm1DaVU7UUFFUixPQTJXL0IxUCxpQkE3V21DQztPQUNqQyxZQTgyQkZoRixrQkE3MkJtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNMmhCOztPQUtLLElBRkVFLGtCQUFKRCxrQkFFRSxPQXBHaEM1RSxnQkFrR2tDNkU7T0FDcEMsWUFnc0JGSCwyQkFqc0JrQ0U7O1dBR1BFLGtCQUN6QixZQXRHRTlFLGdCQXFHdUI4RTs7V0FFRkMsa0JBQU0sWUF2RzNCL0UsZ0JBdUdxQitFOztPQUVxQjtRQURoQkU7UUFBSkM7UUFDb0IsT0FnMkI5Q3VTLFlBL3ZCQWhVLGdCQWxHOEJ3QjtPQUM1QixZQXpHRWpGLGdCQXdHc0JrRjs7V0FFQ0Msa0JBQ3pCLFlBeVJGSCxxQkExUjJCRzs7T0FHNEIsSUFEdEJDLGtCQUFKQyxrQkFDMEIsT0E3R25EckYsZ0JBNEc2Qm9GO09BQy9CLFlBaTJCRjVGLGtCQWoyQjJDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHBCcWlCOztXQUVKRSxrQkFBTSxZQThWL0JoQixpQkE5VnlCZ0I7O09BRytCO1FBRnRCdVM7UUFBSjVEO1FBQUp6TztRQUU4QixPQWpIcER6RixnQkErRzhCOFg7UUFFTixPQTYxQjVCdFksU0FGQW1ZLGdCQTcxQjhCekQ7T0FDNUIsWUF3bkJGM0osbUJBem5CMEI5RTttQkFHSXVPLGtCQUM1QixZQTJpQkZ0TyxlQTVpQjhCc087O0dBRWtDO1lBRWhFM1EsMkJBQzZELHFCQUVuQjtZQUUxQzVCO0lBQ0g7S0FBc0RuRTtLQUF6QkM7S0FBdkJDO0tBSW1CLE9BaElsQndDLGdCQTRIK0MxQztLQUczQixPQTAwQnhCbWEsWUF6OEJJelgsaUJBNEhzQnpDO0lBQzVCLFdBcUJFK0YsYUF0Qkc5RjtHQUtKO1lBRUNrRDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVEyQixPQXFJOUJyRyxnQkEzSUdrRztLQUtxQixPQTdJcEJ2RyxnQkF1SUR5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FHTXNEO0tBREFFO0tBREFDO0tBTzRCLE9Bd0gvQjFHLGdCQTdIR3VHO0lBRUwsV0FNRUksa0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDRSw4QkFDeUI7OztXQUNIOUgsZUFDdEIsV0E0eUJGTSxrQkE1eUJ1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQURyQmtjOztPQUdvQjtRQURiVTtRQUFKUjtRQUNpQixPQTB5QjVDSSxrQkExeUIwRHhjLEdBQUssT0FBTEEsRUFBTSxHQURqQzRjO09BQzdCLFdBbEJGMEQsYUFpQjJCbEU7O1dBRUVTLGlCQUMzQixXQTB4QkZXLGNBM3hCNkJYOztPQUdtQixJQURkd0IsaUJBQUp0QixpQkFDa0IsT0F3eEJoRFMsY0F6eEJrQ2E7T0FDaEMsV0F3eEJGYixjQXp4QjhCVDs7V0FFSnlCO09BQ3hCLFdBQXdCLDRCQXhCMUI4QixjQXVCMEI5Qjs7T0FJTztRQUZFRDtRQUFKSTtRQUVFLE9BNHhCakM4VixZQXZ6QkFuVSxjQXlCbUMvQjtPQUNqQyxXQWt5QkYvQixTQUZBbVksZ0JBanlCK0JoVzs7V0FHRUQsaUJBQUpFO09BQzNCLFdBRDJCQSxNQTJ4QjdCNlYsWUF2ekJBblUsY0E0QmlDNUI7O09BUzNCO1FBUDBCRztRQUFKQztRQU90QixPQTh2Qk5tRixpQkFyd0JnQ3BGOzttQkFHbkI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQW5DdkNzZ0IsYUFrQ2tCMUQ7V0FDUixXQXl4QlZKLFNBRkFtWSxnQkF4eEJjelk7VUFDeUM7T0FKckQsV0FDSSxrQ0FGc0I0Qzs7V0FRRkU7T0FDeEIsV0FBd0IsNEJBdkMxQnNCLGNBc0MwQnRCOztPQUdlLElBRGJELGlCQUFKRyxpQkFDaUIsT0F6Q3pDb0IsYUF3QzRCdkI7T0FDMUIsV0F6Q0Z1QixhQXdDd0JwQjs7T0FHeUIsSUFEYkQsaUJBQUpHLGlCQUNpQixPQWFqRHFCLGVBZG9DeEI7T0FDbEMsWUEzQ0ZxQixhQTBDZ0NsQjs7V0FFUEcsa0JBQ3ZCLFlBK3dCRi9DLFNBRkFtWSxnQkE5d0J5QnBWOztXQUVBQyxrQkFBTSxZQTlDL0JjLGFBOEN5QmQ7O1dBQ0VHO09BQ3pCLFlBNHdCRm5ELGtCQTV3QjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCMmY7O1dBRUdFLGtCQUM1QixZQWxERlMsYUFpRDhCVDs7V0FFQUUsa0JBQzVCLFlBd2RGMkMsZUF6ZDhCM0M7O09BR3dCLElBRHhCWixpQkFBSmlCLGtCQUM0QixPQXREdERFLGFBcUQ4Qm5CO09BQzVCLFlBc3dCRjNDLFNBRkFtWSxnQkFyd0IwQnZVOztHQUM0QztZQUV0RUs7SUFDSDtLQUdNNEQ7S0FEQUU7S0FEQUM7S0FPNEIsT0FnRS9CbkgsZ0JBckVHZ0g7SUFFTCxXQU1FSSxvQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUMrRCw4QkFDcEM7OztXQUNIdkksZUFBTSxXQUFOQTs7T0FHbUI7UUFGUnVCO1FBQUpiO1FBQUpSO1FBRWdCLE9BbEIzQ3FFLGVBZ0JtQ2hEO1FBRVgsT0FsQnhCZ0QsZUFnQitCN0Q7T0FDN0IsV0FxdEJGMEIsZUF0dEIyQmxDOztXQUdEUztPQUN4QixXQUF3Qiw0QkFwQjFCNEQsZ0JBbUIwQjVEOztPQUlPO1FBRkR3QjtRQUFKdEI7UUFFSyxPQUFBLDRCQXZCakMwRCxnQkFxQmdDcEM7T0FDOUIsV0E4dUJGN0IsU0FGQW1ZLGdCQTd1QjRCNVg7O09BS1EsSUFGSndCLGlCQUFKQyxpQkFFUSxPQWl0QnBDeUYsaUJBbnRCZ0MxRjtPQUM5QixXQUNHLDRCQXdDTG9HLG1CQTFDNEJuRzs7T0FLSztRQUZGRTtRQUFKQztRQUVNLE9BQUEsNEJBN0JqQzhCLGdCQTJCK0IvQjtPQUM3QixXQXd1QkZsQyxTQUZBbVksZ0JBdnVCMkJoVzs7V0FHSUUsaUJBQUpEO09BQ3pCLFdBL0JGNkIsZUE4QjJCN0IsT0FBSUM7O09BTXpCO1FBSitCUTtRQUFKTjtRQUFKRDtRQUl2QjtVQTJ0Qk4yVjtxQkEzdEJ1QnowQixHQUFLLE9BQUEsNEJBNHNCNUIrZ0IsWUE1c0J1Qi9nQixHQUEwQjtZQUpacWY7UUFHL0IsT0F3c0JONEUsaUJBM3NCaUNsRjtPQUMvQjtlQUNJLDRCQXNCTjZGLGdCQXhCNkI5Rjs7OztPQU93QjtRQUZ2Qkc7UUFBSkQ7UUFFMkIsT0F2Q3JEeUIsZUFxQzhCeEI7d0JBRVhqZixHQUFLLE9BNnRCeEJ3YyxrQkE3dEJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQUF6QkEsR0FBNEI7T0FEN0MsV0FDRyxrQ0FGcUJnZjs7V0FHRUUsaUJBQzFCLFdBSUYyRixrQkFMNEIzRjttQkFFRUUsaUJBQzVCLFlBeWFGc0QsZUExYThCdEQ7O0dBQ21CO1lBRWpEeUYsa0JBRUM3a0I7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGM7a0JBSU1BO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BckRqQ3lnQixlQW9EWTdEO0tBQ1IsV0Erc0JKSixTQUZBbVksZ0JBOXNCUXpZO0lBQzJDO0lBSG5ELFdBQUEsa0NBRk1VO0lBQ1IsV0FtdEJFSixTQUZBbVksZ0JBbHRCRXpZO0dBTUk7WUFFTjBJO0lBQ0Y7S0FNUTtNQUwyQjNFO01BQUp4QztNQUFKYjtNQUFKVjtNQUtmLE9BQUEsNEJBL0ROdUUsZ0JBMERpQ1I7TUFJM0IsT0E0c0JOeVUsVUFodEI2QmpYO01BR3ZCLE9BWU5KLGdCQWZ5QlQ7S0FDdkIsV0F5c0JGSixTQXBCQXVFLFlBdHJCcUI3RTs7UUFNR0U7SUFBTSxXQWhFOUJxRSxlQWdFd0JyRTtHQUErQztZQUV2RXVJO0lBQ0U7S0FHaUQ7TUFGdEJsSDtNQUFKYjtNQUFKVjtNQUU4QixPQXRFbkR1RSxlQW9FNkJoRDtNQUVFLE9BRy9CSixnQkFMeUJUO0tBQ3ZCLFdBK3JCRkosa0JBOXJCbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGSmtjOztRQUdHbGM7SUFBSyxXQXZFN0J5Z0IsZUF1RXdCemdCO0dBQTZDO1lBRXJFcWQsZ0JBQ0NyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEIsZUFDQ3BsQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixPQUV6QndsQixhQUhNNUk7SUFDUixXQXFyQkVKLGtCQXJyQmF4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NKO0lBQWdFOztXQUM1Q3RKLGVBQU0sV0FNMUJDLGVBTm9CRDs7V0FDQUUsaUJBQU0sV0ErUDFCcUosZUEvUG9Ccko7O1dBQ0FTLGlCQUFNLFdBcEYxQjRELGVBb0ZvQjVEOztPQUVrQjtRQURiRDtRQUFKRztRQUNpQixPQXlxQnRDMFgsWUF6OEJJelgsaUJBK1JxQko7T0FDdkIsV0E5SUYwRCxhQTZJcUJ2RDs7R0FDZ0Q7WUFFckVaLGVBQ0NuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFnQ0MscUJBQTFCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUEwQkQ7R0FJOUI7WUFFQ0U7SUFFRjs7T0FFZ0QsSUFEaEJqSixlQUFKVixlQUNvQixPQTlCOUNtQixnQkE2QjhCVDtPQUM1QixXQWpURUksZ0JBZ1RzQmQ7O09BR21CO1FBRGRtQztRQUFKakM7UUFDa0IsT0FBQSw0QkFoTDdDc0Isb0JBK0srQlc7T0FDN0IsV0F5b0JGVixjQTFvQjJCdkI7O1dBRUdTLGlCQUM1QixXQTBtQkZpSix1QkEzbUI4QmpKOztPQUlQO1FBRk8wQjtRQUFKeEI7UUFFSCxPQUFBLDRCQW1nQnZCZ0osdUJBcmdCOEJ4SDtPQUM1QixXQXFvQkZaLGNBdG9CMEJaOztXQUdDeUIsaUJBQ3pCLFdBa2RGd0gsb0JBbmQyQnhIOztXQUVHRyxpQkFDNUIsV0F1ZUYrQywyQkF4ZThCL0M7O1dBRUhDLGlCQUN6QixXQStIRnNILG9CQWhJMkJ0SDs7V0FFR0U7T0FDNUIsV0FBNEIsNEJBNkg5Qm9ILHFCQTlIOEJwSDs7V0FFRkUsaUJBQzFCLFdBMmFGbUgsNkJBNWE0Qm5IOztXQUVIRSxpQkFDdkIsV0FxWkY2SCxzQkF0WnlCN0g7O1dBRUNFO09BQ3hCLFlBQXdCLDRCQWMxQmdILHdCQWYwQmhIOztXQUVLRztPQUM3QjtlQUE2Qiw0QkE4UC9COEcsNkJBL1ArQjlHOztXQUVIQyxrQkFDMUIsWUFNRjhHLHlCQVA0QjlHOztXQUVFRyxrQkFDNUIsWUF0REZ5RixlQXFEOEJ6Rjs7T0FHb0IsSUFEZmpCLGlCQUFKbUIsa0JBQ21CLE9BM0RsRHhDLGdCQTBEbUNxQjtPQUNqQyxZQWdWRmdFLGVBalYrQjdDOztHQUNzQztZQUVyRXlHLHlCQUVDdG1CO0lBQUssT0FzWE51bUIsbUJBNVBBaEYsa0JBMUhDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0E2VU53bUIsaUJBM1VBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUNIO0tBR01DO0tBREFDO0tBREFDO0tBTzJCLE9BOUU5QnZKLGdCQXlFR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFDaUU7O09BR2hDO1FBRkZqSztRQUFKVjtRQUVNLE9BQUEsNEJBOUpqQ3VFLGdCQTRKK0I3RDtPQUM3QixXQXVtQkZKLFNBRkFtWSxnQkF0bUIyQnpZOztXQUdFRSxpQkFDM0IsV0EwQkY0RixxQkEzQjZCNUY7O09BT3ZCO1FBTDhCNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtsQixPQXhCTjRKLGdCQW1Cb0N4RztRQUk5QixPQTdOTkssYUF5TmdDN0M7UUFHMUIsT0EybEJOZ1gsWUF6OEJJelgsaUJBMld3QnFCO09BQzFCLFdBb2tCRkMsZUFya0J3QnpCOztPQVNsQjtRQUh3QjBCO1FBQUp4Qjs7bUJBSWIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXZYMUJnZCxnQkFzWGNKO1dBQ1IsV0F5akJWMEIsZUExakJjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FId0JxQztPQUM1QixXQTFCRmtJLGdCQXlCMEIxSjs7T0FVNkI7UUFGdkJzQztRQUFKWDtRQUFKRjtRQUUrQixPQW5DdkRpSSxnQkFpQ2dDcEg7UUFFVCxPQUFBLDRCQXhQdkIzQixvQkFzUDRCZ0I7T0FDMUIsV0Fra0JGZixjQW5rQndCYTs7T0FJMkIsSUFEaEJLLGlCQUFKRixpQkFDb0IsT0FrTm5EbUksZ0JBbk5tQ2pJO09BQ2pDLFdBckNGNEgsZ0JBb0MrQjlIOztXQUVGQyxpQkFDM0IsV0ErUkY4RCxlQWhTNkI5RDs7T0FJNkI7UUFGdkJ0TjtRQUFML1E7UUFBTGdSO1FBRWlDLE9BMUMxRGtWLGdCQXdDbUNuVjtRQUVOLE9BNGtCN0JrTCxTQUZBbVksZ0JBNWtCOEJwMEI7T0FDNUIsV0F1V0ZnbkIsbUJBeFd5QmhXOztHQUVvRDtZQUU3RXlRO0lBRUg7S0FBaUNnRjtLQUEzQkM7S0FHeUIsT0FBQSw0QkFHNUJDLGtCQU44QkY7SUFDaEMsV0FyUEUxRyxhQW9QRzJHO0dBSUo7WUFFQ0M7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQWxJOUJoSyxnQkE2SEc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztPQUs3RDtRQUo4QjdKO1FBQUpiO1FBQUpWO3dCQUlLbGMsR0FBSyxPQUFMQSxFQUFNO1FBQWpDLE9BMmlCTnkwQiwyQixPQUtBalksd0JBcGpCb0NpQjtRQUc5QixPQXJFTmdKLGdCQWtFZ0M3SjtPQUM5QixXQTZVRjJLLG1CQTlVNEJyTDs7T0FNMUI7UUFEcUJFO1FBRU5pRCxPQUZNakQ7UUFFVmlDLE9BRlVqQztRQUVkUyxPQUZjVDtRQUtoQixPQWtCUG9MLHNCQXJCaUJuSTtRQUVWLE9Ba2ZQb0ksa0JBcGZhcEo7T0FEWCxlQThpQkY3QixrQkE1aUJxQnhjLEdBQUssT0FBTEEsRUFBTSxHQURsQjZjOztPQUtQO1FBRHdCRTtRQUVUMEMsT0FGUzFDO1FBRWJ3QixPQUZheEI7UUFFakJ5QixPQUZpQnpCO1FBS25CLE9BWVB5SyxzQkFmaUIvSDtRQUVWLE9BbWJQaUksa0JBcmJhbko7T0FEWCxlQXdpQkYvQixrQkF0aUJxQnhjLEdBQUssT0FBTEEsRUFBTSxHQURsQndlOztPQUtQO1FBRDRCRztRQUVqQkQsT0FGaUJDO1FBRXJCQyxPQUZxQkQ7UUFHTCxPQXBPekI4QixlQW1PYS9CO09BRFgsZUFsT0YrQixlQW1PUzdCOztXQUVzQkUsaUJBQzdCLFdBaGJFOUIsZ0JBK2EyQjhCOztXQUVGRSxpQkFDM0IsV0E1SkZvRyxlQTJKNkJwRzttQkFFQUUsaUJBQzNCLFdBME9Gd0QsZUEzTzZCeEQ7O0dBQ21CO1lBRWhEc0k7SUFDbUUsdUJBQ3hDdEwsZUFDekIsV0EvT0Z1RSxlQThPMkJ2RTtJQUd5QixJQURuQlUsZUFBSlIsaUJBQ3VCLE9BM2JoRFksZ0JBMGI2Qko7SUFDL0IsV0E2U0YySyxtQkE5UzZCbkw7R0FDMEM7WUFFdkU4SjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVEyQixPQXJMOUIxSyxnQkErS0d3SztLQUtxQixPQUt4QnRHLGlCQVhHdUc7SUFJTDtZQXlnQkV0TCxrQkF4Z0JzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU56QytuQjs7O1lBR0FIO0dBT0o7WUFFQ3JHO0lBQ0g7S0FHTXlHO0tBREFDO0tBREFDO0tBTzRCLE9BbE0vQjdLLGdCQTZMRzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O1dBQ3pDak0sZUFDeEIsV0FtZkZNLFNBRkFtWSxnQkFsZjBCelk7O1dBRUlFLGlCQUM1QixXQTNMRkQsZUEwTDhCQzs7T0FNeEI7UUFKK0JxQjtRQUFKYjtRQUFKQztRQUl2QixPQXRCTjBFLGlCQWtCcUM5RDtRQUcvQixPQXdlTmdYLFlBN2RBcE0sa0JBZGlDekw7T0FDL0IsV0ErZUZKLGtCQTllb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGRzZjOztPQU1tQixJQURqQndCLGlCQUFKdEIsaUJBQ3FCLE9BeEJoRHdFLGlCQXVCK0JsRDtPQUM3QixXQXhCRmtELGlCQXVCMkJ4RTs7T0FHMEIsSUFEakJ3QixpQkFBSkMsaUJBQ3FCLE9BTXJENkosaUJBUG9DOUo7T0FDbEMsV0ExQkZnRCxpQkF5QmdDL0M7O1dBRUxHLGlCQUN6QixXQXhlRTNCLGdCQXVldUIyQjttQkFFR0MsaUJBQzVCLFdBb0xGOEQsZUFyTDhCOUQ7O0dBQ21CO1lBRWpEeUo7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU80QixPQWxPL0JuTCxnQkE2TkdpTDtJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztXQUN6Q3ZNLGVBQ3hCLFdBbWRGTSxTQUZBbVksZ0JBbGQwQnpZOztXQUVJRSxpQkFDNUIsV0ErQkZxSixlQWhDOEJySjs7T0FNeEI7UUFKK0JxQjtRQUFKYjtRQUFKQztRQUl2QixPQXRCTndMLGlCQWtCcUM1SztRQUcvQixPQXdjTmdYLFlBN2RBcE0sa0JBa0JpQ3pMO09BQy9CLFdBK2NGSixrQkE5Y29CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7T0FPSDtRQUZJd0I7UUFBSnRCO1FBRUEsT0FBQSw0QkFRMUIyTCxzQkFWOEJySztPQUM1QixXQXhCRmdLLGlCQXVCMEJ0TDs7V0FHQ3lCLGlCQUN6QixXQTNERitDLGlCQTBEMkIvQzs7V0FFR0csaUJBQzVCLFdBcUpGK0QsZUF0SjhCL0Q7O1dBRUpDLGlCQUN4QixXQW1jRnBDLFNBRkFtWSxnQkFsYzBCL1Y7O0dBQzRCO1lBRXREOEo7SUFDaUU7O09BR2hDLElBRkY5TCxlQUFKVixlQUVNLE9BMFNqQzZKLHNCQTVTK0JuSjtPQUM3QixXQThiRkosU0FGQW1ZLGdCQTdiMkJ6WTs7T0FLTTtRQUZBbUM7UUFBSmpDO1FBRUksT0EwYmpDSSxTQUZBbVksZ0JBMWJpQ3RXO09BQy9CLFdBMmJGN0IsU0FGQW1ZLGdCQTFiNkJ2WTs7T0FLSTtRQUZHbUM7UUFBSjFCO1FBRUMsT0FvU2pDa0osc0JBdFNvQ3hIO09BQ2xDLFdBd2JGL0IsU0FGQW1ZLGdCQXZiZ0M5WDs7T0FLQztRQUZFNkI7UUFBSjNCO1FBRUUsT0FvYmpDUCxTQUZBbVksZ0JBcGJtQ2pXO09BQ2pDLFdBcWJGbEMsU0FGQW1ZLGdCQXBiK0I1WDs7R0FFNkI7WUFFNUQwSSxlQUNDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQWdDQyxxQkFBMUJDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTBCRDtHQUk5QjtZQUVDRTtJQUVGOztXQUM0QjVNLGVBQ3hCLFdBb1hGNEosdUJBclgwQjVKOztPQUlIO1FBRk9VO1FBQUpSO1FBRUgsT0FBQSw0QkE2UXZCMkosdUJBL1E4Qm5KO09BQzVCLFdBK1lGZSxjQWhaMEJ2Qjs7V0FHQ1MsaUJBQ3pCLFdBNE5GbUosb0JBN04yQm5KOztXQUVHRSxpQkFDNUIsV0FpUEYyRSwyQkFsUDhCM0U7O1dBRUh5QixpQkFDekIsV0F5TUZ1Syx3QkExTTJCdks7O1dBRUdHO09BQzVCLFdBQTRCLDRCQXVNOUJvSyx5QkF4TThCcEs7O1dBRUZDLGlCQUMxQixXQXFMRnVILDZCQXRMNEJ2SDs7V0FFSEUsaUJBQ3ZCLFdBK0pGaUksc0JBaEt5QmpJOztXQUVHRSxpQkFDMUIsV0F3SUZpSyx5QkF6STRCaks7O1dBRUZFO09BQ3hCLFdBQXdCLDRCQWExQmdLLHdCQWQwQmhLOztXQUVLRTtPQUM3QjtlQUE2Qiw0QkFNL0JpSCw2QkFQK0JqSDs7V0FFREcsa0JBQzVCLFlBNVNGNkYsZUEyUzhCN0Y7O09BR29CLElBRGZsQixpQkFBSm1CLGtCQUNtQixPQWpUbERuQyxnQkFnVG1DZ0I7T0FDakMsWUEwRkZxRSxlQTNGK0JsRDs7R0FDc0M7WUFFckU2Ryw0QkFHQ3JtQjtJQUFLLE9BMEZOd21CLGlCQXBGQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQXNGTndtQixpQkFwRkFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBQ0g7S0FHTXFDO0tBREFDO0tBREFDO0tBTzRCLE9BclUvQmhNLGdCQWdVRzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDaUU7O09BR2hDO1FBRkQxTTtRQUFKVjtRQUVLLE1BQUEsNEJBclpqQ3VFLGdCQW1aZ0M3RDtPQUM5QixXQWdYRkosU0FGQW1ZLGdCQS9XNEJ6WTs7V0FHRUUsaUJBQzVCLFdBWUZtTixxQkFiOEJuTjs7T0FJYTtRQUZScUI7UUFBSlk7UUFBSnhCO1FBRWdCLE1BckIzQ2lLLGdCQW1CbUNySjtRQUVYLE9BMVp4QmdELGVBd1orQnBDO09BQzdCLFdBNlVGQyxlQTlVMkJ6Qjs7V0FHR0UsaUJBQzVCLFdBd0RGMkYsZUF6RDhCM0Y7O09BTXhCO1FBSjhCbVk7UUFBTDMwQjtRQUFMZ1I7UUFJcEIsT0E1Qk51VixnQkF3Qm9Db087UUFHOUIsT0FvV04xWSxTQUZBbVksZ0JBclcrQnAwQjtPQUM3QixXQWdJRmduQixtQkFqSTBCaFc7O0dBSUM7WUFFM0JnWTtJQUVIO0tBQWlDQztLQUEzQkM7S0FHeUIsTUFBQSw0QkFHNUJDLHVCQU44QkY7SUFDaEMsV0F0YUUvSSxlQXFhR2dKO0dBSUo7WUFFQ0M7SUFFSDtLQUdNQztLQURBQztLQURBQztLQU80QixNQTVXL0J4TSxnQkF1V0dzTTtJQUVMLFdBTUVHLDJCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBRUY7O1dBQzhCNU4sZUFDMUIsV0F2REY0SyxnQkFzRDRCNUs7O09BRzFCO1FBRHNCRTtRQUVINkQsS0FGRzdEO1FBRVBxQixLQUZPckI7UUFFWFEsS0FGV1I7UUFFZlMsT0FGZVQ7UUFNakIsTUFuY1BxRSxlQSticUJSO1FBR2QsTUFtRFA4SixrQkF0RGlCdE07UUFFVixNQTBRUGdLLGtCQTVRYTdLO09BRFgsZUFzVUZKLGtCQXBVcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEI2Yzs7T0FNUDtRQUR5QkU7UUFFTmlOLE9BRk1qTjtRQUVWc0MsT0FGVXRDO1FBRWRzQixPQUZjdEI7UUFFbEJ5QixPQUZrQnpCO1FBTXBCLE1BMWNQMEQsZUFzY3FCdUo7UUFHZCxNQTRDUEQsa0JBL0NpQjFLO1FBRVYsTUEwTVBxSSxrQkE1TWFySjtPQURYLGVBK1RGN0Isa0JBN1RxQnhjLEdBQUssT0FBTEEsRUFBTSxHQURsQndlOztPQU1QO1FBRDZCRztRQUVsQkosT0FGa0JJO1FBRXRCQyxPQUZzQkQ7UUFHTixNQTljekI4QixlQTZjYWxDO09BRFgsZUE1Y0ZrQyxlQTZjUzdCOztXQUVxQkUsaUJBQzVCLFdBcFlGc0csZUFtWThCdEc7bUJBRUFFLGlCQUM1QixXQUVGMEQsZUFIOEIxRDs7R0FDbUI7WUFFakQwRCxlQUNDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE1BdFl6QndsQixhQXFZTTVJO0lBQ1IsV0E2U0VKLGtCQTdTYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBa0IyQixNQXphOUJsTixnQkE0Wkc2TTtLQVdxQixNQUFBLFdBbEJ2QkQsSUFLRUc7S0FZcUIsTUFxUnhCNU4sa0JBclJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWJ6Q3FxQjtpQkFTTXJxQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQW1PMUJ5cUIsY0FwT2M3TjtLQUNSLFdBN2VONkQsZUE0ZVV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVRDb087SUFNTCxXQWNFUCxrQkFyQkdRLDBCQUlBSjtHQWVKO1lBRUNKLHlCQUNGLHFCQUVnRDtZQUU5Q2QseUJBRUNqcEI7SUFBSyxPQUVOdW1CLG1CQTVOQThCLGtCQTBOQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPNkIsTUFuY2hDdk4sZ0JBOGJHcU47SUFFTCxXQUMyQixXQVB4QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQ7SUFFSDtLQUlNOEQ7S0FEQUM7S0FEQUM7S0FEQWtLO0tBUzZCLE1BbGRoQzVYLGdCQTRjR3dOO0tBSTJCLE1BSzlCdEQsbUJBWEd3RDtJQUlMLFdBNk9Fdk8sU0FGQW1ZLGdCQWhQR00saUJBRUFuSztHQVFKO1lBRUN2RCwwQkFDMkQscUJBRW5CO1lBRXhDcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRNEIsTUF0ZS9CL04sZ0JBZ2VHNk47S0FLc0IsTUFpTnpCdUosWUE3ZEFwTSxrQkFzUUc4QztJQUlMO1lBd05FM08sa0JBdk51Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4xQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2xDO0lBRUg7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE1BcmY5QnZPLGdCQStlR3FPO0tBS3FCLE1BM1J4QnJELGlCQXFSR3NEO0lBSUwsV0F5TUVuUCxrQkF4TXNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTnpDNHJCLHFCQUdBSDtHQU9KO1lBRUN6RjtJQUVIO0tBS01nRztLQURBRTtLQURBQztLQURBQztLQURBQztLQWlCOEIsTUE3Z0JqQ2hQLGdCQWdnQkcyTztLQVkyQixNQTZEOUJ0RSxrQkExRUd3RTtLQVlEO09BQUE7MEJBS0Z4Syw0QkFsQkd5SztpQkFRTW5zQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQStIMUJ5cUIsY0FoSWM3TjtLQUNSLFdBamxCTjZELGVBZ2xCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBUkNrUTtJQUtMLFdBeUxFNVAsU0FGQW1ZLGdCQTdMR3RJO0dBa0JKO1lBRUMzSztJQUVIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVM0QixNQTVoQi9CcFAsZ0JBc2hCR2lQO0tBSXNCLE1BS3pCSSwrQkFYR0Y7SUFJTDtZQW1LRWhRLGtCQWxLdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUN5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRTBDO0tBR04sSUFGTjlQLGVBQUpWLGVBRVUsTUFrSnBDdVksWUEvdkJBaFUsZ0JBMm1COEI3RDtLQUM1QixXQXNFRitQLDJCQXZFMEJ6UTs7UUFHQ0U7SUFDekIsV0FxSkZJLFNBRkFtWSxnQkFwSjJCdlk7R0FDNEI7WUFFdkQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTBCNkIsTUFya0JoQzlQLGdCQWlqQkd3UDtLQW1CMkIsTUFrSDlCNEgsWUEvdkJBaFUsZ0JBeW5CR3FNO0tBbUIwQixNQU03QnBGLGtCQTFCR3FGO0tBbUJ1QixNQVkxQkssZUFoQ0dKO2lCQWdCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1Bem9CMUJ5Z0IsZUF3b0JjN0Q7S0FDUixXQXpvQk42RCxlQXdvQlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FoQkN3UDtpQkFXTWp0QjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQTZFMUJ5cUIsY0E5RWM3TjtLQUNSLFdBbm9CTjZELGVBa29CVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBWENnUjtJQVFMO1lBdUlFMVEsa0JBdEl3Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVYzQ210Qjs7Ozs7OztZQU9BUDtHQXFCSjtZQUVDbEYseUJBQ0YscUJBRTRDO1lBRTFDMEY7SUFDRjs7U0FFK0JsUjtLQUMzQixXQUEyQiw0QkFLN0JtUiw4QkFONkJuUjs7UUFFREU7SUFDMUIsV0FBMEIsNEJBNkI1QmtSLHdCQTlCNEJsUjtHQUV3QjtZQUVwRGlSO0lBR0g7S0FLTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUU7S0FXMkIsTUF0bUI5QnZRLGdCQStsQkdrUTtLQUtvQixNQWtGdkJrSCxZQS92QkFoVSxnQkFzcUJHZ047S0FNcUIsTUFNeEJkLDJCQWJHZTtJQUtMO1lBMEZFbFIsa0JBekZzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRUY7U0FDNkJ6UTtLQUN6QixXQUF5Qiw0QkF0ckIzQnVFLGdCQXFyQjJCdkU7O1FBRUNFO0lBQzFCLFdBQTBCLDRCQUU1QmtSLHdCQUg0QmxSO0dBQ29DO1lBRWhFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVcyQixNQS9uQjlCNVEsZ0JBd25CR3dRO0tBS3FCLE1BdHNCeEJwTixlQStyQkdzTjtLQU13QixNQU0zQnRHLGtCQWJHdUc7SUFLTDtZQWlFRXhSLGtCQWhFc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FQekNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ0YscUJBRThDO1lBRTVDZ0Q7SUFBaUUsc0JBQ3RDLGlCQUNJLGtCQUNKOztHQUFxQjtZQUVoRDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVTRCLE1BenBCL0JqUixnQkFrcEJHOFE7aUJBTW9DbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUHRCb3VCO0tBTXNCLE1BaHVCekIzTixlQXl0Qkc0TjtJQUtMO1lBc0NFN1Isa0JBckN1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAxQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUM1UDtJQUFvRSw4QkFDM0M7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBNkI7WUFFcEQ2SCx3QkFDRixxQkFFd0M7WUFFdENsRCxXQUE0RC9nQixHQUFLLE9BQUxBLEVBQU07WUFFbEUyZCxxQkFBaUUscUJBRWpCO1lBRWhESDtJQUFtRTs7V0FDaENaLGVBQUpWO09BQzdCLFdBRDZCQSxJQVEvQnVZLHFCQVBvRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7V0FFUlIsaUJBQU0sV0FBTkE7O1dBQ09pQyxpQkFBSnhCO09BQzVCLFdBRDRCQSxNQUs5QjRYLHFCQUptRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkJxZTs7V0FFREUsaUJBQUp4QjtPQUMzQixXQUQyQkEsTUFHN0IwWCxxQkFGa0R6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCdWU7O0dBQzRCO1lBRTdEa1csWUFDQ3hLO0lBQUosWUFBMkI7UUFBWS9OO0lBQU0sV0FBSyxXQUE5QytOLElBQW1DL047R0FBa0I7WUFFdER5WSxlQUFrRDMwQixHQUFLLE9BQUxBLEVBQU07WUFFeER3YyxTQUVDeU47SUFBSixJQUE0QjFwQixnQkFBbkJZO0lBQ1IsV0FBb0IsV0FEakI4b0IsSUFBSzlvQixNQUFtQlo7R0FDc0M7WUFFL0Rta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNO1lBQ3JEMDBCLGlCQUEyQixxQkFBc0M7WUFFN0R6WTtJQUM2RCx1QkFDekNDLGVBQU0sV0F0ckI5QkMsZUFzckJ3QkQ7UUFDS1UsZUFBSlI7SUFDdkIsV0FEdUJBLE1BR3pCRyx3QkFINkJLO0dBQzJCO1lBRXhETDtJQUVGLDhCQUM4Qjs7O1dBQ0RMLGVBQU0sV0FBTkE7O1dBQ0VVLGVBQUpSO09BQ3ZCLFdBRHVCQSxNQXhCekJxWSxxQkF5QjhDejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QjRjOztXQUVIQyxpQkFBTSxXQUFOQTttQkFDREUsaUJBQU0sV0FoQi9CMlgsVUFnQnlCM1g7O0dBQTJDO1lBRXBFc1gsV0FBV3IwQixHQUFJLE9BQUEsNEJBMzJCZnllLFdBMjJCV3plLEdBQXdCOzs7O09BdCtCL0JnZDtPQVlKTztPQTBHQThDO09BS0E1QjtPQVFBZjtPQWVBNEM7T0FZQTBEO09BNENBdkQ7T0FZQWdFO09BaUNBSTtPQVdBRDtPQVVBRDtPQU9BdEg7T0FHQStIO09BS0FJO09BT0FySjtPQUdBdUo7T0FRQUc7T0FtQ0FTO09BSUFGO09BSUFLO09BWUFJO09BZ0NBN0U7T0FRQWtGO09BWUFJO09BOEJBRTtPQU9BdEI7T0FlQTNFO09BWUE0RztPQW9CQUU7T0FZQUk7T0FxQkFDO09BZUFqRDtPQUdBa0Q7T0FRQUc7T0ErQkF6QztPQUtBNkM7T0FJQXBDO09BWUF3QztPQWtCQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQUtBOEQ7T0E0QkF1RDtPQUtBZDtPQUlBMUM7T0FpQkFRO09BZUFRO09BS0FwQjtPQWdCQTRDO09BZUEvQztPQXVCQXRFO09BZUFnTDtPQVNBM0c7T0FpQ0EyQjtPQUtBMEY7T0FTQUM7T0FrQkFWO09BUUFXO09BaUJBN0Y7T0FLQWdEO09BS0EzRTtPQWlCQXhIO09BS0EyRjtPQUtBbEQ7T0FFQXBEO09BSUFIO09BU0FpWDtPQUdBRTtPQUVBblk7T0FLQWtJO09BQ0FnUTtPQUVJelk7T0FNSk07T0FVQThYO09BcDFCQS9UO09BbEpJdEQ7T0EwTUp5RDs7OztFOzs7Ozs7R0MxTWM7O0lBczRCWjllO0lBQ0FDO0lBdjRCWTtJQThDQztJQXUxQkgsYUFDVkQsdUJBQ0FDOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDdjRCRm1hLGdCQUFnQnhiLEtBQUl5YjtJQUN0QixPQUFBLG1DQURrQnpiLFdBQUl5YjtHQUVvRDtZQUVwRWdCO0lBQ1A7S0FHTUM7S0FEQUU7S0FEQUM7S0FPNEIsT0E0US9CQyxnQkFqUkdKO0lBRUwsV0FNRU0scUJBVkdILFlBQ0FEO0dBT0o7WUFFQ0k7SUFDaUUsOEJBdUc5Qjs7O1dBdEdUckIsZUFDeEIsV0ErN0JGTSxTQUZBbVksZ0JBOTdCMEJ6WTs7V0FFR0UsaUJBQzNCLFdBKzZCRm9CLGNBaDdCNkJwQjs7T0FJMEI7UUFGdEJxQjtRQUFKYjtRQUFKQztRQUU4QixPQXBCbkRHLGdCQWtCNkJTO1FBRVYsT0FBQSw0QkErR3ZCQyxvQkFqSDZCZDtPQUMzQixXQXk2QkZlLGNBMTZCeUJkOztXQUdJRTtPQUMzQixXQUEyQiw0QkFxRzdCMEIsV0F0RzZCMUI7O09BT3ZCO1FBTCtCa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS25CLE9BNUJGeEIsZ0JBdUJpQ2lEO1FBSS9CLE9BdUhOSyxhQTNIaUNqQjtRQUczQixPQSs2Qk5vVixZQXo4Qkl6WCxpQkF1QnlCcUI7T0FDM0IsV0F3NUJGQyxlQXo1QnlCRTs7T0FTbkI7UUFIeUJEO1FBQUpJOzttQkFJZDNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BbkMxQmdkLGdCQWtDY0o7V0FDUixXQTY0QlYwQixlQTk0QmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh5QnFDO09BQzdCLFdBOUJFdkIsZ0JBNkJ1QjJCOztPQVNvQjtRQURoQkQ7UUFBSkU7UUFDb0IsT0FBQSw0QkFxRi9DSCxXQXRGK0JDO09BQzdCLFdBdENFMUIsZ0JBcUN1QjRCOztPQUdrQjtRQURoQkM7UUFBSkM7UUFDb0IsT0FBQSw0QkFtRjdDTCxXQXBGNkJJO09BQzNCLFdBeENFN0IsZ0JBdUNxQjhCOztXQUVDRTtPQUN4QixXQUF3Qiw0QkExQ3RCaEMsaUJBeUNzQmdDOztPQUlPO1FBRkVEO1FBQUpHO1FBRUUsT0E0NUJqQ3VWLFlBejhCSXpYLGlCQTJDK0IrQjtPQUNqQyxXQWs2QkZ2QyxTQUZBbVksZ0JBajZCK0J6Vjs7V0FHRUQsaUJBQUpHO09BQzNCLFlBRDJCQSxNQTI1QjdCcVYsWUF6OEJJelgsaUJBOEM2QmlDOztPQVMzQjtRQVAwQkU7UUFBSkk7UUFPdEIsT0FrNUJOa1YsWUF6OEJJelgsaUJBZ0Q0Qm1DOzttQkFHbkJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQXJEbkNnZCxnQkFvRGNKO1dBQ1IsV0F5NUJWSixTQUZBbVksZ0JBeDVCY3pZO1VBQzRDO09BSnhELFlBQ0ksa0NBRnNCcUQ7O09BU21CO1FBRGhCRDtRQUFKRTtRQUNvQixPQXE1Qi9DaEQsU0FGQW1ZLGdCQXA1QitCclY7T0FDN0IsWUF6REV0QyxnQkF3RHVCd0M7O09BSTBCO1FBRmZDO1FBQUpDO1FBQUpDO1FBRXVCLE9BNURqRDNDLGdCQTBEa0N5QztRQUViLE9BazVCekJqRCxTQUZBbVksZ0JBbDVCa0NqVjtPQUNoQyxZQTNERTFDLGdCQTBEMEIyQzs7V0FHSkU7T0FDeEIsWUFBd0IsNEJBOUR0QjdDLGlCQTZEc0I2Qzs7T0FJbUI7UUFGTEs7UUFBSk47UUFBSkc7UUFFYSxPQXc0QjdDMFUsWUF6OEJJelgsaUJBK0RvQ2tEO1FBRWYsT0FqRXJCbEQsZ0JBK0RnQzRDO09BQ2xDLFlBaEVFNUMsZ0JBK0Q0QitDOztPQUlrQixJQURoQkQsa0JBQUpNLGtCQUNvQixPQW5FOUNwRCxnQkFrRThCOEM7T0FDaEMsWUFuRUU5QyxnQkFrRTBCb0Q7O09BR2lCLElBRGhCRCxrQkFBSkssa0JBQ29CLE9BckUzQ3hELGdCQW9FMkJtRDtPQUM3QixZQXJFRW5ELGdCQW9FdUJ3RDs7T0FRckI7UUFObUNSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNbkIsT0E1RUY1RCxnQkFzRXFDZ0Q7UUFLbkMsT0EyQ05LLG9CQWhEcUMySjtRQUkvQixPQTFFRmhOLGdCQXNFNkIwRDtRQUczQixPQXpFRjFELGdCQXNFeUJ1RDtPQUMzQixZQTJFRkQsYUE1RXlCTTs7T0FRMkIsSUFEaEJELGtCQUFKRyxrQkFDb0IsT0E0SHBETCxlQTdIb0NFO09BQ2xDLFlBOUVFM0QsZ0JBNkU0QjhEOztPQUl3QjtRQUZwQk07UUFBSlA7UUFBSkc7UUFFNEIsT0F5SHhEUCxlQTNIb0NXO1FBRVgsT0F3M0J6QnFULFlBL3ZCQWhVLGdCQTNIZ0NJO09BQzlCLFlBaEZFN0QsZ0JBK0V3QmdFOztPQUlrQjtRQURoQkM7UUFBSkM7UUFDb0IsT0EyM0I5QzFFLGtCQTMzQjREeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHBDaWhCO09BQzVCLFlBbkZFakUsZ0JBa0ZzQmtFOztXQUVGQyxrQkFDdEIsWUF5M0JGM0UsU0FGQW1ZLGdCQXgzQndCeFQ7O09BR2tDLElBRHRCRSxrQkFBSkMsa0JBQzBCLE9BdkZ0RHRFLGdCQXNGZ0NxRTtPQUNsQyxZQXUzQkY3RSxrQkF2M0I4Q3hjLEdBQUssT0FBTEEsRUFBTSxHQURwQnNoQjs7O1FBRUhHOzttQkFHakJ6aEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0E3RmhDZ2QsZ0JBNEZhSjtXQUNSLFdBaTNCVEosa0JBajNCd0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztVQUMwQztPQUpyRCxZQUNFLGtDQUZ5QnVGOztPQVN1QjtRQUZid1A7UUFBSnpQO1FBQUpHO1FBRXFCLE9BakdoRDNFLGdCQStGbUNpVTtRQUVSLE9BNFcvQjFQLGlCQTlXbUNDO09BQ2pDLFlBODJCRmhGLGtCQTcyQm1CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk0yaEI7O09BS0ssSUFGRUUsa0JBQUpELGtCQUVFLE9BcEdoQzVFLGdCQWtHa0M2RTtPQUNwQyxZQWdzQkZILDJCQWpzQmtDRTs7V0FHUEUsa0JBQ3pCLFlBdEdFOUUsZ0JBcUd1QjhFOztXQUVGQyxrQkFBTSxZQXZHM0IvRSxnQkF1R3FCK0U7O09BRXFCO1FBRGhCRTtRQUFKQztRQUNvQixPQWcyQjlDdVMsWUEvdkJBaFUsZ0JBbEc4QndCO09BQzVCLFlBekdFakYsZ0JBd0dzQmtGOztXQUVDQyxrQkFDekIsWUEwUkZILHFCQTNSMkJHOztPQUc0QixJQUR0QkMsa0JBQUpDLGtCQUMwQixPQTdHbkRyRixnQkE0RzZCb0Y7T0FDL0IsWUFpMkJGNUYsa0JBajJCMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEcEJxaUI7O1dBRUpFLGtCQUFNLFlBK1YvQmhCLGlCQS9WeUJnQjs7T0FHK0I7UUFGdEJ1UztRQUFKNUQ7UUFBSnpPO1FBRThCLE9BakhwRHpGLGdCQStHOEI4WDtRQUVOLE9BNjFCNUJ0WSxTQUZBbVksZ0JBNzFCOEJ6RDtPQUM1QixZQXduQkYzSixtQkF6bkIwQjlFO21CQUdJdU8sa0JBQzVCLFlBMmlCRnRPLGVBNWlCOEJzTzs7R0FFa0M7WUFFaEUzUSwyQkFDNkQscUJBRW5CO1lBRTFDNUI7SUFDSDtLQUFzRG5FO0tBQXpCQztLQUF2QkM7S0FJbUIsT0FoSWxCd0MsZ0JBNEgrQzFDO0tBRzNCLE9BMDBCeEJtYSxZQXo4Qkl6WCxpQkE0SHNCekM7SUFDNUIsV0FxQkUrRixhQXRCRzlGO0dBS0o7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUTJCLE9BdUk5QnJHLGdCQTdJR2tHO0tBS3FCLE9BN0lwQnZHLGdCQXVJRHlHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUdNc0Q7S0FEQUU7S0FEQUM7S0FPNEIsT0EwSC9CMUcsZ0JBL0hHdUc7SUFFTCxXQU1FSSxrQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNFLDhCQUN5Qjs7O1dBQ0g5SCxlQUN0QixXQTR5QkZNLGtCQTV5QnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCa2M7O09BR29CO1FBRGJVO1FBQUpSO1FBQ2lCLE9BMHlCNUNJLGtCQTF5QjBEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpDNGM7T0FDN0IsV0FsQkYwRCxhQWlCMkJsRTs7V0FFRVMsaUJBQzNCLFdBMHhCRlcsY0EzeEI2Qlg7O09BR21CLElBRGR3QixpQkFBSnRCLGlCQUNrQixPQXd4QmhEUyxjQXp4QmtDYTtPQUNoQyxXQXd4QkZiLGNBenhCOEJUOztXQUVKeUI7T0FDeEIsV0FBd0IsNEJBeEIxQjhCLGNBdUIwQjlCOztPQUlPO1FBRkVEO1FBQUpJO1FBRUUsT0E0eEJqQzhWLFlBdnpCQW5VLGNBeUJtQy9CO09BQ2pDLFdBa3lCRi9CLFNBRkFtWSxnQkFqeUIrQmhXOztXQUdFRCxpQkFBSkU7T0FDM0IsV0FEMkJBLE1BMnhCN0I2VixZQXZ6QkFuVSxjQTRCaUM1Qjs7T0FTM0I7UUFQMEJHO1FBQUpDO1FBT3RCLE9BOHZCTm1GLGlCQXJ3QmdDcEY7O21CQUduQjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BbkN2Q3NnQixhQWtDa0IxRDtXQUNSLFdBeXhCVkosU0FGQW1ZLGdCQXh4QmN6WTtVQUN5QztPQUpyRCxXQUNJLGtDQUZzQjRDOztXQVFGRTtPQUN4QixXQUF3Qiw0QkF2QzFCc0IsY0FzQzBCdEI7O09BR2UsSUFEYkQsaUJBQUpHLGlCQUNpQixPQXpDekNvQixhQXdDNEJ2QjtPQUMxQixXQXpDRnVCLGFBd0N3QnBCOztPQUd5QixJQURiRCxpQkFBSkcsaUJBQ2lCLE9BYWpEcUIsZUFkb0N4QjtPQUNsQyxZQTNDRnFCLGFBMENnQ2xCOztXQUVQRyxrQkFDdkIsWUErd0JGL0MsU0FGQW1ZLGdCQTl3QnlCcFY7O1dBRUFDLGtCQUFNLFlBOUMvQmMsYUE4Q3lCZDs7V0FDRUc7T0FDekIsWUE0d0JGbkQsa0JBNXdCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEckIyZjs7V0FFR0Usa0JBQzVCLFlBbERGUyxhQWlEOEJUOztXQUVBRSxrQkFDNUIsWUF3ZEYyQyxlQXpkOEIzQzs7T0FHd0IsSUFEeEJaLGlCQUFKaUIsa0JBQzRCLE9BdER0REUsYUFxRDhCbkI7T0FDNUIsWUFzd0JGM0MsU0FGQW1ZLGdCQXJ3QjBCdlU7O0dBQzRDO1lBRXRFSztJQUNIO0tBR000RDtLQURBRTtLQURBQztLQU80QixPQWtFL0JuSCxnQkF2RUdnSDtJQUVMLFdBTUVJLG9CQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdtQjtRQUZSdUI7UUFBSmI7UUFBSlI7UUFFZ0IsT0FsQjNDcUUsZUFnQm1DaEQ7UUFFWCxPQWxCeEJnRCxlQWdCK0I3RDtPQUM3QixXQXF0QkYwQixlQXR0QjJCbEM7O1dBR0RTO09BQ3hCLFdBQXdCLDRCQXBCMUI0RCxnQkFtQjBCNUQ7O09BSU87UUFGRHdCO1FBQUp0QjtRQUVLLE9BQUEsNEJBdkJqQzBELGdCQXFCZ0NwQztPQUM5QixXQTh1QkY3QixTQUZBbVksZ0JBN3VCNEI1WDs7T0FjdEI7UUFYMEJ3QjtRQUFKQztRQVd0QixPQXdzQk55RixpQkFudEJnQzFGOzs7V0FHeEI7WUFNTSxPQS9PZHhDOztXQTZPZ0I7WUFIeUIwQjtZQUFKYjtZQUFKVjtZQUdqQixPQS9CaEJ1RSxlQTRCeUNoRDtZQUV6QixPQTZDaEJKLGdCQS9DcUNUO1dBQ3ZCLFdBdXVCZEosa0JBdnVCOEJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FESGtjO1VBS3dDO09BUnZFLFdBQ0ksa0NBRnNCc0M7O09BY0s7UUFGRkU7UUFBSkM7UUFFTSxPQUFBLDRCQXRDakM4QixnQkFvQytCL0I7T0FDN0IsV0ErdEJGbEMsU0FGQW1ZLGdCQTl0QjJCaFc7O1dBR0lFLGlCQUFKRDtPQUN6QixXQXhDRjZCLGVBdUMyQjdCLE9BQUlDOztPQU16QjtRQUorQlE7UUFBSk47UUFBSkQ7UUFJdkI7VUFrdEJOMlY7cUJBbHRCdUJ6MEIsR0FBSyxPQUFBLDRCQW1zQjVCK2dCLFlBbnNCdUIvZ0IsR0FBMEI7WUFKWnFmO1FBRy9CLE9BK3JCTjRFLGlCQWxzQmlDbEY7T0FDL0I7ZUFDSSw0QkFzQk42RixnQkF4QjZCOUY7Ozs7T0FPd0I7UUFGdkJHO1FBQUpEO1FBRTJCLE9BaERyRHlCLGVBOEM4QnhCO3dCQUVYamYsR0FBSyxPQW90QnhCd2Msa0JBcHRCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRnFCZ2Y7O1dBR0VFLGlCQUMxQixXQUlGMkYsa0JBTDRCM0Y7bUJBRUVFLGlCQUM1QixZQWdhRnNELGVBamE4QnREOztHQUNtQjtZQUVqRHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQTlEakN5Z0IsZUE2RFk3RDtLQUNSLFdBc3NCSkosU0FGQW1ZLGdCQXJzQlF6WTtJQUMyQztJQUhuRCxXQUFBLGtDQUZNVTtJQUNSLFdBMHNCRUosU0FGQW1ZLGdCQXpzQkV6WTtHQU1JO1lBRU4wSTtJQUNGO0tBTVE7TUFMMkIzRTtNQUFKeEM7TUFBSmI7TUFBSlY7TUFLZixPQUFBLDRCQXhFTnVFLGdCQW1FaUNSO01BSTNCLE9BbXNCTnlVLFVBdnNCNkJqWDtNQUd2QixPQUtOSixnQkFSeUJUO0tBQ3ZCLFdBRG1CVjs7UUFNR0U7SUFBTSxXQXpFOUJxRSxlQXlFd0JyRTtHQUErQztZQUV2RWlCLGdCQUNDcmQ7SUFBSyxPQUFBLDRCQUVOb2xCLGdCQUZDcGxCO0dBQThCO1lBRS9Cb2xCLGVBQ0NwbEI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0FFekJ3bEIsYUFITTVJO0lBQ1IsV0FtckJFSixrQkFuckJheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSjtJQUFnRTs7V0FDNUN0SixlQUFNLFdBTTFCQyxlQU5vQkQ7O1dBQ0FFLGlCQUFNLFdBZ1ExQnFKLGVBaFFvQnJKOztXQUNBUyxpQkFBTSxXQXRGMUI0RCxlQXNGb0I1RDs7T0FFa0I7UUFEYkQ7UUFBSkc7UUFDaUIsT0F1cUJ0QzBYLFlBejhCSXpYLGlCQWlTcUJKO09BQ3ZCLFdBaEpGMEQsYUErSXFCdkQ7O0dBQ2dEO1lBRXJFWixlQUNDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O09BRWdELElBRGhCakosZUFBSlYsZUFDb0IsT0E5QjlDbUIsZ0JBNkI4QlQ7T0FDNUIsV0FuVEVJLGdCQWtUc0JkOztPQUdtQjtRQURkbUM7UUFBSmpDO1FBQ2tCLE9BQUEsNEJBbEw3Q3NCLG9CQWlMK0JXO09BQzdCLFdBdW9CRlYsY0F4b0IyQnZCOztXQUVHUyxpQkFDNUIsV0F3bUJGaUosdUJBem1COEJqSjs7T0FJUDtRQUZPMEI7UUFBSnhCO1FBRUgsT0FBQSw0QkFpZ0J2QmdKLHVCQW5nQjhCeEg7T0FDNUIsV0Ftb0JGWixjQXBvQjBCWjs7V0FHQ3lCLGlCQUN6QixXQWdkRndILG9CQWpkMkJ4SDs7V0FFR0csaUJBQzVCLFdBcWVGK0MsMkJBdGU4Qi9DOztXQUVIQyxpQkFDekIsV0E4SEZzSCxvQkEvSDJCdEg7O1dBRUdFO09BQzVCLFdBQTRCLDRCQTRIOUJvSCxxQkE3SDhCcEg7O1dBRUZFLGlCQUMxQixXQXlhRm1ILDZCQTFhNEJuSDs7V0FFSEUsaUJBQ3ZCLFdBbVpGNkgsc0JBcFp5QjdIOztXQUVDRTtPQUN4QixZQUF3Qiw0QkFjMUJnSCx3QkFmMEJoSDs7V0FFS0c7T0FDN0I7ZUFBNkIsNEJBK1AvQjhHLDZCQWhRK0I5Rzs7V0FFSEMsa0JBQzFCLFlBTUY4Ryx5QkFQNEI5Rzs7V0FFRUcsa0JBQzVCLFlBdERGeUYsZUFxRDhCekY7O09BR29CLElBRGZqQixpQkFBSm1CLGtCQUNtQixPQTNEbER4QyxnQkEwRG1DcUI7T0FDakMsWUE4VUZnRSxlQS9VK0I3Qzs7R0FDc0M7WUFFckV5Ryx5QkFFQ3RtQjtJQUFLLE9Bb1hOdW1CLG1CQTNQQWhGLGtCQXpIQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9BMlVOd21CLGlCQXpVQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQTlFOUJ2SixnQkF5RUdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ2lFOztPQUdoQztRQUZGaks7UUFBSlY7UUFFTSxPQUFBLDRCQWhLakN1RSxnQkE4SitCN0Q7T0FDN0IsV0FxbUJGSixTQUZBbVksZ0JBcG1CMkJ6WTs7V0FHRUUsaUJBQzNCLFdBeUJGNEYscUJBMUI2QjVGOztPQU92QjtRQUw4QjZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLbEIsT0F4Qk40SixnQkFtQm9DeEc7UUFJOUIsT0EvTk5LLGFBMk5nQzdDO1FBRzFCLE9BeWxCTmdYLFlBejhCSXpYLGlCQTZXd0JxQjtPQUMxQixXQWtrQkZDLGVBbmtCd0J6Qjs7T0FTbEI7UUFId0IwQjtRQUFKeEI7O21CQUliL2M7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0F6WDFCZ2QsZ0JBd1hjSjtXQUNSLFdBdWpCVjBCLGVBeGpCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHdCcUM7T0FDNUIsV0ExQkZrSSxnQkF5QjBCMUo7O09BVTZCO1FBRnZCc0M7UUFBSlg7UUFBSkY7UUFFK0IsT0FuQ3ZEaUksZ0JBaUNnQ3BIO1FBRVQsT0FBQSw0QkExUHZCM0Isb0JBd1A0QmdCO09BQzFCLFdBZ2tCRmYsY0Fqa0J3QmE7O09BSTJCLElBRGhCSyxpQkFBSkYsaUJBQ29CLE9BbU5uRG1JLGdCQXBObUNqSTtPQUNqQyxXQXJDRjRILGdCQW9DK0I5SDs7V0FFRkMsaUJBQzNCLFdBNlJGOEQsZUE5UjZCOUQ7O1dBRURyZTtPQUMxQixPQXZZRndiLGdCQXNZNEJ4Yjs7R0FDd0M7WUFFcEV5aEI7SUFFSDtLQUFpQ2dGO0tBQTNCQztLQUd5QixPQUFBLDRCQUc1QkMsa0JBTjhCRjtJQUNoQyxXQXRQRTFHLGFBcVBHMkc7R0FJSjtZQUVDQztJQUNIO0tBR01DO0tBREFDO0tBREFDO0tBTzJCLE9Bakk5QmhLLGdCQTRIRzhKO0lBRUwsV0FNRUcsc0JBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O09BSzdEO1FBSjhCN0o7UUFBSmI7UUFBSlY7d0JBSUtsYyxHQUFLLE9BQUxBLEVBQU07UUFBakMsT0EwaUJOeTBCLDJCLE9BS0FqWSx3QkFuakJvQ2lCO1FBRzlCLE9BcEVOZ0osZ0JBaUVnQzdKO09BQzlCLFdBNFVGMkssbUJBN1U0QnJMOztPQU0xQjtRQURxQkU7UUFFTmlELE9BRk1qRDtRQUVWaUMsT0FGVWpDO1FBRWRTLE9BRmNUO1FBS2hCLE9Ba0JQb0wsc0JBckJpQm5JO1FBRVYsT0FpZlBvSSxrQkFuZmFwSjtPQURYLGVBNmlCRjdCLGtCQTNpQnFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCNmM7O09BS1A7UUFEd0JFO1FBRVQwQyxPQUZTMUM7UUFFYndCLE9BRmF4QjtRQUVqQnlCLE9BRmlCekI7UUFLbkIsT0FZUHlLLHNCQWZpQi9IO1FBRVYsT0FrYlBpSSxrQkFwYmFuSjtPQURYLGVBdWlCRi9CLGtCQXJpQnFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCd2U7O09BS1A7UUFENEJHO1FBRWpCRCxPQUZpQkM7UUFFckJDLE9BRnFCRDtRQUdMLE9Bck96QjhCLGVBb09hL0I7T0FEWCxlQW5PRitCLGVBb09TN0I7O1dBRXNCRSxpQkFDN0IsV0FqYkU5QixnQkFnYjJCOEI7O1dBRUZFLGlCQUMzQixXQTNKRm9HLGVBMEo2QnBHO21CQUVBRSxpQkFDM0IsV0F5T0Z3RCxlQTFPNkJ4RDs7R0FDbUI7WUFFaERzSTtJQUNtRSx1QkFDeEN0TCxlQUN6QixXQWhQRnVFLGVBK08yQnZFO0lBR3lCLElBRG5CVSxlQUFKUixpQkFDdUIsT0E1YmhEWSxnQkEyYjZCSjtJQUMvQixXQTRTRjJLLG1CQTdTNkJuTDtHQUMwQztZQUV2RThKO0lBRUg7S0FJTTBCO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE9BcEw5QjFLLGdCQThLR3dLO0tBS3FCLE9BS3hCdEcsaUJBWEd1RztJQUlMO1lBd2dCRXRMLGtCQXZnQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTnpDK25COzs7WUFHQUg7R0FPSjtZQUVDckc7SUFDSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPNEIsT0FqTS9CN0ssZ0JBNExHMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7V0FDekNqTSxlQUN4QixXQWtmRk0sU0FGQW1ZLGdCQWpmMEJ6WTs7V0FFSUUsaUJBQzVCLFdBMUxGRCxlQXlMOEJDOztPQU14QjtRQUorQnFCO1FBQUpiO1FBQUpDO1FBSXZCLE9BdEJOMEUsaUJBa0JxQzlEO1FBRy9CLE9BdWVOZ1gsWUE1ZEFwTSxrQkFkaUN6TDtPQUMvQixXQThlRkosa0JBN2VvQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZHNmM7O09BTW1CLElBRGpCd0IsaUJBQUp0QixpQkFDcUIsT0F4QmhEd0UsaUJBdUIrQmxEO09BQzdCLFdBeEJGa0QsaUJBdUIyQnhFOztPQUcwQixJQURqQndCLGlCQUFKQyxpQkFDcUIsT0FNckQ2SixpQkFQb0M5SjtPQUNsQyxXQTFCRmdELGlCQXlCZ0MvQzs7V0FFTEcsaUJBQ3pCLFdBemVFM0IsZ0JBd2V1QjJCO21CQUVHQyxpQkFDNUIsV0FtTEY4RCxlQXBMOEI5RDs7R0FDbUI7WUFFakR5SjtJQUNIO0tBR01DO0tBREFDO0tBREFDO0tBTzRCLE9Bak8vQm5MLGdCQTROR2lMO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O1dBQ3pDdk0sZUFDeEIsV0FrZEZNLFNBRkFtWSxnQkFqZDBCelk7O1dBRUlFLGlCQUM1QixXQWlDRnFKLGVBbEM4QnJKOztPQU14QjtRQUorQnFCO1FBQUpiO1FBQUpDO1FBSXZCLE9BdEJOd0wsaUJBa0JxQzVLO1FBRy9CLE9BdWNOZ1gsWUE1ZEFwTSxrQkFrQmlDekw7T0FDL0IsV0E4Y0ZKLGtCQTdjb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGRzZjOztPQU9IO1FBRkl3QjtRQUFKdEI7UUFFQSxPQUFBLDRCQVExQjJMLHNCQVY4QnJLO09BQzVCLFdBeEJGZ0ssaUJBdUIwQnRMOztXQUdDeUIsaUJBQ3pCLFdBM0RGK0MsaUJBMEQyQi9DOztXQUVHRyxpQkFDNUIsV0FvSkYrRCxlQXJKOEIvRDs7V0FFSkMsaUJBQ3hCLFdBa2NGcEMsU0FGQW1ZLGdCQWpjMEIvVjs7R0FDNEI7WUFFdEQ4SjtJQUNpRTs7T0FHaEMsSUFGRjlMLGVBQUpWLGVBRU0sT0F5U2pDNkosc0JBM1MrQm5KO09BQzdCLFdBNmJGSixTQUZBbVksZ0JBNWIyQnpZOztPQUtNO1FBRkFtQztRQUFKakM7UUFFSSxPQXliakNJLFNBRkFtWSxnQkF6YmlDdFc7T0FDL0IsV0EwYkY3QixTQUZBbVksZ0JBemI2QnZZOzs7O1lBR29DUztRQUMvRCxXQW9TRmtKLHNCQXJTaUVsSjs7V0FJL0J0YztPQUNoQyxPQS9oQkZ3YixnQkE4aEJrQ3hiOzs7O1lBRmlDZ2UsaUJBQVBtVSxpQkFBSjNWO1FBQ3RELGVBRHNEQSxNQUFJMlYsUUFzYjVEbFcsU0FGQW1ZLGdCQXBibUVwVzs7V0FJbEM0VztPQUMvQixPQWppQkZwWixnQkFnaUJpQ29aOztHQUM2QjtZQUU5RDFQLGVBQ0N6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O1dBQzRCNU0sZUFDeEIsV0FpWEY0Six1QkFsWDBCNUo7O09BSUg7UUFGT1U7UUFBSlI7UUFFSCxPQUFBLDRCQTBRdkIySix1QkE1UThCbko7T0FDNUIsV0E0WUZlLGNBN1kwQnZCOztXQUdDUyxpQkFDekIsV0F5TkZtSixvQkExTjJCbko7O1dBRUdFLGlCQUM1QixXQThPRjJFLDJCQS9POEIzRTs7V0FFSHlCLGlCQUN6QixXQXNNRnVLLHdCQXZNMkJ2Szs7V0FFR0c7T0FDNUIsV0FBNEIsNEJBb005Qm9LLHlCQXJNOEJwSzs7V0FFRkMsaUJBQzFCLFdBa0xGdUgsNkJBbkw0QnZIOztXQUVIRSxpQkFDdkIsV0E0SkZpSSxzQkE3SnlCakk7O1dBRUdFLGlCQUMxQixXQXFJRmlLLHlCQXRJNEJqSzs7V0FFRkU7T0FDeEIsV0FBd0IsNEJBYTFCZ0ssd0JBZDBCaEs7O1dBRUtFO09BQzdCO2VBQTZCLDRCQU0vQmlILDZCQVArQmpIOztXQUVERyxrQkFDNUIsWUE3U0Y2RixlQTRTOEI3Rjs7T0FHb0IsSUFEZmxCLGlCQUFKbUIsa0JBQ21CLE9BbFRsRG5DLGdCQWlUbUNnQjtPQUNqQyxZQXVGRnFFLGVBeEYrQmxEOztHQUNzQztZQUVyRTZHLDRCQUdDcm1CO0lBQUssT0F1Rk53bUIsaUJBakZBTSxpQkFOQzltQjtHQUF1QztZQUV4Q2twQix1QkFFQ2xwQjtJQUFLLE9BbUZOd21CLGlCQWpGQU0saUJBRkM5bUI7R0FBdUM7WUFFeEM4bUI7SUFDSDtLQUdNcUM7S0FEQUM7S0FEQUM7S0FPNEIsT0F0VS9CaE0sZ0JBaVVHOEw7SUFFTCxXQU1FRyxxQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNpRTs7T0FHaEM7UUFGRDFNO1FBQUpWO1FBRUssTUFBQSw0QkF4WmpDdUUsZ0JBc1pnQzdEO09BQzlCLFdBNldGSixTQUZBbVksZ0JBNVc0QnpZOztXQUdFRSxpQkFDNUIsV0FTRm1OLHFCQVY4Qm5OOztPQUlhO1FBRlJxQjtRQUFKWTtRQUFKeEI7UUFFZ0IsT0FyQjNDaUssZ0JBbUJtQ3JKO1FBRVgsT0E3WnhCZ0QsZUEyWitCcEM7T0FDN0IsV0EwVUZDLGVBM1UyQnpCOztXQUdHRSxpQkFDNUIsV0FxREYyRixlQXREOEIzRjs7V0FFRHhjO09BQzNCLE9BL21CRndiLGdCQThtQjZCeGI7O0dBQ2lDO1lBRTlEZ3BCO0lBRUg7S0FBaUNDO0tBQTNCQztLQUd5QixNQUFBLDRCQUc1QkMsdUJBTjhCRjtJQUNoQyxXQXRhRS9JLGVBcWFHZ0o7R0FJSjtZQUVDQztJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTzRCLE1BMVcvQnhNLGdCQXFXR3NNO0lBRUwsV0FNRUcsMkJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDOEI1TixlQUMxQixXQXBERjRLLGdCQW1ENEI1Szs7T0FHMUI7UUFEc0JFO1FBRUg2RCxLQUZHN0Q7UUFFUHFCLEtBRk9yQjtRQUVYUSxLQUZXUjtRQUVmUyxPQUZlVDtRQU1qQixNQW5jUHFFLGVBK2JxQlI7UUFHZCxNQW1EUDhKLGtCQXREaUJ0TTtRQUVWLE1BMFFQZ0ssa0JBNVFhN0s7T0FEWCxlQXNVRkosa0JBcFVxQnhjLEdBQUssT0FBTEEsRUFBTSxHQURsQjZjOztPQU1QO1FBRHlCRTtRQUVOaU4sT0FGTWpOO1FBRVZzQyxPQUZVdEM7UUFFZHNCLE9BRmN0QjtRQUVsQnlCLE9BRmtCekI7UUFNcEIsTUExY1AwRCxlQXNjcUJ1SjtRQUdkLE1BNENQRCxrQkEvQ2lCMUs7UUFFVixNQTBNUHFJLGtCQTVNYXJKO09BRFgsZUErVEY3QixrQkE3VHFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCd2U7O09BTVA7UUFENkJHO1FBRWxCSixPQUZrQkk7UUFFdEJDLE9BRnNCRDtRQUdOLE1BOWN6QjhCLGVBNmNhbEM7T0FEWCxlQTVjRmtDLGVBNmNTN0I7O1dBRXFCRSxpQkFDNUIsV0FsWUZzRyxlQWlZOEJ0RzttQkFFQUUsaUJBQzVCLFdBRUYwRCxlQUg4QjFEOztHQUNtQjtZQUVqRDBELGVBQ0MxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUFwWXpCd2xCLGFBbVlNNUk7SUFDUixXQTZTRUosa0JBN1NheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FrQjJCLE1BdmE5QmxOLGdCQTBaRzZNO0tBV3FCLE1BQUEsV0FsQnZCRCxJQUtFRztLQVlxQixNQXFSeEI1TixrQkFyUnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBYnpDcXFCO2lCQVNNcnFCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BbU8xQnlxQixjQXBPYzdOO0tBQ1IsV0E3ZU42RCxlQTRlVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENvTztJQU1MLFdBY0VQLGtCQXJCR1EsMEJBSUFKO0dBZUo7WUFFQ0oseUJBQ0YscUJBRWdEO1lBRTlDZCx5QkFFQ2pwQjtJQUFLLE9BRU51bUIsbUJBM05BOEIsa0JBeU5Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU82QixNQWpjaEN2TixnQkE0YkdxTjtJQUVMLFdBQzJCLFdBUHhCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RDtJQUVIO0tBSU04RDtLQURBQztLQURBQztLQURBa0s7S0FTNkIsTUFoZGhDNVgsZ0JBMGNHd047S0FJMkIsTUFLOUJ0RCxtQkFYR3dEO0lBSUwsV0E2T0V2TyxTQUZBbVksZ0JBaFBHTSxpQkFFQW5LO0dBUUo7WUFFQ3ZELDBCQUMyRCxxQkFFbkI7WUFFeENwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVE0QixNQXBlL0IvTixnQkE4ZEc2TjtLQUtzQixNQWlOekJ1SixZQTVkQXBNLGtCQXFRRzhDO0lBSUw7WUF3TkUzTyxrQkF2TnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjFDb3JCOzs7WUFHQUg7R0FPSjtZQUVDbEM7SUFFSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsTUFuZjlCdk8sZ0JBNmVHcU87S0FLcUIsTUExUnhCckQsaUJBb1JHc0Q7SUFJTCxXQXlNRW5QLGtCQXhNc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekM0ckIscUJBR0FIO0dBT0o7WUFFQ3pGO0lBRUg7S0FLTWdHO0tBREFFO0tBREFDO0tBREFDO0tBREFDO0tBaUI4QixNQTNnQmpDaFAsZ0JBOGZHMk87S0FZMkIsTUE2RDlCdEUsa0JBMUVHd0U7S0FZRDtPQUFBOzBCQUtGeEssNEJBbEJHeUs7aUJBUU1uc0I7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUErSDFCeXFCLGNBaEljN047S0FDUixXQWpsQk42RCxlQWdsQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVJDa1E7SUFLTCxXQXlMRTVQLFNBRkFtWSxnQkE3TEd0STtHQWtCSjtZQUVDM0s7SUFFSDtLQUlNNEs7S0FEQUM7S0FEQUM7S0FEQUM7S0FTNEIsTUExaEIvQnBQLGdCQW9oQkdpUDtLQUlzQixNQUt6QkksK0JBWEdGO0lBSUw7WUFtS0VoUSxrQkFsS3VDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjFDeXNCOztZQUVBRjs7R0FRSjtZQUVDRztJQUUwQztLQUdOLElBRk45UCxlQUFKVixlQUVVLE1Ba0pwQ3VZLFlBL3ZCQWhVLGdCQTJtQjhCN0Q7S0FDNUIsV0FzRUYrUCwyQkF2RTBCelE7O1FBR0NFO0lBQ3pCLFdBcUpGSSxTQUZBbVksZ0JBcEoyQnZZO0dBQzRCO1lBRXZEMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0EwQjZCLE1BbmtCaEM5UCxnQkEraUJHd1A7S0FtQjJCLE1Ba0g5QjRILFlBL3ZCQWhVLGdCQXluQkdxTTtLQW1CMEIsTUFNN0JwRixrQkExQkdxRjtLQW1CdUIsTUFZMUJLLGVBaENHSjtpQkFnQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXpvQjFCeWdCLGVBd29CYzdEO0tBQ1IsV0F6b0JONkQsZUF3b0JVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBaEJDd1A7aUJBV01qdEI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUE2RTFCeXFCLGNBOUVjN047S0FDUixXQW5vQk42RCxlQWtvQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVhDZ1I7SUFRTDtZQXVJRTFRLGtCQXRJd0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FWM0NtdEI7Ozs7Ozs7WUFPQVA7R0FxQko7WUFFQ2xGLHlCQUNGLHFCQUU0QztZQUUxQzBGO0lBQ0Y7O1NBRStCbFI7S0FDM0IsV0FBMkIsNEJBSzdCbVIsOEJBTjZCblI7O1FBRURFO0lBQzFCLFdBQTBCLDRCQTZCNUJrUix3QkE5QjRCbFI7R0FFd0I7WUFFcERpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBVzJCLE1BcG1COUJ2USxnQkE2bEJHa1E7S0FLb0IsTUFrRnZCa0gsWUEvdkJBaFUsZ0JBc3FCR2dOO0tBTXFCLE1BTXhCZCwyQkFiR2U7SUFLTDtZQTBGRWxSLGtCQXpGc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FQekM0dEI7OztZQUdBSjs7R0FTSjtZQUVDYjtJQUVGO1NBQzZCelE7S0FDekIsV0FBeUIsNEJBdHJCM0J1RSxnQkFxckIyQnZFOztRQUVDRTtJQUMxQixXQUEwQiw0QkFFNUJrUix3QkFINEJsUjtHQUNvQztZQUVoRWtSO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXMkIsTUE3bkI5QjVRLGdCQXNuQkd3UTtLQUtxQixNQXRzQnhCcE4sZUErckJHc047S0FNd0IsTUFNM0J0RyxrQkFiR3VHO0lBS0w7WUFpRUV4UixrQkFoRXNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUHpDaXVCOzs7WUFHQUg7O0dBU0o7WUFFQ3JHLHlCQUNGLHFCQUU4QztZQUU1Q2dEO0lBQWlFLHNCQUN0QyxpQkFDSSxrQkFDSjs7R0FBcUI7WUFFaEQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVU0QixNQXZwQi9CalIsZ0JBZ3BCRzhRO2lCQU1vQ251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVB0Qm91QjtLQU1zQixNQWh1QnpCM04sZUF5dEJHNE47SUFLTDtZQXNDRTdSLGtCQXJDdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQMUNzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDNVA7SUFBb0UsOEJBQzNDOzJCQUNGcEMsZUFBTSxXQUFOQTtRQUNBRTtJQUFNLFdBQU5BO0dBQTZCO1lBRXBENkgsd0JBQ0YscUJBRXdDO1lBRXRDbEQsV0FBNEQvZ0IsR0FBSyxPQUFMQSxFQUFNO1lBRWxFMmQscUJBQWlFLHFCQUVqQjtZQUVoREg7SUFBbUU7O1dBQ2hDWixlQUFKVjtPQUM3QixXQUQ2QkEsSUFRL0J1WSxxQkFQb0R6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCNGM7O1dBRVJSLGlCQUFNLFdBQU5BOztXQUNPaUMsaUJBQUp4QjtPQUM1QixXQUQ0QkEsTUFLOUI0WCxxQkFKbUR6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCcWU7O1dBRURFLGlCQUFKeEI7T0FDM0IsV0FEMkJBLE1BRzdCMFgscUJBRmtEejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QnVlOztHQUM0QjtZQUU3RGtXLFlBQ0N4SztJQUFKLFlBQTJCO1FBQVkvTjtJQUFNLFdBQUssV0FBOUMrTixJQUFtQy9OO0dBQWtCO1lBRXREeVksZUFBa0QzMEIsR0FBSyxPQUFMQSxFQUFNO1lBRXhEd2MsU0FFQ3lOO0lBQUosSUFBNEIxcEIsZ0JBQW5CWTtJQUNSLFdBQW9CLFdBRGpCOG9CLElBQUs5b0IsTUFBbUJaO0dBQ3NDO1lBRS9EbWtCLGNBQStDMWtCLEdBQUssT0FBTEEsRUFBTTtZQUNyRDAwQixpQkFBMkIscUJBQXNDO1lBRTdEelk7SUFDNkQsdUJBQ3pDQyxlQUFNLFdBcHJCOUJDLGVBb3JCd0JEO1FBQ0tVLGVBQUpSO0lBQ3ZCLFdBRHVCQSxNQUd6Qkcsd0JBSDZCSztHQUMyQjtZQUV4REw7SUFFRiw4QkFDOEI7OztXQUNETCxlQUFNLFdBQU5BOztXQUNFVSxlQUFKUjtPQUN2QixXQUR1QkEsTUF4QnpCcVkscUJBeUI4Q3owQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7V0FFSEMsaUJBQU0sV0FBTkE7bUJBQ0RFLGlCQUFNLFdBaEIvQjJYLFVBZ0J5QjNYOztHQUEyQztZQUVwRXNYLFdBQVdyMEIsR0FBSSxPQUFBLDRCQTMyQmZ5ZSxXQTIyQld6ZSxHQUF3Qjs7OztPQTErQm5DK2I7T0FJSWlCO09BWUpPO09BMEdBOEM7T0FLQTVCO09BUUFmO09BZUE0QztPQVlBMEQ7T0E0Q0F2RDtPQVlBZ0U7T0EwQ0FJO09BV0FEO09BVUF2SDtPQUdBK0g7T0FLQUk7T0FPQXJKO09BR0F1SjtPQVFBRztPQW1DQVM7T0FJQUY7T0FJQUs7T0FZQUk7T0ErQkE3RTtPQVFBa0Y7T0FZQUk7T0E4QkFFO09BT0F0QjtPQWVBM0U7T0FZQTRHO09Bb0JBRTtPQVlBSTtPQXFCQUM7T0FpQkFqRDtPQUdBa0Q7T0FRQUc7T0ErQkF6QztPQUtBNkM7T0FJQXBDO09BWUF3QztPQWVBQztPQVFBRztPQWFBSTtPQTRCQXBIO09BS0E4RDtPQTRCQXVEO09BS0FkO09BSUExQztPQWlCQVE7T0FlQVE7T0FLQXBCO09BZ0JBNEM7T0FlQS9DO09BdUJBdEU7T0FlQWdMO09BU0EzRztPQWlDQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FLQTNFO09BaUJBeEg7T0FLQTJGO09BS0FsRDtPQUVBcEQ7T0FJQUg7T0FTQWlYO09BR0FFO09BRUFuWTtPQUtBa0k7T0FDQWdRO09BRUl6WTtPQU1KTTtPQVVBOFg7T0FwMUJBL1Q7T0FsSkl0RDtPQTBNSnlEOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztZQzlNSXpEO0lBQ1A7S0FHTUM7S0FEQUU7S0FEQUM7S0FPNEIsT0F5US9CQyxnQkE5UUdKO0lBRUwsV0FNRU0scUJBVkdILFlBQ0FEO0dBT0o7WUFFQ0k7SUFDaUUsOEJBdUc5Qjs7O1dBdEdUckIsZUFDeEIsV0F1N0JGTSxTQUZBbVksZ0JBdDdCMEJ6WTs7V0FFR0UsaUJBQzNCLFdBdTZCRm9CLGNBeDZCNkJwQjs7T0FJMEI7UUFGdEJxQjtRQUFKYjtRQUFKQztRQUU4QixPQXBCbkRHLGdCQWtCNkJTO1FBRVYsT0FBQSw0QkErR3ZCQyxvQkFqSDZCZDtPQUMzQixXQWk2QkZlLGNBbDZCeUJkOztXQUdJRTtPQUMzQixXQUEyQiw0QkFxRzdCMEIsV0F0RzZCMUI7O09BT3ZCO1FBTCtCa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS25CLE9BNUJGeEIsZ0JBdUJpQ2lEO1FBSS9CLE9BdUhOSyxhQTNIaUNqQjtRQUczQixPQXU2Qk5vVixZQWo4Qkl6WCxpQkF1QnlCcUI7T0FDM0IsV0FnNUJGQyxlQWo1QnlCRTs7T0FTbkI7UUFIeUJEO1FBQUpJOzttQkFJZDNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BbkMxQmdkLGdCQWtDY0o7V0FDUixXQXE0QlYwQixlQXQ0QmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh5QnFDO09BQzdCLFdBOUJFdkIsZ0JBNkJ1QjJCOztPQVNvQjtRQURoQkQ7UUFBSkU7UUFDb0IsT0FBQSw0QkFxRi9DSCxXQXRGK0JDO09BQzdCLFdBdENFMUIsZ0JBcUN1QjRCOztPQUdrQjtRQURoQkM7UUFBSkM7UUFDb0IsT0FBQSw0QkFtRjdDTCxXQXBGNkJJO09BQzNCLFdBeENFN0IsZ0JBdUNxQjhCOztXQUVDRTtPQUN4QixXQUF3Qiw0QkExQ3RCaEMsaUJBeUNzQmdDOztPQUlPO1FBRkVEO1FBQUpHO1FBRUUsT0FvNUJqQ3VWLFlBajhCSXpYLGlCQTJDK0IrQjtPQUNqQyxXQTA1QkZ2QyxTQUZBbVksZ0JBejVCK0J6Vjs7V0FHRUQsaUJBQUpHO09BQzNCLFlBRDJCQSxNQW01QjdCcVYsWUFqOEJJelgsaUJBOEM2QmlDOztPQVMzQjtRQVAwQkU7UUFBSkk7UUFPdEIsT0EwNEJOa1YsWUFqOEJJelgsaUJBZ0Q0Qm1DOzttQkFHbkJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQXJEbkNnZCxnQkFvRGNKO1dBQ1IsV0FpNUJWSixTQUZBbVksZ0JBaDVCY3pZO1VBQzRDO09BSnhELFlBQ0ksa0NBRnNCcUQ7O09BU21CO1FBRGhCRDtRQUFKRTtRQUNvQixPQTY0Qi9DaEQsU0FGQW1ZLGdCQTU0QitCclY7T0FDN0IsWUF6REV0QyxnQkF3RHVCd0M7O09BSTBCO1FBRmZDO1FBQUpDO1FBQUpDO1FBRXVCLE9BNURqRDNDLGdCQTBEa0N5QztRQUViLE9BMDRCekJqRCxTQUZBbVksZ0JBMTRCa0NqVjtPQUNoQyxZQTNERTFDLGdCQTBEMEIyQzs7V0FHSkU7T0FDeEIsWUFBd0IsNEJBOUR0QjdDLGlCQTZEc0I2Qzs7T0FJbUI7UUFGTEs7UUFBSk47UUFBSkc7UUFFYSxPQWc0QjdDMFUsWUFqOEJJelgsaUJBK0RvQ2tEO1FBRWYsT0FqRXJCbEQsZ0JBK0RnQzRDO09BQ2xDLFlBaEVFNUMsZ0JBK0Q0QitDOztPQUlrQixJQURoQkQsa0JBQUpNLGtCQUNvQixPQW5FOUNwRCxnQkFrRThCOEM7T0FDaEMsWUFuRUU5QyxnQkFrRTBCb0Q7O09BR2lCLElBRGhCRCxrQkFBSkssa0JBQ29CLE9BckUzQ3hELGdCQW9FMkJtRDtPQUM3QixZQXJFRW5ELGdCQW9FdUJ3RDs7T0FRckI7UUFObUNSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNbkIsT0E1RUY1RCxnQkFzRXFDZ0Q7UUFLbkMsT0EyQ05LLG9CQWhEcUMySjtRQUkvQixPQTFFRmhOLGdCQXNFNkIwRDtRQUczQixPQXpFRjFELGdCQXNFeUJ1RDtPQUMzQixZQTJFRkQsYUE1RXlCTTs7T0FRMkIsSUFEaEJELGtCQUFKRyxrQkFDb0IsT0E0SHBETCxlQTdIb0NFO09BQ2xDLFlBOUVFM0QsZ0JBNkU0QjhEOztPQUl3QjtRQUZwQk07UUFBSlA7UUFBSkc7UUFFNEIsT0F5SHhEUCxlQTNIb0NXO1FBRVgsT0FnM0J6QnFULFlBdnZCQWhVLGdCQTNIZ0NJO09BQzlCLFlBaEZFN0QsZ0JBK0V3QmdFOztPQUlrQjtRQURoQkM7UUFBSkM7UUFDb0IsT0FtM0I5QzFFLGtCQW4zQjREeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHBDaWhCO09BQzVCLFlBbkZFakUsZ0JBa0ZzQmtFOztXQUVGQyxrQkFDdEIsWUFpM0JGM0UsU0FGQW1ZLGdCQWgzQndCeFQ7O09BR2tDLElBRHRCRSxrQkFBSkMsa0JBQzBCLE9BdkZ0RHRFLGdCQXNGZ0NxRTtPQUNsQyxZQSsyQkY3RSxrQkEvMkI4Q3hjLEdBQUssT0FBTEEsRUFBTSxHQURwQnNoQjs7O1FBRUhHOzttQkFHakJ6aEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0E3RmhDZ2QsZ0JBNEZhSjtXQUNSLFdBeTJCVEosa0JBejJCd0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztVQUMwQztPQUpyRCxZQUNFLGtDQUZ5QnVGOztPQVN1QjtRQUZid1A7UUFBSnpQO1FBQUpHO1FBRXFCLE9BakdoRDNFLGdCQStGbUNpVTtRQUVSLE9BdVcvQjFQLGlCQXpXbUNDO09BQ2pDLFlBczJCRmhGLGtCQXIyQm1CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk0yaEI7O09BS0ssSUFGRUUsa0JBQUpELGtCQUVFLE9BcEdoQzVFLGdCQWtHa0M2RTtPQUNwQyxZQXdyQkZILDJCQXpyQmtDRTs7V0FHUEUsa0JBQ3pCLFlBdEdFOUUsZ0JBcUd1QjhFOztXQUVGQyxrQkFBTSxZQXZHM0IvRSxnQkF1R3FCK0U7O09BRXFCO1FBRGhCRTtRQUFKQztRQUNvQixPQXcxQjlDdVMsWUF2dkJBaFUsZ0JBbEc4QndCO09BQzVCLFlBekdFakYsZ0JBd0dzQmtGOztXQUVDQyxrQkFDekIsWUFxUkZILHFCQXRSMkJHOztPQUc0QixJQUR0QkMsa0JBQUpDLGtCQUMwQixPQTdHbkRyRixnQkE0RzZCb0Y7T0FDL0IsWUF5MUJGNUYsa0JBejFCMkN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEcEJxaUI7O1dBRUpFLGtCQUFNLFlBMFYvQmhCLGlCQTFWeUJnQjs7T0FHK0I7UUFGdEJ1UztRQUFKNUQ7UUFBSnpPO1FBRThCLE9BakhwRHpGLGdCQStHOEI4WDtRQUVOLE9BcTFCNUJ0WSxTQUZBbVksZ0JBcjFCOEJ6RDtPQUM1QixZQWduQkYzSixtQkFqbkIwQjlFO21CQUdJdU8sa0JBQzVCLFlBbWlCRnRPLGVBcGlCOEJzTzs7R0FFa0M7WUFFaEUzUSwyQkFDNkQscUJBRW5CO1lBRTFDNUI7SUFDSDtLQUFzRG5FO0tBQXpCQztLQUF2QkM7S0FJbUIsT0FoSWxCd0MsZ0JBNEgrQzFDO0tBRzNCLE9BazBCeEJtYSxZQWo4Qkl6WCxpQkE0SHNCekM7SUFDNUIsV0FxQkUrRixhQXRCRzlGO0dBS0o7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUTJCLE9Bb0k5QnJHLGdCQTFJR2tHO0tBS3FCLE9BN0lwQnZHLGdCQXVJRHlHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUdNc0Q7S0FEQUU7S0FEQUM7S0FPNEIsT0F1SC9CMUcsZ0JBNUhHdUc7SUFFTCxXQU1FSSxrQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNFLDhCQUN5Qjs7O1dBQ0g5SCxlQUN0QixXQW95QkZNLGtCQXB5QnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCa2M7O09BR29CO1FBRGJVO1FBQUpSO1FBQ2lCLE9Ba3lCNUNJLGtCQWx5QjBEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpDNGM7T0FDN0IsV0FsQkYwRCxhQWlCMkJsRTs7V0FFRVMsaUJBQzNCLFdBa3hCRlcsY0FueEI2Qlg7O09BR21CLElBRGR3QixpQkFBSnRCLGlCQUNrQixPQWd4QmhEUyxjQWp4QmtDYTtPQUNoQyxXQWd4QkZiLGNBanhCOEJUOztXQUVKeUI7T0FDeEIsV0FBd0IsNEJBeEIxQjhCLGNBdUIwQjlCOztPQUlPO1FBRkVEO1FBQUpJO1FBRUUsT0FveEJqQzhWLFlBL3lCQW5VLGNBeUJtQy9CO09BQ2pDLFdBMHhCRi9CLFNBRkFtWSxnQkF6eEIrQmhXOztXQUdFRCxpQkFBSkU7T0FDM0IsV0FEMkJBLE1BbXhCN0I2VixZQS95QkFuVSxjQTRCaUM1Qjs7T0FTM0I7UUFQMEJHO1FBQUpDO1FBT3RCLE9Bc3ZCTm1GLGlCQTd2QmdDcEY7O21CQUduQjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BbkN2Q3NnQixhQWtDa0IxRDtXQUNSLFdBaXhCVkosU0FGQW1ZLGdCQWh4QmN6WTtVQUN5QztPQUpyRCxXQUNJLGtDQUZzQjRDOztXQVFGRTtPQUN4QixXQUF3Qiw0QkF2QzFCc0IsY0FzQzBCdEI7O09BR2UsSUFEYkQsaUJBQUpHLGlCQUNpQixPQXpDekNvQixhQXdDNEJ2QjtPQUMxQixXQXpDRnVCLGFBd0N3QnBCOztPQUd5QixJQURiRCxpQkFBSkcsaUJBQ2lCLE9BYWpEcUIsZUFkb0N4QjtPQUNsQyxZQTNDRnFCLGFBMENnQ2xCOztXQUVQRyxrQkFDdkIsWUF1d0JGL0MsU0FGQW1ZLGdCQXR3QnlCcFY7O1dBRUFDLGtCQUFNLFlBOUMvQmMsYUE4Q3lCZDs7V0FDRUc7T0FDekIsWUFvd0JGbkQsa0JBcHdCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEckIyZjs7V0FFR0Usa0JBQzVCLFlBbERGUyxhQWlEOEJUOztXQUVBRSxrQkFDNUIsWUFnZEYyQyxlQWpkOEIzQzs7T0FHd0IsSUFEeEJaLGlCQUFKaUIsa0JBQzRCLE9BdER0REUsYUFxRDhCbkI7T0FDNUIsWUE4dkJGM0MsU0FGQW1ZLGdCQTd2QjBCdlU7O0dBQzRDO1lBRXRFSztJQUNIO0tBR000RDtLQURBRTtLQURBQztLQU80QixPQStEL0JuSCxnQkFwRUdnSDtJQUVMLFdBTUVJLG9CQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdtQjtRQUZSdUI7UUFBSmI7UUFBSlI7UUFFZ0IsT0FsQjNDcUUsZUFnQm1DaEQ7UUFFWCxPQWxCeEJnRCxlQWdCK0I3RDtPQUM3QixXQTZzQkYwQixlQTlzQjJCbEM7O1dBR0RTO09BQ3hCLFdBQXdCLDRCQXBCMUI0RCxnQkFtQjBCNUQ7O09BSU87UUFGRHdCO1FBQUp0QjtRQUVLLE9BQUEsNEJBdkJqQzBELGdCQXFCZ0NwQztPQUM5QixXQXN1QkY3QixTQUZBbVksZ0JBcnVCNEI1WDs7T0FXdEI7UUFSMEJ3QjtRQUFKQztRQVF0QixPQW1zQk55RixpQkEzc0JnQzFGOzttQkFHbkJ2ZTtXQUNIO1lBQVl5ZCxLQURUemQ7WUFDSzRjLEtBREw1YztZQUNDa2MsS0FERGxjO1lBRzhDLE9BOUIzRHlnQixlQTRCc0JoRDtZQUVpQixPQTBDdkNKLGdCQTVDa0JUO1dBQ1IsV0ErdEJWSixrQkE5dEIyQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZuQmtjO1VBRStEO09BTDNFLFdBQ0ksa0NBRnNCc0M7O09BV0s7UUFGRkU7UUFBSkM7UUFFTSxPQUFBLDRCQW5DakM4QixnQkFpQytCL0I7T0FDN0IsV0EwdEJGbEMsU0FGQW1ZLGdCQXp0QjJCaFc7O1dBR0lFLGlCQUFKRDtPQUN6QixXQXJDRjZCLGVBb0MyQjdCLE9BQUlDOztPQU16QjtRQUorQlE7UUFBSk47UUFBSkQ7UUFJdkI7VUE2c0JOMlY7cUJBN3NCdUJ6MEIsR0FBSyxPQUFBLDRCQThyQjVCK2dCLFlBOXJCdUIvZ0IsR0FBMEI7WUFKWnFmO1FBRy9CLE9BMHJCTjRFLGlCQTdyQmlDbEY7T0FDL0I7ZUFDSSw0QkFzQk42RixnQkF4QjZCOUY7Ozs7T0FPd0I7UUFGdkJHO1FBQUpEO1FBRTJCLE9BN0NyRHlCLGVBMkM4QnhCO3dCQUVYamYsR0FBSyxPQStzQnhCd2Msa0JBL3NCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FBekJBLEdBQTRCO09BRDdDLFdBQ0csa0NBRnFCZ2Y7O1dBR0VFLGlCQUMxQixXQUlGMkYsa0JBTDRCM0Y7bUJBRUVFLGlCQUM1QixZQTJaRnNELGVBNVo4QnREOztHQUNtQjtZQUVqRHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQTNEakN5Z0IsZUEwRFk3RDtLQUNSLFdBaXNCSkosU0FGQW1ZLGdCQWhzQlF6WTtJQUMyQztJQUhuRCxXQUFBLGtDQUZNVTtJQUNSLFdBcXNCRUosU0FGQW1ZLGdCQXBzQkV6WTtHQU1JO1lBRU4wSTtJQUNGO0tBTVE7TUFMMkIzRTtNQUFKeEM7TUFBSmI7TUFBSlY7TUFLZixPQUFBLDRCQXJFTnVFLGdCQWdFaUNSO01BSTNCLE9BOHJCTnlVLFVBbHNCNkJqWDtNQUd2QixPQUtOSixnQkFSeUJUO0tBQ3ZCLGVBRG1CVjs7UUFNR0U7SUFBTSxXQXRFOUJxRSxlQXNFd0JyRTtHQUErQztZQUV2RWlCLGdCQUNDcmQ7SUFBSyxPQUFBLDRCQUVOb2xCLGdCQUZDcGxCO0dBQThCO1lBRS9Cb2xCLGVBQ0NwbEI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0FFekJ3bEIsYUFITTVJO0lBQ1IsV0E4cUJFSixrQkE5cUJheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSjtJQUFnRTs7V0FDNUN0SixlQUFNLFdBTTFCQyxlQU5vQkQ7O1dBQ0FFLGlCQUFNLFdBNlAxQnFKLGVBN1BvQnJKOztXQUNBUyxpQkFBTSxXQW5GMUI0RCxlQW1Gb0I1RDs7T0FFa0I7UUFEYkQ7UUFBSkc7UUFDaUIsT0FrcUJ0QzBYLFlBajhCSXpYLGlCQThScUJKO09BQ3ZCLFdBN0lGMEQsYUE0SXFCdkQ7O0dBQ2dEO1lBRXJFWixlQUNDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O09BRWdELElBRGhCakosZUFBSlYsZUFDb0IsT0E5QjlDbUIsZ0JBNkI4QlQ7T0FDNUIsV0FoVEVJLGdCQStTc0JkOztPQUdtQjtRQURkbUM7UUFBSmpDO1FBQ2tCLE9BQUEsNEJBL0s3Q3NCLG9CQThLK0JXO09BQzdCLFdBa29CRlYsY0Fub0IyQnZCOztXQUVHUyxpQkFDNUIsV0FtbUJGaUosdUJBcG1COEJqSjs7T0FJUDtRQUZPMEI7UUFBSnhCO1FBRUgsT0FBQSw0QkE0ZnZCZ0osdUJBOWY4QnhIO09BQzVCLFdBOG5CRlosY0EvbkIwQlo7O1dBR0N5QixpQkFDekIsV0EyY0Z3SCxvQkE1YzJCeEg7O1dBRUdHLGlCQUM1QixXQWdlRitDLDJCQWplOEIvQzs7V0FFSEMsaUJBQ3pCLFdBNEhGc0gsb0JBN0gyQnRIOztXQUVHRTtPQUM1QixXQUE0Qiw0QkEwSDlCb0gscUJBM0g4QnBIOztXQUVGRSxpQkFDMUIsV0FvYUZtSCw2QkFyYTRCbkg7O1dBRUhFLGlCQUN2QixXQThZRjZILHNCQS9ZeUI3SDs7V0FFQ0U7T0FDeEIsWUFBd0IsNEJBYzFCZ0gsd0JBZjBCaEg7O1dBRUtHO09BQzdCO2VBQTZCLDRCQTRQL0I4Ryw2QkE3UCtCOUc7O1dBRUhDLGtCQUMxQixZQU1GOEcseUJBUDRCOUc7O1dBRUVHLGtCQUM1QixZQXRERnlGLGVBcUQ4QnpGOztPQUdvQixJQURmakIsaUJBQUptQixrQkFDbUIsT0EzRGxEeEMsZ0JBMERtQ3FCO09BQ2pDLFlBeVVGZ0UsZUExVStCN0M7O0dBQ3NDO1lBRXJFeUcseUJBRUN0bUI7SUFBSyxPQStXTnVtQixtQkF4UEFoRixrQkF2SEN2aEI7R0FBMEM7WUFFM0NvbUIsdUJBRUNwbUI7SUFBSyxPQXNVTndtQixpQkFwVUFDLGlCQUZDem1CO0dBQXVDO1lBRXhDeW1CO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPMkIsT0E5RTlCdkosZ0JBeUVHcUo7SUFFTCxXQU1FRyxxQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUNpRTs7T0FHaEM7UUFGRmpLO1FBQUpWO1FBRU0sT0FBQSw0QkE3SmpDdUUsZ0JBMkorQjdEO09BQzdCLFdBZ21CRkosU0FGQW1ZLGdCQS9sQjJCelk7O1dBR0VFLGlCQUMzQixXQXVCRjRGLHFCQXhCNkI1Rjs7T0FPdkI7UUFMOEI2RDtRQUFKeEM7UUFBSlk7UUFBSnhCO1FBS2xCLE9BeEJONEosZ0JBbUJvQ3hHO1FBSTlCLE9BNU5OSyxhQXdOZ0M3QztRQUcxQixPQW9sQk5nWCxZQWo4Qkl6WCxpQkEwV3dCcUI7T0FDMUIsV0E2akJGQyxlQTlqQndCekI7O09BU2xCO1FBSHdCMEI7UUFBSnhCOzttQkFJYi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BdFgxQmdkLGdCQXFYY0o7V0FDUixXQWtqQlYwQixlQW5qQmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh3QnFDO09BQzVCLFdBMUJGa0ksZ0JBeUIwQjFKOztPQVU2QjtRQUZ2QnNDO1FBQUpYO1FBQUpGO1FBRStCLE9BbkN2RGlJLGdCQWlDZ0NwSDtRQUVULE9BQUEsNEJBdlB2QjNCLG9CQXFQNEJnQjtPQUMxQixXQTJqQkZmLGNBNWpCd0JhOztPQUkyQixJQURoQkssaUJBQUpGLGlCQUNvQixPQWdObkRtSSxnQkFqTm1Dakk7T0FDakMsV0FyQ0Y0SCxnQkFvQytCOUg7bUJBRUZDLGlCQUMzQixXQXdSRjhELGVBelI2QjlEOztHQUNtQjtZQUVoRG9EO0lBRUg7S0FBaUNnRjtLQUEzQkM7S0FHeUIsT0FBQSw0QkFHNUJDLGtCQU44QkY7SUFDaEMsV0FqUEUxRyxhQWdQRzJHO0dBSUo7WUFFQ0M7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQS9IOUJoSyxnQkEwSEc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztPQUs3RDtRQUo4QjdKO1FBQUpiO1FBQUpWO3dCQUlLbGMsR0FBSyxPQUFMQSxFQUFNO1FBQWpDLE9BdWlCTnkwQiwyQixPQUtBalksd0JBaGpCb0NpQjtRQUc5QixPQWxFTmdKLGdCQStEZ0M3SjtPQUM5QixXQXlVRjJLLG1CQTFVNEJyTDs7T0FNMUI7UUFEcUJFO1FBRU5pRCxPQUZNakQ7UUFFVmlDLE9BRlVqQztRQUVkUyxPQUZjVDtRQUtoQixPQWtCUG9MLHNCQXJCaUJuSTtRQUVWLE9BOGVQb0ksa0JBaGZhcEo7T0FEWCxlQTBpQkY3QixrQkF4aUJxQnhjLEdBQUssT0FBTEEsRUFBTSxHQURsQjZjOztPQUtQO1FBRHdCRTtRQUVUMEMsT0FGUzFDO1FBRWJ3QixPQUZheEI7UUFFakJ5QixPQUZpQnpCO1FBS25CLE9BWVB5SyxzQkFmaUIvSDtRQUVWLE9BK2FQaUksa0JBamJhbko7T0FEWCxlQW9pQkYvQixrQkFsaUJxQnhjLEdBQUssT0FBTEEsRUFBTSxHQURsQndlOztPQUtQO1FBRDRCRztRQUVqQkQsT0FGaUJDO1FBRXJCQyxPQUZxQkQ7UUFHTCxPQWhPekI4QixlQStOYS9CO09BRFgsZUE5TkYrQixlQStOUzdCOztXQUVzQkUsaUJBQzdCLFdBNWFFOUIsZ0JBMmEyQjhCOztXQUVGRSxpQkFDM0IsV0F6SkZvRyxlQXdKNkJwRzttQkFFQUUsaUJBQzNCLFdBc09Gd0QsZUF2TzZCeEQ7O0dBQ21CO1lBRWhEc0k7SUFDbUUsdUJBQ3hDdEwsZUFDekIsV0EzT0Z1RSxlQTBPMkJ2RTtJQUd5QixJQURuQlUsZUFBSlIsaUJBQ3VCLE9BdmJoRFksZ0JBc2I2Qko7SUFDL0IsV0F5U0YySyxtQkExUzZCbkw7R0FDMEM7WUFFdkU4SjtJQUVIO0tBSU0wQjtLQURBQztLQURBQztLQURBQztLQVEyQixPQWxMOUIxSyxnQkE0S0d3SztLQUtxQixPQUt4QnRHLGlCQVhHdUc7SUFJTDtZQXFnQkV0TCxrQkFwZ0JzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU56QytuQjs7O1lBR0FIO0dBT0o7WUFFQ3JHO0lBQ0g7S0FHTXlHO0tBREFDO0tBREFDO0tBTzRCLE9BL0wvQjdLLGdCQTBMRzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O1dBQ3pDak0sZUFDeEIsV0ErZUZNLFNBRkFtWSxnQkE5ZTBCelk7O1dBRUlFLGlCQUM1QixXQXhMRkQsZUF1TDhCQzs7T0FNeEI7UUFKK0JxQjtRQUFKYjtRQUFKQztRQUl2QixPQXRCTjBFLGlCQWtCcUM5RDtRQUcvQixPQW9lTmdYLFlBemRBcE0sa0JBZGlDekw7T0FDL0IsV0EyZUZKLGtCQTFlb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGRzZjOztPQU1tQixJQURqQndCLGlCQUFKdEIsaUJBQ3FCLE9BeEJoRHdFLGlCQXVCK0JsRDtPQUM3QixXQXhCRmtELGlCQXVCMkJ4RTs7T0FHMEIsSUFEakJ3QixpQkFBSkMsaUJBQ3FCLE9BTXJENkosaUJBUG9DOUo7T0FDbEMsV0ExQkZnRCxpQkF5QmdDL0M7O1dBRUxHLGlCQUN6QixXQXBlRTNCLGdCQW1ldUIyQjttQkFFR0MsaUJBQzVCLFdBZ0xGOEQsZUFqTDhCOUQ7O0dBQ21CO1lBRWpEeUo7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU80QixPQS9OL0JuTCxnQkEwTkdpTDtJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztXQUN6Q3ZNLGVBQ3hCLFdBK2NGTSxTQUZBbVksZ0JBOWMwQnpZOztXQUVJRSxpQkFDNUIsV0FnQ0ZxSixlQWpDOEJySjs7T0FNeEI7UUFKK0JxQjtRQUFKYjtRQUFKQztRQUl2QixPQXRCTndMLGlCQWtCcUM1SztRQUcvQixPQW9jTmdYLFlBemRBcE0sa0JBa0JpQ3pMO09BQy9CLFdBMmNGSixrQkExY29CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7T0FPSDtRQUZJd0I7UUFBSnRCO1FBRUEsT0FBQSw0QkFRMUIyTCxzQkFWOEJySztPQUM1QixXQXhCRmdLLGlCQXVCMEJ0TDs7V0FHQ3lCLGlCQUN6QixXQTNERitDLGlCQTBEMkIvQzs7V0FFR0csaUJBQzVCLFdBaUpGK0QsZUFsSjhCL0Q7O1dBRUpDLGlCQUN4QixXQStiRnBDLFNBRkFtWSxnQkE5YjBCL1Y7O0dBQzRCO1lBRXREOEo7SUFDaUU7O09BR2hDLElBRkY5TCxlQUFKVixlQUVNLE9Bc1NqQzZKLHNCQXhTK0JuSjtPQUM3QixXQTBiRkosU0FGQW1ZLGdCQXpiMkJ6WTs7T0FLTTtRQUZBbUM7UUFBSmpDO1FBRUksT0FzYmpDSSxTQUZBbVksZ0JBdGJpQ3RXO09BQy9CLFdBdWJGN0IsU0FGQW1ZLGdCQXRiNkJ2WTs7T0FNdkI7UUFIeUJTO1FBR3pCLE9BK1JOa0osc0JBbFMrQmxKO2VBQUFBO09BQzdCLFdBb2JGTCxrQkFuYm9CeGMsR0FBSyxXQUFMQSxHQUF1Qjs7T0FJSztRQUZidWU7UUFBSnhCO1FBRWlCLE9BK2FoRFAsU0FGQW1ZLGdCQS9hbUNwVztPQUNqQyxXQWdiRi9CLGtCQS9hbUJ4YyxHQUFLLFdBQUxBLEdBQXVCLEdBRlgrYzs7R0FFNEM7WUFFM0UwSSxlQUNDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQWdDQyxxQkFBMUJDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTBCRDtHQUk5QjtZQUVDRTtJQUVGOztXQUM0QjVNLGVBQ3hCLFdBK1dGNEosdUJBaFgwQjVKOztPQUlIO1FBRk9VO1FBQUpSO1FBRUgsT0FBQSw0QkF3UXZCMkosdUJBMVE4Qm5KO09BQzVCLFdBMFlGZSxjQTNZMEJ2Qjs7V0FHQ1MsaUJBQ3pCLFdBdU5GbUosb0JBeE4yQm5KOztXQUVHRSxpQkFDNUIsV0E0T0YyRSwyQkE3TzhCM0U7O1dBRUh5QixpQkFDekIsV0FvTUZ1Syx3QkFyTTJCdks7O1dBRUdHO09BQzVCLFdBQTRCLDRCQWtNOUJvSyx5QkFuTThCcEs7O1dBRUZDLGlCQUMxQixXQWdMRnVILDZCQWpMNEJ2SDs7V0FFSEUsaUJBQ3ZCLFdBMEpGaUksc0JBM0p5QmpJOztXQUVHRSxpQkFDMUIsV0FtSUZpSyx5QkFwSTRCaks7O1dBRUZFO09BQ3hCLFdBQXdCLDRCQWExQmdLLHdCQWQwQmhLOztXQUVLRTtPQUM3QjtlQUE2Qiw0QkFNL0JpSCw2QkFQK0JqSDs7V0FFREcsa0JBQzVCLFlBMVNGNkYsZUF5UzhCN0Y7O09BR29CLElBRGZsQixpQkFBSm1CLGtCQUNtQixPQS9TbERuQyxnQkE4U21DZ0I7T0FDakMsWUFxRkZxRSxlQXRGK0JsRDs7R0FDc0M7WUFFckU2Ryw0QkFHQ3JtQjtJQUFLLE9BcUZOd21CLGlCQS9FQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQWlGTndtQixpQkEvRUFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBQ0g7S0FHTXFDO0tBREFDO0tBREFDO0tBTzRCLE9BblUvQmhNLGdCQThURzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDaUU7O09BR2hDO1FBRkQxTTtRQUFKVjtRQUVLLE1BQUEsNEJBbFpqQ3VFLGdCQWdaZ0M3RDtPQUM5QixXQTJXRkosU0FGQW1ZLGdCQTFXNEJ6WTs7V0FHRUUsaUJBQzVCLFdBT0ZtTixxQkFSOEJuTjs7T0FJYTtRQUZScUI7UUFBSlk7UUFBSnhCO1FBRWdCLE1BckIzQ2lLLGdCQW1CbUNySjtRQUVYLE9Bdlp4QmdELGVBcVorQnBDO09BQzdCLFdBd1VGQyxlQXpVMkJ6QjttQkFHR0UsaUJBQzVCLFdBbURGMkYsZUFwRDhCM0Y7O0dBQ21CO1lBRWpEd007SUFFSDtLQUFpQ0M7S0FBM0JDO0tBR3lCLE1BQUEsNEJBRzVCQyx1QkFOOEJGO0lBQ2hDLFdBOVpFL0ksZUE2WkdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsTUFyVy9CeE0sZ0JBZ1dHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUM4QjVOLGVBQzFCLFdBbERGNEssZ0JBaUQ0QjVLOztPQUcxQjtRQURzQkU7UUFFSDZELEtBRkc3RDtRQUVQcUIsS0FGT3JCO1FBRVhRLEtBRldSO1FBRWZTLE9BRmVUO1FBTWpCLE1BM2JQcUUsZUF1YnFCUjtRQUdkLE1BbURQOEosa0JBdERpQnRNO1FBRVYsTUEwUVBnSyxrQkE1UWE3SztPQURYLGVBc1VGSixrQkFwVXFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCNmM7O09BTVA7UUFEeUJFO1FBRU5pTixPQUZNak47UUFFVnNDLE9BRlV0QztRQUVkc0IsT0FGY3RCO1FBRWxCeUIsT0FGa0J6QjtRQU1wQixNQWxjUDBELGVBOGJxQnVKO1FBR2QsTUE0Q1BELGtCQS9DaUIxSztRQUVWLE1BME1QcUksa0JBNU1hcko7T0FEWCxlQStURjdCLGtCQTdUcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEJ3ZTs7T0FNUDtRQUQ2Qkc7UUFFbEJKLE9BRmtCSTtRQUV0QkMsT0FGc0JEO1FBR04sTUF0Y3pCOEIsZUFxY2FsQztPQURYLGVBcGNGa0MsZUFxY1M3Qjs7V0FFcUJFLGlCQUM1QixXQTdYRnNHLGVBNFg4QnRHO21CQUVBRSxpQkFDNUIsV0FFRjBELGVBSDhCMUQ7O0dBQ21CO1lBRWpEMEQsZUFDQzFpQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixNQS9YekJ3bEIsYUE4WE01STtJQUNSLFdBNlNFSixrQkE3U2F4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NLLGlCQUtDeUQ7SUFBSjtLQU9NQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQWtCMkIsTUFsYTlCbE4sZ0JBcVpHNk07S0FXcUIsTUFBQSxXQWxCdkJELElBS0VHO0tBWXFCLE1BcVJ4QjVOLGtCQXJSc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FiekNxcUI7aUJBU01ycUI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUFtTzFCeXFCLGNBcE9jN047S0FDUixXQXJlTjZELGVBb2VVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FUQ29PO0lBTUwsV0FjRVAsa0JBckJHUSwwQkFJQUo7R0FlSjtZQUVDSix5QkFDRixxQkFFZ0Q7WUFFOUNkLHlCQUVDanBCO0lBQUssT0FFTnVtQixtQkF4TkE4QixrQkFzTkNyb0I7R0FBMEM7WUFFM0N1bUIsbUJBS0MwRDtJQUFKO0tBSU1TO0tBREFDO0tBREFDO0tBTzZCLE1BNWJoQ3ZOLGdCQXViR3FOO0lBRUwsV0FDMkIsV0FQeEJULElBRUVXLFlBQ0FEO0dBT0o7WUFFQzVEO0lBRUg7S0FJTThEO0tBREFDO0tBREFDO0tBREFrSztLQVM2QixNQTNjaEM1WCxnQkFxY0d3TjtLQUkyQixNQUs5QnRELG1CQVhHd0Q7SUFJTCxXQTZPRXZPLFNBRkFtWSxnQkFoUEdNLGlCQUVBbks7R0FRSjtZQUVDdkQsMEJBQzJELHFCQUVuQjtZQUV4Q3BCO0lBR0g7S0FJTThFO0tBREFDO0tBREFDO0tBREFDO0tBUTRCLE1BL2QvQi9OLGdCQXlkRzZOO0tBS3NCLE1BaU56QnVKLFlBemRBcE0sa0JBa1FHOEM7SUFJTDtZQXdORTNPLGtCQXZOdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUNvckI7OztZQUdBSDtHQU9KO1lBRUNsQztJQUVIO0tBSU0wQztLQURBQztLQURBQztLQURBQztLQVEyQixNQTllOUJ2TyxnQkF3ZUdxTztLQUtxQixNQXZSeEJyRCxpQkFpUkdzRDtJQUlMLFdBeU1FblAsa0JBeE1zQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU56QzRyQixxQkFHQUg7R0FPSjtZQUVDekY7SUFFSDtLQUtNZ0c7S0FEQUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FpQjhCLE1BdGdCakNoUCxnQkF5ZkcyTztLQVkyQixNQTZEOUJ0RSxrQkExRUd3RTtLQVlEO09BQUE7MEJBS0Z4Syw0QkFsQkd5SztpQkFRTW5zQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQStIMUJ5cUIsY0FoSWM3TjtLQUNSLFdBemtCTjZELGVBd2tCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBUkNrUTtJQUtMLFdBeUxFNVAsU0FGQW1ZLGdCQTdMR3RJO0dBa0JKO1lBRUMzSztJQUVIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVM0QixNQXJoQi9CcFAsZ0JBK2dCR2lQO0tBSXNCLE1BS3pCSSwrQkFYR0Y7SUFJTDtZQW1LRWhRLGtCQWxLdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUN5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRTBDO0tBR04sSUFGTjlQLGVBQUpWLGVBRVUsTUFrSnBDdVksWUF2dkJBaFUsZ0JBbW1COEI3RDtLQUM1QixXQXNFRitQLDJCQXZFMEJ6UTs7UUFHQ0U7SUFDekIsV0FxSkZJLFNBRkFtWSxnQkFwSjJCdlk7R0FDNEI7WUFFdkQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTBCNkIsTUE5akJoQzlQLGdCQTBpQkd3UDtLQW1CMkIsTUFrSDlCNEgsWUF2dkJBaFUsZ0JBaW5CR3FNO0tBbUIwQixNQU03QnBGLGtCQTFCR3FGO0tBbUJ1QixNQVkxQkssZUFoQ0dKO2lCQWdCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1Bam9CMUJ5Z0IsZUFnb0JjN0Q7S0FDUixXQWpvQk42RCxlQWdvQlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FoQkN3UDtpQkFXTWp0QjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQTZFMUJ5cUIsY0E5RWM3TjtLQUNSLFdBM25CTjZELGVBMG5CVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBWENnUjtJQVFMO1lBdUlFMVEsa0JBdEl3Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVYzQ210Qjs7Ozs7OztZQU9BUDtHQXFCSjtZQUVDbEYseUJBQ0YscUJBRTRDO1lBRTFDMEY7SUFDRjs7U0FFK0JsUjtLQUMzQixXQUEyQiw0QkFLN0JtUiw4QkFONkJuUjs7UUFFREU7SUFDMUIsV0FBMEIsNEJBNkI1QmtSLHdCQTlCNEJsUjtHQUV3QjtZQUVwRGlSO0lBR0g7S0FLTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUU7S0FXMkIsTUEvbEI5QnZRLGdCQXdsQkdrUTtLQUtvQixNQWtGdkJrSCxZQXZ2QkFoVSxnQkE4cEJHZ047S0FNcUIsTUFNeEJkLDJCQWJHZTtJQUtMO1lBMEZFbFIsa0JBekZzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRUY7U0FDNkJ6UTtLQUN6QixXQUF5Qiw0QkE5cUIzQnVFLGdCQTZxQjJCdkU7O1FBRUNFO0lBQzFCLFdBQTBCLDRCQUU1QmtSLHdCQUg0QmxSO0dBQ29DO1lBRWhFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVcyQixNQXhuQjlCNVEsZ0JBaW5CR3dRO0tBS3FCLE1BOXJCeEJwTixlQXVyQkdzTjtLQU13QixNQU0zQnRHLGtCQWJHdUc7SUFLTDtZQWlFRXhSLGtCQWhFc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FQekNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ0YscUJBRThDO1lBRTVDZ0Q7SUFBaUUsc0JBQ3RDLGlCQUNJLGtCQUNKOztHQUFxQjtZQUVoRDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVTRCLE1BbHBCL0JqUixnQkEyb0JHOFE7aUJBTW9DbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUHRCb3VCO0tBTXNCLE1BeHRCekIzTixlQWl0Qkc0TjtJQUtMO1lBc0NFN1Isa0JBckN1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAxQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUM1UDtJQUFvRSw4QkFDM0M7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBNkI7WUFFcEQ2SCx3QkFDRixxQkFFd0M7WUFFdENsRCxXQUE0RC9nQixHQUFLLE9BQUxBLEVBQU07WUFFbEUyZCxxQkFBaUUscUJBRWpCO1lBRWhESDtJQUFtRTs7V0FDaENaLGVBQUpWO09BQzdCLFdBRDZCQSxJQVEvQnVZLHFCQVBvRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7V0FFUlIsaUJBQU0sV0FBTkE7O1dBQ09pQyxpQkFBSnhCO09BQzVCLFdBRDRCQSxNQUs5QjRYLHFCQUptRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkJxZTs7V0FFREUsaUJBQUp4QjtPQUMzQixXQUQyQkEsTUFHN0IwWCxxQkFGa0R6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCdWU7O0dBQzRCO1lBRTdEa1csWUFDQ3hLO0lBQUosWUFBMkI7UUFBWS9OO0lBQU0sV0FBSyxXQUE5QytOLElBQW1DL047R0FBa0I7WUFFdER5WSxlQUFrRDMwQixHQUFLLE9BQUxBLEVBQU07WUFFeER3YyxTQUVDeU47SUFBSixJQUE0QjFwQixnQkFBbkJZO0lBQ1IsV0FBb0IsV0FEakI4b0IsSUFBSzlvQixNQUFtQlo7R0FDc0M7WUFFL0Rta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNO1lBQ3JEMDBCLGlCQUEyQixxQkFBc0M7WUFFN0R6WTtJQUM2RCx1QkFDekNDLGVBQU0sV0EvcUI5QkMsZUErcUJ3QkQ7UUFDS1UsZUFBSlI7SUFDdkIsV0FEdUJBLE1BR3pCRyx3QkFINkJLO0dBQzJCO1lBRXhETDtJQUVGLDhCQUM4Qjs7O1dBQ0RMLGVBQU0sV0FBTkE7O1dBQ0VVLGVBQUpSO09BQ3ZCLFdBRHVCQSxNQXhCekJxWSxxQkF5QjhDejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QjRjOztXQUVIQyxpQkFBTSxXQUFOQTttQkFDREUsaUJBQU0sV0FoQi9CMlgsVUFnQnlCM1g7O0dBQTJDO1lBRXBFc1gsV0FBV3IwQixHQUFJLE9BQUEsNEJBbjJCZnllLFdBbTJCV3plLEdBQXdCOzs7O09BOTlCL0JnZDtPQVlKTztPQTBHQThDO09BS0E1QjtPQVFBZjtPQWVBNEM7T0FZQTBEO09BNENBdkQ7T0FZQWdFO09BdUNBSTtPQVdBRDtPQVVBdkg7T0FHQStIO09BS0FJO09BT0FySjtPQUdBdUo7T0FRQUc7T0FtQ0FTO09BSUFGO09BSUFLO09BWUFJO09BNkJBN0U7T0FRQWtGO09BWUFJO09BOEJBRTtPQU9BdEI7T0FlQTNFO09BWUE0RztPQW9CQUU7T0FZQUk7T0FxQkFDO09BZ0JBakQ7T0FHQWtEO09BUUFHO09BK0JBekM7T0FLQTZDO09BSUFwQztPQVlBd0M7T0FhQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQUtBOEQ7T0E0QkF1RDtPQUtBZDtPQUlBMUM7T0FpQkFRO09BZUFRO09BS0FwQjtPQWdCQTRDO09BZUEvQztPQXVCQXRFO09BZUFnTDtPQVNBM0c7T0FpQ0EyQjtPQUtBMEY7T0FTQUM7T0FrQkFWO09BUUFXO09BaUJBN0Y7T0FLQWdEO09BS0EzRTtPQWlCQXhIO09BS0EyRjtPQUtBbEQ7T0FFQXBEO09BSUFIO09BU0FpWDtPQUdBRTtPQUVBblk7T0FLQWtJO09BQ0FnUTtPQUVJelk7T0FNSk07T0FVQThYO09BNTBCQS9UO09BbEpJdEQ7T0EwTUp5RDs7OztFOzs7Ozs7R0MxTWM7O0lBbzRCWjllO0lBQ0FDO0lBcjRCWTtJQThDQztJQXExQkgsYUFDVkQsdUJBQ0FDOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O1lDcjRCRW9iO0lBQ1A7S0FHTUM7S0FEQUU7S0FEQUM7S0FPNEIsT0F3US9CQyxnQkE3UUdKO0lBRUwsV0FNRU0scUJBVkdILFlBQ0FEO0dBT0o7WUFFQ0k7SUFDaUUsOEJBdUc5Qjs7O1dBdEdUckIsZUFDeEIsV0FvN0JGTSxTQUZBbVksZ0JBbjdCMEJ6WTs7V0FFR0UsaUJBQzNCLFdBbzZCRm9CLGNBcjZCNkJwQjs7T0FJMEI7UUFGdEJxQjtRQUFKYjtRQUFKQztRQUU4QixPQXBCbkRHLGdCQWtCNkJTO1FBRVYsT0FBQSw0QkErR3ZCQyxvQkFqSDZCZDtPQUMzQixXQTg1QkZlLGNBLzVCeUJkOztXQUdJRTtPQUMzQixXQUEyQiw0QkFxRzdCMEIsV0F0RzZCMUI7O09BT3ZCO1FBTCtCa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS25CLE9BNUJGeEIsZ0JBdUJpQ2lEO1FBSS9CLE9BdUhOSyxhQTNIaUNqQjtRQUczQixPQW82Qk5vVixZQTk3Qkl6WCxpQkF1QnlCcUI7T0FDM0IsV0E2NEJGQyxlQTk0QnlCRTs7T0FTbkI7UUFIeUJEO1FBQUpJOzttQkFJZDNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BbkMxQmdkLGdCQWtDY0o7V0FDUixXQWs0QlYwQixlQW40QmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh5QnFDO09BQzdCLFdBOUJFdkIsZ0JBNkJ1QjJCOztPQVNvQjtRQURoQkQ7UUFBSkU7UUFDb0IsT0FBQSw0QkFxRi9DSCxXQXRGK0JDO09BQzdCLFdBdENFMUIsZ0JBcUN1QjRCOztPQUdrQjtRQURoQkM7UUFBSkM7UUFDb0IsT0FBQSw0QkFtRjdDTCxXQXBGNkJJO09BQzNCLFdBeENFN0IsZ0JBdUNxQjhCOztXQUVDRTtPQUN4QixXQUF3Qiw0QkExQ3RCaEMsaUJBeUNzQmdDOztPQUlPO1FBRkVEO1FBQUpHO1FBRUUsT0FpNUJqQ3VWLFlBOTdCSXpYLGlCQTJDK0IrQjtPQUNqQyxXQXU1QkZ2QyxTQUZBbVksZ0JBdDVCK0J6Vjs7V0FHRUQsaUJBQUpHO09BQzNCLFlBRDJCQSxNQWc1QjdCcVYsWUE5N0JJelgsaUJBOEM2QmlDOztPQVMzQjtRQVAwQkU7UUFBSkk7UUFPdEIsT0F1NEJOa1YsWUE5N0JJelgsaUJBZ0Q0Qm1DOzttQkFHbkJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQXJEbkNnZCxnQkFvRGNKO1dBQ1IsV0E4NEJWSixTQUZBbVksZ0JBNzRCY3pZO1VBQzRDO09BSnhELFlBQ0ksa0NBRnNCcUQ7O09BU21CO1FBRGhCRDtRQUFKRTtRQUNvQixPQTA0Qi9DaEQsU0FGQW1ZLGdCQXo0QitCclY7T0FDN0IsWUF6REV0QyxnQkF3RHVCd0M7O09BSTBCO1FBRmZDO1FBQUpDO1FBQUpDO1FBRXVCLE9BNURqRDNDLGdCQTBEa0N5QztRQUViLE9BdTRCekJqRCxTQUZBbVksZ0JBdjRCa0NqVjtPQUNoQyxZQTNERTFDLGdCQTBEMEIyQzs7V0FHSkU7T0FDeEIsWUFBd0IsNEJBOUR0QjdDLGlCQTZEc0I2Qzs7T0FJbUI7UUFGTEs7UUFBSk47UUFBSkc7UUFFYSxPQTYzQjdDMFUsWUE5N0JJelgsaUJBK0RvQ2tEO1FBRWYsT0FqRXJCbEQsZ0JBK0RnQzRDO09BQ2xDLFlBaEVFNUMsZ0JBK0Q0QitDOztPQUlrQixJQURoQkQsa0JBQUpNLGtCQUNvQixPQW5FOUNwRCxnQkFrRThCOEM7T0FDaEMsWUFuRUU5QyxnQkFrRTBCb0Q7O09BR2lCLElBRGhCRCxrQkFBSkssa0JBQ29CLE9BckUzQ3hELGdCQW9FMkJtRDtPQUM3QixZQXJFRW5ELGdCQW9FdUJ3RDs7T0FRckI7UUFObUNSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNbkIsT0E1RUY1RCxnQkFzRXFDZ0Q7UUFLbkMsT0EyQ05LLG9CQWhEcUMySjtRQUkvQixPQTFFRmhOLGdCQXNFNkIwRDtRQUczQixPQXpFRjFELGdCQXNFeUJ1RDtPQUMzQixZQTJFRkQsYUE1RXlCTTs7T0FRMkIsSUFEaEJELGtCQUFKRyxrQkFDb0IsT0E0SHBETCxlQTdIb0NFO09BQ2xDLFlBOUVFM0QsZ0JBNkU0QjhEOztPQUl3QjtRQUZwQk07UUFBSlA7UUFBSkc7UUFFNEIsT0F5SHhEUCxlQTNIb0NXO1FBRVgsT0E2MkJ6QnFULFlBcHZCQWhVLGdCQTNIZ0NJO09BQzlCLFlBaEZFN0QsZ0JBK0V3QmdFOztPQUkxQixJQUQ0QkMsa0JBQUpDLGtCQUN4QixPQUQ0QkQ7T0FDNUIsWUFuRkVqRSxnQkFrRnNCa0U7O1dBRUZDLGtCQUN0QixZQTgyQkYzRSxTQUZBbVksZ0JBNzJCd0J4VDs7T0FHa0MsSUFEdEJFLGtCQUFKQyxrQkFDMEIsT0F2RnREdEUsZ0JBc0ZnQ3FFO09BQ2xDLFlBNDJCRjdFLGtCQTUyQjhDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHBCc2hCOzs7UUFFSEc7O21CQUdqQnpoQjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixPQTdGaENnZCxnQkE0RmFKO1dBQ1IsV0FzMkJUSixrQkF0MkJ3QnhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO1VBQzBDO09BSnJELFlBQ0Usa0NBRnlCdUY7O09BU3VCO1FBRmJ3UDtRQUFKelA7UUFBSkc7UUFFcUIsT0FqR2hEM0UsZ0JBK0ZtQ2lVO1FBRVIsT0FzVy9CMVAsaUJBeFdtQ0M7T0FDakMsWUFtMkJGaEYsa0JBbDJCbUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGTTJoQjs7T0FLSyxJQUZFRSxrQkFBSkQsa0JBRUUsT0FwR2hDNUUsZ0JBa0drQzZFO09BQ3BDLFlBcXJCRkgsMkJBdHJCa0NFOztXQUdQRSxrQkFDekIsWUF0R0U5RSxnQkFxR3VCOEU7O1dBRUZDLGtCQUFNLFlBdkczQi9FLGdCQXVHcUIrRTs7T0FFcUI7UUFEaEJFO1FBQUpDO1FBQ29CLE9BcTFCOUN1UyxZQXB2QkFoVSxnQkFsRzhCd0I7T0FDNUIsWUF6R0VqRixnQkF3R3NCa0Y7O1dBRUNDLGtCQUN6QixZQW9SRkgscUJBclIyQkc7O09BR3dCLElBRGxCQyxrQkFBSkMsa0JBQ3NCLE9BN0cvQ3JGLGdCQTRHNkJvRjtPQUMvQixZQUQyQkM7O1dBRUpFLGtCQUFNLFlBeVYvQmhCLGlCQXpWeUJnQjs7T0FHK0I7UUFGdEJ1UztRQUFKNUQ7UUFBSnpPO1FBRThCLE9BakhwRHpGLGdCQStHOEI4WDtRQUVOLE9BazFCNUJ0WSxTQUZBbVksZ0JBbDFCOEJ6RDtPQUM1QixZQTZtQkYzSixtQkE5bUIwQjlFO21CQUdJdU8sa0JBQzVCLFlBZ2lCRnRPLGVBamlCOEJzTzs7R0FFa0M7WUFFaEUzUSwyQkFDNkQscUJBRW5CO1lBRTFDNUI7SUFDSDtLQUFzRG5FO0tBQXpCQztLQUF2QkM7S0FJbUIsT0FoSWxCd0MsZ0JBNEgrQzFDO0tBRzNCLE9BK3pCeEJtYSxZQTk3Qkl6WCxpQkE0SHNCekM7SUFDNUIsV0FxQkUrRixhQXRCRzlGO0dBS0o7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUTJCLE9BbUk5QnJHLGdCQXpJR2tHO0tBS3FCLE9BN0lwQnZHLGdCQXVJRHlHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUdNc0Q7S0FEQUU7S0FEQUM7S0FPNEIsT0FzSC9CMUcsZ0JBM0hHdUc7SUFFTCxXQU1FSSxrQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNFLDhCQUN5Qjs7O1dBQ0g5SCxlQUN0QixXQWl5QkZNLGtCQWp5QnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCa2M7O09BR29CO1FBRGJVO1FBQUpSO1FBQ2lCLE9BK3hCNUNJLGtCQS94QjBEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpDNGM7T0FDN0IsV0FsQkYwRCxhQWlCMkJsRTs7V0FFRVMsaUJBQzNCLFdBK3dCRlcsY0FoeEI2Qlg7O09BR21CLElBRGR3QixpQkFBSnRCLGlCQUNrQixPQTZ3QmhEUyxjQTl3QmtDYTtPQUNoQyxXQTZ3QkZiLGNBOXdCOEJUOztXQUVKeUI7T0FDeEIsV0FBd0IsNEJBeEIxQjhCLGNBdUIwQjlCOztPQUlPO1FBRkVEO1FBQUpJO1FBRUUsT0FpeEJqQzhWLFlBNXlCQW5VLGNBeUJtQy9CO09BQ2pDLFdBdXhCRi9CLFNBRkFtWSxnQkF0eEIrQmhXOztXQUdFRCxpQkFBSkU7T0FDM0IsV0FEMkJBLE1BZ3hCN0I2VixZQTV5QkFuVSxjQTRCaUM1Qjs7T0FTM0I7UUFQMEJHO1FBQUpDO1FBT3RCLE9BbXZCTm1GLGlCQTF2QmdDcEY7O21CQUduQjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BbkN2Q3NnQixhQWtDa0IxRDtXQUNSLFdBOHdCVkosU0FGQW1ZLGdCQTd3QmN6WTtVQUN5QztPQUpyRCxXQUNJLGtDQUZzQjRDOztXQVFGRTtPQUN4QixXQUF3Qiw0QkF2QzFCc0IsY0FzQzBCdEI7O09BR2UsSUFEYkQsaUJBQUpHLGlCQUNpQixPQXpDekNvQixhQXdDNEJ2QjtPQUMxQixXQXpDRnVCLGFBd0N3QnBCOztPQUd5QixJQURiRCxpQkFBSkcsaUJBQ2lCLE9BYWpEcUIsZUFkb0N4QjtPQUNsQyxZQTNDRnFCLGFBMENnQ2xCOztXQUVQRyxrQkFDdkIsWUFvd0JGL0MsU0FGQW1ZLGdCQW53QnlCcFY7O1dBRUFDLGtCQUFNLFlBOUMvQmMsYUE4Q3lCZDs7V0FDRUc7T0FDekIsWUFpd0JGbkQsa0JBandCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEckIyZjs7V0FFR0Usa0JBQzVCLFlBbERGUyxhQWlEOEJUOztXQUVBRSxrQkFDNUIsWUE2Y0YyQyxlQTljOEIzQzs7T0FHd0IsSUFEeEJaLGlCQUFKaUIsa0JBQzRCLE9BdER0REUsYUFxRDhCbkI7T0FDNUIsWUEydkJGM0MsU0FGQW1ZLGdCQTF2QjBCdlU7O0dBQzRDO1lBRXRFSztJQUNIO0tBR000RDtLQURBRTtLQURBQztLQU80QixPQThEL0JuSCxnQkFuRUdnSDtJQUVMLFdBTUVJLG9CQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdtQjtRQUZSdUI7UUFBSmI7UUFBSlI7UUFFZ0IsT0FsQjNDcUUsZUFnQm1DaEQ7UUFFWCxPQWxCeEJnRCxlQWdCK0I3RDtPQUM3QixXQTBzQkYwQixlQTNzQjJCbEM7O1dBR0RTO09BQ3hCLFdBQXdCLDRCQXBCMUI0RCxnQkFtQjBCNUQ7O09BSU87UUFGRHdCO1FBQUp0QjtRQUVLLE9BQUEsNEJBdkJqQzBELGdCQXFCZ0NwQztPQUM5QixXQW11QkY3QixTQUZBbVksZ0JBbHVCNEI1WDs7T0FVdEI7UUFQMEJ3QjtRQUFKQztRQU90QixPQWlzQk55RixpQkF4c0JnQzFGOzttQkFHbkJ2ZTtXQUNIO1lBQVl5ZCxLQURUemQ7WUFDSzRjLEtBREw1YztZQUNDa2MsS0FERGxjO1lBRXdDLE9BN0JyRHlnQixlQTRCc0JoRDtZQUNXLE9BMENqQ0osZ0JBM0NrQlQ7V0FDUixXQURJVjtVQUN5RDtPQUpyRSxXQUNJLGtDQUZzQnNDOztPQVVLO1FBRkZFO1FBQUpDO1FBRU0sT0FBQSw0QkFsQ2pDOEIsZ0JBZ0MrQi9CO09BQzdCLFdBd3RCRmxDLFNBRkFtWSxnQkF2dEIyQmhXOztXQUdJRSxpQkFBSkQ7T0FDekIsV0FwQ0Y2QixlQW1DMkI3QixPQUFJQzs7T0FNekI7UUFKK0JRO1FBQUpOO1FBQUpEO1FBSXZCO1VBMnNCTjJWO3FCQTNzQnVCejBCLEdBQUssT0FBQSw0QkE0ckI1QitnQixZQTVyQnVCL2dCLEdBQTBCO1lBSlpxZjtRQUcvQixPQXdyQk40RSxpQkEzckJpQ2xGO09BQy9CO2VBQ0ksNEJBc0JONkYsZ0JBeEI2QjlGOzs7O09BT29CO1FBRm5CRztRQUFKRDtRQUV1QixPQTVDakR5QixlQTBDOEJ4Qjt3QkFFWGpmLEdBQUssT0FBTEEsS0FBd0I7T0FEekMsV0FDRyxrQ0FGcUJnZjs7V0FHRUUsaUJBQzFCLFdBSUYyRixrQkFMNEIzRjttQkFFRUUsaUJBQzVCLFlBeVpGc0QsZUExWjhCdEQ7O0dBQ21CO1lBRWpEeUYsa0JBRUM3a0I7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGM7a0JBSU1BO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BMURqQ3lnQixlQXlEWTdEO0tBQ1IsV0ErckJKSixTQUZBbVksZ0JBOXJCUXpZO0lBQzJDO0lBSG5ELFdBQUEsa0NBRk1VO0lBQ1IsV0Ftc0JFSixTQUZBbVksZ0JBbHNCRXpZO0dBTUk7WUFFTjBJO0lBQ0Y7S0FNUTtNQUwyQjNFO01BQUp4QztNQUFKYjtNQUFKVjtNQUtmLE9BQUEsNEJBcEVOdUUsZ0JBK0RpQ1I7TUFJM0IsT0E0ckJOeVUsVUFoc0I2QmpYO0tBQzNCLFdBRG1CdkIsSUFRckJtQixnQkFSeUJUOztRQU1EUjtJQUFNLFdBckU5QnFFLGVBcUV3QnJFO0dBQStDO1lBRXZFaUIsZ0JBQ0NyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEIsZUFDQ3BsQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixPQUV6QndsQixhQUhNNUk7SUFDUixXQTRxQkVKLGtCQTVxQmF4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NKO0lBQWdFOztXQUM1Q3RKLGVBQU0sV0FNMUJDLGVBTm9CRDs7V0FDQUUsaUJBQU0sV0EyUDFCcUosZUEzUG9Ccko7O1dBQ0FTLGlCQUFNLFdBbEYxQjRELGVBa0ZvQjVEOztPQUVrQjtRQURiRDtRQUFKRztRQUNpQixPQWdxQnRDMFgsWUE5N0JJelgsaUJBNlJxQko7T0FDdkIsV0E1SUYwRCxhQTJJcUJ2RDs7R0FDZ0Q7WUFFckVaLGVBQ0NuYztJQUFLLE9BQUEsNEJBRU4wbEIscUJBRkMxbEI7R0FBbUM7WUFFcEMwbEI7SUFFSCxJQUFnQ0MscUJBQTFCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUEwQkQ7R0FJOUI7WUFFQ0U7SUFFRjs7T0FFZ0QsSUFEaEJqSixlQUFKVixlQUNvQixPQTlCOUNtQixnQkE2QjhCVDtPQUM1QixXQS9TRUksZ0JBOFNzQmQ7O09BR21CO1FBRGRtQztRQUFKakM7UUFDa0IsT0FBQSw0QkE5SzdDc0Isb0JBNksrQlc7T0FDN0IsV0Fnb0JGVixjQWpvQjJCdkI7O1dBRUdTLGlCQUM1QixXQWltQkZpSix1QkFsbUI4QmpKOztPQUlQO1FBRk8wQjtRQUFKeEI7UUFFSCxPQUFBLDRCQTBmdkJnSix1QkE1ZjhCeEg7T0FDNUIsV0E0bkJGWixjQTduQjBCWjs7V0FHQ3lCLGlCQUN6QixXQXljRndILG9CQTFjMkJ4SDs7V0FFR0csaUJBQzVCLFdBOGRGK0MsMkJBL2Q4Qi9DOztXQUVIQyxpQkFDekIsV0E0SEZzSCxvQkE3SDJCdEg7O1dBRUdFO09BQzVCLFdBQTRCLDRCQTBIOUJvSCxxQkEzSDhCcEg7O1dBRUZFLGlCQUMxQixXQWthRm1ILDZCQW5hNEJuSDs7V0FFSEUsaUJBQ3ZCLFdBNFlGNkgsc0JBN1l5QjdIOztXQUVDRTtPQUN4QixZQUF3Qiw0QkFjMUJnSCx3QkFmMEJoSDs7V0FFS0c7T0FDN0I7ZUFBNkIsNEJBMFAvQjhHLDZCQTNQK0I5Rzs7V0FFSEMsa0JBQzFCLFlBTUY4Ryx5QkFQNEI5Rzs7V0FFRUcsa0JBQzVCLFlBdERGeUYsZUFxRDhCekY7O09BR29CLElBRGZqQixpQkFBSm1CLGtCQUNtQixPQTNEbER4QyxnQkEwRG1DcUI7T0FDakMsWUF1VUZnRSxlQXhVK0I3Qzs7R0FDc0M7WUFFckV5Ryx5QkFFQ3RtQjtJQUFLLE9BNldOdW1CLG1CQXRQQWhGLGtCQXZIQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9Bb1VOd21CLGlCQWxVQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQTlFOUJ2SixnQkF5RUdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ2lFOztPQUdoQztRQUZGaks7UUFBSlY7UUFFTSxPQUFBLDRCQTVKakN1RSxnQkEwSitCN0Q7T0FDN0IsV0E4bEJGSixTQUZBbVksZ0JBN2xCMkJ6WTs7V0FHRUUsaUJBQzNCLFdBdUJGNEYscUJBeEI2QjVGOztPQU92QjtRQUw4QjZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLbEIsT0F4Qk40SixnQkFtQm9DeEc7UUFJOUIsT0EzTk5LLGFBdU5nQzdDO1FBRzFCLE9Ba2xCTmdYLFlBOTdCSXpYLGlCQXlXd0JxQjtPQUMxQixXQTJqQkZDLGVBNWpCd0J6Qjs7T0FTbEI7UUFId0IwQjtRQUFKeEI7O21CQUliL2M7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0FyWDFCZ2QsZ0JBb1hjSjtXQUNSLFdBZ2pCVjBCLGVBampCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHdCcUM7T0FDNUIsV0ExQkZrSSxnQkF5QjBCMUo7O09BVTZCO1FBRnZCc0M7UUFBSlg7UUFBSkY7UUFFK0IsT0FuQ3ZEaUksZ0JBaUNnQ3BIO1FBRVQsT0FBQSw0QkF0UHZCM0Isb0JBb1A0QmdCO09BQzFCLFdBeWpCRmYsY0ExakJ3QmE7O09BSTJCLElBRGhCSyxpQkFBSkYsaUJBQ29CLE9BOE1uRG1JLGdCQS9NbUNqSTtPQUNqQyxXQXJDRjRILGdCQW9DK0I5SDttQkFFRkMsaUJBQzNCLFdBc1JGOEQsZUF2UjZCOUQ7O0dBQ21CO1lBRWhEb0Q7SUFFSDtLQUFpQ2dGO0tBQTNCQztLQUd5QixPQUFBLDRCQUc1QkMsa0JBTjhCRjtJQUNoQyxXQWhQRTFHLGFBK09HMkc7R0FJSjtZQUVDQztJQUNIO0tBR01DO0tBREFDO0tBREFDO0tBTzJCLE9BL0g5QmhLLGdCQTBIRzhKO0lBRUwsV0FNRUcsc0JBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O09BSzdEO1FBSjhCN0o7UUFBSmI7UUFBSlY7UUFJdEIsT0FxaUJOdVkscUJBcmlCdUJ6MEIsR0FBSyxPQUFMQSxLQUF3QixHQUpYeWQ7UUFHOUIsT0FsRU5nSixnQkErRGdDN0o7T0FDOUIsV0F1VUYySyxtQkF4VTRCckw7O09BTTFCO1FBRHFCRTtRQUVOaUQsT0FGTWpEO1FBRVZpQyxPQUZVakM7UUFFZFMsT0FGY1Q7UUFLaEIsT0FrQlBvTCxzQkFyQmlCbkk7UUFFVixPQTRlUG9JLGtCQTllYXBKO09BRFgsZUF3aUJGN0Isa0JBdGlCcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEI2Yzs7T0FLUDtRQUR3QkU7UUFFVDBDLE9BRlMxQztRQUVid0IsT0FGYXhCO1FBRWpCeUIsT0FGaUJ6QjtRQUtuQixPQVlQeUssc0JBZmlCL0g7UUFFVixPQTZhUGlJLGtCQS9hYW5KO09BRFgsZUFraUJGL0Isa0JBaGlCcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEJ3ZTs7T0FLUDtRQUQ0Qkc7UUFFakJELE9BRmlCQztRQUVyQkMsT0FGcUJEO1FBR0wsT0EvTnpCOEIsZUE4TmEvQjtPQURYLGVBN05GK0IsZUE4TlM3Qjs7V0FFc0JFLGlCQUM3QixXQTNhRTlCLGdCQTBhMkI4Qjs7V0FFRkUsaUJBQzNCLFdBekpGb0csZUF3SjZCcEc7bUJBRUFFLGlCQUMzQixXQW9PRndELGVBck82QnhEOztHQUNtQjtZQUVoRHNJO0lBQ21FLHVCQUN4Q3RMLGVBQ3pCLFdBMU9GdUUsZUF5TzJCdkU7SUFHeUIsSUFEbkJVLGVBQUpSLGlCQUN1QixPQXRiaERZLGdCQXFiNkJKO0lBQy9CLFdBdVNGMkssbUJBeFM2Qm5MO0dBQzBDO1lBRXZFOEo7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsT0FsTDlCMUssZ0JBNEtHd0s7S0FLcUIsT0FLeEJ0RyxpQkFYR3VHO0lBSUw7WUFtZ0JFdEwsa0JBbGdCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekMrbkI7OztZQUdBSDtHQU9KO1lBRUNyRztJQUNIO0tBR015RztLQURBQztLQURBQztLQU80QixPQS9ML0I3SyxnQkEwTEcySztJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztXQUN6Q2pNLGVBQ3hCLFdBNmVGTSxTQUZBbVksZ0JBNWUwQnpZOztXQUVJRSxpQkFDNUIsV0F4TEZELGVBdUw4QkM7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk4wRSxpQkFrQnFDOUQ7UUFHL0IsT0FrZU5nWCxZQXZkQXBNLGtCQWRpQ3pMO09BQy9CLFdBeWVGSixrQkF4ZW9CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7T0FNbUIsSUFEakJ3QixpQkFBSnRCLGlCQUNxQixPQXhCaER3RSxpQkF1QitCbEQ7T0FDN0IsV0F4QkZrRCxpQkF1QjJCeEU7O09BRzBCLElBRGpCd0IsaUJBQUpDLGlCQUNxQixPQU1yRDZKLGlCQVBvQzlKO09BQ2xDLFdBMUJGZ0QsaUJBeUJnQy9DOztXQUVMRyxpQkFDekIsV0FuZUUzQixnQkFrZXVCMkI7bUJBRUdDLGlCQUM1QixXQThLRjhELGVBL0s4QjlEOztHQUNtQjtZQUVqRHlKO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsT0EvTi9CbkwsZ0JBME5HaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7V0FDekN2TSxlQUN4QixXQTZjRk0sU0FGQW1ZLGdCQTVjMEJ6WTs7V0FFSUUsaUJBQzVCLFdBOEJGcUosZUEvQjhCcko7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk53TCxpQkFrQnFDNUs7UUFHL0IsT0FrY05nWCxZQXZkQXBNLGtCQWtCaUN6TDtPQUMvQixXQXljRkosa0JBeGNvQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZHNmM7O09BT0g7UUFGSXdCO1FBQUp0QjtRQUVBLE9BQUEsNEJBUTFCMkwsc0JBVjhCcks7T0FDNUIsV0F4QkZnSyxpQkF1QjBCdEw7O1dBR0N5QixpQkFDekIsV0EzREYrQyxpQkEwRDJCL0M7O1dBRUdHLGlCQUM1QixXQStJRitELGVBaEo4Qi9EOztXQUVKQyxpQkFDeEIsV0E2YkZwQyxTQUZBbVksZ0JBNWIwQi9WOztHQUM0QjtZQUV0RDhKO0lBQ2lFOztPQUdoQyxJQUZGOUwsZUFBSlYsZUFFTSxPQW9TakM2SixzQkF0UytCbko7T0FDN0IsV0F3YkZKLFNBRkFtWSxnQkF2YjJCelk7O09BS007UUFGQW1DO1FBQUpqQztRQUVJLE9Bb2JqQ0ksU0FGQW1ZLGdCQXBiaUN0VztPQUMvQixXQXFiRjdCLFNBRkFtWSxnQkFwYjZCdlk7O1dBR0VTLGlCQUM3QixXQStSRmtKLHNCQWhTK0JsSjs7T0FJQTtRQUZJMEI7UUFBSnhCO1FBRUEsT0ErYS9CUCxTQUZBbVksZ0JBL2FtQ3BXO09BQ2pDLFdBZ2JGL0Isa0JBL2FtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNK2M7O0dBRTJCO1lBRTFEMEksZUFDQ3psQjtJQUFLLE9BQUEsNEJBRU4yb0IscUJBRkMzb0I7R0FBbUM7WUFFcEMyb0I7SUFFSCxJQUFnQ0MscUJBQTFCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUEwQkQ7R0FJOUI7WUFFQ0U7SUFFRjs7V0FDNEI1TSxlQUN4QixXQStXRjRKLHVCQWhYMEI1Sjs7T0FJSDtRQUZPVTtRQUFKUjtRQUVILE9BQUEsNEJBd1F2QjJKLHVCQTFROEJuSjtPQUM1QixXQTBZRmUsY0EzWTBCdkI7O1dBR0NTLGlCQUN6QixXQXVORm1KLG9CQXhOMkJuSjs7V0FFR0UsaUJBQzVCLFdBNE9GMkUsMkJBN084QjNFOztXQUVIeUIsaUJBQ3pCLFdBb01GdUssd0JBck0yQnZLOztXQUVHRztPQUM1QixXQUE0Qiw0QkFrTTlCb0sseUJBbk04QnBLOztXQUVGQyxpQkFDMUIsV0FnTEZ1SCw2QkFqTDRCdkg7O1dBRUhFLGlCQUN2QixXQTBKRmlJLHNCQTNKeUJqSTs7V0FFR0UsaUJBQzFCLFdBbUlGaUsseUJBcEk0QmpLOztXQUVGRTtPQUN4QixXQUF3Qiw0QkFhMUJnSyx3QkFkMEJoSzs7V0FFS0U7T0FDN0I7ZUFBNkIsNEJBTS9CaUgsNkJBUCtCakg7O1dBRURHLGtCQUM1QixZQXhTRjZGLGVBdVM4QjdGOztPQUdvQixJQURmbEIsaUJBQUptQixrQkFDbUIsT0E3U2xEbkMsZ0JBNFNtQ2dCO09BQ2pDLFlBcUZGcUUsZUF0RitCbEQ7O0dBQ3NDO1lBRXJFNkcsNEJBR0NybUI7SUFBSyxPQXFGTndtQixpQkEvRUFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FpRk53bUIsaUJBL0VBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUNIO0tBR01xQztLQURBQztLQURBQztLQU80QixPQWpVL0JoTSxnQkE0VEc4TDtJQUVMLFdBTUVHLHFCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ2lFOztPQUdoQztRQUZEMU07UUFBSlY7UUFFSyxNQUFBLDRCQS9ZakN1RSxnQkE2WWdDN0Q7T0FDOUIsV0EyV0ZKLFNBRkFtWSxnQkExVzRCelk7O1dBR0VFLGlCQUM1QixXQU9GbU4scUJBUjhCbk47O09BSWE7UUFGUnFCO1FBQUpZO1FBQUp4QjtRQUVnQixNQXJCM0NpSyxnQkFtQm1Dcko7UUFFWCxPQXBaeEJnRCxlQWtaK0JwQztPQUM3QixXQXdVRkMsZUF6VTJCekI7bUJBR0dFLGlCQUM1QixXQW1ERjJGLGVBcEQ4QjNGOztHQUNtQjtZQUVqRHdNO0lBRUg7S0FBaUNDO0tBQTNCQztLQUd5QixNQUFBLDRCQUc1QkMsdUJBTjhCRjtJQUNoQyxXQTNaRS9JLGVBMFpHZ0o7R0FJSjtZQUVDQztJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTzRCLE1BblcvQnhNLGdCQThWR3NNO0lBRUwsV0FNRUcsMkJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDOEI1TixlQUMxQixXQWxERjRLLGdCQWlENEI1Szs7T0FHMUI7UUFEc0JFO1FBRUg2RCxLQUZHN0Q7UUFFUHFCLEtBRk9yQjtRQUVYUSxLQUZXUjtRQUVmUyxPQUZlVDtRQU1qQixNQXhiUHFFLGVBb2JxQlI7UUFHZCxNQW1EUDhKLGtCQXREaUJ0TTtRQUVWLE1BMFFQZ0ssa0JBNVFhN0s7T0FEWCxlQUNPQzs7T0FNUDtRQUR5QkU7UUFFTmlOLE9BRk1qTjtRQUVWc0MsT0FGVXRDO1FBRWRzQixPQUZjdEI7UUFFbEJ5QixPQUZrQnpCO1FBTXBCLE1BL2JQMEQsZUEyYnFCdUo7UUFHZCxNQTRDUEQsa0JBL0NpQjFLO1FBRVYsTUEwTVBxSSxrQkE1TWFySjtPQURYLGVBQ09HOztPQU1QO1FBRDZCRztRQUVsQkosT0FGa0JJO1FBRXRCQyxPQUZzQkQ7UUFHTixNQW5jekI4QixlQWtjYWxDO09BRFgsZUFqY0ZrQyxlQWtjUzdCOztXQUVxQkUsaUJBQzVCLFdBM1hGc0csZUEwWDhCdEc7bUJBRUFFLGlCQUM1QixXQUVGMEQsZUFIOEIxRDs7R0FDbUI7WUFFakQwRCxlQUNDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE1BN1h6QndsQixhQTRYTTVJO0lBQ1IsV0E2U0VKLGtCQTdTYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBa0IyQixNQWhhOUJsTixnQkFtWkc2TTtLQVdxQixNQUFBLFdBbEJ2QkQsSUFLRUc7S0FZcUIsTUFxUnhCNU4sa0JBclJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWJ6Q3FxQjtpQkFTTXJxQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQW1PMUJ5cUIsY0FwT2M3TjtLQUNSLFdBbGVONkQsZUFpZVV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVRDb087SUFNTCxXQWNFUCxrQkFyQkdRLDBCQUlBSjtHQWVKO1lBRUNKLHlCQUNGLHFCQUVnRDtZQUU5Q2QseUJBRUNqcEI7SUFBSyxPQUVOdW1CLG1CQXROQThCLGtCQW9OQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPNkIsTUExYmhDdk4sZ0JBcWJHcU47SUFFTCxXQUMyQixXQVB4QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQ7SUFFSDtLQUlNOEQ7S0FEQUM7S0FEQUM7S0FEQWtLO0tBUzZCLE1BemNoQzVYLGdCQW1jR3dOO0tBSTJCLE1BSzlCdEQsbUJBWEd3RDtJQUlMLFdBNk9Fdk8sU0FGQW1ZLGdCQWhQR00saUJBRUFuSztHQVFKO1lBRUN2RCwwQkFDMkQscUJBRW5CO1lBRXhDcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRNEIsTUE3ZC9CL04sZ0JBdWRHNk47S0FLc0IsTUFpTnpCdUosWUF2ZEFwTSxrQkFnUUc4QztJQUlMO1lBd05FM08sa0JBdk51Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4xQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2xDO0lBRUg7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE1BNWU5QnZPLGdCQXNlR3FPO0tBS3FCLE1BclJ4QnJELGlCQStRR3NEO0lBSUwsV0F5TUVuUCxrQkF4TXNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTnpDNHJCLHFCQUdBSDtHQU9KO1lBRUN6RjtJQUVIO0tBS01nRztLQURBRTtLQURBQztLQURBQztLQURBQztLQWlCOEIsTUFwZ0JqQ2hQLGdCQXVmRzJPO0tBWTJCLE1BNkQ5QnRFLGtCQTFFR3dFO0tBWUQ7T0FBQTswQkFLRnhLLDRCQWxCR3lLO2lCQVFNbnNCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BK0gxQnlxQixjQWhJYzdOO0tBQ1IsV0F0a0JONkQsZUFxa0JVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FSQ2tRO0lBS0wsV0F5TEU1UCxTQUZBbVksZ0JBN0xHdEk7R0FrQko7WUFFQzNLO0lBRUg7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBUzRCLE1BbmhCL0JwUCxnQkE2Z0JHaVA7S0FJc0IsTUFLekJJLCtCQVhHRjtJQUlMO1lBbUtFaFEsa0JBbEt1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4xQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFMEM7S0FHTixJQUZOOVAsZUFBSlYsZUFFVSxNQWtKcEN1WSxZQXB2QkFoVSxnQkFnbUI4QjdEO0tBQzVCLFdBc0VGK1AsMkJBdkUwQnpROztRQUdDRTtJQUN6QixXQXFKRkksU0FGQW1ZLGdCQXBKMkJ2WTtHQUM0QjtZQUV2RDJKO0lBRUg7S0FRTTZHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBMEI2QixNQTVqQmhDOVAsZ0JBd2lCR3dQO0tBbUIyQixNQWtIOUI0SCxZQXB2QkFoVSxnQkE4bUJHcU07S0FtQjBCLE1BTTdCcEYsa0JBMUJHcUY7S0FtQnVCLE1BWTFCSyxlQWhDR0o7aUJBZ0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUE5bkIxQnlnQixlQTZuQmM3RDtLQUNSLFdBOW5CTjZELGVBNm5CVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWhCQ3dQO2lCQVdNanRCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BNkUxQnlxQixjQTlFYzdOO0tBQ1IsV0F4bkJONkQsZUF1bkJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FYQ2dSO0lBUUw7WUF1SUUxUSxrQkF0SXdDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVjNDbXRCOzs7Ozs7O1lBT0FQO0dBcUJKO1lBRUNsRix5QkFDRixxQkFFNEM7WUFFMUMwRjtJQUNGOztTQUUrQmxSO0tBQzNCLFdBQTJCLDRCQUs3Qm1SLDhCQU42Qm5SOztRQUVERTtJQUMxQixXQUEwQiw0QkE2QjVCa1Isd0JBOUI0QmxSO0dBRXdCO1lBRXBEaVI7SUFHSDtLQUtNRTtLQURBQztLQURBQztLQURBQztLQURBRTtLQVcyQixNQTdsQjlCdlEsZ0JBc2xCR2tRO0tBS29CLE1Ba0Z2QmtILFlBcHZCQWhVLGdCQTJwQkdnTjtLQU1xQixNQU14QmQsMkJBYkdlO0lBS0w7WUEwRkVsUixrQkF6RnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUHpDNHRCOzs7WUFHQUo7O0dBU0o7WUFFQ2I7SUFFRjtTQUM2QnpRO0tBQ3pCLFdBQXlCLDRCQTNxQjNCdUUsZ0JBMHFCMkJ2RTs7UUFFQ0U7SUFDMUIsV0FBMEIsNEJBRTVCa1Isd0JBSDRCbFI7R0FDb0M7WUFFaEVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVzJCLE1BdG5COUI1USxnQkErbUJHd1E7S0FLcUIsTUEzckJ4QnBOLGVBb3JCR3NOO0tBTXdCLE1BTTNCdEcsa0JBYkd1RztJQUtMO1lBaUVFeFIsa0JBaEVzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDRixxQkFFOEM7WUFFNUNnRDtJQUFpRSxzQkFDdEMsaUJBQ0ksa0JBQ0o7O0dBQXFCO1lBRWhEM0U7SUFFSDtLQUtNb0k7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FVNEIsTUFocEIvQmpSLGdCQXlvQkc4UTtpQkFNb0NudUIsR0FBSyxPQUFMQSxFQUFNO0lBQXBCO0tBQUEsTUFBQSxpQ0FQdEJvdUI7S0FNc0IsTUFydEJ6QjNOLGVBOHNCRzROO0lBS0w7WUFzQ0U3UixrQkFyQ3VDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDFDc3VCOzs7O1lBSUFKO0dBUUo7WUFFQzVQO0lBQW9FLDhCQUMzQzsyQkFDRnBDLGVBQU0sV0FBTkE7UUFDQUU7SUFBTSxXQUFOQTtHQUE2QjtZQUVwRDZILHdCQUNGLHFCQUV3QztZQUV0Q2xELFdBQTREL2dCLEdBQUssT0FBTEEsRUFBTTtZQUVsRTJkLHFCQUFpRSxxQkFFakI7WUFFaERIO0lBQW1FOztXQUNoQ1osZUFBSlY7T0FDN0IsV0FENkJBLElBUS9CdVkscUJBUG9EejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QjRjOztXQUVSUixpQkFBTSxXQUFOQTs7V0FDT2lDLGlCQUFKeEI7T0FDNUIsV0FENEJBLE1BSzlCNFgscUJBSm1EejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QnFlOztXQUVERSxpQkFBSnhCO09BQzNCLFdBRDJCQSxNQUc3QjBYLHFCQUZrRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkJ1ZTs7R0FDNEI7WUFFN0RrVyxZQUNDeEs7SUFBSixZQUEyQjtRQUFZL047SUFBTSxXQUFLLFdBQTlDK04sSUFBbUMvTjtHQUFrQjtZQUV0RHlZLGVBQWtEMzBCLEdBQUssT0FBTEEsRUFBTTtZQUV4RHdjLFNBRUN5TjtJQUFKLElBQTRCMXBCLGdCQUFuQlk7SUFDUixXQUFvQixXQURqQjhvQixJQUFLOW9CLE1BQW1CWjtHQUNzQztZQUUvRG1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07WUFDckQwMEIsaUJBQTJCLHFCQUFzQztZQUU3RHpZO0lBQzZELHVCQUN6Q0MsZUFBTSxXQTdxQjlCQyxlQTZxQndCRDtRQUNLVSxlQUFKUjtJQUN2QixXQUR1QkEsTUFHekJHLHdCQUg2Qks7R0FDMkI7WUFFeERMO0lBRUYsOEJBQzhCOzs7V0FDREwsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlI7T0FDdkIsV0FEdUJBLE1BeEJ6QnFZLHFCQXlCOEN6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCNGM7O1dBRUhDLGlCQUFNLFdBQU5BO21CQUNERSxpQkFBTSxXQWhCL0IyWCxVQWdCeUIzWDs7R0FBMkM7WUFFcEVzWCxXQUFXcjBCLEdBQUksT0FBQSw0QkFoMkJmeWUsV0FnMkJXemUsR0FBd0I7Ozs7T0EzOUIvQmdkO09BWUpPO09BMEdBOEM7T0FLQTVCO09BUUFmO09BZUE0QztPQVlBMEQ7T0E0Q0F2RDtPQVlBZ0U7T0FzQ0FJO09BV0FEO09BVUF2SDtPQUdBK0g7T0FLQUk7T0FPQXJKO09BR0F1SjtPQVFBRztPQW1DQVM7T0FJQUY7T0FJQUs7T0FZQUk7T0E2QkE3RTtPQVFBa0Y7T0FZQUk7T0E4QkFFO09BT0F0QjtPQWVBM0U7T0FZQTRHO09Bb0JBRTtPQVlBSTtPQXFCQUM7T0FjQWpEO09BR0FrRDtPQVFBRztPQStCQXpDO09BS0E2QztPQUlBcEM7T0FZQXdDO09BYUFDO09BUUFHO09BYUFJO09BNEJBcEg7T0FLQThEO09BNEJBdUQ7T0FLQWQ7T0FJQTFDO09BaUJBUTtPQWVBUTtPQUtBcEI7T0FnQkE0QztPQWVBL0M7T0F1QkF0RTtPQWVBZ0w7T0FTQTNHO09BaUNBMkI7T0FLQTBGO09BU0FDO09Ba0JBVjtPQVFBVztPQWlCQTdGO09BS0FnRDtPQUtBM0U7T0FpQkF4SDtPQUtBMkY7T0FLQWxEO09BRUFwRDtPQUlBSDtPQVNBaVg7T0FHQUU7T0FFQW5ZO09BS0FrSTtPQUNBZ1E7T0FFSXpZO09BTUpNO09BVUE4WDtPQXowQkEvVDtPQWxKSXREO09BME1KeUQ7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O1lDMU1BMlUsTUFBTXAxQixHQUFJLFdBQUpBLHVCQUE2QztZQUUvQ2dkO0lBQ1A7S0FHTUM7S0FEQUU7S0FEQUM7S0FPNEIsT0F1US9CQyxnQkE1UUdKO0lBRUwsV0FNRU0scUJBVkdILFlBQ0FEO0dBT0o7WUFFQ0k7SUFDaUUsOEJBdUc5Qjs7O1dBdEdUckIsZUFDeEIsV0FtN0JGTSxTQUZBbVksZ0JBbDdCMEJ6WTs7V0FFR0UsaUJBQzNCLFdBbTZCRm9CLGNBcDZCNkJwQjs7T0FJMEI7UUFGdEJxQjtRQUFKYjtRQUFKQztRQUU4QixPQXBCbkRHLGdCQWtCNkJTO1FBRVYsT0FBQSw0QkErR3ZCQyxvQkFqSDZCZDtPQUMzQixXQTY1QkZlLGNBOTVCeUJkOztXQUdJRTtPQUMzQixXQUEyQiw0QkFxRzdCMEIsV0F0RzZCMUI7O09BT3ZCO1FBTCtCa0Q7UUFBSlo7UUFBSmhCO1FBQUpHO1FBS25CLE9BNUJGeEIsZ0JBdUJpQ2lEO1FBSS9CLE9BdUhOSyxhQTNIaUNqQjtRQUczQixPQW02Qk5vVixZQTc3Qkl6WCxpQkF1QnlCcUI7T0FDM0IsV0E0NEJGQyxlQTc0QnlCRTs7T0FTbkI7UUFIeUJEO1FBQUpJOzttQkFJZDNlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BbkMxQmdkLGdCQWtDY0o7V0FDUixXQWk0QlYwQixlQWw0QmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh5QnFDO09BQzdCLFdBOUJFdkIsZ0JBNkJ1QjJCOztPQVNvQjtRQURoQkQ7UUFBSkU7UUFDb0IsT0FBQSw0QkFxRi9DSCxXQXRGK0JDO09BQzdCLFdBdENFMUIsZ0JBcUN1QjRCOztPQUdrQjtRQURoQkM7UUFBSkM7UUFDb0IsT0FBQSw0QkFtRjdDTCxXQXBGNkJJO09BQzNCLFdBeENFN0IsZ0JBdUNxQjhCOztXQUVDRTtPQUN4QixXQUF3Qiw0QkExQ3RCaEMsaUJBeUNzQmdDOztPQUlPO1FBRkVEO1FBQUpHO1FBRUUsT0FnNUJqQ3VWLFlBNzdCSXpYLGlCQTJDK0IrQjtPQUNqQyxXQXM1QkZ2QyxTQUZBbVksZ0JBcjVCK0J6Vjs7V0FHRUQsaUJBQUpHO09BQzNCLFlBRDJCQSxNQSs0QjdCcVYsWUE3N0JJelgsaUJBOEM2QmlDOztPQVMzQjtRQVAwQkU7UUFBSkk7UUFPdEIsT0FzNEJOa1YsWUE3N0JJelgsaUJBZ0Q0Qm1DOzttQkFHbkJuZjtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQXJEbkNnZCxnQkFvRGNKO1dBQ1IsV0E2NEJWSixTQUZBbVksZ0JBNTRCY3pZO1VBQzRDO09BSnhELFlBQ0ksa0NBRnNCcUQ7O09BU21CO1FBRGhCRDtRQUFKRTtRQUNvQixPQXk0Qi9DaEQsU0FGQW1ZLGdCQXg0QitCclY7T0FDN0IsWUF6REV0QyxnQkF3RHVCd0M7O09BSTBCO1FBRmZDO1FBQUpDO1FBQUpDO1FBRXVCLE9BNURqRDNDLGdCQTBEa0N5QztRQUViLE9BczRCekJqRCxTQUZBbVksZ0JBdDRCa0NqVjtPQUNoQyxZQTNERTFDLGdCQTBEMEIyQzs7V0FHSkU7T0FDeEIsWUFBd0IsNEJBOUR0QjdDLGlCQTZEc0I2Qzs7T0FJbUI7UUFGTEs7UUFBSk47UUFBSkc7UUFFYSxPQTQzQjdDMFUsWUE3N0JJelgsaUJBK0RvQ2tEO1FBRWYsT0FqRXJCbEQsZ0JBK0RnQzRDO09BQ2xDLFlBaEVFNUMsZ0JBK0Q0QitDOztPQUlrQixJQURoQkQsa0JBQUpNLGtCQUNvQixPQW5FOUNwRCxnQkFrRThCOEM7T0FDaEMsWUFuRUU5QyxnQkFrRTBCb0Q7O09BR2lCLElBRGhCRCxrQkFBSkssa0JBQ29CLE9BckUzQ3hELGdCQW9FMkJtRDtPQUM3QixZQXJFRW5ELGdCQW9FdUJ3RDs7T0FRckI7UUFObUNSO1FBQUpnSztRQUFKdEo7UUFBSkg7UUFBSks7UUFNbkIsT0E1RUY1RCxnQkFzRXFDZ0Q7UUFLbkMsT0EyQ05LLG9CQWhEcUMySjtRQUkvQixPQTFFRmhOLGdCQXNFNkIwRDtRQUczQixPQXpFRjFELGdCQXNFeUJ1RDtPQUMzQixZQTJFRkQsYUE1RXlCTTs7T0FRMkIsSUFEaEJELGtCQUFKRyxrQkFDb0IsT0E0SHBETCxlQTdIb0NFO09BQ2xDLFlBOUVFM0QsZ0JBNkU0QjhEOztPQUl3QjtRQUZwQk07UUFBSlA7UUFBSkc7UUFFNEIsT0F5SHhEUCxlQTNIb0NXO1FBRVgsT0E0MkJ6QnFULFlBbnZCQWhVLGdCQTNIZ0NJO09BQzlCLFlBaEZFN0QsZ0JBK0V3QmdFOztPQUlrQixJQURoQkMsa0JBQUpDLGtCQUNvQixPQXJGOUNrVSxNQW9GOEJuVTtPQUM1QixZQW5GRWpFLGdCQWtGc0JrRTs7V0FFRkMsa0JBQ3RCLFlBNjJCRjNFLFNBRkFtWSxnQkE1MkJ3QnhUOztPQUdrQyxJQUR0QkUsa0JBQUpDLGtCQUMwQixPQXZGdER0RSxnQkFzRmdDcUU7T0FDbEMsWUEyMkJGN0Usa0JBMzJCOEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEcEJzaEI7OztRQUVIRzs7bUJBR2pCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BN0ZoQ2dkLGdCQTRGYUo7V0FDUixXQXEyQlRKLGtCQXIyQndCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7VUFDMEM7T0FKckQsWUFDRSxrQ0FGeUJ1Rjs7T0FTdUI7UUFGYndQO1FBQUp6UDtRQUFKRztRQUVxQixPQWpHaEQzRSxnQkErRm1DaVU7UUFFUixPQXFXL0IxUCxpQkF2V21DQztPQUNqQyxZQWsyQkZoRixrQkFqMkJtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNMmhCOztPQUtLLElBRkVFLGtCQUFKRCxrQkFFRSxPQXBHaEM1RSxnQkFrR2tDNkU7T0FDcEMsWUFvckJGSCwyQkFyckJrQ0U7O1dBR1BFLGtCQUN6QixZQXRHRTlFLGdCQXFHdUI4RTs7V0FFRkMsa0JBQU0sWUF2RzNCL0UsZ0JBdUdxQitFOztPQUVxQjtRQURoQkU7UUFBSkM7UUFDb0IsT0FvMUI5Q3VTLFlBbnZCQWhVLGdCQWxHOEJ3QjtPQUM1QixZQXpHRWpGLGdCQXdHc0JrRjs7V0FFQ0Msa0JBQ3pCLFlBbVJGSCxxQkFwUjJCRzs7T0FHWSxJQUROQyxrQkFBSkMsa0JBQ1UsT0E3R25DckYsZ0JBNEc2Qm9GO09BQy9CLFlBL0dGZ1QsTUE4RzZCL1M7O1dBRUpFLGtCQUFNLFlBd1YvQmhCLGlCQXhWeUJnQjs7T0FHK0I7UUFGdEJ1UztRQUFKNUQ7UUFBSnpPO1FBRThCLE9BakhwRHpGLGdCQStHOEI4WDtRQUVOLE9BaTFCNUJ0WSxTQUZBbVksZ0JBajFCOEJ6RDtPQUM1QixZQTRtQkYzSixtQkE3bUIwQjlFO21CQUdJdU8sa0JBQzVCLFlBK2hCRnRPLGVBaGlCOEJzTzs7R0FFa0M7WUFFaEUzUSwyQkFDNkQscUJBRW5CO1lBRTFDNUI7SUFDSDtLQUFzRG5FO0tBQXpCQztLQUF2QkM7S0FJbUIsT0FoSWxCd0MsZ0JBNEgrQzFDO0tBRzNCLE9BOHpCeEJtYSxZQTc3Qkl6WCxpQkE0SHNCekM7SUFDNUIsV0FxQkUrRixhQXRCRzlGO0dBS0o7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUTJCLE9Ba0k5QnJHLGdCQXhJR2tHO0tBS3FCLE9BN0lwQnZHLGdCQXVJRHlHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUdNc0Q7S0FEQUU7S0FEQUM7S0FPNEIsT0FxSC9CMUcsZ0JBMUhHdUc7SUFFTCxXQU1FSSxrQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNFLDhCQUN5Qjs7O1dBQ0g5SCxlQUN0QixXQWd5QkZNLGtCQWh5QnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCa2M7O09BR29CO1FBRGJVO1FBQUpSO1FBQ2lCLE9BOHhCNUNJLGtCQTl4QjBEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpDNGM7T0FDN0IsV0FsQkYwRCxhQWlCMkJsRTs7V0FFRVMsaUJBQzNCLFdBOHdCRlcsY0Evd0I2Qlg7O09BR21CLElBRGR3QixpQkFBSnRCLGlCQUNrQixPQTR3QmhEUyxjQTd3QmtDYTtPQUNoQyxXQTR3QkZiLGNBN3dCOEJUOztXQUVKeUI7T0FDeEIsV0FBd0IsNEJBeEIxQjhCLGNBdUIwQjlCOztPQUlPO1FBRkVEO1FBQUpJO1FBRUUsT0FneEJqQzhWLFlBM3lCQW5VLGNBeUJtQy9CO09BQ2pDLFdBc3hCRi9CLFNBRkFtWSxnQkFyeEIrQmhXOztXQUdFRCxpQkFBSkU7T0FDM0IsV0FEMkJBLE1BK3dCN0I2VixZQTN5QkFuVSxjQTRCaUM1Qjs7T0FTM0I7UUFQMEJHO1FBQUpDO1FBT3RCLE9Ba3ZCTm1GLGlCQXp2QmdDcEY7O21CQUduQjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BbkN2Q3NnQixhQWtDa0IxRDtXQUNSLFdBNndCVkosU0FGQW1ZLGdCQTV3QmN6WTtVQUN5QztPQUpyRCxXQUNJLGtDQUZzQjRDOztXQVFGRTtPQUN4QixXQUF3Qiw0QkF2QzFCc0IsY0FzQzBCdEI7O09BR2UsSUFEYkQsaUJBQUpHLGlCQUNpQixPQXpDekNvQixhQXdDNEJ2QjtPQUMxQixXQXpDRnVCLGFBd0N3QnBCOztPQUd5QixJQURiRCxpQkFBSkcsaUJBQ2lCLE9BYWpEcUIsZUFkb0N4QjtPQUNsQyxZQTNDRnFCLGFBMENnQ2xCOztXQUVQRyxrQkFDdkIsWUFtd0JGL0MsU0FGQW1ZLGdCQWx3QnlCcFY7O1dBRUFDLGtCQUFNLFlBOUMvQmMsYUE4Q3lCZDs7V0FDRUc7T0FDekIsWUFnd0JGbkQsa0JBaHdCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEckIyZjs7V0FFR0Usa0JBQzVCLFlBbERGUyxhQWlEOEJUOztXQUVBRSxrQkFDNUIsWUE0Y0YyQyxlQTdjOEIzQzs7T0FHd0IsSUFEeEJaLGlCQUFKaUIsa0JBQzRCLE9BdER0REUsYUFxRDhCbkI7T0FDNUIsWUEwdkJGM0MsU0FGQW1ZLGdCQXp2QjBCdlU7O0dBQzRDO1lBRXRFSztJQUNIO0tBR000RDtLQURBRTtLQURBQztLQU80QixPQTZEL0JuSCxnQkFsRUdnSDtJQUVMLFdBTUVJLG9CQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdtQjtRQUZSdUI7UUFBSmI7UUFBSlI7UUFFZ0IsT0FsQjNDcUUsZUFnQm1DaEQ7UUFFWCxPQWxCeEJnRCxlQWdCK0I3RDtPQUM3QixXQXlzQkYwQixlQTFzQjJCbEM7O1dBR0RTO09BQ3hCLFdBQXdCLDRCQXBCMUI0RCxnQkFtQjBCNUQ7O09BSU87UUFGRHdCO1FBQUp0QjtRQUVLLE9BQUEsNEJBdkJqQzBELGdCQXFCZ0NwQztPQUM5QixXQWt1QkY3QixTQUZBbVksZ0JBanVCNEI1WDs7T0FVdEI7UUFQMEJ3QjtRQUFKQztRQU90QixPQWdzQk55RixpQkF2c0JnQzFGOzttQkFHbkJ2ZTtXQUNIO1lBQVl5ZCxLQURUemQ7WUFDSzRjLEtBREw1YztZQUNDa2MsS0FERGxjO1lBRTRCLE9BN0J6Q3lnQixlQTRCc0JoRDtZQUNELE9BeUNyQkosZ0JBMUNrQlQ7V0FDUixXQXpPVndZLE1Bd09jbFo7VUFDNkM7T0FKekQsV0FDSSxrQ0FGc0JzQzs7T0FVSztRQUZGRTtRQUFKQztRQUVNLE9BQUEsNEJBbENqQzhCLGdCQWdDK0IvQjtPQUM3QixXQXV0QkZsQyxTQUZBbVksZ0JBdHRCMkJoVzs7V0FHSUUsaUJBQUpEO09BQ3pCLFdBcENGNkIsZUFtQzJCN0IsT0FBSUM7O09BTXpCO1FBSitCUTtRQUFKTjtRQUFKRDtRQUl2QjtVQTBzQk4yVjtxQkExc0J1QnowQixHQUFLLE9BQUEsNEJBMnJCNUIrZ0IsWUEzckJ1Qi9nQixHQUEwQjtZQUpacWY7UUFHL0IsT0F1ckJONEUsaUJBMXJCaUNsRjtPQUMvQjtlQUNJLDRCQXFCTjZGLGdCQXZCNkI5Rjs7OztPQU02QjtRQUQ1Qkc7UUFBSkQ7UUFDZ0MsT0EzQzFEeUIsZUEwQzhCeEI7d0JBQ1VqZixHQUFLLE9BdlA3Q28xQixNQXVQd0NwMUIsR0FBWTtPQUFsRCxXQUF3QixrQ0FEQWdmOztXQUVFRSxpQkFDMUIsV0FJRjJGLGtCQUw0QjNGO21CQUVFRSxpQkFDNUIsWUF5WkZzRCxlQTFaOEJ0RDs7R0FDbUI7WUFFakR5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0F6RGpDeWdCLGVBd0RZN0Q7S0FDUixXQStyQkpKLFNBRkFtWSxnQkE5ckJRelk7SUFDMkM7SUFIbkQsV0FBQSxrQ0FGTVU7SUFDUixXQW1zQkVKLFNBRkFtWSxnQkFsc0JFelk7R0FNSTtZQUVOMEk7SUFDRjtLQU1RO01BTDJCM0U7TUFBSnhDO01BQUpiO01BQUpWO01BS2YsT0FBQSw0QkFuRU51RSxnQkE4RGlDUjtNQUkzQixPQTRyQk55VSxVQWhzQjZCalg7S0FDM0IsV0FEbUJ2QixJQVFyQm1CLGdCQVJ5QlQ7O1FBTURSO0lBQU0sV0FwRTlCcUUsZUFvRXdCckU7R0FBK0M7WUFFdkVpQixnQkFDQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQixlQUNDcGxCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BRXpCd2xCLGFBSE01STtJQUNSLFdBNHFCRUosa0JBNXFCYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0o7SUFBZ0U7O1dBQzVDdEosZUFBTSxXQU0xQkMsZUFOb0JEOztXQUNBRSxpQkFBTSxXQTJQMUJxSixlQTNQb0JySjs7V0FDQVMsaUJBQU0sV0FqRjFCNEQsZUFpRm9CNUQ7O09BRWtCO1FBRGJEO1FBQUpHO1FBQ2lCLE9BZ3FCdEMwWCxZQTc3Qkl6WCxpQkE0UnFCSjtPQUN2QixXQTNJRjBELGFBMElxQnZEOztHQUNnRDtZQUVyRVosZUFDQ25jO0lBQUssT0FBQSw0QkFFTjBsQixxQkFGQzFsQjtHQUFtQztZQUVwQzBsQjtJQUVILElBQWdDQyxxQkFBMUJDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTBCRDtHQUk5QjtZQUVDRTtJQUVGOztPQUVnRCxJQURoQmpKLGVBQUpWLGVBQ29CLE9BOUI5Q21CLGdCQTZCOEJUO09BQzVCLFdBOVNFSSxnQkE2U3NCZDs7T0FHbUI7UUFEZG1DO1FBQUpqQztRQUNrQixPQUFBLDRCQTdLN0NzQixvQkE0SytCVztPQUM3QixXQWdvQkZWLGNBam9CMkJ2Qjs7V0FFR1MsaUJBQzVCLFdBaW1CRmlKLHVCQWxtQjhCako7O09BSVA7UUFGTzBCO1FBQUp4QjtRQUVILE9BQUEsNEJBMGZ2QmdKLHVCQTVmOEJ4SDtPQUM1QixXQTRuQkZaLGNBN25CMEJaOztXQUdDeUIsaUJBQ3pCLFdBeWNGd0gsb0JBMWMyQnhIOztXQUVHRyxpQkFDNUIsV0E4ZEYrQywyQkEvZDhCL0M7O1dBRUhDLGlCQUN6QixXQTRIRnNILG9CQTdIMkJ0SDs7V0FFR0U7T0FDNUIsV0FBNEIsNEJBMEg5Qm9ILHFCQTNIOEJwSDs7V0FFRkUsaUJBQzFCLFdBa2FGbUgsNkJBbmE0Qm5IOztXQUVIRSxpQkFDdkIsV0E0WUY2SCxzQkE3WXlCN0g7O1dBRUNFO09BQ3hCLFlBQXdCLDRCQWMxQmdILHdCQWYwQmhIOztXQUVLRztPQUM3QjtlQUE2Qiw0QkEwUC9COEcsNkJBM1ArQjlHOztXQUVIQyxrQkFDMUIsWUFNRjhHLHlCQVA0QjlHOztXQUVFRyxrQkFDNUIsWUF0REZ5RixlQXFEOEJ6Rjs7T0FHb0IsSUFEZmpCLGlCQUFKbUIsa0JBQ21CLE9BM0RsRHhDLGdCQTBEbUNxQjtPQUNqQyxZQXVVRmdFLGVBeFUrQjdDOztHQUNzQztZQUVyRXlHLHlCQUVDdG1CO0lBQUssT0E2V051bUIsbUJBdFBBaEYsa0JBdkhDdmhCO0dBQTBDO1lBRTNDb21CLHVCQUVDcG1CO0lBQUssT0FvVU53bUIsaUJBbFVBQyxpQkFGQ3ptQjtHQUF1QztZQUV4Q3ltQjtJQUNIO0tBR01DO0tBREFDO0tBREFDO0tBTzJCLE9BOUU5QnZKLGdCQXlFR3FKO0lBRUwsV0FNRUcscUJBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFDaUU7O09BR2hDO1FBRkZqSztRQUFKVjtRQUVNLE9BQUEsNEJBM0pqQ3VFLGdCQXlKK0I3RDtPQUM3QixXQThsQkZKLFNBRkFtWSxnQkE3bEIyQnpZOztXQUdFRSxpQkFDM0IsV0F1QkY0RixxQkF4QjZCNUY7O09BT3ZCO1FBTDhCNkQ7UUFBSnhDO1FBQUpZO1FBQUp4QjtRQUtsQixPQXhCTjRKLGdCQW1Cb0N4RztRQUk5QixPQTFOTkssYUFzTmdDN0M7UUFHMUIsT0FrbEJOZ1gsWUE3N0JJelgsaUJBd1d3QnFCO09BQzFCLFdBMmpCRkMsZUE1akJ3QnpCOztPQVNsQjtRQUh3QjBCO1FBQUp4Qjs7bUJBSWIvYztXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQXBYMUJnZCxnQkFtWGNKO1dBQ1IsV0FnakJWMEIsZUFqakJjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FId0JxQztPQUM1QixXQTFCRmtJLGdCQXlCMEIxSjs7T0FVNkI7UUFGdkJzQztRQUFKWDtRQUFKRjtRQUUrQixPQW5DdkRpSSxnQkFpQ2dDcEg7UUFFVCxPQUFBLDRCQXJQdkIzQixvQkFtUDRCZ0I7T0FDMUIsV0F5akJGZixjQTFqQndCYTs7T0FJMkIsSUFEaEJLLGlCQUFKRixpQkFDb0IsT0E4TW5EbUksZ0JBL01tQ2pJO09BQ2pDLFdBckNGNEgsZ0JBb0MrQjlIO21CQUVGQyxpQkFDM0IsV0FzUkY4RCxlQXZSNkI5RDs7R0FDbUI7WUFFaERvRDtJQUVIO0tBQWlDZ0Y7S0FBM0JDO0tBR3lCLE9BQUEsNEJBRzVCQyxrQkFOOEJGO0lBQ2hDLFdBL09FMUcsYUE4T0cyRztHQUlKO1lBRUNDO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPMkIsT0EvSDlCaEssZ0JBMEhHOEo7SUFFTCxXQU1FRyxzQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7T0FLN0Q7UUFKOEI3SjtRQUFKYjtRQUFKVjtRQUl0QixPQXFpQk51WSxxQkFyaUJ1QnowQixHQUFLLE9BMVo1Qm8xQixNQTBadUJwMUIsR0FBWSxHQUpDeWQ7UUFHOUIsT0FsRU5nSixnQkErRGdDN0o7T0FDOUIsV0F1VUYySyxtQkF4VTRCckw7O09BTTFCO1FBRHFCRTtRQUVOaUQsT0FGTWpEO1FBRVZpQyxPQUZVakM7UUFFZFMsT0FGY1Q7UUFLaEIsT0FrQlBvTCxzQkFyQmlCbkk7UUFFVixPQTRlUG9JLGtCQTllYXBKO09BRFgsZUF3aUJGN0Isa0JBdGlCcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEI2Yzs7T0FLUDtRQUR3QkU7UUFFVDBDLE9BRlMxQztRQUVid0IsT0FGYXhCO1FBRWpCeUIsT0FGaUJ6QjtRQUtuQixPQVlQeUssc0JBZmlCL0g7UUFFVixPQTZhUGlJLGtCQS9hYW5KO09BRFgsZUFraUJGL0Isa0JBaGlCcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEJ3ZTs7T0FLUDtRQUQ0Qkc7UUFFakJELE9BRmlCQztRQUVyQkMsT0FGcUJEO1FBR0wsT0E5TnpCOEIsZUE2TmEvQjtPQURYLGVBNU5GK0IsZUE2TlM3Qjs7V0FFc0JFLGlCQUM3QixXQTFhRTlCLGdCQXlhMkI4Qjs7V0FFRkUsaUJBQzNCLFdBekpGb0csZUF3SjZCcEc7bUJBRUFFLGlCQUMzQixXQW9PRndELGVBck82QnhEOztHQUNtQjtZQUVoRHNJO0lBQ21FLHVCQUN4Q3RMLGVBQ3pCLFdBek9GdUUsZUF3TzJCdkU7SUFHeUIsSUFEbkJVLGVBQUpSLGlCQUN1QixPQXJiaERZLGdCQW9iNkJKO0lBQy9CLFdBdVNGMkssbUJBeFM2Qm5MO0dBQzBDO1lBRXZFOEo7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsT0FsTDlCMUssZ0JBNEtHd0s7S0FLcUIsT0FLeEJ0RyxpQkFYR3VHO0lBSUw7WUFtZ0JFdEwsa0JBbGdCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekMrbkI7OztZQUdBSDtHQU9KO1lBRUNyRztJQUNIO0tBR015RztLQURBQztLQURBQztLQU80QixPQS9ML0I3SyxnQkEwTEcySztJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztXQUN6Q2pNLGVBQ3hCLFdBNmVGTSxTQUZBbVksZ0JBNWUwQnpZOztXQUVJRSxpQkFDNUIsV0F4TEZELGVBdUw4QkM7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk4wRSxpQkFrQnFDOUQ7UUFHL0IsT0FrZU5nWCxZQXZkQXBNLGtCQWRpQ3pMO09BQy9CLFdBeWVGSixrQkF4ZW9CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7T0FNbUIsSUFEakJ3QixpQkFBSnRCLGlCQUNxQixPQXhCaER3RSxpQkF1QitCbEQ7T0FDN0IsV0F4QkZrRCxpQkF1QjJCeEU7O09BRzBCLElBRGpCd0IsaUJBQUpDLGlCQUNxQixPQU1yRDZKLGlCQVBvQzlKO09BQ2xDLFdBMUJGZ0QsaUJBeUJnQy9DOztXQUVMRyxpQkFDekIsV0FsZUUzQixnQkFpZXVCMkI7bUJBRUdDLGlCQUM1QixXQThLRjhELGVBL0s4QjlEOztHQUNtQjtZQUVqRHlKO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsT0EvTi9CbkwsZ0JBME5HaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7V0FDekN2TSxlQUN4QixXQTZjRk0sU0FGQW1ZLGdCQTVjMEJ6WTs7V0FFSUUsaUJBQzVCLFdBOEJGcUosZUEvQjhCcko7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk53TCxpQkFrQnFDNUs7UUFHL0IsT0FrY05nWCxZQXZkQXBNLGtCQWtCaUN6TDtPQUMvQixXQXljRkosa0JBeGNvQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZHNmM7O09BT0g7UUFGSXdCO1FBQUp0QjtRQUVBLE9BQUEsNEJBUTFCMkwsc0JBVjhCcks7T0FDNUIsV0F4QkZnSyxpQkF1QjBCdEw7O1dBR0N5QixpQkFDekIsV0EzREYrQyxpQkEwRDJCL0M7O1dBRUdHLGlCQUM1QixXQStJRitELGVBaEo4Qi9EOztXQUVKQyxpQkFDeEIsV0E2YkZwQyxTQUZBbVksZ0JBNWIwQi9WOztHQUM0QjtZQUV0RDhKO0lBQ2lFOztPQUdoQyxJQUZGOUwsZUFBSlYsZUFFTSxPQW9TakM2SixzQkF0UytCbko7T0FDN0IsV0F3YkZKLFNBRkFtWSxnQkF2YjJCelk7O09BS007UUFGQW1DO1FBQUpqQztRQUVJLE9Bb2JqQ0ksU0FGQW1ZLGdCQXBiaUN0VztPQUMvQixXQXFiRjdCLFNBRkFtWSxnQkFwYjZCdlk7O1dBR0VTLGlCQUM3QixXQStSRmtKLHNCQWhTK0JsSjs7T0FJQTtRQUZJMEI7UUFBSnhCO1FBRUEsT0ErYS9CUCxTQUZBbVksZ0JBL2FtQ3BXO09BQ2pDLFdBZ2JGL0Isa0JBL2FtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNK2M7O0dBRTJCO1lBRTFEMEksZUFDQ3psQjtJQUFLLE9BQUEsNEJBRU4yb0IscUJBRkMzb0I7R0FBbUM7WUFFcEMyb0I7SUFFSCxJQUFnQ0MscUJBQTFCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUEwQkQ7R0FJOUI7WUFFQ0U7SUFFRjs7V0FDNEI1TSxlQUN4QixXQStXRjRKLHVCQWhYMEI1Sjs7T0FJSDtRQUZPVTtRQUFKUjtRQUVILE9BQUEsNEJBd1F2QjJKLHVCQTFROEJuSjtPQUM1QixXQTBZRmUsY0EzWTBCdkI7O1dBR0NTLGlCQUN6QixXQXVORm1KLG9CQXhOMkJuSjs7V0FFR0UsaUJBQzVCLFdBNE9GMkUsMkJBN084QjNFOztXQUVIeUIsaUJBQ3pCLFdBb01GdUssd0JBck0yQnZLOztXQUVHRztPQUM1QixXQUE0Qiw0QkFrTTlCb0sseUJBbk04QnBLOztXQUVGQyxpQkFDMUIsV0FnTEZ1SCw2QkFqTDRCdkg7O1dBRUhFLGlCQUN2QixXQTBKRmlJLHNCQTNKeUJqSTs7V0FFR0UsaUJBQzFCLFdBbUlGaUsseUJBcEk0QmpLOztXQUVGRTtPQUN4QixXQUF3Qiw0QkFhMUJnSyx3QkFkMEJoSzs7V0FFS0U7T0FDN0I7ZUFBNkIsNEJBTS9CaUgsNkJBUCtCakg7O1dBRURHLGtCQUM1QixZQXhTRjZGLGVBdVM4QjdGOztPQUdvQixJQURmbEIsaUJBQUptQixrQkFDbUIsT0E3U2xEbkMsZ0JBNFNtQ2dCO09BQ2pDLFlBcUZGcUUsZUF0RitCbEQ7O0dBQ3NDO1lBRXJFNkcsNEJBR0NybUI7SUFBSyxPQXFGTndtQixpQkEvRUFNLGlCQU5DOW1CO0dBQXVDO1lBRXhDa3BCLHVCQUVDbHBCO0lBQUssT0FpRk53bUIsaUJBL0VBTSxpQkFGQzltQjtHQUF1QztZQUV4QzhtQjtJQUNIO0tBR01xQztLQURBQztLQURBQztLQU80QixPQWpVL0JoTSxnQkE0VEc4TDtJQUVMLFdBTUVHLHFCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ2lFOztPQUdoQztRQUZEMU07UUFBSlY7UUFFSyxNQUFBLDRCQTlZakN1RSxnQkE0WWdDN0Q7T0FDOUIsV0EyV0ZKLFNBRkFtWSxnQkExVzRCelk7O1dBR0VFLGlCQUM1QixXQU9GbU4scUJBUjhCbk47O09BSWE7UUFGUnFCO1FBQUpZO1FBQUp4QjtRQUVnQixNQXJCM0NpSyxnQkFtQm1Dcko7UUFFWCxPQW5aeEJnRCxlQWlaK0JwQztPQUM3QixXQXdVRkMsZUF6VTJCekI7bUJBR0dFLGlCQUM1QixXQW1ERjJGLGVBcEQ4QjNGOztHQUNtQjtZQUVqRHdNO0lBRUg7S0FBaUNDO0tBQTNCQztLQUd5QixNQUFBLDRCQUc1QkMsdUJBTjhCRjtJQUNoQyxXQTFaRS9JLGVBeVpHZ0o7R0FJSjtZQUVDQztJQUVIO0tBR01DO0tBREFDO0tBREFDO0tBTzRCLE1BblcvQnhNLGdCQThWR3NNO0lBRUwsV0FNRUcsMkJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFFRjs7V0FDOEI1TixlQUMxQixXQWxERjRLLGdCQWlENEI1Szs7T0FHMUI7UUFEc0JFO1FBRUg2RCxLQUZHN0Q7UUFFUHFCLEtBRk9yQjtRQUVYUSxLQUZXUjtRQUVmUyxPQUZlVDtRQU1qQixNQXZiUHFFLGVBbWJxQlI7UUFHZCxNQW1EUDhKLGtCQXREaUJ0TTtRQUVWLE1BMFFQZ0ssa0JBNVFhN0s7T0FEWCxlQTluQkZ3WSxNQStuQlN2WTs7T0FNUDtRQUR5QkU7UUFFTmlOLE9BRk1qTjtRQUVWc0MsT0FGVXRDO1FBRWRzQixPQUZjdEI7UUFFbEJ5QixPQUZrQnpCO1FBTXBCLE1BOWJQMEQsZUEwYnFCdUo7UUFHZCxNQTRDUEQsa0JBL0NpQjFLO1FBRVYsTUEwTVBxSSxrQkE1TWFySjtPQURYLGVBcm9CRitXLE1Bc29CUzVXOztPQU1QO1FBRDZCRztRQUVsQkosT0FGa0JJO1FBRXRCQyxPQUZzQkQ7UUFHTixNQWxjekI4QixlQWljYWxDO09BRFgsZUFoY0ZrQyxlQWljUzdCOztXQUVxQkUsaUJBQzVCLFdBM1hGc0csZUEwWDhCdEc7bUJBRUFFLGlCQUM1QixXQUVGMEQsZUFIOEIxRDs7R0FDbUI7WUFFakQwRCxlQUNDMWlCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE1BN1h6QndsQixhQTRYTTVJO0lBQ1IsV0E2U0VKLGtCQTdTYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3VDO1lBRXpDc0ssaUJBS0N5RDtJQUFKO0tBT01DO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBa0IyQixNQWhhOUJsTixnQkFtWkc2TTtLQVdxQixNQUFBLFdBbEJ2QkQsSUFLRUc7S0FZcUIsTUFxUnhCNU4sa0JBclJzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQWJ6Q3FxQjtpQkFTTXJxQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQW1PMUJ5cUIsY0FwT2M3TjtLQUNSLFdBamVONkQsZUFnZVV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVRDb087SUFNTCxXQWNFUCxrQkFyQkdRLDBCQUlBSjtHQWVKO1lBRUNKLHlCQUNGLHFCQUVnRDtZQUU5Q2QseUJBRUNqcEI7SUFBSyxPQUVOdW1CLG1CQXROQThCLGtCQW9OQ3JvQjtHQUEwQztZQUUzQ3VtQixtQkFLQzBEO0lBQUo7S0FJTVM7S0FEQUM7S0FEQUM7S0FPNkIsTUExYmhDdk4sZ0JBcWJHcU47SUFFTCxXQUMyQixXQVB4QlQsSUFFRVcsWUFDQUQ7R0FPSjtZQUVDNUQ7SUFFSDtLQUlNOEQ7S0FEQUM7S0FEQUM7S0FEQWtLO0tBUzZCLE1BemNoQzVYLGdCQW1jR3dOO0tBSTJCLE1BSzlCdEQsbUJBWEd3RDtJQUlMLFdBNk9Fdk8sU0FGQW1ZLGdCQWhQR00saUJBRUFuSztHQVFKO1lBRUN2RCwwQkFDMkQscUJBRW5CO1lBRXhDcEI7SUFHSDtLQUlNOEU7S0FEQUM7S0FEQUM7S0FEQUM7S0FRNEIsTUE3ZC9CL04sZ0JBdWRHNk47S0FLc0IsTUFpTnpCdUosWUF2ZEFwTSxrQkFnUUc4QztJQUlMO1lBd05FM08sa0JBdk51Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4xQ29yQjs7O1lBR0FIO0dBT0o7WUFFQ2xDO0lBRUg7S0FJTTBDO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE1BNWU5QnZPLGdCQXNlR3FPO0tBS3FCLE1BclJ4QnJELGlCQStRR3NEO0lBSUwsV0F5TUVuUCxrQkF4TXNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTnpDNHJCLHFCQUdBSDtHQU9KO1lBRUN6RjtJQUVIO0tBS01nRztLQURBRTtLQURBQztLQURBQztLQURBQztLQWlCOEIsTUFwZ0JqQ2hQLGdCQXVmRzJPO0tBWTJCLE1BNkQ5QnRFLGtCQTFFR3dFO0tBWUQ7T0FBQTswQkFLRnhLLDRCQWxCR3lLO2lCQVFNbnNCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BK0gxQnlxQixjQWhJYzdOO0tBQ1IsV0Fya0JONkQsZUFva0JVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FSQ2tRO0lBS0wsV0F5TEU1UCxTQUZBbVksZ0JBN0xHdEk7R0FrQko7WUFFQzNLO0lBRUg7S0FJTTRLO0tBREFDO0tBREFDO0tBREFDO0tBUzRCLE1BbmhCL0JwUCxnQkE2Z0JHaVA7S0FJc0IsTUFLekJJLCtCQVhHRjtJQUlMO1lBbUtFaFEsa0JBbEt1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQU4xQ3lzQjs7WUFFQUY7O0dBUUo7WUFFQ0c7SUFFMEM7S0FHTixJQUZOOVAsZUFBSlYsZUFFVSxNQWtKcEN1WSxZQW52QkFoVSxnQkErbEI4QjdEO0tBQzVCLFdBc0VGK1AsMkJBdkUwQnpROztRQUdDRTtJQUN6QixXQXFKRkksU0FGQW1ZLGdCQXBKMkJ2WTtHQUM0QjtZQUV2RDJKO0lBRUg7S0FRTTZHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBMEI2QixNQTVqQmhDOVAsZ0JBd2lCR3dQO0tBbUIyQixNQWtIOUI0SCxZQW52QkFoVSxnQkE2bUJHcU07S0FtQjBCLE1BTTdCcEYsa0JBMUJHcUY7S0FtQnVCLE1BWTFCSyxlQWhDR0o7aUJBZ0JNaHRCO0tBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUE3bkIxQnlnQixlQTRuQmM3RDtLQUNSLFdBN25CTjZELGVBNG5CVXZFLFVBQVF1QjtJQUM0QztJQUg1RCxVQUFBLGlDQWhCQ3dQO2lCQVdNanRCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BNkUxQnlxQixjQTlFYzdOO0tBQ1IsV0F2bkJONkQsZUFzbkJVdkU7SUFDaUM7SUFIekMsVUFBQSxpQ0FYQ2dSO0lBUUw7WUF1SUUxUSxrQkF0SXdDeGMsR0FBSyxPQUFMQSxFQUFNLEdBVjNDbXRCOzs7Ozs7O1lBT0FQO0dBcUJKO1lBRUNsRix5QkFDRixxQkFFNEM7WUFFMUMwRjtJQUNGOztTQUUrQmxSO0tBQzNCLFdBQTJCLDRCQUs3Qm1SLDhCQU42Qm5SOztRQUVERTtJQUMxQixXQUEwQiw0QkE2QjVCa1Isd0JBOUI0QmxSO0dBRXdCO1lBRXBEaVI7SUFHSDtLQUtNRTtLQURBQztLQURBQztLQURBQztLQURBRTtLQVcyQixNQTdsQjlCdlEsZ0JBc2xCR2tRO0tBS29CLE1Ba0Z2QmtILFlBbnZCQWhVLGdCQTBwQkdnTjtLQU1xQixNQU14QmQsMkJBYkdlO0lBS0w7WUEwRkVsUixrQkF6RnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUHpDNHRCOzs7WUFHQUo7O0dBU0o7WUFFQ2I7SUFFRjtTQUM2QnpRO0tBQ3pCLFdBQXlCLDRCQTFxQjNCdUUsZ0JBeXFCMkJ2RTs7UUFFQ0U7SUFDMUIsV0FBMEIsNEJBRTVCa1Isd0JBSDRCbFI7R0FDb0M7WUFFaEVrUjtJQUVIO0tBS01PO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVzJCLE1BdG5COUI1USxnQkErbUJHd1E7S0FLcUIsTUExckJ4QnBOLGVBbXJCR3NOO0tBTXdCLE1BTTNCdEcsa0JBYkd1RztJQUtMO1lBaUVFeFIsa0JBaEVzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6Q2l1Qjs7O1lBR0FIOztHQVNKO1lBRUNyRyx5QkFDRixxQkFFOEM7WUFFNUNnRDtJQUFpRSxzQkFDdEMsaUJBQ0ksa0JBQ0o7O0dBQXFCO1lBRWhEM0U7SUFFSDtLQUtNb0k7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FVNEIsTUFocEIvQmpSLGdCQXlvQkc4UTtpQkFNb0NudUIsR0FBSyxPQUFMQSxFQUFNO0lBQXBCO0tBQUEsTUFBQSxpQ0FQdEJvdUI7S0FNc0IsTUFwdEJ6QjNOLGVBNnNCRzROO0lBS0w7WUFzQ0U3UixrQkFyQ3VDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDFDc3VCOzs7O1lBSUFKO0dBUUo7WUFFQzVQO0lBQW9FLDhCQUMzQzsyQkFDRnBDLGVBQU0sV0FBTkE7UUFDQUU7SUFBTSxXQUFOQTtHQUE2QjtZQUVwRDZILHdCQUNGLHFCQUV3QztZQUV0Q2xELFdBQTREL2dCLEdBQUssT0FBTEEsRUFBTTtZQUVsRTJkLHFCQUFpRSxxQkFFakI7WUFFaERIO0lBQW1FOztXQUNoQ1osZUFBSlY7T0FDN0IsV0FENkJBLElBUS9CdVkscUJBUG9EejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QjRjOztXQUVSUixpQkFBTSxXQUFOQTs7V0FDT2lDLGlCQUFKeEI7T0FDNUIsV0FENEJBLE1BSzlCNFgscUJBSm1EejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QnFlOztXQUVERSxpQkFBSnhCO09BQzNCLFdBRDJCQSxNQUc3QjBYLHFCQUZrRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkJ1ZTs7R0FDNEI7WUFFN0RrVyxZQUNDeEs7SUFBSixZQUEyQjtRQUFZL047SUFBTSxXQUFLLFdBQTlDK04sSUFBbUMvTjtHQUFrQjtZQUV0RHlZLGVBQWtEMzBCLEdBQUssT0FBTEEsRUFBTTtZQUV4RHdjLFNBRUN5TjtJQUFKLElBQTRCMXBCLGdCQUFuQlk7SUFDUixXQUFvQixXQURqQjhvQixJQUFLOW9CLE1BQW1CWjtHQUNzQztZQUUvRG1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07WUFDckQwMEIsaUJBQTJCLHFCQUFzQztZQUU3RHpZO0lBQzZELHVCQUN6Q0MsZUFBTSxXQTdxQjlCQyxlQTZxQndCRDtRQUNLVSxlQUFKUjtJQUN2QixXQUR1QkEsTUFHekJHLHdCQUg2Qks7R0FDMkI7WUFFeERMO0lBRUYsOEJBQzhCOzs7V0FDREwsZUFBTSxXQUFOQTs7V0FDRVUsZUFBSlI7T0FDdkIsV0FEdUJBLE1BeEJ6QnFZLHFCQXlCOEN6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCNGM7O1dBRUhDLGlCQUFNLFdBQU5BO21CQUNERSxpQkFBTSxXQWhCL0IyWCxVQWdCeUIzWDs7R0FBMkM7WUFFcEVzWCxXQUFXcjBCLEdBQUksT0FBQSw0QkEvMUJmeWUsV0ErMUJXemUsR0FBd0I7Ozs7T0E1OUJuQ28xQjtPQUVJcFk7T0FZSk87T0EwR0E4QztPQUtBNUI7T0FRQWY7T0FlQTRDO09BWUEwRDtPQTRDQXZEO09BWUFnRTtPQXFDQUk7T0FXQUQ7T0FVQXZIO09BR0ErSDtPQUtBSTtPQU9Bcko7T0FHQXVKO09BUUFHO09BbUNBUztPQUlBRjtPQUlBSztPQVlBSTtPQTZCQTdFO09BUUFrRjtPQVlBSTtPQThCQUU7T0FPQXRCO09BZUEzRTtPQVlBNEc7T0FvQkFFO09BWUFJO09BcUJBQztPQWNBakQ7T0FHQWtEO09BUUFHO09BK0JBekM7T0FLQTZDO09BSUFwQztPQVlBd0M7T0FhQUM7T0FRQUc7T0FhQUk7T0E0QkFwSDtPQUtBOEQ7T0E0QkF1RDtPQUtBZDtPQUlBMUM7T0FpQkFRO09BZUFRO09BS0FwQjtPQWdCQTRDO09BZUEvQztPQXVCQXRFO09BZUFnTDtPQVNBM0c7T0FpQ0EyQjtPQUtBMEY7T0FTQUM7T0FrQkFWO09BUUFXO09BaUJBN0Y7T0FLQWdEO09BS0EzRTtPQWlCQXhIO09BS0EyRjtPQUtBbEQ7T0FFQXBEO09BSUFIO09BU0FpWDtPQUdBRTtPQUVBblk7T0FLQWtJO09BQ0FnUTtPQUVJelk7T0FNSk07T0FVQThYO09BeDBCQS9UO09BbEpJdEQ7T0EwTUp5RDs7OztFOzs7Ozs7R0M1TWM7O0lBaTRCWjllO0lBQ0FDO0lBbDRCWTtJQThDQztJQWsxQkgsYUFDVkQsdUJBQ0FDOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDbDRCRnl6QixvQkFBNkI5MEIsZ0JBQVEsT0FBUkE7WUFFN0J3YixnQkFBZ0J4YixLQUFJeWI7SUFDdEIsT0FBQSxtQ0FEa0J6YixXQUFJeWI7R0FFb0Q7WUFFcEVnQjtJQUNQO0tBR01DO0tBREFFO0tBREFDO0tBTzRCLE9Bb1EvQkMsZ0JBelFHSjtJQUVMLFdBTUVNLHFCQVRHSixVQURBQyxZQUNBRDtHQU9KO1lBRUNJLHFCQUFxQmhkO0ksOEJBc0djOzs7V0FwR1QyYixlQUN4QixXQXc2QkZNLFNBRkFtWSxnQkF2NkIwQnpZOztXQUVHRSxpQkFDM0IsV0F3NUJGb0IsY0F6NUI2QnBCOztPQUkwQjtRQUZ0QnFCO1FBQUpiO1FBQUpDO1FBRThCLE9BcEJuREcsZ0JBa0I2QlM7UUFFVixPQUFBLDRCQTZHdkJDLG9CQS9HNkJkO09BQzNCLFdBazVCRmUsY0FuNUJ5QmQ7O1dBR0lFO09BQzNCLFdBQTJCLDRCQW1HN0IwQixXQXBHNkIxQjs7T0FPdkI7UUFMK0JrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLbkIsT0E1QkZ4QixnQkF1QmlDaUQ7UUFJL0IsT0FxSE5LLGFBekhpQ2pCO1FBRzNCLE9BdzVCTm9WLFlBbDdCSXpYLGlCQXVCeUJxQjtPQUMzQixXQWk0QkZDLGVBbDRCeUJFOztPQVNuQjtRQUh5QkQ7UUFBSkk7O21CQUlkM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0FuQzFCZ2QsZ0JBa0NjSjtXQUNSLFdBczNCVjBCLGVBdjNCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHlCcUM7T0FDN0IsV0E5QkV2QixnQkE2QnVCMkI7O09BU29CO1FBRGhCRDtRQUFKRTtRQUNvQixPQUFBLDRCQW1GL0NILFdBcEYrQkM7T0FDN0IsV0F0Q0UxQixnQkFxQ3VCNEI7O09BR2tCO1FBRGhCQztRQUFKQztRQUNvQixPQUFBLDRCQWlGN0NMLFdBbEY2Qkk7T0FDM0IsV0F4Q0U3QixnQkF1Q3FCOEI7O1dBRUNFO09BQ3hCLFdBQXdCLDRCQTFDdEJoQyxpQkF5Q3NCZ0M7O09BSU87UUFGRUQ7UUFBSkc7UUFFRSxPQXE0QmpDdVYsWUFsN0JJelgsaUJBMkMrQitCO09BQ2pDLFdBMjRCRnZDLFNBRkFtWSxnQkExNEIrQnpWOztXQUdFRCxpQkFBSkc7T0FDM0IsWUFEMkJBLE1BbzRCN0JxVixZQWw3Qkl6WCxpQkE4QzZCaUM7O09BUzNCO1FBUDBCRTtRQUFKSTtRQU90QixPQTIzQk5rVixZQWw3Qkl6WCxpQkFnRDRCbUM7O21CQUduQm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BckRuQ2dkLGdCQW9EY0o7V0FDUixXQWs0QlZKLFNBRkFtWSxnQkFqNEJjelk7VUFDNEM7T0FKeEQsWUFDSSxrQ0FGc0JxRDs7T0FTbUI7UUFEaEJEO1FBQUpFO1FBQ29CLE9BODNCL0NoRCxTQUZBbVksZ0JBNzNCK0JyVjtPQUM3QixZQXpERXRDLGdCQXdEdUJ3Qzs7T0FJMEI7UUFGZkM7UUFBSkM7UUFBSkM7UUFFdUIsT0E1RGpEM0MsZ0JBMERrQ3lDO1FBRWIsT0EyM0J6QmpELFNBRkFtWSxnQkEzM0JrQ2pWO09BQ2hDLFlBM0RFMUMsZ0JBMEQwQjJDOztXQUdKRTtPQUN4QixZQUF3Qiw0QkE5RHRCN0MsaUJBNkRzQjZDOztPQUltQjtRQUZMSztRQUFKTjtRQUFKRztRQUVhLE9BaTNCN0MwVSxZQWw3Qkl6WCxpQkErRG9Da0Q7UUFFZixPQWpFckJsRCxnQkErRGdDNEM7T0FDbEMsWUFoRUU1QyxnQkErRDRCK0M7O09BSWtCLElBRGhCRCxrQkFBSk0sa0JBQ29CLE9BbkU5Q3BELGdCQWtFOEI4QztPQUNoQyxZQW5FRTlDLGdCQWtFMEJvRDs7T0FHaUIsSUFEaEJELGtCQUFKSyxrQkFDb0IsT0FyRTNDeEQsZ0JBb0UyQm1EO09BQzdCLFlBckVFbkQsZ0JBb0V1QndEOztPQVFyQjtRQU5tQ1I7UUFBSmdLO1FBQUp0SjtRQUFKSDtRQUFKSztRQU1uQixPQTVFRjVELGdCQXNFcUNnRDtRQUtuQyxPQXlDTkssb0JBOUNxQzJKO1FBSS9CLE9BMUVGaE4sZ0JBc0U2QjBEO1FBRzNCLE9BekVGMUQsZ0JBc0V5QnVEO09BQzNCLFlBeUVGRCxhQTFFeUJNOztPQVEyQixJQURoQkQsa0JBQUpHLGtCQUNvQixPQXlIcERMLGVBMUhvQ0U7T0FDbEMsWUE5RUUzRCxnQkE2RTRCOEQ7O09BSXdCO1FBRnBCTTtRQUFKUDtRQUFKRztRQUU0QixPQXNIeERQLGVBeEhvQ1c7UUFFWCxPQWkyQnpCcVQsWUEzdUJBaFUsZ0JBeEhnQ0k7T0FDOUIsWUFoRkU3RCxnQkErRXdCZ0U7O1dBR0VDLGtCQUFKQztPQUN4QixZQW5GRWxFLGdCQWtGc0JrRSxRQUFJRDs7V0FFTkUsa0JBQ3RCLFlBazJCRjNFLFNBRkFtWSxnQkFqMkJ3QnhUOztPQUdrQyxJQUR0QkUsa0JBQUpDLGtCQUMwQixPQXZGdER0RSxnQkFzRmdDcUU7T0FDbEMsWUFnMkJGN0Usa0JBaDJCOEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEcEJzaEI7OztRQUVIRzs7bUJBR2pCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BN0ZoQ2dkLGdCQTRGYUo7V0FDUixXQTAxQlRKLGtCQTExQndCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7VUFDMEM7T0FKckQsWUFDRSxrQ0FGeUJ1Rjs7T0FTdUI7UUFGYndQO1FBQUp6UDtRQUFKRztRQUVxQixPQWpHaEQzRSxnQkErRm1DaVU7UUFFUixPQWdXL0IxUCxpQkFsV21DQztPQUNqQyxZQXUxQkZoRixrQkF0MUJtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNMmhCOztPQUdPLE9BdEd0QzVGLGdCQWdCcUJ4Yjs7V0F1Rk1xaEIsa0JBQ3pCLFlBcEdFNUUsZ0JBbUd1QjRFOztXQUVGRSxrQkFBTSxZQXJHM0I5RSxnQkFxR3FCOEU7O09BRXFCO1FBRGhCRDtRQUFKRTtRQUNvQixPQTIwQjlDMFMsWUEzdUJBaFUsZ0JBakc4Qm9CO09BQzVCLFlBdkdFN0UsZ0JBc0dzQitFOztXQUVDRyxrQkFDekIsWUFrUkZGLHFCQW5SMkJFOztXQUVNRCxrQkFBSkU7T0FDM0IsWUFEMkJBLE9BMUd6Qm5GLGdCQTBHNkJpRjs7V0FFUkksa0JBQU0sWUFxVi9CZCxpQkFyVnlCYzs7T0FHK0I7UUFGdEJ5UztRQUFKMVM7UUFBSkc7UUFFOEIsT0EvR3BEdkYsZ0JBNkc4QjhYO1FBRU4sT0F3MEI1QnRZLFNBRkFtWSxnQkF4MEI4QnZTO09BQzVCLFlBbW1CRm1GLG1CQXBtQjBCaEY7bUJBR0lFLGtCQUM1QixZQXNoQkZDLGVBdmhCOEJEOzs7WUFJOUJwQywyQkFDNkQscUJBRW5CO1lBRTFDNUI7SUFDSDtLQUFzRG5FO0tBQXpCQztLQUF2QkM7S0FJbUIsT0E5SGxCd0MsZ0JBMEgrQzFDO0tBRzNCLE9BcXpCeEJtYSxZQWw3Qkl6WCxpQkEwSHNCekM7SUFDNUIsV0FxQkUrRixhQXRCRzlGO0dBS0o7WUFFQ2tEO0lBRUg7S0FJTTRGO0tBREFDO0tBREFFO0tBREFDO0tBUTJCLE9BaUk5QnJHLGdCQXZJR2tHO0tBS3FCLE9BM0lwQnZHLGdCQXFJRHlHO0lBSUwsV0FPRW5ELGFBWkdvRCxzQkFHQUo7R0FPSjtZQUVDaEQ7SUFDSDtLQUdNc0Q7S0FEQUU7S0FEQUM7S0FPNEIsT0FvSC9CMUcsZ0JBekhHdUc7SUFFTCxXQU1FSSxrQkFUR0YsVUFEQUMsWUFDQUQ7R0FPSjtZQUVDRSxrQkFBa0J6akI7SSw4QkFFUzs7O1dBQ0gyYixlQUN0QixXQXV4QkZNLGtCQXZ4QnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCa2M7O09BR29CO1FBRGJVO1FBQUpSO1FBQ2lCLE9BcXhCNUNJLGtCQXJ4QjBEeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpDNGM7T0FDN0IsV0FsQkYwRCxhQWlCMkJsRTs7V0FFRVMsaUJBQzNCLFdBcXdCRlcsY0F0d0I2Qlg7O09BR21CLElBRGR3QixpQkFBSnRCLGlCQUNrQixPQW13QmhEUyxjQXB3QmtDYTtPQUNoQyxXQW13QkZiLGNBcHdCOEJUOztXQUVKeUI7T0FDeEIsV0FBd0IsNEJBeEIxQjhCLGNBdUIwQjlCOztPQUlPO1FBRkVEO1FBQUpJO1FBRUUsT0F1d0JqQzhWLFlBbHlCQW5VLGNBeUJtQy9CO09BQ2pDLFdBNndCRi9CLFNBRkFtWSxnQkE1d0IrQmhXOztXQUdFRCxpQkFBSkU7T0FDM0IsV0FEMkJBLE1Bc3dCN0I2VixZQWx5QkFuVSxjQTRCaUM1Qjs7T0FTM0I7UUFQMEJHO1FBQUpDO1FBT3RCLE9BeXVCTm1GLGlCQWh2QmdDcEY7O21CQUduQjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BbkN2Q3NnQixhQWtDa0IxRDtXQUNSLFdBb3dCVkosU0FGQW1ZLGdCQW53QmN6WTtVQUN5QztPQUpyRCxXQUNJLGtDQUZzQjRDOztXQVFGRTtPQUN4QixXQUF3Qiw0QkF2QzFCc0IsY0FzQzBCdEI7O09BR2UsSUFEYkQsaUJBQUpHLGlCQUNpQixPQXpDekNvQixhQXdDNEJ2QjtPQUMxQixXQXpDRnVCLGFBd0N3QnBCOztPQUd5QixJQURiRCxpQkFBSkcsaUJBQ2lCLE9BWWpEcUIsZUFib0N4QjtPQUNsQyxZQTNDRnFCLGFBMENnQ2xCOztXQUVQRyxrQkFDdkIsWUEwdkJGL0MsU0FGQW1ZLGdCQXp2QnlCcFY7O1dBRUFDLGtCQUFNLFlBOUMvQmMsYUE4Q3lCZDs7V0FDRUc7T0FDekIsWUF1dkJGbkQsa0JBdnZCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEckIyZjs7V0FFR0Usa0JBQzVCLFlBbERGUyxhQWlEOEJUOztXQUVBRSxrQkFDNUIsWUFtY0YyQyxlQXBjOEIzQztlQUVBLE9Bek05QmhFLGdCQWdLa0J4Yjs7O1lBMkNsQmtnQjtJQUNIO0tBR000RDtLQURBRTtLQURBQztLQU80QixPQTZEL0JuSCxnQkFsRUdnSDtJQUVMLFdBTUVJLG9CQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdtQjtRQUZSdUI7UUFBSmI7UUFBSlI7UUFFZ0IsT0FsQjNDcUUsZUFnQm1DaEQ7UUFFWCxPQWxCeEJnRCxlQWdCK0I3RDtPQUM3QixXQWlzQkYwQixlQWxzQjJCbEM7O1dBR0RTO09BQ3hCLFdBQXdCLDRCQXBCMUI0RCxnQkFtQjBCNUQ7O09BSU87UUFGRHdCO1FBQUp0QjtRQUVLLE9BQUEsNEJBdkJqQzBELGdCQXFCZ0NwQztPQUM5QixXQTB0QkY3QixTQUZBbVksZ0JBenRCNEI1WDs7T0FVdEI7UUFQMEJ3QjtRQUFKQztRQU90QixPQXdyQk55RixpQkEvckJnQzFGOzttQkFHbkJ2ZTtXQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BN0JuQ3lnQixlQTRCc0JoRDtXQUNaLFdBREl2QixJQTBDZG1CLGdCQTFDa0JUO1VBQ21DO09BSm5ELFdBQ0ksa0NBRnNCNEI7O09BVUs7UUFGRkU7UUFBSkM7UUFFTSxPQUFBLDRCQWxDakM4QixnQkFnQytCL0I7T0FDN0IsV0Erc0JGbEMsU0FGQW1ZLGdCQTlzQjJCaFc7O1dBR0lFLGlCQUFKRDtPQUN6QixXQXBDRjZCLGVBbUMyQjdCLE9BQUlDOztPQU16QjtRQUorQlE7UUFBSk47UUFBSkQ7UUFJdkI7VUFrc0JOMlY7cUJBbHNCdUJ6MEIsR0FBSyxPQUFBLDRCQW1yQjVCK2dCLFlBbnJCdUIvZ0IsR0FBMEI7WUFKWnFmO1FBRy9CLE9BK3FCTjRFLGlCQWxyQmlDbEY7T0FDL0I7ZUFDSSw0QkFxQk42RixnQkF2QjZCOUY7Ozs7T0FNdUI7UUFEdEJHO1FBQUpEO1FBQzBCLE9BM0NwRHlCLGVBMEM4QnhCO3dCQUNVamYsR0FBSyxPQUFMQSxFQUFNO09BQTVDLFdBQXdCLGtDQURBZ2Y7O1dBRUVFLGlCQUMxQixXQUlGMkYsa0JBTDRCM0Y7bUJBRUVFLGlCQUM1QixZQWlaRnNELGVBbFo4QnREOztHQUNtQjtZQUVqRHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQXpEakN5Z0IsZUF3RFk3RDtLQUNSLFdBdXJCSkosU0FGQW1ZLGdCQXRyQlF6WTtJQUMyQztJQUhuRCxXQUFBLGtDQUZNVTtJQUNSLFdBMnJCRUosU0FGQW1ZLGdCQTFyQkV6WTtHQU1JO1lBRU4wSTtJQUNGO0tBTVE7TUFMMkIzRTtNQUFKeEM7TUFBSmI7TUFBSlY7TUFLZixPQUFBLDRCQW5FTnVFLGdCQThEaUNSO01BSTNCLE9Bb3JCTnlVLFVBeHJCNkJqWDtLQUMzQixXQURtQnZCLElBUXJCbUIsZ0JBUnlCVDs7UUFNRFI7SUFBTSxXQXBFOUJxRSxlQW9Fd0JyRTtHQUErQztZQUV2RWlCLGdCQUNDcmQ7SUFBSyxPQUFBLDRCQUVOb2xCLGdCQUZDcGxCO0dBQThCO1lBRS9Cb2xCLGVBQ0NwbEI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0FFekJ3bEIsYUFITTVJO0lBQ1IsV0FvcUJFSixrQkFwcUJheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSjtJQUFnRTs7V0FDNUN0SixlQUFNLFdBTTFCQyxlQU5vQkQ7O1dBQ0FFLGlCQUFNLFdBeVAxQnFKLGVBelBvQnJKOztXQUNBUyxpQkFBTSxXQWpGMUI0RCxlQWlGb0I1RDs7T0FFa0I7UUFEYkQ7UUFBSkc7UUFDaUIsT0F3cEJ0QzBYLFlBbDdCSXpYLGlCQXlScUJKO09BQ3ZCLFdBMUlGMEQsYUF5SXFCdkQ7O0dBQ2dEO1lBRXJFWixlQUNDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O09BRWdELElBRGhCakosZUFBSlYsZUFDb0IsT0E5QjlDbUIsZ0JBNkI4QlQ7T0FDNUIsV0EzU0VJLGdCQTBTc0JkOztPQUdtQjtRQURkbUM7UUFBSmpDO1FBQ2tCLE9BQUEsNEJBNUs3Q3NCLG9CQTJLK0JXO09BQzdCLFdBd25CRlYsY0F6bkIyQnZCOztXQUVHUyxpQkFDNUIsV0F5bEJGaUosdUJBMWxCOEJqSjs7T0FJUDtRQUZPMEI7UUFBSnhCO1FBRUgsT0FBQSw0QkFrZnZCZ0osdUJBcGY4QnhIO09BQzVCLFdBb25CRlosY0FybkIwQlo7O1dBR0N5QixpQkFDekIsV0FpY0Z3SCxvQkFsYzJCeEg7O1dBRUdHLGlCQUM1QixXQXNkRitDLDJCQXZkOEIvQzs7V0FFSEMsaUJBQ3pCLFdBMEhGc0gsb0JBM0gyQnRIOztXQUVHRTtPQUM1QixXQUE0Qiw0QkF3SDlCb0gscUJBekg4QnBIOztXQUVGRSxpQkFDMUIsV0EwWkZtSCw2QkEzWjRCbkg7O1dBRUhFLGlCQUN2QixXQW9ZRjZILHNCQXJZeUI3SDs7V0FFQ0U7T0FDeEIsWUFBd0IsNEJBYzFCZ0gsd0JBZjBCaEg7O1dBRUtHO09BQzdCO2VBQTZCLDRCQXdQL0I4Ryw2QkF6UCtCOUc7O1dBRUhDLGtCQUMxQixZQU1GOEcseUJBUDRCOUc7O1dBRUVHLGtCQUM1QixZQXRERnlGLGVBcUQ4QnpGOztPQUdvQixJQURmakIsaUJBQUptQixrQkFDbUIsT0EzRGxEeEMsZ0JBMERtQ3FCO09BQ2pDLFlBK1RGZ0UsZUFoVStCN0M7O0dBQ3NDO1lBRXJFeUcseUJBRUN0bUI7SUFBSyxPQXFXTnVtQixtQkFoUEFoRixrQkFySEN2aEI7R0FBMEM7WUFFM0NvbUIsdUJBRUNwbUI7SUFBSyxPQTRUTndtQixpQkExVEFDLGlCQUZDem1CO0dBQXVDO1lBRXhDeW1CO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPMkIsT0E5RTlCdkosZ0JBeUVHcUo7SUFFTCxXQU1FRyxxQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUNpRTs7T0FHaEM7UUFGRmpLO1FBQUpWO1FBRU0sT0FBQSw0QkEzSmpDdUUsZ0JBeUorQjdEO09BQzdCLFdBc2xCRkosU0FGQW1ZLGdCQXJsQjJCelk7O1dBR0VFLGlCQUMzQixXQXVCRjRGLHFCQXhCNkI1Rjs7T0FPdkI7UUFMOEI2RDtRQUFKeEM7UUFBSlk7UUFBSnhCO1FBS2xCLE9BeEJONEosZ0JBbUJvQ3hHO1FBSTlCLE9Bek5OSyxhQXFOZ0M3QztRQUcxQixPQTBrQk5nWCxZQWw3Qkl6WCxpQkFxV3dCcUI7T0FDMUIsV0FtakJGQyxlQXBqQndCekI7O09BU2xCO1FBSHdCMEI7UUFBSnhCOzttQkFJYi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BalgxQmdkLGdCQWdYY0o7V0FDUixXQXdpQlYwQixlQXppQmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh3QnFDO09BQzVCLFdBMUJGa0ksZ0JBeUIwQjFKOztPQVU2QjtRQUZ2QnNDO1FBQUpYO1FBQUpGO1FBRStCLE9BbkN2RGlJLGdCQWlDZ0NwSDtRQUVULE9BQUEsNEJBcFB2QjNCLG9CQWtQNEJnQjtPQUMxQixXQWlqQkZmLGNBbGpCd0JhOztPQUkyQixJQURoQkssaUJBQUpGLGlCQUNvQixPQTRNbkRtSSxnQkE3TW1Dakk7T0FDakMsV0FyQ0Y0SCxnQkFvQytCOUg7bUJBRUZDLGlCQUMzQixXQThRRjhELGVBL1E2QjlEOztHQUNtQjtZQUVoRG9EO0lBRUg7S0FBaUNnRjtLQUEzQkM7S0FHeUIsT0FBQSw0QkFHNUJDLGtCQU44QkY7SUFDaEMsV0E5T0UxRyxhQTZPRzJHO0dBSUo7WUFFQ0M7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQS9IOUJoSyxnQkEwSEc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztPQUduQjtRQUZaN0o7UUFBSmI7UUFBSlY7UUFFb0IsT0EraEJoRHVZLHFCQS9oQmlFejBCLEdBQUssT0FBTEEsRUFBTSxHQUZuQ3lkO1FBRVIsT0FqRTVCZ0osZ0JBK0RnQzdKO09BQzlCLFdBK1RGMkssbUJBaFU0QnJMOztPQUkxQjtRQURxQkU7UUFFTmlELE9BRk1qRDtRQUVWaUMsT0FGVWpDO1FBRWRTLE9BRmNUO1FBS2hCLE9Ba0JQb0wsc0JBckJpQm5JO1FBRVYsT0FzZVBvSSxrQkF4ZWFwSjtPQURYLGVBa2lCRjdCLGtCQWhpQnFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCNmM7O09BS1A7UUFEd0JFO1FBRVQwQyxPQUZTMUM7UUFFYndCLE9BRmF4QjtRQUVqQnlCLE9BRmlCekI7UUFLbkIsT0FZUHlLLHNCQWZpQi9IO1FBRVYsT0F1YVBpSSxrQkF6YWFuSjtPQURYLGVBNGhCRi9CLGtCQTFoQnFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCd2U7O09BS1A7UUFENEJHO1FBRWpCRCxPQUZpQkM7UUFFckJDLE9BRnFCRDtRQUdMLE9BNU56QjhCLGVBMk5hL0I7T0FEWCxlQTFORitCLGVBMk5TN0I7O1dBRXNCRSxpQkFDN0IsV0FyYUU5QixnQkFvYTJCOEI7O1dBRUZFLGlCQUMzQixXQXZKRm9HLGVBc0o2QnBHO21CQUVBRSxpQkFDM0IsV0E4TkZ3RCxlQS9ONkJ4RDs7R0FDbUI7WUFFaERzSTtJQUNtRSx1QkFDeEN0TCxlQUN6QixXQXZPRnVFLGVBc08yQnZFO0lBR3lCLElBRG5CVSxlQUFKUixpQkFDdUIsT0FoYmhEWSxnQkErYTZCSjtJQUMvQixXQWlTRjJLLG1CQWxTNkJuTDtHQUMwQztZQUV2RThKO0lBRUg7S0FJTTBCO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE9BaEw5QjFLLGdCQTBLR3dLO0tBS3FCLE9BS3hCdEcsaUJBWEd1RztJQUlMO1lBNmZFdEwsa0JBNWZzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU56QytuQjs7O1lBR0FIO0dBT0o7WUFFQ3JHO0lBQ0g7S0FHTXlHO0tBREFDO0tBREFDO0tBTzRCLE9BN0wvQjdLLGdCQXdMRzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O1dBQ3pDak0sZUFDeEIsV0F1ZUZNLFNBRkFtWSxnQkF0ZTBCelk7O1dBRUlFLGlCQUM1QixXQXRMRkQsZUFxTDhCQzs7T0FNeEI7UUFKK0JxQjtRQUFKYjtRQUFKQztRQUl2QixPQXRCTjBFLGlCQWtCcUM5RDtRQUcvQixPQTRkTmdYLFlBamRBcE0sa0JBZGlDekw7T0FDL0IsV0FtZUZKLGtCQWxlb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGRzZjOztPQU1tQixJQURqQndCLGlCQUFKdEIsaUJBQ3FCLE9BeEJoRHdFLGlCQXVCK0JsRDtPQUM3QixXQXhCRmtELGlCQXVCMkJ4RTs7T0FHMEIsSUFEakJ3QixpQkFBSkMsaUJBQ3FCLE9BTXJENkosaUJBUG9DOUo7T0FDbEMsV0ExQkZnRCxpQkF5QmdDL0M7O1dBRUxHLGlCQUN6QixXQTdkRTNCLGdCQTRkdUIyQjttQkFFR0MsaUJBQzVCLFdBd0tGOEQsZUF6SzhCOUQ7O0dBQ21CO1lBRWpEeUo7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU80QixPQTdOL0JuTCxnQkF3TkdpTDtJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztXQUN6Q3ZNLGVBQ3hCLFdBdWNGTSxTQUZBbVksZ0JBdGMwQnpZOztXQUVJRSxpQkFDNUIsV0E4QkZxSixlQS9COEJySjs7T0FNeEI7UUFKK0JxQjtRQUFKYjtRQUFKQztRQUl2QixPQXRCTndMLGlCQWtCcUM1SztRQUcvQixPQTRiTmdYLFlBamRBcE0sa0JBa0JpQ3pMO09BQy9CLFdBbWNGSixrQkFsY29CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7T0FPSDtRQUZJd0I7UUFBSnRCO1FBRUEsT0FBQSw0QkFRMUIyTCxzQkFWOEJySztPQUM1QixXQXhCRmdLLGlCQXVCMEJ0TDs7V0FHQ3lCLGlCQUN6QixXQTNERitDLGlCQTBEMkIvQzs7V0FFR0csaUJBQzVCLFdBeUlGK0QsZUExSThCL0Q7O1dBRUpDLGlCQUN4QixXQXViRnBDLFNBRkFtWSxnQkF0YjBCL1Y7O0dBQzRCO1lBRXREOEo7SUFDaUU7O09BR2hDLElBRkY5TCxlQUFKVixlQUVNLE9BOFJqQzZKLHNCQWhTK0JuSjtPQUM3QixXQWtiRkosU0FGQW1ZLGdCQWpiMkJ6WTs7T0FLTTtRQUZBbUM7UUFBSmpDO1FBRUksT0E4YWpDSSxTQUZBbVksZ0JBOWFpQ3RXO09BQy9CLFdBK2FGN0IsU0FGQW1ZLGdCQTlhNkJ2WTs7V0FHRVMsaUJBQzdCLFdBeVJGa0osc0JBMVIrQmxKOztPQUlBO1FBRkkwQjtRQUFKeEI7UUFFQSxPQXlhL0JQLFNBRkFtWSxnQkF6YW1DcFc7T0FDakMsV0EwYUYvQixrQkF6YW1CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk0rYzs7R0FFMkI7WUFFMUQwSSxlQUNDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQWdDQyxxQkFBMUJDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTBCRDtHQUk5QjtZQUVDRTtJQUVGOztXQUM0QjVNLGVBQ3hCLFdBeVdGNEosdUJBMVcwQjVKOztPQUlIO1FBRk9VO1FBQUpSO1FBRUgsT0FBQSw0QkFrUXZCMkosdUJBcFE4Qm5KO09BQzVCLFdBb1lGZSxjQXJZMEJ2Qjs7V0FHQ1MsaUJBQ3pCLFdBaU5GbUosb0JBbE4yQm5KOztXQUVHRSxpQkFDNUIsV0FzT0YyRSwyQkF2TzhCM0U7O1dBRUh5QixpQkFDekIsV0E4TEZ1Syx3QkEvTDJCdks7O1dBRUdHO09BQzVCLFdBQTRCLDRCQTRMOUJvSyx5QkE3TDhCcEs7O1dBRUZDLGlCQUMxQixXQTBLRnVILDZCQTNLNEJ2SDs7V0FFSEUsaUJBQ3ZCLFdBb0pGaUksc0JBckp5QmpJOztXQUVHRSxpQkFDMUIsV0E2SEZpSyx5QkE5SDRCaks7O1dBRUZFO09BQ3hCLFdBQXdCLDRCQWExQmdLLHdCQWQwQmhLOztXQUVLRTtPQUM3QjtlQUE2Qiw0QkFNL0JpSCw2QkFQK0JqSDs7V0FFREcsa0JBQzVCLFlBdFNGNkYsZUFxUzhCN0Y7O09BR29CLElBRGZsQixpQkFBSm1CLGtCQUNtQixPQTNTbERuQyxnQkEwU21DZ0I7T0FDakMsWUErRUZxRSxlQWhGK0JsRDs7R0FDc0M7WUFFckU2Ryw0QkFHQ3JtQjtJQUFLLE9BK0VOd21CLGlCQXpFQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQTJFTndtQixpQkF6RUFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBQ0g7S0FHTXFDO0tBREFDO0tBREFDO0tBTzRCLE9BL1QvQmhNLGdCQTBURzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDaUU7O09BR2hDO1FBRkQxTTtRQUFKVjtRQUVLLE1BQUEsNEJBNVlqQ3VFLGdCQTBZZ0M3RDtPQUM5QixXQXFXRkosU0FGQW1ZLGdCQXBXNEJ6WTs7V0FHRUUsaUJBQzVCLFdBT0ZtTixxQkFSOEJuTjs7T0FJYTtRQUZScUI7UUFBSlk7UUFBSnhCO1FBRWdCLE1BckIzQ2lLLGdCQW1CbUNySjtRQUVYLE1Balp4QmdELGVBK1krQnBDO09BQzdCLFdBa1VGQyxlQW5VMkJ6QjttQkFHR0UsaUJBQzVCLFdBNkNGMkYsZUE5QzhCM0Y7O0dBQ21CO1lBRWpEd007SUFFSDtLQUFpQ0M7S0FBM0JDO0tBR3lCLE1BQUEsNEJBRzVCQyx1QkFOOEJGO0lBQ2hDLFdBeFpFL0ksZUF1WkdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsTUFqVy9CeE0sZ0JBNFZHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUM4QjVOLGVBQzFCLFdBbERGNEssZ0JBaUQ0QjVLOztPQUcxQjtRQURzQkU7UUFFSDZELEtBRkc3RDtRQUVQcUIsS0FGT3JCO1FBRVhRLEtBRldSO1FBRWZTLE9BRmVUO1FBRzhCLE1BbGJ0RHFFLGVBaWJxQlI7UUFDVyxNQStDaEM4SixrQkFoRGlCdE07T0FEZixlQUNPWixNQXNRVDRLLGtCQXRRYTdLOztPQUdYO1FBRHlCRztRQUVOaU4sT0FGTWpOO1FBRVZzQyxPQUZVdEM7UUFFZHNCLE9BRmN0QjtRQUVsQnlCLE9BRmtCekI7UUFHMkIsTUF0YnREMEQsZUFxYnFCdUo7UUFDVyxNQTJDaENELGtCQTVDaUIxSztPQURmLGVBQ09iLE1BeU1Ua0osa0JBek1hcko7O09BR1g7UUFENkJNO1FBRWxCSixPQUZrQkk7UUFFdEJDLE9BRnNCRDtRQUdOLE1BMWJ6QjhCLGVBeWJhbEM7T0FEWCxlQXhiRmtDLGVBeWJTN0I7O1dBRXFCRSxpQkFDNUIsV0FuWEZzRyxlQWtYOEJ0RzttQkFFQUUsaUJBQzVCLFdBRUYwRCxlQUg4QjFEOztHQUNtQjtZQUVqRDBELGVBQ0MxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUFyWHpCd2xCLGFBb1hNNUk7SUFDUixXQTZTRUosa0JBN1NheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FrQjJCLE1BeFo5QmxOLGdCQTJZRzZNO0tBV3FCLE1BQUEsV0FsQnZCRCxJQUtFRztLQVlxQixNQXFSeEI1TixrQkFyUnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBYnpDcXFCO2lCQVNNcnFCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BbU8xQnlxQixjQXBPYzdOO0tBQ1IsV0F6ZE42RCxlQXdkVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENvTztJQU1MLFdBY0VQLGtCQXJCR1EsMEJBSUFKO0dBZUo7WUFFQ0oseUJBQ0YscUJBRWdEO1lBRTlDZCx5QkFFQ2pwQjtJQUFLLE9BRU51bUIsbUJBaE5BOEIsa0JBOE1Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU82QixNQWxiaEN2TixnQkE2YUdxTjtJQUVMLFdBQzJCLFdBUHhCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RDtJQUVIO0tBSU04RDtLQURBQztLQURBQztLQURBa0s7S0FTNkIsTUFqY2hDNVgsZ0JBMmJHd047S0FJMkIsTUFLOUJ0RCxtQkFYR3dEO0lBSUwsV0E2T0V2TyxTQUZBbVksZ0JBaFBHTSxpQkFFQW5LO0dBUUo7WUFFQ3ZELDBCQUMyRCxxQkFFbkI7WUFFeENwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVE0QixNQXJkL0IvTixnQkErY0c2TjtLQUtzQixNQWlOekJ1SixZQWpkQXBNLGtCQTBQRzhDO0lBSUw7WUF3TkUzTyxrQkF2TnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjFDb3JCOzs7WUFHQUg7R0FPSjtZQUVDbEM7SUFFSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsTUFwZTlCdk8sZ0JBOGRHcU87S0FLcUIsTUEvUXhCckQsaUJBeVFHc0Q7SUFJTCxXQXlNRW5QLGtCQXhNc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekM0ckIscUJBR0FIO0dBT0o7WUFFQ3pGO0lBRUg7S0FLTWdHO0tBREFFO0tBREFDO0tBREFDO0tBREFDO0tBaUI4QixNQTVmakNoUCxnQkErZUcyTztLQVkyQixNQTZEOUJ0RSxrQkExRUd3RTtLQVlEO09BQUE7MEJBS0Z4Syw0QkFsQkd5SztpQkFRTW5zQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQStIMUJ5cUIsY0FoSWM3TjtLQUNSLFdBN2pCTjZELGVBNGpCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBUkNrUTtJQUtMLFdBeUxFNVAsU0FGQW1ZLGdCQTdMR3RJO0dBa0JKO1lBRUMzSztJQUVIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVM0QixNQTNnQi9CcFAsZ0JBcWdCR2lQO0tBSXNCLE1BS3pCSSwrQkFYR0Y7SUFJTDtZQW1LRWhRLGtCQWxLdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUN5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRTBDO0tBR04sSUFGTjlQLGVBQUpWLGVBRVUsTUFrSnBDdVksWUEzdUJBaFUsZ0JBdWxCOEI3RDtLQUM1QixXQXNFRitQLDJCQXZFMEJ6UTs7UUFHQ0U7SUFDekIsV0FxSkZJLFNBRkFtWSxnQkFwSjJCdlk7R0FDNEI7WUFFdkQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTBCNkIsTUFwakJoQzlQLGdCQWdpQkd3UDtLQW1CMkIsTUFrSDlCNEgsWUEzdUJBaFUsZ0JBcW1CR3FNO0tBbUIwQixNQU03QnBGLGtCQTFCR3FGO0tBbUJ1QixNQVkxQkssZUFoQ0dKO2lCQWdCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1Bcm5CMUJ5Z0IsZUFvbkJjN0Q7S0FDUixXQXJuQk42RCxlQW9uQlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FoQkN3UDtpQkFXTWp0QjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQTZFMUJ5cUIsY0E5RWM3TjtLQUNSLFdBL21CTjZELGVBOG1CVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBWENnUjtJQVFMO1lBdUlFMVEsa0JBdEl3Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVYzQ210Qjs7Ozs7OztZQU9BUDtHQXFCSjtZQUVDbEYseUJBQ0YscUJBRTRDO1lBRTFDMEY7SUFDRjs7U0FFK0JsUjtLQUMzQixXQUEyQiw0QkFLN0JtUiw4QkFONkJuUjs7UUFFREU7SUFDMUIsV0FBMEIsNEJBNkI1QmtSLHdCQTlCNEJsUjtHQUV3QjtZQUVwRGlSO0lBR0g7S0FLTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUU7S0FXMkIsTUFybEI5QnZRLGdCQThrQkdrUTtLQUtvQixNQWtGdkJrSCxZQTN1QkFoVSxnQkFrcEJHZ047S0FNcUIsTUFNeEJkLDJCQWJHZTtJQUtMO1lBMEZFbFIsa0JBekZzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRUY7U0FDNkJ6UTtLQUN6QixXQUF5Qiw0QkFscUIzQnVFLGdCQWlxQjJCdkU7O1FBRUNFO0lBQzFCLFdBQTBCLDRCQUU1QmtSLHdCQUg0QmxSO0dBQ29DO1lBRWhFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVcyQixNQTltQjlCNVEsZ0JBdW1CR3dRO0tBS3FCLE1BbHJCeEJwTixlQTJxQkdzTjtLQU13QixNQU0zQnRHLGtCQWJHdUc7SUFLTDtZQWlFRXhSLGtCQWhFc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FQekNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ0YscUJBRThDO1lBRTVDZ0Q7SUFBaUUsc0JBQ3RDLGlCQUNJLGtCQUNKOztHQUFxQjtZQUVoRDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVTRCLE1BeG9CL0JqUixnQkFpb0JHOFE7aUJBTW9DbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUHRCb3VCO0tBTXNCLE1BNXNCekIzTixlQXFzQkc0TjtJQUtMO1lBc0NFN1Isa0JBckN1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAxQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUM1UDtJQUFvRSw4QkFDM0M7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBNkI7WUFFcEQ2SCx3QkFDRixxQkFFd0M7WUFFdENsRCxXQUE0RC9nQixHQUFLLE9BQUxBLEVBQU07WUFFbEUyZCxxQkFBaUUscUJBRWpCO1lBRWhESDtJQUFtRTs7V0FDaENaLGVBQUpWO09BQzdCLFdBRDZCQSxJQVEvQnVZLHFCQVBvRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7V0FFUlIsaUJBQU0sV0FBTkE7O1dBQ09pQyxpQkFBSnhCO09BQzVCLFdBRDRCQSxNQUs5QjRYLHFCQUptRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkJxZTs7V0FFREUsaUJBQUp4QjtPQUMzQixXQUQyQkEsTUFHN0IwWCxxQkFGa0R6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCdWU7O0dBQzRCO1lBRTdEa1csWUFDQ3hLO0lBQUosWUFBMkI7UUFBWS9OO0lBQU0sV0FBSyxXQUE5QytOLElBQW1DL047R0FBa0I7WUFFdER5WSxlQUFrRDMwQixHQUFLLE9BQUxBLEVBQU07WUFFeER3YyxTQUVDeU47SUFBSixJQUE0QjFwQixnQkFBbkJZO0lBQ1IsV0FBb0IsV0FEakI4b0IsSUFBSzlvQixNQUFtQlo7R0FDc0M7WUFFL0Rta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNO1lBQ3JEMDBCLGlCQUEyQixxQkFBc0M7WUFFN0R6WTtJQUM2RCx1QkFDekNDLGVBQU0sV0FycUI5QkMsZUFxcUJ3QkQ7UUFDS1UsZUFBSlI7SUFDdkIsV0FEdUJBLE1BR3pCRyx3QkFINkJLO0dBQzJCO1lBRXhETDtJQUVGLDhCQUM4Qjs7O1dBQ0RMLGVBQU0sV0FBTkE7O1dBQ0VVLGVBQUpSO09BQ3ZCLFdBRHVCQSxNQXhCekJxWSxxQkF5QjhDejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QjRjOztXQUVIQyxpQkFBTSxXQUFOQTttQkFDREUsaUJBQU0sV0FoQi9CMlgsVUFnQnlCM1g7O0dBQTJDO1lBRXBFc1gsV0FBV3IwQixHQUFJLE9BQUEsNEJBdDFCZnllLFdBczFCV3plLEdBQXdCOzs7O09BcjlCbkNxMUI7T0FFQXRaO09BSUlpQjtPQVlKTztPQXdHQThDO09BS0E1QjtPQVFBZjtPQWVBNEM7T0FZQTBEO09BMkNBdkQ7T0FZQWdFO09BcUNBSTtPQVdBRDtPQVVBdkg7T0FHQStIO09BS0FJO09BT0FySjtPQUdBdUo7T0FRQUc7T0FtQ0FTO09BSUFGO09BSUFLO09BWUFJO09BNkJBN0U7T0FRQWtGO09BWUFJO09BNEJBRTtPQU9BdEI7T0FlQTNFO09BWUE0RztPQW9CQUU7T0FZQUk7T0FxQkFDO09BY0FqRDtPQUdBa0Q7T0FRQUc7T0ErQkF6QztPQUtBNkM7T0FJQXBDO09BWUF3QztPQWFBQztPQVFBRztPQWFBSTtPQXNCQXBIO09BS0E4RDtPQTRCQXVEO09BS0FkO09BSUExQztPQWlCQVE7T0FlQVE7T0FLQXBCO09BZ0JBNEM7T0FlQS9DO09BdUJBdEU7T0FlQWdMO09BU0EzRztPQWlDQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FLQTNFO09BaUJBeEg7T0FLQTJGO09BS0FsRDtPQUVBcEQ7T0FJQUg7T0FTQWlYO09BR0FFO09BRUFuWTtPQUtBa0k7T0FDQWdRO09BRUl6WTtPQU1KTTtPQVVBOFg7T0EvekJBL1Q7T0FoSkl0RDtPQXVNSnlEOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O1lDN01JekQ7SUFDUDtLQUdNQztLQURBRTtLQURBQztLQU80QixPQWtRL0JDLGdCQXZRR0o7SUFFTCxXQU1FTSxxQkFWR0gsWUFDQUQ7R0FPSjtZQUVDSTtJQUNpRSw4QkFvRzlCOzs7V0FuR1RyQixlQUN4QixXQXM2QkZNLFNBRkFtWSxnQkFyNkIwQnpZOztXQUVHRSxpQkFDM0IsV0FzNUJGb0IsY0F2NUI2QnBCOztPQUkwQjtRQUZ0QnFCO1FBQUpiO1FBQUpDO1FBRThCLE9BcEJuREcsZ0JBa0I2QlM7UUFFVixPQUFBLDRCQTRHdkJDLG9CQTlHNkJkO09BQzNCLFdBZzVCRmUsY0FqNUJ5QmQ7O1dBR0lFO09BQzNCLFdBQTJCLDRCQWtHN0IwQixXQW5HNkIxQjs7T0FPdkI7UUFMK0JrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLbkIsT0E1QkZ4QixnQkF1QmlDaUQ7UUFJL0IsT0FvSE5LLGFBeEhpQ2pCO1FBRzNCLE9BczVCTm9WLFlBaDdCSXpYLGlCQXVCeUJxQjtPQUMzQixXQSszQkZDLGVBaDRCeUJFOztPQVNuQjtRQUh5QkQ7UUFBSkk7O21CQUlkM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0FuQzFCZ2QsZ0JBa0NjSjtXQUNSLFdBbzNCVjBCLGVBcjNCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHlCcUM7T0FDN0IsV0E5QkV2QixnQkE2QnVCMkI7O09BU29CO1FBRGhCRDtRQUFKRTtRQUNvQixPQUFBLDRCQWtGL0NILFdBbkYrQkM7T0FDN0IsV0F0Q0UxQixnQkFxQ3VCNEI7O09BR2tCO1FBRGhCQztRQUFKQztRQUNvQixPQUFBLDRCQWdGN0NMLFdBakY2Qkk7T0FDM0IsV0F4Q0U3QixnQkF1Q3FCOEI7O1dBRUNFO09BQ3hCLFdBQXdCLDRCQTFDdEJoQyxpQkF5Q3NCZ0M7O09BSU87UUFGRUQ7UUFBSkc7UUFFRSxPQW00QmpDdVYsWUFoN0JJelgsaUJBMkMrQitCO09BQ2pDLFdBeTRCRnZDLFNBRkFtWSxnQkF4NEIrQnpWOztXQUdFRCxpQkFBSkc7T0FDM0IsWUFEMkJBLE1BazRCN0JxVixZQWg3Qkl6WCxpQkE4QzZCaUM7O09BUzNCO1FBUDBCRTtRQUFKSTtRQU90QixPQXkzQk5rVixZQWg3Qkl6WCxpQkFnRDRCbUM7O21CQUduQm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BckRuQ2dkLGdCQW9EY0o7V0FDUixXQWc0QlZKLFNBRkFtWSxnQkEvM0Jjelk7VUFDNEM7T0FKeEQsWUFDSSxrQ0FGc0JxRDs7T0FTbUI7UUFEaEJEO1FBQUpFO1FBQ29CLE9BNDNCL0NoRCxTQUZBbVksZ0JBMzNCK0JyVjtPQUM3QixZQXpERXRDLGdCQXdEdUJ3Qzs7T0FJMEI7UUFGZkM7UUFBSkM7UUFBSkM7UUFFdUIsT0E1RGpEM0MsZ0JBMERrQ3lDO1FBRWIsT0F5M0J6QmpELFNBRkFtWSxnQkF6M0JrQ2pWO09BQ2hDLFlBM0RFMUMsZ0JBMEQwQjJDOztXQUdKRTtPQUN4QixZQUF3Qiw0QkE5RHRCN0MsaUJBNkRzQjZDOztPQUltQjtRQUZMSztRQUFKTjtRQUFKRztRQUVhLE9BKzJCN0MwVSxZQWg3Qkl6WCxpQkErRG9Da0Q7UUFFZixPQWpFckJsRCxnQkErRGdDNEM7T0FDbEMsWUFoRUU1QyxnQkErRDRCK0M7O09BSWtCLElBRGhCRCxrQkFBSk0sa0JBQ29CLE9BbkU5Q3BELGdCQWtFOEI4QztPQUNoQyxZQW5FRTlDLGdCQWtFMEJvRDs7T0FHaUIsSUFEaEJELGtCQUFKSyxrQkFDb0IsT0FyRTNDeEQsZ0JBb0UyQm1EO09BQzdCLFlBckVFbkQsZ0JBb0V1QndEOztPQVFyQjtRQU5tQ1I7UUFBSmdLO1FBQUp0SjtRQUFKSDtRQUFKSztRQU1uQixPQTVFRjVELGdCQXNFcUNnRDtRQUtuQyxPQXdDTkssb0JBN0NxQzJKO1FBSS9CLE9BMUVGaE4sZ0JBc0U2QjBEO1FBRzNCLE9BekVGMUQsZ0JBc0V5QnVEO09BQzNCLFlBd0VGRCxhQXpFeUJNOztPQVEyQixJQURoQkQsa0JBQUpHLGtCQUNvQixPQXVIcERMLGVBeEhvQ0U7T0FDbEMsWUE5RUUzRCxnQkE2RTRCOEQ7O09BSXdCO1FBRnBCTTtRQUFKUDtRQUFKRztRQUU0QixPQW9IeERQLGVBdEhvQ1c7UUFFWCxPQSsxQnpCcVQsWUEzdUJBaFUsZ0JBdEhnQ0k7T0FDOUIsWUFoRkU3RCxnQkErRXdCZ0U7O1dBR0VDLGtCQUFKQztPQUN4QixZQW5GRWxFLGdCQWtGc0JrRSxRQUFJRDs7V0FFTkUsa0JBQ3RCLFlBZzJCRjNFLFNBRkFtWSxnQkEvMUJ3QnhUOztPQUdrQyxJQUR0QkUsa0JBQUpDLGtCQUMwQixPQXZGdER0RSxnQkFzRmdDcUU7T0FDbEMsWUE4MUJGN0Usa0JBOTFCOEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEcEJzaEI7OztRQUVIRzs7bUJBR2pCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BN0ZoQ2dkLGdCQTRGYUo7V0FDUixXQXcxQlRKLGtCQXgxQndCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7VUFDMEM7T0FKckQsWUFDRSxrQ0FGeUJ1Rjs7T0FTdUI7UUFGYndQO1FBQUp6UDtRQUFKRztRQUVxQixPQWpHaEQzRSxnQkErRm1DaVU7UUFFUixPQThWL0IxUCxpQkFoV21DQztPQUNqQyxZQXExQkZoRixrQkFwMUJtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNMmhCOztXQUdKQyxrQkFDekIsWUFuR0U1RSxnQkFrR3VCNEU7O1dBRUZFLGtCQUFNLFlBcEczQjlFLGdCQW9HcUI4RTs7T0FFcUI7UUFEaEJEO1FBQUpFO1FBQ29CLE9BMDBCOUMwUyxZQTN1QkFoVSxnQkFoRzhCb0I7T0FDNUIsWUF0R0U3RSxnQkFxR3NCK0U7O1dBRUNHLGtCQUN6QixZQWlSRkYscUJBbFIyQkU7O1dBRU1ELGtCQUFKRTtPQUMzQixZQUQyQkEsT0F6R3pCbkYsZ0JBeUc2QmlGOztXQUVSSSxrQkFBTSxZQW9WL0JkLGlCQXBWeUJjOztPQUcrQjtRQUZ0QnlTO1FBQUoxUztRQUFKRztRQUU4QixPQTlHcER2RixnQkE0RzhCOFg7UUFFTixPQXUwQjVCdFksU0FGQW1ZLGdCQXYwQjhCdlM7T0FDNUIsWUFrbUJGbUYsbUJBbm1CMEJoRjttQkFHSUUsa0JBQzVCLFlBcWhCRkMsZUF0aEI4QkQ7O0dBRWtDO1lBRWhFcEMsMkJBQzZELHFCQUVuQjtZQUUxQzVCO0lBQ0g7S0FBc0RuRTtLQUF6QkM7S0FBdkJDO0tBSW1CLE9BN0hsQndDLGdCQXlIK0MxQztLQUczQixPQW96QnhCbWEsWUFoN0JJelgsaUJBeUhzQnpDO0lBQzVCLFdBcUJFK0YsYUF0Qkc5RjtHQUtKO1lBRUNrRDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVEyQixPQWdJOUJyRyxnQkF0SUdrRztLQUtxQixPQTFJcEJ2RyxnQkFvSUR5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FHTXNEO0tBREFFO0tBREFDO0tBTzRCLE9BbUgvQjFHLGdCQXhIR3VHO0lBRUwsV0FNRUksa0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDRSw4QkFDeUI7OztXQUNIOUgsZUFDdEIsV0FzeEJGTSxrQkF0eEJ1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQURyQmtjOztPQUdvQjtRQURiVTtRQUFKUjtRQUNpQixPQW94QjVDSSxrQkFweEIwRHhjLEdBQUssT0FBTEEsRUFBTSxHQURqQzRjO09BQzdCLFdBbEJGMEQsYUFpQjJCbEU7O1dBRUVTLGlCQUMzQixXQW93QkZXLGNBcndCNkJYOztPQUdtQixJQURkd0IsaUJBQUp0QixpQkFDa0IsT0Frd0JoRFMsY0Fud0JrQ2E7T0FDaEMsV0Frd0JGYixjQW53QjhCVDs7V0FFSnlCO09BQ3hCLFdBQXdCLDRCQXhCMUI4QixjQXVCMEI5Qjs7T0FJTztRQUZFRDtRQUFKSTtRQUVFLE9Bc3dCakM4VixZQWp5QkFuVSxjQXlCbUMvQjtPQUNqQyxXQTR3QkYvQixTQUZBbVksZ0JBM3dCK0JoVzs7V0FHRUQsaUJBQUpFO09BQzNCLFdBRDJCQSxNQXF3QjdCNlYsWUFqeUJBblUsY0E0QmlDNUI7O09BUzNCO1FBUDBCRztRQUFKQztRQU90QixPQXd1Qk5tRixpQkEvdUJnQ3BGOzttQkFHbkI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQW5DdkNzZ0IsYUFrQ2tCMUQ7V0FDUixXQW13QlZKLFNBRkFtWSxnQkFsd0Jjelk7VUFDeUM7T0FKckQsV0FDSSxrQ0FGc0I0Qzs7V0FRRkU7T0FDeEIsV0FBd0IsNEJBdkMxQnNCLGNBc0MwQnRCOztPQUdlLElBRGJELGlCQUFKRyxpQkFDaUIsT0F6Q3pDb0IsYUF3QzRCdkI7T0FDMUIsV0F6Q0Z1QixhQXdDd0JwQjs7T0FHeUIsSUFEYkQsaUJBQUpHLGlCQUNpQixPQVdqRHFCLGVBWm9DeEI7T0FDbEMsWUEzQ0ZxQixhQTBDZ0NsQjs7V0FFUEcsa0JBQ3ZCLFlBeXZCRi9DLFNBRkFtWSxnQkF4dkJ5QnBWOztXQUVBQyxrQkFBTSxZQTlDL0JjLGFBOEN5QmQ7O1dBQ0VHO09BQ3pCLFlBc3ZCRm5ELGtCQXR2QjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCMmY7O1dBRUdFLGtCQUM1QixZQWxERlMsYUFpRDhCVDttQkFFQUUsa0JBQzVCLFlBa2NGMkMsZUFuYzhCM0M7O0dBQ21CO1lBRWpEVTtJQUNIO0tBR000RDtLQURBRTtLQURBQztLQU80QixPQTZEL0JuSCxnQkFsRUdnSDtJQUVMLFdBTUVJLG9CQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUdtQjtRQUZSdUI7UUFBSmI7UUFBSlI7UUFFZ0IsT0FsQjNDcUUsZUFnQm1DaEQ7UUFFWCxPQWxCeEJnRCxlQWdCK0I3RDtPQUM3QixXQWlzQkYwQixlQWxzQjJCbEM7O1dBR0RTO09BQ3hCLFdBQXdCLDRCQXBCMUI0RCxnQkFtQjBCNUQ7O09BSU87UUFGRHdCO1FBQUp0QjtRQUVLLE9BQUEsNEJBdkJqQzBELGdCQXFCZ0NwQztPQUM5QixXQTB0QkY3QixTQUZBbVksZ0JBenRCNEI1WDs7T0FVdEI7UUFQMEJ3QjtRQUFKQztRQU90QixPQXdyQk55RixpQkEvckJnQzFGOzttQkFHbkJ2ZTtXQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXNCLE9BN0JuQ3lnQixlQTRCc0JoRDtXQUNaLFdBREl2QixJQTBDZG1CLGdCQTFDa0JUO1VBQ21DO09BSm5ELFdBQ0ksa0NBRnNCNEI7O09BVUs7UUFGRkU7UUFBSkM7UUFFTSxPQUFBLDRCQWxDakM4QixnQkFnQytCL0I7T0FDN0IsV0Erc0JGbEMsU0FGQW1ZLGdCQTlzQjJCaFc7O1dBR0lFLGlCQUFKRDtPQUN6QixXQXBDRjZCLGVBbUMyQjdCLE9BQUlDOztPQU16QjtRQUorQlE7UUFBSk47UUFBSkQ7UUFJdkI7VUFrc0JOMlY7cUJBbHNCdUJ6MEIsR0FBSyxPQUFBLDRCQW1yQjVCK2dCLFlBbnJCdUIvZ0IsR0FBMEI7WUFKWnFmO1FBRy9CLE9BK3FCTjRFLGlCQWxyQmlDbEY7T0FDL0I7ZUFDSSw0QkFxQk42RixnQkF2QjZCOUY7Ozs7T0FNdUI7UUFEdEJHO1FBQUpEO1FBQzBCLE9BM0NwRHlCLGVBMEM4QnhCO3dCQUNVamYsR0FBSyxPQUFMQSxFQUFNO09BQTVDLFdBQXdCLGtDQURBZ2Y7O1dBRUVFLGlCQUMxQixXQUlGMkYsa0JBTDRCM0Y7bUJBRUVFLGlCQUM1QixZQWlaRnNELGVBbFo4QnREOztHQUNtQjtZQUVqRHlGLGtCQUVDN2tCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjO2tCQUlNQTtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQXpEakN5Z0IsZUF3RFk3RDtLQUNSLFdBdXJCSkosU0FGQW1ZLGdCQXRyQlF6WTtJQUMyQztJQUhuRCxXQUFBLGtDQUZNVTtJQUNSLFdBMnJCRUosU0FGQW1ZLGdCQTFyQkV6WTtHQU1JO1lBRU4wSTtJQUNGO0tBTVE7TUFMMkIzRTtNQUFKeEM7TUFBSmI7TUFBSlY7TUFLZixPQUFBLDRCQW5FTnVFLGdCQThEaUNSO01BSTNCLE9Bb3JCTnlVLFVBeHJCNkJqWDtLQUMzQixXQURtQnZCLElBUXJCbUIsZ0JBUnlCVDs7UUFNRFI7SUFBTSxXQXBFOUJxRSxlQW9Fd0JyRTtHQUErQztZQUV2RWlCLGdCQUNDcmQ7SUFBSyxPQUFBLDRCQUVOb2xCLGdCQUZDcGxCO0dBQThCO1lBRS9Cb2xCLGVBQ0NwbEI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0FFekJ3bEIsYUFITTVJO0lBQ1IsV0FvcUJFSixrQkFwcUJheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSjtJQUFnRTs7V0FDNUN0SixlQUFNLFdBTTFCQyxlQU5vQkQ7O1dBQ0FFLGlCQUFNLFdBeVAxQnFKLGVBelBvQnJKOztXQUNBUyxpQkFBTSxXQWpGMUI0RCxlQWlGb0I1RDs7T0FFa0I7UUFEYkQ7UUFBSkc7UUFDaUIsT0F3cEJ0QzBYLFlBaDdCSXpYLGlCQXVScUJKO09BQ3ZCLFdBeklGMEQsYUF3SXFCdkQ7O0dBQ2dEO1lBRXJFWixlQUNDbmM7SUFBSyxPQUFBLDRCQUVOMGxCLHFCQUZDMWxCO0dBQW1DO1lBRXBDMGxCO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O09BRWdELElBRGhCakosZUFBSlYsZUFDb0IsT0E5QjlDbUIsZ0JBNkI4QlQ7T0FDNUIsV0F6U0VJLGdCQXdTc0JkOztPQUdtQjtRQURkbUM7UUFBSmpDO1FBQ2tCLE9BQUEsNEJBM0s3Q3NCLG9CQTBLK0JXO09BQzdCLFdBd25CRlYsY0F6bkIyQnZCOztXQUVHUyxpQkFDNUIsV0F5bEJGaUosdUJBMWxCOEJqSjs7T0FJUDtRQUZPMEI7UUFBSnhCO1FBRUgsT0FBQSw0QkFrZnZCZ0osdUJBcGY4QnhIO09BQzVCLFdBb25CRlosY0FybkIwQlo7O1dBR0N5QixpQkFDekIsV0FpY0Z3SCxvQkFsYzJCeEg7O1dBRUdHLGlCQUM1QixXQXNkRitDLDJCQXZkOEIvQzs7V0FFSEMsaUJBQ3pCLFdBMEhGc0gsb0JBM0gyQnRIOztXQUVHRTtPQUM1QixXQUE0Qiw0QkF3SDlCb0gscUJBekg4QnBIOztXQUVGRSxpQkFDMUIsV0EwWkZtSCw2QkEzWjRCbkg7O1dBRUhFLGlCQUN2QixXQW9ZRjZILHNCQXJZeUI3SDs7V0FFQ0U7T0FDeEIsWUFBd0IsNEJBYzFCZ0gsd0JBZjBCaEg7O1dBRUtHO09BQzdCO2VBQTZCLDRCQXdQL0I4Ryw2QkF6UCtCOUc7O1dBRUhDLGtCQUMxQixZQU1GOEcseUJBUDRCOUc7O1dBRUVHLGtCQUM1QixZQXRERnlGLGVBcUQ4QnpGOztPQUdvQixJQURmakIsaUJBQUptQixrQkFDbUIsT0EzRGxEeEMsZ0JBMERtQ3FCO09BQ2pDLFlBK1RGZ0UsZUFoVStCN0M7O0dBQ3NDO1lBRXJFeUcseUJBRUN0bUI7SUFBSyxPQXFXTnVtQixtQkFoUEFoRixrQkFySEN2aEI7R0FBMEM7WUFFM0NvbUIsdUJBRUNwbUI7SUFBSyxPQTRUTndtQixpQkExVEFDLGlCQUZDem1CO0dBQXVDO1lBRXhDeW1CO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPMkIsT0E5RTlCdkosZ0JBeUVHcUo7SUFFTCxXQU1FRyxxQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUNpRTs7T0FHaEM7UUFGRmpLO1FBQUpWO1FBRU0sT0FBQSw0QkEzSmpDdUUsZ0JBeUorQjdEO09BQzdCLFdBc2xCRkosU0FGQW1ZLGdCQXJsQjJCelk7O1dBR0VFLGlCQUMzQixXQXVCRjRGLHFCQXhCNkI1Rjs7T0FPdkI7UUFMOEI2RDtRQUFKeEM7UUFBSlk7UUFBSnhCO1FBS2xCLE9BeEJONEosZ0JBbUJvQ3hHO1FBSTlCLE9BeE5OSyxhQW9OZ0M3QztRQUcxQixPQTBrQk5nWCxZQWg3Qkl6WCxpQkFtV3dCcUI7T0FDMUIsV0FtakJGQyxlQXBqQndCekI7O09BU2xCO1FBSHdCMEI7UUFBSnhCOzttQkFJYi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BL1cxQmdkLGdCQThXY0o7V0FDUixXQXdpQlYwQixlQXppQmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh3QnFDO09BQzVCLFdBMUJGa0ksZ0JBeUIwQjFKOztPQVU2QjtRQUZ2QnNDO1FBQUpYO1FBQUpGO1FBRStCLE9BbkN2RGlJLGdCQWlDZ0NwSDtRQUVULE9BQUEsNEJBblB2QjNCLG9CQWlQNEJnQjtPQUMxQixXQWlqQkZmLGNBbGpCd0JhOztPQUkyQixJQURoQkssaUJBQUpGLGlCQUNvQixPQTRNbkRtSSxnQkE3TW1Dakk7T0FDakMsV0FyQ0Y0SCxnQkFvQytCOUg7bUJBRUZDLGlCQUMzQixXQThRRjhELGVBL1E2QjlEOztHQUNtQjtZQUVoRG9EO0lBRUg7S0FBaUNnRjtLQUEzQkM7S0FHeUIsT0FBQSw0QkFHNUJDLGtCQU44QkY7SUFDaEMsV0E3T0UxRyxhQTRPRzJHO0dBSUo7WUFFQ0M7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQS9IOUJoSyxnQkEwSEc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztPQUduQjtRQUZaN0o7UUFBSmI7UUFBSlY7UUFFb0IsT0EraEJoRHVZLHFCQS9oQmlFejBCLEdBQUssT0FBTEEsRUFBTSxHQUZuQ3lkO1FBRVIsT0FqRTVCZ0osZ0JBK0RnQzdKO09BQzlCLFdBK1RGMkssbUJBaFU0QnJMOztPQUkxQjtRQURxQkU7UUFFTmlELE9BRk1qRDtRQUVWaUMsT0FGVWpDO1FBRWRTLE9BRmNUO1FBS2hCLE9Ba0JQb0wsc0JBckJpQm5JO1FBRVYsT0FzZVBvSSxrQkF4ZWFwSjtPQURYLGVBa2lCRjdCLGtCQWhpQnFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCNmM7O09BS1A7UUFEd0JFO1FBRVQwQyxPQUZTMUM7UUFFYndCLE9BRmF4QjtRQUVqQnlCLE9BRmlCekI7UUFLbkIsT0FZUHlLLHNCQWZpQi9IO1FBRVYsT0F1YVBpSSxrQkF6YWFuSjtPQURYLGVBNGhCRi9CLGtCQTFoQnFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCd2U7O09BS1A7UUFENEJHO1FBRWpCRCxPQUZpQkM7UUFFckJDLE9BRnFCRDtRQUdMLE9BNU56QjhCLGVBMk5hL0I7T0FEWCxlQTFORitCLGVBMk5TN0I7O1dBRXNCRSxpQkFDN0IsV0FuYUU5QixnQkFrYTJCOEI7O1dBRUZFLGlCQUMzQixXQXZKRm9HLGVBc0o2QnBHO21CQUVBRSxpQkFDM0IsV0E4TkZ3RCxlQS9ONkJ4RDs7R0FDbUI7WUFFaERzSTtJQUNtRSx1QkFDeEN0TCxlQUN6QixXQXZPRnVFLGVBc08yQnZFO0lBR3lCLElBRG5CVSxlQUFKUixpQkFDdUIsT0E5YWhEWSxnQkE2YTZCSjtJQUMvQixXQWlTRjJLLG1CQWxTNkJuTDtHQUMwQztZQUV2RThKO0lBRUg7S0FJTTBCO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE9BaEw5QjFLLGdCQTBLR3dLO0tBS3FCLE9BS3hCdEcsaUJBWEd1RztJQUlMO1lBNmZFdEwsa0JBNWZzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQU56QytuQjs7O1lBR0FIO0dBT0o7WUFFQ3JHO0lBQ0g7S0FHTXlHO0tBREFDO0tBREFDO0tBTzRCLE9BN0wvQjdLLGdCQXdMRzJLO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O1dBQ3pDak0sZUFDeEIsV0F1ZUZNLFNBRkFtWSxnQkF0ZTBCelk7O1dBRUlFLGlCQUM1QixXQXRMRkQsZUFxTDhCQzs7T0FNeEI7UUFKK0JxQjtRQUFKYjtRQUFKQztRQUl2QixPQXRCTjBFLGlCQWtCcUM5RDtRQUcvQixPQTRkTmdYLFlBamRBcE0sa0JBZGlDekw7T0FDL0IsV0FtZUZKLGtCQWxlb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGRzZjOztPQU1tQixJQURqQndCLGlCQUFKdEIsaUJBQ3FCLE9BeEJoRHdFLGlCQXVCK0JsRDtPQUM3QixXQXhCRmtELGlCQXVCMkJ4RTs7T0FHMEIsSUFEakJ3QixpQkFBSkMsaUJBQ3FCLE9BTXJENkosaUJBUG9DOUo7T0FDbEMsV0ExQkZnRCxpQkF5QmdDL0M7O1dBRUxHLGlCQUN6QixXQTNkRTNCLGdCQTBkdUIyQjttQkFFR0MsaUJBQzVCLFdBd0tGOEQsZUF6SzhCOUQ7O0dBQ21CO1lBRWpEeUo7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU80QixPQTdOL0JuTCxnQkF3TkdpTDtJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztXQUN6Q3ZNLGVBQ3hCLFdBdWNGTSxTQUZBbVksZ0JBdGMwQnpZOztXQUVJRSxpQkFDNUIsV0E4QkZxSixlQS9COEJySjs7T0FNeEI7UUFKK0JxQjtRQUFKYjtRQUFKQztRQUl2QixPQXRCTndMLGlCQWtCcUM1SztRQUcvQixPQTRiTmdYLFlBamRBcE0sa0JBa0JpQ3pMO09BQy9CLFdBbWNGSixrQkFsY29CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7T0FPSDtRQUZJd0I7UUFBSnRCO1FBRUEsT0FBQSw0QkFRMUIyTCxzQkFWOEJySztPQUM1QixXQXhCRmdLLGlCQXVCMEJ0TDs7V0FHQ3lCLGlCQUN6QixXQTNERitDLGlCQTBEMkIvQzs7V0FFR0csaUJBQzVCLFdBeUlGK0QsZUExSThCL0Q7O1dBRUpDLGlCQUN4QixXQXViRnBDLFNBRkFtWSxnQkF0YjBCL1Y7O0dBQzRCO1lBRXREOEo7SUFDaUU7O09BR2hDLElBRkY5TCxlQUFKVixlQUVNLE9BOFJqQzZKLHNCQWhTK0JuSjtPQUM3QixXQWtiRkosU0FGQW1ZLGdCQWpiMkJ6WTs7T0FLTTtRQUZBbUM7UUFBSmpDO1FBRUksT0E4YWpDSSxTQUZBbVksZ0JBOWFpQ3RXO09BQy9CLFdBK2FGN0IsU0FGQW1ZLGdCQTlhNkJ2WTs7V0FHRVMsaUJBQzdCLFdBeVJGa0osc0JBMVIrQmxKOztPQUlBO1FBRkkwQjtRQUFKeEI7UUFFQSxPQXlhL0JQLFNBRkFtWSxnQkF6YW1DcFc7T0FDakMsV0EwYUYvQixrQkF6YW1CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk0rYzs7R0FFMkI7WUFFMUQwSSxlQUNDemxCO0lBQUssT0FBQSw0QkFFTjJvQixxQkFGQzNvQjtHQUFtQztZQUVwQzJvQjtJQUVILElBQWdDQyxxQkFBMUJDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTBCRDtHQUk5QjtZQUVDRTtJQUVGOztXQUM0QjVNLGVBQ3hCLFdBeVdGNEosdUJBMVcwQjVKOztPQUlIO1FBRk9VO1FBQUpSO1FBRUgsT0FBQSw0QkFrUXZCMkosdUJBcFE4Qm5KO09BQzVCLFdBb1lGZSxjQXJZMEJ2Qjs7V0FHQ1MsaUJBQ3pCLFdBaU5GbUosb0JBbE4yQm5KOztXQUVHRSxpQkFDNUIsV0FzT0YyRSwyQkF2TzhCM0U7O1dBRUh5QixpQkFDekIsV0E4TEZ1Syx3QkEvTDJCdks7O1dBRUdHO09BQzVCLFdBQTRCLDRCQTRMOUJvSyx5QkE3TDhCcEs7O1dBRUZDLGlCQUMxQixXQTBLRnVILDZCQTNLNEJ2SDs7V0FFSEUsaUJBQ3ZCLFdBb0pGaUksc0JBckp5QmpJOztXQUVHRSxpQkFDMUIsV0E2SEZpSyx5QkE5SDRCaks7O1dBRUZFO09BQ3hCLFdBQXdCLDRCQWExQmdLLHdCQWQwQmhLOztXQUVLRTtPQUM3QjtlQUE2Qiw0QkFNL0JpSCw2QkFQK0JqSDs7V0FFREcsa0JBQzVCLFlBdFNGNkYsZUFxUzhCN0Y7O09BR29CLElBRGZsQixpQkFBSm1CLGtCQUNtQixPQTNTbERuQyxnQkEwU21DZ0I7T0FDakMsWUErRUZxRSxlQWhGK0JsRDs7R0FDc0M7WUFFckU2Ryw0QkFHQ3JtQjtJQUFLLE9BK0VOd21CLGlCQXpFQU0saUJBTkM5bUI7R0FBdUM7WUFFeENrcEIsdUJBRUNscEI7SUFBSyxPQTJFTndtQixpQkF6RUFNLGlCQUZDOW1CO0dBQXVDO1lBRXhDOG1CO0lBQ0g7S0FHTXFDO0tBREFDO0tBREFDO0tBTzRCLE1BL1QvQmhNLGdCQTBURzhMO0lBRUwsV0FNRUcscUJBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDaUU7O09BR2hDO1FBRkQxTTtRQUFKVjtRQUVLLE1BQUEsNEJBNVlqQ3VFLGdCQTBZZ0M3RDtPQUM5QixXQXFXRkosU0FGQW1ZLGdCQXBXNEJ6WTs7V0FHRUUsaUJBQzVCLFdBT0ZtTixxQkFSOEJuTjs7T0FJYTtRQUZScUI7UUFBSlk7UUFBSnhCO1FBRWdCLE1BckIzQ2lLLGdCQW1CbUNySjtRQUVYLE1Balp4QmdELGVBK1krQnBDO09BQzdCLFdBa1VGQyxlQW5VMkJ6QjttQkFHR0UsaUJBQzVCLFdBNkNGMkYsZUE5QzhCM0Y7O0dBQ21CO1lBRWpEd007SUFFSDtLQUFpQ0M7S0FBM0JDO0tBR3lCLE1BQUEsNEJBRzVCQyx1QkFOOEJGO0lBQ2hDLFdBeFpFL0ksZUF1WkdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsTUFqVy9CeE0sZ0JBNFZHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUM4QjVOLGVBQzFCLFdBbERGNEssZ0JBaUQ0QjVLOztPQUcxQjtRQURzQkU7UUFFSDZELEtBRkc3RDtRQUVQcUIsS0FGT3JCO1FBRVhRLEtBRldSO1FBRWZTLE9BRmVUO1FBRzhCLE1BbGJ0RHFFLGVBaWJxQlI7UUFDVyxNQStDaEM4SixrQkFoRGlCdE07T0FEZixlQUNPWixNQXNRVDRLLGtCQXRRYTdLOztPQUdYO1FBRHlCRztRQUVOaU4sT0FGTWpOO1FBRVZzQyxPQUZVdEM7UUFFZHNCLE9BRmN0QjtRQUVsQnlCLE9BRmtCekI7UUFHMkIsTUF0YnREMEQsZUFxYnFCdUo7UUFDVyxNQTJDaENELGtCQTVDaUIxSztPQURmLGVBQ09iLE1BeU1Ua0osa0JBek1hcko7O09BR1g7UUFENkJNO1FBRWxCSixPQUZrQkk7UUFFdEJDLE9BRnNCRDtRQUdOLE1BMWJ6QjhCLGVBeWJhbEM7T0FEWCxlQXhiRmtDLGVBeWJTN0I7O1dBRXFCRSxpQkFDNUIsV0FuWEZzRyxlQWtYOEJ0RzttQkFFQUUsaUJBQzVCLFdBRUYwRCxlQUg4QjFEOztHQUNtQjtZQUVqRDBELGVBQ0MxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUFyWHpCd2xCLGFBb1hNNUk7SUFDUixXQTZTRUosa0JBN1NheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FrQjJCLE1BeFo5QmxOLGdCQTJZRzZNO0tBV3FCLE1BQUEsV0FsQnZCRCxJQUtFRztLQVlxQixNQXFSeEI1TixrQkFyUnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBYnpDcXFCO2lCQVNNcnFCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BbU8xQnlxQixjQXBPYzdOO0tBQ1IsV0F6ZE42RCxlQXdkVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENvTztJQU1MLFdBY0VQLGtCQXJCR1EsMEJBSUFKO0dBZUo7WUFFQ0oseUJBQ0YscUJBRWdEO1lBRTlDZCx5QkFFQ2pwQjtJQUFLLE9BRU51bUIsbUJBaE5BOEIsa0JBOE1Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU82QixNQWxiaEN2TixnQkE2YUdxTjtJQUVMLFdBQzJCLFdBUHhCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RDtJQUVIO0tBSU04RDtLQURBQztLQURBQztLQURBa0s7S0FTNkIsTUFqY2hDNVgsZ0JBMmJHd047S0FJMkIsTUFLOUJ0RCxtQkFYR3dEO0lBSUwsV0E2T0V2TyxTQUZBbVksZ0JBaFBHTSxpQkFFQW5LO0dBUUo7WUFFQ3ZELDBCQUMyRCxxQkFFbkI7WUFFeENwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVE0QixNQXJkL0IvTixnQkErY0c2TjtLQUtzQixNQWlOekJ1SixZQWpkQXBNLGtCQTBQRzhDO0lBSUw7WUF3TkUzTyxrQkF2TnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjFDb3JCOzs7WUFHQUg7R0FPSjtZQUVDbEM7SUFFSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsTUFwZTlCdk8sZ0JBOGRHcU87S0FLcUIsTUEvUXhCckQsaUJBeVFHc0Q7SUFJTCxXQXlNRW5QLGtCQXhNc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekM0ckIscUJBR0FIO0dBT0o7WUFFQ3pGO0lBRUg7S0FLTWdHO0tBREFFO0tBREFDO0tBREFDO0tBREFDO0tBaUI4QixNQTVmakNoUCxnQkErZUcyTztLQVkyQixNQTZEOUJ0RSxrQkExRUd3RTtLQVlEO09BQUE7MEJBS0Z4Syw0QkFsQkd5SztpQkFRTW5zQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQStIMUJ5cUIsY0FoSWM3TjtLQUNSLFdBN2pCTjZELGVBNGpCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBUkNrUTtJQUtMLFdBeUxFNVAsU0FGQW1ZLGdCQTdMR3RJO0dBa0JKO1lBRUMzSztJQUVIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVM0QixNQTNnQi9CcFAsZ0JBcWdCR2lQO0tBSXNCLE1BS3pCSSwrQkFYR0Y7SUFJTDtZQW1LRWhRLGtCQWxLdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUN5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRTBDO0tBR04sSUFGTjlQLGVBQUpWLGVBRVUsTUFrSnBDdVksWUEzdUJBaFUsZ0JBdWxCOEI3RDtLQUM1QixXQXNFRitQLDJCQXZFMEJ6UTs7UUFHQ0U7SUFDekIsV0FxSkZJLFNBRkFtWSxnQkFwSjJCdlk7R0FDNEI7WUFFdkQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTBCNkIsTUFwakJoQzlQLGdCQWdpQkd3UDtLQW1CMkIsTUFrSDlCNEgsWUEzdUJBaFUsZ0JBcW1CR3FNO0tBbUIwQixNQU03QnBGLGtCQTFCR3FGO0tBbUJ1QixNQVkxQkssZUFoQ0dKO2lCQWdCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1Bcm5CMUJ5Z0IsZUFvbkJjN0Q7S0FDUixXQXJuQk42RCxlQW9uQlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FoQkN3UDtpQkFXTWp0QjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQTZFMUJ5cUIsY0E5RWM3TjtLQUNSLFdBL21CTjZELGVBOG1CVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBWENnUjtJQVFMO1lBdUlFMVEsa0JBdEl3Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVYzQ210Qjs7Ozs7OztZQU9BUDtHQXFCSjtZQUVDbEYseUJBQ0YscUJBRTRDO1lBRTFDMEY7SUFDRjs7U0FFK0JsUjtLQUMzQixXQUEyQiw0QkFLN0JtUiw4QkFONkJuUjs7UUFFREU7SUFDMUIsV0FBMEIsNEJBNkI1QmtSLHdCQTlCNEJsUjtHQUV3QjtZQUVwRGlSO0lBR0g7S0FLTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUU7S0FXMkIsTUFybEI5QnZRLGdCQThrQkdrUTtLQUtvQixNQWtGdkJrSCxZQTN1QkFoVSxnQkFrcEJHZ047S0FNcUIsTUFNeEJkLDJCQWJHZTtJQUtMO1lBMEZFbFIsa0JBekZzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6QzR0Qjs7O1lBR0FKOztHQVNKO1lBRUNiO0lBRUY7U0FDNkJ6UTtLQUN6QixXQUF5Qiw0QkFscUIzQnVFLGdCQWlxQjJCdkU7O1FBRUNFO0lBQzFCLFdBQTBCLDRCQUU1QmtSLHdCQUg0QmxSO0dBQ29DO1lBRWhFa1I7SUFFSDtLQUtNTztLQURBQztLQURBQztLQURBQztLQURBQztLQVcyQixNQTltQjlCNVEsZ0JBdW1CR3dRO0tBS3FCLE1BbHJCeEJwTixlQTJxQkdzTjtLQU13QixNQU0zQnRHLGtCQWJHdUc7SUFLTDtZQWlFRXhSLGtCQWhFc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FQekNpdUI7OztZQUdBSDs7R0FTSjtZQUVDckcseUJBQ0YscUJBRThDO1lBRTVDZ0Q7SUFBaUUsc0JBQ3RDLGlCQUNJLGtCQUNKOztHQUFxQjtZQUVoRDNFO0lBRUg7S0FLTW9JO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBVTRCLE1BeG9CL0JqUixnQkFpb0JHOFE7aUJBTW9DbnVCLEdBQUssT0FBTEEsRUFBTTtJQUFwQjtLQUFBLE1BQUEsaUNBUHRCb3VCO0tBTXNCLE1BNXNCekIzTixlQXFzQkc0TjtJQUtMO1lBc0NFN1Isa0JBckN1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVAxQ3N1Qjs7OztZQUlBSjtHQVFKO1lBRUM1UDtJQUFvRSw4QkFDM0M7MkJBQ0ZwQyxlQUFNLFdBQU5BO1FBQ0FFO0lBQU0sV0FBTkE7R0FBNkI7WUFFcEQ2SCx3QkFDRixxQkFFd0M7WUFFdENsRCxXQUE0RC9nQixHQUFLLE9BQUxBLEVBQU07WUFFbEUyZCxxQkFBaUUscUJBRWpCO1lBRWhESDtJQUFtRTs7V0FDaENaLGVBQUpWO09BQzdCLFdBRDZCQSxJQVEvQnVZLHFCQVBvRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkI0Yzs7V0FFUlIsaUJBQU0sV0FBTkE7O1dBQ09pQyxpQkFBSnhCO09BQzVCLFdBRDRCQSxNQUs5QjRYLHFCQUptRHowQixHQUFLLE9BQUxBLEVBQU0sR0FEdkJxZTs7V0FFREUsaUJBQUp4QjtPQUMzQixXQUQyQkEsTUFHN0IwWCxxQkFGa0R6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHZCdWU7O0dBQzRCO1lBRTdEa1csWUFDQ3hLO0lBQUosWUFBMkI7UUFBWS9OO0lBQU0sV0FBSyxXQUE5QytOLElBQW1DL047R0FBa0I7WUFFdER5WSxlQUFrRDMwQixHQUFLLE9BQUxBLEVBQU07WUFFeER3YyxTQUVDeU47SUFBSixJQUE0QjFwQixnQkFBbkJZO0lBQ1IsV0FBb0IsV0FEakI4b0IsSUFBSzlvQixNQUFtQlo7R0FDc0M7WUFFL0Rta0IsY0FBK0Mxa0IsR0FBSyxPQUFMQSxFQUFNO1lBQ3JEMDBCLGlCQUEyQixxQkFBc0M7WUFFN0R6WTtJQUM2RCx1QkFDekNDLGVBQU0sV0FycUI5QkMsZUFxcUJ3QkQ7UUFDS1UsZUFBSlI7SUFDdkIsV0FEdUJBLE1BR3pCRyx3QkFINkJLO0dBQzJCO1lBRXhETDtJQUVGLDhCQUM4Qjs7O1dBQ0RMLGVBQU0sV0FBTkE7O1dBQ0VVLGVBQUpSO09BQ3ZCLFdBRHVCQSxNQXhCekJxWSxxQkF5QjhDejBCLEdBQUssT0FBTEEsRUFBTSxHQUR2QjRjOztXQUVIQyxpQkFBTSxXQUFOQTttQkFDREUsaUJBQU0sV0FoQi9CMlgsVUFnQnlCM1g7O0dBQTJDO1lBRXBFc1gsV0FBV3IwQixHQUFJLE9BQUEsNEJBcjFCZnllLFdBcTFCV3plLEdBQXdCOzs7O09BNzhCL0JnZDtPQVlKTztPQXVHQThDO09BS0E1QjtPQVFBZjtPQWVBNEM7T0FZQTBEO09BMENBdkQ7T0FZQWdFO09BcUNBSTtPQVdBRDtPQVVBdkg7T0FHQStIO09BS0FJO09BT0FySjtPQUdBdUo7T0FRQUc7T0FtQ0FTO09BSUFGO09BSUFLO09BWUFJO09BNkJBN0U7T0FRQWtGO09BWUFJO09BNEJBRTtPQU9BdEI7T0FlQTNFO09BWUE0RztPQW9CQUU7T0FZQUk7T0FxQkFDO09BY0FqRDtPQUdBa0Q7T0FRQUc7T0ErQkF6QztPQUtBNkM7T0FJQXBDO09BWUF3QztPQWFBQztPQVFBRztPQWFBSTtPQXNCQXBIO09BS0E4RDtPQTRCQXVEO09BS0FkO09BSUExQztPQWlCQVE7T0FlQVE7T0FLQXBCO09BZ0JBNEM7T0FlQS9DO09BdUJBdEU7T0FlQWdMO09BU0EzRztPQWlDQTJCO09BS0EwRjtPQVNBQztPQWtCQVY7T0FRQVc7T0FpQkE3RjtPQUtBZ0Q7T0FLQTNFO09BaUJBeEg7T0FLQTJGO09BS0FsRDtPQUVBcEQ7T0FJQUg7T0FTQWlYO09BR0FFO09BRUFuWTtPQUtBa0k7T0FDQWdRO09BRUl6WTtPQU1KTTtPQVVBOFg7T0E5ekJBL1Q7T0EvSUl0RDtPQXFNSnlEOzs7O0U7Ozs7OztHQ3JNYzs7SUE2MUJaOWU7SUFDQUM7SUE5MUJZO0lBd0NDO0lBb3pCSCxhQUNWRCx1QkFDQUM7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7SUNtSUkwekI7SUEzOUJBbjBCOzs7Ozs7Ozs7Ozs7Ozs7OztZQU5ObzBCLHFCQUFxQnZ1QixPQUFNd3VCO0lBQzdCLFVBRHVCeHVCLDRCQUFBQTtLQUtULFdBTGV3dUIsTUFLckJqMUIsZ0NBRUFrMUIsWUFEQXQwQixLQURBWjtLQUdKLGVBRElrMUIsV0FQcUJELFFBS3JCajFCOztJQVFELE9BYnNCaTFCO0dBYXJCO1lBRU5ILG9CQUE2QjkwQixnQkFBUSxPQUFSQTtZQUU3QndiLGdCQUFnQnhiLEtBQUl5YjtJQUN0QixPQUFBLG1DQURrQnpiLFdBQUl5YjtHQUVvRDtZQUVwRWdCO0lBQ1A7S0FHTUM7S0FEQUU7S0FEQUM7S0FPNEIsT0FxUS9CQyxnQkExUUdKO0lBRUwsV0FNRU0scUJBVEdKLFVBREFDLFlBQ0FEO0dBT0o7WUFFQ0kscUJBQXFCaGQ7STtLQXNHbkIsT0F0SEZ3YixnQkFnQnFCeGI7OztXQUVLMmIsZUFDeEIsV0FnN0JGTSxTQUZBbVksZ0JBLzZCMEJ6WTs7V0FFR0UsaUJBQzNCLFdBeTVCRm9CLGNBOTVCcUJqZCxLQUlRNmI7O09BSTBCO1FBRnRCcUI7UUFBSmI7UUFBSkM7UUFFOEIsT0FwQm5ERyxnQkFrQjZCUztRQUVWLE9BQUEsNEJBNkd2QkMsb0JBL0c2QmQ7T0FDM0IsV0FtNUJGZSxjQXA1QnlCZDs7V0FHSUU7T0FDM0IsV0FBMkIsNEJBbUc3QjBCLFdBcEc2QjFCOztPQU92QjtRQUwrQmtEO1FBQUpaO1FBQUpoQjtRQUFKRztRQUtuQixPQTVCRnhCLGdCQXVCaUNpRDtRQUkvQixPQXFITkssYUF6SGlDakI7UUFHM0IsT0FnNkJOb1YsWUExN0JJelgsaUJBdUJ5QnFCO09BQzNCLFdBazRCRkMsZUFuNEJ5QkU7O09BU25CO1FBSHlCRDtRQUFKSTs7bUJBSWQzZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixPQW5DMUJnZCxnQkFrQ2NKO1dBQ1IsV0F1M0JWMEIsZUF4M0JjcEM7VUFDbUM7UUFIM0MsT0FBQSxrQ0FIeUJxQztPQUM3QixXQTlCRXZCLGdCQTZCdUIyQjs7T0FTb0I7UUFEaEJEO1FBQUpFO1FBQ29CLE9BQUEsNEJBbUYvQ0gsV0FwRitCQztPQUM3QixXQXRDRTFCLGdCQXFDdUI0Qjs7T0FHa0I7UUFEaEJDO1FBQUpDO1FBQ29CLE9BQUEsNEJBaUY3Q0wsV0FsRjZCSTtPQUMzQixXQXhDRTdCLGdCQXVDcUI4Qjs7V0FFQ0U7T0FDeEIsV0FBd0IsNEJBMUN0QmhDLGlCQXlDc0JnQzs7T0FJTztRQUZFRDtRQUFKRztRQUVFLE9BNjRCakN1VixZQTE3Qkl6WCxpQkEyQytCK0I7T0FDakMsV0FtNUJGdkMsU0FGQW1ZLGdCQWw1QitCelY7O1dBR0VELGlCQUFKRztPQUMzQixZQUQyQkEsTUE0NEI3QnFWLFlBMTdCSXpYLGlCQThDNkJpQzs7T0FTM0I7UUFQMEJFO1FBQUpJO1FBT3RCLE9BbTRCTmtWLFlBMTdCSXpYLGlCQWdENEJtQzs7bUJBR25CbmY7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0FyRG5DZ2QsZ0JBb0RjSjtXQUNSLFdBMDRCVkosU0FGQW1ZLGdCQXo0QmN6WTtVQUM0QztPQUp4RCxZQUNJLGtDQUZzQnFEOztPQVNtQjtRQURoQkQ7UUFBSkU7UUFDb0IsT0FzNEIvQ2hELFNBRkFtWSxnQkFyNEIrQnJWO09BQzdCLFlBekRFdEMsZ0JBd0R1QndDOztPQUkwQjtRQUZmQztRQUFKQztRQUFKQztRQUV1QixPQTVEakQzQyxnQkEwRGtDeUM7UUFFYixPQW00QnpCakQsU0FGQW1ZLGdCQW40QmtDalY7T0FDaEMsWUEzREUxQyxnQkEwRDBCMkM7O1dBR0pFO09BQ3hCLFlBQXdCLDRCQTlEdEI3QyxpQkE2RHNCNkM7O09BSW1CO1FBRkxLO1FBQUpOO1FBQUpHO1FBRWEsT0F5M0I3QzBVLFlBMTdCSXpYLGlCQStEb0NrRDtRQUVmLE9BakVyQmxELGdCQStEZ0M0QztPQUNsQyxZQWhFRTVDLGdCQStENEIrQzs7T0FJa0IsSUFEaEJELGtCQUFKTSxrQkFDb0IsT0FuRTlDcEQsZ0JBa0U4QjhDO09BQ2hDLFlBbkVFOUMsZ0JBa0UwQm9EOztPQUdpQixJQURoQkQsa0JBQUpLLGtCQUNvQixPQXJFM0N4RCxnQkFvRTJCbUQ7T0FDN0IsWUFyRUVuRCxnQkFvRXVCd0Q7O09BUXJCO1FBTm1DUjtRQUFKZ0s7UUFBSnRKO1FBQUpIO1FBQUpLO1FBTW5CLE9BNUVGNUQsZ0JBc0VxQ2dEO1FBS25DLE9BeUNOSyxvQkE5Q3FDMko7UUFJL0IsT0ExRUZoTixnQkFzRTZCMEQ7UUFHM0IsT0F6RUYxRCxnQkFzRXlCdUQ7T0FDM0IsWUF5RUZELGFBMUV5Qk07O09BUTJCLElBRGhCRCxrQkFBSkcsa0JBQ29CLE9Bd0hwREwsZUF6SG9DRTtPQUNsQyxZQTlFRTNELGdCQTZFNEI4RDs7T0FJd0I7UUFGcEJNO1FBQUpQO1FBQUpHO1FBRTRCLE9BcUh4RFAsZUF2SG9DVztRQUVYLE9BeTJCekJxVCxZQXB2QkFoVSxnQkF2SGdDSTtPQUM5QixZQWhGRTdELGdCQStFd0JnRTs7V0FHRUMsa0JBQUpDO09BQ3hCLFlBbkZFbEUsZ0JBa0ZzQmtFLFFBQUlEOztXQUVORSxrQkFDdEIsWUEwMkJGM0UsU0FGQW1ZLGdCQXoyQndCeFQ7O09BR2tDLElBRHRCRSxrQkFBSkMsa0JBQzBCLE9BdkZ0RHRFLGdCQXNGZ0NxRTtPQUNsQyxZQXcyQkY3RSxrQkF4MkI4Q3hjLEdBQUssT0FBTEEsRUFBTSxHQURwQnNoQjs7O1FBRUhHOzttQkFHakJ6aEI7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsT0E3RmhDZ2QsZ0JBNEZhSjtXQUNSLFdBazJCVEosa0JBbDJCd0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztVQUMwQztPQUpyRCxZQUNFLGtDQUZ5QnVGOztPQVN1QjtRQUZid1A7UUFBSnpQO1FBQUpHO1FBRXFCLE9BakdoRDNFLGdCQStGbUNpVTtRQUVSLE9BZ1cvQjFQLGlCQWxXbUNDO09BQ2pDLFlBKzFCRmhGLGtCQTkxQm1CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRk0yaEI7O1dBR0pDLGtCQUN6QixZQW5HRTVFLGdCQWtHdUI0RTs7V0FFRkUsa0JBQU0sWUFwRzNCOUUsZ0JBb0dxQjhFOztPQUVxQjtRQURoQkQ7UUFBSkU7UUFDb0IsT0FvMUI5QzBTLFlBcHZCQWhVLGdCQWpHOEJvQjtPQUM1QixZQXRHRTdFLGdCQXFHc0IrRTs7V0FFQ0csa0JBQ3pCLFlBbVJGRixxQkFwUjJCRTs7V0FFTUQsa0JBQUpFO09BQzNCLFlBRDJCQSxPQXpHekJuRixnQkF5RzZCaUY7O1dBRVJJLGtCQUFNLFlBc1YvQmQsaUJBdFZ5QmM7O09BRytCO1FBRnRCeVM7UUFBSjFTO1FBQUpHO1FBRThCLE9BOUdwRHZGLGdCQTRHOEI4WDtRQUVOLE9BaTFCNUJ0WSxTQUZBbVksZ0JBajFCOEJ2UztPQUM1QixZQXFtQkZtRixtQkF0bUIwQmhGO21CQUdJRSxrQkFDNUIsWUF3aEJGQyxlQXpoQjhCRDs7O1lBSzlCcEMsMkJBQzZELHFCQUVuQjtZQUUxQzVCO0lBQ0g7S0FBc0RuRTtLQUF6QkM7S0FBdkJDO0tBSW1CLE9BOUhsQndDLGdCQTBIK0MxQztLQUczQixPQTZ6QnhCbWEsWUExN0JJelgsaUJBMEhzQnpDO0lBQzVCLFdBcUJFK0YsYUF0Qkc5RjtHQUtKO1lBRUNrRDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVEyQixPQWtJOUJyRyxnQkF4SUdrRztLQUtxQixPQTNJcEJ2RyxnQkFxSUR5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FHTXNEO0tBREFFO0tBREFDO0tBTzRCLE9BcUgvQjFHLGdCQTFIR3VHO0lBRUwsV0FNRUksa0JBVEdGLFVBREFDLFlBQ0FEO0dBT0o7WUFFQ0Usa0JBQWtCempCO0ksOEJBRVM7OztXQUNIMmIsZUFDdEIsV0EreEJGTSxrQkEveEJ1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQURyQmtjOztPQUdvQjtRQURiVTtRQUFKUjtRQUNpQixPQTZ4QjVDSSxrQkE3eEIwRHhjLEdBQUssT0FBTEEsRUFBTSxHQURqQzRjO09BQzdCLFdBbEJGMEQsYUFpQjJCbEU7O1dBRUVTLGlCQUMzQixXQXN3QkZXLGNBOXdCa0JqZCxLQU9Xc2M7O09BR3VCLElBRGxCd0IsaUJBQUp0QixpQkFDc0IsT0Fvd0JwRFMsY0E5d0JrQmpkLEtBU2dCOGQ7T0FDaEMsV0Fvd0JGYixjQTl3QmtCamQsS0FTWXdjOztXQUVKeUI7T0FDeEIsV0FBd0IsNEJBeEIxQjhCLGNBdUIwQjlCOztPQUlPO1FBRkVEO1FBQUpJO1FBRUUsT0Erd0JqQzhWLFlBMXlCQW5VLGNBeUJtQy9CO09BQ2pDLFdBcXhCRi9CLFNBRkFtWSxnQkFweEIrQmhXOztXQUdFRCxpQkFBSkU7T0FDM0IsV0FEMkJBLE1BOHdCN0I2VixZQTF5QkFuVSxjQTRCaUM1Qjs7T0FTM0I7UUFQMEJHO1FBQUpDO1FBT3RCLE9BMHVCTm1GLGlCQWp2QmdDcEY7O21CQUduQjdlO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BbkN2Q3NnQixhQWtDa0IxRDtXQUNSLFdBNHdCVkosU0FGQW1ZLGdCQTN3QmN6WTtVQUN5QztPQUpyRCxXQUNJLGtDQUZzQjRDOztXQVFGRTtPQUN4QixXQUF3Qiw0QkF2QzFCc0IsY0FzQzBCdEI7O09BR2UsSUFEYkQsaUJBQUpHLGlCQUNpQixPQXpDekNvQixhQXdDNEJ2QjtPQUMxQixXQXpDRnVCLGFBd0N3QnBCOztPQUd5QixJQURiRCxpQkFBSkcsaUJBQ2lCLE9BV2pEcUIsZUFab0N4QjtPQUNsQyxZQTNDRnFCLGFBMENnQ2xCOztXQUVQRyxrQkFDdkIsWUFrd0JGL0MsU0FGQW1ZLGdCQWp3QnlCcFY7O1dBRUFDLGtCQUFNLFlBOUMvQmMsYUE4Q3lCZDs7V0FDRUc7T0FDekIsWUErdkJGbkQsa0JBL3ZCMEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEckIyZjs7V0FFR0Usa0JBQzVCLFlBbERGUyxhQWlEOEJUO21CQUVBRSxrQkFDNUIsWUFvY0YyQyxlQXJjOEIzQzs7O1lBRzlCVTtJQUNIO0tBR000RDtLQURBRTtLQURBQztLQU80QixPQStEL0JuSCxnQkFwRUdnSDtJQUVMLFdBTUVJLG9CQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUtsQjtRQUo2QnVCO1FBQUpiO1FBQUpSO1FBSXJCLE9BcEJOcUUsZUFnQm1DaEQ7UUFHN0IsT0E5T044WCxxQkEyTzJCblosTUFoQjNCcUUsZUFnQitCN0Q7T0FDN0IsV0Ftc0JGMEIsZUFwc0IyQmxDOztXQUtEUztPQUN4QixXQUF3Qiw0QkF0QjFCNEQsZ0JBcUIwQjVEOztPQUlPO1FBRkR3QjtRQUFKdEI7UUFFSyxPQUFBLDRCQXpCakMwRCxnQkF1QmdDcEM7T0FDOUIsV0FpdUJGN0IsU0FGQW1ZLGdCQWh1QjRCNVg7O09BVXRCO1FBUDBCd0I7UUFBSkM7UUFPdEIsT0F3ckJOeUYsaUJBL3JCZ0MxRjs7bUJBR25CdmU7V0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVzQixPQS9CbkN5Z0IsZUE4QnNCaEQ7V0FDWixXQURJdkIsSUEwQ2RtQixnQkExQ2tCVDtVQUNtQztPQUpuRCxXQUNJLGtDQUZzQjRCOztPQVVLO1FBRkZFO1FBQUpDO1FBRU0sT0FBQSw0QkFwQ2pDOEIsZ0JBa0MrQi9CO09BQzdCLFdBc3RCRmxDLFNBRkFtWSxnQkFydEIyQmhXOztXQUdJRSxpQkFBSkQ7T0FDekIsV0F0Q0Y2QixlQXFDMkI3QixPQUFJQzs7T0FNekI7UUFKK0JRO1FBQUpOO1FBQUpEO1FBSXZCO1VBeXNCTjJWO3FCQXpzQnVCejBCLEdBQUssT0FBQSw0QkFtckI1QitnQixZQW5yQnVCL2dCLEdBQTBCO1lBSlpxZjtRQUcvQixPQStxQk40RSxpQkFsckJpQ2xGO09BQy9CO2VBQ0ksNEJBcUJONkYsZ0JBdkI2QjlGOzs7O09BTXVCO1FBRHRCRztRQUFKRDtRQUMwQixPQTdDcER5QixlQTRDOEJ4Qjt3QkFDVWpmLEdBQUssT0FBTEEsRUFBTTtPQUE1QyxXQUF3QixrQ0FEQWdmOztXQUVFRSxpQkFDMUIsV0FJRjJGLGtCQUw0QjNGO21CQUVFRSxpQkFDNUIsWUFpWkZzRCxlQWxaOEJ0RDs7R0FDbUI7WUFFakR5RixrQkFFQzdrQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYztrQkFJTUE7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFMEIsT0EzRGpDeWdCLGVBMERZN0Q7S0FDUixXQThyQkpKLFNBRkFtWSxnQkE3ckJRelk7SUFDMkM7SUFIbkQsV0FBQSxrQ0FGTVU7SUFDUixXQWtzQkVKLFNBRkFtWSxnQkFqc0JFelk7R0FNSTtZQUVOMEk7SUFDRjtLQU1RO01BTDJCM0U7TUFBSnhDO01BQUpiO01BQUpWO01BS2YsT0FBQSw0QkFyRU51RSxnQkFnRWlDUjtNQUkzQixPQTJyQk55VSxVQS9yQjZCalg7S0FDM0IsV0FEbUJ2QixJQVFyQm1CLGdCQVJ5QlQ7O1FBTURSO0lBQU0sV0F0RTlCcUUsZUFzRXdCckU7R0FBK0M7WUFFdkVpQixnQkFDQ3JkO0lBQUssT0FBQSw0QkFFTm9sQixnQkFGQ3BsQjtHQUE4QjtZQUUvQm9sQixlQUNDcGxCO0lBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BRXpCd2xCLGFBSEV0SixPQUFJVTtJQUNSLFdBMnFCRUosa0JBM3FCYXhjLEdBQUssT0FBTEEsRUFBTSxHQURqQmtjO0dBQ3FEO1lBRXZEc0osYUFBYWpsQjtJOztXQUNPMmIsZUFBTSxXQU0xQkMsZUFOb0JEOztPQUNPLE9BNVIzQkgsZ0JBMFJheGI7O1dBR082YixpQkFBTSxXQW5GMUJxRSxlQW1Gb0JyRTs7T0FFa0I7UUFEYlE7UUFBSkM7UUFDaUIsT0ErcEJ0QzRYLFlBMTdCSXpYLGlCQTBScUJKO09BQ3ZCLFdBM0lGMEQsYUEwSXFCekQ7OztZQUdyQlYsZUFDQ25jO0lBQUssT0FBQSw0QkFFTjBsQixxQkFGQzFsQjtHQUFtQztZQUVwQzBsQjtJQUVILElBQWdDQyxxQkFBMUJDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTBCRDtHQUk5QjtZQUVDRTtJQUVGOztPQUVnRCxJQURoQmpKLGVBQUpWLGVBQ29CLE9BOUI5Q21CLGdCQTZCOEJUO09BQzVCLFdBNVNFSSxnQkEyU3NCZDs7T0FHbUI7UUFEZG1DO1FBQUpqQztRQUNrQixPQUFBLDRCQTdLN0NzQixvQkE0SytCVztPQUM3QixXQXduQkZWLGNBem5CMkJ2Qjs7V0FFR1MsaUJBQzVCLFdBeWxCRmlKLHVCQTFsQjhCako7O1dBRUEwQixpQkFBSnhCO09BQ3hCLFdBcXBCRjJZLGtCQXRwQjBCM1ksTUFBSXdCOztXQUVIQyxpQkFDekIsV0FrY0Z3SCxvQkFuYzJCeEg7O1dBRUdHLGlCQUM1QixXQXVkRitDLDJCQXhkOEIvQzs7V0FFSEMsaUJBQ3pCLFdBMEhGc0gsb0JBM0gyQnRIOztXQUVHRTtPQUM1QixXQUE0Qiw0QkF3SDlCb0gscUJBekg4QnBIOztXQUVGRSxpQkFDMUIsV0EyWkZtSCw2QkE1WjRCbkg7O1dBRUhFLGlCQUN2QixXQXFZRjZILHNCQXRZeUI3SDs7V0FFQ0U7T0FDeEIsWUFBd0IsNEJBYzFCZ0gsd0JBZjBCaEg7O1dBRUtHO09BQzdCO2VBQTZCLDRCQXVQL0I4Ryw2QkF4UCtCOUc7O1dBRUhDLGtCQUMxQixZQU1GOEcseUJBUDRCOUc7O1dBRUVHLGtCQUM1QixZQXJERnlGLGVBb0Q4QnpGOztPQUdvQixJQURmakIsaUJBQUptQixrQkFDbUIsT0ExRGxEeEMsZ0JBeURtQ3FCO09BQ2pDLFlBZ1VGZ0UsZUFqVStCN0M7O0dBQ3NDO1lBRXJFeUcseUJBRUN0bUI7SUFBSyxPQXNXTnVtQixtQkFqUEFoRixrQkFySEN2aEI7R0FBMEM7WUFFM0NvbUIsdUJBRUNwbUI7SUFBSyxPQTZUTndtQixpQkEzVEFDLGlCQUZDem1CO0dBQXVDO1lBRXhDeW1CO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPMkIsT0E3RTlCdkosZ0JBd0VHcUo7SUFFTCxXQU1FRyxxQkFWR0QsV0FDQUQ7R0FPSjtZQUVDRTtJQUNpRTs7T0FHaEM7UUFGRmpLO1FBQUpWO1FBRU0sT0FBQSw0QkE1SmpDdUUsZ0JBMEorQjdEO09BQzdCLFdBOGxCRkosU0FGQW1ZLGdCQTdsQjJCelk7O1dBR0VFLGlCQUMzQixXQXVCRjRGLHFCQXhCNkI1Rjs7T0FPdkI7UUFMOEI2RDtRQUFKeEM7UUFBSlk7UUFBSnhCO1FBS2xCLE9BeEJONEosZ0JBbUJvQ3hHO1FBSTlCLE9Bek5OSyxhQXFOZ0M3QztRQUcxQixPQWtsQk5nWCxZQTE3Qkl6WCxpQkFxV3dCcUI7T0FDMUIsV0FvakJGQyxlQXJqQndCekI7O09BU2xCO1FBSHdCMEI7UUFBSnhCOzttQkFJYi9jO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE9BalgxQmdkLGdCQWdYY0o7V0FDUixXQXlpQlYwQixlQTFpQmNwQztVQUNtQztRQUgzQyxPQUFBLGtDQUh3QnFDO09BQzVCLFdBMUJGa0ksZ0JBeUIwQjFKOztPQVU2QjtRQUZ2QnNDO1FBQUpYO1FBQUpGO1FBRStCLE9BbkN2RGlJLGdCQWlDZ0NwSDtRQUVULE9BQUEsNEJBcFB2QjNCLG9CQWtQNEJnQjtPQUMxQixXQWtqQkZmLGNBbmpCd0JhOztPQUkyQixJQURoQkssaUJBQUpGLGlCQUNvQixPQTJNbkRtSSxnQkE1TW1Dakk7T0FDakMsV0FyQ0Y0SCxnQkFvQytCOUg7bUJBRUZDLGlCQUMzQixXQStRRjhELGVBaFI2QjlEOztHQUNtQjtZQUVoRG9EO0lBRUg7S0FBaUNnRjtLQUEzQkM7S0FHeUIsT0FBQSw0QkFHNUJDLGtCQU44QkY7SUFDaEMsV0E5T0UxRyxhQTZPRzJHO0dBSUo7WUFFQ0M7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQTlIOUJoSyxnQkF5SEc4SjtJQUVMLFdBTUVHLHNCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztPQUduQjtRQUZaN0o7UUFBSmI7UUFBSlY7UUFFb0IsT0F1aUJoRHVZLHFCQXZpQmlFejBCLEdBQUssT0FBTEEsRUFBTSxHQUZuQ3lkO1FBRVIsT0FqRTVCZ0osZ0JBK0RnQzdKO09BQzlCLFdBZ1VGMkssbUJBalU0QnJMOztPQUkxQjtRQURxQkU7UUFFTmlELE9BRk1qRDtRQUVWaUMsT0FGVWpDO1FBRWRTLE9BRmNUO1FBS2hCLE9Ba0JQb0wsc0JBckJpQm5JO1FBRVYsT0F1ZVBvSSxrQkF6ZWFwSjtPQURYLGVBMGlCRjdCLGtCQXhpQnFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCNmM7O09BS1A7UUFEd0JFO1FBRVQwQyxPQUZTMUM7UUFFYndCLE9BRmF4QjtRQUVqQnlCLE9BRmlCekI7UUFLbkIsT0FZUHlLLHNCQWZpQi9IO1FBRVYsT0F5YVBpSSxrQkEzYWFuSjtPQURYLGVBb2lCRi9CLGtCQWxpQnFCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGxCd2U7O09BS1A7UUFENEJHO1FBRWpCRCxPQUZpQkM7UUFFckJDLE9BRnFCRDtRQUdMLE9BN056QjhCLGVBNE5hL0I7T0FEWCxlQTNORitCLGVBNE5TN0I7O1dBRXNCRSxpQkFDN0IsV0FyYUU5QixnQkFvYTJCOEI7O1dBRUZFLGlCQUMzQixXQXRKRm9HLGVBcUo2QnBHO21CQUVBRSxpQkFDM0IsV0ErTkZ3RCxlQWhPNkJ4RDs7R0FDbUI7WUFFaERzSTtJQUNtRSx1QkFDeEN0TCxlQUN6QixXQXhPRnVFLGVBdU8yQnZFO0lBR3lCLElBRG5CVSxlQUFKUixpQkFDdUIsT0FoYmhEWSxnQkErYTZCSjtJQUMvQixXQWtTRjJLLG1CQW5TNkJuTDtHQUMwQztZQUV2RThKO0lBRUg7S0FJTTBCO0tBREFDO0tBREFDO0tBREFDO0tBUTJCLE9BL0s5QjFLLGdCQXlLR3dLO0tBS3FCLE9BS3hCdEcsaUJBWEd1RztJQUlMO1lBcWdCRXRMLGtCQXBnQnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTnpDK25COzs7WUFHQUg7R0FPSjtZQUVDckc7SUFDSDtLQUdNeUc7S0FEQUM7S0FEQUM7S0FPNEIsT0E1TC9CN0ssZ0JBdUxHMks7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7V0FDekNqTSxlQUN4QixXQStlRk0sU0FGQW1ZLGdCQTllMEJ6WTs7V0FFSUUsaUJBQzVCLFdBckxGRCxlQW9MOEJDOztPQU14QjtRQUorQnFCO1FBQUpiO1FBQUpDO1FBSXZCLE9BdEJOMEUsaUJBa0JxQzlEO1FBRy9CLE9Bb2VOZ1gsWUF6ZEFwTSxrQkFkaUN6TDtPQUMvQixXQTJlRkosa0JBMWVvQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZHNmM7O09BTW1CLElBRGpCd0IsaUJBQUp0QixpQkFDcUIsT0F4QmhEd0UsaUJBdUIrQmxEO09BQzdCLFdBeEJGa0QsaUJBdUIyQnhFOztPQUcwQixJQURqQndCLGlCQUFKQyxpQkFDcUIsT0FNckQ2SixpQkFQb0M5SjtPQUNsQyxXQTFCRmdELGlCQXlCZ0MvQzs7V0FFTEcsaUJBQ3pCLFdBN2RFM0IsZ0JBNGR1QjJCO21CQUVHQyxpQkFDNUIsV0F5S0Y4RCxlQTFLOEI5RDs7R0FDbUI7WUFFakR5SjtJQUNIO0tBR01DO0tBREFDO0tBREFDO0tBTzRCLE9BNU4vQm5MLGdCQXVOR2lMO0lBRUwsV0FNRUcsc0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O1dBQ3pDdk0sZUFDeEIsV0ErY0ZNLFNBRkFtWSxnQkE5YzBCelk7O1dBRUlFLGlCQUM1QixXQThCRnFKLGVBL0I4QnJKOztPQU14QjtRQUorQnFCO1FBQUpiO1FBQUpDO1FBSXZCLE9BdEJOd0wsaUJBa0JxQzVLO1FBRy9CLE9Bb2NOZ1gsWUF6ZEFwTSxrQkFrQmlDekw7T0FDL0IsV0EyY0ZKLGtCQTFjb0J4YyxHQUFLLE9BQUxBLEVBQU0sR0FGRzZjOztPQU9IO1FBRkl3QjtRQUFKdEI7UUFFQSxPQUFBLDRCQVExQjJMLHNCQVY4QnJLO09BQzVCLFdBeEJGZ0ssaUJBdUIwQnRMOztXQUdDeUIsaUJBQ3pCLFdBM0RGK0MsaUJBMEQyQi9DOztXQUVHRyxpQkFDNUIsV0EwSUYrRCxlQTNJOEIvRDs7V0FFSkMsaUJBQ3hCLFdBK2JGcEMsU0FGQW1ZLGdCQTliMEIvVjs7R0FDNEI7WUFFdEQ4SjtJQUNpRTs7T0FHaEMsSUFGRjlMLGVBQUpWLGVBRU0sT0FnU2pDNkosc0JBbFMrQm5KO09BQzdCLFdBMGJGSixTQUZBbVksZ0JBemIyQnpZOztPQUtNO1FBRkFtQztRQUFKakM7UUFFSSxPQXNiakNJLFNBRkFtWSxnQkF0YmlDdFc7T0FDL0IsV0F1YkY3QixTQUZBbVksZ0JBdGI2QnZZOztXQUdFUyxpQkFDN0IsV0EyUkZrSixzQkE1UitCbEo7O09BSUE7UUFGSTBCO1FBQUp4QjtRQUVBLE9BaWIvQlAsU0FGQW1ZLGdCQWpibUNwVztPQUNqQyxXQWtiRi9CLGtCQWpibUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FGTStjOztHQUUyQjtZQUUxRDBJLGVBQ0N6bEI7SUFBSyxPQUFBLDRCQUVOMm9CLHFCQUZDM29CO0dBQW1DO1lBRXBDMm9CO0lBRUgsSUFBZ0NDLHFCQUExQkM7SUFDTCxXQUtFQyx5QkFOR0QsWUFBMEJEO0dBSTlCO1lBRUNFO0lBRUY7O1dBQzRCNU0sZUFDeEIsV0EwV0Y0Six1QkEzVzBCNUo7O1dBRUlVLGVBQUpSO09BQ3hCLFdBc2FGc1osa0JBdmEwQnRaLE1BQUlROztXQUVIQyxpQkFDekIsV0FtTkZtSixvQkFwTjJCbko7O1dBRUdFLGlCQUM1QixXQXdPRjJFLDJCQXpPOEIzRTs7V0FFSHlCLGlCQUN6QixXQWdNRnVLLHdCQWpNMkJ2Szs7V0FFR0c7T0FDNUIsV0FBNEIsNEJBOEw5Qm9LLHlCQS9MOEJwSzs7V0FFRkMsaUJBQzFCLFdBNEtGdUgsNkJBN0s0QnZIOztXQUVIRSxpQkFDdkIsV0FzSkZpSSxzQkF2SnlCakk7O1dBRUdFLGlCQUMxQixXQStIRmlLLHlCQWhJNEJqSzs7V0FFRkU7T0FDeEIsV0FBd0IsNEJBYTFCZ0ssd0JBZDBCaEs7O1dBRUtFO09BQzdCO2VBQTZCLDRCQU0vQmlILDZCQVArQmpIOztXQUVERyxrQkFDNUIsWUFwU0Y2RixlQW1TOEI3Rjs7T0FHb0IsSUFEZmxCLGlCQUFKbUIsa0JBQ21CLE9BelNsRG5DLGdCQXdTbUNnQjtPQUNqQyxZQWlGRnFFLGVBbEYrQmxEOztHQUNzQztZQUVyRTZHLDRCQUdDcm1CO0lBQUssT0FpRk53bUIsaUJBM0VBTSxpQkFOQzltQjtHQUF1QztZQUV4Q2twQix1QkFFQ2xwQjtJQUFLLE9BNkVOd21CLGlCQTNFQU0saUJBRkM5bUI7R0FBdUM7WUFFeEM4bUI7SUFDSDtLQUdNcUM7S0FEQUM7S0FEQUM7S0FPNEIsT0E3VC9CaE0sZ0JBd1RHOEw7SUFFTCxXQU1FRyxxQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNpRTs7T0FHaEM7UUFGRDFNO1FBQUpWO1FBRUssTUFBQSw0QkE1WWpDdUUsZ0JBMFlnQzdEO09BQzlCLFdBOFdGSixTQUZBbVksZ0JBN1c0QnpZOztXQUdFRSxpQkFDNUIsV0FTRm1OLHFCQVY4Qm5OOztPQU14QjtRQUo2QnFCO1FBQUpZO1FBQUp4QjtRQUlyQixPQXZCTmlLLGdCQW1CbUNySjtRQUc3QixPQTdtQk44WCxxQkEwbUIyQjFZLE1BL1kzQjRELGVBK1krQnBDO09BQzdCLFdBb1VGQyxlQXJVMkJ6QjttQkFLR0UsaUJBQzVCLFdBNkNGMkYsZUE5QzhCM0Y7O0dBQ21CO1lBRWpEd007SUFFSDtLQUFpQ0M7S0FBM0JDO0tBR3lCLE1BQUEsNEJBRzVCQyx1QkFOOEJGO0lBQ2hDLFdBMVpFL0ksZUF5WkdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsTUFqVy9CeE0sZ0JBNFZHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUM4QjVOLGVBQzFCLFdBcERGNEssZ0JBbUQ0QjVLOztPQUcxQjtRQURzQkU7UUFFSDZELEtBRkc3RDtRQUVQcUIsS0FGT3JCO1FBRVhRLEtBRldSO1FBRWZTLE9BRmVUO1FBRzhCLE1BcGJ0RHFFLGVBbWJxQlI7UUFDVyxNQStDaEM4SixrQkFoRGlCdE07T0FEZixlQUNPWixNQXNRVDRLLGtCQXRRYTdLOztPQUdYO1FBRHlCRztRQUVOaU4sT0FGTWpOO1FBRVZzQyxPQUZVdEM7UUFFZHNCLE9BRmN0QjtRQUVsQnlCLE9BRmtCekI7UUFHMkIsTUF4YnREMEQsZUF1YnFCdUo7UUFDVyxNQTJDaENELGtCQTVDaUIxSztPQURmLGVBQ09iLE1BME1Ua0osa0JBMU1hcko7O09BR1g7UUFENkJNO1FBRWxCSixPQUZrQkk7UUFFdEJDLE9BRnNCRDtRQUdOLE1BNWJ6QjhCLGVBMmJhbEM7T0FEWCxlQTFiRmtDLGVBMmJTN0I7O1dBRXFCRSxpQkFDNUIsV0FuWEZzRyxlQWtYOEJ0RzttQkFFQUUsaUJBQzVCLFdBRUYwRCxlQUg4QjFEOztHQUNtQjtZQUVqRDBELGVBQ0MxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUFyWHpCd2xCLGFBb1hFdEosT0FBSVU7SUFDUixXQW9URUosa0JBcFRheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDcUQ7WUFFdkRzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FrQjJCLE1BeFo5QmxOLGdCQTJZRzZNO0tBV3FCLE1BQUEsV0FsQnZCRCxJQUtFRztLQVlxQixNQTRSeEI1TixrQkE1UnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBYnpDcXFCO2lCQVNNcnFCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BbU8xQnlxQixjQXBPYzdOO0tBQ1IsV0EzZE42RCxlQTBkVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENvTztJQU1MLFdBY0VQLGtCQXJCR1EsMEJBSUFKO0dBZUo7WUFFQ0oseUJBQ0YscUJBRWdEO1lBRTlDZCx5QkFFQ2pwQjtJQUFLLE9BRU51bUIsbUJBak5BOEIsa0JBK01Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU82QixNQWxiaEN2TixnQkE2YUdxTjtJQUVMLFdBQzJCLFdBUHhCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RDtJQUVIO0tBSU04RDtLQURBQztLQURBQztLQURBa0s7S0FTNkIsTUFqY2hDNVgsZ0JBMmJHd047S0FJMkIsTUFLOUJ0RCxtQkFYR3dEO0lBSUwsV0FvUEV2TyxTQUZBbVksZ0JBdlBHTSxpQkFFQW5LO0dBUUo7WUFFQ3ZELDBCQUMyRCxxQkFFbkI7WUFFeENwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVE0QixNQXJkL0IvTixnQkErY0c2TjtLQUtzQixNQXdOekJ1SixZQXpkQXBNLGtCQTJQRzhDO0lBSUw7WUErTkUzTyxrQkE5TnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjFDb3JCOzs7WUFHQUg7R0FPSjtZQUVDbEM7SUFFSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsTUFwZTlCdk8sZ0JBOGRHcU87S0FLcUIsTUFoUnhCckQsaUJBMFFHc0Q7SUFJTCxXQWdORW5QLGtCQS9Nc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekM0ckIscUJBR0FIO0dBT0o7WUFFQ3pGO0lBRUg7S0FLTWdHO0tBREFFO0tBREFDO0tBREFDO0tBREFDO0tBaUI4QixNQTVmakNoUCxnQkErZUcyTztLQVkyQixNQThEOUJ0RSxrQkEzRUd3RTtLQVlEO09BQUE7MEJBS0Z4Syw0QkFsQkd5SztpQkFRTW5zQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQStIMUJ5cUIsY0FoSWM3TjtLQUNSLFdBL2pCTjZELGVBOGpCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBUkNrUTtJQUtMLFdBZ01FNVAsU0FGQW1ZLGdCQXBNR3RJO0dBa0JKO1lBRUMzSztJQUVIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVU0QixNQTVnQi9CcFAsZ0JBcWdCR2lQO0tBS0QsTUFLRkksK0JBYkdELGNBQ0FEO0lBSUw7WUEwS0VoUSxrQkF6S3VDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjFDeXNCOztZQUVBRjs7R0FTSjtZQUVDRywrQkFBZ0Nuc0I7STtLQUtRLElBRlZxYyxlQUFKVixlQUVjLE1Bd0p4Q3VZLFlBcHZCQWhVLGdCQTBsQjhCN0Q7S0FDNUIsV0F1RUYrUCwyQkEzRWdDcHNCLEtBR04yYjs7UUFHQ0U7SUFDekIsV0EySkZJLFNBRkFtWSxnQkExSjJCdlk7O1lBRzNCMko7SUFFSDtLQVFNNkc7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0EwQjZCLE1BcmpCaEM5UCxnQkFpaUJHd1A7S0FtQjJCLE1Bd0g5QjRILFlBcHZCQWhVLGdCQXdtQkdxTTtLQW1CMEIsTUFNN0JwRixrQkExQkdxRjtLQW1CdUIsTUFZMUJLLGVBaENHSjtpQkFnQk1odEI7S0FDSCxJQUFZeWQsS0FEVHpkLE1BQ0s0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXhuQjFCeWdCLGVBdW5CYzdEO0tBQ1IsV0F4bkJONkQsZUF1bkJVdkUsVUFBUXVCO0lBQzRDO0lBSDVELFVBQUEsaUNBaEJDd1A7aUJBV01qdEI7S0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsTUE0RTFCeXFCLGNBN0VjN047S0FDUixXQWxuQk42RCxlQWluQlV2RTtJQUNpQztJQUh6QyxVQUFBLGlDQVhDZ1I7SUFRTDtZQTZJRTFRLGtCQTVJd0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FWM0NtdEI7Ozs7Ozs7WUFPQVA7R0FxQko7WUFFQ2xGLHlCQUNGLHFCQUU0QztZQUUxQzBGO0lBQ0Y7O1NBRStCbFI7S0FDM0IsV0FBMkIsNEJBSzdCbVIsOEJBTjZCblI7O1FBRURFO0lBQzFCLFdBQTBCLDRCQTRCNUJrUix3QkE3QjRCbFI7R0FFd0I7WUFFcERpUjtJQUdIO0tBS01FO0tBREFDO0tBREFDO0tBREFDO0tBREFFO0tBWTJCLE1BdmxCOUJ2USxnQkEra0JHa1E7S0FNb0IsTUF1RnZCa0gsWUFwdkJBaFUsZ0JBcXBCR2dOO0tBT0QsTUFNRmQsMkJBZkdpQixhQUNBRjtJQUtMO1lBZ0dFbFIsa0JBL0ZzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6QzR0Qjs7O1lBR0FKOztHQVVKO1lBRUNiLDJCQUEyQnBzQjtJLG1CQUlRLE9BaDNCbkN3YixnQkE0MkIyQnhiO1FBR0EyYjtJQUFNLE9BQUEsNEJBcnFCakN1RSxnQkFxcUIyQnZFOztZQUczQm9SO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXMkIsTUE5bUI5QjVRLGdCQXVtQkd3UTtLQUtxQixNQXByQnhCcE4sZUE2cUJHc047S0FNd0IsTUFNM0J0RyxrQkFiR3VHO0lBS0w7WUF3RUV4UixrQkF2RXNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUHpDaXVCOzs7WUFHQUg7O0dBU0o7WUFFQ3JHLHlCQUNGLHFCQUU4QztZQUU1Q2dEO0lBQWlFLHNCQUN0QyxpQkFDSSxrQkFDSjs7R0FBcUI7WUFFaEQzRTtJQUVIO0tBS01vSTtLQURBQztLQURBQztLQURBQztLQURBQztLQVU0QixNQXhvQi9CalIsZ0JBaW9CRzhRO2lCQU1vQ251QixHQUFLLE9BQUxBLEVBQU07SUFBcEI7S0FBQSxNQUFBLGlDQVB0Qm91QjtLQU1zQixNQTlzQnpCM04sZUF1c0JHNE47SUFLTDtZQTZDRTdSLGtCQTVDdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FQMUNzdUI7Ozs7WUFJQUo7R0FRSjtZQUVDNVA7SUFBcUQsOEJBQzVCOzJCQUNGcEMsZUFBTSxPQUFOQTtRQUNBRTtJQUFNLE9BQUEsOEJBQU5BO0dBQWM7WUFFckM2SCx3QkFDRixxQkFFd0M7WUFFdENsRCxXQUE0RC9nQixHQUFLLE9BQUxBLEVBQU07WUFFbEUyZCxxQkFBaUUscUJBRWpCO1lBRWhESCxjQUFjamQ7STs7V0FFcUJxYyxlQUFKVjtPQUFXLEtBQVBVLElBRXZCLFdBQXNCLG1CQUZIVjtpQkFBSVU7Ozs7O1lBR25CLFdBQXdCLG1CQUhUVjs7b0JBS2YsV0FBNEIsbUJBTGJBOzs7MkJBSWYsV0FBd0IsNkJBSlRBO09BTWpCLE9BdDdCZEgsZ0JBODZCY3hiOztXQVNhNmIsaUJBQU0sV0FBTkE7O1dBQ09pQyxpQkFBSnhCLGlCQUFXLFdBQVhBLE1BQUl3Qjs7V0FDREUsaUJBQUp4QjtPQUFXLE9BQVB3QjtpQkF6N0JqQ3hDLGdCQTg2QmN4YjtxQkFXZXdjOzs7WUFLN0IwWCxZQUNDeEs7SUFBSixZQUEyQjtRQUFZL047SUFBTSxXQUFLLFdBQTlDK04sSUFBbUMvTjtHQUFrQjtZQUV0RHlZLGVBQWtEMzBCLEdBQUssT0FBTEEsRUFBTTtZQUV4RHdjLFNBRUN5TjtJQUFKLElBQTRCMXBCLGdCQUFuQlk7SUFDUixXQUFvQixXQURqQjhvQixJQUFLOW9CLE1BQW1CWjtHQUNzQztZQUUvRG1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07WUFDckQwMEIsaUJBQTJCLHFCQUFzQztZQUVqRWdCLGtCQUFrQkMsU0FBUUM7SUFDWixJQUNXOWQsUUFEWCw0QkFsS2RpTyx1QkFpSzBCNlA7T0FBUkQsU0FFZ0IsT0FBVDdkO1NBQUFBLE9BQ1M7SUFVdEI7S0FUcUJ4VCxLQUZSd1Q7S0FFRzlYLElBRkg4WDtLQVduQnZYLFVBUkErMEIsS0FBQUE7S0FTQXpJLDJDQURBdHNCLFlBVHNCUDtJQWMxQjtnQkFkMEJBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BVXRCNnNCLGtCQVZzQjdzQjtZQUFLc0U7R0FjZTtZQUU1QzJYO0lBQzZELHVCQUN6Q0MsZUFBTSxXQWhzQjlCQyxlQWdzQndCRDtRQUNLVSxlQUFKUjtJQUN2QixXQUR1QkEsTUFHekJHLHdCQUg2Qks7R0FDMkI7WUFFeERMO0lBRUYsOEJBQzhCOzs7V0FDREwsZUFBTSxXQUFOQTs7V0FDRkUsaUJBQ3ZCLFdBQXNCLG1CQURDQTs7V0FFQ1MsaUJBQU0sV0FBTkE7bUJBQ0RFLGlCQUFNLFdBcEMvQjJYLFVBb0N5QjNYOztHQUEyQztZQUVwRXNYLFdBQVdyMEIsR0FBSSxPQUFBLDRCQWwzQmZ5ZSxXQWszQld6ZSxHQUF3Qjs7OztPQWhnQ25DdTFCO09BZUFGO09BRUF0WjtPQUlJaUI7T0FZSk87T0F3R0E4QztPQUtBNUI7T0FRQWY7T0FlQTRDO09BWUEwRDtPQTBDQXZEO09BWUFnRTtPQXVDQUk7T0FXQUQ7T0FVQXZIO09BR0ErSDtPQUtBSTtPQU9Bcko7T0FHQXVKO09BUUFHO09Ba0NBUztPQUlBRjtPQUlBSztPQVlBSTtPQTZCQTdFO09BUUFrRjtPQVlBSTtPQTRCQUU7T0FPQXRCO09BZUEzRTtPQVlBNEc7T0FvQkFFO09BWUFJO09BcUJBQztPQWNBakQ7T0FHQWtEO09BUUFHO09BOEJBekM7T0FLQTZDO09BSUFwQztPQVlBd0M7T0FlQUM7T0FRQUc7T0FhQUk7T0FzQkFwSDtPQUtBOEQ7T0E0QkF1RDtPQUtBZDtPQUlBMUM7T0FpQkFRO09BZUFRO09BS0FwQjtPQWdCQTRDO09BZUEvQztPQXVCQXRFO09BZ0JBZ0w7T0FTQTNHO09BaUNBMkI7T0FLQTBGO09BU0FDO09BbUJBVjtPQU1BVztPQWlCQTdGO09BS0FnRDtPQUtBM0U7T0FpQkF4SDtPQUtBMkY7T0FLQWxEO09BRUFwRDtPQUlBSDtPQWdCQWlYO09BR0FFO09BRUFuWTtPQUtBa0k7T0FDQWdRO09BRUFnQjtPQW9CSXpaO09BTUpNO09BVUE4WDtPQTMxQkEvVDtPQWhKSXREO09Bc01KeUQ7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O1lDM05Bb1Ysc0JBQXNCN3VCLE9BQU1xTztJQUM5QixXQUQ4QkE7O2FBQU5yTztlQUFBQTs7Ozs7Ozs7Ozs7aUNBTTJDd3VCLGFBQy9ELE9BRCtEQTs7OztJQUU1RCxPQVJ1Qm5nQjtHQVFwQjtZQUVKMkg7SUFDUDtLQUdNQztLQURBRTtLQURBQztLQU80QixPQW9RL0JDLGdCQXpRR0o7SUFFTCxXQU1FTSxxQkFWR0gsWUFDQUQ7R0FPSjtZQUVDSTtJQUNpRTs7V0FDdkNyQixlQUN4QixXQTQ2QkZNLFNBRkFtWSxnQkEzNkIwQnpZOztXQUVHRSxpQkFDM0IsV0F1NUJGb0IsY0F4NUI2QnBCOztPQUkwQjtRQUZ0QnFCO1FBQUpiO1FBQUpDO1FBRThCLE9BcEJuREcsZ0JBa0I2QlM7UUFFVixPQUFBLDRCQTJHdkJDLG9CQTdHNkJkO09BQzNCLFdBaTVCRmUsY0FsNUJ5QmQ7O1dBR0lFO09BQzNCLFdBQTJCLDRCQWlHN0IwQixXQWxHNkIxQjs7T0FPdkI7UUFMK0JrRDtRQUFKWjtRQUFKaEI7UUFBSkc7UUFLbkIsT0E1QkZ4QixnQkF1QmlDaUQ7UUFJL0IsT0FtSE5LLGFBdkhpQ2pCO1FBRzNCLE9BNDVCTm9WLFlBdDdCSXpYLGlCQXVCeUJxQjtPQUMzQixXQW80QkZDLGVBcjRCeUJFOztPQVNuQjtRQUh5QkQ7UUFBSkk7O21CQUlkM2U7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0FuQzFCZ2QsZ0JBa0NjSjtXQUNSLFdBeTNCVjBCLGVBMTNCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHlCcUM7T0FDN0IsV0E5QkV2QixnQkE2QnVCMkI7O09BU29CO1FBRGhCRDtRQUFKRTtRQUNvQixPQUFBLDRCQWlGL0NILFdBbEYrQkM7T0FDN0IsV0F0Q0UxQixnQkFxQ3VCNEI7O09BR2tCO1FBRGhCQztRQUFKQztRQUNvQixPQUFBLDRCQStFN0NMLFdBaEY2Qkk7T0FDM0IsV0F4Q0U3QixnQkF1Q3FCOEI7O1dBRUNFO09BQ3hCLFdBQXdCLDRCQTFDdEJoQyxpQkF5Q3NCZ0M7O09BSU87UUFGRUQ7UUFBSkc7UUFFRSxPQXk0QmpDdVYsWUF0N0JJelgsaUJBMkMrQitCO09BQ2pDLFdBKzRCRnZDLFNBRkFtWSxnQkE5NEIrQnpWOztXQUdFRCxpQkFBSkc7T0FDM0IsWUFEMkJBLE1BdzRCN0JxVixZQXQ3Qkl6WCxpQkE4QzZCaUM7O09BUzNCO1FBUDBCRTtRQUFKSTtRQU90QixPQSszQk5rVixZQXQ3Qkl6WCxpQkFnRDRCbUM7O21CQUduQm5mO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BckRuQ2dkLGdCQW9EY0o7V0FDUixXQXM0QlZKLFNBRkFtWSxnQkFyNEJjelk7VUFDNEM7T0FKeEQsWUFDSSxrQ0FGc0JxRDs7T0FTbUI7UUFEaEJEO1FBQUpFO1FBQ29CLE9BazRCL0NoRCxTQUZBbVksZ0JBajRCK0JyVjtPQUM3QixZQXpERXRDLGdCQXdEdUJ3Qzs7T0FJMEI7UUFGZkM7UUFBSkM7UUFBSkM7UUFFdUIsT0E1RGpEM0MsZ0JBMERrQ3lDO1FBRWIsT0ErM0J6QmpELFNBRkFtWSxnQkEvM0JrQ2pWO09BQ2hDLFlBM0RFMUMsZ0JBMEQwQjJDOztXQUdKRTtPQUN4QixZQUF3Qiw0QkE5RHRCN0MsaUJBNkRzQjZDOztPQUltQjtRQUZMSztRQUFKTjtRQUFKRztRQUVhLE9BcTNCN0MwVSxZQXQ3Qkl6WCxpQkErRG9Da0Q7UUFFZixPQWpFckJsRCxnQkErRGdDNEM7T0FDbEMsWUFoRUU1QyxnQkErRDRCK0M7O09BSWtCLElBRGhCRCxrQkFBSk0sa0JBQ29CLE9BbkU5Q3BELGdCQWtFOEI4QztPQUNoQyxZQW5FRTlDLGdCQWtFMEJvRDs7T0FHaUIsSUFEaEJELGtCQUFKSyxrQkFDb0IsT0FyRTNDeEQsZ0JBb0UyQm1EO09BQzdCLFlBckVFbkQsZ0JBb0V1QndEOztPQVFyQjtRQU5tQ1I7UUFBSmdLO1FBQUp0SjtRQUFKSDtRQUFKSztRQU1uQixPQTVFRjVELGdCQXNFcUNnRDtRQUtuQyxPQXVDTkssb0JBNUNxQzJKO1FBSS9CLE9BMUVGaE4sZ0JBc0U2QjBEO1FBRzNCLE9BekVGMUQsZ0JBc0V5QnVEO09BQzNCLFlBdUVGRCxhQXhFeUJNOztPQVEyQixJQURoQkQsa0JBQUpHLGtCQUNvQixPQXNIcERMLGVBdkhvQ0U7T0FDbEMsWUE5RUUzRCxnQkE2RTRCOEQ7O09BSXdCO1FBRnBCTTtRQUFKUDtRQUFKRztRQUU0QixPQW1IeERQLGVBckhvQ1c7UUFFWCxPQXEyQnpCcVQsWUFsdkJBaFUsZ0JBckhnQ0k7T0FDOUIsWUFoRkU3RCxnQkErRXdCZ0U7O1dBR0VDLGtCQUFKQztPQUN4QixZQW5GRWxFLGdCQWtGc0JrRSxRQUFJRDs7V0FFTkUsa0JBQ3RCLFlBczJCRjNFLFNBRkFtWSxnQkFyMkJ3QnhUOztPQUdrQyxJQUR0QkUsa0JBQUpDLGtCQUMwQixPQXZGdER0RSxnQkFzRmdDcUU7T0FDbEMsWUFvMkJGN0Usa0JBcDJCOEN4YyxHQUFLLE9BQUxBLEVBQU0sR0FEcEJzaEI7OztRQUVIRzs7bUJBR2pCemhCO1dBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRXdCLE9BN0ZoQ2dkLGdCQTRGYUo7V0FDUixXQTgxQlRKLGtCQTkxQndCeGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7VUFDMEM7T0FKckQsWUFDRSxrQ0FGeUJ1Rjs7T0FTdUI7UUFGYndQO1FBQUp6UDtRQUFKRztRQUVxQixPQWpHaEQzRSxnQkErRm1DaVU7UUFFUixPQStWL0IxUCxpQkFqV21DQztPQUNqQyxZQTIxQkZoRixrQkExMUJtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNMmhCOztXQUdKQyxrQkFDekIsWUFuR0U1RSxnQkFrR3VCNEU7O1dBRUZFLGtCQUFNLFlBcEczQjlFLGdCQW9HcUI4RTs7T0FFcUI7UUFEaEJEO1FBQUpFO1FBQ29CLE9BZzFCOUMwUyxZQWx2QkFoVSxnQkEvRjhCb0I7T0FDNUIsWUF0R0U3RSxnQkFxR3NCK0U7O1dBRUNHLGtCQUN6QixZQWtSRkYscUJBblIyQkU7O1dBRU1ELGtCQUFKRTtPQUMzQixZQUQyQkEsT0F6R3pCbkYsZ0JBeUc2QmlGOztXQUVSSSxrQkFBTSxZQXFWL0JkLGlCQXJWeUJjOztPQUcrQjtRQUZ0QnlTO1FBQUoxUztRQUFKRztRQUU4QixPQTlHcER2RixnQkE0RzhCOFg7UUFFTixPQTYwQjVCdFksU0FGQW1ZLGdCQTcwQjhCdlM7T0FDNUIsWUFzbUJGbUYsbUJBdm1CMEJoRjttQkFHSUUsa0JBQzVCLFlBeWhCRkMsZUExaEI4QkQ7O0dBQ21CO1lBRWpEcEMsMkJBQzZELHFCQUVuQjtZQUUxQzVCO0lBQ0g7S0FBc0RuRTtLQUF6QkM7S0FBdkJDO0tBSW1CLE9BNUhsQndDLGdCQXdIK0MxQztLQUczQixPQTJ6QnhCbWEsWUF0N0JJelgsaUJBd0hzQnpDO0lBQzVCLFdBcUJFK0YsYUF0Qkc5RjtHQUtKO1lBRUNrRDtJQUVIO0tBSU00RjtLQURBQztLQURBRTtLQURBQztLQVEyQixPQW1JOUJyRyxnQkF6SUdrRztLQUtxQixPQXpJcEJ2RyxnQkFtSUR5RztJQUlMLFdBT0VuRCxhQVpHb0Qsc0JBR0FKO0dBT0o7WUFFQ2hEO0lBQ0g7S0FHTXNEO0tBREFFO0tBREFDO0tBTzRCLE9Bc0gvQjFHLGdCQTNIR3VHO0lBRUwsV0FNRUksa0JBVkdELFlBQ0FEO0dBT0o7WUFFQ0U7SUFDRSw4QkFDeUI7OztXQUNIOUgsZUFDdEIsV0E2eEJGTSxrQkE3eEJ1Q3hjLEdBQUssT0FBTEEsRUFBTSxHQURyQmtjOztPQUdvQjtRQURiVTtRQUFKUjtRQUNpQixPQTJ4QjVDSSxrQkEzeEIwRHhjLEdBQUssT0FBTEEsRUFBTSxHQURqQzRjO09BQzdCLFdBbEJGMEQsYUFpQjJCbEU7O1dBRUVTLGlCQUMzQixXQXN3QkZXLGNBdndCNkJYOztPQUdtQixJQURkd0IsaUJBQUp0QixpQkFDa0IsT0Fvd0JoRFMsY0Fyd0JrQ2E7T0FDaEMsV0Fvd0JGYixjQXJ3QjhCVDs7V0FFSnlCO09BQ3hCLFdBQXdCLDRCQXhCMUI4QixjQXVCMEI5Qjs7T0FJTztRQUZFRDtRQUFKSTtRQUVFLE9BNndCakM4VixZQXh5QkFuVSxjQXlCbUMvQjtPQUNqQyxXQW14QkYvQixTQUZBbVksZ0JBbHhCK0JoVzs7V0FHRUQsaUJBQUpFO09BQzNCLFdBRDJCQSxNQTR3QjdCNlYsWUF4eUJBblUsY0E0QmlDNUI7O09BUzNCO1FBUDBCRztRQUFKQztRQU90QixPQWt1Qk5tRixpQkF6dUJnQ3BGOzttQkFHbkI3ZTtXQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUUwQixPQW5DdkNzZ0IsYUFrQ2tCMUQ7V0FDUixXQTB3QlZKLFNBRkFtWSxnQkF6d0Jjelk7VUFDeUM7T0FKckQsV0FDSSxrQ0FGc0I0Qzs7V0FRRkU7T0FDeEIsV0FBd0IsNEJBdkMxQnNCLGNBc0MwQnRCOztPQUdlLElBRGJELGlCQUFKRyxpQkFDaUIsT0F6Q3pDb0IsYUF3QzRCdkI7T0FDMUIsV0F6Q0Z1QixhQXdDd0JwQjs7T0FHeUIsSUFEYkQsaUJBQUpHLGlCQUNpQixPQVdqRHFCLGVBWm9DeEI7T0FDbEMsWUEzQ0ZxQixhQTBDZ0NsQjs7V0FFUEcsa0JBQ3ZCLFlBZ3dCRi9DLFNBRkFtWSxnQkEvdkJ5QnBWOztXQUVBQyxrQkFBTSxZQTlDL0JjLGFBOEN5QmQ7O1dBQ0VHO09BQ3pCLFlBNnZCRm5ELGtCQTd2QjBDeGMsR0FBSyxPQUFMQSxFQUFNLEdBRHJCMmY7O1dBRUdFLGtCQUM1QixZQWxERlMsYUFpRDhCVDttQkFFQUUsa0JBQzVCLFlBdWNGMkMsZUF4YzhCM0M7O0dBQ21CO1lBRWpEVTtJQUNIO0tBR000RDtLQURBRTtLQURBQztLQU80QixPQWdFL0JuSCxnQkFyRUdnSDtJQUVMLFdBTUVJLG9CQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQytELDhCQUNwQzs7O1dBQ0h2SSxlQUFNLFdBQU5BOztPQUVWO1FBRHFCdUI7UUFBSmI7UUFBSlI7UUFDckJwVixRQXVzQk5zWCxlQXhzQjJCbEM7UUFLckIsT0FyQk5xRSxlQWdCbUNoRDtPQUVqQztlQURJelc7ZUFqQk55WixlQTlNQW9WLHNCQStOTTd1QixPQUR5QjRWOzs7V0FNTEM7T0FDeEIsV0FBd0IsNEJBdkIxQjRELGdCQXNCMEI1RDs7T0FJTztRQUZEd0I7UUFBSnRCO1FBRUssT0FBQSw0QkExQmpDMEQsZ0JBd0JnQ3BDO09BQzlCLFdBOHRCRjdCLFNBRkFtWSxnQkE3dEI0QjVYOztPQVV0QjtRQVAwQndCO1FBQUpDO1FBT3RCLE9BK3FCTnlGLGlCQXRyQmdDMUY7O21CQUduQnZlO1dBQ0gsSUFBWXlkLEtBRFR6ZCxNQUNLNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFc0IsT0FoQ25DeWdCLGVBK0JzQmhEO1dBQ1osV0FESXZCLElBMENkbUIsZ0JBMUNrQlQ7VUFDbUM7T0FKbkQsV0FDSSxrQ0FGc0I0Qjs7T0FVSztRQUZGRTtRQUFKQztRQUVNLE9BQUEsNEJBckNqQzhCLGdCQW1DK0IvQjtPQUM3QixXQW10QkZsQyxTQUZBbVksZ0JBbHRCMkJoVzs7V0FHSUUsaUJBQUpEO09BQ3pCLFdBdkNGNkIsZUFzQzJCN0IsT0FBSUM7O09BTXpCO1FBSitCUTtRQUFKTjtRQUFKRDtRQUl2QjtVQXNzQk4yVjtxQkF0c0J1QnowQixHQUFLLE9BQUEsNEJBMHFCNUIrZ0IsWUExcUJ1Qi9nQixHQUEwQjtZQUpacWY7UUFHL0IsT0FzcUJONEUsaUJBenFCaUNsRjtPQUMvQjtlQUNJLDRCQXFCTjZGLGdCQXZCNkI5Rjs7OztPQU11QjtRQUR0Qkc7UUFBSkQ7UUFDMEIsT0E5Q3BEeUIsZUE2QzhCeEI7d0JBQ1VqZixHQUFLLE9BQUxBLEVBQU07T0FBNUMsV0FBd0Isa0NBREFnZjs7V0FFRUUsaUJBQzFCLFdBSUYyRixrQkFMNEIzRjttQkFFRUUsaUJBQzVCLFlBbVpGc0QsZUFwWjhCdEQ7O0dBQ21CO1lBRWpEeUYsa0JBRUM3a0I7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGM7a0JBSU1BO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRTBCLE9BNURqQ3lnQixlQTJEWTdEO0tBQ1IsV0EyckJKSixTQUZBbVksZ0JBMXJCUXpZO0lBQzJDO0lBSG5ELFdBQUEsa0NBRk1VO0lBQ1IsV0ErckJFSixTQUZBbVksZ0JBOXJCRXpZO0dBTUk7WUFFTjBJO0lBQ0Y7S0FNUTtNQUwyQjNFO01BQUp4QztNQUFKYjtNQUFKVjtNQUtmLE9BQUEsNEJBdEVOdUUsZ0JBaUVpQ1I7TUFJM0IsT0F3ckJOeVUsVUE1ckI2QmpYO0tBQzNCLFdBRG1CdkIsSUFRckJtQixnQkFSeUJUOztRQU1EUjtJQUFNLFdBdkU5QnFFLGVBdUV3QnJFO0dBQStDO1lBRXZFaUIsZ0JBQ0NyZDtJQUFLLE9BQUEsNEJBRU5vbEIsZ0JBRkNwbEI7R0FBOEI7WUFFL0JvbEIsZUFDQ3BsQjtJQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUV3QixPQUV6QndsQixhQUhNNUk7SUFDUixXQXdxQkVKLGtCQXhxQmF4YyxHQUFLLE9BQUxBLEVBQU0sR0FEakJrYztHQUN1QztZQUV6Q3NKO0lBQWdFOztXQUM1Q3RKLGVBQU0sV0FLMUJDLGVBTG9CRDs7V0FDQUUsaUJBQU0sV0FuRjFCcUUsZUFtRm9CckU7O09BRWtCO1FBRGJRO1FBQUpDO1FBQ2lCLE9BNnBCdEM0WCxZQXQ3Qkl6WCxpQkF3UnFCSjtPQUN2QixXQTNJRjBELGFBMElxQnpEOztHQUNnRDtZQUVyRVYsZUFDQ25jO0lBQUssT0FBQSw0QkFFTjBsQixxQkFGQzFsQjtHQUFtQztZQUVwQzBsQjtJQUVILElBQWdDQyxxQkFBMUJDO0lBQ0wsV0FLRUMseUJBTkdELFlBQTBCRDtHQUk5QjtZQUVDRTtJQUVGOztPQUVnRCxJQURoQmpKLGVBQUpWLGVBQ29CLE9BN0I5Q21CLGdCQTRCOEJUO09BQzVCLFdBMVNFSSxnQkF5U3NCZDs7T0FHbUI7UUFEZG1DO1FBQUpqQztRQUNrQixPQUFBLDRCQTdLN0NzQixvQkE0SytCVztPQUM3QixXQXduQkZWLGNBem5CMkJ2Qjs7V0FFR1MsaUJBQzVCLFdBc2xCRmlKLHVCQXZsQjhCako7O09BR1A7UUFERUU7UUFDRixRQW1wQnZCMlksa0JBcHBCeUIzWTtRQUNWNlk7UUFBVEQ7T0FDSixXQURJQSxTQUFTQzs7V0FFWXBYLGlCQUN6QixXQW9jRndILG9CQXJjMkJ4SDs7V0FFR0csaUJBQzVCLFdBeWRGK0MsMkJBMWQ4Qi9DOztXQUVIQyxpQkFDekIsV0EwSEZzSCxvQkEzSDJCdEg7O1dBRUdFO09BQzVCLFdBQTRCLDRCQXdIOUJvSCxxQkF6SDhCcEg7O1dBRUZFLGlCQUMxQixXQTZaRm1ILDZCQTlaNEJuSDs7V0FFSEUsaUJBQ3ZCLFdBdVlGNkgsc0JBeFl5QjdIOztXQUVDRTtPQUN4QixZQUF3Qiw0QkFjMUJnSCx3QkFmMEJoSDs7V0FFS0c7T0FDN0I7ZUFBNkIsNEJBd1AvQjhHLDZCQXpQK0I5Rzs7V0FFSEMsa0JBQzFCLFlBTUY4Ryx5QkFQNEI5Rzs7V0FFRUcsa0JBQzVCLFlBckRGeUYsZUFvRDhCekY7O09BR29CLElBRGZwQixpQkFBSnNCLGtCQUNtQixPQTFEbER4QyxnQkF5RG1Da0I7T0FDakMsWUFrVUZtRSxlQW5VK0I3Qzs7R0FDc0M7WUFFckV5Ryx5QkFFQ3RtQjtJQUFLLE9Bd1dOdW1CLG1CQW5QQWhGLGtCQXJIQ3ZoQjtHQUEwQztZQUUzQ29tQix1QkFFQ3BtQjtJQUFLLE9BK1ROd21CLGlCQTdUQUMsaUJBRkN6bUI7R0FBdUM7WUFFeEN5bUI7SUFDSDtLQUdNQztLQURBQztLQURBQztLQU8yQixPQTdFOUJ2SixnQkF3RUdxSjtJQUVMLFdBTUVHLHFCQVZHRCxXQUNBRDtHQU9KO1lBRUNFO0lBQ2lFOztPQUdoQztRQUZGaks7UUFBSlY7UUFFTSxPQUFBLDRCQTdKakN1RSxnQkEySitCN0Q7T0FDN0IsV0EybEJGSixTQUZBbVksZ0JBMWxCMkJ6WTs7V0FHRUUsaUJBQzNCLFdBdUJGNEYscUJBeEI2QjVGOztPQU92QjtRQUw4QjZEO1FBQUp4QztRQUFKWTtRQUFKeEI7UUFLbEIsT0F4Qk40SixnQkFtQm9DeEc7UUFJOUIsT0ExTk5LLGFBc05nQzdDO1FBRzFCLE9BK2tCTmdYLFlBdDdCSXpYLGlCQW9Xd0JxQjtPQUMxQixXQXVqQkZDLGVBeGpCd0J6Qjs7T0FTbEI7UUFId0IwQjtRQUFKeEI7O21CQUliL2M7V0FDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFaUIsT0FoWDFCZ2QsZ0JBK1djSjtXQUNSLFdBNGlCVjBCLGVBN2lCY3BDO1VBQ21DO1FBSDNDLE9BQUEsa0NBSHdCcUM7T0FDNUIsV0ExQkZrSSxnQkF5QjBCMUo7O09BVTZCO1FBRnZCc0M7UUFBSlg7UUFBSkY7UUFFK0IsT0FuQ3ZEaUksZ0JBaUNnQ3BIO1FBRVQsT0FBQSw0QkFyUHZCM0Isb0JBbVA0QmdCO09BQzFCLFdBaWpCRmYsY0FsakJ3QmE7O09BSTJCLElBRGhCSyxpQkFBSkYsaUJBQ29CLE9BNE1uRG1JLGdCQTdNbUNqSTtPQUNqQyxXQXJDRjRILGdCQW9DK0I5SDttQkFFRkMsaUJBQzNCLFdBaVJGOEQsZUFsUjZCOUQ7O0dBQ21CO1lBRWhEb0Q7SUFFSDtLQUFpQ2dGO0tBQTNCQztLQUd5QixPQUFBLDRCQUc1QkMsa0JBTjhCRjtJQUNoQyxXQS9PRTFHLGFBOE9HMkc7R0FJSjtZQUVDQztJQUNIO0tBR01DO0tBREFDO0tBREFDO0tBTzJCLE9BOUg5QmhLLGdCQXlIRzhKO0lBRUwsV0FNRUcsc0JBVkdELFdBQ0FEO0dBT0o7WUFFQ0U7SUFDbUU7O09BR25CO1FBRlo3SjtRQUFKYjtRQUFKVjtRQUVvQixPQW9pQmhEdVkscUJBcGlCaUV6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRm5DeWQ7UUFFUixPQWpFNUJnSixnQkErRGdDN0o7T0FDOUIsV0FrVUYySyxtQkFuVTRCckw7O09BSTFCO1FBRHFCRTtRQUVOaUQsT0FGTWpEO1FBRVZpQyxPQUZVakM7UUFFZFMsT0FGY1Q7UUFLaEIsT0FrQlBvTCxzQkFyQmlCbkk7UUFFVixPQWdkUG9JLGtCQWxkYXBKO09BRFgsZUF1aUJGN0Isa0JBcmlCcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEI2Yzs7T0FLUDtRQUR3QkU7UUFFVDBDLE9BRlMxQztRQUVid0IsT0FGYXhCO1FBRWpCeUIsT0FGaUJ6QjtRQUtuQixPQVlQeUssc0JBZmlCL0g7UUFFVixPQTJhUGlJLGtCQTdhYW5KO09BRFgsZUFpaUJGL0Isa0JBL2hCcUJ4YyxHQUFLLE9BQUxBLEVBQU0sR0FEbEJ3ZTs7T0FLUDtRQUQ0Qkc7UUFFakJELE9BRmlCQztRQUVyQkMsT0FGcUJEO1FBR0wsT0E5TnpCOEIsZUE2TmEvQjtPQURYLGVBNU5GK0IsZUE2TlM3Qjs7V0FFc0JFLGlCQUM3QixXQXBhRTlCLGdCQW1hMkI4Qjs7V0FFRkUsaUJBQzNCLFdBdEpGb0csZUFxSjZCcEc7bUJBRUFFLGlCQUMzQixXQWlPRndELGVBbE82QnhEOztHQUNtQjtZQUVoRHNJO0lBQ21FLHVCQUN4Q3RMLGVBQ3pCLFdBek9GdUUsZUF3TzJCdkU7SUFHeUIsSUFEbkJVLGVBQUpSLGlCQUN1QixPQS9haERZLGdCQThhNkJKO0lBQy9CLFdBb1NGMkssbUJBclM2Qm5MO0dBQzBDO1lBRXZFOEo7SUFFSDtLQUlNMEI7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsT0EvSzlCMUssZ0JBeUtHd0s7S0FLcUIsT0FLeEJ0RyxpQkFYR3VHO0lBSUw7WUFrZ0JFdEwsa0JBamdCc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekMrbkI7OztZQUdBSDtHQU9KO1lBRUNyRztJQUNIO0tBR015RztLQURBQztLQURBQztLQU80QixPQTVML0I3SyxnQkF1TEcySztJQUVMLFdBTUVHLHNCQVZHRCxZQUNBRDtHQU9KO1lBRUNFO0lBQ21FOztXQUN6Q2pNLGVBQ3hCLFdBNGVGTSxTQUZBbVksZ0JBM2UwQnpZOztXQUVJRSxpQkFDNUIsV0F0TEZELGVBcUw4QkM7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk4wRSxpQkFrQnFDOUQ7UUFHL0IsT0FpZU5nWCxZQXRkQXBNLGtCQWRpQ3pMO09BQy9CLFdBd2VGSixrQkF2ZW9CeGMsR0FBSyxPQUFMQSxFQUFNLEdBRkc2Yzs7T0FNbUIsSUFEakJ3QixpQkFBSnRCLGlCQUNxQixPQXhCaER3RSxpQkF1QitCbEQ7T0FDN0IsV0F4QkZrRCxpQkF1QjJCeEU7O09BRzBCLElBRGpCd0IsaUJBQUpDLGlCQUNxQixPQU1yRDZKLGlCQVBvQzlKO09BQ2xDLFdBMUJGZ0QsaUJBeUJnQy9DOztXQUVMRyxpQkFDekIsV0E1ZEUzQixnQkEyZHVCMkI7bUJBRUdDLGlCQUM1QixXQTJLRjhELGVBNUs4QjlEOztHQUNtQjtZQUVqRHlKO0lBQ0g7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsT0E1Ti9CbkwsZ0JBdU5HaUw7SUFFTCxXQU1FRyxzQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNtRTs7V0FDekN2TSxlQUN4QixXQTRjRk0sU0FGQW1ZLGdCQTNjMEJ6WTs7V0FFSUUsaUJBQzVCLFdBOEJGcUosZUEvQjhCcko7O09BTXhCO1FBSitCcUI7UUFBSmI7UUFBSkM7UUFJdkIsT0F0Qk53TCxpQkFrQnFDNUs7UUFHL0IsT0FpY05nWCxZQXRkQXBNLGtCQWtCaUN6TDtPQUMvQixXQXdjRkosa0JBdmNvQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZHNmM7O09BT0g7UUFGSXdCO1FBQUp0QjtRQUVBLE9BQUEsNEJBUTFCMkwsc0JBVjhCcks7T0FDNUIsV0F4QkZnSyxpQkF1QjBCdEw7O1dBR0N5QixpQkFDekIsV0EzREYrQyxpQkEwRDJCL0M7O1dBRUdHLGlCQUM1QixXQTRJRitELGVBN0k4Qi9EOztXQUVKQyxpQkFDeEIsV0E0YkZwQyxTQUZBbVksZ0JBM2IwQi9WOztHQUM0QjtZQUV0RDhKO0lBQ2lFOztPQUdoQyxJQUZGOUwsZUFBSlYsZUFFTSxPQWtTakM2SixzQkFwUytCbko7T0FDN0IsV0F1YkZKLFNBRkFtWSxnQkF0YjJCelk7O09BS007UUFGQW1DO1FBQUpqQztRQUVJLE9BbWJqQ0ksU0FGQW1ZLGdCQW5iaUN0VztPQUMvQixXQW9iRjdCLFNBRkFtWSxnQkFuYjZCdlk7O1dBR0VTLGlCQUM3QixXQTZSRmtKLHNCQTlSK0JsSjs7T0FJQTtRQUZJMEI7UUFBSnhCO1FBRUEsT0E4YS9CUCxTQUZBbVksZ0JBOWFtQ3BXO09BQ2pDLFdBK2FGL0Isa0JBOWFtQnhjLEdBQUssT0FBTEEsRUFBTSxHQUZNK2M7O0dBRTJCO1lBRTFEMEksZUFDQ3psQjtJQUFLLE9BQUEsNEJBRU4yb0IscUJBRkMzb0I7R0FBbUM7WUFFcEMyb0I7SUFFSCxJQUFnQ0MscUJBQTFCQztJQUNMLFdBS0VDLHlCQU5HRCxZQUEwQkQ7R0FJOUI7WUFFQ0U7SUFFRjs7V0FDNEI1TSxlQUN4QixXQXNXRjRKLHVCQXZXMEI1Sjs7T0FHSDtRQURFRTtRQUNGLFFBbWF2QnNaLGtCQXBheUJ0WjtRQUNWd1o7UUFBVEQ7T0FDSixXQURJQSxTQUFTQzs7V0FFWS9ZLGlCQUN6QixXQW9ORm1KLG9CQXJOMkJuSjs7V0FFR0UsaUJBQzVCLFdBeU9GMkUsMkJBMU84QjNFOztXQUVIeUIsaUJBQ3pCLFdBaU1GdUssd0JBbE0yQnZLOztXQUVHRztPQUM1QixXQUE0Qiw0QkErTDlCb0sseUJBaE04QnBLOztXQUVGQyxpQkFDMUIsV0E2S0Z1SCw2QkE5SzRCdkg7O1dBRUhFLGlCQUN2QixXQXVKRmlJLHNCQXhKeUJqSTs7V0FFR0UsaUJBQzFCLFdBZ0lGaUsseUJBakk0QmpLOztXQUVGRTtPQUN4QixXQUF3Qiw0QkFhMUJnSyx3QkFkMEJoSzs7V0FFS0U7T0FDN0I7ZUFBNkIsNEJBTS9CaUgsNkJBUCtCakg7O1dBRURHLGtCQUM1QixZQXJTRjZGLGVBb1M4QjdGOztPQUdvQixJQURmM0MsZUFBSjRDLGtCQUNtQixPQTFTbERuQyxnQkF5U21DVDtPQUNqQyxZQWtGRjhGLGVBbkYrQmxEOztHQUNzQztZQUVyRTZHLDRCQUdDcm1CO0lBQUssT0FrRk53bUIsaUJBNUVBTSxpQkFOQzltQjtHQUF1QztZQUV4Q2twQix1QkFFQ2xwQjtJQUFLLE9BOEVOd21CLGlCQTVFQU0saUJBRkM5bUI7R0FBdUM7WUFFeEM4bUI7SUFDSDtLQUdNcUM7S0FEQUM7S0FEQUM7S0FPNEIsT0E5VC9CaE0sZ0JBeVRHOEw7SUFFTCxXQU1FRyxxQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUNpRTs7T0FHaEM7UUFGRDFNO1FBQUpWO1FBRUssT0FBQSw0QkE5WWpDdUUsZ0JBNFlnQzdEO09BQzlCLFdBMFdGSixTQUZBbVksZ0JBelc0QnpZOztXQUdFRSxpQkFDNUIsV0FVRm1OLHFCQVg4Qm5OOztPQUdoQjtRQURxQnFCO1FBQUpZO1FBQUp4QjtRQUNyQjdWLFFBc1VOc1gsZUF2VTJCekI7UUFLckIsT0F4Qk5pSyxnQkFtQm1Dcko7T0FFakM7ZUFESXpXO2VBbFpOeVosZUE5TUFvVixzQkFnbUJNN3VCLE9BRHlCcVg7O21CQU1EdEIsaUJBQzVCLFdBNkNGMkYsZUE5QzhCM0Y7O0dBQ21CO1lBRWpEd007SUFFSDtLQUFpQ0M7S0FBM0JDO0tBR3lCLE9BQUEsNEJBRzVCQyx1QkFOOEJGO0lBQ2hDLFdBN1pFL0ksZUE0WkdnSjtHQUlKO1lBRUNDO0lBRUg7S0FHTUM7S0FEQUM7S0FEQUM7S0FPNEIsTUFuVy9CeE0sZ0JBOFZHc007SUFFTCxXQU1FRywyQkFWR0QsWUFDQUQ7R0FPSjtZQUVDRTtJQUVGOztXQUM4QjVOLGVBQzFCLFdBckRGNEssZ0JBb0Q0QjVLOztPQUcxQjtRQURzQkU7UUFFSDZELEtBRkc3RDtRQUVQcUIsS0FGT3JCO1FBRVhRLEtBRldSO1FBRWZTLE9BRmVUO1FBRzhCLE1BdmJ0RHFFLGVBc2JxQlI7UUFDVyxNQStDaEM4SixrQkFoRGlCdE07T0FEZixlQUNPWixNQTZPVDRLLGtCQTdPYTdLOztPQUdYO1FBRHlCRztRQUVOaU4sT0FGTWpOO1FBRVZzQyxPQUZVdEM7UUFFZHNCLE9BRmN0QjtRQUVsQnlCLE9BRmtCekI7UUFHMkIsTUEzYnREMEQsZUEwYnFCdUo7UUFDVyxNQTJDaENELGtCQTVDaUIxSztPQURmLGVBQ09iLE1BME1Ua0osa0JBMU1hcko7O09BR1g7UUFENkJNO1FBRWxCSixPQUZrQkk7UUFFdEJDLE9BRnNCRDtRQUdOLE1BL2J6QjhCLGVBOGJhbEM7T0FEWCxlQTdiRmtDLGVBOGJTN0I7O1dBRXFCRSxpQkFDNUIsV0FyWEZzRyxlQW9YOEJ0RzttQkFFQUUsaUJBQzVCLFdBRUYwRCxlQUg4QjFEOztHQUNtQjtZQUVqRDBELGVBQ0MxaUI7SUFDSCxJQUFRNGMsS0FETDVjLE1BQ0NrYyxLQUREbGMsTUFFd0IsTUF2WHpCd2xCLGFBc1hNNUk7SUFDUixXQStTRUosa0JBL1NheGMsR0FBSyxPQUFMQSxFQUFNLEdBRGpCa2M7R0FDdUM7WUFFekNzSyxpQkFLQ3lEO0lBQUo7S0FPTUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FrQjJCLE1BMVo5QmxOLGdCQTZZRzZNO0tBV3FCLE1BQUEsV0FsQnZCRCxJQUtFRztLQVlxQixNQXVSeEI1TixrQkF2UnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBYnpDcXFCO2lCQVNNcnFCO0tBQ0gsSUFBUTRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BNk4xQnlxQixjQTlOYzdOO0tBQ1IsV0E5ZE42RCxlQTZkVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBVENvTztJQU1MLFdBY0VQLGtCQXJCR1EsMEJBSUFKO0dBZUo7WUFFQ0oseUJBQ0YscUJBRWdEO1lBRTlDZCx5QkFFQ2pwQjtJQUFLLE9BRU51bUIsbUJBbk5BOEIsa0JBaU5Dcm9CO0dBQTBDO1lBRTNDdW1CLG1CQUtDMEQ7SUFBSjtLQUlNUztLQURBQztLQURBQztLQU82QixNQXBiaEN2TixnQkErYUdxTjtJQUVMLFdBQzJCLFdBUHhCVCxJQUVFVyxZQUNBRDtHQU9KO1lBRUM1RDtJQUVIO0tBSU04RDtLQURBQztLQURBQztLQURBa0s7S0FTNkIsTUFuY2hDNVgsZ0JBNmJHd047S0FJMkIsTUFLOUJ0RCxtQkFYR3dEO0lBSUwsV0ErT0V2TyxTQUZBbVksZ0JBbFBHTSxpQkFFQW5LO0dBUUo7WUFFQ3ZELDBCQUMyRCxxQkFFbkI7WUFFeENwQjtJQUdIO0tBSU04RTtLQURBQztLQURBQztLQURBQztLQVE0QixNQXZkL0IvTixnQkFpZEc2TjtLQUtzQixNQW1OekJ1SixZQXRkQXBNLGtCQTZQRzhDO0lBSUw7WUEwTkUzTyxrQkF6TnVDeGMsR0FBSyxPQUFMQSxFQUFNLEdBTjFDb3JCOzs7WUFHQUg7R0FPSjtZQUVDbEM7SUFFSDtLQUlNMEM7S0FEQUM7S0FEQUM7S0FEQUM7S0FRMkIsTUF0ZTlCdk8sZ0JBZ2VHcU87S0FLcUIsTUFsUnhCckQsaUJBNFFHc0Q7SUFJTCxXQTJNRW5QLGtCQTFNc0N4YyxHQUFLLE9BQUxBLEVBQU0sR0FOekM0ckIscUJBR0FIO0dBT0o7WUFFQ3pGO0lBRUg7S0FLTWdHO0tBREFFO0tBREFDO0tBREFDO0tBREFDO0tBaUI4QixNQTlmakNoUCxnQkFpZkcyTztLQVkyQixNQThEOUJ0RSxrQkEzRUd3RTtLQVlEO09BQUE7MEJBS0Z4Syw0QkFsQkd5SztpQkFRTW5zQjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXlIMUJ5cUIsY0ExSGM3TjtLQUNSLFdBbGtCTjZELGVBaWtCVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBUkNrUTtJQUtMLFdBMkxFNVAsU0FGQW1ZLGdCQS9MR3RJO0dBa0JKO1lBRUMzSztJQUVIO0tBSU00SztLQURBQztLQURBQztLQURBQztLQVM0QixNQTdnQi9CcFAsZ0JBdWdCR2lQO0tBSXNCLE1BS3pCSSwrQkFYR0Y7SUFJTDtZQXFLRWhRLGtCQXBLdUN4YyxHQUFLLE9BQUxBLEVBQU0sR0FOMUN5c0I7O1lBRUFGOztHQVFKO1lBRUNHO0lBRTBDO0tBSXBDLElBSHdCOVAsZUFBSlYsZUFHcEIsTUFtSk51WSxZQWx2QkFoVSxnQkE0bEI4QjdEO0tBQzVCLGVBQzZCLDRCQTlsQi9CNkQsZ0JBNGxCMEJ2RTs7UUFJQ0U7SUFDekIsV0FzSkZJLFNBRkFtWSxnQkFySjJCdlk7R0FDNEI7WUFFdkQySjtJQUVIO0tBUU02RztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQTBCNkIsTUF2akJoQzlQLGdCQW1pQkd3UDtLQW1CMkIsTUFtSDlCNEgsWUFsdkJBaFUsZ0JBMm1CR3FNO0tBbUIwQixNQU03QnBGLGtCQTFCR3FGO0tBbUJ1QixNQVkxQkssZUFoQ0dKO2lCQWdCTWh0QjtLQUNILElBQVl5ZCxLQURUemQsTUFDSzRjLEtBREw1YyxNQUNDa2MsS0FERGxjLE1BRWlCLE1BM25CMUJ5Z0IsZUEwbkJjN0Q7S0FDUixXQTNuQk42RCxlQTBuQlV2RSxVQUFRdUI7SUFDNEM7SUFINUQsVUFBQSxpQ0FoQkN3UDtpQkFXTWp0QjtLQUNILElBQVE0YyxLQURMNWMsTUFDQ2tjLEtBRERsYyxNQUVpQixNQXNFMUJ5cUIsY0F2RWM3TjtLQUNSLFdBcm5CTjZELGVBb25CVXZFO0lBQ2lDO0lBSHpDLFVBQUEsaUNBWENnUjtJQVFMO1lBd0lFMVEsa0JBdkl3Q3hjLEdBQUssT0FBTEEsRUFBTSxHQVYzQ210Qjs7Ozs7OztZQU9BUDtHQXFCSjtZQUVDbEYseUJBQ0YscUJBRTRDO1lBRTFDMEY7SUFDRjs7U0FFK0JsUjtLQUMzQixXQUEyQiw0QkEyQjdCbVIsOEJBNUI2Qm5SOztRQUVERTtJQUMxQixXQUEwQiw0QkFHNUJrUix3QkFKNEJsUjtHQUV3QjtZQUVwRGtSO0lBRUg7S0FLTU87S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FXMkIsTUF2bEI5QjVRLGdCQWdsQkd3UTtLQUtxQixNQTlwQnhCcE4sZUF1cEJHc047S0FNd0IsTUFNM0J0RyxrQkFiR3VHO0lBS0w7WUE0RkV4UixrQkEzRnNDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUHpDaXVCOzs7WUFHQUg7O0dBU0o7WUFFQ3JHLHlCQUNGLHFCQUU4QztZQUU1QzRGO0lBR0g7S0FLTUU7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUU7S0FZMkIsTUEvbUI5QnZRLGdCQXVtQkdrUTtLQU1vQixNQTREdkJrSCxZQWx2QkFoVSxnQkE4cUJHZ047S0FPRCxVQUF5Qiw0QkFyckIzQmhOLGdCQTZxQkdpTjtJQUtMO1lBcUVFbFIsa0JBcEVzQ3hjLEdBQUssT0FBTEEsRUFBTSxHQVB6QzR0Qjs7O1lBR0FKOztHQVVKO1lBRUMvQztJQUFpRSxzQkFDdEMsaUJBQ0ksa0JBQ0o7O0dBQXFCO1lBRWhEM0U7SUFFSDtLQUtNb0k7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FVNEIsTUFwb0IvQmpSLGdCQTZuQkc4UTtpQkFNb0NudUIsR0FBSyxPQUFMQSxFQUFNO0lBQXBCO0tBQUEsTUFBQSxpQ0FQdEJvdUI7S0FNc0IsTUEzc0J6QjNOLGVBb3NCRzROO0lBS0w7WUE4Q0U3UixrQkE3Q3VDeGMsR0FBSyxPQUFMQSxFQUFNLEdBUDFDc3VCOzs7O1lBSUFKO0dBUUo7WUFFQ2pLLHdCQUNGLHFCQUV3QztZQUV0Q2xELFdBQTREL2dCLEdBQUssT0FBTEEsRUFBTTtZQUVsRXNlLGVBQ0N0ZTtJQUNILE9BQUcscUJBREFBOztrQkFFRSx3QkFGRkE7O2dCQUdzQjs7a0JBSHRCQTs7Z0RBQUFBO29CQUFBQTs7R0FLcUI7WUFFdEIyZCxxQkFBaUUscUJBRWpCO1lBRWhESDtJQUFrRTs7V0FDMUN0QixlQUN0QixXQUE2Qix1QkFEUEE7O1dBRUNFLGlCQUFNLFdBQU5BOztXQUNPUSxlQUFKQztPQUMxQixXQUQwQkEsTUFVNUI0WCxxQkFUbUR6MEIsR0FBSyxPQUFMQSxFQUFNLEdBRHpCNGM7O1dBRU5HLGlCQUFNLFdBQU5BOztXQUNBeUI7T0FDeEIsV0FBNkIsNkJBRExBOztXQUVBRztPQUN4QixXQUE2Qiw2QkFETEE7O1dBRUlDO09BQzVCLFdBQTZCLGlDQUREQTs7R0FDa0M7WUFFaEU2VixZQUNDeEs7SUFBSixZQUEyQjtRQUFZL047SUFBTSxXQUFLLFdBQTlDK04sSUFBbUMvTjtHQUFrQjtZQUV0RHlZLGVBQWtEMzBCLEdBQUssT0FBTEEsRUFBTTtZQUV4RHdjLFNBRUN5TjtJQUFKLElBQTRCMXBCLGdCQUFuQlk7SUFDUixXQUFvQixXQURqQjhvQixJQUFLOW9CLE1BQW1CWjtHQUNzQztZQUUvRG1rQixjQUErQzFrQixHQUFLLE9BQUxBLEVBQU07WUFDckQwMEIsaUJBQTJCLHFCQUFzQztZQUVqRWdCLGtCQUFrQkU7SUFDcEIsU0FBSUU7U0FBV3JHO0tBQVcsT0FBQSwwQkFBWEE7O0lBQ1QsSUFNSnNHLFVBTkksNEJBOUpKaFEsdUJBNEprQjZQO09BUWxCRztTQUxLenhCLEtBS0x5eEIsWUFMQS8xQixJQUtBKzFCO0tBTGEsR0FBQSw0QkFGWEQsV0FFRjkxQjtNQUVJO2FBRkpBO3NCQUVxQkEsR0FBSyxXQUp4QjgxQixVQUltQjkxQixHQUFzQjtPQURyQzZzQixtQkFDRjtNQUVGOzs7bUJBSkY3c0IsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFDTTZzQixrQkFETjdzQjtlQUFLc0U7OztJQUtJLGNBQVR5eEI7R0FBdUM7WUFFbkM5WjtJQUM2RCx1QkFDekNDLGVBQU0sV0FwckI5QkMsZUFvckJ3QkQ7UUFDS1UsZUFBSlI7SUFDdkIsV0FEdUJBLE1BR3pCRyx3QkFINkJLO0dBQzJCO1lBRXhETDtJQUVGLDhCQUM4Qjs7O1dBQ0RMLGVBQU0sV0FBTkE7O1dBQ0hFLGlCQUFNLFdBQXVCLHVCQUE3QkE7O1dBQ0VTLGlCQUFNLFdBQU5BO21CQUNERSxpQkFBTSxXQXpCL0IyWCxVQXlCeUIzWDs7R0FBMkM7WUFFcEVzWCxXQUFXcjBCLEdBQUksT0FBQSw0QkFyMkJmeWUsV0FxMkJXemUsR0FBd0I7Ozs7T0F0K0JuQzYxQjtPQVVJN1k7T0FZSk87T0FzR0E4QztPQUtBNUI7T0FRQWY7T0FlQTRDO09BWUEwRDtPQTBDQXZEO09BWUFnRTtPQXdDQUk7T0FXQUQ7T0FVQXZIO09BR0ErSDtPQUtBSTtPQU1Bcko7T0FHQXVKO09BUUFHO09BbUNBUztPQUlBRjtPQUlBSztPQVlBSTtPQTZCQTdFO09BUUFrRjtPQVlBSTtPQTRCQUU7T0FPQXRCO09BZUEzRTtPQVlBNEc7T0FvQkFFO09BWUFJO09BcUJBQztPQWNBakQ7T0FHQWtEO09BUUFHO09BK0JBekM7T0FLQTZDO09BSUFwQztPQVlBd0M7T0FnQkFDO09BUUFHO09BYUFJO09Bc0JBcEg7T0FLQThEO09BNEJBdUQ7T0FLQWQ7T0FJQTFDO09BaUJBUTtPQWVBUTtPQUtBcEI7T0FnQkE0QztPQWVBL0M7T0F1QkF0RTtPQWVBZ0w7T0FVQTNHO09BaUNBMkI7T0FLQTBGO09BU0FFO09BaUJBN0Y7T0FLQTRGO09BbUJBNUM7T0FLQTNFO09BaUJBN0I7T0FLQWxEO09BRUF6QztPQVFBWDtPQUlBSDtPQWNBaVg7T0FHQUU7T0FFQW5ZO09BS0FrSTtPQUNBZ1E7T0FFQWdCO09BVUl6WjtPQU1KTTtPQVNBOFg7T0E5MEJBL1Q7T0E5SUl0RDtPQW9NSnlEOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7Ozs7O1lFcklBd1Ysc0NBQ2dCLE9BQUE7R0FBOEM7b0JBRDlEQTs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHQzVGUzs7O0lBQ1BDO0lBRE8sVUFDUEE7WUFJQUMsSUFBSUMsR0FBRUM7SUFBSSxLQUFKQSxHQUF5QjtRQUFZQyxJQUFyQ0Q7SUFBMEMsV0FBSyxXQUFqREQsR0FBdUNFO0dBQWU7R0FEaEQsSUFBQSxhQUNWSDs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDNEJZOzs7Ozs7Ozs7O0lBQWRJOzs7Ozs7O1lBS0VDLG1CQUFlRixjQUFIRyxjQUFBQSxPQUFHSDtZQWFqQkksaUJBQWlCQyxHQUFFUDtJQUFJLElBWnJCUSxVQU5GTCxhQWtCaUJJLElBWFRGLElBRE5HLFFBRUVDLGFBRElKLEdBQUFBO0lBRk5ELFFBQ0FJO0lBR0YsSUFDTSxJQUNKRSxJQURJLFdBUWFWO1VBSlBXO1NBQUFDLHdCQUFBRDtLQVRWUCxRQUdFSztLQVFBLE1BQUEsNEJBRlFHOztJQVRWUixRQUdFSztJQUlBLE9BREZDO0dBT3VEO1lBR3ZERyxRQUFTQyxRQUFPQyxHQUFJLFdBQUpBLEdBQVBELFFBQXFDO1lBQzlDRSxNQUFLRixRQUFPQztJQUFJLFdBQWdCLHFDQUFwQkEsSUFBUEQ7R0FBNEM7WUFDakRHLE1BQVFDLEtBQWNIO0lBQUksR0FBbEJHLFNBQVNDLE1BQVRELFFBQUFKLFNBQVNLLGNBQVRMO0lBQWtDLFdBQUEsNkJBQXBCQyxRQUFkRDtHQUFxRDtZQUM3RE0sTUFBUUYsS0FBY0g7SUFBSSxHQUFsQkcsU0FBU0MsTUFBVEQsUUFBQUosU0FBU0ssY0FBVEw7SUFBa0MsV0FBQSw2QkFBcEJDLFFBQWREO0dBQXFEO1lBQzdETyxVQUFZSCxLQUFjSDtJQUFJLEdBQWxCRyxTQUFTQyxNQUFURCxRQUFBSixTQUFTSyxjQUFUTDtJQUFrQyxXQUFBLGlDQUFwQkMsUUFBZEQ7R0FBeUQ7WUFDckVRLFFBQU9SLFFBQU9kLEdBQUksV0FBSkEsR0FBUGMsUUFBbUM7WUFDMUNTLE9BQUtDLEdBQUksV0FBSkEsR0FBaUI7WUFFdEJDLE9BQVFDLHFCQUFzQlIsS0FBb0JTO0lBQ3BELEdBRGdDVCxTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQTdCaEN6QjtJQThCQSxXQURvRHdCLEdBQXBCQyxLQUF0QkY7R0FDaUM7WUFJekNHLEdBQUtYLEtBQW9CWSxNQUFLQztJQUNoQyxHQURPYixTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQWxDUHpCO0lBbUNBLFdBRDJCMkIsTUFBS0MsU0FBekJIO0dBQ3FEO0dBRmxELGVBQ1JDO1lBS0FHLEtBQUtkLFdBQWtDZTtJQUN6QyxHQURPZixTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQXZDUHpCO0lBd0NBLGFBRHFDK0IsaUJBQVJDLFFBQVFELGdCQUFSQztJQUM3QixXQUR5Q0YsR0FBbENMLFFBQXNCTztHQU01QjtZQUVDQyxLQUFLSCxHQUFFSTtJQUErQixXQUFBLHVCQUFqQ0osVUFBRUk7SUFBSSxXQUFOSixNQUFBQSxNQUFBQTtHQUE0RDtZQUNqRUssSUFBS1YsS0FBS08sY0FBVyxPQVRyQkgsS0FTS0osS0FBS08sVUFBa0M7WUFDNUNJLE1BQUtYLEtBQUtPLE9BQU1FLEdBQUksT0FWcEJMLEtBVUtKLEtBQUtPLFdBQU1FLElBQStCO1lBQy9DRyxNQUFPWixLQUFLTyxPQUFNRSxHQUFFSSxHQUFFakIsR0FBSSxPQVgxQlEsS0FXT0osS0FBS08sV0FBTUUsR0FBRUksR0FBRWpCLElBQXlDO1lBQy9Ea0IsTUFBT2QsS0FBS08sT0FBTUUsR0FBSSxPQVp0QkwsS0FZT0osS0FBS08sV0FBTUUsSUFBaUM7WUFDbkRNLE9BQVFmLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0FiekJULEtBYVFKLEtBQUtPLFdBQU1FLEdBQUVJLElBQXVDO1lBQzVERyxPQUFTaEIsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQWQxQlQsS0FjU0osS0FBS08sV0FBTUUsR0FBRUksSUFBdUM7WUFDN0RJLFFBQVFqQixLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BZnpCVCxLQWVRSixLQUFLTyxXQUFNRSxHQUFFSSxJQUFzQztZQUMzREssTUFBT2xCLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0FoQnhCVCxLQWdCT0osS0FBS08sV0FBTUUsR0FBRUksSUFBc0M7WUFDMURNLFFBQVNuQixLQUFLTyxPQUFNRSxHQUFFSSxHQUFFakI7SUFBSSxPQWpCNUJRLEtBaUJTSixLQUFLTyxXQUFNRSxHQUFFSSxHQUFFakI7R0FBMkM7WUFDbkV3QixLQUFNcEIsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQWxCdkJULEtBa0JNSixLQUFLTyxXQUFNRSxHQUFFSSxJQUFxQztZQUN4RFEsVUFBU3JCLEtBQUtPLE9BQU1FLEdBQUVJO0lBQUksT0FuQjFCVCxLQW1CU0osS0FBS08sZUFBTUUsR0FBRUk7R0FBd0M7WUFDOURTLFVBQVd0QixLQUFLTyxPQUFNRSxHQUFJLE9BcEIxQkwsS0FvQldKLEtBQUtPLFlBQU1FLElBQXFDO1lBRTNEYyxXQUFXQztJQUNiLFdBRGFBO2tEQUN5QixPQUR6QkE7SUFDa0MsT0FMN0NKLFNBSVdJLGFBQUFBO0dBQzJEO1lBR3RFQyxvQkFBb0JDLFdBQVVGO0lBQ2hDLFNBQUlHLGVBQWVDLElBQUc1QixLQUFJMUI7S0FDckIsV0FBQSw0QkFEcUJBLEdBQVBzRDtLQUNkLGNBQ0QsbUNBRmtCNUIsV0FBSTFCO0lBRTJDO2tCQUV2Q0EsR0FBSyxPQUFMQSxLQUFVO0lBQXhCLElBQVp1RCxjQUFZLGtDQUxNSDthQU1kSSxLQUFLTjtLQUNYLFlBRFdBOztVQUNQTzs7OzthQUdTakQ7U0FUWDZDLGVBSUFFLGFBQ1NMLE1BSUUxQzthQUhUaUQsV0FHU2pEOzs7U0FJNEI7VUFEUGtEO1VBQVhDO1VBQVBDO1VBQ3lCLE9BUm5DSixLQU80QkU7VUFOOUJELFdBTVlHLE9BUFZKLEtBT2lCRzs7OztVQUVSRTtVQVJYSixXQVE2Qiw0QkFUM0JELE1BU1NLOzs7YUFJRUMsNkJBQUFBOzs7O2VBSHlCckM7V0FDakMsR0FBQSw0QkFEaUNBLEdBWHhDOEIsNkJBV3dDOUI7OztXQUdkc0M7c0JBQVhELFdBQ2EsNEJBZHhCTixNQWFzQk87O2FBWnhCTjs7OztVQWNrQjFEO1VBQUxpRTtVQWRiUCxXQWNxQyw0QkEyQnZDUSxtQkEzQmVELFFBQUtqRTs7OztVQUNLbUU7VUFBWEM7VUFmWlYsV0FlWVUsYUFDYSw0QkFqQnZCWCxNQWdCcUJVOzs7YUFFQTNDLG1CQUFYNkM7U0F2QmRmLGVBSUFFLGFBQ1NMLE1Ba0JnQjNCO2FBakJ2QmtDLFdBREVELEtBa0JVWSxjQUFXN0M7Ozs7VUFHYThDO1VBQU5DO1VBQWhCQztVQXBCZGQ7O2FBc0JLLDRCQVlQZSxnQkFkZ0JEO2FBQWdCRDthQUFNRDs7OztVQUdiSTtVQUFaQzswQkFFRjFFLEdBQUssT0EvQmhCcUQsZUFJQUUsYUFDU0wsTUEwQkVsRCxNQUE4QztTQURyRCxrQ0FEUzBFO2FBdkJYakIsV0F1QldpQixZQXhCVGxCLEtBd0JxQmlCOzs7OztVQUtFRTtVQUFYQzs7O2FBRVcsSUFBU0MsZ0JBQUhDO2FBQVcsV0FBWEEsR0EvQjdCdEIsS0ErQmdDcUI7WUFBc0I7VUE5QnhEcEI7b0JBNEJjbUIsYUFFRSxrQ0FGU0Q7Ozs7O1VBR05JO1VBQUhDO1VBL0JoQnZCLGdCQStCZ0J1QixLQUFHRDs7S0FFdkIsV0FqQ0l0QixNQURPUCxNQUFBQSxNQUFBQTtJQWtDZ0I7YUFDekJzQixlQUFlUztLQUNqQixZQURpQkE7OztPQUdNcEI7T0FBTlM7T0FBUFY7T0FGTnNCLGVBRU10QixPQUFPVSxNQUFpQyw0QkF0QzVDZCxNQXNDaUJLOztVQUNWWCxjQUhUZ0MsZUFwQ0UxQixLQXVDT047S0FFYixXQUxJZ0MsVUFEYUQsVUFBQUE7SUFNTTthQUNyQmhCLGtCQUFrQmdCO0tBQ3BCLFlBRG9CQTs7VUFHSC9CLGNBQVBVLGtCQUZOdUIsZUFFTXZCLE9BN0NKSixLQTZDV047O1VBQ0prQyxnQkFIVEQsZUEzQ0UzQixLQThDTzRCO0tBRWIsV0FMSUQsVUFEZ0JGLFVBQUFBO0lBTUc7SUFFekIsT0FsRFF6QixLQU53Qk47R0F3RDFCO0dBbkZHOzs7T0FDUHBCO09BUUFJO09BQ0FFO09BQ0FDO09BQ0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BSUFFO1lBNERBa0MsS0FBS3JFLFVBQWtDZTtJQUN6QyxHQURPZixTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQTdIUHpCO0lBOEhBLFlBRHFDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUM3QixXQUR5Q0YsR0FBbENMLFFBQXNCTztHQU01QjtZQUVDcUQsT0FBS3ZELEdBQUVJO0lBQStCLFVBQUEsdUJBQWpDSixVQUFFSTtJQUFJLFdBQU5KLE1BQUFBLE1BQUFBO0dBQTREO1lBQ2pFd0QsTUFBSzdELEtBQUtPLGNBQVcsT0FUckJvRCxLQVNLM0QsS0FBS08sVUFBa0M7WUFDNUN1RCxNQUFLOUQsS0FBS08sT0FBTUUsR0FBSSxPQVZwQmtELEtBVUszRCxLQUFLTyxXQUFNRSxJQUErQjtZQUMvQ3NELFFBQU8vRCxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BWHhCOEMsS0FXTzNELEtBQUtPLFdBQU1FLEdBQUVJLElBQXNDO1lBQzFEbUQsU0FBVWhFLEtBQUtPLE9BQU1FLEdBQUksT0FaekJrRCxLQVlVM0QsS0FBS08sV0FBTUUsSUFBb0M7WUFDekR3RCxTQUFVakUsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQWIzQjhDLEtBYVUzRCxLQUFLTyxXQUFNRSxHQUFFSSxJQUF5QztZQUNoRXFELFFBQU9sRSxLQUFLTyxPQUFNRSxHQUFJLE9BZHRCa0QsS0FjTzNELEtBQUtPLFdBQU1FLElBQWlDO1lBRW5EMEQsVUFBV25FLEtBQUtPLE9BQU1FLEdBQUVJO2lCQUN5QkEsR0FBSyxjQUFMQSxHQUFZO0lBQWhELE9BakJiOEM7YUFnQlczRCxLQUFLTyxXQUFNRSxHQUNXLDBDQURUSTtHQUMwQztZQUVsRXVELFVBQVNwRSxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BbkIxQjhDLEtBbUJTM0QsS0FBS08sV0FBTUUsR0FBRUksSUFBd0M7WUFDOUR3RCxPQUFRckUsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQXBCekI4QyxLQW9CUTNELEtBQUtPLFdBQU1FLEdBQUVJLElBQXVDO1lBQzVEeUQsTUFBT3RFLEtBQUtPLE9BQU1FLEdBQUksT0FyQnRCa0QsS0FxQk8zRCxLQUFLTyxXQUFNRSxJQUFpQztZQUNuRDhELEdBQUt2RSxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BdEJ0QjhDLEtBc0JLM0QsS0FBS08sV0FBTUUsR0FBRUksSUFBbUM7WUFDckQyRCxXQUFheEUsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQXZCOUI4QyxLQXVCYTNELEtBQUtPLFlBQU1FLEdBQUVJLElBQTJDO1lBQ3JFNEQsS0FBT3pFLEtBQUtPLE9BQU1FLEdBQUksT0F4QnRCa0QsS0F3Qk8zRCxLQUFLTyxZQUFNRSxJQUFnQztZQUNsRGlFLEtBQU8xRSxLQUFLTyxPQUFNRSxHQUFJLE9BekJ0QmtELEtBeUJPM0QsS0FBS08sWUFBTUUsSUFBZ0M7WUFDbERrRSxPQUFRM0UsS0FBS08sT0FBTUUsR0FBSSxPQTFCdkJrRCxLQTBCUTNELEtBQUtPLFlBQU1FLElBQWtDO1lBQ3JEbUUsS0FBTzVFLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0EzQnhCOEMsS0EyQk8zRCxLQUFLTyxZQUFNRSxHQUFFSSxJQUFxQztZQUN6RGdFLFVBQVk3RSxLQUFLTyxPQUFNRSxHQUFJLE9BNUIzQmtELEtBNEJZM0QsS0FBS08sWUFBTUUsSUFBcUM7WUFDNURxRSxZQUFXOUUsS0FBS08sT0FBTUUsR0FBSSxPQTdCMUJrRCxLQTZCVzNELEtBQUtPLFlBQU1FLElBQXFDO0dBOUJwRDs7O09BQ1BrRDtPQVFBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztZQUlBQyxLQUFLekYsVUFBa0NlO0lBQ3pDLEdBRE9mLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BOUpQekI7SUErSkEsWUFEcUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBQzdCLFdBRHlDRixHQUFsQ0wsUUFBc0JPO0dBTTVCO1lBRUN5RSxPQUFLM0UsR0FBRUk7SUFBK0IsVUFBQSx1QkFBakNKLFVBQUVJO0lBQUksV0FBTkosTUFBQUEsTUFBQUE7R0FBNEQ7WUFDakU0RSxNQUFPakYsS0FBS08sT0FBTUUsR0FBSSxPQVR0QnNFLEtBU08vRSxLQUFLTyxXQUFNRSxJQUFpQztZQUNuRHlFLFdBQVVsRixLQUFLTyxPQUFNRSxHQUFJLE9BVnpCc0UsS0FVVS9FLEtBQUtPLFdBQU1FLElBQW9DO1lBQ3pEMEUsTUFBTW5GLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUVqQixHQUFJLE9BWHpCbUYsS0FXTS9FLEtBQUtPLFdBQU1FLEdBQUVJLEdBQUVqQixJQUF1QztZQUM1RHdGLElBQU1wRixLQUFLTyxPQUFNRSxHQUFFSSxHQUFFakIsR0FBRVM7SUFBSSxPQVozQjBFLEtBWU0vRSxLQUFLTyxXQUFNRSxHQUFFSSxHQUFFakIsR0FBRVM7R0FBMEM7WUFDakVnRixXQUFXckYsS0FBS08sT0FBTUUsR0FBSSxPQWIxQnNFLEtBYVcvRSxLQUFLTyxXQUFNRSxJQUFvQztZQUMxRDZFLE1BQU90RixLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BZHhCa0UsS0FjTy9FLEtBQUtPLFdBQU1FLEdBQUVJLElBQXNDO1lBRTFEMEUsTUFBTXZGLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0FoQnZCa0UsS0FnQk0vRSxLQUFLTyxXQUFNRSxHQUFFSSxJQUFvQztZQUN2RDJFLFFBQU94RixLQUFLTyxPQUFNRSxHQUFJLE9BakJ0QnNFLEtBaUJPL0UsS0FBS08sV0FBTUUsSUFBaUM7WUFDbkRnRixZQUFXekYsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQWxCNUJrRSxLQWtCVy9FLEtBQUtPLFdBQU1FLEdBQUVJLElBQTBDO1lBQ2xFNkUsVUFBUzFGLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0FuQjFCa0UsS0FtQlMvRSxLQUFLTyxZQUFNRSxHQUFFSSxJQUF3QztZQUM5RDhFLFNBQVEzRixLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BcEJ6QmtFLEtBb0JRL0UsS0FBS08sWUFBTUUsR0FBRUksSUFBdUM7WUFDNUQwQyxNQUFPdkQsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQXJCeEJrRSxLQXFCTy9FLEtBQUtPLFlBQU1FLEdBQUVJLElBQXNDO1lBQzFEK0UsU0FBVTVGLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUVqQjtJQUFJLE9BdEI3Qm1GLEtBc0JVL0UsS0FBS08sWUFBTUUsR0FBRUksR0FBRWpCO0dBQTRDO1lBQ3JFaUcsUUFBTzdGLEtBQUtPLE9BQU1FLEdBQUksT0F2QnRCc0UsS0F1Qk8vRSxLQUFLTyxZQUFNRSxJQUFpQztZQUNuRHFGLFdBQVk5RixLQUFLTyxPQUFNRSxHQUFFSSxHQUFFakIsR0FBSSxPQXhCL0JtRixLQXdCWS9FLEtBQUtPLFlBQU1FLEdBQUVJLEdBQUVqQjtHQUE4QztZQUN6RW1HLFNBQVUvRixLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BekIzQmtFLEtBeUJVL0UsS0FBS08sWUFBTUUsR0FBRUksSUFBeUM7WUFDaEVtRixRQUFRaEcsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQTFCekJrRSxLQTBCUS9FLEtBQUtPLFlBQU1FLEdBQUVJLElBQXNDO1lBQzNEb0YsTUFBTWpHLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUVqQixHQUFFUyxHQUFFckI7SUFBSSxPQTNCN0IrRixLQTJCTS9FLEtBQUtPLFlBQU1FLEdBQUVJLEdBQUVqQixHQUFFUyxHQUFFckI7R0FBNkM7WUFDdEVrSCxhQUFhbEcsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQTVCOUJrRSxLQTRCYS9FLEtBQUtPLFlBQU1FLEdBQUVJO0dBQTJDO1lBQ3JFc0YsT0FBUW5HLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUVqQjtJQUFJLE9BN0IzQm1GLEtBNkJRL0UsS0FBS08sWUFBTUUsR0FBRUksR0FBRWpCO0dBQTBDO1lBQ2pFd0csS0FBTXBHLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0E5QnZCa0UsS0E4Qk0vRSxLQUFLTyxZQUFNRSxHQUFFSSxJQUFxQztZQUN4RHdGLE1BQU1yRyxLQUFLTyxPQUFNRSxHQUFJLE9BL0JyQnNFLEtBK0JNL0UsS0FBS08sWUFBTUUsSUFBK0I7WUFDaEQ2RixXQUFZdEcsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQWhDN0JrRSxLQWdDWS9FLEtBQUtPLFlBQU1FLEdBQUVJLElBQTJDO1lBQ3BFMEYsU0FBVXZHLEtBQUtPLE9BQU1FLEdBQUksT0FqQ3pCc0UsS0FpQ1UvRSxLQUFLTyxZQUFNRSxJQUFvQztZQUN6RCtGLFVBQVd4RyxLQUFLTyxPQUFNRSxHQUFFSSxHQUFFakI7SUFBSSxPQWxDOUJtRixLQWtDVy9FLEtBQUtPLFlBQU1FLEdBQUVJLEdBQUVqQjtHQUE2QztZQUN2RTZHLGFBQWN6RyxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BbkMvQmtFLEtBbUNjL0UsS0FBS08sWUFBTUUsR0FBRUk7R0FBNkM7WUFDeEU2RixPQUFTMUcsS0FBS08sT0FBTUUsR0FBSSxPQXBDeEJzRSxLQW9DUy9FLEtBQUtPLFlBQU1FLElBQWtDO1lBQ3REa0csT0FBTzNHLEtBQUtPLE9BQU1FLEdBQUksT0FyQ3RCc0UsS0FxQ08vRSxLQUFLTyxZQUFNRSxJQUFnQztZQUNsRG1HLE9BQU01RyxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BdEN2QmtFLEtBc0NNL0UsS0FBS08sWUFBTUUsR0FBRUksSUFBcUM7WUFDeERnRyxTQUFTN0csS0FBS08sT0FBTUUsR0FBSSxPQXZDeEJzRSxLQXVDUy9FLEtBQUtPLFlBQU1FLElBQWtDO1lBQ3REcUcsUUFBUzlHLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0F4QzFCa0UsS0F3Q1MvRSxLQUFLTyxZQUFNRSxHQUFFSSxJQUF3QztZQUM5RGtHLEtBQU0vRyxLQUFLTyxPQUFNRSxHQUFJLE9BekNyQnNFLEtBeUNNL0UsS0FBS08sWUFBTUUsSUFBZ0M7WUFDakR1RyxPQUFPaEgsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQTFDeEJrRSxLQTBDTy9FLEtBQUtPLFlBQU1FLEdBQUVJLElBQXFDO1lBRXpEb0csTUFBT2pILEtBQUtPLE9BQU00RSxPQUFLK0IsTUFBS0M7SUFDOUIsT0E3Q0VwQyxLQTRDTy9FLEtBQUtPLGdCQUFNNEUsT0FBSytCLE1BQUtDO0dBQ2tCO1lBRTlDQyxZQUFXcEgsS0FBS08sT0FBTUUsR0FBSSxPQS9DMUJzRSxLQStDVy9FLEtBQUtPLFlBQU1FLElBQXFDO1lBQzNENEcsWUFBYXJILEtBQUtPLGNBQVcsT0FoRDdCd0UsS0FnRGEvRSxLQUFLTyxVQUEwQztZQUM1RCtHLE9BQUtDLEtBQUtDLE9BQU1DLEtBQU0sV0FBakJGLEtBQUtDLE9BQU1DLEtBQXNEO1lBRXRFQyxXQUFXQyxJQUFHQyxLQUFJQyxLQUFJN0gsS0FDeEIsV0FEYTJILElBQUdDLEtBQUlDLEtBQUk3SCxLQUN3QztZQUk5RDhILEtBQUt4SSxVQUFrQ2U7SUFDekMsR0FET2YsU0FBTUMsTUFBTkQsUUFBQVUsTUFBTVQsY0FBTlMsTUF0TlB6QjtJQXVOQSxZQURxQytCLGdCQUFSQyxRQUFRRCxnQkFBUkM7SUFDN0IsV0FEeUNGLEdBQWxDTCxLQUFzQk87R0FDNkI7WUFFeER3SCxPQUFLMUgsR0FBRUk7SUFBK0IsVUFBQSx1QkFBakNKLFVBQUVJO0lBQUksV0FBTkosTUFBQUE7R0FBNEQ7WUFDakUySCxRQUFPaEksS0FBS08sT0FBTUUsR0FBSSxPQUp0QnFILEtBSU85SCxLQUFLTyxXQUFNRSxJQUFpQztZQUNuRHdILFFBQU9qSSxLQUFLTyxPQUFNRSxHQUFJLE9BTHRCcUgsS0FLTzlILEtBQUtPLFdBQU1FLElBQWlDO1lBQ25EeUgsVUFBV2xJLEtBQUtPLE9BQU1FLEdBQUksT0FOMUJxSCxLQU1XOUgsS0FBS08sV0FBTUUsSUFBcUM7WUFDM0QwSCxRQUFVbkksS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQVAzQmlILEtBT1U5SCxLQUFLTyxXQUFNRSxHQUFFSSxJQUF3QztZQUMvRHVILE9BQU9wSSxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BUnhCaUgsS0FRTzlILEtBQUtPLFdBQU1FLEdBQUVJLElBQXFDO1lBQ3pEd0gsU0FBU3JJLEtBQUtPLE9BQU1FLEdBQUksT0FUeEJxSCxLQVNTOUgsS0FBS08sV0FBTUUsSUFBa0M7WUFDdEQ2SCxZQUFXdEksS0FBS08sT0FBTUUsR0FBSSxPQVYxQnFILEtBVVc5SCxLQUFLTyxXQUFNRSxJQUFxQztHQVhwRDs7O09BQ1BxSDtPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztZQW5EQUMsTUFBUXZJLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0FmekJrRSxLQWVRL0UsS0FBS08sV0FBTUUsR0FBRUksSUFBc0M7WUF1RDNEMkgsS0FBS2xKLFVBQWtDZTtJQUN6QyxHQURPZixTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQXBPUHpCO0lBcU9BLFlBRHFDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUM3QixXQUR5Q0YsR0FBbENMLEtBQXNCTztHQUM2QjtZQUV4RGtJLE9BQUtwSSxHQUFFSTtJQUErQixVQUFBLHVCQUFqQ0osVUFBRUk7SUFBSSxXQUFOSixNQUFBQTtHQUE0RDtZQUNqRXFJLFFBQU8xSSxLQUFLTyxPQUFNekIsR0FBSSxPQUp0QjBKLEtBSU94SSxLQUFLTyxXQUFNekIsSUFBaUM7WUFDbkQ2SixVQUFXM0ksS0FBS08sT0FBTXpCLEdBQUksT0FMMUIwSixLQUtXeEksS0FBS08sV0FBTXpCLElBQXFDO1lBQzNEOEosVUFBVTVJLEtBQUtPLE9BQU04QyxLQUFJOEQsTUFBTyxPQU5oQ3FCLEtBTVV4SSxLQUFLTyxXQUFNOEMsS0FBSThEO0dBQWdEO1lBQ3pFMEIsUUFBTzdJLEtBQUtPLE9BQU11SSxJQUFHQyxJQUFLLE9BUDFCUCxLQU9PeEksS0FBS08sV0FBTXVJLElBQUdDLEtBQXlDO1lBQzlEQyxhQUFhaEosS0FBS08sT0FBTTBJLEdBQUVDLEtBQU0sT0FSaENWLEtBUWF4SSxLQUFLTyxXQUFNMEksR0FBRUM7R0FBK0M7WUFDekVDLFNBQVFuSixLQUFLTyxPQUFNdkIsR0FBSSxPQVR2QndKLEtBU1F4SSxLQUFLTyxXQUFNdkIsSUFBa0M7WUFDckRvSyxZQUFXcEosS0FBS08sT0FBTUUsR0FBSSxPQVYxQitILEtBVVd4SSxLQUFLTyxXQUFNRSxJQUFxQztHQVhwRDs7O09BQ1ArSDtPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBRztPQUNBRztPQUNBQztZQUlBQyxLQUFLL0osS0FBb0JlO0lBQUksR0FBeEJmLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BbFBQekI7SUFrUCtCLFdBQUo4QixHQUFwQkw7R0FBeUQ7WUFDOURzSixNQUFPdEosS0FBSVMsR0FBSSxPQURmNEksS0FDT3JKLFNBQUlTLElBQTBCO1lBQ3JDOEksT0FBT3ZKLEtBQUl3SixVQUFTL0ksR0FBSSxPQUZ4QjRJLEtBRU9ySixTQUFJd0osVUFBUy9JLElBQXFDO1lBQ3pEZ0osV0FBWXpKLEtBQUlTLEdBQUksT0FIcEI0SSxLQUdZckosU0FBSVMsSUFBOEI7WUFDOUNpSixlQUFnQjFKLEtBQUlTLEdBQUksT0FKeEI0SSxLQUlnQnJKLFNBQUlTLElBQTJCO1lBQy9Da0osWUFBWTNKLEtBQUlTLEdBQUksT0FMcEI0SSxLQUtZckosU0FBSVMsSUFBOEI7WUFDOUNtSixPQUFTNUosS0FBSVMsR0FBSSxPQU5qQjRJLEtBTVNySixTQUFJUyxJQUEyQjtZQUN4Q29KLFVBQVc3SixLQUFJUyxHQUFJLE9BUG5CNEksS0FPV3JKLFNBQUlTLElBQTZCO1lBQzVDcUosV0FBWTlKLEtBQUlTLEdBQUksT0FScEI0SSxLQVFZckosU0FBSVMsSUFBOEI7WUFDOUNzSixRQUFTL0osS0FBSVMsR0FBSSxPQVRqQjRJLEtBU1NySixTQUFJUyxJQUE0QjtZQUN6Q3VKLE9BQU9oSyxLQUFJUyxHQUFJLE9BVmY0SSxLQVVPckosVUFBSVMsSUFBeUI7WUFDcEN3SixRQUFVakssS0FBSVMsR0FBSSxPQVhsQjRJLEtBV1VySixVQUFJUyxJQUE0QjtZQUMxQ3lKLFFBQVFsSyxLQUFJUyxHQUFJLE9BWmhCNEksS0FZUXJKLFVBQUlTLElBQTBCO1lBQ3RDMEosV0FBWW5LLEtBQUlTLEdBQUksT0FicEI0SSxLQWFZckosVUFBSVMsSUFBK0I7WUFDL0MySixZQUFXcEssS0FBTVYsS0FBWW1CO0lBQUksR0FBaEJuQixTQUFRQyxNQUFSRCxRQUFBaUIsUUFBUWhCLGNBQVJnQjtJQUF3QixPQWR6QzhJLEtBY1dySixVQUFrQlMsR0FBWkY7R0FBbUQ7WUFDcEU4SixVQUFXckssS0FBSVMsR0FBSSxPQWZuQjRJLEtBZVdySixVQUFJUyxJQUE4QjtHQWhCdEM7OztPQUNQNEk7T0FDQUM7T0FDQUM7T0FDQUU7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7WUFJQUMsS0FBS2hMLEtBQW9CZTtJQUFJLEdBQXhCZixTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQXJRUHpCO0lBcVErQixXQUFKOEIsR0FBcEJMO0dBQXlEO1lBQzlEdUssT0FBTXZLLEtBQU1WLEtBQVltQjtJQUFJLEdBQWhCbkIsU0FBUUMsTUFBUkQsUUFBQWlCLFFBQVFoQixjQUFSZ0I7SUFBd0IsT0FEcEMrSixLQUNNdEssU0FBa0JTLEdBQVpGO0dBQThDO1lBQzFEaUssUUFBT3hLLEtBQUlTLEdBQUVJLEdBQUksT0FGakJ5SixLQUVPdEssU0FBSVMsR0FBRUksSUFBK0I7WUFDNUM0SixVQUFXekssS0FBSVMsR0FBSSxPQUhuQjZKLEtBR1d0SyxTQUFJUyxJQUE4QjtZQUM3Q2lLLE9BQU8xSyxLQUFJd0osVUFBUy9JLEdBQUksT0FKeEI2SixLQUlPdEssU0FBSXdKLFVBQVMvSSxJQUFxQztZQUN6RGtLLGlCQUFnQjNLLEtBQUlTLEdBQUksT0FMeEI2SixLQUtnQnRLLFNBQUlTLElBQTJCO1lBQy9DbUssWUFBWTVLLEtBQUlTLEdBQUksT0FOcEI2SixLQU1ZdEssU0FBSVMsSUFBOEI7WUFDOUNvSyxTQUFTN0ssS0FBSVMsR0FBSSxPQVBqQjZKLEtBT1N0SyxTQUFJUyxJQUEyQjtZQUN4Q3FLLGFBQVk5SyxLQUFJUyxHQUFJLE9BUnBCNkosS0FRWXRLLFNBQUlTLElBQThCO1lBQzlDc0ssVUFBUy9LLEtBQUlTLEdBQUksT0FUakI2SixLQVNTdEssU0FBSVMsSUFBNEI7WUFDekN1SyxPQUFPaEwsS0FBSVMsR0FBSSxPQVZmNkosS0FVT3RLLFNBQUlTLElBQXlCO1lBQ3BDd0ssUUFBUWpMLEtBQUlTLEdBQUksT0FYaEI2SixLQVdRdEssVUFBSVMsSUFBMEI7WUFDdEN5SyxhQUFZbEwsS0FBSVMsR0FBSSxPQVpwQjZKLEtBWVl0SyxVQUFJUyxJQUErQjtZQUMvQzBLLFVBQVVuTCxLQUFJUyxHQUFJLE9BYmxCNkosS0FhVXRLLFVBQUlTLElBQTRCO1lBQzFDMkssWUFBV3BMLEtBQU1WLEtBQVltQjtJQUFJLEdBQWhCbkIsU0FBUUMsTUFBUkQsUUFBQWlCLFFBQVFoQixjQUFSZ0I7SUFBd0IsT0FkekMrSixLQWNXdEssVUFBa0JTLEdBQVpGO0dBQW1EO1lBQ3BFOEssWUFBV3JMLEtBQUlTLEdBQUksT0FmbkI2SixLQWVXdEssVUFBSVMsSUFBOEI7R0FoQnRDOzs7T0FDUDZKO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO1lBSUFDLEtBQUtoTSxVQUFrQ2U7SUFDekMsR0FET2YsU0FBTUMsTUFBTkQsUUFBQVUsTUFBTVQsY0FBTlMsTUF4UlB6QjtJQXlSQSxZQURxQytCLGdCQUFSQyxRQUFRRCxnQkFBUkM7SUFDN0IsV0FEeUNGLEdBQWxDTCxLQUFzQk87R0FDMEI7WUFFckRnTCxPQUFLbEwsR0FBRUk7SUFBOEIsVUFBQSx1QkFBaENKLFVBQUVJO0lBQUksV0FBTkosTUFBQUE7R0FBMEQ7WUFDL0RtTCxTQUFReEwsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQUp6QnlLLEtBSVF0TCxLQUFLTyxXQUFNRSxHQUFFSSxJQUFzQztZQUMzRDRLLFlBQVd6TCxLQUFLTyxPQUFNRSxHQUFJLE9BTDFCNkssS0FLV3RMLEtBQUtPLFdBQU1FLElBQW9DO1lBQzFEaUwsTUFBTTFMLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUVqQixHQUFFUztJQUFJLE9BTjNCaUwsS0FNTXRMLEtBQUtPLFdBQU1FLEdBQUVJLEdBQUVqQixHQUFFUztHQUF5QztZQUNoRXNMLFFBQU8zTCxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BUHhCeUssS0FPT3RMLEtBQUtPLFdBQU1FLEdBQUVJLElBQXFDO1lBQ3pEK0ssTUFBTTVMLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUVqQixHQUFJLE9BUnpCMEwsS0FRTXRMLEtBQUtPLFdBQU1FLEdBQUVJLEdBQUVqQixJQUFzQztZQUMzRGlNLGFBQWE3TCxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BVDlCeUssS0FTYXRMLEtBQUtPLFdBQU1FLEdBQUVJO0dBQTBDO1lBQ3BFaUwsWUFBVzlMLEtBQUtPLE9BQU1FLEdBQUksT0FWMUI2SyxLQVVXdEwsS0FBS08sV0FBTUUsSUFBb0M7WUFDMURzTCxPQUFPL0wsS0FBS08sT0FBTUUsR0FBRUksR0FBSSxPQVh4QnlLLEtBV090TCxLQUFLTyxXQUFNRSxHQUFFSSxJQUFvQztHQVpsRDs7O09BQ055SztPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztZQUlBQyxLQUFLMU0sVUFBa0NlO0lBQ3pDLEdBRE9mLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BdlNQekI7SUF3U0EsWUFEcUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBQzdCLFdBRHlDRixHQUFsQ0wsS0FBc0JPO0dBQzZCO1lBRXhEMEwsT0FBSzVMLEdBQUVJO0lBQStCLFVBQUEsdUJBQWpDSixVQUFFSTtJQUFJLFdBQU5KLE1BQUFBO0dBQTREO1lBQ2pFNkwsU0FBUWxNLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUksT0FKekJtTCxLQUlRaE0sS0FBS08sV0FBTUUsR0FBRUksSUFBdUM7WUFDNURzTCxZQUFXbk0sS0FBS08sT0FBTUUsR0FBSSxPQUwxQnVMLEtBS1doTSxLQUFLTyxXQUFNRSxJQUFxQztZQUMzRDJMLFFBQU9wTSxLQUFLTyxPQUFNRSxHQUFFSSxHQUFFakI7SUFBSSxPQU4xQm9NLEtBTU9oTSxLQUFLTyxXQUFNRSxHQUFFSSxHQUFFakI7R0FBeUM7WUFDL0R5TSxZQUFXck0sS0FBS08sT0FBTUUsR0FBSSxPQVAxQnVMLEtBT1doTSxLQUFLTyxXQUFNRSxJQUFxQztZQUMzRDZMLE9BQU90TSxLQUFLTyxPQUFNRSxHQUFFSSxHQUFJLE9BUnhCbUwsS0FRT2hNLEtBQUtPLFdBQU1FLEdBQUVJLElBQXFDO0dBVGxEOztVQUNQbUwsTUFHQUMsUUFDQUMsVUFDQUMsYUFDQUMsU0FDQUMsYUFDQUM7WUFJQUMsS0FBS2pOLFVBQWtDZTtJQUN6QyxHQURPZixTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQW5UUHpCO0lBb1RBLFlBRHFDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUM3QixXQUR5Q0YsR0FBbENMLEtBQXNCTztHQUM2QjtZQUV4RGlNLFFBQVV4TSxLQUFLTyxPQUFNRSxHQUFJLE9BSHpCOEwsS0FHVXZNLEtBQUtPLFdBQU1FLElBQW1DO1lBQ3hEZ00sSUFBTXpNLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUVqQixHQUFFUztJQUFJLE9BSjNCa00sS0FJTXZNLEtBQUtPLGVBQU1FLEdBQUVJLEdBQUVqQixHQUFFUztHQUEwQztZQUNqRXFNLE9BQVMxTSxLQUFLTyxPQUFNRSxHQUFFSSxHQUFFakIsR0FBRVM7SUFBSSxPQUw5QmtNLEtBS1N2TSxLQUFLTyxlQUFNRSxHQUFFSSxHQUFFakIsR0FBRVM7R0FBNkM7WUFDdkVzTSxhQUFhM00sS0FBS08sT0FBTUUsR0FBRUk7SUFBSSxPQU45QjBMLEtBTWF2TSxLQUFLTyxlQUFNRSxHQUFFSTtHQUEyQztZQUNyRStMLFlBQVc1TSxLQUFLTyxPQUFNRSxHQUFJLE9BUDFCOEwsS0FPV3ZNLEtBQUtPLFdBQU1FLElBQXFDO1lBQzNEb00sWUFBVzdNLEtBQUlTLEdBQUksT0FSbkI4TCxLQVFXdk0sWUFBSVMsSUFBOEI7WUFDN0NxTSxPQUFLek0sR0FBRUk7SUFBK0IsVUFBQSx1QkFBakNKLFVBQUVJO0lBQUksV0FBTkosTUFBQUE7R0FBNEQ7WUFJakUwTSxNQUFLek4sVUFBa0NlO0lBQ3pDLEdBRE9mLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BaFVQekI7SUFpVUEsWUFEcUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBQzdCLFdBRHlDRixHQUFsQ0wsS0FBc0JPO0dBQzBCO1lBRXJEeU0sVUFBVWhOLEtBQUtPLE9BQU1FLEdBQUVJLEdBQUVqQjtJQUFJLE9BSDdCbU4sTUFHVS9NLEtBQUtPLFdBQU1FLEdBQUVJLEdBQUVqQjtHQUEwQztZQUNuRXFOLE1BQU1qTixLQUFLTyxPQUFNRSxHQUFFSSxHQUFFakI7SUFBSSxPQUp6Qm1OLE1BSU0vTSxLQUFLTyxlQUFNRSxHQUFFSSxHQUFFakI7R0FBc0M7WUFDM0RzTixTQUFTbE4sS0FBS08sT0FBTUUsR0FBRUksR0FBRWpCO0lBQUksT0FMNUJtTixNQUtTL00sS0FBS08sZUFBTUUsR0FBRUksR0FBRWpCO0dBQXlDO1lBQ2pFdU4sYUFBYW5OLEtBQUtPLE9BQU1FLEdBQUVJO0lBQUksT0FOOUJrTSxNQU1hL00sS0FBS08sZUFBTUUsR0FBRUk7R0FBMEM7WUFDcEV1TSxZQUFjcE4sS0FBS08sT0FBTUUsR0FBSSxPQVA3QnNNLE1BT2MvTSxLQUFLTyxXQUFNRSxJQUFzQztZQUMvRDRNLFlBQVdyTixLQUFLTyxPQUFNRSxHQUFJLE9BUjFCc00sTUFRVy9NLEtBQUtPLFdBQU1FLElBQW9DO1lBQzFENk0sWUFBV3ROLEtBQUlTLEdBQUksT0FUbkJzTSxNQVNXL00sWUFBSVMsSUFBNkI7WUFDNUM4TSxRQUFTQyxJQUFLLFdBQUxBLElBQW1CO1lBQzVCQyxTQUFTcFAsR0FBRVcsR0FBSSxXQUFOWCxHQUFFVyxHQUF1QjtZQUNsQzBPLE9BQUtyTixHQUFFSTtJQUE4QixVQUFBLHVCQUFoQ0osVUFBRUk7SUFBSSxXQUFOSixNQUFBQTtHQUEwRDtZQUkvRHNOLE1BQUtyTyxlQUErQ1ksTUFBS2lEO0lBQzNELEdBRE83RCxTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQWhWUHpCO0lBaVZBLFlBRHFDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUM3QixZQURrRHFOLGdCQUFQQyxPQUFPRCxnQkFBUEM7SUFDM0MsV0FEc0QzTixNQUFLaUQsS0FBaEIwSyxNQUFkdE4sT0FBdEJQO0dBT047R0FSUSxjQUNQMk47WUFXQUcsTUFBS3hPLFVBQWtDWSxNQUFLaUQ7SUFDOUMsR0FETzdELFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BM1ZQekI7SUE0VkEsWUFEcUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBQzdCLFdBRHlDTCxNQUFLaUQsS0FBakI1QyxPQUF0QlA7R0FDbUU7R0FGbEUsYUFDTjhOO1lBS0FDLE1BQUt6TyxVQUFrQ1ksTUFBSzhOO0lBQzlDLEdBRE8xTyxTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQWhXUHpCO0lBaVdBLFlBRHFDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUM3QixXQUR5Q0wsTUFBSzhOLEtBQWpCek4sT0FBdEJQO0dBTU47R0FQTyxhQUNOK047WUFVQUUsTUFBSzNPLFVBQW1DNkQsS0FBSWpEO0lBQzlDLEdBRE9aLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BMVdQekI7SUEyV0EsWUFEcUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBQzdCLFdBRDhDTCxNQUFKaUQsS0FBYjVDLE9BQXRCUDtHQU1OO0dBUFEsY0FDUGlPO1lBVUFDLE1BQUs1TyxVQUFrQ1ksTUFBS2lPO0lBQzlDLEdBRE83TyxTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQXBYUHpCO0lBcVhBLFlBRHFDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUM3QixXQUR5Q0wsTUFBS2lPLE1BQWpCNU4sT0FBdEJQO0dBQ29FO0dBRm5FLGFBQ05rTztZQUtBRSxNQUFLOU8sZUFBc0Q2TztJQUM3RCxHQURPN08sU0FBTUMsTUFBTkQsUUFBQVUsTUFBTVQsY0FBTlMsTUF6WFB6QjtJQTBYQSxZQURxQytCLGdCQUFSQyxRQUFRRCxnQkFBUkM7SUFDN0IsWUFEc0RxTixnQkFBWHJILFdBQVdxSCxnQkFBWHJIO0lBQzNDLFdBRDZENEgsTUFBbEI1SCxVQUFwQ3ZHLEtBQXNCTztHQU01QjtHQVBRLGNBQ1A2TjtZQVVBQyxNQUFLL08sVUFBa0NnUDtJQUN6QyxHQURPaFAsU0FBTUMsTUFBTkQsUUFBQVUsTUFBTVQsY0FBTlMsTUFuWVB6QjtJQW9ZQSxZQURxQytCLGdCQUFSQyxRQUFRRCxnQkFBUkM7SUFDN0IsV0FEeUMrTixPQUFsQ3RPLEtBQXNCTztHQUNtQztHQUZ0RCxlQUNSOE47WUFLQUUsTUFBS2pQLFVBQWtDc0ksS0FBSXVHO0lBQzdDLEdBRE83TyxTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQXhZUHpCO0lBeVlBLFlBRHFDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUM3QixXQUR5Q3FILEtBQUl1RyxNQUFoQjVOLE9BQXRCUDtHQUNrRTtHQUZqRSxhQUNOdU87WUFLQUMsTUFBS2xQLG9CQUNMWSxNQUFLaU87SUFDUCxHQUZPN08sU0FBTUMsTUFBTkQsUUFBQVUsTUFBTVQsY0FBTlMsTUE3WVB6QjtJQStZQSxZQUZxQytCLGdCQUFSQyxRQUFRRCxnQkFBUkM7SUFFN0IsWUFGa0RxTixnQkFBUGEsT0FBT2IsZ0JBQVBhO0lBRTNDLFlBRnVFQyxnQkFBVEMsU0FBU0QsZ0JBQVRDO0lBRTlELFdBRjJDRixNQUFtQkUsUUFDNUR6TyxNQUFLaU8sTUFEQW5PLEtBQXNCTztHQVM1QjtHQVZPLGFBQ05pTztZQWFBSSxNQUFLdFAsOEJBQ3NDdVAsVUFBUzNPO0lBQ3RELEdBRk9aLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BMVpQekI7SUE0WkEsWUFGcUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBRTdCLFlBRm9EcU4sZ0JBQVRlLFNBQVNmLGdCQUFUZTtJQUUzQyxZQUZrRUQsZ0JBQVJJLFFBQVFKLGdCQUFSSTtJQUUxRCxZQURXQyxnQkFBUEMsT0FBT0QsZ0JBQVBDO0lBQ0osWUFEb0NDLGdCQUFQQyxPQUFPRCxnQkFBUEM7SUFDN0IsV0FEc0RoUCxNQURYeU8sUUFBZUcsT0FDdERFLE1BQXlCRSxNQUFnQkwsVUFEaEJ0TyxPQUF0QlA7R0FXTjtZQUVDbVAsWUFBYzdQLG9CQUNZOFAsS0FBSWxQO0lBQ2hDLEdBRmdCWixTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQXZhaEJ6QjtJQXlhQSxZQUY4QytCLGdCQUFSQyxRQUFRRCxnQkFBUkM7SUFFdEMsWUFGMkRxTixnQkFBUHlCLE9BQU96QixnQkFBUHlCO0lBRXBELFlBRFdYLGdCQUFQWSxPQUFPWixnQkFBUFk7SUFDSixXQURnQ3BQLE1BRG9CbVAsTUFDaERDLE1BQXdCRixLQURacFAsS0FBc0JPO0dBU3JDO1lBRUNnUCxRQUFRalEsZUFBcURZLE1BQUtpRDtJQUNwRSxHQURVN0QsU0FBTUMsTUFBTkQsUUFBQVUsTUFBTVQsY0FBTlMsTUFsYlZ6QjtJQW1iQSxZQUR3QytCLGdCQUFSQyxRQUFRRCxnQkFBUkM7SUFDaEMsWUFEb0RxTixnQkFBTjRCLE1BQU01QixnQkFBTjRCO0lBQzlDLFdBRCtEdFAsTUFBakJzUCxLQUFzQnJNLEtBQTFEbkQsS0FBc0JPO0dBTy9CO0dBaENTLGVBQ1JxTyxPQWFBTyxhQVdBSTtZQVlBRSxNQUFLblEsb0JBQ0xvUSxNQUFLQztJQUNQLEdBRk9yUSxTQUFNQyxNQUFORCxRQUFBVSxNQUFNVCxjQUFOUyxNQTliUHpCO0lBZ2NBLFlBRnFDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUU3QixZQUZvRHFOLGdCQUFUZSxTQUFTZixnQkFBVGU7SUFFM0MsWUFGaUVELGdCQUFQUSxPQUFPUixnQkFBUFE7SUFFMUQsV0FERVEsTUFEeUNmLFFBQ3BDZ0IsY0FEbURULE1BQW5EbFAsS0FBc0JPO0dBUzVCO1lBRUNxUCxhQUFldFEsVUFBa0M2UDtJQUNuRCxHQURpQjdQLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BemNqQnpCO0lBMGNBLFlBRCtDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUN2QyxXQURtRDRPLGFBQWxDblAsS0FBc0JPO0dBS3RDO1lBRUNzUCxjQUFjdlEsVUFBa0NZLE1BQUs4TztJQUN2RCxHQURnQjFQLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BaGRoQnpCO0lBaWRBLFlBRDhDK0IsZ0JBQVJDLFFBQVFELGdCQUFSQztJQUN0QyxXQURrREwsTUFBSzhPLE1BQXZDaFAsS0FBc0JPO0dBTXJDO1lBRUN1UCxLQUFPeFEsb0JBQ21COFAsS0FBSWxQO0lBQ2hDLEdBRlNaLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BeGRUekI7SUEwZEEsWUFGdUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBRS9CLFlBRm9EcU4sZ0JBQVB5QixPQUFPekIsZ0JBQVB5QjtJQUU3QyxZQURXWCxnQkFBUFksT0FBT1osZ0JBQVBZO0lBQ0osV0FEZ0NwUCxVQURhbVAsTUFDekNDLE1BQXdCRixNQURuQnBQLEtBQXNCTztHQU85QjtZQUVDd1AsT0FBU3pRLFVBQWtDWSxNQUFLOFA7SUFDbEQsR0FEVzFRLFNBQU1DLE1BQU5ELFFBQUFVLE1BQU1ULGNBQU5TLE1BamVYekI7SUFrZUEsWUFEeUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBQ2pDLFdBRDZDTCxVQUFLOFAsTUFBdkNoUSxLQUFzQk87R0FNaEM7R0ExQ08sYUFDTmtQLE9BV0FHLGNBT0FDLGVBUUFDLE1BU0FDO1lBVUFFLE1BQUdDLE1BQUtDLFFBQVMsV0FBZEQsTUFBS0MsUUFBcUQ7R0FEckQsZUFDUkY7WUFJQUcsTUFBR0YsTUFBS0MsUUFBUyxXQUFkRCxNQUFLQyxRQUFxRDtHQURyRCxlQUNSQztZQUtBQyxNQUFLL1EsVUFBa0N5QztJQUN6QyxHQURPekMsU0FBTUMsTUFBTkQsUUFBQVUsTUFBTVQsY0FBTlMsTUFwZlB6QjtJQXFmQSxZQURxQytCLGdCQUFSQyxRQUFRRCxnQkFBUkM7SUFDN0IsV0FEeUN3QixNQUFsQy9CLEtBQXNCTztHQUM2QjtZQUV4RCtQLElBQUt0USxLQUFLTyxPQUFNMkIsT0FBTXFPLFNBQU1DO0lBQzlCLE9BSkVILE1BR0tyUSxLQUFLTyxXQUFNMkIsT0FBTXFPLFNBQU1DO0dBQ1c7WUFFdkNDLFVBQVV6USxLQUFJMFEsSUFBSyxPQU5uQkwsTUFNVXJRLFlBQUkwUSxLQUEwQjtHQVBsQyxhQUNOTCxPQUdBQyxLQUdBRztZQUtBRSxNQUFLclIsVUFBa0N5QztJQUN6QyxHQURPekMsU0FBTUMsTUFBTkQsUUFBQVUsTUFBTVQsY0FBTlMsTUEvZlB6QjtJQWdnQkEsWUFEcUMrQixnQkFBUkMsUUFBUUQsZ0JBQVJDO0lBQzdCLFdBRHlDd0IsTUFBbEMvQixLQUFzQk87R0FDNkI7WUFFeERxUSxNQUFLNVEsS0FBS08sT0FBTTJCLE9BQU13TztJQUFLLE9BSDNCQyxNQUdLM1EsS0FBS08sV0FBTTJCLE9BQU13TztHQUFzQztZQUM1REcsVUFBVTdRLEtBQUkwUSxJQUFLLE9BSm5CQyxNQUlVM1EsWUFBSTBRLEtBQTBCO0dBTGxDO0lBQUEsU0FDTkMsT0FHQUMsT0FDQUM7OztPQW5nQkZ0UztPQWtCQUc7V0FTRWlCLFFBRUFFLFFBUkFaLFNBQ0FHLE9BQ0FDLE9BQ0FHLE9BQ0FDLFdBQ0FDOzs7OztRQW9JQXFGO1FBUUFDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FpRDtRQUNBaEQ7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQXBDO1FBQ0FxQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUVBRTtRQURBRDtRQUVBRTtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUVBQztRQUdBRztRQUNBQztRQUNBQztRQUVBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFrR0E2RTtRQVNBTztRQU5BTjtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQzs7O1FBS0FFO1FBWUFXO1FBVEFWO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FFOzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHQ3RWYzs7O0lBMGlCZHFEO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDO0lBT0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMXBCYzs7Ozs7Ozs7Ozs7SUEyS0U7S0FBQTtLQUNoQkM7SUF6Qk4sb0JBeUJNQTs7WUF3REZDLEdBQUdsVCxHQUFJLE9BQUpBLEVBQUs7R0FDNEM7SUFBcERtVDs7T0FEQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7WUF5QkFFLFFBQVE5VCxHQUFFK1QsR0FBRXJULEdBQUksT0FBRSxXQUFWVixHQUFVLFdBQVIrVCxHQUFFclQsSUFBVztHQTBCUDs7SUFvQ2hCO0tBRkVzVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRE4sV0FDTUE7OzthQWlDRUMsb0JBQUEsbUNBRVU7O0tBRWQsTUFBQTtJQUNPLEtBTEhBO0tBS0osTUFBQTtJQUNPLEtBTkhBO0tBTUosTUFBQTs7Ozs7O0lBUko7O1lBd0JJQyxvQkFzQkNDO0ksZ0JBdUJEQztLQUVGLElBQUlDLHVCQUZGRCxZQXZCQ0QsVUFBQUE7UUF5QkNFLHVCQUtXO1FBTFhBO01BT0csTUFBQTtTQURlQyxLQU5sQkQsWUFNWUUsT0FOWkY7S0FNMEIsV0FBZEUsTUFBTUQsSUFDSDs7b0JBd0JoQkgsR0F1QkFLO0ksR0F2QkFMLFNBdUJBSzttQkFoUERYOztLQXlSUTtNQWJKTyxZQW5ESEQsT0F1QkFLO01BNkJnQkMsTUFsSWpCUCxvQkE4RUNDLEdBbURHQztNQUNhdkosSUFBQTRKO0tBQ2Y7V0FEZTVKLEdBRUcsTUFBQTtVQUNRNkosS0FIWDdKLE1BR1E4SixLQUhSOUo7U0FHVzZKLFVBaEMzQkYsb0JBZ0N3Qkc7TUFJYixZQXpJWlQsb0JBcUk0QlEsSUFKeEJOOztPQVNvQixNQUFBO1VBQ1FRLGdCQTdQdUJDO2dCQXVQOUJGLGNBdlA4QkU7TUFxQjVCLHlCLE9BdEIzQmY7Z0JBd1B5QmEsY0F2UDhCRTtNQW9CNUIseUIsT0FyQjNCZjtnQkF3UHlCYSxjQXZQOEJFO01BbUI1Qix5QixPQXBCM0JmO2dCQXdQeUJhLGNBdlA4QkU7TUFrQjVCLHlCLE9BbkIzQmY7Z0JBd1B5QmEsY0F2UDhCRTtNQWlCNUIseUIsT0FsQjNCZjtnQkF3UHlCYSxjQXZQOEJFO01BZ0I1Qix5QixPQWpCM0JmO2dCQXdQeUJhLGNBdlA4QkU7TUFlNUIseUIsT0FoQjNCZjtnQkF3UHlCYSxjQXZQOEJFO01BYzVCLHlCLE9BZjNCZjtnQkF3UHlCYSxjQXZQOEJFO01BYTVCLHlCLE9BZDNCZjtnQkF3UHlCYSxjQXZQOEJFO01BWTVCLHlCLE9BYjNCZjtnQkF3UHlCYSxhQXZQOEJFO01BVzVCLHlCLE9BWjNCZjtnQkF3UHlCYSxhQXZQOEJFO01BVTVCLHlCLE9BWDNCZjtnQkF3UHlCYSxhQXZQOEJFO01BUzVCLHlCLE9BVjNCZjtnQkF3UHlCYSxhQXZQOEJFO01BUTVCLHlCLE9BVDNCZjtnQkF3UHlCYSxhQXZQOEJFO01BTzVCLHlCLE9BUjNCZjtpQkF3UHlCYSxjQXZQOEJFO01BTTVCLHlCLE9BUDNCZjtpQkF3UHlCYSxjQXZQOEJFO01BSzVCLHlCLE9BTjNCZjtpQkF3UHlCYSxjQXZQOEJFO01BSTVCLHlCLE9BTDNCZjtpQkF3UHlCYSxjQXZQOEJFO01BOFB2QztPQVZDQzs7OzBCLE9BclBqQmhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBOFBnQ2M7T0FUZi9KLElBQUFpSzs7OztLQW1DakJDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0lBSHFEO1lBR3JEQTtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDtZQUNBRDs7R0EwSTZDOzs7SUFuZjNDcEI7SUE2WEFVOzs7SUE3WEE2QjtJQW9ZQUM7OztJQXBZQUM7SUEyWUFDOzs7SUEzWUFDO0lBa1pBQzs7O0lBbFpBQztJQXlaQUM7OztJQXpaQUM7SUFnYUFDOzs7SUFoYUFDO0lBdWFBQzs7O0lBdmFBQztJQThhQUM7OztJQTlhQUM7SUFxYkFDOzs7SUFyYkFDO0lBNGJBQzs7O0lBNWJBQztJQW1jQUM7OztJQW5jQUM7SUEwY0FDOzs7SUExY0FDO0lBaWRBQzs7O0lBamRBQztJQXdkQUM7OztJQXhkQUM7SUErZEFDOzs7SUEvZEFDO0lBc2VBQzs7O0lBdGVBQztJQTZlQUM7SUFNRkM7Ozs7UUF0SEU3RDtRQUNBM0I7O1FBOVhBaUI7Ozs7U0FvWUF3QztTQUNBeEQ7O1NBcllBdUQ7Ozs7VUEyWUFHO1VBQ0F6RDs7VUE1WUF3RDs7OztXQWtaQUc7V0FDQTFEOztXQW5aQXlEOzs7O1lBeVpBRztZQUNBM0Q7O1lBMVpBMEQ7Ozs7YUFnYUFHO2FBQ0E1RDs7YUFqYUEyRDs7OztjQXVhQUc7Y0FDQTdEOztjQXhhQTREOzs7O2VBOGFBRztlQUNBOUQ7O2VBL2FBNkQ7Ozs7Z0JBcWJBRztnQkFDQS9EOztnQkF0YkE4RDs7OztpQkE0YkFHO2lCQUNBaEU7O2lCQTdiQStEOzs7O2tCQW1jQUc7a0JBQ0FqRTs7a0JBcGNBZ0U7Ozs7bUJBMGNBRzttQkFDQWxFOzttQkEzY0FpRTs7OztvQkFpZEFHO29CQUNBbkU7O29CQWxkQWtFOzs7O3FCQXdkQUc7cUJBQ0FwRTs7cUJBemRBbUU7Ozs7c0JBK2RBRztzQkFDQXJFOztzQkFoZUFvRTs7Ozt1QkFzZUFHO3VCQUNBdEU7O3VCQXZlQXFFOzs7O3dCQTZlQUc7d0JBQ0F2RTs7d0JBOWVBc0U7Ozs7O01BNlhBM0Q7TUFDQTNCOztNQTlYQWlCOzs7TUFvWUF3QztNQUNBeEQ7O01BcllBdUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW9ZQUM7TUFDQXhEOztNQXJZQXVEOzs7TUEyWUFHO01BQ0F6RDs7TUE1WUF3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMllBQztNQUNBekQ7O01BNVlBd0Q7OztNQWtaQUc7TUFDQTFEOztNQW5aQXlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFrWkFDO01BQ0ExRDs7TUFuWkF5RDs7O01BeVpBRztNQUNBM0Q7O01BMVpBMEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXlaQUM7TUFDQTNEOztNQTFaQTBEOzs7TUFnYUFHO01BQ0E1RDs7TUFqYUEyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZ2FBQztNQUNBNUQ7O01BamFBMkQ7OztNQXVhQUc7TUFDQTdEOztNQXhhQTREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF1YUFDO01BQ0E3RDs7TUF4YUE0RDs7O01BOGFBRztNQUNBOUQ7O01BL2FBNkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQThhQUM7TUFDQTlEOztNQS9hQTZEOzs7TUFxYkFHO01BQ0EvRDs7TUF0YkE4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BcWJBQztNQUNBL0Q7O01BdGJBOEQ7OztNQTRiQUc7TUFDQWhFOztNQTdiQStEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUE0YkFDO01BQ0FoRTs7TUE3YkErRDs7O01BbWNBRztNQUNBakU7O01BcGNBZ0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW1jQUM7TUFDQWpFOztNQXBjQWdFOzs7TUEwY0FHO01BQ0FsRTs7TUEzY0FpRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMGNBQztNQUNBbEU7O01BM2NBaUU7OztNQWlkQUc7TUFDQW5FOztNQWxkQWtFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFpZEFDO01BQ0FuRTs7TUFsZEFrRTs7O01Bd2RBRztNQUNBcEU7O01BemRBbUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXdkQUM7TUFDQXBFOztNQXpkQW1FOzs7TUErZEFHO01BQ0FyRTs7TUFoZUFvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BK2RBQztNQUNBckU7O01BaGVBb0U7OztNQXNlQUc7TUFDQXRFOztNQXZlQXFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFzZUFDO01BQ0F0RTs7TUF2ZUFxRTs7O01BNmVBRztNQUNBdkU7O01BOWVBc0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXNqQkFHLFdBQVdDO0lBQ2I7S0FjTUMsd0JBQXdCLDJCQWxGOUJIO2FBa0ZNRztJQWRTO2lCQUNMO1NBQzhCQyxpQkFBNUJDO0tBQ0gsR0FBQSxrQkFER0Esa0JBSENILFFBS0wsV0FGSUc7S0FHRSxHQUFBLGtCQUhGQSxrQkFIQ0gsUUFPTCxXQUpJRztpQkFBNEJEOztHQWFaO0dBbkJWO0lBQUEsbUJBR2hCSDs7OzJCQXpMQTlELFNBQ0EzQix5QkE5WEFpQjs7O1FBb1lBd0M7UUFDQXhEOztRQXJZQXVEOzs7UUEyWUFHO1FBQ0F6RDs7UUE1WUF3RDs7O1FBa1pBRztRQUNBMUQ7O1FBblpBeUQ7OztRQXlaQUc7UUFDQTNEOztRQTFaQTBEOzs7UUFnYUFHO1FBQ0E1RDs7UUFqYUEyRDs7O1FBdWFBRztRQUNBN0Q7O1FBeGFBNEQ7OztRQThhQUc7UUFDQTlEOztRQS9hQTZEOzs7UUFxYkFHO1FBQ0EvRDs7UUF0YkE4RDs7O1FBNGJBRztRQUNBaEU7O1FBN2JBK0Q7OztRQW1jQUc7UUFDQWpFOztRQXBjQWdFOzs7UUEwY0FHO1FBQ0FsRTs7UUEzY0FpRTs7O1FBaWRBRztRQUNBbkU7O1FBbGRBa0U7OztRQXdkQUc7UUFDQXBFOztRQXpkQW1FOzs7UUErZEFHO1FBQ0FyRTs7UUFoZUFvRTs7O1FBc2VBRztRQUNBdEU7O1FBdmVBcUU7OztRQTZlQUc7UUFDQXZFOztRQTllQXNFO09BbWZGRTs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7O0lDdnFCWTs7Ozs7OztLQUFBOzs7S0E2RjhCOzs7Ozs7Ozs7O2FBR3BDTSxTQUVGQztLQUNGLFVBREVBO2FBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FBQUE7TUE0Qm1CLElBQWRyVixJQTVCTHFWLFNBNEJtQixNQTlCakJELFNBOEJHcFY7TUFBYyxPQUFBOztLQUVULElBRERYLElBN0JUZ1csU0E2Qk1wVyxJQTdCTm9XLFNBOEJNelksSUFoQ0p3WSxTQStCSW5XLElBRUEwUixJQWpDSnlFLFNBK0JPL1Y7S0FHUDtNQUFBLElBQVFpVyxjQUFIaFksY0FBZSxNQUFBLFdBRGhCcVQsR0FDSTJFO01BQU0sV0FBQyxXQUZYMVksR0FFQ1UsU0FBbUI7SUFBQTthQUV4QmlZLFNBRUZGO0tBQ0YsVUFERUE7YUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQUFBQTtNQTRCbUIsSUFBZHJWLElBNUJMcVYsU0E0Qm1CLE1BOUJqQkUsU0E4Qkd2VjtNQUFjLE9BQUE7O0tBRVQsSUFERFgsSUE3QlRnVyxTQTZCTXBXLElBN0JOb1csU0E4Qk16WSxJQWhDSjJZLFNBK0JJdFcsSUFFQTBSLElBakNKNEUsU0ErQk9sVztLQUdQO01BQUEsSUFBUWlXLGNBQUhoWSxjQUFlLE1BQUEsV0FEaEJxVCxHQUNJMkU7TUFBTSxXQUFDLFdBRlgxWSxHQUVDVSxTQUFtQjtJQUFBO2FBRTVCa1ksZ0JBQWdCQyxNQUFLN1ksR0FBRThZLE1BQUtwWTtLQUFJO01BQUEsTUFBQSxXQXBDNUJpWSxTQW9DWUUsT0FBWW5ZO01BQUksTUFBQSxXQUFtQixXQUE5QlYsR0FBRThZO0tBQVMsT0FBQSxXQXhFNUJOLFNBd0VZSztJQUEwRDthQUMxRUUsZ0JBQWdCRixNQUFLN1ksR0FBRThZLE1BQUtwWTtLQUFJO01BQUEsTUFBQSxXQXpFNUI4WCxTQXlFWUssT0FBWW5ZO01BQUksTUFBQSxXQUFtQixXQUE5QlYsR0FBRThZO0tBQVMsT0FBQSxXQXJDNUJILFNBcUNZRTtJQUEwRDtJQTVLM0I7Ozs7Ozs7OztZQW1HM0NMO1lBb0NBRztZQW9DSkM7WUFDQUc7O0dBZ0J3Qzs7Ozs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7O1lBRXhDQyxlQUFlQztJQUFTLFVBQUEsZ0JBQVRBO0lBQVMsT0FBQTtHQUFnRDtZQUN4RUMsWUFBVUQ7SUFBUyxVQUFBLGdCQUFUQTtJQUFTLE9BQUE7R0FBMkM7WUFFOURFLGdCQUFnQkY7SUFDbEIsVUFBQSxnQkFEa0JBO0lBQ2xCLE9BQUE7R0FBdUQ7WUFFckRHLFNBQVNIO0lBQ1gsVUFBQSxnQkFEV0E7SUFDWCxPQUFBLFdBQW1CO0dBQXNDO1lBRXZEclYsVUFBVXFWO0lBQVMsVUFBQSxnQkFBVEE7SUFBUyxPQUFBO0dBQTJDO1lBQzlESSxXQUFXSjtJQUFTLFVBQUEsZ0JBQVRBO0lBQVMsT0FBQTtHQUE2QztZQUNqRUssUUFBUUw7SUFBUyxVQUFBLGdCQUFUQTtJQUFTLE9BQUE7R0FBdUM7R0FmL0M7SUFBQTs7O09BSVREO09BQ0FFO09BRUFDO09BR0FDO09BR0F4VjtPQUNBeVY7T0FDQUM7Ozs7RTs7Ozs7OztHOzs7OztZQ2xORkMsc0JBQXNCM1gsS0FBTyxTQUFFO0dBQ1I7SUFBdkI0WCwyQkFEQUQ7SUFFQUU7WUFDQUMsaUJBQWlCOVg7SUFBTSxPQUFBLFdBRnZCNFgseUJBRWlCNVg7R0FBK0I7OztVQURoRDZYLHVCQURBRCxzQkFFQUU7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM7T0FFQUM7T0FFQUM7T0FTQUk7T0FFQUc7T0FFQUM7T0FNQUM7T0FHQUM7T0FNQUM7T0FHQUM7T0FNQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FNQUM7T0FHQUM7T0FHQUM7T0FTQUk7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FDQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUU7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUU7T0FFQUU7T0FRQUc7T0FDQUk7T0FFQUk7T0FHQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FNQUM7T0FNQUM7T0FNQUM7T0FFQUM7T0FHQUM7T0FPQUU7T0FFQUM7T0FHQUM7T0FNQUM7T0FNQUM7T0FFQUM7T0FHQUM7T0FFQUM7T0FPQUM7T0FFQUM7T0FFQUM7T0FPQUU7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FFQUk7T0FFQUM7T0FFQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FDQUM7T0FFQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUU7T0FZ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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BdEhBN0I7T0FUQUQ7T0FvSkFyWjtPQWpCQUM7T0FDQUM7T0FDQUM7T0FnQkFDO09BQ0FDO09BQ0FDO09BQ0FDO09BbEJBQztPQUNBQztPQUNBQztPQWlCQUM7T0FDQUM7T0FDQUM7T0FDQTRhO09BQ0FDOztPQUlBQztPQWtCQWpaO09BT0FSO09BWUE0WjtPQUNBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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UUFDQUQ7UUFDQUQ7UUFOQWpCO1FBT0FVO1FBRUFDO1FBR0FFOztRQVFBTztRQUNBRTtRQUNBQztRQUNBQztRQUVBQztRQU5BM21COztRQWlCQThtQjtRQUNBRTtRQUNBQztRQUNBQztRQUdBQztRQUZBSjtRQVBBRjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjtJLFc7RztHOztJLEksVyxvQjs7OztLOzs7O007SztLO0s7Szs7TTtNO007O0s7SyxXO0s7SyxPOztHOzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7SSxpQjtHOztJLHdCO0c7O0k7SSxPOztHOztJLFc7SSxPO0c7NEIsTyw2Qjs2QiwrQztHO0ksZ0I7SSxxQjtJLGlCO0ksc0I7O0ksbUI7O0k7Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0ksZ0I7Rzs7STtpQjtHO2dDLE8sb0M7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO2lDLE8sa0M7O0k7SztNLE87TSxPO0s7Ozs7O0s7TTtNOzs7Uzs7Ozs7Ozs7UztRO0s7Szs7O1MsRyxtQztTO1UsdUI7VTs7Ozs7O1U7Vzs7MEI7Vzs7OztrQzs7OztRO007Ozs7Ozs7O2M7Ozs7TTtPO087ZTtLO007UTtXOzs7O21COzs7Uzs7VTtVO1M7UyxPO1E7TSxPO0ssTzs7Rzs7SSxJLFcsc0M7Ozs7d0M7O0s7TSxHO08sTTtNLEksTzs7Ozs7TSxHO08sTTtxQjs7SztNLEc7TyxNO007TyxPO08sTzs7Ozs7O29COztLOztHOztJO0ssSSxXLDhCOzs7Ozs7Ozs7Rzs7STs7Tzs7STtHOzs7STs7Szs7TSxJLFcsd0I7OztrQzs7O0s7SyxPO0k7STtLO0s7b0I7TSxXOzs7O0k7STs7OztLOztLLE87STtJLE87Rzs7STtHOzs7STs7RztHLHNCOztJO0ksTztHOztJO0ssUTs7O0ssUztJLEk7OztLO0s7SyxNOztJO0k7Rzs7STtLLFE7OztLLFU7SSxJOzs7SztLO0ssTTs7STtJO0c7O0k7SyxROzs7SSxJLGM7OztLO0s7SyxNOztJOzs7SyxTO0ssVTtJO0s7Ozs7O0s7SztLO0s7SyxNOztJO0k7STtHOztJO0ssUTs7O0ksSSxjOzs7SztLO0ssTTs7O0ksSSxjOzs7SztLO0s7SztLLE07O0k7OztLLFM7SyxVO0ssVTtJO0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssTTs7STtJO0k7STtHOztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0ssVztLOzs7OztNLE07Ozs7Rzs7SSxPO0c7O0k7Rzs7STtHOzs7STs7OztJOzs7SSxJLG9CO0k7STtJO0c7O0ksSSxxQjtJO0ksSTs7Ozs7STtHOztJOzs7SztLO0k7STtJLEk7Ozs7O0k7OztJOzs7O0s7SztJO0k7SSxJOzs7OztJO0k7OztJLFc7STtLO0s7TSxPO00sVztLOzs7O0s7SyxNOztHOztJLE8sc0I7Rzs7SSxXO0k7STtJOztLO00sSSxZOzs7Ozs7Ozs7SyxrQixLOztlLHNCO007TTtPLFM7TyxVO007TTs7VSx1Qjs7RztzQjs0Qjs0QjtzQjs0Qjs7STs7c0I7NEI7NEI7c0I7c0I7c0I7c0I7c0I7c0I7c0I7NEI7NEI7NEI7NEI7NEI7O0k7OztJOztzQjtzQjtzQjs7c0I7c0I7c0I7NEI7c0I7c0I7c0I7c0I7c0I7c0I7c0I7OzZCO3VCOztJOzt1Qjt1Qjt1Qjs7Ozs7dUI7dUI7dUI7dUI7NkI7NkI7O0k7OztJOzs7Ozs7NkI7NkI7Ozs7Ozt1Qjt1Qjt1Qjs7dUI7dUI7dUI7dUI7O0k7OzZCOzZCO3VCOztJOzs7STs7NkI7NkI7dUI7O0k7OzZCOzt1Qjs7Ozs7OztROzs0Qjs0Qjs7Ozs7dUI7OzZCOzZCOztJOzs7dUI7dUI7dUI7dUI7O0k7O3VCO3VCO3VCO3VCOzZCO3VCO3VCOztJOzs2Qjs7STs7NkI7NkI7Ozs7Ozs7c0I7O3NCO3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O1lDM1BBK0MsbUI7Z0NBQUFBOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztZRzBCQUU7SUFDTSxJQUFKQyxJQUFJO0lBQ0wsT0FBQSwyQkFEQ0E7Y0FBQUE7Y0FUeUI7R0FVNkI7c0JBRnhERDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDOEJFRTs7SUFrUEZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDdFZ0Qjs7Ozs7Ozs7SUF3bkNRQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMW5DSkM7SUFnS0FDOzs7Ozs7Ozs7Ozs7O0lBQUFDOzs7Ozs7Ozs7Ozs7O0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUE5Sko7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QVVBRTtPQXhDQVg7T0FvREFpQjtPQWFBQztPQVlBRztPQTVCQU47T0FyTEkvQjtPQTJOQXNDO09BOVpKN0Q7T0FHQUM7T0FtQkFHO09BbUNBRTtPQTBEQUs7T0FmQUQ7T0FvQ0FFO09BMUpBakI7T0FpTUFrQjtPQUNBQztPQUNBQztPQWlEQWM7T0FVQUM7T0FNQUw7T0FtRUFZO09BNURBVDtPQWtFQVU7T0F4SElmO09Bb0VBYTtPQXRVSnNGO09BQ0FDO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEMsZTs7SztZO0s7Ozs7STs7Ozs7O0ssVTtNO007O29CO007TTs7Ozs7RztHOzJCLGdCOztJOztPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOzs7UTs7UTs7UTs7UTtnQjs7STtHOztJOzs7Ozs7Ozs7Ozt5Qzs7Ozs7OztHO0csSSxjOztJO0k7O0k7O0k7RztvQixZO21CLFk7dUIsWTs0QixtQjs4QixtQztnQywwQzs7STtHO3dCLGM7Rzs7STs7YztJO29CLHVCO0ksTztHO0csSSxnQjs7STtJOztLLG1COztLO0k7d0Isc0I7O0k7RztzQixZO3FCLFk7dUIsWTs7STtHOzBCLFc7OztJLE87Ozs7OztHO0k7Ozs7c0IsTyw0Qjt5QixPLHVDO3NCLE8sNEI7O0k7SztNLFE7OztNLE07TSxNO0s7Ozs7MkI7OztHOztJO2dDO0ksVTtJLE87Rzs7Z0MsTyxzQjtJLE87Rzs7O0ssZTtLO0s7STtJO0k7STtJO0c7Rzs7OEIsTyxtQixTOztJOztHO0c7STs7O1E7USxPO087STs0QiwwQjs4QixtQjs7O0s7SyxPO0k7STtJLE87Rzs7O0k7OztlOztJLE87Ozs7WTs7STtLO1M7Ozs7STthOztLLE87O1ksTzs7SSxPOzs7STs7OztJOzs7O0k7Ozs7O3lCLHFCLE8saUI7SyxPOzs7ZTs7Z0IsTTtnQixNO2UsTzs7Ozs7OztjO0k7STtHO0c7K0Isb0I7a0MseUI7RztnQyxxQjttQywwQjt3QixTOztJO0k7Z0IsTzs7OztLLE87OztJO0c7eUIsUztrQyxxQzsyQixpQzsyQixpQzs0QixpQzs0QixpQzs2QixpQzs7STtJLHFDOzs7NkIsMEI7Ozt5QixPLHdDOzs7STtJLHFDOzs7Ozs7O2MsTzthOzs7Z0Msa0M7b0Msc0M7dUIsc0I7dUIsc0I7d0Isc0I7d0Isc0I7eUIsc0I7O0s7SztNO0k7O0s7SztNO0k7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZRU1BdWhCLGFBQWFDLEdBcUJiQztJLEdBQUFBLG1CQXBCUSxPQUFBLDhCQURLRDtPQXFCYkM7S0FuQmEsT0FBQSw4QkFGQUQ7T0FxQmJDO1NBbEJRQyxJQWtCUkQ7S0FsQmEsT0FBQSwrQkFIQUQsUUFHTEU7O09Ba0JSRDtLQWpCYSxPQUFBLDhCQUpBRDtPQXFCYkM7S0FoQmUsT0FBQSw4QkFMRkQ7T0FxQmJDO0tBZmUsT0FBQSw4QkFORkQ7T0FxQmJDO1NBZGFFLE1BY2JGO0tBZGtCLE9BQUEsK0JBUExELFFBT0FHOztPQWNiRjtLQWJrQixPQUFBLDhCQVJMRDtPQXFCYkM7U0FaU0csTUFZVEg7S0FaYyxPQUFBLCtCQVRERCxRQVNKSTs7T0FZVEg7S0FYdUIsT0FBQSw4QkFWVkQ7T0FxQmJDO1NBVm1CSSxNQVVu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QixJQUFUa0osU0FBUztJQUNiLFdBRjZCRCxRQUN6QkMsUUFEbUNsSjtJQUczQjtLQUFSbUosUUFBUSw2QkFGUkQ7S0FHQU4sTUFBTSxvQ0FETk87S0FFQU4sUUFBTyxXQUxVRyxTQUlqQko7SUFFSixPQUFBLGdDQU5vQzlILElBS2hDK0g7R0FDeUI7Ozs7O09BNVAzQi9FO09Bc0NBc0I7T0FLQUU7T0E0RUFpQjtPQVlBQztPQW5GQWpCO09BVUFHO09BV0FDO09BT0FDO09BT0FDO09BSUFDO09BS0FDO09BR0FDO09BS0FDO09BR0FDO09BS0FDO09BR0FDO09BMkJBSztPQUlBRTtPQUlBQztPQUlBQztPQUlBQztPQUlBQztPQVFBRTtPQUlBQztPQVFBRztPQVNBSTtPQWdCQUM7T0FHQUc7T0FoQ0FWO09BWkFIO09BMEVBd0I7T0F6QkFWO09BVUFHO09BR0FFO09Bc0JBWTtPQVBBTjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7Rzs4QixPLHVDOztJLE87O0c7RyxXOzhCLE8sbUM7O0ksVztJLE8sK0I7Rzt5Qix1QixXLFM7O0ksSSxJOztLLFc7SyxxQjtLO2tCOzs7Rzs7SSxJLEk7O0ssSSxPLHVCLE87SyxxQjtLO2tCOzs7Rzs7STs7O00sVztnQjtPLE07O21CLGM7Ozs7Ozs0Qjs7O0c7O0k7O0ssUTs7Ozs7USxlO087Ozs7O0s7Ozs7Rzs7STtJOztPLE87TyxjO007O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHNCOzhCLGlDOztJO0k7OzhCLGlCLGtCOzs7UTs7NEIsTzs7UTs7O1EsTzs7USxzQztRLFM7Ozs7UTs7OztROzs7Z0I7OztHOztJO0k7Ozs7Ozs7Ozs7OzRCOzs7USxPOzs0Qjs7O1E7OztRLGtCLE87O1E7O1Esc0M7UTs7Ozs7Ozs7Ozs7O0c7eUI7O0k7STs7Ozs7O1MsbUM7Uzs7UyxtQztTOztTLGtCLE87O1M7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHLEksSTs7SSxVO0kscUI7STs7OztHO0ksa0I7Ozs7STtLLFc7SztLO0s7SztLOztLO007OztRLFk7UTs7Ozs7OztLLEk7Szs7O0k7O0s7SztLO0k7O0s7SztLO0k7O0ssSSxVLHdDOzs7OztpQjs7TTs7STs7SyxxQjs7aUI7O0s7STs7Szs7O1M7O1M7aUI7Ozs7O1E7MEM7OztRLGtCLFE7d0I7O1M7VSxRO1U7VTtVO1U7Ozs7Ozs7O2tDOzs7OzBCLDJCO1EsVTtRLCtCOztROzs7UztTO1E7MkM7OztRO3VCOzs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7O1M7Ozs7O1Esa0M7UTtRLEksNkI7UTs7UTtROztROztTO1M7dUI7UTt1QjtROztROztROztTO1M7UTt5QjtRO3lCO1E7O1E7O1Esb0I7UTs7UTs7O1E7UTtRO3VCOzs7O1E7dUI7OztJOztLLGtCO0s7SztJO0k7STtJLEksbUI7SSxHOzs7SyxRO0ssaUIsTyx3QjtpQzs7SSxJLGUsb0M7O0s7SztJO0k7Ozs7O0k7WTs7Ozs7O0c7O0ksUTtJOztvQjs7O3NCOzs7OztHO0c7O0ksb0M7O0ssSTtLO007OztnQjtvQjtPO1E7OztROzs7OztNOztJOztLLEksVTtLOzs7TyxrQztRO1MsTTs7Ozs7TyxVOzs7Ozs7Ozs7YTs7O2MsdUI7ZTtnQjs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7O2E7Ozs7O2MsVTs7Ozs7Ozs7Z0I7Ozs7Ozs7O2lCO2lCO2tCOzs7aUI7OzsyQjs4Qjs7OzsyQjs7OztlLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLGU7OztVLEksbUI7OztVLEksbUI7O1UsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O08sSTs7O007TSxJOztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7Rzs7SSxVOzs7Rzs7SSxVOzs7Rzs7SSxVOzs2QixNO0k7Rzs7SSxVOzs2QixNO0k7Rzs7STs7SztLLGUsTTtLOztJLE87Rzs7STs7SztNO007SyxlLE07Szs7SSxPO0c7O0k7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksRyxnQzs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOztJO0c7O0k7STs7Ozs7O007O08sb0I7O1E7UztTO1M7Ozs7aUI7Ozs7Ozs7TztRO1E7UTs7Ozs7Ozs7SyxPOztHO21DLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJb0JqS0FtZ0M7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBaEZBQyxZQUVBclU7SUFGYyxVQUVkQSw4QkFBQUEsVUFESzRDLElBQ0w1QyxNQURVLE9BQUw0QztJQUNBLE1BQUE7MERBQUw1QztHQUFrRTtZQWdJbEVzVTtJQUFrQjs7V0FDUnRRLGNBQUgzRix3Q0FBRzJGO2NBQUgzRjs7b0NBdERQNFY7O29DQUNBQzs7b0NBQ0FDOzRDQUNBQzs7T0FtRGdCOztXQWxDS0c7T0FtQ1A7Ozs7Ozs7Ozs7Ozs7b0RBbkNPQTs7cURBQUFBO3VEQUFBQTs7OztPQXhEdkI7UUFEMkJDOztR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QTs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0dDakJBO0dBQUE7OztFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgaWYobiA9PSAwKSByZXR1cm4gXCJcIjtcbiAgaWYgKHMucmVwZWF0KSB7cmV0dXJuIHMucmVwZWF0KG4pO30gLy8gRUNNQXNjcmlwdCA2IGFuZCBGaXJlZm94IDI0K1xuICB2YXIgciA9IFwiXCIsIGwgPSAwO1xuICBmb3IoOzspIHtcbiAgICBpZiAobiAmIDEpIHIgKz0gcztcbiAgICBuID4+PSAxO1xuICAgIGlmIChuID09IDApIHJldHVybiByO1xuICAgIHMgKz0gcztcbiAgICBsKys7XG4gICAgaWYgKGwgPT0gOSkge1xuICAgICAgcy5zbGljZSgwLDEpOyAvLyBmbGF0dGVuIHRoZSBzdHJpbmdcbiAgICAgIC8vIHRoZW4sIHRoZSBmbGF0dGVuaW5nIG9mIHRoZSB3aG9sZSBzdHJpbmcgd2lsbCBiZSBmYXN0ZXIsXG4gICAgICAvLyBhcyBpdCB3aWxsIGJlIGNvbXBvc2VkIG9mIGxhcmdlciBwaWVjZXNcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5IChudWxsLCBhKTtcbiAgdmFyIHMgPSBcIlwiO1xuICBmb3IgKDsgMCA8IGxlbjsgaSArPSAxMDI0LGxlbi09MTAyNClcbiAgICBzICs9IGYuYXBwbHkgKG51bGwsIGEuc2xpY2UoaSxpICsgTWF0aC5taW4obGVuLCAxMDI0KSkpO1xuICByZXR1cm4gcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGY4X29mX3V0ZjE2XG5mdW5jdGlvbiBjYW1sX3V0Zjhfb2ZfdXRmMTYocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IGIsIGMsIGQsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGMwIHwgKGMgPj4gNikpO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPCAweGQ4MDAgfHwgYyA+PSAweGRmZmYpIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGUwIHwgKGMgPj4gMTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjID49IDB4ZGJmZiB8fCBpICsgMSA9PSBsIHx8XG4gICAgICAgICAgICAgICAoZCA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGQgPiAweGRmZmYpIHtcbiAgICAgIC8vIFVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpciwgcmVwbGFjZWQgYnkgXFx1ZmZmZCAocmVwbGFjZW1lbnQgY2hhcmFjdGVyKVxuICAgICAgdCArPSBcIlxceGVmXFx4YmZcXHhiZFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgICBjID0gKGMgPDwgMTApICsgZCAtIDB4MzVmZGMwMDtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGYwIHwgKGMgPj4gMTgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGNhbWxfdXRmMTZfb2ZfdXRmOChzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gXCJcIiwgYywgYzEsIGMyLCB2LCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYzEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMxIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjMSA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICB2ID0gMTtcbiAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgYyA9IGMyICsgKGMxIDw8IDYpO1xuICAgICAgaWYgKGMxIDwgMHhlMCkge1xuICAgICAgICB2ID0gYyAtIDB4MzA4MDtcbiAgICAgICAgaWYgKHYgPCAweDgwKSB2ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSAyO1xuICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgICAgIGMgPSBjMiArIChjIDw8IDYpO1xuICAgICAgICAgIGlmIChjMSA8IDB4ZjApIHtcbiAgICAgICAgICAgIHYgPSBjIC0gMHhlMjA4MDtcbiAgICAgICAgICAgIGlmICgodiA8IDB4ODAwKSB8fCAoKHYgPj0gMHhkN2ZmKSAmJiAodiA8IDB4ZTAwMCkpKSB2ID0gMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdiA9IDM7XG4gICAgICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSAmJlxuICAgICAgICAgICAgICAgIChjMSA8IDB4ZjUpKSB7XG4gICAgICAgICAgICAgIHYgPSBjMiAtIDB4M2M4MjA4MCArIChjIDw8IDYpO1xuICAgICAgICAgICAgICBpZiAodiA8IDB4MTAwMDAgfHwgdiA+IDB4MTBmZmZmKSB2ID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHYgPCA0KSB7IC8vIEludmFsaWQgc2VxdWVuY2VcbiAgICAgIGkgLT0gdjtcbiAgICAgIHQgKz0gXCJcXHVmZmZkXCI7XG4gICAgfSBlbHNlIGlmICh2ID4gMHhmZmZmKVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDdjMCArICh2ID4+IDEwKSwgMHhkYzAwICsgKHYgJiAweDNGRikpXG4gICAgZWxzZVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1xuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczoganNvb19pc19hc2NpaVxuZnVuY3Rpb24ganNvb19pc19hc2NpaSAocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZVxuICAgIHJldHVybiAhL1teXFx4MDAtXFx4N2ZdLy50ZXN0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgaWYgKGkgPj0gcy5jLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jLmNoYXJDb2RlQXQoaSk7XG4gIGNhc2UgNDogLyogQVJSQVkgKi9cbiAgICByZXR1cm4gcy5jW2ldXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYykge1xuICAvLyBUaGUgT0NhbWwgY29tcGlsZXIgdXNlcyBDaGFyLnVuc2FmZV9jaHIgb24gaW50ZWdlcnMgbGFyZ2VyIHRoYW4gMjU1IVxuICBjICY9IDB4ZmY7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09IHMuYy5sZW5ndGgpIHtcbiAgICAgIHMuYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgIGlmIChpICsgMSA9PSBzLmwpIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocyk7XG4gIH1cbiAgcy5jW2ldID0gYztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAxKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDMpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSA3KSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMiA9IDB4RkYgJiBpMTYgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkxNjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MTZcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjQgPSAweEZGICYgaTMyID4+IDI0LFxuICAgICAgYjMgPSAweEZGICYgaTMyID4+IDE2LFxuICAgICAgYjIgPSAweEZGICYgaTMyID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMzI7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAyLCBiMyk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQzMlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gY2FtbF9pbnQ2NF90b19ieXRlcyhpNjQpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgNyAtIGosIGFbal0pO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0NjRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIChzKSB7XG4gIHZhciB0YWcgPSA5IC8qIEJZVEVTIHwgQVNDSUkgKi87XG4gIGlmICghanNvb19pc19hc2NpaShzKSlcbiAgICB0YWcgPSA4IC8qIEJZVEVTIHwgTk9UX0FTQ0lJICovLCBzID0gY2FtbF91dGY4X29mX3V0ZjE2KHMpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGFnLCBzLCBzLmxlbmd0aCk7XG59XG5cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBNbEJ5dGVzICh0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgdGhpcy50PXRhZzsgdGhpcy5jPWNvbnRlbnRzOyB0aGlzLmw9bGVuZ3RoO1xufVxuTWxCeXRlcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICBzd2l0Y2ggKHRoaXMudCkge1xuICBjYXNlIDk6IC8qQllURVMgfCBBU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICBjYXNlIDA6IC8qQllURVMgfCBVTktPV04qL1xuICAgIGlmIChqc29vX2lzX2FzY2lpKHRoaXMuYykpIHtcbiAgICAgIHRoaXMudCA9IDk7IC8qQllURVMgfCBBU0NJSSovXG4gICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgICB0aGlzLnQgPSA4OyAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgY2FzZSA4OiAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICB9XG59O1xuTWxCeXRlcy5wcm90b3R5cGUudG9VdGYxNiA9IGZ1bmN0aW9uICgpe1xuICB2YXIgciA9IHRoaXMudG9TdHJpbmcoKTtcbiAgaWYodGhpcy50ID09IDkpIHJldHVybiByXG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocik7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uICgpe1xuICB2YXIgY29udGVudCA9IHRoaXMudCA9PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0aGlzLnQsY29udGVudCx0aGlzLmwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyAocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09IDIgLyogUEFSVElBTCAqLylcbiAgICBzLmMgKz0gY2FtbF9zdHJfcmVwZWF0KHMubCAtIHMuYy5sZW5ndGgsICdcXDAnKVxuICBlbHNlXG4gICAgcy5jID0gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShzLmwpO1xuICB2YXIgYiA9IHMuYywgbCA9IGIubGVuZ3RoLCBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBiLmNoYXJDb2RlQXQoaSk7XG4gIGZvciAobCA9IHMubDsgaSA8IGw7IGkrKykgYVtpXSA9IDA7XG4gIHMuYyA9IGE7XG4gIHMudCA9IDQ7IC8qIEFSUkFZICovXG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyAocykge1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgcmV0dXJuIHMuYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciBsID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KGwpO1xuICB2YXIgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgaWYobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCeXRlcy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsMCxhLmxlbmd0aCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5IChhKSB7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgIGEgPSBuZXcgVWludDhBcnJheShhKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL0FsaWFzOiBjYW1sX2ZpbGxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7XG4gIGlmIChsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGlmICgoaTIgPT0gMCkgJiZcbiAgICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbGVuID49IHMyLmMubGVuZ3RoKSkpIHtcbiAgICBzMi5jID0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgaTIgPT0gczIuYy5sZW5ndGgpIHtcbiAgICBzMi5jICs9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzMik7XG4gICAgdmFyIGMxID0gczEuYywgYzIgPSBzMi5jO1xuICAgIGlmIChzMS50ID09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbCA9IE1hdGgubWluIChsZW4sIGMxLmxlbmd0aCAtIGkxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYmxpdF9zdHJpbmcoYSxiLGMsZCxlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSxiLGMsZCxlKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19sZW5ndGggY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpIHsgcmV0dXJuIHMubCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHgpIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBhcmcpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWcsIGFyZ10pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZ3MgKHRhZywgYXJncykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZ10uY29uY2F0KGFyZ3MpKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKVxuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciBnID0gZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSk7XG4gICAgaWYodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGc7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZyxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoK2V4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKSB7XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbiAtIDFdO1xuICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIG4pO1xuICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gayhnKTtcbiAgICAgIHZhciBhcmdzID0gcmVzdC5zbGljZSgpO1xuICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdID0gaztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3MpOyB9O1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3NMZW4tLTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSwgeil7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDJdID0gejtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIGV4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrIClcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQgKyAxO1xuICAgIHJldHVybiBrKGcpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLHYpIHtcbiAgY2FtbF9uYW1lZF92YWx1ZXNbY2FtbF9qc2J5dGVzX29mX3N0cmluZyhubSldID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG5mdW5jdGlvbiBjYW1sX25hbWVkX3ZhbHVlKG5tKSB7XG4gIHJldHVybiBjYW1sX25hbWVkX3ZhbHVlc1tubV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nbG9iYWxfZGF0YVxudmFyIGNhbWxfZ2xvYmFsX2RhdGEgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnVpbGRfc3ltYm9scyhzeW1iKSB7XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpIHtcbiAgICAgIGlmKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV1cbiAgICAgIGlmKG5pZCA+PSAwKVxuICAgICAgICBuID0gbmlkXG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfcmVnaXN0ZXJfZ2xvYmFsOiBjYW5ub3QgbG9jYXRlIFwiICsgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbWxfZ2xvYmFsX2RhdGFbbiArIDFdID0gdjtcbiAgaWYobmFtZV9vcHQpIGNhbWxfZ2xvYmFsX2RhdGFbbmFtZV9vcHRdID0gdjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfZ2xvYmFsX2RhdGEgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9nZXRfZ2xvYmFsX2RhdGEgKCkgeyByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3ByaW50YWJsZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2lzX3ByaW50YWJsZShjKSB7IHJldHVybiArKGMgPiAzMSAmJiBjIDwgMTI3KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX3ByaW50X3N0YXRzXG5mdW5jdGlvbiBjYW1sX21heWJlX3ByaW50X3N0YXRzKHVuaXQpIHsgcmV0dXJuIDAgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgaWYoZ2xvYmFsVGhpcy5xdWl0KSBnbG9iYWxUaGlzLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdClcbiAgICBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsZmFsc2VdKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIGNhbWxfY2FsbGJhY2soYXRfZXhpdCwgWzBdKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnKTtcbiAgICAgIGlmKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9zdGF0aWNfZW52XG5mdW5jdGlvbiBjYW1sX3NldF9zdGF0aWNfZW52KGssdil7XG4gIGlmKCFnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudilcbiAgICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudiA9IHt9XG4gIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W2tdID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fc3lzX2dldGVudiAoY29uc3QpXG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5lbnZcbiAgICAgJiYgcHJvY2Vzcy5lbnZbbl0gIT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9jZXNzLmVudltuXTtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZcbiAgICAgJiYgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKSk7XG4gIGlmKHIgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdXG5cbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmFyZ3ZcbiAgICAgJiYgcHJvY2Vzcy5hcmd2Lmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgYXJndiA9IHByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIil7XG4gICAgdmFyIGNoaWxkX3Byb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG4gICAgaWYoY2hpbGRfcHJvY2VzcyAmJiBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpICogMC4wMDE7XG5mdW5jdGlvbiBjYW1sX3N5c190aW1lICgpIHtcbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHJldHVybiBub3cgKiAwLjAwMSAtIGNhbWxfaW5pdGlhbF90aW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW5cbi8vUmVxdWlyZXM6IGNhbWxfc3lzX3RpbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbihiKSB7XG4gIHJldHVybiBjYW1sX3N5c190aW1lKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JhbmRvbV9zZWVkIG11dGFibGVcbi8vVGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBhcnJheSBzaW5jZSBPQ2FtbCA0LjAuLi5cbmZ1bmN0aW9uIGNhbWxfc3lzX3JhbmRvbV9zZWVkICgpIHtcbiAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICB2YXIgYSA9IGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSg0KSk7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgIHZhciBhID0gbmV3IEludDMyQXJyYXkoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLmJ1ZmZlcik7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeGRnX2RlZmF1bHRzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF94ZGdfZGVmYXVsdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7IC8vIGVtcHR5IGxpc3Rcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmlzRmlsZShyb290LnJlc3QpO1xufVxuLy9BbHdheXNcbi8vUmVxdWlyZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYocHJvY2VzcyAmJiBwcm9jZXNzLm9uKSB7XG4gICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBwcm9jZXNzLmV4aXQgKDIpO1xuICAgIH0pXG4gIH1cbiAgZWxzZSBpZihnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpe1xuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihldmVudCl7XG4gICAgICBpZihldmVudC5lcnJvcil7XG4gICAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGV2ZW50LmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpO1xuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7XG4gIGZsb2F0MzJhWzBdID0geDtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KGZsb2F0MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBpbnQzMmFbMF0gfCAwO1xufVxuXG4vL0ZQIGxpdGVyYWxzIGNhbiBiZSB3cml0dGVuIHVzaW5nIHRoZSBoZXhhZGVjaW1hbFxuLy9ub3RhdGlvbiAweDxtYW50aXNzYSBpbiBoZXg+cDxleHBvbmVudD4gZnJvbSBJU08gQzk5LlxuLy9odHRwczovL2dpdGh1Yi5jb20vZGFua29nYWkvanMtaGV4ZmxvYXQvYmxvYi9tYXN0ZXIvaGV4ZmxvYXQuanNcbi8vUHJvdmlkZXM6IGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCAoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSkgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKFwibmFuXCIpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoKHggPiAwKT9cImluZmluaXR5XCI6XCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8xOih4Pj0wKT8wOjE7XG4gIGlmKHNpZ24pIHggPSAteDtcbiAgdmFyIGV4cCA9IDA7XG4gIGlmICh4ID09IDApIHsgfVxuICBlbHNlIGlmICh4IDwgMSkge1xuICAgIHdoaWxlICh4IDwgMSAmJiBleHAgPiAtMTAyMikgIHsgeCAqPSAyOyBleHAtLSB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikgeyB4IC89IDI7IGV4cCsrIH1cbiAgfVxuICB2YXIgZXhwX3NpZ24gPSBleHAgPCAwID8gJycgOiAnKyc7XG4gIHZhciBzaWduX3N0ciA9ICcnO1xuICBpZiAoc2lnbikgc2lnbl9zdHIgPSAnLSdcbiAgZWxzZSB7XG4gICAgc3dpdGNoKHN0eWxlKXtcbiAgICBjYXNlIDQzIC8qICcrJyAqLzogc2lnbl9zdHIgPSAnKyc7IGJyZWFrO1xuICAgIGNhc2UgMzIgLyogJyAnICovOiBzaWduX3N0ciA9ICcgJzsgYnJlYWs7XG4gICAgZGVmYXVsdDogYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChwcmVjID49IDAgJiYgcHJlYyA8IDEzKSB7XG4gICAgLyogSWYgYSBwcmVjaXNpb24gaXMgZ2l2ZW4sIGFuZCBpcyBzbWFsbCwgcm91bmQgbWFudGlzc2EgYWNjb3JkaW5nbHkgKi9cbiAgICB2YXIgY3N0ID0gTWF0aC5wb3coMixwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmKHByZWMgPj0gMCl7XG4gICAgdmFyIGlkeCA9IHhfc3RyLmluZGV4T2YoJy4nKTtcbiAgICBpZihpZHg8MCkge1xuICAgICAgeF9zdHIgKz0gJy4nICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsICcwJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHgrMStwcmVjO1xuICAgICAgaWYoeF9zdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgeF9zdHIgKz0gY2FtbF9zdHJfcmVwZWF0KHNpemUgLSB4X3N0ci5sZW5ndGgsICcwJyk7XG4gICAgICBlbHNlXG4gICAgICAgIHhfc3RyID0geF9zdHIuc3Vic3RyKDAsc2l6ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoc2lnbl9zdHIgKyAnMHgnICsgeF9zdHIgKyAncCcgKyBleHBfc2lnbiArIGV4cC50b1N0cmluZygxMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgbG8gPSB4LmxvO1xuICB2YXIgbWkgPSB4Lm1pO1xuICB2YXIgaGkgPSB4LmhpO1xuICB2YXIgZXhwID0gKGhpICYgMHg3ZmZmKSA+PiA0O1xuICBpZiAoZXhwID09IDIwNDcpIHtcbiAgICBpZiAoKGxvfG1pfChoaSYweGYpKSA9PSAwKVxuICAgICAgcmV0dXJuIChoaSAmIDB4ODAwMCk/KC1JbmZpbml0eSk6SW5maW5pdHk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsLTI0KTtcbiAgdmFyIHJlcyA9IChsbyprK21pKSprKyhoaSYweGYpO1xuICBpZiAoZXhwID4gMCkge1xuICAgIHJlcyArPSAxNjtcbiAgICByZXMgKj0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gIH0gZWxzZVxuICAgIHJlcyAqPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgaWYgKGhpICYgMHg4MDAwKSByZXMgPSAtIHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9zdWIsY2FtbF9pbnQ2NF9vZl9pbnQzMlxuZnVuY3Rpb24gY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgKHgseSkge1xuICBpZihpc05hTih4KSB8fCBpc05hTih5KSkgcmV0dXJuIE5hTjtcbiAgaWYoeD09eSkgcmV0dXJuIHk7XG4gIGlmKHg9PTApe1xuICAgIGlmKHkgPCAwKVxuICAgICAgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpXG4gIH1cbiAgdmFyIGJpdHMgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoeCk7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X29mX2ludDMyKDEpO1xuICBpZiAoKHg8eSkgPT0gKHg+MCkpXG4gICAgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSlcbiAgZWxzZVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X3N1YihiaXRzLCBvbmUpXG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCl7XG4gIHJldHVybiBNYXRoLnRydW5jKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoaW50MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBmbG9hdDMyYVswXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSByZXR1cm4gMDtcbiAgICBpZiAoeCAhPSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gaXNOYU4oeCk/NDozO1xufVxuLy9Qcm92aWRlczogY2FtbF9tb2RmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX21vZGZfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIHZhciBuZWcgPSAoMS94KSA8IDA7XG4gICAgeCA9IE1hdGguYWJzKHgpO1xuICAgIHZhciBpID0gTWF0aC5mbG9vciAoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7IGkgPSAtaTsgZiA9IC1mOyB9XG4gICAgcmV0dXJuIFswLCBmLCBpXTtcbiAgfVxuICBpZiAoaXNOYU4gKHgpKSByZXR1cm4gWzAsIE5hTiwgTmFOXTtcbiAgcmV0dXJuIFswLCAxL3gsIHhdO1xufVxuLy9Qcm92aWRlczogY2FtbF9sZGV4cF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sZGV4cF9mbG9hdCAoeCxleHApIHtcbiAgZXhwIHw9IDA7XG4gIGlmIChleHAgPiAxMDIzKSB7XG4gICAgZXhwIC09IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbFxuICAgICAgZXhwIC09IDEwMjM7XG4gICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIH1cbiAgfVxuICBpZiAoZXhwIDwgLTEwMjMpIHtcbiAgICBleHAgKz0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIC0xMDIzKTtcbiAgfVxuICB4ICo9IE1hdGgucG93KDIsIGV4cCk7XG4gIHJldHVybiB4O1xufVxuLy9Qcm92aWRlczogY2FtbF9mcmV4cF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0ICh4KSB7XG4gIGlmICgoeCA9PSAwKSB8fCAhaXNGaW5pdGUoeCkpIHJldHVybiBbMCwgeCwgMF07XG4gIHZhciBuZWcgPSB4IDwgMDtcbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgdmFyIGV4cCA9IE1hdGgubWF4KC0xMDIzLCBqc29vX2Zsb29yX2xvZzIoeCkgKyAxKTtcbiAgeCAqPSBNYXRoLnBvdygyLC1leHApO1xuICB3aGlsZSAoeCA8IDAuNSkge1xuICAgIHggKj0gMjtcbiAgICBleHAtLTtcbiAgfVxuICB3aGlsZSAoeCA+PSAxKSB7XG4gICAgeCAqPSAwLjU7XG4gICAgZXhwKys7XG4gIH1cbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgcmV0dXJuIFswLCB4LCBleHBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfY29tcGFyZSAoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoeCA9PT0geCkgcmV0dXJuIDE7XG4gIGlmICh5ID09PSB5KSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0ICh4LCB5KSB7XG4gIGlmICh5ID09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4gKHkgPCAwKT8oLXgpOng7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaWduYml0X2Zsb2F0KHgpIHtcbiAgaWYgKHggPT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4gKHggPCAwKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhwbTFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwbTFfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguZXhwbTEoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZXhwMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHAyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgucG93KDIsIHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMXAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMih4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9oeXBvdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9oeXBvdF9mbG9hdCAoeCwgeSkgeyByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxMF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxMF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5sb2cxMCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Nvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9zaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF90YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3RhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgudGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hdGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9yb3VuZF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9yb3VuZF9mbG9hdCAoeCkge1xuICBpZiAoeCA+PSAwKSB7XG4gICAgdmFyIHkgPSBNYXRoLmZsb29yKHgpO1xuICAgIHJldHVybiAoeCAtIHkgPj0gMC41KT8oeSArIDEpOnlcbiAgfSBlbHNlIHtcbiAgICB2YXIgeSA9IE1hdGguY2VpbCh4KTtcbiAgICByZXR1cm4gKHkgLSB4ID49IDAuNSk/KHkgLSAxKTp5XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNicnQoeCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9IDEuMCAtICgoKChhNSAqIHQgKyBhNCkgKiB0ICsgYTMpICogdCArIGEyKSAqIHQgKyBhMSkgKiB0ICogTWF0aC5leHAoLXggKiB4KTtcblxuICByZXR1cm4gc2lnbiAqIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmY19mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9lcmZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfZXJmY19mbG9hdCh4KSB7XG4gIHJldHVybiAxIC0gY2FtbF9lcmZfZmxvYXQoeCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5IChhLCBiKSB7XG4gICAgdmFyIGF0ID0gU1BMSVQgKiBhO1xuICAgIHZhciBhaGkgPSBhdCAtIChhdCAtIGEpO1xuICAgIHZhciBhbG8gPSBhIC0gYWhpO1xuICAgIHZhciBidCA9IFNQTElUICogYjtcbiAgICB2YXIgYmhpID0gYnQgLSAoYnQgLSBiKTtcbiAgICB2YXIgYmxvID0gYiAtIGJoaTtcbiAgICB2YXIgcCA9IGEgKiBiO1xuICAgIHZhciBlID0gKChhaGkgKiBiaGkgLSBwKSArIGFoaSAqIGJsbyArIGFsbyAqIGJoaSkgKyBhbG8gKiBibG87XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHAsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSAoYSAtIChzIC0gdikpICsgKGIgLSB2KTtcbiAgICByZXR1cm4ge1xuICAgICAgczogcyxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkanVzdCAoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4ID8geCAqICgxICsgKHggPCAwID8gLTEgOiArMSkgKiAoeSA8IDAgPyAtMSA6ICsxKSAqIEVQU0lMT04pIDogeDtcbiAgfTtcblxuICBpZiAoeCA9PT0gMCB8fCB4ICE9PSB4IHx8IHggPT09ICsxIC8gMCB8fCB4ID09PSAtMSAvIDAgfHxcbiAgICAgIHkgPT09IDAgfHwgeSAhPT0geSB8fCB5ID09PSArMSAvIDAgfHwgeSA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICsgejtcbiAgfVxuICBpZiAoeiA9PT0gMCkge1xuICAgIHJldHVybiB4ICogeTtcbiAgfVxuICBpZiAoeiAhPT0geiB8fCB6ID09PSArMSAvIDAgfHwgeiA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiBNYXRoLmFicyh4cyAqIHlzKSAqIDQgLyBFUFNJTE9OKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cbiAgaWYgKE1hdGguYWJzKHpzKSA8IE1hdGguYWJzKHhzICogeXMpICogRVBTSUxPTiAvIDQgKiBFUFNJTE9OIC8gNCkge1xuICAgIHpzID0gKHogPCAwID8gLTEgOiArMSkgKiBNSU5fVkFMVUU7XG4gIH1cblxuICB2YXIgeHkgPSBtdWx0aXBseSh4cywgeXMpO1xuICB2YXIgcyA9IGFkZCh4eS5wLCB6cyk7XG4gIHZhciB1ID0gYWRkKHh5LmUsIHMuZSk7XG4gIHZhciBpID0gYWRkKHMucywgdS5zKTtcblxuICB2YXIgZiA9IGkucyArIGFkanVzdChpLmUsIHUuZSk7XG4gIGlmIChmID09PSAwKSB7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICB2YXIgZnMgPSBmICogc2NhbGU7XG4gIGlmIChNYXRoLmFicyhmcykgPiBNSU5fVkFMVUUpIHtcbiAgICByZXR1cm4gZnM7XG4gIH1cblxuICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdhcyBleHRyYSByb3VuZGluZyBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUuXG4gIHJldHVybiBmcyArIGFkanVzdChmIC0gZnMgLyBzY2FsZSwgaS5lKSAqIHNjYWxlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0IChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LGRwKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpIDwgMS4wKSB7XG4gICAgICByZXR1cm4geC50b0ZpeGVkKGRwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGUgPSBwYXJzZUludCh4LnRvU3RyaW5nKCkuc3BsaXQoJysnKVsxXSk7XG4gICAgICBpZiAoZSA+IDIwKSB7XG4gICAgICAgIGUgLT0gMjA7XG4gICAgICAgIHggLz0gTWF0aC5wb3coMTAsZSk7XG4gICAgICAgIHggKz0gKG5ldyBBcnJheShlKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIGlmKGRwID4gMCkge1xuICAgICAgICAgIHggPSB4ICsgJy4nICsgKG5ldyBBcnJheShkcCsxKSkuam9pbignMCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgICAgZWxzZSByZXR1cm4geC50b0ZpeGVkKGRwKVxuICAgIH1cbiAgfVxuICB2YXIgcywgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIHZhciBwcmVjID0gKGYucHJlYyA8IDApPzY6Zi5wcmVjO1xuICBpZiAoeCA8IDAgfHwgKHggPT0gMCAmJiAxL3ggPT0gLUluZmluaXR5KSkgeyBmLnNpZ24gPSAtMTsgeCA9IC14OyB9XG4gIGlmIChpc05hTih4KSkgeyBzID0gXCJuYW5cIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZSBpZiAoIWlzRmluaXRlKHgpKSB7IHMgPSBcImluZlwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlXG4gICAgc3dpdGNoIChmLmNvbnYpIHtcbiAgICBjYXNlICdlJzpcbiAgICAgIHZhciBzID0geC50b0V4cG9uZW50aWFsKHByZWMpO1xuICAgICAgLy8gZXhwb25lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBkaWdpdHNcbiAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2YnOlxuICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7IGJyZWFrO1xuICAgIGNhc2UgJ2cnOlxuICAgICAgcHJlYyA9IHByZWM/cHJlYzoxO1xuICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICB2YXIgaiA9IHMuaW5kZXhPZignZScpO1xuICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgIGlmIChleHAgPCAtNCB8fCB4ID49IDFlMjEgfHwgeC50b0ZpeGVkKDApLmxlbmd0aCA+IHByZWMpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICB2YXIgaSA9IGogLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgaSA9IHMubGVuZ3RoO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgaWYgKGV4cCA8IDApIHsgcCAtPSBleHAgKyAxOyBzID0geC50b0ZpeGVkKHApOyB9XG4gICAgICAgIGVsc2Ugd2hpbGUgKHMgPSB4LnRvRml4ZWQocCksIHMubGVuZ3RoID4gcHJlYyArIDEpIHAtLTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgICAgdmFyIGkgPSBzLmxlbmd0aCAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpXG4gIHJlcyA9ICtzO1xuICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLFwiXCIpO1xuICByZXMgPSArcztcbiAgaWYgKCgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSB8fCAvXlsrLV0/bmFuJC9pLnRlc3QocykpIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8vaS5leGVjKHMpO1xuICAvLyAgICAgICAgICAxICAgICAgICAyICAgICAgICAgICAgIDMgICAgICAgICAgIDVcbiAgaWYobSl7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCcnKTtcbiAgICB2YXIgbWFudGlzc2EgPSBwYXJzZUludChtWzFdICsgbVsyXSArIG0zLCAxNik7XG4gICAgdmFyIGV4cG9uZW50ID0gKG1bNV18MCkgLSA0Km0zLmxlbmd0aDtcbiAgICByZXMgPSBtYW50aXNzYSAqIE1hdGgucG93KDIsIGV4cG9uZW50KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmKC9eXFwrP2luZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBJbmZpbml0eTtcbiAgaWYoL14taW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIC1JbmZpbml0eTtcbiAgY2FtbF9mYWlsd2l0aChcImZsb2F0X29mX3N0cmluZ1wiKTtcbn1cbiIsIi8qXG5UbyBkZWFsIHdpdGggZWZmZWN0cywgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGludHVpdGl2ZWx5IGNvbXBvc2VkIG9mXG5hIHN0YWNrIG9mIGZpYmVycy4gRWFjaCBmaWJlciBoYXMgYSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb25cbihvbmUtYXJndW1lbnQgSmF2YVNjcmlwdCBmdW5jdGlvbiksIGEgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZFxuYSB0cmlwbGUgb2YgaGFuZGxlcnMsIHdoaWNoIGFyZSBpbnZva2VkIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXNcbihlaXRoZXIgd2l0aCBhIHZhbHVlIG9yIGFuIGV4Y2VwdGlvbikgb3Igd2hlbiBhbiBlZmZlY3QgaXMgcGVyZm9ybWVkLlxuVGhlIGxvdy1sZXZlbCBjb250aW51YXRpb24gb2YgdGhlIHRvcG1vc3QgZmliZXIgKHdoaWNoIGlzIGN1cnJlbnRseVxuZXhlY3V0aW5nKSBpcyBwYXNzZWQgZnJvbSBmdW5jdGlvbiB0byBmdW5jdGlvbiBhcyBhbiBhZGRpdGlvbmFsXG5hcmd1bWVudC4gSXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBpcyBzdG9yZWQgaW5cbltjYW1sX2V4bl9zdGFja10uIEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFjayB3aGVuXG5lbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuIFRoZW4sIGhhbmRsZXJzIGFuZFxudGhlIHJlbWFpbmluZyBmaWJlcnMgYXJlIHN0b3JlZCBpbiBbY2FtbF9maWJlcl9zdGFja10uIFRvIGluc3RhbGwgYW5cbmVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBpcyBhbiBPQ2FtbCBsaXN0IG9mIGV4Y2VwdGlvbiBoYW5kbGVyc1xudmFyIGNhbWxfZXhuX3N0YWNrID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3B1c2hfdHJhcChoYW5kbGVyKSB7XG4gIGNhbWxfZXhuX3N0YWNrPVswLGhhbmRsZXIsY2FtbF9leG5fc3RhY2tdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfdHJhcCgpIHtcbiAgaWYgKCFjYW1sX2V4bl9zdGFjaykgcmV0dXJuIGZ1bmN0aW9uKHgpe3Rocm93IHg7fVxuICB2YXIgaCA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICBjYW1sX2V4bl9zdGFjaz1jYW1sX2V4bl9zdGFja1syXTtcbiAgcmV0dXJuIGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBoYXMgdGhlIHNoYXBlIHtoLCByOntrLCB4LCBlfX0gd2hlcmUgaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVyc1xuLy8gKHNlZSBlZmZlY3QuanMpIGFuZCBrLCB4IGFuZCBlIGFyZSB0aGUgc2F2ZWQgY29udGludWF0aW9uLFxuLy8gZXhjZXB0aW9uIHN0YWNrIGFuZCBmaWJlciBzdGFjayBvZiB0aGUgcGFyZW50IGZpYmVyLlxudmFyIGNhbWxfZmliZXJfc3RhY2s7XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgaykge1xuICBpZiAoIXN0YWNrKSBjYW1sX3JhaXNlX2NvbnN0YW50XG4gICAgICAgICAgICAgICAgIChjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIikpO1xuICAvLyBVcGRhdGUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggdGhlIHN0YWNrIG9mIGZpYmVycyBpbiBbc3RhY2tdIGluXG4gIC8vIG9yZGVyIHRvIHJlc3VtZSB0aGUgY29udGludWF0aW9uXG4gIGRvIHtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOnN0YWNrWzNdLCByOntrOmssIHg6Y2FtbF9leG5fc3RhY2ssIGU6Y2FtbF9maWJlcl9zdGFja319O1xuICAgIGsgPSBzdGFja1sxXTtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHN0YWNrWzJdO1xuICAgIHN0YWNrID0gc3RhY2tbNF07XG4gIH0gd2hpbGUgKHN0YWNrKVxuICByZXR1cm4gaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfZmliZXJcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIHJlbSA9IGNhbWxfZmliZXJfc3RhY2sucjtcbiAgY2FtbF9leG5fc3RhY2sgPSByZW0ueDtcbiAgY2FtbF9maWJlcl9zdGFjayA9IHJlbS5lO1xuICByZXR1cm4gcmVtLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGVyZm9ybV9lZmZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGNvbnQsIGswKSB7XG4gIC8vIEFsbG9jYXRlIGEgY29udGludWF0aW9uIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBvbmVcbiAgaWYgKCFjb250KSBjb250ID0gWzI0NSAvKmNvbnRpbnVhdGlvbiovLCAwXTtcbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2ZpYmVyX3N0YWNrLmhbM107XG4gIC8vIENvbnMgdGhlIGN1cnJlbnQgZmliZXIgb250byB0aGUgY29udGludWF0aW9uOlxuICAvLyAgIGNvbnQgOj0gQ29ucyAoaywgZXhuX3N0YWNrLCBoYW5kbGVycywgIWNvbnQpXG4gIGNvbnRbMV0gPSBbMCxrMCxjYW1sX2V4bl9zdGFjayxjYW1sX2ZpYmVyX3N0YWNrLmgsY29udFsxXV07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2hhbmRsZXIoZWZmLGNvbnQsazEsazEpXG4gICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLFtlZmYsY29udCxrMSxrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9maWJlcl9zdGFjaywgY2FtbF9jYWxsX2dlbiwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVyblxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIGZ1bmN0aW9uIGNhbGwoaSwgeCkge1xuICAgIHZhciBmPWNhbWxfZmliZXJfc3RhY2suaFtpXTtcbiAgICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2NhbWxfY2FsbF9nZW4oZixhcmdzKVxuICAgICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpO1xuICB9XG4gIGZ1bmN0aW9uIGh2YWwoeCkge1xuICAgIC8vIENhbGwgW2h2XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMSwgeCk7XG4gIH1cbiAgZnVuY3Rpb24gaGV4bihlKSB7XG4gICAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgyLCBlKTtcbiAgfVxuICByZXR1cm4gWzAsIGh2YWwsIFswLCBoZXhuLCAwXSwgWzAsIGh2LCBoeCwgaGZdLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCkge1xuICB2YXIgc3RhY2s9Y29udFsxXTtcbiAgY29udFsxXT0wO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Yyhjb250LCBodmFsLCBoZXhuLCBoZWZmKSB7XG4gIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgc3RhY2tbM10gPSBbMCwgaHZhbCwgaGV4biwgaGVmZl07XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1xuZnVuY3Rpb24gY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fbmV3XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcodW5pdCl7XG4gICAgcmV0dXJuIHtjb25kaXRpb246MX07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3dhaXQodCxtdXRleHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3RcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIUlmOiBlZmZlY3RzXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJFZmZlY3QgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIER1bW15IGZpbGVzeXN0ZW1cblxuLy9Qcm92aWRlczogY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKXtcbiAgcmV0dXJuIChuYW1lLnNsaWNlKC0xKSAhPT0gXCIvXCIpID8gKG5hbWUgKyBcIi9cIikgOiBuYW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QpXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywnLycpO1xuZWxzZVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9ICBcIi9zdGF0aWNcIjtcbmNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKGNhbWxfY3VycmVudF9kaXIpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9yb290XG4vL1JlcXVpcmVzOiBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX2dldF9yb290KHBhdGgpe1xuICB2YXIgeCA9IHBhdGhfaXNfYWJzb2x1dGUocGF0aCk7XG4gIGlmICgheCkgcmV0dXJuO1xuICByZXR1cm4geFswXSArIFwiL1wifVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jvb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2V0X3Jvb3QsIGNhbWxfY3VycmVudF9kaXIsIGNhbWxfZmFpbHdpdGhcbnZhciBjYW1sX3Jvb3QgPSBjYW1sX2dldF9yb290KGNhbWxfY3VycmVudF9kaXIpIHx8IGNhbWxfZmFpbHdpdGgoXCJ1bmFibGUgdG8gY29tcHV0ZSBjYW1sX3Jvb3RcIik7XG5cblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKXsgIH1cblxuLy9Qcm92aWRlczogcGF0aF9pc19hYnNvbHV0ZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpIHtcbiAgZnVuY3Rpb24gcG9zaXgocGF0aCkge1xuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSByZXR1cm4gW1wiXCIsIHBhdGguc3Vic3RyaW5nKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9IC9eKFthLXpBLVpdOnxbXFxcXC9dezJ9W15cXFxcL10rW1xcXFwvXStbXlxcXFwvXSspPyhbXFxcXC9dKT8oW1xcc1xcU10qPykkLztcbiAgICB2YXIgcmVzdWx0ID0gc3BsaXREZXZpY2VSZS5leGVjKHBhdGgpO1xuICAgIHZhciBkZXZpY2UgPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgdmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuICAgIC8vIFVOQyBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlXG4gICAgaWYgKEJvb2xlYW4ocmVzdWx0WzJdIHx8IGlzVW5jKSkge1xuICAgICAgdmFyIHJvb3QgPSAocmVzdWx0WzFdIHx8ICcnKTtcbiAgICAgIHZhciBzZXAgPSAocmVzdWx0WzJdIHx8ICcnKTtcbiAgICAgIHJldHVybiBbcm9vdCwgcGF0aC5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luMzIgOiBwb3NpeDtcbiAgfVxuICBlbHNlIHJldHVybiBwb3NpeFxufVxudmFyIHBhdGhfaXNfYWJzb2x1dGUgPSBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3BhdGhcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX21ha2VfcGF0aCAobmFtZSkge1xuICBuYW1lPWNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiggIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkgKVxuICAgIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdChcIi9cIik7XG4gIHZhciBuY29tcCA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGk8Y29tcC5sZW5ndGg7IGkrKyl7XG4gICAgc3dpdGNoKGNvbXBbaV0pe1xuICAgIGNhc2UgXCIuLlwiOiBpZihuY29tcC5sZW5ndGg+MSkgbmNvbXAucG9wKCk7IGJyZWFrO1xuICAgIGNhc2UgXCIuXCI6IGJyZWFrO1xuICAgIGNhc2UgXCJcIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX3N5c19mZHNbdmZkXTtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfYmFfbWFwX2ZpbGUgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX21hcF9maWxlXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlKGFyZ3YsYXJnbil7XG4gIHJldHVybiBjYW1sX2JhX21hcF9maWxlKGFyZ3ZbMF0sYXJndlsxXSxhcmd2WzJdLGFyZ3ZbM10sYXJndls0XSxhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsY29udGVudCl7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSlcbiAgICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KTtcbiAgZWxzZSB7XG4gICAgaWYoIWdsb2JhbFRoaXMuY2FtbF9mc190bXApIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wLnB1c2goe25hbWU6bmFtZSxjb250ZW50OmNvbnRlbnR9KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mc19pbml0XG4vL1JlcXVpcmVzOiBqc29vX2NyZWF0ZV9maWxlXG5mdW5jdGlvbiBjYW1sX2ZzX2luaXQgKCl7XG4gIHZhciB0bXA9Z2xvYmFsVGhpcy5jYW1sX2ZzX3RtcFxuICBpZih0bXApe1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyBpKyspe1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSx0bXBbaV0uY29udGVudCk7XG4gICAgfVxuICB9XG4gIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSA9IGpzb29fY3JlYXRlX2ZpbGU7XG4gIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZighIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKSBjYW1sX2ZhaWx3aXRoKFwiY2Fubm90IHJlZ2lzdGVyIGZpbGVcIik7XG4gIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKHJvb3QucmVzdCxjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpO1xuICB2YXIgY29udGVudCA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY29udGVudCk7XG4gIHJldHVybiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVhZF9maWxlX2NvbnRlbnRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGZpbGUucmVhZCgwLGJ1ZiwwLGxlbik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGJ1ZilcbiAgfVxuICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkgJiYgIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcblxuICB2YXIgYSA9IHRoaXMucmVhZGRpcihuYW1lKTtcbiAgdmFyIGMgPSBmYWxzZTtcbiAgdmFyIGkgPSAwO1xuICByZXR1cm4geyByZWFkU3luYyA6IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGMpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpID09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZW50cnkgPSBhW2ldO1xuICAgIGkrKztcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9XG4gIH0pXG4gICAgLCBjbG9zZVN5bmM6IChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjID0gdHJ1ZTtcbiAgICAgIGEgPSBbXTtcbiAgICB9KVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICB9XG4gIGlmKGxlbikge1xuICAgIHZhciBkYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICBidWYuc2V0KGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoZGF0YSksIHBvcyk7XG4gIH1cbiAgcmV0dXJuIGxlblxufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkX291dChmZCxmbGFncykge1xuICBNbEZha2VGaWxlLmNhbGwodGhpcywgY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICB0aGlzLmxvZyA9IChmdW5jdGlvbiAocykgeyByZXR1cm4gMCB9KTtcbiAgaWYoZmQgPT0gMSAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gIGVsc2UgaWYoZmQgPT0gMiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmVycm9yO1xuICBlbHNlIGlmKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZ1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCB9XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmxvZykge1xuICAgIGlmKGxlbiA+IDBcbiAgICAgICAmJiBwb3MgPj0gMFxuICAgICAgICYmIHBvcytsZW4gPD0gYnVmLmxlbmd0aFxuICAgICAgICYmIGJ1Zltwb3MrbGVuLTFdID09IDEwKVxuICAgICAgbGVuIC0tO1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgc3JjLCAwLCBsZW4pO1xuICAgIHRoaXMubG9nKHNyYy50b1V0ZjE2KCkpO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGlzIHdyaXRlIG9ubHlcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvZyA9IHVuZGVmaW5lZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkKG5hbWUsIGZpbGUsZmxhZ3MpIHtcbiAgdGhpcy5maWxlID0gZmlsZTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuXG5NbEZha2VGZC5wcm90b3R5cGUuZXJyX2Nsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5uYW1lICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGggKClcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS53cml0ZShvZmZzZXQsYnVmLHBvcyxsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZmlsZSA9IHVuZGVmaW5lZDtcbn1cbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gIC8vIEZvciBudW0gPCAxLjVcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC5cbiAgLy8gV2UgYWRkICsyIHRvIHRoZSBhcnJheSBsZW5ndGg6XG4gIC8vIC0gKzEgZm9yIHRoZSB0YWdcbiAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBsZW5ndGhfbmF0XG5mdW5jdGlvbiBsZW5ndGhfbmF0KHgpIHtcbiAgcmV0dXJuIHguZGF0YS5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydFxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IodGFyZ2V0KSB7XG4gIHJldHVybiB7fTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvcihjdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbChjdXJzb3IsIGNhbGxiYWNrcywgbnVtKSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBVSW50OEFycmF5UmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IHM7IHRoaXMuaSA9IGk7IH1cblVJbnQ4QXJyYXlSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK10gPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCA4KSB8IHNbaSArIDFdXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAgICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM107XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbFN0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gTWxTdHJpbmdSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTsgdGhpcy5pID0gaTsgfVxuTWxTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMykpID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zdWJzdHJpbmcoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIHZhciBzID0gdGhpcy5zO1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIG9mZnNldCA9IHRoaXMub2Zmc2V0KGkpO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5kYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgfVxufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzIChhKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKGNhbWxfaW50NjRfb2ZfYnl0ZXMgKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlclxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChzLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICBzaXplWzBdID0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMgKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyAodik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB3cml0ZXIud3JpdGUgKDgsIGJbaV0pO1xuICBzaXplc1swXSA9IDg7IHNpemVzWzFdID0gODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl91bm1hcnNoYWxcbmZ1bmN0aW9uIGNhbWxfaW50MzJfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHNpemVbMF0gPSA0O1xuICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHN3aXRjaCAocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6XG4gICAgc2l6ZVswXSA9IDQ7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICBjYXNlIDI6XG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBuYXRpdmUgaW50ZWdlciB2YWx1ZSB0b28gbGFyZ2VcIik7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPVxuICAgIHtcIl9qXCI6IHtcbiAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQ2NF91bm1hcnNoYWwsXG4gICAgICBzZXJpYWxpemUgIDogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgICAgZml4ZWRfbGVuZ3RoIDogOCxcbiAgICAgIGNvbXBhcmUgOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgICBoYXNoIDogY2FtbF9pbnQ2NF9oYXNoXG4gICAgfSxcbiAgICAgXCJfaVwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9uXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9iaWdhcnJheVwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyYXlcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyMDJcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycjAyXCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH1cbiAgICB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9mbG9hdF9vZl9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG4gIHZhciBtYWdpYyA9IHJlYWRlci5yZWFkMzJ1ICgpXG4gIHN3aXRjaChtYWdpYyl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAwO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSBkYXRhX2xlbjtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gcmVhZGVyLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDE7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIpO1xuICAgIGJyZWFrXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWs7XG4gIH1cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZihjb21wcmVzc2VkKSB7XG4gICAgaWYoY2FtbF9kZWNvbXByZXNzX2lucHV0KSB7XG4gICAgICB2YXIgZGF0YSA9IHJlYWRlci5yZWFkdWludDhhcnJheShkYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkodW5jb21wcmVzc2VkX2RhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBjYW1sX2RlY29tcHJlc3NfaW5wdXQoZGF0YSwgcmVzKTtcbiAgICAgIHZhciByZWFkZXIgPSBuZXcgVUludDhBcnJheVJlYWRlcihyZXMsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNvbXByZXNzZWQgb2JqZWN0LCBjYW5ub3QgZGVjb21wcmVzc1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHJlcyA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB9XG4gIGlmICh0eXBlb2Ygb2ZzIT1cIm51bWJlclwiKSBvZnNbMF0gPSByZWFkZXIuaTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAyMFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNlxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIHZhciByID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKSwgb2ZzKTtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cblxuICBzd2l0Y2goci5yZWFkMzJ1KCkpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgIGJyZWFrO1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWtcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5NYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvKiBwb2x5ZmlsbCAodXNpbmcgbGluZWFyIHNlYXJjaCkgKi9cbiAgICBmdW5jdGlvbiBOYWl2ZUxvb2t1cChvYmpzKSB7IHRoaXMub2JqcyA9IG9ianM7IH1cbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24odikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9ianMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMub2Jqc1tpXSA9PT0gdikgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfTtcbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBEbyBub3RoaW5nIGhlcmUuIFtNbE9iamVjdFRhYmxlLnN0b3JlXSB3aWxsIHB1c2ggdG8gW3RoaXMub2Jqc10gZGlyZWN0bHkuXG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IE5haXZlTG9va3VwKHRoaXMub2Jqcyk7XG4gICAgfTtcbiAgfSgpO1xufVxuZWxzZSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBnbG9iYWxUaGlzLk1hcCgpO1xuICB9O1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5zdG9yZSA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5sb29rdXAuc2V0KHYsIHRoaXMub2Jqcy5sZW5ndGgpO1xuICB0aGlzLm9ianMucHVzaCh2KTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUucmVjYWxsID0gZnVuY3Rpb24odikge1xuICB2YXIgaSA9IHRoaXMubG9va3VwLmdldCh2KTtcbiAgcmV0dXJuIChpID09PSB1bmRlZmluZWQpXG4gICAgPyB1bmRlZmluZWQgOiB0aGlzLm9ianMubGVuZ3RoIC0gaTsgICAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbnZhciBjYW1sX291dHB1dF92YWwgPSBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gV3JpdGVyICgpIHsgdGhpcy5jaHVuayA9IFtdOyB9XG4gIFdyaXRlci5wcm90b3R5cGUgPSB7XG4gICAgY2h1bmtfaWR4OjIwLCBibG9ja19sZW46MCwgb2JqX2NvdW50ZXI6MCwgc2l6ZV8zMjowLCBzaXplXzY0OjAsXG4gICAgd3JpdGU6ZnVuY3Rpb24gKHNpemUsIHZhbHVlKSB7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9hdDpmdW5jdGlvbiAocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3BvcysrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9jb2RlOmZ1bmN0aW9uIChzaXplLCBjb2RlLCB2YWx1ZSkge1xuICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9IGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9zaGFyZWQ6ZnVuY3Rpb24gKG9mZnNldCkge1xuICAgICAgaWYgKG9mZnNldCA8ICgxIDw8IDgpKSB0aGlzLndyaXRlX2NvZGUoOCwgMHgwNCAvKmNzdC5DT0RFX1NIQVJFRDgqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgaWYgKG9mZnNldCA8ICgxIDw8IDE2KSkgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9LFxuICAgIHBvczpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmNodW5rX2lkeCB9LFxuICAgIGZpbmFsaXplOmZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuYmxvY2tfbGVuID0gdGhpcy5jaHVua19pZHggLSAyMDtcbiAgICAgIHRoaXMuY2h1bmtfaWR4ID0gMDtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCAweDg0OTVBNkJFKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLmJsb2NrX2xlbik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5vYmpfY291bnRlcik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfNjQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2h1bms7XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbiAodiwgZmxhZ3MpIHtcbiAgICBmbGFncyA9IGNhbWxfbGlzdF90b19qc19hcnJheShmbGFncyk7XG5cbiAgICB2YXIgbm9fc2hhcmluZyA9IChmbGFncy5pbmRleE9mKDAgLypNYXJzaGFsLk5vX3NoYXJpbmcqLykgIT09IC0xKSxcbiAgICAgICAgY2xvc3VyZXMgPSAgKGZsYWdzLmluZGV4T2YoMSAvKk1hcnNoYWwuQ2xvc3VyZXMqLykgIT09IC0xKTtcbiAgICAvKiBNYXJzaGFsLkNvbXBhdF8zMiBpcyByZWR1bmRhbnQgc2luY2UgaW50ZWdlcnMgYXJlIDMyLWJpdCBhbnl3YXkgKi9cblxuICAgIGlmIChjbG9zdXJlcylcbiAgICAgIGNvbnNvbGUud2FybihcImluIGNhbWxfb3V0cHV0X3ZhbDogZmxhZyBNYXJzaGFsLkNsb3N1cmVzIGlzIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXG4gICAgdmFyIHdyaXRlciA9IG5ldyBXcml0ZXIgKCk7XG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGludGVybl9vYmpfdGFibGUgPSBub19zaGFyaW5nID8gbnVsbCA6IG5ldyBNbE9iamVjdFRhYmxlKCk7XG5cbiAgICBmdW5jdGlvbiBtZW1vKHYpIHtcbiAgICAgIGlmIChub19zaGFyaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgICB2YXIgZXhpc3Rpbmdfb2Zmc2V0ID0gaW50ZXJuX29ial90YWJsZS5yZWNhbGwodik7XG4gICAgICBpZiAoZXhpc3Rpbmdfb2Zmc2V0KSB7IHdyaXRlci53cml0ZV9zaGFyZWQoZXhpc3Rpbmdfb2Zmc2V0KTsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGVsc2UgeyBpbnRlcm5fb2JqX3RhYmxlLnN0b3JlKHYpOyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlcm5fcmVjICh2KSB7XG4gICAgICBpZiAodi5jYW1sX2N1c3RvbSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbmFtZSA9IHYuY2FtbF9jdXN0b207XG4gICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbbmFtZV07XG4gICAgICAgIHZhciBzel8zMl82NCA9IFswLDBdO1xuICAgICAgICBpZighb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZihvcHMuZml4ZWRfbGVuZ3RoID09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE4IC8qY3N0LkNPREVfQ1VTVE9NX0xFTiovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBoZWFkZXJfcG9zID0gd3JpdGVyLnBvcyAoKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zLCAzMiwgc3pfMzJfNjRbMF0pO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgNCwgMzIsIDApOyAvLyB6ZXJvXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA4LCAzMiwgc3pfMzJfNjRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBvbGRfcG9zID0gd3JpdGVyLnBvcygpO1xuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgaWYgKG9wcy5maXhlZF9sZW5ndGggIT0gd3JpdGVyLnBvcygpIC0gb2xkX3BvcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGluY29ycmVjdCBmaXhlZCBzaXplcyBzcGVjaWZpZWQgYnkgXCIgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAyICsgKChzel8zMl82NFswXSArIDMpID4+IDIpO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyICsgKChzel8zMl82NFsxXSArIDcpID4+IDMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICAgIGlmICh2WzBdID09IDI1MSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChBYnN0cmFjdClcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSAmJiBtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIGlmICh2WzBdIDwgMTYgJiYgdi5sZW5ndGggLSAxIDwgOClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8gKyB2WzBdICsgKCh2Lmxlbmd0aCAtIDEpPDw0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwOCAvKmNzdC5DT0RFX0JMT0NLMzIqLywgKCh2Lmxlbmd0aC0xKSA8PCAxMCkgfCB2WzBdKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gdi5sZW5ndGg7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IHYubGVuZ3RoO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxKSBzdGFjay5wdXNoICh2LCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgICBpZighKGNhbWxfaXNfbWxfYnl0ZXMoY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKSkpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogW0J5dGVzLnRdIGNhbm5vdCBzYWZlbHkgYmUgbWFyc2hhbGVkIHdpdGggWy0tZW5hYmxlIHVzZS1qcy1zdHJpbmddXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT0gKHZ8MCkpe1xuICAgICAgICAgIHZhciB0eXBlX29mX3YgPSB0eXBlb2YgdjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIElmIGEgZmxvYXQgaGFwcGVucyB0byBiZSBhbiBpbnRlZ2VyIGl0IGlzIHNlcmlhbGl6ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgIC8vIChKc19vZl9vY2FtbCBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSB0eXBlIG9mIGFuIGludGVnZXIgbnVtYmVyIGlzXG4gICAgICAgICAgLy8gZmxvYXQgb3IgaW50ZWdlci4pIFRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGNyYXNoZXMgd2hlblxuICAgICAgICAgIC8vIHVubWFyc2hhbGxpbmcgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bnRpbWUuIEl0IHNlZW1zIGJldHRlciB0b1xuICAgICAgICAgIC8vIHN5c3RlbWF0aWNhbGx5IGZhaWwgb24gbWFyc2hhbGxpbmcuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAgICAgICAgICBpZih0eXBlX29mX3YgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyAgICAgICAgICB2YXIgdCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHYpKTtcbiAgICAgICAgICAvLyAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MEIgLypjc3QuQ09ERV9ET1VCTEVfQklHKi8pO1xuICAgICAgICAgIC8vICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGk8ODsgaSsrKXt3cml0ZXIud3JpdGUoOCx0W2ldKX1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ID49IDAgJiYgdiA8IDB4NDApIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDBYNDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAoMSA8PCA3KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDAgLypjc3QuQ09ERV9JTlQ4Ki8sIHYpO1xuICAgICAgICAgIGVsc2UgaWYgKHYgPj0gLSgxIDw8IDE1KSAmJiB2IDwgKDEgPDwgMTUpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMTYsIDB4MDEgLypjc3QuQ09ERV9JTlQxNiovLCB2KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwMiAvKmNzdC5DT0RFX0lOVDMyKi8sIHYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGV4dGVybl9yZWMgKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIHZhciB2ID0gc3RhY2sucG9wICgpO1xuICAgICAgaWYgKGkgKyAxIDwgdi5sZW5ndGgpIHN0YWNrLnB1c2ggKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWMgKHZbaV0pO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgd3JpdGVyLm9ial9jb3VudGVyID0gaW50ZXJuX29ial90YWJsZS5vYmpzLmxlbmd0aDtcbiAgICB3cml0ZXIuZmluYWxpemUoKTtcbiAgICByZXR1cm4gd3JpdGVyLmNodW5rO1xuICB9XG59ICgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfYmxpdF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIChzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKTtcbiAgaWYgKHQubGVuZ3RoID4gbGVuKSBjYW1sX2ZhaWx3aXRoIChcIk1hcnNoYWwudG9fYnVmZmVyOiBidWZmZXIgb3ZlcmZsb3dcIik7XG4gIGNhbWxfYmxpdF9ieXRlcyh0LCAwLCBzLCBvZnMsIHQubGVuZ3RoKTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIElvXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Zkc1xudmFyIGNhbWxfc3lzX2ZkcyA9IG5ldyBBcnJheSgzKTtcblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlKSBmaWxlLmNsb3NlKCk7XG4gIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLGlkeCkge1xuICBpZihpZHggPT0gdW5kZWZpbmVkKXtcbiAgICBpZHggPSBjYW1sX3N5c19mZHMubGVuZ3RoO1xuICB9XG4gIGNhbWxfc3lzX2Zkc1tpZHhdID0gZmlsZTtcbiAgcmV0dXJuIGlkeCB8IDA7XG59XG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuIChuYW1lLCBmbGFncywgX3Blcm1zKSB7XG4gIHZhciBmID0ge307XG4gIHdoaWxlKGZsYWdzKXtcbiAgICBzd2l0Y2goZmxhZ3NbMV0pe1xuICAgIGNhc2UgMDogZi5yZG9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMTogZi53cm9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMjogZi5hcHBlbmQgPSAxO2JyZWFrO1xuICAgIGNhc2UgMzogZi5jcmVhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNDogZi50cnVuY2F0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA1OiBmLmV4Y2wgPSAxOyBicmVhaztcbiAgICBjYXNlIDY6IGYuYmluYXJ5ID0gMTticmVhaztcbiAgICBjYXNlIDc6IGYudGV4dCA9IDE7YnJlYWs7XG4gICAgY2FzZSA4OiBmLm5vbmJsb2NrID0gMTticmVhaztcbiAgICB9XG4gICAgZmxhZ3M9ZmxhZ3NbMl07XG4gIH1cbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LGYpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCAoZmlsZSwgdW5kZWZpbmVkKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGZpbGUoZmQsIGZsYWdzKSB7XG4gICAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIG5ldyBNbEZha2VGZF9vdXQoZmQsIGZsYWdzKVxuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgwLHtyZG9ubHk6MSxhbHRuYW1lOlwiL2Rldi9zdGRpblwiLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMCk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgxLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMSk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgyLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMik7XG59KSgpXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xudmFyIGNhbWxfbWxfY2hhbm5lbHMgPSBuZXcgQXJyYXkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCAoKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBjID0gMDsgYyA8IGNhbWxfbWxfY2hhbm5lbHMubGVuZ3RoOyBjKyspe1xuICAgIGlmKGNhbWxfbWxfY2hhbm5lbHNbY10gJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vcGVuZWQgJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vdXQpXG4gICAgICBsPVswLGNhbWxfbWxfY2hhbm5lbHNbY10uZmQsbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy5yZG9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgcmVhZG9ubHlcIik7XG4gIHZhciBidWZmZXJlZCA9IChmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQpID8gZmlsZS5mbGFncy5idWZmZXJlZCA6IDE7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICBidWZmZXJlZDpidWZmZXJlZFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3Mud3Jvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHdyaXRlb25seVwiKTtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXJfbWF4OjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICByZWZpbGw6cmVmaWxsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbi8vQWxpYXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5maWxlLmZsYWdzLnRleHQgPSAhbW9kZVxuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYmluYXJ5X21vZGUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5maWxlLmZsYWdzLmJpbmFyeSBcbn1cblxuLy9JbnB1dCBmcm9tIGluX2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9jbG9zZV9jaGFubmVsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jbG9zZVxuZnVuY3Rpb24gY2FtbF9tbF9jbG9zZV9jaGFubmVsIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5maWxlLmxlbmd0aCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGggKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQoY2hhbmlkLGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub3V0cHV0ID0gKGZ1bmN0aW9uIChzKSB7ZihzKX0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCxmKSB7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5yZWZpbGwgPSBmO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVmaWxsIChjaGFuKSB7XG4gIGlmKGNoYW4ucmVmaWxsICE9IG51bGwpe1xuICAgIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICAgIHZhciBzdHJfYSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cik7XG4gICAgaWYgKHN0cl9hLmxlbmd0aCA9PSAwKSB7XG4gICAgICBjaGFuLnJlZmlsbCA9IG51bGxcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlci5sZW5ndGggPCBjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpe1xuICAgICAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCk7XG4gICAgICAgIGIuc2V0KGNoYW4uYnVmZmVyKTtcbiAgICAgICAgY2hhbi5idWZmZXIgPSBiO1xuICAgICAgfVxuICAgICAgY2hhbi5idWZmZXIuc2V0KHN0cl9hLGNoYW4uYnVmZmVyX21heCk7XG4gICAgICBjaGFuLm9mZnNldCArPSBzdHJfYS5sZW5ndGg7XG4gICAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gc3RyX2EubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgbnJlYWQgPSBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIGNoYW4uYnVmZmVyX21heCwgY2hhbi5idWZmZXIubGVuZ3RoIC0gY2hhbi5idWZmZXJfbWF4KTtcbiAgICBjaGFuLm9mZnNldCArPSBucmVhZDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gbnJlYWQ7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dCAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmlnYXJyYXkgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9ibG9jayAoY2hhbmlkLCBiYSwgaSwgbCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIG4gPSBsO1xuICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBpZihsIDw9IGF2YWlsKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH1cbiAgZWxzZSBpZihhdmFpbCA+IDApIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgYXZhaWwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGF2YWlsO1xuICAgIG4gPSBhdmFpbDtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgaWYobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIG4pLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IG47XG4gIH1cbiAgcmV0dXJuIG4gfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZShyIDwgbil7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgICAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICAgICAgYnJlYWs7XG4gICAgICBidWZmZXJbb2Zmc2V0K3JdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZihyID09IDApXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoaGVhZGVyKSwgMCk7XG4gIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4gKyBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBidWYuc2V0KGhlYWRlciwwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKVxuICBpZihyIDwgbGVuKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgb2Zmc2V0ID0gWzBdO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgb2Zmc2V0KTtcbiAgY2hhbi5vZmZzZXQgPSBjaGFuLm9mZnNldCArIG9mZnNldFswXTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXBcbi8vUmVxdWlyZXM6IGNhbWxfaW5wdXRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhciAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgfVxuICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB2YXIgcmVzID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfY2hhciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA0OyBpKyspe1xuICAgIHJlcyA9IChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcykge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBpZihwb3MgPj0gY2hhbi5vZmZzZXQgLSBjaGFuLmJ1ZmZlcl9tYXhcbiAgICAgJiYgcG9zIDw9IGNoYW4ub2Zmc2V0XG4gICAgICYmIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkpIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gY2hhbi5idWZmZXJfbWF4IC0gKGNoYW4ub2Zmc2V0IC0gcG9zKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCxwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfcG9zX2luKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0IC0gKGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbihjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX2luKGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW5fNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX2luKGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X3NjYW5fbGluZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZihwID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+IDApIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIpLDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmKGNoYW4uYnVmZmVyX21heCA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgICB2YXIgcHJldl9tYXggPSBjaGFuLmJ1ZmZlcl9tYXg7XG4gICAgICBjYW1sX3JlZmlsbCAoY2hhbik7XG4gICAgICBpZihwcmV2X21heCA9PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChjaGFuLmJ1ZmZlcltwKytdICE9IDEwKTtcbiAgcmV0dXJuIChwIC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2ZsdXNoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IGZsdXNoIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGlmKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09IDApIHJldHVybiAwO1xuICBpZihjaGFuLm91dHB1dCkge1xuICAgIGNoYW4ub3V0cHV0KGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3VycikpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfdGFcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCA+IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGgpO1xuICAgIGIuc2V0KGNoYW4uYnVmZmVyKTtcbiAgICBjaGFuLmJ1ZmZlciA9IGJcbiAgfVxuICBzd2l0Y2goY2hhbi5idWZmZXJlZCl7XG4gIGNhc2UgMDogLy8gVW5idWZmZXJlZFxuICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrXG4gIGNhc2UgMTogLy8gQnVmZmVyZWQgKHRoZSBkZWZhdWx0KVxuICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMjogLy8gQnVmZmVyZWQgKG9ubHkgZm9yIHN0ZG91dCBhbmQgc3RkZXJyKVxuICAgIHZhciBpZCA9IGJ1ZmZlci5sYXN0SW5kZXhPZigxMClcbiAgICBpZihpZCA8IDApIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gaWQgKyAxO1xuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGggLSBpZCAtIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9tbF9vdXRwdXRfdGFcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhidWZmZXIpO1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF9tbF9vdXRwdXRfdGFcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgYnVmZmVyID0gY2FtbF9iYV90b190eXBlZF9hcnJheShidWZmZXIpO1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKTtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbil7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmZmVyKSxvZmZzZXQsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIgKGNoYW5pZCxjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCwxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUgKGNoYW5pZCx2LGZsYWdzKSB7XG4gIHZhciBzID0gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nKHYsIGZsYWdzKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCxjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKXtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0XzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9wb3Nfb3V0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0ICsgY2hhbi5idWZmZXJfY3VyclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3Nfb3V0KGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0IChjYW1sX3Bvc19vdXQoY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9pbnQgKGNoYW5pZCxpKSB7XG4gIHZhciBhcnIgPSBbKGk+PjI0KSAmIDB4RkYsKGk+PjE2KSAmIDB4RkYsKGk+PjgpICYgMHhGRixpICYgMHhGRiBdO1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYnVmZmVyZWQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPyAxIDogMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoY2hhbmlkLHYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLmJ1ZmZlcmVkID0gdjtcbiAgaWYoIXYpIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgcmV0dXJuIDBcbn1cbiIsIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKHRydWUpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY29tcGFjdGlvblxuZnVuY3Rpb24gY2FtbF9nY19jb21wYWN0aW9uKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19jb3VudGVyc1xuZnVuY3Rpb24gY2FtbF9nY19jb3VudGVycygpIHsgcmV0dXJuIFsyNTQsMCwwLDBdIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCgpIHtcbiAgLy8gQSBmaWVsZCB3YXMgYWRkZWQgaW4gT0NhbWwgNC4xMi4gSXQgaXMgdW5saWtlbHkgdG8gYmUgYW4gaXNzdWUgdG9cbiAgLy8gcmV0dXJuIHRvbyBtYW55IGZpZWxkcyBpbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbC5cbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcbnZhciBhbGxfZmluYWxpemVycyA9IG5ldyBnbG9iYWxUaGlzLlNldCgpXG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIChjYiwgYSkge1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICB2YXIgeCA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICh4KXthbGxfZmluYWxpemVycy5kZWxldGUoeCk7IGNiKDApOyByZXR1cm47fSk7XG4gICAgeC5yZWdpc3RlcihhLHgpO1xuICAgIGFsbF9maW5hbGl6ZXJzLmFkZCh4KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX2Rpc2NhcmRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKHQpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkLCBBbmR5IFJheVxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuLy9cbi8vIEJpZ2FycmF5LlxuLy9cbi8vIC0gYWxsIGJpZ2FycmF5IHR5cGVzIGluY2x1ZGluZyBJbnQ2NCBhbmQgQ29tcGxleC5cbi8vIC0gZm9ydHJhbiArIGMgbGF5b3V0c1xuLy8gLSBzdWIvc2xpY2UvcmVzaGFwZVxuLy8gLSByZXRhaW4gZmFzdCBwYXRoIGZvciAxZCBhcnJheSBhY2Nlc3NcblxuLy9Qcm92aWRlczogY2FtbF9iYV9pbml0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhX2luaXQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemUoZGltcykge1xuICB2YXIgbl9kaW1zID0gZGltcy5sZW5ndGg7XG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuX2RpbXM7IGkrKykge1xuICAgIGlmIChkaW1zW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIHNpemUgPSBzaXplICogZGltc1tpXTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKXtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDc6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiAyO1xuICBkZWZhdWx0OiByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpe1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxOiAgdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMjogIHZpZXcgPSBJbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgNDogIHZpZXcgPSBJbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA1OiAgdmlldyA9IFVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDc6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgODogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDEwOiB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMTogdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgfVxuICBpZiAoIXZpZXcpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgdmFyIGRhdGEgPSBuZXcgdmlldyhzaXplICogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246IDwgNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnJheVwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPj0gNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnIwMlwiXG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2hpMzIsIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gTWxfQmlnYXJyYXkgKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG5cbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICB2YXIgb2ZzID0gMDtcbiAgaWYodHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIikgYXJnID0gW2FyZ107XG4gIGlmICghIChhcmcgaW5zdGFuY2VvZiBBcnJheSkpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYXJnLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5nZXQvc2V0OiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIGlmKHRoaXMubGF5b3V0ID09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFyZ1tpXSA8IDAgfHwgYXJnW2ldID49IHRoaXMuZGltc1tpXSlcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyBhcmdbaV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmRpbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSl7XG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgKGFyZ1tpXSAtIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2ZzO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBoID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobCxoKTtcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciByID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaSA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXVxuICB9XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSB2WzJdO1xuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMFxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBhID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHZhciBiID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGlmKGEgPT0gYil7XG4gICAgICB0aGlzLmRhdGEuZmlsbChhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBhIDogYjtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgaW0gPSB2WzFdO1xuICAgIHZhciByZSA9IHZbMl07XG4gICAgaWYoaW0gPT0gcmUpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoaW0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGltIDogcmU7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YS5maWxsKHYpO1xuICAgIGJyZWFrO1xuICB9XG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoYiwgdG90YWwpIHtcbiAgaWYgKHRoaXMubGF5b3V0ICE9IGIubGF5b3V0IHx8IHRoaXMua2luZCAhPSBiLmtpbmQpIHtcbiAgICB2YXIgazEgPSB0aGlzLmtpbmQgfCAodGhpcy5sYXlvdXQgPDwgOCk7XG4gICAgdmFyIGsyID0gICAgYi5raW5kIHwgKGIubGF5b3V0IDw8IDgpO1xuICAgIHJldHVybiBrMiAtIGsxO1xuICB9XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGIuZGltcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYi5kaW1zLmxlbmd0aCAtIHRoaXMuZGltcy5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHRoaXMuZGltc1tpXSAhPSBiLmRpbXNbaV0pXG4gICAgICByZXR1cm4gKHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSkgPyAtMSA6IDE7XG4gIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICBjYXNlIDEwOlxuICBjYXNlIDExOlxuICAgIC8vIEZsb2F0c1xuICAgIHZhciB4LCB5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgeSA9IGIuZGF0YVtpXTtcbiAgICAgIGlmICh4IDwgeSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHggPiB5KVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICh4ICE9IHkpIHtcbiAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgaWYgKHggPT0geCkgcmV0dXJuIDE7XG4gICAgICAgIGlmICh5ID09IHkpIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSs9Mikge1xuICAgICAgLy8gQ2hlY2sgaGlnaGVzdCBiaXRzIGZpcnN0XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPCBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdID4gYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApIDwgKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA+IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMjpcbiAgY2FzZSAzOlxuICBjYXNlIDQ6XG4gIGNhc2UgNTpcbiAgY2FzZSA2OlxuICBjYXNlIDg6XG4gIGNhc2UgOTpcbiAgY2FzZSAxMjpcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA8IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA+IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheV9jXzFfMVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhICAgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZSA9IG5ldyBNbF9CaWdhcnJheSgpXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICBpZih0eXBlb2YgYXJnICE9PSBcIm51bWJlclwiKXtcbiAgICBpZigoYXJnIGluc3RhbmNlb2YgQXJyYXkpICYmIGFyZy5sZW5ndGggPT0gMSlcbiAgICAgIGFyZyA9IGFyZ1swXTtcbiAgICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk1sX0JpZ2FycmF5X2NfMV8xLm9mZnNldFwiKTtcbiAgfVxuICBpZiAoYXJnIDwgMCB8fCBhcmcgPj0gdGhpcy5kaW1zWzBdKVxuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFyZztcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jb21wYXJlXG5mdW5jdGlvbiBjYW1sX2JhX2NvbXBhcmUoYSxiLHRvdGFsKXtcbiAgcmV0dXJuIGEuY29tcGFyZShiLHRvdGFsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBNbF9CaWdhcnJheV9jXzFfMSwgY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKXtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpO1xuICBpZihjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPSBkYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImxlbmd0aCBkb2Vzbid0IG1hdGNoIGRpbXNcIik7XG4gIH1cbiAgaWYobGF5b3V0ID09IDAgJiYgLy8gY19sYXlvdXRcbiAgICAgZGltcy5sZW5ndGggPT0gMSAmJiAvLyBBcnJheTFcbiAgICAgc2l6ZV9wZXJfZWxlbWVudCA9PSAxKSAvLyAxLXRvLTEgbWFwcGluZ1xuICAgIHJldHVybiBuZXcgTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmKGJhLmxheW91dCA9PSBsYXlvdXQpIHJldHVybiBiYTtcbiAgdmFyIG5ld19kaW1zID0gW11cbiAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZGltXCIpO1xuICByZXR1cm4gYmEuZGltc1tpXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMVxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzEoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMlxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzIoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fM1xuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzMoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9nZW5lcmljKGJhLCBpKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKTtcbiAgcmV0dXJuIGJhLmdldChvZnMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDE2KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICByZXR1cm4gKGIxIHwgKGIyIDw8IDgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgcmV0dXJuICggKGIxIDw8IDApICB8XG4gICAgICAgICAgIChiMiA8PCA4KSAgfFxuICAgICAgICAgICAoYjMgPDwgMTYpIHxcbiAgICAgICAgICAgKGI0IDw8IDI0KSApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzKzQpO1xuICB2YXIgYjYgPSBiYS5nZXQob2ZzKzUpO1xuICB2YXIgYjcgPSBiYS5nZXQob2ZzKzYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzKzcpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbYjgsYjcsYjYsYjUsYjQsYjMsYjIsYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMV0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMyhiYSwgaTAsIGkxLCBpMikge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDE2KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQzMihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzIsICh2ID4+PiAxNikgJiAweGZmKTtcbiAgYmEuc2V0KG9mcyszLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgdiA9IGNhbWxfaW50NjRfdG9fYnl0ZXModik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA4OyBpKyspIGJhLnNldChvZnMraSwgdls3LWldKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMShiYSwgaTAsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChpMCksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8yXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8yKGJhLCBpMCwgaTEsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxLGkyXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9maWxsXG5mdW5jdGlvbiBjYW1sX2JhX2ZpbGwoYmEsIHYpIHtcbiAgYmEuZmlsbCh2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2JsaXQoc3JjLCBkc3QpIHtcbiAgaWYgKGRzdC5kaW1zLmxlbmd0aCAhPSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPSBzcmMuZGltc1tpXSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZHN0LmRhdGEuc2V0KHNyYy5kYXRhKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc3ViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zdWIoYmEsIG9mcywgbGVuKSB7XG4gIHZhciBjaGFuZ2VkX2RpbTtcbiAgdmFyIG11bCA9IDE7XG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSAwO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgKGJhLmRpbXMubGVuZ3RoIC0gMSk7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSBiYS5kaW1zLmxlbmd0aCAtIDE7XG4gICAgb2ZzID0gb2ZzIC0gMTtcbiAgfVxuICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IChvZnMgKyBsZW4pID4gYmEuZGltc1tjaGFuZ2VkX2RpbV0pe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tpXTtcbiAgbmV3X2RpbXNbY2hhbmdlZF9kaW1dID0gbGVuO1xuICBtdWwgKj0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBtdWwsIChvZnMgKyBsZW4pICogbXVsKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2xpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc2xpY2UoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG51bV9pbmRzID0gdmluZC5sZW5ndGg7XG4gIHZhciBpbmRleCA9IFtdO1xuICB2YXIgc3ViX2RpbXMgPSBbXTtcbiAgdmFyIG9mcztcblxuICBpZiAobnVtX2luZHMgPiBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zbGljZTogdG9vIG1hbnkgaW5kaWNlc1wiKTtcblxuICAvLyBDb21wdXRlIG9mZnNldCBhbmQgY2hlY2sgYm91bmRzXG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gdmluZFtpXTtcbiAgICBmb3IgKDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAxO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZSgwLCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzKTtcbiAgfVxuICBvZnMgPSBiYS5vZmZzZXQoaW5kZXgpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoc3ViX2RpbXMpO1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogc2l6ZV9wZXJfZWxlbWVudCwgKG9mcyArIHNpemUpICogc2l6ZV9wZXJfZWxlbWVudCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgfVxuICB2YXIgbnVtX2VsdHMgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICBuZXdfZGltW2ldID0gdmluZFtpXTtcbiAgICBpZiAobmV3X2RpbVtpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgbnVtX2VsdHMgPSBudW1fZWx0cyAqIG5ld19kaW1baV07XG4gIH1cblxuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIC8vIENoZWNrIHRoYXQgc2l6ZXMgYWdyZWVcbiAgaWYgKG51bV9lbHRzICE9IHNpemUpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogc2l6ZSBtaXNtYXRjaFwiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW0sIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfc2VyaWFsaXplKHdyaXRlciwgYmEsIHN6KSB7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEuZGltcy5sZW5ndGgpO1xuICB3cml0ZXIud3JpdGUoMzIsIChiYS5raW5kIHwgKGJhLmxheW91dCA8PCA4KSkpO1xuICBpZihiYS5jYW1sX2N1c3RvbSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihiYS5kaW1zW2ldIDwgMHhmZmZmKVxuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRpbXNbaV0pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgMHhmZmZmKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCAwKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIGVsc2VcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLGJhLmRpbXNbaV0pXG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSg4LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHdyaXRlci53cml0ZSg4LDApO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsxXSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsyXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBjb21wbGV4ID0gYmEuZ2V0KGkpO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHN6WzBdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA0O1xuICBzelsxXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kZXNlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzLCBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2Rlc2VyaWFsaXplKHJlYWRlciwgc3osIG5hbWUpe1xuICB2YXIgbnVtX2RpbXMgPSByZWFkZXIucmVhZDMycygpO1xuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB3cm9uZyBudW1iZXIgb2YgYmlnYXJyYXkgZGltZW5zaW9uc1wiKTtcbiAgdmFyIHRhZyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBraW5kID0gdGFnICYgMHhmZlxuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW11cbiAgaWYobmFtZSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmKHNpemVfZGltID09IDB4ZmZmZil7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmKHNpemVfZGltX2hpICE9IDApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBiaWdhcnJheSBkaW1lbnNpb24gb3ZlcmZsb3cgaW4gMzJiaXRcIik7XG4gICAgICAgIHNpemVfZGltID0gc2l6ZV9kaW1fbG87XG4gICAgICB9XG4gICAgICBkaW1zLnB1c2goc2l6ZV9kaW0pO1xuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYoc2l4dHkpIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAvLyAoaW50NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGludDY0ID0gY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KTtcbiAgICAgIGJhLnNldChpLGludDY0KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL0RlcHJlY2F0ZWRcbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2Zyb21cbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9mcm9tKGRhdGExLCBkYXRhMiwganN0eXAsIGtpbmQsIGxheW91dCwgZGltcyl7XG4gIGlmKGRhdGEyIHx8IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkgPT0gMil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9jcmVhdGVfZnJvbTogdXNlIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcIik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKXtcbiAgdmFyIG51bV9lbHRzID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgdmFyIGggPSAwO1xuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDI1NikgbnVtX2VsdHMgPSAyNTY7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDQgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgOCkgfCAoYmEuZGF0YVtpKzJdIDw8IDE2KSB8IChiYS5kYXRhW2krM10gPDwgMjQpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIHcgPSAwO1xuICAgIHN3aXRjaCAobnVtX2VsdHMgJiAzKSB7XG4gICAgY2FzZSAzOiB3ICA9IGJhLmRhdGFbaSsyXSA8PCAxNjsgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDI6IHcgfD0gYmEuZGF0YVtpKzFdIDw8IDg7ICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMTogdyB8PSBiYS5kYXRhW2krMF07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAxMjgpIG51bV9lbHRzID0gMTI4O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyAyIDw9IGJhLmRhdGEubGVuZ3RoOyBpKz0yKXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDE2KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICBpZiAoKG51bV9lbHRzICYgMSkgIT0gMClcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBudW1fZWx0cyAqPSAyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKXtcbiAgcmV0dXJuIGJhLmRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kO1xuICBpZiAgICAgICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQgPSBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpO1xuICB2YXIgdGEgPVxuICAgICAgLyogTmVlZGVkIHRvIGF2b2lkIHVuc2lnbmVkIHNldHRlcnMgb3ZlcmZsb3dpbmdcbiAgICAgICAgIHRoZSByYW5nZSBvZiBPQ2FtbCBbaW50MzJdIHZhbHVlcy4gKi9cbiAgICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkgP1xuICAgICAgbmV3IEludDMyQXJyYXkodGEuYnVmZmVyICx0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpIDogdGE7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgIC8qIEFsbCBjb250aW51YXRpb25zIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsXG4gICAgICAgICAgICAgc2luY2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyB0byBkaXN0aW5ndWlzaCB0aGVtLiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfaGFzaChoLCB2KXtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0ID0gY2FtbF9oYXNoX21peF9pbnQ2NDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50ID0gY2FtbF9oYXNoX21peF9pbnQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCA9IGNhbWxfaGFzaF9taXhfZmxvYXQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZyA9IGNhbWxfaGFzaF9taXhfc3RyaW5nO1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbmZ1bmN0aW9uIEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlKHNlZWQpIHtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKHNlZWQpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKVxue1xuICB2YXIgRVJSQ09ERSA9IDI1NjtcblxuICAvL3ZhciBTVEFSVCA9IDA7XG4gIC8vdmFyIFRPS0VOX1JFQUQgPSAxO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMSA9IDI7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8yID0gMztcbiAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0gNDtcbiAgLy92YXIgRVJST1JfREVURUNURUQgPSA1O1xuICB2YXIgbG9vcCA9IDY7XG4gIHZhciB0ZXN0c2hpZnQgPSA3O1xuICB2YXIgc2hpZnQgPSA4O1xuICB2YXIgc2hpZnRfcmVjb3ZlciA9IDk7XG4gIHZhciByZWR1Y2UgPSAxMDtcblxuICB2YXIgUkVBRF9UT0tFTiA9IDA7XG4gIHZhciBSQUlTRV9QQVJTRV9FUlJPUiA9IDE7XG4gIHZhciBHUk9XX1NUQUNLU18xID0gMjtcbiAgdmFyIEdST1dfU1RBQ0tTXzIgPSAzO1xuICB2YXIgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04gPSA0O1xuICB2YXIgQ0FMTF9FUlJPUl9GVU5DVElPTiA9IDU7XG5cbiAgdmFyIGVudl9zX3N0YWNrID0gMTtcbiAgdmFyIGVudl92X3N0YWNrID0gMjtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0X3N0YWNrID0gMztcbiAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDQ7XG4gIHZhciBlbnZfc3RhY2tzaXplID0gNTtcbiAgdmFyIGVudl9zdGFja2Jhc2UgPSA2O1xuICB2YXIgZW52X2N1cnJfY2hhciA9IDc7XG4gIHZhciBlbnZfbHZhbCA9IDg7XG4gIHZhciBlbnZfc3ltYl9zdGFydCA9IDk7XG4gIHZhciBlbnZfc3ltYl9lbmQgPSAxMDtcbiAgdmFyIGVudl9hc3AgPSAxMTtcbiAgdmFyIGVudl9ydWxlX2xlbiA9IDEyO1xuICB2YXIgZW52X3J1bGVfbnVtYmVyID0gMTM7XG4gIHZhciBlbnZfc3AgPSAxNDtcbiAgdmFyIGVudl9zdGF0ZSA9IDE1O1xuICB2YXIgZW52X2VycmZsYWcgPSAxNjtcblxuICAvLyB2YXIgX3RibF9hY3Rpb25zID0gMTtcbiAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAyO1xuICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDM7XG4gIHZhciB0YmxfbGhzID0gNDtcbiAgdmFyIHRibF9sZW4gPSA1O1xuICB2YXIgdGJsX2RlZnJlZCA9IDY7XG4gIHZhciB0YmxfZGdvdG8gPSA3O1xuICB2YXIgdGJsX3NpbmRleCA9IDg7XG4gIHZhciB0YmxfcmluZGV4ID0gOTtcbiAgdmFyIHRibF9naW5kZXggPSAxMDtcbiAgdmFyIHRibF90YWJsZXNpemUgPSAxMTtcbiAgdmFyIHRibF90YWJsZSA9IDEyO1xuICB2YXIgdGJsX2NoZWNrID0gMTM7XG4gIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7XG4gIHZhciB0YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgdmFyIHRibF9uYW1lc19ibG9jayA9IDE2O1xuXG5cbiAgZnVuY3Rpb24gbG9nKHgpIHtcbiAgICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCArIFwiXFxuXCIpO1xuICAgIGNhbWxfbWxfb3V0cHV0KDIsIHMsIDAsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2tlbl9uYW1lKG5hbWVzLCBudW1iZXIpXG4gIHtcbiAgICB2YXIgc3RyID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZXMpO1xuICAgIGlmIChzdHJbMF0gPT0gJ1xceDAwJylcbiAgICAgIHJldHVybiBcIjx1bmtub3duIHRva2VuPlwiO1xuICAgIHJldHVybiBzdHIuc3BsaXQoJ1xceDAwJylbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spXG4gIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKHRvayBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19ibG9ja10sIHRva1swXSk7XG4gICAgICBpZiAodHlwZW9mIHRva1sxXSA9PSBcIm51bWJlclwiKVxuICAgICAgICBraW5kID0gXCJcIiArIHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJzdHJpbmdcIilcbiAgICAgICAga2luZCA9IHRva1sxXVxuICAgICAgZWxzZSBpZiAodG9rWzFdIGluc3RhbmNlb2YgTWxCeXRlcylcbiAgICAgICAga2luZCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodG9rWzFdKVxuICAgICAgZWxzZVxuICAgICAgICBraW5kID0gXCJfXCJcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGVmcmVkXSk7XG4gICAgdGFibGVzLnNpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3NpbmRleF0pO1xuICAgIHRhYmxlcy5jaGVjayAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9jaGVja10pO1xuICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9yaW5kZXhdKTtcbiAgICB0YWJsZXMudGFibGUgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfdGFibGVdKTtcbiAgICB0YWJsZXMubGVuICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGVuXSk7XG4gICAgdGFibGVzLmxocyAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9naW5kZXhdKTtcbiAgICB0YWJsZXMuZGdvdG8gID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLCBuLCBuMSwgbjIsIHN0YXRlMTtcblxuICAvLyBSRVNUT1JFXG4gIHZhciBzcCA9IGVudltlbnZfc3BdO1xuICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0YXRlXTtcbiAgdmFyIGVycmZsYWcgPSBlbnZbZW52X2VycmZsYWddO1xuXG4gIGV4aXQ6Zm9yICg7Oykge1xuICAgIG5leHQ6c3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpIHByaW50X3Rva2VuIChzdGF0ZSwgYXJnKTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA3Oi8vdGVzdHNoaWZ0OlxuICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIGNtZCA9IHNoaWZ0OyBicmVhaztcbiAgICAgIH1cbiAgICAgIG4xID0gdGFibGVzLnJpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgY21kID0gcmVkdWNlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJmbGFnIDw9IDApIHtcbiAgICAgICAgcmVzID0gQ0FMTF9FUlJPUl9GVU5DVElPTjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovXG4gICAgY2FzZSA1Oi8vRVJST1JfREVURUNURUQ6XG4gICAgICBpZiAoZXJyZmxhZyA8IDMpIHtcbiAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV07XG4gICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgbjIgPSBuMSArIEVSUkNPREU7XG4gICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBFUlJDT0RFKSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIlJlY292ZXJpbmcgaW4gc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWsgbmV4dDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICAgIGxvZyhcIk5vIG1vcmUgc3RhdGVzIHRvIGRpc2NhcmRcIik7XG4gICAgICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMClcbiAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgODovL3NoaWZ0OlxuICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICBpZiAoZXJyZmxhZyA+IDApIGVycmZsYWctLTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgOTovL3NoaWZ0X3JlY292ZXI6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVkdWNlIGJ5IHJ1bGUgXCIgKyBuKTtcbiAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgIGVudltlbnZfYXNwXSA9IHNwO1xuICAgICAgZW52W2Vudl9ydWxlX251bWJlcl0gPSBuO1xuICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgc3AgPSBzcCAtIG0gKyAxO1xuICAgICAgbSA9IHRhYmxlcy5saHNbbl07XG4gICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTtcbiAgICAgIG4yID0gbjEgKyBzdGF0ZTE7XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBlbHNlXG4gICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDM6Ly9TVEFDS1NfR1JPV05fMjpcbiAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICBjYXNlIDQ6Ly9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGFyZztcbiAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICBpZiAoc3AgPiBhc3ApIHtcbiAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICB9XG4gICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLy8gU0FWRVxuICBlbnZbZW52X3NwXSA9IHNwO1xuICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlO1xuICBlbnZbZW52X2VycmZsYWddID0gZXJyZmxhZztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfcGFyc2VyX3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlcl90cmFjZVxuZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKGJvb2wpIHtcbiAgdmFyIG9sZGZsYWcgPSBjYW1sX3BhcnNlcl90cmFjZTtcbiAgY2FtbF9wYXJzZXJfdHJhY2UgPSBib29sO1xuICByZXR1cm4gb2xkZmxhZztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdXBkYXRlX2R1bW15XG5mdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1teSAoeCwgeSkge1xuICBpZiggeS5mdW4gKSB7IHguZnVuID0geS5mdW47IHJldHVybiAwOyB9XG4gIGlmKCB0eXBlb2YgeT09PVwiZnVuY3Rpb25cIiApIHsgeC5mdW4gPSB5OyByZXR1cm4gMDsgfVxuICB2YXIgaSA9IHkubGVuZ3RoOyB3aGlsZSAoaS0tKSB4W2ldID0geVtpXTsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2NfZHVtbXlfaW5maXhcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfYWxsb2NfZHVtbXlfaW5maXggKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZiAoeCkgeyByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmZ1biwgW3hdKSB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX2Jsb2NrIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX2Jsb2NrICh4KSB7IHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29ial90YWcgKHgpIHtcbiAgaWYgKCh4IGluc3RhbmNlb2YgQXJyYXkpICYmIHhbMF0gPT0gKHhbMF0gPj4+IDApKVxuICAgIHJldHVybiB4WzBdXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKCh4IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IHR5cGVvZiB4ID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMjQ3XG4gIGVsc2UgaWYgKHggJiYgeC5jYW1sX2N1c3RvbSlcbiAgICByZXR1cm4gMjU1XG4gIGVsc2VcbiAgICByZXR1cm4gMTAwMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcgKHgsIHRhZykgeyB4WzBdID0gdGFnOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sgKHRhZywgc2l6ZSkge1xuICB2YXIgbyA9IG5ldyBBcnJheShzaXplKzEpO1xuICBvWzBdPXRhZztcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc2l6ZTsgaSsrKSBvW2ldID0gMDtcbiAgcmV0dXJuIG87XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3dpdGhfdGFnXG5mdW5jdGlvbiBjYW1sX29ial93aXRoX3RhZyh0YWcseCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IHRhZztcbiAgZm9yKHZhciBpID0gMTsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfZHVwIG11dGFibGUgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX29ial9kdXAgKHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUgKHgsIHMpIHtcbiAgaWYgKHM8PTAgfHwgcyArIDEgPiB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiT2JqLnRydW5jYXRlXCIpO1xuICBpZiAoeC5sZW5ndGggIT0gcyArIDEpIHgubGVuZ3RoID0gcyArIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9tYWtlX2ZvcndhcmRcbmZ1bmN0aW9uIGNhbWxfb2JqX21ha2VfZm9yd2FyZCAoYix2KSB7XG4gIGJbMF09MjUwO1xuICBiWzFdPXY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXBcbmZ1bmN0aW9uIGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAoeCxpLG9sZCxuKXtcbiAgaWYoeFtpKzFdID09IG9sZCkge1xuICAgIHhbaSsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfc2hhcmVkXG5mdW5jdGlvbiBjYW1sX29ial9pc19zaGFyZWQoeCl7XG4gIHJldHVybiAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLG8sbikge1xuICAgIGlmKGJbMF09PW8pIHsgYlswXSA9IG47IHJldHVybiAxIH1cbiAgICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmICgobyBpbnN0YW5jZW9mIEFycmF5KSAmJiBvWzBdID09IChvWzBdID4+PiAwKSAmJlxuICAgICAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDYsIDI0NCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbiAgZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkKG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZXNldF90b19sYXp5XG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eShvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjQ2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZWFkX3Jlc3VsdFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVhZF9yZXN1bHQobykge1xuICByZXR1cm4gKGNhbWxfb2JqX3RhZyhvKSA9PSAyNTApP29bMV06bztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAodCA9PSAyNDUpID8gMSA6IDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIChnbG9iYWxUaGlzLm5hdmlnYXRvciYmZ2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICAgP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQodikge1xuICB2ID0gdiAtICgodiA+Pj4gMSkgJiAweDU1NTU1NTU1KTtcbiAgdiA9ICh2ICYgMHgzMzMzMzMzMykgKyAoKHYgPj4+IDIpICYgMHgzMzMzMzMzMyk7XG4gIHJldHVybiAoKHYgKyAodiA+Pj4gNCkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+Pj4gMjQ7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvcyh4KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biBjb25zdFxuZnVuY3Rpb24gQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4oeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpIHtcbiAgdmFyIG4gPSAzMjtcbiAgdmFyIHk7XG4gIHkgPSB4ID4+MTY7IGlmICh5ICE9IDApIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0geCA+PiA4OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IHggPj4gNDsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDI7IGlmICh5ICE9IDApIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0geCA+PiAxOyBpZiAoeSAhPSAwKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0geDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2NseiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2Nseih4KSB7XG4gIHZhciBuID0gNjQ7XG4gIHZhciB5O1xuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0zMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDEpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIGNhbWxfaW50NjRfdG9faW50MzIoeCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KSB7XG4gIGlmICh4ID09PSAwKSB7IHJldHVybiAzMjsgfVxuICB2YXIgbiA9IDE7XG4gIGlmICggKHggJiAweDAwMDBGRkZGKSA9PT0gMCkgeyBuID0gbiArIDE2OyB4ID0geCA+PiAxNjsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDBGRikgPT09IDApIHsgbiA9IG4gKyAgODsgeCA9IHggPj4gIDg7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMEYpID09PSAwKSB7IG4gPSBuICsgIDQ7IHggPSB4ID4+ICA0OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDAzKSA9PT0gMCkgeyBuID0gbiArICAyOyB4ID0geCA+PiAgMjsgfVxuICByZXR1cm4gbiAtICh4ICYgMSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hbmQsIGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eih4KSB7XG4gIGlmIChjYW1sX2ludDY0X2lzX3plcm8oeCkpIHsgcmV0dXJuIDY0OyB9XG4gIHZhciBuID0gMTtcbiAgZnVuY3Rpb24gaXNfemVybyAoeCkgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9pc196ZXJvKHgpOyB9XG4gIGZ1bmN0aW9uIGxhbmQgKHgseSkgICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfYW5kKHgsIHkpOyB9XG4gIGZ1bmN0aW9uIHNtYWxsX2ludDY0KHgpIHsgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHgsMCwwKTsgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDB4RkZGRkZGLCAweDAwMDBGRiwgMHgwMDAwKSkpKSB7XG4gICAgbiA9IG4gKyAzMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMEZGRkYpKSkpIHtcbiAgICBuID0gbiArIDE2OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDBGRikpKSkge1xuICAgIG4gPSBuICsgIDg7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMEYpKSkpIHtcbiAgICBuID0gbiArICA0OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAzKSkpKSB7XG4gICAgbiA9IG4gKyAgMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIH1cbiAgcmV0dXJuIG4gLSAoY2FtbF9pbnQ2NF90b19pbnQzMihjYW1sX2ludDY0X2FuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMSkpKSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gMTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFleHBvbmVudD09MCkge1xuICAgIG11bFsxXSA9IChtdWxbMV0gKiBtdWxbM10pIHwgMDtcbiAgICBtdWxbMl0gPSAobXVsWzFdICogbXVsWzFdKSB8IDA7XG4gICAgbXVsWzNdID0gKG11bFsyXSAqIG11bFsxXSkgfCAwO1xuICAgIHJlcyA9IChyZXMgKiBtdWxbZXhwb25lbnQgJiAzXSkgfCAwO1xuICAgIGV4cG9uZW50ID0gZXhwb25lbnQgPj4gMjtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgxLDApO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWNhbWxfaW50NjRfaXNfemVybyhleHBvbmVudCkpIHtcbiAgICBtdWxbMV0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFszXSk7XG4gICAgbXVsWzJdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbMV0pO1xuICAgIG11bFszXSA9IGNhbWxfaW50NjRfbXVsKG11bFsyXSwgbXVsWzFdKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X211bChyZXMsIG11bFtjYW1sX2ludDY0X2xvMzIoZXhwb25lbnQpICYgM10pO1xuICAgIGV4cG9uZW50ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZChleHBvbmVudCwgMik7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9oYXNoX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLHMpXG59XG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfZG91YmxlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9kb3VibGUoZCkge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2FtX3Rlc3RpbmcgY29uc3Rcbi8vV2Vha2RlZlxuZnVuY3Rpb24gQmFzZV9hbV90ZXN0aW5nKHgpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX3NldChhKSB7XG4gIGNhbWxfZG9tYWluX2RscyA9IGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF94b3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmV3X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9seG1fbmV4dCh2KSB7XG4gIGZ1bmN0aW9uIHNoaWZ0X2woeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHhvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF94b3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfYWRkKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gbXVsKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHJvdGwoeCwgaykge1xuICAgIHJldHVybiBvcihzaGlmdF9sKHgsayksc2hpZnRfciAoeCwgNjQgLSBrKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KGEsIGkpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9nZXRfMShhLCBpKTtcbiAgfVxuICBmdW5jdGlvbiBzZXQoYSwgaSwgeCkge1xuICAgIHJldHVybiBjYW1sX2JhX3NldF8xKGEsIGksIHgpO1xuICB9XG4gIHZhciBNID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkMTM0MjU0M2RlODJlZjk1XCIpKTtcbiAgdmFyIGRhYmEgPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGRhYmEwYjZlYjA5MzIyZTNcIikpO1xuICB2YXIgeiwgcTAsIHExO1xuICB2YXIgc3QgPSB2O1xuICB2YXIgYSA9IGdldChzdCwwKTtcbiAgdmFyIHMgPSBnZXQoc3QsMSk7XG4gIHZhciB4MCA9IGdldChzdCwyKTtcbiAgdmFyIHgxID0gZ2V0KHN0LDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0geG9yKHosc2hpZnRfcih6LDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQgKG11bChzLE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDBcbiAgdmFyIHExID0geDFcbiAgcTEgPSB4b3IocTEscTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIChzaGlmdF9sKHExLDE2KSkpO1xuICBxMSA9IHJvdGwocTEsIDM3KTtcbiAgc2V0KHN0LCAyLCBxMCk7XG4gIHNldChzdCwgMywgcTEpO1xuICAvKiBSZXR1cm4gcmVzdWx0ICovXG4gIHJldHVybiB6O1xufVxuIiwiXG4vL1Byb3ZpZGVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xXG52YXIgenN0ZF9kZWNvbXByZXNzID0gKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuLy8gYWxpYXNlcyBmb3Igc2hvcnRlciBjb21wcmVzc2VkIGNvZGUgKG1vc3QgbWluaWZlcnMgZG9uJ3QgZG8gdGhpcylcbnZhciBhYiA9IEFycmF5QnVmZmVyLCB1OCA9IFVpbnQ4QXJyYXksIHUxNiA9IFVpbnQxNkFycmF5LCBpMTYgPSBJbnQxNkFycmF5LCB1MzIgPSBVaW50MzJBcnJheSwgaTMyID0gSW50MzJBcnJheTtcbnZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbn07XG52YXIgZmlsbCA9IGZ1bmN0aW9uICh2LCBuLCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5maWxsKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmZpbGwuY2FsbCh2LCBuLCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIGZvciAoOyBzIDwgZTsgKytzKVxuICAgICAgICB2W3NdID0gbjtcbiAgICByZXR1cm4gdjtcbn07XG52YXIgY3B3ID0gZnVuY3Rpb24gKHYsIHQsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmNvcHlXaXRoaW4pXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICAgIHZbdCsrXSA9IHZbcysrXTtcbiAgICB9XG59O1xuLyoqXG4gKiBDb2RlcyBmb3IgZXJyb3JzIGdlbmVyYXRlZCB3aXRoaW4gdGhpcyBsaWJyYXJ5XG4gKi9cbi8vIGVycm9yIGNvZGVzXG52YXIgZWMgPSBbXG4gICAgJ2ludmFsaWQgenN0ZCBkYXRhJyxcbiAgICAnd2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKScsXG4gICAgJ2ludmFsaWQgYmxvY2sgdHlwZScsXG4gICAgJ0ZTRSBhY2N1cmFjeSB0b28gaGlnaCcsXG4gICAgJ21hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjaycsXG4gICAgJ3VuZXhwZWN0ZWQgRU9GJ1xuXTtcbjtcbnZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KVxuICAgICAgICB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xufTtcbnZhciByYiA9IGZ1bmN0aW9uIChkLCBiLCBuKSB7XG4gICAgdmFyIGkgPSAwLCBvID0gMDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSlcbiAgICAgICAgbyB8PSBkW2IrK10gPDwgKGkgPDwgMyk7XG4gICAgcmV0dXJuIG87XG59O1xudmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHsgcmV0dXJuIChkW2JdIHwgKGRbYiArIDFdIDw8IDgpIHwgKGRbYiArIDJdIDw8IDE2KSB8IChkW2IgKyAzXSA8PCAyNCkpID4+PiAwOyB9O1xuLy8gcmVhZCBac3RhbmRhcmQgZnJhbWUgaGVhZGVyXG52YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09IDB4MkZCNTI4ICYmIGRhdFszXSA9PSAyNTMpIHtcbiAgICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICAgIHZhciBmbGcgPSBkYXRbNF07XG4gICAgICAgIC8vICAgIHNpbmdsZSBzZWdtZW50ICAgICAgIGNoZWNrc3VtICAgICAgICAgICAgIGRpY3QgZmxhZyAgICAgZnJhbWUgY29udGVudCBmbGFnXG4gICAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLCBjYyA9IChmbGcgPj4gMikgJiAxLCBkZiA9IGZsZyAmIDMsIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgICBpZiAoZmxnICYgOClcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gYnl0ZVxuICAgICAgICB2YXIgYnQgPSA2IC0gc3M7XG4gICAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgICAgdmFyIGRiID0gZGYgPT0gMyA/IDQgOiBkZjtcbiAgICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgICB2YXIgZGkgPSByYihkYXQsIGJ0LCBkYik7XG4gICAgICAgIGJ0ICs9IGRiO1xuICAgICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICAgIHZhciBmc2IgPSBmY2YgPyAoMSA8PCBmY2YpIDogc3M7XG4gICAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICAgIHZhciBmc3MgPSByYihkYXQsIGJ0LCBmc2IpICsgKChmY2YgPT0gMSkgJiYgMjU2KTtcbiAgICAgICAgLy8gd2luZG93IHNpemVcbiAgICAgICAgdmFyIHdzID0gZnNzO1xuICAgICAgICBpZiAoIXNzKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgdmFyIHdiID0gMSA8PCAoMTAgKyAoZGF0WzVdID4+IDMpKTtcbiAgICAgICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdzID4gMjE0NTM4NjQ5NilcbiAgICAgICAgICAgIGVycigxKTtcbiAgICAgICAgdmFyIGJ1ZiA9IG5ldyB1OCgodyA9PSAxID8gKGZzcyB8fCB3cykgOiB3ID8gMCA6IHdzKSArIDEyKTtcbiAgICAgICAgYnVmWzBdID0gMSwgYnVmWzRdID0gNCwgYnVmWzhdID0gODtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IGJ0ICsgZnNiLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGw6IDAsXG4gICAgICAgICAgICBkOiBkaSxcbiAgICAgICAgICAgIHc6ICh3ICYmIHcgIT0gMSkgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgICAgIGU6IHdzLFxuICAgICAgICAgICAgbzogbmV3IGkzMihidWYuYnVmZmVyLCAwLCAzKSxcbiAgICAgICAgICAgIHU6IGZzcyxcbiAgICAgICAgICAgIGM6IGNjLFxuICAgICAgICAgICAgbTogTWF0aC5taW4oMTMxMDcyLCB3cylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKChuMyA+PiA0KSB8IChkYXRbM10gPDwgMjApKSA9PSAweDE4NEQyQTUpIHtcbiAgICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICAgIHJldHVybiBiNChkYXQsIDQpICsgODtcbiAgICB9XG4gICAgZXJyKDApO1xufTtcbi8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZvciBub256ZXJvXG52YXIgbXNiID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBiaXRzID0gMDtcbiAgICBmb3IgKDsgKDEgPDwgYml0cykgPD0gdmFsOyArK2JpdHMpXG4gICAgICAgIDtcbiAgICByZXR1cm4gYml0cyAtIDE7XG59O1xuLy8gcmVhZCBmaW5pdGUgc3RhdGUgZW50cm9weVxudmFyIHJmc2UgPSBmdW5jdGlvbiAoZGF0LCBidCwgbWFsKSB7XG4gICAgLy8gdGFibGUgcG9zXG4gICAgdmFyIHRwb3MgPSAoYnQgPDwgMykgKyA0O1xuICAgIC8vIGFjY3VyYWN5IGxvZ1xuICAgIHZhciBhbCA9IChkYXRbYnRdICYgMTUpICsgNTtcbiAgICBpZiAoYWwgPiBtYWwpXG4gICAgICAgIGVycigzKTtcbiAgICAvLyBzaXplXG4gICAgdmFyIHN6ID0gMSA8PCBhbDtcbiAgICAvLyBwcm9iYWJpbGl0aWVzIHN5bWJvbHMgIHJlcGVhdCAgIGluZGV4ICAgaGlnaCB0aHJlc2hvbGRcbiAgICB2YXIgcHJvYnMgPSBzeiwgc3ltID0gLTEsIHJlID0gLTEsIGkgPSAtMSwgaHQgPSBzejtcbiAgICAvLyBvcHRpbWl6YXRpb246IHNpbmdsZSBhbGxvY2F0aW9uIGlzIG11Y2ggZmFzdGVyXG4gICAgdmFyIGJ1ZiA9IG5ldyBhYig1MTIgKyAoc3ogPDwgMikpO1xuICAgIHZhciBmcmVxID0gbmV3IGkxNihidWYsIDAsIDI1Nik7XG4gICAgLy8gc2FtZSB2aWV3IGFzIGZyZXFcbiAgICB2YXIgZHN0YXRlID0gbmV3IHUxNihidWYsIDAsIDI1Nik7XG4gICAgdmFyIG5zdGF0ZSA9IG5ldyB1MTYoYnVmLCA1MTIsIHN6KTtcbiAgICB2YXIgYmIxID0gNTEyICsgKHN6IDw8IDEpO1xuICAgIHZhciBzeW1zID0gbmV3IHU4KGJ1ZiwgYmIxLCBzeik7XG4gICAgdmFyIG5iaXRzID0gbmV3IHU4KGJ1ZiwgYmIxICsgc3opO1xuICAgIHdoaWxlIChzeW0gPCAyNTUgJiYgcHJvYnMgPiAwKSB7XG4gICAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICAgIHZhciBjYnQgPSB0cG9zID4+IDM7XG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgICAgdmFyIHZhbCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+ICh0cG9zICYgNykpICYgbXNrO1xuICAgICAgICAvLyBtYXNrICgxIGZld2VyIGJpdClcbiAgICAgICAgdmFyIG1zazFmYiA9ICgxIDw8IGJpdHMpIC0gMTtcbiAgICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBtc3YgPSBtc2sgLSBwcm9icyAtIDE7XG4gICAgICAgIC8vIHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgICBpZiAoc3ZhbCA8IG1zdilcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cywgdmFsID0gc3ZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cG9zICs9IGJpdHMgKyAxO1xuICAgICAgICAgICAgaWYgKHZhbCA+IG1zazFmYilcbiAgICAgICAgICAgICAgICB2YWwgLT0gbXN2O1xuICAgICAgICB9XG4gICAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICAgIGlmICh2YWwgPT0gLTEpIHtcbiAgICAgICAgICAgIHByb2JzICs9IHZhbDtcbiAgICAgICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvYnMgLT0gdmFsO1xuICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJlID09IDMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzeW0gPiAyNTUgfHwgcHJvYnMpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3ltcG9zID0gMDtcbiAgICAvLyBzeW0gc3RlcCAoY29wcmltZSB3aXRoIHN6IC0gZm9ybXVsYSBmcm9tIHpzdGQgc291cmNlKVxuICAgIHZhciBzc3RlcCA9IChzeiA+PiAxKSArIChzeiA+PiAzKSArIDM7XG4gICAgLy8gc3ltIG1hc2tcbiAgICB2YXIgc21hc2sgPSBzeiAtIDE7XG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPD0gc3ltOyArK3MpIHtcbiAgICAgICAgdmFyIHNmID0gZnJlcVtzXTtcbiAgICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICAgICAgZHN0YXRlW3NdID0gLXNmO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZjsgKytpKSB7XG4gICAgICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHN5bXBvcyA9IChzeW1wb3MgKyBzc3RlcCkgJiBzbWFzaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHN5bXBvcyA+PSBodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgc3ByZWFkaW5nIHN5bWJvbHMsIHNob3VsZCBiZSB6ZXJvIGFnYWluXG4gICAgaWYgKHN5bXBvcylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzejsgKytpKSB7XG4gICAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgICAgdmFyIG5zID0gZHN0YXRlW3N5bXNbaV1dKys7XG4gICAgICAgIC8vIG51bSBiaXRzXG4gICAgICAgIHZhciBuYiA9IG5iaXRzW2ldID0gYWwgLSBtc2IobnMpO1xuICAgICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbKHRwb3MgKyA3KSA+PiAzLCB7XG4gICAgICAgICAgICBiOiBhbCxcbiAgICAgICAgICAgIHM6IHN5bXMsXG4gICAgICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgICAgIHQ6IG5zdGF0ZVxuICAgICAgICB9XTtcbn07XG4vLyByZWFkIGh1ZmZtYW5cbnZhciByaHUgPSBmdW5jdGlvbiAoZGF0LCBidCkge1xuICAgIC8vICBpbmRleCAgd2VpZ2h0IGNvdW50XG4gICAgdmFyIGkgPSAwLCB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSwgaGIgPSBkYXRbYnRdO1xuICAgIC8vIGh1ZmZtYW4gd2VpZ2h0c1xuICAgIHZhciBodyA9IGJ1Zi5zdWJhcnJheSgwLCAyNTYpO1xuICAgIC8vIHJhbmsgY291bnRcbiAgICB2YXIgcmMgPSBidWYuc3ViYXJyYXkoMjU2LCAyNjgpO1xuICAgIC8vIHJhbmsgaW5kZXhcbiAgICB2YXIgcmkgPSBuZXcgdTE2KGJ1Zi5idWZmZXIsIDI2OCk7XG4gICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCBidCBpcyAxIGxlc3MgdGhhbiBleHBlY3RlZFxuICAgIGlmIChoYiA8IDEyOCkge1xuICAgICAgICAvLyBlbmQgYnl0ZSwgZnNlIGRlY29kZSB0YWJsZVxuICAgICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSwgZWJ0ID0gX2FbMF0sIGZkdCA9IF9hWzFdO1xuICAgICAgICBidCArPSBoYjtcbiAgICAgICAgdmFyIGVwb3MgPSBlYnQgPDwgMztcbiAgICAgICAgLy8gbGFzdCBieXRlXG4gICAgICAgIHZhciBsYiA9IGRhdFtidF07XG4gICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vICBzdGF0ZTEgICBzdGF0ZTIgICBzdGF0ZTEgYml0cyAgIHN0YXRlMiBiaXRzXG4gICAgICAgIHZhciBzdDEgPSAwLCBzdDIgPSAwLCBidHIxID0gZmR0LmIsIGJ0cjIgPSBidHIxO1xuICAgICAgICAvLyBmc2UgcG9zXG4gICAgICAgIC8vIHByZS1pbmNyZW1lbnQgdG8gYWNjb3VudCBmb3Igb3JpZ2luYWwgZGVmaWNpdCBvZiAxXG4gICAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdmFyIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MSArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QxXTtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMjtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MiArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMikgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgICAgIGJ0cjEgPSBmZHQubltzdDFdO1xuICAgICAgICAgICAgc3QxID0gZmR0LnRbc3QxXTtcbiAgICAgICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICAgICAgc3QyID0gZmR0LnRbc3QyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKyt3YyA+IDI1NSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdjID0gaGIgLSAxMjc7XG4gICAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRbKytidF07XG4gICAgICAgICAgICBod1tpXSA9IGJ5dGUgPj4gNDtcbiAgICAgICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgIH1cbiAgICAvLyB3ZWlnaHQgZXhwb25lbnRpYWwgc3VtXG4gICAgdmFyIHdlcyA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgIC8vIGJpdHMgbXVzdCBiZSBhdCBtb3N0IDExLCBzYW1lIGFzIHdlaWdodFxuICAgICAgICBpZiAod3QgPiAxMSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgd2VzICs9IHd0ICYmICgxIDw8ICh3dCAtIDEpKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKVxuICAgICAgICBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgICsrcmNbaHdbaV0gPSB3dCAmJiAobWIgKyAxIC0gd3QpXTtcbiAgICB9XG4gICAgLy8gaHVmIGJ1ZlxuICAgIHZhciBoYnVmID0gbmV3IHU4KHRzIDw8IDEpO1xuICAgIC8vICAgIHN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgbnVtIGJpdHNcbiAgICB2YXIgc3ltcyA9IGhidWYuc3ViYXJyYXkoMCwgdHMpLCBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHB2ID0gcmlbaV07XG4gICAgICAgIGZpbGwobmIsIGksIHB2LCByaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKTtcbiAgICB9XG4gICAgaWYgKHJpWzBdICE9IHRzKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgICAgaWYgKGJpdHMpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgICAgICBmaWxsKHN5bXMsIGksIGNvZGUsIHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtidCwge1xuICAgICAgICAgICAgbjogbmIsXG4gICAgICAgICAgICBiOiBtYixcbiAgICAgICAgICAgIHM6IHN5bXNcbiAgICAgICAgfV07XG59O1xuLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTAxYXJyb3d6L2E5Nzk0NTJkNDM1NTk5MmNiZjhmMjU3Y2JmZmM5ZWRkXG4vLyBkZWZhdWx0IGxpdGVyYWwgbGVuZ3RoIHRhYmxlXG52YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgODEsIDE2LCA5OSwgMTQwLCA0OSwgMTk4LCAyNCwgOTksIDEyLCAzMywgMTk2LCAyNCwgOTksIDEwMiwgMTAyLCAxMzQsIDcwLCAxNDYsIDRcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgbWF0Y2ggbGVuZ3RoIHRhYmxlXG52YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzMsIDIwLCAxOTYsIDI0LCA5OSwgMTQwLCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDlcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgb2Zmc2V0IGNvZGUgdGFibGVcbnZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXG5dKSwgMCwgNSlbMV07XG4vLyBiaXRzIHRvIGJhc2VsaW5lXG52YXIgYjJibCA9IGZ1bmN0aW9uIChiLCBzKSB7XG4gICAgdmFyIGxlbiA9IGIubGVuZ3RoLCBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGJsW2ldID0gcztcbiAgICAgICAgcyArPSAxIDw8IGJbaV07XG4gICAgfVxuICAgIHJldHVybiBibDtcbn07XG4vLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG52YXIgbGxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTNcbl0pKS5idWZmZXIsIDAsIDM2KTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG52YXIgbGxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobGxiLCAwKTtcbi8vIG1hdGNoIGxlbmd0aCBiaXRzXG52YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDExNzc2OTIyMCwgMTg1MjA3MDQ4LCAyNTI1NzkwODQsIDE2XG5dKSkuYnVmZmVyLCAwLCA1Myk7XG4vLyBtYXRjaCBsZW5ndGggYmFzZWxpbmVcbnZhciBtbGJsID0gLyojX19QVVJFX18gKi8gYjJibChtbGIsIDMpO1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG52YXIgZGh1ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBsZW4gPSBkYXQubGVuZ3RoLCBzcyA9IG91dC5sZW5ndGgsIGxiID0gZGF0W2xlbiAtIDFdLCBtc2sgPSAoMSA8PCBodS5iKSAtIDEsIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYilcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsIGJ0ciA9IGh1LmIsIHBvcyA9IChsZW4gPDwgMykgLSA4ICsgbXNiKGxiKSAtIGJ0ciwgaSA9IC0xO1xuICAgIGZvciAoOyBwb3MgPiBlYiAmJiBpIDwgc3M7KSB7XG4gICAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgICAgdmFyIHZhbCA9IChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHBvcyAmIDcpO1xuICAgICAgICBzdCA9ICgoc3QgPDwgYnRyKSB8IHZhbCkgJiBtc2s7XG4gICAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICAgIHBvcyAtPSAoYnRyID0gaHUubltzdF0pO1xuICAgIH1cbiAgICBpZiAocG9zICE9IGViIHx8IGkgKyAxICE9IHNzKVxuICAgICAgICBlcnIoMCk7XG59O1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtIDR4XG4vLyBUT0RPOiB1c2Ugd29ya2VycyB0byBwYXJhbGxlbGl6ZVxudmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLCBzejEgPSAoc3MgKyAzKSA+PiAyLCBzejIgPSBzejEgPDwgMSwgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoMCwgc3oxKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFsyXSB8IChkYXRbM10gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzRdIHwgKGRhdFs1XSA8PCA4KSksIG91dC5zdWJhcnJheShzejIsIHN6MyksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbn07XG4vLyByZWFkIFpzdGFuZGFyZCBibG9ja1xudmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLCBidHlwZSA9IChiMCA+PiAxKSAmIDM7XG4gICAgc3QubCA9IGIwICYgMTtcbiAgICB2YXIgc3ogPSAoYjAgPj4gMykgfCAoZGF0W2J0ICsgMV0gPDwgNSkgfCAoZGF0W2J0ICsgMl0gPDwgMTMpO1xuICAgIC8vIGVuZCBieXRlIGZvciBibG9ja1xuICAgIHZhciBlYnQgPSAoYnQgKz0gMykgKyBzejtcbiAgICBpZiAoYnR5cGUgPT0gMSkge1xuICAgICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIHN0LnkgKz0gc3opO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT0gMCkge1xuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBvdXQuc2V0KGRhdC5zdWJhcnJheShidCwgZWJ0KSwgc3QueSk7XG4gICAgICAgICAgICBzdC55ICs9IHN6O1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xjKGRhdCwgYnQsIGVidCk7XG4gICAgfVxuICAgIGlmIChidHlwZSA9PSAyKSB7XG4gICAgICAgIC8vICAgIGJ5dGUgMyAgICAgICAgbGl0IGJ0eXBlICAgICBzaXplIGZvcm1hdFxuICAgICAgICB2YXIgYjMgPSBkYXRbYnRdLCBsYnQgPSBiMyAmIDMsIHNmID0gKGIzID4+IDIpICYgMztcbiAgICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgICB2YXIgbHNzID0gYjMgPj4gNCwgbGNzID0gMCwgczQgPSAwO1xuICAgICAgICBpZiAobGJ0IDwgMikge1xuICAgICAgICAgICAgaWYgKHNmICYgMSlcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoc2YgJiAyKSAmJiAoZGF0WysrYnRdIDw8IDEyKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzID0gYjMgPj4gMztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gc2Y7XG4gICAgICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2YgPT0gMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgMykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiAyKSB8IChkYXRbKytidF0gPDwgNik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDYzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKSB8IChkYXRbKytidF0gPDwgMTApO1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgICB2YXIgYnVmID0gb3V0ID8gb3V0LnN1YmFycmF5KHN0LnksIHN0LnkgKyBzdC5tKSA6IG5ldyB1OChzdC5tKTtcbiAgICAgICAgLy8gc3RhcnRpbmcgcG9pbnQgZm9yIGxpdGVyYWxzXG4gICAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgICBpZiAobGJ0ID09IDApXG4gICAgICAgICAgICBidWYuc2V0KGRhdC5zdWJhcnJheShidCwgYnQgKz0gbHNzKSwgc3BsKTtcbiAgICAgICAgZWxzZSBpZiAobGJ0ID09IDEpXG4gICAgICAgICAgICBmaWxsKGJ1ZiwgZGF0W2J0KytdLCBzcGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGh1ZmZtYW4gdGFibGVcbiAgICAgICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgICAgICBpZiAobGJ0ID09IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWh1KVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIChzNCA/IGRodTQgOiBkaHUpKGRhdC5zdWJhcnJheShidCwgYnQgKz0gbGNzKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBudW0gc2VxdWVuY2VzXG4gICAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgICBpZiAobnMgPT0gMjU1KVxuICAgICAgICAgICAgICAgIG5zID0gKGRhdFtidCsrXSB8IChkYXRbYnQrK10gPDwgOCkpICsgMHg3RjAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobnMgPiAxMjcpXG4gICAgICAgICAgICAgICAgbnMgPSAoKG5zIC0gMTI4KSA8PCA4KSB8IGRhdFtidCsrXTtcbiAgICAgICAgICAgIC8vIHN5bWJvbCBjb21wcmVzc2lvbiBtb2Rlc1xuICAgICAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgICAgIGlmIChzY20gJiAzKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBkdHMgPSBbZG1sdCwgZG9jdCwgZGxsdF07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMjsgaSA+IC0xOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWQgPSAoc2NtID4+ICgoaSA8PCAxKSArIDIpKSAmIDM7XG4gICAgICAgICAgICAgICAgaWYgKG1kID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgICAgICAgICB2YXIgcmJ1ZiA9IG5ldyB1OChbMCwgMCwgZGF0W2J0KytdXSk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM6IHJidWYuc3ViYXJyYXkoMiwgMyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdDogbmV3IHUxNihyYnVmLmJ1ZmZlciwgMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiOiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICBfYSA9IHJmc2UoZGF0LCBidCwgOSAtIChpICYgMSkpLCBidCA9IF9hWzBdLCBkdHNbaV0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0LnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHN0LnRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9iID0gc3QudCA9IGR0cywgbWx0ID0gX2JbMF0sIG9jdCA9IF9iWzFdLCBsbHQgPSBfYlsyXTtcbiAgICAgICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIHNwb3MgPSAoZWJ0IDw8IDMpIC0gOCArIG1zYihsYikgLSBsbHQuYiwgY2J0ID0gc3BvcyA+PiAzLCBvdWJ0ID0gMDtcbiAgICAgICAgICAgIHZhciBsc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGx0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBvc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2N0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBtc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWx0LmIpIC0gMSk7XG4gICAgICAgICAgICBmb3IgKCsrbnM7IC0tbnM7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGxsYyA9IGxsdC5zW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIGxidHIgPSBsbHQubltsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtbGMgPSBtbHQuc1ttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtYnRyID0gbWx0Lm5bbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2ZjID0gb2N0LnNbb3N0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2J0ciA9IG9jdC5uW29zdF07XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2ZjKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBvZnAgPSAxIDw8IG9mYztcbiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb2ZwICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikgfCAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+IChzcG9zICYgNykpICYgKG9mcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbWwgPSBtbGJsW21sY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWxiW21sY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxsYltsbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBsbCA9IGxsYmxbbGxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbGJbbGxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBsc3QgPSBsbHQudFtsc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG1zdCA9IG1sdC50W21zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgb3N0ID0gb2N0LnRbb3N0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2J0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZiA+IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmIC09IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9IDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBpZHggPT0gMyA/IHN0Lm9bMF0gLSAxIDogc3Qub1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbGwsIHNwbCArPSBsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RpbiA9IG91YnQgLSBvZmY7XG4gICAgICAgICAgICAgICAgaWYgKHN0aW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJzID0gc3QuZSArIHN0aW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IG1sO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gc3Qud1ticyArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91YnQgKz0gbGVuLCBtbCAtPSBsZW4sIHN0aW4gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzdGluICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3VidCAhPSBzcGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCsrXSA9IGJ1ZltzcGwrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICBzdC55ICs9IG91YnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzczsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcGwpXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgICAgfVxuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG59O1xuLy8gY29uY2F0XG52YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09IDEpXG4gICAgICAgIHJldHVybiBidWZzWzBdO1xuICAgIHZhciBidWYgPSBuZXcgdTgob2wpO1xuICAgIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoayA9IGJ1ZnNbaV07XG4gICAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgICAgYiArPSBjaGsubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufTtcbi8qKlxuICogRGVjb21wcmVzc2VzIFpzdGFuZGFyZCBkYXRhXG4gKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gKiBAcGFyYW0gYnVmIFRoZSBvdXRwdXQgYnVmZmVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGVcbiAqICAgICAgICAgICAgZXhhY3RseSBlbm91Z2ggbWVtb3J5IHRvIGZpdCB0aGUgZGVjb21wcmVzc2VkIGRhdGEuIElmIHlvdXJcbiAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAqICAgICAgICAgICAgaXQgd2lsbCB5aWVsZCBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGVjb21wcmVzc2VkIGRhdGFcbiAqL1xucmV0dXJuIGZ1bmN0aW9uIGRlY29tcHJlc3MoZGF0LCBidWYpIHtcbiAgICB2YXIgYnQgPSAwLCBidWZzID0gW10sIG5iID0gKyFidWYsIG9sID0gMDtcbiAgICBmb3IgKDsgZGF0Lmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHN0ID0gcnpmaChkYXQsIG5iIHx8IGJ1Zik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3QgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChuYikge1xuICAgICAgICAgICAgICAgIGJ1ZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHN0LncubGVuZ3RoID09IHN0LnUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1ZiA9IHN0LncpO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBzdC51O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIHN0LmUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7ICFzdC5sOykge1xuICAgICAgICAgICAgICAgIHZhciBibGsgPSByemIoZGF0LCBzdCwgYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWJsaylcbiAgICAgICAgICAgICAgICAgICAgZXJyKDUpO1xuICAgICAgICAgICAgICAgIGlmIChidWYpXG4gICAgICAgICAgICAgICAgICAgIHN0LmUgPSBzdC55O1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gYmxrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY3B3KHN0LncsIDAsIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnQgPSBzdC5iICsgKHN0LmMgKiA0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidCA9IHN0O1xuICAgICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbn1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMFxuLy9WZXJzaW9uOiA8IDUuMS4xXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMVxuLy9WZXJzaW9uOiA8IDUuMi4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUodW5pdCkge1xuICBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG4gIHJldHVybiAxXG59XG5cbiIsIi8vLy8vLy8vLyBUSU1FX05PV1xuXG4vL1Byb3ZpZGVzOiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX2ludDY0X29mX2ludDMyXG52YXIgbXNfdG9fbmFubyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMTAwMCoxMDAwKTtcbmZ1bmN0aW9uIHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybygpe1xuICAgIHZhciBtcyA9IERhdGUubm93KCk7XG4gICAgLy8gbXVsdGlwbGUgYnkgdHdvIC0gaW50NjMgaW50ZWdlcnMgYXJlIHNoaWZ0ZWQgdG8gdGhlIGxlZnRcbiAgICB2YXIgbXNfaTYzID0gY2FtbF9pbnQ2NF9vZl9mbG9hdChtcyoyKTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwobXNfaTYzLG1zX3RvX25hbm8pO1xufVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogUGFkZGluZyBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpkXCIpICopXG4gIHwgQXJnX3BhZGRpbmcgOiBwYWR0eSAtPiAoaW50IC0+ICdhLCAnYSkgcGFkZGluZ1xuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9kLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHBhZGRpbmcgb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcGFkX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogUHJlY2lzaW9uIG9mIGZsb2F0cyBhbmQgJzAnLXBhZGRpbmcgb2YgaW50ZWdlcnMuICopXG50eXBlICgnYSwgJ2IpIHByZWNpc2lvbiA9XG4gICgqIE5vIHByZWNpc2lvbiAoZXg6IFwiJWZcIikgKilcbiAgfCBOb19wcmVjaXNpb24gOiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogTGl0ZXJhbCBwcmVjaXNpb24gKGV4OiBcIiUuM2ZcIikgKilcbiAgfCBMaXRfcHJlY2lzaW9uIDogaW50IC0+ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBQcmVjaXNpb24gYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikgKilcbiAgfCBBcmdfcHJlY2lzaW9uIDogKGludCAtPiAnYSwgJ2EpIHByZWNpc2lvblxuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9mLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHByZWNpc2lvbiBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwcmVjX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogc2VlIHRoZSBDdXN0b20gZm9ybWF0IGNvbWJpbmF0b3IgKilcbnR5cGUgKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSA9XG4gIHwgQ3VzdG9tX3plcm8gOiAoJ2EsIHN0cmluZywgJ2EpIGN1c3RvbV9hcml0eVxuICB8IEN1c3RvbV9zdWNjIDogKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSAtPlxuICAgICgnYSwgJ3ggLT4gJ2IsICd4IC0+ICdjKSBjdXN0b21fYXJpdHlcblxuKCoqKilcblxuKCogICAgICAgIFJlbGF0aW9uYWwgZm9ybWF0IHR5cGVzXG5cbkluIHRoZSBmaXJzdCBmb3JtYXQrZ2FkdHMgaW1wbGVtZW50YXRpb24sIHRoZSB0eXBlIGZvciAlKC4uJSkgaW4gdGhlXG5mbXQgR0FEVCB3YXMgYXMgZm9sbG93czpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqICgnZDEsICdxMSwgJ2QyLCAncTIpIHJlYWRlcl9uYl91bmlmaWVyICpcbiAgICAoJ3gsICdiLCAnYywgJ2QxLCAncTEsICd1KSBmbXR0eSAqXG4gICAgKCd1LCAnYiwgJ2MsICdxMSwgJ2UxLCAnZikgZm10IC0+XG4gICAgICAoKCd4LCAnYiwgJ2MsICdkMiwgJ3EyLCAndSkgZm9ybWF0NiAtPiAneCwgJ2IsICdjLCAnZDEsICdlMSwgJ2YpIGZtdFxuXG5Ob3RpY2UgdGhhdCB0aGUgJ3UgcGFyYW1ldGVyIGluICdmIHBvc2l0aW9uIGluIHRoZSBmb3JtYXQgYXJndW1lbnRcbigoJ3gsIC4uLCAndSkgZm9ybWF0NiAtPiAuLikgaXMgZXF1YWwgdG8gdGhlICd1IHBhcmFtZXRlciBpbiAnYVxucG9zaXRpb24gaW4gdGhlIGZvcm1hdCB0YWlsICgoJ3UsIC4uLCAnZikgZm10KS4gVGhpcyBtZWFucyB0aGF0IHRoZVxudHlwZSBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHBhcmFtZXRlciBkZXBlbmRzIG9mIHdoZXJlIHRoZSAlKC4uLiUpXG5hcmUgaW4gdGhlIGZvcm1hdCBzdHJpbmc6XG5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKVwiXG4gIC0gOiAodW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gdW5pdFxuICA9IDxmdW4+XG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSklZFwiXG4gIC0gOiAoaW50IC0+IHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgaW50IC0+IHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiBpbnQgLT4gdW5pdFxuICA9IDxmdW4+XG5cbk9uIHRoZSBjb250cmFyeSwgdGhlIGxlZ2FjeSB0eXBlciBnaXZlcyBhIGNsZXZlciB0eXBlIHRoYXQgZG9lcyBub3RcbmRlcGVuZCBvbiB0aGUgcG9zaXRpb24gb2YgJSguLiUpIGluIHRoZSBmb3JtYXQgc3RyaW5nLiBGb3IgZXhhbXBsZSxcbiUoJSkgd2lsbCBoYXZlIHRoZSBwb2x5bW9ycGhpYyB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKTogaXQgY2FuXG5iZSBjb25jYXRlbmF0ZWQgdG8gYW55IGZvcm1hdCB0eXBlLCBhbmQgb25seSBlbmZvcmNlcyB0aGUgY29uc3RyYWludFxudGhhdCBpdHMgJ2EgYW5kICdmIHBhcmFtZXRlcnMgYXJlIGVxdWFsIChubyBmb3JtYXQgYXJndW1lbnRzKSBhbmQgJ2RcbmFuZCAnZSBhcmUgZXF1YWwgKG5vIHJlYWRlciBhcmd1bWVudCkuXG5cblRoZSB3ZWFrZW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgdHlwZSBpbiB0aGUgR0FEVCB2ZXJzaW9uIGJyb2tlIHVzZXJcbmNvZGUgKGluIGZhY3QgaXQgZXNzZW50aWFsbHkgbWFkZSAlKC4uLiUpIHVudXNhYmxlIGV4Y2VwdCBhdCB0aGUgbGFzdFxucG9zaXRpb24gb2YgYSBmb3JtYXQpLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHdvdWxkIG5vdCB3b3JrXG5hbnltb3JlOlxuXG4gIGZ1biBzZXAgLT5cbiAgICBGb3JtYXQucHJpbnRmIFwiZm9vJSglKWJhciUoJSliYXpcIiBzZXAgc2VwXG5cbkFzIHRoZSB0eXBlLWNoZWNrZXIgd291bGQgcmVxdWlyZSB0d28gKmluY29tcGF0aWJsZSogdHlwZXMgZm9yIHRoZSAlKCUpXG5pbiBkaWZmZXJlbnQgcG9zaXRpb25zLlxuXG5UaGUgc29sdXRpb24gdG8gcmVnYWluIGEgZ2VuZXJhbCB0eXBlIGZvciAlKC4uJSkgaXMgdG8gZ2VuZXJhbGl6ZSB0aGlzXG50ZWNobmlxdWUsIG5vdCBvbmx5IG9uIHRoZSAnZCwgJ2UgcGFyYW1ldGVycywgYnV0IG9uIGFsbCBzaXhcbnBhcmFtZXRlcnMgb2YgYSBmb3JtYXQ6IHdlIGludHJvZHVjZSBhIFwicmVsYXRpb25hbFwiIHR5cGVcbiAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbndob3NlIHZhbHVlcyBhcmUgcHJvb2ZzIHRoYXQgKCdhMSwgLi4sICdmMSkgYW5kICgnYTIsIC4uLCAnZjIpIG1vcmFsbHlcbmNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9ybWF0IHR5cGU6ICdhMSBpcyBvYnRhaW5lZCBmcm9tICdmMSwnYjEsJ2MxXG5pbiB0aGUgZXhhY3Qgc2FtZSB3YXkgdGhhdCAnYTIgaXMgb2J0YWluZWQgZnJvbSAnZjIsJ2IyLCdjMiwgZXRjLlxuXG5Gb3IgZXhhbXBsZSwgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHdvIGZvcm1hdCB0eXBlcyBiZWdpbm5pbmcgd2l0aCBhIENoYXJcbnBhcmFtZXRlciBpcyBhcyBmb2xsb3dzOlxuXG58IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIHRlcm0gc3RydWN0dXJlIG9mIGZtdHR5X3JlbCBpcyAoYWxtb3N0WzFdKVxuaXNvbW9ycGhpYyB0byB0aGUgZm10dHkgb2YgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uOiBldmVyeVxuY29uc3RydWN0b3IgaXMgcmUtcmVhZCB3aXRoIGEgYmluYXJ5LCByZWxhdGlvbmFsIHR5cGUsIGluc3RlYWQgb2YgdGhlXG5wcmV2aW91cyB1bmFyeSB0eXBpbmcuIGZtdHR5IGNhbiB0aGVuIGJlIHJlLWRlZmluZWQgYXMgdGhlIGRpYWdvbmFsIG9mXG5mbXR0eV9yZWw6XG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcblxuT25jZSB3ZSBoYXZlIHRoaXMgZm10dHlfcmVsIHR5cGUgaW4gcGxhY2UsIHdlIGNhbiBnaXZlIHRoZSBtb3JlXG5nZW5lcmFsIHR5cGUgdG8gJSguLi4lKTpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbldlIGFjY2VwdCBhbnkgZm9ybWF0ICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NikgKHRoaXMgaXNcbmNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IGZvcm1hdCksIGJ1dCBhbHNvXG5yZXF1aXJlIGEgcHJvb2YgdGhhdCB0aGlzIGZvcm1hdCBpcyBpbiByZWxhdGlvbiB0byBhbm90aGVyIGZvcm1hdCB0aGF0XG5pcyBjb25jYXRlbmFibGUgdG8gdGhlIGZvcm1hdCB0YWlsLiBXaGVuIGV4ZWN1dGluZyBhICUoLi4uJSkgZm9ybWF0XG4oaW4gY2FtbGludGVybmFsRm9ybWF0Lm1sOm1ha2VfcHJpbnRmIG9yIHNjYW5mLm1sOm1ha2Vfc2NhbmYpLCB3ZVxudHJhbnN0eXBlIHRoZSBmb3JtYXQgYWxvbmcgdGhpcyByZWxhdGlvbiB1c2luZyB0aGUgJ3JlY2FzdCcgZnVuY3Rpb25cbnRvIHRyYW5zcG9zZSBiZXR3ZWVuIHJlbGF0ZWQgZm9ybWF0IHR5cGVzLlxuXG4gIHZhbCByZWNhc3QgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSkgZm10XG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXRcblxuTk9URSBbMV06IHRoZSB0eXBpbmcgb2YgRm9ybWF0X3N1YnN0X3R5IHJlcXVpcmVzIG5vdCBvbmUgZm9ybWF0IHR5cGUsIGJ1dFxudHdvLCBvbmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdCBhcmd1bWVudCBhbmQgdGhlXG5maXJzdCBzaXggcGFyYW1ldGVycywgYW5kIHRoZSBvdGhlciBmb3IgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0XG5hcmd1bWVudCBhbmQgdGhlIGxhc3Qgc2l4IHBhcmFtZXRlcnMuXG5cbnwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5XaGVuIHdlIGdlbmVyYXRlIGEgZm9ybWF0IEFTVCwgd2UgZ2VuZXJhdGUgZXhhY3RseSB0aGUgc2FtZSB3aXRuZXNzXG5mb3IgYm90aCByZWxhdGlvbnMsIGFuZCB0aGUgd2l0bmVzcy1jb252ZXJzaW9uIGZ1bmN0aW9ucyBpblxuY2FtbGludGVybmFsRm9ybWF0IGRvIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQuIEZvciBleGFtcGxlLCB0aGVcbmZ1bmN0aW9uIHRoYXQgcHJvdmVzIHRoYXQgdGhlIHJlbGF0aW9uIGlzIHRyYW5zaXRpdmVcblxuICB2YWwgdHJhbnMgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMixcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuXG5kb2VzIGFzc3VtZSB0aGF0IHRoZSB0d28gaW5wdXRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0ZXJtIHN0cnVjdHVyZVxuKGFuZCBpcyBvbmx5IGV2ZXJ5IHVzZWQgZm9yIGFyZ3VtZW50IHdpdG5lc3NlcyBvZiB0aGVcbkZvcm1hdF9zdWJzdF90eSBjb25zdHJ1Y3RvcikuXG4qKVxuXG4oKiBUeXBlIG9mIGEgYmxvY2sgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBibG9ja190eXBlID1cbiAgfCBQcF9oYm94ICAgKCogSG9yaXpvbnRhbCBibG9jayBubyBsaW5lIGJyZWFraW5nICopXG4gIHwgUHBfdmJveCAgICgqIFZlcnRpY2FsIGJsb2NrIGVhY2ggYnJlYWsgbGVhZHMgdG8gYSBuZXcgbGluZSAqKVxuICB8IFBwX2h2Ym94ICAoKiBIb3Jpem9udGFsLXZlcnRpY2FsIGJsb2NrOiBzYW1lIGFzIHZib3gsIGV4Y2VwdCBpZiB0aGlzIGJsb2NrXG4gICAgICAgICAgICAgICAgIGlzIHNtYWxsIGVub3VnaCB0byBmaXQgb24gYSBzaW5nbGUgbGluZSAqKVxuICB8IFBwX2hvdmJveCAoKiBIb3Jpem9udGFsIG9yIFZlcnRpY2FsIGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAqKVxuICB8IFBwX2JveCAgICAoKiBIb3Jpem9udGFsIG9yIEluZGVudCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2ssIG9yXG4gICAgICAgICAgICAgICAgIHdoZW4gaXQgbGVhZHMgdG8gYSBuZXcgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgbGluZSAqKVxuICB8IFBwX2ZpdHMgICAoKiBJbnRlcm5hbCB1c2FnZTogd2hlbiBhIGJsb2NrIGZpdHMgb24gYSBzaW5nbGUgbGluZSAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBmb3JtYXR0aW5nX2xpdCA9XG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBdICAgKilcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQH0gICAqKVxuICB8IEJyZWFrIG9mIHN0cmluZyAqIGludCAqIGludCAgICAgICAgICAoKiBALCB8IEAgIHwgQDsgfCBAOzw+ICopXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA/ICAgKilcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFxcbiAgKilcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQC4gICAqKVxuICB8IE1hZ2ljX3NpemUgb2Ygc3RyaW5nICogaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPG4+ICopXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBAICAgKilcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQCUlICAqKVxuICB8IFNjYW5faW5kaWMgb2YgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAWCAgICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlbiA9XG4gIHwgT3Blbl90YWcgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEB7ICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cbiAgfCBPcGVuX2JveCA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQFsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCB0eXBlIGVsZW1lbnRzLiAqKVxuKCogSW4gcGFydGljdWxhciB1c2VkIHRvIHJlcHJlc2VudCAlKC4uLiUpIGFuZCAley4uLiV9IGNvbnRlbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5hbmQgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCA9XG4gIHwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgU3RyaW5nX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoc3RyaW5nIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgc3RyaW5nIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQzMl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQzMiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDMyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IE5hdGl2ZWludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbmQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKG5hdGl2ZWludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIG5hdGl2ZWludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQ2NF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQ2NCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDY0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEZsb2F0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGZsb2F0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgZmxvYXQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQm9vbF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVCICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoYm9vbCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGJvb2wgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBGb3JtYXRfYXJnX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG4gIHwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnMuICopXG4gIHwgQWxwaGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAneCAtPiAnYzEpIC0+ICd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAneCAtPiAnYzIpIC0+ICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFRoZXRhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ2MxKSAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ2MyKSAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBBbnlfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFVzZWQgZm9yIGN1c3RvbSBmb3JtYXRzICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBFbmRfb2ZfZm10dHkgOlxuICAgICAgKCdmMSwgJ2IxLCAnYzEsICdkMSwgJ2QxLCAnZjEsXG4gICAgICAgJ2YyLCAnYjIsICdjMiwgJ2QyLCAnZDIsICdmMikgZm10dHlfcmVsXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IGVsZW1lbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgPVxuICB8IENoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVDICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFN0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVTICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDMyIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgTmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5bZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBuYXRpdmVpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDY0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgICAgIGZsb2F0X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBmbG9hdCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEJvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbYkJdICopXG4gICAgICAoJ3gsIGJvb2wgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbHVzaCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlISAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBhYmMgKilcbiAgICAgIHN0cmluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENoYXJfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKilcbiAgICAgIGNoYXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IEZvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBBbHBoYSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICd4IC0+ICdjKSAtPiAneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBUaGV0YSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICdjKSAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3I6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgIGZvcm1hdHRpbmdfbGl0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0dGluZ19nZW4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UxLCAnZjEpIGZvcm1hdHRpbmdfZ2VuICpcbiAgICAgICgnZjEsICdiLCAnYywgJ2UxLCAnZTIsICdmMikgZm10IC0+ICgnYTEsICdiLCAnYywgJ2QxLCAnZTIsICdmMikgZm10XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCAtPiAnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoc3RyaW5nIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChpbnQgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJTBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJZ25vcmVkX3BhcmFtIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGlnbm9yZWQgKiAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBDdXN0b20gcHJpbnRpbmcgZm9ybWF0IChQUiM2NDUyLCBHUFIjMTQwKVxuXG4gICAgIFdlIGluY2x1ZGUgYSB0eXBlIEN1c3RvbSBvZiBcImN1c3RvbSBjb252ZXJ0ZXJzXCIsIHdoZXJlIGFuXG4gICAgIGFyYml0cmFyeSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IG9uZSBvciBtb3JlXG4gICAgIGFyZ3VtZW50cy4gVGhlcmUgaXMgbm8gc3ludGF4IGZvciBjdXN0b20gY29udmVydGVycywgaXQgaXMgb25seVxuICAgICBpbnRlbmRlZCBmb3IgY3VzdG9tIHByb2Nlc3NvcnMgdGhhdCB3aXNoIHRvIHJlbHkgb24gdGhlXG4gICAgIHN0ZGxpYi1kZWZpbmVkIGZvcm1hdCBHQURUcy5cblxuICAgICBGb3IgaW5zdGFuY2UgYSBwcmUtcHJvY2Vzc29yIGNvdWxkIGNob29zZSB0byBpbnRlcnByZXQgc3RyaW5nc1xuICAgICBwcmVmaXhlZCB3aXRoIFtcIiFcIl0gYXMgZm9ybWF0IHN0cmluZ3Mgd2hlcmUgWyV7eyAuLi4gfX1dIGlzXG4gICAgIGEgc3BlY2lhbCBmb3JtIHRvIHBhc3MgYSB0b19zdHJpbmcgZnVuY3Rpb24sIHNvIHRoYXQgb25lIGNvdWxkXG4gICAgIHdyaXRlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50OyB5IDogaW50IH1cblxuICAgICAgIGxldCBzdHJpbmdfb2ZfdCB0ID0gUHJpbnRmLnNwcmludGYgXCJ7IHggPSAlZDsgeSA9ICVkIH1cIiB0LnggdC55XG5cbiAgICAgICBQcmludGYucHJpbnRmICFcInQgPSAle3tzdHJpbmdfb2ZfdH19XCIgeyB4ID0gNDI7IHkgPSA0MiB9XG4gICAgIF19XG4gICopXG4gIHwgQ3VzdG9tIDpcbiAgICAgICgnYSwgJ3gsICd5KSBjdXN0b21fYXJpdHkgKiAodW5pdCAtPiAneCkgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogZW5kIG9mIGEgZm9ybWF0IHNwZWNpZmljYXRpb24gKilcbiAgfCBFbmRfb2ZfZm9ybWF0IDpcbiAgICAgICAgKCdmLCAnYiwgJ2MsICdlLCAnZSwgJ2YpIGZtdFxuXG4oKioqKVxuXG4oKiBUeXBlIGZvciBpZ25vcmVkIHBhcmFtZXRlcnMgKHNlZSBcIiVfXCIpLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkID1cbiAgfCBJZ25vcmVkX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9DICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfcyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfUyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9sZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9uZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9MZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9mICopXG4gICAgICBwYWRfb3B0aW9uICogcHJlY19vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Jvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0IgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3suLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9yZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICopXG4gICAgICAoJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0IC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXzBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAqIHN0cmluZ1xuXG5sZXQgcmVjIGVyYXNlX3JlbCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAoYSwgYiwgYywgZCwgZSwgZixcbiAgIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIF90eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGUgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0IHR5cGVzLiAqKVxuKCogVXNlZCBieTpcbiAgICogcmVhZGVyX25iX3VuaWZpZXJfb2ZfZm10dHkgdG8gY291bnQgcmVhZGVycyBpbiBhbiBmbXR0eSxcbiAgICogU2NhbmYudGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyB0byBleHRyYWN0IHJlYWRlcnMgaW5zaWRlICUoLi4uJSksXG4gICAqIENhbWxpbnRlcm5hbEZvcm1hdC5mbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCB0byBleHRyYWN0IGZvcm1hdCB0eXBlLiAqKVxuXG4oKlxubGV0IHJlYyBjb25jYXRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdHR5ID1cbiopXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAgICAgIGcxIGoxIGcyIGoyXG4gIC5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGQxLCBhMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGQyLCBhMikgZm10dHlfcmVsIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZTEsIGYxLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZTIsIGYyKSBmbXR0eV9yZWwgPVxuZnVuIGZtdHR5MSBmbXR0eTIgLT4gbWF0Y2ggZm10dHkxIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEVuZF9vZl9mbXR0eSAtPiBmbXR0eTJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXRzLiAqKVxubGV0IHJlYyBjb25jYXRfZm10IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdCA9XG5mdW4gZm10MSBmbXQyIC0+IG1hdGNoIGZtdDEgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIFN0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIENhbWxfc3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBDaGFyIChyZXN0KSAtPlxuICAgIENoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgQm9vbCAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgQWxwaGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBUaGV0YSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBDdXN0b20gKGFyaXR5LCBmLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBSZWFkZXIgcmVzdCAtPlxuICAgIFJlYWRlciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIEZsdXNoIChjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nX2xpdGVyYWwgKHN0ciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgQ2hhcl9saXRlcmFsICAgKGNociwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmcgICAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgKHJlc3QpIC0+XG4gICAgU2Nhbl9uZXh0X2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJ0b3V0LCBJTlJJQSBQYXJpcy1TYWNsYXkgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENhbWxpbnRlcm5hbEF0b21pYyBpcyBhIGRlcGVuZGVuY3kgb2YgU3RkbGliLCBzbyBpdCBpcyBjb21waWxlZCB3aXRoXG4gICAtbm9wZXJ2YXNpdmVzLiAqKVxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFdlIGFyZSBub3QgcmV1c2luZyAoJ2EgcmVmKSBkaXJlY3RseSB0byBtYWtlIGl0IGVhc2llciB0byByZWFzb25cbiAgIGFib3V0IGF0b21pY2l0eSBpZiB3ZSB3aXNoIHRvOiBldmVuIGluIGEgc2VxdWVudGlhbCBpbXBsZW1lbnRhdGlvbixcbiAgIHNpZ25hbHMgYW5kIG90aGVyIGFzeW5jaHJvbm91cyBjYWxsYmFja3MgbWlnaHQgYnJlYWsgYXRvbWljaXR5LiAqKVxudHlwZSAnYSB0ID0ge211dGFibGUgdjogJ2F9XG5cbmxldCBtYWtlIHYgPSB7dn1cbmxldCBnZXQgciA9IHIudlxubGV0IHNldCByIHYgPSByLnYgPC0gdlxuXG4oKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgc2V0IHRvIG5ldmVyIGJlIGlubGluZWQ6IEZsYW1iZGEgaXNcbiAgIGFsbG93ZWQgdG8gbW92ZSBzdXJyb3VuZGluZyBjb2RlIGluc2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbixcbiAgIGluY2x1ZGluZyBhbGxvY2F0aW9ucy4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGV4Y2hhbmdlIHIgdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSB2O1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXRbQGlubGluZSBuZXZlcl0gY29tcGFyZV9hbmRfc2V0IHIgc2VlbiB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgaWYgY3VyID09IHNlZW4gdGhlbiAoXG4gICAgci52IDwtIHY7XG4gICAgKCogRU5EIEFUT01JQyAqKVxuICAgIHRydWVcbiAgKSBlbHNlXG4gICAgZmFsc2VcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZldGNoX2FuZF9hZGQgciBuID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIChjdXIgKyBuKTtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXQgcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgaGQgOjogdGwgLT4gaGQgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IENhbWxpbnRlcm5hbEF0b21pYy5tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gIGxldCBtb2R1bGUgQXRvbWljID0gQ2FtbGludGVybmFsQXRvbWljIGluXG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gQXRvbWljLm1ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2F0X2V4aXQgKCkgPSAoQ2FtbGludGVybmFsQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBuYWtlZF9wb2ludGVyc19jaGVja2VkIDogdW5pdCAtPiBib29sXG4gID0gXCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkXCJcbmxldCAoKSA9IGlmIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgKCkgdGhlbiBhdF9leGl0IG1ham9yXG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgID0gQ29tcGxleFxubW9kdWxlIERpZ2VzdCAgICAgICA9IERpZ2VzdFxubW9kdWxlIEVpdGhlciAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgPSBHY1xubW9kdWxlIEdlbmxleCAgICAgICA9IEdlbmxleFxubW9kdWxlIEhhc2h0YmwgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbnQgICAgICAgICAgPSBJbnRcbm1vZHVsZSBJbnQzMiAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICA9IEludDY0XG5tb2R1bGUgTGF6eSAgICAgICAgID0gTGF6eVxubW9kdWxlIExleGluZyAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICA9IExpc3Rcbm1vZHVsZSBMaXN0TGFiZWxzICAgPSBMaXN0TGFiZWxzXG5tb2R1bGUgTWFwICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgID0gTWFyc2hhbFxubW9kdWxlIE1vcmVMYWJlbHMgICA9IE1vcmVMYWJlbHNcbm1vZHVsZSBOYXRpdmVpbnQgICAgPSBOYXRpdmVpbnRcbm1vZHVsZSBPYmogICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgPSBPb1xubW9kdWxlIE9wdGlvbiAgICAgICA9IE9wdGlvblxubW9kdWxlIFBhcnNpbmcgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQZXJ2YXNpdmVzICAgPSBQZXJ2YXNpdmVzXG5tb2R1bGUgUHJpbnRleGMgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VxICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJlYW0gICAgICAgPSBTdHJlYW1cbm1vZHVsZSBTdHJpbmcgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgPSBTeXNcbm1vZHVsZSBVY2hhciAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEphbmUgU3RyZWV0IEdyb3VwIExMQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBAZGVwcmVjYXRlZCBVc2UgeyFTdGRsaWJ9ICopXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxubGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbmxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG5leGNlcHRpb24gRXhpdFxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgbWluID0gbWluXG5sZXQgbWF4ID0gbWF4XG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAoJiYpIGluc3RlYWQuXCJdXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKHx8KSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxubGV0IGFicyA9IGFic1xubGV0IG1heF9pbnQgPSBtYXhfaW50XG5sZXQgbWluX2ludCA9IG1pbl9pbnRcbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG5vdCA9IGxub3RcbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5sZXQgaW5maW5pdHkgPSBpbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IG5lZ19pbmZpbml0eVxubGV0IG5hbiA9IG5hblxubGV0IG1heF9mbG9hdCA9IG1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IG1pbl9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBlcHNpbG9uX2Zsb2F0XG50eXBlIG5vbnJlYyBmcGNsYXNzID0gZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxubGV0ICggXiApID0gKCBeIClcbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgPSBjaGFyX29mX2ludFxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5sZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc3RyaW5nID0gYm9vbF9vZl9zdHJpbmdcbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBib29sX29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfaW50ID0gc3RyaW5nX29mX2ludFxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgaW50X29mX3N0cmluZ19vcHQgPSBpbnRfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9mbG9hdCA9IHN0cmluZ19vZl9mbG9hdFxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5sZXQgKCBAICkgID0gKCBAIClcbnR5cGUgbm9ucmVjIGluX2NoYW5uZWwgPSBpbl9jaGFubmVsXG50eXBlIG5vbnJlYyBvdXRfY2hhbm5lbCA9IG91dF9jaGFubmVsXG5sZXQgc3RkaW4gPSBzdGRpblxubGV0IHN0ZG91dCA9IHN0ZG91dFxubGV0IHN0ZGVyciA9IHN0ZGVyclxubGV0IHByaW50X2NoYXIgPSBwcmludF9jaGFyXG5sZXQgcHJpbnRfc3RyaW5nID0gcHJpbnRfc3RyaW5nXG5sZXQgcHJpbnRfYnl0ZXMgPSBwcmludF9ieXRlc1xubGV0IHByaW50X2ludCA9IHByaW50X2ludFxubGV0IHByaW50X2Zsb2F0ID0gcHJpbnRfZmxvYXRcbmxldCBwcmludF9lbmRsaW5lID0gcHJpbnRfZW5kbGluZVxubGV0IHByaW50X25ld2xpbmUgPSBwcmludF9uZXdsaW5lXG5sZXQgcHJlcnJfY2hhciA9IHByZXJyX2NoYXJcbmxldCBwcmVycl9zdHJpbmcgPSBwcmVycl9zdHJpbmdcbmxldCBwcmVycl9ieXRlcyA9IHByZXJyX2J5dGVzXG5sZXQgcHJlcnJfaW50ID0gcHJlcnJfaW50XG5sZXQgcHJlcnJfZmxvYXQgPSBwcmVycl9mbG9hdFxubGV0IHByZXJyX2VuZGxpbmUgPSBwcmVycl9lbmRsaW5lXG5sZXQgcHJlcnJfbmV3bGluZSA9IHByZXJyX25ld2xpbmVcbmxldCByZWFkX2xpbmUgPSByZWFkX2xpbmVcbmxldCByZWFkX2ludCA9IHJlYWRfaW50XG5sZXQgcmVhZF9pbnRfb3B0ID0gcmVhZF9pbnRfb3B0XG5sZXQgcmVhZF9mbG9hdCA9IHJlYWRfZmxvYXRcbmxldCByZWFkX2Zsb2F0X29wdCA9IHJlYWRfZmxvYXRfb3B0XG50eXBlIG5vbnJlYyBvcGVuX2ZsYWcgPSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5sZXQgb3Blbl9vdXQgPSBvcGVuX291dFxubGV0IG9wZW5fb3V0X2JpbiA9IG9wZW5fb3V0X2JpblxubGV0IG9wZW5fb3V0X2dlbiA9IG9wZW5fb3V0X2dlblxubGV0IGZsdXNoID0gZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBmbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IG91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X3N0cmluZyA9IG91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBvdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBvdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gb3V0cHV0X3N1YnN0cmluZ1xubGV0IG91dHB1dF9ieXRlID0gb3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IG91dHB1dF9iaW5hcnlfaW50XG5sZXQgb3V0cHV0X3ZhbHVlID0gb3V0cHV0X3ZhbHVlXG5sZXQgc2Vla19vdXQgPSBzZWVrX291dFxubGV0IHBvc19vdXQgPSBwb3Nfb3V0XG5sZXQgb3V0X2NoYW5uZWxfbGVuZ3RoID0gb3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2Vfb3V0ID0gY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfb3V0X25vZXJyID0gY2xvc2Vfb3V0X25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX291dCA9IHNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBvcGVuX2luID0gb3Blbl9pblxubGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9iaW5cbmxldCBvcGVuX2luX2dlbiA9IG9wZW5faW5fZ2VuXG5sZXQgaW5wdXRfY2hhciA9IGlucHV0X2NoYXJcbmxldCBpbnB1dF9saW5lID0gaW5wdXRfbGluZVxubGV0IGlucHV0ID0gaW5wdXRcbmxldCByZWFsbHlfaW5wdXQgPSByZWFsbHlfaW5wdXRcbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nID0gcmVhbGx5X2lucHV0X3N0cmluZ1xubGV0IGlucHV0X2J5dGUgPSBpbnB1dF9ieXRlXG5sZXQgaW5wdXRfYmluYXJ5X2ludCA9IGlucHV0X2JpbmFyeV9pbnRcbmxldCBpbnB1dF92YWx1ZSA9IGlucHV0X3ZhbHVlXG5sZXQgc2Vla19pbiA9IHNlZWtfaW5cbmxldCBwb3NfaW4gPSBwb3NfaW5cbmxldCBpbl9jaGFubmVsX2xlbmd0aCA9IGluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2VfaW4gPSBjbG9zZV9pblxubGV0IGNsb3NlX2luX25vZXJyID0gY2xvc2VfaW5fbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfaW4gPSBzZXRfYmluYXJ5X21vZGVfaW5cbm1vZHVsZSBMYXJnZUZpbGUgPSBMYXJnZUZpbGVcbnR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcbnR5cGUgbm9ucmVjICgnYSwnYikgcmVzdWx0ID0gKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcbmxldCBzdHJpbmdfb2ZfZm9ybWF0ID0gc3RyaW5nX29mX2Zvcm1hdFxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxubGV0ICggXl4gKSA9ICggXl4gKVxubGV0IGV4aXQgPSBleGl0XG5sZXQgYXRfZXhpdCA9IGF0X2V4aXRcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSA9IHZhbGlkX2Zsb2F0X2xleGVtXG5sZXQgZG9fYXRfZXhpdCA9IGRvX2F0X2V4aXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIG1hdGNoIHNlcTEoKSB3aXRoXG4gIHwgTmlsIC0+IHNlcTIoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zIChmIHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgICB8IFNvbWUgeSAtPiBDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBpZiBmIHhcbiAgICAgIHRoZW4gQ29ucyAoeCwgZmlsdGVyIGYgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGF1eCBmIGFjYyBzZXFcblxubGV0IGl0ZXIgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBzZXEgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGF1eCBzZXFcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IE5pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBDb25zICh4LCB1bmZvbGQgZiB1JylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnNpZmFsLCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuXG5sZXQgbGVmdCB2ID0gTGVmdCB2XG5sZXQgcmlnaHQgdiA9IFJpZ2h0IHZcblxubGV0IGlzX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gdHJ1ZVxufCBSaWdodCBfIC0+IGZhbHNlXG5cbmxldCBpc19yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBmYWxzZVxufCBSaWdodCBfIC0+IHRydWVcblxubGV0IGZpbmRfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBTb21lIHZcbnwgUmlnaHQgXyAtPiBOb25lXG5cbmxldCBmaW5kX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IE5vbmVcbnwgUmlnaHQgdiAtPiBTb21lIHZcblxubGV0IG1hcF9sZWZ0IGYgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAoZiB2KVxufCBSaWdodCBfIGFzIGUgLT4gZVxuXG5sZXQgbWFwX3JpZ2h0IGYgPSBmdW5jdGlvblxufCBMZWZ0IF8gYXMgZSAtPiBlXG58IFJpZ2h0IHYgLT4gUmlnaHQgKGYgdilcblxubGV0IG1hcCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAobGVmdCB2KVxufCBSaWdodCB2IC0+IFJpZ2h0IChyaWdodCB2KVxuXG5sZXQgZm9sZCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gbGVmdCB2XG58IFJpZ2h0IHYgLT4gcmlnaHQgdlxuXG5sZXQgaXRlciA9IGZvbGRcblxubGV0IGZvcl9hbGwgPSBmb2xkXG5cbmxldCBlcXVhbCB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyB8IFJpZ2h0IF8sIExlZnQgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyAtPiAoLTEpXG58IFJpZ2h0IF8sIExlZnQgXyAtPiAxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBlIHwgT2sgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBPayBfXCJcbmxldCBiaW5kIHIgZiA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IGYgdiB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgam9pbiA9IGZ1bmN0aW9uIE9rIHIgLT4gciB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwIGYgPSBmdW5jdGlvbiBPayB2IC0+IE9rIChmIHYpIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXBfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gRXJyb3IgKGYgZSkgfCBPayBfIGFzIHYgLT4gdlxubGV0IGZvbGQgfm9rIH5lcnJvciA9IGZ1bmN0aW9uIE9rIHYgLT4gb2sgdiB8IEVycm9yIGUgLT4gZXJyb3IgZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyAtPiAoKVxubGV0IGl0ZXJfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZiBlIHwgT2sgXyAtPiAoKVxubGV0IGlzX29rID0gZnVuY3Rpb24gT2sgXyAtPiB0cnVlIHwgRXJyb3IgXyAtPiBmYWxzZVxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgXyAtPiB0cnVlIHwgT2sgXyAtPiBmYWxzZVxuXG5sZXQgZXF1YWwgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgXywgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBPayBfLCBFcnJvciBfIC0+IC0xXG58IEVycm9yIF8sIE9rIF8gLT4gMVxuXG5sZXQgdG9fb3B0aW9uID0gZnVuY3Rpb24gT2sgdiAtPiBTb21lIHYgfCBFcnJvciBfIC0+IE5vbmVcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gT2sgdiAtPiBbdl0gfCBFcnJvciBfIC0+IFtdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gT2sgdiAtPiBTZXEucmV0dXJuIHYgfCBFcnJvciBfIC0+IFNlcS5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBib29sID0gZmFsc2UgfCB0cnVlXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmxldCBlcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5leHRlcm5hbCB0b19pbnQgOiBib29sIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uIGZhbHNlIC0+IDAuIHwgdHJ1ZSAtPiAxLlxuXG4oKlxubGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG58IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG58IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxufCBfIC0+IE5vbmVcbiopXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvbiBmYWxzZSAtPiBcImZhbHNlXCIgfCB0cnVlIC0+IFwidHJ1ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onXG4gIHwgJ1xcMTkyJyAuLiAnXFwyMTQnXG4gIHwgJ1xcMjE2JyAuLiAnXFwyMjInIGFzIGMgLT5cbiAgICB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onXG4gIHwgJ1xcMjI0JyAuLiAnXFwyNDYnXG4gIHwgJ1xcMjQ4JyAuLiAnXFwyNTQnIGFzIGMgLT5cbiAgICB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXQgcmVjIGluaXRfdGFpbHJlY19hdXggYWNjIGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gYWNjXG4gIGVsc2UgaW5pdF90YWlscmVjX2F1eCAoZiBpIDo6IGFjYykgKGkrMSkgbiBmXG5cbmxldCByZWMgaW5pdF9hdXggaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHIgPSBmIGkgaW5cbiAgICByIDo6IGluaXRfYXV4IChpKzEpIG4gZlxuXG5sZXQgcmV2X2luaXRfdGhyZXNob2xkID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxMF8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQnc1xuICAgICBzbWFsbC4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaWYgbGVuID4gcmV2X2luaXRfdGhyZXNob2xkIHRoZW4gcmV2IChpbml0X3RhaWxyZWNfYXV4IFtdIDAgbGVuIGYpXG4gIGVsc2UgaW5pdF9hdXggMCBsZW4gZlxuXG5sZXQgcmVjIGZsYXR0ZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgbDo6ciAtPiBsIEAgZmxhdHRlbiByXG5cbmxldCBjb25jYXQgPSBmbGF0dGVuXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgYSBpbiByIDo6IG1hcCBmIGxcblxubGV0IHJlYyBtYXBpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBpIGEgaW4gciA6OiBtYXBpIChpICsgMSkgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0IHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGxldCByID0gZiBhMSBhMiBpbiByIDo6IG1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfYWxsIHAgPVxuICBsZXQgcmVjIGZpbmQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY3VcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gZmluZCAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCBhY2N1IGwgaW5cbiAgZmluZCBbXVxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0IGZpbHRlcmkgcCBsID1cbiAgbGV0IHJlYyBhdXggaSBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2NcbiAgfCB4OjpsIC0+IGF1eCAoaSArIDEpIChpZiBwIGkgeCB0aGVuIHg6OmFjYyBlbHNlIGFjYykgbFxuICBpblxuICBhdXggMCBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwIGYgPVxuICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCBhY2N1IGxcbiAgICAgICAgfCBTb21lIHYgLT4gYXV4ICh2IDo6IGFjY3UpIGxcbiAgaW5cbiAgYXV4IFtdXG5cbmxldCBjb25jYXRfbWFwIGYgbCA9XG4gIGxldCByZWMgYXV4IGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgIGxldCB4cyA9IGYgeCBpblxuICAgICAgIGF1eCBmIChyZXZfYXBwZW5kIHhzIGFjYykgbFxuICBpbiBhdXggZiBbXSBsXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgbGlzdCBvZiBsZW5ndGggYmV0d2VlbiBhYm91dCAxMDAwMDAgKGRlcGVuZGluZyBvbiB0aGUgbWlub3JcbiAgIGhlYXAgc2l6ZSBhbmQgdGhlIHR5cGUgb2YgdGhlIGxpc3QpIGFuZCBTeXMubWF4X2FycmF5X3NpemUsIGl0IGlzXG4gICBhY3R1YWxseSBmYXN0ZXIgdG8gdXNlIHRoZSBmb2xsb3dpbmcsIGJ1dCBpdCBtaWdodCBhbHNvIHVzZSBtb3JlIG1lbW9yeVxuICAgYmVjYXVzZSB0aGUgYXJndW1lbnQgbGlzdCBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQgaW5jcmVtZW50YWxseS5cblxuICAgQWxzbywgdGhlcmUgc2VlbXMgdG8gYmUgYSBidWcgaW4gdGhpcyBjb2RlIG9yIGluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2Ygb2JqX3RydW5jYXRlLlxuXG5leHRlcm5hbCBvYmpfdHJ1bmNhdGUgOiAnYSBhcnJheSAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuXG5sZXQgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgYWNjdSBuIHAgPVxuICAgIGlmIHAgPD0gMCB0aGVuIGFjY3UgZWxzZSBiZWdpblxuICAgICAgaWYgcCA9IG4gdGhlbiBiZWdpblxuICAgICAgICBvYmpfdHJ1bmNhdGUgYSBwO1xuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIChuLTEwMDApIChwLTEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIG4gKHAtMSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpblxuICBsb29wIFtdIChsLTEwMDApIGxcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICBBcnJheS5zdGFibGVfc29ydCBjbXAgYTtcbiAgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhXG5cbiopXG5cblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG47O1xuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuOztcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IHJlYyBkaXJlY3QgZGVwdGggc2VxIDogXyBsaXN0ID1cbiAgICBpZiBkZXB0aD0wXG4gICAgdGhlblxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gc2VxXG4gICAgICB8PiByZXYgKCogdGFpbHJlYyAqKVxuICAgIGVsc2UgbWF0Y2ggc2VxKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFtdXG4gICAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPiB4IDo6IGRpcmVjdCAoZGVwdGgtMSkgbmV4dFxuICBpblxuICBkaXJlY3QgNTAwIHNlcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIGNvcHkgcyBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgbG93ZXJjYXNlIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2Ugc1xuXG5sZXQgY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlIHNcbmxldCB1bmNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZSBzXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCBnZXRfaW50OCBiIGkgPVxuICAoKGdldF91aW50OCBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gOCkpIGFzciAoU3lzLmludF9zaXplIC0gOClcblxubGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF9pbnQxNl9uZSBiIGkgPVxuICAoKGdldF91aW50MTZfbmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9sZSBiIGkgPVxuICAoKGdldF91aW50MTZfbGUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAoKGdldF91aW50MTZfYmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgY29weSBzID1cbiAgQi5jb3B5IChib3MgcykgfD4gYnRzXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGZpbGwgPVxuICBCLmZpbGxcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgcmVjIGVzY2FwZV9pZl9uZWVkZWQgcyBuIGkgPVxuICAgIGlmIGkgPj0gbiB0aGVuIHMgZWxzZVxuICAgICAgbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFwwMDAnLi4nXFwwMzEnIHwgJ1xcMTI3Jy4uICdcXDI1NScgLT5cbiAgICAgICAgICBidHMgKEIuZXNjYXBlZCAoYm9zIHMpKVxuICAgICAgfCBfIC0+IGVzY2FwZV9pZl9uZWVkZWQgcyBuIChpKzEpXG4gIGluXG4gIGVzY2FwZV9pZl9uZWVkZWQgcyAobGVuZ3RoIHMpIDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPVxuICBCLnVwcGVyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZSBzID1cbiAgQi5sb3dlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplIHMgPVxuICBCLmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemUgcyA9XG4gIEIudW5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzZXRfdGFnIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfc2V0X3RhZ1wiXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IG1hcnNoYWwgKG9iaiA6IHQpID1cbiAgTWFyc2hhbC50b19ieXRlcyBvYmogW11cbmxldCB1bm1hcnNoYWwgc3RyIHBvcyA9XG4gIChNYXJzaGFsLmZyb21fYnl0ZXMgc3RyIHBvcywgcG9zICsgTWFyc2hhbC50b3RhbF9zaXplIHN0ciBwb3MpXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0NVxuXG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcbmxldCBmaW5hbF90YWcgPSBjdXN0b21fdGFnXG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbmxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsXG5sZXQgZXh0ZW5zaW9uX25hbWUgPSBFeHRlbnNpb25fY29uc3RydWN0b3IubmFtZVxubGV0IGV4dGVuc2lvbl9pZCA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiOztcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxubGV0IG1ha2VfZmxvYXQgPSBjcmVhdGVfZmxvYXRcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgY3JlYXRlX21hdHJpeCA9IG1ha2VfbWF0cml4XG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgbXVsIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCBkaXYgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsIHJlbSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZm1hIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1hX2Zsb2F0XCIgXCJjYW1sX2ZtYVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcblxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IGlzX2Zpbml0ZSAoeDogZmxvYXQpID0geCAtLiB4ID0gMC5cbmxldCBpc19pbmZpbml0ZSAoeDogZmxvYXQpID0gMS4gLy4geCA9IDAuXG5sZXQgaXNfbmFuICh4OiBmbG9hdCkgPSB4IDw+IHhcblxubGV0IHBpID0gMHgxLjkyMWZiNTQ0NDJkMThwKzFcbmxldCBtYXhfZmxvYXQgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gU3RkbGliLm1pbl9mbG9hdFxubGV0IGVwc2lsb24gPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0b19pbnQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXRcbnR5cGUgZnBjbGFzcyA9IFN0ZGxpYi5mcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwb3cgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNicnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jYnJ0X2Zsb2F0XCIgXCJjYW1sX2NicnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cDJfZmxvYXRcIiBcImNhbWxfZXhwMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMl9mbG9hdFwiIFwiY2FtbF9sb2cyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmYgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZfZmxvYXRcIiBcImNhbWxfZXJmXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZjX2Zsb2F0XCIgXCJjYW1sX2VyZmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdHJ1bmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90cnVuY19mbG9hdFwiIFwiY2FtbF90cnVuY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCByb3VuZCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3JvdW5kX2Zsb2F0XCIgXCJjYW1sX3JvdW5kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbltAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBpc19pbnRlZ2VyIHggPSB4ID0gdHJ1bmMgeCAmJiBpc19maW5pdGUgeFxuXG5leHRlcm5hbCBuZXh0X2FmdGVyIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmV4dGFmdGVyX2Zsb2F0XCIgXCJjYW1sX25leHRhZnRlclwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBzdWNjIHggPSBuZXh0X2FmdGVyIHggaW5maW5pdHlcbmxldCBwcmVkIHggPSBuZXh0X2FmdGVyIHggbmVnX2luZmluaXR5XG5cbmV4dGVybmFsIGNvcHlfc2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2lnbl9iaXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gYm9vbFxuICA9IFwiY2FtbF9zaWduYml0X2Zsb2F0XCIgXCJjYW1sX3NpZ25iaXRcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxudHlwZSB0ID0gZmxvYXRcbmV4dGVybmFsIGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBlcXVhbCB4IHkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0W0BpbmxpbmVdIG1pbiAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHx8IGlzX25hbiB5IHRoZW4gKG5hbiwgbmFuKVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCwgeSkgZWxzZSAoeSwgeClcblxubGV0W0BpbmxpbmVdIG1pbl9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHRoZW4gKHkseSlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuICh4LHgpXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LHkpIGVsc2UgKHkseClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+IGludCAtPiBmbG9hdCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gZmxvYXRhcnJheVxuXG4gIGV4dGVybmFsIGxlbmd0aCA6IHQgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGxldCB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgZm9yIGkgPSBvZnMgdG8gb2ZzICsgbGVuIC0gMSBkbyB1bnNhZmVfc2V0IGEgaSB2IGRvbmVcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPVxuICAgIFwiY2FtbF9mbG9hdGFycmF5X2JsaXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjaGVjayBhIG9mcyBsZW4gbXNnID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzICsgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBsZW5ndGggYSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBsZXQgbWFrZSBuIHYgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbiBpblxuICAgIHVuc2FmZV9maWxsIHJlc3VsdCAwIG4gdjtcbiAgICByZXN1bHRcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IGFwcGVuZCBhMSBhMiA9XG4gICAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gICAgbGV0IGwyID0gbGVuZ3RoIGEyIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgICB1bnNhZmVfYmxpdCBhMSAwIHJlc3VsdCAwIGwxO1xuICAgIHVuc2FmZV9ibGl0IGEyIDAgcmVzdWx0IGwxIGwyO1xuICAgIHJlc3VsdFxuXG4gICgqIG5leHQgMyBmdW5jdGlvbnM6IG1vZGlmaWVkIGNvcHkgb2YgY29kZSBmcm9tIHN0cmluZy5tbCAqKVxuICBsZXQgZW5zdXJlX2dlICh4OmludCkgeSA9XG4gICAgaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuY29uY2F0XCJcblxuICBsZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIGFjYykgYWNjKSB0bFxuXG4gIGxldCBjb25jYXQgbCA9XG4gICAgbGV0IGxlbiA9IHN1bV9sZW5ndGhzIDAgbCBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGwgaSA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gbGVuKVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQgaGxlbiA9IGxlbmd0aCBoZCBpblxuICAgICAgICB1bnNhZmVfYmxpdCBoZCAwIHJlc3VsdCBpIGhsZW47XG4gICAgICAgIGxvb3AgdGwgKGkgKyBobGVuKVxuICAgIGluXG4gICAgbG9vcCBsIDA7XG4gICAgcmVzdWx0XG5cbiAgbGV0IHN1YiBhIG9mcyBsZW4gPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LnN1YlwiO1xuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgYSBvZnMgcmVzdWx0IDAgbGVuO1xuICAgIHJlc3VsdFxuXG4gIGxldCBjb3B5IGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGwgaW5cbiAgICB1bnNhZmVfYmxpdCBhIDAgcmVzdWx0IDAgbDtcbiAgICByZXN1bHRcblxuICBsZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuZmlsbFwiO1xuICAgIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbiAgbGV0IGJsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuID1cbiAgICBjaGVjayBzcmMgc29mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgY2hlY2sgZHN0IGRvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIHVuc2FmZV9ibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlblxuXG4gIGxldCB0b19saXN0IGEgPVxuICAgIExpc3QuaW5pdCAobGVuZ3RoIGEpICh1bnNhZmVfZ2V0IGEpXG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiByZXN1bHRcbiAgICAgIHwgaCA6OiB0IC0+IHVuc2FmZV9zZXQgcmVzdWx0IGkgaDsgZmlsbCAoaSArIDEpIHRcbiAgICBpblxuICAgIGZpbGwgMCBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcjIgZiBhIGIgPVxuICAgIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxuICBsZXQgbWFwIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQ2NF06IDY0LWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5sZXQgemVybyA9IDBMXG5sZXQgb25lID0gMUxcbmxldCBtaW51c19vbmUgPSAtMUxcbmxldCBzdWNjIG4gPSBhZGQgbiAxTFxubGV0IHByZWQgbiA9IHN1YiBuIDFMXG5sZXQgYWJzIG4gPSBpZiBuID49IDBMIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDAwMDAwMDAwMExcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRkZGRkZGRkZGTFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xTClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHN1YnNldDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgICB2YWwgbWFwOiAoZWx0IC0+IGVsdCkgLT4gdCAtPiB0XG4gICAgdmFsIGZvbGQ6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgICB2YWwgZm9yX2FsbDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICAgIHZhbCBmaW5kOiBlbHQgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9vcHQ6IGVsdCAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgaXNfZW1wdHk6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBtZW06ICBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGFkZDoga2V5IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgICAgIChrZXkgLT4gJ2Egb3B0aW9uIC0+ICdiIG9wdGlvbiAtPiAnYyBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBmaW5kOiBrZXkgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDoga2V5IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGtleSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPSBzdHJ1Y3RcblxuICAgIHR5cGUga2V5ID0gT3JkLnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUgb2Yge2w6J2EgdDsgdjprZXk7IGQ6J2E7IHI6J2EgdDsgaDppbnR9XG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gaGVpZ2h0IGwgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgc2luZ2xldG9uIHggZCA9IE5vZGV7bD1FbXB0eTsgdj14OyBkOyByPUVtcHR5OyBoPTF9XG5cbiAgICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyBkPWxyZDsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IGQ9cmxkOyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBhZGQgeCBkYXRhID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggZGF0YSBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IGRhdGEgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gZFxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZFxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge2x9IC0+IG1pbl9iaW5kaW5nIGxcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfS0+IG1pbl9iaW5kaW5nX29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZyByXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmdfb3B0IHJcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHYgZCByXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IChOb2RlIHtsOyB2OyBkOyByfSBhcyBtKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW4gaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSB4IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5XG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgICAgIGVuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBtZXJnZSBsIHJcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZW5kIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gdXBkYXRlIHggZiBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHVwZGF0ZSB4IGYgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBjb3B5ID1cbiAgbGV0IHJlYyBjb3B5IHFfcmVzIHByZXYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gcV9yZXMubGFzdCA8LSBwcmV2OyBxX3Jlc1xuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IHJlcyA9IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gaW5cbiAgICAgIGJlZ2luIG1hdGNoIHByZXYgd2l0aFxuICAgICAgfCBOaWwgLT4gcV9yZXMuZmlyc3QgPC0gcmVzXG4gICAgICB8IENvbnMgcCAtPiBwLm5leHQgPC0gcmVzXG4gICAgICBlbmQ7XG4gICAgICBjb3B5IHFfcmVzIHJlcyBuZXh0XG4gIGluXG4gIGZ1biBxIC0+IGNvcHkgeyBsZW5ndGggPSBxLmxlbmd0aDsgZmlyc3QgPSBOaWw7IGxhc3QgPSBOaWwgfSBOaWwgcS5maXJzdFxuXG5sZXQgaXNfZW1wdHkgcSA9XG4gIHEubGVuZ3RoID0gMFxuXG5sZXQgbGVuZ3RoIHEgPVxuICBxLmxlbmd0aFxuXG5sZXQgaXRlciA9XG4gIGxldCByZWMgaXRlciBmIGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBmIGNvbnRlbnQ7XG4gICAgICBpdGVyIGYgbmV4dFxuICBpblxuICBmdW4gZiBxIC0+IGl0ZXIgZiBxLmZpcnN0XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBmb2xkIGYgYWNjdSBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBhY2N1XG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBjb250ZW50IGluXG4gICAgICBmb2xkIGYgYWNjdSBuZXh0XG4gIGluXG4gIGZ1biBmIGFjY3UgcSAtPiBmb2xkIGYgYWNjdSBxLmZpcnN0XG5cbmxldCB0cmFuc2ZlciBxMSBxMiA9XG4gIGlmIHExLmxlbmd0aCA+IDAgdGhlblxuICAgIG1hdGNoIHEyLmxhc3Qgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTEubGVuZ3RoO1xuICAgICAgcTIuZmlyc3QgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuICAgIHwgQ29ucyBsYXN0IC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTIubGVuZ3RoICsgcTEubGVuZ3RoO1xuICAgICAgbGFzdC5uZXh0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBxID1cbiAgbGV0IHJlYyBhdXggYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgIHwgTmlsIC0+IFNlcS5OaWxcbiAgICB8IENvbnMgeyBjb250ZW50PXg7IG5leHQ7IH0gLT4gU2VxLkNvbnMgKHgsIGF1eCBuZXh0KVxuICBpblxuICBhdXggcS5maXJzdFxuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHEgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHEgZztcbiAgcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbnRlcm5hbHMgb2YgZm9yY2luZyBsYXp5IHZhbHVlcy4gKilcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcblxubGV0IHJhaXNlX3VuZGVmaW5lZCA9IE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgVW5kZWZpbmVkKVxuXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiBPYmoudCAtPiBPYmoudCAtPiB1bml0ID0gXCJjYW1sX29ial9tYWtlX2ZvcndhcmRcIlxuXG4oKiBBc3N1bWUgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBsYXp5ICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIChPYmoucmVwciBibGspIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgcmFpc2VfdW5kZWZpbmVkO1xuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIG1ha2VfZm9yd2FyZCAoT2JqLnJlcHIgYmxrKSAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgICByZXN1bHRcbiAgd2l0aCBlIC0+XG4gICAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByYWlzZSBlXG5cblxuKCogQXNzdW1lIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgbGF6eSAqKVxubGV0IGZvcmNlX3ZhbF9sYXp5X2Jsb2NrIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgKE9iai5yZXByIGJsaykgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCByYWlzZV91bmRlZmluZWQ7XG4gIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gIG1ha2VfZm9yd2FyZCAoT2JqLnJlcHIgYmxrKSAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgcmVzdWx0XG5cblxuKCogW2ZvcmNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzIGRlY2xhcmVkIGFzIGEgcHJpbWl0aXZlXG4gICB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHMgYXJndW1lbnQsIGV4Y2VwdCB3aGVuIGFmbFxuICAgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcblxubGV0IGZvcmNlIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdHMgdGFnIGNvdWxkIGhhdmVcbiAgICAgICBjaGFuZ2VkIGR1cmluZyBHQywgc28gdGhhdCBpbmZvcm1hdGlvbiBtdXN0IGJlIGZvcmdvdHRlbiAoc2VlIEdQUiM3MTNcbiAgICAgICBhbmQgaXNzdWUgIzczMDEpXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW4gKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZykgZWxzZVxuICBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2xhenlfYmxvY2sgbHp2XG5cblxubGV0IGZvcmNlX3ZhbCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpIGVsc2VcbiAgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV92YWxfbGF6eV9ibG9jayBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5cbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6ICdhIC0+ICdhIGxhenlfdCA9IFwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZFwiXG5cbmV4dGVybmFsIGZvcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5cbmxldCBmb3JjZV92YWwgPSBDYW1saW50ZXJuYWxMYXp5LmZvcmNlX3ZhbFxuXG5sZXQgZnJvbV9mdW4gKGYgOiB1bml0IC0+ICdhcmcpID1cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5sYXp5X3RhZyAxIGluXG4gIE9iai5zZXRfZmllbGQgeCAwIChPYmoucmVwciBmKTtcbiAgKE9iai5vYmogeCA6ICdhcmcgdClcblxubGV0IGZyb21fdmFsICh2IDogJ2FyZykgPVxuICBsZXQgdCA9IE9iai50YWcgKE9iai5yZXByIHYpIGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgfHwgdCA9IE9iai5sYXp5X3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxuXG5sZXQgaXNfdmFsIChsIDogJ2FyZyB0KSA9IE9iai50YWcgKE9iai5yZXByIGwpIDw+IE9iai5sYXp5X3RhZ1xuXG5sZXQgbGF6eV9mcm9tX2Z1biA9IGZyb21fZnVuXG5cbmxldCBsYXp5X2Zyb21fdmFsID0gZnJvbV92YWxcblxubGV0IGxhenlfaXNfdmFsID0gaXNfdmFsXG5cblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBsYXp5X2Zyb21fdmFsIChmIChmb3JjZSB4KSlcbiAgZWxzZSBsYXp5IChmIChmb3JjZSB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2EgY2VsbCBvcHRpb25cbmFuZCAnYSBjZWxsID0geyBtdXRhYmxlIGNvdW50IDogaW50OyBtdXRhYmxlIGRhdGEgOiAnYSBkYXRhIH1cbmFuZCAnYSBkYXRhID1cbiAgICBTZW1wdHlcbiAgfCBTY29ucyBvZiAnYSAqICdhIGRhdGFcbiAgfCBTYXBwIG9mICdhIGRhdGEgKiAnYSBkYXRhXG4gIHwgU2xhenkgb2YgJ2EgZGF0YSBMYXp5LnRcbiAgfCBTZ2VuIG9mICdhIGdlblxuICB8IFNidWZmaW8gOiBidWZmaW8gLT4gY2hhciBkYXRhXG5hbmQgJ2EgZ2VuID0geyBtdXRhYmxlIGN1cnIgOiAnYSBvcHRpb24gb3B0aW9uOyBmdW5jIDogaW50IC0+ICdhIG9wdGlvbiB9XG5hbmQgYnVmZmlvID1cbiAgeyBpYyA6IGluX2NoYW5uZWw7IGJ1ZmYgOiBieXRlczsgbXV0YWJsZSBsZW4gOiBpbnQ7IG11dGFibGUgaW5kIDogaW50IH1cblxuZXhjZXB0aW9uIEZhaWx1cmVcbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IGNvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHsgY291bnQgfSAtPiBjb3VudFxubGV0IGRhdGEgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gU2VtcHR5XG4gIHwgU29tZSB7IGRhdGEgfSAtPiBkYXRhXG5cbmxldCBmaWxsX2J1ZmYgYiA9XG4gIGIubGVuIDwtIGlucHV0IGIuaWMgYi5idWZmIDAgKEJ5dGVzLmxlbmd0aCBiLmJ1ZmYpOyBiLmluZCA8LSAwXG5cblxubGV0IHJlYyBnZXRfZGF0YSA6IHR5cGUgdi4gaW50IC0+IHYgZGF0YSAtPiB2IGRhdGEgPSBmdW4gY291bnQgZCAtPiBtYXRjaCBkIHdpdGhcbiAoKiBSZXR1cm5zIGVpdGhlciBTZW1wdHkgb3IgU2NvbnMoYSwgXykgZXZlbiB3aGVuIGQgaXMgYSBnZW5lcmF0b3JcbiAgICBvciBhIGJ1ZmZlci4gSW4gdGhvc2UgY2FzZXMsIHRoZSBpdGVtIGEgaXMgc2VlbiBhcyBleHRyYWN0ZWQgZnJvbVxuIHRoZSBnZW5lcmF0b3IvYnVmZmVyLlxuIFRoZSBjb3VudCBwYXJhbWV0ZXIgaXMgdXNlZCBmb3IgY2FsbGluZyBgU2dlbi1mdW5jdGlvbnMnLiAgKilcbiAgIFNlbXB0eSB8IFNjb25zIChfLCBfKSAtPiBkXG4gfCBTYXBwIChkMSwgZDIpIC0+XG4gICAgIGJlZ2luIG1hdGNoIGdldF9kYXRhIGNvdW50IGQxIHdpdGhcbiAgICAgICBTY29ucyAoYSwgZDExKSAtPiBTY29ucyAoYSwgU2FwcCAoZDExLCBkMikpXG4gICAgIHwgU2VtcHR5IC0+IGdldF9kYXRhIGNvdW50IGQyXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgZW5kXG4gfCBTZ2VuIHtjdXJyID0gU29tZSBOb25lfSAtPiBTZW1wdHlcbiB8IFNnZW4gKHtjdXJyID0gU29tZShTb21lIGEpfSBhcyBnKSAtPlxuICAgICBnLmN1cnIgPC0gTm9uZTsgU2NvbnMoYSwgZClcbiB8IFNnZW4gZyAtPlxuICAgICBiZWdpbiBtYXRjaCBnLmZ1bmMgY291bnQgd2l0aFxuICAgICAgIE5vbmUgLT4gZy5jdXJyIDwtIFNvbWUoTm9uZSk7IFNlbXB0eVxuICAgICB8IFNvbWUgYSAtPiBTY29ucyhhLCBkKVxuICAgICAgICAgKCogV2FybmluZzogYW55b25lIHVzaW5nIGcgdGhpbmtzIHRoYXQgYW4gaXRlbSBoYXMgYmVlbiByZWFkICopXG4gICAgIGVuZFxuIHwgU2J1ZmZpbyBiIC0+XG4gICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgIGlmIGIubGVuID09IDAgdGhlbiBTZW1wdHkgZWxzZVxuICAgICAgIGxldCByID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmYgYi5pbmQgaW5cbiAgICAgICAoKiBXYXJuaW5nOiBhbnlvbmUgdXNpbmcgZyB0aGlua3MgdGhhdCBhbiBpdGVtIGhhcyBiZWVuIHJlYWQgKilcbiAgICAgICBiLmluZCA8LSBzdWNjIGIuaW5kOyBTY29ucyhyLCBkKVxuIHwgU2xhenkgZiAtPiBnZXRfZGF0YSBjb3VudCAoTGF6eS5mb3JjZSBmKVxuXG5cbmxldCByZWMgcGVla19kYXRhIDogdHlwZSB2LiB2IGNlbGwgLT4gdiBvcHRpb24gPSBmdW4gcyAtPlxuICgqIGNvbnN1bHQgdGhlIGZpcnN0IGl0ZW0gb2YgcyAqKVxuIG1hdGNoIHMuZGF0YSB3aXRoXG4gICBTZW1wdHkgLT4gTm9uZVxuIHwgU2NvbnMgKGEsIF8pIC0+IFNvbWUgYVxuIHwgU2FwcCAoXywgXykgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZ2V0X2RhdGEgcy5jb3VudCBzLmRhdGEgd2l0aFxuICAgICAgIFNjb25zKGEsIF8pIGFzIGQgLT4gcy5kYXRhIDwtIGQ7IFNvbWUgYVxuICAgICB8IFNlbXB0eSAtPiBOb25lXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgZW5kXG4gfCBTbGF6eSBmIC0+IHMuZGF0YSA8LSAoTGF6eS5mb3JjZSBmKTsgcGVla19kYXRhIHNcbiB8IFNnZW4ge2N1cnIgPSBTb21lIGF9IC0+IGFcbiB8IFNnZW4gZyAtPiBsZXQgeCA9IGcuZnVuYyBzLmNvdW50IGluIGcuY3VyciA8LSBTb21lIHg7IHhcbiB8IFNidWZmaW8gYiAtPlxuICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gYmVnaW4gcy5kYXRhIDwtIFNlbXB0eTsgTm9uZSBlbmRcbiAgICAgZWxzZSBTb21lIChCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZiBiLmluZClcblxuXG5sZXQgcGVlayA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBzIC0+IHBlZWtfZGF0YSBzXG5cblxubGV0IHJlYyBqdW5rX2RhdGEgOiB0eXBlIHYuIHYgY2VsbCAtPiB1bml0ID0gZnVuIHMgLT5cbiAgbWF0Y2ggcy5kYXRhIHdpdGhcbiAgICBTY29ucyAoXywgZCkgLT4gcy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgcy5kYXRhIDwtIGRcbiAgfCBTZ2VuICh7Y3VyciA9IFNvbWUgX30gYXMgZykgLT4gcy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgZy5jdXJyIDwtIE5vbmVcbiAgfCBTYnVmZmlvIGIgLT5cbiAgICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gcy5kYXRhIDwtIFNlbXB0eVxuICAgICAgZWxzZSAocy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgYi5pbmQgPC0gc3VjYyBiLmluZClcbiAgfCBfIC0+XG4gICAgICBtYXRjaCBwZWVrX2RhdGEgcyB3aXRoXG4gICAgICAgIE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGp1bmtfZGF0YSBzXG5cblxubGV0IGp1bmsgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRhdGEgLT4ganVua19kYXRhIGRhdGFcblxubGV0IHJlYyBuZ2V0X2RhdGEgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW4gW10sIHMuZGF0YSwgMFxuICBlbHNlXG4gICAgbWF0Y2ggcGVla19kYXRhIHMgd2l0aFxuICAgICAgU29tZSBhIC0+XG4gICAgICAgIGp1bmtfZGF0YSBzO1xuICAgICAgICBsZXQgKGFsLCBkLCBrKSA9IG5nZXRfZGF0YSAocHJlZCBuKSBzIGluIGEgOjogYWwsIFNjb25zIChhLCBkKSwgc3VjYyBrXG4gICAgfCBOb25lIC0+IFtdLCBzLmRhdGEsIDBcblxuXG5sZXQgbnBlZWtfZGF0YSBuIHMgPVxuICBsZXQgKGFsLCBkLCBsZW4pID0gbmdldF9kYXRhIG4gcyBpblxuICBzLmNvdW50IDwtIChzLmNvdW50IC0gbGVuKTtcbiAgcy5kYXRhIDwtIGQ7XG4gIGFsXG5cblxubGV0IG5wZWVrIG4gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIGQgLT4gbnBlZWtfZGF0YSBuIGRcblxubGV0IG5leHQgcyA9XG4gIG1hdGNoIHBlZWsgcyB3aXRoXG4gICAgU29tZSBhIC0+IGp1bmsgczsgYVxuICB8IE5vbmUgLT4gcmFpc2UgRmFpbHVyZVxuXG5cbmxldCBlbXB0eSBzID1cbiAgbWF0Y2ggcGVlayBzIHdpdGhcbiAgICBTb21lIF8gLT4gcmFpc2UgRmFpbHVyZVxuICB8IE5vbmUgLT4gKClcblxuXG5sZXQgaXRlciBmIHN0cm0gPVxuICBsZXQgcmVjIGRvX3JlYyAoKSA9XG4gICAgbWF0Y2ggcGVlayBzdHJtIHdpdGhcbiAgICAgIFNvbWUgYSAtPiBqdW5rIHN0cm07IGlnbm9yZShmIGEpOyBkb19yZWMgKClcbiAgICB8IE5vbmUgLT4gKClcbiAgaW5cbiAgZG9fcmVjICgpXG5cblxuKCogU3RyZWFtIGJ1aWxkaW5nIGZ1bmN0aW9ucyAqKVxuXG5sZXQgZnJvbSBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2dlbiB7Y3VyciA9IE5vbmU7IGZ1bmMgPSBmfX1cblxubGV0IG9mX2xpc3QgbCA9XG4gIFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IExpc3QuZm9sZF9yaWdodCAoZnVuIHggbCAtPiBTY29ucyAoeCwgbCkpIGwgU2VtcHR5fVxuXG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGZyb20gKGZ1biBfIC0+XG4gICAgKCogV2UgY2Fubm90IHVzZSB0aGUgaW5kZXggcGFzc2VkIGJ5IHRoZSBbZnJvbV0gZnVuY3Rpb24gZGlyZWN0bHlcbiAgICAgICBiZWNhdXNlIGl0IHJldHVybnMgdGhlIGN1cnJlbnQgc3RyZWFtIGNvdW50LCB3aXRoIGFic29sdXRlbHkgbm9cbiAgICAgICBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIHN0YXJ0IGZyb20gMC4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlXG4gICAgICAgb2YgW1N0cmVhbS5pY29ucyAnYycgKFN0cmVhbS5mcm9tX3N0cmluZyBcImFiXCIpXSwgdGhlIGZpcnN0XG4gICAgICAgYWNjZXNzIHRvIHRoZSBzdHJpbmcgd2lsbCBiZSBtYWRlIHdpdGggY291bnQgWzFdIGFscmVhZHkuXG4gICAgKilcbiAgICBsZXQgYyA9ICFjb3VudCBpblxuICAgIGlmIGMgPCBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIChpbmNyIGNvdW50OyBTb21lIHMuW2NdKVxuICAgIGVsc2UgTm9uZSlcblxuXG5sZXQgb2ZfYnl0ZXMgcyA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGZyb20gKGZ1biBfIC0+XG4gICAgbGV0IGMgPSAhY291bnQgaW5cbiAgICBpZiBjIDwgQnl0ZXMubGVuZ3RoIHNcbiAgICB0aGVuIChpbmNyIGNvdW50OyBTb21lIChCeXRlcy5nZXQgcyBjKSlcbiAgICBlbHNlIE5vbmUpXG5cblxubGV0IG9mX2NoYW5uZWwgaWMgPVxuICBTb21lIHtjb3VudCA9IDA7XG4gICAgICAgIGRhdGEgPSBTYnVmZmlvIHtpYyA9IGljOyBidWZmID0gQnl0ZXMuY3JlYXRlIDQwOTY7IGxlbiA9IDA7IGluZCA9IDB9fVxuXG5cbigqIFN0cmVhbSBleHByZXNzaW9ucyBidWlsZGVycyAqKVxuXG5sZXQgaWFwcCBpIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTYXBwIChkYXRhIGksIGRhdGEgcyl9XG5sZXQgaWNvbnMgaSBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2NvbnMgKGksIGRhdGEgcyl9XG5sZXQgaXNpbmcgaSA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNjb25zIChpLCBTZW1wdHkpfVxuXG5sZXQgbGFwcCBmIHMgPVxuICBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTYXBwIChkYXRhIChmICgpKSwgZGF0YSBzKSkpfVxuXG5sZXQgbGNvbnMgZiBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2NvbnMgKGYgKCksIGRhdGEgcykpKX1cbmxldCBsc2luZyBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2NvbnMgKGYgKCksIFNlbXB0eSkpKX1cblxubGV0IHNlbXB0eSA9IE5vbmVcbmxldCBzbGF6eSBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoZGF0YSAoZiAoKSkpKX1cblxuKCogRm9yIGRlYnVnZ2luZyB1c2UgKilcblxubGV0IHJlYyBkdW1wIDogdHlwZSB2LiAodiAtPiB1bml0KSAtPiB2IHQgLT4gdW5pdCA9IGZ1biBmIHMgLT5cbiAgcHJpbnRfc3RyaW5nIFwie2NvdW50ID0gXCI7XG4gIHByaW50X2ludCAoY291bnQgcyk7XG4gIHByaW50X3N0cmluZyBcIjsgZGF0YSA9IFwiO1xuICBkdW1wX2RhdGEgZiAoZGF0YSBzKTtcbiAgcHJpbnRfc3RyaW5nIFwifVwiO1xuICBwcmludF9uZXdsaW5lICgpXG5hbmQgZHVtcF9kYXRhIDogdHlwZSB2LiAodiAtPiB1bml0KSAtPiB2IGRhdGEgLT4gdW5pdCA9IGZ1biBmIC0+XG4gIGZ1bmN0aW9uXG4gICAgU2VtcHR5IC0+IHByaW50X3N0cmluZyBcIlNlbXB0eVwiXG4gIHwgU2NvbnMgKGEsIGQpIC0+XG4gICAgICBwcmludF9zdHJpbmcgXCJTY29ucyAoXCI7XG4gICAgICBmIGE7XG4gICAgICBwcmludF9zdHJpbmcgXCIsIFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDtcbiAgICAgIHByaW50X3N0cmluZyBcIilcIlxuICB8IFNhcHAgKGQxLCBkMikgLT5cbiAgICAgIHByaW50X3N0cmluZyBcIlNhcHAgKFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDE7XG4gICAgICBwcmludF9zdHJpbmcgXCIsIFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDI7XG4gICAgICBwcmludF9zdHJpbmcgXCIpXCJcbiAgfCBTbGF6eSBfIC0+IHByaW50X3N0cmluZyBcIlNsYXp5XCJcbiAgfCBTZ2VuIF8gLT4gcHJpbnRfc3RyaW5nIFwiU2dlblwiXG4gIHwgU2J1ZmZpbyBfIC0+IHByaW50X3N0cmluZyBcIlNidWZmaW9cIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgUGllcnJlIFdlaXMgYW5kIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5OSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeHRlbnNpYmxlIGJ1ZmZlcnMgKilcblxudHlwZSB0ID1cbiB7bXV0YWJsZSBidWZmZXIgOiBieXRlcztcbiAgbXV0YWJsZSBwb3NpdGlvbiA6IGludDtcbiAgbXV0YWJsZSBsZW5ndGggOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmxlbmd0aF1cbiAgIC0gW2IubGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuYnVmZmVyXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHtidWZmZXIgPSBzOyBwb3NpdGlvbiA9IDA7IGxlbmd0aCA9IG47IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0IHNyYy5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IGIucG9zaXRpb24gdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGIuYnVmZmVyIDwtIGIuaW5pdGlhbF9idWZmZXI7XG4gIGIubGVuZ3RoIDwtIEJ5dGVzLmxlbmd0aCBiLmJ1ZmZlclxuXG4oKiBbcmVzaXplIGIgbW9yZV0gZW5zdXJlcyB0aGF0IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gaG9sZHNcbiAgIGJ5IGR5bmFtaWNhbGx5IGV4dGVuZGluZyBbYi5idWZmZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5sZW5ndGhdLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBhZnRlciBbcmVzaXplIGIgbW9yZV0gaXMgY2FsbGVkLCBhIGRpcmVjdCBhY2Nlc3Mgb2ZcbiAgIHNpemUgW21vcmVdIGF0IFtiLnBvc2l0aW9uXSB3aWxsIGFsd2F5cyBiZSBpbi1ib3VuZHMsIHNvIHRoYXRcbiAgICh1bnNhZmVfe2dldCxzZXR9KSBtYXkgYmUgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG4qKVxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgb2xkX3BvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IG9sZF9sZW4gPSBiLmxlbmd0aCBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIHdoaWxlIG9sZF9wb3MgKyBtb3JlID4gIW5ld19sZW4gZG8gbmV3X2xlbiA6PSAyICogIW5ld19sZW4gZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBiZWdpblxuICAgIGlmIG9sZF9wb3MgKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIHRoZW4gbmV3X2xlbiA6PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCJcbiAgZW5kO1xuICBsZXQgbmV3X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJ5dGVzLmJsaXQgYi5idWZmZXIgMCBuZXdfYnVmZmVyIDAgYi5wb3NpdGlvbjtcbiAgYi5idWZmZXIgPC0gbmV3X2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gIW5ld19sZW47XG4gIGFzc2VydCAoYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGgpO1xuICBhc3NlcnQgKG9sZF9wb3MgKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgKClcbiAgKCogTm90ZTogdGhlcmUgYXJlIHZhcmlvdXMgc2l0dWF0aW9ucyAocHJlZW1wdGl2ZSB0aHJlYWRzLCBzaWduYWxzIGFuZFxuICAgICBnYyBmaW5hbGl6ZXJzKSB3aGVyZSBPQ2FtbCBjb2RlIG1heSBiZSBydW4gYXN5bmNocm9ub3VzbHk7IGluXG4gICAgIHBhcnRpY3VsYXIsIHRoZXJlIG1heSBiZSBhIHJhY2Ugd2l0aCBhbm90aGVyIHVzZXIgb2YgW2JdLCBjaGFuZ2luZ1xuICAgICBpdHMgbXV0YWJsZSBmaWVsZHMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgW3Jlc2l6ZV0gY2FsbC4gVGhlIEJ1ZmZlclxuICAgICBtb2R1bGUgZG9lcyBub3QgcHJvdmlkZSBhbnkgY29ycmVjdG5lc3MgZ3VhcmFudGVlIGlmIHRoYXQgaGFwcGVucyxcbiAgICAgYnV0IHdlIG11c3Qgc3RpbGwgZW5zdXJlIHRoYXQgdGhlIGRhdGFzdHJ1Y3R1cmUgaW52YXJpYW50cyBob2xkIGZvclxuICAgICBtZW1vcnktc2FmZXR5IC0tIGFzIHdlIHBsYW4gdG8gdXNlIFt1bnNhZmVfe2dldCxzZXR9XS5cblxuICAgICBUaGVyZSBhcmUgdHdvIHBvdGVudGlhbCBhbGxvY2F0aW9uIHBvaW50cyBpbiB0aGlzIGZ1bmN0aW9uLFxuICAgICBbcmVmXSBhbmQgW0J5dGVzLmNyZWF0ZV0sIGJ1dCBhbGwgcmVhZHMgYW5kIHdyaXRlcyB0byB0aGUgZmllbGRzXG4gICAgIG9mIFtiXSBoYXBwZW4gYmVmb3JlIGJvdGggb2YgdGhlbSBvciBhZnRlciBib3RoIG9mIHRoZW0uXG5cbiAgICAgV2UgdGhlcmVmb3JlIGFzc3VtZSB0aGF0IFtiLnBvc2l0aW9uXSBtYXkgY2hhbmdlIGF0IHRoZXNlIGFsbG9jYXRpb25zLFxuICAgICBhbmQgY2hlY2sgdGhhdCB0aGUgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBwb3N0Y29uZGl0aW9uXG4gICAgIGhvbGRzIGZvciBib3RoIHZhbHVlcyBvZiBbYi5wb3NpdGlvbl0sIGJlZm9yZSBvciBhZnRlciB0aGUgZnVuY3Rpb25cbiAgICAgaXMgY2FsbGVkLiBNb3JlIHByZWNpc2VseSwgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgaG9sZCBpZiB0aGVcbiAgICAgZnVuY3Rpb24gcmV0dXJucyBjb3JyZWN0bHksIGluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBidWZmZXIgaW52YXJpYW50czpcbiAgICAgLSBbb2xkKGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtuZXcoYi5wb3NpdGlvbikgKyBtb3JlIDw9IG5ldyhiLmxlbmd0aCldXG4gICAgIC0gW29sZChiLmxlbmd0aCkgPD0gbmV3KGIubGVuZ3RoKV1cblxuICAgICBOb3RlOiBbYi5wb3NpdGlvbiArIG1vcmUgPD0gb2xkKGIubGVuZ3RoKV0gZG9lcyAqbm90KlxuICAgICBob2xkIGluIGdlbmVyYWwsIGFzIGl0IGlzIHByZWNpc2VseSB0aGUgY2FzZSB3aGVyZSB5b3UgbmVlZFxuICAgICB0byBjYWxsIFtyZXNpemVdIHRvIGluY3JlYXNlIFtiLmxlbmd0aF0uXG5cbiAgICAgTm90ZTogW2Fzc2VydF0gYWJvdmUgZG9lcyBub3QgbWVhbiB0aGF0IHdlIGtub3cgdGhlIGNvbmRpdGlvbnNcbiAgICAgYWx3YXlzIGhvbGQsIGJ1dCB0aGF0IHRoZSBmdW5jdGlvbiBtYXkgcmV0dXJuIGNvcnJlY3RseVxuICAgICBvbmx5IGlmIHRoZXkgaG9sZC5cblxuICAgICBOb3RlOiB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIGRvZXMgbm90IG5lZWRcbiAgICAgdG8gYmUgY2hlY2tlZCB3aXRoIHRoaXMgbGV2ZWwgb2Ygc2NydXRpbnksIGdpdmVuIHRoYXQgdGhleVxuICAgICByZWFkL3dyaXRlIHRoZSBidWZmZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgY2hlY2tpbmcgdGhhdFxuICAgICBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIGhvbGQgb3IgY2FsbGluZyBbcmVzaXplXS5cbiAgKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG4gbGV0IGFkZF91dGZfOF91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgYWRkX2NoYXIgYiAoQ2hhci51bnNhZmVfY2hyIHUpXG4gfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEMwIGxvciAodSBsc3IgNikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDMgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDM7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhFMCBsb3IgKHUgbHNyIDEyKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAzXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RjAgbG9yICh1IGxzciAxOCkpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgYWRkX3N1YnN0cmluZyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGlmIG9mZnNldCA8IDAgfHwgbGVuIDwgMCB8fCBvZmZzZXQgPiBTdHJpbmcubGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHRoaXMgKHByaXZhdGUpIGZ1bmN0aW9uIGNvdWxkIG1vdmUgaW50byB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxubGV0IHJlYWxseV9pbnB1dF91cF90byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkID1cbiAgICBpZiB0b19yZWFkID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIG9mcyB0b19yZWFkIGluXG4gICAgICBpZiByID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYWxyZWFkeV9yZWFkID0gYWxyZWFkeV9yZWFkICsgciBpblxuICAgICAgICBsZXQgb2ZzID0gb2ZzICsgciBpblxuICAgICAgICBsZXQgdG9fcmVhZCA9IHRvX3JlYWQgLSByIGluXG4gICAgICAgIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQ6MCB+b2ZzIH50b19yZWFkOmxlblxuXG5cbmxldCB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gPVxuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGxldCBuID0gcmVhbGx5X2lucHV0X3VwX3RvIGljIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuIGluXG4gICgqIFRoZSBhc3NlcnRpb24gYmVsb3cgbWF5IGZhaWwgaW4gd2VpcmQgc2NlbmFyaW8gd2hlcmVcbiAgICAgdGhyZWFkZWQvZmluYWxpemVyIGNvZGUsIHJ1biBhc3luY2hyb25vdXNseSBkdXJpbmcgdGhlXG4gICAgIFtyZWFsbHlfaW5wdXRfdXBfdG9dIGNhbGwsIHJhY2VzIG9uIHRoZSBidWZmZXI7IHdlIGRvbid0IGVuc3VyZVxuICAgICBjb3JyZWN0bmVzcyBpbiB0aGlzIGNhc2UsIGJ1dCBuZWVkIHRvIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIGZvclxuICAgICBtZW1vcnktc2FmZXR5IChzZWUgZGlzY3Vzc2lvbiBvZiBbcmVzaXplXSkuICopXG4gIGFzc2VydCAoYi5wb3NpdGlvbiArIG4gPD0gYi5sZW5ndGgpO1xuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBhZGRfc2VxIGIgc2VxID0gU2VxLml0ZXIgKGFkZF9jaGFyIGIpIHNlcVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgYiA9IGNyZWF0ZSAzMiBpblxuICBhZGRfc2VxIGIgaTtcbiAgYlxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDEgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICB1bnNhZmVfc2V0X2ludDggYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gIHVuc2FmZV9zZXRfaW50MTYgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gIHVuc2FmZV9zZXRfaW50MzIgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDg7XG4gIHVuc2FmZV9zZXRfaW50NjQgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIFhhdmllciBMZXJveSBhbmQgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG5sZXQga2ZwcmludGYgayBvIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBvIGFjYzsgayBvKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGticHJpbnRmIGsgYiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IGJ1ZnB1dF9hY2MgYiBhY2M7IGsgYikgRW5kX29mX2FjYyBmbXRcbmxldCBpa2ZwcmludGYgayBvYyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIG9jIGZtdFxubGV0IGlrYnByaW50ZiA9IGlrZnByaW50ZlxuXG5sZXQgZnByaW50ZiBvYyBmbXQgPSBrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgYnByaW50ZiBiIGZtdCA9IGticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IGlmcHJpbnRmIG9jIGZtdCA9IGlrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgaWJwcmludGYgYiBmbXQgPSBpa2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3Rkb3V0IGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBzdGRlcnIgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGsnIGFjYyA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBzdHJwdXRfYWNjIGJ1ZiBhY2M7XG4gICAgayAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXRcblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IHMpIGZtdFxuXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gc3RyaW5nXG50eXBlIGRvYyA9IHN0cmluZ1xudHlwZSB1c2FnZV9tc2cgPSBzdHJpbmdcbnR5cGUgYW5vbl9mdW4gPSAoc3RyaW5nIC0+IHVuaXQpXG5cbnR5cGUgc3BlYyA9XG4gIHwgVW5pdCBvZiAodW5pdCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB1bml0IGFyZ3VtZW50ICopXG4gIHwgQm9vbCBvZiAoYm9vbCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGJvb2wgYXJndW1lbnQgKilcbiAgfCBTZXQgb2YgYm9vbCByZWYgICAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0cnVlICopXG4gIHwgQ2xlYXIgb2YgYm9vbCByZWYgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gZmFsc2UgKilcbiAgfCBTdHJpbmcgb2YgKHN0cmluZyAtPiB1bml0KSAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgU2V0X3N0cmluZyBvZiBzdHJpbmcgcmVmICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IEludCBvZiAoaW50IC0+IHVuaXQpICAgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYW4gaW50IGFyZ3VtZW50ICopXG4gIHwgU2V0X2ludCBvZiBpbnQgcmVmICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGludCBhcmd1bWVudCAqKVxuICB8IEZsb2F0IG9mIChmbG9hdCAtPiB1bml0KSAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFNldF9mbG9hdCBvZiBmbG9hdCByZWYgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFR1cGxlIG9mIHNwZWMgbGlzdCAgICAgICAgICgqIFRha2Ugc2V2ZXJhbCBhcmd1bWVudHMgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMgbGlzdCAqKVxuICB8IFN5bWJvbCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUYWtlIG9uZSBvZiB0aGUgc3ltYm9scyBhcyBhcmd1bWVudCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzeW1ib2wuICopXG4gIHwgUmVzdCBvZiAoc3RyaW5nIC0+IHVuaXQpICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBlYWNoIHJlbWFpbmluZyBhcmd1bWVudCAqKVxuICB8IFJlc3RfYWxsIG9mIChzdHJpbmcgbGlzdCAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYWxsIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG4gIHwgRXhwYW5kIG9mIChzdHJpbmcgLT4gc3RyaW5nIGFycmF5KSAoKiBJZiB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB0byBwcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgb2YgdGhlIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXCItZm9vXCI7IFwiYXJnXCJdIEAgcmVzdF0gd2hlcmUgXCJmb29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVnaXN0ZXJlZCBhcyBbRXhwYW5kIGZdLCB0aGVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIFtmIFwiYXJnXCIgQCByZXN0XSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC4gT25seSBhbGxvd2VkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNdLiAqKVxuXG5leGNlcHRpb24gQmFkIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEhlbHAgb2Ygc3RyaW5nXG5cbnR5cGUgZXJyb3IgPVxuICB8IFVua25vd24gb2Ygc3RyaW5nXG4gIHwgV3Jvbmcgb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nICAoKiBvcHRpb24sIGFjdHVhbCwgZXhwZWN0ZWQgKilcbiAgfCBNaXNzaW5nIG9mIHN0cmluZ1xuICB8IE1lc3NhZ2Ugb2Ygc3RyaW5nXG5cbmV4Y2VwdGlvbiBTdG9wIG9mIGVycm9yICgqIHVzZWQgaW50ZXJuYWxseSAqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcmVjIGFzc29jMyB4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoeTEsIHkyLCBfKSA6OiBfIHdoZW4geTEgPSB4IC0+IHkyXG4gIHwgXyA6OiB0IC0+IGFzc29jMyB4IHRcblxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJz0nIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgU3RyaW5nLnN1YiBzIDAgaSwgU3RyaW5nLnN1YiBzIChpKzEpIChsZW4tKGkrMSkpXG5cblxubGV0IG1ha2Vfc3ltbGlzdCBwcmVmaXggc2VwIHN1ZmZpeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCI8bm9uZT5cIlxuICB8IGg6OnQgLT4gKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IHggXiBzZXAgXiB5KSAocHJlZml4IF4gaCkgdCkgXiBzdWZmaXhcblxuXG5sZXQgcHJpbnRfc3BlYyBidWYgKGtleSwgc3BlYywgZG9jKSA9XG4gIGlmIFN0cmluZy5sZW5ndGggZG9jID4gMCB0aGVuXG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBTeW1ib2wgKGwsIF8pIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlcyVzXFxuXCIga2V5IChtYWtlX3N5bWxpc3QgXCJ7XCIgXCJ8XCIgXCJ9XCIgbCkgZG9jXG4gICAgfCBfIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlc1xcblwiIGtleSBkb2NcblxuXG5sZXQgaGVscF9hY3Rpb24gKCkgPSByYWlzZSAoU3RvcCAoVW5rbm93biBcIi1oZWxwXCIpKVxuXG5sZXQgYWRkX2hlbHAgc3BlY2xpc3QgPVxuICBsZXQgYWRkMSA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgYW5kIGFkZDIgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi0taGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLS1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgaW5cbiAgc3BlY2xpc3QgQCAoYWRkMSBAIGFkZDIpXG5cblxubGV0IHVzYWdlX2IgYnVmIHNwZWNsaXN0IGVycm1zZyA9XG4gIGJwcmludGYgYnVmIFwiJXNcXG5cIiBlcnJtc2c7XG4gIExpc3QuaXRlciAocHJpbnRfc3BlYyBidWYpIChhZGRfaGVscCBzcGVjbGlzdClcblxuXG5sZXQgdXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgdXNhZ2VfYiBiIHNwZWNsaXN0IGVycm1zZztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgdXNhZ2Ugc3BlY2xpc3QgZXJybXNnID1cbiAgZXByaW50ZiBcIiVzXCIgKHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cpXG5cblxubGV0IGN1cnJlbnQgPSByZWYgMFxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoYm9vbF9vZl9zdHJpbmcgeClcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGFsbG93X2V4cGFuZCBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPVxuICBsZXQgaW5pdHBvcyA9ICFjdXJyZW50IGluXG4gIGxldCBjb252ZXJ0X2Vycm9yIGVycm9yID1cbiAgICAoKiBjb252ZXJ0IGFuIGludGVybmFsIGVycm9yIHRvIGEgQmFkL0hlbHAgZXhjZXB0aW9uXG4gICAgICAgKm9yKiBhZGQgdGhlIHByb2dyYW0gbmFtZSBhcyBhIHByZWZpeCBhbmQgdGhlIHVzYWdlIG1lc3NhZ2UgYXMgYSBzdWZmaXhcbiAgICAgICB0byBhbiB1c2VyLXJhaXNlZCBCYWQgZXhjZXB0aW9uLlxuICAgICopXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICAgIGxldCBwcm9nbmFtZSA9XG4gICAgICBpZiBpbml0cG9zIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oaW5pdHBvcykgZWxzZSBcIig/KVwiIGluXG4gICAgYmVnaW4gbWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgfCBVbmtub3duIFwiLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIFwiLS1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHVua25vd24gb3B0aW9uICclcycuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBNaXNzaW5nIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogb3B0aW9uICclcycgbmVlZHMgYW4gYXJndW1lbnQuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBXcm9uZyAob3B0LCBhcmcsIGV4cGVjdGVkKSAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB3cm9uZyBhcmd1bWVudCAnJXMnOyBvcHRpb24gJyVzJyBleHBlY3RzICVzLlxcblwiXG4gICAgICAgICAgICAgICAgICBwcm9nbmFtZSBhcmcgb3B0IGV4cGVjdGVkXG4gICAgICB8IE1lc3NhZ2UgcyAtPiAoKiB1c2VyIGVycm9yIG1lc3NhZ2UgKilcbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogJXMuXFxuXCIgcHJvZ25hbWUgc1xuICAgIGVuZDtcbiAgICB1c2FnZV9iIGIgIXNwZWNsaXN0IGVycm1zZztcbiAgICBpZiBlcnJvciA9IFVua25vd24gXCItaGVscFwiIHx8IGVycm9yID0gVW5rbm93biBcIi0taGVscFwiXG4gICAgdGhlbiBIZWxwIChCdWZmZXIuY29udGVudHMgYilcbiAgICBlbHNlIEJhZCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gIGluXG4gIGluY3IgY3VycmVudDtcbiAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSBkb1xuICAgIGJlZ2luIHRyeVxuICAgICAgbGV0IHMgPSAhYXJndi4oIWN1cnJlbnQpIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMSAmJiBzLlswXSA9ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCB0b19zdHJpbmdfZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgT3V0X29mX21lbW9yeSAtPiBcIk91dCBvZiBtZW1vcnlcIlxuICB8IFN0YWNrX292ZXJmbG93IC0+IFwiU3RhY2sgb3ZlcmZsb3dcIlxuICB8IE1hdGNoX2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzUpIFwiUGF0dGVybiBtYXRjaGluZyBmYWlsZWRcIlxuICB8IEFzc2VydF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIkFzc2VydGlvbiBmYWlsZWRcIlxuICB8IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIlVuZGVmaW5lZCByZWN1cnNpdmUgbW9kdWxlXCJcbiAgfCB4IC0+XG4gICAgICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgICAgIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIChPYmouZmllbGQgeCAwKSAwKSA6IHN0cmluZykgaW5cbiAgICAgICAgY29uc3RydWN0b3IgXiAoZmllbGRzIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG50eXBlIGJhY2t0cmFjZV9zbG90ID1cbiAgfCBLbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSAgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgICA6IHN0cmluZztcbiAgICAgIGxpbmVfbnVtYmVyIDogaW50O1xuICAgICAgc3RhcnRfY2hhciAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgICA6IGludDtcbiAgICAgIGlzX2lubGluZSAgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuKCogdG8gYXZvaWQgd2FybmluZyAqKVxubGV0IF8gPSBbS25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlOyBmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyID0gMDsgc3RhcnRfY2hhciA9IDA7IGVuZF9jaGFyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW5saW5lID0gZmFsc2U7IGRlZm5hbWUgPSBcIlwiIH07XG4gICAgICAgICBVbmtub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZSB9XVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbC5saW5lX251bWJlciBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbn1cblxubGV0IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICBTb21lIHtcbiAgICAgIGZpbGVuYW1lICAgID0gbC5maWxlbmFtZTtcbiAgICAgIGxpbmVfbnVtYmVyID0gbC5saW5lX251bWJlcjtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIEphY3F1ZXMtSGVucmkgSm91cmRhbiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFBhcmlzICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2LTIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgICopXG4oKiAgICAgZXQgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdCA9IHtcbiAgbWlub3Jfd29yZHMgOiBmbG9hdDtcbiAgcHJvbW90ZWRfd29yZHMgOiBmbG9hdDtcbiAgbWFqb3Jfd29yZHMgOiBmbG9hdDtcbiAgbWlub3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIG1ham9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBoZWFwX3dvcmRzIDogaW50O1xuICBoZWFwX2NodW5rcyA6IGludDtcbiAgbGl2ZV93b3JkcyA6IGludDtcbiAgbGl2ZV9ibG9ja3MgOiBpbnQ7XG4gIGZyZWVfd29yZHMgOiBpbnQ7XG4gIGZyZWVfYmxvY2tzIDogaW50O1xuICBsYXJnZXN0X2ZyZWUgOiBpbnQ7XG4gIGZyYWdtZW50cyA6IGludDtcbiAgY29tcGFjdGlvbnMgOiBpbnQ7XG4gIHRvcF9oZWFwX3dvcmRzIDogaW50O1xuICBzdGFja19zaXplIDogaW50O1xuICBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6IGludDtcbn1cblxudHlwZSBjb250cm9sID0ge1xuICBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludDtcbiAgbXV0YWJsZSB2ZXJib3NlIDogaW50O1xuICBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludDtcbiAgbXV0YWJsZSBzdGFja19saW1pdCA6IGludDtcbiAgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5leHRlcm5hbCBnZXRfYnVja2V0IDogaW50IC0+IGludCA9IFwiY2FtbF9nZXRfbWFqb3JfYnVja2V0XCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGdldF9jcmVkaXQgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0XCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGh1Z2VfZmFsbGJhY2tfY291bnQgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XCJcbmV4dGVybmFsIGV2ZW50bG9nX3BhdXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3BhdXNlXCJcbmV4dGVybmFsIGV2ZW50bG9nX3Jlc3VtZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19yZXN1bWVcIlxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgcmVmXG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiAhKGFyZWMuYWN0aXZlKSB0aGVuIGJlZ2luXG4gICAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICAgIGFyZWMuZiAoKTtcbiAgZW5kXG5cblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IHJlZiB0cnVlOyBmID0gZiB9IGluXG4gIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgYXJlYy5hY3RpdmVcblxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBhIDo9IGZhbHNlXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdW5pdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1lc3NhZ2UgZGlnZXN0IChNRDUpICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG5sZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbmV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG5sZXQgc3RyaW5nIHN0ciA9XG4gIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG5sZXQgYnl0ZXMgYiA9IHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG5sZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbmxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG5sZXQgZmlsZSBmaWxlbmFtZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGVuYW1lIGluXG4gIG1hdGNoIGNoYW5uZWwgaWMgKC0xKSB3aXRoXG4gICAgfCBkIC0+IGNsb3NlX2luIGljOyBkXG4gICAgfCBleGNlcHRpb24gZSAtPiBjbG9zZV9pbiBpYzsgcmFpc2UgZVxuXG5sZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID1cbiAgb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG5sZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG5sZXQgY2hhcl9oZXggbiA9XG4gIENoYXIudW5zYWZlX2NociAobiArIGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgZWxzZSAoQ2hhci5jb2RlICdhJyAtIDEwKSlcblxubGV0IHRvX2hleCBkID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMzIgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IGZyb21faGV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICBsZXQgZGlnaXQgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnMCcuLic5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdBJy4uJ0YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCAnYScuLidmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkRpZ2VzdC5mcm9tX2hleFwiKVxuICBpblxuICBsZXQgYnl0ZSBpID0gZGlnaXQgcy5baV0gbHNsIDQgKyBkaWdpdCBzLltpKzFdIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgQnl0ZXMuc2V0IHJlc3VsdCBpIChDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvclxuICAgVGhpcyBpcyBhIGxhZ2dlZC1GaWJvbmFjY2kgRig1NSwgMjQsICspIHdpdGggYSBtb2RpZmllZCBhZGRpdGlvblxuICAgZnVuY3Rpb24gdG8gZW5oYW5jZSB0aGUgbWl4aW5nIG9mIGJpdHMuXG4gICBJZiB3ZSB1c2Ugbm9ybWFsIGFkZGl0aW9uLCB0aGUgbG93LW9yZGVyIGJpdCBmYWlscyB0ZXN0cyAxIGFuZCA3XG4gICBvZiB0aGUgRGllaGFyZCB0ZXN0IHN1aXRlLCBhbmQgYml0cyAxIGFuZCAyIGFsc28gZmFpbCB0ZXN0IDcuXG4gICBJZiB3ZSB1c2UgbXVsdGlwbGljYXRpb24gYXMgc3VnZ2VzdGVkIGJ5IE1hcnNhZ2xpYSwgaXQgZG9lc24ndCBmYXJlXG4gICBtdWNoIGJldHRlci5cbiAgIEJ5IG1peGluZyB0aGUgYml0cyBvZiBvbmUgb2YgdGhlIG51bWJlcnMgYmVmb3JlIGFkZGl0aW9uIChYT1IgdGhlXG4gICA1IGhpZ2gtb3JkZXIgYml0cyBpbnRvIHRoZSBsb3ctb3JkZXIgYml0cyksIHdlIGdldCBhIGdlbmVyYXRvciB0aGF0XG4gICBwYXNzZXMgYWxsIHRoZSBEaWVoYXJkIHRlc3RzLlxuKilcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQ6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IHsgc3QgOiBpbnQgYXJyYXk7IG11dGFibGUgaWR4IDogaW50IH1cblxuICBsZXQgbmV3X3N0YXRlICgpID0geyBzdCA9IEFycmF5Lm1ha2UgNTUgMDsgaWR4ID0gMCB9XG4gIGxldCBhc3NpZ24gc3QxIHN0MiA9XG4gICAgQXJyYXkuYmxpdCBzdDIuc3QgMCBzdDEuc3QgMCA1NTtcbiAgICBzdDEuaWR4IDwtIHN0Mi5pZHhcblxuXG4gIGxldCBmdWxsX2luaXQgcyBzZWVkID1cbiAgICBsZXQgY29tYmluZSBhY2N1IHggPSBEaWdlc3Quc3RyaW5nIChhY2N1IF4gSW50LnRvX3N0cmluZyB4KSBpblxuICAgIGxldCBleHRyYWN0IGQgPVxuICAgICAgQ2hhci5jb2RlIGQuWzBdICsgKENoYXIuY29kZSBkLlsxXSBsc2wgOCkgKyAoQ2hhci5jb2RlIGQuWzJdIGxzbCAxNilcbiAgICAgICsgKENoYXIuY29kZSBkLlszXSBsc2wgMjQpXG4gICAgaW5cbiAgICBsZXQgc2VlZCA9IGlmIEFycmF5Lmxlbmd0aCBzZWVkID0gMCB0aGVuIFt8IDAgfF0gZWxzZSBzZWVkIGluXG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGZvciBpID0gMCB0byA1NCBkb1xuICAgICAgcy5zdC4oaSkgPC0gaTtcbiAgICBkb25lO1xuICAgIGxldCBhY2N1ID0gcmVmIFwieFwiIGluXG4gICAgZm9yIGkgPSAwIHRvIDU0ICsgSW50Lm1heCA1NSBsIGRvXG4gICAgICBsZXQgaiA9IGkgbW9kIDU1IGluXG4gICAgICBsZXQgayA9IGkgbW9kIGwgaW5cbiAgICAgIGFjY3UgOj0gY29tYmluZSAhYWNjdSBzZWVkLihrKTtcbiAgICAgIHMuc3QuKGopIDwtIChzLnN0LihqKSBseG9yIGV4dHJhY3QgIWFjY3UpIGxhbmQgMHgzRkZGRkZGRjsgICgqIFBSIzU1NzUgKilcbiAgICBkb25lO1xuICAgIHMuaWR4IDwtIDBcblxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCByZXN1bHQgPSBuZXdfc3RhdGUgKCkgaW5cbiAgICBmdWxsX2luaXQgcmVzdWx0IHNlZWQ7XG4gICAgcmVzdWx0XG5cblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPSBtYWtlIChyYW5kb21fc2VlZCAoKSlcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgYXNzaWduIHJlc3VsdCBzO1xuICAgIHJlc3VsdFxuXG5cbiAgKCogUmV0dXJucyAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDEwNzM3NDE4MjQgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgcy5pZHggPC0gKHMuaWR4ICsgMSkgbW9kIDU1O1xuICAgIGxldCBjdXJ2YWwgPSBzLnN0LihzLmlkeCkgaW5cbiAgICBsZXQgbmV3dmFsID0gcy5zdC4oKHMuaWR4ICsgMjQpIG1vZCA1NSlcbiAgICAgICAgICAgICAgICAgKyAoY3VydmFsIGx4b3IgKChjdXJ2YWwgbHNyIDI1KSBsYW5kIDB4MUYpKSBpblxuICAgIGxldCBuZXd2YWwzMCA9IG5ld3ZhbCBsYW5kIDB4M0ZGRkZGRkYgaW4gICgqIFBSIzU1NzUgKilcbiAgICBzLnN0LihzLmlkeCkgPC0gbmV3dmFsMzA7XG4gICAgbmV3dmFsMzBcblxuXG4gIGxldCByZWMgaW50YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBiaXRzIHMgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IDB4M0ZGRkZGRkYgLSBuICsgMSB0aGVuIGludGF1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgfHwgYm91bmQgPD0gMFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50XCJcbiAgICBlbHNlIGludGF1eCBzIGJvdW5kXG5cbiAgbGV0IHJlYyBpbnQ2M2F1eCBzIG4gPVxuICAgIGxldCBtYXhfaW50XzMyID0gKDEgbHNsIDMwKSArIDB4M0ZGRkZGRkYgaW4gKCogMHg3RkZGRkZGRiAqKVxuICAgIGxldCBiMSA9IGJpdHMgcyBpblxuICAgIGxldCBiMiA9IGJpdHMgcyBpblxuICAgIGxldCAociwgbWF4X2ludCkgPVxuICAgICAgaWYgbiA8PSBtYXhfaW50XzMyIHRoZW5cbiAgICAgICAgKCogMzEgcmFuZG9tIGJpdHMgb24gYm90aCA2NC1iaXQgT0NhbWwgYW5kIEphdmFTY3JpcHQuXG4gICAgICAgICAgIFVzZSB1cHBlciAxNSBiaXRzIG9mIGIxIGFuZCAxNiBiaXRzIG9mIGIyLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoYjIgbGFuZCAweDNGRkZDMDAwKSBsc2wgMSkgbG9yIChiMSBsc3IgMTUpKVxuICAgICAgICBpblxuICAgICAgICAgIChicG9zLCBtYXhfaW50XzMyKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYjMgPSBiaXRzIHMgaW5cbiAgICAgICAgKCogNjIgcmFuZG9tIGJpdHMgb24gNjQtYml0IE9DYW1sOyB1bnJlYWNoYWJsZSBvbiBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMjAgYml0cyBvZiBiMSBhbmQgMjEgYml0cyBvZiBiMiBhbmQgYjMuICopXG4gICAgICAgIGxldCBicG9zID1cbiAgICAgICAgICAoKCgoYjMgbGFuZCAweDNGRkZGRTAwKSBsc2wgMTIpIGxvciAoYjIgbHNyIDkpKSBsc2wgMjApXG4gICAgICAgICAgICBsb3IgKGIxIGxzciAxMClcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludClcbiAgICBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gbWF4X2ludCAtIG4gKyAxIHRoZW4gaW50NjNhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBmdWxsX2ludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmZ1bGxfaW50XCJcbiAgICBlbHNlIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB0aGVuXG4gICAgICBpbnQ2M2F1eCBzIGJvdW5kXG4gICAgZWxzZVxuICAgICAgaW50YXV4IHMgYm91bmRcblxuXG4gIGxldCByZWMgaW50MzJhdXggcyBuID1cbiAgICBsZXQgYjEgPSBJbnQzMi5vZl9pbnQgKGJpdHMgcykgaW5cbiAgICBsZXQgYjIgPSBJbnQzMi5zaGlmdF9sZWZ0IChJbnQzMi5vZl9pbnQgKGJpdHMgcyBsYW5kIDEpKSAzMCBpblxuICAgIGxldCByID0gSW50MzIubG9nb3IgYjEgYjIgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICBpZiBJbnQzMi5zdWIgciB2ID4gSW50MzIuYWRkIChJbnQzMi5zdWIgSW50MzIubWF4X2ludCBuKSAxbFxuICAgIHRoZW4gaW50MzJhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDMyIHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQzMlwiXG4gICAgZWxzZSBpbnQzMmF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDY0YXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50NjQub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50NjQuc2hpZnRfbGVmdCAoSW50NjQub2ZfaW50IChiaXRzIHMpKSAzMCBpblxuICAgIGxldCBiMyA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzIGxhbmQgNykpIDYwIGluXG4gICAgbGV0IHIgPSBJbnQ2NC5sb2dvciBiMSAoSW50NjQubG9nb3IgYjIgYjMpIGluXG4gICAgbGV0IHYgPSBJbnQ2NC5yZW0gciBuIGluXG4gICAgaWYgSW50NjQuc3ViIHIgdiA+IEludDY0LmFkZCAoSW50NjQuc3ViIEludDY0Lm1heF9pbnQgbikgMUxcbiAgICB0aGVuIGludDY0YXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQ2NCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwTFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRcIlxuICAgIGVsc2UgaW50NjRhdXggcyBib3VuZFxuXG5cbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG5cbiAgKCogUmV0dXJucyBhIGZsb2F0IDAgPD0geCA8PSAxIHdpdGggYXQgbW9zdCA2MCBiaXRzIG9mIHByZWNpc2lvbi4gKilcbiAgbGV0IHJhd2Zsb2F0IHMgPVxuICAgIGxldCBzY2FsZSA9IDEwNzM3NDE4MjQuMCAgKCogMl4zMCAqKVxuICAgIGFuZCByMSA9IFN0ZGxpYi5mbG9hdCAoYml0cyBzKVxuICAgIGFuZCByMiA9IFN0ZGxpYi5mbG9hdCAoYml0cyBzKVxuICAgIGluIChyMSAvLiBzY2FsZSArLiByMikgLy4gc2NhbGVcblxuXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gIGxldCBib29sIHMgPSAoYml0cyBzIGxhbmQgMSA9IDApXG5cbmVuZFxuXG4oKiBUaGlzIGlzIHRoZSBzdGF0ZSB5b3UgZ2V0IHdpdGggW2luaXQgMjcxODI4MThdIGFuZCB0aGVuIGFwcGx5aW5nXG4gICB0aGUgXCJsYW5kIDB4M0ZGRkZGRkZcIiBmaWx0ZXIgdG8gdGhlbS4gIFNlZSAjNTU3NSwgIzU3OTMsICM1OTc3LiAqKVxubGV0IGRlZmF1bHQgPSB7XG4gIFN0YXRlLnN0ID0gW3xcbiAgICAgIDB4M2FlMjUyMmI7IDB4MWQ4ZDQ2MzQ7IDB4MTViNGZhZDA7IDB4MThiMTRhY2U7IDB4MTJmOGEzYzQ7IDB4M2IwODZjNDc7XG4gICAgICAweDE2ZDQ2N2Q2OyAweDEwMWQ5MWM3OyAweDMyMWRmMTc3OyAweDAxNzZjMTkzOyAweDFmZjcyYmYxOyAweDFlODg5MTA5O1xuICAgICAgMHgwYjQ2NGIxODsgMHgyYjg2Yjk3YzsgMHgwODkxZGE0ODsgMHgwMzEzNzQ2MzsgMHgwODVhYzVhMTsgMHgxNWQ2MWYyZjtcbiAgICAgIDB4M2JjZWQzNTk7IDB4MjljMWMxMzI7IDB4M2E4Njc2NmU7IDB4MzY2ZDhjODY7IDB4MWY1YjYyMjI7IDB4M2NlMWI1OWY7XG4gICAgICAweDJlYmY3OGUxOyAweDI3Y2QxYjg2OyAweDI1OGYzZGMzOyAweDM4OWE4MTk0OyAweDAyZTRjNDRjOyAweDE4YzQzZjdkO1xuICAgICAgMHgwZjZlNTM0ZjsgMHgxZTdkZjM1OTsgMHgwNTVkMGI3ZTsgMHgxMGU4NGU3ZTsgMHgxMjYxOThlNDsgMHgwZTc3MjJjYjtcbiAgICAgIDB4MWNiZWRlMjg7IDB4MzM5MWI5NjQ7IDB4M2Q0MGU5MmE7IDB4MGM1OTkzM2Q7IDB4MGI4Y2QwYjc7IDB4MjRlZmZmMWM7XG4gICAgICAweDI4MDNmZGFhOyAweDA4ZWJjNzJlOyAweDBmNTIyZTMyOyAweDA1Mzk4ZWRjOyAweDIxNDRhMDRjOyAweDBhZWYzY2JkO1xuICAgICAgMHgwMWFkNDcxOTsgMHgzNWI5M2NkNjsgMHgyYTU1OWQ0ZjsgMHgxZTZmZDc2ODsgMHgyNmUyN2YzNjsgMHgxODZmMThjMztcbiAgICAgIDB4MmZiZjk2N2E7XG4gICAgfF07XG4gIFN0YXRlLmlkeCA9IDA7XG59XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyBkZWZhdWx0XG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IGRlZmF1bHQgYm91bmRcbmxldCBmdWxsX2ludCBib3VuZCA9IFN0YXRlLmZ1bGxfaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIGRlZmF1bHQgYm91bmRcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgZGVmYXVsdCBib3VuZFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgZGVmYXVsdCBib3VuZFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgZGVmYXVsdCBzY2FsZVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIGRlZmF1bHRcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IGRlZmF1bHQgc2VlZFxubGV0IGluaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIE1hbmlwdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gKilcblxubGV0IGdldF9zdGF0ZSAoKSA9IFN0YXRlLmNvcHkgZGVmYXVsdFxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIGRlZmF1bHQgc1xuXG4oKioqKioqKioqKioqKioqKioqKipcblxuKCogVGVzdCBmdW5jdGlvbnMuICBOb3QgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICBUaGUgW2NoaXNxdWFyZV0gZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIG4gPiAxMHIuXG4gICBJdCByZXR1cm5zIGEgdHJpcGxlIChsb3csIGFjdHVhbCwgaGlnaCkuXG4gICBJZiBsb3cgPD0gYWN0dWFsIDw9IGhpZ2gsIHRoZSBbZ10gZnVuY3Rpb24gcGFzc2VkIHRoZSB0ZXN0LFxuICAgb3RoZXJ3aXNlIGl0IGZhaWxlZC5cblxuICBTb21lIHJlc3VsdHM6XG5cbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgNTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAwIDEwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMjk5NzkyNjQzOyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDE0MTQyMTM2OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAyNDsgY2hpc3F1YXJlIGRpZmYgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZiAxMDA7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZjIgMTAyNDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMTQxNDIxMzY7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuaW5pdCAyOTk3OTI2NDM7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5MzYuNzU0NDQ2Nzk2NjMyNDY1LCA5OTcuNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg5Ljc0MDAwMDAwMDAwNTIzODcsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoNDg1OC41Nzg2NDM3NjI2OSwgNTA0NS41LCA1MTQxLjQyMTM1NjIzNzMxKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID1cbig5MzYuNzU0NDQ2Nzk2NjMyNDY1LCA5NDQuODA1OTk5OTk5OTgyMzA1LCAxMDYzLjI0NTU1MzIwMzM2NzU0KVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwMTkuMTk3NDQwMDAwMDAzNTUsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNTkuMzE3NzYwMDAwMDA1MzYsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwMzkuOTg0NjM5OTk5OTk1MTIsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNTQuMzgyMDc5OTk5OTk1NzcsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgOTAuMDk2MDAwMDAwMDA1LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNzYuNzg3MjAwMDAwMDA2MTIsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODUuMTc2MDAwMDAwMDA2NzUyMSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjIxNjAwMDAwMDAwMDM0OTIsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4MC42MjIwMDAwMDAwMDMwMjY4LCAxMjAuKVxuXG4qKVxuXG4oKiBSZXR1cm4gdGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB2W2kwLGkxWyAqKVxubGV0IHJlYyBzdW1zcSB2IGkwIGkxID1cbiAgaWYgaTAgPj0gaTEgdGhlbiAwLjBcbiAgZWxzZSBpZiBpMSA9IGkwICsgMSB0aGVuIFN0ZGxpYi5mbG9hdCB2LihpMCkgKi4gU3RkbGliLmZsb2F0IHYuKGkwKVxuICBlbHNlIHN1bXNxIHYgaTAgKChpMCtpMSkvMikgKy4gc3Vtc3EgdiAoKGkwK2kxKS8yKSBpMVxuXG5cbmxldCBjaGlzcXVhcmUgZyBuIHIgPVxuICBpZiBuIDw9IDEwICogciB0aGVuIGludmFsaWRfYXJnIFwiY2hpc3F1YXJlXCI7XG4gIGxldCBmID0gQXJyYXkubWFrZSByIDAgaW5cbiAgZm9yIGkgPSAxIHRvIG4gZG9cbiAgICBsZXQgdCA9IGcgciBpblxuICAgIGYuKHQpIDwtIGYuKHQpICsgMVxuICBkb25lO1xuICBsZXQgdCA9IHN1bXNxIGYgMCByXG4gIGFuZCByID0gU3RkbGliLmZsb2F0IHJcbiAgYW5kIG4gPSBTdGRsaWIuZmxvYXQgbiBpblxuICBsZXQgc3IgPSAyLjAgKi4gc3FydCByIGluXG4gIChyIC0uIHNyLCAgIChyICouIHQgLy4gbikgLS4gbiwgICByICsuIHNyKVxuXG5cbigqIFRoaXMgaXMgdG8gdGVzdCBmb3IgbGluZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgcmFuZG9tIG51bWJlcnMuXG4qKVxubGV0IHN0ID0gcmVmIDBcbmxldCBpbml0X2RpZmYgciA9IHN0IDo9IGludCByXG5sZXQgZGlmZiByID1cbiAgbGV0IHgxID0gIXN0XG4gIGFuZCB4MiA9IGludCByXG4gIGluXG4gIHN0IDo9IHgyO1xuICBpZiB4MSA+PSB4MiB0aGVuXG4gICAgeDEgLSB4MlxuICBlbHNlXG4gICAgciArIHgxIC0geDJcblxuXG5sZXQgc3QxID0gcmVmIDBcbmFuZCBzdDIgPSByZWYgMFxuXG5cbigqIFRoaXMgaXMgdG8gdGVzdCBmb3IgcXVhZHJhdGljIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgcmFuZG9tXG4gICBudW1iZXJzLlxuKilcbmxldCBpbml0X2RpZmYyIHIgPSBzdDEgOj0gaW50IHI7IHN0MiA6PSBpbnQgclxubGV0IGRpZmYyIHIgPVxuICBsZXQgeDEgPSAhc3QxXG4gIGFuZCB4MiA9ICFzdDJcbiAgYW5kIHgzID0gaW50IHJcbiAgaW5cbiAgc3QxIDo9IHgyO1xuICBzdDIgOj0geDM7XG4gICh4MyAtIHgyIC0geDIgKyB4MSArIDIqcikgbW9kIHJcblxuXG4qKioqKioqKioqKioqKioqKioqKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiBidWNrZXRzIGJlY29tZSB0b28gbG9uZy4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gcmVmIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gcmFuZG9taXplZCA6PSB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9ICFyYW5kb21pemVkXG5cbmxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILmhhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCBtZW0gaCBrZXkgPVxuICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZylcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cblxuICBsZXQgZmluZF9vciB0IGQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgbWVyZ2UgdCBkID1cbiAgICBmaW5kX29yIHQgZCAoZnVuIGggaW5kZXggLT4gYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIGluZGV4OyBkKVxuXG5cbiAgbGV0IGZpbmQgdCBkID0gZmluZF9vciB0IGQgKGZ1biBfaCBfaW5kZXggLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCBmaW5kX29wdCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBOb25lXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGZpbmRfc2hhZG93IHQgZCBpZmZvdW5kIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGlmZm91bmQgYnVja2V0IGlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCByZW1vdmUgdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gdyBpIC0+IHNldCB3IGkgTm9uZSkgKClcblxuXG4gIGxldCBtZW0gdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gX3cgX2kgLT4gdHJ1ZSkgZmFsc2VcblxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gbG9vcCAoaSArIDEpICh2IDo6IGFjY3UpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfb3Blbl90YWcgc3RhdGUgcyA9IHBwX29wZW5fc3RhZyBzdGF0ZSAoU3RyaW5nX3RhZyBzKVxubGV0IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSA9IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKClcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV90YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGIgPVxuICBjbGVhcl90YWdfc3RhY2sgc3RhdGU7XG4gIHdoaWxlIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIGRvXG4gICAgcHBfY2xvc2VfYm94IHN0YXRlICgpXG4gIGRvbmU7XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHBwX2luZmluaXR5O1xuICBhZHZhbmNlX2xlZnQgc3RhdGU7XG4gIGlmIGIgdGhlbiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgcHBfcmluaXQgc3RhdGVcblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGZvcm1hdCB2YWx1ZXMgYW5kIHVzZSBib3hlcy5cblxuKilcblxuKCogVG8gZm9ybWF0IGEgc3RyaW5nLiAqKVxubGV0IHBwX3ByaW50X2FzX3NpemUgc3RhdGUgc2l6ZSBzID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgc1xuXG5cbmxldCBwcF9wcmludF9hcyBzdGF0ZSBpc2l6ZSBzID1cbiAgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSAoU2l6ZS5vZl9pbnQgaXNpemUpIHNcblxuXG5sZXQgcHBfcHJpbnRfc3RyaW5nIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIHRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGJlZm9yZSArIHdpZHRoICsgU3RyaW5nLmxlbmd0aCBhZnRlciBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF9mbHVzaCA9IGc7XG4gICAgICBvdXRfbmV3bGluZSA9IGg7XG4gICAgICBvdXRfc3BhY2VzID0gaTtcbiAgICAgIG91dF9pbmRlbnQgPSBqO1xuICAgIH0gPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGk7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0galxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBvdXRfc3RyaW5nID0gc3RhdGUucHBfb3V0X3N0cmluZztcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9tYXJnaW4gPSA3OFxuICBhbmQgcHBfbWluX3NwYWNlX2xlZnQgPSAxMCBpblxuICB7XG4gICAgcHBfc2Nhbl9zdGFjayA9IHNjYW5fc3RhY2s7XG4gICAgcHBfZm9ybWF0X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3Rib3hfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGFnX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmtfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFyZ2luID0gcHBfbWFyZ2luO1xuICAgIHBwX21pbl9zcGFjZV9sZWZ0ID0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW47XG4gICAgcHBfY3VycmVudF9pbmRlbnQgPSAwO1xuICAgIHBwX2lzX25ld19saW5lID0gdHJ1ZTtcbiAgICBwcF9sZWZ0X3RvdGFsID0gMTtcbiAgICBwcF9yaWdodF90b3RhbCA9IDE7XG4gICAgcHBfY3Vycl9kZXB0aCA9IDE7XG4gICAgcHBfbWF4X2JveGVzID0gbWF4X2ludDtcbiAgICBwcF9lbGxpcHNpcyA9IFwiLlwiO1xuICAgIHBwX291dF9zdHJpbmcgPSBmO1xuICAgIHBwX291dF9mbHVzaCA9IGc7XG4gICAgcHBfb3V0X25ld2xpbmUgPSBoO1xuICAgIHBwX291dF9zcGFjZXMgPSBpO1xuICAgIHBwX291dF9pbmRlbnQgPSBqO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID0gZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggPSBwcF9vcGVuX2hib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdmJveCA9IHBwX29wZW5fdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9odmJveCA9IHBwX29wZW5faHZib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faG92Ym94ID0gcHBfb3Blbl9ob3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fYm94ID0gcHBfb3Blbl9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX2JveCA9IHBwX2Nsb3NlX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl90YWcgPSBwcF9vcGVuX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGFnID0gcHBfY2xvc2VfdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3N0YWcgPSBwcF9vcGVuX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3N0YWcgPSBwcF9jbG9zZV9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9hcyA9IHBwX3ByaW50X2FzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zdHJpbmcgPSBwcF9wcmludF9zdHJpbmcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2J5dGVzID0gcHBfcHJpbnRfYnl0ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ludCA9IHBwX3ByaW50X2ludCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmxvYXQgPSBwcF9wcmludF9mbG9hdCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY2hhciA9IHBwX3ByaW50X2NoYXIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Jvb2wgPSBwcF9wcmludF9ib29sIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9icmVhayA9IHBwX3ByaW50X2JyZWFrIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jdXQgPSBwcF9wcmludF9jdXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3NwYWNlID0gcHBfcHJpbnRfc3BhY2Ugc3RkX2Zvcm1hdHRlclxuYW5kIGZvcmNlX25ld2xpbmUgPSBwcF9mb3JjZV9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbHVzaCA9IHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9uZXdsaW5lID0gcHBfcHJpbnRfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaWZfbmV3bGluZSA9IHBwX3ByaW50X2lmX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuXG5hbmQgb3Blbl90Ym94ID0gcHBfb3Blbl90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90Ym94ID0gcHBfY2xvc2VfdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGJyZWFrID0gcHBfcHJpbnRfdGJyZWFrIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF90YWIgPSBwcF9zZXRfdGFiIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YWIgPSBwcF9wcmludF90YWIgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21hcmdpbiA9IHBwX3NldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfaW5kZW50ID0gcHBfc2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2dlb21ldHJ5ID0gcHBfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBzYWZlX3NldF9nZW9tZXRyeSA9IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHVwZGF0ZV9nZW9tZXRyeSA9IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2JveGVzID0gcHBfc2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9ib3hlcyA9IHBwX2dldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIG92ZXJfbWF4X2JveGVzID0gcHBfb3Zlcl9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9wcmludF90YWdzID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9wcmludF90YWdzID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9tYXJrX3RhZ3MgPVxuICBwcF9zZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFya190YWdzID1cbiAgcHBfZ2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3RhZ3MgPVxuICBwcF9zZXRfdGFncyBzdGRfZm9ybWF0dGVyXG5cblxuKCogQ29udmVuaWVuY2UgZnVuY3Rpb25zICopXG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCByZWMgcHBfcHJpbnRfbGlzdCA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgW3ZdIC0+IHBwX3YgcHBmIHZcbiAgfCB2IDo6IHZzIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcF92IHBwZiB2c1xuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHJlYyBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRfZm9ybWF0dGVyIGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBlcnJfZm9ybWF0dGVyIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyICgpO1xuICBwcF9wcmludF9mbHVzaCBlcnJfZm9ybWF0dGVyICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG4oKlxuXG4gIERlcHJlY2F0ZWQgc3R1ZmYuXG5cbiopXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlXG4gICAgfm91dDpmIH5mbHVzaDpnIH5uZXdsaW5lOmggfnNwYWNlczppID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaCxcbiAgIHN0YXRlLnBwX291dF9uZXdsaW5lLCBzdGF0ZS5wcF9vdXRfc3BhY2VzKVxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBzZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogZXJyb3IgcHJvbmUgZnVuY3Rpb24sIGRvIG5vdCB1c2UgaXQuXG4gICBUaGlzIGZ1bmN0aW9uIGlzIG5laXRoZXIgY29tcG9zaXRpb25hbCBub3IgaW5jcmVtZW50YWwsIHNpbmNlIGl0IGZsdXNoZXNcbiAgIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhdCBlYWNoIGNhbGwuXG4gICBUbyBnZXQgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgZGVmaW5lIGEgZm9ybWF0dGVyIG9mIHlvdXIgb3duIHdyaXRpbmcgdG9cbiAgIHRoZSBidWZmZXIgYXJndW1lbnQsIGFzIGluXG4gICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiXG4gICB0aGVuIHVzZSB7IWZwcmludGYgcHBmfSBhcyB1c3VhbC4gKilcbmxldCBicHJpbnRmIGIgKEZvcm1hdCAoZm10LCBfKSA6ICgnYSwgZm9ybWF0dGVyLCB1bml0KSBmb3JtYXQpID1cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPSBvdXRwdXRfYWNjIHBwZiBhY2M7IHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxuKCogRGVwcmVjYXRlZCA6IGFsaWFzIGZvciBrc3ByaW50Zi4gKilcbmxldCBrcHJpbnRmID0ga3NwcmludGZcblxuXG5cbigqIERlcHJlY2F0ZWQgdGFnIGZ1bmN0aW9ucyAqKVxuXG50eXBlIGZvcm1hdHRlcl90YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fdGFnIDogdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3RhZyA6IHRhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV90YWcgOiB0YWcgLT4gdW5pdDtcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV90YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV90YWcgPSBwY3Q7XG4gICB9ID1cbiAgbGV0IHN0cmluZ2lmeSBmIGUgPSBmdW5jdGlvbiBTdHJpbmdfdGFnIHMgLT4gZiBzIHwgXyAtPiBlIGluXG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gc3RyaW5naWZ5IG1vdCBcIlwiO1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgbWN0IFwiXCI7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHN0cmluZ2lmeSBwb3QgKCk7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgcGN0ICgpXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgZm10ICgpID1cbiAgbGV0IGZ1bnMgPSBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSBpblxuICBsZXQgbWFya19vcGVuX3RhZyBzID0gZnVucy5tYXJrX29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgbWFya19jbG9zZV90YWcgcyA9IGZ1bnMubWFya19jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9vcGVuX3RhZyBzID0gZnVucy5wcmludF9vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X2Nsb3NlX3RhZyBzID0gZnVucy5wcmludF9jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIHttYXJrX29wZW5fdGFnOyBtYXJrX2Nsb3NlX3RhZzsgcHJpbnRfb3Blbl90YWc7IHByaW50X2Nsb3NlX3RhZ31cblxubGV0IHNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgW3N0ZGliXSBpcyBlcXVpdmFsZW50IHRvIFtTY2FubmluZy5mcm9tX2NoYW5uZWwgU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgc3RkaWIgOiBpbl9jaGFubmVsXG4gICgqIEFuIGFsaWFzIGZvciBbU2NhbmYuc3RkaW5dLCB0aGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbVxuICAgICBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbiAgdmFsIG1lbW9fZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuICAoKiBPYnNvbGV0ZS4gKilcblxuZW5kXG5cblxubW9kdWxlIFNjYW5uaW5nIDogU0NBTk5JTkcgPSBzdHJ1Y3RcblxuICAoKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2NhbmYuICopXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB0eXBlIGluX2NoYW5uZWxfbmFtZSA9XG4gICAgfCBGcm9tX2NoYW5uZWwgb2YgU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZmlsZSBvZiBmaWxlX25hbWUgKiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9mdW5jdGlvblxuICAgIHwgRnJvbV9zdHJpbmdcblxuXG4gIHR5cGUgaW5fY2hhbm5lbCA9IHtcbiAgICBtdXRhYmxlIGljX2VvZiA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXIgOiBjaGFyO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2NoYXJfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY19saW5lX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfdG9rZW5fY291bnQgOiBpbnQ7XG4gICAgaWNfZ2V0X25leHRfY2hhciA6IHVuaXQgLT4gY2hhcjtcbiAgICBpY190b2tlbl9idWZmZXIgOiBCdWZmZXIudDtcbiAgICBpY19pbnB1dF9uYW1lIDogaW5fY2hhbm5lbF9uYW1lO1xuICB9XG5cblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgbGV0IG51bGxfY2hhciA9ICdcXDAwMCdcblxuICAoKiBSZWFkcyBhIG5ldyBjaGFyYWN0ZXIgZnJvbSBpbnB1dCBidWZmZXIuXG4gICAgIE5leHRfY2hhciBuZXZlciBmYWlscywgZXZlbiBpbiBjYXNlIG9mIGVuZCBvZiBpbnB1dDpcbiAgICAgaXQgdGhlbiBzaW1wbHkgc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uLiAqKVxuICBsZXQgbmV4dF9jaGFyIGliID1cbiAgICB0cnlcbiAgICAgIGxldCBjID0gaWIuaWNfZ2V0X25leHRfY2hhciAoKSBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gdHJ1ZTtcbiAgICAgIGliLmljX2NoYXJfY291bnQgPC0gc3VjYyBpYi5pY19jaGFyX2NvdW50O1xuICAgICAgaWYgYyA9ICdcXG4nIHRoZW4gaWIuaWNfbGluZV9jb3VudCA8LSBzdWNjIGliLmljX2xpbmVfY291bnQ7XG4gICAgICBjIHdpdGhcbiAgICB8IEVuZF9vZl9maWxlIC0+XG4gICAgICBsZXQgYyA9IG51bGxfY2hhciBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2U7XG4gICAgICBpYi5pY19lb2YgPC0gdHJ1ZTtcbiAgICAgIGNcblxuXG4gIGxldCBwZWVrX2NoYXIgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY3VycmVudF9jaGFyXG4gICAgZWxzZSBuZXh0X2NoYXIgaWJcblxuXG4gICgqIFJldHVybnMgYSB2YWxpZCBjdXJyZW50IGNoYXIgZm9yIHRoZSBpbnB1dCBidWZmZXIuIEluIHBhcnRpY3VsYXJcbiAgICAgbm8gaXJyZWxldmFudCBudWxsIGNoYXJhY3RlciAoYXMgc2V0IGJ5IFtuZXh0X2NoYXJdIGluIGNhc2Ugb2YgZW5kXG4gICAgIG9mIGlucHV0KSBpcyByZXR1cm5lZCwgc2luY2UgW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlblxuICAgICBbbmV4dF9jaGFyXSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24gd2hpbGUgdHJ5aW5nIHRvIHJlYWQgYVxuICAgICBuZXcgY2hhcmFjdGVyLiAqKVxuICBsZXQgY2hlY2tlZF9wZWVrX2NoYXIgaWIgPVxuICAgIGxldCBjID0gcGVla19jaGFyIGliIGluXG4gICAgaWYgaWIuaWNfZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICAgY1xuXG5cbiAgbGV0IGVuZF9vZl9pbnB1dCBpYiA9XG4gICAgaWdub3JlIChwZWVrX2NoYXIgaWIpO1xuICAgIGliLmljX2VvZlxuXG5cbiAgbGV0IGVvZiBpYiA9IGliLmljX2VvZlxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfaW5wdXQgaWIgPSBpYi5pY19jaGFyX2NvdW50ID0gMFxuXG4gIGxldCBuYW1lX29mX2lucHV0IGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBfaWMgLT4gXCJ1bm5hbWVkIFN0ZGxpYiBpbnB1dCBjaGFubmVsXCJcbiAgICB8IEZyb21fZmlsZSAoZm5hbWUsIF9pYykgLT4gZm5hbWVcbiAgICB8IEZyb21fZnVuY3Rpb24gLT4gXCJ1bm5hbWVkIGZ1bmN0aW9uXCJcbiAgICB8IEZyb21fc3RyaW5nIC0+IFwidW5uYW1lZCBjaGFyYWN0ZXIgc3RyaW5nXCJcblxuXG4gIGxldCBjaGFyX2NvdW50IGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2NoYXJfY291bnQgLSAxXG4gICAgZWxzZSBpYi5pY19jaGFyX2NvdW50XG5cblxuICBsZXQgbGluZV9jb3VudCBpYiA9IGliLmljX2xpbmVfY291bnRcblxuICBsZXQgcmVzZXRfdG9rZW4gaWIgPSBCdWZmZXIucmVzZXQgaWIuaWNfdG9rZW5fYnVmZmVyXG5cbiAgbGV0IGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliID0gaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgbGV0IHRva2VuIGliID1cbiAgICBsZXQgdG9rZW5fYnVmZmVyID0gaWIuaWNfdG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHRvayA9IEJ1ZmZlci5jb250ZW50cyB0b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuY2xlYXIgdG9rZW5fYnVmZmVyO1xuICAgIGliLmljX3Rva2VuX2NvdW50IDwtIHN1Y2MgaWIuaWNfdG9rZW5fY291bnQ7XG4gICAgdG9rXG5cblxuICBsZXQgdG9rZW5fY291bnQgaWIgPSBpYi5pY190b2tlbl9jb3VudFxuXG4gIGxldCBza2lwX2NoYXIgd2lkdGggaWIgPVxuICAgIGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliO1xuICAgIHdpZHRoXG5cblxuICBsZXQgaWdub3JlX2NoYXIgd2lkdGggaWIgPSBza2lwX2NoYXIgKHdpZHRoIC0gMSkgaWJcblxuICBsZXQgc3RvcmVfY2hhciB3aWR0aCBpYiBjID1cbiAgICBCdWZmZXIuYWRkX2NoYXIgaWIuaWNfdG9rZW5fYnVmZmVyIGM7XG4gICAgaWdub3JlX2NoYXIgd2lkdGggaWJcblxuXG4gIGxldCBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplID0gMTAyNFxuXG4gIGxldCBjcmVhdGUgaW5hbWUgbmV4dCA9IHtcbiAgICBpY19lb2YgPSBmYWxzZTtcbiAgICBpY19jdXJyZW50X2NoYXIgPSBudWxsX2NoYXI7XG4gICAgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkID0gZmFsc2U7XG4gICAgaWNfY2hhcl9jb3VudCA9IDA7XG4gICAgaWNfbGluZV9jb3VudCA9IDA7XG4gICAgaWNfdG9rZW5fY291bnQgPSAwO1xuICAgIGljX2dldF9uZXh0X2NoYXIgPSBuZXh0O1xuICAgIGljX3Rva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZTtcbiAgICBpY19pbnB1dF9uYW1lID0gaW5hbWU7XG4gIH1cblxuXG4gIGxldCBmcm9tX3N0cmluZyBzID1cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpID49IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2VcbiAgICAgIGxldCBjID0gcy5bIWldIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjIGluXG4gICAgY3JlYXRlIEZyb21fc3RyaW5nIG5leHRcblxuXG4gIGxldCBmcm9tX2Z1bmN0aW9uID0gY3JlYXRlIEZyb21fZnVuY3Rpb25cblxuICAoKiBTY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwuICopXG5cbiAgKCogUG9zaXRpb24gb2YgdGhlIHByb2JsZW06XG5cbiAgICAgV2UgY2Fubm90IHByZXZlbnQgdGhlIHNjYW5uaW5nIG1lY2hhbmlzbSB0byB1c2Ugb25lIGxvb2thaGVhZCBjaGFyYWN0ZXIsXG4gICAgIGlmIG5lZWRlZCBieSB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmljYXRpb25zIChlLmcuIGFcbiAgICAgdHJhaWxpbmcgJ3NraXAgc3BhY2UnIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm1hdCBzdHJpbmcpOyBpbiB0aGlzIGNhc2UsXG4gICAgIHRoZSBtYW5kYXRvcnkgbG9va2FoZWFkIGNoYXJhY3RlciBpcyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBpbnB1dCBhbmQgbm90XG4gICAgIHVzZWQgdG8gcmV0dXJuIHRoZSB0b2tlbiByZWFkLiBJdCBpcyB0aHVzIG1hbmRhdG9yeSB0byBiZSBhYmxlIHRvIHN0b3JlXG4gICAgIGFuIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIHNvbWV3aGVyZSB0byBnZXQgaXQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlclxuICAgICBvZiB0aGUgbmV4dCBzY2FuLlxuXG4gICAgIFRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCBhbGwgdGhlIHNjYW5uaW5nIGZ1bmN0aW9ucyBnZXQgYSBsb3cgbGV2ZWxcbiAgICAgaW5wdXQgYnVmZmVyIGFyZ3VtZW50IHdoZXJlIHRoZXkgc3RvcmUgdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXIgd2hlblxuICAgICBuZWVkZWQ7IGFkZGl0aW9uYWxseSwgdGhlIGlucHV0IGJ1ZmZlciBpcyB0aGUgb25seSBzb3VyY2Ugb2YgY2hhcmFjdGVyIG9mXG4gICAgIGEgc2Nhbm5lci4gVGhlIFtzY2FuYnVmXSBpbnB1dCBidWZmZXJzIGFyZSBkZWZpbmVkIGluIG1vZHVsZSB7IVNjYW5uaW5nfS5cblxuICAgICBOb3cgd2UgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCByZWxhdGVkIGFuZFxuICAgICBzdWNjZXNzaXZlIGNhbGxzIHRvIHNjYW5uZXJzIGluZGVlZCByZWFkIGZyb20gdGhlIHNhbWUgaW5wdXQgYnVmZmVyLlxuICAgICBJbiBlZmZlY3QsIGlmIGEgc2Nhbm5lciBbc2NhbjFdIGlzIHJlYWRpbmcgZnJvbSBbaWIxXSBhbmQgc3RvcmVzIGFuXG4gICAgIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIFtjMV0gaW50byBpdHMgaW5wdXQgYnVmZmVyIFtpYjFdLCB0aGVuXG4gICAgIGFub3RoZXIgc2Nhbm5lciBbc2NhbjJdIG5vdCByZWFkaW5nIGZyb20gdGhlIHNhbWUgYnVmZmVyIFtpYjFdIHdpbGwgbWlzc1xuICAgICB0aGUgY2hhcmFjdGVyIFtjMV0sIHNlZW1pbmdseSB2YW5pc2hlZCBpbiB0aGUgYWlyIGZyb20gdGhlIHBvaW50IG9mIHZpZXdcbiAgICAgb2YgW3NjYW4yXS5cblxuICAgICBUaGlzIG1lY2hhbmlzbSB3b3JrcyBwZXJmZWN0bHkgdG8gcmVhZCBmcm9tIHN0cmluZ3MsIGZyb20gZmlsZXMsIGFuZCBmcm9tXG4gICAgIGZ1bmN0aW9ucywgc2luY2UgaW4gdGhvc2UgY2FzZXMsIGFsbG9jYXRpbmcgdHdvIGJ1ZmZlcnMgcmVhZGluZyBmcm9tIHRoZVxuICAgICBzYW1lIHNvdXJjZSBpcyB1bm5hdHVyYWwuXG5cbiAgICAgU3RpbGwsIHRoZXJlIGlzIGEgZGlmZmljdWx0eSBpbiB0aGUgY2FzZSBvZiBzY2FubmluZyBmcm9tIGFuIGlucHV0XG4gICAgIGNoYW5uZWwuIEluIGVmZmVjdCwgd2hlbiBzY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwgW2ljXSwgdGhpcyBjaGFubmVsXG4gICAgIG1heSBub3QgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHdpdGhpbiB0aGlzIGxpYnJhcnkuIEhlbmNlLCBpdCBtYXkgYmVcbiAgICAgc2hhcmVkICh0d28gZnVuY3Rpb25zIG9mIHRoZSB1c2VyJ3MgcHJvZ3JhbSBtYXkgc3VjY2Vzc2l2ZWx5IHJlYWQgZnJvbVxuICAgICBbaWNdKS4gVGhpcyBpcyBoaWdobHkgZXJyb3IgcHJvbmUgc2luY2UsIG9uZSBvZiB0aGUgZnVuY3Rpb24gbWF5IHNlZWsgdGhlXG4gICAgIGlucHV0IGNoYW5uZWwsIHdoaWxlIHRoZSBvdGhlciBmdW5jdGlvbiBoYXMgc3RpbGwgYW4gdW51c2VkIGxvb2thaGVhZFxuICAgICBjaGFyYWN0ZXIgaW4gaXRzIGlucHV0IGJ1ZmZlci4gSW4gY29uY2x1c2lvbiwgeW91IHNob3VsZCBuZXZlciBtaXggZGlyZWN0XG4gICAgIGxvdyBsZXZlbCByZWFkaW5nIGFuZCBoaWdoIGxldmVsIHNjYW5uaW5nIGZyb20gdGhlIHNhbWUgaW5wdXQgY2hhbm5lbC5cblxuICAqKVxuXG4gICgqIFBlcmZvcm0gYnVmZmVyaXplZCBpbnB1dCB0byBpbXByb3ZlIGVmZmljaWVuY3kuICopXG4gIGxldCBmaWxlX2J1ZmZlcl9zaXplID0gcmVmIDEwMjRcblxuICAoKiBUaGUgc2Nhbm5lciBjbG9zZXMgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0LiAqKVxuICBsZXQgc2Nhbl9jbG9zZV9hdF9lbmQgaWMgPSBTdGRsaWIuY2xvc2VfaW4gaWM7IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgKCogVGhlIHNjYW5uZXIgZG9lcyBub3QgY2xvc2UgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0OlxuICAgICBpdCBqdXN0IHJhaXNlcyBbRW5kX29mX2ZpbGVdLiAqKVxuICBsZXQgc2Nhbl9yYWlzZV9hdF9lbmQgX2ljID0gcmFpc2UgRW5kX29mX2ZpbGVcblxuICBsZXQgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIGluYW1lIGljID1cbiAgICBsZXQgbGVuID0gIWZpbGVfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGltID0gcmVmIDAgaW5cbiAgICBsZXQgZW9mID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPCAhbGltIHRoZW4gYmVnaW4gbGV0IGMgPSBCeXRlcy5nZXQgYnVmICFpIGluIGluY3IgaTsgYyBlbmQgZWxzZVxuICAgICAgaWYgIWVvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2UgYmVnaW5cbiAgICAgICAgbGltIDo9IGlucHV0IGljIGJ1ZiAwIGxlbjtcbiAgICAgICAgaWYgIWxpbSA9IDAgdGhlbiBiZWdpbiBlb2YgOj0gdHJ1ZTsgc2Nhbl9jbG9zZV9pYyBpYyBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIGkgOj0gMTtcbiAgICAgICAgICBCeXRlcy5nZXQgYnVmIDBcbiAgICAgICAgZW5kXG4gICAgICBlbmQgaW5cbiAgICBjcmVhdGUgaW5hbWUgbmV4dFxuXG5cbiAgbGV0IGZyb21faWNfY2xvc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX2Nsb3NlX2F0X2VuZFxuICBsZXQgZnJvbV9pY19yYWlzZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIE9uZSBjb3VsZCB0cnkgdG8gZGVmaW5lIFtzdGRpYl0gYXMgYSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBhIGNoYXJhY3RlclxuICAgICBhdCBhIHRpbWUgKG5vIGJ1ZmZlcml6YXRpb24gYXQgYWxsKSwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlIHRvcC1sZXZlbFxuICAgICBpbnRlcmFjdGlvbiB3b3VsZCBiZSB3cm9uZy4gVGhpcyBpcyBkdWUgdG8gc29tZSBraW5kIG9mXG4gICAgICdyYWNlIGNvbmRpdGlvbicgd2hlbiByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0sXG4gICAgIHNpbmNlIHRoZSBpbnRlcmFjdGl2ZSBjb21waWxlciBhbmQgW1NjYW5mLnNjYW5mXSB3aWxsIHNpbXVsdGFuZW91c2x5XG4gICAgIHJlYWQgdGhlIG1hdGVyaWFsIHRoZXkgbmVlZCBmcm9tIFtTdGRsaWIuc3RkaW5dOyB0aGVuLCBjb25mdXNpb25cbiAgICAgd2lsbCByZXN1bHQgZnJvbSB3aGF0IHNob3VsZCBiZSByZWFkIGJ5IHRoZSB0b3AtbGV2ZWwgYW5kIHdoYXQgc2hvdWxkIGJlXG4gICAgIHJlYWQgYnkgW1NjYW5mLnNjYW5mXS5cbiAgICAgVGhpcyBpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgYnkgdGhlIG9uZSBjaGFyYWN0ZXIgbG9va2FoZWFkIHRoYXRcbiAgICAgW1NjYW5mLnNjYW5mXSBpcyBzb21ldGltZXMgb2JsaWdlZCB0byBtYWludGFpbjogdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXJcbiAgICAgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBuZXh0IFtTY2FuZi5zY2FuZl0gZW50cnksIHNlZW1pbmdseSBjb21pbmcgZnJvbVxuICAgICBub3doZXJlLlxuICAgICBBbHNvIG5vIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW4gcmVhZGluZyBmcm9tIHN0ZGluOiBpZiBub3QgZW5vdWdoXG4gICAgIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHJlYWQsIHdlIHNpbXBseSBhc2sgdG8gcmVhZCBtb3JlLiAqKVxuICBsZXQgc3RkaW4gPVxuICAgIGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcbiAgICAgIChGcm9tX2ZpbGUgKFwiLVwiLCBTdGRsaWIuc3RkaW4pKSBTdGRsaWIuc3RkaW5cblxuXG4gIGxldCBzdGRpYiA9IHN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuXG4gICgqXG4gICAgIE9ic29sZXRlOiBhIG1lbW8gW2Zyb21fY2hhbm5lbF0gdmVyc2lvbiB0byBidWlsZCBhIFtTY2FubmluZy5pbl9jaGFubmVsXVxuICAgICBzY2FubmluZyBidWZmZXIgb3V0IG9mIGEgW1N0ZGxpYi5pbl9jaGFubmVsXS5cbiAgICAgVGhpcyBmdW5jdGlvbiB3YXMgdXNlZCB0byB0cnkgdG8gcHJlc2VydmUgdGhlIHNjYW5uaW5nXG4gICAgIHNlbWFudGljcyBmb3IgdGhlIChub3cgb2Jzb2xldGUpIGZ1bmN0aW9uIFtmc2NhbmZdLlxuICAgICBHaXZlbiB0aGF0IGFsbCBzY2FubmVyIG11c3QgcmVhZCBmcm9tIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIHNjYW5uaW5nXG4gICAgIGJ1ZmZlciwgW2ZzY2FuZl0gbXVzdCByZWFkIGZyb20gb25lIVxuICAgICBNb3JlIHByZWNpc2VseSwgZ2l2ZW4gW2ljXSwgYWxsIHN1Y2Nlc3NpdmUgY2FsbHMgW2ZzY2FuZiBpY10gbXVzdCByZWFkXG4gICAgIGZyb20gdGhlIHNhbWUgc2Nhbm5pbmcgYnVmZmVyLlxuICAgICBUaGlzIG9ibGlnZWQgdGhpcyBsaWJyYXJ5IHRvIGFsbG9jYXRlZCBzY2FubmluZyBidWZmZXJzIHRoYXQgd2VyZVxuICAgICBub3QgcHJvcGVybHkgZ2FyYmFnZSBjb2xsZWN0YWJsZSwgaGVuY2UgbGVhZGluZyB0byBtZW1vcnkgbGVha3MuXG4gICAgIElmIHlvdSBuZWVkIHRvIHJlYWQgZnJvbSBhIFtTdGRsaWIuaW5fY2hhbm5lbF0gaW5wdXQgY2hhbm5lbFxuICAgICBbaWNdLCBzaW1wbHkgZGVmaW5lIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIGZvcm1hdHRlZCBpbnB1dCBjaGFubmVsIGFzIGluXG4gICAgIFtsZXQgaWIgPSBTY2FubmluZy5mcm9tX2NoYW5uZWwgaWNdLCB0aGVuIHVzZSBbU2NhbmYuYnNjYW5mIGliXSBhcyB1c3VhbC5cbiAgKilcbiAgbGV0IG1lbW9fZnJvbV9pYyA9XG4gICAgbGV0IG1lbW8gPSByZWYgW10gaW5cbiAgICAoZnVuIHNjYW5fY2xvc2VfaWMgaWMgLT5cbiAgICAgdHJ5IExpc3QuYXNzcSBpYyAhbWVtbyB3aXRoXG4gICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgbGV0IGliID1cbiAgICAgICAgIGZyb21faWMgc2Nhbl9jbG9zZV9pYyAoRnJvbV9jaGFubmVsIGljKSBpYyBpblxuICAgICAgIG1lbW8gOj0gKGljLCBpYikgOjogIW1lbW87XG4gICAgICAgaWIpXG5cblxuICAoKiBPYnNvbGV0ZTogc2VlIHshbWVtb19mcm9tX2ljfSBhYm92ZS4gKilcbiAgbGV0IG1lbW9fZnJvbV9jaGFubmVsID0gbWVtb19mcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxudHlwZSAnYSBrc2NhbmZfcmVzdWx0ID0gQXJncyBvZiAnYSB8IEV4YyBvZiBleG5cblxubGV0IGtzY2FuZiBpYiBlZiAoRm9ybWF0IChmbXQsIHN0cikpID1cbiAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiIC4gYSAtPiAoYSwgYikgaGV0ZXJfbGlzdCAtPiBiID1cbiAgICBmdW4gZiBhcmdzIC0+IG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgQ29ucyAoeCwgcikgLT4gYXBwbHkgKGYgeCkgclxuICAgIHwgTmlsIC0+IGZcbiAgaW5cbiAgbGV0IGsgcmVhZGVycyBmID1cbiAgICBTY2FubmluZy5yZXNldF90b2tlbiBpYjtcbiAgICBtYXRjaCB0cnkgQXJncyAobWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycykgd2l0aFxuICAgICAgfCAoU2Nhbl9mYWlsdXJlIF8gfCBGYWlsdXJlIF8gfCBFbmRfb2ZfZmlsZSkgYXMgZXhjIC0+IEV4YyBleGNcbiAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB3aXRoXG4gICAgICB8IEFyZ3MgYXJncyAtPiBhcHBseSBmIGFyZ3NcbiAgICAgIHwgRXhjIGV4YyAtPiBlZiBpYiBleGNcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBzY2FuZiBmbXQgPSBrc2NhbmYgU2Nhbm5pbmcuc3RkaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG4oKioqKVxuXG4oKiBTY2FubmluZyBmb3JtYXQgc3RyaW5ncy4gKilcbmxldCBic2NhbmZfZm9ybWF0IDpcbiAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIGliIGZvcm1hdCBmIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nIG1heF9pbnQgaWIgaW5cbiAgICBsZXQgc3RyID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCcgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciBmb3JtYXRcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZyBpblxuICAgIGYgZm10J1xuXG5cbmxldCBzc2NhbmZfZm9ybWF0IDpcbiAgc3RyaW5nIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gcyBmb3JtYXQgZiAtPiBic2NhbmZfZm9ybWF0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmb3JtYXQgZlxuXG5cbmxldCBmb3JtYXRfZnJvbV9zdHJpbmcgcyBmbXQgPVxuICBzc2NhbmZfZm9ybWF0IChcIlxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHMgXiBcIlxcXCJcIikgZm10IChmdW4geCAtPiB4KVxuXG5cbmxldCB1bmVzY2FwZWQgcyA9XG4gIHNzY2FuZiAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCIpIFwiJVMlIVwiIChmdW4geCAtPiB4KVxuXG5cbigqIERlcHJlY2F0ZWQgKilcbmxldCBrZnNjYW5mIGljIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBlZiBmbXRcbmxldCBmc2NhbmYgaWMgZm10ID0ga3NjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgc2NhbmZfYmFkX2lucHV0IGZtdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBSZWdpc3RlcmluZyBPQ2FtbCB2YWx1ZXMgd2l0aCB0aGUgQyBydW50aW1lIGZvciBsYXRlciBjYWxsYmFja3MgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gT2JqLnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSB2ID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSAoT2JqLnJlcHIgdilcblxubGV0IHJlZ2lzdGVyX2V4Y2VwdGlvbiBuYW1lIChleG4gOiBleG4pID1cbiAgbGV0IGV4biA9IE9iai5yZXByIGV4biBpblxuICBsZXQgc2xvdCA9IGlmIE9iai50YWcgZXhuID0gT2JqLm9iamVjdF90YWcgdGhlbiBleG4gZWxzZSBPYmouZmllbGQgZXhuIDAgaW5cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSBzbG90XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBKZXJvbWUgVm91aWxsb24sIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gT2JqXG5cbigqKioqIE9iamVjdCByZXByZXNlbnRhdGlvbiAqKioqKVxuXG5leHRlcm5hbCBzZXRfaWQ6ICdhIC0+ICdhID0gXCJjYW1sX3NldF9vb19pZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIE9iamVjdCBjb3B5ICoqKiopXG5cbmxldCBjb3B5IG8gPVxuICBsZXQgbyA9IChPYmoub2JqIChPYmouZHVwIChPYmoucmVwciBvKSkpIGluXG4gIHNldF9pZCBvXG5cbigqKioqIENvbXByZXNzaW9uIG9wdGlvbnMgKioqKilcbigqIFBhcmFtZXRlcnMgKilcbnR5cGUgcGFyYW1zID0ge1xuICAgIG11dGFibGUgY29tcGFjdF90YWJsZSA6IGJvb2w7XG4gICAgbXV0YWJsZSBjb3B5X3BhcmVudCA6IGJvb2w7XG4gICAgbXV0YWJsZSBjbGVhbl93aGVuX2NvcHlpbmcgOiBib29sO1xuICAgIG11dGFibGUgcmV0cnlfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBidWNrZXRfc21hbGxfc2l6ZSA6IGludFxuICB9XG5cbmxldCBwYXJhbXMgPSB7XG4gIGNvbXBhY3RfdGFibGUgPSB0cnVlO1xuICBjb3B5X3BhcmVudCA9IHRydWU7XG4gIGNsZWFuX3doZW5fY29weWluZyA9IHRydWU7XG4gIHJldHJ5X2NvdW50ID0gMztcbiAgYnVja2V0X3NtYWxsX3NpemUgPSAxNlxufVxuXG4oKioqKiBQYXJhbWV0ZXJzICoqKiopXG5cbmxldCBpbml0aWFsX29iamVjdF9zaXplID0gMlxuXG4oKioqKiBJdGVtcyAqKioqKVxuXG50eXBlIGl0ZW0gPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbmxldCBkdW1teV9pdGVtID0gKG1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgbWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IG9iaiAoT2JqLm5ld19ibG9jayAwIDApXG4oKiBpZiBkZWJ1Z2dpbmcgaXMgbmVlZGVkLCB0aGlzIGNvdWxkIGJlIGEgZ29vZCBpZGVhOiAqKVxuKCogbGV0IGR1bW15X21ldCAoKSA9IGZhaWx3aXRoIFwiVW5kZWZpbmVkIG1ldGhvZFwiICopXG5cbmxldCByZWMgZml0X3NpemUgbiA9XG4gIGlmIG4gPD0gMiB0aGVuIG4gZWxzZVxuICBmaXRfc2l6ZSAoKG4rMSkvMikgKiAyXG5cbmxldCBuZXdfdGFibGUgcHViX2xhYmVscyA9XG4gIGluY3IgdGFibGVfY291bnQ7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggcHViX2xhYmVscyBpblxuICBsZXQgbWV0aG9kcyA9IEFycmF5Lm1ha2UgKGxlbioyKzIpIGR1bW15X21ldCBpblxuICBtZXRob2RzLigwKSA8LSBtYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIG1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gbWFnaWMgcHViX2xhYmVscy4oaSkgZG9uZTtcbiAgeyBtZXRob2RzID0gbWV0aG9kcztcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gaW5pdGlhbF9vYmplY3Rfc2l6ZSB9XG5cbmxldCByZXNpemUgYXJyYXkgbmV3X3NpemUgPVxuICBsZXQgb2xkX3NpemUgPSBBcnJheS5sZW5ndGggYXJyYXkubWV0aG9kcyBpblxuICBpZiBuZXdfc2l6ZSA+IG9sZF9zaXplIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2J1Y2sgPSBBcnJheS5tYWtlIG5ld19zaXplIGR1bW15X21ldCBpblxuICAgIEFycmF5LmJsaXQgYXJyYXkubWV0aG9kcyAwIG5ld19idWNrIDAgb2xkX3NpemU7XG4gICAgYXJyYXkubWV0aG9kcyA8LSBuZXdfYnVja1xuIGVuZFxuXG5sZXQgcHV0IGFycmF5IGxhYmVsIGVsZW1lbnQgPVxuICByZXNpemUgYXJyYXkgKGxhYmVsICsgMSk7XG4gIGFycmF5Lm1ldGhvZHMuKGxhYmVsKSA8LSBlbGVtZW50XG5cbigqKioqIENsYXNzZXMgKioqKilcblxubGV0IG1ldGhvZF9jb3VudCA9IHJlZiAwXG5sZXQgaW5zdF92YXJfY291bnQgPSByZWYgMFxuXG4oKiB0eXBlIHQgKilcbnR5cGUgbWV0aCA9IGl0ZW1cblxubGV0IG5ld19tZXRob2QgdGFibGUgPVxuICBsZXQgaW5kZXggPSBBcnJheS5sZW5ndGggdGFibGUubWV0aG9kcyBpblxuICByZXNpemUgdGFibGUgKGluZGV4ICsgMSk7XG4gIGluZGV4XG5cbmxldCBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG5hbWUgPVxuICB0cnlcbiAgICBNZXRocy5maW5kIG5hbWUgdGFibGUubWV0aG9kc19ieV9uYW1lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGxhYmVsID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBNZXRocy5hZGQgbmFtZSBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWJlbCB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWw7XG4gICAgbGFiZWxcblxubGV0IGdldF9tZXRob2RfbGFiZWxzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBuYW1lc1xuXG5sZXQgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBlbGVtZW50ID1cbiAgaW5jciBtZXRob2RfY291bnQ7XG4gIGlmIExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHRoZW5cbiAgICBwdXQgdGFibGUgbGFiZWwgZWxlbWVudFxuICBlbHNlXG4gICAgdGFibGUuaGlkZGVuX21ldGhzIDwtIChsYWJlbCwgZWxlbWVudCkgOjogdGFibGUuaGlkZGVuX21ldGhzXG5cbmxldCBnZXRfbWV0aG9kIHRhYmxlIGxhYmVsID1cbiAgdHJ5IExpc3QuYXNzb2MgbGFiZWwgdGFibGUuaGlkZGVuX21ldGhzXG4gIHdpdGggTm90X2ZvdW5kIC0+IHRhYmxlLm1ldGhvZHMuKGxhYmVsKVxuXG5sZXQgdG9fbGlzdCBhcnIgPVxuICBpZiBhcnIgPT0gbWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IG1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZSlcblxubGV0IGluaGVyaXRzIGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgKF8sIHN1cGVyLCBfLCBlbnYpIHRvcCA9XG4gIG5hcnJvdyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzO1xuICBsZXQgaW5pdCA9XG4gICAgaWYgdG9wIHRoZW4gc3VwZXIgY2xhIGVudiBlbHNlIE9iai5yZXByIChzdXBlciBjbGEpIGluXG4gIHdpZGVuIGNsYTtcbiAgQXJyYXkuY29uY2F0XG4gICAgW1t8IHJlcHIgaW5pdCB8XTtcbiAgICAgbWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiByZXByIChnZXRfbWV0aG9kIGNsYSAoZ2V0X21ldGhvZF9sYWJlbCBjbGEgbm0pIDogY2xvc3VyZSkpXG4gICAgICAgKHRvX2FycmF5IGNvbmNyX21ldGhzKSBdXG5cbmxldCBtYWtlX2NsYXNzIHB1Yl9tZXRocyBjbGFzc19pbml0ID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIChlbnZfaW5pdCAoT2JqLnJlcHIgMCksIGNsYXNzX2luaXQsIGVudl9pbml0LCBPYmoucmVwciAwKVxuXG50eXBlIGluaXRfdGFibGUgPSB7IG11dGFibGUgZW52X2luaXQ6IHQ7IG11dGFibGUgY2xhc3NfaW5pdDogdGFibGUgLT4gdCB9XG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG5sZXQgbWFrZV9jbGFzc19zdG9yZSBwdWJfbWV0aHMgY2xhc3NfaW5pdCBpbml0X3RhYmxlID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIGluaXRfdGFibGUuY2xhc3NfaW5pdCA8LSBjbGFzc19pbml0O1xuICBpbml0X3RhYmxlLmVudl9pbml0IDwtIGVudl9pbml0XG5cbmxldCBkdW1teV9jbGFzcyBsb2MgPVxuICBsZXQgdW5kZWYgPSBmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKSBpblxuICAoT2JqLm1hZ2ljIHVuZGVmLCB1bmRlZiwgdW5kZWYsIE9iai5yZXByIDApXG5cbigqKioqIE9iamVjdHMgKioqKilcblxubGV0IGNyZWF0ZV9vYmplY3QgdGFibGUgPVxuICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICBPYmoub2JqIChzZXRfaWQgb2JqKVxuXG5sZXQgY3JlYXRlX29iamVjdF9vcHQgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgICBPYmoub2JqIChzZXRfaWQgb2JqKVxuICBlbmRcblxubGV0IHJlYyBpdGVyX2Ygb2JqID1cbiAgZnVuY3Rpb25cbiAgICBbXSAgIC0+ICgpXG4gIHwgZjo6bCAtPiBmIG9iajsgaXRlcl9mIG9iaiBsXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZSA9XG4gIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICBpZiBpbml0cyA8PiBbXSB0aGVuXG4gICAgaXRlcl9mIG9iaiBpbml0c1xuXG5sZXQgcnVuX2luaXRpYWxpemVyc19vcHQgb2JqXzAgb2JqIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqIGVsc2UgYmVnaW5cbiAgICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgICBpZiBpbml0cyA8PiBbXSB0aGVuIGl0ZXJfZiBvYmogaW5pdHM7XG4gICAgb2JqXG4gIGVuZFxuXG5sZXQgY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpemVycyBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICBsZXQgb2JqID0gY3JlYXRlX29iamVjdCB0YWJsZSBpblxuICAgIHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlO1xuICAgIG9ialxuICBlbmRcblxuKCogRXF1aXZhbGVudCBwcmltaXRpdmUgYmVsb3dcbmxldCBzZW5kc2VsZiBvYmogbGFiID1cbiAgKG1hZ2ljIG9iaiA6IChvYmogLT4gdCkgYXJyYXkgYXJyYXkpLigwKS4obGFiKSBvYmpcbiopXG5leHRlcm5hbCBzZW5kIDogb2JqIC0+IHRhZyAtPiAnYSA9IFwiJXNlbmRcIlxuZXh0ZXJuYWwgc2VuZGNhY2hlIDogb2JqIC0+IHRhZyAtPiB0IC0+IGludCAtPiAnYSA9IFwiJXNlbmRjYWNoZVwiXG5leHRlcm5hbCBzZW5kc2VsZiA6IG9iaiAtPiBsYWJlbCAtPiAnYSA9IFwiJXNlbmRzZWxmXCJcbmV4dGVybmFsIGdldF9wdWJsaWNfbWV0aG9kIDogb2JqIC0+IHRhZyAtPiBjbG9zdXJlXG4gICAgPSBcImNhbWxfZ2V0X3B1YmxpY19tZXRob2RcIiBbQEBub2FsbG9jXVxuXG4oKioqKiB0YWJsZSBjb2xsZWN0aW9uIGFjY2VzcyAqKioqKVxuXG50eXBlIHRhYmxlcyA9XG4gIHwgRW1wdHlcbiAgfCBDb25zIG9mIHtrZXkgOiBjbG9zdXJlOyBtdXRhYmxlIGRhdGE6IHRhYmxlczsgbXV0YWJsZSBuZXh0OiB0YWJsZXN9XG5cbmxldCBzZXRfZGF0YSB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGEgPC0gdlxubGV0IHNldF9uZXh0IHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dCA8LSB2XG5sZXQgZ2V0X2tleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmtleVxubGV0IGdldF9kYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YVxubGV0IGdldF9uZXh0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dFxuXG5sZXQgYnVpbGRfcGF0aCBuIGtleXMgdGFibGVzID1cbiAgbGV0IHJlcyA9IENvbnMge2tleSA9IE9iai5tYWdpYyAwOyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgbGV0IHIgPSByZWYgcmVzIGluXG4gIGZvciBpID0gMCB0byBuIGRvXG4gICAgciA6PSBDb25zIHtrZXkgPSBrZXlzLihpKTsgZGF0YSA9ICFyOyBuZXh0ID0gRW1wdHl9XG4gIGRvbmU7XG4gIHNldF9kYXRhIHRhYmxlcyAhcjtcbiAgcmVzXG5cbmxldCByZWMgbG9va3VwX2tleXMgaSBrZXlzIHRhYmxlcyA9XG4gIGlmIGkgPCAwIHRoZW4gdGFibGVzIGVsc2VcbiAgbGV0IGtleSA9IGtleXMuKGkpIGluXG4gIGxldCByZWMgbG9va3VwX2tleSAodGFibGVzOnRhYmxlcykgPVxuICAgIGlmIGdldF9rZXkgdGFibGVzID09IGtleSB0aGVuXG4gICAgICBtYXRjaCBnZXRfZGF0YSB0YWJsZXMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgQ29ucyBfIGFzIHRhYmxlc19kYXRhIC0+XG4gICAgICAgICAgbG9va3VwX2tleXMgKGktMSkga2V5cyB0YWJsZXNfZGF0YVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGdldF9uZXh0IHRhYmxlcyB3aXRoXG4gICAgICB8IENvbnMgXyBhcyBuZXh0IC0+IGxvb2t1cF9rZXkgbmV4dFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBuZXh0IDogdGFibGVzID0gQ29ucyB7a2V5OyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgICAgICAgICBzZXRfbmV4dCB0YWJsZXMgbmV4dDtcbiAgICAgICAgICBidWlsZF9wYXRoIChpLTEpIGtleXMgbmV4dFxuICBpblxuICBsb29rdXBfa2V5IHRhYmxlc1xuXG5sZXQgbG9va3VwX3RhYmxlcyByb290IGtleXMgPVxuICBtYXRjaCBnZXRfZGF0YSByb290IHdpdGhcbiAgfCBDb25zIF8gYXMgcm9vdF9kYXRhIC0+XG4gICAgbG9va3VwX2tleXMgKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290X2RhdGFcbiAgfCBFbXB0eSAtPlxuICAgIGJ1aWxkX3BhdGggKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290XG5cbigqKioqIGJ1aWx0aW4gbWV0aG9kcyAqKioqKVxuXG5sZXQgZ2V0X2NvbnN0IHggPSByZXQgKGZ1biBfb2JqIC0+IHgpXG5sZXQgZ2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogLT4gQXJyYXkudW5zYWZlX2dldCBvYmogbilcbmxldCBnZXRfZW52IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pXG5sZXQgZ2V0X21ldGggbiAgPSByZXQgKGZ1biBvYmogLT4gc2VuZHNlbGYgb2JqIG4pXG5sZXQgc2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogeCAtPiBBcnJheS51bnNhZmVfc2V0IG9iaiBuIHgpXG5sZXQgYXBwX2NvbnN0IGYgeCA9IHJldCAoZnVuIF9vYmogLT4gZiB4KVxubGV0IGFwcF92YXIgZiBuICAgPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2VudiBmIGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9tZXRoIGYgbiAgPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9jb25zdCBmIHggeSA9IHJldCAoZnVuIF9vYmogLT4gZiB4IHkpXG5sZXQgYXBwX2NvbnN0X3ZhciBmIHggbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2NvbnN0X21ldGggZiB4IG4gPSByZXQgKGZ1biBvYmogLT4gZiB4IChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX3Zhcl9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSB4KVxubGV0IGFwcF9tZXRoX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSB4KVxubGV0IGFwcF9jb25zdF9lbnYgZiB4IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX2Vudl9jb25zdCBmIGUgbiB4ID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgeClcbmxldCBtZXRoX2FwcF9jb25zdCBuIHggPSByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSB4KVxubGV0IG1ldGhfYXBwX3ZhciBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoQXJyYXkudW5zYWZlX2dldCBvYmogbSkpXG5sZXQgbWV0aF9hcHBfZW52IG4gZSBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXylcbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBtKSlcbmxldCBtZXRoX2FwcF9tZXRoIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChzZW5kc2VsZiBvYmogbSkpXG5sZXQgc2VuZF9jb25zdCBtIHggYyA9XG4gIHJldCAoZnVuIG9iaiAtPiBzZW5kY2FjaGUgeCBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfdmFyIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIDogb2JqKSBtXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX2VudiBtIGUgbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlXG4gICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSA6IG9iailcbiAgICAgIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9tZXRoIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChzZW5kc2VsZiBvYmogbikgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBuZXdfY2FjaGUgdGFibGUgPVxuICBsZXQgbiA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gbW9kIDIgPSAwIHx8IG4gPiAyICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IG1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IG1hZ2ljIGNsb1xuXG5sZXQgc2V0X21ldGhvZHMgdGFibGUgbWV0aG9kcyA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggbWV0aG9kcyBpbiBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgbGV0IGxhYmVsID0gbWV0aG9kcy4oIWkpIGluIGxldCBjbG8gPSBtZXRob2RfaW1wbCB0YWJsZSBpIG1ldGhvZHMgaW5cbiAgICBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGNsbztcbiAgICBpbmNyIGlcbiAgZG9uZVxuXG4oKioqKiBTdGF0aXN0aWNzICoqKiopXG5cbnR5cGUgc3RhdHMgPVxuICB7IGNsYXNzZXM6IGludDsgbWV0aG9kczogaW50OyBpbnN0X3ZhcnM6IGludDsgfVxuXG5sZXQgc3RhdHMgKCkgPVxuICB7IGNsYXNzZXMgPSAhdGFibGVfY291bnQ7XG4gICAgbWV0aG9kcyA9ICFtZXRob2RfY291bnQ7IGluc3RfdmFycyA9ICFpbnN0X3Zhcl9jb3VudDsgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNoYXBlID1cbiAgfCBGdW5jdGlvblxuICB8IExhenlcbiAgfCBDbGFzc1xuICB8IE1vZHVsZSBvZiBzaGFwZSBhcnJheVxuICB8IFZhbHVlIG9mIE9iai50XG5cbmxldCByZWMgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBzaGFwZSA9XG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgIGxldCByZWMgZm4gKHggOiAnYSkgPVxuICAgICAgICAgbGV0IGZuJyA6ICdhIC0+ICdiID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgIGlmIGZuID09IGZuJyB0aGVuXG4gICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGZuJyB4IGluXG4gICAgICAgT2JqLnJlcHIgZm5cbiAgICB8IExhenkgLT5cbiAgICAgICBsZXQgcmVjIGwgPVxuICAgICAgICAgbGF6eSAoXG4gICAgICAgICAgIGxldCBsJyA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICAgIGlmIGwgPT0gbCcgdGhlblxuICAgICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBMYXp5LmZvcmNlIGwnKSBpblxuICAgICAgIE9iai5yZXByIGxcbiAgICB8IENsYXNzIC0+XG4gICAgICAgT2JqLnJlcHIgKENhbWxpbnRlcm5hbE9PLmR1bW15X2NsYXNzIGxvYylcbiAgICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gICAgfCBWYWx1ZSB2IC0+IHZcbiAgaW5cbiAgT2JqLnNldF9maWVsZCBtb2R1IGkgaW5pdFxuXG5hbmQgaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzID1cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb21wcyBpblxuICBsZXQgbW9kdSA9IE9iai5uZXdfYmxvY2sgMCBsZW5ndGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIGNvbXBzLihpKVxuICBkb25lO1xuICBtb2R1XG5cbmxldCBpbml0X21vZCBsb2Mgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC5pbml0X21vZDogbm90IGEgbW9kdWxlXCJcblxubGV0IHJlYyB1cGRhdGVfbW9kX2ZpZWxkIG1vZHUgaSBzaGFwZSBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEZ1bmN0aW9uIHwgTGF6eSAtPlxuICAgICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBuXG4gIHwgVmFsdWUgXyAtPlxuICAgICAoKSAoKiB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZSAqKVxuICB8IENsYXNzIC0+XG4gICAgIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID0gNCk7XG4gICAgIGxldCBjbCA9IE9iai5maWVsZCBtb2R1IGkgaW5cbiAgICAgZm9yIGogPSAwIHRvIDMgZG9cbiAgICAgICBPYmouc2V0X2ZpZWxkIGNsIGogKE9iai5maWVsZCBuIGopXG4gICAgIGRvbmVcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyAoT2JqLmZpZWxkIG1vZHUgaSkgblxuXG5hbmQgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG4gPVxuICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA+PSBBcnJheS5sZW5ndGggY29tcHMpO1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNvbXBzIC0gMSBkb1xuICAgIHVwZGF0ZV9tb2RfZmllbGQgbyBpIGNvbXBzLihpKSAoT2JqLmZpZWxkIG4gaSlcbiAgZG9uZVxuXG5sZXQgdXBkYXRlX21vZCBzaGFwZSBvIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC51cGRhdGVfbW9kOiBub3QgYSBtb2R1bGVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRva2VuID1cbiAgICBLd2Qgb2Ygc3RyaW5nXG4gIHwgSWRlbnQgb2Ygc3RyaW5nXG4gIHwgSW50IG9mIGludFxuICB8IEZsb2F0IG9mIGZsb2F0XG4gIHwgU3RyaW5nIG9mIHN0cmluZ1xuICB8IENoYXIgb2YgY2hhclxuXG4oKiBUaGUgc3RyaW5nIGJ1ZmZlcmluZyBtYWNoaW5lcnkgKilcblxubGV0IGluaXRpYWxfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDMyXG5cbmxldCBidWZmZXIgPSByZWYgaW5pdGlhbF9idWZmZXJcbmxldCBidWZwb3MgPSByZWYgMFxuXG5sZXQgcmVzZXRfYnVmZmVyICgpID0gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBidWZwb3MgOj0gMFxuXG5sZXQgc3RvcmUgYyA9XG4gIGlmICFidWZwb3MgPj0gQnl0ZXMubGVuZ3RoICFidWZmZXIgdGhlbiBiZWdpblxuICAgIGxldCBuZXdidWZmZXIgPSBCeXRlcy5jcmVhdGUgKDIgKiAhYnVmcG9zKSBpblxuICAgIEJ5dGVzLmJsaXQgIWJ1ZmZlciAwIG5ld2J1ZmZlciAwICFidWZwb3M7XG4gICAgYnVmZmVyIDo9IG5ld2J1ZmZlclxuICBlbmQ7XG4gIEJ5dGVzLnNldCAhYnVmZmVyICFidWZwb3MgYztcbiAgaW5jciBidWZwb3NcblxubGV0IGdldF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgIWJ1ZmZlciAwICFidWZwb3MgaW4gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBzXG5cbigqIFRoZSBsZXhlciAqKVxuXG5sZXQgbWFrZV9sZXhlciBrZXl3b3JkcyA9XG4gIGxldCBrd2RfdGFibGUgPSBIYXNodGJsLmNyZWF0ZSAxNyBpblxuICBMaXN0Lml0ZXIgKGZ1biBzIC0+IEhhc2h0YmwuYWRkIGt3ZF90YWJsZSBzIChLd2QgcykpIGtleXdvcmRzO1xuICBsZXQgaWRlbnRfb3Jfa2V5d29yZCBpZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgaWQgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IElkZW50IGlkXG4gIGFuZCBrZXl3b3JkX29yX2Vycm9yIGMgPVxuICAgIGxldCBzID0gU3RyaW5nLm1ha2UgMSBjIGluXG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgcyB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciAoXCJJbGxlZ2FsIGNoYXJhY3RlciBcIiBeIHMpKVxuICBpblxuICBsZXQgcmVjIG5leHRfdG9rZW4gKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJyAnIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMDknIHwgJ1xcMDI2JyB8ICdcXDAxMicpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbmV4dF90b2tlbiBzdHJtX19cbiAgICB8IFNvbWUgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXycgfCAnXFwxOTInLi4nXFwyNTUnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfCAnPicgfFxuICAgICAgICAgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICdcXCcnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBjaGFyIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAnXFwnJyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKENoYXIgYylcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lICdcXFwiJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgU29tZSAoU3RyaW5nIChzdHJpbmcgcykpXG4gICAgfCBTb21lICctJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG5lZ19udW1iZXIgc3RybV9fXG4gICAgfCBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChrZXl3b3JkX29yX2Vycm9yIGMpXG4gICAgfCBfIC0+IE5vbmVcbiAgYW5kIGlkZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXFwxOTInLi4nXFwyNTUnIHwgJzAnLi4nOScgfCAnXycgfCAnXFwnJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBpZGVudDIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy0nIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHxcbiAgICAgICAgICc+JyB8ICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgbmVnX251bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgXyAtPiBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgaWRlbnQyIHNcbiAgYW5kIG51bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICcuJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICcuJzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChJbnQgKGludF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGRlY2ltYWxfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnKycgfCAnLScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IGVuZF9leHBvbmVudF9wYXJ0IHN0cm1fX1xuICBhbmQgZW5kX2V4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIHN0cmluZyAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFwiJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGdldF9zdHJpbmcgKClcbiAgICB8IFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBjaGFyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBlc2NhcGUgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnbicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxuJ1xuICAgIHwgU29tZSAncicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxyJ1xuICAgIHwgU29tZSAndCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFx0J1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYzEpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMikgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMzKSAtPlxuICAgICAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgICAgICBDaGFyLmNoclxuICAgICAgICAgICAgICAgICAgKChDaGFyLmNvZGUgYzEgLSA0OCkgKiAxMDAgKyAoQ2hhci5jb2RlIGMyIC0gNDgpICogMTAgK1xuICAgICAgICAgICAgICAgICAgICAgKENoYXIuY29kZSBjMyAtIDQ4KSlcbiAgICAgICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBuZXh0X3Rva2VuIHNcbiAgICB8IF8gLT4gU29tZSAoa2V5d29yZF9vcl9lcnJvciAnKCcpXG4gIGFuZCBjb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfbmVzdGVkX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX25lc3RlZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBjb21tZW50IHNcbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9lbmRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcpJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICgpXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgaW5cbiAgZnVuIGlucHV0IC0+IFN0cmVhbS5mcm9tIChmdW4gX2NvdW50IC0+IG5leHRfdG9rZW4gaW5wdXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcbiAgaW5jbHVkZSBIYXNodGJsLlNlZWRlZFNcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBIYXNodGJsLlNcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICdhIGNvbnRhaW5lciAtPiB0IC0+IGVxdWFsXG4gICAgdmFsIGdldF9kYXRhOiAnYSBjb250YWluZXIgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGdldF9rZXk6ICdhIGNvbnRhaW5lciAtPiB0IG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29ucyhoa2V5LCBjb250YWluZXIsIGguZGF0YS4oaSkpIGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshaXRlcn0sIHshZm9sZH0sIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGsgPSBoa2V5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiB0cnVlXG4gICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiBtZW1faW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfaGssIF9jLCByZXN0KSAtPiBtZW1faW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG4gICAgbGV0IGl0ZXIgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGRcbiAgICAgICAgICAgIGVuZDsgZG9fYnVja2V0IHJlc3QgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGZvbGQgZiBoIGluaXQgPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICAgICAgbWF0Y2ggYiB3aXRoXG4gICAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAgIGFjY3VcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZCBhY2N1XG4gICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0IGFjY3UgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgICAgZG9uZTtcbiAgICAgICFhY2N1XG5cbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggZiBrIGQgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBuZXdfZCAtPlxuICAgICAgICAgICAgICAgICAgICBILnNldF9rZXlfZGF0YSBjIGsgbmV3X2Q7XG4gICAgICAgICAgICAgICAgICAgIENvbnMoaGssIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgcmVzdFxuXG4gICAgbGV0IHN0YXRzIGggPVxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIEguY2hlY2tfa2V5IGMgLT5cbiAgICAgICAgICBidWNrZXRfbGVuZ3RoX2FsaXZlIChhY2N1ICsgMSkgcmVzdFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSByZXN0XG5cbiAgICBsZXQgc3RhdHNfYWxpdmUgaCA9XG4gICAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYikpIDAgaC5kYXRhXG4gICAgICBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYiBpblxuICAgICAgICAgICBzaXplIDo9ICFzaXplICsgbDtcbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSAhc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCB0b19zZXEgdGJsID1cbiAgICAgICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICAgICAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgICAgICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gICAgICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgICAgICB8IENvbnMgKF8sIGMsIG5leHQpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhdXggaSBuZXh0ICgpXG4gICAgICAgICAgICAgIHwgU29tZSBrZXksIFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYXV4IDAgRW1wdHlcblxuICAgIGxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9iakVwaCA9IE9iai5FcGhlbWVyb25cblxubGV0IF9vYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgdiAtPiBTb21lIChPYmoub2JqIHYpXG5cbigqKiBUaGUgcHJldmlvdXMgZnVuY3Rpb24gaXMgdHlwZWQgc28gdGhpcyBvbmUgaXMgYWxzbyBjb3JyZWN0ICopXG5sZXQgb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPiBPYmoubWFnaWMgeFxuXG5cbm1vZHVsZSBLMSA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgMVxuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKHQyOignaywnZCkgdCk6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggPSBILmhhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSA9IGdldF9rZXlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXkxX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2sxKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgZ2V0X2tleTJfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDFcbiAgbGV0IGNoZWNrX2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAxXG5cblxuICBsZXQgYmxpdF9rZXkxICh0MTooJ2sxLF8sXykgdCkgKHQyOignazEsXyxfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuICBsZXQgYmxpdF9rZXkyICh0MTooXywnazIsXykgdCkgKHQyOihfLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAxIHQyIDEgMVxuICBsZXQgYmxpdF9rZXkxMiAodDE6KCdrMSwnazIsXykgdCkgKHQyOignazEsJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAyXG5cbiAgbGV0IGdldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLF8sJ2QpIHQpICh0MjooXyxfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuaGFzaCBzZWVkIGsxICsgSDIuaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT4gU29tZSAoazEnLCBrMicpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMi5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLbiA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSBuIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSBuXG4gIGxldCBsZW5ndGggKGs6KCdrLCdkKSB0KSA6IGludCA9IE9iakVwaC5sZW5ndGgga1xuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgbilcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgblxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAobzE6aW50KSAodDI6KCdrLCdkKSB0KSAobzI6aW50KSAobDppbnQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIG8xIHQyIG8yIGxcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5oYXNoIHNlZWQgay4oaSkgKiA2NTU5OSArICFoO1xuICAgICAgICBkb25lO1xuICAgICAgICAhaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgIGxldCBsZW4gID0gQXJyYXkubGVuZ3RoIGsgaW5cbiAgICAgICAgbGV0IGxlbicgPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gIT0gbGVuJyB0aGVuIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCByZWMgZXF1YWxfYXJyYXkgayBjIGkgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrLihpKSBraVxuICAgICAgICAgICAgICAgICAgdGhlbiBlcXVhbF9hcnJheSBrIGMgKGktMSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXF1YWxfYXJyYXkgayBjIChsZW4tMSlcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbGV0IGxlbiA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiBTb21lIFt8fF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyAwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBrMCAtPlxuICAgICAgICAgICAgICBsZXQgcmVjIGZpbGwgYSBpID1cbiAgICAgICAgICAgICAgICBpZiBpIDwgMSB0aGVuIFNvbWUgYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgICAgICBhLihpKSA8LSBraTtcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsIGEgKGktMSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiBrMCBpblxuICAgICAgICAgICAgICBmaWxsIGEgKGxlbi0xKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJ1xcXCInIHx8IFN0cmluZy5jb250YWlucyBmICclJyB0aGVuXG4gICAgICBmYWlsd2l0aCAoXCJGaWxlbmFtZS5xdW90ZV9jb21tYW5kOiBiYWQgZmlsZSBuYW1lIFwiIF4gZilcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBmICcgJyB0aGVuXG4gICAgICBcIlxcXCJcIiBeIGYgXiBcIlxcXCJcIlxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBsZXQgbiA9IFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZiBpblxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIiBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIG5cblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nID0gbGF6eShSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxuXG5sZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lID0gcmVmIHRlbXBfZGlyX25hbWVcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBjdXJyZW50X3RlbXBfZGlyX25hbWUgOj0gc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIGNsb3NlX2Rlc2Mob3Blbl9kZXNjIG5hbWUgW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2xdIDBvNjAwKTtcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IG9wZW5fdGVtcF9maWxlID8obW9kZSA9IFtPcGVuX3RleHRdKSA/KHBlcm1zID0gMG82MDApXG4gICAgICAgICAgICAgICAgICAgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDb21wbGV4IG51bWJlcnMgKilcblxudHlwZSB0ID0geyByZTogZmxvYXQ7IGltOiBmbG9hdCB9XG5cbmxldCB6ZXJvID0geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxubGV0IG9uZSA9IHsgcmUgPSAxLjA7IGltID0gMC4wIH1cbmxldCBpID0geyByZSA9IDAuMDsgaW0gPSAxLjAgfVxuXG5sZXQgYWRkIHggeSA9IHsgcmUgPSB4LnJlICsuIHkucmU7IGltID0geC5pbSArLiB5LmltIH1cblxubGV0IHN1YiB4IHkgPSB7IHJlID0geC5yZSAtLiB5LnJlOyBpbSA9IHguaW0gLS4geS5pbSB9XG5cbmxldCBuZWcgeCA9IHsgcmUgPSAtLiB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgY29uaiB4ID0geyByZSA9IHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBtdWwgeCB5ID0geyByZSA9IHgucmUgKi4geS5yZSAtLiB4LmltICouIHkuaW07XG4gICAgICAgICAgICAgICAgaW0gPSB4LnJlICouIHkuaW0gKy4geC5pbSAqLiB5LnJlIH1cblxubGV0IGRpdiB4IHkgPVxuICBpZiBhYnNfZmxvYXQgeS5yZSA+PSBhYnNfZmxvYXQgeS5pbSB0aGVuXG4gICAgbGV0IHIgPSB5LmltIC8uIHkucmUgaW5cbiAgICBsZXQgZCA9IHkucmUgKy4gciAqLiB5LmltIGluXG4gICAgeyByZSA9ICh4LnJlICsuIHIgKi4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHguaW0gLS4gciAqLiB4LnJlKSAvLiBkIH1cbiAgZWxzZVxuICAgIGxldCByID0geS5yZSAvLiB5LmltIGluXG4gICAgbGV0IGQgPSB5LmltICsuIHIgKi4geS5yZSBpblxuICAgIHsgcmUgPSAociAqLiB4LnJlICsuIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9IChyICouIHguaW0gLS4geC5yZSkgLy4gZCB9XG5cbmxldCBpbnYgeCA9IGRpdiBvbmUgeFxuXG5sZXQgbm9ybTIgeCA9IHgucmUgKi4geC5yZSArLiB4LmltICouIHguaW1cblxubGV0IG5vcm0geCA9XG4gICgqIFdhdGNoIG91dCBmb3Igb3ZlcmZsb3cgaW4gY29tcHV0aW5nIHJlXjIgKyBpbV4yICopXG4gIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICBpZiByID0gMC4wIHRoZW4gaVxuICBlbHNlIGlmIGkgPSAwLjAgdGhlbiByXG4gIGVsc2UgaWYgciA+PSBpIHRoZW5cbiAgICBsZXQgcSA9IGkgLy4gciBpbiByICouIHNxcnQoMS4wICsuIHEgKi4gcSlcbiAgZWxzZVxuICAgIGxldCBxID0gciAvLiBpIGluIGkgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuXG5sZXQgYXJnIHggPSBhdGFuMiB4LmltIHgucmVcblxubGV0IHBvbGFyIG4gYSA9IHsgcmUgPSBjb3MgYSAqLiBuOyBpbSA9IHNpbiBhICouIG4gfVxuXG5sZXQgc3FydCB4ID1cbiAgaWYgeC5yZSA9IDAuMCAmJiB4LmltID0gMC4wIHRoZW4geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gICAgbGV0IHcgPVxuICAgICAgaWYgciA+PSBpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHEgPSBpIC8uIHIgaW5cbiAgICAgICAgc3FydChyKSAqLiBzcXJ0KDAuNSAqLiAoMS4wICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHEgPSByIC8uIGkgaW5cbiAgICAgICAgc3FydChpKSAqLiBzcXJ0KDAuNSAqLiAocSArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBpblxuICAgIGlmIHgucmUgPj0gMC4wXG4gICAgdGhlbiB7IHJlID0gdzsgIGltID0gMC41ICouIHguaW0gLy4gdyB9XG4gICAgZWxzZSB7IHJlID0gMC41ICouIGkgLy4gdzsgIGltID0gaWYgeC5pbSA+PSAwLjAgdGhlbiB3IGVsc2UgLS4gdyB9XG4gIGVuZFxuXG5sZXQgZXhwIHggPVxuICBsZXQgZSA9IGV4cCB4LnJlIGluIHsgcmUgPSBlICouIGNvcyB4LmltOyBpbSA9IGUgKi4gc2luIHguaW0gfVxuXG5sZXQgbG9nIHggPSB7IHJlID0gbG9nIChub3JtIHgpOyBpbSA9IGF0YW4yIHguaW0geC5yZSB9XG5cbmxldCBwb3cgeCB5ID0gZXhwIChtdWwgeSAobG9nIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIE1hbnVlbCBTZXJyYW5vIGV0IFhhdmllciBMZXJveSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0JpZ2FycmF5XTogbGFyZ2UsIG11bHRpLWRpbWVuc2lvbmFsLCBudW1lcmljYWwgYXJyYXlzICopXG5cbigqIFRoZXNlIHR5cGVzIGluIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIHRhYmxlcyBpblxuICAgLi4vdHlwaW5nL3R5cGVvcHQubWwgKilcblxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxudHlwZSAoJ2EsICdiKSBraW5kID1cbiAgICBGbG9hdDMyIDogKGZsb2F0LCBmbG9hdDMyX2VsdCkga2luZFxuICB8IEZsb2F0NjQgOiAoZmxvYXQsIGZsb2F0NjRfZWx0KSBraW5kXG4gIHwgSW50OF9zaWduZWQgOiAoaW50LCBpbnQ4X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3Vuc2lnbmVkIDogKGludCwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl9zaWduZWQgOiAoaW50LCBpbnQxNl9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfdW5zaWduZWQgOiAoaW50LCBpbnQxNl91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQzMiA6IChpbnQzMiwgaW50MzJfZWx0KSBraW5kXG4gIHwgSW50NjQgOiAoaW50NjQsIGludDY0X2VsdCkga2luZFxuICB8IEludCA6IChpbnQsIGludF9lbHQpIGtpbmRcbiAgfCBOYXRpdmVpbnQgOiAobmF0aXZlaW50LCBuYXRpdmVpbnRfZWx0KSBraW5kXG4gIHwgQ29tcGxleDMyIDogKENvbXBsZXgudCwgY29tcGxleDMyX2VsdCkga2luZFxuICB8IENvbXBsZXg2NCA6IChDb21wbGV4LnQsIGNvbXBsZXg2NF9lbHQpIGtpbmRcbiAgfCBDaGFyIDogKGNoYXIsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2tpbmQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBtYXRjaCBBcnJheS5sZW5ndGggZGltcywgbGF5b3V0IHdpdGhcbiAgICB8IDAsIF8gLT4gYXJyXG4gICAgfCBkbGVuLCBDX2xheW91dCAtPiBjbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAwKSBmIDAgZGltczsgYXJyXG4gICAgfCBkbGVuLCBGb3J0cmFuX2xheW91dCAtPiBmbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAxKSBmIChwcmVkIGRsZW4pIGRpbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc29vX3J1bnRpbWUuUnVudGltZV92ZXJzaW9uICopXG5tb2R1bGUgUnVudGltZV92ZXJzaW9uID0gSnNvb19ydW50aW1lX19SdW50aW1lX3ZlcnNpb25cblxubW9kdWxlIEpzb29fcnVudGltZV9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCJtb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgdHlwZSAnYSBqc19hcnJheSA9IHRcblxuICB0eXBlICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2sgPSB0XG5cbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuICBleHRlcm5hbCBib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuICBleHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG4gIGV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgaW50MzJfb2ZfbnVtYmVyIDogdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCBuYXRpdmVpbnRfb2ZfbnVtYmVyIDogdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCB0eXBlb2YgOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuICBleHRlcm5hbCBpbnN0YW5jZW9mIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBleHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBleHRlcm5hbCBkZWxldGUgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gIGV4dGVybmFsIGNhbGwgOiB0IC0+IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gIGV4dGVybmFsIGZ1bl9jYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gIGV4dGVybmFsIG5ld19vYmogOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG4gIGV4dGVybmFsIG5ld19vYmpfYXJyIDogdCAtPiB0IGpzX2FycmF5IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICh0IGpzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIHQganNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAoJ2IgLT4gdCBqc19hcnJheSAtPiAnYSkgLT4gKCdiLCB0IGpzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YXNTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YXNTY3JpcHQgZXJyb3IgaXMgYWxyZWFkeSBhdHRhY2hlZCwgaXQgd2lsbCBkbyBub3RoaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0b1xuICAgIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBKYXZhU2NyaXB0IHN0YWNrIHRyYWNlcy5cblxuICAgIEF0dGFjaGluZyBKYXZhc1NjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgc3RyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGxldCByYWlzZV8gOiB0IC0+ICdhID0gSnMuanNfZXhwciBcIihmdW5jdGlvbiAoZXhuKSB7IHRocm93IGV4biB9KVwiXG5cbiAgZXh0ZXJuYWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uID0gXCJjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG4gPSBcImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXCJcbmVuZFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMi02MFwiXVxuXG5tb2R1bGUgRm9yX2NvbXBhdGliaWxpdHlfb25seSA9IHN0cnVjdFxuICAoKiBBZGQgcHJpbWl0aXZlcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiBFeGlzdGluZyB1c2VycyBtaWdodFxuICAgICBkZXBlbmQgb24gaXQgKGUuZy4gZ2VuX2pzX2FwaSksIHdlIGRvbnQgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2VzIG1pc3NpbmcgcHJpbWl0aXZlcy4gKilcblxuICBleHRlcm5hbCBjYW1sX2pzX2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IEpzLnQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19ieXRlX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF9vZl9qc19hcnJheSA6ICdhIEpzLmpzX2FycmF5IC0+ICdhIGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X3RvX2pzX2FycmF5IDogJ2EgbGlzdCAtPiAnYSBKcy5qc19hcnJheSA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuQ1NTICopXG5tb2R1bGUgQ1NTID0gSnNfb2Zfb2NhbWxfX0NTU1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb20gKilcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbF9fRG9tXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9ldmVudHMgKilcbm1vZHVsZSBEb21fZXZlbnRzID0gSnNfb2Zfb2NhbWxfX0RvbV9ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2h0bWwgKilcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sX19Eb21faHRtbFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fc3ZnICopXG5tb2R1bGUgRG9tX3N2ZyA9IEpzX29mX29jYW1sX19Eb21fc3ZnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkV2ZW50U291cmNlICopXG5tb2R1bGUgRXZlbnRTb3VyY2UgPSBKc19vZl9vY2FtbF9fRXZlbnRTb3VyY2VcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlsZSAqKVxubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbF9fRmlsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaXJlYnVnICopXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sX19GaXJlYnVnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZvcm0gKilcbm1vZHVsZSBGb3JtID0gSnNfb2Zfb2NhbWxfX0Zvcm1cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuR2VvbG9jYXRpb24gKilcbm1vZHVsZSBHZW9sb2NhdGlvbiA9IEpzX29mX29jYW1sX19HZW9sb2NhdGlvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGVyc2VjdGlvbk9ic2VydmVyICopXG5tb2R1bGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50bCAqKVxubW9kdWxlIEludGwgPSBKc19vZl9vY2FtbF9fSW50bFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5KcyAqKVxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWxfX0pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzb24gKilcbm1vZHVsZSBKc29uID0gSnNfb2Zfb2NhbWxfX0pzb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnN0YWJsZSAqKVxubW9kdWxlIEpzdGFibGUgPSBKc19vZl9vY2FtbF9fSnN0YWJsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5MaWJfdmVyc2lvbiAqKVxubW9kdWxlIExpYl92ZXJzaW9uID0gSnNfb2Zfb2NhbWxfX0xpYl92ZXJzaW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLk11dGF0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBNdXRhdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX011dGF0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUGVyZm9ybWFuY2VPYnNlcnZlciAqKVxubW9kdWxlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZWdleHAgKilcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbF9fUmVnZXhwXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlc2l6ZU9ic2VydmVyICopXG5tb2R1bGUgUmVzaXplT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUmVzaXplT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuU3lzX2pzICopXG5tb2R1bGUgU3lzX2pzID0gSnNfb2Zfb2NhbWxfX1N5c19qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5UeXBlZF9hcnJheSAqKVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWxfX1R5cGVkX2FycmF5XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlVybCAqKVxubW9kdWxlIFVybCA9IEpzX29mX29jYW1sX19VcmxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViR0wgKilcbm1vZHVsZSBXZWJHTCA9IEpzX29mX29jYW1sX19XZWJHTFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJTb2NrZXRzICopXG5tb2R1bGUgV2ViU29ja2V0cyA9IEpzX29mX29jYW1sX19XZWJTb2NrZXRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldvcmtlciAqKVxubW9kdWxlIFdvcmtlciA9IEpzX29mX29jYW1sX19Xb3JrZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuWG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX19YbWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGxvY2FsIG1vZHVsZSBbSnNdIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBwcHhfanMgZXh0ZW5zaW9uIHdvcmsgd2l0aGluIHRoYXQgZmlsZS4gKilcbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG5cbiAgdHlwZSAoLSdhLCArJ2IpIG1ldGhfY2FsbGJhY2tcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgdHlwZSB0b3BcblxuICAgIHR5cGUgYW55ID0gdG9wIHRcblxuICAgIHR5cGUgYW55X2pzX2FycmF5ID0gYW55XG5cbiAgICBleHRlcm5hbCBpbmplY3QgOiAnYSAtPiBhbnkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBjb2VyY2UgOiBfIHQgLT4gXyB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgZ2V0IDogJ2EgLT4gJ2IgLT4gJ2MgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldCA6ICdhIC0+ICdiIC0+ICdjIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICAgIGV4dGVybmFsIGRlbGV0ZSA6ICdhIC0+ICdiIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICAgIGV4dGVybmFsIGNhbGwgOiAnYSAtPiAnYiAtPiBhbnkgYXJyYXkgLT4gJ2MgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBmdW5fY2FsbCA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGwgOiAnYSAtPiBzdHJpbmcgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqX2FyciA6ICdhIC0+IGFueV9qc19hcnJheSAtPiAnYiA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogYW55KSBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICAgIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICAgIGxldCBnbG9iYWwgPSBwdXJlX2pzX2V4cHIgXCJnbG9iYWxUaGlzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoYW55X2pzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIGFueV9qc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgICgnYiAtPiBhbnlfanNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgYW55X2pzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgICgqIERFUFJFQ0FURUQgKilcbiAgICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuICBlbmRcblxuICAoKioqKilcblxuICB0eXBlICdhIG9wdCA9ICdhXG5cbiAgdHlwZSAnYSBvcHRkZWYgPSAnYVxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgbGV0IG51bGwgOiAnYSBvcHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG5cbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIG9wdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgdW5kZWZpbmVkIDogJ2Egb3B0ZGVmID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2Egb3B0ZGVmID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSB0eXBlIE9QVCA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVtcHR5IDogJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuXG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgICB2YWwgdGVzdCA6ICdhIHQgLT4gYm9vbFxuXG4gICAgdmFsIGl0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgY2FzZSA6ICdhIHQgLT4gKHVuaXQgLT4gJ2IpIC0+ICgnYSAtPiAnYikgLT4gJ2JcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYVxuXG4gICAgdmFsIG9wdGlvbiA6ICdhIG9wdGlvbiAtPiAnYSB0XG5cbiAgICB2YWwgdG9fb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb25cblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdCA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdFxuXG4gICAgbGV0IGVtcHR5ID0gbnVsbFxuXG4gICAgbGV0IHJldHVybiA9IHNvbWVcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChlcXVhbHMgeCBudWxsKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChlcXVhbHMgeCBudWxsKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRkZWYgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHRkZWYgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRkZWZcblxuICAgIGxldCBlbXB0eSA9IHVuZGVmaW5lZFxuXG4gICAgbGV0IHJldHVybiA9IGRlZlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIGxldCBjb2VyY2UgeCBmIGcgPSBPcHQuZ2V0IChmIHgpIChmdW4gKCkgLT4gZyB4KVxuXG4gIGxldCBjb2VyY2Vfb3B0IHggZiBnID0gT3B0LmdldCAoT3B0LmJpbmQgeCBmKSAoZnVuICgpIC0+IGcgeClcblxuICAoKioqKilcblxuICB0eXBlICsnYSBtZXRoXG5cbiAgdHlwZSArJ2EgZ2VuX3Byb3BcblxuICB0eXBlICdhIHJlYWRvbmx5X3Byb3AgPSA8IGdldCA6ICdhID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHdyaXRlb25seV9wcm9wID0gPCBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHByb3AgPSA8IGdldCA6ICdhIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBvcHRkZWZfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSArJ2EgY29uc3RyXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBjYWxsYmFjayA9ICh1bml0LCAnYSkgbWV0aF9jYWxsYmFja1xuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gICgqKioqKVxuXG4gIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgKCoqKiopXG5cbiAgbGV0IF90cnVlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInRydWVcIlxuXG4gIGxldCBfZmFsc2UgPSBVbnNhZmUucHVyZV9qc19leHByIFwiZmFsc2VcIlxuXG4gIHR5cGUgbWF0Y2hfcmVzdWx0X2hhbmRsZVxuXG4gIHR5cGUgc3RyaW5nX2FycmF5XG5cbiAgdHlwZSBudW1iZXJfdCA9IGZsb2F0XG5cbiAgY2xhc3MgdHlwZSBudW1iZXIgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmdfcmFkaXggOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRml4ZWQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbF9kaWdpdHMgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvUHJlY2lzaW9uIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgZW5kXG5cbiAgYW5kIGpzX3N0cmluZyA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB2YWx1ZU9mIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJBdCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckNvZGVBdCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICAoKiBUaGlzIG1heSByZXR1cm4gTmFOLi4uICopXG4gICAgbWV0aG9kIGNvbmNhdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfNCA6XG4gICAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsb2NhbGVDb21wYXJlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgbWV0aG9kIF9tYXRjaCA6IHJlZ0V4cCB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemVfZm9ybSA6IG5vcm1hbGl6YXRpb24gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZSA6IHJlZ0V4cCB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzZWFyY2ggOiByZWdFeHAgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdCA6IGpzX3N0cmluZyB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9saW1pdGVkIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHAgOiByZWdFeHAgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwTGltaXRlZCA6IHJlZ0V4cCB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nX3RvRW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZUxvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1VwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVVwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0cmltIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGFuZCByZWdFeHAgPSBvYmplY3RcbiAgICBtZXRob2QgZXhlYyA6IGpzX3N0cmluZyB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIHRlc3QgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNvdXJjZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBnbG9iYWwgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZUNhc2UgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG11bHRpbGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbGFzdEluZGV4IDogaW50IHByb3BcbiAgZW5kXG5cbiAgYW5kIG5vcm1hbGl6YXRpb24gPSBqc19zdHJpbmdcblxuICAoKiBzdHJpbmcgaXMgdXNlZCBieSBwcHhfanMsIGl0IG5lZWRzIHRvIGNvbWUgYmVmb3JlIGFueSB1c2Ugb2YgdGhlXG4gICAgIG5ldyBzeW50YXggaW4gdGhpcyBmaWxlICopXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGxldCBuZmMgPSBzdHJpbmcgXCJORkNcIlxuXG4gIGxldCBuZmQgPSBzdHJpbmcgXCJORkRcIlxuXG4gIGxldCBuZmtjID0gc3RyaW5nIFwiTkZLQ1wiXG5cbiAgbGV0IG5ma2QgPSBzdHJpbmcgXCJORktEXCJcbmVuZFxuXG5pbmNsdWRlIEpzXG5cbmNsYXNzIHR5cGUgc3RyaW5nX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgZnJvbUNoYXJDb2RlIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgc3RyaW5nX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fU3RyaW5nXG5cbmxldCByZWdFeHAgPSBVbnNhZmUuZ2xvYmFsIyMuX1JlZ0V4cFxuXG5sZXQgcmVnRXhwX2NvcHkgPSByZWdFeHBcblxubGV0IHJlZ0V4cF93aXRoRmxhZ3MgPSByZWdFeHBcblxuY2xhc3MgdHlwZSBbJ2FdIGpzX2FycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmNhdCA6ICdhIGpzX2FycmF5IHQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGpvaW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHBvcCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHB1c2ggOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCByZXZlcnNlIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNoaWZ0IDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnQgOiAoJ2EgLT4gJ2EgLT4gbnVtYmVyX3QpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0X2FzU3RyaW5ncyA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8yIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzMgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfNCA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnQgOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzb21lIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZXZlcnkgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb3JFYWNoIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtYXAgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBmaWx0ZXIgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgcmVkdWNlX2luaXQgOiAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlIDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0X2luaXQgOlxuICAgICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodCA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuZW5kXG5cbmxldCBvYmplY3RfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgb2JqZWN0X2tleXMgbyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBvYmplY3RfY29uc3RydWN0b3IjI2tleXMgb1xuXG5sZXQgYXJyYXlfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX0FycmF5XG5cbmxldCBhcnJheV9lbXB0eSA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9sZW5ndGggPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfZ2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IFVuc2FmZS5nZXRcblxubGV0IGFycmF5X3NldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gVW5zYWZlLnNldFxuXG5sZXQgYXJyYXlfbWFwX3BvbHkgOlxuICAgICdhICNqc19hcnJheSB0IC0+ICgnYSAtPiBpbnQgLT4gJ2EgI2pzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiICNqc19hcnJheSB0ID1cbiBmdW4gYSBjYiAtPiAoVW5zYWZlLmNvZXJjZSBhKSMjbWFwIGNiXG5cbmxldCBhcnJheV9tYXAgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggX2lkeCBfIC0+IGYgeCkpXG5cbmxldCBhcnJheV9tYXBpIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IGlkeCBfIC0+IGYgaWR4IHgpKVxuXG5jbGFzcyB0eXBlIG1hdGNoX3Jlc3VsdCA9IG9iamVjdFxuICBpbmhlcml0IFtqc19zdHJpbmcgdF0ganNfYXJyYXlcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnB1dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgc3RyX2FycmF5IDogc3RyaW5nX2FycmF5IHQgLT4ganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IFVuc2FmZS5jb2VyY2VcblxubGV0IG1hdGNoX3Jlc3VsdCA6IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCAtPiBtYXRjaF9yZXN1bHQgdCA9IFVuc2FmZS5jb2VyY2VcblxuY2xhc3MgdHlwZSBkYXRlID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1RpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZURhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdmFsdWVPZiA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEhvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDSG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZXpvbmVPZmZzZXQgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0Z1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0U2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ1NlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0b1VUQ1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9JU09TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSlNPTiA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRhdGVfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tb250aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2RheSA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2hvdXIgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21pbiA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX3NlYyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tcyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG5vdyA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgZGF0ZV9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RhdGVcblxubGV0IGRhdGUgOiBkYXRlX2NvbnN0ciB0ID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbm93IDogZGF0ZSB0IGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2Zyb21UaW1lVmFsdWUgOiAobnVtYmVyX3QgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tb250aCA6IChpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZGF5IDogKGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfaG91ciA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9taW4gOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX3NlYyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21zIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9XG4gIGRhdGVfY29uc3RyXG5cbmNsYXNzIHR5cGUgbWF0aCA9IG9iamVjdFxuICBtZXRob2QgX0UgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjEwIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMkUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cxMEUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QSSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQxXzJfIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFicyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYWNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbjIgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNlaWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZXhwIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBmbG9vciA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbG9nIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHBvdyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcmFuZG9tIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByb3VuZCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzcXJ0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IG1hdGggPSBVbnNhZmUuZ2xvYmFsIyMuX01hdGhcblxuY2xhc3MgdHlwZSBlcnJvciA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhY2sgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgZXJyb3JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9FcnJvclxuXG5tb2R1bGUgSnNfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvcl90ID0gZXJyb3IgdFxuXG4gIGluY2x1ZGUgSnNvb19ydW50aW1lLkVycm9yXG5cbiAgZXh0ZXJuYWwgb2ZfZXJyb3IgOiBlcnJvcl90IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IGVycm9yX3QgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IG5hbWUgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5uYW1lXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5tZXNzYWdlXG5cbiAgbGV0IHN0YWNrIChlIDogdCkgOiBzdHJpbmcgb3B0aW9uID1cbiAgICBPcHQudG9fb3B0aW9uIChPcHQubWFwICh0b19lcnJvciBlKSMjLnN0YWNrIHRvX3N0cmluZylcblxuICBsZXQgdG9fc3RyaW5nIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyN0b1N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWdpYyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yIHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdiKSBlcSA9IEVxIDogKCdhLCAnYSkgZXFcblxuICBsZXQgKGVxIDogKGVycm9yIHQsIEpzX2Vycm9yLnQpIGVxKSA9IE9iai5tYWdpYyBFcVxuXG4gIGxldCBtID1cbiAgICBtYXRjaCBlcSB3aXRoXG4gICAgfCBFcSAtPlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIGV4Y2VwdGlvbiBFcnJvciA9IEpzX2Vycm9yLkV4blxuICAgICAgICBlbmQgOiBUKVxuXG4gIG1vZHVsZSBFcnJvciA9ICh2YWwgbSA6IFQpXG5lbmRcblxuaW5jbHVkZSBNYWdpYy5FcnJvclxuXG5sZXQgcmFpc2VfanNfZXJyb3IgZSA9IEpzX2Vycm9yLnJhaXNlXyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IHN0cmluZ19vZl9lcnJvciBlID0gSnNfZXJyb3IudG9fc3RyaW5nIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgZXhuX3dpdGhfanNfYmFja3RyYWNlID0gSnNfZXJyb3IuYXR0YWNoX2pzX2JhY2t0cmFjZVxuXG5leHRlcm5hbCBqc19lcnJvcl9vZl9leG4gOiBleG4gLT4gZXJyb3IgdCBvcHQgPSBcImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXCJcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBfSlNPTiA6IGpzb24gdCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgZGVjb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGRlY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCB1bmVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy51bmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxuZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIHRvX2Jvb2wgOiBib29sIHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiAnYSBqc19hcnJheSB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG5leHRlcm5hbCB0b19hcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG5leHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbmV4dGVybmFsIGZsb2F0IDogZmxvYXQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogbnVtYmVyX3QgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiBudW1iZXIgdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogbnVtYmVyIHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBpbnQzMiA6IGludDMyIC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG5leHRlcm5hbCB0b19pbnQzMiA6IG51bWJlcl90IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuZXh0ZXJuYWwgbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogbnVtYmVyX3QgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHR5cGVvZiA6IF8gdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG5leHRlcm5hbCBpbnN0YW5jZW9mIDogXyB0IC0+IF8gY29uc3RyIC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbmxldCBpc05hTiAoaSA6ICdhKSA6IGJvb2wgPVxuICB0b19ib29sIChVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmlzTmFOIFt8IFVuc2FmZS5pbmplY3QgaSB8XSlcblxubGV0IHBhcnNlSW50IChzIDoganNfc3RyaW5nIHQpIDogaW50ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlSW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUludFwiIGVsc2Ugc1xuXG5sZXQgcGFyc2VGbG9hdCAocyA6IGpzX3N0cmluZyB0KSA6IG51bWJlcl90ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlRmxvYXQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlRmxvYXRcIiBlbHNlIHNcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgICAgfCBKc19lcnJvci5FeG4gZSAtPiBTb21lIChKc19lcnJvci50b19zdHJpbmcgZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBlIC0+XG4gICAgICBsZXQgZSA6IDwgLi4gPiB0ID0gT2JqLm1hZ2ljIGUgaW5cbiAgICAgIGlmIGluc3RhbmNlb2YgZSBhcnJheV9jb25zdHJ1Y3RvciB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19zdHJpbmcgZSMjdG9TdHJpbmcpKVxuXG5sZXQgZXhwb3J0X2pzIChmaWVsZCA6IGpzX3N0cmluZyB0KSB4ID1cbiAgVW5zYWZlLnNldFxuICAgIChVbnNhZmUucHVyZV9qc19leHByIFwianNvb19leHBvcnRzXCIpXG4gICAgZmllbGRcbiAgICAoaWYgU3RyaW5nLmVxdWFsIChKcy50b19zdHJpbmcgKHR5cGVvZiAoT2JqLm1hZ2ljIHgpKSkgXCJmdW5jdGlvblwiXG4gICAgICAgICgqIGZ1bmN0aW9uIHdpdGggYXJpdHkvbGVuZ3RoIGVxdWFsIHRvIHplcm8gYXJlIGFscmVhZHkgd3JhcHBlZCAqKVxuICAgICAgICAmJiBVbnNhZmUuZ2V0IChPYmoubWFnaWMgeCkgKEpzLnN0cmluZyBcImxlbmd0aFwiKSA+IDBcbiAgICAgdGhlbiBPYmoubWFnaWMgKHdyYXBfY2FsbGJhY2sgKE9iai5tYWdpYyB4KSlcbiAgICAgZWxzZSB4KVxuXG5sZXQgZXhwb3J0IGZpZWxkIHggPSBleHBvcnRfanMgKHN0cmluZyBmaWVsZCkgeFxuXG5sZXQgZXhwb3J0X2FsbCBvYmogPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG9iaiBpblxuICBrZXlzIyNmb3JFYWNoXG4gICAgKHdyYXBfY2FsbGJhY2sgKGZ1biAoa2V5IDoganNfc3RyaW5nIHQpIF8gXyAtPiBleHBvcnRfanMga2V5IChVbnNhZmUuZ2V0IG9iaiBrZXkpKSlcblxuKCoqKiopXG5cbigqIERFUFJFQ0FURUQgKilcblxudHlwZSBmbG9hdF9wcm9wID0gbnVtYmVyX3QgcHJvcFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gbm9kZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBsaXN0X29mX25vZGVMaXN0IChub2RlTGlzdCA6ICdhIG5vZGVMaXN0IHQpID1cbiAgbGV0IGxlbmd0aCA9IG5vZGVMaXN0IyMubGVuZ3RoIGluXG4gIGxldCByZWMgYWRkX2l0ZW0gYWNjIGkgPVxuICAgIGlmIGkgPCBsZW5ndGhcbiAgICB0aGVuXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChub2RlTGlzdCMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWRkX2l0ZW0gYWNjIChpICsgMSlcbiAgICAgIHwgU29tZSBlIC0+IGFkZF9pdGVtIChlIDo6IGFjYykgKGkgKyAxKVxuICAgIGVsc2UgTGlzdC5yZXYgYWNjXG4gIGluXG4gIGFkZF9pdGVtIFtdIDBcblxudHlwZSBub2RlVHlwZSA9XG4gIHwgT1RIRVJcbiAgKCogV2lsbCBub3QgaGFwcGVuICopXG4gIHwgRUxFTUVOVFxuICB8IEFUVFJJQlVURVxuICB8IFRFWFRcbiAgfCBDREFUQV9TRUNUSU9OXG4gIHwgRU5USVRZX1JFRkVSRU5DRVxuICB8IEVOVElUWVxuICB8IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05cbiAgfCBDT01NRU5UXG4gIHwgRE9DVU1FTlRcbiAgfCBET0NVTUVOVF9UWVBFXG4gIHwgRE9DVU1FTlRfRlJBR01FTlRcbiAgfCBOT1RBVElPTlxuXG5tb2R1bGUgRG9jdW1lbnRQb3NpdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICB0eXBlIG1hc2sgPSBpbnRcblxuICBsZXQgZGlzY29ubmVjdGVkID0gMHgwMVxuXG4gIGxldCBwcmVjZWRpbmcgPSAweDAyXG5cbiAgbGV0IGZvbGxvd2luZyA9IDB4MDRcblxuICBsZXQgY29udGFpbnMgPSAweDA4XG5cbiAgbGV0IGNvbnRhaW5lZF9ieSA9IDB4MTBcblxuICBsZXQgaW1wbGVtZW50YXRpb25fc3BlY2lmaWMgPSAweDIwXG5cbiAgbGV0IGhhcyB0IG1hc2sgPSB0IGxhbmQgbWFzayA9IG1hc2tcblxuICBsZXQgYWRkIHggeSA9IHggbG9yIHlcblxuICBsZXQgKCArICkgPSBhZGRcbmVuZFxuXG5jbGFzcyB0eXBlIG5vZGUgPSBvYmplY3RcbiAgbWV0aG9kIG5vZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVHlwZSA6IG5vZGVUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogbm9kZSBub2RlTGlzdCB0IHByb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydEJlZm9yZSA6IG5vZGUgdCAtPiBub2RlIHQgb3B0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgaGFzQ2hpbGROb2RlcyA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lTm9kZSA6IGJvb2wgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6IG5vZGUgdCAtPiBEb2N1bWVudFBvc2l0aW9uLnQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBOYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBQcmVmaXggOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBhcHBlbmRDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI2FwcGVuZENoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZW1vdmVDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI3JlbW92ZUNoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZXBsYWNlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCkgPVxuICBpZ25vcmUgKHAjI3JlcGxhY2VDaGlsZCAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCkpXG5cbmxldCBpbnNlcnRCZWZvcmUgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCBvcHQpID1cbiAgaWdub3JlIChwIyNpbnNlcnRCZWZvcmUgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQgb3B0KSlcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0F0dHJdIG9iamVjdHMuICopXG5jbGFzcyB0eXBlIGF0dHIgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWNpZmllZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lckVsZW1lbnQgOiBlbGVtZW50IHQgcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtOYW1lZE5vZGVNYXBdIG9iamVjdHMuICopXG5hbmQgWydub2RlXSBuYW1lZE5vZGVNYXAgPSBvYmplY3RcbiAgbWV0aG9kIGdldE5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0TmFtZWRJdGVtIDogJ25vZGUgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZU5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0VsZW1lbnRdIG9iamVjdHMuICopXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgdGFnTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlTlMgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHIgbmFtZWROb2RlTWFwIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgY2hhcmFjdGVyRGF0YSA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VianNfc3RyaW5nRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmREYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydERhdGEgOiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZURhdGEgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBjb21tZW50ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIHRleHQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnRGcmFnbWVudCA9IG5vZGVcblxuY2xhc3MgdHlwZSBbJ2VsZW1lbnRdIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiAnZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6IGRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudE5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHROb2RlIDoganNfc3RyaW5nIHQgLT4gdGV4dCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ29tbWVudCA6IGpzX3N0cmluZyB0IC0+IGNvbW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBpbXBvcnROb2RlIDogZWxlbWVudCB0IC0+IGJvb2wgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgYWRvcHROb2RlIDogZWxlbWVudCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9kZV90eXBlID1cbiAgfCBFbGVtZW50IG9mIGVsZW1lbnQgdFxuICB8IEF0dHIgb2YgYXR0ciB0XG4gIHwgVGV4dCBvZiB0ZXh0IHRcbiAgfCBPdGhlciBvZiBub2RlIHRcblxubGV0IG5vZGVUeXBlIGUgPVxuICBtYXRjaCBlIyMubm9kZVR5cGUgd2l0aFxuICB8IEVMRU1FTlQgLT4gRWxlbWVudCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IEFUVFJJQlVURSAtPiBBdHRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQ0RBVEFfU0VDVElPTiB8IFRFWFQgLT4gVGV4dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IF8gLT4gT3RoZXIgKGUgOj4gbm9kZSB0KVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGNhc3QgKGUgOiAjbm9kZSBKcy50KSB0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gdCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGVsZW1lbnQgZSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPSBjYXN0IGUgRUxFTUVOVFxuXG4gIGxldCB0ZXh0IGUgOiB0ZXh0IEpzLnQgSnMub3B0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gVEVYVCB8fCBlIyMubm9kZVR5cGUgPT0gQ0RBVEFfU0VDVElPTlxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhdHRyIGUgOiBhdHRyIEpzLnQgSnMub3B0ID0gY2FzdCBlIEFUVFJJQlVURVxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiIC0+IGJvb2wgdCkgbWV0aF9jYWxsYmFjayBvcHRcbigqKiBUaGUgdHlwZSBvZiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbnMuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXJcbiAgICAgIFsnYV0gaXMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldCBvYmplY3Q7IHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICBbJ2JdIGlzIHRoZSB0eXBlIG9mIHRoZSBldmVudCBvYmplY3QuICopXG5cbmNsYXNzIHR5cGUgWydhXSBldmVudCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICAoKiBMZWdhY3kgbWV0aG9kcyAqKVxuICBtZXRob2Qgc3JjRWxlbWVudCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiAnYiBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBKcy5udWxsXG5cbmxldCB3aW5kb3dfZXZlbnQgKCkgOiAnYSAjZXZlbnQgdCA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJldmVudFwiXG5cbigqIFRoZSBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdCBtdXN0IGJlIGNhbGxlZCBleHBsaWNpdGx5IHdoZW5cbiAgIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIuLi4gKilcbmxldCBoYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQuICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBmdWxsX2hhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLm1ldGhfY2FsbGJhY2sgKGZ1biB0aGlzIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQgKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBpbnZva2VfaGFuZGxlciAoZiA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyKSAodGhpcyA6ICdhKSAoZXZlbnQgOiAnYikgOiBib29sIHQgPVxuICBKcy5VbnNhZmUuY2FsbCBmIHRoaXMgW3wgSnMuVW5zYWZlLmluamVjdCBldmVudCB8XVxuXG5sZXQgZXZlbnRUYXJnZXQgKGUgOiAoPCAuLiA+IGFzICdhKSAjZXZlbnQgdCkgOiAnYSB0ID1cbiAgbGV0IHRhcmdldCA9XG4gICAgT3B0LmdldCBlIyMudGFyZ2V0IChmdW4gKCkgLT4gT3B0LmdldCBlIyMuc3JjRWxlbWVudCAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZCkpXG4gIGluXG4gIGlmIEpzLmluc3RhbmNlb2YgdGFyZ2V0IEpzLlVuc2FmZS5nbG9iYWwjIy5fTm9kZVxuICB0aGVuXG4gICAgKCogV29ya2Fyb3VuZCBmb3IgU2FmYXJpIGJ1ZyAqKVxuICAgIGxldCB0YXJnZXQnIDogbm9kZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZSB0YXJnZXQgaW5cbiAgICBpZiB0YXJnZXQnIyMubm9kZVR5cGUgPT0gVEVYVFxuICAgIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoT3B0LmdldCB0YXJnZXQnIyMucGFyZW50Tm9kZSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgZWxzZSB0YXJnZXRcbiAgZWxzZSB0YXJnZXRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQgbWFrZSBzID0gSnMuc3RyaW5nIHNcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gdW5pdCAtPiB1bml0XG5cbmNsYXNzIHR5cGUgZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgY2FwdHVyZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhc3NpdmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGUpIyMuYWRkRXZlbnRMaXN0ZW5lcilcbiAgdGhlblxuICAgIGxldCBldiA9IChKcy5zdHJpbmcgXCJvblwiKSMjY29uY2F0IHR5cCBpblxuICAgIGxldCBjYWxsYmFjayBlID0gSnMuVW5zYWZlLmNhbGwgKGgsIGUsIFt8fF0pIGluXG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2F0dGFjaEV2ZW50IGV2IGNhbGxiYWNrIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNkZXRhY2hFdmVudCBldiBjYWxsYmFja1xuICBlbHNlXG4gICAgbGV0IG9wdHMgOiBldmVudF9saXN0ZW5lcl9vcHRpb25zIHQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBsZXQgaXRlciB0IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBiIC0+IGYgYlxuICAgIGluXG4gICAgaXRlciBjYXB0dXJlIChmdW4gYiAtPiBvcHRzIyMuY2FwdHVyZSA6PSBiKTtcbiAgICBpdGVyIG9uY2UgKGZ1biBiIC0+IG9wdHMjIy5vbmNlIDo9IGIpO1xuICAgIGl0ZXIgcGFzc2l2ZSAoZnVuIGIgLT4gb3B0cyMjLnBhc3NpdmUgOj0gYik7XG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2FkZEV2ZW50TGlzdGVuZXIgdHlwIGggb3B0cyBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcmVtb3ZlRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzXG5cbmxldCBhZGRFdmVudExpc3RlbmVyIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwIGggY2FwdCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlIHR5cCB+Y2FwdHVyZTpjYXB0IGhcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgaWQgPSBpZCAoKVxuXG5sZXQgcHJldmVudERlZmF1bHQgZXYgPVxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5wcmV2ZW50RGVmYXVsdCAoKiBJRSBoYWNrICopXG4gIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyNwcmV2ZW50RGVmYXVsdFxuICBlbHNlIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnJldHVyblZhbHVlIDo9IEpzLmJvb2wgZmFsc2VcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID9idWJibGVzID9jYW5jZWxhYmxlID9kZXRhaWwgdHlwID1cbiAgbGV0IG9wdF9pdGVyIGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb3B0cyA9IFVuc2FmZS5vYmogW3x8XSBpblxuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmJ1YmJsZXMgOj0gYm9vbCB4KSBidWJibGVzO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmNhbmNlbGFibGUgOj0gYm9vbCB4KSBjYW5jZWxhYmxlO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmRldGFpbCA6PSBzb21lIHgpIGRldGFpbDtcbiAgbGV0IGNvbnN0ciA6XG4gICAgICAoICAgKCdhLCAnYikgI2N1c3RvbUV2ZW50IEpzLnQgRXZlbnQudHlwXG4gICAgICAgLT4gPCBkZXRhaWwgOiAnYiBvcHQgcHJvcCA+IHRcbiAgICAgICAtPiAoJ2EsICdiKSBjdXN0b21FdmVudCB0KVxuICAgICAgY29uc3RyID1cbiAgICBVbnNhZmUuZ2xvYmFsIyMuX0N1c3RvbUV2ZW50XG4gIGluXG4gIG5ldyVqcyBjb25zdHIgdHlwIG9wdHNcblxuKCogSUUgPCA5ICopXG5cbmNsYXNzIHR5cGUgc3RyaW5nTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIEpzXG5cbnR5cGUgdWludDMyID0gZmxvYXRcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlciA9IG9iamVjdFxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5lbmRcblxubGV0IGFycmF5QnVmZmVyIDogKGludCAtPiBhcnJheUJ1ZmZlciB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0FycmF5QnVmZmVyXG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXJWaWV3ID0gb2JqZWN0XG4gIG1ldGhvZCBidWZmZXIgOiBhcnJheUJ1ZmZlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZU9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gdHlwZWRBcnJheSA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBfQllURVNfUEVSX0VMRU1FTlQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRfZnJvbUFycmF5IDogJ2EganNfYXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldF9mcm9tVHlwZWRBcnJheSA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5IDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICAoKiBUaGlzIGZha2UgbWV0aG9kIGlzIG5lZWRlZCBmb3IgdHlwaW5nIHB1cnBvc2VzLlxuICAgICBXaXRob3V0IGl0LCBbJ2JdIHdvdWxkIG5vdCBiZSBjb25zdHJhaW5lZC4gKilcbiAgbWV0aG9kIF9jb250ZW50X3R5cGVfIDogJ2Igb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG50eXBlIGludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQzMkFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0NjRBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQ2NF9lbHQpIHR5cGVkQXJyYXlcblxuZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0XG4gID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbmxldCBpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21BcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2luQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21BcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2luQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgaW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9pbkJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfaW5CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgaW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9pbkJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfaW5CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9pbkJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9pbkJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgc2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID1cbiBmdW4gYSBpIHYgLT4gYXJyYXlfc2V0IChVbnNhZmUuY29lcmNlIGEpIGkgdlxuXG5sZXQgZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmxldCB1bnNhZmVfZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxuY2xhc3MgdHlwZSBkYXRhVmlldyA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBnZXRJbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyIDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyXyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyIDogaW50IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyXyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NF8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyXyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzJfIDogaW50IC0+IHVpbnQzMiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzJfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NF8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBkYXRhVmlldyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRGF0YVZpZXdcblxubGV0IGRhdGFWaWV3X2luQnVmZmVyID0gZGF0YVZpZXdcblxubW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciBKcy50ID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5IEpzLnQgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBibG9iID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBibG9iIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV93aXRoQ29udGVudFR5cGUgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IGJsb2IgdCBtZXRoXG5lbmRcblxubGV0IGJsb2JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9CbG9iXG5cbnR5cGUgJ2EgbWFrZV9ibG9iID1cbiAgP2NvbnRlbnRUeXBlOnN0cmluZyAtPiA/ZW5kaW5nczpbIGBUcmFuc3BhcmVudCB8IGBOYXRpdmUgXSAtPiAnYSAtPiBibG9iIHRcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxubGV0IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgPVxuICBsZXQgb3B0aW9ucyA9XG4gICAgZmlsdGVyX21hcFxuICAgICAgKGZ1biAobmFtZSwgdikgLT5cbiAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+IFNvbWUgKG5hbWUsIFVuc2FmZS5pbmplY3QgKHN0cmluZyB2KSkpXG4gICAgICBbIFwidHlwZVwiLCBjb250ZW50VHlwZVxuICAgICAgOyAoIFwiZW5kaW5nc1wiXG4gICAgICAgICwgbWF0Y2ggZW5kaW5ncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgYFRyYW5zcGFyZW50IC0+IFNvbWUgXCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgfCBTb21lIGBOYXRpdmUgLT4gU29tZSBcIm5hdGl2ZVwiIClcbiAgICAgIF1cbiAgaW5cbiAgbWF0Y2ggb3B0aW9ucyB3aXRoXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgbCAtPiBVbnNhZmUub2JqIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgYSA9XG4gIGxldCBvcHRpb25zID0gbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyBpblxuICBuZXclanMgYmxvYl9jb25zdHIgKGFycmF5IGEpIG9wdGlvbnNcblxubGV0IGJsb2JfZnJvbV9zdHJpbmcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIHMgPVxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgW3wgc3RyaW5nIHMgfF1cblxubGV0IGJsb2JfZnJvbV9hbnkgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGwgPVxuICBsZXQgbCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IGBhcnJheUJ1ZmZlciBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBhcnJheUJ1ZmZlclZpZXcgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpXG4gICAgICAgIHwgYGpzX3N0cmluZyBzIC0+IFVuc2FmZS5pbmplY3Qgc1xuICAgICAgICB8IGBibG9iIGIgLT4gVW5zYWZlLmluamVjdCBiKVxuICAgICAgbFxuICBpblxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgKEFycmF5Lm9mX2xpc3QgbClcblxuY2xhc3MgdHlwZSBmaWxlID0gb2JqZWN0XG4gIGluaGVyaXQgYmxvYlxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0TW9kaWZpZWREYXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGluIGZpcmVmb3ggMy4wLTMuNSBmaWxlLm5hbWUgaXMgbm90IGF2YWlsYWJsZSwgd2UgdXNlIHRoZSBub25zdGFuZGFyZCBmaWxlTmFtZSBpbnN0ZWFkICopXG5jbGFzcyB0eXBlIGZpbGVfbmFtZV9vbmx5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZU5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBmaWxlbmFtZSBmaWxlID1cbiAgbGV0IGZpbGUgOiBmaWxlX25hbWVfb25seSB0ID0gSnMuVW5zYWZlLmNvZXJjZSBmaWxlIGluXG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLm5hbWUgd2l0aFxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMuZmlsZU5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2FuJ3QgcmV0cmlldmUgZmlsZSBuYW1lOiBub3QgaW1wbGVtZW50ZWRcIlxuICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZSlcbiAgfCBTb21lIG5hbWUgLT4gbmFtZVxuXG50eXBlIGZpbGVfYW55ID0gPCA+IHRcblxubGV0IGRvY19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RvY3VtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBleHRlcm5hbCBqc29uIDogZmlsZV9hbnkgLT4gJ2EgT3B0LnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IGRvY3VtZW50IChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgZG9jX2NvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogZWxlbWVudCBkb2N1bWVudCB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBibG9iIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgYmxvYl9jb25zdHIgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiAjYmxvYiB0KSBlbHNlIEpzLm51bGxcblxuICBsZXQgc3RyaW5nIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiBlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBqc19zdHJpbmcgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXJyYXlCdWZmZXIgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdClcbiAgICBlbHNlIEpzLm51bGxcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVMaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2ZpbGVdIERvbS5ub2RlTGlzdFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvZ3Jlc3NFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgbGVuZ3RoQ29tcHV0YWJsZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvYWRlZCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvdGFsIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByb2dyZXNzRXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlbmQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgRU1QVFlcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG5jbGFzcyB0eXBlIGZpbGVSZWFkZXIgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgcmVhZEFzQXJyYXlCdWZmZXIgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNCaW5hcnlTdHJpbmcgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0IDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgOiAjYmxvYiB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNEYXRhVVJMIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXN1bHQgOiBmaWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogZmlsZUVycm9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIGluaGVyaXQgcHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBSZWFkZXJFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IGZpbGVSZWFkZXIgcHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgbG9hZHN0YXJ0ID0gRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBFdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IEV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBFdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBFdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxubGV0IGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GaWxlUmVhZGVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY2FtbF9qc19vbl9pZSA6IHVuaXQgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX29uX2llXCJcblxubGV0IG9uSUUgPSBKcy50b19ib29sIChjYW1sX2pzX29uX2llICgpKVxuXG5leHRlcm5hbCBodG1sX2VzY2FwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZXNjYXBlXCJcblxuZXh0ZXJuYWwgZGVjb2RlX2h0bWxfZW50aXRpZXMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VudGl0aWVzXCJcblxuY2xhc3MgdHlwZSBjc3NTdHlsZURlY2xhcmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBzZXRQcm9wZXJ0eSA6XG4gICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlWYWx1ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlQcmlvcml0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUHJvcGVydHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGVsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRHVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkZpbGxNb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25JdGVyYXRpb25Db3VudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uUGxheVN0YXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25UaW1pbmdGdW5jdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEF0dGFjaG1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRSZXBlYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21Db2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xsYXBzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJhZGl1cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlcldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNhcHRpb25TaWRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJJbmNyZW1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJSZXNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzRmxvYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc1RleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnNvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNwbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbXB0eUNlbGxzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250RmFtaWx5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U2l6ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250VmFyaWFudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFdlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZXR0ZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZUltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Cb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Ub3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heEhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wYWNpdHkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVPZmZzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvdyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dYIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1kgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0FmdGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtCZWZvcmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJFdmVudHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFibGVMYXlvdXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFuY2hvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dERlY29yYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRJbmRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRUcmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2ZXJ0aWNhbEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aXNpYmlsaXR5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aGl0ZVNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd29yZFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHpJbmRleCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYikgRG9tLmV2ZW50X2xpc3RlbmVyXG5cbnR5cGUgbW91c2VfYnV0dG9uID1cbiAgfCBOb19idXR0b25cbiAgfCBMZWZ0X2J1dHRvblxuICB8IE1pZGRsZV9idXR0b25cbiAgfCBSaWdodF9idXR0b25cblxudHlwZSBkZWx0YV9tb2RlID1cbiAgfCBEZWx0YV9waXhlbFxuICB8IERlbHRhX2xpbmVcbiAgfCBEZWx0YV9wYWdlXG5cbmNsYXNzIHR5cGUgZXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmV2ZW50XG5lbmRcblxuYW5kIFsnYV0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudCwgJ2FdIERvbS5jdXN0b21FdmVudFxuZW5kXG5cbmFuZCBmb2N1c0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidXR0b24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IG1vdXNlX2J1dHRvbiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcm9tRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBrZXlib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJDb2RlIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleUNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRNb2RpZmllclN0YXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qga2V5SWRlbnRpZmllciA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNld2hlZWxFdmVudCA9IG9iamVjdFxuICAoKiBBbGwgbW9kZXJuIGJyb3dzZXJzICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFNb2RlIDogZGVsdGFfbW9kZSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlU2Nyb2xsRXZlbnQgPSBvYmplY3RcbiAgKCogRmlyZWZveCAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXhpcyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSE9SSVpPTlRBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJUSUNBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCB0b3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFuZ2VkVG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiB0b3VjaCB0IG9wdGRlZiBtZXRoXG5lbmRcblxuYW5kIHRvdWNoID0gb2JqZWN0XG4gIG1ldGhvZCBpZGVudGlmaWVyIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3VibWl0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdWJtaXR0ZXIgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZHJhZ0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkYXRhVHJhbnNmZXIgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaXBib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgY2xpcGJvYXJkRGF0YSA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZGF0YVRyYW5zZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBkcm9wRWZmZWN0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlZmZlY3RBbGxvd2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR5cGVzIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZEVsZW1lbnQgOiBlbGVtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGFfYWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RHJhZ0ltYWdlIDogZWxlbWVudCB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGV2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9uY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRibGNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZWRvd24gOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNldXAgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3ZlciA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vtb3ZlIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW91dCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5cHJlc3MgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleWRvd24gOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXVwIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zY3JvbGwgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253aGVlbCA6ICgnc2VsZiB0LCBtb3VzZXdoZWVsRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnc3RhcnQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VuZCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW50ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ292ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2xlYXZlIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWcgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJvcCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25zdGFydCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmVuZCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbml0ZXJhdGlvbiA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25ydW4gOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnN0YXJ0IDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25lbmQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25nb3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb3N0cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmVudGVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJjYW5jZWwgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmRvd24gOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmxlYXZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJtb3ZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdXQgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm92ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcnVwIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNwYXRjaEV2ZW50IDogZXZlbnQgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbmFuZCBwb3BTdGF0ZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgcG9pbnRlckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBwb2ludGVySWQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFuZ2VudGlhbFByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRZIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHdpc3QgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyVHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNQcmltYXJ5IDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVybCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcmFnZUFyZWEgOiBzdG9yYWdlIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgaGFzaENoYW5nZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgb2xkVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGFuaW1hdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRyYW5zaXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHByb3BlcnR5TmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1lZGlhRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuZW5kXG5cbmFuZCBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzb3VyY2UgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG5vZGVTZWxlY3RvciA9IG9iamVjdFxuICBtZXRob2QgcXVlcnlTZWxlY3RvciA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yQWxsIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5lbmRcblxuYW5kIHRva2VuTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGFkZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdG9nZ2xlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZpZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc05hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTGlzdCA6IHRva2VuTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2VzdCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzdHlsZSA6IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0ZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0Q29udGVudCA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVyVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpZW50TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFBhcmVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcm9sbExlZnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxUb3AgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxXaWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbEhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGdldENsaWVudFJlY3RzIDogY2xpZW50UmVjdExpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA6IGNsaWVudFJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEludG9WaWV3IDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGljayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB0b3AgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpZW50UmVjdExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gY2xpZW50UmVjdCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IERvbS5ub19oYW5kbGVyXG5cbmxldCBoYW5kbGVyID0gRG9tLmhhbmRsZXJcblxubGV0IGZ1bGxfaGFuZGxlciA9IERvbS5mdWxsX2hhbmRsZXJcblxubGV0IGludm9rZV9oYW5kbGVyID0gRG9tLmludm9rZV9oYW5kbGVyXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9ICdhIERvbS5FdmVudC50eXBcblxuICBsZXQgY2xpY2sgPSBEb20uRXZlbnQubWFrZSBcImNsaWNrXCJcblxuICBsZXQgY29weSA9IERvbS5FdmVudC5tYWtlIFwiY29weVwiXG5cbiAgbGV0IGN1dCA9IERvbS5FdmVudC5tYWtlIFwiY3V0XCJcblxuICBsZXQgcGFzdGUgPSBEb20uRXZlbnQubWFrZSBcInBhc3RlXCJcblxuICBsZXQgZGJsY2xpY2sgPSBEb20uRXZlbnQubWFrZSBcImRibGNsaWNrXCJcblxuICBsZXQgbW91c2Vkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZWRvd25cIlxuXG4gIGxldCBtb3VzZXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZXVwXCJcblxuICBsZXQgbW91c2VvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW92ZXJcIlxuXG4gIGxldCBtb3VzZW1vdmUgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlbW92ZVwiXG5cbiAgbGV0IG1vdXNlb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW91dFwiXG5cbiAgbGV0IGtleXByZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlwcmVzc1wiXG5cbiAgbGV0IGtleWRvd24gPSBEb20uRXZlbnQubWFrZSBcImtleWRvd25cIlxuXG4gIGxldCBrZXl1cCA9IERvbS5FdmVudC5tYWtlIFwia2V5dXBcIlxuXG4gIGxldCBtb3VzZXdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZXdoZWVsXCJcblxuICBsZXQgd2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIndoZWVsXCJcblxuICBsZXQgX0RPTU1vdXNlU2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Nb3VzZVNjcm9sbFwiXG5cbiAgbGV0IHRvdWNoc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoc3RhcnRcIlxuXG4gIGxldCB0b3VjaG1vdmUgPSBEb20uRXZlbnQubWFrZSBcInRvdWNobW92ZVwiXG5cbiAgbGV0IHRvdWNoZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaGVuZFwiXG5cbiAgbGV0IHRvdWNoY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaGNhbmNlbFwiXG5cbiAgbGV0IGRyYWdzdGFydCA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ3N0YXJ0XCJcblxuICBsZXQgZHJhZ2VuZCA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2VuZFwiXG5cbiAgbGV0IGRyYWdlbnRlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2VudGVyXCJcblxuICBsZXQgZHJhZ292ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdvdmVyXCJcblxuICBsZXQgZHJhZ2xlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnbGVhdmVcIlxuXG4gIGxldCBkcmFnID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnXCJcblxuICBsZXQgZHJvcCA9IERvbS5FdmVudC5tYWtlIFwiZHJvcFwiXG5cbiAgbGV0IGhhc2hjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImhhc2hjaGFuZ2VcIlxuXG4gIGxldCBjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImNoYW5nZVwiXG5cbiAgbGV0IGlucHV0ID0gRG9tLkV2ZW50Lm1ha2UgXCJpbnB1dFwiXG5cbiAgbGV0IHRpbWV1cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcInRpbWV1cGRhdGVcIlxuXG4gIGxldCBzdWJtaXQgPSBEb20uRXZlbnQubWFrZSBcInN1Ym1pdFwiXG5cbiAgbGV0IHNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwic2Nyb2xsXCJcblxuICBsZXQgZm9jdXMgPSBEb20uRXZlbnQubWFrZSBcImZvY3VzXCJcblxuICBsZXQgYmx1ciA9IERvbS5FdmVudC5tYWtlIFwiYmx1clwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcInVubG9hZFwiXG5cbiAgbGV0IGJlZm9yZXVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwiYmVmb3JldW5sb2FkXCJcblxuICBsZXQgcmVzaXplID0gRG9tLkV2ZW50Lm1ha2UgXCJyZXNpemVcIlxuXG4gIGxldCBvcmllbnRhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwib3JpZW50YXRpb25jaGFuZ2VcIlxuXG4gIGxldCBwb3BzdGF0ZSA9IERvbS5FdmVudC5tYWtlIFwicG9wc3RhdGVcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBzZWxlY3QgPSBEb20uRXZlbnQubWFrZSBcInNlbGVjdFwiXG5cbiAgbGV0IG9ubGluZSA9IERvbS5FdmVudC5tYWtlIFwib25saW5lXCJcblxuICBsZXQgb2ZmbGluZSA9IERvbS5FdmVudC5tYWtlIFwib2ZmbGluZVwiXG5cbiAgbGV0IGNoZWNraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGVja2luZ1wiXG5cbiAgbGV0IG5vdXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJub3VwZGF0ZVwiXG5cbiAgbGV0IGRvd25sb2FkaW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJkb3dubG9hZGluZ1wiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IHVwZGF0ZXJlYWR5ID0gRG9tLkV2ZW50Lm1ha2UgXCJ1cGRhdGVyZWFkeVwiXG5cbiAgbGV0IGNhY2hlZCA9IERvbS5FdmVudC5tYWtlIFwiY2FjaGVkXCJcblxuICBsZXQgb2Jzb2xldGUgPSBEb20uRXZlbnQubWFrZSBcIm9ic29sZXRlXCJcblxuICBsZXQgZG9tQ29udGVudExvYWRlZCA9IERvbS5FdmVudC5tYWtlIFwiRE9NQ29udGVudExvYWRlZFwiXG5cbiAgbGV0IGFuaW1hdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25zdGFydFwiXG5cbiAgbGV0IGFuaW1hdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uZW5kXCJcblxuICBsZXQgYW5pbWF0aW9uaXRlcmF0aW9uID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25pdGVyYXRpb25cIlxuXG4gIGxldCBhbmltYXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmNhbmNlbFwiXG5cbiAgbGV0IHRyYW5zaXRpb25ydW4gPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25ydW5cIlxuXG4gIGxldCB0cmFuc2l0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25zdGFydFwiXG5cbiAgbGV0IHRyYW5zaXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25lbmRcIlxuXG4gIGxldCB0cmFuc2l0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uY2FuY2VsXCJcblxuICBsZXQgY2FucGxheSA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheVwiXG5cbiAgbGV0IGNhbnBsYXl0aHJvdWdoID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5dGhyb3VnaFwiXG5cbiAgbGV0IGR1cmF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJkdXJhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IGVtcHRpZWQgPSBEb20uRXZlbnQubWFrZSBcImVtcHRpZWRcIlxuXG4gIGxldCBlbmRlZCA9IERvbS5FdmVudC5tYWtlIFwiZW5kZWRcIlxuXG4gIGxldCBnb3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwiZ290cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBsb2FkZWRkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRkYXRhXCJcblxuICBsZXQgbG9hZGVkbWV0YWRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZG1ldGFkYXRhXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBsb3N0cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IG1lc3NhZ2UgPSBEb20uRXZlbnQubWFrZSBcIm1lc3NhZ2VcIlxuXG4gIGxldCBwYXVzZSA9IERvbS5FdmVudC5tYWtlIFwicGF1c2VcIlxuXG4gIGxldCBwbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5XCJcblxuICBsZXQgcGxheWluZyA9IERvbS5FdmVudC5tYWtlIFwicGxheWluZ1wiXG5cbiAgbGV0IHBvaW50ZXJlbnRlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmVudGVyXCJcblxuICBsZXQgcG9pbnRlcmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmNhbmNlbFwiXG5cbiAgbGV0IHBvaW50ZXJkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZG93blwiXG5cbiAgbGV0IHBvaW50ZXJsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmxlYXZlXCJcblxuICBsZXQgcG9pbnRlcm1vdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJtb3ZlXCJcblxuICBsZXQgcG9pbnRlcm91dCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm91dFwiXG5cbiAgbGV0IHBvaW50ZXJvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3ZlclwiXG5cbiAgbGV0IHBvaW50ZXJ1cCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcnVwXCJcblxuICBsZXQgcmF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmF0ZWNoYW5nZVwiXG5cbiAgbGV0IHNlZWtlZCA9IERvbS5FdmVudC5tYWtlIFwic2Vla2VkXCJcblxuICBsZXQgc2Vla2luZyA9IERvbS5FdmVudC5tYWtlIFwic2Vla2luZ1wiXG5cbiAgbGV0IHN0YWxsZWQgPSBEb20uRXZlbnQubWFrZSBcInN0YWxsZWRcIlxuXG4gIGxldCBzdXNwZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJzdXNwZW5kXCJcblxuICBsZXQgdm9sdW1lY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJ2b2x1bWVjaGFuZ2VcIlxuXG4gIGxldCB3YWl0aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJ3YWl0aW5nXCJcblxuICBsZXQgbWFrZSA9IERvbS5FdmVudC5tYWtlXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IERvbS5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgPSBEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyID0gRG9tLnJlbW92ZUV2ZW50TGlzdGVuZXJcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID0gRG9tLmNyZWF0ZUN1c3RvbUV2ZW50XG5cbmNsYXNzIHR5cGUgWydub2RlXSBjb2xsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgaHRtbEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsaW5rRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcm9zc29yaWdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1ldGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodHRwRXF1aXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjaGVtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJhc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYm9keUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZm9ybUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGVsZW1lbnRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHRDaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVuY3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9tZXRob2QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VibWl0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc2V0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uc3VibWl0IDogKCdzZWxmIHQsIHN1Ym1pdEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRHcm91cEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbGFiZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgb3B0R3JvdXBFbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRTZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNlbGVjdEVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3B0aW9ucyA6IG9wdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGFkZCA6ICNvcHRHcm91cEVsZW1lbnQgdCAtPiAjb3B0R3JvdXBFbGVtZW50IHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnB1dEVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0Q2hlY2tlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoZWNrZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1heExlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkVuZCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG9uc2VsZWN0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGV4dEFyZWFFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xzIDogaW50IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkVuZCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2VsZWN0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYnV0dG9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGFiZWxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0bWxGb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmaWVsZFNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsZWdlbmRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB1TGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgb0xpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBsaUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZGl2RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBwYXJhZ3JhcGhFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRpbmdFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHF1b3RlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByZUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgYnJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBtb2RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRlVGltZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFuY2hvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb3dubG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW1hZ2VFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGlzTWFwIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsV2lkdGggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF0dXJhbEhlaWdodCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb21wbGV0ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFyY2hpdmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVCYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVjbGFyZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhbmRieSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGFyYW1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFyZWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub0hyZWYgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtYXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhcmVhcyA6IGFyZWFFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzeW5jIDogYm9vbCB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGVtYmVkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2VsbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNlbGxJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFiYnIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBheGlzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbFNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWFkZXJzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dTcGFuIDogaW50IHByb3BcblxuICBtZXRob2Qgc2NvcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlUm93RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgcm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWN0aW9uUm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjZWxscyA6IHRhYmxlQ2VsbEVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRDZWxsIDogaW50IC0+IHRhYmxlQ2VsbEVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNlbGwgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVTZWN0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2FwdGlvbkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgdGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0Rm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdEJvZGllcyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmcmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcnVsZXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1bW1hcnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVUSGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRIZWFkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEZvb3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNhcHRpb24gOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGltZVJhbmdlcyA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBlbmRfIDogaW50IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG50eXBlIG5ldHdvcmtTdGF0ZSA9XG4gIHwgTkVUV09SS19FTVBUWVxuICB8IE5FVFdPUktfSURMRVxuICB8IE5FVFdPUktfTE9BRElOR1xuICB8IE5FVFdPUktfTk9fU09VUkNFXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgSEFWRV9OT1RISU5HXG4gIHwgSEFWRV9NRVRBREFUQVxuICB8IEhBVkVfQ1VSUkVOVF9EQVRBXG4gIHwgSEFWRV9GVVRVUkVfREFUQVxuICB8IEhBVkVfRU5PVUdIX0RBVEFcblxuKCogaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3AgKilcbigqIG9ubHkgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IGFsbCBicm93c2VyLiAoSUU5KykgKilcbmNsYXNzIHR5cGUgbWVkaWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYW5QbGF5VHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgbG9hZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwbGF5IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGF1dG9wbGF5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYnVmZmVyZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250cm9scyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTcmMgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUaW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb29wIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWFncm91cCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbXV0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlIDogbmV0d29ya1N0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF1c2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxheWJhY2tSYXRlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBwbGF5ZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVsb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2FibGUgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVraW5nIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2b2x1bWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheXRocm91Z2ggOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmR1cmF0aW9uY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbXB0aWVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbmRlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkbWV0YWRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGF1c2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXlpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnJhdGVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2luZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3RhbGxlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3VzcGVuZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udm9sdW1lY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253YWl0aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGF1ZGlvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbmNsYXNzIHR5cGUgdmlkZW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxudHlwZSBjb250ZXh0ID0ganNfc3RyaW5nIHRcblxubGV0IF8yZF8gPSBKcy5zdHJpbmcgXCIyZFwiXG5cbnR5cGUgY2FudmFzUGF0dGVyblxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgdG9EYXRhVVJMIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGVfY29tcHJlc3Npb24gOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA9IG9iamVjdFxuICBtZXRob2QgY2FudmFzIDogY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2F2ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXN0b3JlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2xvYmFsQWxwaGEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZUxpbmVhckdyYWRpZW50IDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFkaWFsR3JhZGllbnQgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuIDogaW1hZ2VFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbVZpZGVvIDogdmlkZW9FbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsaW5lQ2FwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSm9pbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWl0ZXJMaW1pdCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Qmx1ciA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlZ2luUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZVBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgbW92ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBxdWFkcmF0aWNDdXJ2ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlemllckN1cnZlVG8gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmNUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyYyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbGxpcHNlIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGlwIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzUG9pbnRJblBhdGggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3Rm9jdXNSaW5nIDogI2VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QmFzZWxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGxUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxUZXh0X3dpdGhXaWR0aCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHRfd2l0aFdpZHRoIDpcbiAgICBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWVhc3VyZVRleHQgOiBqc19zdHJpbmcgdCAtPiB0ZXh0TWV0cmljcyB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlIDogaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV93aXRoU2l6ZSA6XG4gICAgaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsIDpcbiAgICAgICBpbWFnZUVsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzV2l0aFNpemUgOlxuICAgIGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tQ2FudmFzIDpcbiAgICAgICBjYW52YXNFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoVmlkZW8gOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFNpemUgOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21WaWRlbyA6XG4gICAgICAgdmlkZW9FbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUltYWdlRGF0YSA6IGludCAtPiBpbnQgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbWFnZURhdGEgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIHB1dEltYWdlRGF0YSA6IGltYWdlRGF0YSB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNHcmFkaWVudCA9IG9iamVjdFxuICBtZXRob2QgYWRkQ29sb3JTdG9wIDogbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIHRleHRNZXRyaWNzID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgaW1hZ2VEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBjYW52YXNQaXhlbEFycmF5IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjYW52YXNQaXhlbEFycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4dGVybmFsIHBpeGVsX2dldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2pzX2dldFwiXG5cbmV4dGVybmFsIHBpeGVsX3NldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuY2xhc3MgdHlwZSByYW5nZSA9IG9iamVjdFxuICBtZXRob2QgY29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0U3RhcnQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGVDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZUNvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGV4dHJhY3RDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDb250ZW50cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Vycm91bmRDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuKCoqIEluZm9ybWF0aW9uIG9uIGN1cnJlbnQgc2VsZWN0aW9uICopXG5jbGFzcyB0eXBlIHNlbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgYW5jaG9yTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c05vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0NvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlQ291bnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSYW5nZUF0IDogaW50IC0+IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXh0ZW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vZGlmeSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvU3RhcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb0VuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RBbGxDaGlsZHJlbiA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFkZFJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBbGxSYW5nZXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJvbURvY3VtZW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zTm9kZSA6IERvbS5ub2RlIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkIDogaGVhZEVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGJvZHkgOiBib2R5RWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogaHRtbEVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGltYWdlcyA6IGltYWdlRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsZXRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5rcyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9ybXMgOiBmb3JtRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlc2lnbk1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdyaXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4ZWNDb21tYW5kIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5TmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhY3RpdmVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpZGRlbiA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxudHlwZSBpbnRlcnZhbF9pZFxuXG50eXBlIHRpbWVvdXRfaWRcblxudHlwZSBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuXG5jbGFzcyB0eXBlIGxvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvcnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhdGhuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWFyY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhhc2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzc2lnbiA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbG9hZCA6IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBsb2NhdGlvbl9vcmlnaW4gKGxvYyA6IGxvY2F0aW9uIHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBsb2MjIy5vcmlnaW5cbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcHJvdG9jb2wgPSBsb2MjIy5wcm90b2NvbCBpblxuICAgICAgbGV0IGhvc3RuYW1lID0gbG9jIyMuaG9zdG5hbWUgaW5cbiAgICAgIGxldCBwb3J0ID0gbG9jIyMucG9ydCBpblxuICAgICAgaWYgcHJvdG9jb2wjIy5sZW5ndGggPSAwICYmIGhvc3RuYW1lIyMubGVuZ3RoID0gMFxuICAgICAgdGhlbiBKcy5zdHJpbmcgXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgb3JpZ2luID0gcHJvdG9jb2wjI2NvbmNhdF8yIChKcy5zdHJpbmcgXCIvL1wiKSBob3N0bmFtZSBpblxuICAgICAgICBpZiBwb3J0IyMubGVuZ3RoID4gMCB0aGVuIG9yaWdpbiMjY29uY2F0XzIgKEpzLnN0cmluZyBcIjpcIikgbG9jIyMucG9ydCBlbHNlIG9yaWdpbilcbiAgICAoZnVuIG8gLT4gbylcblxuY2xhc3MgdHlwZSBoaXN0b3J5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnbyA6IGludCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJhY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yd2FyZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdW5kb01hbmFnZXIgPSBvYmplY3QgZW5kXG5cbmNsYXNzIHR5cGUgbmF2aWdhdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBDb2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwVmVyc2lvbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llRW5hYmxlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uTGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXRmb3JtIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2ZW5kb3IgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJBZ2VudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyTGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhUb3VjaFBvaW50cyA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JlZW4gPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsSGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFwcGxpY2F0aW9uQ2FjaGUgPSBvYmplY3RcbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwZGF0ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzd2FwQ2FjaGUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25jaGVja2luZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ub3VwZGF0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25kb3dubG9hZGluZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251cGRhdGVyZWFkeSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jYWNoZWQgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub2Jzb2xldGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmNsYXNzIHR5cGUgX1VSTCA9IG9iamVjdFxuICBtZXRob2QgY3JlYXRlT2JqZWN0VVJMIDogI0ZpbGUuYmxvYiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmV2b2tlT2JqZWN0VVJMIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB3aW5kb3cgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IGRvY3VtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsaWNhdGlvbkNhY2hlIDogYXBwbGljYXRpb25DYWNoZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlzdG9yeSA6IGhpc3RvcnkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVuZG9NYW5hZ2VyIDogdW5kb01hbmFnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdmlnYXRvciA6IG5hdmlnYXRvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U2VsZWN0aW9uIDogc2VsZWN0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9wIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsQnkgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXNzaW9uU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhbFN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9wIDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnQgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyYW1lRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB3aW5kb3cgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBhbGVydCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb25maXJtIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcHJvbXB0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcHJpbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50ZXJ2YWwgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiBpbnRlcnZhbF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFySW50ZXJ2YWwgOiBpbnRlcnZhbF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZW91dCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IHRpbWVvdXRfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclRpbWVvdXQgOiB0aW1lb3V0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOlxuICAgIChudW1iZXJfdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNhbmNlbEFuaW1hdGlvbkZyYW1lIDogYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcmVlbiA6IHNjcmVlbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZSA6ICNlbGVtZW50IHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZV9wc2V1ZG9FbHQgOlxuICAgICNlbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgYXRvYiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYnRvYSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgb25sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmVmb3JldW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnJlc2l6ZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9yaWVudGF0aW9uY2hhbmdlIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucG9wc3RhdGUgOiAod2luZG93IHQsIHBvcFN0YXRlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmhhc2hjaGFuZ2UgOiAod2luZG93IHQsIGhhc2hDaGFuZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub25saW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9mZmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBfVVJMIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZXZpY2VQaXhlbFJhdGlvIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aW5kb3cgOiB3aW5kb3cgdCA9IEpzLlVuc2FmZS5nbG9iYWxcblxuKCogVGhlIHRvcGxldmVsIG9iamVjdCAqKVxuXG5sZXQgZG9jdW1lbnQgPSB3aW5kb3cjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2V4biBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcImdldEVsZW1lbnRCeUlkX2V4bjogJVMgbm90IGZvdW5kXCIgaWQpKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9vcHQgaWQgPSBKcy5PcHQudG9fb3B0aW9uIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9jb2VyY2UgaWQgY29lcmNlID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAoZnVuIGUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNlIGUpKVxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBmcmFtZVNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9SZXNpemUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaUZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50V2luZG93IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKioqKVxuXG4oKlhYWCBTaG91bGQgcHJvdmlkZSBjcmVhdGlvbiBmdW5jdGlvbnMgYSBsYSBsYWJsZ3RrLi4uICopXG5cbmxldCBvcHRfaXRlciB4IGYgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB2IC0+IGYgdlxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUVsZW1lbnRTeW50YXggPSByZWYgYFVua25vd25cblxubGV0IHJlYyB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHQgPVxuICBpZiBQb2x5LihfdHlwZSA9IE5vbmUpICYmIFBvbHkuKG5hbWUgPSBOb25lKVxuICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdClcbiAgZWxzZVxuICAgIG1hdGNoICFjcmVhdGVFbGVtZW50U3ludGF4IHdpdGhcbiAgICB8IGBTdGFuZGFyZCAtPlxuICAgICAgICBsZXQgcmVzID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KSBpblxuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT4gcmVzIyMuX3R5cGUgOj0gdCk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+IHJlcyMjLm5hbWUgOj0gbik7XG4gICAgICAgIHJlc1xuICAgIHwgYEV4dGVuZGVkIC0+XG4gICAgICAgIGxldCBhID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaF8yIChKcy5zdHJpbmcgXCI8XCIpIChKcy5zdHJpbmcgZWx0KSk7XG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiB0eXBlPVxcXCJcIikgKGh0bWxfZXNjYXBlIHQpIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIG5hbWU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgbikgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgaWdub3JlIChhIyNwdXNoIChKcy5zdHJpbmcgXCI+XCIpKTtcbiAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSAoZG9jIyNjcmVhdGVFbGVtZW50IChhIyNqb2luIChKcy5zdHJpbmcgXCJcIikpKVxuICAgIHwgYFVua25vd24gLT5cbiAgICAgICAgY3JlYXRlRWxlbWVudFN5bnRheCA6PVxuICAgICAgICAgIGlmIHRyeVxuICAgICAgICAgICAgICAgbGV0IGVsIDogaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAgICAgICAgICAgKGRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgXCI8aW5wdXQgbmFtZT1cXFwieFxcXCI+XCIpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIEpzLmVxdWFscyBlbCMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgXCJpbnB1dFwiKVxuICAgICAgICAgICAgICAgJiYgSnMuZXF1YWxzIGVsIyMubmFtZSAoSnMuc3RyaW5nIFwieFwiKVxuICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgIHRoZW4gYEV4dGVuZGVkXG4gICAgICAgICAgZWxzZSBgU3RhbmRhcmQ7XG4gICAgICAgIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdFxuXG5sZXQgY3JlYXRlSHRtbCBkb2MgOiBodG1sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJodG1sXCJcblxubGV0IGNyZWF0ZUhlYWQgZG9jIDogaGVhZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGVhZFwiXG5cbmxldCBjcmVhdGVMaW5rIGRvYyA6IGxpbmtFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmtcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZU1ldGEgZG9jIDogbWV0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YVwiXG5cbmxldCBjcmVhdGVCYXNlIGRvYyA6IGJhc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJhc2VcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZUJvZHkgZG9jIDogYm9keUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYm9keVwiXG5cbmxldCBjcmVhdGVGb3JtIGRvYyA6IGZvcm1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcm1cIlxuXG5sZXQgY3JlYXRlT3B0Z3JvdXAgZG9jIDogb3B0R3JvdXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGdyb3VwXCJcblxubGV0IGNyZWF0ZU9wdGlvbiBkb2MgOiBvcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGlvblwiXG5cbmxldCBjcmVhdGVTZWxlY3QgP190eXBlID9uYW1lIGRvYyA6IHNlbGVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwic2VsZWN0XCJcblxubGV0IGNyZWF0ZUlucHV0ID9fdHlwZSA/bmFtZSBkb2MgOiBpbnB1dEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiaW5wdXRcIlxuXG5sZXQgY3JlYXRlVGV4dGFyZWEgP190eXBlID9uYW1lIGRvYyA6IHRleHRBcmVhRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJ0ZXh0YXJlYVwiXG5cbmxldCBjcmVhdGVCdXR0b24gP190eXBlID9uYW1lIGRvYyA6IGJ1dHRvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiYnV0dG9uXCJcblxubGV0IGNyZWF0ZUxhYmVsIGRvYyA6IGxhYmVsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsYWJlbFwiXG5cbmxldCBjcmVhdGVGaWVsZHNldCBkb2MgOiBmaWVsZFNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmllbGRzZXRcIlxuXG5sZXQgY3JlYXRlTGVnZW5kIGRvYyA6IGxlZ2VuZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGVnZW5kXCJcblxubGV0IGNyZWF0ZVVsIGRvYyA6IHVMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1bFwiXG5cbmxldCBjcmVhdGVPbCBkb2MgOiBvTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2xcIlxuXG5sZXQgY3JlYXRlRGwgZG9jIDogZExpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRsXCJcblxubGV0IGNyZWF0ZUxpIGRvYyA6IGxpRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaVwiXG5cbmxldCBjcmVhdGVEaXYgZG9jIDogZGl2RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaXZcIlxuXG5sZXQgY3JlYXRlRW1iZWQgZG9jIDogZW1iZWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVtYmVkXCJcblxubGV0IGNyZWF0ZVAgZG9jIDogcGFyYWdyYXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwXCJcblxubGV0IGNyZWF0ZUgxIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgxXCJcblxubGV0IGNyZWF0ZUgyIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgyXCJcblxubGV0IGNyZWF0ZUgzIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgzXCJcblxubGV0IGNyZWF0ZUg0IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg0XCJcblxubGV0IGNyZWF0ZUg1IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg1XCJcblxubGV0IGNyZWF0ZUg2IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg2XCJcblxubGV0IGNyZWF0ZVEgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInFcIlxuXG5sZXQgY3JlYXRlQmxvY2txdW90ZSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmxvY2txdW90ZVwiXG5cbmxldCBjcmVhdGVQcmUgZG9jIDogcHJlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwcmVcIlxuXG5sZXQgY3JlYXRlQnIgZG9jIDogYnJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJyXCJcblxubGV0IGNyZWF0ZUhyIGRvYyA6IGhyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoclwiXG5cbmxldCBjcmVhdGVJbnMgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbnNcIlxuXG5sZXQgY3JlYXRlRGVsIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVsXCJcblxubGV0IGNyZWF0ZUEgZG9jIDogYW5jaG9yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUltZyBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1nXCJcblxubGV0IGNyZWF0ZU9iamVjdCBkb2MgOiBvYmplY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9iamVjdFwiXG5cbmxldCBjcmVhdGVQYXJhbSBkb2MgOiBwYXJhbUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGFyYW1cIlxuXG5sZXQgY3JlYXRlTWFwIGRvYyA6IG1hcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFwXCJcblxubGV0IGNyZWF0ZUFyZWEgZG9jIDogYXJlYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXJlYVwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlVGFibGUgZG9jIDogdGFibGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRhYmxlXCJcblxubGV0IGNyZWF0ZUNhcHRpb24gZG9jIDogdGFibGVDYXB0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYXB0aW9uXCJcblxubGV0IGNyZWF0ZUNvbCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sXCJcblxubGV0IGNyZWF0ZUNvbGdyb3VwIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xncm91cFwiXG5cbmxldCBjcmVhdGVUaGVhZCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoZWFkXCJcblxubGV0IGNyZWF0ZVRmb290IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGZvb3RcIlxuXG5sZXQgY3JlYXRlVGJvZHkgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Ym9keVwiXG5cbmxldCBjcmVhdGVUciBkb2MgOiB0YWJsZVJvd0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJcIlxuXG5sZXQgY3JlYXRlVGggZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aFwiXG5cbmxldCBjcmVhdGVUZCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRkXCJcblxubGV0IGNyZWF0ZVN1YiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1YlwiXG5cbmxldCBjcmVhdGVTdXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdXBcIlxuXG5sZXQgY3JlYXRlU3BhbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNwYW5cIlxuXG5sZXQgY3JlYXRlVHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ0dFwiXG5cbmxldCBjcmVhdGVJIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiaVwiXG5cbmxldCBjcmVhdGVCIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYlwiXG5cbmxldCBjcmVhdGVCaWcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiaWdcIlxuXG5sZXQgY3JlYXRlU21hbGwgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzbWFsbFwiXG5cbmxldCBjcmVhdGVFbSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImVtXCJcblxubGV0IGNyZWF0ZVN0cm9uZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN0cm9uZ1wiXG5cbmxldCBjcmVhdGVDaXRlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY2l0ZVwiXG5cbmxldCBjcmVhdGVEZm4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZm5cIlxuXG5sZXQgY3JlYXRlQ29kZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNvZGVcIlxuXG5sZXQgY3JlYXRlU2FtcCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNhbXBcIlxuXG5sZXQgY3JlYXRlS2JkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwia2JkXCJcblxubGV0IGNyZWF0ZVZhciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInZhclwiXG5cbmxldCBjcmVhdGVBYmJyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWJiclwiXG5cbmxldCBjcmVhdGVEZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRkXCJcblxubGV0IGNyZWF0ZUR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZHRcIlxuXG5sZXQgY3JlYXRlTm9zY3JpcHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJub3NjcmlwdFwiXG5cbmxldCBjcmVhdGVBZGRyZXNzIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWRkcmVzc1wiXG5cbmxldCBjcmVhdGVGcmFtZXNldCBkb2MgOiBmcmFtZVNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVzZXRcIlxuXG5sZXQgY3JlYXRlRnJhbWUgZG9jIDogZnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lXCJcblxubGV0IGNyZWF0ZUlmcmFtZSBkb2MgOiBpRnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImlmcmFtZVwiXG5cbmxldCBjcmVhdGVBdWRpbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXVkaW9cIlxuXG5sZXQgY3JlYXRlVmlkZW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZGVvXCJcblxuZXhjZXB0aW9uIENhbnZhc19ub3RfYXZhaWxhYmxlXG5cbmxldCBjcmVhdGVDYW52YXMgZG9jIDogY2FudmFzRWxlbWVudCB0ID1cbiAgbGV0IGMgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhbnZhc1wiIGluXG4gIGlmIG5vdCAoT3B0LnRlc3QgYyMjLmdldENvbnRleHQpIHRoZW4gcmFpc2UgQ2FudmFzX25vdF9hdmFpbGFibGU7XG4gIGNcblxubGV0IGh0bWxfZWxlbWVudCA6IGh0bWxFbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9IVE1MRWxlbWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgOiAjRG9tLm5vZGUgSnMudCAtPiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgaHRtbF9lbGVtZW50KSlcbiAgICB0aGVuXG4gICAgICAoKiBpZSA8IDkgZG9lcyBub3QgaGF2ZSBIVE1MRWxlbWVudDogd2UgaGF2ZSB0byBjaGVhdCB0byBjaGVja1xuICAgICAgICAgdGhhdCBzb21ldGhpbmcgaXMgYW4gaHRtbCBlbGVtZW50ICopXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIChKcy5VbnNhZmUuY29lcmNlIGUpIyMuaW5uZXJIVE1MKSlcbiAgICAgIHRoZW4gSnMubnVsbFxuICAgICAgZWxzZSBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIEpzLmluc3RhbmNlb2YgZSBodG1sX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgdGFnIChlIDogI2VsZW1lbnQgdCkgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA9IHVuc2FmZUNvZXJjZSBcImFcIiBlXG5cbiAgbGV0IGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcImFyZWFcIiBlXG5cbiAgbGV0IGJhc2UgZSA9IHVuc2FmZUNvZXJjZSBcImJhc2VcIiBlXG5cbiAgbGV0IGJsb2NrcXVvdGUgZSA9IHVuc2FmZUNvZXJjZSBcImJsb2NrcXVvdGVcIiBlXG5cbiAgbGV0IGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcImJvZHlcIiBlXG5cbiAgbGV0IGJyIGUgPSB1bnNhZmVDb2VyY2UgXCJiclwiIGVcblxuICBsZXQgYnV0dG9uIGUgPSB1bnNhZmVDb2VyY2UgXCJidXR0b25cIiBlXG5cbiAgbGV0IGNhbnZhcyBlID0gdW5zYWZlQ29lcmNlIFwiY2FudmFzXCIgZVxuXG4gIGxldCBjYXB0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJjYXB0aW9uXCIgZVxuXG4gIGxldCBjb2wgZSA9IHVuc2FmZUNvZXJjZSBcImNvbFwiIGVcblxuICBsZXQgY29sZ3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcImNvbGdyb3VwXCIgZVxuXG4gIGxldCBkZWwgZSA9IHVuc2FmZUNvZXJjZSBcImRlbFwiIGVcblxuICBsZXQgZGl2IGUgPSB1bnNhZmVDb2VyY2UgXCJkaXZcIiBlXG5cbiAgbGV0IGRsIGUgPSB1bnNhZmVDb2VyY2UgXCJkbFwiIGVcblxuICBsZXQgZmllbGRzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZpZWxkc2V0XCIgZVxuXG4gIGxldCBlbWJlZCBlID0gdW5zYWZlQ29lcmNlIFwiZW1iZWRcIiBlXG5cbiAgbGV0IGZvcm0gZSA9IHVuc2FmZUNvZXJjZSBcImZvcm1cIiBlXG5cbiAgbGV0IGZyYW1lc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZXNldFwiIGVcblxuICBsZXQgZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lXCIgZVxuXG4gIGxldCBoMSBlID0gdW5zYWZlQ29lcmNlIFwiaDFcIiBlXG5cbiAgbGV0IGgyIGUgPSB1bnNhZmVDb2VyY2UgXCJoMlwiIGVcblxuICBsZXQgaDMgZSA9IHVuc2FmZUNvZXJjZSBcImgzXCIgZVxuXG4gIGxldCBoNCBlID0gdW5zYWZlQ29lcmNlIFwiaDRcIiBlXG5cbiAgbGV0IGg1IGUgPSB1bnNhZmVDb2VyY2UgXCJoNVwiIGVcblxuICBsZXQgaDYgZSA9IHVuc2FmZUNvZXJjZSBcImg2XCIgZVxuXG4gIGxldCBoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJoZWFkXCIgZVxuXG4gIGxldCBociBlID0gdW5zYWZlQ29lcmNlIFwiaHJcIiBlXG5cbiAgbGV0IGh0bWwgZSA9IHVuc2FmZUNvZXJjZSBcImh0bWxcIiBlXG5cbiAgbGV0IGlmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiaWZyYW1lXCIgZVxuXG4gIGxldCBpbWcgZSA9IHVuc2FmZUNvZXJjZSBcImltZ1wiIGVcblxuICBsZXQgaW5wdXQgZSA9IHVuc2FmZUNvZXJjZSBcImlucHV0XCIgZVxuXG4gIGxldCBpbnMgZSA9IHVuc2FmZUNvZXJjZSBcImluc1wiIGVcblxuICBsZXQgbGFiZWwgZSA9IHVuc2FmZUNvZXJjZSBcImxhYmVsXCIgZVxuXG4gIGxldCBsZWdlbmQgZSA9IHVuc2FmZUNvZXJjZSBcImxlZ2VuZFwiIGVcblxuICBsZXQgbGkgZSA9IHVuc2FmZUNvZXJjZSBcImxpXCIgZVxuXG4gIGxldCBsaW5rIGUgPSB1bnNhZmVDb2VyY2UgXCJsaW5rXCIgZVxuXG4gIGxldCBtYXAgZSA9IHVuc2FmZUNvZXJjZSBcIm1hcFwiIGVcblxuICBsZXQgbWV0YSBlID0gdW5zYWZlQ29lcmNlIFwibWV0YVwiIGVcblxuICBsZXQgX29iamVjdCBlID0gdW5zYWZlQ29lcmNlIFwib2JqZWN0XCIgZVxuXG4gIGxldCBvbCBlID0gdW5zYWZlQ29lcmNlIFwib2xcIiBlXG5cbiAgbGV0IG9wdGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRncm91cFwiIGVcblxuICBsZXQgb3B0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRpb25cIiBlXG5cbiAgbGV0IHAgZSA9IHVuc2FmZUNvZXJjZSBcInBcIiBlXG5cbiAgbGV0IHBhcmFtIGUgPSB1bnNhZmVDb2VyY2UgXCJwYXJhbVwiIGVcblxuICBsZXQgcHJlIGUgPSB1bnNhZmVDb2VyY2UgXCJwcmVcIiBlXG5cbiAgbGV0IHEgZSA9IHVuc2FmZUNvZXJjZSBcInFcIiBlXG5cbiAgbGV0IHNjcmlwdCBlID0gdW5zYWZlQ29lcmNlIFwic2NyaXB0XCIgZVxuXG4gIGxldCBzZWxlY3QgZSA9IHVuc2FmZUNvZXJjZSBcInNlbGVjdFwiIGVcblxuICBsZXQgc3R5bGUgZSA9IHVuc2FmZUNvZXJjZSBcInN0eWxlXCIgZVxuXG4gIGxldCB0YWJsZSBlID0gdW5zYWZlQ29lcmNlIFwidGFibGVcIiBlXG5cbiAgbGV0IHRib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Ym9keVwiIGVcblxuICBsZXQgdGQgZSA9IHVuc2FmZUNvZXJjZSBcInRkXCIgZVxuXG4gIGxldCB0ZXh0YXJlYSBlID0gdW5zYWZlQ29lcmNlIFwidGV4dGFyZWFcIiBlXG5cbiAgbGV0IHRmb290IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Zm9vdFwiIGVcblxuICBsZXQgdGggZSA9IHVuc2FmZUNvZXJjZSBcInRoXCIgZVxuXG4gIGxldCB0aGVhZCBlID0gdW5zYWZlQ29lcmNlIFwidGhlYWRcIiBlXG5cbiAgbGV0IHRpdGxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aXRsZVwiIGVcblxuICBsZXQgdHIgZSA9IHVuc2FmZUNvZXJjZSBcInRyXCIgZVxuXG4gIGxldCB1bCBlID0gdW5zYWZlQ29lcmNlIFwidWxcIiBlXG5cbiAgbGV0IGF1ZGlvIGUgPSB1bnNhZmVDb2VyY2UgXCJhdWRpb1wiIGVcblxuICBsZXQgdmlkZW8gZSA9IHVuc2FmZUNvZXJjZSBcInZpZGVvXCIgZVxuXG4gIGxldCB1bnNhZmVDb2VyY2VFdmVudCBjb25zdHIgKGV2IDogI2V2ZW50IHQpID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoZGVmIGNvbnN0cikgJiYgSnMuaW5zdGFuY2VvZiBldiBjb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZXYpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IG1vdXNlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlRXZlbnQgZXZcblxuICBsZXQga2V5Ym9hcmRFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fS2V5Ym9hcmRFdmVudCBldlxuXG4gIGxldCB3aGVlbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9XaGVlbEV2ZW50IGV2XG5cbiAgbGV0IG1vdXNlU2Nyb2xsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlU2Nyb2xsRXZlbnQgZXZcblxuICBsZXQgcG9wU3RhdGVFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fUG9wU3RhdGVFdmVudCBldlxuXG4gIGxldCBtZXNzYWdlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01lc3NhZ2VFdmVudCBldlxuZW5kXG5cbigqKioqKVxuXG5sZXQgZXZlbnRUYXJnZXQgPSBEb20uZXZlbnRUYXJnZXRcblxubGV0IGV2ZW50UmVsYXRlZFRhcmdldCAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmdldCBlIyMucmVsYXRlZFRhcmdldCAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBKcy50b19zdHJpbmcgZSMjLl90eXBlIHdpdGhcbiAgICAgIHwgXCJtb3VzZW92ZXJcIiAtPiBPcHRkZWYuZ2V0IGUjIy5mcm9tRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXCJtb3VzZW91dFwiIC0+IE9wdGRlZi5nZXQgZSMjLnRvRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXyAtPiBKcy5udWxsKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIGUjIy5jbGllbnRYICsgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdFxuICAsIGUjIy5jbGllbnRZICsgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3AgKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5wYWdlWFxuICAgIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKVxuICAgIChmdW4geCAtPiBPcHRkZWYuY2FzZSBlIyMucGFnZVkgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpIChmdW4geSAtPiB4LCB5KSlcblxubGV0IGVsZW1lbnRDbGllbnRQb3NpdGlvbiAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHIgPSBlIyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMubGVmdCkgLSBib2R5IyMuY2xpZW50TGVmdCAtIGh0bWwjIy5jbGllbnRMZWZ0XG4gICwgdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy50b3ApIC0gYm9keSMjLmNsaWVudFRvcCAtIGh0bWwjIy5jbGllbnRUb3AgKVxuXG5sZXQgZ2V0RG9jdW1lbnRTY3JvbGwgKCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnQsIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wXG5cbmxldCBidXR0b25QcmVzc2VkIChldiA6ICNtb3VzZUV2ZW50IEpzLnQpID1cbiAgSnMuT3B0ZGVmLmNhc2VcbiAgICBldiMjLndoaWNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggZXYjIy5idXR0b24gd2l0aFxuICAgICAgfCAxIC0+IExlZnRfYnV0dG9uXG4gICAgICB8IDIgLT4gUmlnaHRfYnV0dG9uXG4gICAgICB8IDQgLT4gTWlkZGxlX2J1dHRvblxuICAgICAgfCBfIC0+IE5vX2J1dHRvbilcbiAgICAoZnVuIHggLT4geClcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgP2NhcHR1cmVcbiAgICA/b25jZVxuICAgID9wYXNzaXZlXG4gICAgZVxuICAgIEV2ZW50LndoZWVsXG4gICAgKGhhbmRsZXIgKGZ1biAoZSA6IG1vdXNld2hlZWxFdmVudCB0KSAtPlxuICAgICAgICAgbGV0IGR4ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFYIChmdW4gKCkgLT4gMCkgLyA0MCBpblxuICAgICAgICAgbGV0IGR5ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFZIChmdW4gKCkgLT4gZSMjLndoZWVsRGVsdGEpIC8gNDAgaW5cbiAgICAgICAgIGggKGUgOj4gbW91c2VFdmVudCB0KSB+ZHggfmR5KSlcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIGUgaCBjYXB0ID1cbiAgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyB+Y2FwdHVyZTpjYXB0IGUgaFxuXG4oKioqKiopXG5cbm1vZHVsZSBLZXlib2FyZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBVbmlkZW50aWZpZWRcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IEtleUFcbiAgICB8IEtleUJcbiAgICB8IEtleUNcbiAgICB8IEtleURcbiAgICB8IEtleUVcbiAgICB8IEtleUZcbiAgICB8IEtleUdcbiAgICB8IEtleUhcbiAgICB8IEtleUlcbiAgICB8IEtleUpcbiAgICB8IEtleUtcbiAgICB8IEtleUxcbiAgICB8IEtleU1cbiAgICB8IEtleU5cbiAgICB8IEtleU9cbiAgICB8IEtleVBcbiAgICB8IEtleVFcbiAgICB8IEtleVJcbiAgICB8IEtleVNcbiAgICB8IEtleVRcbiAgICB8IEtleVVcbiAgICB8IEtleVZcbiAgICB8IEtleVdcbiAgICB8IEtleVhcbiAgICB8IEtleVlcbiAgICB8IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IERpZ2l0MFxuICAgIHwgRGlnaXQxXG4gICAgfCBEaWdpdDJcbiAgICB8IERpZ2l0M1xuICAgIHwgRGlnaXQ0XG4gICAgfCBEaWdpdDVcbiAgICB8IERpZ2l0NlxuICAgIHwgRGlnaXQ3XG4gICAgfCBEaWdpdDhcbiAgICB8IERpZ2l0OVxuICAgIHwgTWludXNcbiAgICB8IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgVGFiXG4gICAgfCBFbnRlclxuICAgIHwgU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBFc2NhcGVcbiAgICB8IEJhY2tzcGFjZVxuICAgIHwgSW5zZXJ0XG4gICAgfCBEZWxldGVcbiAgICB8IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IEJyYWNrZXRMZWZ0XG4gICAgfCBCcmFja2V0UmlnaHRcbiAgICB8IFNlbWljb2xvblxuICAgIHwgUXVvdGVcbiAgICB8IEJhY2txdW90ZVxuICAgIHwgQmFja3NsYXNoXG4gICAgfCBDb21tYVxuICAgIHwgUGVyaW9kXG4gICAgfCBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IEYxXG4gICAgfCBGMlxuICAgIHwgRjNcbiAgICB8IEY0XG4gICAgfCBGNVxuICAgIHwgRjZcbiAgICB8IEY3XG4gICAgfCBGOFxuICAgIHwgRjlcbiAgICB8IEYxMFxuICAgIHwgRjExXG4gICAgfCBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgTnVtcGFkMFxuICAgIHwgTnVtcGFkMVxuICAgIHwgTnVtcGFkMlxuICAgIHwgTnVtcGFkM1xuICAgIHwgTnVtcGFkNFxuICAgIHwgTnVtcGFkNVxuICAgIHwgTnVtcGFkNlxuICAgIHwgTnVtcGFkN1xuICAgIHwgTnVtcGFkOFxuICAgIHwgTnVtcGFkOVxuICAgIHwgTnVtcGFkTXVsdGlwbHlcbiAgICB8IE51bXBhZFN1YnRyYWN0XG4gICAgfCBOdW1wYWRBZGRcbiAgICB8IE51bXBhZERlY2ltYWxcbiAgICB8IE51bXBhZEVxdWFsXG4gICAgfCBOdW1wYWRFbnRlclxuICAgIHwgTnVtcGFkRGl2aWRlXG4gICAgfCBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgQ29udHJvbExlZnRcbiAgICB8IENvbnRyb2xSaWdodFxuICAgIHwgTWV0YUxlZnRcbiAgICB8IE1ldGFSaWdodFxuICAgIHwgU2hpZnRMZWZ0XG4gICAgfCBTaGlmdFJpZ2h0XG4gICAgfCBBbHRMZWZ0XG4gICAgfCBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IEFycm93TGVmdFxuICAgIHwgQXJyb3dSaWdodFxuICAgIHwgQXJyb3dVcFxuICAgIHwgQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgUGFnZVVwXG4gICAgfCBQYWdlRG93blxuICAgIHwgSG9tZVxuICAgIHwgRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFZvbHVtZU11dGVcbiAgICB8IFZvbHVtZURvd25cbiAgICB8IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgTWVkaWFUcmFja05leHRcbiAgICB8IE1lZGlhUGxheVBhdXNlXG4gICAgfCBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IENvbnRleHRNZW51XG4gICAgfCBCcm93c2VyU2VhcmNoXG4gICAgfCBCcm93c2VySG9tZVxuICAgIHwgQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgQnJvd3NlclJlZnJlc2hcbiAgICB8IEJyb3dzZXJTdG9wXG4gICAgfCBCcm93c2VyRm9yd2FyZFxuICAgIHwgQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBPU0xlZnRcbiAgICB8IE9TUmlnaHRcbiAgICB8IFNjcm9sbExvY2tcbiAgICB8IFByaW50U2NyZWVuXG4gICAgfCBJbnRsQmFja3NsYXNoXG4gICAgfCBJbnRsWWVuXG4gICAgfCBQYXVzZVxuXG4gIGxldCB0cnlfY29kZSB2ID1cbiAgICBtYXRjaCBKcy50b19zdHJpbmcgdiB3aXRoXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBcIktleUFcIiAtPiBLZXlBXG4gICAgfCBcIktleUJcIiAtPiBLZXlCXG4gICAgfCBcIktleUNcIiAtPiBLZXlDXG4gICAgfCBcIktleURcIiAtPiBLZXlEXG4gICAgfCBcIktleUVcIiAtPiBLZXlFXG4gICAgfCBcIktleUZcIiAtPiBLZXlGXG4gICAgfCBcIktleUdcIiAtPiBLZXlHXG4gICAgfCBcIktleUhcIiAtPiBLZXlIXG4gICAgfCBcIktleUlcIiAtPiBLZXlJXG4gICAgfCBcIktleUpcIiAtPiBLZXlKXG4gICAgfCBcIktleUtcIiAtPiBLZXlLXG4gICAgfCBcIktleUxcIiAtPiBLZXlMXG4gICAgfCBcIktleU1cIiAtPiBLZXlNXG4gICAgfCBcIktleU5cIiAtPiBLZXlOXG4gICAgfCBcIktleU9cIiAtPiBLZXlPXG4gICAgfCBcIktleVBcIiAtPiBLZXlQXG4gICAgfCBcIktleVFcIiAtPiBLZXlRXG4gICAgfCBcIktleVJcIiAtPiBLZXlSXG4gICAgfCBcIktleVNcIiAtPiBLZXlTXG4gICAgfCBcIktleVRcIiAtPiBLZXlUXG4gICAgfCBcIktleVVcIiAtPiBLZXlVXG4gICAgfCBcIktleVZcIiAtPiBLZXlWXG4gICAgfCBcIktleVdcIiAtPiBLZXlXXG4gICAgfCBcIktleVhcIiAtPiBLZXlYXG4gICAgfCBcIktleVlcIiAtPiBLZXlZXG4gICAgfCBcIktleVpcIiAtPiBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBcIkRpZ2l0MFwiIC0+IERpZ2l0MFxuICAgIHwgXCJEaWdpdDFcIiAtPiBEaWdpdDFcbiAgICB8IFwiRGlnaXQyXCIgLT4gRGlnaXQyXG4gICAgfCBcIkRpZ2l0M1wiIC0+IERpZ2l0M1xuICAgIHwgXCJEaWdpdDRcIiAtPiBEaWdpdDRcbiAgICB8IFwiRGlnaXQ1XCIgLT4gRGlnaXQ1XG4gICAgfCBcIkRpZ2l0NlwiIC0+IERpZ2l0NlxuICAgIHwgXCJEaWdpdDdcIiAtPiBEaWdpdDdcbiAgICB8IFwiRGlnaXQ4XCIgLT4gRGlnaXQ4XG4gICAgfCBcIkRpZ2l0OVwiIC0+IERpZ2l0OVxuICAgIHwgXCJNaW51c1wiIC0+IE1pbnVzXG4gICAgfCBcIkVxdWFsXCIgLT4gRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBcIlRhYlwiIC0+IFRhYlxuICAgIHwgXCJFbnRlclwiIC0+IEVudGVyXG4gICAgfCBcIlNwYWNlXCIgLT4gU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBcIkVzY2FwZVwiIC0+IEVzY2FwZVxuICAgIHwgXCJCYWNrc3BhY2VcIiAtPiBCYWNrc3BhY2VcbiAgICB8IFwiSW5zZXJ0XCIgLT4gSW5zZXJ0XG4gICAgfCBcIkRlbGV0ZVwiIC0+IERlbGV0ZVxuICAgIHwgXCJDYXBzTG9ja1wiIC0+IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IFwiQnJhY2tldExlZnRcIiAtPiBCcmFja2V0TGVmdFxuICAgIHwgXCJCcmFja2V0UmlnaHRcIiAtPiBCcmFja2V0UmlnaHRcbiAgICB8IFwiU2VtaWNvbG9uXCIgLT4gU2VtaWNvbG9uXG4gICAgfCBcIlF1b3RlXCIgLT4gUXVvdGVcbiAgICB8IFwiQmFja3F1b3RlXCIgLT4gQmFja3F1b3RlXG4gICAgfCBcIkJhY2tzbGFzaFwiIC0+IEJhY2tzbGFzaFxuICAgIHwgXCJDb21tYVwiIC0+IENvbW1hXG4gICAgfCBcIlBlcmlvZFwiIC0+IFBlcmlvZFxuICAgIHwgXCJTbGFzaFwiIC0+IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgXCJGMVwiIC0+IEYxXG4gICAgfCBcIkYyXCIgLT4gRjJcbiAgICB8IFwiRjNcIiAtPiBGM1xuICAgIHwgXCJGNFwiIC0+IEY0XG4gICAgfCBcIkY1XCIgLT4gRjVcbiAgICB8IFwiRjZcIiAtPiBGNlxuICAgIHwgXCJGN1wiIC0+IEY3XG4gICAgfCBcIkY4XCIgLT4gRjhcbiAgICB8IFwiRjlcIiAtPiBGOVxuICAgIHwgXCJGMTBcIiAtPiBGMTBcbiAgICB8IFwiRjExXCIgLT4gRjExXG4gICAgfCBcIkYxMlwiIC0+IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBcIk51bXBhZDBcIiAtPiBOdW1wYWQwXG4gICAgfCBcIk51bXBhZDFcIiAtPiBOdW1wYWQxXG4gICAgfCBcIk51bXBhZDJcIiAtPiBOdW1wYWQyXG4gICAgfCBcIk51bXBhZDNcIiAtPiBOdW1wYWQzXG4gICAgfCBcIk51bXBhZDRcIiAtPiBOdW1wYWQ0XG4gICAgfCBcIk51bXBhZDVcIiAtPiBOdW1wYWQ1XG4gICAgfCBcIk51bXBhZDZcIiAtPiBOdW1wYWQ2XG4gICAgfCBcIk51bXBhZDdcIiAtPiBOdW1wYWQ3XG4gICAgfCBcIk51bXBhZDhcIiAtPiBOdW1wYWQ4XG4gICAgfCBcIk51bXBhZDlcIiAtPiBOdW1wYWQ5XG4gICAgfCBcIk51bXBhZE11bHRpcGx5XCIgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IFwiTnVtcGFkU3VidHJhY3RcIiAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgXCJOdW1wYWRBZGRcIiAtPiBOdW1wYWRBZGRcbiAgICB8IFwiTnVtcGFkRGVjaW1hbFwiIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IFwiTnVtcGFkRXF1YWxcIiAtPiBOdW1wYWRFcXVhbFxuICAgIHwgXCJOdW1wYWRFbnRlclwiIC0+IE51bXBhZEVudGVyXG4gICAgfCBcIk51bXBhZERpdmlkZVwiIC0+IE51bXBhZERpdmlkZVxuICAgIHwgXCJOdW1Mb2NrXCIgLT4gTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IFwiQ29udHJvbExlZnRcIiAtPiBDb250cm9sTGVmdFxuICAgIHwgXCJDb250cm9sUmlnaHRcIiAtPiBDb250cm9sUmlnaHRcbiAgICB8IFwiTWV0YUxlZnRcIiAtPiBNZXRhTGVmdFxuICAgIHwgXCJNZXRhUmlnaHRcIiAtPiBNZXRhUmlnaHRcbiAgICB8IFwiU2hpZnRMZWZ0XCIgLT4gU2hpZnRMZWZ0XG4gICAgfCBcIlNoaWZ0UmlnaHRcIiAtPiBTaGlmdFJpZ2h0XG4gICAgfCBcIkFsdExlZnRcIiAtPiBBbHRMZWZ0XG4gICAgfCBcIkFsdFJpZ2h0XCIgLT4gQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBcIkFycm93TGVmdFwiIC0+IEFycm93TGVmdFxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgLT4gQXJyb3dSaWdodFxuICAgIHwgXCJBcnJvd1VwXCIgLT4gQXJyb3dVcFxuICAgIHwgXCJBcnJvd0Rvd25cIiAtPiBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBcIlBhZ2VVcFwiIC0+IFBhZ2VVcFxuICAgIHwgXCJQYWdlRG93blwiIC0+IFBhZ2VEb3duXG4gICAgfCBcIkhvbWVcIiAtPiBIb21lXG4gICAgfCBcIkVuZFwiIC0+IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBcIlZvbHVtZU11dGVcIiAtPiBWb2x1bWVNdXRlXG4gICAgfCBcIlZvbHVtZURvd25cIiAtPiBWb2x1bWVEb3duXG4gICAgfCBcIlZvbHVtZVVwXCIgLT4gVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgXCJNZWRpYVRyYWNrUHJldmlvdXNcIiAtPiBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IFwiTWVkaWFUcmFja05leHRcIiAtPiBNZWRpYVRyYWNrTmV4dFxuICAgIHwgXCJNZWRpYVBsYXlQYXVzZVwiIC0+IE1lZGlhUGxheVBhdXNlXG4gICAgfCBcIk1lZGlhU3RvcFwiIC0+IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgXCJDb250ZXh0TWVudVwiIC0+IENvbnRleHRNZW51XG4gICAgfCBcIkJyb3dzZXJTZWFyY2hcIiAtPiBCcm93c2VyU2VhcmNoXG4gICAgfCBcIkJyb3dzZXJIb21lXCIgLT4gQnJvd3NlckhvbWVcbiAgICB8IFwiQnJvd3NlckZhdm9yaXRlc1wiIC0+IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IFwiQnJvd3NlclJlZnJlc2hcIiAtPiBCcm93c2VyUmVmcmVzaFxuICAgIHwgXCJCcm93c2VyU3RvcFwiIC0+IEJyb3dzZXJTdG9wXG4gICAgfCBcIkJyb3dzZXJGb3J3YXJkXCIgLT4gQnJvd3NlckZvcndhcmRcbiAgICB8IFwiQnJvd3NlckJhY2tcIiAtPiBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IFwiT1NMZWZ0XCIgLT4gT1NMZWZ0XG4gICAgfCBcIk9TUmlnaHRcIiAtPiBPU1JpZ2h0XG4gICAgfCBcIlNjcm9sbExvY2tcIiAtPiBTY3JvbGxMb2NrXG4gICAgfCBcIlByaW50U2NyZWVuXCIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IFwiSW50bEJhY2tzbGFzaFwiIC0+IEludGxCYWNrc2xhc2hcbiAgICB8IFwiSW50bFllblwiIC0+IEludGxZZW5cbiAgICB8IFwiUGF1c2VcIiAtPiBQYXVzZVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX2xlZnQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRMZWZ0XG4gICAgfCAxNyAtPiBDb250cm9sTGVmdFxuICAgIHwgMTggLT4gQWx0TGVmdFxuICAgIHwgOTEgLT4gTWV0YUxlZnRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9yaWdodCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdFJpZ2h0XG4gICAgfCAxNyAtPiBDb250cm9sUmlnaHRcbiAgICB8IDE4IC0+IEFsdFJpZ2h0XG4gICAgfCA5MSAtPiBNZXRhUmlnaHRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9udW1wYWQgPSBmdW5jdGlvblxuICAgIHwgNDYgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgNDUgLT4gTnVtcGFkMFxuICAgIHwgMzUgLT4gTnVtcGFkMVxuICAgIHwgNDAgLT4gTnVtcGFkMlxuICAgIHwgMzQgLT4gTnVtcGFkM1xuICAgIHwgMzcgLT4gTnVtcGFkNFxuICAgIHwgMTIgLT4gTnVtcGFkNVxuICAgIHwgMzkgLT4gTnVtcGFkNlxuICAgIHwgMzYgLT4gTnVtcGFkN1xuICAgIHwgMzggLT4gTnVtcGFkOFxuICAgIHwgMzMgLT4gTnVtcGFkOVxuICAgIHwgMTMgLT4gTnVtcGFkRW50ZXJcbiAgICB8IDExMSAtPiBOdW1wYWREaXZpZGVcbiAgICB8IDEwNyAtPiBOdW1wYWRBZGRcbiAgICB8IDEwOSAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgMTA2IC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCAxMTAgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgOTYgLT4gTnVtcGFkMFxuICAgIHwgOTcgLT4gTnVtcGFkMVxuICAgIHwgOTggLT4gTnVtcGFkMlxuICAgIHwgOTkgLT4gTnVtcGFkM1xuICAgIHwgMTAwIC0+IE51bXBhZDRcbiAgICB8IDEwMSAtPiBOdW1wYWQ1XG4gICAgfCAxMDIgLT4gTnVtcGFkNlxuICAgIHwgMTAzIC0+IE51bXBhZDdcbiAgICB8IDEwNCAtPiBOdW1wYWQ4XG4gICAgfCAxMDUgLT4gTnVtcGFkOVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX25vcm1hbCA9IGZ1bmN0aW9uXG4gICAgfCAyNyAtPiBFc2NhcGVcbiAgICB8IDExMiAtPiBGMVxuICAgIHwgMTEzIC0+IEYyXG4gICAgfCAxMTQgLT4gRjNcbiAgICB8IDExNSAtPiBGNFxuICAgIHwgMTE2IC0+IEY1XG4gICAgfCAxMTcgLT4gRjZcbiAgICB8IDExOCAtPiBGN1xuICAgIHwgMTE5IC0+IEY4XG4gICAgfCAxMjAgLT4gRjlcbiAgICB8IDEyMSAtPiBGMTBcbiAgICB8IDEyMiAtPiBGMTFcbiAgICB8IDEyMyAtPiBGMTJcbiAgICB8IDQyIC0+IFByaW50U2NyZWVuXG4gICAgfCAxNDUgLT4gU2Nyb2xsTG9ja1xuICAgIHwgMTkgLT4gUGF1c2VcbiAgICB8IDE5MiAtPiBCYWNrcXVvdGVcbiAgICB8IDQ5IC0+IERpZ2l0MVxuICAgIHwgNTAgLT4gRGlnaXQyXG4gICAgfCA1MSAtPiBEaWdpdDNcbiAgICB8IDUyIC0+IERpZ2l0NFxuICAgIHwgNTMgLT4gRGlnaXQ1XG4gICAgfCA1NCAtPiBEaWdpdDZcbiAgICB8IDU1IC0+IERpZ2l0N1xuICAgIHwgNTYgLT4gRGlnaXQ4XG4gICAgfCA1NyAtPiBEaWdpdDlcbiAgICB8IDQ4IC0+IERpZ2l0MFxuICAgIHwgMTg5IC0+IE1pbnVzXG4gICAgfCAxODcgLT4gRXF1YWxcbiAgICB8IDggLT4gQmFja3NwYWNlXG4gICAgfCA5IC0+IFRhYlxuICAgIHwgODEgLT4gS2V5UVxuICAgIHwgODcgLT4gS2V5V1xuICAgIHwgNjkgLT4gS2V5RVxuICAgIHwgODIgLT4gS2V5UlxuICAgIHwgODQgLT4gS2V5VFxuICAgIHwgODkgLT4gS2V5WVxuICAgIHwgODUgLT4gS2V5VVxuICAgIHwgNzMgLT4gS2V5SVxuICAgIHwgNzkgLT4gS2V5T1xuICAgIHwgODAgLT4gS2V5UFxuICAgIHwgMjE5IC0+IEJyYWNrZXRMZWZ0XG4gICAgfCAyMjEgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCAyMjAgLT4gQmFja3NsYXNoXG4gICAgfCAyMCAtPiBDYXBzTG9ja1xuICAgIHwgNjUgLT4gS2V5QVxuICAgIHwgODMgLT4gS2V5U1xuICAgIHwgNjggLT4gS2V5RFxuICAgIHwgNzAgLT4gS2V5RlxuICAgIHwgNzEgLT4gS2V5R1xuICAgIHwgNzIgLT4gS2V5SFxuICAgIHwgNzQgLT4gS2V5SlxuICAgIHwgNzUgLT4gS2V5S1xuICAgIHwgNzYgLT4gS2V5TFxuICAgIHwgMTg2IC0+IFNlbWljb2xvblxuICAgIHwgMjIyIC0+IFF1b3RlXG4gICAgfCAxMyAtPiBFbnRlclxuICAgIHwgOTAgLT4gS2V5WlxuICAgIHwgODggLT4gS2V5WFxuICAgIHwgNjcgLT4gS2V5Q1xuICAgIHwgODYgLT4gS2V5VlxuICAgIHwgNjYgLT4gS2V5QlxuICAgIHwgNzggLT4gS2V5TlxuICAgIHwgNzcgLT4gS2V5TVxuICAgIHwgMTg4IC0+IENvbW1hXG4gICAgfCAxOTAgLT4gUGVyaW9kXG4gICAgfCAxOTEgLT4gU2xhc2hcbiAgICB8IDMyIC0+IFNwYWNlXG4gICAgfCA5MyAtPiBDb250ZXh0TWVudVxuICAgIHwgNDUgLT4gSW5zZXJ0XG4gICAgfCAzNiAtPiBIb21lXG4gICAgfCAzMyAtPiBQYWdlVXBcbiAgICB8IDQ2IC0+IERlbGV0ZVxuICAgIHwgMzUgLT4gRW5kXG4gICAgfCAzNCAtPiBQYWdlRG93blxuICAgIHwgMzcgLT4gQXJyb3dMZWZ0XG4gICAgfCA0MCAtPiBBcnJvd0Rvd25cbiAgICB8IDM5IC0+IEFycm93UmlnaHRcbiAgICB8IDM4IC0+IEFycm93VXBcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IG1ha2VfdW5pZGVudGlmaWVkIF8gPSBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gT3B0ZGVmLmNhc2UgdmFsdWUgbWFrZV91bmlkZW50aWZpZWQgZlxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IHJ1bl9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IGYgdmFsdWVcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBnZXRfa2V5X2NvZGUgZXZ0ID0gZXZ0IyMua2V5Q29kZVxuXG4gIGxldCB0cnlfa2V5X2xvY2F0aW9uIGV2dCA9XG4gICAgbWF0Y2ggZXZ0IyMubG9jYXRpb24gd2l0aFxuICAgIHwgMSAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX2xlZnRcbiAgICB8IDIgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9yaWdodFxuICAgIHwgMyAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX251bXBhZFxuICAgIHwgXyAtPiBtYWtlX3VuaWRlbnRpZmllZFxuXG4gIGxldCAoIHw+ICkgeCBmID0gZiB4XG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgVW5pZGVudGlmaWVkXG4gICAgfD4gdHJ5X25leHQgZXZ0IyMuY29kZSB0cnlfY29kZVxuICAgIHw+IHRyeV9rZXlfbG9jYXRpb24gZXZ0XG4gICAgfD4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9ub3JtYWxcblxuICBsZXQgb2Zfa2V5X2NvZGUgPSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5lbmRcblxubW9kdWxlIEtleWJvYXJkX2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBVY2hhci50IG9wdGlvblxuXG4gIGxldCBjaGFyX29mX2ludCB2YWx1ZSA9XG4gICAgaWYgMCA8IHZhbHVlIHRoZW4gdHJ5IFNvbWUgKFVjaGFyLm9mX2ludCB2YWx1ZSkgd2l0aCBfIC0+IE5vbmUgZWxzZSBOb25lXG5cbiAgbGV0IGVtcHR5X3N0cmluZyBfID0gSnMuc3RyaW5nIFwiXCJcblxuICBsZXQgbm9uZSBfID0gTm9uZVxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIGxldCBrZXkgPSBPcHRkZWYuZ2V0IGV2dCMjLmtleSBlbXB0eV9zdHJpbmcgaW5cbiAgICBtYXRjaCBrZXkjIy5sZW5ndGggd2l0aFxuICAgIHwgMCAtPiBPcHRkZWYuY2FzZSBldnQjIy5jaGFyQ29kZSBub25lIGNoYXJfb2ZfaW50XG4gICAgfCAxIC0+IGNoYXJfb2ZfaW50IChpbnRfb2ZfZmxvYXQgKEpzLnRvX2Zsb2F0IChrZXkjI2NoYXJDb2RlQXQgMCkpKVxuICAgIHwgXyAtPiBOb25lXG5lbmRcblxuKCoqKioqKVxuXG5sZXQgZWxlbWVudCA6ICNEb20uZWxlbWVudCB0IC0+IGVsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2VcblxudHlwZSB0YWdnZWRFbGVtZW50ID1cbiAgfCBBIG9mIGFuY2hvckVsZW1lbnQgdFxuICB8IEFyZWEgb2YgYXJlYUVsZW1lbnQgdFxuICB8IEF1ZGlvIG9mIGF1ZGlvRWxlbWVudCB0XG4gIHwgQmFzZSBvZiBiYXNlRWxlbWVudCB0XG4gIHwgQmxvY2txdW90ZSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IEJvZHkgb2YgYm9keUVsZW1lbnQgdFxuICB8IEJyIG9mIGJyRWxlbWVudCB0XG4gIHwgQnV0dG9uIG9mIGJ1dHRvbkVsZW1lbnQgdFxuICB8IENhbnZhcyBvZiBjYW52YXNFbGVtZW50IHRcbiAgfCBDYXB0aW9uIG9mIHRhYmxlQ2FwdGlvbkVsZW1lbnQgdFxuICB8IENvbCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IENvbGdyb3VwIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgRGVsIG9mIG1vZEVsZW1lbnQgdFxuICB8IERpdiBvZiBkaXZFbGVtZW50IHRcbiAgfCBEbCBvZiBkTGlzdEVsZW1lbnQgdFxuICB8IEVtYmVkIG9mIGVtYmVkRWxlbWVudCB0XG4gIHwgRmllbGRzZXQgb2YgZmllbGRTZXRFbGVtZW50IHRcbiAgfCBGb3JtIG9mIGZvcm1FbGVtZW50IHRcbiAgfCBGcmFtZXNldCBvZiBmcmFtZVNldEVsZW1lbnQgdFxuICB8IEZyYW1lIG9mIGZyYW1lRWxlbWVudCB0XG4gIHwgSDEgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgyIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMyBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDQgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg1IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSGVhZCBvZiBoZWFkRWxlbWVudCB0XG4gIHwgSHIgb2YgaHJFbGVtZW50IHRcbiAgfCBIdG1sIG9mIGh0bWxFbGVtZW50IHRcbiAgfCBJZnJhbWUgb2YgaUZyYW1lRWxlbWVudCB0XG4gIHwgSW1nIG9mIGltYWdlRWxlbWVudCB0XG4gIHwgSW5wdXQgb2YgaW5wdXRFbGVtZW50IHRcbiAgfCBJbnMgb2YgbW9kRWxlbWVudCB0XG4gIHwgTGFiZWwgb2YgbGFiZWxFbGVtZW50IHRcbiAgfCBMZWdlbmQgb2YgbGVnZW5kRWxlbWVudCB0XG4gIHwgTGkgb2YgbGlFbGVtZW50IHRcbiAgfCBMaW5rIG9mIGxpbmtFbGVtZW50IHRcbiAgfCBNYXAgb2YgbWFwRWxlbWVudCB0XG4gIHwgTWV0YSBvZiBtZXRhRWxlbWVudCB0XG4gIHwgT2JqZWN0IG9mIG9iamVjdEVsZW1lbnQgdFxuICB8IE9sIG9mIG9MaXN0RWxlbWVudCB0XG4gIHwgT3B0Z3JvdXAgb2Ygb3B0R3JvdXBFbGVtZW50IHRcbiAgfCBPcHRpb24gb2Ygb3B0aW9uRWxlbWVudCB0XG4gIHwgUCBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFBhcmFtIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUHJlIG9mIHByZUVsZW1lbnQgdFxuICB8IFEgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBTY3JpcHQgb2Ygc2NyaXB0RWxlbWVudCB0XG4gIHwgU2VsZWN0IG9mIHNlbGVjdEVsZW1lbnQgdFxuICB8IFN0eWxlIG9mIHN0eWxlRWxlbWVudCB0XG4gIHwgVGFibGUgb2YgdGFibGVFbGVtZW50IHRcbiAgfCBUYm9keSBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUZCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUZXh0YXJlYSBvZiB0ZXh0QXJlYUVsZW1lbnQgdFxuICB8IFRmb290IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRoIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRoZWFkIG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRpdGxlIG9mIHRpdGxlRWxlbWVudCB0XG4gIHwgVHIgb2YgdGFibGVSb3dFbGVtZW50IHRcbiAgfCBVbCBvZiB1TGlzdEVsZW1lbnQgdFxuICB8IFZpZGVvIG9mIHZpZGVvRWxlbWVudCB0XG4gIHwgT3RoZXIgb2YgZWxlbWVudCB0XG5cbmxldCBvdGhlciBlID0gT3RoZXIgKGUgOiAjZWxlbWVudCB0IDo+IGVsZW1lbnQgdClcblxubGV0IHRhZ2dlZCAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHRhZyA9IEpzLnRvX2J5dGVzdHJpbmcgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIGluXG4gIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMFxuICB0aGVuIG90aGVyIGVcbiAgZWxzZVxuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHRhZyAwIHdpdGhcbiAgICB8ICdhJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJhXCIgLT4gQSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXJlYVwiIC0+IEFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImF1ZGlvXCIgLT4gQXVkaW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYmFzZVwiIC0+IEJhc2UgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJsb2NrcXVvdGVcIiAtPiBCbG9ja3F1b3RlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJib2R5XCIgLT4gQm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnJcIiAtPiBCciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnV0dG9uXCIgLT4gQnV0dG9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImNhbnZhc1wiIC0+IENhbnZhcyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY2FwdGlvblwiIC0+IENhcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbFwiIC0+IENvbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sZ3JvdXBcIiAtPiBDb2xncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdkJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJkZWxcIiAtPiBEZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRpdlwiIC0+IERpdiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGxcIiAtPiBEbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdlJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJlbWJlZFwiIC0+IEVtYmVkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImZpZWxkc2V0XCIgLT4gRmllbGRzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZvcm1cIiAtPiBGb3JtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZXNldFwiIC0+IEZyYW1lc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZVwiIC0+IEZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2gnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImgxXCIgLT4gSDEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgyXCIgLT4gSDIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgzXCIgLT4gSDMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg0XCIgLT4gSDQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg1XCIgLT4gSDUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg2XCIgLT4gSDYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhlYWRcIiAtPiBIZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoclwiIC0+IEhyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJodG1sXCIgLT4gSHRtbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdpJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJpZnJhbWVcIiAtPiBJZnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImltZ1wiIC0+IEltZyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5wdXRcIiAtPiBJbnB1dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5zXCIgLT4gSW5zIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2wnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImxhYmVsXCIgLT4gTGFiZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxlZ2VuZFwiIC0+IExlZ2VuZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlcIiAtPiBMaSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlua1wiIC0+IExpbmsgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibWFwXCIgLT4gTWFwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJtZXRhXCIgLT4gTWV0YSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdvJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJvYmplY3RcIiAtPiBPYmplY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9sXCIgLT4gT2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGdyb3VwXCIgLT4gT3B0Z3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGlvblwiIC0+IE9wdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdwJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJwXCIgLT4gUCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicGFyYW1cIiAtPiBQYXJhbSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicHJlXCIgLT4gUHJlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInFcIiAtPiBRIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInNjcmlwdFwiIC0+IFNjcmlwdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic2VsZWN0XCIgLT4gU2VsZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzdHlsZVwiIC0+IFN0eWxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInRhYmxlXCIgLT4gVGFibGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRib2R5XCIgLT4gVGJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRkXCIgLT4gVGQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRleHRhcmVhXCIgLT4gVGV4dGFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRmb290XCIgLT4gVGZvb3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoXCIgLT4gVGggKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoZWFkXCIgLT4gVGhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRpdGxlXCIgLT4gVGl0bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRyXCIgLT4gVHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidWxcIiAtPiBVbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd2JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ2aWRlb1wiIC0+IFZpZGVvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgXyAtPiBvdGhlciBlXG5cbmxldCBvcHRfdGFnZ2VkIGUgPSBPcHQuY2FzZSBlIChmdW4gKCkgLT4gTm9uZSkgKGZ1biBlIC0+IFNvbWUgKHRhZ2dlZCBlKSlcblxudHlwZSB0YWdnZWRFdmVudCA9XG4gIHwgTW91c2VFdmVudCBvZiBtb3VzZUV2ZW50IHRcbiAgfCBLZXlib2FyZEV2ZW50IG9mIGtleWJvYXJkRXZlbnQgdFxuICB8IE1lc3NhZ2VFdmVudCBvZiBtZXNzYWdlRXZlbnQgdFxuICB8IE1vdXNld2hlZWxFdmVudCBvZiBtb3VzZXdoZWVsRXZlbnQgdFxuICB8IE1vdXNlU2Nyb2xsRXZlbnQgb2YgbW91c2VTY3JvbGxFdmVudCB0XG4gIHwgUG9wU3RhdGVFdmVudCBvZiBwb3BTdGF0ZUV2ZW50IHRcbiAgfCBPdGhlckV2ZW50IG9mIGV2ZW50IHRcblxubGV0IHRhZ2dlZEV2ZW50IChldiA6ICNldmVudCBKcy50KSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKENvZXJjZVRvLm1vdXNlRXZlbnQgZXYpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKENvZXJjZVRvLmtleWJvYXJkRXZlbnQgZXYpXG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKENvZXJjZVRvLndoZWVsRXZlbnQgZXYpXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgKENvZXJjZVRvLm1vdXNlU2Nyb2xsRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLnBvcFN0YXRlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLm1lc3NhZ2VFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gT3RoZXJFdmVudCAoZXYgOj4gZXZlbnQgdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1lc3NhZ2VFdmVudCBldikpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gUG9wU3RhdGVFdmVudCBldikpXG4gICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZVNjcm9sbEV2ZW50IGV2KSlcbiAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2V3aGVlbEV2ZW50IGV2KSlcbiAgICAgICAgKGZ1biBldiAtPiBLZXlib2FyZEV2ZW50IGV2KSlcbiAgICAoZnVuIGV2IC0+IE1vdXNlRXZlbnQgZXYpXG5cbmxldCBvcHRfdGFnZ2VkRXZlbnQgZXYgPSBPcHQuY2FzZSBldiAoZnVuICgpIC0+IE5vbmUpIChmdW4gZXYgLT4gU29tZSAodGFnZ2VkRXZlbnQgZXYpKVxuXG5sZXQgc3RvcFByb3BhZ2F0aW9uIGV2ID1cbiAgbGV0IGUgPSBKcy5VbnNhZmUuY29lcmNlIGV2IGluXG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnN0b3BQcm9wYWdhdGlvblxuICAgIChmdW4gKCkgLT4gZSMjLmNhbmNlbEJ1YmJsZSA6PSBKcy5fdHJ1ZSlcbiAgICAoZnVuIF8gLT4gZSMjX3N0b3BQcm9wYWdhdGlvbilcblxubGV0IF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0ID1cbiAgSnMuVW5zYWZlLnB1cmVfZXhwciAoZnVuIF8gLT5cbiAgICAgIGxldCB3ID0gSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cgaW5cbiAgICAgIGxldCBsID1cbiAgICAgICAgWyB3IyMucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1velJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMub1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCByZXEgPSBMaXN0LmZpbmQgKGZ1biBjIC0+IEpzLk9wdGRlZi50ZXN0IGMpIGwgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCByZXEgW3wgSnMuVW5zYWZlLmluamVjdCBjYWxsYmFjayB8XVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG5vdyAoKSA9IEpzLnRvX2Zsb2F0IChuZXclanMgSnMuZGF0ZV9ub3cpIyNnZXRUaW1lIGluXG4gICAgICAgIGxldCBsYXN0ID0gcmVmIChub3cgKCkpIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPlxuICAgICAgICAgIGxldCB0ID0gbm93ICgpIGluXG4gICAgICAgICAgbGV0IGR0ID0gIWxhc3QgKy4gKDEwMDAuIC8uIDYwLikgLS4gdCBpblxuICAgICAgICAgIGxldCBkdCA9IGlmIFBvbHkuKGR0IDwgMC4pIHRoZW4gMC4gZWxzZSBkdCBpblxuICAgICAgICAgIGxhc3QgOj0gdDtcbiAgICAgICAgICBpZ25vcmUgKHdpbmRvdyMjc2V0VGltZW91dCBjYWxsYmFjayAoSnMuZmxvYXQgZHQpKSlcblxuKCoqKiopXG5cbmxldCBoYXNQdXNoU3RhdGUgKCkgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cjIy5oaXN0b3J5KSMjLnB1c2hTdGF0ZVxuXG5sZXQgaGFzUGxhY2Vob2xkZXIgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucGxhY2Vob2xkZXJcblxubGV0IGhhc1JlcXVpcmVkICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnJlcXVpcmVkXG5cbmxldCBvdmVyZmxvd19saW1pdCA9IDIxNDc0ODNfMDAwLlxuXG4oKiBtcyAqKVxuXG50eXBlIHRpbWVvdXRfaWRfc2FmZSA9IHRpbWVvdXRfaWQgb3B0aW9uIHJlZlxuXG5sZXQgc2V0VGltZW91dCBjYWxsYmFjayBkIDogdGltZW91dF9pZF9zYWZlID1cbiAgbGV0IGlkID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wIGQgKCkgPVxuICAgIGxldCBzdGVwLCByZW1haW4gPVxuICAgICAgaWYgUG9seS4oZCA+IG92ZXJmbG93X2xpbWl0KSB0aGVuIG92ZXJmbG93X2xpbWl0LCBkIC0uIG92ZXJmbG93X2xpbWl0IGVsc2UgZCwgMC5cbiAgICBpblxuICAgIGxldCBjYiA9IGlmIFBvbHkuKHJlbWFpbiA9IDAuKSB0aGVuIGNhbGxiYWNrIGVsc2UgbG9vcCByZW1haW4gaW5cbiAgICBpZCA6PSBTb21lICh3aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgY2IpIChKcy5mbG9hdCBzdGVwKSlcbiAgaW5cbiAgbG9vcCBkICgpO1xuICBpZFxuXG5sZXQgY2xlYXJUaW1lb3V0IChpZCA6IHRpbWVvdXRfaWRfc2FmZSkgPVxuICBtYXRjaCAhaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIGlkIDo9IE5vbmU7XG4gICAgICB3aW5kb3cjI2NsZWFyVGltZW91dCB4XG5cbmxldCBqc19hcnJheV9vZl9jb2xsZWN0aW9uIChjIDogI2VsZW1lbnQgY29sbGVjdGlvbiBKcy50KSA6ICNlbGVtZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgID1cbiAgSnMuVW5zYWZlLihtZXRoX2NhbGwgKGpzX2V4cHIgXCJbXS5zbGljZVwiKSBcImNhbGxcIiBbfCBpbmplY3QgYyB8XSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgZm9ybURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIGFwcGVuZCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRfYmxvYiA6IGpzX3N0cmluZyB0IC0+IEZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBmb3JtRGF0YSA6IGZvcm1EYXRhIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG5sZXQgZm9ybURhdGFfZm9ybSA6IChmb3JtRWxlbWVudCB0IC0+IGZvcm1EYXRhIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxudHlwZSBmb3JtX2VsdCA9XG4gIFsgYFN0cmluZyBvZiBqc19zdHJpbmcgdFxuICB8IGBGaWxlIG9mIEZpbGUuZmlsZSB0XG4gIF1cblxudHlwZSBmb3JtX2NvbnRlbnRzID1cbiAgWyBgRmllbGRzIG9mIChzdHJpbmcgKiBmb3JtX2VsdCkgbGlzdCByZWZcbiAgfCBgRm9ybURhdGEgb2YgZm9ybURhdGEgdFxuICBdXG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmNsYXNzIHR5cGUgc3VibWl0dGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmxldCBoYXZlX2NvbnRlbnQgKGVsdCA6IHN1Ym1pdHRhYmxlRWxlbWVudCB0KSA9XG4gIGVsdCMjLm5hbWUjIy5sZW5ndGggPiAwICYmIG5vdCAoSnMudG9fYm9vbCBlbHQjIy5kaXNhYmxlZClcblxubGV0IGdldF90ZXh0YXJlYV92YWwgKGVsdCA6IHRleHRBcmVhRWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9zZWxlY3RfdmFsIChlbHQgOiBzZWxlY3RFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgaWYgdG9fYm9vbCBlbHQjIy5tdWx0aXBsZVxuICAgIHRoZW5cbiAgICAgIGxldCBvcHRpb25zID1cbiAgICAgICAgQXJyYXkuaW5pdCBlbHQjIy5vcHRpb25zIyMubGVuZ3RoIChmdW4gaSAtPiBPcHQudG9fb3B0aW9uIChlbHQjIy5vcHRpb25zIyNpdGVtIGkpKVxuICAgICAgaW5cbiAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgICBpZiBKcy50b19ib29sIGUjIy5zZWxlY3RlZCB0aGVuIFNvbWUgKG5hbWUsIGBTdHJpbmcgZSMjLnZhbHVlKSBlbHNlIE5vbmUpXG4gICAgICAgIChBcnJheS50b19saXN0IG9wdGlvbnMpXG4gICAgZWxzZSBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmNsYXNzIHR5cGUgZmlsZV9pbnB1dCA9IG9iamVjdFxuICBpbmhlcml0IGlucHV0RWxlbWVudFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZ2V0X2lucHV0X3ZhbCA/KGdldCA9IGZhbHNlKSAoZWx0IDogaW5wdXRFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgbGV0IHZhbHVlID0gZWx0IyMudmFsdWUgaW5cbiAgICBtYXRjaCB0b19ieXRlc3RyaW5nIGVsdCMjLl90eXBlIyN0b0xvd2VyQ2FzZSB3aXRoXG4gICAgfCBcImNoZWNrYm94XCIgfCBcInJhZGlvXCIgLT5cbiAgICAgICAgaWYgdG9fYm9vbCBlbHQjIy5jaGVja2VkIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF0gZWxzZSBbXVxuICAgIHwgXCJzdWJtaXRcIiB8IFwicmVzZXRcIiAtPiBbXVxuICAgIHwgXCJ0ZXh0XCIgfCBcInBhc3N3b3JkXCIgLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICB8IFwiZmlsZVwiIC0+IChcbiAgICAgICAgaWYgZ2V0XG4gICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBlbHQgOiBmaWxlX2lucHV0IHQgPSBVbnNhZmUuY29lcmNlIGVsdCBpblxuICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMuZmlsZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBsaXN0IC0+IChcbiAgICAgICAgICAgICAgaWYgbGlzdCMjLmxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgKEpzLnN0cmluZyBcIlwiKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLm11bHRpcGxlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+IChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobGlzdCMjaXRlbSAwKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBbIG5hbWUsIGBGaWxlIGZpbGUgXSlcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIGYgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFNvbWUgKG5hbWUsIGBGaWxlIGZpbGUpKVxuICAgICAgICAgICAgICAgICAgICAgIChBcnJheS50b19saXN0IChBcnJheS5pbml0IGxpc3QjIy5sZW5ndGggKGZ1biBpIC0+IGxpc3QjI2l0ZW0gaSkpKSkpXG4gICAgfCBfIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9mb3JtX2VsZW1lbnRzIChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChmb3JtIyMuZWxlbWVudHMjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIChpIC0gaSlcbiAgICAgIHwgU29tZSB4IC0+IGxvb3AgKHggOjogYWNjKSAoaSAtIDEpXG4gIGluXG4gIGxvb3AgW10gKGZvcm0jIy5lbGVtZW50cyMjLmxlbmd0aCAtIDEpXG5cbmxldCBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdiA9XG4gIG1hdGNoIHRhZ2dlZCB2IHdpdGhcbiAgfCBTZWxlY3QgdiAtPiBnZXRfc2VsZWN0X3ZhbCB2XG4gIHwgSW5wdXQgdiAtPiBnZXRfaW5wdXRfdmFsID9nZXQgdlxuICB8IFRleHRhcmVhIHYgLT4gZ2V0X3RleHRhcmVhX3ZhbCB2XG4gIHwgXyAtPiBbXVxuXG5sZXQgZm9ybV9lbGVtZW50cyA/Z2V0IChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gdiAtPiBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdikgKGdldF9mb3JtX2VsZW1lbnRzIGZvcm0pKVxuXG5sZXQgYXBwZW5kIChmb3JtX2NvbnRlbnRzIDogZm9ybV9jb250ZW50cykgKGZvcm1fZWx0IDogc3RyaW5nICogZm9ybV9lbHQpID1cbiAgbWF0Y2ggZm9ybV9jb250ZW50cyB3aXRoXG4gIHwgYEZpZWxkcyBsaXN0IC0+IGxpc3QgOj0gZm9ybV9lbHQgOjogIWxpc3RcbiAgfCBgRm9ybURhdGEgZiAtPiAoXG4gICAgICBtYXRjaCBmb3JtX2VsdCB3aXRoXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBmIyNhcHBlbmQgKHN0cmluZyBuYW1lKSBzXG4gICAgICB8IG5hbWUsIGBGaWxlIGZpbGUgLT4gZiMjYXBwZW5kX2Jsb2IgKHN0cmluZyBuYW1lKSAoZmlsZSA6PiBGaWxlLmJsb2IgdCkpXG5cbmxldCBlbXB0eV9mb3JtX2NvbnRlbnRzICgpID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiAoSnMuZGVmIGZvcm1EYXRhKSB3aXRoXG4gIHwgTm9uZSAtPiBgRmllbGRzIChyZWYgW10pXG4gIHwgU29tZSBjb25zdHIgLT4gYEZvcm1EYXRhIChuZXclanMgY29uc3RyKVxuXG5sZXQgcG9zdF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBsZXQgY29udGVudHMgPSBlbXB0eV9mb3JtX2NvbnRlbnRzICgpIGluXG4gIExpc3QuaXRlciAoYXBwZW5kIGNvbnRlbnRzKSAoZm9ybV9lbGVtZW50cyBmb3JtKTtcbiAgY29udGVudHNcblxubGV0IGdldF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gbmFtZSwgdG9fc3RyaW5nIHNcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgKGZvcm1fZWxlbWVudHMgfmdldDp0cnVlIGZvcm0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgVU5TRU5UXG4gIHwgT1BFTkVEXG4gIHwgSEVBREVSU19SRUNFSVZFRFxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbnR5cGUgXyByZXNwb25zZSA9XG4gIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IE9wdC50IHJlc3BvbnNlXG4gIHwgQmxvYiA6ICNGaWxlLmJsb2IgdCBPcHQudCByZXNwb25zZVxuICB8IERvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBKU09OIDogJ2EgT3B0LnQgcmVzcG9uc2VcbiAgfCBUZXh0IDoganNfc3RyaW5nIHQgcmVzcG9uc2VcbiAgfCBEZWZhdWx0IDogc3RyaW5nIHJlc3BvbnNlXG5cbmNsYXNzIHR5cGUgeG1sSHR0cFJlcXVlc3QgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25yZWFkeXN0YXRlY2hhbmdlIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfb3BlbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgX29wZW5fZnVsbCA6XG4gICAgICAganNfc3RyaW5nIHRcbiAgICAtPiBqc19zdHJpbmcgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSZXF1ZXN0SGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG92ZXJyaWRlTWltZVR5cGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZCA6IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogI0ZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2RvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZm9ybURhdGEgOiBGb3JtLmZvcm1EYXRhIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXR1c1RleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJlc3BvbnNlSGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXNwb25zZSA6IEZpbGUuZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVRleHQgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVhNTCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb250aW1lb3V0IDpcbiAgICAoJ3NlbGYgdCwgJ3NlbGYgRmlsZS5wcm9ncmVzc0V2ZW50IHQpIERvbS5ldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGxvYWQgOiB4bWxIdHRwUmVxdWVzdFVwbG9hZCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHhtbEh0dHBSZXF1ZXN0VXBsb2FkID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSB4bWxIdHRwUmVxdWVzdCBGaWxlLnByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB0aW1lb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1lb3V0XCJcblxuICBsZXQgbG9hZGVuZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxuZXh0ZXJuYWwgY3JlYXRlIDogdW5pdCAtPiB4bWxIdHRwUmVxdWVzdCBKcy50ID0gXCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVwiXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IE9DYW1sUHJvOiBHcsOpZ29pcmUgSGVucnksIMOHYcSfZGHFnyBCb3ptYW4uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHdvcmtlciA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBlcnJvckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnYiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcG9zdE1lc3NhZ2UgOiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGVybWluYXRlIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGVycm9yRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGluZW5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29sbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IFVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiAnYSByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdvcmtlciA9IFVuc2FmZS5nbG9iYWwjIy5fV29ya2VyXG5cbmxldCBjcmVhdGUgc2NyaXB0ID0gbmV3JWpzIHdvcmtlciAoc3RyaW5nIHNjcmlwdClcblxubGV0IGltcG9ydF9zY3JpcHRzIHNjcmlwdHMgOiB1bml0ID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0cylcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5pbXBvcnRfc2NyaXB0cyBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmZ1bl9jYWxsXG4gICAgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHNcbiAgICAoQXJyYXkubWFwIChmdW4gcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcykpIChBcnJheS5vZl9saXN0IHNjcmlwdHMpKVxuXG5sZXQgc2V0X29ubWVzc2FnZSBoYW5kbGVyID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgbGV0IGpzX2hhbmRsZXIgKGV2IDogJ2EgbWVzc2FnZUV2ZW50IEpzLnQpID0gaGFuZGxlciBldiMjLmRhdGEgaW5cbiAgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSA6PSB3cmFwX2NhbGxiYWNrIGpzX2hhbmRsZXJcblxubGV0IHBvc3RfbWVzc2FnZSBtc2cgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5wb3N0TWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5nbG9iYWwjI3Bvc3RNZXNzYWdlIG1zZ1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKYWNxdWVzLVBhc2NhbCBEZXBsYWl4XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TSU5HXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBjbG9zZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgY29kZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYXNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2FzQ2xlYW4gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB3ZWJTb2NrZXQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHVybCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZEFtb3VudCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBjbG9zZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZXh0ZW5zaW9ucyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlIDogaW50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZUFuZFJlYXNvbiA6IGludCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25tZXNzYWdlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgbWVzc2FnZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiaW5hcnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gIG1ldGhvZCBzZW5kIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogRmlsZS5ibG9iIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHdlYlNvY2tldCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29sID0gd2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29scyA9IHdlYlNvY2tldFxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3Qgd2ViU29ja2V0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbigqKiA1LjEgVHlwZXMgKilcblxudHlwZSBzaXplaSA9IGludFxuXG50eXBlIHNpemVpcHRyID0gaW50XG5cbnR5cGUgaW50cHRyID0gaW50XG5cbnR5cGUgdWludCA9IGludFxuXG50eXBlIGNsYW1wZiA9IG51bWJlcl90XG5cbnR5cGUgdm9pZFxuXG50eXBlIGNsZWFyQnVmZmVyTWFzayA9IGludFxuXG50eXBlIGJlZ2luTW9kZVxuXG50eXBlIGJsZW5kaW5nRmFjdG9yXG5cbnR5cGUgYmxlbmRNb2RlXG5cbnR5cGUgYnVmZmVyVGFyZ2V0XG5cbnR5cGUgYnVmZmVyVXNhZ2VcblxudHlwZSBjdWxsRmFjZU1vZGVcblxudHlwZSBkZXB0aEZ1bmN0aW9uXG5cbnR5cGUgZW5hYmxlQ2FwXG5cbnR5cGUgZXJyb3JDb2RlXG5cbnR5cGUgZnJvbnRGYWNlRGlyXG5cbnR5cGUgaGludFRhcmdldFxuXG50eXBlIGhpbnRNb2RlXG5cbnR5cGUgdGV4dHVyZVVuaXQgPSBpbnRcblxudHlwZSAnYSBwaXhlbFN0b3JlUGFyYW1cblxudHlwZSBzdGVuY2lsT3BcblxudHlwZSBmYlRhcmdldFxuXG50eXBlIGF0dGFjaG1lbnRQb2ludFxuXG50eXBlIHJiVGFyZ2V0XG5cbnR5cGUgdGV4VGFyZ2V0XG5cbnR5cGUgJ2EgcGFyYW1ldGVyXG5cbnR5cGUgJ2EgYnVmZmVyUGFyYW1ldGVyXG5cbnR5cGUgJ2EgdmVydGV4QXR0cmliUGFyYW1cblxudHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW1cblxudHlwZSAnYSBhdHRhY2hQYXJhbVxuXG50eXBlIGZyYW1lYnVmZmVyU3RhdHVzXG5cbnR5cGUgJ2EgcmVuZGVyYnVmZmVyUGFyYW1cblxudHlwZSBmb3JtYXRcblxudHlwZSBwaXhlbEZvcm1hdFxuXG50eXBlIHBpeGVsVHlwZVxuXG50eXBlICdhIHRleFBhcmFtXG5cbnR5cGUgZGF0YVR5cGVcblxudHlwZSBzaGFkZXJUeXBlXG5cbnR5cGUgJ2EgcHJvZ3JhbVBhcmFtXG5cbnR5cGUgJ2Egc2hhZGVyUGFyYW1cblxudHlwZSB0ZXh0dXJlRmlsdGVyXG5cbnR5cGUgd3JhcE1vZGVcblxudHlwZSB0ZXhGaWx0ZXJcblxudHlwZSB1bmlmb3JtVHlwZVxuXG50eXBlIGNvbG9yc3BhY2VDb252ZXJzaW9uXG5cbnR5cGUgc2hhZGVyUHJlY2lzaW9uVHlwZVxuXG50eXBlIG9iamVjdFR5cGVcblxuKCoqIDUuMiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzICopXG5jbGFzcyB0eXBlIGNvbnRleHRBdHRyaWJ1dGVzID0gb2JqZWN0XG4gIG1ldGhvZCBhbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRlcHRoIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3RlbmNpbCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGFudGlhbGlhcyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZW11bHRpcGxpZWRBbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlRHJhd2luZ0J1ZmZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2UgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IDogYm9vbCB0IHByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzID1cbiAgSnMuVW5zYWZlLihcbiAgICBvYmpcbiAgICAgIFt8IFwiYWxwaGFcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcImRlcHRoXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJzdGVuY2lsXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiYW50aWFsaWFzXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJwcmVtdWx0aXBsaWVkQWxwaGFcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXJcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICB8XSlcblxudHlwZSBidWZmZXJcblxudHlwZSBmcmFtZWJ1ZmZlclxuXG50eXBlIHByb2dyYW1cblxudHlwZSByZW5kZXJidWZmZXJcblxudHlwZSBzaGFkZXJcblxudHlwZSB0ZXh0dXJlXG5cbnR5cGUgJ2EgdW5pZm9ybUxvY2F0aW9uXG5cbmNsYXNzIHR5cGUgYWN0aXZlSW5mbyA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gb2JqZWN0XG4gIG1ldGhvZCByYW5nZU1pbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlTWF4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlY2lzaW9uIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlbmRlcmluZ0NvbnRleHQgPSBvYmplY3RcbiAgKCoqIDUuMTMuMSBBdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGNhbnZhcyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJXaWR0aCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlckhlaWdodCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICAoKiogNS4xMy4yIEdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRleHQgKilcblxuICBtZXRob2QgZ2V0Q29udGV4dEF0dHJpYnV0ZXMgOiBjb250ZXh0QXR0cmlidXRlcyB0IG1ldGhcblxuICAoKiogNS4xMy4zIFNldHRpbmcgYW5kIGdldHRpbmcgc3RhdGUgKilcblxuICBtZXRob2QgYWN0aXZlVGV4dHVyZSA6IHRleHR1cmVVbml0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZENvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uIDogYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUgOiBibGVuZE1vZGUgLT4gYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmMgOiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jU2VwYXJhdGUgOlxuICAgIGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckNvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRlcHRoIDogY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclN0ZW5jaWwgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbG9yTWFzayA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3VsbEZhY2UgOiBjdWxsRmFjZU1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoTWFzayA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhSYW5nZSA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpc2FibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJvbnRGYWNlIDogZnJvbnRGYWNlRGlyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXJhbWV0ZXIgOiAnYS4gJ2EgcGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0RXJyb3IgOiBlcnJvckNvZGUgbWV0aFxuXG4gIG1ldGhvZCBoaW50IDogaGludFRhcmdldCAtPiBoaW50TW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNFbmFibGVkIDogZW5hYmxlQ2FwIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwaXhlbFN0b3JlaSA6ICdhLiAnYSBwaXhlbFN0b3JlUGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBvbHlnb25PZmZzZXQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2FtcGxlQ292ZXJhZ2UgOiBjbGFtcGYgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2sgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFza1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcCA6IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3BTZXBhcmF0ZSA6XG4gICAgY3VsbEZhY2VNb2RlIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjQgVmlld2luZyBhbmQgY2xpcHBpbmcgKilcblxuICBtZXRob2Qgc2Npc3NvciA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy41IEJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXIgOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXJfIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9jcmVhdGUgOiBidWZmZXJUYXJnZXQgLT4gc2l6ZWlwdHIgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUJ1ZmZlciA6IGJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQnVmZmVyIDogYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJ1ZmZlclBhcmFtZXRlciA6ICdhLiBidWZmZXJUYXJnZXQgLT4gJ2EgYnVmZmVyUGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNCdWZmZXIgOiBidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjYgRnJhbWVidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXIgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXJfIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlclN0YXR1cyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJUZXh0dXJlMkQgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIDpcbiAgICAnYS4gZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+ICdhIGF0dGFjaFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy43IFJlbmRlcmJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXIgOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlcl8gOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlciA6ICdhLiByYlRhcmdldCAtPiAnYSByZW5kZXJidWZmZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcmVuZGVyYnVmZmVyU3RvcmFnZSA6IHJiVGFyZ2V0IC0+IGZvcm1hdCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy44IFRleHR1cmUgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZSA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlXyA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4SW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleEltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gcGl4ZWxGb3JtYXQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhTdWJJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dHVyZSA6IHRleHR1cmUgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdlbmVyYXRlTWlwbWFwIDogdGV4VGFyZ2V0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUZXhQYXJhbWV0ZXIgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1RleHR1cmUgOiB0ZXh0dXJlIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9uZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gdm9pZCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqIHtbXG4gICAgICBtZXRob2QgdGV4UGFyYW1ldGVyZiA6IHRleFRhcmdldCAtPiB0ZXhQYXJhbSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbiAgICAgXX1cbiAgKilcbiAgbWV0aG9kIHRleFBhcmFtZXRlcmkgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjkgUHJvZ3JhbXMgYW5kIFNoYWRlcnMgKilcblxuICBtZXRob2QgYXR0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcGlsZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU2hhZGVyIDogc2hhZGVyVHlwZSAtPiBzaGFkZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dGFjaGVkU2hhZGVycyA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbVBhcmFtZXRlciA6ICdhLiBwcm9ncmFtIHQgLT4gJ2EgcHJvZ3JhbVBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbUluZm9Mb2cgOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQYXJhbWV0ZXIgOiAnYS4gc2hhZGVyIHQgLT4gJ2Egc2hhZGVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgOlxuICAgIHNoYWRlclR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlckluZm9Mb2cgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgaXNQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGlzU2hhZGVyIDogc2hhZGVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGlua1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1c2VQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2YWxpZGF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTAgVW5pZm9ybXMgYW5kIGF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVBdHRyaWIgOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVVbmlmb3JtIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybSA6ICdhICdiLiBwcm9ncmFtIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtTG9jYXRpb24gOiAnYS4gcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliIDogJ2EuIHVpbnQgLT4gJ2EgdmVydGV4QXR0cmliUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQgOiB1aW50IC0+IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSAtPiBzaXplaXB0ciBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2X3R5cGVkIDpcbiAgICBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaSA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXZfdHlwZWQgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2IDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnZfdHlwZWQgOlxuICAgIFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmkgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXYgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2X3R5cGVkIDpcbiAgICBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnZfdHlwZWQgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdiA6IFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2kgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2IDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdl90eXBlZCA6XG4gICAgWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZiA6XG4gICAgICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdl90eXBlZCA6XG4gICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2IDogWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aSA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2IDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdl90eXBlZCA6XG4gICAgWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnYgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdl90eXBlZCA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdiA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2X3R5cGVkIDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2IDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnZfdHlwZWQgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmIDogdWludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2YgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmIDpcbiAgICB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYlBvaW50ZXIgOlxuICAgIHVpbnQgLT4gaW50IC0+IGRhdGFUeXBlIC0+IGJvb2wgdCAtPiBzaXplaSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTEgV3JpdGluZyB0byB0aGUgZHJhd2luZyBidWZmZXIgKilcblxuICBtZXRob2QgY2xlYXIgOiBjbGVhckJ1ZmZlck1hc2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdBcnJheXMgOiBiZWdpbk1vZGUgLT4gaW50IC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3RWxlbWVudHMgOiBiZWdpbk1vZGUgLT4gc2l6ZWkgLT4gZGF0YVR5cGUgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaW5pc2ggOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmx1c2ggOiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMiBSZWFkaW5nIGJhY2sgcGl4ZWxzICopXG5cbiAgbWV0aG9kIHJlYWRQaXhlbHMgOlxuICAgICAgIGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEzIERldGVjdGluZyBjb250ZXh0IGxvc3QgZXZlbnRzICopXG5cbiAgbWV0aG9kIGlzQ29udGV4dExvc3QgOiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjE0IERldGVjdGluZyBhbmQgZW5hYmxpbmcgZXh0ZW5zaW9ucyAqKVxuXG4gIG1ldGhvZCBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVuc2lvbiA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSB0IG9wdCBtZXRoXG5cbiAgKCogVW50eXBlZCEgKilcbiAgKCoqIENvbnN0YW50cyAqKVxuXG4gIG1ldGhvZCBfREVQVEhfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0lOVFMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9MT09QXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX0ZBTl8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVSTyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORSA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV9TQVRVUkFURV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX0FERF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19SRVZFUlNFX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVFJFQU1fRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEFUSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EWU5BTUlDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlQgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkFDSyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9BTkRfQkFDS18gOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORCA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVIgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT19FUlJPUl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9FTlVNXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX1ZBTFVFXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT1VUX09GX01FTU9SWV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OVEVYVF9MT1NUX1dFQkdMXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RPTlRfQ0FSRV8gOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GQVNURVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTklDRVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfIDogaGludFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX1JHQl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX0FMUEhBXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0NPTE9SXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVJfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1dJRFRIXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfTElORV9XSURUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX01PREVfIDogY3VsbEZhY2VNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9GQUNFXyA6IGZyb250RmFjZURpciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1dSSVRFTUFTS18gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NMRUFSX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9GVU5DXyA6IGRlcHRoRnVuY3Rpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQ0xFQVJfVkFMVUVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WSUVXUE9SVCA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9CT1hfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9DTEVBUl9WQUxVRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfV1JJVEVNQVNLXyA6IGJvb2wgdCBqc19hcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UX1BBUkFNIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVklFV1BPUlRfRElNU18gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NVQlBJWEVMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRURfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUVOX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTFVFX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX1VOSVRTXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GQUNUT1JfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR18yRF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0JVRkZFUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogVHlwZWRfYXJyYXkudWludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfUEFSQU1fIDogaGludE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9TSVpFXyA6IGludCBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1VTQUdFXyA6IGJ1ZmZlclVzYWdlIGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CWVRFIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV9EVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIT1JUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfSU5UXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNF80XzRfNF8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV81XzVfMV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV82XzVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRV9BTFBIQV8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQUdNRU5UX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX0FUVFJJQlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WQVJZSU5HX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURFUl9UWVBFXyA6IHNoYWRlclR5cGUgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUElMRV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfUFJPRyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElOS19TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WQUxJREFURV9TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BVFRBQ0hFRF9TSEFERVJTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1VOSUZPUk1TXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX0FUVFJJQlVURVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05fIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfUFJPR1JBTV8gOiBwcm9ncmFtIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRU5ET1IgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSRVIgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSU0lPTiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1RFWFRVUkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9CSU5ESU5HXyA6IGZyYW1lYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQklORElOR18gOiByZW5kZXJidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9SRU5ERVJCVUZGRVJfU0laRSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVWRVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFU1MgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUFURVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PVEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMV0FZUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfS0VFUCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBMQUNFIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZFUlQgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk9fIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1QgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NQUdfRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01JTl9GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9TXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9UXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV8yRF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBFQVQgOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DTEFNUF9UT19FREdFXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01JUlJPUkVEX1JFUEVBVF8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSXzJEXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfQ1VCRV8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJfIDogdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDpcbiAgICBidWZmZXIgdCBvcHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9WRVJURVhfQVRUUklCXyA6XG4gICAgVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUiA6IGZiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUiA6IHJiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkE0IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjVfQTFfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjU2NSA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlQxNl8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWDhfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9XSURUSF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0hFSUdIVF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVF8gOiBmb3JtYXQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1JFRF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JMVUVfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXyA6IG9iamVjdFR5cGUgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9SRU5ERVJCVUZGRVIgOlxuICAgIHJlbmRlcmJ1ZmZlciB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfVEVYVFVSRSA6IHRleHR1cmUgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUxfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9BVFRBQ0hNRU5UMF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0NPTVBMRVRFXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlNfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfVU5TVVBQT1JURURfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMX1BBUkFNIDpcbiAgICBjb2xvcnNwYWNlQ29udmVyc2lvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORSA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JST1dTRVJfREVGQVVMVF9XRUJHTF8gOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIDUuMTQgV2ViR0xDb250ZXh0RXZlbnQgKilcblxuY2xhc3MgdHlwZSBjb250ZXh0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFxuXG4gIG1ldGhvZCBzdGF0dXNNZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBsZXQgd2ViZ2xjb250ZXh0bG9zdCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRsb3N0XCJcblxuICBsZXQgd2ViZ2xjb250ZXh0cmVzdG9yZWQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JcIlxuZW5kXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dF8gOiBqc19zdHJpbmcgdCAtPiBjb250ZXh0QXR0cmlidXRlcyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBnZXRDb250ZXh0IChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjICMjIChnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikpXG5cbmxldCBnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpIGF0dHJpYnMgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcIndlYmdsXCIpIGF0dHJpYnMgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSBhdHRyaWJzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdCwgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVnZXhwID0gSnMucmVnRXhwIEpzLnRcblxudHlwZSByZXN1bHQgPSBKcy5tYXRjaF9yZXN1bHQgSnMudFxuXG5sZXQgcmVnZXhwIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdpXCIpXG5cbmxldCByZWdleHBfd2l0aF9mbGFnIHMgZiA9XG4gIG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgKFwiZ1wiIF4gZikpXG5cbmxldCBibHVudF9zdHJfYXJyYXlfZ2V0IGEgaSA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBhIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHN0cmluZ19tYXRjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0Lm1hcCAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSkgSnMubWF0Y2hfcmVzdWx0KVxuXG5sZXQgc2VhcmNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uXG4gICAgKEpzLk9wdC5tYXBcbiAgICAgICAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgICAoZnVuIHJlc19wcmUgLT5cbiAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgcmVzX3ByZSBpblxuICAgICAgICAgcmVzIyMuaW5kZXgsIHJlcykpXG5cbmxldCBzZWFyY2hfZm9yd2FyZCA9IHNlYXJjaFxuXG5sZXQgbWF0Y2hlZF9zdHJpbmcgciA9IGJsdW50X3N0cl9hcnJheV9nZXQgciAwXG5cbmxldCBtYXRjaGVkX2dyb3VwIHIgaSA9XG4gIEpzLk9wdGRlZi50b19vcHRpb24gKEpzLk9wdGRlZi5tYXAgKEpzLmFycmF5X2dldCByIGkpIEpzLnRvX2J5dGVzdHJpbmcpXG5cbmxldCBxdW90ZV9yZXBsX3JlID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlskXVwiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcXVvdGVfcmVwbCBzID0gKEpzLmJ5dGVzdHJpbmcgcykjI3JlcGxhY2UgcXVvdGVfcmVwbF9yZSAoSnMuc3RyaW5nIFwiJCQkJFwiKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgciBzIHNfYnkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgciAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IHJlcGxhY2VfZmlyc3QgciBzIHNfYnkgPVxuICBsZXQgZmxhZ3MgPVxuICAgIG1hdGNoIEpzLnRvX2Jvb2wgciMjLmlnbm9yZUNhc2UsIEpzLnRvX2Jvb2wgciMjLm11bHRpbGluZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiXCJcbiAgICB8IGZhbHNlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1cIlxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiaVwiXG4gICAgfCB0cnVlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1pXCJcbiAgaW5cbiAgbGV0IHInID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgciMjLnNvdXJjZSBmbGFncyBpblxuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHInIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgbGlzdF9vZl9qc19hcnJheSBhID1cbiAgbGV0IHJlYyBhdXggYWNjdSBpZHggPVxuICAgIGlmIGlkeCA8IDAgdGhlbiBhY2N1IGVsc2UgYXV4IChibHVudF9zdHJfYXJyYXlfZ2V0IGEgaWR4IDo6IGFjY3UpIChpZHggLSAxKVxuICBpblxuICBhdXggW10gKGEjIy5sZW5ndGggLSAxKVxuXG5sZXQgc3BsaXQgciBzID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cCByKSlcblxubGV0IGJvdW5kZWRfc3BsaXQgciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwTGltaXRlZCByIGkpKVxuXG4oKiBNb3JlIGNvbnN0cnVjdG9ycyAqKVxuXG5sZXQgcXVvdGVfcmUgPSByZWdleHAgXCJbXFxcXF1bKClcXFxcXFxcXHwrKi4/e31eJF1cIlxuXG5sZXQgcXVvdGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcXVvdGVfcmUgKEpzLnN0cmluZyBcIlxcXFwkJlwiKSlcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IHJlZ2V4cCAocXVvdGUgcylcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSByZWdleHBfY2FzZV9mb2xkIChxdW90ZSBzKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFVybCB0YW1wZXJpbmcuICopXG5cbmxldCBzcGxpdCBjIHMgPSBKcy5zdHJfYXJyYXkgKHMjI3NwbGl0IChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpKVxuXG5sZXQgc3BsaXRfMiBjIHMgPVxuICBsZXQgaW5kZXggPSBzIyNpbmRleE9mIChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpIGluXG4gIGlmIGluZGV4IDwgMCB0aGVuIEpzLnVuZGVmaW5lZCBlbHNlIEpzLmRlZiAocyMjc2xpY2UgMCBpbmRleCwgcyMjc2xpY2VfZW5kIChpbmRleCArIDEpKVxuXG5leGNlcHRpb24gTG9jYWxfZXhuXG5cbmxldCBpbnRlcnJ1cHQgKCkgPSByYWlzZSBMb2NhbF9leG5cblxuKCogdXJsIChBS0EgcGVyY2VudCkgZW5jb2RpbmcvZGVjb2RpbmcgKilcblxubGV0IHBsdXNfcmUgPSBSZWdleHAucmVnZXhwX3N0cmluZyBcIitcIlxuXG5sZXQgZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIlMkJcIlxuXG5sZXQgdW5lc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiBcIlxuXG5sZXQgcGx1c19yZV9qc19zdHJpbmcgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiXFxcXCtcIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMgPVxuICBwbHVzX3JlX2pzX3N0cmluZyMjLmxhc3RJbmRleCA6PSAwO1xuICBzIyNyZXBsYWNlIHBsdXNfcmVfanNfc3RyaW5nIChKcy5zdHJpbmcgXCIgXCIpXG5cbmxldCB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMpKVxuXG5sZXQgdXJsZGVjb2RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAoSnMuYnl0ZXN0cmluZyAodW5lc2NhcGVfcGx1cyBzKSkpXG5cbigqbGV0IHVybGVuY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgcykqKVxuXG5sZXQgdXJsZW5jb2RlID8od2l0aF9wbHVzID0gdHJ1ZSkgcyA9XG4gIGlmIHdpdGhfcGx1c1xuICB0aGVuIGVzY2FwZV9wbHVzIChKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpKVxuICBlbHNlIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSlcblxudHlwZSBodHRwX3VybCA9XG4gIHsgaHVfaG9zdCA6IHN0cmluZyAgKCoqIFRoZSBob3N0IHBhcnQgb2YgdGhlIHVybC4gKilcbiAgOyBodV9wb3J0IDogaW50ICAoKiogVGhlIHBvcnQgZm9yIHRoZSBjb25uZWN0aW9uIGlmIGFueS4gKilcbiAgOyBodV9wYXRoIDogc3RyaW5nIGxpc3QgICgqKiBUaGUgcGF0aCBzcGxpdCBvbiBbJy8nXSBjaGFyYWN0ZXJzLiAqKVxuICA7IGh1X3BhdGhfc3RyaW5nIDogc3RyaW5nICAoKiogVGhlIG9yaWdpbmFsIGVudGlyZSBwYXRoLiAqKVxuICA7IGh1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgKCoqIEFyZ3VtZW50cyBhcyBhIGZpZWxkLXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbiBsaXN0LiopXG4gIDsgaHVfZnJhZ21lbnQgOiBzdHJpbmcgICgqKiBUaGUgZnJhZ21lbnQgcGFydCAoYWZ0ZXIgdGhlIFsnIyddIGNoYXJhY3RlcikuICopXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgSFRUUCB1cmwuICopXG5cbnR5cGUgZmlsZV91cmwgPVxuICB7IGZ1X3BhdGggOiBzdHJpbmcgbGlzdFxuICA7IGZ1X3BhdGhfc3RyaW5nIDogc3RyaW5nXG4gIDsgZnVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICA7IGZ1X2ZyYWdtZW50IDogc3RyaW5nXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgbG9jYWwgZmlsZSB1cmxzLiAqKVxuXG50eXBlIHVybCA9XG4gIHwgSHR0cCBvZiBodHRwX3VybFxuICB8IEh0dHBzIG9mIGh0dHBfdXJsXG4gIHwgRmlsZSBvZiBmaWxlX3VybFxuICAgICAgKCoqIFRoZSB0eXBlIGZvciB1cmxzLiBbRmlsZV0gaXMgZm9yIGxvY2FsIGZpbGVzIGFuZCBbRXhvdGljIHNdIGlzIGZvclxuICAgIHVua25vd24vdW5zdXBwb3J0ZWQgcHJvdG9jb2xzLiAqKVxuXG5leGNlcHRpb24gTm90X2FuX2h0dHBfcHJvdG9jb2xcblxubGV0IGlzX3NlY3VyZSBwcm90X3N0cmluZyA9XG4gIG1hdGNoIEpzLnRvX2J5dGVzdHJpbmcgcHJvdF9zdHJpbmcjI3RvTG93ZXJDYXNlIHdpdGhcbiAgfCBcImh0dHBzOlwiIHwgXCJodHRwc1wiIC0+IHRydWVcbiAgfCBcImh0dHA6XCIgfCBcImh0dHBcIiAtPiBmYWxzZVxuICB8IFwiZmlsZTpcIiB8IFwiZmlsZVwiIHwgXyAtPiByYWlzZSBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG4oKiBwb3J0IG51bWJlciAqKVxubGV0IGRlZmF1bHRfaHR0cF9wb3J0ID0gODBcblxubGV0IGRlZmF1bHRfaHR0cHNfcG9ydCA9IDQ0M1xuXG4oKiBwYXRoICopXG5sZXQgcGF0aF9vZl9wYXRoX3N0cmluZyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgbGV0IGogPSB0cnkgU3RyaW5nLmluZGV4X2Zyb20gcyBpICcvJyB3aXRoIE5vdF9mb3VuZCAtPiBsIGluXG4gICAgbGV0IHdvcmQgPSBTdHJpbmcuc3ViIHMgaSAoaiAtIGkpIGluXG4gICAgaWYgaiA+PSBsIHRoZW4gWyB3b3JkIF0gZWxzZSB3b3JkIDo6IGF1eCAoaiArIDEpXG4gIGluXG4gIG1hdGNoIGF1eCAwIHdpdGhcbiAgfCBbIFwiXCIgXSAtPiBbXVxuICB8IFsgXCJcIjsgXCJcIiBdIC0+IFsgXCJcIiBdXG4gIHwgYSAtPiBhXG5cbigqIEFyZ3VtZW50cyAqKVxubGV0IGVuY29kZV9hcmd1bWVudHMgbCA9XG4gIFN0cmluZy5jb25jYXQgXCImXCIgKExpc3QubWFwIChmdW4gKG4sIHYpIC0+IHVybGVuY29kZSBuIF4gXCI9XCIgXiB1cmxlbmNvZGUgdikgbClcblxubGV0IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIHMgPVxuICBsZXQgYXJyID0gc3BsaXQgJyYnIHMgaW5cbiAgbGV0IGxlbiA9IGFyciMjLmxlbmd0aCBpblxuICBsZXQgbmFtZV92YWx1ZV9zcGxpdCBzID0gc3BsaXRfMiAnPScgcyBpblxuICBsZXQgcmVjIGF1eCBhY2MgaWR4ID1cbiAgICBpZiBpZHggPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgYXV4XG4gICAgICAgICAgKEpzLk9wdGRlZi5jYXNlIChKcy5hcnJheV9nZXQgYXJyIGlkeCkgaW50ZXJydXB0IChmdW4gcyAtPlxuICAgICAgICAgICAgICAgSnMuT3B0ZGVmLmNhc2UgKG5hbWVfdmFsdWVfc3BsaXQgcykgaW50ZXJydXB0IChmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGdldCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgZ2V0IHgsIGdldCB5KSlcbiAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgKHByZWQgaWR4KVxuICAgICAgd2l0aCBMb2NhbF9leG4gLT4gYXV4IGFjYyAocHJlZCBpZHgpXG4gIGluXG4gIGF1eCBbXSAobGVuIC0gMSlcblxubGV0IGRlY29kZV9hcmd1bWVudHMgcyA9IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCB1cmxfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmdcbiAgICAgICBcIl4oW0hoXVtUdF1bVHRdW1BwXVtTc10/KTovLyhbMC05YS16QS1aLi1dK3xcXFxcW1swLTlhLXpBLVouLV0rXFxcXF18XFxcXFtbMC05QS1GYS1mOi5dK1xcXFxdKT8oOihbMC05XSspKT8oLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/KT8kXCIpXG5cbmxldCBmaWxlX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nIFwiXihbRmZdW0lpXVtMbF1bRWVdKTovLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/JFwiKVxuXG5sZXQgdXJsX29mX2pzX3N0cmluZyBzID1cbiAgSnMuT3B0LmNhc2VcbiAgICAodXJsX3JlIyNleGVjIHMpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKGZpbGVfcmUjI2V4ZWMgcylcbiAgICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChGaWxlXG4gICAgICAgICAgICAgICB7IGZ1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfYXJndW1lbnRzID1cbiAgICAgICAgICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgOyBmdV9mcmFnbWVudCA9XG4gICAgICAgICAgICAgICAgICAgSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgfSkpKVxuICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgbGV0IHNzbCA9IGlzX3NlY3VyZSAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxKSBpbnRlcnJ1cHQpIGluXG4gICAgICBsZXQgcG9ydF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gaWYgc3NsIHRoZW4gNDQzIGVsc2UgODBcbiAgICAgICAgfCBzIC0+IGludF9vZl9zdHJpbmcgc1xuICAgICAgaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgaW5cbiAgICAgIGxldCB1cmwgPVxuICAgICAgICB7IGh1X2hvc3QgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICA7IGh1X3BvcnQgPVxuICAgICAgICAgICAgcG9ydF9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKSlcbiAgICAgICAgOyBodV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICA7IGh1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgOyBodV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgOCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICA7IGh1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEwKSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBTb21lIChpZiBzc2wgdGhlbiBIdHRwcyB1cmwgZWxzZSBIdHRwIHVybCkpXG5cbmxldCB1cmxfb2Zfc3RyaW5nIHMgPSB1cmxfb2ZfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCBzdHJpbmdfb2ZfdXJsID0gZnVuY3Rpb25cbiAgfCBGaWxlIHsgZnVfcGF0aCA9IHBhdGg7IGZ1X2FyZ3VtZW50cyA9IGFyZ3M7IGZ1X2ZyYWdtZW50ID0gZnJhZzsgXyB9IC0+IChcbiAgICAgIFwiZmlsZTovL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cFxuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cDovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA4MCAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwc1xuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cHM6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgNDQzIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuXG5tb2R1bGUgQ3VycmVudCA9IHN0cnVjdFxuICBsZXQgbCA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLk9wdGRlZi5yZXR1cm4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24pXG4gICAgdGhlbiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvblxuICAgIGVsc2VcbiAgICAgIGxldCBlbXB0eSA9IEpzLnN0cmluZyBcIlwiIGluXG4gICAgICBvYmplY3QlanNcbiAgICAgICAgdmFsIG11dGFibGUgaHJlZiA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcHJvdG9jb2wgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3QgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3RuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwb3J0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwYXRobmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgc2VhcmNoID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBoYXNoID0gZW1wdHlcblxuICAgICAgICB2YWwgb3JpZ2luID0gSnMudW5kZWZpbmVkXG5cbiAgICAgICAgbWV0aG9kIHJlbG9hZCA9ICgpXG5cbiAgICAgICAgbWV0aG9kIHJlcGxhY2UgXyA9ICgpXG5cbiAgICAgICAgbWV0aG9kIGFzc2lnbiBfID0gKClcbiAgICAgIGVuZFxuXG4gIGxldCBob3N0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhvc3RuYW1lXG5cbiAgbGV0IHByb3RvY29sID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnByb3RvY29sXG5cbiAgbGV0IHBvcnQgPVxuICAgIChmdW4gKCkgLT5cbiAgICAgIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChKcy50b19ieXRlc3RyaW5nIGwjIy5wb3J0KSkgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZSlcbiAgICAgICgpXG5cbiAgbGV0IHBhdGhfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnBhdGhuYW1lXG5cbiAgbGV0IHBhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyaW5nXG5cbiAgbGV0IGFyZ3VtZW50cyA9XG4gICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgIChpZiBKcy5lcXVhbHMgKGwjIy5zZWFyY2gjI2NoYXJBdCAwKSAoSnMuc3RyaW5nIFwiP1wiKVxuICAgICAgIHRoZW4gbCMjLnNlYXJjaCMjc2xpY2VfZW5kIDFcbiAgICAgICBlbHNlIGwjIy5zZWFyY2gpXG5cbiAgbGV0IGdldF9mcmFnbWVudCAoKSA9XG4gICAgbGV0IHMgPSBKcy50b19ieXRlc3RyaW5nIGwjIy5oYXNoIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBDaGFyLmVxdWFsIHMuWzBdICcjJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgZWxzZSBzXG5cbiAgbGV0IHNldF9mcmFnbWVudCBzID0gbCMjLmhhc2ggOj0gSnMuYnl0ZXN0cmluZyBzXG5cbiAgbGV0IGdldCAoKSA9IHVybF9vZl9qc19zdHJpbmcgbCMjLmhyZWZcblxuICBsZXQgc2V0IHUgPSBsIyMuaHJlZiA6PSBKcy5ieXRlc3RyaW5nIChzdHJpbmdfb2ZfdXJsIHUpXG5cbiAgbGV0IGFzX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ocmVmXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxubGV0IHVwZGF0ZV9maWxlIH5uYW1lIH5jb250ZW50ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgbmFtZSBpblxuICBvdXRwdXRfc3RyaW5nIG9jIGNvbnRlbnQ7XG4gIGNsb3NlX291dCBvY1xuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDpcbiAgb3V0X2NoYW5uZWwgLT4gKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxubGV0IHNldF9jaGFubmVsX2ZsdXNoZXIgKG91dF9jaGFubmVsIDogb3V0X2NoYW5uZWwpIChmIDogc3RyaW5nIC0+IHVuaXQpID1cbiAgbGV0IGYnIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrID1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gcyAtPiBmIChKcy50b19ieXRlc3RyaW5nIHMpKVxuICBpblxuICBzZXRfY2hhbm5lbF9vdXRwdXQnIG91dF9jaGFubmVsIGYnXG5cbmxldCBzZXRfY2hhbm5lbF9maWxsZXIgKGluX2NoYW5uZWwgOiBpbl9jaGFubmVsKSAoZiA6IHVuaXQgLT4gc3RyaW5nKSA9XG4gIGxldCBmJyA6ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIGYgaW5cbiAgc2V0X2NoYW5uZWxfaW5wdXQnIGluX2NoYW5uZWwgZidcblxuZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG5leHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6XG4gIHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG5sZXQgbW91bnQgfnBhdGggZiA9XG4gIG1vdW50X2F1dG9sb2FkIHBhdGggKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmVmaXggcGF0aCAtPiBmIH5wcmVmaXggfnBhdGgpKVxuXG5sZXQgdW5tb3VudCB+cGF0aCA9IHVubW91bnQgcGF0aFxuXG5sZXQganNfb2Zfb2NhbWxfdmVyc2lvbiA9XG4gIGlmIFN0cmluZy5lcXVhbCBMaWJfdmVyc2lvbi5naXRfdmVyc2lvbiBcIlwiXG4gIHRoZW4gTGliX3ZlcnNpb24uc1xuICBlbHNlIExpYl92ZXJzaW9uLnMgXiBcIitcIiBeIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE5IEFsZXhhbmRlciBZYW5pblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJTaXplID0gb2JqZWN0XG4gIG1ldGhvZCBpbmxpbmVTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBibG9ja1NpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGJveCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvYnNlcnZlX3dpdGhPcHRpb25zIDpcbiAgICAjRG9tLm5vZGUgSnMudCAtPiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgOiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1Jlc2l6ZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCByZXNpemVPYnNlcnZlclxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgOlxuICAgICggICAocmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiByZXNpemVPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHJlc2l6ZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogcmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oYm94IDogSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uKVxuICAgICgpIDogcmVzaXplT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvYnMgPSBuZXclanMgcmVzaXplT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgKG1hdGNoIGJveCB3aXRoXG4gIHwgTm9uZSAtPiBvYnMjI29ic2VydmUgbm9kZVxuICB8IFNvbWUgYm94IC0+XG4gICAgICBsZXQgb3B0cyA9IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIGluXG4gICAgICBvcHRzIyMuYm94IDo9IGJveDtcbiAgICAgIG9icyMjb2JzZXJ2ZV93aXRoT3B0aW9ucyBub2RlIG9wdHMpO1xuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjEgUGhpbGlwIFdoaXRlXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBlbnRyeVR5cGVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW50cnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydFRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCA9IG9iamVjdFxuICBtZXRob2QgZ2V0RW50cmllcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9QZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyIDpcbiAgICAoICAgKHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgSnMudCAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IG9ic2VydmUgfmVudHJ5X3R5cGVzIH5mID1cbiAgbGV0IGVudHJ5X3R5cGVzID0gZW50cnlfdHlwZXMgfD4gTGlzdC5tYXAgSnMuc3RyaW5nIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgaW5cbiAgbGV0IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGxldCAoKSA9IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQjIy5lbnRyeVR5cGVzIDo9IGVudHJ5X3R5cGVzIGluXG4gIGxldCBvYnMgPSBuZXclanMgcGVyZm9ybWFuY2VPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBjaGlsZExpc3QgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGEgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YnRyZWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZUZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uUmVjb3JkID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZGVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbW92ZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWVzcGFjZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSA6IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX011dGF0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAobXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGNoaWxkX2xpc3QgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZXMgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhIDogYm9vbCBvcHRpb24pXG4gICAgPyhzdWJ0cmVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9maWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0IG9wdGlvbilcbiAgICAoKSA6IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvcHRfaXRlciB4IGYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb2JzID0gbmV3JWpzIG11dGF0aW9uT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0IGNmZyA9IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hpbGRfbGlzdCAoZnVuIHYgLT4gY2ZnIyMuY2hpbGRMaXN0IDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZXMgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZXMgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGEgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGEgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgc3VidHJlZSAoZnVuIHYgLT4gY2ZnIyMuc3VidHJlZSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVPbGRWYWx1ZSA6PSB2KSBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDo9IHYpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgYXR0cmlidXRlX2ZpbHRlciAoZnVuIGwgLT5cbiAgICAgICAgY2ZnIyMuYXR0cmlidXRlRmlsdGVyIDo9IEpzLmFycmF5IChBcnJheS5vZl9saXN0IGwpKVxuICBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgbm9kZSBjZmcgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IFBpZXJyZSBDaGFtYmFydCAyMDEyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9IDwgPiBKcy50XG5cbmxldCBvYmogPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpICh2IDogJ2EpID1cbiAgKCogJ18nIGlzIGFkZGVkIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG9iamVjdHMgbWV0aG9kcyAqKVxuICBKcy5VbnNhZmUuc2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSkgdlxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgPVxuICBKcy5VbnNhZmUuZGVsZXRlIHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA6ICdhIEpzLk9wdGRlZi50ID1cbiAgSnMuVW5zYWZlLmdldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0ID1cbiAgbGV0IGtleV9hcnJheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICAgIEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0IyNrZXlzIHRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gcHJlZCBrZXlfYXJyYXkjIy5sZW5ndGggZG9cbiAgICBsZXQga2V5ID1cbiAgICAgIEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBrZXlfYXJyYXkgaSkgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIkpzdGFibGUua2V5c1wiKVxuICAgIGluXG4gICAgcmVzIDo9IGtleSMjc3Vic3RyaW5nIDAgKHByZWQga2V5IyMubGVuZ3RoKSA6OiAhcmVzXG4gIGRvbmU7XG4gIExpc3QucmV2ICFyZXNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgR3LDqWdvaXJlIEhlbnJ5IDIwMTAuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcGFyc2VfIDpcbiAgICAnYSAnYiAnYyAnZC4ganNfc3RyaW5nIHQgLT4gKCdiIHQsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5XyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuICdhIC0+ICgnYiwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBqc29uIDoganNvbiBKcy50ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBpbnB1dF9yZXZpdmVyID1cbiAgbGV0IHJldml2ZXIgX3RoaXMgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiB2YWx1ZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gT2JqLnJlcHIgKHRvX2J5dGVzdHJpbmcgKFVuc2FmZS5jb2VyY2UgdmFsdWUpKVxuICAgIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBKcy5hcnJheV9lbXB0eVxuICAgICAgICAgICAgJiYgKFVuc2FmZS5jb2VyY2UgdmFsdWUpIyMubGVuZ3RoID09IDRcbiAgICAgICAgICAgICYmIFVuc2FmZS5nZXQgdmFsdWUgMCA9PSAyNTVcbiAgICB0aGVuXG4gICAgICBPYmoucmVwclxuICAgICAgICAoSnNvb19ydW50aW1lLkludDY0LmNyZWF0ZV9pbnQ2NF9sb19taV9oaVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAxKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAyKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAzKSlcbiAgICBlbHNlIE9iai5yZXByIHZhbHVlXG4gIGluXG4gIHdyYXBfbWV0aF9jYWxsYmFjayByZXZpdmVyXG5cbmxldCB1bnNhZmVfaW5wdXQgcyA9IGpzb24jI3BhcnNlXyBzIGlucHV0X3Jldml2ZXJcblxuY2xhc3MgdHlwZSBvYmogPSBvYmplY3RcbiAgbWV0aG9kIGNvbnN0cnVjdG9yIDogJ2EuICdhIGNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG1sSW50NjRfY29uc3RyID1cbiAgbGV0IGR1bW15X2ludDY0ID0gMUwgaW5cbiAgbGV0IGR1bW15X29iaiA6IG9iaiB0ID0gT2JqLm1hZ2ljIGR1bW15X2ludDY0IGluXG4gIGR1bW15X29iaiMjLmNvbnN0cnVjdG9yXG5cbmxldCBvdXRwdXRfcmV2aXZlciBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICBpZiBPYmoudGFnIChPYmoucmVwciB2YWx1ZSkgPSBPYmouc3RyaW5nX3RhZ1xuICB0aGVuIE9iai5yZXByIChieXRlc3RyaW5nIChPYmoubWFnaWMgdmFsdWUgOiBzdHJpbmcpKVxuICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgbWxJbnQ2NF9jb25zdHJcbiAgdGhlblxuICAgIGxldCB2YWx1ZSA9IFVuc2FmZS5jb2VyY2UgdmFsdWUgaW5cbiAgICBPYmoucmVwciAoYXJyYXkgW3wgMjU1OyB2YWx1ZSMjLmxvOyB2YWx1ZSMjLm1pOyB2YWx1ZSMjLmhpIHxdKVxuICBlbHNlIE9iai5yZXByIHZhbHVlXG5cbmxldCBvdXRwdXQgb2JqID0ganNvbiMjc3RyaW5naWZ5XyBvYmogKEpzLndyYXBfY2FsbGJhY2sgb3V0cHV0X3Jldml2ZXIpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgKCogVGhlIHR5cGUgb2YgQ1NTIGNvbG9ycy4gRmlyc3QgYnkgbmFtZSBhbmQgdGhlbiBieSBjb25zdHJ1Y3Rvci4gKilcbiAgdHlwZSBuYW1lID1cbiAgICB8IEFsaWNlYmx1ZVxuICAgIHwgQW50aXF1ZXdoaXRlXG4gICAgfCBBcXVhXG4gICAgfCBBcXVhbWFyaW5lXG4gICAgfCBBenVyZVxuICAgIHwgQmVpZ2VcbiAgICB8IEJpc3F1ZVxuICAgIHwgQmxhY2tcbiAgICB8IEJsYW5jaGVkYWxtb25kXG4gICAgfCBCbHVlXG4gICAgfCBCbHVldmlvbGV0XG4gICAgfCBCcm93blxuICAgIHwgQnVybHl3b29kXG4gICAgfCBDYWRldGJsdWVcbiAgICB8IENoYXJ0cmV1c2VcbiAgICB8IENob2NvbGF0ZVxuICAgIHwgQ29yYWxcbiAgICB8IENvcm5mbG93ZXJibHVlXG4gICAgfCBDb3Juc2lsa1xuICAgIHwgQ3JpbXNvblxuICAgIHwgQ3lhblxuICAgIHwgRGFya2JsdWVcbiAgICB8IERhcmtjeWFuXG4gICAgfCBEYXJrZ29sZGVucm9kXG4gICAgfCBEYXJrZ3JheVxuICAgIHwgRGFya2dyZWVuXG4gICAgfCBEYXJrZ3JleVxuICAgIHwgRGFya2toYWtpXG4gICAgfCBEYXJrbWFnZW50YVxuICAgIHwgRGFya29saXZlZ3JlZW5cbiAgICB8IERhcmtvcmFuZ2VcbiAgICB8IERhcmtvcmNoaWRcbiAgICB8IERhcmtyZWRcbiAgICB8IERhcmtzYWxtb25cbiAgICB8IERhcmtzZWFncmVlblxuICAgIHwgRGFya3NsYXRlYmx1ZVxuICAgIHwgRGFya3NsYXRlZ3JheVxuICAgIHwgRGFya3NsYXRlZ3JleVxuICAgIHwgRGFya3R1cnF1b2lzZVxuICAgIHwgRGFya3Zpb2xldFxuICAgIHwgRGVlcHBpbmtcbiAgICB8IERlZXBza3libHVlXG4gICAgfCBEaW1ncmF5XG4gICAgfCBEaW1ncmV5XG4gICAgfCBEb2RnZXJibHVlXG4gICAgfCBGaXJlYnJpY2tcbiAgICB8IEZsb3JhbHdoaXRlXG4gICAgfCBGb3Jlc3RncmVlblxuICAgIHwgRnVjaHNpYVxuICAgIHwgR2FpbnNib3JvXG4gICAgfCBHaG9zdHdoaXRlXG4gICAgfCBHb2xkXG4gICAgfCBHb2xkZW5yb2RcbiAgICB8IEdyYXlcbiAgICB8IEdyZXlcbiAgICB8IEdyZWVuXG4gICAgfCBHcmVlbnllbGxvd1xuICAgIHwgSG9uZXlkZXdcbiAgICB8IEhvdHBpbmtcbiAgICB8IEluZGlhbnJlZFxuICAgIHwgSW5kaWdvXG4gICAgfCBJdm9yeVxuICAgIHwgS2hha2lcbiAgICB8IExhdmVuZGVyXG4gICAgfCBMYXZlbmRlcmJsdXNoXG4gICAgfCBMYXduZ3JlZW5cbiAgICB8IExlbW9uY2hpZmZvblxuICAgIHwgTGlnaHRibHVlXG4gICAgfCBMaWdodGNvcmFsXG4gICAgfCBMaWdodGN5YW5cbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBMaWdodGdyYXlcbiAgICB8IExpZ2h0Z3JlZW5cbiAgICB8IExpZ2h0Z3JleVxuICAgIHwgTGlnaHRwaW5rXG4gICAgfCBMaWdodHNhbG1vblxuICAgIHwgTGlnaHRzZWFncmVlblxuICAgIHwgTGlnaHRza3libHVlXG4gICAgfCBMaWdodHNsYXRlZ3JheVxuICAgIHwgTGlnaHRzbGF0ZWdyZXlcbiAgICB8IExpZ2h0c3RlZWxibHVlXG4gICAgfCBMaWdodHllbGxvd1xuICAgIHwgTGltZVxuICAgIHwgTGltZWdyZWVuXG4gICAgfCBMaW5lblxuICAgIHwgTWFnZW50YVxuICAgIHwgTWFyb29uXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBNZWRpdW1ibHVlXG4gICAgfCBNZWRpdW1vcmNoaWRcbiAgICB8IE1lZGl1bXB1cnBsZVxuICAgIHwgTWVkaXVtc2VhZ3JlZW5cbiAgICB8IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBNaWRuaWdodGJsdWVcbiAgICB8IE1pbnRjcmVhbVxuICAgIHwgTWlzdHlyb3NlXG4gICAgfCBNb2NjYXNpblxuICAgIHwgTmF2YWpvd2hpdGVcbiAgICB8IE5hdnlcbiAgICB8IE9sZGxhY2VcbiAgICB8IE9saXZlXG4gICAgfCBPbGl2ZWRyYWJcbiAgICB8IE9yYW5nZVxuICAgIHwgT3JhbmdlcmVkXG4gICAgfCBPcmNoaWRcbiAgICB8IFBhbGVnb2xkZW5yb2RcbiAgICB8IFBhbGVncmVlblxuICAgIHwgUGFsZXR1cnF1b2lzZVxuICAgIHwgUGFsZXZpb2xldHJlZFxuICAgIHwgUGFwYXlhd2hpcFxuICAgIHwgUGVhY2hwdWZmXG4gICAgfCBQZXJ1XG4gICAgfCBQaW5rXG4gICAgfCBQbHVtXG4gICAgfCBQb3dkZXJibHVlXG4gICAgfCBQdXJwbGVcbiAgICB8IFJlZFxuICAgIHwgUm9zeWJyb3duXG4gICAgfCBSb3lhbGJsdWVcbiAgICB8IFNhZGRsZWJyb3duXG4gICAgfCBTYWxtb25cbiAgICB8IFNhbmR5YnJvd25cbiAgICB8IFNlYWdyZWVuXG4gICAgfCBTZWFzaGVsbFxuICAgIHwgU2llbm5hXG4gICAgfCBTaWx2ZXJcbiAgICB8IFNreWJsdWVcbiAgICB8IFNsYXRlYmx1ZVxuICAgIHwgU2xhdGVncmF5XG4gICAgfCBTbGF0ZWdyZXlcbiAgICB8IFNub3dcbiAgICB8IFNwcmluZ2dyZWVuXG4gICAgfCBTdGVlbGJsdWVcbiAgICB8IFRhblxuICAgIHwgVGVhbFxuICAgIHwgVGhpc3RsZVxuICAgIHwgVG9tYXRvXG4gICAgfCBUdXJxdW9pc2VcbiAgICB8IFZpb2xldFxuICAgIHwgV2hlYXRcbiAgICB8IFdoaXRlXG4gICAgfCBXaGl0ZXNtb2tlXG4gICAgfCBZZWxsb3dcbiAgICB8IFllbGxvd2dyZWVuXG5cbiAgbGV0IHN0cmluZ19vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiBcImFsaWNlYmx1ZVwiXG4gICAgfCBBbnRpcXVld2hpdGUgLT4gXCJhbnRpcXVld2hpdGVcIlxuICAgIHwgQXF1YSAtPiBcImFxdWFcIlxuICAgIHwgQXF1YW1hcmluZSAtPiBcImFxdWFtYXJpbmVcIlxuICAgIHwgQXp1cmUgLT4gXCJhenVyZVwiXG4gICAgfCBCZWlnZSAtPiBcImJlaWdlXCJcbiAgICB8IEJpc3F1ZSAtPiBcImJpc3F1ZVwiXG4gICAgfCBCbGFjayAtPiBcImJsYWNrXCJcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgIHwgQmx1ZSAtPiBcImJsdWVcIlxuICAgIHwgQmx1ZXZpb2xldCAtPiBcImJsdWV2aW9sZXRcIlxuICAgIHwgQnJvd24gLT4gXCJicm93blwiXG4gICAgfCBCdXJseXdvb2QgLT4gXCJidXJseXdvb2RcIlxuICAgIHwgQ2FkZXRibHVlIC0+IFwiY2FkZXRibHVlXCJcbiAgICB8IENoYXJ0cmV1c2UgLT4gXCJjaGFydHJldXNlXCJcbiAgICB8IENob2NvbGF0ZSAtPiBcImNob2NvbGF0ZVwiXG4gICAgfCBDb3JhbCAtPiBcImNvcmFsXCJcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgIHwgQ29ybnNpbGsgLT4gXCJjb3Juc2lsa1wiXG4gICAgfCBDcmltc29uIC0+IFwiY3JpbXNvblwiXG4gICAgfCBDeWFuIC0+IFwiY3lhblwiXG4gICAgfCBEYXJrYmx1ZSAtPiBcImRhcmtibHVlXCJcbiAgICB8IERhcmtjeWFuIC0+IFwiZGFya2N5YW5cIlxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiBcImRhcmtnb2xkZW5yb2RcIlxuICAgIHwgRGFya2dyYXkgLT4gXCJkYXJrZ3JheVwiXG4gICAgfCBEYXJrZ3JlZW4gLT4gXCJkYXJrZ3JlZW5cIlxuICAgIHwgRGFya2dyZXkgLT4gXCJkYXJrZ3JleVwiXG4gICAgfCBEYXJra2hha2kgLT4gXCJkYXJra2hha2lcIlxuICAgIHwgRGFya21hZ2VudGEgLT4gXCJkYXJrbWFnZW50YVwiXG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICB8IERhcmtvcmFuZ2UgLT4gXCJkYXJrb3JhbmdlXCJcbiAgICB8IERhcmtvcmNoaWQgLT4gXCJkYXJrb3JjaGlkXCJcbiAgICB8IERhcmtyZWQgLT4gXCJkYXJrcmVkXCJcbiAgICB8IERhcmtzYWxtb24gLT4gXCJkYXJrc2FsbW9uXCJcbiAgICB8IERhcmtzZWFncmVlbiAtPiBcImRhcmtzZWFncmVlblwiXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgfCBEYXJrdmlvbGV0IC0+IFwiZGFya3Zpb2xldFwiXG4gICAgfCBEZWVwcGluayAtPiBcImRlZXBwaW5rXCJcbiAgICB8IERlZXBza3libHVlIC0+IFwiZGVlcHNreWJsdWVcIlxuICAgIHwgRGltZ3JheSAtPiBcImRpbWdyYXlcIlxuICAgIHwgRGltZ3JleSAtPiBcImRpbWdyZXlcIlxuICAgIHwgRG9kZ2VyYmx1ZSAtPiBcImRvZGdlcmJsdWVcIlxuICAgIHwgRmlyZWJyaWNrIC0+IFwiZmlyZWJyaWNrXCJcbiAgICB8IEZsb3JhbHdoaXRlIC0+IFwiZmxvcmFsd2hpdGVcIlxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gXCJmb3Jlc3RncmVlblwiXG4gICAgfCBGdWNoc2lhIC0+IFwiZnVjaHNpYVwiXG4gICAgfCBHYWluc2Jvcm8gLT4gXCJnYWluc2Jvcm9cIlxuICAgIHwgR2hvc3R3aGl0ZSAtPiBcImdob3N0d2hpdGVcIlxuICAgIHwgR29sZCAtPiBcImdvbGRcIlxuICAgIHwgR29sZGVucm9kIC0+IFwiZ29sZGVucm9kXCJcbiAgICB8IEdyYXkgLT4gXCJncmF5XCJcbiAgICB8IEdyZWVuIC0+IFwiZ3JlZW5cIlxuICAgIHwgR3JlZW55ZWxsb3cgLT4gXCJncmVlbnllbGxvd1wiXG4gICAgfCBHcmV5IC0+IFwiZ3JleVwiXG4gICAgfCBIb25leWRldyAtPiBcImhvbmV5ZGV3XCJcbiAgICB8IEhvdHBpbmsgLT4gXCJob3RwaW5rXCJcbiAgICB8IEluZGlhbnJlZCAtPiBcImluZGlhbnJlZFwiXG4gICAgfCBJbmRpZ28gLT4gXCJpbmRpZ29cIlxuICAgIHwgSXZvcnkgLT4gXCJpdm9yeVwiXG4gICAgfCBLaGFraSAtPiBcImtoYWtpXCJcbiAgICB8IExhdmVuZGVyIC0+IFwibGF2ZW5kZXJcIlxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiBcImxhdmVuZGVyYmx1c2hcIlxuICAgIHwgTGF3bmdyZWVuIC0+IFwibGF3bmdyZWVuXCJcbiAgICB8IExlbW9uY2hpZmZvbiAtPiBcImxlbW9uY2hpZmZvblwiXG4gICAgfCBMaWdodGJsdWUgLT4gXCJsaWdodGJsdWVcIlxuICAgIHwgTGlnaHRjb3JhbCAtPiBcImxpZ2h0Y29yYWxcIlxuICAgIHwgTGlnaHRjeWFuIC0+IFwibGlnaHRjeWFuXCJcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgIHwgTGlnaHRncmF5IC0+IFwibGlnaHRncmF5XCJcbiAgICB8IExpZ2h0Z3JlZW4gLT4gXCJsaWdodGdyZWVuXCJcbiAgICB8IExpZ2h0Z3JleSAtPiBcImxpZ2h0Z3JleVwiXG4gICAgfCBMaWdodHBpbmsgLT4gXCJsaWdodHBpbmtcIlxuICAgIHwgTGlnaHRzYWxtb24gLT4gXCJsaWdodHNhbG1vblwiXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IFwibGlnaHRzZWFncmVlblwiXG4gICAgfCBMaWdodHNreWJsdWUgLT4gXCJsaWdodHNreWJsdWVcIlxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gXCJsaWdodHllbGxvd1wiXG4gICAgfCBMaW1lIC0+IFwibGltZVwiXG4gICAgfCBMaW1lZ3JlZW4gLT4gXCJsaW1lZ3JlZW5cIlxuICAgIHwgTGluZW4gLT4gXCJsaW5lblwiXG4gICAgfCBNYWdlbnRhIC0+IFwibWFnZW50YVwiXG4gICAgfCBNYXJvb24gLT4gXCJtYXJvb25cIlxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgIHwgTWVkaXVtYmx1ZSAtPiBcIm1lZGl1bWJsdWVcIlxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IFwibWVkaXVtb3JjaGlkXCJcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiBcIm1lZGl1bXB1cnBsZVwiXG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgIHwgTWlkbmlnaHRibHVlIC0+IFwibWlkbmlnaHRibHVlXCJcbiAgICB8IE1pbnRjcmVhbSAtPiBcIm1pbnRjcmVhbVwiXG4gICAgfCBNaXN0eXJvc2UgLT4gXCJtaXN0eXJvc2VcIlxuICAgIHwgTW9jY2FzaW4gLT4gXCJtb2NjYXNpblwiXG4gICAgfCBOYXZham93aGl0ZSAtPiBcIm5hdmFqb3doaXRlXCJcbiAgICB8IE5hdnkgLT4gXCJuYXZ5XCJcbiAgICB8IE9sZGxhY2UgLT4gXCJvbGRsYWNlXCJcbiAgICB8IE9saXZlIC0+IFwib2xpdmVcIlxuICAgIHwgT2xpdmVkcmFiIC0+IFwib2xpdmVkcmFiXCJcbiAgICB8IE9yYW5nZSAtPiBcIm9yYW5nZVwiXG4gICAgfCBPcmFuZ2VyZWQgLT4gXCJvcmFuZ2VyZWRcIlxuICAgIHwgT3JjaGlkIC0+IFwib3JjaGlkXCJcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gXCJwYWxlZ29sZGVucm9kXCJcbiAgICB8IFBhbGVncmVlbiAtPiBcInBhbGVncmVlblwiXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IFwicGFsZXZpb2xldHJlZFwiXG4gICAgfCBQYXBheWF3aGlwIC0+IFwicGFwYXlhd2hpcFwiXG4gICAgfCBQZWFjaHB1ZmYgLT4gXCJwZWFjaHB1ZmZcIlxuICAgIHwgUGVydSAtPiBcInBlcnVcIlxuICAgIHwgUGluayAtPiBcInBpbmtcIlxuICAgIHwgUGx1bSAtPiBcInBsdW1cIlxuICAgIHwgUG93ZGVyYmx1ZSAtPiBcInBvd2RlcmJsdWVcIlxuICAgIHwgUHVycGxlIC0+IFwicHVycGxlXCJcbiAgICB8IFJlZCAtPiBcInJlZFwiXG4gICAgfCBSb3N5YnJvd24gLT4gXCJyb3N5YnJvd25cIlxuICAgIHwgUm95YWxibHVlIC0+IFwicm95YWxibHVlXCJcbiAgICB8IFNhZGRsZWJyb3duIC0+IFwic2FkZGxlYnJvd25cIlxuICAgIHwgU2FsbW9uIC0+IFwic2FsbW9uXCJcbiAgICB8IFNhbmR5YnJvd24gLT4gXCJzYW5keWJyb3duXCJcbiAgICB8IFNlYWdyZWVuIC0+IFwic2VhZ3JlZW5cIlxuICAgIHwgU2Vhc2hlbGwgLT4gXCJzZWFzaGVsbFwiXG4gICAgfCBTaWVubmEgLT4gXCJzaWVubmFcIlxuICAgIHwgU2lsdmVyIC0+IFwic2lsdmVyXCJcbiAgICB8IFNreWJsdWUgLT4gXCJza3libHVlXCJcbiAgICB8IFNsYXRlYmx1ZSAtPiBcInNsYXRlYmx1ZVwiXG4gICAgfCBTbGF0ZWdyYXkgLT4gXCJzbGF0ZWdyYXlcIlxuICAgIHwgU2xhdGVncmV5IC0+IFwic2xhdGVncmV5XCJcbiAgICB8IFNub3cgLT4gXCJzbm93XCJcbiAgICB8IFNwcmluZ2dyZWVuIC0+IFwic3ByaW5nZ3JlZW5cIlxuICAgIHwgU3RlZWxibHVlIC0+IFwic3RlZWxibHVlXCJcbiAgICB8IFRhbiAtPiBcInRhblwiXG4gICAgfCBUZWFsIC0+IFwidGVhbFwiXG4gICAgfCBUaGlzdGxlIC0+IFwidGhpc3RsZVwiXG4gICAgfCBUb21hdG8gLT4gXCJ0b21hdG9cIlxuICAgIHwgVHVycXVvaXNlIC0+IFwidHVycXVvaXNlXCJcbiAgICB8IFZpb2xldCAtPiBcInZpb2xldFwiXG4gICAgfCBXaGVhdCAtPiBcIndoZWF0XCJcbiAgICB8IFdoaXRlIC0+IFwid2hpdGVcIlxuICAgIHwgV2hpdGVzbW9rZSAtPiBcIndoaXRlc21va2VcIlxuICAgIHwgWWVsbG93IC0+IFwieWVsbG93XCJcbiAgICB8IFllbGxvd2dyZWVuIC0+IFwieWVsbG93Z3JlZW5cIlxuXG4gIGxldCBuYW1lX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcImFsaWNlYmx1ZVwiIC0+IEFsaWNlYmx1ZVxuICAgIHwgXCJhbnRpcXVld2hpdGVcIiAtPiBBbnRpcXVld2hpdGVcbiAgICB8IFwiYXF1YVwiIC0+IEFxdWFcbiAgICB8IFwiYXF1YW1hcmluZVwiIC0+IEFxdWFtYXJpbmVcbiAgICB8IFwiYXp1cmVcIiAtPiBBenVyZVxuICAgIHwgXCJiZWlnZVwiIC0+IEJlaWdlXG4gICAgfCBcImJpc3F1ZVwiIC0+IEJpc3F1ZVxuICAgIHwgXCJibGFja1wiIC0+IEJsYWNrXG4gICAgfCBcImJsYW5jaGVkYWxtb25kXCIgLT4gQmxhbmNoZWRhbG1vbmRcbiAgICB8IFwiYmx1ZVwiIC0+IEJsdWVcbiAgICB8IFwiYmx1ZXZpb2xldFwiIC0+IEJsdWV2aW9sZXRcbiAgICB8IFwiYnJvd25cIiAtPiBCcm93blxuICAgIHwgXCJidXJseXdvb2RcIiAtPiBCdXJseXdvb2RcbiAgICB8IFwiY2FkZXRibHVlXCIgLT4gQ2FkZXRibHVlXG4gICAgfCBcImNoYXJ0cmV1c2VcIiAtPiBDaGFydHJldXNlXG4gICAgfCBcImNob2NvbGF0ZVwiIC0+IENob2NvbGF0ZVxuICAgIHwgXCJjb3JhbFwiIC0+IENvcmFsXG4gICAgfCBcImNvcm5mbG93ZXJibHVlXCIgLT4gQ29ybmZsb3dlcmJsdWVcbiAgICB8IFwiY29ybnNpbGtcIiAtPiBDb3Juc2lsa1xuICAgIHwgXCJjcmltc29uXCIgLT4gQ3JpbXNvblxuICAgIHwgXCJjeWFuXCIgLT4gQ3lhblxuICAgIHwgXCJkYXJrYmx1ZVwiIC0+IERhcmtibHVlXG4gICAgfCBcImRhcmtjeWFuXCIgLT4gRGFya2N5YW5cbiAgICB8IFwiZGFya2dvbGRlbnJvZFwiIC0+IERhcmtnb2xkZW5yb2RcbiAgICB8IFwiZGFya2dyYXlcIiAtPiBEYXJrZ3JheVxuICAgIHwgXCJkYXJrZ3JlZW5cIiAtPiBEYXJrZ3JlZW5cbiAgICB8IFwiZGFya2dyZXlcIiAtPiBEYXJrZ3JleVxuICAgIHwgXCJkYXJra2hha2lcIiAtPiBEYXJra2hha2lcbiAgICB8IFwiZGFya21hZ2VudGFcIiAtPiBEYXJrbWFnZW50YVxuICAgIHwgXCJkYXJrb2xpdmVncmVlblwiIC0+IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBcImRhcmtvcmFuZ2VcIiAtPiBEYXJrb3JhbmdlXG4gICAgfCBcImRhcmtvcmNoaWRcIiAtPiBEYXJrb3JjaGlkXG4gICAgfCBcImRhcmtyZWRcIiAtPiBEYXJrcmVkXG4gICAgfCBcImRhcmtzYWxtb25cIiAtPiBEYXJrc2FsbW9uXG4gICAgfCBcImRhcmtzZWFncmVlblwiIC0+IERhcmtzZWFncmVlblxuICAgIHwgXCJkYXJrc2xhdGVibHVlXCIgLT4gRGFya3NsYXRlYmx1ZVxuICAgIHwgXCJkYXJrc2xhdGVncmF5XCIgLT4gRGFya3NsYXRlZ3JheVxuICAgIHwgXCJkYXJrc2xhdGVncmV5XCIgLT4gRGFya3NsYXRlZ3JleVxuICAgIHwgXCJkYXJrdHVycXVvaXNlXCIgLT4gRGFya3R1cnF1b2lzZVxuICAgIHwgXCJkYXJrdmlvbGV0XCIgLT4gRGFya3Zpb2xldFxuICAgIHwgXCJkZWVwcGlua1wiIC0+IERlZXBwaW5rXG4gICAgfCBcImRlZXBza3libHVlXCIgLT4gRGVlcHNreWJsdWVcbiAgICB8IFwiZGltZ3JheVwiIC0+IERpbWdyYXlcbiAgICB8IFwiZGltZ3JleVwiIC0+IERpbWdyZXlcbiAgICB8IFwiZG9kZ2VyYmx1ZVwiIC0+IERvZGdlcmJsdWVcbiAgICB8IFwiZmlyZWJyaWNrXCIgLT4gRmlyZWJyaWNrXG4gICAgfCBcImZsb3JhbHdoaXRlXCIgLT4gRmxvcmFsd2hpdGVcbiAgICB8IFwiZm9yZXN0Z3JlZW5cIiAtPiBGb3Jlc3RncmVlblxuICAgIHwgXCJmdWNoc2lhXCIgLT4gRnVjaHNpYVxuICAgIHwgXCJnYWluc2Jvcm9cIiAtPiBHYWluc2Jvcm9cbiAgICB8IFwiZ2hvc3R3aGl0ZVwiIC0+IEdob3N0d2hpdGVcbiAgICB8IFwiZ29sZFwiIC0+IEdvbGRcbiAgICB8IFwiZ29sZGVucm9kXCIgLT4gR29sZGVucm9kXG4gICAgfCBcImdyYXlcIiAtPiBHcmF5XG4gICAgfCBcImdyZWVuXCIgLT4gR3JlZW5cbiAgICB8IFwiZ3JlZW55ZWxsb3dcIiAtPiBHcmVlbnllbGxvd1xuICAgIHwgXCJncmV5XCIgLT4gR3JleVxuICAgIHwgXCJob25leWRld1wiIC0+IEhvbmV5ZGV3XG4gICAgfCBcImhvdHBpbmtcIiAtPiBIb3RwaW5rXG4gICAgfCBcImluZGlhbnJlZFwiIC0+IEluZGlhbnJlZFxuICAgIHwgXCJpbmRpZ29cIiAtPiBJbmRpZ29cbiAgICB8IFwiaXZvcnlcIiAtPiBJdm9yeVxuICAgIHwgXCJraGFraVwiIC0+IEtoYWtpXG4gICAgfCBcImxhdmVuZGVyXCIgLT4gTGF2ZW5kZXJcbiAgICB8IFwibGF2ZW5kZXJibHVzaFwiIC0+IExhdmVuZGVyYmx1c2hcbiAgICB8IFwibGF3bmdyZWVuXCIgLT4gTGF3bmdyZWVuXG4gICAgfCBcImxlbW9uY2hpZmZvblwiIC0+IExlbW9uY2hpZmZvblxuICAgIHwgXCJsaWdodGJsdWVcIiAtPiBMaWdodGJsdWVcbiAgICB8IFwibGlnaHRjb3JhbFwiIC0+IExpZ2h0Y29yYWxcbiAgICB8IFwibGlnaHRjeWFuXCIgLT4gTGlnaHRjeWFuXG4gICAgfCBcImxpZ2h0Z29sZGVucm9keWVsbG93XCIgLT4gTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IFwibGlnaHRncmF5XCIgLT4gTGlnaHRncmF5XG4gICAgfCBcImxpZ2h0Z3JlZW5cIiAtPiBMaWdodGdyZWVuXG4gICAgfCBcImxpZ2h0Z3JleVwiIC0+IExpZ2h0Z3JleVxuICAgIHwgXCJsaWdodHBpbmtcIiAtPiBMaWdodHBpbmtcbiAgICB8IFwibGlnaHRzYWxtb25cIiAtPiBMaWdodHNhbG1vblxuICAgIHwgXCJsaWdodHNlYWdyZWVuXCIgLT4gTGlnaHRzZWFncmVlblxuICAgIHwgXCJsaWdodHNreWJsdWVcIiAtPiBMaWdodHNreWJsdWVcbiAgICB8IFwibGlnaHRzbGF0ZWdyYXlcIiAtPiBMaWdodHNsYXRlZ3JheVxuICAgIHwgXCJsaWdodHNsYXRlZ3JleVwiIC0+IExpZ2h0c2xhdGVncmV5XG4gICAgfCBcImxpZ2h0c3RlZWxibHVlXCIgLT4gTGlnaHRzdGVlbGJsdWVcbiAgICB8IFwibGlnaHR5ZWxsb3dcIiAtPiBMaWdodHllbGxvd1xuICAgIHwgXCJsaW1lXCIgLT4gTGltZVxuICAgIHwgXCJsaW1lZ3JlZW5cIiAtPiBMaW1lZ3JlZW5cbiAgICB8IFwibGluZW5cIiAtPiBMaW5lblxuICAgIHwgXCJtYWdlbnRhXCIgLT4gTWFnZW50YVxuICAgIHwgXCJtYXJvb25cIiAtPiBNYXJvb25cbiAgICB8IFwibWVkaXVtYXF1YW1hcmluZVwiIC0+IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IFwibWVkaXVtYmx1ZVwiIC0+IE1lZGl1bWJsdWVcbiAgICB8IFwibWVkaXVtb3JjaGlkXCIgLT4gTWVkaXVtb3JjaGlkXG4gICAgfCBcIm1lZGl1bXB1cnBsZVwiIC0+IE1lZGl1bXB1cnBsZVxuICAgIHwgXCJtZWRpdW1zZWFncmVlblwiIC0+IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBcIm1lZGl1bXNsYXRlYmx1ZVwiIC0+IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgXCJtZWRpdW1zcHJpbmdncmVlblwiIC0+IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBcIm1lZGl1bXR1cnF1b2lzZVwiIC0+IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgXCJtZWRpdW12aW9sZXRyZWRcIiAtPiBNZWRpdW12aW9sZXRyZWRcbiAgICB8IFwibWlkbmlnaHRibHVlXCIgLT4gTWlkbmlnaHRibHVlXG4gICAgfCBcIm1pbnRjcmVhbVwiIC0+IE1pbnRjcmVhbVxuICAgIHwgXCJtaXN0eXJvc2VcIiAtPiBNaXN0eXJvc2VcbiAgICB8IFwibW9jY2FzaW5cIiAtPiBNb2NjYXNpblxuICAgIHwgXCJuYXZham93aGl0ZVwiIC0+IE5hdmFqb3doaXRlXG4gICAgfCBcIm5hdnlcIiAtPiBOYXZ5XG4gICAgfCBcIm9sZGxhY2VcIiAtPiBPbGRsYWNlXG4gICAgfCBcIm9saXZlXCIgLT4gT2xpdmVcbiAgICB8IFwib2xpdmVkcmFiXCIgLT4gT2xpdmVkcmFiXG4gICAgfCBcIm9yYW5nZVwiIC0+IE9yYW5nZVxuICAgIHwgXCJvcmFuZ2VyZWRcIiAtPiBPcmFuZ2VyZWRcbiAgICB8IFwib3JjaGlkXCIgLT4gT3JjaGlkXG4gICAgfCBcInBhbGVnb2xkZW5yb2RcIiAtPiBQYWxlZ29sZGVucm9kXG4gICAgfCBcInBhbGVncmVlblwiIC0+IFBhbGVncmVlblxuICAgIHwgXCJwYWxldHVycXVvaXNlXCIgLT4gUGFsZXR1cnF1b2lzZVxuICAgIHwgXCJwYWxldmlvbGV0cmVkXCIgLT4gUGFsZXZpb2xldHJlZFxuICAgIHwgXCJwYXBheWF3aGlwXCIgLT4gUGFwYXlhd2hpcFxuICAgIHwgXCJwZWFjaHB1ZmZcIiAtPiBQZWFjaHB1ZmZcbiAgICB8IFwicGVydVwiIC0+IFBlcnVcbiAgICB8IFwicGlua1wiIC0+IFBpbmtcbiAgICB8IFwicGx1bVwiIC0+IFBsdW1cbiAgICB8IFwicG93ZGVyYmx1ZVwiIC0+IFBvd2RlcmJsdWVcbiAgICB8IFwicHVycGxlXCIgLT4gUHVycGxlXG4gICAgfCBcInJlZFwiIC0+IFJlZFxuICAgIHwgXCJyb3N5YnJvd25cIiAtPiBSb3N5YnJvd25cbiAgICB8IFwicm95YWxibHVlXCIgLT4gUm95YWxibHVlXG4gICAgfCBcInNhZGRsZWJyb3duXCIgLT4gU2FkZGxlYnJvd25cbiAgICB8IFwic2FsbW9uXCIgLT4gU2FsbW9uXG4gICAgfCBcInNhbmR5YnJvd25cIiAtPiBTYW5keWJyb3duXG4gICAgfCBcInNlYWdyZWVuXCIgLT4gU2VhZ3JlZW5cbiAgICB8IFwic2Vhc2hlbGxcIiAtPiBTZWFzaGVsbFxuICAgIHwgXCJzaWVubmFcIiAtPiBTaWVubmFcbiAgICB8IFwic2lsdmVyXCIgLT4gU2lsdmVyXG4gICAgfCBcInNreWJsdWVcIiAtPiBTa3libHVlXG4gICAgfCBcInNsYXRlYmx1ZVwiIC0+IFNsYXRlYmx1ZVxuICAgIHwgXCJzbGF0ZWdyYXlcIiAtPiBTbGF0ZWdyYXlcbiAgICB8IFwic2xhdGVncmV5XCIgLT4gU2xhdGVncmV5XG4gICAgfCBcInNub3dcIiAtPiBTbm93XG4gICAgfCBcInNwcmluZ2dyZWVuXCIgLT4gU3ByaW5nZ3JlZW5cbiAgICB8IFwic3RlZWxibHVlXCIgLT4gU3RlZWxibHVlXG4gICAgfCBcInRhblwiIC0+IFRhblxuICAgIHwgXCJ0ZWFsXCIgLT4gVGVhbFxuICAgIHwgXCJ0aGlzdGxlXCIgLT4gVGhpc3RsZVxuICAgIHwgXCJ0b21hdG9cIiAtPiBUb21hdG9cbiAgICB8IFwidHVycXVvaXNlXCIgLT4gVHVycXVvaXNlXG4gICAgfCBcInZpb2xldFwiIC0+IFZpb2xldFxuICAgIHwgXCJ3aGVhdFwiIC0+IFdoZWF0XG4gICAgfCBcIndoaXRlXCIgLT4gV2hpdGVcbiAgICB8IFwid2hpdGVzbW9rZVwiIC0+IFdoaXRlc21va2VcbiAgICB8IFwieWVsbG93XCIgLT4gWWVsbG93XG4gICAgfCBcInllbGxvd2dyZWVuXCIgLT4gWWVsbG93Z3JlZW5cbiAgICB8IHMgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvciBuYW1lXCIpKVxuXG4gIGxldCByZ2Jfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gMjQwLCAyNDgsIDI1NVxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IDI1MCwgMjM1LCAyMTVcbiAgICB8IEFxdWEgLT4gMCwgMjU1LCAyNTVcbiAgICB8IEFxdWFtYXJpbmUgLT4gMTI3LCAyNTUsIDIxMlxuICAgIHwgQXp1cmUgLT4gMjQwLCAyNTUsIDI1NVxuICAgIHwgQmVpZ2UgLT4gMjQ1LCAyNDUsIDIyMFxuICAgIHwgQmlzcXVlIC0+IDI1NSwgMjI4LCAxOTZcbiAgICB8IEJsYWNrIC0+IDAsIDAsIDBcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IDI1NSwgMjM1LCAyMDVcbiAgICB8IEJsdWUgLT4gMCwgMCwgMjU1XG4gICAgfCBCbHVldmlvbGV0IC0+IDEzOCwgNDMsIDIyNlxuICAgIHwgQnJvd24gLT4gMTY1LCA0MiwgNDJcbiAgICB8IEJ1cmx5d29vZCAtPiAyMjIsIDE4NCwgMTM1XG4gICAgfCBDYWRldGJsdWUgLT4gOTUsIDE1OCwgMTYwXG4gICAgfCBDaGFydHJldXNlIC0+IDEyNywgMjU1LCAwXG4gICAgfCBDaG9jb2xhdGUgLT4gMjEwLCAxMDUsIDMwXG4gICAgfCBDb3JhbCAtPiAyNTUsIDEyNywgODBcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IDEwMCwgMTQ5LCAyMzdcbiAgICB8IENvcm5zaWxrIC0+IDI1NSwgMjQ4LCAyMjBcbiAgICB8IENyaW1zb24gLT4gMjIwLCAyMCwgNjBcbiAgICB8IEN5YW4gLT4gMCwgMjU1LCAyNTVcbiAgICB8IERhcmtibHVlIC0+IDAsIDAsIDEzOVxuICAgIHwgRGFya2N5YW4gLT4gMCwgMTM5LCAxMzlcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gMTg0LCAxMzQsIDExXG4gICAgfCBEYXJrZ3JheSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJrZ3JlZW4gLT4gMCwgMTAwLCAwXG4gICAgfCBEYXJrZ3JleSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJra2hha2kgLT4gMTg5LCAxODMsIDEwN1xuICAgIHwgRGFya21hZ2VudGEgLT4gMTM5LCAwLCAxMzlcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IDg1LCAxMDcsIDQ3XG4gICAgfCBEYXJrb3JhbmdlIC0+IDI1NSwgMTQwLCAwXG4gICAgfCBEYXJrb3JjaGlkIC0+IDE1MywgNTAsIDIwNFxuICAgIHwgRGFya3JlZCAtPiAxMzksIDAsIDBcbiAgICB8IERhcmtzYWxtb24gLT4gMjMzLCAxNTAsIDEyMlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IDE0MywgMTg4LCAxNDNcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gNzIsIDYxLCAxMzlcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IDAsIDIwNiwgMjA5XG4gICAgfCBEYXJrdmlvbGV0IC0+IDE0OCwgMCwgMjExXG4gICAgfCBEZWVwcGluayAtPiAyNTUsIDIwLCAxNDdcbiAgICB8IERlZXBza3libHVlIC0+IDAsIDE5MSwgMjU1XG4gICAgfCBEaW1ncmF5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERpbWdyZXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRG9kZ2VyYmx1ZSAtPiAzMCwgMTQ0LCAyNTVcbiAgICB8IEZpcmVicmljayAtPiAxNzgsIDM0LCAzNFxuICAgIHwgRmxvcmFsd2hpdGUgLT4gMjU1LCAyNTAsIDI0MFxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gMzQsIDEzOSwgMzRcbiAgICB8IEZ1Y2hzaWEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IEdhaW5zYm9ybyAtPiAyMjAsIDIyMCwgMjIwXG4gICAgfCBHaG9zdHdoaXRlIC0+IDI0OCwgMjQ4LCAyNTVcbiAgICB8IEdvbGQgLT4gMjU1LCAyMTUsIDBcbiAgICB8IEdvbGRlbnJvZCAtPiAyMTgsIDE2NSwgMzJcbiAgICB8IEdyYXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgR3JlZW4gLT4gMCwgMTI4LCAwXG4gICAgfCBHcmVlbnllbGxvdyAtPiAxNzMsIDI1NSwgNDdcbiAgICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgSG9uZXlkZXcgLT4gMjQwLCAyNTUsIDI0MFxuICAgIHwgSG90cGluayAtPiAyNTUsIDEwNSwgMTgwXG4gICAgfCBJbmRpYW5yZWQgLT4gMjA1LCA5MiwgOTJcbiAgICB8IEluZGlnbyAtPiA3NSwgMCwgMTMwXG4gICAgfCBJdm9yeSAtPiAyNTUsIDI1NSwgMjQwXG4gICAgfCBLaGFraSAtPiAyNDAsIDIzMCwgMTQwXG4gICAgfCBMYXZlbmRlciAtPiAyMzAsIDIzMCwgMjUwXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IDI1NSwgMjQwLCAyNDVcbiAgICB8IExhd25ncmVlbiAtPiAxMjQsIDI1MiwgMFxuICAgIHwgTGVtb25jaGlmZm9uIC0+IDI1NSwgMjUwLCAyMDVcbiAgICB8IExpZ2h0Ymx1ZSAtPiAxNzMsIDIxNiwgMjMwXG4gICAgfCBMaWdodGNvcmFsIC0+IDI0MCwgMTI4LCAxMjhcbiAgICB8IExpZ2h0Y3lhbiAtPiAyMjQsIDI1NSwgMjU1XG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiAyNTAsIDI1MCwgMjEwXG4gICAgfCBMaWdodGdyYXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRncmVlbiAtPiAxNDQsIDIzOCwgMTQ0XG4gICAgfCBMaWdodGdyZXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRwaW5rIC0+IDI1NSwgMTgyLCAxOTNcbiAgICB8IExpZ2h0c2FsbW9uIC0+IDI1NSwgMTYwLCAxMjJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gMzIsIDE3OCwgMTcwXG4gICAgfCBMaWdodHNreWJsdWUgLT4gMTM1LCAyMDYsIDI1MFxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gMTc2LCAxOTYsIDIyMlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gMjU1LCAyNTUsIDIyNFxuICAgIHwgTGltZSAtPiAwLCAyNTUsIDBcbiAgICB8IExpbWVncmVlbiAtPiA1MCwgMjA1LCA1MFxuICAgIHwgTGluZW4gLT4gMjUwLCAyNDAsIDIzMFxuICAgIHwgTWFnZW50YSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgTWFyb29uIC0+IDEyOCwgMCwgMFxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiAxMDIsIDIwNSwgMTcwXG4gICAgfCBNZWRpdW1ibHVlIC0+IDAsIDAsIDIwNVxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IDE4NiwgODUsIDIxMVxuICAgIHwgTWVkaXVtcHVycGxlIC0+IDE0NywgMTEyLCAyMTlcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IDYwLCAxNzksIDExM1xuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IDEyMywgMTA0LCAyMzhcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IDAsIDI1MCwgMTU0XG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gNzIsIDIwOSwgMjA0XG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gMTk5LCAyMSwgMTMzXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gMjUsIDI1LCAxMTJcbiAgICB8IE1pbnRjcmVhbSAtPiAyNDUsIDI1NSwgMjUwXG4gICAgfCBNaXN0eXJvc2UgLT4gMjU1LCAyMjgsIDIyNVxuICAgIHwgTW9jY2FzaW4gLT4gMjU1LCAyMjgsIDE4MVxuICAgIHwgTmF2YWpvd2hpdGUgLT4gMjU1LCAyMjIsIDE3M1xuICAgIHwgTmF2eSAtPiAwLCAwLCAxMjhcbiAgICB8IE9sZGxhY2UgLT4gMjUzLCAyNDUsIDIzMFxuICAgIHwgT2xpdmUgLT4gMTI4LCAxMjgsIDBcbiAgICB8IE9saXZlZHJhYiAtPiAxMDcsIDE0MiwgMzVcbiAgICB8IE9yYW5nZSAtPiAyNTUsIDE2NSwgMFxuICAgIHwgT3JhbmdlcmVkIC0+IDI1NSwgNjksIDBcbiAgICB8IE9yY2hpZCAtPiAyMTgsIDExMiwgMjE0XG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IDIzOCwgMjMyLCAxNzBcbiAgICB8IFBhbGVncmVlbiAtPiAxNTIsIDI1MSwgMTUyXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IDE3NSwgMjM4LCAyMzhcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gMjE5LCAxMTIsIDE0N1xuICAgIHwgUGFwYXlhd2hpcCAtPiAyNTUsIDIzOSwgMjEzXG4gICAgfCBQZWFjaHB1ZmYgLT4gMjU1LCAyMTgsIDE4NVxuICAgIHwgUGVydSAtPiAyMDUsIDEzMywgNjNcbiAgICB8IFBpbmsgLT4gMjU1LCAxOTIsIDIwM1xuICAgIHwgUGx1bSAtPiAyMjEsIDE2MCwgMjIxXG4gICAgfCBQb3dkZXJibHVlIC0+IDE3NiwgMjI0LCAyMzBcbiAgICB8IFB1cnBsZSAtPiAxMjgsIDAsIDEyOFxuICAgIHwgUmVkIC0+IDI1NSwgMCwgMFxuICAgIHwgUm9zeWJyb3duIC0+IDE4OCwgMTQzLCAxNDNcbiAgICB8IFJveWFsYmx1ZSAtPiA2NSwgMTA1LCAyMjVcbiAgICB8IFNhZGRsZWJyb3duIC0+IDEzOSwgNjksIDE5XG4gICAgfCBTYWxtb24gLT4gMjUwLCAxMjgsIDExNFxuICAgIHwgU2FuZHlicm93biAtPiAyNDQsIDE2NCwgOTZcbiAgICB8IFNlYWdyZWVuIC0+IDQ2LCAxMzksIDg3XG4gICAgfCBTZWFzaGVsbCAtPiAyNTUsIDI0NSwgMjM4XG4gICAgfCBTaWVubmEgLT4gMTYwLCA4MiwgNDVcbiAgICB8IFNpbHZlciAtPiAxOTIsIDE5MiwgMTkyXG4gICAgfCBTa3libHVlIC0+IDEzNSwgMjA2LCAyMzVcbiAgICB8IFNsYXRlYmx1ZSAtPiAxMDYsIDkwLCAyMDVcbiAgICB8IFNsYXRlZ3JheSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbGF0ZWdyZXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU25vdyAtPiAyNTUsIDI1MCwgMjUwXG4gICAgfCBTcHJpbmdncmVlbiAtPiAwLCAyNTUsIDEyN1xuICAgIHwgU3RlZWxibHVlIC0+IDcwLCAxMzAsIDE4MFxuICAgIHwgVGFuIC0+IDIxMCwgMTgwLCAxNDBcbiAgICB8IFRlYWwgLT4gMCwgMTI4LCAxMjhcbiAgICB8IFRoaXN0bGUgLT4gMjE2LCAxOTEsIDIxNlxuICAgIHwgVG9tYXRvIC0+IDI1NSwgOTksIDcxXG4gICAgfCBUdXJxdW9pc2UgLT4gNjQsIDIyNCwgMjA4XG4gICAgfCBWaW9sZXQgLT4gMjM4LCAxMzAsIDIzOFxuICAgIHwgV2hlYXQgLT4gMjQ1LCAyMjIsIDE3OVxuICAgIHwgV2hpdGUgLT4gMjU1LCAyNTUsIDI1NVxuICAgIHwgV2hpdGVzbW9rZSAtPiAyNDUsIDI0NSwgMjQ1XG4gICAgfCBZZWxsb3cgLT4gMjU1LCAyNTUsIDBcbiAgICB8IFllbGxvd2dyZWVuIC0+IDE1NCwgMjA1LCA1MFxuXG4gIHR5cGUgdCA9XG4gICAgfCBOYW1lIG9mIG5hbWVcbiAgICB8IFJHQiBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUmVkLCBHcmVlbiBhbmQgQmx1ZSB2YWx1ZXMuIENsaXBwZWQgdG8gW1swLi4yNTVdXSBieSBtb3N0IChBbGw/KVxuICAgICAgICAgICAgYnJvd3NlcnMuICopXG4gICAgfCBSR0JfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIGFyZSBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuICopXG4gICAgfCBSR0JBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgUkdCIHdpdGggYWRkaXRpb25hbCB0cmFuc3BhcmVuY3kgYXJndW1lbnQuIE9wYWNpdHkgc2hvdWxkIGJlIGluXG4gICAgICAgICAgICBbMC5dIChjb21wbGV0ZWx5IHRyYW5zcGFyZW50KSBhbmQgWzEuXSAoY29tcGxldGVseSBvcGFxdWUpLiAqKVxuICAgIHwgUkdCQV9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBzcGVjaWZpZWQgYXMgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiBBbHBoYVxuICAgICAgICAgICAgY2hhbm5lbCAob3BhY2l0eSkgaXMgc3RpbGwgYSBbMC5dIHRvIFsxLl0gZmxvYXQuICopXG4gICAgfCBIU0wgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIEh1ZSwgU2F0dXJhdGlvbiBhbmQgTGlnaHRuZXNzIHZhbHVlcy4gSHVlIGlzIGFuIGFuZ2xlIGluIGRlZ3JlZSAoaW5cbiAgICAgICAgICAgIGludGVydmFsIFtbMC4uMzYwW10pLiBTYXR1cmF0aW9uIGlzIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGNvbG9ybGVzcy4gTGlnaHRuZXNzIGlzIGFsc28gYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgYmxhY2suICopXG4gICAgfCBIU0xBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgSFNMIHdpdGggYW4gb3BhY2l0eSBhcmd1bWVudCBiZXR3ZWVuIFswLl0gYW5kIFsxLl0uICopXG5cbiAgbGV0IHJnYiA/YSByIGcgYiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IFJHQiAociwgZywgYilcbiAgICB8IFNvbWUgYSAtPiBSR0JBIChyLCBnLCBiLCBhKVxuXG4gIGxldCBoc2wgP2EgaCBzIGwgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBIU0wgKGgsIHMsIGwpXG4gICAgfCBTb21lIGEgLT4gSFNMQSAoaCwgcywgbCwgYSlcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IHN0cmluZ19vZl9uYW1lIG5cbiAgICB8IFJHQiAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQsJWQsJWQpXCIgciBnIGJcbiAgICB8IFJHQl9wZXJjZW50IChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCUlLCVkJSUsJWQlJSlcIiByIGcgYlxuICAgIHwgUkdCQSAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkLCVkLCVkLCVmKVwiIHIgZyBiIGFcbiAgICB8IFJHQkFfcGVyY2VudCAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkJSUsJWQlJSwlZCUlLCVmKVwiIHIgZyBiIGFcbiAgICB8IEhTTCAoaCwgcywgbCkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2woJWQsJWQlJSwlZCUlKVwiIGggcyBsXG4gICAgfCBIU0xBIChoLCBzLCBsLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbGEoJWQsJWQlJSwlZCUlLCVmKVwiIGggcyBsIGFcblxuICBsZXQgaGV4X29mX3JnYiAocmVkLCBncmVlbiwgYmx1ZSkgPVxuICAgIGxldCBpbl9yYW5nZSBpID1cbiAgICAgIGlmIGkgPCAwIHx8IGkgPiAyNTVcbiAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHN0cmluZ19vZl9pbnQgaSBeIFwiIGlzIG91dCBvZiB2YWxpZCByYW5nZVwiKSlcbiAgICBpblxuICAgIGluX3JhbmdlIHJlZDtcbiAgICBpbl9yYW5nZSBncmVlbjtcbiAgICBpbl9yYW5nZSBibHVlO1xuICAgIFByaW50Zi5zcHJpbnRmIFwiIyUwMlglMDJYJTAyWFwiIHJlZCBncmVlbiBibHVlXG5cbiAgKCogT2NhbWwgPC0+IEpTIHJlcHJlc2VudGF0aW9uICopXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgKCogVE9ETz8gYmUgbW9yZSByZXN0cmljdGl2ZSwgY2xpcCB2YWx1ZXMgaW50byBzdGFuZGFyZCByYW5nZSAqKVxuICBsZXQganNfdF9vZl9qc19zdHJpbmcgcyA9XG4gICAgbGV0IHJnYl9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXmhzbFxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbGFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5oc2xhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgaWYgSnMudG9fYm9vbCAocmdiX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYl9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbGFfcmUjI3Rlc3QgcylcbiAgICB0aGVuIHNcbiAgICBlbHNlIGlmIExpc3QubWVtXG4gICAgICAgICAgICAgIChKcy50b19zdHJpbmcgcylcbiAgICAgICAgICAgICAgWyBcImFsaWNlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJhbnRpcXVld2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiYXF1YVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcImF6dXJlXCJcbiAgICAgICAgICAgICAgOyBcImJlaWdlXCJcbiAgICAgICAgICAgICAgOyBcImJpc3F1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibGFja1wiXG4gICAgICAgICAgICAgIDsgXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgICAgICAgICAgIDsgXCJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImJsdWV2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiYnJvd25cIlxuICAgICAgICAgICAgICA7IFwiYnVybHl3b29kXCJcbiAgICAgICAgICAgICAgOyBcImNhZGV0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjaGFydHJldXNlXCJcbiAgICAgICAgICAgICAgOyBcImNob2NvbGF0ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3Juc2lsa1wiXG4gICAgICAgICAgICAgIDsgXCJjcmltc29uXCJcbiAgICAgICAgICAgICAgOyBcImN5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2JsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya2N5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2toYWtpXCJcbiAgICAgICAgICAgICAgOyBcImRhcmttYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya29yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrcmVkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmt0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya3Zpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJkZWVwcGlua1wiXG4gICAgICAgICAgICAgIDsgXCJkZWVwc2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZG9kZ2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJmaXJlYnJpY2tcIlxuICAgICAgICAgICAgICA7IFwiZmxvcmFsd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZm9yZXN0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZnVjaHNpYVwiXG4gICAgICAgICAgICAgIDsgXCJnYWluc2Jvcm9cIlxuICAgICAgICAgICAgICA7IFwiZ2hvc3R3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJncmF5XCJcbiAgICAgICAgICAgICAgOyBcImdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImdyZWVueWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImdyZXlcIlxuICAgICAgICAgICAgICA7IFwiaG9uZXlkZXdcIlxuICAgICAgICAgICAgICA7IFwiaG90cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJpbmRpYW5yZWRcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWdvXCJcbiAgICAgICAgICAgICAgOyBcIml2b3J5XCJcbiAgICAgICAgICAgICAgOyBcImtoYWtpXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyYmx1c2hcIlxuICAgICAgICAgICAgICA7IFwibGF3bmdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxlbW9uY2hpZmZvblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGN5YW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaW1lXCJcbiAgICAgICAgICAgICAgOyBcImxpbWVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaW5lblwiXG4gICAgICAgICAgICAgIDsgXCJtYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcIm1hcm9vblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJtaWRuaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWludGNyZWFtXCJcbiAgICAgICAgICAgICAgOyBcIm1pc3R5cm9zZVwiXG4gICAgICAgICAgICAgIDsgXCJtb2NjYXNpblwiXG4gICAgICAgICAgICAgIDsgXCJuYXZham93aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJuYXZ5XCJcbiAgICAgICAgICAgICAgOyBcIm9sZGxhY2VcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVkcmFiXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VyZWRcIlxuICAgICAgICAgICAgICA7IFwib3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwicGFsZXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJwYXBheWF3aGlwXCJcbiAgICAgICAgICAgICAgOyBcInBlYWNocHVmZlwiXG4gICAgICAgICAgICAgIDsgXCJwZXJ1XCJcbiAgICAgICAgICAgICAgOyBcInBpbmtcIlxuICAgICAgICAgICAgICA7IFwicGx1bVwiXG4gICAgICAgICAgICAgIDsgXCJwb3dkZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcInB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJyZWRcIlxuICAgICAgICAgICAgICA7IFwicm9zeWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInJveWFsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzYWRkbGVicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwic2FuZHlicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzZWFzaGVsbFwiXG4gICAgICAgICAgICAgIDsgXCJzaWVubmFcIlxuICAgICAgICAgICAgICA7IFwic2lsdmVyXCJcbiAgICAgICAgICAgICAgOyBcInNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwic25vd1wiXG4gICAgICAgICAgICAgIDsgXCJzcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwidGFuXCJcbiAgICAgICAgICAgICAgOyBcInRlYWxcIlxuICAgICAgICAgICAgICA7IFwidGhpc3RsZVwiXG4gICAgICAgICAgICAgIDsgXCJ0b21hdG9cIlxuICAgICAgICAgICAgICA7IFwidHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGVhdFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZXNtb2tlXCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dncmVlblwiXG4gICAgICAgICAgICAgIF1cbiAgICB0aGVuIHNcbiAgICBlbHNlIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChKcy50b19zdHJpbmcgcyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKVxuXG4gIGxldCBuYW1lIGNuID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfbmFtZSBjbilcblxuICBsZXQganMgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IG5hbWUgblxuICAgIHwgKFJHQiBfIHwgUkdCX3BlcmNlbnQgXyB8IFJHQkEgXyB8IFJHQkFfcGVyY2VudCBfIHwgSFNMIF8gfCBIU0xBIF8pIGFzIGMgLT5cbiAgICAgICAgSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCBjKVxuXG4gIGxldCBtbCBjID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBjIGluXG4gICAgdHJ5IE5hbWUgKG5hbWVfb2Zfc3RyaW5nIHMpXG4gICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKFxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKSBpblxuICAgICAgbGV0IHJlX3JnYiA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSwoXFxcXGQqKSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX3JnYl9wY3QgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiklLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9oc2wgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKGhzbGE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IGlfb2Zfc19vID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgfCBTb21lIGkgLT4gKFxuICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaVxuICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBpIF4gXCIpOiBcIiBeIHMpKSlcbiAgICAgIGluXG4gICAgICBsZXQgZl9vZl9zIGYgPVxuICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGYgXiBcIik6IFwiIF4gcykpXG4gICAgICBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2IgcyAwIHdpdGhcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0IgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUkdCQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYl9wY3QgcyAwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgUkdCQV9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9oc2wgcyAwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IEhTTCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEhTTEEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKSkpKVxuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgKCogaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2xlbmd0aHMgKilcblxuICAoKiBUT0RPOlxuICAgICB7W1xuICAgICAgIHR5cGUganNfdCA9IHByaXZhdGUgSnMuc3RyaW5nIEpzLnRcbiAgICAgICB2YWwganNfdF9vZl90XG4gICAgICAgdmFsIHRfb2ZfanNfdFxuICAgICAgIHZhbCB0X29mX3N0cmluZ1xuICAgICBdfVxuICAqKVxuXG4gIHR5cGUgdCA9XG4gICAgfCBaZXJvXG4gICAgKCogcmVsYXRpdmUgKilcbiAgICB8IEVtIG9mIGZsb2F0XG4gICAgfCBFeCBvZiBmbG9hdFxuICAgIHwgUHggb2YgZmxvYXRcbiAgICB8IEdkIG9mIGZsb2F0XG4gICAgfCBSZW0gb2YgZmxvYXRcbiAgICB8IFZ3IG9mIGZsb2F0XG4gICAgfCBWaCBvZiBmbG9hdFxuICAgIHwgVm0gb2YgZmxvYXRcbiAgICB8IENoIG9mIGZsb2F0XG4gICAgKCogYWJzb2x1dGUgKilcbiAgICB8IE1tIG9mIGZsb2F0XG4gICAgfCBDbSBvZiBmbG9hdFxuICAgIHwgSW4gb2YgZmxvYXRcbiAgICB8IFB0IG9mIGZsb2F0XG4gICAgfCBQYyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBaZXJvIC0+IFwiMFwiXG4gICAgfCBFbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJlbVwiXG4gICAgfCBFeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJleFwiXG4gICAgfCBQeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJweFwiXG4gICAgfCBHZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJnZFwiXG4gICAgfCBSZW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmVtXCJcbiAgICB8IFZ3IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZ3XCJcbiAgICB8IFZoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZoXCJcbiAgICB8IFZtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZtXCJcbiAgICB8IENoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNoXCJcbiAgICB8IE1tIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcIm1tXCJcbiAgICB8IENtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNtXCJcbiAgICB8IEluIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImluXCJcbiAgICB8IFB0IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB0XCJcbiAgICB8IFBjIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInBjXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCB0ID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyB0IGluXG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCIwXCJcbiAgICB0aGVuIFplcm9cbiAgICBlbHNlXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopPylcXFxccyooXFxcXFMqKSRcIiBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBcImVtXCIgLT4gRW0gZlxuICAgICAgICAgIHwgU29tZSBcImV4XCIgLT4gRXggZlxuICAgICAgICAgIHwgU29tZSBcInB4XCIgLT4gUHggZlxuICAgICAgICAgIHwgU29tZSBcImdkXCIgLT4gR2QgZlxuICAgICAgICAgIHwgU29tZSBcInJlbVwiIC0+IFJlbSBmXG4gICAgICAgICAgfCBTb21lIFwidndcIiAtPiBWdyBmXG4gICAgICAgICAgfCBTb21lIFwidmhcIiAtPiBWaCBmXG4gICAgICAgICAgfCBTb21lIFwidm1cIiAtPiBWbSBmXG4gICAgICAgICAgfCBTb21lIFwiY2hcIiAtPiBDaCBmXG4gICAgICAgICAgfCBTb21lIFwibW1cIiAtPiBNbSBmXG4gICAgICAgICAgfCBTb21lIFwiY21cIiAtPiBDbSBmXG4gICAgICAgICAgfCBTb21lIFwiaW5cIiAtPiBJbiBmXG4gICAgICAgICAgfCBTb21lIFwicHRcIiAtPiBQdCBmXG4gICAgICAgICAgfCBTb21lIFwicGNcIiAtPiBQYyBmXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKSlcbmVuZFxuXG5tb2R1bGUgQW5nbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IERlZyBvZiBmbG9hdFxuICAgIHwgR3JhZCBvZiBmbG9hdFxuICAgIHwgUmFkIG9mIGZsb2F0XG4gICAgfCBUdXJucyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBEZWcgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZGVnXCJcbiAgICB8IEdyYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ3JhZFwiXG4gICAgfCBSYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmFkXCJcbiAgICB8IFR1cm5zIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInR1cm5zXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCBqID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBqIGluXG4gICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopKShkZWd8Z3JhZHxyYWR8dHVybnMpJFwiIGluXG4gICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgIHwgU29tZSBcImRlZ1wiIC0+IERlZyBmXG4gICAgICAgIHwgU29tZSBcImdyYWRcIiAtPiBHcmFkIGZcbiAgICAgICAgfCBTb21lIFwicmFkXCIgLT4gUmFkIGZcbiAgICAgICAgfCBTb21lIFwidHVybnNcIiAtPiBUdXJucyBmXG4gICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCoqIEphdmFzY3JpcHQgZXZlbnRzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBUeXAgPSBEb21faHRtbC5FdmVudFxuXG50eXBlIGxpc3RlbmVyID0gRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGxpc3RlbiA/KGNhcHR1cmUgPSBmYWxzZSkgdGFyZ2V0IHR5cCBjYiA9XG4gIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXJcbiAgICB0YXJnZXRcbiAgICB0eXBcbiAgICAoRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gbiBlIC0+IEpzLmJvb2wgKGNiIG4gZSkpKVxuICAgIChKcy5ib29sIGNhcHR1cmUpXG5cbmxldCBzdG9wX2xpc3RlbiA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmxldCB4bWxucyA9IEpzLnN0cmluZyBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblxuKCogdHJhbnNsYXRlIHNwZWMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvaWRsLmh0bWwgKilcbigqIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCAqKVxuXG50eXBlIGVycm9yX2NvZGUgPVxuICB8IFdST05HX1RZUEVfRVJSXG4gIHwgSU5WQUxJRF9WQUxVRV9FUlJcbiAgfCBNQVRSSVhfTk9UX0lOVkVSVEFCTEVcblxuY2xhc3MgdHlwZSBzdmdfZXJyb3IgPSBvYmplY3RcbiAgaW5oZXJpdCBKcy5lcnJvclxuXG4gIG1ldGhvZCBjb2RlIDogZXJyb3JfY29kZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leGNlcHRpb24gU1ZHRXJyb3Igb2Ygc3ZnX2Vycm9yXG5cbnR5cGUgbGVuZ3RoVW5pdFR5cGUgPVxuICB8IExFTkdUSFRZUEVfVU5LTk9XTlxuICB8IExFTkdUSFRZUEVfTlVNQkVSXG4gIHwgTEVOR1RIVFlQRV9QRVJDRU5UQUdFXG4gIHwgTEVOR1RIVFlQRV9FTVNcbiAgfCBMRU5HVEhUWVBFX0VYU1xuICB8IExFTkdUSFRZUEVfUFhcbiAgfCBMRU5HVEhUWVBFX0NNXG4gIHwgTEVOR1RIVFlQRV9NTVxuICB8IExFTkdUSFRZUEVfSU5cbiAgfCBMRU5HVEhUWVBFX1BUXG4gIHwgTEVOR1RIVFlQRV9QQ1xuXG50eXBlIGFuZ2xlVW5pdFR5cGUgPVxuICB8IEFOR0xFVFlQRV9VTktOT1dOXG4gIHwgQU5HTEVUWVBFX1VOU1BFQ0lGSUVEXG4gIHwgQU5HTEVUWVBFX0RFR1xuICB8IEFOR0xFVFlQRV9SQURcbiAgfCBBTkdMRVRZUEVfR1JBRFxuXG50eXBlIGNvbG9yVHlwZSA9XG4gIHwgQ09MT1JUWVBFX1VOS05PV05cbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JcbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1JcbiAgfCBDT0xPUlRZUEVfQ1VSUkVOVENPTE9SXG5cbnR5cGUgYWxpZ25tZW50VHlwZSA9XG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYXG5cbnR5cGUgbWVldE9yU2xpY2VUeXBlID1cbiAgfCBNRUVUT1JTTElDRV9VTktOT1dOXG4gIHwgTUVFVE9SU0xJQ0VfTUVFVFxuICB8IE1FRVRPUlNMSUNFX1NMSUNFXG5cbnR5cGUgdHJhbnNmb3JtVHlwZSA9XG4gIHwgVFJBTlNGT1JNX1VOS05PV05cbiAgfCBUUkFOU0ZPUk1fTUFUUklYXG4gIHwgVFJBTlNGT1JNX1RSQU5TTEFURVxuICB8IFRSQU5TRk9STV9TQ0FMRVxuICB8IFRSQU5TRk9STV9ST1RBVEVcbiAgfCBUUkFOU0ZPUk1fU0tFV1hcbiAgfCBUUkFOU0ZPUk1fU0tFV1lcblxudHlwZSB6b29tQW5kUGFuVHlwZSA9XG4gIHwgWk9PTUFORFBBTl9VTktOT1dOXG4gIHwgWk9PTUFORFBBTl9ESVNBQkxFXG4gIHwgWk9PTUFORFBBTl9NQUdOSUZZXG5cbnR5cGUgbGVuZ3RoQWRqdXN0ID1cbiAgfCBMRU5HVEhBREpVU1RfVU5LTk9XTlxuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFNcblxudHlwZSB1bml0VHlwZSA9XG4gIHwgVU5JVF9UWVBFX1VOS05PV05cbiAgfCBVTklUX1RZUEVfVVNFUlNQQUNFT05VU0VcbiAgfCBVTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1hcblxuKCogaW50ZXJmYWNlIFNWR1JlbmRlcmluZ0ludGVudCAqKVxudHlwZSBpbnRlbnRUeXBlID1cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1VOS05PV05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FVVE9cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1BFUkNFUFRVQUxcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQ1xuICB8IFJFTkRFUklOR19JTlRFTlRfU0FUVVJBVElPTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDXG5cbigqIFBhdGggU2VnbWVudCBUeXBlcyAqKVxudHlwZSBwYXRoU2VnbWVudFR5cGUgPVxuICB8IFBBVEhTRUdfVU5LTk9XTlxuICB8IFBBVEhTRUdfQ0xPU0VQQVRIXG4gIHwgUEFUSFNFR19NT1ZFVE9fQUJTXG4gIHwgUEFUSFNFR19NT1ZFVE9fUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMXG4gIHwgUEFUSFNFR19BUkNfQUJTXG4gIHwgUEFUSFNFR19BUkNfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUxcblxuKCogdGV4dFBhdGggTWV0aG9kIFR5cGVzICopXG50eXBlIHRleHRQYXRoTWV0aG9kVHlwZSA9XG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSFxuXG4oKiB0ZXh0UGF0aCBTcGFjaW5nIFR5cGVzICopXG50eXBlIHRleHRQYXRoU3BhY2luZ1R5cGUgPVxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1RcblxuKCogU3ByZWFkIE1ldGhvZCBUeXBlcyAqKVxudHlwZSBzcHJlYWRNZXRob2RUeXBlID1cbiAgfCBTUFJFQURNRVRIT0RfVU5LTk9XTlxuICB8IFNQUkVBRE1FVEhPRF9QQURcbiAgfCBTUFJFQURNRVRIT0RfUkVGTEVDVFxuICB8IFNQUkVBRE1FVEhPRF9SRVBFQVRcblxudHlwZSBzdXNwZW5kSGFuZGxlSURcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgWydhXSBhbmltYXRlZCA9IG9iamVjdFxuICBtZXRob2QgYmFzZVZhbCA6ICdhIHByb3BcblxuICBtZXRob2QgYW5pbVZhbCA6ICdhIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbGlzdCA9IG9iamVjdFxuICBtZXRob2QgbnVtYmVyT2ZJdGVtcyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluaXRpYWxpemUgOiAnYSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRJdGVtQmVmb3JlIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUl0ZW0gOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgYXBwZW5kSXRlbSA6ICdhIC0+ICdhIG1ldGhcbmVuZFxuXG4oKioqKilcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxiYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lclNWR0VsZW1lbnQgOiBzdmdFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFN0cmluZyAqKVxuYW5kIGFuaW1hdGVkU3RyaW5nID0gW2pzX3N0cmluZyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRCb29sZWFuICopXG5hbmQgYW5pbWF0ZWRCb29sZWFuID0gW2Jvb2wgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0cmluZ0xpc3QgKilcbmFuZCBzdHJpbmdMaXN0ID0gW2pzX3N0cmluZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uICopXG5hbmQgYW5pbWF0ZWRFbnVtZXJhdGlvbiA9IFtpbnQgKCpzaG9ydCopXSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRJbnRlZ2VyICopXG5hbmQgYW5pbWF0ZWRJbnRlZ2VyID0gW2ludF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyICopXG5hbmQgYW5pbWF0ZWROdW1iZXIgPSBbbnVtYmVyX3RdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdOdW1iZXJMaXN0ICopXG5hbmQgbnVtYmVyTGlzdCA9IFtudW1iZXIgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ICopXG5hbmQgYW5pbWF0ZWROdW1iZXJMaXN0ID0gW251bWJlckxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aCAqKVxuYW5kIGxlbmd0aCA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBsZW5ndGhVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGggKilcbmFuZCBhbmltYXRlZExlbmd0aCA9IFtsZW5ndGggdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aExpc3QgKilcbmFuZCBsZW5ndGhMaXN0ID0gW2xlbmd0aCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aExpc3QgKilcbmFuZCBhbmltYXRlZExlbmd0aExpc3QgPSBbbGVuZ3RoTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5nbGUgKilcbmFuZCBhbmdsZSA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBhbmdsZVVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRBbmdsZSAqKVxuYW5kIGFuaW1hdGVkQW5nbGUgPSBbYW5nbGUgdF0gYW5pbWF0ZWRcblxuKCogWFhYWFggTW92ZSBpdCAqKVxuYW5kIHJnYkNvbG9yID0gb2JqZWN0IGVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3IgKilcbmFuZCBjb2xvciA9IG9iamVjdFxuICAoKiBYWFggaW5oZXJpdCBjc3NWYWx1ZSAqKVxuICBtZXRob2QgY29sb3JUeXBlIDogY29sb3JUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmdiQ29sb3IgOiByZ2JDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaWNjQ29sb3IgOiBpY2NDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0UkdCQ29sb3IgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UkdCQ29sb3JJQ0NDb2xvciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRDb2xvciA6IGNvbG9yVHlwZSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSUNDQ29sb3IgKilcbmFuZCBpY2NDb2xvciA9IG9iamVjdFxuICBtZXRob2QgY29sb3JQcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvcnMgOiBudW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0ICopXG5hbmQgcmVjdCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRSZWN0ICopXG5hbmQgYW5pbWF0ZWRSZWN0ID0gW3JlY3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxhYmxlICopXG5hbmQgc3R5bGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHlsZSA6IERvbV9odG1sLmNzc1N0eWxlRGVjbGFyYXRpb24gdCByZWFkb25seV9wcm9wXG4gICgqICAgQ1NTVmFsdWUgZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKTsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTG9jYXRhYmxlICopXG5hbmQgbG9jYXRhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBuZWFyZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRCQm94IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JlZW5DVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRyYW5zZm9ybVRvRWxlbWVudCA6IGVsZW1lbnQgdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybWFibGUgKilcbmFuZCB0cmFuc2Zvcm1hYmxlID0gb2JqZWN0XG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGVzdHMgKilcbmFuZCB0ZXN0cyA9IG9iamVjdFxuICBtZXRob2QgcmVxdWlyZWRGZWF0dXJlcyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkRXh0ZW5zaW9ucyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN5c3RlbUxhbmd1YWdlIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGFzRXh0ZW5zaW9uIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGFuZ1NwYWNlICopXG5hbmQgbGFuZ1NwYWNlID0gb2JqZWN0XG4gIG1ldGhvZCB4bWxsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxzcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCAqKVxuYW5kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPSBvYmplY3RcbiAgbWV0aG9kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgOiBhbmltYXRlZEJvb2xlYW4gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpdFRvVmlld0JveCAqKVxuYW5kIGZpdFRvVmlld0JveCA9IG9iamVjdFxuICBtZXRob2Qgdmlld0JveCA6IGFuaW1hdGVkUmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpbyA6IGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUFuZFBhbiAqKVxuYW5kIHpvb21BbmRQYW4gPSBvYmplY3RcbiAgbWV0aG9kIHpvb21BbmRQYW4gOiB6b29tQW5kUGFuVHlwZSBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdTcGVjICopXG5hbmQgdmlld1NwZWMgPSBvYmplY3RcbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBtZXRob2QgdHJhbnNmb3JtIDogdHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdCb3hTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW9TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybVN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVVJJUmVmZXJlbmNlICopXG5hbmQgdXJpUmVmZXJlbmNlID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NTU1J1bGUgOiBDU1NSdWxlICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTE9SX1BST0ZJTEVfUlVMRSA9IDc7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRG9jdW1lbnQgKilcbmFuZCBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50RXZlbnQgKilcbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290RWxlbWVudCA6IHN2Z0VsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuICAoKiByb290RWxlbWVudCB3aWxsIGJlIG51bGwgb3IgdW5kZWZpbmVkIGluIGFuIGh0bWwgY29udGV4dCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTVkdFbGVtZW50ICopXG5hbmQgc3ZnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRldmVudCwgdmlld2NzcywgZG9jdW1lbnRjc3MgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFNjcmlwdFR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogcmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlQ3VycmVudFZpZXcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VmlldyA6IHZpZXdTcGVjIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U2NhbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUcmFuc2xhdGUgOiBwb2ludCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VzcGVuZFJlZHJhdyA6IGludCAtPiBzdXNwZW5kSGFuZGxlSUQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXcgOiBzdXNwZW5kSGFuZGxlSUQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhd0FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3JjZVJlZHJhdyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5wYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uc1BhdXNlZCA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRDdXJyZW50VGltZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0SW50ZXJzZWN0aW9uTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuY2xvc3VyZUxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ludGVyc2VjdGlvbiA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGNoZWNrRW5jbG9zdXJlIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgZGVzZWxlY3RBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTnVtYmVyIDogbnVtYmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdMZW5ndGggOiBsZW5ndGggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0FuZ2xlIDogYW5nbGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BvaW50IDogcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR01hdHJpeCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUmVjdCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybSA6IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCB0IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiBEb20uZWxlbWVudCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR0VsZW1lbnQgKilcbmFuZCBnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZWZzRWxlbWVudCAqKVxuYW5kIGRlZnNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVzY0VsZW1lbnQgKilcbmFuZCBkZXNjRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGl0bGVFbGVtZW50ICopXG5hbmQgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTeW1ib2xFbGVtZW50ICopXG5hbmQgc3ltYm9sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVXNlRWxlbWVudCAqKVxuYW5kIHVzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZEluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZWxlbWVudEluc3RhbmNlID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ0VsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCA6IHVzZUVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBlbGVtZW50SW5zdGFuY2VMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QgKilcbmFuZCBlbGVtZW50SW5zdGFuY2VMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGVsZW1lbnRJbnN0YW5jZSB0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ltYWdlRWxlbWVudCAqKVxuYW5kIGltYWdlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuICAoKiByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmVuZFxuXG5hbmQgc3dpdGNoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuKCogWFhYIGRlcHJlY2F0ZWQgPT4gaW50ZXJmYWNlIEdldFNWR0RvY3VtZW50ID0+IFNWR0RvY3VtZW50IGdldFNWR0RvY3VtZW50KCkgKilcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxlRWxlbWVudCAqKVxuYW5kIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludCAqKVxuYW5kIHBvaW50ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXhUcmFuc2Zvcm0gOiBtYXRyaXggdCAtPiBwb2ludCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0ICopXG5hbmQgcG9pbnRMaXN0ID0gW3BvaW50IHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR01hdHJpeCAqKVxuYW5kIG1hdHJpeCA9IG9iamVjdFxuICBtZXRob2QgYSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbHkgOiBtYXRyaXggdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGludmVyc2UgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlTm9uVW5pZm9ybSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGVGcm9tVmVjdG9yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFkgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdYIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtICopXG5hbmQgdHJhbnNmb3JtID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IHRyYW5zZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXggOiBtYXRyaXggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRNYXRyaXggOiBtYXRyaXggdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJvdGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0ICopXG5hbmQgdHJhbnNmb3JtTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFt0cmFuc2Zvcm0gdF0gbGlzdFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY29uc29saWRhdGUgOiB0cmFuc2Zvcm0gdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCAqKVxuYW5kIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFt0cmFuc2Zvcm1MaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgcHJlc2VydmVBc3BlY3RSYXRpbyA9IG9iamVjdFxuICBtZXRob2QgYWxpZ24gOiBhbGlnbm1lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVldE9yU2xpY2UgOiBtZWV0T3JTbGljZVR5cGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBbcHJlc2VydmVBc3BlY3RSYXRpbyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZyAqKVxuYW5kIHBhdGhTZWcgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdUeXBlIDogcGF0aFNlZ21lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF0aFNlZ1R5cGVBc0xldHRlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCAqKVxuYW5kIHBhdGhTZWdDbG9zZVBhdGggPSBwYXRoU2VnXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdNb3ZldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjUmVsKilcbmFuZCBwYXRoU2VnQXJjID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsYXJnZUFyY0ZsYWcgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzd2VlcEZsYWcgOiBib29sIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvVmVydGljYWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3RcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsICAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdMaXN0ID0gW3BhdGhTZWcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQYXRoRGF0YSAqKVxuYW5kIGFuaW1hdGVkUGF0aERhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIG5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhFbGVtZW50ICopXG5hbmQgcGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQYXRoRGF0YVxuXG4gIG1ldGhvZCBwYXRoTGVuZ3RoIDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFRvdGFsTGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRQb2ludEF0TGVuZ3RoIDogbnVtYmVyX3QgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhdGhTZWdBdExlbmd0aCA6IG51bWJlcl90IC0+IGludFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoIDogcGF0aFNlZ0Nsb3NlUGF0aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3RFbGVtZW50ICopXG5hbmQgcmVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NpcmNsZUVsZW1lbnQgKilcbmFuZCBjaXJjbGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGxpcHNlRWxlbWVudCAqKVxuYW5kIGVsbGlwc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQb2ludHMgKilcbmFuZCBhbmltYXRlZFBvaW50cyA9IG9iamVjdFxuICBtZXRob2QgcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWxpbmVFbGVtZW50ICopXG5hbmQgcG9seUxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlnb25FbGVtZW50ICopXG5hbmQgcG9seWdvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50ICopXG5hbmQgdGV4dENvbnRlbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRleHRMZW5ndGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoQWRqdXN0IDogbGVuZ3RoQWRqdXN0IGFuaW1hdGVkIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXROdW1iZXJPZkNoYXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdWJTdHJpbmdMZW5ndGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5kUG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVudE9mQ2hhciA6IGludCAtPiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSb3RhdGlvbk9mQ2hhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldENoYXJOdW1BdFBvc2l0aW9uIDogcG9pbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0U3ViU3RyaW5nIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCAqKVxuYW5kIHRleHRQb3NpdGlvbmluZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb3RhdGUgOiBhbmltYXRlZE51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRFbGVtZW50ICopXG5hbmQgdGV4dEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuYW5kIHRzcGFuRWxlbWVudCA9IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuYW5kIHRyZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQYXRoRWxlbWVudCAqKVxuYW5kIHRleHRQYXRoRWxlbWVudE1ldGhvZCA9IFt0ZXh0UGF0aE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nID0gW3RleHRQYXRoU3BhY2luZ1R5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRob2RfIDogdGV4dFBhdGhFbGVtZW50TWV0aG9kIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BhY2luZyA6IHRleHRQYXRoRWxlbWVudFNwYWNpbmcgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhEZWZFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhEZWZFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhJdGVtRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoSXRlbUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdHbHlwaFJlZkVsZW1lbnQgKilcbmFuZCBnbHlwaFJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGFpbnQgOiBTVkdDb2xvciB7ICopXG5cbigqICAgLy8gUGFpbnQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX05PTkUgPSAxMDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SID0gMTAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FID0gMTAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IgPSAxMDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SID0gMTA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDEwNjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDc7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmk7ICopXG5cbigqICAgdm9pZCBzZXRVcmkoaW4gRE9NU3RyaW5nIHVyaSk7ICopXG4oKiAgIHZvaWQgc2V0UGFpbnQoaW4gdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlLCBpbiBET01TdHJpbmcgdXJpLCBpbiBET01TdHJpbmcgcmdiQ29sb3IsIGluIERPTVN0cmluZyBpY2NDb2xvcikgcmFpc2VzKFNWR0V4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFya2VyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHU3R5bGFibGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpdFRvVmlld0JveCB7ICopXG5cbigqICAgLy8gTWFya2VyIFVuaXQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEggPSAyOyAqKVxuXG4oKiAgIC8vIE1hcmtlciBPcmllbnRhdGlvbiBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQVVUTyA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hcmtlclVuaXRzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VyV2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJIZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9yaWVudFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEFuZ2xlIG9yaWVudEFuZ2xlOyAqKVxuXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BdXRvKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BbmdsZShpbiBTVkdBbmdsZSBhbmdsZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBsb2NhbDsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZVJ1bGUgOiBTVkdDU1NSdWxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNyYyBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50IHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0dyYWRpZW50RWxlbWVudCAqKVxuYW5kIGFuaW1hdGVkU3ByZWFkTWV0aG9kID0gW3NwcmVhZE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCBncmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBncmFkaWVudFVuaXRzOyAqKVxuICBtZXRob2QgZ3JhZGllbnRUcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwcmVhZE1ldGhvZCA6IGFuaW1hdGVkU3ByZWFkTWV0aG9kIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBsaW5lYXJHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50ICopXG5hbmQgcmFkaWFsR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RvcEVsZW1lbnQgKilcbmFuZCBzdG9wRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIG9mZnNldCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXR0ZXJuRWxlbWVudCAqKVxuYW5kIHBhdHRlcm5FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVybkNvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHBhdHRlcm5UcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2xpcFBhdGhFbGVtZW50ICopXG5hbmQgY2xpcFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBjbGlwUGF0aFVuaXRzOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdNYXNrRWxlbWVudCAqKVxuYW5kIG1hc2tFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJFbGVtZW50ICopXG5hbmQgZmlsdGVyRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZmlsdGVyVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcHJpbWl0aXZlVW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1ggOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1kgOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldEZpbHRlclJlcyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6IFNWR1N0eWxhYmxlIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggd2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBoZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyByZXN1bHQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVCbGVuZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBCbGVuZCBNb2RlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTk9STUFMID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfU0NSRUVOID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9EQVJLRU4gPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0xJR0hURU4gPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1vZGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb2xvciBNYXRyaXggVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdmFsdWVzOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcblxuKCogICAvLyBDb21wb25lbnQgVHJhbnNmZXIgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVIgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHRhYmxlVmFsdWVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2xvcGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBpbnRlcmNlcHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhbXBsaXR1ZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBleHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIG9mZnNldDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNSRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNHRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNCRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNBRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29tcG9zaXRlIE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0lOID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUiA9IDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDID0gNjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsxOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMzsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGs0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gRWRnZSBNb2RlIFZhbHVlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9EVVBMSUNBVEUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfV1JBUCA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9OT05FID0gMzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3Qga2VybmVsTWF0cml4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGl2aXNvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJpYXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBlZGdlTW9kZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEJvb2xlYW4gcHJlc2VydmVBbHBoYTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaWZmdXNlQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYXppbXV0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGVsZXZhdGlvbjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVBvaW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcG90TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgbGltaXRpbmdDb25lQW5nbGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENoYW5uZWwgU2VsZWN0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfRyA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0IgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9BID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHhDaGFubmVsU2VsZWN0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHlDaGFubmVsU2VsZWN0b3I7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGbG9vZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25ZOyAqKVxuXG4oKiAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGluIGZsb2F0IHN0ZERldmlhdGlvblgsIGluIGZsb2F0IHN0ZERldmlhdGlvblkpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFSW1hZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlTm9kZUVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBNb3JwaG9sb2d5IE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1k7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVPZmZzZXRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVRpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBUdXJidWxlbmNlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfRlJBQ1RBTE5PSVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFID0gMjsgKilcblxuKCogICAvLyBTdGl0Y2ggT3B0aW9ucyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfU1RJVENIID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0ggPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG51bU9jdGF2ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzZWVkOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBzdGl0Y2hUaWxlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDdXJzb3JFbGVtZW50ICopXG5hbmQgY3Vyc29yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FFbGVtZW50ICopXG5hbmQgYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHRhcmdldCA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3RWxlbWVudCAqKVxuYW5kIHZpZXdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTY3JpcHRFbGVtZW50ICopXG5hbmQgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUV2ZW50IDogVUlFdmVudCAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUmVjdCB6b29tUmVjdFNjcmVlbjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHByZXZpb3VzU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBwcmV2aW91c1RyYW5zbGF0ZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IG5ld1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgbmV3VHJhbnNsYXRlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICAoKiBpbmhlcml0IGVsZW1lbnRUaW1lQ29udHJvbCAqKVxuICBtZXRob2QgdGFyZ2V0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFN0YXJ0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNpbXBsZUR1cmF0aW9uIDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2V0RWxlbWVudCAqKVxuYW5kIHNldEVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVNb3Rpb25FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTVBhdGhFbGVtZW50ICopXG5hbmQgbVBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQgKilcbmFuZCBhbmltYXRlQ29sb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgKilcbmFuZCBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRFbGVtZW50ICopXG5hbmQgZm9udEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHbHlwaEVsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KilcbmFuZCBnbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdIS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHVktlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlU3JjRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVNyY0VsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVVyaUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VVcmlFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRm9ybWF0RWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VOYW1lRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01ldGFkYXRhRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBtZXRhZGF0YUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb3JlaWduT2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudE5TIHhtbG5zIChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoIGRvYyA6IGFsdEdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaFwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaERlZiBkb2MgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhkZWZcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhJdGVtIGRvYyA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhpdGVtXCJcblxubGV0IGNyZWF0ZUFuaW1hdGUgZG9jIDogYW5pbWF0ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZVwiXG5cbmxldCBjcmVhdGVBbmltYXRlQ29sb3IgZG9jIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlY29sb3JcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZU1vdGlvbiBkb2MgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlbW90aW9uXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVUcmFuc2Zvcm0gZG9jIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbmxldCBjcmVhdGVDaXJjbGUgZG9jIDogY2lyY2xlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjaXJjbGVcIlxuXG5sZXQgY3JlYXRlQ2xpcFBhdGggZG9jIDogY2xpcFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNsaXBwYXRoXCJcblxuKCogbGV0IGNyZWF0ZUNvbG9yUHJvZmlsZSBkb2MgOiBjb2xvclByb2ZpbGUgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sb3ItcHJvZmlsZVwiICopXG5sZXQgY3JlYXRlQ3Vyc29yIGRvYyA6IGN1cnNvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY3Vyc29yXCJcblxubGV0IGNyZWF0ZURlZnMgZG9jIDogZGVmc0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVmc1wiXG5cbmxldCBjcmVhdGVEZXNjIGRvYyA6IGRlc2NFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlc2NcIlxuXG5sZXQgY3JlYXRlRWxsaXBzZSBkb2MgOiBlbGxpcHNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbGxpcHNlXCJcblxuKCogbGV0IGNyZWF0ZUZlKiAqKVxubGV0IGNyZWF0ZUZpbHRlciBkb2MgOiBmaWx0ZXJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpbHRlclwiXG5cbmxldCBjcmVhdGVGb250IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2UgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlRm9ybWF0IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VOYW1lIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1uYW1lXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlU3JjIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1zcmNcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VVcmkgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXVyaVwiXG5cbmxldCBjcmVhdGVGb3JlaWduT2JqZWN0IGRvYyA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcmVpZ25PYmplY3RcIlxuXG5sZXQgY3JlYXRlRyBkb2MgOiBnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnXCJcblxubGV0IGNyZWF0ZUdseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaFwiXG5cbmxldCBjcmVhdGVHbHlwaFJlZiBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhyZWZcIlxuXG5sZXQgY3JlYXRlaGtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoa2VyblwiXG5cbmxldCBjcmVhdGVJbWFnZSBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1hZ2VcIlxuXG5sZXQgY3JlYXRlTGluZUVsZW1lbnQgZG9jIDogbGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZVwiXG5cbmxldCBjcmVhdGVMaW5lYXJFbGVtZW50IGRvYyA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lYXJncmFkaWVudFwiXG5cbigqIGxldCBjcmVhdGVNYXJrZXIgZG9jIDogbWFya2VyRWxlbWVudCAqKVxubGV0IGNyZWF0ZU1hc2sgZG9jIDogbWFza0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFza1wiXG5cbmxldCBjcmVhdGVNZXRhRGF0YSBkb2MgOiBtZXRhZGF0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YWRhdGFcIlxuXG5sZXQgY3JlYXRlTWlzc2luZ0dseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtaXNzaW5nLWdseXBoXCJcblxubGV0IGNyZWF0ZU1QYXRoIGRvYyA6IG1QYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtcGF0aFwiXG5cbmxldCBjcmVhdGVQYXRoIGRvYyA6IHBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0dGVybiBkb2MgOiBwYXR0ZXJuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXR0ZXJuXCJcblxubGV0IGNyZWF0ZVBvbHlnb24gZG9jIDogcG9seWdvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWdvblwiXG5cbmxldCBjcmVhdGVQb2x5bGluZSBkb2MgOiBwb2x5TGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWxpbmVcIlxuXG5sZXQgY3JlYXRlUmFkaWFsZ3JhZGllbnQgZG9jIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJhZGlhbGdyYWRpZW50XCJcblxubGV0IGNyZWF0ZVJlY3QgZG9jIDogcmVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmVjdFwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlU2V0IGRvYyA6IHNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2V0XCJcblxubGV0IGNyZWF0ZVN0b3AgZG9jIDogc3RvcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3RvcFwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlU3ZnIGRvYyA6IHN2Z0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ZnXCJcblxubGV0IGNyZWF0ZVN3aXRjaCBkb2MgOiBzd2l0Y2hFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN3aXRjaFwiXG5cbmxldCBjcmVhdGVTeW1ib2wgZG9jIDogc3ltYm9sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzeW1ib2xcIlxuXG5sZXQgY3JlYXRlVGV4dEVsZW1lbnQgZG9jIDogdGV4dEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dFwiXG5cbmxldCBjcmVhdGVUZXh0cGF0aCBkb2MgOiB0ZXh0UGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dHBhdGhcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZVRyZWYgZG9jIDogdHJlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJlZlwiXG5cbmxldCBjcmVhdGVUc3BhbiBkb2MgOiB0c3BhbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHNwYW5cIlxuXG5sZXQgY3JlYXRlVXNlIGRvYyA6IHVzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidXNlXCJcblxubGV0IGNyZWF0ZVZpZXcgZG9jIDogdmlld0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlld1wiXG5cbmxldCBjcmVhdGV2a2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZrZXJuXCJcblxuKCoqKiopXG5cbmxldCBzdmdfZWxlbWVudCA6IGVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1NWR0VsZW1lbnRcblxubGV0IGRvY3VtZW50ID0gSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA6IGVsZW1lbnQgdCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBlIC0+IGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIGUgZWxzZSByYWlzZSBOb3RfZm91bmQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCAoZSA6ICNEb20ubm9kZSBKcy50KSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSAoZSA6ICNlbGVtZW50IHQpIHRhZyA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlIDogYUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFcIlxuXG4gIGxldCBhbHRHbHlwaCBlIDogYWx0R2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaFwiXG5cbiAgbGV0IGFsdEdseXBoRGVmIGUgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoZGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtIGUgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGl0ZW1cIlxuXG4gIGxldCBhbmltYXRlIGUgOiBhbmltYXRlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZVwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciBlIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZWNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiBlIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVtb3Rpb25cIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtIGUgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0IG9wdCA9XG4gICAgdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRldHJhbnNmb3JtXCJcblxuICBsZXQgY2lyY2xlIGUgOiBjaXJjbGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjaXJjbGVcIlxuXG4gIGxldCBjbGlwUGF0aCBlIDogY2xpcFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjbGlwcGF0aFwiXG5cbiAgKCogbGV0IENvbG9yUHJvZmlsZSBlIDogY29sb3JQcm9maWxlIHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjb2xvci1wcm9maWxlXCIgKilcbiAgbGV0IGN1cnNvciBlIDogY3Vyc29yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY3Vyc29yXCJcblxuICBsZXQgZGVmcyBlIDogZGVmc0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlZnNcIlxuXG4gIGxldCBkZXNjIGUgOiBkZXNjRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVzY1wiXG5cbiAgbGV0IGVsbGlwc2UgZSA6IGVsbGlwc2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJlbGxpcHNlXCJcblxuICAoKiBsZXQgRmUqICopXG4gIGxldCBmaWx0ZXIgZSA6IGZpbHRlckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZpbHRlclwiXG5cbiAgbGV0IGZvbnQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250XCJcblxuICBsZXQgZm9udEZhY2UgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2VcIlxuXG4gIGxldCBmb250RmFjZUZvcm1hdCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG4gIGxldCBmb250RmFjZU5hbWUgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtbmFtZVwiXG5cbiAgbGV0IGZvbnRGYWNlU3JjIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRGYWNlVXJpIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgZSA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb3JlaWdub2JqZWN0XCJcblxuICBsZXQgZyBlIDogZ0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdcIlxuXG4gIGxldCBnbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaFwiXG5cbiAgbGV0IGdseXBoUmVmIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBocmVmXCJcblxuICBsZXQgaGtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImhrZXJuXCJcblxuICBsZXQgaW1hZ2UgZSA6IGltYWdlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaW1hZ2VcIlxuXG4gIGxldCBsaW5lRWxlbWVudCBlIDogbGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVcIlxuXG4gIGxldCBsaW5lYXJFbGVtZW50IGUgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVhcmdyYWRpZW50XCJcblxuICAoKiBsZXQgTWFya2VyIGUgOiBtYXJrZXJFbGVtZW50ICopXG4gIGxldCBtYXNrIGUgOiBtYXNrRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWFza1wiXG5cbiAgbGV0IG1ldGFEYXRhIGUgOiBtZXRhZGF0YUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1ldGFkYXRhXCJcblxuICBsZXQgbWlzc2luZ0dseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBtUGF0aCBlIDogbVBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtcGF0aFwiXG5cbiAgbGV0IHBhdGggZSA6IHBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXRoXCJcblxuICBsZXQgcGF0dGVybiBlIDogcGF0dGVybkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdHRlcm5cIlxuXG4gIGxldCBwb2x5Z29uIGUgOiBwb2x5Z29uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWdvblwiXG5cbiAgbGV0IHBvbHlsaW5lIGUgOiBwb2x5TGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlsaW5lXCJcblxuICBsZXQgcmFkaWFsZ3JhZGllbnQgZSA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmFkaWFsZ3JhZGllbnRcIlxuXG4gIGxldCByZWN0IGUgOiByZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmVjdFwiXG5cbiAgbGV0IHNjcmlwdCBlIDogc2NyaXB0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2NyaXB0XCJcblxuICBsZXQgc2V0IGUgOiBzZXRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzZXRcIlxuXG4gIGxldCBzdG9wIGUgOiBzdG9wRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3RvcFwiXG5cbiAgbGV0IHN0eWxlIGUgOiBzdHlsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0eWxlXCJcblxuICBsZXQgc3ZnIGUgOiBzdmdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdmdcIlxuXG4gIGxldCBzd2l0Y2ggZSA6IHN3aXRjaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN3aXRjaFwiXG5cbiAgbGV0IHN5bWJvbCBlIDogc3ltYm9sRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ltYm9sXCJcblxuICBsZXQgdGV4dEVsZW1lbnQgZSA6IHRleHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0XCJcblxuICBsZXQgdGV4dHBhdGggZSA6IHRleHRQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dHBhdGhcIlxuXG4gIGxldCB0aXRsZSBlIDogdGl0bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0aXRsZVwiXG5cbiAgbGV0IHRyZWYgZSA6IHRyZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0cmVmXCJcblxuICBsZXQgdHNwYW4gZSA6IHRzcGFuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHNwYW5cIlxuXG4gIGxldCB1c2UgZSA6IHVzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInVzZVwiXG5cbiAgbGV0IHZpZXcgZSA6IHZpZXdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2aWV3XCJcblxuICBsZXQgdmtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZrZXJuXCJcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50U291cmNlICopXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgc3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RFdmVudElkIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuICAoKiBtZXRob2Qgc291cmNlIDogdW5pdCAqKVxuZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnRTb3VyY2UgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgdXJsIDogc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogc3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aXRoQ3JlZGVudGlhbHMgYiA6IG9wdGlvbnMgdCA9XG4gIGxldCBpbml0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGluaXQjIy53aXRoQ3JlZGVudGlhbHMgOj0gSnMuYm9vbCBiO1xuICBpbml0XG5cbmxldCBldmVudFNvdXJjZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGV2ZW50U291cmNlX29wdGlvbnMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBjb25zb2xlID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzYgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzcgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfOCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWcgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8gOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8xIDogYm9vbCB0IC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8yIDogYm9vbCB0IC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzMgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF80IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF81IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyeG1sIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhY2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXAgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZUVuZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmV4dGVybmFsIGdldF9jb25zb2xlIDogdW5pdCAtPiBjb25zb2xlIHQgPSBcImNhbWxfanNfZ2V0X2NvbnNvbGVcIlxuXG5sZXQgY29uc29sZSA9IGdldF9jb25zb2xlICgpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSBwb3NpdGlvbkVycm9yQ29kZVxuXG50eXBlIHdhdGNoSWRcblxuY2xhc3MgdHlwZSBjb29yZGluYXRlcyA9IG9iamVjdFxuICBtZXRob2QgbGF0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvbmdpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGVBY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWRpbmcgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVlZCA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29vcmRzIDogY29vcmRpbmF0ZXMgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVzdGFtcCA6IEpzLmRhdGUgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25PcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBlbmFibGVIaWdoQWNjdXJhY3kgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVvdXQgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4aW11bUFnZSA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25FcnJvciA9IG9iamVjdFxuICBtZXRob2QgX1BFUk1JU1NJT05fREVOSUVEXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPU0lUSU9OX1VOQVZBSUxBQkxFXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RJTUVPVVQgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBnZW9sb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q3VycmVudFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB3YXRjaFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHdhdGNoSWQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbGVhcldhdGNoIDogd2F0Y2hJZCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcG9zaXRpb25fb3B0aW9ucyAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgZ2VvbG9jYXRpb24gPVxuICBsZXQgeCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5uYXZpZ2F0b3IgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgeCB0aGVuIHgjIy5nZW9sb2NhdGlvbiBlbHNlIHhcblxuKCogdW5kZWZpbmVkICopXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBnZW9sb2NhdGlvblxuIiwiY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm91bmRpbmdDbGllbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEJvdW5kcyA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmF0aW8gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzSW50ZXJzZWN0aW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZCA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGRzIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50ID1cbiAgSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKCAgIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50XG4gICAgICAgICAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudFxuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOCBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFNoYXJlZCA9IHNpZ1xuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIHZhbCBvYmplY3Rfb3B0aW9ucyA6IHVuaXQgLT4gb2JqZWN0X29wdGlvbnMgSnMudFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2hhcmVkIDogU2hhcmVkID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9iamVjdF9vcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb2xsYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNvbGxhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzYWdlID0gSnMuc3RyaW5nIFwic29ydFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlbnNpdGl2aXR5ID0gSnMuc3RyaW5nIFwidmFyaWFudFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIGlnbm9yZVB1bmN0dWF0aW9uID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWVyaWMgPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgY2FzZUZpcnN0ID0gSnMuc3RyaW5nIFwiZmFsc2VcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYXJlIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IGludCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIERhdGVUaW1lRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgZGF0ZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXlQZXJpb2QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ckN5Y2xlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmb3JtYXRNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBkYXRlU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhbGVuZGFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheVBlcmlvZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91cjEyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXJDeWNsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmb3JtYXRNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB3ZWVrZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGVyYSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB5ZWFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1vbnRoID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbnV0ZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzZWNvbmQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZU5hbWUgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5kYXRlIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLmRhdGUgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhY3REaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeVNpZ24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgbm90YXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2lnbkRpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXREaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdNb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ1ByaW9yaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ0luY3JlbWVudCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdHJhaWxpbmdaZXJvRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgY29tcGFjdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3kgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lEaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5U2lnbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBub3RhdGlvbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2lnbkRpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc3R5bGUgPSBKcy5zdHJpbmcgXCJkZWNpbWFsXCJcblxuICAgICAgdmFsIG11dGFibGUgdW5pdCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2VHcm91cGluZyA9IEpzLl90cnVlXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nTW9kZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ1ByaW9yaXR5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nSW5jcmVtZW50ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRyYWlsaW5nWmVyb0Rpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUludGVnZXJEaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBsdXJhbFJ1bGVzID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBwbHVyYWxDYXRlZ29yaWVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIF90eXBlID0gSnMuc3RyaW5nIFwiY2FyZGluYWxcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzZWxlY3QgOiBKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5jbGFzcyB0eXBlIGludGwgPSBvYmplY3RcbiAgbWV0aG9kIF9Db2xsYXRvciA6IENvbGxhdG9yLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EYXRlVGltZUZvcm1hdCA6IERhdGVUaW1lRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OdW1iZXJGb3JtYXQgOiBOdW1iZXJGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BsdXJhbFJ1bGVzIDogUGx1cmFsUnVsZXMuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q2Fub25pY2FsTG9jYWxlcyA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgaW50bCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bFxuXG5sZXQgY29sbGF0b3JfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0NvbGxhdG9yXG5cbmxldCBkYXRlVGltZUZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fRGF0ZVRpbWVGb3JtYXRcblxubGV0IG51bWJlckZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fTnVtYmVyRm9ybWF0XG5cbmxldCBwbHVyYWxSdWxlc19jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fUGx1cmFsUnVsZXNcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGxcbiIsIlxudHlwZSB0ID0gaW50XG5sZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG5sZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbmxldCB0b19pbnQgeCA9IHhcbmxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcblxubGV0IGludGVyc2VjdCB4IHkgPSB4IGxhbmQgeSA8PiAwXG5sZXQgKCsrKSB4IHkgPSB4IGxvciB5XG5cbmxldCBkdW1teSA9IC0xXG5sZXQgaW5leGlzdGFudCA9IDFcbmxldCBsZXR0ZXIgPSAyXG5sZXQgbm90X2xldHRlciA9IDRcbmxldCBuZXdsaW5lID0gOFxubGV0IGxhc3RuZXdsaW5lID0gMTZcbmxldCBzZWFyY2hfYm91bmRhcnkgPSAzMlxuXG5sZXQgZnJvbV9jaGFyID0gZnVuY3Rpb25cbiAgKCogU2hvdWxkIG1hdGNoIFtjd29yZF0gZGVmaW5pdGlvbiAqKVxuICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JyB8ICdfJyB8ICdcXDE3MCcgfCAnXFwxODEnIHwgJ1xcMTg2J1xuICB8ICdcXDE5MicuLidcXDIxNCcgfCAnXFwyMTYnLi4nXFwyNDYnIHwgJ1xcMjQ4Jy4uJ1xcMjU1JyAtPlxuICAgIGxldHRlclxuICB8ICdcXG4nIC0+XG4gICAgbm90X2xldHRlciArKyBuZXdsaW5lXG4gIHwgXyAtPlxuICAgIG5vdF9sZXR0ZXJcbiIsIigqKiBWZXJ5IHNtYWxsIHRvb2xpbmcgZm9yIGZvcm1hdCBwcmludGVycy4gKilcblxuaW5jbHVkZSBGb3JtYXRcblxudHlwZSAnYSB0ID0gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0XG5cbmxldCBsaXN0ID0gcHBfcHJpbnRfbGlzdFxubGV0IHN0ciA9IHBwX3ByaW50X3N0cmluZ1xubGV0IHNleHAgZm10IHMgcHAgeCA9IGZwcmludGYgZm10IFwiQFs8Mz4oJXNAICVhKUBdXCIgcyBwcCB4XG5sZXQgcGFpciBwcDEgcHAyIGZtdCAodjEsdjIpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDsgcHAyIGZtdCB2MlxubGV0IHRyaXBsZSBwcDEgcHAyIHBwMyBmbXQgKHYxLCB2MiwgdjMpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAyIGZtdCB2MjsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAzIGZtdCB2M1xubGV0IGludCA9IHBwX3ByaW50X2ludFxubGV0IG9wdGludCBmbXQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGkgLT4gZnByaW50ZiBmbXQgXCJAICVkXCIgaVxuXG5sZXQgcXVvdGUgZm10IHMgPSBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIgc1xuXG5sZXQgcHBfb2xpc3QgcHBfZWxlbSBmbXQgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwzPltAICVhQCBdQF1cIlxuICAgIChwcF9wcmludF9saXN0XG4gICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBmcHJpbnRmIGZtdCBcIjtAIFwiKVxuICAgICAgIHBwX2VsZW0pXG5cbmxldCBwcF9zdHJfbGlzdCA9IHBwX29saXN0IHF1b3RlXG5cbmxldCB0b190b19zdHJpbmcgcHAgeCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBwcCBmbXQgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgYyA9IGludFxudHlwZSB0ID0gKGMgKiBjKSBsaXN0XG5cbmxldCByZWMgdW5pb24gbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gbCdcbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiArIDEgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OnVuaW9uIHIgbCdcbiAgICBlbHNlIGlmIGMyJyArIDEgPCBjMSB0aGVuXG4gICAgICAoYzEnLCBjMicpOjp1bmlvbiBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICB1bmlvbiByICgobWluIGMxIGMxJywgYzInKTo6cicpXG4gICAgZWxzZVxuICAgICAgdW5pb24gKChtaW4gYzEgYzEnLCBjMik6OnIpIHInXG5cbmxldCByZWMgaW50ZXIgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBbXVxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgaW50ZXIgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgaW50ZXIgbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgKG1heCBjMSBjMScsIGMyKTo6aW50ZXIgciBsJ1xuICAgIGVsc2VcbiAgICAgIChtYXggYzEgYzEnLCBjMicpOjppbnRlciBsIHInXG5cbmxldCByZWMgZGlmZiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjpkaWZmIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGRpZmYgbCByJ1xuICAgIGVsc2VcbiAgICAgIGxldCByJycgPSBpZiBjMicgPCBjMiB0aGVuIChjMicgKyAxLCBjMikgOjogciBlbHNlIHIgaW5cbiAgICAgIGlmIGMxIDwgYzEnIHRoZW5cbiAgICAgICAgKGMxLCBjMScgLSAxKTo6ZGlmZiByJycgcidcbiAgICAgIGVsc2VcbiAgICAgICAgZGlmZiByJycgcidcblxubGV0IHNpbmdsZSBjID0gW2MsIGNdXG5cbmxldCBhZGQgYyBsID0gdW5pb24gKHNpbmdsZSBjKSBsXG5cbmxldCBzZXEgYyBjJyA9IGlmIGMgPD0gYycgdGhlbiBbYywgYyddIGVsc2UgW2MnLCBjXVxuXG5sZXQgcmVjIG9mZnNldCBvIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgICAgICAgIC0+IFtdXG4gIHwgKGMxLCBjMikgOjogciAtPiAoYzEgKyBvLCBjMiArIG8pIDo6IG9mZnNldCBvIHJcblxubGV0IGVtcHR5ID0gW11cblxubGV0IHJlYyBtZW0gKGMgOiBpbnQpIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgICBbXSAgICAgICAgICAgICAgLT4gZmFsc2VcbiAgfCAoYzEsIGMyKSA6OiByZW0gLT4gaWYgYyA8PSBjMiB0aGVuIGMgPj0gYzEgZWxzZSBtZW0gYyByZW1cblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxuXG5sZXQgcmVjIGhhc2hfcmVjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgLT4gMFxuICB8IChpLCBqKTo6ciAtPiBpICsgMTMgKiBqICsgMjU3ICogaGFzaF9yZWMgclxubGV0IGhhc2ggbCA9IChoYXNoX3JlYyBsKSBsYW5kIDB4M0ZGRkZGRkZcblxuKCoqKiopXG5cbmxldCBwcmludF9vbmUgY2ggKGMxLCBjMikgPVxuICBpZiBjMSA9IGMyIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkXCIgYzFcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBjMSBjMlxuXG5sZXQgcHAgPSBGbXQubGlzdCBwcmludF9vbmVcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8ICh4LCB5KTo6eHMgLT5cbiAgICBmIHggeTtcbiAgICBpdGVyIHhzICB+ZlxuXG5sZXQgb25lX2NoYXIgPSBmdW5jdGlvblxuICB8IFtpLCBqXSB3aGVuIGkgPSBqIC0+IFNvbWUgaVxuICB8IF8gLT4gTm9uZVxuXG5cbm1vZHVsZSBDU2V0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCAqIChpbnQgKiBpbnQpIGxpc3RcbiAgICBsZXQgY29tcGFyZSAoaSwgdSkgKGosIHYpID1cbiAgICAgIGxldCBjID0gY29tcGFyZSBpIGogaW5cbiAgICAgIGlmIGMgPD4gMFxuICAgICAgdGhlbiBjXG4gICAgICBlbHNlIGNvbXBhcmUgdSB2XG4gIGVuZClcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZF9yaWdodCBmIHQgaW5pdFxuXG5sZXQgY3NpbmdsZSBjID0gc2luZ2xlIChDaGFyLmNvZGUgYylcblxubGV0IGNhbnkgPSBbMCwgMjU1XVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCByZWMgcHJlcGVuZCBzIHggbCA9XG4gIG1hdGNoIHMsIGwgd2l0aFxuICB8IFtdLCBfIC0+IGxcbiAgfCBfciwgW10gLT4gW11cbiAgfCAoX2MsIGMnKSA6OiByLCAoW2QsIF9kJ10sIF94JykgOjogX3InIHdoZW4gYycgPCBkIC0+IHByZXBlbmQgciB4IGxcbiAgfCAoYywgYycpIDo6IHIsIChbZCwgZCddLCB4JykgOjogcicgLT5cbiAgICBpZiBjIDw9IGQgdGhlbiBiZWdpblxuICAgICAgaWYgYycgPCBkJ1xuICAgICAgdGhlbiAoW2QsIGMnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHIgeCAoKFtjJyArIDEsIGQnXSwgeCcpIDo6IHInKVxuICAgICAgZWxzZSAoW2QsIGQnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBjID4gZCdcbiAgICAgIHRoZW4gKFtkLCBkJ10sIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgICAgZWxzZSAoW2QsIGMgLSAxXSwgeCcpIDo6IHByZXBlbmQgcyB4ICgoW2MsIGQnXSwgeCcpIDo6IHInKVxuICAgIGVuZFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwaWNrID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIlJlX2NzZXQucGlja1wiXG4gIHwgKHgsIF8pOjpfIC0+IHhcbiIsIlxubW9kdWxlIFBtYXJrID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG4gIGxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxuICBsZXQgciA9IHJlZiAwXG4gIGxldCBnZW4gKCkgPSBpbmNyIHIgOyAhclxuXG4gIGxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcbmVuZFxuXG5pbmNsdWRlIFBtYXJrXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UoUG1hcmspXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIHNlbSA9IFsgYExvbmdlc3QgfCBgU2hvcnRlc3QgfCBgRmlyc3QgXVxuXG50eXBlIHJlcF9raW5kID0gWyBgR3JlZWR5IHwgYE5vbl9ncmVlZHkgXVxuXG50eXBlIG1hcmsgPSBpbnRcbnR5cGUgaWR4ID0gaW50XG5cbnR5cGUgZXhwciA9IHsgaWQgOiBpbnQ7IGRlZiA6IGRlZiB9XG5cbmFuZCBkZWYgPVxuICAgIENzdCBvZiBDc2V0LnRcbiAgfCBBbHQgb2YgZXhwciBsaXN0XG4gIHwgU2VxIG9mIHNlbSAqIGV4cHIgKiBleHByXG4gIHwgRXBzXG4gIHwgUmVwIG9mIHJlcF9raW5kICogc2VtICogZXhwclxuICB8IE1hcmsgb2YgaW50XG4gIHwgRXJhc2Ugb2YgaW50ICogaW50XG4gIHwgQmVmb3JlIG9mIENhdGVnb3J5LnRcbiAgfCBBZnRlciBvZiBDYXRlZ29yeS50XG4gIHwgUG1hcmsgb2YgUG1hcmsudFxuXG5sZXQgaGFzaF9jb21iaW5lIGggYWNjdSA9IGFjY3UgKiA2NTU5OSArIGhcblxubW9kdWxlIE1hcmtzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXJrcyA6IChpbnQgKiBpbnQpIGxpc3RcbiAgICA7IHBtYXJrcyA6IFBtYXJrLlNldC50IH1cblxuICBsZXQgZW1wdHkgPSB7IG1hcmtzID0gW10gOyBwbWFya3MgPSBQbWFyay5TZXQuZW1wdHkgfVxuXG4gIGxldCByZWMgbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgb2xkXG4gICAgfCAoaSwgdikgOjogcmVtIC0+XG4gICAgICBsZXQgbncnID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IChMaXN0LnJlbW92ZV9hc3NxIGkgb2xkKSByZW0gaW5cbiAgICAgIGlmIHYgPSAtMiB0aGVuXG4gICAgICAgIG53J1xuICAgICAgZWxzZVxuICAgICAgICAoaSwgdikgOjogbncnXG5cbiAgbGV0IG1lcmdlIG9sZCBudyA9XG4gICAgeyBtYXJrcyA9IG1lcmdlX21hcmtzX29mZnNldCBvbGQubWFya3MgbncubWFya3NcbiAgICA7IHBtYXJrcyA9IFBtYXJrLlNldC51bmlvbiBvbGQucG1hcmtzIG53LnBtYXJrcyB9XG5cbiAgbGV0IHJlYyBoYXNoX21hcmtzX29mZnNldCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gICAgICAgICAgLT4gYWNjdVxuICAgIHwgKGEsIGkpIDo6IHIgLT4gaGFzaF9tYXJrc19vZmZzZXQgciAoaGFzaF9jb21iaW5lIGEgKGhhc2hfY29tYmluZSBpIGFjY3UpKVxuXG4gIGxldCBoYXNoIG0gYWNjdSA9XG4gICAgaGFzaF9tYXJrc19vZmZzZXQgbS5tYXJrcyAoaGFzaF9jb21iaW5lIChIYXNodGJsLmhhc2ggbS5wbWFya3MpIGFjY3UpXG5cbiAgbGV0IHJlYyBtYXJrc19zZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gICAgfCAoYSwgLTEpIDo6IHJlbSAtPlxuICAgICAgKGEsIGlkeCkgOjogbWFya3Nfc2V0X2lkeCBpZHggcmVtXG4gICAgfCBtYXJrcyAtPlxuICAgICAgbWFya3NcblxuICBsZXQgbWFya3Nfc2V0X2lkeCBtYXJrcyBpZHggPVxuICAgIHsgbWFya3Mgd2l0aCBtYXJrcyA9IG1hcmtzX3NldF9pZHggaWR4IG1hcmtzLm1hcmtzIH1cblxuICBsZXQgcHBfbWFya3MgY2ggdCA9XG4gICAgbWF0Y2ggdC5tYXJrcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgICB8IChhLCBpKSA6OiByIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYSBpO1xuICAgICAgTGlzdC5pdGVyIChmdW4gKGEsIGkpIC0+IEZvcm1hdC5mcHJpbnRmIGNoIFwiICVkLSVkXCIgYSBpKSByXG5lbmRcblxuKCoqKiopXG5cbmxldCBwcF9zZW0gY2ggayA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgY2hcbiAgICAobWF0Y2ggayB3aXRoXG4gICAgICAgYFNob3J0ZXN0IC0+IFwic2hvcnRcIlxuICAgICB8IGBMb25nZXN0ICAtPiBcImxvbmdcIlxuICAgICB8IGBGaXJzdCAgICAtPiBcImZpcnN0XCIpXG5cblxubGV0IHBwX3JlcF9raW5kIGZtdCA9IGZ1bmN0aW9uXG4gIHwgYEdyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkdyZWVkeVwiXG4gIHwgYE5vbl9ncmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25fZ3JlZWR5XCJcblxubGV0IHJlYyBwcCBjaCBlID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIG1hdGNoIGUuZGVmIHdpdGhcbiAgICBDc3QgbCAtPlxuICAgIHNleHAgY2ggXCJjc3RcIiBDc2V0LnBwIGw7XG4gIHwgQWx0IGwgLT5cbiAgICBzZXhwIGNoIFwiYWx0XCIgKGxpc3QgcHApIGxcbiAgfCBTZXEgKGssIGUsIGUnKSAtPlxuICAgIHNleHAgY2ggXCJzZXFcIiAodHJpcGxlIHBwX3NlbSBwcCBwcCkgKGssIGUsIGUnKVxuICB8IEVwcyAtPlxuICAgIHN0ciBjaCBcImVwc1wiXG4gIHwgUmVwIChfcmssIGssIGUpIC0+XG4gICAgc2V4cCBjaCBcInJlcFwiIChwYWlyIHBwX3NlbSBwcCkgKGssIGUpXG4gIHwgTWFyayBpIC0+XG4gICAgc2V4cCBjaCBcIm1hcmtcIiBpbnQgaVxuICB8IFBtYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwicG1hcmtcIiBpbnQgKGkgOj4gaW50KVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIHNleHAgY2ggXCJlcmFzZVwiIChwYWlyIGludCBpbnQpIChiLCBlKVxuICB8IEJlZm9yZSBjIC0+XG4gICAgc2V4cCBjaCBcImJlZm9yZVwiIENhdGVnb3J5LnBwIGNcbiAgfCBBZnRlciBjIC0+XG4gICAgc2V4cCBjaCBcImFmdGVyXCIgQ2F0ZWdvcnkucHAgY1xuXG5cbigqKioqKVxuXG5sZXQgcmVjIGZpcnN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTm9uZVxuICB8IHggOjogciAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICBOb25lICAgICAgICAgIC0+IGZpcnN0IGYgclxuICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXNcblxuKCoqKiopXG5cbnR5cGUgaWRzID0gaW50IHJlZlxubGV0IGNyZWF0ZV9pZHMgKCkgPSByZWYgMFxuXG5sZXQgZXBzX2V4cHIgPSB7IGlkID0gMDsgZGVmID0gRXBzIH1cblxubGV0IG1rX2V4cHIgaWRzIGRlZiA9XG4gIGluY3IgaWRzO1xuICB7IGlkID0gIWlkczsgZGVmID0gZGVmIH1cblxubGV0IGVtcHR5IGlkcyA9IG1rX2V4cHIgaWRzIChBbHQgW10pXG5cbmxldCBjc3QgaWRzIHMgPVxuICBpZiBDc2V0LmlzX2VtcHR5IHNcbiAgdGhlbiBlbXB0eSBpZHNcbiAgZWxzZSBta19leHByIGlkcyAoQ3N0IHMpXG5cbmxldCBhbHQgaWRzID0gZnVuY3Rpb25cbiAgfCBbXSAgLT4gZW1wdHkgaWRzXG4gIHwgW2NdIC0+IGNcbiAgfCBsICAgLT4gbWtfZXhwciBpZHMgKEFsdCBsKVxuXG5sZXQgc2VxIGlkcyBraW5kIHggeSA9XG4gIG1hdGNoIHguZGVmLCB5LmRlZiB3aXRoXG4gICAgQWx0IFtdLCBfICAgICAgICAgICAgICAgICAtPiB4XG4gIHwgXywgQWx0IFtdICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgRXBzLCBfICAgICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgXywgRXBzIHdoZW4ga2luZCA9IGBGaXJzdCAtPiB4XG4gIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAtPiBta19leHByIGlkcyAoU2VxIChraW5kLCB4LCB5KSlcblxubGV0IGlzX2VwcyBleHByID1cbiAgbWF0Y2ggZXhwci5kZWYgd2l0aFxuICB8IEVwcyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgZXBzIGlkcyA9IG1rX2V4cHIgaWRzIEVwc1xuXG5sZXQgcmVwIGlkcyBraW5kIHNlbSB4ID0gbWtfZXhwciBpZHMgKFJlcCAoa2luZCwgc2VtLCB4KSlcblxubGV0IG1hcmsgaWRzIG0gPSBta19leHByIGlkcyAoTWFyayBtKVxuXG5sZXQgcG1hcmsgaWRzIGkgPSBta19leHByIGlkcyAoUG1hcmsgaSlcblxubGV0IGVyYXNlIGlkcyBtIG0nID0gbWtfZXhwciBpZHMgKEVyYXNlIChtLCBtJykpXG5cbmxldCBiZWZvcmUgaWRzIGMgPSBta19leHByIGlkcyAoQmVmb3JlIGMpXG5cbmxldCBhZnRlciBpZHMgYyA9IG1rX2V4cHIgaWRzIChBZnRlciBjKVxuXG4oKioqKilcblxubGV0IHJlYyByZW5hbWUgaWRzIHggPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IF8gfCBFcHMgfCBNYXJrIF8gfCBQbWFyayBfIHwgRXJhc2UgXyB8IEJlZm9yZSBfIHwgQWZ0ZXIgXyAtPlxuICAgIG1rX2V4cHIgaWRzIHguZGVmXG4gIHwgQWx0IGwgLT5cbiAgICBta19leHByIGlkcyAoQWx0IChMaXN0Lm1hcCAocmVuYW1lIGlkcykgbCkpXG4gIHwgU2VxIChrLCB5LCB6KSAtPlxuICAgIG1rX2V4cHIgaWRzIChTZXEgKGssIHJlbmFtZSBpZHMgeSwgcmVuYW1lIGlkcyB6KSlcbiAgfCBSZXAgKGcsIGssIHkpIC0+XG4gICAgbWtfZXhwciBpZHMgKFJlcCAoZywgaywgcmVuYW1lIGlkcyB5KSlcblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxudHlwZSBtYXJrX2luZm9zID0gaW50IGFycmF5XG50eXBlIHN0YXR1cyA9IEZhaWxlZCB8IE1hdGNoIG9mIG1hcmtfaW5mb3MgKiBQbWFyay5TZXQudCB8IFJ1bm5pbmdcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRTZXEgb2YgdCBsaXN0ICogZXhwciAqIHNlbVxuICAgIHwgVEV4cCBvZiBNYXJrcy50ICogZXhwclxuICAgIHwgVE1hdGNoIG9mIE1hcmtzLnRcblxuICBsZXQgcmVjIGVxdWFsIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+XG4gICAgICB0cnVlXG4gICAgfCBUU2VxIChsMScsIGUxLCBfKSA6OiByMSwgVFNlcSAobDInLCBlMiwgXykgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgZXF1YWwgbDEnIGwyJyAmJiBlcXVhbCByMSByMlxuICAgIHwgVEV4cCAobWFya3MxLCBlMSkgOjogcjEsIFRFeHAgKG1hcmtzMiwgZTIpIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgVE1hdGNoIG1hcmtzMSA6OiByMSwgVE1hdGNoIG1hcmtzMiA6OiByMiAtPlxuICAgICAgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCByZWMgaGFzaCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFjY3VcbiAgICB8IFRTZXEgKGwnLCBlLCBfKSA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDE3MmExYmNlIChoYXNoX2NvbWJpbmUgZS5pZCAoaGFzaCBsJyBhY2N1KSkpXG4gICAgfCBURXhwIChtYXJrcywgZSkgOjogciAtPlxuICAgICAgaGFzaCByXG4gICAgICAgIChoYXNoX2NvbWJpbmUgMHgyYjRjMGQ3NyAoaGFzaF9jb21iaW5lIGUuaWQgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpKVxuICAgIHwgVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MWMyMDVhZDUgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpXG5cbiAgbGV0IHRleHAgbWFya3MgeCA9IFRFeHAgKG1hcmtzLCB4KVxuXG4gIGxldCB0c2VxIGtpbmQgeCB5IHJlbSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IHJlbVxuICAgIHwgW1RFeHAgKG1hcmtzLCB7ZGVmID0gRXBzIDsgX30pXSAtPiBURXhwIChtYXJrcywgeSkgOjogcmVtXG4gICAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFRTZXEgKHgsIHksIGtpbmQpIDo6IHJlbVxuXG4gIGxldCByZWMgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCBUTWF0Y2ggbWFya3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oTWF0Y2hAICVhKUBdXCIgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRTZXEgKGwnLCB4LCBfa2luZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oU2VxQCBcIjtcbiAgICAgIHByaW50X3N0YXRlX2xzdCBjaCBsJyB4O1xuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAICVhKUBdXCIgcHAgeFxuICAgIHwgVEV4cCAobWFya3MsIHtkZWYgPSBFcHM7IF99KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAoZXBzKSlAXVwiIHkuaWQgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRFeHAgKG1hcmtzLCB4KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAlYSlAXVwiIHguaWQgTWFya3MucHBfbWFya3MgbWFya3MgcHAgeFxuXG4gIGFuZCBwcmludF9zdGF0ZV9sc3QgY2ggbCB5ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIigpXCJcbiAgICB8IGUgOjogcmVtIC0+XG4gICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5O1xuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgfCBcIjtcbiAgICAgICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSlcbiAgICAgICAgcmVtXG5cbiAgbGV0IHBwIGNoIHQgPSBwcmludF9zdGF0ZV9sc3QgY2ggW3RdIHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgaWR4OiBpZHhcbiAgICA7IGNhdGVnb3J5OiBDYXRlZ29yeS50XG4gICAgOyBkZXNjOiBFLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGF0dXM6IHN0YXR1cyBvcHRpb25cbiAgICA7IGhhc2g6IGhhc2ggfVxuXG4gIGxldCBkdW1teSA9XG4gICAgeyBpZHggPSAtMVxuICAgIDsgY2F0ZWdvcnkgPSBDYXRlZ29yeS5kdW1teVxuICAgIDsgZGVzYyA9IFtdXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gLTEgfVxuXG4gIGxldCBoYXNoIGlkeCBjYXQgZGVzYyA9XG4gICAgRS5oYXNoIGRlc2MgKGhhc2hfY29tYmluZSBpZHggKGhhc2hfY29tYmluZSAoQ2F0ZWdvcnkudG9faW50IGNhdCkgMCkpIGxhbmQgMHgzRkZGRkZGRlxuXG4gIGxldCBtayBpZHggY2F0IGRlc2MgPVxuICAgIHsgaWR4XG4gICAgOyBjYXRlZ29yeSA9IGNhdFxuICAgIDsgZGVzY1xuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IGhhc2ggaWR4IGNhdCBkZXNjfVxuXG4gIGxldCBjcmVhdGUgY2F0IGUgPSBtayAwIGNhdCBbRS5URXhwIChNYXJrcy5lbXB0eSwgZSldXG5cbiAgbGV0IGVxdWFsIHggeSA9XG4gICAgKHguaGFzaCA6IGludCkgPSB5Lmhhc2ggJiYgKHguaWR4IDogaW50KSA9IHkuaWR4ICYmXG4gICAgQ2F0ZWdvcnkuZXF1YWwgeC5jYXRlZ29yeSB5LmNhdGVnb3J5ICYmIEUuZXF1YWwgeC5kZXNjIHkuZGVzY1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgbGV0IGMgPSBjb21wYXJlICh4Lmhhc2ggOiBpbnQpIHkuaGFzaCBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgbGV0IGMgPSBDYXRlZ29yeS5jb21wYXJlIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgIGNvbXBhcmUgeC5kZXNjIHkuZGVzY1xuXG4gIHR5cGUgdCcgPSB0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHQnXG4gICAgICBsZXQgZXF1YWwgPSBlcXVhbFxuICAgICAgbGV0IGhhc2ggdCA9IHQuaGFzaFxuICAgIGVuZClcbmVuZFxuXG4oKioqKiBGaW5kIGEgZnJlZSBpbmRleCAqKioqKVxuXG50eXBlIHdvcmtpbmdfYXJlYSA9IGJvb2wgYXJyYXkgcmVmXG5cbmxldCBjcmVhdGVfd29ya2luZ19hcmVhICgpID0gcmVmIFt8IGZhbHNlIHxdXG5cbmxldCBpbmRleF9jb3VudCB3ID0gQXJyYXkubGVuZ3RoICF3XG5cbmxldCByZXNldF90YWJsZSBhID0gQXJyYXkuZmlsbCBhIDAgKEFycmF5Lmxlbmd0aCBhKSBmYWxzZVxuXG5sZXQgcmVjIG1hcmtfdXNlZF9pbmRpY2VzIHRibCA9XG4gIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgIHwgRS5UU2VxIChsLCBfLCBfKSAtPiBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbFxuICAgICAgfCBFLlRFeHAgKG1hcmtzLCBfKVxuICAgICAgfCBFLlRNYXRjaCBtYXJrcyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoXywgaSkgLT4gaWYgaSA+PSAwIHRoZW4gdGJsLihpKSA8LSB0cnVlKVxuICAgICAgICAgIG1hcmtzLk1hcmtzLm1hcmtzKVxuXG5sZXQgcmVjIGZpbmRfZnJlZSB0YmwgaWR4IGxlbiA9XG4gIGlmIGlkeCA9IGxlbiB8fCBub3QgdGJsLihpZHgpIHRoZW4gaWR4IGVsc2UgZmluZF9mcmVlIHRibCAoaWR4ICsgMSkgbGVuXG5cbmxldCBmcmVlX2luZGV4IHRibF9yZWYgbCA9XG4gIGxldCB0YmwgPSAhdGJsX3JlZiBpblxuICByZXNldF90YWJsZSB0Ymw7XG4gIG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsO1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHRibCBpblxuICBsZXQgaWR4ID0gZmluZF9mcmVlIHRibCAwIGxlbiBpblxuICBpZiBpZHggPSBsZW4gdGhlbiB0YmxfcmVmIDo9IEFycmF5Lm1ha2UgKDIgKiBsZW4pIGZhbHNlO1xuICBpZHhcblxuKCoqKiogQ29tcHV0YXRpb24gb2YgdGhlIG5leHQgc3RhdGUgKioqKilcblxubGV0IHJlbW92ZV9tYXRjaGVzID0gTGlzdC5maWx0ZXIgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpXG5cbmxldCByZWMgc3BsaXRfYXRfbWF0Y2hfcmVjIGwnID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEUuVE1hdGNoIF8gOjogciAtPiAoTGlzdC5yZXYgbCcsIHJlbW92ZV9tYXRjaGVzIHIpXG4gIHwgeCA6OiByICAgICAgICAtPiBzcGxpdF9hdF9tYXRjaF9yZWMgKHggOjogbCcpIHJcblxubGV0IHNwbGl0X2F0X21hdGNoIGwgPSBzcGxpdF9hdF9tYXRjaF9yZWMgW10gbFxuXG5sZXQgcmVjIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCB5ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT5cbiAgICAoW10sIHByZXYpXG4gIHwgRS5UTWF0Y2ggXyBhcyB4IDo6IF8gLT4gKCogVHJ1bmNhdGUgYWZ0ZXIgZmlyc3QgbWF0Y2ggKilcbiAgICAoW3hdLCBwcmV2KVxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBsZXQgKGwnJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsJyB4IGluXG4gICAgbGV0IChyJywgcHJldicnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYnIHIgeSBpblxuICAgIChFLnRzZXEga2luZCBsJycgeCByJywgcHJldicnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB7ZGVmID0gRXBzOyBffSkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHkuaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh5LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB4KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeC5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHguaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG5cbmxldCByZWMgc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBFLlRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgRS5UTWF0Y2ggKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIEUuVFNlcSAoc2V0X2lkeCBpZHggbCcsIHgsIGtpbmQpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRFeHAgKG1hcmtzLCB4KSA6OiByIC0+XG4gICAgRS5URXhwICgoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpLCB4KSA6OiBzZXRfaWR4IGlkeCByXG5cbmxldCBmaWx0ZXJfbWFya3MgYiBlIG1hcmtzID1cbiAge21hcmtzIHdpdGggTWFya3MubWFya3MgPSBMaXN0LmZpbHRlciAoZnVuIChpLCBfKSAtPiBpIDwgYiB8fCBpID4gZSkgbWFya3MuTWFya3MubWFya3MgfVxuXG5sZXQgcmVjIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgKCpGb3JtYXQuZXByaW50ZiBcIiVkQC5cIiB4LmlkOyopXG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgcyAtPlxuICAgIGlmIENzZXQubWVtIGMgcyB0aGVuIEUudGV4cCBtYXJrcyBlcHNfZXhwciA6OiByZW0gZWxzZSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBsZXQgKHknJywgbWFya3MnKSA9XG4gICAgICBtYXRjaFxuICAgICAgICBmaXJzdFxuICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5J1xuICAgICAgd2l0aFxuICAgICAgICBOb25lICAgICAgICAtPiAoeScsIG1hcmtzKVxuICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeScsIG1hcmtzJylcbiAgICBpblxuICAgIGJlZ2luIG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeScnIHggKEUuVE1hdGNoIG1hcmtzJyA6OiByZW0pXG4gICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHknJyB4IHJlbVxuICAgIGVuZFxuICB8IEVwcyAtPlxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBQbWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLnBtYXJrcyA9IFBtYXJrLlNldC5hZGQgaSBtYXJrcy5NYXJrcy5wbWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIEUuVE1hdGNoIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKSA6OiByZW1cbiAgfCBCZWZvcmUgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgbmV4dF9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cbiAgfCBBZnRlciBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBwcmV2X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5hbmQgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHkgeiByZW0gPVxuICBtYXRjaFxuICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5XG4gIHdpdGhcbiAgICBOb25lIC0+XG4gICAgRS50c2VxIGtpbmQgeSB6IHJlbVxuICB8IFNvbWUgbWFya3MgLT5cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIGBMb25nZXN0IC0+XG4gICAgICBFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiByZW0pXG4gICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHpcbiAgICAgICAgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IHJlbSlcbiAgICB8IGBGaXJzdCAtPlxuICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgIEUudHNlcSBraW5kIHknIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogKEUudHNlcSBraW5kIHknJyB6IHJlbSkpXG5cbmxldCByZWMgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgeCA6OiByZW1cblxuYW5kIGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxubGV0IGRlbHRhIHRibF9yZWYgbmV4dF9jYXQgY2hhciBzdCA9XG4gIGxldCBwcmV2X2NhdCA9IHN0LlN0YXRlLmNhdGVnb3J5IGluXG4gIGxldCAoZXhwcicsIF8pID1cbiAgICByZW1vdmVfZHVwbGljYXRlcyBbXVxuICAgICAgKGRlbHRhXzQgY2hhciB+bmV4dF9jYXQgfnByZXZfY2F0IHN0LlN0YXRlLmRlc2MgW10pXG4gICAgICBlcHNfZXhwciBpblxuICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICBTdGF0ZS5tayBpZHggbmV4dF9jYXQgZXhwcicnXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlZF90ciA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbX10gYXMgbCAtPlxuICAgIGxcbiAgfCAoKHMxLCBzdDEpIGFzIHRyMSkgOjogKChzMiwgc3QyKSBhcyB0cjIpIDo6IHJlbSAtPlxuICAgIGlmIFN0YXRlLmVxdWFsIHN0MSBzdDIgdGhlblxuICAgICAgcmVkX3RyICgoQ3NldC51bmlvbiBzMSBzMiwgc3QxKSA6OiByZW0pXG4gICAgZWxzZVxuICAgICAgdHIxIDo6IHJlZF90ciAodHIyIDo6IHJlbSlcblxubGV0IHNpbXBsX3RyIGwgPVxuICBMaXN0LnNvcnRcbiAgICAoZnVuIChzMSwgXykgKHMyLCBfKSAtPiBjb21wYXJlIHMxIHMyKVxuICAgIChyZWRfdHIgKExpc3Quc29ydCAoZnVuIChfLCBzdDEpIChfLCBzdDIpIC0+IFN0YXRlLmNvbXBhcmUgc3QxIHN0MikgbCkpXG5cbigqKioqKVxuXG5sZXQgcHJlcGVuZF9kZXJpdiA9IExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCB4KSBsIC0+IENzZXQucHJlcGVuZCBzIHggbClcblxubGV0IHJlYyByZXN0cmljdCBzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChzJywgeCcpIDo6IHJlbSAtPlxuICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgIHRoZW4gcmVzdHJpY3QgcyByZW1cbiAgICBlbHNlIChzJycsIHgnKSA6OiByZXN0cmljdCBzIHJlbVxuXG5sZXQgcmVjIHJlbW92ZV9tYXJrcyBiIGUgcmVtID1cbiAgaWYgYiA+IGUgdGhlbiByZW0gZWxzZSByZW1vdmVfbWFya3MgYiAoZSAtIDEpICgoZSwgLTIpIDo6IHJlbSlcblxubGV0IHJlYyBwcmVwZW5kX21hcmtzX2V4cHIgbSA9IGZ1bmN0aW9uXG4gIHwgRS5UU2VxIChsLCBlJywgcykgLT4gRS5UU2VxIChwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCwgZScsIHMpXG4gIHwgRS5URXhwIChtJywgZScpICAgLT4gRS5URXhwIChNYXJrcy5tZXJnZSBtIG0nLCBlJylcbiAgfCBFLlRNYXRjaCBtJyAgICAgICAtPiBFLlRNYXRjaCAoTWFya3MubWVyZ2UgbSBtJylcblxuYW5kIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsID1cbiAgTGlzdC5tYXAgKHByZXBlbmRfbWFya3NfZXhwciBtKSBsXG5cbmxldCBwcmVwZW5kX21hcmtzIG0gPVxuICBMaXN0Lm1hcCAoZnVuIChzLCB4KSAtPiAocywgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIHgpKVxuXG5sZXQgcmVjIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHggcmVtID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICB8IENzdCBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIHMgW0UudGV4cCBtYXJrcyBlcHNfZXhwcl0gcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB6KSByZW0gLT5cbiAgICAgICAgIGxldCAoeicsIG1hcmtzJykgPVxuICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgIGZpcnN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICAgIHpcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIE5vbmUgICAgICAgIC0+ICh6LCBtYXJrcylcbiAgICAgICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeiwgbWFya3MnKVxuICAgICAgICAgaW5cbiAgICAgICAgIENzZXQucHJlcGVuZCBzXG4gICAgICAgICAgIChtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHonIHggW0UuVE1hdGNoIG1hcmtzJ11cbiAgICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeicgeCBbXSlcbiAgICAgICAgICAgcmVtKVxuICAgICAgeScgcmVtXG4gIHwgRXBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IFBtYXJrIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFyc1xuICAgICAgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKHJlbW92ZV9tYXJrcyBiIGUgKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IEJlZm9yZSBjYXQnIC0+XG4gICAgQ3NldC5wcmVwZW5kIChMaXN0LmFzc3EgY2F0JyBjYXRlZ29yaWVzKSBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEFmdGVyIGNhdCcgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgY2F0IGNhdCcgdGhlbiBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtIGVsc2UgcmVtXG5cbmFuZCBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCByIHJlbSlcblxuYW5kIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5IHogcmVtID1cbiAgaWZcbiAgICBMaXN0LmV4aXN0c1xuICAgICAgKGZ1biAoX3MsIHhsKSAtPlxuICAgICAgICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIHhsKVxuICAgICAgeVxuICB0aGVuXG4gICAgbGV0IHonID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBNYXJrcy5lbXB0eSBjYXQgeiBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeSkgcmVtIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICB5XG4gICAgICAgICB3aXRoXG4gICAgICAgICAgIE5vbmUgLT5cbiAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHkgeiBbXSkgcmVtXG4gICAgICAgICB8IFNvbWUgbWFya3MgLT5cbiAgICAgICAgICAgbGV0IHonJyA9IHByZXBlbmRfbWFya3MgbWFya3MgeicgaW5cbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgYExvbmdlc3QgLT5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSByZW0pXG4gICAgICAgICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgcmVtKVxuICAgICAgICAgICB8IGBGaXJzdCAtPlxuICAgICAgICAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JycgeiBbXSkgcmVtKSkpXG4gICAgICB5IHJlbVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB4bCkgcmVtIC0+IENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB4bCB6IFtdKSByZW0pIHkgcmVtXG5cbmxldCByZWMgZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbeF0gcmVtXG5cbmFuZCBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCByIHJlbSlcblxubGV0IGRlcml2IHRibF9yZWYgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QgPVxuICBsZXQgZGVyID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdC5TdGF0ZS5jYXRlZ29yeSBzdC5TdGF0ZS5kZXNjXG4gICAgICBbKGFsbF9jaGFycywgW10pXSBpblxuICBzaW1wbF90ciAoXG4gICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIGV4cHIpIHJlbSAtPlxuICAgICAgICBsZXQgKGV4cHInLCBfKSA9IHJlbW92ZV9kdXBsaWNhdGVzIFtdIGV4cHIgZXBzX2V4cHIgaW5cbigqXG5Gb3JtYXQuZXByaW50ZiBcIkBbPDM+QFslYUBdOiAlYSAvICVhQF1ALlwiIENzZXQucHJpbnQgcyBwcmludF9zdGF0ZSBleHByIHByaW50X3N0YXRlIGV4cHInO1xuKilcbiAgICAgICAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICAgICAgICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKGNhdCcsIHMnKSByZW0gLT5cbiAgICAgICAgICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICAgICAgICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgICAgICAgICB0aGVuIHJlbVxuICAgICAgICAgICAgZWxzZSAocycnLCBTdGF0ZS5tayBpZHggY2F0JyBleHByJycpIDo6IHJlbSlcbiAgICAgICAgICBjYXRlZ29yaWVzIHJlbSkgZGVyIFtdKVxuXG4oKioqKilcblxubGV0IGZsYXR0ZW5fbWF0Y2ggbSA9XG4gIGxldCBtYSA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbWEgKGksIF8pIC0+IG1heCBtYSBpKSAoLTEpIG0gaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG1hICsgMSkgKC0xKSBpblxuICBMaXN0Lml0ZXIgKGZ1biAoaSwgdikgLT4gcmVzLihpKSA8LSB2KSBtO1xuICByZXNcblxubGV0IHN0YXR1cyBzID1cbiAgbWF0Y2ggcy5TdGF0ZS5zdGF0dXMgd2l0aFxuICAgIFNvbWUgc3QgLT5cbiAgICBzdFxuICB8IE5vbmUgLT5cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggcy5TdGF0ZS5kZXNjIHdpdGhcbiAgICAgICAgW10gICAgICAgICAgICAgIC0+IEZhaWxlZFxuICAgICAgfCBFLlRNYXRjaCBtIDo6IF8gLT4gTWF0Y2ggKGZsYXR0ZW5fbWF0Y2ggbS5NYXJrcy5tYXJrcywgbS5NYXJrcy5wbWFya3MpXG4gICAgICB8IF8gICAgICAgICAgICAgICAtPiBSdW5uaW5nXG4gICAgaW5cbiAgICBzLlN0YXRlLnN0YXR1cyA8LSBTb21lIHN0O1xuICAgIHN0XG4iLCIoKiBJbiByZWFsaXR5LCB0aGlzIGNhbiByZWFsbHkgYmUgcmVwcmVzZW50ZWQgYXMgYSBib29sIGFycmF5LlxuXG4gICBUaGUgcmVwcmVzZW50YXRpb24gaXMgYmVzdCB0aG91Z2h0IG9mIGFzIGEgbGlzdCBvZiBhbGwgY2hhcnMgYWxvbmcgd2l0aCBhXG4gICBmbGFnOlxuXG4gICAoYSwgMCksIChiLCAxKSwgKGMsIDApLCAoZCwgMCksIC4uLlxuXG4gICBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBjb2xvciBhcmUgcmVwcmVzZW50ZWQgYnkgc2VxdW5jZXMgb2ZcbiAgIGNoYXJhY3RlcnMgd2l0aCB0aGUgZmxhZyBzZXQgdG8gMC5cbiopXG5cbnR5cGUgdCA9IEJ5dGVzLnRcblxubGV0IG1ha2UgKCkgPSBCeXRlcy5tYWtlIDI1NyAnXFwwMDAnXG5cbmxldCBmbGF0dGVuIGNtID1cbiAgbGV0IGMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCBjb2xvcl9yZXByID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgdiA9IHJlZiAwIGluXG4gIEJ5dGVzLnNldCBjIDAgJ1xcMDAwJztcbiAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgMCAnXFwwMDAnO1xuICBmb3IgaSA9IDEgdG8gMjU1IGRvXG4gICAgaWYgQnl0ZXMuZ2V0IGNtIGkgPD4gJ1xcMDAwJyB0aGVuIGluY3IgdjtcbiAgICBCeXRlcy5zZXQgYyBpIChDaGFyLmNociAhdik7XG4gICAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgIXYgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGMsIEJ5dGVzLnN1Yl9zdHJpbmcgY29sb3JfcmVwciAwICghdiArIDEpLCAhdiArIDEpXG5cbigqIG1hcmsgYWxsIHRoZSBlbmRwb2ludHMgb2YgdGhlIGludGVydmFscyBvZiB0aGUgY2hhciBzZXQgd2l0aCB0aGUgMSBieXRlICopXG5sZXQgc3BsaXQgcyBjbSA9XG4gIENzZXQuaXRlciBzIH5mOihmdW4gaSBqIC0+XG4gICAgICBCeXRlcy5zZXQgY20gaSAnXFwwMDEnO1xuICAgICAgQnl0ZXMuc2V0IGNtIChqICsgMSkgJ1xcMDAxJztcbiAgICApXG4iLCIoKiBSZXN1bHQgb2YgYSBzdWNjZXNzZnVsIG1hdGNoLiAqKVxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbWFya3MgOiBBdXRvbWF0YS5tYXJrX2luZm9zXG4gIDsgcG1hcmtzIDogUG1hcmsuU2V0LnRcbiAgOyBncG9zIDogaW50IGFycmF5XG4gIDsgZ2NvdW50IDogaW50XG4gIH1cblxubGV0IG9mZnNldCB0IGkgPVxuICBpZiAyICogaSArIDEgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICBpZiBtMSA9IC0xIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gIChwMSwgcDIpXG5cbmxldCBnZXQgdCBpID1cbiAgbGV0IChwMSwgcDIpID0gb2Zmc2V0IHQgaSBpblxuICBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcblxubGV0IHN0YXJ0IHN1YnMgaSA9IGZzdCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHN0b3Agc3VicyBpID0gc25kIChvZmZzZXQgc3VicyBpKVxuXG5sZXQgdGVzdCB0IGkgPVxuICBpZiAyICogaSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuXG4gICAgZmFsc2VcbiAgZWxzZVxuICAgIGxldCBpZHggPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZHggPD4gLTFcblxubGV0IGdldF9vcHQgdCBpID1cbiAgaWYgdGVzdCB0IGlcbiAgdGhlbiBTb21lIChnZXQgdCBpKVxuICBlbHNlIE5vbmVcblxubGV0IGR1bW15X29mZnNldCA9ICgtMSwgLTEpXG5cbmxldCBhbGxfb2Zmc2V0IHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9vZmZzZXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSAocDEsIHAyKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IGR1bW15X3N0cmluZyA9IFwiXCJcblxubGV0IGFsbCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfc3RyaW5nIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgcHAgZm10IHQgPVxuICBsZXQgbWF0Y2hlcyA9XG4gICAgbGV0IG9mZnNldHMgPSBhbGxfb2Zmc2V0IHQgaW5cbiAgICBsZXQgc3RycyA9IGFsbCB0IGluXG4gICAgQXJyYXkudG9fbGlzdCAoXG4gICAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggc3RycykgKGZ1biBpIC0+IHN0cnMuKGkpLCBvZmZzZXRzLihpKSlcbiAgICApIGluXG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgcHBfbWF0Y2ggZm10IChzdHIsIChzdGFydCwgc3RvcCkpID1cbiAgICBmcHJpbnRmIGZtdCBcIkBbKCVzICglZCAlZCkpQF1cIiBzdHIgc3RhcnQgc3RvcCBpblxuICBzZXhwIGZtdCBcIkdyb3VwXCIgKGxpc3QgcHBfbWF0Y2gpIG1hdGNoZXNcblxubGV0IG5iX2dyb3VwcyB0ID0gdC5nY291bnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbmxldCByZWMgaXRlciBuIGYgdiA9IGlmIG4gPSAwIHRoZW4gdiBlbHNlIGl0ZXIgKG4gLSAxKSBmIChmIHYpXG5cbigqKioqKVxuXG5sZXQgdW5rbm93biA9IC0yXG5sZXQgYnJlYWsgPSAtM1xuXG50eXBlIG1hdGNoX2luZm8gPVxuICB8IE1hdGNoIG9mIEdyb3VwLnRcbiAgfCBGYWlsZWRcbiAgfCBSdW5uaW5nIG9mIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA6IGludCB9XG5cbnR5cGUgc3RhdGUgPVxuICB7IGlkeCA6IGludDtcbiAgICAoKiBJbmRleCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgcG9zaXRpb24gdGFibGUuXG4gICAgICAgTm90IHlldCBjb21wdXRlZCB0cmFuc2l0aW9ucyBwb2ludCB0byBhIGR1bW15IHN0YXRlIHdoZXJlXG4gICAgICAgW2lkeF0gaXMgc2V0IHRvIFt1bmtub3duXTtcbiAgICAgICBJZiBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSBmb3Igc3RhdGVzIHRoYXQgZWl0aGVyIGFsd2F5c1xuICAgICAgIHN1Y2NlZWQgb3IgYWx3YXlzIGZhaWwuICopXG4gICAgcmVhbF9pZHggOiBpbnQ7XG4gICAgKCogVGhlIHJlYWwgaW5kZXgsIGluIGNhc2UgW2lkeF0gaXMgc2V0IHRvIFticmVha10gKilcbiAgICBuZXh0IDogc3RhdGUgYXJyYXk7XG4gICAgKCogVHJhbnNpdGlvbiB0YWJsZSwgaW5kZXhlZCBieSBjb2xvciAqKVxuICAgIG11dGFibGUgZmluYWwgOlxuICAgICAgKENhdGVnb3J5LnQgKlxuICAgICAgIChBdXRvbWF0YS5pZHggKiBBdXRvbWF0YS5zdGF0dXMpKSBsaXN0O1xuICAgICgqIE1hcHBpbmcgZnJvbSB0aGUgY2F0ZWdvcnkgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvXG4gICAgICAgLSB0aGUgaW5kZXggd2hlcmUgdGhlIG5leHQgcG9zaXRpb24gc2hvdWxkIGJlIHNhdmVkXG4gICAgICAgLSBwb3NzaWJseSwgdGhlIGxpc3Qgb2YgbWFya3MgKGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbmRpY2VzKVxuICAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgYmVzdCBtYXRjaCAqKVxuICAgIGRlc2MgOiBBdXRvbWF0YS5TdGF0ZS50XG4gICAgKCogRGVzY3JpcHRpb24gb2YgdGhpcyBzdGF0ZSBvZiB0aGUgYXV0b21hdGEgKikgfVxuXG4oKiBBdXRvbWF0YSAoY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uKSAqKVxudHlwZSByZSA9XG4gIHsgaW5pdGlhbCA6IEF1dG9tYXRhLmV4cHI7XG4gICAgKCogVGhlIHdob2xlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zdGF0ZXMgOiAoQ2F0ZWdvcnkudCAqIHN0YXRlKSBsaXN0O1xuICAgICgqIEluaXRpYWwgc3RhdGVzLCBpbmRleGVkIGJ5IGluaXRpYWwgY2F0ZWdvcnkgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKilcbiAgICBjb2xvcl9yZXByIDogc3RyaW5nO1xuICAgICgqIFRhYmxlIGZyb20gY29sb3JzIHRvIG9uZSBjaGFyYWN0ZXIgb2YgdGhpcyBjb2xvciAqKVxuICAgIG5jb2xvciA6IGludDtcbiAgICAoKiBOdW1iZXIgb2YgY29sb3JzLiAqKVxuICAgIGxubCA6IGludDtcbiAgICAoKiBDb2xvciBvZiB0aGUgbGFzdCBuZXdsaW5lLiAtMSBpZiB1bm5lY2Vzc2FyeSAqKVxuICAgIHRibCA6IEF1dG9tYXRhLndvcmtpbmdfYXJlYTtcbiAgICAoKiBUZW1wb3JhcnkgdGFibGUgdXNlZCB0byBjb21wdXRlIHRoZSBmaXJzdCBhdmFpbGFibGUgaW5kZXhcbiAgICAgICB3aGVuIGNvbXB1dGluZyBhIG5ldyBzdGF0ZSAqKVxuICAgIHN0YXRlcyA6IHN0YXRlIEF1dG9tYXRhLlN0YXRlLlRhYmxlLnQ7XG4gICAgKCogU3RhdGVzIG9mIHRoZSBkZXRlcm1pbmlzdGljIGF1dG9tYXRhICopXG4gICAgZ3JvdXBfbmFtZXMgOiAoc3RyaW5nICogaW50KSBsaXN0O1xuICAgICgqIE5hbWVkIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgZ3JvdXBfY291bnQgOiBpbnRcbiAgICAoKiBOdW1iZXIgb2YgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKikgfVxuXG5sZXQgcHBfcmUgY2ggcmUgPSBBdXRvbWF0YS5wcCBjaCByZS5pbml0aWFsXG5cbmxldCBwcmludF9yZSA9IHBwX3JlXG5cbmxldCBncm91cF9jb3VudCByZSA9IHJlLmdyb3VwX2NvdW50XG5cbmxldCBncm91cF9uYW1lcyByZSA9IHJlLmdyb3VwX25hbWVzXG5cbigqIEluZm9ybWF0aW9uIHVzZWQgZHVyaW5nIG1hdGNoaW5nICopXG50eXBlIGluZm8gPVxuICB7IHJlIDogcmU7XG4gICAgKCogVGhlIGF1dG9tYXRhICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlIChbeC5jb2xvcnMgPSB4LnJlLmNvbG9yc10pXG4gICAgICAgU2hvcnRjdXQgdXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIG11dGFibGUgcG9zaXRpb25zIDogaW50IGFycmF5O1xuICAgICgqIEFycmF5IG9mIG1hcmsgcG9zaXRpb25zXG4gICAgICAgVGhlIG1hcmsgYXJlIG9mZiBieSBvbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBwb3MgOiBpbnQ7XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIGlzIHN0YXJ0ZWQgKilcbiAgICBsYXN0IDogaW50XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIHNob3VsZCBzdG9wICopIH1cblxuXG4oKioqKilcblxubGV0IGNhdGVnb3J5IHJlIH5jb2xvciA9XG4gIGlmIGNvbG9yID0gLTEgdGhlblxuICAgIENhdGVnb3J5LmluZXhpc3RhbnRcbiAgICAoKiBTcGVjaWFsIGNhdGVnb3J5IGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gIGVsc2UgaWYgY29sb3IgPSByZS5sbmwgdGhlblxuICAgIENhdGVnb3J5LihsYXN0bmV3bGluZSArKyBuZXdsaW5lICsrIG5vdF9sZXR0ZXIpXG4gIGVsc2VcbiAgICBDYXRlZ29yeS5mcm9tX2NoYXIgKHJlLmNvbG9yX3JlcHIuW2NvbG9yXSlcblxuKCoqKiopXG5cbmxldCBkdW1teV9uZXh0ID0gW3x8XVxuXG5sZXQgdW5rbm93bl9zdGF0ZSA9XG4gIHsgaWR4ID0gdW5rbm93bjsgcmVhbF9pZHggPSAwO1xuICAgIG5leHQgPSBkdW1teV9uZXh0OyBmaW5hbCA9IFtdO1xuICAgIGRlc2MgPSBBdXRvbWF0YS5TdGF0ZS5kdW1teSB9XG5cbmxldCBta19zdGF0ZSBuY29sIGRlc2MgPVxuICBsZXQgYnJlYWtfc3RhdGUgPVxuICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBkZXNjIHdpdGhcbiAgICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT4gZmFsc2VcbiAgICB8IEF1dG9tYXRhLkZhaWxlZFxuICAgIHwgQXV0b21hdGEuTWF0Y2ggXyAtPiB0cnVlXG4gIGluXG4gIHsgaWR4ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBicmVhayBlbHNlIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIHJlYWxfaWR4ID0gZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgbmV4dCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gZHVtbXlfbmV4dCBlbHNlIEFycmF5Lm1ha2UgbmNvbCB1bmtub3duX3N0YXRlO1xuICAgIGZpbmFsID0gW107XG4gICAgZGVzYyB9XG5cbmxldCBmaW5kX3N0YXRlIHJlIGRlc2MgPVxuICB0cnlcbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5maW5kIHJlLnN0YXRlcyBkZXNjXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gbWtfc3RhdGUgcmUubmNvbG9yIGRlc2MgaW5cbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5hZGQgcmUuc3RhdGVzIGRlc2Mgc3Q7XG4gICAgc3RcblxuKCoqKiogTWF0Y2ggd2l0aCBtYXJrcyAqKioqKVxuXG5sZXQgZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0ID1cbiAgbGV0IGRlc2MgPSBBdXRvbWF0YS5kZWx0YSBpbmZvLnJlLnRibCBjYXQgY29sb3Igc3QuZGVzYyBpblxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGluZm8ucG9zaXRpb25zIGluXG4gIGlmIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4ID0gbGVuICYmIGxlbiA+IDAgdGhlbiBiZWdpblxuICAgIGxldCBwb3MgPSBpbmZvLnBvc2l0aW9ucyBpblxuICAgIGluZm8ucG9zaXRpb25zIDwtIEFycmF5Lm1ha2UgKDIgKiBsZW4pIDA7XG4gICAgQXJyYXkuYmxpdCBwb3MgMCBpbmZvLnBvc2l0aW9ucyAwIGxlblxuICBlbmQ7XG4gIGRlc2NcblxubGV0IHZhbGlkYXRlIGluZm8gKHM6c3RyaW5nKSB+cG9zIHN0ID1cbiAgbGV0IGNvbG9yID0gQ2hhci5jb2RlIChpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0IGluXG4gIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgc3QubmV4dC4oY29sb3IpIDwtIHN0J1xuXG5sZXQgcmVjIGxvb3AgaW5mbyBzIH5wb3Mgc3QgPVxuICBpZiBwb3MgPCBpbmZvLmxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBsZXQgaWR4ID0gc3QnLmlkeCBpblxuICAgIGlmIGlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihpZHgpIDwtIHBvcztcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3M6KHBvcyArIDEpIHN0J1xuICAgIGVuZCBlbHNlIGlmIGlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICAgIHN0J1xuICAgIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcCBpbmZvIHMgfnBvcyBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IHJlYyBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3QgPVxuICBpZiBwb3MgPCBsYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgaWYgc3QnLmlkeCA+PSAwIHRoZW5cbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvczoocG9zICsgMSkgfmxhc3Qgc3QnXG4gICAgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3QnXG4gICAgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IGZpbmFsIGluZm8gc3QgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCBzdC5maW5hbFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCcgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6KC0xKSBzdCBpblxuICAgIGxldCByZXMgPSAoc3QnLkF1dG9tYXRhLlN0YXRlLmlkeCwgQXV0b21hdGEuc3RhdHVzIHN0JykgaW5cbiAgICBzdC5maW5hbCA8LSAoY2F0LCByZXMpIDo6IHN0LmZpbmFsO1xuICAgIHJlc1xuXG5sZXQgZmluZF9pbml0aWFsX3N0YXRlIHJlIGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgcmUuaW5pdGlhbF9zdGF0ZXNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBmaW5kX3N0YXRlIHJlIChBdXRvbWF0YS5TdGF0ZS5jcmVhdGUgY2F0IHJlLmluaXRpYWwpIGluXG4gICAgcmUuaW5pdGlhbF9zdGF0ZXMgPC0gKGNhdCwgc3QpIDo6IHJlLmluaXRpYWxfc3RhdGVzO1xuICAgIHN0XG5cbmxldCBnZXRfY29sb3IgcmUgKHM6c3RyaW5nKSBwb3MgPVxuICBpZiBwb3MgPCAwIHRoZW5cbiAgICAtMVxuICBlbHNlXG4gICAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBpZiBwb3MgPj0gc2xlbiB0aGVuXG4gICAgICAtMVxuICAgIGVsc2UgaWYgcG9zID0gc2xlbiAtIDEgJiYgcmUubG5sIDw+IC0xICYmIHMuW3Bvc10gPSAnXFxuJyB0aGVuXG4gICAgICAoKiBTcGVjaWFsIGNhc2UgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgICAgIHJlLmxubFxuICAgIGVsc2VcbiAgICAgIENoYXIuY29kZSByZS5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXVxuXG5sZXQgcmVjIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHMgPVxuICBsZXQgc3QnID0gc3QubmV4dC4oaW5mby5yZS5sbmwpIGluXG4gIGlmIHN0Jy5pZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICBsZXQgY29sb3IgPSBpbmZvLnJlLmxubCBpblxuICAgIGxldCByZWFsX2MgPSBDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSAnXFxuJ10gaW5cbiAgICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6cmVhbF9jIHN0IGluXG4gICAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICAgIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCc7XG4gICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3Vwc1xuICBlbmRcblxubGV0IHJlYyBzY2FuX3N0ciBpbmZvIChzOnN0cmluZykgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzID1cbiAgbGV0IHBvcyA9IGluZm8ucG9zIGluXG4gIGxldCBsYXN0ID0gaW5mby5sYXN0IGluXG4gIGlmIChsYXN0ID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAmJiBpbmZvLnJlLmxubCA8PiAtMVxuICAgICAgJiYgbGFzdCA+IHBvc1xuICAgICAgJiYgU3RyaW5nLmdldCBzIChsYXN0IC0gMSkgPSAnXFxuJylcbiAgdGhlbiBiZWdpblxuICAgIGxldCBpbmZvID0geyBpbmZvIHdpdGggbGFzdCA9IGxhc3QgLSAxIH0gaW5cbiAgICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3RcbiAgICBlbHNlXG4gICAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvczoobGFzdCAtIDEpIHN0IH5ncm91cHNcbiAgZW5kIGVsc2UgaWYgZ3JvdXBzIHRoZW5cbiAgICBsb29wIGluZm8gcyB+cG9zIGluaXRpYWxfc3RhdGVcbiAgZWxzZVxuICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBpbml0aWFsX3N0YXRlXG5cbigqIFRoaXMgZnVuY3Rpb24gYWRkcyBhIGZpbmFsIGJvdW5kYXJ5IGNoZWNrIG9uIHRoZSBpbnB1dC5cbiAgIFRoaXMgaXMgdXNlZnVsIHRvIGluZGljYXRlIHRoYXQgdGhlIG91dHB1dCBmYWlsZWQgYmVjYXVzZVxuICAgb2YgaW5zdWZmaWNpZW50IGlucHV0LCBvciB0byB2ZXJpZnkgdGhhdCB0aGUgb3V0cHV0IGFjdHVhbGx5XG4gICBtYXRjaGVzIGZvciByZWdleCB0aGF0IGhhdmUgYm91bmRhcnkgY29uZGl0aW9ucyB3aXRoIHJlc3BlY3RcbiAgIHRvIHRoZSBpbnB1dCBzdHJpbmcuXG4gKilcbmxldCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzID1cbiAgbGV0IGZpbmFsX2NhdCA9XG4gICAgaWYgbGFzdCA9IHNsZW4gdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyBsYXN0KSlcbiAgaW5cbiAgbGV0IChpZHgsIHJlcykgPSBmaW5hbCBpbmZvIHN0IGZpbmFsX2NhdCBpblxuICAobWF0Y2ggZ3JvdXBzLCByZXMgd2l0aFxuICB8IHRydWUsIE1hdGNoIF8gLT4gaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gbGFzdFxuICB8IF8gLT4gKCkpO1xuICByZXNcblxubGV0IG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxhc3QgPSBpZiBsZW4gPSAtMSB0aGVuIHNsZW4gZWxzZSBwb3MgKyBsZW4gaW5cbiAgbGV0IGluZm8gPVxuICAgIHsgcmUgOyBjb2xvcnMgPSByZS5jb2xvcnM7IHBvcyA7IGxhc3RcbiAgICA7IHBvc2l0aW9ucyA9XG4gICAgICAgIGlmIGdyb3VwcyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBBdXRvbWF0YS5pbmRleF9jb3VudCByZS50YmwgKyAxIGluXG4gICAgICAgICAgaWYgbiA8PSAxMCB0aGVuXG4gICAgICAgICAgICBbfDA7MDswOzA7MDswOzA7MDswOzB8XVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEFycmF5Lm1ha2UgbiAwXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgW3x8XSB9XG4gIGluXG4gIGxldCBpbml0aWFsX2NhdCA9XG4gICAgaWYgcG9zID0gMCB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeVxuICAgICAgICAgICAgICAgICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgKHBvcyAtIDEpKSlcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RhdGUgPSBmaW5kX2luaXRpYWxfc3RhdGUgcmUgaW5pdGlhbF9jYXQgaW5cbiAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICBsZXQgcmVzID1cbiAgICBpZiBzdC5pZHggPSBicmVhayB8fCAocGFydGlhbCAmJiBub3QgZ3JvdXBzKSB0aGVuXG4gICAgICBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzY1xuICAgIGVsc2UgaWYgcGFydGlhbCAmJiBncm91cHMgdGhlblxuICAgICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIHN0LmRlc2Mgd2l0aFxuICAgICAgfCBNYXRjaCBfIHwgRmFpbGVkIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgIHwgUnVubmluZyAtPlxuICAgICAgICAoKiBUaGlzIGNvdWxkIGJlIGJlY2F1c2UgaXQncyBzdGlsbCBub3QgZnVsbHkgbWF0Y2hlZCwgb3IgaXRcbiAgICAgICAgICAgY291bGQgYmUgdGhhdCBiZWNhdXNlIHdlIG5lZWQgdG8gcnVuIHNwZWNpYWwgZW5kIG9mIGlucHV0XG4gICAgICAgICAgIGNoZWNrcy4gKilcbiAgICAgICAgKG1hdGNoIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgd2l0aFxuICAgICAgICAgfCBNYXRjaCBfIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgICAgIHwgRmFpbGVkIHwgUnVubmluZyAtPlxuICAgICAgICAgICAoKiBBIGZhaWx1cmUgaGVyZSBqdXN0IG1lYW5zIHRoYXQgd2UgbmVlZCBtb3JlIGRhdGEsIGkuZS5cbiAgICAgICAgICAgICAgaXQncyBhIHBhcnRpYWwgbWF0Y2guICopXG4gICAgICAgICAgIFJ1bm5pbmcpXG4gICAgZWxzZSBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gICAgQXV0b21hdGEuTWF0Y2ggKG1hcmtzLCBwbWFya3MpIC0+XG4gICAgTWF0Y2ggeyBzIDsgbWFya3M7IHBtYXJrcyA7IGdwb3MgPSBpbmZvLnBvc2l0aW9uczsgZ2NvdW50ID0gcmUuZ3JvdXBfY291bnR9XG4gIHwgQXV0b21hdGEuRmFpbGVkIC0+IEZhaWxlZFxuICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT5cbiAgICBsZXQgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA9IGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLigwKSBlbHNlIDAgaW5cbiAgICBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9XG5cbmxldCBta19yZSB+aW5pdGlhbCB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXMgfmdyb3VwX2NvdW50ID1cbiAgeyBpbml0aWFsIDtcbiAgICBpbml0aWFsX3N0YXRlcyA9IFtdO1xuICAgIGNvbG9ycztcbiAgICBjb2xvcl9yZXByO1xuICAgIG5jb2xvcjtcbiAgICBsbmw7XG4gICAgdGJsID0gQXV0b21hdGEuY3JlYXRlX3dvcmtpbmdfYXJlYSAoKTtcbiAgICBzdGF0ZXMgPSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5jcmVhdGUgOTc7XG4gICAgZ3JvdXBfbmFtZXM7XG4gICAgZ3JvdXBfY291bnQgfVxuXG4oKioqKiBDaGFyYWN0ZXIgc2V0cyAqKioqKVxuXG5sZXQgY3NlcSBjIGMnID0gQ3NldC5zZXEgKENoYXIuY29kZSBjKSAoQ2hhci5jb2RlIGMnKVxubGV0IGNhZGQgYyBzID0gQ3NldC5hZGQgKENoYXIuY29kZSBjKSBzXG5cbmxldCB0cmFuc19zZXQgY2FjaGUgY20gcyA9XG4gIG1hdGNoIENzZXQub25lX2NoYXIgcyB3aXRoXG4gIHwgU29tZSBpIC0+IENzZXQuY3NpbmdsZSBjbS5baV1cbiAgfCBOb25lIC0+XG4gICAgbGV0IHYgPSAoQ3NldC5oYXNoX3JlYyBzLCBzKSBpblxuICAgIHRyeVxuICAgICAgQ3NldC5DU2V0TWFwLmZpbmQgdiAhY2FjaGVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IGwgPVxuICAgICAgICBDc2V0LmZvbGRfcmlnaHRcbiAgICAgICAgICBzXG4gICAgICAgICAgfmY6KGZ1biAoaSwgaikgbCAtPiBDc2V0LnVuaW9uIChjc2VxIGNtLltpXSBjbS5bal0pIGwpXG4gICAgICAgICAgfmluaXQ6Q3NldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIGNhY2hlIDo9IENzZXQuQ1NldE1hcC5hZGQgdiBsICFjYWNoZTtcbiAgICAgIGxcblxuKCoqKiopXG5cbnR5cGUgcmVnZXhwID1cbiAgICBTZXQgb2YgQ3NldC50XG4gIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbm1vZHVsZSBWaWV3ID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlZ2V4cCA9XG4gICAgICBTZXQgb2YgQ3NldC50XG4gICAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICAgIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICAgIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICAgIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICAgIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gICAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gICAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gICAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbiAgbGV0IHZpZXcgdCA9IHRcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCB0ID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCB2YXIgcyByZSA9IHNleHAgZm10IHMgcHAgcmUgaW5cbiAgbGV0IHNlcSBzIHJlbCA9IHNleHAgZm10IHMgKGxpc3QgcHApIHJlbCBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXQgcyAtPiAgc2V4cCBmbXQgXCJTZXRcIiBDc2V0LnBwIHNcbiAgfCBTZXF1ZW5jZSBzcSAtPiBzZXEgXCJTZXF1ZW5jZVwiIHNxXG4gIHwgQWx0ZXJuYXRpdmUgYWx0IC0+IHNlcSBcIkFsdGVybmF0aXZlXCIgYWx0XG4gIHwgUmVwZWF0IChyZSwgc3RhcnQsIHN0b3ApIC0+XG4gICAgbGV0IHBwJyBmbXQgKCkgPSBmcHJpbnRmIGZtdCBcIiVhQCAlZCVhXCIgcHAgcmUgICBzdGFydCAgIG9wdGludCBzdG9wIGluXG4gICAgc2V4cCBmbXQgXCJSZXBlYXRcIiBwcCcgKClcbiAgfCBCZWdfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2ZfbGluZVwiXG4gIHwgRW5kX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX2xpbmVcIlxuICB8IEJlZ19vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl93b3JkXCJcbiAgfCBFbmRfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfd29yZFwiXG4gIHwgTm90X2JvdW5kICAgICAgICAtPiBzdHIgZm10IFwiTm90X2JvdW5kXCJcbiAgfCBCZWdfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfc3RyXCJcbiAgfCBFbmRfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfc3RyXCJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+IHN0ciBmbXQgXCJMYXN0X2VuZF9vZl9saW5lXCJcbiAgfCBTdGFydCAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdGFydFwiXG4gIHwgU3RvcCAgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RvcFwiXG4gIHwgU2VtIChzZW0sIHJlKSAgICAtPlxuICAgIHNleHAgZm10IFwiU2VtXCIgKHBhaXIgQXV0b21hdGEucHBfc2VtIHBwKSAoc2VtLCByZSlcbiAgfCBTZW1fZ3JlZWR5IChrLCByZSkgLT5cbiAgICBzZXhwIGZtdCBcIlNlbV9ncmVlZHlcIiAocGFpciBBdXRvbWF0YS5wcF9yZXBfa2luZCBwcCkgKGssIHJlKVxuICB8IEdyb3VwIChOb25lLCBjKSAgIC0+IHZhciBcIkdyb3VwXCIgY1xuICB8IEdyb3VwIChTb21lIG4sIGMpIC0+IHNleHAgZm10IFwiTmFtZWRfZ3JvdXBcIiAocGFpciBzdHIgcHApIChuLCBjKVxuICB8IE5vX2dyb3VwIGMgICAgIC0+IHZhciBcIk5vX2dyb3VwXCIgY1xuICB8IE5lc3QgYyAgICAgICAgIC0+IHZhciBcIk5lc3RcIiBjXG4gIHwgQ2FzZSBjICAgICAgICAgLT4gdmFyIFwiQ2FzZVwiIGNcbiAgfCBOb19jYXNlIGMgICAgICAtPiB2YXIgXCJOb19jYXNlXCIgY1xuICB8IEludGVyc2VjdGlvbiBjIC0+IHNlcSBcIkludGVyc2VjdGlvblwiIGNcbiAgfCBDb21wbGVtZW50IGMgICAtPiBzZXEgXCJDb21wbGVtZW50XCIgY1xuICB8IERpZmZlcmVuY2UgKGEsIGIpIC0+IHNleHAgZm10IFwiRGlmZmVyZW5jZVwiIChwYWlyIHBwIHBwKSAoYSwgYilcbiAgfCBQbWFyayAobSwgcikgICAgICAtPiBzZXhwIGZtdCBcIlBtYXJrXCIgKHBhaXIgUG1hcmsucHAgcHApIChtLCByKVxuXG5sZXQgcmVjIGlzX2NoYXJzZXQgPSBmdW5jdGlvblxuICB8IFNldCBfIC0+XG4gICAgdHJ1ZVxuICB8IEFsdGVybmF0aXZlIGwgfCBJbnRlcnNlY3Rpb24gbCB8IENvbXBsZW1lbnQgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBpc19jaGFyc2V0IGxcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBpc19jaGFyc2V0IHIgJiYgaXNfY2hhcnNldCByJ1xuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKVxuICB8IE5vX2dyb3VwIHIgfCBDYXNlIHIgfCBOb19jYXNlIHIgLT5cbiAgICBpc19jaGFyc2V0IHJcbiAgfCBTZXF1ZW5jZSBfIHwgUmVwZWF0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTm90X2JvdW5kIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IEdyb3VwIF8gfCBOZXN0IF8gfCBQbWFyayAoXyxfKS0+XG4gICAgZmFsc2VcblxuKCpYWFggVXNlIGEgYmV0dGVyIGFsZ29yaXRobSBhbGxvd2luZyBub24tY29udGlndW91cyByZWdpb25zPyAqKVxuXG5sZXQgY3VwcGVyID1cbiAgQ3NldC51bmlvbiAoY3NlcSAnQScgJ1onKVxuICAgIChDc2V0LnVuaW9uIChjc2VxICdcXDE5MicgJ1xcMjE0JykgKGNzZXEgJ1xcMjE2JyAnXFwyMjInKSlcbmxldCBjbG93ZXIgPSBDc2V0Lm9mZnNldCAzMiBjdXBwZXJcbmxldCBjYWxwaGEgPVxuICBMaXN0LmZvbGRfcmlnaHQgY2FkZCBbJ1xcMTcwJzsgJ1xcMTgxJzsgJ1xcMTg2JzsgJ1xcMjIzJzsgJ1xcMjU1J11cbiAgICAoQ3NldC51bmlvbiBjbG93ZXIgY3VwcGVyKVxubGV0IGNkaWdpdCA9IGNzZXEgJzAnICc5J1xubGV0IGNhbG51bSA9IENzZXQudW5pb24gY2FscGhhIGNkaWdpdFxubGV0IGN3b3JkID0gY2FkZCAnXycgY2FsbnVtXG5cbmxldCBjb2xvcml6ZSBjIHJlZ2V4cCA9XG4gIGxldCBsbmwgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBjb2xvcml6ZSByZWdleHAgPVxuICAgIG1hdGNoIHJlZ2V4cCB3aXRoXG4gICAgICBTZXQgcyAgICAgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBzIGNcbiAgICB8IFNlcXVlbmNlIGwgICAgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IEFsdGVybmF0aXZlIGwgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IFJlcGVhdCAociwgXywgXykgICAgICAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSAtPiBDb2xvcl9tYXAuc3BsaXQgKENzZXQuY3NpbmdsZSAnXFxuJykgY1xuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgY3dvcmQgY1xuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IFN0YXJ0IHwgU3RvcCAgICAgICAgICAgICAgLT4gKClcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgICAgICAgICAgLT4gbG5sIDo9IHRydWVcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gICAgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHIgfCBQbWFyayAoXyxyKSAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQ2FzZSBfIHwgTm9fY2FzZSBfXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIF8gICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBjb2xvcml6ZSByZWdleHA7XG4gICFsbmxcblxuKCoqKiogQ29tcGlsYXRpb24gKioqKilcblxubGV0IHJlYyBlcXVhbCB4MSB4MiA9XG4gIG1hdGNoIHgxLCB4MiB3aXRoXG4gICAgU2V0IHMxLCBTZXQgczIgLT5cbiAgICBzMSA9IHMyXG4gIHwgU2VxdWVuY2UgbDEsIFNlcXVlbmNlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IEFsdGVybmF0aXZlIGwxLCBBbHRlcm5hdGl2ZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBSZXBlYXQgKHgxJywgaTEsIGoxKSwgUmVwZWF0ICh4MicsIGkyLCBqMikgLT5cbiAgICBpMSA9IGkyICYmIGoxID0gajIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEJlZ19vZl9saW5lLCBCZWdfb2ZfbGluZVxuICB8IEVuZF9vZl9saW5lLCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkLCBCZWdfb2Zfd29yZFxuICB8IEVuZF9vZl93b3JkLCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciwgQmVnX29mX3N0clxuICB8IEVuZF9vZl9zdHIsIEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lLCBMYXN0X2VuZF9vZl9saW5lXG4gIHwgU3RhcnQsIFN0YXJ0XG4gIHwgU3RvcCwgU3RvcCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKHNlbTEsIHgxJyksIFNlbSAoc2VtMiwgeDInKSAtPlxuICAgIHNlbTEgPSBzZW0yICYmIGVxdWFsIHgxJyB4MidcbiAgfCBTZW1fZ3JlZWR5IChrMSwgeDEnKSwgU2VtX2dyZWVkeSAoazIsIHgyJykgLT5cbiAgICBrMSA9IGsyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBHcm91cCBfLCBHcm91cCBfIC0+ICgqIERvIG5vdCBtZXJnZSBncm91cHMhICopXG4gICAgZmFsc2VcbiAgfCBOb19ncm91cCB4MScsIE5vX2dyb3VwIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOZXN0IHgxJywgTmVzdCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgQ2FzZSB4MScsIENhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5vX2Nhc2UgeDEnLCBOb19jYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBJbnRlcnNlY3Rpb24gbDEsIEludGVyc2VjdGlvbiBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBDb21wbGVtZW50IGwxLCBDb21wbGVtZW50IGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IERpZmZlcmVuY2UgKHgxJywgeDEnJyksIERpZmZlcmVuY2UgKHgyJywgeDInJykgLT5cbiAgICBlcXVhbCB4MScgeDInICYmIGVxdWFsIHgxJycgeDInJ1xuICB8IFBtYXJrIChtMSwgcjEpLCBQbWFyayAobTIsIHIyKSAtPlxuICAgIFBtYXJrLmVxdWFsIG0xIG0yICYmIGVxdWFsIHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmFuZCBlcV9saXN0IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICBbXSwgW10gLT5cbiAgICB0cnVlXG4gIHwgeDEgOjogcjEsIHgyIDo6IHIyIC0+XG4gICAgZXF1YWwgeDEgeDIgJiYgZXFfbGlzdCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgc2VxdWVuY2UgPSBmdW5jdGlvblxuICB8IFt4XSAtPiB4XG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IHJlYyBtZXJnZV9zZXF1ZW5jZXMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBBbHRlcm5hdGl2ZSBsJyA6OiByIC0+XG4gICAgbWVyZ2Vfc2VxdWVuY2VzIChsJyBAIHIpXG4gIHwgU2VxdWVuY2UgKHggOjogeSkgOjogciAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyByIHdpdGhcbiAgICAgICAgU2VxdWVuY2UgKHgnIDo6IHknKSA6OiByJyB3aGVuIGVxdWFsIHggeCcgLT5cbiAgICAgICAgU2VxdWVuY2UgW3g7IEFsdGVybmF0aXZlIFtzZXF1ZW5jZSB5OyBzZXF1ZW5jZSB5J11dIDo6IHInXG4gICAgICB8IHInIC0+XG4gICAgICAgIFNlcXVlbmNlICh4IDo6IHkpIDo6IHInXG4gICAgZW5kXG4gIHwgeCA6OiByIC0+XG4gICAgeCA6OiBtZXJnZV9zZXF1ZW5jZXMgclxuXG5tb2R1bGUgQSA9IEF1dG9tYXRhXG5cbmxldCBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IgPVxuICBtYXRjaCBraW5kLCBraW5kJyB3aXRoXG4gICAgYEZpcnN0LCBgRmlyc3QgLT4gY3JcbiAgfCBgRmlyc3QsIGsgICAgICAgLT4gQS5zZXEgaWRzIGsgY3IgKEEuZXBzIGlkcylcbiAgfCAgXyAgICAgICAgICAgICAgIC0+IGNyXG5cbigqIFhYWCBzaG91bGQgcHJvYmFibHkgY29tcHV0ZSBhIGNhdGVnb3J5IG1hc2sgKilcbmxldCByZWMgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgKEEuY3N0IGlkcyAodHJhbnNfc2V0IGNhY2hlIGMgcyksIGtpbmQpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgICh0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyBsLCBraW5kKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgbCB3aXRoXG4gICAgICAgIFtyJ10gLT5cbiAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyLCBraW5kKVxuICAgICAgfCBtZXJnZWRfc2VxdWVuY2VzIC0+XG4gICAgICAgIChBLmFsdCBpZHNcbiAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgIChmdW4gcicgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeVxuICAgICAgICAgICAgICAgICAgICAgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgICAgICAgICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyKVxuICAgICAgICAgICAgICBtZXJnZWRfc2VxdWVuY2VzKSxcbiAgICAgICAgIGtpbmQpXG4gICAgZW5kXG4gIHwgUmVwZWF0IChyJywgaSwgaikgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICBsZXQgcmVtID1cbiAgICAgIG1hdGNoIGogd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgIEEucmVwIGlkcyBncmVlZHkga2luZCcgY3JcbiAgICAgIHwgU29tZSBqIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBncmVlZHkgd2l0aFxuICAgICAgICAgICAgYEdyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbTsgQS5lcHMgaWRzXVxuICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0EuZXBzIGlkczsgQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoaiAtIGkpIGYgKEEuZXBzIGlkcylcbiAgICBpblxuICAgIChpdGVyIGkgKGZ1biByZW0gLT4gQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbSkgcmVtLCBraW5kKVxuICB8IEJlZ19vZl9saW5lIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEVuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBCZWdfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKSxcbiAgICAga2luZClcbiAgfCBFbmRfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKSxcbiAgICAga2luZClcbiAgfCBOb3RfYm91bmQgLT5cbiAgICAoQS5hbHQgaWRzIFtBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpO1xuICAgICAgICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXSxcbiAgICAga2luZClcbiAgfCBCZWdfb2Zfc3RyIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgRW5kX29mX3N0ciAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBsYXN0bmV3bGluZSksIGtpbmQpXG4gIHwgU3RhcnQgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFN0b3AgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTZW0gKGtpbmQnLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJycpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCcgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQnIGtpbmQnJyBjcixcbiAgICAga2luZCcpXG4gIHwgU2VtX2dyZWVkeSAoZ3JlZWR5JywgcicpIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHknIHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgR3JvdXAgKG4sIHInKSAtPlxuICAgIGlmIGlnbl9ncm91cCB0aGVuXG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGVsc2VcbiAgICAgIGxldCBwID0gIXBvcyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWVzIDo9IChuYW1lLCBwIC8gMikgOjogIW5hbWVzXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgaW5cbiAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5tYXJrIGlkcyBwKSAoXG4gICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdCBjciAoQS5tYXJrIGlkcyAocCArIDEpKSksXG4gICAgICAga2luZCcpXG4gIHwgTm9fZ3JvdXAgcicgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgdHJ1ZSBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBOZXN0IHInIC0+XG4gICAgbGV0IGIgPSAhcG9zIGluXG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgaW5cbiAgICBsZXQgZSA9ICFwb3MgLSAxIGluXG4gICAgaWYgZSA8IGIgdGhlblxuICAgICAgKGNyLCBraW5kJylcbiAgICBlbHNlXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5lcmFzZSBpZHMgYiBlKSBjciwga2luZCcpXG4gIHwgRGlmZmVyZW5jZSBfIHwgQ29tcGxlbWVudCBfIHwgSW50ZXJzZWN0aW9uIF8gfCBOb19jYXNlIF8gfCBDYXNlIF8gLT5cbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBQbWFyayAoaSwgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEucG1hcmsgaWRzIGkpIGNyLCBraW5kJylcblxuYW5kIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEEuZXBzIGlkc1xuICB8IFtyXSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcidcbiAgfCByIDo6IHJlbSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGxldCBjcicnID1cbiAgICAgIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHJlbSBpblxuICAgIGlmIEEuaXNfZXBzIGNyJycgdGhlblxuICAgICAgY3InXG4gICAgZWxzZSBpZiBBLmlzX2VwcyBjcicgdGhlblxuICAgICAgY3InJ1xuICAgIGVsc2VcbiAgICAgIEEuc2VxIGlkcyBraW5kJyBjcicgY3InJ1xuXG4oKioqKiBDYXNlICoqKiopXG5cbmxldCBjYXNlX2luc2VucyBzID1cbiAgQ3NldC51bmlvbiBzIChDc2V0LnVuaW9uIChDc2V0Lm9mZnNldCAzMiAoQ3NldC5pbnRlciBzIGN1cHBlcikpXG4gICAgICAgICAgICAgICAgICAoQ3NldC5vZmZzZXQgKC0zMikgKENzZXQuaW50ZXIgcyBjbG93ZXIpKSlcblxubGV0IGFzX3NldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT4gc1xuICB8IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBYWFggU2hvdWxkIHNwbGl0IGFsdGVybmF0aXZlcyBpbnRvICgxKSBjaGFyc2V0cyBhbmQgKDIpIG1vcmVcbiAgIGNvbXBsZXggcmVndWxhciBleHByZXNzaW9uczsgYWx0ZXJuYXRpdmUgc2hvdWxkIHRoZXJlZm9yZSBwcm9iYWJseVxuICAgYmUgZmxhdHRlbiBoZXJlICopXG5sZXQgcmVjIGhhbmRsZV9jYXNlIGlnbl9jYXNlID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIFNldCAoaWYgaWduX2Nhc2UgdGhlbiBjYXNlX2luc2VucyBzIGVsc2UgcylcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgU2VxdWVuY2UgKExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsIGluXG4gICAgaWYgaXNfY2hhcnNldCAoQWx0ZXJuYXRpdmUgbCcpIHRoZW5cbiAgICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpIENzZXQuZW1wdHkgbCcpXG4gICAgZWxzZVxuICAgICAgQWx0ZXJuYXRpdmUgbCdcbiAgfCBSZXBlYXQgKHIsIGksIGopIC0+XG4gICAgUmVwZWF0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByLCBpLCBqKVxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wIGFzIHIgLT5cbiAgICByXG4gIHwgU2VtIChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW0gKGssIHInKVxuICB8IFNlbV9ncmVlZHkgKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbV9ncmVlZHkgKGssIHInKVxuICB8IEdyb3VwIChuLCByKSAtPlxuICAgIEdyb3VwIChuLCBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuICB8IE5vX2dyb3VwIHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTm9fZ3JvdXAgcidcbiAgfCBOZXN0IHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTmVzdCByJ1xuICB8IENhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIGZhbHNlIHJcbiAgfCBOb19jYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSB0cnVlIHJcbiAgfCBJbnRlcnNlY3Rpb24gbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LmludGVyIHMgKGFzX3NldCByKSkgQ3NldC5jYW55IGwnKVxuICB8IENvbXBsZW1lbnQgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55XG4gICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSlcbiAgICAgICAgICAgICAgQ3NldC5lbXB0eSBsJykpXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgU2V0IChDc2V0LmludGVyIChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpKVxuICAgICAgICAgICAoQ3NldC5kaWZmIENzZXQuY2FueSAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByJykpKSlcbiAgfCBQbWFyayAoaSxyKSAtPiBQbWFyayAoaSxoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuXG4oKioqKilcblxubGV0IGNvbXBpbGVfMSByZWdleHAgPVxuICBsZXQgcmVnZXhwID0gaGFuZGxlX2Nhc2UgZmFsc2UgcmVnZXhwIGluXG4gIGxldCBjID0gQ29sb3JfbWFwLm1ha2UgKCkgaW5cbiAgbGV0IG5lZWRfbG5sID0gY29sb3JpemUgYyByZWdleHAgaW5cbiAgbGV0IChjb2xvcnMsIGNvbG9yX3JlcHIsIG5jb2xvcikgPSBDb2xvcl9tYXAuZmxhdHRlbiBjIGluXG4gIGxldCBsbmwgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciBlbHNlIC0xIGluXG4gIGxldCBuY29sb3IgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciArIDEgZWxzZSBuY29sb3IgaW5cbiAgbGV0IGlkcyA9IEEuY3JlYXRlX2lkcyAoKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IG5hbWVzID0gcmVmIFtdIGluXG4gIGxldCAociwga2luZCkgPVxuICAgIHRyYW5zbGF0ZSBpZHNcbiAgICAgIGBGaXJzdCBmYWxzZSBmYWxzZSBgR3JlZWR5IHBvcyBuYW1lcyAocmVmIENzZXQuQ1NldE1hcC5lbXB0eSkgY29sb3JzIHJlZ2V4cCBpblxuICBsZXQgciA9IGVuZm9yY2Vfa2luZCBpZHMgYEZpcnN0IGtpbmQgciBpblxuICAoKkZvcm1hdC5lcHJpbnRmIFwiPCVkICVkPkAuXCIgIWlkcyBuY29sOyopXG4gIG1rX3JlIH5pbml0aWFsOnIgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzOihMaXN0LnJldiAhbmFtZXMpIH5ncm91cF9jb3VudDooIXBvcyAvIDIpXG5cbigqKioqKVxuXG5sZXQgcmVjIGFuY2hvcmVkID0gZnVuY3Rpb25cbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgTGlzdC5leGlzdHMgYW5jaG9yZWQgbFxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgYW5jaG9yZWQgbFxuICB8IFJlcGVhdCAociwgaSwgXykgLT5cbiAgICBpID4gMCAmJiBhbmNob3JlZCByXG4gIHwgU2V0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RvcFxuICB8IEludGVyc2VjdGlvbiBfIHwgQ29tcGxlbWVudCBfIHwgRGlmZmVyZW5jZSBfIC0+XG4gICAgZmFsc2VcbiAgfCBCZWdfb2Zfc3RyIHwgU3RhcnQgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgciB8IE5lc3QgclxuICB8IENhc2UgciB8IE5vX2Nhc2UgciB8IFBtYXJrIChfLCByKSAtPlxuICAgIGFuY2hvcmVkIHJcblxuKCoqKiopXG5cbnR5cGUgdCA9IHJlZ2V4cFxuXG5sZXQgc3RyIHMgPVxuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IFN0cmluZy5sZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IFNldCAoQ3NldC5jc2luZ2xlIHMuW2ldKSA6OiAhbFxuICBkb25lO1xuICBTZXF1ZW5jZSAhbFxubGV0IGNoYXIgYyA9IFNldCAoQ3NldC5jc2luZ2xlIGMpXG5cbmxldCBhbHQgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IEFsdGVybmF0aXZlIGxcbmxldCBzZXEgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IGVtcHR5ID0gYWx0IFtdXG5sZXQgZXBzaWxvbiA9IHNlcSBbXVxubGV0IHJlcG4gciBpIGogPVxuICBpZiBpIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwblwiO1xuICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICB8IFNvbWUgaiB3aGVuIGogPCBpIC0+IGludmFsaWRfYXJnIFwiUmUucmVwblwiXG4gICAgfCBfIC0+ICgpXG4gIGVuZDtcbiAgUmVwZWF0IChyLCBpLCBqKVxubGV0IHJlcCByID0gcmVwbiByIDAgTm9uZVxubGV0IHJlcDEgciA9IHJlcG4gciAxIE5vbmVcbmxldCBvcHQgciA9IHJlcG4gciAwIChTb21lIDEpXG5sZXQgYm9sID0gQmVnX29mX2xpbmVcbmxldCBlb2wgPSBFbmRfb2ZfbGluZVxubGV0IGJvdyA9IEJlZ19vZl93b3JkXG5sZXQgZW93ID0gRW5kX29mX3dvcmRcbmxldCB3b3JkIHIgPSBzZXEgW2JvdzsgcjsgZW93XVxubGV0IG5vdF9ib3VuZGFyeSA9IE5vdF9ib3VuZFxubGV0IGJvcyA9IEJlZ19vZl9zdHJcbmxldCBlb3MgPSBFbmRfb2Zfc3RyXG5sZXQgd2hvbGVfc3RyaW5nIHIgPSBzZXEgW2JvczsgcjsgZW9zXVxubGV0IGxlb2wgPSBMYXN0X2VuZF9vZl9saW5lXG5sZXQgc3RhcnQgPSBTdGFydFxubGV0IHN0b3AgPSBTdG9wXG5sZXQgbG9uZ2VzdCByID0gU2VtIChgTG9uZ2VzdCwgcilcbmxldCBzaG9ydGVzdCByID0gU2VtIChgU2hvcnRlc3QsIHIpXG5sZXQgZmlyc3QgciA9IFNlbSAoYEZpcnN0LCByKVxubGV0IGdyZWVkeSByID0gU2VtX2dyZWVkeSAoYEdyZWVkeSwgcilcbmxldCBub25fZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgTm9uX2dyZWVkeSwgcilcbmxldCBncm91cCA/bmFtZSByID0gR3JvdXAgKG5hbWUsIHIpXG5sZXQgbm9fZ3JvdXAgciA9IE5vX2dyb3VwIHJcbmxldCBuZXN0IHIgPSBOZXN0IHJcbmxldCBtYXJrIHIgPSBsZXQgaSA9IFBtYXJrLmdlbiAoKSBpbiAoaSxQbWFyayAoaSxyKSlcblxubGV0IHNldCBzdHIgPVxuICBsZXQgcyA9IHJlZiBDc2V0LmVtcHR5IGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBzIDo9IENzZXQudW5pb24gKENzZXQuY3NpbmdsZSBzdHIuW2ldKSAhc1xuICBkb25lO1xuICBTZXQgIXNcblxubGV0IHJnIGMgYycgPSBTZXQgKGNzZXEgYyBjJylcblxubGV0IGludGVyIGwgPVxuICBsZXQgciA9IEludGVyc2VjdGlvbiBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5pbnRlclwiXG5cbmxldCBjb21wbCBsID1cbiAgbGV0IHIgPSBDb21wbGVtZW50IGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmNvbXBsXCJcblxubGV0IGRpZmYgciByJyA9XG4gIGxldCByJycgPSBEaWZmZXJlbmNlIChyLCByJykgaW5cbiAgaWYgaXNfY2hhcnNldCByJycgdGhlblxuICAgIHInJ1xuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5kaWZmXCJcblxubGV0IGFueSA9IFNldCBDc2V0LmNhbnlcbmxldCBub3RubCA9IFNldCAoQ3NldC5kaWZmIENzZXQuY2FueSAoQ3NldC5jc2luZ2xlICdcXG4nKSlcblxubGV0IGxvd2VyID0gYWx0IFtyZyAnYScgJ3onOyBjaGFyICdcXDE4MSc7IHJnICdcXDIyMycgJ1xcMjQ2JzsgcmcgJ1xcMjQ4JyAnXFwyNTUnXVxubGV0IHVwcGVyID0gYWx0IFtyZyAnQScgJ1onOyByZyAnXFwxOTInICdcXDIxNCc7IHJnICdcXDIxNicgJ1xcMjIyJ11cbmxldCBhbHBoYSA9IGFsdCBbbG93ZXI7IHVwcGVyOyBjaGFyICdcXDE3MCc7IGNoYXIgJ1xcMTg2J11cbmxldCBkaWdpdCA9IHJnICcwJyAnOSdcbmxldCBhbG51bSA9IGFsdCBbYWxwaGE7IGRpZ2l0XVxubGV0IHdvcmRjID0gYWx0IFthbG51bTsgY2hhciAnXyddXG5sZXQgYXNjaWkgPSByZyAnXFwwMDAnICdcXDEyNydcbmxldCBibGFuayA9IHNldCBcIlxcdCBcIlxubGV0IGNudHJsID0gYWx0IFtyZyAnXFwwMDAnICdcXDAzMSc7IHJnICdcXDEyNycgJ1xcMTU5J11cbmxldCBncmFwaCA9IGFsdCBbcmcgJ1xcMDMzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHJpbnQgPSBhbHQgW3JnICdcXDAzMicgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHB1bmN0ID1cbiAgYWx0IFtyZyAnXFwwMzMnICdcXDA0Nyc7IHJnICdcXDA1OCcgJ1xcMDY0JzsgcmcgJ1xcMDkxJyAnXFwwOTYnO1xuICAgICAgIHJnICdcXDEyMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwxNjknOyByZyAnXFwxNzEnICdcXDE4MCc7XG4gICAgICAgcmcgJ1xcMTgyJyAnXFwxODUnOyByZyAnXFwxODcnICdcXDE5MSc7IGNoYXIgJ1xcMjE1JzsgY2hhciAnXFwyNDcnXVxubGV0IHNwYWNlID0gYWx0IFtjaGFyICcgJzsgcmcgJ1xcMDA5JyAnXFwwMTMnXVxubGV0IHhkaWdpdCA9IGFsdCBbZGlnaXQ7IHJnICdhJyAnZic7IHJnICdBJyAnRiddXG5cbmxldCBjYXNlIHIgPSBDYXNlIHJcbmxldCBub19jYXNlIHIgPSBOb19jYXNlIHJcblxuKCoqKiopXG5cbmxldCBjb21waWxlIHIgPVxuICBjb21waWxlXzEgKFxuICAgIGlmIGFuY2hvcmVkIHIgdGhlblxuICAgICAgZ3JvdXAgclxuICAgIGVsc2VcbiAgICAgIHNlcSBbc2hvcnRlc3QgKHJlcCBhbnkpOyBncm91cCByXVxuICApXG5cbmxldCBleGVjX2ludGVybmFsIG5hbWUgPyhwb3M9MCkgPyhsZW4gPSAtMSkgfnBhcnRpYWwgfmdyb3VwcyByZSBzID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAtMSB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIG5hbWU7XG4gIG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuXG5cbmxldCBleGVjID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBleGVjX29wdCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjX29wdFwiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2VcbiAgICAgICAgICByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gU29tZSBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gTm9uZVxuXG5sZXQgZXhlY3AgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6ZmFsc2UgXCJSZS5leGVjcFwiID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfc3Vic3RyIC0+IHRydWVcbiAgfCBfICAgICAgICAgICAgIC0+IGZhbHNlXG5cbmxldCBleGVjX3BhcnRpYWwgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF8gLT4gYEZ1bGxcbiAgfCBSdW5uaW5nIF8gLT4gYFBhcnRpYWxcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5sZXQgZXhlY19wYXJ0aWFsX2RldGFpbGVkID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbF9kZXRhaWxlZFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIGdyb3VwIC0+IGBGdWxsIGdyb3VwXG4gIHwgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfSAtPiBgUGFydGlhbCBub19tYXRjaF9zdGFydHNfYmVmb3JlXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubW9kdWxlIE1hcmsgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBQbWFyay50XG5cbiAgbGV0IHRlc3QgKGcgOiBHcm91cC50KSBwID1cbiAgICBQbWFyay5TZXQubWVtIHAgZy5wbWFya3NcblxuICBsZXQgYWxsIChnIDogR3JvdXAudCkgPSBnLnBtYXJrc1xuXG4gIG1vZHVsZSBTZXQgPSBQbWFyay5TZXRcblxuICBsZXQgZXF1YWwgPSBQbWFyay5lcXVhbFxuXG4gIGxldCBjb21wYXJlID0gUG1hcmsuY29tcGFyZVxuXG5lbmRcblxudHlwZSBzcGxpdF90b2tlbiA9XG4gIFsgYFRleHQgb2Ygc3RyaW5nXG4gIHwgYERlbGltIG9mIEdyb3VwLnRcbiAgXVxuXG5tb2R1bGUgUnNlcSA9IHN0cnVjdFxuICBsZXQgYWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICgqIGluZGV4IG9mIHRoZSBmaXJzdCBwb3NpdGlvbiB3ZSBkbyBub3QgY29uc2lkZXIuXG4gICAgICAgIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCAqKVxuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaXRlcmF0ZSBvbiBtYXRjaGVzLiBXaGVuIGEgbWF0Y2ggaXMgZm91bmQsIHNlYXJjaCBmb3IgdGhlIG5leHRcbiAgICAgICBvbmUganVzdCBhZnRlciBpdHMgZW5kICopXG4gICAgbGV0IHJlYyBhdXggcG9zICgpID1cbiAgICAgIGlmIHBvcyA+PSBsaW1pdFxuICAgICAgdGhlbiBTZXEuTmlsICgqIG5vIG1vcmUgbWF0Y2hlcyAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHNcbiAgICAgICAgICAgICAgICB+cG9zIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIFNlcS5Db25zIChzdWJzdHIsIGF1eCBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfXG4gICAgICAgIHwgRmFpbGVkIC0+IFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCBwb3NcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGFsbCA/cG9zID9sZW4gcmUgc1xuICAgIHw+IFNlcS5tYXAgKGZ1biBzdWIgLT4gR3JvdXAuZ2V0IHN1YiAwKVxuXG4gIGxldCBzcGxpdF9mdWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGk6IHN0YXJ0IG9mIGRlbGltaXRlZCBzdHJpbmdcbiAgICAgICBwb3M6IGZpcnN0IHBvc2l0aW9uIGFmdGVyIGxhc3QgbWF0Y2ggb2YgW3JlXVxuICAgICAgIGxpbWl0OiBmaXJzdCBpbmRleCB3ZSBpZ25vcmUgKCFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQpICopXG4gICAgbGV0IHBvczAgPSBwb3MgaW5cbiAgICBsZXQgcmVjIGF1eCBzdGF0ZSBpIHBvcyAoKSA9IG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgYElkbGUgd2hlbiBwb3MgPj0gbGltaXQgLT5cbiAgICAgICAgaWYgaSA8IGxpbWl0IHRoZW4gKFxuICAgICAgICAgIGxldCBzdWIgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgIFNlcS5Db25zIChgVGV4dCBzdWIsIGF1eCBzdGF0ZSAoaSsxKSBwb3MpXG4gICAgICAgICkgZWxzZSBTZXEuTmlsXG4gICAgICB8IGBJZGxlIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgbGV0IG9sZF9pID0gaSBpblxuICAgICAgICAgIGxldCBpID0gcDIgaW5cbiAgICAgICAgICBpZiBwMSA+IHBvczAgdGhlbiAoXG4gICAgICAgICAgICAoKiBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgYnkgYSBkZWxpbWl0ZXIgKilcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIG9sZF9pIChwMSAtIG9sZF9pKSBpblxuICAgICAgICAgICAgbGV0IHN0YXRlID0gYFlpZWxkIChgRGVsaW0gc3Vic3RyKSBpblxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgICApIGVsc2UgU2VxLkNvbnMgKGBEZWxpbSBzdWJzdHIsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF8gLT4gU2VxLk5pbFxuICAgICAgICB8IEZhaWxlZCAtPlxuICAgICAgICAgIGlmIGkgPCBsaW1pdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgICAgKCogeWllbGQgbGFzdCBzdHJpbmcgKilcbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgbGltaXQgcG9zKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICBlbmRcbiAgICAgIHwgYFlpZWxkIHggLT5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCBgSWRsZSBpIHBvcylcbiAgICBpblxuICAgIGF1eCBgSWRsZSBwb3MgcG9zXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgbGV0IHNlcSA9IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBTZXEuTmlsXG4gICAgICB8IFNlcS5Db25zIChgRGVsaW0gXywgdGwpIC0+IGZpbHRlciB0bCAoKVxuICAgICAgfCBTZXEuQ29ucyAoYFRleHQgcyx0bCkgLT4gU2VxLkNvbnMgKHMsIGZpbHRlciB0bClcbiAgICBpbiBmaWx0ZXIgc2VxXG5lbmRcblxubW9kdWxlIFJsaXN0ID0gc3RydWN0XG4gIGxldCBsaXN0X29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBsaXN0ID1cbiAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IHggOjogbCkgW10gcyB8PiBMaXN0LnJldlxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5lbmRcblxubW9kdWxlIEdlbiA9IHN0cnVjdFxuICB0eXBlICdhIGdlbiA9IHVuaXQgLT4gJ2Egb3B0aW9uXG4gIGxldCBnZW5fb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGdlbiA9XG4gICAgbGV0IHIgPSByZWYgcyBpblxuICAgIGZ1biAoKSAtPiBtYXRjaCAhciAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgICAgfCBTZXEuQ29ucyAoeCwgdGwpIC0+XG4gICAgICAgIHIgOj0gdGw7XG4gICAgICAgIFNvbWUgeFxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuZW5kXG5cbmxldCByZXBsYWNlID8ocG9zPTApID9sZW4gPyhhbGw9dHJ1ZSkgcmUgfmYgcyA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICAgICAgcG9zK2xcbiAgaW5cbiAgKCogYnVmZmVyIGludG8gd2hpY2ggd2Ugd3JpdGUgdGhlIHJlc3VsdCAqKVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAoKiBpdGVyYXRlIG9uIG1hdGNoZWQgc3Vic3RyaW5ncy4gKilcbiAgbGV0IHJlYyBpdGVyIHBvcyA9XG4gICAgaWYgcG9zIDwgbGltaXRcbiAgICB0aGVuXG4gICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvcyB+bGVuOihsaW1pdC1wb3MpIHdpdGhcbiAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgKCogYWRkIHN0cmluZyBiZXR3ZWVuIHByZXZpb3VzIG1hdGNoIGFuZCBjdXJyZW50IG1hdGNoICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAocDEtcG9zKTtcbiAgICAgICAgKCogd2hhdCBzaG91bGQgd2UgcmVwbGFjZSB0aGUgbWF0Y2hlZCBncm91cCB3aXRoPyAqKVxuICAgICAgICBsZXQgcmVwbGFjaW5nID0gZiBzdWJzdHIgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHJlcGxhY2luZztcbiAgICAgICAgaWYgYWxsIHRoZW5cbiAgICAgICAgICAoKiBpZiB3ZSBtYXRjaGVkIGEgbm9uLWNoYXIgZS5nLiBeIHdlIG11c3QgbWFudWFsbHkgYWR2YW5jZSBieSAxICopXG4gICAgICAgICAgaXRlciAoXG4gICAgICAgICAgICBpZiBwMT1wMiB0aGVuIChcbiAgICAgICAgICAgICAgKCogYSBub24gY2hhciBjb3VsZCBiZSBwYXN0IHRoZSBlbmQgb2Ygc3RyaW5nLiBlLmcuICQgKilcbiAgICAgICAgICAgICAgaWYgcDIgPCBsaW1pdCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgcy5bcDJdO1xuICAgICAgICAgICAgICBwMisxXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgcDIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwMiAobGltaXQtcDIpXG4gICAgICB8IFJ1bm5pbmcgXyAtPiAoKVxuICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChsaW1pdC1wb3MpXG4gIGluXG4gIGl0ZXIgcG9zO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCByZXBsYWNlX3N0cmluZyA/cG9zID9sZW4gP2FsbCByZSB+YnkgcyA9XG4gIHJlcGxhY2UgP3BvcyA/bGVuID9hbGwgcmUgcyB+ZjooZnVuIF8gLT4gYnkpXG5cbmxldCB3aXRuZXNzIHQgPVxuICBsZXQgcmVjIHdpdG5lc3MgPSBmdW5jdGlvblxuICAgIHwgU2V0IGMgLT4gU3RyaW5nLm1ha2UgMSAoQ2hhci5jaHIgKENzZXQucGljayBjKSlcbiAgICB8IFNlcXVlbmNlIHhzIC0+IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgd2l0bmVzcyB4cylcbiAgICB8IEFsdGVybmF0aXZlICh4IDo6IF8pIC0+IHdpdG5lc3MgeFxuICAgIHwgQWx0ZXJuYXRpdmUgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBSZXBlYXQgKHIsIGZyb20sIF90bykgLT5cbiAgICAgIGxldCB3ID0gd2l0bmVzcyByIGluXG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggdyAqIGZyb20pIGluXG4gICAgICBmb3IgX2k9MSB0byBmcm9tIGRvXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgd1xuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBOb19jYXNlIHIgLT4gd2l0bmVzcyByXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIChfLCBfKSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IEdyb3VwIChfLCByKVxuICAgIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBQbWFyayAoXywgcilcbiAgICB8IENhc2UgclxuICAgIHwgU2VtX2dyZWVkeSAoXywgcikgLT4gd2l0bmVzcyByXG4gICAgfCBCZWdfb2ZfbGluZVxuICAgIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkXG4gICAgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lXG4gICAgfCBTdGFydFxuICAgIHwgU3RvcFxuICAgIHwgRW5kX29mX3N0ciAtPiBcIlwiIGluXG4gIHdpdG5lc3MgKGhhbmRsZV9jYXNlIGZhbHNlIHQpXG5cbm1vZHVsZSBTZXEgPSBSc2VxXG5tb2R1bGUgTGlzdCA9IFJsaXN0XG5tb2R1bGUgR3JvdXAgPSBHcm91cFxuXG4oKiogezIgRGVwcmVjYXRlZCBmdW5jdGlvbnN9ICopXG5cbmxldCBzcGxpdF9mdWxsX3NlcSA9IFNlcS5zcGxpdF9mdWxsXG5sZXQgc3BsaXRfc2VxID0gU2VxLnNwbGl0XG5sZXQgbWF0Y2hlc19zZXEgPSBTZXEubWF0Y2hlc1xubGV0IGFsbF9zZXEgPSBTZXEuYWxsXG5cbnR5cGUgJ2EgZ2VuICAgICAgICA9ICdhIEdlbi5nZW5cbmxldCBhbGxfZ2VuICAgICAgICA9IEdlbi5hbGxcbmxldCBtYXRjaGVzX2dlbiAgICA9IEdlbi5tYXRjaGVzXG5sZXQgc3BsaXRfZ2VuICAgICAgPSBHZW4uc3BsaXRcbmxldCBzcGxpdF9mdWxsX2dlbiA9IEdlbi5zcGxpdF9mdWxsXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuXG5sZXQgZ2V0ID0gR3JvdXAuZ2V0XG5sZXQgZ2V0X29mcyA9IEdyb3VwLm9mZnNldFxubGV0IGdldF9hbGwgPSBHcm91cC5hbGxcbmxldCBnZXRfYWxsX29mcyA9IEdyb3VwLmFsbF9vZmZzZXRcbmxldCB0ZXN0ID0gR3JvdXAudGVzdFxuXG50eXBlIG1hcmtpZCA9IE1hcmsudFxuXG5sZXQgbWFya2VkID0gTWFyay50ZXN0XG5sZXQgbWFya19zZXQgPSBNYXJrLmFsbFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpcbkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91cyBjaGFyYWN0ZXI6XG4tIGRvZXMgbm90IGV4aXN0c1xuLSBpcyBhIGxldHRlclxuLSBpcyBub3QgYSBsZXR0ZXJcbi0gaXMgYSBuZXdsaW5lXG4tIGlzIGxhc3QgbmV3bGluZVxuXG5CZWdpbm5pbmcgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBsaW5lOlxuLSBwcmV2aW91cyBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGJ1ZmZlcjpcbi0gcHJldmlvdXMgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGJ1ZmZlclxuLSBjdXJyZW50IGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBsaW5lXG4tIGN1cnJlbnQgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG4qKVxuXG4oKlxuUmVwOiBlID0gVCxlIHwgKClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIGNvbW1hIChzaG9ydGVzdC9sb25nZXN0L2ZpcnN0KVxuICAtIHNlbWFudGljcyBvZiB0aGUgdW5pb24gKGdyZWVkeS9ub24tZ3JlZWR5KVxuXG5Cb3VuZGVkIHJlcGV0aXRpb25cbiAgYXswLDN9ID0gKGEsKGEsYT8pPyk/XG4qKVxuXG50eXBlIGdyb3VwcyA9IEdyb3VwLnRcblxuaW5jbHVkZSBSbGlzdFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgdGVzdDIgYyBjJyA9ICFpICsgMSA8IGwgJiYgcy5bIWldID0gYyAmJiBzLlshaSArIDFdID0gYycgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0MiBjIGMnID0gbGV0IHIgPSB0ZXN0MiBjIGMnIGluIGlmIHIgdGhlbiBpIDo9ICFpICsgMjsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdDIgJ1xcXFwnICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0MiAnXFxcXCcgJ3wnIHx8IHRlc3QyICdcXFxcJyAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgciBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgciBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ib2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIFJlLmVvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQyICdcXFxcJyAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnYCcgdGhlblxuICAgICAgICBSZS5ib3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdcXCcnIHRoZW5cbiAgICAgICAgUmUuZW9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPScgdGhlblxuICAgICAgICBSZS5zdGFydFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ2InIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdCJyB0aGVuXG4gICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW5cbiAgICAgICAgUmUuYm93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPicgdGhlblxuICAgICAgICBSZS5lb3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICd3JyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1cnIHRoZW5cbiAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ1snIHwgJ10nIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ1xcXFwnIGFzIGMgLT5cbiAgICAgICAgICAgIFJlLmNoYXIgY1xuICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICBjICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBnZXQgKClcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbmxldCByZSA/KGNhc2UgPSB0cnVlKSBzID0gbGV0IHIgPSBwYXJzZSBzIGluIGlmIGNhc2UgdGhlbiByIGVsc2UgUmUubm9fY2FzZSByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8oY2FzZSA9IHRydWUpIHMgPSBjb21waWxlIChyZSB+Y2FzZSBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAqKVxuKCogIGxpbmtpbmcgZXhjZXB0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2RpZmllZCBieSBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnIgZm9yIGludGVncmF0aW9uIGluIFJFICopXG5cbigqICRJZDogcmVfc3RyLm1sLHYgMS4zIDIwMDIvMDcvMDMgMTU6NDc6NTQgdm91aWxsb24gRXhwICQgKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG50eXBlIHJlZ2V4cCA9XG4gIHsgcmU6IFJlLnRcbiAgOyBtdGNoOiBSZS5yZSBMYXp5LnRcbiAgOyBzcmNoOiBSZS5yZSBMYXp5LnQgfVxuXG5sZXQgY29tcGlsZV9yZWdleHAgcyBjID1cbiAgbGV0IHJlID0gRW1hY3MucmUgfmNhc2U6KG5vdCBjKSBzIGluXG4gIHsgcmVcbiAgOyBtdGNoID0gbGF6eSAoUmUuY29tcGlsZSAoUmUuc2VxIFtSZS5zdGFydDsgcmVdKSlcbiAgOyBzcmNoID0gbGF6eSAoUmUuY29tcGlsZSByZSkgfVxuXG5sZXQgc3RhdGUgPSByZWYgTm9uZVxuXG5sZXQgc3RyaW5nX21hdGNoIHJlIHMgcCA9XG4gIHRyeVxuICAgIHN0YXRlIDo9IFNvbWUgKFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMpO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGZhbHNlXG5cbmxldCBzdHJpbmdfcGFydGlhbF9tYXRjaCByZSBzIHAgPVxuICBtYXRjaFxuICAgIFJlLmV4ZWNfcGFydGlhbCB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgc1xuICB3aXRoXG4gICAgYEZ1bGwgICAgIC0+IHN0cmluZ19tYXRjaCByZSBzIHBcbiAgfCBgUGFydGlhbCAgLT4gdHJ1ZVxuICB8IGBNaXNtYXRjaCAtPiBmYWxzZVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLnNyY2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBmc3QgKFJlLkdyb3VwLm9mZnNldCByZXMgMClcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIHNlYXJjaF9iYWNrd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIHBcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGlmIHAgPSAwIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2VcbiAgICAgIHNlYXJjaF9iYWNrd2FyZCByZSBzIChwIC0gMSlcblxubGV0IHZhbGlkX2dyb3VwIG4gPVxuICBuID49IDAgJiYgbiA8IDEwICYmIChcbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBtIC0+IG4gPCBSZS5Hcm91cC5uYl9ncm91cHMgbVxuICApXG5cbmxldCBvZmZzZXRfZ3JvdXAgaSA9XG4gIG1hdGNoICFzdGF0ZSB3aXRoXG4gIHwgU29tZSBtIC0+IFJlLkdyb3VwLm9mZnNldCBtIGlcbiAgfCBOb25lICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBncm91cF9sZW4gaSA9XG4gIHRyeVxuICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgaSBpblxuICAgIGUgLSBiXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgMFxuXG5sZXQgcmVjIHJlcGxfbGVuZ3RoIHJlcGwgcCBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGlmIHJlcGwuW3BdIDw+ICdcXFxcJyB0aGVuXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgKHEgKyAxKSBsZW5cbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcCA9IHAgKyAxIGluXG4gICAgICBpZiBwID0gbGVuIHRoZW4gZmFpbHdpdGggXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIjtcbiAgICAgIGxldCBxID1cbiAgICAgICAgbWF0Y2ggcmVwbC5bcF0gd2l0aFxuICAgICAgICB8ICdcXFxcJyAtPiBxICsgMVxuICAgICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBxICsgZ3JvdXBfbGVuIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpXG4gICAgICAgIHwgXyAtPiBxICsgMiBpblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIHEgbGVuXG4gICAgZW5kXG4gIGVuZCBlbHNlXG4gICAgcVxuXG5sZXQgcmVjIHJlcGxhY2Ugb3JpZyByZXBsIHAgcmVzIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgbGV0IGMgPSByZXBsLltwXSBpblxuICAgIGlmIGMgPD4gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIEJ5dGVzLnNldCByZXMgcSBjO1xuICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAxKSByZXMgKHEgKyAxKSBsZW5cbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggcmVwbC5bcCArIDFdIHdpdGhcbiAgICAgICAgJ1xcXFwnIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMSkgbGVuXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGUgLSBiIGluXG4gICAgICAgICAgICBpZiBkID4gMCB0aGVuIFN0cmluZy5ibGl0IG9yaWcgYiByZXMgcSBkO1xuICAgICAgICAgICAgZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAwXG4gICAgICAgIGluXG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgZCkgbGVuXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgQnl0ZXMuc2V0IHJlcyAocSArIDEpIGM7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMikgbGVuXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgcmVwbGFjZW1lbnRfdGV4dCByZXBsIG9yaWcgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCByZXBsIGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKHJlcGxfbGVuZ3RoIHJlcGwgMCAwIGxlbikgaW5cbiAgcmVwbGFjZSBvcmlnIHJlcGwgMCByZXMgMCAoU3RyaW5nLmxlbmd0aCByZXBsKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgc3RyaW5nX2JlZm9yZSBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBmaXJzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBsYXN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAoU3RyaW5nLmxlbmd0aCBzIC0gbikgblxuXG5sZXQgcmVnZXhwIGUgPSBjb21waWxlX3JlZ2V4cCBlIGZhbHNlXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIGUgPSBjb21waWxlX3JlZ2V4cCBlIHRydWVcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSBmYWxzZVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSB0cnVlXG5cbmxldCBncm91cF9iZWdpbm5pbmcgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9iZWdpbm5pbmdcIjtcbiAgbGV0IHBvcyA9IGZzdCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgZ3JvdXBfZW5kIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfZW5kXCI7XG4gIGxldCBwb3MgPSBzbmQgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IG1hdGNoZWRfZ3JvdXAgbiB0eHQgPVxuICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIG4gaW5cbiAgU3RyaW5nLnN1YiB0eHQgYiAoZSAtIGIpXG5cbmxldCByZXBsYWNlX21hdGNoZWQgcmVwbCBtYXRjaGVkID0gcmVwbGFjZW1lbnRfdGV4dCByZXBsIG1hdGNoZWRcblxubGV0IG1hdGNoX2JlZ2lubmluZyAoKSA9IGdyb3VwX2JlZ2lubmluZyAwXG5hbmQgbWF0Y2hfZW5kICgpID0gZ3JvdXBfZW5kIDBcbmFuZCBtYXRjaGVkX3N0cmluZyB0eHQgPSBtYXRjaGVkX2dyb3VwIDAgdHh0XG5cbmxldCBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgMCBpblxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbc3RyaW5nX2JlZm9yZSB0ZXh0IHBvcztcbiAgICAgICAgICAgICAgICAgICAgICByZXBsX2Z1biB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19hZnRlciB0ZXh0IChtYXRjaF9lbmQgKCkpXVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRleHRcblxubGV0IGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIGxldCByZWMgcmVwbGFjZSBhY2N1IHN0YXJ0IGxhc3Rfd2FzX2VtcHR5ID1cbiAgICBsZXQgc3RhcnRwb3MgPSBpZiBsYXN0X3dhc19lbXB0eSB0aGVuIHN0YXJ0ICsgMSBlbHNlIHN0YXJ0IGluXG4gICAgaWYgc3RhcnRwb3MgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IHN0YXJ0cG9zIHdpdGhcbiAgICAgIHwgcG9zIC0+XG4gICAgICAgIGxldCBlbmRfcG9zID0gbWF0Y2hfZW5kICgpIGluXG4gICAgICAgIGxldCByZXBsX3RleHQgPSByZXBsX2Z1biB0ZXh0IGluXG4gICAgICAgIHJlcGxhY2UgKHJlcGxfdGV4dCA6OiBTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICBlbmRfcG9zIChlbmRfcG9zID0gcG9zKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICBpblxuICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IChyZXBsYWNlIFtdIDAgZmFsc2UpKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgZXhwciByZXBsIHRleHQgPVxuICBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcbmFuZCByZXBsYWNlX2ZpcnN0IGV4cHIgcmVwbCB0ZXh0ID1cbiAgc3Vic3RpdHV0ZV9maXJzdCBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcblxubGV0IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIHJlIHMgcCA9XG4gIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCByZSBzIHAgaW5cbiAgaWYgbWF0Y2hfZW5kICgpID4gcCB0aGVuXG4gICAgcG9zXG4gIGVsc2UgaWYgcCA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgc2VhcmNoX2ZvcndhcmQgcmUgcyAocCArIDEpXG4gIGVsc2VcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCBzdGFydCA9XG4gICAgaWYgc3RyaW5nX21hdGNoIGV4cHIgdGV4dCAwIHRoZW4gbWF0Y2hfZW5kICgpIGVsc2UgMCBpblxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0ICgoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpKSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gc3RhcnQgbnVtKVxuXG5sZXQgc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdCBleHByIHRleHQgMFxuXG5sZXQgYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgaWYgdGV4dCA9IFwiXCIgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBzcGxpdF9kZWxpbSBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCAwXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID0gVGV4dCBvZiBzdHJpbmcgfCBEZWxpbSBvZiBzdHJpbmdcblxubGV0IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIGxldCBzID0gbWF0Y2hlZF9zdHJpbmcgdGV4dCBpblxuICAgICAgICBpZiBwb3MgPiBzdGFydCB0aGVuXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OlxuICAgICAgICAgICAgICAgICBUZXh0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcyAtIHN0YXJ0KSkgOjpcbiAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjogYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IGZ1bGxfc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCAwXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIGVuY2xvc2VkID1cbiAgfCBDaGFyIG9mIGNoYXJcbiAgfCBSYW5nZSBvZiBjaGFyICogY2hhclxuXG50eXBlIHBpZWNlID1cbiAgfCBFeGFjdGx5IG9mIGNoYXJcbiAgfCBBbnlfb2Ygb2YgZW5jbG9zZWQgbGlzdFxuICB8IEFueV9idXQgb2YgZW5jbG9zZWQgbGlzdFxuICB8IE9uZVxuICB8IE1hbnlcbiAgfCBNYW55TWFueVxuXG50eXBlIHQgPSBwaWVjZSBsaXN0XG5cbmxldCBvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzIDogdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgcmVhZCBjID1cbiAgICBsZXQgciA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gICAgaWYgciB0aGVuIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgKCoqXG4gICBbcmVhZF9haGVhZCBwYXR0ZXJuXSB3aWxsIGF0dGVtcHQgdG8gcmVhZCBbcGF0dGVybl0gYW5kIHdpbGwgcmV0dXJuIFt0cnVlXSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bC5cbiAgIElmIGl0IGZhaWxzLCBpdCB3aWxsIHJldHVybiBbZmFsc2VdIGFuZCBub3QgaW5jcmVtZW50IHRoZSByZWFkIGluZGV4LlxuICAqKVxuICBsZXQgcmVhZF9haGVhZCBwYXR0ZXJuID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAoKiBpZiB0aGUgcGF0dGVybiB3ZSBhcmUgbG9va2luZyBmb3IgZXhlZWRzIHRoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHMsIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseSAqKVxuICAgIGlmICFpICsgcGF0dGVybl9sZW4gPj0gbCB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDAgdG8gcGF0dGVybl9sZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGZvdW5kID0gbm90IChlb3MgKCkpICYmIHMuWyFpICsgal0gPSBwYXR0ZXJuLltqXSBpblxuICAgICAgICAgIGlmIG5vdCBmb3VuZCB0aGVuIHJhaXNlX25vdHJhY2UgRXhpdDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaSA6PSAhaSArIHBhdHRlcm5fbGVuO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIHwgRXhpdCAgLT4gZmFsc2VcbiAgaW5cblxuICBsZXQgY2hhciAoKSA9XG4gICAgaWdub3JlIChyZWFkICdcXFxcJyA6IGJvb2wpO1xuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCByID0gcy5bIWldIGluXG4gICAgaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICBsZXQgZW5jbG9zZWQgKCkgOiBlbmNsb3NlZCBsaXN0ID1cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICAoKiBUaGlzIHJldHVybnMgdGhlIGxpc3QgaW4gcmV2ZXJzZSBvcmRlciwgYnV0IG9yZGVyIGlzbid0IGltcG9ydGFudCBhbnl3YXkgKilcbiAgICAgIGlmIHMgPD4gW10gJiYgcmVhZCAnXSdcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgICAgaWYgbm90IChyZWFkICctJylcbiAgICAgICAgdGhlbiBsb29wIChDaGFyIGMgOjogcylcbiAgICAgICAgZWxzZSBpZiByZWFkICddJ1xuICAgICAgICB0aGVuIENoYXIgYyA6OiBDaGFyICctJyA6OiBzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgbG9vcCAoUmFuZ2UgKGMsIGMnKSA6OiBzKVxuICAgIGluXG4gICAgbG9vcCBbXVxuICBpblxuXG4gIGxldCBwaWVjZSAoKSA9XG4gICAgaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWRfYWhlYWQgXCIvKipcIiAmJiBub3QgKGVvcyAoKSlcbiAgICB0aGVuIE1hbnlNYW55XG4gICAgZWxzZSBpZiByZWFkICcqJ1xuICAgIHRoZW4gaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWQgJyonXG4gICAgICB0aGVuIE1hbnlNYW55XG4gICAgICBlbHNlIE1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJz8nXG4gICAgdGhlbiBPbmVcbiAgICBlbHNlIGlmIG5vdCAocmVhZCAnWycpXG4gICAgdGhlbiBFeGFjdGx5IChjaGFyICgpKVxuICAgIGVsc2UgaWYgcmVhZCAnXicgfHwgcmVhZCAnISdcbiAgICB0aGVuIEFueV9idXQgKGVuY2xvc2VkICgpKVxuICAgIGVsc2UgQW55X29mIChlbmNsb3NlZCAoKSlcbiAgaW5cblxuICBsZXQgcmVjIGxvb3AgcGllY2VzID1cbiAgICBpZiBlb3MgKClcbiAgICB0aGVuIExpc3QucmV2IHBpZWNlc1xuICAgIGVsc2UgbG9vcCAocGllY2UgKCkgOjogcGllY2VzKVxuICBpblxuXG4gIGxvb3AgW11cblxubGV0IG11bCBsIGwnID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHMgLT4gTGlzdC5tYXAgKGZ1biBzJyAtPiBzIF4gcycpIGwnKSBsKVxuXG5sZXQgZXhwbG9kZSBzdHIgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZWMgZXhwbCBpbm5lciBzIGkgYWNjIGJlZyA9XG4gICAgaWYgaSA+PSBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGlubmVyIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSwgaSlcbiAgICBlbmQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICB8ICdcXFxcJyAtPiBleHBsIGlubmVyIHMgKGkgKyAyKSBhY2MgYmVnXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBsZXQgKHQsIGknKSA9IGV4cGwgdHJ1ZSAoaSArIDEpIChpICsgMSkgW10gW1wiXCJdIGluXG4gICAgICAgIGV4cGwgaW5uZXIgaScgaScgYWNjXG4gICAgICAgICAgKG11bCBiZWcgKG11bCBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSB0KSlcbiAgICAgIHwgJywnIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgZXhwbCBpbm5lciAoaSArIDEpIChpICsgMSlcbiAgICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYykgW1wiXCJdXG4gICAgICB8ICd9JyB3aGVuIGlubmVyIC0+XG4gICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjLCBpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBleHBsIGlubmVyIHMgKGkgKyAxKSBhY2MgYmVnXG4gIGluXG4gIExpc3QucmV2IChmc3QgKGV4cGwgZmFsc2UgMCAwIFtdIFtcIlwiXSkpXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVfcGllY2VzICAgICAgICAgICAgICAgIDogUmUudCBsaXN0OyAgKCogbGFzdCBwaWVjZSBhdCBoZWFkIG9mIGxpc3QuICopXG4gICAgcmVtYWluaW5nICAgICAgICAgICAgICAgIDogcGllY2UgbGlzdDsgKCogbGFzdCBwaWVjZSBhdCB0YWlsIG9mIGxpc3QuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiAgIDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuIG9yIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgJy8nICopXG4gICAgcGF0aG5hbWUgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgICBtYXRjaF9iYWNrc2xhc2hlcyAgICAgICAgOiBib29sO1xuICAgIHBlcmlvZCAgICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gIH1cblxuICBsZXQgY3JlYXRlIH5wZXJpb2QgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyByZW1haW5pbmcgPVxuICAgIHtcbiAgICAgIHJlX3BpZWNlcyA9IFtdO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IHRydWU7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSB0cnVlO1xuICAgICAgcGF0aG5hbWU7XG4gICAgICBtYXRjaF9iYWNrc2xhc2hlcztcbiAgICAgIHBlcmlvZDtcbiAgICAgIHJlbWFpbmluZztcbiAgICB9XG5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCB0ID1cbiAgICB0LnBlcmlvZCAmJiAoXG4gICAgICB0LmFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gfHxcbiAgICAgICh0LmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCAmJiB0LnBhdGhuYW1lKVxuICAgIClcblxuICBsZXQgZXhwbGljaXRfc2xhc2ggdCA9IHQucGF0aG5hbWVcblxuICBsZXQgc2xhc2hlcyB0ID1cbiAgICBpZiB0Lm1hdGNoX2JhY2tzbGFzaGVzIHRoZW4gWycvJzsgJ1xcXFwnXSBlbHNlIFsnLyddXG5cbiAgbGV0IGFwcGVuZCA/KGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudD1mYWxzZSkgdCBwaWVjZSA9XG4gICAgeyB0IHdpdGhcbiAgICAgIHJlX3BpZWNlcyA9IHBpZWNlIDo6IHQucmVfcGllY2VzO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IGZhbHNlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50O1xuICAgIH1cblxuICBsZXQgdG9fcmUgdCA9IFJlLnNlcSAoTGlzdC5yZXYgdC5yZV9waWVjZXMpXG5cbiAgbGV0IG5leHQgdCA9XG4gICAgbWF0Y2ggdC5yZW1haW5pbmcgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgcGllY2UgOjogcmVtYWluaW5nIC0+IFNvbWUgKHBpZWNlLCB7IHQgd2l0aCByZW1haW5pbmcgfSlcbmVuZFxuXG5sZXQgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kID1cbiAgUmUuY29tcGwgKFxuICAgIExpc3QuY29uY2F0IFtcbiAgICAgIGlmIGV4cGxpY2l0X3NsYXNoICB0aGVuIExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyBlbHNlIFtdO1xuICAgICAgaWYgZXhwbGljaXRfcGVyaW9kIHRoZW4gW1JlLmNoYXIgJy4nXSBlbHNlIFtdO1xuICAgIF1cbiAgKVxuXG5sZXQgZW5jbG9zZWQgZW5jbG9zZWQgPVxuICBtYXRjaCBlbmNsb3NlZCB3aXRoXG4gIHwgQ2hhciBjIC0+IFJlLmNoYXIgY1xuICB8IFJhbmdlIChsb3csIGhpZ2gpIC0+IFJlLnJnIGxvdyBoaWdoXG5cbmxldCBlbmNsb3NlZF9zZXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Qga2luZCBzZXQgPVxuICBsZXQgc2V0ID0gTGlzdC5tYXAgZW5jbG9zZWQgc2V0IGluXG4gIGxldCBlbmNsb3N1cmUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEFueV9vZiAtPiBSZS5hbHQgc2V0XG4gICAgfCBgQW55X2J1dCAtPiBSZS5jb21wbCBzZXRcbiAgaW5cbiAgUmUuaW50ZXIgW2VuY2xvc3VyZTsgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kXVxuXG5sZXQgZXhhY3RseSBzdGF0ZSBjID1cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSBMaXN0Lm1lbSBjIHNsYXNoZXMgaW5cbiAgbGV0IGNoYXJzID0gaWYgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IHRoZW4gc2xhc2hlcyBlbHNlIFtjXSBpblxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBjaGFycykpIH5hbV9hdF9zdGFydF9vZl9jb21wb25lbnRcblxubGV0IG1hbnlfbWFueSBzdGF0ZSA9XG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBzdGF0ZS5TdGF0ZS5wZXJpb2QgJiYgc3RhdGUuU3RhdGUucGF0aG5hbWUgaW5cbiAgbGV0IGZpcnN0X2V4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kID1cbiAgICBSZS5zZXEgW1xuICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgIF1cbiAgaW5cbiAgKCogV2UgbXVzdCBtYXRjaCBjb21wb25lbnRzIGluZGl2aWR1YWxseSB3aGVuIFtwZXJpb2RdIGZsYWcgaXMgc2V0LFxuICAgICBtYWtpbmcgc3VyZSB0byBub3QgbWF0Y2ggW1wiZm9vLy5iYXJcIl0uICopXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoXG4gICAgUmUuc2VxIFtcbiAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2Q6Zmlyc3RfZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgIFJlLnJlcCAoXG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMpO1xuICAgICAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgICBdXG4gICAgICApO1xuICAgIF0pXG5cbmxldCBtYW55IChzdGF0ZSA6IFN0YXRlLnQpID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgKCogV2hldGhlciB3ZSBtdXN0IGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kIGRlcGVuZHMgb24gdGhlIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGJ1dFxuICAgICBzbGFzaGVzIGFyZSBlYXN5IHRvIGV4cGxpY2l0IG1hdGNoLiBUaGlzIGNvbmRpdGlvbmFsIHNwbGl0cyBvdXQgc29tZSBzaW1wbGUgY2FzZXMuXG4gICopXG4gIGlmIG5vdCBleHBsaWNpdF9wZXJpb2QgdGhlbiBiZWdpblxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpKVxuICBlbmQgZWxzZSBpZiBub3QgZXhwbGljaXRfc2xhc2ggdGhlbiBiZWdpblxuICAgICgqIEluIHRoaXMgc3RhdGUsIHdlIGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kcyBvbmx5IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyAqKVxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUub3B0IChcbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgKSlcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBsZXQgbm90X2VtcHR5ID1cbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgaW5cbiAgICAoKiBbbWF5YmVfZW1wdHldIGlzIHRoZSBkZWZhdWx0IHRyYW5zbGF0aW9uIG9mIE1hbnksIGV4Y2VwdCBpbiBzb21lIHNwZWNpYWwgY2FzZXMuXG4gICAgKilcbiAgICBsZXQgbWF5YmVfZW1wdHkgPSBSZS5vcHQgbm90X2VtcHR5IGluXG4gICAgbGV0IGVuY2xvc2VkX3NldCBzdGF0ZSBraW5kIHNldCA9XG4gICAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCBbXG4gICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgbm90X2VtcHR5O1xuICAgICAgICAgICgqIFNpbmNlIFtub3RfZW1wdHldIG1hdGNoZWQsIHN1YnNlcXVlbnQgZG90cyBhcmUgbm90IGxlYWRpbmcuICopXG4gICAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2U7XG4gICAgICAgIF07XG4gICAgICBdKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29rYWhlYWQgc3RhdGUgPVxuICAgICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG1heWJlX2VtcHR5XG4gICAgICAoKiBnbG9iICoqID09PSBnbG9iICogLiAqKVxuICAgICAgfCBTb21lIChNYW55LCBzdGF0ZSkgLT4gbG9va2FoZWFkIHN0YXRlXG4gICAgICB8IFNvbWUgKEV4YWN0bHkgYywgc3RhdGUpIC0+XG4gICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlXG4gICAgICAgICAgICAoaWYgYyA9ICcuJ1xuICAgICAgICAgICAgIHRoZW4gbm90X2VtcHR5XG4gICAgICAgICAgICAgZWxzZSBtYXliZV9lbXB0eSlcbiAgICAgICAgaW5cbiAgICAgICAgZXhhY3RseSBzdGF0ZSBjXG4gICAgICAoKiBnbG9iICo/ID09PSBnbG9iID8qICopXG4gICAgICB8IFNvbWUgKE9uZSwgc3RhdGUpIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBub3RfZW1wdHlcbiAgICAgIHwgU29tZSAoQW55X29mIGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfb2YgZW5jbG9zZWRcbiAgICAgIHwgU29tZSAoQW55X2J1dCBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X2J1dCBlbmNsb3NlZFxuICAgICAgKCogKiB0aGVuICoqID09PSAqKiAqKVxuICAgICAgfCBTb21lIChNYW55TWFueSwgc3RhdGUpIC0+IG1hbnlfbWFueSBzdGF0ZVxuICAgIGluXG4gICAgbG9va2FoZWFkIHN0YXRlXG4gIGVuZFxuXG5sZXQgcGllY2Ugc3RhdGUgcGllY2UgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBtYXRjaCBwaWVjZSB3aXRoXG4gIHwgT25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKVxuICB8IE1hbnkgLT4gbWFueSBzdGF0ZVxuICB8IEFueV9vZiBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfb2YgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgQW55X2J1dCBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfYnV0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEV4YWN0bHkgYyAtPiBleGFjdGx5IHN0YXRlIGNcbiAgfCBNYW55TWFueSAtPiBtYW55X21hbnkgc3RhdGVcblxubGV0IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGF0ZS50b19yZSBzdGF0ZVxuICAgIHwgU29tZSAocCwgc3RhdGUpIC0+IGxvb3AgKHBpZWNlIHN0YXRlIHApXG4gIGluXG4gIGxvb3AgKFN0YXRlLmNyZWF0ZSB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYilcblxubGV0IGdsb2JcbiAgICAgID8oYW5jaG9yZWQgPSBmYWxzZSlcbiAgICAgID8ocGF0aG5hbWUgPSB0cnVlKVxuICAgICAgPyhtYXRjaF9iYWNrc2xhc2hlcyA9IGZhbHNlKVxuICAgICAgPyhwZXJpb2QgPSB0cnVlKVxuICAgICAgPyhleHBhbmRfYnJhY2VzID0gZmFsc2UpXG4gICAgICA/KGRvdWJsZV9hc3RlcmlzayA9IHRydWUpXG4gICAgICBzXG4gID1cbiAgbGV0IHRvX3JlIHMgPVxuICAgIGxldCByZSA9IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIChvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzKSBpblxuICAgIGlmIGFuY2hvcmVkXG4gICAgdGhlbiBSZS53aG9sZV9zdHJpbmcgcmVcbiAgICBlbHNlIHJlXG4gIGluXG4gIGlmIGV4cGFuZF9icmFjZXNcbiAgdGhlbiBSZS5hbHQgKExpc3QubWFwIHRvX3JlIChleHBsb2RlIHMpKVxuICBlbHNlIHRvX3JlIHNcblxubGV0IGdsb2InID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5wZXJpb2Qgc1xuXG5sZXQgZ2xvYnggP2FuY2hvcmVkIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIHNcblxubGV0IGdsb2J4JyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIH5wZXJpb2Qgc1xuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwb3NpeF9jbGFzc19vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiYWxwaGFcIiAgLT4gUmUuYWxwaGFcbiAgfCBcImFsbnVtXCIgIC0+IFJlLmFsbnVtXG4gIHwgXCJhc2NpaVwiICAtPiBSZS5hc2NpaVxuICB8IFwiYmxhbmtcIiAgLT4gUmUuYmxhbmtcbiAgfCBcImNudHJsXCIgIC0+IFJlLmNudHJsXG4gIHwgXCJkaWdpdFwiICAtPiBSZS5kaWdpdFxuICB8IFwibG93ZXJcIiAgLT4gUmUubG93ZXJcbiAgfCBcInByaW50XCIgIC0+IFJlLnByaW50XG4gIHwgXCJzcGFjZVwiICAtPiBSZS5zcGFjZVxuICB8IFwidXBwZXJcIiAgLT4gUmUudXBwZXJcbiAgfCBcIndvcmRcIiAgIC0+IFJlLndvcmRjXG4gIHwgXCJwdW5jdFwiICAtPiBSZS5wdW5jdFxuICB8IFwiZ3JhcGhcIiAgLT4gUmUuZ3JhcGhcbiAgfCBcInhkaWdpdFwiIC0+IFJlLnhkaWdpdFxuICB8IGNsYXNzXyAgIC0+IGludmFsaWRfYXJnIChcIkludmFsaWQgcGNyZSBjbGFzczogXCIgXiBjbGFzc18pXG5cbmxldCBwb3NpeF9jbGFzc19zdHJpbmdzID1cbiAgWyBcImFscGhhXCIgOyBcImFsbnVtXCIgOyBcImFzY2lpXCJcbiAgOyBcImJsYW5rXCIgOyBcImNudHJsXCIgOyBcImRpZ2l0XCJcbiAgOyBcImxvd2VyXCIgOyBcInByaW50XCIgOyBcInNwYWNlXCJcbiAgOyBcInVwcGVyXCIgOyBcIndvcmRcIiAgOyBcInB1bmN0XCJcbiAgOyBcImdyYXBoXCIgOyBcInhkaWdpdFwiIF1cblxubGV0IHBhcnNlIG11bHRpbGluZSBkb2xsYXJfZW5kb25seSBkb3RhbGwgdW5ncmVlZHkgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0X3MgcycgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMnIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaiA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICB0cnkgaWYgcycuW2pdIDw+IHMuWyFpICsgal0gdGhlbiByYWlzZSBFeGl0XG4gICAgICAgIHdpdGggXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgaSA6PSAhaSArIGxlbjtcbiAgICAgIHRydWVcbiAgICB3aXRoIEV4aXQgLT4gZmFsc2UgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cbiAgbGV0IGdyZWVkeV9tb2QgciA9XG4gICAgbGV0IGdyID0gYWNjZXB0ICc/JyBpblxuICAgIGxldCBnciA9IGlmIHVuZ3JlZWR5IHRoZW4gbm90IGdyIGVsc2UgZ3IgaW5cbiAgICBpZiBnciB0aGVuIFJlLm5vbl9ncmVlZHkgciBlbHNlIFJlLmdyZWVkeSByXG4gIGluXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwMSByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIGdyZWVkeV9tb2QgKFJlLm9wdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBncmVlZHlfbW9kIChSZS5yZXBuIHIgaSBqKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIGRvdGFsbCB0aGVuIFJlLmFueSBlbHNlIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz8nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgclxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyMnIHRoZW4gYmVnaW5cbiAgICAgICAgICBjb21tZW50ICgpXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZSAoKSBpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIFJlLmdyb3VwIH5uYW1lIHJcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5lb2wgZWxzZSBpZiBkb2xsYXJfZW5kb25seSB0aGVuIFJlLmxlb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuKCogWFhYXG4gICAtIEJhY2stcmVmZXJlbmNlc1xuICAgLSBcXGN4IChjb250cm9sLXgpLCBcXGRkZFxuKilcbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3cnIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdXJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdzJyAtPlxuICAgICAgICAgIFJlLnNwYWNlXG4gICAgICB8ICdTJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5zcGFjZV1cbiAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgUmUuZGlnaXRcbiAgICAgIHwgJ0QnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmRpZ2l0XVxuICAgICAgfCAnYicgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgfCAnQicgLT5cbiAgICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIHwgJ0EnIC0+XG4gICAgICAgICAgUmUuYm9zXG4gICAgICB8ICdaJyAtPlxuICAgICAgICAgIFJlLmxlb2xcbiAgICAgIHwgJ3onIC0+XG4gICAgICAgICAgUmUuZW9zXG4gICAgICB8ICdHJyAtPlxuICAgICAgICAgIFJlLnN0YXJ0XG4gICAgICB8ICdlJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDFiJ1xuICAgICAgfCAnZicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgwYydcbiAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxuJ1xuICAgICAgfCAncicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHInXG4gICAgICB8ICd0JyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcdCdcbiAgICAgIHwgJ3gnIC0+XG4gICAgICAgICAgbGV0IGMxID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgYzIgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjb2RlID0gYzEgKiAxNiArIGMyIGluXG4gICAgICAgICAgUmUuY2hhciAoY2hhcl9vZl9pbnQgY29kZSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBjIC0+XG4gICAgICAgICAgUmUuY2hhciBjXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBoZXhkaWdpdCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnYScuLidmJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCAnQScuLidGJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBuYW1lICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onKSBhcyBjIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMzIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBuYW1lJyBiID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScpIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCAnPicgLT4gQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgIHwgYENoYXIgYyAtPlxuICAgICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICAgICAgICAgIGBDaGFyIGMnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgICAgIHwgYFNldCBzdCcgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHN0JyA6OiBzKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgICAgfCBgU2V0IHN0IC0+IGJyYWNrZXQgKHN0IDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICBpZiBhY2NlcHQgJzonIHRoZW5cbiAgICAgICAgbGV0IGNvbXBsID0gYWNjZXB0ICdeJyBpblxuICAgICAgICBsZXQgY2xzID1cbiAgICAgICAgICB0cnkgTGlzdC5maW5kIGFjY2VwdF9zIHBvc2l4X2NsYXNzX3N0cmluZ3NcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSBQYXJzZV9lcnJvciBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdF9zIFwiOl1cIikgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IHJlID1cbiAgICAgICAgICBsZXQgcG9zaXhfY2xhc3MgPSBwb3NpeF9jbGFzc19vZl9zdHJpbmcgY2xzIGluXG4gICAgICAgICAgaWYgY29tcGwgdGhlbiBSZS5jb21wbCBbcG9zaXhfY2xhc3NdIGVsc2UgcG9zaXhfY2xhc3MgaW5cbiAgICAgICAgYFNldCAocmUpXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgYENoYXIgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlIGlmIGMgPSAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBsZXQgYyA9IGdldCAoKSBpblxuKCogWFhYXG4gICBcXDEyNywgLi4uXG4qKVxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICdiJyAtPiBgQ2hhciAnXFwwMDgnXG4gICAgICB8ICduJyAtPiBgQ2hhciAnXFxuJyAoKlhYWCopXG4gICAgICB8ICdyJyAtPiBgQ2hhciAnXFxyJyAoKlhYWCopXG4gICAgICB8ICd0JyAtPiBgQ2hhciAnXFx0JyAoKlhYWCopXG4gICAgICB8ICd3JyAtPiBgU2V0IChSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdXJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ3MnIC0+IGBTZXQgKFJlLnNwYWNlKVxuICAgICAgfCAnUycgLT4gYFNldCAoUmUuY29tcGwgW1JlLnNwYWNlXSlcbiAgICAgIHwgJ2QnIC0+IGBTZXQgKFJlLmRpZ2l0KVxuICAgICAgfCAnRCcgLT4gYFNldCAoUmUuY29tcGwgW1JlLmRpZ2l0XSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlXG4gICAgICBgQ2hhciBjXG4gIGFuZCBjb21tZW50ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBpZiBhY2NlcHQgJyknIHRoZW4gUmUuZXBzaWxvbiBlbHNlIGJlZ2luIGluY3IgaTsgY29tbWVudCAoKSBlbmRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID1cbiAgWyBgVW5ncmVlZHkgfCBgRG90YWxsIHwgYERvbGxhcl9lbmRvbmx5XG4gIHwgYE11bHRpbGluZSB8IGBBbmNob3JlZCB8IGBDYXNlbGVzcyBdXG5cbmxldCByZSAgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9XG4gICAgcGFyc2VcbiAgICAgIChMaXN0Lm1lbXEgYE11bHRpbGluZSBvcHRzKSAoTGlzdC5tZW1xIGBEb2xsYXJfZW5kb25seSBvcHRzKVxuICAgICAgKExpc3QubWVtcSBgRG90YWxsIG9wdHMpIChMaXN0Lm1lbXEgYFVuZ3JlZWR5IG9wdHMpXG4gICAgICBzXG4gIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBBbmNob3JlZCBvcHRzIHRoZW4gUmUuc2VxIFtSZS5zdGFydDsgcl0gZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBDYXNlbGVzcyBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGVybC5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgPSBQZXJsLk5vdF9zdXBwb3J0ZWRcblxudHlwZSByZWdleHAgPSBSZS5yZVxuXG50eXBlIGZsYWcgPSBbIGBDQVNFTEVTUyB8IGBNVUxUSUxJTkUgfCBgQU5DSE9SRUQgfCBgRE9UQUxMIF1cblxudHlwZSBzcGxpdF9yZXN1bHQgPVxuICB8IFRleHQgIG9mIHN0cmluZ1xuICB8IERlbGltIG9mIHN0cmluZ1xuICB8IEdyb3VwIG9mIGludCAqIHN0cmluZ1xuICB8IE5vR3JvdXBcblxudHlwZSBncm91cHMgPSBDb3JlLkdyb3VwLnRcblxubGV0IHJlID8oZmxhZ3MgPSBbXSkgcGF0ID1cbiAgbGV0IG9wdHMgPSBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICB8IGBDQVNFTEVTUyAtPiBgQ2FzZWxlc3NcbiAgICB8IGBNVUxUSUxJTkUgLT4gYE11bHRpbGluZVxuICAgIHwgYEFOQ0hPUkVEIC0+IGBBbmNob3JlZFxuICAgIHwgYERPVEFMTCAtPiBgRG90YWxsXG4gICkgZmxhZ3MgaW5cbiAgUGVybC5yZSB+b3B0cyBwYXRcblxubGV0IHJlZ2V4cCA/ZmxhZ3MgcGF0ID0gUmUuY29tcGlsZSAocmUgP2ZsYWdzIHBhdClcblxubGV0IGV4dHJhY3QgfnJleCBzID1cbiAgUmUuR3JvdXAuYWxsIChSZS5leGVjIHJleCBzKVxuXG5sZXQgZXhlYyB+cmV4ID9wb3MgcyA9XG4gIFJlLmV4ZWMgcmV4ID9wb3Mgc1xuXG5sZXQgZ2V0X3N1YnN0cmluZyBzIGkgPVxuICBSZS5Hcm91cC5nZXQgcyBpXG5cbmxldCBuYW1lcyByZXggPVxuICBSZS5ncm91cF9uYW1lcyByZXhcbiAgfD4gTGlzdC5tYXAgZnN0XG4gIHw+IEFycmF5Lm9mX2xpc3RcblxubGV0IGdldF9uYW1lZF9zdWJzdHJpbmcgcmV4IG5hbWUgcyA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IChuLCBpKSA6OiByZW0gd2hlbiBuID0gbmFtZSAtPlxuICAgICAgIGJlZ2luXG4gICAgICAgICB0cnkgZ2V0X3N1YnN0cmluZyBzIGlcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGxvb3AgcmVtXG4gICAgICAgZW5kXG4gICAgfCBfIDo6IHJlbSAtPiBsb29wIHJlbVxuICBpblxuICBsb29wIChSZS5ncm91cF9uYW1lcyByZXgpXG5cbmxldCBnZXRfc3Vic3RyaW5nX29mcyBzIGkgPVxuICBSZS5Hcm91cC5vZmZzZXQgcyBpXG5cbmxldCBwbWF0Y2ggfnJleCBzID1cbiAgUmUuZXhlY3AgcmV4IHNcblxubGV0IHN1YnN0aXR1dGUgfnJleCB+c3Vic3Qgc3RyID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHBhdCA9IFJlLkdyb3VwLmdldCBzcyAwIGluXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN1YnN0IHBhdCk7XG4gICAgICBsb29wIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKTtcbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgIClcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB+cmV4IHN0ciA9XG4gIGxldCByZWMgbG9vcCBhY2N1IHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIExpc3QucmV2IGFjY3VcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApIGluXG4gIGxvb3AgW10gMFxuXG4oKiBGcm9tIFBDUkUgKilcbmxldCBzdHJpbmdfdW5zYWZlX3N1YiBzIG9mcyBsZW4gPVxuICBsZXQgciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgQnl0ZXMudW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChsZW4gbHNsIDEpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgfCAnXFxcXCcgfCAnXicgfCAnJCcgfCAnLicgfCAnWycgfCAnfCdcbiAgICB8ICcoJyAgfCAnKScgfCAnPycgfCAnKicgfCAnKycgfCAneycgYXMgYyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyAnXFxcXCc7XG4gICAgICBpbmNyIHBvcztcbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgICB8IGMgLT4gQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICBkb25lO1xuICBzdHJpbmdfdW5zYWZlX3N1YiBidWYgMCAhcG9zXG5cbmxldCBmdWxsX3NwbGl0ID8obWF4PTApIH5yZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA9IDAgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbVGV4dCBzXVxuICBlbHNlXG4gICAgbGV0IHJlc3VsdHMgPSBSZS5zcGxpdF9mdWxsIHJleCBzIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYFRleHQgcyAtPiBbVGV4dCBzXVxuICAgICAgICB8IGBEZWxpbSBkIC0+XG4gICAgICAgICAgbGV0IG1hdGNoZXMgPSBSZS5Hcm91cC5hbGxfb2Zmc2V0IGQgaW5cbiAgICAgICAgICBsZXQgZGVsaW0gPSBSZS5Hcm91cC5nZXQgZCAwIGluXG4gICAgICAgICAgKERlbGltIGRlbGltKTo6KFxuICAgICAgICAgICAgbGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggbWF0Y2hlcyAtIDEgZG9cbiAgICAgICAgICAgICAgbCA6PVxuICAgICAgICAgICAgICAgIChpZiBtYXRjaGVzLihpKSA9ICgtMSwgLTEpXG4gICAgICAgICAgICAgICAgIHRoZW4gTm9Hcm91cFxuICAgICAgICAgICAgICAgICBlbHNlIEdyb3VwIChpLCBSZS5Hcm91cC5nZXQgZCBpKSlcbiAgICAgICAgICAgICAgICA6OighbClcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBMaXN0LnJldiAhbCkpIHJlc3VsdHMgaW5cbiAgICBMaXN0LmNvbmNhdCBtYXRjaGVzXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxuKCpcbldoYXQgd2UgY291bGQgKHNob3VsZD8pIGRvOlxuLSBhKiA9PT4gbG9uZ2VzdCAoKHNob3J0ZXN0IChub19ncm91cCBhKSogKSwgYSB8ICgpKSAgKCEhISlcbi0gYWJjIHVuZGVyc3Rvb2QgYXMgKGFiKWNcbi0gXCIoKGE/KXxiKVwiIGFnYWluc3QgXCJhYlwiIHNob3VsZCBub3QgYmluZCB0aGUgZmlyc3Qgc3VicGF0dGVybiB0byBhbnl0aGluZ1xuXG5Ob3RlIHRoYXQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGhhbmRsZSBcIigoKGFiKWMpZCllXCIgZWZmaWNpZW50bHlcbiopXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIG5ld2xpbmUgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIFJlLnJlcG4gKFJlLm5lc3QgcikgaSBqXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLm5vdG5sIGVsc2UgUmUuYW55XG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgUmUuZ3JvdXAgclxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuZGlmZiAoUmUuY29tcGwgKGJyYWNrZXQgW10pKSAoUmUuY2hhciAnXFxuJylcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd8JyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICc/J1xuICAgICAgfCAnWycgfCAnLicgfCAnXicgfCAnJCcgfCAneycgfCAnXFxcXCcgYXMgYyAtPiBSZS5jaGFyIGNcbiAgICAgIHwgICAgICAgICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkICgqWFhYKilcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgY1xuICAgIGVuZCBlbHNlXG4gICAgICBjXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9IFtgSUNhc2UgfCBgTm9TdWIgfCBgTmV3bGluZV1cblxubGV0IHJlID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPSBwYXJzZSAoTGlzdC5tZW1xIGBOZXdsaW5lIG9wdHMpIHMgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYElDYXNlIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBOb1N1YiBvcHRzIHRoZW4gUmUubm9fZ3JvdXAgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSByZSA9IFJlLmNvbXBpbGUgKFJlLmxvbmdlc3QgcmUpXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMyBHYWJyaWVsIFJhZGFubmUgPGRydXB5b2crY2FtbEB6b2hvLmNvbT5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgdHlwZSAoLSdhLCAnYikgZnRcbiAgdmFsIGZtYXAgOiAoJ2EsICdiKSBmdCAtPiAnYSB0IC0+ICdiIHRcblxuICB0eXBlICdhIHRsaXN0XG4gIHZhbCBuaWwgOiB1bml0IC0+ICdhIHRsaXN0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSB0IC0+ICdhIHRsaXN0XG4gIHZhbCBjb25zIDogJ2EgdCAtPiAnYSB0bGlzdCAtPiAnYSB0bGlzdFxuICB2YWwgYXBwZW5kIDogJ2EgdGxpc3QgLT4gJ2EgdGxpc3QgLT4gJ2EgdGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIGZ0IC0+ICdhIHRsaXN0IC0+ICdiIHRsaXN0XG5lbmRcblxubW9kdWxlIHR5cGUgTm9XcmFwID1cbiAgVCB3aXRoIHR5cGUgJ2EgdCA9ICdhXG4gICAgIGFuZCB0eXBlICdhIHRsaXN0ID0gJ2EgbGlzdFxuICAgICBhbmQgdHlwZSAoLSdhLCAnYikgZnQgPSAnYSAtPiAnYlxuXG5tb2R1bGUgTm9XcmFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG4gIHR5cGUgJ2EgdGxpc3QgPSAnYSBsaXN0XG4gIHR5cGUgKC0nYSwgJ2IpIGZ0ID0gJ2EgLT4gJ2JcbiAgZXh0ZXJuYWwgcmV0dXJuIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGxldCBmbWFwIGYgOiAgJ2EgdCAtPiAnYiB0ID0gZlxuXG4gIGxldCBuaWwgKCkgPSBbXVxuICBsZXQgc2luZ2xldG9uIHggPSBbeF1cbiAgbGV0IGNvbnMgeCB4cyA9IHg6OnhzXG4gIGxldCBhcHBlbmQgeCB5PSB4QHlcbiAgbGV0IG1hcCA9IExpc3QubWFwXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggR2FicmllbCBSYWRhbm5lXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG50eXBlIG5hbWUgPSBzdHJpbmcgKiBzdHJpbmdcblxuKCoqIElucHV0ICopXG5cbnR5cGUgc2lnbmFsID0gW1xuICB8IGBDb21tZW50IG9mIHN0cmluZ1xuICB8IGBFbmRfZWxlbWVudFxuICB8IGBTdGFydF9lbGVtZW50IG9mIG5hbWUgKiAobmFtZSAqIHN0cmluZykgbGlzdFxuICB8IGBUZXh0IG9mIHN0cmluZyBsaXN0XG5dXG5cbmV4Y2VwdGlvbiBNYWxmb3JtZWRfc3RyZWFtXG5cbm1vZHVsZSBJbXBvcnRcbiAgICAoWG1sIDogWG1sX3NpZ3MuVClcbj0gc3RydWN0XG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIGEgYiAtPiBYbWwuVy4oY29ucyAocmV0dXJuIGEpIGIpKVxuICAgICAgbCAoWG1sLlcubmlsICgpKVxuXG4gIGxldCBta19hdHRyaWJzIGF0dHJzID1cbiAgICAoKiBUT0RPOiBUaGlzIGlzIG5vdCB2ZXJ5IHN0cnVjdHVyZWQgKilcbiAgICBsZXQgZiAoKF8sbmFtZSksIHYpID0gWG1sLnN0cmluZ19hdHRyaWIgbmFtZSAoWG1sLlcucmV0dXJuIHYpIGluXG4gICAgTGlzdC5tYXAgZiBhdHRyc1xuXG4gIGxldCByZWMgbWsgY2hpbGRyZW4gKHNlcSA6IHNpZ25hbCBTZXEudCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgQ29ucyAoYENvbW1lbnQgcywgcSkgLT5cbiAgICAgIG1rIChYbWwuY29tbWVudCBzIDo6IGNoaWxkcmVuKSBxXG4gICAgfCBDb25zIChgVGV4dCBzLCBxKSAtPlxuICAgICAgbWsgKExpc3QubWFwIChmdW4geCAtPiBYbWwucGNkYXRhIEBAIFhtbC5XLnJldHVybiB4KSBzIEAgY2hpbGRyZW4pIHFcbiAgICB8IENvbnMgKGBTdGFydF9lbGVtZW50ICgoXywgbmFtZSksIGF0dHJzKSwgcSkgLT5cbiAgICAgIGxldCBhID0gbWtfYXR0cmlicyBhdHRycyBpblxuICAgICAgbGV0IHN1Yl9jaGlsZHJlbiwgcmVzdCA9IG1rIFtdIHEgaW5cbiAgICAgIG1rIChYbWwubm9kZSB+YSBuYW1lIHN1Yl9jaGlsZHJlbiA6OiBjaGlsZHJlbikgcmVzdFxuICAgIHwgQ29ucyAoYEVuZF9lbGVtZW50LCByZXN0KSAtPlxuICAgICAgb2ZfbGlzdCAoTGlzdC5yZXYgY2hpbGRyZW4pLCByZXN0XG4gICAgfCBOaWwgLT5cbiAgICAgIG9mX2xpc3QgKExpc3QucmV2IGNoaWxkcmVuKSwgU2VxLmVtcHR5XG5cbiAgbGV0IG9mX3NlcSBzZXEgPVxuICAgIGxldCBsLCByZXN0ID0gbWsgW10gc2VxIGluXG4gICAgbWF0Y2ggcmVzdCAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IGxcbiAgICB8IF8gLT4gcmFpc2UgTWFsZm9ybWVkX3N0cmVhbVxuXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDggVmluY2VudCBCYWxhdCwgTWF1cmljaW8gRmVybmFuZGV6XG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbmxldCBpc19jb250cm9sIGMgPVxuICBsZXQgY2MgPSBDaGFyLmNvZGUgYyBpblxuICAoY2MgPD0gOCB8fCBjYyA9IDExIHx8IGNjID0gMTIgfHwgKDE0IDw9IGNjICYmIGNjIDw9IDMxKSB8fCBjYyA9IDEyNylcblxubGV0IGFkZF91bnNhZmVfY2hhciBiID0gZnVuY3Rpb25cbiAgfCAnPCcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZsdDtcIlxuICB8ICc+JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmd0O1wiXG4gIHwgJ1wiJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJnF1b3Q7XCJcbiAgfCAnJicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgfCBjIHdoZW4gaXNfY29udHJvbCBjIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjXCIgO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9pbnQgKENoYXIuY29kZSBjKSkgO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI7XCJcbiAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcblxubGV0IGVuY29kZV91bnNhZmVfY2hhciBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gIFN0cmluZy5pdGVyIChhZGRfdW5zYWZlX2NoYXIgYikgcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGVuY29kZV91bnNhZmVfY2hhcl9hbmRfYXQgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBsZXQgZiA9IGZ1bmN0aW9uXG4gICAgfCAnQCcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjNjQ7XCJcbiAgICB8IGMgLT4gYWRkX3Vuc2FmZV9jaGFyIGIgY1xuICBpblxuICBTdHJpbmcuaXRlciBmIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBjb21wb3NlX2RlY2wgPyh2ZXJzaW9uID0gXCIxLjBcIikgPyhlbmNvZGluZyA9IFwiVVRGLThcIikgKCkgPVxuICBGb3JtYXQuc3ByaW50ZlxuICAgIHt8PD94bWwgdmVyc2lvbj1cIiVzXCIgZW5jb2Rpbmc9XCIlc1wiPz5cXG58fVxuICAgIHZlcnNpb24gZW5jb2RpbmdcblxubGV0IGNvbXBvc2VfZG9jdHlwZSBkdCBhcmdzID1cbiAgbGV0IHBwX2FyZ3MgZm10ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBsIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIgUFVCTElDICVhXCJcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXA6Rm9ybWF0LnBwX3ByaW50X3NwYWNlXG4gICAgICAgICAgIChmdW4gZm10IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIikpXG4gICAgICAgIGxcbiAgaW5cbiAgRm9ybWF0LmFzcHJpbnRmXG4gICAgXCI8IURPQ1RZUEUgJXMlYT5cIlxuICAgIGR0XG4gICAgcHBfYXJncyBhcmdzXG5cbmxldCByZV9lbmRfY29tbWVudCA9IFJlLihjb21waWxlIEBAIGFsdCBbXG4gIHNlcSBbIGJvcyA7IHN0ciBcIj5cIiBdIDtcbiAgc2VxIFsgYm9zIDsgc3RyIFwiLT5cIiBdIDtcbiAgc3RyIFwiLS0+XCIgO1xuICBzdHIgXCItLSE+XCIgO1xuXSlcbmxldCBlc2NhcGVfY29tbWVudCBzID1cbiAgbGV0IGYgZyA9IG1hdGNoIFJlLkdyb3VwLmdldCBnIDAgd2l0aFxuICAgIHwgXCI+XCIgLT4gXCImZ3Q7XCJcbiAgICB8IFwiLT5cIiAtPiBcIi0mZ3Q7XCJcbiAgICB8IFwiLS0+XCIgLT4gXCItLSZndDtcIlxuICAgIHwgXCItLSE+XCIgLT4gXCItLSEmZ3Q7XCJcbiAgICB8IHMgLT4gc1xuICBpblxuICBSZS5yZXBsYWNlIH5hbGw6dHJ1ZSByZV9lbmRfY29tbWVudCB+ZiBzXG5cbigqIGNvcGllZCBmb3JtIGpzX29mX29jYW1sOiBjb21waWxlci9qYXZhc2NyaXB0Lm1sICopXG5sZXQgcHBfbnVtYmVyIGZtdCB2ID1cbiAgaWYgdiA9IGluZmluaXR5XG4gIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJJbmZpbml0eVwiXG4gIGVsc2UgaWYgdiA9IG5lZ19pbmZpbml0eVxuICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiLUluZmluaXR5XCJcbiAgZWxzZSBpZiB2IDw+IHZcbiAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5hTlwiXG4gIGVsc2VcbiAgICBsZXQgdmludCA9IGludF9vZl9mbG9hdCB2IGluXG4gICAgKCogY29tcGlsZXIgMTAwMCBpbnRvIDFlMyAqKVxuICAgIGlmIGZsb2F0X29mX2ludCB2aW50ID0gdlxuICAgIHRoZW5cbiAgICAgIGxldCByZWMgZGl2IG4gaSA9XG4gICAgICAgIGlmIG4gPD4gMCAmJiBuIG1vZCAxMCA9IDBcbiAgICAgICAgdGhlbiBkaXYgKG4vMTApIChzdWNjIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgaWYgaSA+IDJcbiAgICAgICAgdGhlbiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZGUlZFwiIG4gaVxuICAgICAgICBlbHNlIEZvcm1hdC5wcF9wcmludF9pbnQgZm10IHZpbnQgaW5cbiAgICAgIGRpdiB2aW50IDBcbiAgICBlbHNlXG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTJnXCIgdiBpblxuICAgICAgaWYgdiA9IGZsb2F0X29mX3N0cmluZyBzMVxuICAgICAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzMVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgczIgPSBQcmludGYuc3ByaW50ZiBcIiUuMTVnXCIgdiBpblxuICAgICAgICBpZiB2ID0gZmxvYXRfb2Zfc3RyaW5nIHMyXG4gICAgICAgIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgczJcbiAgICAgICAgZWxzZSAgRm9ybWF0LmZwcmludGYgZm10IFwiJS4xOGdcIiB2XG5cbmxldCBzdHJpbmdfb2ZfbnVtYmVyIHYgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwX251bWJlciB2XG5cbm1vZHVsZSBVdGY4ID0gc3RydWN0XG4gIHR5cGUgdXRmOCA9IHN0cmluZ1xuXG4gIGxldCBub3JtYWxpemUgc3JjID1cbiAgICBsZXQgd2FybiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHNyYykgaW5cbiAgICBVdXRmLlN0cmluZy5mb2xkX3V0Zl84XG4gICAgICAoZnVuIF8gXyBkIC0+XG4gICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgIHwgYFVjaGFyIGNvZGUgLT4gVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciBjb2RlXG4gICAgICAgICB8IGBNYWxmb3JtZWQgXyAtPlxuICAgICAgICAgICAgICAgVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciBVdXRmLnVfcmVwO1xuICAgICAgICAgICAgICAgd2Fybjo9dHJ1ZSlcbiAgICAgICgpIHNyYztcbiAgICAoQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlciwgIXdhcm4pXG5cbiAgbGV0IG5vcm1hbGl6YXRpb25fbmVlZGVkIHNyYyA9XG4gICAgbGV0IHJlYyBsb29wIHNyYyBpIGwgPVxuICAgICAgaSA8IGwgJiZcbiAgICAgIG1hdGNoIHNyYy5baV0gd2l0aFxuICAgICAgKCogQ2hhcmFjdGVycyB0aGF0IG5lZWQgdG8gYmUgZW5jb2RlZCBpbiBIVE1MICopXG4gICAgICB8ICdcXDAzNCcgfCAnXFwwMzgnIHwgJ1xcMDYwJyB8J1xcMDYyJyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICgqIEFTQ0lJIGNoYXJhY3RlcnMgKilcbiAgICAgIHwgJ1xcMDA5JyB8ICdcXDAxMCcgfCAnXFwwMTMnIHwgJ1xcMDMyJy4uJ1xcMTI2JyAtPlxuICAgICAgICAgIGxvb3Agc3JjIChpICsgMSkgbFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCBzcmMgMCAoU3RyaW5nLmxlbmd0aCBzcmMpXG5cbiAgbGV0IG5vcm1hbGl6ZV9odG1sIHNyYyA9XG4gICAgaWYgbm9ybWFsaXphdGlvbl9uZWVkZWQgc3JjIHRoZW4gYmVnaW5cbiAgICAgIGxldCB3YXJuID0gcmVmIGZhbHNlIGluXG4gICAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzcmMpIGluXG4gICAgICBVdXRmLlN0cmluZy5mb2xkX3V0Zl84XG4gICAgICAgIChmdW4gXyBfIGQgLT5cbiAgICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICAgIHwgYFVjaGFyIHUgLT5cbiAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgICAgICAgICAgICAgIHwgMzQgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImcXVvdDtcIlxuICAgICAgICAgICAgICAgfCAzOCAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZhbXA7XCJcbiAgICAgICAgICAgICAgIHwgNjAgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImbHQ7XCJcbiAgICAgICAgICAgICAgIHwgNjIgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImZ3Q7XCJcbiAgICAgICAgICAgICAgIHwgY29kZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCB1ID1cbiAgICAgICAgICAgICAgICAgICAgICgqIElsbGVnYWwgY2hhcmFjdGVycyBpbiBodG1sXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NoYXJhY3Rlcl9lbmNvZGluZ3NfaW5fSFRNTFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwgKilcbiAgICAgICAgICAgICAgICAgICAgIGlmICgqIEEuIGNvbnRyb2wgQzAgKilcbiAgICAgICAgICAgICAgICAgICAgICAgKGNvZGUgPD0gMzEgJiYgY29kZSA8PiA5ICYmIGNvZGUgPD4gMTAgJiYgY29kZSA8PiAxMylcbiAgICAgICAgICAgICAgICAgICAgICAgKCogQi4gREVMICsgY29udHJvbCBDMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAtIGludmFsaWQgaW4gaHRtbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtIGRpc2NvdXJhZ2VkIGluIHhtbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IDB4ODUgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGxldCdzIGRpc2NhcmQgaXQgYW55d2F5ICopXG4gICAgICAgICAgICAgICAgICAgICAgIHx8IChjb2RlID49IDEyNyAmJiBjb2RlIDw9IDE1OSlcbiAgICAgICAgICAgICAgICAgICAgICAgKCogQy4gVVRGLTE2IHN1cnJvZ2F0ZSBoYWx2ZXMgOiBhbHJlYWR5IGRpc2NhcmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBieSB1dXRmIHx8IChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REZGRikgKilcbiAgICAgICAgICAgICAgICAgICAgICAgKCogRC4gQk9NIHJlbGF0ZWQgKilcbiAgICAgICAgICAgICAgICAgICAgICAgfHwgY29kZSBsYW5kIDB4RkZGRiA9IDB4RkZGRVxuICAgICAgICAgICAgICAgICAgICAgICB8fCBjb2RlIGxhbmQgMHhGRkZGID0gMHhGRkZGXG4gICAgICAgICAgICAgICAgICAgICB0aGVuICh3YXJuOj10cnVlOyBVdXRmLnVfcmVwKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZSB1XG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIHVcbiAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICB8IGBNYWxmb3JtZWQgXyAtPlxuICAgICAgICAgICAgICAgVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciBVdXRmLnVfcmVwO1xuICAgICAgICAgICAgICAgd2Fybjo9dHJ1ZSlcbiAgICAgICAgKCkgc3JjO1xuICAgICAgKEJ1ZmZlci5jb250ZW50cyBidWZmZXIsICF3YXJuKVxuICAgIGVuZCBlbHNlXG4gICAgICAoc3JjLCBmYWxzZSlcblxuZW5kXG5cbm1vZHVsZSB0eXBlIFRhZ0xpc3QgPSBzaWcgdmFsIGVtcHR5dGFncyA6IHN0cmluZyBsaXN0IGVuZFxuXG4oKiogRm9ybWF0IGJhc2VkIHByaW50ZXJzICopXG5cbmxldCBwcF9ub29wIF9mbXQgXyA9ICgpXG5cbm1vZHVsZSBNYWtlX2ZtdFxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoSSA6IFRhZ0xpc3QpID1cbnN0cnVjdFxuICBvcGVuIFhtbFxuXG4gIGxldCBvcGVuX2JveCBpbmRlbnQgZm10ID0gaWYgaW5kZW50IHRoZW4gRm9ybWF0LnBwX29wZW5fYm94IGZtdCAwIGVsc2UgKClcbiAgbGV0IGNsb3NlX2JveCBpbmRlbnQgZm10ID0gaWYgaW5kZW50IHRoZW4gRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCkgZWxzZSAoKVxuICBsZXQgc3AgaW5kZW50IGZtdCA9XG4gICAgaWYgaW5kZW50IHRoZW4gRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKSBlbHNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiXG4gIGxldCBjdXQgaW5kZW50IGZtdCA9XG4gICAgaWYgaW5kZW50IHRoZW4gRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCkgZWxzZSAoKVxuXG4gIG1vZHVsZSBTID0gU2V0Lk1ha2UoU3RyaW5nKVxuICBsZXQgaXNfZW1wdHl0YWcgPSBtYXRjaCBJLmVtcHR5dGFncyB3aXRoXG4gICAgfCBbXSAtPiBmdW4gXyAtPiBmYWxzZVxuICAgIHwgbCAtPlxuICAgICAgbGV0IHNldCA9IExpc3QuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IFMuYWRkIHggcykgUy5lbXB0eSBsIGluXG4gICAgICBmdW4geCAtPiBTLm1lbSB4IHNldFxuXG4gIGxldCBwcF9lbmNvZGUgZW5jb2RlIGluZGVudCBmbXQgcyA9XG4gICAgbGV0IHMgPSBlbmNvZGUgcyBpblxuICAgIGlmIGluZGVudCB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWyVhQF1cIiBGb3JtYXQucHBfcHJpbnRfdGV4dCBzXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgc1xuXG4gIGxldCBwcF9zZXAgaW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IFNwYWNlIC0+IGZ1biBmbXQgKCkgLT4gc3AgaW5kZW50IGZtdFxuICAgIHwgQ29tbWEgLT4gZnVuIGZtdCAoKSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIsJXRcIiAoc3AgaW5kZW50KVxuXG4gIGxldCBwcF9hdHRyaWJfdmFsdWUgZW5jb2RlIGluZGVudCBmbXQgYSA9IG1hdGNoIGFjb250ZW50IGEgd2l0aFxuICAgIHwgQUZsb2F0IGYgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVhXFxcIlwiIHBwX251bWJlciBmXG4gICAgfCBBSW50IGkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVkXFxcIlwiIGlcbiAgICB8IEFTdHIgcyAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIgKGVuY29kZSBzKVxuICAgIHwgQVN0ckwgKHNlcCwgc2xpc3QpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJWFcXFwiXCJcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXA6KHBwX3NlcCBpbmRlbnQgc2VwKVxuICAgICAgICAgICAocHBfZW5jb2RlIGVuY29kZSBpbmRlbnQpKSBzbGlzdFxuXG4gIGxldCBwcF9hdHRyaWIgZW5jb2RlIGluZGVudCBmbXQgYSA9XG4gICAgRm9ybWF0LmZwcmludGYgZm10XG4gICAgICBcIiV0JXM9JWFcIiAoc3AgaW5kZW50KSAoYW5hbWUgYSkgKHBwX2F0dHJpYl92YWx1ZSBlbmNvZGUgaW5kZW50KSBhXG5cbiAgbGV0IHBwX2F0dHJpYnMgZW5jb2RlIGluZGVudCA9XG4gICAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcDpwcF9ub29wIChwcF9hdHRyaWIgZW5jb2RlIGluZGVudClcblxuICBsZXQgcHBfdGFnX2FuZF9hdHRyaWJzIGVuY29kZSBpbmRlbnQgZm10ICh0YWcsIGF0dHJzKSA9XG4gICAgb3Blbl9ib3ggaW5kZW50IGZtdCA7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXMlYSV0XCIgdGFnIChwcF9hdHRyaWJzIGVuY29kZSBpbmRlbnQpIGF0dHJzIChjdXQgaW5kZW50KTtcbiAgICBjbG9zZV9ib3ggaW5kZW50IGZtdFxuXG4gIGxldCBwcF9jbG9zZWR0YWcgZW5jb2RlIGluZGVudCBmbXQgdGFnIGF0dHJzID1cbiAgICBpZiBpc19lbXB0eXRhZyB0YWcgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCVhLz5cIiAocHBfdGFnX2FuZF9hdHRyaWJzIGVuY29kZSBpbmRlbnQpICh0YWcsIGF0dHJzKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIG9wZW5fYm94IGluZGVudCBmbXQgO1xuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCVhPiV0PC8lcz5cIlxuICAgICAgICAocHBfdGFnX2FuZF9hdHRyaWJzIGVuY29kZSBpbmRlbnQpICh0YWcsIGF0dHJzKVxuICAgICAgICAoY3V0IGluZGVudClcbiAgICAgICAgdGFnIDtcbiAgICAgIGNsb3NlX2JveCBpbmRlbnQgZm10XG4gICAgZW5kXG5cbiAgbGV0IHJlYyBwcF90YWcgZW5jb2RlIGluZGVudCBmbXQgdGFnIGF0dHJzIGNoaWxkcmVuID1cbiAgICBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgfCBbXSAtPiBwcF9jbG9zZWR0YWcgZW5jb2RlIGluZGVudCBmbXQgdGFnIGF0dHJzXG4gICAgfCBfIC0+XG4gICAgICBvcGVuX2JveCBpbmRlbnQgZm10IDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwldCVhPiV0JWEldCV0PC8lcz5cIlxuICAgICAgICAob3Blbl9ib3ggaW5kZW50KVxuICAgICAgICAocHBfdGFnX2FuZF9hdHRyaWJzIGVuY29kZSBpbmRlbnQpICh0YWcsIGF0dHJzKVxuICAgICAgICAoY3V0IGluZGVudClcbiAgICAgICAgKHBwX2VsdHMgZW5jb2RlIGluZGVudCkgY2hpbGRyZW5cbiAgICAgICAgKGNsb3NlX2JveCBpbmRlbnQpXG4gICAgICAgIChjdXQgaW5kZW50KVxuICAgICAgICB0YWcgO1xuICAgICAgY2xvc2VfYm94IGluZGVudCBmbXRcblxuICBhbmQgcHBfZWx0IGVuY29kZSBpbmRlbnQgZm10IGVsdCA9IG1hdGNoIGNvbnRlbnQgZWx0IHdpdGhcbiAgICB8IENvbW1lbnQgdGV4dGUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwhLS0lcy0tPlwiIChlc2NhcGVfY29tbWVudCB0ZXh0ZSlcblxuICAgIHwgRW50aXR5IGUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiYlcztcIiBlXG5cbiAgICB8IFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgcHBfZW5jb2RlIGVuY29kZSBpbmRlbnQgZm10IHRleHRlXG5cbiAgICB8IEVuY29kZWRQQ0RBVEEgdGV4dGUgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHRleHRlXG5cbiAgICB8IE5vZGUgKG5hbWUsIHhoX2F0dHJzLCB4aF90YWdsaXN0KSAtPlxuICAgICAgcHBfdGFnIGVuY29kZSBpbmRlbnQgZm10IG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdFxuXG4gICAgfCBMZWFmIChuYW1lLCB4aF9hdHRycykgLT5cbiAgICAgIHBwX2Nsb3NlZHRhZyBlbmNvZGUgaW5kZW50IGZtdCBuYW1lIHhoX2F0dHJzXG5cbiAgICB8IEVtcHR5IC0+ICgpXG5cbiAgYW5kIHBwX2VsdHMgZW5jb2RlIGluZGVudCA9XG4gICAgRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gY3V0IGluZGVudCBmbXQpXG4gICAgICAocHBfZWx0IGVuY29kZSBpbmRlbnQpXG5cbiAgbGV0IHBwID8oZW5jb2RlPWVuY29kZV91bnNhZmVfY2hhcikgPyhpbmRlbnQ9ZmFsc2UpICgpID1cbiAgICBwcF9lbHQgZW5jb2RlIGluZGVudFxuXG5lbmRcblxubW9kdWxlIE1ha2VfdHlwZWRfZm10XG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChUeXBlZF94bWwgOiBYbWxfc2lncy5UeXBlZF94bWwgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFAgPSBNYWtlX2ZtdChYbWwpKFR5cGVkX3htbC5JbmZvKVxuXG4gICgqIEFkZCBhbiB4bWxucyB0YWcgb24gdGhlIGh0bWwgZWxlbWVudCBpZiBpdCdzIG5vdCBhbHJlYWR5IHByZXNlbnQgKilcbiAgbGV0IHByZXBhcmVfZG9jdW1lbnQgZG9jID1cbiAgICBsZXQgZG9jID0gVHlwZWRfeG1sLmRvY190b2VsdCBkb2MgaW5cbiAgICBtYXRjaCBYbWwuY29udGVudCBkb2Mgd2l0aFxuICAgIHwgWG1sLk5vZGUgKG4sIGEsIGMpIC0+XG4gICAgICBsZXQgYSA9XG4gICAgICAgIGlmIExpc3QuZXhpc3RzIChmdW4gYSAtPiBYbWwuYW5hbWUgYSA9IFwieG1sbnNcIikgYVxuICAgICAgICB0aGVuIGFcbiAgICAgICAgZWxzZSBYbWwuc3RyaW5nX2F0dHJpYiBcInhtbG5zXCIgVHlwZWRfeG1sLkluZm8ubmFtZXNwYWNlIDo6IGFcbiAgICAgIGluXG4gICAgICBYbWwubm9kZSB+YSBuIGNcbiAgICB8IF8gLT4gZG9jXG5cbiAgbGV0IHBwX2VsdCA/KGVuY29kZT1lbmNvZGVfdW5zYWZlX2NoYXIpID8oaW5kZW50PWZhbHNlKSAoKSBmbXQgZm9yZXQgPVxuICAgIFAucHBfZWx0IGVuY29kZSBpbmRlbnQgZm10IChUeXBlZF94bWwudG9lbHQgZm9yZXQpXG5cbiAgbGV0IHBwID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGluZGVudD1mYWxzZSkgP2FkdmVydCAoKSBmbXQgZG9jID1cbiAgICBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCAwIDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlc0AsXCIgVHlwZWRfeG1sLkluZm8uZG9jdHlwZSA7XG5cbiAgICBiZWdpbiBtYXRjaCBhZHZlcnQgd2l0aFxuICAgICAgfCBTb21lIHMgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiPCEtLSAlcyAtLT5ALFwiIHNcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGVuZCA7XG5cbiAgICBQLnBwX2VsdCBlbmNvZGUgaW5kZW50IGZtdCAocHJlcGFyZV9kb2N1bWVudCBkb2MpIDtcbiAgICBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKTtcblxuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChJIDogVGFnTGlzdClcbiAgICAoTyA6IFhtbF9zaWdzLk91dHB1dCkgPVxuc3RydWN0XG5cbiAgbGV0ICgrKykgPSBPLmNvbmNhdFxuXG4gIG9wZW4gWG1sXG5cbiAgbGV0IHNlcGFyYXRvcl90b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3BhY2UgLT4gXCIgXCJcbiAgICB8IENvbW1hIC0+IFwiLCBcIlxuXG4gIGxldCBhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIGVuY29kZSBhID0gbWF0Y2ggYWNvbnRlbnQgYSB3aXRoXG4gICAgfCBBRmxvYXQgZiAtPiBQcmludGYuc3ByaW50ZiBcIlxcXCIlc1xcXCJcIiAoc3RyaW5nX29mX251bWJlciBmKVxuICAgIHwgQUludCBpIC0+IFByaW50Zi5zcHJpbnRmIFwiXFxcIiVkXFxcIlwiIGlcbiAgICB8IEFTdHIgcyAtPiBQcmludGYuc3ByaW50ZiBcIlxcXCIlc1xcXCJcIiAoZW5jb2RlIHMpXG4gICAgfCBBU3RyTCAoc2VwLCBzbGlzdCkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiXFxcIiVzXFxcIlwiXG4gICAgICAgIChlbmNvZGUgKFN0cmluZy5jb25jYXQgKHNlcGFyYXRvcl90b19zdHJpbmcgc2VwKSBzbGlzdCkpXG5cbiAgbGV0IGF0dHJpYl90b19zdHJpbmcgZW5jb2RlIGEgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXM9JXNcIiAoYW5hbWUgYSkgKGF0dHJpYl92YWx1ZV90b19zdHJpbmcgZW5jb2RlIGEpXG5cbiAgbGV0IHJlYyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnMgPSBtYXRjaCBhdHRycyB3aXRoXG4gICAgfCBbXSAtPiBPLmVtcHR5XG4gICAgfCBhdHRyOjpxdWV1ZSAtPlxuICAgICAgTy5wdXQgKFwiIFwiXiBhdHRyaWJfdG9fc3RyaW5nIGVuY29kZSBhdHRyKVxuICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIHF1ZXVlXG5cbiAgYW5kIHhoX3ByaW50X2Nsb3NlZHRhZyBlbmNvZGUgdGFnIGF0dHJzID1cbiAgICBpZiBJLmVtcHR5dGFncyA9IFtdIHx8IExpc3QubWVtIHRhZyBJLmVtcHR5dGFnc1xuICAgIHRoZW5cbiAgICAgIChPLnB1dCAoXCI8XCJedGFnKVxuICAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRyc1xuICAgICAgICsrIE8ucHV0IFwiIC8+XCIpXG4gICAgZWxzZVxuICAgICAgKE8ucHV0IChcIjxcIl50YWcpXG4gICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzXG4gICAgICAgKysgTy5wdXQgKFwiPjwvXCJedGFnXlwiPlwiKSlcblxuICBhbmQgeGhfcHJpbnRfdGFnIGVuY29kZSB0YWcgYXR0cnMgdGFnbGlzdCA9XG4gICAgaWYgdGFnbGlzdCA9IFtdXG4gICAgdGhlbiB4aF9wcmludF9jbG9zZWR0YWcgZW5jb2RlIHRhZyBhdHRyc1xuICAgIGVsc2VcbiAgICAgIChPLnB1dCAoXCI8XCJedGFnKVxuICAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRyc1xuICAgICAgICsrIE8ucHV0IFwiPlwiXG4gICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgdGFnbGlzdFxuICAgICAgICsrIE8ucHV0IChcIjwvXCJedGFnXlwiPlwiKSlcblxuICBhbmQgcHJpbnRfbm9kZXMgZW5jb2RlIG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdCBxdWV1ZSA9XG4gICAgeGhfcHJpbnRfdGFnIGVuY29kZSBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3RcbiAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gIGFuZCB4aF9wcmludF90YWdsaXN0IGVuY29kZSB0YWdsaXN0ID1cbiAgICBtYXRjaCB0YWdsaXN0IHdpdGhcblxuICAgIHwgW10gLT4gTy5lbXB0eVxuXG4gICAgfCBlbHQgOjogcXVldWUgLT4gbWF0Y2ggY29udGVudCBlbHQgd2l0aFxuXG4gICAgICB8IENvbW1lbnQgdGV4dGUgLT5cbiAgICAgICAgTy5wdXQgKFwiPCEtLVwiXihlbmNvZGUgdGV4dGUpXlwiLS0+XCIpXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgRW50aXR5IGUgLT5cbiAgICAgICAgTy5wdXQgKFwiJlwiXmVeXCI7XCIpICgqIG5vIGVuY29kaW5nICopXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgUENEQVRBIHRleHRlIC0+XG4gICAgICAgIE8ucHV0IChlbmNvZGUgdGV4dGUpXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgRW5jb2RlZFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgICBPLnB1dCB0ZXh0ZVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IE5vZGUgKG5hbWUsIHhoX2F0dHJzLCB4aF90YWdsaXN0KSAtPlxuICAgICAgICBwcmludF9ub2RlcyBlbmNvZGUgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0IHF1ZXVlXG5cbiAgICAgIHwgTGVhZiAobmFtZSwgeGhfYXR0cnMpIC0+XG4gICAgICAgIHByaW50X25vZGVzIGVuY29kZSBuYW1lIHhoX2F0dHJzIFtdIHF1ZXVlXG5cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICBsZXQgcHJpbnRfbGlzdCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgZm9yZXQgPVxuICAgIE8ubWFrZSAoeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgZm9yZXQpXG5cbmVuZFxuXG5tb2R1bGUgTWFrZV90eXBlZFxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoVHlwZWRfeG1sIDogWG1sX3NpZ3MuVHlwZWRfeG1sIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpXG4gICAgKE8gOiBYbWxfc2lncy5PdXRwdXQpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBQID0gTWFrZShYbWwpKFR5cGVkX3htbC5JbmZvKShPKVxuICBsZXQgKCsrKSA9IE8uY29uY2F0XG5cbiAgbGV0IHByaW50X2xpc3QgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpIGZvcmV0ID1cbiAgICBPLm1ha2UgKFAueGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgKExpc3QubWFwIFR5cGVkX3htbC50b2VsdCBmb3JldCkpXG5cbiAgbGV0IHByaW50ID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGFkdmVydCA9IFwiXCIpIGRvYyA9XG4gICAgbGV0IGRvYyA9IFR5cGVkX3htbC5kb2NfdG9lbHQgZG9jIGluXG4gICAgbGV0IGRvYyA9IG1hdGNoIFhtbC5jb250ZW50IGRvYyB3aXRoXG4gICAgICB8IFhtbC5Ob2RlIChuLCBhLCBjKSAtPlxuICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1biBhIC0+IFhtbC5hbmFtZSBhID0gXCJ4bWxuc1wiKSBhXG4gICAgICAgICAgdGhlbiBhXG4gICAgICAgICAgZWxzZSBYbWwuc3RyaW5nX2F0dHJpYiBcInhtbG5zXCIgVHlwZWRfeG1sLkluZm8ubmFtZXNwYWNlIDo6IGFcbiAgICAgICAgaW5cbiAgICAgICAgWG1sLm5vZGUgfmEgbiBjXG4gICAgICB8IF8gLT4gZG9jIGluXG4gICAgTy5tYWtlXG4gICAgICAoTy5wdXQgVHlwZWRfeG1sLkluZm8uZG9jdHlwZVxuICAgICAgICsrIE8ucHV0IChpZiBhZHZlcnQgPD4gXCJcIiB0aGVuIChcIjwhLS0gXCIgXiBhZHZlcnQgXiBcIiAtLT5cXG5cIikgZWxzZSBcIlxcblwiKVxuICAgICAgICsrIFAueGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgW2RvY10pXG5cbmVuZFxuXG5tb2R1bGUgU2ltcGxlX291dHB1dChNIDogc2lnIHZhbCBwdXQ6IHN0cmluZyAtPiB1bml0IGVuZCkgPSBzdHJ1Y3RcbiAgdHlwZSBvdXQgPSB1bml0XG4gIHR5cGUgbSA9IHVuaXQgLT4gdW5pdFxuICBsZXQgZW1wdHkgKCkgPSAoKVxuICBsZXQgY29uY2F0IGYxIGYyICgpID0gZjEgKCk7IGYyICgpXG4gIGxldCBwdXQgcyAoKSA9IE0ucHV0IHNcbiAgbGV0IG1ha2UgZiA9IGYgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV9zaW1wbGVcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKEkgOiBUYWdMaXN0KSA9XG5zdHJ1Y3RcblxuICBsZXQgcHJpbnRfbGlzdCB+b3V0cHV0ID1cbiAgICBsZXQgbW9kdWxlIE0gPSBNYWtlKFhtbCkoSSkoU2ltcGxlX291dHB1dChzdHJ1Y3QgbGV0IHB1dCA9IG91dHB1dCBlbmQpKSBpblxuICAgIE0ucHJpbnRfbGlzdFxuXG5lbmRcblxubW9kdWxlIE1ha2VfdHlwZWRfc2ltcGxlXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChUeXBlZF94bWwgOiBYbWxfc2lncy5UeXBlZF94bWwgd2l0aCAgbW9kdWxlIFhtbCA6PSBYbWwpID1cbnN0cnVjdFxuXG4gIGxldCBwcmludF9saXN0IH5vdXRwdXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBNYWtlX3R5cGVkKFhtbCkoVHlwZWRfeG1sKShTaW1wbGVfb3V0cHV0KHN0cnVjdCBsZXQgcHV0ID0gb3V0cHV0IGVuZCkpIGluXG4gICAgTS5wcmludF9saXN0XG5cbiAgbGV0IHByaW50IH5vdXRwdXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBNYWtlX3R5cGVkKFhtbCkoVHlwZWRfeG1sKShTaW1wbGVfb3V0cHV0KHN0cnVjdCBsZXQgcHV0ID0gb3V0cHV0IGVuZCkpIGluXG4gICAgTS5wcmludFxuXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGhvcnN0ZW4gT2hsIDxvaGxAcGh5c2lrLnVuaS13dWVyemJ1cmcuZGU+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNYWtlKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKSA9IHN0cnVjdFxuXG4gIG9wZW4gWG1sXG5cbiAgKCoqIEl0ZXJhdG9ycyAqKVxuXG4gIGxldCBhbWFwMSBmIG4gPVxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCBFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8gLT4gblxuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT4gbGVhZiB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWVcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+IG5vZGUgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lIGVsdHNcblxuICBsZXQgcmVjIGFtYXAgZiBuID1cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfIC0+IG5cbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+IGxlYWYgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgbm9kZSB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWUgKExpc3QubWFwIChhbWFwIGYpIGVsdHMpXG5cbiAgbGV0IHJlYyBhZGRfZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW2Zsb2F0X2F0dHJpYiBuYW1lIHZhbHVlXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgIGZsb2F0X2F0dHJpYiBuYW1lIHZhbHVlIDo6IHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IGFkZF9mbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IG1hcF9mbG9hdF9hdHRyaWIgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFGbG9hdCB2YWx1ZSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gZmxvYXRfYXR0cmliIChhbmFtZSBoZWFkKSAoZiB2YWx1ZSlcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGFkZF9pbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW2ludF9hdHRyaWIgbmFtZSB2YWx1ZV1cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICBpbnRfYXR0cmliIG5hbWUgdmFsdWUgOjogdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogYWRkX2ludF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IHJlYyBybV9hdHRyaWIgaXNfYXR0cmliID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IHJtX2F0dHJpYiBpc19hdHRyaWIgdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogcm1fYXR0cmliIGlzX2F0dHJpYiB0YWlsXG5cbiAgbGV0IG1hcF9pbnRfYXR0cmliIGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBSW50IHZhbHVlIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBpbnRfYXR0cmliIChhbmFtZSBoZWFkKSAoZiB2YWx1ZSlcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGFkZF9zdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW3N0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZV1cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICBzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgOjogdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogYWRkX3N0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IG1hcF9zdHJpbmdfYXR0cmliIGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyIHZhbHVlIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBzdHJpbmdfYXR0cmliIChhbmFtZSBoZWFkKSAoZiB2YWx1ZSlcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGFkZF9zcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW3NwYWNlX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdXVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKFNwYWNlLCB2YWx1ZXMnKSB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIHNwYWNlX3NlcF9hdHRyaWIgbmFtZSAodmFsdWUgOjogdmFsdWVzJykgOjogdGFpbFxuICAgICAgfCBfIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV0gOjogdGFpbFxuICAgICAgfCBfIC0+IGhlYWQgOjogYWRkX3NwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IHJlYyBhZGRfY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtjb21tYV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXV1cbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChDb21tYSwgdmFsdWVzJykgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBjb21tYV9zZXBfYXR0cmliIG5hbWUgKHZhbHVlIDo6IHZhbHVlcycpIDo6IHRhaWxcbiAgICAgIHwgXyB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIGNvbW1hX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdIDo6IHRhaWxcbiAgICAgIHwgXyAtPiBoZWFkIDo6IGFkZF9jb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCByZWMgcm1fYXR0cmliX2Zyb21fbGlzdCBpc19hdHRyaWIgaXNfdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChzZXAsIHZhbHVlcykgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIExpc3QuZmlsdGVyIChmdW4gdiAtPiBub3QgKGlzX3ZhbHVlIHYpKSB2YWx1ZXMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gdGFpbFxuICAgICAgICAgIHwgdmFsdWVzJyAtPlxuICAgICAgICAgICAgbWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgICAgIHwgU3BhY2UgLT4gc3BhY2Vfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgdmFsdWVzJyA6OiB0YWlsXG4gICAgICAgICAgICB8IENvbW1hIC0+IGNvbW1hX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIHZhbHVlcycgOjogdGFpbFxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBoZWFkIDo6IHJtX2F0dHJpYl9mcm9tX2xpc3QgaXNfYXR0cmliIGlzX3ZhbHVlIHRhaWxcblxuICBsZXQgbWFwX3N0cmluZ19hdHRyaWJfaW5fbGlzdCBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKHNlcCwgdmFsdWVzKSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgICB8IENvbW1hIC0+IGNvbW1hX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIChMaXN0Lm1hcCBmIHZhbHVlcylcbiAgICAgICAgICB8IFNwYWNlIC0+IHNwYWNlX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIChMaXN0Lm1hcCBmIHZhbHVlcylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBmb2xkIG9mX2VtcHR5IG9mX2NvbW1lbnQgb2ZfdHh0IG9mX2VuY29kZWRwY2RhdGEgb2ZfZW50aXR5XG4gICAgICBvZl9sZWFmIG9mX25vZGUgbiA9XG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IEVtcHR5IC0+IG9mX2VtcHR5ICgpXG4gICAgfCBDb21tZW50IHMgLT4gb2ZfY29tbWVudCBzXG4gICAgfCBQQ0RBVEEgcyAtPiBvZl90eHQgc1xuICAgIHwgRW5jb2RlZFBDREFUQSBzIC0+IG9mX2VuY29kZWRwY2RhdGEgc1xuICAgIHwgRW50aXR5IHMgLT4gb2ZfZW50aXR5IHNcbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+IG9mX2xlYWYgbmFtZSBhdHRyaWJzXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgb2Zfbm9kZSBuYW1lIGF0dHJpYnNcbiAgICAgICAgKExpc3QubWFwIChmb2xkIG9mX2VtcHR5IG9mX2NvbW1lbnQgb2ZfdHh0IG9mX2VuY29kZWRwY2RhdGEgb2ZfZW50aXR5IG9mX2xlYWYgb2Zfbm9kZSkgZWx0cylcblxuICBsZXQgYWxsX2VudGl0aWVzIGVsdCA9XG4gICAgbGV0IGYgXyA9IFtdIGluXG4gICAgZm9sZCBmIGYgZiBmIGZcbiAgICAgIChmdW4gX2VuYW1lIF9hdHRyaWJzIC0+IFtdKSAoZnVuIF9lbmFtZSBfYXR0cmlicyBlbHRzIC0+IExpc3QuZmxhdHRlbiBlbHRzKVxuICAgICAgZWx0XG5cbiAgbGV0IGZsYXRtYXAgZiBsID0gTGlzdC5jb25jYXQgKExpc3QubWFwIGYgbClcblxuICBsZXQgdHJhbnNsYXRlIHJvb3RfbGVhZiByb290X25vZGUgc3ViX2xlYWYgc3ViX25vZGUgdXBkYXRlX3N0YXRlIHN0YXRlIG4gPVxuICAgIGxldCByZWMgdHJhbnNsYXRlJyBzdGF0ZSAgbiA9XG4gICAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgICAgfCAoRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfKSAtPiBbbl1cbiAgICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT5cbiAgICAgICAgc3ViX2xlYWYgc3RhdGUgbmFtZSBhdHRyaWJzXG4gICAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICAgIHN1Yl9ub2RlIHN0YXRlIG5hbWUgYXR0cmlic1xuICAgICAgICAgIChmbGF0bWFwICh0cmFuc2xhdGUnICh1cGRhdGVfc3RhdGUgbmFtZSBhdHRyaWJzIHN0YXRlKSkgZWx0cylcbiAgICBpblxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCAoRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfKSAtPiBuXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPlxuICAgICAgcm9vdF9sZWFmIG5hbWUgYXR0cmlic1xuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgIHJvb3Rfbm9kZSBuYW1lIGF0dHJpYnMgKGZsYXRtYXAgKHRyYW5zbGF0ZScgc3RhdGUpIGVsdHMpXG5cbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMCBieSBTaW1vbiBDYXN0ZWxsYW5cbiAqIENvcHlyaWdodCAoQykgMjAxMCBieSBDZWNpbGUgSGVyYmVsaW5cbiAqIENvcHlyaWdodCAoQykgMjAxMCBieSBWaW5jZW50IEJhbGF0XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG4oKiogVHlwZSBpbnN0YW50aWF0aW9ucyBmb3IgU1ZHICopXG5cbigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGJhc2ljIGRhdGEgdHlwZXMgZm9yIGRhdGEsIGF0dHJpYnV0ZXNcbiAgICBhbmQgZWxlbWVudCBvY2N1cnJpbmcgaW4gU1ZHIGRvY3VtZW50cy5cbiAgICBJdCBpcyBiYXNlZCBvbiB0aGUgc3BlY2lmaWNhdGlvbiBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHLy5cblxuICAgIFRoaXMgbW9kdWxlIGlzIGV4cGVyaW1lbnRhbCwgaXQgbWF5IGxhY2sgb2Ygc29tZSBhdHRyaWJ1dGVzLFxuICAgIGFuZCB0aGUgaW50ZXJmYWNlIGlzIHZlcnkgbG93IGxldmVsIGFuZCBkbyBub3QgdGFrZSBkZWVwbHkgaW50byBhY2NvdW50XG4gICAgdGhlIG5lZWRzIG9mIFNWRyBlbGVtZW50cy4gKilcblxub3BlbiBTdmdfdHlwZXNcblxub3BlbiBVbml0XG5cbmxldCBzdHJpbmdfb2ZfaXJpIHggPSBQcmludGYuc3ByaW50ZiBcInVybCglcylcIiB4XG5cbm1vZHVsZSBVbml0ID0gc3RydWN0XG5cbiAgKCogbGV0IHJlbCB4ICAgICA9ICh4LCBOb25lKSAqKVxuICAoKiBsZXQgZGVnIHggICAgID0gKHgsIFNvbWUgYERlZykgKilcbiAgKCogbGV0IGdyYWQgeCAgICA9ICh4LCBTb21lIGBHcmFkKSAqKVxuICAoKiBsZXQgcmFkIHggICAgID0gKHgsIFNvbWUgYFJhZCkgKilcbiAgKCogbGV0IG1zIHggICAgICA9ICh4LCBTb21lIGBNcykgKilcbiAgKCogbGV0IHMgeCAgICAgICA9ICh4LCBTb21lIGBTKSAqKVxuICAoKiBsZXQgZW0geCAgICAgID0gKHgsIFNvbWUgYEVtKSAqKVxuICAoKiBsZXQgZXggeCAgICAgID0gKHgsIFNvbWUgYEV4KSAqKVxuICAoKiBsZXQgcHggeCAgICAgID0gKHgsIFNvbWUgYFB4KSAqKVxuICAoKiBsZXQgaW5fIHggICAgID0gKHgsIFNvbWUgYEluKSAqKVxuICAoKiBsZXQgY20geCAgICAgID0gKHgsIFNvbWUgYENtKSAqKVxuICAoKiBsZXQgbW0geCAgICAgID0gKHgsIFNvbWUgYE1tKSAqKVxuICAoKiBsZXQgcHQgeCAgICAgID0gKHgsIFNvbWUgYFB0KSAqKVxuICAoKiBsZXQgcGMgeCAgICAgID0gKHgsIFNvbWUgYFBjKSAqKVxuICAoKiBsZXQgcGVyY2VudCB4ID0gKHgsIFNvbWUgYFBlcmNlbnQpICopXG4gICgqIGxldCBoeiB4ICAgICAgPSAoeCwgU29tZSBgSHopICopXG4gICgqIGxldCBraHogeCAgICAgPSAoeCwgU29tZSBgS0h6KSAqKVxuXG4gIGxldCB0b19zdHJpbmcgZiAobiwgdW5pdCkgPSBQcmludGYuc3ByaW50ZiBcIiVnJXNcIiBuIGJlZ2luXG4gICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgfCBTb21lIHVuaXQgLT4gZiB1bml0XG4gICAgfCBOb25lIC0+IFwiXCJcbiAgZW5kXG5cbiAgbGV0IGFuZ2xlX25hbWVzID0gZnVuY3Rpb24gYERlZyAtPiBcImRlZ1wiIHwgYEdyYWQgLT4gXCJncmFkXCIgfCBgUmFkIC0+IFwicmFkXCJcbiAgbGV0IHN0cmluZ19vZl9hbmdsZSBhID0gdG9fc3RyaW5nIGFuZ2xlX25hbWVzIGFcblxuICAoKiBsZXQgdGltZV9uYW1lcyA9IGZ1bmN0aW9uIGBNcyAtPiBcIm1zXCIgfCBgUyAtPiBcInNcIiAqKVxuICAoKiBsZXQgc3RyaW5nX29mX3RpbWUgYSA9IHRvX3N0cmluZyB0aW1lX25hbWVzIGEgKilcblxuICBsZXQgbGVuZ3RoX25hbWVzID0gZnVuY3Rpb25cbiAgICB8IGBFbSAtPiBcImVtXCIgfCBgRXggLT4gXCJleFwiIHwgYFB4IC0+IFwicHhcIiB8IGBJbiAtPiBcImluXCIgfCBgQ20gLT4gXCJjbVwiXG4gICAgfCBgTW0gLT4gXCJtbVwiIHwgYFB0IC0+IFwicHRcIiB8IGBQYyAtPiBcInBjXCIgfCBgUGVyY2VudCAtPiBcIiVcIlxuICBsZXQgc3RyaW5nX29mX2xlbmd0aCAoYTogbGVuZ3RoKSA9IHRvX3N0cmluZyBsZW5ndGhfbmFtZXMgYVxuXG4gICgqIGxldCBmcmVxX25hbWVzID0gZnVuY3Rpb24gYEh6IC0+IFwiSHpcIiB8IGBLSHogLT4gXCJrSHpcIiAqKVxuICAoKiBsZXQgc3RyaW5nX29mX2ZyZXEgYSA9IHRvX3N0cmluZyBmcmVxX25hbWVzIGEgKilcblxuZW5kXG5cbm9wZW4gVW5pdFxuXG5sZXQgb3B0X2NvbmNhdCA/KHNlcD1cIiBcIikgcyBmID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4gcyBeIHNlcCBeIChmIHgpXG4gIHwgTm9uZSAtPiBzXG5cbmxldCBsaXN0ID8oc2VwPVwiIFwiKSBmIGwgPSBTdHJpbmcuY29uY2F0IHNlcCAoTGlzdC5tYXAgZiBsKVxuXG5sZXQgc3RyaW5nX29mX2NvbG9yIHMgPSBzXG4oKiBGb3Igbm93IGp1c3Qgc3RyaW5nLCB3ZSBtYXkgd2FudCBzb21ldGhpbmcgYmV0dGVyIGluIHRoZSBmdXR1cmUuICopXG5cbmxldCBzdHJpbmdfb2ZfaWNjY29sb3IgcyA9IHNcblxubGV0IHN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyA9IGZ1bmN0aW9uXG4gIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgfCBgQ3VycmVudENvbG9yIC0+IFwiY3VycmVudENvbG9yXCJcbiAgfCBgQ29sb3IgKGMsIGljYykgLT4gb3B0X2NvbmNhdCAoc3RyaW5nX29mX2NvbG9yIGMpIHN0cmluZ19vZl9pY2Njb2xvciBpY2NcblxubGV0IHN0cmluZ19vZl9wYWludCA9IGZ1bmN0aW9uXG4gIHwgYEljYyAoaXJpLCBOb25lKSAtPiBzdHJpbmdfb2ZfaXJpIGlyaVxuICB8IGBJY2MgKGlyaSwgU29tZSBiKSAtPlxuICAgIChzdHJpbmdfb2ZfaXJpIGlyaSkgXlwiIFwiXiAoc3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjIGIpXG4gIHwgI3BhaW50X3doaXRvdXRfaWNjIGFzIGMgLT4gc3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjIGNcblxubGV0IHN0cmluZ19vZl9maWxsX3J1bGUgPSBmdW5jdGlvblxuICB8IGBOb256ZXJvIC0+IFwibm9uemVyb1wiXG4gIHwgYEV2ZW5vZGQgLT4gXCJldmVub2RkXCJcblxubW9kdWxlIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9uc1xuXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQpXG4gICAgKEMgOiBTdmdfc2lncy5XcmFwcGVkX2Z1bmN0aW9ucyB3aXRoIG1vZHVsZSBYbWwgPSBYbWwpID1cblxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuICBtb2R1bGUgVyA9IFhtbC5XXG5cbiAgbW9kdWxlIEluZm8gPSBzdHJ1Y3RcbiAgICBsZXQgY29udGVudF90eXBlID0gXCJpbWFnZS9zdmcreG1sXCJcbiAgICBsZXQgYWx0ZXJuYXRpdmVfY29udGVudF90eXBlcyA9IFtdXG4gICAgbGV0IGVtcHR5dGFncyA9IFtdXG4gICAgbGV0IHZlcnNpb24gPSBcIlNWRyAxLjFcIlxuICAgIGxldCBzdGFuZGFyZCA9IFwiaHR0cDovL3d3dy53My5vcmcvVFIvc3ZnMTEvXCJcbiAgICBsZXQgbmFtZXNwYWNlID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgbGV0IGRvY3R5cGUgPVxuICAgICAgWG1sX3ByaW50LmNvbXBvc2VfZG9jdHlwZVwic3ZnXCJcbiAgICAgICAgW1wiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU5cIjtcbiAgICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkXCJdXG4gIGVuZFxuXG4gIHR5cGUgdXJpID0gWG1sLnVyaVxuICBsZXQgc3RyaW5nX29mX3VyaSA9IFhtbC5zdHJpbmdfb2ZfdXJpXG4gIGxldCB1cmlfb2Zfc3RyaW5nID0gWG1sLnVyaV9vZl9zdHJpbmdcblxuXG4gICgqIE1hbmRhdG9yeSBYTUwgc3R1ZmYuICopXG5cbiAgdHlwZSAnYSBhdHRyaWIgPSBYbWwuYXR0cmliXG5cbiAgdHlwZSArJ2EgZWx0ID0gWG1sLmVsdFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIFcudGxpc3RcblxuICB0eXBlICgnYSwgJ2IpIG51bGxhcnkgPSA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+IHVuaXQgLT4gJ2IgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdW5hcnkgPSA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICdiIGVsdCB3cmFwIC0+ICdjIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHN0YXIgPVxuICAgID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gKCdiIGVsdCkgbGlzdF93cmFwIC0+ICdjIGVsdFxuXG4gIGxldCB0b3QgeCA9IHhcblxuICBsZXQgdG90bCB4ID0geFxuXG4gIGxldCB0b2VsdCB4ID0geFxuXG4gIGxldCB0b2VsdGwgeCA9IHhcblxuICBsZXQgdG9fYXR0cmliIHggPSB4XG5cbiAgbGV0IG51bGxhcnkgdGFnID9hICgpID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcubmlsICgpKVxuXG4gIGxldCB1bmFyeSB0YWcgP2EgZWx0ID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcuc2luZ2xldG9uIGVsdClcblxuICBsZXQgc3RhciB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgdHlwZSBhbHRnbHlwaGRlZl9jb250ZW50ID1cbiAgICBbIGBSZWYgb2YgKGdseXBocmVmIGVsdCkgbGlzdFxuICAgIHwgYEl0ZW0gb2YgKGFsdGdseXBoaXRlbSBlbHQpIGxpc3RcbiAgICBdXG5cbiAgbGV0IHRvX3htbGF0dHJpYnMgeCA9IHhcblxuICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAoKiB3cmFwIEMgbW9kdWxlIGZ1bmN0aW9ucyAqKVxuXG4gIGxldCBzdHJpbmdfb2ZfY29vcmQgPSBDLnN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aCA9IEMuc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RocyA9IEMuc3RyaW5nX29mX2xlbmd0aHNcblxuICAoKiBDdXN0b20gWE1MIGF0dHJpYnV0ZXMgKilcblxuICBsZXQgdXNlcl9hdHRyaWIgZiBuYW1lIHYgPVxuICAgIFhtbC5zdHJpbmdfYXR0cmliIG5hbWUgKFcuZm1hcCBmIHYpXG5cbiAgbGV0IG51bWJlcl9hdHRyaWIgPSBmbG9hdF9hdHRyaWJcblxuICAoKiBmb3Igbm93IHN0cmluZ19hdHRyaWIsIHdlIG1heSB3YW50IHNvbWV0aGluZyBiZXR0ZXIgaW4gdGhlXG4gICAgIGZ1dHVyZS4gKilcbiAgbGV0IGNvbG9yX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgKCogU1ZHIGF0dHJpYnV0ZXMgKilcblxuICBsZXQgbWV0YWRhdGEgP2EgY2hpbGRyZW4gPSBYbWwubm9kZSA/YSBcIm1ldGFkYXRhXCIgY2hpbGRyZW5cblxuICBsZXQgZm9yZWlnbk9iamVjdCA/YSBjaGlsZHJlbiA9IFhtbC5ub2RlID9hIFwiZm9yZWlnbk9iamVjdFwiIGNoaWxkcmVuXG5cbiAgbGV0IHR4dCBzID0gWG1sLnBjZGF0YSBzXG4gIGxldCBwY2RhdGEgPSB0eHRcblxuICAoKiBnZW5lcmF0ZWQgKilcbiAgbGV0IGFfdmVyc2lvbiA9IHN0cmluZ19hdHRyaWIgXCJ2ZXJzaW9uXCJcblxuICBsZXQgYV9iYXNlUHJvZmlsZSA9IHN0cmluZ19hdHRyaWIgXCJiYXNlUHJvZmlsZVwiXG5cbiAgbGV0IGFfeCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInhcIlxuXG4gIGxldCBhX3kgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ5XCJcblxuICBsZXQgYV93aWR0aCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJ3aWR0aFwiXG5cbiAgbGV0IGFfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcImhlaWdodFwiXG5cbiAgbGV0IGFfcHJlc2VydmVBc3BlY3RSYXRpbyA9XG4gICAgc3RyaW5nX2F0dHJpYiBcInByZXNlcnZlQXNwZWN0UmF0aW9cIlxuXG4gIGxldCBhX2NvbnRlbnRTY3JpcHRUeXBlID1cbiAgICBzdHJpbmdfYXR0cmliIFwiY29udGVudFNjcmlwdFR5cGVcIlxuXG4gIGxldCBhX2NvbnRlbnRTdHlsZVR5cGUgPSBzdHJpbmdfYXR0cmliIFwiY29udGVudFN0eWxlVHlwZVwiXG5cbiAgbGV0IGFfem9vbUFuZFBhbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInpvb21BbmRTcGFuXCIgeFxuXG4gIGxldCBhX2hyZWYgPSBzdHJpbmdfYXR0cmliIFwiaHJlZlwiXG5cbiAgbGV0IGFfeGxpbmtfaHJlZiA9IHN0cmluZ19hdHRyaWIgXCJ4bGluazpocmVmXCJcblxuICBsZXQgYV9yZXF1aXJlZEZlYXR1cmVzID1cbiAgICBYbWwuc3BhY2Vfc2VwX2F0dHJpYiBcInJlcXVpcmVkRmVhdHVyZXNcIlxuXG4gIGxldCBhX3JlcXVpcmVkRXh0ZW5zaW9ucyA9XG4gICAgWG1sLnNwYWNlX3NlcF9hdHRyaWIgXCJyZXF1aXJlZEV4dGVuc2lvblwiXG5cbiAgbGV0IGFfc3lzdGVtTGFuZ3VhZ2UgPVxuICAgIFhtbC5jb21tYV9zZXBfYXR0cmliIFwic3lzdGVtTGFuZ3VhZ2VcIlxuXG4gIGxldCBhX2V4dGVybmFsUmVzc291cmNlc1JlcXVpcmVkID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9ib29sIFwiZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWRcIlxuXG4gIGxldCBhX2lkID0gc3RyaW5nX2F0dHJpYiBcImlkXCJcblxuICBsZXQgYV91c2VyX2RhdGEgbmFtZSA9IHN0cmluZ19hdHRyaWIgKFwiZGF0YS1cIiBeIG5hbWUpXG5cbiAgbGV0IGFfeG1sX2Jhc2UgPSBzdHJpbmdfYXR0cmliIFwieG1sOmJhc2VcIlxuXG4gIGxldCBhX3htbF9sYW5nID0gc3RyaW5nX2F0dHJpYiBcInhtbDpsYW5nXCJcblxuICBsZXQgYV94bWxfc3BhY2UgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bWw6c3BhY2VcIiB4XG5cbiAgbGV0IGFfdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJ0eXBlXCJcblxuICBsZXQgYV9tZWRpYSA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwibWVkaWFcIlxuXG4gIGxldCBhX3hsaW5rX3RpdGxlID0gc3RyaW5nX2F0dHJpYiBcInhsaW5rOnRpdGxlXCJcblxuICBsZXQgYV9jbGFzcyA9IFhtbC5zcGFjZV9zZXBfYXR0cmliIFwiY2xhc3NcIlxuXG4gIGxldCBhX3N0eWxlID0gc3RyaW5nX2F0dHJpYiBcInN0eWxlXCJcblxuICBsZXQgYV90cmFuc2Zvcm0gPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl90cmFuc2Zvcm1zIFwidHJhbnNmb3JtXCJcblxuICBsZXQgYV92aWV3Qm94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfZm91cmZsb2F0cyBcInZpZXdCb3hcIlxuXG4gIGxldCBhX2QgPSBzdHJpbmdfYXR0cmliIFwiZFwiXG5cbiAgbGV0IGFfcGF0aExlbmd0aCA9IG51bWJlcl9hdHRyaWIgXCJwYXRoTGVuZ3RoXCJcblxuICBsZXQgYV9yeCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJyeFwiXG5cbiAgbGV0IGFfcnkgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwicnlcIlxuXG4gIGxldCBhX2N4ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcImN4XCJcblxuICBsZXQgYV9jeSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJjeVwiXG5cbiAgbGV0IGFfciA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJyXCJcblxuICBsZXQgYV94MSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcIngxXCJcblxuICBsZXQgYV95MSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInkxXCJcblxuICBsZXQgYV94MiA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcIngyXCJcblxuICBsZXQgYV95MiA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInkyXCJcblxuICBsZXQgYV9wb2ludHMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9jb29yZHMgXCJwb2ludHNcIlxuXG4gIGxldCBhX3hfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwieFwiXG5cbiAgbGV0IGFfeV9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJ5XCJcblxuICBsZXQgYV9keCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImR4XCJcblxuICBsZXQgYV9keSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImR5XCJcblxuICBsZXQgYV9keF9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJkeFwiXG5cbiAgbGV0IGFfZHlfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwiZHlcIlxuXG4gIGxldCBhX2xlbmd0aEFkanVzdCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImxlbmd0aEFkanVzdFwiIHhcblxuICBsZXQgYV90ZXh0TGVuZ3RoID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInRleHRMZW5ndGhcIlxuXG4gIGxldCBhX3RleHRfYW5jaG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGV4dC1hbmNob3JcIiB4XG5cbiAgbGV0IGFfdGV4dF9kZWNvcmF0aW9uIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGV4dC1kZWNvcmF0aW9uXCIgeFxuXG4gIGxldCBhX3RleHRfcmVuZGVyaW5nIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGV4dC1yZW5kZXJpbmdcIiB4XG5cbiAgbGV0IGFfcm90YXRlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcInJvdGF0ZVwiXG5cbiAgbGV0IGFfc3RhcnRPZmZzZXQgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwic3RhcnRPZmZzZXRcIlxuXG4gIGxldCBhX21ldGhvZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1ldGhvZFwiIHhcblxuICBsZXQgYV9zcGFjaW5nIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3BhY2luZ1wiIHhcblxuICBsZXQgYV9nbHlwaFJlZiA9IHN0cmluZ19hdHRyaWIgXCJnbHlwaFJlZlwiXG5cbiAgbGV0IGFfZm9ybWF0ID0gc3RyaW5nX2F0dHJpYiBcImZvcm1hdFwiXG5cbiAgbGV0IGFfbWFya2VyVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtYXJrZXJVbml0c1wiIHhcblxuICBsZXQgYV9yZWZYID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwicmVmWFwiXG5cbiAgbGV0IGFfcmVmWSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInJlZllcIlxuXG4gIGxldCBhX21hcmtlcldpZHRoID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcIm1hcmtlcldpZHRoXCJcblxuICBsZXQgYV9tYXJrZXJIZWlnaHQgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwibWFya2VySGVpZ2h0XCJcblxuICBsZXQgYV9vcmllbnQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfb3JpZW50IFwib3JpZW50XCIgeFxuXG4gIGxldCBhX2xvY2FsID0gc3RyaW5nX2F0dHJpYiBcImxvY2FsXCJcblxuICBsZXQgYV9yZW5kZXJpbmdfaW50ZW50IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicmVuZGVyaW5nLWludGVudFwiIHhcblxuICBsZXQgYV9ncmFkaWVudFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZ3JhZGllbnRVbml0c1wiIHhcblxuICBsZXQgYV9ncmFkaWVudFRyYW5zZm9ybSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfdHJhbnNmb3JtcyBcImdyYWRpZW50VHJhbnNmb3JtXCJcblxuICBsZXQgYV9zcHJlYWRNZXRob2QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzcHJlYWRNZXRob2RcIiB4XG5cbiAgbGV0IGFfZnggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJmeFwiXG5cbiAgbGV0IGFfZnkgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJmeVwiXG5cbiAgbGV0IGFfb2Zmc2V0IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX29mZnNldCBcIm9mZnNldFwiIHhcblxuICBsZXQgYV9wYXR0ZXJuVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwYXR0ZXJuVW5pdHNcIiB4XG5cbiAgbGV0IGFfcGF0dGVybkNvbnRlbnRVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInBhdHRlcm5Db250ZW50VW5pdHNcIiB4XG5cbiAgbGV0IGFfcGF0dGVyblRyYW5zZm9ybSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl90cmFuc2Zvcm1zIFwicGF0dGVyblRyYW5zZm9ybVwiIHhcblxuICBsZXQgYV9jbGlwUGF0aFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiY2xpcFBhdGhVbml0c1wiIHhcblxuICBsZXQgYV9tYXNrVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtYXNrVW5pdHNcIiB4XG5cbiAgbGV0IGFfbWFza0NvbnRlbnRVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1hc2tDb250ZW50VW5pdHNcIiB4XG5cbiAgbGV0IGFfcHJpbWl0aXZlVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwcmltaXRpdmVVbml0c1wiIHhcblxuICBsZXQgYV9maWx0ZXJSZXMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJmaWx0ZXJSZXNVbml0c1wiXG5cbiAgbGV0IGFfcmVzdWx0ID0gc3RyaW5nX2F0dHJpYiBcInJlc3VsdFwiXG5cbiAgbGV0IGFfaW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5fdmFsdWUgXCJpblwiIHhcblxuICBsZXQgYV9pbjIgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5fdmFsdWUgXCJpbjJcIiB4XG5cbiAgbGV0IGFfYXppbXV0aCA9IG51bWJlcl9hdHRyaWIgXCJhemltdXRoXCJcblxuICBsZXQgYV9lbGV2YXRpb24gPSBudW1iZXJfYXR0cmliIFwiZWxldmF0aW9uXCJcblxuICBsZXQgYV9wb2ludHNBdFggPSBudW1iZXJfYXR0cmliIFwicG9pbnRzQXRYXCJcblxuICBsZXQgYV9wb2ludHNBdFkgPSBudW1iZXJfYXR0cmliIFwicG9pbnRzQXRZXCJcblxuICBsZXQgYV9wb2ludHNBdFogPSBudW1iZXJfYXR0cmliIFwicG9pbnRzQXRaXCJcblxuICBsZXQgYV9zcGVjdWxhckV4cG9uZW50ID0gbnVtYmVyX2F0dHJpYiBcInNwZWN1bGFyRXhwb25lbnRcIlxuXG4gIGxldCBhX3NwZWN1bGFyQ29uc3RhbnQgPSBudW1iZXJfYXR0cmliIFwic3BlY3VsYXJDb25zdGFudFwiXG5cbiAgbGV0IGFfbGltaXRpbmdDb25lQW5nbGUgPSBudW1iZXJfYXR0cmliIFwibGltaXRpbmdDb25lQW5nbGVcIlxuXG4gIGxldCBhX21vZGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtb2RlXCIgeFxuXG4gIGxldCBhX2ZlQ29sb3JNYXRyaXhfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfdmFsdWVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcInZhbHVlc1wiXG5cbiAgbGV0IGFfdHJhbnNmZXJfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfdGFibGVWYWx1ZXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwidGFibGVWYWx1ZXNcIlxuXG4gIGxldCBhX2ludGVyY2VwdCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImludGVyY2VwdFwiXG5cbiAgbGV0IGFfYW1wbGl0dWRlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYW1wbGl0dWRlXCJcblxuICBsZXQgYV9leHBvbmVudCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImV4cG9uZW50XCJcblxuICBsZXQgYV90cmFuc2Zlcl9vZmZzZXQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJvZmZzZXRcIlxuXG4gIGxldCBhX2ZlQ29tcG9zaXRlX29wZXJhdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwib3BlcmF0b3JcIiB4XG5cbiAgbGV0IGFfazEgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJrMVwiXG5cbiAgbGV0IGFfazIgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJrMlwiXG5cbiAgbGV0IGFfazMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJrM1wiXG5cbiAgbGV0IGFfazQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJrNFwiXG5cbiAgbGV0IGFfb3JkZXIgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwib3JkZXJcIlxuXG4gIGxldCBhX2tlcm5lbE1hdHJpeCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJrZXJuZWxNYXRyaXhcIlxuXG4gIGxldCBhX2Rpdmlzb3IgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkaXZpc29yXCJcblxuICBsZXQgYV9iaWFzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYmlhc1wiXG5cbiAgbGV0IGFfa2VybmVsVW5pdExlbmd0aCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcImtlcm5lbFVuaXRMZW5ndGhcIlxuXG4gIGxldCBhX3RhcmdldFggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnQgXCJ0YXJnZXRYXCJcblxuICBsZXQgYV90YXJnZXRZID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW50IFwidGFyZ2V0WVwiXG5cbiAgbGV0IGFfZWRnZU1vZGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0YXJnZXRZXCIgeFxuXG4gIGxldCBhX3ByZXNlcnZlQWxwaGEgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9ib29sIFwicHJlc2VydmVBbHBoYVwiXG5cbiAgbGV0IGFfc3VyZmFjZVNjYWxlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3VyZmFjZVNjYWxlXCJcblxuICBsZXQgYV9kaWZmdXNlQ29uc3RhbnQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImRpZmZ1c2VDb25zdGFudFwiXG5cbiAgbGV0IGFfc2NhbGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzY2FsZVwiXG5cbiAgbGV0IGFfeENoYW5uZWxTZWxlY3RvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhDaGFubmVsU2VsZWN0b3JcIiB4XG5cbiAgbGV0IGFfeUNoYW5uZWxTZWxlY3RvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInlDaGFubmVsU2VsZWN0b3JcIiB4XG5cbiAgbGV0IGFfc3RkRGV2aWF0aW9uID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwic3RkRGV2aWF0aW9uXCJcblxuICBsZXQgYV9mZU1vcnBob2xvZ3lfb3BlcmF0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJvcGVyYXRvclwiIHhcblxuICBsZXQgYV9yYWRpdXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwicmFkaXVzXCJcblxuICBsZXQgYV9iYXNlRnJlbnF1ZW5jeSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcImJhc2VGcmVxdWVuY3lcIlxuXG4gIGxldCBhX251bU9jdGF2ZXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnQgXCJudW1PY3RhdmVzXCJcblxuICBsZXQgYV9zZWVkID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic2VlZFwiXG5cbiAgbGV0IGFfc3RpdGNoVGlsZXMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzdGl0Y2hUaWxlc1wiIHhcblxuICBsZXQgYV9mZVR1cmJ1bGVuY2VfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfeGxpbmtfc2hvdyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhsaW5rOnNob3dcIiB4XG5cbiAgbGV0IGFfeGxpbmtfYWN0dWF0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhsaW5rOmFjdHVhdGVcIiB4XG5cbiAgbGV0IGFfdGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcInhsaW5rOnRhcmdldFwiXG5cbiAgbGV0IGFfdmlld1RhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJ2aWV3VGFyZ2V0XCJcblxuICBsZXQgYV9hdHRyaWJ1dGVOYW1lID0gc3RyaW5nX2F0dHJpYiBcImF0dHJpYnV0ZU5hbWVcIlxuXG4gIGxldCBhX2F0dHJpYnV0ZVR5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhdHRyaWJ1dGVUeXBlXCIgeFxuXG4gIGxldCBhX2JlZ2luID0gc3RyaW5nX2F0dHJpYiBcImJlZ2luXCJcblxuICBsZXQgYV9kdXIgPSBzdHJpbmdfYXR0cmliIFwiZHVyXCJcblxuICBsZXQgYV9taW4gPSBzdHJpbmdfYXR0cmliIFwibWluXCJcblxuICBsZXQgYV9tYXggPSBzdHJpbmdfYXR0cmliIFwibWF4XCJcblxuICBsZXQgYV9yZXN0YXJ0IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicmVzdGFydFwiIHhcblxuICBsZXQgYV9yZXBlYXRDb3VudCA9IHN0cmluZ19hdHRyaWIgXCJyZXBlYXRDb3VudFwiXG5cbiAgbGV0IGFfcmVwZWF0RHVyID0gc3RyaW5nX2F0dHJpYiBcInJlcGVhdER1clwiXG5cbiAgbGV0IGFfZmlsbCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3BhaW50IFwiZmlsbFwiXG5cbiAgbGV0IGFfYW5pbWF0aW9uX2ZpbGwgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJmaWxsXCIgeFxuXG4gIGxldCBhX2ZpbGxfcnVsZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ZpbGxfcnVsZSBcImZpbGwtcnVsZVwiXG5cbiAgbGV0IGFfY2FsY01vZGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJjYWxjTW9kZVwiIHhcblxuICBsZXQgYV9hbmltYXRpb25fdmFsdWVzID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJ2YWx1ZXNcIlxuXG4gIGxldCBhX2tleVRpbWVzID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJrZXlUaW1lc1wiXG5cbiAgbGV0IGFfa2V5U3BsaW5lcyA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwia2V5U3BsaW5lc1wiXG5cbiAgbGV0IGFfZnJvbSA9IHN0cmluZ19hdHRyaWIgXCJmcm9tXCJcblxuICBsZXQgYV90byA9IHN0cmluZ19hdHRyaWIgXCJ0b1wiXG5cbiAgbGV0IGFfYnkgPSBzdHJpbmdfYXR0cmliIFwiYnlcIlxuXG4gIGxldCBhX2FkZGl0aXZlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYWRkaXRpdmVcIiB4XG5cbiAgbGV0IGFfYWNjdW11bGF0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFjY3VtdWxhdGVcIiB4XG5cbiAgbGV0IGFfa2V5UG9pbnRzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyc19zZW1pY29sb24gXCJrZXlQb2ludHNcIlxuXG4gIGxldCBhX3BhdGggPSBzdHJpbmdfYXR0cmliIFwicGF0aFwiXG5cbiAgbGV0IGFfYW5pbWF0ZVRyYW5zZm9ybV90eXBlID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIlxuXG4gIGxldCBhX2hvcml6X29yaWdpbl94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaG9yaXotb3JpZ2luLXhcIlxuXG4gIGxldCBhX2hvcml6X29yaWdpbl95ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaG9yaXotb3JpZ2luLXlcIlxuXG4gIGxldCBhX2hvcml6X2Fkdl94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaG9yaXotYWR2LXhcIlxuXG4gIGxldCBhX3ZlcnRfb3JpZ2luX3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2ZXJ0LW9yaWdpbi14XCJcblxuICBsZXQgYV92ZXJ0X29yaWdpbl95ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidmVydC1vcmlnaW4teVwiXG5cbiAgbGV0IGFfdmVydF9hZHZfeSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInZlcnQtYWR2LXlcIlxuXG4gIGxldCBhX3VuaWNvZGUgPSBzdHJpbmdfYXR0cmliIFwidW5pY29kZVwiXG5cbiAgbGV0IGFfZ2x5cGhfbmFtZSA9IHN0cmluZ19hdHRyaWIgXCJnbHlwaG5hbWVcIlxuXG4gIGxldCBhX29yaWVudGF0aW9uIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwib3JpZW50YXRpb25cIiB4XG5cbiAgbGV0IGFfYXJhYmljX2Zvcm0geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhcmFiaWMtZm9ybVwiIHhcblxuICBsZXQgYV9sYW5nID0gc3RyaW5nX2F0dHJpYiBcImxhbmdcIlxuXG4gIGxldCBhX3UxID0gc3RyaW5nX2F0dHJpYiBcInUxXCJcblxuICBsZXQgYV91MiA9IHN0cmluZ19hdHRyaWIgXCJ1MlwiXG5cbiAgbGV0IGFfZzEgPSBzdHJpbmdfYXR0cmliIFwiZzFcIlxuXG4gIGxldCBhX2cyID0gc3RyaW5nX2F0dHJpYiBcImcyXCJcblxuICBsZXQgYV9rID0gc3RyaW5nX2F0dHJpYiBcImtcIlxuXG4gIGxldCBhX2ZvbnRfZmFtaWx5ID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtZmFtaWx5XCJcblxuICBsZXQgYV9mb250X3N0eWxlID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtc3R5bGVcIlxuXG4gIGxldCBhX2ZvbnRfdmFyaWFudCA9IHN0cmluZ19hdHRyaWIgXCJmb250LXZhcmlhbnRcIlxuXG4gIGxldCBhX2ZvbnRfd2VpZ2h0ID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtd2VpZ2h0XCJcblxuICBsZXQgYV9mb250X3N0cmV0Y2ggPSBzdHJpbmdfYXR0cmliIFwiZm9udC1zdHJldGNoXCJcblxuICBsZXQgYV9mb250X3NpemUgPSBzdHJpbmdfYXR0cmliIFwiZm9udC1zaXplXCJcblxuICBsZXQgYV91bmljb2RlX3JhbmdlID0gc3RyaW5nX2F0dHJpYiBcInVuaWNvZGUtcmFuZ2VcIlxuXG4gIGxldCBhX3VuaXRzX3Blcl9lbSA9IHN0cmluZ19hdHRyaWIgXCJ1bml0cy1wZXItZW1cIlxuXG4gIGxldCBhX3N0ZW12ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RlbXZcIlxuXG4gIGxldCBhX3N0ZW1oID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RlbWhcIlxuXG4gIGxldCBhX3Nsb3BlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic2xvcGVcIlxuXG4gIGxldCBhX2NhcF9oZWlnaHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJjYXAtaGVpZ2h0XCJcblxuICBsZXQgYV94X2hlaWdodCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIngtaGVpZ2h0XCJcblxuICBsZXQgYV9hY2NlbnRfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYWNjZW50LWhlaWdodFwiXG5cbiAgbGV0IGFfYXNjZW50ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYXNjZW50XCJcblxuICBsZXQgYV93aWR0aHMgPSBzdHJpbmdfYXR0cmliIFwid2lkdGhzXCJcblxuICBsZXQgYV9iYm94ID0gc3RyaW5nX2F0dHJpYiBcImJib3hcIlxuXG4gIGxldCBhX2lkZW9ncmFwaGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaWRlb2dyYXBoaWNcIlxuXG4gIGxldCBhX2FscGhhYmV0aWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhbHBoYWJldGljXCJcblxuICBsZXQgYV9tYXRoZW1hdGljYWwgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJtYXRoZW1hdGljYWxcIlxuXG4gIGxldCBhX2hhbmdpbmcgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJoYW5naW5nXCJcblxuICBsZXQgYV92aWRlb2dyYXBoaWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LWlkZW9ncmFwaGljXCJcblxuICBsZXQgYV92X2FscGhhYmV0aWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LWFscGhhYmV0aWNcIlxuXG4gIGxldCBhX3ZfbWF0aGVtYXRpY2FsID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1tYXRoZW1hdGljYWxcIlxuXG4gIGxldCBhX3ZfaGFuZ2luZyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtaGFuZ2luZ1wiXG5cbiAgbGV0IGFfdW5kZXJsaW5lX3Bvc2l0aW9uID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ1bmRlcmxpbmUtcG9zaXRpb25cIlxuXG4gIGxldCBhX3VuZGVybGluZV90aGlja25lc3MgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInVuZGVybGluZS10aGlja25lc3NcIlxuXG4gIGxldCBhX3N0cmlrZXRocm91Z2hfcG9zaXRpb24gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cmlrZXRocm91Z2gtcG9zaXRpb25cIlxuXG4gIGxldCBhX3N0cmlrZXRocm91Z2hfdGhpY2tuZXNzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzc1wiXG5cbiAgbGV0IGFfb3ZlcmxpbmVfcG9zaXRpb24gPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJvdmVybGluZS1wb3NpdGlvblwiXG5cbiAgbGV0IGFfb3ZlcmxpbmVfdGhpY2tuZXNzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJvdmVybGluZS10aGlja25lc3NcIlxuXG4gIGxldCBhX3N0cmluZyA9IHN0cmluZ19hdHRyaWIgXCJzdHJpbmdcIlxuXG4gIGxldCBhX25hbWUgPSBzdHJpbmdfYXR0cmliIFwibmFtZVwiXG5cbiAgbGV0IGFfYWxpZ25tZW50X2Jhc2VsaW5lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2FsaWdubWVudF9iYXNlbGluZSBcImFsaWdubWVudC1iYXNlbGluZVwiIHhcblxuICBsZXQgYV9kb21pbmFudF9iYXNlbGluZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9kb21pbmFudF9iYXNlbGluZSBcImRvbWluYW50LWJhc2VsaW5lXCIgeFxuXG4gICgqKiBKYXZhc2NyaXB0IGV2ZW50cyAqKVxuXG4gIGxldCBhX29uYWJvcnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFib3J0XCJcbiAgbGV0IGFfb25hY3RpdmF0ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWN0aXZhdGVcIlxuICBsZXQgYV9vbmJlZ2luID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25iZWdpblwiXG4gIGxldCBhX29uZW5kID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lbmRcIlxuICBsZXQgYV9vbmVycm9yID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lcnJvclwiXG4gIGxldCBhX29uZm9jdXNpbiA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9jdXNpblwiXG4gIGxldCBhX29uZm9jdXNvdXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvY3Vzb3V0XCJcbiAgbGV0IGFfb25sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkXCJcbiAgbGV0IGFfb25yZXBlYXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlcGVhdFwiXG4gIGxldCBhX29ucmVzaXplID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZXNpemVcIlxuICBsZXQgYV9vbnNjcm9sbCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Nyb2xsXCJcbiAgbGV0IGFfb251bmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnVubG9hZFwiXG4gIGxldCBhX29uem9vbSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uem9vbVwiXG5cbiAgKCoqIEphdmFzY3JpcHQgbW91c2UgZXZlbnRzICopXG5cbiAgbGV0IGFfb25jbGljayA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2xpY2tcIlxuICBsZXQgYV9vbm1vdXNlZG93biA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vkb3duXCJcbiAgbGV0IGFfb25tb3VzZXVwID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZXVwXCJcbiAgbGV0IGFfb25tb3VzZW92ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3ZlclwiXG4gIGxldCBhX29ubW91c2VvdXQgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3V0XCJcbiAgbGV0IGFfb25tb3VzZW1vdmUgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlbW92ZVwiXG5cbiAgKCoqIEphdmFzY3JpcHQgdG91Y2ggZXZlbnRzICopXG4gIGxldCBhX29udG91Y2hzdGFydCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hzdGFydFwiXG4gIGxldCBhX29udG91Y2hlbmQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoZW5kXCJcbiAgbGV0IGFfb250b3VjaG1vdmUgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNobW92ZVwiXG4gIGxldCBhX29udG91Y2hjYW5jZWwgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoY2FuY2VsXCJcblxuICBsZXQgYV9zdG9wX2NvbG9yID0gY29sb3JfYXR0cmliIFwic3RvcC1jb2xvclwiXG5cbiAgbGV0IGFfc3RvcF9vcGFjaXR5ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RvcC1vcGFjaXR5XCJcblxuICBsZXQgYV9zdHJva2UgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9wYWludCBcInN0cm9rZVwiXG5cbiAgbGV0IGFfc3Ryb2tlX3dpZHRoID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbGVuZ3RoIFwic3Ryb2tlLXdpZHRoXCJcblxuICBsZXQgYV9zdHJva2VfbGluZWNhcCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInN0cm9rZS1saW5lY2FwXCIgeFxuXG4gIGxldCBhX3N0cm9rZV9saW5lam9pbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInN0cm9rZS1saW5lam9pblwiIHhcblxuICBsZXQgYV9zdHJva2VfbWl0ZXJsaW1pdCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3Ryb2tlLW1pdGVybGltaXRcIlxuXG4gIGxldCBhX3N0cm9rZV9kYXNoYXJyYXkgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5IFwic3Ryb2tlLWRhc2hhcnJheVwiIHhcblxuICBsZXQgYV9zdHJva2VfZGFzaG9mZnNldCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbGVuZ3RoIFwic3Ryb2tlLWRhc2hvZmZzZXRcIlxuXG4gIGxldCBhX3N0cm9rZV9vcGFjaXR5ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJva2Utb3BhY2l0eVwiXG5cbiAgKCogeGxpbmsgbmFtZXNwYWNlIGdpdmVuIGEgbmlja25hbWUgc2luY2Ugc29tZSBhdHRyaWJ1dGVzIG1hbmRhdGVkIGJ5XG4gICAgIHRoZSBzdmcgc3RhbmRhcmQgc3VjaCBhcyB4bGluazpocmVmIGxpdmUgaW4gdGhhdCBuYW1lc3BhY2UsIGFuZCB3ZVxuICAgICByZWZlciB0byB0aGVtIGFzIFwieGxpbms6d2hhdGV2ZXJcIiAoc2VlIGFfeGxpbmtfaHJlZiBvciBhX3hsaW5rc2hvdylcbiAgKilcbiAgbGV0IHN2ZyA/KGEgPSBbXSkgY2hpbGRyZW4gPVxuICAgIGxldCBhdHRyaWJzID1cbiAgICAgIHN0cmluZ19hdHRyaWIgXCJ4bWxuc1wiIChXLnJldHVybiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIpXG4gICAgICA6OiBzdHJpbmdfYXR0cmliIFwieG1sbnM6eGxpbmtcIiAoVy5yZXR1cm4gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIpXG4gICAgICA6OiB0b194bWxhdHRyaWJzIGFcbiAgICBpblxuICAgIHN0YXIgfmE6KGF0dHJpYnMpIFwic3ZnXCIgY2hpbGRyZW5cblxuICAoKiBhbHNvIGdlbmVyYXRlZCAqKVxuICBsZXQgZyA9IHN0YXIgXCJnXCJcblxuICBsZXQgZGVmcyA9IHN0YXIgXCJkZWZzXCJcblxuICBsZXQgZGVzYyA9IHVuYXJ5IFwiZGVzY1wiXG5cbiAgbGV0IHRpdGxlID0gdW5hcnkgXCJ0aXRsZVwiXG5cbiAgbGV0IHN5bWJvbCA9IHN0YXIgXCJzeW1ib2xcIlxuXG4gIGxldCB1c2UgPSBzdGFyIFwidXNlXCJcblxuICBsZXQgaW1hZ2UgPSBzdGFyIFwiaW1hZ2VcIlxuXG4gIGxldCBzd2l0Y2ggPSBzdGFyIFwic3dpdGNoXCJcblxuICBsZXQgc3R5bGUgPSB1bmFyeSBcInN0eWxlXCJcblxuICBsZXQgcGF0aCA9IHN0YXIgXCJwYXRoXCJcblxuICBsZXQgcmVjdCA9IHN0YXIgXCJyZWN0XCJcblxuICBsZXQgY2lyY2xlID0gc3RhciBcImNpcmNsZVwiXG5cbiAgbGV0IGVsbGlwc2UgPSBzdGFyIFwiZWxsaXBzZVwiXG5cbiAgbGV0IGxpbmUgPSBzdGFyIFwibGluZVwiXG5cbiAgbGV0IHBvbHlsaW5lID0gc3RhciBcInBvbHlsaW5lXCJcblxuICBsZXQgcG9seWdvbiA9IHN0YXIgXCJwb2x5Z29uXCJcblxuICBsZXQgdGV4dCA9IHN0YXIgXCJ0ZXh0XCJcblxuICBsZXQgdHNwYW4gPSBzdGFyIFwidHNwYW5cIlxuXG4gIGxldCB0cmVmID0gc3RhciBcInRyZWZcIlxuXG4gIGxldCB0ZXh0UGF0aCA9IHN0YXIgXCJ0ZXh0UGF0aFwiXG5cbiAgbGV0IGFsdEdseXBoID0gdW5hcnkgXCJhbHRHbHlwaFwiXG5cbiAgbGV0IGFsdEdseXBoRGVmID0gdW5hcnkgXCJhbHRHbHlwaERlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSA9IHN0YXIgXCJhbHRHbHlwaEl0ZW1cIlxuXG4gIGxldCBnbHlwaFJlZiA9IG51bGxhcnkgXCJnbHlwaFJlZlwiXG5cbiAgbGV0IG1hcmtlciA9IHN0YXIgXCJtYXJrZXJcIlxuXG4gIGxldCBjb2xvcl9wcm9maWxlID0gc3RhciBcImNvbG9yLXByb2ZpbGVcIlxuXG4gIGxldCBsaW5lYXJHcmFkaWVudCA9IHN0YXIgXCJsaW5lYXJHcmFkaWVudFwiXG5cbiAgbGV0IHJhZGlhbEdyYWRpZW50ID0gc3RhciBcInJhZGlhbEdyYWRpZW50XCJcblxuICBsZXQgc3RvcCA9IHN0YXIgXCJzdG9wXCJcblxuICBsZXQgcGF0dGVybiA9IHN0YXIgXCJwYXR0ZXJuXCJcblxuICBsZXQgY2xpcFBhdGggPSBzdGFyIFwiY2xpcFBhdGhcIlxuXG4gIGxldCBmaWx0ZXIgPSBzdGFyIFwiZmlsdGVyXCJcblxuICBsZXQgZmVEaXN0YW50TGlnaHQgPSBzdGFyIFwiZmVEaXN0YW50TGlnaHRcIlxuXG4gIGxldCBmZVBvaW50TGlnaHQgPSBzdGFyIFwiZmVQb2ludExpZ2h0XCJcblxuICBsZXQgZmVTcG90TGlnaHQgPSBzdGFyIFwiZmVTcG90TGlnaHRcIlxuXG4gIGxldCBmZUJsZW5kID0gc3RhciBcImZlQmxlbmRcIlxuXG4gIGxldCBmZUNvbG9yTWF0cml4ID0gc3RhciBcImZlQ29sb3JNYXRyaXhcIlxuXG4gIGxldCBmZUNvbXBvbmVudFRyYW5zZmVyID0gc3RhciBcImZlQ29tcG9uZW50VHJhbnNmZXJcIlxuXG4gIGxldCBmZUZ1bmNBID0gc3RhciBcImZlRnVuY0FcIlxuXG4gIGxldCBmZUZ1bmNHID0gc3RhciBcImZlRnVuY0dcIlxuXG4gIGxldCBmZUZ1bmNCID0gc3RhciBcImZlRnVuY0JcIlxuXG4gIGxldCBmZUZ1bmNSID0gc3RhciBcImZlRnVuY1JcIlxuXG4gIGxldCBmZUNvbXBvc2l0ZSA9IHN0YXIgXCJmZUNvbXBvc2l0ZVwiXG5cbiAgbGV0IGZlQ29udm9sdmVNYXRyaXggPSBzdGFyIFwiZmVDb252b2x2ZU1hdHJpeFwiXG5cbiAgbGV0IGZlRGlmZnVzZUxpZ2h0aW5nID0gc3RhciBcImZlRGlmZnVzZUxpZ2h0aW5nXCJcblxuICBsZXQgZmVEaXNwbGFjZW1lbnRNYXAgPSBzdGFyIFwiZmVEaXNwbGFjZW1lbnRNYXBcIlxuXG4gIGxldCBmZUZsb29kID0gc3RhciBcImZlRmxvb2RcIlxuXG4gIGxldCBmZUdhdXNzaWFuQmx1ciA9IHN0YXIgXCJmZUdhdXNzaWFuQmx1clwiXG5cbiAgbGV0IGZlSW1hZ2UgPSBzdGFyIFwiZmVJbWFnZVwiXG5cbiAgbGV0IGZlTWVyZ2UgPSBzdGFyIFwiZmVNZXJnZVwiXG5cbiAgbGV0IGZlTW9ycGhvbG9neSA9IHN0YXIgXCJmZU1vcnBob2xvZ3lcIlxuXG4gIGxldCBmZU9mZnNldCA9IHN0YXIgXCJmZU9mZnNldFwiXG5cbiAgbGV0IGZlU3BlY3VsYXJMaWdodGluZyA9IHN0YXIgXCJmZVNwZWN1bGFyTGlnaHRpbmdcIlxuXG4gIGxldCBmZVRpbGUgPSBzdGFyIFwiZmVUaWxlXCJcblxuICBsZXQgZmVUdXJidWxlbmNlID0gc3RhciBcImZlVHVyYnVsZW5jZVwiXG5cbiAgbGV0IGN1cnNvciA9IHN0YXIgXCJjdXJzb3JcIlxuXG4gIGxldCBhID0gc3RhciBcImFcIlxuXG4gIGxldCB2aWV3ID0gc3RhciBcInZpZXdcIlxuXG4gIGxldCBzY3JpcHQgPSB1bmFyeSBcInNjcmlwdFwiXG5cbiAgbGV0IGFuaW1hdGUgPSBzdGFyIFwiYW5pbWF0ZVwiXG5cbiAgbGV0IGFuaW1hdGlvbiA9IGFuaW1hdGVcblxuICBsZXQgc2V0ID0gc3RhciBcInNldFwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gPSBzdGFyIFwiYW5pbWF0ZU1vdGlvblwiXG5cbiAgbGV0IG1wYXRoID0gc3RhciBcIm1wYXRoXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yID0gc3RhciBcImFuaW1hdGVDb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gPSBzdGFyIFwiYW5pbWF0ZVRyYW5zZm9ybVwiXG5cbiAgbGV0IGZvbnQgPSBzdGFyIFwiZm9udFwiXG5cbiAgbGV0IGdseXBoID0gc3RhciBcImdseXBoXCJcblxuICBsZXQgbWlzc2luZ19nbHlwaCA9IHN0YXIgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgaGtlcm4gPSBudWxsYXJ5IFwiaGtlcm5cIlxuXG4gIGxldCB2a2VybiA9IG51bGxhcnkgXCJ2a2VyblwiXG5cbiAgbGV0IGZvbnRfZmFjZSA9IG51bGxhcnkgXCJmb250LWZhY2VcIlxuXG4gIGxldCBmb250X2ZhY2Vfc3JjID0gc3RhciBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250X2ZhY2VfdXJpID0gc3RhciBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb250X2ZhY2VfZm9ybWF0ID0gbnVsbGFyeSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb250X2ZhY2VfbmFtZSA9IG51bGxhcnkgXCJmb250LWZhY2UtbmFtZVwiXG5cbiAgdHlwZSBkb2MgPSBbIGBTdmcgXSBlbHRcbiAgbGV0IGRvY190b2VsdCB4ID0geFxuXG4gIG1vZHVsZSBJID0gWG1sX3N0cmVhbS5JbXBvcnQoWG1sKVxuICBsZXQgb2Zfc2VxIHMgPSB0b3RsIEBAIEkub2Zfc2VxIHNcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG5cbiAgICBsZXQgZGF0YSBzID0gWG1sLmVuY29kZWRwY2RhdGEgc1xuXG4gICAgbGV0IGxlYWYgdGFnID9hICgpID0gWG1sLmxlYWYgP2EgdGFnXG5cbiAgICBsZXQgbm9kZSB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgICBsZXQgY29lcmNlX2VsdCB4ID0geFxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICAgIGxldCBpbnRfYXR0cmliID0gWG1sLmludF9hdHRyaWJcblxuICAgIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAgIGxldCB1cmlfYXR0cmliIGEgcyA9IFhtbC51cmlfYXR0cmliIGEgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYlxuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgPSBYbWwuY29tbWFfc2VwX2F0dHJpYlxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIFdyYXBwZWRfZnVuY3Rpb25zXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwnYikgVy5mdCA9ICdhIC0+ICdiKSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG5cbiAgbGV0IHN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBCYXNlbGluZSAtPiBcImJhc2VsaW5lXCJcbiAgICB8IGBCZWZvcmVfZWRnZSAtPiBcImJlZm9yZS1lZGdlXCJcbiAgICB8IGBUZXh0X2JlZm9yZV9lZGdlIC0+IFwidGV4dC1iZWZvcmUtZWRnZVwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBDZW50cmFsIC0+IFwiY2VudHJhbFwiXG4gICAgfCBgQWZ0ZXJfZWRnZSAtPiBcImFmdGVyLWVkZ2VcIlxuICAgIHwgYFRleHRfYWZ0ZXJfZWRnZSAtPiBcInRleHQtYWZ0ZXItZWRnZVwiXG4gICAgfCBgSWRlb2dyYXBoaWMgLT4gXCJpZGVvZ3JhcGhpY1wiXG4gICAgfCBgQWxwaGFiZXRpYyAtPiBcImFscGhhYmV0aWNcIlxuICAgIHwgYEhhbmdpbmctPiBcImhhbmdpbmdcIlxuICAgIHwgYE1hdGhlbWF0aWNhbCAtPiBcIm1hdGhlbWF0aWNhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuXG4gIGxldCBzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgYEEgLT4gXCJhXCJcbiAgICB8IGBBYnNvbHV0ZV9jb2xvcmltZXRyaWMgLT4gXCJhYnNvbHV0ZV9jb2xvcmltZXRyaWNcIlxuICAgIHwgYEFsaWduIC0+IFwiXCJcbiAgICB8IGBBbHdheXMgLT4gXCJhbHdheXNcIlxuICAgIHwgYEF0b3AgLT4gXCJhdG9wXCJcbiAgICB8IGBBcml0aG1ldGljIC0+IFwiYXJpdGhtZXRpY1wiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEIgLT4gXCJiXCJcbiAgICB8IGBCZXZlciAtPiBcImJldmVsXCJcbiAgICB8IGBCbGluayAtPiBcImJsaW5rXCJcbiAgICB8IGBCdXR0IC0+IFwiYnV0dFwiXG4gICAgfCBgQ1NTIC0+IFwiQ1NTXCJcbiAgICB8IGBEYXJrZW4gLT4gXCJkYXJrZW5cIlxuICAgIHwgYERlZmF1bHQgLT4gXCJkZWZhdWx0XCJcbiAgICB8IGBEaWxhdGUgLT4gXCJkaWxhdGVcIlxuICAgIHwgYERpc2FibGUgLT4gXCJkaXNhYmxlXCJcbiAgICB8IGBEaXNjcmV0ZSAtPiBcImRpc2NyZXRlXCJcbiAgICB8IGBEdXBsaWNhdGUgLT4gXCJkdXBsaWNhdGVcIlxuICAgIHwgYEVuZCAtPiBcImVuZFwiXG4gICAgfCBgRXJvZGUgLT4gXCJlcm9kZVwiXG4gICAgfCBgRXhhY3QgLT4gXCJleGFjdFwiXG4gICAgfCBgRnJhY3RhbE5vaXNlIC0+IFwiZnJhY3RhbE5vaXNlXCJcbiAgICB8IGBGcmVlemUgLT4gXCJmcmVlemVcIlxuICAgIHwgYEh1ZVJvdGF0ZSAtPiBcImh1ZVJvdGF0ZVwiXG4gICAgfCBgRyAtPiBcImdcIlxuICAgIHwgYEdhbW1hIC0+IFwiZ2FtbWFcIlxuICAgIHwgYEdlb21ldHJpY1ByZWNpc2lvbiAtPiBcImdlb21ldHJpY1ByZWNpc2lvblwiXG4gICAgfCBgSCAtPiBcImhcIlxuICAgIHwgYElkZW50aXR5IC0+IFwiaWRlbnRpdHlcIlxuICAgIHwgYEluIC0+IFwiaW5cIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSXNvbGF0ZWQgLT4gXCJpc29sYXRlZFwiXG4gICAgfCBgTGlnaHRlbiAtPiBcImxpZ2h0ZW5cIlxuICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgfCBgTGluZWFyIC0+IFwibGluZWFyXCJcbiAgICB8IGBMdW1pbmFuY2VUb0FscGhhIC0+IFwibHVtaW5hbmNlVG9BbHBoYVwiXG4gICAgfCBgTWFnbmlmeSAtPiBcIm1hZ25pZnlcIlxuICAgIHwgYE1hdHJpeCAtPiBcIm1hdHJpeFwiXG4gICAgfCBgTWVkaWFsIC0+IFwibWVkaWFsXCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYE1pdGVyIC0+IFwibWl0ZXJcIlxuICAgIHwgYE11bHRpcGx5IC0+IFwibXVsdGlwbHlcIlxuICAgIHwgYE5ldmVyIC0+IFwibmV2ZXJcIlxuICAgIHwgYE5ldyAtPiBcIm5ld1wiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTm9TdGl0Y2ggLT4gXCJub1N0aXRjaFwiXG4gICAgfCBgT2JqZWN0Qm91bmRpbmdCb3ggLT4gXCJvYmplY3RCb3VuZGluZ0JveFwiXG4gICAgfCBgT25Mb2FkIC0+IFwib25Mb2FkXCJcbiAgICB8IGBPblJlcXVlc3QgLT4gXCJvblJlcXVlc3RcIlxuICAgIHwgYE9wdGltaXplTGVnaWJpbGl0eSAtPiBcIm9wdGltaXplTGVnaWJpbGl0eVwiXG4gICAgfCBgT3B0aW1pemVTcGVlZCAtPiBcIm9wdGltaXplU3BlZWRcIlxuICAgIHwgYE90aGVyIC0+IFwib3RoZXJcIlxuICAgIHwgYE91dCAtPiBcIm91dFwiXG4gICAgfCBgT3ZlciAtPiBcIm92ZXJcIlxuICAgIHwgYE92ZXJsaW5lIC0+IFwib3ZlcmxpbmVcIlxuICAgIHwgYFBhY2VkIC0+IFwicGFjZWRcIlxuICAgIHwgYFBhZCAtPiBcInBhZFwiXG4gICAgfCBgUGVyY2VwdHVhbCAtPiBcInBlcmNlcHR1YWxcIlxuICAgIHwgYFByZXNlcnZlIC0+IFwicHJlc2VydmVcIlxuICAgIHwgYFIgLT4gXCJyXCJcbiAgICB8IGBSZWZsZWN0IC0+IFwicmVmbGVjdFwiXG4gICAgfCBgUmVtb3ZlIC0+IFwicmVtb3ZlXCJcbiAgICB8IGBSZXBlYXQgLT4gXCJyZXBlYXRcIlxuICAgIHwgYFJlcGxhY2UgLT4gXCJyZXBsYWNlXCJcbiAgICB8IGBSZWxhdGl2ZV9jb2xvcmltZXRyaWMgLT4gXCJyZWxhdGl2ZV9jb2xvcmltZXRyaWNcIlxuICAgIHwgYFJvdGF0ZSAtPiBcInJvdGF0ZVwiXG4gICAgfCBgUm91bmQgLT4gXCJyb3VuZFwiXG4gICAgfCBgU2F0dXJhdGUgLT4gXCJzYXR1cmF0ZVwiXG4gICAgfCBgU2F0dXJhdGlvbiAtPiBcInNhdHVyYXRpb25cIlxuICAgIHwgYFNjYWxlIC0+IFwic2NhbGVcIlxuICAgIHwgYFNjcmVlbiAtPiBcInNjcmVlblwiXG4gICAgfCBgU2tld1ggLT4gXCJza2V3WFwiXG4gICAgfCBgU2tld1kgLT4gXCJza2V3WVwiXG4gICAgfCBgU3BhY2luZyAtPiBcInNwYWNpbmdcIlxuICAgIHwgYFNwYWNpbmdBbmRHbHlwaHMgLT4gXCJzcGFjaW5nQW5kR2x5cGhzXCJcbiAgICB8IGBTcGxpbmUgLT4gXCJzcGxpbmVcIlxuICAgIHwgYFNxdWFyZSAtPiBcInNxdWFyZVwiXG4gICAgfCBgU3RhcnQgLT4gXCJzdGFydFwiXG4gICAgfCBgU3RpdGNoIC0+IFwic3RpdGNoXCJcbiAgICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG4gICAgfCBgU3Ryb2tlV2lkdGggLT4gXCJzdHJva2Utd2lkdGhcIlxuICAgIHwgYFN1bSAtPiBcInN1bVwiXG4gICAgfCBgVGFibGUgLT4gXCJ0YWJsZVwiXG4gICAgfCBgVGVybWluYWwgLT4gXCJ0ZXJtaW5hbFwiXG4gICAgfCBgVHJhbnNsYXRlIC0+IFwidHJhbnNsYXRlXCJcbiAgICB8IGBUdXJidWxlbmNlIC0+IFwidHVyYnVsZW5jZVwiXG4gICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICB8IGBVc2VyU3BhY2VPblVzZSAtPiBcInVzZXJTcGFjZU9uVXNlXCJcbiAgICB8IGBWIC0+IFwidlwiXG4gICAgfCBgV2hlbk5vdEFjdGl2ZSAtPiBcIndoZW5Ob3RBY3RpdmVcIlxuICAgIHwgYFdyYXAgLT4gXCJ3cmFwXCJcbiAgICB8IGBYTUwgLT4gXCJYTUxcIlxuICAgIHwgYFhvciAtPiBcInhvclwiXG5cbiAgbGV0IHN0cmluZ19vZl9ib29sID0gc3RyaW5nX29mX2Jvb2xcblxuICBsZXQgc3RyaW5nX29mX2Nvb3JkcyA9XG4gICAgbGlzdCAoZnVuIChhLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcIiVnLCAlZ1wiIGEgYilcblxuICBsZXQgc3RyaW5nX29mX2RvbWluYW50X2Jhc2VsaW5lID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgVXNlX3NjcmlwdCAtPiBcInVzZXNjcmlwdFwiXG4gICAgfCBgTm9fY2hhbmdlIC0+IFwibm9jaGFuZ2VcIlxuICAgIHwgYFJlc2V0X3NpemUgLT4gXCJyZXNldHNpemVcIlxuICAgIHwgYElkZW9ncmFwaGljIC0+IFwiaWRlb2dyYXBoaWNcIlxuICAgIHwgYEFscGhhYmV0aWMgLT4gXCJhbHBoYWJldGljXCJcbiAgICB8IGBIYW5naW5nIC0+IFwiaGFuZ2luZ1wiXG4gICAgfCBgTWF0aGVtYXRpY2FsIC0+IFwibWF0aGVtYXRpY2FsXCJcbiAgICB8IGBDZW50cmFsIC0+IFwiY2VudHJhbFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBUZXh0X2FmdGVyX2VkZ2UgLT4gXCJ0ZXh0YWZ0ZXJlZGdlXCJcbiAgICB8IGBUZXh0X2JlZm9yZV9lZGdlIC0+IFwidGV4dGJlZm9yZWVkZ2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcblxuXG4gIGxldCBzdHJpbmdfb2ZfaW5fdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgYFNvdXJjZUdyYXBoaWMgLT4gXCJzb3VyY2VHcmFwaGljXCJcbiAgICB8IGBTb3VyY2VBbHBoYSAtPiBcInNvdXJjZUFscGhhXCJcbiAgICB8IGBCYWNrZ3JvdW5kSW1hZ2UgLT4gXCJiYWNrZ3JvdW5kSW1hZ2VcIlxuICAgIHwgYEJhY2tncm91bmRBbHBoYSAtPiBcImJhY2tncm91bmRBbHBoYVwiXG4gICAgfCBgRmlsbFBhaW50IC0+IFwiZmlsbFBhaW50XCJcbiAgICB8IGBTdHJva2VQYWludCAtPiBcInN0cm9rZVBhaW50XCJcbiAgICB8IGBSZWYgX3N2ZyAtPiBfc3ZnXG5cbiAgbGV0IHN0cmluZ19vZl9pbnQgPSBzdHJpbmdfb2ZfaW50XG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGggPSBVbml0LnN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aHMgPSBsaXN0IHN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX251bWJlciA9IFhtbF9wcmludC5zdHJpbmdfb2ZfbnVtYmVyXG5cbiAgbGV0IHN0cmluZ19vZl9wZXJjZW50YWdlIHggPSAoc3RyaW5nX29mX251bWJlciB4KSBeIFwiJVwiXG5cbiAgbGV0IHN0cmluZ19vZl9mb3VyZmxvYXRzIChhLCBiLCBjLCBkKSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyAlc1wiXG4gICAgICAoc3RyaW5nX29mX251bWJlciBhKSAoc3RyaW5nX29mX251bWJlciBiKSAoc3RyaW5nX29mX251bWJlciBjKSAoc3RyaW5nX29mX251bWJlciBkKVxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciA9IGZ1bmN0aW9uXG4gICAgfCB4LCBTb21lIHkgLT4gUHJpbnRmLnNwcmludGYgXCIlZywgJWdcIiB4IHlcbiAgICB8IHgsIE5vbmUgLT4gUHJpbnRmLnNwcmludGYgXCIlZ1wiIHhcblxuICBsZXQgc3RyaW5nX29mX251bWJlcnMgPSBsaXN0IHN0cmluZ19vZl9udW1iZXJcblxuICBsZXQgc3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uID0gbGlzdCB+c2VwOlwiOyBcIiBzdHJpbmdfb2ZfbnVtYmVyXG5cbiAgbGV0IHN0cmluZ19vZl9vZmZzZXQgPSBmdW5jdGlvblxuICAgIHwgYE51bWJlciB4IC0+IHN0cmluZ19vZl9udW1iZXIgeFxuICAgIHwgYFBlcmNlbnRhZ2UgeCAtPiBzdHJpbmdfb2ZfcGVyY2VudGFnZSB4XG5cbiAgbGV0IHN0cmluZ19vZl9vcmllbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBcImF1dG9cIlxuICAgIHwgU29tZSBfX3N2ZyAtPiBzdHJpbmdfb2ZfYW5nbGUgX19zdmdcblxuICBsZXQgc3RyaW5nX29mX3BhaW50ID0gc3RyaW5nX29mX3BhaW50XG5cbiAgbGV0IHN0cmluZ19vZl9maWxsX3J1bGUgPSBzdHJpbmdfb2ZfZmlsbF9ydWxlXG5cbiAgbGV0IHN0cmluZ19vZl9zdHJva2VkYXNoYXJyYXkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gXCJub25lXCJcbiAgICB8IGwgLT4gbGlzdCBzdHJpbmdfb2ZfbGVuZ3RoIGxcblxuICBsZXQgc3RyaW5nX29mX3RyYW5zZm9ybSA9IGZ1bmN0aW9uXG4gICAgfCBgTWF0cml4IChhLCBiLCBjLCBkLCBlLCBmKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJtYXRyaXgoJWcgJWcgJWcgJWcgJWcgJWcpXCIgYSBiIGMgZCBlIGZcbiAgICB8IGBUcmFuc2xhdGUgeCAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJ0cmFuc2xhdGUoJXMpXCJcbiAgICAgICAgKHN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIHgpXG4gICAgfCBgU2NhbGUgeCAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJzY2FsZSglcylcIiAoc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgeClcbiAgICB8IGBSb3RhdGUgKChhbmdsZSwgeCkpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInJvdGF0ZSglcyAlcylcIiAoc3RyaW5nX29mX2FuZ2xlIGFuZ2xlKVxuICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICB8IFNvbWUgKCh4LCB5KSkgLT4gUHJpbnRmLnNwcmludGYgXCIlZyAlZ1wiIHggeVxuICAgICAgICAgfCBOb25lIC0+IFwiXCIpXG4gICAgfCBgU2tld1ggYW5nbGUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwic2tld1goJXMpXCIgKHN0cmluZ19vZl9hbmdsZSBhbmdsZSlcbiAgICB8IGBTa2V3WSBhbmdsZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJza2V3WSglcylcIiAoc3RyaW5nX29mX2FuZ2xlIGFuZ2xlKVxuXG4gIGxldCBzdHJpbmdfb2ZfdHJhbnNmb3JtcyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfdHJhbnNmb3JtIGwpXG5cbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsICdiKSBXLmZ0ID0gKCdhIC0+ICdiKSkgPVxuICBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnMoWG1sKShXcmFwcGVkX2Z1bmN0aW9ucyhYbWwpKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwNCBieSBUaG9yc3RlbiBPaGwgPG9obEBwaHlzaWsudW5pLXd1ZXJ6YnVyZy5kZT5cbiAqIENvcHlyaWdodCAoQykgMjAwNyBieSBWaW5jZW50IEJhbGF0LCBHYWJyaWVsIEtlcm5laXNcbiAqIENvcHlyaWdodCAoQykgMjAxMCBieSBDZWNpbGUgSGVyYmVsaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnNcblxuICAgIChYbWwgOiBYbWxfc2lncy5UKVxuICAgIChDIDogSHRtbF9zaWdzLldyYXBwZWRfZnVuY3Rpb25zIHdpdGggbW9kdWxlIFhtbCA9IFhtbClcbiAgICAoU3ZnIDogU3ZnX3NpZ3MuVCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG5cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcblxuICBtb2R1bGUgVyA9IFhtbC5XXG5cbiAgbW9kdWxlIEluZm8gPSBzdHJ1Y3RcbiAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L2h0bWxcIlxuICAgIGxldCBhbHRlcm5hdGl2ZV9jb250ZW50X3R5cGVzID0gW1wiYXBwbGljYXRpb24veGh0bWwreG1sXCI7XCJhcHBsaWNhdGlvbi94bWxcIjtcInRleHQveG1sXCJdXG4gICAgbGV0IHZlcnNpb24gPSBcIkhUTUw1LWRyYWZ0XCJcbiAgICBsZXQgc3RhbmRhcmQgPSBcImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L1wiXG4gICAgbGV0IG5hbWVzcGFjZSA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG4gICAgbGV0IGRvY3R5cGUgPVxuICAgICAgWG1sX3ByaW50LmNvbXBvc2VfZG9jdHlwZSBcImh0bWxcIiBbXVxuICAgIGxldCBlbXB0eXRhZ3MgPVxuICAgICAgWyBcImFyZWFcIjsgXCJiYXNlXCI7IFwiYnJcIjsgXCJjb2xcIjsgXCJjb21tYW5kXCI7IFwiZW1iZWRcIjsgXCJoclwiOyBcImltZ1wiO1xuICAgICAgICBcImlucHV0XCI7IFwia2V5Z2VuXCI7IFwibGlua1wiOyBcIm1ldGFcIjsgXCJwYXJhbVwiOyBcInNvdXJjZVwiOyBcIndiclwiIF1cbiAgZW5kXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2EgVy50XG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgVy50bGlzdFxuXG4gIHR5cGUgdXJpID0gWG1sLnVyaVxuICBsZXQgc3RyaW5nX29mX3VyaSA9IFhtbC5zdHJpbmdfb2ZfdXJpXG4gIGxldCB1cmlfb2Zfc3RyaW5nID0gWG1sLnVyaV9vZl9zdHJpbmdcblxuICB0eXBlIGltYWdlX2NhbmRpZGF0ZSA9XG4gICAgWyBgVXJsIG9mIHVyaVxuICAgIHwgYFVybF93aWR0aCBvZiB1cmkgKiBIdG1sX3R5cGVzLm51bWJlclxuICAgIHwgYFVybF9waXhlbCBvZiB1cmkgKiBIdG1sX3R5cGVzLmZsb2F0X251bWJlciBdXG5cbiAgdHlwZSAnYSBhdHRyaWIgPSBYbWwuYXR0cmliXG5cbiAgbGV0IHRvX3htbGF0dHJpYnMgeCA9IHhcbiAgbGV0IHRvX2F0dHJpYiB4ID0geFxuXG4gICgqIFZCICopXG4gIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgbGV0IGludF9hdHRyaWIgPSBYbWwuaW50X2F0dHJpYlxuXG4gIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICBsZXQgdXJpX2F0dHJpYiBhIHMgPSBYbWwudXJpX2F0dHJpYiBhIHNcblxuICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiA9IFhtbC5zcGFjZV9zZXBfYXR0cmliXG5cbiAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgPSBYbWwuY29tbWFfc2VwX2F0dHJpYlxuXG4gIGxldCB1c2VyX2F0dHJpYiBmIG5hbWUgdiA9IFhtbC5zdHJpbmdfYXR0cmliIG5hbWUgKFcuZm1hcCBmIHYpXG5cbiAgbGV0IGJvb2xfYXR0cmliID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYm9vbFxuXG4gIGxldCBjb25zdGFudF9hdHRyaWIgYSAoKSA9XG4gICAgc3RyaW5nX2F0dHJpYiBhIChXLnJldHVybiBhKVxuXG4gIGxldCBsaW5rdHlwZXNfYXR0cmliIG5hbWUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbGlua3R5cGVzIG5hbWUgeFxuXG4gIGxldCBtZWRpYWRlc2NfYXR0cmliIG5hbWUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbWVkaWFkZXNjIG5hbWUgeFxuXG4gIGxldCBzcmNzZXRfYXR0cmliIG5hbWUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc3Jjc2V0IG5hbWUgeFxuXG4gICgqIENvcmU6ICopXG4gIGxldCBhX2NsYXNzID0gc3BhY2Vfc2VwX2F0dHJpYiBcImNsYXNzXCJcblxuICBsZXQgYV9pZCA9IHN0cmluZ19hdHRyaWIgXCJpZFwiXG5cbiAgbGV0IGFfdXNlcl9kYXRhIG5hbWUgPSBzdHJpbmdfYXR0cmliIChcImRhdGEtXCIgXiBuYW1lKVxuXG4gIGxldCBhX3RpdGxlID0gc3RyaW5nX2F0dHJpYiBcInRpdGxlXCJcblxuICAoKiBJMThOOiAqKVxuICBsZXQgYV94bWxfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6bGFuZ1wiXG4gIGxldCBhX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwibGFuZ1wiXG5cbiAgKCogU3R5bGU6ICopXG4gIGxldCBhX3N0eWxlID0gc3RyaW5nX2F0dHJpYiBcInN0eWxlXCJcblxuICBsZXQgYV9wcm9wZXJ0eSA9IHN0cmluZ19hdHRyaWIgXCJwcm9wZXJ0eVwiXG5cbiAgKCogRXZlbnRzOiAqKVxuICBsZXQgYV9vbmFib3J0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hYm9ydFwiXG4gIGxldCBhX29uYWZ0ZXJwcmludCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWZ0ZXJwcmludFwiXG4gIGxldCBhX29uYmVmb3JlcHJpbnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJlZm9yZXByaW50XCJcbiAgbGV0IGFfb25iZWZvcmV1bmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJlZm9yZXVubG9hZFwiXG4gIGxldCBhX29uYmx1ciA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmx1clwiXG4gIGxldCBhX29uY2FucGxheSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2FucGxheVwiXG4gIGxldCBhX29uY2FucGxheXRocm91Z2ggPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNhbnBsYXl0aHJvdWdoXCJcbiAgbGV0IGFfb25jaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNoYW5nZVwiXG4gIGxldCBhX29uY2xvc2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNsb3NlXCJcbiAgbGV0IGFfb25kdXJhdGlvbmNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHVyYXRpb25jaGFuZ2VcIlxuICBsZXQgYV9vbmVtcHRpZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVtcHRpZWRcIlxuICBsZXQgYV9vbmVuZGVkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lbmRlZFwiXG4gIGxldCBhX29uZXJyb3IgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVycm9yXCJcbiAgbGV0IGFfb25mb2N1cyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9jdXNcIlxuICBsZXQgYV9vbmZvcm1jaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvcm1jaGFuZ2VcIlxuICBsZXQgYV9vbmZvcm1pbnB1dCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9ybWlucHV0XCJcbiAgbGV0IGFfb25oYXNoY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25oYXNoY2hhbmdlXCJcbiAgbGV0IGFfb25pbnB1dCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uaW5wdXRcIlxuICBsZXQgYV9vbmludmFsaWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmludmFsaWRcIlxuICBsZXQgYV9vbm9mZmxpbmUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm9mZmxpbmVcIlxuICBsZXQgYV9vbm9ubGluZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ub25saW5lXCJcbiAgbGV0IGFfb25wYXVzZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGF1c2VcIlxuICBsZXQgYV9vbnBsYXkgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBsYXlcIlxuICBsZXQgYV9vbnBsYXlpbmcgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBsYXlpbmdcIlxuICBsZXQgYV9vbnBhZ2VoaWRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wYWdlaGlkZVwiXG4gIGxldCBhX29ucGFnZXNob3cgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBhZ2VzaG93XCJcbiAgbGV0IGFfb25wb3BzdGF0ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucG9wc3RhdGVcIlxuICBsZXQgYV9vbnByb2dyZXNzID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wcm9ncmVzc1wiXG4gIGxldCBhX29ucmF0ZWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmF0ZWNoYW5nZVwiXG4gIGxldCBhX29ucmVhZHlzdGF0ZWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiXG4gIGxldCBhX29ucmVkbyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVkb1wiXG4gIGxldCBhX29ucmVzaXplID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZXNpemVcIlxuICBsZXQgYV9vbnNjcm9sbCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Nyb2xsXCJcbiAgbGV0IGFfb25zZWVrZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNlZWtlZFwiXG4gIGxldCBhX29uc2Vla2luZyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Vla2luZ1wiXG4gIGxldCBhX29uc2VsZWN0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zZWxlY3RcIlxuICBsZXQgYV9vbnNob3cgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNob3dcIlxuICBsZXQgYV9vbnN0YWxsZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN0YWxsZWRcIlxuICBsZXQgYV9vbnN0b3JhZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN0b3JhZ2VcIlxuICBsZXQgYV9vbnN1Ym1pdCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3VibWl0XCJcbiAgbGV0IGFfb25zdXNwZW5kID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdXNwZW5kXCJcbiAgbGV0IGFfb250aW1ldXBkYXRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib250aW1ldXBkYXRlXCJcbiAgbGV0IGFfb251bmRvID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib251bmRvXCJcbiAgbGV0IGFfb251bmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnVubG9hZFwiXG4gIGxldCBhX29udm9sdW1lY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib252b2x1bWVjaGFuZ2VcIlxuICBsZXQgYV9vbndhaXRpbmcgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbndhaXRpbmdcIlxuICBsZXQgYV9vbmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRcIlxuICBsZXQgYV9vbmxvYWRlZGRhdGEgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRlZGRhdGFcIlxuICBsZXQgYV9vbmxvYWRlZG1ldGFkYXRhID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkZWRtZXRhZGF0YVwiXG4gIGxldCBhX29ubG9hZHN0YXJ0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2Fkc3RhcnRcIlxuICBsZXQgYV9vbm1lc3NhZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1lc3NhZ2VcIlxuICBsZXQgYV9vbm1vdXNld2hlZWwgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNld2hlZWxcIlxuXG4gICgqKiBKYXZhc2NyaXB0IG1vdXNlIGV2ZW50cyAqKVxuICBsZXQgYV9vbmNsaWNrID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jbGlja1wiXG4gIGxldCBhX29uY29udGV4dG1lbnUgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNvbnRleHRtZW51XCJcbiAgbGV0IGFfb25kYmxjbGljayA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZGJsY2xpY2tcIlxuICBsZXQgYV9vbmRyYWcgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdcIlxuICBsZXQgYV9vbmRyYWdlbmQgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdlbmRcIlxuICBsZXQgYV9vbmRyYWdlbnRlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ2VudGVyXCJcbiAgbGV0IGFfb25kcmFnbGVhdmUgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdsZWF2ZVwiXG4gIGxldCBhX29uZHJhZ292ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdvdmVyXCJcbiAgbGV0IGFfb25kcmFnc3RhcnQgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdzdGFydFwiXG4gIGxldCBhX29uZHJvcCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJvcFwiXG4gIGxldCBhX29ubW91c2Vkb3duID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZWRvd25cIlxuICBsZXQgYV9vbm1vdXNldXAgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNldXBcIlxuICBsZXQgYV9vbm1vdXNlb3ZlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdmVyXCJcbiAgbGV0IGFfb25tb3VzZW1vdmUgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlbW92ZVwiXG4gIGxldCBhX29ubW91c2VvdXQgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3V0XCJcblxuICAoKiogSmF2YXNjcmlwdCB0b3VjaCBldmVudHMgKilcbiAgbGV0IGFfb250b3VjaHN0YXJ0ID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaHN0YXJ0XCJcbiAgbGV0IGFfb250b3VjaGVuZCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hlbmRcIlxuICBsZXQgYV9vbnRvdWNobW92ZSA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2htb3ZlXCJcbiAgbGV0IGFfb250b3VjaGNhbmNlbCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hjYW5jZWxcIlxuXG4gICgqKiBKYXZhc2NyaXB0IGtleWJvYXJkIGV2ZW50cyAqKVxuICBsZXQgYV9vbmtleXByZXNzID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25rZXlwcmVzc1wiXG4gIGxldCBhX29ua2V5ZG93biA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ua2V5ZG93blwiXG4gIGxldCBhX29ua2V5dXAgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmtleXVwXCJcblxuICAoKiBPdGhlciBBdHRyaWJ1dGVzICopXG4gIGxldCBhX3ZlcnNpb24gPSBzdHJpbmdfYXR0cmliIFwidmVyc2lvblwiXG5cbiAgbGV0IGFfeG1sbnMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bWxuc1wiIHhcblxuICBsZXQgYV9tYW5pZmVzdCA9IHVyaV9hdHRyaWIgXCJtYW5pZmVzdFwiXG5cbiAgbGV0IGFfY2l0ZSA9IHVyaV9hdHRyaWIgXCJjaXRlXCJcblxuICBsZXQgYV94bWxfc3BhY2UgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bWw6c3BhY2VcIiB4XG5cbiAgbGV0IGFfYWNjZXNza2V5IGMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2NoYXJhY3RlciBcImFjY2Vzc2tleVwiIGNcblxuICBsZXQgYV9jaGFyc2V0ID0gc3RyaW5nX2F0dHJpYiBcImNoYXJzZXRcIlxuXG4gIGxldCBhX2FjY2VwdF9jaGFyc2V0ID0gc3BhY2Vfc2VwX2F0dHJpYiBcImFjY2VwdC1jaGFyc2V0XCJcblxuICBsZXQgYV9hY2NlcHQgPSBjb21tYV9zZXBfYXR0cmliIFwiYWNjZXB0XCJcblxuICBsZXQgYV9ocmVmID0gdXJpX2F0dHJpYiBcImhyZWZcIlxuXG4gIGxldCBhX2hyZWZsYW5nID0gc3RyaW5nX2F0dHJpYiBcImhyZWZsYW5nXCJcblxuICBsZXQgYV9kb3dubG9hZCBmaWxlID1cbiAgICB1c2VyX2F0dHJpYiAoQy51bm9wdGlvbl9zdHJpbmcpIFwiZG93bmxvYWRcIiBmaWxlXG5cbiAgbGV0IGFfcmVsID0gbGlua3R5cGVzX2F0dHJpYiBcInJlbFwiXG5cbiAgbGV0IGFfdGFiaW5kZXggPSBpbnRfYXR0cmliIFwidGFiaW5kZXhcIlxuXG4gIGxldCBhX21pbWVfdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJ0eXBlXCJcblxuICBsZXQgYV9hbHQgPSBzdHJpbmdfYXR0cmliIFwiYWx0XCJcblxuICBsZXQgYV9oZWlnaHQgcCA9IGludF9hdHRyaWIgXCJoZWlnaHRcIiBwXG5cbiAgbGV0IGFfc3JjID0gdXJpX2F0dHJpYiBcInNyY1wiXG5cbiAgbGV0IGFfd2lkdGggcCA9IGludF9hdHRyaWIgXCJ3aWR0aFwiIHBcblxuICBsZXQgYV9sYWJlbF9mb3IgPSBzdHJpbmdfYXR0cmliIFwiZm9yXCJcbiAgbGV0IGFfZm9yID0gYV9sYWJlbF9mb3JcblxuICBsZXQgYV9vdXRwdXRfZm9yID0gc3BhY2Vfc2VwX2F0dHJpYiBcImZvclwiXG4gIGxldCBhX2Zvcl9saXN0ID0gYV9vdXRwdXRfZm9yXG5cbiAgbGV0IGFfc2VsZWN0ZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInNlbGVjdGVkXCJcblxuICBsZXQgYV90ZXh0X3ZhbHVlID0gc3RyaW5nX2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV9pbnRfdmFsdWUgPSBpbnRfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX3ZhbHVlID0gc3RyaW5nX2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV9mbG9hdF92YWx1ZSA9IGZsb2F0X2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV9hY3Rpb24gPSB1cmlfYXR0cmliIFwiYWN0aW9uXCJcblxuICBsZXQgYV9tZXRob2QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtZXRob2RcIiB4XG5cbiAgbGV0IGFfZm9ybW1ldGhvZCB4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJmb3JtbWV0aG9kXCIgeFxuXG4gIGxldCBhX2VuY3R5cGUgPSBzdHJpbmdfYXR0cmliIFwiZW5jdHlwZVwiXG5cbiAgbGV0IGFfY2hlY2tlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiY2hlY2tlZFwiXG5cbiAgbGV0IGFfZGlzYWJsZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImRpc2FibGVkXCJcblxuICBsZXQgYV9yZWFkb25seSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicmVhZG9ubHlcIlxuXG4gIGxldCBhX21heGxlbmd0aCA9IGludF9hdHRyaWIgXCJtYXhsZW5ndGhcIlxuXG4gIGxldCBhX21pbmxlbmd0aCA9IGludF9hdHRyaWIgXCJtaW5sZW5ndGhcIlxuXG4gIGxldCBhX25hbWUgPSBzdHJpbmdfYXR0cmliIFwibmFtZVwiXG5cbiAgbGV0IGFfYWxsb3dmdWxsc2NyZWVuID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhbGxvd2Z1bGxzY3JlZW5cIlxuXG4gIGxldCBhX2FsbG93cGF5bWVudHJlcXVlc3QgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImFsbG93cGF5bWVudHJlcXVlc3RcIlxuXG4gIGxldCBhX3JlZmVycmVycG9saWN5IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3JlZmVycmVycG9saWN5IFwicmVmZXJyZXJwb2xpY3lcIiB4XG5cbiAgbGV0IGFfYXV0b2NvbXBsZXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2F1dG9jb21wbGV0ZSBcImF1dG9jb21wbGV0ZVwiIHhcblxuICBsZXQgYV9hc3luYyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYXN5bmNcIlxuXG4gIGxldCBhX2F1dG9mb2N1cyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYXV0b2ZvY3VzXCJcblxuICBsZXQgYV9hdXRvcGxheSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYXV0b3BsYXlcIlxuXG4gIGxldCBhX211dGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJtdXRlZFwiXG5cbiAgbGV0IGFfY3Jvc3NvcmlnaW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJjcm9zc29yaWdpblwiIHhcblxuICBsZXQgYV9pbnRlZ3JpdHkgPSBzdHJpbmdfYXR0cmliIFwiaW50ZWdyaXR5XCJcblxuICBsZXQgYV9tZWRpYWdyb3VwID0gc3RyaW5nX2F0dHJpYiBcIm1lZGlhZ3JvdXBcIlxuXG4gIGxldCBhX2NoYWxsZW5nZSA9IHN0cmluZ19hdHRyaWIgXCJjaGFsbGVuZ2VcIlxuXG4gIGxldCBhX2NvbnRlbnRlZGl0YWJsZSBjZSA9XG4gICAgYm9vbF9hdHRyaWIgXCJjb250ZW50ZWRpdGFibGVcIiBjZVxuXG4gIGxldCBhX2NvbnRleHRtZW51ID0gc3RyaW5nX2F0dHJpYiBcImNvbnRleHRtZW51XCJcblxuICBsZXQgYV9jb250cm9scyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiY29udHJvbHNcIlxuXG4gIGxldCBhX2RpciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImRpclwiIHhcblxuICBsZXQgYV9kcmFnZ2FibGUgZCA9XG4gICAgYm9vbF9hdHRyaWIgXCJkcmFnZ2FibGVcIiBkXG5cbiAgbGV0IGFfZm9ybSA9IHN0cmluZ19hdHRyaWIgXCJmb3JtXCJcblxuICBsZXQgYV9mb3JtYWN0aW9uID0gdXJpX2F0dHJpYiBcImZvcm1hY3Rpb25cIlxuXG4gIGxldCBhX2Zvcm1lbmN0eXBlID0gc3RyaW5nX2F0dHJpYiBcImZvcm1lbmN0eXBlXCJcblxuICBsZXQgYV9mb3Jtbm92YWxpZGF0ZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiZm9ybW5vdmFsaWRhdGVcIlxuXG4gIGxldCBhX2Zvcm10YXJnZXQgPSBzdHJpbmdfYXR0cmliIFwiZm9ybXRhcmdldFwiXG5cbiAgbGV0IGFfaGlkZGVuID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJoaWRkZW5cIlxuXG4gIGxldCBhX2hpZ2ggPSBmbG9hdF9hdHRyaWIgXCJoaWdoXCJcblxuICBsZXQgYV9pY29uID0gdXJpX2F0dHJpYiBcImljb25cIlxuXG4gIGxldCBhX2lzbWFwID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJpc21hcFwiXG5cbiAgbGV0IGFfa2V5dHlwZSA9IHN0cmluZ19hdHRyaWIgXCJrZXl0eXBlXCJcblxuICBsZXQgYV9saXN0ID0gc3RyaW5nX2F0dHJpYiBcImxpc3RcIlxuXG4gIGxldCBhX2xvb3AgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImxvb3BcIlxuXG4gIGxldCBhX2xvdyA9IGZsb2F0X2F0dHJpYiBcImxvd1wiXG5cbiAgbGV0IGFfbWF4ID0gZmxvYXRfYXR0cmliIFwibWF4XCJcblxuICBsZXQgYV9pbnB1dF9tYXggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUgXCJtYXhcIlxuXG4gIGxldCBhX21pbiA9IGZsb2F0X2F0dHJpYiBcIm1pblwiXG5cbiAgbGV0IGFfaW5wdXRfbWluID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lIFwibWluXCJcblxuICBsZXQgYV9pbnB1dG1vZGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJpbnB1dG1vZGVcIiB4XG5cbiAgbGV0IGFfbm92YWxpZGF0ZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibm92YWxpZGF0ZVwiXG5cbiAgbGV0IGFfb3BlbiA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwib3BlblwiXG5cbiAgbGV0IGFfb3B0aW11bSA9IGZsb2F0X2F0dHJpYiBcIm9wdGltdW1cIlxuXG4gIGxldCBhX3BhdHRlcm4gPSBzdHJpbmdfYXR0cmliIFwicGF0dGVyblwiXG5cbiAgbGV0IGFfcGxhY2Vob2xkZXIgPSBzdHJpbmdfYXR0cmliIFwicGxhY2Vob2xkZXJcIlxuXG4gIGxldCBhX3Bvc3RlciA9IHVyaV9hdHRyaWIgXCJwb3N0ZXJcIlxuXG4gIGxldCBhX3ByZWxvYWQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwcmVsb2FkXCIgeFxuXG4gIGxldCBhX3B1YmRhdGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInB1YmRhdGVcIlxuXG4gIGxldCBhX3JhZGlvZ3JvdXAgPSBzdHJpbmdfYXR0cmliIFwicmFkaW9ncm91cFwiXG5cbiAgbGV0IGFfcmVxdWlyZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInJlcXVpcmVkXCJcblxuICBsZXQgYV9yZXZlcnNlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicmVzZXJ2ZWRcIlxuXG4gIGxldCBhX3NhbmRib3ggeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc2FuZGJveCBcInNhbmRib3hcIiB4XG5cbiAgbGV0IGFfc3BlbGxjaGVjayBzYyA9XG4gICAgYm9vbF9hdHRyaWIgXCJzcGVsbGNoZWNrXCIgc2NcblxuICBsZXQgYV9zY29wZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInNjb3BlZFwiXG5cbiAgbGV0IGFfc2VhbWxlc3MgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInNlYW1sZXNzXCJcblxuICBsZXQgYV9zaXplcyBzaXplcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc2l6ZXMgXCJzaXplc1wiIHNpemVzXG5cbiAgbGV0IGFfc3BhbiA9IGludF9hdHRyaWIgXCJzcGFuXCJcblxuICAoKmxldCBhX3NyY2RvYyopXG4gIGxldCBhX3NyY2xhbmcgPSBzdHJpbmdfYXR0cmliIFwieG1sOmxhbmdcIlxuXG4gIGxldCBhX3NyY3NldCA9IHNyY3NldF9hdHRyaWIgXCJzcmNzZXRcIlxuXG4gIGxldCBhX2ltZ19zaXplcyA9IGNvbW1hX3NlcF9hdHRyaWIgXCJzaXplc1wiXG5cbiAgbGV0IGFfc3RhcnQgPSBpbnRfYXR0cmliIFwic3RhcnRcIlxuXG4gIGxldCBhX3N0ZXAgc3RlcCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc3RlcCBcInN0ZXBcIiBzdGVwXG5cbiAgbGV0IGFfdHJhbnNsYXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHJhbnNsYXRlXCIgeFxuICBcbiAgbGV0IGFfd3JhcCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIndyYXBcIiB4XG5cbiAgbGV0IGFfc2l6ZSA9IGludF9hdHRyaWIgXCJzaXplXCJcblxuICBsZXQgYV9pbnB1dF90eXBlIGl0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnB1dF90eXBlIFwidHlwZVwiIGl0XG5cbiAgbGV0IGFfbWVudV90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV9jb21tYW5kX3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX2J1dHRvbl90eXBlIGJ0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnB1dF90eXBlIFwidHlwZVwiIGJ0XG5cbiAgbGV0IGFfc2NyaXB0X3R5cGUgc2MgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zY3JpcHRfdHlwZSBcInR5cGVcIiBzY1xuXG4gIGxldCBhX211bHRpcGxlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJtdWx0aXBsZVwiXG5cbiAgbGV0IGFfY29scyA9IGludF9hdHRyaWIgXCJjb2xzXCJcblxuICBsZXQgYV9yb3dzID0gaW50X2F0dHJpYiBcInJvd3NcIlxuXG4gIGxldCBhX3N1bW1hcnkgPSBzdHJpbmdfYXR0cmliIFwic3VtbWFyeVwiXG5cbiAgbGV0IGFfYWxpZ24geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhbGlnblwiIHhcblxuICBsZXQgYV9heGlzID0gc3RyaW5nX2F0dHJpYiBcImF4aXNcIlxuXG4gIGxldCBhX2NvbHNwYW4gPSBpbnRfYXR0cmliIFwiY29sc3BhblwiXG5cbiAgbGV0IGFfaGVhZGVycyA9IHNwYWNlX3NlcF9hdHRyaWIgXCJoZWFkZXJzXCJcblxuICBsZXQgYV9yb3dzcGFuID0gaW50X2F0dHJpYiBcInJvd3NwYW5cIlxuXG4gIGxldCBhX3Njb3BlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic2NvcGVcIiB4XG5cbiAgbGV0IGFfYm9yZGVyID0gaW50X2F0dHJpYiBcImJvcmRlclwiXG5cbiAgbGV0IGFfcnVsZXMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJydWxlc1wiIHhcblxuICBsZXQgYV9jaGFyIGMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2NoYXJhY3RlciBcImNoYXJcIiBjXG5cbiAgbGV0IGFfZGF0YSA9IHVyaV9hdHRyaWIgXCJkYXRhXCJcblxuICBsZXQgYV9jb2RldHlwZSA9IHN0cmluZ19hdHRyaWIgXCJjb2RldHlwZVwiXG5cbiAgbGV0IGFfZnJhbWVib3JkZXIgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJmcmFtZWJvcmRlclwiIHhcblxuICBsZXQgYV9tYXJnaW5oZWlnaHQgPSBpbnRfYXR0cmliIFwibWFyZ2luaGVpZ2h0XCJcblxuICBsZXQgYV9tYXJnaW53aWR0aCA9IGludF9hdHRyaWIgXCJtYXJnaW53aWR0aFwiXG5cbiAgbGV0IGFfc2Nyb2xsaW5nIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic2Nyb2xsaW5nXCIgeFxuXG4gIGxldCBhX3RhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJ0YXJnZXRcIlxuXG4gIGxldCBhX2NvbnRlbnQgPSBzdHJpbmdfYXR0cmliIFwiY29udGVudFwiXG5cbiAgbGV0IGFfaHR0cF9lcXVpdiA9IHN0cmluZ19hdHRyaWIgXCJodHRwLWVxdWl2XCJcblxuICBsZXQgYV9tZWRpYSA9IG1lZGlhZGVzY19hdHRyaWIgXCJtZWRpYVwiXG5cbiAgKCogQVJJQSAqKVxuXG4gIGxldCBhX3JvbGUgPSBzcGFjZV9zZXBfYXR0cmliIFwicm9sZVwiXG5cbiAgbGV0IGFfYXJpYSBuYW1lID0gc3BhY2Vfc2VwX2F0dHJpYiAoXCJhcmlhLVwiIF4gbmFtZSlcblxuICB0eXBlICdhIGVsdCA9IFhtbC5lbHRcblxuICB0eXBlICgnYSwgJ2IpIG51bGxhcnkgPSA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+IHVuaXQgLT4gJ2IgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdW5hcnkgPSA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICdiIGVsdCB3cmFwIC0+ICdjIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHN0YXIgPVxuICAgID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gKCdiIGVsdCkgbGlzdF93cmFwIC0+ICdjIGVsdFxuXG4gIGxldCB0ZXJtaW5hbCB0YWcgP2EgKCkgPSBYbWwubGVhZiA/YSB0YWdcblxuICBsZXQgdW5hcnkgdGFnID9hIGVsdCA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLnNpbmdsZXRvbiBlbHQpXG5cbiAgbGV0IHN0YXIgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gIGxldCBwbHVzIHRhZyA/YSBlbHQgZWx0cyA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLmNvbnMgZWx0IGVsdHMpXG5cbiAgbGV0IG9wdGlvbl9jb25zIG9wdCBlbHRzID1cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbHRzXG4gICAgfCBTb21lIHggLT4gVy5jb25zIHggZWx0c1xuXG4gIGxldCBib2R5ID0gc3RhciBcImJvZHlcIlxuXG4gIGxldCBoZWFkID0gcGx1cyBcImhlYWRcIlxuXG4gIGxldCB0aXRsZSA9IHVuYXJ5IFwidGl0bGVcIlxuXG4gIGxldCBodG1sID9hIGhlYWQgYm9keSA9XG4gICAgbGV0IGNvbnRlbnQgPSBXLmNvbnMgaGVhZCAoVy5zaW5nbGV0b24gYm9keSkgaW5cbiAgICBYbWwubm9kZSA/YSBcImh0bWxcIiBjb250ZW50XG5cbiAgbGV0IGZvb3RlciA9IHN0YXIgXCJmb290ZXJcIlxuXG4gIGxldCBoZWFkZXIgPSBzdGFyIFwiaGVhZGVyXCJcblxuICBsZXQgc2VjdGlvbiA9IHN0YXIgXCJzZWN0aW9uXCJcblxuICBsZXQgbmF2ID0gc3RhciBcIm5hdlwiXG5cbiAgbGV0IHR4dCBzID0gWG1sLnBjZGF0YSBzXG4gIGxldCBwY2RhdGEgPSB0eHRcblxuICBsZXQgZW50aXR5ID0gWG1sLmVudGl0eVxuXG4gIGxldCBzcGFjZSAoKSA9IGVudGl0eSBcIm5ic3BcIlxuXG4gIGxldCBjZGF0YSA9IFhtbC5jZGF0YVxuXG4gIGxldCBjZGF0YV9zY3JpcHQgPSBYbWwuY2RhdGFfc2NyaXB0XG5cbiAgbGV0IGNkYXRhX3N0eWxlID0gWG1sLmNkYXRhX3N0eWxlXG5cbiAgbGV0IGgxID0gc3RhciBcImgxXCJcblxuICBsZXQgaDIgPSBzdGFyIFwiaDJcIlxuXG4gIGxldCBoMyA9IHN0YXIgXCJoM1wiXG5cbiAgbGV0IGg0ID0gc3RhciBcImg0XCJcblxuICBsZXQgaDUgPSBzdGFyIFwiaDVcIlxuXG4gIGxldCBoNiA9IHN0YXIgXCJoNlwiXG5cbiAgbGV0IGhncm91cCA9IHN0YXIgXCJoZ3JvdXBcIlxuXG4gIGxldCBhZGRyZXNzID0gc3RhciBcImFkZHJlc3NcIlxuXG4gIGxldCBibG9ja3F1b3RlID0gc3RhciBcImJsb2NrcXVvdGVcIlxuXG4gIGxldCBkaWFsb2cgPSBzdGFyIFwiZGlhbG9nXCJcblxuICBsZXQgZGl2ID0gc3RhciBcImRpdlwiXG5cbiAgbGV0IHAgPSBzdGFyIFwicFwiXG5cbiAgbGV0IHByZSA9IHN0YXIgXCJwcmVcIlxuXG4gIGxldCBhYmJyID0gc3RhciBcImFiYnJcIlxuXG4gIGxldCBiciA9IHRlcm1pbmFsIFwiYnJcIlxuXG4gIGxldCBjaXRlID0gc3RhciBcImNpdGVcIlxuXG4gIGxldCBjb2RlID0gc3RhciBcImNvZGVcIlxuXG4gIGxldCBkZm4gPSBzdGFyIFwiZGZuXCJcblxuICBsZXQgZW0gPSBzdGFyIFwiZW1cIlxuXG4gIGxldCBrYmQgPSBzdGFyIFwia2JkXCJcblxuICBsZXQgcSA9IHN0YXIgXCJxXCJcblxuICBsZXQgc2FtcCA9IHN0YXIgXCJzYW1wXCJcblxuICBsZXQgc3BhbiA9IHN0YXIgXCJzcGFuXCJcblxuICBsZXQgc3Ryb25nID0gc3RhciBcInN0cm9uZ1wiXG5cbiAgbGV0IHRpbWUgPSBzdGFyIFwidGltZVwiXG5cbiAgbGV0IHZhciA9IHN0YXIgXCJ2YXJcIlxuXG4gIGxldCBhID0gc3RhciBcImFcIlxuXG4gIGxldCBkbCA9IHN0YXIgXCJkbFwiXG5cbiAgbGV0IG9sID0gc3RhciBcIm9sXCJcblxuICBsZXQgdWwgPSBzdGFyIFwidWxcIlxuXG4gIGxldCBkZCA9IHN0YXIgXCJkZFwiXG5cbiAgbGV0IGR0ID0gc3RhciBcImR0XCJcblxuICBsZXQgbGkgPSBzdGFyIFwibGlcIlxuXG4gIGxldCBociA9IHRlcm1pbmFsIFwiaHJcIlxuXG4gIGxldCBiID0gc3RhciBcImJcIlxuXG4gIGxldCBpID0gc3RhciBcImlcIlxuXG4gIGxldCB1ID0gc3RhciBcInVcIlxuXG4gIGxldCBzbWFsbCA9IHN0YXIgXCJzbWFsbFwiXG5cbiAgbGV0IHN1YiA9IHN0YXIgXCJzdWJcIlxuXG4gIGxldCBzdXAgPSBzdGFyIFwic3VwXCJcblxuICBsZXQgbWFyayA9IHN0YXIgXCJtYXJrXCJcblxuICBsZXQgcnAgPSBzdGFyIFwicnBcIlxuXG4gIGxldCBydCA9IHN0YXIgXCJydFwiXG5cbiAgbGV0IHJ1YnkgPSBzdGFyIFwicnVieVwiXG5cbiAgbGV0IHdiciA9IHRlcm1pbmFsIFwid2JyXCJcblxuICAoKiBWQiAqKVxuICB0eXBlIHNoYXBlID0gWyB8IGBSZWN0IHwgYENpcmNsZSB8IGBQb2x5IHwgYERlZmF1bHQgXVxuXG4gIGxldCBiZG8gfmRpciA/KGEgPSBbXSkgZWx0cyA9IFhtbC5ub2RlIH5hOiAoKGFfZGlyIGRpcikgOjogYSkgXCJiZG9cIiBlbHRzXG5cbiAgbGV0IGFfZGF0ZXRpbWUgPSBzdHJpbmdfYXR0cmliIFwiZGF0ZXRpbWVcIlxuXG4gIGxldCBhX3NoYXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic2hhcGVcIiB4XG5cbiAgbGV0IGFfY29vcmRzIGNvb3JkcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcImNvb3Jkc1wiIGNvb3Jkc1xuXG4gIGxldCBhX3VzZW1hcCA9IHN0cmluZ19hdHRyaWIgXCJ1c2VtYXBcIlxuXG4gIGxldCBhX2RlZmVyID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJkZWZlclwiXG5cbiAgbGV0IGFfbGFiZWwgPSBzdHJpbmdfYXR0cmliIFwibGFiZWxcIlxuXG4gIGxldCBhcmVhIH5hbHQgPyhhID0gW10pICgpID0gWG1sLmxlYWYgfmE6ICgoYV9hbHQgYWx0KSA6OiBhKSBcImFyZWFcIlxuXG4gIGxldCBtYXAgPSBzdGFyIFwibWFwXCJcblxuICBsZXQgZGVsID0gc3RhciBcImRlbFwiXG5cbiAgbGV0IGlucyA9IHN0YXIgXCJpbnNcIlxuXG4gIGxldCBzY3JpcHQgPSB1bmFyeSBcInNjcmlwdFwiXG5cbiAgbGV0IG5vc2NyaXB0ID0gc3RhciBcIm5vc2NyaXB0XCJcblxuICBsZXQgdGVtcGxhdGUgPSBzdGFyIFwidGVtcGxhdGVcIlxuXG4gIGxldCBhcnRpY2xlID0gc3RhciBcImFydGljbGVcIlxuXG4gIGxldCBhc2lkZSA9IHN0YXIgXCJhc2lkZVwiXG5cbiAgbGV0IG1haW4gPSBzdGFyIFwibWFpblwiXG5cbiAgbGV0IHZpZGVvX2F1ZGlvIG5hbWUgP3NyYyA/c3JjcyA/KGEgPSBbXSkgZWx0cyA9XG4gICAgbGV0IGEgPVxuICAgICAgbWF0Y2ggc3JjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhXG4gICAgICB8IFNvbWUgdXJpIC0+IChhX3NyYyB1cmkpIDo6IGFcbiAgICBpblxuICAgIG1hdGNoIHNyY3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBYbWwubm9kZSBuYW1lIH5hIGVsdHNcbiAgICB8IFNvbWUgc3JjcyAtPiBYbWwubm9kZSBuYW1lIH5hIChXLmFwcGVuZCBzcmNzIGVsdHMpXG5cbiAgbGV0IGF1ZGlvID0gdmlkZW9fYXVkaW8gXCJhdWRpb1wiXG5cbiAgbGV0IHZpZGVvID0gdmlkZW9fYXVkaW8gXCJ2aWRlb1wiXG5cbiAgbGV0IGNhbnZhcyA9IHN0YXIgXCJjYW52YXNcIlxuXG4gIGxldCBjb21tYW5kIH5sYWJlbCA/KGEgPSBbXSkgKCkgPVxuICAgIFhtbC5sZWFmIH5hOiAoKGFfbGFiZWwgbGFiZWwpIDo6IGEpIFwiY29tbWFuZFwiXG5cbiAgbGV0IG1lbnUgP2NoaWxkcmVuID9hICgpID1cbiAgICBsZXQgY2hpbGRyZW4gPSBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gVy5uaWwgKClcbiAgICAgIHwgU29tZSAoYExpcyBsKVxuICAgICAgfCBTb21lIChgRmxvd3MgbCkgLT4gbCBpblxuICAgIFhtbC5ub2RlID9hIFwibWVudVwiIGNoaWxkcmVuXG5cbiAgbGV0IGVtYmVkID0gdGVybWluYWwgXCJlbWJlZFwiXG5cbiAgbGV0IHNvdXJjZSA9IHRlcm1pbmFsIFwic291cmNlXCJcblxuICBsZXQgbWV0ZXIgPSBzdGFyIFwibWV0ZXJcIlxuXG4gIGxldCBvdXRwdXRfZWx0ID0gc3RhciBcIm91dHB1dFwiXG5cbiAgbGV0IGZvcm0gPSBzdGFyIFwiZm9ybVwiXG5cbiAgbGV0IHN2ZyA/KGEgPSBbXSkgY2hpbGRyZW4gPVxuICAgIFN2Zy50b2VsdCAoU3ZnLnN2ZyB+YSBjaGlsZHJlbilcblxuICBsZXQgaW5wdXQgPSB0ZXJtaW5hbCBcImlucHV0XCJcblxuICBsZXQga2V5Z2VuID0gdGVybWluYWwgXCJrZXlnZW5cIlxuXG4gIGxldCBsYWJlbCA9IHN0YXIgXCJsYWJlbFwiXG5cbiAgbGV0IG9wdGlvbiA9IHVuYXJ5IFwib3B0aW9uXCJcblxuICBsZXQgc2VsZWN0ID0gc3RhciBcInNlbGVjdFwiXG5cbiAgbGV0IHRleHRhcmVhID0gdW5hcnkgXCJ0ZXh0YXJlYVwiXG5cbiAgbGV0IGJ1dHRvbiA9IHN0YXIgXCJidXR0b25cIlxuXG4gIGxldCBkYXRhbGlzdCA/Y2hpbGRyZW4gP2EgKCkgPVxuICAgIGxldCBjaGlsZHJlbiA9IG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBXLm5pbCAoKVxuICAgICAgfCBTb21lIChgT3B0aW9ucyB4IHwgYFBocmFzIHgpIC0+IHggaW5cbiAgICBYbWwubm9kZSA/YSBcImRhdGFsaXN0XCIgY2hpbGRyZW5cblxuICBsZXQgcHJvZ3Jlc3MgPSBzdGFyIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBsZWdlbmQgPSBzdGFyIFwibGVnZW5kXCJcblxuICBsZXQgZGV0YWlscyBzdW1tYXJ5ID9hIGNoaWxkcmVuID1cbiAgICBwbHVzIFwiZGV0YWlsc1wiID9hIHN1bW1hcnkgY2hpbGRyZW5cblxuICBsZXQgc3VtbWFyeSA9IHN0YXIgXCJzdW1tYXJ5XCJcblxuICBsZXQgZmllbGRzZXQgP2xlZ2VuZCA/YSBlbHRzID1cbiAgICBYbWwubm9kZSA/YSBcImZpZWxkc2V0XCIgKG9wdGlvbl9jb25zIGxlZ2VuZCBlbHRzKVxuXG4gIGxldCBvcHRncm91cCB+bGFiZWwgPyhhID0gW10pIGVsdHMgPVxuICAgIFhtbC5ub2RlIH5hOiAoKGFfbGFiZWwgbGFiZWwpIDo6IGEpIFwib3B0Z3JvdXBcIiBlbHRzXG5cbiAgbGV0IGZpZ2NhcHRpb24gPSBzdGFyIFwiZmlnY2FwdGlvblwiXG4gIGxldCBmaWd1cmUgP2ZpZ2NhcHRpb24gP2EgZWx0cyA9XG4gICAgbGV0IGNvbnRlbnQgPSBtYXRjaCBmaWdjYXB0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbHRzXG4gICAgICB8IFNvbWUgKGBUb3AgYykgLT4gVy5jb25zIGMgZWx0c1xuICAgICAgfCBTb21lIChgQm90dG9tIGMpIC0+IFcuYXBwZW5kIGVsdHMgKFcuc2luZ2xldG9uIGMpXG4gICAgaW5cbiAgICBYbWwubm9kZSA/YSBcImZpZ3VyZVwiIGNvbnRlbnRcblxuICBsZXQgY2FwdGlvbiA9IHN0YXIgXCJjYXB0aW9uXCJcblxuICBsZXQgdGFibGV4ID9jYXB0aW9uID9jb2x1bW5zID90aGVhZCA/dGZvb3QgP2EgZWx0cyA9XG4gICAgbGV0IGNvbnRlbnQgPSBvcHRpb25fY29ucyB0aGVhZCAob3B0aW9uX2NvbnMgdGZvb3QgZWx0cykgaW5cbiAgICBsZXQgY29udGVudCA9IG1hdGNoIGNvbHVtbnMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNvbnRlbnRcbiAgICAgIHwgU29tZSBjb2x1bW5zIC0+IFcuYXBwZW5kIGNvbHVtbnMgY29udGVudCBpblxuICAgIGxldCBjb250ZW50ID0gb3B0aW9uX2NvbnMgY2FwdGlvbiBjb250ZW50IGluXG4gICAgWG1sLm5vZGUgP2EgXCJ0YWJsZVwiIGNvbnRlbnRcblxuICBsZXQgdGFibGUgPSB0YWJsZXhcblxuICBsZXQgdGQgPSBzdGFyIFwidGRcIlxuXG4gIGxldCB0aCA9IHN0YXIgXCJ0aFwiXG5cbiAgbGV0IHRyID0gc3RhciBcInRyXCJcblxuICBsZXQgY29sZ3JvdXAgPSBzdGFyIFwiY29sZ3JvdXBcIlxuXG4gIGxldCBjb2wgPSB0ZXJtaW5hbCBcImNvbFwiXG5cbiAgbGV0IHRoZWFkID0gc3RhciBcInRoZWFkXCJcblxuICBsZXQgdGJvZHkgPSBzdGFyIFwidGJvZHlcIlxuXG4gIGxldCB0Zm9vdCA9IHN0YXIgXCJ0Zm9vdFwiXG5cbiAgbGV0IGlmcmFtZSA9IHN0YXIgXCJpZnJhbWVcIlxuXG4gIGxldCBvYmplY3RfID9wYXJhbXMgPyhhID0gW10pIGVsdHMgPVxuICAgIGxldCBlbHRzID0gbWF0Y2ggcGFyYW1zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbHRzXG4gICAgICB8IFNvbWUgZSAtPiBXLmFwcGVuZCBlIGVsdHMgaW5cbiAgICBYbWwubm9kZSB+YSBcIm9iamVjdFwiIGVsdHNcblxuICBsZXQgcGFyYW0gPSB0ZXJtaW5hbCBcInBhcmFtXCJcblxuICBsZXQgaW1nIH5zcmMgfmFsdCA/KGEgPSBbXSkgKCkgPVxuICAgIGxldCBhID0gKGFfc3JjIHNyYykgOjogKGFfYWx0IGFsdCkgOjogYSBpblxuICAgIFhtbC5sZWFmIH5hIFwiaW1nXCJcblxuICBsZXQgcGljdHVyZSB+aW1nID9hIGVsdHMgPVxuICAgIGxldCB0YWlsX25vZGUgPSBXLmNvbnMgaW1nIChXLm5pbCAoKSkgaW5cbiAgICBsZXQgY29udGVudCA9IFcuYXBwZW5kIGVsdHMgdGFpbF9ub2RlIGluXG4gICAgWG1sLm5vZGUgP2EgXCJwaWN0dXJlXCIgY29udGVudFxuXG4gIGxldCBtZXRhID0gdGVybWluYWwgXCJtZXRhXCJcblxuICBsZXQgc3R5bGUgPyhhID0gW10pIGVsdHMgPSBYbWwubm9kZSB+YSBcInN0eWxlXCIgZWx0c1xuXG4gIGxldCBsaW5rIH5yZWwgfmhyZWYgPyhhID0gW10pICgpID1cbiAgICBYbWwubGVhZiB+YTogKChhX3JlbCByZWwpIDo6IChhX2hyZWYgaHJlZikgOjogYSkgXCJsaW5rXCJcblxuICBsZXQgYmFzZSA9IHRlcm1pbmFsIFwiYmFzZVwiXG5cbiAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgKCogQ29udmVyc2lvbiBmcm9tIGFuZCB0byBYbWwgbW9kdWxlICopXG4gIGxldCB0b3QgeCA9IHhcblxuICBsZXQgdG90bCB4ID0geFxuXG4gIGxldCB0b2VsdCB4ID0geFxuXG4gIGxldCB0b2VsdGwgeCA9IHhcblxuICB0eXBlIGRvYyAgPSBbIGBIdG1sIF0gZWx0XG4gIGxldCBkb2NfdG9lbHQgeCA9IHhcblxuICBtb2R1bGUgSSA9IFhtbF9zdHJlYW0uSW1wb3J0KFhtbClcbiAgbGV0IG9mX3NlcSBzID0gdG90bCBAQCBJLm9mX3NlcSBzXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuXG4gICAgbGV0IGRhdGEgcyA9IFhtbC5lbmNvZGVkcGNkYXRhIHNcblxuICAgIGxldCBsZWFmIHRhZyA/YSAoKSA9IFhtbC5sZWFmID9hIHRhZ1xuXG4gICAgbGV0IG5vZGUgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gICAgbGV0IGNvZXJjZV9lbHQgeCA9IHhcblxuICAgIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgICBsZXQgaW50X2F0dHJpYiA9IFhtbC5pbnRfYXR0cmliXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgICBsZXQgdXJpX2F0dHJpYiBhIHMgPSBYbWwudXJpX2F0dHJpYiBhIHNcblxuICAgIGxldCBzcGFjZV9zZXBfYXR0cmliID0gWG1sLnNwYWNlX3NlcF9hdHRyaWJcblxuICAgIGxldCBjb21tYV9zZXBfYXR0cmliID0gWG1sLmNvbW1hX3NlcF9hdHRyaWJcblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBXcmFwcGVkX2Z1bmN0aW9uc1xuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsJ2IpIFcuZnQgPSAnYSAtPiAnYikgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuXG4gIGxldCBzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiA9IGZ1bmN0aW9uXG4gICAgfCBgQWxsb3dfZm9ybXMgLT4gXCJhbGxvdy1mb3Jtc1wiXG4gICAgfCBgQWxsb3dfcG9pbnRlcl9sb2NrIC0+IFwiYWxsb3ctcG9pbnRlci1sb2NrXCJcbiAgICB8IGBBbGxvd19wb3B1cHMgLT4gXCJhbGxvdy1wb3B1cHNcIlxuICAgIHwgYEFsbG93X3RvcF9uYXZpZ2F0aW9uIC0+IFwiYWxsb3ctdG9wLW5hdmlnYXRpb25cIlxuICAgIHwgYEFsbG93X3NhbWVfb3JpZ2luIC0+IFwiYWxsb3ctc2FtZS1vcmlnaW5cIlxuICAgIHwgYEFsbG93X3NjcmlwdCAtPiBcImFsbG93LXNjcmlwdFwiXG5cbiAgbGV0IHN0cmluZ19vZl9saW5rdHlwZSA9IGZ1bmN0aW9uXG4gICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICB8IGBBcmNoaXZlcyAtPiBcImFyY2hpdmVzXCJcbiAgICB8IGBBdXRob3IgLT4gXCJhdXRob3JcIlxuICAgIHwgYEJvb2ttYXJrIC0+IFwiYm9va21hcmtcIlxuICAgIHwgYENhbm9uaWNhbCAtPiBcImNhbm9uaWNhbFwiXG4gICAgfCBgRG5zX3ByZWZldGNoIC0+IFwiZG5zLXByZWZldGNoXCJcbiAgICB8IGBFeHRlcm5hbCAtPiBcImV4dGVybmFsXCJcbiAgICB8IGBGaXJzdCAtPiBcImZpcnN0XCJcbiAgICB8IGBIZWxwIC0+IFwiaGVscFwiXG4gICAgfCBgSWNvbiAtPiBcImljb25cIlxuICAgIHwgYEluZGV4IC0+IFwiaW5kZXhcIlxuICAgIHwgYExhc3QgLT4gXCJsYXN0XCJcbiAgICB8IGBMaWNlbnNlIC0+IFwibGljZW5zZVwiXG4gICAgfCBgTWFuaWZlc3QgLT4gXCJtYW5pZmVzdFwiXG4gICAgfCBgTWUgLT4gXCJtZVwiXG4gICAgfCBgTW9kdWxlcHJlbG9hZCAtPiBcIm1vZHVsZXByZWxvYWRcIlxuICAgIHwgYE5leHQgLT4gXCJuZXh0XCJcbiAgICB8IGBOb2ZvbGxvdyAtPiBcIm5vZm9sbG93XCJcbiAgICB8IGBOb29wZW5lciAtPiBcIm5vb3BlbmVyXCJcbiAgICB8IGBOb3JlZmVycmVyIC0+IFwibm9yZWZlcnJlclwiXG4gICAgfCBgT3BlbmVyIC0+IFwib3BlbmVyXCJcbiAgICB8IGBQaW5nYmFjayAtPiBcInBpbmdiYWNrXCJcbiAgICB8IGBQcmVjb25uZWN0IC0+IFwicHJlY29ubmVjdFwiXG4gICAgfCBgUHJlZmV0Y2ggLT4gXCJwcmVmZXRjaFwiXG4gICAgfCBgUHJlbG9hZCAtPiBcInByZWxvYWRcIlxuICAgIHwgYFByZXJlbmRlciAtPiBcInByZXJlbmRlclwiXG4gICAgfCBgUHJldiAtPiBcInByZXZcIlxuICAgIHwgYFNlYXJjaCAtPiBcInNlYXJjaFwiXG4gICAgfCBgU3R5bGVzaGVldCAtPiBcInN0eWxlc2hlZXRcIlxuICAgIHwgYFNpZGViYXIgLT4gXCJzaWRlYmFyXCJcbiAgICB8IGBUYWcgLT4gXCJ0YWdcIlxuICAgIHwgYFVwIC0+IFwidXBcIlxuICAgIHwgYE90aGVyIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfbWVkaWFkZXNjX3Rva2VuID1cbiAgICBmdW5jdGlvblxuICAgIHwgYEFsbCAtPiBcImFsbFwiXG4gICAgfCBgQXVyYWwgLT4gXCJhdXJhbFwiXG4gICAgfCBgQnJhaWxsZSAtPiBcImJyYWlsbGVcIlxuICAgIHwgYEVtYm9zc2VkIC0+IFwiZW1ib3NzZWRcIlxuICAgIHwgYEhhbmRoZWxkIC0+IFwiaGFuZGhlbGRcIlxuICAgIHwgYFByaW50IC0+IFwicHJpbnRcIlxuICAgIHwgYFByb2plY3Rpb24gLT4gXCJwcm9qZWN0aW9uXCJcbiAgICB8IGBTY3JlZW4gLT4gXCJzY3JlZW5cIlxuICAgIHwgYFNwZWVjaCAtPiBcInNwZWVjaFwiXG4gICAgfCBgVHR5IC0+IFwidHR5XCJcbiAgICB8IGBUdiAtPiBcInR2XCJcbiAgICB8IGBSYXdfbWVkaWFkZXNjIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kgPSBmdW5jdGlvblxuICAgIHwgYEVtcHR5IC0+IFwiXCJcbiAgICB8IGBOb19yZWZlcnJlciAtPiBcIm5vLXJlZmVycmVyXCJcbiAgICB8IGBOb19yZWZlcnJlcl93aGVuX2Rvd25ncmFkZSAtPiBcIm5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlXCJcbiAgICB8IGBPcmlnaW4gLT4gXCJvcmlnaW5cIlxuICAgIHwgYE9yaWdpbl93aGVuX2Nyb3NzX29yaWdpbiAtPiBcIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpblwiXG4gICAgfCBgU2FtZV9vcmlnaW4gLT4gXCJzYW1lLW9yaWdpblwiXG4gICAgfCBgU3RyaWN0X29yaWdpbiAtPiBcInN0cmljdC1vcmlnaW5cIlxuICAgIHwgYFN0cmljdF9vcmlnaW5fd2hlbl9jcm9zc19vcmlnaW4gLT4gXCJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luXCJcbiAgICB8IGBVbnNhZmVfdXJsIC0+IFwidW5zYWZlLXVybFwiXG5cbiAgbGV0IHN0cmluZ19vZl9iaWdfdmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBgQW5vbnltb3VzIC0+IFwiYW5vbnltb3VzXCJcbiAgICB8IGBBc3luYyAtPiBcImFzeW5jXCJcbiAgICB8IGBBdXRvZm9jdXMgLT4gXCJhdXRvZm9jdXNcIlxuICAgIHwgYEF1dG9wbGF5IC0+IFwiYXV0b3BsYXlcIlxuICAgIHwgYENoZWNrZWQgLT4gXCJjaGVja2VkXCJcbiAgICB8IGBEZWZlciAtPiBcImRlZmVyXCJcbiAgICB8IGBEaXNhYmxlZCAtPiBcImRpc2FibGVkXCJcbiAgICB8IGBNdXRlZCAtPiBcIm11dGVkXCJcbiAgICB8IGBSZWFkT25seSAtPiBcInJlYWRvbmx5XCJcbiAgICB8IGBSZWN0IC0+IFwicmVjdFwiXG4gICAgfCBgU2VsZWN0ZWQgLT4gXCJzZWxlY3RlZFwiXG4gICAgfCBgVXNlX2NyZWRlbnRpYWxzIC0+IFwidXNlLWNyZWRlbnRpYWxzXCJcbiAgICB8IGBXM19vcmdfMTk5OV94aHRtbCAtPiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuICAgIHwgYEFsbCAtPiBcImFsbFwiXG4gICAgfCBgUHJlc2VydmUgLT4gXCJwcmVzZXJ2ZVwiXG4gICAgfCBgRGVmYXVsdCAtPiBcImRlZmF1bHRcIlxuICAgIHwgYENvbnRyb2xzIC0+IFwiY29udHJvbHNcIlxuICAgIHwgYEx0ciAtPiBcImx0clwiXG4gICAgfCBgUnRsIC0+IFwicnRsXCJcbiAgICB8IGBHZXQgLT4gXCJHRVRcIlxuICAgIHwgYFBvc3QgLT4gXCJQT1NUXCJcbiAgICB8IGBGb3Jtbm92YWxpZGF0ZSAtPiBcImZvcm1ub3ZhbGlkYXRlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYElzbWFwIC0+IFwiaXNtYXBcIlxuICAgIHwgYExvb3AgLT4gXCJsb29wXCJcbiAgICB8IGBOb3ZhbGlkYXRlIC0+IFwibm92YWxpZGF0ZVwiXG4gICAgfCBgT3BlbiAtPiBcIm9wZW5cIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBNZXRhZGF0YSAtPiBcIm1ldGFkYXRhXCJcbiAgICB8IGBBdWRpbyAtPiBcImF1ZGlvXCJcbiAgICB8IGBQdWJkYXRlIC0+IFwicHViZGF0ZVwiXG4gICAgfCBgUmVxdWlyZWQgLT4gXCJyZXF1aXJlZFwiXG4gICAgfCBgUmV2ZXJzZWQgLT4gXCJyZXNlcnZlZFwiXG4gICAgfCBgU2NvcGVkIC0+IFwic2NvcGVkXCJcbiAgICB8IGBTZWFtbGVzcyAtPiBcInNlYW1sZXNzXCJcbiAgICB8IGBBbnkgLT4gXCJhbnlcIlxuICAgIHwgYFNvZnQgLT4gXCJzb2Z0XCJcbiAgICB8IGBIYXJkIC0+IFwiaGFyZFwiXG4gICAgfCBgQ29udGV4dCAtPiBcImNvbnRleHRcIlxuICAgIHwgYFRvb2xiYXIgLT4gXCJ0b29sYmFyXCJcbiAgICB8IGBDb21tYW5kIC0+IFwiY29tbWFuZFwiXG4gICAgfCBgQ2hlY2tib3ggLT4gXCJjaGVja2JveFwiXG4gICAgfCBgUmFkaW8gLT4gXCJyYWRpb1wiXG4gICAgfCBgTXVsdGlwbGUgLT4gXCJtdWx0aXBsZVwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYEp1c3RpZnkgLT4gXCJqdXN0aWZ5XCJcbiAgICB8IGBDaGFyIC0+IFwiY2hhclwiXG4gICAgfCBgUm93IC0+IFwicm93XCJcbiAgICB8IGBDb2wgLT4gXCJjb2xcIlxuICAgIHwgYFJvd2dyb3VwIC0+IFwicm93Z3JvdXBcIlxuICAgIHwgYENvbGdyb3VwIC0+IFwiY29sZ3JvdXBcIlxuICAgIHwgYEdyb3VwcyAtPiBcImdyb3Vwc1wiXG4gICAgfCBgUm93cyAtPiBcInJvd3NcIlxuICAgIHwgYENvbHMgLT4gXCJjb2xzXCJcbiAgICB8IGBaZXJvIC0+IFwiMFwiXG4gICAgfCBgT25lIC0+IFwiMVwiXG4gICAgfCBgWWVzIC0+IFwieWVzXCJcbiAgICB8IGBObyAtPiBcIm5vXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgQ2lyY2xlIC0+IFwiY2lyY2xlXCJcbiAgICB8IGBQb2x5IC0+IFwicG9seVwiXG4gICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICB8IGBBcmNoaXZlcyAtPiBcImFyY2hpdmVzXCJcbiAgICB8IGBBdXRob3IgLT4gXCJhdXRob3JcIlxuICAgIHwgYEJvb2ttYXJrIC0+IFwiYm9va21hcmtcIlxuICAgIHwgYEV4dGVybmFsIC0+IFwiZXh0ZXJuYWxcIlxuICAgIHwgYEZpcnN0IC0+IFwiZmlyc3RcIlxuICAgIHwgYEhlbHAgLT4gXCJoZWxwXCJcbiAgICB8IGBJY29uIC0+IFwiaWNvblwiXG4gICAgfCBgSW5kZXggLT4gXCJpbmRleFwiXG4gICAgfCBgTGFzdCAtPiBcImxhc3RcIlxuICAgIHwgYExpY2Vuc2UgLT4gXCJsaWNlbnNlXCJcbiAgICB8IGBOZXh0IC0+IFwibmV4dFwiXG4gICAgfCBgTm9mb2xsb3cgLT4gXCJub2ZvbGxvd1wiXG4gICAgfCBgTm9yZWZlcnJlciAtPiBcIm5vcmVmZXJyZXJcIlxuICAgIHwgYFBpbmdiYWNrIC0+IFwicGluZ2JhY2tcIlxuICAgIHwgYFByZWZldGNoIC0+IFwicHJlZmV0Y2hcIlxuICAgIHwgYFByZXYgLT4gXCJwcmV2XCJcbiAgICB8IGBTZWFyY2ggLT4gXCJzZWFyY2hcIlxuICAgIHwgYFN0eWxlc2hlZXQgLT4gXCJzdHlsZXNoZWV0XCJcbiAgICB8IGBTaWRlYmFyIC0+IFwic2lkZWJhclwiXG4gICAgfCBgVGFnIC0+IFwidGFnXCJcbiAgICB8IGBVcCAtPiBcInVwXCJcbiAgICB8IGBWZXJiYXRpbSAtPiBcInZlcmJhdGltXCJcbiAgICB8IGBMYXRpbiAtPiBcImxhdGluXCJcbiAgICB8IGBMYXRpbl9uYW1lIC0+IFwibGF0aW4tbmFtZVwiXG4gICAgfCBgTGF0aW5fcHJvc2UgLT4gXCJsYXRpbi1wcm9zZVwiXG4gICAgfCBgRnVsbF93aWR0aF9sYXRpbiAtPiBcImZ1bGwtd2lkdGgtbGF0aW5cIlxuICAgIHwgYEthbmEgLT4gXCJrYW5hXCJcbiAgICB8IGBLYXRha2FuYSAtPiBcImthdGFrYW5hXCJcbiAgICB8IGBOdW1lcmljIC0+IFwibnVtZXJpY1wiXG4gICAgfCBgVGVsIC0+IFwidGVsXCJcbiAgICB8IGBFbWFpbCAtPiBcImVtYWlsXCJcbiAgICB8IGBVcmwgLT4gXCJ1cmxcIlxuICAgIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbiAgICB8IGBEZWNpbWFsIC0+IFwiZGVjaW1hbFwiXG4gICAgfCBgT3RoZXIgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9pbnB1dF90eXBlID0gZnVuY3Rpb25cbiAgICB8IGBCdXR0b24gLT4gXCJidXR0b25cIlxuICAgIHwgYENoZWNrYm94IC0+IFwiY2hlY2tib3hcIlxuICAgIHwgYENvbG9yIC0+IFwiY29sb3JcIlxuICAgIHwgYERhdGUgLT4gXCJkYXRlXCJcbiAgICB8IGBEYXRldGltZSAtPiBcImRhdGV0aW1lXCJcbiAgICB8IGBEYXRldGltZV9sb2NhbCAtPiBcImRhdGV0aW1lLWxvY2FsXCJcbiAgICB8IGBFbWFpbCAtPiBcImVtYWlsXCJcbiAgICB8IGBGaWxlIC0+IFwiZmlsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBJbWFnZSAtPiBcImltYWdlXCJcbiAgICB8IGBNb250aCAtPiBcIm1vbnRoXCJcbiAgICB8IGBOdW1iZXIgLT4gXCJudW1iZXJcIlxuICAgIHwgYFBhc3N3b3JkIC0+IFwicGFzc3dvcmRcIlxuICAgIHwgYFJhZGlvIC0+IFwicmFkaW9cIlxuICAgIHwgYFJhbmdlIC0+IFwicmFuZ2VcIlxuICAgIHwgYFJlYWRvbmx5IC0+IFwicmVhZG9ubHlcIlxuICAgIHwgYFJlc2V0IC0+IFwicmVzZXRcIlxuICAgIHwgYFNlYXJjaCAtPiBcInNlYXJjaFwiXG4gICAgfCBgU3VibWl0IC0+IFwic3VibWl0XCJcbiAgICB8IGBUZWwgLT4gXCJ0ZWxcIlxuICAgIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbiAgICB8IGBUaW1lIC0+IFwidGltZVwiXG4gICAgfCBgVXJsIC0+IFwidXJsXCJcbiAgICB8IGBXZWVrIC0+IFwid2Vla1wiXG5cbiAgbGV0IHN0cmluZ19vZl9zY3JpcHRfdHlwZSA9IGZ1bmN0aW9uXG4gIHwgYEphdmFzY3JpcHQgLT4gXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCJcbiAgfCBgTW9kdWxlIC0+IFwibW9kdWxlXCJcbiAgfCBgTWltZSBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX251bWJlcl9vcl9kYXRldGltZSA9IGZ1bmN0aW9uXG4gICAgfCBgTnVtYmVyIG4gLT4gc3RyaW5nX29mX2ludCBuXG4gICAgfCBgRGF0ZXRpbWUgdCAtPiB0XG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyYWN0ZXIgPSBTdHJpbmcubWFrZSAxXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXIgPSBzdHJpbmdfb2ZfaW50XG5cbiAgbGV0IHN0cmluZ19vZl9ib29sID0gc3RyaW5nX29mX2Jvb2xcblxuICBsZXQgb25vZmZfb2ZfYm9vbCA9IGZ1bmN0aW9uXG4gICAgfCBmYWxzZSAtPiBcIm9mZlwiXG4gICAgfCB0cnVlIC0+IFwib25cIlxuXG4gIGxldCB1bm9wdGlvbl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gXCJcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gWG1sX3ByaW50LnN0cmluZ19vZl9udW1iZXIgeFxuICAgIHwgTm9uZSAtPiBcImFueVwiXG5cbiAgbGV0IHN0cmluZ19vZl9zaXplcyA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIFN0cmluZy5jb25jYXQgXCIgXCJcbiAgICAgICAgKExpc3QubWFwIChmdW4gKHgsIHkpIC0+IFByaW50Zi5zcHJpbnRmIFwiJWR4JWRcIiB4IHkpIGwpXG4gICAgfCBOb25lIC0+XG4gICAgICBcImFueVwiXG5cbiAgbGV0IHN0cmluZ19vZl9zYW5kYm94IGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHN0cmluZ19vZl9zYW5kYm94X3Rva2VuIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJzIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIsXCIgKExpc3QubWFwIHN0cmluZ19vZl9udW1iZXIgbClcblxuICBsZXQgc3RyaW5nX29mX21lZGlhZGVzYyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX21lZGlhZGVzY190b2tlbiBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfbGlua3R5cGVzIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHN0cmluZ19vZl9saW5rdHlwZSBsKVxuXG4gIHR5cGUgaW1hZ2VfY2FuZGlkYXRlID1cbiAgICBbIGBVcmwgb2YgWG1sLnVyaVxuICAgIHwgYFVybF93aWR0aCBvZiBYbWwudXJpICogSHRtbF90eXBlcy5udW1iZXJcbiAgICB8IGBVcmxfcGl4ZWwgb2YgWG1sLnVyaSAqIEh0bWxfdHlwZXMuZmxvYXRfbnVtYmVyIF1cblxuICBsZXQgc3RyaW5nX29mX3NyY3NldCAobCA6IFs8IGltYWdlX2NhbmRpZGF0ZV0gbGlzdCkgPVxuICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICB8IGBVcmwgdXJsIC0+IFhtbC5zdHJpbmdfb2ZfdXJpIHVybFxuICAgIHwgYFVybF93aWR0aCAodXJsLCB2KSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlc3dcIiAoWG1sLnN0cmluZ19vZl91cmkgdXJsKSAoc3RyaW5nX29mX251bWJlciB2KVxuICAgIHwgYFVybF9waXhlbCAodXJsLCB2KSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlc3hcIiAoWG1sLnN0cmluZ19vZl91cmkgdXJsKSAoWG1sX3ByaW50LnN0cmluZ19vZl9udW1iZXIgdilcbiAgICBpblxuICAgIFN0cmluZy5jb25jYXQgXCIsIFwiIChMaXN0Lm1hcCBmIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9hdXRvY29tcGxldGUgKGwgOiBIdG1sX3R5cGVzLmF1dG9jb21wbGV0ZV9vcHRpb24pID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGBPbiB8IGBUb2tlbnMgW10gLT4gXCJvblwiXG4gICAgfCBgT2ZmIC0+IFwib2ZmXCJcbiAgICB8IGBUb2tlbnMgc3RycyAtPiBTdHJpbmcuY29uY2F0IFwiIFwiIHN0cnNcblxuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwgJ2IpIFcuZnQgPSAnYSAtPiAnYilcbiAgICAoU3ZnIDogU3ZnX3NpZ3MuVCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG4gIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9ucyhYbWwpKFdyYXBwZWRfZnVuY3Rpb25zKFhtbCkpKFN2ZylcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGhvcnN0ZW4gT2hsIDxvaGxAcGh5c2lrLnVuaS13dWVyemJ1cmcuZGU+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMDcgR2FicmllbCBLZXJuZWlzXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ2VjaWxlIEhlcmJlbGluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5cbm1vZHVsZSBNID0gc3RydWN0XG5cbiAgbW9kdWxlIFcgPSBYbWxfd3JhcC5Ob1dyYXBcblxuICB0eXBlICdhIHdyYXAgPSAnYVxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIGxpc3RcblxuICB0eXBlIHVyaSA9IHN0cmluZ1xuICBsZXQgdXJpX29mX3N0cmluZyBzID0gc1xuICBsZXQgc3RyaW5nX29mX3VyaSBzID0gc1xuXG4gIHR5cGUgc2VwYXJhdG9yID0gU3BhY2UgfCBDb21tYVxuXG4gICgqKiBBdHRyaWJ1dGVzICopXG5cbiAgdHlwZSBhbmFtZSA9IHN0cmluZ1xuICB0eXBlIGFjb250ZW50ID1cbiAgICB8IEFGbG9hdCBvZiBmbG9hdFxuICAgIHwgQUludCBvZiBpbnRcbiAgICB8IEFTdHIgb2Ygc3RyaW5nXG4gICAgfCBBU3RyTCBvZiBzZXBhcmF0b3IgKiBzdHJpbmcgbGlzdFxuICB0eXBlIGF0dHJpYiA9IGFuYW1lICogYWNvbnRlbnRcblxuICB0eXBlIGV2ZW50X2hhbmRsZXIgPSBzdHJpbmdcbiAgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gc3RyaW5nXG4gIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuICB0eXBlIHRvdWNoX2V2ZW50X2hhbmRsZXIgPSBzdHJpbmdcblxuICBsZXQgYWNvbnRlbnQgKF8sIGEpID0gYVxuICBsZXQgYW5hbWUgKG5hbWUsIF8pID0gbmFtZVxuXG4gIGxldCBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFGbG9hdCB2YWx1ZVxuICBsZXQgaW50X2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQUludCB2YWx1ZVxuICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IG5hbWUsIEFTdHJMIChTcGFjZSwgdmFsdWVzKVxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IG5hbWUsIEFTdHJMIChDb21tYSwgdmFsdWVzKVxuICBsZXQgZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IG1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCBrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHVyaV9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHVyaXNfYXR0cmliIG5hbWUgdmFsdWVzID0gbmFtZSwgQVN0ckwgKFNwYWNlLCB2YWx1ZXMpXG5cblxuICAoKiogRWxlbWVudCAqKVxuXG4gIHR5cGUgZW5hbWUgPSBzdHJpbmdcbiAgdHlwZSBlY29udGVudCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29tbWVudCBvZiBzdHJpbmdcbiAgICB8IEVuY29kZWRQQ0RBVEEgb2Ygc3RyaW5nXG4gICAgfCBQQ0RBVEEgb2Ygc3RyaW5nXG4gICAgfCBFbnRpdHkgb2Ygc3RyaW5nXG4gICAgfCBMZWFmIG9mIGVuYW1lICogYXR0cmliIGxpc3RcbiAgICB8IE5vZGUgb2YgZW5hbWUgKiBhdHRyaWIgbGlzdCAqIGVjb250ZW50IGxpc3RcblxuICB0eXBlIGVsdCA9ICBlY29udGVudFxuXG4gIGxldCBjb250ZW50IGVsdCA9IGVsdFxuXG4gIGxldCBlbXB0eSAoKSA9IEVtcHR5XG5cbiAgbGV0IGNvbW1lbnQgYyA9IENvbW1lbnQgY1xuXG4gIGxldCBwY2RhdGEgZCA9IFBDREFUQSBkXG4gIGxldCBlbmNvZGVkcGNkYXRhIGQgPSBFbmNvZGVkUENEQVRBIGRcbiAgbGV0IGVudGl0eSBlID0gRW50aXR5IGVcblxuICAoKiBGb3Igc2VjdXJpdHkgcmVhc29ucywgd2UgZG8gbm90IGFsbG93IFwiXV0+XCIgaW5zaWRlIENEQVRBXG4gICAgIChhcyB0aGlzIHN0cmluZyBpcyB0byBiZSBjb25zaWRlcmVkIGFzIHRoZSBlbmQgb2YgdGhlIGNkYXRhKVxuICAqKVxuICBsZXQgcmVfZW5kX2NkYXRhID0gUmUuKGNvbXBpbGUgQEAgc3RyIFwiXV0+XCIpXG4gIGxldCBlbmNvZGVkX2NkYXRhIHMxIHMyIHMgPVxuICAgIGVuY29kZWRwY2RhdGFcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIlxcbiVzXFxuJXNcXG4lc1xcblwiXG4gICAgICAgICBzMVxuICAgICAgICAgKFJlLnJlcGxhY2Vfc3RyaW5nIH5hbGw6dHJ1ZSByZV9lbmRfY2RhdGEgfmJ5OlwiXCIgcylcbiAgICAgICAgIHMyIClcblxuICBsZXQgY2RhdGEgPSBlbmNvZGVkX2NkYXRhIFwiPCFbQ0RBVEFbXCIgXCJdXT5cIlxuICBsZXQgY2RhdGFfc2NyaXB0ID0gZW5jb2RlZF9jZGF0YSBcIi8vPCFbQ0RBVEFbXCIgXCIvL11dPlwiXG4gIGxldCBjZGF0YV9zdHlsZSA9IGVuY29kZWRfY2RhdGEgXCIvKiA8IVtDREFUQVsgKi9cIiBcIi8qIF1dPiAqL1wiXG5cbiAgbGV0IGxlYWYgPyhhPVtdKSBuYW1lID0gTGVhZiAobmFtZSwgYSlcbiAgbGV0IG5vZGUgPyhhPVtdKSBuYW1lIGNoaWxkcmVuID0gTm9kZSAobmFtZSwgYSwgY2hpbGRyZW4pXG5cbmVuZFxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgWG1sX3ByaW50Lk1ha2Vfc2ltcGxlKE0pKHN0cnVjdCBsZXQgZW1wdHl0YWdzID0gW10gZW5kKVxuW0BAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbmluY2x1ZGUgWG1sX2l0ZXIuTWFrZShNKVxuaW5jbHVkZSBYbWxfcHJpbnQuTWFrZV9mbXQoTSkoc3RydWN0IGxldCBlbXB0eXRhZ3MgPSBbXSBlbmQpXG5cbmluY2x1ZGUgWG1sX3N0cmVhbS5JbXBvcnQoTSlcbmxldCBwcmludCBmbXQgeCA9IHByaW50X2xpc3Qgfm91dHB1dDooRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQpIFt4XVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE0gPSBTdmdfZi5NYWtlKFR5eG1sX3htbClcbm1vZHVsZSBQID0gWG1sX3ByaW50Lk1ha2VfdHlwZWRfZm10KFR5eG1sX3htbCkoTSlcbm1vZHVsZSBNYWtlX3ByaW50ZXIgPSBYbWxfcHJpbnQuTWFrZV90eXBlZChUeXhtbF94bWwpKE0pXG5bQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgUFxuXG5sZXQgX3BwID0gcHAgKClcbmxldCBfcHBfZWx0ID0gcHBfZWx0ICgpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTSA9IEh0bWxfZi5NYWtlKFR5eG1sX3htbCkoVHl4bWxfc3ZnKVxubW9kdWxlIFAgPSBYbWxfcHJpbnQuTWFrZV90eXBlZF9mbXQoVHl4bWxfeG1sKShNKVxubW9kdWxlIE1ha2VfcHJpbnRlciA9IFhtbF9wcmludC5NYWtlX3R5cGVkKFR5eG1sX3htbCkoTSlcbltAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgUFxuXG5sZXQgX3BwID0gcHAgKClcbmxldCBfcHBfZWx0ID0gcHBfZWx0ICgpXG4iLCIoKiBSZWFjdGl2ZURhdGFcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oaHVnby9yZWFjdGl2ZURhdGFcbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlICdhIGRhdGFcbiAgdHlwZSAnYSBwYXRjaFxuICB2YWwgbWVyZ2UgOiAnYSBwYXRjaCAtPiAnYSBkYXRhIC0+ICdhIGRhdGFcbiAgdmFsIG1hcF9wYXRjaCA6ICgnYSAtPiAnYikgLT4gJ2EgcGF0Y2ggLT4gJ2IgcGF0Y2hcbiAgdmFsIG1hcF9kYXRhIDogKCdhIC0+ICdiKSAtPiAnYSBkYXRhIC0+ICdiIGRhdGFcbiAgdmFsIGVtcHR5IDogJ2EgZGF0YVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgZGF0YSAtPiAnYSBkYXRhIC0+IGJvb2xcbiAgdmFsIGRpZmYgOiBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgZGF0YSAtPiAnYSBkYXRhIC0+ICdhIHBhdGNoXG5lbmRcbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZGF0YVxuICB0eXBlICdhIHBhdGNoXG4gIHR5cGUgJ2EgbXNnID0gUGF0Y2ggb2YgJ2EgcGF0Y2ggfCBTZXQgb2YgJ2EgZGF0YVxuICB0eXBlICdhIGhhbmRsZVxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBjcmVhdGUgOiAnYSBkYXRhIC0+ICdhIHQgKiAnYSBoYW5kbGVcbiAgdmFsIGZyb21fZXZlbnQgOiAnYSBkYXRhIC0+ICdhIG1zZyBSZWFjdC5FLnQgLT4gJ2EgdFxuICB2YWwgZnJvbV9zaWduYWwgOiA/ZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGRhdGEgUmVhY3QuUy50IC0+ICdhIHRcbiAgdmFsIGNvbnN0IDogJ2EgZGF0YSAtPiAnYSB0XG4gIHZhbCBwYXRjaCA6ICdhIGhhbmRsZSAtPiAnYSBwYXRjaCAtPiB1bml0XG4gIHZhbCBzZXQgICA6ICdhIGhhbmRsZSAtPiAnYSBkYXRhIC0+IHVuaXRcbiAgdmFsIG1hcF9tc2cgOiAoJ2EgLT4gJ2IpIC0+ICdhIG1zZyAtPiAnYiBtc2dcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2EgZGF0YVxuICB2YWwgZm9sZCA6ICgnYSAtPiAnYiBtc2cgLT4gJ2EpIC0+ICdiIHQgLT4gJ2EgLT4gJ2EgUmVhY3Quc2lnbmFsXG4gIHZhbCBzaWduYWwgOiA/ZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgZGF0YSBSZWFjdC5TLnRcbiAgdmFsIGV2ZW50IDogJ2EgdCAtPiAnYSBtc2cgUmVhY3QuRS50XG5lbmRcblxubW9kdWxlIE1ha2UoRCA6IERBVEEpIDpcbiAgUyB3aXRoIHR5cGUgJ2EgZGF0YSA9ICdhIEQuZGF0YVxuICAgICBhbmQgdHlwZSAnYSBwYXRjaCA9ICdhIEQucGF0Y2ggPSBzdHJ1Y3RcblxuICB0eXBlICdhIGRhdGEgPSAnYSBELmRhdGFcbiAgdHlwZSAnYSBwYXRjaCA9ICdhIEQucGF0Y2hcbiAgbGV0IG1lcmdlID0gRC5tZXJnZVxuICBsZXQgbWFwX3BhdGNoID0gRC5tYXBfcGF0Y2hcbiAgbGV0IG1hcF9kYXRhID0gRC5tYXBfZGF0YVxuXG4gIHR5cGUgJ2EgbXNnID1cbiAgICB8IFBhdGNoIG9mICdhIHBhdGNoXG4gICAgfCBTZXQgb2YgJ2EgZGF0YVxuXG4gIHR5cGUgJ2EgaGFuZGxlID0gP3N0ZXA6UmVhY3Quc3RlcCAtPiAnYSBtc2cgLT4gdW5pdFxuXG4gIHR5cGUgJ2EgbXV0ID0ge1xuICAgIGN1cnJlbnQgOiAnYSBkYXRhIHJlZjtcbiAgICBldmVudCA6ICdhIG1zZyBSZWFjdC5FLnQ7XG4gIH1cblxuICB0eXBlICdhIHQgPVxuICAgIHwgQ29uc3Qgb2YgJ2EgZGF0YVxuICAgIHwgTXV0IG9mICdhIG11dFxuXG4gIGxldCBlbXB0eSA9IENvbnN0IEQuZW1wdHlcblxuICBsZXQgY3JlYXRlIGwgPVxuICAgIGxldCBpbml0aWFsX2V2ZW50LHNlbmQgPSBSZWFjdC5FLmNyZWF0ZSAoKSBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmIGwgaW5cbiAgICBsZXQgZXZlbnQgPSBSZWFjdC5FLm1hcCAoZnVuIG1zZyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgIHwgU2V0IGwgLT4gY3VycmVudCA6PSBsO1xuICAgICAgICAgIHwgUGF0Y2ggcCAtPiBjdXJyZW50IDo9IG1lcmdlIHAgIWN1cnJlbnRcbiAgICAgICAgZW5kO1xuICAgICAgICBtc2cpIGluaXRpYWxfZXZlbnQgaW5cbiAgICBNdXQge2N1cnJlbnQ7ZXZlbnR9LHNlbmRcblxuICBsZXQgZnJvbV9ldmVudCBsIGluaXRpYWxfZXZlbnQgPVxuICAgIGxldCBjdXJyZW50ID0gcmVmIGwgaW5cbiAgICBsZXQgZXZlbnQgPSBSZWFjdC5FLm1hcCAoZnVuIG1zZyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgIHwgU2V0IGwgLT4gY3VycmVudCA6PSBsO1xuICAgICAgICAgIHwgUGF0Y2ggcCAtPiBjdXJyZW50IDo9IG1lcmdlIHAgIWN1cnJlbnRcbiAgICAgICAgZW5kO1xuICAgICAgICBtc2cpIGluaXRpYWxfZXZlbnQgaW5cbiAgICBNdXQge2N1cnJlbnQ7ZXZlbnR9XG5cbiAgbGV0IGNvbnN0IHggPSBDb25zdCB4XG5cbiAgbGV0IG1hcF9tc2cgKGYgOiAnYSAtPiAnYikgOiAnYSBtc2cgLT4gJ2IgbXNnID0gZnVuY3Rpb25cbiAgICB8IFNldCBsIC0+IFNldCAobWFwX2RhdGEgZiBsKVxuICAgIHwgUGF0Y2ggcCAtPiBQYXRjaCAobWFwX3BhdGNoIGYgcClcblxuICBsZXQgbWFwIGYgcyA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCB4IC0+IENvbnN0IChtYXBfZGF0YSBmIHgpXG4gICAgfCBNdXQgcyAtPlxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgKG1hcF9kYXRhIGYgIShzLmN1cnJlbnQpKSBpblxuICAgICAgbGV0IGV2ZW50ID0gUmVhY3QuRS5tYXAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBsZXQgbXNnID0gbWFwX21zZyBmIG1zZyBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgICB8IFNldCBsIC0+IGN1cnJlbnQgOj0gbDtcbiAgICAgICAgICAgIHwgUGF0Y2ggcCAtPiBjdXJyZW50IDo9IG1lcmdlIHAgIWN1cnJlbnRcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgbXNnKSBzLmV2ZW50IGluXG4gICAgICBNdXQge2N1cnJlbnQgO2V2ZW50fVxuXG4gIGxldCB2YWx1ZSBzID0gbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBjIC0+IGNcbiAgICB8IE11dCBzIC0+ICEocy5jdXJyZW50KVxuXG4gIGxldCBldmVudCBzID0gbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBfIC0+IFJlYWN0LkUubmV2ZXJcbiAgICB8IE11dCBzIC0+IHMuZXZlbnRcblxuICBsZXQgcGF0Y2ggKHMgOiAnYSBoYW5kbGUpIHAgPSBzIChQYXRjaCBwKVxuXG4gIGxldCBzZXQgKHMgOiAnYSBoYW5kbGUpIHAgPSBzIChTZXQgcClcblxuICBsZXQgZm9sZCBmIHMgYWNjID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IGMgLT4gUmVhY3QuUy5jb25zdCAoZiBhY2MgKFNldCBjKSlcbiAgICB8IE11dCBzIC0+XG4gICAgICBsZXQgYWNjID0gZiBhY2MgKFNldCAoIShzLmN1cnJlbnQpKSkgaW5cbiAgICAgIFJlYWN0LlMuZm9sZCBmIGFjYyBzLmV2ZW50XG5cbiAgbGV0IHNpZ25hbCA/KGVxID0gKD0pKSAocyA6ICdhIHQpIDogJ2EgZGF0YSBSZWFjdC5TLnQgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgYyAtPiBSZWFjdC5TLmNvbnN0IGNcbiAgICB8IE11dCBzIC0+XG4gICAgICBSZWFjdC5TLmZvbGQgfmVxOihELmVxdWFsIGVxKSAoZnVuIGwgbXNnIC0+XG4gICAgICAgICAgbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICB8IFNldCBsIC0+IGxcbiAgICAgICAgICB8IFBhdGNoIHAgLT4gbWVyZ2UgcCBsKSAoIShzLmN1cnJlbnQpKSBzLmV2ZW50XG5cbiAgbGV0IGZyb21fc2lnbmFsID8oZXEgPSAoPSkpIHMgPVxuICAgIGxldCBmIGQnIGQgPSBQYXRjaCAoRC5kaWZmIH5lcSBkIGQnKSBpblxuICAgIGZyb21fZXZlbnQgKFJlYWN0LlMudmFsdWUgcykgKFJlYWN0LlMuZGlmZiBmIHMpXG5cbmVuZFxuXG5tb2R1bGUgRGF0YUxpc3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBkYXRhID0gJ2EgbGlzdFxuICB0eXBlICdhIHAgPVxuICAgIHwgSSBvZiBpbnQgKiAnYVxuICAgIHwgUiBvZiBpbnRcbiAgICB8IFUgb2YgaW50ICogJ2FcbiAgICB8IFggb2YgaW50ICogaW50XG4gIHR5cGUgJ2EgcGF0Y2ggPSAnYSBwIGxpc3RcbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IG1hcF9kYXRhID0gTGlzdC5tYXBcbiAgbGV0IG1hcF9wYXRjaCBmID0gZnVuY3Rpb25cbiAgICB8IEkgKGkseCkgLT4gSSAoaSwgZiB4KVxuICAgIHwgUiBpIC0+IFIgaVxuICAgIHwgWCAoaSxqKSAtPiBYIChpLGopXG4gICAgfCBVIChpLHgpIC0+IFUgKGksZiB4KVxuICBsZXQgbWFwX3BhdGNoIGYgPSBMaXN0Lm1hcCAobWFwX3BhdGNoIGYpXG5cbiAgbGV0IG1lcmdlX3Agb3AgbCA9XG4gICAgbWF0Y2ggb3Agd2l0aFxuICAgIHwgSSAoaScseCkgLT5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gTGlzdC5sZW5ndGggbCArIDEgKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgcmVjIGF1eCBhY2MgbiBsID0gbWF0Y2ggbixsIHdpdGhcbiAgICAgICAgfCAwLGwgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyAoeDo6bClcbiAgICAgICAgfCBfLFtdIC0+IGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCJcbiAgICAgICAgfCBuLHg6OnhzIC0+IGF1eCAoeDo6YWNjKSAocHJlZCBuKSB4c1xuICAgICAgaW4gYXV4IFtdIGkgbFxuICAgIHwgUiBpJyAtPlxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBMaXN0Lmxlbmd0aCBsICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IHJlYyBhdXggYWNjIG4gbCA9IG1hdGNoIG4sbCB3aXRoXG4gICAgICAgIHwgMCxfOjpsIC0+IExpc3QucmV2X2FwcGVuZCBhY2MgbFxuICAgICAgICB8IF8sW10gLT4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIlxuICAgICAgICB8IG4seDo6eHMgLT4gYXV4ICh4OjphY2MpIChwcmVkIG4pIHhzXG4gICAgICBpbiBhdXggW10gaSBsXG4gICAgfCBVIChpJyx4KSAtPlxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBMaXN0Lmxlbmd0aCBsICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgIGEuKGkpIDwtIHg7XG4gICAgICBBcnJheS50b19saXN0IGFcbiAgICB8IFggKGknLG9mZnNldCkgLT5cbiAgICAgIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gbGVuICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IHYgPSBhLihpKSBpblxuICAgICAgaWYgb2Zmc2V0ID4gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBpZiAoaSArIG9mZnNldCA+PSBsZW4pIHRoZW4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIjtcbiAgICAgICAgZm9yIGogPSBpIHRvIGkgKyBvZmZzZXQgLSAxIGRvXG4gICAgICAgICAgYS4oaikgPC0gYS4oaiArIDEpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGEuKGkrb2Zmc2V0KSA8LSB2XG4gICAgICBlbmRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWYgKGkgKyBvZmZzZXQgPCAwKSB0aGVuIGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCI7XG4gICAgICAgIGZvciBqID0gaSBkb3dudG8gaSArIG9mZnNldCArIDEgZG9cbiAgICAgICAgICBhLihqKSA8LSBhLihqIC0gMSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYS4oaStvZmZzZXQpIDwtIHZcbiAgICAgIGVuZDtcbiAgICAgIEFycmF5LnRvX2xpc3QgYVxuXG4gICgqIGFjY3VtdWxhdGVzIGludG8gYWNjIGkgdW5tb2RpZmllZCBlbGVtZW50cyBmcm9tIGwgKilcbiAgbGV0IHJlYyBsaW5lYXJfbWVyZ2VfZndkIH5hY2MgaSBsID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgaSA+IDAgdGhlblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IGggOjogbCAtPlxuICAgICAgICBsZXQgYWNjID0gaCA6OiBhY2MgaW5cbiAgICAgICAgbGluZWFyX21lcmdlX2Z3ZCB+YWNjIChpIC0gMSkgbFxuICAgICAgfCBbXSAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcImludmFsaWQgaW5kZXhcIlxuICAgIGVsc2VcbiAgICAgIGwsIGFjY1xuXG4gIGxldCByZWMgbGluZWFyX21lcmdlIH5hY2MgaTAgcCBsID1cbiAgICBsZXQgbCwgYWNjID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCAoSSAoaSwgXykgfCBSIGkgfCBVIChpLCBfKSkgOjogXyB3aGVuIGkgPiBpMCAtPlxuICAgICAgICBsaW5lYXJfbWVyZ2VfZndkIH5hY2MgKGkgLSBpMCkgbFxuICAgICAgfCBfIC0+XG4gICAgICAgIGwsIGFjY1xuICAgIGluXG4gICAgbWF0Y2ggcCwgbCB3aXRoXG4gICAgfCBJIChpLCB4KSA6OiBwLCBfIC0+XG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYyBpIHAgKHggOjogbClcbiAgICB8IFIgaSA6OiBwLCBfIDo6IGwgLT5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjIGkgcCBsXG4gICAgfCBSIF8gOjogXywgW10gLT5cbiAgICAgIGludmFsaWRfYXJnIFwibWVyZ2U6IGludmFsaWQgaW5kZXhcIlxuICAgIHwgVSAoaSwgeCkgOjogcCwgXyA6OiBsIC0+XG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYyBpIHAgKHggOjogbClcbiAgICB8IFUgKF8sIF8pIDo6IF8sIFtdIC0+XG4gICAgICBpbnZhbGlkX2FyZyBcIm1lcmdlOiBpbnZhbGlkIGluZGV4XCJcbiAgICB8IFtdLCBsIC0+XG4gICAgICBMaXN0LnJldl9hcHBlbmQgYWNjIGxcbiAgICB8IFggKF8sIF8pIDo6IF8sIF8gLT5cbiAgICAgIGZhaWx3aXRoIFwibGluZWFyX21lcmdlOiBYIG5vdCBzdXBwb3J0ZWRcIlxuXG4gIGxldCByZWMgbGluZWFyX21lcmdlYWJsZSB+biBwID1cbiAgICBhc3NlcnQgKG4gPj0gMCk7XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCAoSSAoaSwgXykgfCBSIGkgfCBVIChpLCBfKSkgOjogcCB3aGVuIGkgPj0gbiAtPlxuICAgICAgKCogbmVnYXRpdmUgaSdzIHJ1bGVkIG91dCAoYW1vbmcgb3RoZXJzKSAqKVxuICAgICAgbGluZWFyX21lcmdlYWJsZSB+bjppIHBcbiAgICB8IF8gOjogXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IFtdIC0+XG4gICAgICB0cnVlXG5cbiAgbGV0IG1lcmdlIHAgbCA9XG4gICAgaWYgbGluZWFyX21lcmdlYWJsZSB+bjowIHAgdGhlblxuICAgICAgbGluZWFyX21lcmdlIH5hY2M6W10gMCBwIGxcbiAgICBlbHNlXG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGwgeCAtPiBtZXJnZV9wIHggbCkgbCBwXG5cbiAgbGV0IHJlYyBlcXVhbCBmIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgeDEgOjogbDEsIHgyIDo6IGwyIHdoZW4gZiB4MSB4MiAtPlxuICAgICAgZXF1YWwgZiBsMSBsMlxuICAgIHwgW10sIFtdIC0+XG4gICAgICB0cnVlXG4gICAgfCBfIDo6IF8gLCBfIDo6IF9cbiAgICB8IF8gOjogXyAsIFtdXG4gICAgfCBbXSAgICAgLCBfIDo6IF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IG1lbSAodHlwZSB1KSBsID1cbiAgICBsZXQgbW9kdWxlIEggPVxuICAgICAgSGFzaHRibC5NYWtlXG4gICAgICAgIChzdHJ1Y3QgdHlwZSB0ID0gdSBsZXQgaGFzaCA9IEhhc2h0YmwuaGFzaCBsZXQgZXF1YWwgPSAoPT0pIGVuZCkgaW5cbiAgICBsZXQgaCA9IEguY3JlYXRlIDE2IGluXG4gICAgTGlzdC5pdGVyIChmdW4geCAtPiBILmFkZCBoIHggKCkpIGw7XG4gICAgSC5tZW0gaFxuXG4gIGxldCBmb2xkX2RpZmYgPyhlcSA9ICg9KSkgfmFjYyB+cmVtb3ZlIH5hZGQgbHggbHkgPVxuICAgIGxldCBtZW14ID0gbWVtIGx4XG4gICAgYW5kIG1lbXkgPSBtZW0gbHkgaW5cbiAgICBsZXQgcmVjIGYgfmFjYyB+bGVmdCBseCBseSBuID1cbiAgICAgIG1hdGNoIGx4LCBseSB3aXRoXG4gICAgICAoKiB0cmFpbGluZyBlbGVtZW50cyB0byBiZSByZW1vdmVkICopXG4gICAgICB8IF8gOjogbHgsIFtdIC0+XG4gICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIG4gaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IFtdIG5cbiAgICAgICgqIHRyYWlsaW5nIGVsZW1lbnRzIHRvIGJlIGFkZGVkICopXG4gICAgICB8IFtdLCB5IDo6IGx5IC0+XG4gICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIG4geSBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgW10gbHkgKG4gKyAxKVxuICAgICAgKCogZG9uZSEgKilcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGFjY1xuICAgICAgKCogc2FtZSAqKVxuICAgICAgfCB4IDo6IGx4LCB5IDo6IGx5IHdoZW4gZXEgeCB5IC0+XG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBseSAobiArIDEpXG4gICAgICAoKiB4IG5lZWRzIHRvIGJlIHJlbW92ZWQgZm9yIHN1cmUgKilcbiAgICAgIHwgeCA6OiBseCwgXyA6OiBfIHdoZW4gbm90IChtZW15IHgpIC0+XG4gICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIG4gaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IGx5IG5cbiAgICAgICgqIHkgbmVlZHMgdG8gYmUgYWRkZWQgZm9yIHN1cmUgKilcbiAgICAgIHwgXyA6OiBfLCB5IDo6IGx5IHdoZW4gbm90IChtZW14IHkpIC0+XG4gICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIG4geSBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggbHkgKG4gKyAxKVxuICAgICAgKCogbm8gbW9yZSBjZXJ0YWludHksIH5sZWZ0IGRlY2lkZXMgd2hhdCB0byByZWN1ciBvbiAqKVxuICAgICAgfCBfIDo6IGx4LCBfIDo6IF8gd2hlbiBsZWZ0IC0+XG4gICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIG4gaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0OmZhbHNlIGx4IGx5IG5cbiAgICAgIHwgXyA6OiBfLCB5IDo6IGx5IC0+XG4gICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIG4geSBpblxuICAgICAgICBmIH5hY2MgfmxlZnQ6dHJ1ZSBseCBseSAobiArIDEpXG4gICAgaW5cbiAgICBmIH5hY2MgfmxlZnQ6dHJ1ZSBseCBseSAwXG5cbiAgbGV0IHJlYyBsaXN0X3JldiA/KGFjYyA9IFtdKSA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBhY2MgPSBoIDo6IGFjYyBpblxuICAgICAgbGlzdF9yZXYgfmFjYyB0XG4gICAgfCBbXSAtPlxuICAgICAgYWNjXG5cbiAgbGV0IGRpZmYgfmVxIHggeSA9XG4gICAgbGV0IGFkZCBhY2MgaSB2ID0gSSAoaSwgdikgOjogYWNjXG4gICAgYW5kIHJlbW92ZSBhY2MgaSA9IFIgaSA6OiBhY2NcbiAgICBhbmQgYWNjID0gW10gaW5cbiAgICBsaXN0X3JldiAoZm9sZF9kaWZmIH5lcSB+YWNjIH5hZGQgfnJlbW92ZSB4IHkpXG5cbmVuZFxuXG5tb2R1bGUgUkxpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChEYXRhTGlzdClcbiAgbW9kdWxlIEQgPSBEYXRhTGlzdFxuICB0eXBlICdhIHAgPSAnYSBELnAgPVxuICAgIHwgSSBvZiBpbnQgKiAnYVxuICAgIHwgUiBvZiBpbnRcbiAgICB8IFUgb2YgaW50ICogJ2FcbiAgICB8IFggb2YgaW50ICogaW50XG5cbiAgbGV0IGNvbnMgeCBzID0gcGF0Y2ggcyBbRC5JICgwLHgpXVxuICBsZXQgc25vYyB4IHMgPSBwYXRjaCBzIFtELkkgKC0xLHgpXVxuICBsZXQgaW5zZXJ0IHggaSBzID0gcGF0Y2ggcyBbRC5JIChpLHgpXVxuICBsZXQgdXBkYXRlIHggaSBzID0gcGF0Y2ggcyBbRC5VIChpLHgpXVxuICBsZXQgbW92ZSBpIGogcyA9IHBhdGNoIHMgW0QuWCAoaSxqKV1cbiAgbGV0IHJlbW92ZSBpIHMgPSBwYXRjaCBzIFtELlIgaV1cblxuICBsZXQgaW5kZXggPyhlcSA9ICg9KSkgbCB4ID1cbiAgICBsZXQgcmVjIGYgbiA9IGZ1bmN0aW9uXG4gICAgICB8IGhkIDo6IF8gd2hlbiBlcSBoZCB4IC0+IG5cbiAgICAgIHwgXyA6OiB0bCAtPiBmIChuICsgMSkgdGxcbiAgICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgaW5cbiAgICBmIDAgbFxuXG4gIGxldCB1cGRhdGVfZXEgP2VxIChkYXRhLCBoYW5kbGUpIHggeSA9XG4gICAgbGV0IGkgPSBpbmRleCA/ZXEgKHZhbHVlIGRhdGEpIHggaW5cbiAgICB1cGRhdGUgeSBpIGhhbmRsZVxuXG4gIGxldCByZW1vdmVfbGFzdCAoZGF0YSwgaGFuZGxlKSA9XG4gICAgcmVtb3ZlIChMaXN0Lmxlbmd0aCAodmFsdWUgZGF0YSkgLSAxKSBoYW5kbGVcblxuICBsZXQgcmVtb3ZlX2VxID9lcSAoZGF0YSwgaGFuZGxlKSB4ID1cbiAgICBsZXQgaSA9IGluZGV4ID9lcSAodmFsdWUgZGF0YSkgeCBpblxuICAgIHJlbW92ZSBpIGhhbmRsZVxuXG4gIGxldCBzaW5nbGV0b24geCA9IGNvbnN0IFt4XVxuXG4gIGxldCBzaW5nbGV0b25fcyBzID1cbiAgICBsZXQgZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGxldCBlLHNlbmQgPSBSZWFjdC5FLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZXN1bHQgPSBmcm9tX2V2ZW50IFtdIGUgaW5cbiAgICBsZXQgXyA9IFJlYWN0LlMubWFwIChmdW4geCAtPlxuICAgICAgICBpZiAhZmlyc3RcbiAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgIGZpcnN0Oj1mYWxzZTtcbiAgICAgICAgICBzZW5kIChQYXRjaCBbSSgwLHgpXSlcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2Ugc2VuZCAoUGF0Y2ggW1UoMCx4KV0pKSBzIGluXG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvbmNhdCA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0ID0gZnVuIHggeSAtPlxuICAgIGxldCB2MSA9IHZhbHVlIHhcbiAgICBhbmQgdjIgPSB2YWx1ZSB5IGluXG4gICAgbGV0IHNpemUxID0gcmVmIDBcbiAgICBhbmQgc2l6ZTIgPSByZWYgMCBpblxuICAgIGxldCBzaXplX3dpdGhfcGF0Y2ggc2l6ZXggOiAnYSBELnAgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IChELkkgXykgLT4gaW5jciBzaXpleFxuICAgICAgfCAoRC5SIF8pIC0+IGRlY3Igc2l6ZXhcbiAgICAgIHwgKEQuWCBfIHwgRC5VIF8pIC0+ICgpIGluXG4gICAgbGV0IHNpemVfd2l0aF9zZXQgc2l6ZXggbCA9IHNpemV4Oj1MaXN0Lmxlbmd0aCBsIGluXG5cbiAgICBzaXplX3dpdGhfc2V0IHNpemUxIHYxO1xuICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgdjI7XG5cbiAgICBsZXQgdXBkYXRlX3BhdGNoMSA9IExpc3QubWFwIChmdW4gcCAtPlxuICAgICAgICBsZXQgbSA9IG1hdGNoIHAgd2l0aFxuICAgICAgICAgIHwgRC5JIChwb3MseCkgLT5cbiAgICAgICAgICAgIGxldCBpID0gaWYgcG9zIDwgMCB0aGVuIHBvcyAtICFzaXplMiBlbHNlIHBvcyBpblxuICAgICAgICAgICAgRC5JIChpLCB4KVxuICAgICAgICAgIHwgRC5SIHBvcyAgICAgLT4gRC5SICAoaWYgcG9zIDwgMCB0aGVuIHBvcyAtICFzaXplMiBlbHNlIHBvcylcbiAgICAgICAgICB8IEQuVSAocG9zLHgpIC0+IEQuVSAoKGlmIHBvcyA8IDAgdGhlbiBwb3MgLSAhc2l6ZTIgZWxzZSBwb3MpLCB4KVxuICAgICAgICAgIHwgRC5YIChpLGopIC0+ICAgRC5YICgoaWYgaSA8IDAgdGhlbiBpIC0gIXNpemUyIGVsc2UgaSksailcbiAgICAgICAgaW5cbiAgICAgICAgc2l6ZV93aXRoX3BhdGNoIHNpemUxIG07XG4gICAgICAgIG0pIGluXG4gICAgbGV0IHVwZGF0ZV9wYXRjaDIgPSBMaXN0Lm1hcCAoZnVuIHAgLT5cbiAgICAgICAgbGV0IG0gPSBtYXRjaCBwIHdpdGhcbiAgICAgICAgICB8IEQuSSAocG9zLHgpIC0+IEQuSSAoKGlmIHBvcyA8IDAgdGhlbiBwb3MgZWxzZSAhc2l6ZTEgKyBwb3MpLCB4KVxuICAgICAgICAgIHwgRC5SIHBvcyAgICAgLT4gRC5SICAoaWYgcG9zIDwgMCB0aGVuIHBvcyBlbHNlICFzaXplMSArIHBvcylcbiAgICAgICAgICB8IEQuVSAocG9zLHgpIC0+IEQuVSAoKGlmIHBvcyA8IDAgdGhlbiBwb3MgZWxzZSAhc2l6ZTEgKyBwb3MpLCB4KVxuICAgICAgICAgIHwgRC5YIChpLGopIC0+ICAgRC5YICgoaWYgaSA8IDAgdGhlbiBpIGVsc2UgIXNpemUxICsgaSksailcbiAgICAgICAgaW5cbiAgICAgICAgc2l6ZV93aXRoX3BhdGNoIHNpemUyIG07XG4gICAgICAgIG0pIGluXG4gICAgbGV0IHR1cGxlX2V2ID1cbiAgICAgIFJlYWN0LkUubWVyZ2UgKGZ1biBhY2MgeCAtPlxuICAgICAgICAgIG1hdGNoIGFjYyx4IHdpdGhcbiAgICAgICAgICB8IChOb25lLHAyKSxgRTEgeCAtPiBTb21lIHgscDJcbiAgICAgICAgICB8IChwMSxOb25lKSxgRTIgeCAtPiBwMSwgU29tZSB4XG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgICAgKE5vbmUsTm9uZSlcbiAgICAgICAgW1JlYWN0LkUubWFwIChmdW4gZSAtPiBgRTEgZSkgKGV2ZW50IHgpO1xuICAgICAgICAgUmVhY3QuRS5tYXAgKGZ1biBlIC0+IGBFMiBlKSAoZXZlbnQgeSldIGluXG4gICAgbGV0IG1lcmdlZF9ldiA9IFJlYWN0LkUubWFwIChmdW4gcCAtPlxuICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgfCBTb21lIChTZXQgcDEpLCBTb21lIChTZXQgcDIpIC0+XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMSBwMTtcbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHAyO1xuICAgICAgICAgIFNldCAocDEgQCBwMilcbiAgICAgICAgfCBTb21lIChTZXQgcDEpLCBOb25lIC0+XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMSBwMTtcbiAgICAgICAgICBTZXQgKHAxIEAgdmFsdWUgeSlcbiAgICAgICAgfCBOb25lLCBTb21lIChTZXQgcDIpIC0+XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBwMjtcbiAgICAgICAgICBTZXQgKHZhbHVlIHggQCBwMiApXG4gICAgICAgIHwgU29tZSAoUGF0Y2ggcDEpLCBTb21lIChQYXRjaCBwMikgLT5cbiAgICAgICAgICBsZXQgcDEgPSB1cGRhdGVfcGF0Y2gxIHAxIGluXG4gICAgICAgICAgbGV0IHAyID0gdXBkYXRlX3BhdGNoMiBwMiBpblxuICAgICAgICAgIFBhdGNoIChwMSBAIHAyKVxuICAgICAgICB8IFNvbWUgKFBhdGNoIHAxKSwgTm9uZSAtPiBQYXRjaCAodXBkYXRlX3BhdGNoMSBwMSlcbiAgICAgICAgfCBOb25lLCBTb21lIChQYXRjaCBwMikgLT4gUGF0Y2ggKHVwZGF0ZV9wYXRjaDIgcDIpXG4gICAgICAgIHwgU29tZSAoUGF0Y2ggXyksIFNvbWUgKFNldCBzMikgLT5cbiAgICAgICAgICBsZXQgczEgPSB2YWx1ZSB4IGluXG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMSBzMTtcbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHMyO1xuICAgICAgICAgIFNldChzMSBAIHMyKVxuICAgICAgICB8IFNvbWUgKFNldCBzMSksIFNvbWUgKFBhdGNoIF8pIC0+XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMSBzMTtcbiAgICAgICAgICBsZXQgczIgPSB2YWx1ZSB5IGluXG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBzMjtcbiAgICAgICAgICBTZXQoczEgQCBzMilcbiAgICAgICAgfCBOb25lLE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICApIHR1cGxlX2V2IGluXG4gICAgZnJvbV9ldmVudCAodjEgQCB2MikgbWVyZ2VkX2V2XG5cbiAgbGV0IGludmVyc2UgOiAnYSAuICdhIHAgLT4gJ2EgcCA9IGZ1bmN0aW9uXG4gICAgfCBJIChpLHgpIC0+IEkoLWktMSwgeClcbiAgICB8IFUgKGkseCkgLT4gVSgtaS0xLCB4KVxuICAgIHwgUiBpIC0+IFIgKC1pLTEpXG4gICAgfCBYIChpLGopIC0+IFggKC1pLTEsLWopXG5cbiAgbGV0IHJldiB0ID1cbiAgICBsZXQgZSA9IFJlYWN0LkUubWFwIChmdW5jdGlvblxuICAgICAgICB8IFNldCBsIC0+IFNldCAoTGlzdC5yZXYgbClcbiAgICAgICAgfCBQYXRjaCBwIC0+IFBhdGNoIChMaXN0Lm1hcCBpbnZlcnNlIHApKSAgKGV2ZW50IHQpXG4gICAgaW5cbiAgICBmcm9tX2V2ZW50IChMaXN0LnJldiAodmFsdWUgdCkpIGVcblxuICBsZXQgZmlsdGVyIHByZWQgbCA9XG4gICAgbGV0IG1vZHVsZSBJbnRNYXAgPSBNYXAuTWFrZShJbnQpIGluXG5cbiAgICBsZXQgaW5kZXggPSByZWYgSW50TWFwLmVtcHR5IGluXG4gICAgbGV0IHNpemUgPSByZWYgMCBpblxuXG4gICAgbGV0IGZpbHRlcl9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBhdXggKGw6ICdhIGxpc3QpIHJlcyB0aGVpcl9pIG15X2kgPSBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXNcbiAgICAgICAgfCB4Ojp4cyAtPlxuICAgICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIHRoZWlyX2kgKG15X2kgKyAxKSAhaW5kZXg7XG4gICAgICAgICAgICAgICBhdXggeHMgKHg6OnJlcykgKHRoZWlyX2kgKyAxKSAobXlfaSArIDEpXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgYXV4IHhzIHJlcyAodGhlaXJfaSArIDEpIG15X2lcbiAgICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzaXplIDo9IExpc3QubGVuZ3RoIGw7XG4gICAgICBpbmRleCA6PSBJbnRNYXAuZW1wdHk7XG4gICAgICBMaXN0LnJldiAoYXV4IGwgW10gMCAoLTEpKVxuICAgIGluXG5cbiAgICBsZXQgbm9ybWFsaXNlIGkgPSBpZiBpIDwgMCB0aGVuICFzaXplICsgMSArIGkgZWxzZSBpIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X2luc2VydCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCB2aXNpYmxlID1cbiAgICAgIGxldCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCA9IG5vcm1hbGlzZSBpbnNlcnRfcG9zX2Z1bGxfbGlzdCBpblxuICAgICAgbGV0IGxlZnRfYWxvbmUsIGRpc3BsYWNlZCwgdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCB1cGRhdGFibGVzID0gbWF0Y2ggZGlzcGxhY2VkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHVwZGF0YWJsZXNcbiAgICAgICAgfCBTb21lIGRpc3BsYWNlZF9pbl9maWx0ZXJlZCAtPlxuICAgICAgICAgICBJbnRNYXAuYWRkIGluc2VydF9wb3NfZnVsbF9saXN0IGRpc3BsYWNlZF9pbl9maWx0ZXJlZCB1cGRhdGFibGVzXG4gICAgICBpblxuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGxldCBuZXdfal9maWx0ZXJlZCA9IGlmIHZpc2libGUgdGhlbiBqX2ZpbHRlcmVkX2xpc3QgKyAxIGVsc2Ugal9maWx0ZXJlZF9saXN0IGluXG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGpfZnVsbF9saXN0ICsgMSkgbmV3X2pfZmlsdGVyZWQgIWluZGV4XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlcyBpblxuICAgICAgbGV0IGluc2VydF9wb3NfZmlsdGVyZWQgPSBpZiBJbnRNYXAuaXNfZW1wdHkgbGVmdF9hbG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoc25kIChJbnRNYXAubWF4X2JpbmRpbmcgbGVmdF9hbG9uZSkpICsgMVxuICAgICAgaW5cbiAgICAgIGlmIHZpc2libGUgdGhlbiBpbmRleCA6PSBJbnRNYXAuYWRkIGluc2VydF9wb3NfZnVsbF9saXN0IGluc2VydF9wb3NfZmlsdGVyZWQgIWluZGV4O1xuICAgICAgaW5jciBzaXplO1xuICAgICAgaW5zZXJ0X3Bvc19maWx0ZXJlZFxuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X3JlbW92ZSByZW1vdmVfcG9zX2Z1bGxfbGlzdCA9XG4gICAgICBsZXQgd2FzX3Zpc2libGUgPSBJbnRNYXAubWVtIHJlbW92ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IF8sXyx1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IHJlbW92ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGxldCBuZXdfaiA9IGlmIHdhc192aXNpYmxlIHRoZW4gal9maWx0ZXJlZF9saXN0IGVsc2Ugal9maWx0ZXJlZF9saXN0IC0gMSBpblxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChqX2Z1bGxfbGlzdCAtIDEpIG5ld19qICFpbmRleFxuICAgICAgaW5cbiAgICAgIGlmIG5vdCAoSW50TWFwLmlzX2VtcHR5ICFpbmRleClcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IGxhc3RfaSwgXyA9IEludE1hcC5tYXhfYmluZGluZyAhaW5kZXggaW5cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLnJlbW92ZSBsYXN0X2kgIWluZGV4XG4gICAgICBlbHNlICgpO1xuICAgICAgZGVjciBzaXplO1xuICAgICAgSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlc1xuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X3VwZGF0ZV9kZWxldGUgdXBkYXRlX3Bvc19mdWxsX2xpc3QgPVxuICAgICAgbGV0IF8sIF8sIHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCBqX2Z1bGxfbGlzdCAoal9maWx0ZXJlZF9saXN0IC0gMSkgIWluZGV4XG4gICAgICBpblxuICAgICAgaW5kZXggOj0gSW50TWFwLnJlbW92ZSB1cGRhdGVfcG9zX2Z1bGxfbGlzdCAhaW5kZXg7XG4gICAgICBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzXG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfdXBkYXRlX2luc2VydCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCA9XG4gICAgICBsZXQgbGVmdF9hbG9uZSwgbm9uZSwgdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGFzc2VydCAobm9uZSA9IE5vbmUpO1xuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgal9mdWxsX2xpc3QgKGpfZmlsdGVyZWRfbGlzdCArIDEpICFpbmRleFxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfcG9zX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBsZXQgcHJldmlvdXNfcG9zX2ZpbHRlcmVkID0gdHJ5IChzbmQgKEludE1hcC5tYXhfYmluZGluZyBsZWZ0X2Fsb25lKSkgd2l0aCBOb3RfZm91bmQgLT4gKC0xKSBpblxuICAgICAgICBwcmV2aW91c19wb3NfZmlsdGVyZWQgKyAxXG4gICAgICBpblxuICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCBuZXdfcG9zX2ZpbHRlcmVkX2xpc3QgIWluZGV4O1xuICAgICAgSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlcztcbiAgICAgIG5ld19wb3NfZmlsdGVyZWRfbGlzdFxuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X21vdmUgZnJvbV9mdWxsX2xpc3QgdG9fZnVsbF9saXN0IHRvX2ZpbHRlcmVkID1cbiAgICAgIGxldCB3YXNfdmlzaWJsZSA9IG1hdGNoIHRvX2ZpbHRlcmVkIHdpdGggfCBTb21lIF8gLT4gdHJ1ZSB8IE5vbmUgLT4gZmFsc2UgaW5cbiAgICAgIGxldCBmb3J3YXJkID0gZnJvbV9mdWxsX2xpc3QgPCB0b19mdWxsX2xpc3QgaW5cbiAgICAgIGlmIGZvcndhcmQgdGhlblxuICAgICAgICBmb3IgaV9mdWxsID0gZnJvbV9mdWxsX2xpc3QgKyAxIHRvIHRvX2Z1bGxfbGlzdCBkb1xuICAgICAgICAgIGxldCBkZWx0YSA9IGlmIHdhc192aXNpYmxlIHRoZW4gKC0xKSBlbHNlIDAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBpX2ZpbHRlcmVkID0gSW50TWFwLmZpbmQgaV9mdWxsICFpbmRleCBpblxuICAgICAgICAgICAgbGV0IG5ld192YWwgPSBpX2ZpbHRlcmVkICsgZGVsdGEgaW5cbiAgICAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGlfZnVsbCAtIDEpIG5ld192YWwgIWluZGV4XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm90X2ZvdW5kIC0+ICgpXG4gICAgICAgIGRvbmVcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yIGlfZnVsbCA9IGZyb21fZnVsbF9saXN0IC0gMSBkb3dudG8gdG9fZnVsbF9saXN0IGRvXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZGVsdGEgPSBpZiB3YXNfdmlzaWJsZSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBsZXQgaV9maWx0ZXJlZCA9IEludE1hcC5maW5kIGlfZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgIGxldCBuZXdfdmFsID0gaV9maWx0ZXJlZCArIGRlbHRhIGluXG4gICAgICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChpX2Z1bGwgKyAxKSBuZXdfdmFsICFpbmRleFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vdF9mb3VuZCAtPiAoKVxuICAgICAgICBkb25lO1xuICAgICAgbWF0Y2ggdG9fZmlsdGVyZWQgd2l0aFxuICAgICAgfCBTb21lIHRvX2ZpbHRlcmVkIC0+XG4gICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIHRvX2Z1bGxfbGlzdCB0b19maWx0ZXJlZCAhaW5kZXhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgaW5kZXggOj0gSW50TWFwLnJlbW92ZSB0b19mdWxsX2xpc3QgIWluZGV4XG4gICAgaW5cblxuICAgIGxldCBjb252ZXJ0X3AgPSBmdW5jdGlvblxuICAgICAgfCBJIChpLCB4KSAtPlxuICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIGxldCBteV9pID0gdXBkYXRlX2luZGV4X2luc2VydCBpIHRydWUgaW5cbiAgICAgICAgICAgW0kgKG15X2ksIHgpXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgIGlnbm9yZSAodXBkYXRlX2luZGV4X2luc2VydCBpIGZhbHNlKTtcbiAgICAgICAgICAgICBbXVxuICAgICAgICAgICBlbmRcbiAgICAgIHwgUiBpIC0+XG4gICAgICAgICBsZXQgaSA9IG5vcm1hbGlzZSBpIGluXG4gICAgICAgICBsZXQgcmV0ID0gdHJ5IGxldCBqID0gSW50TWFwLmZpbmQgaSAhaW5kZXggaW4gW1Igal0gd2l0aCB8IE5vdF9mb3VuZCAtPiBbXSBpblxuICAgICAgICAgbGV0ICgpID0gdXBkYXRlX2luZGV4X3JlbW92ZSBpIGluXG4gICAgICAgICByZXRcbiAgICAgIHwgVSAoaSwgeCkgLT5cbiAgICAgICAgIGxldCBpID0gbm9ybWFsaXNlIGkgaW5cbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCBvbGRfaiA9IEludE1hcC5maW5kIGkgIWluZGV4IGluXG4gICAgICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICAgICAgdGhlbiBbVSAob2xkX2osIHgpXVxuICAgICAgICAgICAgIGVsc2UgKHVwZGF0ZV9pbmRleF91cGRhdGVfZGVsZXRlIGk7IFtSIG9sZF9qXSlcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGxldCBuZXdfaiA9IHVwZGF0ZV9pbmRleF91cGRhdGVfaW5zZXJ0IGkgaW5cbiAgICAgICAgICAgICAgICBbSSAobmV3X2osIHgpXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgIGVuZFxuICAgICAgfCBYIChvcmlnaW5fZnVsbCwgb2Zmc2V0X2Z1bGwpIC0+XG4gICAgICAgICBsZXQgb3JpZ2luX2Z1bGwgPSBub3JtYWxpc2Ugb3JpZ2luX2Z1bGwgaW5cbiAgICAgICAgIGxldCBkZXN0X2Z1bGwgPSBvcmlnaW5fZnVsbCArIG9mZnNldF9mdWxsIGluXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgbGV0IG9yaWdpbl9maWx0ZXJlZCA9IEludE1hcC5maW5kIG9yaWdpbl9mdWxsICFpbmRleCBpblxuICAgICAgICAgICBsZXQgZGVzdF9maWx0ZXJlZCA9XG4gICAgICAgICAgICAgdHJ5IEludE1hcC5maW5kIGRlc3RfZnVsbCAhaW5kZXhcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICBsZXQgc21hbGxfb25lcywgXywgXyA9IEludE1hcC5zcGxpdCBvcmlnaW5fZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgICAgICBpZiBJbnRNYXAuaXNfZW1wdHkgc21hbGxfb25lc1xuICAgICAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgICAgIGVsc2Ugc25kIChJbnRNYXAubWF4X2JpbmRpbmcgc21hbGxfb25lcykgKyAxXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHVwZGF0ZV9pbmRleF9tb3ZlIG9yaWdpbl9mdWxsIGRlc3RfZnVsbCAoU29tZSBkZXN0X2ZpbHRlcmVkKTtcbiAgICAgICAgICAgaWYgZGVzdF9maWx0ZXJlZCAhPSBvcmlnaW5fZmlsdGVyZWRcbiAgICAgICAgICAgdGhlbiBbWCAob3JpZ2luX2ZpbHRlcmVkLCBkZXN0X2ZpbHRlcmVkIC0gb3JpZ2luX2ZpbHRlcmVkKV1cbiAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICgqIG1vdmluZyBhbiBlbGVtZW50IHRoYXQgd2FzIGZpbHRlcmVkIG91dCAqKVxuICAgICAgICAgICAgdXBkYXRlX2luZGV4X21vdmUgb3JpZ2luX2Z1bGwgZGVzdF9mdWxsIE5vbmU7XG4gICAgICAgICAgICBbXVxuICAgIGluXG5cbiAgICBsZXQgZmlsdGVyX2UgPSBmdW5jdGlvblxuICAgICAgfCBTZXQgbCAtPiBTZXQgKGZpbHRlcl9saXN0IGwpXG4gICAgICB8IFBhdGNoIHAgLT5cbiAgICAgICAgIFBhdGNoIChMaXN0LmNvbmNhdCAoTGlzdC5tYXAgY29udmVydF9wIHApKVxuICAgIGluXG4gICAgbGV0IGUgPSBSZWFjdC5FLm1hcCBmaWx0ZXJfZSAoZXZlbnQgbCkgaW5cbiAgICBmcm9tX2V2ZW50IChmaWx0ZXJfbGlzdCAodmFsdWUgbCkpIGVcblxuICBtb2R1bGUgSW50U2V0ID0gU2V0Lk1ha2UgKEludClcblxuICBsZXQgZm9yX2FsbCBmbiBkYXRhID1cbiAgICBsZXQgbWF5YmVfdXBkYXRlIGFjYyBpIHYgPSBpZiBmbiB2IHRoZW4gYWNjIGVsc2UgSW50U2V0LmFkZCBpIGFjYyBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIGxldCByZWMgZm9sZCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgdiA6OiB0bCAtPiBmb2xkIChpICsgMSkgKG1heWJlX3VwZGF0ZSBhY2MgaSB2KSB0bFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgaW5cbiAgICAgIGZvbGQgMCBJbnRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfaWR4X2FmdGVyIGkgZiBhY2MgPVxuICAgICAgSW50U2V0Lm1hcCAoZnVuIGknIC0+IGlmIGknID49IGkgdGhlbiBmIGknIDEgZWxzZSBpJykgYWNjXG4gICAgaW5cbiAgICBsZXQgZiA9IGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V0IHggLT4gaW5pdCB4XG4gICAgICB8IFBhdGNoIHVwZGF0ZXMgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgIHwgWCAoaSwgaScpIC0+XG4gICAgICAgICAgICAgICBpZiBJbnRTZXQubWVtIGkgYWNjID0gSW50U2V0Lm1lbSBpJyBhY2NcbiAgICAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICAgICBlbHNlIGlmIEludFNldC5tZW0gaSBhY2NcbiAgICAgICAgICAgICAgIHRoZW4gSW50U2V0LmFkZCBpJyAoSW50U2V0LnJlbW92ZSBpIGFjYylcbiAgICAgICAgICAgICAgIGVsc2UgSW50U2V0LmFkZCBpIChJbnRTZXQucmVtb3ZlIGknIGFjYylcbiAgICAgICAgICAgICB8IFIgaSAtPlxuICAgICAgICAgICAgICAgdXBkYXRlX2lkeF9hZnRlciBpICgtKSAoSW50U2V0LnJlbW92ZSBpIGFjYylcbiAgICAgICAgICAgICB8IEkgKGksIHYpIC0+XG4gICAgICAgICAgICAgICBsZXQgYWNjID0gdXBkYXRlX2lkeF9hZnRlciBpICgrKSBhY2MgaW5cbiAgICAgICAgICAgICAgIG1heWJlX3VwZGF0ZSBhY2MgaSB2XG4gICAgICAgICAgICAgfCBVIChpLCB2KSAtPlxuICAgICAgICAgICAgICAgbWF5YmVfdXBkYXRlIChJbnRTZXQucmVtb3ZlIGkgYWNjKSBpIHYpXG4gICAgICAgICAgYWNjXG4gICAgICAgICAgdXBkYXRlc1xuICAgIGluXG4gICAgUmVhY3QuUy5mb2xkIGYgKGluaXQgKHZhbHVlIGRhdGEpKSAoZXZlbnQgZGF0YSlcbiAgICB8PiBSZWFjdC5TLm1hcCBJbnRTZXQuaXNfZW1wdHlcblxuZW5kXG5cbm1vZHVsZSBSTWFwKE0gOiBNYXAuUykgPSBzdHJ1Y3RcblxuICBtb2R1bGUgRGF0YSA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSBkYXRhID0gJ2EgTS50XG5cbiAgICB0eXBlICdhIHAgPSBbYEFkZCBvZiAoTS5rZXkgKiAnYSkgfCBgRGVsIG9mIE0ua2V5XVxuXG4gICAgdHlwZSAnYSBwYXRjaCA9ICdhIHAgbGlzdFxuXG4gICAgbGV0IG1lcmdlX3AgcCBzID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBgQWRkIChrLGEpIC0+IE0uYWRkIGsgYSBzXG4gICAgICB8IGBEZWwgayAtPiBNLnJlbW92ZSBrIHNcblxuICAgIGxldCBtZXJnZSBwIGFjYyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gbWVyZ2VfcCBwIGFjYykgYWNjIHBcblxuICAgIGxldCBtYXBfcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgYEFkZCAoayxhKSAtPiBgQWRkIChrLGYgYSlcbiAgICAgIHwgYERlbCBrIC0+IGBEZWwga1xuXG4gICAgbGV0IG1hcF9wYXRjaCBmID0gTGlzdC5tYXAgKG1hcF9wIGYpXG5cbiAgICBsZXQgbWFwX2RhdGEgZiBkID0gTS5tYXAgZiBkXG5cbiAgICBsZXQgZW1wdHkgPSBNLmVtcHR5XG5cbiAgICBsZXQgZXF1YWwgZiA9IE0uZXF1YWwgZlxuXG4gICAgbGV0IGRpZmYgfmVxIHggeSA9XG4gICAgICBsZXQgbSA9XG4gICAgICAgIGxldCBnIF9rZXkgdiB3ID1cbiAgICAgICAgICBtYXRjaCB2LCB3IHdpdGhcbiAgICAgICAgICB8IFNvbWUgdiwgU29tZSB3IHdoZW4gZXEgdiB3IC0+XG4gICAgICAgICAgICBOb25lXG4gICAgICAgICAgfCBTb21lIF8sIFNvbWUgdyAtPlxuICAgICAgICAgICAgU29tZSAoYFUgdylcbiAgICAgICAgICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgICAgU29tZSBgRFxuICAgICAgICAgIHwgTm9uZSwgU29tZSB2IC0+XG4gICAgICAgICAgICBTb21lIChgQSB2KVxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPlxuICAgICAgICAgICAgTm9uZVxuICAgICAgICBpblxuICAgICAgICBNLm1lcmdlIGcgeCB5XG4gICAgICBhbmQgZyBrZXkgeCBhY2MgPVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBgVSB2IC0+XG4gICAgICAgICAgYERlbCBrZXkgOjogYEFkZCAoa2V5LCB2KSA6OiBhY2NcbiAgICAgICAgfCBgRCAtPlxuICAgICAgICAgIGBEZWwga2V5IDo6IGFjY1xuICAgICAgICB8IGBBIHYgLT5cbiAgICAgICAgICBgQWRkIChrZXksIHYpIDo6IGFjY1xuICAgICAgYW5kIGFjYyA9IFtdIGluXG4gICAgICBMaXN0LnJldiAoTS5mb2xkIGcgbSBhY2MpXG5cbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlKERhdGEpXG5cbiAgbGV0IGZpbHRlciBwcmVkIG0gPVxuXG4gICAgbGV0IGNvbnZlcnRfcCA9IGZ1bmN0aW9uXG4gICAgICB8IGBBZGQgKGssdikgLT5cbiAgICAgICAgIGlmIHByZWQgayB2XG4gICAgICAgICB0aGVuIFtgQWRkIChrLHYpXVxuICAgICAgICAgZWxzZSBbXVxuICAgICAgfCBgRGVsIGsgLT4gW2BEZWwga11cbiAgICBpblxuXG4gICAgbGV0IGZpbHRlcl9lID0gZnVuY3Rpb25cbiAgICAgIHwgU2V0IG0gLT4gU2V0IChNLmZpbHRlciBwcmVkIG0pXG4gICAgICB8IFBhdGNoIHAgLT4gUGF0Y2ggKExpc3QuY29uY2F0IChMaXN0Lm1hcCBjb252ZXJ0X3AgcCkpXG4gICAgaW5cblxuICAgIGxldCBlID0gUmVhY3QuRS5tYXAgZmlsdGVyX2UgKGV2ZW50IG0pIGluXG4gICAgZnJvbV9ldmVudCAoTS5maWx0ZXIgcHJlZCAodmFsdWUgbSkpIGVcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfdHl4bWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5UeXhtbF9jYXN0ICopXG5tb2R1bGUgVHl4bWxfY2FzdCA9IEpzX29mX29jYW1sX3R5eG1sX19UeXhtbF9jYXN0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLlR5eG1sX2Nhc3Rfc2lncyAqKVxubW9kdWxlIFR5eG1sX2Nhc3Rfc2lncyA9IEpzX29mX29jYW1sX3R5eG1sX19UeXhtbF9jYXN0X3NpZ3NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuVHl4bWxfanMgKilcbm1vZHVsZSBUeXhtbF9qcyA9IEpzX29mX29jYW1sX3R5eG1sX19UeXhtbF9qc1xuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfdHl4bWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBpbnQpIHkgPSB4IDwgeVxuXG4gIGxldCAoIDw9ICkgKHggOiBpbnQpIHkgPSB4IDw9IHlcblxuICBsZXQgKCA8PiApICh4IDogaW50KSB5ID0geCA8PiB5XG5cbiAgbGV0ICggPSApICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgKCA+ICkgKHggOiBpbnQpIHkgPSB4ID4geVxuXG4gIGxldCAoID49ICkgKHggOiBpbnQpIHkgPSB4ID49IHlcblxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG5cbiAgbGV0IGVxdWFsICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBNYWtlVG8gKEMgOiBzaWdcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZWx0IDogJ2EgZWx0IC0+IERvbS5ub2RlIEpzLnRcbmVuZCkgOiBUeXhtbF9jYXN0X3NpZ3MuVE8gd2l0aCB0eXBlICdhIGVsdCA9ICdhIEMuZWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHRcblxuICBsZXQgcmVidWlsZF9ub2RlIF8geCA9IEpzLlVuc2FmZS5jb2VyY2UgKEMuZWx0IHgpXG5cbiAgbGV0IG9mX2VsZW1lbnQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZWxlbWVudFwiIGVsdFxuXG4gIGxldCBvZl9ub2RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX25vZGVcIiBlbHRcblxuICBsZXQgb2ZfcGNkYXRhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BjZGF0YVwiIGVsdFxuXG4gIGxldCBvZl9odG1sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2h0bWxcIiBlbHRcblxuICBsZXQgb2ZfaGVhZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkXCIgZWx0XG5cbiAgbGV0IG9mX2xpbmsgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlua1wiIGVsdFxuXG4gIGxldCBvZl90aXRsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aXRsZVwiIGVsdFxuXG4gIGxldCBvZl9tZXRhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21ldGFcIiBlbHRcblxuICBsZXQgb2ZfYmFzZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iYXNlXCIgZWx0XG5cbiAgbGV0IG9mX3N0eWxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N0eWxlXCIgZWx0XG5cbiAgbGV0IG9mX2JvZHkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYm9keVwiIGVsdFxuXG4gIGxldCBvZl9mb3JtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Zvcm1cIiBlbHRcblxuICBsZXQgb2Zfb3B0Z3JvdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0Z3JvdXBcIiBlbHRcblxuICBsZXQgb2Zfb3B0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdGlvblwiIGVsdFxuXG4gIGxldCBvZl9zZWxlY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2VsZWN0XCIgZWx0XG5cbiAgbGV0IG9mX2lucHV0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lucHV0XCIgZWx0XG5cbiAgbGV0IG9mX3RleHRhcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RleHRhcmVhXCIgZWx0XG5cbiAgbGV0IG9mX2J1dHRvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9idXR0b25cIiBlbHRcblxuICBsZXQgb2ZfbGFiZWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGFiZWxcIiBlbHRcblxuICBsZXQgb2ZfZmllbGRzZXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZmllbGRzZXRcIiBlbHRcblxuICBsZXQgb2ZfbGVnZW5kIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xlZ2VuZFwiIGVsdFxuXG4gIGxldCBvZl91bCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl91bFwiIGVsdFxuXG4gIGxldCBvZl9vbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vbFwiIGVsdFxuXG4gIGxldCBvZl9kbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kbFwiIGVsdFxuXG4gIGxldCBvZl9saSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saVwiIGVsdFxuXG4gIGxldCBvZl9kaXYgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGl2XCIgZWx0XG5cbiAgbGV0IG9mX3AgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkaW5nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRpbmdcIiBlbHRcblxuICBsZXQgb2ZfYmxvY2txdW90ZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ibG9ja3F1b3RlXCIgZWx0XG5cbiAgbGV0IG9mX3ByZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wcmVcIiBlbHRcblxuICBsZXQgb2ZfYnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYnJcIiBlbHRcblxuICBsZXQgb2ZfaHIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHJcIiBlbHRcblxuICBsZXQgb2ZfaW5zIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2luc1wiIGVsdFxuXG4gIGxldCBvZl9kZWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGVsXCIgZWx0XG5cbiAgbGV0IG9mX2EgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYVwiIGVsdFxuXG4gIGxldCBvZl9pbWcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW1nXCIgZWx0XG5cbiAgbGV0IG9mX29iamVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vYmplY3RcIiBlbHRcblxuICBsZXQgb2ZfcGFyYW0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGFyYW1cIiBlbHRcblxuICBsZXQgb2ZfYXJlYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hcmVhXCIgZWx0XG5cbiAgbGV0IG9mX21hcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tYXBcIiBlbHRcblxuICBsZXQgb2Zfc2NyaXB0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NjcmlwdFwiIGVsdFxuXG4gIGxldCBvZl90ZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90ZFwiIGVsdFxuXG4gIGxldCBvZl90ciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90clwiIGVsdFxuXG4gIGxldCBvZl9jb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29sXCIgZWx0XG5cbiAgbGV0IG9mX3Rmb290IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3Rmb290XCIgZWx0XG5cbiAgbGV0IG9mX3RoZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RoZWFkXCIgZWx0XG5cbiAgbGV0IG9mX3Rib2R5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3Rib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2NhcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY2FwdGlvblwiIGVsdFxuXG4gIGxldCBvZl90YWJsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZVwiIGVsdFxuXG4gIGxldCBvZl9jYW52YXMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY2FudmFzXCIgZWx0XG5cbiAgbGV0IG9mX2lmcmFtZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pZnJhbWVcIiBlbHRcblxuICBsZXQgb2ZfYXVkaW8gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXVkaW9cIiBlbHRcblxuICBsZXQgb2ZfdmlkZW8gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdmlkZW9cIiBlbHRcblxuICAoKiBEb21faHRtbC5oZWFkaW5nRWxlbWVudCAqKVxuXG4gIGxldCBvZl9oMSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oMVwiIGVsdFxuXG4gIGxldCBvZl9oMiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oMlwiIGVsdFxuXG4gIGxldCBvZl9oMyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oM1wiIGVsdFxuXG4gIGxldCBvZl9oNCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oNFwiIGVsdFxuXG4gIGxldCBvZl9oNSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oNVwiIGVsdFxuXG4gIGxldCBvZl9oNiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oNlwiIGVsdFxuXG4gICgqIERvbV9odG1sLmVsZW1lbnQgKilcblxuICBsZXQgb2ZfYWJiciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hYmJyXCIgZWx0XG5cbiAgbGV0IG9mX2FkZHJlc3MgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYWRkcmVzc1wiIGVsdFxuXG4gIGxldCBvZl9hcnRpY2xlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FydGljbGVcIiBlbHRcblxuICBsZXQgb2ZfYXNpZGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXNpZGVcIiBlbHRcblxuICBsZXQgb2ZfYiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iXCIgZWx0XG5cbiAgbGV0IG9mX2JkbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iZG9cIiBlbHRcblxuICBsZXQgb2ZfY2l0ZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jaXRlXCIgZWx0XG5cbiAgbGV0IG9mX2NvZGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29kZVwiIGVsdFxuXG4gIGxldCBvZl9jb2xncm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2xncm91cFwiIGVsdFxuXG4gIGxldCBvZl9jb21tYW5kIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvbW1hbmRcIiBlbHRcblxuICBsZXQgb2ZfZGF0YWxpc3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGF0YWxpc3RcIiBlbHRcblxuICBsZXQgb2ZfZGQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGRcIiBlbHRcblxuICBsZXQgb2ZfZGV0YWlscyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZXRhaWxzXCIgZWx0XG5cbiAgbGV0IG9mX2RmbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZm5cIiBlbHRcblxuICBsZXQgb2ZfZHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZHRcIiBlbHRcblxuICBsZXQgb2ZfZW0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZW1cIiBlbHRcblxuICBsZXQgb2ZfZW1iZWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZW1iZWRcIiBlbHRcblxuICBsZXQgb2ZfZmlnY2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWdjYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZ3VyZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWd1cmVcIiBlbHRcblxuICBsZXQgb2ZfZm9vdGVyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Zvb3RlclwiIGVsdFxuXG4gIGxldCBvZl9oZWFkZXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGVyXCIgZWx0XG5cbiAgbGV0IG9mX2hncm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZ3JvdXBcIiBlbHRcblxuICBsZXQgb2ZfaSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pXCIgZWx0XG5cbiAgbGV0IG9mX2tiZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9rYmRcIiBlbHRcblxuICBsZXQgb2Zfa2V5Z2VuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2tleWdlblwiIGVsdFxuXG4gIGxldCBvZl9tYWluIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21haW5cIiBlbHRcblxuICBsZXQgb2ZfbWFyayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tYXJrXCIgZWx0XG5cbiAgbGV0IG9mX21lbnUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWVudVwiIGVsdFxuXG4gIGxldCBvZl9tZXRlciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZXRlclwiIGVsdFxuXG4gIGxldCBvZl9uYXYgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbmF2XCIgZWx0XG5cbiAgbGV0IG9mX25vc2NyaXB0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX25vc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX291dHB1dCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vdXRwdXRcIiBlbHRcblxuICBsZXQgb2ZfcHJvZ3Jlc3MgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcHJvZ3Jlc3NcIiBlbHRcblxuICBsZXQgb2ZfcSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9xXCIgZWx0XG5cbiAgbGV0IG9mX3JwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3JwXCIgZWx0XG5cbiAgbGV0IG9mX3J0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3J0XCIgZWx0XG5cbiAgbGV0IG9mX3J1YnkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnVieVwiIGVsdFxuXG4gIGxldCBvZl9zYW1wIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NhbXBcIiBlbHRcblxuICBsZXQgb2Zfc2VjdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWN0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NtYWxsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NtYWxsXCIgZWx0XG5cbiAgbGV0IG9mX3NvdXJjZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zb3VyY2VcIiBlbHRcblxuICBsZXQgb2Zfc3BhbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zcGFuXCIgZWx0XG5cbiAgbGV0IG9mX3N0cm9uZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdHJvbmdcIiBlbHRcblxuICBsZXQgb2Zfc3ViIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N1YlwiIGVsdFxuXG4gIGxldCBvZl9zdW1tYXJ5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N1bW1hcnlcIiBlbHRcblxuICBsZXQgb2Zfc3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N1cFwiIGVsdFxuXG4gIGxldCBvZl90aCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aFwiIGVsdFxuXG4gIGxldCBvZl90aW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpbWVcIiBlbHRcblxuICBsZXQgb2ZfdSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl91XCIgZWx0XG5cbiAgbGV0IG9mX3ZhciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92YXJcIiBlbHRcblxuICBsZXQgb2Zfd2JyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3diclwiIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlT2YgKEMgOiBzaWdcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZWx0IDogRG9tLm5vZGUgSnMudCAtPiAnYSBlbHRcbmVuZCkgOiBUeXhtbF9jYXN0X3NpZ3MuT0Ygd2l0aCB0eXBlICdhIGVsdCA9ICdhIEMuZWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHRcblxuICBsZXQgcmVidWlsZF9ub2RlIF8geCA9IEMuZWx0IChKcy5VbnNhZmUuY29lcmNlIHgpXG5cbiAgbGV0IG9mX2VsZW1lbnQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZWxlbWVudFwiIGVsdFxuXG4gIGxldCBvZl9odG1sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2h0bWxcIiBlbHRcblxuICBsZXQgb2ZfaGVhZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkXCIgZWx0XG5cbiAgbGV0IG9mX2xpbmsgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlua1wiIGVsdFxuXG4gIGxldCBvZl90aXRsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aXRsZVwiIGVsdFxuXG4gIGxldCBvZl9tZXRhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21ldGFcIiBlbHRcblxuICBsZXQgb2ZfYmFzZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iYXNlXCIgZWx0XG5cbiAgbGV0IG9mX3N0eWxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N0eWxlXCIgZWx0XG5cbiAgbGV0IG9mX2JvZHkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYm9keVwiIGVsdFxuXG4gIGxldCBvZl9mb3JtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Zvcm1cIiBlbHRcblxuICBsZXQgb2Zfb3B0R3JvdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0R3JvdXBcIiBlbHRcblxuICBsZXQgb2Zfb3B0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdGlvblwiIGVsdFxuXG4gIGxldCBvZl9zZWxlY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2VsZWN0XCIgZWx0XG5cbiAgbGV0IG9mX2lucHV0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lucHV0XCIgZWx0XG5cbiAgbGV0IG9mX3RleHRBcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RleHRBcmVhXCIgZWx0XG5cbiAgbGV0IG9mX2J1dHRvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9idXR0b25cIiBlbHRcblxuICBsZXQgb2ZfbGFiZWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGFiZWxcIiBlbHRcblxuICBsZXQgb2ZfZmllbGRTZXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZmllbGRTZXRcIiBlbHRcblxuICBsZXQgb2ZfbGVnZW5kIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xlZ2VuZFwiIGVsdFxuXG4gIGxldCBvZl91TGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl91TGlzdFwiIGVsdFxuXG4gIGxldCBvZl9vTGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vTGlzdFwiIGVsdFxuXG4gIGxldCBvZl9kTGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kTGlzdFwiIGVsdFxuXG4gIGxldCBvZl9saSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saVwiIGVsdFxuXG4gIGxldCBvZl9kaXYgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGl2XCIgZWx0XG5cbiAgbGV0IG9mX3BhcmFncmFwaCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhZ3JhcGhcIiBlbHRcblxuICBsZXQgb2ZfaGVhZGluZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkaW5nXCIgZWx0XG5cbiAgbGV0IG9mX3F1b3RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3F1b3RlXCIgZWx0XG5cbiAgbGV0IG9mX3ByZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wcmVcIiBlbHRcblxuICBsZXQgb2ZfYnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYnJcIiBlbHRcblxuICBsZXQgb2ZfaHIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHJcIiBlbHRcblxuICBsZXQgb2ZfbW9kIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21vZFwiIGVsdFxuXG4gIGxldCBvZl9hbmNob3IgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYW5jaG9yXCIgZWx0XG5cbiAgbGV0IG9mX2ltYWdlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ltYWdlXCIgZWx0XG5cbiAgbGV0IG9mX29iamVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vYmplY3RcIiBlbHRcblxuICBsZXQgb2ZfcGFyYW0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGFyYW1cIiBlbHRcblxuICBsZXQgb2ZfYXJlYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hcmVhXCIgZWx0XG5cbiAgbGV0IG9mX21hcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tYXBcIiBlbHRcblxuICBsZXQgb2Zfc2NyaXB0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NjcmlwdFwiIGVsdFxuXG4gIGxldCBvZl9lbWJlZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbWJlZFwiIGVsdFxuXG4gIGxldCBvZl90YWJsZUNlbGwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDZWxsXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlUm93IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlUm93XCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlQ29sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlQ29sXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlU2VjdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZVNlY3Rpb25cIiBlbHRcblxuICBsZXQgb2ZfdGFibGVDYXB0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlQ2FwdGlvblwiIGVsdFxuXG4gIGxldCBvZl90YWJsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZVwiIGVsdFxuXG4gIGxldCBvZl9jYW52YXMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY2FudmFzXCIgZWx0XG5cbiAgbGV0IG9mX2lGcmFtZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pRnJhbWVcIiBlbHRcblxuICBsZXQgb2ZfYXVkaW8gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXVkaW9cIiBlbHRcblxuICBsZXQgb2ZfdmlkZW8gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdmlkZW9cIiBlbHRcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCBqc19zdHJpbmdfb2ZfZmxvYXQgZiA9IChKcy5udW1iZXJfb2ZfZmxvYXQgZikjI3RvU3RyaW5nXG5cbmxldCBqc19zdHJpbmdfb2ZfaW50IGkgPSAoSnMubnVtYmVyX29mX2Zsb2F0IChmbG9hdF9vZl9pbnQgaSkpIyN0b1N0cmluZ1xuXG5tb2R1bGUgdHlwZSBYTUwgPVxuICBYbWxfc2lncy5UXG4gICAgd2l0aCB0eXBlIHVyaSA9IHN0cmluZ1xuICAgICBhbmQgdHlwZSBldmVudF9oYW5kbGVyID0gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiBib29sXG4gICAgIGFuZCB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgLT4gYm9vbFxuICAgICBhbmQgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwua2V5Ym9hcmRFdmVudCBKcy50IC0+IGJvb2xcbiAgICAgYW5kIHR5cGUgZWx0ID0gRG9tLm5vZGUgSnMudFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHdlYWtNYXAgPSBvYmplY3RcbiAgbWV0aG9kIHNldCA6ICdhIC0+ICdiIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBnZXQgOiAnYSAtPiAnYiBKcy5PcHRkZWYudCBKcy5tZXRoXG5lbmRcblxubGV0IHJldGFpbiA9XG4gIGxldCBtYXAgOiAoRG9tLm5vZGUgSnMudCwgT2JqLnQgSnMuanNfYXJyYXkgSnMudCkgd2Vha01hcCBKcy50ID1cbiAgICBsZXQgd2Vha01hcCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2Vha01hcCBpblxuICAgIG5ldyVqcyB3ZWFrTWFwXG4gIGluXG4gIGZ1biAodHlwZSBhKSBub2RlIH4oa2VlcG1lIDogYSkgLT5cbiAgICBsZXQgcHJldiA9XG4gICAgICBKcy5PcHRkZWYuY2FzZSAobWFwIyNnZXQgbm9kZSkgKGZ1biAoKSAtPiBuZXclanMgSnMuYXJyYXlfZW1wdHkpIChmdW4geCAtPiB4KVxuICAgIGluXG4gICAgbGV0IChfIDogaW50KSA9IHByZXYjI3B1c2ggKE9iai5yZXByIGtlZXBtZSkgaW5cbiAgICBtYXAjI3NldCBub2RlIHByZXZcblxubW9kdWxlIFhtbCA9IHN0cnVjdFxuICBtb2R1bGUgVyA9IFhtbF93cmFwLk5vV3JhcFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhXG5cbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBsaXN0XG5cbiAgdHlwZSB1cmkgPSBzdHJpbmdcblxuICBsZXQgdXJpX29mX3N0cmluZyBzID0gc1xuXG4gIGxldCBzdHJpbmdfb2ZfdXJpIHMgPSBzXG5cbiAgdHlwZSBhbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwua2V5Ym9hcmRFdmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIHRvdWNoX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC50b3VjaEV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUgYXR0cmliX2sgPVxuICAgIHwgRXZlbnQgb2YgZXZlbnRfaGFuZGxlclxuICAgIHwgTW91c2VFdmVudCBvZiBtb3VzZV9ldmVudF9oYW5kbGVyXG4gICAgfCBLZXlib2FyZEV2ZW50IG9mIGtleWJvYXJkX2V2ZW50X2hhbmRsZXJcbiAgICB8IFRvdWNoRXZlbnQgb2YgdG91Y2hfZXZlbnRfaGFuZGxlclxuICAgIHwgQXR0ciBvZiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24gUmVhY3QuUy50XG5cbiAgdHlwZSBhdHRyaWIgPSBhbmFtZSAqIGF0dHJpYl9rXG5cbiAgbGV0IGF0dHIgbmFtZSB2ID0gbmFtZSwgQXR0ciAoUmVhY3QuUy5jb25zdCAoU29tZSB2KSlcblxuICBsZXQgZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgOiBhdHRyaWIgPSBhdHRyIG5hbWUgKGpzX3N0cmluZ19vZl9mbG9hdCB2YWx1ZSlcblxuICBsZXQgaW50X2F0dHJpYiBuYW1lIHZhbHVlID0gYXR0ciBuYW1lIChqc19zdHJpbmdfb2ZfaW50IHZhbHVlKVxuXG4gIGxldCBzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyB2YWx1ZSlcblxuICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIHZhbHVlcykpXG5cbiAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIixcIiB2YWx1ZXMpKVxuXG4gIGxldCBldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IGV2ZW50X2hhbmRsZXIpID0gbmFtZSwgRXZlbnQgdmFsdWVcblxuICBsZXQgbW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiBtb3VzZV9ldmVudF9oYW5kbGVyKSA9XG4gICAgbmFtZSwgTW91c2VFdmVudCB2YWx1ZVxuXG4gIGxldCBrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IGtleWJvYXJkX2V2ZW50X2hhbmRsZXIpID1cbiAgICBuYW1lLCBLZXlib2FyZEV2ZW50IHZhbHVlXG5cbiAgbGV0IHRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDogdG91Y2hfZXZlbnRfaGFuZGxlcikgPVxuICAgIG5hbWUsIFRvdWNoRXZlbnQgdmFsdWVcblxuICBsZXQgdXJpX2F0dHJpYiBuYW1lIHZhbHVlID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgdmFsdWUpXG5cbiAgbGV0IHVyaXNfYXR0cmliIG5hbWUgdmFsdWVzID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgdmFsdWVzKSlcblxuICAoKiogRWxlbWVudCAqKVxuXG4gIHR5cGUgZWx0ID0gRG9tLm5vZGUgSnMudFxuXG4gIHR5cGUgZW5hbWUgPSBzdHJpbmdcblxuICBsZXQgZW1wdHkgKCkgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZURvY3VtZW50RnJhZ21lbnQgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgY29tbWVudCBjID0gKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVDb21tZW50IChKcy5zdHJpbmcgYykgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgcGNkYXRhIHMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgcykgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgZW5jb2RlZHBjZGF0YSBzID0gKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVUZXh0Tm9kZSAoSnMuc3RyaW5nIHMpIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IGVudGl0eSA9XG4gICAgbGV0IHN0cmluZ19mb2xkIHMgfnBvcyB+aW5pdCB+ZiA9XG4gICAgICBsZXQgciA9IHJlZiBpbml0IGluXG4gICAgICBmb3IgaSA9IHBvcyB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIGxldCBjID0gcy5baV0gaW5cbiAgICAgICAgciA6PSBmICFyIGNcbiAgICAgIGRvbmU7XG4gICAgICAhclxuICAgIGluXG4gICAgbGV0IGludmFsaWRfZW50aXR5IGUgPSBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJJbnZhbGlkIGVudGl0eSAlU1wiIGUpIGluXG4gICAgbGV0IGludF9vZl9jaGFyID0gZnVuY3Rpb25cbiAgICAgIHwgJzAnIC4uICc5JyBhcyB4IC0+IFNvbWUgKENoYXIuY29kZSB4IC0gQ2hhci5jb2RlICcwJylcbiAgICAgIHwgJ2EnIC4uICdmJyBhcyB4IC0+IFNvbWUgKENoYXIuY29kZSB4IC0gQ2hhci5jb2RlICdhJyArIDEwKVxuICAgICAgfCAnQScgLi4gJ0YnIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJ0EnICsgMTApXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHBhcnNlX2ludCB+cG9zIH5iYXNlIGUgPVxuICAgICAgc3RyaW5nX2ZvbGQgZSB+cG9zIH5pbml0OjAgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgICAgIG1hdGNoIGludF9vZl9jaGFyIHggd2l0aFxuICAgICAgICAgIHwgU29tZSBkIHdoZW4gZCA8IGJhc2UgLT4gKGFjYyAqIGJhc2UpICsgZFxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBpbnZhbGlkX2VudGl0eSBlKVxuICAgIGluXG4gICAgbGV0IGlzX2FscGhhX251bSA9IGZ1bmN0aW9uXG4gICAgICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGZ1biBlIC0+XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBlIGluXG4gICAgICBsZXQgc3RyID1cbiAgICAgICAgaWYgbGVuID49IDEgJiYgQ2hhci5lcXVhbCBlLlswXSAnIydcbiAgICAgICAgdGhlblxuICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgIGlmIGxlbiA+PSAyICYmIChDaGFyLmVxdWFsIGUuWzFdICd4JyB8fCBDaGFyLmVxdWFsIGUuWzFdICdYJylcbiAgICAgICAgICAgIHRoZW4gcGFyc2VfaW50IH5wb3M6MiB+YmFzZToxNiBlXG4gICAgICAgICAgICBlbHNlIHBhcnNlX2ludCB+cG9zOjEgfmJhc2U6MTAgZVxuICAgICAgICAgIGluXG4gICAgICAgICAgSnMuc3RyaW5nX2NvbnN0ciMjZnJvbUNoYXJDb2RlIGlcbiAgICAgICAgZWxzZSBpZiBzdHJpbmdfZm9sZCBlIH5wb3M6MCB+aW5pdDp0cnVlIH5mOihmdW4gYWNjIHggLT5cbiAgICAgICAgICAgICAgICAgICAgKCogVGhpcyBpcyBub3QgcXVpdGUgcmlnaHQgYWNjb3JkaW5nIHRvXG4gICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vd3d3LnhtbC5jb20vYXhtbC90YXJnZXQuaHRtbCNOVC1OYW1lLlxuICAgICAgICAgICAgICAgICAgICAgICBidXQgaXQgc2VlbXMgdG8gY292ZXIgYWxsIGh0bWw1IGVudGl0aWVzXG4gICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vZGV2LnczLm9yZy9odG1sNS9odG1sLWF1dGhvci9jaGFycmVmICopXG4gICAgICAgICAgICAgICAgICAgIGFjYyAmJiBpc19hbHBoYV9udW0geClcbiAgICAgICAgdGhlblxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgXCJxdW90XCIgLT4gSnMuc3RyaW5nIFwiXFxcIlwiXG4gICAgICAgICAgfCBcImFtcFwiIC0+IEpzLnN0cmluZyBcIiZcIlxuICAgICAgICAgIHwgXCJhcG9zXCIgLT4gSnMuc3RyaW5nIFwiJ1wiXG4gICAgICAgICAgfCBcImx0XCIgLT4gSnMuc3RyaW5nIFwiPFwiXG4gICAgICAgICAgfCBcImd0XCIgLT4gSnMuc3RyaW5nIFwiPlwiXG4gICAgICAgICAgfCBcIlwiIC0+IGludmFsaWRfZW50aXR5IGVcbiAgICAgICAgICB8IF8gLT4gRG9tX2h0bWwuZGVjb2RlX2h0bWxfZW50aXRpZXMgKEpzLnN0cmluZyAoXCImXCIgXiBlIF4gXCI7XCIpKVxuICAgICAgICBlbHNlIGludmFsaWRfZW50aXR5IGVcbiAgICAgIGluXG4gICAgICAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIHN0ciA6PiBEb20ubm9kZSBKcy50KVxuXG4gICgqIFRPRE86IGZpeCBnZXRfcHJvcFxuICAgICBpdCBvbmx5IHdvcmsgd2hlbiBodG1sIGF0dHJpYnV0ZSBhbmQgZG9tIHByb3BlcnR5IG5hbWVzIGNvcnJlc3BvbmQuXG4gICAgIGZpbmQgYSB3YXkgdG8gZ2V0IGRvbSBwcm9wZXJ0eSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gaHRtbCBhdHRyaWJ1dGVcbiAgKilcblxuICBsZXQgZ2V0X3Byb3Agbm9kZSBuYW1lID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmdldCBub2RlIG5hbWUpIHRoZW4gU29tZSBuYW1lIGVsc2UgTm9uZVxuXG4gIGxldCBpdGVyX3Byb3BfcHJvdGVjdGVkIG5vZGUgbmFtZSBmID1cbiAgICBtYXRjaCBnZXRfcHJvcCBub2RlIG5hbWUgd2l0aFxuICAgIHwgU29tZSBuIC0+ICggdHJ5IGYgbiB3aXRoIF8gLT4gKCkpXG4gICAgfCBOb25lIC0+ICgpXG5cbiAgbGV0IGF0dGFjaF9hdHRyaWJzIG5vZGUgbCA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChuJywgYXR0KSAtPlxuICAgICAgICBsZXQgbiA9IEpzLnN0cmluZyBuJyBpblxuICAgICAgICBtYXRjaCBhdHQgd2l0aFxuICAgICAgICB8IEF0dHIgYSAtPlxuICAgICAgICAgICAgbGV0IChrZWVwbWUgOiB1bml0IFJlYWN0LlMudCkgPVxuICAgICAgICAgICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAobm9kZSMjc2V0QXR0cmlidXRlIG4gdik7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbicgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJzdHlsZVwiIC0+IG5vZGUjIy5zdHlsZSMjLmNzc1RleHQgOj0gdlxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyX3Byb3BfcHJvdGVjdGVkIG5vZGUgbiAoZnVuIG5hbWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuYW1lIHYpKVxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgKG5vZGUjI3JlbW92ZUF0dHJpYnV0ZSBuKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBuJyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBcInN0eWxlXCIgLT4gbm9kZSMjLnN0eWxlIyMuY3NzVGV4dCA6PSBKcy5zdHJpbmcgXCJcIlxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyX3Byb3BfcHJvdGVjdGVkIG5vZGUgbiAoZnVuIG5hbWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuYW1lIEpzLm51bGwpKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmV0YWluIChub2RlIDo+IERvbS5ub2RlIEpzLnQpIH5rZWVwbWVcbiAgICAgICAgfCBFdmVudCBoIC0+IEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKVxuICAgICAgICB8IE1vdXNlRXZlbnQgaCAtPlxuICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpXG4gICAgICAgIHwgS2V5Ym9hcmRFdmVudCBoIC0+XG4gICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSlcbiAgICAgICAgfCBUb3VjaEV2ZW50IGggLT5cbiAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKSlcbiAgICAgIGxcblxuICBsZXQgbGVhZiA/KGEgPSBbXSkgbmFtZSA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IG5vZGUgPyhhID0gW10pIG5hbWUgY2hpbGRyZW4gPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBjIC0+IGlnbm9yZSAoZSMjYXBwZW5kQ2hpbGQgYykpIGNoaWxkcmVuO1xuICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IGNkYXRhIHMgPSBwY2RhdGEgc1xuXG4gIGxldCBjZGF0YV9zY3JpcHQgcyA9IGNkYXRhIHNcblxuICBsZXQgY2RhdGFfc3R5bGUgcyA9IGNkYXRhIHNcbmVuZFxuXG5tb2R1bGUgWG1sX1N2ZyA9IHN0cnVjdFxuICBpbmNsdWRlIFhtbFxuXG4gIGxldCBsZWFmID8oYSA9IFtdKSBuYW1lID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50TlMgRG9tX3N2Zy54bWxucyAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IG5vZGUgPyhhID0gW10pIG5hbWUgY2hpbGRyZW4gPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnROUyBEb21fc3ZnLnhtbG5zIChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgTGlzdC5pdGVyIChmdW4gYyAtPiBpZ25vcmUgKGUjI2FwcGVuZENoaWxkIGMpKSBjaGlsZHJlbjtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuZW5kXG5cbm1vZHVsZSBTdmcgPSBTdmdfZi5NYWtlIChYbWxfU3ZnKVxubW9kdWxlIEh0bWwgPSBIdG1sX2YuTWFrZSAoWG1sKSAoU3ZnKVxubW9kdWxlIEh0bWw1ID0gSHRtbFxuXG5tb2R1bGUgVG9fZG9tID0gVHl4bWxfY2FzdC5NYWtlVG8gKHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEh0bWwuZWx0XG5cbiAgbGV0IGVsdCA9IEh0bWwudG9lbHRcbmVuZClcblxubW9kdWxlIE9mX2RvbSA9IFR5eG1sX2Nhc3QuTWFrZU9mIChzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBIdG1sLmVsdFxuXG4gIGxldCBlbHQgPSBIdG1sLnRvdFxuZW5kKVxuXG5tb2R1bGUgUmVnaXN0ZXIgPSBzdHJ1Y3RcbiAgbGV0IHJlbW92ZUNoaWxkcmVuIChub2RlIDogI0RvbS5lbGVtZW50IEpzLnQpID1cbiAgICBsZXQgbCA9IG5vZGUjIy5jaGlsZE5vZGVzIGluXG4gICAgZm9yIGkgPSAwIHRvIGwjIy5sZW5ndGggLSAxIGRvXG4gICAgICBKcy5PcHQuaXRlciAobCMjaXRlbSBpKSAoZnVuIHggLT4gaWdub3JlIChub2RlIyNyZW1vdmVDaGlsZCB4KSlcbiAgICBkb25lXG5cbiAgbGV0IGFkZF90byA/KGtlZXAgPSB0cnVlKSBub2RlIGNvbnRlbnQgPVxuICAgIGlmIG5vdCBrZWVwIHRoZW4gcmVtb3ZlQ2hpbGRyZW4gbm9kZTtcbiAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+IERvbS5hcHBlbmRDaGlsZCBub2RlIChUb19kb20ub2ZfZWxlbWVudCB4KSkgY29udGVudFxuXG4gIGxldCBpZCA/a2VlcCBpZCBjb250ZW50ID1cbiAgICBsZXQgbm9kZSA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkIGlkIGluXG4gICAgYWRkX3RvID9rZWVwIG5vZGUgY29udGVudFxuXG4gIGxldCBib2R5ID9rZWVwIGNvbnRlbnQgPSBhZGRfdG8gP2tlZXAgRG9tX2h0bWwuZG9jdW1lbnQjIy5ib2R5IGNvbnRlbnRcblxuICBsZXQgaGVhZCA/a2VlcCBjb250ZW50ID0gYWRkX3RvID9rZWVwIERvbV9odG1sLmRvY3VtZW50IyMuaGVhZCBjb250ZW50XG5cbiAgbGV0IGh0bWwgP2hlYWQgYm9keSA9XG4gICAgKG1hdGNoIGhlYWQgd2l0aFxuICAgIHwgU29tZSBoIC0+IERvbV9odG1sLmRvY3VtZW50IyMuaGVhZCA6PSBUb19kb20ub2ZfaGVhZCBoXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgOj0gVG9fZG9tLm9mX2JvZHkgYm9keTtcbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBXcmFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFJlYWN0LnNpZ25hbFxuXG4gIHR5cGUgJ2EgdGxpc3QgPSAnYSBSZWFjdGl2ZURhdGEuUkxpc3QudFxuXG4gIHR5cGUgKCdhLCAnYikgZnQgPSAnYSAtPiAnYlxuXG4gIGxldCByZXR1cm4gPSBSZWFjdC5TLmNvbnN0XG5cbiAgbGV0IGZtYXAgZiA9IFJlYWN0LlMubWFwIGZcblxuICBsZXQgbmlsICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5cbiAgbGV0IHNpbmdsZXRvbiA9IFJlYWN0aXZlRGF0YS5STGlzdC5zaW5nbGV0b25fc1xuXG4gIGxldCBjb25zIHggeHMgPSBSZWFjdGl2ZURhdGEuUkxpc3QuY29uY2F0IChzaW5nbGV0b24geCkgeHNcblxuICBsZXQgbWFwIGYgPSBSZWFjdGl2ZURhdGEuUkxpc3QubWFwIGZcblxuICBsZXQgYXBwZW5kIHggeSA9IFJlYWN0aXZlRGF0YS5STGlzdC5jb25jYXQgeCB5XG5lbmRcblxubW9kdWxlIFV0aWwgPSBzdHJ1Y3RcbiAgb3BlbiBSZWFjdGl2ZURhdGFcbiAgb3BlbiBSTGlzdFxuXG4gIGxldCBpbnNlcnRBdCBkb20gaSB4ID1cbiAgICBsZXQgbm9kZXMgPSBkb20jIy5jaGlsZE5vZGVzIGluXG4gICAgYXNzZXJ0IChpIDw9IG5vZGVzIyMubGVuZ3RoKTtcbiAgICBpZiBpID0gbm9kZXMjIy5sZW5ndGhcbiAgICB0aGVuIGlnbm9yZSAoZG9tIyNhcHBlbmRDaGlsZCAoeCA6PiBEb20ubm9kZSBKcy50KSlcbiAgICBlbHNlIGlnbm9yZSAoZG9tIyNpbnNlcnRCZWZvcmUgeCAobm9kZXMjI2l0ZW0gaSkpXG5cbiAgbGV0IG1lcmdlX29uZV9wYXRjaCAoZG9tIDogRG9tLm5vZGUgSnMudCkgKHAgOiBEb20ubm9kZSBKcy50IHApID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IEkgKGksIHgpIC0+XG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgMSArIGkgZWxzZSBpIGluXG4gICAgICAgIGluc2VydEF0IGRvbSBpIHhcbiAgICB8IFIgaSAtPlxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIGkgZWxzZSBpIGluXG4gICAgICAgIGxldCBub2RlcyA9IGRvbSMjLmNoaWxkTm9kZXMgaW5cbiAgICAgICAgYXNzZXJ0IChpID49IDAgJiYgaSA8IG5vZGVzIyMubGVuZ3RoKTtcbiAgICAgICAgSnMuT3B0Lml0ZXIgKG5vZGVzIyNpdGVtIGkpIChmdW4gbiAtPiBEb20ucmVtb3ZlQ2hpbGQgZG9tIG4pXG4gICAgfCBVIChpLCB4KSAtPiAoXG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgaSBlbHNlIGkgaW5cbiAgICAgICAgbWF0Y2ggSnMuT3B0LnRvX29wdGlvbiAoZG9tIyMuY2hpbGROb2RlcyMjaXRlbSBpKSB3aXRoXG4gICAgICAgIHwgU29tZSBvbGQgLT4gaWdub3JlIChkb20jI3JlcGxhY2VDaGlsZCB4IG9sZClcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFggKGksIG1vdmUpIC0+IChcbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyBpIGVsc2UgaSBpblxuICAgICAgICBpZiBtb3ZlID0gMFxuICAgICAgICB0aGVuICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIChkb20jIy5jaGlsZE5vZGVzIyNpdGVtIGkpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaScgLT4gaW5zZXJ0QXQgZG9tIChpICsgaWYgbW92ZSA+IDAgdGhlbiBtb3ZlICsgMSBlbHNlIG1vdmUpIGknXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcblxuICBsZXQgcmVjIHJlbW92ZUNoaWxkcmVuIGRvbSA9XG4gICAgbWF0Y2ggSnMuT3B0LnRvX29wdGlvbiBkb20jIy5sYXN0Q2hpbGQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjIC0+XG4gICAgICAgIGlnbm9yZSAoZG9tIyNyZW1vdmVDaGlsZCBjKTtcbiAgICAgICAgcmVtb3ZlQ2hpbGRyZW4gZG9tXG5cbiAgbGV0IG1lcmdlX21zZyAoZG9tIDogRG9tLm5vZGUgSnMudCkgKG1zZyA6IERvbS5ub2RlIEpzLnQgbXNnKSA9XG4gICAgbWF0Y2ggbXNnIHdpdGhcbiAgICB8IFNldCBsIC0+XG4gICAgICAgICgqIEZvcm1hdC5lcHJpbnRmIFwicmVwbGFjZSBhbGxALlwiOyAqKVxuICAgICAgICByZW1vdmVDaGlsZHJlbiBkb207XG4gICAgICAgIExpc3QuaXRlciAoZnVuIGwgLT4gaWdub3JlIChkb20jI2FwcGVuZENoaWxkIGwpKSBsXG4gICAgfCBQYXRjaCBwIC0+XG4gICAgICAgICgqIEZvcm1hdC5lcHJpbnRmIFwicGF0Y2hALlwiOyAqKVxuICAgICAgICBMaXN0Lml0ZXIgKG1lcmdlX29uZV9wYXRjaCBkb20pIHBcblxuICBsZXQgdXBkYXRlX2NoaWxkcmVuIChkb20gOiBEb20ubm9kZSBKcy50KSAobm9kZXMgOiBEb20ubm9kZSBKcy50IHQpID1cbiAgICByZW1vdmVDaGlsZHJlbiBkb207XG4gICAgbGV0IGtlZXBtZSA6IHVuaXQgUmVhY3QuUy50ID0gZm9sZCAoZnVuICgpIG1zZyAtPiBtZXJnZV9tc2cgZG9tIG1zZykgbm9kZXMgKCkgaW5cbiAgICByZXRhaW4gKGRvbSA6IERvbS5ub2RlIEpzLnQpIH5rZWVwbWU7XG4gICAgKClcbmVuZFxuXG5tb2R1bGUgUiA9IHN0cnVjdFxuICBsZXQgZmlsdGVyX2F0dHJpYiAobmFtZSwgYSkgb24gPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgWG1sLkV2ZW50IF8gfCBYbWwuTW91c2VFdmVudCBfIHwgWG1sLktleWJvYXJkRXZlbnQgXyB8IFhtbC5Ub3VjaEV2ZW50IF8gLT5cbiAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaWx0ZXJfYXR0cmliIG5vdCBpbXBsZW1lbnRlZCBmb3IgZXZlbnQgaGFuZGxlclwiKVxuICAgIHwgWG1sLkF0dHIgYSAtPiBuYW1lLCBYbWwuQXR0ciAoUmVhY3QuUy5sMiAoZnVuIG9uIGEgLT4gaWYgb24gdGhlbiBhIGVsc2UgTm9uZSkgb24gYSlcblxuICBsZXQgYXR0YWNoX2F0dHJpYnMgPSBYbWwuYXR0YWNoX2F0dHJpYnNcblxuICBtb2R1bGUgWG1sID0gc3RydWN0XG4gICAgbW9kdWxlIFcgPSBXcmFwXG5cbiAgICB0eXBlICdhIHdyYXAgPSAnYSBXLnRcblxuICAgIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgVy50bGlzdFxuXG4gICAgdHlwZSB1cmkgPSBYbWwudXJpXG5cbiAgICBsZXQgc3RyaW5nX29mX3VyaSA9IFhtbC5zdHJpbmdfb2ZfdXJpXG5cbiAgICBsZXQgdXJpX29mX3N0cmluZyA9IFhtbC51cmlfb2Zfc3RyaW5nXG5cbiAgICB0eXBlIGFuYW1lID0gWG1sLmFuYW1lXG5cbiAgICB0eXBlIGV2ZW50X2hhbmRsZXIgPSBYbWwuZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIHRvdWNoX2V2ZW50X2hhbmRsZXIgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSBhdHRyaWIgPSBYbWwuYXR0cmliXG5cbiAgICBsZXQgYXR0ciBuYW1lIGYgcyA9XG4gICAgICBsZXQgYSA9IFcuZm1hcCBmIHMgaW5cbiAgICAgIG5hbWUsIFhtbC5BdHRyIGFcblxuICAgIGxldCBmbG9hdF9hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChqc19zdHJpbmdfb2ZfZmxvYXQgZikpIHNcblxuICAgIGxldCBpbnRfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoanNfc3RyaW5nX29mX2ludCBmKSkgc1xuXG4gICAgbGV0IHN0cmluZ19hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgZikpIHNcblxuICAgIGxldCBzcGFjZV9zZXBfYXR0cmliIG5hbWUgcyA9XG4gICAgICBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiBmKSkpIHNcblxuICAgIGxldCBjb21tYV9zZXBfYXR0cmliIG5hbWUgcyA9XG4gICAgICBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIixcIiBmKSkpIHNcblxuICAgIGxldCBldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQgbW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IGtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCB0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQgdXJpX2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyBmKSkgc1xuXG4gICAgbGV0IHVyaXNfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIGYpKSkgc1xuXG4gICAgdHlwZSBlbHQgPSBYbWwuZWx0XG5cbiAgICB0eXBlIGVuYW1lID0gWG1sLmVuYW1lXG5cbiAgICBsZXQgZW1wdHkgPSBYbWwuZW1wdHlcblxuICAgIGxldCBjb21tZW50ID0gWG1sLmNvbW1lbnRcblxuICAgIGxldCBwY2RhdGEgcyA9XG4gICAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVUZXh0Tm9kZSAoSnMuc3RyaW5nIFwiXCIpIGluXG4gICAgICBsZXQga2VlcG1lID0gUmVhY3QuUy5tYXAgKGZ1biBzIC0+IGUjIy5kYXRhIDo9IEpzLnN0cmluZyBzKSBzIGluXG4gICAgICByZXRhaW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgfmtlZXBtZTtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgICBsZXQgZW5jb2RlZHBjZGF0YSBzID0gcGNkYXRhIHNcblxuICAgIGxldCBlbnRpdHkgcyA9IFhtbC5lbnRpdHkgc1xuXG4gICAgbGV0IGxlYWYgPSBYbWwubGVhZlxuXG4gICAgbGV0IG5vZGUgPyhhID0gW10pIG5hbWUgbCA9XG4gICAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICAgIFV0aWwudXBkYXRlX2NoaWxkcmVuIChlIDo+IERvbS5ub2RlIEpzLnQpIGw7XG4gICAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gICAgbGV0IGNkYXRhID0gWG1sLmNkYXRhXG5cbiAgICBsZXQgY2RhdGFfc2NyaXB0ID0gWG1sLmNkYXRhX3NjcmlwdFxuXG4gICAgbGV0IGNkYXRhX3N0eWxlID0gWG1sLmNkYXRhX3N0eWxlXG4gIGVuZFxuXG4gIG1vZHVsZSBYbWxfU3ZnID0gc3RydWN0XG4gICAgaW5jbHVkZSBYbWxcblxuICAgIGxldCBsZWFmID0gWG1sX1N2Zy5sZWFmXG5cbiAgICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBsID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnROUyBEb21fc3ZnLnhtbG5zIChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICAgIFV0aWwudXBkYXRlX2NoaWxkcmVuIChlIDo+IERvbS5ub2RlIEpzLnQpIGw7XG4gICAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuICBlbmRcblxuICBtb2R1bGUgU3ZnID0gU3ZnX2YuTWFrZSAoWG1sX1N2ZylcbiAgbW9kdWxlIEh0bWwgPSBIdG1sX2YuTWFrZSAoWG1sKSAoU3ZnKVxuICBtb2R1bGUgSHRtbDUgPSBIdG1sXG5lbmRcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBwcmV2IDogJ2EgdDtcbiAgbXV0YWJsZSBuZXh0IDogJ2EgdDtcbn1cblxudHlwZSAnYSBub2RlID0ge1xuICBub2RlX3ByZXYgOiAnYSB0O1xuICBub2RlX25leHQgOiAnYSB0O1xuICBtdXRhYmxlIG5vZGVfZGF0YSA6ICdhO1xuICBtdXRhYmxlIG5vZGVfYWN0aXZlIDogYm9vbDtcbn1cblxuZXh0ZXJuYWwgc2VxX29mX25vZGUgOiAnYSBub2RlIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBub2RlX29mX3NlcSA6ICdhIHQgLT4gJ2Egbm9kZSA9IFwiJWlkZW50aXR5XCJcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcGVyYXRpb25zIG9uIG5vZGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgZ2V0IG5vZGUgPVxuICBub2RlLm5vZGVfZGF0YVxuXG5sZXQgc2V0IG5vZGUgZGF0YSA9XG4gIG5vZGUubm9kZV9kYXRhIDwtIGRhdGFcblxubGV0IHJlbW92ZSBub2RlID1cbiAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGJlZ2luXG4gICAgbm9kZS5ub2RlX2FjdGl2ZSA8LSBmYWxzZTtcbiAgICBsZXQgc2VxID0gc2VxX29mX25vZGUgbm9kZSBpblxuICAgIHNlcS5wcmV2Lm5leHQgPC0gc2VxLm5leHQ7XG4gICAgc2VxLm5leHQucHJldiA8LSBzZXEucHJldlxuICBlbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcGVyYXRpb25zIG9uIHNlcXVlbmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IHJlYyBzZXEgPSB7IHByZXYgPSBzZXE7IG5leHQgPSBzZXEgfSBpblxuICBzZXFcblxubGV0IGNsZWFyIHNlcSA9XG4gIHNlcS5wcmV2IDwtIHNlcTtcbiAgc2VxLm5leHQgPC0gc2VxXG5cbmxldCBpc19lbXB0eSBzZXEgPSBzZXEubmV4dCA9PSBzZXFcblxubGV0IGxlbmd0aCBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciBsZW4gPVxuICAgIGlmIGN1cnIgPT0gc2VxIHRoZW5cbiAgICAgIGxlblxuICAgIGVsc2VcbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpbiBsb29wIG5vZGUubm9kZV9uZXh0IChsZW4gKyAxKVxuICBpblxuICBsb29wIHNlcS5uZXh0IDBcblxubGV0IGFkZF9sIGRhdGEgc2VxID1cbiAgbGV0IG5vZGUgPSB7IG5vZGVfcHJldiA9IHNlcTsgbm9kZV9uZXh0ID0gc2VxLm5leHQ7IG5vZGVfZGF0YSA9IGRhdGE7IG5vZGVfYWN0aXZlID0gdHJ1ZSB9IGluXG4gIHNlcS5uZXh0LnByZXYgPC0gc2VxX29mX25vZGUgbm9kZTtcbiAgc2VxLm5leHQgPC0gc2VxX29mX25vZGUgbm9kZTtcbiAgbm9kZVxuXG5sZXQgYWRkX3IgZGF0YSBzZXEgPVxuICBsZXQgbm9kZSA9IHsgbm9kZV9wcmV2ID0gc2VxLnByZXY7IG5vZGVfbmV4dCA9IHNlcTsgbm9kZV9kYXRhID0gZGF0YTsgbm9kZV9hY3RpdmUgPSB0cnVlIH0gaW5cbiAgc2VxLnByZXYubmV4dCA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBzZXEucHJldiA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBub2RlXG5cbmxldCB0YWtlX2wgc2VxID1cbiAgaWYgaXNfZW1wdHkgc2VxIHRoZW5cbiAgICByYWlzZSBFbXB0eVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEubmV4dCBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9yIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgcmFpc2UgRW1wdHlcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLnByZXYgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBub2RlLm5vZGVfZGF0YVxuICBlbmRcblxubGV0IHRha2Vfb3B0X2wgc2VxID1cbiAgaWYgaXNfZW1wdHkgc2VxIHRoZW5cbiAgICBOb25lXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5uZXh0IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgU29tZSBub2RlLm5vZGVfZGF0YVxuICBlbmRcblxubGV0IHRha2Vfb3B0X3Igc2VxID1cbiAgaWYgaXNfZW1wdHkgc2VxIHRoZW5cbiAgICBOb25lXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5wcmV2IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgU29tZSBub2RlLm5vZGVfZGF0YVxuICBlbmRcblxubGV0IHRyYW5zZmVyX2wgczEgczIgPVxuICBzMi5uZXh0LnByZXYgPC0gczEucHJldjtcbiAgczEucHJldi5uZXh0IDwtIHMyLm5leHQ7XG4gIHMyLm5leHQgPC0gczEubmV4dDtcbiAgczEubmV4dC5wcmV2IDwtIHMyO1xuICBzMS5wcmV2IDwtIHMxO1xuICBzMS5uZXh0IDwtIHMxXG5cbmxldCB0cmFuc2Zlcl9yIHMxIHMyID1cbiAgczIucHJldi5uZXh0IDwtIHMxLm5leHQ7XG4gIHMxLm5leHQucHJldiA8LSBzMi5wcmV2O1xuICBzMi5wcmV2IDwtIHMxLnByZXY7XG4gIHMxLnByZXYubmV4dCA8LSBzMjtcbiAgczEucHJldiA8LSBzMTtcbiAgczEubmV4dCA8LSBzMVxuXG5sZXQgaXRlcl9sIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZS5ub2RlX2RhdGE7XG4gICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLm5leHRcblxubGV0IGl0ZXJfciBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuIGJlZ2luXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBmIG5vZGUubm9kZV9kYXRhO1xuICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBpdGVyX25vZGVfbCBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuIGJlZ2luXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBmIG5vZGU7XG4gICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLm5leHRcblxubGV0IGl0ZXJfbm9kZV9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEucHJldlxuXG5sZXQgZm9sZF9sIGYgc2VxIGFjYyA9XG4gIGxldCByZWMgbG9vcCBjdXJyIGFjYyA9XG4gICAgaWYgY3VyciA9PSBzZXEgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dCAoZiBub2RlLm5vZGVfZGF0YSBhY2MpXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX25leHQgYWNjXG4gIGluXG4gIGxvb3Agc2VxLm5leHQgYWNjXG5cbmxldCBmb2xkX3IgZiBzZXEgYWNjID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgYWNjID1cbiAgICBpZiBjdXJyID09IHNlcSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2IChmIG5vZGUubm9kZV9kYXRhIGFjYylcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldiBhY2NcbiAgaW5cbiAgbG9vcCBzZXEucHJldiBhY2NcblxubGV0IGZpbmRfbm9kZV9sIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGlmIGYgbm9kZS5ub2RlX2RhdGEgdGhlblxuICAgICAgICAgIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgIGVsc2VcbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICBpblxuICBsb29wIHNlcS5uZXh0XG5cbmxldCBmaW5kX25vZGVfciBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBpZiBmIG5vZGUubm9kZV9kYXRhIHRoZW5cbiAgICAgICAgICBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgICBlbHNlXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICBlbHNlXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgaW5cbiAgbG9vcCBzZXEucHJldlxuXG5sZXQgZmluZF9ub2RlX29wdF9sIGYgc2VxID1cbiAgdHJ5IFNvbWUgKGZpbmRfbm9kZV9sIGYgc2VxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbmxldCBmaW5kX25vZGVfb3B0X3IgZiBzZXEgPVxuICB0cnkgU29tZSAoZmluZF9ub2RlX3IgZiBzZXEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogUmVhZGluZyBndWlkZVxuXG4gICBXZWxjb21lIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTHd0IGNvcmUhIFRoaXMgaXMgYSBiaWcgZmlsZSwgYnV0IHdlXG4gICBob3BlIHRoYXQgcmVhZGluZyBpdCAocGFydHMgYXQgYSB0aW1lISkgd2lsbCBub3QgYmUgc2NhcnkgOikgSGVyZSBpcyB3aHk6XG5cblxuICAgKiBTZWN0aW9uaW5nXG5cbiAgIFRoZSBjb2RlIGlzIGJyb2tlbiB1cCBpbnRvIHNlY3Rpb25zLCBlYWNoIG9uZSBvZiB3aGljaCBpcyBhbiBpbnRlcm5hbCBtb2R1bGUuXG4gICBNb3N0IG9mIHRoZSBtb2R1bGVzIGhhdmUgYSBzaWduYXR1cmUsIHdoaWNoIHNlcnZlcyBhcyBhIG5lYXQgdGFibGUgb2ZcbiAgIGNvbnRlbnRzLlxuXG4gICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSByZWFkIHRoaXMgZmlsZSB3aXRoIGNvZGUgZm9sZGluZyBlbmFibGVkLiBJZiB5b3VcbiAgIGZvbGQgYWxsIHRoZSBtb2R1bGVzLCB5b3UgY2FuIHZpc3VhbGl6ZSB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgTHd0IHF1aXRlXG4gICBlYXNpbHkuIFlvdSBjYW4gdGhlbiBleHBhbmQgbW9kdWxlcyBhcyBuZWVkZWQsIGRlcGVuZGluZyBvbiB3aGF0IHBhcnQgb2YgdGhlXG4gICBpbXBsZW1lbnRhdGlvbiB5b3UgYXJlIGludGVyZXN0ZWQgaW4uIFdpdGhvdXQgY29kZSBmb2xkaW5nLCB5b3UgZmFjZSBhblxuICAgaW50aW1pZGF0aW5nIHdhbGwgb2YgY29kZSA6KCBZb3UgY2FuIHN0aWxsIHZpc3VhbGx5IHBhcnNlIHRoZSBmaWxlLCBob3dldmVyLFxuICAgYmVjYXVzZSB0aGVyZSBhcmUgcGxlbnR5IG9mIGJsYW5rIGxpbmVzIHRvIGhlbHAgc2VjdGlvbiB0aGluZ3Mgb2ZmLiBZb3UgY2FuXG4gICBhbHNvIHZpZXcgdGhpcyBmaWxlIGZvbGRlZCBvbmxpbmU6XG5cbiAgICAgaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYWFudHJvbi85ZmFiMGJkZWFkOThhNjBmY2NmMDZlMDE4OTE4Njg2M1xuICAgICBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9hYW50cm9uLzk3YjU4NTIwZDViYjQ4NThjY2FjNmY1NDcwMGEyNGQ3XG5cbiAgIFRoZSBzaWduYXR1cmVzIGFyZSB1bnVzdWFsOiBiaWcgY29tbWVudHMgYXJlIGFic2VudC4gVGhleSBhcmUgbW92ZWQgaW50byB0aGVcbiAgIG1vZHVsZXMsIHNvIHRoYXQgdGhleSBhcmUgaGlkZGVuIGJ5IGNvZGUgZm9sZGluZyB3aGVuIHlvdSAodGhlIHJlYWRlciEpIGFyZVxuICAgbm90IGludGVyZXN0ZWQgaW4gdGhvc2UgbW9kdWxlcy5cblxuXG4gICAqIERvY3VtZW50YXRpb25cblxuICAgVGhlIGRvY3VtZW50YXRpb24gYmVnaW5zIHdpdGggYW4gb3ZlcnZpZXcgb2YgbWFqb3IgY29uY2VwdHMgYW5kIGNvbXBvbmVudHMuXG4gICBUaGlzIG92ZXJ2aWV3IHB1dHMgZXZlcnl0aGluZyBpbnRvIGNvbnRleHQuIFlvdSBkb24ndCBoYXZlIHRvIHJlYWQgdGhlIHdob2xlXG4gICB0aGluZy4gVGhlIG92ZXJ2aWV3IGJlZ2lucyB3aXRoIGJhc2ljIGNvbmNlcHRzLCBtb3ZlcyBvbiB0byBhZHZhbmNlZCBvbmVzLFxuICAgYW5kIHRoZW4gZ2V0cyBpbnRvIHRoZSB0cnVseSBlc290ZXJpYy4gWW91IGNhbiByZWFkIGFib3V0IGVhY2ggY29uY2VwdCBvbiBhblxuICAgYXMtbmVlZGVkIGJhc2lzLiBIb3dldmVyLCBvbmNlIHlvdSBoYXZlIHJlYWQgdGhlIHdob2xlIG92ZXJ2aWV3LCB5b3Ugd2lsbCBiZVxuICAgYXdhcmUgb2YgKmV2ZXJ5dGhpbmcqIHRoYXQgaXMgbmVlZGVkIHRvIHVuZGVyc3RhbmQsIGFuZCB3b3JrIHdpdGgsIHRoZSBjb3JlXG4gICBvZiBMd3QuXG5cbiAgIExpdHRlcmVkIGluIHRoZSBjb2RlIGFyZSBhZGRpdGlvbmFsIGNvbW1lbnRzLCB0aGF0IGdvIGluLWRlcHRoIG9uIHZhcmlvdXNcbiAgIGxvY2FsIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIG9wcG9ydHVuaXRpZXMsIHJlZ3JldHMsIGFuZCB0aGUgbGlrZS5cblxuICAgVGhlIHNlY3Rpb25zIChtb2R1bGVzKSBvZiB0aGUgY29kZSBjb3JyZXNwb25kIGNsb3NlbHkgdG8gc2VjdGlvbnMgb2YgdGhlXG4gICBvdmVydmlldy5cblxuXG4gICAqIFdoaXRlc3BhY2VcblxuICAgVGhlIHRvdGFsIGxpbmUgY291bnQgb2YgdGhpcyBmaWxlIG1heSBzZWVtIGZyaWdodGVuaW5nLCBidXQgb25lIHRoaXJkIG9mIGl0XG4gICBpcyB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cywgYm90aCB0aGVyZSB0byBoZWxwIHlvdSByZWFkIHRoZSByZW1haW5pbmcgdHdvXG4gICB0aGlyZHMhXG5cbiAgIEFsc28sIHdpdGhpbiB0aG9zZSB0d28gdGhpcmRzLCB0aGVyZSBhcmUgbGFyZ2UgZ3JvdXBzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZVxuICAgcmVwZXRpdGl2ZSBhbmQgZm9ybXVsYWljLCBzbyB0aGVyZSBpcyBtdWNoIGxlc3MgY29uY2VwdHVhbGx5LXVuaXF1ZSBjb2RlIGluXG4gICBMd3QgdGhhbiB5b3UgbWlnaHQgdGhpbmsgYXQgZmlyc3QuXG5cblxuICAgKiBQbGVhc2UgZWRpdCB0aGUgY29kZSBhbmQgdGhlIGRvY3MhXG5cbiAgIFRoaXMgY29kZSBpcyBtZWFudCB0byBiZSByZWFkYWJsZSwgYW5kIHRvIGJlIGVkaXRlZC4gSWYgeW91IGFyZSByZWFkaW5nXG4gICBzb21ldGhpbmcsIGFuZCB0aGluayB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gZXhwcmVzcyBpdCwgcGxlYXNlIGdvIGFoZWFkIGFuZFxuICAgb3BlbiBhIHB1bGwgcmVxdWVzdCB0byB0aGUgTHd0IHJlcG9zaXRvcnkgYXRcblxuICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3RcblxuICAgRXZlbiBpZiB5b3VyIHB1bGwgcmVxdWVzdCBzb21laG93IGRvZXNuJ3QgZ2V0IG1lcmdlZCwgeW91IHdpbGwgaGF2ZSBlZHVjYXRlZFxuICAgdGhlIG1haW50YWluZXJzLCBub3QgdG8gbWVudGlvbiBvdGhlciBjb250cmlidXRvcnMsIGFuZCB1c2Vycy4gVGhpcyBpcyB0cnVlXG4gICBldmVuIGlmIHRoZSBjaGFuZ2UgaXMgdHJpdmlhbCAtLSBzb21ldGltZXMsIG1haW50YWluZXJzIGp1c3QgbmVlZCB0byBiZVxuICAgZWR1Y2F0ZWQgbXVsdGlwbGUgdGltZXMgYmVmb3JlIHRoZXkgc2VlIHRoZSB3aXNkb20gb2YgaXQgOi9cblxuICAgTGlrZXdpc2UsIGlmIHlvdSB3b3VsZCBsaWtlIHRvIG1ha2UgYSBjb2RlIGNvbnRyaWJ1dGlvbiB0byB0aGUgTHd0IGNvcmUsIGl0XG4gICBpcyBxdWl0ZSB3ZWxjb21lLCBhbmQgd2UgaG9wZSB0aGF0IHRoaXMgY29kZSBpcyByZWFkYWJsZSBlbm91Z2ggZm9yIHlvdSB0byBiZVxuICAgYWJsZSB0byBtYWtlIGl0IVxuXG5cbiAgIEVuam95ISAqKVxuXG5cblxuKCogT3ZlcnZpZXdcblxuICAgSW4gdGhpcyBmaWxlLCB0aGVyZSBpcyBhIFwibW9kZWxcIiBmdW5jdGlvbiAtLSBbTHd0LmJpbmRdIC0tIHdoaWNoIHB1bGxzXG4gICB0b2dldGhlciBtYW55ICh0aG91Z2ggbm90IGFsbCkgb2YgdGhlIGNvbmNlcHRzIGFuZCBoZWxwZXJzIGRpc2N1c3NlZCBpbiB0aGlzXG4gICBvdmVydmlldy4gVG8gZmluZCBpdCwgc2VhcmNoIGZvciBcImxldCBiaW5kLFwiIGFuZCB5b3UgY2FuIGV4YW1pbmUgaXQgd2hpbGVcbiAgIHJlYWRpbmcgdGhlIG92ZXJ2aWV3LiBUaGUgYXV0aG9ycyBvZiB0aGlzIGZpbGUgaW50ZW5kIHRvIHB1dCBleHRyYSBlZmZvcnRcbiAgIGludG8gd3JpdGluZyBuaWNlIGNvbW1lbnRzIGluc2lkZSBbTHd0LmJpbmRdIDopXG5cblxuICAgMC4gTWFpbiBtZWNoYW5pc20gYW5kIHR3byBhc3BlY3RzXG5cbiAgIFRoZSBMd3QgaW50ZXJmYWNlIChbbHd0Lm1saV0pIHByb3ZpZGVzIG9uZSBtYWluIG1lY2hhbmlzbSwgcHJvbWlzZXMsIGFuZCB0d29cbiAgIFwiYXNwZWN0cyxcIiB3aGljaCBhcmUgKm5vdCogbmVjZXNzYXJ5IHRvIHVuZGVyc3RhbmQgdGhlIG1haW4gbWVjaGFuaXNtXG4gICBwcm9taXNlcywgYnV0IHRoZXkgYXJlIHN0aWxsIHRoZXJlOlxuXG4gICAtIHByb21pc2UgY2FuY2VsbGF0aW9uXG4gICAtIHNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZVxuXG4gICBJZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGNhbmNlbGxhdGlvbiBvciBzdG9yYWdlLCB5b3UgY2FuIGlnbm9yZSB0aGVzZVxuICAgdHdvIGNvbXBsaWNhdGlvbnMsIGFuZCBzdGlsbCBnZXQgYSBwcmV0dHkgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb2RlLiBUb1xuICAgaGVscCwgYWxsIGlkZW50aWZpZXJzIHJlbGF0ZWQgdG8gY2FuY2VsbGF0aW9uIGNvbnRhaW4gdGhlIHN0cmluZyBcImNhbmNlbCxcIlxuICAgYW5kIGFsbCBpZGVudGlmaWVycyByZWxhdGVkIHRvIHN0b3JhZ2UgY29udGFpbiBcInN0b3JhZ2UuXCJcblxuXG4gICAxLiBQcm9taXNlc1xuXG4gICBBIHByb21pc2UgaXMgYSBjZWxsIHRoYXQgY2FuIGJlIGluIG9uZSBvZiB0d28gc3RhdGVzOiBcInJlc29sdmVkXCIgb3JcbiAgIFwicGVuZGluZy5cIlxuXG4gICAtIFJlc29sdmVkIHByb21pc2VzXG5cbiAgICAgQSByZXNvbHZlZCBwcm9taXNlIGlzIGVpdGhlciBcImZ1bGZpbGxlZFwiIHdpdGggYSB2YWx1ZSwgb3IgXCJyZWplY3RlZFwiIHdpdGhcbiAgICAgYW4gZXhjZXB0aW9uLiBUaGUgc3RhdGUgb2YgYSByZXNvbHZlZCBwcm9taXNlIHdpbGwgbmV2ZXIgY2hhbmdlIGFnYWluOiBhXG4gICAgIHJlc29sdmVkIHByb21pc2UgaXMgaW1tdXRhYmxlLiBBIHJlc29sdmVkIHByb21pc2UgaXMgYmFzaWNhbGx5IGVxdWl2YWxlbnRcbiAgICAgdG8gYW4gWygnYSwgZXhuKSBTdGRsaWIucmVzdWx0XS4gUmVzb2x2ZWQgcHJvbWlzZXMgYXJlIHByb2R1Y2VkIGluIHR3b1xuICAgICB3YXlzOlxuXG4gICAgIC0gW0x3dC5yZXR1cm5dLCBbTHd0LmZhaWxdLCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIHByb2R1Y2UgXCJ0cml2aWFsXCJcbiAgICAgICBwcm9taXNlcyB0aGF0IGFyZSByZXNvbHZlZCBmcm9tIHRoZSBzdGFydC5cbiAgICAgLSBUaGUgb3RoZXIgd2F5IGlzIHRvIHJlc29sdmUgYSBwcm9taXNlIHRoYXQgc3RhcnRlZCBvdXQgcGVuZGluZy5cblxuICAgICBOb3RlIHRoYXQgcmVqZWN0ZWQgcHJvbWlzZXMgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggdW5oYW5kbGVkIGV4Y2VwdGlvbnMuXG5cbiAgIC0gUGVuZGluZyBwcm9taXNlc1xuXG4gICAgIC4uLmFyZSB0aG9zZSB0aGF0IG1heSBiZWNvbWUgcmVzb2x2ZWQgaW4gdGhlIGZ1dHVyZS4gRWFjaCBwZW5kaW5nIHByb21pc2VcbiAgICAgY2FycmllcyBhIGxpc3Qgb2YgY2FsbGJhY2tzLiBUaGVzZSBjYWxsYmFja3MgYXJlIGFkZGVkIGJ5IGZ1bmN0aW9ucyBsaWtlXG4gICAgIFtMd3QuYmluZF0sIGFuZCBjYWxsZWQgYnkgTHd0IGlmL3doZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuIFRoZXNlXG4gICAgIGNhbGxiYWNrcyB0eXBpY2FsbHkgZW5kIHVwIHJlc29sdmluZyBhZGRpdGlvbmFsIHByb21pc2VzOyBzZWUgc2VjdGlvblxuICAgICBcIlJlc29sdXRpb24gbG9vcFwiIGJlbG93LlxuXG4gICAgIFBlbmRpbmcgcHJvbWlzZXMgYXJlIHByb2R1Y2VkIGluIHRocmVlIHdheXMsIGFjY29yZGluZyB0byBob3cgdGhleSBjYW4gYmVcbiAgICAgcmVzb2x2ZWQ6XG5cbiAgICAgLSBJbml0aWFsIHByb21pc2VzXG5cbiAgICAgICAuLi5hcmUgY3JlYXRlZCBieSBbTHd0LndhaXRdIGFuZCBbTHd0LnRhc2tdLiBUaGUgdXNlciBvZiBMd3QgcmVzb2x2ZXNcbiAgICAgICB0aGVzZSBwcm9taXNlcyBtYW51YWxseSwgdGhyb3VnaCB0aGUgcmVzb2x2ZXJzIHJldHVybmVkIGJ5IHRob3NlXG4gICAgICAgZnVuY3Rpb25zLlxuXG4gICAgIC0gU2VxdWVudGlhbCBjb21wb3NpdGlvblxuXG4gICAgICAgRm9yIGV4YW1wbGUsIFtMd3QuYmluZF0uIFRoZXNlIHByb21pc2VzIG9ubHkgYXJlIG9ubHkgcmVzb2x2ZWQgd2hlbiB0aGVcbiAgICAgICBwcmVjZWRpbmcgc2VxdWVuY2Ugb2YgcHJvbWlzZXMgcmVzb2x2ZXMuIFRoZSB1c2VyIGNhbm5vdCByZXNvbHZlIHRoZXNlXG4gICAgICAgcHJvbWlzZXMgZGlyZWN0bHkgKGJ1dCBzZWUgdGhlIHNlY3Rpb24gb24gY2FuY2VsbGF0aW9uIGJlbG93KS5cblxuICAgICAtIENvbmN1cnJlbnQgY29tcG9zaXRpb25cblxuICAgICAgIEZvciBleGFtcGxlLCBbTHd0LmpvaW5dIG9yIFtMd3QuY2hvb3NlXS4gVGhlc2UgcHJvbWlzZXMgYXJlIG9ubHkgcmVzb2x2ZWRcbiAgICAgICB3aGVuIGFsbCBvciBvbmUgb2YgYSBzZXQgb2YgXCJwcmVjZWRpbmdcIiBwcm9taXNlcyByZXNvbHZlLiBUaGUgdXNlciBjYW5ub3RcbiAgICAgICByZXNvbHZlIHRoZXNlIHByb21pc2VzIGRpcmVjdGx5IChidXQgc2VlIHRoZSBzZWN0aW9uIG9uIGNhbmNlbGxhdGlvblxuICAgICAgIGJlbG93KS5cblxuXG4gICAyLiBSZXNvbHZlcnNcblxuICAgUmVzb2x2ZXJzIGFyZSBnaXZlbiB0byB0aGUgdXNlciBieSBbTHd0LndhaXRdIGFuZCBbTHd0LnRhc2tdLCBhbmQgY2FuIGJlIHVzZWRcbiAgIGJ5IHRoZSB1c2VyIHRvIHJlc29sdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvbWlzZXMuIE5vdGUgdGhhdCB0aGlzIG1lYW5zIHRoZVxuICAgdXNlciBvbmx5IGV2ZXIgZ2V0cyByZXNvbHZlcnMgZm9yIGluaXRpYWwgcHJvbWlzZXMuXG5cbiAgIEludGVybmFsbHksIHJlc29sdmVycyBhcmUgdGhlIGV4YWN0IHNhbWUgb2JqZWN0cyBhcyB0aGUgcHJvbWlzZXMgdGhleVxuICAgcmVzb2x2ZSwgZXZlbiB0aG91Z2ggdGhlIHJlc29sdmVyIGlzIGV4cG9zZWQgYXMgYSByZWZlcmVuY2Ugb2YgYSBkaWZmZXJlbnRcbiAgIHR5cGUgYnkgW2x3dC5tbGldLiBGb3IgZGV0YWlscyBvbiB3aHksIHNlZSBzZWN0aW9uIFwiVHlwZSBzeXN0ZW0gYWJ1c2VcIiBiZWxvdy5cblxuXG4gICAzLiBDYWxsYmFja3NcblxuICAgLi4uYXJlIGF0dGFjaGVkIGJ5IEx3dCB0byBwZW5kaW5nIHByb21pc2VzLCBhbmQgYXJlIHJ1biBieSBMd3QgaWYvd2hlbiB0aG9zZVxuICAgcHJvbWlzZXMgYXJlIHJlc29sdmVkLiBUaGVzZSBjYWxsYmFja3MgYXJlIG5vdCBkaXJlY3RseSBleHBvc2VkIHRocm91Z2hcbiAgIFtsd3QubWxpXSAtLSB0aGV5IGFyZSBhIGxvdy1sZXZlbCBtZWNoYW5pc20uIEZvciBleGFtcGxlLCB0byBpbXBsZW1lbnRcbiAgIFtMd3QuYmluZCBwIGZdLCBMd3QgYXR0YWNoZXMgYSBjYWxsYmFjayB0byBbcF0gdGhhdCBkb2VzIHNvbWUgaW50ZXJuYWwgTHd0XG4gICBib29rLWtlZXBpbmcsIGFuZCB0aGVuIGNhbGxzIFtmXSBpZiBbcF0gaXMgZnVsZmlsbGVkLCBhbmQgZG9lcyBzb21ldGhpbmcgZWxzZVxuICAgaWYgW3BdIGlzIHJlamVjdGVkLlxuXG4gICBDYWxsYmFja3MgY29tZSBpbiB0d28gZmxhdm9yczogcmVndWxhciBjYWxsYmFja3MgYW5kIGNhbmNlbCBjYWxsYmFja3MuIFRoZVxuICAgb25seSBtYXRlcmlhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW0gYXJlIHRoYXQ6XG5cbiAgIC0gcmVndWxhciBjYWxsYmFja3MgYXJlIGFsd2F5cyBjYWxsZWQgd2hlbiBhIHByb21pc2UgaXMgcmVzb2x2ZWQsIGJ1dCBjYW5jZWxcbiAgICAgY2FsbGJhY2tzIGFyZSBjYWxsZWQsIGluIGFkZGl0aW9uLCBvbmx5IGlmIHRoZSBwcm9taXNlIGlzIGNhbmNlbGVkLCBhbmRcbiAgIC0gYWxsIGNhbmNlbCBjYWxsYmFja3Mgb2YgYSBwcm9taXNlIGFyZSBjYWxsZWQgYmVmb3JlIGFueSByZWd1bGFyIGNhbGxiYWNrXG4gICAgIGlzIGNhbGxlZC5cblxuICAgQ2FuY2VsbGF0aW9uIGlzIGEgc3BlY2lhbCBjYXNlIG9mIHJlc29sdXRpb24sIGluIHBhcnRpY3VsYXIsIGEgc3BlY2lhbCBjYXNlXG4gICBvZiByZWplY3Rpb24sIGJ1dCBzZWUgdGhlIHNlY3Rpb24gb24gY2FuY2VsbGF0aW9uIGxhdGVyIGJlbG93LlxuXG5cbiAgIDQuIFJlc29sdXRpb24gbG9vcFxuXG4gICBSZXNvbHZpbmcgYSBwZW5kaW5nIHByb21pc2UgdHJpZ2dlcnMgaXRzIGNhbGxiYWNrcywgYW5kIHRob3NlIG1pZ2h0IHJlc29sdmVcbiAgIG1vcmUgcGVuZGluZyBwcm9taXNlcywgdHJpZ2dlcmluZyBtb3JlIGNhbGxiYWNrcywgZXRjLiBUaGlzIGJlaGF2aW9yIGlzIHRoZVxuICAgKnJlc29sdXRpb24gbG9vcCouIEx3dCBoYXMgc29tZSBtYWNoaW5lcnkgdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3cgYW5kIG90aGVyXG4gICB1bmZvcnR1bmF0ZSBzaXR1YXRpb25zIGR1cmluZyB0aGlzIGxvb3AuXG5cbiAgIFRoaXMgY2hhaW5pbmcgb2YgcHJvbWlzZSByZXNvbHV0aW9ucyB0aHJvdWdoIGNhbGxiYWNrcyBjYW4gYmUgc2VlbiBhcyBhIGtpbmRcbiAgIG9mIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaCwgaW4gd2hpY2ggdGhlIG5vZGVzIGFyZSBwZW5kaW5nIHByb21pc2VzLCBhbmQgdGhlXG4gICBlZGdlcyBhcmUgY2FsbGJhY2tzLiBEdXJpbmcgdGhlIHJlc29sdXRpb24gbG9vcCwgTHd0IHN0YXJ0cyBhdCBzb21lIGluaXRpYWxcbiAgIHByb21pc2UgdGhhdCBpcyBnZXR0aW5nIHJlc29sdmVkIGJ5IHRoZSB1c2VyLCBhbmQgcmVjdXJzaXZlbHkgcmVzb2x2ZXMgYWxsXG4gICBkZXBlbmRlbnQgcHJvbWlzZXMuIFRoZSBncmFwaCBpcyBtb2RpZmllZDogcmVzb2x2ZWQgcHJvbWlzZXMgYXJlIG5vIGxvbmdlclxuICAgcGVuZGluZywgc28gdGhleSBhcmUgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGdyYXBoLlxuXG4gICBTb21lIG9mIHRoZXNlIGRlcGVuZGVuY2llcyBhcmUgZXhwbGljaXQgdG8gTHd0LCBlLmcuIHRoZSBjYWxsYmFja3MgcmVnaXN0ZXJlZFxuICAgYnkgW0x3dC5iaW5kXS4gT3RoZXJzIGFyZSBub3QgdmlzaWJsZSB0byBMd3QsIGJlY2F1c2UgdGhlIHVzZXIgY2FuIGFsd2F5c1xuICAgcmVnaXN0ZXIgYSBjYWxsYmFjayB1c2luZyBhIGZ1bmN0aW9uIGxpa2UgW0x3dC5vbl9zdWNjZXNzXSwgYW5kIHVzZSB0aGF0XG4gICBjYWxsYmFjayB0byByZXNvbHZlIGFub3RoZXIgaW5pdGlhbCBwcm9taXNlLiBBbGwgdGhlIGV4cGxpY2l0IGRlcGVuZGVuY2llc1xuICAgYXJlIGNyZWF0ZWQgYnkgTHd0J3Mgb3duIHNlcXVlbnRpYWwgYW5kIGNvbmN1cnJlbnQgY29tcG9zaXRpb24gZnVuY3Rpb25zXG4gICAoc28sIFtMd3QuYmluZF0sIFtMd3Quam9pbl0sIGV0YykuIFdoZXRoZXIgZGVwZW5kZW5jaWVzIGFyZSBleHBsaWNpdCBvciBub3RcbiAgIGlzIHJlbGV2YW50IG9ubHkgdG8gY2FuY2VsbGF0aW9uLlxuXG5cbiAgIDUuIENhbmNlbGxhdGlvblxuXG4gICBBcyBkZXNjcmliZWQgYWJvdmUsIG9yZGluYXJ5IHByb21pc2UgcmVzb2x1dGlvbiBwcm9jZWVkcyBmcm9tIGFuIGluaXRpYWxcbiAgIHByb21pc2UsIGZvcndhcmQgYWxvbmcgY2FsbGJhY2tzIHRocm91Z2ggdGhlIGRlcGVuZGVuY3kgZ3JhcGguIFNpbmNlIGl0XG4gICBzdGFydHMgZnJvbSBhbiBpbml0aWFsIHByb21pc2UsIGl0IGNhbiBvbmx5IGJlIHRyaWdnZXJlZCB1c2luZyBhIHJlc29sdmVyLlxuXG4gICBDYW5jZWxsYXRpb24gaXMgYSBzb3J0IG9mIGR1YWwgdG8gb3JkaW5hcnkgcmVzb2x1dGlvbi4gSW5zdGVhZCBvZiBzdGFydGluZyBhdFxuICAgYW4gaW5pdGlhbCBwcm9taXNlL3Jlc29sdmVyLCBjYW5jZWxsYXRpb24gc3RhcnRzIGF0ICphbnkqIHByb21pc2UuIEl0IHRoZW5cbiAgIGdvZXMgKmJhY2t3YXJkcyogdGhyb3VnaCB0aGUgZXhwbGljaXQgZGVwZW5kZW5jeSBncmFwaCwgbG9va2luZyBmb3JcbiAgIGNhbmNlbGFibGUgaW5pdGlhbCBwcm9taXNlcyB0byBjYW5jZWwgLS0gdGhvc2UgdGhhdCB3ZXJlIGNyZWF0ZWQgYnlcbiAgIFtMd3QudGFza10uIEFmdGVyIGZpbmRpbmcgdGhlbSwgY2FuY2VsbGF0aW9uIHJlc29sdmVzIHRoZW0gbm9ybWFsbHkgd2l0aFxuICAgW1JlamVjdGVkIEx3dC5DYW5jZWxlZF0sIGNhdXNpbmcgYW4gb3JkaW5hcnkgcHJvbWlzZSByZXNvbHV0aW9uIHByb2Nlc3MuXG5cbiAgIFRvIHN1bW1hcml6ZSwgY2FuY2VsbGF0aW9uIGlzIGEgd2F5IHRvIHRyaWdnZXIgYW4gKm9yZGluYXJ5KiByZXNvbHV0aW9uIG9mXG4gICBwcm9taXNlcyBjcmVhdGVkIHdpdGggW0x3dC50YXNrXSwgYnkgZmlyc3Qgc2VhcmNoaW5nIGZvciB0aGVtIGluIHRoZSBwcm9taXNlXG4gICBkZXBlbmRlbmN5IGdyYXBoICh3aGljaCBpcyBhc3NlbWJsZWQgYnkgW0x3dC5iaW5kXSwgW0x3dC5qb2luXSwgZXRjKS5cblxuICAgVGhpcyBiYWNrd2FyZHMgc2VhcmNoIGlzIHRyaWdnZXJlZCBvbmx5IGJ5IFtMd3QuY2FuY2VsXS4gSXQgaXMgYWxzbyBwb3NzaWJsZVxuICAgZm9yIHRoZSB1c2VyIHRvIGNhbmNlbCBhIHByb21pc2UgZGlyZWN0bHkgYnkgcmVqZWN0aW5nIGl0IHdpdGhcbiAgIFtMd3QuQ2FuY2VsZWRdLCBidXQgaW4gYWxsIGNhc2VzIHdoZXJlIHRoZSB1c2VyIGNhbiBkbyBzbywgdGhlIHNlYXJjaCB3b3VsZFxuICAgYmUgcmVkdW5kYW50IGFueXdheSAtLSB0aGUgdXNlciBoYXMgb25seSB0d28gd2F5cyBvZiBkaXJlY3RseSByZWplY3RpbmcgYVxuICAgcHJvbWlzZSB3aXRoIFtMd3QuQ2FuY2VsZWRdIChvciBhbnkgZXhjZXB0aW9uLCBmb3IgdGhhdCBtYXR0ZXIpOlxuXG4gICAtIFRoZSB1c2VyIGNhbiBjcmVhdGUgYW4gaW5pdGlhbCBwcm9taXNlLCB0aGVuIHJlamVjdCBpdCB0aHJvdWdoIGl0c1xuICAgICByZXNvbHZlci4gVGhlIHNlYXJjaCBpcyByZWR1bmRhbnQgYmVjYXVzZSBpdCB3b3VsZCBmaW5kIG9ubHkgdGhlIHNhbWVcbiAgICAgaW5pdGlhbCBwcm9taXNlIHRvIGNhbmNlbC5cbiAgIC0gVGhlIHVzZXIgY2FuIGNyZWF0ZSBhIHRyaXZpYWwgcHJvbWlzZSBieSBjYWxsaW5nIFtMd3QuZmFpbCBMd3QuQ2FuY2VsZWRdLlxuICAgICBUaGUgc2VhcmNoIGlzIGFnYWluIHJlZHVuZGFudDsgaW4gdGhpcyBjYXNlIGl0IHdvdWxkIGZpbmQgbm90aGluZyB0b1xuICAgICBjYW5jZWwuXG5cbiAgIE5vdGUgdGhhdCB0aGVyZSBpcyBhIHF1aXJrOiBvbmx5IHByb21pc2VzIGNyZWF0ZWQgYnkgW0x3dC50YXNrXSBhcmVcbiAgIHN1c2NlcHRpYmxlIHRvIGJlaW5nIGNhbmNlbGVkIGJ5IFtMd3QuY2FuY2VsXSwgYnV0IHRoZSB1c2VyIGNhbiBtYW51YWxseVxuICAgY2FuY2VsIGluaXRpYWwgcHJvbWlzZXMgY3JlYXRlZCBieSBib3RoIFtMd3QudGFza10gYW5kIFtMd3Qud2FpdF0uXG5cbiAgIER1ZSB0byBbTHd0LmNhbmNlbF0sIHByb21pc2UgY2FuY2VsbGF0aW9uLCBhbmQgdGhlcmVmb3JlIHJlc29sdXRpb24sIGNhbiBiZVxuICAgaW5pdGlhdGVkIGJ5IHRoZSB1c2VyIHdpdGhvdXQgYWNjZXNzIHRvIGEgcmVzb2x2ZXIuIFRoaXMgaXMgaW1wb3J0YW50IGZvclxuICAgcmVhc29uaW5nIGFib3V0IHN0YXRlIGNoYW5nZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEx3dCwgYW5kIGlzIHJlZmVyZW5jZWRcbiAgIGluIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlsIGNvbW1lbnRzLlxuXG5cbiAgIDYuIE5vIEkvT1xuXG4gICBUaGUgTHd0IGNvcmUgZGVsaWJlcmF0ZWx5IGRvZXNuJ3QgZG8gSS9PLiBUaGUgcmVzb2x1dGlvbiBsb29wIHN0b3BzIHJ1bm5pbmdcbiAgIG9uY2Ugbm8gcHJvbWlzZXMgY2FuIGJlIHJlc29sdmVkIGltbWVkaWF0ZWx5LiBJdCBoYXMgdG8gYmUgcmVzdGFydGVkIGxhdGVyXG4gICBieSBzb21lIHN1cnJvdW5kaW5nIEkvTyBsb29wLiBUaGlzIEkvTyBsb29wIHR5cGljYWxseSBrZWVwcyB0cmFjayBvZiBwZW5kaW5nXG4gICBwcm9taXNlcyB0aGF0IHJlcHJlc2VudCBibG9ja2VkIG9yIGluLXByb2dyZXNzIEkvTzsgb3RoZXIgcGVuZGluZyBwcm9taXNlc1xuICAgdGhhdCBpbmRpcmVjdGx5IGRlcGVuZCBvbiBJL08gYXJlIG5vdCBleHBsaWNpdGx5IHRyYWNrZWQuIFRoZXkgYXJlIHJldGFpbmVkXG4gICBpbiBtZW1vcnkgYnkgcmVmZXJlbmNlcyBjYXB0dXJlZCBpbnNpZGUgY2FsbGJhY2tzLlxuXG4gICBPbiBVbml4IGFuZCBXaW5kb3dzLCBhIHNlcGFyYXRlIHRvcC1sZXZlbCBsb29wLCB0eXBpY2FsbHkgW0x3dF9tYWluLnJ1bl0sIGlzXG4gICBuZWNlc3NhcnkgdG8gcmVwZWF0ZWRseSBjYWxsIFtzZWxlY3RdLCBbZXBvbGxdLCBvciBba2V2ZW50XSwgYW5kIHJlc29sdmVcbiAgIGJsb2NrZWQgSS9PIHByb21pc2VzLlxuXG4gICBJbiBKYXZhU2NyaXB0LCByZWZlcmVuY2VzIHRvIHByb21pc2VzIGFyZSByZXRhaW5lZCBieSBKYXZhU2NyaXB0IGNvZGUsIHdoaWNoXG4gICBpcywgaW4gdHVybiwgdHJpZ2dlcmVkIGJ5IHRoZSBKUyBlbmdpbmUuIEluIG90aGVyIHdvcmRzLCB0aGUgdG9wLWxldmVsIGxvb3BcbiAgIGlzIGJ1cmllZCBpbnNpZGUgdGhlIEpTIGVuZ2luZS5cblxuICAgVGhpcyBzZXBhcmF0aW9uIG9mIHRoZSBMd3QgY29yZSBmcm9tIHRoZSB0b3AtbGV2ZWwgSS9PIGxvb3Aga2VlcHMgdGhlIGNvcmVcbiAgIHBvcnRhYmxlLlxuXG5cbiAgIDcuIFByb21pc2UgXCJwcm94eWluZ1wiXG5cbiAgIEluIFtMd3QuYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRdLCB0aGUgb3V0ZXIgWydiIHRdIGlzIGNyZWF0ZWQgYnlcbiAgIFtiaW5kXSBmaXJzdCwgYW5kIHJldHVybmVkIHRvIHRoZSB1c2VyLiBUaGUgaW5uZXIgWydiIHRdIGlzIGNyZWF0ZWQgYnkgdGhlXG4gICB1c2VyIGxhdGVyLCBhbmQgdGhlbiByZXR1cm5lZCB0byBbYmluZF0uIEF0IHRoYXQgcG9pbnQsIFtiaW5kXSBuZWVkcyB0byBtYWtlXG4gICB0aGUgaW5uZXIgYW5kIG91dGVyIFsnYiB0XXMgYmVoYXZlIGlkZW50aWNhbGx5LlxuXG4gICBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBtYWtpbmcgb25lIG9mIHRoZSBwcm9taXNlcyBwb2ludCB0byB0aGUgb3RoZXIuIFRoZVxuICAgZmlyc3Qgb2YgdGhlIHByb21pc2VzIHRodXMgYmVjb21lcyBhIFwicHJveHksXCIgYW5kIHRoZSBvdGhlciBpcyBpdHNcbiAgIFwidW5kZXJseWluZ1wiIHByb21pc2UuXG5cbiAgIEFmdGVyIHRoYXQsIGFsbCBvcGVyYXRpb25zIHRoYXQgd291bGQgYmUgcGVyZm9ybWVkIGJ5IEx3dCBvbiB0aGUgcHJveHkgYXJlXG4gICBpbnN0ZWFkIHBlcmZvcm1lZCBvbiB0aGUgdW5kZXJseWluZyBwcm9taXNlLiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIG51bWVyb3VzXG4gICBjYWxscyB0byB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gW3VuZGVybHlpbmddIGluIHRoaXMgZmlsZS5cblxuICAgQmVjYXVzZSBvZiB0aGUgcGVydmFzaXZlIHVzZSBvZiBbdW5kZXJseWluZ10sIHByb3hpZXMgY2FuIGJlIG1vcmUgb3IgbGVzc1xuICAgaWdub3JlZCBvbiBhIGZpcnN0IHJlYWRpbmcgdGhlIGNvZGUuIEhvd2V2ZXIsIGJlY29taW5nIGEgcHJveHkgaXMgYSBraW5kIG9mXG4gICBzdGF0ZSBjaGFuZ2UsIGFuZCBhbnkgcHJvbWlzZSB0aGF0IGlzIHJldHVybmVkIGJ5IGEgY2FsbGJhY2sgdG8gW2JpbmRdLCBvciB0b1xuICAgYSBzaW1pbGFyIEx3dCBmdW5jdGlvbiwgbWlnaHQgYmVjb21lIGEgcHJveHkuIFRoYXQgbWVhbnM6IGp1c3QgYWJvdXQgYW55XG4gICBwcm9taXNlIHRoYXQgaXMgaGFuZGVkIHRvIHRoZSB1c2VyLCBtaWdodCBiZWNvbWUgYSBwcm94eSBwcm9taXNlIGJ5IHRoZSBuZXh0XG4gICB0aW1lIEx3dCBzZWVzIGl0LiBUaGlzIGlzIGltcG9ydGFudCBmb3IgcmVhc29uaW5nIGFib3V0IHBvc3NpYmxlIHN0YXRlXG4gICBjaGFuZ2VzIGluIGltcGxlbWVudGF0aW9uIG9mIEx3dCwgYW5kIGlzIHJlZmVyZW5jZWQgaW4gc29tZSBpbXBsZW1lbnRhdGlvblxuICAgZGV0YWlsIGNvbW1lbnRzLlxuXG5cbiAgIDguIFNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZVxuXG4gICBMd3QgaGFzIGEgZ2xvYmFsIGtleS12YWx1ZSBtYXAuIFRoZSBtYXAgY2FuIGJlIHByZXNlcnZlZCBhY3Jvc3Mgc2VxdWVudGlhbFxuICAgY29tcG9zaXRpb24gZnVuY3Rpb25zLCBzbyB0aGF0IGl0IGhhcyB0aGUgc2FtZSBzdGF0ZSBpbiB0aGUgdXNlcidzIGNhbGxiYWNrXG4gICBbZl0gYXMgaXQgZGlkIGF0IHRoZSB0aW1lIHRoZSB1c2VyIGNhbGxlZCBbTHd0LmJpbmQgcCBmXS5cblxuICAgVGhlIGRldGFpbHMgYXJlIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFuZCBkaXNjdXNzZWQgaW4gbW9kdWxlXG4gICBbU2VxdWVuY2VfYXNzb2NpYXRlZF9zdG9yYWdlXS4gVGhlIG1haW4gdGhpbmcgdG8gYmUgYXdhcmUgb2YgaXMgdGhlIG1hbnlcbiAgIHJlZmVyZW5jZXMgdG8gW2N1cnJlbnRfc3RvcmFnZV0gdGhyb3VnaG91dCBMd3QsIHdoaWNoIGFyZSBuZWVkZWQgdG8gcHJvcGVybHlcbiAgIHNhdmUgYW5kIHJlc3RvcmUgdGhlIG1hcHBpbmcuXG5cblxuICAgOS4gVHlwZSBzeXN0ZW0gYWJ1c2VcblxuICAgVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIHR5cGUgc3lzdGVtIHNvbWV3aGF0IGV4dGVuc2l2ZWx5LiBHZW50bGVcbiAgIGludHJvZHVjdGlvbnMgY2FuIGJlIGZvdW5kIGhlcmU6XG5cbiAgICAgaHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90LzE2MS83XG4gICAgIGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC8xNjEvMTZcblxuICAgQSBzaG9ydCBzdW1tYXJ5IGZvbGxvd3MuXG5cbiAgIFRoZSBwcm9taXNlIHN0YXRlIGlzLCBpbnRlcm5hbGx5LCBhIEdBRFQgd2hpY2ggZW5jb2RlcyB0aGUgc3RhdGUgaW4gaXRzIHR5cGVcbiAgIHBhcmFtZXRlcnMuIFRodXMsIGlmIHlvdSBkbyBbbGV0IHAgPSB1bmRlcmx5aW5nIHBdLCB0aGUgc2hhZG93aW5nIHJlZmVyZW5jZVxuICAgW3BdIGlzIHN0YXRpY2FsbHkga25vd24gKm5vdCogdG8gYmUgYSBwcm94eSwgYW5kIHRoZSBjb21waWxlciBrbm93cyB0aGF0IHRoZVxuICAgY29ycmVzcG9uZGluZyBtYXRjaCBjYXNlIFtQcm94eSBfXSBpcyBpbXBvc3NpYmxlLlxuXG4gICBUaGUgZXh0ZXJuYWwgcHJvbWlzZSB0eXBlLCBbJ2EgdF0sIGFuZCB0aGUgZXh0ZXJuYWwgcmVzb2x2ZXIgdHlwZSwgWydhIHVdLFxuICAgYXJlIG5vdCBHQURUcy4gRnVydGhlcm1vcmUsIHRoZXkgYXJlLCByZXNwZWN0aXZlbHksIGNvdmFyaWFudCBhbmRcbiAgIGNvbnRyYXZhcmlhbnQgaW4gWydhXSwgd2hpbGUgdGhlIGludGVybmFsIHByb21pc2UgdHlwZSBpcyBpbnZhcmlhbnQgaW4gWydhXS5cbiAgIEZvciB0aGVzZSByZWFzb25zLCB0aGVyZSBhcmUgbmFzdHkgY2FzdHMgYmV0d2VlbiBbJ2EgdF0sIFsnYSB1XSwgYW5kIHRoZVxuICAgaW50ZXJuYWwgcHJvbWlzZSB0eXBlLiBUaGUgaW1wbGVtZW50YXRpb24gaXMsIG9mIGNvdXJzZSwgd3JpdHRlbiBpbiB0ZXJtcyBvZlxuICAgdGhlIGludGVybmFsIHR5cGUuXG5cbiAgIENhc3RpbmcgZnJvbSBhbiBbJ2EgdF0gdG8gYW4gaW50ZXJuYWwgcHJvbWlzZSBwcm9kdWNlcyBhIHJlZmVyZW5jZSBmb3JcbiAgIHdoaWNoIHRoZSBzdGF0ZSBpcyBcInVua25vd25cIjogdGhpcyBpcyBzaW11bGF0ZWQgd2l0aCBhIGhlbHBlciBHQURULCB3aGljaFxuICAgZW5jb2RlcyBleGlzdGVudGlhbCB0eXBlcy4gVGhlcmUgYXJlIHNldmVyYWwgc2ltaWxhciBjYXN0cywgd2hpY2ggYXJlIHVzZWRcbiAgIHRvIGRvY3VtZW50IHBvc3NpYmxlIHN0YXRlIGNoYW5nZXMgYmV0d2VlbiB0aGUgdGltZSBhIHByb21pc2UgaXMgY3JlYXRlZCxcbiAgIGFuZCB0aGUgbGF0ZXIgdGltZSBpdCBpcyB1c2VkIGluIGEgY2FsbGJhY2suIFlvdSBjYW4gc2VlIHRoZXNlIGNhc3RzIGluXG4gICBhY3Rpb24gaW4gW0x3dC5iaW5kXS4gVGhlIGNhc3Qgc3ludGF4IGlzIHByZXR0eSBsaWdodCwgYW5kLCBiZXNpZGVzIGJlaW5nXG4gICBjb21tZW50ZWQgaW4gW2JpbmRdLCBhbGwgc3VjaCBjYXN0cyBhcmUgZG9jdW1lbnRlZCBpbiBtb2R1bGVzIFtQdWJsaWNfdHlwZXNdXG4gICBhbmQgW0Jhc2ljX2hlbHBlcnNdLlxuXG5cbiAgIElmIHlvdSd2ZSBtYWRlIGl0IHRoaXMgZmFyLCB5b3UgYXJlIGFuIEx3dCBleHBlcnQhIFJlam9pY2UhICopXG5cblxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG4oKiBTb21lIHNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZSB0eXBlc1xuXG4gICBTZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UgaXMgZGVmaW5lZCBhbmQgZG9jdW1lbnRlZCBsYXRlciwgaW4gbW9kdWxlXG4gICBbU2VxdWVuY2VfYXNzb2NpYXRlZF9zdG9yYWdlXS4gSG93ZXZlciwgdGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgbWVudGlvbmVkIGluXG4gICB0aGUgZGVmaW5pdGlvbiBvZiBbcHJvbWlzZV0sIHNvIHRoZXkgbXVzdCBiZSBkZWZpbmVkIGhlcmUgZmlyc3QuICopXG5tb2R1bGUgU3RvcmFnZV9tYXAgPVxuICBNYXAuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludFxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgZW5kKVxudHlwZSBzdG9yYWdlID0gKHVuaXQgLT4gdW5pdCkgU3RvcmFnZV9tYXAudFxuXG5cblxubW9kdWxlIE1haW5faW50ZXJuYWxfdHlwZXMgPVxuc3RydWN0XG4gICgqIFBoYW50b20gdHlwZXMgZm9yIHVzZSB3aXRoIHR5cGVzIFtwcm9taXNlXSBhbmQgW3N0YXRlXS4gVGhlc2UgYXJlIG5ldmVyXG4gICAgIGNvbnN0cnVjdGVkOyB0aGUgcHVycG9zZSBvZiB0aGUgY29uc3RydWN0b3JzIGlzIHRvIHByb3ZlIHRvIHRoZSB0eXBlXG4gICAgIGNoZWNrZXIgdGhhdCB0aGVzZSB0eXBlcyBhcmUgZGlzdGluY3QgZnJvbSBlYWNoIG90aGVyLiBXYXJuaW5nIDM3LCBcInVudXNlZFxuICAgICBjb25zdHJ1Y3RvcixcIiB0aGVyZWZvcmUgaGFzIHRvIGJlIHRlbXBvcmFyaWx5IHN1cHByZXNzZWQuICopXG5cbiAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzdcIl1cblxuICB0eXBlIHVuZGVybHlpbmcgPSBwcml2YXRlIFVuZGVybHlpbmdfYW5kX3RoaXNfY29uc3RydWN0b3JfaXNfbm90X3VzZWRcbiAgdHlwZSBwcm94eSA9IHByaXZhdGUgUHJveHlfYW5kX3RoaXNfY29uc3RydWN0b3JfaXNfbm90X3VzZWRcblxuICB0eXBlIHJlc29sdmVkID0gcHJpdmF0ZSBSZXNvbHZlZF9hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuICB0eXBlIHBlbmRpbmcgPSBwcml2YXRlIFBlbmRpbmdfYW5kX3RoaXNfY29uc3RydWN0b3JfaXNfbm90X3VzZWRcblxuICBbQEBAb2NhbWwud2FybmluZyBcIiszN1wiXVxuXG5cblxuICAoKiBQcm9taXNlcyBwcm9wZXIuICopXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgcHJvbWlzZSA9IHtcbiAgICBtdXRhYmxlIHN0YXRlIDogKCdhLCAndSwgJ2MpIHN0YXRlO1xuICB9XG5cbiAgYW5kIChfLCBfLCBfKSBzdGF0ZSA9XG4gICAgfCBGdWxmaWxsZWQgOiAnYSAgICAgICAgICAgICAgICAgIC0+ICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlXG4gICAgfCBSZWplY3RlZCAgOiBleG4gICAgICAgICAgICAgICAgIC0+ICggXywgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlXG4gICAgfCBQZW5kaW5nICAgOiAnYSBjYWxsYmFja3MgICAgICAgIC0+ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgIHN0YXRlXG4gICAgfCBQcm94eSAgICAgOiAoJ2EsIF8sICdjKSBwcm9taXNlIC0+ICgnYSwgcHJveHksICAgICAgJ2MpICAgICAgIHN0YXRlXG5cbiAgKCogTm90ZTpcblxuICAgICBBIHByb21pc2Ugd2hvc2Ugc3RhdGUgaXMgW1Byb3h5IF9dIGlzIGEgXCJwcm94eVwiIHByb21pc2UuIEEgcHJvbWlzZSB3aG9zZVxuICAgICBzdGF0ZSBpcyAqbm90KiBbUHJveHkgX10gaXMgYW4gXCJ1bmRlcmx5aW5nXCIgcHJvbWlzZS5cblxuICAgICBUaGUgXCJ1bmRlcmx5aW5nIHByb21pc2Ugb2YgW3BdXCIgaXM6XG5cbiAgICAgLSBbcF0sIGlmIFtwXSBpcyBpdHNlbGYgdW5kZXJseWluZy5cbiAgICAgLSBPdGhlcndpc2UsIFtwXSBpcyBhIHByb3h5IGFuZCBoYXMgc3RhdGUgW1Byb3h5IHAnXS4gVGhlIHVuZGVybHlpbmdcbiAgICAgICBwcm9taXNlIG9mIFtwXSBpcyB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIFtwJ10uXG5cbiAgICAgSW4gb3RoZXIgd29yZHMsIHRvIGZpbmQgdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBvZiBhIHByb3h5LCBMd3QgZm9sbG93cyB0aGVcbiAgICAgW1Byb3h5IF9dIGxpbmtzIHRvIHRoZSBlbmQuICopXG5cbiAgKCogTm90ZTpcblxuICAgICBXaGVuIGEgcHJvbWlzZSBpcyByZXNvbHZlZCwgb3IgYmVjb21lcyBhIHByb3h5LCBpdHMgc3RhdGUgZmllbGQgaXNcbiAgICAgbXV0YXRlZC4gVGhpcyBpbnZhbGlkYXRlcyB0aGUgdHlwZSBpbnZhcmlhbnRzIG9uIHRoZSBwcm9taXNlLiBTZWUgaW50ZXJuYWxcbiAgICAgZnVuY3Rpb24gW3NldF9wcm9taXNlX3N0YXRlXSBmb3IgZGV0YWlscyBhYm91dCB0aGF0LlxuXG4gICAgIFdoZW4gYW4gTHd0IGZ1bmN0aW9uIGhhcyBhIHJlZmVyZW5jZSB0byBhIHByb21pc2UsIGFuZCBhbHNvIHJlZ2lzdGVycyBhXG4gICAgIGNhbGxiYWNrIHRoYXQgaGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIHByb21pc2UsIHRoZSBpbnZhcmlhbnRzIG9uIHRoZVxuICAgICByZWZlcmVuY2UgbWF5IGJlY29tZSBpbnZhbGlkIGJ5IHRoZSB0aW1lIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQuIEFsbCBzdWNoXG4gICAgIGNhbGxiYWNrcyBoYXZlIGNvbW1lbnRzIGV4cGxhaW5pbmcgd2hhdCB0aGUgdmFsaWQgaW52YXJpYW50cyBhcmUgYXQgdGhhdFxuICAgICBwb2ludCwgYW5kL29yIGNhc3RzIHRvICgxKSBnZXQgdGhlIGNvcnJlY3QgdHlwaW5nIGFuZCAoMikgZG9jdW1lbnQgdGhlXG4gICAgIHBvdGVudGlhbCBzdGF0ZSBjaGFuZ2UgZm9yIHJlYWRlcnMgb2YgdGhlIGNvZGUuICopXG5cblxuXG4gICgqIENhbGxiYWNrIGluZm9ybWF0aW9uIGZvciBwZW5kaW5nIHByb21pc2VzLiAqKVxuXG4gIGFuZCAnYSBjYWxsYmFja3MgPSB7XG4gICAgbXV0YWJsZSByZWd1bGFyX2NhbGxiYWNrcyA6ICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdDtcbiAgICBtdXRhYmxlIGNhbmNlbF9jYWxsYmFja3MgIDogJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3Q7XG4gICAgbXV0YWJsZSBob3dfdG9fY2FuY2VsICAgICA6IGhvd190b19jYW5jZWw7XG4gICAgbXV0YWJsZSBjbGVhbnVwc19kZWZlcnJlZCA6IGludDtcbiAgfVxuXG4gIGFuZCAnYSByZWd1bGFyX2NhbGxiYWNrID0gJ2EgcmVzb2x2ZWRfc3RhdGUgLT4gdW5pdFxuXG4gIGFuZCBjYW5jZWxfY2FsbGJhY2sgPSB1bml0IC0+IHVuaXRcblxuICBhbmQgJ2EgcmVzb2x2ZWRfc3RhdGUgPSAoJ2EsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZVxuXG4gIGFuZCBob3dfdG9fY2FuY2VsID1cbiAgICB8IE5vdF9jYW5jZWxhYmxlICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG93X3RvX2NhbmNlbFxuICAgIHwgQ2FuY2VsX3RoaXNfcHJvbWlzZSAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICBob3dfdG9fY2FuY2VsXG4gICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSAgICAgOiAoXywgXywgXykgcHJvbWlzZSAgICAgIC0+IGhvd190b19jYW5jZWxcbiAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCA6IChfLCBfLCBfKSBwcm9taXNlIGxpc3QgLT4gaG93X3RvX2NhbmNlbFxuXG4gIGFuZCAnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3QgPVxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IG9mXG4gICAgICAnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3QgKiAnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3RcbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgb2ZcbiAgICAgICdhIHJlZ3VsYXJfY2FsbGJhY2tcbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBvZlxuICAgICAgJ2EgcmVndWxhcl9jYWxsYmFjayBvcHRpb24gcmVmXG5cbiAgYW5kIF8gY2FuY2VsX2NhbGxiYWNrX2xpc3QgPVxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgOlxuICAgICAgXyBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY29uY2F0IDpcbiAgICAgICdhIGNhbmNlbF9jYWxsYmFja19saXN0ICogJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3QgLT5cbiAgICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3RcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIDpcbiAgICAgIHN0b3JhZ2UgKiBjYW5jZWxfY2FsbGJhY2sgLT5cbiAgICAgICAgXyBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgOlxuICAgICAgKCdhLCBfLCBfKSBwcm9taXNlIEx3dF9zZXF1ZW5jZS5ub2RlIC0+XG4gICAgICAgICdhIGNhbmNlbF9jYWxsYmFja19saXN0XG5cbiAgKCogTm90ZXM6XG5cbiAgICAgVGhlc2UgdHlwZSBkZWZpbml0aW9ucyBhcmUgZ3VpbHR5IG9mIHBlcmZvcm1pbmcgc2V2ZXJhbCBvcHRpbWl6YXRpb25zLFxuICAgICB3aXRob3V0IHdoaWNoIHRoZXkgd291bGQgYmUgbXVjaCBlYXNpZXIgdG8gdW5kZXJzdGFuZC5cblxuICAgICAtIFRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgWydhIHJlc29sdmVkX3N0YXRlXSBndWFyYW50ZWUgdGhhdCBpdCBpcyBlaXRoZXJcbiAgICAgICBbRnVsZmlsbGVkIF9dIG9yIFtSZWplY3RlZCBfXS4gU28sIGl0IGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICBbKCdhLCBleG4pIFN0ZGxpYi5yZXN1bHRdLCBhbmQsIGluZGVlZCwgc2hvdWxkIGhhdmUgYW4gaWRlbnRpY2FsXG4gICAgICAgbWVtb3J5IHJlcHJlc2VudGF0aW9uLlxuXG4gICAgIC0gQXMgcGVyIHRoZSBPdmVydmlldywgdGhlcmUgYXJlIHJlZ3VsYXIgY2FsbGJhY2tzIGFuZCBjYW5jZWwgY2FsbGJhY2tzLlxuICAgICAgIENhbmNlbCBjYWxsYmFja3MgYXJlIGNhbGxlZCBvbmx5IG9uIGNhbmNlbGxhdGlvbiwgYW5kLCB0aGVuLCBiZWZvcmUgYW55XG4gICAgICAgcmVndWxhciBjYWxsYmFja3MgYXJlIGNhbGxlZC5cblxuICAgICAgIERlc3BpdGUgdGhlIGRpZmZlcmVudCB0eXBlcyBmb3IgdGhlIHR3byBraW5kcyBvZiBjYWxsYmFja3MsIHRoZXkgYXJlXG4gICAgICAgb3RoZXJ3aXNlIHRoZSBzYW1lLiBDYW5jZWwgY2FsbGJhY2tzIGp1c3QgZG9uJ3QgbmVlZCBhIHJlc3VsdCBzdGF0ZVxuICAgICAgIGFyZ3VtZW50LCBiZWNhdXNlIGl0IGlzIGtub3duIHRvIGJlIFtSZWplY3RlZCBDYW5jZWxlZF0uXG5cbiAgICAgLSBSZWd1bGFyIGNhbGxiYWNrcyBhcmUgbm90IGFsbG93ZWQgdG8gcmFpc2UgZXhjZXB0aW9ucy4gQWxsIHJlZ3VsYXJcbiAgICAgICBjYWxsYmFja3MgYXJlIGNyZWF0ZWQgaW4gdGhpcyBmaWxlLCBzbyB0aGlzIGNhbiBiZSBjaGVja2VkLlxuXG4gICAgICAgQ2FuY2VsIGNhbGxiYWNrcyBjYW4gcmFpc2UgZXhjZXB0aW9ucywgYnV0IGlmIHRoZXkgZG8gc28sIHRoZSBleGNlcHRpb25zXG4gICAgICAgYXJlIHBhc3NlZCB0byBbYXN5bmNfZXhjZXB0aW9uX2hvb2tdLlxuXG4gICAgIC0gW2hvd190b19jYW5jZWxdIGltcGxlbWVudHMgdGhlIGRlcGVuZGVuY3kgZ3JhcGggbWVudGlvbmVkIGluIHRoZVxuICAgICAgIE92ZXJ2aWV3LiBJdCBpcyB0cmF2ZXJzZWQgYmFja3dhcmRzIGR1cmluZyBbTHd0LmNhbmNlbF0uIEl0IGlzIGEgR0FEVFxuICAgICAgIGJlY2F1c2Ugd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgYWN0dWFsIHR5cGVzIG9mIHRoZSBwcm9taXNlIHJlZmVyZW5jZXNcbiAgICAgICBzdG9yZWQsIG9yIHRoZWlyIGludmFyaWFudHMuIFRoZSBjb25zdHJ1Y3RvcnMgY29ycmVzcG9uZCB0byBwZW5kaW5nXG4gICAgICAgcHJvbWlzZSBraW5kcyBhcyBmb2xsb3dzOlxuICAgICAgICAgLSBbTm90X2NhbmNlbGFibGVdOiBpbml0aWFsLCBbTHd0LndhaXRdLlxuICAgICAgICAgLSBbQ2FuY2VsX3RoaXNfcHJvbWlzZV06IGluaXRpYWwsIFtMd3QudGFza10uXG4gICAgICAgICAtIFtQcm9wYWdhdGVfY2FuY2VsX3RvX29uZV06IHNlcXVlbnRpYWwgY29tcG9zaXRpb24sIGUuZy4gW0x3dC5iaW5kXS5cbiAgICAgICAgIC0gW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbF06IGNvbmN1cnJlbnQgY29tcG9zaXRpb24sIGUuZy5cbiAgICAgICAgICAgW0x3dC5qb2luXS5cblxuICAgICAtIFRoZSB0d28gY2FsbGJhY2sgbGlzdCB0eXBlcyBhcmUgb3JkaW5hcnkgYXBwZW5kLWZyaWVuZGx5IGxpc3RzLCB3aXRoIHR3b1xuICAgICAgIG9wdGltaXphdGlvbnMgaW5saW5lZDpcblxuICAgICAgIC0gWydhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdF0gYXBwYXJlbnRseSBoYXMgdHdvIFwia2luZHNcIiBvZiByZWd1bGFyXG4gICAgICAgICBjYWxsYmFja3MsIGltcGxpY2l0bHkgcmVtb3ZlZCBhbmQgZXhwbGljaXRseSByZW1vdmFibGUuIEFsbCBjYWxsYmFja3NcbiAgICAgICAgIGFyZSByZW1vdmFibGUuIEl0J3MganVzdCB0aGF0LCBmb3Igc29tZSBjYWxsYmFja3MsIHRoZXkgd2lsbCBvbmx5IGJlXG4gICAgICAgICByZW1vdmVkIGF0IHRoZSBzYW1lIHRpbWUgdGhhdCB0aGUgcHJvbWlzZSB0aGV5IGFyZSBhdHRhY2hlZCB0byBiZWNvbWVzXG4gICAgICAgICByZXNvbHZlZC4gV2hlbiB0aGF0IGhhcHBlbnMsIHRoZSBlbnRpcmUgc3RhdGUgb2YgdGhhdCBwcm9taXNlIGNoYW5nZXNcbiAgICAgICAgIHRvIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLCBhbmQgdGhlIHJlZmVyZW5jZSB0byB0aGUgd2hvbGVcbiAgICAgICAgIGNhbGxiYWNrIGxpc3QgaXMgc2ltcGx5IGxvc3QuIFRoaXMgXCJyZW1vdmVzXCIgdGhlIGNhbGxiYWNrLiBGb3IgdGhlc2VcbiAgICAgICAgIGNhbGxiYWNrcywgWydhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdF0gYXR0ZW1wdHMgdG8gdHJpbSBhbiBvcHRpb24gYW5kIGFcbiAgICAgICAgIHJlZmVyZW5jZSBjZWxsIHdpdGggdGhlXG4gICAgICAgICBbUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFja10gY29uc3RydWN0b3IuXG5cbiAgICAgICAtIFsnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdF0gaGFzXG4gICAgICAgICBbQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZV0sIHdoaWNoIGlzIHRoZSBzYW1lIGFzXG4gICAgICAgICBbQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgKF8sIChmdW4gXyAtPlxuICAgICAgICAgICBMd3Rfc2VxdWVuY2UucmVtb3ZlIG5vZGUpKV0uXG4gICAgICAgICBUaGlzIHdhcyBwcm9iYWJseSBkb25lIHRvIGF2b2lkIGEgY2xvc3VyZSBhbGxvY2F0aW9uLlxuXG4gICAgIC0gVGhlIFtjbGVhbnVwc19kZWZlcnJlZF0gZmllbGQgaXMgZXhwbGFpbmVkIGluIG1vZHVsZVxuICAgICAgIFtQZW5kaW5nX2NhbGxiYWNrc10uICopXG5lbmRcbm9wZW4gTWFpbl9pbnRlcm5hbF90eXBlc1xuXG5cblxubW9kdWxlIFB1YmxpY190eXBlcyA9XG5zdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuICB0eXBlIC0nYSB1XG5cbiAgbGV0IHRvX3B1YmxpY19wcm9taXNlIDogKCdhLCBfLCBfKSBwcm9taXNlIC0+ICdhIHQgPSBPYmoubWFnaWNcbiAgbGV0IHRvX3B1YmxpY19yZXNvbHZlciA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAnYSB1ID0gT2JqLm1hZ2ljXG5cbiAgdHlwZSBfIHBhY2tlZF9wcm9taXNlID1cbiAgICB8IEludGVybmFsIDogKCdhLCBfLCBfKSBwcm9taXNlIC0+ICdhIHBhY2tlZF9wcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgdG9faW50ZXJuYWxfcHJvbWlzZSAocCA6ICdhIHQpIDogJ2EgcGFja2VkX3Byb21pc2UgPVxuICAgIEludGVybmFsIChPYmoubWFnaWMgcClcbiAgbGV0IHRvX2ludGVybmFsX3Jlc29sdmVyIChyIDogJ2EgdSkgOiAnYSBwYWNrZWRfcHJvbWlzZSA9XG4gICAgSW50ZXJuYWwgKE9iai5tYWdpYyByKVxuXG4gICgqIE1vc3QgZnVuY3Rpb25zIHRoYXQgdGFrZSBhIHB1YmxpYyBwcm9taXNlIChbJ2EgdF0pIGNvbnZlcnQgaXQgdG8gYW5cbiAgICAgaW50ZXJuYWwgcHJvbWlzZSBhcyBmb2xsb3dzOlxuXG4gICAgICAgKCogcCA6ICdhIHQgKilcblxuICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgICAoKiBwIDogKCdhLCB1LCBjKSBwcm9taXNlLCB3aGVyZSB1IGFuZCBjIGFyZSBmcmVzaCB0eXBlcywgaS5lLiB0aGVcbiAgICAgICAgICBpbnZhcmlhbnRzIG9uIHAgYXJlIHVua25vd24uICopXG5cbiAgICAgVGhpcyBjYXN0IGlzIGEgbm8tb3AgY2FzdC4gSXQgb25seSBwcm9kdWNlcyBhIHJlZmVyZW5jZSB3aXRoIGEgZGlmZmVyZW50XG4gICAgIHR5cGUuIFRoZSBpbnRyb2R1Y3Rpb24gYW5kIGltbWVkaWF0ZSBlbGltaW5hdGlvbiBvZiBbSW50ZXJuYWwgX10gc2VlbXMgdG9cbiAgICAgYmUgb3B0aW1pemVkIGF3YXkgZXZlbiBvbiBvbGRlciB2ZXJzaW9ucyBvZiBPQ2FtbCB0aGF0IGRvbid0IGhhdmUgRmxhbWJkYVxuICAgICBhbmQgZG9uJ3Qgc3VwcG9ydCBbW0BAb2NhbWwudW5ib3hlZF1dLiAqKVxuXG4gICgqIFRoaXMgY291bGQgcHJvYmFibHkgc2F2ZSBhbiBhbGxvY2F0aW9uIGJ5IHVzaW5nIFtPYmoubWFnaWNdLiAqKVxuICBsZXQgc3RhdGVfb2ZfcmVzdWx0ID0gZnVuY3Rpb25cbiAgICB8IE9rIHggLT4gRnVsZmlsbGVkIHhcbiAgICB8IEVycm9yIGV4biAtPiBSZWplY3RlZCBleG5cbmVuZFxuaW5jbHVkZSBQdWJsaWNfdHlwZXNcblxuXG5cbm1vZHVsZSBCYXNpY19oZWxwZXJzIDpcbnNpZ1xuICB2YWwgaWRlbnRpY2FsIDogKCdhLCBfLCBfKSBwcm9taXNlIC0+ICgnYSwgXywgXykgcHJvbWlzZSAtPiBib29sXG4gIHZhbCB1bmRlcmx5aW5nIDogKCdhLCAndSwgJ2MpIHByb21pc2UgLT4gKCdhLCB1bmRlcmx5aW5nLCAnYykgcHJvbWlzZVxuXG4gIHR5cGUgKCdhLCAndSwgJ2MpIHN0YXRlX2NoYW5nZWQgPVxuICAgIHwgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvZiAoJ2EsICd1LCAnYykgcHJvbWlzZVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG4gIHZhbCBzZXRfcHJvbWlzZV9zdGF0ZSA6XG4gICAgKCdhLCBfLCBfKSBwcm9taXNlIC0+ICgnYSwgJ3UsICdjKSBzdGF0ZSAtPiAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZFxuXG4gIHR5cGUgJ2EgbWF5X25vd19iZV9wcm94eSA9XG4gICAgfCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgOlxuICAgICAgKCdhLCBfLCBwZW5kaW5nKSBwcm9taXNlIC0+ICdhIG1heV9ub3dfYmVfcHJveHlcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuICB2YWwgbWF5X25vd19iZV9wcm94eSA6XG4gICAgKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlIC0+ICdhIG1heV9ub3dfYmVfcHJveHlcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogQ2hlY2tzIHBoeXNpY2FsIGVxdWFsaXR5IChbPT1dKSBvZiB0d28gaW50ZXJuYWwgcHJvbWlzZXMuIFVubGlrZSBbPT1dLCBkb2VzXG4gICAgIG5vdCBmb3JjZSB1bmlmaWNhdGlvbiBvZiB0aGVpciBpbnZhcmlhbnRzLiAqKVxuICBsZXQgaWRlbnRpY2FsIHAxIHAyID1cbiAgICAodG9fcHVibGljX3Byb21pc2UgcDEpID09ICh0b19wdWJsaWNfcHJvbWlzZSBwMilcblxuICAoKiBbdW5kZXJseWluZyBwXSBldmFsdWF0ZXMgdG8gdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBvZiBbcF0uXG5cbiAgICAgSWYgbXVsdGlwbGUgW1Byb3h5IF9dIGxpbmtzIGFyZSB0cmF2ZXJzZWQsIFt1bmRlcmx5aW5nXSB1cGRhdGVzIGFsbCB0aGVcbiAgICAgcHJveGllcyB0byBwb2ludCBpbW1lZGlhdGVseSB0byB0aGVpciBmaW5hbCB1bmRlcmx5aW5nIHByb21pc2UuICopXG4gIGxldCByZWMgdW5kZXJseWluZ1xuICAgICAgOiB0eXBlIHUgYy4gKCdhLCB1LCBjKSBwcm9taXNlIC0+ICgnYSwgdW5kZXJseWluZywgYykgcHJvbWlzZSA9XG4gICAgZnVuIHAgLT5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gKHAgOiAoXywgdW5kZXJseWluZywgXykgcHJvbWlzZSlcbiAgICB8IFJlamVjdGVkIF8gLT4gcFxuICAgIHwgUGVuZGluZyBfIC0+IHBcbiAgICB8IFByb3h5IHAnIC0+XG4gICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgaWYgbm90IChpZGVudGljYWwgcCcnIHAnKSB0aGVuXG4gICAgICAgIHAuc3RhdGUgPC0gUHJveHkgcCcnO1xuICAgICAgcCcnXG5cblxuXG4gIHR5cGUgKCdhLCAndSwgJ2MpIHN0YXRlX2NoYW5nZWQgPVxuICAgIHwgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvZiAoJ2EsICd1LCAnYykgcHJvbWlzZVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgbGV0IHNldF9wcm9taXNlX3N0YXRlIHAgc3RhdGUgPVxuICAgIGxldCBwIDogKF8sIF8sIF8pIHByb21pc2UgPSBPYmoubWFnaWMgcCBpblxuICAgIHAuc3RhdGUgPC0gc3RhdGU7XG4gICAgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwXG5cbiAgKCogW3NldF9wcm9taXNlX3N0YXRlIHAgc3RhdGVdIG11dGF0ZXMgdGhlIHN0YXRlIG9mIFtwXSwgYW5kIGV2YWx1YXRlcyB0byBhXG4gICAgICh3cmFwcGVkKSByZWZlcmVuY2UgdG8gW3BdIHdpdGggdGhlIHNhbWUgaW52YXJpYW50cyBhcyBvbiBbc3RhdGVdLiBUaGVcbiAgICAgb3JpZ2luYWwgcmVmZXJlbmNlIFtwXSBzaG91bGQgYmUgc2hhZG93ZWQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb246XG5cbiAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID0gc2V0X3Byb21pc2Vfc3RhdGUgcCAoRnVsZmlsbGVkIDQyKSBpbiAuLi5cblxuICAgICBUaGlzIGlzIGEga2luZCBvZiBjaGVhcCBpbWl0YXRpb24gb2YgbGluZWFyIHR5cGluZywgd2hpY2ggaXMgZ29vZCBlbm91Z2hcbiAgICAgZm9yIHRoZSBuZWVkcyBvZiBbbHd0Lm1sXS5cblxuICAgICBJbnRlcm5hbCBmdW5jdGlvbnMgdGhhdCB0cmFuc2l0aXZlbHkgY2FsbCBbc2V0X3Byb21pc2Vfc3RhdGVdIGxpa2V3aXNlXG4gICAgIHJldHVybiB0aGUgbmV3IHJlZmVyZW5jZS4gVGhpcyBlbmRzIGF0IHNvbWUgdG9wLWxldmVsIGZ1bmN0aW9uLCB0eXBpY2FsbHlcbiAgICAgZWl0aGVyIGEgY2FsbGJhY2sgb3IgYSBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS4gVGhlcmUsIHRoZSBuZXcgcmVmZXJlbmNlXG4gICAgIGlzIHN0aWxsIGJvdW5kLCBidXQgaXMgdGhlbiBleHBsaWNpdGx5IGlnbm9yZWQuXG5cbiAgICAgVGhlIHN0YXRlIG9mIGEgcHJvbWlzZSBpcyBuZXZlciB1cGRhdGVkIGRpcmVjdGx5IG91dHNpZGUgdGhpcyBtb2R1bGVcbiAgICAgW0Jhc2ljX2hlbHBlcnNdLiBBbGwgdXBkYXRlcyBlbHNld2hlcmUgYXJlIGRvbmUgdGhyb3VnaFxuICAgICBbc2V0X3Byb21pc2Vfc3RhdGVdLlxuXG4gICAgIFRvIGF2b2lkIHByb2JsZW1zIHdpdGggdHlwZS1sZXZlbCBpbnZhcmlhbnRzIG5vdCBtYXRjaGluZyByZWFsaXR5LCBkYXRhXG4gICAgIHN0cnVjdHVyZXMgZG8gbm90IHN0b3JlIHByb21pc2VzIHdpdGggY29uY3JldGUgaW52YXJpYW50cyAtLSBleGNlcHRcbiAgICAgcmVzb2x2ZWQgcHJvbWlzZXMsIHdoaWNoIGFyZSBpbW11dGFibGUuIEluZGVlZCwgaWYgb25lIGxvb2tzIGF0XG4gICAgIGRlZmluaXRpb25zIG9mIGRhdGEgc3RydWN0dXJlcyB0aGF0IGNhbiBzdG9yZSBwZW5kaW5nIHByb21pc2VzLCBlLmcuIHRoZVxuICAgICBbaG93X3RvX2NhbmNlbF0gZ3JhcGgsIHRoZSBpbnZhcmlhbnRzIGFyZSBleGlzdGVudGlhbGx5IHF1YW50aWZpZWQuXG5cbiAgICAgTm90ZTogaXQncyBwb3NzaWJsZSB0byBzdGF0aWNhbGx5IGRpc2FsbG93IHRoZSBzZXR0aW5nIG9mIHRoZSBbc3RhdGVdIGZpZWxkXG4gICAgIGJ5IG1ha2luZyB0eXBlIFtwcm9taXNlXSBwcml2YXRlLiBIb3dldmVyLCB0aGF0IHNlZW1zIHRvIHJlcXVpcmUgd3JpdGluZyBhXG4gICAgIHNpZ25hdHVyZSB0aGF0IGlzIGEgbmVhci1kdXBsaWNhdGUgb2YgW01haW5faW50ZXJuYWxfdHlwZXNdLCBvciBzb21lIGFidXNlXG4gICAgIG9mIGZ1bmN0b3JzLiAqKVxuXG5cblxuICB0eXBlICdhIG1heV9ub3dfYmVfcHJveHkgPVxuICAgIHwgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IDpcbiAgICAgICgnYSwgXywgcGVuZGluZykgcHJvbWlzZSAtPiAnYSBtYXlfbm93X2JlX3Byb3h5XG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgbWF5X25vd19iZV9wcm94eSBwID0gU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHBcblxuICAoKiBNYW55IGZ1bmN0aW9ucywgZm9yIGV4YW1wbGUgW0x3dC5iaW5kXSBhbmQgW0x3dC5qb2luXSwgY3JlYXRlIGEgZnJlc2hcbiAgICAgcGVuZGluZyBwcm9taXNlIFtwXSBhbmQgcmV0dXJuIGl0IHRvIHRoZSB1c2VyLlxuXG4gICAgIFRoZXkgZG8gbm90IHJldHVybiBhIGNvcnJlc3BvbmRpbmcgcmVzb2x2ZXIuIFRoYXQgbWVhbnMgdGhhdCBvbmx5IHRoZVxuICAgICBmdW5jdGlvbiBpdHNlbGYgKHR5cGljYWxseSwgYSBjYWxsYmFjayByZWdpc3RlcmVkIGJ5IGl0KSBjYW4gcmVzb2x2ZSBbcF0uXG4gICAgIFRoZSBvbmx5IHRoaW5nIHRoZSB1c2VyIGNhbiBkbyBkaXJlY3RseSBpcyB0cnkgdG8gY2FuY2VsIFtwXSwgYnV0LCBzaW5jZVxuICAgICBbcF0gaXMgbm90IGFuIGluaXRpYWwgcHJvbWlzZSwgdGhlIGNhbmNlbGxhdGlvbiBhdHRlbXB0IHNpbXBseSBwcm9wYWdhdGVzXG4gICAgIHBhc3QgW3BdIHRvIFtwXSdzIHByZWRlY2Vzc29ycy4gSWYgdGhhdCBldmVudHVhbGx5IHJlc3VsdHMgaW4gY2FuY2VsaW5nXG4gICAgIFtwXSwgaXQgd2lsbCBiZSB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtcyBvZiB0aGUgZnVuY3Rpb24gKGUuZy5cbiAgICAgW0x3dC5iaW5kXSdzIGNhbGxiYWNrKS5cblxuICAgICBBcyBhIHJlc3VsdCwgdGhlIG9ubHkgcG9zc2libGUgc3RhdGUgY2hhbmdlLCBiZWZvcmUgdGhlIGNhbGxiYWNrLCBpcyB0aGF0XG4gICAgIFtwXSBtYXkgaGF2ZSBiZWNvbWUgYSBwcm94eS4gTm93LFxuXG4gICAgIC0gSWYgW3BdIGRvZXMgbm90IHVuZGVyZ28gdGhpcyBzdGF0ZSBjaGFuZ2UgYW5kIGJlY29tZSBhIHByb3h5LCBpdCByZW1haW5zXG4gICAgICAgYW4gdW5kZXJseWluZywgcGVuZGluZyBwcm9taXNlLlxuICAgICAtIElmIFtwXSBkb2VzIGJlY29tZSBhIHByb3h5LCBpdCB3aWxsIGJlIGEgcHJveHkgZm9yIGFub3RoZXIgcHJvbWlzZSBbcCddXG4gICAgICAgY3JlYXRlZCBmcmVzaCBieSBbTHd0LmJpbmRdLCB0byB3aGljaCB0aGlzIHNhbWUgYXJndW1lbnQgYXBwbGllcy4gU2VlXG4gICAgICAgW21ha2VfaW50b19wcm94eV0uXG5cbiAgICAgU28sIGJ5IGluZHVjdGlvbiBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBwcm94eSAoW1Byb3h5IF9dKSBjaGFpbiwgYXQgdGhlIHRpbWVcbiAgICAgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCwgW3BdIGlzIGVpdGhlciBhbiB1bmRlcmx5aW5nLCBwZW5kaW5nIHByb21pc2UsIG9yIGFcbiAgICAgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLlxuXG4gICAgIFRoZSBjYXN0XG5cbiAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW4gLi4uXG5cbiAgICAgZW5jb2RlcyB0aGUgcG9zc2liaWxpdHkgb2YgdGhpcyBzdGF0ZSBjaGFuZ2UuIEl0IHJlcGxhY2VzIGEgcmVmZXJlbmNlXG5cbiAgICAgICBwIDogKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKVxuXG4gICAgIHdpdGhcblxuICAgICAgIHAgOiAoJ2EsICRVbmtub3duLCBwZW5kaW5nKVxuXG4gICAgIGFuZCBpcyB0eXBpY2FsbHkgc2VlbiBhdCB0aGUgYmVnaW5uaW5nIG9mIGNhbGxiYWNrcyByZWdpc3RlcmVkIGJ5XG4gICAgIFtMd3QuYmluZF0gYW5kIHNpbWlsYXIgZnVuY3Rpb25zLlxuXG4gICAgIFRoZSBjYXN0IGlzIGEgbm8tb3AgY2FzdC4gVGhlIGludHJvZHVjdGlvbiBhbmQgaW1tZWRpYXRlIGVsaW1pbmF0aW9uIG9mXG4gICAgIFtTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIF9dIHNlZW1zIHRvIGJlIG9wdGltaXplZCBhd2F5IGV2ZW4gb24gb2xkIHZlcnNpb25zXG4gICAgIG9mIE9DYW1sLiAqKVxuZW5kXG5vcGVuIEJhc2ljX2hlbHBlcnNcblxuKCogU21hbGwgaGVscGVycyB0byBhdm9pZCBjYXRjaGluZyBvY2FtbC1ydW50aW1lIGV4Y2VwdGlvbnMgKilcbm1vZHVsZSBFeGNlcHRpb25fZmlsdGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IGV4biAtPiBib29sXG4gIGxldCBoYW5kbGVfYWxsID0gZnVuIF8gLT4gdHJ1ZVxuICBsZXQgaGFuZGxlX2FsbF9leGNlcHRfcnVudGltZSA9IGZ1bmN0aW9uXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+IGZhbHNlXG4gICAgfCBTdGFja19vdmVyZmxvdyAtPiBmYWxzZVxuICAgIHwgXyAtPiB0cnVlXG4gIGxldCB2ID1cbiAgICAoKiBEZWZhdWx0IHZhbHVlOiB0aGUgbGVnYWN5IGJlaGF2aW91ciB0byBhdm9pZCBicmVha2luZyBwcm9ncmFtcyAqKVxuICAgIHJlZiBoYW5kbGVfYWxsXG4gIGxldCBzZXQgZiA9IHYgOj0gZlxuICBsZXQgcnVuIGUgPSAhdiBlXG5lbmRcblxubW9kdWxlIFNlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZSA6XG5zaWdcbiAgKCogUHVibGljIGludGVyZmFjZSAqKVxuICB0eXBlICd2IGtleVxuICB2YWwgbmV3X2tleSA6IHVuaXQgLT4gXyBrZXlcbiAgdmFsIGdldCA6ICd2IGtleSAtPiAndiBvcHRpb25cbiAgdmFsIHdpdGhfdmFsdWUgOiAndiBrZXkgLT4gJ3Ygb3B0aW9uIC0+ICh1bml0IC0+ICdiKSAtPiAnYlxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSAqKVxuICB2YWwgY3VycmVudF9zdG9yYWdlIDogc3RvcmFnZSByZWZcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogVGhlIGlkZWEgYmVoaW5kIHNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZSBpcyB0byBwcmVzZXJ2ZSBzb21lIHZhbHVlc1xuICAgICBkdXJpbmcgYSBjYWxsIHRvIFtiaW5kXSBvciBvdGhlciBzZXF1ZW50aWFsIGNvbXBvc2l0aW9uIG9wZXJhdGlvbiwgYW5kXG4gICAgIHJlc3RvcmUgdGhvc2UgdmFsdWVzIGluIHRoZSBjYWxsYmFjayBmdW5jdGlvbjpcblxuICAgICAgIEx3dC53aXRoX3ZhbHVlIG15X2tleSAoU29tZSBcImZvb1wiKSAoZnVuICgpIC0+XG4gICAgICAgcCA+fD0gZnVuICgpIC0+XG4gICAgICAgYXNzZXJ0IChMd3QuZ2V0IG15X2tleSA9IFNvbWUgXCJmb29cIikpXG4gICAgICAgICAoKiBXaWxsIHN1Y2NlZWQgZXZlbiBpZiB0aGlzIGNhbGxiYWNrIGlzIGNhbGxlZCBsYXRlci4gKilcblxuICAgICBOb3RlIHRoYXQgaXQgZG9lcyBub3QgbWF0dGVyIHRoYXQgdGhlIGNhbGxiYWNrIGlzIGRlZmluZWQgd2l0aGluIGFuXG4gICAgIGFyZ3VtZW50IG9mIFt3aXRoX3ZhbHVlXSwgaS5lLiwgdGhpcyBkb2VzIHRoZSBzYW1lOlxuXG4gICAgICAgbGV0IGYgPSBmdW4gKCkgLT4gYXNzZXJ0IChMd3QuZ2V0IG15X2tleSA9IFNvbWUgXCJmb29cIikgaW5cbiAgICAgICBMd3Qud2l0aF92YWx1ZSBteV9rZXkgKFNvbWUgXCJmb29cIikgKGZ1biAoKSAtPiBwID58PSBmKVxuXG4gICAgIEFsbCB0aGF0IG1hdHRlcnMgaXMgdGhhdCB0aGUgdG9wLW1vc3Qgc2VxdWVuY2luZyBvcGVyYXRpb24gKGluIHRoaXMgY2FzZSxcbiAgICAgbWFwKSBpcyBleGVjdXRlZCBieSB0aGF0IGFyZ3VtZW50LlxuXG4gICAgIFRoaXMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBzaW5nbGUgZ2xvYmFsIGhldGVyb2dlbmVvdXMga2V5LXZhbHVlIG1hcC5cbiAgICAgU2VxdWVudGlhbCBjb21wb3NpdGlvbiBmdW5jdGlvbnMgc25hcHNob3QgdGhpcyBtYXAgd2hlbiB0aGV5IGFyZSBjYWxsZWQsXG4gICAgIGFuZCByZXN0b3JlIHRoZSBzbmFwc2hvdCByaWdodCBiZWZvcmUgY2FsbGluZyB0aGUgdXNlcidzIGNhbGxiYWNrLiBUaGUgc2FtZVxuICAgICBoYXBwZW5zIGZvciBjYW5jZWwgdHJpZ2dlcnMgYWRkZWQgYnkgW29uX2NhbmNlbF0uXG5cbiAgICAgTWFpbnRhaW5lcidzIG5vdGU6IEkgdGhpbmsgdXNpbmcgdGhpcyBtZWNoYW5pc20gc2hvdWxkIGJlIGRpc2NvdXJhZ2VkIGluXG4gICAgIG5ldyBjb2RlLiAqKVxuXG4gIHR5cGUgJ3Yga2V5ID0ge1xuICAgIGlkIDogaW50O1xuICAgIG11dGFibGUgdmFsdWUgOiAndiBvcHRpb247XG4gIH1cblxuICBsZXQgbmV4dF9rZXlfaWQgPSByZWYgMFxuXG4gIGxldCBuZXdfa2V5ICgpID1cbiAgICBsZXQgaWQgPSAhbmV4dF9rZXlfaWQgaW5cbiAgICBuZXh0X2tleV9pZCA6PSBpZCArIDE7XG4gICAge2lkID0gaWQ7IHZhbHVlID0gTm9uZX1cblxuICBsZXQgY3VycmVudF9zdG9yYWdlID0gcmVmIFN0b3JhZ2VfbWFwLmVtcHR5XG5cbiAgbGV0IGdldCBrZXkgPVxuICAgIGlmIFN0b3JhZ2VfbWFwLm1lbSBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVmcmVzaCA9IFN0b3JhZ2VfbWFwLmZpbmQga2V5LmlkICFjdXJyZW50X3N0b3JhZ2UgaW5cbiAgICAgIHJlZnJlc2ggKCk7XG4gICAgICBsZXQgdmFsdWUgPSBrZXkudmFsdWUgaW5cbiAgICAgIGtleS52YWx1ZSA8LSBOb25lO1xuICAgICAgdmFsdWVcbiAgICBlbmRcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHdpdGhfdmFsdWUga2V5IHZhbHVlIGYgPVxuICAgIGxldCBuZXdfc3RvcmFnZSA9XG4gICAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBsZXQgcmVmcmVzaCA9IGZ1biAoKSAtPiBrZXkudmFsdWUgPC0gdmFsdWUgaW5cbiAgICAgICAgU3RvcmFnZV9tYXAuYWRkIGtleS5pZCByZWZyZXNoICFjdXJyZW50X3N0b3JhZ2VcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBTdG9yYWdlX21hcC5yZW1vdmUga2V5LmlkICFjdXJyZW50X3N0b3JhZ2VcbiAgICBpblxuXG4gICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG4gICAgY3VycmVudF9zdG9yYWdlIDo9IG5ld19zdG9yYWdlO1xuICAgIHRyeVxuICAgICAgbGV0IHJlc3VsdCA9IGYgKCkgaW5cbiAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgcmVzdWx0XG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgcmFpc2UgZXhuXG5lbmRcbmluY2x1ZGUgU2VxdWVuY2VfYXNzb2NpYXRlZF9zdG9yYWdlXG5cblxuXG5tb2R1bGUgUGVuZGluZ19jYWxsYmFja3MgOlxuc2lnXG4gICgqIE11dGF0aW5nIGNhbGxiYWNrIGxpc3RzIGF0dGFjaGVkIHRvIHBlbmRpbmcgcHJvbWlzZXMgKilcbiAgdmFsIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgOlxuICAgICdhIGNhbGxiYWNrcyAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IHVuaXRcbiAgdmFsIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIDpcbiAgICAnYSB0IGxpc3QgLT4gJ2EgcmVndWxhcl9jYWxsYmFjayAtPiB1bml0XG4gIHZhbCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfcmVtb3ZlX2Z1bmN0aW9uIDpcbiAgICAnYSB0IGxpc3QgLT4gJ2EgcmVndWxhcl9jYWxsYmFjayAtPiBjYW5jZWxfY2FsbGJhY2tcbiAgdmFsIGFkZF9jYW5jZWxfY2FsbGJhY2sgOiAnYSBjYWxsYmFja3MgLT4gY2FuY2VsX2NhbGxiYWNrIC0+IHVuaXRcbiAgdmFsIG1lcmdlX2NhbGxiYWNrcyA6IGZyb206J2EgY2FsbGJhY2tzIC0+IGludG86J2EgY2FsbGJhY2tzIC0+IHVuaXRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IGNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyBsMSBsMiA9XG4gICAgYmVnaW4gbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSwgXyAtPiBsMlxuICAgIHwgXywgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+IGwxXG4gICAgfCBfLCBfIC0+IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGwxLCBsMilcbiAgICBlbmQgW0BvY2FtbC53YXJuaW5nIFwiLTRcIl1cblxuICBsZXQgY29uY2F0X2NhbmNlbF9jYWxsYmFja3MgbDEgbDIgPVxuICAgIGJlZ2luIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSwgXyAtPiBsMlxuICAgIHwgXywgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT4gbDFcbiAgICB8IF8sIF8gLT4gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY29uY2F0IChsMSwgbDIpXG4gICAgZW5kIFtAb2NhbWwud2FybmluZyBcIi00XCJdXG5cbiAgKCogSW4gYSBjYWxsYmFjayBsaXN0LCBmaWx0ZXJzIG91dCBjZWxscyBvZiBleHBsaWNpdGx5IHJlbW92YWJsZSBjYWxsYmFja3NcbiAgICAgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZC4gKilcbiAgbGV0IHJlYyBjbGVhbl91cF9jYWxsYmFja19jZWxscyA9IGZ1bmN0aW9uXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sge2NvbnRlbnRzID0gTm9uZX0gLT5cbiAgICAgIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sge2NvbnRlbnRzID0gU29tZSBffVxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBfXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgYXMgY2FsbGJhY2tzIC0+XG4gICAgICBjYWxsYmFja3NcblxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAobDEsIGwyKSAtPlxuICAgICAgbGV0IGwxID0gY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgbDEgaW5cbiAgICAgIGxldCBsMiA9IGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzIGwyIGluXG4gICAgICBjb25jYXRfcmVndWxhcl9jYWxsYmFja3MgbDEgbDJcblxuICAoKiBTZWUgW2NsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGxdIGFuZCBbbWVyZ2VfY2FsbGJhY2tzXS4gKilcbiAgbGV0IGNsZWFudXBfdGhyb3R0bGUgPSA0MlxuXG4gICgqIEV4cGxpY2l0bHkgcmVtb3ZhYmxlIGNhbGxiYWNrcyBhcmUgYWRkZWQgKG1haW5seSkgYnkgW0x3dC5jaG9vc2VdIGFuZCBpdHNcbiAgICAgc2ltaWxhciBmdW5jdGlvbnMuIEluIFtMd3QuY2hvb3NlIFtwOyBwJ11dLCBpZiBbcCddIHJlc29sdmVzIGZpcnN0LCB0aGVcbiAgICAgY2FsbGJhY2sgYWRkZWQgYnkgW0x3dC5jaG9vc2VdIHRvIFtwXSBpcyByZW1vdmVkLlxuXG4gICAgIFRoZSByZW1vdmFsIGl0c2VsZiBpcyBhY2NvbXBsaXNoZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIGNsZWFycyB0aGUgcmVmZXJlbmNlXG4gICAgIGNlbGwgW2NlbGxdLCB3aGljaCBjb250YWlucyB0aGUgcmVmZXJlbmNlIHRvIHRoYXQgY2FsbGJhY2suXG5cbiAgICAgSWYgW3BdIGlzIGEgbG9uZy1wZW5kaW5nIHByb21pc2UgdGhhdCByZXBlYXRlZGx5IHBhcnRpY2lwYXRlcyBpblxuICAgICBbTHd0LmNob29zZV0sIHBlcmhhcHMgaW4gYSBsb29wLCBpdCB3aWxsIGFjY3VtdWxhdGUgYSBsYXJnZSBudW1iZXIgb2ZcbiAgICAgY2xlYXJlZCByZWZlcmVuY2UgY2VsbHMgaW4gdGhpcyBmYXNoaW9uLiBUbyBhdm9pZCBhIG1lbW9yeSBsZWFrLCB0aGV5IG11c3RcbiAgICAgYmUgY2xlYW5lZCB1cC4gSG93ZXZlciwgdGhlIGNlbGxzIGFyZSBub3QgY2xlYW5lZCB1cCBvbiAqZXZlcnkqIHJlbW92YWwsXG4gICAgIHByZXN1bWFibHkgYmVjYXVzZSBzY2FubmluZyB0aGUgY2FsbGJhY2sgbGlzdCB0aGF0IG9mdGVuLCBhbmQgcmVidWlsZGluZ1xuICAgICBpdCwgY2FuIGdldCBleHBlbnNpdmUuXG5cbiAgICAgQ2xlYW51cCBpcyB0aHJvdHRsZWQgYnkgbWFpbnRhaW5pbmcgYSBjb3VudGVyLCBbY2xlYW51cHNfZGVmZXJyZWRdLCBvbiBlYWNoXG4gICAgIHBlbmRpbmcgcHJvbWlzZS4gVGhlIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHRoaXMgZnVuY3Rpb24gd2FudHNcbiAgICAgdG8gY2xlYW4gdGhlIGNhbGxiYWNrIGxpc3QgKHJpZ2h0IGFmdGVyIGNsZWFyaW5nIGEgY2VsbCkuIFdoZW4gdGhlIGNvdW50ZXJcbiAgICAgcmVhY2hlcyBbY2xlYW51cF90aHJvdHRsZV0sIHRoZSBjYWxsYmFjayBsaXN0IGlzIGFjdHVhbGx5IHNjYW5uZWQgYW5kXG4gICAgIGNsZWFyZWQgY2FsbGJhY2sgY2VsbHMgYXJlIHJlbW92ZWQuICopXG4gIGxldCBjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsIGNlbGwgfm9yaWdpbmFsbHlfYWRkZWRfdG86cHMgPVxuICAgIGNlbGwgOj0gTm9uZTtcblxuICAgICgqIEdvIHRocm91Z2ggdGhlIHByb21pc2VzIHRoZSBjZWxsIGhhZCBvcmlnaW5hbGx5IGJlZW4gYWRkZWQgdG8sIGFuZCBlaXRoZXJcbiAgICAgICBkZWZlciBhIGNsZWFudXAsIG9yIGFjdHVhbGx5IGNsZWFuIHVwIHRoZWlyIGNhbGxiYWNrIGxpc3RzLiAqKVxuICAgIHBzIHw+IExpc3QuaXRlciAoZnVuIHAgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAoKiBTb21lIG9mIHRoZSBwcm9taXNlcyBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gcmVzb2x2ZWQgYXQgdGhlIHRpbWUgdGhpc1xuICAgICAgICAgZnVuY3Rpb24gaXMgY2FsbGVkLiAqKVxuICAgICAgfCBGdWxmaWxsZWQgXyAtPiAoKVxuICAgICAgfCBSZWplY3RlZCBfIC0+ICgpXG5cbiAgICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT5cbiAgICAgICAgbWF0Y2ggY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIHdpdGhcbiAgICAgICAgKCogSWYgdGhlIHByb21pc2UgaGFzIG9ubHkgb25lIHJlZ3VsYXIgY2FsbGJhY2ssIGFuZCBpdCBpcyByZW1vdmFibGUsIGl0XG4gICAgICAgICAgIG11c3QgaGF2ZSBiZWVuIHRoZSBjZWxsIGNsZWFyZWQgaW4gdGhpcyBmdW5jdGlvbiwgYWJvdmUuIEluIHRoYXRcbiAgICAgICAgICAgY2FzZSwganVzdCBzZXQgaXRzIGNhbGxiYWNrIGxpc3QgdG8gZW1wdHkuICopXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIF8gLT5cbiAgICAgICAgICBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3MgPC0gUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG5cbiAgICAgICAgKCogTWFpbnRhaW5lcidzIG5vdGU6IEkgdGhpbmsgdGhpcyBmdW5jdGlvbiBzaG91bGRuJ3QgdHJ5IHRvIHRyaWdnZXIgYVxuICAgICAgICAgICBjbGVhbnVwIGluIHRoZSBmaXJzdCB0d28gY2FzZXMsIGJ1dCBJIGFtIHByZXNlcnZpbmcgdGhlbSBmb3Igbm93LCBhc1xuICAgICAgICAgICB0aGlzIGlzIGhvdyB0aGUgY29kZSB3YXMgd3JpdHRlbiBpbiB0aGUgcGFzdC4gKilcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIF9cbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IF8gLT5cbiAgICAgICAgICBsZXQgY2xlYW51cHNfZGVmZXJyZWQgPSBjYWxsYmFja3MuY2xlYW51cHNfZGVmZXJyZWQgKyAxIGluXG4gICAgICAgICAgaWYgY2xlYW51cHNfZGVmZXJyZWQgPiBjbGVhbnVwX3Rocm90dGxlIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCA8LSAwO1xuICAgICAgICAgICAgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIDwtXG4gICAgICAgICAgICAgIGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrc1xuICAgICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgICBjYWxsYmFja3MuY2xlYW51cHNfZGVmZXJyZWQgPC0gY2xlYW51cHNfZGVmZXJyZWQpXG5cbiAgKCogQ29uY2F0ZW5hdGVzIGJvdGgga2luZHMgb2YgY2FsbGJhY2tzIG9uIFt+ZnJvbV0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGlzdHNcbiAgICAgb2YgW35pbnRvXS4gVGhlIGNhbGxiYWNrIGxpc3RzIG9uIFt+ZnJvbV0gYXJlICpub3QqIHRoZW4gY2xlYXJlZCwgYmVjYXVzZVxuICAgICB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGJ5IFtTZXF1ZW50aWFsX2NvbXBvc2l0aW9uLm1ha2VfaW50b19wcm94eV0sXG4gICAgIHdoaWNoIGltbWVkaWF0ZWx5IGNoYW5nZXMgdGhlIHN0YXRlIG9mIFt+ZnJvbV0gYW5kIGxvc2VzIHJlZmVyZW5jZXMgdG8gdGhlXG4gICAgIG9yaWdpbmFsIGNhbGxiYWNrIGxpc3RzLlxuXG4gICAgIFRoZSBbY2xlYW51cHNfZGVmZXJyZWRdIGZpZWxkcyBvZiBib3RoIHByb21pc2VzIGFyZSBzdW1tZWQsIGFuZCBpZiB0aGUgc3VtXG4gICAgIGV4Y2VlZHMgW2NsZWFudXBfdGhyb3R0bGVdLCBhIGNsZWFudXAgb2YgcmVndWxhciBjYWxsYmFja3MgaXMgdHJpZ2dlcmVkLlxuICAgICBUaGlzIGlzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzOyBzZWVcbiAgICAgW2NsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGxdLiAqKVxuICBsZXQgbWVyZ2VfY2FsbGJhY2tzIH5mcm9tIH5pbnRvID1cbiAgICBsZXQgcmVndWxhcl9jYWxsYmFja3MgPVxuICAgICAgY29uY2F0X3JlZ3VsYXJfY2FsbGJhY2tzIGludG8ucmVndWxhcl9jYWxsYmFja3MgZnJvbS5yZWd1bGFyX2NhbGxiYWNrcyBpblxuICAgIGxldCBjbGVhbnVwc19kZWZlcnJlZCA9IGludG8uY2xlYW51cHNfZGVmZXJyZWQgKyBmcm9tLmNsZWFudXBzX2RlZmVycmVkIGluXG5cbiAgICBsZXQgcmVndWxhcl9jYWxsYmFja3MsIGNsZWFudXBzX2RlZmVycmVkID1cbiAgICAgIGlmIGNsZWFudXBzX2RlZmVycmVkID4gY2xlYW51cF90aHJvdHRsZSB0aGVuXG4gICAgICAgIGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzIHJlZ3VsYXJfY2FsbGJhY2tzLCAwXG4gICAgICBlbHNlXG4gICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzLCBjbGVhbnVwc19kZWZlcnJlZFxuICAgIGluXG5cbiAgICBsZXQgY2FuY2VsX2NhbGxiYWNrcyA9XG4gICAgICBjb25jYXRfY2FuY2VsX2NhbGxiYWNrcyBpbnRvLmNhbmNlbF9jYWxsYmFja3MgZnJvbS5jYW5jZWxfY2FsbGJhY2tzIGluXG5cbiAgICBpbnRvLnJlZ3VsYXJfY2FsbGJhY2tzIDwtIHJlZ3VsYXJfY2FsbGJhY2tzO1xuICAgIGludG8uY2FuY2VsX2NhbGxiYWNrcyA8LSBjYW5jZWxfY2FsbGJhY2tzO1xuICAgIGludG8uY2xlYW51cHNfZGVmZXJyZWQgPC0gY2xlYW51cHNfZGVmZXJyZWRcblxuXG5cbiAgKCogR2VuZXJhbCwgaW50ZXJuYWwsIGZ1bmN0aW9uIGZvciBhZGRpbmcgYSByZWd1bGFyIGNhbGxiYWNrLiAqKVxuICBsZXQgYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlIGNhbGxiYWNrcyBub2RlID1cbiAgICBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3MgPC1cbiAgICAgIG1hdGNoIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyB3aXRoXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPlxuICAgICAgICBub2RlXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgX1xuICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgX1xuICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IF8gYXMgZXhpc3RpbmcgLT5cbiAgICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAobm9kZSwgZXhpc3RpbmcpXG5cbiAgbGV0IGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgY2FsbGJhY2tzIGYgPVxuICAgIGFkZF9yZWd1bGFyX2NhbGxiYWNrX2xpc3Rfbm9kZVxuICAgICAgY2FsbGJhY2tzIChSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIGYpXG5cbiAgKCogQWRkcyBbY2FsbGJhY2tdIGFzIHJlbW92YWJsZSB0byBlYWNoIHByb21pc2UgaW4gW3BzXS4gVGhlIGZpcnN0IHByb21pc2UgaW5cbiAgICAgW3BzXSB0byB0cmlnZ2VyIFtjYWxsYmFja10gcmVtb3ZlcyBbY2FsbGJhY2tdIGZyb20gdGhlIG90aGVyIHByb21pc2VzOyB0aGlzXG4gICAgIGd1YXJhbnRlZXMgdGhhdCBbY2FsbGJhY2tdIGlzIGNhbGxlZCBhdCBtb3N0IG9uY2UuIEFsbCB0aGUgcHJvbWlzZXMgaW4gW3BzXVxuICAgICBtdXN0IGJlIHBlbmRpbmcuXG5cbiAgICAgVGhpcyBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgaW5kaXJlY3RseSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgW0x3dC5jaG9vc2VdIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4gKilcbiAgbGV0IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9jZWxsIHBzIGYgPVxuICAgIGxldCByZWMgY2VsbCA9IHJlZiAoU29tZSBzZWxmX3JlbW92aW5nX2NhbGxiYWNrX3dyYXBwZXIpXG4gICAgYW5kIHNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlciByZXN1bHQgPVxuICAgICAgY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbCBjZWxsIH5vcmlnaW5hbGx5X2FkZGVkX3RvOnBzO1xuICAgICAgZiByZXN1bHRcbiAgICBpblxuXG4gICAgbGV0IG5vZGUgPSBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgY2VsbCBpblxuICAgIHBzIHw+IExpc3QuaXRlciAoZnVuIHAgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+IGFkZF9yZWd1bGFyX2NhbGxiYWNrX2xpc3Rfbm9kZSBjYWxsYmFja3Mgbm9kZVxuICAgICAgfCBGdWxmaWxsZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPiBhc3NlcnQgZmFsc2UpO1xuXG4gICAgY2VsbFxuXG4gIGxldCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBmID1cbiAgICBpZ25vcmUgKGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9jZWxsIHBzIGYpXG5cbiAgKCogVGhpcyBpcyBiYXNpY2FsbHkganVzdCB0byBzdXBwb3J0IFtMd3QucHJvdGVjdGVkXSwgd2hpY2ggbmVlZHMgdG8gcmVtb3ZlXG4gICAgIHRoZSBjYWxsYmFjayBpbiBjaXJjdW1zdGFuY2VzIG90aGVyIHRoYW4gdGhlIGNhbGxiYWNrIGJlaW5nIGNhbGxlZC4gKilcbiAgbGV0IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9yZW1vdmVfZnVuY3Rpb24gcHMgZiA9XG4gICAgbGV0IGNlbGwgPSBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfY2VsbCBwcyBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICBjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsIGNlbGwgfm9yaWdpbmFsbHlfYWRkZWRfdG86cHNcblxuICBsZXQgYWRkX2NhbmNlbF9jYWxsYmFjayBjYWxsYmFja3MgZiA9XG4gICAgbGV0IG5vZGUgPSBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayAoIWN1cnJlbnRfc3RvcmFnZSwgZikgaW5cblxuICAgIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIDwtXG4gICAgICBtYXRjaCBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyB3aXRoXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgIG5vZGVcblxuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayBfXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIF9cbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY29uY2F0IF8gLT5cbiAgICAgICAgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY29uY2F0IChub2RlLCBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcylcbmVuZFxub3BlbiBQZW5kaW5nX2NhbGxiYWNrc1xuXG5cblxubW9kdWxlIFJlc29sdXRpb25fbG9vcCA6XG5zaWdcbiAgKCogQWxsIHVzZXItcHJvdmlkZWQgY2FsbGJhY2tzIGFyZSBjYWxsZWQgYnkgTHd0IG9ubHkgdGhyb3VnaCB0aGlzIG1vZHVsZS4gSXRcbiAgICAgdHJhY2tzIHRoZSBjdXJyZW50IGNhbGxiYWNrIHN0YWNrIGRlcHRoLCBhbmQgZGVjaWRlcyB3aGV0aGVyIGVhY2ggY2FsbGJhY2tcbiAgICAgY2FsbCBzaG91bGQgYmUgZGVmZXJyZWQgb3Igbm90LiAqKVxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSB1c2VkIG9ubHkgaW4gdGhpcyBtb2R1bGUgTHd0ICopXG4gIHZhbCByZXNvbHZlIDpcbiAgICA/YWxsb3dfZGVmZXJyaW5nOmJvb2wgLT5cbiAgICA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOmludCAtPlxuICAgICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSAtPlxuICAgICdhIHJlc29sdmVkX3N0YXRlIC0+XG4gICAgICAoJ2EsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZV9jaGFuZ2VkXG5cbiAgdmFsIHJ1bl9jYWxsYmFja3Nfb3JfZGVmZXJfdGhlbSA6XG4gICAgP2FsbG93X2RlZmVycmluZzpib29sIC0+XG4gICAgP21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aDppbnQgLT5cbiAgICAoJ2EgY2FsbGJhY2tzKSAtPlxuICAgICdhIHJlc29sdmVkX3N0YXRlIC0+XG4gICAgICB1bml0XG5cbiAgdmFsIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdCA6XG4gICAgP3J1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDpib29sIC0+XG4gICAgY2FsbGJhY2s6KHVuaXQgLT4gJ2EpIC0+XG4gICAgaWZfZGVmZXJyZWQ6KHVuaXQgLT4gJ2EgKiAnYiByZWd1bGFyX2NhbGxiYWNrICogJ2IgcmVzb2x2ZWRfc3RhdGUpIC0+XG4gICAgICAnYVxuXG4gIHZhbCBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlIGV4cG9zZWQgdG8gb3RoZXIgbW9kdWxlcyBpbiBMd3QgKilcbiAgdmFsIGFiYW5kb25fd2FrZXVwcyA6IHVuaXQgLT4gdW5pdFxuXG4gICgqIFB1YmxpYyBpbnRlcmZhY2UgKilcbiAgZXhjZXB0aW9uIENhbmNlbGVkXG5cbiAgdmFsIGFzeW5jX2V4Y2VwdGlvbl9ob29rIDogKGV4biAtPiB1bml0KSByZWZcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogV2hlbiBMd3QgbmVlZHMgdG8gY2FsbCBhIGNhbGxiYWNrLCBpdCBlbnRlcnMgdGhlIHJlc29sdXRpb24gbG9vcC4gVGhpc1xuICAgICB0eXBpY2FsbHkgaGFwcGVucyB3aGVuIEx3dCBzZXRzIHRoZSBzdGF0ZSBvZiBvbmUgcHJvbWlzZSB0byBbRnVsZmlsbGVkIF9dXG4gICAgIG9yIFtSZWplY3RlZCBfXS4gVGhlIGNhbGxiYWNrcyB0aGF0IHdlcmUgYXR0YWNoZWQgdG8gdGhlIHByb21pc2Ugd2hlbiBpdFxuICAgICB3YXMgcGVuZGluZyBtdXN0IHRoZW4gYmUgY2FsbGVkLlxuXG4gICAgIFRoaXMgYWxzbyBoYXBwZW5zIGluIGEgZmV3IG90aGVyIHNpdHVhdGlvbnMuIEZvciBleGFtcGxlLCB3aGVuIFtMd3QuYmluZF1cbiAgICAgaXMgY2FsbGVkIG9uIGEgcHJvbWlzZSwgYnV0IHRoYXQgcHJvbWlzZSBpcyBhbHJlYWR5IHJlc29sdmVkLCB0aGUgY2FsbGJhY2tcbiAgICAgcGFzc2VkIHRvIFtiaW5kXSBtdXN0IGJlIGNhbGxlZC5cblxuICAgICBUaGUgY2FsbGJhY2tzIHRyaWdnZXJlZCBkdXJpbmcgdGhlIHJlc29sdXRpb24gbG9vcCBtaWdodCByZXNvbHZlIG1vcmVcbiAgICAgcHJvbWlzZXMsIHRyaWdnZXJpbmcgbW9yZSBjYWxsYmFja3MsIGFuZCBzbyBvbi4gVGhpcyBpcyB3aGF0IG1ha2VzIHRoZVxuICAgICByZXNvbHV0aW9uIGxvb3AgYSB7ZSBsb29wfS5cblxuICAgICBMd3QgZ2VuZXJhbGx5IHRyaWVzIHRvIGNhbGwgZWFjaCBjYWxsYmFjayBpbW1lZGlhdGVseS4gSG93ZXZlciwgdGhpcyBjYW5cbiAgICAgbGVhZCB0byBhIHByb2dyZXNzaXZlIGRlZXBlbmluZyBvZiB0aGUgY2FsbCBzdGFjaywgdW50aWwgdGhlcmUgaXMgYSBzdGFja1xuICAgICBvdmVyZmxvdy4gVGhpcyBjYW4ndCBiZSBhdm9pZGVkIGJ5IGRvaW5nIHRhaWwgY2FsbHMsIGJlY2F1c2UgTHd0IGFsd2F5c1xuICAgICBuZWVkcyB0byBkbyBleGNlcHRpb24gaGFuZGxpbmcgYXJvdW5kIGNhbGxiYWNrcyBjYWxsczogZWFjaCBjYWxsYmFjayBjYWxsXG4gICAgIGlzIGZvbGxvd2VkIGJ5IGFuIGV4Y2VwdGlvbiBoYW5kbGVyLiBJbnN0ZWFkLCB3aGF0IEx3dCBkb2VzIGlzIHRyYWNrIHRoZVxuICAgICBjdXJyZW50IGNhbGxiYWNrIGNhbGwgZGVwdGguIE9uY2UgdGhhdCBkZXB0aCByZWFjaGVzIGEgY2VydGFpbiBudW1iZXIsXG4gICAgIFtkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aF0sIGRlZmluZWQgYmVsb3csIGZ1cnRoZXIgY2FsbGJhY2tzXG4gICAgIGFyZSBkZWZlcnJlZCBpbnRvIGEgcXVldWUgaW5zdGVhZC4gVGhhdCBxdWV1ZSBpcyBkcmFpbmVkIHdoZW4gTHd0IGV4aXRzXG4gICAgIGZyb20gdGhlIHRvcC1tb3N0IGNhbGxiYWNrIGNhbGwgdGhhdCB0cmlnZ2VyZWQgdGhlIHJlc29sdXRpb24gbG9vcCBpbiB0aGVcbiAgICAgZmlyc3QgcGxhY2UuXG5cbiAgICAgVG8gZW5zdXJlIHRoYXQgdGhpcyBkZWZlcnJhbCBtZWNoYW5pc20gaXMgYWx3YXlzIHByb3Blcmx5IGludm9rZWQsIGFsbFxuICAgICBjYWxsYmFja3MgY2FsbGVkIGJ5IEx3dCBhcmUgY2FsbGVkIHRocm91Z2ggb25lIG9mIHRocmVlIGZ1bmN0aW9ucyBwcm92aWRlZFxuICAgICBieSB0aGlzIG1vZHVsZTpcblxuICAgICAtIFtyZXNvbHZlXSwgd2hpY2ggY2FsbHMgYWxsIHRoZSBjYWxsYmFja3MgYXNzb2NpYXRlZCB0byBhIHBlbmRpbmcgcHJvbWlzZVxuICAgICAgIChhbmQgcmVzb2x2ZXMgaXQsIGNoYW5naW5nIGl0cyBzdGF0ZSkuXG4gICAgIC0gW3J1bl9jYWxsYmFja3Nfb3JfZGVmZXJfdGhlbV0sIHdoaWNoIGlzIGludGVybmFsbHkgdXNlZCBieSBbcmVzb2x2ZV0gdG9cbiAgICAgICBjYWxsIGNhbGxiYWNrcyB0aGF0IGFyZSBpbiBhIHJlY29yZCBvZiB0eXBlIFsnYSBjYWxsYmFja3NdLCB3aGljaCByZWNvcmRzXG4gICAgICAgYXJlIGFzc29jaWF0ZWQgd2l0aCBwZW5kaW5nIHByb21pc2VzLiBUaGlzIGZ1bmN0aW9uIGlzIGV4cG9zZWQgYmVjYXVzZVxuICAgICAgIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIFtMd3QuY2FuY2VsXSBuZWVkcyB0byBjYWxsIGl0IGRpcmVjdGx5LlxuICAgICAgIFByb21pc2UgcmVzb2x1dGlvbiBhbmQgY2FsbGJhY2sgY2FsbGluZyBhcmUgc2VwYXJhdGVkIGluIGEgdW5pcXVlIHdheSBpblxuICAgICAgIFtjYW5jZWxdLlxuICAgICAtIFtydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRdLCB3aGljaCBpcyB1c2VkIGJ5IFtMd3QuYmluZF0gYW5kIHNpbWlsYXJcbiAgICAgICBmdW5jdGlvbnMgdG8gY2FsbCBzaW5nbGUgY2FsbGJhY2tzIHdoZW4gdGhlIHByb21pc2VzIHBhc3NlZCB0b1xuICAgICAgIFtMd3QuYmluZF0sIGV0Yy4sIGFyZSBhbHJlYWR5IHJlc29sdmVkLlxuXG4gICAgIEN1cnJlbnQgTHd0IGFjdHVhbGx5IGhhcyBhIG1lc3N5IG1peCBvZiBjYWxsYmFjay1jYWxsaW5nIGJlaGF2aW9ycy4gRm9yXG4gICAgIGV4YW1wbGUsIFtMd3QuYmluZF0gaXMgZXhwZWN0ZWQgdG8gYWx3YXlzIGNhbGwgaXRzIGNhbGxiYWNrIGltbWVkaWF0ZWx5LFxuICAgICB3aGlsZSBbTHd0Lndha2V1cF9sYXRlcl0gaXMgZXhwZWN0ZWQgdG8gZGVmZXIgYWxsIGNhbGxiYWNrcyBvZiB0aGUgcHJvbWlzZVxuICAgICByZXNvbHZlZCwge2UgdW5sZXNzfSBMd3QgaXMgbm90IGFscmVhZHkgaW5zaWRlIHRoZSByZXNvbHV0aW9uIGxvb3AuXG5cbiAgICAgV2UgcGxhbm5lZCB0byBtYWtlIHRoZXNlIGJlaGF2aW9ycyB1bmlmb3JtIGluIEx3dCA0LjAuMCwgYnV0IGRlY2lkZWRcbiAgICAgYWdhaW5zdCBpdCBkdWUgdG8gdGhlIHJpc2sgb2YgYnJlYWtpbmcgdXNlcnMuIFNlZVxuXG4gICAgIC0gaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L3B1bGwvNTAwXG4gICAgIC0gaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L3B1bGwvNTE5XG5cbiAgICAgQXMgcGFydCBvZiB0aGUgcHJlcGFyYXRpb24gZm9yIHRoZSBjaGFuZ2UsIHRoZSBhYm92ZSBjYWxsYmFjay1pbnZva2luZ1xuICAgICBmdW5jdGlvbnMgc3VwcG9ydCBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBlbXVsYXRlIHRoZSB2YXJpb3VzXG4gICAgIGJlaGF2aW9ycy4gV2UgZGVjaWRlZCBub3QgdG8gcmVtb3ZlIHRoaXMgbWFjaGluZXJ5LCBiZWNhdXNlIHdlIG1pZ2h0IHdhbnRcbiAgICAgdG8gZXhwb3NlIGRpZmZlcmVudCBBUElzIHRvIEx3dCBpbiB0aGUgZnV0dXJlLlxuXG4gICAgIC0gW35hbGxvd19kZWZlcnJpbmc6ZmFsc2VdIGFsbG93cyBpZ25vcmluZyB0aGUgY2FsbGJhY2sgc3RhY2sgZGVwdGgsIGFuZFxuICAgICAgIGNhbGxpbmcgdGhlIGNhbGxiYWNrcyBpbW1lZGlhdGVseS4gVGhpcyBlbXVsYXRlcyB0aGUgb2xkIHJlc29sdXRpb25cbiAgICAgICBiZWhhdmlvci5cbiAgICAgLSBbfm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aDoxXSBhbGxvd3MgbGltaXRpbmcgdGhlIGRlcHRoIHdoaWNoXG4gICAgICAgdHJpZ2dlcnMgZGVmZXJyYWwgb24gYSBwZXItY2FsbC1zaXRlIGJhc2lzLiBUaGlzIGlzIHVzZWQgYnlcbiAgICAgICBbTHd0Lndha2V1cF9sYXRlcl0uXG4gICAgIC0gW35ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZV0gaXMgbGlrZVxuICAgICAgIFt+YWxsb3dfZGVmZXJyaW5nOmZhbHNlXSwgd2hpY2ggaWdub3JlcyB0aGUgY2FsbGJhY2sgc3RhY2sgZGVwdGguXG4gICAgICAgSG93ZXZlciwgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGxiYWNrIGlzIHRhaWwtY2FsbGVkLCBMd3QgZG9lc24ndCBldmVuXG4gICAgICAgdXBkYXRlIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aCBmb3IgdGhlIGJlbmVmaXQgb2YgKm90aGVyKiBjYWxsYmFja1xuICAgICAgIGNhbGxzLiBJdCBqdXN0IGJsaW5kbHkgY2FsbHMgdGhlIGNhbGxiYWNrLlxuXG4gICAgIFNlZSBkaXNjdXNzaW9uIG9mIGNhbGxiYWNrLWNhbGxpbmcgc2VtYW50aWNzIGluOlxuXG4gICAgICAgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2lzc3Vlcy8zMjlcblxuICAgICAqIENvbnRleHRcblxuICAgICBUaGUgcmVzb2x1dGlvbiBsb29wIGVmZmVjdGl2ZWx5IGhhbmRsZXMgYWxsIHByb21pc2VzIHRoYXQgY2FuIGJlIHJlc29sdmVkXG4gICAgIGltbWVkaWF0ZWx5LCB3aXRob3V0IGJsb2NraW5nIG9uIEkvTy4gQSBjb21wbGV0ZSBwcm9ncmFtIHRoYXQgZG9lcyBJL09cbiAgICAgY2FsbHMgW0x3dF9tYWluLnJ1bl0uIFNlZSBcIk5vIEkvT1wiIGluIHRoZSBPdmVydmlldy4gKilcblxuXG5cbiAgbGV0IGFzeW5jX2V4Y2VwdGlvbl9ob29rID1cbiAgICByZWYgKGZ1biBleG4gLT5cbiAgICAgIHByZXJyX3N0cmluZyBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCI7XG4gICAgICBwcmVycl9zdHJpbmcgKFByaW50ZXhjLnRvX3N0cmluZyBleG4pO1xuICAgICAgcHJlcnJfY2hhciAnXFxuJztcbiAgICAgIFByaW50ZXhjLnByaW50X2JhY2t0cmFjZSBzdGRlcnI7XG4gICAgICBmbHVzaCBzdGRlcnI7XG4gICAgICBleGl0IDIpXG5cbiAgbGV0IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdiA9XG4gICAgKCogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2FyZSBpZiBbZl0gZXZhbHVhdGVzIHRvIGEgcHJvbWlzZS4gSW5cbiAgICAgICBwYXJ0aWN1bGFyLCBpZiBbZiB2XSBldmFsdWF0ZXMgdG8gW3BdIGFuZCBbcF0gaXMgYWxyZWFkeSByZWplY3RlZCBvciB3aWxsXG4gICAgICAgYmUgcmVqZWN0IGxhdGVyLCBpdCBpcyBub3QgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoaXMgZnVuY3Rpb24gdG8gcGFzc1xuICAgICAgIHRoZSBleGNlcHRpb24gdG8gWyFhc3luY19leGNlcHRpb25faG9va10uICopXG4gICAgdHJ5IGYgdlxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAhYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuXG5cblxuXG4gIGV4Y2VwdGlvbiBDYW5jZWxlZFxuXG5cblxuICAoKiBSdW5zIHRoZSBjYWxsYmFja3MgKGZvcm1lcmx5KSBhc3NvY2lhdGVkIHRvIGEgcHJvbWlzZS4gQ2FuY2VsIGNhbGxiYWNrcyBhcmVcbiAgICAgcnVuIGZpcnN0LCBpZiB0aGUgcHJvbWlzZSB3YXMgY2FuY2VsZWQuIFRoZXNlIGFyZSBmb2xsb3dlZCBieSByZWd1bGFyXG4gICAgIGNhbGxiYWNrcy5cblxuICAgICBUaGUgcmVhc29uIGZvciB0aGUgXCJmb3JtZXJseVwiIGlzIHRoYXQgdGhlIHByb21pc2UncyBzdGF0ZSBoYXMgYWxyZWFkeSBiZWVuXG4gICAgIHNldCB0byBbRnVsZmlsbGVkIF9dIG9yIFtSZWplY3RlZCBfXSwgc28gdGhlIGNhbGxiYWNrcyBhcmUgbm8gbG9uZ2VyXG4gICAgIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBwcm9taXNlIHJlZmVyZW5jZS4gVGhpcyBpcyB3aHkgdGhlIGRpcmVjdCBbY2FsbGJhY2tzXVxuICAgICByZWNvcmQgbXVzdCBiZSBnaXZlbiB0byB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgcnVuX2NhbGxiYWNrc1xuICAgICAgKGNhbGxiYWNrcyA6ICdhIGNhbGxiYWNrcylcbiAgICAgIChyZXN1bHQgOiAnYSByZXNvbHZlZF9zdGF0ZSkgOiB1bml0ID1cblxuICAgIGxldCBydW5fY2FuY2VsX2NhbGxiYWNrcyBmcyA9XG4gICAgICBsZXQgcmVjIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0ID1cbiAgICAgICAgbWF0Y2ggZnMgd2l0aFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayAoc3RvcmFnZSwgZikgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpO1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZSAtPlxuICAgICAgICAgIEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZTtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCAoZnMsIGZzJykgLT5cbiAgICAgICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgKGZzJzo6cmVzdClcblxuICAgICAgYW5kIGl0ZXJfbGlzdCByZXN0ID1cbiAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBmczo6cmVzdCAtPiBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdFxuXG4gICAgICBpblxuXG4gICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgW11cbiAgICBpblxuXG4gICAgbGV0IHJ1bl9yZWd1bGFyX2NhbGxiYWNrcyBmcyA9XG4gICAgICBsZXQgcmVjIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0ID1cbiAgICAgICAgbWF0Y2ggZnMgd2l0aFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPlxuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBmIC0+XG4gICAgICAgICAgZiByZXN1bHQ7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tcbiAgICAgICAgICAgIHtjb250ZW50cyA9IE5vbmV9IC0+XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tcbiAgICAgICAgICAgIHtjb250ZW50cyA9IFNvbWUgZn0gLT5cbiAgICAgICAgICBmIHJlc3VsdDtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGZzLCBmcycpIC0+XG4gICAgICAgICAgaXRlcl9jYWxsYmFja19saXN0IGZzIChmcyc6OnJlc3QpXG5cbiAgICAgIGFuZCBpdGVyX2xpc3QgcmVzdCA9XG4gICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgZnM6OnJlc3QgLT4gaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3RcblxuICAgICAgaW5cblxuICAgICAgaXRlcl9jYWxsYmFja19saXN0IGZzIFtdXG4gICAgaW5cblxuICAgICgqIFBhdHRlcm4gbWF0Y2hpbmcgaXMgbXVjaCBmYXN0ZXIgdGhhbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uLiAqKVxuICAgIGxldCBpc19jYW5jZWxlZCA9XG4gICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgfCBSZWplY3RlZCBDYW5jZWxlZCAtPiB0cnVlXG4gICAgICB8IFJlamVjdGVkIF8gLT4gZmFsc2VcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIGlzX2NhbmNlbGVkIHRoZW5cbiAgICAgIHJ1bl9jYW5jZWxfY2FsbGJhY2tzIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzO1xuICAgIHJ1bl9yZWd1bGFyX2NhbGxiYWNrcyBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3NcblxuXG5cbiAgbGV0IGRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoID0gNDJcblxuICBsZXQgY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoID0gcmVmIDBcblxuICB0eXBlIGRlZmVycmVkX2NhbGxiYWNrcyA9XG4gICAgRGVmZXJyZWQgOiAoJ2EgY2FsbGJhY2tzICogJ2EgcmVzb2x2ZWRfc3RhdGUpIC0+IGRlZmVycmVkX2NhbGxiYWNrc1xuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgbGV0IGRlZmVycmVkX2NhbGxiYWNrcyA6IGRlZmVycmVkX2NhbGxiYWNrcyBRdWV1ZS50ID0gUXVldWUuY3JlYXRlICgpXG5cbiAgKCogQmVmb3JlIGVudGVyaW5nIGEgcmVzb2x1dGlvbiBsb29wLCBpdCBpcyBuZWNlc3NhcnkgdG8gdGFrZSBhIHNuYXBzaG90IG9mXG4gICAgIHRoZSBjdXJyZW50IHN0YXRlIG9mIHNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZS4gVGhpcyBpcyBiZWNhdXNlIG1hbnkgb2ZcbiAgICAgdGhlIGNhbGxiYWNrcyB0aGF0IHdpbGwgYmUgcnVuIHdpbGwgbW9kaWZ5IHRoZSBzdG9yYWdlLiBUaGUgc3RvcmFnZSBpc1xuICAgICByZXN0b3JlZCB0byB0aGUgc25hcHNob3Qgd2hlbiB0aGUgcmVzb2x1dGlvbiBsb29wIGlzIGV4aXRlZC4gKilcbiAgbGV0IGVudGVyX3Jlc29sdXRpb25fbG9vcCAoKSA9XG4gICAgY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIDo9ICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggKyAxO1xuICAgIGxldCBzdG9yYWdlX3NuYXBzaG90ID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuICAgIHN0b3JhZ2Vfc25hcHNob3RcblxuICBsZXQgbGVhdmVfcmVzb2x1dGlvbl9sb29wIChzdG9yYWdlX3NuYXBzaG90IDogc3RvcmFnZSkgOiB1bml0ID1cbiAgICBpZiAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoID0gMSB0aGVuIGJlZ2luXG4gICAgICB3aGlsZSBub3QgKFF1ZXVlLmlzX2VtcHR5IGRlZmVycmVkX2NhbGxiYWNrcykgZG9cbiAgICAgICAgbGV0IERlZmVycmVkIChjYWxsYmFja3MsIHJlc3VsdCkgPSBRdWV1ZS5wb3AgZGVmZXJyZWRfY2FsbGJhY2tzIGluXG4gICAgICAgIHJ1bl9jYWxsYmFja3MgY2FsbGJhY2tzIHJlc3VsdFxuICAgICAgZG9uZVxuICAgIGVuZDtcbiAgICBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggOj0gIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCAtIDE7XG4gICAgY3VycmVudF9zdG9yYWdlIDo9IHN0b3JhZ2Vfc25hcHNob3RcblxuICBsZXQgcnVuX2luX3Jlc29sdXRpb25fbG9vcCBmID1cbiAgICBsZXQgc3RvcmFnZV9zbmFwc2hvdCA9IGVudGVyX3Jlc29sdXRpb25fbG9vcCAoKSBpblxuICAgIGxldCByZXN1bHQgPSBmICgpIGluXG4gICAgbGVhdmVfcmVzb2x1dGlvbl9sb29wIHN0b3JhZ2Vfc25hcHNob3Q7XG4gICAgcmVzdWx0XG5cbiAgKCogVGhpcyBpcyBiYXNpY2FsbHkgYSBoYWNrIHRvIGZpeCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvaXNzdWVzLzQ4LlxuICAgICBJZiBjdXJyZW50bHkgcmVzb2x2aW5nIHByb21pc2VzLCBpdCBpbW1lZGlhdGVseSBleGl0cyBhbGwgcmVjdXJzaXZlXG4gICAgIGVudHJpZXMgb2YgdGhlIHJlc29sdXRpb24gbG9vcCwgZ29lcyB0byB0aGUgdG9wIGxldmVsLCBydW5zIGFueSBkZWZlcnJlZFxuICAgICBjYWxsYmFja3MsIGFuZCBleGl0cyB0aGUgdG9wLWxldmVsIHJlc29sdXRpb24gbG9vcC5cblxuICAgICBUaGUgbmFtZSBzaG91bGQgcHJvYmFibHkgYmUgW2FiYW9uZG9uX3Jlc29sdXRpb25fbG9vcF0uICopXG4gIGxldCBhYmFuZG9uX3dha2V1cHMgKCkgPVxuICAgIGlmICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPD4gMCB0aGVuXG4gICAgICBsZWF2ZV9yZXNvbHV0aW9uX2xvb3AgU3RvcmFnZV9tYXAuZW1wdHlcblxuXG5cbiAgbGV0IHJ1bl9jYWxsYmFja3Nfb3JfZGVmZXJfdGhlbVxuICAgICAgPyhhbGxvd19kZWZlcnJpbmcgPSB0cnVlKVxuICAgICAgPyhtYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSBkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aClcbiAgICAgIGNhbGxiYWNrcyByZXN1bHQgPVxuXG4gICAgbGV0IHNob3VsZF9kZWZlciA9XG4gICAgICBhbGxvd19kZWZlcnJpbmdcbiAgICAgICYmICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPj0gbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoXG4gICAgaW5cblxuICAgIGlmIHNob3VsZF9kZWZlciB0aGVuXG4gICAgICBRdWV1ZS5wdXNoIChEZWZlcnJlZCAoY2FsbGJhY2tzLCByZXN1bHQpKSBkZWZlcnJlZF9jYWxsYmFja3NcbiAgICBlbHNlXG4gICAgICBydW5faW5fcmVzb2x1dGlvbl9sb29wIChmdW4gKCkgLT5cbiAgICAgICAgcnVuX2NhbGxiYWNrcyBjYWxsYmFja3MgcmVzdWx0KVxuXG4gIGxldCByZXNvbHZlID9hbGxvd19kZWZlcnJpbmcgP21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCBwIHJlc3VsdCA9XG4gICAgbGV0IFBlbmRpbmcgY2FsbGJhY2tzID0gcC5zdGF0ZSBpblxuICAgIGxldCBwID0gc2V0X3Byb21pc2Vfc3RhdGUgcCByZXN1bHQgaW5cblxuICAgIHJ1bl9jYWxsYmFja3Nfb3JfZGVmZXJfdGhlbVxuICAgICAgP2FsbG93X2RlZmVycmluZyA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoIGNhbGxiYWNrcyByZXN1bHQ7XG5cbiAgICBwXG5cbiAgbGV0IHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgPyhydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGwgPSBmYWxzZSlcbiAgICAgIH5jYWxsYmFjazpmXG4gICAgICB+aWZfZGVmZXJyZWQgPVxuXG4gICAgaWYgcnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsIHRoZW5cbiAgICAgIGYgKClcblxuICAgIGVsc2VcbiAgICAgIGxldCBzaG91bGRfZGVmZXIgPVxuICAgICAgICAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoXG4gICAgICAgICAgPj0gZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICAgIGluXG5cbiAgICAgIGlmIHNob3VsZF9kZWZlciB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBpbW1lZGlhdGVfcmVzdWx0LCBkZWZlcnJlZF9jYWxsYmFjaywgZGVmZXJyZWRfcmVzdWx0ID1cbiAgICAgICAgICBpZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICBsZXQgZGVmZXJyZWRfcmVjb3JkID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICByZWd1bGFyX2NhbGxiYWNrcyA9XG4gICAgICAgICAgICAgIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2tcbiAgICAgICAgICAgICAgICBkZWZlcnJlZF9jYWxsYmFjaztcbiAgICAgICAgICAgIGNhbmNlbF9jYWxsYmFja3MgPSBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eTtcbiAgICAgICAgICAgIGhvd190b19jYW5jZWwgPSBOb3RfY2FuY2VsYWJsZTtcbiAgICAgICAgICAgIGNsZWFudXBzX2RlZmVycmVkID0gMFxuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgUXVldWUucHVzaFxuICAgICAgICAgIChEZWZlcnJlZCAoZGVmZXJyZWRfcmVjb3JkLCBkZWZlcnJlZF9yZXN1bHQpKSBkZWZlcnJlZF9jYWxsYmFja3M7XG4gICAgICAgIGltbWVkaWF0ZV9yZXN1bHRcbiAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBydW5faW5fcmVzb2x1dGlvbl9sb29wIChmdW4gKCkgLT5cbiAgICAgICAgICBmICgpKVxuZW5kXG5pbmNsdWRlIFJlc29sdXRpb25fbG9vcFxuXG5cblxubW9kdWxlIFJlc29sdmluZyA6XG5zaWdcbiAgdmFsIHdha2V1cF9sYXRlcl9yZXN1bHQgOiAnYSB1IC0+ICgnYSwgZXhuKSByZXN1bHQgLT4gdW5pdFxuICB2YWwgd2FrZXVwX2xhdGVyIDogJ2EgdSAtPiAnYSAtPiB1bml0XG4gIHZhbCB3YWtldXBfbGF0ZXJfZXhuIDogXyB1IC0+IGV4biAtPiB1bml0XG5cbiAgdmFsIHdha2V1cF9yZXN1bHQgOiAnYSB1IC0+ICgnYSwgZXhuKSByZXN1bHQgLT4gdW5pdFxuICB2YWwgd2FrZXVwIDogJ2EgdSAtPiAnYSAtPiB1bml0XG4gIHZhbCB3YWtldXBfZXhuIDogXyB1IC0+IGV4biAtPiB1bml0XG5cbiAgdmFsIGNhbmNlbCA6ICdhIHQgLT4gdW5pdFxuZW5kID1cbnN0cnVjdFxuICAoKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkZXZpYXRlcyBmcm9tIHRoZSBcImlkZWFsXCIgY2FsbGJhY2sgZGVmZXJyYWxcbiAgICAgYmVoYXZpb3I6IGl0IHJ1bnMgY2FsbGJhY2tzIGRpcmVjdGx5IG9uIHRoZSBjdXJyZW50IHN0YWNrLiBJdCBzaG91bGRcbiAgICAgdGhlcmVmb3JlIGJlIHBvc3NpYmxlIHRvIGNhdXNlIGEgc3RhY2sgb3ZlcmZsb3cgdXNpbmcgdGhpcyBmdW5jdGlvbi4gKilcbiAgbGV0IHdha2V1cF9nZW5lcmFsIGFwaV9mdW5jdGlvbl9uYW1lIHIgcmVzdWx0ID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Jlc29sdmVyIHIgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBSZWplY3RlZCBDYW5jZWxlZCAtPlxuICAgICAgKClcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcblxuICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICBsZXQgcmVzdWx0ID0gc3RhdGVfb2ZfcmVzdWx0IHJlc3VsdCBpblxuICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9IHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgaWdub3JlIHBcblxuICBsZXQgd2FrZXVwX3Jlc3VsdCByIHJlc3VsdCA9IHdha2V1cF9nZW5lcmFsIFwid2FrZXVwX3Jlc3VsdFwiIHIgcmVzdWx0XG4gIGxldCB3YWtldXAgciB2ID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBcIiByIChPayB2KVxuICBsZXQgd2FrZXVwX2V4biByIGV4biA9IHdha2V1cF9nZW5lcmFsIFwid2FrZXVwX2V4blwiIHIgKEVycm9yIGV4bilcblxuICBsZXQgd2FrZXVwX2xhdGVyX2dlbmVyYWwgYXBpX2Z1bmN0aW9uX25hbWUgciByZXN1bHQgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcmVzb2x2ZXIgciBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+XG4gICAgICAoKVxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCByZXN1bHQgPSBzdGF0ZV9vZl9yZXN1bHQgcmVzdWx0IGluXG4gICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgcmVzb2x2ZSB+bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOjEgcCByZXN1bHQgaW5cbiAgICAgIGlnbm9yZSBwXG5cbiAgbGV0IHdha2V1cF9sYXRlcl9yZXN1bHQgciByZXN1bHQgPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyX3Jlc3VsdFwiIHIgcmVzdWx0XG4gIGxldCB3YWtldXBfbGF0ZXIgciB2ID1cbiAgICB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBcIndha2V1cF9sYXRlclwiIHIgKE9rIHYpXG4gIGxldCB3YWtldXBfbGF0ZXJfZXhuIHIgZXhuID1cbiAgICB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBcIndha2V1cF9sYXRlcl9leG5cIiByIChFcnJvciBleG4pXG5cblxuXG4gIHR5cGUgcGFja2VkX2NhbGxiYWNrcyA9XG4gICAgfCBQYWNrZWQgOiBfIGNhbGxiYWNrcyAtPiBwYWNrZWRfY2FsbGJhY2tzXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICAoKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkZXZpYXRlcyBmcm9tIHRoZSBcImlkZWFsXCIgY2FsbGJhY2sgZGVmZXJyYWxcbiAgICAgYmVoYXZpb3I6IGl0IHJ1bnMgY2FsbGJhY2tzIGRpcmVjdGx5IG9uIHRoZSBjdXJyZW50IHN0YWNrLiBJdCBzaG91bGRcbiAgICAgdGhlcmVmb3JlIGJlIHBvc3NpYmxlIHRvIGNhdXNlIGEgc3RhY2sgb3ZlcmZsb3cgdXNpbmcgdGhpcyBmdW5jdGlvbi4gKilcbiAgbGV0IGNhbmNlbCBwID1cbiAgICBsZXQgY2FuY2VsZWRfcmVzdWx0ID0gUmVqZWN0ZWQgQ2FuY2VsZWQgaW5cblxuICAgICgqIFdhbGtzIHRoZSBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGggYmFja3dhcmRzLCBsb29raW5nIGZvciBjYW5jZWxhYmxlXG4gICAgICAgaW5pdGlhbCBwcm9taXNlcywgYW5kIGNhbmNlbHMgKG9ubHkpIHRoZW0uXG5cbiAgICAgICBGb3VuZCBpbml0aWFsIHByb21pc2VzIGFyZSBjYW5jZWxlZCBpbW1lZGlhdGVseSwgYXMgdGhleSBhcmUgZm91bmQsIGJ5XG4gICAgICAgc2V0dGluZyB0aGVpciBzdGF0ZSB0byBbUmVqZWN0ZWQgQ2FuY2VsZWRdLiBUaGlzIGlzIHRvIHByZXZlbnQgdGhlbSBmcm9tXG4gICAgICAgYmVpbmcgXCJmb3VuZCB0d2ljZVwiIGlmIHRoZXkgYXJlIHJlYWNoYWJsZSBieSB0d28gb3IgbW9yZSBkaXN0aW5jdCBwYXRoc1xuICAgICAgIHRocm91Z2ggdGhlIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaC5cblxuICAgICAgIFRoZSBjYWxsYmFja3Mgb2YgdGhlc2UgaW5pdGlhbCBwcm9taXNlcyBhcmUgdGhlbiBydW4sIGluIGEgc2VwYXJhdGVcbiAgICAgICBwaGFzZS4gVGhlc2UgY2FsbGJhY2tzIHByb3BhZ2F0ZSBjYW5jZWxsYXRpb24gZm9yd2FyZHMgdG8gYW55IGRlcGVuZGVudFxuICAgICAgIHByb21pc2VzLiBTZWUgXCJDYW5jZWxsYXRpb25cIiBpbiB0aGUgT3ZlcnZpZXcuICopXG4gICAgbGV0IHByb3BhZ2F0ZV9jYW5jZWwgOiAoXywgXywgXykgcHJvbWlzZSAtPiBwYWNrZWRfY2FsbGJhY2tzIGxpc3QgPVxuICAgICAgICBmdW4gcCAtPlxuICAgICAgbGV0IHJlYyBjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIDpcbiAgICAgICAgICAnYSAndSAnYy4gcGFja2VkX2NhbGxiYWNrcyBsaXN0IC0+ICgnYSwgJ3UsICdjKSBwcm9taXNlIC0+XG4gICAgICAgICAgICBwYWNrZWRfY2FsbGJhY2tzIGxpc3QgPVxuICAgICAgICAgIGZ1biAodHlwZSBjKSBjYWxsYmFja3NfYWNjdW11bGF0b3IgKHAgOiAoXywgXywgYykgcHJvbWlzZSkgLT5cblxuICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICAgICAgKCogSWYgdGhlIHByb21pc2UgaXMgbm90IHN0aWxsIHBlbmRpbmcsIGl0IGNhbid0IGJlIGNhbmNlbGVkLiAqKVxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgY2FsbGJhY2tzX2FjY3VtdWxhdG9yXG4gICAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICAgIGNhbGxiYWNrc19hY2N1bXVsYXRvclxuXG4gICAgICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT5cbiAgICAgICAgICBtYXRjaCBjYWxsYmFja3MuaG93X3RvX2NhbmNlbCB3aXRoXG4gICAgICAgICAgfCBOb3RfY2FuY2VsYWJsZSAtPlxuICAgICAgICAgICAgY2FsbGJhY2tzX2FjY3VtdWxhdG9yXG4gICAgICAgICAgfCBDYW5jZWxfdGhpc19wcm9taXNlIC0+XG4gICAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICAgICAgc2V0X3Byb21pc2Vfc3RhdGUgcCBjYW5jZWxlZF9yZXN1bHQgaW5cbiAgICAgICAgICAgIGlnbm9yZSBwO1xuICAgICAgICAgICAgKFBhY2tlZCBjYWxsYmFja3MpOjpjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHAnIC0+XG4gICAgICAgICAgICBjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIGNhbGxiYWNrc19hY2N1bXVsYXRvciBwJ1xuICAgICAgICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCBjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIGNhbGxiYWNrc19hY2N1bXVsYXRvciBwc1xuICAgICAgaW5cbiAgICAgIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgW10gcFxuICAgIGluXG5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBjYWxsYmFja3MgPSBwcm9wYWdhdGVfY2FuY2VsIHAgaW5cblxuICAgIGNhbGxiYWNrcyB8PiBMaXN0Lml0ZXIgKGZ1biAoUGFja2VkIGNhbGxiYWNrcykgLT5cbiAgICAgIHJ1bl9jYWxsYmFja3Nfb3JfZGVmZXJfdGhlbVxuICAgICAgICB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIGNhbGxiYWNrcyBjYW5jZWxlZF9yZXN1bHQpXG5lbmRcbmluY2x1ZGUgUmVzb2x2aW5nXG5cblxuXG5tb2R1bGUgVHJpdmlhbF9wcm9taXNlcyA6XG5zaWdcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgdmFsIGZhaWwgOiBleG4gLT4gXyB0XG4gIHZhbCBvZl9yZXN1bHQgOiAoJ2EsIGV4bikgcmVzdWx0IC0+ICdhIHRcblxuICB2YWwgcmV0dXJuX3VuaXQgOiB1bml0IHRcbiAgdmFsIHJldHVybl90cnVlIDogYm9vbCB0XG4gIHZhbCByZXR1cm5fZmFsc2UgOiBib29sIHRcbiAgdmFsIHJldHVybl9ub25lIDogXyBvcHRpb24gdFxuICB2YWwgcmV0dXJuX3NvbWUgOiAnYSAtPiAnYSBvcHRpb24gdFxuICB2YWwgcmV0dXJuX29rIDogJ2EgLT4gKCdhLCBfKSByZXN1bHQgdFxuICB2YWwgcmV0dXJuX2Vycm9yIDogJ2UgLT4gKF8sICdlKSByZXN1bHQgdFxuICB2YWwgcmV0dXJuX25pbCA6IF8gbGlzdCB0XG5cbiAgdmFsIGZhaWxfd2l0aCA6IHN0cmluZyAtPiBfIHRcbiAgdmFsIGZhaWxfaW52YWxpZF9hcmcgOiBzdHJpbmcgLT4gXyB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCByZXR1cm4gdiA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gRnVsZmlsbGVkIHZ9XG5cbiAgbGV0IG9mX3Jlc3VsdCByZXN1bHQgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHN0YXRlX29mX3Jlc3VsdCByZXN1bHR9XG5cbiAgbGV0IGZhaWwgZXhuID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBSZWplY3RlZCBleG59XG5cbiAgbGV0IHJldHVybl91bml0ID0gcmV0dXJuICgpXG4gIGxldCByZXR1cm5fbm9uZSA9IHJldHVybiBOb25lXG4gIGxldCByZXR1cm5fc29tZSB4ID0gcmV0dXJuIChTb21lIHgpXG4gIGxldCByZXR1cm5fbmlsID0gcmV0dXJuIFtdXG4gIGxldCByZXR1cm5fdHJ1ZSA9IHJldHVybiB0cnVlXG4gIGxldCByZXR1cm5fZmFsc2UgPSByZXR1cm4gZmFsc2VcbiAgbGV0IHJldHVybl9vayB4ID0gcmV0dXJuIChPayB4KVxuICBsZXQgcmV0dXJuX2Vycm9yIHggPSByZXR1cm4gKEVycm9yIHgpXG5cbiAgbGV0IGZhaWxfd2l0aCBtc2cgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChGYWlsdXJlIG1zZyl9XG5cbiAgbGV0IGZhaWxfaW52YWxpZF9hcmcgbXNnID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBSZWplY3RlZCAoSW52YWxpZF9hcmd1bWVudCBtc2cpfVxuZW5kXG5pbmNsdWRlIFRyaXZpYWxfcHJvbWlzZXNcblxuXG5cbm1vZHVsZSBQZW5kaW5nX3Byb21pc2VzIDpcbnNpZ1xuICAoKiBJbnRlcm5hbCAqKVxuICB2YWwgbmV3X3BlbmRpbmcgOlxuICAgIGhvd190b19jYW5jZWw6aG93X3RvX2NhbmNlbCAtPiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2VcbiAgdmFsIHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCA6IF8gdCBsaXN0IC0+IGhvd190b19jYW5jZWxcblxuICAoKiBJbml0aWFsIHBlbmRpbmcgcHJvbWlzZXMgKHB1YmxpYykgKilcbiAgdmFsIHdhaXQgOiB1bml0IC0+ICdhIHQgKiAnYSB1XG4gIHZhbCB0YXNrIDogdW5pdCAtPiAnYSB0ICogJ2EgdVxuXG4gIHZhbCBhZGRfdGFza19yIDogJ2EgdSBMd3Rfc2VxdWVuY2UudCAtPiAnYSB0XG4gIHZhbCBhZGRfdGFza19sIDogJ2EgdSBMd3Rfc2VxdWVuY2UudCAtPiAnYSB0XG5cbiAgdmFsIHByb3RlY3RlZCA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgbm9fY2FuY2VsIDogJ2EgdCAtPiAnYSB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbCA9XG4gICAgbGV0IHN0YXRlID1cbiAgICAgIFBlbmRpbmcge1xuICAgICAgICByZWd1bGFyX2NhbGxiYWNrcyA9IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eTtcbiAgICAgICAgY2FuY2VsX2NhbGxiYWNrcyA9IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICBob3dfdG9fY2FuY2VsO1xuICAgICAgICBjbGVhbnVwc19kZWZlcnJlZCA9IDA7XG4gICAgICB9XG4gICAgaW5cbiAgICB7c3RhdGV9XG5cbiAgbGV0IHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcyA9XG4gICAgKCogVXNpbmcgYSBkaXJ0eSBjYXN0IGhlcmUgdG8gYXZvaWQgcmVidWlsZGluZyB0aGUgbGlzdCA6KCBOb3QgYm90aGVyaW5nXG4gICAgICAgd2l0aCB0aGUgaW52YXJpYW50cywgYmVjYXVzZSBbUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsXSBwYWNrcyB0aGVtLFxuICAgICAgIGFuZCBjb2RlIHRoYXQgbWF0Y2hlcyBvbiBbUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsXSBkb2Vzbid0IGNhcmUgYWJvdXRcbiAgICAgICB0aGVtIGFueXdheS4gKilcbiAgICBsZXQgY2FzdF9wcm9taXNlX2xpc3QgOiAnYSB0IGxpc3QgLT4gKCdhLCBfLCBfKSBwcm9taXNlIGxpc3QgPSBPYmoubWFnaWMgaW5cbiAgICBQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgKGNhc3RfcHJvbWlzZV9saXN0IHBzKVxuXG5cblxuICBsZXQgd2FpdCAoKSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpOb3RfY2FuY2VsYWJsZSBpblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHAsIHRvX3B1YmxpY19yZXNvbHZlciBwXG5cbiAgbGV0IHRhc2sgKCkgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHAsIHRvX3B1YmxpY19yZXNvbHZlciBwXG5cblxuXG5cbiAgbGV0IGNhc3Rfc2VxdWVuY2Vfbm9kZVxuICAgICAgKG5vZGUgOiAnYSB1IEx3dF9zZXF1ZW5jZS5ub2RlKVxuICAgICAgKF9hY3R1YWxfY29udGVudDooJ2EsICd1LCAnYykgcHJvbWlzZSlcbiAgICAgICAgOiAoJ2EsICd1LCAnYykgcHJvbWlzZSBMd3Rfc2VxdWVuY2Uubm9kZSA9XG4gICAgT2JqLm1hZ2ljIG5vZGVcblxuICBsZXQgYWRkX3Rhc2tfciBzZXF1ZW5jZSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG4gICAgbGV0IG5vZGUgPSBMd3Rfc2VxdWVuY2UuYWRkX3IgKHRvX3B1YmxpY19yZXNvbHZlciBwKSBzZXF1ZW5jZSBpblxuICAgIGxldCBub2RlID0gY2FzdF9zZXF1ZW5jZV9ub2RlIG5vZGUgcCBpblxuXG4gICAgbGV0IFBlbmRpbmcgY2FsbGJhY2tzID0gcC5zdGF0ZSBpblxuICAgIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIDwtXG4gICAgICBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlO1xuXG4gICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gIGxldCBhZGRfdGFza19sIHNlcXVlbmNlID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfbCAodG9fcHVibGljX3Jlc29sdmVyIHApIHNlcXVlbmNlIGluXG4gICAgbGV0IG5vZGUgPSBjYXN0X3NlcXVlbmNlX25vZGUgbm9kZSBwIGluXG5cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGU7XG5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cblxuXG4gIGxldCBwcm90ZWN0ZWQgcCA9XG4gICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiBwXG4gICAgfCBSZWplY3RlZCBfIC0+IHBcblxuICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICBsZXQgcCcgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcgPSBtYXlfbm93X2JlX3Byb3h5IHAnIGluXG4gICAgICAgIGxldCBwJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgICAgKCogSW4gdGhpcyBjYWxsYmFjaywgW3AnXSB3aWxsIGVpdGhlciBzdGlsbCBpdHNlbGYgYmUgcGVuZGluZywgb3IgaXRcbiAgICAgICAgICAgd2lsbCBoYXZlIGJlY29tZSBhIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlIHJlYXNvbmluZyBmb3JcbiAgICAgICAgICAgdGhpcyBpcyBhbG1vc3QgdGhlIHNhbWUgYXMgaW4gdGhlIGNvbW1lbnQgYXQgW21heV9ub3dfYmVfcHJveHldLiBUaGVcbiAgICAgICAgICAgZGlmZmVyZW5jZXMgYXJlOlxuXG4gICAgICAgICAgIC0gW3AnXSAqaXMqIGFuIGluaXRpYWwgcHJvbWlzZSwgc28gaXQgKmNhbiogZ2V0IGNhbmNlbGVkLiBIb3dldmVyLCBpZlxuICAgICAgICAgICAgIGl0IGRvZXMsIHRoZSBbb25fY2FuY2VsXSBoYW5kbGVyIGluc3RhbGxlZCBiZWxvdyB3aWxsIHJlbW92ZSB0aGlzXG4gICAgICAgICAgICAgY2FsbGJhY2suXG4gICAgICAgICAgIC0gW3AnXSBuZXZlciBnZXRzIHBhc3NlZCB0byBbbWFrZV9pbnRvX3Byb3h5XSwgdGhlIG9ubHkgZWZmZWN0IG9mXG4gICAgICAgICAgICAgd2hpY2ggaXMgdGhhdCBpdCBjYW5ub3QgYmUgdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBvZiBhbm90aGVyXG4gICAgICAgICAgICAgKHByb3h5KSBwcm9taXNlLiBTbywgW3AnXSBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGhlYWQgb2YgYSBjaGFpbiBvZlxuICAgICAgICAgICAgIFtQcm94eSBfXSBsaW5rcywgYW5kIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byB3b3JyeSBhYm91dCB3aGV0aGVyIHRoZVxuICAgICAgICAgICAgIGluZHVjdGl2ZSByZWFzb25pbmcgYXQgW21heV9ub3dfYmVfcHJveHldIGFwcGxpZXMuICopXG5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJyBwX3Jlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcCdcbiAgICAgIGluXG5cbiAgICAgIGxldCByZW1vdmVfdGhlX2NhbGxiYWNrID1cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX3JlbW92ZV9mdW5jdGlvblxuICAgICAgICAgIFtwXSBjYWxsYmFja1xuICAgICAgaW5cblxuICAgICAgbGV0IFBlbmRpbmcgcCdfY2FsbGJhY2tzID0gcCcuc3RhdGUgaW5cbiAgICAgIGFkZF9jYW5jZWxfY2FsbGJhY2sgcCdfY2FsbGJhY2tzIHJlbW92ZV90aGVfY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHAnXG5cbiAgbGV0IG5vX2NhbmNlbCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IHBcbiAgICB8IFJlamVjdGVkIF8gLT4gcFxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgcCcgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpOb3RfY2FuY2VsYWJsZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnID0gbWF5X25vd19iZV9wcm94eSBwJyBpblxuICAgICAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICAgICgqIEluIHRoaXMgY2FsbGJhY2ssIFtwJ10gd2lsbCBlaXRoZXIgc3RpbGwgaXRzZWxmIGJlIHBlbmRpbmcsIG9yIGl0XG4gICAgICAgICAgIHdpbGwgaGF2ZSBiZWNvbWUgYSBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuIFRoZSByZWFzb25pbmcgZm9yXG4gICAgICAgICAgIHRoaXMgaXMgYXMgaW4gW3Byb3RlY3RlZF0gYW5kIFttYXlfbm93X2JlX3Byb3h5XSwgYnV0IGV2ZW4gc2ltcGxlcixcbiAgICAgICAgICAgYmVjYXVzZSBbcCddIGlzIG5vdCBjYW5jZWxhYmxlLiAqKVxuXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcgcF9yZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHAnXG4gICAgICBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcCdcbmVuZFxuaW5jbHVkZSBQZW5kaW5nX3Byb21pc2VzXG5cblxuXG5tb2R1bGUgU2VxdWVudGlhbF9jb21wb3NpdGlvbiA6XG5zaWdcbiAgKCogTWFpbiBpbnRlcmZhY2UgKHB1YmxpYykgKilcbiAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCBtYXAgOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICBleHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG4gIHZhbCBjYXRjaCA6ICh1bml0IC0+ICdhIHQpIC0+IChleG4gLT4gJ2EgdCkgLT4gJ2EgdFxuICB2YWwgZmluYWxpemUgOiAodW5pdCAtPiAnYSB0KSAtPiAodW5pdCAtPiB1bml0IHQpIC0+ICdhIHRcbiAgdmFsIHRyeV9iaW5kIDogKHVuaXQgLT4gJ2EgdCkgLT4gKCdhIC0+ICdiIHQpIC0+IChleG4gLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICgqIENhbmNlbCBjYWxsYmFja3MgKHB1YmxpYykuICopXG4gIHZhbCBvbl9jYW5jZWwgOiAnYSB0IC0+ICh1bml0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiBOb24tcHJvbWlzZSBjYWxsYmFja3MgKHB1YmxpYykgKilcbiAgdmFsIG9uX3N1Y2Nlc3MgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl9mYWlsdXJlIDogXyB0IC0+IChleG4gLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgb25fdGVybWluYXRpb24gOiBfIHQgLT4gKHVuaXQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgb25fYW55IDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCogQmFja3RyYWNlIHN1cHBvcnQgKGludGVybmFsOyBmb3IgdXNlIGJ5IHRoZSBQUFgpICopXG4gIHZhbCBiYWNrdHJhY2VfYmluZCA6XG4gICAgKGV4biAtPiBleG4pIC0+ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIGJhY2t0cmFjZV9jYXRjaCA6XG4gICAgKGV4biAtPiBleG4pIC0+ICh1bml0IC0+ICdhIHQpIC0+IChleG4gLT4gJ2EgdCkgLT4gJ2EgdFxuICB2YWwgYmFja3RyYWNlX2ZpbmFsaXplIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gKHVuaXQgLT4gJ2EgdCkgLT4gKHVuaXQgLT4gdW5pdCB0KSAtPiAnYSB0XG4gIHZhbCBiYWNrdHJhY2VfdHJ5X2JpbmQgOlxuICAgIChleG4gLT4gZXhuKSAtPiAodW5pdCAtPiAnYSB0KSAtPiAoJ2EgLT4gJ2IgdCkgLT4gKGV4biAtPiAnYiB0KSAtPiAnYiB0XG5lbmQgPVxuc3RydWN0XG4gICgqIFRoZXJlIGFyZSBmaXZlIHByaW1hcnkgc2VxdWVudGlhbCBjb21wb3NpdGlvbiBmdW5jdGlvbnM6IFtiaW5kXSwgW21hcF0sXG4gICAgIFtjYXRjaF0sIFtmaW5hbGl6ZV0sIGFuZCBbdHJ5X2JpbmRdLiBPZiB0aGVzZSwgW3RyeV9iaW5kXSBpcyB0aGUgbW9zdFxuICAgICBnZW5lcmFsIC0tIGFsbCB0aGUgb3RoZXJzIGNhbiBiZSBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBpdC5cblxuICAgICBMd3QgY29uZmxhdGVzIGNvbmN1cnJlbmN5IHdpdGggZXJyb3IgcHJvcGFnYXRpb24uIElmIEx3dCBkaWQgbm90IGRvIHRoaXMsXG4gICAgIHRoZXJlIHdvdWxkIGJlIG9ubHkgdHdvIHByaW1hcnkgZnVuY3Rpb25zOiBbYmluZF0gYW5kIFttYXBdLCBhbmQsIG9mIHRoZXNlXG4gICAgIHR3bywgW2JpbmRdIGlzIHRoZSBtb3N0IGdlbmVyYWwuIFNpbmNlIFtiaW5kXSBpcyB0aGUgbW9zdCByZWxldmFudFxuICAgICBzcGVjaWZpY2FsbHkgdG8gY29uY3VycmVuY3ksIGFuZCBpcyBhbHNvIHRoZSBtb3N0IGZhbWlsaWFyIGZ1bmN0aW9uIGluIEx3dCxcbiAgICAgaXRzIGltcGxlbWVudGF0aW9uIHNlcnZlcyBhcyBhIGtpbmQgb2YgXCJtb2RlbFwiIGZvciB0aGUgcmVzdC4gSXQgaXMgdGhlIG1vc3RcbiAgICAgY29tbWVudGVkLCBhbmQgYWxsIHRoZSBvdGhlciBmdW5jdGlvbnMgZm9sbG93IGEgc2ltaWxhciBwYXR0ZXJuIHRvIFtiaW5kXS5cblxuICAgICBGb3VyIG9mIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBoYXZlIFtiYWNrdHJhY2VfKl0gdmVyc2lvbnMsIHdoaWNoIGFyZSBub3RcbiAgICAgdHJ1bHkgcHVibGljLCBhbmQgZXhpc3QgdG8gc3VwcG9ydCB0aGUgUFBYLiBbYmFja3RyYWNlX21hcF0gZG9lcyBub3QgZXhpc3RcbiAgICAgYmVjYXVzZSB0aGUgUFBYIGRvZXMgbm90IG5lZWQgaXQuXG5cbiAgICAgVGhlIHJlbWFpbmluZyBmb3VyIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYXR0YWNoIFwibG93ZXItbGV2ZWwtaXNoXCJcbiAgICAgbm9uLXByb21pc2UtcHJvZHVjaW5nIGNhbGxiYWNrcyB0byBwcm9taXNlczogdGhlc2UgYXJlIHRoZSBbb25fKl1cbiAgICAgZnVuY3Rpb25zLiBPZiB0aGVzZSwgW29uX2FueV0gaXMgdGhlIG1vc3QgZ2VuZXJhbC4gSWYgTHd0IGRpZCBub3QgY29uZmxhdGVcbiAgICAgY29uY3VycmVuY3kgd2l0aCBlcnJvciBoYW5kbGluZywgdGhlcmUgd291bGQgb25seSBiZSBvbmU6IFtvbl9zdWNjZXNzXS4gKilcblxuXG5cbiAgKCogTWFrZXMgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIGludG8gYSBwcm94eSBvZiBbfm91dGVyX3Byb21pc2VdLiBBZnRlclxuICAgICBbbWFrZV9pbnRvX3Byb3h5XSwgdGhlc2UgdHdvIHByb21pc2UgcmVmZXJlbmNlcyBcImJlaGF2ZSBpZGVudGljYWxseS5cIlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBzeW1tZXRyaWM6IFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIGFsd2F5cyBiZWNvbWVzIHRoZVxuICAgICBwcm94eS4gW21ha2VfaW50b19wcm94eV0gaXMgY2FsbGVkIG9ubHkgYnkgW2JpbmRdIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpblxuICAgICB0aGlzIG1vZHVsZS4gVGhpcyBtZWFucyB0aGF0OlxuXG4gICAgIC0gdGhlIG9ubHkgd2F5IGZvciBhIHByb21pc2UgdG8gYmVjb21lIGEgcHJveHkgaXMgYnkgYmVpbmcgcmV0dXJuZWQgZnJvbVxuICAgICAgIHRoZSBjYWxsYmFjayBnaXZlbiBieSB0aGUgdXNlciB0byBbYmluZF0sIG9yIGEgc2ltaWxhciBmdW5jdGlvbiwgYW5kXG4gICAgIC0gdGhlIG9ubHkgd2F5IGZvciBhIHByb21pc2UgdG8gYmVjb21lIHVuZGVybHlpbmcgZm9yIGEgcHJvbWlzZSBvdGhlciB0aGFuXG4gICAgICAgaXRzZWxmIGlzIHRvIGJlIHRoZSBvdXRlciBwcm9taXNlIG9yaWdpbmFsbHkgcmV0dXJuZWQgdG8gdGhlIHVzZXIgZnJvbVxuICAgICAgIFtiaW5kXSwgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uLlxuXG4gICAgIFRoZXNlIHR3byBmYWN0cyBhcmUgaW1wb3J0YW50IGZvciByZWFzb25pbmcgYWJvdXQgaG93IGFuZCB3aGljaCBwcm9taXNlc1xuICAgICBjYW4gYmVjb21lIHByb3hpZXMsIHVuZGVybHlpbmcsIGV0Yy47IGluIHBhcnRpY3VsYXIsIGl0IGlzIHVzZWQgaW4gdGhlXG4gICAgIGFyZ3VtZW50IGluIFttYXlfbm93X2JlX3Byb3h5XSBmb3IgY29ycmVjdCBwcmVkaWN0aW9ucyBhYm91dCBzdGF0ZSBjaGFuZ2VzLlxuXG4gICAgIFt+b3V0ZXJfcHJvbWlzZV0gaXMgYWx3YXlzIGEgcGVuZGluZyBwcm9taXNlIHdoZW4gW21ha2VfaW50b19wcm94eV0gaXNcbiAgICAgY2FsbGVkOyBmb3IgdGhlIGV4cGxhbmF0aW9uLCBzZWUgW21heV9ub3dfYmVfcHJveHldICh0aG91Z2ggdGhlIGNhbGxlciBvZlxuICAgICBbbWFrZV9pbnRvX3Byb3h5XSBhbHdheXMgY2FsbHMgW3VuZGVybHlpbmddIGZpcnN0IHRvIHBhc3MgdGhlIHVuZGVybHlpbmdcbiAgICAgcGVuZGluZyBwcm9taXNlIHRvIFttYWtlX2ludG9fcHJveHldKS5cblxuICAgICBUaGUgcmVhc29ucyBwcm94eWluZyBpcyB1c2VkLCBpbnN0ZWFkIG9mIGFkZGluZyBhIGNhbGxiYWNrIHRvXG4gICAgIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSB0byByZXNvbHZlIFt+b3V0ZXJfcHJvbWlzZV0gd2hlbiB0aGUgZm9ybWVyXG4gICAgIGJlY29tZXMgcmVzb2x2ZWQgcHJvYmFibHkgYXJlOlxuXG4gICAgIC0gUHJvbWlzZXMgaGF2ZSBtb3JlIGJlaGF2aW9ycyB0aGFuIHJlc29sdXRpb24uIE9uZSB3b3VsZCBoYXZlIHRvIGFkZCBhXG4gICAgICAgY2FuY2VsbGF0aW9uIGhhbmRsZXIgdG8gW35vdXRlcl9wcm9taXNlXSB0byBwcm9wYWdhdGUgdGhlIGNhbmNlbGxhdGlvblxuICAgICAgIGJhY2sgdG8gW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdLCBmb3IgZXhhbXBsZS4gSXQgbWF5IGJlIGVhc2llciB0byBqdXN0XG4gICAgICAgdGhpbmsgb2YgdGhlbSBhcyB0aGUgc2FtZSBwcm9taXNlLlxuICAgICAtIElmIHVzaW5nIGNhbGxiYWNrcywgcmVzb2x2aW5nIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSB3b3VsZCBub3RcbiAgICAgICBpbW1lZGlhdGVseSByZXNvbHZlIFt+b3V0ZXJfcHJvbWlzZV0uIEFub3RoZXIgY2FsbGJhY2sgYWRkZWQgdG9cbiAgICAgICBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gbWlnaHQgc2VlIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSByZXNvbHZlZCxcbiAgICAgICBidXQgW35vdXRlcl9wcm9taXNlXSBzdGlsbCBwZW5kaW5nLCBkZXBlbmRpbmcgb24gdGhlIG9yZGVyIGluIHdoaWNoXG4gICAgICAgY2FsbGJhY2tzIGFyZSBydW4uICopXG4gIGxldCBtYWtlX2ludG9fcHJveHlcbiAgICAgICh0eXBlIGMpXG4gICAgICB+KG91dGVyX3Byb21pc2UgOiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UpXG4gICAgICB+KHVzZXJfcHJvdmlkZWRfcHJvbWlzZSA6ICgnYSwgXywgYykgcHJvbWlzZSlcbiAgICAgICAgOiAoJ2EsIHVuZGVybHlpbmcsIGMpIHN0YXRlX2NoYW5nZWQgPVxuXG4gICAgKCogVXNpbmcgW3AnXSBhcyBpdCdzIHRoZSBuYW1lIHVzZWQgaW5zaWRlIFtiaW5kXSwgZXRjLiwgZm9yIHByb21pc2VzIHdpdGhcbiAgICAgICB0aGlzIHJvbGUgLS0gW3AnXSBpcyB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdXNlcidzIGZ1bmN0aW9uLiAqKVxuICAgIGxldCBwJyA9IHVuZGVybHlpbmcgdXNlcl9wcm92aWRlZF9wcm9taXNlIGluXG5cbiAgICBpZiBpZGVudGljYWwgcCcgb3V0ZXJfcHJvbWlzZSB0aGVuXG4gICAgICBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnXG4gICAgICAoKiBXZSByZWFsbHkgd2FudCB0byByZXR1cm4gW1N0YXRlX21heV9oYXZlX2NoYW5nZWQgb3V0ZXJfcHJvbWlzZV0sIGJ1dFxuICAgICAgICAgdGhlIHJlZmVyZW5jZSB0aHJvdWdoIFtwJ10gaGFzIHRoZSByaWdodCB0eXBlLiAqKVxuXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcCcuc3RhdGUgd2l0aFxuICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2Ugb3V0ZXJfcHJvbWlzZSBwJy5zdGF0ZVxuICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBvdXRlcl9wcm9taXNlIHAnLnN0YXRlXG5cbiAgICAgIHwgUGVuZGluZyBwJ19jYWxsYmFja3MgLT5cbiAgICAgICAgbGV0IFBlbmRpbmcgb3V0ZXJfY2FsbGJhY2tzID0gb3V0ZXJfcHJvbWlzZS5zdGF0ZSBpblxuXG4gICAgICAgIG1lcmdlX2NhbGxiYWNrcyB+ZnJvbTpwJ19jYWxsYmFja3MgfmludG86b3V0ZXJfY2FsbGJhY2tzO1xuICAgICAgICBvdXRlcl9jYWxsYmFja3MuaG93X3RvX2NhbmNlbCA8LSBwJ19jYWxsYmFja3MuaG93X3RvX2NhbmNlbDtcblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgc2V0X3Byb21pc2Vfc3RhdGUgcCcgKFByb3h5IG91dGVyX3Byb21pc2UpIGluXG4gICAgICAgIGlnbm9yZSBwJztcblxuICAgICAgICBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG91dGVyX3Byb21pc2VcbiAgICAgICAgKCogVGhlIHN0YXRlIGhhc24ndCBhY3R1YWxseSBjaGFuZ2VkLCBidXQgd2Ugc3RpbGwgaGF2ZSB0byB3cmFwXG4gICAgICAgICAgIFtvdXRlcl9wcm9taXNlXSBmb3IgdHlwZSBjaGVja2luZy4gKilcblxuICAgICAgICAoKiBUaGUgc3RhdGUgb2YgW3AnXSBtYXkgaW5zdGVhZCBoYXZlIGNoYW5nZWQgLS0gaXQgbWF5IGhhdmUgYmVjb21lIGFcbiAgICAgICAgICAgcHJveHkuIEhvd2V2ZXIsIGNhbGxlcnMgb2YgW21ha2VfaW50b19wcm94eV0gZG9uJ3Qga25vdyBpZlxuICAgICAgICAgICBbdXNlcl9wcm92aWRlZF9wcm9taXNlXSB3YXMgYSBwcm94eSBvciBub3QgKHRoYXQncyB3aHkgd2UgY2FsbFxuICAgICAgICAgICB1bmRlcmx5aW5nIG9uIGl0IGF0IHRoZSB0b3Agb2YgdGhpcyBmdW5jdGlvbiwgdG8gZ2V0IFtwJ10pLiBXZSBjYW5cbiAgICAgICAgICAgdGhlcmVmb3JlIHRha2UgYSBkYW5nZXJvdXMgc2hvcnRjdXQgYW5kIG5vdCBib3RoZXIgcmV0dXJuaW5nIGEgbmV3XG4gICAgICAgICAgIHJlZmVyZW5jZSB0byBbdXNlcl9wcm92aWRlZF9wcm9taXNlXSBmb3Igc2hhZG93aW5nLiAqKVxuXG5cblxuICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogYSBsb3Qgb2YgdGhlIGNvZGUgYmVsb3cgY2FuIHByb2JhYmx5IGJlIGRlZHVwbGljYXRlZCBpblxuICAgICBzb21lIHdheSwgZXNwZWNpYWxseSBpZiBhc3N1bWluZyBGbGFtYmRhLiAqKVxuXG4gIGxldCBiaW5kIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgKCogSW4gY2FzZSBbTHd0LmJpbmRdIG5lZWRzIHRvIGRlZmVyIHRoZSBjYWxsIHRvIFtmXSwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlXG4gICAgICAgY2FsbGVkIHRvIGNyZWF0ZTpcblxuICAgICAgIDEuIFRoZSBwcm9taXNlLCBbcCcnXSwgdGhhdCBtdXN0IGJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgaW1tZWRpYXRlbHkuXG4gICAgICAgMi4gVGhlIGNhbGxiYWNrIHRoYXQgcmVzb2x2ZXMgW3AnJ10uXG5cbiAgICAgICBbTHd0LmJpbmRdIGRlZmVycyB0aGUgY2FsbCB0byBbZl0gaW4gdHdvIGNpcmN1bXN0YW5jZXM6XG5cbiAgICAgICAxLiBUaGUgcHJvbWlzZSBbcF0gaXMgcGVuZGluZy5cbiAgICAgICAyLiBUaGUgcHJvbWlzZSBbcF0gaXMgZnVsZmlsbGVkLCBidXQgdGhlIGN1cnJlbnQgY2FsbGJhY2sgY2FsbCBuZXN0aW5nXG4gICAgICAgICAgZGVwdGggaXMgc3VjaCB0aGF0IHRoZSBjYWxsIHRvIFtmXSBtdXN0IGdvIGludG8gdGhlIGNhbGxiYWNrIHF1ZXVlLCBpblxuICAgICAgICAgIG9yZGVyIHRvIGF2b2lkIHN0YWNrIG92ZXJmbG93LlxuXG4gICAgICBNZWNoYW5pc20gKDIpIGlzIGN1cnJlbnRseSBkaXNhYmxlZC4gSXQgbWF5IGJlIHVzZWQgaW4gYW4gYWx0ZXJuYXRpdmUgTHd0XG4gICAgICBBUEkuXG5cbiAgICAgIEZ1bmN0aW9ucyBvdGhlciB0aGFuIFtMd3QuYmluZF0gaGF2ZSBhbmFsb2dvdXMgZGVmZXJyYWwgYmVoYXZpb3IuICopXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuICAgICAgKCogVGhlIHJlc3VsdCBwcm9taXNlIGlzIGEgZnJlc2ggcGVuZGluZyBwcm9taXNlLlxuXG4gICAgICAgICBJbml0aWFsbHksIHRyeWluZyB0byBjYW5jZWwgdGhpcyBmcmVzaCBwZW5kaW5nIHByb21pc2UgW3AnJ10gd2lsbFxuICAgICAgICAgcHJvcGFnYXRlIHRoZSBjYW5jZWxsYXRpb24gYXR0ZW1wdCB0byBbcF0gKGJhY2t3YXJkcyB0aHJvdWdoIHRoZVxuICAgICAgICAgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoKS4gSWYvd2hlbiBbcF0gaXMgZnVsZmlsbGVkLCBMd3Qgd2lsbCBjYWxsIHRoZVxuICAgICAgICAgdXNlcidzIGNhbGxiYWNrIFtmXSBiZWxvdywgd2hpY2ggd2lsbCBwcm92aWRlIGEgbmV3IHByb21pc2UgW3AnXSwgYW5kXG4gICAgICAgICBbcCddIHdpbGwgYmVjb21lIGEgcHJveHkgb2YgW3AnJ10uIEF0IHRoYXQgcG9pbnQsIHRyeWluZyB0byBjYW5jZWxcbiAgICAgICAgIFtwJyddIHdpbGwgYmUgZXF1aXZhbGVudCB0byB0cnlpbmcgdG8gY2FuY2VsIFtwJ10sIHNvIHRoZSBiZWhhdmlvciB3aWxsXG4gICAgICAgICBkZXBlbmQgb24gaG93IHRoZSB1c2VyIG9idGFpbmVkIFtwJ10uICopXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZiB2IHdpdGggZXhuXG4gICAgICAgICAgICB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuICAgICAgICAgICgqIFJ1biB0aGUgdXNlcidzIGZ1bmN0aW9uIFtmXS4gKilcblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cbiAgICAgICAgICAoKiBbcCcnXSB3YXMgYW4gdW5kZXJseWluZyBwcm9taXNlIHdoZW4gaXQgd2FzIGNyZWF0ZWQgYWJvdmUsIGJ1dCBpdFxuICAgICAgICAgICAgIG1heSBoYXZlIGJlY29tZSBhIHByb3h5IGJ5IHRoZSB0aW1lIHRoaXMgY29kZSBpcyBiZWluZyBleGVjdXRlZC5cbiAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBzdGlsbCBlaXRoZXIgYW4gdW5kZXJseWluZyBwZW5kaW5nIHByb21pc2UsIG9yIGFcbiAgICAgICAgICAgICBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuIFRoZXJlZm9yZSwgW21heV9ub3dfYmVfcHJveHldIHByb2R1Y2VzXG4gICAgICAgICAgICAgYSByZWZlcmVuY2Ugd2l0aCB0aGUgcmlnaHQgdHlwZSB2YXJpYWJsZXMuIFdlIGltbWVkaWF0ZWx5IGdldFxuICAgICAgICAgICAgIFtwJyddJ3MgY3VycmVudCB1bmRlcmx5aW5nIHByb21pc2UuICopXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgICAgICgqIE1ha2UgdGhlIG91dGVyIHByb21pc2UgW3AnJ10gYmVoYXZpb3JhbGx5IGlkZW50aWNhbCB0byB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgIFtwJ10gcmV0dXJuZWQgYnkgW2ZdIGJ5IG1ha2luZyBbcCddIGludG8gYSBwcm94eSBvZiBbcCcnXS4gKilcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV9iaW5kIGFkZF9sb2MgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZiB2XG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bikgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgKFJlamVjdGVkIChhZGRfbG9jIGV4bikpIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBSZWplY3RlZCAoYWRkX2xvYyBleG4pfVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGxldCBtYXAgZiBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJydfcmVzdWx0ID1cbiAgICAgICAgICAgIHRyeSBGdWxmaWxsZWQgKGYgdikgd2l0aCBleG5cbiAgICAgICAgICAgIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IFJlamVjdGVkIGV4blxuICAgICAgICAgIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwJydfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZVxuICAgICAgICAgICAge3N0YXRlID1cbiAgICAgICAgICAgICAgdHJ5IEZ1bGZpbGxlZCAoZiB2KVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBSZWplY3RlZCBleG59KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBleHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbiAgbGV0IGNhdGNoIGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaCBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGxldCBiYWNrdHJhY2VfY2F0Y2ggYWRkX2xvYyBmIGggPVxuICAgIGxldCBwID1cbiAgICAgIHRyeSBmICgpXG4gICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgIGluXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIChhZGRfbG9jIGV4bikpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGxldCB0cnlfYmluZCBmIGYnIGggPVxuICAgIGxldCBwID1cbiAgICAgIHRyeSBmICgpXG4gICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgIGluXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGYnIHZcbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGYnIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaCBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGxldCBiYWNrdHJhY2VfdHJ5X2JpbmQgYWRkX2xvYyBmIGYnIGggPVxuICAgIGxldCBwID1cbiAgICAgIHRyeSBmICgpXG4gICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgIGluXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGYnIHZcbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZicgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIChhZGRfbG9jIGV4bikpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGxldCBmaW5hbGl6ZSBmIGYnID1cbiAgICB0cnlfYmluZCBmXG4gICAgICAoZnVuIHggLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gcmV0dXJuIHgpKVxuICAgICAgKGZ1biBlIC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IGZhaWwgZSkpXG5cbiAgbGV0IGJhY2t0cmFjZV9maW5hbGl6ZSBhZGRfbG9jIGYgZicgPVxuICAgIGJhY2t0cmFjZV90cnlfYmluZCBhZGRfbG9jIGZcbiAgICAgIChmdW4geCAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiByZXR1cm4geCkpXG4gICAgICAoZnVuIGUgLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gZmFpbCAoYWRkX2xvYyBlKSkpXG5cblxuXG4gIGxldCBvbl9jYW5jZWwgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgKCgpLCAoZnVuIF8gLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSksIEZ1bGZpbGxlZCAoKSkpXG5cbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgYWRkX2NhbmNlbF9jYWxsYmFjayBjYWxsYmFja3MgZlxuXG5cblxuICBsZXQgb25fc3VjY2VzcyBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgZnVuIHJlc3VsdCAtPlxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2XG5cbiAgICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgb25fZmFpbHVyZSBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgZnVuIHJlc3VsdCAtPlxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgZXhuXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl90ZXJtaW5hdGlvbiBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgZnVuIF9yZXN1bHQgLT5cbiAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKClcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgb25fYW55IHAgZiBnID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biByZXN1bHQgLT5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdlxuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZyBleG5cbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGcgZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5lbmRcbmluY2x1ZGUgU2VxdWVudGlhbF9jb21wb3NpdGlvblxuXG5cbigqIFRoaXMgYmVsb25ncyB3aXRoIHRoZSBbcHJvdGVjdGVkXSBhbmQgc3VjaCwgYnV0IGl0IGRlcGVuZHMgb24gcHJpbWl0aXZlcyBmcm9tXG4gICBbU2VxdWVudGlhbF9jb21wb3NpdGlvbl0uICopXG5sZXQgd3JhcF9pbl9jYW5jZWxhYmxlIHAgPVxuIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gbGV0IHBfdW5kZXJseWluZyA9IHVuZGVybHlpbmcgcF9pbnRlcm5hbCBpblxuIG1hdGNoIHBfdW5kZXJseWluZy5zdGF0ZSB3aXRoXG4gfCBGdWxmaWxsZWQgXyAtPiBwXG4gfCBSZWplY3RlZCBfIC0+IHBcbiB8IFBlbmRpbmcgXyAtPlxuICAgbGV0IHAnLCByID0gdGFzayAoKSBpblxuICAgb25fY2FuY2VsIHAnIChmdW4gKCkgLT4gY2FuY2VsIHApO1xuICAgb25fYW55IHAgKHdha2V1cCByKSAod2FrZXVwX2V4biByKTtcbiAgIHAnXG5cblxubW9kdWxlIENvbmN1cnJlbnRfY29tcG9zaXRpb24gOlxuc2lnXG4gIHZhbCBkb250X3dhaXQgOiAodW5pdCAtPiBfIHQpIC0+IChleG4gLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgYXN5bmMgOiAodW5pdCAtPiBfIHQpIC0+IHVuaXRcbiAgdmFsIGlnbm9yZV9yZXN1bHQgOiBfIHQgLT4gdW5pdFxuXG4gIHZhbCBib3RoIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCBqb2luIDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG4gIHZhbCBhbGwgOiAoJ2EgdCkgbGlzdCAtPiAoJ2EgbGlzdCkgdFxuXG4gIHZhbCBjaG9vc2UgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgcGljayA6ICdhIHQgbGlzdCAtPiAnYSB0XG5cbiAgdmFsIG5jaG9vc2UgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG4gIHZhbCBucGljayA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcblxuICB2YWwgbmNob29zZV9zcGxpdCA6ICdhIHQgbGlzdCAtPiAoJ2EgbGlzdCAqICdhIHQgbGlzdCkgdFxuZW5kID1cbnN0cnVjdFxuICBleHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbiAgbGV0IGRvbnRfd2FpdCBmIGggPVxuICAgIGxldCBwID1cbiAgICAgIHRyeSBmICgpXG4gICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgIGluXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBoIGV4blxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgaCBleG5cbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IGFzeW5jIGYgPVxuICAgIGxldCBwID1cbiAgICAgIHRyeSBmICgpXG4gICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgIGluXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAhYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICAhYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuXG4gICAgICBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBpZ25vcmVfcmVzdWx0IHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcmVyYWlzZSBleG5cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cblxuXG4gIGxldCBqb2luIHBzID1cbiAgICBsZXQgcCcgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgbGV0IG51bWJlcl9wZW5kaW5nX2luX3BzID0gcmVmIDAgaW5cbiAgICBsZXQgam9pbl9yZXN1bHQgPSByZWYgKEZ1bGZpbGxlZCAoKSkgaW5cblxuICAgICgqIENhbGxiYWNrIGF0dGFjaGVkIHRvIGVhY2ggcHJvbWlzZSBpbiBbcHNdIHRoYXQgaXMgc3RpbGwgcGVuZGluZyBhdCB0aGVcbiAgICAgICB0aW1lIFtqb2luXSBpcyBjYWxsZWQuICopXG4gICAgbGV0IGNhbGxiYWNrIG5ld19yZXN1bHQgPVxuICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJyA9IG1heV9ub3dfYmVfcHJveHkgcCcgaW5cblxuICAgICAgYmVnaW4gbWF0Y2ggbmV3X3Jlc3VsdCB3aXRoXG4gICAgICB8IEZ1bGZpbGxlZCAoKSAtPiAoKVxuICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAoKiBGb3IgdGhlIGZpcnN0IHByb21pc2UgaW4gW3BzXSB0byBiZSByZWplY3RlZCwgc2V0IHRoZSByZXN1bHQgb2YgdGhlXG4gICAgICAgICBbam9pbl0gdG8gcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBleGNlcHRpb24uLiAqKVxuICAgICAgICBtYXRjaCAham9pbl9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPiBqb2luX3Jlc3VsdCA6PSBuZXdfcmVzdWx0XG4gICAgICAgIHwgUmVqZWN0ZWQgXyAtPiAoKVxuICAgICAgZW5kO1xuXG4gICAgICAoKiBJbiBhbGwgY2FzZXMsIGRlY3JlbWVudCB0aGUgbnVtYmVyIG9mIHByb21pc2VzIHN0aWxsIHBlbmRpbmcsIGFuZFxuICAgICAgICAgcmVzb2x2ZSB0aGUgW2pvaW5dIG9uY2UgYWxsIHByb21pc2VzIHJlc29sdmUuICopXG4gICAgICBudW1iZXJfcGVuZGluZ19pbl9wcyA6PSAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgLSAxO1xuICAgICAgaWYgIW51bWJlcl9wZW5kaW5nX2luX3BzID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBwJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSAodW5kZXJseWluZyBwJykgIWpvaW5fcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwJ1xuICAgICAgZW5kXG4gICAgaW5cblxuICAgICgqIEF0dGFjaCB0aGUgYWJvdmUgY2FsbGJhY2suIFNpbXVsdGFuZW91c2x5IGNvdW50IGhvdyBtYW55IHBlbmRpbmcgcHJvbWlzZXNcbiAgICAgICB0aGVyZSBhcmUgaW4gW3BzXSAoaW5pdGlhbGx5KS4gSWYgdGhhdCBudW1iZXIgaXMgemVybywgdGhlIFtqb2luXSBtdXN0XG4gICAgICAgcmVzb2x2ZSBpbW1lZGlhdGVseS4gKilcbiAgICBsZXQgcmVjIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzID1cbiAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgaWYgIW51bWJlcl9wZW5kaW5nX2luX3BzID0gMCB0aGVuXG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gIWpvaW5fcmVzdWx0fVxuICAgICAgICBlbHNlXG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcCdcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICAgICAgbnVtYmVyX3BlbmRpbmdfaW5fcHMgOj0gIW51bWJlcl9wZW5kaW5nX2luX3BzICsgMTtcbiAgICAgICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgKCogQXMgaW4gdGhlIGNhbGxiYWNrIGFib3ZlLCBidXQgZm9yIGFscmVhZHktcmVzb2x2ZWQgcHJvbWlzZXMgaW5cbiAgICAgICAgICAgICBbcHNdOiByZWplY3QgdGhlIFtqb2luXSB3aXRoIHRoZSBzYW1lIGV4Y2VwdGlvbiBhcyBpbiB0aGUgZmlyc3RcbiAgICAgICAgICAgICByZWplY3RlZCBwcm9taXNlIGZvdW5kLiBbam9pbl0gc3RpbGwgd2FpdHMgZm9yIGFueSBwZW5kaW5nIHByb21pc2VzXG4gICAgICAgICAgICAgYmVmb3JlIGFjdHVhbGx5IHJlc29sdmluZywgdGhvdWdoLiAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoICFqb2luX3Jlc3VsdCB3aXRoXG4gICAgICAgICAgfCBGdWxmaWxsZWQgKCkgLT4gam9pbl9yZXN1bHQgOj0gcF9yZXN1bHQ7XG4gICAgICAgICAgfCBSZWplY3RlZCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG5cbiAgICAgICAgfCBGdWxmaWxsZWQgKCkgLT5cbiAgICAgICAgICBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwc1xuICAgIGluXG5cbiAgICBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwc1xuXG4gICgqIHRoaXMgaXMgMyB3b3Jkcywgc21hbGxlciB0aGFuIHRoZSAyIHRpbWVzIDIgd29yZHMgYSBwYWlyIG9mIHJlZmVyZW5jZXNcbiAgICAgd291bGQgdGFrZS4gKilcbiAgdHlwZSAoJ2EsJ2IpIHBhaXIgPSB7XG4gICAgbXV0YWJsZSB4MTogJ2Egb3B0aW9uO1xuICAgIG11dGFibGUgeDI6ICdiIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBib3RoIHAxIHAyID1cbiAgICBsZXQgcGFpciA9IHt4MSA9IE5vbmU7IHgyID0gTm9uZX0gaW5cbiAgICBsZXQgcDEnID0gYmluZCBwMSAoZnVuIHYgLT4gcGFpci54MSA8LSBTb21lIHY7IHJldHVybl91bml0KSBpblxuICAgIGxldCBwMicgPSBiaW5kIHAyIChmdW4gdiAtPiBwYWlyLngyIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpIGluXG4gICAgam9pbiBbcDEnOyBwMiddIHw+IG1hcCAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBwYWlyLngxLCBwYWlyLngyIHdpdGhcbiAgICAgIHwgU29tZSB2MSwgU29tZSB2MiAtPiB2MSwgdjJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGFsbCBwcyA9XG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT4gcmV0dXJuX25pbFxuICAgIHwgW3hdIC0+IG1hcCAoZnVuIHkgLT4gW3ldKSB4XG4gICAgfCBbeDsgeV0gLT4gbWFwIChmdW4gKHgsIHkpIC0+IFt4OyB5XSkgKGJvdGggeCB5KVxuICAgIHwgXyAtPlxuICAgICAgbGV0IHZzID0gQXJyYXkubWFrZSAoTGlzdC5sZW5ndGggcHMpIE5vbmUgaW5cbiAgICAgIHBzXG4gICAgICB8PiBMaXN0Lm1hcGkgKGZ1biBpbmRleCBwIC0+XG4gICAgICAgIGJpbmQgcCAoZnVuIHYgLT4gdnMuKGluZGV4KSA8LSBTb21lIHY7IHJldHVybl91bml0KSlcbiAgICAgIHw+IGpvaW5cbiAgICAgIHw+IG1hcCAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IHJlYyB0b19saXN0X3Vub3B0IGkgYWNjID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdnMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4gdG9fbGlzdF91bm9wdCAoaSAtIDEpICh4OjphY2MpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0b19saXN0X3Vub3B0IChBcnJheS5sZW5ndGggdnMgLSAxKSBbXSlcblxuICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogdGhlIG5leHQgZmV3IGZ1bmN0aW9ucyBhcmUgaGVscGVycyBmb3IgW2Nob29zZV0gYW5kXG4gICAgIFtwaWNrXS4gUGVyaGFwcyB0aGV5IHNob3VsZCBiZSBmYWN0b3JlZCBpbnRvIHNvbWUga2luZCBvZiBnZW5lcmljXG4gICAgIFtjaG9vc2VdL1twaWNrXSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggbWF5IGFjdHVhbGx5IGJlIG9wdGltYWwgYW55d2F5IHdpdGhcbiAgICAgRmxhbWJkYS4gKilcblxuICBsZXQgY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4gKHBzIDogJ2EgdCBsaXN0KSA9XG4gICAgbGV0IHJlYyBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIHRvdGFsIHJlamVjdGVkIHBzID1cbiAgICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICAgfCBbXSAtPiBFcnJvciAodG90YWwsIHJlamVjdGVkKVxuICAgICAgIHwgcCA6OiBwcyAtPlxuICAgICAgICAgICAgbGV0IEludGVybmFsIHEgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHEpLnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgRnVsZmlsbGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCB0b3RhbCByZWplY3RlZCBwc1xuICAgICAgICAgICAgfCBSZWplY3RlZCBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgKHRvdGFsICsgMSkgKHAgOjogcmVqZWN0ZWQpIHBzXG4gICAgICAgICAgICB8IFBlbmRpbmcgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIHRvdGFsIHJlamVjdGVkIHBzXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvdW50X2Z1bGZpbGxlZCB0b3RhbCBwcyA9XG4gICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgIHwgW10gLT4gT2sgdG90YWxcbiAgICAgICB8IHAgOjogcHMgLT5cbiAgICAgICAgICAgIGxldCBJbnRlcm5hbCBxID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgICAgICBtYXRjaCAodW5kZXJseWluZyBxKS5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+IGNvdW50X2Z1bGZpbGxlZCAodG90YWwgKyAxKSBwc1xuICAgICAgICAgICAgfCBSZWplY3RlZCBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgMSBbcF0gcHNcbiAgICAgICAgICAgIHwgUGVuZGluZyBfIC0+IGNvdW50X2Z1bGZpbGxlZCB0b3RhbCBwc1xuICAgIGluXG4gICAgY291bnRfZnVsZmlsbGVkIDAgcHNcblxuICAoKiBFdmFsdWF0ZXMgdG8gdGhlIFtuXXRoIHByb21pc2UgaW4gW3BzXSwgYW1vbmcgb25seSB0aG9zZSBwcm9taXNlcyBpbiBbcHNdXG4gICAgIHRoYXQgYXJlIHJlc29sdmVkLiBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBhdFxuICAgICBsZWFzdCBbbl0gcmVzb2x2ZWQgcHJvbWlzZXMgaW4gW3BzXS4gKilcbiAgbGV0IHJlYyBudGhfcmVzb2x2ZWQgKHBzIDogJ2EgdCBsaXN0KSAobiA6IGludCkgOiAnYSB0ID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICB8IHA6OnBzIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHAnKS5zdGF0ZSB3aXRoXG4gICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICBudGhfcmVzb2x2ZWQgcHMgblxuXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgIGlmIG4gPD0gMCB0aGVuIHBcbiAgICAgICAgZWxzZSBudGhfcmVzb2x2ZWQgcHMgKG4gLSAxKVxuICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAgIGlmIG4gPD0gMCB0aGVuIHBcbiAgICAgICAgZWxzZSBudGhfcmVzb2x2ZWQgcHMgKG4gLSAxKVxuXG4gICgqIExpa2UgW250aF9yZXNvbHZlZF0sIGJ1dCBjYW5jZWxzIGFsbCBwZW5kaW5nIHByb21pc2VzIGZvdW5kIHdoaWxlXG4gICAgIHRyYXZlcnNpbmcgW3BzXS4gKilcbiAgbGV0IHJlYyBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIChwcyA6ICdhIHQgbGlzdCkgKG4gOiBpbnQpIDogJ2EgdCA9XG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgfCBwOjpwcyAtPlxuICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICBtYXRjaCAodW5kZXJseWluZyBwJykuc3RhdGUgd2l0aFxuICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgY2FuY2VsIHA7XG4gICAgICAgIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgcHMgblxuXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgIGlmIG4gPD0gMCB0aGVuIChMaXN0Lml0ZXIgY2FuY2VsIHBzOyBwKVxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgcHMgKG4gLSAxKVxuICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAgIGlmIG4gPD0gMCB0aGVuIChMaXN0Lml0ZXIgY2FuY2VsIHBzOyBwKVxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgcHMgKG4gLSAxKVxuXG4gICgqIFRoZSBQUk5HIHN0YXRlIGlzIGluaXRpYWxpemVkIHdpdGggYSBjb25zdGFudCB0byBtYWtlIG5vbi1JTy1iYXNlZCBwcm9ncmFtc1xuICAgICBkZXRlcm1pbmlzdGljLiAqKVxuICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogaXMgdGhpcyBuZWNlc3Nhcnk/ICopXG4gIGxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2UgW3x8XSlcblxuICBsZXQgY2hvb3NlIHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIFwiTHd0LmNob29zZSBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbWF0Y2ggY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4gcHMgd2l0aFxuICAgIHwgT2sgMCAtPlxuICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcFxuICAgICAgaW5cbiAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IE9rIDEgLT5cbiAgICAgIG50aF9yZXNvbHZlZCBwcyAwXG5cbiAgICB8IE9rIG4gLT5cbiAgICAgIG50aF9yZXNvbHZlZCBwcyAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gICAgfCBFcnJvciAobiwgcHMpIC0+XG4gICAgICBudGhfcmVzb2x2ZWQgcHMgKFJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgcHJuZykgbilcblxuICBsZXQgcGljayBwcyA9XG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkx3dC5waWNrIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBtYXRjaCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiBwcyB3aXRoXG4gICAgfCBPayAwIC0+XG4gICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwXG4gICAgICBpblxuICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgT2sgMSAtPlxuICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAwXG5cbiAgICB8IE9rIG4gLT5cbiAgICAgIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgcHNcbiAgICAgICAgKFJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgcHJuZykgbilcblxuICAgIHwgRXJyb3IgKG4sIHFzKSAtPlxuICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgIG50aF9yZXNvbHZlZCBxcyAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG5cblxuICAoKiBJZiBbbmNob29zZSBwc10gb3IgW25waWNrIHBzXSBmb3VuZCBhbGwgcHJvbWlzZXMgaW4gW3BzXSBwZW5kaW5nLCB0aGVcbiAgICAgY2FsbGJhY2sgYWRkZWQgdG8gZWFjaCBwcm9taXNlIGluIFtwc10gZXZlbnR1YWxseSBjYWxscyB0aGlzIGZ1bmN0aW9uLiBUaGVcbiAgICAgZnVuY3Rpb24gY29sbGVjdHMgcHJvbWlzZXMgaW4gW3BzXSB0aGF0IGhhdmUgYmVjb21lIGZ1bGZpbGxlZCwgb3IgZmluZHMgb25lXG4gICAgIHByb21pc2UgaW4gW3BzXSB0aGF0IGhhcyBiZWVuIHJlamVjdGVkLiBJdCB0aGVuIHJldHVybnMgdGhlIGRlc2lyZWQgc3RhdGVcbiAgICAgb2YgdGhlIGZpbmFsIHByb21pc2U6IGVpdGhlciB0aGUgbGlzdCBvZiByZXN1bHRzIGNvbGxlY3RlZCwgb3IgdGhlXG4gICAgIGV4Y2VwdGlvbiBmb3VuZC4gKilcbiAgbGV0IHJlYyBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nXG4gICAgICAocmVzdWx0cyA6ICdhIGxpc3QpXG4gICAgICAocHMgOiAnYSB0IGxpc3QpIDpcbiAgICAgICAgKCdhIGxpc3QgcmVzb2x2ZWRfc3RhdGUpID1cblxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBGdWxmaWxsZWQgKExpc3QucmV2IHJlc3VsdHMpXG5cbiAgICB8IHA6OnBzIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgIGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgKHY6OnJlc3VsdHMpIHBzXG5cbiAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgcmVzdWx0XG5cbiAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgIGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgcmVzdWx0cyBwc1xuXG4gIGxldCBuY2hvb3NlIHBzID1cbiAgICAoKiBJZiBhdCBsZWFzdCBvbmUgcHJvbWlzZSBpbiBbcHNdIGlzIGZvdW5kIGZ1bGZpbGxlZCwgdGhpcyBmdW5jdGlvbiBpc1xuICAgICAgIGNhbGxlZCB0byBmaW5kIGFsbCBzdWNoIHByb21pc2VzLiAqKVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgXCJMd3QubmNob29zZSBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbGV0IHJlYyBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzID1cbiAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkICh2OjphY2MpIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHNcbiAgICBpblxuXG4gICAgKCogTG9va3MgZm9yIGFscmVhZHktcmVzb2x2ZWQgcHJvbWlzZXMgaW4gW3BzXS4gSWYgbm9uZSBhcmUgZnVsZmlsbGVkIG9yXG4gICAgICAgcmVqZWN0ZWQsIGFkZHMgYSBjYWxsYmFjayB0byBhbGwgcHJvbWlzZXMgaW4gW3BzXSAoYWxsIG9mIHdoaWNoIGFyZVxuICAgICAgIHBlbmRpbmcpLiAqKVxuICAgIGxldCByZWMgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMnID1cbiAgICAgIG1hdGNoIHBzJyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgICBsZXQgY2FsbGJhY2sgX3Jlc3VsdCA9XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyBbXSBwcyBpblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBbdl0gcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHNcbiAgICBpblxuXG4gICAgbGV0IHAgPSBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwcyBpblxuICAgIHBcblxuICAoKiBTZWUgW25jaG9vc2VdLiBUaGlzIGZ1bmN0aW9uIGRpZmZlcnMgb25seSBpbiBoYXZpbmcgYWRkaXRpb25hbCBjYWxscyB0b1xuICAgICBbY2FuY2VsXS4gKilcbiAgbGV0IG5waWNrIHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiTHd0Lm5waWNrIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBsZXQgcmVjIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHMnID1cbiAgICAgIG1hdGNoIHBzJyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgIHJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgKHY6OmFjYykgcHMnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwcydcbiAgICBpblxuXG4gICAgbGV0IHJlYyBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICAgIGxldCBjYWxsYmFjayBfcmVzdWx0ID1cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nIFtdIHBzIGluXG4gICAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwXG4gICAgICAgIGluXG4gICAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgICAgfCBwOjpwcycgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIFt2XSBwcydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwcydcbiAgICBpblxuXG4gICAgbGV0IHAgPSBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwcyBpblxuICAgIHBcblxuXG5cbiAgKCogU2FtZSBnZW5lcmFsIHBhdHRlcm4gYXMgW25waWNrXSBhbmQgW25jaG9vc2VdLiAqKVxuICBsZXQgbmNob29zZV9zcGxpdCBwcyA9XG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkx3dC5uY2hvb3NlX3NwbGl0IFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBsZXQgcmVjIGZpbmlzaFxuICAgICAgICAodG9fcmVzb2x2ZSA6ICgnYSBsaXN0ICogJ2EgdCBsaXN0LCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlKVxuICAgICAgICAoZnVsZmlsbGVkIDogJ2EgbGlzdClcbiAgICAgICAgKHBlbmRpbmcgOiAnYSB0IGxpc3QpXG4gICAgICAgIChwcyA6ICdhIHQgbGlzdClcbiAgICAgICAgICA6ICgnYSBsaXN0ICogJ2EgdCBsaXN0LCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVfY2hhbmdlZCA9XG5cbiAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHRvX3Jlc29sdmVcbiAgICAgICAgICAoRnVsZmlsbGVkIChMaXN0LnJldiBmdWxmaWxsZWQsIExpc3QucmV2IHBlbmRpbmcpKVxuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGZpbmlzaCB0b19yZXNvbHZlICh2OjpmdWxmaWxsZWQpIHBlbmRpbmcgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHRvX3Jlc29sdmUgcmVzdWx0XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBmaW5pc2ggdG9fcmVzb2x2ZSBmdWxmaWxsZWQgKHA6OnBlbmRpbmcpIHBzXG4gICAgaW5cblxuICAgIGxldCByZWMgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHJlc3VsdHMgcGVuZGluZyBwcyA9XG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICgqIE1haW50YWluZXIncyBub3RlOiBzaG91bGQgdGhlIHBlbmRpbmcgcHJvbWlzZSBsaXN0IGFsc28gYmVcbiAgICAgICAgICAgcmV2ZXJzZWQ/IEl0IGlzIHJldmVyc2VkIGluIGZpbmlzaC4gKilcbiAgICAgICAgcmV0dXJuIChMaXN0LnJldiByZXN1bHRzLCBwZW5kaW5nKVxuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyAodjo6cmVzdWx0cykgcGVuZGluZyBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcmVzdWx0cyAocDo6cGVuZGluZykgcHNcbiAgICBpblxuXG4gICAgbGV0IHJlYyBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwZW5kaW5nX2FjYyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICAgIGxldCBjYWxsYmFjayBfcmVzdWx0ID1cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPSBmaW5pc2ggcCBbXSBbXSBwcyBpblxuICAgICAgICAgIGlnbm9yZSBwXG4gICAgICAgIGluXG4gICAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgICAgfCBwOjpwcycgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIFt2XSBwZW5kaW5nX2FjYyBwcydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgKHA6OnBlbmRpbmdfYWNjKSBwcydcbiAgICBpblxuXG4gICAgbGV0IHAgPSBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBbXSBwcyBpblxuICAgIHBcbmVuZFxuaW5jbHVkZSBDb25jdXJyZW50X2NvbXBvc2l0aW9uXG5cblxuXG5tb2R1bGUgTWlzY2VsbGFuZW91cyA6XG5zaWdcbiAgKCogUHJvbWlzZSBzdGF0ZSBxdWVyeSAqKVxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFJldHVybiBvZiAnYVxuICAgIHwgRmFpbCBvZiBleG5cbiAgICB8IFNsZWVwXG5cbiAgdmFsIHN0YXRlIDogJ2EgdCAtPiAnYSBzdGF0ZVxuICB2YWwgaXNfc2xlZXBpbmcgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGRlYnVnX3N0YXRlX2lzIDogJ2Egc3RhdGUgLT4gJ2EgdCAtPiBib29sIHRcblxuICAoKiBGdW5jdGlvbiBsaWZ0ZXJzICopXG4gIHZhbCBhcHBseSA6ICgnYSAtPiAnYiB0KSAtPiAnYSAtPiAnYiB0XG5cbiAgdmFsIHdyYXAgOlxuICAgICh1bml0IC0+ICdiKSAtPlxuICAgICdiIHRcbiAgdmFsIHdyYXAxIDpcbiAgICAoJ2ExIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2IgdClcbiAgdmFsIHdyYXAyIDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYiB0KVxuICB2YWwgd3JhcDMgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2IgdClcbiAgdmFsIHdyYXA0IDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2IgdClcbiAgdmFsIHdyYXA1IDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYiB0KVxuICB2YWwgd3JhcDYgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2IgdClcbiAgdmFsIHdyYXA3IDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2IgdClcblxuICAoKiBQYXVzZWQgcHJvbWlzZXMgKilcbiAgdmFsIHBhdXNlIDogdW5pdCAtPiB1bml0IHRcbiAgdmFsIHdha2V1cF9wYXVzZWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHBhdXNlZF9jb3VudCA6IHVuaXQgLT4gaW50XG4gIHZhbCByZWdpc3Rlcl9wYXVzZV9ub3RpZmllciA6IChpbnQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgYWJhbmRvbl9wYXVzZWQgOiB1bml0IC0+IHVuaXRcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgZm9yIG90aGVyIG1vZHVsZXMgaW4gTHd0ICopXG4gIHZhbCBwb2xsIDogJ2EgdCAtPiAnYSBvcHRpb25cbmVuZCA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBSZXR1cm4gb2YgJ2FcbiAgICB8IEZhaWwgb2YgZXhuXG4gICAgfCBTbGVlcFxuXG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgc3RhdGUgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPiBSZXR1cm4gdlxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+IEZhaWwgZXhuXG4gICAgfCBQZW5kaW5nIF8gLT4gU2xlZXBcblxuICBsZXQgZGVidWdfc3RhdGVfaXMgZXhwZWN0ZWRfc3RhdGUgcCA9XG4gICAgcmV0dXJuIChzdGF0ZSBwID0gZXhwZWN0ZWRfc3RhdGUpXG5cbiAgbGV0IGlzX3NsZWVwaW5nIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gZmFsc2VcbiAgICB8IFJlamVjdGVkIF8gLT4gZmFsc2VcbiAgICB8IFBlbmRpbmcgXyAtPiB0cnVlXG5cbiAgbGV0IHBvbGwgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBSZWplY3RlZCBlIC0+IHJlcmFpc2UgZVxuICAgIHwgRnVsZmlsbGVkIHYgLT4gU29tZSB2XG4gICAgfCBQZW5kaW5nIF8gLT4gTm9uZVxuXG5cblxuICBsZXQgYXBwbHkgZiB4ID1cbiAgICB0cnkgZiB4IHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAgZiA9XG4gICAgdHJ5IHJldHVybiAoZiAoKSlcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwMSBmIHgxID1cbiAgICB0cnkgcmV0dXJuIChmIHgxKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAyIGYgeDEgeDIgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDMgZiB4MSB4MiB4MyA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MylcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNCBmIHgxIHgyIHgzIHg0ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA1IGYgeDEgeDIgeDMgeDQgeDUgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQgeDUpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDYgZiB4MSB4MiB4MyB4NCB4NSB4NiA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NCB4NSB4NilcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNyBmIHgxIHgyIHgzIHg0IHg1IHg2IHg3ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0IHg1IHg2IHg3KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cblxuXG4gIGxldCBwYXVzZV9ob29rID0gcmVmIGlnbm9yZVxuXG4gIGxldCBwYXVzZWQgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpXG4gIGxldCBwYXVzZWRfY291bnQgPSByZWYgMFxuXG4gIGxldCBwYXVzZSAoKSA9XG4gICAgbGV0IHAgPSBhZGRfdGFza19yIHBhdXNlZCBpblxuICAgIGluY3IgcGF1c2VkX2NvdW50O1xuICAgICFwYXVzZV9ob29rICFwYXVzZWRfY291bnQ7XG4gICAgcFxuXG4gIGxldCB3YWtldXBfcGF1c2VkICgpID1cbiAgICBpZiBMd3Rfc2VxdWVuY2UuaXNfZW1wdHkgcGF1c2VkIHRoZW5cbiAgICAgIHBhdXNlZF9jb3VudCA6PSAwXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHRtcCA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgaW5cbiAgICAgIEx3dF9zZXF1ZW5jZS50cmFuc2Zlcl9yIHBhdXNlZCB0bXA7XG4gICAgICBwYXVzZWRfY291bnQgOj0gMDtcbiAgICAgIEx3dF9zZXF1ZW5jZS5pdGVyX2wgKGZ1biByIC0+IHdha2V1cCByICgpKSB0bXBcbiAgICBlbmRcblxuICBsZXQgcmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIgZiA9IHBhdXNlX2hvb2sgOj0gZlxuXG4gIGxldCBhYmFuZG9uX3BhdXNlZCAoKSA9XG4gICAgTHd0X3NlcXVlbmNlLmNsZWFyIHBhdXNlZDtcbiAgICBwYXVzZWRfY291bnQgOj0gMFxuXG4gIGxldCBwYXVzZWRfY291bnQgKCkgPSAhcGF1c2VkX2NvdW50XG5lbmRcbmluY2x1ZGUgTWlzY2VsbGFuZW91c1xuXG5tb2R1bGUgTGV0X3N5bnRheCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPVxuICBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCB0IH5mID0gbWFwIGYgdFxuICAgIGxldCBiaW5kIHQgfmYgPSBiaW5kIHQgZlxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID1cbiAgICBzdHJ1Y3RcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEluZml4ID1cbnN0cnVjdFxuICBsZXQgKD4+PSkgPSBiaW5kXG4gIGxldCAoPTw8KSBmIHAgPSBiaW5kIHAgZlxuICBsZXQgKD58PSkgcCBmID0gbWFwIGYgcFxuICBsZXQgKD18PCkgPSBtYXBcbiAgbGV0ICg8Jj4pIHAgcCcgPSBqb2luIFtwOyBwJ11cbiAgbGV0ICg8Pz4pIHAgcCcgPSBjaG9vc2UgW3A7IHAnXVxuXG4gIGluY2x1ZGUgTGV0X3N5bnRheFxuZW5kXG5pbmNsdWRlICggSW5maXggOiBtb2R1bGUgdHlwZSBvZiBJbmZpeCB3aXRoIG1vZHVsZSBMZXRfc3ludGF4IDo9IExldF9zeW50YXguTGV0X3N5bnRheCApXG5cbm1vZHVsZSBTeW50YXggPVxuc3RydWN0XG4gIGxldCAobGV0KikgPSBiaW5kXG4gIGxldCAoYW5kKikgPSBib3RoXG5cbiAgbGV0IChsZXQrKSB4IGYgPSBtYXAgZiB4XG4gIGxldCAoYW5kKykgPSBib3RoXG5lbmRcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuZXhjZXB0aW9uIE9mZlxuXG50eXBlIG9uX3N3aXRjaCA9IHtcbiAgbXV0YWJsZSBob29rcyA6ICh1bml0IC0+IHVuaXQgTHd0LnQpIGxpc3Q7XG59XG5cbnR5cGUgc3RhdGUgPVxuICB8IFN0X29uIG9mIG9uX3N3aXRjaFxuICB8IFN0X29mZlxuXG50eXBlIHQgPSB7IG11dGFibGUgc3RhdGUgOiBzdGF0ZSB9XG5cbmxldCBjcmVhdGUgKCkgPSB7IHN0YXRlID0gU3Rfb24geyBob29rcyA9IFtdIH0gfVxuXG5sZXQgaXNfb24gc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoLnN0YXRlIHdpdGhcbiAgfCBTdF9vbiBfIC0+IHRydWVcbiAgfCBTdF9vZmYgLT4gZmFsc2VcblxubGV0IGNoZWNrID0gZnVuY3Rpb25cbiAgfCBTb21leyBzdGF0ZSA9IFN0X29mZiB9IC0+IHJhaXNlIE9mZlxuICB8IFNvbWUge3N0YXRlID0gU3Rfb24gX30gfCBOb25lIC0+ICgpXG5cbmxldCBhZGRfaG9vayBzd2l0Y2ggaG9vayA9XG4gIG1hdGNoIHN3aXRjaCB3aXRoXG4gIHwgU29tZSB7IHN0YXRlID0gU3Rfb24gb3MgfSAtPlxuICAgIG9zLmhvb2tzIDwtIGhvb2sgOjogb3MuaG9va3NcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vZmYgfSAtPlxuICAgIHJhaXNlIE9mZlxuICB8IE5vbmUgLT5cbiAgICAoKVxuXG5sZXQgYWRkX2hvb2tfb3JfZXhlYyBzd2l0Y2ggaG9vayA9XG4gIG1hdGNoIHN3aXRjaCB3aXRoXG4gIHwgU29tZSB7IHN0YXRlID0gU3Rfb24gb3MgfSAtPlxuICAgIG9zLmhvb2tzIDwtIGhvb2sgOjogb3MuaG9va3M7XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgU29tZSB7IHN0YXRlID0gU3Rfb2ZmIH0gLT5cbiAgICBob29rICgpXG4gIHwgTm9uZSAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgdHVybl9vZmYgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoLnN0YXRlIHdpdGhcbiAgfCBTdF9vbiB7IGhvb2tzID0gaG9va3MgfSAtPlxuICAgIHN3aXRjaC5zdGF0ZSA8LSBTdF9vZmY7XG4gICAgTHd0LmpvaW4gKExpc3QubWFwIChmdW4gaG9vayAtPiBMd3QuYXBwbHkgaG9vayAoKSkgaG9va3MpXG4gIHwgU3Rfb2ZmIC0+XG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCB3aXRoX3N3aXRjaCBmbiA9XG4gIGxldCBzd2l0Y2ggPSBjcmVhdGUgKCkgaW5cbiAgTHd0LmZpbmFsaXplXG4gICAgKGZ1biAoKSAtPiBmbiBzd2l0Y2gpXG4gICAgKGZ1biAoKSAtPiB0dXJuX29mZiBzd2l0Y2gpXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbm9wZW4gTHd0LlN5bnRheFxub3BlbiBMd3QuSW5maXhcblxudHlwZSArJ2Egbm9kZSA9IE5pbCB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlIEx3dC50XG5cbmxldCByZXR1cm5fbmlsID0gTHd0LnJldHVybiBOaWxcblxubGV0IGVtcHR5IDogJ2EgdCA9IGZ1biAoKSAtPiByZXR1cm5fbmlsXG5cbmxldCByZXR1cm4gKHggOiAnYSkgOiAnYSB0ID0gZnVuICgpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGVtcHR5KSlcblxubGV0IHJldHVybl9sd3QgKHggOiAnYSBMd3QudCkgOiAnYSB0ID0gZnVuICgpIC0+XG4gICBsZXQrIHggPSB4IGluXG4gICBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCB0ICgpID0gTHd0LnJldHVybiAoQ29ucyAoeCwgdCkpXG5cbmxldCBjb25zX2x3dCB4IHQgKCkgPVxuICAgbGV0KyB4ID0geCBpblxuICAgQ29ucyAoeCwgdClcblxuKCogQSBub3RlIG9uIHJlY3Vyc2luZyB0aHJvdWdoIHRoZSBzZXFzOlxuICAgV2hlbiB0cmF2ZXJzaW5nIGEgc2VxLCB0aGUgZmlyc3QgdGltZSB3ZSBldmFsdWF0ZSBhIHN1c3BlbmRlZCBub2RlIHdlIGFyZVxuICAgb24gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IGJpbmQgKD4+PSkuIEluIHRoYXQgY2FzZSwgd2UgdXNlIGFwcGx5IHRvIGNhcHR1cmVcbiAgIGV4Y2VwdGlvbnMgaW50byBwcm9taXNlIHJlamVjdGlvbi5cblxuICAgVGhpcyBpcyBvbmx5IG5lZWRlZCBvbiB0aGUgZmlyc3QgaXRlcmF0aW9uIGJlY2F1c2Ugd2UgYXJlIHdpdGhpbiBhIGNhbGxiYWNrXG4gICBwYXNzZWQgdG8gTHd0IG9uIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgYSBiaW5kIGFmdGVyIHRoYXQuXG5cbiAgIFRocm91Z2hvdXQgdGhpcyBmaWxlIHdlIHVzZSB0aGUgc2FtZSBjb2RlIHBhdHRlcm4gdG8gYWNoaWV2ZSB0aGlzOiB3ZVxuICAgc2hhZG93IHRoZSByZWN1cnNpdmUgdHJhdmVyc2FsIGZ1bmN0aW9uIHdpdGggYW4gaWRlbnRpY2FsLWJ1dC1mb3ItdGhlLWFwcGx5XG4gICBub24tcmVjdXJzaXZlIGNvcHkuICopXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIHNlcTEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHNlcTIgKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBMd3QucmV0dXJuIChDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKSlcbmxldCBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgTHd0LmFwcGx5IHNlcTEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHNlcTIgKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBMd3QucmV0dXJuIChDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKSlcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPVxuICBzZXEgKCkgPnw9IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwIGYgbmV4dClcbmxldCBtYXAgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID58PSBmdW5jdGlvblxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgbWFwX3MgZiBzZXEgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KyB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXBfcyBmIG5leHQpXG5sZXQgbWFwX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCsgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwX3MgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KSApKVxubGV0IGZpbHRlcl9tYXAgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dCkgKSlcblxubGV0IHJlYyBmaWx0ZXJfbWFwX3MgZiBzZXEgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQqIHggPSBmIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXBfcyBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXBfcyBmIG5leHQpICkpXG5sZXQgZmlsdGVyX21hcF9zIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCogeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcF9zIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcF9zIGYgbmV4dCkgKSlcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlciBmIG5leHQpKSBlbHNlIGZpbHRlciBmIG5leHQgKClcbmxldCBmaWx0ZXIgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCBvayA9IGYgeCBpblxuICAgICAgaWYgb2sgdGhlbiBMd3QucmV0dXJuIChDb25zICh4LCBmaWx0ZXIgZiBuZXh0KSkgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5cbmxldCByZWMgZmlsdGVyX3MgZiBzZXEgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KiBvayA9IGYgeCBpblxuICAgICAgaWYgb2sgdGhlbiBMd3QucmV0dXJuIChDb25zICh4LCBmaWx0ZXJfcyBmIG5leHQpKSBlbHNlIGZpbHRlcl9zIGYgbmV4dCAoKVxubGV0IGZpbHRlcl9zIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQqIG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlcl9zIGYgbmV4dCkpIGVsc2UgZmlsdGVyX3MgZiBuZXh0ICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgZmxhdF9tYXBfYXBwIGYgKGYgeCkgbmV4dCAoKVxuXG4oKiB0aGlzIGlzIFthcHBlbmQgc2VxIChmbGF0X21hcCBmIHRhaWwpXSAqKVxuYW5kIGZsYXRfbWFwX2FwcCBmIHNlcSB0YWlsICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBmbGF0X21hcCBmIHRhaWwgKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBMd3QucmV0dXJuIChDb25zICh4LCBmbGF0X21hcF9hcHAgZiBuZXh0IHRhaWwpKVxuXG5sZXQgZmxhdF9tYXAgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGZsYXRfbWFwX2FwcCBmIChmIHgpIG5leHQgKClcblxubGV0IGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgbGV0IGF1eCBmIGFjYyBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGF1eCBmIGFjYyBzZXFcblxubGV0IGZvbGRfbGVmdF9zIGYgYWNjIHNlcSA9XG4gIGxldCByZWMgYXV4IGYgYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQqIGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgbGV0IGF1eCBmIGFjYyBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBhdXggZiBhY2Mgc2VxXG5cbmxldCBpdGVyIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGxldCBhdXggc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBhdXggbmV4dFxuICBpblxuICBhdXggc2VxXG5cbmxldCBpdGVyX3MgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogKCkgPSBmIHggaW5cbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgbGV0IGF1eCBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQqICgpID0gZiB4IGluXG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGF1eCBzZXFcblxubGV0IGl0ZXJfcCBmIHNlcSA9XG4gIGxldCByZWMgYXV4IGFjYyBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3Quam9pbiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBwID0gZiB4IGluXG4gICAgICAgIGF1eCAocDo6YWNjKSBuZXh0XG4gIGluXG4gIGxldCBhdXggYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3Quam9pbiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBwID0gZiB4IGluXG4gICAgICAgIGF1eCAocDo6YWNjKSBuZXh0XG4gIGluXG4gIGF1eCBbXSBzZXFcblxubGV0IGl0ZXJfbiA/KG1heF9jb25jdXJyZW5jeSA9IDEpIGYgc2VxID1cbiAgYmVnaW5cbiAgICBpZiBtYXhfY29uY3VycmVuY3kgPD0gMCB0aGVuXG4gICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJMd3Rfc2VxLml0ZXJfbjogbWF4X2NvbmN1cnJlbmN5IG11c3QgYmUgPiAwLCAlZCBnaXZlblwiXG4gICAgICAgICAgbWF4X2NvbmN1cnJlbmN5XG4gICAgICBpblxuICAgICAgaW52YWxpZF9hcmcgbWVzc2FnZVxuICBlbmQ7XG4gIGxldCByZWMgbG9vcCBydW5uaW5nIGF2YWlsYWJsZSBzZXEgPVxuICAgIGJlZ2luXG4gICAgICBpZiBhdmFpbGFibGUgPiAwIHRoZW4gKFxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUpXG4gICAgICApXG4gICAgICBlbHNlIChcbiAgICAgICAgTHd0Lm5jaG9vc2Vfc3BsaXQgcnVubmluZyA+Pj0gZnVuIChjb21wbGV0ZSwgcnVubmluZykgLT5cbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlICsgTGlzdC5sZW5ndGggY29tcGxldGUpXG4gICAgICApXG4gICAgZW5kID4+PSBmdW4gKHJ1bm5pbmcsIGF2YWlsYWJsZSkgLT5cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT5cbiAgICAgIEx3dC5qb2luIHJ1bm5pbmdcbiAgICB8IENvbnMgKGVsdCwgc2VxKSAtPlxuICAgICAgbG9vcCAoZiBlbHQgOjogcnVubmluZykgKHByZWQgYXZhaWxhYmxlKSBzZXFcbiAgaW5cbiAgKCogYmVjYXVzZSB0aGUgcmVjdXJzaW9uIGlzIG1vcmUgY29tcGxpY2F0ZWQgaGVyZSwgd2UgYXBwbHkgdGhlIHNlcSBkaXJlY3RseSBhdFxuICAgICB0aGUgY2FsbC1zaXRlIGluc3RlYWQgKilcbiAgbG9vcCBbXSBtYXhfY29uY3VycmVuY3kgKGZ1biAoKSAtPiBMd3QuYXBwbHkgc2VxICgpKVxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gcmV0dXJuX25pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBMd3QucmV0dXJuIChDb25zICh4LCB1bmZvbGQgZiB1JykpXG4gIHwgZXhjZXB0aW9uIGV4YyB3aGVuIEx3dC5FeGNlcHRpb25fZmlsdGVyLnJ1biBleGMgLT4gTHd0LmZhaWwgZXhjXG5cbmxldCByZWMgdW5mb2xkX2x3dCBmIHUgKCkgPVxuICBsZXQqIHggPSBmIHUgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZF9sd3QgZiB1JykpXG5sZXQgdW5mb2xkX2x3dCBmIHUgKCkgPVxuICBsZXQqIHggPSBMd3QuYXBwbHkgZiB1IGluXG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gcmV0dXJuX25pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBMd3QucmV0dXJuIChDb25zICh4LCB1bmZvbGRfbHd0IGYgdScpKVxuXG5sZXQgcmVjIG9mX2xpc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGVtcHR5XG4gIHwgaCA6OiB0IC0+IGNvbnMgaCAob2ZfbGlzdCB0KVxuXG5sZXQgcmVjIHRvX2xpc3Qgc2VxID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBMd3QucmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgbGV0KyBsID0gdG9fbGlzdCBuZXh0IGluXG4gICAgeCA6OiBsXG5sZXQgdG9fbGlzdCBzZXEgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBMd3QucmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgbGV0KyBsID0gdG9fbGlzdCBuZXh0IGluXG4gICAgeCA6OiBsXG5cbmxldCByZWMgb2Zfc2VxIHNlcSAoKSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiByZXR1cm5fbmlsXG4gIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+XG4gICAgTHd0LnJldHVybiAoQ29ucyAoeCwgKG9mX3NlcSBuZXh0KSkpXG4gIHwgZXhjZXB0aW9uIGV4biB3aGVuIEx3dC5FeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gTHd0LmZhaWwgZXhuXG5cbmxldCByZWMgb2Zfc2VxX2x3dCAoc2VxOiAnYSBMd3QudCBTZXEudCk6ICdhIHQgPSBmdW4gKCkgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiByZXR1cm5fbmlsXG4gICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICBsZXQrIHggPSB4IGluXG4gICAgICAgbGV0IG5leHQgPSBvZl9zZXFfbHd0IG5leHQgaW5cbiAgICAgICBDb25zICh4LCBuZXh0KVxubGV0IG9mX3NlcV9sd3QgKHNlcTogJ2EgTHd0LnQgU2VxLnQpOiAnYSB0ID0gZnVuICgpIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gcmV0dXJuX25pbFxuICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgbGV0KyB4ID0geCBpblxuICAgICAgIGxldCBuZXh0ID0gb2Zfc2VxX2x3dCBuZXh0IGluXG4gICAgICAgQ29ucyAoeCwgbmV4dClcbiAgICB8IGV4Y2VwdGlvbiBleGMgd2hlbiBMd3QuRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhjIC0+IEx3dC5mYWlsIGV4Y1xuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cbm9wZW4gTHd0LkluZml4XG5cbmV4Y2VwdGlvbiBDbG9zZWRcbmV4Y2VwdGlvbiBGdWxsXG5leGNlcHRpb24gRW1wdHlcblxuKCogQSBub2RlIGluIGEgcXVldWUgb2YgcGVuZGluZyBkYXRhLiAqKVxudHlwZSAnYSBub2RlID0ge1xuICBtdXRhYmxlIG5leHQgOiAnYSBub2RlO1xuICAoKiBOZXh0IG5vZGUgaW4gdGhlIHF1ZXVlLiBGb3IgdGhlIGxhc3Qgbm9kZSBpdCBwb2ludHMgdG8gaXRzZWxmLiAqKVxuICBtdXRhYmxlIGRhdGEgOiAnYSBvcHRpb247XG4gICgqIERhdGEgb2YgdGhpcyBub2RlLiBGb3IgdGhlIGxhc3Qgbm9kZSBpdCBpcyBhbHdheXMgW05vbmVdLiAqKVxufVxuXG4oKiBOb3RlOiBhIHF1ZXVlIGZvciBhbiBleGhhdXN0ZWQgc3RyZWFtIGlzIHJlcHJlc2VudGVkIGJ5IGEgbm9kZVxuICAgY29udGFpbmluZyBbTm9uZV0gZm9sbG93ZWQgYnkgYSBub2RlIHdpdGggaXRzZWxmIGFzIG5leHQgYW5kIFtOb25lXVxuICAgYXMgZGF0YS4gKilcblxubGV0IG5ld19ub2RlICgpID1cbiAgbGV0IHJlYyBub2RlID0geyBuZXh0ID0gbm9kZTsgZGF0YSA9IE5vbmUgfSBpblxuICBub2RlXG5cbigqIFR5cGUgb2YgYSBzdHJlYW0gc291cmNlIHVzaW5nIGEgZnVuY3Rpb24gdG8gY3JlYXRlIG5ldyBlbGVtZW50cy4gKilcbnR5cGUgJ2EgZnJvbSA9IHtcbiAgZnJvbV9jcmVhdGUgOiB1bml0IC0+ICdhIG9wdGlvbiBMd3QudDtcbiAgKCogRnVuY3Rpb24gdXNlZCB0byBjcmVhdGUgbmV3IGVsZW1lbnRzLiAqKVxuICBtdXRhYmxlIGZyb21fdGhyZWFkIDogdW5pdCBMd3QudDtcbiAgKCogVGhyZWFkIHdoaWNoOlxuXG4gICAgIC0gd2FpdCBmb3IgdGhlIHRocmVhZCByZXR1cm5lZCBieSB0aGUgbGFzdCBjYWxsIHRvIFtmcm9tX25leHRdLFxuICAgICAtIGFkZCB0aGUgbmV4dCBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLlxuXG4gICAgIElmIGl0IGlzIGEgc2xlZXBpbmcgdGhyZWFkLCB0aGVuIGl0IG11c3QgYmUgdXNlZCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGFcbiAgICAgbmV3IG9uZSB3aXRoIFtmcm9tX2NyZWF0ZV0uICopXG59XG5cbigqIFR5cGUgb2YgYSBzdHJlYW0gc291cmNlIGZvciBwdXNoIHN0cmVhbXMuICopXG50eXBlIHB1c2ggPSB7XG4gIG11dGFibGUgcHVzaF9zaWduYWwgOiB1bml0IEx3dC50O1xuICAoKiBUaHJlYWQgc2lnbmFsZWQgd2hlbiBhIG5ldyBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzdHJlYW0uICopXG4gIG11dGFibGUgcHVzaF93YWl0aW5nIDogYm9vbDtcbiAgKCogSXMgYSB0aHJlYWQgd2FpdGluZyBvbiBbcHVzaF9zaWduYWxdID8gKilcbiAgbXV0YWJsZSBwdXNoX2V4dGVybmFsIDogT2JqLnQgW0BvY2FtbC53YXJuaW5nIFwiLTY5XCJdO1xuICAoKiBSZWZlcmVuY2UgdG8gYW4gZXh0ZXJuYWwgc291cmNlLiAqKVxufVxuXG4oKiBUeXBlIG9mIGEgc3RyZWFtIHNvdXJjZSBmb3IgYm91bmRlZC1wdXNoIHN0cmVhbXMuICopXG50eXBlICdhIHB1c2hfYm91bmRlZCA9IHtcbiAgbXV0YWJsZSBwdXNoYl9zaWduYWwgOiB1bml0IEx3dC50O1xuICAoKiBUaHJlYWQgc2lnbmFsZWQgd2hlbiBhIG5ldyBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzdHJlYW0uICopXG4gIG11dGFibGUgcHVzaGJfd2FpdGluZyA6IGJvb2w7XG4gICgqIElzIGEgdGhyZWFkIHdhaXRpbmcgb24gW3B1c2hiX3NpZ25hbF0gPyAqKVxuICBtdXRhYmxlIHB1c2hiX3NpemUgOiBpbnQ7XG4gICgqIFNpemUgb2YgdGhlIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHB1c2hiX2NvdW50IDogaW50O1xuICAoKiBDdXJyZW50IGxlbmd0aCBvZiB0aGUgcXVldWUuICopXG4gIG11dGFibGUgcHVzaGJfcGVuZGluZyA6ICdhIG9wdGlvbjtcbiAgKCogVGhlIG5leHQgZWxlbWVudCB0byBwdXNoIGlmIGEgdGhyZWFkIGJsb2NrZWQgb24gcHVzaC4gV2Ugc3RvcmUgaXRcbiAgICAgaGVyZSB0byBiZSBzdXJlIGl0IHdpbGwgYmUgdGhlIGZpcnN0IGVsZW1lbnQgdG8gYmUgYWRkZWQgd2hlblxuICAgICBzcGFjZSBiZWNvbWVzIGF2YWlsYWJsZS4gKilcbiAgbXV0YWJsZSBwdXNoYl9wdXNoX3dhaXRlciA6IHVuaXQgTHd0LnQ7XG4gIG11dGFibGUgcHVzaGJfcHVzaF93YWtlbmVyIDogdW5pdCBMd3QudTtcbiAgKCogVGhyZWFkIGJsb2NrZWQgb24gcHVzaC4gKilcbiAgbXV0YWJsZSBwdXNoYl9leHRlcm5hbCA6IE9iai50IFtAb2NhbWwud2FybmluZyBcIi02OVwiXTtcbiAgKCogUmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIHNvdXJjZS4gKilcbn1cblxuKCogU291cmNlIG9mIGEgc3RyZWFtLiAqKVxudHlwZSAnYSBzb3VyY2UgPVxuICB8IEZyb20gb2YgJ2EgZnJvbVxuICB8IEZyb21fZGlyZWN0IG9mICh1bml0IC0+ICdhIG9wdGlvbilcbiAgfCBQdXNoIG9mIHB1c2hcbiAgfCBQdXNoX2JvdW5kZWQgb2YgJ2EgcHVzaF9ib3VuZGVkXG5cbnR5cGUgJ2EgdCA9IHtcbiAgc291cmNlIDogJ2Egc291cmNlO1xuICAoKiBUaGUgc291cmNlIG9mIHRoZSBzdHJlYW0uICopXG4gIGNsb3NlIDogdW5pdCBMd3QudTtcbiAgKCogQSB3YWtlbmVyIGZvciBhIHRocmVhZCB0aGF0IHNsZWVwcyB1bnRpbCB0aGUgc3RyZWFtIGlzIGNsb3NlZC4gKilcbiAgY2xvc2VkIDogdW5pdCBMd3QudDtcbiAgKCogQSB3YWl0ZXIgZm9yIGEgdGhyZWFkIHRoYXQgc2xlZXBzIHVudGlsIHRoZSBzdHJlYW0gaXMgY2xvc2VkLiAqKVxuICBtdXRhYmxlIG5vZGUgOiAnYSBub2RlO1xuICAoKiBQb2ludGVyIHRvIGZpcnN0IHBlbmRpbmcgZWxlbWVudCwgb3IgdG8gW2xhc3RdIGlmIHRoZXJlIGlzIG5vXG4gICAgIHBlbmRpbmcgZWxlbWVudC4gKilcbiAgbGFzdCA6ICdhIG5vZGUgcmVmO1xuICAoKiBOb2RlIG1hcmtpbmcgdGhlIGVuZCBvZiB0aGUgcXVldWUgb2YgcGVuZGluZyBlbGVtZW50cy4gKilcbn1cblxuY2xhc3MgdHlwZSBbJ2FdIGJvdW5kZWRfcHVzaCA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludFxuICBtZXRob2QgcmVzaXplIDogaW50IC0+IHVuaXRcbiAgbWV0aG9kIHB1c2ggOiAnYSAtPiB1bml0IEx3dC50XG4gIG1ldGhvZCBjbG9zZSA6IHVuaXRcbiAgbWV0aG9kIGNvdW50IDogaW50XG4gIG1ldGhvZCBibG9ja2VkIDogYm9vbFxuICBtZXRob2QgY2xvc2VkIDogYm9vbFxuICBtZXRob2Qgc2V0X3JlZmVyZW5jZSA6ICdhLiAnYSAtPiB1bml0XG5lbmRcblxuKCogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBjbG9uZXMgaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGZpcnN0XG4gICBwZW5kaW5nIGVsZW1lbnQuICopXG5sZXQgY2xvbmUgcyA9XG4gIChtYXRjaCBzLnNvdXJjZSB3aXRoXG4gICB8IFB1c2hfYm91bmRlZCBfIC0+IGludmFsaWRfYXJnIFwiTHd0X3N0cmVhbS5jbG9uZVwiXG4gICB8IEZyb20gXyB8IEZyb21fZGlyZWN0IF8gfCBQdXNoIF8gLT4gKCkpO1xuICB7XG4gICAgc291cmNlID0gcy5zb3VyY2U7XG4gICAgY2xvc2UgPSBzLmNsb3NlO1xuICAgIGNsb3NlZCA9IHMuY2xvc2VkO1xuICAgIG5vZGUgPSBzLm5vZGU7XG4gICAgbGFzdCA9IHMubGFzdDtcbiAgfVxuXG5sZXQgZnJvbV9zb3VyY2Ugc291cmNlID1cbiAgbGV0IG5vZGUgPSBuZXdfbm9kZSAoKSBpblxuICBsZXQgY2xvc2VkLCBjbG9zZSA9IEx3dC53YWl0ICgpIGluXG4gIHsgc291cmNlIDsgY2xvc2UgOyBjbG9zZWQgOyBub2RlIDsgbGFzdCA9IHJlZiBub2RlIH1cblxubGV0IGZyb20gZiA9XG4gIGZyb21fc291cmNlIChGcm9tIHsgZnJvbV9jcmVhdGUgPSBmOyBmcm9tX3RocmVhZCA9IEx3dC5yZXR1cm5fdW5pdCB9KVxuXG5sZXQgZnJvbV9kaXJlY3QgZiA9XG4gIGZyb21fc291cmNlIChGcm9tX2RpcmVjdCBmKVxuXG5sZXQgY2xvc2VkIHMgPSBzLmNsb3NlZFxuXG5sZXQgaXNfY2xvc2VkIHMgPVxuICBub3QgKEx3dC5pc19zbGVlcGluZyAoY2xvc2VkIHMpKVxuXG5sZXQgZW5xdWV1ZScgZSBsYXN0ID1cbiAgbGV0IG5vZGUgPSAhbGFzdFxuICBhbmQgbmV3X2xhc3QgPSBuZXdfbm9kZSAoKSBpblxuICBub2RlLmRhdGEgPC0gZTtcbiAgbm9kZS5uZXh0IDwtIG5ld19sYXN0O1xuICBsYXN0IDo9IG5ld19sYXN0XG5cbmxldCBlbnF1ZXVlIGUgcyA9XG4gIGVucXVldWUnIGUgcy5sYXN0XG5cbmxldCBjcmVhdGVfd2l0aF9yZWZlcmVuY2UgKCkgPVxuICAoKiBDcmVhdGUgdGhlIHNvdXJjZSBmb3Igbm90aWZpY2F0aW9ucyBvZiBuZXcgZWxlbWVudHMuICopXG4gIGxldCBzb3VyY2UsIHB1c2hfc2lnbmFsX3Jlc29sdmVyID1cbiAgICBsZXQgcHVzaF9zaWduYWwsIHB1c2hfc2lnbmFsX3Jlc29sdmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICAoeyBwdXNoX3NpZ25hbDtcbiAgICAgICBwdXNoX3dhaXRpbmcgPSBmYWxzZTtcbiAgICAgICBwdXNoX2V4dGVybmFsID0gT2JqLnJlcHIgKCkgfSxcbiAgICAgcmVmIHB1c2hfc2lnbmFsX3Jlc29sdmVyKVxuICBpblxuICBsZXQgdCA9IGZyb21fc291cmNlIChQdXNoIHNvdXJjZSkgaW5cbiAgKCogW3B1c2hdIHNob3VsZCBub3QgY2xvc2Ugb3ZlciBbdF0gc28gdGhhdCBpdCBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQgZXZlblxuICAgKiB0aGVyZSBhcmUgc3RpbGwgcmVmZXJlbmNlcyB0byBbcHVzaF0uIFVucGFjayBhbGwgdGhlIGNvbXBvbmVudHMgb2YgW3RdXG4gICAqIHRoYXQgW3B1c2hdIG5lZWRzIGFuZCByZWZlcmVuY2UgdGhvc2UgaWRlbnRpZmllcnMgaW5zdGVhZC4gKilcbiAgbGV0IGNsb3NlID0gdC5jbG9zZSBhbmQgY2xvc2VkID0gdC5jbG9zZWQgYW5kIGxhc3QgPSB0Lmxhc3QgaW5cbiAgKCogVGhlIHB1c2ggZnVuY3Rpb24uIEl0IGRvZXMgbm90IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHN0cmVhbS4gKilcbiAgbGV0IHB1c2ggeCA9XG4gICAgaWYgbm90IChMd3QuaXNfc2xlZXBpbmcgY2xvc2VkKSB0aGVuIHJhaXNlIENsb3NlZDtcbiAgICAoKiBQdXNoIHRoZSBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgIGVucXVldWUnIHggbGFzdDtcbiAgICAoKiBTZW5kIGEgc2lnbmFsIGlmIGF0IGxlYXN0IG9uZSB0aHJlYWQgaXMgd2FpdGluZyBmb3IgYSBuZXdcbiAgICAgICBlbGVtZW50LiAqKVxuICAgIGlmIHNvdXJjZS5wdXNoX3dhaXRpbmcgdGhlbiBiZWdpblxuICAgICAgc291cmNlLnB1c2hfd2FpdGluZyA8LSBmYWxzZTtcbiAgICAgICgqIFVwZGF0ZSB0aHJlYWRzLiAqKVxuICAgICAgbGV0IG9sZF9wdXNoX3NpZ25hbF9yZXNvbHZlciA9ICFwdXNoX3NpZ25hbF9yZXNvbHZlciBpblxuICAgICAgbGV0IG5ld193YWl0ZXIsIG5ld19wdXNoX3NpZ25hbF9yZXNvbHZlciA9IEx3dC53YWl0ICgpIGluXG4gICAgICBzb3VyY2UucHVzaF9zaWduYWwgPC0gbmV3X3dhaXRlcjtcbiAgICAgIHB1c2hfc2lnbmFsX3Jlc29sdmVyIDo9IG5ld19wdXNoX3NpZ25hbF9yZXNvbHZlcjtcbiAgICAgICgqIFNpZ25hbCB0aGF0IGEgbmV3IHZhbHVlIGhhcyBiZWVuIHJlY2VpdmVkLiAqKVxuICAgICAgTHd0Lndha2V1cF9sYXRlciBvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIgKClcbiAgICBlbmQ7XG4gICAgKCogRG8gdGhpcyBhdCB0aGUgZW5kIGluIGNhc2Ugb25lIG9mIHRoZSBmdW5jdGlvbiByYWlzZSBhblxuICAgICAgIGV4Y2VwdGlvbi4gKilcbiAgICBpZiB4ID0gTm9uZSB0aGVuIEx3dC53YWtldXAgY2xvc2UgKClcbiAgaW5cbiAgKHQsIHB1c2gsIGZ1biB4IC0+IHNvdXJjZS5wdXNoX2V4dGVybmFsIDwtIE9iai5yZXByIHgpXG5cbmxldCByZXR1cm4gYSA9XG4gIGxldCBzdHJlYW0sIHB1c2gsIF8gPSBjcmVhdGVfd2l0aF9yZWZlcmVuY2UgKCkgaW5cbiAgcHVzaCAoU29tZSBhKTtcbiAgcHVzaCBOb25lO1xuICBzdHJlYW1cblxubGV0IHJldHVybl9sd3QgYSA9XG4gIGxldCBzb3VyY2UsIHB1c2gsIF8gPSBjcmVhdGVfd2l0aF9yZWZlcmVuY2UgKCkgaW5cbiAgTHd0LmRvbnRfd2FpdFxuICAgIChmdW4gKCkgLT5cbiAgICAgIEx3dC5iaW5kIGEgKGZ1biB4IC0+XG4gICAgICAgIHB1c2ggKFNvbWUgeCk7XG4gICAgICAgIHB1c2ggTm9uZTtcbiAgICAgICAgTHd0LnJldHVybl91bml0KSlcbiAgICAoZnVuIF9leGMgLT4gcHVzaCBOb25lKTtcbiAgc291cmNlXG5cbmxldCBvZl9zZXEgcyA9XG4gIGxldCBzID0gcmVmIHMgaW5cbiAgbGV0IGdldCAoKSA9XG4gICAgbWF0Y2ggIXMgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiBOb25lXG4gICAgfCBTZXEuQ29ucyAoZWx0LCBzJykgLT4gcyA6PSBzJzsgU29tZSBlbHRcbiAgaW5cbiAgZnJvbV9kaXJlY3QgZ2V0XG5cbmxldCBvZl9sd3Rfc2VxIHMgPVxuICBsZXQgcyA9IHJlZiBzIGluXG4gIGxldCBnZXQgKCkgPVxuICAgICFzICgpID58PSBmdW5jdGlvblxuICAgIHwgTHd0X3NlcS5OaWwgLT4gTm9uZVxuICAgIHwgTHd0X3NlcS5Db25zIChlbHQsIHMnKSAtPiBzIDo9IHMnOyBTb21lIGVsdFxuICBpblxuICBmcm9tIGdldFxuXG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgc291cmNlLCBwdXNoLCBfID0gY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gIChzb3VyY2UsIHB1c2gpXG5cbmxldCBvZl9pdGVyIGl0ZXIgaSA9XG4gIGxldCBzdHJlYW0sIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgaXRlciAoZnVuIHggLT4gcHVzaCAoU29tZSB4KSkgaTtcbiAgcHVzaCBOb25lO1xuICBzdHJlYW1cblxubGV0IG9mX2xpc3QgbCA9XG4gIG9mX2l0ZXIgTGlzdC5pdGVyIGxcblxubGV0IG9mX2FycmF5IGEgPVxuICBvZl9pdGVyIEFycmF5Lml0ZXIgYVxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBvZl9pdGVyIFN0cmluZy5pdGVyIHNcblxuKCogQWRkIHRoZSBwZW5kaW5nIGVsZW1lbnQgdG8gdGhlIHF1ZXVlIGFuZCBub3RpZnkgdGhlIGJsb2NrZWQgcHVzaGVkLlxuXG4gICBQcmVjb25kaXRpb246IGluZm8ucHVzaGJfcGVuZGluZyA9IFNvbWUgX1xuXG4gICBUaGlzIGRvZXMgbm90IG1vZGlmeSBpbmZvLnB1c2hiX2NvdW50LiAqKVxubGV0IG5vdGlmeV9wdXNoZXIgaW5mbyBsYXN0ID1cbiAgKCogUHVzaCB0aGUgZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgZW5xdWV1ZScgaW5mby5wdXNoYl9wZW5kaW5nIGxhc3Q7XG4gICgqIENsZWFyIHBlbmRpbmcgZWxlbWVudC4gKilcbiAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIE5vbmU7XG4gICgqIFdha2V1cCB0aGUgcHVzaGVyLiAqKVxuICBsZXQgb2xkX3dha2VuZXIgPSBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciBpblxuICBsZXQgd2FpdGVyLCB3YWtlbmVyID0gTHd0LnRhc2sgKCkgaW5cbiAgaW5mby5wdXNoYl9wdXNoX3dhaXRlciA8LSB3YWl0ZXI7XG4gIGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIDwtIHdha2VuZXI7XG4gIEx3dC53YWtldXBfbGF0ZXIgb2xkX3dha2VuZXIgKClcblxuY2xhc3MgWydhXSBib3VuZGVkX3B1c2hfaW1wbCAoaW5mbyA6ICdhIHB1c2hfYm91bmRlZCkgd2FrZW5lcl9jZWxsIGxhc3QgY2xvc2UgPSBvYmplY3RcbiAgdmFsIG11dGFibGUgY2xvc2VkID0gZmFsc2VcblxuICBtZXRob2Qgc2l6ZSA9XG4gICAgaW5mby5wdXNoYl9zaXplXG5cbiAgbWV0aG9kIHJlc2l6ZSBzaXplID1cbiAgICBpZiBzaXplIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTHd0X3N0cmVhbS5ib3VuZGVkX3B1c2gjcmVzaXplXCI7XG4gICAgaW5mby5wdXNoYl9zaXplIDwtIHNpemU7XG4gICAgaWYgaW5mby5wdXNoYl9jb3VudCA8IGluZm8ucHVzaGJfc2l6ZSAmJiBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZSB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnB1c2hiX2NvdW50IDwtIGluZm8ucHVzaGJfY291bnQgKyAxO1xuICAgICAgbm90aWZ5X3B1c2hlciBpbmZvIGxhc3RcbiAgICBlbmRcblxuICBtZXRob2QgcHVzaCB4ID1cbiAgICBpZiBjbG9zZWQgdGhlblxuICAgICAgTHd0LmZhaWwgQ2xvc2VkXG4gICAgZWxzZSBpZiBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZSB0aGVuXG4gICAgICBMd3QuZmFpbCBGdWxsXG4gICAgZWxzZSBpZiBpbmZvLnB1c2hiX2NvdW50ID49IGluZm8ucHVzaGJfc2l6ZSB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnB1c2hiX3BlbmRpbmcgPC0gU29tZSB4O1xuICAgICAgTHd0LmNhdGNoXG4gICAgICAgIChmdW4gKCkgLT4gaW5mby5wdXNoYl9wdXNoX3dhaXRlcilcbiAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgICAgfCBMd3QuQ2FuY2VsZWQgLT5cbiAgICAgICAgICAgICBpbmZvLnB1c2hiX3BlbmRpbmcgPC0gTm9uZTtcbiAgICAgICAgICAgICBsZXQgd2FpdGVyLCB3YWtlbmVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICAgICBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyIDwtIHdhaXRlcjtcbiAgICAgICAgICAgICBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciA8LSB3YWtlbmVyO1xuICAgICAgICAgICAgIEx3dC5mYWlsIGV4blxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBMd3QuZmFpbCBleG4pXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgICBlbnF1ZXVlJyAoU29tZSB4KSBsYXN0O1xuICAgICAgaW5mby5wdXNoYl9jb3VudCA8LSBpbmZvLnB1c2hiX2NvdW50ICsgMTtcbiAgICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgICAgZWxlbWVudC4gKilcbiAgICAgIGlmIGluZm8ucHVzaGJfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfd2FpdGluZyA8LSBmYWxzZTtcbiAgICAgICAgKCogVXBkYXRlIHRocmVhZHMuICopXG4gICAgICAgIGxldCBvbGRfd2FrZW5lciA9ICF3YWtlbmVyX2NlbGwgaW5cbiAgICAgICAgbGV0IG5ld193YWl0ZXIsIG5ld193YWtlbmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICAgICAgaW5mby5wdXNoYl9zaWduYWwgPC0gbmV3X3dhaXRlcjtcbiAgICAgICAgd2FrZW5lcl9jZWxsIDo9IG5ld193YWtlbmVyO1xuICAgICAgICAoKiBTaWduYWwgdGhhdCBhIG5ldyB2YWx1ZSBoYXMgYmVlbiByZWNlaXZlZC4gKilcbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuICAgICAgZW5kO1xuICAgICAgTHd0LnJldHVybl91bml0XG4gICAgZW5kXG5cbiAgbWV0aG9kIGNsb3NlID1cbiAgICBpZiBub3QgY2xvc2VkIHRoZW4gYmVnaW5cbiAgICAgIGNsb3NlZCA8LSB0cnVlO1xuICAgICAgbGV0IG5vZGUgPSAhbGFzdCBhbmQgbmV3X2xhc3QgPSBuZXdfbm9kZSAoKSBpblxuICAgICAgbm9kZS5kYXRhIDwtIE5vbmU7XG4gICAgICBub2RlLm5leHQgPC0gbmV3X2xhc3Q7XG4gICAgICBsYXN0IDo9IG5ld19sYXN0O1xuICAgICAgaWYgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmUgdGhlbiBiZWdpblxuICAgICAgICBpbmZvLnB1c2hiX3BlbmRpbmcgPC0gTm9uZTtcbiAgICAgICAgTHd0Lndha2V1cF9sYXRlcl9leG4gaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgQ2xvc2VkXG4gICAgICBlbmQ7XG4gICAgICAoKiBTZW5kIGEgc2lnbmFsIGlmIGF0IGxlYXN0IG9uZSB0aHJlYWQgaXMgd2FpdGluZyBmb3IgYSBuZXdcbiAgICAgICAgIGVsZW1lbnQuICopXG4gICAgICBpZiBpbmZvLnB1c2hiX3dhaXRpbmcgdGhlbiBiZWdpblxuICAgICAgICBpbmZvLnB1c2hiX3dhaXRpbmcgPC0gZmFsc2U7XG4gICAgICAgIGxldCBvbGRfd2FrZW5lciA9ICF3YWtlbmVyX2NlbGwgaW5cbiAgICAgICAgKCogU2lnbmFsIHRoYXQgYSBuZXcgdmFsdWUgaGFzIGJlZW4gcmVjZWl2ZWQuICopXG4gICAgICAgIEx3dC53YWtldXBfbGF0ZXIgb2xkX3dha2VuZXIgKClcbiAgICAgIGVuZDtcbiAgICAgIEx3dC53YWtldXAgY2xvc2UgKCk7XG4gICAgZW5kXG5cbiAgbWV0aG9kIGNvdW50ID1cbiAgICBpbmZvLnB1c2hiX2NvdW50XG5cbiAgbWV0aG9kIGJsb2NrZWQgPVxuICAgIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lXG5cbiAgbWV0aG9kIGNsb3NlZCA9XG4gICAgY2xvc2VkXG5cbiAgbWV0aG9kIHNldF9yZWZlcmVuY2UgOiAnYS4gJ2EgLT4gdW5pdCA9XG4gICAgZnVuIHggLT4gaW5mby5wdXNoYl9leHRlcm5hbCA8LSBPYmoucmVwciB4XG5lbmRcblxubGV0IGNyZWF0ZV9ib3VuZGVkIHNpemUgPVxuICBpZiBzaXplIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTHd0X3N0cmVhbS5jcmVhdGVfYm91bmRlZFwiO1xuICAoKiBDcmVhdGUgdGhlIHNvdXJjZSBmb3Igbm90aWZpY2F0aW9ucyBvZiBuZXcgZWxlbWVudHMuICopXG4gIGxldCBpbmZvLCB3YWtlbmVyX2NlbGwgPVxuICAgIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgIGxldCBwdXNoX3dhaXRlciwgcHVzaF93YWtlbmVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAoeyBwdXNoYl9zaWduYWwgPSB3YWl0ZXI7XG4gICAgICAgcHVzaGJfd2FpdGluZyA9IGZhbHNlO1xuICAgICAgIHB1c2hiX3NpemUgPSBzaXplO1xuICAgICAgIHB1c2hiX2NvdW50ID0gMDtcbiAgICAgICBwdXNoYl9wZW5kaW5nID0gTm9uZTtcbiAgICAgICBwdXNoYl9wdXNoX3dhaXRlciA9IHB1c2hfd2FpdGVyO1xuICAgICAgIHB1c2hiX3B1c2hfd2FrZW5lciA9IHB1c2hfd2FrZW5lcjtcbiAgICAgICBwdXNoYl9leHRlcm5hbCA9IE9iai5yZXByICgpIH0sXG4gICAgIHJlZiB3YWtlbmVyKVxuICBpblxuICBsZXQgdCA9IGZyb21fc291cmNlIChQdXNoX2JvdW5kZWQgaW5mbykgaW5cbiAgKHQsIG5ldyBib3VuZGVkX3B1c2hfaW1wbCBpbmZvIHdha2VuZXJfY2VsbCB0Lmxhc3QgdC5jbG9zZSlcblxuKCogV2FpdCBmb3IgYSBuZXcgZWxlbWVudCB0byBiZSBhZGRlZCB0byB0aGUgcXVldWUgb2YgcGVuZGluZyBlbGVtZW50XG4gICBvZiB0aGUgc3RyZWFtLiAqKVxubGV0IGZlZWQgcyA9XG4gIG1hdGNoIHMuc291cmNlIHdpdGhcbiAgfCBGcm9tIGZyb20gLT5cbiAgICAoKiBUaGVyZSBpcyBhbHJlYWR5IGEgdGhyZWFkIHN0YXJ0ZWQgdG8gY3JlYXRlIGEgbmV3IGVsZW1lbnQsXG4gICAgICAgd2FpdCBmb3IgdGhpcyBvbmUgdG8gdGVybWluYXRlLiAqKVxuICAgIGlmIEx3dC5pc19zbGVlcGluZyBmcm9tLmZyb21fdGhyZWFkIHRoZW5cbiAgICAgIEx3dC5wcm90ZWN0ZWQgZnJvbS5mcm9tX3RocmVhZFxuICAgIGVsc2UgYmVnaW5cbiAgICAgICgqIE90aGVyd2lzZSByZXF1ZXN0IGEgbmV3IGVsZW1lbnQuICopXG4gICAgICBsZXQgdGhyZWFkID1cbiAgICAgICAgZnJvbS5mcm9tX2NyZWF0ZSAoKSA+Pj0gZnVuIHggLT5cbiAgICAgICAgKCogUHVzaCB0aGUgZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgICAgZW5xdWV1ZSB4IHM7XG4gICAgICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBzLmNsb3NlICgpO1xuICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgIGluXG4gICAgICAoKiBBbGxvdyBvdGhlciB0aHJlYWRzIHRvIGFjY2VzcyB0aGlzIHRocmVhZC4gKilcbiAgICAgIGZyb20uZnJvbV90aHJlYWQgPC0gdGhyZWFkO1xuICAgICAgTHd0LnByb3RlY3RlZCB0aHJlYWRcbiAgICBlbmRcbiAgfCBGcm9tX2RpcmVjdCBmIC0+XG4gICAgbGV0IHggPSBmICgpIGluXG4gICAgKCogUHVzaCB0aGUgZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICBlbnF1ZXVlIHggcztcbiAgICBpZiB4ID0gTm9uZSB0aGVuIEx3dC53YWtldXAgcy5jbG9zZSAoKTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCBQdXNoIHB1c2ggLT5cbiAgICBwdXNoLnB1c2hfd2FpdGluZyA8LSB0cnVlO1xuICAgIEx3dC5wcm90ZWN0ZWQgcHVzaC5wdXNoX3NpZ25hbFxuICB8IFB1c2hfYm91bmRlZCBwdXNoIC0+XG4gICAgcHVzaC5wdXNoYl93YWl0aW5nIDwtIHRydWU7XG4gICAgTHd0LnByb3RlY3RlZCBwdXNoLnB1c2hiX3NpZ25hbFxuXG4oKiBSZW1vdmUgW25vZGVdIGZyb20gdGhlIHRvcCBvZiB0aGUgcXVldWUsIG9yIGRvIG5vdGhpbmcgaWYgaXQgd2FzXG4gICBhbHJlYWR5IGNvbnN1bWVkLlxuXG4gICBQcmVjb25kaXRpb246IG5vZGUuZGF0YSA8PiBOb25lXG4qKVxubGV0IGNvbnN1bWUgcyBub2RlID1cbiAgaWYgbm9kZSA9PSBzLm5vZGUgdGhlbiBiZWdpblxuICAgIHMubm9kZSA8LSBub2RlLm5leHQ7XG4gICAgbWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICAgIHwgUHVzaF9ib3VuZGVkIGluZm8gLT5cbiAgICAgIGlmIGluZm8ucHVzaGJfcGVuZGluZyA9IE5vbmUgdGhlblxuICAgICAgICBpbmZvLnB1c2hiX2NvdW50IDwtIGluZm8ucHVzaGJfY291bnQgLSAxXG4gICAgICBlbHNlXG4gICAgICAgIG5vdGlmeV9wdXNoZXIgaW5mbyBzLmxhc3RcbiAgICB8IEZyb20gXyB8IEZyb21fZGlyZWN0IF8gfCBQdXNoIF8gLT5cbiAgICAgICgpXG4gIGVuZFxuXG5sZXQgcmVjIHBlZWtfcmVjIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBwZWVrX3JlYyBzIG5vZGVcbiAgZWxzZVxuICAgIEx3dC5yZXR1cm4gbm9kZS5kYXRhXG5cbmxldCBwZWVrIHMgPSBwZWVrX3JlYyBzIHMubm9kZVxuXG5sZXQgcmVjIG5wZWVrX3JlYyBub2RlIGFjYyBuIHMgPVxuICBpZiBuIDw9IDAgdGhlblxuICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gbnBlZWtfcmVjIG5vZGUgYWNjIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbnBlZWtfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgbnBlZWsgbiBzID0gbnBlZWtfcmVjIHMubm9kZSBbXSBuIHNcblxubGV0IHJlYyBnZXRfcmVjIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBnZXRfcmVjIHMgbm9kZVxuICBlbHNlIGJlZ2luXG4gICAgaWYgbm9kZS5kYXRhIDw+IE5vbmUgdGhlbiBjb25zdW1lIHMgbm9kZTtcbiAgICBMd3QucmV0dXJuIG5vZGUuZGF0YVxuICBlbmRcblxubGV0IGdldCBzID0gZ2V0X3JlYyBzIHMubm9kZVxuXG5sZXQgcmVjIGdldF9leG5fcmVjIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBMd3QudHJ5X2JpbmRcbiAgICAgIChmdW4gKCkgLT4gZmVlZCBzKVxuICAgICAgKGZ1biAoKSAtPiBnZXRfZXhuX3JlYyBzIG5vZGUpXG4gICAgICAoZnVuIGV4biAtPiBMd3QucmV0dXJuIChTb21lIChSZXN1bHQuRXJyb3IgZXhuKSkpXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBMd3QucmV0dXJuIChTb21lIChSZXN1bHQuT2sgdmFsdWUpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCB3cmFwX2V4biBzID0gZnJvbSAoZnVuICgpIC0+IGdldF9leG5fcmVjIHMgcy5ub2RlKVxuXG5sZXQgcmVjIG5nZXRfcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICBlbHNlIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBuZ2V0X3JlYyBub2RlIGFjYyBuIHNcbiAgZWxzZVxuICAgIG1hdGNoIHMubm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBuZ2V0X3JlYyBub2RlLm5leHQgKHggOjogYWNjKSAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IG5nZXQgbiBzID0gbmdldF9yZWMgcy5ub2RlIFtdIG4gc1xuXG5sZXQgcmVjIGdldF93aGlsZV9yZWMgbm9kZSBhY2MgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGdldF93aGlsZV9yZWMgbm9kZSBhY2MgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuIGJlZ2luXG4gICAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgICBnZXRfd2hpbGVfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIGYgc1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgZ2V0X3doaWxlIGYgcyA9IGdldF93aGlsZV9yZWMgcy5ub2RlIFtdIGYgc1xuXG5sZXQgcmVjIGdldF93aGlsZV9zX3JlYyBub2RlIGFjYyBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZ2V0X3doaWxlX3NfcmVjIG5vZGUgYWNjIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPiBiZWdpblxuICAgICAgICBmIHggPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgICAgIGdldF93aGlsZV9zX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSBmIHNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgZ2V0X3doaWxlX3MgZiBzID0gZ2V0X3doaWxlX3NfcmVjIHMubm9kZSBbXSBmIHNcblxubGV0IHJlYyBuZXh0X3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gbmV4dF9yZWMgcyBub2RlXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIEx3dC5yZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LmZhaWwgRW1wdHlcblxubGV0IG5leHQgcyA9IG5leHRfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgbGFzdF9uZXdfcmVjIG5vZGUgeCBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUgeCBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIEx3dC5mYWlsIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMd3QucmV0dXJuIHhcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUubmV4dCB4IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4geFxuXG5sZXQgbGFzdF9uZXcgcyA9XG4gIGxldCBub2RlID0gcy5ub2RlIGluXG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gbmV4dCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIHggLT5cbiAgICAgIGxhc3RfbmV3X3JlYyBub2RlIHggc1xuICAgIHwgTHd0LkZhaWwgXyB8IEx3dC5TbGVlcCAtPlxuICAgICAgdGhyZWFkXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxhc3RfbmV3X3JlYyBub2RlLm5leHQgeCBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QuZmFpbCBFbXB0eVxuXG5sZXQgcmVjIHRvX2xpc3RfcmVjIG5vZGUgYWNjIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gdG9fbGlzdF9yZWMgbm9kZSBhY2Mgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICB0b19saXN0X3JlYyBub2RlLm5leHQgKHggOjogYWNjKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCB0b19saXN0IHMgPSB0b19saXN0X3JlYyBzLm5vZGUgW10gc1xuXG5sZXQgcmVjIHRvX3N0cmluZ19yZWMgbm9kZSBidWYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiB0b19zdHJpbmdfcmVjIG5vZGUgYnVmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiB4O1xuICAgICAgdG9fc3RyaW5nX3JlYyBub2RlLm5leHQgYnVmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKEJ1ZmZlci5jb250ZW50cyBidWYpXG5cbmxldCB0b19zdHJpbmcgcyA9IHRvX3N0cmluZ19yZWMgcy5ub2RlIChCdWZmZXIuY3JlYXRlIDEyOCkgc1xuXG5sZXQganVuayBzID1cbiAgbGV0IG5vZGUgPSBzLm5vZGUgaW5cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlbiBiZWdpblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+XG4gICAgaWYgbm9kZS5kYXRhIDw+IE5vbmUgdGhlbiBjb25zdW1lIHMgbm9kZTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbmRcblxubGV0IHJlYyBuanVua19yZWMgbm9kZSBuIHMgPVxuICBpZiBuIDw9IDAgdGhlblxuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbHNlIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBuanVua19yZWMgbm9kZSBuIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbmp1bmtfcmVjIG5vZGUubmV4dCAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgbmp1bmsgbiBzID0gbmp1bmtfcmVjIHMubm9kZSBuIHNcblxubGV0IHJlYyBqdW5rX3doaWxlX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBqdW5rX3doaWxlX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlbiBiZWdpblxuICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAganVua193aGlsZV9yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGp1bmtfd2hpbGUgZiBzID0ganVua193aGlsZV9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGp1bmtfd2hpbGVfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4ganVua193aGlsZV9zX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPiBiZWdpblxuICAgICAgICBmIHggPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgICAgIGp1bmtfd2hpbGVfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICBlbmRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua193aGlsZV9zIGYgcyA9IGp1bmtfd2hpbGVfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGp1bmtfb2xkX3JlYyBub2RlIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBqdW5rX29sZF9yZWMgbm9kZSBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIEx3dC5mYWlsIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAganVua19vbGRfcmVjIG5vZGUubmV4dCBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGp1bmtfb2xkIHMgPSBqdW5rX29sZF9yZWMgcy5ub2RlIHNcblxubGV0IHJlYyBnZXRfYXZhaWxhYmxlX3JlYyBub2RlIGFjYyBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAgZ2V0X2F2YWlsYWJsZV9yZWMgbm9kZSBhY2Mgc1xuICAgIHwgTHd0LkZhaWwgZXhuIC0+XG4gICAgICByYWlzZSBleG5cbiAgICB8IEx3dC5TbGVlcCAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGdldF9hdmFpbGFibGVfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuXG5sZXQgZ2V0X2F2YWlsYWJsZSBzID0gZ2V0X2F2YWlsYWJsZV9yZWMgcy5ub2RlIFtdIHNcblxubGV0IHJlYyBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBub2RlIGFjYyBuIHMgPVxuICBpZiBuIDw9IDAgdGhlblxuICAgIExpc3QucmV2IGFjY1xuICBlbHNlIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIG5vZGUgYWNjIG4gc1xuICAgIHwgTHd0LkZhaWwgZXhuIC0+XG4gICAgICByYWlzZSBleG5cbiAgICB8IEx3dC5TbGVlcCAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBzLm5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMaXN0LnJldiBhY2NcblxubGV0IGdldF9hdmFpbGFibGVfdXBfdG8gbiBzID0gZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgcy5ub2RlIFtdIG4gc1xuXG5sZXQgcmVjIGlzX2VtcHR5IHMgPVxuICBpZiBzLm5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpc19lbXB0eSBzXG4gIGVsc2VcbiAgICBMd3QucmV0dXJuIChzLm5vZGUuZGF0YSA9IE5vbmUpXG5cbmxldCBtYXAgZiBzID1cbiAgZnJvbSAoZnVuICgpIC0+IGdldCBzID58PSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPlxuICAgIGxldCB4ID0gZiB4IGluXG4gICAgU29tZSB4XG4gIHwgTm9uZSAtPlxuICAgIE5vbmUpXG5cbmxldCBtYXBfcyBmIHMgPVxuICBmcm9tIChmdW4gKCkgLT4gZ2V0IHMgPj49IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+XG4gICAgZiB4ID58PSAoZnVuIHggLT4gU29tZSB4KVxuICB8IE5vbmUgLT5cbiAgICBMd3QucmV0dXJuX25vbmUpXG5cbmxldCBmaWx0ZXIgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCBzIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlblxuICAgICAgICB0XG4gICAgICBlbHNlXG4gICAgICAgIG5leHQgKClcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZpbHRlcl9zIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gYmVnaW5cbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICB0XG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBuZXh0ICgpXG4gICAgICBlbmRcbiAgICB8IE5vbmUgLT5cbiAgICAgIHRcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBmaWx0ZXJfbWFwIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgIEx3dC5yZXR1cm4geFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbmV4dCAoKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZpbHRlcl9tYXBfcyBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGdldCBzID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdCA9IGYgeCBpblxuICAgICAgKHQgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgIHRcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIG5leHQgKCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBtYXBfbGlzdCBmIHMgPVxuICBsZXQgcGVuZGluZ3MgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBtYXRjaCAhcGVuZGluZ3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIChnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgbGV0IGwgPSBmIHggaW5cbiAgICAgICAgIHBlbmRpbmdzIDo9IGw7XG4gICAgICAgICBuZXh0ICgpXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBMd3QucmV0dXJuX25vbmUpXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHBlbmRpbmdzIDo9IGw7XG4gICAgICBMd3QucmV0dXJuIChTb21lIHgpXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgbWFwX2xpc3RfcyBmIHMgPVxuICBsZXQgcGVuZGluZ3MgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBtYXRjaCAhcGVuZGluZ3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIChnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgZiB4ID4+PSBmdW4gbCAtPlxuICAgICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgICAgIG5leHQgKClcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIEx3dC5yZXR1cm5fbm9uZSlcbiAgICB8IHggOjogbCAtPlxuICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgeClcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBmbGF0dGVuIHMgPVxuICBtYXBfbGlzdCAoZnVuIGwgLT4gbCkgc1xuXG5sZXQgcmVjIGZvbGRfcmVjIG5vZGUgZiBzIGFjYyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmb2xkX3JlYyBub2RlIGYgcyBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgIGZvbGRfcmVjIG5vZGUubmV4dCBmIHMgYWNjXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIGFjY1xuXG5sZXQgZm9sZCBmIHMgYWNjID0gZm9sZF9yZWMgcy5ub2RlIGYgcyBhY2NcblxubGV0IHJlYyBmb2xkX3NfcmVjIG5vZGUgZiBzIGFjYyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmb2xkX3NfcmVjIG5vZGUgZiBzIGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBmIHggYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBmb2xkX3NfcmVjIG5vZGUubmV4dCBmIHMgYWNjXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIGFjY1xuXG5sZXQgZm9sZF9zIGYgcyBhY2MgPSBmb2xkX3NfcmVjIHMubm9kZSBmIHMgYWNjXG5cbmxldCByZWMgaXRlcl9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXRlcl9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0ICgpID0gZiB4IGluXG4gICAgICBpdGVyX3JlYyBub2RlLm5leHQgZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGl0ZXIgZiBzID0gaXRlcl9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGl0ZXJfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXRlcl9zX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBmIHggPj49IGZ1biAoKSAtPlxuICAgICAgaXRlcl9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGl0ZXJfcyBmIHMgPSBpdGVyX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBpdGVyX3BfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGl0ZXJfcF9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHJlcyA9IGYgeCBpblxuICAgICAgbGV0IHJlc3QgPSBpdGVyX3BfcmVjIG5vZGUubmV4dCBmIHMgaW5cbiAgICAgIHJlcyA+Pj0gZnVuICgpIC0+IHJlc3RcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlcl9wIGYgcyA9IGl0ZXJfcF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgaXRlcl9uID8obWF4X2NvbmN1cnJlbmN5ID0gMSkgZiBzdHJlYW0gPVxuICBiZWdpblxuICAgIGlmIG1heF9jb25jdXJyZW5jeSA8PSAwIHRoZW5cbiAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkx3dF9zdHJlYW0uaXRlcl9uOiBtYXhfY29uY3VycmVuY3kgbXVzdCBiZSA+IDAsICVkIGdpdmVuXCJcbiAgICAgICAgICBtYXhfY29uY3VycmVuY3lcbiAgICAgIGluXG4gICAgICBpbnZhbGlkX2FyZyBtZXNzYWdlXG4gIGVuZDtcbiAgbGV0IHJlYyBsb29wIHJ1bm5pbmcgYXZhaWxhYmxlID1cbiAgICBiZWdpblxuICAgICAgaWYgYXZhaWxhYmxlID4gMCB0aGVuIChcbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlKVxuICAgICAgKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEx3dC5uY2hvb3NlX3NwbGl0IHJ1bm5pbmcgPj49IGZ1biAoY29tcGxldGUsIHJ1bm5pbmcpIC0+XG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSArIExpc3QubGVuZ3RoIGNvbXBsZXRlKVxuICAgICAgKVxuICAgIGVuZCA+Pj0gZnVuIChydW5uaW5nLCBhdmFpbGFibGUpIC0+XG4gICAgZ2V0IHN0cmVhbSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5qb2luIHJ1bm5pbmdcbiAgICB8IFNvbWUgZWx0IC0+XG4gICAgICBsb29wIChmIGVsdCA6OiBydW5uaW5nKSAocHJlZCBhdmFpbGFibGUpXG4gIGluXG4gIGxvb3AgW10gbWF4X2NvbmN1cnJlbmN5XG5cbmxldCByZWMgZmluZF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggYXMgb3B0IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW5cbiAgICAgICAgTHd0LnJldHVybiBvcHRcbiAgICAgIGVsc2VcbiAgICAgICAgZmluZF9yZWMgbm9kZS5uZXh0IGYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kIGYgcyA9IGZpbmRfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBmaW5kX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggYXMgb3B0IC0+IGJlZ2luXG4gICAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgICBmIHggPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gb3B0XG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBmaW5kX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kX3MgZiBzID0gZmluZF9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgZmluZF9tYXBfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfbWFwX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgaWYgeCA9IE5vbmUgdGhlblxuICAgICAgICBmaW5kX21hcF9yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgZWxzZVxuICAgICAgICBMd3QucmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZF9tYXAgZiBzID0gZmluZF9tYXBfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBmaW5kX21hcF9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX21hcF9zX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgdCA9IGYgeCBpblxuICAgICAgKHQgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBmaW5kX21hcF9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgIHQpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmRfbWFwX3MgZiBzID0gZmluZF9tYXBfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgY29tYmluZSBzMSBzMiA9XG4gIGxldCBuZXh0ICgpID1cbiAgICBsZXQgdDEgPSBnZXQgczEgYW5kIHQyID0gZ2V0IHMyIGluXG4gICAgdDEgPj49IGZ1biBuMSAtPlxuICAgIHQyID4+PSBmdW4gbjIgLT5cbiAgICBtYXRjaCBuMSwgbjIgd2l0aFxuICAgIHwgU29tZSB4MSwgU29tZSB4MiAtPlxuICAgICAgTHd0LnJldHVybiAoU29tZSh4MSwgeDIpKVxuICAgIHwgXyAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgYXBwZW5kIHMxIHMyID1cbiAgbGV0IGN1cnJlbnRfcyA9IHJlZiBzMSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0ICFjdXJyZW50X3MgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSBfIC0+XG4gICAgICB0XG4gICAgfCBOb25lIC0+XG4gICAgICBpZiAhY3VycmVudF9zID09IHMyIHRoZW5cbiAgICAgICAgTHd0LnJldHVybl9ub25lXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGN1cnJlbnRfcyA6PSBzMjtcbiAgICAgICAgbmV4dCAoKVxuICAgICAgZW5kXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgY29uY2F0IHNfdG9wID1cbiAgbGV0IGN1cnJlbnRfcyA9IHJlZiAoZnJvbSAoZnVuICgpIC0+IEx3dC5yZXR1cm5fbm9uZSkpIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgIWN1cnJlbnRfcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIGdldCBzX3RvcCA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgIGN1cnJlbnRfcyA6PSBzO1xuICAgICAgICBuZXh0ICgpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgY2hvb3NlIHN0cmVhbXMgPVxuICBsZXQgc291cmNlIHMgPSAocywgZ2V0IHMgPnw9IGZ1biB4IC0+IChzLCB4KSkgaW5cbiAgbGV0IHN0cmVhbXMgPSByZWYgKExpc3QubWFwIHNvdXJjZSBzdHJlYW1zKSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFzdHJlYW1zIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgICB8IGwgLT5cbiAgICAgIEx3dC5jaG9vc2UgKExpc3QubWFwIHNuZCBsKSA+Pj0gZnVuIChzLCB4KSAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJlbW92ZV9hc3NxIHMgbCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBzdHJlYW1zIDo9IHNvdXJjZSBzIDo6IGw7XG4gICAgICAgIEx3dC5yZXR1cm4geFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHN0cmVhbXMgOj0gbDtcbiAgICAgICAgbmV4dCAoKVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IHBhcnNlIHMgZiA9XG4gIChtYXRjaCBzLnNvdXJjZSB3aXRoXG4gICB8IFB1c2hfYm91bmRlZCBfIC0+IGludmFsaWRfYXJnIFwiTHd0X3N0cmVhbS5wYXJzZVwiXG4gICB8IEZyb20gXyB8IEZyb21fZGlyZWN0IF8gfCBQdXNoIF8gLT4gKCkpO1xuICBsZXQgbm9kZSA9IHMubm9kZSBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IGYgcylcbiAgICAoZnVuIGV4biAtPlxuICAgICAgIHMubm9kZSA8LSBub2RlO1xuICAgICAgIEx3dC5mYWlsIGV4bilcblxubGV0IGhleGR1bXAgc3RyZWFtID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgODAgYW5kIG51bSA9IHJlZiAwIGluXG4gIGZyb20gYmVnaW4gZnVuIF8gLT5cbiAgICBuZ2V0IDE2IHN0cmVhbSA+Pj0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgICB8IGwgLT5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBQcmludGYuYnByaW50ZiBidWYgXCIlMDh4fCAgXCIgIW51bTtcbiAgICAgIG51bSA6PSAhbnVtICsgMTY7XG4gICAgICBsZXQgcmVjIGJ5dGVzIHBvcyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBibGFua3MgcG9zXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgaWYgcG9zID0gOCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGJ1ZiBcIiUwMnggXCIgKENoYXIuY29kZSB4KTtcbiAgICAgICAgICBieXRlcyAocG9zICsgMSkgbFxuICAgICAgYW5kIGJsYW5rcyBwb3MgPVxuICAgICAgICBpZiBwb3MgPCAxNiB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgcG9zID0gOCB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIgICAgXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIgICBcIjtcbiAgICAgICAgICBibGFua3MgKHBvcyArIDEpXG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGJ5dGVzIDAgbDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiB8XCI7XG4gICAgICBMaXN0Lml0ZXIgKGZ1biBjaCAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIChpZiBjaCA+PSAnXFx4MjAnICYmIGNoIDw9ICdcXHg3ZScgdGhlbiBjaCBlbHNlICcuJykpIGw7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICd8JztcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUoQnVmZmVyLmNvbnRlbnRzIGJ1ZikpXG4gIGVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cbigqKiBNb2R1bGUgW0x3dF9yZXN1bHRdOiBleHBsaWNpdCBlcnJvciBoYW5kbGluZyAqKVxuXG5vcGVuIFJlc3VsdFxuXG50eXBlICgrJ2EsICsnYikgdCA9ICgnYSwgJ2IpIFJlc3VsdC50IEx3dC50XG5cbmxldCByZXR1cm4geCA9IEx3dC5yZXR1cm4gKE9rIHgpXG5sZXQgZmFpbCBlID0gTHd0LnJldHVybiAoRXJyb3IgZSlcblxubGV0IGxpZnQgPSBMd3QucmV0dXJuXG5sZXQgb2sgeCA9IEx3dC5tYXAgKGZ1biB5IC0+IE9rIHkpIHhcbmxldCBlcnJvciB4ID0gTHd0Lm1hcCAoZnVuIHkgLT4gRXJyb3IgeSkgeFxuXG5sZXQgbWFwIGYgZSA9XG4gIEx3dC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gICAgICB8IE9rIHggLT4gT2sgKGYgeCkpXG4gICAgZVxuXG5sZXQgbWFwX2Vycm9yIGYgZSA9XG4gIEx3dC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoZiBlKVxuICAgICAgfCBPayB4IC0+IE9rIHgpXG4gICAgZVxubGV0IG1hcF9lcnIgZiBlID0gbWFwX2Vycm9yIGYgZVxuXG5sZXQgY2F0Y2ggZSA9XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gb2sgKGUgKCkpKVxuICAgIGZhaWxcblxubGV0IGdldF9leG4gZSA9XG4gIEx3dC5iaW5kIGVcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgT2sgeCAtPiBMd3QucmV0dXJuIHhcbiAgICAgIHwgRXJyb3IgZSAtPiBMd3QuZmFpbCBlKVxuXG5sZXQgYmluZCBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gTHd0LnJldHVybiAoRXJyb3IgZSlcbiAgICAgIHwgT2sgeCAtPiBmIHgpXG4gICAgICBcbmxldCBiaW5kX2Vycm9yIGUgZiA9XG4gIEx3dC5iaW5kIGVcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBmIGVcbiAgICAgIHwgT2sgeCAtPiBMd3QucmV0dXJuIChPayB4KSlcbiAgICAgIFxubGV0IGJpbmRfbHd0IGUgZiA9XG4gIEx3dC5iaW5kIGVcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgT2sgeCAtPiBvayAoZiB4KVxuICAgICAgfCBFcnJvciBlIC0+IGZhaWwgZSlcblxubGV0IGJpbmRfcmVzdWx0IGUgZiA9XG4gIEx3dC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gICAgICB8IE9rIHggLT4gZiB4KVxuICAgIGVcblxubGV0IGJpbmRfbHd0X2Vycm9yIGUgZiA9XG4gIEx3dC5iaW5kIGVcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBMd3QuYmluZCAoZiBlKSBmYWlsXG4gICAgICB8IE9rIHggLT4gcmV0dXJuIHgpXG5sZXQgYmluZF9sd3RfZXJyIGUgZiA9IGJpbmRfbHd0X2Vycm9yIGUgZlxuXG5sZXQgYm90aCBhIGIgPVxuICBsZXQgcyA9IHJlZiBOb25lIGluXG4gIGxldCBzZXRfb25jZSBlID1cbiAgICBtYXRjaCAhcyB3aXRoXG4gICAgfCBOb25lIC0+IHM6PSBTb21lIGVcbiAgICB8IFNvbWUgXyAtPiAoKVxuICBpblxuICBsZXQgKGEsYikgPSBtYXBfZXJyb3Igc2V0X29uY2UgYSxtYXBfZXJyb3Igc2V0X29uY2UgYiBpblxuICBsZXQgc29tZV9hc3NlcnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgZSAtPiBFcnJvciBlXG4gIGluXG4gIEx3dC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgT2sgeCwgT2sgeSAtPiBPayAoeCx5KVxuICAgICAgfCBFcnJvciBfLCBPayBfXG4gICAgICB8IE9rIF8sRXJyb3IgX1xuICAgICAgfCBFcnJvciBfLCBFcnJvciBfIC0+IHNvbWVfYXNzZXJ0ICFzKVxuICAgIChMd3QuYm90aCBhIGIpXG5cbmxldCBpdGVyIGYgciA9XG4gIEx3dC5iaW5kIHJcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgT2sgeCAtPiBmIHhcbiAgICAgIHwgRXJyb3IgXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBpdGVyX2Vycm9yIGYgciA9XG4gIEx3dC5iaW5kIHJcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBmIGVcbiAgICAgIHwgT2sgXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKD4+PSkgPSBiaW5kXG4gIGxldCAoPnw9KSBlIGYgPSBtYXAgZiBlXG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCB0IH5mID0gbWFwIGYgdFxuICAgIGxldCBiaW5kIHQgfmYgPSBiaW5kIHQgZlxuICAgIGxldCBib3RoID0gYm90aFxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3ludGF4ID0gc3RydWN0XG4gIGxldCAobGV0KikgPSBiaW5kXG4gIGxldCAoYW5kKikgPSBib3RoXG5cbiAgbGV0IChsZXQrKSB4IGYgPSBtYXAgZiB4XG4gIGxldCAoYW5kKykgPSBib3RoXG5lbmRcblxuaW5jbHVkZSBJbmZpeFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG5zaWdcbiAgdHlwZSB0XG4gIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9XG5zaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG4gIHZhbCBlbXB0eTogdFxuICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgdmFsIGZpbmRfbWluOiB0IC0+IGVsdFxuICB2YWwgbG9va3VwX21pbjogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfbWluOiB0IC0+IHRcbiAgdmFsIHNpemU6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZWx0ID0gT3JkLnQpID1cbnN0cnVjdFxuICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgdHlwZSB0ID0gdHJlZSBsaXN0XG4gIGFuZCB0cmVlID0gTm9kZSBvZiBlbHQgKiBpbnQgKiB0cmVlIGxpc3RcblxuICBsZXQgcm9vdCAoTm9kZSAoeCwgXywgXykpID0geFxuICBsZXQgcmFuayAoTm9kZSAoXywgciwgXykpID0gclxuICBsZXQgbGluayAoTm9kZSAoeDEsIHIxLCBjMSkgYXMgdDEpIChOb2RlICh4MiwgcjIsIGMyKSBhcyB0MikgPVxuICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeDEgeDIgaW5cbiAgICBpZiBjIDw9IDAgdGhlbiBOb2RlICh4MSwgcjEgKyAxLCB0Mjo6YzEpIGVsc2UgTm9kZSh4MiwgcjIgKyAxLCB0MTo6YzIpXG4gIGxldCByZWMgaW5zIHQgPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAgICAgLT5cbiAgICAgIFt0XVxuICAgIHwgKHQnOjpfKSBhcyB0cyB3aGVuIHJhbmsgdCA8IHJhbmsgdCcgLT5cbiAgICAgIHQ6OnRzXG4gICAgfCB0Jzo6dHMgLT5cbiAgICAgIGlucyAobGluayB0IHQnKSB0c1xuXG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBpc19lbXB0eSB0cyA9IHRzID0gW11cbiAgbGV0IGFkZCB4IHRzID0gaW5zIChOb2RlICh4LCAwLCBbXSkpIHRzXG4gIGxldCByZWMgdW5pb24gdHMgdHMnID1cbiAgICBtYXRjaCB0cywgdHMnIHdpdGhcbiAgICAgIChbXSwgXykgLT4gdHMnXG4gICAgfCAoXywgW10pIC0+IHRzXG4gICAgfCAodDE6OnRzMSwgdDI6OnRzMikgIC0+XG4gICAgICBpZiByYW5rIHQxIDwgcmFuayB0MiB0aGVuIHQxIDo6IHVuaW9uIHRzMSAodDI6OnRzMilcbiAgICAgIGVsc2UgaWYgcmFuayB0MiA8IHJhbmsgdDEgdGhlbiB0MiA6OiB1bmlvbiAodDE6OnRzMSkgdHMyXG4gICAgICBlbHNlIGlucyAobGluayB0MSB0MikgKHVuaW9uIHRzMSB0czIpXG5cbiAgbGV0IHJlYyBmaW5kX21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgW3RdICAgLT4gcm9vdCB0XG4gICAgfCB0Ojp0cyAtPlxuICAgICAgbGV0IHggPSBmaW5kX21pbiB0cyBpblxuICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSAocm9vdCB0KSB4IGluXG4gICAgICBpZiBjIDwgMCB0aGVuIHJvb3QgdCBlbHNlIHhcblxuICBsZXQgcmVjIGxvb2t1cF9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBbXSAgICAtPiBOb25lXG4gICAgfCBbdF0gICAtPiBTb21lIChyb290IHQpXG4gICAgfCB0Ojp0cyAtPlxuICAgICAgbWF0Y2ggbG9va3VwX21pbiB0cyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHggYXMgcmVzdWx0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgKHJvb3QgdCkgeCBpblxuICAgICAgICBpZiBjIDwgMCB0aGVuIFNvbWUgKHJvb3QgdCkgZWxzZSByZXN1bHRcblxuICBsZXQgcmVjIGdldF9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAgICAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFt0XSAgIC0+ICh0LCBbXSlcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBsZXQgKHQnLCB0cycpID0gZ2V0X21pbiB0cyBpblxuICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSAocm9vdCB0KSAocm9vdCB0JykgaW5cbiAgICAgIGlmIGMgPCAwIHRoZW4gKHQsIHRzKSBlbHNlICh0JywgdDo6dHMnKVxuXG4gIGxldCByZW1vdmVfbWluID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCB0cyAtPlxuICAgICAgbGV0IChOb2RlIChfLCBfLCBjKSwgdHMpID0gZ2V0X21pbiB0cyBpblxuICAgICAgdW5pb24gKExpc3QucmV2IGMpIHRzXG5cbiAgbGV0IHJlYyBzaXplIGwgPVxuICAgIGxldCBzaXpldHJlZSAoTm9kZSAoXyxfLHRsKSkgPSAxICsgc2l6ZSB0bCBpblxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gcyB0IC0+IHMgKyBzaXpldHJlZSB0KSAwIGxcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBBIHN1cnZleSBhbmQgbWVhc3VyZW1lbnRzIG9mIG1vcmUgb3B0aW1pemVkIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgZm91bmQgYXQ6XG5cbiAgICBodHRwczovL2pzdGhvbWFzLmdpdGh1Yi5pby9tYXAtY29tcGFyaXNvbi5odG1sXG5cbiAgIFNlZSBkaXNjdXNzaW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzM0Ny4gKilcbmxldCB0YWlsX3JlY3Vyc2l2ZV9tYXAgZiBsID1cbiAgTGlzdC5yZXYgKExpc3QucmV2X21hcCBmIGwpXG5cbmxldCB0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQ6OnRsIC0+IChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKChmIGkgaGQpOjphY2MpIChpICsgMSkgdGxcbiAgaW5cbiAgaW5uZXIgW10gMCBsXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCByZWMgaXRlcl9zIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuICgpIC0+XG4gICAgaXRlcl9zIGYgbFxuXG5sZXQgaXRlcl9wIGYgbCA9XG4gIGxldCB0cyA9IExpc3QucmV2X21hcCAoTHd0LmFwcGx5IGYpIGwgaW5cbiAgTHd0LmpvaW4gdHNcblxubGV0IHJlYyBpdGVyaV9zIGkgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgKGYgaSkgeCA+Pj0gZnVuICgpIC0+XG4gICAgaXRlcmlfcyAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmlfcyBmIGwgPSBpdGVyaV9zIDAgZiBsXG5cbmxldCBpdGVyaV9wIGYgbCA9XG4gIGxldCBmJyBpID0gTHd0LmFwcGx5IChmIGkpIGluXG4gIGxldCB0cyA9IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYnIGwgaW5cbiAgTHd0LmpvaW4gdHNcblxubGV0IG1hcF9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IExpc3QucmV2IGFjYyB8PiBMd3QucmV0dXJuXG4gICAgfCBoZDo6dGwgLT5cbiAgICAgIEx3dC5hcHBseSBmIGhkID4+PSBmdW4gciAtPlxuICAgICAgKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAocjo6YWNjKSB0bFxuICBpblxuICBpbm5lciBbXSBsXG5cbmxldCByZWMgX2NvbGxlY3RfcmV2IGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuIGFjY1xuICB8IHQ6OnRzIC0+XG4gICAgdCA+Pj0gZnVuIGkgLT5cbiAgICAoX2NvbGxlY3RfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSAoaTo6YWNjKSB0c1xuXG5sZXQgbWFwX3AgZiBsID1cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBfY29sbGVjdF9yZXYgW10gdHNcblxubGV0IGZpbHRlcl9tYXBfcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTGlzdC5yZXYgYWNjIHw+IEx3dC5yZXR1cm5cbiAgICB8IGhkOjp0bCAtPlxuICAgICAgTHd0LmFwcGx5IGYgaGQgPj49IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgdiAtPiAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pICh2OjphY2MpIHRsXG4gICAgICB8IE5vbmUgLT4gKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSBhY2MgdGxcbiAgaW5cbiAgaW5uZXIgW10gbFxuXG5sZXQgZmlsdGVyX21hcF9wIGYgbCA9XG4gIGxldCByZWMgX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgLT4gTHd0LnJldHVybiBhY2NcbiAgfCB0Ojp0cyAtPlxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHYgLT4gKF9jb2xsZWN0X29wdGlvbmFsX3JldiBbQG9jYW1sLnRhaWxjYWxsXSkgKHY6OmFjYykgdHNcbiAgICB8IE5vbmUgLT4gKF9jb2xsZWN0X29wdGlvbmFsX3JldiBbQG9jYW1sLnRhaWxjYWxsXSkgYWNjIHRzXG4gIGluXG4gIGxldCB0cyA9IExpc3QucmV2X21hcCAoTHd0LmFwcGx5IGYpIGwgaW5cbiAgX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtdIHRzXG5cbmxldCBtYXBpX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTGlzdC5yZXYgYWNjIHw+IEx3dC5yZXR1cm5cbiAgICB8IGhkOjp0bCAtPlxuICAgICAgTHd0LmFwcGx5IChmIGkpIGhkID4+PSBmdW4gdiAtPlxuICAgICAgKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAodjo6YWNjKSAoaSsxKSB0bFxuICBpblxuICBpbm5lciBbXSAwIGxcblxubGV0IG1hcGlfcCBmIGwgPVxuICBsZXQgZicgaSA9IEx3dC5hcHBseSAoZiBpKSBpblxuICBsZXQgdHMgPSB0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiBmJyBsIGluXG4gIF9jb2xsZWN0X3JldiBbXSB0c1xuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kX3MgYWNjIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybiBhY2NcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW4geCAtPlxuICAgIHJldl9tYXBfYXBwZW5kX3MgKHggOjogYWNjKSBmIGxcblxubGV0IHJldl9tYXBfcyBmIGwgPVxuICByZXZfbWFwX2FwcGVuZF9zIFtdIGYgbFxuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kX3AgYWNjIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgYWNjXG4gIHwgeCA6OiBsIC0+XG4gICAgcmV2X21hcF9hcHBlbmRfcFxuICAgICAgKEx3dC5hcHBseSBmIHggPj49IGZ1biB4IC0+XG4gICAgICAgYWNjID58PSBmdW4gbCAtPlxuICAgICAgIHggOjogbCkgZiBsXG5cbmxldCByZXZfbWFwX3AgZiBsID1cbiAgcmV2X21hcF9hcHBlbmRfcCBMd3QucmV0dXJuX25pbCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnRfcyBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuIGFjY1xuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSAoZiBhY2MpIHggPj49IGZ1biBhY2MgLT5cbiAgICAoZm9sZF9sZWZ0X3MgW0BvY2FtbC50YWlsY2FsbF0pIGYgYWNjIGxcblxubGV0IGZvbGRfcmlnaHRfcyBmIGwgYWNjID1cbiAgbGV0IHJlYyBpbm5lciBmIGEgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IEx3dC5yZXR1cm4gYVxuICAgIHwgaGQ6OnRsIC0+IChMd3QuYXBwbHkgKGYgaGQpIGEpID4+PSBmdW4gYScgLT5cbiAgICAgIChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgZiBhJyB0bFxuICBpblxuICBpbm5lciBmIGFjYyAoTGlzdC5yZXYgbClcblxubGV0IHJlYyBmb3JfYWxsX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX3RydWVcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgKGZvcl9hbGxfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBsXG4gICAgfCBmYWxzZSAtPlxuICAgICAgTHd0LnJldHVybl9mYWxzZVxuXG5sZXQgZm9yX2FsbF9wIGYgbCA9XG4gIG1hcF9wIGYgbCA+Pj0gZnVuIGJsIC0+IExpc3QuZm9yX2FsbCAoZnVuIHggLT4geCkgYmwgfD4gTHd0LnJldHVyblxuXG5sZXQgcmVjIGV4aXN0c19zIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybl9mYWxzZVxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICBMd3QucmV0dXJuX3RydWVcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoZXhpc3RzX3MgW0BvY2FtbC50YWlsY2FsbF0pIGYgbFxuXG5sZXQgZXhpc3RzX3AgZiBsID1cbiAgbWFwX3AgZiBsID4+PSBmdW4gYmwgLT4gTGlzdC5leGlzdHMgKGZ1biB4IC0+IHgpIGJsIHw+IEx3dC5yZXR1cm5cblxubGV0IHJlYyBmaW5kX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QuZmFpbCBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgTHd0LnJldHVybiB4XG4gICAgfCBmYWxzZSAtPlxuICAgICAgKGZpbmRfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBsXG5cbmxldCBfb3B0aW9uYWxpemUgZiB4ID1cbiAgZiB4ID4+PSBmdW4gYiAtPiBpZiBiIHRoZW4gTHd0LnJldHVybiAoU29tZSB4KSBlbHNlIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmlsdGVyX3MgZiBsID1cbiAgZmlsdGVyX21hcF9zIChfb3B0aW9uYWxpemUgZikgbFxuXG5sZXQgZmlsdGVyX3AgZiBsID1cbiAgIGZpbHRlcl9tYXBfcCAoX29wdGlvbmFsaXplIGYpIGxcblxubGV0IHBhcnRpdGlvbl9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjMSBhY2MyID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MxLCBMaXN0LnJldiBhY2MyKVxuICAgIHwgaGQ6OnRsIC0+IEx3dC5hcHBseSBmIGhkID4+PSBmdW4gYiAtPlxuICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICBpbm5lciAoaGQ6OmFjYzEpIGFjYzIgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlubmVyIGFjYzEgKGhkOjphY2MyKSB0bFxuICBpblxuICBpbm5lciBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fcCBmIGwgPVxuICBsZXQgZyB4ID0gTHd0LmFwcGx5IGYgeCA+Pj0gZnVuIGIgLT4gTHd0LnJldHVybiAoYiwgeCkgaW5cbiAgbWFwX3AgZyBsID4+PSBmdW4gdGwgLT5cbiAgbGV0IGdyb3VwMSA9IHRhaWxfcmVjdXJzaXZlX21hcCBzbmQgQEAgTGlzdC5maWx0ZXIgZnN0IHRsIGluXG4gIGxldCBncm91cDIgPVxuICAgIHRhaWxfcmVjdXJzaXZlX21hcCBzbmQgQEAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCBAQCBmc3QgeCkgdGwgaW5cbiAgTHd0LnJldHVybiAoZ3JvdXAxLCBncm91cDIpXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgJ2EgdCA9IHtcbiAgY3JlYXRlIDogdW5pdCAtPiAnYSBMd3QudDtcbiAgKCogQ3JlYXRlIGEgbmV3IHBvb2wgbWVtYmVyLiAqKVxuICBjaGVjayA6ICdhIC0+IChib29sIC0+IHVuaXQpIC0+IHVuaXQ7XG4gICgqIENoZWNrIHZhbGlkaXR5IG9mIGEgcG9vbCBtZW1iZXIgd2hlbiB1c2UgcmVzdWx0ZWQgaW4gZmFpbGVkIHByb21pc2UuICopXG4gIHZhbGlkYXRlIDogJ2EgLT4gYm9vbCBMd3QudDtcbiAgKCogVmFsaWRhdGUgYW4gZXhpc3RpbmcgZnJlZSBwb29sIG1lbWJlciBiZWZvcmUgdXNlLiAqKVxuICBkaXNwb3NlIDogJ2EgLT4gdW5pdCBMd3QudDtcbiAgKCogRGlzcG9zZSBvZiBhIHBvb2wgbWVtYmVyLiAqKVxuICBjbGVhcmVkIDogYm9vbCByZWYgcmVmO1xuICAoKiBIYXZlIHRoZSBjdXJyZW50IHBvb2wgZWxlbWVudHMgYmVlbiBjbGVhcmVkIG91dD8gKilcbiAgbWF4IDogaW50O1xuICAoKiBTaXplIG9mIHRoZSBwb29sLiAqKVxuICBtdXRhYmxlIGNvdW50IDogaW50O1xuICAoKiBOdW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHBvb2wuICopXG4gIGxpc3QgOiAnYSBRdWV1ZS50O1xuICAoKiBBdmFpbGFibGUgcG9vbCBtZW1iZXJzLiAqKVxuICB3YWl0ZXJzIDogJ2EgTHd0LnUgTHd0X3NlcXVlbmNlLnQ7XG4gICgqIFByb21pc2UgcmVzb2x2ZXJzIHdhaXRpbmcgZm9yIGEgZnJlZSBtZW1iZXIuICopXG59XG5cbmxldCBjcmVhdGUgbSA/KHZhbGlkYXRlID0gZnVuIF8gLT4gTHd0LnJldHVybl90cnVlKSA/KGNoZWNrID0gZnVuIF8gZiAtPiBmIHRydWUpID8oZGlzcG9zZSA9IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCkgY3JlYXRlID1cbiAgeyBtYXggPSBtO1xuICAgIGNyZWF0ZSA9IGNyZWF0ZTtcbiAgICB2YWxpZGF0ZSA9IHZhbGlkYXRlO1xuICAgIGNoZWNrID0gY2hlY2s7XG4gICAgZGlzcG9zZSA9IGRpc3Bvc2U7XG4gICAgY2xlYXJlZCA9IHJlZiAocmVmIGZhbHNlKTtcbiAgICBjb3VudCA9IDA7XG4gICAgbGlzdCA9IFF1ZXVlLmNyZWF0ZSAoKTtcbiAgICB3YWl0ZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSB9XG5cbigqIENyZWF0ZSBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IGNyZWF0ZV9tZW1iZXIgcCA9XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgICAoKiBNdXN0IGJlIGRvbmUgYmVmb3JlIHAuY3JlYXRlIHRvIHByZXZlbnQgb3RoZXIgcmVzb2x2ZXJzIGZyb21cbiAgICAgICAgICBjcmVhdGluZyBuZXcgbWVtYmVycyBpZiB0aGUgbGltaXQgaXMgcmVhY2hlZC4gKilcbiAgICAgICBwLmNvdW50IDwtIHAuY291bnQgKyAxO1xuICAgICAgIHAuY3JlYXRlICgpKVxuICAgIChmdW4gZXhuIC0+XG4gICAgICAgKCogQ3JlYXRpb24gZmFpbGVkLCBzbyBkb24ndCBpbmNyZW1lbnQgY291bnQuICopXG4gICAgICAgcC5jb3VudCA8LSBwLmNvdW50IC0gMTtcbiAgICAgICBMd3QuZmFpbCBleG4pXG5cbigqIFJlbGVhc2UgYSBwb29sIG1lbWJlci4gKilcbmxldCByZWxlYXNlIHAgYyA9XG4gIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIHAud2FpdGVycyB3aXRoXG4gIHwgU29tZSB3YWtlbmVyIC0+XG4gICAgKCogQSBwcm9taXNlIHJlc29sdmVyIGlzIHdhaXRpbmcsIGdpdmUgaXQgdGhlIHBvb2wgbWVtYmVyLiAqKVxuICAgIEx3dC53YWtldXBfbGF0ZXIgd2FrZW5lciBjXG4gIHwgTm9uZSAtPlxuICAgICgqIE5vIG9uZSBpcyB3YWl0aW5nLCBxdWV1ZSBpdC4gKilcbiAgICBRdWV1ZS5wdXNoIGMgcC5saXN0XG5cbigqIERpc3Bvc2Ugb2YgYSBwb29sIG1lbWJlci4gKilcbmxldCBkaXNwb3NlIHAgYyA9XG4gIHAuZGlzcG9zZSBjID4+PSBmdW4gKCkgLT5cbiAgcC5jb3VudCA8LSBwLmNvdW50IC0gMTtcbiAgTHd0LnJldHVybl91bml0XG5cbigqIENyZWF0ZSBhIG5ldyBtZW1iZXIgd2hlbiBvbmUgaXMgdGhyb3duIGF3YXkuICopXG5sZXQgcmVwbGFjZV9kaXNwb3NlZCBwID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgcC53YWl0ZXJzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogTm8gb25lIGlzIHdhaXRpbmcsIGRvIG5vdCBjcmVhdGUgYSBuZXcgbWVtYmVyIHRvIGF2b2lkXG4gICAgICAgbG9zaW5nIGFuIGVycm9yIGlmIGNyZWF0aW9uIGZhaWxzLiAqKVxuICAgICgpXG4gIHwgU29tZSB3YWtlbmVyIC0+XG4gICAgTHd0Lm9uX2FueVxuICAgICAgKEx3dC5hcHBseSBwLmNyZWF0ZSAoKSlcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICAgTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGMpXG4gICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgKCogQ3JlYXRpb24gZmFpbGVkLCBub3RpZnkgdGhlIHdhaXRlciBvZiB0aGUgZmFpbHVyZS4gKilcbiAgICAgICAgIEx3dC53YWtldXBfbGF0ZXJfZXhuIHdha2VuZXIgZXhuKVxuXG4oKiBWZXJpZnkgYSBtZW1iZXIgaXMgc3RpbGwgdmFsaWQgYmVmb3JlIHVzaW5nIGl0LiAqKVxubGV0IHZhbGlkYXRlX2FuZF9yZXR1cm4gcCBjID1cbiAgTHd0LnRyeV9iaW5kXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBwLnZhbGlkYXRlIGMpXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiBjXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiBSZW1vdmUgdGhpcyBtZW1iZXIgYW5kIGNyZWF0ZSBhIG5ldyBvbmUuICopXG4gICAgICAgICAgZGlzcG9zZSBwIGMgPj49IGZ1biAoKSAtPlxuICAgICAgICAgIGNyZWF0ZV9tZW1iZXIgcClcbiAgICAgIChmdW4gZSAtPlxuICAgICAgICAgKCogVmFsaWRhdGlvbiBmYWlsZWQ6IGNyZWF0ZSBhIG5ldyBtZW1iZXIgaWYgYXQgbGVhc3Qgb25lXG4gICAgICAgICAgICByZXNvbHZlciBpcyB3YWl0aW5nLiAqKVxuICAgICAgICAgZGlzcG9zZSBwIGMgPj49IGZ1biAoKSAtPlxuICAgICAgICAgcmVwbGFjZV9kaXNwb3NlZCBwO1xuICAgICAgICAgTHd0LmZhaWwgZSlcblxuKCogQWNxdWlyZSBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IGFjcXVpcmUgcCA9XG4gIGlmIFF1ZXVlLmlzX2VtcHR5IHAubGlzdCB0aGVuXG4gICAgKCogTm8gbW9yZSBhdmFpbGFibGUgbWVtYmVyLiAqKVxuICAgIGlmIHAuY291bnQgPCBwLm1heCB0aGVuXG4gICAgICAoKiBMaW1pdCBub3QgcmVhY2hlZDogY3JlYXRlIGEgbmV3IG9uZS4gKilcbiAgICAgIGNyZWF0ZV9tZW1iZXIgcFxuICAgIGVsc2VcbiAgICAgICgqIExpbWl0IHJlYWNoZWQ6IHdhaXQgZm9yIGEgZnJlZSBvbmUuICopXG4gICAgICAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIHAud2FpdGVycyA+Pj0gdmFsaWRhdGVfYW5kX3JldHVybiBwXG4gIGVsc2VcbiAgICAoKiBUYWtlIHRoZSBmaXJzdCBmcmVlIG1lbWJlciBhbmQgdmFsaWRhdGUgaXQuICopXG4gICAgbGV0IGMgPSBRdWV1ZS50YWtlIHAubGlzdCBpblxuICAgIHZhbGlkYXRlX2FuZF9yZXR1cm4gcCBjXG5cbigqIFJlbGVhc2UgYSBtZW1iZXIgd2hlbiB1c2UgcmVzdWx0ZWQgaW4gZmFpbGVkIHByb21pc2UgaWYgdGhlIG1lbWJlclxuICAgaXMgc3RpbGwgdmFsaWQuICopXG5sZXQgY2hlY2tfYW5kX3JlbGVhc2UgcCBjIGNsZWFyZWQgPVxuICBsZXQgb2sgPSByZWYgZmFsc2UgaW5cbiAgcC5jaGVjayBjIChmdW4gcmVzdWx0IC0+IG9rIDo9IHJlc3VsdCk7XG4gIGlmIGNsZWFyZWQgfHwgbm90ICFvayB0aGVuIChcbiAgICAoKiBFbGVtZW50IGlzIG5vdCBvayBvciB0aGUgcG9vbCB3YXMgY2xlYXJlZCAtIGRpc3Bvc2Ugb2YgaXQgKilcbiAgICBkaXNwb3NlIHAgY1xuICApXG4gIGVsc2UgKFxuICAgICgqIEVsZW1lbnQgaXMgb2sgLSByZWxlYXNlIGl0IGJhY2sgdG8gdGhlIHBvb2wgKilcbiAgICByZWxlYXNlIHAgYztcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgKVxuXG5sZXQgdXNlIHAgZiA9XG4gIGFjcXVpcmUgcCA+Pj0gZnVuIGMgLT5cbiAgKCogQ2FwdHVyZSB0aGUgY3VycmVudCBjbGVhcmVkIHN0YXRlIHNvIHdlIGNhbiBzZWUgaWYgaXQgY2hhbmdlcyB3aGlsZSB0aGlzXG4gICAgIGVsZW1lbnQgaXMgaW4gdXNlICopXG4gIGxldCBjbGVhcmVkID0gIShwLmNsZWFyZWQpIGluXG4gIGxldCBwcm9taXNlID1cbiAgICBMd3QuY2F0Y2hcbiAgICAgIChmdW4gKCkgLT4gZiBjKVxuICAgICAgKGZ1biBlIC0+XG4gICAgICAgICBjaGVja19hbmRfcmVsZWFzZSBwIGMgIWNsZWFyZWQgPj49IGZ1biAoKSAtPlxuICAgICAgICAgTHd0LmZhaWwgZSlcbiAgaW5cbiAgcHJvbWlzZSA+Pj0gZnVuIF8gLT5cbiAgaWYgIWNsZWFyZWQgdGhlbiAoXG4gICAgKCogcCB3YXMgY2xlYXJlZCB3aGlsZSBwcm9taXNlIHdhcyByZXNvbHZpbmcgLSBkaXNwb3NlIG9mIHRoaXMgZWxlbWVudCAqKVxuICAgIGRpc3Bvc2UgcCBjID4+PSBmdW4gKCkgLT5cbiAgICBwcm9taXNlXG4gIClcbiAgZWxzZSAoXG4gICAgcmVsZWFzZSBwIGM7XG4gICAgcHJvbWlzZVxuICApXG5cbmxldCBjbGVhciBwID1cbiAgbGV0IGVsZW1lbnRzID0gUXVldWUuZm9sZCAoZnVuIGwgZWxlbWVudCAtPiBlbGVtZW50IDo6IGwpIFtdIHAubGlzdCBpblxuICBRdWV1ZS5jbGVhciBwLmxpc3Q7XG4gICgqIEluZGljYXRlIHRvIGFueSBjdXJyZW50bHkgaW4tdXNlIGVsZW1lbnRzIHRoYXQgd2UgY2xlYXJlZCB0aGUgcG9vbCAqKVxuICBsZXQgb2xkX2NsZWFyZWQgPSAhKHAuY2xlYXJlZCkgaW5cbiAgb2xkX2NsZWFyZWQgOj0gdHJ1ZTtcbiAgcC5jbGVhcmVkIDo9IHJlZiBmYWxzZTtcbiAgTHd0X2xpc3QuaXRlcl9zIChkaXNwb3NlIHApIGVsZW1lbnRzXG5cbmxldCB3YWl0X3F1ZXVlX2xlbmd0aCBwID0gTHd0X3NlcXVlbmNlLmxlbmd0aCBwLndhaXRlcnNcbiIsIigqIE9DYW1sIHByb21pc2UgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9sd3RcbiAqIENvcHlyaWdodCAoYykgMjAwOSwgTWV0YXdlYiBUZWNobm9sb2dpZXMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAqIGFyZSBtZXQ6XG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZVxuICogICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAqICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZFxuICogICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTUVUQVdFQiBURUNITk9MT0dJRVMgYGBBUyBJUycnIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVJcbiAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIE1FVEFXRUIgVEVDSE5PTE9HSUVTIEJFXG4gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SXG4gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRlxuICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSxcbiAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFXG4gKiBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOXG4gKiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKVxuXG4oKiBUaGlzIGNvZGUgaXMgYWRhcHRlZCBmcm9tXG4gICBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMDEwMDEyMTU0MjUvaHR0cDovL2VpZ2VuY2xhc3Mub3JnOjgwL2hpa2kvbGlnaHR3ZWlnaHQtdGhyZWFkcy13aXRoLWx3dC4gKilcblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIG12YXJfY29udGVudHMgOiAnYSBvcHRpb247XG4gICgqIEN1cnJlbnQgY29udGVudHMgKilcblxuICB3cml0ZXJzIDogKCdhICogdW5pdCBMd3QudSkgTHd0X3NlcXVlbmNlLnQ7XG4gICgqIFRocmVhZHMgd2FpdGluZyB0byBwdXQgYSB2YWx1ZSAqKVxuXG4gIHJlYWRlcnMgOiAnYSBMd3QudSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogVGhyZWFkcyB3YWl0aW5nIGZvciBhIHZhbHVlICopXG59XG5cbmxldCBjcmVhdGVfZW1wdHkgKCkgPVxuICB7IG12YXJfY29udGVudHMgPSBOb25lO1xuICAgIHdyaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpO1xuICAgIHJlYWRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxubGV0IGNyZWF0ZSB2ID1cbiAgeyBtdmFyX2NvbnRlbnRzID0gU29tZSB2O1xuICAgIHdyaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpO1xuICAgIHJlYWRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxubGV0IHB1dCBtdmFyIHYgPVxuICBtYXRjaCBtdmFyLm12YXJfY29udGVudHMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBtdmFyLnJlYWRlcnMgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG12YXIubXZhcl9jb250ZW50cyA8LSBTb21lIHZcbiAgICAgIHwgU29tZSB3IC0+XG4gICAgICAgIEx3dC53YWtldXBfbGF0ZXIgdyB2XG4gICAgZW5kO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IFNvbWUgXyAtPlxuICAgIGxldCAocmVzLCB3KSA9IEx3dC50YXNrICgpIGluXG4gICAgbGV0IG5vZGUgPSBMd3Rfc2VxdWVuY2UuYWRkX3IgKHYsIHcpIG12YXIud3JpdGVycyBpblxuICAgIEx3dC5vbl9jYW5jZWwgcmVzIChmdW4gXyAtPiBMd3Rfc2VxdWVuY2UucmVtb3ZlIG5vZGUpO1xuICAgIHJlc1xuXG5sZXQgbmV4dF93cml0ZXIgbXZhciA9XG4gIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIG12YXIud3JpdGVycyB3aXRoXG4gIHwgU29tZSh2JywgdykgLT5cbiAgICBtdmFyLm12YXJfY29udGVudHMgPC0gU29tZSB2JztcbiAgICBMd3Qud2FrZXVwX2xhdGVyIHcgKClcbiAgfCBOb25lIC0+XG4gICAgbXZhci5tdmFyX2NvbnRlbnRzIDwtIE5vbmVcblxubGV0IHRha2VfYXZhaWxhYmxlIG12YXIgPVxuICBtYXRjaCBtdmFyLm12YXJfY29udGVudHMgd2l0aFxuICB8IFNvbWUgdiAtPlxuICAgIG5leHRfd3JpdGVyIG12YXI7XG4gICAgU29tZSB2XG4gIHwgTm9uZSAtPlxuICAgIE5vbmVcblxubGV0IHRha2UgbXZhciA9XG4gIG1hdGNoIHRha2VfYXZhaWxhYmxlIG12YXIgd2l0aFxuICB8IFNvbWUgdiAtPiBMd3QucmV0dXJuIHZcbiAgfCBOb25lIC0+IChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgbXZhci5yZWFkZXJzXG5cbmxldCBpc19lbXB0eSBtdmFyID1cbiAgbWF0Y2ggbXZhci5tdmFyX2NvbnRlbnRzIHdpdGhcbiAgfCBTb21lIF8gLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxub3BlbiBMd3QuSW5maXhcblxudHlwZSB0ID0geyBtdXRhYmxlIGxvY2tlZCA6IGJvb2w7IHdhaXRlcnMgOiB1bml0IEx3dC51IEx3dF9zZXF1ZW5jZS50ICB9XG5cbmxldCBjcmVhdGUgKCkgPSB7IGxvY2tlZCA9IGZhbHNlOyB3YWl0ZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSB9XG5cbmxldCBsb2NrIG0gPVxuICBpZiBtLmxvY2tlZCB0aGVuXG4gICAgKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBtLndhaXRlcnNcbiAgZWxzZSBiZWdpblxuICAgIG0ubG9ja2VkIDwtIHRydWU7XG4gICAgTHd0LnJldHVybl91bml0XG4gIGVuZFxuXG5sZXQgdW5sb2NrIG0gPVxuICBpZiBtLmxvY2tlZCB0aGVuIGJlZ2luXG4gICAgaWYgTHd0X3NlcXVlbmNlLmlzX2VtcHR5IG0ud2FpdGVycyB0aGVuXG4gICAgICBtLmxvY2tlZCA8LSBmYWxzZVxuICAgIGVsc2VcbiAgICAgICgqIFdlIGRvIG5vdCB1c2UgW0x3dC53YWtldXBdIGhlcmUgdG8gYXZvaWQgYSBzdGFjayBvdmVyZmxvd1xuICAgICAgICAgd2hlbiB1bmxvY2tpbmcgYSBsb3Qgb2YgdGhyZWFkcy4gKilcbiAgICAgIEx3dC53YWtldXBfbGF0ZXIgKEx3dF9zZXF1ZW5jZS50YWtlX2wgbS53YWl0ZXJzKSAoKVxuICBlbmRcblxubGV0IHdpdGhfbG9jayBtIGYgPVxuICBsb2NrIG0gPj49IGZ1biAoKSAtPlxuICBMd3QuZmluYWxpemUgZiAoZnVuICgpIC0+IHVubG9jayBtOyBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBpc19sb2NrZWQgbSA9IG0ubG9ja2VkXG5sZXQgaXNfZW1wdHkgbSA9IEx3dF9zZXF1ZW5jZS5pc19lbXB0eSBtLndhaXRlcnNcbiIsIigqIE9DYW1sIHByb21pc2UgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9sd3RcbiAqIENvcHlyaWdodCAoYykgMjAwOSwgTWV0YXdlYiBUZWNobm9sb2dpZXMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAqIGFyZSBtZXQ6XG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZVxuICogICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAqICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZFxuICogICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTUVUQVdFQiBURUNITk9MT0dJRVMgYGBBUyBJUycnIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG4gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVJcbiAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIE1FVEFXRUIgVEVDSE5PTE9HSUVTIEJFXG4gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SXG4gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRlxuICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSxcbiAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFXG4gKiBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOXG4gKiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKVxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG50eXBlICdhIHQgPSAnYSBMd3QudSBMd3Rfc2VxdWVuY2UudFxuXG5sZXQgY3JlYXRlID0gTHd0X3NlcXVlbmNlLmNyZWF0ZVxuXG5sZXQgd2FpdCA/bXV0ZXggY3ZhciA9XG4gIGxldCB3YWl0ZXIgPSAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIGN2YXIgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBtdXRleCB3aXRoXG4gICAgfCBTb21lIG0gLT4gTHd0X211dGV4LnVubG9jayBtXG4gICAgfCBOb25lIC0+ICgpXG4gIGluXG4gIEx3dC5maW5hbGl6ZVxuICAgIChmdW4gKCkgLT4gd2FpdGVyKVxuICAgIChmdW4gKCkgLT5cbiAgICAgICBtYXRjaCBtdXRleCB3aXRoXG4gICAgICAgfCBTb21lIG0gLT4gTHd0X211dGV4LmxvY2sgbVxuICAgICAgIHwgTm9uZSAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzaWduYWwgY3ZhciBhcmcgPVxuICB0cnlcbiAgICBMd3Qud2FrZXVwX2xhdGVyIChMd3Rfc2VxdWVuY2UudGFrZV9sIGN2YXIpIGFyZ1xuICB3aXRoIEx3dF9zZXF1ZW5jZS5FbXB0eSAtPlxuICAgICgpXG5cbmxldCBicm9hZGNhc3QgY3ZhciBhcmcgPVxuICBsZXQgd2FrZW5lcnMgPSBMd3Rfc2VxdWVuY2UuZm9sZF9yIChmdW4geCBsIC0+IHggOjogbCkgY3ZhciBbXSBpblxuICBMd3Rfc2VxdWVuY2UuaXRlcl9ub2RlX2wgTHd0X3NlcXVlbmNlLnJlbW92ZSBjdmFyO1xuICBMaXN0Lml0ZXIgKGZ1biB3YWtlbmVyIC0+IEx3dC53YWtldXBfbGF0ZXIgd2FrZW5lciBhcmcpIHdha2VuZXJzXG5cbmxldCBicm9hZGNhc3RfZXhuIGN2YXIgZXhuID1cbiAgbGV0IHdha2VuZXJzID0gTHd0X3NlcXVlbmNlLmZvbGRfciAoZnVuIHggbCAtPiB4IDo6IGwpIGN2YXIgW10gaW5cbiAgTHd0X3NlcXVlbmNlLml0ZXJfbm9kZV9sIEx3dF9zZXF1ZW5jZS5yZW1vdmUgY3ZhcjtcbiAgTGlzdC5pdGVyIChmdW4gd2FrZW5lciAtPiBMd3Qud2FrZXVwX2xhdGVyX2V4biB3YWtlbmVyIGV4bikgd2FrZW5lcnNcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxub3BlbiBMd3QuSW5maXhcblxudHlwZSAnYSBldmVudCA9ICdhIFJlYWN0LmV2ZW50XG50eXBlICdhIHNpZ25hbCA9ICdhIFJlYWN0LnNpZ25hbFxuXG5tb2R1bGUgRSA9IHN0cnVjdFxuICBpbmNsdWRlIFJlYWN0LkVcblxuICAoKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICB8IEx3dC1zcGVjaWZpYyB1dGlsaXRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG4gIGxldCBmaW5hbGlzZSBmIF8gPSBmICgpXG5cbiAgbGV0IHdpdGhfZmluYWxpc2VyIGYgZXZlbnQgPVxuICAgIGxldCByID0gcmVmICgpIGluXG4gICAgR2MuZmluYWxpc2UgKGZpbmFsaXNlIGYpIHI7XG4gICAgbWFwIChmdW4geCAtPiBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgcik7IHgpIGV2ZW50XG5cbiAgbGV0IG5leHQgZXYgPVxuICAgIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgIGxldCBldiA9IG1hcCAoZnVuIHggLT4gTHd0Lndha2V1cCB3YWtlbmVyIHgpIChvbmNlIGV2KSBpblxuICAgIEx3dC5vbl9jYW5jZWwgd2FpdGVyIChmdW4gKCkgLT4gc3RvcCBldik7XG4gICAgd2FpdGVyXG5cbiAgbGV0IGxpbWl0IGYgZSA9XG4gICAgKCogVGhyZWFkIHdoaWNoIHByZXZlbnRzIFtlXSBmcm9tIG9jY3VycmluZyB3aGlsZSBpdCBpcyBzbGVlcGluZyAqKVxuICAgIGxldCBsaW1pdGVyID0gcmVmIEx3dC5yZXR1cm5fdW5pdCBpblxuXG4gICAgKCogVGhlIG9jY3VycmVuY2UgdGhhdCBpcyBkZWxheWVkIHVudGlsIHRoZSBsaW1pdGVyIHJldHVybnMuICopXG4gICAgbGV0IGRlbGF5ZWQgPSByZWYgTm9uZSBpblxuXG4gICAgKCogVGhlIHJlc3VsdGluZyBldmVudC4gKilcbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgKCogVGhlIGxpbWl0ZXIgaXMgc2xlZXBpbmcsIHdlIHF1ZXVlIHRoZSBldmVudCBmb3IgbGF0ZXJcbiAgICAgICAgICAgICAgICBkZWxpdmVyaW5nLiAqKVxuICAgICAgICAgICAgIG1hdGNoICFkZWxheWVkIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgY2VsbCAtPlxuICAgICAgICAgICAgICAgKCogQW4gb2NjdXJyZW5jZSBpcyBhbHJlYWR5IHF1ZXVlZCwgcmVwbGFjZSBpdC4gKilcbiAgICAgICAgICAgICAgIGNlbGwgOj0geDtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGxldCBjZWxsID0gcmVmIHggaW5cbiAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gU29tZSBjZWxsO1xuICAgICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3MgIWxpbWl0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZGVsYXllZCA6PSBOb25lXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0gIWNlbGwgaW5cbiAgICAgICAgICAgICAgICAgICAgZGVsYXllZCA6PSBOb25lO1xuICAgICAgICAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgICAgICAgIHB1c2ggeCk7XG4gICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgKCogU2V0IHRoZSBsaW1pdGVyIGZvciBmdXR1cmUgZXZlbnRzLiAqKVxuICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAoKiBTZW5kIHRoZSBvY2N1cnJlbmNlIG5vdy4gKilcbiAgICAgICAgICAgICBwdXNoIHg7XG4gICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQpXG4gICAgICAgIGVcbiAgICBpblxuXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgY2FuY2VsX3RocmVhZCB0ICgpID1cbiAgICBMd3QuY2FuY2VsIHRcblxuICBsZXQgZnJvbSBmID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgZiAoKSA+Pj0gZnVuIHggLT5cbiAgICAgIHB1c2ggeDtcbiAgICAgIGxvb3AgKClcbiAgICBpblxuICAgIGxldCB0ID0gTHd0LnBhdXNlICgpID4+PSBsb29wIGluXG4gICAgd2l0aF9maW5hbGlzZXIgKGNhbmNlbF90aHJlYWQgdCkgZXZlbnRcblxuICBsZXQgdG9fc3RyZWFtIGV2ZW50ID1cbiAgICBsZXQgc3RyZWFtLCBwdXNoLCBzZXRfcmVmID0gTHd0X3N0cmVhbS5jcmVhdGVfd2l0aF9yZWZlcmVuY2UgKCkgaW5cbiAgICBzZXRfcmVmIChtYXAgKGZ1biB4IC0+IHB1c2ggKFNvbWUgeCkpIGV2ZW50KTtcbiAgICBzdHJlYW1cblxuICBsZXQgb2Zfc3RyZWFtIHN0cmVhbSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IHQgPVxuICAgICAgTHd0LnBhdXNlICgpID4+PSBmdW4gKCkgLT5cbiAgICAgIEx3dF9zdHJlYW0uaXRlciAoZnVuIHYgLT4gdHJ5IHB1c2ggdiB3aXRoIGV4biAtPiAhTHd0LmFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4bikgc3RyZWFtIGluXG4gICAgd2l0aF9maW5hbGlzZXIgKGNhbmNlbF90aHJlYWQgdCkgZXZlbnRcblxuICBsZXQgZGVsYXkgdGhyZWFkID1cbiAgICBtYXRjaCBMd3QucG9sbCB0aHJlYWQgd2l0aFxuICAgIHwgU29tZSBlIC0+XG4gICAgICBlXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXZlbnQsIHNlbmQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIEx3dC5vbl9zdWNjZXNzIHRocmVhZCAoZnVuIGUgLT4gc2VuZCBlOyBzdG9wIGV2ZW50KTtcbiAgICAgIHN3aXRjaCBuZXZlciBldmVudFxuXG4gIGxldCBrZWVwZWQgPSByZWYgW11cblxuICBsZXQga2VlcCBlID1cbiAgICBrZWVwZWQgOj0gbWFwIGlnbm9yZSBlIDo6ICFrZWVwZWRcblxuICAoKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICB8IEV2ZW50IHRyYW5zZm9ybWF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG4gIGxldCBydW5fcCBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB0IC0+IEx3dC5vbl9zdWNjZXNzIHQgKGZ1biB2IC0+IHB1c2ggdik7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBydW5fcyBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHQgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHQpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKSBlXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBtYXBfcCBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKGYgeCkgKGZ1biB2IC0+IHB1c2ggdik7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBtYXBfcyBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSkgZVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgYXBwX3AgZWYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIChmLCB4KSAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGFwcCAobWFwIChmdW4gZiB4IC0+IChmLCB4KSkgZWYpIGUpXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBhcHBfcyBlZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIChmLCB4KSAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGFwcCAobWFwIChmdW4gZiB4IC0+IChmLCB4KSkgZWYpIGUpXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmaWx0ZXJfcCBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKGYgeCkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZmlsdGVyX3MgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiB0cnVlIC0+IHB1c2ggeCB8IGZhbHNlIC0+ICgpKTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZtYXBfcCBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKGYgeCkgKGZ1bmN0aW9uIFNvbWUgeCAtPiBwdXNoIHggfCBOb25lIC0+ICgpKTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZtYXBfcyBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIFNvbWUgeCAtPiBwdXNoIHggfCBOb25lIC0+ICgpKTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGRpZmZfcyBmIGUgPVxuICAgIGxldCBwcmV2aW91cyA9IHJlZiBOb25lIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIG1hdGNoICFwcmV2aW91cyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIHByZXZpb3VzIDo9IFNvbWUgeDtcbiAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIHwgU29tZSB5IC0+XG4gICAgICAgICAgICAgcHJldmlvdXMgOj0gU29tZSB4O1xuICAgICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCB5KSlcbiAgICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgIGVcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGFjY3VtX3MgZWYgYWNjID1cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biBmIC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAhYWNjKSkgKGZ1biB4IC0+IGFjYyA6PSB4OyBwdXNoIHgpOyBOb25lKSBlZiBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZvbGRfcyBmIGFjYyBlID1cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAhYWNjIHgpKSAoZnVuIHggLT4gYWNjIDo9IHg7IHB1c2ggeCk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCByZWMgcmV2X2ZvbGQgZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHJldl9mb2xkIGYgYWNjIGwgPj49IGZ1biBhY2MgLT5cbiAgICAgIGYgYWNjIHhcblxuICBsZXQgbWVyZ2VfcyBmIGFjYyBlbCA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyBsKSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKG1lcmdlIChmdW4gYWNjIHggLT4geCA6OiBhY2MpIFtdIGVsKVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cbmVuZFxuXG5tb2R1bGUgUyA9IHN0cnVjdFxuICBpbmNsdWRlIFJlYWN0LlNcblxuICAoKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICB8IEx3dC1zcGVjaWZpYyB1dGlsaXRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG4gIGxldCBmaW5hbGlzZSBmIF8gPSBmICgpXG5cbiAgbGV0IHdpdGhfZmluYWxpc2VyIGYgc2lnbmFsID1cbiAgICBsZXQgciA9IHJlZiAoKSBpblxuICAgIEdjLmZpbmFsaXNlIChmaW5hbGlzZSBmKSByO1xuICAgIG1hcFxuICAgICAgKGZ1biB4IC0+IGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSByKTsgeClcbiAgICAgIHNpZ25hbFxuXG4gIGxldCBsaW1pdCA/ZXEgZiBzID1cbiAgICAoKiBUaHJlYWQgd2hpY2ggcHJldmVudCBbc10gdG8gY2hhbmdlcyB3aGlsZSBpdCBpcyBzbGVlcGluZyAqKVxuICAgIGxldCBsaW1pdGVyID0gcmVmIChmICgpKSBpblxuXG4gICAgKCogVGhlIG9jY3VycmVuY2UgdGhhdCBpcyBkZWxheWVkIHVudGlsIHRoZSBsaW1pdGVyIHJldHVybnMuICopXG4gICAgbGV0IGRlbGF5ZWQgPSByZWYgTm9uZSBpblxuXG4gICAgKCogVGhlIHJlc3VsdGluZyBldmVudC4gKilcbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICgqIFRoZSBsaW1pdGVyIGlzIHNsZWVwaW5nLCB3ZSBxdWV1ZSB0aGUgZXZlbnQgZm9yIGxhdGVyXG4gICAgICAgICAgICAgICAgZGVsaXZlcmluZy4gKilcbiAgICAgICAgICAgICBtYXRjaCAhZGVsYXllZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIGNlbGwgLT5cbiAgICAgICAgICAgICAgICgqIEFuIG9jY3VycmVuY2UgaXMgYWxyZWFkeSBxdWV1ZWQsIHJlcGxhY2UgaXQuICopXG4gICAgICAgICAgICAgICBjZWxsIDo9IHg7XG4gICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgY2VsbCA9IHJlZiB4IGluXG4gICAgICAgICAgICAgICBkZWxheWVkIDo9IFNvbWUgY2VsbDtcbiAgICAgICAgICAgICAgIEx3dC5vbl9zdWNjZXNzICFsaW1pdGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgZGVsYXllZCA6PSBOb25lXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbGV0IHggPSAhY2VsbCBpblxuICAgICAgICAgICAgICAgICAgZGVsYXllZCA6PSBOb25lO1xuICAgICAgICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICAgICAgcHVzaCB4KTtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAoKiBTZXQgdGhlIGxpbWl0ZXIgZm9yIGZ1dHVyZSBldmVudHMuICopXG4gICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICgqIFNlbmQgdGhlIG9jY3VycmVuY2Ugbm93LiAqKVxuICAgICAgICAgICAgIHB1c2ggeDtcbiAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZClcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuXG4gICAgaG9sZCA/ZXEgKHZhbHVlIHMpIChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKVxuXG4gIGxldCBrZWVwZWQgPSByZWYgW11cblxuICBsZXQga2VlcCBzID1cbiAgICBrZWVwZWQgOj0gbWFwIGlnbm9yZSBzIDo6ICFrZWVwZWRcblxuICAoKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICB8IFNpZ25hbCB0cmFuc2Zvcm1hdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG4gIGxldCBydW5fcyA/ZXEgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4gdCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gdCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gdmFsdWUgcykgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IG1hcF9zID9lcSBmIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgYXBwX3MgP2VxIHNmIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIChmLCB4KSAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKEUuYXBwIChFLm1hcCAoZnVuIGYgeCAtPiAoZiwgeCkpIChjaGFuZ2VzIHNmKSkgKGNoYW5nZXMgcykpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gKHZhbHVlIHNmKSAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBmaWx0ZXJfcyA/ZXEgZiBpIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gRS5mbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiB0cnVlIC0+IHB1c2ggeCB8IGZhbHNlIC0+ICgpKTsgTm9uZSkgKGNoYW5nZXMgcykgaW5cbiAgICBsZXQgeCA9IHZhbHVlIHMgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIGkgKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBmbWFwX3MgP2VxIGYgaSBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IEUuZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSAoY2hhbmdlcyBzKSBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICh2YWx1ZSBzKSkgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgaSAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGRpZmZfcyBmIHMgPVxuICAgIGxldCBwcmV2aW91cyA9IHJlZiAodmFsdWUgcykgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIGxldCB5ID0gIXByZXZpb3VzIGluXG4gICAgICAgICAgIHByZXZpb3VzIDo9IHg7XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHggeSkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBFLnNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHNhbXBsZV9zIGYgZSBzID1cbiAgICBFLm1hcF9zIChmdW4geCAtPiBmIHggKHZhbHVlIHMpKSBlXG5cbiAgbGV0IGFjY3VtX3MgP2VxIGVmIGkgPVxuICAgIGhvbGQgP2VxIGkgKEUuYWNjdW1fcyBlZiBpKVxuXG4gIGxldCBmb2xkX3MgP2VxIGYgaSBlID1cbiAgICBob2xkID9lcSBpIChFLmZvbGRfcyBmIGkgZSlcblxuICBsZXQgcmVjIHJldl9mb2xkIGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBMd3QucmV0dXJuIGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICByZXZfZm9sZCBmIGFjYyBsID4+PSBmdW4gYWNjIC0+XG4gICAgICBmIGFjYyB4XG5cbiAgbGV0IG1lcmdlX3MgP2VxIGYgYWNjIHNsID1cbiAgICBsZXQgcyA9IG1lcmdlIChmdW4gYWNjIHggLT4geCA6OiBhY2MpIFtdIHNsIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4gbCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gcmV2X2ZvbGQgZiBhY2MgbCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gcmV2X2ZvbGQgZiBhY2MgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgbDFfcyA/ZXEgZiBzMSA9XG4gICAgbWFwX3MgP2VxIGYgczFcblxuICBsZXQgbDJfcyA/ZXEgZiBzMSBzMiA9XG4gICAgKCogU29tZSBkZXRhaWxzIGFib3V0IHRoZSB1c2Ugb2YgW2Z1biBfIF8gLT4gZmFsc2VdIG9uXG4gICAgICAgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L3B1bGwvODkzI3B1bGxyZXF1ZXN0cmV2aWV3LTc4MzA4MzQ5NiAqKVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIpIC0+IGYgeDEgeDIpIChsMiB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgLT4gKHgxLCB4MikpIHMxIHMyKVxuXG4gIGxldCBsM19zID9lcSBmIHMxIHMyIHMzID1cbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyLCB4MykgLT4gZiB4MSB4MiB4MykgKGwzIH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiB4My0+ICh4MSwgeDIsIHgzKSkgczEgczIgczMpXG5cbiAgbGV0IGw0X3MgP2VxIGYgczEgczIgczMgczQgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCkgLT4gZiB4MSB4MiB4MyB4NCkgKGw0IH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiB4MyB4NC0+ICh4MSwgeDIsIHgzLCB4NCkpIHMxIHMyIHMzIHM0KVxuXG4gIGxldCBsNV9zID9lcSBmIHMxIHMyIHMzIHM0IHM1ID1cbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyLCB4MywgeDQsIHg1KSAtPiBmIHgxIHgyIHgzIHg0IHg1KSAobDUgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0IHg1LT4gKHgxLCB4MiwgeDMsIHg0LCB4NSkpIHMxIHMyIHMzIHM0IHM1KVxuXG4gIGxldCBsNl9zID9lcSBmIHMxIHMyIHMzIHM0IHM1IHM2ID1cbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyLCB4MywgeDQsIHg1LCB4NikgLT4gZiB4MSB4MiB4MyB4NCB4NSB4NikgKGw2IH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiB4MyB4NCB4NSB4Ni0+ICh4MSwgeDIsIHgzLCB4NCwgeDUsIHg2KSkgczEgczIgczMgczQgczUgczYpXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBNb25hZGljIGludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgcmV0dXJuID1cbiAgICBjb25zdFxuXG4gIGxldCBiaW5kX3MgP2VxIHMgZiA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoc3dpdGNoID9lcSAoaG9sZCB+ZXE6KCA9PSApIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKSlcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0LkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX2x3dF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfZmlsZSAqKVxubW9kdWxlIEx3dF9maWxlID0gSnNfb2Zfb2NhbWxfbHd0X19Md3RfZmlsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2pzICopXG5tb2R1bGUgTHd0X2pzID0gSnNfb2Zfb2NhbWxfbHd0X19Md3RfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qc19ldmVudHMgKilcbm1vZHVsZSBMd3RfanNfZXZlbnRzID0gSnNfb2Zfb2NhbWxfbHd0X19Md3RfanNfZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfanNvbnAgKilcbm1vZHVsZSBMd3RfanNvbnAgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc29ucFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X3htbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgTHd0X3htbEh0dHBSZXF1ZXN0ID0gSnNfb2Zfb2NhbWxfbHd0X19Md3RfeG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX2x3dF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGludCkgeSA9IHggPCB5XG5cbiAgbGV0ICggPD0gKSAoeCA6IGludCkgeSA9IHggPD0geVxuXG4gIGxldCAoIDw+ICkgKHggOiBpbnQpIHkgPSB4IDw+IHlcblxuICBsZXQgKCA9ICkgKHggOiBpbnQpIHkgPSB4ID0geVxuXG4gIGxldCAoID4gKSAoeCA6IGludCkgeSA9IHggPiB5XG5cbiAgbGV0ICggPj0gKSAoeCA6IGludCkgeSA9IHggPj0geVxuXG4gIGxldCBjb21wYXJlICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcblxuICBsZXQgZXF1YWwgKHggOiBpbnQpIHkgPSB4ID0geVxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBKc1xub3BlbiBYbWxIdHRwUmVxdWVzdFxub3BlbiEgSW1wb3J0XG5cbmxldCBlbmNvZGVfdXJsIGwgPVxuICBTdHJpbmcuY29uY2F0XG4gICAgXCImXCJcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IFVybC51cmxlbmNvZGUgbmFtZSBeIFwiPVwiIF4gVXJsLnVybGVuY29kZSAodG9fc3RyaW5nIHMpXG4gICAgICAgICB8IG5hbWUsIGBGaWxlIHMgLT4gVXJsLnVybGVuY29kZSBuYW1lIF4gXCI9XCIgXiBVcmwudXJsZW5jb2RlICh0b19zdHJpbmcgcyMjLm5hbWUpKVxuICAgICAgIGwpXG5cbigqIEhpZ2hlciBsZXZlbCBpbnRlcmZhY2U6ICopXG5cbnR5cGUgJ3Jlc3BvbnNlIGdlbmVyaWNfaHR0cF9mcmFtZSA9XG4gIHsgdXJsIDogc3RyaW5nXG4gIDsgY29kZSA6IGludFxuICA7IGhlYWRlcnMgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICA7IGNvbnRlbnQgOiAncmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA6IHVuaXQgLT4gRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0aW9uXG4gIH1cbigqKiB0eXBlIG9mIHRoZSBodHRwIGhlYWRlcnMgKilcblxudHlwZSBodHRwX2ZyYW1lID0gc3RyaW5nIGdlbmVyaWNfaHR0cF9mcmFtZVxuXG5leGNlcHRpb24gV3JvbmdfaGVhZGVycyBvZiAoaW50ICogKHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSlcblxubGV0IGRlZmF1bHRfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gSnMuT3B0LmNhc2UgcmVxIyMucmVzcG9uc2VUZXh0IChmdW4gKCkgLT4gXCJcIikgKGZ1biB4IC0+IEpzLnRvX3N0cmluZyB4KVxuICA7IGNvbnRlbnRfeG1sID1cbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgbWF0Y2ggSnMuT3B0LnRvX29wdGlvbiByZXEjIy5yZXNwb25zZVhNTCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBkb2MgLT4gaWYgSnMuc29tZSBkb2MjIy5kb2N1bWVudEVsZW1lbnQgPT0gSnMubnVsbCB0aGVuIE5vbmUgZWxzZSBTb21lIGRvYylcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IHRleHRfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gSnMuT3B0LmNhc2UgcmVxIyMucmVzcG9uc2VUZXh0IChmdW4gKCkgLT4gSnMuc3RyaW5nIFwiXCIpIChmdW4geCAtPiB4KVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBkb2N1bWVudF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmRvY3VtZW50IHJlcSMjLnJlc3BvbnNlXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGpzb25fcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5qc29uIHJlcSMjLnJlc3BvbnNlXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGJsb2JfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5ibG9iIHJlcSMjLnJlc3BvbnNlXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGFycmF5YnVmZmVyX3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uYXJyYXlCdWZmZXIgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgaGFzX2dldF9hcmdzIHVybCA9XG4gIHRyeVxuICAgIGlnbm9yZSAoU3RyaW5nLmluZGV4IHVybCAnPycpO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHBlcmZvcm1fcmF3XG4gICAgPyhoZWFkZXJzID0gW10pXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgID8oZ2V0X2FyZ3MgPSBbXSlcbiAgICA/KGNoZWNrX2hlYWRlcnMgPSBmdW4gXyBfIC0+IHRydWUpXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9jb250ZW50c1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICAodHlwZSByZXNwdHlwZSlcbiAgICB+KHJlc3BvbnNlX3R5cGUgOiByZXNwdHlwZSByZXNwb25zZSlcbiAgICB1cmwgPVxuICBsZXQgY29udGVudHNfbm9ybWFsaXphdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBgUE9TVF9mb3JtIGFyZ3MgLT5cbiAgICAgICAgbGV0IG9ubHlfc3RyaW5ncyA9XG4gICAgICAgICAgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgXywgYFN0cmluZyBfIC0+IHRydWVcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgYXJnc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZm9ybV9jb250ZW50cyA9XG4gICAgICAgICAgaWYgb25seV9zdHJpbmdzIHRoZW4gYEZpZWxkcyAocmVmIFtdKSBlbHNlIEZvcm0uZW1wdHlfZm9ybV9jb250ZW50cyAoKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAobmFtZSwgdmFsdWUpIC0+IEZvcm0uYXBwZW5kIGZvcm1fY29udGVudHMgKG5hbWUsIHZhbHVlKSkgYXJncztcbiAgICAgICAgYEZvcm1fY29udGVudHMgZm9ybV9jb250ZW50c1xuICAgIHwgKGBTdHJpbmcgXyB8IGBGb3JtX2NvbnRlbnRzIF8pIGFzIHggLT4geFxuICAgIHwgYEJsb2IgYiAtPiBgQmxvYiAoYiA6ICNGaWxlLmJsb2IgSnMudCA6PiBGaWxlLmJsb2IgSnMudClcbiAgaW5cbiAgbGV0IGNvbnRlbnRzID1cbiAgICBtYXRjaCBjb250ZW50cyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYyAtPiBTb21lIChjb250ZW50c19ub3JtYWxpemF0aW9uIGMpXG4gIGluXG4gIGxldCBtZXRob2RfdG9fc3RyaW5nIG0gPVxuICAgIG1hdGNoIG0gd2l0aFxuICAgIHwgYEdFVCAtPiBcIkdFVFwiXG4gICAgfCBgUE9TVCAtPiBcIlBPU1RcIlxuICAgIHwgYEhFQUQgLT4gXCJIRUFEXCJcbiAgICB8IGBQVVQgLT4gXCJQVVRcIlxuICAgIHwgYERFTEVURSAtPiBcIkRFTEVURVwiXG4gICAgfCBgT1BUSU9OUyAtPiBcIk9QVElPTlNcIlxuICAgIHwgYFBBVENIIC0+IFwiUEFUQ0hcIlxuICBpblxuICBsZXQgbWV0aG9kXywgY29udGVudF90eXBlID1cbiAgICBsZXQgb3ZlcnJpZGVfbWV0aG9kIG0gPVxuICAgICAgbWF0Y2ggb3ZlcnJpZGVfbWV0aG9kIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBtXG4gICAgICB8IFNvbWUgdiAtPiBtZXRob2RfdG9fc3RyaW5nIHZcbiAgICBpblxuICAgIGxldCBvdmVycmlkZV9jb250ZW50X3R5cGUgYyA9XG4gICAgICBtYXRjaCBjb250ZW50X3R5cGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFNvbWUgY1xuICAgICAgfCBTb21lIF8gLT4gY29udGVudF90eXBlXG4gICAgaW5cbiAgICBtYXRjaCBjb250ZW50cyB3aXRoXG4gICAgfCBOb25lIC0+IG92ZXJyaWRlX21ldGhvZCBcIkdFVFwiLCBjb250ZW50X3R5cGVcbiAgICB8IFNvbWUgKGBGb3JtX2NvbnRlbnRzIGZvcm0pIC0+IChcbiAgICAgICAgbWF0Y2ggZm9ybSB3aXRoXG4gICAgICAgIHwgYEZpZWxkcyBfc3RyaW5ncyAtPlxuICAgICAgICAgICAgKCBvdmVycmlkZV9tZXRob2QgXCJQT1NUXCJcbiAgICAgICAgICAgICwgb3ZlcnJpZGVfY29udGVudF90eXBlIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKVxuICAgICAgICB8IGBGb3JtRGF0YSBfIC0+IG92ZXJyaWRlX21ldGhvZCBcIlBPU1RcIiwgY29udGVudF90eXBlKVxuICAgIHwgU29tZSAoYFN0cmluZyBfIHwgYEJsb2IgXykgLT4gb3ZlcnJpZGVfbWV0aG9kIFwiUE9TVFwiLCBjb250ZW50X3R5cGVcbiAgaW5cbiAgbGV0IHVybCA9XG4gICAgaWYgUG9seS4oZ2V0X2FyZ3MgPSBbXSlcbiAgICB0aGVuIHVybFxuICAgIGVsc2UgdXJsIF4gKGlmIGhhc19nZXRfYXJncyB1cmwgdGhlbiBcIiZcIiBlbHNlIFwiP1wiKSBeIFVybC5lbmNvZGVfYXJndW1lbnRzIGdldF9hcmdzXG4gIGluXG4gIGxldCAocmVzIDogcmVzcHR5cGUgZ2VuZXJpY19odHRwX2ZyYW1lIEx3dC50KSwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCByZXEgPSBjcmVhdGUgKCkgaW5cbiAgcmVxIyNfb3BlbiAoSnMuc3RyaW5nIG1ldGhvZF8pIChKcy5zdHJpbmcgdXJsKSBKcy5fdHJ1ZTtcbiAgKG1hdGNoIG92ZXJyaWRlX21pbWVfdHlwZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgbWltZV90eXBlIC0+IHJlcSMjb3ZlcnJpZGVNaW1lVHlwZSAoSnMuc3RyaW5nIG1pbWVfdHlwZSkpO1xuICAobWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gIHwgQXJyYXlCdWZmZXIgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCJcbiAgfCBCbG9iIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJibG9iXCJcbiAgfCBEb2N1bWVudCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiZG9jdW1lbnRcIlxuICB8IEpTT04gLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImpzb25cIlxuICB8IFRleHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcInRleHRcIlxuICB8IERlZmF1bHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcIlwiKTtcbiAgKG1hdGNoIHdpdGhfY3JlZGVudGlhbHMgd2l0aFxuICB8IFNvbWUgYyAtPiByZXEjIy53aXRoQ3JlZGVudGlhbHMgOj0gSnMuYm9vbCBjXG4gIHwgTm9uZSAtPiAoKSk7XG4gIChtYXRjaCBjb250ZW50X3R5cGUgd2l0aFxuICB8IFNvbWUgY29udGVudF90eXBlIC0+XG4gICAgICByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBcIkNvbnRlbnQtdHlwZVwiKSAoSnMuc3RyaW5nIGNvbnRlbnRfdHlwZSlcbiAgfCBfIC0+ICgpKTtcbiAgTGlzdC5pdGVyIChmdW4gKG4sIHYpIC0+IHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIG4pIChKcy5zdHJpbmcgdikpIGhlYWRlcnM7XG4gIGxldCBoZWFkZXJzIHMgPVxuICAgIE9wdC5jYXNlXG4gICAgICAocmVxIyNnZXRSZXNwb25zZUhlYWRlciAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgIChmdW4gdiAtPiBTb21lIChKcy50b19zdHJpbmcgdikpXG4gIGluXG4gIGxldCBkb19jaGVja19oZWFkZXJzID1cbiAgICBsZXQgc3QgPSByZWYgYE5vdF95ZXQgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgIGlmIFBvbHkuKCFzdCA9IGBOb3RfeWV0KVxuICAgICAgdGhlblxuICAgICAgICBpZiBjaGVja19oZWFkZXJzIHJlcSMjLnN0YXR1cyBoZWFkZXJzXG4gICAgICAgIHRoZW4gc3QgOj0gYFBhc3NlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBMd3Qud2FrZXVwX2V4biB3IChXcm9uZ19oZWFkZXJzIChyZXEjIy5zdGF0dXMsIGhlYWRlcnMpKTtcbiAgICAgICAgICBzdCA6PSBgRmFpbGVkO1xuICAgICAgICAgIHJlcSMjYWJvcnQpO1xuICAgICAgUG9seS4oIXN0IDw+IGBGYWlsZWQpXG4gIGluXG4gIHJlcSMjLm9ucmVhZHlzdGF0ZWNoYW5nZSA6PVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+XG4gICAgICAgIG1hdGNoIHJlcSMjLnJlYWR5U3RhdGUgd2l0aFxuICAgICAgICAoKiBJRSBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgc2VtYW50aWNzIGZvciBIRUFERVJTX1JFQ0VJVkVELlxuICAgICAgICAgICAgIHNvIHdlIHdhaXQgdGlsIExPQURJTkcgdG8gY2hlY2sgaGVhZGVycy4gU2VlOlxuICAgICAgICAgICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNDM2MSh2PXZzLjg1KS5hc3B4ICopXG4gICAgICAgIHwgSEVBREVSU19SRUNFSVZFRCB3aGVuIG5vdCBEb21faHRtbC5vbklFIC0+IGlnbm9yZSAoZG9fY2hlY2tfaGVhZGVycyAoKSlcbiAgICAgICAgfCBMT0FESU5HIHdoZW4gRG9tX2h0bWwub25JRSAtPiBpZ25vcmUgKGRvX2NoZWNrX2hlYWRlcnMgKCkpXG4gICAgICAgIHwgRE9ORSAtPlxuICAgICAgICAgICAgKCogSWYgd2UgZGlkbid0IGNhdGNoIGEgcHJldmlvdXMgZXZlbnQsIHdlIGNoZWNrIHRoZSBoZWFkZXIuICopXG4gICAgICAgICAgICBpZiBkb19jaGVja19oZWFkZXJzICgpXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIGxldCByZXNwb25zZSA6IHJlc3B0eXBlIGdlbmVyaWNfaHR0cF9mcmFtZSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBBcnJheUJ1ZmZlciAtPiBhcnJheWJ1ZmZlcl9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBCbG9iIC0+IGJsb2JfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgRG9jdW1lbnQgLT4gZG9jdW1lbnRfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgSlNPTiAtPiBqc29uX3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IFRleHQgLT4gdGV4dF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBEZWZhdWx0IC0+IGRlZmF1bHRfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3Qud2FrZXVwIHcgcmVzcG9uc2VcbiAgICAgICAgfCBfIC0+ICgpKTtcbiAgKG1hdGNoIHByb2dyZXNzIHdpdGhcbiAgfCBTb21lIHByb2dyZXNzIC0+XG4gICAgICByZXEjIy5vbnByb2dyZXNzIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICAgICAgcHJvZ3Jlc3MgZSMjLmxvYWRlZCBlIyMudG90YWw7XG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgfCBOb25lIC0+ICgpKTtcbiAgT3B0ZGVmLml0ZXIgcmVxIyMudXBsb2FkIChmdW4gdXBsb2FkIC0+XG4gICAgICBtYXRjaCB1cGxvYWRfcHJvZ3Jlc3Mgd2l0aFxuICAgICAgfCBTb21lIHVwbG9hZF9wcm9ncmVzcyAtPlxuICAgICAgICAgIHVwbG9hZCMjLm9ucHJvZ3Jlc3MgOj1cbiAgICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICAgICAgICAgIHVwbG9hZF9wcm9ncmVzcyBlIyMubG9hZGVkIGUjIy50b3RhbDtcbiAgICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIHwgTm9uZSAtPiAoKSk7XG4gIChtYXRjaCBjb250ZW50cyB3aXRoXG4gIHwgTm9uZSAtPiByZXEjI3NlbmQgSnMubnVsbFxuICB8IFNvbWUgKGBGb3JtX2NvbnRlbnRzIChgRmllbGRzIGwpKSAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKHN0cmluZyAoZW5jb2RlX3VybCAhbCkpKVxuICB8IFNvbWUgKGBGb3JtX2NvbnRlbnRzIChgRm9ybURhdGEgZikpIC0+IHJlcSMjc2VuZF9mb3JtRGF0YSBmXG4gIHwgU29tZSAoYFN0cmluZyBzKSAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKEpzLnN0cmluZyBzKSlcbiAgfCBTb21lIChgQmxvYiBiKSAtPiByZXEjI3NlbmRfYmxvYiBiKTtcbiAgTHd0Lm9uX2NhbmNlbCByZXMgKGZ1biAoKSAtPiByZXEjI2Fib3J0KTtcbiAgcmVzXG5cbmxldCBwZXJmb3JtX3Jhd191cmxcbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9jb250ZW50c1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB1cmwgPVxuICBwZXJmb3JtX3Jhd1xuICAgIH5oZWFkZXJzXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgIH5nZXRfYXJnc1xuICAgID9jb250ZW50c1xuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0XG4gICAgdXJsXG5cbmxldCBwZXJmb3JtXG4gICAgPyhoZWFkZXJzID0gW10pXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgID8oZ2V0X2FyZ3MgPSBbXSlcbiAgICA/Y2hlY2tfaGVhZGVyc1xuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/Y29udGVudHNcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgdXJsID1cbiAgcGVyZm9ybV9yYXdcbiAgICB+aGVhZGVyc1xuICAgID9jb250ZW50X3R5cGVcbiAgICB+Z2V0X2FyZ3NcbiAgICA/Y29udGVudHNcbiAgICA/Y2hlY2tfaGVhZGVyc1xuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdFxuICAgIChVcmwuc3RyaW5nX29mX3VybCB1cmwpXG5cbmxldCBnZXQgcyA9IHBlcmZvcm1fcmF3X3VybCBzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCBzbGVlcCBkID1cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgaWQgPSBEb21faHRtbC5zZXRUaW1lb3V0IChMd3Qud2FrZXVwIHcpIChkICouIDEwMDAuKSBpblxuICBMd3Qub25fY2FuY2VsIHQgKGZ1biAoKSAtPiBEb21faHRtbC5jbGVhclRpbWVvdXQgaWQpO1xuICB0XG5cbmxldCB5aWVsZCAoKSA9IHNsZWVwIDAuXG5cbmxldCB3YWtldXAgPSBmdW5jdGlvblxuICB8IDEgLT5cbiAgICAgIGlnbm9yZVxuICAgICAgICAoRG9tX2h0bWwud2luZG93IyNzZXRUaW1lb3V0IChKcy53cmFwX2NhbGxiYWNrIEx3dC53YWtldXBfcGF1c2VkKSAoSnMuZmxvYXQgMC4pKVxuICB8IF8gLT4gKClcblxubGV0ICgpID0gTHd0LnJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIHdha2V1cFxuXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBfID1cbiAgTHd0LmFzeW5jX2V4Y2VwdGlvbl9ob29rIDo9XG4gICAgZnVuIGV4biAtPlxuICAgICAgcHJlcnJfc3RyaW5nIFwiRXhjZXB0aW9uIGR1cmluZyBMd3QuYXN5bmM6IFwiO1xuICAgICAgcHJlcnJfc3RyaW5nIChQcmludGV4Yy50b19zdHJpbmcgZXhuKTtcbiAgICAgIFByaW50ZXhjLnByaW50X2JhY2t0cmFjZSBzdGRlcnJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5sZXQgcmVjIHJhbmRvbV9pZGVudGlmaWVyIHNpemUgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgc2l6ZSBpblxuICBmb3IgX2kgPSAwIHRvIHNpemUgLSAxIGRvXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgKENoYXIuY2hyICg5NyArIFJhbmRvbS5pbnQgMjYpKVxuICBkb25lO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuZ2V0IERvbV9odG1sLndpbmRvdyAoSnMuc3RyaW5nIHMpKVxuICB0aGVuICgqIG5hbWUgYWxyZWFkeSBpbiB1c2UsIGNob29zZSBhbm90aGVyIG9uZSopXG4gICAgcmFuZG9tX2lkZW50aWZpZXIgc2l6ZVxuICBlbHNlIHNcblxubGV0IHJhd19jYWxsIG5hbWUgdXJpIGVycm9yX2NiIHVzZXJfY2IgPVxuICBsZXQgc2NyaXB0ID0gRG9tX2h0bWwuKGNyZWF0ZVNjcmlwdCBkb2N1bWVudCkgaW5cbiAgbGV0IGZpbmFsaXplICgpID1cbiAgICBKcy5VbnNhZmUuZGVsZXRlIERvbV9odG1sLndpbmRvdyAoSnMuc3RyaW5nIG5hbWUpO1xuICAgIEpzLk9wdC5pdGVyIHNjcmlwdCMjLnBhcmVudE5vZGUgKGZ1biBwYXJlbnQgLT4gRG9tLnJlbW92ZUNoaWxkIHBhcmVudCBzY3JpcHQpXG4gIGluXG4gIGxldCBleGVjdXRlZCA9IHJlZiBmYWxzZSBpblxuICBKcy5VbnNhZmUuc2V0XG4gICAgRG9tX2h0bWwud2luZG93XG4gICAgKEpzLnN0cmluZyBuYW1lKVxuICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4geCAtPlxuICAgICAgICAgZXhlY3V0ZWQgOj0gdHJ1ZTtcbiAgICAgICAgIGZpbmFsaXplICgpO1xuICAgICAgICAgdXNlcl9jYiB4KSk7XG4gIHNjcmlwdCMjLnNyYyA6PSBKcy5zdHJpbmcgdXJpO1xuICBzY3JpcHQjIy5fdHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0L2phdmFzY3JpcHRcIjtcbiAgc2NyaXB0IyMuYXN5bmMgOj0gSnMuX3RydWU7XG4gICgoSnMuVW5zYWZlLmNvZXJjZSBzY3JpcHQpIyMub25lcnJvclxuICA6PSBmdW4geCAtPlxuICBmaW5hbGl6ZSAoKTtcbiAgZXJyb3JfY2IgeCk7XG4gICgoSnMuVW5zYWZlLmNvZXJjZSBzY3JpcHQpIyMub25sb2FkXG4gIDo9IGZ1biB4IC0+XG4gIEx3dC5hc3luYyAoZnVuICgpIC0+XG4gICAgICBMd3QuYmluZCAoTHd0X2pzLnNsZWVwIDEuKSAoZnVuICgpIC0+XG4gICAgICAgICAgaWYgIWV4ZWN1dGVkXG4gICAgICAgICAgdGhlbiBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIEZpcmVidWcuY29uc29sZSMjd2FyblxuICAgICAgICAgICAgICAoSnMuc3RyaW5nIFwiSnNvbnA6IHNjcmlwdCBsb2FkZWQgYnV0IGNhbGxiYWNrIG5vdCBleGVjdXRlZFwiKTtcbiAgICAgICAgICAgIGZpbmFsaXplICgpO1xuICAgICAgICAgICAgZXJyb3JfY2IgeDtcbiAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpKSk7XG4gIGxldCBpbml0ICgpID0gaWdub3JlIChEb20uYXBwZW5kQ2hpbGQgRG9tX2h0bWwuZG9jdW1lbnQjIy5ib2R5IHNjcmlwdCkgaW5cbiAgaW5pdCwgZmluYWxpemVcblxubGV0IGNhbGxfIHByZWZpeCBtYWtlX3VyaSBlcnJvcl9jYiB1c2VyX2NiID1cbiAgbGV0IG5hbWUgPSBwcmVmaXggXiByYW5kb21faWRlbnRpZmllciAxMCBpblxuICBsZXQgdXJpID0gbWFrZV91cmkgbmFtZSBpblxuICByYXdfY2FsbCBuYW1lIHVyaSBlcnJvcl9jYiB1c2VyX2NiXG5cbmxldCBjYWxsX2N1c3RvbV91cmwgP3RpbWVvdXQgPyhwcmVmaXggPSBcIlwiKSBtYWtlX3VyaSA9XG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGluaXQsIGZpbmFsaXplID0gY2FsbF8gcHJlZml4IG1ha2VfdXJpIChmdW4gXyAtPiBMd3QuY2FuY2VsIHQpIChMd3Qud2FrZXVwIHcpIGluXG4gIEx3dC5vbl9jYW5jZWwgdCBmaW5hbGl6ZTtcbiAgbGV0IG5ld190ID1cbiAgICBtYXRjaCB0aW1lb3V0IHdpdGhcbiAgICB8IE5vbmUgLT4gdFxuICAgIHwgU29tZSBkZWxheSAtPlxuICAgICAgICBsZXQgd2FpdCA9XG4gICAgICAgICAgTHd0LmJpbmQgKEx3dF9qcy5zbGVlcCBkZWxheSkgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBMd3QuY2FuY2VsIHQ7XG4gICAgICAgICAgICAgIHQpXG4gICAgICAgIGluXG4gICAgICAgIEx3dC5jaG9vc2UgWyB3YWl0OyB0IF1cbiAgaW5cbiAgaW5pdCAoKTtcbiAgbmV3X3RcblxubGV0IGFkZF9wYXJhbSBuYW1lIHZhbHVlIGwgPVxuICBsZXQgbCA9IExpc3QuZmlsdGVyIChmdW4gKHgsIF8pIC0+IG5vdCAoU3RyaW5nLmVxdWFsIHggbmFtZSkpIGwgaW5cbiAgKG5hbWUsIHZhbHVlKSA6OiBsXG5cbmxldCBjYWxsID90aW1lb3V0ID8ocGFyYW0gPSBcImNhbGxiYWNrXCIpID8ocHJlZml4ID0gXCJcIikgdXJsID1cbiAgbGV0IG1ha2VfdXJpIGNibmFtZSA9XG4gICAgbWF0Y2ggVXJsLnVybF9vZl9zdHJpbmcgdXJsIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJKc29ucC5jYWxsOiBDYW5ub3QgcGFyc2UgdXJsXCJcbiAgICB8IFNvbWUgdXJsIC0+XG4gICAgICAgIGxldCBuZXdfdXJsID1cbiAgICAgICAgICBtYXRjaCB1cmwgd2l0aFxuICAgICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPlxuICAgICAgICAgICAgICBVcmwuSHR0cFxuICAgICAgICAgICAgICAgIHsgaHR0cCB3aXRoXG4gICAgICAgICAgICAgICAgICBVcmwuaHVfYXJndW1lbnRzID0gYWRkX3BhcmFtIHBhcmFtIGNibmFtZSBodHRwLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgfCBVcmwuSHR0cHMgaHR0cCAtPlxuICAgICAgICAgICAgICBVcmwuSHR0cHNcbiAgICAgICAgICAgICAgICB7IGh0dHAgd2l0aFxuICAgICAgICAgICAgICAgICAgVXJsLmh1X2FyZ3VtZW50cyA9IGFkZF9wYXJhbSBwYXJhbSBjYm5hbWUgaHR0cC5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPlxuICAgICAgICAgICAgICBVcmwuRmlsZVxuICAgICAgICAgICAgICAgIHsgZmlsZSB3aXRoXG4gICAgICAgICAgICAgICAgICBVcmwuZnVfYXJndW1lbnRzID0gYWRkX3BhcmFtIHBhcmFtIGNibmFtZSBmaWxlLlVybC5mdV9hcmd1bWVudHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIFVybC5zdHJpbmdfb2ZfdXJsIG5ld191cmxcbiAgaW5cbiAgY2FsbF9jdXN0b21fdXJsID90aW1lb3V0IH5wcmVmaXggbWFrZV91cmlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVmluY2VudCBCYWxhdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5sZXQgKCA+Pj0gKSA9IEx3dC5iaW5kXG5cbmxldCBhc3luYyBmID0gTHd0LmFzeW5jIChmdW4gKCkgLT4gTHd0X2pzLnlpZWxkICgpID4+PSBmKVxuXG5sZXQgb3B0X21hcCBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgbWFrZV9ldmVudCBldmVudF9raW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBsZXQgZWwgPSByZWYgSnMubnVsbCBpblxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBjYW5jZWwgKCkgPSBKcy5PcHQuaXRlciAhZWwgRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBpblxuICBMd3Qub25fY2FuY2VsIHQgY2FuY2VsO1xuICBlbCA6PVxuICAgIEpzLnNvbWVcbiAgICAgIChEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgICAgICA/Y2FwdHVyZToob3B0X21hcCBKcy5ib29sIHVzZV9jYXB0dXJlKVxuICAgICAgICAgP3Bhc3NpdmU6KG9wdF9tYXAgSnMuYm9vbCBwYXNzaXZlKVxuICAgICAgICAgdGFyZ2V0XG4gICAgICAgICBldmVudF9raW5kXG4gICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIChldiA6ICNEb21faHRtbC5ldmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBjYW5jZWwgKCk7XG4gICAgICAgICAgICAgIEx3dC53YWtldXAgdyBldjtcbiAgICAgICAgICAgICAgSnMuYm9vbCB0cnVlKSlcbiAgICAgICAgICgqIHRydWUgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBwcmV2ZW50IGRlZmF1bHQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB1c2VyIGNhbiB1c2UgdGhlIHByZXZlbnREZWZhdWx0IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZS4gKikpO1xuICB0XG5cbmxldCBjYXRjaF9jYW5jZWwgZiB4ID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEx3dC5DYW5jZWxlZCAtPiBMd3QucmV0dXJuICgpXG4gICAgICB8IGUgLT4gTHd0LmZhaWwgZSlcblxubGV0IHdpdGhfZXJyb3JfbG9nIGYgeCA9XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gZiB4KVxuICAgIChmdW4gZSAtPlxuICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyAoUHJpbnRleGMudG9fc3RyaW5nIGUpKTtcbiAgICAgIEx3dC5yZXR1cm4gKCkpXG5cbmxldCBzZXFfbG9vcCBldmggPyhjYW5jZWxfaGFuZGxlciA9IGZhbHNlKSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGhhbmRsZXIgPVxuICBsZXQgY2FuY2VsbGVkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjdXIgPSByZWYgKEx3dC5mYWlsIChGYWlsdXJlIFwiTHd0X2pzX2V2ZW50XCIpKSBpblxuICAoKiBVc2luZyBMd3QuZmFpbCBhcyBkZWZhdWx0LCB0byBiZSBwb2x5bW9ycGhpYyAqKVxuICBsZXQgY3VyX2hhbmRsZXIgPSByZWYgKEx3dC5yZXR1cm4gKCkpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBpZiBjYW5jZWxfaGFuZGxlciB0aGVuIEx3dC5jYW5jZWwgIWN1cl9oYW5kbGVyO1xuICAgICAgY2FuY2VsbGVkIDo9IHRydWUpO1xuICBsZXQgcmVjIGF1eCAoKSA9XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICAgICAoKiBJbiB0aGUgY2FzZSBpdCBoYXMgYmVlbiBjYW5jZWxsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIHByZXZpb3VzIGhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2UgZG8gbm90IHJlaW5zdGFsbCB0aGUgZXZlbnQgaGFuZGxlciAqKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHQgPSBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBpblxuICAgICAgY3VyIDo9IHQ7XG4gICAgICB0XG4gICAgICA+Pj0gZnVuIGUgLT5cbiAgICAgIGN1cl9oYW5kbGVyIDo9IHdpdGhfZXJyb3JfbG9nIChoYW5kbGVyIGUpIGx0O1xuICAgICAgIWN1cl9oYW5kbGVyID4+PSBhdXgpXG4gICAgZWxzZSBMd3QucmV0dXJuICgpXG4gIGluXG4gIEx3dC5hc3luYyAoY2F0Y2hfY2FuY2VsIGF1eCk7XG4gIGx0XG5cbmxldCBhc3luY19sb29wIGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGhhbmRsZXIgPVxuICBsZXQgY2FuY2VsbGVkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjdXIgPSByZWYgKEx3dC5mYWlsIChGYWlsdXJlIFwiTHd0X2pzX2V2ZW50XCIpKSBpblxuICBsZXQgbHQsIF9sdyA9IEx3dC50YXNrICgpIGluXG4gIEx3dC5vbl9jYW5jZWwgbHQgKGZ1biAoKSAtPlxuICAgICAgTHd0LmNhbmNlbCAhY3VyO1xuICAgICAgY2FuY2VsbGVkIDo9IHRydWUpO1xuICBsZXQgcmVjIGF1eCAoKSA9XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCB0ID0gZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaW5cbiAgICAgIGN1ciA6PSB0O1xuICAgICAgdFxuICAgICAgPj49IGZ1biBlIC0+XG4gICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPiB3aXRoX2Vycm9yX2xvZyAoaGFuZGxlciBlKSBsdCk7XG4gICAgICBhdXggKCkpXG4gICAgZWxzZSBMd3QucmV0dXJuICgpXG4gIGluXG4gIEx3dC5hc3luYyAoY2F0Y2hfY2FuY2VsIGF1eCk7XG4gIGx0XG5cbmxldCBidWZmZXJlZF9sb29wXG4gICAgZXZoXG4gICAgPyhjYW5jZWxfaGFuZGxlciA9IGZhbHNlKVxuICAgID8oY2FuY2VsX3F1ZXVlID0gdHJ1ZSlcbiAgICA/dXNlX2NhcHR1cmVcbiAgICA/cGFzc2l2ZVxuICAgIHRhcmdldFxuICAgIGhhbmRsZXIgPVxuICBsZXQgY2FuY2VsbGVkID0gcmVmIGZhbHNlIGluXG4gIGxldCBxdWV1ZSA9IHJlZiBbXSBpblxuICBsZXQgY3VyID0gcmVmIChMd3QuZmFpbCAoRmFpbHVyZSBcIkx3dF9qc19ldmVudFwiKSkgaW5cbiAgbGV0IGN1cl9oYW5kbGVyID0gcmVmIChMd3QucmV0dXJuICgpKSBpblxuICBsZXQgbHQsIF9sdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBzcGF3biA9IEx3dF9jb25kaXRpb24uY3JlYXRlICgpIGluXG4gIEx3dC5vbl9jYW5jZWwgbHQgKGZ1biAoKSAtPlxuICAgICAgTHd0LmNhbmNlbCAhY3VyO1xuICAgICAgaWYgY2FuY2VsX2hhbmRsZXIgdGhlbiBMd3QuY2FuY2VsICFjdXJfaGFuZGxlcjtcbiAgICAgIGlmIGNhbmNlbF9xdWV1ZSB0aGVuIHF1ZXVlIDo9IFtdO1xuICAgICAgY2FuY2VsbGVkIDo9IHRydWUpO1xuICBsZXQgcmVjIHNwYXduZXIgKCkgPVxuICAgIGlmIG5vdCAhY2FuY2VsbGVkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdCA9IGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGluXG4gICAgICBjdXIgOj0gdDtcbiAgICAgIHRcbiAgICAgID4+PSBmdW4gZSAtPlxuICAgICAgcXVldWUgOj0gZSA6OiAhcXVldWU7XG4gICAgICBMd3RfY29uZGl0aW9uLnNpZ25hbCBzcGF3biAoKTtcbiAgICAgIHNwYXduZXIgKCkpXG4gICAgZWxzZSBMd3QucmV0dXJuICgpXG4gIGluXG4gIGxldCByZWMgcnVubmVyICgpID1cbiAgICBjdXJfaGFuZGxlciA6PSBMd3QucmV0dXJuICgpO1xuICAgIGlmIG5vdCAhY2FuY2VsbGVkXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCAhcXVldWUgd2l0aFxuICAgICAgfCBbXSAtPiBMd3RfY29uZGl0aW9uLndhaXQgc3Bhd24gPj49IHJ1bm5lclxuICAgICAgfCBlIDo6IHRsIC0+XG4gICAgICAgICAgcXVldWUgOj0gdGw7XG4gICAgICAgICAgY3VyX2hhbmRsZXIgOj0gd2l0aF9lcnJvcl9sb2cgKGhhbmRsZXIgZSkgbHQ7XG4gICAgICAgICAgIWN1cl9oYW5kbGVyID4+PSBydW5uZXIpXG4gICAgZWxzZSBMd3QucmV0dXJuICgpXG4gIGluXG4gIEx3dC5hc3luYyAoY2F0Y2hfY2FuY2VsIHNwYXduZXIpO1xuICBMd3QuYXN5bmMgcnVubmVyO1xuICBsdFxuXG5sZXQgZnVuY19saW1pdGVkX2xvb3AgZXZlbnQgbGltaXRlZF9mdW5jID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGFzeW5jX2xvb3AgZXZlbnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCAoZnVuIGV2IGx0IC0+XG4gICAgICBpbmNyIGNvdW50O1xuICAgICAgbGV0IG5iID0gIWNvdW50IGluXG4gICAgICBsaW1pdGVkX2Z1bmMgKCkgPj49IGZ1biBfIC0+IGlmICFjb3VudCA9IG5iIHRoZW4gaGFuZGxlciBldiBsdCBlbHNlIEx3dC5yZXR1cm4gKCkpXG5cbmxldCBsaW1pdGVkX2xvb3AgZXZlbnQgPyhlbGFwc2VkX3RpbWUgPSAwLjEpID1cbiAgZnVuY19saW1pdGVkX2xvb3AgZXZlbnQgKGZ1biAoKSAtPiBMd3RfanMuc2xlZXAgZWxhcHNlZF90aW1lKVxuXG5sZXQgY2xpY2sgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY2xpY2sgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY29weSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jb3B5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGN1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcGFzdGUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucGFzdGUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZGJsY2xpY2sgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZGJsY2xpY2sgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2Vkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm1vdXNlZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm1vdXNldXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2VvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm1vdXNlb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZW1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2Vtb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm1vdXNlb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGtleXByZXNzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmtleXByZXNzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGtleWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQua2V5ZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBrZXl1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5rZXl1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGlucHV0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmlucHV0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRpbWV1cGRhdGUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudGltZXVwZGF0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ3N0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ2VuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ2VudGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnbGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyb3AgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJvcCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBmb2N1cyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5mb2N1cyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBibHVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmJsdXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzdWJtaXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc3VibWl0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNlbGVjdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zZWxlY3QgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgYWJvcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuYWJvcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZXJyb3IgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZXJyb3IgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNhbnBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY2FucGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjYW5wbGF5dGhyb3VnaCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jYW5wbGF5dGhyb3VnaCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkdXJhdGlvbmNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kdXJhdGlvbmNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlbXB0aWVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmVtcHRpZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZW5kZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZW5kZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZGVkZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkZWRkYXRhID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvYWRlZG1ldGFkYXRhID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRlZG1ldGFkYXRhID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvYWRzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2Fkc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcGF1c2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucGF1c2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBsYXlpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucGxheWluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCByYXRlY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnJhdGVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2Vla2VkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnNlZWtlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzZWVraW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnNlZWtpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc3RhbGxlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdGFsbGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHN1c3BlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc3VzcGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB2b2x1bWVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudm9sdW1lY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHdhaXRpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQud2FpdGluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbigqIHNwZWNpYWwgY2FzZSBmb3IgbW91c2V3aGVlbCwgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIHRoZSBicm93c2VyICopXG5sZXQgbW91c2V3aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbGV0IGVsID0gcmVmIEpzLm51bGwgaW5cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgY2FuY2VsICgpID0gSnMuT3B0Lml0ZXIgIWVsIERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IGNhbmNlbDtcbiAgZWwgOj1cbiAgICBKcy5zb21lXG4gICAgICAoRG9tX2h0bWwuYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgICAgICAgP2NhcHR1cmU6KG9wdF9tYXAgSnMuYm9vbCB1c2VfY2FwdHVyZSlcbiAgICAgICAgID9wYXNzaXZlOihvcHRfbWFwIEpzLmJvb2wgcGFzc2l2ZSlcbiAgICAgICAgIHRhcmdldFxuICAgICAgICAgKGZ1biAoZXYgOiAjRG9tX2h0bWwuZXZlbnQgSnMudCkgfmR4IH5keSAtPlxuICAgICAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyBldjtcbiAgICAgICAgICAgY2FuY2VsICgpO1xuICAgICAgICAgICBMd3Qud2FrZXVwIHcgKGV2LCAoZHgsIGR5KSk7XG4gICAgICAgICAgIEpzLmJvb2wgdHJ1ZSlcbiAgICAgICAgICgqIHRydWUgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBwcmV2ZW50IGRlZmF1bHQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB1c2VyIGNhbiB1c2UgdGhlIHByZXZlbnREZWZhdWx0IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZS4gKikpO1xuICB0XG5cbigqIGxldCBfRE9NTW91c2VTY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Ll9ET01Nb3VzZVNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG4qKVxuXG5sZXQgd2hlZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQud2hlZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdG91Y2hzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNobW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaG1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdG91Y2hlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudG91Y2hlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdG91Y2hjYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudG91Y2hjYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9zdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lmxvc3Rwb2ludGVyY2FwdHVyZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBnb3Rwb2ludGVyY2FwdHVyZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5nb3Rwb2ludGVyY2FwdHVyZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcmVudGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJjYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVybGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcmxlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJtb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJtb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcm91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVydXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcnVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRyYW5zaXRpb25lbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudHJhbnNpdGlvbmVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCB0cmFuc2l0aW9uc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudHJhbnNpdGlvbnN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25ydW4gP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudHJhbnNpdGlvbnJ1biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCB0cmFuc2l0aW9uY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25jYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgY2xpY2tzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNsaWNrID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY29waWVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNvcHkgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjdXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGN1dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBhc3RlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwYXN0ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRibGNsaWNrcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkYmxjbGljayA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlZG93bnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2Vkb3duID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2V1cHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2V1cCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlb3ZlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2VvdmVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2Vtb3ZlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW1vdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZW91dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2VvdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBrZXlwcmVzc2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGtleXByZXNzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQga2V5ZG93bnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Aga2V5ZG93biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGtleXVwcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBrZXl1cCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgaW5wdXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGlucHV0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdGltZXVwZGF0ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdGltZXVwZGF0ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdzdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ3N0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ2VuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ2VuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdlbnRlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ2VudGVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ292ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdvdmVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ2xlYXZlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnbGVhdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFncyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJvcHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJvcCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNld2hlZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNld2hlZWwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB3aGVlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agd2hlZWwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0b3VjaHN0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaHN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2htb3ZlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaG1vdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0b3VjaGVuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdG91Y2hlbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0b3VjaGNhbmNlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdG91Y2hjYW5jZWwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBmb2N1c2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGZvY3VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgYmx1cnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgYmx1ciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNjcm9sbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc2Nyb2xsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc3VibWl0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzdWJtaXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzZWxlY3RzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNlbGVjdCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGFib3J0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBhYm9ydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGVycm9ycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBlcnJvciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvYWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjYW5wbGF5cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjYW5wbGF5ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY2FucGxheXRocm91Z2hzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNhbnBsYXl0aHJvdWdoID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHVyYXRpb25jaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGR1cmF0aW9uY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZW1wdGllZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZW1wdGllZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGVuZGVkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBlbmRlZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRlZGRhdGFzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvYWRlZGRhdGEgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb2FkZWRtZXRhZGF0YXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZGVkbWV0YWRhdGEgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb2Fkc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvYWRzdGFydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBhdXNlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwYXVzZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBsYXlzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBsYXkgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwbGF5aW5ncyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwbGF5aW5nID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcmF0ZWNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcmF0ZWNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNlZWtlZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc2Vla2VkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Vla2luZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc2Vla2luZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHN0YWxsZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN0YWxsZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzdXNwZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzdXNwZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdm9sdW1lY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB2b2x1bWVjaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB3YWl0aW5ncyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB3YWl0aW5nID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9zdHBvaW50ZXJjYXB0dXJlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb3N0cG9pbnRlcmNhcHR1cmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBnb3Rwb2ludGVyY2FwdHVyZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZ290cG9pbnRlcmNhcHR1cmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyZW50ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJlbnRlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJjYW5jZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJjYW5jZWwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyZG93bnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmRvd24gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVybGVhdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJsZWF2ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJtb3ZlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVybW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJvdXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJvdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyb3ZlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcm92ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVydXBzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJ1cCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25lbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRyYW5zaXRpb25lbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0cmFuc2l0aW9uc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRyYW5zaXRpb25zdGFydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25ydW5zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRyYW5zaXRpb25ydW4gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0cmFuc2l0aW9uY2FuY2VscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9uY2FuY2VsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgKCkgPVxuICBsZXQgdCwgcyA9IEx3dC53YWl0ICgpIGluXG4gIGxldCAoXyA6IERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkKSA9XG4gICAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4gKF8gOiBKcy5udW1iZXJfdCkgLT4gTHd0Lndha2V1cCBzICgpKSlcbiAgaW5cbiAgdFxuXG5sZXQgb25sb2FkICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkIERvbV9odG1sLndpbmRvd1xuXG5sZXQgZG9tQ29udGVudExvYWRlZCA9XG4gIGxldCBjb21wbGV0ZSA9IEpzLnN0cmluZyBcImNvbXBsZXRlXCIgaW5cbiAgbGV0IGRvYyA9IERvbV9odG1sLndpbmRvdyMjLmRvY3VtZW50IGluXG4gIGZ1biAoKSAtPlxuICAgIGlmIGRvYyMjLnJlYWR5U3RhdGUgPT0gY29tcGxldGVcbiAgICB0aGVuIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVsc2VcbiAgICAgIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgIGxldCB3YWtldXAgdyBfID0gaWYgTHd0LmlzX3NsZWVwaW5nIHQgdGhlbiBMd3Qud2FrZXVwIHcgKCkgaW5cbiAgICAgIGxldCB3YWtldXBfZXhuIHcgZSA9IGlmIEx3dC5pc19zbGVlcGluZyB0IHRoZW4gTHd0Lndha2V1cF9leG4gdyBlIGluXG4gICAgICAoKiBodHRwczovL2dpdGh1Yi5jb20vZHBlcmluaS9Db250ZW50TG9hZGVkL2Jsb2IvbWFzdGVyL3NyYy9jb250ZW50bG9hZGVkLmpzICopXG4gICAgICBsZXQgcmVndWxhciA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZG9tQ29udGVudExvYWRlZCBkb2MgaW5cbiAgICAgIEx3dC5vbl9hbnkgcmVndWxhciAod2FrZXVwIHcpICh3YWtldXBfZXhuIHcpO1xuICAgICAgKCogaWU4ICopXG4gICAgICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9XG4gICAgICAgIGFzeW5jX2xvb3BcbiAgICAgICAgICAobWFrZV9ldmVudCAoRG9tLkV2ZW50Lm1ha2UgXCJyZWFkeXN0YXRlY2hhbmdlXCIpKVxuICAgICAgICAgIGRvY1xuICAgICAgICAgIChmdW4gZSBfIC0+XG4gICAgICAgICAgICBpZiBkb2MjIy5yZWFkeVN0YXRlID09IGNvbXBsZXRlIHRoZW4gd2FrZXVwIHcgZTtcbiAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAgIGluXG4gICAgICAoKiBmYWxsYmFjaywganVzdCBpbiBjYXNlICopXG4gICAgICBsZXQgaW5pdCA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZCBEb21faHRtbC53aW5kb3cgaW5cbiAgICAgIEx3dC5vbl9hbnkgaW5pdCAod2FrZXVwIHcpICh3YWtldXBfZXhuIHcpO1xuICAgICAgKCogY2xlYW4gYW5kIHJldHVybiAqKVxuICAgICAgTHd0LmJpbmQgdCAoZnVuIF9lIC0+XG4gICAgICAgICAgTHd0LmNhbmNlbCByZWd1bGFyO1xuICAgICAgICAgIEx3dC5jYW5jZWwgcmVhZHlzdGF0ZWNoYW5nZTtcbiAgICAgICAgICBMd3QuY2FuY2VsIGluaXQ7XG4gICAgICAgICAgTHd0LnJldHVybl91bml0KVxuXG5sZXQgb251bmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnVubG9hZCBEb21faHRtbC53aW5kb3dcblxubGV0IG9uYmVmb3JldW5sb2FkICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5iZWZvcmV1bmxvYWQgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbnJlc2l6ZSAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucmVzaXplIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZSAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQub3JpZW50YXRpb25jaGFuZ2UgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbnBvcHN0YXRlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb3BzdGF0ZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9uaGFzaGNoYW5nZSAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuaGFzaGNoYW5nZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpemUgKCkgPSBMd3QucGljayBbIG9ucmVzaXplICgpOyBvbm9yaWVudGF0aW9uY2hhbmdlICgpIF1cblxubGV0IG9ucmVzaXplcyB0ID0gc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ucmVzaXplICgpKSAoKSB0XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlcyB0ID1cbiAgc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkpICgpIHRcblxubGV0IG9ucG9wc3RhdGVzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25wb3BzdGF0ZSAoKSkgKCkgdFxuXG5sZXQgb25oYXNoY2hhbmdlcyB0ID0gc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9uaGFzaGNoYW5nZSAoKSkgKCkgdFxuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZXNfb3Jfb25yZXNpemVzIHQgPVxuICBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZV9vcl9vbnJlc2l6ZSAoKSkgKCkgdFxuXG5sZXQgbGltaXRlZF9vbnJlc2l6ZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbnJlc2l6ZSAoKSkgP2VsYXBzZWRfdGltZSAoKSB0XG5cbmxldCBsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzID9lbGFwc2VkX3RpbWUgdCA9XG4gIGxpbWl0ZWRfbG9vcFxuICAgIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlICgpKVxuICAgID9lbGFwc2VkX3RpbWVcbiAgICAoKVxuICAgIHRcblxubGV0IGxpbWl0ZWRfb25vcmllbnRhdGlvbmNoYW5nZXNfb3Jfb25yZXNpemVzID9lbGFwc2VkX3RpbWUgdCA9XG4gIGxpbWl0ZWRfbG9vcFxuICAgIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXplICgpKVxuICAgID9lbGFwc2VkX3RpbWVcbiAgICAoKVxuICAgIHRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4gRmlsZVxub3BlbiEgSW1wb3J0XG5cbmxldCByZWFkX3dpdGhfZmlsZXJlYWRlciAoZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIpIGtpbmQgZmlsZSA9XG4gIGxldCByZWFkZXIgPSBuZXclanMgZmlsZVJlYWRlciBpblxuICBsZXQgcmVzLCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgcmVhZGVyIyMub25sb2FkZW5kIDo9XG4gICAgaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgaWYgcmVhZGVyIyMucmVhZHlTdGF0ZSA9PSBET05FXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBMd3Qud2FrZXVwXG4gICAgICAgICAgICB3XG4gICAgICAgICAgICAobWF0Y2ggT3B0LnRvX29wdGlvbiAoQ29lcmNlVG8uc3RyaW5nIHJlYWRlciMjLnJlc3VsdCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSAoKiBjYW4ndCBoYXBwZW46IGNhbGxlZCB3aXRoIGdvb2QgcmVhZEFzXyAqKVxuICAgICAgICAgICAgfCBTb21lIHMgLT4gcylcbiAgICAgICAgZWxzZSAoKTtcbiAgICAgICAgKCogQ0NDIFRPRE86IGhhbmRsZSBlcnJvcnMgKilcbiAgICAgICAgSnMuX2ZhbHNlKTtcbiAgTHd0Lm9uX2NhbmNlbCByZXMgKGZ1biAoKSAtPiByZWFkZXIjI2Fib3J0KTtcbiAgKG1hdGNoIGtpbmQgd2l0aFxuICB8IGBCaW5hcnlTdHJpbmcgLT4gcmVhZGVyIyNyZWFkQXNCaW5hcnlTdHJpbmcgZmlsZVxuICB8IGBUZXh0IC0+IHJlYWRlciMjcmVhZEFzVGV4dCBmaWxlXG4gIHwgYFRleHRfd2l0aEVuY29kaW5nIGUgLT4gcmVhZGVyIyNyZWFkQXNUZXh0X3dpdGhFbmNvZGluZyBmaWxlIGVcbiAgfCBgRGF0YVVSTCAtPiByZWFkZXIjI3JlYWRBc0RhdGFVUkwgZmlsZSk7XG4gIHJlc1xuXG5sZXQgcmVhZGVyIGtpbmQgZmlsZSA9IHJlYWRfd2l0aF9maWxlcmVhZGVyIGZpbGVSZWFkZXIga2luZCBmaWxlXG5cbmxldCByZWFkQXNCaW5hcnlTdHJpbmcgZmlsZSA9IHJlYWRlciBgQmluYXJ5U3RyaW5nIGZpbGVcblxubGV0IHJlYWRBc1RleHQgZmlsZSA9IHJlYWRlciBgVGV4dCBmaWxlXG5cbmxldCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyBmaWxlIGUgPSByZWFkZXIgKGBUZXh0X3dpdGhFbmNvZGluZyBlKSBmaWxlXG5cbmxldCByZWFkQXNEYXRhVVJMIGZpbGUgPSByZWFkZXIgYERhdGFVUkwgZmlsZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNyBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFhtbEh0dHBSZXF1ZXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgSnNfb2Zfb2NhbWwuWG1sSHR0cFJlcXVlc3RcbiAgaW5jbHVkZSBMd3RfeG1sSHR0cFJlcXVlc3RcbmVuZFxuXG5tb2R1bGUgRmlsZSA9IHN0cnVjdFxuICBpbmNsdWRlIEpzX29mX29jYW1sLkZpbGVcbiAgaW5jbHVkZSBMd3RfZmlsZVxuZW5kXG5cbm1vZHVsZSBKc29ucCA9IEx3dF9qc29ucFxubW9kdWxlIEx3dF9qcyA9IEx3dF9qc1xubW9kdWxlIEx3dF9qc19ldmVudHMgPSBMd3RfanNfZXZlbnRzXG4iLCIoKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgKilcblxuaW5jbHVkZSBTdGRsaWJcblxubW9kdWxlIEluX2NoYW5uZWwgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBzdHJ1Y3QgZW5kXG4iLCJbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbigqIGJsaXRfc3RyaW5nIGRvZXNuJ3QgZXhpc3QgaW4gW1N0ZExhYmVscy5CeXRlc10uLi4gICopXG5sZXQgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBCeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbjs7XG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIEZvcm1hdFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcblxubGV0IHNleHBfb2ZfdCB0ID0gdFxubGV0IHRfb2Zfc2V4cCB0ID0gdFxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICBsZXQgcmVzID0gY29tcGFyZSB4IHkgaW5cbiAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCB4cyB5c1xuXG5hbmQgY29tcGFyZSBhIGIgPVxuICBpZiBhID09IGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgQXRvbSBhLCBBdG9tIGIgLT4gU3RyaW5nLmNvbXBhcmUgYSBiXG4gICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgfCBMaXN0IGEsIExpc3QgYiAtPiBjb21wYXJlX2xpc3QgYSBiKVxuOztcblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5leGNlcHRpb24gTm90X2ZvdW5kX3Mgb2YgdFxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgZXhuICogdFxuXG5tb2R1bGUgUHJpbnRpbmcgPSBzdHJ1Y3RcbiAgKCogRGVmYXVsdCBpbmRlbnRhdGlvbiBsZXZlbCBmb3IgaHVtYW4tcmVhZGFibGUgY29udmVyc2lvbnMgKilcblxuICBsZXQgZGVmYXVsdF9pbmRlbnQgPSByZWYgMVxuXG4gICgqIEVzY2FwaW5nIG9mIHN0cmluZ3MgdXNlZCBhcyBhdG9tcyBpbiBTLWV4cHJlc3Npb25zICopXG5cbiAgbGV0IG11c3RfZXNjYXBlIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGVuID0gMFxuICAgIHx8XG4gICAgbGV0IHJlYyBsb29wIHN0ciBpeCA9XG4gICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICB8ICdcIicgfCAnKCcgfCAnKScgfCAnOycgfCAnXFxcXCcgLT4gdHJ1ZVxuICAgICAgfCAnfCcgLT5cbiAgICAgICAgaXggPiAwXG4gICAgICAgICYmXG4gICAgICAgIGxldCBuZXh0ID0gaXggLSAxIGluXG4gICAgICAgIENoYXIuZXF1YWwgc3RyLltuZXh0XSAnIycgfHwgbG9vcCBzdHIgbmV4dFxuICAgICAgfCAnIycgLT5cbiAgICAgICAgaXggPiAwXG4gICAgICAgICYmXG4gICAgICAgIGxldCBuZXh0ID0gaXggLSAxIGluXG4gICAgICAgIENoYXIuZXF1YWwgc3RyLltuZXh0XSAnfCcgfHwgbG9vcCBzdHIgbmV4dFxuICAgICAgfCAnXFwwMDAnIC4uICdcXDAzMicgfCAnXFwxMjcnIC4uICdcXDI1NScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGl4ID4gMCAmJiBsb29wIHN0ciAoaXggLSAxKVxuICAgIGluXG4gICAgbG9vcCBzdHIgKGxlbiAtIDEpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZWQgcyA9XG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBuXG4gICAgICA6PSAhblxuICAgICAgICAgK1xuICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICAgIHwgXyAtPiA0XG4gICAgZG9uZTtcbiAgICBpZiAhbiA9IFN0cmluZy5sZW5ndGggc1xuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHMnID0gQnl0ZXMuY3JlYXRlICFuIGluXG4gICAgICBuIDo9IDA7XG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgICAgIHwgJyAnIC4uICd+JyBhcyBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgIGxldCBhID0gQ2hhci5jb2RlIGMgaW5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgLyAxMDApKSk7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgLyAxMCBtb2QgMTApKSk7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgbW9kIDEwKSkpKTtcbiAgICAgICAgaW5jciBuXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzJylcbiAgOztcblxuICBsZXQgZXNjX3N0ciBzdHIgPVxuICAgIGxldCBlc3RyID0gZXNjYXBlZCBzdHIgaW5cbiAgICBsZXQgZWxlbiA9IFN0cmluZy5sZW5ndGggZXN0ciBpblxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKGVsZW4gKyAyKSBpblxuICAgIGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmM6ZXN0ciB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjEgfmxlbjplbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIDAgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAoZWxlbiArIDEpICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgOztcblxuICBsZXQgaW5kZXhfb2ZfbmV3bGluZSBzdHIgc3RhcnQgPVxuICAgIHRyeSBTb21lIChTdHJpbmcuaW5kZXhfZnJvbSBzdHIgc3RhcnQgJ1xcbicpIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9zdWJzdHJpbmcgc3RyIGluZGV4IGVuZF9wb3Nfb3B0ID1cbiAgICBsZXQgZW5kX3BvcyA9XG4gICAgICBtYXRjaCBlbmRfcG9zX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgIHwgU29tZSBlbmRfcG9zIC0+IGVuZF9wb3NcbiAgICBpblxuICAgIFN0cmluZy5zdWIgc3RyIH5wb3M6aW5kZXggfmxlbjooZW5kX3BvcyAtIGluZGV4KVxuICA7O1xuXG4gIGxldCBpc19vbmVfbGluZSBzdHIgPVxuICAgIG1hdGNoIGluZGV4X29mX25ld2xpbmUgc3RyIDAgd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIGluZGV4IC0+IGluZGV4ICsgMSA9IFN0cmluZy5sZW5ndGggc3RyXG4gIDs7XG5cbiAgbGV0IHBwX2h1bV9tYXliZV9lc2Nfc3RyIHBwZiBzdHIgPVxuICAgIGlmIG5vdCAobXVzdF9lc2NhcGUgc3RyKVxuICAgIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHJcbiAgICBlbHNlIGlmIGlzX29uZV9saW5lIHN0clxuICAgIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjX3N0ciBzdHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgaW5kZXggPVxuICAgICAgICBsZXQgbmV4dF9uZXdsaW5lID0gaW5kZXhfb2ZfbmV3bGluZSBzdHIgaW5kZXggaW5cbiAgICAgICAgbGV0IG5leHRfbGluZSA9IGdldF9zdWJzdHJpbmcgc3RyIGluZGV4IG5leHRfbmV3bGluZSBpblxuICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIChlc2NhcGVkIG5leHRfbGluZSk7XG4gICAgICAgIG1hdGNoIG5leHRfbmV3bGluZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbmV3bGluZV9pbmRleCAtPlxuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcXCI7XG4gICAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKCk7XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxuXCI7XG4gICAgICAgICAgbG9vcCAobmV3bGluZV9pbmRleCArIDEpXG4gICAgICBpblxuICAgICAgcHBfb3Blbl9ib3ggcHBmIDA7XG4gICAgICAoKiB0aGUgbGVhZGluZyBzcGFjZSBpcyB0byBsaW5lIHVwIHRoZSBsaW5lcyAqKVxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIiBcXFwiXCI7XG4gICAgICBsb29wIDA7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcIlwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKSlcbiAgOztcblxuICBsZXQgbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciA9IGlmIG11c3RfZXNjYXBlIHN0ciB0aGVuIGVzY19zdHIgc3RyIGVsc2Ugc3RyXG5cbiAgKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gZm9ybWF0dGVycyAqKVxuXG4gIGxldCByZWMgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHBwX2h1bV9tYXliZV9lc2Nfc3RyIHBwZiBzdHJcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX29wZW5fYm94IHBwZiBpbmRlbnQ7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IExpc3QgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCJcblxuICBhbmQgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIHBwX3ByaW50X3NwYWNlIHBwZiAoKTtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgOztcblxuICBsZXQgcmVjIHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+XG4gICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIiBcIjtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyJztcbiAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgZmFsc2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdDtcbiAgICAgIGZhbHNlXG4gICAgfCBMaXN0IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIjtcbiAgICAgIGZhbHNlXG5cbiAgYW5kIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHRcbiAgICB8IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCJcbiAgOztcblxuICBsZXQgcHBfaHVtIHBwZiBzZXhwID0gcHBfaHVtX2luZGVudCAhZGVmYXVsdF9pbmRlbnQgcHBmIHNleHBcbiAgbGV0IHBwX21hY2ggcHBmIHNleHAgPSBpZ25vcmUgKHBwX21hY2hfaW50ZXJuYWwgZmFsc2UgcHBmIHNleHApXG4gIGxldCBwcCA9IHBwX21hY2hcblxuICAoKiBTZXhwIHNpemUgKilcblxuICBsZXQgcmVjIHNpemVfbG9vcCAoKHYsIGMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gdiArIDEsIGMgKyBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHwgTGlzdCBsc3QgLT4gTGlzdC5mb2xkX2xlZnQgbHN0IH5pbml0OmFjYyB+ZjpzaXplX2xvb3BcbiAgOztcblxuICBsZXQgc2l6ZSBzZXhwID0gc2l6ZV9sb29wICgwLCAwKSBzZXhwXG5cbiAgKCogQnVmZmVyIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX2J1ZmZlcl9odW0gfmJ1ZiA/KGluZGVudCA9ICFkZWZhdWx0X2luZGVudCkgc2V4cCA9XG4gICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVhQD9cIiAocHBfaHVtX2luZGVudCBpbmRlbnQpIHNleHBcbiAgOztcblxuICBsZXQgdG9fYnVmZmVyX21hY2ggfmJ1ZiBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tIHN0ciAtPlxuICAgICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgZmFsc2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdDtcbiAgICAgICAgZmFsc2VcbiAgICAgIHwgTGlzdCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICBsZXQgdG9fYnVmZmVyID0gdG9fYnVmZmVyX21hY2hcblxuICBsZXQgdG9fYnVmZmVyX2dlbiB+YnVmIH5hZGRfY2hhciB+YWRkX3N0cmluZyBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tIHN0ciAtPlxuICAgICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIGFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgZmFsc2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdDtcbiAgICAgICAgZmFsc2VcbiAgICAgIHwgTGlzdCBbXSAtPlxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgKCogVGhlIG1heGltdW0gc2l6ZSBvZiBhIHRoaW5nIG9uIHRoZSBtaW5vciBoZWFwIGlzIDI1NiB3b3Jkcy5cbiAgICAgUHJldmlvdXNseSwgdGhpcyBzaXplIG9mIHRoZSByZXR1cm5lZCBidWZmZXIgaGVyZSB3YXMgNDA5NiBieXRlcywgd2hpY2hcbiAgICAgY2F1c2VkIHRoZSBCdWZmZXIgdG8gYmUgYWxsb2NhdGVkIG9uIHRoZSAqbWFqb3IqIGhlYXAgZXZlcnkgdGltZS5cblxuICAgICBBY2NvcmRpbmcgdG8gYSBzaW1wbGUgYmVuY2htYXJrIGJ5IFJvbiwgd2UgY2FuIGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yXG4gICAgIHNtYWxsIHMtZXhwcmVzc2lvbnMgYnkgYSBmYWN0b3Igb2YgfjQgaWYgd2Ugb25seSBhbGxvY2F0ZSAxMDI0IGJ5dGVzXG4gICAgICgxMjggd29yZHMgKyBzb21lIHNtYWxsIG92ZXJoZWFkKSB3b3J0aCBvZiBidWZmZXIgaW5pdGlhbGx5LiAgQW5kIG9uZVxuICAgICBjYW4gYXJndWUgdGhhdCBpZiBpdCdzIGZyZWUgdG8gYWxsb2NhdGUgc3RyaW5ncyBzbWFsbGVyIHRoYW4gMjU2IHdvcmRzLFxuICAgICBsYXJnZSBzLWV4cHJlc3Npb25zIHJlcXVpcmluZyBsYXJnZXIgZXhwZW5zaXZlIGJ1ZmZlcnMgd29uJ3Qgbm90aWNlXG4gICAgIHRoZSBleHRyYSB0d28gZG91YmxpbmdzIGZyb20gMTAyNCBieXRlcyB0byAyMDQ4IGFuZCA0MDk2LiBBbmQgZXNwZWNpYWxseVxuICAgICBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgYXBwbGljYXRpb25zIHRvIGFsd2F5cyBwYXNzIGluIGEgbGFyZ2VyIGJ1ZmZlciB0b1xuICAgICB1c2UuICopXG4gIGxldCBidWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIDEwMjRcblxuICAoKiBTdHJpbmcgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/aW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyXG4gICAgICB3aGVuIG1hdGNoIGluZGV4X29mX25ld2xpbmUgc3RyIDAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgXyAtPiBmYWxzZSAtPiBtYWNoX21heWJlX2VzY19zdHIgc3RyXG4gICAgfCBzZXhwIC0+XG4gICAgICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gICAgICB0b19idWZmZXJfaHVtID9pbmRlbnQgc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfbWFjaCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBtYWNoX21heWJlX2VzY19zdHIgc3RyXG4gICAgfCBzZXhwIC0+XG4gICAgICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gICAgICB0b19idWZmZXJfbWFjaCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19tYWNoXG5lbmRcblxuaW5jbHVkZSBQcmludGluZ1xuXG5sZXQgb2ZfZmxvYXRfc3R5bGUgOiBbIGBVbmRlcnNjb3JlcyB8IGBOb191bmRlcnNjb3JlcyBdIHJlZiA9IHJlZiBgTm9fdW5kZXJzY29yZXNcbmxldCBvZl9pbnRfc3R5bGUgOiBbIGBVbmRlcnNjb3JlcyB8IGBOb191bmRlcnNjb3JlcyBdIHJlZiA9IHJlZiBgTm9fdW5kZXJzY29yZXNcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmludGluZ1xuZW5kXG5cbmxldCBtZXNzYWdlIG5hbWUgZmllbGRzID1cbiAgbGV0IHJlYyBjb252X2ZpZWxkcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKGZuYW1lLCBmc2V4cCkgOjogcmVzdCAtPlxuICAgICAgKG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICB8IFwiXCIgLT4gZnNleHAgOjogY29udl9maWVsZHMgcmVzdFxuICAgICAgIHwgXyAtPiBMaXN0IFsgQXRvbSBmbmFtZTsgZnNleHAgXSA6OiBjb252X2ZpZWxkcyByZXN0KVxuICBpblxuICBMaXN0IChBdG9tIG5hbWUgOjogY29udl9maWVsZHMgZmllbGRzKVxuOztcbiIsIigqKiBSZXByZXNlbnRhdGlvbiBvZiBTLWV4cHJlc3Npb24gZ3JhbW1hcnMgKilcblxuKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSByZXByZXNlbnRhdGlvbiBmb3Igcy1leHByZXNzaW9uIGdyYW1tYXJzLiBVc2luZyBwcHhfc2V4cF9jb252XG4gICAgYW5kIFtbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXSBwcm9kdWNlcyBhIGdyYW1tYXIgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGRlcml2ZWRcbiAgICBbb2Zfc2V4cF0gZm9yIGEgZ2l2ZW4gdHlwZS5cblxuICAgIEFzIHdpdGggb3RoZXIgZGVyaXZlZCBkZWZpbml0aW9ucywgcG9seW1vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhXG4gICAgZ3JhbW1hciBmb3IgZWFjaCB0eXBlIGFyZ3VtZW50IGFuZCBwcm9kdWNlcyBhIGdyYW1tYXIgZm9yIHRoZSBtb25vbW9ycGhpemVkIHR5cGUuXG5cbiAgICBNb25vbW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBncmFtbWFyIGRpcmVjdGx5LiBUbyBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLFxuICAgIFtbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXSB3cmFwcyBncmFtbWFycyBpbiB0aGUgW0xhenldIGNvbnN0cnVjdG9yIGFzIG5lZWRlZC5cblxuICAgIFRoaXMgdHlwZSBtYXkgY2hhbmdlIG92ZXIgdGltZSBhcyBvdXIgbmVlZHMgZm9yIGV4cHJlc3NpdmUgZ3JhbW1hcnMgY2hhbmdlLiBXZSB3aWxsXG4gICAgYXR0ZW1wdCB0byBtYWtlIGNoYW5nZXMgYmFja3dhcmQtY29tcGF0aWJsZSwgb3IgYXQgbGVhc3QgcHJvdmlkZSBhIHJlYXNvbmFibGUgdXBncmFkZVxuICAgIHBhdGguICopXG5cbltAQEB3YXJuaW5nIFwiLTMwXCJdICgqIGFsbG93IGR1cGxpY2F0ZSBmaWVsZCBuYW1lcyAqKVxuXG4oKiogR3JhbW1hciBvZiBhIHNleHAuICopXG50eXBlIGdyYW1tYXIgPVxuICB8IEFueSBvZiBzdHJpbmcgKCoqIGFjY2VwdHMgYW55IHNleHA7IHN0cmluZyBpcyBhIHR5cGUgbmFtZSBmb3IgaHVtYW4gcmVhZGFiaWxpdHkgKilcbiAgfCBCb29sICgqKiBhY2NlcHRzIHRoZSBhdG9tcyBcInRydWVcIiBvciBcImZhbHNlXCIsIG1vZHVsbyBjYXBpdGFsaXphdGlvbiAqKVxuICB8IENoYXIgKCoqIGFjY2VwdHMgYW55IHNpbmdsZS1jaGFyYWN0ZXIgYXRvbSAqKVxuICB8IEludGVnZXIgKCoqIGFjY2VwdHMgYW55IGF0b20gbWF0Y2hpbmcgb2NhbWwgaW50ZWdlciBzeW50YXgsIHJlZ2FyZGxlc3Mgb2YgYml0IHdpZHRoICopXG4gIHwgRmxvYXQgKCoqIGFjY2VwdHMgYW55IGF0b20gbWF0Y2hpbmcgb2NhbWwgZmxvYXQgc3ludGF4ICopXG4gIHwgU3RyaW5nICgqKiBhY2NlcHRzIGFueSBhdG9tICopXG4gIHwgT3B0aW9uIG9mIGdyYW1tYXIgKCoqIGFjY2VwdHMgYW4gb3B0aW9uLCBib3RoIFtOb25lXSB2cyBbU29tZSBfXSBhbmQgWygpXSB2cyBbKF8pXS4gKilcbiAgfCBMaXN0IG9mIGxpc3RfZ3JhbW1hciAoKiogYWNjZXB0cyBhIGxpc3QgKilcbiAgfCBWYXJpYW50IG9mIHZhcmlhbnQgKCoqIGFjY2VwdHMgY2xhdXNlcyBrZXllZCBieSBhIGxlYWRpbmcgb3Igc29sZSBhdG9tICopXG4gIHwgVW5pb24gb2YgZ3JhbW1hciBsaXN0ICgqKiBhY2NlcHRzIGEgc2V4cCBpZiBhbnkgb2YgdGhlIGxpc3RlZCBncmFtbWFycyBhY2NlcHRzIGl0ICopXG4gIHwgVGFnZ2VkIG9mIGdyYW1tYXIgd2l0aF90YWdcbiAgKCoqIGFubm90YXRlcyBhIGdyYW1tYXIgd2l0aCBhIGNsaWVudC1zcGVjaWZpYyBrZXkvdmFsdWUgcGFpciAqKVxuICB8IFR5dmFyIG9mIHN0cmluZ1xuICAoKiogTmFtZSBvZiBhIHR5cGUgdmFyaWFibGUsIGUuZy4gW1R5dmFyIFwiYVwiXSBmb3IgWydhXS4gT25seSBtZWFuaW5nZnVsIHdoZW4gdGhlIGJvZHkgb2ZcbiAgICAgIHRoZSBpbm5lcm1vc3QgZW5jbG9zaW5nIFtkZWZuXSBkZWZpbmVzIGEgY29ycmVzcG9uZGluZyB0eXBlIHZhcmlhYmxlLiAqKVxuICB8IFR5Y29uIG9mIHN0cmluZyAqIGdyYW1tYXIgbGlzdFxuICAoKiogVHlwZSBjb25zdHJ1Y3RvciBhcHBsaWVkIHRvIGFyZ3VtZW50cy4gRm9yIGV4YW1wbGUsIFtUeWNvbiAoXCJsaXN0XCIsIFsgSW50ZWdlciBdKV1cbiAgICAgIHJlcHJlc2VudHMgW2ludCBsaXN0XS4gT25seSBtZWFuaW5nZnVsIHdoZW4gdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW1JlY3Vyc2l2ZV1cbiAgICAgIGdyYW1tYXIgZGVmaW5lcyBhIGNvcnJlc3BvbmRpbmcgdHlwZSBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWN1cnNpdmUgb2YgZ3JhbW1hciAqIGRlZm4gbGlzdFxuICAoKiogW1JlY3Vyc2l2ZSAoZ3JhbW1hciwgZGVmaW5pdGlvbnMpXSBhbGxvd3MgW2dyYW1tYXJdIHRvIHJlZmVyIHRvIHR5cGUgY29uc3RydWN0b3JzXG4gICAgICBmcm9tIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgW2RlZmluaXRpb25zXS4gVGhlIGRlZmluaXRpb25zIG1heSBhbHNvIHJlZmVyIHRvIGVhY2hcbiAgICAgIG90aGVycycgdHlwZSBjb25zdHJ1Y3RvcnMuXG5cbiAgICAgIE9yZGluYXJpbHksIFtncmFtbWFyXSBpdHNlbGYgaXMganVzdCBhIFtUeWNvbl0gYXJndW1lbnQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGl0IGNhblxuICAgICAgYmUgYW55IGdyYW1tYXIuXG5cbiAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGRlZmluZSBhIGJpbmFyeSB0cmVlIHBhcmFtZXRlcml6ZWQgYnkgYSB0eXBlXG4gICAgICBzdG9yZWQgYXQgaXRzIGxlYXZlcy5cblxuICAgICAge1tcbiAgICAgICAgbGV0IGRlZm5zID1cbiAgICAgICAgICBbIHsgdHljb24gPSBcInRyZWVcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgOyB7IG5hbWUgPSBcIlRyZWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibm9kZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IExpc3QgKE1hbnkgKFR5Y29uIFwidHJlZVwiLCBbVHl2YXIgXCJhXCJdKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHsgdHljb24gPSBcImxlYWZcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBbVHl2YXIgXCJhXCJdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA7O1xuICAgICAgXX1cblxuICAgICAgTm9ybWFsbHksIHRoZSB0eXBlIG9mIGEgdHJlZSBzdG9yaW5nIGludGVnZXJzIHdvdWxkIGJlIHdyaXR0ZW4gbGlrZSB0aGlzOlxuXG4gICAgICB7W1xuICAgICAgICBSZWN1cnNpdmUgKFR5Y29uIChcInRyZWVcIiwgWyBJbnRlZ2VyIF0pLCBkZWZucylcbiAgICAgIF19XG5cbiAgICAgIEl0IGlzIGVxdWl2YWxlbnQsIHRob3VnaCBuZWVkbGVzc2x5IHZlcmJvc2UsIHRvIHJlcGxhY2UgdGhlIFtUeWNvbl0gcmVmZXJlbmNlIHdpdGhcbiAgICAgIHRoZSBncmFtbWFyIG9mIFtcInRyZWVcIl0sIHN1YnN0aXR1dGluZyBbSW50ZWdlcl0gZm9yIFtUeXZhciBcImFcIl06XG5cbiAgICAgIHtbXG4gICAgICAgIFJlY3Vyc2l2ZVxuICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcImxlYWZcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAsIGRlZm5zIClcbiAgICAgIF19XG4gICopXG4gIHwgTGF6eSBvZiBncmFtbWFyIGxhenlfdFxuICAoKiogTGF6aWx5IGNvbXB1dGVkIGdyYW1tYXIuIFVzZSBbTGF6eV0gdG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cy4gVG8gZGVmaW5lXG4gICAgICByZWN1cnNpdmUgZ3JhbW1hcnMsIHVzZSBbUmVjdXJzaXZlXSBpbnN0ZWFkLiAqKVxuXG4oKiogR3JhbW1hciBvZiBhIGxpc3Qgb2Ygc2V4cHMuICopXG5hbmQgbGlzdF9ncmFtbWFyID1cbiAgfCBFbXB0eSAoKiogYWNjZXB0cyBhbiBlbXB0eSBsaXN0IG9mIHNleHBzICopXG4gIHwgQ29ucyBvZiBncmFtbWFyICogbGlzdF9ncmFtbWFyXG4gICgqKiBhY2NlcHRzIGEgbm9uLWVtcHR5IGxpc3Qgd2l0aCBoZWFkIGFuZCB0YWlsIG1hdGNoaW5nIHRoZSBnaXZlbiBncmFtbWFycyAqKVxuICB8IE1hbnkgb2YgZ3JhbW1hciAoKiogYWNjZXB0cyB6ZXJvIG9yIG1vcmUgc2V4cHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXIgKilcbiAgfCBGaWVsZHMgb2YgcmVjb3JkICgqKiBhY2NlcHRzIHNleHBzIHJlcHJlc2VudGluZyBmaWVsZHMgb2YgYSByZWNvcmQgKilcblxuKCoqIENhc2Ugc2Vuc2l0aXZpdHkgb3B0aW9ucyBmb3IgbmFtZXMgb2YgdmFyaWFudCBjb25zdHJ1Y3RvcnMuICopXG5hbmQgY2FzZV9zZW5zaXRpdml0eSA9XG4gIHwgQ2FzZV9pbnNlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlLiBVc2VkIGZvciBjdXN0b20gcGFyc2Vycy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2ZS4gVXNlZCBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMuICopXG4gIHwgQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlIGZvciB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjYXNlIHNlbnNpdGl2ZSBhZnRlcndhcmQuXG4gICAgICBVc2VkIGZvciByZWd1bGFyIHZhcmlhbnRzLiAqKVxuXG4oKiogR3JhbW1hciBvZiB2YXJpYW50cy4gQWNjZXB0cyBhbnkgc2V4cCBtYXRjaGluZyBvbmUgb2YgdGhlIGNsYXVzZXMuICopXG5hbmQgdmFyaWFudCA9XG4gIHsgY2FzZV9zZW5zaXRpdml0eSA6IGNhc2Vfc2Vuc2l0aXZpdHlcbiAgOyBjbGF1c2VzIDogY2xhdXNlIHdpdGhfdGFnX2xpc3QgbGlzdFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlLiBBY2NlcHRzIHNleHBzIGJhc2VkIG9uIHRoZSBbY2xhdXNlX2tpbmRdLiAqKVxuYW5kIGNsYXVzZSA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IGNsYXVzZV9raW5kIDogY2xhdXNlX2tpbmRcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHNpbmdsZSB2YXJpYW50IGNsYXVzZSdzIGNvbnRlbnRzLiBbQXRvbV9jbGF1c2VdIGFjY2VwdHMgYW4gYXRvbSBtYXRjaGluZ1xuICAgIHRoZSBjbGF1c2UncyBuYW1lLiBbTGlzdF9jbGF1c2VdIGFjY2VwdHMgYSBsaXN0IHdob3NlIGhlYWQgaXMgYW4gYXRvbSBtYXRjaGluZyB0aGVcbiAgICBjbGF1c2UncyBuYW1lIGFuZCB3aG9zZSB0YWlsIG1hdGNoZXMgW2FyZ3NdLiBUaGUgY2xhdXNlJ3MgbmFtZSBpcyBtYXRjaGVkIG1vZHVsbyB0aGVcbiAgICB2YXJpYW50J3MgW25hbWVfa2luZF0uICopXG5hbmQgY2xhdXNlX2tpbmQgPVxuICB8IEF0b21fY2xhdXNlXG4gIHwgTGlzdF9jbGF1c2Ugb2YgeyBhcmdzIDogbGlzdF9ncmFtbWFyIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQuIEFjY2VwdHMgYW55IGxpc3Qgb2Ygc2V4cHMgc3BlY2lmeWluZyBlYWNoIG9mIHRoZSBmaWVsZHMsXG4gICAgcmVnYXJkbGVzcyBvZiBvcmRlci4gSWYgW2FsbG93X2V4dHJhX2ZpZWxkc10gaXMgc3BlY2lmaWVkLCBpZ25vcmVzIHNleHBzIHdpdGggbmFtZXNcbiAgICBub3QgZm91bmQgaW4gW2ZpZWxkc10uICopXG5hbmQgcmVjb3JkID1cbiAgeyBhbGxvd19leHRyYV9maWVsZHMgOiBib29sXG4gIDsgZmllbGRzIDogZmllbGQgd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQgZmllbGQuIEEgZmllbGQgbXVzdCBzaG93IHVwIGV4YWN0bHkgb25jZSBpbiBhIHJlY29yZCBpZlxuICAgIFtyZXF1aXJlZF0sIG9yIGF0IG1vc3Qgb25jZSBvdGhlcndpc2UuIEFjY2VwdHMgYSBsaXN0IGhlYWRlZCBieSBbbmFtZV0gYXMgYW4gYXRvbSxcbiAgICBmb2xsb3dlZCBieSBzZXhwcyBtYXRjaGluZyBbYXJnc10uICopXG5hbmQgZmllbGQgPVxuICB7IG5hbWUgOiBzdHJpbmdcbiAgOyByZXF1aXJlZCA6IGJvb2xcbiAgOyBhcmdzIDogbGlzdF9ncmFtbWFyXG4gIH1cblxuKCoqIEdyYW1tYXIgdGFnZ2VkIHdpdGggY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyLiAqKVxuYW5kICdhIHdpdGhfdGFnID1cbiAgeyBrZXkgOiBzdHJpbmdcbiAgOyB2YWx1ZSA6IFNleHAudFxuICA7IGdyYW1tYXIgOiAnYVxuICB9XG5cbmFuZCAnYSB3aXRoX3RhZ19saXN0ID1cbiAgfCBUYWcgb2YgJ2Egd2l0aF90YWdfbGlzdCB3aXRoX3RhZ1xuICB8IE5vX3RhZyBvZiAnYVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY3Vyc2l2ZSB0eXBlIGRlZmluaXRpb24uIE5hbWVzIHRoZSBbdHljb25dIGJlaW5nIGRlZmluZWQsIGFuZCB0aGVcbiAgICBbdHl2YXJzXSBpdCB0YWtlcyBhcyBwYXJhbWV0ZXJzLiBTcGVjaWZpZXMgdGhlIFtncmFtbWFyXSBvZiB0aGUgW3R5Y29uXS4gVGhlIGdyYW1tYXJcbiAgICBtYXkgcmVmZXIgdG8gYW55IG9mIHRoZSBbdHl2YXJzXSwgYW5kIHRvIGFueSBvZiB0aGUgW3R5Y29uXXMgZnJvbSB0aGUgc2FtZSBzZXQgb2ZcbiAgICBbUmVjdXJzaXZlXSBkZWZpbml0aW9ucy4gKilcbmFuZCBkZWZuID1cbiAgeyB0eWNvbiA6IHN0cmluZ1xuICA7IHR5dmFycyA6IHN0cmluZyBsaXN0XG4gIDsgZ3JhbW1hciA6IGdyYW1tYXJcbiAgfVxuXG4oKiogVG9wLWxldmVsIGdyYW1tYXIgdHlwZS4gSGFzIGEgcGhhbnRvbSB0eXBlIHBhcmFtZXRlciB0byBhc3NvY2lhdGUgZWFjaCBncmFtbWFyIHdpdGhcbiAgICB0aGUgdHlwZSBpdHMgc2V4cHMgcmVwcmVzZW50LiBUaGlzIG1ha2VzIGl0IGhhcmRlciB0byBhcHBseSBncmFtbWFycyB0byB0aGUgd3JvbmdcbiAgICB0eXBlLCB3aGlsZSBncmFtbWFycyBjYW4gc3RpbGwgYmUgZWFzaWx5IGNvZXJjZWQgdG8gYSBuZXcgdHlwZSBpZiBuZWVkZWQuICopXG50eXBlIF8gdCA9IHsgdW50eXBlZCA6IGdyYW1tYXIgfSBbQEB1bmJveGVkXVxuXG5sZXQgY29lcmNlICh0eXBlIGEgYikgKHsgdW50eXBlZCA9IF8gfSBhcyB0IDogYSB0KSA6IGIgdCA9IHRcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGlzIHVzZWQgZm9yIGFsbCB0YWdzIGdlbmVyYXRlZCBmcm9tIGRvYyBjb21tZW50cy4gKilcbmxldCBkb2NfY29tbWVudF90YWcgPSBcInNleHBfZ3JhbW1hci5kb2NfY29tbWVudFwiXG4iLCJsZXQgdW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCBFbXB0eSB9XG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQm9vbCB9XG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IENoYXIgfVxubGV0IGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEZsb2F0IH1cbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IHNleHBfdF9zZXhwX2dyYW1tYXIgOiBTZXhwLnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJTZXhwLnRcIiB9XG5sZXQgcmVmX3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5cbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBvcHRpb24gU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBPcHRpb24gdW50eXBlZCB9XG47O1xuXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGxpc3QgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGFycmF5IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgZW1wdHlfc2V4cF9ncmFtbWFyIDogXyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbmxldCBvcGFxdWVfc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG5sZXQgZnVuX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxuIiwiKCogVXRpbGl0eSBNb2R1bGUgZm9yIFMtZXhwcmVzc2lvbiBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwXG5cbigqIENvbnZlcnNpb24gb2YgT0NhbWwtdmFsdWVzIHRvIFMtZXhwcmVzc2lvbnMgKilcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogJyUuMTdnJyBpcyBndWFyYW50ZWVkIHRvIGJlIHJvdW5kLXRyaXBwYWJsZS5cblxuICAgJyUuMTVnJyB3aWxsIGJlIHJvdW5kLXRyaXBwYWJsZSBhbmQgbm90IGhhdmUgbm9pc2UgYXQgdGhlIGxhc3QgZGlnaXQgb3IgdHdvIGZvciBhIGZsb2F0XG4gICB3aGljaCB3YXMgY29udmVydGVkIGZyb20gYSBkZWNpbWFsIChzdHJpbmcpIHdpdGggPD0gMTUgc2lnbmlmaWNhbnQgZGlnaXRzLiAgU28gaXQnc1xuICAgd29ydGggdHJ5aW5nIGZpcnN0IHRvIGF2b2lkIHRoaW5ncyBsaWtlIFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIuXG5cbiAgIFNlZSBjb21tZW50IGFib3ZlIFt0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlXSBpbiB7IUNvcmUuRmxvYXR9IGZvclxuICAgZGV0YWlsZWQgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzLiAqKVxubGV0IGRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0ID1cbiAgcmVmIChmdW4geCAtPlxuICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdHXCIgeClcbjs7XG5cbmxldCByZWFkX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCB3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgbGlzdF9tYXAgZiBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBsIH5mKVxubGV0IHNleHBfb2ZfdW5pdCAoKSA9IExpc3QgW11cbmxldCBzZXhwX29mX2Jvb2wgYiA9IEF0b20gKHN0cmluZ19vZl9ib29sIGIpXG5sZXQgc2V4cF9vZl9zdHJpbmcgc3RyID0gQXRvbSBzdHJcbmxldCBzZXhwX29mX2J5dGVzIGJ5dGVzID0gQXRvbSAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHNleHBfb2ZfY2hhciBjID0gQXRvbSAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHNleHBfb2ZfaW50IG4gPSBBdG9tIChzdHJpbmdfb2ZfaW50IG4pXG5sZXQgc2V4cF9vZl9mbG9hdCBuID0gQXRvbSAoIWRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IG4pXG5sZXQgc2V4cF9vZl9pbnQzMiBuID0gQXRvbSAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9pbnQ2NCBuID0gQXRvbSAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgbiA9IEF0b20gKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX3JlZiBzZXhwX29mX19hIHJmID0gc2V4cF9vZl9fYSAhcmZcbmxldCBzZXhwX29mX2xhenlfdCBzZXhwX29mX19hIGx2ID0gc2V4cF9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFsgc2V4cF9vZl9fYSB4IF1cbiAgfCBTb21lIHggLT4gTGlzdCBbIEF0b20gXCJzb21lXCI7IHNleHBfb2ZfX2EgeCBdXG4gIHwgTm9uZSB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFtdXG4gIHwgTm9uZSAtPiBBdG9tIFwibm9uZVwiXG47O1xuXG5sZXQgc2V4cF9vZl9wYWlyIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiAoYSwgYikgPSBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGIgXVxuXG5sZXQgc2V4cF9vZl90cmlwbGUgc2V4cF9vZl9fYSBzZXhwX29mX19iIHNleHBfb2ZfX2MgKGEsIGIsIGMpID1cbiAgTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiOyBzZXhwX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHNleHBfb2ZfbGlzdCBzZXhwX29mX19hIGxzdCA9IExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgbHN0IH5mOnNleHBfb2ZfX2EpKVxuXG5sZXQgc2V4cF9vZl9hcnJheSBzZXhwX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9oYXNodGJsIHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBMaXN0IFsgc2V4cF9vZl9rZXkgazsgc2V4cF9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHNleHBfb2Zfb3BhcXVlIF8gPSBBdG9tIFwiPG9wYXF1ZT5cIlxubGV0IHNleHBfb2ZfZnVuIF8gPSBBdG9tIFwiPGZ1bj5cIlxuXG4oKiBFeGNlcHRpb24gY29udmVydGVyIHJlZ2lzdHJhdGlvbiBhbmQgbG9va3VwICopXG5cbm1vZHVsZSBFeG5fY29udmVydGVyID0gc3RydWN0XG4gICgqIFRoZXNlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IGNvbnRleHQtc3dpdGNoZXNcbiAgICAgY2Fubm90IGhhcHBlbiB1bmxlc3MgdGhlcmUgaXMgYW4gYWxsb2NhdGlvbi4gIEl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0XG4gICAgIHRoYXQgdGhpcyB3aWxsIHJlbWFpbiB0cnVlIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlLiAgVGhhdCB3YXkgd2VcbiAgICAgYXZvaWQgdXNpbmcgbXV0ZXhlcyBhbmQgdGh1cyBhIGRlcGVuZGVuY3kgb24gdGhlIHRocmVhZHMgbGlicmFyeS4gKilcblxuICAoKiBGYXN0IGFuZCBhdXRvbWF0aWMgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiAqKVxuXG4gIG1vZHVsZSBSZWdpc3RyYXRpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzZXhwX29mX2V4biA6IGV4biAtPiBTZXhwLnRcbiAgICAgIDsgKCogSWYgW3ByaW50ZXhjID0gdHJ1ZV0gdGhlbiB0aGlzIHNleHAgY29udmVydGVyIGlzIHVzZWQgZm9yIFByaW50ZXhjLnRvX3N0cmluZyAqKVxuICAgICAgICBwcmludGV4YyA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEV4bl90YWJsZSA9IEVwaGVtZXJvbi5LMS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuXG4gICAgICBsZXQgZXF1YWwgPSAoID09IClcbiAgICAgIGxldCBoYXNoID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuICAgIGVuZClcblxuICBsZXQgdGhlX2V4bl90YWJsZSA6IFJlZ2lzdHJhdGlvbi50IEV4bl90YWJsZS50ID0gRXhuX3RhYmxlLmNyZWF0ZSAxN1xuXG4gICgqIEVwaGVtZXJvbnMgYXJlIHVzZWQgc28gdGhhdCBbc2V4cF9vZl9leG5dIGNsb3N1cmUgZG9uJ3Qga2VlcCB0aGVcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpdmUuICopXG4gIGxldCBhZGQgPyhwcmludGV4YyA9IHRydWUpID9maW5hbGlzZTpfIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBzZXhwX29mX2V4biA9XG4gICAgRXhuX3RhYmxlLmFkZCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9XG4gIDs7XG5cbiAgbGV0IGZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjIGV4biA9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4biBpblxuICAgIG1hdGNoIEV4bl90YWJsZS5maW5kX29wdCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfSAtPlxuICAgICAgKG1hdGNoIGZvcl9wcmludGV4YywgcHJpbnRleGMgd2l0aFxuICAgICAgIHwgZmFsc2UsIF8gfCBfLCB0cnVlIC0+IFNvbWUgKHNleHBfb2ZfZXhuIGV4bilcbiAgICAgICB8IHRydWUsIGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl91bml0X3Rlc3RzX29ubHkgPSBzdHJ1Y3RcbiAgICBsZXQgc2l6ZSAoKSA9IChFeG5fdGFibGUuc3RhdHNfYWxpdmUgdGhlX2V4bl90YWJsZSkubnVtX2JpbmRpbmdzXG4gIGVuZFxuZW5kXG5cbmxldCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6dHJ1ZSBleG5cbmxldCBzZXhwX29mX2V4bl9vcHQgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4YzpmYWxzZSBleG5cblxubGV0IHNleHBfb2ZfZXhuIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gTGlzdCBbIEF0b20gKFByaW50ZXhjLnRvX3N0cmluZyBleG4pIF1cbiAgfCBTb21lIHNleHAgLT4gc2V4cFxuOztcblxubGV0IGV4bl90b19zdHJpbmcgZSA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSlcblxuKCoge1tleGNlcHRpb24gQmxhaCBbQEBkZXJpdmluZyBzZXhwXV19IGdlbmVyYXRlcyBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uXG4gICBbRXhuX2NvbnZlcnRlci5hZGRdIGRlZmluZWQgaW4gdGhpcyBmaWxlLiAgU28gd2UgYXJlIGd1YXJhbnRlZCB0aGF0IGFzIHNvb24gYXMgd2VcbiAgIG1hcmsgYW4gZXhjZXB0aW9uIGFzIHNleHBhYmxlLCB0aGlzIG1vZHVsZSB3aWxsIGJlIGxpbmtlZCBpbiBhbmQgdGhpcyBwcmludGVyIHdpbGwgYmVcbiAgIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4gKilcbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBleG4gLT5cbiAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgc2V4cCAtPiBTb21lIChTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHApKVxuOztcblxubGV0IHByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gUHJpbnRleGMudG9fc3RyaW5nIGV4blxuICB8IFNvbWUgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHBcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgUy1leHByZXNzaW9ucyB0byBPQ2FtbC12YWx1ZXMgKilcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBTZXhwLk9mX3NleHBfZXJyb3JcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4YyBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkpXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcblxubGV0IHVuaXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiAoKVxuICB8IEF0b20gXyB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwidW5pdF9vZl9zZXhwOiBlbXB0eSBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBib29sX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gKFwidHJ1ZVwiIHwgXCJUcnVlXCIpIC0+IHRydWVcbiAgfCBBdG9tIChcImZhbHNlXCIgfCBcIkZhbHNlXCIpIC0+IGZhbHNlXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IHVua25vd24gc3RyaW5nXCIgc2V4cFxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYnl0ZXNfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYnl0ZXNfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY2hhcl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiBzZXhwO1xuICAgIHN0ci5bMF1cbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBpbnRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGZsb2F0X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImZsb2F0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQzMl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50MzIub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50MzJfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDMyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDY0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQ2NC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQ2NF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50NjRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwibmF0aXZlaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJuYXRpdmVpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgcmVmX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gcmVmIChhX19vZl9zZXhwIHNleHApXG5sZXQgbGF6eV90X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2Zfc2V4cCBzZXhwKVxuXG5sZXQgb3B0aW9uX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgaWYgIXJlYWRfb2xkX29wdGlvbl9mb3JtYXRcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFtdIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIGVsIF0gfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCByZXByZXNlbnQgb3B0aW9uYWwgdmFsdWVcIiBzZXhwXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwKVxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cFxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IGJlIChzb21lIGVsKVwiIHNleHApXG47O1xuXG5sZXQgcGFpcl9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGEsIGJcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHR3byBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCB0cmlwbGVfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgY19fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwOyBjX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgbGV0IGMgPSBjX19vZl9zZXhwIGNfc2V4cCBpblxuICAgIGEsIGIsIGNcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBsaXN0X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2Zfc2V4cCBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImxpc3Rfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYXJyYXlfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IFt8fF1cbiAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl9zZXhwIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImFycmF5X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGhhc2h0Ymxfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWxfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgTGlzdCBbIGtfc2V4cDsgdl9zZXhwIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2Zfc2V4cCBrX3NleHApIH5kYXRhOih2YWxfb2Zfc2V4cCB2X3NleHApXG4gICAgICB8IExpc3QgXyB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHNleHBcbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgb3BhcXVlX29mX3NleHAgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgXCJvcGFxdWVfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHNleHBcbjs7XG5cbmxldCBmdW5fb2Zfc2V4cCBzZXhwID0gb2Zfc2V4cF9lcnJvciBcImZ1bl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiBzZXhwXG5cbigqIFNleHAgR3JhbW1hcnMgKilcblxuaW5jbHVkZSBTZXhwX2NvbnZfZ3JhbW1hclxuXG4oKiBSZWdpc3RlcmluZyBkZWZhdWx0IGV4Y2VwdGlvbiBwcmludGVycyAqKVxuXG5sZXQgZ2V0X2ZsY19lcnJvciBuYW1lIChmaWxlLCBsaW5lLCBjaHIpID0gQXRvbSAoc3ByaW50ZiBcIiVzICVzOiVkOiVkXCIgbmFtZSBmaWxlIGxpbmUgY2hyKVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6ZmFsc2UgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBc3NlcnRfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBc3NlcnRfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIkFzc2VydF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeGl0XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEV4aXQgLT4gQXRvbSBcIkV4aXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRW5kX29mX2ZpbGVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRW5kX29mX2ZpbGUgLT4gQXRvbSBcIkVuZF9vZl9maWxlXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJGYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmQgLT4gQXRvbSBcIk5vdF9mb3VuZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBJbnZhbGlkX2FyZ3VtZW50XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYXJnIC0+IExpc3QgWyBBdG9tIFwiSW52YWxpZF9hcmd1bWVudFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXRjaF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE1hdGNoX2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJNYXRjaF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRfc11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmRfcyBhcmcgLT4gTGlzdCBbIEF0b20gXCJOb3RfZm91bmRfc1wiOyBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5c19lcnJvciBhcmcgLT4gTGlzdCBbIEF0b20gXCJTeXNfZXJyb3JcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkhlbHBdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkhlbHAgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkhlbHBcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkJhZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuQmFkIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5CYWRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTGF6eS5VbmRlZmluZWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTGF6eS5VbmRlZmluZWQgLT4gQXRvbSBcIkxhenkuVW5kZWZpbmVkXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNpbmcuUGFyc2VfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBBdG9tIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBRdWV1ZS5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBRdWV1ZS5FbXB0eSAtPiBBdG9tIFwiUXVldWUuRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2NhbmYuU2Nhbl9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFNjYW5mLlNjYW5fZmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJTY2FuZi5TY2FuX2ZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3RhY2suRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3RhY2suRW1wdHkgLT4gQXRvbSBcIlN0YWNrLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5cy5CcmVha11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXMuQnJlYWsgLT4gQXRvbSBcIlN5cy5CcmVha1wiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4Yzp0cnVlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHNleHApIC0+XG4gICAgICAgICAgTGlzdCBbIEF0b20gXCJTZXhwbGliLkNvbnYuT2Zfc2V4cF9lcnJvclwiOyBzZXhwX29mX2V4biBleGM7IHNleHAgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBTLWV4cHJlc3Npb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwX2NvbnZcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHNleHAgPVxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZyBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2MgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogYSBbc2V4cC5ib29sXSBmaWVsZCB3YXMgZ2l2ZW4gYSBwYXlsb2FkLlwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IG9ubHkgcGFpcnMgZXhwZWN0ZWQsIHRoZWlyIGZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBcXFxuICAgICAgIGF0b21cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyBzZXhwIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3NleHA6IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSBzZXhwXG47O1xuIiwiKCoqIFByaW1pdGl2ZXMgZm9yIHBvbHltb3JwaGljIGNvbXBhcmUuICopXG5cbigqXyBQb2x5bW9ycGhpYyBjb21waWxlciBwcmltaXRpdmVzIGNhbid0IGJlIGFsaWFzZXMgYXMgdGhpcyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gIGlubGluaW5nLiAoSWYgYWxpYXNlZCB3aXRob3V0IGEgdHlwZSBhbm5vdGF0aW9uLCB0aGUgY29tcGlsZXIgd291bGQgaW1wbGVtZW50IHRoZW1cbiAgdXNpbmcgdGhlIGdlbmVyaWMgY29kZSBkb2luZyBhIEMgY2FsbCwgYW5kIGl0J3MgdGhpcyBjb2RlIHRoYXQgd291bGQgYmUgaW5saW5lZC4pIEFzIGFcbiAgcmVzdWx0IHdlIGhhdmUgdG8gY29weSB0aGUgW2V4dGVybmFsIC4uLl0gZGVjbGFyYXRpb24gaGVyZS4gKilcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgYXNjZW5kaW5nIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG5sZXQgbWF4ID0gQ2FtbC5tYXhcbmxldCBtaW4gPSBDYW1sLm1pblxuIiwiKCogVGhpcyBtb2R1bGUgaXMgaW5jbHVkZWQgaW4gW0ltcG9ydF0uICBJdCBpcyBhaW1lZCBhdCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBzdGFuZGFyZFxuICAgY29tYmluYXRvcnMgZm9yIFtzZXhwX29mXSwgW29mX3NleHBdLCBbY29tcGFyZV0gYW5kIFtoYXNoXSBhbmQgYXJlIGluY2x1ZGVkIGluXG4gICBbSW1wb3J0XS4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgKCogVGhlc2UgbW9kdWxlcyBhcmUgcmVkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdCkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxudHlwZSAnYSByZWYgPSAnYSBDYW1sLnJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuKCogUmVzaHVmZmxlIFtDYW1sXSBzbyB0aGF0IHdlIGNob29zZSB0aGUgbW9kdWxlcyB1c2luZyBsYWJlbHMgd2hlbiBhdmFpbGFibGUuICopXG5tb2R1bGUgQ2FtbCA9IHN0cnVjdFxuXG4gIGluY2x1ZGUgQ2FtbFxuXG4gIG1vZHVsZSBBcmcgPSBDYW1sLkFyZyAoKiogQGNhbm9uaWNhbCBDYW1sLkFyZyAqKVxuXG4gIG1vZHVsZSBBcnJheSA9IENhbWwuU3RkTGFiZWxzLkFycmF5ICgqKiBAY2Fub25pY2FsIENhbWwuU3RkTGFiZWxzLkFycmF5ICopXG5cbiAgbW9kdWxlIEJvb2wgPSBDYW1sLkJvb2wgKCoqIEBjYW5vbmljYWwgQ2FtbC5Cb29sICopXG5cbiAgbW9kdWxlIEJ1ZmZlciA9IENhbWwuQnVmZmVyICgqKiBAY2Fub25pY2FsIENhbWwuQnVmZmVyICopXG5cbiAgbW9kdWxlIEJ5dGVzID0gQ2FtbC5TdGRMYWJlbHMuQnl0ZXMgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuQnl0ZXMgKilcblxuICBtb2R1bGUgQ2hhciA9IENhbWwuQ2hhciAoKiogQGNhbm9uaWNhbCBDYW1sLkNoYXIgKilcblxuICBtb2R1bGUgRXBoZW1lcm9uID0gQ2FtbC5FcGhlbWVyb24gKCoqIEBjYW5vbmljYWwgQ2FtbC5FcGhlbWVyb24gKilcblxuICBtb2R1bGUgRmxvYXQgPSBDYW1sLkZsb2F0ICgqKiBAY2Fub25pY2FsIENhbWwuRmxvYXQgKilcblxuICBtb2R1bGUgRm9ybWF0ID0gQ2FtbC5Gb3JtYXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Gb3JtYXQgKilcblxuICBtb2R1bGUgRnVuID0gQ2FtbC5GdW4gKCoqIEBjYW5vbmljYWwgQ2FtbC5GdW4gKilcblxuICBtb2R1bGUgR2MgPSBDYW1sLkdjICgqKiBAY2Fub25pY2FsIENhbWwuR2MgKilcblxuICBtb2R1bGUgSGFzaHRibCA9IENhbWwuTW9yZUxhYmVscy5IYXNodGJsICgqKiBAY2Fub25pY2FsIENhbWwuTW9yZUxhYmVscy5IYXNodGJsICopXG5cbiAgbW9kdWxlIEludDMyID0gQ2FtbC5JbnQzMiAoKiogQGNhbm9uaWNhbCBDYW1sLkludDMyICopXG5cbiAgbW9kdWxlIEludCA9IENhbWwuSW50ICgqKiBAY2Fub25pY2FsIENhbWwuSW50ICopXG5cbiAgbW9kdWxlIEludDY0ID0gQ2FtbC5JbnQ2NCAoKiogQGNhbm9uaWNhbCBDYW1sLkludDY0ICopXG5cbiAgbW9kdWxlIExhenkgPSBDYW1sLkxhenkgKCoqIEBjYW5vbmljYWwgQ2FtbC5MYXp5ICopXG5cbiAgbW9kdWxlIExleGluZyA9IENhbWwuTGV4aW5nICgqKiBAY2Fub25pY2FsIENhbWwuTGV4aW5nICopXG5cbiAgbW9kdWxlIExpc3QgPSBDYW1sLlN0ZExhYmVscy5MaXN0ICgqKiBAY2Fub25pY2FsIENhbWwuU3RkTGFiZWxzLkxpc3QgKilcblxuICBtb2R1bGUgTWFwID0gQ2FtbC5Nb3JlTGFiZWxzLk1hcCAoKiogQGNhbm9uaWNhbCBDYW1sLk1vcmVMYWJlbHMuTWFwICopXG5cbiAgbW9kdWxlIE5hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50ICgqKiBAY2Fub25pY2FsIENhbWwuTmF0aXZlaW50ICopXG5cbiAgbW9kdWxlIE9iaiA9IENhbWwuT2JqICgqKiBAY2Fub25pY2FsIENhbWwuT2JqICopXG5cbiAgbW9kdWxlIE9wdGlvbiA9IENhbWwuT3B0aW9uICgqKiBAY2Fub25pY2FsIENhbWwuT3B0aW9uICopXG5cbiAgbW9kdWxlIFBhcnNpbmcgPSBDYW1sLlBhcnNpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5QYXJzaW5nICopXG5cbiAgbW9kdWxlIFByaW50ZXhjID0gQ2FtbC5QcmludGV4YyAoKiogQGNhbm9uaWNhbCBDYW1sLlByaW50ZXhjICopXG5cbiAgbW9kdWxlIFByaW50ZiA9IENhbWwuUHJpbnRmICgqKiBAY2Fub25pY2FsIENhbWwuUHJpbnRmICopXG5cbiAgbW9kdWxlIFF1ZXVlID0gQ2FtbC5RdWV1ZSAoKiogQGNhbm9uaWNhbCBDYW1sLlF1ZXVlICopXG5cbiAgbW9kdWxlIFJhbmRvbSA9IENhbWwuUmFuZG9tICgqKiBAY2Fub25pY2FsIENhbWwuUmFuZG9tICopXG5cbiAgbW9kdWxlIFJlc3VsdCA9IENhbWwuUmVzdWx0ICgqKiBAY2Fub25pY2FsIENhbWwuUmVzdWx0ICopXG5cbiAgbW9kdWxlIFNjYW5mID0gQ2FtbC5TY2FuZiAoKiogQGNhbm9uaWNhbCBDYW1sLlNjYW5mICopXG5cbiAgbW9kdWxlIFNlcSA9IENhbWwuU2VxICgqKiBAY2Fub25pY2FsIENhbWwuU2VxICopXG5cbiAgbW9kdWxlIFNldCA9IENhbWwuTW9yZUxhYmVscy5TZXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Nb3JlTGFiZWxzLlNldCAqKVxuXG4gIG1vZHVsZSBTdGFjayA9IENhbWwuU3RhY2sgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGFjayAqKVxuXG4gIG1vZHVsZSBTdHJpbmcgPSBDYW1sLlN0ZExhYmVscy5TdHJpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuU3RyaW5nICopXG5cbiAgbW9kdWxlIFN5cyA9IENhbWwuU3lzICgqKiBAY2Fub25pY2FsIENhbWwuU3lzICopXG5cbiAgbW9kdWxlIFVjaGFyID0gQ2FtbC5VY2hhciAoKiogQGNhbm9uaWNhbCBDYW1sLlVjaGFyICopXG5cbiAgbW9kdWxlIFVuaXQgPSBDYW1sLlVuaXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Vbml0ICopXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZCA9IENhbWwuTm90X2ZvdW5kXG5lbmRcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuKCogV2UgdXNlIFtPYmoubWFnaWNdIGhlcmUgYXMgb3RoZXIgaW1wbGVtZW50YXRpb25zIGdlbmVyYXRlIGEgY29uZGl0aW9uYWwganVtcCBhbmQgdGhlXG4gICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGlzIG5vdGljZWFibGUuICopXG5sZXQgYm9vbF90b19pbnQgKHggOiBib29sKSA6IGludCA9IENhbWwuT2JqLm1hZ2ljIHhcblxuKCogVGhpcyBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseSAqKVxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0ICggIT0gKSA9IENhbWwuKCAhPSApXG5sZXQgKCAqICkgPSBDYW1sLiggKiApXG5sZXQgKCAqKiApID0gQ2FtbC4oICoqIClcbmxldCAoICouICkgPSBDYW1sLiggKi4gKVxubGV0ICggKyApID0gQ2FtbC4oICsgKVxubGV0ICggKy4gKSA9IENhbWwuKCArLiApXG5sZXQgKCAtICkgPSBDYW1sLiggLSApXG5sZXQgKCAtLiApID0gQ2FtbC4oIC0uIClcbmxldCAoIC8gKSA9IENhbWwuKCAvIClcbmxldCAoIC8uICkgPSBDYW1sLiggLy4gKVxuXG5tb2R1bGUgUG9seSA9IFBvbHkwICgqKiBAY2Fub25pY2FsIEJhc2UuUG9seSAqKVxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuSW50MzIudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuICBleHRlcm5hbCBjb21wYXJlIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuSW50NjQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuSW50NjQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IG1heCAoeCA6IENhbWwuSW50NjQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLkludDY0LnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBib29sKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBib29sKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBib29sKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBib29sKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJvb2wpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogYm9vbCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBjaGFyKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGNoYXIpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogY2hhcikgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgaSB4ID0gQ2FtbC5VY2hhci50b19pbnQgeFxuICBsZXQgKCA8ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIChpIHgpIChpIHkpXG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPSApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPiApIChpIHgpIChpIHkpXG4gIGxldCAoID49ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSAoaSB4KSAoaSB5KVxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuYXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZGVzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBjb21wYXJlICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIChpIHgpIChpIHkpXG4gIGxldCBlcXVhbCAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgKGkgeCkgKGkgeSlcbiAgbGV0IG1heCAoeCA6IENhbWwuVWNoYXIudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGZsb2F0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogZmxvYXQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGZsb2F0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGZsb2F0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGZsb2F0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHN0cmluZykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHN0cmluZykgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBzdHJpbmcpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogYnl0ZXMpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJ5dGVzKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJ5dGVzKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGJ5dGVzKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG4oKiBUaGlzIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgY2FuIHNwZWNpYWxpemUgaXQgYXMgYVxuICAgZGlyZWN0IHNldCBvciBjYW1sX21vZGlmeSAqKVxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgb3RoZXJ3aXNlIHRoZSBjb21waWxlciB3b24ndCB1bmJveFxuICAgcmVmZXJlbmNlcyAqKVxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuXG5sZXQgKCBAICkgPSBDYW1sLiggQCApXG5sZXQgKCBeICkgPSBDYW1sLiggXiApXG5sZXQgKCB+LSApID0gQ2FtbC4oIH4tIClcbmxldCAoIH4tLiApID0gQ2FtbC4oIH4tLiApXG5sZXQgKCBhc3IgKSA9IENhbWwuKCBhc3IgKVxubGV0ICggbGFuZCApID0gQ2FtbC4oIGxhbmQgKVxubGV0IGxub3QgPSBDYW1sLmxub3RcbmxldCAoIGxvciApID0gQ2FtbC4oIGxvciApXG5sZXQgKCBsc2wgKSA9IENhbWwuKCBsc2wgKVxubGV0ICggbHNyICkgPSBDYW1sLiggbHNyIClcbmxldCAoIGx4b3IgKSA9IENhbWwuKCBseG9yIClcbmxldCAoIG1vZCApID0gQ2FtbC4oIG1vZCApXG5sZXQgYWJzID0gQ2FtbC5hYnNcbmxldCBmYWlsd2l0aCA9IENhbWwuZmFpbHdpdGhcbmxldCBmc3QgPSBDYW1sLmZzdFxubGV0IGludmFsaWRfYXJnID0gQ2FtbC5pbnZhbGlkX2FyZ1xubGV0IHNuZCA9IENhbWwuc25kXG5cbigqIFtyYWlzZV0gbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBhcyB0aGUgY29tcGlsZXIgYXV0b21hdGljYWxseSByZXBsYWNlc1xuICAgJyVyYWlzZScgYnkgJyVyZXJhaXNlJyB3aGVuIGFwcHJvcHJpYXRlLiAqKVxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxubGV0IHBoeXNfZXF1YWwgPSBDYW1sLiggPT0gKVxubGV0IGRlY3IgPSBDYW1sLmRlY3JcbmxldCBpbmNyID0gQ2FtbC5pbmNyXG5cbigqIHVzZWQgYnkgc2V4cF9jb252LCB3aGljaCBmbG9hdDAgZGVwZW5kcyBvbiB0aHJvdWdoIG9wdGlvbiAqKVxubGV0IGZsb2F0X29mX3N0cmluZyA9IENhbWwuZmxvYXRfb2Zfc3RyaW5nXG5cbigqIFthbV90ZXN0aW5nXSBpcyB1c2VkIGluIGEgZmV3IHBsYWNlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkgd2hlbiBpbiB0ZXN0aW5nIG1vZGUsIHN1Y2hcbiAgIGFzIGluIFtyYW5kb20ubWxdLiAgW2FtX3Rlc3RpbmddIGlzIGltcGxlbWVudGVkIHVzaW5nIFtCYXNlX2FtX3Rlc3RpbmddLCBhIHdlYWsgQy9qc1xuICAgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbZmFsc2VdLCBidXQgd2hlbiBsaW5raW5nIGFuIGlubGluZS10ZXN0LXJ1bm5lciBleGVjdXRhYmxlLCBpc1xuICAgb3ZlcnJpZGRlbiBieSBhbm90aGVyIHByaW1pdGl2ZSB0aGF0IHJldHVybnMgW3RydWVdLiAqKVxuZXh0ZXJuYWwgYW1fdGVzdGluZyA6IHVuaXQgLT4gYm9vbCA9IFwiQmFzZV9hbV90ZXN0aW5nXCJcblxubGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nICgpXG4iLCJvcGVuISBJbXBvcnQwXG5pbmNsdWRlIENhbWwuUHJpbnRmXG5cbigqKiBmYWlsd2l0aCwgaW52YWxpZF9hcmcsIGFuZCBleGl0IGFjY2VwdGluZyBwcmludGYncyBmb3JtYXQuICopXG5cbmxldCBmYWlsd2l0aGYgZm10ID0ga3NwcmludGYgKGZ1biBzICgpIC0+IGZhaWx3aXRoIHMpIGZtdFxubGV0IGludmFsaWRfYXJnZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gaW52YWxpZF9hcmcgcykgZm10XG4iLCIoKiBbU3lzMF0gZGVmaW5lcyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtDYW1sLlN5c10uICBbU3lzMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbQ2FtbC5TeXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3lzLm1sXG4gICBzaG91bGQgdXNlIFtDYW1sLlN5c10uIFtTeXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZVxuICAgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSB0aGVzZVxuICAgZnVuY3Rpb25zIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TeXNdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBTeXMgPSBTeXMwXS4gIERlZmluaW5nIFttb2R1bGUgU3lzID0gU3lzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZVxuICAgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TeXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbnR5cGUgYmFja2VuZF90eXBlID0gQ2FtbC5TeXMuYmFja2VuZF90eXBlID1cbiAgfCBOYXRpdmVcbiAgfCBCeXRlY29kZVxuICB8IE90aGVyIG9mIHN0cmluZ1xuXG5sZXQgYmFja2VuZF90eXBlID0gQ2FtbC5TeXMuYmFja2VuZF90eXBlXG5sZXQgaW50ZXJhY3RpdmUgPSBDYW1sLlN5cy5pbnRlcmFjdGl2ZVxubGV0IG9zX3R5cGUgPSBDYW1sLlN5cy5vc190eXBlXG5sZXQgdW5peCA9IENhbWwuU3lzLnVuaXhcbmxldCB3aW4zMiA9IENhbWwuU3lzLndpbjMyXG5sZXQgY3lnd2luID0gQ2FtbC5TeXMuY3lnd2luXG5sZXQgd29yZF9zaXplX2luX2JpdHMgPSBDYW1sLlN5cy53b3JkX3NpemVcbmxldCBpbnRfc2l6ZV9pbl9iaXRzID0gQ2FtbC5TeXMuaW50X3NpemVcbmxldCBiaWdfZW5kaWFuID0gQ2FtbC5TeXMuYmlnX2VuZGlhblxubGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gQ2FtbC5TeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gQ2FtbC5TeXMubWF4X2FycmF5X2xlbmd0aFxubGV0IHJ1bnRpbWVfdmFyaWFudCA9IENhbWwuU3lzLnJ1bnRpbWVfdmFyaWFudFxubGV0IHJ1bnRpbWVfcGFyYW1ldGVycyA9IENhbWwuU3lzLnJ1bnRpbWVfcGFyYW1ldGVyc1xubGV0IGFyZ3YgPSBDYW1sLlN5cy5hcmd2XG5sZXQgZ2V0X2FyZ3YgKCkgPSBDYW1sLlN5cy5hcmd2XG5sZXQgb2NhbWxfdmVyc2lvbiA9IENhbWwuU3lzLm9jYW1sX3ZlcnNpb25cbmxldCBlbmFibGVfcnVudGltZV93YXJuaW5ncyA9IENhbWwuU3lzLmVuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG5sZXQgcnVudGltZV93YXJuaW5nc19lbmFibGVkID0gQ2FtbC5TeXMucnVudGltZV93YXJuaW5nc19lbmFibGVkXG5cbmxldCBnZXRlbnZfZXhuIHZhciA9XG4gIHRyeSBDYW1sLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCBDYW1sLk5vdF9mb3VuZCAtPlxuICAgIFByaW50Zi5mYWlsd2l0aGYgXCJTeXMuZ2V0ZW52X2V4bjogZW52aXJvbm1lbnQgdmFyaWFibGUgJXMgaXMgbm90IHNldFwiIHZhciAoKVxuOztcblxubGV0IGdldGVudiB2YXIgPVxuICBtYXRjaCBDYW1sLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAnYSAtPiAnYSA9IFwiJW9wYXF1ZVwiXG5cbmV4Y2VwdGlvbiBCcmVhayA9IENhbWwuU3lzLkJyZWFrXG4iLCIoKiBbQXJyYXkwXSBkZWZpbmVzIGFycmF5IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtc1xuICAgb2YgW0NhbWwuQXJyYXldLiAgW0FycmF5MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkFycmF5XVxuICAgdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBhcnJheTAubWwgc2hvdWxkIHVzZSBbQ2FtbC5BcnJheV0uXG4gICBbQXJyYXkwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBhcnJheXMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkFycmF5XSBpbiBidWlsZCBvcmRlciBzaG91bGRcbiAgIGRvIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdLiAgVGhpcyBpbmNsdWRlcyB1c2VzIG9mIHN1YnNjcmlwdCBzeW50YXggKFt4LihpKV0sIFt4LihpKSA8LVxuICAgZV0pLCB3aGljaCB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG8gW0FycmF5LmdldF0gYW5kIFtBcnJheS5zZXRdLlxuICAgRGVmaW5pbmcgW21vZHVsZSBBcnJheSA9IEFycmF5MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tXG4gICBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5BcnJheV0uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbiAgZXh0ZXJuYWwgZ2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBzZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgIDogIHNyYzonYSBhcnJheVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OidhIGFycmF5XG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZW5kXG5cbmluY2x1ZGUgQXJyYXlcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5sZXQgY3JlYXRlIH5sZW4geCA9XG4gIHRyeSBjcmVhdGUgbGVuIHggd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGUgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKClcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuID1cbiAgdHJ5IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIGxlbiB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKClcbjs7XG5cbmxldCBhcHBlbmQgPSBDYW1sLkFycmF5LmFwcGVuZFxubGV0IGJsaXQgPSBDYW1sLkFycmF5LmJsaXRcbmxldCBjb25jYXQgPSBDYW1sLkFycmF5LmNvbmNhdFxubGV0IGNvcHkgPSBDYW1sLkFycmF5LmNvcHlcbmxldCBmaWxsID0gQ2FtbC5BcnJheS5maWxsXG5sZXQgaW5pdCA9IENhbWwuQXJyYXkuaW5pdFxubGV0IG1ha2VfbWF0cml4ID0gQ2FtbC5BcnJheS5tYWtlX21hdHJpeFxubGV0IG9mX2xpc3QgPSBDYW1sLkFycmF5Lm9mX2xpc3RcbmxldCBzdWIgPSBDYW1sLkFycmF5LnN1YlxubGV0IHRvX2xpc3QgPSBDYW1sLkFycmF5LnRvX2xpc3RcblxuKCogVGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gQ2FtbC5BcnJheS5mb2xkX2xlZnQgdCB+aW5pdCB+ZlxubGV0IGZvbGRfcmlnaHQgdCB+ZiB+aW5pdCA9IENhbWwuQXJyYXkuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5sZXQgaXRlciB0IH5mID0gQ2FtbC5BcnJheS5pdGVyIHQgfmZcbmxldCBpdGVyaSB0IH5mID0gQ2FtbC5BcnJheS5pdGVyaSB0IH5mXG5sZXQgbWFwIHQgfmYgPSBDYW1sLkFycmF5Lm1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gQ2FtbC5BcnJheS5tYXBpIHQgfmZcbmxldCBzdGFibGVfc29ydCB0IH5jb21wYXJlID0gQ2FtbC5BcnJheS5zdGFibGVfc29ydCB0IH5jbXA6Y29tcGFyZVxuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBlbHRfaSA9IHQuKGkpIGluXG4gIGxldCBlbHRfaiA9IHQuKGopIGluXG4gIHVuc2FmZV9zZXQgdCBpIGVsdF9qO1xuICB1bnNhZmVfc2V0IHQgaiBlbHRfaVxuOztcbiIsIigqIFtDaGFyMF0gZGVmaW5lcyBjaGFyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW0NhbWwuQ2hhcl0uICBbQ2hhcjBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbQ2FtbC5DaGFyXSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBjaGFyMC5tbCBzaG91bGQgdXNlIFtDYW1sLkNoYXJdLlxuICAgW0NoYXIwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBjaGFycyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQ2hhcl0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIENoYXIgPSBDaGFyMF0uICBEZWZpbmluZyBbbW9kdWxlIENoYXIgPSBDaGFyMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5DaGFyXS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxubGV0IGVzY2FwZWQgPSBDYW1sLkNoYXIuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IENhbWwuQ2hhci5sb3dlcmNhc2VfYXNjaWlcbmxldCB0b19pbnQgPSBDYW1sLkNoYXIuY29kZVxubGV0IHVuc2FmZV9vZl9pbnQgPSBDYW1sLkNoYXIudW5zYWZlX2NoclxubGV0IHVwcGVyY2FzZSA9IENhbWwuQ2hhci51cHBlcmNhc2VfYXNjaWlcblxuKCogV2UgdXNlIG91ciBvd24gcmFuZ2UgdGVzdCB3aGVuIGNvbnZlcnRpbmcgaW50ZWdlcnMgdG8gY2hhcnMgcmF0aGVyIHRoYW5cbiAgIGNhbGxpbmcgW0NhbWwuQ2hhci5jaHJdIGJlY2F1c2UgaXQncyBzaW1wbGUgYW5kIGl0IHNhdmVzIHVzIGEgZnVuY3Rpb24gY2FsbFxuICAgYW5kIHRoZSB0cnktd2l0aCAoZXhjZXB0aW9ucyBjb3N0LCBlc3BlY2lhbGx5IGluIHRoZSB3b3JsZCB3aXRoIGJhY2t0cmFjZXMpLiAqKVxubGV0IGludF9pc19vayBpID0gMCA8PSBpICYmIGkgPD0gMjU1XG5sZXQgbWluX3ZhbHVlID0gdW5zYWZlX29mX2ludCAwXG5sZXQgbWF4X3ZhbHVlID0gdW5zYWZlX29mX2ludCAyNTVcbmxldCBvZl9pbnQgaSA9IGlmIGludF9pc19vayBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX2ludF9leG4gaSA9XG4gIGlmIGludF9pc19vayBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5vZl9pbnRfZXhuIGdvdCBpbnRlZ2VyIG91dCBvZiByYW5nZTogJWRcIiBpICgpXG47O1xuXG5sZXQgZXF1YWwgKHQxIDogY2hhcikgdDIgPSBQb2x5LmVxdWFsIHQxIHQyXG4iLCIoKiBbSW50MF0gZGVmaW5lcyBpbnRlZ2VyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW0NhbWxdLiBbSW50MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZVxuICAgcGFydCBvZiBbQ2FtbF0gdGhhdCBbQmFzZV0gdXNlcyBmb3IgaW50ZWdlcnMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGludDAubWwgc2hvdWxkIHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgdGhyb3VnaCBbQ2FtbF0uIFtJbnQwXSBoYXNcbiAgIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGludHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkludF0gaW4gYnVpbGRcbiAgIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEludCAgPSBJbnQwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEludCA9IEludDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXBcbiAgIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuSW50XS4gKilcblxubGV0IHRvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2ludFxubGV0IG9mX3N0cmluZyA9IENhbWwuaW50X29mX3N0cmluZ1xubGV0IHRvX2Zsb2F0ID0gQ2FtbC5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdCA9IENhbWwuaW50X29mX2Zsb2F0XG5sZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG5sZXQgbWluX3ZhbHVlID0gQ2FtbC5taW5faW50XG5sZXQgc3VjYyA9IENhbWwuc3VjY1xuIiwiKCogW0xpc3QwXSBkZWZpbmVzIGxpc3QgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbQ2FtbC5MaXN0XS4gIFtMaXN0MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkxpc3RdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGxpc3QwLm1sIHNob3VsZCB1c2UgW0NhbWwuTGlzdF0uXG4gICBbTGlzdDBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGxpc3RzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5MaXN0XSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgTGlzdCA9IExpc3QwXS4gIERlZmluaW5nIFttb2R1bGUgTGlzdCA9IExpc3QwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkxpc3RdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBoZF9leG4gPSBDYW1sLkxpc3QuaGRcbmxldCBsZW5ndGggPSBDYW1sLkxpc3QubGVuZ3RoXG5sZXQgcmV2X2FwcGVuZCA9IENhbWwuTGlzdC5yZXZfYXBwZW5kXG5sZXQgdGxfZXhuID0gQ2FtbC5MaXN0LnRsXG5sZXQgdW56aXAgPSBDYW1sLkxpc3Quc3BsaXRcblxuKCogVGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5sZXQgZXhpc3RzIHQgfmYgPSBDYW1sLkxpc3QuZXhpc3RzIHQgfmZcbmxldCBleGlzdHMyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LmV4aXN0czIgbDEgbDIgfmZcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLkxpc3QuZm9sZF9sZWZ0IHQgfmYgfmluaXRcbmxldCBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZiA9IENhbWwuTGlzdC5mb2xkX2xlZnQyIGwxIGwyIH5pbml0IH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gQ2FtbC5MaXN0LmZvcl9hbGwgdCB+ZlxubGV0IGZvcl9hbGwyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LmZvcl9hbGwyIGwxIGwyIH5mXG5sZXQgaXRlciB0IH5mID0gQ2FtbC5MaXN0Lml0ZXIgdCB+ZlxubGV0IGl0ZXIyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0Lml0ZXIyIGwxIGwyIH5mXG5sZXQgbm9udGFpbF9tYXAgdCB+ZiA9IENhbWwuTGlzdC5tYXAgdCB+ZlxubGV0IG5vbnRhaWxfbWFwaSB0IH5mID0gQ2FtbC5MaXN0Lm1hcGkgdCB+ZlxubGV0IHBhcnRpdGlvbiB0IH5mID0gQ2FtbC5MaXN0LnBhcnRpdGlvbiB0IH5mXG5sZXQgcmV2X21hcCB0IH5mID0gQ2FtbC5MaXN0LnJldl9tYXAgdCB+ZlxubGV0IHJldl9tYXAyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LnJldl9tYXAyIGwxIGwyIH5mXG5sZXQgc29ydCBsIH5jb21wYXJlID0gQ2FtbC5MaXN0LnNvcnQgbCB+Y21wOmNvbXBhcmVcbmxldCBzdGFibGVfc29ydCBsIH5jb21wYXJlID0gQ2FtbC5MaXN0LnN0YWJsZV9zb3J0IGwgfmNtcDpjb21wYXJlXG5cbmxldCByZXYgPSBmdW5jdGlvblxuICB8IChbXSB8IFsgXyBdKSBhcyByZXMgLT4gcmVzXG4gIHwgeCA6OiB5IDo6IHJlc3QgLT4gcmV2X2FwcGVuZCByZXN0IFsgeTsgeCBdXG47O1xuXG5sZXQgZm9sZF9yaWdodCBsIH5mIH5pbml0ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gaW5pdCAoKiBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBbfmZdIGJlbG93ICopXG4gIHwgXyAtPiBmb2xkIH5mOihmdW4gYSBiIC0+IGYgYiBhKSB+aW5pdCAocmV2IGwpXG47O1xuIiwiKCpcbiAgIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgcnVudGltZSBzdXBwb3J0IGZvciBbcHB4X2hhc2hdLlxuXG4gICBUaGUgW3BweF9oYXNoXSBzeW50YXggZXh0ZW5zaW9uIHN1cHBvcnRzOiBbQEBkZXJpdmluZyBoYXNoXSBhbmQgWyVoYXNoX2ZvbGQ6IFRZUEVdIGFuZFxuICAgWyVoYXNoOiBUWVBFXVxuXG4gICBGb3IgdHlwZSBbdF0gYSBmdW5jdGlvbiBbaGFzaF9mb2xkX3RdIG9mIHR5cGUgW0hhc2guc3RhdGUgLT4gdCAtPiBIYXNoLnN0YXRlXSBpc1xuICAgZ2VuZXJhdGVkLlxuXG4gICBUaGUgZ2VuZXJhdGVkIFtoYXNoX2ZvbGRfPFQ+XSBmdW5jdGlvbiBpcyBjb21wb3NpdGlvbmFsLCBmb2xsb3dpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGVcbiAgIHR5cGU7IGFsbG93aW5nIHVzZXIgb3ZlcnJpZGVzIGF0IGV2ZXJ5IGxldmVsLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIG9jYW1sJ3MgYnVpbHRpblxuICAgcG9seW1vcnBoaWMgaGFzaGluZyBbSGFzaHRibC5oYXNoXSB3aGljaCBpZ25vcmVzIHVzZXIgb3ZlcnJpZGVzLlxuXG4gICBUaGUgZ2VuZXJhdG9yIGFsc28gcHJvdmlkZXMgYSBkaXJlY3QgaGFzaC1mdW5jdGlvbiBbaGFzaF0gKG5hbWVkIFtoYXNoXzxUPl0gd2hlbiA8VD4gIT1cbiAgIFwidFwiKSBvZiB0eXBlOiBbdCAtPiBIYXNoLmhhc2hfdmFsdWVdLlxuXG4gICBUaGUgZm9sZGluZyBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2hfZm9sZDogVFlQRV1cbiAgIFRoZSBkaXJlY3QgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoOiBUWVBFXVxuKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBIYXNoX2ludGZcblxuKCoqIEJ1aWx0aW4gZm9sZGluZy1zdHlsZSBoYXNoIGZ1bmN0aW9ucywgYWJzdHJhY3RlZCBvdmVyIFtIYXNoX2ludGYuU10gKilcbm1vZHVsZSBGb2xkaW5nIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkJ1aWx0aW5faW50ZlxuICB3aXRoIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGhhc2hfZm9sZF91bml0IHMgKCkgPSBzXG4gIGxldCBoYXNoX2ZvbGRfaW50ID0gSGFzaC5mb2xkX2ludFxuICBsZXQgaGFzaF9mb2xkX2ludDY0ID0gSGFzaC5mb2xkX2ludDY0XG4gIGxldCBoYXNoX2ZvbGRfZmxvYXQgPSBIYXNoLmZvbGRfZmxvYXRcbiAgbGV0IGhhc2hfZm9sZF9zdHJpbmcgPSBIYXNoLmZvbGRfc3RyaW5nXG4gIGxldCBhc19pbnQgZiBzIHggPSBoYXNoX2ZvbGRfaW50IHMgKGYgeClcblxuICAoKiBUaGlzIGlnbm9yZXMgdGhlIHNpZ24gYml0IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyB1bmxpa2VseSB0byBsZWFkIHRvXG4gICAgIGZyZXF1ZW50IGNvbGxpc2lvbnMgKG1pbl92YWx1ZSBjb2xsaWRpbmcgd2l0aCAwIGlzIHRoZSBtb3N0IGxpa2VseSBvbmUpLiAgKilcbiAgbGV0IGhhc2hfZm9sZF9pbnQzMiA9IGFzX2ludCBDYW1sLkludDMyLnRvX2ludFxuICBsZXQgaGFzaF9mb2xkX2NoYXIgPSBhc19pbnQgQ2hhci50b19pbnRcblxuICBsZXQgaGFzaF9mb2xkX2Jvb2wgPVxuICAgIGFzX2ludCAoZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiAxXG4gICAgICB8IGZhbHNlIC0+IDApXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9uYXRpdmVpbnQgcyB4ID0gaGFzaF9mb2xkX2ludDY0IHMgKENhbWwuSW50NjQub2ZfbmF0aXZlaW50IHgpXG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gaGFzaF9mb2xkX2VsZW0gcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGhhc2hfZm9sZF9pbnQgcyAwXG4gICAgfCBTb21lIHggLT4gaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9pbnQgcyAxKSB4XG4gIDs7XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCB4IDo6IHhzIC0+IGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9lbGVtIHMgeCkgeHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICAoKiBUaGUgW2xlbmd0aF0gb2YgdGhlIGxpc3QgbXVzdCBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaGFzaC1zdGF0ZSBzbyB2YWx1ZXMgb2ZcbiAgICAgICB0eXBlcyBzdWNoIGFzIFt1bml0IGxpc3RdIC0gKFtdLCBbKCldLCBbKCk7KCldLC4uKSBhcmUgaGFzaGVkIGRpZmZlcmVudGx5LiAqKVxuICAgICgqIFRoZSBbbGVuZ3RoXSBtdXN0IGNvbWUgYmVmb3JlIHRoZSBlbGVtZW50cyB0byBhdm9pZCBhIHZpb2xhdGlvbiBvZiB0aGUgcnVsZVxuICAgICAgIGVuZm9yY2VkIGJ5IFBlcmZlY3RfaGFzaC4gKilcbiAgICBsZXQgcyA9IGhhc2hfZm9sZF9pbnQgcyAoTGlzdC5sZW5ndGggbGlzdCkgaW5cbiAgICBsZXQgcyA9IGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0IGluXG4gICAgc1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGF6eV90IGhhc2hfZm9sZF9lbGVtIHMgeCA9IGhhc2hfZm9sZF9lbGVtIHMgKENhbWwuTGF6eS5mb3JjZSB4KVxuICBsZXQgaGFzaF9mb2xkX3JlZl9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAheFxuXG4gIGxldCByZWMgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBhcnJheVxuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IGUgPSBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkgaW5cbiAgICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyBlKSBhcnJheSAoaSArIDEpKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgPVxuICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faVxuICAgICAgKCogW2xlbmd0aF0gbXVzdCBiZSBpbmNvcnBvcmF0ZWQgZm9yIGFycmF5cywgYXMgaXQgaXMgZm9yIGxpc3RzLiBTZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgaGFzaF9mb2xkX2VsZW1cbiAgICAgIChoYXNoX2ZvbGRfaW50IHMgKEFycmF5Lmxlbmd0aCBhcnJheSkpXG4gICAgICBhcnJheVxuICAgICAgMFxuICA7O1xuXG4gICgqIHRoZSBkdXBsaWNhdGlvbiBoZXJlIGlzIGJlY2F1c2Ugd2UgdGhpbmtcbiAgICAgb2NhbWwgY2FuJ3QgZWxpbWluYXRlIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIG90aGVyd2lzZS4gKilcbiAgbGV0IGhhc2hfbmF0aXZlaW50IHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9uYXRpdmVpbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2ludDY0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50NjQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQzMiB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDMyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfY2hhciB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2NoYXIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9ib29sIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfYm9vbCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5cbiAgbGV0IGhhc2hfc3RyaW5nIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9zdHJpbmcgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2Zsb2F0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfZmxvYXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF91bml0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdW5pdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5lbmRcblxubW9kdWxlIEYgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuRnVsbFxuICB3aXRoIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICAgYW5kIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBzZWVkID0gSGFzaC5zZWVkID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBGb2xkaW5nIChIYXNoKVxuXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAoSGFzaC5yZXNldCA/c2VlZCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsaGFzaCA6IHNpZ1xuICBpbmNsdWRlXG4gICAgSGFzaF9pbnRmLlNcbiAgICB3aXRoIHR5cGUgc3RhdGUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zdGF0ZVxuICAgICAoKiBXZSBnaXZlIGEgY29uY3JldGUgdHlwZSBmb3IgW3N0YXRlXSwgYWxiZWl0IG9ubHkgcGFydGlhbGx5IGV4cG9zZWQgKHNlZVxuICAgICAgICBCYXNlX2ludGVybmFsaGFzaF90eXBlcyksIHNvIHRoYXQgaXQgdW5pZmllcyB3aXRoIHRoZSBzYW1lIHR5cGUgaW4gW0Jhc2VfYm9vdF0sXG4gICAgICAgIGFuZCB0byBhbGxvdyBvcHRpbWl6YXRpb25zIGZvciB0aGUgaW1tZWRpYXRlIHR5cGUuICopXG4gICAgIGFuZCB0eXBlIHNlZWQgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zZWVkXG4gICAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5oYXNoX3ZhbHVlXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQ2NCA6IHN0YXRlIC0+IGludDY0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2ludCA6IHN0YXRlIC0+IGludCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfZmxvYXQgOiBzdGF0ZSAtPiBmbG9hdCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9zdHJpbmcgOiBzdGF0ZSAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBnZXRfaGFzaF92YWx1ZSA6IHN0YXRlIC0+IGhhc2hfdmFsdWUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXCJcbiAgW0BAbm9hbGxvY11cbmVuZCA9IHN0cnVjdFxuICBsZXQgZGVzY3JpcHRpb24gPSBcImludGVybmFsaGFzaFwiXG5cbiAgaW5jbHVkZSBCYXNlX2ludGVybmFsaGFzaF90eXBlc1xuXG4gIGxldCBhbGxvYyAoKSA9IGNyZWF0ZV9zZWVkZWQgMFxuICBsZXQgcmVzZXQgPyhzZWVkID0gMCkgX3QgPSBjcmVhdGVfc2VlZGVkIHNlZWRcblxuICBtb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gICAgbGV0IGNvbXBhcmVfc3RhdGUgKGEgOiBzdGF0ZSkgKGIgOiBzdGF0ZSkgPSBjb21wYXJlIChhIDo+IGludCkgKGIgOj4gaW50KVxuICAgIGxldCBzdGF0ZV90b19zdHJpbmcgKHN0YXRlIDogc3RhdGUpID0gSW50LnRvX3N0cmluZyAoc3RhdGUgOj4gaW50KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEludGVybmFsaGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID0gZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAocmVzZXQgP3NlZWQgKGFsbG9jICgpKSkgeClcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gICAgbW9kdWxlIEZvbGRpbmcgPSBGb2xkaW5nIChJbnRlcm5hbGhhc2gpXG4gICAgaW5jbHVkZSBGb2xkaW5nXG5cbiAgICAoKiBbRm9sZGluZ10gcHJvdmlkZXMgc29tZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIFtoYXNoXypdIGZ1bmN0aW9ucyBiZWxvdyxcbiAgICAgICBidXQgdGhleSBhcmUgaW5lZmZpY2llbnQgZm9yIHNvbWUgdXNlLWNhc2VzIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiB0aGUgW2hhc2hfZm9sZF1cbiAgICAgICBmdW5jdGlvbnMuIEF0IHRoaXMgcG9pbnQsIHRoZSBbaGFzaF92YWx1ZV0gdHlwZSBoYXMgYmVlbiBmaXhlZCB0byBbaW50XSwgc28gdGhpc1xuICAgICAgIG1vZHVsZSBjYW4gcHJvdmlkZSBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMuICopXG5cbiAgICBsZXQgaGFzaF9jaGFyID0gQ2hhcjAudG9faW50XG5cbiAgICAoKiBUaGlzIGhhc2ggd2FzIGNob3NlbiBmcm9tIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2JhZGJveS82MjY3NzQzXG5cbiAgICAgICBJdCBhdHRlbXB0cyB0byBmdWxmaWxsIHRoZSBwcmltYXJ5IGdvYWxzIG9mIGEgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbjpcblxuICAgICAgIC0gYSBiaXQgY2hhbmdlIGluIHRoZSBpbnB1dCBzaG91bGQgY2hhbmdlIH4xLzIgb2YgdGhlIG91dHB1dCBiaXRzXG4gICAgICAgLSB0aGUgb3V0cHV0IHNob3VsZCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBvdXRwdXQgcmFuZ2VcbiAgICAgICAtIGlucHV0cyB0aGF0IGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIHNob3VsZG4ndCBsZWFkIHRvIG91dHB1dHMgdGhhdCBhcmUgY2xvc2UgdG9cbiAgICAgICAgIGVhY2ggb3RoZXIuXG4gICAgICAgLSBhbGwgYml0cyBvZiB0aGUgaW5wdXQgYXJlIHVzZWQgaW4gZ2VuZXJhdGluZyB0aGUgb3V0cHV0XG5cbiAgICAgICBJbiBvdXIgY2FzZSB3ZSBhbHNvIHdhbnQgaXQgdG8gYmUgZmFzdCwgbm9uLWFsbG9jYXRpbmcsIGFuZCBpbmxpbmFibGUuICAqKVxuICAgIGxldFtAaW5saW5lIGFsd2F5c10gaGFzaF9pbnQgKHQgOiBpbnQpID1cbiAgICAgIGxldCB0ID0gbG5vdCB0ICsgKHQgbHNsIDIxKSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDMpICsgKHQgbHNsIDgpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMTQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMikgKyAodCBsc2wgNCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyOCkgaW5cbiAgICAgIHQgKyAodCBsc2wgMzEpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2Jvb2wgeCA9IGlmIHggdGhlbiAxIGVsc2UgMFxuXG4gICAgZXh0ZXJuYWwgaGFzaF9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiQmFzZV9oYXNoX2RvdWJsZVwiIFtAQG5vYWxsb2NdXG5cbiAgICBsZXQgaGFzaF91bml0ICgpID0gMFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcbiIsIm9wZW4gSW1wb3J0MFxuXG5sZXQgcGh5c19lcXVhbCA9IHBoeXNfZXF1YWxcblxuZXh0ZXJuYWwgcG9seW1vcnBoaWNfY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgcG9seW1vcnBoaWNfZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcblxubGV0IGNvbXBhcmVfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiQ29tcGFyZSBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG5sZXQgZXF1YWxfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiRXF1YWwgY2FsbGVkIG9uIHRoZSB0eXBlICVzLCB3aGljaCBpcyBhYnN0cmFjdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi5cIlxuICAgIHR5cGVfbmFtZVxuOztcblxudHlwZSAnYSBjb21wYXJlID0gJ2EgLT4gJ2EgLT4gaW50XG50eXBlICdhIGVxdWFsID0gJ2EgLT4gJ2EgLT4gYm9vbFxuXG5tb2R1bGUgQ29tcGFyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY29tcGFyZSA6IHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdhIHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gKCdhLCAnYikgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gJ2MgY29tcGFyZSAtPiAoJ2EsICdiLCAnYykgdCBjb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFcXVhbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAoJ2EsICdiKSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2IgZXF1YWwgLT4gJ2MgZXF1YWwgLT4gKCdhLCAnYiwgJ2MpIHQgZXF1YWxcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmVfYm9vbCA6IGJvb2wgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9jaGFyIDogY2hhciBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2Zsb2F0IDogZmxvYXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQgOiBpbnQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQzMiA6IGludDMyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50NjQgOiBpbnQ2NCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA6IG5hdGl2ZWludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3N0cmluZyA6IHN0cmluZyBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3VuaXQgOiB1bml0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgY29tcGFyZV9hcnJheSBjb21wYXJlX2VsdCBhIGIgPVxuICAgIGlmIHBoeXNfZXF1YWwgYSBiXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVuX2EgPSBBcnJheTAubGVuZ3RoIGEgaW5cbiAgICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICAgIGlmIHJldCA8PiAwXG4gICAgICB0aGVuIHJldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgMCkpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAwXG4gICAgfCBbXSwgXyAtPiAtMVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IHggeSBpblxuICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgY29tcGFyZV9vcHRpb24gY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMFxuICAgIHwgTm9uZSwgU29tZSBfIC0+IC0xXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gMVxuICAgIHwgU29tZSBhLCBTb21lIGIgLT4gY29tcGFyZV9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfcmVmIGNvbXBhcmVfZWx0IGEgYiA9IGNvbXBhcmVfZWx0ICFhICFiXG4gIGxldCBlcXVhbF9ib29sIDogYm9vbCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2NoYXIgOiBjaGFyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50IDogaW50IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50MzIgOiBpbnQzMiBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludDY0IDogaW50NjQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9zdHJpbmcgOiBzdHJpbmcgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF91bml0IDogdW5pdCBlcXVhbCA9IFBvbHkuZXF1YWxcblxuICAoKiBbUG9seS5lcXVhbF0gaXMgSUVFRSBjb21wbGlhbnQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQgaGVyZS4gKilcbiAgbGV0IGVxdWFsX2Zsb2F0IHggeSA9IGVxdWFsX2ludCAoY29tcGFyZV9mbG9hdCB4IHkpIDBcblxuICBsZXQgZXF1YWxfYXJyYXkgZXF1YWxfZWx0IGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fFxuICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgIGVxdWFsIGxlbl9hIGxlbl9iXG4gICAgJiZcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpID0gbGVuX2FcbiAgICAgIHx8XG4gICAgICBsZXQgbCA9IEFycmF5MC51bnNhZmVfZ2V0IGEgaVxuICAgICAgYW5kIHIgPSBBcnJheTAudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgIGVxdWFsX2VsdCBsIHIgJiYgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgcmVjIGVxdWFsX2xpc3QgZXF1YWxfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiBlcXVhbF9lbHQgeCB5ICYmIGVxdWFsX2xpc3QgZXF1YWxfZWx0IHhzIHlzXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBlcXVhbF9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGVxdWFsX3JlZiBlcXVhbF9lbHQgYSBiID0gZXF1YWxfZWx0ICFhICFiXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyBmb3IgdXNlIGJ5IHBweF9oYXNoLCBhbmQgaXMgdGh1cyBub3QgaW4gdGhlIGludGVyZmFjZSBvZiBCYXNlLiAqKVxubW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgSGFzaCA9IEhhc2ggKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoICopXG5lbmRcblxudHlwZSAnYSBoYXNoX2ZvbGQgPSBTdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBTdGQuSGFzaC5zdGF0ZVxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogdCBoYXNoX2ZvbGRcbiAgICB2YWwgaGFzaCA6IHQgLT4gU3RkLkhhc2guaGFzaF92YWx1ZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogJ2EgaGFzaF9mb2xkIC0+ICdhIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2IgaGFzaF9mb2xkIC0+ICgnYSwgJ2IpIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90XG4gICAgICA6ICAnYSBoYXNoX2ZvbGRcbiAgICAgIC0+ICdiIGhhc2hfZm9sZFxuICAgICAgLT4gJ2MgaGFzaF9mb2xkXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBoYXNoX2ZvbGRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gSGFzaC5CdWlsdGluXG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIFNleHBsaWIwLlNleHBcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID0gU2V4cGxpYjAuU2V4cC50ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxubGV0IHJlYyBjb21wYXJlID1cbiAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAxXyBiX18wMDJfXG4gICAgIHRoZW4gMFxuICAgICBlbHNlIChcbiAgICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgICB8IEF0b20gX2FfXzAwM18sIEF0b20gX2JfXzAwNF8gLT4gY29tcGFyZV9zdHJpbmcgX2FfXzAwM18gX2JfXzAwNF9cbiAgICAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICAgICB8IExpc3QgX2FfXzAwNV8sIExpc3QgX2JfXzAwNl8gLT4gY29tcGFyZV9saXN0IGNvbXBhcmUgX2FfXzAwNV8gX2JfXzAwNl8pXG4gICAgICAgOiB0IC0+IHQgLT4gaW50KVxuOztcblxubGV0IHJlYyAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgQXRvbSBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IF9hMFxuICAgICB8IExpc3QgX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfdCBoc3YgX2EwXG4gICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG5cbmFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxuW0BAQGVuZF1cblxubGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9jb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmxldCBvZl9zdHJpbmcgPSAoKVxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID1cbiAgfCBXMzJcbiAgfCBXNjRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBXMzIgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzMyXCJcbiAgICB8IFc2NCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXNjRcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbnVtX2JpdHMgPSBmdW5jdGlvblxuICB8IFczMiAtPiAzMlxuICB8IFc2NCAtPiA2NFxuOztcblxubGV0IHdvcmRfc2l6ZSA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemVfaW5fYml0cyB3aXRoXG4gIHwgMzIgLT4gVzMyXG4gIHwgNjQgLT4gVzY0XG4gIHwgXyAtPiBmYWlsd2l0aCBcInVua25vd24gd29yZCBzaXplXCJcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHIgPSByZWYgWyBcIkJhc2UuU2V4cC5wcF9odW1cIiBdXG5sZXQgYWxsICgpID0gIXJcbmxldCByZWdpc3RlciBwID0gciA6PSBwIDo6ICFyXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHBwIDogRm9ybWF0dGVyLnQgLT4gdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyX3BwIChNIDogc2lnXG4gICAgaW5jbHVkZSBTXG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgbGV0ICgpID0gcmVnaXN0ZXIgKE0ubW9kdWxlX25hbWUgXiBcIi5wcFwiKVxuZW5kXG5cbm1vZHVsZSBSZWdpc3RlciAoTSA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCkgPVxuICBSZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBsZXQgcHAgZm9ybWF0dGVyIHQgPSBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm9ybWF0dGVyIChNLnRvX3N0cmluZyB0KVxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZXhuIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbltAQEBlbmRdXG5cbmxldCBleGl0ID0gQ2FtbC5leGl0XG5cbmV4Y2VwdGlvbiBGaW5hbGx5IG9mIHQgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmluYWxseV0gKGZ1bmN0aW9uXG4gICAgfCBGaW5hbGx5IChhcmcwX18wMDFfLCBhcmcxX18wMDJfKSAtPlxuICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3QgYXJnMF9fMDAxX1xuICAgICAgYW5kIHJlczFfXzAwNF8gPSBzZXhwX29mX3QgYXJnMV9fMDAyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLkZpbmFsbHlcIjsgcmVzMF9fMDAzXzsgcmVzMV9fMDA0XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmV4Y2VwdGlvbiBSZXJhaXNlZCBvZiBzdHJpbmcgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUmVyYWlzZWRdIChmdW5jdGlvblxuICAgIHwgUmVyYWlzZWQgKGFyZzBfXzAwNV8sIGFyZzFfXzAwNl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDA3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwNV9cbiAgICAgIGFuZCByZXMxX18wMDhfID0gc2V4cF9vZl90IGFyZzFfXzAwNl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4bi5tbC5SZXJhaXNlZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50XG5cbigqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2U6XG5cbiAgIHtbXG4gICAgIGV4Y2VwdGlvbiBTZXhwIG9mIFNleHAudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cbiAgICAgKCogLi4uICopXG4gICAgIFtAQEBlbmRdXG4gICBdfVxuXG4gICB0byBlbGltaW5hdGUgdGhlIGV4dHJhIHdyYXBwaW5nIG9mIFsoU2V4cCAuLi4pXS4gKilcbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXhwXSAoZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gU2V4cCBzZXhwXG5cbmxldCByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSB0IGJhY2t0cmFjZSA9XG4gIENhbWwuUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgdCBiYWNrdHJhY2Vcbjs7XG5cbmV4dGVybmFsIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgOiB0IC0+IGJvb2wgPSBcIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuXCJcblxubGV0IHJlcmFpc2UgZXhuIHN0ciA9XG4gIGxldCBleG4nID0gUmVyYWlzZWQgKHN0ciwgZXhuKSBpblxuICBpZiBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4blxuICB0aGVuIChcbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuJyBidClcbiAgZWxzZSByYWlzZSBleG4nXG47O1xuXG5sZXQgcmVyYWlzZWYgZXhjIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0ciAoKSAtPiByZXJhaXNlIGV4YyBzdHIpIGZvcm1hdFxubGV0IHRvX3N0cmluZyBleGMgPSBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIChzZXhwX29mX2V4biBleGMpXG5sZXQgdG9fc3RyaW5nX21hY2ggZXhjID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfZXhuXG5cbmxldCBwcm90ZWN0eCB+ZiB4IH4oZmluYWxseSA6IF8gLT4gdW5pdCkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHJlcyAtPlxuICAgIGZpbmFsbHkgeDtcbiAgICByZXNcbiAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgbGV0IGJ0ID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIChtYXRjaCBmaW5hbGx5IHggd2l0aFxuICAgICB8ICgpIC0+IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBidFxuICAgICB8IGV4Y2VwdGlvbiBmaW5hbF9leG4gLT5cbiAgICAgICAoKiBVbmZvcnR1bmF0ZWx5LCB0aGUgYmFja3RyYWNlIG9mIHRoZSBbZmluYWxfZXhuXSBpcyBkaXNjYXJkZWQgaGVyZS4gKilcbiAgICAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRmluYWxseSAoZXhuLCBmaW5hbF9leG4pKSBidClcbjs7XG5cbmxldCBwcm90ZWN0IH5mIH5maW5hbGx5ID0gcHJvdGVjdHggfmYgKCkgfmZpbmFsbHlcblxubGV0IGRvZXNfcmFpc2UgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgdHJ5XG4gICAgaWdub3JlIChmICgpIDogYSk7XG4gICAgZmFsc2VcbiAgd2l0aFxuICB8IF8gLT4gdHJ1ZVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSB0ID0gZXhuXG5cbiAgICBsZXQgcHAgcHBmIHQgPVxuICAgICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IHQgd2l0aFxuICAgICAgfCBTb21lIHNleHAgLT4gU2V4cC5wcF9odW0gcHBmIHNleHBcbiAgICAgIHwgTm9uZSAtPiBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChDYW1sLlByaW50ZXhjLnRvX3N0cmluZyB0KVxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXhuXCJcbiAgZW5kKVxuXG5sZXQgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2UgPVxuICBDYW1sLkZvcm1hdC5lcHJpbnRmIFwiQFs8Mj5VbmNhdWdodCBleGNlcHRpb246QFxcbkBcXG5AWyVhQF1AXUBcXG5ALlwiIHBwIGV4YztcbiAgaWYgQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzICgpXG4gIHRoZW4gQ2FtbC5QcmludGV4Yy5wcmludF9yYXdfYmFja3RyYWNlIENhbWwuc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIENhbWwuZmx1c2ggQ2FtbC5zdGRlcnJcbjs7XG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKCkgPVxuICBDYW1sLlByaW50ZXhjLnNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBwcmludF93aXRoX2JhY2t0cmFjZVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hdXggfmRvX2F0X2V4aXQgfmV4aXQgZiA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleGMgLT5cbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAoKiBPbmUgcmVhc29uIHRvIHJ1biBbZG9fYXRfZXhpdF0gaGFuZGxlcnMgYmVmb3JlIHByaW50aW5nIG91dCB0aGUgZXJyb3IgbWVzc2FnZSBpc1xuICAgICAgIHRoYXQgaXQgaGVscHMgY3Vyc2VzIGFwcGxpY2F0aW9ucyBicmluZyB0aGUgdGVybWluYWwgaW4gYSBnb29kIHN0YXRlLCBvdGhlcndpc2UgdGhlXG4gICAgICAgZXJyb3IgbWVzc2FnZSBtaWdodCBnZXQgY29ycnVwdGVkLiAgQWxzbywgdGhlIE9DYW1sIHRvcC1sZXZlbCB1bmNhdWdodCBleGNlcHRpb25cbiAgICAgICBoYW5kbGVyIGRvZXMgdGhlIHNhbWUuICopXG4gICAgaWYgZG9fYXRfZXhpdFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IENhbWwuZG9fYXRfZXhpdCAoKSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICh0cnkgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5XG4gICAgICAgICAgQ2FtbC5QcmludGYuZXByaW50ZiBcIkV4bi5oYW5kbGVfdW5jYXVnaHQgY291bGQgbm90IHByaW50OyBleGl0aW5nIGFueXdheVxcbiUhXCJcbiAgICAgICAgd2l0aFxuICAgICAgICB8IF8gLT4gKCkpKTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZiA9IGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdCB+ZG9fYXRfZXhpdDp0cnVlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHQgfmV4aXQ6bXVzdF9leGl0IGYgPVxuICBoYW5kbGVfdW5jYXVnaHRfYXV4IGYgfmV4aXQ6KGlmIG11c3RfZXhpdCB0aGVuIGV4aXQgZWxzZSBpZ25vcmUpIH5kb19hdF9leGl0Om11c3RfZXhpdFxuOztcblxubGV0IHJlcmFpc2VfdW5jYXVnaHQgc3RyIGZ1bmMgPVxuICB0cnkgZnVuYyAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgbGV0IGJ0ID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChSZXJhaXNlZCAoc3RyLCBleG4pKSBidFxuOztcblxuZXh0ZXJuYWwgY2xlYXJfYmFja3RyYWNlIDogdW5pdCAtPiB1bml0ID0gXCJCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvc1wiIFtAQG5vYWxsb2NdXG5cbmxldCByYWlzZV93aXRob3V0X2JhY2t0cmFjZSBlID1cbiAgKCogV2UgY2xlYXIgdGhlIGJhY2t0cmFjZSB0byByZWR1Y2UgY29uZnVzaW9uLCBzbyB0aGF0IHBlb3BsZSBkb24ndCB0aGluayB3aGF0ZXZlclxuICAgICBpcyBzdG9yZWQgY29ycmVzcG9uZHMgdG8gdGhpcyByYWlzZS4gKilcbiAgY2xlYXJfYmFja3RyYWNlICgpO1xuICBDYW1sLnJhaXNlX25vdHJhY2UgZVxuOztcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBjbGVhcl9iYWNrdHJhY2UgPSBjbGVhcl9iYWNrdHJhY2VcbmVuZFxuIiwiKCogYmVsb25ncyBpbiBDb21tb24sIGJ1dCBtb3ZlZCBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSByZXR1cm4gPSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmxldCB3aXRoX3JldHVybiAodHlwZSBhKSBmID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgKCogUmFpc2VkIHRvIGluZGljYXRlIH5yZXR1cm4gd2FzIGNhbGxlZC4gIExvY2FsIHNvIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB0aWVkIHRvIGFcbiAgICAgICBwYXJ0aWN1bGFyIGNhbGwgb2YgW3dpdGhfcmV0dXJuXS4gKilcbiAgICBleGNlcHRpb24gUmV0dXJuIG9mIGFcbiAgZW5kXG4gIGluXG4gIGxldCBpc19hbGl2ZSA9IHJlZiB0cnVlIGluXG4gIGxldCByZXR1cm4gYSA9XG4gICAgaWYgbm90ICFpc19hbGl2ZVxuICAgIHRoZW4gZmFpbHdpdGggXCJ1c2Ugb2YgW3JldHVybl0gZnJvbSBhIFt3aXRoX3JldHVybl0gdGhhdCBhbHJlYWR5IHJldHVybmVkXCI7XG4gICAgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIChNLlJldHVybiBhKVxuICBpblxuICB0cnlcbiAgICBsZXQgYSA9IGYgeyByZXR1cm4gfSBpblxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIGFcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIChtYXRjaCBleG4gd2l0aFxuICAgICB8IE0uUmV0dXJuIGEgLT4gYVxuICAgICB8IF8gLT4gcmFpc2UgZXhuKVxuOztcblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiBmID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICBmIHsgcmV0dXJuID0gKGZ1biBhIC0+IHJldHVybi5yZXR1cm4gKFNvbWUgYSkpIH07XG4gICAgTm9uZSlcbjs7XG5cbmxldCBwcmVwZW5kIHsgcmV0dXJuIH0gfmYgPSB7IHJldHVybiA9IChmdW4geCAtPiByZXR1cm4gKGYgeCkpIH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBCYXNpYyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBUaGUgZm9sbG93aW5nIGlkZW50aXRpZXMgb3VnaHQgdG8gaG9sZCAoZm9yIHNvbWUgdmFsdWUgb2YgPSk6XG5cbiAgICAgIC0gW3JldHVybiB4ID4+PSBmID0gZiB4XVxuICAgICAgLSBbdCA+Pj0gZnVuIHggLT4gcmV0dXJuIHggPSB0XVxuICAgICAgLSBbKHQgPj49IGYpID4+PSBnID0gdCA+Pj0gZnVuIHggLT4gKGYgeCA+Pj0gZyldXG5cbiAgICAgIE5vdGU6IFs+Pj1dIGlzIHRoZSBpbmZpeCBub3RhdGlvbiBmb3IgW2JpbmRdKSAqKVxuXG4gICgqKiBUaGUgW21hcF0gYXJndW1lbnQgdG8gW01vbmFkLk1ha2VdIHNheXMgaG93IHRvIGltcGxlbWVudCB0aGUgbW9uYWQncyBbbWFwXSBmdW5jdGlvbi5cbiAgICAgIFtgRGVmaW5lX3VzaW5nX2JpbmRdIG1lYW5zIHRvIGRlZmluZSBbbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSldLlxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuXG5cbiAgICAgIFNvbWUgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtNb25hZC5NYWtlXSBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbbWFwXSwgc29cbiAgICAgIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbWFwXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4ID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBbdCA+Pj0gZl0gcmV0dXJucyBhIGNvbXB1dGF0aW9uIHRoYXQgc2VxdWVuY2VzIHRoZSBjb21wdXRhdGlvbnMgcmVwcmVzZW50ZWQgYnkgdHdvXG4gICAgICBtb25hZCBlbGVtZW50cy4gIFRoZSByZXN1bHRpbmcgY29tcHV0YXRpb24gZmlyc3QgZG9lcyBbdF0gdG8geWllbGQgYSB2YWx1ZSBbdl0sIGFuZFxuICAgICAgdGhlbiBydW5zIHRoZSBjb21wdXRhdGlvbiByZXR1cm5lZCBieSBbZiB2XS4gKilcbiAgdmFsICggPj49ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCoqIFt0ID4+fCBmXSBpcyBbdCA+Pj0gKGZ1biBhIC0+IHJldHVybiAoZiBhKSldLiAqKVxuICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4ID0gc2lnXG4gICgqKiBPcGVuaW5nIGEgbW9kdWxlIG9mIHRoaXMgdHlwZSBhbGxvd3Mgb25lIHRvIHVzZSB0aGUgWyViaW5kXSBhbmQgWyVtYXBdIHN5bnRheFxuICAgICAgZXh0ZW5zaW9ucyBkZWZpbmVkIGJ5IHBweF9sZXQsIGFuZCBicmluZ3MgW3JldHVybl0gaW50byBzY29wZS4gKilcblxuICB0eXBlICdhIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICgqKiBUaGVzZSBhcmUgY29udmVuaWVudCB0byBoYXZlIGluIHNjb3BlIHdoZW4gcHJvZ3JhbW1pbmcgd2l0aCBhIG1vbmFkOiAqKVxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIGluY2x1ZGUgSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgIHZhbCBib3RoIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIEluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICgqKiBbYmluZCB0IH5mXSA9IFt0ID4+PSBmXSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICgqKiBbcmV0dXJuIHZdIHJldHVybnMgdGhlICh0cml2aWFsKSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgdi4gKilcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogW21hcCB0IH5mXSBpcyB0ID4+fCBmLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuXG4gICgqKiBbam9pbiB0XSBpcyBbdCA+Pj0gKGZ1biB0JyAtPiB0JyldLiAqKVxuICB2YWwgam9pbiA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFtpZ25vcmVfbSB0XSBpcyBbbWFwIHQgfmY6KGZ1biBfIC0+ICgpKV0uICBbaWdub3JlX21dIHVzZWQgdG8gYmUgY2FsbGVkIFtpZ25vcmVdLFxuICAgICAgYnV0IHdlIGRlY2lkZWQgdGhhdCB3YXMgYSBiYWQgbmFtZSwgYmVjYXVzZSBpdCBzaGFkb3dlZCB0aGUgd2lkZWx5IHVzZWRcbiAgICAgIFtDYW1sLmlnbm9yZV0uICBTb21lIG1vbmFkcyBzdGlsbCBkbyBbbGV0IGlnbm9yZSA9IGlnbm9yZV9tXSBmb3IgaGlzdG9yaWNhbFxuICAgICAgcmVhc29ucy4gKilcbiAgdmFsIGlnbm9yZV9tIDogJ2EgdCAtPiB1bml0IHRcblxuICB2YWwgYWxsIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuXG4gICgqKiBMaWtlIFthbGxdLCBidXQgZW5zdXJlcyB0aGF0IGV2ZXJ5IG1vbmFkaWMgdmFsdWUgaW4gdGhlIGxpc3QgcHJvZHVjZXMgYSB1bml0IHZhbHVlLFxuICAgICAgYWxsIG9mIHdoaWNoIGFyZSBkaXNjYXJkZWQgcmF0aGVyIHRoYW4gYmVpbmcgY29sbGVjdGVkIGludG8gYSBsaXN0LiAqKVxuICB2YWwgYWxsX3VuaXQgOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzIgPSBzaWdcbiAgKCoqIE11bHRpIHBhcmFtZXRlciBtb25hZC4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2V0cyB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlIGNvbXB1dGF0aW9uLlxuICAgICAgVGhpcyBpcyB1c2VkIHRvIGVuY29kZSBtb25hZHMgd29ya2luZyBvbiBhIG11bHRpIHBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBsaWtlXG4gICAgICAoWygnYSwnYikgcmVzdWx0XSkuICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsIG1hcCA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0IF1cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MiA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDIgPSBzaWdcbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5cbiAgICBpbmNsdWRlIEluZml4MiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2UpIHQgLT4gKCdiLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2UpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIGluY2x1ZGUgSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2UpIHQsICdlKSB0IC0+ICgnYSwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdlKSB0IC0+ICh1bml0LCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzMgPSBzaWdcbiAgKCoqIE11bHRpIHBhcmFtZXRlciBtb25hZC4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBnZXQgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZVxuICAgICAgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MyA9IHNpZ1xuICAoKiogU2FtZSBhcyBJbmZpeCwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIGFyZVxuICAgICAgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXgzID0gc2lnXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcblxuICAgIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYiwgJ2QsICdlKSB0IC0+ICgnYSAqICdiLCAnZCwgJ2UpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZFxuICAgICAgYW5kIHRoaXJkIGFyZSBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIGluY2x1ZGUgU3ludGF4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdkLCAnZSkgdCwgJ2QsICdlKSB0IC0+ICgnYSwgJ2QsICdlKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnZCwgJ2UpIHQgLT4gKHVuaXQsICdkLCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZCwgJ2UpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IHNpZ1xuICAoKiogSW5kZXhlZCBtb25hZCwgaW4gdGhlIHN0eWxlIG9mIEF0a2V5LiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGFyZSBjb21wb3NlZFxuICAgICAgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gVG8gc2VlIHRoaXMgbW9yZSBjbGVhcmx5LCB5b3UgY2FuIGxvb2sgYXQgdGhlIHR5cGUgb2YgYmluZDpcblxuICAgICAge1tcbiAgICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIF19XG5cbiAgICAgIGFuZCBpc29sYXRlIHNvbWUgb2YgdGhlIHR5cGUgdmFyaWFibGVzIHRvIHNlZSB0aGVpciBpbmRpdmlkdWFsIGJlaGF2aW9yczpcblxuICAgICAge1tcbiAgICAgICAgdmFsIGJpbmQgOiAnYSAgICAgICAgICAgICAtPiBmOignYSAtPiAgJ2IgICAgICAgICAgICkgLT4gICdiXG4gICAgICAgIHZhbCBiaW5kIDogICAgICAnaSwgJ2ogICAgLT4gICAgICAgICAgICAgICAnaiwgJ2sgICAgIC0+ICAgICAnaSwgJ2tcbiAgICAgIF19XG5cbiAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEF0a2V5LXN0eWxlIGluZGV4ZWQgbW9uYWRzLCBzZWU6XG5cbiAgICAgIHt2XG4gICAgICAgIFBhcmFtZXRlcmlzZWQgTm90aW9ucyBvZiBDb21wdXRhdGlvblxuICAgICAgICBSb2JlcnQgQXRrZXlcbiAgICAgICAgaHR0cDovL2JlbnRuaWIub3JnL3BhcmFtbm90aW9ucy1qZnAucGRmXG4gICAgICB2fSAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBzaWdcbiAgKCoqIFNhbWUgYXMgeyFJbmZpeH0sIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcblxuICAgIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYiwgJ2osICdrKSB0IC0+ICgnYSAqICdiLCAnaSwgJ2spIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2luZGV4ZWQgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuICBpbmNsdWRlIFN5bnRheF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICB2YWwgbWFwIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2osICdrKSB0LCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2spIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdpLCAnaikgdCAtPiAodW5pdCwgJ2ksICdqKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdpLCAnaSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnaSwgJ2kpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdpLCAnaSkgdCBsaXN0IC0+ICh1bml0LCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgU190b19TMiAoWCA6IFMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MzIChYIDogUzIpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbmVuZFxuXG5tb2R1bGUgU190b19TX2luZGV4ZWQgKFggOiBTKSA6IFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChYIDogUzIpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFNfaW5kZXhlZF90b19TMiAoWCA6IFNfaW5kZXhlZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsICdlKSBYLnQgPVxuc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsICdlKSBYLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNb25hZCA9IHNpZ1xuICAoKiogQSBtb25hZCBpcyBhbiBhYnN0cmFjdGlvbiBvZiB0aGUgY29uY2VwdCBvZiBzZXF1ZW5jaW5nIG9mIGNvbXB1dGF0aW9ucy4gIEEgdmFsdWUgb2ZcbiAgICAgIHR5cGUgWydhIG1vbmFkXSByZXByZXNlbnRzIGEgY29tcHV0YXRpb24gdGhhdCByZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSBbJ2FdLiAqKVxuXG4gIG1vZHVsZSB0eXBlIEJhc2ljID0gQmFzaWNcbiAgbW9kdWxlIHR5cGUgQmFzaWMyID0gQmFzaWMyXG4gIG1vZHVsZSB0eXBlIEJhc2ljMyA9IEJhc2ljM1xuICBtb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gQmFzaWNfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBJbmZpeCA9IEluZml4XG4gIG1vZHVsZSB0eXBlIEluZml4MiA9IEluZml4MlxuICBtb2R1bGUgdHlwZSBJbmZpeDMgPSBJbmZpeDNcbiAgbW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IEluZml4X2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgU3ludGF4ID0gU3ludGF4XG4gIG1vZHVsZSB0eXBlIFN5bnRheDIgPSBTeW50YXgyXG4gIG1vZHVsZSB0eXBlIFN5bnRheDMgPSBTeW50YXgzXG4gIG1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gU3ludGF4X2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IFNfd2l0aG91dF9zeW50YXhcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzIgPSBTMlxuICBtb2R1bGUgdHlwZSBTMyA9IFMzXG4gIG1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IFNfaW5kZXhlZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnRcbiAgbW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudFxuICBtb2R1bGUgTWFrZTMgKFggOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICBtb2R1bGUgTWFrZV9pbmRleGVkIChYIDogQmFzaWNfaW5kZXhlZCkgOlxuICAgIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gICgqKiBEZWZpbmUgYSBtb25hZCB0aHJvdWdoIGFuIGlzb21vcnBoaXNtIHdpdGggYW4gZXhpc3RpbmcgbW9uYWQuIEZvciBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlICdhIHQgPSB7IHZhbHVlIDogJ2EgfVxuXG4gICAgICAgIGluY2x1ZGUgTW9uYWQuT2ZfbW9uYWQgKE1vbmFkLklkZW50KSAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgICAgICBsZXQgdG9fbW9uYWQgeyB2YWx1ZSB9ID0gdmFsdWVcbiAgICAgICAgICAgIGxldCBvZl9tb25hZCB2YWx1ZSA9IHsgdmFsdWUgfVxuICAgICAgICAgIGVuZClcbiAgICAgIF19ICopXG4gIG1vZHVsZSBPZl9tb25hZFxuICAgICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDJcbiAgICAgIChNb25hZCA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYikgTW9uYWQudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQzXG4gICAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgICAoTW9uYWQgOiBTX2luZGV4ZWQpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaikgTW9uYWQudCAtPiAoJ2EsICdpLCAnaikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udFxuXG4gIG1vZHVsZSBJZGVudCA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgTW9uYWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBCYXNpY19nZW5lcmFsID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kXG4gICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgLT4gKCdiLCAnaSwgJ2ssICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kXG4gICAgICB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuZXJhbCAoTSA6IEJhc2ljX2dlbmVyYWwpID0gc3RydWN0XG4gIGxldCBiaW5kID0gTS5iaW5kXG4gIGxldCByZXR1cm4gPSBNLnJldHVyblxuICBsZXQgbWFwX3ZpYV9iaW5kIG1hIH5mID0gTS5iaW5kIG1hIH5mOihmdW4gYSAtPiBNLnJldHVybiAoZiBhKSlcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBNLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2JpbmQgLT4gbWFwX3ZpYV9iaW5kXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoIGEgYiA9IGEgPj49IGZ1biBhIC0+IGIgPj58IGZ1biBiIC0+IGEsIGJcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgam9pbiB0ID0gdCA+Pj0gZnVuIHQnIC0+IHQnXG4gIGxldCBpZ25vcmVfbSB0ID0gbWFwIHQgfmY6KGZ1biBfIC0+ICgpKVxuXG4gIGxldCBhbGwgPVxuICAgIGxldCByZWMgbG9vcCB2cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgdnMpXG4gICAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuIHYgLT4gbG9vcCAodiA6OiB2cykgdHNcbiAgICBpblxuICAgIGZ1biB0cyAtPiBsb29wIFtdIHRzXG4gIDs7XG5cbiAgbGV0IHJlYyBhbGxfdW5pdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuICgpIC0+IGFsbF91bml0IHRzXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaW5kZXhlZCAoTSA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTMgKE0gOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBNLnQgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMiAoTSA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA6PSAoJ2EsICdkKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKE0gOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfZ2VuZXJhbCAoTW9uYWQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBiaW5kXG4gICAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgICAgLT4gKCdiLCAnaSwgJ2ssICdkLCAnZSkgdFxuXG4gICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2osICdkLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuIGEgPSBNLm9mX21vbmFkIChNb25hZC5yZXR1cm4gYSlcbiAgICBsZXQgYmluZCB0IH5mID0gTS5vZl9tb25hZCAoTW9uYWQuYmluZCAoTS50b19tb25hZCB0KSB+ZjooZnVuIGEgLT4gTS50b19tb25hZCAoZiBhKSkpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gKGZ1biB0IH5mIC0+IE0ub2ZfbW9uYWQgKE1vbmFkLm1hcCAoTS50b19tb25hZCB0KSB+ZikpXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAoTW9uYWQgOiBTX2luZGV4ZWQpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaikgTW9uYWQudCAtPiAoJ2EsICdpLCAnaikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkM1xuICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkMlxuICAgIChNb25hZCA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYikgTW9uYWQudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRcbiAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBJZGVudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgYmluZCBhIH5mID0gZiBhXG4gICAgICBsZXQgcmV0dXJuIGEgPSBhXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIGEgfmYgLT4gZiBhKVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFwcGxpY2F0aXZlX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxuKCoqIFRoaXMgbW9kdWxlIHNlcnZlcyBtb3N0bHkgYXMgYSBwYXJ0aWFsIGNoZWNrIHRoYXQgW1MyXSBhbmQgW1NdIGFyZSBpbiBzeW5jLCBidXRcbiAgICBhY3R1YWxseSBjYWxsaW5nIGl0IGlzIG9jY2FzaW9uYWxseSB1c2VmdWwuICopXG5tb2R1bGUgU190b19TMiAoWCA6IFMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2FwcGx5IC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBtYXAyIHRhIHRiIH5mID0gbWFwIH5mIHRhIDwqPiB0YlxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGIgPCo+IHRjXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0ICggKj4gKSB1IHYgPSByZXR1cm4gKGZ1biAoKSB5IC0+IHkpIDwqPiB1IDwqPiB2XG4gIGxldCAoIDwqICkgdSB2ID0gcmV0dXJuIChmdW4geCAoKSAtPiB4KSA8Kj4gdSA8Kj4gdlxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MykgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFhcbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEltcGxcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MikgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsICdkLCBfKSB0ID0gKCdhLCAnZCkgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4XG4gICAgKFggOiBGb3JfbGV0X3N5bnRheCkgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgyXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG4oKiogVGhpcyBmdW5jdG9yIGNsb3NlbHkgcmVzZW1ibGVzIFtNYWtlM10sIGFuZCBpbmRlZWQgaXQgY291bGQgYmUgaW1wbGVtZW50ZWRcbiAgICBtdWNoIHNob3J0ZXIgaW4gdGVybXMgb2YgW01ha2UzXS4gSG93ZXZlciwgd2UgaW1wbGVtZW50IGl0IGJ5IGhhbmQgc28gdGhhdFxuICAgIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25zIGFyZSBtb3JlIGVmZmljaWVudCwgZS5nLiB1c2luZyBbbWFwMl0gZGlyZWN0bHkgaW5zdGVhZCBvZlxuICAgIGRlZmluaW5nIFthcHBseV0gaW4gdGVybXMgb2YgaXQgYW5kIHRoZW4gW21hcDJdIGluIHRlcm1zIG9mIHRoYXQuIEZvciBtb3N0XG4gICAgYXBwbGljYXRpdmVzIHRoaXMgZG9lcyBub3QgbWF0dGVyLCBidXQgZm9yIHNvbWUgKHN1Y2ggYXMgQm9uc2FpLlZhbHVlLnQpLCBpdCBoYXMgYVxuICAgIGxhcmdlciBpbXBhY3QuICopXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMiAoWCA6IEJhc2ljM191c2luZ19tYXAyKSA6XG4gIFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwMiAobWFwMiB0YSB0YiB+ZikgdGMgfmY6KGZ1biBmYWIgYyAtPiBmYWIgYylcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMiAoWCA6IEJhc2ljMl91c2luZ19tYXAyKSA6XG4gIFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDIgKFggOiBCYXNpY191c2luZ19tYXAyKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID1cbiAgTWFrZTJfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyIChNIDogTW9uYWQuUzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgTS50ID0gTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gICAgbGV0IGFwcGx5IG1mIG14ID0gTS5iaW5kIG1mIH5mOihmdW4gZiAtPiBNLm1hcCBteCB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBNLm1hcFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZCAoTSA6IE1vbmFkLlMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBPZl9tb25hZDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgQ29tcG9zZSAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50IEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEcucmV0dXJuIChGLnJldHVybiBhKVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRy5hcHBseSAoRy5tYXAgfmY6Ri5hcHBseSB0ZikgdHhcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBHLm1hcCB+ZjooRi5tYXAgfmYpIHRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFBhaXIgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRi5yZXR1cm4gYSwgRy5yZXR1cm4gYVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRi5hcHBseSAoZnN0IHRmKSAoZnN0IHR4KSwgRy5hcHBseSAoc25kIHRmKSAoc25kIHR4KVxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEYubWFwIH5mIChmc3QgdCksIEcubWFwIH5mIChzbmQgdClcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcbiIsIigqIFtCeXRlczBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW0NhbWwuQnl0ZXNdLiBbQnl0ZXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3NcbiAgIHRoZSBwYXJ0IG9mIFtDYW1sLkJ5dGVzXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlclxuICAgdGhhbiBieXRlczAubWwgc2hvdWxkIHVzZSBbQ2FtbC5CeXRlc10uIFtCeXRlczBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmRcbiAgIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQnl0ZXNdIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBCeXRlcyAgPSBCeXRlczBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgQnl0ZXMgPSBCeXRlczBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQnl0ZXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCAgICAgICAgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuXG4gICgqIFt1bnNhZmVfYmxpdF9zdHJpbmddIGlzIG5vdCBleHBvcnRlZCBpbiB0aGUgW3N0ZGxpYl0gc28gd2UgZXhwb3J0IGl0IGhlcmUgKilcbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgOiAgc3JjOnN0cmluZ1xuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OmJ5dGVzXG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5lbmRcblxuaW5jbHVkZSBQcmltaXRpdmVzXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgYmxpdCA9IENhbWwuQnl0ZXMuYmxpdFxubGV0IGJsaXRfc3RyaW5nID0gQ2FtbC5CeXRlcy5ibGl0X3N0cmluZ1xubGV0IGNvbXBhcmUgPSBDYW1sLkJ5dGVzLmNvbXBhcmVcbmxldCBjb3B5ID0gQ2FtbC5CeXRlcy5jb3B5XG5sZXQgY3JlYXRlID0gQ2FtbC5CeXRlcy5jcmVhdGVcbmxldCBmaWxsID0gQ2FtbC5CeXRlcy5maWxsXG5sZXQgbWFrZSA9IENhbWwuQnl0ZXMubWFrZVxubGV0IG1hcCA9IENhbWwuQnl0ZXMubWFwXG5sZXQgbWFwaSA9IENhbWwuQnl0ZXMubWFwaVxubGV0IHN1YiA9IENhbWwuQnl0ZXMuc3ViXG5sZXQgdW5zYWZlX2JsaXQgPSBDYW1sLkJ5dGVzLnVuc2FmZV9ibGl0XG5sZXQgdG9fc3RyaW5nID0gQ2FtbC5CeXRlcy50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBDYW1sLkJ5dGVzLm9mX3N0cmluZ1xubGV0IHVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cyA9IENhbWwuQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5sZXQgdW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211dGF0aW9uID0gQ2FtbC5CeXRlcy51bnNhZmVfb2Zfc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID1cbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gIH1cblxudHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhIHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfZmMgPSBzaWdcbiAgdHlwZSBjb21wYXJhYmxlX3RcblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gY29tcGFyYWJsZV90XG5lbmRcblxubW9kdWxlIE1vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYilcbmVuZFxuXG5sZXQgbWFrZSAodHlwZSB0KSB+Y29tcGFyZSB+c2V4cF9vZl90ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIGNvbXBhcmFibGVfdCA9IHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZCA6IFNfZmNcbiAgICB3aXRoIHR5cGUgY29tcGFyYWJsZV90ID0gdClcbjs7XG5cbm1vZHVsZSBTX3RvX1MxIChTIDogUykgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gUy50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gUy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBvcGVuIFNcblxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAnYSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gTS57IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBpbmNsdWRlIE1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCJfXCJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSBjb21wYXJhdG9yIC0+ICgnYSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZDIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYikgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDIgKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdhLCAnYikgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZF9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXApIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCBfKSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2EsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcF9hIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdmLCAncykgdCA9XG4gIHwgRmlyc3Qgb2YgJ2ZcbiAgfCBTZWNvbmQgb2YgJ3NcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDpcbiAgJ2YgJ3MuICgnZiAtPiAnZiAtPiBpbnQpIC0+ICgncyAtPiAncyAtPiBpbnQpIC0+ICgnZiwgJ3MpIHQgLT4gKCdmLCAncykgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fZiBfY21wX19zIGFfXzAwMV8gYl9fMDAyXyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgIHwgRmlyc3QgX2FfXzAwM18sIEZpcnN0IF9iX18wMDRfIC0+IF9jbXBfX2YgX2FfXzAwM18gX2JfXzAwNF9cbiAgICB8IEZpcnN0IF8sIF8gLT4gLTFcbiAgICB8IF8sIEZpcnN0IF8gLT4gMVxuICAgIHwgU2Vjb25kIF9hX18wMDVfLCBTZWNvbmQgX2JfXzAwNl8gLT4gX2NtcF9fcyBfYV9fMDA1XyBfYl9fMDA2Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgZiBzLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoZiwgcykgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2YgX2hhc2hfZm9sZF9zIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBGaXJzdCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfZiBoc3YgX2EwXG4gIHwgU2Vjb25kIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9zIGhzdiBfYTBcbjs7XG5cbmxldCB0X29mX3NleHAgOlxuICAnZiAncy5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnZikgLT4gKFNleHBsaWIwLlNleHAudCAtPiAncykgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnZiwgJ3MpIHRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDIzXyBzX18wMjRfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gZl9fMDIzXykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBzX18wMjRfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoZl9fMDIzXywgc19fMDI0XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMTFfID0gXCJlaXRoZXIwLm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfZl9fMDA3XyBfb2Zfc19fMDA4XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9mX18wMDdfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgICAgRmlyc3QgcmVzMF9fMDE3X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgX3RhZ19fMDE5XykgOjogc2V4cF9hcmdzX18wMjBfKSBhc1xuICAgICAgICBfc2V4cF9fMDE4XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjBfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMjFfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2Zfc19fMDA4XyBhcmcwX18wMjFfIGluXG4gICAgICAgICAgIFNlY29uZCByZXMwX18wMjJfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxOV9cbiAgICAgICAgICAgICBfc2V4cF9fMDE4XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnZiAncy5cbiAgKCdmIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdmLCAncykgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDMxXyBzX18wMzJfKVxuICAgICAgOiAgKChmX18wMzFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAzMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChmX18wMzFfLCBzX18wMzJfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2ZfXzAyNV8gX29mX3NfXzAyNl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgYXJnMF9fMDI3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9mX18wMjVfIGFyZzBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmlyc3RcIjsgcmVzMF9fMDI4XyBdXG4gICAgICB8IFNlY29uZCBhcmcwX18wMjlfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzBfID0gX29mX3NfXzAyNl8gYXJnMF9fMDI5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZWNvbmRcIjsgcmVzMF9fMDMwXyBdXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAnZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAtPiAncyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAtPiAoJ2YsICdzKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA9XG4gIGZ1biBfJ2Zfc2V4cF9ncmFtbWFyIF8nc19zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkZpcnN0XCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydmX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJTZWNvbmRcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ3Nfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG4iLCIoKiBUaGUgdHlwZSBbdF0gc2hvdWxkIGJlIGFic3RyYWN0IHRvIG1ha2UgdGhlIGZzZXQgYW5kIHNldCBmdW5jdGlvbnMgdW5hdmFpbGFibGVcbiAgIGZvciBwcml2YXRlIHR5cGVzIGF0IHRoZSBsZXZlbCBvZiB0eXBlcyAoYW5kIG5vdCBieSBwdXR0aW5nIE5vbmUgaW4gdGhlIGZpZWxkKS5cbiAgIFVuZm9ydHVuYXRlbHksIG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCBtZWFucyB0aGF0IHdoZW4gY3JlYXRpbmcgZmllbGRzICh0aHJvdWdoXG4gICBhIFtjcmVhdGVdIGZ1bmN0aW9uKSB2YWx1ZSByZXN0cmljdGlvbiBraWNrcyBpbi4gVGhpcyBpcyB3b3JrZWQgYXJvdW5kIGJ5IGluc3RlYWRcbiAgIG5vdCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QsIGJ1dCBmb3JjaW5nIGFueW9uZSBicmVha2luZyB0aGUgYWJzdHJhY3Rpb24gdG8gdXNlXG4gICB0aGUgW0Zvcl9nZW5lcmF0ZWRfY29kZV0gbW9kdWxlLCBtYWtpbmcgaXQgb2J2aW91cyB0byBhbnkgcmVhZGVyIHRoYXQgc29tZXRoaW5nIHVnbHlcbiAgIGlzIGdvaW5nIG9uLlxuICAgdF93aXRoX3Blcm0gKGFuZCBkZXJpdmF0aXZlcykgaXMgdGhlIHR5cGUgdGhhdCB1c2VycyByZWFsbHkgdXNlLiBJdCBpcyBhIGNvbnN0cnVjdG9yXG4gICBiZWNhdXNlOlxuICAgMS4gaXQgbWFrZXMgdHlwZSBlcnJvcnMgbW9yZSByZWFkYWJsZSAobGVzcyBhbGlhc2luZylcbiAgIDIuIHRoZSB0eXBlciBpbiBvY2FtbCA0LjAxIGFsbG93cyB0aGlzOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgICAgIHR5cGUgdCA9IHthIDogaW50fVxuICAgICBlbmRcbiAgICAgdHlwZSB0ID0gQS50XG4gICAgIGxldCBmICh4IDogdCkgPSB4LmFcbiAgIF19XG5cbiAgIChhbHRob3VnaCB3aXRoIFdhcm5pbmcgNDA6IGEgaXMgdXNlZCBvdXQgb2Ygc2NvcGUpXG4gICB3aGljaCBtZWFucyB0aGF0IGlmIFt0X3dpdGhfcGVybV0gd2FzIHJlYWxseSBhbiBhbGlhcyBvbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdLFxuICAgcGVvcGxlIGNvdWxkIHNheSBbdC5zZXR0ZXJdIGFuZCBicmVhayB0aGUgYWJzdHJhY3Rpb24gd2l0aCBubyBpbmRpY2F0aW9uIHRoYXRcbiAgIHNvbWV0aGluZyB1Z2x5IGlzIGdvaW5nIG9uIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgIFRoZSB3YXJuaW5nIGlzIChJIHRoaW5rKSBmb3IgcGVvcGxlIHdobyB3YW50IHRvIG1ha2UgdGhlaXIgY29kZSBjb21wYXRpYmxlIHdpdGhcbiAgIHByZXZpb3VzIHZlcnNpb25zIG9mIG9jYW1sLCBzbyB3ZSBtYXkgdmVyeSB3ZWxsIHR1cm4gaXQgb2ZmLlxuXG4gICBUaGUgdHlwZSB0X3dpdGhfcGVybSBjb3VsZCBhbHNvIGhhdmUgYmVlbiBhIFt1bml0IC0+IEZvcl9nZW5lcmF0ZWRfY29kZS50XSB0byB3b3JrXG4gICBhcm91bmQgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHRoZW4gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSB3b3VsZCBoYXZlIGJlZW4gYSBwcm9wZXJcbiAgIGFic3RyYWN0IHR5cGUsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSAoZm9yIGV4YW1wbGUsIGEgZm9sZCBvbiBhXG4gICByZWNvcmQgdHlwZSB3aXRoIDQwIGZpZWxkcyB3b3VsZCBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgNDAgW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSdzIGF0XG4gICBldmVyeSBzaW5nbGUgZm9sZC4pICopXG5cbm1vZHVsZSBGb3JfZ2VuZXJhdGVkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgeyBmb3JjZV92YXJpYW5jZSA6ICdwZXJtIC0+IHVuaXRcbiAgICA7ICgqIGZvcmNlIFt0XSB0byBiZSBjb250cmF2YXJpYW50IGluIFsncGVybV0sIGJlY2F1c2UgcGhhbnRvbSB0eXBlIHZhcmlhYmxlcyBvblxuICAgICAgICAgY29uY3JldGUgdHlwZXMgZG9uJ3Qgd29yayB0aGF0IHdlbGwgb3RoZXJ3aXNlICh1c2luZyA6PiBjYW4gcmVtb3ZlIHRoZW0gZWFzaWx5KSAqKVxuICAgICAgbmFtZSA6IHN0cmluZ1xuICAgIDsgc2V0dGVyIDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvblxuICAgIDsgZ2V0dGVyIDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICA7IGZzZXQgOiAncmVjb3JkIC0+ICdmaWVsZCAtPiAncmVjb3JkXG4gICAgfVxuXG4gIGxldCBvcGFxdWVfaWRlbnRpdHkgPSBTeXMwLm9wYXF1ZV9pZGVudGl0eVxuZW5kXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtID1cbiAgfCBGaWVsZCBvZiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgRm9yX2dlbmVyYXRlZF9jb2RlLnRcbltAQHVuYm94ZWRdXG5cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9IChbIGBSZWFkIHwgYFNldF9hbmRfY3JlYXRlIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgcmVhZG9ubHlfdCA9IChbIGBSZWFkIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cblxubGV0IG5hbWUgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLm5hbWVcbmxldCBnZXQgKEZpZWxkIGZpZWxkKSByID0gZmllbGQuZ2V0dGVyIHJcbmxldCBmc2V0IChGaWVsZCBmaWVsZCkgciB2ID0gZmllbGQuZnNldCByIHZcbmxldCBzZXR0ZXIgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLnNldHRlclxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ3Jlc3VsdCkgdXNlciA9XG4gIHsgZiA6ICdmaWVsZC4gKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtIC0+ICdyZXN1bHQgfVxuXG5sZXQgbWFwIChGaWVsZCBmaWVsZCkgciB+ZiA9IGZpZWxkLmZzZXQgciAoZiAoZmllbGQuZ2V0dGVyIHIpKVxuXG5sZXQgdXBkYXRlciAoRmllbGQgZmllbGQpID1cbiAgbWF0Y2ggZmllbGQuc2V0dGVyIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHNldHRlciAtPiBTb21lIChmdW4gciB+ZiAtPiBzZXR0ZXIgciAoZiAoZmllbGQuZ2V0dGVyIHIpKSlcbjs7XG4iLCIoKiBbU3RyaW5nMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbQ2FtbC5TdHJpbmddLiBbU3RyaW5nMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbQ2FtbC5TdHJpbmddIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3RyaW5nMC5tbCBzaG91bGRcbiAgIHVzZSBbQ2FtbC5TdHJpbmddLiAgW1N0cmluZzBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2Unc1xuICAgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncywgaW5jbHVkaW5nIHRoZSBzdWJzY3JpcHQgc3ludGF4XG4gICBbeC4oaSldIG9yIFt4LihpKSA8LSBlXSB3aGljaCB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG9cbiAgIFtTdHJpbmddLCBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuU3RyaW5nXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cblxuICAge1tcbiAgICAgbW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgU3RyaW5nID0gU3RyaW5nMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TdHJpbmddLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgICAgICAgIDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmVuZFxuXG5pbmNsdWRlIFN0cmluZ1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0ICggXiApID0gKCBeIClcbmxldCBjYXBpdGFsaXplID0gQ2FtbC5TdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxubGV0IGNvbXBhcmUgPSBDYW1sLlN0cmluZy5jb21wYXJlXG5cbmxldCBjb3B5IHggPVxuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6XG4gICAgICAoQnl0ZXMub2Zfc3RyaW5nIHgpXG47O1xuXG5sZXQgZXNjYXBlZCA9IENhbWwuU3RyaW5nLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBDYW1sLlN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbmxldCBtYWtlID0gQ2FtbC5TdHJpbmcubWFrZVxubGV0IHN1YiA9IENhbWwuU3RyaW5nLnN1YlxubGV0IHVuY2FwaXRhbGl6ZSA9IENhbWwuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxubGV0IHVuc2FmZV9ibGl0ID0gQ2FtbC5TdHJpbmcudW5zYWZlX2JsaXRcbmxldCB1cHBlcmNhc2UgPSBDYW1sLlN0cmluZy51cHBlcmNhc2VfYXNjaWlcblxubGV0IGNvbmNhdCA/KHNlcCA9IFwiXCIpIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIlwiXG4gICgqIFRoZSBzdGRsaWIgZG9lcyBub3Qgc3BlY2lhbGl6ZSB0aGlzIGNhc2UgYmVjYXVzZSBpdCBjb3VsZCBicmVhayBleGlzdGluZyBwcm9qZWN0cy4gKilcbiAgfCBbIHggXSAtPiB4XG4gIHwgbCAtPiBDYW1sLlN0cmluZy5jb25jYXQgfnNlcCBsXG47O1xuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBpdGVyIHQgfmYgPSBDYW1sLlN0cmluZy5pdGVyIHQgfmZcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbWwuTGV4aW5nLnBvc2l0aW9uID1cbiAgICB7IHBvc19mbmFtZSA6IHN0cmluZ1xuICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICA7IHBvc19ib2wgOiBpbnRcbiAgICA7IHBvc19jbnVtIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9XG4gICAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICAgICB0aGVuIDBcbiAgICAgICBlbHNlIChcbiAgICAgICAgIG1hdGNoIGNvbXBhcmVfc3RyaW5nIGFfXzAwMV8ucG9zX2ZuYW1lIGJfXzAwMl8ucG9zX2ZuYW1lIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfbG51bSBiX18wMDJfLnBvc19sbnVtIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfYm9sIGJfXzAwMl8ucG9zX2JvbCB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfY251bSBiX18wMDJfLnBvc19jbnVtXG4gICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGZ1biBoc3YgYXJnIC0+XG4gICAgICBsZXQgaHN2ID1cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBhcmcucG9zX2ZuYW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2xudW1cbiAgICAgICAgaW5cbiAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19ib2xcbiAgICAgIGluXG4gICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2NudW1cbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuIHsgcG9zX2ZuYW1lID0gcG9zX2ZuYW1lX18wMDRfXG4gICAgICAgICA7IHBvc19sbnVtID0gcG9zX2xudW1fXzAwNl9cbiAgICAgICAgIDsgcG9zX2JvbCA9IHBvc19ib2xfXzAwOF9cbiAgICAgICAgIDsgcG9zX2NudW0gPSBwb3NfY251bV9fMDEwX1xuICAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwM18gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9pbnQgcG9zX2NudW1fXzAxMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2NudW1cIjsgYXJnX18wMTFfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2ZfaW50IHBvc19ib2xfXzAwOF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2JvbFwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgcG9zX2xudW1fXzAwNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2xudW1cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIHBvc19mbmFtZV9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfZm5hbWVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDNfXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyBQcHhfaGVyZS5saWZ0X3Bvc2l0aW9uX2FzX3N0cmluZy4gKilcbmxldCBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2wgPVxuICBTdHJpbmcuY29uY2F0XG4gICAgWyBwb3NfZm5hbWU7IFwiOlwiOyBJbnQudG9fc3RyaW5nIHBvc19sbnVtOyBcIjpcIjsgSW50LnRvX3N0cmluZyAocG9zX2NudW0gLSBwb3NfYm9sKSBdXG47O1xuXG5sZXQgdG9fc3RyaW5nIHsgQ2FtbC5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2wgfSA9XG4gIG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbFxuOztcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBMaXN0MFxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCAoZiB4IDogXyBFaXRoZXIwLnQpIHdpdGhcbiAgICAgICB8IEZpcnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kXG4gICAgICAgfCBTZWNvbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQ2FtbC5yZXN1bHQgPVxuICB8IE9rIG9mICdhXG4gIHwgRXJyb3Igb2YgJ2JcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2EgJ2IuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2EsICdiKSB0XG4gID1cbiAgZnVuICh0eXBlIGFfXzAxN18gYl9fMDE4XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxN18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGFfXzAxN18sIGJfXzAxOF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwicmVzdWx0Lm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJva1wiIHwgXCJPa1wiKSBhcyBfdGFnX18wMDhfKSA6OiBzZXhwX2FyZ3NfXzAwOV8pIGFzXG4gICAgICAgIF9zZXhwX18wMDdfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAwOV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxMF8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDExXyA9IF9vZl9hX18wMDFfIGFyZzBfXzAxMF8gaW5cbiAgICAgICAgICAgT2sgcmVzMF9fMDExX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMDhfXG4gICAgICAgICAgICAgX3NleHBfXzAwN18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIF90YWdfXzAxM18pIDo6IHNleHBfYXJnc19fMDE0XykgYXNcbiAgICAgICAgX3NleHBfXzAxMl8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE0XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE1XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2JfXzAwMl8gYXJnMF9fMDE1XyBpblxuICAgICAgICAgICBFcnJvciByZXMwX18wMTZfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAxM19cbiAgICAgICAgICAgICBfc2V4cF9fMDEyXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm9rXCIgfCBcIk9rXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAyNV8gYl9fMDI2XylcbiAgICAgIDogICgoYV9fMDI1XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMjZfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDI1XywgYl9fMDI2XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTlfIF9vZl9iX18wMjBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAyMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAyMl8gXVxuICAgICAgfCBFcnJvciBhcmcwX18wMjNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjRfID0gX29mX2JfXzAyMF8gYXJnMF9fMDIzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFcnJvclwiOyByZXMwX18wMjRfIF1cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiT2tcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkVycm9yXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDI3XyBiX18wMjhfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMjdfLCBiX18wMjhfIHdpdGhcbiAgICB8IE9rIF9hX18wMjlfLCBPayBfYl9fMDMwXyAtPiBfY21wX19hIF9hX18wMjlfIF9iX18wMzBfXG4gICAgfCBPayBfLCBfIC0+IC0xXG4gICAgfCBfLCBPayBfIC0+IDFcbiAgICB8IEVycm9yIF9hX18wMzFfLCBFcnJvciBfYl9fMDMyXyAtPiBfY21wX19iIF9hX18wMzFfIF9iX18wMzJfKVxuOztcblxubGV0IGVxdWFsIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAzM18gYl9fMDM0XyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMzNfIGJfXzAzNF9cbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAzM18sIGJfXzAzNF8gd2l0aFxuICAgIHwgT2sgX2FfXzAzNV8sIE9rIF9iX18wMzZfIC0+IF9jbXBfX2EgX2FfXzAzNV8gX2JfXzAzNl9cbiAgICB8IE9rIF8sIF8gLT4gZmFsc2VcbiAgICB8IF8sIE9rIF8gLT4gZmFsc2VcbiAgICB8IEVycm9yIF9hX18wMzdfLCBFcnJvciBfYl9fMDM4XyAtPiBfY21wX19iIF9hX18wMzdfIF9iX18wMzhfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBhIGIuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChhLCBiKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBfaGFzaF9mb2xkX2IgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IE9rIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgfCBFcnJvciBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG47O1xuXG5bQEBAZW5kXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IGJpbmQgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBmIHhcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IE9rIChmIHgpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCByZXR1cm4geCA9IE9rIHhcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGNoZWNrX29rIGNoZWNrX2Vycm9yIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBvayAtPiBjaGVja19vayBva1xuICB8IEVycm9yIGVycm9yIC0+IGNoZWNrX2Vycm9yIGVycm9yXG47O1xuXG5sZXQgZmFpbCB4ID0gRXJyb3IgeFxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxuXG5sZXQgbWFwX2Vycm9yIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBfIGFzIHggLT4geFxuICB8IEVycm9yIHggLT4gRXJyb3IgKGYgeClcbjs7XG5cbm1vZHVsZSBFcnJvciA9IE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdiLCAnYSkgdFxuXG4gICAgbGV0IGJpbmQgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT2sgXyBhcyBvayAtPiBva1xuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBfZXJyb3JcbiAgICBsZXQgcmV0dXJuIGUgPSBFcnJvciBlXG4gIGVuZClcblxubGV0IGlzX29rID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gZmFsc2VcbiAgfCBFcnJvciBfIC0+IHRydWVcbjs7XG5cbmxldCBvayA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBTb21lIHhcbiAgfCBFcnJvciBfIC0+IE5vbmVcbjs7XG5cbmxldCBlcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBOb25lXG4gIHwgRXJyb3IgeCAtPiBTb21lIHhcbjs7XG5cbmxldCBvZl9vcHRpb24gb3B0IH5lcnJvciA9XG4gIG1hdGNoIG9wdCB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+IEVycm9yIGVycm9yXG47O1xuXG5sZXQgaXRlciB2IH5mID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgT2sgeCAtPiBmIHhcbiAgfCBFcnJvciBfIC0+ICgpXG47O1xuXG5sZXQgaXRlcl9lcnJvciB2IH5mID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgT2sgXyAtPiAoKVxuICB8IEVycm9yIHggLT4gZiB4XG47O1xuXG5sZXQgdG9fZWl0aGVyIDogXyB0IC0+IF8gRWl0aGVyLnQgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gRmlyc3QgeFxuICB8IEVycm9yIHggLT4gU2Vjb25kIHhcbjs7XG5cbmxldCBvZl9laXRoZXIgOiBfIEVpdGhlci50IC0+IF8gdCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBPayB4XG4gIHwgU2Vjb25kIHggLT4gRXJyb3IgeFxuOztcblxubGV0IG9rX2lmX3RydWUgYm9vbCB+ZXJyb3IgPSBpZiBib29sIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvclxuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHRyeSBPayAoZiAoKSkgd2l0aFxuICB8IGV4biAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbmxldCBva19vcl9mYWlsd2l0aCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3Igc3RyIC0+IGZhaWx3aXRoIHN0clxuOztcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnb2ssICdlcnIpIF9yZXN1bHQgPSAoJ29rLCAnZXJyKSB0ID1cbiAgICB8IE9rIG9mICdva1xuICAgIHwgRXJyb3Igb2YgJ2VyclxuXG4gIGxldCBpc19lcnJvciA9IGlzX2Vycm9yXG4gIGxldCBpc19vayA9IGlzX29rXG5lbmRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IE9rIF8sIEVycm9yIGUgfCBFcnJvciBlLCBPayBfIC0+IEVycm9yIGVcbiAgfCBPayBvazEsIE9rIG9rMiAtPiBPayAob2sgb2sxIG9rMilcbiAgfCBFcnJvciBlcnIxLCBFcnJvciBlcnIyIC0+IEVycm9yIChlcnIgZXJyMSBlcnIyKVxuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPVxuICBsZXQgb2ssIGVycnMgPSBMaXN0MS5wYXJ0aXRpb25fbWFwIGwgfmY6dG9fZWl0aGVyIGluXG4gIG1hdGNoIGVycnMgd2l0aFxuICB8IFtdIC0+IE9rIG9rXG4gIHwgXyA6OiBfIC0+IEVycm9yIGVycnNcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBtYXAgKGNvbWJpbmVfZXJyb3JzIGwpIH5mOihmdW4gKF8gOiB1bml0IGxpc3QpIC0+ICgpKVxuXG4oKiBkZXByZWNhdGVkIGJpbmRpbmcgZm9yIGV4cG9ydCBvbmx5ICopXG5sZXQgb2tfZnN0ID0gdG9fZWl0aGVyXG4iLCIoKiogUHJvdmlkZXMgZ2VuZXJpYyBzaWduYXR1cmVzIGZvciBjb250YWluZXIgZGF0YSBzdHJ1Y3R1cmVzLlxuXG4gICAgVGhlc2Ugc2lnbmF0dXJlcyBpbmNsdWRlIGZ1bmN0aW9ucyAoW2l0ZXJdLCBbZm9sZF0sIFtleGlzdHNdLCBbZm9yX2FsbF0sIC4uLikgdGhhdFxuICAgIHlvdSB3b3VsZCBleHBlY3QgdG8gZmluZCBpbiBhbnkgY29udGFpbmVyLiBVc2VkIGJ5IGluY2x1ZGluZyBbQ29udGFpbmVyLlMwXSBvclxuICAgIFtDb250YWluZXIuUzFdIGluIHRoZSBzaWduYXR1cmUgZm9yIGV2ZXJ5IGNvbnRhaW5lci1saWtlIGRhdGEgc3RydWN0dXJlIChbQXJyYXldLFxuICAgIFtMaXN0XSwgW1N0cmluZ10sIC4uLikgdG8gZW5zdXJlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqKiBbQ29udGludWVfb3Jfc3RvcC50XSBpcyB1c2VkIGJ5IHRoZSBbZl0gYXJndW1lbnQgdG8gW2ZvbGRfdW50aWxdIGluIG9yZGVyIHRvXG4gICAgICBpbmRpY2F0ZSB3aGV0aGVyIGZvbGRpbmcgc2hvdWxkIGNvbnRpbnVlLCBvciBzdG9wIGVhcmx5LlxuXG4gICAgICBAY2Fub25pY2FsIEJhc2UuQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3BcbiAgKilcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgfCBDb250aW51ZSBvZiAnYVxuICAgICAgfCBTdG9wIG9mICdiXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuQ29udGFpbmVyLlN1bW1hYmxlICopXG5tb2R1bGUgdHlwZSBTdW1tYWJsZSA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiogVGhlIHJlc3VsdCBvZiBzdW1taW5nIG5vIHZhbHVlcy4gKilcbiAgdmFsIHplcm8gOiB0XG5cbiAgKCoqIEFuIG9wZXJhdGlvbiB0aGF0IGNvbWJpbmVzIHR3byBbdF0ncyBhbmQgaGFuZGxlcyBbemVybyArIHhdIGJ5IGp1c3QgcmV0dXJuaW5nIFt4XSxcbiAgICAgIGFzIHdlbGwgYXMgaW4gdGhlIHN5bW1ldHJpYyBjYXNlLiAqKVxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lciAtIGEgY29udGFpbmVyIGZvciBhIHNwZWNpZmljIGVsZW1lbnQgdHlwZSwgZS5nLixcbiAgICBzdHJpbmcsIHdoaWNoIGlzIGEgY29udGFpbmVyIG9mIGNoYXJhY3RlcnMgKFt0eXBlIGVsdCA9IGNoYXJdKSBhbmQgbmV2ZXIgb2YgYW55dGhpbmdcbiAgICBlbHNlLiAqKVxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgZWx0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuXG4gICgqKiBbaXRlcl0gbXVzdCBhbGxvdyBleGNlcHRpb25zIHJhaXNlZCBpbiBbZl0gdG8gZXNjYXBlLCB0ZXJtaW5hdGluZyB0aGUgaXRlcmF0aW9uXG4gICAgICBjbGVhbmx5LiAgVGhlIHNhbWUgaG9sZHMgZm9yIGFsbCBmdW5jdGlvbnMgYmVsb3cgdGFraW5nIGFuIFtmXS4gKilcbiAgdmFsIGl0ZXIgOiB0IC0+IGY6KGVsdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiB0IC0+IGY6KGVsdCAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogdCAtPiBmOihlbHQgLT4gJ2Egb3B0aW9uKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcC4gbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lXG4gICAgICBjb21wbGV4aXR5IGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6IHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF9waGFudG9tID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogXyB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiBfIHQgLT4gZjooZWx0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogXyB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBfIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IF8gdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuIFRoZSBvcmRlciBpbiB3aGljaCB0aGVcbiAgICAgIGVsZW1lbnRzIHdpbGwgYmUgc3VtbWVkIGlzIHVuc3BlY2lmaWVkLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+IF8gdCAtPiBmOihlbHQgLT4gJ3N1bSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogXyB0IC0+IGY6KGVsdCAtPiAnYSBvcHRpb24pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogXyB0IC0+IGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6IF8gdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcCBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAgSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgIGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuICopXG4gIHZhbCBtaW5fZWx0IDogXyB0IC0+IGNvbXBhcmU6KGVsdCAtPiBlbHQgLT4gaW50KSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiBfIHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBwb2x5bW9ycGhpYyBjb250YWluZXIsIGUuZy4sIFsnYSBsaXN0XSBvciBbJ2EgYXJyYXldLiAqKVxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0gICopXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gJ2EgdCAtPiBmOignYSAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW5pbXVtIChyZXNwIG1heGltdW0pIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWRcbiAgICAgIFtjb21wYXJlXSBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3RcbiAgICAgIGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uXG4gICAgICB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eSBhcyBbZm9sZF0uICopXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b21faW52YXJpYW50ID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgW2VxdWFsXS4gKilcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+ICgnYSwgXykgdCAtPiBmOignYSAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcCBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eVxuICAgICAgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMV9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCArJ3BoYW50b20pIHRcblxuICBpbmNsdWRlIFMxX3BoYW50b21faW52YXJpYW50IHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IF8gdCAtPiBib29sXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGludFxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+ICdhIHQgLT4gZjooJ2EgZWx0IC0+ICdzdW0pIC0+ICdzdW1cbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGVsdCBhcnJheVxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpY19waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOignYSBlbHQgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9nZW5fYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFRoZSBbaXRlcl0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtpdGVyXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZSBbaXRlcl1cbiAgICAgIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgaXRlciB0IH5mID0gQ29udGFpbmVyLml0ZXIgfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbaXRlcl0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbaXRlcl0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3lcbiAgICAgIGFzIHdlbGwuICopXG4gIHZhbCBpdGVyIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gZjooJ2EgZWx0IC0+IHVuaXQpIC0+IHVuaXQgXVxuXG4gICgqKiBUaGUgW2xlbmd0aF0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtsZW5ndGhdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lXG4gICAgICBbbGVuZ3RoXSB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGxlbmd0aCB0IH5mID0gQ29udGFpbmVyLmxlbmd0aCB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtsZW5ndGhdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2xlbmd0aF0gd2lsbCBpbXByb3ZlIHRoZWlyXG4gICAgICBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBsZW5ndGggOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBpbnQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gTWFrZV9nZW5fYXJnIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgTW9uYWQuSWRlbnQudFxuXG5tb2R1bGUgdHlwZSBNYWtlMF9hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICdhIHQgOj0gdCBhbmQgdHlwZSAnYSBlbHQgOj0gRWx0LnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb250YWluZXIgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cG9ydFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMCA9IFMwXG4gIG1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBTMF9waGFudG9tXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgPSBTMV9waGFudG9tX2ludmFyaWFudFxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tID0gUzFfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBHZW5lcmljID0gR2VuZXJpY1xuICBtb2R1bGUgdHlwZSBHZW5lcmljX3BoYW50b20gPSBHZW5lcmljX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgU3VtbWFibGUgPSBTdW1tYWJsZVxuXG4gICgqKiBHZW5lcmljIGRlZmluaXRpb25zIG9mIGNvbnRhaW5lciBvcGVyYXRpb25zIGluIHRlcm1zIG9mIFtmb2xkXS5cblxuICAgICAgRS5nLjogW2l0ZXIgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKV0uICopXG5cbiAgdHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPSAndCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cbiAgdHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB0eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG4gIHZhbCBpdGVyIDogZm9sZDooJ3QsICdhLCB1bml0KSBmb2xkIC0+ICgndCwgJ2EpIGl0ZXJcbiAgdmFsIGNvdW50IDogZm9sZDooJ3QsICdhLCBpbnQpIGZvbGQgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIG1pbl9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYSBvcHRpb24pIGZvbGRcbiAgICAtPiAndFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbGVuZ3RoIDogZm9sZDooJ3QsIF8sIGludCkgZm9sZCAtPiAndCAtPiBpbnRcbiAgdmFsIHRvX2xpc3QgOiBmb2xkOigndCwgJ2EsICdhIGxpc3QpIGZvbGQgLT4gJ3QgLT4gJ2EgbGlzdFxuXG4gIHZhbCBzdW1cbiAgICA6ICBmb2xkOigndCwgJ2EsICdzdW0pIGZvbGRcbiAgICAtPiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAndFxuICAgIC0+IGY6KCdhIC0+ICdzdW0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2IpIGZvbGRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gJ3RcbiAgICAtPiAoJ2IsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYikgZm9sZFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICd0XG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2l0ZXJdIGFuZCBbbGVuZ3RoXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGJvb2xcblxuICB2YWwgZXhpc3RzIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmluZCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19hcnJheSA6IGxlbmd0aDondCBsZW5ndGggLT4gaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFRoZSBpZGlvbSBmb3IgdXNpbmcgW0NvbnRhaW5lci5NYWtlXSBpcyB0byBiaW5kIHRoZSByZXN1bHRpbmcgbW9kdWxlIGFuZCB0b1xuICAgICAgZXhwbGljaXRseSBpbXBvcnQgZWFjaCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgb25lIHdhbnRzOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgICAgbGV0IGNvdW50ICAgID0gQy5jb3VudFxuICAgICAgICBsZXQgZXhpc3RzICAgPSBDLmV4aXN0c1xuICAgICAgICBsZXQgZmluZCAgICAgPSBDLmZpbmRcbiAgICAgICAgKCogLi4uICopXG4gICAgICBdfVxuXG4gICAgICBUaGlzIGlzIHByZWZlcmFibGUgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIGluY2x1ZGUgQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgXX1cblxuICAgICAgYmVjYXVzZSB0aGUgW2luY2x1ZGVdIG1ha2VzIGl0IHRvbyBlYXN5IHRvIHNoYWRvdyBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgIGNvbnRhaW5lciBmdW5jdGlvbnMgKFtsZW5ndGhdIGJlaW5nIGEgY29tbW9uIG9uZSkuXG5cbiAgICAgIFtDb250YWluZXIuTWFrZTBdIGlzIGxpa2UgW0NvbnRhaW5lci5NYWtlXSwgYnV0IGZvciBtb25vbW9ycGhpYyBjb250YWluZXJzIGxpa2VcbiAgICAgIFtzdHJpbmddLiAqKVxuICBtb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgOiBTMCB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgZWx0IDo9IFQuRWx0LnRcblxuICBtb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgICBHZW5lcmljIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgQ29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPSAndCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cbnR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbnR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbmxldCBpdGVyIH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSlcbmxldCBjb3VudCB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIGEgLT4gaWYgZiBhIHRoZW4gbiArIDEgZWxzZSBuKVxuXG5sZXQgc3VtICh0eXBlIGEpIH5mb2xkIChtb2R1bGUgTSA6IFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDpNLnplcm8gfmY6KGZ1biBuIGEgLT4gTS4oICsgKSBuIChmIGEpKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBSZXN1bHQuT2tcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IFJlc3VsdC5PayB4IC0+IHhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IHJldHVybiBlKSkpXG47O1xuXG5sZXQgZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBmaW5pc2hcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IENvbnRpbnVlX29yX3N0b3AuQ29udGludWUgeCAtPiB4XG4gICAgICAgICB8IFN0b3AgeCAtPiByZXR1cm4geCkpKVxuOztcblxubGV0IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1pbiAtPiBpZiBjb21wYXJlIG1pbiBlbHQgPiAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpXG47O1xuXG5sZXQgbWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWF4IC0+IGlmIGNvbXBhcmUgbWF4IGVsdCA8IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYylcbjs7XG5cbmxldCBsZW5ndGggfmZvbGQgYyA9IGZvbGQgYyB+aW5pdDowIH5mOihmdW4gYWNjIF8gLT4gYWNjICsgMSlcblxubGV0IGlzX2VtcHR5IH5pdGVyIGMgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biBfIC0+IHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IGV4aXN0cyB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBmb3JfYWxsIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIG5vdCAoZiB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IGZpbmRfbWFwIH5pdGVyIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIHQgfmY6KGZ1biB4IC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmQgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gKFNvbWUgeCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgdG9fbGlzdCB+Zm9sZCBjID0gTGlzdC5yZXYgKGZvbGQgYyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IC0+IHggOjogYWNjKSlcblxubGV0IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgYyA9XG4gIGxldCBhcnJheSA9IHJlZiBbfHxdIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgaXRlciBjIH5mOihmdW4geCAtPlxuICAgIGlmICFpID0gMCB0aGVuIGFycmF5IDo9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggYykgeDtcbiAgICAhYXJyYXkuKCFpKSA8LSB4O1xuICAgIGluY3IgaSk7XG4gICFhcnJheVxuOztcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6IHNpZ1xuICBpbmNsdWRlIEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgZm9sZCA9IFQuZm9sZFxuXG4gIGxldCBpdGVyID1cbiAgICBtYXRjaCBULml0ZXIgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyIC0+IGl0ZXJcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgbGVuZ3RoID1cbiAgICBtYXRjaCBULmxlbmd0aCB3aXRoXG4gICAgfCBgQ3VzdG9tIGxlbmd0aCAtPiBsZW5ndGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCAtPiBsZW5ndGggfmZvbGQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gaXNfZW1wdHkgfml0ZXIgdFxuICBsZXQgc3VtIG0gdCA9IHN1bSB+Zm9sZCBtIHRcbiAgbGV0IGNvdW50IHQgfmYgPSBjb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0cyB+aXRlciB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcCB+aXRlciB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kIH5pdGVyIHQgfmZcbiAgbGV0IHRvX2xpc3QgdCA9IHRvX2xpc3QgfmZvbGQgdFxuICBsZXQgdG9fYXJyYXkgdCA9IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgdFxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBmb2xkX3Jlc3VsdCB0IH5mb2xkIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IGZvbGRfdW50aWwgdCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSlcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgJ2EgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCBlbHQgPSBleGlzdHMgdCB+ZjooVC5FbHQuZXF1YWwgZWx0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ2FtbC5MYXp5XG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGF6eV90X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xhenlfdFxuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsYXp5X3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9IGxhenkgKGYgKGZvcmNlIHQpKVxuXG5sZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gMCBlbHNlIGNvbXBhcmVfYSAoZm9yY2UgdDEpIChmb3JjZSB0Milcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID0gaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIHRydWUgZWxzZSBlcXVhbF9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxubGV0IGhhc2hfZm9sZF90ID0gSGFzaC5CdWlsdGluLmhhc2hfZm9sZF9sYXp5X3RcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiB4ID0gZnJvbV92YWwgeFxuICAgIGxldCBiaW5kIHQgfmYgPSBsYXp5IChmb3JjZSAoZiAoZm9yY2UgdCkpKVxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgVF91bmZvcmNpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBpc192YWwgdCB0aGVuIHNleHBfb2ZfYSAoZm9yY2UgdCkgZWxzZSBzZXhwX29mX3N0cmluZyBcIjx1bmZvcmNlZCBsYXp5PlwiXG4gIDs7XG5lbmRcbiIsIigqIFNwbGl0IG9mZiB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5IHdpdGggW09yX2Vycm9yXS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbmxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIHBvc2l0aW9uOiAlZFwiIHBvcyAoKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIGxlbmd0aDogJWRcIiBsZW4gKCk7XG4gICgqIFdlIHVzZSBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gdG90YWxfbGVuZ3RoXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA+IHRvdGFsX2xlbmd0aCAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnZiBcInBvcyArIGxlbiBwYXN0IGVuZDogJWQgKyAlZCA+ICVkXCIgcG9zIGxlbiB0b3RhbF9sZW5ndGggKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICAoKiBUaGlzIGlzIGJldHRlciB0aGFuIFtzbG93X2NoZWNrX3Bvc19sZW5fZXhuXSBmb3IgdHdvIHJlYXNvbnM6XG5cbiAgICAgLSBtdWNoIGxlc3MgaW5saW5lZCBjb2RlXG4gICAgIC0gb25seSBvbmUgY29uZGl0aW9uYWwganVtcFxuXG4gICAgIFRoZSByZWFzb24gaXQgd29ya3MgaXMgdGhhdCBjaGVja2luZyBbPCAwXSBpcyB0ZXN0aW5nIHRoZSBoaWdoZXN0IG9yZGVyIGJpdCwgc29cbiAgICAgW2EgPCAwIHx8IGIgPCAwXSBpcyB0aGUgc2FtZSBhcyBbYSBsb3IgYiA8IDBdLlxuXG4gICAgIFtwb3MgKyBsZW5dIGNhbiBvdmVyZmxvdywgc28gW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gaXMgbm90IGVxdWl2YWxlbnQgdG9cbiAgICAgW3RvdGFsX2xlbmd0aCAtIGxlbiAtIHBvcyA8IDBdLCB3ZSBuZWVkIHRvIHRlc3QgZm9yIFtwb3MgKyBsZW5dIG92ZXJmbG93IGFzXG4gICAgIHdlbGwuICopXG4gIGxldCBzdG9wID0gcG9zICsgbGVuIGluXG4gIGlmIHBvcyBsb3IgbGVuIGxvciBzdG9wIGxvciAodG90YWxfbGVuZ3RoIC0gc3RvcCkgPCAwXG4gIHRoZW4gc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aFxuOztcblxubGV0IGdldF9wb3NfbGVuX2V4biA/KHBvcyA9IDApID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBTb21lIGkgLT4gaVxuICAgIHwgTm9uZSAtPiB0b3RhbF9sZW5ndGggLSBwb3NcbiAgaW5cbiAgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIHBvcywgbGVuXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2xvd19jaGVja19wb3NfbGVuX2V4biA9IHNsb3dfY2hlY2tfcG9zX2xlbl9leG5cbmVuZFxuIiwiXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN0IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIGlkeCA6IGludFxuICAgIH1cblxuICBsZXQgb2Zfc3RhdGUgOiBDYW1sLlJhbmRvbS5TdGF0ZS50IC0+IHQgPSBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbmxldCBhc3NpZ24gdDEgdDIgPVxuICBsZXQgdDEgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIHQxKSBpblxuICBsZXQgdDIgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIHQyKSBpblxuICBBcnJheS5ibGl0IH5zcmM6dDIuc3QgfnNyY19wb3M6MCB+ZHN0OnQxLnN0IH5kc3RfcG9zOjAgfmxlbjooQXJyYXkubGVuZ3RoIHQxLnN0KTtcbiAgdDEuaWR4IDwtIHQyLmlkeFxuXG5sZXQgbWFrZV9kZWZhdWx0IGRlZmF1bHQgPSBkZWZhdWx0XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZ2V0X3N0YXRlIHN0YXRlID0gc3RhdGVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBDaGFyID0gQ2hhcjBcblxuKCogVW5mb3J0dW5hdGVseSwgYmVjYXVzZSB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2VzIG5vdCBleHBvc2VcbiAgIFtDYW1sLlJhbmRvbS5TdGF0ZS5kZWZhdWx0XSwgd2UgaGF2ZSB0byBjb25zdHJ1Y3Qgb3VyIG93bi4gIFdlIHRoZW4gYnVpbGQgdGhlXG4gICBbQ2FtbC5SYW5kb20uaW50XSwgW0NhbWwuUmFuZG9tLmJvb2xdIGZ1bmN0aW9ucyBhbmQgZnJpZW5kcyB1c2luZyB0aGF0IGRlZmF1bHQgc3RhdGUgaW5cbiAgIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LlxuXG4gICBPbmUgb3RoZXIgdHJpY2tpbmVzcyBpcyB0aGF0IHdlIG5lZWQgYWNjZXNzIHRvIHRoZSB1bmV4cG9zZWQgW0NhbWwuUmFuZG9tLlN0YXRlLmFzc2lnbl1cbiAgIGZ1bmN0aW9uLCB3aGljaCBhY2Nlc3NlcyB0aGUgdW5leHBvc2VkIHN0YXRlIHJlcHJlc2VudGF0aW9uLiAgU28sIHdlIGNvcHkgdGhlXG4gICBbU3RhdGUucmVwcl0gdHlwZSBkZWZpbml0aW9uIGFuZCBbYXNzaWduXSBmdW5jdGlvbiB0byBoZXJlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksXG4gICBhbmQgdXNlIFtPYmoubWFnaWNdIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24uICopXG5cbigqIFJlZ3Jlc3Npb24gdGVzdHMgb3VnaHQgdG8gYmUgZGV0ZXJtaW5pc3RpYyBiZWNhdXNlIHRoYXQgd2F5IGFueW9uZSB3aG8gYnJlYWtzIHRoZSB0ZXN0XG4gICBrbm93cyB0aGF0IGl0J3MgdGhlaXIgY29kZSB0aGF0IGJyb2tlIHRoZSB0ZXN0LiAgSWYgdGVzdHMgYXJlIG5vbmRldGVybWluaXN0aWMsIGEgdGVzdFxuICAgZmFpbHVyZSBtYXkgaW5zdGVhZCBoYXBwZW4gYmVjYXVzZSB0aGUgdGVzdCBydW5uZXIgZ290IHVubHVja3kgYW5kIHVuY292ZXJlZCBhblxuICAgZXhpc3RpbmcgYnVnIGluIHRoZSBjb2RlIHN1cHBvc2VkbHkgYmVpbmcgXCJwcm90ZWN0ZWRcIiBieSB0aGUgdGVzdCBpbiBxdWVzdGlvbi4gKilcbmxldCBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzID1cbiAgaWYgYW1fdGVzdGluZ1xuICB0aGVuIChcbiAgICBtYXRjaCBhbGxvd19pbl90ZXN0cyB3aXRoXG4gICAgfCBTb21lIHRydWUgLT4gKClcbiAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICBcImluaXRpYWxpemluZyBSYW5kb20gd2l0aCBhIG5vbmRldGVybWluaXN0aWMgc2VlZCBpcyBmb3JiaWRkZW4gaW4gaW5saW5lIHRlc3RzXCIpXG47O1xuXG5leHRlcm5hbCByYW5kb21fc2VlZCA6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbmxldCByYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICByYW5kb21fc2VlZCAoKVxuOztcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFdlIGFsbG93IGxhemluZXNzIG9ubHkgZm9yIHRoZSBkZWZpbml0aW9uIG9mIFtkZWZhdWx0XSwgYmVsb3csIHdoaWNoIG1heSBsYXppbHkgY2FsbFxuICAgICBbbWFrZV9zZWxmX2luaXRdLiBGb3IgYWxsIG90aGVyIHB1cnBvc2VzLCB3ZSBjcmVhdGUgYW5kIHVzZSBbdF0gZWFnZXJseS4gKilcbiAgdHlwZSB0ID0gQ2FtbC5SYW5kb20uU3RhdGUudCBMYXp5LnRcblxuICBsZXQgYml0cyB0ID0gQ2FtbC5SYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSB0KVxuICBsZXQgYm9vbCB0ID0gQ2FtbC5SYW5kb20uU3RhdGUuYm9vbCAoTGF6eS5mb3JjZSB0KVxuICBsZXQgaW50IHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBpbnQzMiB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5pbnQzMiAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBpbnQ2NCB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5pbnQ2NCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBuYXRpdmVpbnQgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUubmF0aXZlaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG1ha2Ugc2VlZCA9IExhenkuZnJvbV92YWwgKENhbWwuUmFuZG9tLlN0YXRlLm1ha2Ugc2VlZClcbiAgbGV0IGNvcHkgdCA9IExhenkuZnJvbV92YWwgKENhbWwuUmFuZG9tLlN0YXRlLmNvcHkgKExhenkuZm9yY2UgdCkpXG4gIGxldCBjaGFyIHQgPSBpbnQgdCAyNTYgfD4gQ2hhci51bnNhZmVfb2ZfaW50XG4gIGxldCBhc2NpaSB0ID0gaW50IHQgMTI4IHw+IENoYXIudW5zYWZlX29mX2ludFxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICAgIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gICAgTGF6eS5mcm9tX3ZhbCAoQ2FtbC5SYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG4gIDs7XG5cbiAgbGV0IGFzc2lnbiA9IFJhbmRvbV9yZXByLmFzc2lnblxuXG4gIGxldCBmdWxsX2luaXQgdCBzZWVkID0gYXNzaWduIHQgKG1ha2Ugc2VlZClcblxuICBsZXQgZGVmYXVsdCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgZGVmaW5lIEJhc2UncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZSBhcyBhIGNvcHkgb2YgT0NhbWwncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZS5cbiAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBwcm9ncmFtcyB0aGF0IHVzZSBCYXNlLlJhbmRvbSB3aWxsIHNlZSB0aGUgc2FtZSBzZXF1ZW5jZSBvZlxuICAgICAgICAgcmFuZG9tIGJpdHMgYXMgaWYgdGhleSBoYWQgdXNlZCBDYW1sLlJhbmRvbS4gSG93ZXZlciwgYmVjYXVzZSBbZ2V0X3N0YXRlXSByZXR1cm5zXG4gICAgICAgICBhIGNvcHksIEJhc2UuUmFuZG9tIGFuZCBPQ2FtbC5SYW5kb20gYXJlIG5vdCB1c2luZyB0aGUgc2FtZSBzdGF0ZS4gSWYgYSBwcm9ncmFtXG4gICAgICAgICB1c2VkIGJvdGgsIGVhY2ggb2YgdGhlbSB3b3VsZCBnbyB0aHJvdWdoIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHJhbmRvbSBiaXRzLiBUb1xuICAgICAgICAgYXZvaWQgdGhhdCwgd2UgcmVzZXQgT0NhbWwncyByYW5kb20gc3RhdGUgdG8gYSBkaWZmZXJlbnQgc2VlZCwgZ2l2aW5nIGl0IGFcbiAgICAgICAgIGRpZmZlcmVudCBzZXF1ZW5jZS4gKilcbiAgICAgIGxldCB0ID0gQ2FtbC5SYW5kb20uZ2V0X3N0YXRlICgpIGluXG4gICAgICBDYW1sLlJhbmRvbS5pbml0IDEzNztcbiAgICAgIExhenkuZnJvbV92YWwgdClcbiAgICBlbHNlXG4gICAgICBsYXp5XG4gICAgICAgICgqIE91dHNpZGUgb2YgdGVzdHMsIHdlIGluaXRpYWxpemUgcmFuZG9tIHN0YXRlIG5vbmRldGVybWluaXN0aWNhbGx5IGFuZCBsYXppbHkuXG4gICAgICAgICAgIFdlIGZvcmNlIHRoZSByYW5kb20gaW5pdGlhbGl6YXRpb24gdG8gYmUgbGF6eSBzbyB0aGF0IHdlIGRvIG5vdCBwYXkgYW55IGNvc3RcbiAgICAgICAgICAgZm9yIGl0IGluIHByb2dyYW1zIHRoYXQgZG8gbm90IHVzZSByYW5kb21uZXNzLiAqKVxuICAgICAgICAoTGF6eS5mb3JjZSAobWFrZV9zZWxmX2luaXQgKCkpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fNjRiaXRzIHQgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBDYW1sLkludDY0LnRvX2ludCAoaW50NjQgdCAoQ2FtbC5JbnQ2NC5vZl9pbnQgYm91bmQpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fMzJiaXRzIHQgYm91bmQgPVxuICAgICgqIE5vdCBhbHdheXMgdHJ1ZSB3aXRoIHRoZSBKYXZhU2NyaXB0IGJhY2tlbmQuICopXG4gICAgaWYgYm91bmQgPD0gMHgzRkZGRkZGRiAoKiAoMSBsc2wgMzApIC0gMSAqKVxuICAgIHRoZW4gaW50IHQgYm91bmRcbiAgICBlbHNlIENhbWwuSW50MzIudG9faW50IChpbnQzMiB0IChDYW1sLkludDMyLm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQ2NCA9XG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQ2NCBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPlxuICAgICAgbG9neG9yXG4gICAgICAgIChiaXRzIHN0YXRlKVxuICAgICAgICAobG9neG9yIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMCkgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDYwKSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQzMiA9XG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQzMiBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPiBsb2d4b3IgKGJpdHMgc3RhdGUpIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMClcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIHN0YXRlID0gQ2FtbC5JbnQ2NC50b19pbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMgc3RhdGUgPSBDYW1sLkludDMyLnRvX2ludCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSlcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMgc3RhdGUgPVxuICAgIENhbWwuSW50NjQudG9fbmF0aXZlaW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMgc3RhdGUgPVxuICAgIENhbWwuTmF0aXZlaW50Lm9mX2ludDMyIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2Nyb3NzZWRfYm91bmRzIG5hbWUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgc3RyaW5nX29mX2JvdW5kID1cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIlJhbmRvbS4lczogY3Jvc3NlZCBib3VuZHMgWyVzID4gJXNdXCJcbiAgICAgIG5hbWVcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgbG93ZXJfYm91bmQpXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIHVwcGVyX2JvdW5kKVxuICAgICAgKClcbiAgW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbiAgOztcblxuICBsZXQgaW50X2luY2wgPVxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50XCIgbG8gaGkgSW50LnRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgICAgaWYgZGlmZiA9IEludC5tYXhfdmFsdWVcbiAgICAgIHRoZW4gbG8gKyAoZnVsbF9yYW5nZV9pbnQgc3RhdGUgbGFuZCBJbnQubWF4X3ZhbHVlKVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBcbiAgICAgIHRoZW4gbG8gKyBpbnQgc3RhdGUgKEludC5zdWNjIGRpZmYpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDMyX2luY2wgPVxuICAgIGxldCBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQzMiBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50MzJcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMGxcbiAgICAgIHRoZW4gYWRkIGxvIChpbnQzMiBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X2luY2wgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBDYW1sLk5hdGl2ZWludCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwibmF0aXZlaW50XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwblxuICAgICAgdGhlbiBhZGQgbG8gKG5hdGl2ZWludCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50NjRfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBDYW1sLkludDY0IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQ2NFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwTFxuICAgICAgdGhlbiBhZGQgbG8gKGludDY0IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gICgqIFJldHVybiBhIHVuaWZvcm1seSByYW5kb20gZmxvYXQgaW4gWzAsIDEpLiAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHN0YXRlID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgc2NhbGUgPSAweDFwLTMwIGluXG4gICAgKCogMl4tMzAgKilcbiAgICBsZXQgcjEgPSBDYW1sLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcjIgPSBDYW1sLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcmVzdWx0ID0gKChyMSAqLiBzY2FsZSkgKy4gcjIpICouIHNjYWxlIGluXG4gICAgKCogV2l0aCB2ZXJ5IHNtYWxsIHByb2JhYmlsaXR5LCByZXN1bHQgY2FuIHJvdW5kIHVwIHRvIDEuMCwgc28gaW4gdGhhdCBjYXNlLCB3ZSBqdXN0XG4gICAgICAgdHJ5IGFnYWluLiAqKVxuICAgIGlmIHJlc3VsdCA8IDEuMCB0aGVuIHJlc3VsdCBlbHNlIHJhd2Zsb2F0IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGZsb2F0IHN0YXRlIGhpID0gcmF3ZmxvYXQgc3RhdGUgKi4gaGlcblxuICBsZXQgZmxvYXRfcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImZsb2F0XCIgbG8gaGkgQ2FtbC5zdHJpbmdfb2ZfZmxvYXQ7XG4gICAgbG8gKy4gZmxvYXQgc3RhdGUgKGhpIC0uIGxvKVxuICA7O1xuZW5kXG5cbmxldCBkZWZhdWx0ID0gUmFuZG9tX3JlcHIubWFrZV9kZWZhdWx0IFN0YXRlLmRlZmF1bHRcblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBpbnQgeCA9IFN0YXRlLmludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQzMiB4ID0gU3RhdGUuaW50MzIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgbmF0aXZlaW50IHggPSBTdGF0ZS5uYXRpdmVpbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50NjQgeCA9IFN0YXRlLmludDY0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGZsb2F0IHggPSBTdGF0ZS5mbG9hdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnRfaW5jbCB4IHkgPSBTdGF0ZS5pbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDMyX2luY2wgeCB5ID0gU3RhdGUuaW50MzJfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IG5hdGl2ZWludF9pbmNsIHggeSA9IFN0YXRlLm5hdGl2ZWludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50NjRfaW5jbCB4IHkgPSBTdGF0ZS5pbnQ2NF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgZmxvYXRfcmFuZ2UgeCB5ID0gU3RhdGUuZmxvYXRfcmFuZ2UgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgY2hhciAoKSA9IFN0YXRlLmNoYXIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGFzY2lpICgpID0gU3RhdGUuYXNjaWkgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpKVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc1xuIiwiKCoqIEFuIGludGVybmFsLW9ubHkgbW9kdWxlIGZhY3RvcmVkIG91dCBkdWUgdG8gYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gY29yZV9hcnJheVxuICAgIGFuZCBjb3JlX2xpc3QuICBDb250YWlucyBjb2RlIGZvciBwZXJtdXRpbmcgYW4gYXJyYXkuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgPyhwb3MgPSAwKSA/bGVuIHQgPVxuICAoKiBDb3BpZWQgZnJvbSBbT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNvbXBpbGluZ1xuICAgICB3aXRob3V0IGZsYW1iZGEuICopXG4gIGxldCB0b3RhbF9sZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBsIC0+IGxcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBsZXQgbnVtX3N3YXBzID0gbGVuIC0gMSBpblxuICBmb3IgaSA9IG51bV9zd2FwcyBkb3dudG8gMSBkb1xuICAgIGxldCB0aGlzX2kgPSBwb3MgKyBpIGluXG4gICAgKCogW3JhbmRvbV9pXSBpcyBkcmF3biBmcm9tIFtwb3MsdGhpc19pXSAqKVxuICAgIGxldCByYW5kb21faSA9IHBvcyArIFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChpICsgMSkgaW5cbiAgICBzd2FwIHQgdGhpc19pIHJhbmRvbV9pXG4gIGRvbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGNvbnN0IGMgXyA9IGNcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogdGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgW0NhbWwuaWdub3JlXSAqKVxuXG5sZXQgbm9uIGYgeCA9IG5vdCAoZiB4KVxuXG5sZXQgZm9yZXZlciBmID1cbiAgbGV0IHJlYyBmb3JldmVyICgpID1cbiAgICBmICgpO1xuICAgIGZvcmV2ZXIgKClcbiAgaW5cbiAgdHJ5IGZvcmV2ZXIgKCkgd2l0aFxuICB8IGUgLT4gZVxuOztcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbigqIFRoZSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGVzZSBmdW5jdGlvbnMgaXMgdG8gcGFzcyBpbiBmdW5jdGlvbmFsIGFyZ3VtZW50cyBhbmQgZ2V0XG4gICBmdW5jdGlvbnMgYXMgYSByZXN1bHQuICopXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCByZWMgYXBwbHlfbl90aW1lcyB+biBmIHggPSBpZiBuIDw9IDAgdGhlbiB4IGVsc2UgYXBwbHlfbl90aW1lcyB+bjoobiAtIDEpIGYgKGYgeClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IExlc3NcbiAgfCBFcXVhbFxuICB8IEdyZWF0ZXJcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG5sZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IExlc3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgRXF1YWwgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgR3JlYXRlciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTGVzczsgRXF1YWw7IEdyZWF0ZXIgXSA6IHQgbGlzdClcblxubGV0IHRfb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMDVfID0gXCJvcmRlcmluZy5tbC50XCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgLT4gTGVzc1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXF1YWxcIiB8IFwiRXF1YWxcIikgLT4gRXF1YWxcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImdyZWF0ZXJcIiB8IFwiR3JlYXRlclwiKSAtPiBHcmVhdGVyXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZXF1YWxcIiB8IFwiRXF1YWxcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImdyZWF0ZXJcIiB8IFwiR3JlYXRlclwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgfCBzZXhwX18wMDRfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuOztcblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgTGVzcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJMZXNzXCJcbiAgICB8IEVxdWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkVxdWFsXCJcbiAgICB8IEdyZWF0ZXIgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiR3JlYXRlclwiXG4gICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkxlc3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkVxdWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJHcmVhdGVyXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlIF9vcmRlcmluZyA9IHQgPVxuICAgIHwgTGVzc1xuICAgIHwgRXF1YWxcbiAgICB8IEdyZWF0ZXJcbmVuZFxuXG5sZXQgb2ZfaW50IG4gPSBpZiBuIDwgMCB0aGVuIExlc3MgZWxzZSBpZiBuID0gMCB0aGVuIEVxdWFsIGVsc2UgR3JlYXRlclxuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBMZXNzIC0+IC0xXG4gIHwgRXF1YWwgLT4gMFxuICB8IEdyZWF0ZXIgLT4gMVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG5cbmluY2x1ZGUgTGlzdDFcblxuKCogVGhpcyBpdHNlbGYgaW5jbHVkZXMgW0xpc3QwXS4gKilcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsaXN0X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGlzdFxuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gbGlzdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE9yX3VuZXF1YWxfbGVuZ3RocyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IFVuZXF1YWxfbGVuZ3Roc1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDZfIGJfXzAwN18gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDZfIGJfXzAwN19cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwNl8sIGJfXzAwN18gd2l0aFxuICAgICAgfCBPayBfYV9fMDA4XywgT2sgX2JfXzAwOV8gLT4gX2NtcF9fYSBfYV9fMDA4XyBfYl9fMDA5X1xuICAgICAgfCBPayBfLCBfIC0+IC0xXG4gICAgICB8IF8sIE9rIF8gLT4gMVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMsIFVuZXF1YWxfbGVuZ3RocyAtPiAwKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMTNfKSA6ICgoYV9fMDEzXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAxM18gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAxMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBfb2ZfYV9fMDEwXyBhcmcwX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAxMl8gXVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbF9sZW5ndGhzXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxubGV0IG9mX2xpc3QgdCA9IHRcblxubGV0IHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGxldCBuZXh0X2kgPSBzdHJpZGUgc3RhcnRfaSBpblxuICBsZXQgb3JkZXIgeCB5ID0gT3JkZXJpbmcub2ZfaW50IChjb21wYXJlIHggeSkgaW5cbiAgbGV0IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKCkgPVxuICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXCJcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RyaWRlX29yZGVyID1cbiAgICBtYXRjaCBvcmRlciBzdGFydF9pIG5leHRfaSB3aXRoXG4gICAgfCBFcXVhbCAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgfCBMZXNzIC0+IGBMZXNzXG4gICAgfCBHcmVhdGVyIC0+IGBHcmVhdGVyXG4gIGluXG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBsZXQgaV90b19zdG9wX29yZGVyID0gb3JkZXIgaSBzdG9wX2kgaW5cbiAgICBtYXRjaCBpX3RvX3N0b3Bfb3JkZXIsIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT5cbiAgICAgICgqIGhhdmVuJ3QgeWV0IHJlYWNoZWQgW3N0b3BfaV0uIENvbnRpbnVlLiAqKVxuICAgICAgbGV0IG5leHRfaSA9IHN0cmlkZSBpIGluXG4gICAgICAobWF0Y2ggb3JkZXIgaSBuZXh0X2ksIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICAgICB8IEVxdWFsLCBfIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgY2hhbmdlIGRpcmVjdGlvblwiXG4gICAgICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+IGxvb3AgbmV4dF9pIChpIDo6IGFjY3VtKSlcbiAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICgqIHN0ZXBwZWQgcGFzdCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgYWNjdW1cbiAgICB8IEVxdWFsLCBfIC0+XG4gICAgICAoKiByZWFjaGVkIFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICAobWF0Y2ggc3RvcCB3aXRoXG4gICAgICAgfCBgaW5jbHVzaXZlIC0+IGkgOjogYWNjdW1cbiAgICAgICB8IGBleGNsdXNpdmUgLT4gYWNjdW0pXG4gIGluXG4gIGxldCBzdGFydF9pID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X2lcbiAgICB8IGBleGNsdXNpdmUgLT4gbmV4dF9pXG4gIGluXG4gIHJldiAobG9vcCBzdGFydF9pIFtdKVxuOztcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgaWYgc3RyaWRlID0gMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZTogc3RyaWRlIG11c3QgYmUgbm9uLXplcm9cIjtcbiAgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGU6KGZ1biB4IC0+IHggKyBzdHJpZGUpIH5zdGFydCB+c3RvcCBzdGFydF9pIHN0b3BfaVxuOztcblxubGV0IGhkIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBfIC0+IFNvbWUgeFxuOztcblxubGV0IHRsIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiB0JyAtPiBTb21lIHQnXG47O1xuXG5sZXQgbnRoIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIG50aF9hdXggdCBuID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEgOjogdCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggdCAobiAtIDEpXG4gICAgaW5cbiAgICBudGhfYXV4IHQgbilcbjs7XG5cbmxldCBudGhfZXhuIHQgbiA9XG4gIG1hdGNoIG50aCB0IG4gd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiTGlzdC5udGhfZXhuICVkIGNhbGxlZCBvbiBsaXN0IG9mIGxlbmd0aCAlZFwiIG4gKGxlbmd0aCB0KSAoKVxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdW5vcmRlcmVkX2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwgfCBsLCBbXSAtPiBsXG4gIHwgXyAtPiByZXZfYXBwZW5kIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIgLT4gbG9vcCBhIGIgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXyB8IF8sIFtdIC0+IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGIgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgbDEgbDIgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2IgfSAtPlxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCJcbiAgICAgIG5hbWVcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSlcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYilcbiAgICAgICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYyA6ICdjIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgbDMgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgYyBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIsIGMgd2l0aFxuICAgICAgfCBbXSwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIsIF8gOjogYyAtPiBsb29wIGEgYiBjIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBbXSwgXyB8IF8sIF8sIFtdIC0+XG4gICAgICAgIFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGI7IHRhaWxfb2ZfYyA9IGMgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBsMyAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDNfZXhuIG5hbWUgbDEgbDIgbDMgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2I7IHRhaWxfb2ZfYyB9IC0+XG4gICAgbGV0IG4xID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EgaW5cbiAgICBsZXQgbjIgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYiBpblxuICAgIGxldCBuMyA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9jIGluXG4gICAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZCB8fCAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgbjIgbjMgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIgbDMpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5sZXQgaXRlcjIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihpdGVyMl9vayB+ZilcblxubGV0IGl0ZXIyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiaXRlcjJfZXhuXCIgbDEgbDI7XG4gIGl0ZXIyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihyZXZfbWFwMl9vayB+ZilcblxubGV0IHJldl9tYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwicmV2X21hcDJfZXhuXCIgbDEgbDI7XG4gIHJldl9tYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgZm9sZDIgbDEgbDIgfmluaXQgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb2xkMl9vayB+aW5pdCB+ZilcblxubGV0IGZvbGQyX2V4biBsMSBsMiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZDJfZXhuXCIgbDEgbDI7XG4gIGZvbGQyX29rIGwxIGwyIH5pbml0IH5mXG47O1xuXG5sZXQgZm9yX2FsbDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb3JfYWxsMl9vayB+ZilcblxubGV0IGZvcl9hbGwyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9yX2FsbDJfZXhuXCIgbDEgbDI7XG4gIGZvcl9hbGwyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgZXhpc3RzMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGV4aXN0czJfb2sgfmYpXG5cbmxldCBleGlzdHMyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZXhpc3RzMl9leG5cIiBsMSBsMjtcbiAgZXhpc3RzMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIGVxdWFsIGEgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IGIgOjogYnMgLT4gZXF1YWwgYSBiIHx8IGxvb3AgZXF1YWwgYSBic1xuICBpblxuICBsb29wIGVxdWFsIGEgdFxuOztcblxuKCogVGhpcyBpcyBhIGNvcHkgb2YgdGhlIGNvZGUgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCBhbiBleHRyYSBldGEtZXhwYW5zaW9uIHRvXG4gICBhdm9pZCBjcmVhdGluZyBwYXJ0aWFsIGNsb3N1cmVzIChzaG93ZWQgdXAgZm9yIFtmaWx0ZXJdKSBpbiBwcm9maWxpbmcpLiAqKVxubGV0IHJldl9maWx0ZXIgdCB+ZiA9XG4gIGxldCByZWMgZmluZCB+ZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IHggOjogbCAtPiBpZiBmIHggdGhlbiBmaW5kIH5mICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIH5mIGFjY3UgbFxuICBpblxuICBmaW5kIH5mIFtdIHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IHJldiAocmV2X2ZpbHRlciB0IH5mKVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIGxcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIGluXG4gIGxvb3AgdFxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgbG9vcCBsXG4gIGluXG4gIGxvb3AgdFxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByZWMgZmluZF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IHggOjogdCAtPiBpZiBmIHggdGhlbiB4IGVsc2UgZmluZF9leG4gdCB+ZlxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgaSB4IHRoZW4gU29tZSAoaSwgeCkgZWxzZSBsb29wIChpICsgMSkgbFxuICBpblxuICBsb29wIDAgdFxuOztcblxubGV0IGZpbmRpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICBmaW5kaV9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiBpIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGwpXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgJiYgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkIHx8IGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdFxuOztcblxuKCoqIEZvciB0aGUgY29udGFpbmVyIGludGVyZmFjZS4gKilcbmxldCBmb2xkX2xlZnQgPSBmb2xkXG5cbmxldCB0b19hcnJheSA9IEFycmF5Lm9mX2xpc3RcbmxldCB0b19saXN0IHQgPSB0XG5cbmxldCBtYXhfbm9uX3RhaWxjYWxsID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzIHNtYWxsLiBUaGlzXG4gICAgIG51bWJlciB3YXMgdGFrZW4gZnJvbSBvY2FtbCNzdGRsaWIvbGlzdC5tbCB3aGljaCBpcyBhbHNvIGVxdWFsIHRvIHRoZSBkZWZhdWx0IGxpbWl0XG4gICAgIG9mIHJlY3Vyc2l2ZSBjYWxsIGluIHRoZSBqc19vZl9vY2FtbCBjb21waWxlciBiZWZvcmUgc3dpdGNoaW5nIHRvIHRyYW1wb2xpbmUuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcbjs7XG5cbigqKiBUYWlsIHJlY3Vyc2l2ZSB2ZXJzaW9ucyBvZiBzdGFuZGFyZCBbTGlzdF0gbW9kdWxlICopXG5cbmxldCB0YWlsX2FwcGVuZCBsMSBsMiA9IHJldl9hcHBlbmQgKHJldiBsMSkgbDJcblxuKCogVGhlcmUgYXJlIGEgZmV3IG9wdGltaXplZCBsaXN0IG9wZXJhdGlvbnMgaGVyZSwgaW5jbHVkaW5nIGFwcGVuZCBhbmQgbWFwLiAgVGhlcmUgYXJlXG4gICBiYXNpY2FsbHkgdHdvIG9wdGltaXphdGlvbnMgaW4gcGxheTogbG9vcCB1bnJvbGxpbmcsIGFuZCBkeW5hbWljIHN3aXRjaGluZyBiZXR3ZWVuXG4gICBzdGFjayBhbmQgaGVhcCBhbGxvY2F0aW9uLlxuXG4gICBUaGUgbG9vcC11bnJvbGxpbmcgaXMgc3RyYWlnaHRmb3J3YXJkLCB3ZSBqdXN0IHVucm9sbCA1IGxldmVscyBvZiB0aGUgbG9vcC4gIFRoaXMgbWFrZXNcbiAgIGVhY2ggaXRlcmF0aW9uIGZhc3RlciwgYW5kIGFsc28gcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyBjb25zdW1lZCBwZXIgbGlzdFxuICAgZWxlbWVudC5cblxuICAgVGhlIGR5bmFtaWMgc3dpdGNoaW5nIGlzIGRvbmUgYnkgY291bnRpbmcgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMsIGFuZCB0aGVuXG4gICBzd2l0Y2hpbmcgdG8gdGhlIFwic2xvd1wiIGltcGxlbWVudGF0aW9uIHdoZW4gd2UgZXhjZWVkIGEgZ2l2ZW4gbGltaXQuICBUaGlzIG1lYW5zIHRoYXRcbiAgIHNob3J0IGxpc3RzIHVzZSB0aGUgZmFzdCBzdGFjay1hbGxvY2F0aW9uIG1ldGhvZCwgYW5kIGxvbmcgbGlzdHMgdXNlIGEgc2xvd2VyIG9uZSB0aGF0XG4gICBkb2Vzbid0IHJlcXVpcmUgc3RhY2sgc3BhY2UuICopXG5sZXQgcmVjIGNvdW50X2FwcGVuZCBsMSBsMiBjb3VudCA9XG4gIG1hdGNoIGwyIHdpdGhcbiAgfCBbXSAtPiBsMVxuICB8IF8gLT5cbiAgICAobWF0Y2ggbDEgd2l0aFxuICAgICB8IFtdIC0+IGwyXG4gICAgIHwgWyB4MSBdIC0+IHgxIDo6IGwyXG4gICAgIHwgWyB4MTsgeDIgXSAtPiB4MSA6OiB4MiA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MyBdIC0+IHgxIDo6IHgyIDo6IHgzIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzOyB4NCBdIC0+IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IGwyXG4gICAgIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICAgICB4MVxuICAgICAgIDo6IHgyXG4gICAgICAgOjogeDNcbiAgICAgICA6OiB4NFxuICAgICAgIDo6IHg1XG4gICAgICAgOjpcbiAgICAgICAoaWYgY291bnQgPiBtYXhfbm9uX3RhaWxjYWxsXG4gICAgICAgIHRoZW4gdGFpbF9hcHBlbmQgdGwgbDJcbiAgICAgICAgZWxzZSBjb3VudF9hcHBlbmQgdGwgbDIgKGNvdW50ICsgMSkpKVxuOztcblxubGV0IGFwcGVuZCBsMSBsMiA9IGNvdW50X2FwcGVuZCBsMSBsMiAwXG5cbigqIEFuIG9yZGluYXJ5IHRhaWwgcmVjdXJzaXZlIG1hcCBidWlsZHMgdXAgYW4gaW50ZXJtZWRpYXRlIChyZXZlcnNlZCkgcmVwcmVzZW50YXRpb24sXG4gICB3aXRoIG9uZSBoZWFwIGFsbG9jYXRlZCBvYmplY3QgcGVyIGVsZW1lbnQuIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gaW5zdGVhZCBjaHVua3NcbiAgIDkgb2JqZWN0cyBpbnRvIG9uZSBoZWFwIGFsbG9jYXRlZCBvYmplY3QsIHJlZHVjaW5nIGFsbG9jYXRpb24gYW5kIHBlcmZvcm1hbmNlIGNvc3RzXG4gICBhY2NvcmRpbmdseS4gTm90ZSB0aGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgbGlzdCBpcyBkb25lIGJ5IHRoZSBzdGRsaWIncyBtYXBcbiAgIGZ1bmN0aW9uLiAqKVxubGV0IHRhaWxfbWFwIHhzIH5mID1cbiAgbGV0IHJlYyByaXNlIHlzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHlzXG4gICAgfCAoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMgLT5cbiAgICAgIHJpc2UgKHkwIDo6IHkxIDo6IHkyIDo6IHkzIDo6IHk0IDo6IHk1IDo6IHk2IDo6IHk3IDo6IHk4IDo6IHlzKSBic1xuICBpblxuICBsZXQgcmVjIGRpdmUgYnMgPSBmdW5jdGlvblxuICAgIHwgeDAgOjogeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogeDYgOjogeDcgOjogeDggOjogeHMgLT5cbiAgICAgIGxldCB5MCA9IGYgeDAgaW5cbiAgICAgIGxldCB5MSA9IGYgeDEgaW5cbiAgICAgIGxldCB5MiA9IGYgeDIgaW5cbiAgICAgIGxldCB5MyA9IGYgeDMgaW5cbiAgICAgIGxldCB5NCA9IGYgeDQgaW5cbiAgICAgIGxldCB5NSA9IGYgeDUgaW5cbiAgICAgIGxldCB5NiA9IGYgeDYgaW5cbiAgICAgIGxldCB5NyA9IGYgeDcgaW5cbiAgICAgIGxldCB5OCA9IGYgeDggaW5cbiAgICAgIGRpdmUgKCh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicykgeHNcbiAgICB8IHhzIC0+IHJpc2UgKG5vbnRhaWxfbWFwIH5mIHhzKSBic1xuICBpblxuICBkaXZlIFtdIHhzXG47O1xuXG5sZXQgcmVjIGNvdW50X21hcCB+ZiBsIGN0ciA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgWyB4MSBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIFsgZjEgXVxuICB8IFsgeDE7IHgyIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIFsgZjE7IGYyIF1cbiAgfCBbIHgxOyB4MjsgeDMgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIFsgZjE7IGYyOyBmMyBdXG4gIHwgWyB4MTsgeDI7IHgzOyB4NCBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIFsgZjE7IGYyOyBmMzsgZjQgXVxuICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIGxldCBmNSA9IGYgeDUgaW5cbiAgICBmMVxuICAgIDo6IGYyXG4gICAgOjogZjNcbiAgICA6OiBmNFxuICAgIDo6IGY1XG4gICAgOjogKGlmIGN0ciA+IG1heF9ub25fdGFpbGNhbGwgdGhlbiB0YWlsX21hcCB+ZiB0bCBlbHNlIGNvdW50X21hcCB+ZiB0bCAoY3RyICsgMSkpXG47O1xuXG5sZXQgbWFwIGwgfmYgPSBjb3VudF9tYXAgfmYgbCAwXG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0ICggPj58ICkgbCBmID0gbWFwIGwgfmZcbmxldCBtYXAyX29rIGwxIGwyIH5mID0gcmV2IChyZXZfbWFwMl9vayBsMSBsMiB+ZilcbmxldCBtYXAyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjoobWFwMl9vayB+ZilcblxubGV0IG1hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJtYXAyX2V4blwiIGwxIGwyO1xuICBtYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmYgPVxuICBsZXQgcmVjIGxvb3AgbDEgbDIgbDMgYWMgPVxuICAgIG1hdGNoIGwxLCBsMiwgbDMgd2l0aFxuICAgIHwgW10sIFtdLCBbXSAtPiBhY1xuICAgIHwgeDEgOjogbDEsIHgyIDo6IGwyLCB4MyA6OiBsMyAtPiBsb29wIGwxIGwyIGwzIChmIHgxIHgyIHgzIDo6IGFjKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbG9vcCBsMSBsMiBsMyBbXVxuOztcblxubGV0IHJldl9tYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoocmV2X21hcDNfb2sgfmYpXG5cbmxldCByZXZfbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcInJldl9tYXAzX2V4blwiIGwxIGwyIGwzO1xuICByZXZfbWFwM19vayBsMSBsMiBsMyB+ZlxuOztcblxubGV0IG1hcDNfb2sgbDEgbDIgbDMgfmYgPSByZXYgKHJldl9tYXAzX29rIGwxIGwyIGwzIH5mKVxubGV0IG1hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihtYXAzX29rIH5mKVxuXG5sZXQgbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcIm1hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIG1hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgbDEgbDIgfmYgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgfmYgdCAoZiBoIDo6IGwyKVxuOztcblxubGV0IHVuemlwIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDJcbiAgICB8ICh4LCB5KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMilcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdXG47O1xuXG5sZXQgdW56aXAzIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiBsMyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDIsIGwzXG4gICAgfCAoeCwgeSwgeikgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpICh6IDo6IGwzKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW10gW11cbjs7XG5cbmxldCB6aXBfZXhuIGwxIGwyID1cbiAgdHJ5IG1hcDJfb2sgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDIgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluIHppcF9leG46ICVkIDw+ICVkXCIgKGxlbmd0aCBsMSkgKGxlbmd0aCBsMikgKClcbjs7XG5cbmxldCB6aXAgbDEgbDIgPSBtYXAyIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyXG5cbigqKiBBZGRpdGlvbmFsIGxpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmV2X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGggOjogdCAtPiBsb29wIChpICsgMSkgKGYgaSBoIDo6IGFjYykgdFxuICBpblxuICBsb29wIDAgW10gbFxuOztcblxubGV0IG1hcGkgbCB+ZiA9IHJldiAocmV2X21hcGkgbCB+ZilcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgaXRlcmkgbCB+ZiA9XG4gIGlnbm9yZVxuICAgIChmb2xkIGwgfmluaXQ6MCB+ZjooZnVuIGkgeCAtPlxuICAgICAgIGYgaSB4O1xuICAgICAgIGkgKyAxKVxuICAgICA6IGludClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgc25kIChmb2xkIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgdiAtPiBpICsgMSwgZiBpIGFjYyB2KSlcbjs7XG5cbmxldCBmaWx0ZXJpIGwgfmYgPVxuICByZXYgKGZvbGRpIGwgfmY6KGZ1biBwb3MgYWNjIHggLT4gaWYgZiBwb3MgeCB0aGVuIHggOjogYWNjIGVsc2UgYWNjKSB+aW5pdDpbXSlcbjs7XG5cbmxldCByZWR1Y2UgbCB+ZiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBoZCA6OiB0bCAtPiBTb21lIChmb2xkIH5pbml0OmhkIH5mIHRsKVxuOztcblxubGV0IHJlZHVjZV9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZCBsIH5mID1cbiAgKCogQ2FsbCB0aGUgXCJzaXplXCIgb2YgYSB2YWx1ZSB0aGUgbnVtYmVyIG9mIGxpc3QgZWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gY29tYmluZWQgaW50b1xuICAgICBpdCB2aWEgY2FsbHMgdG8gW2ZdLiAgV2UgcHJvY2VlZCBieSB1c2luZyBbZl0gdG8gY29tYmluZSBlbGVtZW50cyBpbiB0aGUgYWNjdW11bGF0b3JcbiAgICAgb2YgdGhlIHNhbWUgc2l6ZSB1bnRpbCB3ZSBjYW4ndCBjb21iaW5lIGFueSBtb3JlLCB0aGVuIGdldHRpbmcgYSBuZXcgZWxlbWVudCBmcm9tIHRoZVxuICAgICBpbnB1dCBsaXN0IGFuZCByZXBlYXRpbmcuXG5cbiAgICAgV2l0aCB0aGlzIHN0cmF0ZWd5LCBpbiB0aGUgYWNjdW11bGF0b3I6XG4gICAgIC0gd2Ugb25seSBldmVyIGhhdmUgZWxlbWVudHMgb2Ygc2l6ZXMgYSBwb3dlciBvZiB0d29cbiAgICAgLSB3ZSBuZXZlciBoYXZlIG1vcmUgdGhhbiBvbmUgZWxlbWVudCBvZiBlYWNoIHNpemVcbiAgICAgLSB0aGUgc3VtIG9mIGFsbCB0aGUgZWxlbWVudCBzaXplcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkXG5cbiAgICAgVGhlc2UgY29uZGl0aW9ucyBlbmZvcmNlIHRoYXQgbGlzdCBvZiBlbGVtZW50cyBvZiBlYWNoIHNpemUgaXMgcHJlY2lzZWx5IHRoZSBiaW5hcnlcbiAgICAgZXhwYW5zaW9uIG9mIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWQ6IGlmIHlvdSd2ZSBjb25zdW1lZCAxMyA9IDBiMTEwMVxuICAgICBlbGVtZW50cywgeW91IGhhdmUgb25lIGVsZW1lbnQgb2Ygc2l6ZSA4LCBvbmUgb2Ygc2l6ZSA0LCBhbmQgb25lIG9mIHNpemUgMS4gIEhlbmNlXG4gICAgIHdoZW4gYSBuZXcgZWxlbWVudCBjb21lcyBhbG9uZywgdGhlIG51bWJlciBvZiBjb21iaW5pbmdzIHlvdSBuZWVkIHRvIGRvIGlzIHRoZSBudW1iZXJcbiAgICAgb2YgdHJhaWxpbmcgMXMgaW4gdGhlIGJpbmFyeSBleHBhbnNpb24gb2YgW251bV0sIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBoYXZlXG4gICAgIGFscmVhZHkgZ29uZSBpbnRvIHRoZSBhY2N1bXVsYXRvci4gIFRoZSBhY2N1bXVsYXRvciBpcyBpbiBhc2NlbmRpbmcgb3JkZXIgb2Ygc2l6ZSwgc29cbiAgICAgdGhlIG5leHQgZWxlbWVudCB0byBjb21iaW5lIHdpdGggaXMgYWx3YXlzIHRoZSBoZWFkIG9mIHRoZSBsaXN0LiAqKVxuICBsZXQgcmVjIHN0ZXBfYWNjdW0gbnVtIGFjYyB4ID1cbiAgICBpZiBudW0gbGFuZCAxID0gMFxuICAgIHRoZW4geCA6OiBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogTmV3IGVsZW1lbnRzIGZyb20gbGF0ZXIgaW4gdGhlIGlucHV0IGxpc3QgZ28gb24gdGhlIGZyb250IG9mIHRoZSBhY2N1bXVsYXRvciwgc29cbiAgICAgICAgIHRoZSBhY2N1bXVsYXRvciBpcyBpbiByZXZlcnNlIG9yZGVyIHdydCB0aGUgb3JpZ2luYWwgbGlzdCBvcmRlciwgaGVuY2UgW2YgeSB4XVxuICAgICAgICAgaW5zdGVhZCBvZiBbZiB4IHldLiAqKVxuICAgICAgfCB5IDo6IHlzIC0+IHN0ZXBfYWNjdW0gKG51bSBhc3IgMSkgeXMgKGYgeSB4KSlcbiAgaW5cbiAgKCogRXhwZXJpbWVudGFsbHksIGlubGluaW5nIFtmb2xkaV0gYW5kIHVucm9sbGluZyB0aGlzIGxvb3AgYSBmZXcgdGltZXMgY2FuIHJlZHVjZVxuICAgICBydW50aW1lIGRvd24gdG8gYSB0aGlyZCBhbmQgYWxsb2NhdGlvbiB0byAxLzE2dGggb3Igc28gaW4gdGhlIG1pY3JvYmVuY2htYXJrcyBiZWxvdy5cbiAgICAgSG93ZXZlciwgaW4gbW9zdCB1c2UgY2FzZXMgW2ZdIGlzIGxpa2VseSB0byBiZSBleHBlbnNpdmUgKG90aGVyd2lzZSB3aHkgZG8geW91IGNhcmVcbiAgICAgYWJvdXQgdGhlIG9yZGVyIG9mIHJlZHVjdGlvbj8pIHNvIHRoZSBvdmVyaGVhZCBvZiB0aGlzIGZ1bmN0aW9uIGl0c2VsZiBkb2Vzbid0IHJlYWxseVxuICAgICBtYXR0ZXIuIElmIHlvdSBjb21lIHVwIHdpdGggYSB1c2UtY2FzZSB3aGVyZSBpdCBkb2VzLCB0aGVuIHRoYXQncyBzb21ldGhpbmcgeW91IG1pZ2h0XG4gICAgIHdhbnQgdG8gdHJ5OiBzZWUgaGcgbG9nIC1wciA0OWVmMDY1ZjQyOWQuICopXG4gIG1hdGNoIGZvbGRpIGwgfmluaXQ6W10gfmY6c3RlcF9hY2N1bSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gU29tZSAoZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4geCB5IC0+IGYgeSB4KSlcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWRfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2JhbGFuY2VkX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBncm91cGkgbCB+YnJlYWsgPVxuICBsZXQgZ3JvdXBzID1cbiAgICBmb2xkaSBsIH5pbml0OltdIH5mOihmdW4gaSBhY2MgeCAtPlxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gWyBbIHggXSBdXG4gICAgICB8IGN1cnJlbnRfZ3JvdXAgOjogdGwgLT5cbiAgICAgICAgaWYgYnJlYWsgaSAoaGRfZXhuIGN1cnJlbnRfZ3JvdXApIHhcbiAgICAgICAgdGhlbiBbIHggXSA6OiBjdXJyZW50X2dyb3VwIDo6IHRsICgqIHN0YXJ0IG5ldyBncm91cCAqKVxuICAgICAgICBlbHNlICh4IDo6IGN1cnJlbnRfZ3JvdXApIDo6IHRsKVxuICAgICgqIGV4dGVuZCBjdXJyZW50IGdyb3VwICopXG4gIGluXG4gIG1hdGNoIGdyb3VwcyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBsIC0+IHJldl9tYXAgbCB+ZjpyZXZcbjs7XG5cbmxldCBncm91cCBsIH5icmVhayA9IGdyb3VwaSBsIH5icmVhazooZnVuIF8geCB5IC0+IGJyZWFrIHggeSlcblxubGV0IHNvcnRfYW5kX2dyb3VwIGwgfmNvbXBhcmUgPVxuICBsIHw+IHN0YWJsZV9zb3J0IH5jb21wYXJlIHw+IGdyb3VwIH5icmVhazooZnVuIHggeSAtPiBjb21wYXJlIHggeSA8PiAwKVxuOztcblxubGV0IGNvbmNhdF9tYXAgbCB+ZiA9XG4gIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBhdXggKHJldl9hcHBlbmQgKGYgaGQpIGFjYykgdGxcbiAgaW5cbiAgYXV4IFtdIGxcbjs7XG5cbmxldCBjb25jYXRfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBhdXggY29udCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChjb250ICsgMSkgKHJldl9hcHBlbmQgKGYgY29udCBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggMCBbXSBsXG47O1xuXG5sZXQgbWVyZ2UgbDEgbDIgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgYWNjIGwyXG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBhY2MgbDFcbiAgICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY29tcGFyZSBoMSBoMiA8PSAwIHRoZW4gbG9vcCAoaDEgOjogYWNjKSB0MSBsMiBlbHNlIGxvb3AgKGgyIDo6IGFjYykgbDEgdDJcbiAgaW5cbiAgbG9vcCBbXSBsMSBsMlxuOztcblxubW9kdWxlIENhcnRlc2lhbl9wcm9kdWN0ID0gc3RydWN0XG4gICgqIFdlIGFyZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlIGV4cG9ydCBmcm9tIGZ1bmN0b3JzIHNvIHRoYXQgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5XG4gICAgIHJlYmluZCBtb3JlIGVmZmljaWVudCBsaXN0LXNwZWNpZmljIGZ1bmN0aW9ucy4gKilcblxuICBsZXQgYmluZCA9IGNvbmNhdF9tYXBcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwMiBhIGIgfmYgPSBjb25jYXRfbWFwIGEgfmY6KGZ1biB4IC0+IG1hcCBiIH5mOihmdW4geSAtPiBmIHggeSkpXG4gIGxldCByZXR1cm4geCA9IFsgeCBdXG4gIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcblxuICBvcGVuIHN0cnVjdFxuICAgIG1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBNb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGxldCBhbGwgPSBNb25hZC5hbGxcbiAgbGV0IGFsbF91bml0ID0gTW9uYWQuYWxsX3VuaXRcbiAgbGV0IGlnbm9yZV9tID0gTW9uYWQuaWdub3JlX21cbiAgbGV0IGpvaW4gPSBNb25hZC5qb2luXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG4gIGVuZFxuXG4gIGxldCBhcHBseSA9IEFwcGxpY2F0aXZlLmFwcGx5XG4gIGxldCBib3RoID0gQXBwbGljYXRpdmUuYm90aFxuICBsZXQgbWFwMyA9IEFwcGxpY2F0aXZlLm1hcDNcbiAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoQ2FydGVzaWFuX3Byb2R1Y3QgOiBNb25hZC5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbigqKiByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0X2V4biBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogdGwgLT4gbGFzdF9leG4gdGxcbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubGFzdFwiXG47O1xuXG4oKiogb3B0aW9uYWxseSByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0IGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiBTb21lIHhcbiAgfCBfIDo6IHRsIC0+IGxhc3QgdGxcbiAgfCBbXSAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGlzX3ByZWZpeCBsaXN0IH5wcmVmaXggfmVxdWFsID1cbiAgbWF0Y2ggcHJlZml4IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgaGQgOjogdGwgLT5cbiAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgIHwgW10gLT4gZmFsc2VcbiAgICAgfCBoZCcgOjogdGwnIC0+IGVxdWFsIGhkIGhkJyAmJiBpc19wcmVmaXggdGwnIH5wcmVmaXg6dGwgfmVxdWFsKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGExIDo6IHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgYTEgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhMiA6OiB0IC0+IGlmIGVxdWFsIGExIGEyIHRoZW4gU29tZSAoYTEsIGEyKSBlbHNlIGxvb3AgYTIgdFxuICAgIGluXG4gICAgbG9vcCBhMSB0XG47O1xuXG4oKiByZXR1cm5zIGxpc3Qgd2l0aG91dCBhZGphY2VudCBkdXBsaWNhdGVzICopXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgPyh3aGljaF90b19rZWVwID0gYExhc3QpIGxpc3QgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHRvX2tlZXAgYWNjdW0gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gdG9fa2VlcCA6OiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGlmIGVxdWFsIGhkIHRvX2tlZXBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdG9fa2VlcCA9XG4gICAgICAgICAgbWF0Y2ggd2hpY2hfdG9fa2VlcCB3aXRoXG4gICAgICAgICAgfCBgRmlyc3QgLT4gdG9fa2VlcFxuICAgICAgICAgIHwgYExhc3QgLT4gaGRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCB0b19rZWVwIGFjY3VtIHRsKVxuICAgICAgZWxzZSBsb29wIGhkICh0b19rZWVwIDo6IGFjY3VtKSB0bFxuICBpblxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGhkIDo6IHRsIC0+IHJldiAobG9vcCBoZCBbXSB0bClcbjs7XG5cbigqKiByZXR1cm5zIHNvcnRlZCB2ZXJzaW9uIG9mIGxpc3Qgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQgKilcbmxldCBkZWR1cF9hbmRfc29ydCBsaXN0IH5jb21wYXJlID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0ICgqIHBlcmZvcm1hbmNlIGhhY2sgKilcbiAgfCBfIC0+XG4gICAgbGV0IGVxdWFsIHggeCcgPSBjb21wYXJlIHggeCcgPSAwIGluXG4gICAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbGlzdCBpblxuICAgIHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIH5lcXVhbCBzb3J0ZWRcbjs7XG5cbmxldCBmaW5kX2FfZHVwIGwgfmNvbXBhcmUgPVxuICBsZXQgc29ydGVkID0gc29ydCBsIH5jb21wYXJlIGluXG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gTm9uZVxuICAgIHwgaGQxIDo6IChoZDIgOjogXyBhcyB0bCkgLT4gaWYgY29tcGFyZSBoZDEgaGQyID0gMCB0aGVuIFNvbWUgaGQxIGVsc2UgbG9vcCB0bFxuICBpblxuICBsb29wIHNvcnRlZFxuOztcblxubGV0IGNvbnRhaW5zX2R1cCBsc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBmaW5kX2FfZHVwIGxzdCB+Y29tcGFyZSB3aXRoXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZmluZF9hbGxfZHVwcyBsIH5jb21wYXJlID1cbiAgKCogV2UgYWRkIHRoaXMgcmV2ZXJzYWwsIHNvIHdlIGNhbiBza2lwIGEgW3Jldl0gYXQgdGhlIGVuZC4gV2UgY291bGQgc2tpcFxuICAgICBbcmV2XSBhbnl3YXkgc2luY2Ugd2UgZG9uIG5vdCBnaXZlIGFueSBvcmRlcmluZyBndWFyYW50ZWVzLCBidXQgaXQgaXNcbiAgICAgbmljZSB0byBnZXQgcmVzdWx0cyBpbiBuYXR1cmFsIG9yZGVyLiAqKVxuICBsZXQgY29tcGFyZSBhIGIgPSAtMSAqIGNvbXBhcmUgYSBiIGluXG4gIGxldCBzb3J0ZWQgPSBzb3J0IH5jb21wYXJlIGwgaW5cbiAgKCogV2FsayB0aGUgbGlzdCBhbmQgcmVjb3JkIHRoZSBmaXJzdCBvZiBlYWNoIGNvbnNlY3V0aXZlIHJ1biBvZiBpZGVudGljYWwgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBsb29wIHNvcnRlZCBwcmV2IH5hbHJlYWR5X3JlY29yZGVkIGFjYyA9XG4gICAgbWF0Y2ggc29ydGVkIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgcHJldiBoZCA8PiAwXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6ZmFsc2UgYWNjXG4gICAgICBlbHNlIGlmIGFscmVhZHlfcmVjb3JkZWRcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIGFjY1xuICAgICAgZWxzZSBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgKGhkIDo6IGFjYylcbiAgaW5cbiAgbWF0Y2ggc29ydGVkIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6ZmFsc2UgW11cbjs7XG5cbmxldCByZWMgYWxsX2VxdWFsX3RvIHQgdiB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgeCA6OiB4cyAtPiBlcXVhbCB4IHYgJiYgYWxsX2VxdWFsX3RvIHhzIHYgfmVxdWFsXG47O1xuXG5sZXQgYWxsX2VxdWFsIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gaWYgYWxsX2VxdWFsX3RvIHhzIHggfmVxdWFsIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbjs7XG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgaSA9IDAgdGhlbiBhY2N1bSBlbHNlIGxvb3AgKGkgLSAxKSAoZiAoaSAtIDEpIDo6IGFjY3VtKVxuICBpblxuICBsb29wIG4gW11cbjs7XG5cbmxldCByZXZfZmlsdGVyX21hcCBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGwgYWNjdW0gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2ggZiBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCB0bCBhY2N1bSlcbiAgaW5cbiAgbG9vcCBsIFtdXG47O1xuXG5sZXQgZmlsdGVyX21hcCBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcCBsIH5mKVxuXG5sZXQgcmV2X2ZpbHRlcl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaSBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCAoaSArIDEpIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgMCBsIFtdXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXBpIGwgfmYpXG5sZXQgZmlsdGVyX29wdCBsID0gZmlsdGVyX21hcCBsIH5mOkZuLmlkXG5cbmxldCBwYXJ0aXRpb24zX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCB0cmQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV2IGZzdCwgcmV2IHNuZCwgcmV2IHRyZFxuICAgIHwgeCA6OiB0IC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IGBGc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmQgdHJkXG4gICAgICAgfCBgU25kIHkgLT4gbG9vcCB0IGZzdCAoeSA6OiBzbmQpIHRyZFxuICAgICAgIHwgYFRyZCB5IC0+IGxvb3AgdCBmc3Qgc25kICh5IDo6IHRyZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXSBbXVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgbGV0IGYgeCA6IF8gRWl0aGVyLnQgPSBpZiBmIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHggaW5cbiAgcGFydGl0aW9uX21hcCB0IH5mXG47O1xuXG5sZXQgcGFydGl0aW9uX3Jlc3VsdCB0ID0gcGFydGl0aW9uX21hcCB0IH5mOlJlc3VsdC50b19laXRoZXJcblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAqICdiKSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2EgJ2IuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnYSlcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDIyXyA9IFwibGlzdC5tbC5Bc3NvYy50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAxNF8gX29mX2JfXzAxNV8geF9fMDIzXyAtPlxuICAgICAgbGlzdF9vZl9zZXhwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDE3XzsgYXJnMV9fMDE4XyBdIC0+XG4gICAgICAgICAgICBsZXQgcmVzMF9fMDE5XyA9IF9vZl9hX18wMTRfIGFyZzBfXzAxN19cbiAgICAgICAgICAgIGFuZCByZXMxX18wMjBfID0gX29mX2JfXzAxNV8gYXJnMV9fMDE4XyBpblxuICAgICAgICAgICAgcmVzMF9fMDE5XywgcmVzMV9fMDIwX1xuICAgICAgICAgIHwgc2V4cF9fMDIxXyAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyMl9cbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICBzZXhwX18wMjFfKVxuICAgICAgICB4X18wMjNfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ2IuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9hX18wMjRfIF9vZl9iX18wMjVfIHhfXzAzMF8gLT5cbiAgICAgIHNleHBfb2ZfbGlzdFxuICAgICAgICAoZnVuIChhcmcwX18wMjZfLCBhcmcxX18wMjdfKSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9hX18wMjRfIGFyZzBfXzAyNl9cbiAgICAgICAgICAgYW5kIHJlczFfXzAyOV8gPSBfb2ZfYl9fMDI1XyBhcmcxX18wMjdfIGluXG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzAyOF87IHJlczFfXzAyOV8gXSlcbiAgICAgICAgeF9fMDMwX1xuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIGxpc3Rfc2V4cF9ncmFtbWFyXG4gICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICBMaXN0IChDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpKSlcbiAgICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHBhaXJfb2ZfZ3JvdXAgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCAoaywgXykgOjogXyBhcyBsaXN0IC0+IGssIG1hcCBsaXN0IH5mOnNuZFxuICA7O1xuXG4gIGxldCBncm91cCBhbGlzdCB+ZXF1YWwgPVxuICAgIGdyb3VwIGFsaXN0IH5icmVhazooZnVuICh4LCBfKSAoeSwgXykgLT4gbm90IChlcXVhbCB4IHkpKSB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZSA9XG4gICAgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmU6KGZ1biAoeCwgXykgKHksIF8pIC0+IGNvbXBhcmUgeCB5KVxuICAgIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZXF1YWwga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgfmY6KGZ1biAoa2V5JywgXykgLT4gZXF1YWwga2V5IGtleScpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgKHNuZCB4KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5Bc3NvYy5maW5kX2V4bjogbm90IGZvdW5kXCIpIGluXG4gICAgbGV0IGZpbmRfZXhuIHQgfmVxdWFsIGtleSA9XG4gICAgICBtYXRjaCBmaW5kIHQga2V5IH5lcXVhbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdmFsdWUgLT4gdmFsdWVcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBmaW5kX2V4blxuICA7O1xuXG4gIGxldCBtZW0gdCB+ZXF1YWwga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgfmVxdWFsIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIF8gLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCByZW1vdmUgdCB+ZXF1YWwga2V5ID0gZmlsdGVyIHQgfmY6KGZ1biAoa2V5JywgXykgLT4gbm90IChlcXVhbCBrZXkga2V5JykpXG5cbiAgbGV0IGFkZCB0IH5lcXVhbCBrZXkgdmFsdWUgPVxuICAgICgqIHRoZSByZW1vdmUgZG9lc24ndCBjaGFuZ2UgdGhlIG1hcCBzZW1hbnRpY3MsIGJ1dCBrZWVwcyB0aGUgbGlzdCBzbWFsbCAqKVxuICAgIChrZXksIHZhbHVlKSA6OiByZW1vdmUgdCB+ZXF1YWwga2V5XG4gIDs7XG5cbiAgbGV0IGludmVyc2UgdCA9IG1hcCB0IH5mOihmdW4gKHgsIHkpIC0+IHksIHgpXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mOihmdW4gKGtleSwgdmFsdWUpIC0+IGtleSwgZiB2YWx1ZSlcbmVuZFxuXG5sZXQgc3ViIGwgfnBvcyB+bGVuID1cbiAgKCogV2UgdXNlIFtwb3MgPiBsZW5ndGggbCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IGxlbmd0aCBsXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBsZW5ndGggbCAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5zdWJcIjtcbiAgcmV2XG4gICAgKGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBlbCAtPlxuICAgICAgIGlmIGkgPj0gcG9zICYmIGkgPCBwb3MgKyBsZW4gdGhlbiBlbCA6OiBhY2MgZWxzZSBhY2MpKVxuOztcblxubGV0IHNwbGl0X24gdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXSwgdF9vcmlnXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtLCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnLCBbXSAoKiBpbiB0aGlzIGNhc2UsIHRfb3JpZyA9IHJldiBhY2N1bSAqKVxuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF9uXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgKilcbmxldCB0YWtlIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW1cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWdcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG5sZXQgcmVjIGRyb3AgdCBuID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgXyA6OiB0bCB3aGVuIG4gPiAwIC0+IGRyb3AgdGwgKG4gLSAxKVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNodW5rc19vZiBsIH5sZW5ndGggPVxuICBpZiBsZW5ndGggPD0gMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuY2h1bmtzX29mOiBFeHBlY3RlZCBsZW5ndGggPiAwLCBnb3QgJWRcIiBsZW5ndGggKCk7XG4gIGxldCByZWMgYXV4IG9mX2xlbmd0aCBhY2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBzdWJsaXN0LCBsID0gc3BsaXRfbiBsIGxlbmd0aCBpblxuICAgICAgYXV4IG9mX2xlbmd0aCAoc3VibGlzdCA6OiBhY2MpIGxcbiAgaW5cbiAgYXV4IGxlbmd0aCBbXSBsXG47O1xuXG5sZXQgc3BsaXRfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCB0IC0+IHJldiBhY2MsIHRcbiAgaW5cbiAgbG9vcCBbXSB4c1xuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X3doaWxlXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgKilcbmxldCB0YWtlX3doaWxlIHhzIH5mID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICAgIHwgXyAtPiByZXYgYWNjXG4gIGluXG4gIGxvb3AgW10geHNcbjs7XG5cbmxldCByZWMgZHJvcF93aGlsZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGRyb3Bfd2hpbGUgdGwgfmZcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBkcm9wX2xhc3QgdCA9XG4gIG1hdGNoIHJldiB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiBsc3QgLT4gU29tZSAocmV2IGxzdClcbjs7XG5cbmxldCBkcm9wX2xhc3RfZXhuIHQgPVxuICBtYXRjaCBkcm9wX2xhc3QgdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkxpc3QuZHJvcF9sYXN0X2V4bjogZW1wdHkgbGlzdFwiXG4gIHwgU29tZSBsc3QgLT4gbHN0XG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgbGlzdDEgbGlzdDIgPVxuICBpZiBpc19lbXB0eSBsaXN0MlxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBsMSBsMiBhY2N1bSA9XG4gICAgICBtYXRjaCBsMSB3aXRoXG4gICAgICB8IFtdIC0+IGFjY3VtXG4gICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgbDIgKHJldl9hcHBlbmQgKG1hcCB+ZjooZnVuIHggLT4gaGQsIHgpIGwyKSBhY2N1bSlcbiAgICBpblxuICAgIHJldiAobG9vcCBsaXN0MSBsaXN0MiBbXSkpXG47O1xuXG5sZXQgY29uY2F0IGwgPSBmb2xkX3JpZ2h0IGwgfmluaXQ6W10gfmY6YXBwZW5kXG5sZXQgY29uY2F0X25vX29yZGVyIGwgPSBmb2xkIGwgfmluaXQ6W10gfmY6KGZ1biBhY2MgbCAtPiByZXZfYXBwZW5kIGwgYWNjKVxubGV0IGNvbnMgeCBsID0geCA6OiBsXG5cbmxldCBpc19zb3J0ZWQgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8PSAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGxcbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbFxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIEAgKSA9IGFwcGVuZFxuZW5kXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgKCogc3BlY2lhbCBjYXNlcyB0byBzcGVlZCB0aGluZ3MgdXAgaW4gdHJpdmlhbCBjYXNlcyAqKVxuICB8IFtdIHwgWyBfIF0gLT4gbGlzdFxuICB8IFsgeDsgeSBdIC0+IGlmIFJhbmRvbS5TdGF0ZS5ib29sIHJhbmRvbV9zdGF0ZSB0aGVuIFsgeTsgeCBdIGVsc2UgbGlzdFxuICB8IF8gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gICAgQXJyYXlfcGVybXV0ZS5wZXJtdXRlIGFyciB+cmFuZG9tX3N0YXRlO1xuICAgIEFycmF5LnRvX2xpc3QgYXJyXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICBpZiBpc19lbXB0eSBsaXN0XG4gIHRoZW4gZmFpbHdpdGggXCJMaXN0LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgbGlzdFwiXG4gIGVsc2UgbnRoX2V4biBsaXN0IChSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIGxpc3QpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgbGlzdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHJlYyBjb21wYXJlIGNtcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICBpZiBuID0gMCB0aGVuIGNvbXBhcmUgY21wIHhzIHlzIGVsc2UgblxuOztcblxubGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX2xpc3RcblxubGV0IGVxdWFsIGVxdWFsIHQxIHQyID1cbiAgbGV0IHJlYyBsb29wIH5lcXVhbCB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCB4MSA6OiB0MSwgeDIgOjogdDIgLT4gZXF1YWwgeDEgeDIgJiYgbG9vcCB+ZXF1YWwgdDEgdDJcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCB+ZXF1YWwgdDEgdDJcbjs7XG5cbmxldCB0cmFuc3Bvc2UgPVxuICBsZXQgcmVjIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdCBjb2x1bW5fYWNjIHRyaW1tZWQgZm91bmRfZW1wdHkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gY29sdW1uX2FjYywgdHJpbW1lZCwgZm91bmRfZW1wdHlcbiAgICB8IFtdIDo6IHRsIC0+IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgY29sdW1uX2FjYyB0cmltbWVkIHRydWVcbiAgICB8ICh4IDo6IHhzKSA6OiB0bCAtPlxuICAgICAgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCAoeCA6OiBjb2x1bW5fYWNjKSAoeHMgOjogdHJpbW1lZCkgZm91bmRfZW1wdHlcbiAgaW5cbiAgbGV0IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyA9IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyBbXSBbXSBmYWxzZSBpblxuICBsZXQgcmVjIGxvb3Agcm93cyBjb2x1bW5zIGRvX3JldiA9XG4gICAgbWF0Y2ggc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIHdpdGhcbiAgICB8IFtdLCBbXSwgXyAtPiBTb21lIChyZXYgY29sdW1ucylcbiAgICB8IGNvbHVtbiwgdHJpbW1lZF9yb3dzLCBmb3VuZF9lbXB0eSAtPlxuICAgICAgaWYgZm91bmRfZW1wdHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjb2x1bW4gPSBpZiBkb19yZXYgdGhlbiByZXYgY29sdW1uIGVsc2UgY29sdW1uIGluXG4gICAgICAgIGxvb3AgdHJpbW1lZF9yb3dzIChjb2x1bW4gOjogY29sdW1ucykgKG5vdCBkb19yZXYpKVxuICBpblxuICBmdW4gdCAtPiBsb29wIHQgW10gdHJ1ZVxuOztcblxuZXhjZXB0aW9uIFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgb2YgaW50IGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNdXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgYXJnMF9fMDMxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMyXyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2ludCBhcmcwX18wMzFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGlzdC5tbC5UcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXCJcbiAgICAgICAgICA7IHJlczBfXzAzMl9cbiAgICAgICAgICBdXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHRyYW5zcG9zZV9leG4gbCA9XG4gIG1hdGNoIHRyYW5zcG9zZSBsIHdpdGhcbiAgfCBTb21lIGwgLT4gbFxuICB8IE5vbmUgLT4gcmFpc2UgKFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgKG1hcCBsIH5mOmxlbmd0aCkpXG47O1xuXG5sZXQgaW50ZXJzcGVyc2UgdCB+c2VwID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+IHggOjogZm9sZF9yaWdodCB4cyB+aW5pdDpbXSB+ZjooZnVuIHkgYWNjIC0+IHNlcCA6OiB5IDo6IGFjYylcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbmxldCBpc19zdWZmaXggbGlzdCB+c3VmZml4IH5lcXVhbDplcXVhbF9lbHQgPVxuICBsZXQgbGlzdF9sZW4gPSBsZW5ndGggbGlzdCBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGlzdF9sZW4gPj0gc3VmZml4X2xlbiAmJiBlcXVhbCBlcXVhbF9lbHQgKGRyb3AgbGlzdCAobGlzdF9sZW4gLSBzdWZmaXhfbGVuKSkgc3VmZml4XG47O1xuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbSW5mb10sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gYXMgbWFueSBwbGFjZXMgYXMgcG9zc2libGUuIFBsZWFzZSBhdm9pZFxuICAgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvX2ludGZcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRXhuIG9mIGV4blxuICAgIHwgU2V4cCBvZiBTZXhwLnRcbiAgICB8IFRhZ19zZXhwIG9mIHN0cmluZyAqIFNleHAudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC50IG9wdGlvblxuICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCByZWMgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBhcmcwX18wMDFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDJfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJDb3VsZF9ub3RfY29uc3RydWN0XCI7IHJlczBfXzAwMl8gXVxuICAgICAgfCBTdHJpbmcgYXJnMF9fMDAzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA0XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RyaW5nXCI7IHJlczBfXzAwNF8gXVxuICAgICAgfCBFeG4gYXJnMF9fMDA1XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA2XyA9IHNleHBfb2ZfZXhuIGFyZzBfXzAwNV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhuXCI7IHJlczBfXzAwNl8gXVxuICAgICAgfCBTZXhwIGFyZzBfXzAwN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwOF8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDA4XyBdXG4gICAgICB8IFRhZ19zZXhwIChhcmcwX18wMDlfLCBhcmcxX18wMTBfLCBhcmcyX18wMTFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwOV9cbiAgICAgICAgYW5kIHJlczFfXzAxM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMTBfXG4gICAgICAgIGFuZCByZXMyX18wMTRfID0gc2V4cF9vZl9vcHRpb24gU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBhcmcyX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3NleHBcIjsgcmVzMF9fMDEyXzsgcmVzMV9fMDEzXzsgcmVzMl9fMDE0XyBdXG4gICAgICB8IFRhZ190IChhcmcwX18wMTVfLCBhcmcxX18wMTZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxNV9cbiAgICAgICAgYW5kIHJlczFfXzAxOF8gPSBzZXhwX29mX3QgYXJnMV9fMDE2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfdFwiOyByZXMwX18wMTdfOyByZXMxX18wMThfIF1cbiAgICAgIHwgVGFnX2FyZyAoYXJnMF9fMDE5XywgYXJnMV9fMDIwXywgYXJnMl9fMDIxXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTlfXG4gICAgICAgIGFuZCByZXMxX18wMjNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDIwX1xuICAgICAgICBhbmQgcmVzMl9fMDI0XyA9IHNleHBfb2ZfdCBhcmcyX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX2FyZ1wiOyByZXMwX18wMjJfOyByZXMxX18wMjNfOyByZXMyX18wMjRfIF1cbiAgICAgIHwgT2ZfbGlzdCAoYXJnMF9fMDI1XywgYXJnMV9fMDI2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX2ludCBhcmcwX18wMjVfXG4gICAgICAgIGFuZCByZXMxX18wMjhfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdCBhcmcxX18wMjZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX2xpc3RcIjsgcmVzMF9fMDI3XzsgcmVzMV9fMDI4XyBdXG4gICAgICB8IFdpdGhfYmFja3RyYWNlIChhcmcwX18wMjlfLCBhcmcxX18wMzBfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMxXyA9IHNleHBfb2ZfdCBhcmcwX18wMjlfXG4gICAgICAgIGFuZCByZXMxX18wMzJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMV9fMDMwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJXaXRoX2JhY2t0cmFjZVwiOyByZXMwX18wMzFfOyByZXMxX18wMzJfIF1cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCByZWMgdG9fc3RyaW5nc19odW0gdCBhYyA9XG4gICAgKCogV2UgdXNlIFtTZXhwLnRvX3N0cmluZ19tYWNoXSwgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBpbXBsZW1lbnRpbmdcbiAgICAgICBbdG9fc3RyaW5nc19odW1dLCBiZWNhdXNlIHdlIHdhbnQgdGhlIGluZm8gdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUsIGFuZCBvbmNlIHdlJ3ZlXG4gICAgICAgaGFkIHRvIHJlc29ydCB0byBzZXhwcywgdGhlIG1lc3NhZ2UgaXMgZ29pbmcgdG8gc3RhcnQgbm90IGxvb2tpbmcgc28gcHJldHR5XG4gICAgICAgYW55d2F5LiAqKVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBzZXhwIC0+XG4gICAgICBcImNvdWxkIG5vdCBjb25zdHJ1Y3QgaW5mbzogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIChFeG4uc2V4cF9vZl90IGV4bikgOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIF8pIC0+IHRhZyA6OiBcIjogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiB0YWcgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBib2R5IGVsc2UgdGFnIDo6IFwiOiBcIiA6OiBib2R5XG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgdG9fc3RyaW5nc19odW0gdCAoXCJcXG5CYWNrdHJhY2U6XFxuXCIgOjogYmFja3RyYWNlIDo6IGFjKVxuICAgIHwgT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIHRzKSAtPlxuICAgICAgbGV0IHRzID1cbiAgICAgICAgbWF0Y2ggdHJ1bmNfYWZ0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHNcbiAgICAgICAgfCBTb21lIG1heCAtPlxuICAgICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggdHMgaW5cbiAgICAgICAgICBpZiBuIDw9IG1heFxuICAgICAgICAgIHRoZW4gdHNcbiAgICAgICAgICBlbHNlIExpc3QudGFrZSB0cyBtYXggQCBbIFN0cmluZyAoUHJpbnRmLnNwcmludGYgXCJhbmQgJWQgbW9yZSBpbmZvXCIgKG4gLSBtYXgpKSBdXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+XG4gICAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKGlmIExpc3QuaXNfZW1wdHkgYWMgdGhlbiBhYyBlbHNlIFwiOyBcIiA6OiBhYykpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gU3RyaW5nLmNvbmNhdCAodG9fc3RyaW5nc19odW0gdCBbXSlcblxuICBsZXQgcmVjIHRvX3NleHBzX2h1bSB0IGFjID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgXyBhcyB0IC0+IHNleHBfb2ZfdCB0IDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IEF0b20gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IEV4bi5zZXhwX29mX3QgZXhuIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgaGVyZSkgLT5cbiAgICAgIExpc3RcbiAgICAgICAgKEF0b20gdGFnXG4gICAgICAgICA6OiBzZXhwXG4gICAgICAgICA6OlxuICAgICAgICAgKG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBoZXJlIC0+IFsgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlIF0pKVxuICAgICAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IExpc3QgKEF0b20gdGFnIDo6IHRvX3NleHBzX2h1bSB0IFtdKSA6OiBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBzZXhwIDo6IHRvX3NleHBzX2h1bSB0IFtdIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBMaXN0IGJvZHkgOjogYWMgZWxzZSBMaXN0IChBdG9tIHRhZyA6OiBib2R5KSA6OiBhY1xuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIFNleHAuTGlzdCBbIHRvX3NleHBfaHVtIHQ7IFNleHAuQXRvbSBiYWNrdHJhY2UgXSA6OiBhY1xuICAgIHwgT2ZfbGlzdCAoXywgdHMpIC0+XG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT4gdG9fc2V4cHNfaHVtIHQgYWMpXG5cbiAgYW5kIHRvX3NleHBfaHVtIHQgPVxuICAgIG1hdGNoIHRvX3NleHBzX2h1bSB0IFtdIHdpdGhcbiAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICB8IHNleHBzIC0+IFNleHAuTGlzdCBzZXhwc1xuICA7O1xuXG4gICgqIFdlIHVzZSBbcHJvdGVjdF0gdG8gZ3VhcmQgYWdhaW5zdCBleGNlcHRpb25zIHJhaXNlZCBieSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9ucywgc29cbiAgICAgdGhhdCBmYWlsdXJlIHRvIHByb2R1Y2Ugb25lIHBhcnQgb2YgYW4gaW5mbyBkb2Vzbid0IGludGVyZmVyZSB3aXRoIG90aGVyIHBhcnRzLiAqKVxuICBsZXQgcHJvdGVjdCBmID1cbiAgICB0cnkgZiAoKSB3aXRoXG4gICAgfCBleG4gLT4gQ291bGRfbm90X2NvbnN0cnVjdCAoRXhuLnNleHBfb2ZfdCBleG4pXG4gIDs7XG5cbiAgbGV0IG9mX2luZm8gaW5mbyA9IHByb3RlY3QgKGZ1biAoKSAtPiBMYXp5LmZvcmNlIGluZm8pXG4gIGxldCB0b19pbmZvIHQgPSBsYXp5IHRcbmVuZFxuXG5vcGVuIE1lc3NhZ2VcblxudHlwZSB0ID0gTWVzc2FnZS50IExhenkudFxuXG5sZXQgaW52YXJpYW50IF8gPSAoKVxubGV0IHRvX21lc3NhZ2UgPSBNZXNzYWdlLm9mX2luZm9cbmxldCBvZl9tZXNzYWdlID0gTWVzc2FnZS50b19pbmZvXG5cbigqIEl0IGlzIE9LIHRvIHVzZSBbTWVzc2FnZS50b19zZXhwX2h1bV0sIHdoaWNoIGlzIG5vdCBzdGFibGUsIGJlY2F1c2UgW3Rfb2Zfc2V4cF0gYmVsb3dcbiAgIGNhbiBoYW5kbGUgYW55IHNleHAuICopXG5sZXQgc2V4cF9vZl90IHQgPSBNZXNzYWdlLnRvX3NleHBfaHVtICh0b19tZXNzYWdlIHQpXG5sZXQgdF9vZl9zZXhwIHNleHAgPSBsYXp5IChNZXNzYWdlLlNleHAgc2V4cClcbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHsgdW50eXBlZCA9IEFueSBcIkluZm8udFwiIH1cbmxldCBjb21wYXJlIHQxIHQyID0gU2V4cC5jb21wYXJlIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgZXF1YWwgdDEgdDIgPSBTZXhwLmVxdWFsIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFNleHAuaGFzaF9mb2xkX3Qgc3RhdGUgKHNleHBfb2ZfdCB0KVxubGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcblxubGV0IHRvX3N0cmluZ19odW0gdCA9XG4gIG1hdGNoIHRvX21lc3NhZ2UgdCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gc1xuICB8IG1lc3NhZ2UgLT4gU2V4cC50b19zdHJpbmdfaHVtIChNZXNzYWdlLnRvX3NleHBfaHVtIG1lc3NhZ2UpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBNZXNzYWdlLnRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCAodG9fbWVzc2FnZSB0KVxubGV0IHRvX3N0cmluZ19tYWNoIHQgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX3QgdClcbmxldCBvZl9sYXp5IGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3NleHAgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTZXhwIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3QgbGF6eV90ID0gTGF6eS5qb2luIGxhenlfdFxubGV0IG9mX3N0cmluZyBtZXNzYWdlID0gTGF6eS5mcm9tX3ZhbCAoU3RyaW5nIG1lc3NhZ2UpXG5sZXQgY3JlYXRlZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgb2Zfc3RyaW5nIGZvcm1hdFxubGV0IG9mX3RodW5rIGYgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChmICgpKSkpXG5cbmxldCBjcmVhdGUgP2hlcmUgP3N0cmljdCB0YWcgeCBzZXhwX29mX3ggPVxuICBtYXRjaCBzdHJpY3Qgd2l0aFxuICB8IE5vbmUgLT4gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSkpXG4gIHwgU29tZSAoKSAtPiBvZl9tZXNzYWdlIChUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpXG47O1xuXG5sZXQgY3JlYXRlX3Mgc2V4cCA9IExhenkuZnJvbV92YWwgKFNleHAgc2V4cClcbmxldCB0YWcgdCB+dGFnID0gbGF6eSAoVGFnX3QgKHRhZywgdG9fbWVzc2FnZSB0KSlcblxubGV0IHRhZ19zX2xhenkgdCB+dGFnID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKFwiXCIsIExhenkuZm9yY2UgdGFnLCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCB0YWdfcyB0IH50YWcgPSB0YWdfc19sYXp5IHQgfnRhZzooTGF6eS5mcm9tX3ZhbCB0YWcpXG5cbmxldCB0YWdfYXJnIHQgdGFnIHggc2V4cF9vZl94ID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKHRhZywgc2V4cF9vZl94IHgsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IG9mX2xpc3QgP3RydW5jX2FmdGVyIHRzID0gbGF6eSAoT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIExpc3QubWFwIHRzIH5mOnRvX21lc3NhZ2UpKVxuXG5leGNlcHRpb24gRXhuIG9mIHRcblxubGV0ICgpID1cbiAgKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZVxuICAgICBbZXhjZXB0aW9uIEV4biBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXSAuLi4gW0BAQGVuZF1dIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmFcbiAgICAgd3JhcHBpbmcgb2YgXCIoRXhuIC4uLilcIi4gKilcbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4bl0gKGZ1bmN0aW9uXG4gICAgfCBFeG4gdCAtPiBzZXhwX29mX3QgdFxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgdG9fZXhuIHQgPVxuICBpZiBub3QgKExhenkuaXNfdmFsIHQpXG4gIHRoZW4gRXhuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTGF6eS5mb3JjZSB0IHdpdGhcbiAgICB8IE1lc3NhZ2UuRXhuIGV4biAtPiBleG5cbiAgICB8IF8gLT4gRXhuIHQpXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID1cbiAgbGV0IGJhY2t0cmFjZSA9XG4gICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBgR2V0IC0+IFNvbWUgKENhbWwuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgICB8IFNvbWUgKGBUaGlzIHMpIC0+IFNvbWUgc1xuICBpblxuICBtYXRjaCBleG4sIGJhY2t0cmFjZSB3aXRoXG4gIHwgRXhuIHQsIE5vbmUgLT4gdFxuICB8IEV4biB0LCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAodG9fbWVzc2FnZSB0LCBiYWNrdHJhY2UpKVxuICB8IF8sIE5vbmUgLT4gTGF6eS5mcm9tX3ZhbCAoTWVzc2FnZS5FeG4gZXhuKVxuICB8IF8sIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlIChTZXhwIChFeG4uc2V4cF9vZl90IGV4biksIGJhY2t0cmFjZSkpXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkluZm9cIlxuICAgIGxldCBwcCBwcGYgdCA9IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZ19odW0gdClcbiAgZW5kKVxuXG5tb2R1bGUgSW50ZXJuYWxfcmVwciA9IE1lc3NhZ2VcblxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbRXJyb3JdIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gdmFyaW91cyBwbGFjZXMuICBQbGVhc2UgYXZvaWQgYWRkaW5nIG5ld1xuICAgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5mb1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQW55IFwiRXJyb3IudFwiIH1cbmxldCByYWlzZSB0ID0gcmFpc2UgKHRvX2V4biB0KVxubGV0IHJhaXNlX3Mgc2V4cCA9IHJhaXNlIChjcmVhdGVfcyBzZXhwKVxubGV0IHRvX2luZm8gdCA9IHRcbmxldCBvZl9pbmZvIHQgPSB0XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXJyb3JcIlxuICAgIGxldCBwcCA9IHBwXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnZhcmlhbnRfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubGV0IGludmFyaWFudCBoZXJlIHQgc2V4cF9vZl90IGYgOiB1bml0ID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiXCIsIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgaGVyZVxuICAgICAgICAgOyBcImV4blwiLCBzZXhwX29mX2V4biBleG5cbiAgICAgICAgIDsgXCJcIiwgc2V4cF9vZl90IHRcbiAgICAgICAgIF0pXG47O1xuXG5sZXQgY2hlY2tfZmllbGQgdCBmIGZpZWxkID1cbiAgdHJ5IGYgKEZpZWxkLmdldCBmaWVsZCB0KSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJwcm9ibGVtIHdpdGggZmllbGRcIlxuICAgICAgICAgWyBcImZpZWxkXCIsIHNleHBfb2Zfc3RyaW5nIChGaWVsZC5uYW1lIGZpZWxkKTsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuIF0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuICBSZXN1bHQgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgUmVzdWx0XG4gIGVuZFxuICB3aXRoIG1vZHVsZSBFcnJvciA6PSBSZXN1bHQuRXJyb3IpXG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnRcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+IFJlc3VsdC5jb21wYXJlIF9jbXBfX2EgRXJyb3IuY29tcGFyZSBhX18wMDFfIGJfXzAwMl9cbjs7XG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMDdfIGJfXzAwOF8gLT4gUmVzdWx0LmVxdWFsIF9jbXBfX2EgRXJyb3IuZXF1YWwgYV9fMDA3XyBiX18wMDhfXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgOlxuICAnYS5cbiAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAtPiAnYSB0XG4gIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2EgaHN2IGFyZyAtPiBSZXN1bHQuaGFzaF9mb2xkX3QgX2hhc2hfZm9sZF9hIEVycm9yLmhhc2hfZm9sZF90IGhzdiBhcmdcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAxM18geF9fMDE1XyAtPiBSZXN1bHQudF9vZl9zZXhwIF9vZl9hX18wMTNfIEVycm9yLnRfb2Zfc2V4cCB4X18wMTVfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMTZfIHhfXzAxN18gLT4gUmVzdWx0LnNleHBfb2ZfdCBfb2ZfYV9fMDE2XyBFcnJvci5zZXhwX29mX3QgeF9fMDE3X1xuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVzdWx0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIgRXJyb3IudF9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEVycm9yIGVycm9yIC0+IEVycm9yLmludmFyaWFudCBlcnJvclxuOztcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBSZXN1bHQuY29tYmluZSBmIHggfm9rOihmdW4gZiB4IC0+IGYgeCkgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBvayA9IFJlc3VsdC5va1xubGV0IGlzX29rID0gUmVzdWx0LmlzX29rXG5sZXQgaXNfZXJyb3IgPSBSZXN1bHQuaXNfZXJyb3JcblxubGV0IHRyeV93aXRoID8oYmFja3RyYWNlID0gZmFsc2UpIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4gP2JhY2t0cmFjZTooaWYgYmFja3RyYWNlIHRoZW4gU29tZSBgR2V0IGVsc2UgTm9uZSkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/YmFja3RyYWNlIGYgPSBqb2luICh0cnlfd2l0aCA/YmFja3RyYWNlIGYpXG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGVyciAtPiBFcnJvci5yYWlzZSBlcnJcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBFcnJvciAoRXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxuXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlID0gZnVuY3Rpb25cbiAgfCBPayBfIGFzIHogLT4gelxuICB8IEVycm9yIGV4biAtPiBvZl9leG4gP2JhY2t0cmFjZSBleG5cbjs7XG5cbmxldCBlcnJvciA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBFcnJvciAoRXJyb3IuY3JlYXRlID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBlcnJvcl9zIHNleHAgPSBFcnJvciAoRXJyb3IuY3JlYXRlX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbWVzc2FnZSA9IEVycm9yIChFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSlcbmxldCBlcnJvcmYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihmdW4gZSAtPiBFcnJvci50YWdfYXJnIGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIHMgPSBlcnJvciBcInVuaW1wbGVtZW50ZWRcIiBzIHNleHBfb2Zfc3RyaW5nXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IFJlc3VsdC5tYXBfZXJyb3IgKFJlc3VsdC5jb21iaW5lX2Vycm9ycyBsKSB+ZjpFcnJvci5vZl9saXN0XG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gUmVzdWx0Lm1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBsZXQgb2ssIGVycnMgPSBMaXN0LnBhcnRpdGlvbl9tYXAgbCB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gIG1hdGNoIG9rIHdpdGhcbiAgfCBbXSAtPiBFcnJvciAoRXJyb3Iub2ZfbGlzdCBlcnJzKVxuICB8IF8gLT4gT2sgb2tcbjs7XG5cbmxldCBmaW5kX29rIGwgPVxuICBtYXRjaCBMaXN0LmZpbmRfbWFwIGwgfmY6UmVzdWx0Lm9rIHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBPayBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgIG1hdGNoIGYgZWx0IHdpdGhcbiAgICAgICAgICAgIHwgT2sgXyBhcyB4IC0+IHJldHVybiB4XG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSkpXG47O1xuXG5sZXQgbWFwID0gUmVzdWx0Lm1hcFxubGV0IGl0ZXIgPSBSZXN1bHQuaXRlclxubGV0IGl0ZXJfZXJyb3IgPSBSZXN1bHQuaXRlcl9lcnJvclxuIiwiKCogVGhpcyBpcyBicm9rZW4gb2ZmIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBTaWduIGFuZCBDb21wYXJhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOZWdcbiAgfCBaZXJvXG4gIHwgUG9zXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbjAubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgc2V4cF9fMDAyXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3MgXSA6IHQgbGlzdClcblxuW0BAQGVuZF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xXG4gIHwgWmVybyAtPiAwXG4gIHwgUG9zIC0+IDFcbjs7XG5cbmxldCBfID0gaGFzaFxuXG4oKiBJZ25vcmUgdGhlIGhhc2ggZnVuY3Rpb24gcHJvZHVjZWQgYnkgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2hdICopXG5sZXQgaGFzaCA9IHRvX2ludFxubGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25cIlxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBOZWcgZWxzZSBpZiBuID0gMCB0aGVuIFplcm8gZWxzZSBQb3NcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gVFxuXG4gIGxldCBpc19wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPiAwXG4gIGxldCBpc19ub25fbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID49IDBcbiAgbGV0IGlzX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8IDBcbiAgbGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPD0gMFxuICBsZXQgc2lnbiB0ID0gU2lnbjAub2ZfaW50IChjb21wYXJlIHQgemVybylcbmVuZFxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIFBvbHlcbiAgZW5kXG5cbiAgaW5jbHVkZSBQb2x5XG5cbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlKVxuICBlbmRcblxuICBpbmNsdWRlIENcbmVuZFxuXG5sZXQgZ3QgY21wIGEgYiA9IGNtcCBhIGIgPiAwXG5sZXQgbHQgY21wIGEgYiA9IGNtcCBhIGIgPCAwXG5sZXQgZ2VxIGNtcCBhIGIgPSBjbXAgYSBiID49IDBcbmxldCBsZXEgY21wIGEgYiA9IGNtcCBhIGIgPD0gMFxubGV0IGVxdWFsIGNtcCBhIGIgPSBjbXAgYSBiID0gMFxubGV0IG5vdF9lcXVhbCBjbXAgYSBiID0gY21wIGEgYiA8PiAwXG5sZXQgbWluIGNtcCB0IHQnID0gaWYgbGVxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5sZXQgbWF4IGNtcCB0IHQnID0gaWYgZ2VxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5cbm1vZHVsZSBJbmZpeCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogSW5maXggd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGxldCAoID4gKSBhIGIgPSBndCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDwgKSBhIGIgPSBsdCBULmNvbXBhcmUgYSBiXG4gIGxldCAoID49ICkgYSBiID0gZ2VxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD0gKSBhIGIgPSBsZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA9ICkgYSBiID0gZXF1YWwgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PiApIGEgYiA9IG5vdF9lcXVhbCBULmNvbXBhcmUgYSBiXG5lbmRcblxubW9kdWxlIFBvbHltb3JwaGljX2NvbXBhcmUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXggKFQpXG5cbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0IG1pbiB0IHQnID0gbWluIGNvbXBhcmUgdCB0J1xuICBsZXQgbWF4IHQgdCcgPSBtYXggY29tcGFyZSB0IHQnXG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmF0b3IuY29tcGFyZVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFBvbHltb3JwaGljX2NvbXBhcmUgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgdCB0JyA9IGNvbXBhcmUgdCcgdFxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgICAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgICAgIFtAQEBlbmRdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuKCogY29tcGFyZSBbeF0gYW5kIFt5XSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBmdW5jdGlvbnMgaW4gdGhlIGxpc3QgW2NtcHNdICopXG5sZXQgbGV4aWNvZ3JhcGhpYyBjbXBzIHggeSA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBjbXAgOjogY21wcyAtPlxuICAgICAgbGV0IHJlcyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIHJlcyA9IDAgdGhlbiBsb29wIGNtcHMgZWxzZSByZXNcbiAgICB8IFtdIC0+IDBcbiAgaW5cbiAgbG9vcCBjbXBzXG47O1xuXG5sZXQgbGlmdCBjbXAgfmYgeCB5ID0gY21wIChmIHgpIChmIHkpXG5sZXQgcmV2ZXJzZSBjbXAgeCB5ID0gY21wIHkgeFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaGFibGUuS2V5ICopXG5tb2R1bGUgdHlwZSBLZXkgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cblxuICAoKiogVmFsdWVzIHJldHVybmVkIGJ5IFtoYXNoXSBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4gIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpbiB0aGVcbiAgICAgIGNhc2UgdGhhdCBbaGFzaF0gcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLiAqKVxuICB2YWwgaGFzaCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIEhhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgKCoqIFRoaXMgZnVuY3Rpb24gaXMgc291bmQgYnV0IG5vdCBjb21wbGV0ZSwgbWVhbmluZyB0aGF0IGlmIGl0IHJldHVybnMgW3RydWVdIHRoZW4gaXQnc1xuICAgICAgc2FmZSB0byB1c2UgdGhlIHR3byBpbnRlcmNoYW5nZWFibHkuICBJZiBpdCdzIFtmYWxzZV0sIHlvdSBoYXZlIG5vIGd1YXJhbnRlZXMuICBGb3JcbiAgICAgIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgID4gdXRvcFxuICAgICAgICBvcGVuIENvcmU7O1xuICAgICAgICBsZXQgZXF1YWwgKGEgOiAnYSBIYXNodGJsX2ludGYuSGFzaGFibGUudCkgYiA9XG4gICAgICAgICAgcGh5c19lcXVhbCBhIGJcbiAgICAgICAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICAgICAgICA7O1xuICAgICAgICBsZXQgYSA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGxldCBiID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgZXF1YWwgYSBiOzsgICgqIGZhbHNlPyEgKilcbiAgICAgIF19XG4gICopXG4gIGxldCBlcXVhbCBhIGIgPVxuICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgaGFzaF9wYXJhbSA9IENhbWwuSGFzaHRibC5oYXNoX3BhcmFtXG4gIGxldCBoYXNoID0gQ2FtbC5IYXNodGJsLmhhc2hcbiAgbGV0IHBvbHkgPSB7IGhhc2g7IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIH1cblxuICBsZXQgb2Zfa2V5ICh0eXBlIGEpIChtb2R1bGUgS2V5IDogS2V5IHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIHsgaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICA7O1xuXG4gIGxldCB0b19rZXkgKHR5cGUgYSkgeyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQgOiBLZXlcbiAgICAgIHdpdGggdHlwZSB0ID0gYSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEhhc2hhYmxlXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlID0gc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEhhc2hhYmxlLnQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBwb2x5IDogJ2EgdFxuICB2YWwgb2Zfa2V5IDogKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSkgLT4gJ2EgdFxuICB2YWwgdG9fa2V5IDogJ2EgdCAtPiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKVxuICB2YWwgaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50XG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogQXJnX3dpdGhfY29tcGFyYXRvcikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGFsbCA9IChbICgpIF0gOiB0IGxpc3QpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF91bml0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF91bml0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9ICh1bml0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3VuaXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gdW5pdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBjb21wYXJlIF8gXyA9IDBcblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiKClcIiAtPiAoKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkJhc2UuVW5pdC5vZl9zdHJpbmc6ICgpIGV4cGVjdGVkXCJcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Vbml0XCJcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFQpXG5cbmxldCBpbnZhcmlhbnQgKCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXG5cbmxldCBnZXRfcG9zX2xlbiA/cG9zID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIHRyeSBSZXN1bHQuT2sgKGdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aCkgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgcyAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IGEgc2VhcmNoIGZvciB0aGUgZmlyc3QgKHJlc3AuIGxhc3QpIGVsZW1lbnRcbiAgIHNhdGlzZnlpbmcgYSBwcmVkaWNhdGUsIGFzc3VtaW5nIHRoYXQgdGhlIHByZWRpY2F0ZSBpcyBpbmNyZWFzaW5nIG9uXG4gICB0aGUgY29udGFpbmVyLCBtZWFuaW5nIHRoYXQsIGlmIHRoZSBjb250YWluZXIgaXMgW3UxLi4udW5dLCB0aGVyZSBleGlzdHMgYVxuICAgayBzdWNoIHRoYXQgcCh1MSk9Li4uLj1wKHVrKSA9IGZhbHNlIGFuZCBwKHVrKzEpPS4uLi49cCh1bik9IHRydWUuXG4gICBJZiB0aGlzIGsgPSAxIChyZXNwIG4pLCBmaW5kX2xhc3Rfbm90X3NhdGlzZnlpbmcgKHJlc3AgZmluZF9maXJzdF9zYXRpc2Z5aW5nKVxuICAgd2lsbCByZXR1cm4gTm9uZS4gKilcblxubGV0IHJlYyBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICBpZiBsbyA+IGhpXG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHByZWQgKGdldCB0IGxvKVxuICB0aGVuIFNvbWUgbG9cbiAgZWxzZSBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobG8gKyAxKSB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGEgY29udGFpbmVyIFt0XSwgYSBwcmVkaWNhdGUgW3ByZWRdIGFuZCB0d28gaW5kaWNlcyBbbG8gPCBoaV0sIHN1Y2ggdGhhdFxuICAgW3ByZWRdIGlzIGluY3JlYXNpbmcgb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXS5cblxuICAgcmV0dXJuIGEgcmFuZ2UgKGxvLCBoaSkgd2hlcmU6XG4gICAtIGxvIGFuZCBoaSBhcmUgY2xvc2UgZW5vdWdoIHRvZ2V0aGVyIGZvciBhIGxpbmVhciBzZWFyY2hcbiAgIC0gSWYgW3ByZWRdIGlzIG5vdCBjb25zdGFudGx5IFtmYWxzZV0gb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgb24gd2hpY2ggW3ByZWRdIGlzIFt0cnVlXSBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uICopXG4oKiBJbnZhcmlhbnQ6IHRoZSBmaXJzdCBlbGVtZW50IHNhdGlzZnlpbmcgW3ByZWRdLCBpZiBpdCBleGlzdHMgaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldICopXG5sZXQgcmVjIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgKCogV2FybmluZzogdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCB0ZXJtaW5hdGUgaWYgdGhlIGNvbnN0YW50IChjdXJyZW50bHkgOCkgaXNcbiAgICAgc2V0IDw9IDEgKilcbiAgaWYgaGkgLSBsbyA8PSA4XG4gIHRoZW4gbG8sIGhpXG4gIGVsc2UgKFxuICAgIGxldCBtaWQgPSBsbyArICgoaGkgLSBsbykgLyAyKSBpblxuICAgIGlmIHByZWQgKGdldCB0IG1pZClcbiAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQgaXMgYmV0d2VlbiBbbG9dIGFuZCBbbWlkXSAqKVxuICAgIHRoZW5cbiAgICAgIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpOm1pZCB+cHJlZFxuICAgICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50LCBpZiBpdCBleGlzdHMsXG4gICAgICAgICBpcyBiZXR3ZWVuIFttaWQrMV0gYW5kIFtoaV0gKilcbiAgICBlbHNlIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KG1pZCArIDEpIH5oaSB+cHJlZClcbjs7XG5cbmxldCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsbyA9IHBvcyBpblxuICBsZXQgaGkgPSBwb3MgKyBsZW4gLSAxIGluXG4gIGxldCBsbywgaGkgPSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCBpblxuICBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGFuIGFycmF5IHdpdGggc2hhcGUgW3RydWUsLi4udHJ1ZSxmYWxzZSwuLi5mYWxzZV0gKGkuZS4sIHRoZSBfcmV2ZXJzZV8gb2Ygd2hhdFxuICAgaXMgZGVzY3JpYmVkIGFib3ZlKSBhbmQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJ1ZSBvciBOb25lIGlmIHRoZXJlIGFyZSBub1xuICAgdHJ1ZSopXG5sZXQgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfnByZWQgfmdldCB+bGVuZ3RoID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgICgqIFRoZSBsYXN0IHNhdGlzZnlpbmcgaXMgdGhlIG9uZSBqdXN0IGJlZm9yZSB0aGUgZmlyc3Qgbm90IHNhdGlzZnlpbmcgKilcbiAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgfnBvcyB+bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihGbi5ub24gcHJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICgqIFRoaXMgbWVhbnMgdGhhdCBhbGwgZWxlbWVudHMgc2F0aXNmeSBwcmVkLlxuICAgICAgIFRoZXJlIGlzIGF0IGxlYXN0IGFuIGVsZW1lbnQgYXMgKGxlbiA+IDApICopXG4gICAgfCBTb21lIGkgd2hlbiBpID0gcG9zIC0+IE5vbmUgKCogbm8gZWxlbWVudCBzYXRpc2ZpZXMgcHJlZCAqKVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKGkgLSAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+Y29tcGFyZSBob3cgdiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApXG4gIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMClcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnNlZ21lbnRfb2YgaG93ID1cbiAgbGV0IGlzX2xlZnQgeCA9XG4gICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICB8IGBSaWdodCAtPiBmYWxzZVxuICBpblxuICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX2xlZnRcbiAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19yaWdodFxuOztcbiIsIigqKiBNb2R1bGUgdHlwZXMgZm9yIGEgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9uIGZvciBhIHNlcXVlbmNlLCBhbmQgZnVuY3RvcnMgZm9yIGJ1aWxkaW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgSW1wb3J0XG5cbigqKiBBbiBbSW5kZXhhYmxlXSB0eXBlIGlzIGEgZmluaXRlIHNlcXVlbmNlIG9mIGVsZW1lbnRzIGluZGV4ZWQgYnkgY29uc2VjdXRpdmUgaW50ZWdlcnNcbiAgICBbMF0gLi4uIFtsZW5ndGggdCAtIDFdLiAgW2dldF0gYW5kIFtsZW5ndGhdIG11c3QgYmUgTygxKSBmb3IgdGhlIHJlc3VsdGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSB0byBiZSBsZyhuKS4gKilcbm1vZHVsZSB0eXBlIEluZGV4YWJsZSA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gZWx0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9XG4gICAgKFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgIDsgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYExhc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICBdXG4gICAgIDogdCBsaXN0KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9vbl9sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9IChbIGBMYXN0X29uX2xlZnQ7IGBGaXJzdF9vbl9yaWdodCBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5lbmRcblxudHlwZSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBjb21wYXJlOignZWx0IC0+ICdrZXkgLT4gaW50KVxuICAtPiBXaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgLT4gJ2tleVxuICAtPiBpbnQgb3B0aW9uXG5cbnR5cGUgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IHNlZ21lbnRfb2Y6KCdlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAtPiBXaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gIC0+IGludCBvcHRpb25cblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAodCwgZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAodCwgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKCdhIHQsICdhLCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICgnYSB0LCAnYSkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCaW5hcnlfc2VhcmNoYWJsZSA9IHNpZ1xuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZSA9IEluZGV4YWJsZVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUxID0gSW5kZXhhYmxlMVxuXG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfa2V5ID0gV2hpY2hfdGFyZ2V0X2J5X2tleVxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBXaGljaF90YXJnZXRfYnlfc2VnbWVudFxuXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9ICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gIG1vZHVsZSBNYWtlIChUIDogSW5kZXhhYmxlKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IHdpdGggdHlwZSBlbHQgOj0gVC5lbHRcbiAgbW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlX2ludGZcblxubW9kdWxlIHR5cGUgQXJnID0gc2lnXG4gIHR5cGUgJ2EgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBlbHRcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBBcmcpID0gc3RydWN0XG4gIGxldCBnZXQgPSBULmdldFxuICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcblxuICBsZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+Y29tcGFyZSBob3cgdlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5zZWdtZW50X29mIGhvd1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogSW5kZXhhYmxlKSA9IE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIHR5cGUgJ2EgZWx0ID0gVC5lbHRcbiAgICB0eXBlICdhIHQgPSBULnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA9IE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTZXF1ZW5jZV9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5cbiAgICAoU3JjIDogU2VxdWVuY2VfZ2VuKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgU3JjLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBTcmMudCwgJ2EgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdW5zYWZlX2JsaXQgPSBEc3QudW5zYWZlX2JsaXRcblxuICBsZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpzcmNfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpkc3RfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihEc3QubGVuZ3RoIGRzdCk7XG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IGJsaXRvXG4gICAgICAgIH5zcmNcbiAgICAgICAgPyhzcmNfcG9zID0gMClcbiAgICAgICAgPyhzcmNfbGVuID0gU3JjLmxlbmd0aCBzcmMgLSBzcmNfcG9zKVxuICAgICAgICB+ZHN0XG4gICAgICAgID8oZHN0X3BvcyA9IDApXG4gICAgICAgICgpXG4gICAgPVxuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuOnNyY19sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gICgqIFtzdWJdIGFuZCBbc3Vib10gZW5zdXJlIHRoYXQgZXZlcnkgcG9zaXRpb24gb2YgdGhlIGNyZWF0ZWQgc2VxdWVuY2UgaXMgcG9wdWxhdGVkIGJ5XG4gICAgIGFuIGVsZW1lbnQgb2YgdGhlIHNvdXJjZSBhcnJheS4gIFRodXMgZXZlcnkgZWxlbWVudCBvZiBbZHN0XSBiZWxvdyBpcyB3ZWxsXG4gICAgIGRlZmluZWQuICopXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIGxldCBkc3QgPSBEc3QuY3JlYXRlX2xpa2UgfmxlbiBzcmMgaW5cbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gICAgc3ViXG4gICAgICBzcmNcbiAgICAgIH5wb3NcbiAgICAgIH5sZW46XG4gICAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgfCBOb25lIC0+IFNyYy5sZW5ndGggc3JjIC0gcG9zKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgYmxpdFxuICBlbmQpID1cbiAgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlMV9nZW5lcmljIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSkgPSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICh0LCB0KSBibGl0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IFNlcXVlbmNlLnRcblxuICAgIG9wZW4gU2VxdWVuY2VcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmRcblxuICBpbmNsdWRlIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0XG4gICAgKFNyYyA6IFNlcXVlbmNlKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBNYWtlX2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFNyYy50XG5cbiAgICAgIG9wZW4gU3JjXG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gRHN0LnRcblxuICAgICAgb3BlbiBEc3RcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICAgIGVuZClcblxubW9kdWxlIE1ha2VfdG9fc3RyaW5nIChUIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZClcbiAgICAoVG9fYnl0ZXMgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gVC50IHdpdGggdHlwZSBkc3QgOj0gYnl0ZXMpID1cbnN0cnVjdFxuICBvcGVuIFRvX2J5dGVzXG5cbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3ViIHNyYyB+cG9zIH5sZW4pXG4gIDs7XG5cbiAgbGV0IHN1Ym8gP3BvcyA/bGVuIHNyYyA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1Ym8gP3BvcyA/bGVuIHNyYylcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX29wdGlvblxuXG4gIGxldCBoYXNoX2ZvbGRfdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBoYXNoX2ZvbGRfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gICAgb3B0aW9uX29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBzZXhwX29mX29wdGlvblxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gb3B0aW9uX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gIHwgTm9uZVxuICB8IFNvbWUgb2YgJ2FcblxubGV0IGlzX25vbmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19zb21lID0gZnVuY3Rpb25cbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB2YWx1ZV9tYXAgbyB+ZGVmYXVsdCB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiBmIHhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbjs7XG5cbmxldCBpdGVyIG8gfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcblxubGV0IGNhbGwgeCB+ZiA9XG4gIG1hdGNoIGYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiB4XG47O1xuXG5sZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgdmFsdWVfZXhuID9oZXJlID9lcnJvciA/bWVzc2FnZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGhlcmUsIGVycm9yLCBtZXNzYWdlIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBFcnJvci5vZl9zdHJpbmcgXCJPcHRpb24udmFsdWVfZXhuIE5vbmVcIlxuICAgICAgfCBOb25lLCBOb25lLCBTb21lIG0gLT4gRXJyb3Iub2Zfc3RyaW5nIG1cbiAgICAgIHwgTm9uZSwgU29tZSBlLCBOb25lIC0+IGVcbiAgICAgIHwgTm9uZSwgU29tZSBlLCBTb21lIG0gLT4gRXJyb3IudGFnIGUgfnRhZzptXG4gICAgICB8IFNvbWUgcCwgTm9uZSwgTm9uZSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgXCJPcHRpb24udmFsdWVfZXhuXCIgcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgTm9uZSwgU29tZSBtIC0+IEVycm9yLmNyZWF0ZSBtIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIFNvbWUgZSwgXyAtPlxuICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAodmFsdWUgbWVzc2FnZSB+ZGVmYXVsdDpcIlwiKVxuICAgICAgICAgIChlLCBwKVxuICAgICAgICAgIChzZXhwX29mX3BhaXIgRXJyb3Iuc2V4cF9vZl90IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QpXG4gICAgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IHZhbHVlX29yX3RodW5rIG8gfmRlZmF1bHQgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gZGVmYXVsdCAoKVxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIHggLT4gW3wgeCB8XVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIHggLT4gWyB4IF1cbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmU6XyA9IHRcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmU6XyA9IHRcblxubGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgdmFsdWVfbWFwIHQgfmRlZmF1bHQ6TS56ZXJvIH5mXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGEnIC0+IGVxdWFsIGEgYSdcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgXyAtPiAxXG47O1xuXG5sZXQgaXNfZW1wdHkgPSBpc19ub25lXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIHggLT4gZiBpbml0IHhcbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBhIC0+IGlmIGYgYSB0aGVuIDEgZWxzZSAwXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IGlmIGYgeCB0aGVuIHQgZWxzZSBOb25lXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBlcXVhbCBmIHQgdCcgPVxuICBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHgnIC0+IGYgeCB4J1xuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzb21lIHggPSBTb21lIHhcblxubGV0IGZpcnN0X3NvbWUgeCB5ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSBfIC0+IHhcbiAgfCBOb25lIC0+IHlcbjs7XG5cbmxldCBzb21lX2lmIGNvbmQgeCA9IGlmIGNvbmQgdGhlbiBTb21lIHggZWxzZSBOb25lXG5cbmxldCBtZXJnZSBhIGIgfmYgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCB4IHwgeCwgTm9uZSAtPiB4XG4gIHwgU29tZSBhLCBTb21lIGIgLT4gU29tZSAoZiBhIGIpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHYgYXMgbyB3aGVuIGYgdiAtPiBvXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4geFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG47O1xuXG5sZXQgYXBwbHkgZiB4ID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmIC0+IG1hcCB+ZiB4XG47O1xuXG5tb2R1bGUgTW9uYWRfYXJnID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gIGxldCByZXR1cm4geCA9IFNvbWUgeFxuICBsZXQgYXBwbHkgPSBhcHBseVxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICBsZXQgYmluZCBvIH5mID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoTW9uYWRfYXJnKVxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChNb25hZF9hcmcpXG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGVcblxubW9kdWxlIE9mX3NleHBhYmxlXG4gICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUxXG4gICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMlxuICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTNcbiAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zdHJpbmdhYmxlIChNIDogU3RyaW5nYWJsZS5TKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiU2V4cGFibGUuT2Zfc3RyaW5nYWJsZS50X29mX3NleHAgZXhwZWN0ZWQgYW4gYXRvbSwgYnV0IGdvdCBhIGxpc3RcIlxuICAgICAgICBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRWl0aGVyX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgRWl0aGVyMFxuXG5sZXQgc3dhcCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBTZWNvbmQgeFxuICB8IFNlY29uZCB4IC0+IEZpcnN0IHhcbjs7XG5cbmxldCBpc19maXJzdCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiB0cnVlXG4gIHwgU2Vjb25kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19zZWNvbmQgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gZmFsc2VcbiAgfCBTZWNvbmQgXyAtPiB0cnVlXG47O1xuXG5sZXQgdmFsdWUgKEZpcnN0IHggfCBTZWNvbmQgeCkgPSB4XG5cbmxldCB2YWx1ZV9tYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gZmlyc3QgeFxuICB8IFNlY29uZCB4IC0+IHNlY29uZCB4XG47O1xuXG5sZXQgaXRlciA9IHZhbHVlX21hcFxuXG5sZXQgbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IEZpcnN0IChmaXJzdCB4KVxuICB8IFNlY29uZCB4IC0+IFNlY29uZCAoc2Vjb25kIHgpXG47O1xuXG5sZXQgZmlyc3QgeCA9IEZpcnN0IHhcbmxldCBzZWNvbmQgeCA9IFNlY29uZCB4XG5cbmxldCBlcXVhbCBlcTEgZXEyIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IGVxMSB4IHlcbiAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gZXEyIHggeVxuICB8IEZpcnN0IF8sIFNlY29uZCBfIHwgU2Vjb25kIF8sIEZpcnN0IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgZiBzID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IGYgeFxuICB8IFNlY29uZCB5IC0+IHMgeVxuOztcblxubW9kdWxlIE1ha2VfZm9jdXNlZCAoTSA6IHNpZ1xuICAgIHR5cGUgKCsnYSwgKydiKSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgdmFsIG90aGVyIDogJ2IgLT4gKF8sICdiKSB0XG4gICAgdmFsIGVpdGhlciA6ICgnYSwgJ2IpIHQgLT4gcmV0dXJuOignYSAtPiAnYykgLT4gb3RoZXI6KCdiIC0+ICdjKSAtPiAnY1xuXG4gICAgdmFsIGNvbWJpbmVcbiAgICAgIDogICgnYSwgJ2QpIHRcbiAgICAgIC0+ICgnYiwgJ2QpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICdiIC0+ICdjKVxuICAgICAgLT4gb3RoZXI6KCdkIC0+ICdkIC0+ICdkKVxuICAgICAgLT4gKCdjLCAnZCkgdFxuXG4gICAgdmFsIGJpbmQgOiAoJ2EsICdiKSB0IC0+IGY6KCdhIC0+ICgnYywgJ2IpIHQpIC0+ICgnYywgJ2IpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG4gIG9wZW4gV2l0aF9yZXR1cm5cblxuICBsZXQgbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IHJldHVybiAoZiB4KSlcblxuICBpbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcHAgPSBBcHBsaWNhdGl2ZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYXBwbHkgdDEgdDIgPSBiaW5kIHQxIH5mOihmdW4gZiAtPiBiaW5kIHQyIH5mOihmdW4geCAtPiByZXR1cm4gKGYgeCkpKVxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQXBwXG5cbiAgbGV0IGNvbWJpbmVfYWxsID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXJcbiAgICAgICAgICB0XG4gICAgICAgICAgfnJldHVybjooZnVuIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0cylcbiAgICAgICAgICB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2MgbykgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyXG4gICAgICAgICAgdFxuICAgICAgICAgIH5yZXR1cm46KGZ1biB4IC0+IHJldHVybl9sb29wIGYgKHggOjogYWNjKSB0cylcbiAgICAgICAgICB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiBvIHRzKVxuICAgIGluXG4gICAgZnVuIHRzIH5mIC0+IHJldHVybl9sb29wIGYgW10gdHNcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGxfdW5pdCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyXG4gICAgICAgICAgdFxuICAgICAgICAgIH5yZXR1cm46KGZ1biAoKSAtPiBvdGhlcl9sb29wIGYgYWNjIHRzKVxuICAgICAgICAgIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlciB0IH5yZXR1cm46KGZ1biAoKSAtPiByZXR1cm5fbG9vcCBmIHRzKSB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiBvIHRzKVxuICAgIGluXG4gICAgZnVuIHRzIH5mIC0+IHJldHVybl9sb29wIGYgdHNcbiAgOztcblxuICBsZXQgdG9fb3B0aW9uIHQgPSBlaXRoZXIgdCB+cmV0dXJuOk9wdGlvbi5zb21lIH5vdGhlcjooZnVuIF8gLT4gTm9uZSlcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBlaXRoZXIgdCB+cmV0dXJuOkZuLmlkIH5vdGhlcjooZnVuIF8gLT4gZGVmYXVsdClcblxuICBsZXQgd2l0aF9yZXR1cm4gZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByZXQgLT4gb3RoZXIgKGYgKFdpdGhfcmV0dXJuLnByZXBlbmQgcmV0IH5mOnJldHVybikpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGaXJzdCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgIGxldCByZXR1cm4gPSBmaXJzdFxuICAgIGxldCBvdGhlciA9IHNlY29uZFxuXG4gICAgbGV0IGVpdGhlciB0IH5yZXR1cm4gfm90aGVyID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IHJldHVybiB4XG4gICAgICB8IFNlY29uZCB5IC0+IG90aGVyIHlcbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKGYgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChvdGhlciB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBfIHwgXywgU2Vjb25kIHggLT4gU2Vjb25kIHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLiAqKVxuICAgICAgfCBTZWNvbmQgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBTZWNvbmQgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gc2Vjb25kXG4gICAgbGV0IG90aGVyID0gZmlyc3RcblxuICAgIGxldCBlaXRoZXIgdCB+cmV0dXJuIH5vdGhlciA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU2Vjb25kIHkgLT4gcmV0dXJuIHlcbiAgICAgIHwgRmlyc3QgeCAtPiBvdGhlciB4XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChmIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAob3RoZXIgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBfIHwgXywgRmlyc3QgeCAtPiBGaXJzdCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24sIGxpa2UgW0ZpcnN0LmJpbmRdIGFib3ZlLiAqKVxuICAgICAgfCBGaXJzdCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnZiwgJ3MpIF9laXRoZXIgPSAoJ2YsICdzKSB0ID1cbiAgICB8IEZpcnN0IG9mICdmXG4gICAgfCBTZWNvbmQgb2YgJ3NcbmVuZFxuIiwiaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lcl9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBpdGVyaSB+Zm9sZCB0IH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIH5mb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyB2IC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIHYgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpXG47O1xuXG5sZXQgY291bnRpIH5mb2xkaSB0IH5mID0gZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaSBuIGEgLT4gaWYgZiBpIGEgdGhlbiBuICsgMSBlbHNlIG4pXG5cbmxldCBleGlzdHNpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGZvcl9hbGxpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBub3QgKGYgaSB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCBmaW5kaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiAoU29tZSAoaSwgeCkpKTtcbiAgICBOb25lKVxuOztcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogc2lnXG4gICAgaW5jbHVkZSBDb250YWluZXJfaW50Zi5NYWtlX2dlbl9hcmdcblxuICAgIHZhbCBpdGVyaSA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EgdCwgJ2EgZWx0KSBpdGVyaSBdXG4gICAgdmFsIGZvbGRpIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICgnYSB0LCAnYSBlbHQsIF8pIGZvbGRpIF1cbiAgZW5kKSA6IEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb250YWluZXIuTWFrZV9nZW4gKFQpXG5cbiAgbGV0IGl0ZXJpID1cbiAgICBtYXRjaCBULml0ZXJpIHdpdGhcbiAgICB8IGBDdXN0b20gaXRlcmkgLT4gaXRlcmlcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyaSB+Zm9sZCB0IH5mXG4gIDs7XG5cbiAgbGV0IGZvbGRpID1cbiAgICBtYXRjaCBULmZvbGRpIHdpdGhcbiAgICB8IGBDdXN0b20gZm9sZGkgLT4gZm9sZGlcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+aW5pdCB+ZiAtPiBmb2xkaSB+Zm9sZCB0IH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID0gY291bnRpIH5mb2xkaSB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBleGlzdHNpIH5pdGVyaSB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gZm9yX2FsbGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRfbWFwaSB0IH5mID0gZmluZF9tYXBpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kaSB0IH5mID0gZmluZGkgfml0ZXJpIHQgfmZcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChUKVxuXG4gICgqIE5vdCBwYXJ0IG9mIFtDb250YWluZXIuR2VuZXJpY10uICopXG4gIGxldCBtZW0gPSBDLm1lbVxuXG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UwIChUKVxuXG4gICgqIE5vdCBwYXJ0IG9mIFtDb250YWluZXIuR2VuZXJpY10uICopXG4gIGxldCBtZW0gPSBDLm1lbVxuXG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgJ2EgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29udGFpbmVyX2ludGYuRXhwb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBMaXN0ID0gTGlzdDFcblxubW9kdWxlIFN0ZXAgPSBzdHJ1Y3RcbiAgKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mXG4gICAgIHRoZSBzZXF1ZW5jZSAqKVxuICB0eXBlICgnYSwgJ3MpIHQgPVxuICAgIHwgRG9uZVxuICAgIHwgU2tpcCBvZiAnc1xuICAgIHwgWWllbGQgb2YgJ2EgKiAnc1xuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAncy5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAncykgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDA5XyBzX18wMTBfKVxuICAgICAgICA6ICAoKGFfXzAwOV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDEwXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDA5Xywgc19fMDEwXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzAwMV8gX29mX3NfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkRvbmVcIlxuICAgICAgICB8IFNraXAgYXJnMF9fMDAzXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wMDRfID0gX29mX3NfXzAwMl8gYXJnMF9fMDAzXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNraXBcIjsgcmVzMF9fMDA0XyBdXG4gICAgICAgIHwgWWllbGQgKGFyZzBfXzAwNV8sIGFyZzFfXzAwNl8pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzAwN18gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMDVfXG4gICAgICAgICAgYW5kIHJlczFfXzAwOF8gPSBfb2Zfc19fMDAyXyBhcmcxX18wMDZfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiWWllbGRcIjsgcmVzMF9fMDA3XzsgcmVzMV9fMDA4XyBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5vcGVuIFN0ZXBcblxuKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgc2VxdWVuY2UgKilcbnR5cGUgK18gdCA9IFNlcXVlbmNlIDogJ3MgKiAoJ3MgLT4gKCdhLCAncykgU3RlcC50KSAtPiAnYSB0XG50eXBlICdhIHNlcXVlbmNlID0gJ2EgdFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBuZXh0X3N0ZXAgKFNlcXVlbmNlIChzLCBmKSkgPVxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgcyAtPiBTa2lwIChTZXF1ZW5jZSAocywgZikpXG4gICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIFNlcXVlbmNlIChzLCBmKSlcbiAgOztcblxuICBsZXQgZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGxvb3AgcyBuZXh0IGZpbmlzaCBmIGFjYyA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICAgIHwgU2tpcCBzIC0+IGYgYWNjIE5vbmUgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gZiBhY2MgKFNvbWUgYSkgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHQgZmluaXNoIGYgaW5pdFxuICA7O1xuZW5kXG5cbmxldCB1bmZvbGRfc3RlcCB+aW5pdCB+ZiA9IFNlcXVlbmNlIChpbml0LCBmKVxuXG5sZXQgdW5mb2xkIH5pbml0IH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6KGZ1biBzIC0+XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RlcC5Eb25lXG4gICAgfCBTb21lIChhLCBzKSAtPiBTdGVwLllpZWxkIChhLCBzKSlcbjs7XG5cbmxldCB1bmZvbGRfd2l0aCBzIH5pbml0IH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKGluaXQsIHMpXG4gICAgICAsIGZ1biAoc2VlZCwgcykgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoc2VlZCwgcylcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgICAgICAobWF0Y2ggZiBzZWVkIGEgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgc2VlZCAtPiBTa2lwIChzZWVkLCBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzZWVkKSAtPiBZaWVsZCAoYSwgKHNlZWQsIHMpKSkgKVxuOztcblxubGV0IHVuZm9sZF93aXRoX2FuZF9maW5pc2ggcyB+aW5pdCB+cnVubmluZ19zdGVwIH5pbm5lcl9maW5pc2hlZCB+ZmluaXNoaW5nX3N0ZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgSW5uZXJfcnVubmluZyAoaW5pdCwgcylcbiAgICAgICwgZnVuIHN0YXRlIC0+XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IGlubmVyX3N0YXRlIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IFNraXAgKGBJbm5lcl9maW5pc2hlZCAoaW5uZXJfZmluaXNoZWQgc3RhdGUpKVxuICAgICAgICAgICB8IFNraXAgaW5uZXJfc3RhdGUgLT4gU2tpcCAoYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkpXG4gICAgICAgICAgIHwgWWllbGQgKHgsIGlubmVyX3N0YXRlKSAtPlxuICAgICAgICAgICAgIChtYXRjaCBydW5uaW5nX3N0ZXAgc3RhdGUgeCB3aXRoXG4gICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgIHwgU2tpcCBzdGF0ZSAtPiBTa2lwIChgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSlcbiAgICAgICAgICAgICAgfCBZaWVsZCAoeSwgc3RhdGUpIC0+IFlpZWxkICh5LCBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSkpKVxuICAgICAgICB8IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSAtPlxuICAgICAgICAgIChtYXRjaCBmaW5pc2hpbmdfc3RlcCBzdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzdGF0ZSAtPiBTa2lwIChgSW5uZXJfZmluaXNoZWQgc3RhdGUpXG4gICAgICAgICAgIHwgWWllbGQgKHksIHN0YXRlKSAtPiBZaWVsZCAoeSwgYElubmVyX2ZpbmlzaGVkIHN0YXRlKSkgKVxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OmwgfmY6KGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBEb25lXG4gICAgfCB4IDo6IGwgLT4gWWllbGQgKHgsIGwpKVxuOztcblxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgdiBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+IHZcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgdiBuZXh0IGZcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBsb29wIHMgKGYgdiBhKSBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBpbml0IG5leHQgZlxuOztcblxubGV0IHRvX2xpc3RfcmV2IHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKVxuXG5cbmxldCB0b19saXN0IChTZXF1ZW5jZSAocywgbmV4dCkpID1cbiAgbGV0IHNhZmVfdG9fbGlzdCB0ID0gTGlzdC5yZXYgKHRvX2xpc3RfcmV2IHQpIGluXG4gIGxldCByZWMgdG9fbGlzdCBzIG5leHQgaSA9XG4gICAgaWYgaSA9IDBcbiAgICB0aGVuIHNhZmVfdG9fbGlzdCAoU2VxdWVuY2UgKHMsIG5leHQpKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBbXVxuICAgICAgfCBTa2lwIHMgLT4gdG9fbGlzdCBzIG5leHQgaVxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gYSA6OiB0b19saXN0IHMgbmV4dCAoaSAtIDEpKVxuICBpblxuICB0b19saXN0IHMgbmV4dCA1MDBcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF92IHN0b3BfdiA9XG4gIGxldCBzdGVwID1cbiAgICBtYXRjaCBzdG9wIHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgICB8IGBpbmNsdXNpdmUgLT4gZnVuIGkgLT4gaWYgaSA8IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgICB8IGBleGNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gICAgfCBgZXhjbHVzaXZlIC0+IGZ1biBpIC0+IGlmIGkgPD0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICBpblxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF92XG4gICAgfCBgZXhjbHVzaXZlIC0+IHN0YXJ0X3YgKyBzdHJpZGVcbiAgaW5cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6c3RlcFxuOztcblxubGV0IG9mX2xhenkgdF9sYXp5ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6dF9sYXp5IH5mOihmdW4gdF9sYXp5IC0+XG4gICAgbGV0IChTZXF1ZW5jZSAocywgbmV4dCkpID0gTGF6eS5mb3JjZSB0X2xhenkgaW5cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMgLT5cbiAgICAgIFNraXBcbiAgICAgICAgKGxldCB2ID0gU2VxdWVuY2UgKHMsIG5leHQpIGluXG4gICAgICAgICBsYXp5IHYpXG4gICAgfCBZaWVsZCAoeCwgcykgLT5cbiAgICAgIFlpZWxkXG4gICAgICAgICggeFxuICAgICAgICAsIGxldCB2ID0gU2VxdWVuY2UgKHMsIG5leHQpIGluXG4gICAgICAgICAgbGF6eSB2ICkpXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzZWVkXG4gICAgICAsIGZ1biBzZWVkIC0+XG4gICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoZiBhLCBzKSApXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGYgaSBhLCAoaSArIDEsIHMpKSApXG47O1xuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQgfmY6KGZ1biBhY2MgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGFjYyB4IGluXG4gICAgWWllbGQgKHgsIGFjYykpXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBpIGFjYyB4IGluXG4gICAgWWllbGQgKHgsIChpICsgMSwgYWNjKSkpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzZWVkXG4gICAgICAsIGZ1biBzZWVkIC0+XG4gICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGYgYSAtPiBZaWVsZCAoYSwgcylcbiAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gU2tpcCBzIClcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBtYXAgfmY6c25kIChmaWx0ZXIgKG1hcGkgdCB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpKVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBpIHMgbmV4dFxuICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgKGkgKyAxKSBzIG5leHRcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0ID0gZm9sZCB0IH5pbml0OihbXSwgMCkgfmY6KGZ1biAobCwgaSkgeCAtPiB4IDo6IGwsIGkgKyAxKVxuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIGxldCBsLCBsZW4gPSB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0IGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCB4IDo6IGwgLT5cbiAgICBsZXQgYSA9IEFycmF5LmNyZWF0ZSB+bGVuIHggaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGEuKGkpIDwtIHg7XG4gICAgICAgIGxvb3AgKGkgLSAxKSBsXG4gICAgaW5cbiAgICBsb29wIChsZW4gLSAyKSBsO1xuICAgIGFcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIGYgYSAtPiBTb21lIGFcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZlxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCBmIGkgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gbm90IChmIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gbm90IChmIGkgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gZiBhIC0+IHRydWVcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBmIGkgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+ICgpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICBmIGE7XG4gICAgICBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgXyAtPiBmYWxzZVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgYSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChiLCBfKSB3aGVuIGVxdWFsIGEgYiAtPiB0cnVlXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgYVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgYVxuOztcblxubGV0IGVtcHR5ID0gU2VxdWVuY2UgKCgpLCBmdW4gKCkgLT4gRG9uZSlcblxubGV0IGJpbmQgdCB+ZiA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSwgcmVzdCAtPlxuICAgICAgICAobWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgIHwgRG9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChlbXB0eSwgU2VxdWVuY2UgKHMsIG5leHQpKVxuICAgICAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gU2tpcCAoZiBhLCBTZXF1ZW5jZSAocywgbmV4dCkpKSlcbiAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKFNlcXVlbmNlIChzLCBuZXh0KSwgcmVzdClcbiAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCAoU2VxdWVuY2UgKHMsIG5leHQpLCByZXN0KSkpKVxuICAgIH5pbml0OihlbXB0eSwgdClcbjs7XG5cbmxldCByZXR1cm4geCA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OihTb21lIHgpIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBEb25lXG4gICAgfCBTb21lIHggLT4gWWllbGQgKHgsIE5vbmUpKVxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICBlbmQpXG5cbmxldCBudGggcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IE5vbmVcbiAgICAgIHwgU2tpcCBzIC0+IGxvb3AgaSBzIG5leHRcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGlmIHBoeXNfZXF1YWwgaSAwIHRoZW4gU29tZSBhIGVsc2UgbG9vcCAoaSAtIDEpIHMgbmV4dFxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBuIHMgbmV4dClcbjs7XG5cbmxldCBudGhfZXhuIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5udGhcIlxuICBlbHNlIChcbiAgICBtYXRjaCBudGggcyBuIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5udGhcIlxuICAgIHwgU29tZSB4IC0+IHgpXG47O1xuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IExlZnQgb2YgJ2FcbiAgICB8IFJpZ2h0IG9mICdiXG4gICAgfCBCb3RoIG9mICdhICogJ2JcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMTFfIGJfXzAxMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxMV8sIGJfXzAxMl8gd2l0aFxuICAgICAgfCBMZWZ0IF9hX18wMTNfLCBMZWZ0IF9iX18wMTRfIC0+IF9jbXBfX2EgX2FfXzAxM18gX2JfXzAxNF9cbiAgICAgIHwgTGVmdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIExlZnQgXyAtPiAxXG4gICAgICB8IFJpZ2h0IF9hX18wMTVfLCBSaWdodCBfYl9fMDE2XyAtPiBfY21wX19iIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IFJpZ2h0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgUmlnaHQgXyAtPiAxXG4gICAgICB8IEJvdGggKF9hX18wMTdfLCBfYV9fMDE5XyksIEJvdGggKF9iX18wMThfLCBfYl9fMDIwXykgLT5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2EgX2FfXzAxN18gX2JfXzAxOF8gd2l0aFxuICAgICAgICAgfCAwIC0+IF9jbXBfX2IgX2FfXzAxOV8gX2JfXzAyMF9cbiAgICAgICAgIHwgbiAtPiBuKSlcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RcbiAgICA6IHR5cGUgYSBiLlxuICAgICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAgIC0+IChhLCBiKSB0XG4gICAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgZnVuIF9oYXNoX2ZvbGRfYSBfaGFzaF9mb2xkX2IgaHN2IGFyZyAtPlxuICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgIHwgTGVmdCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gICAgICB8IFJpZ2h0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbiAgICAgIHwgQm90aCAoX2EwLCBfYTEpIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDIgaW5cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gICAgICAgIGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2ExXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2EgJ2IuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnYSlcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzA0NF8gYl9fMDQ1XylcbiAgICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDQ0XykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBiX18wNDVfKVxuICAgICAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50IC0+IChhX18wNDRfLCBiX18wNDVfKSB0KSAtPlxuICAgICAgbGV0IGVycm9yX3NvdXJjZV9fMDI1XyA9IFwic2VxdWVuY2UubWwuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudFwiIGluXG4gICAgICBmdW4gX29mX2FfXzAyMV8gX29mX2JfXzAyMl8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBfdGFnX18wMjhfKSA6OiBzZXhwX2FyZ3NfXzAyOV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAyN18gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjlfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzMF8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzFfID0gX29mX2FfXzAyMV8gYXJnMF9fMDMwXyBpblxuICAgICAgICAgICAgIExlZnQgcmVzMF9fMDMxX1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNV9cbiAgICAgICAgICAgICAgIF90YWdfXzAyOF9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMjdfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwicmlnaHRcIiB8IFwiUmlnaHRcIikgYXMgX3RhZ19fMDMzXykgOjogc2V4cF9hcmdzX18wMzRfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMzJfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDM0XyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzVfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDM2XyA9IF9vZl9iX18wMjJfIGFyZzBfXzAzNV8gaW5cbiAgICAgICAgICAgICBSaWdodCByZXMwX18wMzZfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI1X1xuICAgICAgICAgICAgICAgX3RhZ19fMDMzX1xuICAgICAgICAgICAgICAgX3NleHBfXzAzMl8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgX3RhZ19fMDM4XykgOjogc2V4cF9hcmdzX18wMzlfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMzdfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDM5XyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wNDBfOyBhcmcxX18wNDFfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDQyXyA9IF9vZl9hX18wMjFfIGFyZzBfXzA0MF9cbiAgICAgICAgICAgICBhbmQgcmVzMV9fMDQzXyA9IF9vZl9iX18wMjJfIGFyZzFfXzA0MV8gaW5cbiAgICAgICAgICAgICBCb3RoIChyZXMwX18wNDJfLCByZXMxX18wNDNfKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNV9cbiAgICAgICAgICAgICAgIF90YWdfXzAzOF9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzdfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicmlnaHRcIiB8IFwiUmlnaHRcIikgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjRfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAyNF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI0X1xuICAgICAgICB8IHNleHBfXzAyNF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjRfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ2IuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzA1Nl8gYl9fMDU3XylcbiAgICAgICAgOiAgKChhX18wNTZfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzA1N18gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzA1Nl8sIGJfXzA1N18pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wNDZfIF9vZl9iX18wNDdfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTGVmdCBhcmcwX18wNDhfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA0OV8gPSBfb2ZfYV9fMDQ2XyBhcmcwX18wNDhfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyByZXMwX18wNDlfIF1cbiAgICAgICAgfCBSaWdodCBhcmcwX18wNTBfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1MV8gPSBfb2ZfYl9fMDQ3XyBhcmcwX18wNTBfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgcmVzMF9fMDUxXyBdXG4gICAgICAgIHwgQm90aCAoYXJnMF9fMDUyXywgYXJnMV9fMDUzXykgLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDU0XyA9IF9vZl9hX18wNDZfIGFyZzBfXzA1Ml9cbiAgICAgICAgICBhbmQgcmVzMV9fMDU1XyA9IF9vZl9iX18wNDdfIGFyZzFfXzA1M18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJCb3RoXCI7IHJlczBfXzA1NF87IHJlczFfXzA1NV8gXVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiQm90aFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtZXJnZV93aXRoX2R1cGxpY2F0ZXMgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpIH5jb21wYXJlID1cbiAgbGV0IHVuc2hhZG93ZWRfY29tcGFyZSA9IGNvbXBhcmUgaW5cbiAgbGV0IG9wZW4gTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgaW5cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICAgIHwgKFlpZWxkIChhLCBzMScpIGFzIHMxKSwgKFlpZWxkIChiLCBzMicpIGFzIHMyKSAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSB1bnNoYWRvd2VkX2NvbXBhcmUgYSBiIGluXG4gICAgICBpZiBjb21wYXJpc29uIDwgMFxuICAgICAgdGhlbiBZaWVsZCAoTGVmdCBhLCAoU2tpcCBzMScsIHMyKSlcbiAgICAgIGVsc2UgaWYgY29tcGFyaXNvbiA9IDBcbiAgICAgIHRoZW4gWWllbGQgKEJvdGggKGEsIGIpLCAoU2tpcCBzMScsIFNraXAgczInKSlcbiAgICAgIGVsc2UgWWllbGQgKFJpZ2h0IGIsIChzMSwgU2tpcCBzMicpKVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCAoYSwgczEpLCBEb25lIC0+IFlpZWxkIChMZWZ0IGEsIChTa2lwIHMxLCBEb25lKSlcbiAgICB8IERvbmUsIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKFJpZ2h0IGIsIChEb25lLCBTa2lwIHMyKSlcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWQgczEgczIgfmNvbXBhcmUgPVxuICBtYXAgKG1lcmdlX3dpdGhfZHVwbGljYXRlcyBzMSBzMiB+Y29tcGFyZSkgfmY6KGZ1bmN0aW9uXG4gICAgfCBMZWZ0IHggfCBSaWdodCB4IHwgQm90aCAoeCwgXykgLT4geClcbjs7XG5cbmxldCAobWVyZ2UgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAyMS0wN10gRm9yIGlkZW50aWNhbCBiZWhhdmlvciwgdXNlIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRdLCBidXQgY29uc2lkZXIgdXNpbmcgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX3NvcnRlZF0gaW5zdGVhZC5cIl0pXG4gID1cbiAgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXG47O1xuXG5sZXQgbWVyZ2Vfc29ydGVkIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSB+Y29tcGFyZSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgICB8IChZaWVsZCAoYSwgczEnKSBhcyBzMSksIChZaWVsZCAoYiwgczInKSBhcyBzMikgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPD0gMCB0aGVuIFlpZWxkIChhLCAoU2tpcCBzMScsIHMyKSkgZWxzZSBZaWVsZCAoYiwgKHMxLCBTa2lwIHMyJykpXG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIChhLCBzMSksIERvbmUgLT4gWWllbGQgKGEsIChTa2lwIHMxLCBEb25lKSlcbiAgICB8IERvbmUsIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKGIsIChEb25lLCBTa2lwIHMyKSlcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCBoZCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCAoYSwgXykgLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGhkX2V4biBzID1cbiAgbWF0Y2ggaGQgcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcImhkX2V4blwiXG4gIHwgU29tZSBhIC0+IGFcbjs7XG5cbmxldCB0bCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCAoXywgYSkgLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIChtYXRjaCBsb29wIHMgbmV4dCB3aXRoXG4gICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIHwgU29tZSBzIC0+IFNvbWUgKFNlcXVlbmNlIChzLCBuZXh0KSkpXG47O1xuXG5sZXQgdGxfZWFnZXJseV9leG4gcyA9XG4gIG1hdGNoIHRsIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS50bF9leG5cIlxuICB8IFNvbWUgcyAtPiBzXG47O1xuXG5sZXQgbGlmdF9pZGVudGl0eSBuZXh0IHMgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IERvbmUgLT4gRG9uZVxuICB8IFNraXAgcyAtPiBTa2lwIChgSWRlbnRpdHkgcylcbiAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIGBJZGVudGl0eSBzKVxuOztcblxubGV0IG5leHQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgKGEsIHMpIC0+IFNvbWUgKGEsIFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgZmlsdGVyX29wdCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc1xuICAgICAgLCBmdW4gcyAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoTm9uZSwgcykgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKFNvbWUgYSwgcykgLT4gWWllbGQgKGEsIHMpIClcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHMgfmYgPSBmaWx0ZXJfb3B0IChtYXAgcyB+ZilcbmxldCBmaWx0ZXJfbWFwaSBzIH5mID0gZmlsdGVyX21hcCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IHNwbGl0X24gcyBuID1cbiAgbGV0IHJlYyBsb29wIHMgaSBhY2N1bSBuZXh0ID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIExpc3QucmV2IGFjY3VtLCBTZXF1ZW5jZSAocywgbmV4dClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTGlzdC5yZXYgYWNjdW0sIGVtcHR5XG4gICAgICB8IFNraXAgcyAtPiBsb29wIHMgaSBhY2N1bSBuZXh0XG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBsb29wIHMgKGkgLSAxKSAoYSA6OiBhY2N1bSkgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuIFtdIG5leHRcbjs7XG5cbmxldCBjaHVua3NfZXhuIHQgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY2h1bmtzX2V4blwiXG4gIGVsc2VcbiAgICB1bmZvbGRfc3RlcCB+aW5pdDp0IH5mOihmdW4gdCAtPlxuICAgICAgbWF0Y2ggc3BsaXRfbiB0IG4gd2l0aFxuICAgICAgfCBbXSwgX2VtcHR5IC0+IERvbmVcbiAgICAgIHwgKF8gOjogXyBhcyB4cyksIHQgLT4gWWllbGQgKHhzLCB0KSlcbjs7XG5cbmxldCBmaW5kaSBzIH5mID0gZmluZCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IGZpbmRfZXhuIHMgfmYgPVxuICBtYXRjaCBmaW5kIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5maW5kX2V4blwiXG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBtYXRjaCBzMSwgczIgd2l0aFxuICB8IFNlcXVlbmNlIChzMSwgbmV4dDEpLCBTZXF1ZW5jZSAoczIsIG5leHQyKSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBGaXJzdF9saXN0IHMxXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYEZpcnN0X2xpc3QgczEgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dDEgczEgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gU2tpcCAoYFNlY29uZF9saXN0IHMyKVxuICAgICAgICAgICB8IFNraXAgczEgLT4gU2tpcCAoYEZpcnN0X2xpc3QgczEpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMxKSAtPiBZaWVsZCAoYSwgYEZpcnN0X2xpc3QgczEpKVxuICAgICAgICB8IGBTZWNvbmRfbGlzdCBzMiAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0MiBzMiB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzMiAtPiBTa2lwIChgU2Vjb25kX2xpc3QgczIpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMyKSAtPiBZaWVsZCAoYSwgYFNlY29uZF9saXN0IHMyKSkgKVxuOztcblxubGV0IGNvbmNhdF9tYXAgcyB+ZiA9IGJpbmQgcyB+ZlxubGV0IGNvbmNhdCBzID0gY29uY2F0X21hcCBzIH5mOkZuLmlkXG5sZXQgY29uY2F0X21hcGkgcyB+ZiA9IGNvbmNhdF9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCB6aXAgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgWWllbGQgKGEsIHMxKSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoKGEsIGIpLCAoU2tpcCBzMSwgU2tpcCBzMikpXG4gICAgfCBEb25lLCBfIHwgXywgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgemlwX2Z1bGwgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgWWllbGQgKGEsIHMxKSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoYEJvdGggKGEsIGIpLCAoU2tpcCBzMSwgU2tpcCBzMikpXG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgICB8IERvbmUsIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKGBSaWdodCBiLCAoRG9uZSwgbmV4dDIgczIpKVxuICAgIHwgWWllbGQgKGEsIHMxKSwgRG9uZSAtPiBZaWVsZCAoYExlZnQgYSwgKG5leHQxIHMxLCBEb25lKSlcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCBib3VuZGVkX2xlbmd0aCAoU2VxdWVuY2UgKHNlZWQsIG5leHQpKSB+YXRfbW9zdCA9XG4gIGxldCByZWMgbG9vcCBpIHNlZWQgbmV4dCA9XG4gICAgaWYgaSA+IGF0X21vc3RcbiAgICB0aGVuIGBHcmVhdGVyXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgfCBEb25lIC0+IGBJcyBpXG4gICAgICB8IFNraXAgc2VlZCAtPiBsb29wIGkgc2VlZCBuZXh0XG4gICAgICB8IFlpZWxkIChfLCBzZWVkKSAtPiBsb29wIChpICsgMSkgc2VlZCBuZXh0KVxuICBpblxuICBsb29wIDAgc2VlZCBuZXh0XG47O1xuXG5sZXQgbGVuZ3RoX2lzX2JvdW5kZWRfYnkgPyhtaW4gPSAtMSkgP21heCB0ID1cbiAgbGV0IGxlbmd0aF9pc19hdF9sZWFzdCAoU2VxdWVuY2UgKHMsIG5leHQpKSA9XG4gICAgbGV0IHJlYyBsb29wIHMgYWNjID1cbiAgICAgIGlmIGFjYyA+PSBtaW5cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNraXAgcyAtPiBsb29wIHMgYWNjXG4gICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgcyAoYWNjICsgMSkpXG4gICAgaW5cbiAgICBsb29wIHMgMFxuICBpblxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gbGVuZ3RoX2lzX2F0X2xlYXN0IHRcbiAgfCBTb21lIG1heCAtPlxuICAgIChtYXRjaCBib3VuZGVkX2xlbmd0aCB0IH5hdF9tb3N0Om1heCB3aXRoXG4gICAgIHwgYElzIGxlbiB3aGVuIGxlbiA+PSBtaW4gLT4gdHJ1ZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgaXRlcmkgcyB+ZiA9IGl0ZXIgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBmb2xkaSBzIH5pbml0IH5mID1cbiAgZm9sZCB+aW5pdCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIGFjYyAoaSwgcykgLT4gZiBpIGFjYyBzKVxuOztcblxubGV0IHJlZHVjZSBzIH5mID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChhLCBzKSAtPiBTb21lIChmb2xkIHMgfmluaXQ6YSB+Zilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHMgfmYgPVxuICBtYXRjaCByZWR1Y2UgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnJlZHVjZV9leG5cIlxuICB8IFNvbWUgcmVzIC0+IHJlc1xuOztcblxubGV0IGdyb3VwIChTZXF1ZW5jZSAocywgbmV4dCkpIH5icmVhayA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6KFNvbWUgKFtdLCBzKSlcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBEb25lXG4gICAgICB8IFNvbWUgKGFjYywgcykgLT5cbiAgICAgICAgKG1hdGNoIGFjYywgbmV4dCBzIHdpdGhcbiAgICAgICAgIHwgXywgU2tpcCBzIC0+IFNraXAgKFNvbWUgKGFjYywgcykpXG4gICAgICAgICB8IFtdLCBEb25lIC0+IERvbmVcbiAgICAgICAgIHwgYWNjLCBEb25lIC0+IFlpZWxkIChMaXN0LnJldiBhY2MsIE5vbmUpXG4gICAgICAgICB8IFtdLCBZaWVsZCAoY3VyLCBzKSAtPiBTa2lwIChTb21lIChbIGN1ciBdLCBzKSlcbiAgICAgICAgIHwgKHByZXYgOjogXyBhcyBhY2MpLCBZaWVsZCAoY3VyLCBzKSAtPlxuICAgICAgICAgICBpZiBicmVhayBwcmV2IGN1clxuICAgICAgICAgICB0aGVuIFlpZWxkIChMaXN0LnJldiBhY2MsIFNvbWUgKFsgY3VyIF0sIHMpKVxuICAgICAgICAgICBlbHNlIFNraXAgKFNvbWUgKGN1ciA6OiBhY2MsIHMpKSkpXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgKFNlcXVlbmNlIChzLCBuZXh0KSkgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIGxhc3RfZWx0IHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIGxhc3RfZWx0IHNcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIGxhc3RfZWx0IHdpdGhcbiAgICAgICB8IFNvbWUgYiB3aGVuIGVxdWFsIGEgYiAtPiBTb21lIChiLCBhKVxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBsb29wIChTb21lIGEpIHMpXG4gIGluXG4gIGxvb3AgTm9uZSBzXG47O1xuXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgcyB+ZXF1YWwgPVxuICB1bmZvbGRfd2l0aCBzIH5pbml0Ok5vbmUgfmY6KGZ1biBwcmV2IGEgLT5cbiAgICBtYXRjaCBwcmV2IHdpdGhcbiAgICB8IFNvbWUgYiB3aGVuIGVxdWFsIGEgYiAtPiBTa2lwIChTb21lIGEpXG4gICAgfCBOb25lIHwgU29tZSBfIC0+IFlpZWxkIChhLCBTb21lIGEpKVxuOztcblxubGV0IGNvdW50IHMgfmYgPSBsZW5ndGggKGZpbHRlciBzIH5mKVxubGV0IGNvdW50aSB0IH5mID0gbGVuZ3RoIChmaWx0ZXJpIHQgfmYpXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGluaXQgbiB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+IGlmIGkgPj0gbiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoZiBpLCBpICsgMSkpXG47O1xuXG5sZXQgc3ViIHMgfnBvcyB+bGVuID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS5zdWJcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgaWYgaSAtIHBvcyA+PSBsZW5cbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gaSA+PSBwb3MgLT4gWWllbGQgKGEsIChpICsgMSwgcykpXG4gICAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gU2tpcCAoaSArIDEsIHMpKSApXG47O1xuXG5sZXQgdGFrZSBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRha2VcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgaWYgaSA+PSBsZW5cbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCAoaSArIDEsIHMpKSkgKVxuOztcblxubGV0IGRyb3AgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS5kcm9wXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gaSA+PSBsZW4gLT4gWWllbGQgKGEsIChpICsgMSwgcykpXG4gICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IFNraXAgKGkgKyAxLCBzKSApXG47O1xuXG5sZXQgdGFrZV93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc1xuICAgICAgLCBmdW4gcyAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBmIGEgLT4gWWllbGQgKGEsIHMpXG4gICAgICAgIHwgWWllbGQgKF8sIF8pIC0+IERvbmUgKVxuOztcblxubGV0IGRyb3Bfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBEcm9wcGluZyBzXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYERyb3BwaW5nIHMgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoYERyb3BwaW5nIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gZiBhIC0+IFNraXAgKGBEcm9wcGluZyBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgYElkZW50aXR5IHMpKVxuICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzIClcbjs7XG5cbmxldCBzaGlmdF9yaWdodCBzIHggPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgQ29uc2luZyAoc2VlZCwgeClcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgQ29uc2luZyAoc2VlZCwgeCkgLT4gWWllbGQgKHgsIGBJZGVudGl0eSBzZWVkKVxuICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzIClcbjs7XG5cbmxldCBzaGlmdF9yaWdodF93aXRoX2xpc3QgcyBsID0gYXBwZW5kIChvZl9saXN0IGwpIHNcbmxldCBzaGlmdF9sZWZ0ID0gZHJvcFxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IGludGVyc3BlcnNlIHMgfnNlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBJbml0IHNcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgSW5pdCBzIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGBJbml0IHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBgUnVubmluZyBzKSlcbiAgICAgICAgfCBgUnVubmluZyBzIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGBSdW5uaW5nIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChzZXAsIGBQdXR0aW5nIChhLCBzKSkpXG4gICAgICAgIHwgYFB1dHRpbmcgKGEsIHMpIC0+IFlpZWxkIChhLCBgUnVubmluZyBzKSApXG47O1xuXG5sZXQgcmVwZWF0IHggPSB1bmZvbGRfc3RlcCB+aW5pdDp4IH5mOihmdW4geCAtPiBZaWVsZCAoeCwgeCkpXG5cbmxldCBjeWNsZV9saXN0X2V4biB4cyA9XG4gIGlmIExpc3QuaXNfZW1wdHkgeHMgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuXCI7XG4gIGxldCBzID0gb2ZfbGlzdCB4cyBpblxuICBjb25jYXRfbWFwIH5mOihmdW4gKCkgLT4gcykgKHJlcGVhdCAoKSlcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBzYSBzYiA9IGNvbmNhdF9tYXAgc2EgfmY6KGZ1biBhIC0+IHppcCAocmVwZWF0IGEpIHNiKVxubGV0IHNpbmdsZXRvbiB4ID0gcmV0dXJuIHhcblxubGV0IGRlbGF5ZWRfZm9sZCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZmluaXNoIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IGsgYWNjXG4gICAgfCBTb21lIGEgLT4gZiBhY2MgYSB+aylcbjs7XG5cbmxldCBmb2xkX20gfmJpbmQgfnJldHVybiB0IH5pbml0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiBhY2MpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYWNjIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBpdGVyX20gfmJpbmQgfnJldHVybiB0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0OigpXG4gICAgfmY6KGZ1biAoKSBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuICgpKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBmb2xkX3VudGlsIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoJ2EsICdiKSBDb250aW51ZV9vcl9zdG9wLnQpIHdpdGhcbiAgICAgICB8IFN0b3AgeCAtPiB4XG4gICAgICAgfCBDb250aW51ZSBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dCBmIGluaXRcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCBzIH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gUmVzdWx0LnJldHVybiBhY2NcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoXywgXykgUmVzdWx0LnQpIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgfCBPayBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dCBmIGluaXRcbjs7XG5cbmxldCBmb3JjZV9lYWdlcmx5IHQgPSBvZl9saXN0ICh0b19saXN0IHQpXG5cbmxldCBtZW1vaXplICh0eXBlIGEpIChTZXF1ZW5jZSAocywgbmV4dCkpID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCBvZiAoYSwgdCkgU3RlcC50IExhenkudFxuICBlbmRcbiAgaW5cbiAgbGV0IHJlYyBtZW1vaXplIHMgPSBNLlQgKGxhenkgKGZpbmRfc3RlcCBzKSlcbiAgYW5kIGZpbmRfc3RlcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMgLT4gZmluZF9zdGVwIHNcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgbWVtb2l6ZSBzKVxuICBpblxuICBTZXF1ZW5jZSAobWVtb2l6ZSBzLCBmdW4gKE0uVCBsKSAtPiBMYXp5LmZvcmNlIGwpXG47O1xuXG5sZXQgZHJvcF9lYWdlcmx5IHMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGkgfmxlbiBzIG5leHQgPVxuICAgIGlmIGkgPj0gbGVuXG4gICAgdGhlbiBTZXF1ZW5jZSAocywgbmV4dClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gZW1wdHlcbiAgICAgIHwgU2tpcCBzIC0+IGxvb3AgaSB+bGVuIHMgbmV4dFxuICAgICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCAoaSArIDEpIH5sZW4gcyBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCAwIH5sZW4gcyBuZXh0XG47O1xuXG5sZXQgZHJvcF93aGlsZV9vcHRpb24gKFNlcXVlbmNlIChzLCBuZXh0KSkgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3Agc1xuICAgIHwgWWllbGQgKHgsIHMpIC0+IGlmIGYgeCB0aGVuIGxvb3AgcyBlbHNlIFNvbWUgKHgsIFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgaW5cbiAgbG9vcCBzXG47O1xuXG5sZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IF8gLT4gci5yZXR1cm4gMVxuICAgICAgfCBgUmlnaHQgXyAtPiByLnJldHVybiAoLTEpXG4gICAgICB8IGBCb3RoICh2MSwgdjIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9hIHYxIHYyIGluXG4gICAgICAgIGlmIGMgPD4gMCB0aGVuIHIucmV0dXJuIGMpO1xuICAgIDApXG47O1xuXG5sZXQgZXF1YWwgZXF1YWxfYSB0MSB0MiA9XG4gIGZvcl9hbGwgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICB8IGBCb3RoIChhMSwgYTIpIC0+IGVxdWFsX2EgYTEgYTJcbiAgICB8IGBMZWZ0IF8gfCBgUmlnaHQgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCByb3VuZF9yb2JpbiBsaXN0ID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spID1cbiAgICBtYXRjaCB0b2RvX3N0YWNrIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzLCBmKSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZiBzIHdpdGhcbiAgICAgICB8IFlpZWxkICh4LCBzKSAtPiBZaWVsZCAoeCwgKHRvZG9fc3RhY2ssIFNlcXVlbmNlIChzLCBmKSA6OiBkb25lX3N0YWNrKSlcbiAgICAgICB8IFNraXAgcyAtPiBTa2lwIChTZXF1ZW5jZSAocywgZikgOjogdG9kb19zdGFjaywgZG9uZV9zdGFjaylcbiAgICAgICB8IERvbmUgLT4gU2tpcCAodG9kb19zdGFjaywgZG9uZV9zdGFjaykpXG4gICAgfCBbXSAtPiBpZiBMaXN0LmlzX2VtcHR5IGRvbmVfc3RhY2sgdGhlbiBEb25lIGVsc2UgU2tpcCAoTGlzdC5yZXYgZG9uZV9zdGFjaywgW10pXG4gIGluXG4gIGxldCBzdGF0ZSA9IGxpc3QsIFtdIGluXG4gIFNlcXVlbmNlIChzdGF0ZSwgbmV4dClcbjs7XG5cbmxldCBpbnRlcmxlYXZlIChTZXF1ZW5jZSAoczEsIGYxKSkgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEpID1cbiAgICBtYXRjaCB0b2RvX3N0YWNrIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzMiwgZjIpIDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmMiBzMiB3aXRoXG4gICAgICAgfCBZaWVsZCAoeCwgczIpIC0+IFlpZWxkICh4LCAodG9kb19zdGFjaywgU2VxdWVuY2UgKHMyLCBmMikgOjogZG9uZV9zdGFjaywgczEpKVxuICAgICAgIHwgU2tpcCBzMiAtPiBTa2lwICh0b2RvX3N0YWNrLCBTZXF1ZW5jZSAoczIsIGYyKSA6OiBkb25lX3N0YWNrLCBzMSlcbiAgICAgICB8IERvbmUgLT4gU2tpcCAodG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEpKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBmMSBzMSwgZG9uZV9zdGFjayB3aXRoXG4gICAgICAgfCBZaWVsZCAodCwgczEpLCBfIC0+IFNraXAgKExpc3QucmV2ICh0IDo6IGRvbmVfc3RhY2spLCBbXSwgczEpXG4gICAgICAgfCBTa2lwIHMxLCBfIC0+IFNraXAgKExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSlcbiAgICAgICB8IERvbmUsIF8gOjogXyAtPiBTa2lwIChMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEpXG4gICAgICAgfCBEb25lLCBbXSAtPiBEb25lKVxuICBpblxuICBsZXQgc3RhdGUgPSBbXSwgW10sIHMxIGluXG4gIFNlcXVlbmNlIChzdGF0ZSwgbmV4dClcbjs7XG5cbmxldCBpbnRlcmxlYXZlZF9jYXJ0ZXNpYW5fcHJvZHVjdCBzMSBzMiA9XG4gIG1hcCBzMSB+ZjooZnVuIHgxIC0+IG1hcCBzMiB+ZjooZnVuIHgyIC0+IHgxLCB4MikpIHw+IGludGVybGVhdmVcbjs7XG5cbmxldCBvZl9zZXEgKHNlcSA6IF8gQ2FtbC5TZXEudCkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpzZXEgfmY6KGZ1biBzZXEgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IERvbmVcbiAgICB8IENvbnMgKGhkLCB0bCkgLT4gWWllbGQgKGhkLCB0bCkpXG47O1xuXG5sZXQgdG9fc2VxIChTZXF1ZW5jZSAoc3RhdGUsIG5leHQpKSA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggbmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBEb25lIC0+IENhbWwuU2VxLk5pbFxuICAgIHwgU2tpcCBzdGF0ZSAtPiBsb29wIHN0YXRlXG4gICAgfCBZaWVsZCAoaGQsIHN0YXRlKSAtPiBDYW1sLlNlcS5Db25zIChoZCwgZnVuICgpIC0+IGxvb3Agc3RhdGUpXG4gIGluXG4gIGZ1biAoKSAtPiBsb29wIHN0YXRlXG47O1xuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgJ2VsdCBzdGVwcyA9IFdyYXAgb2YgKCdlbHQsIHVuaXQgLT4gJ2VsdCBzdGVwcykgU3RlcC50XG5cbiAgbGV0IHVud3JhcCAoV3JhcCBzdGVwKSA9IHN0ZXBcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZWx0KSB0ID0gKCdhIC0+ICdlbHQgc3RlcHMpIC0+ICdlbHQgc3RlcHNcblxuICAgIGxldCByZXR1cm4geCBrID0gayB4XG5cbiAgICBsZXQgYmluZCBtIH5mIGsgPVxuICAgICAgbSAoZnVuIGEgLT5cbiAgICAgICAgbGV0IG0nID0gZiBhIGluXG4gICAgICAgIG0nIGspXG4gICAgOztcblxuICAgIGxldCBtYXAgbSB+ZiBrID0gbSAoZnVuIGEgLT4gayAoZiBhKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTIgKFQpXG5cbiAgbGV0IHlpZWxkIGUgayA9IFdyYXAgKFlpZWxkIChlLCBrKSlcbiAgbGV0IHRvX3N0ZXBzIHQgPSB0IChmdW4gKCkgLT4gV3JhcCBEb25lKVxuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgZGVsYXllZF9mb2xkXG4gICAgICBzZXF1ZW5jZVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gKCkgeCB+ayBmIC0+IFdyYXAgKFlpZWxkICh4LCBmdW4gKCkgLT4gayAoKSBmKSkpXG4gICAgICB+ZmluaXNoOnJldHVyblxuICA7O1xuXG4gIGxldCBydW4gdCA9XG4gICAgbGV0IGluaXQgKCkgPSB0b19zdGVwcyB0IGluXG4gICAgbGV0IGYgdGh1bmsgPSB1bndyYXAgKHRodW5rICgpKSBpblxuICAgIHVuZm9sZF9zdGVwIH5pbml0IH5mXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxudHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfYXJyYXlcbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBhcnJheV9vZl9zZXhwXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBhcnJheV9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxuKCogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIG5ldyBpbi1wbGFjZSwgY29uc3RhbnQgaGVhcCBzb3J0aW5nIGFsZ29yaXRobSB0byByZXBsYWNlIHRoZVxuICAgb25lIHVzZWQgYnkgdGhlIHN0YW5kYXJkIGxpYnJhcmllcy4gIEl0cyBvbmx5IHB1cnBvc2UgaXMgdG8gYmUgZmFzdGVyIChob3BlZnVsbHlcbiAgIHN0cmljdGx5IGZhc3RlcikgdGhhbiB0aGUgYmFzZSBzb3J0IGFuZCBzdGFibGVfc29ydC5cblxuICAgQXQgYSBoaWdoIGxldmVsIHRoZSBhbGdvcml0aG0gaXM6XG4gICAtIHBpY2sgdHdvIHBpdm90IHBvaW50cyBieTpcbiAgIC0gcGljayA1IGFyYml0cmFyeSBlbGVtZW50cyBmcm9tIHRoZSBhcnJheVxuICAgLSBzb3J0IHRoZW0gd2l0aGluIHRoZSBhcnJheVxuICAgLSB0YWtlIHRoZSBlbGVtZW50cyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgbWlkZGxlIGVsZW1lbnQgb2YgdGhlIHNvcnQgYXMgdGhlIHBpdm90c1xuICAgLSBzb3J0IHRoZSBhcnJheSB3aXRoOlxuICAgLSBhbGwgZWxlbWVudHMgbGVzcyB0aGFuIHBpdm90MSB0byB0aGUgbGVmdCAocmFuZ2UgMSlcbiAgIC0gYWxsIGVsZW1lbnRzID49IHBpdm90MSBhbmQgPD0gcGl2b3QyIGluIHRoZSBtaWRkbGUgKHJhbmdlIDIpXG4gICAtIGFsbCBlbGVtZW50cyA+IHBpdm90MiB0byB0aGUgcmlnaHQgKHJhbmdlIDMpXG4gICAtIGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSBlcXVhbCwgdGhlbiB0aGUgbWlkZGxlIHJhbmdlIGlzIHNvcnRlZCwgc28gaWdub3JlIGl0XG4gICAtIHJlY3Vyc2UgaW50byByYW5nZSAxLCAyIChpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgdW5lcXVhbCksIGFuZCAzXG4gICAtIGR1cmluZyByZWN1cnNpb24gdGhlcmUgYXJlIHR3byBpbmZsZWN0aW9uIHBvaW50czpcbiAgIC0gaWYgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgcmFuZ2UgaXMgc21hbGwsIHVzZSBpbnNlcnRpb24gc29ydCB0byBzb3J0IGl0XG4gICAtIGlmIHRoZSBzdGFjayBkZXB0aCBpcyBsYXJnZSwgc29ydCB0aGUgcmFuZ2Ugd2l0aCBoZWFwLXNvcnQgdG8gYXZvaWQgbl4yIHdvcnN0LWNhc2VcbiAgICAgYmVoYXZpb3JcblxuICAgU2VlIHRoZSBmb2xsb3dpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb246XG4gICAtIFwiRHVhbC1QaXZvdCBRdWlja3NvcnRcIiBieSBWbGFkaW1pciBZYXJvc2xhdnNraXkuXG4gICAgIEF2YWlsYWJsZSBhdFxuICAgICBodHRwOi8vd3d3LmtyaWNoZS5jb20uYXIvcm9vdC9wcm9ncmFtbWluZy9zcGFjZVRpbWVDb21wbGV4aXR5L0R1YWxQaXZvdFF1aWNrc29ydC5wZGZcbiAgIC0gXCJRdWlja3NvcnQgaXMgT3B0aW1hbFwiIGJ5IFNlZGdld2ljayBhbmQgQmVudGxleS5cbiAgICAgU2xpZGVzIGF0IGh0dHA6Ly93d3cuY3MucHJpbmNldG9uLmVkdS9+cnMvdGFsa3MvUXVpY2tzb3J0SXNPcHRpbWFsLnBkZlxuICAgLSBodHRwOi8vd3d3LnNvcnRpbmctYWxnb3JpdGhtcy5jb20vcXVpY2stc29ydC0zLXdheSAqKVxuXG5tb2R1bGUgU29ydCA9IHN0cnVjdFxuICAoKiBGb3IgdGhlIHNha2Ugb2Ygc3BlZWQgd2UgY291bGQgdXNlIHVuc2FmZSBnZXQvc2V0IHRocm91Z2hvdXQsIGJ1dCBzcGVlZCB0ZXN0cyBkb24ndFxuICAgICBzaG93IGEgc2lnbmlmaWNhbnQgaW1wcm92ZW1lbnQuICopXG4gIGxldCBnZXQgPSBnZXRcbiAgbGV0IHNldCA9IHNldFxuXG4gIGxldCBzd2FwIGFyciBpIGogPVxuICAgIGxldCB0bXAgPSBnZXQgYXJyIGkgaW5cbiAgICBzZXQgYXJyIGkgKGdldCBhcnIgaik7XG4gICAgc2V0IGFyciBqIHRtcFxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFNvcnQgPSBzaWdcbiAgICB2YWwgc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgICAgLT4gbGVmdDppbnQgKCogbGVmdG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHJpZ2h0OmludCAoKiByaWdodG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHVuaXRcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnNlcnRpb25fc29ydCAqKVxuICBtb2R1bGUgSW5zZXJ0aW9uX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICAgIFthcnJdIGlzIHNvcnRlZCBmcm9tIFtsZWZ0XSB0byBbcG9zIC0gMV0sIGluY2x1c2l2ZSAqKVxuICAgICAgZm9yIHBvcyA9IGxlZnQgKyAxIHRvIHJpZ2h0IGRvXG4gICAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgICAgMS4gIHRoZSBzdWJhcnJheSBhcnJbbGVmdCAuLiBpLTFdIGlzIHNvcnRlZFxuICAgICAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4gcG9zXSBpcyBzb3J0ZWQgYW5kIGNvbnRhaW5zIG9ubHkgZWxlbWVudHMgPiB2XG4gICAgICAgICAgIDMuICBhcnJbaV0gbWF5IGJlIHRob3VnaHQgb2YgYXMgY29udGFpbmluZyB2XG5cbiAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWxsb2NhdGUgYSBjbG9zdXJlLCBidXQgaXMgbGVmdCBpbiB0aGUgZm9yXG4gICAgICAgICAgIGxvb3AgZm9yIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUgZG9jdW1lbnRhdGlvbi4gKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGFyciB+bGVmdCB+Y29tcGFyZSBpIHYgPVxuICAgICAgICAgIGxldCBpX25leHQgPSBpIC0gMSBpblxuICAgICAgICAgIGlmIGlfbmV4dCA+PSBsZWZ0ICYmIGNvbXBhcmUgKGdldCBhcnIgaV9uZXh0KSB2ID4gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgc2V0IGFyciBpIChnZXQgYXJyIGlfbmV4dCk7XG4gICAgICAgICAgICBsb29wIGFyciB+bGVmdCB+Y29tcGFyZSBpX25leHQgdilcbiAgICAgICAgICBlbHNlIGlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHYgPSBnZXQgYXJyIHBvcyBpblxuICAgICAgICBsZXQgZmluYWxfcG9zID0gbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgcG9zIHYgaW5cbiAgICAgICAgc2V0IGFyciBmaW5hbF9wb3MgdlxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVhcHNvcnQgKilcbiAgbW9kdWxlIEhlYXBfc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICByb290J3MgY2hpbGRyZW4gYXJlIGJvdGggZWl0aGVyIHJvb3RzIG9mIG1heC1oZWFwcyBvciA+IHJpZ2h0ICopXG4gICAgbGV0IHJlYyBoZWFwaWZ5IGFyciB+Y29tcGFyZSByb290IH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcmVsYXRpdmVfcm9vdCA9IHJvb3QgLSBsZWZ0IGluXG4gICAgICBsZXQgbGVmdF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMSBpblxuICAgICAgbGV0IHJpZ2h0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAyIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIGxlZnRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciBsZWZ0X2NoaWxkKSAoZ2V0IGFyciByb290KSA+IDBcbiAgICAgICAgdGhlbiBsZWZ0X2NoaWxkXG4gICAgICAgIGVsc2Ugcm9vdFxuICAgICAgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgcmlnaHRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciByaWdodF9jaGlsZCkgKGdldCBhcnIgbGFyZ2VzdCkgPiAwXG4gICAgICAgIHRoZW4gcmlnaHRfY2hpbGRcbiAgICAgICAgZWxzZSBsYXJnZXN0XG4gICAgICBpblxuICAgICAgaWYgbGFyZ2VzdCA8PiByb290XG4gICAgICB0aGVuIChcbiAgICAgICAgc3dhcCBhcnIgcm9vdCBsYXJnZXN0O1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsYXJnZXN0IH5sZWZ0IH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBFbGVtZW50cyBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGFycmF5IGFyZSBhbHJlYWR5IGhlYXBzIG9mIHNpemUgMS4gIFdlIG1vdmVcbiAgICAgICAgIHRocm91Z2ggdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGFycmF5IGZyb20gYmFjayB0byBmcm9udCBleGFtaW5pbmcgdGhlIGVsZW1lbnQgYXRcbiAgICAgICAgIGhhbmQsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgY2hpbGRyZW4sIGZpeGluZyB0aGUgaGVhcCBwcm9wZXJ0eSBhcyB3ZSBnby4gKilcbiAgICAgIGZvciBpID0gKGxlZnQgKyByaWdodCkgLyAyIGRvd250byBsZWZ0IGRvXG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGkgfmxlZnQgfnJpZ2h0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0O1xuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIHRoZSBzdWJhcnJheSBhcnJbbGVmdCAuLi4gaV0gaXMgYSBtYXgtaGVhcCBIXG4gICAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4uIHJpZ2h0XSBpcyBzb3J0ZWQgKGNhbGwgaXQgUylcbiAgICAgICAgIDMuICBldmVyeSBlbGVtZW50IG9mIEggaXMgbGVzcyB0aGFuIGV2ZXJ5IGVsZW1lbnQgb2YgUyAqKVxuICAgICAgZm9yIGkgPSByaWdodCBkb3dudG8gbGVmdCArIDEgZG9cbiAgICAgICAgc3dhcCBhcnIgbGVmdCBpO1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsZWZ0IH5sZWZ0IH5yaWdodDooaSAtIDEpXG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyb3NvcnQgKilcbiAgbW9kdWxlIEludHJvX3NvcnQgOiBzaWdcbiAgICBpbmNsdWRlIFNvcnRcblxuICAgIHZhbCBmaXZlX2VsZW1lbnRfc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZSBtMSBtMiBtMyBtNCBtNSA9XG4gICAgICBsZXQgY29tcGFyZV9hbmRfc3dhcCBpIGogPVxuICAgICAgICBpZiBjb21wYXJlIChnZXQgYXJyIGkpIChnZXQgYXJyIGopID4gMCB0aGVuIHN3YXAgYXJyIGkgalxuICAgICAgaW5cbiAgICAgICgqIE9wdGltYWwgNS1lbGVtZW50IHNvcnRpbmcgbmV0d29yazpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIDEtLW8tLS0tLW8tLS0tLW8tLS0tLS0tLS0tLS0tLTFcbiAgICAgICAgICAgICAgIHwgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDItLW8tLS0tLXwtLW8tLXwtLS0tLW8tLW8tLS0tLTJcbiAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHwgICAgIHwgIHxcbiAgICAgICAgICAgIDMtLS0tLS0tLW8tLW8tLXwtLW8tLXwtLW8tLS0tLTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHxcbiAgICAgICAgICAgIDQtLS0tLW8tLS0tLS0tLW8tLW8tLXwtLS0tLW8tLTRcbiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDUtLS0tLW8tLS0tLS0tLS0tLS0tLW8tLS0tLW8tLTVcbiAgICAgICAgICB2fSAqKVxuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMjtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0zIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01XG4gICAgOztcblxuICAgICgqIGNob29zZSBwaXZvdHMgZm9yIHRoZSBhcnJheSBieSBzb3J0aW5nIDUgZWxlbWVudHMgYW5kIGV4YW1pbmluZyB0aGUgY2VudGVyIHRocmVlXG4gICAgICAgZWxlbWVudHMuICBUaGUgZ29hbCBpcyB0byBjaG9vc2UgdHdvIHBpdm90cyB0aGF0IHdpbGwgZWl0aGVyOlxuICAgICAgIC0gYnJlYWsgdGhlIHJhbmdlIHVwIGludG8gMyBldmVuIHBhcnRpdGlvbnNcbiAgICAgICAgIG9yXG4gICAgICAgLSBlbGltaW5hdGUgYSBjb21tb25seSBhcHBlYXJpbmcgZWxlbWVudCBieSBzb3J0aW5nIGl0IGludG8gdGhlIGNlbnRlciBwYXJ0aXRpb25cbiAgICAgICAgIGJ5IGl0c2VsZlxuICAgICAgICAgVG8gdGhpcyBlbmQgd2UgbG9vayBhdCB0aGUgY2VudGVyIDMgZWxlbWVudHMgb2YgdGhlIDUgYW5kIHJldHVybiBwYWlycyBvZiBlcXVhbFxuICAgICAgICAgZWxlbWVudHMgb3IgdGhlIHdpZGVzdCByYW5nZSAqKVxuICAgIGxldCBjaG9vc2VfcGl2b3RzIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHNpeHRoID0gKHJpZ2h0IC0gbGVmdCkgLyA2IGluXG4gICAgICBsZXQgbTEgPSBsZWZ0ICsgc2l4dGggaW5cbiAgICAgIGxldCBtMiA9IG0xICsgc2l4dGggaW5cbiAgICAgIGxldCBtMyA9IG0yICsgc2l4dGggaW5cbiAgICAgIGxldCBtNCA9IG0zICsgc2l4dGggaW5cbiAgICAgIGxldCBtNSA9IG00ICsgc2l4dGggaW5cbiAgICAgIGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZSBtMSBtMiBtMyBtNCBtNTtcbiAgICAgIGxldCBtMl92YWwgPSBnZXQgYXJyIG0yIGluXG4gICAgICBsZXQgbTNfdmFsID0gZ2V0IGFyciBtMyBpblxuICAgICAgbGV0IG00X3ZhbCA9IGdldCBhcnIgbTQgaW5cbiAgICAgIGlmIGNvbXBhcmUgbTJfdmFsIG0zX3ZhbCA9IDBcbiAgICAgIHRoZW4gbTJfdmFsLCBtM192YWwsIHRydWVcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBtM192YWwgbTRfdmFsID0gMFxuICAgICAgdGhlbiBtM192YWwsIG00X3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBtMl92YWwsIG00X3ZhbCwgZmFsc2VcbiAgICA7O1xuXG4gICAgbGV0IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHBpdm90MSwgcGl2b3QyLCBwaXZvdHNfZXF1YWwgPSBjaG9vc2VfcGl2b3RzIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICBsZWZ0IDw9IGwgPCByIDw9IHJpZ2h0XG4gICAgICAgICAyLiAgbCA8PSBwIDw9IHJcbiAgICAgICAgIDMuICBsIDw9IHggPCBwICAgICBpbXBsaWVzIGFyclt4XSA+PSBwaXZvdDFcbiAgICAgICAgIGFuZCBhcnJbeF0gPD0gcGl2b3QyXG4gICAgICAgICA0LiAgbGVmdCA8PSB4IDwgbCAgaW1wbGllcyBhcnJbeF0gPCBwaXZvdDFcbiAgICAgICAgIDUuICByIDwgeCA8PSByaWdodCBpbXBsaWVzIGFyclt4XSA+IHBpdm90MiAqKVxuICAgICAgbGV0IHJlYyBsb29wIGwgcCByID1cbiAgICAgICAgbGV0IHB2ID0gZ2V0IGFyciBwIGluXG4gICAgICAgIGlmIGNvbXBhcmUgcHYgcGl2b3QxIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzd2FwIGFyciBwIGw7XG4gICAgICAgICAgY29udCAobCArIDEpIChwICsgMSkgcilcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlIHB2IHBpdm90MiA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOiAgc2FtZSBhcyB0aG9zZSBvZiB0aGUgb3V0ZXIgbG9vcCAqKVxuICAgICAgICAgIGxldCByZWMgc2Nhbl9iYWNrd2FyZHMgciA9XG4gICAgICAgICAgICBpZiByID4gcCAmJiBjb21wYXJlIChnZXQgYXJyIHIpIHBpdm90MiA+IDAgdGhlbiBzY2FuX2JhY2t3YXJkcyAociAtIDEpIGVsc2UgclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHIgPSBzY2FuX2JhY2t3YXJkcyByIGluXG4gICAgICAgICAgc3dhcCBhcnIgciBwO1xuICAgICAgICAgIGNvbnQgbCBwIChyIC0gMSkpXG4gICAgICAgIGVsc2UgY29udCBsIChwICsgMSkgclxuICAgICAgYW5kIGNvbnQgbCBwIHIgPSBpZiBwID4gciB0aGVuIGwsIHIgZWxzZSBsb29wIGwgcCByIGluXG4gICAgICBsZXQgbCwgciA9IGNvbnQgbGVmdCBsZWZ0IHJpZ2h0IGluXG4gICAgICBsLCByLCBwaXZvdHNfZXF1YWxcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgbGVuID0gcmlnaHQgLSBsZWZ0ICsgMSBpblxuICAgICAgKCogVGhpcyB0YWtlcyBjYXJlIG9mIHNvbWUgZWRnZSBjYXNlcywgc3VjaCBhcyBsZWZ0ID4gcmlnaHQgb3IgdmVyeSBzaG9ydCBhcnJheXMsXG4gICAgICAgICBzaW5jZSBJbnNlcnRpb25fc29ydC5zb3J0IGhhbmRsZXMgdGhlc2UgY2FzZXMgcHJvcGVybHkuICBUaHVzIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgIG1ha2Ugc3VyZSB0aGF0IGxlZnQgYW5kIHJpZ2h0IGFyZSB2YWxpZCBpbiByZWN1cnNpdmUgY2FsbHMuICopXG4gICAgICBpZiBsZW4gPD0gMzJcbiAgICAgIHRoZW4gSW5zZXJ0aW9uX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIGlmIG1heF9kZXB0aCA8IDBcbiAgICAgIHRoZW4gSGVhcF9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBtYXhfZGVwdGggPSBtYXhfZGVwdGggLSAxIGluXG4gICAgICAgIGxldCBsLCByLCBtaWRkbGVfc29ydGVkID0gZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodDoobCAtIDEpO1xuICAgICAgICBpZiBub3QgbWlkZGxlX3NvcnRlZCB0aGVuIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6bCB+cmlnaHQ6cjtcbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDoociArIDEpIH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgaGVhcF9zb3J0X3N3aXRjaF9kZXB0aCA9XG4gICAgICAgICgqIFdlIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdCBhIHJlY3Vyc2lvbiBkZXB0aCBvZiAzMi4gR05VIGludHJvc29ydCB1c2VzIDJsZyhuKS5cbiAgICAgICAgICAgVGhlIGV4cGVjdGVkIHJlY3Vyc2lvbiBkZXB0aCBmb3IgcGVyZmVjdCAzLXdheSBzcGxpdHMgaXMgbG9nXzMobikuXG5cbiAgICAgICAgICAgVXNpbmcgMzIgbWVhbnMgYSBiYWxhbmNlZCAzLXdheSBzcGxpdCB3b3VsZCB3b3JrIHVwIHRvIDNeMzIgZWxlbWVudHMgKHJvdWdobHlcbiAgICAgICAgICAgMl41MCBvciAxMF4xNSkuIEdOVSByZWFjaGVzIGEgZGVwdGggb2YgMzIgYXQgNjU1MzYgZWxlbWVudHMuXG5cbiAgICAgICAgICAgRm9yIHNtYWxsIGFycmF5cywgdGhpcyBtYWtlcyB1cyBsZXNzIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQsIGJ1dCB0aGVcbiAgICAgICAgICAgMzIqTiBjb3N0IGJlZm9yZSB3ZSBkbyBpcyBub3QgdGhhdCBtdWNoLlxuXG4gICAgICAgICAgIEZvciBsYXJnZSBhcnJheXMsIHRoaXMgbWVhbnMgd2UgYXJlIG1vcmUgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdFxuICAgICAgICAgICBzb21lIHBvaW50IGlmIHdlIGdldCBzb21lIGJhZCBzcGxpdHMgb3IgaWYgdGhlIGFycmF5IGlzIGh1Z2UuIEJ1dCB0aGF0J3Mgb25seSBhXG4gICAgICAgICAgIGNvbnN0YW50IGZhY3RvciBjb3N0IGluIHRoZSBmaW5hbCBzdGFnZXMgb2YgcmVjdXJzaW9uLlxuXG4gICAgICAgICAgIEFsbCBpbiBhbGwsIHRoaXMgc2VlbXMgdG8gYmUgYSBzbWFsbCB0cmFkZW9mZiBhbmQgYXZvaWRzIHBheWluZyBhIGNvc3QgdG9cbiAgICAgICAgICAgY29tcHV0ZSBhIGxvZ2FyaXRobSBhdCB0aGUgc3RhcnQuICopXG4gICAgICAgIDMyXG4gICAgICBpblxuICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aDpoZWFwX3NvcnRfc3dpdGNoX2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBzb3J0ID9wb3MgP2xlbiBhcnIgfmNvbXBhcmUgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggYXJyKVxuICBpblxuICBTb3J0LkludHJvX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQ6cG9zIH5yaWdodDoocG9zICsgbGVuIC0gMSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGlzX3NvcnRlZCB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPiAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+PSAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVyZ2UgYTEgYTIgfmNvbXBhcmUgPVxuICBsZXQgbDEgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgbGV0IGwyID0gQXJyYXkubGVuZ3RoIGEyIGluXG4gIGlmIGwxID0gMFxuICB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsMiA9IDBcbiAgdGhlbiBjb3B5IGExXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMiAwKSAodW5zYWZlX2dldCBhMSAobDEgLSAxKSkgPj0gMFxuICB0aGVuIGFwcGVuZCBhMSBhMlxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgMCkgKHVuc2FmZV9nZXQgYTIgKGwyIC0gMSkpID4gMFxuICB0aGVuIGFwcGVuZCBhMiBhMVxuICBlbHNlIChcbiAgICBsZXQgbGVuID0gbDEgKyBsMiBpblxuICAgIGxldCBtZXJnZWQgPSBjcmVhdGUgfmxlbiAodW5zYWZlX2dldCBhMSAwKSBpblxuICAgIGxldCBhMV9pbmRleCA9IHJlZiAwIGluXG4gICAgbGV0IGEyX2luZGV4ID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IHVzZV9hMSA9XG4gICAgICAgIGlmIGwxID0gIWExX2luZGV4XG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBpZiBsMiA9ICFhMl9pbmRleFxuICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgZWxzZSBjb21wYXJlICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KSA8PSAwXG4gICAgICBpblxuICAgICAgaWYgdXNlX2ExXG4gICAgICB0aGVuIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpO1xuICAgICAgICBhMV9pbmRleCA6PSAhYTFfaW5kZXggKyAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KTtcbiAgICAgICAgYTJfaW5kZXggOj0gIWEyX2luZGV4ICsgMSlcbiAgICBkb25lO1xuICAgIG1lcmdlZClcbjs7XG5cbmxldCBjb3B5X21hdHJpeCA9IG1hcCB+Zjpjb3B5XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpXG47O1xuXG5sZXQgY29uY2F0X21hcCB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXAgfmYgdCkpXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwaSB+ZiB0KSlcblxubGV0IHJldl9pbnBsYWNlIHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIHdoaWxlICFpIDwgIWogZG9cbiAgICBzd2FwIHQgIWkgIWo7XG4gICAgaW5jciBpO1xuICAgIGRlY3IgalxuICBkb25lXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgdCA9IGNvcHkgdCBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdF9yZXYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBhIDo6IGwgLT5cbiAgICBsZXQgbGVuID0gMSArIExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgKCogV2Ugc3RhcnQgYXQgW2xlbiAtIDJdIGJlY2F1c2Ugd2UgYWxyZWFkeSBwdXQgW2FdIGF0IFt0LihsZW4gLSAxKV0uICopXG4gICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgdC4oaSkgPC0gYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB0XG47O1xuXG4oKiBbb2ZfbGlzdF9tYXBdIGFuZCBbb2ZfbGlzdF9yZXZfbWFwXSBhcmUgYmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIE9DYW1sXG4gICBkaXN0cmlidXRpb24uICopXG5cbmxldCBvZl9saXN0X21hcCB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIGhkKSBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBoZCk7XG4gICAgICAgIGZpbGwgKGkgKyAxKSB0bFxuICAgIGluXG4gICAgZmlsbCAxIHRsXG47O1xuXG5sZXQgb2ZfbGlzdF9tYXBpIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgMCBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgYSBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpIGhkKTtcbiAgICAgICAgZmlsbCBhIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgYSAxIHRsXG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcCB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwaSB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXBpIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHIgPSByZWYgW3x8XSBpblxuICBsZXQgayA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgdCBpKSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGlmICFrID0gMCB0aGVuIHIgOj0gY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBhO1xuICAgICAgdW5zYWZlX3NldCAhciAhayBhO1xuICAgICAgaW5jciBrXG4gIGRvbmU7XG4gIGlmICFrID0gbGVuZ3RoIHQgdGhlbiAhciBlbHNlIGlmICFrID4gMCB0aGVuIHN1YiB+cG9zOjAgfmxlbjohayAhciBlbHNlIFt8fF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gX2kgYSAtPiBmIGEpXG5sZXQgZmlsdGVyX29wdCB0ID0gZmlsdGVyX21hcCB0IH5mOkZuLmlkXG5cbmxldCByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMiA9XG4gIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWRcIiBuYW1lIG4xIG4yICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgdDEgdDIgPVxuICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjJcbjs7XG5cbmxldCBpdGVyMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lml0ZXIyX2V4blwiIHQxIHQyO1xuICBpdGVyaSB0MSB+ZjooZnVuIGkgeDEgLT4gZiB4MSAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkubWFwMl9leG5cIiB0MSB0MjtcbiAgaW5pdCAobGVuZ3RoIHQxKSB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCBmb2xkMl9leG4gdDEgdDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvbGQyX2V4blwiIHQxIHQyO1xuICBmb2xkaSB0MSB+aW5pdCB+ZjooZnVuIGkgYWMgeCAtPiBmIGFjIHggKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5sZXQgZmlsdGVyaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5cblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICFpICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID0gZXhpc3RzIHQgfmY6KGVxdWFsIGEpXG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAhaSAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0czJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5leGlzdHMyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGwyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9yX2FsbDJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBlcXVhbCBlcXVhbCB0MSB0MiA9IGxlbmd0aCB0MSA9IGxlbmd0aCB0MiAmJiBmb3JfYWxsMl9leG4gdDEgdDIgfmY6ZXF1YWxcblxuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHQgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGZpbmRpX2ludGVybmFsIHQgfmYgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIGlmX25vdF9mb3VuZCAoKVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICB3aGlsZSAobm90ICFmb3VuZCkgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZiAhaSB2YWx1ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHZhbHVlX2ZvdW5kIDo9IHZhbHVlO1xuICAgICAgICBmb3VuZCA6PSB0cnVlKVxuICAgICAgZWxzZSBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmICFmb3VuZCB0aGVuIGlmX2ZvdW5kIH5pOiFpIH52YWx1ZTohdmFsdWVfZm91bmQgZWxzZSBpZl9ub3RfZm91bmQgKCkpXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mXG4gICAgfmlmX2ZvdW5kOihmdW4gfmkgfnZhbHVlIC0+IFNvbWUgKGksIHZhbHVlKSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gTm9uZSlcbjs7XG5cbmxldCBmaW5kaV9leG4gdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mXG4gICAgfmlmX2ZvdW5kOihmdW4gfmkgfnZhbHVlIC0+IGksIHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kaV9leG46IG5vdCBmb3VuZFwiKSkpXG47O1xuXG5sZXQgZmluZF9leG4gdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mOihmdW4gX2kgeCAtPiBmIHgpXG4gICAgfmlmX2ZvdW5kOihmdW4gfmk6XyB+dmFsdWUgLT4gdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9IE9wdGlvbi5tYXAgKGZpbmRpIHQgfmY6KGZ1biBfaSB4IC0+IGYgeCkpIH5mOihmdW4gKF9pLCB4KSAtPiB4KVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiAhaSB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuIDw9IDFcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZXN1bHQgPSByZWYgTm9uZSBpblxuICAgIGxldCBpID0gcmVmIDEgaW5cbiAgICBsZXQgcHJldiA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgY3VyID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBlcXVhbCBjdXIgIXByZXZcbiAgICAgIHRoZW4gKFxuICAgICAgICByZXN1bHQgOj0gU29tZSAoIXByZXYsIGN1cik7XG4gICAgICAgIGkgOj0gbilcbiAgICAgIGVsc2UgKFxuICAgICAgICBwcmV2IDo9IGN1cjtcbiAgICAgICAgaW5jciBpKVxuICAgIGRvbmU7XG4gICAgIXJlc3VsdClcbjs7XG5cbmxldCByZWR1Y2UgdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIGZvciBpID0gMSB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gICAgZG9uZTtcbiAgICBTb21lICFyKVxuOztcblxubGV0IHJlZHVjZV9leG4gdCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSB0IH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBwZXJtdXRlID0gQXJyYXlfcGVybXV0ZS5wZXJtdXRlXG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgYXJyYXlcIlxuICBlbHNlIHQuKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgemlwIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MiB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MikpXG47O1xuXG5sZXQgemlwX2V4biB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDJcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnppcF9leG5cIlxuICBlbHNlIG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuOztcblxubGV0IHVuemlwIHQgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgeCwgeSA9IHQuKDApIGluXG4gICAgbGV0IHJlczEgPSBjcmVhdGUgfmxlbjpuIHggaW5cbiAgICBsZXQgcmVzMiA9IGNyZWF0ZSB+bGVuOm4geSBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IHgsIHkgPSB0LihpKSBpblxuICAgICAgcmVzMS4oaSkgPC0geDtcbiAgICAgIHJlczIuKGkpIDwtIHlcbiAgICBkb25lO1xuICAgIHJlczEsIHJlczIpXG47O1xuXG5sZXQgc29ydGVkX2NvcHkgdCB+Y29tcGFyZSA9XG4gIGxldCB0MSA9IGNvcHkgdCBpblxuICBzb3J0IHQxIH5jb21wYXJlO1xuICB0MVxuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIGxldCBib3RoID0gbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gRWl0aGVyLkZpcnN0IHggZWxzZSBFaXRoZXIuU2Vjb25kIHgpIGluXG4gIGxldCB0cnVlcyA9XG4gICAgZmlsdGVyX21hcCBib3RoIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCB4IC0+IFNvbWUgeFxuICAgICAgfCBTZWNvbmQgXyAtPiBOb25lKVxuICBpblxuICBsZXQgZmFsc2VzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IF8gLT4gTm9uZVxuICAgICAgfCBTZWNvbmQgeCAtPiBTb21lIHgpXG4gIGluXG4gIHRydWVzLCBmYWxzZXNcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIF9pIHggLT4gZiB4KVxubGV0IGxhc3QgdCA9IHQuKGxlbmd0aCB0IC0gMSlcblxuKCogQ29udmVydCB0byBhIHNlcXVlbmNlIGJ1dCBkb2VzIG5vdCBhdHRlbXB0IHRvIHByb3RlY3QgYWdhaW5zdCBtb2RpZmljYXRpb25cbiAgIGluIHRoZSBhcnJheS4gKilcbmxldCB0b19zZXF1ZW5jZV9tdXRhYmxlIHQgPVxuICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPlxuICAgIGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBTZXF1ZW5jZS5TdGVwLkRvbmUgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkICh0LihpKSwgaSArIDEpKVxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19zZXF1ZW5jZV9tdXRhYmxlIChjb3B5IHQpXG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCB0MSB0MiA9XG4gIGlmIGlzX2VtcHR5IHQxIHx8IGlzX2VtcHR5IHQyXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuOihuMSAqIG4yKSAodDEuKDApLCB0Mi4oMCkpIGluXG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIGZvciBpMSA9IDAgdG8gbjEgLSAxIGRvXG4gICAgICBmb3IgaTIgPSAwIHRvIG4yIC0gMSBkb1xuICAgICAgICB0LighcikgPC0gdDEuKGkxKSwgdDIuKGkyKTtcbiAgICAgICAgaW5jciByXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHRyYW5zcG9zZSB0dCA9XG4gIGlmIGxlbmd0aCB0dCA9IDBcbiAgdGhlbiBTb21lIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHdpZHRoID0gbGVuZ3RoIHR0IGluXG4gICAgbGV0IGRlcHRoID0gbGVuZ3RoIHR0LigwKSBpblxuICAgIGlmIGV4aXN0cyB0dCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQgPD4gZGVwdGgpXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChpbml0IGRlcHRoIH5mOihmdW4gZCAtPiBpbml0IHdpZHRoIH5mOihmdW4gdyAtPiB0dC4odykuKGQpKSkpKVxuOztcblxubGV0IHRyYW5zcG9zZV9leG4gdHQgPVxuICBtYXRjaCB0cmFuc3Bvc2UgdHQgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS50cmFuc3Bvc2VfZXhuXCJcbiAgfCBTb21lIHR0JyAtPiB0dCdcbjs7XG5cbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBbfHxdXG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiB0LigwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnQgPSBTb3J0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXQgYWxsIHZhbHVlcyBvZiB0eXBlIFt0XSBkbyBub3QgaGF2ZSB0aGUgdGFnXG4gICBbZG91YmxlX2FycmF5X3RhZ10uICBTb21lIGZ1bmN0aW9ucyBiZWxvdyBhc3N1bWUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0ZXN0aW5nIHRoZVxuICAgdGFnLCBhbmQgd2lsbCBzZWdmYXVsdCBpZiB0aGlzIHByb3BlcnR5IGRvZXNuJ3QgaG9sZC4gKilcbnR5cGUgdCA9IENhbWwuT2JqLnQgYXJyYXlcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChDYW1sLk9iai50YWcgKENhbWwuT2JqLnJlcHIgdCkgPD4gQ2FtbC5PYmouZG91YmxlX2FycmF5X3RhZylcbmxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggKCogd291bGQgY2hlY2sgZm9yIGZsb2F0IGFycmF5cyBpbiAzMiBiaXQsIGJ1dCB3aGF0ZXZlciAqKVxuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBTZXhwLkF0b21cbiAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBcIjxPYmpfYXJyYXkudCBvZiBsZW5ndGggXCI7IEludC50b19zdHJpbmcgKGxlbmd0aCB0KTsgXCI+XCIgXSlcbjs7XG5cbmxldCB6ZXJvX29iaiA9IENhbWwuT2JqLnJlcHIgKDAgOiBpbnQpXG5cbigqIFdlIGNhbGwgW0FycmF5LmNyZWF0ZV0gd2l0aCBhIHZhbHVlIHRoYXQgaXMgbm90IGEgZmxvYXQgc28gdGhhdCB0aGUgYXJyYXkgZG9lc24ndCBnZXRcbiAgIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbmxldCBjcmVhdGVfemVybyB+bGVuID0gQXJyYXkuY3JlYXRlIH5sZW4gemVyb19vYmpcbmxldCBlbXB0eSA9IFt8fF1cblxudHlwZSBub3RfYV9mbG9hdCA9XG4gIHwgTm90X2FfZmxvYXRfMFxuICB8IE5vdF9hX2Zsb2F0XzEgb2YgaW50XG5cbmxldCBfbm90X2FfZmxvYXRfMCA9IE5vdF9hX2Zsb2F0XzBcbmxldCBfbm90X2FfZmxvYXRfMSA9IE5vdF9hX2Zsb2F0XzEgNDJcblxubGV0IGdldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gIEl0IGlzIE5PVCBvayB0byB1c2UgW2ludCBhcnJheV0gc2luY2UgKGlmXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgaW5saW5lZCBhbmQgdGhlIGFycmF5IGNvbnRhaW5zIGluLWhlYXAgYm94ZWQgdmFsdWVzKSB3cm9uZyByZWdpc3RlclxuICAgICB0eXBpbmcgbWF5IHJlc3VsdCwgbGVhZGluZyB0byBhIGZhaWx1cmUgdG8gcmVnaXN0ZXIgbmVjZXNzYXJ5IEdDIHJvb3RzLiAqKVxuICBDYW1sLk9iai5yZXByICgoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KS4oaSkgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX2dldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbiAgQ2FtbC5PYmoucmVwclxuICAgIChBcnJheS51bnNhZmVfZ2V0IChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpIGkgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmogPVxuICAoKiBTYW1lIGNvbW1lbnQgYXMgW3Vuc2FmZV9nZXRdLiBTeXMub3BhcXVlX2lkZW50aXR5IHByZXZlbnRzIHRoZSBjb21waWxlciBmcm9tXG4gICAgIHBvdGVudGlhbGx5IHdyb25nbHkgZ3Vlc3NpbmcgdGhlIHR5cGUgb2YgdGhlIGFycmF5IGJhc2VkIG9uIHRoZSB0eXBlIG9mIGVsZW1lbnQsIHRoYXRcbiAgICAgaXMgcHJldmVudCB0aGUgaW1wbGljYXRpb246IChPYmoudGFnIG9iaiA9IE9iai5kb3VibGVfdGFnKSA9PiAoT2JqLnRhZyB0ID1cbiAgICAgT2JqLmRvdWJsZV9hcnJheV90YWcpIHdoaWNoIGZsYW1iZGEgaGFzIHRyaWVkIGluIHRoZSBwYXN0IChhdCBsZWFzdCB0aGF0J3MgYXNzdW1pbmdcbiAgICAgdGhlIGNvbXBpbGVyIHJlc3BlY3RzIFN5cy5vcGFxdWVfaWRlbnRpdHksIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIGNhc2UpLiAqKVxuICBBcnJheS51bnNhZmVfc2V0XG4gICAgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSlcbiAgICBpXG4gICAgKENhbWwuT2JqLm9iaiAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvYmopIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmogPVxuICAoKiBzYW1lIGFzIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSBidXQgc2FmZSAqKVxuICAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KS4oaSlcbiAgPC0gKENhbWwuT2JqLm9iaiAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvYmopIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIGludCA9XG4gICgqIFRoaXMgc2tpcHMgW2NhbWxfbW9kaWZ5XSwgd2hpY2ggaXMgT0sgaWYgYm90aCB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzIGFyZSBpbnRlZ2Vycy4gKilcbiAgQXJyYXkudW5zYWZlX3NldCAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IGludCBhcnJheSkgaSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBpbnQpXG47O1xuXG4oKiBGb3IgW3NldF0gYW5kIFt1bnNhZmVfc2V0XSwgaWYgYSBwb2ludGVyIGlzIGludm9sdmVkLCB3ZSBmaXJzdCBkbyBhIHBoeXNpY2FsLWVxdWFsaXR5XG4gICB0ZXN0IHRvIHNlZSBpZiB0aGUgcG9pbnRlciBpcyBjaGFuZ2luZy4gIElmIG5vdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyB0aGUgW3NldF0sIHdoaWNoXG4gICBzYXZlcyBhIGNhbGwgdG8gW2NhbWxfbW9kaWZ5XS4gIFdlIHRoaW5rIHRoaXMgcGh5c2ljYWwtZXF1YWxpdHkgdGVzdCBpcyB3b3J0aCBpdFxuICAgYmVjYXVzZSBpdCBpcyB2ZXJ5IGNoZWFwIChib3RoIHZhbHVlcyBhcmUgYWxyZWFkeSBhdmFpbGFibGUgZnJvbSB0aGUgW2lzX2ludF0gdGVzdClcbiAgIGFuZCBiZWNhdXNlIFtjYW1sX21vZGlmeV0gaXMgZXhwZW5zaXZlLiAqKVxuXG5sZXQgc2V0IHQgaSBvYmogPVxuICAoKiBXZSB1c2UgW2dldF0gZmlyc3QgYnV0IHRoZW4gd2UgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBzaW5jZSB3ZSBrbm93IHRoYXQgW2ldIGlzXG4gICAgIHZhbGlkLiAqKVxuICBsZXQgb2xkX29iaiA9IGdldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmogJiYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0IHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqICYmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmogJiYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBhID0gZ2V0IHQgaSBpblxuICBsZXQgYiA9IGdldCB0IGogaW5cbiAgdW5zYWZlX3NldCB0IGkgYjtcbiAgdW5zYWZlX3NldCB0IGogYVxuOztcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICAoKiBJZiB3ZSBjYW4sIHVzZSBbQXJyYXkuY3JlYXRlXSBkaXJlY3RseS4gKilcbiAgaWYgQ2FtbC5PYmoudGFnIHggPD4gQ2FtbC5PYmouZG91YmxlX3RhZ1xuICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIHhcbiAgZWxzZSAoXG4gICAgKCogT3RoZXJ3aXNlIHVzZSBbY3JlYXRlX3plcm9dIGFuZCBzZXQgdGhlIGNvbnRlbnRzICopXG4gICAgbGV0IHQgPSBjcmVhdGVfemVybyB+bGVuIGluXG4gICAgbGV0IHggPSBTeXMub3BhcXVlX2lkZW50aXR5IHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4XG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHNpbmdsZXRvbiBvYmogPSBjcmVhdGUgfmxlbjoxIG9ialxuXG4oKiBQcmUtY29uZGl0aW9uOiB0LihpKSBpcyBhbiBpbnRlZ2VyLiAqKVxubGV0IHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgb2JqID1cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlXG4gICAgKCogW3QuKGkpXSBpcyBhbiBpbnRlZ2VyIGFuZCBbb2JqXSBpcyBub3QsIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgYXJlXG4gICAgICAgZXF1YWwuICopXG4gICAgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludCB0IGkgaW50ID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIGludFxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgaW50KVxuOztcblxubGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgaSA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgbm90IChDYW1sLk9iai5pc19pbnQgb2xkX29iaikgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIDApXG47O1xuXG4oKiogW3Vuc2FmZV9ibGl0XSBpcyBsaWtlIFtBcnJheS5ibGl0XSwgZXhjZXB0IGl0IHVzZXMgb3VyIG93biBmb3ItbG9vcCB0byBhdm9pZFxuICAgIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUuICBJdHMgcGVyZm9ybWFuY2UgaXMgc3RpbGwgbm90IGNvbXBhcmFibGUgdG8gYSBtZW1jcHkuICopXG5sZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAoKiBXaGVuIFtwaHlzX2VxdWFsIHNyYyBkc3RdLCB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgW2RzdF9wb3MgPCBzcmNfcG9zXSBhbmQgaGF2ZSB0aGVcbiAgICAgZm9yIGxvb3AgZ28gaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiBzbyB0aGF0IHdlIGRvbid0IG92ZXJ3cml0ZSBkYXRhIHRoYXQgd2Ugc3RpbGwgbmVlZFxuICAgICB0byByZWFkLiAgV2hlbiBbbm90IChwaHlzX2VxdWFsIHNyYyBkc3QpXSwgZG9pbmcgdGhpcyBpcyBoYXJtbGVzcy4gIEZyb20gYVxuICAgICBtZW1vcnktcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgb25lIGxvb3BzIHVwIG9yIGRvd24uXG4gICAgIENvbnN0YW50LXN0cmlkZSBhY2Nlc3MsIGZvcndhcmQgb3IgYmFja3dhcmQsIHNob3VsZCBiZSBpbmRpc3Rpbmd1aXNoYWJsZSAoYXQgbGVhc3Qgb25cbiAgICAgYW4gaW50ZWwgaTcpLiAgU28sIHdlIGRvbid0IGRvIGEgY2hlY2sgZm9yIFtwaHlzX2VxdWFsIHNyYyBkc3RdIGFuZCBhbHdheXMgbG9vcCB1cCBpblxuICAgICB0aGF0IGNhc2UuICopXG4gIGlmIGRzdF9wb3MgPCBzcmNfcG9zXG4gIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG4gIGVsc2VcbiAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuOztcblxuaW5jbHVkZSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlX3plcm9cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSBzcmMgPVxuICBsZXQgZHN0ID0gY3JlYXRlX3plcm8gfmxlbjoobGVuZ3RoIHNyYykgaW5cbiAgYmxpdG8gfnNyYyB+ZHN0ICgpO1xuICBkc3Rcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogV0FSTklORzpcbiAgIFdlIHVzZSBub24tbWVtb3J5LXNhZmUgdGhpbmdzIHRocm91Z2hvdXQgdGhlIFtUcnVzdGVkXSBtb2R1bGUuXG4gICBNb3N0IG9mIGl0IGlzIG9ubHkgc2FmZSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSB0eXBlIHNpZ25hdHVyZSAoZS5nLiBleHBvc2luZ1xuICAgW3ZhbCBjb3B5IDogJ2EgdCAtPiAnYiB0XSB3b3VsZCBiZSBhIGJpZyBtaXN0YWtlKS4gKilcbm1vZHVsZSBUcnVzdGVkIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX29ial9hcnJheSA6IGxlbjppbnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYSB0XG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc3dhcCA6IF8gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgdW5zYWZlX3NldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBCbGl0LmJsaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIDogXyB0IC0+IGludCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gT2JqX2FycmF5LnRcblxuICBsZXQgZW1wdHkgPSBPYmpfYXJyYXkuZW1wdHlcbiAgbGV0IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZV9vYmpfYXJyYXkgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGUgfmxlbiB4ID0gT2JqX2FycmF5LmNyZWF0ZSB+bGVuIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCBzaW5nbGV0b24geCA9IE9ial9hcnJheS5zaW5nbGV0b24gKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHN3YXAgdCBpIGogPSBPYmpfYXJyYXkuc3dhcCB0IGkgalxuICBsZXQgZ2V0IGFyciBpID0gQ2FtbC5PYmoub2JqIChPYmpfYXJyYXkuZ2V0IGFyciBpKVxuICBsZXQgc2V0IGFyciBpIHggPSBPYmpfYXJyYXkuc2V0IGFyciBpIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfZ2V0IGFyciBpID0gQ2FtbC5PYmoub2JqIChPYmpfYXJyYXkudW5zYWZlX2dldCBhcnIgaSlcbiAgbGV0IHVuc2FmZV9zZXQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0IGFyciBpIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfc2V0X2ludCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50IGFyciBpIHhcblxuICBsZXQgdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIChDYW1sLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9IE9ial9hcnJheS5sZW5ndGhcbiAgbGV0IHVuc2FmZV9ibGl0ID0gT2JqX2FycmF5LnVuc2FmZV9ibGl0XG4gIGxldCBjb3B5ID0gT2JqX2FycmF5LmNvcHlcblxuICBsZXQgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgKENhbWwuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9IE9ial9hcnJheS5zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyID0gT2JqX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyXG5lbmRcblxuaW5jbHVkZSBUcnVzdGVkXG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAoQ2FtbC5PYmoudGFnIChDYW1sLk9iai5yZXByIHQpIDw+IENhbWwuT2JqLmRvdWJsZV9hcnJheV90YWcpXG5cbmxldCBpbml0IGwgfmYgPVxuICBpZiBsIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiVW5pZm9ybV9hcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOmwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBvZl9hcnJheSBhcnIgPSBpbml0IH5mOihBcnJheS51bnNhZmVfZ2V0IGFycikgKEFycmF5Lmxlbmd0aCBhcnIpXG5sZXQgbWFwIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSlcbmxldCBtYXBpIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmIGkgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKVxuXG5sZXQgaXRlciBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgZm9sZGkgYSB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCB+ZjooZ2V0IHQpIChsZW5ndGggdClcblxubGV0IG9mX2xpc3QgbCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIHggLT4gc2V0IHJlcyBpIHgpO1xuICByZXNcbjs7XG5cbigqIEl0IGlzIG5vdCBzYWZlIGZvciBbdG9fYXJyYXldIHRvIGJlIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBiZWNhdXNlIHdlIGhhdmUgY29kZSB0aGF0XG4gICByZWxpZXMgb24gW2Zsb2F0IGFycmF5XXMgYmVpbmcgdW5ib3hlZCwgZm9yIGV4YW1wbGUgaW4gW2Jpbl93cml0ZV9hcnJheV0uICopXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gZmFsc2UgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IH5mIChpIC0gMSlcbiAgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9IGlmIGkgPCAwIHRoZW4gdHJ1ZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSAmJiBsb29wIHQgfmYgKGkgLSAxKSBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGxldCBsZW4gPSBsZW5ndGggdDEgaW5cbiAgaWYgbGVuZ3RoIHQyIDw+IGxlbiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMl9leG5cIjtcbiAgaW5pdCBsZW4gfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAoZ3JhbW1hciA6IGVsdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBlbHQgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKEFycmF5LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5pbmNsdWRlXG4gIFNleHBhYmxlLk9mX3NleHBhYmxlMVxuICAgIChBcnJheSlcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19hcnJheVxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBlbXB0eVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gKGdldCB0IDApKVxuICAgIDs7XG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbigqIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHBweF9jb21wYXJlIFtjb21wYXJlX2FycmF5XSBidXQgdXNlcyBvdXIgW3Vuc2FmZV9nZXRdIGFuZCBbbGVuZ3RoXS4gKilcbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGEgYiA9XG4gIGlmIHBoeXNfZXF1YWwgYSBiXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuX2EgPSBsZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IGxlbmd0aCBiIGluXG4gICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICBpZiByZXQgPD4gMFxuICAgIHRoZW4gcmV0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGwgPSB1bnNhZmVfZ2V0IGEgaVxuICAgICAgICAgIGFuZCByID0gdW5zYWZlX2dldCBiIGkgaW5cbiAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICBpblxuICAgICAgbG9vcCAwKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBjZWlsID0gQ2FtbC5jZWlsXG5sZXQgZmxvb3IgPSBDYW1sLmZsb29yXG5sZXQgbW9kX2Zsb2F0ID0gQ2FtbC5tb2RfZmxvYXRcbmxldCBtb2RmID0gQ2FtbC5tb2RmXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gQ2FtbC5mbG9hdF9vZl9zdHJpbmdcbmxldCBuYW4gPSBDYW1sLm5hblxubGV0IGluZmluaXR5ID0gQ2FtbC5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IENhbWwubmVnX2luZmluaXR5XG5sZXQgbWF4X2Zpbml0ZV92YWx1ZSA9IENhbWwubWF4X2Zsb2F0XG5sZXQgZXBzaWxvbl9mbG9hdCA9IENhbWwuZXBzaWxvbl9mbG9hdFxubGV0IGNsYXNzaWZ5X2Zsb2F0ID0gQ2FtbC5jbGFzc2lmeV9mbG9hdFxubGV0IGFic19mbG9hdCA9IENhbWwuYWJzX2Zsb2F0XG5sZXQgaXNfaW50ZWdlciA9IENhbWwuRmxvYXQuaXNfaW50ZWdlclxubGV0ICggKiogKSA9IENhbWwuKCAqKiApXG5cbmxldCAoICUuICkgYSBiID1cbiAgKCogUmFpc2UgaW4gY2FzZSBvZiBhIG5lZ2F0aXZlIG1vZHVsdXMsIGFzIGRvZXMgSW50LiggJSApLiAqKVxuICBpZiBiIDwgMC5cbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiJWYgJSUgJWYgaW4gZmxvYXQwLm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiIGEgYiAoKTtcbiAgbGV0IG0gPSBDYW1sLm1vZF9mbG9hdCBhIGIgaW5cbiAgKCogUHJvZHVjZSBhIG5vbi1uZWdhdGl2ZSByZXN1bHQgaW4gYW5hbG9neSB3aXRoIEludC4oICUgKS4gKilcbiAgaWYgbSA8IDAuIHRoZW4gbSArLiBiIGVsc2UgbVxuOztcblxuKCogVGhlIGJpdHMgb2YgSU5SSUEncyBbUGVydmFzaXZlc10gdGhhdCB3ZSBqdXN0IHdhbnQgdG8gZXhwb3NlIGluIFtGbG9hdF0uIE1vc3QgYXJlXG4gICBhbHJlYWR5IGRlcHJlY2F0ZWQgaW4gW1BlcnZhc2l2ZXNdLCBhbmQgZXZlbnR1YWxseSBhbGwgb2YgdGhlbSBzaG91bGQgYmUuICopXG5pbmNsdWRlIChcbiAgQ2FtbCA6XG4gIHNpZ1xuICAgIGV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuXG4gICAgZXh0ZXJuYWwgbGRleHBcbiAgICAgIDogIChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgICAtPiAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiXG4gICAgW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gIGVuZClcblxuKCogV2UgbmVlZCB0aGlzIGluZGlyZWN0aW9uIGJlY2F1c2UgdGhlc2UgYXJlIGV4cG9zZWQgYXMgXCJ2YWxcIiBpbnN0ZWFkIG9mIFwiZXh0ZXJuYWxcIiAqKVxubGV0IGZyZXhwID0gZnJleHBcbmxldCBsZGV4cCA9IGxkZXhwXG5sZXQgaXNfbmFuIHggPSAoeCA6IGZsb2F0KSA8PiB4XG5cbigqIEFuIG9yZGVyLXByZXNlcnZpbmcgYmlqZWN0aW9uIGJldHdlZW4gYWxsIGZsb2F0cyBleGNlcHQgZm9yIE5hTnMsIGFuZCA5OS45NSUgb2ZcbiAgIGludDY0cy5cblxuICAgTm90ZSB3ZSBkb24ndCBkaXN0aW5ndWlzaCAwLiBhbmQgLTAuIGFzIHNlcGFyYXRlIHZhbHVlcyBoZXJlLCB0aGV5IGJvdGggbWFwIHRvIDBMLCB3aGljaFxuICAgbWFwcyBiYWNrIHRvIDAuXG5cbiAgIFRoaXMgc2hvdWxkIHdvcmsgYm90aCBvbiBsaXR0bGUtZW5kaWFuIGFuZCBoaWdoLWVuZGlhbiBDUFVzLiAgV2lraXBlZGlhIHNheXM6IFwib25cbiAgIG1vZGVybiBzdGFuZGFyZCBjb21wdXRlcnMgKGkuZS4sIGltcGxlbWVudGluZyBJRUVFIDc1NCksIG9uZSBtYXkgaW4gcHJhY3RpY2Ugc2FmZWx5XG4gICBhc3N1bWUgdGhhdCB0aGUgZW5kaWFubmVzcyBpcyB0aGUgc2FtZSBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcyBmb3IgaW50ZWdlcnNcIlxuICAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5kaWFubmVzcyNGbG9hdGluZy1wb2ludF9hbmRfZW5kaWFubmVzcykuXG4qKVxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgPVxuICBpZiBpc19uYW4gdFxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiAoKiBhbHNvIGluY2x1ZGVzIC0wLiAqKVxuICAgIFNvbWUgMExcbiAgZWxzZSBpZiB0ID4gMC5cbiAgdGhlbiBTb21lIChDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdClcbiAgZWxzZSBTb21lIChDYW1sLkludDY0Lm5lZyAoQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0ICgtLnQpKSlcbjs7XG5cbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4geCA9IE9wdGlvbi52YWx1ZV9leG4gKHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHgpXG5cbmxldCBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4ID1cbiAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSB4IDBMXG4gIHRoZW4gQ2FtbC5JbnQ2NC5mbG9hdF9vZl9iaXRzIHhcbiAgZWxzZSB+LS4oQ2FtbC5JbnQ2NC5mbG9hdF9vZl9iaXRzIChDYW1sLkludDY0Lm5lZyB4KSlcbjs7XG5cbmxldCBvbmVfdWxwIGRpciB0ID1cbiAgbWF0Y2ggdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCB3aXRoXG4gIHwgTm9uZSAtPiBDYW1sLm5hblxuICB8IFNvbWUgeCAtPlxuICAgIG9mX2ludDY0X3ByZXNlcnZlX29yZGVyXG4gICAgICAoQ2FtbC5JbnQ2NC5hZGRcbiAgICAgICAgIHhcbiAgICAgICAgIChtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgIHwgYFVwIC0+IDFMXG4gICAgICAgICAgfCBgRG93biAtPiAtMUwpKVxuOztcblxuKCogW3VwcGVyX2JvdW5kX2Zvcl9pbnRdIGFuZCBbbG93ZXJfYm91bmRfZm9yX2ludF0gYXJlIGZvciBjYWxjdWxhdGluZyB0aGUgbWF4L21pbiBmbG9hdFxuICAgdGhhdCBmaXRzIGluIGEgZ2l2ZW4tc2l6ZSBpbnRlZ2VyIHdoZW4gcm91bmRlZCB0b3dhcmRzIDAgKHVzaW5nIFtpbnRfb2ZfZmxvYXRdKS5cblxuICAgbWF4X2ludC9taW5faW50IGRlcGVuZCBvbiBbbnVtX2JpdHNdLCBlLmcuICsvLSAyXjMwLCArLy0gMl42MiBpZiAzMS1iaXQsIDYzLWJpdFxuICAgKHJlc3BlY3RpdmVseSkgd2hpbGUgZmxvYXQgaXMgSUVFRSBzdGFuZGFyZCBmb3IgZG91YmxlICg1MiBzaWduaWZpY2FudCBiaXRzKS5cblxuICAgSW4gYWxsIGNhc2VzLCB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGF0XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCA8PSB4IDw9IHVwcGVyX2JvdW5kX2Zvcl9pbnRdXG4gICBpZmYgW2ludF9vZl9mbG9hdCB4XSBmaXRzIGluIGFuIGludCB3aXRoIFtudW1fYml0c10gYml0cy5cblxuICAgWzIgKiogKG51bV9iaXRzIC0gMSldIGlzIHRoZSBmaXJzdCBmbG9hdCBncmVhdGVyIHRoYXQgbWF4X2ludCwgd2UgdXNlIHRoZSBwcmVjZWRpbmdcbiAgIGZsb2F0IGFzIHVwcGVyIGJvdW5kLlxuXG4gICBbLSAoMiAqKiAobnVtX2JpdHMgLSAxKSldIGlzIGVxdWFsIHRvIG1pbl9pbnQuXG4gICBGb3IgbG93ZXIgYm91bmQgd2UgbG9vayBmb3IgdGhlIHNtYWxsZXN0IGZsb2F0IFtmXSBzYXRpc2Z5aW5nIFtmID4gbWluX2ludCAtIDFdIHNvIHRoYXRcbiAgIFtmXSByb3VuZHMgdG93YXJkIHplcm8gdG8gW21pbl9pbnRdXG5cbiAgIFNvIGluIHBhcnRpY3VsYXIgd2Ugd2lsbCBoYXZlOlxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgeCA8PSAtICgyICoqICgxLXgpKV1cbiAgIFt1cHBlcl9ib3VuZF9mb3JfaW50IHggIDwgICAgMiAqKiAoMS14KSBdXG4qKVxubGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gQ2FtbC5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgb25lX3VscCBgRG93biAoMi4gKiogZXhwKVxuOztcblxubGV0IGlzX3hfbWludXNfb25lX2V4YWN0IHggPVxuICAoKiBbeCA9IHggLS4gMS5dIGRvZXMgbm90IHdvcmsgd2l0aCB4ODcgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYWNrZW5kICh3aGljaCBpcyB1c2VkXG4gICAgIG9uIDMyLWJpdCBvY2FtbCkgYmVjYXVzZSBvZiA4MC1iaXQgcmVnaXN0ZXIgcHJlY2lzaW9uIG9mIGludGVybWVkaWF0ZSBjb21wdXRhdGlvbnMuXG5cbiAgICAgQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGNvbXB1dGluZyB0aGlzOiBbeCAtLiBvbmVfdWxwIGBEb3duIHggPD0gMS5dIGlzIGFsc28gcHJvbmUgdG9cbiAgICAgdGhlIHNhbWUgcHJlY2lzaW9uIGlzc3VlczogeW91IG5lZWQgdG8gbWFrZSBzdXJlIFt4XSBpcyA2NC1iaXQuXG4gICopXG4gIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBub3QgKENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB4ID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0ICh4IC0uIDEuKSlcbjs7XG5cbmxldCBsb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IENhbWwuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIGxldCBtaW5faW50X2FzX2Zsb2F0ID0gfi0uKDIuICoqIGV4cCkgaW5cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBudW1fYml0cyAtIDEgPCA1MyAoKiA1MyA9ICNiaXRzIGluIHRoZSBmbG9hdCdzIG1hbnRpc3NhIHdpdGggc2lnbiBpbmNsdWRlZCAqKVxuICB0aGVuIChcbiAgICAoKiBUaGUgc21hbGxlc3QgZmxvYXQgdGhhdCByb3VuZHMgdG93YXJkcyB6ZXJvIHRvIFttaW5faW50XSBpc1xuICAgICAgIFttaW5faW50IC0gMSArIGVwc2lsb25dICopXG4gICAgYXNzZXJ0IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KTtcbiAgICBvbmVfdWxwIGBVcCAobWluX2ludF9hc19mbG9hdCAtLiAxLikpXG4gIGVsc2UgKFxuICAgICgqIFttaW5faW50X2FzX2Zsb2F0XSBpcyBhbHJlYWR5IHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXS4gKilcbiAgICBhc3NlcnQgKG5vdCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCkpO1xuICAgIG1pbl9pbnRfYXNfZmxvYXQpXG47O1xuXG4oKiBGbG9hdCBjbGFtcGluZyBpcyBzdHJ1Y3R1cmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gY2xhbXBpbmcgZm9yIG90aGVyIHR5cGVzLCBzb1xuICAgdGhhdCB3ZSBnZXQgdGhlIGJlaGF2aW9yIG9mIFtjbGFtcF91bmNoZWNrZWQgbmFuIH5taW4gfm1heCA9IG5hbl0gKGZvciBhbnkgW21pbl0gYW5kXG4gICBbbWF4XSkgZm9yIGZyZWUuXG4qKVxubGV0IGNsYW1wX3VuY2hlY2tlZCAodCA6IGZsb2F0KSB+bWluIH5tYXggPVxuICBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgbWF4IDwgdCB0aGVuIG1heCBlbHNlIHRcbjs7XG5cbmxldCBib3ggPVxuICAoKiBQcmV2ZW50IHBvdGVudGlhbCBjb25zdGFudCBmb2xkaW5nIG9mIFsrLiAwLl0gaW4gdGhlIG5lYXIgb2NhbWxvcHQgZnV0dXJlLiAqKVxuICBsZXQgeCA9IFN5czAub3BhcXVlX2lkZW50aXR5IDAuIGluXG4gIGZ1biBmIC0+IGYgKy4geFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5pbmNsdWRlIENoYXIwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2NoYXIgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfY2hhclxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfY2hhciBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubWFrZSAxIHRcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggcyB3aXRoXG4gICAgfCAxIC0+IHMuWzBdXG4gICAgfCBfIC0+IGZhaWx3aXRoZiBcIkNoYXIub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQ2hhclwiXG4gIGVuZClcblxubGV0IHBwIGZtdCBjID0gQ2FtbC5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlQ1wiIGNcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBhbGwgPSBBcnJheS5pbml0IDI1NiB+Zjp1bnNhZmVfb2ZfaW50IHw+IEFycmF5LnRvX2xpc3RcblxubGV0IGlzX2xvd2VyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3VwcGVyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3ByaW50ID0gZnVuY3Rpb25cbiAgfCAnICcgLi4gJ34nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXDAxMScgKCogdmVydGljYWwgdGFiICopIHwgJ1xcMDEyJyAoKiBmb3JtIGZlZWQgKikgfCAnXFxyJyB8ICcgJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfYWxwaGEgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG4oKiBXcml0aW5nIHRoZXNlIG91dCwgaW5zdGVhZCBvZiBjYWxsaW5nIFtpc19hbHBoYV0gYW5kIFtpc19kaWdpdF0sIHJlZHVjZXNcbiAgIHJ1bnRpbWUgYnkgYXBwcm94LiAzMCUgKilcbmxldCBpc19hbHBoYW51bSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2RpZ2l0X3Vuc2FmZSB0ID0gdG9faW50IHQgLSB0b19pbnQgJzAnXG5cbmxldCBnZXRfZGlnaXRfZXhuIHQgPVxuICBpZiBpc19kaWdpdCB0XG4gIHRoZW4gZ2V0X2RpZ2l0X3Vuc2FmZSB0XG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5nZXRfZGlnaXRfZXhuICVDOiBub3QgYSBkaWdpdFwiIHQgKClcbjs7XG5cbmxldCBnZXRfZGlnaXQgdCA9IGlmIGlzX2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfZGlnaXRfdW5zYWZlIHQpIGVsc2UgTm9uZVxuXG5sZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfbG93ZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X3VwcGVyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9oZXhfZGlnaXRfZXhuID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJzAnXG4gIHwgJ2EnIC4uICdmJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdhJyArIDEwXG4gIHwgJ0EnIC4uICdGJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdBJyArIDEwXG4gIHwgdCAtPlxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiQ2hhci5nZXRfaGV4X2RpZ2l0X2V4bjogbm90IGEgaGV4YWRlY2ltYWwgZGlnaXRcIlxuICAgICAgICAgWyBcImNoYXJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0IHQgPSBpZiBpc19oZXhfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9oZXhfZGlnaXRfZXhuIHQpIGVsc2UgTm9uZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuZW5kXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIGMxIGMyID0gY29tcGFyZSAobG93ZXJjYXNlIGMxKSAobG93ZXJjYXNlIGMyKVxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2NoYXIgc3RhdGUgKGxvd2VyY2FzZSB0KVxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydDAuSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG4oKiBDb25zdHJ1Y3QgYSBieXRlIHN0cmluZyBvZiBsZW5ndGggMjU2LCBtYXBwaW5nIGV2ZXJ5IGlucHV0IGNoYXJhY3RlciBjb2RlIHRvXG4gICBpdHMgY29ycmVzcG9uZGluZyBvdXRwdXQgY2hhcmFjdGVyLlxuXG4gICBCZW5jaG1hcmtzIGluZGljYXRlIHRoYXQgdGhpcyBpcyBmYXN0ZXIgdGhhbiB0aGUgbGFtYmRhIChpbmNsdWRpbmcgY29zdCBvZlxuICAgdGhpcyBmdW5jdGlvbiksIGV2ZW4gaWYgdGFyZ2V0L3JlcGxhY2VtZW50IGFyZSBqdXN0IDIgY2hhcmFjdGVycyBlYWNoLlxuXG4gICBSZXR1cm4gTm9uZSBpZiB0aGUgdHJhbnNsYXRpb24gbWFwIGlzIGVxdWl2YWxlbnQgdG8ganVzdCB0aGUgaWRlbnRpdHkuICopXG5sZXQgdHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGxldCB0cl9tYXAgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAtIDEgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggKFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IGkpXG4gIGRvbmU7XG4gIGxldCBsYXN0X3JlcGxhY2VtZW50ID0gU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQgLSAxKSBpblxuICBmb3JcbiAgICBpID0gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIHRvIFN0cmluZy5sZW5ndGggdGFyZ2V0IC0gMVxuICBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCBsYXN0X3JlcGxhY2VtZW50XG4gIGRvbmU7XG4gIGxldCByZWMgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCBpID1cbiAgICBpZiBpID0gMjU2XG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCBpKSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIChpICsgMSlcbiAgaW5cbiAgKCogcXVpY2sgY2hlY2sgb24gdGhlIGZpcnN0IHRhcmdldCBjaGFyYWN0ZXIgd2hpY2ggd2lsbCA5OSUgYmUgdHJ1ZSAqKVxuICBsZXQgZmlyc3RfdGFyZ2V0ID0gdGFyZ2V0LlswXSBpblxuICBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBmaXJzdF90YXJnZXQpKSBmaXJzdF90YXJnZXRcbiAgfHwgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAwXG4gIHRoZW4gU29tZSAoQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dHJfbWFwKVxuICBlbHNlIE5vbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2FcblxubGV0IHN0YWdlID0gRm4uaWRcbmxldCB1bnN0YWdlID0gRm4uaWRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5pbmNsdWRlIFN0cmluZzBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxuKCogVGhpcyBhbGlhcyBpcyBuZWNlc3NhcnkgZGVzcGl0ZSBbU3RyaW5nMF0gZGVmaW5pbmcgW0J5dGVzID0gQnl0ZXMwXSwgaW4gb3JkZXIgdG9cbiAgIGNvbnZpbmNlIG9jYW1sZGVwIHRoYXQgdGhpcyBmaWxlIGRvZXNuJ3QgZGVwZW5kIG9uIGJ5dGVzLm1sLiAqKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9zdHJpbmdcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3N0cmluZyBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoc3RyaW5nX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbnR5cGUgZWx0ID0gY2hhclxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG4oKiBUaGlzIGlzIGNvcGllZC9hZGFwdGVkIGZyb20gJ2JsaXQubWwnLlxuICAgW3N1Yl0sIFtzdWJvXSBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbQmxpdC5NYWtlKEJ5dGVzKV0gcGx1cyB1bnNhZmUgY2FzdHMgdG8vZnJvbVxuICAgc3RyaW5nIGJ1dCB3ZXJlIGlubGluZWQgaGVyZSB0byBhdm9pZCB1c2luZyBbQnl0ZXMudW5zYWZlX29mX3N0cmluZ10gYXMgbXVjaCBhcyBwb3NzaWJsZS5cbiopXG5sZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPSAwICYmIGxlbiA9IFN0cmluZy5sZW5ndGggc3JjXG4gIHRoZW4gc3JjXG4gIGVsc2UgKFxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBzcmMpO1xuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFwiXCJcbiAgICBlbHNlIChcbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdCkpXG47O1xuXG5sZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgc3ViXG4gICAgc3JjXG4gICAgfnBvc1xuICAgIH5sZW46XG4gICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgfCBOb25lIC0+IGxlbmd0aCBzcmMgLSBwb3MpXG47O1xuXG5sZXQgcmVjIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF8gY2hhciA9XG4gIHBvcyA8IGVuZF9cbiAgJiYgKENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgdCBwb3MpIGNoYXIgfHwgY29udGFpbnNfdW5zYWZlIHQgfnBvczoocG9zICsgMSkgfmVuZF8gY2hhcilcbjs7XG5cbmxldCBjb250YWlucyA/KHBvcyA9IDApID9sZW4gdCBjaGFyID1cbiAgbGV0IHRvdGFsX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggdCBpblxuICBsZXQgbGVuID0gT3B0aW9uLnZhbHVlIGxlbiB+ZGVmYXVsdDoodG90YWxfbGVuZ3RoIC0gcG9zKSBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfOihwb3MgKyBsZW4pIGNoYXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCByZWMgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPj0gbGVuXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyArIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZXhuIHQgY2hhciA9IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2V4blxuOztcblxubGV0IGluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9mcm9tX2V4blxuOztcblxubGV0IHJlYyByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPCAwXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczoobGVuIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2V4biB0IGNoYXIgPSByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2V4blxuOztcblxubGV0IHJpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IC0xIHx8IHBvcyA+PSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IGluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbm1vZHVsZSBTZWFyY2hfcGF0dGVybjAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5ID0gXyB9IDogU2V4cC50ID1cbiAgICBMaXN0XG4gICAgICBbIExpc3QgWyBBdG9tIFwicGF0dGVyblwiOyBzZXhwX29mX3N0cmluZyBwYXR0ZXJuIF1cbiAgICAgIDsgTGlzdCBbIEF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmUgXVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBwYXR0ZXJuIHQgPSB0LnBhdHRlcm5cbiAgbGV0IGNhc2Vfc2Vuc2l0aXZlIHQgPSB0LmNhc2Vfc2Vuc2l0aXZlXG5cbiAgKCogRmluZCBtYXggbnVtYmVyIG9mIG1hdGNoZWQgY2hhcmFjdGVycyBhdCBbbmV4dF90ZXh0X2NoYXJdLCBnaXZlbiB0aGUgY3VycmVudFxuICAgICBbbWF0Y2hlZF9jaGFyc10uIFRyeSB0byBleHRlbmQgdGhlIGN1cnJlbnQgbWF0Y2gsIGlmIGNoYXJzIGRvbid0IG1hdGNoLCB0cnkgdG8gbWF0Y2hcbiAgICAgZmV3ZXIgY2hhcnMuIElmIGNoYXJzIG1hdGNoIHRoZW4gZXh0ZW5kIHRoZSBtYXRjaC4gKilcbiAgbGV0IGttcF9pbnRlcm5hbF9sb29wIH5tYXRjaGVkX2NoYXJzIH5uZXh0X3RleHRfY2hhciB+cGF0dGVybiB+a21wX2FycmF5IH5jaGFyX2VxdWFsID1cbiAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiBtYXRjaGVkX2NoYXJzIGluXG4gICAgd2hpbGVcbiAgICAgICFtYXRjaGVkX2NoYXJzID4gMFxuICAgICAgJiYgbm90IChjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpKVxuICAgIGRvXG4gICAgICBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5ICghbWF0Y2hlZF9jaGFycyAtIDEpXG4gICAgZG9uZTtcbiAgICBpZiBjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpXG4gICAgdGhlbiBtYXRjaGVkX2NoYXJzIDo9ICFtYXRjaGVkX2NoYXJzICsgMTtcbiAgICAhbWF0Y2hlZF9jaGFyc1xuICA7O1xuXG4gIGxldCBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIG1hdGNoIGNhc2Vfc2Vuc2l0aXZlIHdpdGhcbiAgICB8IHRydWUgLT4gQ2hhci5lcXVhbFxuICAgIHwgZmFsc2UgLT4gQ2hhci5DYXNlbGVzcy5lcXVhbFxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QIHByZS1wcm9jZXNzaW5nIG9mIHRoZSBwYXR0ZXJuOiBidWlsZCB0aGUgaW50IGFycmF5LCB3aGljaCwgZm9yIGVhY2ggaSxcbiAgICAgY29udGFpbnMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBub24tdHJpdmlhbCBwcmVmaXggb2YgcyB3aGljaCBpcyBlcXVhbCB0byBhIHN1ZmZpeFxuICAgICBlbmRpbmcgYXQgcy5baV0gKilcbiAgbGV0IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbGV0IG4gPSBsZW5ndGggcGF0dGVybiBpblxuICAgIGxldCBrbXBfYXJyYXkgPSBBcnJheS5jcmVhdGUgfmxlbjpuICgtMSkgaW5cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IDAgMDtcbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXI6KHVuc2FmZV9nZXQgcGF0dGVybiBpKVxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSBpICFtYXRjaGVkX2NoYXJzXG4gICAgICBkb25lKTtcbiAgICB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfVxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QOiB1c2UgdGhlIHByZS1wcm9jZXNzZWQgcGF0dGVybiB0byBvcHRpbWl6ZSBsb29rLWJlaGluZHMgb24gbm9uLW1hdGNoZXMuXG4gICAgIFdlIHJldHVybiBpbnQgdG8gYXZvaWQgYWxsb2NhdGlvbiBpbiBbaW5kZXhfZXhuXS4gLTEgbWVhbnMgbm8gbWF0Y2guICopXG4gIGxldCBpbmRleF9pbnRlcm5hbCA/KHBvcyA9IDApIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5pbl86dGV4dCA9XG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5ndGggdGV4dCAtIGxlbmd0aCBwYXR0ZXJuXG4gICAgdGhlbiAtMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBqID0gcmVmIHBvcyBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgd2hpbGUgIWogPCBuICYmICFtYXRjaGVkX2NoYXJzIDwgayBkb1xuICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgIWogaW5cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIGogOj0gIWogKyAxXG4gICAgICBkb25lO1xuICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrIHRoZW4gIWogLSBrIGVsc2UgLTEpXG4gIDs7XG5cbiAgbGV0IG1hdGNoZXMgdCBzdHIgPSBpbmRleF9pbnRlcm5hbCB0IH5pbl86c3RyID49IDBcblxuICBsZXQgaW5kZXggP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHBcbiAgOztcblxuICBsZXQgaW5kZXhfZXhuID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA+PSAwXG4gICAgdGhlbiBwXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiU3Vic3RyaW5nIG5vdCBmb3VuZFwiIFsgXCJzdWJzdHJpbmdcIiwgc2V4cF9vZl9zdHJpbmcgdC5wYXR0ZXJuIF0pXG4gIDs7XG5cbiAgbGV0IGluZGV4X2FsbCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+bWF5X292ZXJsYXAgfmluXzp0ZXh0ID1cbiAgICBpZiBsZW5ndGggcGF0dGVybiA9IDBcbiAgICB0aGVuIExpc3QuaW5pdCAoMSArIGxlbmd0aCB0ZXh0KSB+ZjpGbi5pZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIGxldCBmb3VuZCA9IHJlZiBbXSBpblxuICAgICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGZvdW5kIDo9IChqIC0gaykgOjogIWZvdW5kO1xuICAgICAgICAgICgqIHdlIGp1c3QgZm91bmQgYSBtYXRjaCBpbiB0aGUgcHJldmlvdXMgaXRlcmF0aW9uICopXG4gICAgICAgICAgbWF0Y2ggbWF5X292ZXJsYXAgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPiBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5IChrIC0gMSlcbiAgICAgICAgICB8IGZhbHNlIC0+IG1hdGNoZWRfY2hhcnMgOj0gMCk7XG4gICAgICAgIGlmIGogPCBuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCBqIGluXG4gICAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgICAgfmNoYXJfZXF1YWwpXG4gICAgICBkb25lO1xuICAgICAgTGlzdC5yZXYgIWZvdW5kKVxuICA7O1xuXG4gIGxldCByZXBsYWNlX2ZpcnN0ID9wb3MgdCB+aW5fOnMgfndpdGhfID1cbiAgICBtYXRjaCBpbmRleCA/cG9zIHQgfmluXzpzIHdpdGhcbiAgICB8IE5vbmUgLT4gc1xuICAgIHwgU29tZSBpIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArIGxlbl93aXRoIC0gbGVuX3QpIGluXG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjppO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp3aXRoXyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6aSB+bGVuOmxlbl93aXRoO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOihpICsgbGVuX3QpXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6KGkgKyBsZW5fd2l0aClcbiAgICAgICAgfmxlbjoobGVuX3MgLSBpIC0gbGVuX3QpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuXG4gIGxldCByZXBsYWNlX2FsbCB0IH5pbl86cyB+d2l0aF8gPVxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIG1hdGNoIG1hdGNoZXMgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgbnVtX21hdGNoZXMgPSBMaXN0Lmxlbmd0aCBtYXRjaGVzIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArICgobGVuX3dpdGggLSBsZW5fdCkgKiBudW1fbWF0Y2hlcykpIGluXG4gICAgICBsZXQgbmV4dF9kc3RfcG9zID0gcmVmIDAgaW5cbiAgICAgIGxldCBuZXh0X3NyY19wb3MgPSByZWYgMCBpblxuICAgICAgTGlzdC5pdGVyIG1hdGNoZXMgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBsZW4gPSBpIC0gIW5leHRfc3JjX3BvcyBpblxuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6IW5leHRfc3JjX3BvcyB+ZHN0IH5kc3RfcG9zOiFuZXh0X2RzdF9wb3MgfmxlbjtcbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgICB+c3JjOndpdGhfXG4gICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgIH5kc3RcbiAgICAgICAgICB+ZHN0X3BvczooIW5leHRfZHN0X3BvcyArIGxlbilcbiAgICAgICAgICB+bGVuOmxlbl93aXRoO1xuICAgICAgICBuZXh0X2RzdF9wb3MgOj0gIW5leHRfZHN0X3BvcyArIGxlbiArIGxlbl93aXRoO1xuICAgICAgICBuZXh0X3NyY19wb3MgOj0gIW5leHRfc3JjX3BvcyArIGxlbiArIGxlbl90KTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczohbmV4dF9zcmNfcG9zXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6IW5leHRfZHN0X3Bvc1xuICAgICAgICB+bGVuOihsZW5fcyAtICFuZXh0X3NyY19wb3MpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuICBsZXQgc3BsaXRfb24gdCBzID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHQucGF0dGVybiBpblxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIExpc3QubWFwMl9leG5cbiAgICAgICgtcGF0dGVybl9sZW4gOjogbWF0Y2hlcylcbiAgICAgIChtYXRjaGVzIEAgWyBTdHJpbmcubGVuZ3RoIHMgXSlcbiAgICAgIH5mOihmdW4gaSBqIC0+IHN1YiBzIH5wb3M6KGkgKyBwYXR0ZXJuX2xlbikgfmxlbjooaiAtIGkgLSBwYXR0ZXJuX2xlbikpXG4gIDs7XG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHB1YmxpYyA9IHRcblxuICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsID1cbiAgICAgIChmdW4gYV9fMDAyXyBiX18wMDNfIC0+XG4gICAgICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDJfIGJfXzAwM19cbiAgICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgICAgICAgKGVxdWFsX3N0cmluZyBhX18wMDJfLnBhdHRlcm4gYl9fMDAzXy5wYXR0ZXJuKVxuICAgICAgICAgICAgIChQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgICAgICAgICAgKGVxdWFsX2Jvb2wgYV9fMDAyXy5jYXNlX3NlbnNpdGl2ZSBiX18wMDNfLmNhc2Vfc2Vuc2l0aXZlKVxuICAgICAgICAgICAgICAgIChlcXVhbF9hcnJheSBlcXVhbF9pbnQgYV9fMDAyXy5rbXBfYXJyYXkgYl9fMDAzXy5rbXBfYXJyYXkpKVxuICAgICAgICAgICA6IHQgLT4gdCAtPiBib29sKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90ID1cbiAgICAgIChmdW4geyBwYXR0ZXJuID0gcGF0dGVybl9fMDA3X1xuICAgICAgICAgICA7IGNhc2Vfc2Vuc2l0aXZlID0gY2FzZV9zZW5zaXRpdmVfXzAwOV9cbiAgICAgICAgICAgOyBrbXBfYXJyYXkgPSBrbXBfYXJyYXlfXzAxMV9cbiAgICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9IFtdIGluXG4gICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX2ludCBrbXBfYXJyYXlfXzAxMV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJrbXBfYXJyYXlcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZV9fMDA5XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IGFyZ19fMDEwXyBdXG4gICAgICAgICAgOjogYm5kc19fMDA2X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA4XyA9IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm5fXzAwN18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXR0ZXJuXCI7IGFyZ19fMDA4XyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwNl9cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCByZXByZXNlbnRhdGlvbiA9IEZuLmlkXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTZWFyY2hfcGF0dGVybl9oZWxwZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNlYXJjaF9wYXR0ZXJuID0gU2VhcmNoX3BhdHRlcm4wXG5lbmRcblxub3BlbiBTZWFyY2hfcGF0dGVybl9oZWxwZXJcblxubGV0IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4ID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4X2V4biA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5tYXlfb3ZlcmxhcCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4X2FsbFxuICAgIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pXG4gICAgfm1heV9vdmVybGFwXG4gICAgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2ZpcnN0ID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfYWxsIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnN1YnN0cmluZyA9XG4gIE9wdGlvbi5pc19zb21lIChzdWJzdHJfaW5kZXhfZ2VuIHQgfnBhdHRlcm46c3Vic3RyaW5nIH5jYXNlX3NlbnNpdGl2ZSlcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXggPSBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3QgPSBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxuXG5sZXQgaXNfc3Vic3RyaW5nX2F0X2dlbiA9XG4gIGxldCByZWMgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3MgfnN1Yl9sZW4gfmNoYXJfZXF1YWwgPVxuICAgIGlmIHN1Yl9wb3MgPSBzdWJfbGVuXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBjaGFyX2VxdWFsICh1bnNhZmVfZ2V0IHN0ciBzdHJfcG9zKSAodW5zYWZlX2dldCBzdWIgc3ViX3BvcylcbiAgICB0aGVuIGxvb3AgfnN0ciB+c3RyX3Bvczooc3RyX3BvcyArIDEpIH5zdWIgfnN1Yl9wb3M6KHN1Yl9wb3MgKyAxKSB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuICAgIGVsc2UgZmFsc2VcbiAgaW5cbiAgZnVuIHN0ciB+cG9zOnN0cl9wb3MgfnN1YnN0cmluZzpzdWIgfmNoYXJfZXF1YWwgLT5cbiAgICBsZXQgc3RyX2xlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgc3ViX2xlbiA9IGxlbmd0aCBzdWIgaW5cbiAgICBpZiBzdHJfcG9zIDwgMCB8fCBzdHJfcG9zID4gc3RyX2xlblxuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIlN0cmluZy5pc19zdWJzdHJpbmdfYXQ6IGludmFsaWQgaW5kZXggJWQgZm9yIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgICBzdHJfcG9zXG4gICAgICAgIHN0cl9sZW5cbiAgICAgICAgKCk7XG4gICAgc3RyX3BvcyArIHN1Yl9sZW4gPD0gc3RyX2xlblxuICAgICYmIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zOjAgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbjs7XG5cbmxldCBpc19zdWZmaXhfZ2VuIHN0cmluZyB+c3VmZml4IH5jaGFyX2VxdWFsID1cbiAgbGV0IHN0cmluZ19sZW4gPSBsZW5ndGggc3RyaW5nIGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBzdHJpbmdfbGVuID49IHN1ZmZpeF9sZW5cbiAgJiYgaXNfc3Vic3RyaW5nX2F0X2dlblxuICAgICAgIHN0cmluZ1xuICAgICAgIH5wb3M6KHN0cmluZ19sZW4gLSBzdWZmaXhfbGVuKVxuICAgICAgIH5zdWJzdHJpbmc6c3VmZml4XG4gICAgICAgfmNoYXJfZXF1YWxcbjs7XG5cbmxldCBpc19wcmVmaXhfZ2VuIHN0cmluZyB+cHJlZml4IH5jaGFyX2VxdWFsID1cbiAgbGV0IHN0cmluZ19sZW4gPSBsZW5ndGggc3RyaW5nIGluXG4gIGxldCBwcmVmaXhfbGVuID0gbGVuZ3RoIHByZWZpeCBpblxuICBzdHJpbmdfbGVuID49IHByZWZpeF9sZW5cbiAgJiYgaXNfc3Vic3RyaW5nX2F0X2dlbiBzdHJpbmcgfnBvczowIH5zdWJzdHJpbmc6cHJlZml4IH5jaGFyX2VxdWFsXG47O1xuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCB0X29mX3NleHAgPSAoc3RyaW5nX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgYzEgYzIgPSBDaGFyLmNvbXBhcmUgKENoYXIubG93ZXJjYXNlIGMxKSAoQ2hhci5sb3dlcmNhc2UgYzIpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfbG9vcCB+cG9zIH5zdHJpbmcxIH5sZW4xIH5zdHJpbmcyIH5sZW4yID1cbiAgICAgIGlmIHBvcyA9IGxlbjFcbiAgICAgIHRoZW4gaWYgcG9zID0gbGVuMiB0aGVuIDAgZWxzZSAtMVxuICAgICAgZWxzZSBpZiBwb3MgPSBsZW4yXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYyA9IGNoYXJfY29tcGFyZV9jYXNlbGVzcyAodW5zYWZlX2dldCBzdHJpbmcxIHBvcykgKHVuc2FmZV9nZXQgc3RyaW5nMiBwb3MpIGluXG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8IDAgLT4gY29tcGFyZV9sb29wIH5wb3M6KHBvcyArIDEpIH5zdHJpbmcxIH5sZW4xIH5zdHJpbmcyIH5sZW4yXG4gICAgICAgIHwgXyAtPiBjKVxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBzdHJpbmcxIHN0cmluZzIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzdHJpbmcxIHN0cmluZzJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZVxuICAgICAgICBjb21wYXJlX2xvb3BcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICB+c3RyaW5nMVxuICAgICAgICAgIH5sZW4xOihTdHJpbmcubGVuZ3RoIHN0cmluZzEpXG4gICAgICAgICAgfnN0cmluZzJcbiAgICAgICAgICB+bGVuMjooU3RyaW5nLmxlbmd0aCBzdHJpbmcyKVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9XG4gICAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICAgIGxldCBzdGF0ZSA9IHJlZiAoaGFzaF9mb2xkX2ludCBzdGF0ZSBsZW4pIGluXG4gICAgICBmb3IgcG9zID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHN0YXRlIDo9IGhhc2hfZm9sZF9jaGFyICFzdGF0ZSAoQ2hhci5sb3dlcmNhc2UgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICAgICAgZG9uZTtcbiAgICAgICFzdGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICAgIGxldCBpc19zdWZmaXggcyB+c3VmZml4ID0gaXNfc3VmZml4X2dlbiBzIH5zdWZmaXggfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICAgIGxldCBpc19wcmVmaXggcyB+cHJlZml4ID0gaXNfcHJlZml4X2dlbiBzIH5wcmVmaXggfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICAgIGxldCBzdWJzdHJfaW5kZXggPSBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3QgPSBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IGlzX3N1YnN0cmluZ19hdCA9IGlzX3N1YnN0cmluZ19hdF9nZW4gfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubGV0IG9mX3N0cmluZyA9IEZuLmlkXG5sZXQgdG9fc3RyaW5nID0gRm4uaWRcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCB0IGkgKGYgaSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0XG47O1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID0gaWYgaSA8IDAgdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpIC0gMSkgaW5cbiAgbG9vcCBbXSAobGVuZ3RoIHMgLSAxKVxuOztcblxubGV0IHRvX2xpc3RfcmV2IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBpID0gaWYgaSA9IGxlbiB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgKyAxKSBpblxuICBsb29wIFtdIDBcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIGkgKHVuc2FmZV9nZXQgdCAobGVuIC0gMSAtIGkpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlc1xuOztcblxuKCoqIEVmZmljaWVudCBzdHJpbmcgc3BsaXR0aW5nICopXG5cbmxldCBsc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5sc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBsc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IGluZGV4X2V4bl9pbnRlcm5hbCBsaW5lIH5ub3RfZm91bmQgZGVsaW0gaW5cbiAgICBzdWIgbGluZSB+cG9zOjAgfmxlbjpwb3MsIHN1YiBsaW5lIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBsaW5lIC0gcG9zIC0gMSlcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBsc3BsaXQyX2V4blxuOztcblxubGV0IHJzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gcmluZGV4X2V4bl9pbnRlcm5hbCBsaW5lIH5ub3RfZm91bmQgZGVsaW0gaW5cbiAgICBzdWIgbGluZSB+cG9zOjAgfmxlbjpwb3MsIHN1YiBsaW5lIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBsaW5lIC0gcG9zIC0gMSlcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByc3BsaXQyX2V4blxuOztcblxubGV0IGxzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAobHNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAocnNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJlYyBjaGFyX2xpc3RfbWVtIGwgKGMgOiBjaGFyKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGZhbHNlXG4gIHwgaGQgOjogdGwgLT4gQ2hhci5lcXVhbCBoZCBjIHx8IGNoYXJfbGlzdF9tZW0gdGwgY1xuOztcblxubGV0IHNwbGl0X2dlbiBzdHIgfm9uID1cbiAgbGV0IGlzX2RlbGltID1cbiAgICBtYXRjaCBvbiB3aXRoXG4gICAgfCBgY2hhciBjJyAtPiBmdW4gYyAtPiBDaGFyLmVxdWFsIGMgYydcbiAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGxhc3RfcG9zIHBvcyA9XG4gICAgaWYgcG9zID0gLTFcbiAgICB0aGVuIHN1YiBzdHIgfnBvczowIH5sZW46bGFzdF9wb3MgOjogYWNjXG4gICAgZWxzZSBpZiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICB0aGVuIChcbiAgICAgIGxldCBwb3MxID0gcG9zICsgMSBpblxuICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6cG9zMSB+bGVuOihsYXN0X3BvcyAtIHBvczEpIGluXG4gICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgcG9zIChwb3MgLSAxKSlcbiAgICBlbHNlIGxvb3AgYWNjIGxhc3RfcG9zIChwb3MgLSAxKVxuICBpblxuICBsb29wIFtdIGxlbiAobGVuIC0gMSlcbjs7XG5cbmxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxubGV0IHNwbGl0X29uX2NoYXJzIHN0ciB+b246Y2hhcnMgPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXJfbGlzdCBjaGFycylcblxubGV0IHNwbGl0X2xpbmVzID1cbiAgbGV0IGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wgPVxuICAgIHBvcyA6PSAhcG9zIC0gaWYgIXBvcyA+IDAgJiYgQ2hhci5lcXVhbCB0LlshcG9zIC0gMV0gJ1xccicgdGhlbiAyIGVsc2UgMTtcbiAgICBlb2wgOj0gIXBvcyArIDFcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICAoKiBJbnZhcmlhbnQ6IFstMSA8PSBwb3MgPCBlb2xdLiAqKVxuICAgICAgbGV0IHBvcyA9IHJlZiAobiAtIDEpIGluXG4gICAgICBsZXQgZW9sID0gcmVmIG4gaW5cbiAgICAgIGxldCBhYyA9IHJlZiBbXSBpblxuICAgICAgKCogV2UgdHJlYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIHNwZWNpYWxseSwgYmVjYXVzZSBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhXG4gICAgICAgICBuZXdsaW5lLCB3ZSBkb24ndCB3YW50IGFuIGV4dHJhIGVtcHR5IHN0cmluZyBhdCB0aGUgZW5kIG9mIHRoZSBvdXRwdXQuICopXG4gICAgICBpZiBDaGFyLmVxdWFsIHQuWyFwb3NdICdcXG4nIHRoZW4gYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbDtcbiAgICAgIHdoaWxlICFwb3MgPj0gMCBkb1xuICAgICAgICBpZiBDaGFyLiggPD4gKSB0LlshcG9zXSAnXFxuJ1xuICAgICAgICB0aGVuIGRlY3IgcG9zXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIEJlY2F1c2UgW3BvcyA8IGVvbF0sIHdlIGtub3cgdGhhdCBbc3RhcnQgPD0gZW9sXS4gKilcbiAgICAgICAgICBsZXQgc3RhcnQgPSAhcG9zICsgMSBpblxuICAgICAgICAgIGFjIDo9IHN1YiB0IH5wb3M6c3RhcnQgfmxlbjooIWVvbCAtIHN0YXJ0KSA6OiAhYWM7XG4gICAgICAgICAgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbClcbiAgICAgIGRvbmU7XG4gICAgICBzdWIgdCB+cG9zOjAgfmxlbjohZW9sIDo6ICFhYylcbjs7XG5cbmxldCBpc19zdWZmaXggcyB+c3VmZml4ID0gaXNfc3VmZml4X2dlbiBzIH5zdWZmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxubGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5cbmxldCBpc19zdWJzdHJpbmdfYXQgcyB+cG9zIH5zdWJzdHJpbmcgPVxuICBpc19zdWJzdHJpbmdfYXRfZ2VuIHMgfnBvcyB+c3Vic3RyaW5nIH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbjs7XG5cbmxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICBlbHNlIChcbiAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICB8IF8gLT4gb25fZXJyb3IpXG47O1xuXG5sZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3BfcHJlZml4XCIgdCBuIH5wb3M6biB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3Bfc3VmZml4XCIgdCBuIH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxubGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbmxldCBsZmluZGkgPyhwb3MgPSAwKSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPSBuIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICBsb29wIHBvc1xuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIG1hdGNoIGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IGYgYykgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPiBTb21lIHQuW2ldXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmIHQuW2ldIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxubGV0IHJmaW5kaSA/cG9zIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgLSAxKSBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gICAgfCBOb25lIC0+IGxlbmd0aCB0IC0gMVxuICBpblxuICBsb29wIHBvc1xuOztcblxubGV0IGxhc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IHJmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSlcblxubGV0IHJzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbjs7XG5cbmxldCBmaXJzdF9ub25fZHJvcCB+ZHJvcCB0ID0gbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKVxuXG5sZXQgbHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgMCAtPiB0XG4gIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuOztcblxuKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxubGV0IHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiBpIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IG1hcCB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAobGVuZ3RoIHMpIH5mOihmdW4gaSAtPiBzLltpXSlcblxubGV0IGV4aXN0cyA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPCBsZW4gJiYgKGYgcy5baV0gfHwgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9yX2FsbCA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPSBsZW4gfHwgKGYgcy5baV0gJiYgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgaSBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHRcbmxldCBtYXhfZWx0IHQgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0XG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZpbmRfbWFwaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZF9tYXBpIH5pdGVyaSB0IH5mXG5sZXQgZmluZGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRpIH5pdGVyaSB0IH5mXG5sZXQgY291bnRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5jb3VudGkgfmZvbGRpIHQgfmZcbmxldCBmb3JfYWxsaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZm9yX2FsbGkgfml0ZXJpIHQgfmZcbmxldCBleGlzdHNpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5leGlzdHNpIH5pdGVyaSB0IH5mXG5cbmxldCBtZW0gPVxuICBsZXQgcmVjIGxvb3AgdCBjIH5wb3M6aSB+bGVuID1cbiAgICBpIDwgbGVuICYmIChDaGFyLmVxdWFsIGMgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgYyB+cG9zOihpICsgMSkgfmxlbilcbiAgaW5cbiAgZnVuIHQgYyAtPiBsb29wIHQgYyB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgdHIgfnRhcmdldCB+cmVwbGFjZW1lbnQgcyA9XG4gIGlmIENoYXIuZXF1YWwgdGFyZ2V0IHJlcGxhY2VtZW50XG4gIHRoZW4gc1xuICBlbHNlIGlmIG1lbSBzIHRhcmdldFxuICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiBpZiBDaGFyLmVxdWFsIGMgdGFyZ2V0IHRoZW4gcmVwbGFjZW1lbnQgZWxzZSBjKVxuICBlbHNlIHNcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIGlzX2VtcHR5IHRhcmdldFxuICB0aGVuIHN0YWdlIEZuLmlkXG4gIGVsc2UgaWYgaXNfZW1wdHkgcmVwbGFjZW1lbnRcbiAgdGhlbiBpbnZhbGlkX2FyZyBcInRyX211bHRpIHJlcGxhY2VtZW50IGlzIGVtcHR5IHN0cmluZ1wiXG4gIGVsc2UgKFxuICAgIG1hdGNoIEJ5dGVzX3RyLnRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGFnZSBGbi5pZFxuICAgIHwgU29tZSB0cl9tYXAgLT5cbiAgICAgIHN0YWdlIChmdW4gcyAtPlxuICAgICAgICBpZiBleGlzdHMgcyB+ZjooZnVuIGMgLT4gQ2hhci4oIDw+ICkgYyAodW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGMpKSlcbiAgICAgICAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gdW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGMpKVxuICAgICAgICBlbHNlIHMpKVxuOztcblxuKCogZmFzdCB2ZXJzaW9uLCBpZiB3ZSBldmVyIG5lZWQgaXQ6XG4gICB7W1xuICAgICBsZXQgY29uY2F0X2FycmF5IH5zZXAgYXIgPVxuICAgICAgIGxldCBhcl9sZW4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICAgICBpZiBhcl9sZW4gPSAwIHRoZW4gXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIGxldCBzZXBfbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgbGV0IHJlc19sZW5fcmVmID0gcmVmIChzZXBfbGVuICogKGFyX2xlbiAtIDEpKSBpblxuICAgICAgICAgZm9yIGkgPSAwIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgcmVzX2xlbl9yZWYgOj0gIXJlc19sZW5fcmVmICsgbGVuZ3RoIGFyLihpKVxuICAgICAgICAgZG9uZTtcbiAgICAgICAgIGxldCByZXMgPSBjcmVhdGUgIXJlc19sZW5fcmVmIGluXG4gICAgICAgICBsZXQgc3RyXzAgPSBhci4oMCkgaW5cbiAgICAgICAgIGxldCBsZW5fMCA9IGxlbmd0aCBzdHJfMCBpblxuICAgICAgICAgYmxpdCB+c3JjOnN0cl8wIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MCB+bGVuOmxlbl8wO1xuICAgICAgICAgbGV0IHBvc19yZWYgPSByZWYgbGVuXzAgaW5cbiAgICAgICAgIGZvciBpID0gMSB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICAgICAgICAgICBibGl0IH5zcmM6c2VwIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6cG9zIH5sZW46c2VwX2xlbjtcbiAgICAgICAgICAgbGV0IG5ld19wb3MgPSBwb3MgKyBzZXBfbGVuIGluXG4gICAgICAgICAgIGxldCBzdHJfaSA9IGFyLihpKSBpblxuICAgICAgICAgICBsZXQgbGVuX2kgPSBsZW5ndGggc3RyX2kgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnN0cl9pIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6bmV3X3BvcyB+bGVuOmxlbl9pO1xuICAgICAgICAgICBwb3NfcmVmIDo9IG5ld19wb3MgKyBsZW5faVxuICAgICAgICAgZG9uZTtcbiAgICAgICAgIHJlc1xuICAgXX0gKilcblxubGV0IGNvbmNhdF9hcnJheSA/c2VwIGFyID0gY29uY2F0ID9zZXAgKEFycmF5LnRvX2xpc3QgYXIpXG5sZXQgY29uY2F0X21hcCA/c2VwIHMgfmYgPSBjb25jYXRfYXJyYXkgP3NlcCAoQXJyYXkubWFwICh0b19hcnJheSBzKSB+ZilcblxuKCogW2ZpbHRlciB0IGZdIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtLlxuXG4gICBMZXQgW24gPSBsZW5ndGggdF0uXG5cbiAgIDEuIEZpbmQgdGhlIGxvd2VzdCBbaV0gc3VjaCB0aGF0IFtub3QgKGYgdC5baV0pXS5cblxuICAgMi4gSWYgdGhlcmUgaXMgbm8gc3VjaCBbaV0sIHRoZW4gcmV0dXJuIFt0XS5cblxuICAgMy4gSWYgdGhlcmUgaXMgc3VjaCBhbiBbaV0sIGFsbG9jYXRlIGEgc3RyaW5nLCBbb3V0XSwgdG8gaG9sZCB0aGUgcmVzdWx0LiAgW291dF0gaGFzXG4gICBsZW5ndGggW24gLSAxXSwgd2hpY2ggaXMgdGhlIG1heGltdW0gcG9zc2libGUgb3V0cHV0IHNpemUgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBhdCBsZWFzdFxuICAgb25lIGNoYXJhY3RlciBub3Qgc2F0aXNmeWluZyBbZl0uXG5cbiAgIDQuIENvcHkgY2hhcmFjdGVycyBhdCBpbmRpY2VzIDAgLi4uIFtpIC0gMV0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDUuIFdhbGsgdGhyb3VnaCBjaGFyYWN0ZXJzIGF0IGluZGljZXMgW2krMV0gLi4uIFtuLTFdIG9mIFt0XSwgY29weWluZyB0aG9zZSB0aGF0XG4gICBzYXRpc2Z5IFtmXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNi4gSWYgd2UgY29tcGxldGVseSBmaWxsZWQgW291dF0sIHRoZW4gcmV0dXJuIGl0LiAgSWYgbm90LCByZXR1cm4gdGhlIHByZWZpeCBvZiBbb3V0XVxuICAgdGhhdCB3ZSBkaWQgZmlsbCBpbi5cblxuICAgVGhpcyBhbGdvcml0aG0gaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgc3RyaW5nIGlmIHRoZXJlJ3NcbiAgIG5vdGhpbmcgdG8gZmlsdGVyLCB3aGljaCBpcyBhIGNvbW1vbiBjYXNlLiAqKVxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgIWkgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgIWkgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIFNvbWUgKGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9pZl9leGlzdHMgcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3BfcHJlZml4X2V4biBzIH5wcmVmaXggPVxuICBtYXRjaCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3BfcHJlZml4X2V4biAlUyAlU1wiIHMgcHJlZml4ICgpXG47O1xuXG5sZXQgY2hvcF9zdWZmaXggcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIFNvbWUgKGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9pZl9leGlzdHMgcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3Bfc3VmZml4X2V4biBzIH5zdWZmaXggPVxuICBtYXRjaCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3Bfc3VmZml4X2V4biAlUyAlU1wiIHMgc3VmZml4ICgpXG47O1xuXG5tb2R1bGUgRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeCA9IHN0cnVjdFxuICAoKiBXaGVuIHRha2luZyBhIHN0cmluZyBwcmVmaXggb3Igc3VmZml4LCB3ZSBleHRyYWN0IGZyb20gdGhlIHNob3J0ZXN0IGlucHV0IGF2YWlsYWJsZVxuICAgICBpbiBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiBvbmUgb2Ygb3VyIGlucHV0cyB3aXRob3V0IGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nLiAqKVxuXG4gIGxldCBzaG9ydGVyIGEgYiA9IGlmIGxlbmd0aCBhIDw9IGxlbmd0aCBiIHRoZW4gYSBlbHNlIGJcblxuICBsZXQgc2hvcnRlc3QgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OmZpcnN0IH5mOnNob3J0ZXJcbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgZm9yIGNvbW1vbiBwcmVmaXgvc3VmZml4IGFic3RyYWN0IG92ZXIgW2dldF9wb3NdLCB3aGljaCBpc1xuICAgICBlaXRoZXIgW3Bvc19mcm9tX2xlZnRdIG9yIFtwb3NfZnJvbV9yaWdodF0uICopXG5cbiAgbGV0IHBvc19mcm9tX2xlZnQgKF8gOiB0KSAoaSA6IGludCkgPSBpXG4gIGxldCBwb3NfZnJvbV9yaWdodCB0IGkgPSBsZW5ndGggdCAtIGkgLSAxXG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyID1cbiAgICBpZiBsZW5fc29fZmFyID49IG1heF9sZW5cbiAgICB0aGVuIG1heF9sZW5cbiAgICBlbHNlIGlmIENoYXIuZXF1YWxcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYSAoZ2V0X3BvcyBhIGxlbl9zb19mYXIpKVxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBiIChnZXRfcG9zIGIgbGVuX3NvX2ZhcikpXG4gICAgdGhlbiBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOihsZW5fc29fZmFyICsgMSlcbiAgICBlbHNlIGxlbl9zb19mYXJcbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgPVxuICAgIGxldCBtYXhfbGVuID0gbWluIChsZW5ndGggYSkgKGxlbmd0aCBiKSBpblxuICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICA7O1xuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgbGlzdCB+Z2V0X3BvcyB+bWF4X2xlbiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBtYXhfbGVuXG4gICAgfCBzZWNvbmQgOjogcmVzdCAtPlxuICAgICAgbGV0IG1heF9sZW4gPVxuICAgICAgICAoKiBXZSBjYWxsIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoXSBzb1xuICAgICAgICAgICB0aGF0IFttYXhfbGVuXSBsaW1pdHMgb3VyIHRyYXZlcnNhbCBvZiBbZmlyc3RdIGFuZCBbc2Vjb25kXS4gKilcbiAgICAgICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGZpcnN0IHNlY29uZCB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gICAgICBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3Agc2Vjb25kIHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3MgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogUHJlY29tcHV0aW5nIFttYXhfbGVuXSBiYXNlZCBvbiBbc2hvcnRlc3QgbGlzdF0gc2F2ZXMgdXMgd29yayBpbiBsb25nZXIgc3RyaW5ncyxcbiAgICAgICAgIGF0IHRoZSBjb3N0IG9mIGFuIGV4dHJhIHBhc3Mgb3ZlciB0aGUgc3BpbmUgb2YgW2xpc3RdLlxuXG4gICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgc3RyaW5nczpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIGxldCBsb25nX2EgPSBMaXN0LmluaXQgMTAwMCB+ZjooRm4uY29uc3QgJ2EnKVxuICAgICAgICAgICAgWyBsb25nX2E7IGxvbmdfYTsgJ2FhJyBdXG4gICAgICAgICB2fVxuXG4gICAgICAgICB0aGUgYXBwcm9hY2ggYmVsb3cgd2lsbCBqdXN0IGNoZWNrIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhbGwgdGhlIHN0cmluZ3MuXG4gICAgICAqKVxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggKHNob3J0ZXN0IGxpc3QpIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIHRoYXQgcHJvZHVjZSBhIHN0cmluZyBhYnN0cmFjdCBvdmVyIFt0YWtlXSwgd2hpY2ggaXMgZWl0aGVyXG4gICAgIFtwcmVmaXhdIG9yIFtzdWZmaXhdLiAqKVxuXG4gIGxldCBjb21tb25fZ2VuZXJpYzIgYSBiIH5nZXRfcG9zIH50YWtlID1cbiAgICBsZXQgbGVuID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgaW5cbiAgICAoKiBVc2UgdGhlIHNob3J0ZXIgb2YgdGhlIHR3byBzdHJpbmdzLCBzbyB0aGF0IGlmIHRoZSBzaG9ydGVyIG9uZSBpcyB0aGUgc2hhcmVkXG4gICAgICAgcHJlZml4LCBbdGFrZV0gd29uJ3QgYWxsb2NhdGUgYW5vdGhlciBzdHJpbmcuICopXG4gICAgdGFrZSAoc2hvcnRlciBhIGIpIGxlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYyBsaXN0IH5nZXRfcG9zIH50YWtlID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIEFzIHdpdGggW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0sIHdlIGJhc2UgW21heF9sZW5dIG9uIFtzaG9ydGVzdCBsaXN0XS4gV2UgYWxzb1xuICAgICAgICAgdXNlIHRoaXMgcmVzdWx0IGZvciBbdGFrZV0sIGJlbG93LCB0byBwb3RlbnRpYWxseSBhdm9pZCBhbGxvY2F0aW5nIGEgc3RyaW5nLiAqKVxuICAgICAgbGV0IHMgPSBzaG9ydGVzdCBsaXN0IGluXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCBzIGluXG4gICAgICBpZiBtYXhfbGVuID0gMFxuICAgICAgdGhlbiBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgKCogV2UgY2FsbCBkaXJlY3RseSBpbnRvIFtjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW5cbiAgICAgICAgICAgICBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSB0byBhdm9pZCByZWNvbXB1dGluZyBbc2hvcnRlc3QgbGlzdF0uICopXG4gICAgICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICAgICAgICBpblxuICAgICAgICB0YWtlIHMgbGVuKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeFxuXG4gIGxldCBjb21tb25fcHJlZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbmVuZFxuXG4oKiBUaGVyZSB1c2VkIHRvIGJlIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIHRoYXQgd2FzIGZhc3RlciBmb3IgdmVyeSBzaG9ydCBzdHJpbmdzXG4gICAocGVha2luZyBhdCA0MCUgZmFzdGVyIGZvciA0LTYgY2hhciBsb25nIHN0cmluZ3MpLlxuICAgVGhpcyBuZXcgZnVuY3Rpb24gaXMgYXJvdW5kIDIwJSBmYXN0ZXIgdGhhbiB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uLCBidXQgc2xvd2VyXG4gICB0aGFuIHRoZSBwcmV2aW91cyBjdXN0b20gaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZSBuZXcgT0NhbWwgZnVuY3Rpb24gaXMgd2VsbFxuICAgYmVoYXZlZCwgYW5kIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbGVzcyBsaWtlbHkgdG8gZGl2ZXJnZSBmcm9tIHRoZSBkZWZhdWx0IE9DYW1sXG4gICBpbXBsZW1lbnRhdGlvbiBkb2VzLCB3aGljaCBpcyBhIGRlc2lyYWJsZSBwcm9wZXJ0eS4gKFRoZSBvbmx5IHdheSB0byBhdm9pZCB0aGVcbiAgIGRpdmVyZ2VuY2UgaXMgdG8gZXhwb3NlIHRoZSBtYWNybyByZWRlZmluZWQgaW4gaGFzaF9zdHVicy5jIGluIHRoZSBoYXNoLmggaGVhZGVyIG9mXG4gICB0aGUgT0NhbWwgY29tcGlsZXIuKSAqKVxubW9kdWxlIEhhc2ggPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgaGFzaCA6IHN0cmluZyAtPiBpbnQgPSBcIkJhc2VfaGFzaF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZW5kXG5cbigqIFtpbmNsdWRlIEhhc2hdIHRvIG1ha2UgdGhlIFtleHRlcm5hbF0gdmVyc2lvbiBvdmVycmlkZSB0aGUgW2hhc2hdIGZyb21cbiAgIFtIYXNoYWJsZS5NYWtlX2JpbmFibGVdLCBzbyB0aGF0IHdlIGdldCBhIGxpdHRsZSBiaXQgb2YgYSBzcGVlZHVwIGJ5IGV4cG9zaW5nIGl0IGFzXG4gICBleHRlcm5hbCBpbiB0aGUgbWxpLiAqKVxubGV0IF8gPSBoYXNoXG5cbmluY2x1ZGUgSGFzaFxuXG4oKiBmb3IgaW50ZXJhY3RpdmUgdG9wLWxldmVscyAtLSBtb2R1bGVzIGRlcml2aW5nIGZyb20gU3RyaW5nIHNob3VsZCBoYXZlIFN0cmluZydzIHByZXR0eVxuICAgcHJpbnRlci4gKilcbmxldCBwcCBwcGYgc3RyaW5nID0gQ2FtbC5Gb3JtYXQuZnByaW50ZiBwcGYgXCIlU1wiIHN0cmluZ1xubGV0IG9mX2NoYXIgYyA9IG1ha2UgMSBjXG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHQgaSBjKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0XG47O1xuXG5tb2R1bGUgRXNjYXBpbmcgPSBzdHJ1Y3RcbiAgKCogSWYgdGhpcyBpcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdG8gdXBkYXRlIFtlc2NhcGVdLCB3aGljaCBhdHRlbXB0cyB0byBlbnN1cmUgYWxsIHRoZVxuICAgICBpbnZhcmlhbnRzIGNoZWNrZWQgaGVyZS4gICopXG4gIGxldCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGZ1bmMgPVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGlmIExpc3QuQXNzb2MubWVtIGVzY2FwZXdvcnRoeV9tYXAgfmVxdWFsOkNoYXIuZXF1YWwgZXNjYXBlX2NoYXJcbiAgICAgIHRoZW4gZXNjYXBld29ydGh5X21hcFxuICAgICAgZWxzZSAoZXNjYXBlX2NoYXIsIGVzY2FwZV9jaGFyKSA6OiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgaW5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2ICgtMSkgaW5cbiAgICBsZXQgdmFscyA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiBmYWxzZSBpblxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IE9rIGFyclxuICAgICAgfCAoY19mcm9tLCBjX3RvKSA6OiBsIC0+XG4gICAgICAgIGxldCBrLCB2ID1cbiAgICAgICAgICBtYXRjaCBmdW5jIHdpdGhcbiAgICAgICAgICB8IGBFc2NhcGUgLT4gQ2hhci50b19pbnQgY19mcm9tLCBjX3RvXG4gICAgICAgICAgfCBgVW5lc2NhcGUgLT4gQ2hhci50b19pbnQgY190bywgY19mcm9tXG4gICAgICAgIGluXG4gICAgICAgIGlmIGFyci4oaykgPD4gLTEgfHwgdmFscy4oQ2hhci50b19pbnQgdilcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICAgIFwiZXNjYXBld29ydGh5X21hcCBub3Qgb25lLXRvLW9uZVwiXG4gICAgICAgICAgICAgICBbIFwiY19mcm9tXCIsIHNleHBfb2ZfY2hhciBjX2Zyb21cbiAgICAgICAgICAgICAgIDsgXCJjX3RvXCIsIHNleHBfb2ZfY2hhciBjX3RvXG4gICAgICAgICAgICAgICA7ICggXCJlc2NhcGV3b3J0aHlfbWFwXCJcbiAgICAgICAgICAgICAgICAgLCBzZXhwX29mX2xpc3QgKHNleHBfb2ZfcGFpciBzZXhwX29mX2NoYXIgc2V4cF9vZl9jaGFyKSBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIF0pXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGFyci4oaykgPC0gQ2hhci50b19pbnQgdjtcbiAgICAgICAgICB2YWxzLihDaGFyLnRvX2ludCB2KSA8LSB0cnVlO1xuICAgICAgICAgIGxvb3AgbClcbiAgICBpblxuICAgIGxvb3AgZXNjYXBld29ydGh5X21hcFxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBgRXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIGNhbGN1bGF0ZSBhIGxpc3Qgb2YgKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSBmaXJzdCwgdGhlIG9yZGVyXG4gICAgICAgICAgICAgIGlzIGZyb20gdGFpbCB0byBoZWFkICopXG4gICAgICAgICAgIGxldCB0b19lc2NhcGVfbGVuID0gcmVmIDAgaW5cbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZSA9XG4gICAgICAgICAgICAgZm9sZGkgc3JjIH5pbml0OltdIH5mOihmdW4gaSBhY2MgYyAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBjKSB3aXRoXG4gICAgICAgICAgICAgICB8IC0xIC0+IGFjY1xuICAgICAgICAgICAgICAgfCBuIC0+XG4gICAgICAgICAgICAgICAgICgqIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgKilcbiAgICAgICAgICAgICAgICAgaW5jciB0b19lc2NhcGVfbGVuO1xuICAgICAgICAgICAgICAgICAoaSwgQ2hhci51bnNhZmVfb2ZfaW50IG4pIDo6IGFjYylcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fZXNjYXBlIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBzcmNcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgKCogW3RvX2VzY2FwZV0gZGl2aWRlIFtzcmNdIHRvIFtMaXN0Lmxlbmd0aCB0b19lc2NhcGUgKyAxXSBwaWVjZXMgc2VwYXJhdGVkIGJ5XG4gICAgICAgICAgICAgICAgdGhlIGNoYXJzIHRvIGVzY2FwZS5cblxuICAgICAgICAgICAgICAgIExldHMgdGFrZVxuICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICBlc2NhcGVfZ2VuX2V4blxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBld29ydGh5X21hcDpbKCdhJywgJ0EnKTsgKCdiJywgJ0InKTsgKCdjJywgJ0MnKV1cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZV9jaGFyOidfJ1xuICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUsIGFuZCBhc3N1bWUgdGhlIHN0cmluZyB0byBlc2NhcGUgaXNcblxuICAgICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICAgIHRoZW4gW3RvX2VzY2FwZV0gaXMgWygxMSwgJ0MnKTsgKDcsICdCJyk7ICgzLCAnQScpXS5cblxuICAgICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgW2RzdF0gb2YgbGVuZ3RoIFtsZW5ndGggc3JjICsgM10gdG8gc3RvcmUgdGhlXG4gICAgICAgICAgICAgICAgcmVzdWx0LCBjb3B5IHBpZWNlIFwiMzMzXCIgdG8gW2RzdF0gZGlyZWN0bHksIHRoZW4gY29weSAnXycgYW5kICdDJyB0byBbZHN0XTtcbiAgICAgICAgICAgICAgICB0aGVuIG1vdmUgb24gdG8gbmV4dDsgYWZ0ZXIgMyBpdGVyYXRpb25zLCBjb3B5IHBpZWNlIFwiMDAwXCIgYW5kIHdlIGFyZSBkb25lLlxuXG4gICAgICAgICAgICAgICAgRmluYWxseSB0aGUgcmVzdWx0IHdpbGwgYmVcblxuICAgICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCIgKilcbiAgICAgICAgICAgICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICAgICAgICAgICBsZXQgZHN0X2xlbiA9IHNyY19sZW4gKyAhdG9fZXNjYXBlX2xlbiBpblxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgZHN0X2xlbiBpblxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBsYXN0X2lkeCBsYXN0X2RzdF9wb3MgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMDAwXCIgYXQgbGFzdCAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46bGFzdF9pZHhcbiAgICAgICAgICAgICAgIHwgKGlkeCwgZXNjYXBlZF9jaGFyKSA6OiB0b19lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCpbaWR4XSA9IHRoZSBjaGFyIHRvIGVzY2FwZSopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgZmlyc3QgaXRlcmF0aW9uIGZvciBleGFtcGxlICopXG4gICAgICAgICAgICAgICAgICgqIGNhbGN1bGF0ZSBsZW5ndGggb2YgXCIzMzNcIiwgbWludXMgMSBiZWNhdXNlIHdlIGRvbid0IGNvcHkgJ2MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDEgaW5cbiAgICAgICAgICAgICAgICAgKCogc2V0IHRoZSBkc3RfcG9zIHRvIGNvcHkgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiLCBzZXQgW3NyY19wb3NdIHRvIFtpZHggKyAxXSB0byBza2lwICdjJyAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAxKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDIgdG8gY29weSAnXycgYW5kICdDJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAyIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgZHN0X3BvcyBlc2NhcGVfY2hhcjtcbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCAoZHN0X3BvcyArIDEpIGVzY2FwZWRfY2hhcjtcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b19lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIHNldCBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSB0byBsZW5ndGggb2YgW2RzdF0gYW5kIFtzcmNdIGZpcnN0ICopXG4gICAgICAgICAgICAgbG9vcCBzcmNfbGVuIGRzdF9sZW4gdG9fZXNjYXBlO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAoZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIpIHw+IHN0YWdlXG4gIDs7XG5cbiAgbGV0IGVzY2FwZSB+ZXNjYXBld29ydGh5IH5lc2NhcGVfY2hhciA9XG4gICAgKCogRm9yIFtlc2NhcGVfZ2VuX2V4bl0sIHdlIGRvbid0IGtub3cgaG93IHRvIGZpeCBpbnZhbGlkIGVzY2FwZXdvcnRoeV9tYXAgc28gd2UgaGF2ZVxuICAgICAgIHRvIHJhaXNlIGV4Y2VwdGlvbjsgYnV0IGluIHRoaXMgY2FzZSwgd2Uga25vdyBob3cgdG8gZml4IGR1cGxpY2F0ZWQgZWxlbWVudHMgaW5cbiAgICAgICBlc2NhcGV3b3J0aHkgbGlzdCwgc28gd2UganVzdCBmaXggaXQgaW5zdGVhZCBvZiByYWlzaW5nIGV4Y2VwdGlvbiB0byBtYWtlIHRoaXNcbiAgICAgICBmdW5jdGlvbiBlYXNpZXIgdG8gdXNlLiAgKilcbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBlc2NhcGV3b3J0aHlcbiAgICAgIHw+IExpc3QuZGVkdXBfYW5kX3NvcnQgfmNvbXBhcmU6Q2hhci5jb21wYXJlXG4gICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGMgLT4gYywgYylcbiAgICBpblxuICAgIGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhclxuICA7O1xuXG4gICgqIEluIGFuIGVzY2FwZWQgc3RyaW5nLCBhbnkgY2hhciBpcyBlaXRoZXIgYEVzY2FwaW5nLCBgRXNjYXBlZCBvciBgTGl0ZXJhbC4gRm9yXG4gICAgIGV4YW1wbGUsIHRoZSBlc2NhcGUgc3RhdHVzZXMgb2YgY2hhcnMgaW4gc3RyaW5nIFwiYV9hX19cIiB3aXRoIGVzY2FwZV9jaGFyID0gJ18nIGFyZVxuXG4gICAgIGEgOiBgTGl0ZXJhbFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIGEgOiBgRXNjYXBlZFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIF8gOiBgRXNjYXBlZFxuXG4gICAgIFt1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgcHJldmlvdXNfc3RhdHVzXSBnZXRzIGVzY2FwZSBzdGF0dXMgb2ZcbiAgICAgc3RyLltpXSBiYXNpbmcgb24gZXNjYXBlIHN0YXR1cyBvZiBzdHIuW2kgLSAxXSAqKVxuICBsZXQgdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpID0gZnVuY3Rpb25cbiAgICB8IGBFc2NhcGluZyAtPiBgRXNjYXBlZFxuICAgIHwgYExpdGVyYWwgfCBgRXNjYXBlZCAtPlxuICAgICAgaWYgQ2hhci5lcXVhbCBzdHIuW2ldIGVzY2FwZV9jaGFyIHRoZW4gYEVzY2FwaW5nIGVsc2UgYExpdGVyYWxcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBgVW5lc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogQ29udGludWUgdGhlIGV4YW1wbGUgaW4gW2VzY2FwZV9nZW5fZXhuXSwgbm93IHdlIHVuZXNjYXBlXG5cbiAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIlxuXG4gICAgICAgICAgICAgIGJhY2sgdG9cblxuICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgVGhlbiBbdG9fdW5lc2NhcGVdIGlzIFsxNDsgOTsgNF0sIHdoaWNoIGlzIGluZGV4ZXMgb2YgJ18ncy5cblxuICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIHN0cmluZyBbZHN0XSB0byBzdG9yZSB0aGUgcmVzdWx0LCBjb3B5IFwiMzMzXCIgdG8gaXQsIHRoZW4gY29weVxuICAgICAgICAgICAgICAnYycsIHRoZW4gbW92ZSBvbiB0byBuZXh0IGl0ZXJhdGlvbi4gQWZ0ZXIgMyBpdGVyYXRpb25zIGNvcHkgXCIwMDBcIiBhbmQgd2UgYXJlXG4gICAgICAgICAgICAgIGRvbmUuICAqKVxuICAgICAgICAgICAoKiBpbmRleGVzIG9mIGVzY2FwZSBjaGFycyAqKVxuICAgICAgICAgICBsZXQgdG9fdW5lc2NhcGUgPVxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBpIHN0YXR1cyBhY2MgPVxuICAgICAgICAgICAgICAgaWYgaSA+PSBsZW5ndGggc3JjXG4gICAgICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzcmMgfmVzY2FwZV9jaGFyIGkgc3RhdHVzIGluXG4gICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYEVzY2FwaW5nIC0+IGkgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgYEVzY2FwZWQgfCBgTGl0ZXJhbCAtPiBhY2MpKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbG9vcCAwIGBMaXRlcmFsIFtdXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX3VuZXNjYXBlIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBzcmNcbiAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUnIC0+XG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuZ3RoIHNyYyAtIExpc3QubGVuZ3RoIHRvX3VuZXNjYXBlKSBpblxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBsYXN0X2lkeCBsYXN0X2RzdF9wb3MgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMDAwXCIgYXQgbGFzdCAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46bGFzdF9pZHhcbiAgICAgICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqIFtpZHhdID0gaW5kZXggb2YgZXNjYXBpbmcgY2hhciAqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIDFzdCBpdGVyYXRpb24gYXMgZXhhbXBsZSwgY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgXCIzMzNcIiwgbWludXMgMiB0b1xuICAgICAgICAgICAgICAgICAgICBza2lwICdfQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMiBpblxuICAgICAgICAgICAgICAgICAoKiBwb2ludCBbZHN0X3Bvc10gdG8gdGhlIHBvc2l0aW9uIHRvIGNvcHkgXCIzMzNcIiB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMikgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAxIHRvIGNvcHkgJ2MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDEgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0XG4gICAgICAgICAgICAgICAgICAgZHN0XG4gICAgICAgICAgICAgICAgICAgZHN0X3Bvc1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IHNyYy5baWR4ICsgMV0pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAtMSAtPiBzcmMuW2lkeCArIDFdXG4gICAgICAgICAgICAgICAgICAgIHwgbiAtPiBDaGFyLnVuc2FmZV9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgICgqIHVwZGF0ZSBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSAqKVxuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBpZiBpZHggPCBsZW5ndGggc3JjIC0gMVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICgqIHNldCBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSB0byBsZW5ndGggb2YgW2RzdF0gYW5kIFtzcmNdICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAoKiBmb3IgZXNjYXBlZCBzdHJpbmcgZW5kaW5nIHdpdGggYW4gZXNjYXBpbmcgY2hhciBsaWtlIFwiMDAwX1wiLCBqdXN0IGlnbm9yZVxuICAgICAgICAgICAgICAgICAgdGhlIGxhc3QgZXNjYXBpbmcgY2hhciAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYyAtIDEpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZSc7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIpIHw+IHN0YWdlXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlIH5lc2NhcGVfY2hhciA9IHVuZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXA6W10gfmVzY2FwZV9jaGFyXG5cbiAgbGV0IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCByZWMgbG9vcCBwIGNudCA9XG4gICAgICBpZiBwIDwgMCB8fCBDaGFyLiggPD4gKSBzdHIuW3BdIGVzY2FwZV9jaGFyIHRoZW4gY250IGVsc2UgbG9vcCAocCAtIDEpIChjbnQgKyAxKVxuICAgIGluXG4gICAgbG9vcCAocG9zIC0gMSkgMFxuICA7O1xuXG4gICgqIEluIGFuIGVzY2FwZWQgc3RyaW5nLCBhbnkgY2hhciBpcyBlaXRoZXIgYEVzY2FwaW5nLCBgRXNjYXBlZCBvciBgTGl0ZXJhbC4gRm9yXG4gICAgIGV4YW1wbGUsIHRoZSBlc2NhcGUgc3RhdHVzZXMgb2YgY2hhcnMgaW4gc3RyaW5nIFwiYV9hX19cIiB3aXRoIGVzY2FwZV9jaGFyID0gJ18nIGFyZVxuXG4gICAgIGEgOiBgTGl0ZXJhbFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIGEgOiBgRXNjYXBlZFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIF8gOiBgRXNjYXBlZFxuXG4gICAgIFt1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgcHJldmlvdXNfc3RhdHVzXSBnZXRzIGVzY2FwZSBzdGF0dXMgb2ZcbiAgICAgc3RyLltpXSBiYXNpbmcgb24gZXNjYXBlIHN0YXR1cyBvZiBzdHIuW2kgLSAxXSAqKVxuICBsZXQgdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpID0gZnVuY3Rpb25cbiAgICB8IGBFc2NhcGluZyAtPiBgRXNjYXBlZFxuICAgIHwgYExpdGVyYWwgfCBgRXNjYXBlZCAtPlxuICAgICAgaWYgQ2hhci5lcXVhbCBzdHIuW2ldIGVzY2FwZV9jaGFyIHRoZW4gYEVzY2FwaW5nIGVsc2UgYExpdGVyYWxcbiAgOztcblxuICBsZXQgZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IG9kZCA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgbW9kIDIgPSAxIGluXG4gICAgbWF0Y2ggb2RkLCBDaGFyLmVxdWFsIHN0ci5bcG9zXSBlc2NhcGVfY2hhciB3aXRoXG4gICAgfCB0cnVlLCAodHJ1ZSB8IGZhbHNlKSAtPiBgRXNjYXBlZFxuICAgIHwgZmFsc2UsIHRydWUgLT4gYEVzY2FwaW5nXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gYExpdGVyYWxcbiAgOztcblxuICBsZXQgY2hlY2tfYm91bmQgc3RyIHBvcyBmdW5jdGlvbl9uYW1lID1cbiAgICBpZiBwb3MgPj0gbGVuZ3RoIHN0ciB8fCBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiJXM6IG91dCBvZiBib3VuZHNcIiBmdW5jdGlvbl9uYW1lICgpXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBpbmcgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2VzY2FwaW5nXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBpbmcgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwZWQgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwZWQgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2VzY2FwZWRcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGVkIC0+IHRydWVcbiAgICB8IGBFc2NhcGluZyB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfbGl0ZXJhbCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfbGl0ZXJhbFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaW5kZXhfZnJvbVwiO1xuICAgIGxldCByZWMgbG9vcCBpIHN0YXR1cyA9XG4gICAgICBpZiBpID49IHBvc1xuICAgICAgJiYgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgICAgICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZSlcbiAgICAgICYmIENoYXIuZXF1YWwgc3RyLltpXSBjaGFyXG4gICAgICB0aGVuIFNvbWUgaVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBpID0gaSArIDEgaW5cbiAgICAgICAgaWYgaSA+PSBsZW5ndGggc3RyXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIGxvb3AgaSAodXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHN0YXR1cykpXG4gICAgaW5cbiAgICBsb29wIHBvcyAoZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcylcbiAgOztcblxuICBsZXQgaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IGluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcbiAgbGV0IGluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuXG4gIGxldCByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwicmluZGV4X2Zyb21cIjtcbiAgICAoKiBpZiB0aGUgdGFyZ2V0IGNoYXIgaXMgdGhlIHNhbWUgYXMgW2VzY2FwZV9jaGFyXSwgd2UgaGF2ZSBubyB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgZXNjYXBlX2NoYXIgaXMgbGl0ZXJhbCwgc28ganVzdCByZXR1cm4gTm9uZSAqKVxuICAgIGlmIENoYXIuZXF1YWwgY2hhciBlc2NhcGVfY2hhclxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgICAgIGlmIHBvcyA8IDBcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlc2NhcGVfY2hhcnMgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGluXG4gICAgICAgICAgaWYgZXNjYXBlX2NoYXJzIG1vZCAyID0gMCAmJiBDaGFyLmVxdWFsIHN0ci5bcG9zXSBjaGFyXG4gICAgICAgICAgdGhlbiBTb21lIHBvc1xuICAgICAgICAgIGVsc2UgbG9vcCAocG9zIC0gZXNjYXBlX2NoYXJzIC0gMSkpXG4gICAgICBpblxuICAgICAgbG9vcCBwb3MpXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcInJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCByaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICBpZiBpc19lbXB0eSBzdHIgdGhlbiBOb25lIGVsc2UgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICBsZXQgcmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIHJpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gICgqIFtzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b25dIHdvcmtzIHNpbWlsYXJseSB0byBbU3RyaW5nLnNwbGl0X2dlbl0sIHdpdGggYW5cbiAgICAgYWRkaXRpb25hbCByZXF1aXJlbWVudDogb25seSBzcGxpdCBvbiBsaXRlcmFsIGNoYXJzLCBub3QgZXNjYXBpbmcgb3IgZXNjYXBlZCAqKVxuICBsZXQgc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uID1cbiAgICBsZXQgaXNfZGVsaW0gPVxuICAgICAgbWF0Y2ggb24gd2l0aFxuICAgICAgfCBgY2hhciBjJyAtPiBmdW4gYyAtPiBDaGFyLmVxdWFsIGMgYydcbiAgICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gICAgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIHBvcyA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gTGlzdC5yZXYgKHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihsZW4gLSBsYXN0X3BvcykgOjogYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzdGF0dXMgPSB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBzdGF0dXMgaW5cbiAgICAgICAgaWYgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgICAgICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZSlcbiAgICAgICAgJiYgaXNfZGVsaW0gc3RyLltwb3NdXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBzdWJfc3RyID0gc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KHBvcyAtIGxhc3RfcG9zKSBpblxuICAgICAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBzdGF0dXMgKHBvcyArIDEpIChwb3MgKyAxKSlcbiAgICAgICAgZWxzZSBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgKHBvcyArIDEpKVxuICAgIGluXG4gICAgbG9vcCBbXSBgTGl0ZXJhbCAwIDBcbiAgOztcblxuICBsZXQgc3BsaXQgc3RyIH5vbiA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhciBvbilcbiAgbGV0IHNwbGl0X29uX2NoYXJzIHN0ciB+b246Y2hhcnMgPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXJfbGlzdCBjaGFycylcblxuICBsZXQgc3BsaXRfYXQgc3RyIHBvcyA9XG4gICAgc3ViIHN0ciB+cG9zOjAgfmxlbjpwb3MsIHN1YiBzdHIgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIHN0ciAtIHBvcyAtIDEpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKGluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgb24pIH5mOihmdW4geCAtPiBzcGxpdF9hdCBzdHIgeClcbiAgOztcblxuICBsZXQgcnNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAocmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgb24pIH5mOihmdW4geCAtPiBzcGxpdF9hdCBzdHIgeClcbiAgOztcblxuICBsZXQgbHNwbGl0Ml9leG4gc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPSBzcGxpdF9hdCBzdHIgKGluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuICBsZXQgcnNwbGl0Ml9leG4gc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPSBzcGxpdF9hdCBzdHIgKHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcblxuICAoKiBbbGFzdF9ub25fZHJvcF9saXRlcmFsXSBhbmQgW2ZpcnN0X25vbl9kcm9wX2xpdGVyYWxdIGFyZSBlaXRoZXIgYm90aCBbTm9uZV0gb3IgYm90aFxuICAgICBbU29tZV0uIElmIFtTb21lXSwgdGhlbiB0aGUgZm9ybWVyIGlzID49IHRoZSBsYXR0ZXIuICopXG4gIGxldCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIHJmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSlcbiAgOztcblxuICBsZXQgZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgbGZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKVxuICA7O1xuXG4gIGxldCByc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG4gIDs7XG5cbiAgbGV0IGxzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIDAgLT4gdFxuICAgIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuICA7O1xuXG4gICgqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG4gIGxldCBzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICAgICgqIHBlcmZvcm1hbmNlIGhhY2s6IGF2b2lkIGNvcHlpbmcgW3RdIGluIGNvbW1vbiBjYXNlcyAqKVxuICAgIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbiAgOztcbmVuZFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbigqIE92ZXJyaWRlIFtTZWFyY2hfcGF0dGVybl0gd2l0aCBkZWZhdWx0IGNhc2Utc2Vuc2l0aXZpdHkgYXJndW1lbnQgYXQgdGhlIGVuZCBvZiB0aGVcbiAgIGZpbGUsIHNvIHRoYXQgY2FsbCBzaXRlcyBhYm92ZSBhcmUgZm9yY2VkIHRvIHN1cHBseSBjYXNlLXNlbnNpdGl2aXR5IGV4cGxpY2l0bHkuICopXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZWFyY2hfcGF0dGVybjBcblxuICBsZXQgY3JlYXRlID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKSBwYXR0ZXJuID0gY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB0X29mX3NleHAgPSAoYnl0ZXNfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYnl0ZXMgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYnl0ZXNfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEJ5dGVzMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5CeXRlc1wiXG4gIGxldCBwcCBmbXQgdCA9IENhbWwuRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiAodG9fc3RyaW5nIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBUb19ieXRlcyA9IEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChUKSAoVG9fYnl0ZXMpXG5cbm1vZHVsZSBGcm9tX3N0cmluZyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIG4gMFxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJCeXRlcy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IHNldCB0IGkgYyk7XG4gIHRcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IChpIC0gMSkgKHVuc2FmZV9nZXQgdCBpIDo6IGFjYylcbiAgaW5cbiAgbG9vcCB0IChsZW5ndGggdCAtIDEpIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5sZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZlxubGV0IG1hcGkgdCB+ZiA9IG1hcGkgdCB+ZlxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgcG9zIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgcyBpKSB0YXJnZXQgdGhlbiB1bnNhZmVfc2V0IHMgaSByZXBsYWNlbWVudFxuICBkb25lXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgMFxuICB0aGVuIHN0YWdlIGlnbm9yZVxuICBlbHNlIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcInRyX211bHRpOiByZXBsYWNlbWVudCBpcyB0aGUgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIGlnbm9yZVxuICAgIHwgU29tZSB0cl9tYXAgLT5cbiAgICAgIHN0YWdlIChmdW4gcyAtPlxuICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBzIGkgKFN0cmluZy51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgKHVuc2FmZV9nZXQgcyBpKSkpXG4gICAgICAgIGRvbmUpKVxuOztcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGNvbnRhaW5zID9wb3MgP2xlbiB0IGNoYXIgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxhc3QgPSBwb3MgKyBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSBsYXN0XG4gICAgJiYgKENoYXIuZXF1YWwgKGdldCB0IGkpIGNoYXIgfHwgbG9vcCAoaSArIDEpKVxuICBpblxuICBsb29wIHBvc1xuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiIyAxIFwic3JjL2hleF9sZXhlci5tbGxcIlxuIFxudHlwZSByZXN1bHQgPVxufCBOZWcgb2Ygc3RyaW5nXG58IFBvcyBvZiBzdHJpbmdcblxuIyA4IFwic3JjL2hleF9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDA4MlxcMDAwXFwxMDVcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcGFyc2VfaGV4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTM1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTQgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggTmVnIGJvZHkgKVxuIyAxMzkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxNDUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBQb3MgYm9keSApXG4jIDE0OSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgY29udmVydF9mYWlsdXJlIHggYSBiIHRvX3N0cmluZyA9XG4gIFByaW50Zi5mYWlsd2l0aGZcbiAgICBcImNvbnZlcnNpb24gZnJvbSAlcyB0byAlcyBmYWlsZWQ6ICVzIGlzIG91dCBvZiByYW5nZVwiXG4gICAgYVxuICAgIGJcbiAgICAodG9fc3RyaW5nIHgpXG4gICAgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgbnVtX2JpdHNfaW50ID0gU3lzLmludF9zaXplX2luX2JpdHNcbmxldCBudW1fYml0c19pbnQzMiA9IDMyXG5sZXQgbnVtX2JpdHNfaW50NjQgPSA2NFxubGV0IG51bV9iaXRzX25hdGl2ZWludCA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA9IDYzIHx8IG51bV9iaXRzX2ludCA9IDMxIHx8IG51bV9iaXRzX2ludCA9IDMyKVxubGV0IG1pbl9pbnQzMiA9IENhbWwuSW50MzIubWluX2ludFxubGV0IG1heF9pbnQzMiA9IENhbWwuSW50MzIubWF4X2ludFxubGV0IG1pbl9pbnQ2NCA9IENhbWwuSW50NjQubWluX2ludFxubGV0IG1heF9pbnQ2NCA9IENhbWwuSW50NjQubWF4X2ludFxubGV0IG1pbl9uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5taW5faW50XG5sZXQgbWF4X25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm1heF9pbnRcbmxldCBpbnRfdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfaW50XG5sZXQgaW50MzJfdG9fc3RyaW5nID0gQ2FtbC5JbnQzMi50b19zdHJpbmdcbmxldCBpbnQ2NF90b19zdHJpbmcgPSBDYW1sLkludDY0LnRvX3N0cmluZ1xubGV0IG5hdGl2ZWludF90b19zdHJpbmcgPSBDYW1sLk5hdGl2ZWludC50b19zdHJpbmdcblxuKCogaW50IDwtPiBpbnQzMiAqKVxuXG5sZXQgaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50XCIgXCJpbnQzMlwiIGludF90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQzMlwiIFwiaW50XCIgaW50MzJfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X3RydW5jID0gQ2FtbC5JbnQzMi50b19pbnRcbmxldCBpbnRfdG9faW50MzJfdHJ1bmMgPSBDYW1sLkludDMyLm9mX2ludFxuXG5sZXQgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19pbnRfdHJ1bmMgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX2ludF90cnVuYyBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBpZiBudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1heF92YWx1ZSBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50MzIgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDMyIHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50X3RvX2ludDMyIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDMyX3RvX2ludCB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDMyX3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gaW50X3RvX2ludDMyX3RydW5jIHggZWxzZSBpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG5sZXQgaW50MzJfdG9faW50X2V4biB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDMyX3RvX2ludF90cnVuYyB4IGVsc2UgaW50MzJfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBpbnQ2NCAqKVxuXG5sZXQgaW50NjRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPCBudW1fYml0c19pbnQ2NClcbmxldCBpbnRfdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX2ludFxubGV0IGludDY0X3RvX2ludF90cnVuYyA9IENhbWwuSW50NjQudG9faW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGxldCBtaW4gPSBpbnRfdG9faW50NjQgSW50Lm1pbl92YWx1ZSBpblxuICBsZXQgbWF4ID0gaW50X3RvX2ludDY0IEludC5tYXhfdmFsdWUgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50NjRfdG9faW50X3RydW5jIHggZWxzZSBpbnQ2NF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50XCIgbmF0aXZlaW50X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludF90b19uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5vZl9pbnRcbmxldCBuYXRpdmVpbnRfdG9faW50X3RydW5jID0gQ2FtbC5OYXRpdmVpbnQudG9faW50XG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50X3RvX25hdGl2ZWludCBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19uYXRpdmVpbnQgSW50Lm1heF92YWx1ZSBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50IHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4XG4gIHRoZW4gbmF0aXZlaW50X3RvX2ludF90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludDMyIDwtPiBpbnQ2NCAqKVxuXG5sZXQgaW50NjRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50MzJcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPCBudW1fYml0c19pbnQ2NClcbmxldCBpbnQzMl90b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfaW50MzJcbmxldCBpbnQ2NF90b19pbnQzMl90cnVuYyA9IENhbWwuSW50NjQudG9faW50MzJcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBsZXQgbWluID0gaW50MzJfdG9faW50NjQgbWluX2ludDMyIGluXG4gIGxldCBtYXggPSBpbnQzMl90b19pbnQ2NCBtYXhfaW50MzIgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludDMyIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnQ2NF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIGludDY0X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDMyIDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHggPVxuICBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50MzJcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG47O1xuXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQzMl90b19uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5vZl9pbnQzMlxubGV0IG5hdGl2ZWludF90b19pbnQzMl90cnVuYyA9IENhbWwuTmF0aXZlaW50LnRvX2ludDMyXG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX25hdGl2ZWludCBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9fbmF0aXZlaW50IG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzIgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcIm5hdGl2ZWludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQ2NCA+PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X3RydW5jID0gQ2FtbC5JbnQ2NC50b19uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX25hdGl2ZWludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgPVxuICBpZiBudW1fYml0c19pbnQ2NCA8PSBudW1fYml0c19uYXRpdmVpbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBuYXRpdmVpbnRfdG9faW50NjQgbWluX25hdGl2ZWludCBpblxuICAgIGxldCBtYXggPSBuYXRpdmVpbnRfdG9faW50NjQgbWF4X25hdGl2ZWludCBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50IHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gU29tZSAoaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBpbnQ2MyAqKVxuXG5sZXQgaW50NjRfdG9faW50NjNfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50NjNcIiBpbnQ2NF90b19zdHJpbmdcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgPVxuICBsZXQgbWluID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBtaW5faW50NjQgMSBpblxuICBsZXQgbWF4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBtYXhfaW50NjQgMSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfZml0X29uX2ludDYzX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gKCkgZWxzZSBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHhcbjs7XG5cbigqIHN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG5sZXQgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyID1cbiAgbGV0IGlucHV0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgaWYgaW5wdXRfbGVuZ3RoIDw9IGNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgdGhlbiBpbnB1dFxuICBlbHNlIChcbiAgICBsZXQgaGFzX3NpZ24gPVxuICAgICAgbWF0Y2ggaW5wdXQuWzBdIHdpdGhcbiAgICAgIHwgJysnIHwgJy0nIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IG51bV9kaWdpdHMgPSBpZiBoYXNfc2lnbiB0aGVuIGlucHV0X2xlbmd0aCAtIDEgZWxzZSBpbnB1dF9sZW5ndGggaW5cbiAgICBsZXQgbnVtX2RlbGltaXRlcnMgPSAobnVtX2RpZ2l0cyAtIDEpIC8gY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBvdXRwdXRfbGVuZ3RoID0gaW5wdXRfbGVuZ3RoICsgbnVtX2RlbGltaXRlcnMgaW5cbiAgICBsZXQgb3V0cHV0ID0gQnl0ZXMuY3JlYXRlIG91dHB1dF9sZW5ndGggaW5cbiAgICBsZXQgaW5wdXRfcG9zID0gcmVmIChpbnB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBvdXRwdXRfcG9zID0gcmVmIChvdXRwdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IHJlZiBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IGZpcnN0X2RpZ2l0X3BvcyA9IGlmIGhhc19zaWduIHRoZW4gMSBlbHNlIDAgaW5cbiAgICB3aGlsZSAhaW5wdXRfcG9zID49IGZpcnN0X2RpZ2l0X3BvcyBkb1xuICAgICAgaWYgIW51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBkZWxpbWl0ZXI7XG4gICAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgICAgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA6PSBjaGFyc19wZXJfZGVsaW1pdGVyKTtcbiAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgaW5wdXQuWyFpbnB1dF9wb3NdO1xuICAgICAgZGVjciBpbnB1dF9wb3M7XG4gICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICBkZWNyIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXJcbiAgICBkb25lO1xuICAgIGlmIGhhc19zaWduIHRoZW4gQnl0ZXMuc2V0IG91dHB1dCAwIGlucHV0LlswXTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dHB1dClcbjs7XG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXIgPVxuICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXI6M1xuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyBpbnB1dCA9IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlcjonXydcbmxldCBzZXhwX29mX2ludF9zdHlsZSA9IFNleHAub2ZfaW50X3N0eWxlXG5cbm1vZHVsZSBNYWtlIChJIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBJXG5cbiAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSAzXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPVxuICAgIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKHRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgcyA9IHRvX3N0cmluZyB0IGluXG4gICAgU2V4cC5BdG9tXG4gICAgICAobWF0Y2ggIXNleHBfb2ZfaW50X3N0eWxlIHdpdGhcbiAgICAgICB8IGBVbmRlcnNjb3JlcyAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IHMgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgfmRlbGltaXRlcjonXydcbiAgICAgICB8IGBOb191bmRlcnNjb3JlcyAtPiBzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2hleCAoSSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgbmVnIDogdCAtPiB0XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUX2hleCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEkudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKEkuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBJLmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IEkuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDRcblxuICAgIGxldCB0b19zdHJpbmcnID9kZWxpbWl0ZXIgdCA9XG4gICAgICBsZXQgbWFrZV9zdWZmaXggPVxuICAgICAgICBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSS50b19zdHJpbmdcbiAgICAgICAgfCBTb21lIGRlbGltaXRlciAtPlxuICAgICAgICAgIGZ1biB0IC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKEkudG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgICAgIGluXG4gICAgICBpZiBJLiggPCApIHQgSS56ZXJvIHRoZW4gXCItMHhcIiBeIG1ha2Vfc3VmZml4IChJLm5lZyB0KSBlbHNlIFwiMHhcIiBeIG1ha2Vfc3VmZml4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nJyB0ID9kZWxpbWl0ZXI6Tm9uZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID0gdG9fc3RyaW5nJyB0IH5kZWxpbWl0ZXJcblxuICAgIGxldCBpbnZhbGlkIHN0ciA9XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiJXMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgSS5tb2R1bGVfbmFtZSBzdHIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBzdHIgPVxuICAgICAgSS5vZl9zdHJpbmcgKFN0cmluZy5maWx0ZXIgc3RyIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICdfJykpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICAgIGxldCBtb2R1bGUgTCA9IEhleF9sZXhlciBpblxuICAgICAgbGV0IGxleCA9IENhbWwuTGV4aW5nLmZyb21fc3RyaW5nIHN0ciBpblxuICAgICAgbGV0IHJlc3VsdCA9IE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEwucGFyc2VfaGV4IGxleCkgaW5cbiAgICAgIGlmIGxleC5sZXhfY3Vycl9wb3MgPSBsZXgubGV4X2J1ZmZlcl9sZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaW52YWxpZCBzdHJcbiAgICAgICAgfCBTb21lIChOZWcgYm9keSkgLT4gSS5uZWcgKG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgICB8IFNvbWUgKFBvcyBib2R5KSAtPiBvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgIGVsc2UgaW52YWxpZCBzdHJcbiAgICA7O1xuXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhleCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVF9oZXhcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFRfaGV4KVxuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBmaWxlIHdhcyBhdXRvZ2VuZXJhdGVkIGJ5IC4uL2dlbmVyYXRlL2dlbmVyYXRlX3Bvd19vdmVyZmxvd19ib3VuZHMuZXhlICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgaGF2ZSB0byB1c2UgSW50NjQudG9faW50X2V4biBpbnN0ZWFkIG9mIGludCBjb25zdGFudHMgdG8gbWFrZVxuICAgc3VyZSB0aGF0IGZpbGUgY2FuIGJlIHByZXByb2Nlc3NlZCBvbiAzMi1iaXQgbWFjaGluZXMuICopXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUgOiBpbnQzMiA9XG4gIDIxNDc0ODM2NDdsXG5cbmxldCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQzMiBhcnJheSA9XG4gIFt8IDIxNDc0ODM2NDdsXG4gIDsgIDIxNDc0ODM2NDdsXG4gIDsgIDQ2MzQwbFxuICA7ICAxMjkwbFxuICA7ICAyMTVsXG4gIDsgIDczbFxuICA7ICAzNWxcbiAgOyAgMjFsXG4gIDsgIDE0bFxuICA7ICAxMGxcbiAgOyAgOGxcbiAgOyAgN2xcbiAgOyAgNWxcbiAgOyAgNWxcbiAgOyAgNGxcbiAgOyAgNGxcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUgOiBpbnQgPVxuICAoLTEpIGxzciAxXG5cbmxldCBpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50IGFycmF5ID1cbiAgbWF0Y2ggSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludCB3aXRoXG4gIHwgMzIgLT4gQXJyYXkubWFwIGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyB+ZjpDYW1sLkludDMyLnRvX2ludFxuICB8IDYzIC0+XG4gICAgW3wgQ2FtbC5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBDYW1sLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIENhbWwuSW50NjQudG9faW50IDIxNDc0ODM2NDdMXG4gICAgOyAgMTY2NDUxMFxuICAgIDsgIDQ2MzQwXG4gICAgOyAgNTQwNFxuICAgIDsgIDEyOTBcbiAgICA7ICA0NjNcbiAgICA7ICAyMTVcbiAgICA7ICAxMThcbiAgICA7ICA3M1xuICAgIDsgIDQ5XG4gICAgOyAgMzVcbiAgICA7ICAyN1xuICAgIDsgIDIxXG4gICAgOyAgMTdcbiAgICA7ICAxNFxuICAgIDsgIDEyXG4gICAgOyAgMTBcbiAgICA7ICA5XG4gICAgOyAgOFxuICAgIDsgIDdcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IDMxIC0+XG4gICAgW3wgMTA3Mzc0MTgyM1xuICAgIDsgIDEwNzM3NDE4MjNcbiAgICA7ICAzMjc2N1xuICAgIDsgIDEwMjNcbiAgICA7ICAxODFcbiAgICA7ICA2M1xuICAgIDsgIDMxXG4gICAgOyAgMTlcbiAgICA7ICAxM1xuICAgIDsgIDEwXG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDYzX29uX2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuXG5sZXQgaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICAyMTQ3NDgzNjQ3TFxuICA7ICAxNjY0NTEwTFxuICA7ICA0NjM0MExcbiAgOyAgNTQwNExcbiAgOyAgMTI5MExcbiAgOyAgNDYzTFxuICA7ICAyMTVMXG4gIDsgIDExOExcbiAgOyAgNzNMXG4gIDsgIDQ5TFxuICA7ICAzNUxcbiAgOyAgMjdMXG4gIDsgIDIxTFxuICA7ICAxN0xcbiAgOyAgMTRMXG4gIDsgIDEyTFxuICA7ICAxMExcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgOyAgMUxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcblxubGV0IGludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgMzAzNzAwMDQ5OUxcbiAgOyAgMjA5NzE1MUxcbiAgOyAgNTUxMDhMXG4gIDsgIDYyMDhMXG4gIDsgIDE0NDhMXG4gIDsgIDUxMUxcbiAgOyAgMjM0TFxuICA7ICAxMjdMXG4gIDsgIDc4TFxuICA7ICA1MkxcbiAgOyAgMzhMXG4gIDsgIDI4TFxuICA7ICAyMkxcbiAgOyAgMThMXG4gIDsgIDE1TFxuICA7ICAxM0xcbiAgOyAgMTFMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBpbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTMwMzcwMDA0OTlMXG4gIDsgIC0yMDk3MTUxTFxuICA7ICAtNTUxMDhMXG4gIDsgIC02MjA4TFxuICA7ICAtMTQ0OExcbiAgOyAgLTUxMUxcbiAgOyAgLTIzNExcbiAgOyAgLTEyN0xcbiAgOyAgLTc4TFxuICA7ICAtNTJMXG4gIDsgIC0zOExcbiAgOyAgLTI4TFxuICA7ICAtMjJMXG4gIDsgIC0xOExcbiAgOyAgLTE1TFxuICA7ICAtMTNMXG4gIDsgIC0xMUxcbiAgOyAgLTlMXG4gIDsgIC04TFxuICA7ICAtN0xcbiAgOyAgLTdMXG4gIDsgIC02TFxuICA7ICAtNkxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMUxcbiAgfF1cbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IG5lZ2F0aXZlX2V4cG9uZW50ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImV4cG9uZW50IGNhbiBub3QgYmUgbmVnYXRpdmVcIiAoKVxubGV0IG92ZXJmbG93ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImludGVnZXIgb3ZlcmZsb3cgaW4gcG93XCIgKClcblxuKCogVG8gaW1wbGVtZW50IFtpbnQ2NF9wb3ddLCB3ZSB1c2UgQyBjb2RlIHJhdGhlciB0aGFuIE9DYW1sIHRvIGVsaW1pbmF0ZSBhbGxvY2F0aW9uLiAqKVxuZXh0ZXJuYWwgaW50X21hdGhfaW50X3BvdyA6IGludCAtPiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YlwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBpbnRfbWF0aF9pbnQ2NF9wb3cgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YlwiXG5cbmxldCBpbnRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBpZiBleHBvbmVudCA8IDAgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgYWJzIGJhc2UgPiAxXG4gICYmIChleHBvbmVudCA+IDYzXG4gICAgICB8fCBhYnMgYmFzZSA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4oZXhwb25lbnQpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbm1vZHVsZSBJbnQ2NF93aXRoX2NvbXBhcmlzb25zID0gc3RydWN0XG4gIGluY2x1ZGUgQ2FtbC5JbnQ2NFxuXG4gIGV4dGVybmFsICggPCApIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoID49ICkgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmVuZFxuXG4oKiB3ZSBkb24ndCBkbyBbYWJzXSBpbiBpbnQ2NCBjYXNlIHRvIGF2b2lkIGFsbG9jYXRpb24gKilcbmxldCBpbnQ2NF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiAoYmFzZSA+IDFMIHx8IGJhc2UgPCAtMUwpXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgKGJhc2UgPj0gMExcbiAgICAgICAgICAmJiBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgICAgIClcbiAgICAgIHx8IChiYXNlIDwgMExcbiAgICAgICAgICAmJiBiYXNlIDwgUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgICAgICkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5sZXQgaW50NjNfcG93X29uX2ludDY0IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgYWJzIGJhc2UgPiAxTFxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IGFicyBiYXNlXG4gICAgICAgICA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgIClcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgRmxvYXRhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggfi0gKSA6IHQgLT4gdFxuXG4gIGluY2x1ZGUgQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIG9mX2ludF9leG4gOiBpbnQgLT4gdFxuICB2YWwgcmVtIDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoWCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBvcGVuIFhcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAlJSAlcyBpbiBjb3JlX2ludC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgbGV0IHJ2YWwgPSBYLnJlbSB4IHkgaW5cbiAgICBpZiBydmFsIDwgemVybyB0aGVuIHJ2YWwgKyB5IGVsc2UgcnZhbFxuICA7O1xuXG4gIGxldCBvbmUgPSBvZl9pbnRfZXhuIDFcblxuICBsZXQgKCAvJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgLyUlICVzIGluIGNvcmVfaW50Lm1sOiBkaXZpc29yIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBpZiB4IDwgemVybyB0aGVuICgoeCArIG9uZSkgLyB5KSAtIG9uZSBlbHNlIHggLyB5XG4gIDs7XG5cbiAgKCoqIGZsb2F0IGRpdmlzaW9uIG9mIGludGVnZXJzICopXG4gIGxldCAoIC8vICkgeCB5ID0gdG9fZmxvYXQgeCAvLiB0b19mbG9hdCB5XG5cbiAgbGV0IHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9IGkgLSAoaSAlIG1vZHVsdXMpXG5cbiAgbGV0IHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGlmIHJlbWFpbmRlciA9IHplcm8gdGhlbiBpIGVsc2UgaSArIG1vZHVsdXMgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXQgcm91bmRfdG93YXJkc196ZXJvIGkgfnRvX211bHRpcGxlX29mID1cbiAgICBpZiBpID0gemVyb1xuICAgIHRoZW4gemVyb1xuICAgIGVsc2UgaWYgaSA+IHplcm9cbiAgICB0aGVuIHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICBlbHNlIHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mXG4gIDs7XG5cbiAgbGV0IHJvdW5kX25lYXJlc3QgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgbGV0IG1vZHVsdXNfbWludXNfcmVtYWluZGVyID0gbW9kdWx1cyAtIHJlbWFpbmRlciBpblxuICAgIGlmIG1vZHVsdXNfbWludXNfcmVtYWluZGVyIDw9IHJlbWFpbmRlclxuICAgIHRoZW4gaSArIG1vZHVsdXNfbWludXNfcmVtYWluZGVyXG4gICAgZWxzZSBpIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIGkgfnRvX211bHRpcGxlX29mID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYERvd24gLT4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFVwIC0+IHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaW50X3BvdyA9IGludF9wb3dcbiAgbGV0IGludDY0X3BvdyA9IGludDY0X3Bvd1xuICBsZXQgaW50NjNfcG93X29uX2ludDY0ID0gaW50NjNfcG93X29uX2ludDY0XG5cbiAgbW9kdWxlIFBvd19vdmVyZmxvd19ib3VuZHMgPSBQb3dfb3ZlcmZsb3dfYm91bmRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBDIHN0dWIgZm9yIGludCBwb3Bjb3VudCB0byB1c2UgdGhlIFBPUENOVCBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuZXh0ZXJuYWwgaW50X3BvcGNvdW50IDogaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnRcIiBbQEBub2FsbG9jXVxuXG4oKiBUbyBtYWludGFpbiBqYXZhc2NyaXB0IGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSB1bmJveGluZywgd2UgaW1wbGVtZW50IHBvcGNvdW50IGluXG4gICBPQ2FtbCByYXRoZXIgdGhhbiB1c2UgQyBzdHVicy4gSW1wbGVtZW50YXRpb24gYWRhcHRlZCBmcm9tOlxuICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFtbWluZ193ZWlnaHQjRWZmaWNpZW50X2ltcGxlbWVudGF0aW9uICopXG5sZXQgaW50NjRfcG9wY291bnQgPVxuICBsZXQgb3BlbiBDYW1sLkludDY0IGluXG4gIGxldCAoICsgKSA9IGFkZCBpblxuICBsZXQgKCAtICkgPSBzdWIgaW5cbiAgbGV0ICggKiApID0gbXVsIGluXG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbCBpblxuICBsZXQgKCBsYW5kICkgPSBsb2dhbmQgaW5cbiAgbGV0IG0xID0gMHg1NTU1NTU1NTU1NTU1NTU1TCBpblxuICAoKiAwYjAxMDEwMTAxLi4uICopXG4gIGxldCBtMiA9IDB4MzMzMzMzMzMzMzMzMzMzM0wgaW5cbiAgKCogMGIwMDExMDAxMS4uLiAqKVxuICBsZXQgbTQgPSAweDBmMGYwZjBmMGYwZjBmMGZMIGluXG4gICgqIDBiMDAwMDExMTEuLi4gKilcbiAgbGV0IGgwMSA9IDB4MDEwMTAxMDEwMTAxMDEwMUwgaW5cbiAgKCogMSBiaXQgc2V0IHBlciBieXRlICopXG4gIGZ1biBbQGlubGluZV0geCAtPlxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBwYWlyIG9mIGJpdHMgKilcbiAgICBsZXQgeCA9IHggLSAoKHggbHNyIDEpIGxhbmQgbTEpIGluXG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IDQgYml0cyAqKVxuICAgIGxldCB4ID0gKHggbGFuZCBtMikgKyAoKHggbHNyIDIpIGxhbmQgbTIpIGluXG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IGJ5dGUgKilcbiAgICBsZXQgeCA9ICh4ICsgKHggbHNyIDQpKSBsYW5kIG00IGluXG4gICAgKCogc3VtIHRoZSBiaXQgY291bnRzIGluIHRoZSB0b3AgYnl0ZSBhbmQgc2hpZnQgaXQgZG93biAqKVxuICAgIHRvX2ludCAoKHggKiBoMDEpIGxzciA1Nilcbjs7XG5cbmxldCBpbnQzMl9wb3Bjb3VudCA9XG4gICgqIE9uIDY0LWJpdCBzeXN0ZW1zLCB0aGlzIGlzIGZhc3RlciB0aGFuIGltcGxlbWVudGluZyB1c2luZyBbaW50MzJdIGFyaXRobWV0aWMuICopXG4gIGxldCBtYXNrID0gMHhmZmZmX2ZmZmZMIGluXG4gIGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoQ2FtbC5JbnQ2NC5sb2dhbmQgKENhbWwuSW50NjQub2ZfaW50MzIgeCkgbWFzaylcbjs7XG5cbmxldCBuYXRpdmVpbnRfcG9wY291bnQgPVxuICBtYXRjaCBDYW1sLk5hdGl2ZWludC5zaXplIHdpdGhcbiAgfCAzMiAtPiBmdW4gW0BpbmxpbmVdIHggLT4gaW50MzJfcG9wY291bnQgKENhbWwuTmF0aXZlaW50LnRvX2ludDMyIHgpXG4gIHwgNjQgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChDYW1sLkludDY0Lm9mX25hdGl2ZWludCB4KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNpZ24wXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChTaWduMClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xLlxuICB8IFplcm8gLT4gMC5cbiAgfCBQb3MgLT4gMS5cbjs7XG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuOztcblxubGV0ICggKiApIHQgdCcgPSBvZl9pbnQgKHRvX2ludCB0ICogdG9faW50IHQnKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhdCB0aGUgZW5kLCBhZnRlciBhbnlcbiAgIGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvXG4gICB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXNcbiAgIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50X2ludGZcbmluY2x1ZGUgSW50MFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgeCB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIHggeVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICB8IF8gLT4gUHJpbnRmLmZhaWx3aXRoZiBcIkludC5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbmVuZFxuXG5sZXQgbnVtX2JpdHMgPSBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCB0b19mbG9hdCA9IENhbWwuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gQ2FtbC5pbnRfb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gQ2FtbC5pbnRfb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIleFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJXhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogdCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMl90cnVuYyA6IGludDMyIC0+IHQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50NjRfdHJ1bmMgOiBpbnQ2NCAtPiB0ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX25hdGl2ZWludF90cnVuYyA6IG5hdGl2ZWludCAtPiB0ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5cbmxldCBwcmVkIGkgPSBpIC0gMVxubGV0IHN1Y2MgaSA9IGkgKyAxXG5sZXQgdG9faW50IGkgPSBpXG5sZXQgdG9faW50X2V4biA9IHRvX2ludFxubGV0IG9mX2ludCBpID0gaVxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCBtYXhfdmFsdWUgPSBDYW1sLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBDYW1sLm1pbl9pbnRcbmxldCBtYXhfdmFsdWVfMzBfYml0cyA9IDB4M0ZGRl9GRkZGXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX2ludFxubGV0IG9mX2ludDMyX2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludDMyID0gQ29udi5pbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9faW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnRfZXhuXG5sZXQgdG9faW50NjQgPSBDb252LmludF90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IGFicyB4ID0gYWJzIHhcblxuKCogbm90ZSB0aGF0IHJlbSBpcyBub3Qgc2FtZSBhcyAlICopXG5sZXQgcmVtIGEgYiA9IGEgbW9kIGJcbmxldCBpbmNyID0gQ2FtbC5pbmNyXG5sZXQgZGVjciA9IENhbWwuZGVjclxubGV0IHNoaWZ0X3JpZ2h0IGEgYiA9IGEgYXNyIGJcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsIGEgYiA9IGEgbHNyIGJcbmxldCBzaGlmdF9sZWZ0IGEgYiA9IGEgbHNsIGJcbmxldCBiaXRfbm90IGEgPSBsbm90IGFcbmxldCBiaXRfb3IgYSBiID0gYSBsb3IgYlxubGV0IGJpdF9hbmQgYSBiID0gYSBsYW5kIGJcbmxldCBiaXRfeG9yIGEgYiA9IGEgbHhvciBiXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnRfcG93XG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggLSAxIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4ICsgMVxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCAtICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgKHggLSAxKSA9IDBcbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKCogTm90ZSB0aGF0IHdlIHBhc3MgdGhlIHRhZ2dlZCBpbnQgaGVyZS4gU2VlIGludF9tYXRoX3N0dWJzLmMgZm9yIGRldGFpbHMgb24gd2h5XG4gICAgICAgICAgdGhpcyBpcyBjb3JyZWN0LiAqKVxuICAgIGludFxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jbHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnRbQHVudGFnZ2VkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgaWYgaSA9IDEgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKGkgLSAxKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnRfcG9wY291bnRcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuICBleHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbiAgZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG4gIGV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuICBleHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcblxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFicyA9IGFic1xuXG4gIGV4dGVybmFsIG5lZyA6IHQgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBtb2R1bGUgRiA9IEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgRlxuXG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5cbiAgKCogVGhlc2UgaW5saW5lZCB2ZXJzaW9ucyBvZiAoJSksICgvJSksIGFuZCAoLy8pIHBlcmZvcm0gYmV0dGVyIHRoYW4gdGhlaXIgZnVuY3Rvcml6ZWRcbiAgICAgY291bnRlcnBhcnRzIGluIFtGXSAoc2VlIGJlbmNobWFya3MgYmVsb3cpLlxuXG4gICAgIFRoZSByZWFzb24gdGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGluIFtJbnRdIGJ1dCBub3QgaW4gYW55IG9mIHRoZSBvdGhlciBpbnRlZ2VyXG4gICAgIG1vZHVsZXMgaXMgdGhhdCB0aGV5IGV4aXN0ZWQgaW4gW0ludF0gYW5kIFtJbnRdIGFsb25lIHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2ZcbiAgICAgdGhlIFtJbnRfbWF0aC5NYWtlXSBmdW5jdG9yLCBhbmQgd2UgZGlkbid0IHdhbnQgdG8gZGVncmFkZSB0aGVpciBwZXJmb3JtYW5jZS5cblxuICAgICBXZSB3b24ndCBwcmUtZW1wdGl2ZWx5IGRvIHRoZSBzYW1lIGZvciBuZXcgZnVuY3Rpb25zLCB1bmxlc3Mgc29tZW9uZSBjYXJlcywgb24gYSBjYXNlXG4gICAgIGJ5IGNhc2UgZmFzaGlvbi4gICopXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IHJlbSB4IHkgaW5cbiAgICBpZiBydmFsIDwgemVybyB0aGVuIHJ2YWwgKyB5IGVsc2UgcnZhbFxuICA7O1xuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgLyUlICVzIGluIGNvcmVfaW50Lm1sOiBkaXZpc29yIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBpZiB4IDwgemVybyB0aGVuICgoeCArIG9uZSkgLyB5KSAtIG9uZSBlbHNlIHggLyB5XG4gIDs7XG5cbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuICBleHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxuICBsZXQgbG5vdCA9IGxub3RcblxuICBleHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuICBleHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuICBleHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50XSBhbmQgW0ludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBPX0YgPSBPLkZcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3JcbiAgIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVY2hhcjBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVWNoYXJcIlxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IEhhc2guZm9sZF9pbnQgc3RhdGUgKHRvX2ludCB0KVxuICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBsZXQgdG9fc3RyaW5nIHQgPSBQcmludGYuc3ByaW50ZiBcIlUrJTA0WFwiICh0b19pbnQgdClcblxuICAoKiBEbyBub3QgYWN0dWFsbHkgZXhwb3J0IHRoaXMuIFNlZSBkaXNjdXNzaW9uIGluIHRoZSAubWxpICopXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlVjaGFyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiVSslWFwiIChmdW4gaSAtPiBVY2hhcjAub2ZfaW50IGkpIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlVjaGFyLnRfb2Zfc2V4cDogYXRvbSBvZiB0aGUgZm9ybSBVK1hYWFggbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBpbnRfaXNfc2NhbGFyID0gaXNfdmFsaWRcblxubGV0IHN1Y2NfZXhuIGMgPVxuICB0cnkgVWNoYXIwLnN1Y2MgYyB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gZmFpbHdpdGhmIFwiVWNoYXIuc3VjY19leG46ICVzXCIgbXNnICgpXG47O1xuXG5sZXQgc3VjYyBjID1cbiAgdHJ5IFNvbWUgKFVjaGFyMC5zdWNjIGMpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuOztcblxubGV0IHByZWRfZXhuIGMgPVxuICB0cnkgVWNoYXIwLnByZWQgYyB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gZmFpbHdpdGhmIFwiVWNoYXIucHJlZF9leG46ICVzXCIgbXNnICgpXG47O1xuXG5sZXQgcHJlZCBjID1cbiAgdHJ5IFNvbWUgKFVjaGFyMC5wcmVkIGMpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuOztcblxubGV0IG9mX3NjYWxhciBpID0gaWYgaW50X2lzX3NjYWxhciBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX3NjYWxhcl9leG4gaSA9XG4gIGlmIGludF9pc19zY2FsYXIgaVxuICB0aGVuIHVuc2FmZV9vZl9pbnQgaVxuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLm9mX2ludF9leG4gZ290IGEgaW52YWxpZCBVbmljb2RlIHNjYWxhciB2YWx1ZTogJTA0WFwiIGkgKClcbjs7XG5cbmxldCB0b19zY2FsYXIgdCA9IFVjaGFyMC50b19pbnQgdFxubGV0IHRvX2NoYXIgYyA9IGlmIGlzX2NoYXIgYyB0aGVuIFNvbWUgKHVuc2FmZV90b19jaGFyIGMpIGVsc2UgTm9uZVxuXG5sZXQgdG9fY2hhcl9leG4gYyA9XG4gIGlmIGlzX2NoYXIgY1xuICB0aGVuIHVuc2FmZV90b19jaGFyIGNcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci50b19jaGFyX2V4biBnb3QgYSBub24gbGF0aW4tMSBjaGFyYWN0ZXI6IFUrJTA0WFwiICh0b19pbnQgYykgKClcbjs7XG5cbmxldCB1dGY4X2J5dGVfbGVuZ3RoIHVjaGFyID1cbiAgbGV0IGNvZGVwb2ludCA9IHRvX3NjYWxhciB1Y2hhciBpblxuICBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwMFxuICB0aGVuIDJcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4MTAwMDBcbiAgdGhlbiAzXG4gIGVsc2UgNFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdhKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAwM18gYl9fMDA0XylcbiAgICAgIDogICgoYV9fMDAzXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMDRfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDAzXywgYl9fMDA0XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIF9vZl9iX18wMDJfIFQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVFwiXG47O1xuXG5bQEBAZW5kXVxuXG50eXBlICgnYSwgJ2IpIGVxdWFsID0gKCdhLCAnYikgdFxuXG5sZXQgcmVmbCA9IFRcbmxldCBzeW0gKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChiLCBhKSB0ID0gVFxubGV0IHRyYW5zICh0eXBlIGEgYiBjKSAoVCA6IChhLCBiKSB0KSAoVCA6IChiLCBjKSB0KSA6IChhLCBjKSB0ID0gVFxubGV0IGNvbnYgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSAoYSA6IGEpIDogYiA9IGFcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcblxubW9kdWxlIExpZnQyIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KVxuICAgIDogKChhMSwgYTIpIFgudCwgKGIxLCBiMikgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGlmdDMgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyIGEzIGIzKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgKFQgOiAoYTMsIGIzKSB0KVxuICAgIDogKChhMSwgYTIsIGEzKSBYLnQsIChiMSwgYjIsIGIzKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbmxldCBkZXR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCkgOiAoYTEsIGIxKSB0ICogKGEyLCBiMikgdCA9XG4gIFQsIFRcbjs7XG5cbmxldCB0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSA6IChhMSAqIGEyLCBiMSAqIGIyKSB0ID0gVFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIHN0cmlwIDogKCdhIHQsICdiIHQpIGVxdWFsIC0+ICgnYSwgJ2IpIGVxdWFsXG5lbmRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlMiA9IHNpZ1xuICB0eXBlICgnYTEsICdhMikgdFxuXG4gIHZhbCBzdHJpcCA6ICgoJ2ExLCAnYTIpIHQsICgnYjEsICdiMikgdCkgZXF1YWwgLT4gKCdhMSwgJ2IxKSBlcXVhbCAqICgnYTIsICdiMikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgQ29tcG9zaXRpb25fcHJlc2VydmVzX2luamVjdGl2aXR5IChNMSA6IEluamVjdGl2ZSkgKE0yIDogSW5qZWN0aXZlKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBNMS50IE0yLnRcblxuICBsZXQgc3RyaXAgZSA9IE0xLnN0cmlwIChNMi5zdHJpcCBlKVxuZW5kXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBtb2R1bGUgVWlkID0gSW50XG5cbiAgbW9kdWxlIFdpdG5lc3MgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IC4uXG4gICAgICB0eXBlIHR5cGVfd2l0bmVzc19pbnQgPSBbIGB0eXBlX3dpdG5lc3Mgb2YgaW50IF0gW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIGxldCBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnQgPVxuICAgICAgICAoZnVuIChgdHlwZV93aXRuZXNzIHZfXzAwNV8pIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInR5cGVfd2l0bmVzc1wiOyBzZXhwX29mX2ludCB2X18wMDVfIF1cbiAgICAgICAgICAgOiB0eXBlX3dpdG5lc3NfaW50IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIDs7XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIGxldCBzZXhwX29mX3QgX3NleHBfb2ZfYSB0ID1cbiAgICAgICAgYHR5cGVfd2l0bmVzc1xuICAgICAgICAgIChDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgdCkpXG4gICAgICAgIHw+IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgbGV0IHNleHBfb2ZfdCAodHlwZSBhKSBzZXhwX29mX2EgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIE0uS2V5IHw+IEtleS5zZXhwX29mX3Qgc2V4cF9vZl9hXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgdCkgKCkgPVxuICAgICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgICBlbmRcbiAgICAgIGluXG4gICAgICAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gdClcbiAgICA7O1xuXG4gICAgbGV0IHVpZCAodHlwZSBhKSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIE0uS2V5KVxuICAgIDs7XG5cbiAgICAoKiBXZSB3YW50IGEgY29uc3RhbnQgYWxsb2NhdGVkIG9uY2UgdGhhdCBbc2FtZV0gY2FuIHJldHVybiB3aGVuZXZlciBpdCBnZXRzIHRoZSBzYW1lXG4gICAgICAgd2l0bmVzc2VzLiAgSWYgd2Ugd3JpdGUgdGhlIGNvbnN0YW50IGluc2lkZSB0aGUgYm9keSBvZiBbc2FtZV0sIHRoZSBuYXRpdmUtY29kZVxuICAgICAgIGNvbXBpbGVyIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIGFuZCBsaWZ0IGl0IG91dC4gIEJ1dCBmb3IgY2xhcml0eSBhbmQgcm9idXN0bmVzcyxcbiAgICAgICB3ZSBkbyBpdCBvdXJzZWx2ZXMuICopXG4gICAgbGV0IHNvbWVfdCA9IFNvbWUgVFxuXG4gICAgbGV0IHNhbWUgKHR5cGUgYSBiKSAoYSA6IGEgdCkgKGIgOiBiIHQpIDogKGEsIGIpIGVxdWFsIG9wdGlvbiA9XG4gICAgICBsZXQgbW9kdWxlIEEgPSAodmFsIGEgOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQiA9ICh2YWwgYiA6IFMgd2l0aCB0eXBlIHQgPSBiKSBpblxuICAgICAgbWF0Y2ggQS5LZXkgd2l0aFxuICAgICAgfCBCLktleSAtPiBzb21lX3RcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcbiAgZW5kXG5cblxuICB0eXBlICdhIHQgPVxuICAgIHsgd2l0bmVzcyA6ICdhIFdpdG5lc3MudFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgdG9fc2V4cCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IF8geyB3aXRuZXNzOyBuYW1lOyB0b19zZXhwIH0gOiBTZXhwLnQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIEF0b20gbmFtZVxuICAgIGVsc2VcbiAgICAgIExpc3RcbiAgICAgICAgWyBMaXN0IFsgQXRvbSBcIm5hbWVcIjsgQXRvbSBuYW1lIF1cbiAgICAgICAgOyBMaXN0IFsgQXRvbSBcIndpdG5lc3NcIjsgd2l0bmVzcyB8PiBXaXRuZXNzLnNleHBfb2ZfdCB0b19zZXhwIF1cbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zZXhwIHQgPSB0LnRvX3NleHBcbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgY3JlYXRlIH5uYW1lIHRvX3NleHAgPSB7IHdpdG5lc3MgPSBXaXRuZXNzLmNyZWF0ZSAoKTsgbmFtZTsgdG9fc2V4cCB9XG4gIGxldCB1aWQgdCA9IFdpdG5lc3MudWlkIHQud2l0bmVzc1xuICBsZXQgaGFzaCB0ID0gdWlkIHRcbiAgbGV0IGhhc2hfZm9sZF90IHMgdCA9IGhhc2hfZm9sZF9pbnQgcyAodWlkIHQpXG4gIGxldCBzYW1lX3dpdG5lc3MgdDEgdDIgPSBXaXRuZXNzLnNhbWUgdDEud2l0bmVzcyB0Mi53aXRuZXNzXG4gIGxldCBzYW1lIHQxIHQyID0gT3B0aW9uLmlzX3NvbWUgKHNhbWVfd2l0bmVzcyB0MSB0MilcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biB0MSB0MiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIHQxIHQyIHdpdGhcbiAgICB8IFNvbWUgdyAtPiB3XG4gICAgfCBOb25lIC0+XG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gZ290IGRpZmZlcmVudCBpZHNcIlxuICAgICAgICAgICBbICggXCJcIlxuICAgICAgICAgICAgICwgc2V4cF9vZl9wYWlyIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpICh0MSwgdDIpXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICBdKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIFsnYSBDaGVhcF9vcHRpb24udF0gaXMgbGlrZSBbJ2Egb3B0aW9uXSwgYnV0IGl0IGRvZXNuJ3QgYm94IFtzb21lIF9dIHZhbHVlcy5cblxuICAgIFRoZXJlIGFyZSBzZXZlcmFsIHRoaW5ncyB0aGF0IGFyZSB1bnNhZmUgYWJvdXQgaXQ6XG5cbiAgICAtIFtmbG9hdCB0IGFycmF5XSAob3IgYW55IGFycmF5LWJhY2tlZCBjb250YWluZXIpIGlzIG5vdCBtZW1vcnktc2FmZVxuICAgICAgYmVjYXVzZSBmbG9hdCBhcnJheSBvcHRpbWl6YXRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdW5ib3hlZCBvcHRpb25cbiAgICAgIG9wdGltaXphdGlvbi4gWW91IGhhdmUgdG8gdXNlIFtVbmlmb3JtX2FycmF5LnRdIGluc3RlYWQgb2YgW2FycmF5XS5cblxuICAgIC0gTmVzdGVkIG9wdGlvbnMgKFsnYSB0IHRdKSBkb24ndCB3b3JrLiBUaGV5IGFyZSBiZWxpZXZlZCB0byBiZVxuICAgICAgbWVtb3J5LXNhZmUsIGJ1dCBub3QgcGFyYW1ldHJpYy5cblxuICAgIC0gQSByZWNvcmQgd2l0aCBbZmxvYXQgdF1zIGluIGl0IHNob3VsZCBiZSBzYWZlLCBidXQgaXQncyBvbmx5IFt0XSBiZWluZ1xuICAgICAgYWJzdHJhY3QgdGhhdCBnaXZlcyB5b3Ugc2FmZXR5LiBJZiB0aGUgY29tcGlsZXIgd2FzIHNtYXJ0IGVub3VnaCB0byBwZWVrXG4gICAgICB0aHJvdWdoIHRoZSBtb2R1bGUgc2lnbmF0dXJlIHRoZW4gaXQgY291bGQgZGVjaWRlIHRvIGNvbnN0cnVjdCBhIGZsb2F0XG4gICAgICBhcnJheSBpbnN0ZWFkLiAqKVxubW9kdWxlIENoZWFwX29wdGlvbiA9IHN0cnVjdFxuICAoKiBUaGlzIGlzIHRha2VuIGZyb20gY29yZS4gUmF0aGVyIHRoYW4gZXhwb3NlIGl0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIGJhc2UsIGp1c3RcbiAgICAga2VlcCBhIGNvcHkgYXJvdW5kIGhlcmUuICopXG4gIGxldCBwaHlzX3NhbWUgKHR5cGUgYSBiKSAoYSA6IGEpIChiIDogYikgPSBwaHlzX2VxdWFsIGEgKENhbWwuT2JqLm1hZ2ljIGIgOiBhKVxuXG4gIG1vZHVsZSBUMCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5vbmUgOiBfIHRcbiAgICB2YWwgc29tZSA6ICdhIC0+ICdhIHRcbiAgICB2YWwgaXNfbm9uZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3NvbWUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+ICdhXG4gICAgdmFsIHZhbHVlX3Vuc2FmZSA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgaXRlcl9zb21lIDogJ2EgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgKydhIHRcblxuICAgICgqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgICAgICBbcGh5c19zYW1lXSBhcyB0aGlzIG9uZS5cblxuICAgICAgIEl0IHdvdWxkIGJlIHNpbXBsZXIgdG8gdXNlIHRoaXMgdmFsdWUgYXMgW25vbmVdLCBidXQgd2UgdXNlIGFuIGltbWVkaWF0ZSBpbnN0ZWFkXG4gICAgICAgYmVjYXVzZSBpdCBsZXRzIHVzIGF2b2lkIGNhbWxfbW9kaWZ5IHdoZW4gc2V0dGluZyB0byBbbm9uZV0sIG1ha2luZyBjZXJ0YWluXG4gICAgICAgYmVuY2htYXJrcyBzaWduaWZpY2FudGx5IGZhc3RlciAoZS5nLiAuLi9iZW5jaC9hcnJheV9xdWV1ZS5leGUpLlxuXG4gICAgICAgdGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgaW4gTW9wdGlvbiwgYW5kIGlmIHdlIGZpbmQgeWV0IGFub3RoZXIgcGxhY2Ugd2hlcmUgd2Ugd2FudFxuICAgICAgIGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG4gICAgbGV0IG5vbmVfc3Vic3RpdHV0ZSA6IF8gdCA9IENhbWwuT2JqLm9iaiAoQ2FtbC5PYmoubmV3X2Jsb2NrIENhbWwuT2JqLmFic3RyYWN0X3RhZyAxKVxuXG4gICAgbGV0IG5vbmUgOiBfIHQgPVxuICAgICAgKCogVGhlIG51bWJlciB3YXMgcHJvZHVjZWQgYnlcbiAgICAgICAgIFs8IC9kZXYvdXJhbmRvbSB0ciAtYyAtZCAnMTIzNDU2Nzg5MGFiY2RlZicgfCBoZWFkIC1jIDE2XS5cblxuICAgICAgICAgVGhlIGlkZWEgaXMgdGhhdCBhIHJhbmRvbSBudW1iZXIgd2lsbCBoYXZlIGxvd2VyIHByb2JhYmlsaXR5IHRvIGNvbGxpZGUgd2l0aFxuICAgICAgICAgYW55dGhpbmcgdGhhbiBhbnkgbnVtYmVyIHdlIGNhbiBjaG9vc2Ugb3Vyc2VsdmVzLlxuXG4gICAgICAgICBXZSBhcmUgdXNpbmcgYSBwb2x5bW9ycGhpYyB2YXJpYW50IGluc3RlYWQgb2YgYW4gaW50ZWdlciBjb25zdGFudCBiZWNhdXNlIHRoZXJlXG4gICAgICAgICBpcyBhIGNvbXBpbGVyIGJ1ZyB3aGVyZSBpdCB3cm9uZ2x5IGFzc3VtZXMgdGhhdCB0aGUgcmVzdWx0IG9mIFtpZiBfIHRoZW4gYyBlbHNlXG4gICAgICAgICB5XSBpcyBub3QgYSBwb2ludGVyIGlmIFtjXSBpcyBhbiBpbnRlZ2VyIGNvbXBpbGUtdGltZSBjb25zdGFudC4gIFRoaXMgaXMgYmVpbmdcbiAgICAgICAgIGZpeGVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9wdWxsLzU1NS4gIFRoZSBcIm1lbW9yeSBjb3JydXB0aW9uXCIgdGVzdFxuICAgICAgICAgYmVsb3cgZGVtb25zdHJhdGVzIHRoZSBpc3N1ZS4gICopXG4gICAgICBDYW1sLk9iai5tYWdpYyBgeDZlOGVlMzQ3OGUxZDc0NDlcbiAgICA7O1xuXG4gICAgbGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgeCBub25lXG4gICAgbGV0IGlzX3NvbWUgeCA9IG5vdCAocGh5c19lcXVhbCB4IG5vbmUpXG5cbiAgICBsZXQgc29tZSAodHlwZSBhKSAoeCA6IGEpIDogYSB0ID1cbiAgICAgIGlmIHBoeXNfc2FtZSB4IG5vbmUgdGhlbiBub25lX3N1YnN0aXR1dGUgZWxzZSBDYW1sLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV91bnNhZmUgKHR5cGUgYSkgKHggOiBhIHQpIDogYSA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHggbm9uZV9zdWJzdGl0dXRlIHRoZW4gQ2FtbC5PYmoubWFnaWMgbm9uZSBlbHNlIENhbWwuT2JqLm1hZ2ljIHhcbiAgICA7O1xuXG4gICAgbGV0IHZhbHVlX2V4biB4ID1cbiAgICAgIGlmIGlzX3NvbWUgeFxuICAgICAgdGhlbiB2YWx1ZV91bnNhZmUgeFxuICAgICAgZWxzZSBmYWlsd2l0aCBcIk9wdGlvbl9hcnJheS5nZXRfc29tZV9leG46IHRoZSBlbGVtZW50IGlzIFtOb25lXVwiXG4gICAgOztcblxuICAgIGxldCBpdGVyX3NvbWUgdCB+ZiA9IGlmIGlzX3NvbWUgdCB0aGVuIGYgKHZhbHVlX3Vuc2FmZSB0KVxuICBlbmRcblxuICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQwXG5cbiAgICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICB8IFNvbWUgeCAtPiBzb21lIHhcbiAgICA7O1xuXG4gICAgbGV0W0BpbmxpbmVdIHRvX29wdGlvbiB4ID0gaWYgaXNfc29tZSB4IHRoZW4gU29tZSAodmFsdWVfdW5zYWZlIHgpIGVsc2UgTm9uZVxuICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX29wdGlvblxuICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX29wdGlvblxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICAgIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICA9XG4gICAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChPcHRpb24udF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFQxXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxIChPcHRpb24pIChUMSlcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBDaGVhcF9vcHRpb24udCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDAxXyB4X18wMDNfIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9vZl9zZXhwIChDaGVhcF9vcHRpb24udF9vZl9zZXhwIF9vZl9hX18wMDFfKSB4X18wMDNfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDRfIHhfXzAwNV8gLT5cbiAgVW5pZm9ybV9hcnJheS5zZXhwX29mX3QgKENoZWFwX29wdGlvbi5zZXhwX29mX3QgX29mX2FfXzAwNF8pIHhfXzAwNV9cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9zZXhwX2dyYW1tYXIgKENoZWFwX29wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVtcHR5ID0gVW5pZm9ybV9hcnJheS5lbXB0eVxubGV0IGNyZWF0ZSB+bGVuID0gVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbiBDaGVhcF9vcHRpb24ubm9uZVxubGV0IGluaXQgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIChmIGkpKVxubGV0IGluaXRfc29tZSBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5zb21lIChmIGkpKVxubGV0IGxlbmd0aCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoXG5sZXRbQGlubGluZV0gZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBnZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX25vbmUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19zb21lIHQgaSA9IENoZWFwX29wdGlvbi5pc19zb21lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIHgpXG5sZXQgc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgc2V0X25vbmUgdCBpID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5sZXQgc3dhcCB0IGkgaiA9IFVuaWZvcm1fYXJyYXkuc3dhcCB0IGkgalxubGV0IHVuc2FmZV9nZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5cbmxldCB1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSB0IGkgPVxuICBDaGVhcF9vcHRpb24udmFsdWVfdW5zYWZlIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuOztcblxubGV0IHVuc2FmZV9pc19zb21lIHQgaSA9IENoZWFwX29wdGlvbi5pc19zb21lIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIHgpXG5sZXQgdW5zYWZlX3NldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCB1bnNhZmVfc2V0X25vbmUgdCBpID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxuXG5sZXQgY2xlYXIgdCA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICB1bnNhZmVfc2V0X25vbmUgdCBpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBpbnB1dCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggaW5wdXQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IGlucHV0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyIGlucHV0IH5mID0gaXRlcmkgaW5wdXQgfmY6KGZ1biAoXyA6IGludCkgeCAtPiBmIHgpXG5cbmxldCBmb2xkaSBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiBhY2MgOj0gZiBpICFhY2MgZWxlbSk7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkIGlucHV0IH5pbml0IH5mID0gZm9sZGkgaW5wdXQgfmluaXQgfmY6KGZ1biAoXyA6IGludCkgYWNjIHggLT4gZiBhY2MgeClcblxuaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5NYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICB0eXBlICdhIGVsdCA9ICdhIG9wdGlvblxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGl0ZXJpID0gYEN1c3RvbSBpdGVyaVxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBtYXBpIGlucHV0IH5mID1cbiAgbGV0IG91dHB1dCA9IGNyZWF0ZSB+bGVuOihsZW5ndGggaW5wdXQpIGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IHVuc2FmZV9zZXQgb3V0cHV0IGkgKGYgaSBlbGVtKSk7XG4gIG91dHB1dFxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcGkgaW5wdXQgfmY6KGZ1biAoXyA6IGludCkgZWxlbSAtPiBmIGVsZW0pXG5cbmxldCBtYXBfc29tZSBpbnB1dCB+ZiA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXQgaW5cbiAgbGV0IG91dHB1dCA9IGNyZWF0ZSB+bGVuIGluXG4gIGxldCAoKSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBvcHQgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgaW5wdXQgaSBpblxuICAgICAgQ2hlYXBfb3B0aW9uLml0ZXJfc29tZSBvcHQgfmY6KGZ1biB4IC0+IHVuc2FmZV9zZXRfc29tZSBvdXRwdXQgaSAoZiB4KSlcbiAgICBkb25lXG4gIGluXG4gIG91dHB1dFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID0gaW5pdCAoQXJyYXkubGVuZ3RoIGFycmF5KSB+ZjooZnVuIGkgLT4gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpKVxuXG5sZXQgb2ZfYXJyYXlfc29tZSBhcnJheSA9XG4gIGluaXRfc29tZSAoQXJyYXkubGVuZ3RoIGFycmF5KSB+ZjooZnVuIGkgLT4gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpKVxuOztcblxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTFfZ2VuZXJpYyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgPSBVbmlmb3JtX2FycmF5LmNvcHlcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmVfY2hlYXBfb3B0aW9uID0gQ2hlYXBfb3B0aW9uXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGFja19pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHNpbWlsYXIgdG8gW0RlcXVlXSBpbiB0aGF0IGl0IHVzZXMgYW4gYXJyYXkgb2YgWydhXSBhbmRcbiAgIGEgbXV0YWJsZSBbaW50XSB0byBpbmRpY2F0ZSB3aGF0IGluIHRoZSBhcnJheSBpcyB1c2VkLiAgV2UgY2hvb3NlIHRvIGltcGxlbWVudCBbU3RhY2tdXG4gICBkaXJlY3RseSByYXRoZXIgdGhhbiBvbiB0b3Agb2YgW0RlcXVlXSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIEUuZy4gYSBzaW1wbGVcbiAgIG1pY3JvYmVuY2htYXJrIHNob3dzIHRoYXQgcHVzaC9wb3AgaXMgYWJvdXQgMjAlIGZhc3Rlci4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGVsdHMgOiAnYSBPcHRpb25fYXJyYXkudFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDAxXyB7IGxlbmd0aCA9IGxlbmd0aF9fMDAzXzsgZWx0cyA9IGVsdHNfXzAwNV8gfSAtPlxuICBsZXQgYm5kc19fMDAyXyA9IFtdIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDZfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMDVfIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDNfIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgaW5cbiAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBzZXhwX29mX3QgPSBgUmVib3VuZF9sYXRlclxubGV0IF8gPSBzZXhwX29mX3RcbmxldCBjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSAoeyBsZW5ndGg7IGVsdHMgfSBhcyB0KSA6IHVuaXQgPVxuICB0cnlcbiAgICBhc3NlcnQgKDAgPD0gbGVuZ3RoICYmIGxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgICBpbnZhcmlhbnRfYSAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBlbHRzIGkpXG4gICAgZG9uZTtcbiAgICAoKiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdW51c2VkIGVsZW1lbnRzIGFyZSB1bnNldCB0byBhdm9pZCBhIHNwYWNlXG4gICAgICAgbGVhay4gKilcbiAgICBmb3IgaSA9IGxlbmd0aCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMgLSAxIGRvXG4gICAgICBhc3NlcnQgKG5vdCAoT3B0aW9uX2FycmF5LmlzX3NvbWUgZWx0cyBpKSlcbiAgICBkb25lXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIlN0YWNrLmludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcImV4blwiLCBleG4gfD4gRXhuLnNleHBfb2ZfdDsgXCJzdGFja1wiLCB0IHw+IHNleHBfb2ZfdF9pbnRlcm5hbCBzZXhwX29mX29wYXF1ZSBdKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHsgbGVuZ3RoID0gMDsgZWx0cyA9IE9wdGlvbl9hcnJheS5lbXB0eSB9XG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuKCogVGhlIG9yZGVyIGluIHdoaWNoIGVsZW1lbnRzIGFyZSB2aXNpdGVkIGhhcyBiZWVuIGNob3NlbiBzbyBhcyB0byBiZSBiYWNrd2FyZHNcbiAgIGNvbXBhdGlibGUgd2l0aCBbQ2FtbC5TdGFja10gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICFyIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1lbSA9IEMubWVtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgb2ZfbGlzdCAodHlwZSBhKSAobCA6IGEgbGlzdCkgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxcbiAgdGhlbiBjcmVhdGUgKClcbiAgZWxzZSAoXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjooMiAqIGxlbmd0aCkgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgT3B0aW9uX2FycmF5LnNldF9zb21lIGVsdHMgaSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHsgbGVuZ3RoOyBlbHRzIH0pXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHJlc2l6ZSB0IHNpemUgPVxuICBsZXQgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOnNpemUgaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfnNyYzp0LmVsdHMgfmRzdDphcnIgfnNyY19wb3M6MCB+ZHN0X3BvczowIH5sZW46dC5sZW5ndGg7XG4gIHQuZWx0cyA8LSBhcnJcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IG5ld19jYXBhY2l0eSAobGVuZ3RoIHQpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gcmVzaXplIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgcHVzaCB0IGEgPVxuICBpZiB0Lmxlbmd0aCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzIHRoZW4gcmVzaXplIHQgKDIgKiAodC5sZW5ndGggKyAxKSk7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmVsdHMgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IHQubGVuZ3RoIC0gMSBpblxuICBsZXQgcmVzdWx0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGk7XG4gIHQubGVuZ3RoIDwtIGk7XG4gIHJlc3VsdFxuOztcblxubGV0IHBvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnBvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgcG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9ub25lbXB0eSB0KVxubGV0IHBvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSBwb3BfZXJyb3IgZWxzZSBwb3Bfbm9uZW1wdHkgdFxubGV0IHRvcF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgKHQubGVuZ3RoIC0gMSlcbmxldCB0b3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay50b3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHRvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3Bfbm9uZW1wdHkgdClcbmxldCB0b3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgdG9wX2Vycm9yIGVsc2UgdG9wX25vbmVtcHR5IHRcbmxldCBjb3B5IHsgbGVuZ3RoOyBlbHRzIH0gPSB7IGxlbmd0aDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jb3B5IGVsdHMgfVxuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDApXG47O1xuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGYgKHBvcF9ub25lbXB0eSB0KTtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIHB1c2ggdCB4O1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgaXMgbGlmdGVkIG91dCBvZiBbTV0gYmVjYXVzZSBbU291cmNlX2NvZGVfcG9zaXRpb24wXSBleHBvcnRzIFtTdHJpbmcwXVxuICAgYXMgW1N0cmluZ10sIHdoaWNoIGRvZXMgbm90IGV4cG9ydCBhIGhhc2ggZnVuY3Rpb24uICopXG5sZXQgaGFzaF9vdmVycmlkZSB7IENhbWwuTGV4aW5nLnBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gPVxuICBTdHJpbmcuaGFzaCBwb3NfZm5hbWVcbiAgbHhvciBJbnQuaGFzaCBwb3NfbG51bVxuICBseG9yIEludC5oYXNoIHBvc19ib2xcbiAgbHhvciBJbnQuaGFzaCBwb3NfY251bVxuOztcblxubW9kdWxlIE0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcblxuICBsZXQgaGFzaCA9IGhhc2hfb3ZlcnJpZGVcbmVuZFxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKE0pXG5cbmxldCBvZl9wb3MgKHBvc19mbmFtZSwgcG9zX2xudW0sIHBvc19jbnVtLCBfKSA9XG4gIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2wgPSAwIH1cbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ1xuICAgIHwgWmVyb1xuICAgIHwgUG9zXG4gICAgfCBOYW5cbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG4gIGxldCB0X29mX3NleHAgPVxuICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDNfID0gXCJzaWduX29yX25hbi5tbC5ULnRcIiBpblxuICAgICBmdW5jdGlvblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIC0+IE5lZ1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIC0+IE5hblxuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgIHwgTmFuIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5hblwiXG4gICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgeyB1bnR5cGVkID1cbiAgICAgICAgVmFyaWFudFxuICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgfVxuICA7O1xuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgKGZ1biBoc3YgYXJnIC0+XG4gICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICB8IE5lZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgfCBOYW4gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAzXG4gICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gIDs7XG5cbiAgbGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jIGFyZyA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICAgIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zOyBOYW4gXSA6IHQgbGlzdClcblxuICBbQEBAZW5kXVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbiAgbGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuU2lnbl9vcl9uYW5cIlxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogVC50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogVC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBULnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFQudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBULnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogVC50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgb2Zfc2lnbiA9IGZ1bmN0aW9uXG4gIHwgU2lnbi5OZWcgLT4gTmVnXG4gIHwgU2lnbi5aZXJvIC0+IFplcm9cbiAgfCBTaWduLlBvcyAtPiBQb3Ncbjs7XG5cbmxldCB0b19zaWduX2V4biA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFNpZ24uTmVnXG4gIHwgWmVybyAtPiBTaWduLlplcm9cbiAgfCBQb3MgLT4gU2lnbi5Qb3NcbiAgfCBOYW4gLT4gaW52YWxpZF9hcmcgXCJCYXNlLlNpZ25fb3JfbmFuLnRvX3NpZ25fZXhuOiBOYW5cIlxuOztcblxubGV0IG9mX2ludCBuID0gb2Zfc2lnbiAoU2lnbi5vZl9pbnQgbilcbmxldCB0b19pbnRfZXhuIHQgPSBTaWduLnRvX2ludCAodG9fc2lnbl9leG4gdClcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG4gIHwgTmFuIC0+IE5hblxuOztcblxubGV0ICggKiApIHQgdCcgPVxuICBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTmFuLCBfIHwgXywgTmFuIC0+IE5hblxuICB8IF8gLT4gb2Zfc2lnbiAoU2lnbi4oICogKSAodG9fc2lnbl9leG4gdCkgKHRvX3NpZ25fZXhuIHQnKSlcbjs7XG5cbigqIEluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgYW55IGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXRcbiAgIGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgYWxsIDogJ2EuICdhIGxpc3QgLT4gJ2EgdCBsaXN0ID1cbiAgZnVuIF9hbGxfb2ZfYSAtPlxuICBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICB8IGVudW1lcmF0ZV9fMDAxXyA6OiBsIC0+IG1hcCBsIChJbmNsIGVudW1lcmF0ZV9fMDAxXyA6OiBhY2MpXG4gICAgIGluXG4gICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgKFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgICAgIHwgZW51bWVyYXRlX18wMDJfIDo6IGwgLT4gbWFwIGwgKEV4Y2wgZW51bWVyYXRlX18wMDJfIDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAgICBbIFVuYm91bmRlZCBdKVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMThfKSA6ICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfIHQpIC0+XG4gIGxldCBlcnJvcl9zb3VyY2VfXzAwNl8gPSBcIm1heWJlX2JvdW5kLm1sLnRcIiBpblxuICBmdW4gX29mX2FfXzAwM18gLT4gZnVuY3Rpb25cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgX3RhZ19fMDA5XykgOjogc2V4cF9hcmdzX18wMTBfKSBhc1xuICAgICAgX3NleHBfXzAwOF8gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxMF8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTFfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAwM18gYXJnMF9fMDExXyBpblxuICAgICAgICAgSW5jbCByZXMwX18wMTJfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMDlfXG4gICAgICAgICAgIF9zZXhwX18wMDhfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTZfIGluXG4gICAgICAgICBFeGNsIHJlczBfXzAxN19cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSAtPiBVbmJvdW5kZWRcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIDo6IF8pIGFzXG4gICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gKHR5cGUgYV9fMDI0XykgOiAoKGFfXzAyNF8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMjRfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICBmdW4gX29mX2FfXzAxOV8gLT4gZnVuY3Rpb25cbiAgICB8IEluY2wgYXJnMF9fMDIwXyAtPlxuICAgICAgbGV0IHJlczBfXzAyMV8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjBfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmNsXCI7IHJlczBfXzAyMV8gXVxuICAgIHwgRXhjbCBhcmcwX18wMjJfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIzXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4Y2xcIjsgcmVzMF9fMDIzXyBdXG4gICAgfCBVbmJvdW5kZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5ib3VuZGVkXCJcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJJbmNsXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJFeGNsXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiVW5ib3VuZGVkXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIHwgQmVsb3dfbG93ZXJfYm91bmRcbiAgfCBJbl9yYW5nZVxuICB8IEFib3ZlX3VwcGVyX2JvdW5kXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoXVxuXG5sZXQgaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAyN18gPSBcIm1heWJlX2JvdW5kLm1sLmludGVydmFsX2NvbXBhcmlzb25cIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIC0+IEJlbG93X2xvd2VyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSAtPiBJbl9yYW5nZVxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYWJvdmVfdXBwZXJfYm91bmRcIiB8IFwiQWJvdmVfdXBwZXJfYm91bmRcIikgLT4gQWJvdmVfdXBwZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYWJvdmVfdXBwZXJfYm91bmRcIiB8IFwiQWJvdmVfdXBwZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgIHwgc2V4cF9fMDI2XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbilcbjs7XG5cbmxldCBzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoZnVuY3Rpb25cbiAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkJlbG93X2xvd2VyX2JvdW5kXCJcbiAgICB8IEluX3JhbmdlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkluX3JhbmdlXCJcbiAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkFib3ZlX3VwcGVyX2JvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKGludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbWFyIDogaW50ZXJ2YWxfY29tcGFyaXNvbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkJlbG93X2xvd2VyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJJbl9yYW5nZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiQWJvdmVfdXBwZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmVfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZVxuICAgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50KVxuOztcblxubGV0IChoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiA6XG4gICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEluX3JhbmdlIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoX2ludGVydmFsX2NvbXBhcmlzb24gOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBJbmNsIChmIGluY2wpXG4gIHwgRXhjbCBleGNsIC0+IEV4Y2wgKGYgZXhjbClcbiAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG47O1xuXG5sZXQgaXNfbG93ZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBpbmNsIGEgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGV4Y2wgYSA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX3VwcGVyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgYSBpbmNsIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBhIGV4Y2wgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgbWF0Y2ggbG93ZXIgd2l0aFxuICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICB8IEluY2wgbG93ZXIgfCBFeGNsIGxvd2VyIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgfCBJbmNsIHVwcGVyIHwgRXhjbCB1cHBlciAtPiBjb21wYXJlIGxvd2VyIHVwcGVyID4gMClcbjs7XG5cbmxldCBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIGlmIGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmVcbiAgdGhlbiBmYWlsd2l0aCBcIk1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuOiBsb3dlciBib3VuZCA+IHVwcGVyIGJvdW5kXCJcbjs7XG5cbmxldCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZTtcbiAgaWYgbm90IChpc19sb3dlcl9ib3VuZCBsb3dlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQmVsb3dfbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBub3QgKGlzX3VwcGVyX2JvdW5kIHVwcGVyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBBYm92ZV91cHBlcl9ib3VuZFxuICBlbHNlIEluX3JhbmdlXG47O1xuXG5sZXQgaW50ZXJ2YWxfY29udGFpbnNfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIG1hdGNoIGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gdHJ1ZVxuICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYE9rIG9mICdhXG4gICAgfCBgRHVwbGljYXRlXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAxXyBiX18wMDJfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgIHwgYE9rIF9sZWZ0X18wMDNfLCBgT2sgX3JpZ2h0X18wMDRfIC0+IF9jbXBfX2EgX2xlZnRfXzAwM18gX3JpZ2h0X18wMDRfXG4gICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gMFxuICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDVfIGJfXzAwNl8gLT5cbiAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwNV8gYl9fMDA2X1xuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYV9fMDA1XywgYl9fMDA2XyB3aXRoXG4gICAgICAgIHwgYE9rIF9sZWZ0X18wMDdfLCBgT2sgX3JpZ2h0X18wMDhfIC0+IF9jbXBfX2EgX2xlZnRfXzAwN18gX3JpZ2h0X18wMDhfXG4gICAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiB0cnVlXG4gICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgeCB5KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biBfb2ZfYV9fMDA5XyAtPiBmdW5jdGlvblxuICAgICAgfCBgT2sgdl9fMDEwXyAtPiBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyBfb2ZfYV9fMDA5XyB2X18wMTBfIF1cbiAgICAgIHwgYER1cGxpY2F0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEdXBsaWNhdGVcIlxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9IGNvbXBhcmF0b3I6KCdrZXksICdjbXApIENvbXBhcmF0b3IudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICd6XG5lbmRcblxubW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnayAndi4gKCdrIC0+ICdrIC0+IGludCkgLT4gKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fayBfY21wX192IGFfXzAxMV8gYl9fMDEyXyAtPlxuICAgIGxldCB0X18wMTNfLCB0X18wMTRfID0gYV9fMDExXyBpblxuICAgIGxldCB0X18wMTVfLCB0X18wMTZfID0gYl9fMDEyXyBpblxuICAgIG1hdGNoIF9jbXBfX2sgdF9fMDEzXyB0X18wMTVfIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIHRfXzAxNF8gdF9fMDE2X1xuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdF9fMDE0XywgdF9fMDE2XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzAxN18sIGBMZWZ0IF9yaWdodF9fMDE4XyAtPiBfY21wX192IF9sZWZ0X18wMTdfIF9yaWdodF9fMDE4X1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDE5XywgYFJpZ2h0IF9yaWdodF9fMDIwXyAtPiBfY21wX192IF9sZWZ0X18wMTlfIF9yaWdodF9fMDIwX1xuICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMjFfLCBgVW5lcXVhbCBfcmlnaHRfXzAyMl8gLT5cbiAgICAgICAgICBsZXQgdF9fMDIzXywgdF9fMDI0XyA9IF9sZWZ0X18wMjFfIGluXG4gICAgICAgICAgbGV0IHRfXzAyNV8sIHRfXzAyNl8gPSBfcmlnaHRfXzAyMl8gaW5cbiAgICAgICAgICAobWF0Y2ggX2NtcF9fdiB0X18wMjNfIHRfXzAyNV8gd2l0aFxuICAgICAgICAgICB8IDAgLT4gX2NtcF9fdiB0X18wMjRfIHRfXzAyNl9cbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSB4IHkpXG4gICAgfCBuIC0+IG5cbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdrICd2LlxuICAgICgnayAtPiAnayAtPiBib29sKSAtPiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgICAgIGxldCB0X18wMjlfLCB0X18wMzBfID0gYV9fMDI3XyBpblxuICAgICAgbGV0IHRfXzAzMV8sIHRfXzAzMl8gPSBiX18wMjhfIGluXG4gICAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgIChfY21wX19rIHRfXzAyOV8gdF9fMDMxXylcbiAgICAgICAgKGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIHRfXzAzMF8gdF9fMDMyX1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggdF9fMDMwXywgdF9fMDMyXyB3aXRoXG4gICAgICAgICAgIHwgYExlZnQgX2xlZnRfXzAzM18sIGBMZWZ0IF9yaWdodF9fMDM0XyAtPiBfY21wX192IF9sZWZ0X18wMzNfIF9yaWdodF9fMDM0X1xuICAgICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDM1XywgYFJpZ2h0IF9yaWdodF9fMDM2XyAtPiBfY21wX192IF9sZWZ0X18wMzVfIF9yaWdodF9fMDM2X1xuICAgICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMzdfLCBgVW5lcXVhbCBfcmlnaHRfXzAzOF8gLT5cbiAgICAgICAgICAgICBsZXQgdF9fMDM5XywgdF9fMDQwXyA9IF9sZWZ0X18wMzdfIGluXG4gICAgICAgICAgICAgbGV0IHRfXzA0MV8sIHRfXzA0Ml8gPSBfcmlnaHRfXzAzOF8gaW5cbiAgICAgICAgICAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApIChfY21wX192IHRfXzAzOV8gdF9fMDQxXykgKF9jbXBfX3YgdF9fMDQwXyB0X18wNDJfKVxuICAgICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIHggeSkpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2sgJ3YuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnaylcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDU3XyA9IFwibWFwX2ludGYubWwuU3ltbWV0cmljX2RpZmZfZWxlbWVudC50XCIgaW5cbiAgICBmdW4gX29mX2tfXzA0M18gX29mX3ZfXzA0NF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDY3XzsgYXJnMV9fMDY4XyBdIC0+XG4gICAgICAgIGxldCByZXMwX18wNjlfID0gX29mX2tfXzA0M18gYXJnMF9fMDY3X1xuICAgICAgICBhbmQgcmVzMV9fMDcwXyA9XG4gICAgICAgICAgbGV0IHNleHBfXzA2Nl8gPSBhcmcxX18wNjhfIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBtYXRjaCBzZXhwX18wNjZfIHdpdGhcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gYXMgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyA6OiBzZXhwX2FyZ3NfXzA1MF8pIGFzXG4gICAgICAgICAgICAgIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgYXMgX3RhZ19fMDYzXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjRfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2NV8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjRfIGluXG4gICAgICAgICAgICAgICAgICAgIGBMZWZ0IHJlczBfXzA2NV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYzX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgYXMgX3RhZ19fMDYwXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjFfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2Ml8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjFfIGluXG4gICAgICAgICAgICAgICAgICAgIGBSaWdodCByZXMwX18wNjJfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2MF9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgYXMgX3RhZ19fMDUxXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNThfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1OV8gPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFyZzBfXzA1OF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDUyXzsgYXJnMV9fMDUzXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU0XyA9IF9vZl92X18wNDRfIGFyZzBfXzA1Ml9cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXMxX18wNTVfID0gX29mX3ZfXzA0NF8gYXJnMV9fMDUzXyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzMF9fMDU0XywgcmVzMV9fMDU1X1xuICAgICAgICAgICAgICAgICAgICAgIHwgc2V4cF9fMDU2XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXhwX18wNTZfXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGBVbmVxdWFsIHJlczBfXzA1OV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDUxX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICBzZXhwX18wNjZfXG4gICAgICAgIGluXG4gICAgICAgIHJlczBfXzA2OV8sIHJlczFfXzA3MF9cbiAgICAgIHwgc2V4cF9fMDcxXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGVycm9yX3NvdXJjZV9fMDU3XyAyIHNleHBfXzA3MV9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2tfXzA3Ml8gX29mX3ZfXzA3M18gKGFyZzBfXzA4MV8sIGFyZzFfXzA4Ml8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDgzXyA9IF9vZl9rX18wNzJfIGFyZzBfXzA4MV9cbiAgICAgIGFuZCByZXMxX18wODRfID1cbiAgICAgICAgbWF0Y2ggYXJnMV9fMDgyXyB3aXRoXG4gICAgICAgIHwgYExlZnQgdl9fMDc0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX3ZfXzA3M18gdl9fMDc0XyBdXG4gICAgICAgIHwgYFJpZ2h0IHZfXzA3NV8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2Zfdl9fMDczXyB2X18wNzVfIF1cbiAgICAgICAgfCBgVW5lcXVhbCB2X18wNzZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxcIlxuICAgICAgICAgICAgOyAobGV0IGFyZzBfXzA3N18sIGFyZzFfXzA3OF8gPSB2X18wNzZfIGluXG4gICAgICAgICAgICAgICBsZXQgcmVzMF9fMDc5XyA9IF9vZl92X18wNzNfIGFyZzBfXzA3N19cbiAgICAgICAgICAgICAgIGFuZCByZXMxX18wODBfID0gX29mX3ZfXzA3M18gYXJnMV9fMDc4XyBpblxuICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDc5XzsgcmVzMV9fMDgwXyBdKVxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA4M187IHJlczFfXzA4NF8gXVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2tfc2V4cF9ncmFtbWFyIF8ndl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgTGlzdFxuICAgICAgICAgICAgKENvbnNcbiAgICAgICAgICAgICAgICggXydrX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAsIENvbnNcbiAgICAgICAgICAgICAgICAgICAoIFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlVuZXF1YWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAsIEVtcHR5ICkgKSlcbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICB8IGBSaWdodCBvZiAncmlnaHRcbiAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGludClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA4NV8gYl9fMDg2XyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzA4NV8gYl9fMDg2X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDg1XywgYl9fMDg2XyB3aXRoXG4gICAgICB8IGBMZWZ0IF9sZWZ0X18wODdfLCBgTGVmdCBfcmlnaHRfXzA4OF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDg3XyBfcmlnaHRfXzA4OF9cbiAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wODlfLCBgUmlnaHQgX3JpZ2h0X18wOTBfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18wODlfIF9yaWdodF9fMDkwX1xuICAgICAgfCBgQm90aCBfbGVmdF9fMDkxXywgYEJvdGggX3JpZ2h0X18wOTJfIC0+XG4gICAgICAgIGxldCB0X18wOTNfLCB0X18wOTRfID0gX2xlZnRfXzA5MV8gaW5cbiAgICAgICAgbGV0IHRfXzA5NV8sIHRfXzA5Nl8gPSBfcmlnaHRfXzA5Ml8gaW5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2xlZnQgdF9fMDkzXyB0X18wOTVfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19yaWdodCB0X18wOTRfIHRfXzA5Nl9cbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA5N18gYl9fMDk4XyAtPlxuICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDk3XyBiX18wOThfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wOTdfLCBiX18wOThfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDk5XywgYExlZnQgX3JpZ2h0X18xMDBfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA5OV8gX3JpZ2h0X18xMDBfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18xMDFfLCBgUmlnaHQgX3JpZ2h0X18xMDJfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18xMDFfIF9yaWdodF9fMTAyX1xuICAgICAgICB8IGBCb3RoIF9sZWZ0X18xMDNfLCBgQm90aCBfcmlnaHRfXzEwNF8gLT5cbiAgICAgICAgICBsZXQgdF9fMTA1XywgdF9fMTA2XyA9IF9sZWZ0X18xMDNfIGluXG4gICAgICAgICAgbGV0IHRfXzEwN18sIHRfXzEwOF8gPSBfcmlnaHRfXzEwNF8gaW5cbiAgICAgICAgICBQcHhfY29tcGFyZV9saWIuKCAmJiApIChfY21wX19sZWZ0IHRfXzEwNV8gdF9fMTA3XykgKF9jbXBfX3JpZ2h0IHRfXzEwNl8gdF9fMTA4XylcbiAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9sZWZ0X18xMDlfIF9vZl9yaWdodF9fMTEwXyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCB2X18xMTFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX2xlZnRfXzEwOV8gdl9fMTExXyBdXG4gICAgICB8IGBSaWdodCB2X18xMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl9yaWdodF9fMTEwXyB2X18xMTJfIF1cbiAgICAgIHwgYEJvdGggdl9fMTEzXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIlxuICAgICAgICAgIDsgKGxldCBhcmcwX18xMTRfLCBhcmcxX18xMTVfID0gdl9fMTEzXyBpblxuICAgICAgICAgICAgIGxldCByZXMwX18xMTZfID0gX29mX2xlZnRfXzEwOV8gYXJnMF9fMTE0X1xuICAgICAgICAgICAgIGFuZCByZXMxX18xMTdfID0gX29mX3JpZ2h0X18xMTBfIGFyZzFfXzExNV8gaW5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18xMTZfOyByZXMxX18xMTdfIF0pXG4gICAgICAgICAgXVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcCAqKVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnRpbnVlXG4gICAgfCBTdG9wXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIENvbnRpbnVlOyBTdG9wIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ29udGludWUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29udGludWVcIlxuICAgICAgfCBTdG9wIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN0b3BcIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkICopXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRmluaXNoZWRcbiAgICB8IFVuZmluaXNoZWRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgRmluaXNoZWQ7IFVuZmluaXNoZWQgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBGaW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJGaW5pc2hlZFwiXG4gICAgICB8IFVuZmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5maW5pc2hlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnY21wIGNtcFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcblxuICB2YWwgaW52YXJpYW50cyA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gIHZhbCBhZGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBhZGRfZXhuXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgc2V0XG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgYWRkX211bHRpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHJlbW92ZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IGxpc3QpIG9wdGlvbnNcblxuICB2YWwgY2hhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbikgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgdXBkYXRlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaW5kIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBvcHRpb24pIG9wdGlvbnNcbiAgdmFsIGZpbmRfZXhuIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndikgb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBtZW0gOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgaXRlcl9rZXlzIDogKCdrLCBfLCBfKSB0IC0+IGY6KCdrIGtleSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCd2IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICB2YWwgbWFwaSA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICB2YWwgZm9sZCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAoJ2EsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBpbml0OidhXG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2EgLT4gJ2EpXG4gICAgICAtPiAnYSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX2tleXNcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOignayBrZXkgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXIgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbikgLT4gKCdrLCAndjIsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOigndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0XG4gICAgOiAoJ2ssICdjbXAsICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQpIG9wdGlvbnNcblxuICB2YWwgZXF1YWxcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrIGtleSAqICd2KSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pXG4gICAgICAtPiAoJ2ssICd2MywgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tYmluZTooa2V5OidrIGtleSAtPiAndiAtPiAndiAtPiAndilcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiBpbml0OidhXG4gICAgICAtPiBmOignYSAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhKVxuICAgICAgLT4gJ2EgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIG1heF9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gJ2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrIGtleSAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IG1pbjonayBrZXlcbiAgICAgIC0+IG1heDonayBrZXlcbiAgICAgIC0+IGluaXQ6J2FcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAnYSlcbiAgICAgIC0+ICdhIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCByYW5nZV90b19hbGlzdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gbWluOidrIGtleSAtPiBtYXg6J2sga2V5IC0+ICgnayBrZXkgKiAndikgbGlzdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBudGggOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICdrIGtleSAqICd2XG4gIHZhbCByYW5rIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGludCBvcHRpb24pIG9wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnayBrZXksICd2LCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBrZXlcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IF8gdCAtPiBib29sXG4gIHZhbCBpc19lbXB0eSA6IF8gdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSB0IE9yX2R1cGxpY2F0ZS50XG4gIHZhbCBhZGRfZXhuIDogJ2EgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgdFxuICB2YWwgc2V0IDogJ2EgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgdFxuICB2YWwgYWRkX211bHRpIDogJ2EgbGlzdCB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSBsaXN0IHRcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICdhIGxpc3QgdCAtPiBrZXkgLT4gJ2EgbGlzdCB0XG4gIHZhbCBmaW5kX211bHRpIDogJ2EgbGlzdCB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCBjaGFuZ2UgOiAnYSB0IC0+IGtleSAtPiBmOignYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0XG4gIHZhbCB1cGRhdGUgOiAnYSB0IC0+IGtleSAtPiBmOignYSBvcHRpb24gLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+ICdhIHRcbiAgdmFsIG1lbSA6IF8gdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogXyB0IC0+IGY6KGtleSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjIgOiAnYSB0IC0+ICdiIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOignYSwgJ2IpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBtYXBpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYWNjIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdiIHRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOignYSwgJ2IpIE1lcmdlX2VsZW1lbnQudCAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICdhIHQgLT4gZjooa2V5IC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgZmlsdGVyX21hcGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIHBhcnRpdGlvbl9tYXBpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gKCdiLCAnYykgRWl0aGVyLnQpIC0+ICdiIHQgKiAnYyB0XG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogJ2EgdCAtPiBmOignYSAtPiAoJ2IsICdjKSBFaXRoZXIudCkgLT4gJ2IgdCAqICdjIHRcbiAgdmFsIHBhcnRpdGlvbmlfdGYgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAnYSBPcl9lcnJvci50IHQgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBrZXlzIDogXyB0IC0+IGtleSBsaXN0XG4gIHZhbCBkYXRhIDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hbGlzdCA6ID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgdmFsIG1lcmdlIDogJ2EgdCAtPiAnYiB0IC0+IGY6KGtleTprZXkgLT4gKCdhLCAnYikgTWVyZ2VfZWxlbWVudC50IC0+ICdjIG9wdGlvbikgLT4gJ2MgdFxuICB2YWwgbWVyZ2Vfc2tld2VkIDogJ3YgdCAtPiAndiB0IC0+IGNvbWJpbmU6KGtleTprZXkgLT4gJ3YgLT4gJ3YgLT4gJ3YpIC0+ICd2IHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gKGtleSwgJ2EpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+IChrZXksICdhKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogJ2EgdCAtPiBrZXkgKiAnYVxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogJ2EgdCAtPiBrZXkgKiAnYVxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIHNwbGl0IDogJ2EgdCAtPiBrZXkgLT4gJ2EgdCAqIChrZXkgKiAnYSkgb3B0aW9uICogJ2EgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OidhIHRcbiAgICAtPiB1cHBlcl9wYXJ0OidhIHRcbiAgICAtPiBbIGBPayBvZiAnYSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICdhIHRcbiAgICAtPiBsb3dlcl9ib3VuZDprZXkgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOmtleSBNYXliZV9ib3VuZC50XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICdhIHRcbiAgICAtPiBtaW46a2V5XG4gICAgLT4gbWF4OmtleVxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gJ2JcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAnYSB0IC0+IG1pbjprZXkgLT4gbWF4OmtleSAtPiAoa2V5ICogJ2EpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAnYSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+IGtleVxuICAgIC0+IChrZXkgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICdhIHQgLT4gaW50IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogJ2EgdCAtPiBpbnQgLT4ga2V5ICogJ2FcbiAgdmFsIHJhbmsgOiBfIHQgLT4ga2V5IC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAnYSB0IC0+ICdhIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86a2V5XG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzprZXlcbiAgICAtPiAnYSB0XG4gICAgLT4gKGtleSAqICdhKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAnYSB0XG4gICAgLT4gY29tcGFyZTooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoa2V5ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICdhIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoa2V5ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGNvbXBhcmU6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgYWRkIDogKCdhLCAnYikgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiKSB0IE9yX2R1cGxpY2F0ZS50XG4gIHZhbCBhZGRfZXhuIDogKCdhLCAnYikgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiKSB0XG4gIHZhbCBzZXQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGFkZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiIGxpc3QpIHRcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiAnYSAtPiAoJ2EsICdiIGxpc3QpIHRcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2EgLT4gJ2IgbGlzdFxuICB2YWwgY2hhbmdlIDogKCdhLCAnYikgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gKCdhLCAnYikgdFxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gJ2JcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gKCdhLCAnYikgdFxuICB2YWwgbWVtIDogKCdhLCAnYikgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYikgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2MpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBmb2xkIDogKCdhLCAnYikgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAoJ2EsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgJ2IpIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYykgdFxuICAgIC0+IGluaXQ6J2RcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2QgLT4gJ2QpXG4gICAgLT4gJ2RcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KSAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2EsICdiIE9yX2Vycm9yLnQpIHQgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBib29sXG4gIHZhbCBrZXlzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ2IpIHQgLT4gJ2IgbGlzdFxuICB2YWwgdG9fYWxpc3QgOiA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdIC0+ICgnYSwgJ2IpIHQgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYykgdFxuICAgIC0+IGY6KGtleTonYSAtPiAoJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Qgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2QpIHRcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndikgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICgnYSwgJ2IpIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhICogJ2JcbiAgdmFsIG1heF9lbHQgOiAoJ2EsICdiKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSAqICdiXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgc3BsaXQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICgnYSwgJ2IpIHQgKiAoJ2EgKiAnYikgb3B0aW9uICogKCdhLCAnYikgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignYSwgJ2IpIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignYSwgJ2IpIHRcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdhLCAnYikgdCAtPiBtaW46J2EgLT4gbWF4OidhIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAnYVxuICAgIC0+ICgnYSAqICdiKSBvcHRpb25cblxuICB2YWwgbnRoIDogKCdhLCAnYikgdCAtPiBpbnQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICdhICogJ2JcbiAgdmFsIHJhbmsgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2KSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuICB2YWwgYWRkIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50XG4gIHZhbCBhZGRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBzZXQgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGFkZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QsICdjbXApIHQgLT4gJ2EgLT4gJ2IgbGlzdFxuICB2YWwgY2hhbmdlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmluZCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2JcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgbWVtIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8sICdjbXApIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIG1hcGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBmb2xkIDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAoJ2EsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2RcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2QgLT4gJ2QpXG4gICAgLT4gJ2RcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdhLCAnYiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gYm9vbFxuICB2YWwga2V5cyA6ICgnYSwgXywgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICdiLCBfKSB0IC0+ICdiIGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdhLCAnYiwgXykgdFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gKCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIG9wdGlvbilcbiAgICAtPiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBtYXhfZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgZm9yX2FsbCA6IChfLCAnYiwgXykgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IsIF8pIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiLCBfKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiLCBfKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKF8sICdiLCBfKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdhLCAnYiwgXykgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdhLCAnYiwgXykgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnYSwgJ2IsIF8pIHQgLT4gbWluOidhIC0+IG1heDonYSAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnYSwgJ2IsIF8pIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW50IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2EsICdiLCBfKSB0IC0+IGludCAtPiAnYSAqICdiXG4gIHZhbCByYW5rIDogKCdhLCBfLCBfKSB0IC0+ICdhIC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnYiwgXykgdFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBpc19lbXB0eSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBzZXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIHJlbW92ZV9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCBmaW5kX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gJ2IgbGlzdFxuXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHVwZGF0ZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiBmOignYiBvcHRpb24gLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaW5kIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2JcblxuICB2YWwgcmVtb3ZlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgbWVtIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXywgJ2NtcCkgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIG1hcGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBmb2xkIDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAoJ2EsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBpbml0OidkXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIC0+ICdkKVxuICAgIC0+ICdkXG5cbiAgdmFsIGZpbHRlcl9rZXlzXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgY29tYmluZV9lcnJvcnNcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBPcl9lcnJvci50LCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYiAtPiAnYiAtPiBpbnQpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWxcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGtleXMgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAnYiwgXykgdCAtPiAnYiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnYSwgJ2IsIF8pIHRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiAoJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Qgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIG1heF9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBmb3JfYWxsIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhICogJ2IpIG9wdGlvbiAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGxvd2VyX3BhcnQ6KCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCByYW5nZV90b19hbGlzdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAnYVxuICAgIC0+ICgnYSAqICdiKSBvcHRpb25cblxuICB2YWwgbnRoIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50IC0+ICdhICogJ2JcbiAgdmFsIHJhbmsgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMxIChNIDogQWNjZXNzb3JzMSkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5rZXlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczIgKE0gOiBBY2Nlc3NvcnMyKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMyAoTSA6IEFjY2Vzc29yczMpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnaywgJ3YsICdjbXApIHRcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0cmVlXG4gIHR5cGUgJ2sga2V5XG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGVtcHR5IDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnaywgJ2NtcCwgJ2sga2V5IC0+ICd2IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdFxuICAgICAgLT4gZjooJ2sxIGtleSAtPiAnazIga2V5KVxuICAgICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIGtleSBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdCAtPiBmOignazEga2V5IC0+ICdrMiBrZXkpIC0+ICgnazIsICd2LCAnY21wMikgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgYXJyYXkgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoJ2ssICdjbXAsIGxlbjppbnQgLT4gZjooaW50IC0+ICdrIGtleSAqICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBsaXN0IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9hbGlzdF9tdWx0aSA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgbGlzdCAtPiBpbml0Oid2MiAtPiBmOigndjIgLT4gJ3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gZjooJ3YgLT4gJ3YgLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXVxuICAgICAgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBTZXF1ZW5jZS50XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooJ3YyIC0+ICd2MSAtPiAndjIpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IGY6KCd2IC0+ICd2IC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOihmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdrLCAnY21wLCAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBrZXlcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiBfIHRcbiAgdmFsIHNpbmdsZXRvbiA6IGtleSAtPiAnYSAtPiAnYSB0XG4gIHZhbCBtYXBfa2V5cyA6ICd2IHQgLT4gZjooa2V5IC0+IGtleSkgLT4gWyBgT2sgb2YgJ3YgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG4gIHZhbCBtYXBfa2V5c19leG4gOiAndiB0IC0+IGY6KGtleSAtPiBrZXkpIC0+ICd2IHRcbiAgdmFsIG9mX2FsaXN0IDogKGtleSAqICdhKSBsaXN0IC0+IFsgYE9rIG9mICdhIHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3IgOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfYWxpc3RfbXVsdGkgOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgbGlzdCB0XG4gIHZhbCBvZl9hbGlzdF9mb2xkIDogKGtleSAqICdhKSBsaXN0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZSA6IChrZXkgKiAnYSkgbGlzdCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKGtleSAqICdhKSBhcnJheSAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoa2V5ICogJ2EpIGFycmF5IC0+ICdhIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4ga2V5ICogJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAnYSB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIGxpc3QgdFxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZCA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2UgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHRcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICBpdGVyaTooZjooa2V5OmtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgJ3YgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG5cbiAgdmFsIG9mX2l0ZXJpX2V4biA6IGl0ZXJpOihmOihrZXk6a2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdCkgLT4gJ3YgdFxuICB2YWwgb2ZfdHJlZSA6ICdhIHRyZWUgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogKF8sIF8pIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdiIC0+ICgnYSwgJ2IpIHRcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2sxLCAndikgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gIHZhbCBtYXBfa2V5c19leG4gOiAoJ2sxLCAndikgdCAtPiBmOignazEgLT4gJ2syKSAtPiAoJ2syLCAndikgdFxuICB2YWwgb2ZfYWxpc3QgOiAoJ2EgKiAnYikgbGlzdCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3IgOiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2FsaXN0X211bHRpIDogKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0XG4gIHZhbCBvZl9hbGlzdF9mb2xkIDogKCdhICogJ2IpIGxpc3QgLT4gaW5pdDonYyAtPiBmOignYyAtPiAnYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlIDogKCdhICogJ2IpIGxpc3QgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSAqICdiKSBhcnJheSAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoJ2EgKiAnYikgYXJyYXkgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiAnYSAqICdiKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvciA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYikgdFxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGkgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiIGxpc3QpIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpIC0+ICgnYSwgJ2IpIHRcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9pdGVyaV9leG4gOiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdCkgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2IpIHRyZWUgLT4gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBlbXB0eSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCBfLCAnY21wKSB0XG4gIHZhbCBzaW5nbGV0b24gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIC0+ICdiIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSB0XG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhICogJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRyZWVcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5rZXlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMxXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBrZXkgOj0ga2V5XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMlxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMyXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMlxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdFxuICAgIDogIChtb2R1bGUgQ29tcGFyZV9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBpbnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKEhhc2guc3RhdGUgLT4gJ3YgLT4gSGFzaC5zdGF0ZSlcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXAgPSBzaWdcbiAgKCoqIFtNYXBdIGlzIGEgZnVuY3Rpb25hbCBkYXRhIHN0cnVjdHVyZSAoYmFsYW5jZWQgYmluYXJ5IHRyZWUpIGltcGxlbWVudGluZyBmaW5pdGUgbWFwc1xuICAgICAgb3ZlciBhIHRvdGFsbHktb3JkZXJlZCBkb21haW4sIGNhbGxlZCBhIFwia2V5XCIuICopXG5cbiAgdHlwZSAoJ2tleSwgKyd2YWx1ZSwgJ2NtcCkgdFxuXG4gIG1vZHVsZSBPcl9kdXBsaWNhdGUgPSBPcl9kdXBsaWNhdGVcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbiAgbW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBVbmZpbmlzaGVkXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2VudW1lcmF0ZV9saWIuRW51bWVyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBNYXBzIFtDb250aW51ZV0gdG8gW0ZpbmlzaGVkXSBhbmQgW1N0b3BdIHRvIFtVbmZpbmlzaGVkXS4gKilcbiAgICB2YWwgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0XG5cbiAgICAoKiogTWFwcyBbRmluaXNoZWRdIHRvIFtDb250aW51ZV0gYW5kIFtVbmZpbmlzaGVkXSB0byBbU3RvcF0uICopXG4gICAgdmFsIHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudFxuICBlbmRcblxuICBtb2R1bGUgTWVyZ2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgdmFsIGNvbXBhcmVcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGJvb2xcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgbGVmdCA6ICgnbGVmdCwgXykgdCAtPiAnbGVmdCBvcHRpb25cbiAgICB2YWwgcmlnaHQgOiAoXywgJ3JpZ2h0KSB0IC0+ICdyaWdodCBvcHRpb25cbiAgICB2YWwgbGVmdF92YWx1ZSA6ICgnbGVmdCwgXykgdCAtPiBkZWZhdWx0OidsZWZ0IC0+ICdsZWZ0XG4gICAgdmFsIHJpZ2h0X3ZhbHVlIDogKF8sICdyaWdodCkgdCAtPiBkZWZhdWx0OidyaWdodCAtPiAncmlnaHRcblxuICAgIHZhbCB2YWx1ZXNcbiAgICAgIDogICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBsZWZ0X2RlZmF1bHQ6J2xlZnRcbiAgICAgIC0+IHJpZ2h0X2RlZmF1bHQ6J3JpZ2h0XG4gICAgICAtPiAnbGVmdCAqICdyaWdodFxuICBlbmRcblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0IGlmIHRoZSBpbnZhcmlhbnRzIG9mIHRoZSBpbnRlcm5hbCBBVkwgc2VhcmNoIHRyZWUgaG9sZC4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Yy5cbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogVGhlIGVtcHR5IG1hcC4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQSBtYXAgd2l0aCBvbmUgKGtleSwgZGF0YSkgcGFpci4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LiAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiBUaGUgYWNjdW11bGF0b3IgaXMgcGVyLWtleS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgIyBsZXQgbWFwID0gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImFcIiwgMTsgXCJhXCIsIDEwOyBcImJcIiwgMjsgXCJiXCIsIDIwOyBcImJcIiwgMjAwIF1cbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdDpJbnQuU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgfmY6U2V0LmFkZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfcyBbJXNleHAgKG1hcCA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTs7XG4gICAgICAgICgoYSAoMSAxMCkpIChiICgyIDIwIDIwMCkpKVxuICAgICAgICAtIDogdW5pdCA9ICgpXG4gICAgICBdfVxuICAqKVxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCByZWR1Y2luZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2l0ZXJpIH5pdGVyaV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF0sIGV4Y2VwdCB0aGF0IGluc3RlYWQgb2YgdGFraW5nIGEgY29uY3JldGVcbiAgICAgIGRhdGEgc3RydWN0dXJlLCBpdCB0YWtlcyBhbiBpdGVyYXRpb24gZnVuY3Rpb24uICBGb3IgaW5zdGFuY2UsIHRvIGNvbnZlcnQgYSBzdHJpbmcgdGFibGVcbiAgICAgIGludG8gYSBtYXA6IFtvZl9pdGVyaSAobW9kdWxlIFN0cmluZykgfmY6KEhhc2h0YmwuaXRlcmkgdGFibGUpXS4gIEl0IGlzIGZhc3RlciB0aGFuXG4gICAgICBhZGRpbmcgdGhlIGVsZW1lbnRzIG9uZSBieSBvbmUuICopXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIExpa2UgW29mX2l0ZXJpXSBleGNlcHQgdGhhdCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYSBzb3J0ZWQgYXJyYXkgb2Yga2V5LWRhdGEgcGFpcnMuIFRoZSBpbnB1dCBhcnJheSBtdXN0IGJlIHNvcnRlZFxuICAgICAgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlciksIGFzIGdpdmVuIGJ5IHRoZSByZWxldmFudCBjb21wYXJhdG9yLCBhbmRcbiAgICAgIG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlIGtleXMuIElmIGVpdGhlciBvZiB0aGVzZSBjb25kaXRpb25zIGRvZXMgbm90IGhvbGQsXG4gICAgICBhbiBlcnJvciBpcyByZXR1cm5lZC4gICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2Zfc29ydGVkX2FycmF5XSBleGNlcHQgdGhhdCBpdCByZXR1cm5zIGEgbWFwIHdpdGggYnJva2VuIGludmFyaWFudHMgd2hlbiBhblxuICAgICAgW0Vycm9yXSB3b3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSAqICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5IGMgKFNlcXVlbmNlLnRvX2FycmF5XG4gICAgICBzZXEpXSwgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgYXJyYXkuXG5cbiAgICAgIFRoZSBzZXF1ZW5jZSB3aWxsIGJlIGZvbGRlZCBvdmVyIG9uY2UsIGFuZCB0aGUgYWRkaXRpb25hbCB0aW1lIGNvbXBsZXhpdHkgaXMge2UgTyhuKX0uXG4gICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuXG4gICAgICBJZiB5b3VyIHNlcXVlbmNlIGlzIGluY3JlYXNpbmcsIHVzZSBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZV0uXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9vcl9lcnJvciBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9vcl9lcnJvciBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZXhuIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHBvc3NpYmx5IHJlcGVhdGVkIGtleXMuIFRoZSB2YWx1ZXMgaW5cbiAgICAgIHRoZSBtYXAgZm9yIGEgZ2l2ZW4ga2V5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGRpZCBpbiB0aGUgYXNzb2NpYXRpb25cbiAgICAgIGxpc3QuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9tdWx0aSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgZm9sZGluZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9mb2xkIGMgc2VxIH5pbml0IH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2ZvbGQgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpIH5pbml0IH5mXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX3JlZHVjZSBjIHNlcSB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9yZWR1Y2UgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpIH5mXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogVGVzdHMgd2hldGhlciBhIG1hcCBpcyBlbXB0eS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbGVuZ3RoIG1hcF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIFttYXBdLiAgTygxKSwgYnV0IFtUcmVlLmxlbmd0aF0gaXNcbiAgICAgIE8obikuICopXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCB0aGUgc3BlY2lmaWVkIG5ldyBiaW5kaW5nOyBpZiB0aGUga2V5IHdhcyBhbHJlYWR5IGJvdW5kLCBpdHNcbiAgICAgIHByZXZpb3VzIGJpbmRpbmcgZGlzYXBwZWFycy4gKilcbiAgdmFsIHNldCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbYWRkIHQgfmtleSB+ZGF0YV0gYWRkcyBhIG5ldyBlbnRyeSB0byBbdF0gbWFwcGluZyBba2V5XSB0byBbZGF0YV0gYW5kIHJldHVybnMgW2BPa11cbiAgICAgIHdpdGggdGhlIG5ldyBtYXAsIG9yIGlmIFtrZXldIGlzIGFscmVhZHkgcHJlc2VudCBpbiBbdF0sIHJldHVybnMgW2BEdXBsaWNhdGVdLiAqKVxuICB2YWwgYWRkIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50XG5cbiAgdmFsIGFkZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogSWYgW2tleV0gaXMgbm90IHByZXNlbnQgdGhlbiBhZGQgYSBzaW5nbGV0b24gbGlzdCwgb3RoZXJ3aXNlLCBjb25zIGRhdGEgb250byB0aGVcbiAgICAgIGhlYWQgb2YgdGhlIGV4aXN0aW5nIGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIElmIHRoZSBrZXkgaXMgcHJlc2VudCwgdGhlbiByZW1vdmUgaXRzIGhlYWQgZWxlbWVudDsgaWYgdGhlIHJlc3VsdCBpcyBlbXB0eSwgcmVtb3ZlXG4gICAgICB0aGUga2V5LiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCBvciB0aGUgZW1wdHkgbGlzdCBpZiB0aGVyZSBpcyBub25lLiAqKVxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAndiBsaXN0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIHJldHVybnMgYSBuZXcgbWFwIFttXSB0aGF0IGlzIHRoZSBzYW1lIGFzIFt0XSBvbiBhbGwga2V5cyBleGNlcHRcbiAgICAgIGZvciBba2V5XSwgYW5kIHdob3NlIHZhbHVlIGZvciBba2V5XSBpcyBkZWZpbmVkIGJ5IFtmXSwgaS5lLiwgW2ZpbmQgbSBrZXkgPSBmIChmaW5kXG4gICAgICB0IGtleSldLiAqKVxuICB2YWwgY2hhbmdlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cblxuICAoKiogUmV0dXJucyBbU29tZSB2YWx1ZV0gYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgW05vbmVdIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3Ygb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIHJhaXNpbmcgW0NhbWwuTm90X2ZvdW5kXSBvciBbTm90X2ZvdW5kX3NdXG4gICAgICBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndlxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGFueSBiaW5kaW5nIGZvciB0aGUga2V5IGluIHF1ZXN0aW9uIHJlbW92ZWQuICopXG4gIHZhbCByZW1vdmUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW21lbSBtYXAga2V5XSB0ZXN0cyB3aGV0aGVyIFttYXBdIGNvbnRhaW5zIGEgYmluZGluZyBmb3IgW2tleV0uICopXG4gIHZhbCBtZW0gOiAoJ2ssIF8sICdjbXApIHQgLT4gJ2sgLT4gYm9vbFxuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooJ2sgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigndiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyB1bnRpbCB0aGUgZmlyc3QgdGltZSBbZl0gcmV0dXJucyBbU3RvcF0uIElmIFtmXSByZXR1cm5zIFtTdG9wXSwgdGhlIGZpbmFsXG4gICAgICByZXN1bHQgaXMgW1VuZmluaXNoZWRdLiBPdGhlcndpc2UsIHRoZSBmaW5hbCByZXN1bHQgaXMgW0ZpbmlzaGVkXS4gKilcbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICAoKiogSXRlcmF0ZXMgdHdvIG1hcHMgc2lkZSBieSBzaWRlLiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIE8oTSArIE4pLiAgSWYgdHdvXG4gICAgICBpbnB1dHMgYXJlIFtbKDAsIGEpOyAoMSwgYSldXSBhbmQgW1soMSwgYik7ICgyLCBiKV1dLCBbZl0gd2lsbCBiZSBjYWxsZWQgd2l0aCBbWygwLFxuICAgICAgYExlZnQgYSk7ICgxLCBgQm90aCAoYSwgYikpOyAoMiwgYFJpZ2h0IGIpXV0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBib3VuZCB2YWx1ZXMgcmVwbGFjZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kIHZhbHVlcy4qKVxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBDb252ZXJ0IG1hcCB3aXRoIGtleXMgb2YgdHlwZSBbJ2syXSB0byBhIG1hcCB3aXRoIGtleXMgb2YgdHlwZSBbJ2syXSB1c2luZyBbZl0uICopXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gICgqKiBMaWtlIFttYXBfa2V5c10sIGJ1dCByYWlzZXMgb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0sIHVudGlsIHRoZSBmaXJzdFxuICAgICAgdGltZSB0aGF0IFtmXSByZXR1cm5zIFtTdG9wIF9dLiBJZiBbZl0gcmV0dXJucyBbU3RvcCBmaW5hbF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJuc1xuICAgICAgaW1tZWRpYXRlbHkgd2l0aCB0aGUgdmFsdWUgW2ZpbmFsXS4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIGFuZCB0aGUgZmluYWxcbiAgICAgIGNhbGwgdG8gW2ZdIHJldHVybnMgW0NvbnRpbnVlIGxhc3RdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgW2ZpbmlzaCBsYXN0XS4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjYyAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGRlY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gICgqKiBGb2xkcyBvdmVyIHR3byBtYXBzIHNpZGUgYnkgc2lkZSwgbGlrZSBbaXRlcjJdLiAqKVxuICB2YWwgZm9sZDJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICdhIC0+ICdhKVxuICAgIC0+ICdhXG5cbiAgKCoqIFtmaWx0ZXJdLCBbZmlsdGVyaV0sIFtmaWx0ZXJfa2V5c10sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJfbWFwaV0gcnVuIGluIE8obiAqIGxnXG4gICAgICBuKSB0aW1lOyB0aGV5IHNpbXBseSBhY2N1bXVsYXRlIGVhY2gga2V5ICYgZGF0YSBwYWlyIHJldGFpbmVkIGJ5IFtmXSBpbnRvIGEgbmV3IG1hcFxuICAgICAgdXNpbmcgW2FkZF0uICopXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ2sgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBib3VuZCB2YWx1ZXMgZmlsdGVyZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kIHZhbHVlcy4gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbikgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhc1xuICAgICAgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwaSB0IH5mXSByZXR1cm5zIHR3byBuZXcgW3Rdcywgd2l0aCBlYWNoIGtleSBpbiBbdF0gYXBwZWFyaW5nIGluXG4gICAgICBleGFjdGx5IG9uZSBvZiB0aGUgcmVzdWx0aW5nIG1hcHMgZGVwZW5kaW5nIG9uIGl0cyBtYXBwaW5nIGluIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqXG4gICAgIHtbXG4gICAgICAgcGFydGl0aW9uaV90ZiB0IH5mXG4gICAgICAgPVxuICAgICAgIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBpZiBmIH5rZXkgfmRhdGFcbiAgICAgICAgIHRoZW4gRmlyc3QgZGF0YVxuICAgICAgICAgZWxzZSBTZWNvbmQgZGF0YSlcbiAgICAgXX0gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFByb2R1Y2VzIFtPa10gb2YgYSBtYXAgaW5jbHVkaW5nIGFsbCBrZXlzIGlmIGFsbCBkYXRhIGlzIFtPa10sIG9yIGFuIFtFcnJvcl1cbiAgICAgIGluY2x1ZGluZyBhbGwgZXJyb3JzIG90aGVyd2lzZS4gKilcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBSZXR1cm5zIGEgdG90YWwgb3JkZXJpbmcgYmV0d2VlbiBtYXBzLiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSB0b3RhbCBvcmRlcmluZyB1c2VkXG4gICAgICB0byBjb21wYXJlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGVxdWFsIGtleXMgaW4gdGhlIHR3byBtYXBzLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBtYXBzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIG0pLmNvbXBhcmVdIG9mIHRoZSBtYXAgW21dIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2sgSGFzaC5mb2xkZXIgLT4gJ3YgSGFzaC5mb2xkZXIgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgY21wIG0xIG0yXSB0ZXN0cyB3aGV0aGVyIHRoZSBtYXBzIFttMV0gYW5kIFttMl0gYXJlIGVxdWFsLCB0aGF0IGlzLCBjb250YWluXG4gICAgICB0aGUgc2FtZSBrZXlzIGFuZCBhc3NvY2lhdGUgZWFjaCBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gIFtjbXBdIGlzIHRoZSBlcXVhbGl0eVxuICAgICAgcHJlZGljYXRlIHVzZWQgdG8gY29tcGFyZSB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5cy4gKilcbiAgdmFsIGVxdWFsIDogKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBrZXlzIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGxpc3RcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGRhdGEgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gICgqKiBDcmVhdGVzIGFuIGFzc29jaWF0aW9uIGxpc3QgZnJvbSB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdICgqKiBkZWZhdWx0IGlzIFtgSW5jcmVhc2luZ10gKilcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogezIgQWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIG1hcHN9ICopXG5cbiAgKCoqIE1lcmdlcyB0d28gbWFwcy4gVGhlIHJ1bnRpbWUgaXMgTyhsZW5ndGgodDEpICsgbGVuZ3RoKHQyKSkuIFlvdSBzaG91bGRuJ3QgdXNlIHRoaXNcbiAgICAgIGZ1bmN0aW9uIHRvIG1lcmdlIGEgbGlzdCBvZiBtYXBzOyBjb25zaWRlciB1c2luZyBbbWVyZ2Vfc2tld2VkXSBpbnN0ZWFkLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pXG4gICAgLT4gKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogQSBzcGVjaWFsIGNhc2Ugb2YgW21lcmdlXSwgW21lcmdlX3NrZXdlZCB0MSB0Ml0gaXMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlXG4gICAgICBiaW5kaW5ncyBvZiBbdDFdIGFuZCBbdDJdLiBCaW5kaW5ncyB0aGF0IGFwcGVhciBpbiBib3RoIFt0MV0gYW5kIFt0Ml0gYXJlXG4gICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHZhbHVlIHVzaW5nIHRoZSBbY29tYmluZV0gZnVuY3Rpb24uIEluIGEgY2FsbFxuICAgICAgW2NvbWJpbmUgfmtleSB2MSB2Ml0sIHRoZSB2YWx1ZSBbdjFdIGNvbWVzIGZyb20gW3QxXSBhbmQgW3YyXSBmcm9tIFt0Ml0uXG5cbiAgICAgIFRoZSBydW50aW1lIG9mIFttZXJnZV9za2V3ZWRdIGlzIFtPKG1pbihsMSwgbDIpICogbG9nKG1heChsMSwgbDIpKSldLCB3aGVyZSBbbDFdIGlzXG4gICAgICB0aGUgbGVuZ3RoIG9mIFt0MV0gYW5kIFtsMl0gdGhlIGxlbmd0aCBvZiBbdDJdLiBUaGlzIGlzIGxpa2VseSB0byBiZSBmYXN0ZXIgdGhhblxuICAgICAgW21lcmdlXSB3aGVuIG9uZSBvZiB0aGUgbWFwcyBpcyBhIGxvdCBzbWFsbGVyLCBvciB3aGVuIHlvdSBtZXJnZSBhIGxpc3Qgb2YgbWFwcy4gKilcbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgICA6ICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gICgqKiBbc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIHJldHVybnMgYSBsaXN0IG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLlxuICAgICAgSXQgaXMgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnRcbiAgICAgIG9mIHN0cnVjdHVyZS4gVGhlIGtleXMgaW4gdGhlIG91dHB1dCBzZXF1ZW5jZSB3aWxsIGJlIGluIHNvcnRlZCBvcmRlci5cblxuICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IFtkYXRhX2VxdWFsXSBpcyBhdCBsZWFzdCBhcyBlcXVhdGluZyBhcyBwaHlzaWNhbCBlcXVhbGl0eTogdGhhdFxuICAgICAgW3BoeXNfZXF1YWwgeCB5XSBpbXBsaWVzIFtkYXRhX2VxdWFsIHggeV0uIE90aGVyd2lzZSwgW3N5bW1ldHJpY19kaWZmXSBtYXkgYmVoYXZlIGluXG4gICAgICB1bmV4cGVjdGVkIHdheXMuIEZvciBleGFtcGxlLCB3aXRoIFt+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiBmYWxzZSldIGl0IGlzIE5PVFxuICAgICAgbmVjZXNzYXJpbHkgdGhlIGNhc2UgdGhlIHJlc3VsdGluZyBjaGFuZ2Ugc2VxdWVuY2Ugd2lsbCBjb250YWluIGFuIGVsZW1lbnRcbiAgICAgIFsoaywgYFVuZXF1YWwgXyldIGZvciBldmVyeSBrZXkgW2tdIHNoYXJlZCBieSBib3RoIG1hcHMuXG5cbiAgICAgIFdhcm5pbmc6IEZsb2F0IGVxdWFsaXR5IHZpb2xhdGVzIHRoaXMgcHJvcGVydHkhIFtwaHlzX2VxdWFsIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzXG4gICAgICB0cnVlLCBidXQgW0Zsb2F0Lig9KSBGbG9hdC5uYW4gRmxvYXQubmFuXSBpcyBmYWxzZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSBmb2xkcyBhY3Jvc3MgYW4gaW1wbGljaXQgc2VxdWVuY2Ugb2YgY2hhbmdlc1xuICAgICAgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLCBpbiBzb3J0ZWQgb3JkZXIgYnkga2V5cy4gRXF1aXZhbGVudCB0b1xuICAgICAgW1NlcXVlbmNlLmZvbGQgKHN5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsKV0sIGFuZCBtb3JlIGVmZmljaWVudC4gKilcbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KCdhIC0+ICgnaywgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYSlcbiAgICAtPiAnYVxuXG4gICgqKiBbbWluX2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWluaW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFttYXhfZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYXhpbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBbbWFwXSBpcyBlbXB0eS4gKilcbiAgdmFsIG1heF9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogVGhlc2UgZnVuY3Rpb25zIGhhdmUgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHNpbWlsYXIgZnVuY3Rpb25zIGluIFtMaXN0XS4gKilcblxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiBpbnRcblxuXG4gICgqKiBbc3BsaXQgdCBrZXldIHJldHVybnMgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tleV0sIHRoZSBtYXBwaW5nIG9mIFtrZXldIGlmXG4gICAgICBhbnksIGFuZCBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBba2V5XS5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBvdXRwdXQgbWFwcy4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZVxuICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1hcHMuICopXG4gIHZhbCBzcGxpdFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0XSByZXR1cm5zIFtgT2sgbWFwXSB3aGVyZSBbbWFwXSBjb250YWlucyBhbGwgdGhlXG4gICAgICBbKGtleSwgdmFsdWUpXSBwYWlycyBmcm9tIHRoZSB0d28gaW5wdXQgbWFwcyBpZiBhbGwgdGhlIGtleXMgZnJvbSBbbG93ZXJfcGFydF0gYXJlXG4gICAgICBsZXNzIHRoYW4gYWxsIHRoZSBrZXlzIGZyb20gW3VwcGVyX3BhcnRdLiAgT3RoZXJ3aXNlIGl0IHJldHVybnNcbiAgICAgIFtgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc10uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhsb2cgbikgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgbGFyZ2VyIGlucHV0IG1hcC4gIFRoaXMgY2FuIGJlXG4gICAgICBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIFtNYXAubWVyZ2VdIG9yIHJlcGVhdGVkIFtNYXAuYWRkXS5cblxuICAgICAge1tcbiAgICAgICAgYXNzZXJ0IChtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICB8IGBPayB3aG9sZV9tYXAgLT5cbiAgICAgICAgICAgIE1hcC50b19hbGlzdCB3aG9sZV9tYXBcbiAgICAgICAgICAgID0gTGlzdC5hcHBlbmQgKHRvX2FsaXN0IGxvd2VyX3BhcnQpICh0b19hbGlzdCB1cHBlcl9wYXJ0KVxuICAgICAgICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gdHJ1ZSk7XG4gICAgICBdfSAqKVxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICAoKiogW3N1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZF0gcmV0dXJucyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGUgZW50cmllcyBmcm9tXG4gICAgICBbdF0gd2hvc2Uga2V5cyBsaWUgaW5zaWRlIHRoZSBpbnRlcnZhbCBpbmRpY2F0ZWQgYnkgW35sb3dlcl9ib3VuZF0gYW5kXG4gICAgICBbfnVwcGVyX2JvdW5kXS4gIElmIHRoaXMgaW50ZXJ2YWwgaXMgZW1wdHksIGFuIGVtcHR5IG1hcCBpcyByZXR1cm5lZC5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIG91dHB1dCBtYXAuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGVcbiAgICAgIG91dHB1dCBtYXAuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2ZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mXSBmb2xkcyBbZl0gKHdpdGggaW5pdGlhbCB2YWx1ZSBbfmluaXRdKVxuICAgICAgb3ZlciBhbGwga2V5cyAoYW5kIHRoZWlyIGFzc29jaWF0ZWQgdmFsdWVzKSB0aGF0IGFyZSBpbiB0aGUgcmFuZ2UgW1ttaW4sIG1heF1dXG4gICAgICAoaW5jbHVzaXZlKS4gICopXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBtaW46J2tcbiAgICAtPiBtYXg6J2tcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpXG4gICAgLT4gJ2FcblxuICAoKiogW3JhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4XSByZXR1cm5zIGFuIGFzc29jaWF0aXZlIGxpc3Qgb2YgdGhlIGVsZW1lbnRzIHdob3NlIGtleXNcbiAgICAgIGxpZSBpbiBbW21pbiwgbWF4XV0gKGluY2x1c2l2ZSksIHdpdGggdGhlIHNtYWxsZXN0IGtleSBiZWluZyBhdCB0aGUgaGVhZCBvZiB0aGVcbiAgICAgIGxpc3QuICopXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnaywgJ3YsICdjbXApIHQgLT4gbWluOidrIC0+IG1heDonayAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiBbY2xvc2VzdF9rZXkgdCBkaXIga10gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF0gd2l0aCBba2V5XSBjbG9zZXN0IHRvXG4gICAgICBba10gdGhhdCBzYXRpc2ZpZXMgdGhlIGdpdmVuIGluZXF1YWxpdHkgYm91bmQuXG5cbiAgICAgIEZvciBleGFtcGxlLCBbY2xvc2VzdF9rZXkgdCBgTGVzc190aGFuIGtdIHdvdWxkIGJlIHRoZSBwYWlyIHdpdGggdGhlIGNsb3Nlc3Qga2V5IHRvXG4gICAgICBba10gd2hlcmUgW2tleSA8IGtdLlxuXG4gICAgICBbdG9fc2VxdWVuY2VdIGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgc2FtZSByZXN1bHRzIGFzIFtjbG9zZXN0X2tleV0uICBJdCBpcyBsZXNzXG4gICAgICBlZmZpY2llbnQgZm9yIGluZGl2aWR1YWwgbG9va3VwcyBidXQgbW9yZSBlZmZpY2llbnQgZm9yIGZpbmRpbmcgbWFueSBlbGVtZW50cyBzdGFydGluZ1xuICAgICAgYXQgc29tZSB2YWx1ZS4gKilcbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAna1xuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW250aCB0IG5dIGZpbmRzIHRoZSAoa2V5LCB2YWx1ZSkgcGFpciBvZiByYW5rIG4gKGkuZS4sIHN1Y2ggdGhhdCB0aGVyZSBhcmUgZXhhY3RseSBuXG4gICAgICBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZm91bmQga2V5KSwgaWYgb25lIGV4aXN0cy4gIE8obG9nKGxlbmd0aCB0KSArIG4pIHRpbWUuICopXG4gIHZhbCBudGggOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAnayAqICd2XG5cbiAgKCoqIFtyYW5rIHQga10gSWYgW2tdIGlzIGluIFt0XSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrXSBpblxuICAgICAgW3RdLCBhbmQgW05vbmVdIG90aGVyd2lzZS4gKilcbiAgdmFsIHJhbmsgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGludCBvcHRpb25cblxuXG5cbiAgKCoqIFt0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRdXG4gICAgICBnaXZlcyBhIHNlcXVlbmNlIG9mIGtleS12YWx1ZSBwYWlycyBiZXR3ZWVuIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gaW5jbHVzaXZlLCBwcmVzZW50ZWQgaW4gW29yZGVyXS4gIElmXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID4ga2V5c19sZXNzX29yX2VxdWFsX3RvXSwgdGhlIHNlcXVlbmNlIGlzXG4gICAgICBlbXB0eS5cblxuICAgICAgV2hlbiBuZWl0aGVyIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIG5vciBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhcmVcbiAgICAgIHByb3ZpZGVkLCB0aGUgY29zdCBpcyBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgdG8gcHJvZHVjZVxuICAgICAgZWFjaCBlbGVtZW50LiBJZiBlaXRoZXIgaXMgcHJvdmlkZWQgKGFuZCBpcyB1c2VkIGJ5IHRoZSBvcmRlciBwYXJhbWV0ZXJcbiAgICAgIHByb3ZpZGVkKSwgdGhlbiB0aGUgdGhlIGNvc3QgaXMgTyhuKSB1cCBmcm9udCwgYW5kIGFtb3J0aXplZCBPKDEpIHRvXG4gICAgICBwcm9kdWNlIGVhY2ggZWxlbWVudC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5ICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzona1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF1cbiAgICAgIHNwZWNpZmllZCBieSBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBvbiB0aGUgYm91bmRhcnkgb2YgdGhlXG4gICAgICBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZVxuICAgICAgbGVmdCBzZWdtZW50LCB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuXG4gICAgICBJdCByZXR1cm5zIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gWyBgTGFzdF9vbl9sZWZ0IHwgYEZpcnN0X29uX3JpZ2h0IF1cbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXSB0YWtlcyBhIFtjb21wYXJlXSBmdW5jdGlvbiB0aGF0IGRpdmlkZXMgW3RdIGludG8gdGhyZWVcbiAgICAgIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHMgd2l0aCByZXNwZWN0IHRvIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF06XG5cbiAgICAgIHt2XG4gICAgICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgfCBJbl9yYW5nZSB8IEFib3ZlX3VwcGVyX2JvdW5kIHxcbiAgICAgIHZ9XG5cbiAgICAgIGFuZCByZXR1cm5zIGEgbWFwIG9mIHRoZSBbSW5fcmFuZ2VdIHNlZ21lbnQuXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhsb2cgbSArIG4pIHdoZXJlIFttXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBtYXAgYW5kIFtuXSBpcyB0aGVcbiAgICAgIGxlbmd0aCBvZiB0aGUgb3V0cHV0LiBUaGUgbGluZWFyIHRlcm0gaW4gW25dIGlzIHRvIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LlxuXG4gICAgICBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgW2NvbXBhcmVdIGRvZXMgbm90IHNlZ21lbnQgW3RdIGFzIHNob3duIGFib3ZlLCBvciBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgaXRzIGlucHV0cy4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSBpbnQgTWFwLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gKFN0cmluZy50LCBpbnQsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IE1hcC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBbU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzXVxuICAgICAgLS0gaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS5cblxuICAgICAgSW4gYWRkaXRpb24sIHdoZW4gdXNpbmcgW0BAZGVyaXZpbmddLCB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBrZXkgbW9kdWxlIGFyZSBvbmx5XG4gICAgICB0aG9zZSBuZWVkZWQgdG8gc2F0aXNmeSB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGRlcml2ZSBvbiB0aGUgbWFwIGl0c2VsZi4gU2F5IHlvdVxuICAgICAgd3JpdGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgdCA9IGludCBNYXAuTShYKS50IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBdfVxuXG4gICAgICB0aGVuIHRoaXMgd2lsbCBiZSB3ZWxsIHR5cGVkIGV4YWN0bHkgaWYgW1hdIGNvbnRhaW5zIGF0IGxlYXN0OlxuICAgICAgLSBhIHR5cGUgW3RdIHdpdGggbm8gcGFyYW1ldGVyc1xuICAgICAgLSBhIGNvbXBhcmF0b3Igd2l0bmVzc1xuICAgICAgLSBhIFtoYXNoX2ZvbGRfdF0gZnVuY3Rpb24gd2l0aCB0aGUgcmlnaHQgdHlwZSAqKVxuICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0IDo9ICgna2V5LCAndmFsdWUsICdjbXApIHRcblxuICAoKiogW1VzaW5nX2NvbXBhcmF0b3JdIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtNYXBdLCBleGNlcHQgdGhlXG4gICAgICBmdW5jdGlvbnMgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudF0sIHdoZXJlYXMgdGhlIGZ1bmN0aW9ucyBhdCB0aGVcbiAgICAgIHRvcGxldmVsIG9mIFtNYXBdIHRha2UgYSBbKCdrLCAnY21wKSBjb21wYXJhdG9yXS4gKilcbiAgbW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICsndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgIC0+IFNleHAudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCsnaywgKyd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICB2YWwgc2V4cF9vZl90XG4gICAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgICAtPiBTZXhwLnRcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8sIF8pIHRcblxuICAgICAgKCoqIFtCdWlsZF9pbmNyZWFzaW5nXSBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBtYXAgaW5jcmVtZW50YWxseSBmcm9tIGFcbiAgICAgICAgICBzZXF1ZW5jZSB0aGF0IGlzIGtub3duIHRvIGJlIGluY3JlYXNpbmcuXG5cbiAgICAgICAgICBUaGUgdG90YWwgdGltZSBjb21wbGV4aXR5IG9mIGNvbnN0cnVjdGluZyBhIG1hcCB0aGlzIHdheSBpcyBPKG4pLCB3aGljaCBpcyBtb3JlXG4gICAgICAgICAgZWZmaWNpZW50IHRoYW4gdXNpbmcgW01hcC5hZGRdIGJ5IGEgbG9nYXJpdGhtaWMgZmFjdG9yLlxuXG4gICAgICAgICAgVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBkdWFsIG9mIFt0b19zZXF1ZW5jZV0sIGJ1dCB3ZSBkb24ndCBoYXZlXG4gICAgICAgICAgYW4gZXF1YWxseSBuZWF0IGlkaW9tIGZvciB0aGUgZHVhbHMgb2Ygc2VxdWVuY2VzIChbb2Zfc2VxdWVuY2VdIGlzIG11Y2ggbGVzc1xuICAgICAgICAgIGdlbmVyYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgc2VxdWVuY2UgdG8gYmUgcHJvZHVjZWQgYXN5bmNocm9ub3VzbHkpLiAqKVxuICAgICAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB0eXBlICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgdmFsIGVtcHR5IDogKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IG9mIFthZGRfZXhuXSBpcyBhbW9ydGl6ZWQgY29uc3RhbnQtdGltZSAoaWYgW3RdIGlzIHVzZWRcbiAgICAgICAgICAgIGxpbmVhcmx5KSwgd2l0aCBhIHdvcnN0LWNhc2UgTyhsb2cobikpIHRpbWUuICopXG4gICAgICAgIHZhbCBhZGRfZXhuXG4gICAgICAgICAgOiAgKCdrLCAndiwgJ3cpIHRcbiAgICAgICAgICAtPiBjb21wYXJhdG9yOignaywgJ3cpIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+IGtleTona1xuICAgICAgICAgIC0+IGRhdGE6J3ZcbiAgICAgICAgICAtPiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgaXMgTyhsb2cobikpLiAqKVxuICAgICAgICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICd3KSB0IC0+ICgnaywgJ3YsICd3KSB0cmVlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdFxuICAgICAgOiAgJ2sgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICd2IEhhc2guZm9sZGVyXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgICAoKiogVG8gZ2V0IGFyb3VuZCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24sIGFwcGx5IHRoZSBmdW5jdG9yIGFuZCBpbmNsdWRlIGl0LiBZb3VcbiAgICAgICAgY2FuIHNlZSBhbiBleGFtcGxlIG9mIHRoaXMgaW4gdGhlIFtQb2x5XSBzdWJtb2R1bGUgYmVsb3cuICopXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gICgqKiBBIHBvbHltb3JwaGljIE1hcC4gKilcbiAgbW9kdWxlIFBvbHkgOlxuICAgIFNfcG9seVxuICAgIHdpdGggdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdCA9ICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICAgYW5kIHR5cGUgKCdrZXksICsndmFsdWUpIHRyZWUgPVxuICAgICAgICAgICAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgKCoqIENyZWF0ZSBhIG1hcCBmcm9tIGEgdHJlZSB1c2luZyB0aGUgZ2l2ZW4gY29tcGFyYXRvci4gKilcbiAgdmFsIG9mX3RyZWVcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogRXh0cmFjdCBhIHRyZWUgZnJvbSBhIG1hcC4gKilcbiAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG5cblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW01hcF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBBY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBBY2Nlc3NvcnMyXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczMgPSBBY2Nlc3NvcnMzXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBDcmVhdG9yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gQ3JlYXRvcnMyXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgPSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMlxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9XG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVFxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gTWFwX2ludGYuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gTWFwX2ludGYuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBNYXBfaW50Zi5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5HZW5lcmljX3BoYW50b21cblxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gICgqKiBUaGUgW29wdGlvbnNdIHR5cGUgaXMgdXNlZCB0byBtYWtlIFtBY2Nlc3NvcnNfZ2VuZXJpY10gZmxleGlibGUgYXMgdG8gd2hldGhlciBhXG4gICAgICBjb21wYXJhdG9yIGlzIHJlcXVpcmVkIHRvIGJlIHBhc3NlZCB0byBjZXJ0YWluIGZ1bmN0aW9ucy4gKilcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG5cbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuXG4gICgqKiBvdmVycmlkZSBbQ29udGFpbmVyXSdzIFttZW1dICopXG4gIHZhbCBtZW0gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gYm9vbCkgb3B0aW9uc1xuXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIGludGVyIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSBlbHQsICdhIGVsdCkgRWl0aGVyLnQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50KSBvcHRpb25zXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG5cbiAgdHlwZSAoJ2EsICdjbXApIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgbmFtZWQgLT4gb2ZfOignYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIG5hbWVkIC0+ICgnYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50KSBvcHRpb25zXG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIGVsdCAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidiIC0+IGY6KCdhIGVsdCAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gZjooWyBgTGVmdCBvZiAnYSBlbHQgfCBgUmlnaHQgb2YgJ2EgZWx0IHwgYEJvdGggb2YgJ2EgZWx0ICogJ2EgZWx0IF0gLT4gdW5pdClcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogJ2EgZWx0IG9wdGlvbiAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZXF1aXY6KCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0IGxpc3QgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAnYSBlbHRcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAnYSBlbHQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdrZXkgLT4gaW50KVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooJ2EgZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSBlbHQsICdhIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMFxuXG4gIHR5cGUgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogdCAtPiBib29sXG4gIHZhbCBtZW0gOiB0IC0+IGVsdCAtPiBib29sXG4gIHZhbCBhZGQgOiB0IC0+IGVsdCAtPiB0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGVsdCAtPiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBpbnRlciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogdCAtPiB0IC0+IChlbHQsIGVsdCkgRWl0aGVyLnQgU2VxdWVuY2UudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpc19zdWJzZXQgOiB0IC0+IG9mXzp0IC0+IGJvb2xcbiAgdmFsIGFyZV9kaXNqb2ludCA6IHQgLT4gdCAtPiBib29sXG5cbiAgdHlwZSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXQgOiBuYW1lZCAtPiBvZl86bmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGVxdWFsIDogbmFtZWQgLT4gbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiBlbHQgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiB0IC0+IGluaXQ6J2IgLT4gZjooZWx0IC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogIHRcbiAgICAtPiB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiBlbHQgfCBgUmlnaHQgb2YgZWx0IHwgYEJvdGggb2YgZWx0ICogZWx0IF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlciA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IHQgKiB0XG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogdCAtPiBlbHRcbiAgdmFsIG1heF9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogdCAtPiBlbHRcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6IHQgLT4gZWx0XG4gIHZhbCBzcGxpdCA6IHQgLT4gZWx0IC0+IHQgKiBlbHQgb3B0aW9uICogdFxuICB2YWwgZ3JvdXBfYnkgOiB0IC0+IGVxdWl2OihlbHQgLT4gZWx0IC0+IGJvb2wpIC0+IHQgbGlzdFxuICB2YWwgZmluZF9leG4gOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBlbHRcbiAgdmFsIG50aCA6IHQgLT4gaW50IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHRvX3RyZWUgOiB0IC0+IHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzplbHRcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzplbHRcbiAgICAtPiB0XG4gICAgLT4gZWx0IFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogIHRcbiAgICAtPiBjb21wYXJlOihlbHQgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+IGVsdCBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICB0XG4gICAgLT4gc2VnbWVudF9vZjooZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+IHRcbiAgICAtPiB0XG4gICAgLT4gKGVsdCwgZWx0KSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzFcblxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IF8gdCAtPiBib29sXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGFkZCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCB1bmlvbiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBpbnRlciA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBkaWZmIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogJ2EgdCAtPiAnYSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgaXNfc3Vic2V0IDogJ2EgdCAtPiBvZl86J2EgdCAtPiBib29sXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gIHR5cGUgJ2EgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0IDogJ2EgbmFtZWQgLT4gb2ZfOidhIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBlcXVhbCA6ICdhIG5hbWVkIC0+ICdhIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGVsZW1lbnRzIDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogJ2EgdCAtPiAnYVxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICdhIHQgLT4gJ2FcbiAgdmFsIGNob29zZSA6ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogJ2EgdCAtPiAnYVxuICB2YWwgc3BsaXQgOiAnYSB0IC0+ICdhIC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gIHZhbCBncm91cF9ieSA6ICdhIHQgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgbGlzdFxuICB2YWwgZmluZF9leG4gOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBudGggOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICdhIHQgLT4gaW50IC0+ICdhIHRcbiAgdmFsIHRvX3RyZWUgOiAnYSB0IC0+ICdhIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICdhIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgJ2EgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxX3BoYW50b21faW52YXJpYW50XG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBkaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdHlwZSAoJ2EsICdjbXApIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgbmFtZWQgLT4gb2ZfOignYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSBuYW1lZCAtPiAoJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidiIC0+IGY6KCdhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgbGlzdFxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzFfcGhhbnRvbV9pbnZhcmlhbnRcblxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgYWRkIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCByZW1vdmUgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgdW5pb25cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIGludGVyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBkaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdmFsIGlzX3N1YnNldFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBvZl86KCdhLCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBhcmVfZGlzam9pbnRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHR5cGUgKCdhLCAnY21wKSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXRcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+IG9mXzooJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gKCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYSAtPiAnYWNjdW0gLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICB2YWwgaXRlcjJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gIHZhbCBzcGxpdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2NtcCkgdCAqICdhIG9wdGlvbiAqICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBncm91cF9ieVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBvcHRpb25cblxuICB2YWwgcmVtb3ZlX2luZGV4XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGludFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoTmFtZWQgOiBUMilcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMCAoTSA6IEFjY2Vzc29yczApID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmVsdFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMxIChNIDogQWNjZXNzb3JzMSkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczIgKE0gOiBBY2Nlc3NvcnMyKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG4gIHR5cGUgJ2EgZWx0XG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCwgJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wLCAnYSBlbHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wLCAnYSBlbHQgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCdhLCAnY21wLCBsZW46aW50IC0+IGY6KGludCAtPiAnYSBlbHQpIC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXywgJ2EgZWx0IGxpc3QgLT4gJ2EgZWx0IGxpc3QpIG9wdGlvbnNcblxuICAoKiogVGhlIHR5cGVzIG9mIFttYXBdIGFuZCBbZmlsdGVyX21hcF0gYXJlIHN1YnRsZS4gIFRoZSBpbnB1dCBzZXQsIFsoJ2EsIF8pIHNldF0sXG4gICAgICByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyB0YWtlIGEgc2V0IG9mICphbnkqIHR5cGUsIHdpdGggYW55XG4gICAgICBjb21wYXJhdG9yLCB3aGlsZSB0aGUgb3V0cHV0IHNldCwgWygnYiwgJ2NtcCkgdF0sIHJlZmxlY3RzIHRoYXQgdGhlIG91dHB1dCBzZXQgaGFzXG4gICAgICB0aGUgcGFydGljdWxhciBbJ2NtcF0gb2YgdGhlIGNyZWF0aW9uIGZ1bmN0aW9uLiAgVGhlIGNvbXBhcmF0b3IgY2FuIGNvbWUgaW4gb25lIG9mXG4gICAgICB0aHJlZSB3YXlzLCBkZXBlbmRpbmcgb24gd2hpY2ggc2V0IG1vZHVsZSBpcyB1c2VkXG5cbiAgICAgIC0gW1NldC5tYXBdIC0tIGNvbXBhcmF0b3IgY29tZXMgYXMgYW4gYXJndW1lbnRcbiAgICAgIC0gW1NldC5Qb2x5Lm1hcF0gLS0gY29tcGFyYXRvciBpcyBwb2x5bW9ycGhpYyBjb21wYXJpc29uXG4gICAgICAtIFtGb28uU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBpcyBbRm9vLmNvbXBhcmF0b3JdICopXG4gIHZhbCBtYXAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIGVsdCkgLT4gKCdiLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICgnYiwgJ2NtcCwgKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IgZWx0IG9wdGlvbikgLT4gKCdiLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdjbXAsICgnYSBlbHQsICdjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMwID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSB0XG4gIHR5cGUgdHJlZVxuICB0eXBlIGVsdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCB1bmlvbl9saXN0IDogdCBsaXN0IC0+IHRcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6IGVsdCBTZXF1ZW5jZS50IC0+IHRcbiAgdmFsIG9mX2FycmF5IDogZWx0IGFycmF5IC0+IHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6IGVsdCBhcnJheSAtPiB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiBlbHQgYXJyYXkgLT4gdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiBlbHQpIC0+IHRcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogZWx0IGxpc3QgLT4gZWx0IGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+IGVsdCkgLT4gdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+IGVsdCBvcHRpb24pIC0+IHRcbiAgdmFsIG9mX3RyZWUgOiB0cmVlIC0+IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgdW5pb25fbGlzdCA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICdhIFNlcXVlbmNlLnQgLT4gJ2EgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAnYSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAnYSBhcnJheSAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAnYSBhcnJheSAtPiAnYSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICB2YWwgbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIG9mX3RyZWUgOiAnYSB0cmVlIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiAnYSkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICB2YWwgbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gKCdiLCAnY21wKSB0XG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wKSB0cmVlIC0+ICgnYSwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBlbXB0eSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBzaW5nbGV0b24gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdW5pb25fbGlzdCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9saXN0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gIHZhbCBtYXBcbiAgICA6ICBjb21wYXJhdG9yOignYiwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCBfKSBzZXRcbiAgICAtPiBmOignYSAtPiAnYilcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdiLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsIF8pIHNldFxuICAgIC0+IGY6KCdhIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfdHJlZSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0cmVlIC0+ICgnYSwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMwIChNIDogQ3JlYXRvcnMwKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmVsdFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSAnY21wXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSAnY21wXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMwXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgdHJlZSA6PSB0cmVlXG4gICAgd2l0aCB0eXBlIGVsdCA6PSBlbHRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMyXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190IDogKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdlbHQsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3QgOiAobW9kdWxlIENvbXBhcmVfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbF9tX190IDogKG1vZHVsZSBFcXVhbF9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnZWx0LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuXG4gIHZhbCBoYXNoX21fX3QgOiAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsIF8pIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gICgqKiBTZXRzIGJhc2VkIG9uIHshQ29tcGFyYXRvci5TfS5cblxuICAgICAgQ3JlYXRvcnMgcmVxdWlyZSBhIGNvbXBhcmF0b3IgYXJndW1lbnQgdG8gYmUgcGFzc2VkIGluLCB3aGVyZWFzIGFjY2Vzc29ycyB1c2UgdGhlXG4gICAgICBjb21wYXJhdG9yIHByb3ZpZGVkIGJ5IHRoZSBpbnB1dCBzZXQuICopXG5cbiAgKCoqIFRoZSB0eXBlIG9mIGEgc2V0LiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQsIGFuZFxuICAgICAgdGhlIHNlY29uZCBpZGVudGlmaWVzIHRoZSBjb21wYXJhdG9yLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGlzIHVzZWQgZm9yIG9yZGVyaW5nIGVsZW1lbnRzIGluIHRoaXMgc2V0LiAgTWFueSBvcGVyYXRpb25zIChlLmcuLCB7IXVuaW9ufSksXG4gICAgICByZXF1aXJlIHRoYXQgdGhleSBiZSBwYXNzZWQgc2V0cyB3aXRoIHRoZSBzYW1lIGVsZW1lbnQgdHlwZSBhbmQgdGhlIHNhbWUgY29tcGFyYXRvclxuICAgICAgdHlwZS4gKilcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2VsdCwgJ2NtcCkgdCA6PSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdHMgaW50ZXJuYWwgaW52YXJpYW50cyBvZiB0aGUgc2V0IGRhdGEgc3RydWN0dXJlLiAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGNcbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogQ3JlYXRlcyBhbiBlbXB0eSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvciB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIHByb3ZpZGVkXG4gICAgICBlbGVtZW50LiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUgc2V0LiBbTygxKV0uICopXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcblxuICAoKiogW2lzX2VtcHR5IHRdIGlzIFt0cnVlXSBpZmYgW3RdIGlzIGVtcHR5LiAgW08oMSldLiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFttZW0gdCBhXSByZXR1cm5zIFt0cnVlXSBpZmYgW2FdIGlzIGluIFt0XS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuXG4gICgqKiBbYWRkIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gYWRkZWQgdG8gW3RdLCBvciByZXR1cm5zIFt0XSBpZiBbbWVtIHQgYV0uXG4gICAgICBbTyhsb2cgbildLiAqKVxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbcmVtb3ZlIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gcmVtb3ZlZCBmcm9tIFt0XSBpZiBbbWVtIHQgYV0sIG9yIHJldHVybnMgW3RdXG4gICAgICBvdGhlcndpc2UuICBbTyhsb2cgbildLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gdDEgdDJdIHJldHVybnMgdGhlIHVuaW9uIG9mIHRoZSB0d28gc2V0cy4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gYyBsaXN0XSByZXR1cm5zIHRoZSB1bmlvbiBvZiBhbGwgdGhlIHNldHMgaW4gW2xpc3RdLiAgVGhlXG4gICAgICBbY29tcGFyYXRvcl0gYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yIHRoZSBjYXNlIHdoZXJlIFtsaXN0XSBpcyBlbXB0eS5cbiAgICAgIFtPKG1heChMaXN0Lmxlbmd0aCBsaXN0LCBuIGxvZyBuKSldLCB3aGVyZSBbbl0gaXMgdGhlIHN1bSBvZiBzaXplcyBvZiB0aGUgaW5wdXQgc2V0cy4gKilcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpbnRlciB0MSB0Ml0gY29tcHV0ZXMgdGhlIGludGVyc2VjdGlvbiBvZiBzZXRzIFt0MV0gYW5kIFt0Ml0uICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtkaWZmIHQxIHQyXSBjb21wdXRlcyB0aGUgc2V0IGRpZmZlcmVuY2UgW3QxIC0gdDJdLCBpLmUuLCB0aGUgc2V0IGNvbnRhaW5pbmcgYWxsXG4gICAgICBlbGVtZW50cyBpbiBbdDFdIHRoYXQgYXJlIG5vdCBpbiBbdDJdLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyXSByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uIEl0IGlzXG4gICAgICBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudCBvZlxuICAgICAgc3RydWN0dXJlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICAoKiogW2NvbXBhcmVfZGlyZWN0IHQxIHQyXSBjb21wYXJlcyB0aGUgc2V0cyBbdDFdIGFuZCBbdDJdLiAgSXQgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRcbiAgICAgIGFzIFtjb21wYXJlXSwgYnV0IHVubGlrZSBjb21wYXJlLCBkb2Vzbid0IHJlcXVpcmUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbiBmb3IgdGhlXG4gICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIHNldC4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgc2V0cyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBzKS5jb21wYXJlXSBvZiB0aGUgc2V0IFtzXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdhIEhhc2guZm9sZGVyIC0+ICgnYSwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiB0aGUgdHdvIHNldHMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cy4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXSAqKVxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2V4aXN0cyB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlcmUgZXhpc3RzIGFuIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGFdLiAgW08obildLFxuICAgICAgYnV0IHJldHVybnMgYXMgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtmIGFdLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogW2Zvcl9hbGwgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIGZvciBhbGwgW2FdIGluIFt0XSwgW2YgYV0uICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzXG4gICAgICBzb29uIGFzIGl0IGZpbmRzIGFuIFthXSBmb3Igd2hpY2ggW25vdCAoZiBhKV0uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogW2NvdW50IHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIFt0cnVlXS5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBbc3VtIHRdIHJldHVybnMgdGhlIHN1bSBvZiBbZiB0XSBmb3IgZWFjaCBbdF0gaW4gdGhlIHNldC5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOignYSAtPiAnc3VtKVxuICAgIC0+ICdzdW1cblxuICAoKiogW2ZpbmQgdCBmXSByZXR1cm5zIGFuIGVsZW1lbnQgb2YgW3RdIGZvciB3aGljaCBbZl0gcmV0dXJucyB0cnVlLCB3aXRoIG5vIGd1YXJhbnRlZSBhc1xuICAgICAgdG8gd2hpY2ggZWxlbWVudCBpcyByZXR1cm5lZC4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXMgc29vbiBhcyBhIHN1aXRhYmxlIGVsZW1lbnQgaXNcbiAgICAgIGZvdW5kLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cblxuICAoKiogW2ZpbmRfbWFwIHQgZl0gcmV0dXJucyBbYl0gZm9yIHNvbWUgW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYSA9IFNvbWUgYl0uICBJZiBubyBzdWNoXG4gICAgICBbYV0gZXhpc3RzLCB0aGVuIFtmaW5kXSByZXR1cm5zIFtOb25lXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXMgc29vbiBhcyBhIHN1aXRhYmxlXG4gICAgICBlbGVtZW50IGlzIGZvdW5kLiAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICAoKiogTGlrZSBbZmluZF0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuXG4gICgqKiBbbnRoIHQgaV0gcmV0dXJucyB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCBvZiBbdF0sIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZVxuICAgICAgc21hbGxlc3QgZWxlbWVudCBoYXMgW2kgPSAwXS4gIFJldHVybnMgW05vbmVdIGlmIFtpIDwgMF0gb3IgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBvcHRpb25cblxuICAoKiogW3JlbW92ZV9pbmRleCB0IGldIHJldHVybnMgYSB2ZXJzaW9uIG9mIFt0XSB3aXRoIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IHJlbW92ZWQsXG4gICAgICBpbiBbTyhsb2cgbildIHRpbWUuICBUaGUgc21hbGxlc3QgZWxlbWVudCBoYXMgW2kgPSAwXS4gIFJldHVybnMgW3RdIGlmIFtpIDwgMF0gb3JcbiAgICAgIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyB0cnVlIGlmZiBbdDFdIGlzIGEgc3Vic2V0IG9mIFt0Ml0uICopXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFthcmVfZGlzam9pbnQgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiBbaXNfZW1wdHkgKGludGVyIHQxIHQyKV0sIGJ1dCBpcyBtb3JlXG4gICAgICBlZmZpY2llbnQuICopXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW05hbWVkXSBhbGxvd3MgdGhlIHZhbGlkYXRpb24gb2Ygc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzIGJldHdlZW4gc2V0cy4gIEFcbiAgICAgIFtOYW1lZC50XSBpcyBhIHJlY29yZCBvZiBhIHNldCBhbmQgYSBuYW1lLCB3aGVyZSB0aGUgbmFtZSBpcyB1c2VkIGluIGVycm9yIG1lc3NhZ2VzLFxuICAgICAgYW5kIFtOYW1lZC5pc19zdWJzZXRdIGFuZCBbTmFtZWQuZXF1YWxdIHZhbGlkYXRlIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwc1xuICAgICAgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgZXJyb3IgbWVzc2FnZSBmb3IsIGUuZy4sXG4gICAgICB7W1xuICAgICAgICBOYW1lZC5pc19zdWJzZXQgeyBzZXQgPSBzZXQxOyBuYW1lID0gXCJzZXQxXCIgfSB+b2ZfOntzZXQgPSBzZXQyOyBuYW1lID0gXCJzZXQyXCIgfVxuICAgICAgXX1cblxuICAgICAgbG9va3MgbGlrZVxuICAgICAge3ZcbiAgICAgICAgKFwic2V0MSBpcyBub3QgYSBzdWJzZXQgb2Ygc2V0MlwiIChpbnZhbGlkX2VsZW1lbnRzICguLi5lbGVtZW50cyBvZiBzZXQxIC0gc2V0Mi4uLikpKVxuICAgICB2fVxuXG4gICAgICBzbyBbbmFtZV0gc2hvdWxkIGJlIGEgbm91biBwaHJhc2UgdGhhdCBkb2Vzbid0IHNvdW5kIGF3a3dhcmQgaW4gdGhlIGFib3ZlIGVycm9yXG4gICAgICBtZXNzYWdlLiAgRXZlbiB0aG91Z2ggaXQgYWRkcyB2ZXJib3NpdHksIGNob29zaW5nIFtuYW1lXXMgdGhhdCBzdGFydCB3aXRoIHRoZSBwaHJhc2VcbiAgICAgIFwidGhlIHNldCBvZlwiIG9mdGVuIG1ha2VzIHRoZSBlcnJvciBtZXNzYWdlIHNvdW5kIG1vcmUgbmF0dXJhbC5cbiAgKilcbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgIHsgc2V0IDogKCdhLCAnY21wKSB0XG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgW09rICgpXSBpZiBbdDFdIGlzIGEgc3Vic2V0IG9mIFt0Ml0gYW5kIGFcbiAgICAgICAgaHVtYW4tcmVhZGFibGUgZXJyb3Igb3RoZXJ3aXNlLiAgKilcbiAgICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBlcXVhbCB0byBbdDJdIGFuZCBhIGh1bWFuLXJlYWRhYmxlXG4gICAgICAgIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgKCoqIFRoZSBsaXN0IG9yIGFycmF5IGdpdmVuIHRvIFtvZl9saXN0XSBhbmQgW29mX2FycmF5XSBuZWVkIG5vdCBiZSBzb3J0ZWQuICopXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3RvX2xpc3RdIGFuZCBbdG9fYXJyYXldIHByb2R1Y2Ugc2VxdWVuY2VzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgY29tcGFyYXRvci4gKilcbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBDcmVhdGUgc2V0IGZyb20gc29ydGVkIGFycmF5LiAgVGhlIGlucHV0IG11c3QgYmUgc29ydGVkIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yXG4gICAgICBkZXNjZW5kaW5nIG9yZGVyIGFzIGdpdmVuIGJ5IHRoZSBjb21wYXJhdG9yKSBhbmQgY29udGFpbiBubyBkdXBsaWNhdGVzLCBvdGhlcndpc2UgdGhlXG4gICAgICByZXN1bHQgaXMgYW4gZXJyb3IuICBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIFtPKG4pXS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogU2ltaWxhciB0byBbb2Zfc29ydGVkX2FycmF5XSwgYnV0IHdpdGhvdXQgY2hlY2tpbmcgdGhlIGlucHV0IGFycmF5LiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3RhYmxlX2RlZHVwX2xpc3RdIGlzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdGhlIFtMaXN0XSBtb2R1bGUgYmVjYXVzZSB0aGVcbiAgICAgIGltcGxlbWVudGF0aW9uIHJlbGllcyBjcnVjaWFsbHkgb24gc2V0cywgYW5kIGJlY2F1c2UgZG9pbmcgc28gYWxsb3dzIG9uZSB0byBhdm9pZCB1c2VzXG4gICAgICBvZiBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGZ1bmN0b3IgYXQgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25cbiAgICAgIG9mIFtDb21wYXJhdG9yXSBhbmQgdXNpbmcgdGhlIHJlc3VsdGluZyBbc3RhYmxlX2RlZHVwX2xpc3RdLiAqKVxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFttYXAgYyB0IH5mXSByZXR1cm5zIGEgbmV3IHNldCBjcmVhdGVkIGJ5IGFwcGx5aW5nIFtmXSB0byBldmVyeSBlbGVtZW50IGluXG4gICAgICBbdF0uICBUaGUgcmV0dXJuZWQgc2V0IGlzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBbY29tcGFyYXRvcl0uICBbTyhuIGxvZyBuKV0uICopXG4gIHZhbCBtYXAgOiAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdjbXApIHRcblxuICAoKiogTGlrZSB7IW1hcH0sIGV4Y2VwdCBlbGVtZW50cyBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW05vbmVdIHdpbGwgYmUgZHJvcHBlZC4gICopXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgdGhlIHN1YnNldCBvZiBbdF0gZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gIFtPKG4gbG9nXG4gICAgICBuKV0uICopXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0byBsYXJnZXN0LiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QsIHNob3J0IGNpcmN1aXRpbmcgdGhlIGZvbGQgaWYgW2YgYWNjdW0geF0gaXMgYW4gW0Vycm9yIF9dICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuXG4gICgqKiBMaWtlIHshZm9sZH0sIGV4Y2VwdCB0aGF0IGl0IGdvZXMgZnJvbSB0aGUgbGFyZ2VzdCB0byB0aGUgc21hbGxlc3QgZWxlbWVudC4gKilcbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2EgLT4gJ2FjY3VtIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtpdGVyIHQgfmZdIGNhbGxzIFtmXSBvbiBldmVyeSBlbGVtZW50IG9mIFt0XSwgZ29pbmcgaW4gb3JkZXIgZnJvbSB0aGUgc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QuICAqKVxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGUgdHdvIHNldHMgc2lkZSBieSBzaWRlLiAgQ29tcGxleGl0eSBpcyBbTyhtK24pXSB3aGVyZSBbbV0gYW5kIFtuXSBhcmUgdGhlIHNpemVzXG4gICAgICBvZiB0aGUgdHdvIGlucHV0IHNldHMuICBBcyBhbiBleGFtcGxlLCB3aXRoIHRoZSBpbnB1dHMgWzA7IDFdIGFuZCBbMTsgMl0sIFtmXSB3aWxsIGJlXG4gICAgICBjYWxsZWQgd2l0aCBbYExlZnQgMF07IFtgQm90aCAoMSwgMSldOyBhbmQgW2BSaWdodCAyXS4gKilcbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogaWYgW2EsIGIgPSBwYXJ0aXRpb25fdGYgc2V0IH5mXSB0aGVuIFthXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VkIFt0cnVlXSxcbiAgICAgIGFuZCBbYl0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlcyBbZmFsc2VdLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBTYW1lIGFzIHshdG9fbGlzdH0uICopXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFJldHVybnMgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWluX2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogUmV0dXJucyB0aGUgbGFyZ2VzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAgKilcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtYXhfZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiByZXR1cm5zIGFuIGFyYml0cmFyeSBlbGVtZW50LCBvciBbTm9uZV0gaWYgdGhlIHNldCBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IWNob29zZX0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogW3NwbGl0IHQgeF0gcHJvZHVjZXMgYSB0cmlwbGUgWyh0MSwgbWF5YmVfeCwgdDIpXSB3aGVyZSBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHNcbiAgICAgIHN0cmljdGx5IGxlc3MgdGhhbiBbeF0sIFttYXliZV94XSBpcyB0aGUgbWVtYmVyIChpZiBhbnkpIG9mIFt0XSB3aGljaCBjb21wYXJlcyBlcXVhbFxuICAgICAgdG8gW3hdLCBhbmQgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGxhcmdlciB0aGFuIFt4XS4gKilcbiAgdmFsIHNwbGl0IDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdCAqICdhIG9wdGlvbiAqICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBpZiBbZXF1aXZdIGlzIGFuIGVxdWl2YWxlbmNlIHByZWRpY2F0ZSwgdGhlbiBbZ3JvdXBfYnkgc2V0IH5lcXVpdl0gcHJvZHVjZXMgYSBsaXN0XG4gICAgICBvZiBlcXVpdmFsZW5jZSBjbGFzc2VzIChpLmUuLCBhIHNldC10aGVvcmV0aWMgcXVvdGllbnQpLiAgRS5nLixcblxuICAgICAge1tcbiAgICAgICAgbGV0IGNoYXJzID0gU2V0Lm9mX2xpc3QgWydBJzsgJ2EnOyAnYic7ICdjJ10gaW5cbiAgICAgICAgbGV0IGVxdWl2IGMgYycgPSBDaGFyLmVxdWFsIChDaGFyLnVwcGVyY2FzZSBjKSAoQ2hhci51cHBlcmNhc2UgYycpIGluXG4gICAgICAgIGdyb3VwX2J5IGNoYXJzIH5lcXVpdlxuICAgICAgXX1cblxuICAgICAgcHJvZHVjZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIFtTZXQub2ZfbGlzdCBbJ0EnOydhJ107IFNldC5zaW5nbGV0b24gJ2InOyBTZXQuc2luZ2xldG9uICdjJ11cbiAgICAgIF19XG5cbiAgICAgIFtncm91cF9ieV0gcnVucyBpbiBPKG5eMikgdGltZSwgc28gaWYgeW91IGhhdmUgYSBjb21wYXJpc29uIGZ1bmN0aW9uLCBpdCdzIHVzdWFsbHlcbiAgICAgIG11Y2ggZmFzdGVyIHRvIHVzZSBbU2V0Lm9mX2xpc3RdLiAqKVxuICB2YWwgZ3JvdXBfYnkgOiAoJ2EsICdjbXApIHQgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgKCoqIFt0b19zZXF1ZW5jZSB0XSBjb252ZXJ0cyB0aGUgc2V0IFt0XSB0byBhIHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBiZXR3ZWVuXG4gICAgICBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kIFtsZXNzX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUgaW4gdGhlIG9yZGVyIGluZGljYXRlZCBieVxuICAgICAgW29yZGVyXS4gIElmIFtncmVhdGVyX29yX2VxdWFsX3RvID4gbGVzc19vcl9lcXVhbF90b10gdGhlIHNlcXVlbmNlIGlzIGVtcHR5LiAgQ29zdCBpc1xuICAgICAgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIGZvciBlYWNoIGVsZW1lbnQgcHJvZHVjZWQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBlbGVtZW50IGluIFt0XSBzcGVjaWZpZWQgYnlcbiAgICAgIFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2YgdGhlIHNlZ21lbnRzIGFzXG4gICAgICBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBsZWZ0IHNlZ21lbnQsXG4gICAgICB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuICBJdCByZXR1cm5zXG4gICAgICBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gWyBgTGFzdF9vbl9sZWZ0IHwgYEZpcnN0X29uX3JpZ2h0IF1cbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogUHJvZHVjZXMgdGhlIGVsZW1lbnRzIG9mIHRoZSB0d28gc2V0cyBiZXR3ZWVuIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmRcbiAgICAgIFtsZXNzX29yX2VxdWFsX3RvXSBpbiBbb3JkZXJdLCBub3Rpbmcgd2hldGhlciBlYWNoIGVsZW1lbnQgYXBwZWFycyBpbiB0aGUgbGVmdCBzZXQsXG4gICAgICB0aGUgcmlnaHQgc2V0LCBvciBib3RoLiAgSW4gdGhlIGJvdGggY2FzZSwgYm90aCBlbGVtZW50cyBhcmUgcmV0dXJuZWQsIGluIGNhc2UgdGhlXG4gICAgICBjYWxsZXIgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZWxlbWVudHMgdGhhdCBhcmUgZXF1YWwgdG8gdGhlIHNldHMnIGNvbXBhcmF0b3IuICBSdW5zXG4gICAgICBpbiBPKGxlbmd0aCB0ICsgbGVuZ3RoIHQnKS4gKilcbiAgbW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50ID1cbiAgICAgIHwgTGVmdCBvZiAnYVxuICAgICAgfCBSaWdodCBvZiAnYlxuICAgICAgfCBCb3RoIG9mICdhICogJ2JcbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gU2V0Lk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSAoU3RyaW5nLnQsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIFNldC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbU2V0Lk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFN0cmluZy5zZXhwX29mX2NvbXBhcmF0b3Jfd2l0bmVzcyxcbiAgICAgIGluc3RlYWQgeW91IHdvdWxkIHdhbnQgdG8gcGFzcyB0aGUgY29tcGFyYXRvciBkaXJlY3RseSkuICopXG4gIG1vZHVsZSBNIChFbHQgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgU2V0LiAqKVxuICBtb2R1bGUgUG9seSA6IFNfcG9seSB3aXRoIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAoKiogVXNpbmcgY29tcGFyYXRvciBpcyBhIHNpbWlsYXIgaW50ZXJmYWNlIGFzIHRoZSB0b3BsZXZlbCBvZiBbU2V0XSwgZXhjZXB0IHRoZSBmdW5jdGlvbnNcbiAgICAgIHRha2UgYSBbfmNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudF0gd2hlcmUgdGhlIGZ1bmN0aW9ucyBhdCB0aGUgdG9wbGV2ZWwgb2ZcbiAgICAgIFtTZXRdIHRha2VzIGEgWygnZWx0LCAnY21wKSBjb21wYXJhdG9yXS4gKilcbiAgbW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgdCA9ICgnZWx0LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdlbHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdlbHQsICdjbXApIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICA6ICBjb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgIC0+IFNleHAudFxuICAgICAgLT4gKCdlbHQsICdjbXApIHRcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICAoKiogQSBbVHJlZS50XSBjb250YWlucyBqdXN0IHRoZSB0cmVlIGRhdGEgc3RydWN0dXJlIHRoYXQgYSBzZXQgaXMgYmFzZWQgb24sIHdpdGhvdXRcbiAgICAgICAgICBpbmNsdWRpbmcgdGhlIGNvbXBhcmF0b3IuICBBY2NvcmRpbmdseSwgYW55IG9wZXJhdGlvbiBvbiBhIFtUcmVlLnRdIG11c3QgYWxzbyB0YWtlXG4gICAgICAgICAgYXMgYW4gYXJndW1lbnQgdGhlIGNvcnJlc3BvbmRpbmcgY29tcGFyYXRvci4gKilcbiAgICAgIHR5cGUgKCdhLCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICB2YWwgc2V4cF9vZl90XG4gICAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgICAtPiBTZXhwLnRcbiAgICAgICAgLT4gKCdlbHQsICdjbXApIHRcblxuICAgICAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICAgICAgeyB0cmVlIDogKCdhLCAnY21wKSB0XG4gICAgICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICAgICAgfVxuXG4gICAgICAgIHZhbCBpc19zdWJzZXRcbiAgICAgICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gb2ZfOignYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICAgIHZhbCBlcXVhbFxuICAgICAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50XG4gICAgICAgIHdpdGggbW9kdWxlIE5hbWVkIDo9IE5hbWVkXG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8pIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczJcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2VsdCBIYXNoLmZvbGRlciAtPiAoJ2VsdCwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtTZXRdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMwID0gQWNjZXNzb3JzMFxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gQWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gQWNjZXNzb3JzMlxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMwID0gQ3JlYXRvcnMwXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IENyZWF0b3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBDcmVhdG9yczJcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciA9IENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczAgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXRfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRW1wdHlcbiAgICAoKiAoTGVhZiB4KSBpcyB0aGUgc2FtZSBhcyAoTm9kZSAoRW1wdHksIHgsIEVtcHR5LCAxLCAxKSkgYnV0IHVzZXMgbGVzcyBzcGFjZS4gKilcbiAgICB8IExlYWYgb2YgJ2FcbiAgICAoKiBmaXJzdCBpbnQgaXMgaGVpZ2h0LCBzZWNvbmQgaXMgc3ViLXRyZWUgc2l6ZSAqKVxuICAgIHwgTm9kZSBvZiAnYSB0ICogJ2EgKiAnYSB0ICogaW50ICogaW50XG5cbiAgdHlwZSAnYSB0cmVlID0gJ2EgdFxuXG4gICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlIGNoaWxkcmVuIGRpZmZlciBieVxuICAgICBhdCBtb3N0IDIuICopXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2ID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9lbHQgbG93ZXIgdiA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2VsdCB2IHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiB2IC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgaCwgbikgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIG4gPSBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgdikgY29tcGFyZV9lbHQgbFxuICAgICAgICAmJiBsb29wIChTb21lIHYpIHVwcGVyIGNvbXBhcmVfZWx0IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2VsdCAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2VsdCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuICA7O1xuXG4gICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICBpZiBoID0gMVxuICAgIHRoZW4gTGVhZiB2XG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5TZXQgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGsgPSBmIGkgaW5cbiAgICAgICAgTGVhZiBrXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayBFbXB0eVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IgPSBmIChpICsgMikgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIChMZWFmIGtyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgKCogV2UgZG9uJ3QgY2hlY2sgaWYgdGhlIGFycmF5IGlzIHNvcnRlZCBvciBrZXlzIGFyZSBkdXBsaWNhdGVkLCBiZWNhdXNlIHRoYXRcbiAgICAgICAgIGNoZWNraW5nIGlzIHNsb3dlciB0aGFuIHRoZSB3aG9sZSBbb2Zfc29ydGVkX2FycmF5XSBmdW5jdGlvbiAqKVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMiB8fCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPiBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LihpKSBhcnJheS4oaSArIDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuXG4gICAgICAgICAgICAgICAgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpKVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICBsZXQgYmFsIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKGwpPmgocikrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBscnYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgbGwpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgRW1wdHkpIGxydiAoY3JlYXRlIEVtcHR5IHYgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgocik+aChsKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIHJsdiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBycik7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgRW1wdHkpIHJsdiAoY3JlYXRlIEVtcHR5IHJ2IHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGlmIGggPSAxIHRoZW4gTGVhZiB2IGVsc2UgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gIGV4Y2VwdGlvbiBTYW1lXG5cbiAgbGV0IGFkZCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiByYWlzZSBTYW1lXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBjcmVhdGUgKExlYWYgeCkgdiBFbXB0eVxuICAgICAgICBlbHNlIGNyZWF0ZSBFbXB0eSB2IChMZWFmIHgpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmFpc2UgU2FtZSBlbHNlIGlmIGMgPCAwIHRoZW4gYmFsIChhdXggbCkgdiByIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZSByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kXG4gICAgIHIuICopXG4gIGxldCByZWMgam9pbiBsIHYgciB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gYWRkIHIgdiB+Y29tcGFyZV9lbHRcbiAgICB8IF8sIEVtcHR5IC0+IGFkZCBsIHYgfmNvbXBhcmVfZWx0XG4gICAgfCBMZWFmIGx2LCBfIC0+IGFkZCAoYWRkIHIgdiB+Y29tcGFyZV9lbHQpIGx2IH5jb21wYXJlX2VsdFxuICAgIHwgXywgTGVhZiBydiAtPiBhZGQgKGFkZCBsIHYgfmNvbXBhcmVfZWx0KSBydiB+Y29tcGFyZV9lbHRcbiAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIGxoLCBfKSwgTm9kZSAocmwsIHJ2LCByciwgcmgsIF8pIC0+XG4gICAgICBpZiBsaCA+IHJoICsgMlxuICAgICAgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByIH5jb21wYXJlX2VsdClcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDJcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgdiBybCB+Y29tcGFyZV9lbHQpIHJ2IHJyXG4gICAgICBlbHNlIGNyZWF0ZSBsIHYgclxuICA7O1xuXG4gICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChFbXB0eSwgdiwgXywgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXQubWwuVHJlZTAuU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXQubWwuVHJlZTAuU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBhY2MgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLkNvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmIHZhbHVlIC0+IGYgYWNjIHZhbHVlXG4gICAgICB8IE5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIGxlZnQgYWNjIHdpdGhcbiAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIGFjYyB2YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICAgICB8IENvbnRpbnVlIGEgLT4gZm9sZF91bnRpbF9oZWxwZXIgfmYgcmlnaHQgYSkpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGluaXQgd2l0aFxuICAgIHwgQ29udGludWUgeCAtPiBmaW5pc2ggeFxuICAgIHwgU3RvcCB4IC0+IHhcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoXywgdiwgRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAoXywgXywgciwgXywgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGJhbCB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuICBsZXQgY29uY2F0IHQxIHQyIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPiBqb2luIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKSB+Y29tcGFyZV9lbHRcbiAgOztcblxuICBsZXQgc3BsaXQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBzcGxpdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIFNvbWUgdiwgRW1wdHlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIEVtcHR5LCBOb25lLCBMZWFmIHZcbiAgICAgICAgZWxzZSBMZWFmIHYsIE5vbmUsIEVtcHR5XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbCwgU29tZSB2LCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxsLCBtYXliZV9lbHQsIHJsID0gc3BsaXQgbCBpblxuICAgICAgICAgIGxsLCBtYXliZV9lbHQsIGpvaW4gcmwgdiByIH5jb21wYXJlX2VsdClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxyLCBtYXliZV9lbHQsIHJyID0gc3BsaXQgciBpblxuICAgICAgICAgIGpvaW4gbCB2IGxyIH5jb21wYXJlX2VsdCwgbWF5YmVfZWx0LCBycilcbiAgICBpblxuICAgIHNwbGl0IHRcbiAgOztcblxuICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCByZWMgbWVtIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gZmFsc2VcbiAgICB8IExlYWYgdiAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwIHx8IG1lbSAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9lbHRcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIHggPSBMZWFmIHhcblxuICBsZXQgcmVtb3ZlIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIFNhbWVcbiAgICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA9IDAgdGhlbiBFbXB0eSBlbHNlIHJhaXNlIFNhbWVcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHIgZWxzZSBpZiBjIDwgMCB0aGVuIGJhbCAoYXV4IGwpIHYgciBlbHNlIGJhbCBsIHYgKGF1eCByKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCByZW1vdmVfaW5kZXggdCBpIH5jb21wYXJlX2VsdDpfID1cbiAgICBsZXQgcmVjIGF1eCB0IGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIFNhbWVcbiAgICAgIHwgTGVhZiBfIC0+IGlmIGkgPSAwIHRoZW4gRW1wdHkgZWxzZSByYWlzZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCBpKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IGkgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHVuaW9uIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICAgICAgfCBMZWFmIHYxLCBfIC0+IHVuaW9uIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgczJcbiAgICAgICAgfCBfLCBMZWFmIHYyIC0+IHVuaW9uIHMxIChOb2RlIChFbXB0eSwgdjIsIEVtcHR5LCAxLCAxKSlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBoMSwgXyksIE5vZGUgKGwyLCB2MiwgcjIsIGgyLCBfKSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxXG4gICAgICAgICAgICB0aGVuIGFkZCBzMSB2MiB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbDIsIF8sIHIyID0gc3BsaXQgczIgdjEgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpIH5jb21wYXJlX2VsdClcbiAgICAgICAgICBlbHNlIGlmIGgxID0gMVxuICAgICAgICAgIHRoZW4gYWRkIHMyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwxLCBfLCByMSA9IHNwbGl0IHMxIHYyIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMikgfmNvbXBhcmVfZWx0KSlcbiAgICBpblxuICAgIHVuaW9uIHMxIHMyXG4gIDs7XG5cbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgeHMgPVxuICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgTGlzdC5mb2xkIHhzIH5pbml0OmVtcHR5IH5mOihmdW4gYWMgeCAtPiB1bmlvbiBhYyAodG9fdHJlZSB4KSB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IGludGVyIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgKExlYWYgZWx0IGFzIHNpbmdsZXRvbiksIG90aGVyX3NldCB8IG90aGVyX3NldCwgKExlYWYgZWx0IGFzIHNpbmdsZXRvbikgLT5cbiAgICAgICAgICBpZiBtZW0gb3RoZXJfc2V0IGVsdCB+Y29tcGFyZV9lbHQgdGhlbiBzaW5nbGV0b24gZWxzZSBFbXB0eVxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgICAgIChtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICAgICB8IGwyLCBOb25lLCByMiAtPiBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpIH5jb21wYXJlX2VsdFxuICAgICAgICAgICB8IGwyLCBTb21lIHYxLCByMiAtPiBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKSB+Y29tcGFyZV9lbHQpKVxuICAgIGluXG4gICAgaW50ZXIgczEgczJcbiAgOztcblxuICBsZXQgZGlmZiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIEVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgXyAtPiBFbXB0eVxuICAgICAgICB8IHQxLCBFbXB0eSAtPiB0MVxuICAgICAgICB8IExlYWYgdjEsIHQyIC0+IGRpZmYgKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSB0MlxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgICAgIChtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICAgICB8IGwyLCBOb25lLCByMiAtPiBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMikgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgIHwgbDIsIFNvbWUgXywgcjIgLT4gY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMikgfmNvbXBhcmVfZWx0KSlcbiAgICBpblxuICAgIGRpZmYgczEgczJcbiAgOztcblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2EsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnYSAqICdhIHRyZWUgKiAoJ2EsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyBzIChlIDogKF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgcyAoZSA6IChfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NldCBzIDogKF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHMgRW5kXG4gICAgbGV0IG9mX3NldF9yaWdodCBzIDogKF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHMgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIHIsIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCByIChNb3JlICh2LCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGUxIGUyID1cbiAgICAgIGxldCByZWMgbG9vcCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIHIxLCBlMSksIE1vcmUgKHYyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgaWYgcGh5c19lcXVhbCByMSByMlxuICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpXG4gICAgICBpblxuICAgICAgbG9vcCBlMSBlMlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGl0ZXIgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gKClcbiAgICAgIHwgTW9yZSAoYSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgZiBhO1xuICAgICAgICBpdGVyIChjb25zIHRyZWUgZW51bSkgfmZcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIyIGNvbXBhcmVfZWx0IHQxIHQyIH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gKClcbiAgICAgICAgfCBFbmQsIF8gLT4gaXRlciB0MiB+ZjooZnVuIGEgLT4gZiAoYFJpZ2h0IGEpKVxuICAgICAgICB8IF8sIEVuZCAtPiBpdGVyIHQxIH5mOihmdW4gYSAtPiBmIChgTGVmdCBhKSlcbiAgICAgICAgfCBNb3JlIChhMSwgdHJlZTEsIGVudW0xKSwgTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCBhMSBhMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYEJvdGggKGExLCBhMikpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgTGVmdCBhMSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MilcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGYgKGBSaWdodCBhMik7XG4gICAgICAgICAgICBsb29wIHQxIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgOiAoKF8sIF8pIEVpdGhlci50LCBfKSBTZXF1ZW5jZS5TdGVwLnQgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSAtPiBZaWVsZCAoU2Vjb25kIGVsdCwgKEVuZCwgY29ucyB0cmVlIGVudW0pKVxuICAgICAgICB8IE1vcmUgKGVsdCwgdHJlZSwgZW51bSksIEVuZCAtPiBZaWVsZCAoRmlyc3QgZWx0LCAoY29ucyB0cmVlIGVudW0sIEVuZCkpXG4gICAgICAgIHwgKE1vcmUgKGExLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTa2lwIG5leHRfc3RhdGUpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIFlpZWxkIChGaXJzdCBhMSwgKGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0KSlcbiAgICAgICAgICBlbHNlIFlpZWxkIChTZWNvbmQgYTIsIChsZWZ0LCBjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDoob2Zfc2V0IHQxLCBvZl9zZXQgdDIpIH5mOnN0ZXBcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkIChrLCBFbnVtLmNvbnMgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoaywgRW51bS5jb25zX3JpZ2h0IHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldF9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZylcbiAgICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgZWx0IC0+IGFkZCB0IGVsdCB+Y29tcGFyZV9lbHRcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGxlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6Z3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0Omxlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgeCA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodFxuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZylcbiAgICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgICAgICB0J1xuICAgID1cbiAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0KVxuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQnKVxuICAgICAgfmNvbXBhcmU6XG4gICAgICAgIChtYXRjaCBvcmRlciB3aXRoXG4gICAgICAgICB8IGBJbmNyZWFzaW5nIC0+IGNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgfCBgRGVjcmVhc2luZyAtPiBGbi5mbGlwIGNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBzMSBzMiA9XG4gICAgRW51bS5jb21wYXJlIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKVxuICA7O1xuXG4gIGxldCBpdGVyMiBzMSBzMiB+Y29tcGFyZV9lbHQgPSBFbnVtLml0ZXIyIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKVxuICBsZXQgZXF1YWwgczEgczIgfmNvbXBhcmVfZWx0ID0gY29tcGFyZSBjb21wYXJlX2VsdCBzMSBzMiA9IDBcblxuICBsZXQgaXNfc3Vic2V0IHMxIH5vZl86czIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGlzX3N1YnNldCBzMSB+b2ZfOnMyID1cbiAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICB8IEVtcHR5LCBfIC0+IHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTGVhZiB2MSwgdDIgLT4gbWVtIHQyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgTGVhZiB2MiAtPlxuICAgICAgICAobWF0Y2ggbDEsIHIxIHdpdGhcbiAgICAgICAgIHwgRW1wdHksIEVtcHR5IC0+XG4gICAgICAgICAgICgqIFRoaXMgY2FzZSBzaG91bGRuJ3Qgb2NjdXIgaW4gcHJhY3RpY2UgYmVjYXVzZSB3ZSBzaG91bGQgaGF2ZSBjb25zdHJ1Y3RlZFxuICAgICAgICAgICAgICBhIExlYWYgcmF0aGVyIHRoYW4gYSBOb2RlIHdpdGggdHdvIEVtcHR5IHN1YnRyZWVzICopXG4gICAgICAgICAgIGNvbXBhcmVfZWx0IHYxIHYyID0gMFxuICAgICAgICAgfCBfLCBfIC0+IGZhbHNlKVxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgKE5vZGUgKGwyLCB2MiwgcjIsIF8sIF8pIGFzIHQyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBwaHlzX2VxdWFsIHMxIHMyIHx8IChpc19zdWJzZXQgbDEgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzpyMilcbiAgICAgICAgICAoKiBOb3RlIHRoYXQgaGVpZ2h0IGFuZCBzaXplIGRvbid0IG1hdHRlciBoZXJlLiAqKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gaXNfc3Vic2V0IChOb2RlIChsMSwgdjEsIEVtcHR5LCAwLCAwKSkgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzp0MlxuICAgICAgICBlbHNlIGlzX3N1YnNldCAoTm9kZSAoRW1wdHksIHYxLCByMSwgMCwgMCkpIH5vZl86cjIgJiYgaXNfc3Vic2V0IGwxIH5vZl86dDJcbiAgICBpblxuICAgIGlzX3N1YnNldCBzMSB+b2ZfOnMyXG4gIDs7XG5cbiAgbGV0IHJlYyBhcmVfZGlzam9pbnQgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIGVsdCwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCBMZWFmIGVsdCAtPiBub3QgKG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdClcbiAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBmYWxzZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+XG4gICAgICAgICAgYXJlX2Rpc2pvaW50IGwxIGwyIH5jb21wYXJlX2VsdCAmJiBhcmVfZGlzam9pbnQgcjEgcjIgfmNvbXBhcmVfZWx0XG4gICAgICAgIHwgXywgU29tZSBfLCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IExlYWYgdiAtPiBmIHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgaXRlciBsO1xuICAgICAgICBmIHY7XG4gICAgICAgIGl0ZXIgclxuICAgIGluXG4gICAgaXRlciB0XG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCByZWMgZm9sZCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgYWNjdSB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkIH5mIHIgfmluaXQ6KGYgKGZvbGQgfmYgbCB+aW5pdDphY2N1KSB2KVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2VsZW0gc3RhdGUgdCA9XG4gICAgZm9sZCB0IH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpIH5mOmhhc2hfZm9sZF9lbGVtXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5cbiAgbGV0IHJlYyBmb2xkX3JpZ2h0IHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiB2IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB2IChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb3JfYWxsIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgJiYgZm9yX2FsbCB+ZjpwIGwgJiYgZm9yX2FsbCB+ZjpwIHJcbiAgOztcblxuICBsZXQgcmVjIGV4aXN0cyB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gZmFsc2VcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiB8fCBleGlzdHMgfmY6cCBsIHx8IGV4aXN0cyB+ZjpwIHJcbiAgOztcblxuICBsZXQgZmlsdGVyIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT4gaWYgcCB2IHRoZW4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQgZWxzZSBhY2N1XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGZpbHQgKGZpbHQgKGlmIHAgdiB0aGVuIGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0IGVsc2UgYWNjdSkgbCkgclxuICAgIGluXG4gICAgZmlsdCBFbXB0eSBzXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdFxuICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgclxuICAgIGluXG4gICAgZmlsdCBFbXB0eSBzXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHBhcnQgKCh0LCBmKSBhcyBhY2N1KSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+IGlmIHAgdiB0aGVuIGFkZCB0IHYgfmNvbXBhcmVfZWx0LCBmIGVsc2UgdCwgYWRkIGYgdiB+Y29tcGFyZV9lbHRcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgcGFydCAocGFydCAoaWYgcCB2IHRoZW4gYWRkIHQgdiB+Y29tcGFyZV9lbHQsIGYgZWxzZSB0LCBhZGQgZiB2IH5jb21wYXJlX2VsdCkgbCkgclxuICAgIGluXG4gICAgcGFydCAoRW1wdHksIEVtcHR5KSBzXG4gIDs7XG5cbiAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gdiA6OiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuICA7O1xuXG4gIGxldCBlbGVtZW50cyBzID0gZWxlbWVudHNfYXV4IFtdIHNcblxuICBsZXQgY2hvb3NlIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IFNvbWUgdlxuICAgIHwgTm9kZSAoXywgdiwgXywgXywgXykgLT4gU29tZSB2XG4gIDs7XG5cbiAgbGV0IGNob29zZV9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlNldC5jaG9vc2VfZXhuOiBlbXB0eSBzZXRcIikgaW5cbiAgICBsZXQgY2hvb3NlX2V4biB0ID1cbiAgICAgIG1hdGNoIGNob29zZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBjaG9vc2VfZXhuXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgbHN0IH5jb21wYXJlX2VsdCA9XG4gICAgTGlzdC5mb2xkIGxzdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgfmNvbXBhcmVfZWx0ID1cbiAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCB0b19saXN0IHMgPSBlbGVtZW50cyBzXG5cbiAgbGV0IG9mX2FycmF5IGEgfmNvbXBhcmVfZWx0ID1cbiAgICBBcnJheS5mb2xkIGEgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgKCogZmFzdGVyIGJ1dCBlcXVpdmFsZW50IHRvIFtBcnJheS5vZl9saXN0ICh0b19saXN0IHQpXSAqKVxuICBsZXQgdG9fYXJyYXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gW3x8XVxuICAgIHwgTGVhZiB2IC0+IFt8IHYgfF1cbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIHMpIC0+XG4gICAgICBsZXQgcmVzID0gQXJyYXkuY3JlYXRlIH5sZW46cyB2IGluXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICAoKiBJbnZhcmlhbnQ6IG9uIGVudHJ5IGFuZCBvbiBleGl0IHRvIFtsb29wXSwgIXBvc19yZWYgaXMgdGhlIG5leHRcbiAgICAgICAgICAgYXZhaWxhYmxlIGNlbGwgaW4gdGhlIGFycmF5LiAqKVxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWZcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICAgIGxvb3AgbDtcbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgICAgICBsb29wIHJcbiAgICAgIGluXG4gICAgICBsb29wIGw7XG4gICAgICAoKiByZXMuKCFwb3NfcmVmKSBpcyBhbHJlYWR5IGluaXRpYWxpemVkIChieSBBcnJheS5jcmVhdGUgfmxlbjphYm92ZSkuICopXG4gICAgICBpbmNyIHBvc19yZWY7XG4gICAgICBsb29wIHI7XG4gICAgICByZXNcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgfmNvbXBhcmVfZWx0ID0gZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IChmIHgpIH5jb21wYXJlX2VsdClcblxuICBsZXQgZ3JvdXBfYnkgc2V0IH5lcXVpdiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCBzZXQgZXF1aXZfY2xhc3NlcyA9XG4gICAgICBpZiBpc19lbXB0eSBzZXRcbiAgICAgIHRoZW4gZXF1aXZfY2xhc3Nlc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB4ID0gY2hvb3NlX2V4biBzZXQgaW5cbiAgICAgICAgbGV0IGVxdWl2X3gsIG5vdF9lcXVpdl94ID1cbiAgICAgICAgICBwYXJ0aXRpb25fdGYgc2V0IH5mOihmdW4gZWx0IC0+IHBoeXNfZXF1YWwgeCBlbHQgfHwgZXF1aXYgeCBlbHQpIH5jb21wYXJlX2VsdFxuICAgICAgICBpblxuICAgICAgICBsb29wIG5vdF9lcXVpdl94IChlcXVpdl94IDo6IGVxdWl2X2NsYXNzZXMpKVxuICAgIGluXG4gICAgbG9vcCBzZXQgW11cbiAgOztcblxuICBsZXQgcmVjIGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiBTb21lIHZcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBmaW5kIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmluZCByIH5mXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbWFwIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIChtYXRjaCBmIHYgd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgKG1hdGNoIGZpbmRfbWFwIGwgfmYgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCByIH5mXG4gICAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKSlcbiAgOztcblxuICBsZXQgZmluZF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXQuZmluZF9leG4gZmFpbGVkIHRvIGZpbmQgYSBtYXRjaGluZyBlbGVtZW50XCJcbiAgICB8IFNvbWUgZSAtPiBlXG4gIDs7XG5cbiAgbGV0IHJlYyBudGggdCBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBpID0gMCB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIHMpIC0+XG4gICAgICBpZiBpID49IHNcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjIDwgMCB0aGVuIG50aCBsIGkgZWxzZSBpZiBjID0gMCB0aGVuIFNvbWUgdiBlbHNlIG50aCByIChpIC0gbF9zaXplIC0gMSkpXG4gIDs7XG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBsb29wIHhzIGxlZnRvdmVycyBhbHJlYWR5X3NlZW4gPVxuICAgICAgbWF0Y2ggeHMgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBsZWZ0b3ZlcnNcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgaWYgbWVtIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHRcbiAgICAgICAgdGhlbiBsb29wIHRsIGxlZnRvdmVycyBhbHJlYWR5X3NlZW5cbiAgICAgICAgZWxzZSBsb29wIHRsIChoZCA6OiBsZWZ0b3ZlcnMpIChhZGQgYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdClcbiAgICBpblxuICAgIGxvb3AgeHMgW10gZW1wdHlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBhX29mX3NleHAgc2V4cCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5MaXN0IGxzdCAtPlxuICAgICAgbGV0IGVsdF9sc3QgPSBMaXN0Lm1hcCBsc3QgfmY6YV9vZl9zZXhwIGluXG4gICAgICBsZXQgc2V0ID0gb2ZfbGlzdCBlbHRfbHN0IH5jb21wYXJlX2VsdCBpblxuICAgICAgaWYgbGVuZ3RoIHNldCA9IExpc3QubGVuZ3RoIGxzdFxuICAgICAgdGhlbiBzZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2V0ID0gcmVmIGVtcHR5IGluXG4gICAgICAgIExpc3QuaXRlcjJfZXhuIGxzdCBlbHRfbHN0IH5mOihmdW4gZWxfc2V4cCBlbCAtPlxuICAgICAgICAgIGlmIG1lbSAhc2V0IGVsIH5jb21wYXJlX2VsdFxuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGR1cGxpY2F0ZSBlbGVtZW50IGluIHNldFwiIGVsX3NleHBcbiAgICAgICAgICBlbHNlIHNldCA6PSBhZGQgIXNldCBlbCB+Y29tcGFyZV9lbHQpO1xuICAgICAgICBhc3NlcnQgZmFsc2UpXG4gICAgfCBzZXhwIC0+IG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsIGFjYyAtPiBzZXhwX29mX2EgZWwgOjogYWNjKSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgeyB0cmVlIDogJ2EgdFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICBsZXQgaXNfc3Vic2V0IChzdWJzZXQgOiBfIHQpIH5vZl86KHN1cGVyc2V0IDogXyB0KSB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIGxldCBpbnZhbGlkX2VsZW1lbnRzID0gZGlmZiBzdWJzZXQudHJlZSBzdXBlcnNldC50cmVlIH5jb21wYXJlX2VsdCBpblxuICAgICAgaWYgaXNfZW1wdHkgaW52YWxpZF9lbGVtZW50c1xuICAgICAgdGhlbiBPayAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgPSBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgaW52YWxpZF9lbGVtZW50cyBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIChzdWJzZXQubmFtZSBeIFwiIGlzIG5vdCBhIHN1YnNldCBvZiBcIiBeIHN1cGVyc2V0Lm5hbWUpXG4gICAgICAgICAgICAgWyBcImludmFsaWRfZWxlbWVudHNcIiwgaW52YWxpZF9lbGVtZW50c19zZXhwIF0pKVxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgczEgczIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdCA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAgIFsgaXNfc3Vic2V0IHMxIH5vZl86czIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICA7IGlzX3N1YnNldCBzMiB+b2ZfOnMxIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdhLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICdhIFRyZWUwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAnYSBUcmVlMC50XG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGNvbXBhcmF0b3IgfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yIH1cbmxldCBjb21wYXJlX2VsdCB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcbiAgbGV0IGludmFyaWFudHMgdCA9IFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHQudHJlZVxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHQudHJlZVxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUwLmVsZW1lbnRzIHQudHJlZVxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0LnRyZWVcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0LnRyZWVcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdC50cmVlXG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdC50cmVlXG4gIGxldCBjaG9vc2UgdCA9IFRyZWUwLmNob29zZSB0LnRyZWVcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUwLmNob29zZV9leG4gdC50cmVlXG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHQudHJlZVxuICBsZXQgdG9fYXJyYXkgdCA9IFRyZWUwLnRvX2FycmF5IHQudHJlZVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQudHJlZSB+ZlxuICBsZXQgaXRlcjIgYSBiIH5mID0gVHJlZTAuaXRlcjIgYS50cmVlIGIudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdC50cmVlIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQudHJlZSB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQudHJlZSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQudHJlZSB+ZlxuICBsZXQgbWVtIHQgYSA9IFRyZWUwLm1lbSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgYWRkIHQgYSA9IGxpa2UgdCAoVHJlZTAuYWRkIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCByZW1vdmUgdCBhID0gbGlrZSB0IChUcmVlMC5yZW1vdmUgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAudW5pb24gdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgaW50ZXIgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5pbnRlciB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBkaWZmIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjb21wYXJlX2VsdCB0MSkgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0LnRyZWUgfm9mXzpvZl8udHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICB7IHNldCA6ICgnYSwgJ2NtcCkgdFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICBsZXQgdG9fbmFtZWRfdHJlZSB7IHNldDsgbmFtZSB9ID0geyBUcmVlMC5OYW1lZC50cmVlID0gc2V0LnRyZWU7IG5hbWUgfVxuXG4gICAgbGV0IGlzX3N1YnNldCAoc3Vic2V0IDogKF8sIF8pIHQpIH5vZl86KHN1cGVyc2V0IDogKF8sIF8pIHQpID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICAodG9fbmFtZWRfdHJlZSBzdWJzZXQpXG4gICAgICAgIH5vZl86KHRvX25hbWVkX3RyZWUgc3VwZXJzZXQpXG4gICAgICAgIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgc3Vic2V0LnNldClcbiAgICAgICAgfnNleHBfb2ZfZWx0OnN1YnNldC5zZXQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHQxIHQyID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXQgWyBpc19zdWJzZXQgdDEgfm9mXzp0MjsgaXNfc3Vic2V0IHQyIH5vZl86dDEgXVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgbGV0IHRyZWVfdCwgdHJlZV9mID0gVHJlZTAucGFydGl0aW9uX3RmIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWVfdCwgbGlrZSB0IHRyZWVfZlxuICA7O1xuXG4gIGxldCBzcGxpdCB0IGEgPVxuICAgIGxldCB0cmVlMSwgYiwgdHJlZTIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBiLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPVxuICAgIExpc3QubWFwIChUcmVlMC5ncm91cF9ieSB0LnRyZWUgfmVxdWl2IH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpIH5mOihsaWtlIHQpXG4gIDs7XG5cbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdC50cmVlIGlcbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZV9pbmRleCB0LnRyZWUgaSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgdC5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgICAgIHQnLnRyZWVcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQudHJlZVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9ICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgY2UgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKSBhX29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBlID0gVHJlZTAuc2luZ2xldG9uIGVcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9IFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUwLmVsZW1lbnRzIHRcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHRcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUwLmNob29zZV9leG4gdFxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0XG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0IH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF91bnRpbCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAubWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5maWx0ZXIgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgcGFydGl0aW9uX3RmIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhIGIgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLm1lbSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLmFkZCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnJlbW92ZSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb24gfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC51bmlvbiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpbnRlciB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmludGVyIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGRpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjZSBjb21wYXJhdG9yKSB0MSB0MlxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC51bmlvbl9saXN0IGwgfnRvX3RyZWU6Rm4uaWQgfmNvbXBhcmF0b3JcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgfmNvbXBhcmF0b3IgdCB+ZXF1aXYgPSBUcmVlMC5ncm91cF9ieSB0IH5lcXVpdiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0IGlcbiAgbGV0IHJlbW92ZV9pbmRleCB+Y29tcGFyYXRvciB0IGkgPSBUcmVlMC5yZW1vdmVfaW5kZXggdCBpIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdCA9IHRcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCdcbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlMC5OYW1lZFxuXG4gICAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0MSB+b2ZfOnQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICB0MVxuICAgICAgICB+b2ZfOnQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmVxdWFsXG4gICAgICAgIHQxXG4gICAgICAgIHQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgdCA9ICgnZWx0LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuY29tcGFyZSBhX29mX3NleHAgc2V4cClcbiAgOztcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG4gIGVuZFxuXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgZSA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBlIH1cblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC51bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIGwpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIGxldCB0cmVlID1cbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLk1vbmFkX2luZml4LihcbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgID4+fCBmdW4gdHJlZSAtPiB7IGNvbXBhcmF0b3I7IHRyZWUgfSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm1hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3JcbiAgICA7IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB9XG4gIDs7XG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxudHlwZSAoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBlbHQgY21wKSAoKG1vZHVsZSBNKSA6IChlbHQsIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgdW5pb25fbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgfmxlbiB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX3NlcXVlbmNlIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgc3RhYmxlX2RlZHVwX2xpc3QgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5zdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCBmaWx0ZXJfbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IuZmlsdGVyX21hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5cbm1vZHVsZSBNIChFbHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gZWx0KSB0ID1cbiAgc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgZWx0IGNtcClcbiAgICAgIChtb2R1bGUgRWx0IDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHNleHBcbiAgPVxuICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3I6RWx0LmNvbXBhcmF0b3IgRWx0LnRfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gZWx0KVxuICA6IChlbHQsIF8pIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgdDEgdDIgPSBlcXVhbCB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gZWx0KSBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlXG47O1xuXG5sZXQgaGFzaF9tX190IGZvbGRlciB0ID1cbiAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX21fX3QgZm9sZGVyIChIYXNoLmNyZWF0ZSAoKSkgdCBpblxuICBIYXNoLmdldF9oYXNoX3ZhbHVlIHN0YXRlXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHNldCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHRyZWUgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0cmVlXG4gIHR5cGUgbm9ucmVjICdlbHQgbmFtZWQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSBOYW1lZC50XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCB1bmlvbl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgYVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9zZXF1ZW5jZSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5zdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBtYXAgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IGZpbHRlcl9tYXAgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IuZmlsdGVyX21hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfcmVmXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPSBlcXVhbF9yZWZcbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IHJlZl9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX3JlZlxuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gcmVmX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG4oKiBJbiB0aGUgZGVmaW5pdGlvbiBvZiBbdF0sIHdlIGRvIG5vdCBoYXZlIFtbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXV0gYmVjYXVzZVxuICAgaW4gZ2VuZXJhbCwgc3ludGF4IGV4dGVuc2lvbnMgdGVuZCB0byB1c2UgdGhlIGltcGxlbWVudGF0aW9uIHdoZW4gYXZhaWxhYmxlIHJhdGhlciB0aGFuXG4gICB1c2luZyB0aGUgYWxpYXMuICBIZXJlIHRoYXQgd291bGQgbGVhZCB0byB1c2UgdGhlIHJlY29yZCByZXByZXNlbnRhdGlvbiBbIHsgbXV0YWJsZVxuICAgY29udGVudHMgOiAnYSB9IF0gd2hpY2ggd291bGQgcmVzdWx0IGluIGRpZmZlcmVudCAoYW5kIHVud2FudGVkKSBiZWhhdmlvci4gICopXG50eXBlICdhIHQgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbmV4dGVybmFsIGNyZWF0ZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHQgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgdCAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxubGV0IHN3YXAgdDEgdDIgPVxuICBsZXQgdG1wID0gIXQxIGluXG4gIHQxIDo9ICF0MjtcbiAgdDIgOj0gdG1wXG47O1xuXG5sZXQgcmVwbGFjZSB0IGYgPSB0IDo9IGYgIXRcblxubGV0IHNldF90ZW1wb3JhcmlseSB0IGEgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9ICF0IGluXG4gIHQgOj0gYTtcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0IDo9IHJlc3RvcmVfdG8pXG47O1xuXG5tb2R1bGUgQW5kX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgdCA9IFQgOiAnYSByZWYgKiAnYSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNldCAoVCAociwgYSkpID0gciA6PSBhXG4gIGxldCBzZXRzIHRzID0gTGlzdC5pdGVyIHRzIH5mOnNldFxuICBsZXQgc25hcHNob3QgKFQgKHIsIF8pKSA9IFQgKHIsICFyKVxuICBsZXQgc25hcHNob3RzIHRzID0gTGlzdC5tYXAgdHMgfmY6c25hcHNob3RcbmVuZFxuXG5sZXQgc2V0c190ZW1wb3JhcmlseSBhbmRfdmFsdWVzIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSBBbmRfdmFsdWUuc25hcHNob3RzIGFuZF92YWx1ZXMgaW5cbiAgQW5kX3ZhbHVlLnNldHMgYW5kX3ZhbHVlcztcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBBbmRfdmFsdWUuc2V0cyByZXN0b3JlX3RvKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5cbigqIFt0XSBzdG9yZXMgdGhlIFt0Lmxlbmd0aF0gcXVldWUgZWxlbWVudHMgYXQgY29uc2VjdXRpdmUgaW5jcmVhc2luZyBpbmRpY2VzIG9mIFt0LmVsdHNdLFxuICAgbW9kIHRoZSBjYXBhY2l0eSBvZiBbdF0sIHdoaWNoIGlzIFtPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICBUaGUgY2FwYWNpdHkgaXNcbiAgIHJlcXVpcmVkIHRvIGJlIGEgcG93ZXIgb2YgdHdvICh1c2VyLXJlcXVlc3RlZCBjYXBhY2l0aWVzIGFyZSByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0XG4gICBwb3dlciksIHNvIHRoYXQgbW9kIGNhbiBxdWlja2x5IGJlIGNvbXB1dGVkIHVzaW5nIFtsYW5kIHQubWFza10sIHdoZXJlIFt0Lm1hc2sgPVxuICAgY2FwYWNpdHkgdCAtIDFdLiAgU28sIHF1ZXVlIGVsZW1lbnQgW2ldIGlzIGF0IFt0LmVsdHMuKCAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICldLlxuXG4gICBbbnVtX211dGF0aW9uc10gaXMgdXNlZCB0byBkZXRlY3QgbW9kaWZpY2F0aW9uIGR1cmluZyBpdGVyYXRpb24uICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbnVtX211dGF0aW9ucyA6IGludFxuICA7IG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfXG4gICAgeyBudW1fbXV0YXRpb25zID0gbnVtX211dGF0aW9uc19fMDAzX1xuICAgIDsgZnJvbnQgPSBmcm9udF9fMDA1X1xuICAgIDsgbWFzayA9IG1hc2tfXzAwN19cbiAgICA7IGxlbmd0aCA9IGxlbmd0aF9fMDA5X1xuICAgIDsgZWx0cyA9IGVsdHNfXzAxMV9cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAwMl8gPSBbXSBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAxMl8gPSBPcHRpb25fYXJyYXkuc2V4cF9vZl90IF9vZl9hX18wMDFfIGVsdHNfXzAxMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDA5XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBtYXNrX18wMDdfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXNrXCI7IGFyZ19fMDA4XyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwNl8gPSBzZXhwX29mX2ludCBmcm9udF9fMDA1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZnJvbnRcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IG51bV9tdXRhdGlvbnNfXzAwM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm51bV9tdXRhdGlvbnNcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSB0eXBlIFMgPSBRdWV1ZV9pbnRmLlNcblxubGV0IGluY19udW1fbXV0YXRpb25zIHQgPSB0Lm51bV9tdXRhdGlvbnMgPC0gdC5udW1fbXV0YXRpb25zICsgMVxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5sZXQgZWx0c19pbmRleCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9pc19zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9pc19zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgYSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSkgYVxubGV0IHVuc2FmZV91bnNldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5cbmxldCBjaGVja19pbmRleF9leG4gdCBpID1cbiAgaWYgaSA8IDAgfHwgaSA+PSB0Lmxlbmd0aFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJRdWV1ZSBpbmRleCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIFsgXCJpbmRleFwiLCBpIHw+IEludC5zZXhwX29mX3Q7IFwibGVuZ3RoXCIsIHQubGVuZ3RoIHw+IEludC5zZXhwX29mX3QgXSlcbjs7XG5cbmxldCBnZXQgdCBpID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgdW5zYWZlX2dldCB0IGlcbjs7XG5cbmxldCBzZXQgdCBpIGEgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICB1bnNhZmVfc2V0IHQgaSBhXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxubGV0IGxlbmd0aCB7IGxlbmd0aDsgXyB9ID0gbGVuZ3RoXG5cbmxldCBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zID1cbiAgaWYgdC5udW1fbXV0YXRpb25zIDw+IG51bV9tdXRhdGlvbnNcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwibXV0YXRpb24gb2YgcXVldWUgZHVyaW5nIGl0ZXJhdGlvblwiXG4gICAgICAgICBbIFwiXCIsIHQgfD4gc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIF0pXG47O1xuXG5sZXQgY29tcGFyZSA9XG4gIGxldCByZWMgdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCBwb3MgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MiA9XG4gICAgbWF0Y2ggcG9zID0gbGVuMSwgcG9zID0gbGVuMiB3aXRoXG4gICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgIGxldCB4ID0gY29tcGFyZV9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgMCAtPiB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyXG4gICAgICAgfCBuIC0+IG4pXG4gIGluXG4gIGZ1biBjb21wYXJlX2VsdCB0MSB0MiAtPlxuICAgIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB0aGVuIDBcbiAgICBlbHNlXG4gICAgICB1bnNhZmVfY29tcGFyZV9mcm9tXG4gICAgICAgIGNvbXBhcmVfZWx0XG4gICAgICAgIDBcbiAgICAgICAgfnQxXG4gICAgICAgIH50MlxuICAgICAgICB+bGVuMTp0MS5sZW5ndGhcbiAgICAgICAgfmxlbjI6dDIubGVuZ3RoXG4gICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGVxdWFsID1cbiAgbGV0IHJlYyB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgcG9zIH50MSB+dDIgfm11dDEgfm11dDIgfmxlbiA9XG4gICAgcG9zID0gbGVuXG4gICAgfHxcbiAgICBsZXQgYiA9IGVxdWFsX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICBiICYmIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuXG4gIGluXG4gIGZ1biBlcXVhbF9lbHQgdDEgdDIgLT5cbiAgICBwaHlzX2VxdWFsIHQxIHQyXG4gICAgfHxcbiAgICBsZXQgbGVuMSA9IHQxLmxlbmd0aCBpblxuICAgIGxldCBsZW4yID0gdDIubGVuZ3RoIGluXG4gICAgbGVuMSA9IGxlbjJcbiAgICAmJiB1bnNhZmVfZXF1YWxfZnJvbVxuICAgICAgICAgZXF1YWxfZWx0XG4gICAgICAgICAwXG4gICAgICAgICB+dDFcbiAgICAgICAgIH50MlxuICAgICAgICAgfmxlbjpsZW4xXG4gICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgeyBudW1fbXV0YXRpb25zOyBtYXNrID0gXzsgZWx0czsgZnJvbnQ7IGxlbmd0aCB9ID0gdCBpblxuICBhc3NlcnQgKGZyb250ID49IDApO1xuICBhc3NlcnQgKGZyb250IDwgY2FwYWNpdHkgdCk7XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgYXNzZXJ0IChjYXBhY2l0eSA9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gIGFzc2VydCAoY2FwYWNpdHkgPj0gMSk7XG4gIGFzc2VydCAoSW50LmlzX3BvdzIgY2FwYWNpdHkpO1xuICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkpO1xuICBmb3IgaSA9IDAgdG8gY2FwYWNpdHkgLSAxIGRvXG4gICAgaWYgaSA8IHQubGVuZ3RoXG4gICAgdGhlbiAoXG4gICAgICBpbnZhcmlhbnRfYSAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucylcbiAgICBlbHNlIGFzc2VydCAobm90ICh1bnNhZmVfaXNfc2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgP2NhcGFjaXR5ICgpIDogYSB0ID1cbiAgbGV0IGNhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IDFcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiY2Fubm90IGhhdmUgcXVldWUgd2l0aCBuZWdhdGl2ZSBjYXBhY2l0eVwiXG4gICAgICAgICAgICAgWyBcImNhcGFjaXR5XCIsIGNhcGFjaXR5IHw+IEludC5zZXhwX29mX3QgXSlcbiAgICAgIGVsc2UgaWYgY2FwYWNpdHkgPSAwXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgSW50LmNlaWxfcG93MiBjYXBhY2l0eVxuICBpblxuICB7IG51bV9tdXRhdGlvbnMgPSAwXG4gIDsgZnJvbnQgPSAwXG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGxlbmd0aCA9IDBcbiAgOyBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmNhcGFjaXR5XG4gIH1cbjs7XG5cbmxldCBibGl0X3RvX2FycmF5IH5zcmMgZHN0ID1cbiAgYXNzZXJ0IChzcmMubGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZHN0KTtcbiAgbGV0IGZyb250X2xlbiA9IEludC5taW4gc3JjLmxlbmd0aCAoY2FwYWNpdHkgc3JjIC0gc3JjLmZyb250KSBpblxuICBsZXQgcmVzdF9sZW4gPSBzcmMubGVuZ3RoIC0gZnJvbnRfbGVuIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46ZnJvbnRfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6c3JjLmZyb250IH5kc3QgfmRzdF9wb3M6MDtcbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpyZXN0X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3Bvczpmcm9udF9sZW5cbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBkZXNpcmVkX2NhcGFjaXR5ID1cbiAgKCogV2UgYWxsb3cgYXJndW1lbnRzIGxlc3MgdGhhbiAxIHRvIFtzZXRfY2FwYWNpdHldLCBidXQgdHJhbnNsYXRlIHRoZW0gdG8gMSB0byBzaW1wbGlmeVxuICAgICB0aGUgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUgYXJyYXkgbGVuZ3RoIGJlaW5nIGEgcG93ZXIgb2YgMi4gKilcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5jZWlsX3BvdzIgKG1heCAxIChtYXggZGVzaXJlZF9jYXBhY2l0eSB0Lmxlbmd0aCkpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0XG4gIHRoZW4gKFxuICAgIGxldCBkc3QgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46bmV3X2NhcGFjaXR5IGluXG4gICAgYmxpdF90b19hcnJheSB+c3JjOnQgZHN0O1xuICAgIHQuZnJvbnQgPC0gMDtcbiAgICB0Lm1hc2sgPC0gbmV3X2NhcGFjaXR5IC0gMTtcbiAgICB0LmVsdHMgPC0gZHN0KVxuOztcblxubGV0IGVucXVldWUgdCBhID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5IHQgKDIgKiB0Lmxlbmd0aCk7XG4gIHVuc2FmZV9zZXQgdCB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBkZXF1ZXVlX25vbmVtcHR5IHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgZWx0cyA9IHQuZWx0cyBpblxuICBsZXQgZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgZnJvbnQgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIGVsdHMgZnJvbnQ7XG4gIHQuZnJvbnQgPC0gZWx0c19pbmRleCB0IDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBDYW1sLlF1ZXVlLkVtcHR5IGVsc2UgZGVxdWV1ZV9ub25lbXB0eSB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX25vbmVtcHR5IHQpXG5sZXQgZnJvbnRfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyB0LmZyb250XG5sZXQgbGFzdF9ub25lbXB0eSB0ID0gdW5zYWZlX2dldCB0ICh0Lmxlbmd0aCAtIDEpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChmcm9udF9ub25lbXB0eSB0KVxubGV0IHBlZWtfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgQ2FtbC5RdWV1ZS5FbXB0eSBlbHNlIGZyb250X25vbmVtcHR5IHRcbmxldCBsYXN0IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGxhc3Rfbm9uZW1wdHkgdClcbmxldCBsYXN0X2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIENhbWwuUXVldWUuRW1wdHkgZWxzZSBsYXN0X25vbmVtcHR5IHRcblxubGV0IGNsZWFyIHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgdW5zYWZlX3Vuc2V0IHQgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMDtcbiAgICB0LmZyb250IDwtIDApXG47O1xuXG5sZXQgYmxpdF90cmFuc2ZlciB+c3JjIH5kc3QgP2xlbiAoKSA9XG4gIGluY19udW1fbXV0YXRpb25zIHNyYztcbiAgaW5jX251bV9tdXRhdGlvbnMgZHN0O1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBzcmMubGVuZ3RoXG4gICAgfCBTb21lIGxlbiAtPlxuICAgICAgaWYgbGVuIDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiUXVldWUuYmxpdF90cmFuc2ZlcjogbmVnYXRpdmUgbGVuZ3RoXCJcbiAgICAgICAgICAgICBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICAgICAgbWluIGxlbiBzcmMubGVuZ3RoXG4gIGluXG4gIGlmIGxlbiA+IDBcbiAgdGhlbiAoXG4gICAgc2V0X2NhcGFjaXR5IGRzdCAobWF4IChjYXBhY2l0eSBkc3QpIChkc3QubGVuZ3RoICsgbGVuKSk7XG4gICAgbGV0IGRzdF9zdGFydCA9IGRzdC5mcm9udCArIGRzdC5sZW5ndGggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgKCogVGhpcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHNpbXBseSBbZW5xdWV1ZSBkc3QgKGRlcXVldWVfbm9uZW1wdHkgc3JjKV0gKilcbiAgICAgIGxldCBzcmNfaSA9IChzcmMuZnJvbnQgKyBpKSBsYW5kIHNyYy5tYXNrIGluXG4gICAgICBsZXQgZHN0X2kgPSAoZHN0X3N0YXJ0ICsgaSkgbGFuZCBkc3QubWFzayBpblxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZVxuICAgICAgICBkc3QuZWx0c1xuICAgICAgICBkc3RfaVxuICAgICAgICAoT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gc3JjLmVsdHMgc3JjX2kpO1xuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBzcmMuZWx0cyBzcmNfaVxuICAgIGRvbmU7XG4gICAgZHN0Lmxlbmd0aCA8LSBkc3QubGVuZ3RoICsgbGVuO1xuICAgIHNyYy5mcm9udCA8LSAoc3JjLmZyb250ICsgbGVuKSBsYW5kIHNyYy5tYXNrO1xuICAgIHNyYy5sZW5ndGggPC0gc3JjLmxlbmd0aCAtIGxlbilcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgc2V0X2NhcGFjaXR5IHQgKEludC5tYXggKGNhcGFjaXR5IHQpICh0Lmxlbmd0aCArIExpc3QubGVuZ3RoIGwpKTtcbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgICBsZXQgciA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gICAgZG9uZTtcbiAgICAhcilcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgYSAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKVxuOztcblxuXG4oKiBbaXRlcl0gaXMgaW1wbGVtZW50ZWQgZGlyZWN0bHkgYmVjYXVzZSBpbXBsZW1lbnRpbmcgaXQgaW4gdGVybXMgb2YgW2ZvbGRdIGlzXG4gICBzbG93ZXIuICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByZXN1bHQgOj0gdW5zYWZlX2dldCB0IGkgOjogIXJlc3VsdFxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcblxuXG4oKiBGb3IgW2NvbmNhdF9tYXBdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyXSwgd2UgZG9uJ3QgY3JlYXRlIFt0X3Jlc3VsdF0gd2l0aCBbdF0nc1xuICAgY2FwYWNpdHkgYmVjYXVzZSB3ZSBoYXZlIG5vIGlkZWEgaG93IG1hbnkgZWxlbWVudHMgW3RfcmVzdWx0XSB3aWxsIHVsdGltYXRlbHkgaG9sZC4gKilcbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyaSB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGUgfmNhcGFjaXR5OnNyYy5sZW5ndGggKCkgaW5cbiAgYmxpdF90b19hcnJheSB+c3JjIGRzdC5lbHRzO1xuICBkc3QubGVuZ3RoIDwtIHNyYy5sZW5ndGg7XG4gIGRzdFxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6KExpc3QubGVuZ3RoIGwpICgpIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbigqIFRoZSBxdWV1ZSBbdF0gcmV0dXJuZWQgYnkgW2NyZWF0ZV0gd2lsbCBoYXZlIFt0Lmxlbmd0aCA9IDBdLCBbdC5mcm9udCA9IDBdLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gSW50LmNlaWxfcG93MiBsZW5dLiAgU28sIHdlIG9ubHkgaGF2ZSB0byBzZXQgW3QubGVuZ3RoXSB0byBbbGVuXSBhZnRlclxuICAgdGhlIGJsaXQgdG8gbWFpbnRhaW4gYWxsIHRoZSBpbnZhcmlhbnRzOiBbdC5sZW5ndGhdIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgIGluIHRoZSBxdWV1ZSwgW3QuZnJvbnRdIGlzIHRoZSBhcnJheSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcXVldWUsIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICopXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBpZiBsZW4gPCAwXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiUXVldWUuaW5pdDogbmVnYXRpdmUgbGVuZ3RoXCIgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OmxlbiAoKSBpblxuICBhc3NlcnQgKE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzID49IGxlbik7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgaSAoZiBpKVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSBsZW47XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhID0gaW5pdCAoQXJyYXkubGVuZ3RoIGEpIH5mOihBcnJheS51bnNhZmVfZ2V0IGEpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgdC5sZW5ndGggfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgbWFwIHRhIH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0YS5udW1fbXV0YXRpb25zIGluXG4gIGxldCB0YiA9IGNyZWF0ZSB+Y2FwYWNpdHk6dGEubGVuZ3RoICgpIGluXG4gIHRiLmxlbmd0aCA8LSB0YS5sZW5ndGg7XG4gIGZvciBpID0gMCB0byB0YS5sZW5ndGggLSAxIGRvXG4gICAgbGV0IGIgPSBmICh1bnNhZmVfZ2V0IHRhIGkpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHRhIG51bV9tdXRhdGlvbnM7XG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0Yi5lbHRzIGkgYlxuICBkb25lO1xuICB0YlxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbWFwIHQgfmY6KGZ1biBhIC0+XG4gICAgbGV0IHJlc3VsdCA9IGYgIWkgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIHJlc3VsdClcbjs7XG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGVucXVldWUgdCB4O1xuICB0XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gdG9fbGlzdCB0IHw+IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIHw+IG9mX2xpc3RcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHxcblxuICBsZXQgdW5yZWFjaGFibGVfY29kZSA9IGZ1bmN0aW9uXG4gICAgfCAoXyA6IHQpIC0+IC5cbiAgOztcblxuICBsZXQgYWxsID0gW11cbiAgbGV0IGhhc2hfZm9sZF90IF8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IGNvbXBhcmUgYSBfID0gdW5yZWFjaGFibGVfY29kZSBhXG4gIGxldCBzZXhwX29mX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV90eXBlIFwiQmFzZS5Ob3RoaW5nLnRcIiBzZXhwXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbiAgbGV0IHRvX3N0cmluZyA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IG9mX3N0cmluZyAoXyA6IHN0cmluZykgPSBmYWlsd2l0aCBcIkJhc2UuTm90aGluZy5vZl9zdHJpbmc6IG5vdCBzdXBwb3J0ZWRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Ob3RoaW5nXCJcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBDYW1sLk5hdGl2ZWludFxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKG5hdGl2ZWludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9uYXRpdmVpbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gbmF0aXZlaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfbmF0aXZlaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9uYXRpdmVpbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9IG5lZ1xuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbnhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVueFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bV9iaXRzID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIk5hdGl2ZWludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IENhbWwuTmF0aXZlaW50LmxvZ29yXG4gIGxldCAoIGxzciApID0gQ2FtbC5OYXRpdmVpbnQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBDYW1sLk5hdGl2ZWludC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgKHggOiBuYXRpdmVpbnQpID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gQ2FtbC5OYXRpdmVpbnQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLk5hdGl2ZWludC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLk5hdGl2ZWludC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBDYW1sLk5hdGl2ZWludC5wcmVkIHggPSAwblxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIG5hdGl2ZWludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIENhbWwuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAgWyBcIlwiLCBzZXhwX29mX25hdGl2ZWludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgQ2FtbC5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBpZiBDYW1sLk5hdGl2ZWludC5lcXVhbCBpIENhbWwuTmF0aXZlaW50Lm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKENhbWwuTmF0aXZlaW50LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9uYXRpdmVpbnQgdCA9IHRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50IHQgPSB0XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQubmF0aXZlaW50X3BvcGNvdW50XG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IHRvX2ludDMyX3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtOYXRpdmVpbnRdIGFuZCBbTmF0aXZlaW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuZXh0ZXJuYWwgYnN3YXAgOiB0IC0+IHQgPSBcIiVic3dhcF9uYXRpdmVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlLiBTZWUgLi4vVEhJUkQtUEFSVFkudHh0ICAqKVxuKCogIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgTWFwX2ludGZcblxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXBfaW50Zi5GaW5pc2hlZF9vcl91bmZpbmlzaGVkXG5cbiAgKCogVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGVzdGVkIGluIFt0ZXN0X21hcC5tbF0gdG8gbWFrZSBzdXJlIG91ciB1c2Ugb2ZcbiAgICAgW0NhbWwuT2JqLm1hZ2ljXSBpcyBjb3JyZWN0IGFuZCBzYWZlLiAqKVxuICBsZXQgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0ID0gQ2FtbC5PYmoubWFnaWNcbiAgbGV0IHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudCA9IENhbWwuT2JqLm1hZ2ljXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXBfaW50Zi5NZXJnZV9lbGVtZW50XG5cbiAgbGV0IGxlZnQgPSBmdW5jdGlvblxuICAgIHwgYFJpZ2h0IF8gLT4gTm9uZVxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBTb21lIGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IFNvbWUgcmlnaHRcbiAgOztcblxuICBsZXQgbGVmdF92YWx1ZSB0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBSaWdodCBfIC0+IGRlZmF1bHRcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gbGVmdFxuICA7O1xuXG4gIGxldCByaWdodF92YWx1ZSB0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBMZWZ0IF8gLT4gZGVmYXVsdFxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiByaWdodFxuICA7O1xuXG4gIGxldCB2YWx1ZXMgdCB+bGVmdF9kZWZhdWx0IH5yaWdodF9kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBMZWZ0IGxlZnQgLT4gbGVmdCwgcmlnaHRfZGVmYXVsdFxuICAgIHwgYFJpZ2h0IHJpZ2h0IC0+IGxlZnRfZGVmYXVsdCwgcmlnaHRcbiAgICB8IGBCb3RoIChsZWZ0LCByaWdodCkgLT4gbGVmdCwgcmlnaHRcbiAgOztcbmVuZFxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5leGNlcHRpb24gRHVwbGljYXRlIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRHVwbGljYXRlXSAoZnVuY3Rpb25cbiAgICB8IER1cGxpY2F0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuRHVwbGljYXRlXCJcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgTGVhZiBvZiAnayAqICd2XG4gICAgfCBOb2RlIG9mICgnaywgJ3YpIHQgKiAnayAqICd2ICogKCdrLCAndikgdCAqIGludFxuXG4gIHR5cGUgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIHRcblxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9rZXkgbG93ZXIgayA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2tleSBrIHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiAoaywgXykgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgfCBOb2RlIChsLCBrLCBfLCByLCBoKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIGspIGNvbXBhcmVfa2V5IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSBrKSB1cHBlciBjb21wYXJlX2tleSByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9rZXkgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9rZXkgdFxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMiAqKVxuICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA9IDAgJiYgaHIgPSAwXG4gICAgdGhlbiBMZWFmICh4LCBkKVxuICAgIGVsc2UgTm9kZSAobCwgeCwgZCwgciwgaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IExlYWYgKGtleSwgZGF0YSlcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5NYXAgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpIDogKF8sIF8pIHQgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgaywgdiA9IGYgaSBpblxuICAgICAgICBMZWFmIChrLCB2KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgRW1wdHksIDIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IsIHZyID0gZiAoaSArIDIpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIExlYWYgKGtyLCB2ciksIDIpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgdiByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDJcbiAgICAgICAgIHx8XG4gICAgICAgICBsZXQgazAsIF8gPSBhcnJheS4oMCkgaW5cbiAgICAgICAgIGxldCBrMSwgXyA9IGFycmF5LigxKSBpblxuICAgICAgICAgY29tcGFyZV9rZXkgazAgazEgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0LCBhcnJheV9sZW5ndGhcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggYXJyYXkgd2l0aFxuICAgIHwgW3x8XSB8IFt8IF8gfF0gLT4gUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSlcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oMCkpIChmc3QgYXJyYXkuKDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LihpKSkgKGZzdCBhcnJheS4oaSArIDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVyblxuICAgICAgICAgICAgICAgIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5KSlcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDMgKilcbiAgbGV0IGJhbCBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICAgIGxldCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaHIgKyAyICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbGQsIGxyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChscnYsIGxyZCkgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgRW1wdHkpIGxydiBscmQgKGNyZWF0ZSBFbXB0eSB4IGQgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscmQsIGxyciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaGwgKyAyICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcmQsIHJyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChybHYsIHJsZCkgLT4gY3JlYXRlIChjcmVhdGUgbCB4IGQgRW1wdHkpIHJsdiBybGQgKGNyZWF0ZSBFbXB0eSBydiByZCBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybGQsIHJsciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycikpKVxuICAgIGVsc2UgY3JlYXRlIGwgeCBkIHJcbiAgOztcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleSB+c2V4cF9vZl9rZXkgPVxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJbTWFwLmFkZF9leG5dIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBtb2R1bGUgQWRkX29yX3NldCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFkZF9leG5faW50ZXJuYWxcbiAgICAgIHwgQWRkX2V4blxuICAgICAgfCBTZXRcbiAgZW5kXG5cblxuICBsZXQgcmVjIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgICAgIH5rZXk6eFxuICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICAgICB+KGFkZF9vcl9zZXQgOiBBZGRfb3Jfc2V0LnQpXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiAoeCwgZGF0YSksIGxlbmd0aCArIDFcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGVcbiAgICAgICAgfCBBZGRfZXhuIC0+IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleVxuICAgICAgICB8IFNldCAtPiBMZWFmICh4LCBkYXRhKSwgbGVuZ3RoKVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiBOb2RlIChMZWFmICh4LCBkYXRhKSwgdiwgZCwgRW1wdHksIDIpLCBsZW5ndGggKyAxXG4gICAgICBlbHNlIE5vZGUgKEVtcHR5LCB2LCBkLCBMZWFmICh4LCBkYXRhKSwgMiksIGxlbmd0aCArIDFcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGVcbiAgICAgICAgfCBBZGRfZXhuIC0+IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleVxuICAgICAgICB8IFNldCAtPiBOb2RlIChsLCB4LCBkYXRhLCByLCBoKSwgbGVuZ3RoKVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsLCBsZW5ndGggPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgbCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHIsIGxlbmd0aCA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSByIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXQ6QWRkX2V4blxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgIHRcbiAgICAgIH5sZW5ndGhcbiAgICAgIH5rZXlcbiAgICAgIH5kYXRhXG4gICAgICB+Y29tcGFyZV9rZXlcbiAgICAgIH5zZXhwX29mX2tleVxuICAgICAgfmFkZF9vcl9zZXQ6QWRkX2V4bl9pbnRlcm5hbFxuICA7O1xuXG4gIGxldCBzZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICB0XG4gICAgICB+bGVuZ3RoXG4gICAgICB+a2V5XG4gICAgICB+ZGF0YVxuICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICB+c2V4cF9vZl9rZXk6KGZ1biBfIC0+IExpc3QgW10pXG4gICAgICB+YWRkX29yX3NldDpTZXRcbiAgOztcblxuICBsZXQgc2V0JyB0IGtleSBkYXRhIH5jb21wYXJlX2tleSA9IGZzdCAoc2V0IHQgfmxlbmd0aDowIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KVxuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIEZyYWdtZW50ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0ID1cbiAgICAgICAgeyBsZWZ0X3N1YnRyZWUgOiAoJ2ssICd2KSB0XG4gICAgICAgIDsga2V5IDogJ2tcbiAgICAgICAgOyBkYXRhIDogJ3ZcbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2luZ2xldG9uX3RvX3RyZWVfZXhuID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfSAtPiBzaW5nbGV0b24ga2V5IGRhdGFcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiTWFwLnNpbmdsZXRvbl90b190cmVlX2V4bjogbm90IGEgc2luZ2xldG9uXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzaW5nbGV0b24gfmtleSB+ZGF0YSA9IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9XG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQocil8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBjb2xsYXBzZSBsIHIgPSBjcmVhdGUgbC5sZWZ0X3N1YnRyZWUgbC5rZXkgbC5kYXRhIHJcblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyLmxlZnRfc3VidHJlZSl8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBqb2luIGwgciA9IHsgciB3aXRoIGxlZnRfc3VidHJlZSA9IGNvbGxhcHNlIGwgci5sZWZ0X3N1YnRyZWUgfVxuICAgICAgbGV0IG1heF9rZXkgdCA9IHQua2V5XG4gICAgZW5kXG5cbiAgICAoKiogQnVpbGQgdHJlZXMgZnJvbSBzaW5nbGV0b25zIGluIGEgYmFsYW5jZWQgd2F5IGJ5IHVzaW5nIHNrZXcgYmluYXJ5IGVuY29kaW5nLlxuICAgICAgICBFYWNoIGxldmVsIGNvbnRhaW5zIHRyZWVzIG9mIHRoZSBzYW1lIGhlaWdodCwgY29uc2VjdXRpdmUgbGV2ZWxzIGhhdmUgY29uc2VjdXRpdmVcbiAgICAgICAgaGVpZ2h0cy4gVGhlcmUgYXJlIG5vIGdhcHMuIFRoZSBmaXJzdCBsZXZlbCBhcmUgc2luZ2xlIGtleXMuXG4gICAgKilcbiAgICB0eXBlICgnaywgJ3YpIHQgPVxuICAgICAgfCBaZXJvIG9mIHVuaXRcbiAgICAgICgqIFt1bml0XSB0byBtYWtlIHBhdHRlcm4gbWF0Y2hpbmcgZmFzdGVyICopXG4gICAgICB8IE9uZSBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudFxuICAgICAgfCBUd28gb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG5cbiAgICBsZXQgZW1wdHkgPSBaZXJvICgpXG5cbiAgICBsZXQgYWRkX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgeCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gT25lICh0LCB4KVxuICAgICAgICB8IE9uZSAodCwgeSkgLT4gVHdvICh0LCB5LCB4KVxuICAgICAgICB8IFR3byAodCwgeiwgeSkgLT4gT25lIChnbyB0IChGcmFnbWVudC5qb2luIHogeSksIHgpXG4gICAgICBpblxuICAgICAgZnVuIHQgfmtleSB+ZGF0YSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b24gfmtleSB+ZGF0YSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWVfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCByID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiByXG4gICAgICAgIHwgT25lICh0LCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSBsIHIpXG4gICAgICAgIHwgVHdvICh0LCBsbCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgKEZyYWdtZW50LmpvaW4gbGwgbCkgcilcbiAgICAgIGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IEVtcHR5XG4gICAgICB8IE9uZSAodCwgcikgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgICB8IFR3byAodCwgbCwgcikgLT4gZ28gKE9uZSAodCwgbCkpIChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICA7O1xuXG4gICAgbGV0IG1heF9rZXkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IE5vbmVcbiAgICAgIHwgT25lIChfLCByKSB8IFR3byAoXywgXywgcikgLT4gU29tZSAoRnJhZ21lbnQubWF4X2tleSByKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXkgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgbGV0IGJ1aWxkZXIsIGxlbmd0aCA9XG4gICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICBzZXFcbiAgICAgICAgICB+aW5pdDooQnVpbGRfaW5jcmVhc2luZy5lbXB0eSwgMClcbiAgICAgICAgICB+ZjooZnVuIChidWlsZGVyLCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBCdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgYnVpbGRlciB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJlX2tleSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZTogbm9uLWluY3JlYXNpbmcga2V5XCIpXG4gICAgICAgICAgICB8IF8gLT4gQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIGJ1aWxkZXIgfmtleSB+ZGF0YSwgbGVuZ3RoICsgMSlcbiAgICAgIGluXG4gICAgICBPayAoQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCBidWlsZGVyLCBsZW5ndGgpKVxuICA7O1xuXG4gICgqIExpa2UgW2JhbF0gYnV0IGFsbG93cyBhbnkgZGlmZmVyZW5jZSBpbiBoZWlnaHQgYmV0d2VlbiBbbF0gYW5kIFtyXS5cblxuICAgICBPKHxoZWlnaHQgbCAtIGhlaWdodCByfCkgKilcbiAgbGV0IHJlYyBqb2luIGwgayBkIHIgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IHNldCcgciBrIGQgfmNvbXBhcmVfa2V5XG4gICAgfCBfLCBFbXB0eSAtPiBzZXQnIGwgayBkIH5jb21wYXJlX2tleVxuICAgIHwgTGVhZiAobGssIGxkKSwgXyAtPiBzZXQnIChzZXQnIHIgayBkIH5jb21wYXJlX2tleSkgbGsgbGQgfmNvbXBhcmVfa2V5XG4gICAgfCBfLCBMZWFmIChyaywgcmQpIC0+IHNldCcgKHNldCcgbCBrIGQgfmNvbXBhcmVfa2V5KSByayByZCB+Y29tcGFyZV9rZXlcbiAgICB8IE5vZGUgKGxsLCBsaywgbGQsIGxyLCBsaCksIE5vZGUgKHJsLCByaywgcmQsIHJyLCByaCkgLT5cbiAgICAgICgqIFtiYWxdIHJlcXVpcmVzIGhlaWdodCBkaWZmZXJlbmNlIDw9IDMuICopXG4gICAgICBpZiBsaCA+IHJoICsgM1xuICAgICAgKCogW2hlaWdodCBsciA+PSBoZWlnaHQgcl0sXG4gICAgICAgICB0aGVyZWZvcmUgW2hlaWdodCAoam9pbiBsciBrIGQgciAuLi4pXSBpcyBbaGVpZ2h0IHJsICsgMV0gb3IgW2hlaWdodCBybF1cbiAgICAgICAgIHRoZXJlZm9yZSB0aGUgaGVpZ2h0IGRpZmZlcmVuY2Ugd2l0aCBbbGxdIHdpbGwgYmUgPD0gMyAqKVxuICAgICAgdGhlbiBiYWwgbGwgbGsgbGQgKGpvaW4gbHIgayBkIHIgfmNvbXBhcmVfa2V5KVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgM1xuICAgICAgdGhlbiBiYWwgKGpvaW4gbCBrIGQgcmwgfmNvbXBhcmVfa2V5KSByayByZCByclxuICAgICAgZWxzZSBiYWwgbCBrIGQgclxuICA7O1xuXG4gIGxldCByZWMgc3BsaXQgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgeCBrIGluXG4gICAgICBpZiBjbXAgPSAwXG4gICAgICB0aGVuIEVtcHR5LCBTb21lIChrLCBkKSwgRW1wdHlcbiAgICAgIGVsc2UgaWYgY21wIDwgMFxuICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgdFxuICAgICAgZWxzZSB0LCBOb25lLCBFbXB0eVxuICAgIHwgTm9kZSAobCwgaywgZCwgciwgXykgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2tleSB4IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gbCwgU29tZSAoaywgZCksIHJcbiAgICAgIGVsc2UgaWYgY21wIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsbCwgbWF5YmUsIGxyID0gc3BsaXQgbCB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBsbCwgbWF5YmUsIGpvaW4gbHIgayBkIHIgfmNvbXBhcmVfa2V5KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBybCwgbWF5YmUsIHJyID0gc3BsaXQgciB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBqb2luIGwgayBkIHJsIH5jb21wYXJlX2tleSwgbWF5YmUsIHJyKVxuICA7O1xuXG4gIGxldCBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50byB4IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGxlZnQsIGJvdW5kYXJ5X29wdCwgcmlnaHQgPSBzcGxpdCB0IHggfmNvbXBhcmVfa2V5IGluXG4gICAgbWF0Y2ggYm91bmRhcnlfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gbGVmdCwgcmlnaHRcbiAgICB8IFNvbWUgKGtleSwgZGF0YSkgLT5cbiAgICAgIGxldCBpbnNlcnRfaW50byB0cmVlID0gZnN0IChzZXQgdHJlZSB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXkpIGluXG4gICAgICAobWF0Y2ggaW50byB3aXRoXG4gICAgICAgfCBgTGVmdCAtPiBpbnNlcnRfaW50byBsZWZ0LCByaWdodFxuICAgICAgIHwgYFJpZ2h0IC0+IGxlZnQsIGluc2VydF9pbnRvIHJpZ2h0KVxuICA7O1xuXG4gIGxldCBzcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH4obG93ZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+KHVwcGVyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgPVxuICAgIGlmIE1heWJlX2JvdW5kLmJvdW5kc19jcm9zc2VkXG4gICAgICAgICB+Y29tcGFyZTpjb21wYXJlX2tleVxuICAgICAgICAgfmxvd2VyOmxvd2VyX2JvdW5kXG4gICAgICAgICB+dXBwZXI6dXBwZXJfYm91bmRcbiAgICB0aGVuIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZWZ0LCBtaWRfYW5kX3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggbG93ZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBlbXB0eSwgdFxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGV0IG1pZCwgcmlnaHQgPVxuICAgICAgICBtYXRjaCB1cHBlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IG1pZF9hbmRfcmlnaHQsIGVtcHR5XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+XG4gICAgICAgICAgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxlZnQsIG1pZCwgcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIFNvbWUgZCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGQgZWxzZSBmaW5kIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZGF0YSA9IGRhdGEgOjogT3B0aW9uLnZhbHVlIChmaW5kIHQga2V5IH5jb21wYXJlX2tleSkgfmRlZmF1bHQ6W10gaW5cbiAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggZmluZCB0IHggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gW11cbiAgICB8IFNvbWUgbCAtPiBsXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgaWZfbm90X2ZvdW5kIGtleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgcmFpc2UgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIk1hcC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHNleHBfb2Zfa2V5IGtleSBdKSlcbiAgICBpblxuICAgIGxldCByZWMgZmluZF9leG4gdCB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gZCBlbHNlIGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIGQgZWxzZSBmaW5kX2V4biAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgeCB+Y29tcGFyZV9rZXkgPSBPcHRpb24uaXNfc29tZSAoZmluZCB0IHggfmNvbXBhcmVfa2V5KVxuXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoRW1wdHksIGssIGQsIF8sIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIGssIGQsIEVtcHR5LCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgXywgXywgciwgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIF8sIHIsIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHgsIGQsIHIsIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgeCBkIHJcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbWF4X2VsdCBsb3dlcl9wYXJ0LCBtaW5fZWx0IHVwcGVyX3BhcnQgd2l0aFxuICAgIHwgTm9uZSwgXyAtPiBgT2sgdXBwZXJfcGFydFxuICAgIHwgXywgTm9uZSAtPiBgT2sgbG93ZXJfcGFydFxuICAgIHwgU29tZSAobWF4X2xvd2VyLCBfKSwgU29tZSAobWluX3VwcGVyLCB2KSB3aGVuIGNvbXBhcmVfa2V5IG1heF9sb3dlciBtaW5fdXBwZXIgPCAwIC0+XG4gICAgICBsZXQgdXBwZXJfcGFydF93aXRob3V0X21pbiA9IHJlbW92ZV9taW5fZWx0IHVwcGVyX3BhcnQgaW5cbiAgICAgIGBPayAoam9pbiB+Y29tcGFyZV9rZXkgbG93ZXJfcGFydCBtaW5fdXBwZXIgdiB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluKVxuICAgIHwgXyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSA9XG4gICAgKCogVGhpcyBhc3N1bWVzIHRoYXQgbWluIDw9IG1heCwgd2hpY2ggaXMgY2hlY2tlZCBieSB0aGUgb3V0ZXIgZnVuY3Rpb24uICopXG4gICAgbGV0IHJlYyBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGluaXRcbiAgICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBtaW4gPCAwIHx8IGNvbXBhcmVfa2V5IGsgbWF4ID4gMFxuICAgICAgICB0aGVuICgqIGsgPCBtaW4gfHwgayA+IG1heCAqKVxuICAgICAgICAgIGluaXRcbiAgICAgICAgZWxzZSBmIH5rZXk6ayB+ZGF0YTpkIGluaXRcbiAgICAgIHwgTm9kZSAobCwgaywgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGNfbWluID0gY29tcGFyZV9rZXkgayBtaW4gaW5cbiAgICAgICAgaWYgY19taW4gPCAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrIDwgbWluLCB0aGVuIHRoaXMgbm9kZSBhbmQgaXRzIGxlZnQgYnJhbmNoIGFyZSBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIGlmIGNfbWluID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA9IG1pbiwgdGhlbiB0aGlzIG5vZGUncyBsZWZ0IGJyYW5jaCBpcyBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0OihmIH5rZXk6ayB+ZGF0YTpkIGluaXQpIH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBrID4gbWluICopXG4gICAgICAgICAgbGV0IHogPSBnbyBsIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBsZXQgY19tYXggPSBjb21wYXJlX2tleSBrIG1heCBpblxuICAgICAgICAgICgqIGlmIGsgPiBtYXgsIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICBpZiBjX21heCA+IDBcbiAgICAgICAgICB0aGVuIHpcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCB6ID0gZiB+a2V5OmsgfmRhdGE6ZCB6IGluXG4gICAgICAgICAgICAoKiBpZiBrID0gbWF4LCB0aGVuIHdlIGZvbGQgaW4gdGhpcyBvbmUgbGFzdCB2YWx1ZSBhbmQgd2UncmUgZG9uZSAqKVxuICAgICAgICAgICAgaWYgY19tYXggPSAwIHRoZW4geiBlbHNlIGdvIHIgfm1pbiB+bWF4IH5pbml0OnogfmYgfmNvbXBhcmVfa2V5KSlcbiAgICBpblxuICAgIGZ1biB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGNvbXBhcmVfa2V5IG1pbiBtYXggPD0gMCB0aGVuIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBlbHNlIGluaXRcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5ID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICAgICB0XG4gICAgICAgICB+bWluXG4gICAgICAgICB+bWF4XG4gICAgICAgICB+aW5pdDpbXVxuICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIGwgLT4gKGtleSwgZGF0YSkgOjogbClcbiAgICAgICAgIH5jb21wYXJlX2tleSlcbiAgOztcblxuICBsZXQgY29uY2F0X3VuY2hlY2tlZCB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT5cbiAgICAgIGxldCB4LCBkID0gbWluX2VsdF9leG4gdDIgaW5cbiAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBSZW1vdmVfbm9fb3BcblxuICBsZXQgcmVtb3ZlIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyByZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBSZW1vdmVfbm9fb3BcbiAgICAgIHwgTGVhZiAodiwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgeCB2ID0gMFxuICAgICAgICB0aGVuIEVtcHR5LCBsZW5ndGggLSAxXG4gICAgICAgIGVsc2UgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIGNvbmNhdF91bmNoZWNrZWQgbCByLCBsZW5ndGggLSAxXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IHJlbW92ZV9sb29wIGwgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSByZW1vdmVfbG9vcCByIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgIGluXG4gICAgdHJ5IHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBSZW1vdmVfbm9fb3AgLT4gdCwgbGVuZ3RoXG4gIDs7XG5cbiAgKCogVXNlIGV4Y2VwdGlvbiB0byBhdm9pZCB0cmVlLXJlYnVpbGQgaW4gbm8tb3AgY2FzZSAqKVxuICBleGNlcHRpb24gQ2hhbmdlX25vX29wXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyBjaGFuZ2VfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAobWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBDaGFuZ2Vfbm9fb3AgKCogZXF1aXZhbGVudCB0byByZXR1cm5pbmc6IEVtcHR5ICopXG4gICAgICAgICB8IFNvbWUgZGF0YSAtPiBMZWFmIChrZXksIGRhdGEpLCBsZW5ndGggKyAxKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eSwgbGVuZ3RoIC0gMVxuICAgICAgICAgIHwgU29tZSBkJyAtPiBMZWFmICh2LCBkJyksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgRW1wdHksIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIEVtcHR5IHYgZCByLCBsZW5ndGgpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGNvbmNhdF91bmNoZWNrZWQgbCByLCBsZW5ndGggLSAxXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSBjaGFuZ2VfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgIGluXG4gICAgdHJ5IGNoYW5nZV9jb3JlIHQga2V5IGYgd2l0aFxuICAgIHwgQ2hhbmdlX25vX29wIC0+IHQsIGxlbmd0aFxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgdXBkYXRlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBmIE5vbmUgaW5cbiAgICAgICAgTGVhZiAoa2V5LCBkYXRhKSwgbGVuZ3RoICsgMVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkJyA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICBMZWFmICh2LCBkJyksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgRW1wdHksIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIEVtcHR5IHYgZCByLCBsZW5ndGgpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRhdGEgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSB1cGRhdGVfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgIGluXG4gICAgdXBkYXRlX2NvcmUgdCBrZXkgZlxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGNoYW5nZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSB8IFNvbWUgKFtdIHwgWyBfIF0pIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoXyA6OiAoXyA6OiBfIGFzIG5vbl9lbXB0eV90YWlsKSkgLT4gU29tZSBub25fZW1wdHlfdGFpbClcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJfa2V5cyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBfKSAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIF8sIHIsIF8pIC0+XG4gICAgICBpdGVyX2tleXMgfmYgbDtcbiAgICAgIGYgdjtcbiAgICAgIGl0ZXJfa2V5cyB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKF8sIGQpIC0+IGYgZFxuICAgIHwgTm9kZSAobCwgXywgZCwgciwgXykgLT5cbiAgICAgIGl0ZXIgfmYgbDtcbiAgICAgIGYgZDtcbiAgICAgIGl0ZXIgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlcmkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGl0ZXJpIH5mIGw7XG4gICAgICBmIH5rZXk6diB+ZGF0YTpkO1xuICAgICAgaXRlcmkgfmYgclxuICA7O1xuXG4gIGxldCBpdGVyaV91bnRpbCA9XG4gICAgbGV0IHJlYyBpdGVyaV91bnRpbF9sb29wIHQgfmYgOiBDb250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGl0ZXJpX3VudGlsX2xvb3AgfmYgbCB3aXRoXG4gICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgfCBDb250aW51ZSAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgICAgfCBDb250aW51ZSAtPiBpdGVyaV91bnRpbF9sb29wIH5mIHIpKVxuICAgIGluXG4gICAgZnVuIHQgfmYgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC5vZl9jb250aW51ZV9vcl9zdG9wIChpdGVyaV91bnRpbF9sb29wIHQgfmYpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiBkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcCB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgIGxldCByJyA9IG1hcCB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgbWFwaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIH5rZXk6diB+ZGF0YTpkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcGkgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gbWFwaSB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgZm9sZCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBmb2xkIH5mIHIgfmluaXQ6KGYgfmtleTp2IH5kYXRhOmQgKGZvbGQgfmYgbCB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgZm9sZF91bnRpbF9sb29wIHQgfmFjYyB+ZiA6IChfLCBfKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2NcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfbG9vcCBsIH5hY2MgfmYgd2l0aFxuICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIGFjYyB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgICAgfCBDb250aW51ZSBhY2MgLT4gZm9sZF91bnRpbF9sb29wIHIgfmFjYyB+ZikpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2xvb3AgdCB+YWNjOmluaXQgfmYgd2l0aFxuICAgIHwgQ29udGludWUgYWNjIC0+IGZpbmlzaCBhY2NcbiAgICB8IFN0b3Agc3RvcCAtPiBzdG9wXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkX3JpZ2h0IHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgfmtleTp2IH5kYXRhOmQgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgaWYgZiBrZXkgdGhlbiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIGFjY3UgfmNvbXBhcmVfa2V5IGVsc2UgYWNjdSwgbGVuZ3RoKVxuICA7O1xuXG5cbiAgbGV0IGZpbHRlciB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBpZiBmIGRhdGEgdGhlbiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIGFjY3UgfmNvbXBhcmVfa2V5IGVsc2UgYWNjdSwgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIGlmIGYgfmtleSB+ZGF0YSB0aGVuIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgYWNjdSB+Y29tcGFyZV9rZXkgZWxzZSBhY2N1LCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgbWF0Y2ggZiBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2N1LCBsZW5ndGhcbiAgICAgIHwgU29tZSBiIC0+IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGE6YiBhY2N1IH5jb21wYXJlX2tleSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2N1LCBsZW5ndGhcbiAgICAgIHwgU29tZSBiIC0+IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGE6YiBhY2N1IH5jb21wYXJlX2tleSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OigoRW1wdHksIDApLCAoRW1wdHksIDApKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIChwYWlyMSwgcGFpcjIpIC0+XG4gICAgICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgeCAtPlxuICAgICAgICAgIGxldCB0LCBsZW5ndGggPSBwYWlyMSBpblxuICAgICAgICAgIHNldCB0IH5rZXkgfmRhdGE6eCB+Y29tcGFyZV9rZXkgfmxlbmd0aCwgcGFpcjJcbiAgICAgICAgfCBTZWNvbmQgeSAtPlxuICAgICAgICAgIGxldCB0LCBsZW5ndGggPSBwYWlyMiBpblxuICAgICAgICAgIHBhaXIxLCBzZXQgdCB+a2V5IH5kYXRhOnkgfmNvbXBhcmVfa2V5IH5sZW5ndGgpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIHBhcnRpdGlvbl9tYXBpIHQgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgcGFydGl0aW9uX21hcGkgdCB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBpZiBmIH5rZXkgfmRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgcGFydGl0aW9uX21hcGkgdCB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGlmIGYgZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSlcbiAgOztcblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2sgKiAndiAqICgnaywgJ3YpIHRyZWUgKiAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgdCAoZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgdCAoZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdHJlZSB0cmVlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHRyZWUgRW5kXG4gICAgbGV0IG9mX3RyZWVfcmlnaHQgdHJlZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCB0cmVlIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIF8sIHIsIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZGF0YSBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICAgIGVsc2UgaWYgcGh5c19lcXVhbCByMSByMlxuICAgICAgICAgICAgdGhlbiBsb29wIGUxIGUyXG4gICAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBjb21wYXJlX2tleSBkYXRhX2VxdWFsIHQxIHQyID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gdHJ1ZVxuICAgICAgICB8IEVuZCwgXyB8IF8sIEVuZCAtPiBmYWxzZVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgY29tcGFyZV9rZXkgdjEgdjIgPSAwXG4gICAgICAgICAgJiYgZGF0YV9lcXVhbCBkMSBkMlxuICAgICAgICAgICYmIGlmIHBoeXNfZXF1YWwgcjEgcjIgdGhlbiBsb29wIGUxIGUyIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZvbGQgfmluaXQgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gaW5pdFxuICAgICAgfCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGxldCBuZXh0ID0gZiB+a2V5IH5kYXRhIGluaXQgaW5cbiAgICAgICAgZm9sZCAoY29ucyB0cmVlIGVudW0pIH5pbml0Om5leHQgfmZcbiAgICA7O1xuXG4gICAgbGV0IGZvbGQyIGNvbXBhcmVfa2V5IHQxIHQyIH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiBjdXJyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBjdXJyXG4gICAgICAgIHwgRW5kLCBfIC0+XG4gICAgICAgICAgZm9sZCB0MiB+aW5pdDpjdXJyIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gZiB+a2V5IH5kYXRhOihgUmlnaHQgZGF0YSkgYWNjKVxuICAgICAgICB8IF8sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgdDEgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYExlZnQgZGF0YSkgYWNjKVxuICAgICAgICB8IE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSwgTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgQm90aCAodjEsIHYyKSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgTGVmdCB2MSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIgbmV4dClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsyIH5kYXRhOihgUmlnaHQgdjIpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBpbml0XG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICAgIHwgRW5kLCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGtleSwgYFJpZ2h0IGRhdGEpLCAoRW5kLCBjb25zIHRyZWUgZW51bSkpXG4gICAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSwgRW5kIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGtleSwgYExlZnQgZGF0YSksIChjb25zIHRyZWUgZW51bSwgRW5kKSlcbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9XG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgICAgdGhlbiBlbnVtMSwgZW51bTJcbiAgICAgICAgICAgICAgZWxzZSBjb25zIHRyZWUxIGVudW0xLCBjb25zIHRyZWUyIGVudW0yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgZGF0YV9lcXVhbCB2MSB2MlxuICAgICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLlNraXAgbmV4dF9zdGF0ZVxuICAgICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkICgoazEsIGBVbmVxdWFsICh2MSwgdjIpKSwgbmV4dF9zdGF0ZSkpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrMSwgYExlZnQgdjEpLCAoY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQpKVxuICAgICAgICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGsyLCBgUmlnaHQgdjIpLCAobGVmdCwgY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6KG9mX3RyZWUgdDEsIG9mX3RyZWUgdDIpIH5mOnN0ZXBcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgYWNjID1cbiAgICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgICB8IEVuZCwgZW51bSAtPiBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCBlbnVtLCBFbmQgLT4gZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGlmIGRhdGFfZXF1YWwgdjEgdjIgdGhlbiBhY2MgZWxzZSBmIGFjYyAoazEsIGBVbmVxdWFsICh2MSwgdjIpKSBpblxuICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgdGhlbiBsb29wIGVudW0xIGVudW0yIGFjY1xuICAgICAgICAgICAgZWxzZSBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgYWNjKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrMSB2MSBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgcmlnaHQgYWNjKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgazIgdjIgaW5cbiAgICAgICAgICAgIGxvb3AgbGVmdCAoY29ucyB0cmVlMiBlbnVtMikgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKG9mX3RyZWUgdDEpIChvZl90cmVlIHQyKSBpbml0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGssIHYpLCBFbnVtLmNvbnMgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZSB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrLCB2KSwgRW51bS5jb25zX3JpZ2h0IHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWVfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmdfa2V5KVxuICAgICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgKGtleSwgZGF0YSkgLT4gc2V0JyB0IGtleSBkYXRhIH5jb21wYXJlX2tleVxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgRW51bS5jb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSAoRW51bS5vZl90cmVlIHQxKSAoRW51bS5vZl90cmVlIHQyKVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIEVudW0uZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgRW51bS5mb2xkMlxuICAgICAgY29tcGFyZV9rZXlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDEpXG4gICAgICAoRW51bS5vZl90cmVlIHQyKVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAoKSAtPiBmIH5rZXkgfmRhdGEpXG4gIDs7XG5cbiAgbGV0IGZvbGQyIHQxIHQyIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgRW51bS5mb2xkMiBjb21wYXJlX2tleSAoRW51bS5vZl90cmVlIHQxKSAoRW51bS5vZl90cmVlIHQyKSB+ZiB+aW5pdFxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgICgqIFtFbnVtLmZvbGRfZGlmZnNdIGlzIGEgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLCBidXQgaXMgY29uc2lkZXJhYmx5XG4gICAgICAgc2xvd2VyLCBhcyB3ZSBoYXZlIHRvIGFsbG9jYXRlIHF1aXRlIGEgbG90IG9mIHN0YXRlIHRvIHRyYWNrIGVudW1lcmF0aW9uIG9mIGEgdHJlZS5cbiAgICAgICBBdm9pZCBpZiB3ZSBjYW4uXG4gICAgKilcbiAgICBsZXQgc2xvdyB4IHkgfmluaXQgPSBFbnVtLmZvbGRfc3ltbWV0cmljX2RpZmYgeCB5IH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+ZiB+aW5pdCBpblxuICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICBsZXQgZGVsdGEgYWNjIGsgdiB2JyA9IGlmIGRhdGFfZXF1YWwgdiB2JyB0aGVuIGFjYyBlbHNlIGYgYWNjIChrLCBgVW5lcXVhbCAodiwgdicpKSBpblxuICAgICgqIElmIHR3byB0cmVlcyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhdCB0aGUgcm9vdCAoYW5kIHRoZSBzYW1lIGtleSwgaWYgdGhleSdyZVxuICAgICAgIFtOb2RlXXMpIHdlIGNhbiB0cml2aWFsbHkgZGlmZiBlYWNoIHN1YnBhcnQgaW4gb2J2aW91cyB3YXlzLiAqKVxuICAgIGxldCByZWMgbG9vcCB0IHQnIGFjYyA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHQgdCdcbiAgICAgIHRoZW4gYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCwgdCcgd2l0aFxuICAgICAgICB8IEVtcHR5LCBuZXdfdmFscyAtPlxuICAgICAgICAgIGZvbGQgbmV3X3ZhbHMgfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCBvbGRfdmFscywgRW1wdHkgLT5cbiAgICAgICAgICBmb2xkIG9sZF92YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgTGVhZiAoaywgdiksIExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgayBrJyB3aXRoXG4gICAgICAgICAgIHwgeCB3aGVuIHggPSAwIC0+IGRlbHRhIGFjYyBrIHYgdidcbiAgICAgICAgICAgfCB4IHdoZW4geCA8IDAgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrIHYgaW5cbiAgICAgICAgICAgICBhZGQgYWNjIGsnIHYnXG4gICAgICAgICAgIHwgXyAoKiB3aGVuIHggPiAwICopIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgaycgdicgaW5cbiAgICAgICAgICAgICByZW1vdmUgYWNjIGsgdilcbiAgICAgICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSwgTm9kZSAobCcsIGsnLCB2JywgcicsIF8pIHdoZW4gY29tcGFyZV9rZXkgayBrJyA9IDAgLT5cbiAgICAgICAgICBsZXQgYWNjID0gbG9vcCBsIGwnIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBkZWx0YSBhY2MgayB2IHYnIGluXG4gICAgICAgICAgbG9vcCByIHInIGFjY1xuICAgICAgICAoKiBPdXIgcm9vdHMgYXJlbid0IHRoZSBzYW1lIGtleS4gRmFsbGJhY2sgdG8gdGhlIHNsb3cgbW9kZS4gVHJlZXMgd2l0aCBzbWFsbFxuICAgICAgICAgICBkaWZmcyB3aWxsIG9ubHkgZG8gdGhpcyBvbiB2ZXJ5IHNtYWxsIHBhcnRzIG9mIHRoZSB0cmVlIChob3BlZnVsbHkgLSBpZiB0aGVcbiAgICAgICAgICAgb3ZlcmFsbCByb290IGlzIHJlYmFsYW5jZWQsIHdlJ2xsIGVhdCB0aGUgd2hvbGUgY29zdCwgdW5mb3J0dW5hdGVseS4pICopXG4gICAgICAgIHwgTm9kZSBfLCBOb2RlIF8gfCBOb2RlIF8sIExlYWYgXyB8IExlYWYgXywgTm9kZSBfIC0+IHNsb3cgdCB0JyB+aW5pdDphY2MpXG4gICAgaW5cbiAgICBsb29wIHQxIHQyIGluaXRcbiAgOztcblxuICBsZXQgcmVjIGxlbmd0aCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAobCwgXywgXywgciwgXykgLT4gbGVuZ3RoIGwgKyBsZW5ndGggciArIDFcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdCA9XG4gICAgZm9sZFxuICAgICAgdFxuICAgICAgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSlcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSBzdGF0ZSAtPiBoYXNoX2ZvbGRfZGF0YSAoaGFzaF9mb2xkX2tleSBzdGF0ZSBrZXkpIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGtleXMgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gbGlzdCAtPiBrZXkgOjogbGlzdCkgdCB+aW5pdDpbXVxuICBsZXQgZGF0YSB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBsaXN0IC0+IGRhdGEgOjogbGlzdCkgdCB+aW5pdDpbXVxuXG4gIG1vZHVsZSB0eXBlIEZvbGRhYmxlID0gc2lnXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9mb2xkYWJsZSAoTSA6IEZvbGRhYmxlKSA9IHN0cnVjdFxuICAgIGxldCBvZl9mb2xkYWJsZV9mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGQgZm9sZGFibGUgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuIChhY2N1bSwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgcHJldl9kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbml0XG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgZGF0YSA9IGYgcHJldl9kYXRhIGRhdGEgaW5cbiAgICAgICAgc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkpXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9yZWR1Y2UgZm9sZGFibGUgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIE0uZm9sZCBmb2xkYWJsZSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gKGFjY3VtLCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgIGxldCBuZXdfZGF0YSA9XG4gICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZGF0YVxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IGYgcHJldiBkYXRhXG4gICAgICAgIGluXG4gICAgICAgIHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGE6bmV3X2RhdGEgfmNvbXBhcmVfa2V5KVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICBNLmZvbGQgZm9sZGFibGUgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuICh0LCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBsZXQgKChfLCBsZW5ndGgnKSBhcyBhY2MpID0gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAgaWYgbGVuZ3RoID0gbGVuZ3RoJyB0aGVuIHIucmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpIGVsc2UgYWNjKVxuICAgICAgICBpblxuICAgICAgICBgT2sgbWFwKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfb3JfZXJyb3IgZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4gUmVzdWx0Lk9rIHhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfb3JfZXJyb3I6IGR1cGxpY2F0ZSBrZXlcIilcbiAgICAgICAgICBrZXlcbiAgICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfZXhuIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IHhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9leG46IGR1cGxpY2F0ZSBrZXlcIikga2V5IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgICAgIHw+IEVycm9yLnJhaXNlXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2FsaXN0ID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcImFsaXN0XCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgZm9sZCA9IExpc3QuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2ZfYWxpc3QgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZVxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2ZfYWxpc3RfZXhuID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZXhuXG5cbiAgKCogUmV2ZXJzZSB0aGUgaW5wdXQsIHRoZW4gZm9sZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFRoZSByZXN1bHRpbmcgbWFwIHVzZXMgdGhlIGZpcnN0XG4gICAgIGluc3RhbmNlIG9mIGVhY2gga2V5IGZyb20gdGhlIGlucHV0IGxpc3QuIFRoZSByZWxhdGl2ZSBvcmRlcmluZyBvZiBlbGVtZW50cyBpbiBlYWNoXG4gICAgIG91dHB1dCBsaXN0IGlzIHRoZSBzYW1lIGFzIGluIHRoZSBpbnB1dCBsaXN0LiAqKVxuICBsZXQgb2ZfZm9sZGFibGVfbXVsdGkgZm9sZGFibGUgfmZvbGQgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYWxpc3QgPSBmb2xkIGZvbGRhYmxlIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgaW5cbiAgICBvZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleSA9XG4gICAgb2ZfZm9sZGFibGVfbXVsdGkgYWxpc3QgfmZvbGQ6TGlzdC5mb2xkIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIG1vZHVsZSBPZl9zZXF1ZW5jZSA9IE9mX2ZvbGRhYmxlIChzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJzZXF1ZW5jZVwiXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgICAgbGV0IGZvbGQgPSBTZXF1ZW5jZS5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9zZXF1ZW5jZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9leG5cblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgc2VxdWVuY2UgfmNvbXBhcmVfa2V5ID1cbiAgICBvZl9mb2xkYWJsZV9tdWx0aSBzZXF1ZW5jZSB+Zm9sZDpTZXF1ZW5jZS5mb2xkIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBub3QgKGYgZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIG5vdCAoZiB+a2V5IH5kYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgZiBkYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgICBmYWxzZSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPiBpZiBmIGRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuICA7O1xuXG4gIGxldCB0b19hbGlzdCA/KGtleV9vcmRlciA9IGBJbmNyZWFzaW5nKSB0ID1cbiAgICBtYXRjaCBrZXlfb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT4gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gICAgfCBgRGVjcmVhc2luZyAtPiBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZWx0cyA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46KGxlbmd0aCB0MSArIGxlbmd0aCB0MikgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlcjIgdDEgdDIgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YTp2YWx1ZXMgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB2YWx1ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgIFVuaWZvcm1fYXJyYXkuc2V0IGVsdHMgIWkgKGtleSwgdmFsdWUpO1xuICAgICAgICBpbmNyIGlcbiAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgbGV0IGxlbiA9ICFpIGluXG4gICAgbGV0IGdldCBpID0gVW5pZm9ybV9hcnJheS5nZXQgZWx0cyBpIGluXG4gICAgbGV0IHRyZWUgPSBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mOmdldCBpblxuICAgIHRyZWUsIGxlblxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgPVxuICAgIGxldCBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGhfbGFyZ2UgdF9sYXJnZSB0X3NtYWxsIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleSA9XG4gICAgICBmb2xkIHRfc21hbGwgfmluaXQ6KHRfbGFyZ2UsIGxlbmd0aF9sYXJnZSkgfmY6KGZ1biB+a2V5IH5kYXRhOmRhdGEnICh0LCBsZW5ndGgpIC0+XG4gICAgICAgIHVwZGF0ZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZGF0YSdcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBjYWxsIGNvbWJpbmUgfmtleSBkYXRhIGRhdGEnKSlcbiAgICBpblxuICAgIGxldCBjYWxsIGYgfmtleSB4IHkgPSBmIH5rZXkgeCB5IGluXG4gICAgbGV0IHN3YXAgZiB+a2V5IHggeSA9IGYgfmtleSB5IHggaW5cbiAgICBmdW4gdDEgdDIgfmxlbmd0aDEgfmxlbmd0aDIgfmNvbWJpbmUgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBsZW5ndGgyIDw9IGxlbmd0aDFcbiAgICAgIHRoZW4gbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMSB0MSB0MiB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMiB0MiB0MSB+Y2FsbDpzd2FwIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIG1vZHVsZSBDbG9zZXN0X2tleV9pbXBsID0gc3RydWN0XG4gICAgKCogW21hcmtlcl0gYW5kIFtyZXBhY2thZ2VdIGFsbG93IHVzIHRvIGNyZWF0ZSBcImxvZ2ljYWxcIiBvcHRpb25zIHdpdGhvdXQgYWN0dWFsbHlcbiAgICAgICBhbGxvY2F0aW5nIGFueSBvcHRpb25zLiBQYXNzaW5nIFtGb3VuZCBrZXkgdmFsdWVdIHRvIGEgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIHBhc3NpbmcgW1NvbWUgKGtleSwgdmFsdWUpXTsgcGFzc2luZyBbTWlzc2luZyAoKSAoKV0gaXMgZXF1aXZhbGVudCB0byBwYXNzaW5nXG4gICAgICAgW05vbmVdLiAqKVxuICAgIHR5cGUgKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlciA9XG4gICAgICB8IE1pc3NpbmcgOiAoJ2ssICd2LCB1bml0LCB1bml0KSBtYXJrZXJcbiAgICAgIHwgRm91bmQgOiAoJ2ssICd2LCAnaywgJ3YpIG1hcmtlclxuXG4gICAgbGV0IHJlcGFja2FnZVxuICAgICAgICAgICh0eXBlIGsgdiBrX29wdCB2X29wdClcbiAgICAgICAgICAobWFya2VyIDogKGssIHYsIGtfb3B0LCB2X29wdCkgbWFya2VyKVxuICAgICAgICAgIChrIDoga19vcHQpXG4gICAgICAgICAgKHYgOiB2X29wdClcbiAgICAgIDogKGsgKiB2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIG1hdGNoIG1hcmtlciB3aXRoXG4gICAgICB8IE1pc3NpbmcgLT4gTm9uZVxuICAgICAgfCBGb3VuZCAtPiBTb21lIChrLCB2KVxuICAgIDs7XG5cbiAgICAoKiBUaGUgdHlwZSBzaWduYXR1cmUgaXMgZXhwbGljaXQgaGVyZSB0byBhbGxvdyBwb2x5bW9ycGhpYyByZWN1cnNpb24uICopXG4gICAgbGV0IHJlYyBsb29wIDpcbiAgICAgICdrICd2ICdrX29wdCAndl9vcHQuXG4gICAgICAoJ2ssICd2KSB0cmVlXG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAna1xuICAgICAgLT4gY29tcGFyZV9rZXk6KCdrIC0+ICdrIC0+IGludClcbiAgICAgIC0+ICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXJcbiAgICAgIC0+ICdrX29wdFxuICAgICAgLT4gJ3Zfb3B0XG4gICAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG4gICAgICA9XG4gICAgICBmdW4gdCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byAtPiBjID49IDBcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPiBjID4gMFxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byAtPiBjIDw9IDBcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPiBjIDwgMFxuICAgICAgICAgIHRoZW4gU29tZSAoaycsIHYnKVxuICAgICAgICAgIGVsc2UgcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBOb2RlIChsLCBrJywgdicsIHIsIF8pIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFRoaXMgaXMgYSBiYXNlIGNhc2UgKG5vIHJlY3Vyc2l2ZSBjYWxsKS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gU29tZSAoaycsIHYnKVxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IHIgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1pbl9lbHQgclxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IGwgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1heF9lbHQgbClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFdlIGFyZSBndWFyYW50ZWVkIGhlcmUgdGhhdCBrJyA8PiBrLiAqKVxuICAgICAgICAgICAgKCogVGhpcyBpcyB0aGUgb25seSByZWN1cnNpdmUgY2FzZS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjID4gMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPCAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGsgfmNvbXBhcmVfa2V5ID0gbG9vcCB0IGRpciBrIH5jb21wYXJlX2tleSBNaXNzaW5nICgpICgpXG4gIGVuZFxuXG4gIGxldCBjbG9zZXN0X2tleSA9IENsb3Nlc3Rfa2V5X2ltcGwuY2xvc2VzdF9rZXlcblxuICBsZXQgcmVjIHJhbmsgdCBrIH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrJywgXykgLT4gaWYgY29tcGFyZV9rZXkgaycgayA9IDAgdGhlbiBTb21lIDAgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrJywgXywgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gU29tZSAobGVuZ3RoIGwpXG4gICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICB0aGVuIHJhbmsgbCBrIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBPcHRpb24ubWFwIChyYW5rIHIgayB+Y29tcGFyZV9rZXkpIH5mOihmdW4gcmFuayAtPiByYW5rICsgMSArIGxlbmd0aCBsKVxuICA7O1xuXG4gICgqIHRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW1NlcXVlbmNlXSBpbnRlcmZhY2UgYnV0IHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb25cbiAgICAgYWxsb2NhdGVzIG9ubHkgMiB3b3JkcyBhbmQgZG9lc24ndCByZXF1aXJlIHdyaXRlLWJhcnJpZXIgKilcbiAgbGV0IHJlYyBudGgnIG51bV90b19zZWFyY2ggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT5cbiAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgTm9uZSlcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICAobWF0Y2ggbnRoJyBudW1fdG9fc2VhcmNoIGwgd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gc29tZVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICAgICBudGgnIG51bV90b19zZWFyY2ggcikpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBudGgnIChyZWYgbikgdFxuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDwgMClcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMClcbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPiAwKVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IH5rZXkgfmRhdGEgPSBub3QgKGlzX2xlZnQgfmtleSB+ZGF0YSkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZF0gZmluZHMgdGhlIGtleSBpbiBbdF0gd2hpY2ggc2F0aXNmaWVzIFttYXliZV9ib3VuZF1cbiAgICAgYW5kIHRoZSByZWxldmFudCBvbmUgb2YgW2lmX2V4Y2x1c2l2ZV0gb3IgW2lmX2luY2x1c2l2ZV0sIGFzIGp1ZGdlZCBieSBbY29tcGFyZV0uICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlIH5pZl9leGNsdXNpdmUgfmlmX2luY2x1c2l2ZSA9XG4gICAgbGV0IGZpbmRfYm91bmQgdCBob3cgYm91bmQgfmNvbXBhcmUgOiBfIE1heWJlX2JvdW5kLnQgb3B0aW9uID1cbiAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggdCBob3cgYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgfCBTb21lIChib3VuZCwgXykgLT4gU29tZSAoSW5jbCBib3VuZClcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgaW5cbiAgICBtYXRjaCAobWF5YmVfYm91bmQgOiBfIE1heWJlX2JvdW5kLnQpIHdpdGhcbiAgICB8IEV4Y2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2V4Y2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgSW5jbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfaW5jbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBVbmJvdW5kZWQgLT4gU29tZSBVbmJvdW5kZWRcbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzXSBmaW5kcyB0aGUgKG5vdCBuZWNlc3NhcmlseSBkaXN0aW5jdCkga2V5cyBpbiBbdF1cbiAgICAgd2hpY2ggbW9zdCBjbG9zZWx5IGFwcHJvYWNoIChidXQgZG8gbm90IGNyb3NzKSBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdLCBhc1xuICAgICBqdWRnZWQgYnkgW2NvbXBhcmVdLiBJdCByZXR1cm5zIFtOb25lXSBpZiBubyBrZXlzIGluIFt0XSBhcmUgd2l0aGluIHRoYXQgcmFuZ2UuICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgZmluZF9sb3dlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbGV0IGZpbmRfdXBwZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBtYXRjaCBmaW5kX2xvd2VyX2JvdW5kIHQgbG93ZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGxvd2VyX2JvdW5kIC0+XG4gICAgICAobWF0Y2ggZmluZF91cHBlcl9ib3VuZCB0IHVwcGVyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgIHwgU29tZSB1cHBlcl9ib3VuZCAtPiBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpKVxuICA7O1xuXG4gIHR5cGUgKCdrLCAndikgYWNjID1cbiAgICB7IG11dGFibGUgYmFkX2tleSA6ICdrIG9wdGlvblxuICAgIDsgbXV0YWJsZSBtYXBfbGVuZ3RoIDogKCdrLCAndikgdCAqIGludFxuICAgIH1cblxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFjYyA9IHsgYmFkX2tleSA9IE5vbmU7IG1hcF9sZW5ndGggPSBlbXB0eSwgMCB9IGluXG4gICAgaXRlcmkgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQgbWFwLCBsZW5ndGggPSBhY2MubWFwX2xlbmd0aCBpblxuICAgICAgbGV0ICgoXywgbGVuZ3RoJykgYXMgcGFpcikgPSBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIG1hcCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgJiYgT3B0aW9uLmlzX25vbmUgYWNjLmJhZF9rZXlcbiAgICAgIHRoZW4gYWNjLmJhZF9rZXkgPC0gU29tZSBrZXlcbiAgICAgIGVsc2UgYWNjLm1hcF9sZW5ndGggPC0gcGFpcik7XG4gICAgbWF0Y2ggYWNjLmJhZF9rZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT2sgYWNjLm1hcF9sZW5ndGhcbiAgICB8IFNvbWUga2V5IC0+IGBEdXBsaWNhdGVfa2V5IGtleVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbWF0Y2ggb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5jcmVhdGUgXCJNYXAub2ZfaXRlcmlfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgICB8PiBFcnJvci5yYWlzZVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGtleV9vZl9zZXhwIHZhbHVlX29mX3NleHAgc2V4cCB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtleV9vZl9zZXhwIHZhbHVlX29mX3NleHApIHNleHAgaW5cbiAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBtYXRjaCBvZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYER1cGxpY2F0ZV9rZXkgayAtPlxuICAgICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgICB0aGUgd2hvbGUgbWFwICopXG4gICAgICBsZXQgYWxpc3Rfc2V4cHMgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBGbi5pZCBGbi5pZCkgc2V4cCBpblxuICAgICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICAgIExpc3QuaXRlcjJfb2sgYWxpc3QgYWxpc3Rfc2V4cHMgfmY6KGZ1biAoazIsIF8pIChrMl9zZXhwLCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIGsyID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgIWZvdW5kX2ZpcnN0X2tcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJNYXAudF9vZl9zZXhwX2RpcmVjdDogZHVwbGljYXRlIGtleVwiIGsyX3NleHBcbiAgICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgbGV0IGYgfmtleSB+ZGF0YSBhY2MgPSBTZXhwLkxpc3QgWyBzZXhwX29mX2tleSBrZXk7IHNleHBfb2ZfdmFsdWUgZGF0YSBdIDo6IGFjYyBpblxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB+ZiB0IH5pbml0OltdKVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIGxldCBva3MsIChlcnJvcl90cmVlLCBfKSA9IHBhcnRpdGlvbl9tYXAgdCB+Y29tcGFyZV9rZXkgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICAgIGlmIGlzX2VtcHR5IGVycm9yX3RyZWVcbiAgICB0aGVuIE9rIG9rc1xuICAgIGVsc2UgT3JfZXJyb3IuZXJyb3JfcyAoc2V4cF9vZl90IHNleHBfb2Zfa2V5IEVycm9yLnNleHBfb2ZfdCBlcnJvcl90cmVlKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c1xuICAgICAgICB0MVxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcjooeyBjb21wYXJlID0gY29tcGFyZV9rZXk7IHNleHBfb2ZfdCA9IHNleHBfb2Zfa2V5IH0gOiBfIENvbXBhcmF0b3IudClcbiAgICA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBgT2tcbiAgICAgICAgKGZvbGQgdDEgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuIH5rZXkgfmRhdGEgKHQyLCBsZW5ndGgpIC0+XG4gICAgICAgICAgIGxldCBrZXkgPSBmIGtleSBpblxuICAgICAgICAgICB0cnkgYWRkX2V4bl9pbnRlcm5hbCB0MiB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB3aXRoXG4gICAgICAgICAgIHwgRHVwbGljYXRlIC0+IHJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KSkpKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcmVzdWx0IC0+IHJlc3VsdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJNYXAubWFwX2tleXNfZXhuOiBkdXBsaWNhdGUga2V5XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcbmVuZFxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2ssICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogKCdrLCAndikgVHJlZTAudFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG5cbmxldCBjb21wYXJlX2tleSB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSAodHJlZSwgbGVuZ3RoKSA9XG4gIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCBsaWtlMiB4ICh5LCB6KSA9IGxpa2UgeCB5LCBsaWtlIHggelxuXG5sZXQgbGlrZV9tYXliZV9ub19vcCAoeyB0cmVlID0gb2xkX3RyZWU7IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSBhcyBvbGRfdCkgKHRyZWUsIGxlbmd0aClcbiAgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCB3aXRoX3NhbWVfbGVuZ3RoIHsgdHJlZSA9IF87IGNvbXBhcmF0b3I7IGxlbmd0aCB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5sZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbigqIEV4cG9zaW5nIHRoaXMgZnVuY3Rpb24gd291bGQgbWFrZSBpdCB2ZXJ5IGVhc3kgZm9yIHRoZSBpbnZhcmlhbnRzXG4gICBvZiB0aGlzIG1vZHVsZSB0byBiZSBicm9rZW4uICopXG5sZXQgb2ZfdHJlZV91bnNhZmUgfmNvbXBhcmF0b3Igfmxlbmd0aCB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuXG4gIGxldCBpbnZhcmlhbnRzIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgJiYgVHJlZTAubGVuZ3RoIHQudHJlZSA9IHQubGVuZ3RoXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZSB0IChUcmVlMC5zZXQgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGRfZXhuX2ludGVybmFsIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCByZXN1bHQgLT4gYE9rIHJlc3VsdFxuICAgIHwgZXhjZXB0aW9uIER1cGxpY2F0ZSAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICAgIGxpa2UgdCAoVHJlZTAucmVtb3ZlX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQga2V5ID0gVHJlZTAuZmluZF9tdWx0aSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mID1cbiAgICBsaWtlIHQgKFRyZWUwLmNoYW5nZSB0LnRyZWUga2V5IH5mIH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID1cbiAgICBsaWtlIHQgKFRyZWUwLnVwZGF0ZSB0LnRyZWUga2V5IH5mIH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgZmluZF9leG4gdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0LnRyZWVcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB0IGtleSA9IFRyZWUwLmZpbmQgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IHJlbW92ZSB0IGtleSA9XG4gICAgbGlrZV9tYXliZV9ub19vcFxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZSB0LnRyZWUga2V5IH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgbWVtIHQga2V5ID0gVHJlZTAubWVtIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdC50cmVlIH5mXG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQudHJlZSB+ZlxuICBsZXQgaXRlcmkgdCB+ZiA9IFRyZWUwLml0ZXJpIHQudHJlZSB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQudHJlZSB+ZlxuICBsZXQgaXRlcjIgdDEgdDIgfmYgPSBUcmVlMC5pdGVyMiB0MS50cmVlIHQyLnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgbGV0IG1hcCB0IH5mID0gd2l0aF9zYW1lX2xlbmd0aCB0IChUcmVlMC5tYXAgdC50cmVlIH5mKVxuICBsZXQgbWFwaSB0IH5mID0gd2l0aF9zYW1lX2xlbmd0aCB0IChUcmVlMC5tYXBpIHQudHJlZSB+ZilcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5mIH5pbml0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxLnRyZWUgdDIudHJlZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJfa2V5cyB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXJpIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcmkgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJfbWFwaSB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcblxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcGkgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25pX3RmIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uX3RmIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihsaWtlIHQpXG4gICAgICAoVHJlZTAuY29tYmluZV9lcnJvcnNcbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9kYXRhIHQxIHQyID0gVHJlZTAuZXF1YWwgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHQudHJlZVxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0LnRyZWVcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdC50cmVlXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDEudHJlZVxuICAgICAgdDIudHJlZVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgPVxuICAgIGxpa2UgdDEgKFRyZWUwLm1lcmdlIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSlcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBUaGlzIGlzIG9ubHkgYSBuby1vcCBpbiB0aGUgY2FzZSB3aGVyZSBhdCBsZWFzdCBvbmUgb2YgdGhlIG1hcHMgaXMgZW1wdHkuICopXG4gICAgbGlrZV9tYXliZV9ub19vcFxuICAgICAgKGlmIHQyLmxlbmd0aCA8PSB0MS5sZW5ndGggdGhlbiB0MSBlbHNlIHQyKVxuICAgICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgICAgdDEudHJlZVxuICAgICAgICAgdDIudHJlZVxuICAgICAgICAgfmxlbmd0aDE6dDEubGVuZ3RoXG4gICAgICAgICB+bGVuZ3RoMjp0Mi5sZW5ndGhcbiAgICAgICAgIH5jb21iaW5lXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSlcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0LnRyZWVcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0LnRyZWVcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdC50cmVlXG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdC50cmVlXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IFRyZWUwLmZvcl9hbGxpIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdC50cmVlIH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQudHJlZSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQudHJlZSB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdC50cmVlIH5mXG5cbiAgbGV0IHNwbGl0IHQgayA9XG4gICAgbGV0IGwsIG1heWJlLCByID0gVHJlZTAuc3BsaXQgdC50cmVlIGsgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSBpblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGxldCBib3RoX2xlbiA9IGlmIE9wdGlvbi5pc19zb21lIG1heWJlIHRoZW4gdC5sZW5ndGggLSAxIGVsc2UgdC5sZW5ndGggaW5cbiAgICBpZiBUcmVlMC5oZWlnaHQgbCA8IFRyZWUwLmhlaWdodCByXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbCA9IG9mX3RyZWUgbCB+Y29tcGFyYXRvciBpblxuICAgICAgbCwgbWF5YmUsIG9mX3RyZWVfdW5zYWZlIHIgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggbCkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgciA9IG9mX3RyZWUgciB+Y29tcGFyYXRvciBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbCB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCByKSwgbWF5YmUsIHIpXG4gIDs7XG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGxlZnQsIG1pZCwgcmlnaHQgPVxuICAgICAgVHJlZTAuc3BsaXRfcmFuZ2UgdC50cmVlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGxldCBvdXRlcl9qb2luZWRfaGVpZ2h0ID1cbiAgICAgIGxldCBoX2wgPSBUcmVlMC5oZWlnaHQgbGVmdFxuICAgICAgYW5kIGhfciA9IFRyZWUwLmhlaWdodCByaWdodCBpblxuICAgICAgaWYgaF9sID0gaF9yIHRoZW4gaF9sICsgMSBlbHNlIG1heCBoX2wgaF9yXG4gICAgaW5cbiAgICBpZiBvdXRlcl9qb2luZWRfaGVpZ2h0IDwgVHJlZTAuaGVpZ2h0IG1pZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG1pZF9sZW5ndGggPSB0Lmxlbmd0aCAtIChUcmVlMC5sZW5ndGggbGVmdCArIFRyZWUwLmxlbmd0aCByaWdodCkgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KSB+bGVuZ3RoOm1pZF9sZW5ndGgpXG4gICAgZWxzZSBvZl90cmVlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5hcHBlbmRcbiAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSBsb3dlcl9wYXJ0KVxuICAgICAgICB+bG93ZXJfcGFydDpsb3dlcl9wYXJ0LnRyZWVcbiAgICAgICAgfnVwcGVyX3BhcnQ6dXBwZXJfcGFydC50cmVlXG4gICAgd2l0aFxuICAgIHwgYE9rIHRyZWUgLT5cbiAgICAgIGBPa1xuICAgICAgICAob2ZfdHJlZV91bnNhZmVcbiAgICAgICAgICAgdHJlZVxuICAgICAgICAgICB+Y29tcGFyYXRvcjooY29tcGFyYXRvciBsb3dlcl9wYXJ0KVxuICAgICAgICAgICB+bGVuZ3RoOihsb3dlcl9wYXJ0Lmxlbmd0aCArIHVwcGVyX3BhcnQubGVuZ3RoKSlcbiAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3JhbmdlX2luY2x1c2l2ZSB0LnRyZWUgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPVxuICAgIFRyZWUwLnJhbmdlX3RvX2FsaXN0IHQudHJlZSB+bWluIH5tYXggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBjbG9zZXN0X2tleSB0IGRpciBrZXkgPVxuICAgIFRyZWUwLmNsb3Nlc3Rfa2V5IHQudHJlZSBkaXIga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IFRyZWUwLm50aCB0LnRyZWUgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB0IGtleSA9IFRyZWUwLnJhbmsgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQudHJlZSB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gbGlrZV9tYXliZV9ub19vcCB0IChFbXB0eSwgMClcbiAgOztcbmVuZFxuXG4oKiBbMF0gaXMgdXNlZCBhcyB0aGUgW2xlbmd0aF0gYXJndW1lbnQgZXZlcnl3aGVyZSBpbiB0aGlzIG1vZHVsZSwgc2luY2UgdHJlZXMgZG8gbm90XG4gICBoYXZlIHRoZWlyIGxlbmd0aHMgc3RvcmVkIGF0IHRoZSByb290LCB1bmxpa2UgbWFwcy4gVGhlIHZhbHVlcyBhcmUgZGlzY2FyZGVkIGFsd2F5cy4gKilcbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGsgdiA9IFRyZWUwLnNpbmdsZXRvbiBrIHZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgZnN0IChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOmZzdFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgKHRyZWUsIF9zaXplKSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3IgfD4gT3JfZXJyb3IubWFwIH5mOmZzdFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPSBmc3QgKFRyZWUwLm9mX2FsaXN0X2V4biBhbGlzdCB+Y29tcGFyYXRvcilcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIGZzdCAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIGZzdCAoVHJlZTAub2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayAodHJlZSwgX3NpemUpIC0+IGBPayB0cmVlXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID0gZnN0IChUcmVlMC5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yKVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfcmVxdWlyZWRfYnlfaW50ZiB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOmZzdFxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgKHRyZWUsIF9zaXplKSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvciB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXEgPSBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmYgPVxuICAgIGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgdCA9IHRcblxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG5cbiAgbGV0IHNldCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIGZzdCAoVHJlZTAuc2V0IHQgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgZnN0XG4gICAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgICAgdFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5sZW5ndGg6MFxuICAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIHRyeSBgT2sgKGFkZF9leG4gdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhKSB3aXRoXG4gICAgfCBfIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgVHJlZTAuYWRkX211bHRpIHQgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gZnN0XG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAucmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfD4gZnN0XG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfbXVsdGkgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZiA9XG4gICAgZnN0IChUcmVlMC5jaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdXBkYXRlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX2V4blxuICAgICAgdFxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGZpbmQgfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5maW5kIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIGZzdCAoVHJlZTAucmVtb3ZlIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLm1lbSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgaXRlcmkgdCB+ZiA9IFRyZWUwLml0ZXJpIHQgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0IH5mXG5cbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICBUcmVlMC5pdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZlxuICBsZXQgbWFwaSB0IH5mID0gVHJlZTAubWFwaSB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0IH5mIH5pbml0IH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB+Y29tcGFyYXRvciB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyX2tleXMgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlciB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlciB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyaSB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcmkgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uX21hcCB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25pX3RmIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25pX3RmIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIH5jb21wYXJhdG9yIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6ZnN0XG4gICAgICAoVHJlZTAuY29tYmluZV9lcnJvcnNcbiAgICAgICAgIHRcbiAgICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5lcXVhbCBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0XG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHRcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdFxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxXG4gICAgICB0MlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICBmc3QgKFRyZWUwLm1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIH5jb21wYXJhdG9yIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBMZW5ndGggY29tcHV0YXRpb24gbWFrZXMgdGhpcyBzaWduaWZpY2FudGx5IHNsb3dlciB0aGFuIFttZXJnZV9za2V3ZWRdIG9uIGEgbWFwXG4gICAgICAgd2l0aCBhIFtsZW5ndGhdIGZpZWxkLCBidXQgZG9lcyBwcmVzZXJ2ZSBhbW91bnQgb2YgYWxsb2NhdGlvbi4gKilcbiAgICBmc3RcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxXG4gICAgICAgICB0MlxuICAgICAgICAgfmxlbmd0aDE6KGxlbmd0aCB0MSlcbiAgICAgICAgIH5sZW5ndGgyOihsZW5ndGggdDIpXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0IH5mXG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGsgPSBUcmVlMC5zcGxpdCB0IGsgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IGFwcGVuZCB+Y29tcGFyYXRvciB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgVHJlZTAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBzdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBfLCByZXQsIF8gPVxuICAgICAgVHJlZTAuc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+bG93ZXJfYm91bmRcbiAgICAgICAgfnVwcGVyX2JvdW5kXG4gICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgcmV0XG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgICAgdFxuICAgICAgfm1pblxuICAgICAgfm1heFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggPVxuICAgIFRyZWUwLnJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjbG9zZXN0X2tleSB+Y29tcGFyYXRvciB0IGRpciBrZXkgPVxuICAgIFRyZWUwLmNsb3Nlc3Rfa2V5IHQgZGlyIGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IFRyZWUwLm50aCB0IG5cbiAgbGV0IG50aF9leG4gdCBuID0gT3B0aW9uLnZhbHVlX2V4biAobnRoIHQgbilcbiAgbGV0IHJhbmsgfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5yYW5rIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdFxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgZnN0IChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2ggVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBFbXB0eVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBtYXRjaCBUcmVlMC5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mIHdpdGhcbiAgICB8IGBPayAodCwgXykgLT4gYE9rIHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9IGZzdCAoVHJlZTAubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYpXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICd3KSB0ID0gKCdrLCAndikgVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50XG5cbiAgICBsZXQgZW1wdHkgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG5cbiAgICBsZXQgYWRkX2V4biB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IHQgd2l0aFxuICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgRXJyb3IucmFpc2VfcyAoU2V4cC5BdG9tIFwiTWFwLkJ1aWxkX2luY3JlYXNpbmcuYWRkOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgIHwgXyAtPiBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdCB+a2V5IH5kYXRhXG4gICAgOztcblxuICAgIGxldCB0b190cmVlIHQgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBrIHYgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gayB2OyBsZW5ndGggPSAxIH1cbiAgbGV0IG9mX3RyZWUwIH5jb21wYXJhdG9yICh0cmVlLCBsZW5ndGgpID0geyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHRyZWUsIFRyZWUwLmxlbmd0aCB0cmVlKVxuICBsZXQgdG9fdHJlZSA9IHRvX3RyZWVcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAgIH5mOihmdW4gdHJlZSAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayAodHJlZSwgbGVuZ3RoKSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX2FsaXN0X29yX2Vycm9yIGFsaXN0IH5jb21wYXJhdG9yKSB+ZjooZnVuIHRyZWUgLT5cbiAgICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2FsaXN0X2V4biBhbGlzdCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfml0ZXJpIHdpdGhcbiAgICB8IGBPayB0cmVlX2xlbmd0aCAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWVfbGVuZ3RoKVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mLCBsZW4pXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihvZl90cmVlMCB+Y29tcGFyYXRvcilcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgKHRyZWUsIGxlbmd0aCkgLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yKSB+ZjooZnVuIHRyZWUgLT5cbiAgICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3Qga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBtYXRjaCBUcmVlMC5tYXBfa2V5cyB0LnRyZWUgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHBhaXIgLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciBwYWlyKVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAubWFwX2tleXNfZXhuIHQudHJlZSB+ZiB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3IgPSBLLmNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBlbmRcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX3RyZWUgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgdHJlZSA9XG4gIG9mX3RyZWUgfmNvbXBhcmF0b3I6TS5jb21wYXJhdG9yIHRyZWVcbjs7XG5cbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0X211bHRpIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3RfZm9sZCBtIGEgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+aW5pdCB+ZlxuOztcblxubGV0IG9mX2FsaXN0X3JlZHVjZSBtIGEgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfaXRlcmkgbSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuXG5sZXQgb2ZfaXRlcmlfZXhuIG0gfml0ZXJpID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBtIHNlcSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzZXFcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2V4biBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9tdWx0aSBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9mb2xkIG0gcyB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5pbml0IH5mXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIG0gcyB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmZcbjs7XG5cbmxldCBtYXBfa2V5cyBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCBtYXBfa2V5c19leG4gbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxuXG5tb2R1bGUgTSAoSyA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBrIGNtcClcbiAgICAgIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgdl9vZl9zZXhwXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOksuY29tcGFyYXRvciBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrKVxuICAgICAgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKVxuICAgICAgKHZfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBMaXN0XG4gICAgICAgIChNYW55IChMaXN0IChDb25zIChLLnRfc2V4cF9ncmFtbWFyLnVudHlwZWQsIENvbnMgKHZfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkpKSkpXG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSBjb21wYXJlX3YgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjb21wYXJlX3YgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGspIGhhc2hfZm9sZF92IHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBLLmhhc2hfZm9sZF90IGhhc2hfZm9sZF92IHN0YXRlXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZXhuIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYSB+aW5pdCB+ZlxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhIH5mXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCBzIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3IgcyB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHMgfmZcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZlxuZW5kXG4iLCJvcGVuISBJbXBvcnQwXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWwuUXVldWUudFxuXG5sZXQgY3JlYXRlID0gQ2FtbC5RdWV1ZS5jcmVhdGVcbmxldCBjbGVhciA9IENhbWwuUXVldWUuY2xlYXJcbmxldCBjb3B5ID0gQ2FtbC5RdWV1ZS5jb3B5XG5sZXQgaXNfZW1wdHkgPSBDYW1sLlF1ZXVlLmlzX2VtcHR5XG5sZXQgbGVuZ3RoID0gQ2FtbC5RdWV1ZS5sZW5ndGhcbmxldCBwZWVrID0gQ2FtbC5RdWV1ZS5wZWVrXG5sZXQgcG9wID0gQ2FtbC5RdWV1ZS5wb3BcbmxldCBwdXNoID0gQ2FtbC5RdWV1ZS5wdXNoXG5sZXQgdHJhbnNmZXIgPSBDYW1sLlF1ZXVlLnRyYW5zZmVyXG5sZXQgaXRlciB0IH5mID0gQ2FtbC5RdWV1ZS5pdGVyIGYgdFxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IENhbWwuUXVldWUuZm9sZCBmIGluaXQgdFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpbmtlZF9xdWV1ZTBcblxubGV0IGVucXVldWUgdCB4ID0gTGlua2VkX3F1ZXVlMC5wdXNoIHggdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wb3AgdClcbmxldCBkZXF1ZXVlX2V4biA9IExpbmtlZF9xdWV1ZTAucG9wXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBlZWsgdClcbmxldCBwZWVrX2V4biA9IExpbmtlZF9xdWV1ZTAucGVla1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBpdGVyaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvbGRpID0gQy5mb2xkaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxubGV0IGl0ZXJpID0gQy5pdGVyaVxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9IExpbmtlZF9xdWV1ZTAudHJhbnNmZXIgc3JjIGRzdFxuXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gZW5xdWV1ZSByZXMgKGYgYSkpO1xuICByZXNcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gZW5xdWV1ZSByZXMgKGYgaSBhKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXIgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyaSBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsaXN0ID0gTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnJheSB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGVucXVldWUgdCAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIGxlbmd0aCB0IHdpdGhcbiAgfCAwIC0+IFt8fF1cbiAgfCBsZW4gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW4gKHBlZWtfZXhuIHQpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIHYgLT5cbiAgICAgIGFyci4oIWkpIDwtIHY7XG4gICAgICBpbmNyIGkpO1xuICAgIGFyclxuOztcblxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKGxpc3Rfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHNpbmdsZXRvbiBhID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IGE7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIENhbWwuSW50NjRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50NjRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IGNvbXBhcmUgPSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSA2NFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludDY0X3Bvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IENhbWwuSW50NjQub2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gQ2FtbC5JbnQ2NC5vZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDY0Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXA2NCA6IHQgLT4gdCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDE2IHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgNDhcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDMyIHggPVxuICAoKiBUaGlzIGlzIHN0cmljdGx5IGJldHRlciB0aGFuIGNvZXJjaW5nIHRvIGFuIGludDMyIHRvIHBlcmZvcm0gYnl0ZXN3YXAuIENvZXJjaW5nXG4gICAgIGZyb20gYW4gaW50MzIgd2lsbCBhZGQgdW5uZWNlc3Nhcnkgc2hpZnQgb3BlcmF0aW9ucyB0byBzaWduIGV4dGVuZCB0aGUgbnVtYmVyXG4gICAgIGFwcHJvcHJpYXRlbHkuXG4gICopXG4gIENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAzMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDQ4IHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMTZcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGluY3IgciA9IHIgOj0gYWRkICFyIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gc3ViICFyIG9uZVxuXG5leHRlcm5hbCBvZl9pbnQ2NCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0XG5sZXQgdG9faW50NjQgdCA9IHRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmV4dGVybmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnRfdHJ1bmMgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5cbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQ2NF90b19pbnRfZXhuXG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBDYW1sLkludDY0LmxvZ29yXG4gIGxldCAoIGxzciApID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IENhbWwuSW50NjQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gQ2FtbC5JbnQ2NC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuSW50NjQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuSW50NjQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIENhbWwuSW50NjQucHJlZCB4ID0gQ2FtbC5JbnQ2NC56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gQ2FtbC5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBDYW1sLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQ2NCBpIF0pO1xuICAgIGlmIENhbWwuSW50NjQuZXF1YWwgaSBDYW1sLkludDY0Lm9uZSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoQ2FtbC5JbnQ2NC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9IG5lZ1xuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlTHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVMeFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjRcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBleHRlcm5hbCAoICsgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfYWRkXCJcbiAgZXh0ZXJuYWwgKCAtICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X3N1YlwiXG4gIGV4dGVybmFsICggKiApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9tdWxcIlxuICBleHRlcm5hbCAoIC8gKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfZGl2XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogdCAtPiB0ID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogdCAtPiB0ID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X2FuZFwiXG4gIGV4dGVybmFsICggbG9yICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X29yXCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X3hvclwiXG5cbiAgbGV0IGxub3QgPSBiaXRfbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKSA6IHQgLT4gaW50IC0+IHQgPSBcIiVpbnQ2NF9sc2xcIlxuICBleHRlcm5hbCAoIGFzciApIDogdCAtPiBpbnQgLT4gdCA9IFwiJWludDY0X2FzclwiXG4gIGV4dGVybmFsICggbHNyICkgOiB0IC0+IGludCAtPiB0ID0gXCIlaW50NjRfbHNyXCJcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDY0XSBhbmQgW0ludDY0Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogQSA2M2JpdCBpbnRlZ2VyIGlzIGEgNjRiaXQgaW50ZWdlciB3aXRoIGl0cyBiaXRzIHNoaWZ0ZWQgdG8gdGhlIGxlZnRcbiAgIGFuZCBpdHMgbG93ZXN0IGJpdCBzZXQgdG8gMC5cbiAgIFRoaXMgaXMgdGhlIHNhbWUga2luZCBvZiBlbmNvZGluZyBhcyBPQ2FtbCBpbnQgb24gNjRiaXQgYXJjaGl0ZWN0dXJlLlxuICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBiZWluZyB0aGUgbG93ZXN0IGJpdCAoaW1tZWRpYXRlIGJpdCkgc2V0IHRvIDEuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuXG5tb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSAoaW50NjRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDY0X3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbm1vZHVsZSBXIDogc2lnXG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQwXG4gIGVuZFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgdmFsIHdyYXBfZXhuIDogQ2FtbC5JbnQ2NC50IC0+IHRcbiAgdmFsIHdyYXBfbW9kdWxvIDogQ2FtbC5JbnQ2NC50IC0+IHRcbiAgdmFsIHVud3JhcCA6IHQgLT4gQ2FtbC5JbnQ2NC50XG5cbiAgKCoqIFJldHVybnMgYSBub24tbmVnYXRpdmUgaW50NjQgdGhhdCBpcyBlcXVhbCB0byB0aGUgaW5wdXQgaW50NjMgbW9kdWxvIDJeNjMuICopXG4gIHZhbCB1bndyYXBfdW5zaWduZWQgOiB0IC0+IENhbWwuSW50NjQudFxuXG4gIHZhbCBpbnZhcmlhbnQgOiB0IC0+IHVuaXRcbiAgdmFsIGFkZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdWIgOiB0IC0+IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIHN1Y2MgOiB0IC0+IHRcbiAgdmFsIHByZWQgOiB0IC0+IHRcbiAgdmFsIG11bCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGl2IDogdCAtPiB0IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3Bjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBiaXRfbm90IDogdCAtPiB0XG4gIHZhbCBiaXRfeG9yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9vciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfYW5kIDogdCAtPiB0IC0+IHRcbiAgdmFsIHNoaWZ0X2xlZnQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQ2NCA6IHQgLT4gQ2FtbC5JbnQ2NC50XG4gIHZhbCBvZl9pbnQ2NCA6IENhbWwuSW50NjQudCAtPiB0IG9wdGlvblxuICB2YWwgb2ZfaW50NjRfZXhuIDogQ2FtbC5JbnQ2NC50IC0+IHRcbiAgdmFsIG9mX2ludDY0X3RydW5jIDogQ2FtbC5JbnQ2NC50IC0+IHRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBjZWlsX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGZsb29yX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGNlaWxfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBmbG9vcl9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGlzX3BvdzIgOiB0IC0+IGJvb2xcbiAgdmFsIGNseiA6IHQgLT4gaW50XG4gIHZhbCBjdHogOiB0IC0+IGludFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgVDBcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIGxldCB3cmFwX2V4biB4ID1cbiAgICAoKiBSYWlzZXMgaWYgdGhlIGludDY0IHZhbHVlIGRvZXMgbm90IGZpdCBvbiBpbnQ2My4gKilcbiAgICBDb252LmludDY0X2ZpdF9vbl9pbnQ2M19leG4geDtcbiAgICBDYW1sLkludDY0Lm11bCB4IDJMXG4gIDs7XG5cbiAgbGV0IHdyYXAgeCA9XG4gICAgaWYgQ29udi5pbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiBTb21lIChDYW1sLkludDY0Lm11bCB4IDJMKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgd3JhcF9tb2R1bG8geCA9IENhbWwuSW50NjQubXVsIHggMkxcbiAgbGV0IHVud3JhcCB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCB4IDFcbiAgbGV0IHVud3JhcF91bnNpZ25lZCB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMVxuXG4gICgqIFRoaXMgZG9lcyBub3QgdXNlIHdyYXAgb3IgdW53cmFwIHRvIGF2b2lkIGdlbmVyYXRpbmcgZXhjZXB0aW9ucyBpbiB0aGUgY2FzZSBvZlxuICAgICBvdmVyZmxvd3MuIFRoaXMgaXMgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBpbnQgdHlwZSBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlLiAqKVxuICBsZXQgZjIgZiBhIGIgPVxuICAgIENhbWwuSW50NjQubXVsIChmIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IGEgMSkgKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgYiAxKSkgMkxcbiAgOztcblxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZUxcbiAgbGV0IG0geCA9IENhbWwuSW50NjQubG9nYW5kIHggbWFza1xuICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKG0gdCA9IHQpXG4gIGxldCBhZGQgeCB5ID0gQ2FtbC5JbnQ2NC5hZGQgeCB5XG4gIGxldCBzdWIgeCB5ID0gQ2FtbC5JbnQ2NC5zdWIgeCB5XG4gIGxldCBuZWcgeCA9IENhbWwuSW50NjQubmVnIHhcbiAgbGV0IGFicyB4ID0gQ2FtbC5JbnQ2NC5hYnMgeFxuICBsZXQgb25lID0gd3JhcF9leG4gMUxcbiAgbGV0IHN1Y2MgYSA9IGFkZCBhIG9uZVxuICBsZXQgcHJlZCBhID0gc3ViIGEgb25lXG4gIGxldCBtaW5fdmFsdWUgPSBtIENhbWwuSW50NjQubWluX2ludFxuICBsZXQgbWF4X3ZhbHVlID0gbSBDYW1sLkludDY0Lm1heF9pbnRcbiAgbGV0IGJpdF9ub3QgeCA9IG0gKENhbWwuSW50NjQubG9nbm90IHgpXG4gIGxldCBiaXRfYW5kID0gQ2FtbC5JbnQ2NC5sb2dhbmRcbiAgbGV0IGJpdF94b3IgPSBDYW1sLkludDY0LmxvZ3hvclxuICBsZXQgYml0X29yID0gQ2FtbC5JbnQ2NC5sb2dvclxuICBsZXQgc2hpZnRfbGVmdCB4IGkgPSBDYW1sLkludDY0LnNoaWZ0X2xlZnQgeCBpXG4gIGxldCBzaGlmdF9yaWdodCB4IGkgPSBtIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IHggaSlcbiAgbGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpID0gbSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggaSlcbiAgbGV0IHBvdyA9IGYyIEludF9tYXRoLlByaXZhdGUuaW50NjNfcG93X29uX2ludDY0XG4gIGxldCBtdWwgYSBiID0gQ2FtbC5JbnQ2NC5tdWwgYSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpXG4gIGxldCBkaXYgYSBiID0gd3JhcF9tb2R1bG8gKENhbWwuSW50NjQuZGl2IGEgYilcbiAgbGV0IHJlbSBhIGIgPSBDYW1sLkludDY0LnJlbSBhIGJcbiAgbGV0IHBvcGNvdW50IHggPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudCB4XG4gIGxldCB0b19pbnQ2NCB0ID0gdW53cmFwIHRcbiAgbGV0IG9mX2ludDY0IHQgPSB3cmFwIHRcbiAgbGV0IG9mX2ludDY0X2V4biB0ID0gd3JhcF9leG4gdFxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgdCA9IHdyYXBfbW9kdWxvIHRcbiAgbGV0IHRfb2Zfc2V4cCB4ID0gd3JhcF9leG4gKGludDY0X29mX3NleHAgeClcbiAgbGV0IHNleHBfb2ZfdCB4ID0gc2V4cF9vZl9pbnQ2NCAodW53cmFwIHgpXG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBpc19wb3cyIHggPSBJbnQ2NC5pc19wb3cyICh1bndyYXAgeClcblxuICBsZXQgY2x6IHggPVxuICAgICgqIFdlIHJ1biBJbnQ2NC5jbHogZGlyZWN0bHkgb24gdGhlIHdyYXBwZWQgaW50NjMgdmFsdWUuIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHRoZVxuICAgICAgIGJpdHMgb2YgdGhlIGludDYzX2VtdWwgYXJlIGxlZnQtYWxpZ25lZCBpbiB0aGUgSW50NjQuICopXG4gICAgSW50NjQuY2x6IHhcbiAgOztcblxuICBsZXQgY3R6IHggPSBJbnQ2NC5jdHogKHVud3JhcCB4KVxuICBsZXQgZmxvb3JfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBjZWlsX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgZmxvb3JfbG9nMiB4ID0gSW50NjQuZmxvb3JfbG9nMiAodW53cmFwIHgpXG4gIGxldCBjZWlsX2xvZzIgeCA9IEludDY0LmNlaWxfbG9nMiAodW53cmFwIHgpXG5lbmRcblxub3BlbiBXXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFcudCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBXLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChXLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKFcuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFcuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFcuY29tcGFyZVxuICBsZXQgaW52YXJpYW50ID0gVy5pbnZhcmlhbnRcblxuICAoKiBXZSBkb24ndCBleHBlY3QgW2hhc2hdIHRvIGZvbGxvdyB0aGUgYmVoYXZpb3Igb2YgaW50IGluIDY0Yml0IGFyY2hpdGVjdHVyZSAqKVxuICBsZXQgXyA9IGhhc2hcbiAgbGV0IGhhc2ggKHggOiB0KSA9IENhbWwuSGFzaHRibC5oYXNoIHhcbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgaW52YWxpZF9zdHIgeCA9IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQ2My5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiB4ICgpXG5cbiAgKCpcbiAgICAgXCJzaWduXCIgcmVmZXJzIHRvIHdoZXRoZXIgdGhlIG51bWJlciBzdGFydHMgd2l0aCBhICctJ1xuICAgICBcInNpZ25lZG5lc3MgPSBmYWxzZVwiIG1lYW5zIHRoZSByZXN0IG9mIHRoZSBudW1iZXIgaXMgcGFyc2VkIGFzIHVuc2lnbmVkIGFuZCB0aGVuIGNhc3RcbiAgICAgdG8gc2lnbmVkIHdpdGggd3JhcC1hcm91bmQgbW9kdWxvIDJeaVxuICAgICBcInNpZ25lZG5lc3MgPSB0cnVlXCIgbWVhbnMgbm8gc3VjaCBjcmF6aW5lc3MgaGFwcGVuc1xuXG4gICAgIFRoZSB0ZXJtaW5vbG9neSBhbmQgdGhlIGxvZ2ljIGlzIGR1ZSB0byB0aGUgY29kZSBpbiBieXRlcnVuL2ludHMuYyBpbiBvY2FtbCA0LjAzXG4gICAgIChbcGFyc2Vfc2lnbl9hbmRfYmFzZV0gZnVuY3Rpb24pLlxuXG4gICAgIFNpZ25lZG5lc3MgZXF1YWxzIHRydWUgZm9yIHBsYWluIGRlY2ltYWwgbnVtYmVyIChlLmcuIDEyMzUsIC02Nzg5KVxuXG4gICAgIFNpZ25lZG5lc3MgZXF1YWxzIGZhbHNlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgIC0gWzB4ZmZmZl0sIFstMHhmZmZmXSAoaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBiMDEwMV0sIFstMGIwMTAxXSAoYmluYXJ5IHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswbzEyMzddLCBbLTBvMTIzN10gKG9jdGFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswdTk4MTJdLCBbLTB1OTgxMl0gKHVuc2lnbmVkIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gLSBhdmFpbGFibGUgZnJvbSBPQ2FtbCA0LjAzKSAqKVxuICBsZXQgc2lnbl9hbmRfc2lnbmVkbmVzcyB4ID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCB4IGluXG4gICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBwb3MsIHNpZ24gPVxuICAgICAgaWYgMCA8IGxlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHguWzBdIHdpdGhcbiAgICAgICAgfCAnLScgLT4gMSwgYE5lZ1xuICAgICAgICB8ICcrJyAtPiAxLCBgUG9zXG4gICAgICAgIHwgXyAtPiAwLCBgUG9zKVxuICAgICAgZWxzZSAwLCBgUG9zXG4gICAgaW5cbiAgICBpZiBwb3MgKyAyIDwgbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYzEgPSB4Lltwb3NdIGluXG4gICAgICBsZXQgYzIgPSB4Lltwb3MgKyAxXSBpblxuICAgICAgbWF0Y2ggYzEsIGMyIHdpdGhcbiAgICAgIHwgJzAnLCAnMCcgLi4gJzknIC0+IHNpZ24sIHRydWVcbiAgICAgIHwgJzAnLCBfIC0+IHNpZ24sIGZhbHNlXG4gICAgICB8IF8gLT4gc2lnbiwgdHJ1ZSlcbiAgICBlbHNlIHNpZ24sIHRydWVcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHggPSBDYW1sLkludDY0LnRvX3N0cmluZyAodW53cmFwIHgpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgIHRyeVxuICAgICAgbGV0IHNpZ24sIHNpZ25lZG5lc3MgPSBzaWduX2FuZF9zaWduZWRuZXNzIHN0ciBpblxuICAgICAgaWYgc2lnbmVkbmVzc1xuICAgICAgdGhlbiBvZl9pbnQ2NF9leG4gKENhbWwuSW50NjQub2Zfc3RyaW5nIHN0cilcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcG9zX3N0ciA9XG4gICAgICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICAgICAgfCBgTmVnIC0+IFN0cmluZy5zdWIgc3RyIH5wb3M6MSB+bGVuOihTdHJpbmcubGVuZ3RoIHN0ciAtIDEpXG4gICAgICAgICAgfCBgUG9zIC0+IHN0clxuICAgICAgICBpblxuICAgICAgICBsZXQgaW50NjQgPSBDYW1sLkludDY0Lm9mX3N0cmluZyBwb3Nfc3RyIGluXG4gICAgICAgICgqIHVuc2lnbmVkIDYzLWJpdCBpbnQgbXVzdCBwYXJzZSBhcyBhIHBvc2l0aXZlIHNpZ25lZCA2NC1iaXQgaW50ICopXG4gICAgICAgIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpbnQ2NCAwTCB0aGVuIGludmFsaWRfc3RyIHN0cjtcbiAgICAgICAgbGV0IGludDYzID0gd3JhcF9tb2R1bG8gaW50NjQgaW5cbiAgICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICAgIHwgYE5lZyAtPiBuZWcgaW50NjNcbiAgICAgICAgfCBgUG9zIC0+IGludDYzKVxuICAgIHdpdGhcbiAgICB8IF8gLT4gaW52YWxpZF9zdHIgc3RyXG4gIDs7XG5cbiAgbGV0IGJzd2FwMTYgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDE2ICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDMyIHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAzMiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXA0OCB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwNDggKHVud3JhcCB0KSlcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG51bV9iaXRzID0gNjNcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGJpdF9ub3RcbmxldCBiaXRfeG9yID0gYml0X3hvclxubGV0IGJpdF9vciA9IGJpdF9vclxubGV0IGJpdF9hbmQgPSBiaXRfYW5kXG5sZXQgcG9wY291bnQgPSBwb3Bjb3VudFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBwb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVcbmxldCBtaW51c19vbmUgPSB3cmFwX2V4biBDYW1sLkludDY0Lm1pbnVzX29uZVxubGV0IG9uZSA9IHdyYXBfZXhuIENhbWwuSW50NjQub25lXG5sZXQgemVybyA9IHdyYXBfZXhuIENhbWwuSW50NjQuemVyb1xubGV0IGlzX3BvdzIgPSBpc19wb3cyXG5sZXQgZmxvb3JfcG93MiA9IGZsb29yX3BvdzJcbmxldCBjZWlsX3BvdzIgPSBjZWlsX3BvdzJcbmxldCBmbG9vcl9sb2cyID0gZmxvb3JfbG9nMlxubGV0IGNlaWxfbG9nMiA9IGNlaWxfbG9nMlxubGV0IGNseiA9IGNselxubGV0IGN0eiA9IGN0elxubGV0IHRvX2Zsb2F0IHggPSBDYW1sLkludDY0LnRvX2Zsb2F0ICh1bndyYXAgeClcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgeCA9IHdyYXBfbW9kdWxvIChDYW1sLkludDY0Lm9mX2Zsb2F0IHgpXG5cbmxldCBvZl9mbG9hdCB0ID1cbiAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIHQgPj0gZmxvYXRfbG93ZXJfYm91bmQgJiYgdCA8PSBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIHdyYXBfbW9kdWxvIChDYW1sLkludDY0Lm9mX2Zsb2F0IHQpXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDYzLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgb2ZfaW50NjQgPSBvZl9pbnQ2NFxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gb2ZfaW50NjRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IHRvX2ludDY0XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxuXG4oKiBXZSBjYW4gcmV1c2UgY29udmVyc2lvbiBmdW5jdGlvbiBmcm9tL3RvIGludDY0IGhlcmUuICopXG5sZXQgb2ZfaW50IHggPSB3cmFwX2V4biAoQ29udi5pbnRfdG9faW50NjQgeClcbmxldCBvZl9pbnRfZXhuIHggPSBvZl9pbnQgeFxubGV0IHRvX2ludCB4ID0gQ29udi5pbnQ2NF90b19pbnQgKHVud3JhcCB4KVxubGV0IHRvX2ludF9leG4geCA9IENvbnYuaW50NjRfdG9faW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50X3RydW5jIHggPSBDb252LmludDY0X3RvX2ludF90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfaW50MzIgeCA9IHdyYXBfZXhuIChDb252LmludDMyX3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50MzJfZXhuIHggPSBvZl9pbnQzMiB4XG5sZXQgdG9faW50MzIgeCA9IENvbnYuaW50NjRfdG9faW50MzIgKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX3RydW5jIHggPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jICh1bndyYXAgeClcbmxldCBvZl9uYXRpdmVpbnQgeCA9IG9mX2ludDY0IChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF9leG4geCA9IHdyYXBfZXhuIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF90cnVuYyB4ID0gb2ZfaW50NjRfdHJ1bmMgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgdG9fbmF0aXZlaW50IHggPSBDb252LmludDY0X3RvX25hdGl2ZWludCAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jICh1bndyYXAgeClcblxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoVC5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIFQuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gVC5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuXG4gICAgbGV0IHRvX3N0cmluZyBpID1cbiAgICAgICgqIHRoZSB1c2Ugb2YgW3Vud3JhcF91bnNpZ25lZF0gaGVyZSBpcyBpbXBvcnRhbnQgZm9yIHRoZSBjYXNlIG9mIFttaW5fdmFsdWVdICopXG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVMeFwiICh1bndyYXBfdW5zaWduZWQgaSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gb2Zfc3RyaW5nIChcIjB4XCIgXiBzKVxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2My5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcgeFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2M1wiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjNdIGFuZCBbSW50NjMuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICB0eXBlIGVtdWxhdGVkID0gdFxuXG4gIHR5cGUgKCd1bmRlcmx5aW5nX3R5cGUsICdpbnRlcm1lZGlhdGVfdHlwZSkgdCA9XG4gICAgfCBJbnQgOiAoaW50LCBpbnQpIHRcbiAgICB8IEludDY0IDogKGludDY0LCBlbXVsYXRlZCkgdFxuZW5kXG5cbmxldCByZXByID0gUmVwci5JbnQ2NFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9ib29sIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIGZhbHNlOyB0cnVlIF0gOiB0IGxpc3QpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9ib29sXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9ib29sIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChib29sX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Jvb2wgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYm9vbF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICAgIHwgcyAtPiBpbnZhbGlkX2FyZ2YgXCJCb29sLm9mX3N0cmluZzogZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZSBidXQgZ290ICVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBDYW1sLnN0cmluZ19vZl9ib29sXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQm9vbFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCB0b19pbnQgeCA9IGJvb2xfdG9faW50IHhcblxubW9kdWxlIE5vbl9zaG9ydF9jaXJjdWl0aW5nID0gc3RydWN0XG4gICgqIFdlIGRvbid0IGV4cG9zZSB0aGlzLCBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGJyZWFrIHRoZSBpbnZhcmlhbnQgbWVudGlvbmVkIGJlbG93IG9mXG4gICAgICh0b19pbnQgdHJ1ZSA9IDEpIGFuZCAodG9faW50IGZhbHNlID0gMCkuICopXG4gIGxldCB1bnNhZmVfb2ZfaW50ICh4IDogaW50KSA6IGJvb2wgPSBDYW1sLk9iai5tYWdpYyB4XG4gIGxldCAoIHx8ICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbG9yIHRvX2ludCBiKVxuICBsZXQgKCAmJiApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxhbmQgdG9faW50IGIpXG5lbmRcblxuKCogV2UgZG8gdGhpcyBhcyBhIGRpcmVjdCBhc3NlcnQgb24gdGhlIHRoZW9yeSB0aGF0IGl0J3MgYSBjaGVhcCB0aGluZyB0byB0ZXN0IGFuZCBhXG4gICByZWFsbHkgY29yZSBpbnZhcmlhbnQgdGhhdCB3ZSBuZXZlciBleHBlY3QgdG8gYnJlYWssIGFuZCB3ZSBzaG91bGQgYmUgaGFwcHkgZm9yIGFcbiAgIHByb2dyYW0gdG8gZmFpbCBpbW1lZGlhdGVseSBpZiB0aGlzIGlzIHZpb2xhdGVkLiAqKVxubGV0ICgpID0gYXNzZXJ0IChQb2x5LiggPSApICh0b19pbnQgdHJ1ZSkgMSAmJiBQb2x5LiggPSApICh0b19pbnQgZmFsc2UpIDApXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBDYW1sLkludDMyXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnQzMlxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludDMyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDMyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDMyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSAzMlxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50MzIub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIEluZml4X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgb3BlbiBQb2x5XG5cbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSB4ID49IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSB4IDw9IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSB4ID4geVxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0geCA8IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSB4IDw+IHlcbmVuZFxuXG5tb2R1bGUgQ29tcGFyZSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4X2NvbXBhcmVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBDb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX2ludDMyIHQgPSB0XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiB0ID0gdFxubGV0IHRvX2ludDMyX2V4biA9IHRvX2ludDMyXG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQzMl9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9faW50MzJcbmxldCBvZl9pbnRfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50X3RydW5jID0gQ29udi5pbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQgPSBDb252LmludDMyX3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252LmludDMyX3RvX2ludF90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252LmludDMyX3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwMzIgOiB0IC0+IHQgPSBcIiVic3dhcF9pbnQzMlwiXG5cbmxldCBic3dhcDE2IHggPSBDYW1sLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwMzIgeCkgMTZcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gQ2FtbC5JbnQzMi5sb2dvclxuICBsZXQgKCBsc3IgKSA9IENhbWwuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBDYW1sLkludDMyLmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IENhbWwuSW50MzIucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBDYW1sLkludDMyLnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBDYW1sLkludDMyLnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBDYW1sLkludDMyLnByZWQgeCA9IENhbWwuSW50MzIuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludDMyIGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gQ2FtbC5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBDYW1sLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQzMiBpIF0pO1xuICAgICgqIFRoZSBbaSA9IDFdIGNoZWNrIGlzIG5lZWRlZCBiZWNhdXNlIGNseigwKSBpcyB1bmRlZmluZWQgKilcbiAgICBpZiBDYW1sLkludDMyLmVxdWFsIGkgQ2FtbC5JbnQzMi5vbmUgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKENhbWwuSW50MzIucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDMyIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQzMlxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJWx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlbHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMi5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyXCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoQ29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50MzJdIGFuZCBbSW50MzIuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgUmVwciA9IEludDYzX2VtdWwuUmVwclxuXG4oKiBJbiBhIHdvcmxkIHdoZXJlIHRoZSBjb21waWxlciB3b3VsZCB1bmRlcnN0YW5kIFtAQGltbWVkaWF0ZTY0XSBhdHRyaWJ1dGVzIG9uIHR5cGVcbiAgIGRlY2xhcmF0aW9ucywgdGhpcyBtb2R1bGUgaXMgaG93IG9uZSB3b3VsZCBwcm9kdWNlIGEgW3R5cGUgdF0gd2l0aCB0aGlzIGF0dHJpYnV0ZS4gKilcbm1vZHVsZSBJbW1lZGlhdGU2NCA6IHNpZ1xuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgOiBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgdmFsIHJlcHIgOiB0IHJlcHJcbiAgZW5kXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIGxldCByZXByID1cbiAgICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgfCBXNjQgLT4gKENhbWwuT2JqLm1hZ2ljIEltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICAgIHwgVzMyIC0+IChDYW1sLk9iai5tYWdpYyBOb25faW1tZWRpYXRlIDogdCByZXByKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgSW1tZWRpYXRlNjQuTWFrZSAoSW50KSAoSW50NjNfZW11bClcblxubW9kdWxlIEJhY2tlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBJbnRfaW50Zi5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludCBvcHRpb25cbiAgICB2YWwgdG9faW50X3RydW5jIDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfaW50MzIgOiBpbnQzMiAtPiB0XG4gICAgdmFsIHRvX2ludDMyIDogdCAtPiBJbnQzMi50IG9wdGlvblxuICAgIHZhbCB0b19pbnQzMl90cnVuYyA6IHQgLT4gSW50MzIudFxuICAgIHZhbCBvZl9pbnQ2NCA6IEludDY0LnQgLT4gdCBvcHRpb25cbiAgICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBJbnQ2NC50IC0+IHRcbiAgICB2YWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgb3B0aW9uXG4gICAgdmFsIHRvX25hdGl2ZWludCA6IHQgLT4gbmF0aXZlaW50IG9wdGlvblxuICAgIHZhbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiBuYXRpdmVpbnQgLT4gdFxuICAgIHZhbCB0b19uYXRpdmVpbnRfdHJ1bmMgOiB0IC0+IG5hdGl2ZWludFxuICAgIHZhbCBvZl9mbG9hdF91bmNoZWNrZWQgOiBmbG9hdCAtPiB0XG4gICAgdmFsIHJlcHIgOiAodCwgdCkgSW50NjNfZW11bC5SZXByLnRcbiAgICB2YWwgYnN3YXAxNiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDMyIDogdCAtPiB0XG4gICAgdmFsIGJzd2FwNDggOiB0IC0+IHRcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTmF0aXZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCB0b19pbnQgeCA9IFNvbWUgeFxuICAgIGxldCB0b19pbnRfdHJ1bmMgeCA9IHhcblxuICAgICgqIFtvZl9pbnQzMl9leG5dIGlzIGEgc2FmZSBvcGVyYXRpb24gb24gcGxhdGZvcm1zIHdpdGggNjQtYml0IHdvcmQgc2l6ZXMuICopXG4gICAgbGV0IG9mX2ludDMyID0gb2ZfaW50MzJfZXhuXG4gICAgbGV0IHRvX25hdGl2ZWludF90cnVuYyB4ID0gdG9fbmF0aXZlaW50IHhcbiAgICBsZXQgdG9fbmF0aXZlaW50IHggPSBTb21lICh0b19uYXRpdmVpbnQgeClcbiAgICBsZXQgcmVwciA9IEludDYzX2VtdWwuUmVwci5JbnRcbiAgICBsZXQgYnN3YXAzMiB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDMyIChJbnQ2NC5vZl9pbnQgdCkpXG4gICAgbGV0IGJzd2FwNDggdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXA0OCAoSW50NjQub2ZfaW50IHQpKVxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgUykgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IChtb2R1bGUgTmF0aXZlIDogUylcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gKG1vZHVsZSBJbnQ2M19lbXVsIDogUylcbiAgOztcbmVuZFxuXG5pbmNsdWRlICh2YWwgQmFja2VuZC5pbXBsIDogQmFja2VuZC5TKVxuXG5tb2R1bGUgT3ZlcmZsb3dfZXhuID0gc3RydWN0XG4gIGxldCAoICsgKSB0IHUgPVxuICAgIGxldCBzdW0gPSB0ICsgdSBpblxuICAgIGlmIGJpdF9vciAoYml0X3hvciB0IHUpIChiaXRfeG9yIHQgKGJpdF9ub3Qgc3VtKSkgPCB6ZXJvXG4gICAgdGhlbiBzdW1cbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICsgKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwic3VtXCIsIHNleHBfb2ZfdCBzdW0gXSlcbiAgOztcblxuICBsZXQgKCAtICkgdCB1ID1cbiAgICBsZXQgZGlmZiA9IHQgLSB1IGluXG4gICAgbGV0IHBvc19kaWZmID0gdCA+IHUgaW5cbiAgICBpZiB0IDw+IHUgJiYgQm9vbC4oIDw+ICkgcG9zX2RpZmYgKGlzX3Bvc2l0aXZlIGRpZmYpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAtICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcImRpZmZcIiwgc2V4cF9vZl90IGRpZmYgXSlcbiAgICBlbHNlIGRpZmZcbiAgOztcblxuICBsZXQgbmVnYXRpdmVfb25lID0gb2ZfaW50ICgtMSlcbiAgbGV0IGRpdl93b3VsZF9vdmVyZmxvdyB0IHUgPSB0ID0gbWluX3ZhbHVlICYmIHUgPSBuZWdhdGl2ZV9vbmVcblxuICBsZXQgKCAqICkgdCB1ID1cbiAgICBsZXQgcHJvZHVjdCA9IHQgKiB1IGluXG4gICAgaWYgdSA8PiB6ZXJvICYmIChkaXZfd291bGRfb3ZlcmZsb3cgcHJvZHVjdCB1IHx8IHByb2R1Y3QgLyB1IDw+IHQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAqICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInByb2R1Y3RcIiwgc2V4cF9vZl90IHByb2R1Y3QgXSlcbiAgICBlbHNlIHByb2R1Y3RcbiAgOztcblxuICBsZXQgKCAvICkgdCB1ID1cbiAgICBpZiBkaXZfd291bGRfb3ZlcmZsb3cgdCB1XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAvICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInByb2R1Y3RcIiwgc2V4cF9vZl90ICh0IC8gdSkgXSlcbiAgICBlbHNlIHQgLyB1XG4gIDs7XG5cbiAgbGV0IGFicyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwiYWJzIG92ZXJmbG93XCIgZWxzZSBhYnMgdFxuICBsZXQgbmVnIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJuZWcgb3ZlcmZsb3dcIiBlbHNlIG5lZyB0XG5lbmRcblxubGV0ICgpID0gYXNzZXJ0IChJbnQuKCA9ICkgbnVtX2JpdHMgNjMpXG5cbmxldCByYW5kb21fb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnQgc3RhdGUgKHRvX2ludF9leG4gYm91bmQpKVxuOztcblxubGV0IHJhbmRvbV9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjQgc3RhdGUgKHRvX2ludDY0IGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb20gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX29mX2ludFxuICB8IFczMiAtPiByYW5kb21fb2ZfaW50NjRcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsbyBoaSA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludF9pbmNsIHN0YXRlICh0b19pbnRfZXhuIGxvKSAodG9faW50X2V4biBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsbyBoaSA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0X2luY2wgc3RhdGUgKHRvX2ludDY0IGxvKSAodG9faW50NjQgaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9pbmNsX29mX2ludFxuICB8IFczMiAtPiByYW5kb21faW5jbF9vZl9pbnQ2NFxuOztcblxubGV0IGZsb29yX2xvZzIgdCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiB0IHw+IHRvX2ludF9leG4gfD4gSW50LmZsb29yX2xvZzJcbiAgfCBXMzIgLT5cbiAgICBpZiB0IDw9IHplcm9cbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfdCB0IF0pO1xuICAgIGxldCBmbG9vcl9sb2cyID0gcmVmIChJbnQuKCAtICkgbnVtX2JpdHMgMikgaW5cbiAgICB3aGlsZSBlcXVhbCB6ZXJvIChiaXRfYW5kIHQgKHNoaWZ0X2xlZnQgb25lICFmbG9vcl9sb2cyKSkgZG9cbiAgICAgIGZsb29yX2xvZzIgOj0gSW50LiggLSApICFmbG9vcl9sb2cyIDFcbiAgICBkb25lO1xuICAgICFmbG9vcl9sb2cyXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVwciA9IFJlcHJcblxuICBsZXQgcmVwciA9IHJlcHJcblxuICBtb2R1bGUgRW11bCA9IEludDYzX2VtdWxcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5LZXkgKilcbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogVHdvIFt0XXMgdGhhdCBbY29tcGFyZV0gZXF1YWwgbXVzdCBoYXZlIGVxdWFsIGhhc2hlcyBmb3IgdGhlIGhhc2h0YWJsZVxuICAgICAgICB0byBiZWhhdmUgcHJvcGVybHkuICopXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICBlbmRcblxuICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuTWVyZ2VfaW50b19hY3Rpb24gKilcbm1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUmVtb3ZlXG4gICAgfCBTZXRfdG8gb2YgJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBzaWdcbiAgKCoqIHsyIEFjY2Vzc29yc30gKilcblxuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICB2YWwgc2V4cF9vZl9rZXkgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IFNleHAudFxuICB2YWwgY2xlYXIgOiAoXywgXykgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEF0dGVtcHRpbmcgdG8gbW9kaWZ5IChbc2V0XSwgW3JlbW92ZV0sIGV0Yy4pIHRoZSBoYXNodGFibGUgZHVyaW5nIGl0ZXJhdGlvbiAoW2ZvbGRdLFxuICAgICAgW2l0ZXJdLCBbaXRlcl9rZXlzXSwgW2l0ZXJpXSkgd2lsbCByYWlzZSBhbiBleGNlcHRpb24uICopXG4gIHZhbCBmb2xkIDogKCdhLCAnYikgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfKSB0IC0+IGY6KCdhIGtleSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgb3ZlciBib3RoIGtleXMgYW5kIHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuaXRlcmkgaCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgcHJpbnRfZW5kbGluZSAoUHJpbnRmLnNwcmludGYgXCIlZC0lZFwiIGtleSBkYXRhKSk7O1xuICAgICAgMS00XG4gICAgICA1LTZcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9ICopXG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IGJvb2xcbiAgdmFsIHJlbW92ZSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gdW5pdFxuICB2YWwgY2hvb3NlIDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogU2V0cyB0aGUgZ2l2ZW4gW2tleV0gdG8gW2RhdGFdLiAqKVxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbYWRkXSBhbmQgW2FkZF9leG5dIGxlYXZlIHRoZSB0YWJsZSB1bmNoYW5nZWQgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBwcmVzZW50LiAqKVxuICB2YWwgYWRkIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gWyBgT2sgfCBgRHVwbGljYXRlIF1cblxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gY2hhbmdlcyBbdF0ncyB2YWx1ZSBmb3IgW2tleV0gdG8gYmUgW2YgKGZpbmQgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGVfYW5kX3JldHVybiB0IGtleSB+Zl0gaXMgW3VwZGF0ZV0sIGJ1dCByZXR1cm5zIHRoZSByZXN1bHQgb2YgW2Ygb10uICopXG4gIHZhbCB1cGRhdGVfYW5kX3JldHVybiA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gJ2JcblxuICAoKiogW21hcCB0IGZdIHJldHVybnMgYSBuZXcgdGFibGUgd2l0aCB2YWx1ZXMgcmVwbGFjZWQgYnkgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBbZl1cbiAgICAgIHRvIHRoZSBjdXJyZW50IHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIGxldCBoJyA9IEhhc2h0YmwubWFwIGggfmY6KGZ1biB4IC0+IHggKiAyKSBpblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoJzs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgMTIpOyAoMSwgOCldXG4gICAgICB2fSAqKVxuICB2YWwgbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyB0YWJsZSBieSBmaWx0ZXJpbmcgdGhlIGdpdmVuIHRhYmxlJ3MgdmFsdWVzIGJ5IFtmXTogdGhlIGtleXMgZm9yIHdoaWNoXG4gICAgICBbZl0gYXBwbGllZCB0byB0aGUgY3VycmVudCB2YWx1ZSByZXR1cm5zIFtTb21lXSBhcmUga2VwdCwgYW5kIHRob3NlIGZvciB3aGljaCBpdFxuICAgICAgcmV0dXJucyBbTm9uZV0gYXJlIGRpc2NhcmRlZC5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuZmlsdGVyX21hcCBoIH5mOihmdW4geCAtPiBpZiB4ID4gNSB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG4gICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCA2KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYikgdCAtPiBmOignYSBrZXkgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBSZXR1cm5zIG5ldyB0YWJsZXMgd2l0aCBib3VuZCB2YWx1ZXMgcGFydGl0aW9uZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kXG4gICAgICB2YWx1ZXMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudCkgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgcGFpciBvZiB0YWJsZXMgWyh0MSwgdDIpXSwgd2hlcmUgW3QxXSBjb250YWlucyBhbGwgdGhlIGVsZW1lbnRzIG9mIHRoZVxuICAgICAgaW5pdGlhbCB0YWJsZSB3aGljaCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLCBhbmQgW3QyXSBjb250YWlucyB0aGUgcmVzdC4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX3RmXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBbZmluZF9vcl9hZGQgdCBrIH5kZWZhdWx0XSByZXR1cm5zIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBrZXkgW2tdIGlmIGl0IGlzIGluIHRoZVxuICAgICAgdGFibGUgW3RdLCBhbmQgb3RoZXJ3aXNlIGFzc2lnbnMgW2tdIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBbZGVmYXVsdCAoKV0uICopXG4gIHZhbCBmaW5kX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KHVuaXQgLT4gJ2IpIC0+ICdiXG5cbiAgKCoqIExpa2UgW2ZpbmRfb3JfYWRkXSBidXQgW2RlZmF1bHRdIHRha2VzIHRoZSBrZXkgYXMgYW4gYXJndW1lbnQuICopXG4gIHZhbCBmaW5kaV9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0OignYSBrZXkgLT4gJ2IpIC0+ICdiXG5cbiAgKCoqIFtmaW5kIHQga10gcmV0dXJucyBbU29tZV0gKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIFtrXSBpbiBbdF0sIG9yIFtOb25lXSBpZiBubyBzdWNoXG4gICAgICBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYiBvcHRpb25cblxuICAoKiogW2ZpbmRfZXhuIHQga10gcmV0dXJucyB0aGUgY3VycmVudCBiaW5kaW5nIG9mIFtrXSBpbiBbdF0sIG9yIHJhaXNlcyBbQ2FtbC5Ob3RfZm91bmRdXG4gICAgICBvciBbTm90X2ZvdW5kX3NdIGlmIG5vIHN1Y2ggYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiXG5cbiAgKCoqIFtmaW5kX2FuZF9jYWxsIHQgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZF1cblxuICAgICAgaXMgZXF1aXZhbGVudCB0bzpcblxuICAgICAgW21hdGNoIGZpbmQgdCBrIHdpdGggU29tZSB2IC0+IGlmX2ZvdW5kIHYgfCBOb25lIC0+IGlmX25vdF9mb3VuZCBrXVxuXG4gICAgICBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIHRoZSBvcHRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOignYiAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnYylcbiAgICAtPiAnY1xuXG4gICgqKiBKdXN0IGxpa2UgW2ZpbmRfYW5kX2NhbGxdLCBidXQgdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQgd2hpY2ggaXMgcGFzc2VkIHRvIFtpZl9mb3VuZF1cbiAgICAgIGFuZCBbaWZfbm90X2ZvdW5kXSwgc28gdGhhdCB0aGUgY2xpZW50IGNvZGUgY2FuIGF2b2lkIGFsbG9jYXRpbmcgY2xvc3VyZXMgb3IgdXNpbmdcbiAgICAgIHJlZnMgdG8gcGFzcyB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGluIGNvZGVcbiAgICAgIHdoaWNoIHRyaWVzIHRvIG1pbmltaXplIGhlYXAgYWxsb2NhdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooJ2IgLT4gJ2QgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZF9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooJ2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiAnY1xuXG4gICgqKiBbZmluZF9hbmRfcmVtb3ZlIHQga10gcmV0dXJucyBTb21lICh0aGUgY3VycmVudCBiaW5kaW5nKSBvZiBrIGluIHQgYW5kIHJlbW92ZXMgaXQsXG4gICAgICBvciBOb25lIGlzIG5vIHN1Y2ggYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kX2FuZF9yZW1vdmUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYiBvcHRpb25cblxuICAoKiogTWVyZ2VzIHR3byBoYXNodGFibGVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIFttZXJnZSBmIGgxIGgyXSBoYXMgYXMga2V5cyB0aGUgc2V0IG9mIGFsbCBba10gaW4gdGhlIHVuaW9uIG9mIHRoZVxuICAgICAgc2V0cyBvZiBrZXlzIG9mIFtoMV0gYW5kIFtoMl0gZm9yIHdoaWNoIFtkKGspXSBpcyBub3QgTm9uZSwgd2hlcmU6XG5cbiAgICAgIGQoaykgPVxuICAgICAgLSBbZiB+a2V5OmsgKGBMZWZ0IGQxKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMV0gbWFwcyB0byBkMSwgYW5kIFtoMl0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgUmlnaHQgZDIpXVxuICAgICAgICBpZiBba10gaW4gW2gyXSBtYXBzIHRvIGQyLCBhbmQgW2gxXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBCb3RoIChkMSwgZDIpKV1cbiAgICAgICAgb3RoZXJ3aXNlLCB3aGVyZSBba10gaW4gW2gxXSBtYXBzIHRvIFtkMV0gYW5kIFtrXSBpbiBbaDJdIG1hcHMgdG8gW2QyXS5cblxuICAgICAgRWFjaCBrZXkgW2tdIGlzIG1hcHBlZCB0byBhIHNpbmdsZSBwaWVjZSBvZiBkYXRhIFt4XSwgd2hlcmUgW2QoaykgPSBTb21lIHhdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn0gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdrLCAnYSkgdFxuICAgIC0+ICgnaywgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+IFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2IgfCBgQm90aCBvZiAnYSAqICdiIF0gLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnaywgJ2MpIHRcblxuXG4gICgqKiBFdmVyeSBba2V5XSBpbiBbc3JjXSB3aWxsIGJlIHJlbW92ZWQgb3Igc2V0IGluIFtkc3RdIGFjY29yZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlXG4gICAgICBvZiBbZl0uICopXG4gIHZhbCBtZXJnZV9pbnRvXG4gICAgOiAgc3JjOignaywgJ2EpIHRcbiAgICAtPiBkc3Q6KCdrLCAnYikgdFxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uIC0+ICdiIE1lcmdlX2ludG9fYWN0aW9uLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBrZXlzIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBrZXlzIDogKCdhLCBfKSB0IC0+ICdhIGtleSBsaXN0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGRhdGEgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ2IpIHQgLT4gJ2IgbGlzdFxuXG4gICgqKiBbZmlsdGVyX2lucGxhY2UgdCB+Zl0gcmVtb3ZlcyBhbGwgdGhlIGVsZW1lbnRzIGZyb20gW3RdIHRoYXQgZG9uJ3Qgc2F0aXNmeSBbZl0uICopXG4gIHZhbCBmaWx0ZXJfa2V5c19pbnBsYWNlIDogKCdhLCBfKSB0IC0+IGY6KCdhIGtleSAtPiBib29sKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IHVuaXRcbiAgdmFsIGZpbHRlcmlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IHVuaXRcblxuICAoKiogW21hcF9pbnBsYWNlIHQgfmZdIGFwcGxpZXMgW2ZdIHRvIGFsbCBlbGVtZW50cyBpbiBbdF0sIHRyYW5zZm9ybWluZyB0aGVtIGluXG4gICAgICBwbGFjZS4gKilcbiAgdmFsIG1hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+ICdiKSAtPiB1bml0XG5cbiAgdmFsIG1hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiKSAtPiB1bml0XG5cbiAgKCoqIFtmaWx0ZXJfbWFwX2lucGxhY2VdIGNvbWJpbmVzIHRoZSBlZmZlY3RzIG9mIFttYXBfaW5wbGFjZV0gYW5kIFtmaWx0ZXJfaW5wbGFjZV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gJ2Igb3B0aW9uKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9tYXBpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYiBvcHRpb24pIC0+IHVuaXRcblxuICAoKiogW2VxdWFsIGYgdDEgdDJdIGFuZCBbc2ltaWxhciBmIHQxIHQyXSBib3RoIHJldHVybiB0cnVlIGlmZiBbdDFdIGFuZCBbdDJdIGhhdmUgdGhlXG4gICAgICBzYW1lIGtleXMgYW5kIGZvciBhbGwga2V5cyBba10sIFtmIChmaW5kX2V4biB0MSBrKSAoZmluZF9leG4gdDIgayldLiAgW2VxdWFsXSBhbmRcbiAgICAgIFtzaW1pbGFyXSBvbmx5IGRpZmZlciBpbiB0aGVpciB0eXBlcy4gKilcbiAgdmFsIGVxdWFsIDogKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBib29sXG5cbiAgdmFsIHNpbWlsYXIgOiAoJ2IxIC0+ICdiMiAtPiBib29sKSAtPiAoJ2EsICdiMSkgdCAtPiAoJ2EsICdiMikgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIChrZXksIGRhdGEpIHBhaXJzIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCB0b19hbGlzdCA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBsaXN0XG5cblxuICAoKiogW3JlbW92ZV9pZl96ZXJvXSdzIGRlZmF1bHQgaXMgW2ZhbHNlXS4gKilcbiAgdmFsIGluY3IgOiA/Ynk6aW50IC0+ID9yZW1vdmVfaWZfemVybzpib29sIC0+ICgnYSwgaW50KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgdmFsIGRlY3IgOiA/Ynk6aW50IC0+ID9yZW1vdmVfaWZfemVybzpib29sIC0+ICgnYSwgaW50KSB0IC0+ICdhIGtleSAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgTXVsdGkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgKCoqIFthZGRfbXVsdGkgdCB+a2V5IH5kYXRhXSBpZiBba2V5XSBpcyBwcmVzZW50IGluIHRoZSB0YWJsZSB0aGVuIGNvbnNcbiAgICAgIFtkYXRhXSBvbiB0aGUgbGlzdCwgb3RoZXJ3aXNlIGFkZCBba2V5XSB3aXRoIGEgc2luZ2xlIGVsZW1lbnQgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbcmVtb3ZlX211bHRpIHQga2V5XSB1cGRhdGVzIHRoZSB0YWJsZSwgcmVtb3ZpbmcgdGhlIGhlYWQgb2YgdGhlIGxpc3QgYm91bmQgdG9cbiAgICAgIFtrZXldLiBJZiB0aGUgbGlzdCBoYXMgb25seSBvbmUgZWxlbWVudCAob3IgaXMgZW1wdHkpIHRoZW4gdGhlIGJpbmRpbmcgaXNcbiAgICAgIHJlbW92ZWQuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsIF8gbGlzdCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gICgqKiBbZmluZF9tdWx0aSB0IGtleV0gcmV0dXJucyB0aGUgZW1wdHkgbGlzdCBpZiBba2V5XSBpcyBub3QgcHJlc2VudCBpbiB0aGUgdGFibGUsXG4gICAgICByZXR1cm5zIFt0XSdzIHZhbHVlcyBmb3IgW2tleV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiAnYSBrZXkgLT4gJ2IgbGlzdFxuZW5kXG5cbnR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPVxuICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAtPiAna2V5IEtleS50XG4gIC0+ICd6XG5cbnR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAtPiAnelxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuICB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSBrZXksICdiLCB1bml0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsICgnYSBrZXkgKiAnYikgbGlzdCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2Ega2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsICgnYSBrZXkgKiAnYikgbGlzdCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICgnYSBrZXksICdiIGxpc3QsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiIGxpc3QpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ3IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICgnYSBrZXksICdyLCBnZXRfa2V5OignciAtPiAnYSBrZXkpIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBncm91cFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KVxuICAgICAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgICAgIC0+IGNvbWJpbmU6KCdiIC0+ICdiIC0+ICdiKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+ICgnYSwgJ2IpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiB7MiBDcmVhdG9yc30gKilcblxuICAoKiogVGhlIG1vZHVsZSB5b3UgcGFzcyB0byBbY3JlYXRlXSBtdXN0IGhhdmUgYSB0eXBlIHRoYXQgaXMgaGFzaGFibGUsIHNleHBhYmxlLCBhbmRcbiAgICAgIGNvbXBhcmFibGUuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KTs7XG4gICAgICAgIC0gOiAoaW50LCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj47O1xuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMywgXCJzb21ldGhpbmdcIik7ICgyLCBcIndoYXRldmVyXCIpXVxuICAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBXaGVyZWFzIFtvZl9hbGlzdF0gd2lsbCByZXBvcnQgW0R1cGxpY2F0ZV9rZXldIG5vIG1hdHRlciBob3cgbWFueSBkdXBzIHRoZXJlIGFyZSBpblxuICAgICAgeW91ciBsaXN0LCBbb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXSB3aWxsIHJlcG9ydCBlYWNoIGFuZCBldmVyeSBkdXBsaWNhdGUgZW50cnkuXG5cbiAgICAgIEZvciBleGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXkgMVxuXG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXlzIFsxOyAyXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQ3JlYXRlcyBhIHt7IU11bHRpfSBcIm11bHRpXCJ9IGhhc2h0YWJsZSwgaS5lLiwgYSBoYXNodGFibGUgd2hlcmUgZWFjaCBrZXkgcG9pbnRzIHRvIGFcbiAgICAgIGxpc3QgcG90ZW50aWFsbHkgY29udGFpbmluZyBtdWx0aXBsZSB2YWx1ZXMuIFNvIGluc3RlYWQgb2Ygc2hvcnQtY2lyY3VpdGluZyB3aXRoIGFcbiAgICAgIFtgRHVwbGljYXRlX2tleV0gdmFyaWFudCBvbiBkdXBsaWNhdGVzLCBhcyBpbiBbb2ZfYWxpc3RdLCBbb2ZfYWxpc3RfbXVsdGldIGZvbGRzXG4gICAgICB0aG9zZSB2YWx1ZXMgaW50byBhIGxpc3QgZm9yIHRoZSBnaXZlbiBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBJbnQpIFsoMSwgXCJhXCIpOyAoMSwgXCJiXCIpOyAoMiwgXCJjXCIpOyAoMiwgXCJkXCIpXTs7XG4gICAgICB2YWwgaCA6IChpbnQsIHN0cmluZyBsaXN0KSBIYXNodGJsLnQgPSA8YWJzdHI+XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgIC0gOiBzdHJpbmcgbGlzdCA9IFtcImJcIjsgXCJhXCJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gICgqKiBBcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3IgbGlzdF0gdG8gY3JlYXRlIHRoZVxuICAgICAgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlLlxuXG4gICAgICB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXVxuICAgICAgXX1cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIEhhc2h0YmwuY3JlYXRlX21hcHBlZCAobW9kdWxlIEludClcbiAgICAgICAgICAgIH5nZXRfa2V5OihmdW4geCAtPiB4KVxuICAgICAgICAgICAgfmdldF9kYXRhOihmdW4geCAtPiB4ICsgMSlcbiAgICAgICAgICAgWzE7IDI7IDNdOztcbiAgICAgICAgdmFsIGggOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBpbnQpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cblxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgbWF0Y2ggaCB3aXRoXG4gICAgICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICAgICAgfCBgRHVwbGljYXRlX2tleXMgXyAtPiBmYWlsd2l0aCBcIlwiXG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgICAgLSA6IGludCA9IDJcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gICgqKiB7WyBjcmVhdGVfd2l0aF9rZXkgfmdldF9rZXkgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIHgxOyAuLi47IGdldF9rZXkgeG4sIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX3dpdGhfa2V5XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ3IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0XG5cbiAgKCoqIExpa2UgW2NyZWF0ZV9tYXBwZWRdLCBhcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3JcbiAgICAgIGxpc3RdIHRvIGNyZWF0ZSB0aGUgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlIC0tXG4gICAgICBhbmQgdGhlbiwgbGlrZSBbYWRkX211bHRpXSwgZm9sZHMgdG9nZXRoZXIgdmFsdWVzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBrZXlzLiBIZXJlLFxuICAgICAgdGhvdWdoLCB0aGUgZnVuY3Rpb24gdXNlZCBmb3IgdGhlIGZvbGRpbmcgaXMgZ2l2ZW4gYnkgW2NvbWJpbmVdIChpbnN0ZWFkIG9mIGp1c3RcbiAgICAgIGJlaW5nIGEgW2NvbnNdKS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0YmwuZ3JvdXAgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgIH5nZXRfa2V5OihmdW4geCAtPiB4IC8gMilcbiAgICAgICAgICAgfmdldF9kYXRhOihmdW4geCAtPiB4KVxuICAgICAgICAgICB+Y29tYmluZTooZnVuIHggeSAtPiB4ICogeSlcbiAgICAgICAgICAgIFsgMTsgMjsgMzsgNF1cbiAgICAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDIsIDQpOyAoMSwgNik7ICgwLCAxKV1cbiAgICAgICB2fSAqKVxuICB2YWwgZ3JvdXBcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgLT4gY29tYmluZTooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IHNpZ1xuICB2YWwgaGFzaCA6ICdhIC0+IGludFxuICB2YWwgaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50XG5cbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgKCoqIFdlIHByb3ZpZGUgYSBbc2V4cF9vZl90XSBidXQgbm90IGEgW3Rfb2Zfc2V4cF0gZm9yIHRoaXMgdHlwZSBiZWNhdXNlIG9uZSBuZWVkcyB0byBiZVxuICAgICAgZXhwbGljaXQgYWJvdXQgdGhlIGhhc2ggYW5kIGNvbXBhcmlzb24gZnVuY3Rpb25zIHVzZWQgd2hlbiBjcmVhdGluZyBhIGhhc2h0YWJsZS5cbiAgICAgIE5vdGUgdGhhdCBbSGFzaHRibC5Qb2x5LnRdIGRvZXMgaGF2ZSBbW0BAZGVyaXZpbmcgc2V4cF1dLCBhbmQgdXNlcyBPQ2FtbCdzIGJ1aWx0LWluXG4gICAgICBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGFuZCBhbmQgcG9seW1vcnBoaWMgaGFzaGluZy4gKilcbiAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cC50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ICgqKiBAaW5saW5lICopXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgKCoqIEBpbmxpbmUgKilcblxuXG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAoKiogQGlubGluZSAqKVxuXG4gIHZhbCBoYXNoYWJsZV9zIDogKCdrZXksIF8pIHQgLT4gJ2tleSBLZXkudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgOiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuXG4gIHZhbCBoYXNoYWJsZSA6ICdhIEhhc2hhYmxlLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdrLCAndikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNodGJsID0gc2lnXG4gICgqKiBBIGhhc2ggdGFibGUgaXMgYSBtdXRhYmxlIGRhdGEgc3RydWN0dXJlIGltcGxlbWVudGluZyBhIG1hcCBiZXR3ZWVuIGtleXMgYW5kIHZhbHVlcy5cbiAgICAgIEl0IHN1cHBvcnRzIGNvbnN0YW50LXRpbWUgbG9va3VwIGFuZCBpbi1wbGFjZSBtb2RpZmljYXRpb24uXG5cbiAgICAgIHsxIFVzYWdlfVxuXG4gICAgICBBcyBhIHNpbXBsZSBleGFtcGxlLCB3ZSdsbCBjcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggc3RyaW5nIGtleXMgdXNpbmcgdGhlXG4gICAgICB7eyFjcmVhdGV9W2NyZWF0ZV19IGNvbnN0cnVjdG9yLCB3aGljaCBleHBlY3RzIGEgbW9kdWxlIGRlZmluaW5nIHRoZSBrZXkncyB0eXBlOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgaCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgU3RyaW5nKTs7XG4gICAgICAgIHZhbCBoIDogKHN0cmluZywgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+XG4gICAgICBdfVxuXG4gICAgICBXZSBjYW4gc2V0IHRoZSB2YWx1ZXMgb2YgaW5kaXZpZHVhbCBrZXlzIHdpdGgge3shc2V0fVtzZXRdfS4gSWYgdGhlIGtleSBhbHJlYWR5IGhhc1xuICAgICAgYSB2YWx1ZSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbi5cblxuICAgICAge3ZcbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjU7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiYmFyXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fVxuXG4gICAgICBXZSBjYW4gYWNjZXNzIHZhbHVlcyBieSBrZXksIG9yIGR1bXAgYWxsIG9mIHRoZSBoYXNoIHRhYmxlJ3MgZGF0YTpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuZmluZCBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCBvcHRpb24gPSBTb21lIDZcblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCA9IDZcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCA2KTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuICAgICAge3shY2hhbmdlfVtjaGFuZ2VdfSBsZXRzIHVzIGNoYW5nZSBhIGtleSdzIHZhbHVlIGJ5IGFwcGx5aW5nIHRoZSBnaXZlbiBmdW5jdGlvbjpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuY2hhbmdlIGggXCJmb29cIiAoZnVuIHggLT5cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBTb21lICh4ICogMilcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgKTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgMTIpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG5cbiAgICAgIFdlIGNhbiB1c2Uge3shbWVyZ2V9W21lcmdlXX0gdG8gbWVyZ2UgdHdvIGhhc2h0YWJsZXMgd2l0aCBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gICAgICBob3cgd2UgY2hvb3NlIHZhbHVlcyB3aGVuIGEga2V5IGlzIHByZXNlbnQgaW4gdGhlIGZpcnN0IChcImxlZnRcIikgaGFzaHRhYmxlLCB0aGVcbiAgICAgIHNlY29uZCAoXCJyaWdodFwiKSwgb3IgYm90aC4gSGVyZSwgd2UnbGwgY29ucyB0aGUgdmFsdWVzIHdoZW4gYm90aCBoYXNodGFibGVzIGhhdmUgYVxuICAgICAga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn1cblxuICAgICAgezEgSW50ZXJmYWNlfSAqKVxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N1Ym1vZHVsZXMgKCoqIEBpbmxpbmUgKilcblxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBBY2Nlc3NvcnNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBDcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBNdWx0aSA9IE11bHRpXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IFNfd2l0aG91dF9zdWJtb2R1bGVzXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gTWVyZ2VfaW50b19hY3Rpb25cblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9ICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgbW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICAgIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gaW50IEhhc2h0YmwuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IChTdHJpbmcudCwgaW50KSBIYXNodGJsLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgSGFzaHRibC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZFxuICAgICAgc3ludGF4IGRvZXNuJ3QgKGJlY2F1c2UgW3Rfb2Zfc2V4cF0gZG9lc24ndCBrbm93IHdoYXQgY29tcGFyaXNvbi9oYXNoIGZ1bmN0aW9uIHRvXG4gICAgICB1c2UpLiAqKVxuICBtb2R1bGUgTSAoSyA6IFQuVCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKi8qKilcblxuICAoKl8gU2VlIHRoZSBKYW5lIFN0cmVldCBTdHlsZSBHdWlkZSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgW1ByaXZhdGVdIHN1Ym1vZHVsZXM6XG5cbiAgICBodHRwczovL29wZW5zb3VyY2UuamFuZXN0cmVldC5jb20vc3RhbmRhcmRzLyNwcml2YXRlLXN1Ym1vZHVsZXMgKilcbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gICAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICAgIHZhbCBoYXNoYWJsZSA6ICgna2V5LCBfKSB0IC0+ICdrZXkgSGFzaGFibGUudFxuICBlbmRcbmVuZFxuIiwiKCogQSBmZXcgc21hbGwgdGhpbmdzIGNvcGllZCBmcm9tIG90aGVyIHBhcnRzIG9mIEJhc2UgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiB1cywgc28gd2VcbiAgIGNhbid0IHVzZSB0aGVtLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuKCogSXRzIGltcG9ydGFudCB0aGF0IEVtcHR5IGhhdmUgbm8gYXJncy4gSXQncyB0ZW1wdGluZyB0byBtYWtlIHRoaXMgdHlwZSBhIHJlY29yZFxuICAgKGUuZy4gdG8gaG9sZCB0aGUgY29tcGFyZSBmdW5jdGlvbiksIGJ1dCBhIGxvdCBvZiBtZW1vcnkgaXMgc2F2ZWQgYnkgRW1wdHkgYmVpbmcgYW5cbiAgIGltbWVkaWF0ZSwgc2luY2UgYWxsIHVudXNlZCBidWNrZXRzIGluIHRoZSBoYXNodGJsIGRvbid0IHVzZSBhbnkgbWVtb3J5IChiZXNpZGVzIHRoZVxuICAgYXJyYXkgY2VsbCkgKilcbnR5cGUgKCdrLCAndikgdCA9XG4gIHwgRW1wdHlcbiAgfCBOb2RlIG9mXG4gICAgICB7IG11dGFibGUgbGVmdCA6ICgnaywgJ3YpIHRcbiAgICAgIDsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgICA7IG11dGFibGUgcmlnaHQgOiAoJ2ssICd2KSB0XG4gICAgICB9XG4gIHwgTGVhZiBvZlxuICAgICAgeyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIH1cblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0OyByaWdodCA9IF8gfSAtPiBoZWlnaHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgY29tcGFyZSA9XG4gIGxldCBsZWdhbF9sZWZ0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSBsZWZ0X2tleSBrZXkgPCAwKVxuICBpblxuICBsZXQgbGVnYWxfcmlnaHRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgcmlnaHRfa2V5IGtleSA+IDApXG4gIGluXG4gIGxldCByZWMgaW52ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IHwgTGVhZiBfIC0+ICgpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gazsgdmFsdWUgPSBfOyBoZWlnaHQgPSBoOyByaWdodCB9IC0+XG4gICAgICBsZXQgaGwsIGhyID0gaGVpZ2h0IGxlZnQsIGhlaWdodCByaWdodCBpblxuICAgICAgaW52IGxlZnQ7XG4gICAgICBpbnYgcmlnaHQ7XG4gICAgICBsZWdhbF9sZWZ0X2tleSBrIGxlZnQ7XG4gICAgICBsZWdhbF9yaWdodF9rZXkgayByaWdodDtcbiAgICAgIGFzc2VydCAoaCA9IEludC5tYXggaGwgaHIgKyAxKTtcbiAgICAgIGFzc2VydCAoYWJzIChobCAtIGhyKSA8PSAyKVxuICBpblxuICBpbnZcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCB+Y29tcGFyZSA9IGludmFyaWFudCBjb21wYXJlIHRcblxuKCogSW4gdGhlIGZvbGxvd2luZyBjb21tZW50cyxcbiAgICd0IGlzIGJhbGFuY2VkJyBtZWFucyB0aGF0ICdpbnZhcmlhbnQgdCcgZG9lcyBub3RcbiAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoaXMgaW1wbGllcyBvZiBjb3Vyc2UgdGhhdCBlYWNoIG5vZGUncyBoZWlnaHQgZmllbGQgaXNcbiAgIGNvcnJlY3QuXG4gICAndCBpcyBiYWxhbmNlYWJsZScgbWVhbnMgdGhhdCBoZWlnaHQgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIG9mIHRcbiAgIGRpZmZlciBieSBhdCBtb3N0IDMuICopXG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGhhdmUgY29ycmVjdCBoZWlnaHRzXG4gICBAcG9zdDogb3V0cHV0IGhhcyB0aGUgY29ycmVjdCBoZWlnaHQgKilcbmxldCB1cGRhdGVfaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gb2xkX2hlaWdodDsgcmlnaHQgfSBhcyB4KSAtPlxuICAgIGxldCBuZXdfaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IGxlZnQpIChoZWlnaHQgcmlnaHQpICsgMSBpblxuICAgIGlmIG5ld19oZWlnaHQgPD4gb2xkX2hlaWdodCB0aGVuIHguaGVpZ2h0IDwtIG5ld19oZWlnaHRcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGFyZSBiYWxhbmNlZFxuICAgQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHBvc3Q6IG91dHB1dCBpcyBiYWxhbmNlZCAoaW4gcGFydGljdWxhciwgaGVpZ2h0IGlzIGNvcnJlY3QpICopXG5sZXQgYmFsYW5jZSB0cmVlID1cbiAgbWF0Y2ggdHJlZSB3aXRoXG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gdHJlZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHJvb3Rfbm9kZSkgLT5cbiAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdFxuICAgIGFuZCBociA9IGhlaWdodCByaWdodCBpblxuICAgICgqICsgMiBpcyBjcml0aWNhbGx5IGltcG9ydGFudCwgbG93ZXJpbmcgaXQgdG8gMSB3aWxsIGJyZWFrIHRoZSBMZWFmXG4gICAgICAgYXNzdW1wdGlvbnMgaW4gdGhlIGNvZGUgYmVsb3csIGFuZCB3aWxsIGZvcmNlIHVzIHRvIHByb21vdGUgbGVhZiBub2RlcyBpblxuICAgICAgIHRoZSBiYWxhbmNlIHJvdXRpbmUuIEl0J3MgYWxzbyBmYXN0ZXIsIHNpbmNlIGl0IHdpbGwgYmFsYW5jZSBsZXNzIG9mdGVuLlxuICAgICAgIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgZGVsaWNhdGUuICBUaGUgdXBkYXRlX2hlaWdodCBjYWxscyBtdXN0XG4gICAgICAgb2NjdXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNpbmNlIHVwZGF0ZV9oZWlnaHQgYXNzdW1lcyBpdHMgY2hpbGRyZW4gaGF2ZVxuICAgICAgIHRoZSBjb3JyZWN0IGhlaWdodHMuICAqKVxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICgqIEl0IGNhbm5vdCBiZSBhIGxlYWYsIGJlY2F1c2UgZXZlbiBpZiByaWdodCBpcyBlbXB0eSwgYSBsZWFmXG4gICAgICAgICBpcyBvbmx5IGhlaWdodCAxICopXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IGxlZnRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIGxlZnRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxlZnRfbm9kZV9sZWZ0ID49IGhlaWdodCBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgbGVmdClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogaWYgcmlnaHQgaXMgYSBsZWFmLCB0aGVuIGxlZnQgbXVzdCBiZSBlbXB0eS4gVGhhdCBtZWFuc1xuICAgICAgICAgICAgIGhlaWdodCBpcyAyLiBFdmVuIGlmIGhyIGlzIGVtcHR5IHdlIHN0aWxsIGNhbid0IGdldCBoZXJlLiAqKVxuICAgICAgICAgIG1hdGNoIGxlZnRfbm9kZV9yaWdodCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IGxyX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBscl9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBscl9ub2RlKSAtPlxuICAgICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIGxyX2xlZnQ7XG4gICAgICAgICAgICByb290X25vZGUubGVmdCA8LSBscl9yaWdodDtcbiAgICAgICAgICAgIGxyX25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICAgIGxyX25vZGUubGVmdCA8LSBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgICBsZWZ0X25vZGVfcmlnaHQpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHJpZ2h0IGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IHJpZ2h0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyByaWdodF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcmlnaHRfbm9kZV9yaWdodCA+PSBoZWlnaHQgcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgcmlnaHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgICAgIG1hdGNoIHJpZ2h0X25vZGVfbGVmdCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IHJsX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBybF9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBybF9ub2RlKSAtPlxuICAgICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHJsX3JpZ2h0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJsX2xlZnQ7XG4gICAgICAgICAgICBybF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICAgIHJsX25vZGUucmlnaHQgPC0gcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgICByaWdodF9ub2RlX2xlZnQpKVxuICAgIGVsc2UgKFxuICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgdHJlZSlcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfbGVmdCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIGxlZnQgdHJlZSB0aGVuICgpIGVsc2Ugci5sZWZ0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChsZWZ0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X3JpZ2h0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgcmlnaHQgdHJlZSB0aGVuICgpIGVsc2Ugci5yaWdodCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0IGlzIGJhbGFuY2VkLlxuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlZCwgd2l0aCBuZXcgbm9kZSBpbnNlcnRlZFxuICAgQHBvc3Q6ICFhZGRlZCA9IHRydWUgaWZmIHRoZSBzaGFwZSBvZiB0aGUgaW5wdXQgdHJlZSBjaGFuZ2VkLiAgKilcbmxldCBhZGQgPVxuICBsZXQgcmVjIGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IExlYWYgKHsga2V5ID0gayc7IHZhbHVlID0gXyB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaycgayBpblxuICAgICAgKCogVGhpcyBjb21wYXJlIGlzIHJldmVyc2VkIG9uIHB1cnBvc2UsIHdlIGFyZSBwcmV0ZW5kaW5nXG4gICAgICAgICB0aGF0IHRoZSBsZWFmIHdhcyBqdXN0IGluc2VydGVkIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheVxuICAgICAgICAgcm91bmQsIHRoYXQgd2F5IHdlIG9ubHkgYWxsb2NhdGUgb25lIG5vZGUuICopXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2O1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICAgIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gTm9kZSB7IGxlZnQgPSB0OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gRW1wdHkgfVxuICAgICAgICBlbHNlIE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSB0IH0pXG4gICAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiBzZXRfbGVmdCB0IChhZGQgbGVmdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KVxuICAgICAgZWxzZSBzZXRfcmlnaHQgdCAoYWRkIHJpZ2h0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpO1xuICAgICAgdFxuICBpblxuICBmdW4gdCB+cmVwbGFjZSB+Y29tcGFyZSB+YWRkZWQgfmtleSB+ZGF0YSAtPlxuICAgIGxldCB0ID0gYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGtleSBkYXRhIGluXG4gICAgaWYgIWFkZGVkIHRoZW4gYmFsYW5jZSB0IGVsc2UgdFxuOztcblxubGV0IHJlYyBmaXJzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IGw7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gZmlyc3QgbFxuOztcblxubGV0IHJlYyBsYXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHIgfSAtPiBsYXN0IHJcbjs7XG5cblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWMgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX25vdF9mb3VuZFxuICA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2UgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2VcbiAgICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgKGlmIGMgPCAwIHRoZW4gbGVmdCBlbHNlIHJpZ2h0KVxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICBrXG4gICAgICAgIGFyZzFcbiAgICAgICAgYXJnMlxuICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIGRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIGRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIGRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gPVxuICBsZXQgaWZfZm91bmQgXyA9IHRydWUgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gZmFsc2UgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IHJlbW92ZSA9XG4gIGxldCByZWMgbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIF8gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBtaW5fZWx0IGxlZnRcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTGVhZiBfIC0+IEVtcHR5ICgqIFRoaXMgbXVzdCBiZSB0aGUgcm9vdCAqKVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+IHJpZ2h0XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT5cbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSBFbXB0eTtcbiAgICAgIHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgKHJlbW92ZV9taW5fZWx0IGxlZnQpO1xuICAgICAgdHJlZVxuICBpblxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgdHJlZSA9IG1pbl9lbHQgdDIgaW5cbiAgICAgIChtYXRjaCB0cmVlIHdpdGhcbiAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgICAgICBsZXQgdDIgPSBiYWxhbmNlIChyZW1vdmVfbWluX2VsdCB0MikgaW5cbiAgICAgICAgIE5vZGVcbiAgICAgICAgICAgeyBsZWZ0ID0gdDFcbiAgICAgICAgICAgOyBrZXkgPSBrXG4gICAgICAgICAgIDsgdmFsdWUgPSB2XG4gICAgICAgICAgIDsgaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IHQxKSAoaGVpZ2h0IHQyKSArIDFcbiAgICAgICAgICAgOyByaWdodCA9IHQyXG4gICAgICAgICAgIH1cbiAgICAgICB8IE5vZGUgXyBhcyBub2RlIC0+XG4gICAgICAgICBzZXRfcmlnaHQgbm9kZSAocmVtb3ZlX21pbl9lbHQgdDIpO1xuICAgICAgICAgc2V0X2xlZnQgbm9kZSB0MTtcbiAgICAgICAgIG5vZGUpXG4gIGluXG4gIGxldCByZWMgcmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGsgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICBFbXB0eVxuICAgIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgRW1wdHkpXG4gICAgICBlbHNlIChcbiAgICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgICAgdClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIG1lcmdlIGxlZnQgcmlnaHQpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc2V0X2xlZnQgdCAocmVtb3ZlIGxlZnQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHNldF9yaWdodCB0IChyZW1vdmUgcmlnaHQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICBpblxuICBmdW4gdCB+cmVtb3ZlZCB+Y29tcGFyZSBrIC0+IGJhbGFuY2UgKHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrKVxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBpbml0XG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhIGluaXRcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBFbXB0eVxuICAgICAgfSAtPiBmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gRW1wdHlcbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9IH1cbiAgICAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH07IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9XG4gICAgLT4gZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSkgfmZcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgaXRlciBsZWZ0IH5mO1xuICAgIGYgfmtleSB+ZGF0YTtcbiAgICBpdGVyIHJpZ2h0IH5mXG47O1xuXG5sZXQgcmVjIG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmICh7IGtleTsgdmFsdWUgfSBhcyB0KSAtPiB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5OyB2YWx1ZTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyB0KSAtPlxuICAgIG1hcGlfaW5wbGFjZSB+ZiBsZWZ0O1xuICAgIHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlO1xuICAgIG1hcGlfaW5wbGFjZSB+ZiByaWdodFxuOztcblxubGV0IGNob29zZV9leG4gPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltBdmx0cmVlLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSlcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZTsgXyB9IHwgTm9kZSB7IGtleTsgdmFsdWU7IF8gfSAtPiBrZXksIHZhbHVlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2h0YmxfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXkuU1xuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IGhhc2hfcGFyYW0gPSBIYXNoYWJsZS5oYXNoX3BhcmFtXG5sZXQgaGFzaCA9IEhhc2hhYmxlLmhhc2hcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG50eXBlICgnaywgJ3YpIHQgPVxuICB7IG11dGFibGUgdGFibGUgOiAoJ2ssICd2KSBBdmx0cmVlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAoKiBbcmVjZW50bHlfYWRkZWRdIGlzIHRoZSByZWZlcmVuY2UgcGFzc2VkIHRvIFtBdmx0cmVlLmFkZF0uIFdlIHB1dCBpdCBpbiB0aGUgaGFzaFxuICAgICB0YWJsZSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IGF0IGV2ZXJ5IFtzZXRdLiAqKVxuICA7IHJlY2VudGx5X2FkZGVkIDogYm9vbCByZWZcbiAgOyBncm93dGhfYWxsb3dlZCA6IGJvb2xcbiAgOyBoYXNoYWJsZSA6ICdrIEhhc2hhYmxlLnRcbiAgOyBtdXRhYmxlIG11dGF0aW9uX2FsbG93ZWQgOiBib29sICgqIFNldCBkdXJpbmcgYWxsIGl0ZXJhdGlvbiBvcGVyYXRpb25zICopXG4gIH1cblxudHlwZSAnYSBrZXkgPSAnYVxuXG5sZXQgc2V4cF9vZl9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90XG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuY29tcGFyZVxuXG5sZXQgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdCA9XG4gIGlmIG5vdCB0Lm11dGF0aW9uX2FsbG93ZWQgdGhlbiBmYWlsd2l0aCBcIkhhc2h0Ymw6IG11dGF0aW9uIG5vdCBhbGxvd2VkIGR1cmluZyBpdGVyYXRpb25cIlxuOztcblxubGV0IHdpdGhvdXRfbXV0YXRpbmcgdCBmID1cbiAgaWYgdC5tdXRhdGlvbl9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICByYWlzZSBleG4pXG4gIGVsc2UgZiAoKVxuOztcblxuKCoqIEludGVybmFsbHkgdXNlIGEgbWF4aW11bSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiAyLiBSZXZlcnNlcyB0aGUgYWJvdmUgdG8gZmluZCB0aGVcbiAgICBmbG9vciBwb3dlciBvZiAyIGJlbG93IHRoZSBzeXN0ZW0gbWF4IGFycmF5IGxlbmd0aCAqKVxubGV0IG1heF90YWJsZV9sZW5ndGggPSBJbnQuZmxvb3JfcG93MiBBcnJheS5tYXhfbGVuZ3RoXG5cbigqIFRoZSBkZWZhdWx0IHNpemUgaXMgY2hvc2VuIHRvIGJlIDAgKGFzIG9wcG9zZWQgdG8gMTI4IGFzIGl0IHdhcyBiZWZvcmUpIGJlY2F1c2U6XG4gICAtIDEyOCBjYW4gY3JlYXRlIHN1YnN0YW50aWFsIG1lbW9yeSBvdmVyaGVhZCAoeDEwKSB3aGVuIGNyZWF0aW5nIG1hbnkgdGFibGVzLCBtb3N0XG4gICAgIG9mIHdoaWNoIGFyZSBub3QgYmlnIChzYXksIGlmIHlvdSBoYXZlIGEgaGFzaHRibCBvZiBoYXNodGJsKS4gQW5kIG1lbW9yeSBvdmVyaGVhZCBpc1xuICAgICBub3QgdGhhdCBlYXN5IHRvIHByb2ZpbGUuXG4gICAtIGlmIGEgaGFzaHRibCBpcyBnb2luZyB0byBncm93LCBpdCdzIG5vdCBjbGVhciB3aHkgMTI4IGlzIG1hcmtlZGx5IGJldHRlciB0aGFuIG90aGVyXG4gICAgIHNpemVzIChpZiB5b3UgZ29pbmcgdG8gc3RpY2sgMTAwMCBlbGVtZW50cywgeW91J3JlIGdvaW5nIHRvIGdyb3cgdGhlIGhhc2h0YWJsZSBvbmNlXG4gICAgIG9yIHR3aWNlIGFueXdheSlcbiAgIC0gaW4gb3RoZXIgbGFuZ3VhZ2VzIChsaWtlIHJ1c3QsIHB5dGhvbiwgYW5kIGFwcGFyZW50bHkgZ28pLCB0aGUgZGVmYXVsdCBpcyBhbHNvIGFcbiAgICAgc21hbGwgc2l6ZS4gKilcbmxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDApIH5oYXNoYWJsZSAoKSA9XG4gIGxldCBzaXplID0gSW50Lm1pbiAoSW50Lm1heCAxIHNpemUpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgbGV0IHNpemUgPSBJbnQuY2VpbF9wb3cyIHNpemUgaW5cbiAgeyB0YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOnNpemUgQXZsdHJlZS5lbXB0eVxuICA7IGxlbmd0aCA9IDBcbiAgOyBncm93dGhfYWxsb3dlZFxuICA7IHJlY2VudGx5X2FkZGVkID0gcmVmIGZhbHNlXG4gIDsgaGFzaGFibGVcbiAgOyBtdXRhdGlvbl9hbGxvd2VkID0gdHJ1ZVxuICB9XG47O1xuXG4oKiogU3VwcGxlbWVudGFsIGhhc2guIFRoaXMgbWF5IG5vdCBiZSBuZWNlc3NhcnksIGl0IGlzIGludGVuZGVkIGFzIGEgZGVmZW5zZSBhZ2FpbnN0IHBvb3JcbiAgICBoYXNoIGZ1bmN0aW9ucywgZm9yIHdoaWNoIHRoZSBwb3dlciBvZiAyIHNpemVkIHRhYmxlIHdpbGwgYmUgZXNwZWNpYWxseSBzZW5zaXRpdmUuXG4gICAgV2l0aCBzb21lIHRlc3Rpbmcgd2UgbWF5IGNob29zZSB0byBhZGQgaXQsIGJ1dCB0aGlzIHRhYmxlIGlzIGRlc2lnbmVkIHRvIGJlIHJvYnVzdCB0b1xuICAgIGNvbGxpc2lvbnMsIGFuZCBpbiBtb3N0IG9mIG15IHRlc3RpbmcgdGhpcyBkZWdyYWRlcyBwZXJmb3JtYW5jZS4gKilcbmxldCBfc3VwcGxlbWVudGFsX2hhc2ggaCA9XG4gIGxldCBoID0gaCBseG9yICgoaCBsc3IgMjApIGx4b3IgKGggbHNyIDEyKSkgaW5cbiAgaCBseG9yIChoIGxzciA3KSBseG9yIChoIGxzciA0KVxuOztcblxubGV0IHNsb3QgdCBrZXkgPVxuICBsZXQgaGFzaCA9IHQuaGFzaGFibGUuSGFzaGFibGUuaGFzaCBrZXkgaW5cbiAgKCogdGhpcyBpcyBhbHdheXMgbm9uLW5lZ2F0aXZlIGJlY2F1c2Ugd2UgZG8gW2xhbmRdIHdpdGggbm9uLW5lZ2F0aXZlIG51bWJlciAqKVxuICBoYXNoIGxhbmQgKEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSlcbjs7XG5cbmxldCBhZGRfd29ya2VyIHQgfnJlcGxhY2UgfmtleSB+ZGF0YSA9XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZCA9IHQucmVjZW50bHlfYWRkZWQgaW5cbiAgYWRkZWQgOj0gZmFsc2U7XG4gIGxldCBuZXdfcm9vdCA9XG4gICAgKCogVGhlIGF2bCB0cmVlIG1pZ2h0IHJlcGxhY2UgdGhlIHZhbHVlIFtyZXBsYWNlPXRydWVdIG9yIGRvIG5vdGhpbmcgW3JlcGxhY2U9ZmFsc2VdXG4gICAgICAgdG8gdGhlIGVudHJ5LCBpbiB0aGF0IGNhc2UgdGhlIHRhYmxlIGRpZCBub3QgZ2V0IGJpZ2dlciwgc28gd2Ugc2hvdWxkIG5vdFxuICAgICAgIGluY3JlbWVudCBsZW5ndGgsIHdlIHBhc3MgaW4gdGhlIGJvb2wgcmVmIHQuYWRkZWQgc28gdGhhdCBpdCBjYW4gdGVsbCB1cyB3aGV0aGVyXG4gICAgICAgaXQgYWRkZWQgb3IgcmVwbGFjZWQuIFdlIGRvIGl0IHRoaXMgd2F5IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRpb24uIFNpbmNlIHRoZSBib29sXG4gICAgICAgaXMgYW4gaW1tZWRpYXRlIGl0IGRvZXMgbm90IGdvIHRocm91Z2ggdGhlIHdyaXRlIGJhcnJpZXIuICopXG4gICAgQXZsdHJlZS5hZGQgfnJlcGxhY2Ugcm9vdCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkgfmFkZGVkIH5rZXkgfmRhdGFcbiAgaW5cbiAgaWYgIWFkZGVkIHRoZW4gdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICAoKiBUaGlzIGxpdHRsZSBvcHRpbWl6YXRpb24gc2F2ZXMgYSBjYW1sX21vZGlmeSB3aGVuIHRoZSB0cmVlXG4gICAgIGhhc24ndCBiZWVuIHJlYmFsYW5jZWQuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXdfcm9vdCByb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290XG47O1xuXG5sZXQgbWF5YmVfcmVzaXplX3RhYmxlIHQgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgbGV0IHNob3VsZF9ncm93ID0gdC5sZW5ndGggPiBsZW4gaW5cbiAgaWYgc2hvdWxkX2dyb3cgJiYgdC5ncm93dGhfYWxsb3dlZFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FycmF5X2xlbmd0aCA9IEludC5taW4gKGxlbiAqIDIpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgICBpZiBuZXdfYXJyYXlfbGVuZ3RoID4gbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbmV3X3RhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46bmV3X2FycmF5X2xlbmd0aCBBdmx0cmVlLmVtcHR5IGluXG4gICAgICBsZXQgb2xkX3RhYmxlID0gdC50YWJsZSBpblxuICAgICAgdC50YWJsZSA8LSBuZXdfdGFibGU7XG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IGYgfmtleSB+ZGF0YSA9IGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2xkX3RhYmxlIC0gMSBkb1xuICAgICAgICBBdmx0cmVlLml0ZXIgb2xkX3RhYmxlLihpKSB+ZlxuICAgICAgZG9uZSkpXG47O1xuXG5sZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGE7XG4gIG1heWJlX3Jlc2l6ZV90YWJsZSB0XG47O1xuXG5sZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGFkZF93b3JrZXIgfnJlcGxhY2U6ZmFsc2UgdCB+a2V5IH5kYXRhO1xuICBpZiAhKHQucmVjZW50bHlfYWRkZWQpXG4gIHRoZW4gKFxuICAgIG1heWJlX3Jlc2l6ZV90YWJsZSB0O1xuICAgIGBPaylcbiAgZWxzZSBgRHVwbGljYXRlXG47O1xuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgfCBgT2sgLT4gKClcbiAgfCBgRHVwbGljYXRlIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXkgdCBpblxuICAgIGxldCBlcnJvciA9IEVycm9yLmNyZWF0ZSBcIkhhc2h0YmwuYWRkX2V4biBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIGtleSBzZXhwX29mX2tleSBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICB0LnRhYmxlLihpKSA8LSBBdmx0cmVlLmVtcHR5XG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwyIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDJcbiAgICAgIHRyZWVcbiAgICAgIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICAgICAga2V5XG4gICAgICB+YVxuICAgICAgfmJcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IGtleSAtPiBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gZmFsc2VcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IF8gfSAtPiBjb21wYXJlX2tleSB0IGsga2V5ID0gMFxuICB8IHRyZWUgLT4gQXZsdHJlZS5tZW0gdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkX29yX3JlbW92ZWQgPSB0LnJlY2VudGx5X2FkZGVkIGluXG4gIGFkZGVkX29yX3JlbW92ZWQgOj0gZmFsc2U7XG4gIGxldCBuZXdfcm9vdCA9XG4gICAgQXZsdHJlZS5yZW1vdmUgcm9vdCB+cmVtb3ZlZDphZGRlZF9vcl9yZW1vdmVkIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbiAgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIHJvb3QgbmV3X3Jvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Q7XG4gIGlmICFhZGRlZF9vcl9yZW1vdmVkIHRoZW4gdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICAgIGxldCBtID0gdC5tdXRhdGlvbl9hbGxvd2VkIGluXG4gICAgbWF0Y2hcbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHQudGFibGUgaSB3aXRoXG4gICAgICAgIHwgQXZsdHJlZS5FbXB0eSAtPiAoKVxuICAgICAgICB8IEF2bHRyZWUuTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gYWNjIDo9IGYgfmtleSB+ZGF0YSAhYWNjXG4gICAgICAgIHwgYnVja2V0IC0+IGFjYyA6PSBBdmx0cmVlLmZvbGQgYnVja2V0IH5pbml0OiFhY2MgfmZcbiAgICAgIGRvbmVcbiAgICB3aXRoXG4gICAgfCAoKSAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICAhYWNjXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBtID0gdC5tdXRhdGlvbl9hbGxvd2VkIGluXG4gICAgbWF0Y2hcbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHQudGFibGUgaSB3aXRoXG4gICAgICAgIHwgQXZsdHJlZS5FbXB0eSAtPiAoKVxuICAgICAgICB8IEF2bHRyZWUuTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gICAgICAgIHwgYnVja2V0IC0+IEF2bHRyZWUuaXRlciBidWNrZXQgfmZcbiAgICAgIGRvbmVcbiAgICB3aXRoXG4gICAgfCAoKSAtPiB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgaXRlcl9rZXlzIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KVxuXG5sZXQgcmVjIGNob29zZV9ub25lbXB0eSB0YWJsZSBpID1cbiAgbGV0IGF2bHRyZWUgPSB0YWJsZS4oaSkgaW5cbiAgaWYgQXZsdHJlZS5pc19lbXB0eSBhdmx0cmVlXG4gIHRoZW4gY2hvb3NlX25vbmVtcHR5IHRhYmxlIChpICsgMSlcbiAgZWxzZSBBdmx0cmVlLmNob29zZV9leG4gYXZsdHJlZVxuOztcblxubGV0IGNob29zZV9leG4gdCA9XG4gIGlmIHQubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltIYXNodGJsLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSk7XG4gIGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDBcbjs7XG5cbmxldCBjaG9vc2UgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IGludmFyaWFudF9kYXRhIHQgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgQXZsdHJlZS5pbnZhcmlhbnQgdC50YWJsZS4oaSkgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gIGRvbmU7XG4gIGxldCByZWFsX2xlbiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGkgLT5cbiAgICAgIGludmFyaWFudF9rZXkga2V5O1xuICAgICAgaW52YXJpYW50X2RhdGEgZGF0YTtcbiAgICAgIGkgKyAxKVxuICBpblxuICBhc3NlcnQgKHJlYWxfbGVuID0gdC5sZW5ndGgpXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgaWZfZm91bmQgdiBfID0gdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIGsgdCA9XG4gICAgcmFpc2VcbiAgICAgIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJIYXNodGJsLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgdC5oYXNoYWJsZS5zZXhwX29mX3QgayBdKSlcbiAgaW5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID0gZmluZF9hbmRfY2FsbDEgdCBrZXkgfmE6dCB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGZvcl9hbGxpIHQgfmYgPSBub3QgKGV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gbm90IChmIH5rZXkgfmRhdGEpKSlcbmxldCBmb3JfYWxsIHQgfmYgPSBub3QgKGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBub3QgKGYgZGF0YSkpKVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPiBpZiBmIGRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOihmIH5rZXkgfmRhdGEpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgY29weSB0ID0gbWFwIHQgfmY6Rm4uaWRcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBTb21lIG5ld19kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpXG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IHQwID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgbGV0IHQxID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBtYXRjaCAoZiB+a2V5IH5kYXRhIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgbmV3X2RhdGEgLT4gc2V0IHQwIH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IFNlY29uZCBuZXdfZGF0YSAtPiBzZXQgdDEgfmtleSB+ZGF0YTpuZXdfZGF0YSk7XG4gIHQwLCB0MVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbmRfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsMlxuICAgIHRcbiAgICBpZFxuICAgIH5hOnRcbiAgICB+YjpkZWZhdWx0XG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSBfIF8gLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IHQgZGVmYXVsdCAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0ICgpIGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KVxuOztcblxubGV0IGZpbmRpX29yX2FkZCB0IGlkIH5kZWZhdWx0ID1cbiAgZmluZF9hbmRfY2FsbDJcbiAgICB0XG4gICAgaWRcbiAgICB+YTp0XG4gICAgfmI6ZGVmYXVsdFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgXyBfIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSB0IGRlZmF1bHQgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCBrZXkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpXG47O1xuXG4oKiBTb21lIGhhc2h0YmwgaW1wbGVtZW50YXRpb25zIG1heSBiZSBhYmxlIHRvIHBlcmZvcm0gdGhpcyBtb3JlIGVmZmljaWVudGx5IHRoYW4gdHdvXG4gICBzZXBhcmF0ZSBsb29rdXBzICopXG5sZXQgZmluZF9hbmRfcmVtb3ZlIHQgaWQgPVxuICBsZXQgcmVzdWx0ID0gZmluZCB0IGlkIGluXG4gIGlmIE9wdGlvbi5pc19zb21lIHJlc3VsdCB0aGVuIHJlbW92ZSB0IGlkO1xuICByZXN1bHRcbjs7XG5cblxubGV0IGNoYW5nZSB0IGlkIH5mID1cbiAgbWF0Y2ggZiAoZmluZCB0IGlkKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgdCBpZFxuICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5OmlkIH5kYXRhXG47O1xuXG5sZXQgdXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA9XG4gIGxldCBkYXRhID0gZiAoZmluZCB0IGlkKSBpblxuICBzZXQgdCB+a2V5OmlkIH5kYXRhO1xuICBkYXRhXG47O1xuXG5sZXQgdXBkYXRlIHQgaWQgfmYgPSBpZ25vcmUgKHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgOiBfKVxuXG5sZXQgaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnkgPVxuICBpZiByZW1vdmVfaWZfemVyb1xuICB0aGVuXG4gICAgY2hhbmdlIHQga2V5IH5mOihmdW4gb3B0IC0+XG4gICAgICBtYXRjaCBieSArIE9wdGlvbi52YWx1ZSBvcHQgfmRlZmF1bHQ6MCB3aXRoXG4gICAgICB8IDAgLT4gTm9uZVxuICAgICAgfCBuIC0+IFNvbWUgbilcbiAgZWxzZVxuICAgIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBieVxuICAgICAgfCBTb21lIGkgLT4gYnkgKyBpKVxuOztcblxubGV0IGluY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieVxubGV0IGRlY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSAoLWJ5KVxuXG5sZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gWyBkYXRhIF1cbiAgICB8IFNvbWUgbCAtPiBkYXRhIDo6IGwpXG47O1xuXG5sZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgW10gfCBTb21lIFsgXyBdIC0+IHJlbW92ZSB0IGtleVxuICB8IFNvbWUgKF8gOjogdGwpIC0+IHNldCB0IH5rZXkgfmRhdGE6dGxcbjs7XG5cbmxldCBmaW5kX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgbCAtPiBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgfnNpemUgKCkgaW5cbiAgbGV0IGR1cGVzID0gcmVmIFtdIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBpZiBtZW0gcmVzIGtleSB0aGVuIGR1cGVzIDo9IGtleSA6OiAhZHVwZXMgZWxzZSBzZXQgcmVzIH5rZXkgfmRhdGEpO1xuICBtYXRjaCAhZHVwZXMgd2l0aFxuICB8IFtdIC0+IGBPayByZXNcbiAgfCBrZXlzIC0+IGBEdXBsaWNhdGVfa2V5cyAoTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpoYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlIGtleXMpXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGFkZF9tdWx0aSByZXMgfmtleSB+ZGF0YSk7XG4gIHJlc1xuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdCB3aXRoXG4gIHwgYE9rIHQgLT4gYE9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMgayAtPiBgRHVwbGljYXRlX2tleSAoTGlzdC5oZF9leG4gaylcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgYE9rIHYgLT4gUmVzdWx0Lk9rIHZcbiAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvciBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IHNleHBfb2Zfa2V5XG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IFJlc3VsdC5PayB2IC0+IHZcbiAgfCBSZXN1bHQuRXJyb3IgZSAtPiBFcnJvci5yYWlzZSBlXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgdG9fYWxpc3QgdCA9IGZvbGQgfmY6KGZ1biB+a2V5IH5kYXRhIGxpc3QgLT4gKGtleSwgZGF0YSkgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgdFxuICB8PiB0b19hbGlzdFxuICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoazEsIF8pIChrMiwgXykgLT4gdC5oYXNoYWJsZS5jb21wYXJlIGsxIGsyKVxuICB8PiBzZXhwX29mX2xpc3QgKHNleHBfb2ZfcGFpciBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEpXG47O1xuXG5sZXQgdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPVxuICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwKSBzZXhwIGluXG4gIG1hdGNoIG9mX2FsaXN0IH5oYXNoYWJsZSBhbGlzdCB+c2l6ZTooTGlzdC5sZW5ndGggYWxpc3QpIHdpdGhcbiAgfCBgT2sgdiAtPiB2XG4gIHwgYER1cGxpY2F0ZV9rZXkgayAtPlxuICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICBsZXQgYWxpc3Rfc2V4cHMgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBGbi5pZCBGbi5pZCkgc2V4cCBpblxuICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgTGlzdC5pdGVyMl9leG4gYWxpc3QgYWxpc3Rfc2V4cHMgfmY6KGZ1biAoazIsIF8pIChrMl9zZXhwLCBfKSAtPlxuICAgICAgaWYgaGFzaGFibGUuY29tcGFyZSBrIGsyID0gMFxuICAgICAgdGhlblxuICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJIYXNodGJsLnRfb2Zfc2V4cDogZHVwbGljYXRlIGtleVwiIGsyX3NleHBcbiAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgIGFzc2VydCBmYWxzZVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrIHYpXG4gICAgICAoa19ncmFtbWFyIDogayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICAgICh2X2dyYW1tYXIgOiB2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IChrLCB2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuOztcblxubGV0IGtleXMgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGE6XyBhY2MgLT4ga2V5IDo6IGFjYylcbmxldCBkYXRhIHQgPSBmb2xkIH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBhZGRfdG9fZ3JvdXBzIGdyb3VwcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3MgPVxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHJvdyAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHJvdyBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgcm93IGluXG4gICAgbGV0IGRhdGEgPVxuICAgICAgbWF0Y2ggZmluZCBncm91cHMga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICB8IFNvbWUgb2xkIC0+IGNvbWJpbmUgb2xkIGRhdGFcbiAgICBpblxuICAgIHNldCBncm91cHMgfmtleSB+ZGF0YSlcbjs7XG5cbmxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSByb3dzID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpIGluXG4gIGFkZF90b19ncm91cHMgcmVzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cztcbiAgcmVzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGE6Rm4uaWQgcm93c1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBtYXRjaCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzIHdpdGhcbiAgfCBgT2sgdCAtPiBSZXN1bHQuT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrZXlzIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJIYXNodGJsLmNyZWF0ZV93aXRoX2tleTogZHVwbGljYXRlIGtleXNcIlxuICAgICAgICAgWyBcImtleXNcIiwgc2V4cF9vZl9saXN0IHNleHBfb2Zfa2V5IGtleXMgXSlcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIE9yX2Vycm9yLm9rX2V4biAoY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cylcbjs7XG5cbmxldCBtZXJnZSA9XG4gIGxldCBtYXliZV9zZXQgdCB+a2V5IH5mIGQgPVxuICAgIG1hdGNoIGYgfmtleSBkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBzZXQgdCB+a2V5IH5kYXRhOnZcbiAgaW5cbiAgZnVuIHRfbGVmdCB0X3JpZ2h0IH5mIC0+XG4gICAgaWYgbm90IChIYXNoYWJsZS5lcXVhbCB0X2xlZnQuaGFzaGFibGUgdF9yaWdodC5oYXNoYWJsZSlcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiSGFzaHRibC5tZXJnZTogZGlmZmVyZW50ICdoYXNoYWJsZScgdmFsdWVzXCI7XG4gICAgbGV0IG5ld190ID1cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+Z3Jvd3RoX2FsbG93ZWQ6dF9sZWZ0Lmdyb3d0aF9hbGxvd2VkXG4gICAgICAgIH5oYXNoYWJsZTp0X2xlZnQuaGFzaGFibGVcbiAgICAgICAgfnNpemU6dF9sZWZ0Lmxlbmd0aFxuICAgICAgICAoKVxuICAgIGluXG4gICAgd2l0aG91dF9tdXRhdGluZyB0X2xlZnQgKGZ1biAoKSAtPlxuICAgICAgd2l0aG91dF9tdXRhdGluZyB0X3JpZ2h0IChmdW4gKCkgLT5cbiAgICAgICAgaXRlcmkgdF9sZWZ0IH5mOihmdW4gfmtleSB+ZGF0YTpsZWZ0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X3JpZ2h0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgTGVmdCBsZWZ0KVxuICAgICAgICAgIHwgU29tZSByaWdodCAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYEJvdGggKGxlZnQsIHJpZ2h0KSkpO1xuICAgICAgICBpdGVyaSB0X3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpyaWdodCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9sZWZ0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgUmlnaHQgcmlnaHQpXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgICAoKiBhbHJlYWR5IGRvbmUgYWJvdmUgKikpKSk7XG4gICAgbmV3X3Rcbjs7XG5cbmxldCBtZXJnZV9pbnRvIH5zcmMgfmRzdCB+ZiA9XG4gIGl0ZXJpIHNyYyB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgZHN0X2RhdGEgPSBmaW5kIGRzdCBrZXkgaW5cbiAgICBsZXQgYWN0aW9uID0gd2l0aG91dF9tdXRhdGluZyBkc3QgKGZ1biAoKSAtPiBmIH5rZXkgZGF0YSBkc3RfZGF0YSkgaW5cbiAgICBtYXRjaCAoYWN0aW9uIDogXyBNZXJnZV9pbnRvX2FjdGlvbi50KSB3aXRoXG4gICAgfCBSZW1vdmUgLT4gcmVtb3ZlIGRzdCBrZXlcbiAgICB8IFNldF90byBkYXRhIC0+XG4gICAgICAobWF0Y2ggZHN0X2RhdGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBzZXQgZHN0IH5rZXkgfmRhdGFcbiAgICAgICB8IFNvbWUgZHN0X2RhdGEgLT4gaWYgbm90IChwaHlzX2VxdWFsIGRzdF9kYXRhIGRhdGEpIHRoZW4gc2V0IGRzdCB+a2V5IH5kYXRhKSlcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWMgZWxzZSBrZXkgOjogYWMpXG4gIGluXG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBrZXkgLT4gcmVtb3ZlIHQga2V5KVxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgZmlsdGVyX2tleXNfaW5wbGFjZSB0IH5mID0gZmlsdGVyaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpXG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgbWFwX3Jlc3VsdHMgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IChrZXksIGYgfmtleSB+ZGF0YSkgOjogYWMpIGluXG4gIExpc3QuaXRlciBtYXBfcmVzdWx0cyB+ZjooZnVuIChrZXksIHJlc3VsdCkgLT5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1vdmUgdCBrZXlcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhKVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID0gZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgd2l0aG91dF9tdXRhdGluZyB0IChmdW4gKCkgLT4gQXJyYXkuaXRlciB0LnRhYmxlIH5mOihBdmx0cmVlLm1hcGlfaW5wbGFjZSB+ZikpXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IG1hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGVxdWFsIGVxdWFsIHQgdCcgPVxuICBsZW5ndGggdCA9IGxlbmd0aCB0J1xuICAmJiB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICB3aXRob3V0X211dGF0aW5nIHQnIChmdW4gKCkgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIG1hdGNoIGZpbmQgdCcga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHIucmV0dXJuIGZhbHNlXG4gICAgICAgIHwgU29tZSBkYXRhJyAtPiBpZiBub3QgKGVxdWFsIGRhdGEgZGF0YScpIHRoZW4gci5yZXR1cm4gZmFsc2UpKTtcbiAgICB0cnVlKVxuOztcblxubGV0IHNpbWlsYXIgPSBlcXVhbFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGNob29zZSA9IGNob29zZVxuICBsZXQgY2hvb3NlX2V4biA9IGNob29zZV9leG5cbiAgbGV0IGNsZWFyID0gY2xlYXJcbiAgbGV0IGNvcHkgPSBjb3B5XG4gIGxldCByZW1vdmUgPSByZW1vdmVcbiAgbGV0IHNldCA9IHNldFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBhZGRfZXhuID0gYWRkX2V4blxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG4gIGxldCB1cGRhdGUgPSB1cGRhdGVcbiAgbGV0IHVwZGF0ZV9hbmRfcmV0dXJuID0gdXBkYXRlX2FuZF9yZXR1cm5cbiAgbGV0IGFkZF9tdWx0aSA9IGFkZF9tdWx0aVxuICBsZXQgcmVtb3ZlX211bHRpID0gcmVtb3ZlX211bHRpXG4gIGxldCBmaW5kX211bHRpID0gZmluZF9tdWx0aVxuICBsZXQgbWVtID0gbWVtXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmaWx0ZXJfbWFwID0gZmlsdGVyX21hcFxuICBsZXQgZmlsdGVyX21hcGkgPSBmaWx0ZXJfbWFwaVxuICBsZXQgZmlsdGVyX2tleXMgPSBmaWx0ZXJfa2V5c1xuICBsZXQgZmlsdGVyID0gZmlsdGVyXG4gIGxldCBmaWx0ZXJpID0gZmlsdGVyaVxuICBsZXQgcGFydGl0aW9uX21hcCA9IHBhcnRpdGlvbl9tYXBcbiAgbGV0IHBhcnRpdGlvbl9tYXBpID0gcGFydGl0aW9uX21hcGlcbiAgbGV0IHBhcnRpdGlvbl90ZiA9IHBhcnRpdGlvbl90ZlxuICBsZXQgcGFydGl0aW9uaV90ZiA9IHBhcnRpdGlvbmlfdGZcbiAgbGV0IGZpbmRfb3JfYWRkID0gZmluZF9vcl9hZGRcbiAgbGV0IGZpbmRpX29yX2FkZCA9IGZpbmRpX29yX2FkZFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGZpbmRfZXhuID0gZmluZF9leG5cbiAgbGV0IGZpbmRfYW5kX2NhbGwgPSBmaW5kX2FuZF9jYWxsXG4gIGxldCBmaW5kX2FuZF9jYWxsMSA9IGZpbmRfYW5kX2NhbGwxXG4gIGxldCBmaW5kX2FuZF9jYWxsMiA9IGZpbmRfYW5kX2NhbGwyXG4gIGxldCBmaW5kaV9hbmRfY2FsbCA9IGZpbmRpX2FuZF9jYWxsXG4gIGxldCBmaW5kaV9hbmRfY2FsbDEgPSBmaW5kaV9hbmRfY2FsbDFcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMiA9IGZpbmRpX2FuZF9jYWxsMlxuICBsZXQgZmluZF9hbmRfcmVtb3ZlID0gZmluZF9hbmRfcmVtb3ZlXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCBtZXJnZSA9IG1lcmdlXG4gIGxldCBtZXJnZV9pbnRvID0gbWVyZ2VfaW50b1xuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCBmaWx0ZXJfa2V5c19pbnBsYWNlID0gZmlsdGVyX2tleXNfaW5wbGFjZVxuICBsZXQgZmlsdGVyX2lucGxhY2UgPSBmaWx0ZXJfaW5wbGFjZVxuICBsZXQgZmlsdGVyaV9pbnBsYWNlID0gZmlsdGVyaV9pbnBsYWNlXG4gIGxldCBtYXBfaW5wbGFjZSA9IG1hcF9pbnBsYWNlXG4gIGxldCBtYXBpX2lucGxhY2UgPSBtYXBpX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcGlfaW5wbGFjZSA9IGZpbHRlcl9tYXBpX2lucGxhY2VcbiAgbGV0IGVxdWFsID0gZXF1YWxcbiAgbGV0IHNpbWlsYXIgPSBzaW1pbGFyXG4gIGxldCBpbmNyID0gaW5jclxuICBsZXQgZGVjciA9IGRlY3JcbiAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gS2V5Lmhhc2hhYmxlXG5cbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBIYXNoYWJsZS5wb2x5XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBIYXNoYWJsZSA9IEhhc2hhYmxlLkhhc2hhYmxlXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgbGV0IGhhc2hhYmxlIHQgPSB0Lmhhc2hhYmxlXG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIGNyZWF0ZSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKClcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Qgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X211bHRpIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gIGNyZWF0ZV9tYXBwZWQgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gIGdyb3VwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuOztcblxubGV0IGhhc2hhYmxlX3MgdCA9IEhhc2hhYmxlLnRvX2tleSB0Lmhhc2hhYmxlXG5cbm1vZHVsZSBNIChLIDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gaykgdl9vZl9zZXhwIHNleHAgPVxuICB0X29mX3NleHAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLKSkgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBrKSAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspIHZfZ3JhbW1hciA9XG4gIHRfc2V4cF9ncmFtbWFyIEsudF9zZXhwX2dyYW1tYXIgdl9ncmFtbWFyXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcblxubGV0IGhhc2hhYmxlX3MgPSBIYXNodGJsLmhhc2hhYmxlX3NcbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxubGV0IHBvbHlfaGFzaGFibGUgPSBIYXNodGJsLlBvbHkuaGFzaGFibGVcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbnR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgSGFzaHRibC50XG50eXBlICdhIGhhc2hfc2V0ID0gJ2EgdFxudHlwZSAnYSBlbHQgPSAnYVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gIGxldCBjbGVhciA9IEhhc2h0YmwuY2xlYXJcbiAgbGV0IGxlbmd0aCA9IEhhc2h0YmwubGVuZ3RoXG4gIGxldCBtZW0gPSBIYXNodGJsLm1lbVxuICBsZXQgaXNfZW1wdHkgdCA9IEhhc2h0YmwuaXNfZW1wdHkgdFxuXG4gIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIF8gYXMgbyAtPiByLnJldHVybiBvKTtcbiAgICAgIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmRfbWFwIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIFNvbWUgYSBlbHNlIE5vbmUpXG4gIGxldCBhZGQgdCBrID0gSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KClcblxuICBsZXQgc3RyaWN0X2FkZCB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImVsZW1lbnQgYWxyZWFkeSBleGlzdHNcIlxuICAgIGVsc2UgKFxuICAgICAgSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KCk7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9hZGRfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X2FkZCB0IGspXG4gIGxldCByZW1vdmUgPSBIYXNodGJsLnJlbW92ZVxuXG4gIGxldCBzdHJpY3RfcmVtb3ZlIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlIHQgaztcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yIFwiZWxlbWVudCBub3QgaW4gc2V0XCIgayAoSGFzaHRibC5zZXhwX29mX2tleSB0KVxuICA7O1xuXG4gIGxldCBzdHJpY3RfcmVtb3ZlX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9yZW1vdmUgdCBrKVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gSGFzaHRibC5mb2xkIHQgfmluaXQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIGFjYyAtPiBmIGFjYyBrZXkpXG4gIGxldCBpdGVyIHQgfmYgPSBIYXNodGJsLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCB0b19saXN0ID0gSGFzaHRibC5rZXlzXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2UgdCA9XG4gICAgc2V4cF9vZl9saXN0IHNleHBfb2ZfZSAodG9fbGlzdCB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTooaGFzaGFibGUgdCkuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IGluZGV4ID0gcmVmIChsZW4gLSAxKSBpblxuICAgIGZvbGQgdCB+aW5pdDpbfHxdIH5mOihmdW4gYWNjIGtleSAtPlxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGFjYyA9IDBcbiAgICAgIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4ga2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgaW5kZXggOj0gIWluZGV4IC0gMTtcbiAgICAgICAgYWNjLighaW5kZXgpIDwtIGtleTtcbiAgICAgICAgYWNjKSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmYgPSBIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBub3QgKEhhc2h0YmwuZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBub3QgKGYga2V5KSkpXG4gIGxldCBlcXVhbCB0MSB0MiA9IEhhc2h0YmwuZXF1YWwgKGZ1biAoKSAoKSAtPiB0cnVlKSB0MSB0MlxuICBsZXQgY29weSB0ID0gSGFzaHRibC5jb3B5IHRcbiAgbGV0IGZpbHRlciB0IH5mID0gSGFzaHRibC5maWx0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KVxuICBsZXQgdW5pb24gdDEgdDIgPSBIYXNodGJsLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIF8gLT4gU29tZSAoKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBmaWx0ZXIgdDEgfmY6KGZ1biBrZXkgLT4gbm90IChIYXNodGJsLm1lbSB0MiBrZXkpKVxuXG4gIGxldCBpbnRlciB0MSB0MiA9XG4gICAgbGV0IHNtYWxsZXIsIGxhcmdlciA9IGlmIGxlbmd0aCB0MSA+IGxlbmd0aCB0MiB0aGVuIHQyLCB0MSBlbHNlIHQxLCB0MiBpblxuICAgIEhhc2h0YmwuZmlsdGVyaSBzbWFsbGVyIH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBIYXNodGJsLm1lbSBsYXJnZXIga2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgICBsZXQgdG9fcmVtb3ZlID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgeCAtPiBpZiBmIHggdGhlbiBhYyBlbHNlIHggOjogYWMpIGluXG4gICAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIHggLT4gcmVtb3ZlIHQgeClcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGhhc2h0YmwgPSBIYXNodGJsLm1hcCBoYXNodGJsIH5mOmlnbm9yZVxuICBsZXQgdG9faGFzaHRibCB0IH5mID0gSGFzaHRibC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggbFxuICBpblxuICBsZXQgdCA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSBtIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4gayAtPiBhZGQgdCBrKTtcbiAgdFxuOztcblxubGV0IHRfb2Zfc2V4cCBtIGVfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgU2V4cC5BdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCByZXF1aXJlcyBhIGxpc3RcIiBzZXhwXG4gIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICBsZXQgdCA9IGNyZWF0ZSBtIH5zaXplOihMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIExpc3QuaXRlciBsaXN0IH5mOihmdW4gc2V4cCAtPlxuICAgICAgbGV0IGUgPSBlX29mX3NleHAgc2V4cCBpblxuICAgICAgbWF0Y2ggc3RyaWN0X2FkZCB0IGUgd2l0aFxuICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgfCBFcnJvciBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgZ290IGEgZHVwbGljYXRlIGVsZW1lbnRcIiBzZXhwKTtcbiAgICB0XG47O1xuXG5tb2R1bGUgQ3JlYXRvcnMgKEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IFNleHAudCAtPiAnYSBFbHQudCB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBFbHQudCB0XG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBlX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgZV9vZl9zZXhwIHNleHBcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBoYXNoX3NldFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gcG9seV9oYXNoYWJsZVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuZW5kXG5cbm1vZHVsZSBNIChFbHQgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBFbHQudCB0XG5lbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gZWx0KSB0ID1cbiAgc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gZWx0KSBzZXhwID1cbiAgdF9vZl9zZXhwIChtb2R1bGUgRWx0KSBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgdDEgdDIgPSBlcXVhbCB0MSB0MlxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBQcmludGZcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxuaW5jbHVkZSBGbG9hdDBcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9mbG9hdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfZmxvYXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGZsb2F0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Zsb2F0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGZsb2F0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCB0b19mbG9hdCB4ID0geFxubGV0IG9mX2Zsb2F0IHggPSB4XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIHRyeSBmbG9hdF9vZl9zdHJpbmcgcyB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5vZl9zdHJpbmcgJXNcIiBzICgpXG47O1xuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqIFN0b2xlbiBmcm9tIFtwZXJ2YXNpdmVzLm1sXS4gIEFkZHMgYSBcIi5cIiBhdCB0aGUgZW5kIGlmIG5lZWRlZC4gIEl0IGlzIGluXG4gICBbcGVydmFzaXZlcy5tbGldLCBidXQgaXQgYWxzbyBzYXlzIG5vdCB0byB1c2UgaXQgZGlyZWN0bHksIHNvIHdlIGNvcHkgYW5kIHBhc3RlIHRoZVxuICAgY29kZS4gSXQgbWFrZXMgdGhlIGFzc3VtcHRpb24gb24gdGhlIHN0cmluZyBwYXNzZWQgaW4gYXJndW1lbnQgdGhhdCBpdCB3YXMgcmV0dXJuZWQgYnlcbiAgIFtmb3JtYXRfZmxvYXRdLiAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgaSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbigqIExldCBbeV0gYmUgYSBwb3dlciBvZiAyLiAgVGhlbiB0aGUgbmV4dCByZXByZXNlbnRhYmxlIGZsb2F0IGlzOlxuICAgW3ogPSB5ICogKDEgKyAyICoqIC01MildXG4gICBhbmQgdGhlIHByZXZpb3VzIG9uZSBpc1xuICAgW3ggPSB5ICogKDEgLSAyICoqIC01MyldXG5cbiAgIEluIGdlbmVyYWwsIGV2ZXJ5IHR3byBhZGphY2VudCBmbG9hdHMgYXJlIHdpdGhpbiBhIGZhY3RvciBvZiBiZXR3ZWVuIFsxICsgMioqLTUzXVxuICAgYW5kIFsxICsgMioqLTUyXSBmcm9tIGVhY2ggb3RoZXIsIHRoYXQgaXMgd2l0aGluIFsxICsgMS4xZS0xNl0gYW5kIFsxICsgMi4zZS0xNl0uXG5cbiAgIFNvIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgZmxvYXQgc3RhcnRzIHdpdGggXCIxXCIsIHRoZW4gaXRzIGFkamFjZW50IGZsb2F0c1xuICAgd2lsbCB1c3VhbGx5IGRpZmZlciBmcm9tIGl0IGJ5IDEsIGFuZCBzb21ldGltZXMgYnkgMiwgYXQgdGhlIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRcbiAgIChjb3VudGluZyBmcm9tIDEpLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gc3RhcnRzIHdpdGggXCI5XCIsIHRoZW4gdGhlIGFkamFjZW50XG4gICBmbG9hdHMgd2lsbCBiZSBvZmYgYnkgbm8gbW9yZSB0aGFuIDIzIGF0IHRoZSAxNnRoIGFuZCAxN3RoIHNpZ25pZmljYW50IGRpZ2l0cy5cblxuICAgRS5nLjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAoMTAyNC4gKi4gKDEuIC0uIDIuKiogKC01My4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2N1xuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTlcIlxuICAgdn1cbiAgIFByaW50aW5nIGEgY291cGxlIG9mIGV4dHJhIGRpZ2l0cyByZXZlYWxzIHRoYXQgdGhlIGRpZmZlcmVuY2UgaW5kZWVkIGlzIHJvdWdobHkgMTEgYXRcbiAgIGRpZ2l0cyAxN3RoIGFuZCAxOHRoICh0aGF0IGlzLCAxM3RoIGFuZCAxNHRoIGFmdGVyIFwiLlwiKTpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuIC0uIDIuKiogKC01My4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk4ODZcIlxuICAgdn1cblxuICAgVGhlIHVscCAodGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhZGphY2VudCBmbG9hdHMpIGlzIHR3aWNlIGFzIGJpZyBvbiB0aGUgb3RoZXIgc2lkZSBvZlxuICAgMTAyNC46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiArLiAyLioqICgtNTIuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjQuMDAwMDAwMDAwMDAwMjI3XCJcbiAgIHZ9XG5cbiAgIE5vdyB0YWtlIGEgcG93ZXIgb2YgMiB3aGljaCBzdGFydHMgd2l0aCA5OTpcblxuICAge3ZcbiAgICAgIyAyLioqOTMuIDs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgMSAyMzQ1Njc4OTAxMjM0NTY3OFxuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0MjJlKzI3XG5cbiAgICAgIyAyLioqOTMuICouICgxLiArLiAyLioqICgtNTIuKSk7O1xuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0NDRlKzI3XG5cbiAgICAgIyAyLioqOTMuICouICgxLiAtLiAyLioqICgtNTMuKSk7O1xuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0MTFlKzI3XG4gICB2fVxuXG4gICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIDIqKjkzIGFuZCBpdHMgdHdvIG5laWdoYm9ycyBpcyBzbGlnaHRseSBtb3JlIHRoYW4sIHJlc3BlY3RpdmVseSxcbiAgIDEgYW5kIDIgYXQgc2lnbmlmaWNhbnQgZGlnaXQgMTYuXG5cbiAgIFRob3NlIGV4YW1wbGVzIHNob3cgdGhhdDpcbiAgIC0gMTcgc2lnbmlmaWNhbnQgZGlnaXRzIGlzIGFsd2F5cyBzdWZmaWNpZW50IHRvIHJlcHJlc2VudCBhIGZsb2F0IHdpdGhvdXQgYW1iaWd1aXR5XG4gICAtIDE1dGggc2lnbmlmaWNhbnQgZGlnaXQgY2FuIGFsd2F5cyBiZSByZXByZXNlbnRlZCBhY2N1cmF0ZWx5XG4gICAtIGNvbnZlcnRpbmcgYSBkZWNpbWFsIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyB0byBpdHMgbmVhcmVzdCBmbG9hdCBhbmQgYmFja1xuICAgICBjYW4gY2hhbmdlIHRoZSBsYXN0IGRlY2ltYWwgZGlnaXQgYnkgbm8gbW9yZSB0aGFuIDFcblxuICAgVG8gbWFrZSBzdXJlIHRoYXQgZmxvYXRzIG9idGFpbmVkIGJ5IGNvbnZlcnNpb24gZnJvbSBkZWNpbWFsIGZyYWN0aW9ucyAoZS5nLiBcIjMuMTRcIilcbiAgIGFyZSBwcmludGVkIHdpdGhvdXQgdHJhaWxpbmcgbm9uLXplcm8gZGlnaXRzLCBvbmUgc2hvdWxkIGNob29zZSB0aGUgZmlyc3QgYW1vbmcgdGhlXG4gICAnJS4xNWcnLCAnJS4xNmcnLCBhbmQgJyUuMTdnJyByZXByZXNlbnRhdGlvbnMgd2hpY2ggZG9lcyByb3VuZC10cmlwOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCIgICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0MDAwMDAwMDAwMDAwMDFcIiAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZSAqKVxuXG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4XCIgICAgICAgICAgICAgICAgICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tZG9lcyBub3Qgcm91bmQtdHJpcCAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDJcIiAgICAgICAgKCogcHJlZmVyIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMThcIiAgICAgICAoKiB0aGlzIG9uZSBoYXMgb25lIGRpZ2l0IG9mIGp1bmsgYXQgdGhlIGVuZCAqKVxuICAgdn1cblxuICAgU2tpcHBpbmcgdGhlICclLjE2ZycgaW4gdGhlIGFib3ZlIHByb2NlZHVyZSBzYXZlcyB1cyBzb21lIHRpbWUsIGJ1dCBpdCBtZWFucyB0aGF0LCBhc1xuICAgc2VlbiBpbiB0aGUgc2Vjb25kIGV4YW1wbGUgYWJvdmUsIG9jY2FzaW9uYWxseSBudW1iZXJzIHdpdGggZXhhY3RseSAxNiBzaWduaWZpY2FudFxuICAgZGlnaXRzIHdpbGwgaGF2ZSBhbiBlcnJvciBpbnRyb2R1Y2VkIGF0IHRoZSAxN3RoIGRpZ2l0LiAgVGhhdCBpcyBwcm9iYWJseSBPSyBmb3JcbiAgIHR5cGljYWwgdXNlLCBiZWNhdXNlIGEgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIGlzIFwidWdseVwiIGFscmVhZHkuICBBZGRpbmcgb25lXG4gICBtb3JlIGRvZXNuJ3QgbWFrZSBpdCBtdWNoIHdvcnNlIGZvciBhIGh1bWFuIHJlYWRlci5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIHdlIGNhbm5vdCBza2lwICclLjE1ZycgYW5kIG9ubHkgbG9vayBhdCAnJS4xNmcnIGFuZCAnJS4xN2cnLCBzaW5jZVxuICAgdGhlIGluYWNjdXJhY3kgYXQgdGhlIDE2dGggZGlnaXQgbWlnaHQgaW50cm9kdWNlIHRoZSBub2lzZSB3ZSB3YW50IHRvIGF2b2lkOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTJcIiAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTIwMDAwMDAwMDAwMDFcIiAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWp1bmsgYXQgdGhlIGVuZCAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTIwMDAwMDAwMDAwMDA5XCJcbiAgIHZ9XG4qKVxubGV0IHRvX3N0cmluZyB4ID1cbiAgdmFsaWRfZmxvYXRfbGV4ZW1cbiAgICAobGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1Z1wiIHggaW5cbiAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdnXCIgeClcbjs7XG5cbmxldCBtYXhfdmFsdWUgPSBpbmZpbml0eVxubGV0IG1pbl92YWx1ZSA9IG5lZ19pbmZpbml0eVxubGV0IG1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTA3NC5cbmxldCBtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwMjIuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBwaSA9IDB4My4yNDNGNkE4ODg1QTMwOEQzMTMxOThBMkUwMzcwNzNcbmxldCBzcXJ0X3BpID0gMHgxLkM1QkY4OTFCNEVGNkFBNzlDM0IwNTIwRDVEQjkzOFxubGV0IHNxcnRfMnBpID0gMHgyLjgxQjI2M0ZFQzRFMEIyQ0FGOTQ4M0Y1Q0U0NTlEQ1xubGV0IGV1bGVyID0gMHgwLjkzQzQ2N0UzN0RCMEM3QTREMUJFM0Y4MTAxNTJDQlxubGV0IG9mX2ludCA9IEludC50b19mbG9hdFxubGV0IHRvX2ludCA9IEludC5vZl9mbG9hdFxubGV0IG9mX2ludDYzIGkgPSBJbnQ2My50b19mbG9hdCBpXG5sZXQgb2ZfaW50NjQgaSA9IENhbWwuSW50NjQudG9fZmxvYXQgaVxubGV0IHRvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9mbG9hdFxubGV0IGlyb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xubGV0IGlyb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xuXG4oKiBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhlIFwiZXhuXCIgcm91bmRpbmcgZnVuY3Rpb25zIGlzIGltcG9ydGFudCwgc28gdGhleSBhcmUgd3JpdHRlblxuICAgb3V0IHNlcGFyYXRlbHksIGFuZCB0dW5lZCBpbmRpdmlkdWFsbHkuICAoV2UgY291bGQgaGF2ZSB0aGUgb3B0aW9uIHZlcnNpb25zIGNhbGxcbiAgIHRoZSBcImV4blwiIHZlcnNpb25zLCBidXQgdGhhdCBpbXBvc2VzIGFyZ3VhYmx5IGdyYXR1aXRvdXMgb3ZlcmhlYWQtLS1lc3BlY2lhbGx5XG4gICBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgY2FwdHVyZSBvZiBiYWNrdHJhY2VzIGlzIGVuYWJsZWQgdXBvbiBcIndpdGhcIi0tLWFuZCB0aGF0IHNlZW1zXG4gICBub3Qgd29ydGggaXQgd2hlbiBjb21wYXJlZCB0byB0aGUgcmVsYXRpdmVseSBzbWFsbCBhbW91bnQgb2YgY29kZSBkdXBsaWNhdGlvbi4pICopXG5cbigqIEVycm9yIHJlcG9ydGluZyBiZWxvdyBpcyB2ZXJ5IGNhcmVmdWxseSBhcnJhbmdlZCBzbyB0aGF0LCBlLmcuLCBbaXJvdW5kX25lYXJlc3RfZXhuXVxuICAgaXRzZWxmIGNhbiBiZSBpbmxpbmVkIGludG8gY2FsbGVycyBzdWNoIHRoYXQgdGhleSBkb24ndCBuZWVkIHRvIGFsbG9jYXRlIGEgYm94IGZvciB0aGVcbiAgIFtmbG9hdF0gYXJndW1lbnQuICBUaGlzIGlzIGRvbmUgd2l0aCBhIGJveCBbYm94XSBmdW5jdGlvbiBjYXJlZnVsbHkgY2hvc2VuIHRvIGFsbG93IHRoZVxuICAgY29tcGlsZXIgdG8gY3JlYXRlIGEgc2VwYXJhdGUgYm94IGZvciB0aGUgZmxvYXQgb25seSBpbiBlcnJvciBjYXNlcy4gIFNlZSwgZS5nLixcbiAgIFsuLi8uLi96ZXJvL3Rlc3QvcHJpY2VfdGVzdC5tbF0gZm9yIGEgbWVjaGFuaWNhbCB0ZXN0IG9mIHRoaXMgcHJvcGVydHkgd2hlbiBidWlsZGluZ1xuICAgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPXRydWVdLiAqKVxuXG5sZXQgaXJvdW5kX3VwIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9kb3duIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuIGlmIHQgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCkgZWxzZSBOb25lXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKCkpXG47O1xuXG5sZXQgaXJvdW5kX3Rvd2FyZHNfemVybyB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaXJvdW5kX3Rvd2FyZHNfemVyb19leG46IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoYm94IHQpXG4gICAgICAoKVxuOztcblxuKCogT3V0c2lkZSBvZiB0aGUgcmFuZ2UgKHJvdW5kX25lYXJlc3RfbGIuLnJvdW5kX25lYXJlc3RfdWIpLCBhbGwgcmVwcmVzZW50YWJsZSBkb3VibGVzXG4gICBhcmUgaW50ZWdlcnMgaW4gdGhlIG1hdGhlbWF0aWNhbCBzZW5zZSwgYW5kIFtyb3VuZF9uZWFyZXN0XSBzaG91bGQgYmUgaWRlbnRpdHkuXG5cbiAgIEhvd2V2ZXIsIGZvciBvZGQgbnVtYmVycyB3aXRoIHRoZSBhYnNvbHV0ZSB2YWx1ZSBiZXR3ZWVuIDIqKjUyIGFuZCAyKio1MywgdGhlIGZvcm11bGFcbiAgIFtyb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArIDAuNSldIGRvZXMgbm90IGhvbGQ6XG5cbiAgIHt2XG4gICAgICMgbGV0IG5haXZlX3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsuIDAuNSk7O1xuICAgICAjIGxldCB4ID0gMi4gKiogNTIuICsuIDEuOztcbiAgICAgdmFsIHggOiBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTcuXG4gICAgICMgbmFpdmVfcm91bmRfbmVhcmVzdCB4OztcbiAgICAgLSA6ICAgICBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTguXG4gICB2fVxuKilcblxubGV0IHJvdW5kX25lYXJlc3RfbGIgPSAtLigyLiAqKiA1Mi4pXG5sZXQgcm91bmRfbmVhcmVzdF91YiA9IDIuICoqIDUyLlxuXG4oKiBGb3IgW3ggPSBvbmVfdWxwIGBEb3duIDAuNV0sIHRoZSBmb3JtdWxhIFtmbG9vciAoeCArLiAwLjUpXSBmb3Igcm91bmRpbmcgdG8gbmVhcmVzdFxuICAgZG9lcyBub3Qgd29yaywgYmVjYXVzZSB0aGUgZXhhY3QgcmVzdWx0IGlzIGhhbGZ3YXkgYmV0d2VlbiBbb25lX3VscCBgRG93biAxLl0gYW5kIFsxLl0sXG4gICBhbmQgaXQgZ2V0cyByb3VuZGVkIHVwIHRvIFsxLl0gZHVlIHRvIHRoZSByb3VuZC10aWVzLXRvLWV2ZW4gcnVsZS4gKilcbmxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscCBgRG93biAwLjVcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0ID1cbiAgdFxuICArLlxuICBpZiB0ID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICB0aGVuIG9uZV91bHBfbGVzc190aGFuX2hhbGYgKCogc2luY2UgdCA8IDAuNSwgbWFrZSBzdXJlIHRoZSByZXN1bHQgaXMgPCAxLjAgKilcbiAgZWxzZSAwLjVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KSlcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICAgIGVsc2UgTm9uZVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF8zMlxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4bl8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX25lYXJlc3RfZXhuXzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF9leG5fNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzMyXG47O1xuXG4oKiBUaGUgZm9sbG93aW5nIFtpcm91bmRfZXhuXSBhbmQgW2lyb3VuZF0gZnVuY3Rpb25zIGFyZSBzbG93ZXIgdGhhbiB0aGUgb25lcyBhYm92ZS5cbiAgIFRoZWlyIGVxdWl2YWxlbmNlIHRvIHRob3NlIGZ1bmN0aW9ucyBpcyB0ZXN0ZWQgaW4gdGhlIHVuaXQgdGVzdHMgYmVsb3cuICopXG5cbmxldFtAaW5saW5lXSBpcm91bmRfZXhuID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBaZXJvIC0+IGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHRcbiAgfCBgTmVhcmVzdCAtPiBpcm91bmRfbmVhcmVzdF9leG4gdFxuICB8IGBVcCAtPiBpcm91bmRfdXBfZXhuIHRcbiAgfCBgRG93biAtPiBpcm91bmRfZG93bl9leG4gdFxuOztcblxubGV0IGlyb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgdHJ5IFNvbWUgKGlyb3VuZF9leG4gfmRpciB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNfaW5mIHQgPSAxLiAvLiB0ID0gMC5cbmxldCBpc19maW5pdGUgdCA9IHQgLS4gdCA9IDAuXG5cbmxldCBtaW5faW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgbWF4X2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IGFkZCA9ICggKy4gKVxubGV0IHN1YiA9ICggLS4gKVxubGV0IG5lZyA9ICggfi0uIClcbmxldCBhYnMgPSBhYnNfZmxvYXRcbmxldCBzY2FsZSA9ICggKi4gKVxubGV0IHNxdWFyZSB4ID0geCAqLiB4XG5cbm1vZHVsZSBQYXJ0cyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZnJhY3Rpb25hbCA6IHQgLT4gZmxvYXRcbiAgdmFsIGludGVncmFsIDogdCAtPiBmbG9hdFxuICB2YWwgbW9kZiA6IGZsb2F0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCAqIGZsb2F0XG5cbiAgbGV0IGZyYWN0aW9uYWwgdCA9IGZzdCB0XG4gIGxldCBpbnRlZ3JhbCB0ID0gc25kIHRcbiAgbGV0IG1vZGYgPSBtb2RmXG5lbmRcblxubGV0IG1vZGYgPSBQYXJ0cy5tb2RmXG5sZXQgcm91bmRfZG93biA9IGZsb29yXG5sZXQgcm91bmRfdXAgPSBjZWlsXG5sZXQgcm91bmRfdG93YXJkc196ZXJvIHQgPSBpZiB0ID49IDAuIHRoZW4gcm91bmRfZG93biB0IGVsc2Ugcm91bmRfdXAgdFxuXG4oKiBzZWUgdGhlIGNvbW1lbnQgYWJvdmUgW3JvdW5kX25lYXJlc3RfbGJdIGFuZCBbcm91bmRfbmVhcmVzdF91Yl0gZm9yIGFuIGV4cGxhbmF0aW9uICopXG5sZXRbQG9jYW1sLmlubGluZV0gcm91bmRfbmVhcmVzdF9pbmxpbmUgdCA9XG4gIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiICYmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gZmxvb3IgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gIGVsc2UgdCArLiAwLlxuOztcblxubGV0IHJvdW5kX25lYXJlc3QgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdFxuXG5sZXQgcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gdCA9XG4gIGlmIHQgPD0gcm91bmRfbmVhcmVzdF9sYiB8fCB0ID49IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiB0ICsuIDAuXG4gIGVsc2UgKFxuICAgIGxldCBmbG9vciA9IGZsb29yIHQgaW5cbiAgICAoKiBbY2VpbF9vcl9zdWNjID0gaWYgdCBpcyBhbiBpbnRlZ2VyIHRoZW4gdCArLiAxLiBlbHNlIGNlaWwgdF0uICBGYXN0ZXIgdGhhbiBbY2VpbF0uICopXG4gICAgbGV0IGNlaWxfb3Jfc3VjYyA9IGZsb29yICsuIDEuIGluXG4gICAgbGV0IGRpZmZfZmxvb3IgPSB0IC0uIGZsb29yIGluXG4gICAgbGV0IGRpZmZfY2VpbCA9IGNlaWxfb3Jfc3VjYyAtLiB0IGluXG4gICAgaWYgZGlmZl9mbG9vciA8IGRpZmZfY2VpbFxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGlmIGRpZmZfZmxvb3IgPiBkaWZmX2NlaWxcbiAgICB0aGVuIGNlaWxfb3Jfc3VjY1xuICAgIGVsc2UgaWYgKCogZXhhY3QgdGllLCBwaWNrIHRoZSBldmVuICopXG4gICAgICBtb2RfZmxvYXQgZmxvb3IgMi4gPSAwLlxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGNlaWxfb3Jfc3VjYylcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5sZXQgaW50NjNfcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xuXG5sZXQgaW50NjNfcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4biB0MCA9XG4gIGxldCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0MCBpblxuICBpZiB0ID4gMC5cbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChib3ggdDApXG4gICAgICAgICgpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKGJveCB0MClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gZiA9IEludDYzLm9mX2ludCAoaXJvdW5kX25lYXJlc3RfZXhuIGYpXG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICB8IFczMiAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuOztcblxubGV0IHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgdFxuICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gdFxuICB8IGBVcCAtPiByb3VuZF91cCB0XG4gIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIHRcbjs7XG5cbm1vZHVsZSBDbGFzcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW5maW5pdGVcbiAgICB8IE5hblxuICAgIHwgTm9ybWFsXG4gICAgfCBTdWJub3JtYWxcbiAgICB8IFplcm9cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEluZmluaXRlOyBOYW47IE5vcm1hbDsgU3Vibm9ybWFsOyBaZXJvIF0gOiB0IGxpc3QpXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwNl8gPSBcImZsb2F0Lm1sLkNsYXNzLnRcIiBpblxuICAgICBmdW5jdGlvblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSAtPiBJbmZpbml0ZVxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIC0+IE5hblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIC0+IE5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIC0+IFN1Ym5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSA6OiBfKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgOjogXykgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwN18gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgICB8IHNleHBfXzAwNV8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5maW5pdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5maW5pdGVcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgIHwgTm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5vcm1hbFwiXG4gICAgICB8IFN1Ym5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdWJub3JtYWxcIlxuICAgICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiSW5maW5pdGVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJTdWJub3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmVuZFxuXG5sZXQgY2xhc3NpZnkgdCA9XG4gIGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICB8IEZQX25vcm1hbCAtPiBDLk5vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbCAtPiBDLlN1Ym5vcm1hbFxuICB8IEZQX3plcm8gLT4gQy5aZXJvXG4gIHwgRlBfaW5maW5pdGUgLT4gQy5JbmZpbml0ZVxuICB8IEZQX25hbiAtPiBDLk5hblxuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyA/KGRlbGltaXRlciA9ICdfJykgPyhzdHJpcF96ZXJvID0gZmFsc2UpIHN0cmluZyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0cmluZyB+b246Jy4nIHdpdGhcbiAgfCBOb25lIC0+IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIHN0cmluZyB+ZGVsaW1pdGVyXG4gIHwgU29tZSAobGVmdCwgcmlnaHQpIC0+XG4gICAgbGV0IGxlZnQgPSBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBsZWZ0IH5kZWxpbWl0ZXIgaW5cbiAgICBsZXQgcmlnaHQgPVxuICAgICAgaWYgc3RyaXBfemVybyB0aGVuIFN0cmluZy5yc3RyaXAgcmlnaHQgfmRyb3A6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnMCcpIGVsc2UgcmlnaHRcbiAgICBpblxuICAgIChtYXRjaCByaWdodCB3aXRoXG4gICAgIHwgXCJcIiAtPiBsZWZ0XG4gICAgIHwgXyAtPiBsZWZ0IF4gXCIuXCIgXiByaWdodClcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtID9kZWxpbWl0ZXIgPyhkZWNpbWFscyA9IDMpID9zdHJpcF96ZXJvID8oZXhwbGljaXRfcGx1cyA9IGZhbHNlKSBmID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBkZWNpbWFscyAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwidG9fc3RyaW5nX2h1bTogaW52YWxpZCBhcmd1bWVudCB+ZGVjaW1hbHM9JWRcIiBkZWNpbWFscyAoKTtcbiAgbWF0Y2ggY2xhc3NpZnkgZiB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgZiA+IDAuIHRoZW4gXCJpbmZcIiBlbHNlIFwiLWluZlwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuXCJcbiAgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IHMgPVxuICAgICAgaWYgZXhwbGljaXRfcGx1cyB0aGVuIHNwcmludGYgXCIlKy4qZlwiIGRlY2ltYWxzIGYgZWxzZSBzcHJpbnRmIFwiJS4qZlwiIGRlY2ltYWxzIGZcbiAgICBpblxuICAgIGluc2VydF91bmRlcnNjb3JlcyBzID9kZWxpbWl0ZXIgP3N0cmlwX3plcm9cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGxldCBzZXhwID0gc2V4cF9vZl90IHQgaW5cbiAgbWF0Y2ggIVNleHAub2ZfZmxvYXRfc3R5bGUgd2l0aFxuICB8IGBOb191bmRlcnNjb3JlcyAtPiBzZXhwXG4gIHwgYFVuZGVyc2NvcmVzIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IExpc3QgXyAtPlxuICAgICAgIHJhaXNlX3NcbiAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgIFwiW3NleHBfb2ZfZmxvYXRdIHByb2R1Y2VkIHN0cmFuZ2Ugc2V4cFwiXG4gICAgICAgICAgICBbIFwic2V4cFwiLCBTZXhwLnNleHBfb2ZfdCBzZXhwIF0pXG4gICAgIHwgQXRvbSBzdHJpbmcgLT5cbiAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgc3RyaW5nICdFJyB0aGVuIHNleHAgZWxzZSBBdG9tIChpbnNlcnRfdW5kZXJzY29yZXMgc3RyaW5nKSlcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgPyhwcmVmaXggPSBcIlwiKSB+a2lsbyB+bWVnYSB+Z2lnYSB+dGVyYSA/cGV0YSAoKSA9XG4gICgqIFJvdW5kIGEgcmF0aW8gdG93YXJkIHRoZSBuZWFyZXN0IGludGVnZXIsIHJlc29sdmluZyB0aWVzIHRvd2FyZCB0aGUgbmVhcmVzdCBldmVuXG4gICAgIG51bWJlci4gIEZvciBzYW5lIGlucHV0cyAoaW4gcGFydGljdWxhciwgd2hlbiBbZGVub21pbmF0b3JdIGlzIGFuIGludGVnZXIgYW5kXG4gICAgIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0pIHRoaXMgc2hvdWxkIGJlIGFjY3VyYXRlLiAgT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IG1pZ2h0IGJlIGFcbiAgICAgbGl0dGxlIGJpdCBvZmYsIGJ1dCB3ZSBkb24ndCByZWFsbHkgdXNlIHRoYXQgY2FzZS4gKilcbiAgbGV0IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBrID0gZmxvb3IgKG51bWVyYXRvciAvLiBkZW5vbWluYXRvcikgaW5cbiAgICAoKiBpZiBbYWJzIGsgPCAyZTUzXSwgdGhlbiBib3RoIFtrXSBhbmQgW2sgKy4gMS5dIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBhbmQgaW5cbiAgICAgICBwYXJ0aWN1bGFyIFtrICsuIDEuID4ga10uICBJZiBbZGVub21pbmF0b3JdIGlzIGFsc28gYW4gaW50ZWdlciwgYW5kXG4gICAgICAgW2FicyAoZGVub21pbmF0b3IgKi4gKGsgKy4gMSkpIDwgMmU1M10gKGFuZCBpbiBzb21lIG90aGVyIGNhc2VzLCB0b28pLCB0aGVuIFtsb3dlcl1cbiAgICAgICBhbmQgW2hpZ2hlcl0gYXJlIGFjdHVhbGx5IGJvdGggYWNjdXJhdGUuICBTaW5jZSAocm91Z2hseSlcbiAgICAgICBbbnVtZXJhdG9yID0gZGVub21pbmF0b3IgKi4ga10gdGhlbiBmb3IgW2FicyBudW1lcmF0b3IgPCAyZTUyXSB3ZSBzaG91bGQgYmVcbiAgICAgICBmaW5lLiAqKVxuICAgIGxldCBsb3dlciA9IGRlbm9taW5hdG9yICouIGsgaW5cbiAgICBsZXQgaGlnaGVyID0gZGVub21pbmF0b3IgKi4gKGsgKy4gMS4pIGluXG4gICAgKCogU3VidHJhY3RpbmcgbnVtYmVycyB3aXRoaW4gYSBmYWN0b3Igb2YgdHdvIGZyb20gZWFjaCBvdGhlciBpcyBhY2N1cmF0ZS5cbiAgICAgICBTbyBlaXRoZXIgdGhlIHR3byBzdWJ0cmFjdGlvbnMgYmVsb3cgYXJlIGFjY3VyYXRlLCBvciBrID0gMCwgb3IgayA9IC0xLlxuICAgICAgIEluIGNhc2Ugb2YgYSB0aWUsIHJvdW5kIHRvIGV2ZW4uICopXG4gICAgbGV0IGRpZmZfcmlnaHQgPSBoaWdoZXIgLS4gbnVtZXJhdG9yIGluXG4gICAgbGV0IGRpZmZfbGVmdCA9IG51bWVyYXRvciAtLiBsb3dlciBpblxuICAgIGxldCBrID0gaXJvdW5kX25lYXJlc3RfZXhuIGsgaW5cbiAgICBpZiBkaWZmX3JpZ2h0IDwgZGlmZl9sZWZ0XG4gICAgdGhlbiBrICsgMVxuICAgIGVsc2UgaWYgZGlmZl9yaWdodCA+IGRpZmZfbGVmdFxuICAgIHRoZW4ga1xuICAgIGVsc2UgaWYgKCogYSB0aWUgKilcbiAgICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGsgbW9kIDIpIDBcbiAgICB0aGVuIGtcbiAgICBlbHNlIGsgKyAxXG4gIGluXG4gIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIHQgPCAwLjAgdGhlbiBcIi1pbmYgIFwiIGVsc2UgXCJpbmYgIFwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuICBcIlxuICB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgZ28gdCA9XG4gICAgICBsZXQgY29udl9vbmUgdCA9XG4gICAgICAgIGFzc2VydCAoMC4gPD0gdCAmJiB0IDwgOTk5Ljk1KTtcbiAgICAgICAgbGV0IHggPSBwcmVmaXggXiBmb3JtYXRfZmxvYXQgXCIlLjFmXCIgdCBpblxuICAgICAgICAoKiBGaXggdGhlIFwiLjBcIiBzdWZmaXggKilcbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCB4IH5zdWZmaXg6XCIuMFwiXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB4ID0gQnl0ZXMub2Zfc3RyaW5nIHggaW5cbiAgICAgICAgICBsZXQgbiA9IEJ5dGVzLmxlbmd0aCB4IGluXG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAxKSAnICc7XG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAyKSAnICc7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp4KVxuICAgICAgICBlbHNlIHhcbiAgICAgIGluXG4gICAgICBsZXQgY29udiBtYWcgdCBkZW5vbWluYXRvciA9XG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgKGRlbm9taW5hdG9yID0gMTAwLiAmJiB0ID49IDk5OS45NSlcbiAgICAgICAgICB8fCAoZGVub21pbmF0b3IgPj0gMTAwXzAwMC4gJiYgdCA+PSByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Ljk5OV81KSkpO1xuICAgICAgICBhc3NlcnQgKHQgPCByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Xzk5OS41KSk7XG4gICAgICAgIGxldCBpLCBkID1cbiAgICAgICAgICBsZXQgayA9IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvcjp0IH5kZW5vbWluYXRvciBpblxuICAgICAgICAgICgqIFttb2RdIGlzIG9rYXkgaGVyZSBiZWNhdXNlIHdlIGtub3cgaSA+PSAwLiAqKVxuICAgICAgICAgIGsgLyAxMCwgayBtb2QgMTBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgICAgICBhc3NlcnQgKDAgPD0gaSAmJiBpIDwgMTAwMCk7XG4gICAgICAgIGFzc2VydCAoMCA8PSBkICYmIGQgPCAxMCk7XG4gICAgICAgIGlmIGQgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIiVzJWQlcyBcIiBwcmVmaXggaSBtYWdcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlZCVzJWRcIiBwcmVmaXggaSBtYWcgZFxuICAgICAgaW5cbiAgICAgICgqIFdoaWxlIHRoZSBzdGFuZGFyZCBtZXRyaWMgcHJlZml4ZXMgKGUuZy4gY2FwaXRhbCBcIk1cIiByYXRoZXIgdGhhbiBcIm1cIiwgWzFdKSBhcmVcbiAgICAgICAgIG5vbWluYWxseSBtb3JlIGNvcnJlY3QsIHRoaXMgaGluZGVycyByZWFkYWJpbGl0eSBpbiBvdXIgY2FzZS4gIEUuZy4sIDEwRzYgYW5kXG4gICAgICAgICAxMDY2IGxvb2sgdG9vIHNpbWlsYXIuICBUaGF0J3MgYW4gZXh0cmVtZSBleGFtcGxlLCBidXQgaW4gZ2VuZXJhbCBrLG0sZyx0LHBcbiAgICAgICAgIHByb2JhYmx5IHN0YW5kIG91dCBiZXR0ZXIgdGhhbiBLLE0sRyxULFAgd2hlbiBpbnRlcnNwZXJzZWQgd2l0aCBkaWdpdHMuXG5cbiAgICAgICAgIFsxXSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldHJpY19wcmVmaXggKilcbiAgICAgICgqIFRoZSB0cmljayBoZXJlIGlzIHRoYXQ6XG4gICAgICAgICAtIHRoZSBmaXJzdCBib3VuZGFyeSAoOTk5Ljk1KSBhcyBhIGZsb2F0IGlzIHNsaWdodGx5IG92ZXItcmVwcmVzZW50ZWQgKHNvIGl0IGlzXG4gICAgICAgICAgIGJldHRlciBhcHByb3hpbWF0ZWQgYXMgXCIxa1wiIHRoYW4gYXMgXCI5OTkuOVwiKSxcbiAgICAgICAgIC0gdGhlIG90aGVyIGJvdW5kYXJpZXMgYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGJlY2F1c2UgdGhleSBhcmUgaW50ZWdlcnMuXG4gICAgICAgICAgIFRoYXQncyB3aHkgdGhlIHN0cmljdCBlcXVhbGl0aWVzIGJlbG93IGRvIGV4YWN0bHkgd2hhdCB3ZSB3YW50LiAqKVxuICAgICAgaWYgdCA8IDk5OS45NUUwXG4gICAgICB0aGVuIGNvbnZfb25lIHRcbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUzXG4gICAgICB0aGVuIGNvbnYga2lsbyB0IDEwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU2XG4gICAgICB0aGVuIGNvbnYgbWVnYSB0IDEwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFOVxuICAgICAgdGhlbiBjb252IGdpZ2EgdCAxMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUxMlxuICAgICAgdGhlbiBjb252IHRlcmEgdCAxMDBfMDAwXzAwMF8wMDAuXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcGV0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHRcbiAgICAgICAgfCBTb21lIHBldGEgLT5cbiAgICAgICAgICBpZiB0IDwgOTk5Ljk1RTE1XG4gICAgICAgICAgdGhlbiBjb252IHBldGEgdCAxMDBfMDAwXzAwMF8wMDBfMDAwLlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0KVxuICAgIGluXG4gICAgaWYgdCA+PSAwLiB0aGVuIGdvIHQgZWxzZSBcIi1cIiBeIGdvIH4tLnRcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmcgdCA9XG4gIHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCB+a2lsbzpcImtcIiB+bWVnYTpcIm1cIiB+Z2lnYTpcImdcIiB+dGVyYTpcInRcIiB+cGV0YTpcInBcIiAoKVxuOztcblxuKCogUGVyZm9ybWFuY2Ugbm90ZTogSW5pdGlhbGl6aW5nIHRoZSBhY2N1bXVsYXRvciB0byAxIHJlc3VsdHMgaW4gb25lIGV4dHJhXG4gICBtdWx0aXBseTsgZS5nLiwgdG8gY29tcHV0ZSB4ICoqIDQsIHdlIGluIHByaW5jaXBsZSBvbmx5IG5lZWQgMiBtdWx0aXBsaWVzLFxuICAgYnV0IHRoaXMgZnVuY3Rpb24gd2lsbCBoYXZlIDMgbXVsdGlwbGllcy4gIEhvd2V2ZXIsIGF0dGVtcHRzIHRvIGF2b2lkIHRoaXNcbiAgIChsaWtlIGRlY3JlbWVudGluZyBuIGFuZCBpbml0aWFsaXppbmcgYWNjdW0gdG8gYmUgeCwgb3IgaGFuZGxpbmcgc21hbGxcbiAgIGV4cG9uZW50cyBhcyBhIHNwZWNpYWwgY2FzZSkgaGF2ZSBub3QgeWllbGRlZCBhbnl0aGluZyB0aGF0IGlzIGEgbmV0XG4gICBpbXByb3ZlbWVudC5cbiopXG5sZXQgaW50X3BvdyB4IG4gPVxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gMS5cbiAgZWxzZSAoXG4gICAgKCogVXNpbmcgW3ggKy4gKC0wLildIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBjb252aW5jZXMgdGhlIGNvbXBpbGVyIHRvIGF2b2lkIGEgY2VydGFpblxuICAgICAgIGJveGluZyAodGhhdCB3b3VsZCByZXN1bHQgaW4gYWxsb2NhdGlvbiBpbiBlYWNoIGl0ZXJhdGlvbikuICBTb29uLCB0aGUgY29tcGlsZXJcbiAgICAgICBzaG91bGRuJ3QgbmVlZCB0aGlzIFwiaGludFwiIHRvIGF2b2lkIHRoZSBib3hpbmcuICBUaGUgcmVhc29uIHdlIGFkZCAtMCByYXRoZXIgdGhhbiAwXG4gICAgICAgaXMgdGhhdCBbeCArLiAoLTAuKV0gaXMgYXBwYXJlbnRseSBhbHdheXMgdGhlIHNhbWUgYXMgW3hdLCB3aGVyZWFzIFt4ICsuIDAuXSBpc1xuICAgICAgIG5vdCwgaW4gdGhhdCBpdCBzZW5kcyBbLTAuXSB0byBbMC5dLiAgVGhpcyBtYWtlcyBhIGRpZmZlcmVuY2UgYmVjYXVzZSB3ZSB3YW50XG4gICAgICAgW2ludF9wb3cgKC0wLikgKC0xKV0gdG8gcmV0dXJuIG5lZ19pbmZpbml0eSBqdXN0IGxpa2UgWy0wLiAqKiAtMS5dIHdvdWxkLiAgKilcbiAgICBsZXQgeCA9IHJlZiAoeCArLiAtMC4pIGluXG4gICAgbGV0IG4gPSByZWYgbiBpblxuICAgIGxldCBhY2N1bSA9IHJlZiAxLiBpblxuICAgIGlmICFuIDwgMFxuICAgIHRoZW4gKFxuICAgICAgKCogeCAqKiBuID0gKDEveCkgKiogLW4gKilcbiAgICAgIHggOj0gMS4gLy4gIXg7XG4gICAgICBuIDo9IH4tICghbik7XG4gICAgICBpZiAhbiA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBuIG11c3QgaGF2ZSBiZWVuIG1pbl9pbnQsIHNvIGl0IGlzIG5vdyBzbyBiaWcgdGhhdCBpdCBoYXMgd3JhcHBlZCBhcm91bmQuXG4gICAgICAgICAgIFdlIGRlY3JlbWVudCBpdCBzbyB0aGF0IGl0IGxvb2tzIHBvc2l0aXZlIGFnYWluLCBidXQgYWNjb3JkaW5nbHkgaGF2ZVxuICAgICAgICAgICB0byBwdXQgYW4gZXh0cmEgZmFjdG9yIG9mIHggaW4gdGhlIGFjY3VtdWxhdG9yLlxuICAgICAgICAqKVxuICAgICAgICBhY2N1bSA6PSAheDtcbiAgICAgICAgZGVjciBuKSk7XG4gICAgKCogTGV0dGluZyBbYV0gZGVub3RlICh0aGUgb3JpZ2luYWwgdmFsdWUgb2YpIFt4ICoqIG5dLCB3ZSBtYWludGFpblxuICAgICAgIHRoZSBpbnZhcmlhbnQgdGhhdCBbKHggKiogbikgKi4gYWNjdW0gPSBhXS4gKilcbiAgICB3aGlsZSAhbiA+IDEgZG9cbiAgICAgIGlmICFuIGxhbmQgMSA8PiAwIHRoZW4gYWNjdW0gOj0gIXggKi4gIWFjY3VtO1xuICAgICAgeCA6PSAheCAqLiAheDtcbiAgICAgIG4gOj0gIW4gbHNyIDFcbiAgICBkb25lO1xuICAgICgqIG4gaXMgbmVjZXNzYXJpbHkgMSBhdCB0aGlzIHBvaW50LCBzbyB0aGVyZSBpcyBvbmUgYWRkaXRpb25hbFxuICAgICAgIG11bHRpcGxpY2F0aW9uIGJ5IHguICopXG4gICAgIXggKi4gIWFjY3VtKVxuOztcblxubGV0IHJvdW5kX2dlbiB4IH5ob3cgPVxuICBpZiB4ID0gMC5cbiAgdGhlbiAwLlxuICBlbHNlIGlmIG5vdCAoaXNfZmluaXRlIHgpXG4gIHRoZW4geFxuICBlbHNlIChcbiAgICAoKiBTaWduaWZpY2FudCBkaWdpdHMgYW5kIGRlY2ltYWwgZGlnaXRzLiAqKVxuICAgIGxldCBzZCwgZGQgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHNpZ25pZmljYW50X2RpZ2l0cyBzZCAtPlxuICAgICAgICBsZXQgZGQgPSBzZCAtIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICAgIHwgYGRlY2ltYWxfZGlnaXRzIGRkIC0+XG4gICAgICAgIGxldCBzZCA9IGRkICsgdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgIGluXG4gICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIHNkIDwgMFxuICAgIHRoZW4gMC5cbiAgICBlbHNlIGlmIHNkID49IDE3XG4gICAgdGhlbiB4XG4gICAgZWxzZSAoXG4gICAgICAoKiBDaG9vc2UgdGhlIG9yZGVyIHRoYXQgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQuIFNtYWxsIHBvc2l0aXZlXG4gICAgICAgICBpbnRlZ2VycyBhcmUsIGJ1dCB0aGVpciBpbnZlcnNlcyBpbiBtb3N0IGNhc2VzIGFyZSBub3QuICopXG4gICAgICBsZXQgYWJzX2RkID0gSW50LmFicyBkZCBpblxuICAgICAgaWYgYWJzX2RkID4gMjIgfHwgc2QgPj0gMTZcbiAgICAgICgqIDEwKioyMiBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgYnV0IDEwKioyMyBpcyBub3QsIHNvIHVzZSB0aGUgc2xvd1xuICAgICAgICAgcGF0aC4gIFNpbWlsYXJseSwgaWYgd2UgbmVlZCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaW4gdGhlIHJlc3VsdCwgdGhlbiB0aGUgaW50ZWdlclxuICAgICAgICAgW3JvdW5kX25lYXJlc3QgKHggPG9wPiBvcmRlcildIG1pZ2h0IG5vdCBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgc2luY2VcbiAgICAgICAgIGZvciBzb21lIHJhbmdlcyB3ZSBvbmx5IGhhdmUgMTUgZGlnaXRzIG9mIHByZWNpc2lvbiBndWFyYW50ZWVkLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHdlIGFyZSBzdGlsbCByb3VuZGluZyB0d2ljZSBoZXJlOlxuXG4gICAgICAgICAxKSBmaXJzdCB0aW1lIHdoZW4gcm91bmRpbmcgW3ggKi4gb3JkZXJdIG9yIFt4IC8uIG9yZGVyXSB0byB0aGUgbmVhcmVzdCBmbG9hdFxuICAgICAgICAgKGp1c3QgdGhlIG5vcm1hbCB3YXkgZmxvYXRpbmctcG9pbnQgbXVsdGlwbGljYXRpb24gb3IgZGl2aXNpb24gd29ya3MpLFxuXG4gICAgICAgICAyKSBzZWNvbmQgdGltZSB3aGVuIGFwcGx5aW5nIFtyb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbl0gdG8gdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIGFib3ZlIG9wZXJhdGlvblxuXG4gICAgICAgICBTbyBmb3IgYXJndW1lbnRzIHdpdGhpbiBhbiB1bHAgZnJvbSBhIHRpZSB3ZSBtaWdodCBzdGlsbCBwcm9kdWNlIGFuIG9mZi1ieS1vbmVcbiAgICAgICAgIHJlc3VsdC4gKilcbiAgICAgIHRoZW4gb2Zfc3RyaW5nIChzcHJpbnRmIFwiJS4qZ1wiIHNkIHgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG9yZGVyID0gaW50X3BvdyAxMC4gYWJzX2RkIGluXG4gICAgICAgIGlmIGRkID49IDBcbiAgICAgICAgdGhlbiByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAqLiBvcmRlcikgLy4gb3JkZXJcbiAgICAgICAgZWxzZSByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAvLiBvcmRlcikgKi4gb3JkZXIpKSlcbjs7XG5cbmxldCByb3VuZF9zaWduaWZpY2FudCB4IH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBzaWduaWZpY2FudF9kaWdpdHMgMFxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LnJvdW5kX3NpZ25pZmljYW50OiBpbnZhbGlkIGFyZ3VtZW50IHNpZ25pZmljYW50X2RpZ2l0czolZFwiXG4gICAgICBzaWduaWZpY2FudF9kaWdpdHNcbiAgICAgICgpXG4gIGVsc2Ugcm91bmRfZ2VuIHggfmhvdzooYHNpZ25pZmljYW50X2RpZ2l0cyBzaWduaWZpY2FudF9kaWdpdHMpXG47O1xuXG5sZXQgcm91bmRfZGVjaW1hbCB4IH5kZWNpbWFsX2RpZ2l0cyA9IHJvdW5kX2dlbiB4IH5ob3c6KGBkZWNpbWFsX2RpZ2l0cyBkZWNpbWFsX2RpZ2l0cylcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgKCogY2xhbXBfdW5jaGVja2VkIGlzIGluIGZsb2F0MC5tbCAqKVxuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGlmIG1pbiA8PSBtYXhcbiAgdGhlbiBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuOztcblxubGV0ICggKyApID0gKCArLiApXG5sZXQgKCAtICkgPSAoIC0uIClcbmxldCAoICogKSA9ICggKi4gKVxubGV0ICggKiogKSA9ICggKiogKVxubGV0ICggLyApID0gKCAvLiApXG5sZXQgKCAlICkgPSAoICUuIClcbmxldCAoIH4tICkgPSAoIH4tLiApXG5cbmxldCBzaWduX2V4biB0IDogU2lnbi50ID1cbiAgaWYgdCA+IDAuXG4gIHRoZW4gUG9zXG4gIGVsc2UgaWYgdCA8IDAuXG4gIHRoZW4gTmVnXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gWmVyb1xuICBlbHNlIEVycm9yLnJhaXNlX3MgKFNleHAubWVzc2FnZSBcIkZsb2F0LnNpZ25fZXhuIG9mIE5BTlwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBzaWduX29yX25hbiB0IDogU2lnbl9vcl9uYW4udCA9XG4gIGlmIHQgPiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPCAwLiB0aGVuIE5lZyBlbHNlIGlmIHQgPSAwLiB0aGVuIFplcm8gZWxzZSBOYW5cbjs7XG5cbmxldCBpZWVlX25lZ2F0aXZlIHQgPVxuICBsZXQgYml0cyA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIFBvbHkuKGJpdHMgPCBDYW1sLkludDY0Lnplcm8pXG47O1xuXG5sZXQgZXhwb25lbnRfYml0cyA9IDExXG5sZXQgbWFudGlzc2FfYml0cyA9IDUyXG5sZXQgZXhwb25lbnRfbWFzazY0ID0gSW50NjQuKHNoaWZ0X2xlZnQgb25lIGV4cG9uZW50X2JpdHMgLSBvbmUpXG5sZXQgZXhwb25lbnRfbWFzayA9IEludDY0LnRvX2ludF9leG4gZXhwb25lbnRfbWFzazY0XG5sZXQgbWFudGlzc2FfbWFzayA9IEludDYzLihzaGlmdF9sZWZ0IG9uZSBtYW50aXNzYV9iaXRzIC0gb25lKVxubGV0IG1hbnRpc3NhX21hc2s2NCA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhX21hc2tcblxubGV0IGllZWVfZXhwb25lbnQgdCA9XG4gIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgSW50NjQuKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYml0cyBtYW50aXNzYV9iaXRzKSBleHBvbmVudF9tYXNrNjQpXG4gIHw+IENhbWwuSW50NjQudG9faW50XG47O1xuXG5sZXQgaWVlZV9tYW50aXNzYSB0ID1cbiAgbGV0IGJpdHMgPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2My5vZl9pbnQ2NF9leG4gQ2FtbC5JbnQ2NC4obG9nYW5kIGJpdHMgbWFudGlzc2FfbWFzazY0KVxuOztcblxubGV0IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIGlmIEludC4oYml0X2FuZCBleHBvbmVudCBleHBvbmVudF9tYXNrIDw+IGV4cG9uZW50KVxuICB0aGVuIGZhaWx3aXRoZiBcImV4cG9uZW50ICVkIG91dCBvZiByYW5nZSBbMCwgJWRdXCIgZXhwb25lbnQgZXhwb25lbnRfbWFzayAoKVxuICBlbHNlIGlmIEludDYzLihiaXRfYW5kIG1hbnRpc3NhIG1hbnRpc3NhX21hc2sgPD4gbWFudGlzc2EpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwibWFudGlzc2EgJXMgb3V0IG9mIHJhbmdlIFswLCAlc11cIlxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYSlcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2FfbWFzaylcbiAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCBzaWduX2JpdHMgPSBpZiBuZWdhdGl2ZSB0aGVuIENhbWwuSW50NjQubWluX2ludCBlbHNlIENhbWwuSW50NjQuemVybyBpblxuICAgIGxldCBleHB0X2JpdHMgPSBDYW1sLkludDY0LnNoaWZ0X2xlZnQgKENhbWwuSW50NjQub2ZfaW50IGV4cG9uZW50KSBtYW50aXNzYV9iaXRzIGluXG4gICAgbGV0IG1hbnRfYml0cyA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhIGluXG4gICAgbGV0IGJpdHMgPSBDYW1sLkludDY0Lihsb2dvciBzaWduX2JpdHMgKGxvZ29yIGV4cHRfYml0cyBtYW50X2JpdHMpKSBpblxuICAgIENhbWwuSW50NjQuZmxvYXRfb2ZfYml0cyBiaXRzKVxuOztcblxubGV0IGNyZWF0ZV9pZWVlIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EpXG47O1xuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gIGxldCB0b19zdHJpbmcgeCA9IFByaW50Zi5zcHJpbnRmIFwiJS44R1wiIHhcbiAgbGV0IHNleHBfb2ZfdCB4ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgeClcbiAgbGV0IG9mX3N0cmluZyB4ID0gb2Zfc3RyaW5nIHhcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIFRoZXNlIGFyZSBwYXJ0bHkgaGVyZSBhcyBhIHBlcmZvcm1hbmNlIGhhY2sgdG8gYXZvaWQgc29tZSBib3hpbmcgd2UncmUgZ2V0dGluZyB3aXRoXG4gICB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10uICBUaGV5IGFsc28gbWFrZSBbRmxvYXQuaXNfbmVnYXRpdmUgbmFuXSBhbmRcbiAgIFtGbG9hdC5pc19ub25fcG9zaXRpdmUgbmFuXSByZXR1cm4gW2ZhbHNlXTsgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dIHJldHVyblxuICAgW3RydWVdLiAqKVxubGV0IGlzX3Bvc2l0aXZlIHQgPSB0ID4gMC5cbmxldCBpc19ub25fbmVnYXRpdmUgdCA9IHQgPj0gMC5cbmxldCBpc19uZWdhdGl2ZSB0ID0gdCA8IDAuXG5sZXQgaXNfbm9uX3Bvc2l0aXZlIHQgPSB0IDw9IDAuXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkZsb2F0XCJcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGVuZClcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggJSApID0gKCAlIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnQgPSBvZl9pbnRcbiAgbGV0IG9mX2Zsb2F0IHggPSB4XG5lbmRcblxubW9kdWxlIE9fZG90ID0gc3RydWN0XG4gIGxldCAoICouICkgPSAoICogKVxuICBsZXQgKCArLiApID0gKCArIClcbiAgbGV0ICggLS4gKSA9ICggLSApXG4gIGxldCAoIC8uICkgPSAoIC8gKVxuICBsZXQgKCAlLiApID0gKCAlIClcbiAgbGV0ICggfi0uICkgPSAoIH4tIClcbiAgbGV0ICggKiouICkgPSAoICoqIClcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYm94ID0gYm94XG4gIGxldCBjbGFtcF91bmNoZWNrZWQgPSBjbGFtcF91bmNoZWNrZWRcbiAgbGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgPSBsb3dlcl9ib3VuZF9mb3JfaW50XG4gIGxldCB1cHBlcl9ib3VuZF9mb3JfaW50ID0gdXBwZXJfYm91bmRfZm9yX2ludFxuICBsZXQgc3BlY2lhbGl6ZWRfaGFzaCA9IGhhc2hfZmxvYXRcbiAgbGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIGxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4biA9IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG4gIGxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biA9IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIGxldCBpcm91bmRfbmVhcmVzdF9leG5fNjQgPSBpcm91bmRfbmVhcmVzdF9leG5fNjRcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkgcmVwbGFjZSBkZWZhdWx0cyBpbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuXG5cbiAgIFRoZSBkZXNpcmVkIGJlaGF2aW9yIGhlcmUgaXMgdG8gcHJvcGFnYXRlIGEgbmFuIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4uIEJlY2F1c2UgdGhlXG4gICBmaXJzdCBjb21wYXJpc29uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLCBpdCBzdWZmaWNlcyB0b1xuICAgY2hlY2sgaWYgeCBpcyBuYW4uIFRoZW4sIHdoZW4geCBpcyBuYW4gb3IgYm90aCB4IGFuZCB5IGFyZSBuYW4sIHdlIHJldHVybiB4ID0gbmFuOyBhbmRcbiAgIHdoZW4geSBpcyBuYW4gYnV0IG5vdCB4LCB3ZSByZXR1cm4geSA9IG5hbi5cblxuICAgVGhlcmUgYXJlIHZhcmlvdXMgd2F5cyB0byBpbXBsZW1lbnQgdGhlc2UgZnVuY3Rpb25zLiAgVGhlIGJlbmNobWFyayBiZWxvdyBzaG93cyBhIGZld1xuICAgZGlmZmVyZW50IHZlcnNpb25zLiAgVGhpcyBiZW5jaG1hcmsgd2FzIHJ1biBvdmVyIGFuIGFycmF5IG9mIHJhbmRvbSBmbG9hdHMgKG5vbmUgb2ZcbiAgIHdoaWNoIGFyZSBuYW4pLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi40MnVzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMi4wMnVzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS44OHVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG5cbiAgIFRoZSBiZW5jaG1hcmsgYmVsb3cgd2FzIHJ1biB3aGVuIHggPiB5IGlzIGFsd2F5cyB0cnVlIChhZ2Fpbiwgbm8gbmFuIHZhbHVlcykuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjgzdXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjk3dXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjU2dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiopXG5sZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbmxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJ1ZmZlcl9pbnRmXG5pbmNsdWRlIENhbWwuQnVmZmVyXG5cbmxldCBjb250ZW50c19ieXRlcyA9IHRvX2J5dGVzXG5sZXQgYWRkX3N1YnN0cmluZyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YnN0cmluZyB0IHMgcG9zIGxlblxubGV0IGFkZF9zdWJieXRlcyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YmJ5dGVzIHQgcyBwb3MgbGVuXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3N0cmluZyAoY29udGVudHMgdClcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IEJ5dGVzLmNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcblxuICAgICAgbGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICAgICAgQ2FtbC5CdWZmZXIuYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQ2FtbC5CdWZmZXIpIChUb19ieXRlcylcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID0gQ2FtbC5QcmludGV4Yy5yYXdfYmFja3RyYWNlXG5cbmxldCBlbGlkZSA9IHJlZiBmYWxzZVxubGV0IGVsaWRlZF9tZXNzYWdlID0gXCI8YmFja3RyYWNlIGVsaWRlZCBpbiB0ZXN0PlwiXG5cbmxldCBnZXQgPyhhdF9tb3N0X251bV9mcmFtZXMgPSBJbnQubWF4X3ZhbHVlKSAoKSA9XG4gIENhbWwuUHJpbnRleGMuZ2V0X2NhbGxzdGFjayBhdF9tb3N0X251bV9mcmFtZXNcbjs7XG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIGlmICFlbGlkZSB0aGVuIGVsaWRlZF9tZXNzYWdlIGVsc2UgQ2FtbC5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyB0XG47O1xuXG5sZXQgdG9fc3RyaW5nX2xpc3QgdCA9IFN0cmluZy5zcGxpdF9saW5lcyAodG9fc3RyaW5nIHQpXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkxpc3QgKExpc3QubWFwICh0b19zdHJpbmdfbGlzdCB0KSB+ZjooZnVuIHggLT4gU2V4cC5BdG9tIHgpKVxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBzZXRfcmVjb3JkaW5nID0gQ2FtbC5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG4gIGxldCBhbV9yZWNvcmRpbmcgPSBDYW1sLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXNcbiAgbGV0IG1vc3RfcmVjZW50ICgpID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKVxuXG4gIGxldCBtb3N0X3JlY2VudF9mb3JfZXhuIGV4biA9XG4gICAgaWYgRXhuLmlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuIHRoZW4gU29tZSAobW9zdF9yZWNlbnQgKCkpIGVsc2UgTm9uZVxuICA7O1xuXG4gICgqIFdlIHR1cm4gb24gYmFja3RyYWNlcyBieSBkZWZhdWx0IGlmIE9DQU1MUlVOUEFSQU0gZG9lc24ndCBleHBsaWNpdGx5IG1lbnRpb24gdGhlbS4gKilcbiAgbGV0IG1heWJlX3NldF9yZWNvcmRpbmcgKCkgPVxuICAgIGxldCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgPVxuICAgICAgbWF0Y2ggU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSB4IC0+IExpc3QuZXhpc3RzIChTdHJpbmcuc3BsaXQgeCB+b246JywnKSB+ZjooU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiYlwiKVxuICAgIGluXG4gICAgaWYgbm90IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyB0aGVuIHNldF9yZWNvcmRpbmcgdHJ1ZVxuICA7O1xuXG4gICgqIHRoZSBjYWxsZXIgc2V0IHNvbWV0aGluZywgdGhleSBhcmUgcmVzcG9uc2libGUgKilcblxuICBsZXQgd2l0aF9yZWNvcmRpbmcgYiB+ZiA9XG4gICAgbGV0IHNhdmVkID0gYW1fcmVjb3JkaW5nICgpIGluXG4gICAgc2V0X3JlY29yZGluZyBiO1xuICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gc2V0X3JlY29yZGluZyBzYXZlZClcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBFeG4ubWF5YmVfc2V0X3JlY29yZGluZyAoKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIHRoZSB0b3BsZXZlbCBvZiB0aGUgQmFzZSBsaWJyYXJ5OyBpdCdzIHdoYXQgeW91IGdldCB3aGVuIHlvdSB3cml0ZVxuICAgIFtvcGVuIEJhc2VdLlxuXG4gICAgVGhlIGdvYWwgb2YgQmFzZSBpcyBib3RoIHRvIGJlIGEgbW9yZSBjb21wbGV0ZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIHJpY2hlciBBUElzLFxuICAgIGFuZCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgaW4gaXRzIGRlc2lnbi4gRm9yIGluc3RhbmNlLCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeVxuICAgIHNvbWUgdGhpbmdzIGhhdmUgbW9kdWxlcyBhbmQgb3RoZXJzIGRvbid0OyBpbiBCYXNlLCBldmVyeXRoaW5nIGlzIGEgbW9kdWxlLlxuXG4gICAgQmFzZSBleHRlbmRzIHNvbWUgbW9kdWxlcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIGxpa2UgW0FycmF5XSxcbiAgICBbQnVmZmVyXSwgW0J5dGVzXSwgW0NoYXJdLCBbSGFzaHRibF0sIFtJbnQzMl0sIFtJbnQ2NF0sIFtMYXp5XSwgW0xpc3RdLCBbTWFwXSxcbiAgICBbTmF0aXZlaW50XSwgW1ByaW50Zl0sIFtSYW5kb21dLCBbU2V0XSwgW1N0cmluZ10sIFtTeXNdLCBhbmQgW1VjaGFyXS4gT25lIGtleVxuICAgIGRpZmZlcmVuY2UgaXMgdGhhdCBCYXNlIGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMgYXMgbXVjaCBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeSBhbmRcbiAgICBpbnN0ZWFkIG1ha2VzIGhlYXZ5IHVzZSBvZiB0aGUgW1Jlc3VsdF0gdHlwZSwgYXMgaW46XG5cbiAgICB7WyB0eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYiBdfVxuXG4gICAgQmFzZSBhbHNvIGFkZHMgZW50aXJlbHkgbmV3IG1vZHVsZXMsIG1vc3Qgbm90YWJseTpcblxuICAgIC0gW0NvbXBhcmFibGVdLCBbQ29tcGFyYXRvcl0sIGFuZCBbQ29tcGFyaXNvbnNdIGluIGxpZXUgb2YgcG9seW1vcnBoaWMgY29tcGFyZS5cbiAgICAtIFtDb250YWluZXJdLCB3aGljaCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGFjcm9zcyBjb250YWluZXItbGlrZSBkYXRhXG4gICAgICBzdHJ1Y3R1cmVzIChhcnJheXMsIGxpc3RzLCBzdHJpbmdzKS5cbiAgICAtIFtSZXN1bHRdLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSwgc3VwcG9ydGluZyB0aGUgb3ItZXJyb3IgcGF0dGVybi5cbiopXG5cbigqXyBXZSBoaWRlIHRoaXMgZnJvbSB0aGUgd2ViIGRvY3MgYmVjYXVzZSB0aGUgbGluZSB3cmFwcGluZyBpcyBiYWQsIG1ha2luZyBpdFxuICBwcmV0dHkgbXVjaCBpbnNjcnV0YWJsZS4gKilcbigqKi8qKilcblxuKCogVGhlIGludGVudCBpcyB0byBzaGFkb3cgYWxsIG9mIElOUklBJ3Mgc3RhbmRhcmQgbGlicmFyeS4gIE1vZHVsZXMgYmVsb3cgd291bGQgY2F1c2VcbiAgIGNvbXBpbGF0aW9uIGVycm9ycyB3aXRob3V0IGJlaW5nIHJlbW92ZWQgZnJvbSBbU2hhZG93X3N0ZGxpYl0gYmVmb3JlIGluY2x1c2lvbi4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgKCogTW9kdWxlcyBkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW5fY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLkluX2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBPdXRfY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLk91dF9jaGFubmVsXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0XG4gICgqIFN1cHBvcnQgZm9yIGdlbmVyYXRlZCBsZXhlcnMgKilcbiAgd2l0aCBtb2R1bGUgTGV4aW5nIDo9IFNoYWRvd19zdGRsaWIuTGV4aW5nXG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0IDo9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA6PSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmKSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiovKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmluYXJ5X3NlYXJjaFxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gQmluYXJ5X3NlYXJjaGFibGVcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQnVmZmVyID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcXVhbCA9IEVxdWFsXG5tb2R1bGUgRXJyb3IgPSBFcnJvclxubW9kdWxlIEV4biA9IEV4blxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGbG9hdCA9IEZsb2F0XG5tb2R1bGUgRmxvYXRhYmxlID0gRmxvYXRhYmxlXG5tb2R1bGUgRm4gPSBGblxubW9kdWxlIEZvcm1hdHRlciA9IEZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVcbm1vZHVsZSBIYXNoZXIgPSBIYXNoZXJcbm1vZHVsZSBIYXNodGJsID0gSGFzaHRibFxubW9kdWxlIElkZW50aWZpYWJsZSA9IElkZW50aWZpYWJsZVxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludGFibGUgPSBJbnRhYmxlXG5tb2R1bGUgSW50X21hdGggPSBJbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE5hdGl2ZWludCA9IE5hdGl2ZWludFxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvclxubW9kdWxlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24gPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5tb2R1bGUgT3JkZXJpbmcgPSBPcmRlcmluZ1xubW9kdWxlIFBvbHkgPSBQb2x5XG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSA9IFBvbHkgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTExXSB1c2UgW1BvbHldIGluc3RlYWRcIl1cblxubW9kdWxlIFBvcGNvdW50ID0gUG9wY291bnRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIHRoZSBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRmID0gUHJpbnRmXG5tb2R1bGUgTGlua2VkX3F1ZXVlID0gTGlua2VkX3F1ZXVlXG5tb2R1bGUgUXVldWUgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSA9IFJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFNlcXVlbmNlID0gU2VxdWVuY2Vcbm1vZHVsZSBTZXQgPSBTZXRcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFN0YWNrID0gU3RhY2tcbm1vZHVsZSBTdGFnZWQgPSBTdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN5cyA9IFN5c1xubW9kdWxlIFQgPSBUXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gVW5pZm9ybV9hcnJheVxubW9kdWxlIFVuaXQgPSBVbml0XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50XG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG4oKiBBdm9pZCBhIGxldmVsIG9mIGluZGlyZWN0aW9uIGZvciB1c2VzIG9mIHRoZSBzaWduYXR1cmVzIGRlZmluZWQgaW4gW1RdLiAqKVxuaW5jbHVkZSBUXG5cbigqIFRoaXMgaXMgYSBoYWNrIHNvIHRoYXQgb2RvYyBjcmVhdGVzIGJldHRlciBkb2N1bWVudGF0aW9uLiAqKVxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwX3dpdGhfY29tcGFyYWJsZSAoKiogQGlubGluZSAqKVxuZW5kXG5cbigqKi8qKilcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzID0gc3RydWN0XG4gIG1vZHVsZSBGaWVsZHNsaWIgPSBGaWVsZHNsaWJcbiAgbW9kdWxlIFBweF9oYXNoX2xpYiA9IFBweF9oYXNoX2xpYlxuICBtb2R1bGUgVmFyaWFudHNsaWIgPSBWYXJpYW50c2xpYlxuICBtb2R1bGUgUHB4X2NvbXBhcmVfbGliID0gUHB4X2NvbXBhcmVfbGliXG4gIG1vZHVsZSBQcHhfZW51bWVyYXRlX2xpYiA9IFBweF9lbnVtZXJhdGVfbGliXG5cbiAgbGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldIGFuZCBbcmVmXSBzaW5jZSB0aGVzZSB0eXBlcyBhcmUgbXV0YWJsZS4gKilcbiAgdHlwZSAnYSBhcnJheSA9ICdhIEFycmF5LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYXJyYXkgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gaW50ID0gQXJyYXkuY29tcGFyZVxuICBsZXQgZXF1YWxfYXJyYXkgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGJvb2wgPSBBcnJheS5lcXVhbFxuXG4gIGxldCBhcnJheV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBhcnJheSA9XG4gICAgQXJyYXkudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfYXJyYXkgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBBcnJheS5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKGFycmF5X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBhcnJheSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gQXJyYXkudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBib29sID0gQm9vbC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Jvb2wgPSAoQm9vbC5jb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludClcbiAgbGV0IGVxdWFsX2Jvb2wgPSAoQm9vbC5lcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2Jvb2wgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBCb29sLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Jvb2wgOiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBCb29sLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYm9vbF9vZl9zZXhwID0gKEJvb2wudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJvb2wpXG4gIGxldCBzZXhwX29mX2Jvb2wgPSAoQm9vbC5zZXhwX29mX3QgOiBib29sIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQm9vbC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2NoYXIgPSAoQ2hhci5jb21wYXJlIDogY2hhciAtPiBjaGFyIC0+IGludClcbiAgbGV0IGVxdWFsX2NoYXIgPSAoQ2hhci5lcXVhbCA6IGNoYXIgLT4gY2hhciAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2NoYXIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBDaGFyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2NoYXIgOiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBDaGFyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgY2hhcl9vZl9zZXhwID0gKENoYXIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGNoYXIpXG4gIGxldCBzZXhwX29mX2NoYXIgPSAoQ2hhci5zZXhwX29mX3QgOiBjaGFyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQ2hhci50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBleG4gPSBFeG4udCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl9leG4gPSAoRXhuLnNleHBfb2ZfdCA6IGV4biAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGZsb2F0ID0gRmxvYXQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9mbG9hdCA9IChGbG9hdC5jb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50KVxuICBsZXQgZXF1YWxfZmxvYXQgPSAoRmxvYXQuZXF1YWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2Zsb2F0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEZsb2F0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Zsb2F0IDogZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEZsb2F0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgZmxvYXRfb2Zfc2V4cCA9IChGbG9hdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gZmxvYXQpXG4gIGxldCBzZXhwX29mX2Zsb2F0ID0gKEZsb2F0LnNleHBfb2ZfdCA6IGZsb2F0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBGbG9hdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQgPSBJbnQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQgPSAoSW50LmNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludClcbiAgbGV0IGVxdWFsX2ludCA9IChJbnQuZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBJbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50IDogaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnRfb2Zfc2V4cCA9IChJbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludClcbiAgbGV0IHNleHBfb2ZfaW50ID0gKEludC5zZXhwX29mX3QgOiBpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDMyID0gSW50MzIudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQzMiA9IChJbnQzMi5jb21wYXJlIDogaW50MzIgLT4gaW50MzIgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50MzIgPSAoSW50MzIuZXF1YWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2ludDMyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDMyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDMyIDogaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDMyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50MzJfb2Zfc2V4cCA9IChJbnQzMi50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50MzIpXG4gIGxldCBzZXhwX29mX2ludDMyID0gKEludDMyLnNleHBfb2ZfdCA6IGludDMyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQzMi50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50NjQgPSAoSW50NjQuY29tcGFyZSA6IGludDY0IC0+IGludDY0IC0+IGludClcbiAgbGV0IGVxdWFsX2ludDY0ID0gKEludDY0LmVxdWFsIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQ2NCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQ2NC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQ2NCA6IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQ2NC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDY0X29mX3NleHAgPSAoSW50NjQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDY0KVxuICBsZXQgc2V4cF9vZl9pbnQ2NCA9IChJbnQ2NC5zZXhwX29mX3QgOiBpbnQ2NCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50NjQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgbGlzdCA9ICdhIExpc3QudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAtPiBpbnQgPSBMaXN0LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAtPiBib29sID0gTGlzdC5lcXVhbFxuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgbGlzdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBMaXN0Lmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgbGlzdCA9XG4gICAgTGlzdC50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9saXN0IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGxpc3QgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBMaXN0LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAobGlzdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBsaXN0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gTGlzdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA9IChOYXRpdmVpbnQuY29tcGFyZSA6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5lcXVhbCA6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9uYXRpdmVpbnQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IE5hdGl2ZWludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9vZl9zZXhwID0gKE5hdGl2ZWludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gbmF0aXZlaW50KVxuICBsZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LnNleHBfb2ZfdCA6IG5hdGl2ZWludCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgbGV0IChuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgTmF0aXZlaW50LnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uIC0+IGludCA9XG4gICAgT3B0aW9uLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uIC0+IGJvb2wgPVxuICAgIE9wdGlvbi5lcXVhbFxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBvcHRpb25cbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgT3B0aW9uLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBvcHRpb24gPVxuICAgIE9wdGlvbi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9vcHRpb24gOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2Egb3B0aW9uIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgT3B0aW9uLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAob3B0aW9uX3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBvcHRpb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IE9wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHJlZiA9ICdhIFJlZi50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGludCA9IFJlZi5jb21wYXJlXG4gIGxldCBlcXVhbF9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gYm9vbCA9IFJlZi5lcXVhbFxuXG4gIGxldCByZWZfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgcmVmID1cbiAgICBSZWYudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfcmVmIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHJlZiAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIFJlZi5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKHJlZl9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSByZWYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZWYudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9zdHJpbmcgPSAoU3RyaW5nLmNvbXBhcmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludClcbiAgbGV0IGVxdWFsX3N0cmluZyA9IChTdHJpbmcuZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfc3RyaW5nIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBTdHJpbmcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfc3RyaW5nIDogc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBTdHJpbmcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzdHJpbmdfb2Zfc2V4cCA9IChTdHJpbmcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHN0cmluZylcbiAgbGV0IHNleHBfb2Zfc3RyaW5nID0gKFN0cmluZy5zZXhwX29mX3QgOiBzdHJpbmcgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ieXRlcyA9IChCeXRlcy5jb21wYXJlIDogYnl0ZXMgLT4gYnl0ZXMgLT4gaW50KVxuICBsZXQgZXF1YWxfYnl0ZXMgPSAoQnl0ZXMuZXF1YWwgOiBieXRlcyAtPiBieXRlcyAtPiBib29sKVxuICBsZXQgYnl0ZXNfb2Zfc2V4cCA9IChCeXRlcy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYnl0ZXMpXG4gIGxldCBzZXhwX29mX2J5dGVzID0gKEJ5dGVzLnNleHBfb2ZfdCA6IGJ5dGVzIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCeXRlcy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3VuaXQgPSAoVW5pdC5jb21wYXJlIDogdW5pdCAtPiB1bml0IC0+IGludClcbiAgbGV0IGVxdWFsX3VuaXQgPSAoVW5pdC5lcXVhbCA6IHVuaXQgLT4gdW5pdCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX3VuaXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBVbml0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3VuaXQgOiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBVbml0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdW5pdF9vZl9zZXhwID0gKFVuaXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHVuaXQpXG4gIGxldCBzZXhwX29mX3VuaXQgPSAoVW5pdC5zZXhwX29mX3QgOiB1bml0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVW5pdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIEZvcm1hdCBzdHVmZiAqKVxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG5cbiAgKCoqIExpc3Qgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBMaXN0LkluZml4XG5cbiAgKCoqIEludCBvcGVyYXRvcnMgYW5kIGNvbXBhcmlzb25zICopXG5cbiAgaW5jbHVkZSBJbnQuT1xuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAoKiogRmxvYXQgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBGbG9hdC5PX2RvdFxuXG4gICgqIFRoaXMgaXMgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gYmUgb3B0aW1pemVkIGF3YXkgaW4gbW9yZSBjb250ZXh0cy4gKilcblxuICAoKiogUmV2ZXJzZSBhcHBsaWNhdGlvbiBvcGVyYXRvci4gW3ggfD4gZyB8PiBmXSBpcyBlcXVpdmFsZW50IHRvIFtmIChnICh4KSldLiAqKVxuICBleHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4gICgqKiBBcHBsaWNhdGlvbiBvcGVyYXRvci4gW2cgQEAgZiBAQCB4XSBpcyBlcXVpdmFsZW50IHRvIFtnIChmICh4KSldLiAqKVxuICBleHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4gICgqKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuICAoKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuICBleHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuICBleHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIGV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuXG4gICgqIFRoaXMgbXVzdCBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBmb3IgdGhlIHdhcm5pbmdzIHRvIHdvcmsgcHJvcGVybHkuICopXG4gIGV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbiAgKCoqIENvbW1vbiBzdHJpbmcgb3BlcmF0aW9ucyAqKVxuICBsZXQgKCBeICkgPSBTdHJpbmcuKCBeIClcblxuICAoKiogUmVmZXJlbmNlIG9wZXJhdGlvbnMgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUgYW5kXG4gICAgIHRvIGtlZXAgcmVmZXJlbmNlIHVuYm94aW5nIHdvcmtpbmcgKilcbiAgZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG4gIGV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuICAoKiogUGFpciBvcGVyYXRpb25zICopXG5cbiAgbGV0IGZzdCA9IGZzdFxuICBsZXQgc25kID0gc25kXG5cbiAgKCoqIEV4Y2VwdGlvbnMgc3R1ZmYgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBtYXkgcmV3cml0ZSAnJXJhaXNlJyBhcyAnJXJlcmFpc2UnLiAqKVxuICBleHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG4gIGxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG4gIGxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gICgqKiBNaXNjICopXG5cbiAgbGV0IHBoeXNfZXF1YWwgPSBwaHlzX2VxdWFsXG5cbiAgZXh0ZXJuYWwgZm9yY2UgOiAnYSBMYXp5LnQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcbmVuZFxuXG5pbmNsdWRlIEV4cG9ydFxuXG5pbmNsdWRlIENvbnRhaW5lcl9pbnRmLkV4cG9ydCAoKiogQGlubGluZSAqKVxuXG5leGNlcHRpb24gTm90X2ZvdW5kX3MgPSBOb3RfZm91bmRfc1xuXG4oKiBXZSBwZXJmb3JtIHRoZXNlIHNpZGUgZWZmZWN0cyBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0aGVtIHRvIHJ1biBmb3IgYW55IGNvZGUgdGhhdCB1c2VzXG4gICBbQmFzZV0uICBJZiB0aGlzIHdlcmUgaW4gYW5vdGhlciBtb2R1bGUgaW4gW0Jhc2VdIHRoYXQgd2FzIG5vdCB1c2VkIGluIHNvbWUgcHJvZ3JhbSxcbiAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgIHByb2dyYW0gcmVmZXJzIHRvIGF0IGxlYXN0IG9uZSB2YWx1ZSBkaXJlY3RseSBpbiBbQmFzZV07IHJlZmVycmluZyB0byB2YWx1ZXMgaW5cbiAgIFtCYXNlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBCYWNrdHJhY2UuaW5pdGlhbGl6ZV9tb2R1bGUgKClcbiIsIm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5lbmRcbiIsImluY2x1ZGUgT2NhbWxfY29tbW9uLkxvY2F0aW9uXG5cbmxldCBzZXRfaW5wdXRfbmFtZSBuYW1lID0gaW5wdXRfbmFtZSA6PSBuYW1lXG5sZXQgc2V0X2lucHV0X2xleGJ1ZiBsZXhidWZfb3B0ID0gaW5wdXRfbGV4YnVmIDo9IGxleGJ1Zl9vcHRcblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTM3XCJdXG5cbiAgdHlwZSBvbGRfdCAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24uZXJyb3IgKikgPSB7XG4gICAgbG9jOiB0O1xuICAgIG1zZzogc3RyaW5nO1xuICAgIHN1Yjogb2xkX3QgbGlzdDtcbiAgICBpZl9oaWdobGlnaHQ6IHN0cmluZztcbiAgfVxuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0X2tpbmQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0X2tpbmQgKikgPVxuICB8IFJlcG9ydF9lcnJvclxuICB8IFJlcG9ydF93YXJuaW5nIG9mIHN0cmluZ1xuICB8IFJlcG9ydF93YXJuaW5nX2FzX2Vycm9yIG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydCBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnRfYXNfZXJyb3Igb2Ygc3RyaW5nXG5cbiAgdHlwZSBsb2NhdGlvbl9tc2cgPVxuICAgICgqSUZfQVRfTEVBU1QgNTAzIE9jYW1sX2NvbW1vbi5Gb3JtYXRfZG9jLnQgbG9jICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNTAzIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpIGxvYyAqKVxuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydCAqKSA9IHtcbiAgICBraW5kIDogbG9jYXRpb25fcmVwb3J0X2tpbmQ7XG4gICAgbWFpbiA6IGxvY2F0aW9uX21zZztcbiAgICBzdWIgOiBsb2NhdGlvbl9tc2cgbGlzdDtcbiAgICAoKklGX0FUX0xFQVNUIDUwMyBmb290bm90ZTogRm9ybWF0X2RvYy50IG9wdGlvbjsgKilcbiAgfVxuXG4gIHR5cGUgdCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBvbGRfdCAqKVxuICAoKiogT24gb2NhbWwgPj0gNC4wODogW3RdIGlzIGEgW2xvY2F0aW9uX3JlcG9ydF0gZm9yIHdoaWNoIFtsb2NhdGlvbl9yZXBvcnRfa2luZF0gbXVzdCBiZSBbUmVwb3J0X2Vycm9yXS4gKilcblxuICB0eXBlIHZlcnNpb25fc3BlY2lmaWNfdCA9IFtgTmV3X2Vycm9yIG9mIGxvY2F0aW9uX3JlcG9ydCB8IGBPbGRfZXJyb3Igb2Ygb2xkX3RdXG5cbiAgbGV0IHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IDogdCAtPiB2ZXJzaW9uX3NwZWNpZmljX3QgPSBmdW4geCAtPlxuICAgICgqSUZfQVRfTEVBU1QgNDA4IGBOZXdfZXJyb3IgeCAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBgT2xkX2Vycm9yIHggKilcblxuICBsZXQgaXNfd2VsbF9mb3JtZWQgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBraW5kID0gUmVwb3J0X2Vycm9yOyBfIH0gLT4gdHJ1ZVxuICAgIHwgYE5ld19lcnJvciBfIC0+IGZhbHNlXG4gICAgfCBgT2xkX2Vycm9yIF8gLT4gdHJ1ZVxuXG4gIGxldCBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIChtc2cgOiBsb2NhdGlvbl9tc2cpID1cbiAgICAgKCpJRl9BVF9MRUFTVCA1MDMgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBPY2FtbF9jb21tb24uRm9ybWF0X2RvYy5Eb2MuZm9ybWF0IG1zZy50eHQgKilcbiAgICAgKCpJRl9OT1RfQVRfTEVBU1QgNTAzIEZvcm1hdC5hc3ByaW50ZiBcIiV0XCIgbXNnLnR4dCAqKVxuXG4gIGxldCBtYWluX21zZyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IG1haW47IF8gfSAtPlxuICAgICAgICB7IHR4dCA9IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgbWFpbjsgbG9jID0gbWFpbi5sb2MgfVxuICAgIHwgYE9sZF9lcnJvciB7IG1zZzsgbG9jOyBfIH0gLT4geyB0eHQgPSBtc2c7IGxvYyB9XG5cbiAgbGV0IHN1Yl9tc2dzIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgc3ViOyBfIH0gLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGVyciAtPiB7IHR4dCA9IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgZXJyOyBsb2MgPSBlcnIubG9jIH0pXG4gICAgICAgICAgc3ViXG4gICAgfCBgT2xkX2Vycm9yIHsgc3ViOyBfIH0gLT5cbiAgICAgICAgbGV0IHJlYyBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgICB8IHsgbG9jOyBtc2c7IHN1YjsgXyB9IDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyAoeyB0eHQgPSBtc2c7IGxvYyB9IDo6IGFjYykgKHN1YiBAIHRhaWwpXG4gICAgICAgIGluXG4gICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgW10gc3ViXG5cbiAgbGV0IG9mX2V4biBleG4gPVxuICAgICgqSUZfQVRfTEVBU1QgNDA2IG1hdGNoIGVycm9yX29mX2V4biBleG4gd2l0aCB8IFNvbWUgKGBPayBlKSAtPiBTb21lIGUgfCBOb25lIHwgU29tZSBgQWxyZWFkeV9kaXNwbGF5ZWQgLT4gTm9uZSAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwNiBlcnJvcl9vZl9leG4gZXhuKilcblxuICBsZXQgX3NldF9tYWluX21zZ19vbGQgZXJyb3IgbXNnID0geyBlcnJvciB3aXRoIG1zZyB9XG5cbiAgbGV0IF9zZXRfbWFpbl90eHQgZXJyb3IgdHh0ID1cbiAgICBsZXQgbWFpbiA9IHsgZXJyb3IubWFpbiB3aXRoIHR4dCB9IGluXG4gICAgeyBlcnJvciB3aXRoIG1haW4gfVxuXG4gIGxldCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cgPVxuICAgICgqSUZfQVRfTEVBU1QgNTAzIGxldCB0eHQgPSBPY2FtbF9jb21tb24uRm9ybWF0X2RvYy5Eb2MubXNnIFwiJXNcIiBtc2cgaW4gKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA1MDMgbGV0IHR4dCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBtc2cgaW4gKilcbiAgICBsZXQgbWFpbiA9IHsgZXJyb3IubWFpbiB3aXRoIHR4dCB9IGluXG4gICAgeyBlcnJvciB3aXRoIG1haW4gfVxuXG4gIGxldCBzZXRfbWFpbl9tc2cgZXJyb3IgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19vbGQgZXJyb3IgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cqKVxuXG4gIGxldCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX29sZCB+c3ViIHsgbG9jOyB0eHQgfSA9XG4gICAgbGV0IHN1YiA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHsgbG9jOyB0eHQgfSAtPiB7IGxvYzsgbXNnID0gdHh0OyBzdWIgPSBbXTsgaWZfaGlnaGxpZ2h0ID0gdHh0IH0pXG4gICAgICAgIHN1YlxuICAgIGluXG4gICAgeyBsb2M7IG1zZyA9IHR4dDsgc3ViOyBpZl9oaWdobGlnaHQgPSB0eHQgfVxuXG4gIGxldCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIHsgbG9jOyB0eHQgfSA9XG4gICAgKCpJRl9BVF9MRUFTVCA1MDMgbGV0IG1rX3R4dCB4ID0gT2NhbWxfY29tbW9uLkZvcm1hdF9kb2MuRG9jLm1zZyBcIiVzXCIgeCBpbiAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDUwMyBsZXQgbWtfdHh0IHggcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgeCBpbiAqKVxuICAgIGxldCBtayBsb2MgeCA9IHsgbG9jOyB0eHQgPSBta190eHQgeCB9IGluXG4gICAge1xuICAgICAga2luZCA9IFJlcG9ydF9lcnJvcjtcbiAgICAgIG1haW4gPSBtayBsb2MgdHh0O1xuICAgICAgc3ViID0gTGlzdC5tYXAgKGZ1biB7IGxvYzsgdHh0IH0gLT4gbWsgbG9jIHR4dCkgc3ViO1xuICAgICAgKCpJRl9BVF9MRUFTVCA1MDMgZm9vdG5vdGUgPSBOb25lOyAqKVxuICAgIH1cblxuICBsZXQgbWFrZSB+c3ViIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIG1zZyopXG5cbiAgbGV0IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyA9IHsgZXJyb3Igd2l0aCBsb2MgfVxuXG4gIGxldCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MgPVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggbG9jIH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX2xvYyBlcnJvciBsb2MgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyopXG5lbmRcblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIG1zZyA9XG4gICgqIFVwZGF0ZSBmcm9tIFtrYXNwcmludGZdIHRvIFtrZHByaW50Zl0gKyBbRm9ybWF0X2RvYy5kZXByZWNhdGVkX3ByaW50ZXJdXG4gICAgIHdoZW4gb2NhbWwgbG93ZXIgYm91bmQgaXMgNC4wOCsgKilcbiAgKCpJRl9BVF9MRUFTVCA1MDMgRm9ybWF0Lmthc3ByaW50ZiAoZnVuIHMgLT4gcmFpc2VfZXJyb3JmID9sb2MgXCIlc1wiIHMpIG1zZyAqKVxuICAoKklGX05PVF9BVF9MRUFTVCA1MDMgcmFpc2VfZXJyb3JmID9sb2MgbXNnICopXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcblxubGV0IHBhcnNlIHMgPVxuICAoKklGX05PVF9BVF9MRUFTVCA0MTEgcGFyc2UgcyAqKVxuICAoKklGX0FUX0xFQVNUIDQxMSBPY2FtbF9jb21tb24uUGFyc2UubG9uZ2lkZW50IEBAIExleGluZy5mcm9tX3N0cmluZyBAQCBzICopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzFcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzFcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgR2F6YWduYWlyZSwgT0NhbWxQcm8gICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBGYWJyaWNlIExlIEZlc3NhbnQsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIEhvbmdibyBaaGFuZywgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9yaWdpbmFsIENvZGUgZnJvbSBCZXItbWV0YW9jYW1sLCBtb2RpZmllZCBmb3IgMy4xMi4wIGFuZCBmaXhlZCAqKVxuKCogUHJpbnRpbmcgY29kZSBleHByZXNzaW9ucyAqKVxuKCogQXV0aG9yczogIEVkIFBpenppLCBGYWJyaWNlIExlIEZlc3NhbnQgKilcbigqIEV4dGVuc2l2ZSBSZXdyaXRlOiBIb25nYm8gWmhhbmc6IFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICopXG4oKiBUT0RPIG1vcmUgZmluZS1ncmFpbmVkIHByZWNlZGVuY2UgcHJldHR5LXByaW50aW5nICopXG5cbm9wZW4gQXN0XzQxNFxub3BlbiBBc3R0eXBlc1xub3BlbiBGb3JtYXRcbm9wZW4gTG9jYXRpb25cbm9wZW4gTG9uZ2lkZW50XG5vcGVuIFBhcnNldHJlZVxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG5lbmRcblxubGV0IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gIGluXG4gIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXNcbiAgICAgICAgLT5cbiAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICBpblxuICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgaW5cbiAgbG9vcCB0XG5cbmxldCBwcmVmaXhfc3ltYm9scyA9IFsgJyEnOyAnPyc7ICd+JyBdXG5cbmxldCBpbmZpeF9zeW1ib2xzID1cbiAgWyAnPSc7ICc8JzsgJz4nOyAnQCc7ICdeJzsgJ3wnOyAnJic7ICcrJzsgJy0nOyAnKic7ICcvJzsgJyQnOyAnJSc7ICcjJyBdXG5cbigqIHR5cGUgZml4aXR5ID0gSW5maXh8IFByZWZpeCAgKilcbmxldCBzcGVjaWFsX2luZml4X3N0cmluZ3MgPVxuICBbIFwiYXNyXCI7IFwibGFuZFwiOyBcImxvclwiOyBcImxzbFwiOyBcImxzclwiOyBcImx4b3JcIjsgXCJtb2RcIjsgXCJvclwiOyBcIjo9XCI7IFwiIT1cIjsgXCI6OlwiIF1cblxubGV0IGxldG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2wnXG4gICYmIHMuWzFdID0gJ2UnXG4gICYmIHMuWzJdID0gJ3QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxubGV0IGFuZG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2EnXG4gICYmIHMuWzFdID0gJ24nXG4gICYmIHMuWzJdID0gJ2QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxuKCogZGV0ZXJtaW5lcyBpZiB0aGUgc3RyaW5nIGlzIGFuIGluZml4IHN0cmluZy5cbiAgIGNoZWNrcyBiYWNrd2FyZHMsIGZpcnN0IGFsbG93aW5nIGEgcmVuYW1pbmcgcG9zdGZpeCAoXCJfMTAyXCIpIHdoaWNoXG4gICBtYXkgaGF2ZSByZXN1bHRlZCBmcm9tIFBleHAgLT4gVGV4cCAtPiBQZXhwIHRyYW5zbGF0aW9uLCB0aGVuIGNoZWNraW5nXG4gICBpZiBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGFyZSB2YWxpZCBpbmZpeFxuICAgY2hhcmFjdGVycy4gKilcbmxldCBmaXhpdHlfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcIlwiIC0+IGBOb3JtYWxcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcyBzcGVjaWFsX2luZml4X3N0cmluZ3MgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gaW5maXhfc3ltYm9scyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBwcmVmaXhfc3ltYm9scyAtPiBgUHJlZml4IHNcbiAgfCBzIHdoZW4gcy5bMF0gPSAnLicgLT4gYE1peGZpeCBzXG4gIHwgcyB3aGVuIGxldG9wIHMgLT4gYExldG9wIHNcbiAgfCBzIHdoZW4gYW5kb3AgcyAtPiBgQW5kb3Agc1xuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgdmlld19maXhpdHlfb2ZfZXhwID0gZnVuY3Rpb25cbiAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICBmaXhpdHlfb2Zfc3RyaW5nIGxcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IGlzX2luZml4ID0gZnVuY3Rpb24gYEluZml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19taXhmaXggPSBmdW5jdGlvbiBgTWl4Zml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19rd2RvcCA9IGZ1bmN0aW9uIGBMZXRvcCBfIHwgYEFuZG9wIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBmaXJzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bMF0gPSBjXG5sZXQgbGFzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bU3RyaW5nLmxlbmd0aCBzdHIgLSAxXSA9IGNcbmxldCBmaXJzdF9pc19pbiBjcyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBMaXN0Lm1lbSBzdHIuWzBdIGNzXG5cbigqIHdoaWNoIGlkZW50aWZpZXJzIGFyZSBpbiBmYWN0IG9wZXJhdG9ycyBuZWVkaW5nIHBhcmVudGhlc2VzICopXG5sZXQgbmVlZHNfcGFyZW5zIHR4dCA9XG4gIGxldCBmaXggPSBmaXhpdHlfb2Zfc3RyaW5nIHR4dCBpblxuICBpc19pbmZpeCBmaXggfHwgaXNfbWl4Zml4IGZpeCB8fCBpc19rd2RvcCBmaXhcbiAgfHwgZmlyc3RfaXNfaW4gcHJlZml4X3N5bWJvbHMgdHh0XG5cbigqIHNvbWUgaW5maXhlcyBuZWVkIHNwYWNlcyBhcm91bmQgcGFyZW5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCBjb21tZW50XG4gICBzeW50YXggKilcbmxldCBuZWVkc19zcGFjZXMgdHh0ID0gZmlyc3RfaXMgJyonIHR4dCB8fCBsYXN0X2lzICcqJyB0eHRcbmxldCBzdHJpbmdfbG9jIHBwZiB4ID0gZnByaW50ZiBwcGYgXCIlc1wiIHgudHh0XG5cbigqIGFkZCBwYXJlbnRoZXNlcyB0byBiaW5kZXJzIHdoZW4gdGhleSBhcmUgaW4gZmFjdCBpbmZpeCBvciBwcmVmaXggb3BlcmF0b3JzICopXG5sZXQgcHJvdGVjdF9pZGVudCBwcGYgdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIihAOyVzQDspXCJcbiAgICBlbHNlIFwiKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCB0eHRcblxubGV0IHByb3RlY3RfbG9uZ2lkZW50IHBwZiBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJWEuJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiJWEuKEA7JXNAOylcIlxuICAgIGVsc2UgXCIlYS4oJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dFxuXG50eXBlIHNwYWNlX2Zvcm1hdHRlciA9ICh1bml0LCBGb3JtYXQuZm9ybWF0dGVyLCB1bml0KSBmb3JtYXRcblxubGV0IG92ZXJyaWRlID0gZnVuY3Rpb24gT3ZlcnJpZGUgLT4gXCIhXCIgfCBGcmVzaCAtPiBcIlwiXG5cbigqIHZhcmlhbmNlIGVuY29kaW5nOiBuZWVkIHRvIHN5bmMgdXAgd2l0aCB0aGUgW3BhcnNlci5tbHldICopXG5sZXQgdHlwZV92YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgTm9WYXJpYW5jZSAtPiBcIlwiXG4gIHwgQ292YXJpYW50IC0+IFwiK1wiXG4gIHwgQ29udHJhdmFyaWFudCAtPiBcIi1cIlxuXG5sZXQgdHlwZV9pbmplY3Rpdml0eSA9IGZ1bmN0aW9uIE5vSW5qZWN0aXZpdHkgLT4gXCJcIiB8IEluamVjdGl2ZSAtPiBcIiFcIlxuXG50eXBlIGNvbnN0cnVjdCA9XG4gIFsgYGNvbnMgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYGxpc3Qgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYG5pbFxuICB8IGBub3JtYWxcbiAgfCBgc2ltcGxlIG9mIExvbmdpZGVudC50XG4gIHwgYHR1cGxlIF1cblxubGV0IHZpZXdfZXhwciB4ID1cbiAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIigpXCI7IF8gfSwgXykgLT4gYHR1cGxlXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBgbmlsXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIF8pIC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZXhwIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgIFBleHBfY29uc3RydWN0XG4gICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgIFNvbWUgeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgZTE7IGUyIF07IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAgICApO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGxvb3AgZTIgKGUxIDo6IGFjYylcbiAgICAgICAgfCBlIC0+IChMaXN0LnJldiAoZSA6OiBhY2MpLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgbHMsIGIgPSBsb29wIHggW10gaW5cbiAgICAgIGlmIGIgdGhlbiBgbGlzdCBscyBlbHNlIGBjb25zIGxzXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHgsIE5vbmUpIC0+IGBzaW1wbGUgeC50eHRcbiAgfCBfIC0+IGBub3JtYWxcblxubGV0IGlzX3NpbXBsZV9jb25zdHJ1Y3QgOiBjb25zdHJ1Y3QgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gIHwgYG5pbCB8IGB0dXBsZSB8IGBsaXN0IF8gfCBgc2ltcGxlIF8gLT4gdHJ1ZVxuICB8IGBjb25zIF8gfCBgbm9ybWFsIC0+IGZhbHNlXG5cbmxldCBwcCA9IGZwcmludGZcblxudHlwZSBjdHh0ID0geyBwaXBlIDogYm9vbDsgc2VtaSA6IGJvb2w7IGlmdGhlbmVsc2UgOiBib29sIH1cblxubGV0IHJlc2V0X2N0eHQgPSB7IHBpcGUgPSBmYWxzZTsgc2VtaSA9IGZhbHNlOyBpZnRoZW5lbHNlID0gZmFsc2UgfVxubGV0IHVuZGVyX3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGUgPSB0cnVlIH1cbmxldCB1bmRlcl9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pID0gdHJ1ZSB9XG5sZXQgdW5kZXJfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZSA9IHRydWUgfVxuKCpcbmxldCByZXNldF9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pPWZhbHNlIH1cbmxldCByZXNldF9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlPWZhbHNlIH1cbmxldCByZXNldF9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlPWZhbHNlIH1cbiopXG5cbmxldCBsaXN0IDpcbiAgICAgICdhLlxuICAgICAgP3NlcDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIGxpc3QgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/c2VwID9maXJzdCA/bGFzdCBmdSBmIHhzIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBzZXAgPSBtYXRjaCBzZXAgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiQCBcIiA6IF8gZm9ybWF0NikgaW5cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICB8IHhzIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgICAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgICAgICBmdSBmIHg7XG4gICAgICAgICAgICAgIHBwIGYgc2VwO1xuICAgICAgICAgICAgICBsb29wIGYgeHNcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICAgIGxvb3AgZiB4cztcbiAgICAgICAgcHAgZiBsYXN0XG4gIGluXG4gIGF1eCBmIHhzXG5cbmxldCBvcHRpb24gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBvcHRpb24gLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/Zmlyc3QgP2xhc3QgZnUgZiBhIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICBmdSBmIHg7XG4gICAgICBwcCBmIGxhc3RcblxubGV0IHBhcmVuIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICBib29sIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/KGZpcnN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSA/KGxhc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpIGIgZnUgZiB4IC0+XG4gIGlmIGIgdGhlbiAoXG4gICAgcHAgZiBcIihcIjtcbiAgICBwcCBmIGZpcnN0O1xuICAgIGZ1IGYgeDtcbiAgICBwcCBmIGxhc3Q7XG4gICAgcHAgZiBcIilcIilcbiAgZWxzZSBmdSBmIHhcblxubGV0IHJlYyBsb25naWRlbnQgZiA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcHJvdGVjdF9pZGVudCBmIHNcbiAgfCBMZG90ICh5LCBzKSAtPiBwcm90ZWN0X2xvbmdpZGVudCBmIGxvbmdpZGVudCB5IHNcbiAgfCBMYXBwbHkgKHksIHMpIC0+IHBwIGYgXCIlYSglYSlcIiBsb25naWRlbnQgeSBsb25naWRlbnQgc1xuXG5sZXQgbG9uZ2lkZW50X2xvYyBmIHggPSBwcCBmIFwiJWFcIiBsb25naWRlbnQgeC50eHRcblxubGV0IGNvbnN0YW50IGYgPSBmdW5jdGlvblxuICB8IFBjb25zdF9jaGFyIGkgLT4gcHAgZiBcIiVDXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIE5vbmUpIC0+IHBwIGYgXCIlU1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBTb21lIGRlbGltKSAtPiBwcCBmIFwieyVzfCVzfCVzfVwiIGRlbGltIGkgZGVsaW1cbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG5cbigqIHRyYWlsaW5nIHNwYWNlKilcbmxldCBtdXRhYmxlX2ZsYWcgZiA9IGZ1bmN0aW9uIEltbXV0YWJsZSAtPiAoKSB8IE11dGFibGUgLT4gcHAgZiBcIm11dGFibGVAO1wiXG5sZXQgdmlydHVhbF9mbGFnIGYgPSBmdW5jdGlvbiBDb25jcmV0ZSAtPiAoKSB8IFZpcnR1YWwgLT4gcHAgZiBcInZpcnR1YWxAO1wiXG5cbigqIHRyYWlsaW5nIHNwYWNlIGFkZGVkICopXG5sZXQgcmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+ICgpIHwgUmVjdXJzaXZlIC0+IHBwIGYgXCJyZWMgXCJcblxubGV0IG5vbnJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiBwcCBmIFwibm9ucmVjIFwiIHwgUmVjdXJzaXZlIC0+ICgpXG5cbmxldCBkaXJlY3Rpb25fZmxhZyBmID0gZnVuY3Rpb25cbiAgfCBVcHRvIC0+IHBwIGYgXCJ0b0AgXCJcbiAgfCBEb3dudG8gLT4gcHAgZiBcImRvd250b0AgXCJcblxubGV0IHByaXZhdGVfZmxhZyBmID0gZnVuY3Rpb24gUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwicHJpdmF0ZUAgXCJcbmxldCBpdGVyX2xvYyBmIGN0eHQgeyB0eHQ7IGxvYyA9IF8gfSA9IGYgY3R4dCB0eHRcbmxldCBjb25zdGFudF9zdHJpbmcgZiBzID0gcHAgZiBcIiVTXCIgc1xuXG5sZXQgdHl2YXIgcHBmIHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBzLlsxXSA9ICdcXCcnIHRoZW5cbiAgICAoKiB3aXRob3V0IHRoZSBzcGFjZSwgdGhpcyB3b3VsZCBiZSBwYXJzZWQgYXNcbiAgICAgICBhIGNoYXJhY3RlciBsaXRlcmFsICopXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJyAlc1wiIHNcbiAgZWxzZSBGb3JtYXQuZnByaW50ZiBwcGYgXCInJXNcIiBzXG5cbmxldCB0eXZhcl9sb2MgZiBzdHIgPSB0eXZhciBmIHN0ci50eHRcbmxldCBzdHJpbmdfcXVvdCBmIHggPSBwcCBmIFwiYCVzXCIgeFxuXG4oKiBjIFsnYSwnYl0gKilcbmxldCByZWMgY2xhc3NfcGFyYW1zX2RlZiBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiWyVhXSBcIiAoKiBzcGFjZSAqKSAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+c2VwOlwiLFwiKSBsXG5cbmFuZCB0eXBlX3dpdGhfbGFiZWwgY3R4dCBmIChsYWJlbCwgYykgPVxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBjb3JlX3R5cGUxIGN0eHQgZiBjICgqIG90aGVyd2lzZSBwYXJlbnRoZXNpemUgKilcbiAgfCBMYWJlbGxlZCBzIC0+IHBwIGYgXCIlczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuICB8IE9wdGlvbmFsIHMgLT4gcHAgZiBcIj8lczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuXG5hbmQgY29yZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjb3JlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHR5cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2Fycm93IChsLCBjdDEsIGN0MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGN0MSkgKGNvcmVfdHlwZSBjdHh0KSBjdDJcbiAgICB8IFB0eXBfYWxpYXMgKGN0LCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSBjdCB0eXZhciBzXG4gICAgfCBQdHlwX3BvbHkgKFtdLCBjdCkgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgIHwgUHR5cF9wb2x5IChzbCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYVwiXG4gICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgbClcbiAgICAgICAgICAgICAgbClcbiAgICAgICAgICBzbCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSB4XG5cbmFuZCBjb3JlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFB0eXBfdmFyIHMgLT4gdHl2YXIgZiBzXG4gICAgfCBQdHlwX3R1cGxlIGwgLT4gcHAgZiBcIiglYSlcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgIHwgUHR5cF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmICgqIFwiJWElYUA7XCIgKikgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IFsgeCBdIC0+IHBwIGYgXCIlYUA7XCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+IGxpc3QgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKUA7XCIgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLEA7XCIgZiBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF92YXJpYW50IChsLCBjbG9zZWQsIGxvdykgLT5cbiAgICAgICAgbGV0IGZpcnN0X2lzX2luaGVyaXQgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgeyBQYXJzZXRyZWUucHJmX2Rlc2MgPSBSaW5oZXJpdCBfIH0gOjogXyAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBlX3ZhcmlhbnRfaGVscGVyIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBSdGFnIChsLCBfLCBjdGwpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAOyVhQF1cIiAoaXRlcl9sb2Mgc3RyaW5nX3F1b3QpIGxcbiAgICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiJlwiKSBjdGwpXG4gICAgICAgICAgICAgICAgY3RsIChhdHRyaWJ1dGVzIGN0eHQpIHgucHJmX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IFJpbmhlcml0IGN0IC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+WyVhJWFdQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCAobCwgY2xvc2VkKSB3aXRoXG4gICAgICAgICAgICB8IFtdLCBDbG9zZWQgLT4gKClcbiAgICAgICAgICAgIHwgW10sIE9wZW4gLT4gcHAgZiBcIj5cIiAoKiBDZiAjNzIwMDogcHJpbnQgWz5dIGNvcnJlY3RseSAqKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVzQDslYVwiXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggKGNsb3NlZCwgbG93KSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgTm9uZSAtPiBpZiBmaXJzdF9pc19pbmhlcml0IHRoZW4gXCIgfFwiIGVsc2UgXCJcIlxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIFNvbWUgXyAtPiBcIjxcIiAoKiBGSVhNRSBkZXN1Z2FyIHRoZSBzeW50YXggc3VnYXIqKVxuICAgICAgICAgICAgICAgICAgfCBPcGVuLCBfIC0+IFwiPlwiKVxuICAgICAgICAgICAgICAgICAgKGxpc3QgdHlwZV92YXJpYW50X2hlbHBlciB+c2VwOlwiQDs8MSAtMj58IFwiKVxuICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICBsXG4gICAgICAgICAgKGZ1biBmIGxvdyAtPlxuICAgICAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBbXSB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSB4cyAtPiBwcCBmIFwiPkAgJWFcIiAobGlzdCBzdHJpbmdfcXVvdCkgeHMpXG4gICAgICAgICAgbG93XG4gICAgfCBQdHlwX29iamVjdCAobCwgbykgLT5cbiAgICAgICAgbGV0IGNvcmVfZmllbGRfdHlwZSBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgT3RhZyAobCwgY3QpIC0+XG4gICAgICAgICAgICAgICgqIENmICM3MjAwICopXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzOiAlYUAgJWFAIEBdXCIgbC50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgICAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG9mX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IE9pbmhlcml0IGN0IC0+IHBwIGYgXCJAWzxob3YyPiVhQCBAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZpZWxkX3ZhciBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEFzdHR5cGVzLkNsb3NlZCAtPiAoKVxuICAgICAgICAgIHwgQXN0dHlwZXMuT3BlbiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBwcCBmIFwiLi5cIiB8IF8gLT4gcHAgZiBcIiA7Li5cIilcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+PEAgJWElYUAgPiBAXVwiXG4gICAgICAgICAgKGxpc3QgY29yZV9maWVsZF90eXBlIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbCBmaWVsZF92YXIgb1xuICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgIHwgUHR5cF9jbGFzcyAobGksIGwpIC0+XG4gICAgICAgICgqRklYTUUqKVxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYSMlYUBdXCJcbiAgICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF9wYWNrYWdlIChsaWQsIGNzdHJzKSAtPiAoXG4gICAgICAgIGxldCBhdXggZiAocywgY3QpID1cbiAgICAgICAgICBwcCBmIFwidHlwZSAlYUAgPUAgJWFcIiBsb25naWRlbnRfbG9jIHMgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjc3RycyB3aXRoXG4gICAgICAgIHwgW10gLT4gcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhQCB3aXRoQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgICAgIChsaXN0IGF1eCB+c2VwOlwiQCBhbmRAIFwiKSBjc3RycylcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGNvcmVfdHlwZSBjdHh0KSBmIHhcblxuKCoqKioqKioqKioqKioqKioqKioqcGF0dGVybioqKioqKioqKioqKioqKioqKioqKVxuKCogYmUgY2F1dGlvdXMgd2hlbiB1c2UgW3BhdHRlcm5dLCBbcGF0dGVybjFdIGlzIHByZWZlcnJlZCAqKVxuYW5kIHBhdHRlcm4gY3R4dCBmIHggPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKHBhdHRlcm4gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHBhdF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2FsaWFzIChwLCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwIHByb3RlY3RfaWRlbnQgcy50eHRcbiAgICB8IF8gLT4gcGF0dGVybl9vciBjdHh0IGYgeFxuXG5hbmQgcGF0dGVybl9vciBjdHh0IGYgeCA9XG4gIGxldCByZWMgbGVmdF9hc3NvY2lhdGl2ZSB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfb3IgKHAxLCBwMik7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgbGVmdF9hc3NvY2lhdGl2ZSBwMSAocDIgOjogYWNjKVxuICAgIHwgeCAtPiB4IDo6IGFjY1xuICBpblxuICBtYXRjaCBsZWZ0X2Fzc29jaWF0aXZlIHggW10gd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHBhdHRlcm4xIGN0eHQgZiB4XG4gIHwgb3JwYXRzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCB+c2VwOlwiQCB8IFwiIChwYXR0ZXJuMSBjdHh0KSkgb3JwYXRzXG5cbmFuZCBwYXR0ZXJuMSBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBsZXQgcmVjIHBhdHRlcm5fbGlzdF9oZWxwZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCB7XG4gICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgIFNvbWUgKFtdLCB7IHBwYXRfZGVzYyA9IFBwYXRfdHVwbGUgWyBwYXQxOyBwYXQyIF07IF8gfSkgKTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYTo6JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0MSBwYXR0ZXJuX2xpc3RfaGVscGVyIHBhdDIgKCpSQSopXG4gICAgfCBwIC0+IHBhdHRlcm4xIGN0eHQgZiBwXG4gIGluXG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF92YXJpYW50IChsLCBTb21lIHApIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBfKSAtPlxuICAgICAgICBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKCh7IHR4dDsgXyB9IGFzIGxpKSwgcG8pIC0+IChcbiAgICAgICAgaWYgKCogRklYTUUgVGhlIHRoaXJkIGZpZWxkIGFsd2F5cyBmYWxzZSAqKVxuICAgICAgICAgICB0eHQgPSBMaWRlbnQgXCI6OlwiIHRoZW4gcHAgZiBcIiVhXCIgcGF0dGVybl9saXN0X2hlbHBlciB4XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBwbyB3aXRoXG4gICAgICAgICAgfCBTb21lIChbXSwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDslYVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IFNvbWUgKHZsLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAICh0eXBlICVhKUA7JWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAgXCIgc3RyaW5nX2xvYylcbiAgICAgICAgICAgICAgICB2bCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpKVxuICAgIHwgXyAtPiBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX3BhdHRlcm4gY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKChcIigpXCIgfCBcIltdXCIpIGFzIHgpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgIHBwIGYgXCIlc1wiIHhcbiAgICB8IFBwYXRfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gcHJvdGVjdF9pZGVudCBmIHR4dFxuICAgIHwgUHBhdF9hcnJheSBsIC0+IHBwIGYgXCJAWzwyPlt8JWF8XUBdXCIgKGxpc3QgKHBhdHRlcm4xIGN0eHQpIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gTm9uZSB9IC0+IHBwIGYgXCIobW9kdWxlQCBfKUAgXCJcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gU29tZSBzIH0gLT4gcHAgZiBcIihtb2R1bGVAICVzKUAgXCIgc1xuICAgIHwgUHBhdF90eXBlIGxpIC0+IHBwIGYgXCIjJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQcGF0X3JlY29yZCAobCwgY2xvc2VkKSAtPiAoXG4gICAgICAgIGxldCBsb25naWRlbnRfeF9wYXR0ZXJuIGYgKGxpLCBwKSA9XG4gICAgICAgICAgbWF0Y2ggKGxpLCBwKSB3aXRoXG4gICAgICAgICAgfCAoIHsgdHh0ID0gTGlkZW50IHM7IF8gfSxcbiAgICAgICAgICAgICAgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9IClcbiAgICAgICAgICAgIHdoZW4gcyA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2xvc2VkIHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzwyPntAOyVhQDt9QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbFxuICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+e0A7JWE7X31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsKVxuICAgIHwgUHBhdF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwxPiglYSlAXVwiIChsaXN0IH5zZXA6XCIsQDtcIiAocGF0dGVybjEgY3R4dCkpIGwgKCogbGV2ZWwxKilcbiAgICB8IFBwYXRfY29uc3RhbnQgYyAtPiBwcCBmIFwiJWFcIiBjb25zdGFudCBjXG4gICAgfCBQcGF0X2ludGVydmFsIChjMSwgYzIpIC0+IHBwIGYgXCIlYS4uJWFcIiBjb25zdGFudCBjMSBjb25zdGFudCBjMlxuICAgIHwgUHBhdF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+KCVhQDs6QDslYSlAXVwiIChwYXR0ZXJuMSBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBwYXRfbGF6eSBwIC0+IHBwIGYgXCJAWzwyPihsYXp5QDslYSlAXVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBwIC0+IHBwIGYgXCJAWzwyPmV4Y2VwdGlvbkA7JWFAXVwiIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUHBhdF9vcGVuIChsaWQsIHApIC0+XG4gICAgICAgIGxldCB3aXRoX3BhcmVuID1cbiAgICAgICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQcGF0X2FycmF5IF8gfCBQcGF0X3JlY29yZCBfXG4gICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYSBAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgKHBhcmVuIHdpdGhfcGFyZW4gQEAgcGF0dGVybjEgY3R4dClcbiAgICAgICAgICBwXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKHBhdHRlcm4gY3R4dCkgZiB4XG5cbmFuZCBsYWJlbF9leHAgY3R4dCBmIChsLCBvcHQsIHApID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPlxuICAgICAgKCogc2luZ2xlIGNhc2UgcGF0dGVybiBwYXJlbnMgbmVlZGVkIGhlcmUgKilcbiAgICAgIHBwIGYgXCIlYUAgXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgfCBPcHRpb25hbCByZXN0IC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgd2hlbiB0eHQgPSByZXN0IC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+IHBwIGYgXCI/KCVzPUA7JWEpQDtcIiByZXN0IChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lc0AgXCIgcmVzdClcbiAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiPyVzOiglYT1AOyVhKUA7XCIgcmVzdCAocGF0dGVybjEgY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXM6JWFAO1wiIHJlc3QgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApKVxuICB8IExhYmVsbGVkIGwgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSB3aGVuIHR4dCA9IGxcbiAgICAgICAgLT5cbiAgICAgICAgICBwcCBmIFwifiVzQDtcIiBsXG4gICAgICB8IF8gLT4gcHAgZiBcIn4lczolYUA7XCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcClcblxuYW5kIHN1Z2FyX2V4cHIgY3R4dCBmIGUgPVxuICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGZhbHNlXG4gIGVsc2VcbiAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2FwcGx5XG4gICAgICAgICggeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gaWQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgICAgICBhcmdzIClcbiAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4gKGxhYiwgXykgLT4gbGFiID0gTm9sYWJlbCkgYXJncyAtPiAoXG4gICAgICAgIGxldCBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgc2VwIHJpZ2h0IHByaW50X2luZGV4XG4gICAgICAgICAgICBpbmRpY2VzIHJlbV9hcmdzID1cbiAgICAgICAgICBsZXQgcHJpbnRfcGF0aCBwcGYgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgbSAtPiBwcCBwcGYgXCIuJWFcIiBsb25naWRlbnQgbVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggKGFzc2lnbiwgcmVtX2FyZ3MpIHdpdGhcbiAgICAgICAgICB8IGZhbHNlLCBbXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoIHBhdGhfcHJlZml4XG4gICAgICAgICAgICAgICAgbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCB0cnVlLCBbIHYgXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQCA8LUA7PDEgMj4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aFxuICAgICAgICAgICAgICAgIHBhdGhfcHJlZml4IGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodFxuICAgICAgICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSB2O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChpZCwgTGlzdC5tYXAgc25kIGFyZ3MpIHdpdGhcbiAgICAgICAgfCBMaWRlbnQgXCIhXCIsIFsgZSBdIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92PiElYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGU7XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTGRvdCAocGF0aCwgKChcImdldFwiIHwgXCJzZXRcIikgYXMgZnVuYykpLCBhIDo6IG90aGVyX2FyZ3MgLT4gKFxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGZ1bmMgPSBcInNldFwiIGluXG4gICAgICAgICAgICBsZXQgcHJpbnQgPSBwcmludF9pbmRleG9wIGEgTm9uZSBhc3NpZ24gaW5cbiAgICAgICAgICAgIG1hdGNoIChwYXRoLCBvdGhlcl9hcmdzKSB3aXRoXG4gICAgICAgICAgICB8IExpZGVudCBcIkFycmF5XCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLihcIiBcIlwiIFwiKVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGlkZW50IFwiU3RyaW5nXCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLltcIiBcIlwiIFwiXVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTFcIiksIGkxIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTEgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkyXCIpLCBpMSA6OiBpMiA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMiBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTNcIiksIGkxIDo6IGkyIDo6IGkzIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyOyBpMyBdIHJlc3RcbiAgICAgICAgICAgIHwgKCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkdlbmFycmF5XCIpLFxuICAgICAgICAgICAgICAgIHsgcGV4cF9kZXNjID0gUGV4cF9hcnJheSBpbmRleGVzOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IDo6IHJlc3RcbiAgICAgICAgICAgICAgKSAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgaW5kZXhlcyByZXN0XG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIHwgKExpZGVudCBzIHwgTGRvdCAoXywgcykpLCBhIDo6IGkgOjogcmVzdCB3aGVuIGZpcnN0X2lzICcuJyBzIC0+XG4gICAgICAgICAgICAoKiBleHRyYWN0IG9wZXJhdG9yOlxuICAgICAgICAgICAgICAgYXNzaWdubWVudCBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXQgXiBcIjwtXCJdLFxuICAgICAgICAgICAgICAgYWNjZXNzIG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldF0gZGlyZWN0bHlcbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBsZXQgbXVsdGlfaW5kaWNlcyA9IFN0cmluZy5jb250YWlucyBzICc7JyBpblxuICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICBtYXRjaCBpLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcnJheSBsIHdoZW4gbXVsdGlfaW5kaWNlcyAtPiBsXG4gICAgICAgICAgICAgIHwgXyAtPiBbIGkgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBsYXN0X2lzICctJyBzIGluXG4gICAgICAgICAgICBsZXQga2luZCA9XG4gICAgICAgICAgICAgICgqIGV4dHJhY3QgdGhlIHJpZ2h0IGVuZCBicmFja2V0ICopXG4gICAgICAgICAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGlmIGFzc2lnbiB0aGVuIHMuW24gLSAzXSBlbHNlIHMuW24gLSAxXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgICB8ICcpJyAtPiAoJygnLCBcIilcIilcbiAgICAgICAgICAgICAgfCAnXScgLT4gKCdbJywgXCJdXCIpXG4gICAgICAgICAgICAgIHwgJ30nIC0+ICgneycsIFwifVwiKVxuICAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhdGhfcHJlZml4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaWQgd2l0aCBMZG90IChtLCBfKSAtPiBTb21lIG0gfCBfIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCA9IFN0cmluZy5zdWIgcyAwICgxICsgU3RyaW5nLmluZGV4IHMgbGVmdCkgaW5cbiAgICAgICAgICAgIHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBcIjtcIiByaWdodFxuICAgICAgICAgICAgICAoaWYgbXVsdGlfaW5kaWNlcyB0aGVuIGV4cHJlc3Npb24gY3R4dCBlbHNlIHNpbXBsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgIGkgcmVzdFxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmFuZCBleHByZXNzaW9uIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKUAsJWEpXCIgKGV4cHJlc3Npb24gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGV4cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2Z1bmN0aW9uIF8gfCBQZXhwX2Z1biBfIHwgUGV4cF9tYXRjaCBfIHwgUGV4cF90cnkgXyB8IFBleHBfc2VxdWVuY2UgX1xuICAgIHwgUGV4cF9uZXd0eXBlIF9cbiAgICAgIHdoZW4gY3R4dC5waXBlIHx8IGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgKFBleHBfaWZ0aGVuZWxzZSBfIHwgUGV4cF9zZXF1ZW5jZSBfKSB3aGVuIGN0eHQuaWZ0aGVuZWxzZSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9sZXQgXyB8IFBleHBfbGV0bW9kdWxlIF8gfCBQZXhwX29wZW4gXyB8IFBleHBfbGV0ZXhjZXB0aW9uIF9cbiAgICB8IFBleHBfbGV0b3AgX1xuICAgICAgd2hlbiBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfZnVuIChsLCBlMCwgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDslYS0+QDslYUBdXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZTAsIHApXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9uZXd0eXBlIChsaWQsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7KHR5cGVAOyVzKUA7LT5AOyVhQF1cIiBsaWQudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfZnVuY3Rpb24gbCAtPiBwcCBmIFwiQFs8aHY+ZnVuY3Rpb24lYUBdXCIgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX21hdGNoIChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2MD5AWzwyPm1hdGNoICVhQF1AIHdpdGhAXSVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX3RyeSAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8aHYyPnRyeUAgJWFAXUAgQFs8MD53aXRoJWFAXUBdXCJcbiAgICAgICAgICAoKiBcInRyeUA7QFs8Mj4lYUBdQFxcbndpdGhAXFxuJWFcIiopXG4gICAgICAgICAgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9sZXQgKHJmLCBsLCBlKSAtPlxuICAgICAgICAoKiBwcCBmIFwiQFs8Mj5sZXQgJWElYSBpbkA7PDEgLTI+JWFAXVwiXG4gICAgICAgICAgICgqbm8gaW5kZW50YXRpb24gaGVyZSwgYSBuZXcgbGluZSopICopXG4gICAgICAgICgqICAgcmVjX2ZsYWcgcmYgKilcbiAgICAgICAgcHAgZiBcIkBbPDI+JWEgaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ3MgcmVzZXRfY3R4dCkgKHJmLCBsKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXBwbHkgKGUsIGwpIC0+IChcbiAgICAgICAgaWYgbm90IChzdWdhcl9leHByIGN0eHQgZiB4KSB0aGVuXG4gICAgICAgICAgbWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIGUgd2l0aFxuICAgICAgICAgIHwgYEluZml4IHMgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbICgoTm9sYWJlbCwgXykgYXMgYXJnMSk7ICgoTm9sYWJlbCwgXykgYXMgYXJnMikgXSAtPlxuICAgICAgICAgICAgICAgICAgKCogRklYTUUgYXNzb2NpYXRpdml0eSBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gKilcbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQDslc0A7JWFAXVwiXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMSBzXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgYFByZWZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0Lm1lbSBzIFsgXCJ+K1wiOyBcIn4tXCI7IFwifisuXCI7IFwifi0uXCIgXVxuICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgKCogU2VlICM3MjAwOiBhdm9pZCB0dXJuaW5nICh+LSAxKSBpbnRvICgtIDEpIHdoaWNoIGlzXG4gICAgICAgICAgICAgICAgICAgICBwYXJzZWQgYXMgYW4gaW50IGxpdGVyYWwgKilcbiAgICAgICAgICAgICAgICAgIHwgWyAoXywgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0YW50IF8gfSkgXSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgICAgICAgICAgICAgIGVsc2Ugc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIChOb2xhYmVsLCB4KSBdIC0+IHBwIGYgXCJAWzwyPiVzQDslYUBdXCIgcyAoc2ltcGxlX2V4cHIgY3R4dCkgeFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCJcbiAgICAgICAgICAgICAgICAoZnVuIGYgKGUsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGV4cHJlc3Npb24yIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgKCogcmVzZXQgaGVyZSBvbmx5IGJlY2F1c2UgW2Z1bmN0aW9uLG1hdGNoLHRyeSxzZXF1ZW5jZV1cbiAgICAgICAgICAgICAgICAgICAgIGFyZSBsb3dlciBwcmlvcml0eSAqKSlcbiAgICAgICAgICAgICAgICAoZSwgbCkpXG4gICAgfCBQZXhwX2NvbnN0cnVjdCAobGksIFNvbWUgZW8pIHdoZW4gbm90IChpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkpXG4gICAgICAtPiAoXG4gICAgICAgICgqIE5vdCBlZmZpY2llbnQgRklYTUUqKVxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYGNvbnMgbHMgLT4gbGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgZiBscyB+c2VwOlwiQDs6OkA7XCJcbiAgICAgICAgfCBgbm9ybWFsIC0+IHBwIGYgXCJAWzwyPiVhQDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfc2V0ZmllbGQgKGUxLCBsaSwgZTIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhQCA8LUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlMSBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIGUyXG4gICAgfCBQZXhwX2lmdGhlbmVsc2UgKGUxLCBlMiwgZW8pIC0+XG4gICAgICAgICgqIEA7QFs8Mj5lbHNlQCAlYUBdQF0gKilcbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPDI+aWZAICVhQF1AO0BbPDI+dGhlbkAgJWFAXSVhQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlID0gZXhwcmVzc2lvbiAodW5kZXJfaWZ0aGVuZWxzZSBjdHh0KSBpblxuICAgICAgICBwcCBmIGZtdCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTEgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUyXG4gICAgICAgICAgKGZ1biBmIGVvIC0+XG4gICAgICAgICAgICBtYXRjaCBlbyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCJAO0BbPDI+ZWxzZUA7JWFAXVwiIChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICgqIHBwIGYgXCIoKVwiICopKVxuICAgICAgICAgIGVvXG4gICAgfCBQZXhwX3NlcXVlbmNlIF8gLT5cbiAgICAgICAgbGV0IHJlYyBzZXF1ZW5jZV9oZWxwZXIgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9zZXF1ZW5jZSAoZTEsIGUyKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBzZXF1ZW5jZV9oZWxwZXIgKGUxIDo6IGFjYykgZTJcbiAgICAgICAgICB8IHYgLT4gTGlzdC5yZXYgKHYgOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbHN0ID0gc2VxdWVuY2VfaGVscGVyIFtdIHggaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2PiVhQF1cIiAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKSBsc3RcbiAgICB8IFBleHBfbmV3IGxpIC0+IHBwIGYgXCJAWzxob3YyPm5ld0AgJWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2V0aW5zdHZhciAocywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAIDwtQCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9vdmVycmlkZSBsIC0+XG4gICAgICAgICgqIEZJWE1FICopXG4gICAgICAgIGxldCBzdHJpbmdfeF9leHByZXNzaW9uIGYgKHMsIGUpID1cbiAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ezwlYT59QF1cIiAobGlzdCBzdHJpbmdfeF9leHByZXNzaW9uIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBleHBfbGV0bW9kdWxlIChzLCBtZSwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBtb2R1bGVAICVzQCA9QCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV9leHByIHJlc2V0X2N0eHQpIG1lIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChjZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBleGNlcHRpb25AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgICAgICAgIGNkIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXNzZXJ0IGUgLT4gcHAgZiBcIkBbPGhvdjI+YXNzZXJ0QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfbGF6eSBlIC0+IHBwIGYgXCJAWzxob3YyPmxhenlAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICgqIFBleHBfcG9seTogaW1wb3NzaWJsZSBidXQgd2Ugc2hvdWxkIHByaW50IGl0IGFueXdheSwgcmF0aGVyIHRoYW5cbiAgICAgICBhc3NlcnQgZmFsc2UgKilcbiAgICB8IFBleHBfcG9seSAoZSwgTm9uZSkgLT4gcHAgZiBcIkBbPGhvdjI+IXBvbHkhQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfcG9seSAoZSwgU29tZSBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCFwb2x5IUAgJWFAIDogJWEpQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG8ucG9wZW5fZXhwciAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIFNvbWUgZW8pIC0+IHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgfCBQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPkBbPHY+JWFALCVhQF0gaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ19vcCBjdHh0KSBsZXRfXG4gICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmdfb3AgY3R4dCkpXG4gICAgICAgICAgYW5kcyAoZXhwcmVzc2lvbiBjdHh0KSBib2R5XG4gICAgfCBQZXhwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBwcCBmIFwiLlwiXG4gICAgfCBfIC0+IGV4cHJlc3Npb24xIGN0eHQgZiB4XG5cbmFuZCBleHByZXNzaW9uMSBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9vYmplY3QgY3MgLT4gcHAgZiBcIiVhXCIgKGNsYXNzX3N0cnVjdHVyZSBjdHh0KSBjc1xuICAgIHwgXyAtPiBleHByZXNzaW9uMiBjdHh0IGYgeFxuKCogdXNlZCBpbiBbUGV4cF9hcHBseV0gKilcblxuYW5kIGV4cHJlc3Npb24yIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2ZpZWxkIChlLCBsaSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEuJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2VuZCAoZSwgcykgLT4gcHAgZiBcIkBbPGhvdjI+JWEjJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIHMudHh0XG4gICAgfCBfIC0+IHNpbXBsZV9leHByIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgXyB3aGVuIGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSAtPiAoXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgbmlsIC0+IHBwIGYgXCJbXVwiXG4gICAgICAgIHwgYHR1cGxlIC0+IHBwIGYgXCIoKVwiXG4gICAgICAgIHwgYGxpc3QgeHMgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxodjA+WyVhXUBdXCJcbiAgICAgICAgICAgICAgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICAgICAgeHNcbiAgICAgICAgfCBgc2ltcGxlIHggLT4gbG9uZ2lkZW50IGYgeFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9pZGVudCBsaSAtPiBsb25naWRlbnRfbG9jIGYgbGlcbiAgICAoKiAobWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIHggd2l0aCAqKVxuICAgICgqIHxgTm9ybWFsIC0+IGxvbmdpZGVudF9sb2MgZiBsaSAqKVxuICAgICgqIHwgYFByZWZpeCBfIHwgYEluZml4IF8gLT4gcHAgZiBcIiggJWEgKVwiIGxvbmdpZGVudF9sb2MgbGkpICopXG4gICAgfCBQZXhwX2NvbnN0YW50IGMgLT4gY29uc3RhbnQgZiBjXG4gICAgfCBQZXhwX3BhY2sgbWUgLT4gcHAgZiBcIihtb2R1bGVAOyVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUGV4cF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYSlAXVwiIChsaXN0IChzaW1wbGVfZXhwciBjdHh0KSB+c2VwOlwiLEA7XCIpIGxcbiAgICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEgOiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfY29lcmNlIChlLCBjdG8xLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSVhIDo+ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICAob3B0aW9uIChjb3JlX3R5cGUgY3R4dCkgfmZpcnN0OlwiIDogXCIgfmxhc3Q6XCIgXCIpXG4gICAgICAgICAgY3RvMVxuICAgICAgICAgICgqIG5vIHNlcCBoaW50KikgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgIGN0XG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQZXhwX3JlY29yZCAobCwgZW8pIC0+XG4gICAgICAgIGxldCBsb25naWRlbnRfeF9leHByZXNzaW9uIGYgKGxpLCBlKSA9XG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfVxuICAgICAgICAgICAgd2hlbiBsaS50eHQgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPntAOyVhJWFAXUA7fUBdXCIgKCogXCJAWzxob3YyPnslYSVhfUBdXCIgKilcbiAgICAgICAgICAob3B0aW9uIH5sYXN0OlwiIHdpdGhAO1wiIChzaW1wbGVfZXhwciBjdHh0KSlcbiAgICAgICAgICBlb1xuICAgICAgICAgIChsaXN0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gfnNlcDpcIjtAO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfYXJyYXkgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzwyPlt8JWF8XUBdQF1cIlxuICAgICAgICAgIChsaXN0IChzaW1wbGVfZXhwciAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX3doaWxlIChlMSwgZTIpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID0gXCJAWzwyPndoaWxlQDslYUA7ZG9AOyVhQDtkb25lQF1cIiBpblxuICAgICAgICBwcCBmIGZtdCAoZXhwcmVzc2lvbiBjdHh0KSBlMSAoZXhwcmVzc2lvbiBjdHh0KSBlMlxuICAgIHwgUGV4cF9mb3IgKHMsIGUxLCBlMiwgZGYsIGUzKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8aHYyPkBbPDI+Zm9yICVhID1AOyVhQDslYSVhQDtkb0BdQDslYUBdQDtkb25lQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24gY3R4dCBpblxuICAgICAgICBwcCBmIGZtdCAocGF0dGVybiBjdHh0KSBzIGV4cHJlc3Npb24gZTEgZGlyZWN0aW9uX2ZsYWcgZGYgZXhwcmVzc2lvbiBlMlxuICAgICAgICAgIGV4cHJlc3Npb24gZTNcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiBjdHh0KSBmIHhcblxuYW5kIGF0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGF0dHJpYnV0ZSBjdHh0IGYpIGxcbmFuZCBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGl0ZW1fYXR0cmlidXRlIGN0eHQgZikgbFxuXG5hbmQgYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBpdGVtX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IGYgeCA9XG4gICgqIG5vdGU6IHZhbHVlX2Rlc2NyaXB0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgICAgICAgIGJ1dCB0aGV5J3JlIGFscmVhZHkgcHJpbnRlZCBieSB0aGUgY2FsbGVycyB0aGlzIG1ldGhvZCAqKVxuICBwcCBmIFwiQFs8aG92Mj4lYSVhQF1cIiAoY29yZV90eXBlIGN0eHQpIHgucHZhbF90eXBlXG4gICAgKGZ1biBmIHggLT5cbiAgICAgIGlmIHgucHZhbF9wcmltIDw+IFtdIHRoZW5cbiAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobGlzdCBjb25zdGFudF9zdHJpbmcpIHgucHZhbF9wcmltKVxuICAgIHhcblxuYW5kIGV4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID0gcHAgZiBcIkBbPDI+WyUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgaXRlbV9leHRlbnNpb24gY3R4dCBmIChzLCBlKSA9XG4gIHBwIGYgXCJAWzwyPlslJSUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgcHAgZiBcIkBbPGhvdjI+ZXhjZXB0aW9uQCAlYUBdJWFcIlxuICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICB4LnB0eWV4bl9jb25zdHJ1Y3RvciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXhuX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdGZfZGVzYyB3aXRoXG4gIHwgUGN0Zl9pbmhlcml0IGN0IC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlYUBdJWFcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl92YWwgKHMsIG1mLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgQCAlYSVhJXNAIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9tZXRob2QgKHMsIHBmLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgJWEgJWElcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50QCAlYUAgPUAgJWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGN0Zl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGN0Zl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgY3R4dCBmIHsgcGNzaWdfc2VsZiA9IGN0OyBwY3NpZ19maWVsZHMgPSBsOyBfIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3RAWzwxPiVhQF1AICVhQF1AIGVuZEBdXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FueTsgcHR5cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPiAoKVxuICAgICAgfCBjdCAtPiBwcCBmIFwiICglYSlcIiAoY29yZV90eXBlIGN0eHQpIGN0KVxuICAgIGN0XG4gICAgKGxpc3QgKGNsYXNzX3R5cGVfZmllbGQgY3R4dCkgfnNlcDpcIkA7XCIpXG4gICAgbFxuXG4oKiBjYWxsIFtjbGFzc19zaWduYXR1cmVdIGNhbGxlZCBieSBbY2xhc3Nfc2lnbmF0dXJlXSAqKVxuYW5kIGNsYXNzX3R5cGUgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdHlfZGVzYyB3aXRoXG4gIHwgUGN0eV9zaWduYXR1cmUgY3MgLT5cbiAgICAgIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgY3M7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgIHBwIGYgXCIlYSVhJWFcIlxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9hcnJvdyAobCwgY28sIGNsKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjbykgKGNsYXNzX3R5cGUgY3R4dCkgY2xcbiAgfCBQY3R5X2V4dGVuc2lvbiBlIC0+XG4gICAgICBleHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfb3BlbiAobywgZSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX3R5cGUgY3R4dCkgZVxuXG4oKiBbY2xhc3MgdHlwZSBhID0gb2JqZWN0IGVuZF0gKilcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGwgPVxuICBsZXQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBrd2QgZiB4ID1cbiAgICBsZXQgeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9ID0geCBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0AgPUAgJWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiKVxuICAgICAgICB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICB4c1xuXG5hbmQgY2xhc3NfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjZl9kZXNjIHdpdGhcbiAgfCBQY2ZfaW5oZXJpdCAob3ZmLCBjZSwgc28pIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlc0AgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgICAgICAoZnVuIGYgc28gLT5cbiAgICAgICAgICBtYXRjaCBzbyB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHMgLT4gcHAgZiBcIkAgYXMgJXNcIiBzLnR4dClcbiAgICAgICAgc28gKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCVzICVhJXMgPUA7JWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kIHZpcnR1YWwgJWEgJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIHZpcnR1YWwgJWElcyA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgbGV0IGJpbmQgZSA9XG4gICAgICAgIGJpbmRpbmcgY3R4dCBmXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX3BhdCA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBzO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBlO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QlcyAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIHByaXZhdGVfZmxhZyBwZlxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBTb21lIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJXMgOkA7JWE9QDslYVwiIHMudHh0IChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIE5vbmUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIGJpbmQgZVxuICAgICAgICAgIHwgXyAtPiBiaW5kIGUpXG4gICAgICAgIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludCAlYSA9QDslYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgZSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5pdGlhbGl6ZXJAICVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjZl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGNmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgeyBwY3N0cl9zZWxmID0gcDsgcGNzdHJfZmllbGRzID0gbCB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0JWFAOyVhQF1AO2VuZEBdXCJcbiAgICAoZnVuIGYgcCAtPlxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgXyAtPiBwcCBmIFwiICVhXCIgKHBhdHRlcm4gY3R4dCkgcFxuICAgICAgfCBfIC0+IHBwIGYgXCIgKCVhKVwiIChwYXR0ZXJuIGN0eHQpIHApXG4gICAgcFxuICAgIChsaXN0IChjbGFzc19maWVsZCBjdHh0KSlcbiAgICBsXG5cbmFuZCBjbGFzc19leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wY2xfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY2xfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wY2xfZGVzYyB3aXRoXG4gICAgfCBQY2xfc3RydWN0dXJlIGNzIC0+IGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgY3NcbiAgICB8IFBjbF9mdW4gKGwsIGVvLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiZnVuQCAlYUAgLT5AICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZW8sIHApIChjbGFzc19leHByIGN0eHQpIGVcbiAgICB8IFBjbF9sZXQgKHJmLCBsLCBjZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQCBpbkAgJWFcIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgIHwgUGNsX2FwcGx5IChjZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIigoJWEpQCAlYSlcIlxuICAgICAgICAgICgqIENmOiAjNzIwMCAqKSAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgICAgIGNlXG4gICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICBsXG4gICAgfCBQY2xfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBpZiBsIDw+IFtdIHRoZW4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBjbF9jb25zdHJhaW50IChjZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWFAIDpAICVhKVwiIChjbGFzc19leHByIGN0eHQpIGNlIChjbGFzc190eXBlIGN0eHQpIGN0XG4gICAgfCBQY2xfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQY2xfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX2V4cHIgY3R4dCkgZVxuXG5hbmQgbW9kdWxlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtdHlfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBtdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3IgKCkgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChzLCBtdDEpLCBtdDIpIC0+IChcbiAgICAgICAgbWF0Y2ggcy50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXQxXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3JAICglc0AgOkAgJWEpQCAtPkAgJWFAXVwiIG5hbWVcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MSAobW9kdWxlX3R5cGUgY3R4dCkgbXQyKVxuICAgIHwgUG10eV93aXRoIChtdCwgW10pIC0+IG1vZHVsZV90eXBlIGN0eHQgZiBtdFxuICAgIHwgUG10eV93aXRoIChtdCwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIHdpdGhAICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10XG4gICAgICAgICAgKGxpc3QgKHdpdGhfY29uc3RyYWludCBjdHh0KSB+c2VwOlwiQCBhbmRAIFwiKVxuICAgICAgICAgIGxcbiAgICB8IF8gLT4gbW9kdWxlX3R5cGUxIGN0eHQgZiB4XG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQd2l0aF90eXBlIChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2R1bGUgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGUgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcbiAgfCBQd2l0aF90eXBlc3Vic3QgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhIDo9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2RzdWJzdCAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcblxuYW5kIG1vZHVsZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gbW9kdWxlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9hbGlhcyBsaSAtPiBwcCBmIFwiKG1vZHVsZSAlYSlcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPnNpZ0AgJWFAXUAgZW5kQF1cIiAoKiBcIkBbPGhvdj5zaWdAICVhQCBlbmRAXVwiICopXG4gICAgICAgICAgKGxpc3QgKHNpZ25hdHVyZV9pdGVtIGN0eHQpKVxuICAgICAgICAgIHNcbiAgICAgICAgKCogRklYTUUgd3JvbmcgaW5kZW50YXRpb24qKVxuICAgIHwgUG10eV90eXBlb2YgbWUgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCBvZkAgJWFAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG10eV9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAobW9kdWxlX3R5cGUgY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHNpZ25hdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gY3R4dCBmIHggOiB1bml0ID1cbiAgbWF0Y2ggeC5wc2lnX2Rlc2Mgd2l0aFxuICB8IFBzaWdfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc2lnX3R5cGVzdWJzdCBsIC0+XG4gICAgICAoKiBQc2lnX3R5cGVzdWJzdCBpcyBuZXZlciByZWN1cnNpdmUsIGJ1dCB3ZSBzcGVjaWZ5IFtSZWN1cnNpdmVdIGhlcmUgdG9cbiAgICAgICAgIGF2b2lkIHByaW50aW5nIGEgW25vbnJlY10gZmxhZywgd2hpY2ggd291bGQgYmUgcmVqZWN0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICopXG4gICAgICB0eXBlX2RlZl9saXN0IGN0eHQgZiAoUmVjdXJzaXZlLCBmYWxzZSwgbClcbiAgfCBQc2lnX3ZhbHVlIHZkIC0+XG4gICAgICBsZXQgaW50cm8gPSBpZiB2ZC5wdmFsX3ByaW0gPSBbXSB0aGVuIFwidmFsXCIgZWxzZSBcImV4dGVybmFsXCIgaW5cbiAgICAgIHBwIGYgXCJAWzwyPiVzQCAlYUAgOkAgJWFAXSVhXCIgaW50cm8gcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzaWdfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzaWdfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc2lnX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGNsYXNzX2Rlc2NyaXB0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0A7OkA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZXNjcmlwdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzaWdfbW9kdWxlXG4gICAgICAoe1xuICAgICAgICAgcG1kX3R5cGUgPSB7IHBtdHlfZGVzYyA9IFBtdHlfYWxpYXMgYWxpYXM7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcG1kKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIGxvbmdpZGVudF9sb2MgYWxpYXMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHVsZSBwbWQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOkAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2RzdWJzdCBwbXMgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOj1AICVhQF0lYVwiIHBtcy5wbXNfbmFtZS50eHQgbG9uZ2lkZW50X2xvY1xuICAgICAgICBwbXMucG1zX21hbmlmZXN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1zLnBtc19hdHRyaWJ1dGVzXG4gIHwgUHNpZ19vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5vcGVuJXNAICVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzaWdfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgLT5cbiAgICAgIGxldCBtZCA9XG4gICAgICAgIG1hdGNoIG1kIHdpdGggTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogYXN0IGludmFyaWFudCAqKSB8IFNvbWUgbXQgLT4gbXRcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzQCA6PUAgJWFAXSVhXCIgcy50eHQgKG1vZHVsZV90eXBlIGN0eHQpIG1kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc2lnX3JlY21vZHVsZSBkZWNscyAtPlxuICAgICAgbGV0IHJlYyBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgPyhmaXJzdCA9IHRydWUpIGwgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IHBtZCA6OiB0bCAtPlxuICAgICAgICAgICAgaWYgbm90IGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgcHAgZiBcIkAgQFs8aG92Mj5hbmRAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIH5maXJzdDpmYWxzZSB0bFxuICAgICAgaW5cbiAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiBkZWNsc1xuICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHNpZ19leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgbW9kdWxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBtb2RfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtb2RfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYyPnN0cnVjdEA7QFs8MD4lYUBdQDs8MSAtMj5lbmRAXVwiXG4gICAgICAgICAgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIH5zZXA6XCJAXFxuXCIpXG4gICAgICAgICAgc1xuICAgIHwgUG1vZF9jb25zdHJhaW50IChtZSwgbXQpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYUAgOkAgJWEpQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUgKG1vZHVsZV90eXBlIGN0eHQpIG10XG4gICAgfCBQbW9kX2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgbWUpIC0+IHBwIGYgXCJmdW5jdG9yICgpQDstPkA7JWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKHMsIG10KSwgbWUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5jdG9yQCAoJXNAIDpAICVhKUA7LT5AOyVhXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfYXBwbHkgKG1lMSwgbWUyKSAtPlxuICAgICAgICBwcCBmIFwiKCVhKSglYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUxIChtb2R1bGVfZXhwciBjdHh0KSBtZTJcbiAgICAgICAgKCogQ2Y6ICM3MjAwICopXG4gICAgfCBQbW9kX3VucGFjayBlIC0+IHBwIGYgXCIodmFsQCAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuXG5hbmQgc3RydWN0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHBheWxvYWQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGUsIGF0dHJzKSB9IF0gLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBTdHIgeCAtPiBzdHJ1Y3R1cmUgY3R4dCBmIHhcbiAgfCBQVHlwIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIGNvcmVfdHlwZSBjdHh0IGYgeFxuICB8IFBTaWcgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgc2lnbmF0dXJlIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgTm9uZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4O1xuICAgICAgcHAgZiBcIiB3aGVuIFwiO1xuICAgICAgZXhwcmVzc2lvbiBjdHh0IGYgZVxuXG4oKiB0cmFuc2Zvcm0gW2YgPSBmdW4gZyBoIC0+IC4uXSB0byBbZiBnIGggPSAuLi4gXSBjb3VsZCBiZSBpbXByb3ZlZCAqKVxuYW5kIGJpbmRpbmcgY3R4dCBmIHsgcHZiX3BhdCA9IHA7IHB2Yl9leHByID0geDsgXyB9ID1cbiAgKCogLnB2Yl9hdHRyaWJ1dGVzIGhhdmUgYWxyZWFkeSBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciwgI2JpbmRpbmdzICopXG4gIGxldCByZWMgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBmIHggPVxuICAgIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9mdW4gKGxhYmVsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgICBpZiBsYWJlbCA9IE5vbGFiZWwgdGhlblxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsYWJlbCwgZW8sIHApIHBwX3ByaW50X3BleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgZVxuICAgICAgfCBQZXhwX25ld3R5cGUgKHN0ciwgZSkgLT5cbiAgICAgICAgICBwcCBmIFwiKHR5cGVAICVzKUAgJWFcIiBzdHIudHh0IHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgfCBfIC0+IHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgaW5cbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB0eXZhcnMgaW5cbiAgbGV0IGlzX2Rlc3VnYXJlZF9nYWR0IHAgZSA9XG4gICAgbGV0IGdhZHRfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9ICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgU29tZSAocGF0LCBhcmdzX3R5dmFycywgcnQpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyBnYWR0X2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIGdhZHRfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IGdhZHRfZXhwID0gZ2FkdF9leHAgW10gZSBpblxuICAgIG1hdGNoIChnYWR0X3BhdHRlcm4sIGdhZHRfZXhwKSB3aXRoXG4gICAgfCBTb21lIChwLCBwdF90eXZhcnMsIHB0X2N0KSwgU29tZSAoZV90eXZhcnMsIGUsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlbiBTb21lIChwLCBwdF90eXZhcnMsIGVfY3QsIGUpIGVsc2UgTm9uZVxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IHtcbiAgICAgcHBhdF9kZXNjID1cbiAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwKSApO1xuICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgXztcbiAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0IChjb3JlX3R5cGUgY3R4dCkgdHlwXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGVsc2VcbiAgICBtYXRjaCBpc19kZXN1Z2FyZWRfZ2FkdCBwIHggd2l0aFxuICAgIHwgU29tZSAocCwgW10sIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFNvbWUgKHAsIHR5dmFycywgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiB0eXBlQDslYS5AOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgKGxpc3QgcHBfcHJpbnRfc3RyaW5nIH5zZXA6XCJAO1wiKVxuICAgICAgICAgICh0eXZhcnNfc3RyIHR5dmFycykgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHAsIHR5KTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPiAoXG4gICAgICAgICAgICAoKiBzcGVjaWFsIGNhc2UgZm9yIHRoZSBmaXJzdCopXG4gICAgICAgICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICAgICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJWFAOzpAOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICAgICAgICAgIHR5IChleHByZXNzaW9uIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJWFAOzpAOyVhKUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24geFxuICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeClcblxuKCogW2luXSBpcyBub3QgcHJpbnRlZCAqKVxuYW5kIGJpbmRpbmdzIGN0eHQgZiAocmYsIGwpID1cbiAgbGV0IGJpbmRpbmcga3dkIHJmIGYgeCA9XG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYUBdJWFcIiBrd2QgcmVjX2ZsYWcgcmYgKGJpbmRpbmcgY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB2Yl9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gYmluZGluZyBcImxldFwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKGJpbmRpbmcgXCJsZXRcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZyBcImFuZFwiIE5vbnJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCBiaW5kaW5nX29wIGN0eHQgZiB4ID1cbiAgbWF0Y2ggKHgucGJvcF9wYXQsIHgucGJvcF9leHApIHdpdGhcbiAgfCAoIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBwdmFyOyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICB7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgZXZhcjsgXyB9O1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgXztcbiAgICAgIH0gKVxuICAgIHdoZW4gcHZhciA9IGV2YXIgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVzQF1cIiB4LnBib3Bfb3AudHh0IGV2YXJcbiAgfCBwYXQsIGV4cCAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJWFAOz1AOyVhQF1cIiB4LnBib3Bfb3AudHh0IChwYXR0ZXJuIGN0eHQpIHBhdFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBleHBcblxuYW5kIHN0cnVjdHVyZV9pdGVtIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wc3RyX2Rlc2Mgd2l0aFxuICB8IFBzdHJfZXZhbCAoZSwgYXR0cnMpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj47OyVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfdHlwZSAoXywgW10pIC0+IGFzc2VydCBmYWxzZVxuICB8IFBzdHJfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc3RyX3ZhbHVlIChyZiwgbCkgLT5cbiAgICAgICgqIHBwIGYgXCJAWzxob3YyPmxldCAlYSVhQF1cIiAgcmVjX2ZsYWcgcmYgYmluZGluZ3MgbCAqKVxuICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpXG4gIHwgUHN0cl90eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHN0cl9leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzdHJfbW9kdWxlIHggLT5cbiAgICAgIGxldCByZWMgbW9kdWxlX2hlbHBlciA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKGFyZ19vcHQsIG1lJyk7IHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIChtYXRjaCBhcmdfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgVW5pdCAtPiBwcCBmIFwiKClcIlxuICAgICAgICAgICAgfCBOYW1lZCAocywgbXQpIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglczolYSlcIlxuICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCk7XG4gICAgICAgICAgICBtb2R1bGVfaGVscGVyIG1lJ1xuICAgICAgICB8IG1lIC0+IG1lXG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlICVzJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSB4LnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKGZ1biBmIG1lIC0+XG4gICAgICAgICAgbGV0IG1lID0gbW9kdWxlX2hlbHBlciBtZSBpblxuICAgICAgICAgIG1hdGNoIG1lIHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcG1vZF9kZXNjID1cbiAgICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgIChtZScsICh7IHBtdHlfZGVzYyA9IFBtdHlfaWRlbnQgXyB8IFBtdHlfc2lnbmF0dXJlIF87IF8gfSBhcyBtdCkpO1xuICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIgOkA7JWFAOz1AOyVhQDtcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgICAgbWUnXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCIgPUAgJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUpXG4gICAgICAgIHgucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBtYl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5vcGVuJXNAOyVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl9jbGFzcyBsIC0+IChcbiAgICAgIGxldCBleHRyYWN0X2NsYXNzX2FyZ3MgY2wgPVxuICAgICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfZnVuIChsLCBlbywgcCwgY2wnKTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIGxvb3AgKChsLCBlbywgcCkgOjogYWNjKSBjbCdcbiAgICAgICAgICB8IGNsIC0+IChMaXN0LnJldiBhY2MsIGNsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXJncywgY2wgPSBsb29wIFtdIGNsIGluXG4gICAgICAgIGxldCBjb25zdHIsIGNsID1cbiAgICAgICAgICBtYXRjaCBjbCB3aXRoXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2NvbnN0cmFpbnQgKGNsJywgY3QpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgKFNvbWUgY3QsIGNsJylcbiAgICAgICAgICB8IF8gLT4gKE5vbmUsIGNsKVxuICAgICAgICBpblxuICAgICAgICAoYXJncywgY29uc3RyLCBjbClcbiAgICAgIGluXG4gICAgICBsZXQgY2xhc3NfY29uc3RyYWludCBmIGN0ID0gcHAgZiBcIjogQFslYUBdIFwiIChjbGFzc190eXBlIGN0eHQpIGN0IGluXG4gICAgICBsZXQgY2xhc3NfZGVjbGFyYXRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgbGV0IGFyZ3MsIGNvbnN0ciwgY2wgPSBleHRyYWN0X2NsYXNzX2FyZ3MgeC5wY2lfZXhwciBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMgJWElYT1AOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dFxuICAgICAgICAgIChsaXN0IChsYWJlbF9leHAgY3R4dCkpXG4gICAgICAgICAgYXJncyAob3B0aW9uIGNsYXNzX2NvbnN0cmFpbnQpIGNvbnN0ciAoY2xhc3NfZXhwciBjdHh0KSBjbFxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHN0cl9jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHN0cl9wcmltaXRpdmUgdmQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmV4dGVybmFsQCAlYUAgOkAgJWFAXSVhXCIgcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzdHJfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX3JlY21vZHVsZSBkZWNscyAtPiAoXG4gICAgICAoKiAzLjA3ICopXG4gICAgICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXM6JWFAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICB8IHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBkZWNscyB3aXRoXG4gICAgICB8ICh7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYilcbiAgICAgICAgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6JWFAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgcG1iIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHN0cl9leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgdHlwZV9wYXJhbSBjdHh0IGYgKGN0LCAoYSwgYikpID1cbiAgcHAgZiBcIiVzJXMlYVwiICh0eXBlX3ZhcmlhbmNlIGEpICh0eXBlX2luamVjdGl2aXR5IGIpIChjb3JlX3R5cGUgY3R4dCkgY3RcblxuYW5kIHR5cGVfcGFyYW1zIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCIlYSBcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixAO1wiKSBsXG5cbmFuZCB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIGV4cG9ydGVkLCBsKSA9XG4gIGxldCB0eXBlX2RlY2wga3dkIHJmIGYgeCA9XG4gICAgbGV0IGVxID1cbiAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0ICYmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gXCJcIlxuICAgICAgZWxzZSBpZiBleHBvcnRlZCB0aGVuIFwiID1cIlxuICAgICAgZWxzZSBcIiA6PVwiXG4gICAgaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMlcyVhQF0lYVwiIGt3ZCBub25yZWNfZmxhZyByZiAodHlwZV9wYXJhbXMgY3R4dClcbiAgICAgIHgucHR5cGVfcGFyYW1zIHgucHR5cGVfbmFtZS50eHQgZXEgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gdHlwZV9kZWNsIFwidHlwZVwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKHR5cGVfZGVjbCBcInR5cGVcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAodHlwZV9kZWNsIFwiYW5kXCIgUmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0IGYgbGJscyA9XG4gIGxldCB0eXBlX3JlY29yZF9maWVsZCBmIHBsZCA9XG4gICAgcHAgZiBcIkBbPDI+JWElczpAOyVhQDslYUBdXCIgbXV0YWJsZV9mbGFnIHBsZC5wbGRfbXV0YWJsZSBwbGQucGxkX25hbWUudHh0XG4gICAgICAoY29yZV90eXBlIGN0eHQpIHBsZC5wbGRfdHlwZSAoYXR0cmlidXRlcyBjdHh0KSBwbGQucGxkX2F0dHJpYnV0ZXNcbiAgaW5cbiAgcHAgZiBcIntAXFxuJWF9XCIgKGxpc3QgdHlwZV9yZWNvcmRfZmllbGQgfnNlcDpcIjtAXFxuXCIpIGxibHNcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICAoKiB0eXBlX2RlY2xhcmF0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgIGJ1dCBpdCdzIGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kICopXG4gIGxldCBwcml2IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfcHJpdmF0ZSB3aXRoIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcIkA7cHJpdmF0ZVwiXG4gIGluXG4gIGxldCBtYW5pZmVzdCBmID1cbiAgICBtYXRjaCB4LnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeSAtPlxuICAgICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCB0aGVuXG4gICAgICAgICAgcHAgZiBcIiV0QDslYVwiIHByaXYgKGNvcmVfdHlwZSBjdHh0KSB5XG4gICAgICAgIGVsc2UgcHAgZiBcIkA7JWFcIiAoY29yZV90eXBlIGN0eHQpIHlcbiAgaW5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGYgcGNkID1cbiAgICBwcCBmIFwifEA7XCI7XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAoIHBjZC5wY2RfbmFtZS50eHQsXG4gICAgICAgIHBjZC5wY2RfdmFycyxcbiAgICAgICAgcGNkLnBjZF9hcmdzLFxuICAgICAgICBwY2QucGNkX3JlcyxcbiAgICAgICAgcGNkLnBjZF9hdHRyaWJ1dGVzIClcbiAgaW5cbiAgbGV0IHJlcHIgZiA9XG4gICAgbGV0IGludHJvIGYgPSBpZiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuICgpIGVsc2UgcHAgZiBcIkA7PVwiIGluXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgeHMgLT5cbiAgICAgICAgbGV0IHZhcmlhbnRzIGZtdCB4cyA9XG4gICAgICAgICAgaWYgeHMgPSBbXSB0aGVuIHBwIGZtdCBcIiB8XCJcbiAgICAgICAgICBlbHNlIHBwIGZtdCBcIkBcXG4lYVwiIChsaXN0IH5zZXA6XCJAXFxuXCIgY29uc3RydWN0b3JfZGVjbGFyYXRpb24pIHhzXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCIldCV0JWFcIiBpbnRybyBwcml2IHZhcmlhbnRzIHhzXG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgIHwgUHR5cGVfcmVjb3JkIGwgLT4gcHAgZiBcIiV0JXRAOyVhXCIgaW50cm8gcHJpdiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGxcbiAgICB8IFB0eXBlX29wZW4gLT4gcHAgZiBcIiV0JXRAOy4uXCIgaW50cm8gcHJpdlxuICBpblxuICBsZXQgY29uc3RyYWludHMgZiA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChjdDEsIGN0MiwgXykgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBjb25zdHJhaW50QCAlYUAgPUAgJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIpXG4gICAgICB4LnB0eXBlX2NzdHJzXG4gIGluXG4gIHBwIGYgXCIldCV0JXRcIiBtYW5pZmVzdCByZXByIGNvbnN0cmFpbnRzXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgeCA9XG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgZiB4ID1cbiAgICBwcCBmIFwiQFxcbnxAOyVhXCIgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KSB4XG4gIGluXG4gIHBwIGYgXCJAWzwyPnR5cGUgJWElYSArPSAlYUAgJWFAXSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIHBwIGYgXCIlYUA7XCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsXCIpIGwpXG4gICAgeC5wdHlleHRfcGFyYW1zIGxvbmdpZGVudF9sb2MgeC5wdHlleHRfcGF0aCBwcml2YXRlX2ZsYWdcbiAgICB4LnB0eWV4dF9wcml2YXRlICgqIENmOiAjNzIwMCAqKVxuICAgIChsaXN0IH5zZXA6XCJcIiBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgeC5wdHlleHRfY29uc3RydWN0b3JzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleHRfYXR0cmlidXRlc1xuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmIChuYW1lLCB2YXJzLCBhcmdzLCByZXMsIGF0dHJzKSA9XG4gIGxldCBuYW1lID0gbWF0Y2ggbmFtZSB3aXRoIFwiOjpcIiAtPiBcIig6OilcIiB8IHMgLT4gcyBpblxuICBsZXQgcHBfdmFycyBmIHZzID1cbiAgICBtYXRjaCB2cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdnMgLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIHZzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcHAgZiBcIiVzJWFAOyVhXCIgbmFtZVxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+ICgpXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPiBwcCBmIFwiQDtvZkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBTb21lIHIgLT5cbiAgICAgIHBwIGYgXCIlczpAOyVhJWFAOyVhXCIgbmFtZSBwcF92YXJzIHZhcnNcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiBjb3JlX3R5cGUxIGN0eHQgZiByXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCJcbiAgICAgICAgICAgICAgICAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIilcbiAgICAgICAgICAgICAgICBsIChjb3JlX3R5cGUxIGN0eHQpIHJcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsIChjb3JlX3R5cGUxIGN0eHQpIHIpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0IGYgeCA9XG4gICgqIENmOiAjNzIwMCAqKVxuICBtYXRjaCB4LnBleHRfa2luZCB3aXRoXG4gIHwgUGV4dF9kZWNsICh2LCBsLCByKSAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAgICh4LnBleHRfbmFtZS50eHQsIHYsIGwsIHIsIHgucGV4dF9hdHRyaWJ1dGVzKVxuICB8IFBleHRfcmViaW5kIGxpIC0+XG4gICAgICBwcCBmIFwiJXNAOz1AOyVhJWFcIiB4LnBleHRfbmFtZS50eHQgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBleHRfYXR0cmlidXRlc1xuXG5hbmQgY2FzZV9saXN0IGN0eHQgZiBsIDogdW5pdCA9XG4gIGxldCBhdXggZiB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9ID1cbiAgICBwcCBmIFwiQDt8IEBbPDI+JWElYUA7LT5AOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwY19saHNcbiAgICAgIChvcHRpb24gKGV4cHJlc3Npb24gY3R4dCkgfmZpcnN0OlwiQDt3aGVuQDtcIilcbiAgICAgIHBjX2d1YXJkXG4gICAgICAoZXhwcmVzc2lvbiAodW5kZXJfcGlwZSBjdHh0KSlcbiAgICAgIHBjX3Joc1xuICBpblxuICBsaXN0IGF1eCBmIGwgfnNlcDpcIlwiXG5cbmFuZCBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCBmIChsLCBlKSA9XG4gIGxldCBzaW1wbGVfbmFtZSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIFNvbWUgbFxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT4gZXhwcmVzc2lvbjIgY3R4dCBmIGUgKCogbGV2ZWwgMiopXG4gIHwgT3B0aW9uYWwgc3RyIC0+XG4gICAgICBpZiBTb21lIHN0ciA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIj8lc1wiIHN0clxuICAgICAgZWxzZSBwcCBmIFwiPyVzOiVhXCIgc3RyIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gIHwgTGFiZWxsZWQgbGJsIC0+XG4gICAgICBpZiBTb21lIGxibCA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIn4lc1wiIGxibFxuICAgICAgZWxzZSBwcCBmIFwifiVzOiVhXCIgbGJsIChzaW1wbGVfZXhwciBjdHh0KSBlXG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgZiB4ID1cbiAgbWF0Y2ggeC5wZGlyYV9kZXNjIHdpdGhcbiAgfCBQZGlyX3N0cmluZyBzIC0+IHBwIGYgXCJAICVTXCIgc1xuICB8IFBkaXJfaW50IChuLCBOb25lKSAtPiBwcCBmIFwiQCAlc1wiIG5cbiAgfCBQZGlyX2ludCAobiwgU29tZSBtKSAtPiBwcCBmIFwiQCAlcyVjXCIgbiBtXG4gIHwgUGRpcl9pZGVudCBsaSAtPiBwcCBmIFwiQCAlYVwiIGxvbmdpZGVudCBsaVxuICB8IFBkaXJfYm9vbCBiIC0+IHBwIGYgXCJAICVzXCIgKHN0cmluZ19vZl9ib29sIGIpXG5cbmxldCB0b3BsZXZlbF9waHJhc2UgZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUHRvcF9kZWYgcyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHQpKSBzXG4gICgqIHBwX29wZW5faHZib3ggZiAwOyAqKVxuICAoKiBwcF9wcmludF9saXN0IHN0cnVjdHVyZV9pdGVtIGYgcyA7ICopXG4gICgqIHBwX2Nsb3NlX2JveCBmICgpOyAqKVxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IE5vbmU7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQF1cIiBwZGlyX25hbWUudHh0XG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gU29tZSBwZGlyX2FyZzsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAICVhQF1cIiBwZGlyX25hbWUudHh0IGRpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZ1xuXG5sZXQgZXhwcmVzc2lvbiBmIHggPSBwcCBmIFwiQFslYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgeFxuXG5sZXQgc3RyaW5nX29mX2V4cHJlc3Npb24geCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBleHByZXNzaW9uIGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgc3RyaW5nX29mX3N0cnVjdHVyZSB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIHN0cnVjdHVyZSByZXNldF9jdHh0IGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgdG9wX3BocmFzZSBmIHggPVxuICBwcF9wcmludF9uZXdsaW5lIGYgKCk7XG4gIHRvcGxldmVsX3BocmFzZSBmIHg7XG4gIHBwIGYgXCI7O1wiO1xuICBwcF9wcmludF9uZXdsaW5lIGYgKClcblxubGV0IGNvcmVfdHlwZSA9IGNvcmVfdHlwZSByZXNldF9jdHh0XG5sZXQgcGF0dGVybiA9IHBhdHRlcm4gcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZSA9IHNpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlID0gc3RydWN0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19leHByID0gY2xhc3NfZXhwciByZXNldF9jdHh0XG5sZXQgY2xhc3NfZmllbGQgPSBjbGFzc19maWVsZCByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZSA9IGNsYXNzX3R5cGUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3NpZ25hdHVyZSA9IGNsYXNzX3NpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZV9maWVsZCA9IGNsYXNzX3R5cGVfZmllbGQgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV9leHByID0gbW9kdWxlX2V4cHIgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV90eXBlID0gbW9kdWxlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZV9pdGVtID0gc2lnbmF0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZV9pdGVtID0gc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHR5cGVfZGVjbGFyYXRpb24gPSB0eXBlX2RlY2xhcmF0aW9uIHJlc2V0X2N0eHRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nIGxvYyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgKCoqIFtNLihUKV0gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mXG4gICAgICAgIGZ1bmN0aW9uX3BhcmFtIGxpc3QgKiB0eXBlX2NvbnN0cmFpbnQgb3B0aW9uICogZnVuY3Rpb25fYm9keVxuICAgICgqKiBbUGV4cF9mdW5jdGlvbiAoW1AxOyAuLi47IFBuXSwgQywgYm9keSldIHJlcHJlc2VudHMgYW55IGNvbnN0cnVjdFxuICAgICAgICBpbnZvbHZpbmcgW2Z1bl0gb3IgW2Z1bmN0aW9uXSwgaW5jbHVkaW5nOlxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IEVdXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9ib2R5IEVdXG4gICAgICAgIC0gW2Z1biBQMSAuLi4gUG4gLT4gZnVuY3Rpb24gcDEgLT4gZTEgfCAuLi4gfCBwbSAtPiBlbV1cbiAgICAgICAgICB3aGVuIFtib2R5ID0gUGZ1bmN0aW9uX2Nhc2VzIFsgcDEgLT4gZTE7IC4uLjsgcG0gLT4gZW0gXV1cbiAgICAgICAgW0NdIHJlcHJlc2VudHMgYSB0eXBlIGNvbnN0cmFpbnQgb3IgY29lcmNpb24gcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGVcbiAgICAgICAgYXJyb3csIGUuZy4gW2Z1biBQMSAuLi4gUG4gOiB0eSAtPiAuLi5dIHdoZW4gW0MgPSBTb21lIChQY29uc3RyYWludCB0eSldLlxuICAgICAgICBBIGZ1bmN0aW9uIG11c3QgaGF2ZSBwYXJhbWV0ZXJzLiBbUGV4cF9mdW5jdGlvbiAocGFyYW1zLCBfLCBib2R5KV0gbXVzdFxuICAgICAgICBoYXZlIG5vbi1lbXB0eSBbcGFyYW1zXSBvciBhIFtQZnVuY3Rpb25fY2FzZXMgX10gYm9keS5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbV9kZXNjICopID1cbiAgICB8IFBwYXJhbV92YWwgb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuXG4gICAgKCoqIFtQcGFyYW1fdmFsIChsYmwsIGV4cDAsIFApXSByZXByZXNlbnRzIHRoZSBwYXJhbWV0ZXI6XG4gICAgICAgIC0gW1BdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbfmw6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6KFAgPSBFMCldXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgTm90ZTogSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAqKVxuICAgIHwgUHBhcmFtX25ld3R5cGUgb2Ygc3RyaW5nIGxvY1xuICAgICgqKiBbUHBhcmFtX25ld3R5cGUgeF0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyIFsodHlwZSB4KV0uXG4gICAgICAgIFt4XSBjYXJyaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgaWRlbnRpZmllciwgd2hlcmVhcyB0aGUgW3BwYXJhbV9sb2NdXG4gICAgICAgIG9uIHRoZSBlbmNsb3NpbmcgW2Z1bmN0aW9uX3BhcmFtXSBub2RlIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgWyh0eXBlIHgpXVxuICAgICAgICBhcyBhIHdob2xlLlxuXG4gICAgICAgIE11bHRpcGxlIHBhcmFtZXRlcnMgWyh0eXBlIGEgYiBjKV0gYXJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlXG4gICAgICAgIFtQcGFyYW1fbmV3dHlwZV0gbm9kZXMsIGxldCdzIHNheTpcblxuICAgICAgICB7WyBbIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBhOyBwcGFyYW1fbG9jID0gbG9jMSB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBiOyBwcGFyYW1fbG9jID0gbG9jMiB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBjOyBwcGFyYW1fbG9jID0gbG9jMyB9O1xuICAgICAgICAgICBdXG4gICAgICAgIF19XG5cbiAgICAgICAgSGVyZSwgdGhlIGZpcnN0IGxvYyBbbG9jMV0gaXMgdGhlIGxvY2F0aW9uIG9mIFsodHlwZSBhIGIgYyldLCBhbmQgdGhlXG4gICAgICAgIHN1YnNlcXVlbnQgbG9jcyBbbG9jMl0gYW5kIFtsb2MzXSBhcmUgdGhlIHNhbWUgYXMgW2xvYzFdLCBleGNlcHQgbWFya2VkIGFzXG4gICAgICAgIGdob3N0IGxvY2F0aW9ucy4gVGhlIGxvY2F0aW9ucyBvbiBbYV0sIFtiXSwgW2NdLCBjb3JyZXNwb25kIHRvIHRoZVxuICAgICAgICB2YXJpYWJsZXMgW2FdLCBbYl0sIGFuZCBbY10gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgICopXG5cbiAgYW5kIGZ1bmN0aW9uX3BhcmFtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSAqKSA9XG4gICAgeyBwcGFyYW1fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBwYXJhbV9kZXNjIDogZnVuY3Rpb25fcGFyYW1fZGVzYztcbiAgICB9XG5cbiAgYW5kIGZ1bmN0aW9uX2JvZHkgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgKikgPVxuICAgIHwgUGZ1bmN0aW9uX2JvZHkgb2YgZXhwcmVzc2lvblxuICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIG9mIGNhc2UgbGlzdCAqIExvY2F0aW9uLnQgKiBhdHRyaWJ1dGVzXG4gICAgKCoqIEluIFtQZnVuY3Rpb25fY2FzZXMgKF8sIGxvYywgYXR0cnMpXSwgdGhlIGxvY2F0aW9uIGV4dGVuZHMgZnJvbSB0aGVcbiAgICAgICAgc3RhcnQgb2YgdGhlIFtmdW5jdGlvbl0ga2V5d29yZCB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IGNhc2UuIFRoZSBjb21waWxlclxuICAgICAgICB3aWxsIG9ubHkgdXNlIHR5cGVjaGVja2luZy1yZWxhdGVkIGF0dHJpYnV0ZXMgZnJvbSBbYXR0cnNdLCBlLmcuIGVuYWJsaW5nXG4gICAgICAgIG9yIGRpc2FibGluZyBhIHdhcm5pbmcuXG4gICAgKilcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gIGFuZCB0eXBlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQY29uc3RyYWludCBvZiBjb3JlX3R5cGVcbiAgICB8IFBjb2VyY2Ugb2YgY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAoKiogU2VlIHRoZSBjb21tZW50IG9uIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bmN0aW9ufVtQZXhwX2Z1bmN0aW9uXX0uICopXG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzRcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzRcIlxuZW5kXG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9IHtcbiAgICBwY29uc3RfZGVzYyA6IGNvbnN0YW50X2Rlc2M7XG4gICAgcGNvbnN0X2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICBhbmQgY29uc3RhbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnRfZGVzYyAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyBsb2MgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuICAgICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG5cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSAoKiogW00uKFQpXSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2VmZmVjdCBvZiBwYXR0ZXJuICogcGF0dGVybiAoKiBQYXR0ZXJuIFtlZmZlY3QgUCBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZlxuICAgICAgICBmdW5jdGlvbl9wYXJhbSBsaXN0ICogdHlwZV9jb25zdHJhaW50IG9wdGlvbiAqIGZ1bmN0aW9uX2JvZHlcbiAgICAoKiogW1BleHBfZnVuY3Rpb24gKFtQMTsgLi4uOyBQbl0sIEMsIGJvZHkpXSByZXByZXNlbnRzIGFueSBjb25zdHJ1Y3RcbiAgICAgICAgaW52b2x2aW5nIFtmdW5dIG9yIFtmdW5jdGlvbl0sIGluY2x1ZGluZzpcbiAgICAgICAgLSBbZnVuIFAxIC4uLiBQbiAtPiBFXVxuICAgICAgICAgIHdoZW4gW2JvZHkgPSBQZnVuY3Rpb25fYm9keSBFXVxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IGZ1bmN0aW9uIHAxIC0+IGUxIHwgLi4uIHwgcG0gLT4gZW1dXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9jYXNlcyBbIHAxIC0+IGUxOyAuLi47IHBtIC0+IGVtIF1dXG5cbiAgICAgICAgW0NdIHJlcHJlc2VudHMgYSB0eXBlIGNvbnN0cmFpbnQgb3IgY29lcmNpb24gcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGVcbiAgICAgICAgYXJyb3csIGUuZy4gW2Z1biBQMSAuLi4gUG4gOiB0eSAtPiAuLi5dIHdoZW4gW0MgPSBTb21lIChQY29uc3RyYWludCB0eSldLlxuXG4gICAgICAgIEEgZnVuY3Rpb24gbXVzdCBoYXZlIHBhcmFtZXRlcnMuIFtQZXhwX2Z1bmN0aW9uIChwYXJhbXMsIF8sIGJvZHkpXSBtdXN0XG4gICAgICAgIGhhdmUgbm9uLWVtcHR5IFtwYXJhbXNdIG9yIGEgW1BmdW5jdGlvbl9jYXNlcyBfXSBib2R5LlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZnVuY3Rpb25fcGFyYW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW1fZGVzYyAqKSA9XG4gICAgfCBQcGFyYW1fdmFsIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVyblxuICAgICgqKiBbUHBhcmFtX3ZhbCAobGJsLCBleHAwLCBQKV0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyOlxuICAgICAgICAtIFtQXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gW35sOlBdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gWz9sOlBdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gWz9sOihQID0gRTApXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgIE5vdGU6IElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgKilcbiAgICB8IFBwYXJhbV9uZXd0eXBlIG9mIHN0cmluZyBsb2NcbiAgICAoKiogW1BwYXJhbV9uZXd0eXBlIHhdIHJlcHJlc2VudHMgdGhlIHBhcmFtZXRlciBbKHR5cGUgeCldLlxuICAgICAgICBbeF0gY2FycmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIGlkZW50aWZpZXIsIHdoZXJlYXMgdGhlIFtwcGFyYW1fbG9jXVxuICAgICAgICBvbiB0aGUgZW5jbG9zaW5nIFtmdW5jdGlvbl9wYXJhbV0gbm9kZSBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIFsodHlwZSB4KV1cbiAgICAgICAgYXMgYSB3aG9sZS5cblxuICAgICAgICBNdWx0aXBsZSBwYXJhbWV0ZXJzIFsodHlwZSBhIGIgYyldIGFyZSByZXByZXNlbnRlZCBhcyBtdWx0aXBsZVxuICAgICAgICBbUHBhcmFtX25ld3R5cGVdIG5vZGVzLCBsZXQncyBzYXk6XG5cbiAgICAgICAge1sgWyB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYTsgcHBhcmFtX2xvYyA9IGxvYzEgfTtcbiAgICAgICAgICAgICB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYjsgcHBhcmFtX2xvYyA9IGxvYzIgfTtcbiAgICAgICAgICAgICB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYzsgcHBhcmFtX2xvYyA9IGxvYzMgfTtcbiAgICAgICAgICAgXVxuICAgICAgICBdfVxuXG4gICAgICAgIEhlcmUsIHRoZSBmaXJzdCBsb2MgW2xvYzFdIGlzIHRoZSBsb2NhdGlvbiBvZiBbKHR5cGUgYSBiIGMpXSwgYW5kIHRoZVxuICAgICAgICBzdWJzZXF1ZW50IGxvY3MgW2xvYzJdIGFuZCBbbG9jM10gYXJlIHRoZSBzYW1lIGFzIFtsb2MxXSwgZXhjZXB0IG1hcmtlZCBhc1xuICAgICAgICBnaG9zdCBsb2NhdGlvbnMuIFRoZSBsb2NhdGlvbnMgb24gW2FdLCBbYl0sIFtjXSwgY29ycmVzcG9uZCB0byB0aGVcbiAgICAgICAgdmFyaWFibGVzIFthXSwgW2JdLCBhbmQgW2NdIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICAqKVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW0gKikgPVxuICAgIHsgcHBhcmFtX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwcGFyYW1fZGVzYyA6IGZ1bmN0aW9uX3BhcmFtX2Rlc2M7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9ib2R5ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9ib2R5ICopID1cbiAgICB8IFBmdW5jdGlvbl9ib2R5IG9mIGV4cHJlc3Npb25cbiAgICB8IFBmdW5jdGlvbl9jYXNlcyBvZiBjYXNlIGxpc3QgKiBMb2NhdGlvbi50ICogYXR0cmlidXRlc1xuICAgICgqKiBJbiBbUGZ1bmN0aW9uX2Nhc2VzIChfLCBsb2MsIGF0dHJzKV0sIHRoZSBsb2NhdGlvbiBleHRlbmRzIGZyb20gdGhlXG4gICAgICAgIHN0YXJ0IG9mIHRoZSBbZnVuY3Rpb25dIGtleXdvcmQgdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCBjYXNlLiBUaGUgY29tcGlsZXJcbiAgICAgICAgd2lsbCBvbmx5IHVzZSB0eXBlY2hlY2tpbmctcmVsYXRlZCBhdHRyaWJ1dGVzIGZyb20gW2F0dHJzXSwgZS5nLiBlbmFibGluZ1xuICAgICAgICBvciBkaXNhYmxpbmcgYSB3YXJuaW5nLlxuICAgICopXG4gICgqKiBTZWUgdGhlIGNvbW1lbnQgb24ge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVuY3Rpb259W1BleHBfZnVuY3Rpb25dfS4gKilcblxuICBhbmQgdHlwZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUGNvbnN0cmFpbnQgb2YgY29yZV90eXBlXG4gICAgfCBQY29lcmNlIG9mIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV19Ln1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczpzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuICAgICgqKlxuICAgICAgIC0gW1B2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzPVtdOyB0eXB9XVxuICAgICAgICAgICBpcyBhIHNpbXBsZSB0eXBlIGNvbnN0cmFpbnQgb24gYSB2YWx1ZSBiaW5kaW5nOiBbIGxldCB4IDogdHlwXVxuICAgICAgIC0gTW9yZSBnZW5lcmFsbHksIGluIFtQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwfV1cbiAgICAgICAgIFtsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnNdIGlzIHRoZSBsaXN0IG9mIGxvY2FsbHkgYWJzdHJhY3QgdHlwZVxuICAgICAgICAgdmFyaWFibGVzIGluIFsgbGV0IHg6IHR5cGUgYSAuLi4gLiB0eXAgXVxuICAgICAgIC0gW1B2Y19jb2VyY2lvbiB7IGdyb3VuZD1Ob25lOyBjb2VyY2lvbiB9XSByZXByZXNlbnRzIFtsZXQgeCA6PiB0eXBdXG4gICAgICAgLSBbUHZjX2NvZXJjaW9uIHsgZ3JvdW5kPVNvbWUgZzsgY29lcmNpb24gfV0gcmVwcmVzZW50cyBbbGV0IHggOiBnIDo+IHR5cF1cbiAgICAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfSgqKiBbbGV0IHBhdCA6IHR5cGVfY29uc3RyYWludCA9IGV4cF0gKilcblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzVcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzVcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwM1xubW9kdWxlIFRvID0gQXN0XzUwMlxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA1LjAzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHR5cF9jb25zdHJhaW50LCBmdW5fYm9keSkgLT5cbiAgICAgIGxldCBwYXJhbXMgPSBMaXN0Lm1hcCBjb3B5X2Z1bmN0aW9uX3BhcmFtIHBhcmFtcyBpblxuICAgICAgbGV0IHR5cF9jb25zdHJhaW50ID0gT3B0aW9uLm1hcCBjb3B5X3R5cGVfY29uc3RyYWludCB0eXBfY29uc3RyYWludCBpblxuICAgICAgbGV0IGZ1bl9ib2R5ID0gY29weV9mdW5jdGlvbl9ib2R5IGZ1bl9ib2R5IGluXG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHR5cF9jb25zdHJhaW50LCBmdW5fYm9keSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDMuUGFyc2V0cmVlLmxldF87IEFzdF81MDMuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZnVuY3Rpb25fcGFyYW1fZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXJhbV92YWwgKGwsIGUsIHApIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGFyYW1fdmFsXG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCBsLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBlLCBjb3B5X3BhdHRlcm4gcClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGFyYW1fbmV3dHlwZSB4IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGFyYW1fbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpXG5cbmFuZCBjb3B5X2Z1bmN0aW9uX3BhcmFtIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSA9XG4gZnVuIHsgQXN0XzUwMy5QYXJzZXRyZWUucHBhcmFtX2xvYzsgcHBhcmFtX2Rlc2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhcmFtX2xvYztcbiAgICBwcGFyYW1fZGVzYyA9IGNvcHlfZnVuY3Rpb25fcGFyYW1fZGVzYyBwcGFyYW1fZGVzYztcbiAgfVxuXG5hbmQgY29weV9mdW5jdGlvbl9ib2R5IDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5mdW5jdGlvbl9ib2R5IC0+IEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5IGUgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5IChjb3B5X2V4cHJlc3Npb24gZSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXMgKGNhc2VzLCBsb2MsIGF0dHJpYnV0ZXMpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXNcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2FzZSBjYXNlcywgY29weV9sb2NhdGlvbiBsb2MsIGNvcHlfYXR0cmlidXRlcyBhdHRyaWJ1dGVzKVxuXG5hbmQgY29weV90eXBlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjb25zdHJhaW50IHQgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdHJhaW50IChjb3B5X2NvcmVfdHlwZSB0KVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjb2VyY2UgKHQxLCB0MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb2VyY2UgKE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgdDEsIGNvcHlfY29yZV90eXBlIHQyKVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IHBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYyBpblxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfZWZmZWN0IF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImVmZmVjdCBwYXR0ZXJuXCJcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX29wZW4gKHgwLCB0eSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb3BlblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgdHkpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gZnVuIHsgcGNvbnN0X2Rlc2M7IF8gfSAtPlxuICBtYXRjaCBwY29uc3RfZGVzYyB3aXRoXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAzLkFzdHR5cGVzLnR4dDsgQXN0XzUwMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMlxubW9kdWxlIFRvID0gQXN0XzUwM1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAocGFyYW1zLCB0eXBfY29uc3RyYWludCwgZnVuX2JvZHkpIC0+XG4gICAgICBsZXQgcGFyYW1zID0gTGlzdC5tYXAgY29weV9mdW5jdGlvbl9wYXJhbSBwYXJhbXMgaW5cbiAgICAgIGxldCB0eXBfY29uc3RyYWludCA9IE9wdGlvbi5tYXAgY29weV90eXBlX2NvbnN0cmFpbnQgdHlwX2NvbnN0cmFpbnQgaW5cbiAgICAgIGxldCBmdW5fYm9keSA9IGNvcHlfZnVuY3Rpb25fYm9keSBmdW5fYm9keSBpblxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAocGFyYW1zLCB0eXBfY29uc3RyYWludCwgZnVuX2JvZHkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAyLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2Z1bmN0aW9uX3BhcmFtX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtX2Rlc2MgLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGFyYW1fdmFsIChsLCBlLCBwKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhcmFtX3ZhbFxuICAgICAgICAoY29weV9hcmdfbGFiZWwgbCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gZSwgY29weV9wYXR0ZXJuIHApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhcmFtX25ld3R5cGUgeCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhcmFtX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KVxuXG5hbmQgY29weV9mdW5jdGlvbl9wYXJhbSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW0gLT4gQXN0XzUwMy5QYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW0gPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9sb2M7IHBwYXJhbV9kZXNjIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBwYXJhbV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXJhbV9sb2M7XG4gICAgcHBhcmFtX2Rlc2MgPSBjb3B5X2Z1bmN0aW9uX3BhcmFtX2Rlc2MgcHBhcmFtX2Rlc2M7XG4gIH1cblxuYW5kIGNvcHlfZnVuY3Rpb25fYm9keSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rpb25fYm9keSAtPiBBc3RfNTAzLlBhcnNldHJlZS5mdW5jdGlvbl9ib2R5ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fYm9keSBlIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZnVuY3Rpb25fYm9keSAoY29weV9leHByZXNzaW9uIGUpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2Nhc2VzIChjYXNlcywgbG9jLCBhdHRyaWJ1dGVzKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGZ1bmN0aW9uX2Nhc2VzXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2Nhc2UgY2FzZXMsIGNvcHlfbG9jYXRpb24gbG9jLCBjb3B5X2F0dHJpYnV0ZXMgYXR0cmlidXRlcylcblxuYW5kIGNvcHlfdHlwZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMy5QYXJzZXRyZWUudHlwZV9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RyYWludCB0IC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY29uc3RyYWludCAoY29weV9jb3JlX3R5cGUgdClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29lcmNlICh0MSwgdDIpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY29lcmNlIChPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHQxLCBjb3B5X2NvcmVfdHlwZSB0MilcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDMuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vcGVuICh4MCwgdHkpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX29wZW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHR5KVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuIGZ1biBjIC0+XG4gIGxldCBwY29uc3RfZGVzYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICAgIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICAgIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICBpblxuICB7IHBjb25zdF9kZXNjOyBwY29uc3RfbG9jID0gTG9jYXRpb24ubm9uZSB9XG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dDsgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzNcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMlxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA1LjAyXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBta19naG9zdF9hdHRyIG5hbWUgPVxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0geyBMb2NhdGlvbi50eHQgPSBuYW1lOyBsb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbXTtcbiAgICBhdHRyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gIH1cblxubGV0IHJlYyBjb25jYXRfbGlzdF9saXQgbGVmdCByaWdodCA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBvcGVuIEFzdF81MDIuQXN0dHlwZXMgaW5cbiAgbWF0Y2ggKGxlZnQucGV4cF9kZXNjLCByaWdodC5wZXhwX2Rlc2MpIHdpdGhcbiAgfCBfLCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGxlZnRcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pLCBfIC0+IHJpZ2h0XG4gIHwgKCBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgbG9jIH0sXG4gICAgICAgICAgU29tZSAoeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgaGQ7IHRsIF07IF8gfSBhcyBhcmdfZXhwcikgKSxcbiAgICAgIF8gKSAtPlxuICAgICAge1xuICAgICAgICBsZWZ0IHdpdGhcbiAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IGxvYyB9LFxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXJnX2V4cHIgd2l0aFxuICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGhkOyBjb25jYXRfbGlzdF9saXQgdGwgcmlnaHQgXTtcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICB9XG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkludmFsaWQgb2NhbWwucHB4LmNvbnRleHQncyBsb2FkX3BhdGhcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBsb2MgPSBleHByLnBleHBfbG9jIGluXG4gIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX3R1cGxlIFsgdmlzaWJsZTsgaGlkZGVuIF0gLT5cbiAgICAgIGxldCBtaWdyYXRpb25fYXR0ciA9XG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyX25hbWUgPSB7IExvY2F0aW9uLnR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIjsgbG9jIH07XG4gICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgYXR0cl9wYXlsb2FkID1cbiAgICAgICAgICAgIFBTdHIgWyB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKSB9IF07XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwcicgPSBjb25jYXRfbGlzdF9saXQgdmlzaWJsZSBoaWRkZW4gaW5cbiAgICAgIHsgZXhwcicgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBtaWdyYXRpb25fYXR0ciA6OiBleHByLnBleHBfYXR0cmlidXRlcyB9XG4gIHwgXyAtPiBleHByXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGxpZGVudF9sb2MsIGV4cHIpIC0+XG4gICAgICBtYXRjaCBsaWRlbnRfbG9jLkFzdF81MDIuQXN0dHlwZXMudHh0IHdpdGhcbiAgICAgIHwgTG9uZ2lkZW50LkxpZGVudCBcImxvYWRfcGF0aFwiIC0+XG4gICAgICAgICAgKGxpZGVudF9sb2MsIG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIpXG4gICAgICB8IF8gLT4gKGxpZGVudF9sb2MsIGV4cHIpKVxuICAgIGZpZWxkc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIHBheWxvYWQgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyXG4gICAgICBbXG4gICAgICAgICh7XG4gICAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgICAgUHN0cl9ldmFsXG4gICAgICAgICAgICAgICAoKHsgcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgfSBhcyBleHByKSwgYXR0cmlidXRlcyk7XG4gICAgICAgICB9IGFzIHN0cmkpO1xuICAgICAgXSAtPlxuICAgICAgbGV0IG5ld19maWVsZHMgPSBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgaW5cbiAgICAgIGxldCBuZXdfZXhwciA9IHsgZXhwciB3aXRoIHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChuZXdfZmllbGRzLCBOb25lKSB9IGluXG4gICAgICBQU3RyIFsgeyBzdHJpIHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChuZXdfZXhwciwgYXR0cmlidXRlcykgfSBdXG4gIHwgXyAtPiBwYXlsb2FkXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHRjb25zdHJhaW50LCBib2R5KSAtPlxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBQZnVuY3Rpb25fYm9keSBleHByIC0+IChcbiAgICAgICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgKCogV2UgZG9uJ3Qgd2FudCB0aGlzIFtmdW5dIHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBwYXJlbnQgZHVyaW5nXG4gICAgICAgICAgICAgICAgICAgdGhlIHJvdW5kLXRyaXAuIFRoaXMgYXR0cmlidXRlIHNpZ25hbHMgdGhhdCB0aGlzIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICByZWFsbHkgaXMgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiAqKVxuICAgICAgICAgICAgICAgIGxldCBhdHRyID0gbWtfZ2hvc3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcIiBpblxuICAgICAgICAgICAgICAgIGxldCBleHByID0gY29weV9leHByZXNzaW9uIGV4cHIgaW5cbiAgICAgICAgICAgICAgICB7IGV4cHIgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRyIDo6IGV4cHIucGV4cF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICAgIHwgXyAtPiBjb3B5X2V4cHJlc3Npb24gZXhwcilcbiAgICAgICAgfCBQZnVuY3Rpb25fY2FzZXMgKGNhc2VzLCBsb2MsIGF0dHJzKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSBjYXNlcyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBsb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdHRycztcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIG1hdGNoIHRjb25zdHJhaW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGV4cHJcbiAgICAgICAgfCBTb21lIChQY29uc3RyYWludCBjKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoZXhwciwgY29weV9jb3JlX3R5cGUgYyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gZXhwci5wZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgU29tZSAoUGNvZXJjZSAoYzEsIGMyKSkgLT5cbiAgICAgICAgICAgIGxldCBjMSA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgYzEgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwciwgYzEsIGNvcHlfY29yZV90eXBlIGMyKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBleHByLnBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgIChmdW4gcGFyYW0gZXhwciAtPlxuICAgICAgICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2Rlc2MgPSBQcGFyYW1fdmFsIChsYmwsIGV4cDAsIHApO1xuICAgICAgICAgICAgIHBwYXJhbV9sb2M7XG4gICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGxibCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBleHAwLFxuICAgICAgICAgICAgICAgICAgICAgIGNvcHlfcGF0dGVybiBwLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHIgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID0gcGFyYW0ucHBhcmFtX2xvYy5sb2Nfc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jX2VuZCA9IGV4cHIucGV4cF9sb2MubG9jX2VuZDtcbiAgICAgICAgICAgICAgICAgICAgICBsb2NfZ2hvc3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgeyBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHg7IHBwYXJhbV9sb2MgfSAtPlxuICAgICAgICAgICAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeCwgZXhwcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9IHBhcmFtLnBwYXJhbV9sb2MubG9jX3N0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxvY19lbmQgPSBleHByLnBleHBfbG9jLmxvY19lbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jX2dob3N0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIHBhcmFtcyBleHByXG4gICAgICBpblxuICAgICAgZXhwci5wZXhwX2Rlc2NcbiAgICAgICgqIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MCkgKilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLmxldF87IEFzdF81MDIuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9sb2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyBsb2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MS50eHQpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gdHlwZXNcIlxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDJcblxuKCoqIExvb2sgZm9yIGEgcGFydGljdWxhciBhdHRyaWJ1dGUgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBsaXN0LiBBdHRyaWJ1dGVzIGFyZVxuICAgIHVzZWQgdG8gbWFrZSBjZXJ0YWluIG1pZ3JhdGlvbnMgcm91bmQtdHJpcC4gUmV0dXJucyBbTm9uZV0gaWYgdGhlIHNwZWNpZmllZFxuICAgIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuICopXG5sZXQgZXh0cmFjdF9hdHRyIG5hbWUgKGF0dHJzIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcykgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChOb25lLCBMaXN0LnJldiBhY2MpXG4gICAgfCB7IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IHsgdHh0OyBfIH07IGF0dHJfcGF5bG9hZDsgXyB9IDo6IHFcbiAgICAgIHdoZW4gdHh0ID0gbmFtZSAtPlxuICAgICAgICAoU29tZSBhdHRyX3BheWxvYWQsIExpc3QucmV2X2FwcGVuZCBhY2MgcSlcbiAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgaW5cbiAgbG9vcCBbXSBhdHRyc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDEuUGFyc2V0cmVlIGluXG4gIGxldCBwYXlsb2FkLCBvdGhlcl9hdHRycyA9XG4gICAgZXh0cmFjdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIiBleHByLnBleHBfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgbG9jID0gZXhwci5wZXhwX2xvYyB9LCBOb25lKVxuICAgICAgaW5cbiAgICAgIGxldCBoaWRkZW4gPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2M7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgIGxldCB2aXNpYmxlID0gZXhwciBpblxuICAgICAge1xuICAgICAgICBleHByIHdpdGhcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gb3RoZXJfYXR0cnM7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyB2aXNpYmxlOyBoaWRkZW4gXTtcbiAgICAgIH1cbiAgfCBTb21lIChQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKTsgXyB9IF0pIC0+IGV4cHJcbiAgfCBTb21lIF8gLT4gaW52YWxpZF9hcmcgXCJJbnZhbGlkIHBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoIHBheWxvYWRcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChsaWRlbnRfbG9jLCBleHByKSAtPlxuICAgICAgbWF0Y2ggbGlkZW50X2xvYy5Bc3RfNTAxLkFzdHR5cGVzLnR4dCB3aXRoXG4gICAgICB8IExvbmdpZGVudC5MaWRlbnQgXCJsb2FkX3BhdGhcIiAtPlxuICAgICAgICAgIChsaWRlbnRfbG9jLCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByKVxuICAgICAgfCBfIC0+IChsaWRlbnRfbG9jLCBleHByKSlcbiAgICBmaWVsZHNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBwYXlsb2FkID1cbiAgbGV0IG9wZW4gQXN0XzUwMS5QYXJzZXRyZWUgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0clxuICAgICAgW1xuICAgICAgICAoe1xuICAgICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICAgIFBzdHJfZXZhbFxuICAgICAgICAgICAgICAgKCh7IHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIH0gYXMgZXhwciksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgfSBhcyBzdHJpKTtcbiAgICAgIF0gLT5cbiAgICAgIGxldCBuZXdfZmllbGRzID0gbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzIGluXG4gICAgICBsZXQgbmV3X2V4cHIgPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAobmV3X2ZpZWxkcywgTm9uZSkgfSBpblxuICAgICAgUFN0ciBbIHsgc3RyaSB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAobmV3X2V4cHIsIGF0dHJpYnV0ZXMpIH0gXVxuICB8IF8gLT4gcGF5bG9hZFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uXG4gICAgICAgICggW10sXG4gICAgICAgICAgTm9uZSxcbiAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXMgKExpc3QubWFwIGNvcHlfY2FzZSB4MCwgbG9jLCBbXSkgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuIChhcmdfbGFiZWwsIG9wdF9kZWZhdWx0LCBwYXQsIGV4cHIpIC0+XG4gICAgICBsZXQgdGFrZV9ib2R5IChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiBjYXNlX2xpc3QgLT5cbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlc1xuICAgICAgICAgICAgICAoIExpc3QubWFwIGNvcHlfY2FzZSBjYXNlX2xpc3QsXG4gICAgICAgICAgICAgICAgZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXMgKVxuICAgICAgICB8IF8gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHkgKGNvcHlfZXhwcmVzc2lvbiBlKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgdGFrZV9hcmd1bWVudHMgYWNjIChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgICAgICAgKCogVGhlIGF0dHJpYnV0ZSBsaXN0IGlzIG5vdCBlbXB0eSwgbm9uZSBvZiB0aGVzZSBub2RlcyBjb3VsZCBoYXZlXG4gICAgICAgICAgICAgYmVlbiBjcmVhdGVkIGJ5IHRoZSBkb3dud2FyZCBtaWdyYXRpb24uIEV4Y2VwdCBmb3IgW1BleHBfZnVuXSwgZm9yXG4gICAgICAgICAgICAgd2hpY2ggd2UgYWRkIGEgZ2hvc3QgYXR0cmlidXRlIHRvIGhlbHAgdXMgcm91bmR0cmlwLiAqKVxuICAgICAgICAgIGxldCBfLCBhdHRycyA9XG4gICAgICAgICAgICBleHRyYWN0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXCIgZS5wZXhwX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5XG4gICAgICAgICAgICAgIChjb3B5X2V4cHJlc3Npb24geyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfSkgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlIGxpa2VseSB0byBoYXZlIGJlZW4gc3ludGhldGl6ZWQgZHVyaW5nIHRoZVxuICAgICAgICAgICAgIGRvd253YXJkIG1pZ3JhdGlvbi4gKilcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoYXJnX2xhYmVsLCBvcHRfZGVmYXVsdCwgcGF0LCBleHByKSAtPlxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50c19mdW4gYWNjIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh0LCBleHByKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fbG9jID0gdC5sb2M7XG4gICAgICAgICAgICAgICAgICBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50cyBhY2MgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChleHAsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBUaGVzZSB0d28gZXhwcmVzc2lvbiBhcmUgcmVwcmVzZW50ZWQgdGhlIHNhbWUgb24gNS4xIGJ1dFxuICAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSBvbiA1LjI6XG4gICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCA6IChfIC0+IGludCkgLT4gZnVuIHkgLT4geCt5XG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCAtPiAoKGZ1biB5IC0+IHgreSkgOiBfIC0+IGludClcbiAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgV2Ugbm9ybWFsaXplIHRoZSBzZWNvbmQgaW50byB0aGUgZmlyc3Qgd2hlbiBtaWdyYXRpbmcgdG8gNS4yLFxuICAgICAgICAgICAgICAgICBtYWtpbmcgdGhlIG1pZ3JhdGlvbiA1LjItPjUuMS0+NS4yIG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseVxuICAgICAgICAgICAgICAgICB3aXRob3V0IGNoYW5nZSBpbiBzZW1hbnRpY3MuICopXG4gICAgICAgICAgICAgIGxldCBjdCA9XG4gICAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0cmFpbnQgKGNvcHlfY29yZV90eXBlIGN0KSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGFjYywgY3QsIHRha2VfYm9keSBleHApXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwLCBjMSwgYzIpIC0+XG4gICAgICAgICAgICAgICgqIFNhbWUgYXMgYWJvdmUsIG1pZ2h0IG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseSBPSy4gKilcbiAgICAgICAgICAgICAgbGV0IGMxID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBjMVxuICAgICAgICAgICAgICBhbmQgYzIgPSBjb3B5X2NvcmVfdHlwZSBjMiBpblxuICAgICAgICAgICAgICAoYWNjLCBTb21lIChBc3RfNTAyLlBhcnNldHJlZS5QY29lcmNlIChjMSwgYzIpKSwgdGFrZV9ib2R5IGV4cClcbiAgICAgICAgICB8IF8gLT4gKGFjYywgTm9uZSwgdGFrZV9ib2R5IGUpXG4gICAgICBhbmQgdGFrZV9hcmd1bWVudHNfZnVuIGFjYyBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHIgPVxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBsZXQgcHBhcmFtX2Rlc2MgPVxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhcmFtX3ZhbFxuICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGFyZ19sYWJlbCxcbiAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBvcHRfZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4gcGF0IClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIEJlc3QtZWZmb3J0IGxvY2F0aW9uLiAqKVxuICAgICAgICAgIHsgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IHBhdC5wcGF0X2xvYzsgcHBhcmFtX2Rlc2MgfSA6OiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgdGFrZV9hcmd1bWVudHMgYWNjIGV4cHJcbiAgICAgIGluXG4gICAgICAoKiBUaGUgYXJndW1lbnQgbGlzdCByZXR1cm5lZCBieSBbdGFrZV9hcmd1bWVudHNdIGlzIHJldmVyc2VkICopXG4gICAgICBsZXQgYXJnX2xpc3QsIHR5cGVfY29uc3RyYWludCwgYm9keSA9XG4gICAgICAgIHRha2VfYXJndW1lbnRzX2Z1biBbXSBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHJcbiAgICAgIGluXG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0LnJldiBhcmdfbGlzdCwgdHlwZV9jb25zdHJhaW50LCBib2R5KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzXG4gICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IHgxOyBsb2MgPSB4MC5wdHlwX2xvYyB9KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIDQuMTQgYW5kIDUuMCBmcm9tIGEgUGFyc2V0cmVlIHBvaW50IG9mIHZpZXcgYXJlIHRoZSBtYWdpYyBudW1iZXJzICopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuQXN0dHlwZXNcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5QYXJzZXRyZWVcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMlwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICBsZXQgbWVyZ2VfbG9jIGxlZnQgcmlnaHQgPVxuICAgIExvY2F0aW9uLlxuICAgICAgeyBsb2Nfc3RhcnQgPSBsZWZ0LmxvY19zdGFydDsgbG9jX2VuZCA9IHJpZ2h0LmxvY19lbmQ7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgaW5cbiAgbGV0IGdob3N0X2xvYyBsb2MgPSB7IGxvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwID1cbiAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgZ2hvc3RfbG9jXG4gICAgICAgIChtZXJnZV9sb2MgcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICBpblxuICAgIHtcbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHBhdCwgdHlwKTtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgfVxuICBpblxuICBsZXQgcHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0IGFuZCBwdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICBsZXQgY29uc3RyYWluX3BhdCBwYXQgdHlwIGV4cHIgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCBpblxuICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByID1cbiAgICBtYXRjaCAocHZiX2NvbnN0cmFpbnQsIHB2Yl9wYXQpIHdpdGhcbiAgICB8ICggU29tZVxuICAgICAgICAgIChQdmNfY29uc3RyYWludFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTtcbiAgICAgICAgICAgICAgdHlwID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiB0aGUgc3VnYXJpbmcgb2YgW2xldCB4OiB1bml2YXJzIC4gdHlwID0gZXhwIF0gd2FzIGRlc3VnYXJlZCB0b1xuICAgICAgICAgICBbbGV0ICh4OnVuaXZhcnMgLiB0eXApID0gZXhwXSBpbiA1LjAgd2hpY2ggZG9lc24ndCBmaXQgdGhlIGNhc2UgYmVsb3cgKilcbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgKCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICAgICAgICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgICAgICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgICAgICAgbGV0IGRlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgICAgICAgICggTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICBsYmxfbHN0X29wdGlvbiApXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPVxuICAgICAgICAgIG1hdGNoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBnaG9zdF9sb2MgdHlwLnB0eXBfbG9jXG4gICAgICAgICAgfCBfIDo6IF8gLT4gZ2hvc3RfbG9jIHBleHBfbG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBfcG9seSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwIHdpdGhcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgICAgICAgICAoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyxcbiAgICAgICAgICAgICAgICAgIHZhcmlmeV9jb25zdHJ1Y3RvcnMgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHR5cCApO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgICAgIGdob3N0X2xvY1xuICAgICAgICAgICAgKG1lcmdlX2xvYyBwdmJfcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jXG4gICAgICAgICAgICAgICB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0geyAoZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cF9wb2x5KSB3aXRoIHBwYXRfbG9jIH1cbiAgICAgICAgYW5kIHB2Yl9leHByID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBleHByIHZhciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodmFyLCBleHByKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAocHZiX2V4cHIsIHR5cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoTGlzdC5yZXYgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzKVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdOyB0eXAgfSksIF8gLT5cbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgU29tZSAoUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KSwgXyAtPlxuICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbiBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBnaG9zdF9sb2MgY29lcmNpb24ucHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHR5cCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29lcmNpb24gd2l0aFxuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoW10sIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cCBpblxuICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHB2Yl9leHByLCBncm91bmQsIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IF8gLT4gKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBsb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxID0gY29weV9tb2R1bGVfZXhwciB4MSBpblxuICAgICAgbGV0IHgxID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IGxvYyA9IHsgeDEucG1vZF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID1cbiAgICAgICAgICAgICAgICAgIHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IGxvYyB9O1xuICAgICAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgW107XG4gICAgICAgICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogeDEucG1vZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9XG4gICAgICAgIHwgXyAtPiB4MVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgbGV0IGVtcHR5X3N0cnVjdCA9XG4gICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgZW1wdHlfc3RydWN0KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAwLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+IFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuICBpblxuICAoKiBNYXRjaCB0aGUgZm9ybSBvZiB0aGUgZXhwciBhbmQgcGF0dGVybiB0byBkZWNpZGUgdGhlIHZhbHVlIG9mXG4gICAgIFtwdmJfY29uc3RyYWludF0uIEFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgUFByaW50ZXIuICopXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdHl2YXJzIGluXG4gIGxldCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHAgZSA9XG4gICAgbGV0IHZhbHVlX3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gYXMgdHlfZXh0KSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGFzc2VydCAobWF0Y2ggcnQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpO1xuICAgICAgICAgIGxldCB0eSA9IG1hdGNoIGFyZ3NfdHl2YXJzIHdpdGggW10gLT4gcnQgfCBfIC0+IHR5X2V4dCBpblxuICAgICAgICAgIGBWYXIgKHBhdCwgYXJnc190eXZhcnMsIHJ0LCB0eSlcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocGF0LCBydCk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYE5vblZhciAocGF0LCBydClcbiAgICAgIHwgXyAtPiBgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyB2YWx1ZV9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICB2YWx1ZV9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgdmFsdWVfZXhwID0gdmFsdWVfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAodmFsdWVfcGF0dGVybiwgdmFsdWVfZXhwKSB3aXRoXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBTb21lIChlX3R5dmFycywgaW5uZXJfZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlblxuICAgICAgICAgIGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgcHRfdHl2YXJzLCBlX2N0LCBpbm5lcl9lKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogdGhlIGV4cHJlc3Npb24gY29uc3RyYWludCBhbmQgdGhlIHBhdHRlcm4gY29uc3RyYWludCxcbiAgICAgICAgICAgICBkb24ndCBtYXRjaCwgYnV0IHdlIHN0aWxsIGhhdmUgYSBQdHlwX3BvbHkgcGF0dGVybiBjb25zdHJhaW50IHRoYXRcbiAgICAgICAgICAgICBzaG91bGQgYmUgcmVzdWdhcmVkIHRvIGEgdmFsdWUgYmluZGluZyAqKVxuICAgICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIF8gLT5cbiAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYE5vblZhciAocGF0LCBjdCksIF8gLT4gYE5vblZhciAocGF0LCBjdCwgZSlcbiAgICB8IF8gLT4gYE5vbmVcbiAgaW5cbiAgbGV0IHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cCA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIFNvbWVcbiAgICAgIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICAgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSB0eV92YXJzOyB0eXAgfSlcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByLCBwdmJfY29uc3RyYWludCA9XG4gICAgbWF0Y2ggcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwdmJfcGF0IHB2Yl9leHByIHdpdGhcbiAgICB8IGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgdHlfdmFycywgdHlwLCBlKSAtPlxuICAgICAgICAocCwgZSwgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgW10sIGN0LCBleHByKSAtPiAoXG4gICAgICAgICgqIGNoZWNrIGlmIHdlIGFyZSBpbiB0aGUgW2xldCB4IDogdHk/IDo+IGNvZXIgPSBleHByIF0gY2FzZSAqKVxuICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29lcmNlIChleHByLCBnciwgY29lcmNlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBnciBpblxuICAgICAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNlIGluXG4gICAgICAgICAgICBsZXQgcHZiX2NvbnN0cmFpbnQgPVxuICAgICAgICAgICAgICBTb21lIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKHBhdCwgZXhwciwgcHZiX2NvbnN0cmFpbnQpXG4gICAgICAgIHwgXyAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgXywgY3QsIGV4cHIpIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdClcbiAgICB8IGBOb25WYXIgKHAsIHR5cCwgZSkgLT4gKHAsIGUsIHdpdGhfY29uc3RyYWludCBbXSB0eXApXG4gICAgfCBgTm9uZSAtPiAocHZiX3BhdCwgcHZiX2V4cHIsIE5vbmUpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxLCBpc191bml0ID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHIgYWNjIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBfID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IF8gfTtcbiAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IHEgLT5cbiAgICAgICAgICAgICAgICAgIChMaXN0LnJldl9hcHBlbmQgYWNjIHEsIGZhbHNlKVxuICAgICAgICAgICAgICB8IGhkIDo6IHRsIC0+IGV4dHJhY3RfYXR0ciAoaGQgOjogYWNjKSB0bFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGIgPSBleHRyYWN0X2F0dHIgW10geDEucG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICAgICAoeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9LCBiKVxuICAgICAgICB8IF8gLT4gKHgxLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBpZiBpc191bml0IHRoZW4gQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICAgICAgZWxzZVxuICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDAuQXN0dHlwZXMudHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJtb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNTAwLlBhcnNldHJlZS4lcyAtPiBBc3RfNDE0LlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF80MTQuUGFyc2V0cmVlLiVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgKFtdLCBQKVxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICBDICh0eXBlIGEgYikgUCAgIFNvbWUgKFthOyBiXSwgUClcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgOj0gIC4uLiAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZCAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxNC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+IChcbiAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgICAgIHwgaGQgOjogXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJ0eXBlIHBhcmFtZXRlcnMgaW4gZXh0ZW5zaW9uIGNvbnN0cnVjdG9yc1wiKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcGNkX3ZhcnMgd2l0aFxuICB8IFtdIC0+XG4gICAgICB7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgICAgIH1cbiAgfCBoZCA6OiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJwY2RfdmFycyBpbiBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbnNcIlxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTQuQXN0dHlwZXMudHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTQuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKFtdLCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycyA9IFtdO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjlcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChtYXRjaCB4MCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgfCB0eSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgdHkuQXN0XzQxMy5Bc3R0eXBlcy5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJleGlzdGVudGlhbHMgaW4gcGF0dGVybi1tYXRjaGluZ1wiKTtcbiAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHgxKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgXCJtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvY1xuICAgICAgICBcImRlc3RydWN0aXZlIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jXG4gICAgICAgIFwibG9jYWwgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gKFtdLCBjb3B5X3BhdHRlcm4geCkpIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyN1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyN1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBfLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgTG9jYXRpb24ubm9uZSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI2XCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTBcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2NcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFub255bW91cyBsZXQgbW9kdWxlXCJcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvY1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFueW55bW91cyB1bnBhY2tcIiB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBMb2NhdGlvbi50IGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtYl9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgYmluZGluZ1wiKVxuICAgICAgICBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+XG4gICAgc3RyaW5nIEFzdF80MDkuQXN0dHlwZXMubG9jICogQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgb3B0aW9uID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+ICh7IGxvYyA9IExvY2F0aW9uLm5vbmU7IHR4dCA9IFwiKlwiIH0sIE5vbmUpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICggY29weV9sb2MgKGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIHggLT4geCkgeDAsXG4gICAgICAgIFNvbWUgKGNvcHlfbW9kdWxlX3R5cGUgeDEpIClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1kX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gVGh1IE1hciAyMSAwOTo1MDo0MiBHTVQgMjAxOVxuICAgT0NhbWwgd2FzOlxuICAgY29tbWl0IDU1YzliYTQ2NjM2MmYzMDNlYjRkNWVkNTExZjZmZGExNDI4NzkxMzcgKEhFQUQgLT4gNC4wOCwgb3JpZ2luLzQuMDgpXG4gICAgIEF1dGhvcjogTmljb2zDoXMgT2plZGEgQsOkciA8bi5vamUuYmFyQGdtYWlsLmNvbT5cbiAgICAgRGF0ZTogICBUdWUgTWFyIDE5IDA4OjExOjAyIDIwMTkgKzAxMDBcblxuICAgICAgICAgTWVyZ2UgcHVsbCByZXF1ZXN0ICM4NTIxIGZyb20gbm9qYi9maXhfdW5peF90ZXN0c180MDhcblxuICAgICAgICAgQWN0dWFsbHkgcnVuIGFsbCBsaWItdW5peCB0ZXN0cyBbNC4wOF1cbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA5LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA5LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA4LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDguUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA4LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOC5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDguQXN0dHlwZXMudHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gV2VkIEFwciAxOCAxMDozMzoyOSBCU1QgMjAxOFxuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgYzBiZDZhMjdlMTM4OTExNTYwZjQzZGM3NWQ1ZmRlMmFkZTRkNmNmZSAoSEVBRCwgdGFnOiA0LjA3LjArYmV0YTIpXG4gICAgIEF1dGhvcjogRGFtaWVuIERvbGlnZXogPGRhbWllbi5kb2xpZ2V6QGlucmlhLmZyPlxuICAgICBEYXRlOiAgIFR1ZSBBcHIgMTAgMTQ6NTA6NDggMjAxOCArMDIwMFxuXG4gICAgICAgICBjaGFuZ2UgVkVSU0lPTiBmb3IgNC4wNy4wK2JldGEyXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIzXCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDhcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9sb2MgPSBfO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgICggcGRpcl9uYW1lLkxvY2F0aW9uLnR4dCxcbiAgICAgICAgICBtYXRjaCBwZGlyX2FyZyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IGFyZyApXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IF9wZGlyYV9sb2MgfSAtPlxuICBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2NcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZCxcbiAgICAgICAgICAgICAgY29weV9leHByZXNzaW9uIHgxIClcbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB7IGxldF87IGFuZHMgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbGV0Xy5wYm9wX29wLmxvYyBcImxldCBvcGVyYXRvcnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcHJmX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MSxcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwb2ZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX2xvYyA9IF87XG4gICAgIH0gLT5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWUsIGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPVxuICAgICAgICAgICAgICAgIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24geDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBsZXQgeDBfbG9jID1cbiAgICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgICB8IFtdIC0+IExvY2F0aW9uLm5vbmVcbiAgICAgICAgfCB7IEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYzsgXyB9IDo6IF8gLT4gcHR5cGVfbG9jXG4gICAgICBpblxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwX2xvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAucG1zX2xvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiBoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG4oKiBhbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICBGcm9tLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuICAgZnVuXG4gICAgIHsgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBwdHlleG5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuICAgICAgLT5cbiAgICAge1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSAoY29weV9sb2NhdGlvbiBwdHlleG5fbG9jKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgKGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcylcbiAgICAgfSopXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX25hbWUgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi50eHQgPSB4MDsgTG9jYXRpb24ubG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2FyZyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb25cbiAgICA9XG4gIGxldCB3cmFwIHBkaXJhX2Rlc2MgPVxuICAgIFNvbWUgeyBUby5QYXJzZXRyZWUucGRpcmFfZGVzYzsgVG8uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IExvY2F0aW9uLm5vbmUgfVxuICBpblxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBOb25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MCkgfD4gd3JhcFxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9ib29sIHgyLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4Myk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID0gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4Mik7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID0gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDA7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCB4MTtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQpO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBwb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc3RyX2ZpZWxkc1xuICBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZClcbiAgICAgICAgICAgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzaWdfZmllbGRzXG4gIGluXG5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiBfIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IHB0eWV4dF9wYXRoLkxvY2F0aW9uLmxvYztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIE1vbiBPY3QgIDIgMTE6MjU6NTcgQ0VTVCAyMDE3XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCA2NTk0MGEyYzZiZTQzYzQyZjc1YzZjNmIyNTU5NzRmN2U2ZGUwM2NhIChIRUFEIC0+IDQuMDYsIG9yaWdpbi80LjA2KVxuICAgICBBdXRob3I6IENocmlzdG9waGUgUmFmZmFsbGkgPGNocmlzdG9waGVAcmFmZmFsbGkuZXU+XG4gICAgIERhdGU6ICAgU3VuIE9jdCAxIDE4OjI3OjA3IDIwMTcgKzAyMDBcblxuICAgICAgICAgZml4ZWQgcG9zaXRpb24gb2YgbGFzdCBvcHRpb25hbCBsYXN0IHNlbWljb2x1bW4gaW4gc2VxdWVuY2UgKCMxMzg3KVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyMlwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgTG9jYXRpb24ubm9uZSBcImluaGVyaXRhbmNlIGluIG9iamVjdCB0eXBlXCIpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAudHh0LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIGV4cHJlc3Npb25cIlxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBfOyBfIH0sIHgwKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgeDA7IGxvYyB9LCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSB4MDsgbG9jIH0sIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyBsb2M7IF8gfSwgX3gwKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgbG9jOyBfIH0sIF94MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgdHlwZVwiXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIHsgdHh0ID0gY29weV9sYWJlbCB4MDsgbG9jID0gTG9jYXRpb24ubm9uZSB9LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lLFxuICAgICAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MS5Gcm9tLkFzdHR5cGVzLnR4dClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbm9sb2MgeCA9IHsgTG9jYXRpb24udHh0ID0geDsgbG9jID0gTG9jYXRpb24ubm9uZSB9XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBub2xvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKG5vbG9jIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAobm9sb2MgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiBub2xvYyB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gbm9sb2MgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDRcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJsb2NhbCBleGNlcHRpb25zXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBsYWIgbXVzdCBzdGFydCB3aXRoICc/Jy5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcblxuICAgIE5vdGU6IHdoZW4gdXNlZCB1bmRlciBQc3RyX3ByaW1pdGl2ZSwgcHJpbSBjYW5ub3QgYmUgZW1wdHlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb3JlX3R5cGUgbGlzdDtcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUpXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChhcmdzID0gW10sIHJlcyA9IFNvbWUgVDApXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29yZV90eXBlIGxpc3QgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIGludFxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxNVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDJcblxubGV0IGluamVjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIGQgPVxuICBsZXQgb3BlbiBUbyBpblxuICBsZXQgb3BlbiBQYXJzZXRyZWUgaW5cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgXyAtPlxuICAgICAgbGV0IGxvYyA9IHsgZC5wdHlwX2xvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHR4dCA9IExvbmdpZGVudC5MZG90IChMb25naWRlbnQuTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIikgaW5cbiAgICAgIGxldCBpZGVudCA9IHsgTG9jYXRpb24udHh0OyBsb2MgfSBpblxuICAgICAge1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWRlbnQsIFsgZCBdKTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuICB8IF8gLT4gZFxuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjAzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ1bnJlYWNoYWJsZSBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgbG9jIHgwLCBjb3B5X2NvbnN0YW50IGxvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIGxvYyA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJzaWduYXR1cmVzIGluIGF0dHJpYnV0ZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoZnJvbV9sb2MgcGV4dF9uYW1lKSBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKGZyb21fbG9jIHBjZF9uYW1lKSBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlIGxpc3QgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+IExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiaW5saW5lIHJlY29yZHNcIlxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gXCJcIlxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4geDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFwiP1wiIF4geDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IGxvYyA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLkFzdHR5cGVzLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdsJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQzMiAoSW50MzIub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdMJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQ2NCAoSW50NjQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICduJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgKE5hdGl2ZWludC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGludGVnZXIgbGl0ZXJhbHNcIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPiBUby5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGZsb2F0IGxpdGVyYWxzXCIpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHJlY2ZsYWcgdHlwZXMgPVxuICBtYXRjaCAocmVjZmxhZywgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzKSB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzIC0+IHR5cGVzXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIFtdIC0+IFtdXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHggOjogeHMgLT5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiX25vbmVfXCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gLTE7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICAoeyBUby5Bc3R0eXBlcy50eHQgPSBcIm5vbnJlY1wiOyBsb2MgfSwgVG8uUGFyc2V0cmVlLlBTdHIgW10pXG4gICAgICAgIDo6IHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIF94MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDJcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB0eXAgPVxuICBsZXQgb3BlbiBGcm9tIGluXG4gIGxldCBvcGVuIExvbmdpZGVudCBpblxuICBtYXRjaCAobGFiZWwsIHR5cC5QYXJzZXRyZWUucHR5cF9kZXNjKSB3aXRoXG4gIHwgKCBUby5Bc3R0eXBlcy5PcHRpb25hbCBfLFxuICAgICAgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKHsgTG9jYXRpb24udHh0ID0gTGRvdCAoTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIik7IF8gfSwgWyBkIF0pICkgLT5cbiAgICAgIGRcbiAgfCBfIC0+IHR5cFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHBjZF9hcmdzKTtcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuIGZ1biB4IC0+XG4gIGlmIHggPD4gXCJcIiB0aGVuXG4gICAgaWYgeC5bMF0gPSAnPycgdGhlblxuICAgICAgVG8uQXN0dHlwZXMuT3B0aW9uYWwgKFN0cmluZy5zdWIgeCAxIChTdHJpbmcubGVuZ3RoIHggLSAxKSlcbiAgICBlbHNlIFRvLkFzdHR5cGVzLkxhYmVsbGVkIHhcbiAgZWxzZSBUby5Bc3R0eXBlcy5Ob2xhYmVsXG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5Bc3R0eXBlcy5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50MzIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHgwLCBTb21lICdsJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDY0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB4MCwgU29tZSAnTCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB4MCwgU29tZSAnbicpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHR5cGVzID1cbiAgbGV0IGlzX25vbnJlYyAoYXR0ciwgXykgPSBhdHRyLkxvY2F0aW9uLnR4dCA9IFwibm9ucmVjXCIgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzIHdpdGhcbiAgfCB4IDo6IHhzIHdoZW4gTGlzdC5leGlzdHMgaXNfbm9ucmVjIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgLT5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoaXNfbm9ucmVjIHgpKSB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4cylcbiAgfCB0eXBlcyAtPiAoVG8uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcylcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2ludCAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsImxldCBpc19rZXl3b3JkID0gZnVuY3Rpb25cbiAgfCBcImFuZFwiIC0+IHRydWVcbiAgfCBcImFzXCIgLT4gdHJ1ZVxuICB8IFwiYXNzZXJ0XCIgLT4gdHJ1ZVxuICB8IFwiYmVnaW5cIiAtPiB0cnVlXG4gIHwgXCJjbGFzc1wiIC0+IHRydWVcbiAgfCBcImNvbnN0cmFpbnRcIiAtPiB0cnVlXG4gIHwgXCJkb1wiIC0+IHRydWVcbiAgfCBcImRvbmVcIiAtPiB0cnVlXG4gIHwgXCJkb3dudG9cIiAtPiB0cnVlXG4gIHwgXCJlbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZW5kXCIgLT4gdHJ1ZVxuICB8IFwiZXhjZXB0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZXh0ZXJuYWxcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IHRydWVcbiAgfCBcImZvclwiIC0+IHRydWVcbiAgfCBcImZ1blwiIC0+IHRydWVcbiAgfCBcImZ1bmN0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3RvclwiIC0+IHRydWVcbiAgfCBcImlmXCIgLT4gdHJ1ZVxuICB8IFwiaW5cIiAtPiB0cnVlXG4gIHwgXCJpbmNsdWRlXCIgLT4gdHJ1ZVxuICB8IFwiaW5oZXJpdFwiIC0+IHRydWVcbiAgfCBcImluaXRpYWxpemVyXCIgLT4gdHJ1ZVxuICB8IFwibGF6eVwiIC0+IHRydWVcbiAgfCBcImxldFwiIC0+IHRydWVcbiAgfCBcIm1hdGNoXCIgLT4gdHJ1ZVxuICB8IFwibWV0aG9kXCIgLT4gdHJ1ZVxuICB8IFwibW9kdWxlXCIgLT4gdHJ1ZVxuICB8IFwibXV0YWJsZVwiIC0+IHRydWVcbiAgfCBcIm5ld1wiIC0+IHRydWVcbiAgfCBcIm5vbnJlY1wiIC0+IHRydWVcbiAgfCBcIm9iamVjdFwiIC0+IHRydWVcbiAgfCBcIm9mXCIgLT4gdHJ1ZVxuICB8IFwib3BlblwiIC0+IHRydWVcbiAgfCBcIm9yXCIgLT4gdHJ1ZVxuICAoKiB8IFwicGFyc2VyXCIgLT4gdHJ1ZSAqKVxuICB8IFwicHJpdmF0ZVwiIC0+IHRydWVcbiAgfCBcInJlY1wiIC0+IHRydWVcbiAgfCBcInNpZ1wiIC0+IHRydWVcbiAgfCBcInN0cnVjdFwiIC0+IHRydWVcbiAgfCBcInRoZW5cIiAtPiB0cnVlXG4gIHwgXCJ0b1wiIC0+IHRydWVcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJ0cnlcIiAtPiB0cnVlXG4gIHwgXCJ0eXBlXCIgLT4gdHJ1ZVxuICB8IFwidmFsXCIgLT4gdHJ1ZVxuICB8IFwidmlydHVhbFwiIC0+IHRydWVcbiAgfCBcIndoZW5cIiAtPiB0cnVlXG4gIHwgXCJ3aGlsZVwiIC0+IHRydWVcbiAgfCBcIndpdGhcIiAtPiB0cnVlXG4gIHwgXCJsb3JcIiAtPiB0cnVlXG4gIHwgXCJseG9yXCIgLT4gdHJ1ZVxuICB8IFwibW9kXCIgLT4gdHJ1ZVxuICB8IFwibGFuZFwiIC0+IHRydWVcbiAgfCBcImxzbFwiIC0+IHRydWVcbiAgfCBcImxzclwiIC0+IHRydWVcbiAgfCBcImFzclwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnNcbiAgICBvcGVuIFByaW50ZiAkKilcblxuKCogQ29weSBvZiBPQ2FtbCBwYXJzZXRyZWVzICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uIChmdW4gc3VmZml4IF8gLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBBc3RfJXMgPSBBc3RfJXNcXG5cIiBzdWZmaXggc3VmZml4KVxuKilcbm1vZHVsZSBBc3RfNDAyID0gQXN0XzQwMlxubW9kdWxlIEFzdF80MDMgPSBBc3RfNDAzXG5tb2R1bGUgQXN0XzQwNCA9IEFzdF80MDRcbm1vZHVsZSBBc3RfNDA1ID0gQXN0XzQwNVxubW9kdWxlIEFzdF80MDYgPSBBc3RfNDA2XG5tb2R1bGUgQXN0XzQwNyA9IEFzdF80MDdcbm1vZHVsZSBBc3RfNDA4ID0gQXN0XzQwOFxubW9kdWxlIEFzdF80MDkgPSBBc3RfNDA5XG5tb2R1bGUgQXN0XzQxMCA9IEFzdF80MTBcbm1vZHVsZSBBc3RfNDExID0gQXN0XzQxMVxubW9kdWxlIEFzdF80MTIgPSBBc3RfNDEyXG5tb2R1bGUgQXN0XzQxMyA9IEFzdF80MTNcbm1vZHVsZSBBc3RfNDE0ID0gQXN0XzQxNFxubW9kdWxlIEFzdF81MDAgPSBBc3RfNTAwXG5tb2R1bGUgQXN0XzUwMSA9IEFzdF81MDFcbm1vZHVsZSBBc3RfNTAyID0gQXN0XzUwMlxubW9kdWxlIEFzdF81MDMgPSBBc3RfNTAzXG4oKiQqKVxuXG4oKiBNYW51YWwgbWlncmF0aW9uIGJldHdlZW4gdmVyc2lvbnMgKilcbigqJFxuICBmb3JlYWNoX3ZlcnNpb25fcGFpciAoZnVuIHggeSAtPlxuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeCB5IHggeTtcbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHkgeCB5IHgpXG4qKVxubW9kdWxlIE1pZ3JhdGVfNDAyXzQwMyA9IE1pZ3JhdGVfNDAyXzQwM1xubW9kdWxlIE1pZ3JhdGVfNDAzXzQwMiA9IE1pZ3JhdGVfNDAzXzQwMlxubW9kdWxlIE1pZ3JhdGVfNDAzXzQwNCA9IE1pZ3JhdGVfNDAzXzQwNFxubW9kdWxlIE1pZ3JhdGVfNDA0XzQwMyA9IE1pZ3JhdGVfNDA0XzQwM1xubW9kdWxlIE1pZ3JhdGVfNDA0XzQwNSA9IE1pZ3JhdGVfNDA0XzQwNVxubW9kdWxlIE1pZ3JhdGVfNDA1XzQwNCA9IE1pZ3JhdGVfNDA1XzQwNFxubW9kdWxlIE1pZ3JhdGVfNDA1XzQwNiA9IE1pZ3JhdGVfNDA1XzQwNlxubW9kdWxlIE1pZ3JhdGVfNDA2XzQwNSA9IE1pZ3JhdGVfNDA2XzQwNVxubW9kdWxlIE1pZ3JhdGVfNDA2XzQwNyA9IE1pZ3JhdGVfNDA2XzQwN1xubW9kdWxlIE1pZ3JhdGVfNDA3XzQwNiA9IE1pZ3JhdGVfNDA3XzQwNlxubW9kdWxlIE1pZ3JhdGVfNDA3XzQwOCA9IE1pZ3JhdGVfNDA3XzQwOFxubW9kdWxlIE1pZ3JhdGVfNDA4XzQwNyA9IE1pZ3JhdGVfNDA4XzQwN1xubW9kdWxlIE1pZ3JhdGVfNDA4XzQwOSA9IE1pZ3JhdGVfNDA4XzQwOVxubW9kdWxlIE1pZ3JhdGVfNDA5XzQwOCA9IE1pZ3JhdGVfNDA5XzQwOFxubW9kdWxlIE1pZ3JhdGVfNDA5XzQxMCA9IE1pZ3JhdGVfNDA5XzQxMFxubW9kdWxlIE1pZ3JhdGVfNDEwXzQwOSA9IE1pZ3JhdGVfNDEwXzQwOVxubW9kdWxlIE1pZ3JhdGVfNDEwXzQxMSA9IE1pZ3JhdGVfNDEwXzQxMVxubW9kdWxlIE1pZ3JhdGVfNDExXzQxMCA9IE1pZ3JhdGVfNDExXzQxMFxubW9kdWxlIE1pZ3JhdGVfNDExXzQxMiA9IE1pZ3JhdGVfNDExXzQxMlxubW9kdWxlIE1pZ3JhdGVfNDEyXzQxMSA9IE1pZ3JhdGVfNDEyXzQxMVxubW9kdWxlIE1pZ3JhdGVfNDEyXzQxMyA9IE1pZ3JhdGVfNDEyXzQxM1xubW9kdWxlIE1pZ3JhdGVfNDEzXzQxMiA9IE1pZ3JhdGVfNDEzXzQxMlxubW9kdWxlIE1pZ3JhdGVfNDEzXzQxNCA9IE1pZ3JhdGVfNDEzXzQxNFxubW9kdWxlIE1pZ3JhdGVfNDE0XzQxMyA9IE1pZ3JhdGVfNDE0XzQxM1xubW9kdWxlIE1pZ3JhdGVfNDE0XzUwMCA9IE1pZ3JhdGVfNDE0XzUwMFxubW9kdWxlIE1pZ3JhdGVfNTAwXzQxNCA9IE1pZ3JhdGVfNTAwXzQxNFxubW9kdWxlIE1pZ3JhdGVfNTAwXzUwMSA9IE1pZ3JhdGVfNTAwXzUwMVxubW9kdWxlIE1pZ3JhdGVfNTAxXzUwMCA9IE1pZ3JhdGVfNTAxXzUwMFxubW9kdWxlIE1pZ3JhdGVfNTAxXzUwMiA9IE1pZ3JhdGVfNTAxXzUwMlxubW9kdWxlIE1pZ3JhdGVfNTAyXzUwMSA9IE1pZ3JhdGVfNTAyXzUwMVxubW9kdWxlIE1pZ3JhdGVfNTAyXzUwMyA9IE1pZ3JhdGVfNTAyXzUwM1xubW9kdWxlIE1pZ3JhdGVfNTAzXzUwMiA9IE1pZ3JhdGVfNTAzXzUwMlxuKCokKilcblxuKCogQ29tcGlsZXIgbW9kdWxlcyAqKVxubW9kdWxlIEFzdF9tZXRhZGF0YSA9IEFzdF9tZXRhZGF0YVxubW9kdWxlIENvbmZpZyA9IENvbmZpZ1xubW9kdWxlIEtleXdvcmQgPSBLZXl3b3JkXG5tb2R1bGUgTG9jYXRpb24gPSBMb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IExvbmdpZGVudFxubW9kdWxlIFBhcnNlID0gUGFyc2Vcbm1vZHVsZSBQcHJpbnRhc3QgPSBQcHJpbnRhc3RcblxubGV0IGluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaW5nX2Vudl92YXJzICgpID1cbiAgKCpJRl9BVF9MRUFTVCA0MDggT2NhbWxfY29tbW9uLkNvbXBtaXNjLnJlYWRfY2xmbGFnc19mcm9tX2VudiAoKSAqKVxuICAoKklGX05PVF9BVF9MRUFTVCA0MDggKCkgKilcbigqKiBBZGp1c3QgdGhlIHJlcG9ydGluZyBzdHlsZSBvZiBlcnJvciBtZXNzYWdlcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIE9DQU1MX0NPTE9SIGFuZCBPQ0FNTF9FUlJPUl9TVFlMRS4gKilcbiIsIm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVE9ETzogcmVtb3ZlIHRoaXMgb3BlbiAqKVxub3BlbiBTdGRsaWIwXG5tb2R1bGUgTG9jYXRpb24gPSBBc3RsaWIuTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBBc3RsaWIuTG9uZ2lkZW50XG5vcGVuIEFzdGxpYi5Bc3RfNTAwXG5cbltAQEB3YXJuaW5nIFwiLTlcIl1cblxub3BlbiBBc3R0eXBlc1xub3BlbiBQYXJzZXRyZWVcblxudHlwZSAnYSB3aXRoX2xvYyA9ICdhIExvY2F0aW9uLmxvY1xudHlwZSBsb2MgPSBMb2NhdGlvbi50XG50eXBlIGxpZCA9IExvbmdpZGVudC50IHdpdGhfbG9jXG50eXBlIHN0ciA9IHN0cmluZyB3aXRoX2xvY1xudHlwZSBzdHJfb3B0ID0gc3RyaW5nIG9wdGlvbiB3aXRoX2xvY1xudHlwZSBhdHRycyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmxldCBkZWZhdWx0X2xvYyA9IHJlZiBMb2NhdGlvbi5ub25lXG5cbnR5cGUgcmVmX2FuZF92YWx1ZSA9IFIgOiAnYSByZWYgKiAnYSAtPiByZWZfYW5kX3ZhbHVlXG5cbmxldCBwcm90ZWN0X3JlZiA9XG4gIGxldCBzZXRfcmVmIChSIChyLCB2KSkgPSByIDo9IHYgaW5cbiAgZnVuIHJlZiBmIC0+XG4gICAgbGV0IChSIChyLCBfKSkgPSByZWYgaW5cbiAgICBsZXQgYmFja3VwID0gUiAociwgIXIpIGluXG4gICAgc2V0X3JlZiByZWY7XG4gICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgfCB4IC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICB4XG4gICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgcmFpc2UgZVxuXG5sZXQgd2l0aF9kZWZhdWx0X2xvYyBsIGYgPSBwcm90ZWN0X3JlZiAoUiAoZGVmYXVsdF9sb2MsIGwpKSBmXG5cbm1vZHVsZSBDb25zdCA9IHN0cnVjdFxuICBsZXQgaW50ZWdlciA/c3VmZml4IGkgPSBQY29uc3RfaW50ZWdlciAoaSwgc3VmZml4KVxuICBsZXQgaW50ID9zdWZmaXggaSA9IGludGVnZXIgP3N1ZmZpeCAoSW50LnRvX3N0cmluZyBpKVxuICBsZXQgaW50MzIgPyhzdWZmaXggPSAnbCcpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKEludDMyLnRvX3N0cmluZyBpKVxuICBsZXQgaW50NjQgPyhzdWZmaXggPSAnTCcpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKEludDY0LnRvX3N0cmluZyBpKVxuICBsZXQgbmF0aXZlaW50ID8oc3VmZml4ID0gJ24nKSBpID0gaW50ZWdlciB+c3VmZml4IChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG4gIGxldCBmbG9hdCA/c3VmZml4IGYgPSBQY29uc3RfZmxvYXQgKGYsIHN1ZmZpeClcbiAgbGV0IGNoYXIgYyA9IFBjb25zdF9jaGFyIGNcblxuICBsZXQgc3RyaW5nID9xdW90YXRpb25fZGVsaW1pdGVyID8obG9jID0gIWRlZmF1bHRfbG9jKSBzID1cbiAgICBQY29uc3Rfc3RyaW5nIChzLCBsb2MsIHF1b3RhdGlvbl9kZWxpbWl0ZXIpXG5lbmRcblxubW9kdWxlIEF0dHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBuYW1lIHBheWxvYWQgPVxuICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBUeXAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYyA9IGQ7XG4gICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gZC5wdHlwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQdHlwX2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXIgYSlcbiAgbGV0IGFycm93ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYXJyb3cgKGEsIGIsIGMpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3R1cGxlIGEpXG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY29uc3RyIChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfb2JqZWN0IChhLCBiKSlcbiAgbGV0IGNsYXNzXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jbGFzcyAoYSwgYikpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hbGlhcyAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyaWFudCAoYSwgYiwgYykpXG4gIGxldCBwb2x5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BvbHkgKGEsIGIpKVxuICBsZXQgcGFja2FnZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wYWNrYWdlIChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfZXh0ZW5zaW9uIGEpXG5cbiAgbGV0IGZvcmNlX3BvbHkgdCA9XG4gICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aCBQdHlwX3BvbHkgXyAtPiB0IHwgXyAtPiBwb2x5IH5sb2M6dC5wdHlwX2xvYyBbXSB0XG4gICgqIC0+IGdob3N0PyAqKVxuXG4gIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidmFyaWFibGUgaW4gc2NvcGUgc3ludGF4IGVycm9yOiAlc1wiIHZcbiAgICBpblxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICAgIFB0eXBfdmFyIHhcbiAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAoZnVuIHYgLT4gY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgdi50eHQpXG4gICAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgIGluXG4gICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IE90YWcgKGxhYmVsLCB0KSAtPiBPdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgIGluXG4gICAgbG9vcCB0XG5lbmRcblxubW9kdWxlIFBhdCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjID0gZDtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBkLnBwYXRfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBwYXRfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhciBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYWxpYXMgKGEsIGIpKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0YW50IGEpXG4gIGxldCBpbnRlcnZhbCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9pbnRlcnZhbCAoYSwgYikpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdHVwbGUgYSlcblxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RydWN0IChhLCBPcHRpb24ubWFwIChmdW4gYiAtPiAoW10sIGIpKSBiKSlcblxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXJpYW50IChhLCBiKSlcbiAgbGV0IHJlY29yZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9yZWNvcmQgKGEsIGIpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FycmF5IGEpXG4gIGxldCBvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3IgKGEsIGIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCB0eXBlXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdHlwZSBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2xhenkgYSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdW5wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vcGVuIChhLCBiKSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4Y2VwdGlvbiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgRXhwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2MgPSBkO1xuICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGQucGV4cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lkZW50IGEpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RhbnQgYSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZnVuIChhLCBiLCBjLCBkKSlcbiAgbGV0IGZ1bmN0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZnVuY3Rpb24gYSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FwcGx5IChhLCBiKSlcbiAgbGV0IG1hdGNoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9tYXRjaCAoYSwgYikpXG4gIGxldCB0cnlfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3RyeSAoYSwgYikpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF92YXJpYW50IChhLCBiKSlcbiAgbGV0IHJlY29yZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9yZWNvcmQgKGEsIGIpKVxuICBsZXQgZmllbGQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZmllbGQgKGEsIGIpKVxuICBsZXQgc2V0ZmllbGQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXJyYXkgYSlcbiAgbGV0IGlmdGhlbmVsc2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSlcbiAgbGV0IHNlcXVlbmNlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NlcXVlbmNlIChhLCBiKSlcbiAgbGV0IHdoaWxlXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF93aGlsZSAoYSwgYikpXG4gIGxldCBmb3JfID9sb2MgP2F0dHJzIGEgYiBjIGQgZSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGNvZXJjZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvZXJjZSAoYSwgYiwgYykpXG4gIGxldCBzZW5kID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NlbmQgKGEsIGIpKVxuICBsZXQgbmV3XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3IGEpXG4gIGxldCBzZXRpbnN0dmFyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGluc3R2YXIgKGEsIGIpKVxuICBsZXQgb3ZlcnJpZGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX292ZXJyaWRlIGEpXG4gIGxldCBsZXRtb2R1bGUgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpKVxuICBsZXQgbGV0ZXhjZXB0aW9uID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikpXG4gIGxldCBhc3NlcnRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hc3NlcnQgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sYXp5IGEpXG4gIGxldCBwb2x5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BvbHkgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb2JqZWN0IGEpXG4gIGxldCBuZXd0eXBlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ld3R5cGUgKGEsIGIpKVxuICBsZXQgcGFjayA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3BlbiAoYSwgYikpXG5cbiAgbGV0IGxldG9wID9sb2MgP2F0dHJzIGxldF8gYW5kcyBib2R5ID1cbiAgICBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSlcblxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9leHRlbnNpb24gYSlcbiAgbGV0IHVucmVhY2hhYmxlID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUGV4cF91bnJlYWNoYWJsZVxuICBsZXQgY2FzZSBsaHMgP2d1YXJkIHJocyA9IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuXG4gIGxldCBiaW5kaW5nX29wIG9wIHBhdCBleHAgbG9jID1cbiAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE10eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbXR5X2Rlc2MgPSBkOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IGQucG10eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2lkZW50IGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfYWxpYXMgYSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV9mdW5jdG9yIChhLCBiKSlcbiAgbGV0IHdpdGhfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3dpdGggKGEsIGIpKVxuICBsZXQgdHlwZW9mXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfdHlwZW9mIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBNb2QgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG1vZF9kZXNjID0gZDsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBkLnBtb2RfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIHggPSBtayA/bG9jID9hdHRycyAoUG1vZF9pZGVudCB4KVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIHggPSBtayA/bG9jID9hdHRycyAoUG1vZF9zdHJ1Y3R1cmUgeClcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGFyZyBib2R5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZnVuY3RvciAoYXJnLCBib2R5KSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIG0xIG0yID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfYXBwbHkgKG0xLCBtMikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBtIG10eSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2NvbnN0cmFpbnQgKG0sIG10eSkpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgZSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3VucGFjayBlKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG1vZF9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgU2lnID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHNpZ19kZXNjID0gZDsgcHNpZ19sb2MgPSBsb2MgfVxuICBsZXQgdmFsdWUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ192YWx1ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHNpZ190eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX3N1YnN0ID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXN1YnN0IGEpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHVsZSBhKVxuICBsZXQgbW9kX3N1YnN0ID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kc3Vic3QgYSlcbiAgbGV0IHJlY19tb2R1bGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19yZWNtb2R1bGUgYSlcbiAgbGV0IG1vZHR5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R0eXBlIGEpXG4gIGxldCBvcGVuXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX29wZW4gYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfaW5jbHVkZSBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzc190eXBlIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc2lnX2V4dGVuc2lvbiAoYSwgYXR0cnMpKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfYXR0cmlidXRlIGEpXG5lbmRcblxubW9kdWxlIFN0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzdHJfZGVzYyA9IGQ7IHBzdHJfbG9jID0gbG9jIH1cbiAgbGV0IGV2YWwgP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc3RyX2V2YWwgKGEsIGF0dHJzKSlcbiAgbGV0IHZhbHVlID9sb2MgYSBiID0gbWsgP2xvYyAoUHN0cl92YWx1ZSAoYSwgYikpXG4gIGxldCBwcmltaXRpdmUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9wcmltaXRpdmUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzdHJfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl90eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9tb2R1bGUgYSlcbiAgbGV0IHJlY19tb2R1bGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9yZWNtb2R1bGUgYSlcbiAgbGV0IG1vZHR5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9tb2R0eXBlIGEpXG4gIGxldCBvcGVuXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX29wZW4gYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3NfdHlwZSBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9pbmNsdWRlIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc3RyX2V4dGVuc2lvbiAoYSwgYXR0cnMpKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfYXR0cmlidXRlIGEpXG5lbmRcblxubW9kdWxlIENsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjbF9kZXNjID0gZDsgcGNsX2xvYyA9IGxvYzsgcGNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBkLnBjbF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfY29uc3RyIChhLCBiKSlcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9zdHJ1Y3R1cmUgYSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY2xfZnVuIChhLCBiLCBjLCBkKSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfYXBwbHkgKGEsIGIpKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2xfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX29wZW4gKGEsIGIpKVxuZW5kXG5cbm1vZHVsZSBDdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGN0eV9kZXNjID0gZDsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBkLnBjdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9jb25zdHIgKGEsIGIpKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0eV9zaWduYXR1cmUgYSlcbiAgbGV0IGFycm93ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfYXJyb3cgKGEsIGIsIGMpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0eV9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X29wZW4gKGEsIGIpKVxuZW5kXG5cbm1vZHVsZSBDdGYgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGN0Zl9kZXNjID0gZDsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2luaGVyaXQgYSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX3ZhbCAoYSwgYiwgYywgZCkpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9tZXRob2QgKGEsIGIsIGMsIGQpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjdGZfYXR0cmlidXRlIGEpXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGQucGN0Zl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBDZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2ZfZGVzYyA9IGQ7IHBjZl9sb2MgPSBsb2M7IHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfaW5oZXJpdCAoYSwgYiwgYykpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl92YWwgKGEsIGIsIGMpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfbWV0aG9kIChhLCBiLCBjKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2ZfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBpbml0aWFsaXplcl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfaW5pdGlhbGl6ZXIgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY2ZfYXR0cmlidXRlIGEpXG4gIGxldCB2aXJ0dWFsXyBjdCA9IENma192aXJ0dWFsIGN0XG4gIGxldCBjb25jcmV0ZSBvIGUgPSBDZmtfY29uY3JldGUgKG8sIGUpXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gZC5wY2ZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgVmFsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHByaW0gPSBbXSkgbmFtZSB0eXAgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICBwdmFsX3R5cGUgPSB0eXA7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB2YWxfbG9jID0gbG9jO1xuICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICB9XG5lbmRcblxubW9kdWxlIE1kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHR5cCA9XG4gICAgeyBwbWRfbmFtZSA9IG5hbWU7IHBtZF90eXBlID0gdHlwOyBwbWRfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWRfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXMgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgc3luID1cbiAgICB7XG4gICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICBwbXNfbWFuaWZlc3QgPSBzeW47XG4gICAgICBwbXNfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG1zX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIE10ZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgP3R5cCBuYW1lID1cbiAgICB7XG4gICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgcG10ZF90eXBlID0gdHlwO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXRkX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIE1iID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGV4cHIgPVxuICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtYl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBPcG4gPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ob3ZlcnJpZGUgPSBGcmVzaCkgZXhwciA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgSW5jbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbWV4cHIgPVxuICAgIHsgcGluY2xfbW9kID0gbWV4cHI7IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbmVuZFxuXG5tb2R1bGUgVmIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIHBhdCBleHByID1cbiAgICB7IHB2Yl9wYXQgPSBwYXQ7IHB2Yl9leHByID0gZXhwcjsgcHZiX2F0dHJpYnV0ZXMgPSBhdHRyczsgcHZiX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIENpID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZpcnQgPSBDb25jcmV0ZSkgPyhwYXJhbXMgPSBbXSlcbiAgICAgIG5hbWUgZXhwciA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwY2lfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgVHlwZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhjc3RycyA9IFtdKVxuICAgICAgPyhraW5kID0gUHR5cGVfYWJzdHJhY3QpID8ocHJpdiA9IFB1YmxpYykgP21hbmlmZXN0IG5hbWUgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXY7XG4gICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHR5cGVfbG9jID0gbG9jO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBmaWVsZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG11dCA9IEltbXV0YWJsZSkgbmFtZSB0eXAgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgIHBsZF9tdXRhYmxlID0gbXV0O1xuICAgICAgcGxkX3R5cGUgPSB0eXA7XG4gICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxuKCoqIFR5cGUgZXh0ZW5zaW9ucyAqKVxubW9kdWxlIFRlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KHByaXYgPSBQdWJsaWMpXG4gICAgICBwYXRoIGNvbnN0cnVjdG9ycyA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXY7XG4gICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IG1rX2V4Y2VwdGlvbiA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBjb25zdHJ1Y3RvciA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUga2luZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZGVjbCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X2RlY2wgKHZhcnMsIGFyZ3MsIHJlcyk7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgcmViaW5kID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgbGlkID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9yZWJpbmQgbGlkO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIENzaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG5tb2R1bGUgQ3N0ciA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbigqKiBSb3cgZmllbGRzICopXG5tb2R1bGUgUmYgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGRlc2MgPVxuICAgIHsgcHJmX2Rlc2MgPSBkZXNjOyBwcmZfbG9jID0gbG9jOyBwcmZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgdGFnID9sb2MgP2F0dHJzIGxhYmVsIGNvbnN0IHR5cyA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFJ0YWcgKGxhYmVsLCBjb25zdCwgdHlzKSlcblxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKFJpbmhlcml0IHR5KVxuZW5kXG5cbigqKiBPYmplY3QgZmllbGRzICopXG5tb2R1bGUgT2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGRlc2MgPVxuICAgIHsgcG9mX2Rlc2MgPSBkZXNjOyBwb2ZfbG9jID0gbG9jOyBwb2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgdGFnID9sb2MgP2F0dHJzIGxhYmVsIHR5ID0gbWsgP2xvYyA/YXR0cnMgKE90YWcgKGxhYmVsLCB0eSkpXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoT2luaGVyaXQgdHkpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJFR0lOIG9mIEJMQUNLIE1BR0lDICopXG4oKiQgb3BlbiBBc3RfY2luYXBzX2hlbHBlcnMgJCopXG5cbnR5cGUgXyB3aXRuZXNzZXMgPSAuLlxuXG50eXBlIF8gbWlncmF0aW9uID0gLi5cbnR5cGUgXyBtaWdyYXRpb24gKz0gVW5kZWZpbmVkIDogXyBtaWdyYXRpb25cblxudHlwZSAnYSBtaWdyYXRpb25faW5mbyA9IHtcbiAgbXV0YWJsZSBuZXh0X3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG4gIG11dGFibGUgcHJldmlvdXNfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbn1cblxuKCoqIEFic3RyYWN0IHZpZXcgb2YgYSB2ZXJzaW9uIG9mIGFuIE9DYW1sIEFzdCAqKVxubW9kdWxlIHR5cGUgQXN0ID0gc2lnXG4gICgqJCBmb3JlYWNoX21vZHVsZSAoZnVuIG0gdHlwZXMgLT5cbiAgICAgIHByaW50ZiBcIiAgbW9kdWxlICVzIDogc2lnXFxuXCIgbTtcbiAgICAgIExpc3QuaXRlciB0eXBlcyB+ZjoocHJpbnRmIFwiICAgIHR5cGUgJXNcXG5cIik7XG4gICAgICBwcmludGYgXCIgIGVuZFxcblwiXG4gICAgKVxuICAqKVxuICBtb2R1bGUgUGFyc2V0cmVlIDogc2lnXG4gICAgdHlwZSBzdHJ1Y3R1cmVcbiAgICB0eXBlIHNpZ25hdHVyZVxuICAgIHR5cGUgdG9wbGV2ZWxfcGhyYXNlXG4gICAgdHlwZSBjb3JlX3R5cGVcbiAgICB0eXBlIGV4cHJlc3Npb25cbiAgICB0eXBlIHBhdHRlcm5cbiAgICB0eXBlIGNhc2VcbiAgICB0eXBlIHR5cGVfZGVjbGFyYXRpb25cbiAgICB0eXBlIHR5cGVfZXh0ZW5zaW9uXG4gICAgdHlwZSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICB0eXBlIGNsYXNzX2V4cHJcbiAgICB0eXBlIGNsYXNzX2ZpZWxkXG4gICAgdHlwZSBjbGFzc190eXBlXG4gICAgdHlwZSBjbGFzc19zaWduYXR1cmVcbiAgICB0eXBlIGNsYXNzX3R5cGVfZmllbGRcbiAgICB0eXBlIG1vZHVsZV9leHByXG4gICAgdHlwZSBtb2R1bGVfdHlwZVxuICAgIHR5cGUgc2lnbmF0dXJlX2l0ZW1cbiAgICB0eXBlIHN0cnVjdHVyZV9pdGVtXG4gIGVuZFxuKCokKilcbiAgbW9kdWxlIENvbmZpZyA6IHNpZ1xuICAgIHZhbCBhc3RfaW1wbF9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgICB2YWwgYXN0X2ludGZfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gIGVuZFxuZW5kXG5cbigqIFNob3J0Y3V0cyBmb3IgdGFsa2luZyBhYm91dCBhc3QgdHlwZXMgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbnR5cGUgJ2EgX3R5cGVzID0gJ2EgY29uc3RyYWludCAnYVxuICA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IF87XFxuXCIgcykgKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogXztcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBfO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IF87XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogXztcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBfO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IF87XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogXztcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBfO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogXztcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogXztcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBfO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogXztcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBfO1xuKCokKilcbiAgPlxuOztcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgIHByaW50ZiBcInR5cGUgJ2EgZ2V0XyVzID1cXG5cIiBzO1xuICAgIHByaW50ZiBcIiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8ICVzIDogJ3g7IC4uID5cXG5cIiBzXG4gICkgKilcbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzdHJ1Y3R1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90b3BsZXZlbF9waHJhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdG9wbGV2ZWxfcGhyYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NvcmVfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjb3JlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXhwcmVzc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBleHByZXNzaW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3BhdHRlcm4gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgcGF0dGVybiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2RlY2xhcmF0aW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZXh0ZW5zaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZXh0ZW5zaW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBleHRlbnNpb25fY29uc3RydWN0b3IgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZXhwciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3Nfc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3R5cGVfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfdHlwZV9maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9tb2R1bGVfZXhwciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBtb2R1bGVfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9tb2R1bGVfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBtb2R1bGVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmVfaXRlbSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmVfaXRlbSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zdHJ1Y3R1cmVfaXRlbSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzdHJ1Y3R1cmVfaXRlbSA6ICd4OyAuLiA+XG4oKiQqKVxuXG5tb2R1bGUgdHlwZSBPQ2FtbF92ZXJzaW9uID0gc2lnXG4gIG1vZHVsZSBBc3QgOiBBc3RcbiAgdmFsIHZlcnNpb24gOiBpbnRcbiAgdmFsIHN0cmluZ192ZXJzaW9uIDogc3RyaW5nXG4gIHR5cGUgdHlwZXMgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBBc3QuJXMuJXM7XFxuXCIgcyBtIHMpKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZTtcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZTtcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZTtcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZTtcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5wYXR0ZXJuO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2FzZTtcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb247XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbjtcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHI7XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZDtcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGU7XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmU7XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHI7XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZTtcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICA+IF90eXBlc1xuICB0eXBlIF8gd2l0bmVzc2VzICs9IFZlcnNpb24gOiB0eXBlcyB3aXRuZXNzZXNcbiAgdmFsIG1pZ3JhdGlvbl9pbmZvIDogdHlwZXMgbWlncmF0aW9uX2luZm9cbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRuZXNzKEFzdCA6IEFzdCkgPVxuc3RydWN0XG4gIHR5cGUgdHlwZXMgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBBc3QuJXMuJXM7XFxuXCIgcyBtIHMpKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZTtcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZTtcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZTtcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZTtcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5wYXR0ZXJuO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2FzZTtcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb247XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbjtcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHI7XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZDtcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGU7XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmU7XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHI7XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZTtcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICA+IF90eXBlc1xuICB0eXBlIF8gd2l0bmVzc2VzICs9IFZlcnNpb24gOiB0eXBlcyB3aXRuZXNzZXNcbiAgbGV0IG1pZ3JhdGlvbl9pbmZvIDogdHlwZXMgbWlncmF0aW9uX2luZm8gPVxuICAgIHsgbmV4dF92ZXJzaW9uID0gVW5kZWZpbmVkOyBwcmV2aW91c192ZXJzaW9uID0gVW5kZWZpbmVkIH1cbmVuZFxuXG50eXBlICd0eXBlcyBvY2FtbF92ZXJzaW9uID1cbiAgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uXG4gICAgKCokIGxldCBzZXAgPSB3aXRoX3RoZW5fYW5kICgpIGluXG4gICAgICBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT5cbiAgICAgICAgICBwcmludGYgXCIgICAgJXQgdHlwZSBBc3QuJXMuJXMgPSAndHlwZXMgZ2V0XyVzXFxuXCIgc2VwIG0gcyBzKSAqKVxuICAgIHdpdGggdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSA9ICd0eXBlcyBnZXRfc3RydWN0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSAndHlwZXMgZ2V0X3RvcGxldmVsX3BocmFzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSA9ICd0eXBlcyBnZXRfY29yZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9ICd0eXBlcyBnZXRfZXhwcmVzc2lvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnBhdHRlcm4gPSAndHlwZXMgZ2V0X3BhdHRlcm5cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jYXNlID0gJ3R5cGVzIGdldF9jYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9ICd0eXBlcyBnZXRfdHlwZV9kZWNsYXJhdGlvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0gJ3R5cGVzIGdldF90eXBlX2V4dGVuc2lvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9ICd0eXBlcyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9ICd0eXBlcyBnZXRfY2xhc3NfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc19maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSAndHlwZXMgZ2V0X2NsYXNzX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPSAndHlwZXMgZ2V0X2NsYXNzX3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9ICd0eXBlcyBnZXRfbW9kdWxlX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9ICd0eXBlcyBnZXRfbW9kdWxlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlX2l0ZW1cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9ICd0eXBlcyBnZXRfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gIClcblxudHlwZSAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lczogJ2Zyb20gZ2V0XyVzIC0+ICd0b18gZ2V0XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZTogJ2Zyb20gZ2V0X3N0cnVjdHVyZSAtPiAndG9fIGdldF9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlOiAnZnJvbSBnZXRfc2lnbmF0dXJlIC0+ICd0b18gZ2V0X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2U6ICdmcm9tIGdldF90b3BsZXZlbF9waHJhc2UgLT4gJ3RvXyBnZXRfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZTogJ2Zyb20gZ2V0X2NvcmVfdHlwZSAtPiAndG9fIGdldF9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbjogJ2Zyb20gZ2V0X2V4cHJlc3Npb24gLT4gJ3RvXyBnZXRfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuOiAnZnJvbSBnZXRfcGF0dGVybiAtPiAndG9fIGdldF9wYXR0ZXJuO1xuICBjb3B5X2Nhc2U6ICdmcm9tIGdldF9jYXNlIC0+ICd0b18gZ2V0X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjogJ2Zyb20gZ2V0X3R5cGVfZGVjbGFyYXRpb24gLT4gJ3RvXyBnZXRfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbjogJ2Zyb20gZ2V0X3R5cGVfZXh0ZW5zaW9uIC0+ICd0b18gZ2V0X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjogJ2Zyb20gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAndG9fIGdldF9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwcjogJ2Zyb20gZ2V0X2NsYXNzX2V4cHIgLT4gJ3RvXyBnZXRfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGU6ICdmcm9tIGdldF9jbGFzc190eXBlIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlOiAnZnJvbSBnZXRfY2xhc3Nfc2lnbmF0dXJlIC0+ICd0b18gZ2V0X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfdHlwZV9maWVsZCAtPiAndG9fIGdldF9jbGFzc190eXBlX2ZpZWxkO1xuICBjb3B5X21vZHVsZV9leHByOiAnZnJvbSBnZXRfbW9kdWxlX2V4cHIgLT4gJ3RvXyBnZXRfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGU6ICdmcm9tIGdldF9tb2R1bGVfdHlwZSAtPiAndG9fIGdldF9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbTogJ2Zyb20gZ2V0X3NpZ25hdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3NpZ25hdHVyZV9pdGVtO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtOiAnZnJvbSBnZXRfc3RydWN0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG5sZXQgaWQgeCA9IHhcbmxldCBtaWdyYXRpb25faWRlbnRpdHkgOiAoJ2EsICdhKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgY29weV8lcyA9IGlkO1xcblwiIHMpICopXG4gIGNvcHlfc3RydWN0dXJlID0gaWQ7XG4gIGNvcHlfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlID0gaWQ7XG4gIGNvcHlfY29yZV90eXBlID0gaWQ7XG4gIGNvcHlfZXhwcmVzc2lvbiA9IGlkO1xuICBjb3B5X3BhdHRlcm4gPSBpZDtcbiAgY29weV9jYXNlID0gaWQ7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA9IGlkO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uID0gaWQ7XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gaWQ7XG4gIGNvcHlfY2xhc3NfZXhwciA9IGlkO1xuICBjb3B5X2NsYXNzX2ZpZWxkID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZSA9IGlkO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQgPSBpZDtcbiAgY29weV9tb2R1bGVfZXhwciA9IGlkO1xuICBjb3B5X21vZHVsZV90eXBlID0gaWQ7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW0gPSBpZDtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSA9IGlkO1xuKCokKilcbn1cblxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgbWlncmF0aW9uX2NvbXBvc2UgKGFiIDogKCdhLCAnYikgbWlncmF0aW9uX2Z1bmN0aW9ucykgKGJjIDogKCdiLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucykgOiAoJ2EsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJS0yMXMgPSBjb21wb3NlIGJjLmNvcHlfJS0yMXMgYWIuY29weV8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmUgICAgICAgICAgICAgYWIuY29weV9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICBhYi5jb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY29yZV90eXBlICAgICAgICAgICAgIGFiLmNvcHlfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9leHByZXNzaW9uICAgICAgICAgICAgYWIuY29weV9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm4gICAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgYWIuY29weV9wYXR0ZXJuO1xuICBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jYXNlICAgICAgICAgICAgICAgICAgYWIuY29weV9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICA9IGNvbXBvc2UgYmMuY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgYWIuY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICA9IGNvbXBvc2UgYmMuY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgYWIuY29weV90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBjb21wb3NlIGJjLmNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGFiLmNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19leHByICAgICAgICAgICAgYWIuY29weV9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19maWVsZCAgICAgICAgICAgYWIuY29weV9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgIGFiLmNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgYWIuY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICBjb3B5X21vZHVsZV9leHByICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgYWIuY29weV9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZV9pdGVtO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbnR5cGUgXyBtaWdyYXRpb24gKz0gTWlncmF0aW9uIDogJ2Zyb20gb2NhbWxfdmVyc2lvbiAqICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyAqICd0b18gb2NhbWxfdmVyc2lvbiAtPiAnZnJvbSBtaWdyYXRpb25cblxubW9kdWxlIHR5cGUgTWlncmF0ZV9tb2R1bGUgPSBzaWdcbiAgbW9kdWxlIEZyb20gOiBBc3RcbiAgbW9kdWxlIFRvIDogQXN0XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgdmFsIGNvcHlfJS0yMXM6IEZyb20uJXMuJXMgLT4gVG8uJXMuJXNcXG5cIiBzIG0gcyBtIHMpICopXG4gIHZhbCBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZVxuICB2YWwgY29weV90b3BsZXZlbF9waHJhc2UgICAgICA6IEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gIHZhbCBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgdmFsIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uXG4gIHZhbCBjb3B5X3BhdHRlcm4gICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVyblxuICB2YWwgY29weV9jYXNlICAgICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2VcbiAgdmFsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gIHZhbCBjb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gIHZhbCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgdmFsIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByXG4gIHZhbCBjb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gIHZhbCBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICB2YWwgY29weV9jbGFzc19zaWduYXR1cmUgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gIHZhbCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICB2YWwgY29weV9tb2R1bGVfZXhwciAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICB2YWwgY29weV9tb2R1bGVfdHlwZSAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICB2YWwgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICB2YWwgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbmVuZFxuXG5tb2R1bGUgTWlncmF0aW9uX2Z1bmN0aW9uc1xuICAgIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuPVxuc3RydWN0XG4gIGxldCBtaWdyYXRpb25fZnVuY3Rpb25zIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIGxldCBvcGVuIEFfdG9fQiBpblxuICAgIHtcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAgY29weV8lcztcXG5cIiBzKSAqKVxuICAgICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICAgICAgY29weV9jb3JlX3R5cGU7XG4gICAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgICBjb3B5X3BhdHRlcm47XG4gICAgICBjb3B5X2Nhc2U7XG4gICAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgICBjb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgICBjb3B5X2NsYXNzX2ZpZWxkO1xuICAgICAgY29weV9jbGFzc190eXBlO1xuICAgICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gICAgICBjb3B5X21vZHVsZV9leHByO1xuICAgICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gICAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICB9XG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyX21pZ3JhdGlvbiAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbiAgICAoQl90b19BIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEIuQXN0IGFuZCBtb2R1bGUgVG8gPSBBLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgKCkgPSAoXG4gICAgbGV0IGlzX3VuZGVmaW5lZCA6IHR5cGUgYS4gYSBtaWdyYXRpb24gLT4gYm9vbCA9IGZ1bmN0aW9uXG4gICAgICB8IFVuZGVmaW5lZCAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGFzc2VydCAoQS52ZXJzaW9uIDwgQi52ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uKTtcbiAgICBsZXQgbW9kdWxlIEFfdG9fQl9mdW4gPSBNaWdyYXRpb25fZnVuY3Rpb25zKEEpKEIpKEFfdG9fQikgaW5cbiAgICBsZXQgbW9kdWxlIEJfdG9fQV9mdW4gPSBNaWdyYXRpb25fZnVuY3Rpb25zKEIpKEEpKEJfdG9fQSkgaW5cbiAgICBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvbiA8LVxuICAgICAgTWlncmF0aW9uICgobW9kdWxlIEEpLCBBX3RvX0JfZnVuLm1pZ3JhdGlvbl9mdW5jdGlvbnMsIChtb2R1bGUgQikpO1xuICAgIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbiA8LVxuICAgICAgTWlncmF0aW9uICgobW9kdWxlIEIpLCBCX3RvX0FfZnVuLm1pZ3JhdGlvbl9mdW5jdGlvbnMsIChtb2R1bGUgQSkpO1xuICApXG5lbmRcblxudHlwZSAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uID1cbiAgfCBOb19taWdyYXRpb24gOiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG4gIHwgSW1tZWRpYXRlX21pZ3JhdGlvblxuICAgIDogICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyAqICd0b18gb2NhbWxfdmVyc2lvblxuICAgICAgLT4gJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuXG5sZXQgaW1tZWRpYXRlX21pZ3JhdGlvblxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzKVxcblwiIHMpICopXG4gICAgKHR5cGUgc3RydWN0dXJlKVxuICAgICh0eXBlIHNpZ25hdHVyZSlcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UpXG4gICAgKHR5cGUgY29yZV90eXBlKVxuICAgICh0eXBlIGV4cHJlc3Npb24pXG4gICAgKHR5cGUgcGF0dGVybilcbiAgICAodHlwZSBjYXNlKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24pXG4gICAgKHR5cGUgdHlwZV9leHRlbnNpb24pXG4gICAgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgICh0eXBlIGNsYXNzX2V4cHIpXG4gICAgKHR5cGUgY2xhc3NfZmllbGQpXG4gICAgKHR5cGUgY2xhc3NfdHlwZSlcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUpXG4gICAgKHR5cGUgY2xhc3NfdHlwZV9maWVsZClcbiAgICAodHlwZSBtb2R1bGVfZXhwcilcbiAgICAodHlwZSBtb2R1bGVfdHlwZSlcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbSlcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbSlcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmICBcIiAgICAgJS0yMXMgOiAlcztcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2U7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb247XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQ7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGU7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gICAgZGlyZWN0aW9uXG4gID1cbiAgbGV0IHZlcnNpb24gPSBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICAgIHwgYE5leHQgLT4gQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb25cbiAgICB8IGBQcmV2aW91cyAtPiBBLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb25cbiAgaW5cbiAgbWF0Y2ggdmVyc2lvbiB3aXRoXG4gIHwgVW5kZWZpbmVkIC0+IE5vX21pZ3JhdGlvblxuICB8IE1pZ3JhdGlvbiAoXywgZnVucywgdG9fKSAtPiBJbW1lZGlhdGVfbWlncmF0aW9uIChmdW5zLCB0b18pXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG1pZ3JhdGVcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlczEpICh0eXBlICVzMilcXG5cIiBzIHMpICopXG4gICAgKHR5cGUgc3RydWN0dXJlMSkgKHR5cGUgc3RydWN0dXJlMilcbiAgICAodHlwZSBzaWduYXR1cmUxKSAodHlwZSBzaWduYXR1cmUyKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZTEpICh0eXBlIHRvcGxldmVsX3BocmFzZTIpXG4gICAgKHR5cGUgY29yZV90eXBlMSkgKHR5cGUgY29yZV90eXBlMilcbiAgICAodHlwZSBleHByZXNzaW9uMSkgKHR5cGUgZXhwcmVzc2lvbjIpXG4gICAgKHR5cGUgcGF0dGVybjEpICh0eXBlIHBhdHRlcm4yKVxuICAgICh0eXBlIGNhc2UxKSAodHlwZSBjYXNlMilcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMSkgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjIpXG4gICAgKHR5cGUgdHlwZV9leHRlbnNpb24xKSAodHlwZSB0eXBlX2V4dGVuc2lvbjIpXG4gICAgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMSkgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMilcbiAgICAodHlwZSBjbGFzc19leHByMSkgKHR5cGUgY2xhc3NfZXhwcjIpXG4gICAgKHR5cGUgY2xhc3NfZmllbGQxKSAodHlwZSBjbGFzc19maWVsZDIpXG4gICAgKHR5cGUgY2xhc3NfdHlwZTEpICh0eXBlIGNsYXNzX3R5cGUyKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZTEpICh0eXBlIGNsYXNzX3NpZ25hdHVyZTIpXG4gICAgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDEpICh0eXBlIGNsYXNzX3R5cGVfZmllbGQyKVxuICAgICh0eXBlIG1vZHVsZV9leHByMSkgKHR5cGUgbW9kdWxlX2V4cHIyKVxuICAgICh0eXBlIG1vZHVsZV90eXBlMSkgKHR5cGUgbW9kdWxlX3R5cGUyKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtMSkgKHR5cGUgc2lnbmF0dXJlX2l0ZW0yKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtMSkgKHR5cGUgc3RydWN0dXJlX2l0ZW0yKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMxO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMTtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMTtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjE7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4xO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMTtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjE7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMTtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMTtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjE7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMTtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTE7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTE7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQxO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjE7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0xO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTE7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gICAgKChtb2R1bGUgQikgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMjtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTI7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTI7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTI7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTI7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24yO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMjtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTI7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24yO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjI7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjI7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIyO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDI7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUyO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUyO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMjtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIyO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTI7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMjtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0yO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zXG4gID1cbiAgbWF0Y2ggQS5WZXJzaW9uIHdpdGhcbiAgfCBCLlZlcnNpb24gLT4gbWlncmF0aW9uX2lkZW50aXR5XG4gIHwgXyAtPlxuICAgIGxldCBkaXJlY3Rpb24gPSBpZiBBLnZlcnNpb24gPCBCLnZlcnNpb24gdGhlbiBgTmV4dCBlbHNlIGBQcmV2aW91cyBpblxuICAgIGxldCByZWMgbWlncmF0ZSAobSA6IEEudHlwZXMgaW1tZWRpYXRlX21pZ3JhdGlvbikgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgIHwgTm9fbWlncmF0aW9uIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChmLCAobW9kdWxlIFRvKSkgLT5cbiAgICAgICAgbWF0Y2ggVG8uVmVyc2lvbiB3aXRoXG4gICAgICAgIHwgQi5WZXJzaW9uIC0+IGZcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbWF0Y2ggaW1tZWRpYXRlX21pZ3JhdGlvbiAobW9kdWxlIFRvKSBkaXJlY3Rpb24gd2l0aFxuICAgICAgICAgIHwgTm9fbWlncmF0aW9uIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZywgdG8yKSAtPlxuICAgICAgICAgICAgbWlncmF0ZSAoSW1tZWRpYXRlX21pZ3JhdGlvbiAobWlncmF0aW9uX2NvbXBvc2UgZiBnLCB0bzIpKVxuICAgIGluXG4gICAgbWlncmF0ZSAoaW1tZWRpYXRlX21pZ3JhdGlvbiAobW9kdWxlIEEpIGRpcmVjdGlvbilcblxubW9kdWxlIENvbnZlcnQgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGxldCB7XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgY29weV8lcztcXG5cIiBzKSAqKVxuICAgIGNvcHlfc3RydWN0dXJlO1xuICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgIGNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcHlfY29yZV90eXBlO1xuICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICBjb3B5X3BhdHRlcm47XG4gICAgY29weV9jYXNlO1xuICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICBjb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICBjb3B5X2NsYXNzX2ZpZWxkO1xuICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgIGNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gIH0gOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbWlncmF0ZSAobW9kdWxlIEEpIChtb2R1bGUgQilcbmVuZFxuXG4oKiQgZm9yZWFjaF92ZXJzaW9uIChmdW4gbiB2ZXJzaW9uIC0+XG4gICAgcHJpbnRmIFwibW9kdWxlIE9DYW1sXyVkID0gc3RydWN0XFxuXCIgbjtcbiAgICBwcmludGYgXCIgIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XyVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfJWQpXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCB2ZXJzaW9uID0gJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHN0cmluZ192ZXJzaW9uID0gJVNcXG5cIiB2ZXJzaW9uO1xuICAgIHByaW50ZiBcImVuZFxcblwiO1xuICAgIHByaW50ZiBcImxldCBvY2FtbF8lZCA6IE9DYW1sXyVkLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXyVkKVxcblwiXG4gICAgICBuIG4gbjtcbiAgKVxuKilcbm1vZHVsZSBPQ2FtbF80MDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDAyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDAyKVxuICBsZXQgdmVyc2lvbiA9IDQwMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDJcIlxuZW5kXG5sZXQgb2NhbWxfNDAyIDogT0NhbWxfNDAyLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwMilcbm1vZHVsZSBPQ2FtbF80MDMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDAzXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDAzKVxuICBsZXQgdmVyc2lvbiA9IDQwM1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDNcIlxuZW5kXG5sZXQgb2NhbWxfNDAzIDogT0NhbWxfNDAzLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwMylcbm1vZHVsZSBPQ2FtbF80MDQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA0XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA0KVxuICBsZXQgdmVyc2lvbiA9IDQwNFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDRcIlxuZW5kXG5sZXQgb2NhbWxfNDA0IDogT0NhbWxfNDA0LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNClcbm1vZHVsZSBPQ2FtbF80MDUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA1XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA1KVxuICBsZXQgdmVyc2lvbiA9IDQwNVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDVcIlxuZW5kXG5sZXQgb2NhbWxfNDA1IDogT0NhbWxfNDA1LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNSlcbm1vZHVsZSBPQ2FtbF80MDYgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA2XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA2KVxuICBsZXQgdmVyc2lvbiA9IDQwNlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDZcIlxuZW5kXG5sZXQgb2NhbWxfNDA2IDogT0NhbWxfNDA2LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNilcbm1vZHVsZSBPQ2FtbF80MDcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA3XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA3KVxuICBsZXQgdmVyc2lvbiA9IDQwN1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDdcIlxuZW5kXG5sZXQgb2NhbWxfNDA3IDogT0NhbWxfNDA3LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNylcbm1vZHVsZSBPQ2FtbF80MDggPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA4XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA4KVxuICBsZXQgdmVyc2lvbiA9IDQwOFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDhcIlxuZW5kXG5sZXQgb2NhbWxfNDA4IDogT0NhbWxfNDA4LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwOClcbm1vZHVsZSBPQ2FtbF80MDkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA5XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA5KVxuICBsZXQgdmVyc2lvbiA9IDQwOVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDlcIlxuZW5kXG5sZXQgb2NhbWxfNDA5IDogT0NhbWxfNDA5LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwOSlcbm1vZHVsZSBPQ2FtbF80MTAgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEwXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEwKVxuICBsZXQgdmVyc2lvbiA9IDQxMFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTBcIlxuZW5kXG5sZXQgb2NhbWxfNDEwIDogT0NhbWxfNDEwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMClcbm1vZHVsZSBPQ2FtbF80MTEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDExXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDExKVxuICBsZXQgdmVyc2lvbiA9IDQxMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTFcIlxuZW5kXG5sZXQgb2NhbWxfNDExIDogT0NhbWxfNDExLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMSlcbm1vZHVsZSBPQ2FtbF80MTIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEyKVxuICBsZXQgdmVyc2lvbiA9IDQxMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTJcIlxuZW5kXG5sZXQgb2NhbWxfNDEyIDogT0NhbWxfNDEyLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMilcbm1vZHVsZSBPQ2FtbF80MTMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEzXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEzKVxuICBsZXQgdmVyc2lvbiA9IDQxM1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTNcIlxuZW5kXG5sZXQgb2NhbWxfNDEzIDogT0NhbWxfNDEzLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMylcbm1vZHVsZSBPQ2FtbF80MTQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDE0XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDE0KVxuICBsZXQgdmVyc2lvbiA9IDQxNFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTRcIlxuZW5kXG5sZXQgb2NhbWxfNDE0IDogT0NhbWxfNDE0LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxNClcbm1vZHVsZSBPQ2FtbF81MDAgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAwXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAwKVxuICBsZXQgdmVyc2lvbiA9IDUwMFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMFwiXG5lbmRcbmxldCBvY2FtbF81MDAgOiBPQ2FtbF81MDAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAwKVxubW9kdWxlIE9DYW1sXzUwMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDEpXG4gIGxldCB2ZXJzaW9uID0gNTAxXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4xXCJcbmVuZFxubGV0IG9jYW1sXzUwMSA6IE9DYW1sXzUwMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDEpXG5tb2R1bGUgT0NhbWxfNTAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMilcbiAgbGV0IHZlcnNpb24gPSA1MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjJcIlxuZW5kXG5sZXQgb2NhbWxfNTAyIDogT0NhbWxfNTAyLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMilcbm1vZHVsZSBPQ2FtbF81MDMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAzXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAzKVxuICBsZXQgdmVyc2lvbiA9IDUwM1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuM1wiXG5lbmRcbmxldCBvY2FtbF81MDMgOiBPQ2FtbF81MDMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAzKVxuKCokKilcblxubGV0IGFsbF92ZXJzaW9ucyA6IChtb2R1bGUgT0NhbWxfdmVyc2lvbikgbGlzdCA9IFtcbiAgKCokZm9yZWFjaF92ZXJzaW9uIChmdW4gbiBfIC0+XG4gICAgICBwcmludGYgXCIobW9kdWxlIE9DYW1sXyVkIDogT0NhbWxfdmVyc2lvbik7XFxuXCIgbikqKVxuKG1vZHVsZSBPQ2FtbF80MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDAzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDUgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA2IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDggOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA5IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTEgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAzIDogT0NhbWxfdmVyc2lvbik7XG4oKiQqKVxuXVxuXG4oKiRmb3JlYWNoX3ZlcnNpb25fcGFpciAoZnVuIGEgYiAtPlxuICAgIHByaW50ZiBcImluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXyVkKShPQ2FtbF8lZClcXG5cIiBhIGI7XG4gICAgcHJpbnRmIFwiICAgIChBc3RsaWIuTWlncmF0ZV8lZF8lZCkoQXN0bGliLk1pZ3JhdGVfJWRfJWQpXFxuXCIgYSBiIGIgYVxuICApXG4qKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAyKShPQ2FtbF80MDMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwMl80MDMpKEFzdGxpYi5NaWdyYXRlXzQwM180MDIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDMpKE9DYW1sXzQwNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAzXzQwNCkoQXN0bGliLk1pZ3JhdGVfNDA0XzQwMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNCkoT0NhbWxfNDA1KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDRfNDA1KShBc3RsaWIuTWlncmF0ZV80MDVfNDA0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA1KShPQ2FtbF80MDYpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNV80MDYpKEFzdGxpYi5NaWdyYXRlXzQwNl80MDUpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDYpKE9DYW1sXzQwNylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNykoQXN0bGliLk1pZ3JhdGVfNDA3XzQwNilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNykoT0NhbWxfNDA4KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDdfNDA4KShBc3RsaWIuTWlncmF0ZV80MDhfNDA3KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA4KShPQ2FtbF80MDkpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOF80MDkpKEFzdGxpYi5NaWdyYXRlXzQwOV80MDgpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDkpKE9DYW1sXzQxMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA5XzQxMCkoQXN0bGliLk1pZ3JhdGVfNDEwXzQwOSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMCkoT0NhbWxfNDExKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTBfNDExKShBc3RsaWIuTWlncmF0ZV80MTFfNDEwKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDExKShPQ2FtbF80MTIpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMV80MTIpKEFzdGxpYi5NaWdyYXRlXzQxMl80MTEpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTIpKE9DYW1sXzQxMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMykoQXN0bGliLk1pZ3JhdGVfNDEzXzQxMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMykoT0NhbWxfNDE0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTNfNDE0KShBc3RsaWIuTWlncmF0ZV80MTRfNDEzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDE0KShPQ2FtbF81MDApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxNF81MDApKEFzdGxpYi5NaWdyYXRlXzUwMF80MTQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF81MDApKE9DYW1sXzUwMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNTAwXzUwMSkoQXN0bGliLk1pZ3JhdGVfNTAxXzUwMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzUwMSkoT0NhbWxfNTAyKVxuICAgIChBc3RsaWIuTWlncmF0ZV81MDFfNTAyKShBc3RsaWIuTWlncmF0ZV81MDJfNTAxKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAyKShPQ2FtbF81MDMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMl81MDMpKEFzdGxpYi5NaWdyYXRlXzUwM181MDIpXG4oKiQqKVxuXG5tb2R1bGUgT0NhbWxfY3VycmVudCA9IE9DYW1sX09DQU1MX1ZFUlNJT05cblxubW9kdWxlIEZpbmRfdmVyc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbXBsIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBJbnRmIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBVbmtub3duXG5cbiAgbGV0IGZyb21fbWFnaWMgbWFnaWMgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFVua25vd25cbiAgICAgIHwgKG1vZHVsZSBWZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbXBsIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbnRmIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29wIHRhaWxcbiAgICBpblxuICAgICgqIFRyYXZlcnNlIHRoZSB2ZXJzaW9ucyBmcm9tIGxhc3QgdG8gZmlyc3Q6XG4gICAgICAgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlbid0IHVuaXF1ZSBhbW9uZyB2ZXJzaW9ucyxcbiAgICAgICB3ZSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiB3aXRoIGEgbWFnaWMgbnVtYmVyIG1hdGNoLlxuICAgICAgIFRoZSBzaXR1YXRpb24gaW4gbWluZCBpcyB0cnVuayBzdXBwb3J0LiAqKVxuICAgICAgbGV0IGFsbF92ZXJzaW9uc190b3BfZG93biA9IExpc3QucmV2IGFsbF92ZXJzaW9ucyBpblxuICAgICAgbG9vcCBhbGxfdmVyc2lvbnNfdG9wX2Rvd25cbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHVzZWQgdG8gY29udHJvbCB3aGF0IHdlIHVzZSBmcm9tIHRoZSBjdXJyZW50IGNvbXBpbGVyIGFuZCB3aGF0IGlzIGVtYmVkIGluXG4gICB0aGlzIGxpYnJhcnkuXG5cbiAgIEl0IG11c3QgYmUgb3BlbmVkIGluIGFsbCBtb2R1bGVzLCBlc3BlY2lhbGx5IHRoZSBvbmVzIGNvbWluZyBmcm9tIHRoZSBjb21waWxlci5cbiopXG5cbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxubW9kdWxlIEpzID0gVmVyc2lvbnMuT0NhbWxfNTAwXG5tb2R1bGUgT2NhbWwgPSBWZXJzaW9ucy5PQ2FtbF9jdXJyZW50XG5cbm1vZHVsZSBTZWxlY3RfYXN0IChPY2FtbCA6IFZlcnNpb25zLk9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGluY2x1ZGUgSnNcblxuICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdqcywgJ29jYW1sKSB0ID1cbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXNcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS4lcyxcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS4lcyApXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICB0XFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgcyBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUb3BsZXZlbF9waHJhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ29yZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4cHJlc3Npb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBQYXR0ZXJuXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUucGF0dGVybixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5wYXR0ZXJuIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2FzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2FzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2V4dGVuc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4oKiQqKVxuICAgICAgfCBMaXN0IDogKCdhLCAnYikgdCAtPiAoJ2EgbGlzdCwgJ2IgbGlzdCkgdFxuICAgICAgfCBQYWlyIDogKCdhLCAnYikgdCAqICgnYywgJ2QpIHQgLT4gKCdhICogJ2MsICdiICogJ2QpIHRcbiAgZW5kXG5cbiAgb3BlbiBUeXBlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG4gIG1vZHVsZSBUb19vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKEpzKSAoT2NhbWwpXG5cbiAgbGV0IHJlYyBvZl9vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBvY2FtbCAtPiBqcyA9XG4gICAgbGV0IG9wZW4gT2Zfb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAob2Zfb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IG9mX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IG9mX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgcmVjIHRvX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IGpzIC0+IG9jYW1sID1cbiAgICBsZXQgb3BlbiBUb19vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwICh0b19vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gdG9fb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gdG9fb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCBvZl9vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IHRvX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gb2Zfb2NhbWwgaXRlbVxuICBsZXQgdG9fb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSBvZl9vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IHRvX29jYW1sIGl0ZW1cbmVuZFxuXG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gU2VsZWN0X2FzdCAoT2NhbWwpXG5tb2R1bGUgQXN0X2hlbHBlciA9IEFzdF9oZWxwZXJfbGl0ZVxuXG4oKiBNb2R1bGVzIGZyb20gQXN0XzxuPiBvZiBBc3RsaWIsIHdoZXJlIDxuPiBpcyB0aGUgY29tcGlsZXIgdmVyc2lvbiB0aGUgcHB4bGliIGRyaXZlciBpcyBjb21waWxlZCB3aXRoICopXG5tb2R1bGUgUGFyc2V0cmVlID0gU2VsZWN0ZWRfYXN0LkFzdC5QYXJzZXRyZWVcbm1vZHVsZSBBc3R0eXBlcyA9IFNlbGVjdGVkX2FzdC5Bc3QuQXN0dHlwZXNcblxuKCogT3RoZXIgQXN0bGliIG1vZHVsZXMgKilcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcblxubW9kdWxlIFBhcnNlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0bGliLlBhcnNlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uIGxleGJ1ZiA9IGltcGxlbWVudGF0aW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3N0cnVjdHVyZVxuICBsZXQgaW50ZXJmYWNlIGxleGJ1ZiA9IGludGVyZmFjZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zaWduYXR1cmVcblxuICBsZXQgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiA9XG4gICAgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCB1c2VfZmlsZSBsZXhidWYgPVxuICAgIHVzZV9maWxlIGxleGJ1ZiB8PiBMaXN0Lm1hcCBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCBjb3JlX3R5cGUgbGV4YnVmID0gY29yZV90eXBlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2NvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiBsZXhidWYgPSBleHByZXNzaW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2V4cHJlc3Npb25cbiAgbGV0IHBhdHRlcm4gbGV4YnVmID0gcGF0dGVybiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9wYXR0ZXJuXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZGVmYXVsdF9wcmludF93YXJuaW5nIF9sb2MgPSAoKVxubGV0IGFib3V0X2l0ZV9icmFuY2hfcmVmID0gcmVmIGRlZmF1bHRfcHJpbnRfd2FybmluZ1xubGV0IGNhcmVfYWJvdXRfaXRlX2JyYW5jaCA9IHJlZiBmYWxzZVxubGV0IGFib3V0X2l0ZV9icmFuY2ggbG9jID0gIWFib3V0X2l0ZV9icmFuY2hfcmVmIGxvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogRGVmaW5pdGlvbiBvZiB0aGUgT0NhbWwgQVNUICopXG5cbm9wZW4gSW1wb3J0XG5cbigqIFRoaXMgZmlsZSBpcyBvYnRhaW5lZCBieTpcblxuICAgLSBjb3B5aW5nIGEgc3Vic2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFzdF94eHgubWwgZmlsZSBmcm9tIEFzdGxpYlxuICAgKHN1Yi1tb2R1bGVzIEFzdHR5cGVzIGFuZCBQYXJzZXRyZWUpXG4gICAtIGFkZGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucyBmb3IgcG9zaXRpb24sIGxvY2F0aW9uLCBsb2MgYW5kIGxvbmdpZGVudFxuICAgLSBmbGF0dGVuaW5nIGFsbCB0aGUgbW9kdWxlc1xuICAgLSByZW1vdmluZyBBc3R0eXBlcy5jb25zdGFudCAodW51c2VkIGFuZCBjb25mbGljdHMgd2l0aCBQYXJzZXRyZWUuY29uc3RhbnQpXG4gICAtIHJlbmFtaW5nIGEgZmV3IHR5cGVzOlxuICAgLSAtIExvY2F0aW9uLnQgLT4gbG9jYXRpb25cbiAgIC0gLSBMb25naWRlbnQudCAtPiBsb25naWRlbnRcbiAgIC0gYWRkaW5nIGEgdHlwZSBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvYyBhbmQgcmVwbGFjaW5nIGFsbCB0aGUgb2NjdXJyZW5jZXMgb2YgdGhlXG4gICBsYXR0ZXIgYnkgdGhlIGZvcm1lci4gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZSBpdGVyYXRpb24gYW4gdGhlIGxldmVsIG9mIGFcbiAgIGxvbmdpZGVudCBsb2NcbiAgIC0gYWRkaW5nIGEgdHlwZSBjYXNlcyA9IGNhc2UgbGlzdFxuICAgLSByZXBsYWNpbmcgYWxsIG9jY3VyZW5jZXMgb2YgXCJjYXNlIGxpc3RcIiBieSBcImNhc2VzXCJcbiAgIC0gcmVwbGFjaW5nIGFsbCB0aGUgKCpJRl9DVVJSRU5UID0gRm9vLmJhciopIGJ5OiA9IEZvby5iYXJcbiAgIC0gcmVtb3ZpbmcgdGhlIGV4dHJhIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlXG4gICAtIHJlcGxhY2luZyBhcHAgW3R5cGUgLi4uXSBieSBbYW5kIC4uLl0gdG8gbWFrZSBldmVyeXRoaW5nIG9uZSByZWN1cnNpdmUgYmxvY2tcbiAgIC0gYWRkaW5nIFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1bQEBAZW5kXSBhdCB0aGUgZW5kXG5cbiAgIFRvIHVwZGF0ZSBpdCB0byBhIG5ld2VyIE9DYW1sIHZlcnNpb24sIGNyZWF0ZSBhIG5ldyBtb2R1bGUgd2l0aCB0aGUgYWJvdmUgZnJvbSB0aGVcbiAgIGxhdGVzdCBjb21waWxlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBvcGVucyB0byBnZXQgaXQgdG9cbiAgIGNvbXBpbGU6XG4gICBbe1xuICAgIG1vZHVsZSBBc3QgPSBWZXJzaW9ucy5PQ2FtbF80eHhcbiAgICBvcGVuIEFzdC5Bc3RcbiAgICBtb2R1bGUgTG9jYXRpb24gICA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuICAgIG1vZHVsZSBMb25naWRlbnQgPSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG4gICB9XVxuXG4gICBPbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCB0aGUgaW5saW5lZCBkZXJpdmVkIHRyYXZlcnNhbCBjbGFzc2VzIGJ5IHJ1bm5pbmdcbiAgIFt7IGR1bmUgYnVpbGQgQGxpbnQgfV0geW91IGNhbiByZXBsYWNlIHRoZSBhYm92ZSBtZW50aW9uZWQgbW9kdWxlIGRlZmluaXRpb25zIGJ5IGFcbiAgIFtvcGVuIEltcG9ydF0gYW5kIHVwZGF0ZSBbSW1wb3J0XSBzbyB0aGF0IHRoZSBbSnNdIG1vZHVsZSBwb2ludHMgdG9cbiAgIFtWZXJzaW9ucy5PQ2FtbF80eHhdLlxuKilcblxuKCogU291cmNlIGNvZGUgbG9jYXRpb25zIChyYW5nZXMgb2YgcG9zaXRpb25zKSwgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5cbnR5cGUgcG9zaXRpb24gPSBMZXhpbmcucG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5hbmQgbG9jYXRpb24gPSBMb2NhdGlvbi50ID0ge1xuICBsb2Nfc3RhcnQgOiBwb3NpdGlvbjtcbiAgbG9jX2VuZCA6IHBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5hbmQgbG9jYXRpb25fc3RhY2sgPSBsb2NhdGlvbiBsaXN0XG5cbigqIE5vdGUgb24gdGhlIHVzZSBvZiBMZXhpbmcucG9zaXRpb24gaW4gdGhpcyBtb2R1bGUuXG4gICBJZiBbcG9zX2ZuYW1lID0gXCJcIl0sIHRoZW4gdXNlIFshaW5wdXRfbmFtZV0gaW5zdGVhZC5cbiAgIElmIFtwb3NfbG51bSA9IC0xXSwgdGhlbiBbcG9zX2JvbCA9IDBdLiBVc2UgW3Bvc19jbnVtXSBhbmRcbiAgIHJlLXBhcnNlIHRoZSBmaWxlIHRvIGdldCB0aGUgbGluZSBhbmQgY2hhcmFjdGVyIG51bWJlcnMuXG4gICBFbHNlIGFsbCBmaWVsZHMgYXJlIGNvcnJlY3QuXG4qKVxuYW5kICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IGxvY2F0aW9uIH1cblxuKCogTG9uZyBpZGVudGlmaWVycywgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5hbmQgbG9uZ2lkZW50ID0gTG9uZ2lkZW50LnQgPVxuICB8IExpZGVudCBvZiBzdHJpbmdcbiAgfCBMZG90IG9mIGxvbmdpZGVudCAqIHN0cmluZ1xuICB8IExhcHBseSBvZiBsb25naWRlbnQgKiBsb25naWRlbnRcblxuYW5kIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jXG5cbigqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbmFuZCByZWNfZmxhZyA9IEFzdHR5cGVzLnJlY19mbGFnID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbmFuZCBkaXJlY3Rpb25fZmxhZyA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gVXB0byB8IERvd250b1xuXG4oKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbmFuZCBwcml2YXRlX2ZsYWcgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBQcml2YXRlIHwgUHVibGljXG5hbmQgbXV0YWJsZV9mbGFnID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuYW5kIHZpcnR1YWxfZmxhZyA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuYW5kIG92ZXJyaWRlX2ZsYWcgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gT3ZlcnJpZGUgfCBGcmVzaFxuYW5kIGNsb3NlZF9mbGFnID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBDbG9zZWQgfCBPcGVuXG5hbmQgbGFiZWwgPSBzdHJpbmdcblxuYW5kIGFyZ19sYWJlbCA9IEFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIHwgTm9sYWJlbFxuICB8IExhYmVsbGVkIG9mIHN0cmluZyAgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgfCBPcHRpb25hbCBvZiBzdHJpbmcgICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG5hbmQgdmFyaWFuY2UgPSBBc3R0eXBlcy52YXJpYW5jZSA9IENvdmFyaWFudCB8IENvbnRyYXZhcmlhbnQgfCBOb1ZhcmlhbmNlXG5hbmQgaW5qZWN0aXZpdHkgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSA9IEluamVjdGl2ZSB8IE5vSW5qZWN0aXZpdHlcblxuKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuYW5kIGNvbnN0YW50ID0gUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBleGNlcHRcbiAgICAgICAgICBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIgKilcbiAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBsb2NhdGlvbiAqIHN0cmluZyBvcHRpb25cbiAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuICopXG4gIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBhcmUgcmVqZWN0ZWRcbiAgICAgICAgICBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbigqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG5hbmQgYXR0cmlidXRlID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSA9IHtcbiAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgYXR0cl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tAaWQgQVJHXV0gYW5kIFtbQEBpZCBBUkddXS5cblxuICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC4gVGhlIGNvbXBpbGVyIGlnbm9yZXNcbiAgICB1bmtub3duIGF0dHJpYnV0ZXMuICopXG5cbmFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIHBheWxvYWQgPSBQYXJzZXRyZWUucGF5bG9hZCA9XG4gIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogWz8gUF0gb3IgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbigqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBjb3JlX3R5cGUgPSBQYXJzZXRyZWUuY29yZV90eXBlID0ge1xuICBwdHlwX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYztcbiAgcHR5cF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHR5cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb3JlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWRdfSxcbiAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfS4gKilcbiAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV0gcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZVxuICAgICAgICAgIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uICopXG4gIHwgUHR5cF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUIHRjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfSxcbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfS4gKilcbiAgfCBQdHlwX2NsYXNzIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbI3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgI3Rjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1sgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s+IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0sXG4gICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s8IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLiAqKVxuICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1cbiAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBjb25zdHJhaW50IG9uIGFcbiAgICAgICAgICAgIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAge1tcbiAgICAgICAgICAgIGxldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLlxuICAgICAgICAgIF19XG4gICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVxuICAgICAgICAgICAgW1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9IFtQZXhwX3BvbHldfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfSBbcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH0gW1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9IFtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS4gKilcbiAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbmFuZCBwYWNrYWdlX3R5cGUgPSBsb25naWRlbnRfbG9jICogKGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUpIGxpc3RcbigqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuXG4gICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldIHJlcHJlc2VudHNcbiAgICAgIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLiAqKVxuXG5hbmQgcm93X2ZpZWxkID0gUGFyc2V0cmVlLnJvd19maWVsZCA9IHtcbiAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgcHJmX2xvYyA6IGxvY2F0aW9uO1xuICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCByb3dfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGEgY29uc3RhbnQgKGVtcHR5KVxuICAgICAgICAgICAgY29uc3RydWN0b3IuXG4gICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3IgKHNlZVxuICAgICAgICAgICAgNC4yIGluIHRoZSBtYW51YWwpICopXG4gIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbmFuZCBvYmplY3RfZmllbGQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkID0ge1xuICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICBwb2ZfbG9jIDogbG9jYXRpb247XG4gIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIG9iamVjdF9maWVsZF9kZXNjID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4oKiogezIgUGF0dGVybnN9ICopXG5cbmFuZCBwYXR0ZXJuID0gUGFyc2V0cmVlLnBhdHRlcm4gPSB7XG4gIHBwYXRfZGVzYyA6IHBhdHRlcm5fZGVzYztcbiAgcHBhdF9sb2MgOiBsb2NhdGlvbjtcbiAgcHBhdF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHBhdF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBwYXR0ZXJuX2Rlc2MgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjID1cbiAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXIgYnV0IHJlamVjdGVkIGJ5XG4gICAgICAgICAgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQcGF0X2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV0gKilcbiAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXSAqKVxuICB8IFBwYXRfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfVxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gIHwgUHBhdF90eXBlIG9mIGxvbmdpZGVudF9sb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgfCBQcGF0X29wZW4gb2YgbG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgZXhwcmVzc2lvbiA9IFBhcnNldHJlZS5leHByZXNzaW9uID0ge1xuICBwZXhwX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2M7XG4gIHBleHBfbG9jIDogbG9jYXRpb247XG4gIHBleHBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBleHBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgZXhwcmVzc2lvbl9kZXNjID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIHwgUGV4cF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdICopXG4gIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sXG4gICAgICAgICAgWzFuXSAqKVxuICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdXG5cbiAgICAgICAgICBOb3RlczpcblxuICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59IFtQZXhwX2Z1bl19LlxuICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZyB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59XG4gICAgICAgICAgICBbUGV4cF9mdW5dfS4gKilcbiAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgW2xpXSBjYW4gYmUge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0gKG5vbiBsYWJlbGVkXG4gICAgICAgICAgYXJndW1lbnQpLCB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9IFtMYWJlbGxlZF19IChsYWJlbGxlZFxuICAgICAgICAgIGFyZ3VtZW50cykgb3Ige3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWxdfSAob3B0aW9uYWxcbiAgICAgICAgICBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQZXhwX2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldICopXG4gIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdICopXG4gIHwgUGV4cF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAgKCoqIFtFLmxdICopXG4gIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfSBbVXB0b119XG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfSBbRG93bnRvXX0gKilcbiAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFsoRSA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS4gKilcbiAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgfCBQZXhwX25ldyBvZiBsb25naWRlbnRfbG9jICAoKiogW25ldyBNLmNdICopXG4gIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfSBbQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgIHZhbHVlcykuICopXG4gIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuYW5kIGNhc2UgPSBQYXJzZXRyZWUuY2FzZSA9IHtcbiAgcGNfbGhzIDogcGF0dGVybjtcbiAgcGNfZ3VhcmQgOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgcGNfcmhzIDogZXhwcmVzc2lvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuYW5kIGxldG9wID0gUGFyc2V0cmVlLmxldG9wID0ge1xuICBsZXRfIDogYmluZGluZ19vcDtcbiAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgYm9keSA6IGV4cHJlc3Npb247XG59XG5cbmFuZCBiaW5kaW5nX29wID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgPSB7XG4gIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgcGJvcF9sb2MgOiBsb2NhdGlvbjtcbn1cblxuKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID0ge1xuICBwdmFsX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdmFsX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHB2YWxfcHJpbSA6IHN0cmluZyBsaXN0O1xuICBwdmFsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdmFsX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG5cbiAgICAtIFt2YWwgeDogVF0sIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfSBbcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19XG4gICAgICBbcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV0gKilcblxuKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwdHlwZV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHR5cGVfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gIHB0eXBlX2NzdHJzIDogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIGxvY2F0aW9uKSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgcHR5cGVfa2luZCA6IHR5cGVfa2luZDtcbiAgcHR5cGVfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gIHB0eXBlX21hbmlmZXN0IDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gIHB0eXBlX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdHlwZV9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sIGZvciB2YXJpb3VzXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfSBbcHR5cGVfa2luZF19IGFuZFxuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9IFtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcblxuICAgIC0gW3R5cGUgdF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVxuICAgICAgW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH0gW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9XG4gICAgICBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH0gW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59IFtQdHlwZV9vcGVuXX0sXG4gICAgICBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0uICopXG5cbmFuZCB0eXBlX2tpbmQgPSBQYXJzZXRyZWUudHlwZV9raW5kID1cbiAgfCBQdHlwZV9hYnN0cmFjdFxuICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICB8IFB0eXBlX29wZW5cblxuYW5kIGxhYmVsX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID0ge1xuICBwbGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBsZF9tdXRhYmxlIDogbXV0YWJsZV9mbGFnO1xuICBwbGRfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcGxkX2xvYyA6IGxvY2F0aW9uO1xuICBwbGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtAaWQxXSBbQGlkMl1dICopXG59XG4oKiogLSBbeyAuLi47IGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfSBbcGxkX211dGFibGVdfVxuICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19LFxuICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVxuICAgICAgW3BsZF9tdXRhYmxlXX0gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0uXG5cbiAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IHtcbiAgcGNkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2RfdmFycyA6IHN0cmluZyBsb2MgbGlzdDtcbiAgcGNkX2FyZ3MgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gIHBjZF9yZXMgOiBjb3JlX3R5cGUgb3B0aW9uO1xuICBwY2RfbG9jIDogbG9jYXRpb247XG4gIHBjZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufSByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgICAgIGFyZ3VtZW50cyBvZjpcblxuICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQzogVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQyBvZiB7Li4ufV0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgICAgICAgLSBbQzogey4uLn0gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS4gKilcblxuYW5kIHR5cGVfZXh0ZW5zaW9uID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0ge1xuICBwdHlleHRfcGF0aCA6IGxvbmdpZGVudF9sb2M7XG4gIHB0eWV4dF9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwdHlleHRfY29uc3RydWN0b3JzIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gIHB0eWV4dF9wcml2YXRlIDogcHJpdmF0ZV9mbGFnO1xuICBwdHlleHRfbG9jIDogbG9jYXRpb247XG4gIHB0eWV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgKFt0eXBlIHQgKz0gLi4uXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0ge1xuICBwZXh0X25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgcGV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHR5cGVfZXhjZXB0aW9uID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID0ge1xuICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gIHB0eWV4bl9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV0gZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvblxuICAgICAgICAgIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG5cbiAgICAgICAgICB7dWxcbiAgICAgICAgICAgey0gW0Mgb2YgVDEgKiAuLi4gKiBUbl1cbiAgICAgICAgICAgICAgd2hlbjpcblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW05vbmVdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9ICopXG4gIHwgUGV4dF9yZWJpbmQgb2YgbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbigqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc190eXBlID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSB7XG4gIHBjdHlfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYztcbiAgcGN0eV9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgfCBQY3R5X2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiAtIFtjXVxuICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19LFxuICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfS4gKilcbiAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9IHtcbiAgcGNzaWdfc2VsZiA6IGNvcmVfdHlwZTtcbiAgcGNzaWdfZmllbGRzIDogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9IFtwY3NpZ19zZWxmXX0gaXNcbiAgICAgIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fSBbUHR5cF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0ge1xuICBwY3RmX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gIHBjdGZfbG9jIDogbG9jYXRpb247XG4gIHBjdGZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kICdhIGNsYXNzX2luZm9zID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zID0ge1xuICBwY2lfdmlydCA6IHZpcnR1YWxfZmxhZztcbiAgcGNpX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHBjaV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNpX2V4cHIgOiAnYTtcbiAgcGNpX2xvYyA6IGxvY2F0aW9uO1xuICBwY2lfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLiAqKVxuXG5hbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc19leHByID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSB7XG4gIHBjbF9kZXNjIDogY2xhc3NfZXhwcl9kZXNjO1xuICBwY2xfbG9jIDogbG9jYXRpb247XG4gIHBjbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19leHByX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgfCBQY2xfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF0uICopXG4gIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS4gW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvclxuICAgICAgICAgIHN0YXJ0IHdpdGggWz9dIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPSB7XG4gIHBjc3RyX3NlbGYgOiBwYXR0ZXJuO1xuICBwY3N0cl9maWVsZHMgOiBjbGFzc19maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9IFtwY3N0cl9zZWxmXX0gaXNcbiAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX0gW1BwYXRfYW55XX0gKilcblxuYW5kIGNsYXNzX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0ge1xuICBwY2ZfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gIHBjZl9sb2MgOiBsb2NhdGlvbjtcbiAgcGNmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2luaGVyaXQgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVxuICAgICAgICAgICAgW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IGFuZCBbc10gaXMgW1NvbWUgeF0gKilcbiAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt2YWwgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9XG4gICAgICAgICAgICBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVxuICAgICAgICAgICAgW011dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19ICopXG4gIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1cbiAgICAgICAgICAgIFtQZXhwX3BvbHldfSlcbiAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXSAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1cbiAgICAgICAgICAgIFtQdHlwX3BvbHldfSkgKilcbiAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kIGNsYXNzX2ZpZWxkX2tpbmQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbmFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX3R5cGUgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgPSB7XG4gIHBtdHlfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2M7XG4gIHBtdHlfbG9jIDogbG9jYXRpb247XG4gIHBtdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgfCBQbXR5X2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBtdHlfYWxpYXMgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG5hbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICB8IFVuaXQgICgqKiBbKCldICopXG4gIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG5hbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSB7XG4gIHBzaWdfZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gIHBzaWdfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzaWduYXR1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdICopXG4gIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICopXG4gIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAqKVxuICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtZF9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtZF90eXBlIDogbW9kdWxlX3R5cGU7XG4gIHBtZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1kX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9IHtcbiAgcG1zX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXNfbWFuaWZlc3QgOiBsb25naWRlbnRfbG9jO1xuICBwbXNfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtc19sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtdGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtdGRfdHlwZSA6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgcG10ZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG10ZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtTID0gTVRdLFxuICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgd2hlblxuICAgICAge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfSBbcG10ZF90eXBlXX0gaXMgW05vbmVdLiAqKVxuXG5hbmQgJ2Egb3Blbl9pbmZvcyA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zID0ge1xuICBwb3Blbl9leHByIDogJ2E7XG4gIHBvcGVuX292ZXJyaWRlIDogb3ZlcnJpZGVfZmxhZztcbiAgcG9wZW5fbG9jIDogbG9jYXRpb247XG4gIHBvcGVuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gKHNpbGVuY2VzIHRoZSBcInVzZWRcbiAgICAgIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofSBbRnJlc2hdfSAqKVxuXG5hbmQgb3Blbl9kZXNjcmlwdGlvbiA9IGxvbmdpZGVudF9sb2Mgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbmFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuYW5kICdhIGluY2x1ZGVfaW5mb3MgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9IHtcbiAgcGluY2xfbW9kIDogJ2E7XG4gIHBpbmNsX2xvYyA6IGxvY2F0aW9uO1xuICBwaW5jbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbmFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG5hbmQgd2l0aF9jb25zdHJhaW50ID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIHwgUHdpdGhfdHlwZSBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiB0aGVcbiAgICAgICAgICB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICB8IFB3aXRoX21vZHVsZSBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvYyAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gIHwgUHdpdGhfdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gIHwgUHdpdGhfbW9kc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV9leHByID0gUGFyc2V0cmVlLm1vZHVsZV9leHByID0ge1xuICBwbW9kX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjO1xuICBwbW9kX2xvYyA6IGxvY2F0aW9uO1xuICBwbW9kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV9leHByX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIHwgUG1vZF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1hdICopXG4gIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG5hbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSB7XG4gIHBzdHJfZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gIHBzdHJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIHZhbHVlX2JpbmRpbmcgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyA9IHtcbiAgcHZiX3BhdCA6IHBhdHRlcm47XG4gIHB2Yl9leHByIDogZXhwcmVzc2lvbjtcbiAgcHZiX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwdmJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBtb2R1bGVfYmluZGluZyA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9IHtcbiAgcG1iX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1iX2V4cHIgOiBtb2R1bGVfZXhwcjtcbiAgcG1iX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwbWJfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4oKiogezEgVG9wbGV2ZWx9ICopXG4oKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuYW5kIHRvcGxldmVsX3BocmFzZSA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgPSB7XG4gIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgcGRpcl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPSB7XG4gIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgcGRpcmFfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgfCBQZGlyX2lkZW50IG9mIGxvbmdpZGVudFxuICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmFuZCBjYXNlcyA9IGNhc2UgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdXG5cbmNsYXNzIHZpcnR1YWwgbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4geCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgaXRlciA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbGlzdCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcHRpb24gLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiB1bml0XG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgc2VsZiNzdHJpbmcgcG9zX2ZuYW1lO1xuICAgICAgICBzZWxmI2ludCBwb3NfbG51bTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2JvbDtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2NudW1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2NfZW5kO1xuICAgICAgICBzZWxmI2Jvb2wgbG9jX2dob3N0XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxvYyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgX2EgdHh0O1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGxvY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYlxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IHVuaXQgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiB1bml0ID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+ICgpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiB1bml0ID0gZnVuIF8gLT4gKClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lO1xuICAgICAgICBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICBzZWxmI3BheWxvYWQgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+ICgpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICBiXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcmZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjYm9vbCBiO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcGF0X2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBiXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXhwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZFxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYztcbiAgICAgICAgICAgIHNlbGYjZGlyZWN0aW9uX2ZsYWcgZDtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGJcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjX2xocztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGNfcmhzXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBzZWxmI2JpbmRpbmdfb3AgbGV0XztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gYm9keVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3A7XG4gICAgICAgIHNlbGYjcGF0dGVybiBwYm9wX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBib3BfZXhwO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBib3BfbG9jXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmFsX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYylcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lO1xuICAgICAgICBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGxkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzO1xuICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZTtcbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGNcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3RmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcGNpX3BhcmFtcztcbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWU7XG4gICAgICAgIF9hIHBjaV9leHByO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgZFxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGNcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc2lnX2xvY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWRfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lO1xuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1zX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10ZF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcGVuX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBvcGVuX2V4cHI7XG4gICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBpbmNsX21vZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbW9kX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYlxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwdmJfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmJfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV9leHByIHBtYl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1iX2xvY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gYWNjXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhIGFjY1xuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBhY2NcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBhY2NcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjY1xuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhIGFjY1xuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGEgYWNjXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gYWNjXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBhY2NcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX29wZW4gLT4gYWNjXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGEgYWNjXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGEgYWNjXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkX21hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+IGJvb2wgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiBjaGFyICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+IGludCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2EgbGlzdCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhIG9wdGlvbiAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+IHN0cmluZyAqICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gcG9zaXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUsIGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19ib2wsIGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBwb3NfY251bSwgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgICh7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gbG9jYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgbG9jX2VuZCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgbG9jX2dob3N0LCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICAoeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+IGxvY2F0aW9uX3N0YWNrICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhIGxvYyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHR4dCwgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgKHsgdHh0OyBsb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+IGxvbmdpZGVudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKExkb3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChMYXBwbHkgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiBsb25naWRlbnRfbG9jICogJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiByZWNfZmxhZyAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gZGlyZWN0aW9uX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+IHByaXZhdGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gbXV0YWJsZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiB2aXJ0dWFsX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gb3ZlcnJpZGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+IGNsb3NlZF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gbGFiZWwgKiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiBhcmdfbGFiZWwgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBhY2MpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGFiZWxsZWQgYSwgYWNjKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKE9wdGlvbmFsIGEsIGFjYylcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gdmFyaWFuY2UgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+IGluamVjdGl2aXR5ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gY29uc3RhbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9pbnRlZ2VyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NoYXIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfY2hhciBhLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2Zsb2F0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+IGF0dHJpYnV0ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCwgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+IGV4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gYXR0cmlidXRlcyAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiBwYXlsb2FkICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU3RyIGEsIGFjYylcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTaWcgYSwgYWNjKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFR5cCBhLCBhY2MpXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQUGF0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+IGNvcmVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jbGFzcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyaWFudCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wYWNrYWdlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gcGFja2FnZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gcm93X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHByZl9kZXNjLCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChSdGFnIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFJpbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MsIGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoT3RhZyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChPaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiBwYXR0ZXJuICogJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MsIGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+IHBhdHRlcm5fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiBleHByZXNzaW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2FzZXMgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1bmN0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX21hdGNoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3RyeSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9maWVsZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlcXVlbmNlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF93aGlsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgZSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvZXJjZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VuZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXcgYSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9vdmVycmlkZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Fzc2VydCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29iamVjdCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXd0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcGFjayBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb3BlbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xldG9wIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRvcCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKFBleHBfdW5yZWFjaGFibGUsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+IGNhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNfbGhzLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IHBjX3JocywgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgKHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0sIGFjYylcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gbGV0b3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxldF8sIGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYW5kcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYm9keSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgICh7IGxldF87IGFuZHM7IGJvZHkgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gYmluZGluZ19vcCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGJvcF9vcCwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2V4cCwgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kLCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0LCBhY2MgPVxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiB0eXBlX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIGFjYylcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3ZhcmlhbnQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV9yZWNvcmQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3JlcywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl9yZWNvcmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiB0eXBlX2V4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGgsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9raW5kLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+IHR5cGVfZXhjZXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IsIGFjYyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X2RlY2wgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfcmViaW5kIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+IGNsYXNzX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiBjbGFzc19zaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfaW5oZXJpdCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBwY2lfdmlydCwgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2V4cHIsIGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gY2xhc3NfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2xfZGVzYywgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2xfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiwgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgKHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbmhlcml0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5pdGlhbGl6ZXIgYSwgYWNjKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfdmlydHVhbCBhLCBhY2MpXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKENma19jb25jcmV0ZSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+IG1vZHVsZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3dpdGggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3R5cGVvZiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfYWxpYXMgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIGFjYylcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE5hbWVkIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+IHNpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYywgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ192YWx1ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1zX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0LCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF90eXBlLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIsIGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QsIGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gd2l0aF9jb25zdHJhaW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R1bGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHN1YnN0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MsIGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl92YWx1ZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcHJpbWl0aXZlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiB2YWx1ZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+IG1vZHVsZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9leHByLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kZWYgYSwgYWNjKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGlyIGEsIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MsIGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9zdHJpbmcgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYm9vbCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfYm9vbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+IGNhc2VzICogJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvc1xuICAgICAgICA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wdGlvbiAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgcG9zX2xudW0pO1xuICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBwb3NfYm9sKTtcbiAgICAgICAgICAgIChcInBvc19jbnVtXCIsIHBvc19jbnVtKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIGxvY19zdGFydCk7XG4gICAgICAgICAgICAoXCJsb2NfZW5kXCIsIGxvY19lbmQpO1xuICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIGxvY19naG9zdCk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsb2MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwidHh0XCIsIHR4dCk7IChcImxvY1wiLCBsb2MpIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxpZGVudFwiIFsgYSBdXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxkb3RcIiBbIGE7IGIgXVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhcHBseVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ3JlcyA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIk5vbnJlY3Vyc2l2ZVwiIFtdXG4gICAgICAgIHwgUmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiUmVjdXJzaXZlXCIgW11cblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVXB0byAtPiBzZWxmI2NvbnN0ciBcIlVwdG9cIiBbXVxuICAgICAgICB8IERvd250byAtPiBzZWxmI2NvbnN0ciBcIkRvd250b1wiIFtdXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZSAtPiBzZWxmI2NvbnN0ciBcIlByaXZhdGVcIiBbXVxuICAgICAgICB8IFB1YmxpYyAtPiBzZWxmI2NvbnN0ciBcIlB1YmxpY1wiIFtdXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW1tdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiSW1tdXRhYmxlXCIgW11cbiAgICAgICAgfCBNdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiTXV0YWJsZVwiIFtdXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVmlydHVhbCAtPiBzZWxmI2NvbnN0ciBcIlZpcnR1YWxcIiBbXVxuICAgICAgICB8IENvbmNyZXRlIC0+IHNlbGYjY29uc3RyIFwiQ29uY3JldGVcIiBbXVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3ZlcnJpZGUgLT4gc2VsZiNjb25zdHIgXCJPdmVycmlkZVwiIFtdXG4gICAgICAgIHwgRnJlc2ggLT4gc2VsZiNjb25zdHIgXCJGcmVzaFwiIFtdXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENsb3NlZCAtPiBzZWxmI2NvbnN0ciBcIkNsb3NlZFwiIFtdXG4gICAgICAgIHwgT3BlbiAtPiBzZWxmI2NvbnN0ciBcIk9wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBzZWxmI2NvbnN0ciBcIk5vbGFiZWxcIiBbXVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYWJlbGxlZFwiIFsgYSBdXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9wdGlvbmFsXCIgWyBhIF1cblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ292YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ292YXJpYW50XCIgW11cbiAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ29udHJhdmFyaWFudFwiIFtdXG4gICAgICAgIHwgTm9WYXJpYW5jZSAtPiBzZWxmI2NvbnN0ciBcIk5vVmFyaWFuY2VcIiBbXVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbmplY3RpdmUgLT4gc2VsZiNjb25zdHIgXCJJbmplY3RpdmVcIiBbXVxuICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gc2VsZiNjb25zdHIgXCJOb0luamVjdGl2aXR5XCIgW11cblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2ludGVnZXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2NoYXJcIiBbIGEgXVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X3N0cmluZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9mbG9hdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIGF0dHJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFN0clwiIFsgYSBdXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFNpZ1wiIFsgYSBdXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFR5cFwiIFsgYSBdXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFBhdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIHB0eXBfbG9jKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQdHlwX2FueVwiIFtdXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfb2JqZWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NsYXNzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyaWFudFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcGFja2FnZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBwcmZfbG9jKTtcbiAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSdGFnXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUmluaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBwb2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk90YWdcIiBbIGE7IGIgXVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIHBwYXRfbG9jKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBzZWxmI2NvbnN0ciBcIlBwYXRfYW55XCIgW11cbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfaW50ZXJ2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIHBleHBfbG9jKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1bmN0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9tYXRjaFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3RyeVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZpZWxkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGZpZWxkXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZnRoZW5lbHNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlcXVlbmNlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3doaWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZm9yXCIgWyBhOyBiOyBjOyBkOyBlIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29lcmNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlbmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXdcIiBbIGEgXVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0aW5zdHZhclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX292ZXJyaWRlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG1vZHVsZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hc3NlcnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb2JqZWN0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXd0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3BlblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG9wXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gc2VsZiNjb25zdHIgXCJQZXhwX3VucmVhY2hhYmxlXCIgW11cblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNfbGhzXCIsIHBjX2xocyk7IChcInBjX2d1YXJkXCIsIHBjX2d1YXJkKTsgKFwicGNfcmhzXCIsIHBjX3JocykgXVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwibGV0X1wiLCBsZXRfKTsgKFwiYW5kc1wiLCBhbmRzKTsgKFwiYm9keVwiLCBib2R5KSBdXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBib3Bfb3BcIiwgcGJvcF9vcCk7XG4gICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBwYm9wX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIHB2YWxfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgcHR5cGVfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9hYnN0cmFjdFwiIFtdXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfdmFyaWFudFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV9yZWNvcmRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9vcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbGRfbG9jXCIsIHBsZF9sb2MpO1xuICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgcGNkX25hbWUpO1xuICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBwY2RfcmVzKTtcbiAgICAgICAgICAgIChcInBjZF9sb2NcIiwgcGNkX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfcmVjb3JkXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIHBleHRfa2luZCk7XG4gICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X2RlY2xcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9yZWJpbmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3NpZ19zZWxmXCIsIHBjc2lnX3NlbGYpOyAoXCJwY3NpZ19maWVsZHNcIiwgcGNzaWdfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIHBjdGZfbG9jKTtcbiAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2luaGVyaXRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBwY2lfdmlydCk7XG4gICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgcGNpX25hbWUpO1xuICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgcGNpX2V4cHIpO1xuICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBwY2lfbG9jKTtcbiAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBwY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc3RyX3NlbGZcIiwgcGNzdHJfc2VsZik7IChcInBjc3RyX2ZpZWxkc1wiLCBwY3N0cl9maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIHBjZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjZl9sb2NcIiwgcGNmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5oZXJpdFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIGEgXVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma192aXJ0dWFsXCIgWyBhIF1cbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma19jb25jcmV0ZVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgcG10eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIHBtdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfd2l0aFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV90eXBlb2ZcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfYWxpYXNcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IHNlbGYjY29uc3RyIFwiVW5pdFwiIFtdXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTmFtZWRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc2lnX2Rlc2NcIiwgcHNpZ19kZXNjKTsgKFwicHNpZ19sb2NcIiwgcHNpZ19sb2MpIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ192YWx1ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2RzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIHBtZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtZF90eXBlXCIsIHBtZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtZF9sb2NcIiwgcG1kX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtc19sb2NcIiwgcG1zX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBwbXRkX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgcGluY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R1bGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kc3Vic3RcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2Rfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzdHJfZGVzY1wiLCBwc3RyX2Rlc2MpOyAoXCJwc3RyX2xvY1wiLCBwc3RyX2xvYykgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl92YWx1ZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9wcmltaXRpdmVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwdmJfcGF0KTtcbiAgICAgICAgICAgIChcInB2Yl9leHByXCIsIHB2Yl9leHByKTtcbiAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgcHZiX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIHBtYl9uYW1lKTtcbiAgICAgICAgICAgIChcInBtYl9leHByXCIsIHBtYl9leHByKTtcbiAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtYl9sb2NcIiwgcG1iX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RlZlwiIFsgYSBdXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGlyXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgcGRpcl9hcmcpO1xuICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgcGRpcl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwZGlyYV9kZXNjXCIsIHBkaXJhX2Rlc2MpOyAoXCJwZGlyYV9sb2NcIiwgcGRpcmFfbG9jKSBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX3N0cmluZ1wiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfYm9vbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhciAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnQgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmcgKiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3NfZm5hbWUgPSBTdGRsaWIuZnN0IHBvc19mbmFtZTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gU3RkbGliLmZzdCBwb3NfbG51bTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBTdGRsaWIuZnN0IHBvc19ib2w7XG4gICAgICAgICAgICBwb3NfY251bSA9IFN0ZGxpYi5mc3QgcG9zX2NudW07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIFN0ZGxpYi5zbmQgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgU3RkbGliLnNuZCBwb3NfbG51bSk7XG4gICAgICAgICAgICAgIChcInBvc19ib2xcIiwgU3RkbGliLnNuZCBwb3NfYm9sKTtcbiAgICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgU3RkbGliLnNuZCBwb3NfY251bSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxvY19zdGFydCA9IFN0ZGxpYi5mc3QgbG9jX3N0YXJ0O1xuICAgICAgICAgICAgbG9jX2VuZCA9IFN0ZGxpYi5mc3QgbG9jX2VuZDtcbiAgICAgICAgICAgIGxvY19naG9zdCA9IFN0ZGxpYi5mc3QgbG9jX2dob3N0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBTdGRsaWIuc25kIGxvY19zdGFydCk7XG4gICAgICAgICAgICAgIChcImxvY19lbmRcIiwgU3RkbGliLnNuZCBsb2NfZW5kKTtcbiAgICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIFN0ZGxpYi5zbmQgbG9jX2dob3N0KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgKCB7IHR4dCA9IFN0ZGxpYi5mc3QgdHh0OyBsb2MgPSBTdGRsaWIuZnN0IGxvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eCBbIChcInR4dFwiLCBTdGRsaWIuc25kIHR4dCk7IChcImxvY1wiLCBTdGRsaWIuc25kIGxvYykgXVxuICAgICAgICApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIChMaWRlbnQgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIkxpZGVudFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGRvdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMZG90XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIExhcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyAqICdyZXMgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgKiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBzZWxmI2NvbnN0ciBjdHggXCJOb2xhYmVsXCIgW10pXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBMYWJlbGxlZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFiZWxsZWRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9wdGlvbmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPcHRpb25hbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2ludGVnZXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2ludGVnZXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjb25zdF9jaGFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfY2hhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNvbnN0X3N0cmluZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9zdHJpbmdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfZmxvYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2Zsb2F0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBhdHRyX25hbWUgPSBTdGRsaWIuZnN0IGF0dHJfbmFtZTtcbiAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IFN0ZGxpYi5mc3QgYXR0cl9wYXlsb2FkO1xuICAgICAgICAgICAgYXR0cl9sb2MgPSBTdGRsaWIuZnN0IGF0dHJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBTdGRsaWIuc25kIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBTdGRsaWIuc25kIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIFN0ZGxpYi5zbmQgYXR0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFN0ciAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFN0clwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFNpZyAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFNpZ1wiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFR5cCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFR5cFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQUGF0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBQYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IFN0ZGxpYi5mc3QgcHR5cF9kZXNjO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBTdGRsaWIuZnN0IHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgU3RkbGliLnNuZCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FueVwiIFtdKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfb2JqZWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY2xhc3MgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jbGFzc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJpYW50XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3BhY2thZ2UgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcGFja2FnZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHByZl9kZXNjID0gU3RkbGliLmZzdCBwcmZfZGVzYztcbiAgICAgICAgICAgIHByZl9sb2MgPSBTdGRsaWIuZnN0IHByZl9sb2M7XG4gICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgU3RkbGliLnNuZCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInByZl9sb2NcIiwgU3RkbGliLnNuZCBwcmZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUnRhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJ0YWdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFJpbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9mX2Rlc2MgPSBTdGRsaWIuZnN0IHBvZl9kZXNjO1xuICAgICAgICAgICAgcG9mX2xvYyA9IFN0ZGxpYi5mc3QgcG9mX2xvYztcbiAgICAgICAgICAgIHBvZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBvZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBTdGRsaWIuc25kIHBvZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggT3RhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPdGFnXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSBTdGRsaWIuZnN0IHBwYXRfZGVzYztcbiAgICAgICAgICAgIHBwYXRfbG9jID0gU3RkbGliLmZzdCBwcGF0X2xvYztcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBTdGRsaWIuc25kIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbnlcIiBbXSlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9pbnRlcnZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2ludGVydmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSBTdGRsaWIuZnN0IHBleHBfZGVzYztcbiAgICAgICAgICAgIHBleHBfbG9jID0gU3RkbGliLmZzdCBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBTdGRsaWIuc25kIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW5jdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5jdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbWF0Y2ggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9tYXRjaFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdHJ5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHJ5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9maWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZpZWxkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRmaWVsZFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfaWZ0aGVuZWxzZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWZ0aGVuZWxzZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXF1ZW5jZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlcXVlbmNlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfd2hpbGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF93aGlsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICAoIFBleHBfZm9yXG4gICAgICAgICAgICAgICAgKCBTdGRsaWIuZnN0IGEsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGIsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGMsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGQsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGUgKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mb3JcIlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYTtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYjtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYztcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZDtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZTtcbiAgICAgICAgICAgICAgICBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2NvZXJjZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29lcmNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlbmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZW5kXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX25ldyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0aW5zdHZhciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGluc3R2YXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX292ZXJyaWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX292ZXJyaWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRtb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRleGNlcHRpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Fzc2VydCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hc3NlcnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfb2JqZWN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3dHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRvcCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRvcFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgKFBleHBfdW5yZWFjaGFibGUsIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdW5yZWFjaGFibGVcIiBbXSlcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY19saHMgPSBTdGRsaWIuZnN0IHBjX2xocztcbiAgICAgICAgICAgIHBjX2d1YXJkID0gU3RkbGliLmZzdCBwY19ndWFyZDtcbiAgICAgICAgICAgIHBjX3JocyA9IFN0ZGxpYi5mc3QgcGNfcmhzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjX2xoc1wiLCBTdGRsaWIuc25kIHBjX2xocyk7XG4gICAgICAgICAgICAgIChcInBjX2d1YXJkXCIsIFN0ZGxpYi5zbmQgcGNfZ3VhcmQpO1xuICAgICAgICAgICAgICAoXCJwY19yaHNcIiwgU3RkbGliLnNuZCBwY19yaHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxldF8gPSBTdGRsaWIuZnN0IGxldF87XG4gICAgICAgICAgICBhbmRzID0gU3RkbGliLmZzdCBhbmRzO1xuICAgICAgICAgICAgYm9keSA9IFN0ZGxpYi5mc3QgYm9keTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsZXRfXCIsIFN0ZGxpYi5zbmQgbGV0Xyk7XG4gICAgICAgICAgICAgIChcImFuZHNcIiwgU3RkbGliLnNuZCBhbmRzKTtcbiAgICAgICAgICAgICAgKFwiYm9keVwiLCBTdGRsaWIuc25kIGJvZHkpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGJvcF9vcCA9IFN0ZGxpYi5mc3QgcGJvcF9vcDtcbiAgICAgICAgICAgIHBib3BfcGF0ID0gU3RkbGliLmZzdCBwYm9wX3BhdDtcbiAgICAgICAgICAgIHBib3BfZXhwID0gU3RkbGliLmZzdCBwYm9wX2V4cDtcbiAgICAgICAgICAgIHBib3BfbG9jID0gU3RkbGliLmZzdCBwYm9wX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwYm9wX29wXCIsIFN0ZGxpYi5zbmQgcGJvcF9vcCk7XG4gICAgICAgICAgICAgIChcInBib3BfcGF0XCIsIFN0ZGxpYi5zbmQgcGJvcF9wYXQpO1xuICAgICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBTdGRsaWIuc25kIHBib3BfZXhwKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgU3RkbGliLnNuZCBwYm9wX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2YWxfbmFtZSA9IFN0ZGxpYi5mc3QgcHZhbF9uYW1lO1xuICAgICAgICAgICAgcHZhbF90eXBlID0gU3RkbGliLmZzdCBwdmFsX3R5cGU7XG4gICAgICAgICAgICBwdmFsX3ByaW0gPSBTdGRsaWIuZnN0IHB2YWxfcHJpbTtcbiAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZhbF9sb2MgPSBTdGRsaWIuZnN0IHB2YWxfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBTdGRsaWIuc25kIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBTdGRsaWIuc25kIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBTdGRsaWIuc25kIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIFN0ZGxpYi5zbmQgcHZhbF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWUgPSBTdGRsaWIuZnN0IHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gU3RkbGliLmZzdCBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBTdGRsaWIuZnN0IHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgU3RkbGliLnNuZCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgU3RkbGliLnNuZCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgU3RkbGliLnNuZCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgU3RkbGliLnNuZCBwdHlwZV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9hYnN0cmFjdFwiIFtdKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV92YXJpYW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV92YXJpYW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9vcGVuXCIgW10pXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBsZF9uYW1lID0gU3RkbGliLmZzdCBwbGRfbmFtZTtcbiAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gU3RkbGliLmZzdCBwbGRfbXV0YWJsZTtcbiAgICAgICAgICAgIHBsZF90eXBlID0gU3RkbGliLmZzdCBwbGRfdHlwZTtcbiAgICAgICAgICAgIHBsZF9sb2MgPSBTdGRsaWIuZnN0IHBsZF9sb2M7XG4gICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgU3RkbGliLnNuZCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIFN0ZGxpYi5zbmQgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBTdGRsaWIuc25kIHBsZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBTdGRsaWIuc25kIHBsZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZF9uYW1lID0gU3RkbGliLmZzdCBwY2RfbmFtZTtcbiAgICAgICAgICAgIHBjZF92YXJzID0gU3RkbGliLmZzdCBwY2RfdmFycztcbiAgICAgICAgICAgIHBjZF9hcmdzID0gU3RkbGliLmZzdCBwY2RfYXJncztcbiAgICAgICAgICAgIHBjZF9yZXMgPSBTdGRsaWIuZnN0IHBjZF9yZXM7XG4gICAgICAgICAgICBwY2RfbG9jID0gU3RkbGliLmZzdCBwY2RfbG9jO1xuICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBTdGRsaWIuc25kIHBjZF92YXJzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgU3RkbGliLnNuZCBwY2RfYXJncyk7XG4gICAgICAgICAgICAgIChcInBjZF9yZXNcIiwgU3RkbGliLnNuZCBwY2RfcmVzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBTdGRsaWIuc25kIHBjZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBTdGRsaWIuZnN0IHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jID0gU3RkbGliLmZzdCBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgU3RkbGliLnNuZCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgU3RkbGliLnNuZCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gU3RkbGliLmZzdCBwZXh0X25hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBTdGRsaWIuZnN0IHBleHRfa2luZDtcbiAgICAgICAgICAgIHBleHRfbG9jID0gU3RkbGliLmZzdCBwZXh0X2xvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBTdGRsaWIuc25kIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBTdGRsaWIuc25kIHBleHRfa2luZCk7XG4gICAgICAgICAgICAgIChcInBleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBTdGRsaWIuZnN0IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIHB0eWV4bl9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4bl9sb2M7XG4gICAgICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHRfZGVjbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfZGVjbFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHRfcmViaW5kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X3JlYmluZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0eV9kZXNjO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBTdGRsaWIuZnN0IHBjdHlfbG9jO1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgU3RkbGliLnNuZCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGN0eV9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3NpZ19zZWxmID0gU3RkbGliLmZzdCBwY3NpZ19zZWxmO1xuICAgICAgICAgICAgcGNzaWdfZmllbGRzID0gU3RkbGliLmZzdCBwY3NpZ19maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzaWdfc2VsZlwiLCBTdGRsaWIuc25kIHBjc2lnX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3NpZ19maWVsZHNcIiwgU3RkbGliLnNuZCBwY3NpZ19maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gU3RkbGliLmZzdCBwY3RmX2Rlc2M7XG4gICAgICAgICAgICBwY3RmX2xvYyA9IFN0ZGxpYi5mc3QgcGN0Zl9sb2M7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBTdGRsaWIuc25kIHBjdGZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX3ZhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjaV92aXJ0ID0gU3RkbGliLmZzdCBwY2lfdmlydDtcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBTdGRsaWIuZnN0IHBjaV9wYXJhbXM7XG4gICAgICAgICAgICBwY2lfbmFtZSA9IFN0ZGxpYi5mc3QgcGNpX25hbWU7XG4gICAgICAgICAgICBwY2lfZXhwciA9IFN0ZGxpYi5mc3QgcGNpX2V4cHI7XG4gICAgICAgICAgICBwY2lfbG9jID0gU3RkbGliLmZzdCBwY2lfbG9jO1xuICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIFN0ZGxpYi5zbmQgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNpX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBTdGRsaWIuc25kIHBjaV9leHByKTtcbiAgICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBTdGRsaWIuc25kIHBjaV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSBTdGRsaWIuZnN0IHBjbF9kZXNjO1xuICAgICAgICAgICAgcGNsX2xvYyA9IFN0ZGxpYi5mc3QgcGNsX2xvYztcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBTdGRsaWIuc25kIHBjbF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBTdGRsaWIuc25kIHBjbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBjbF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjbF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNsX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3N0cl9zZWxmID0gU3RkbGliLmZzdCBwY3N0cl9zZWxmO1xuICAgICAgICAgICAgcGNzdHJfZmllbGRzID0gU3RkbGliLmZzdCBwY3N0cl9maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzdHJfc2VsZlwiLCBTdGRsaWIuc25kIHBjc3RyX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3N0cl9maWVsZHNcIiwgU3RkbGliLnNuZCBwY3N0cl9maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZl9kZXNjID0gU3RkbGliLmZzdCBwY2ZfZGVzYztcbiAgICAgICAgICAgIHBjZl9sb2MgPSBTdGRsaWIuZnN0IHBjZl9sb2M7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjZl9sb2NcIiwgU3RkbGliLnNuZCBwY2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjZl9pbmhlcml0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaGVyaXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBjZl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfaW5pdGlhbGl6ZXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbml0aWFsaXplclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIENma192aXJ0dWFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfdmlydHVhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBDZmtfY29uY3JldGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX2NvbmNyZXRlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcG10eV9kZXNjO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBTdGRsaWIuZnN0IHBtdHlfbG9jO1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcG10eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgU3RkbGliLnNuZCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV93aXRoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfd2l0aFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfdHlwZW9mIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3R5cGVvZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2FsaWFzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2FsaWFzXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgc2VsZiNjb25zdHIgY3R4IFwiVW5pdFwiIFtdKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggTmFtZWQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTmFtZWRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgICggeyBwc2lnX2Rlc2MgPSBTdGRsaWIuZnN0IHBzaWdfZGVzYzsgcHNpZ19sb2MgPSBTdGRsaWIuZnN0IHBzaWdfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzaWdfZGVzY1wiLCBTdGRsaWIuc25kIHBzaWdfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzaWdfbG9jXCIsIFN0ZGxpYi5zbmQgcHNpZ19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ192YWx1ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ192YWx1ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ19leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gU3RkbGliLmZzdCBwbWRfbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gU3RkbGliLmZzdCBwbWRfdHlwZTtcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtZF9sb2MgPSBTdGRsaWIuZnN0IHBtZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgU3RkbGliLnNuZCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG1kX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBTdGRsaWIuc25kIHBtZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBTdGRsaWIuZnN0IHBtc19uYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwbXNfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXNfbG9jID0gU3RkbGliLmZzdCBwbXNfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtc19uYW1lXCIsIFN0ZGxpYi5zbmQgcG1zX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBTdGRsaWIuc25kIHBtc19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdGRfbmFtZSA9IFN0ZGxpYi5mc3QgcG10ZF9uYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gU3RkbGliLmZzdCBwbXRkX3R5cGU7XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtdGRfbG9jID0gU3RkbGliLmZzdCBwbXRkX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgU3RkbGliLnNuZCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgU3RkbGliLnNuZCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBTdGRsaWIuc25kIHBtdGRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IFN0ZGxpYi5mc3QgcG9wZW5fZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gU3RkbGliLmZzdCBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgIHBvcGVuX2xvYyA9IFN0ZGxpYi5mc3QgcG9wZW5fbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIFN0ZGxpYi5zbmQgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIFN0ZGxpYi5zbmQgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgU3RkbGliLnNuZCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwaW5jbF9tb2QgPSBTdGRsaWIuZnN0IHBpbmNsX21vZDtcbiAgICAgICAgICAgIHBpbmNsX2xvYyA9IFN0ZGxpYi5mc3QgcGluY2xfbG9jO1xuICAgICAgICAgICAgcGluY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgU3RkbGliLnNuZCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgU3RkbGliLnNuZCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlc3Vic3RcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2RzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFN0ZGxpYi5mc3QgcG1vZF9kZXNjO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBTdGRsaWIuZnN0IHBtb2RfbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIFN0ZGxpYi5zbmQgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgU3RkbGliLnNuZCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2Rfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgICggeyBwc3RyX2Rlc2MgPSBTdGRsaWIuZnN0IHBzdHJfZGVzYzsgcHN0cl9sb2MgPSBTdGRsaWIuZnN0IHBzdHJfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzdHJfZGVzY1wiLCBTdGRsaWIuc25kIHBzdHJfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzdHJfbG9jXCIsIFN0ZGxpYi5zbmQgcHN0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3ZhbHVlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3ByaW1pdGl2ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9wcmltaXRpdmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gU3RkbGliLmZzdCBwdmJfcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBTdGRsaWIuZnN0IHB2Yl9leHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZiX2xvYyA9IFN0ZGxpYi5mc3QgcHZiX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIFN0ZGxpYi5zbmQgcHZiX3BhdCk7XG4gICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIFN0ZGxpYi5zbmQgcHZiX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBTdGRsaWIuc25kIHB2Yl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBTdGRsaWIuZnN0IHBtYl9uYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBTdGRsaWIuZnN0IHBtYl9leHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1iX2xvYyA9IFN0ZGxpYi5mc3QgcG1iX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBTdGRsaWIuc25kIHBtYl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgU3RkbGliLnNuZCBwbWJfZXhwcik7XG4gICAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWJfbG9jXCIsIFN0ZGxpYi5zbmQgcG1iX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGVmIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RlZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kaXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGlyXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyX25hbWUgPSBTdGRsaWIuZnN0IHBkaXJfbmFtZTtcbiAgICAgICAgICAgIHBkaXJfYXJnID0gU3RkbGliLmZzdCBwZGlyX2FyZztcbiAgICAgICAgICAgIHBkaXJfbG9jID0gU3RkbGliLmZzdCBwZGlyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgU3RkbGliLnNuZCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBTdGRsaWIuc25kIHBkaXJfYXJnKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgU3RkbGliLnNuZCBwZGlyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJhX2Rlc2MgPSBTdGRsaWIuZnN0IHBkaXJhX2Rlc2M7XG4gICAgICAgICAgICBwZGlyYV9sb2MgPSBTdGRsaWIuZnN0IHBkaXJhX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyYV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGRpcmFfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBkaXJhX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJhX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfc3RyaW5nIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX3N0cmluZ1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGRpcl9pbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfYm9vbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9ib29sXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzICogJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbltAQEBlbmRdXG5bQEBAZW5kXVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnRcblxubGV0IHRvX2V4dGVuc2lvbiAoZXJyb3IgOiBBc3RsaWIuTG9jYXRpb24uRXJyb3IudCkgPVxuICBsZXQgb3BlbiBBc3RsaWIuTG9jYXRpb24uRXJyb3IgaW5cbiAgbGV0IG9wZW4gQXN0X2hlbHBlciBpblxuICBpZiBub3QgKGlzX3dlbGxfZm9ybWVkIGVycm9yKSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJ0b19leHRlbnNpb246IGV4cGVjdGVkIGtpbmQgUmVwb3J0X2Vycm9yXCIpO1xuICBsZXQgc3ViX21zZ3MgPSBzdWJfbXNncyBlcnJvciBpblxuICBsZXQgbWFpbl9tc2cgPSBtYWluX21zZyBlcnJvciBpblxuICBsZXQgZXJyX2V4dGVuc2lvbl9uYW1lIGxvYyA9IHsgTG9jYXRpb24ubG9jOyB0eHQgPSBcIm9jYW1sLmVycm9yXCIgfSBpblxuICBsZXQgbWtfc3RyaW5nX2NvbnN0YW50IHggPSBTdHIuZXZhbCAoRXhwLmNvbnN0YW50IChDb25zdC5zdHJpbmcgeCkpIGluXG4gIGxldCBleHRlbnNpb25fb2Zfc3ViX21zZyAoc3ViX21zZyA6IHN0cmluZyBMb2NhdGlvbi5sb2MpID1cbiAgICBTdHIuZXh0ZW5zaW9uXG4gICAgICAoZXJyX2V4dGVuc2lvbl9uYW1lIHN1Yl9tc2cubG9jLCBQU3RyIFsgbWtfc3RyaW5nX2NvbnN0YW50IHN1Yl9tc2cudHh0IF0pXG4gIGluXG4gICggZXJyX2V4dGVuc2lvbl9uYW1lIG1haW5fbXNnLmxvYyxcbiAgICBQYXJzZXRyZWUuUFN0clxuICAgICAgKG1rX3N0cmluZ19jb25zdGFudCBtYWluX21zZy50eHQgOjogTGlzdC5tYXAgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgc3ViX21zZ3MpXG4gIClcblxubGV0IHJlZ2lzdGVyX2Vycm9yX29mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5yZWdpc3Rlcl9lcnJvcl9vZl9leG5cblxubGV0IG1lc3NhZ2UgZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24udHh0OyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgdHh0XG5cbmxldCBzZXRfbWVzc2FnZSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9tc2dcblxubGV0IG1ha2UgfmxvYyB0eHQgfnN1YiA9XG4gIGxldCBzdWIgPSBMaXN0Lm1hcCAoZnVuIChsb2MsIHR4dCkgLT4geyBBc3RsaWIuTG9jYXRpb24ubG9jOyB0eHQgfSkgc3ViIGluXG4gIEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWtlIH5zdWIgeyBsb2M7IHR4dCB9XG5cbmxldCB1cGRhdGVfbG9jID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX2xvY1xuXG5sZXQgZ2V0X2xvY2F0aW9uIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIGxvY1xuXG5sZXQgb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm9mX2V4blxubGV0IHJhaXNlIGVycm9yID0gcmFpc2UgKEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBlcnJvcilcbiIsIm1vZHVsZSBEb19ub3RfdXNlX2RpcmVjdGx5ID0gc3RydWN0IGVuZFxubW9kdWxlIEFmbF9pbnN0cnVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFmbF9pbnN0cnVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBBbGlhc19hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGlhc19hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxsb2NhdGVkX2NvbnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsbG9jYXRlZF9jb25zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEFyY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXJjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgQXJnX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFyZ19oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21nZW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3R0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXR0cl9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BdHRyX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQmFja2VuZF9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBCYWNrZW5kX3ZhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CYWNrZW5kX3ZhciBpbnN0ZWFkXCJdXG5tb2R1bGUgQmludXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CaW51dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb25faW50ZiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfZXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnVpbGRfZXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX3BhdGhfcHJlZml4X21hcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWxkX3BhdGhfcHJlZml4X21hcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbHRpbl9hdHRyaWJ1dGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbHRpbl9hdHRyaWJ1dGVzIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVwYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlc2VjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CeXRlc2VjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIENTRSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0UgaW5zdGVhZFwiXVxubW9kdWxlIENTRWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0VnZW4gaW5zdGVhZFwiXVxubW9kdWxlIENhbWxpbnRlcm5hbE1lbmhpckxpYiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNhbWxpbnRlcm5hbE1lbmhpckxpYiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2NvbXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DY29tcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDbGZsYWdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2xmbGFncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb25fYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbl9hdXggaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfZWxlbWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2VsZW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vZmZzZXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb2Zmc2V0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIENtaV9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbWlfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faGVscGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faGVscGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW4gaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbl9zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW5fc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIENtb19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENtdDJhbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdDJhbm5vdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ210X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdF9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENteF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENteHNfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb2xvcmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db2xvcmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tYmFsbG9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbWJhbGxvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGF0aW9uX3VuaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsYXRpb25fdW5pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQ29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21waWxlX2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcG1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wbWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uZmlnIGluc3RlYWRcIl1cbm1vZHVsZSBDb25zaXN0YmwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25zaXN0YmwgaW5zdGVhZFwiXVxubW9kdWxlIENvbnZlcnRfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db252ZXJ0X3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEN0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ3R5cGUgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFmbG93ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRhdGFmbG93IGluc3RlYWRcIl1cbm1vZHVsZSBEYXRhcmVwciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRhdGFyZXByIGluc3RlYWRcIl1cbm1vZHVsZSBEZWFkY29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5EZWFkY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVidWdpbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGVidWdpbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBEZXBlbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EaWZmaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBEbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EbGwgaW5zdGVhZFwiXVxubW9kdWxlIERvY3N0cmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Eb2NzdHJpbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBEb21haW5zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvbWFpbnN0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBFZmZlY3RfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRWZmZWN0X2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVtaXQgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRhdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdGF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGNvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVtaXRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBFbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FbnYgaW5zdGVhZFwiXVxubW9kdWxlIEVudmF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudmF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5FcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIEVycm9ydHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FcnJvcnRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2lkIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2luZm9fZm9yX3BhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2luZm9fZm9yX3BhY2sgaW5zdGVhZFwiXVxubW9kdWxlIEV4cHVuZ2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEV4dHJhY3RfcHJvamVjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXh0cmFjdF9wcm9qZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZpbmRfcmVjdXJzaXZlX2Z1bmN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2l0ZXJhdG9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2l0ZXJhdG9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV90b19jbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdG9fY2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV91dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX3V0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBGcmVzaGVuaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZyZXNoZW5pbmcgaW5zdGVhZFwiXVxubW9kdWxlIEdlbnByaW50dmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5HZW5wcmludHZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSWRfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50aWZpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLklkZW50aWZpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW1wb3J0X2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbXBvcnRfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlbW9kX2Vycm9ycHJpbnRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2RfZXJyb3JwcmludGVyIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNvbnN0YW50X2lkZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmNvbnN0YW50X2lkZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5pdGlhbGl6ZV9zeW1ib2xfdG9fbGV0X3N5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Jbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmVfYW5kX3NpbXBsaWZ5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnkgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnlfYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnlfYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19jb3N0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2Nvc3QgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2RlY2lzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19kZWNpc2lvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfc3RhdHNfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfc3RhdHNfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX3RyYW5zZm9ybXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfdHJhbnNmb3JtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5zdHJ1Y3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkluc3RydWN0IGluc3RlYWRcIl1cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVyZiBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgaW5zdGVhZFwiXVxubW9kdWxlIEludGVydmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVydmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJbnZhcmlhbnRfcGFyYW1zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludmFyaWFudF9wYXJhbXMgaW5zdGVhZFwiXVxubW9kdWxlIExhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGF6eV9iYWNrdHJhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MYXp5X2JhY2t0cmFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgTGV4ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MZXhlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb25zdGFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXJfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcl9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcml6ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXJpemUgaW5zdGVhZFwiXVxubW9kdWxlIExpbmthZ2VfbmFtZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5rYWdlX25hbWUgaW5zdGVhZFwiXVxubW9kdWxlIExpbnNjYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluc2NhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTGl2ZW5lc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGl2ZW5lc3MgaW5zdGVhZFwiXVxubW9kdWxlIExvYWRfcGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvYWRfcGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYWxfc3RvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhbF9zdG9yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9uZ2lkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50IGluc3RlYWRcIl1cbm1vZHVsZSBNYWNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIE1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE1haW5fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1haW5fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbmRyaXZlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuTWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFrZWRlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ha2VkZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIE1hdGNoaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWF0Y2hpbmcgaW5zdGVhZFwiXVxubW9kdWxlIE1ldGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NZXRhIGluc3RlYWRcIl1cbm1vZHVsZSBNaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgTXR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTXV0YWJsZV92YXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5NdXRhYmxlX3ZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBOdW1iZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTnVtYmVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3Bjb2RlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wY29kZXMgaW5zdGVhZFwiXVxubW9kdWxlIE9wcmludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wcmludCBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0Y29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRjb21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRlcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0ZXJyb3JzIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBPcHRtYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdG1haW5kcml2ZXIgaW5zdGVhZFwiXVxubW9kdWxlIE91dGNvbWV0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXJhbWV0ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFyYW1ldGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJzZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNldHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgUGFzc193cmFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBhc3Nfd3JhcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhdGggaW5zdGVhZFwiXVxubW9kdWxlIFBhdHRlcm5zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0dGVybnMgaW5zdGVhZFwiXVxubW9kdWxlIFBlcnNpc3RlbnRfZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGVyc2lzdGVudF9lbnYgaW5zdGVhZFwiXVxubW9kdWxlIFBvbGxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUG9sbGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQcHJpbnRhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbWl0aXZlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbWl0aXZlIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50YXN0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbW0gaW5zdGVhZFwiXVxubW9kdWxlIFByaW50aW5zdHIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLlByaW50aW5zdHIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGluZWFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50bGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludG1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRtYWNoIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHBhdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50cGF0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50dHlwIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXBlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9jIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9maWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJvZmlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvamVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9qZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBSZWNfY2hlY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5SZWNfY2hlY2sgaW5zdGVhZFwiXVxubW9kdWxlIFJlZl90b192YXJpYWJsZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVmX3RvX3ZhcmlhYmxlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUnVudGltZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJ1bnRpbWVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZHVsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkdWxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3RnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFNlbWFudGljc19vZl9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbWFudGljc19vZl9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIFNoYXJlX2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaGFyZV9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpZ25hdHVyZV9ncm91cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNpZ25hdHVyZV9ncm91cCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxlX3ZhbHVlX2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGVfdmFsdWVfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2ltcGxpZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BpbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BpbGwgaW5zdGVhZFwiXVxubW9kdWxlIFNwbGl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNwbGl0IGluc3RlYWRcIl1cbm1vZHVsZSBTdGF0aWNfZXhjZXB0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YXRpY19leGNlcHRpb24gaW5zdGVhZFwiXVxubW9kdWxlIFN0cm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0cm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFN1YnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Vic3QgaW5zdGVhZFwiXVxubW9kdWxlIFN3aXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN3aXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltdGFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW10YWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ludGF4ZXJyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ludGF4ZXJyIGluc3RlYWRcIl1cbm1vZHVsZSBUYWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVGFnIGluc3RlYWRcIl1cbm1vZHVsZSBUYXJnZXRpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXJnZXRpbnQgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBUZXJtaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRlcm1pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bjb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGNvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wZGlycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wZGlycyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wZXZhbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wZXZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wbG9vcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbG9vcCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wbWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbWFpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wc3RhcnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFRyYWNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5UcmFjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsYXR0cmlidXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsYXR0cmlidXRlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xvYmogPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xvYmogaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbHByaW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xwcmltIGluc3RlYWRcIl1cbm1vZHVsZSBUcmF2ZXJzZV9mb3JfZXhwb3J0ZWRfc3ltYm9scyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UcmF2ZXJzZV9mb3JfZXhwb3J0ZWRfc3ltYm9scyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9pbW1lZGlhY3kgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3Byb3BlcnRpZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9wcm9wZXJ0aWVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9zZXBhcmFiaWxpdHkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9zZXBhcmFiaWxpdHkgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3VuYm94ZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF91bmJveGVkIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF92YXJpYW5jZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3ZhcmlhbmNlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZHRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZHRyZWUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlb3B0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW9wdCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZXRleHAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBldGV4cCBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5fYW5mID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuX2FuZiBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfY2xvc3VyZXMgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW50eXBlYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVW50eXBlYXN0IGluc3RlYWRcIl1cbm1vZHVsZSBWYXJfd2l0aGluX2Nsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyX3dpdGhpbl9jbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBWYXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgV2FybmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5XYXJuaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2FzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgWDg2X2RzbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZHNsIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfZ2FzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9nYXMgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9tYXNtID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9tYXNtIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfcHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfcHJvYyBpbnN0ZWFkXCJdXG4iLCJvcGVuIFN0ZExhYmVsc1xuXG5sZXQgcGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzID1cbiAgbGV0IGFyZ3MgPVxuICAgIExpc3QuY29uY2F0XG4gICAgICBbXG4gICAgICAgIFsgXCIta2VlcC13aGl0ZXNwYWNlXCIgXTtcbiAgICAgICAgWyBcIi1sb2NhdGlvbi1zdHlsZSBvbWFrZVwiIF07XG4gICAgICAgIChpZiB1c2VfY29sb3IgdGhlbiBbXSBlbHNlIFsgXCItYXNjaWlcIiBdKTtcbiAgICAgICAgZXh0cmFfcGF0ZGlmZl9hcmdzO1xuICAgICAgXVxuICBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKFwicGF0ZGlmZlwiIDo6IGFyZ3MpXG5cbmxldCBwcmludCA/ZGlmZl9jb21tYW5kID8oZXh0cmFfcGF0ZGlmZl9hcmdzID0gW10pID8odXNlX2NvbG9yID0gZmFsc2UpIH5maWxlMVxuICAgIH5maWxlMiAoKSA9XG4gIGxldCBleGVjIGNtZCA9XG4gICAgbGV0IGNtZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIDE+JjJcIiBjbWQgKEZpbGVuYW1lLnF1b3RlIGZpbGUxKVxuICAgICAgICAoRmlsZW5hbWUucXVvdGUgZmlsZTIpXG4gICAgaW5cbiAgICBtYXRjaCBTeXMuY29tbWFuZCBjbWQgd2l0aFxuICAgIHwgMCAtPiBgU2FtZVxuICAgIHwgMSAtPiBgRGlmZmVyZW50XG4gICAgfCBuIC0+IGBFcnJvciAobiwgY21kKVxuICBpblxuICBtYXRjaCBkaWZmX2NvbW1hbmQgd2l0aFxuICB8IFNvbWUgcyAtPiBpZ25vcmUgKGV4ZWMgcyA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIGV4ZWMgKHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncykgd2l0aFxuICAgICAgfCBgU2FtZSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgcHJvZHVjZWQgbm8gb3V0cHV0LCBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICAgICAgfCBgRGlmZmVyZW50IC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBzdWNjZXNzZnVsbHkgZm91bmQgYSBkaWZmZXJlbmNlICopXG4gICAgICAgICAgKClcbiAgICAgIHwgYEVycm9yIChlcnJfY29kZSwgY21kKSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgdGhyZXcgYW4gZXJyb3IuLi4gcGVyaGFwcyBpdCB3YXNuJ3QgaW5zdGFsbGVkPyBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRXJyb3I6XFxuXFxcbiAgICAgICAgICAgICA+ICVTIGV4aXRlZCB3aXRoIGNvZGUgJWRcXG5cXFxuICAgICAgICAgICAgID4gUGVyaGFwcyBwYXRkaWZmIGlzIG5vdCBpbnN0YWxsZWQ/IEhpbnQsIHRyeTogb3BhbSBpbnN0YWxsIHBhdGRpZmZcXG5cXFxuICAgICAgICAgICAgID4gRmFsbGluZyBiYWNrIHRvIGRpZmYgLXVcXG5cXG5cIlxuICAgICAgICAgICAgY21kIGVycl9jb2RlO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSkpXG4iLCJ0eXBlIGRlcml2ZXIgPSAuLlxuXG5sZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgNDJcblxubGV0IHJlZ2lzdGVyIG5hbWUgZGVyaXZlciA9XG4gIGlmIEhhc2h0YmwubWVtIGFsbCBuYW1lIHRoZW5cbiAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgIFwiUHB4X2Rlcml2aWVycy5yZWdpc3RlcjogJVMgaXMgYWxyZWFkeSByZWdpc3RlcmVkXCIgbmFtZTtcbiAgSGFzaHRibC5hZGQgYWxsIG5hbWUgZGVyaXZlclxuXG5sZXQgbG9va3VwIG5hbWUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgYWxsIG5hbWUgd2l0aFxuICB8IGRydiAtPiBTb21lIGRydlxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZGVyaXZlcnMgKCkgPVxuICBIYXNodGJsLmZvbGQgKGZ1biBuYW1lIGRydiBhY2MgLT4gKG5hbWUsIGRydikgOjogYWNjKSBhbGwgW11cbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgbWFwID0gJ2EgLT4gJ2FcbiAgdHlwZSAnYSBpdGVyID0gJ2EgLT4gdW5pdFxuICB0eXBlICgnYSwgJ2FjYykgZm9sZCA9ICdhIC0+ICdhY2MgLT4gJ2FjY1xuICB0eXBlICgnYSwgJ2FjYykgZm9sZF9tYXAgPSAnYSAtPiAnYWNjIC0+ICdhICogJ2FjY1xuICB0eXBlICgnY3R4LCAnYSkgbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2FcbiAgdHlwZSAoJ2EsICdyZXMpIGxpZnQgPSAnYSAtPiAncmVzXG4gIHR5cGUgKCdjdHgsICdhLCAncmVzKSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhICogJ3Jlc1xuZW5kXG5cbmNsYXNzIG1hcCA9XG4gIGxldCBhbnkgeCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5tYXAgLT4gJ2Egb3B0aW9uIFQubWFwID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULm1hcCAtPiAnYSBsaXN0IFQubWFwID0gTGlzdC5tYXBcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgYXJyYXkgVC5tYXAgPSBBcnJheS5tYXBcbiAgZW5kXG5cbmNsYXNzIGl0ZXIgPVxuICBsZXQgYW55ID0gaWdub3JlIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQuaXRlciA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULml0ZXIgLT4gJ2Egb3B0aW9uIFQuaXRlciA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGxpc3QgVC5pdGVyID0gTGlzdC5pdGVyXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQuaXRlciAtPiAnYSBhcnJheSBULml0ZXIgPSBBcnJheS5pdGVyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZCA9XG4gIGxldCBhbnkgXyBhY2MgPSBhY2MgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIHggYWNjIC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IGFjYyB8IFNvbWUgeCAtPiBmIHggYWNjXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGFjYyB8IHggOjogbCAtPiBsb29wIGYgbCAoZiB4IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICByIDo9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhclxuICAgICAgICBkb25lO1xuICAgICAgICAhclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGRfbWFwID1cbiAgbGV0IGFueSB4IGFjYyA9ICh4LCBhY2MpIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBhY2MpXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgKFNvbWUgeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBhY2MpXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgbGV0IGwsIGFjYyA9IGxvb3AgZiBsIGFjYyBpblxuICAgICAgICAgICAgKHggOjogbCwgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gKGEsIGFjYylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkgYWNjIGluXG4gICAgICAgICAgbGV0IGEnID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyIGluXG4gICAgICAgICAgICBBcnJheS51bnNhZmVfc2V0IGEnIGkgeDtcbiAgICAgICAgICAgIHIgOj0gYWNjXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAoYScsICFyKVxuICBlbmRcblxuY2xhc3MgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBsZXQgYW55IF8geCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2Egb3B0aW9uKSBULm1hcF93aXRoX2NvbnRleHRcbiAgICAgICAgPVxuICAgICAgZnVuIGYgY3R4IHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgbGlzdCkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+IExpc3QubWFwIChmIGN0eCkgbFxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGFycmF5KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGEgLT4gQXJyYXkubWFwIChmIGN0eCkgYVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZWxmI2NvbnN0ciBcIk5vbmVcIiBbXVxuICAgICAgICB8IFNvbWUgeCAtPiBzZWxmI2NvbnN0ciBcIlNvbWVcIiBbIGYgeCBdXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2VsZiNjb25zdHIgXCJbXVwiIFtdXG4gICAgICAgIHwgeCA6OiBsIC0+IHNlbGYjY29uc3RyIFwiOjpcIiBbIGYgeDsgc2VsZiNsaXN0IGYgbCBdXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBzZWxmI2NvbnN0ciBjdHggXCJOb25lXCIgW10pXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzID0gZiBjdHggeCBpblxuICAgICAgICAgICAgKFNvbWUgeCwgc2VsZiNjb25zdHIgY3R4IFwiU29tZVwiIFsgcmVzIF0pXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBzZWxmI2NvbnN0ciBjdHggXCJbXVwiIFtdKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlc19oZWFkID0gZiBjdHggeCBpblxuICAgICAgICAgICAgbGV0IGwsIHJlc190YWlsID0gc2VsZiNsaXN0IGYgY3R4IGwgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIHNlbGYjY29uc3RyIGN0eCBcIjo6XCIgWyByZXNfaGVhZDsgcmVzX3RhaWwgXSlcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydyZXNdIHN0ZF9saWZ0ZXJzID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdFxuICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0XG5lbmRcblxuY2xhc3MgdHlwZSBbJ2N0eCwgJ3Jlc10gc3RkX2xpZnRfbWFwcGVyc193aXRoX2NvbnRleHQgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICBtZXRob2QgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGFycmF5IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIG9wdGlvbiA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGxpc3QgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbmVuZFxuIiwibW9kdWxlIENhbWwgPSBTdGRsaWIgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTA2XSB1c2UgU3RkbGliIGluc3RlYWRcIl1cbm9wZW4gU3RkbGliXG5vcGVuIFN0ZExhYmVsc1xubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIHR5cGUgQ29tcGFyaXNvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPj0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBtaW4gOiB0IC0+IHQgLT4gdFxuICB2YWwgbWF4IDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0IG1pbiA9IG1pblxuICBsZXQgbWF4ID0gbWF4XG5lbmRcblxuaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5cbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBib29sKVxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEJ5dGVzXG5cbiAgbGV0IHN1Yl9zdHJpbmcgdCB+cG9zIH5sZW4gPSBTdGRsaWIuQnl0ZXMuc3ViX3N0cmluZyB0IHBvcyBsZW5cblxuICBsZXQgYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIFN0ZGxpYi5CeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGNoYXIpXG5lbmRcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IHkgLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICB5XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgcmFpc2UgZXhuXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfZmxvYXRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gZmxvYXQpXG5lbmRcblxubW9kdWxlIEZuID0gc3RydWN0XG4gIGxldCBpZCB4ID0geFxuZW5kXG5cbm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICB3aGlsZSBtZW0gdCBrZXkgZG9cbiAgICAgIHJlbW92ZSB0IGtleVxuICAgIGRvbmU7XG4gICAgYWRkIHQga2V5IGRhdGFcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgaWYgbWVtIHQga2V5IHRoZW4gRXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLmFkZF9leG5cIilcbiAgICBlbHNlIChcbiAgICAgIGFkZCB0IGtleSBkYXRhO1xuICAgICAgT2sgKCkpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGggT2sgKCkgLT4gKCkgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG5cbiAgbGV0IGZpbmRfb3B0IHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGggZGF0YSAtPiBTb21lIGRhdGEgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZpbmRfb3B0IHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgICAgICBhZGRfZXhuIHQgfmtleSB+ZGF0YTtcbiAgICAgICAgZGF0YVxuXG4gIGxldCByZWMgYWRkX2FsaXN0IHQgYWxpc3QgPVxuICAgIG1hdGNoIGFsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE9rICgpXG4gICAgfCAoa2V5LCBkYXRhKSA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gYWRkX2FsaXN0IHQgdGFpbFxuICAgICAgICB8IEVycm9yIChfIDogZXhuKSAtPiBFcnJvciBrZXkpXG5cbiAgbGV0IG9mX2FsaXN0ID9zaXplIGFsaXN0ID1cbiAgICBsZXQgc2l6ZSA9XG4gICAgICBtYXRjaCBzaXplIHdpdGggU29tZSBzaXplIC0+IHNpemUgfCBOb25lIC0+IExpc3QubGVuZ3RoIGFsaXN0XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSBzaXplIGluXG4gICAgbWF0Y2ggYWRkX2FsaXN0IHQgYWxpc3Qgd2l0aCBPayAoKSAtPiBPayB0IHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuXG4gIGxldCBvZl9hbGlzdF9leG4gP3NpemUgYWxpc3QgPVxuICAgIG1hdGNoIG9mX2FsaXN0ID9zaXplIGFsaXN0IHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuXCIpXG5lbmRcblxubW9kdWxlIEluX2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICAgIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGVuYW1lIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5IGZpbGVuYW1lIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2VfaW5cblxuICBsZXQgaW5wdXRfYWxsIHQgPVxuICAgIGxldCByZWMgcmVhZF9hbGxfaW50byB0IGJ1ZiA9XG4gICAgICBtYXRjaCBpbnB1dF9jaGFyIHQgd2l0aFxuICAgICAgfCBjaGFyIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgICAgICAgIHJlYWRfYWxsX2ludG8gdCBidWZcbiAgICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHJlYWRfYWxsX2ludG8gdCBidWY7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCByZWFkX2FsbCBmaWxlbmFtZSA9IHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjppbnB1dF9hbGxcbmVuZFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBtYXhfaW50ID0gbWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5lbmRcblxubW9kdWxlIEVpdGhlciA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcbmVuZFxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgICgqIHNoYWRvdyBub24tdGFpbC1yZWN1cnNpdmUgZnVuY3Rpb25zICopXG4gICAgbGV0IG1lcmdlID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzb2MgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NxID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuXG4gICAgbGV0IHJldl9tYXBpIGxpc3QgfmYgPVxuICAgICAgbGV0IHJlYyByZXZfbWFwaV9hdCBsaXN0IGkgfmYgfmFjYyA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPiByZXZfbWFwaV9hdCB0YWlsIChpICsgMSkgfmYgfmFjYzooZiBpIGhlYWQgOjogYWNjKVxuICAgICAgaW5cbiAgICAgIHJldl9tYXBpX2F0IGxpc3QgMCB+ZiB+YWNjOltdXG5cbiAgICBsZXQgZm9sZF9yaWdodDIgbGlzdDEgbGlzdDIgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0MiAocmV2IGxpc3QxKSAocmV2IGxpc3QyKSB+aW5pdCB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgYWNjKVxuXG4gICAgbGV0IG1hcCBsaXN0IH5mID0gcmV2IChyZXZfbWFwIGxpc3QgfmYpXG4gICAgbGV0IG1hcGkgbGlzdCB+ZiA9IHJldiAocmV2X21hcGkgbGlzdCB+ZilcblxuICAgIGxldCBmb2xkX3JpZ2h0IGxpc3QgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0IChMaXN0LnJldiBsaXN0KSB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+IGYgeCBhY2MpXG5cbiAgICBsZXQgYXBwZW5kIHggeSA9IHJldl9hcHBlbmQgKHJldiB4KSB5XG4gICAgbGV0IGNvbmNhdCBsaXN0ID0gZm9sZF9yaWdodCBsaXN0IH5pbml0OltdIH5mOmFwcGVuZFxuXG4gICAgbGV0IHJldl9jb21iaW5lIGxpc3QxIGxpc3QyID1cbiAgICAgIGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+ICh4LCB5KSA6OiBhY2MpXG5cbiAgICBsZXQgY29tYmluZSBsaXN0MSBsaXN0MiA9IHJldiAocmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIpXG5cbiAgICBsZXQgc3BsaXQgbGlzdCA9XG4gICAgICBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6KFtdLCBbXSkgfmY6KGZ1biAoeCwgeSkgKHhzLCB5cykgLT5cbiAgICAgICAgICAoeCA6OiB4cywgeSA6OiB5cykpXG5cbiAgICBsZXQgbWFwMiBsaXN0MSBsaXN0MiB+ZiA9XG4gICAgICByZXYgKGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IDo6IGFjYykpXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gICAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBwIHggd2l0aFxuICAgICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbClcbiAgICBpblxuICAgIHBhcnQgW10gW10gbFxuXG4gIGxldCBpbml0IH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCB+bGVuIH5wb3MgfmYgfmFjYyA9XG4gICAgICBpZiBwb3MgPj0gbGVuIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICBlbHNlIGxvb3AgfmxlbiB+cG9zOihwb3MgKyAxKSB+ZiB+YWNjOihmIHBvcyA6OiBhY2MpXG4gICAgaW5cbiAgICBsb29wIH5sZW4gfnBvczowIH5mIH5hY2M6W11cblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBbXSAtPiB0cnVlIHwgXyA6OiBfIC0+IGZhbHNlXG5cbiAgbGV0IHJldl9maWx0ZXJfb3B0IGxpc3QgPVxuICAgIGZvbGRfbGVmdCBsaXN0IH5pbml0OltdIH5mOihmdW4gdGFpbCBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGggTm9uZSAtPiB0YWlsIHwgU29tZSBoZWFkIC0+IGhlYWQgOjogdGFpbClcblxuICBsZXQgZmlsdGVyX29wdCBsaXN0ID0gcmV2IChyZXZfZmlsdGVyX29wdCBsaXN0KVxuICBsZXQgZmlsdGVyX21hcCBsaXN0IH5mID0gcmV2X2ZpbHRlcl9vcHQgKHJldl9tYXAgbGlzdCB+ZilcbiAgbGV0IGNvbmNhdF9tYXAgbGlzdCB+ZiA9IGNvbmNhdCAobWFwIGxpc3QgfmYpXG5cbiAgbGV0IHJlYyBmaW5kX21hcCBsaXN0IH5mID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGhlYWQgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGYgaGVhZCB3aXRoIFNvbWUgXyBhcyBzb21lIC0+IHNvbWUgfCBOb25lIC0+IGZpbmRfbWFwIHRhaWwgfmYpXG5cbiAgbGV0IGZpbmRfbWFwX2V4biBsaXN0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCBsaXN0IH5mIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG4gIGxldCByZWMgbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbIHggXSAtPiBTb21lIHhcbiAgICB8IF8gOjogKF8gOjogXyBhcyByZXN0KSAtPiBsYXN0IHJlc3RcblxuICBsZXQgc3BsaXRfd2hpbGUgbGlzdCB+ZiA9XG4gICAgbGV0IHJlYyBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYyA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gZiBoZWFkIC0+IHNwbGl0X3doaWxlX2ludG8gdGFpbCB+ZiB+YWNjOihoZWFkIDo6IGFjYylcbiAgICAgIHwgXyA6OiBfIHwgW10gLT4gKExpc3QucmV2IGFjYywgbGlzdClcbiAgICBpblxuICAgIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjOltdXG5cbiAgbGV0IGZpbmRfYV9kdXAgKHR5cGUgZWx0KSBsaXN0IH5jb21wYXJlID1cbiAgICBsZXQgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZWx0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZCBpblxuICAgIGxldCBtb2R1bGUgRWx0X3NldCA9IFNldC5NYWtlIChFbHQpIGluXG4gICAgbGV0IHJlYyBmaW5kX2FfZHVwX2luIGxpc3QgfnNldCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBFbHRfc2V0Lm1lbSBoZWFkIHNldCB0aGVuIFNvbWUgaGVhZFxuICAgICAgICAgIGVsc2UgZmluZF9hX2R1cF9pbiB0YWlsIH5zZXQ6KEVsdF9zZXQuYWRkIGhlYWQgc2V0KVxuICAgIGluXG4gICAgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQ6RWx0X3NldC5lbXB0eVxuXG4gIGxldCBhc3NvY19vcHQga2V5IGFsaXN0ID1cbiAgICBtYXRjaCBhc3NvYyBrZXkgYWxpc3Qgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gICgqIHJlb3JkZXJzIGFyZ3VtZW50cyB0byBpbXByb3ZlIHR5cGUgaW5mZXJlbmNlICopXG4gIGxldCBpdGVyIGxpc3QgfmYgPSBpdGVyIGxpc3QgfmZcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG4gIGxldCBpdGVyIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG4gIGxldCB0b19saXN0IHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBbXSB8IFNvbWUgeCAtPiBbIHggXVxuZW5kXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGYgYSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGhhbmRsZV9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gYSB8IEVycm9yIGUgLT4gZiBlXG5lbmRcblxubW9kdWxlIE5vbkVtcHR5TGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqICdhIGxpc3RcblxuICBsZXQgKCBAICkgKHQxLCBxMSkgKHQyLCBxMikgPSAodDEsIHExIEAgKHQyIDo6IHEyKSlcbiAgbGV0IGhkID0gZnN0XG4gIGxldCB0b19saXN0ICh0LCBxKSA9IHQgOjogcVxuICBsZXQgbWFwIH5mICh0LCBxKSA9IChmIHQsIExpc3QubWFwIH5mIHEpXG5lbmRcblxubW9kdWxlIE91dF9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSA/KGFwcGVuZCA9IGZhbHNlKSA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NikgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2Vfb3V0XG5cbiAgbGV0IHdyaXRlX2FsbCBmaWxlbmFtZSB+ZGF0YSA9XG4gICAgd2l0aF9maWxlIGZpbGVuYW1lIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGlzX2VtcHR5ICh0IDogdCkgPSBsZW5ndGggdCA9IDBcbiAgbGV0IHByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuXG4gIGxldCBzdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOihsZW5ndGggdCAtIGxlbikgfmxlblxuICBsZXQgZHJvcF9wcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOmxlbiB+bGVuOihsZW5ndGggdCAtIGxlbilcbiAgbGV0IGRyb3Bfc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuXG4gIGxldCBpc19wcmVmaXggdCB+cHJlZml4ID1cbiAgICBsZXQgcmVjIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlblxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgcG9zKSAoZ2V0IHByZWZpeCBwb3MpXG4gICAgICAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczoocG9zICsgMSkgfmxlblxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHByZWZpeFxuICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOjAgfmxlbjoobGVuZ3RoIHByZWZpeClcblxuICBsZXQgaXNfc3VmZml4IHQgfnN1ZmZpeCA9XG4gICAgbGV0IHJlYyBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3MgfnN1ZmZpeF9vZmZzZXQgPVxuICAgICAgcG9zIDwgMFxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgKHN1ZmZpeF9vZmZzZXQgKyBwb3MpKSAoZ2V0IHN1ZmZpeCBwb3MpXG4gICAgICAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3M6KHBvcyAtIDEpIH5zdWZmaXhfb2Zmc2V0XG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggc3VmZml4XG4gICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeFxuICAgICAgICAgfnBvczoobGVuZ3RoIHN1ZmZpeCAtIDEpXG4gICAgICAgICB+c3VmZml4X29mZnNldDoobGVuZ3RoIHQgLSBsZW5ndGggc3VmZml4KVxuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgbGV0IHJlYyBleGlzdHNfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zIDwgbGVuICYmIChmIChnZXQgdCBwb3MpIHx8IGV4aXN0c19hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBleGlzdHNfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgbGV0IHJlYyBmb3JfYWxsX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW4gfHwgKGYgKGdldCB0IHBvcykgJiYgZm9yX2FsbF9hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBmb3JfYWxsX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCBpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGhcbiAgICB8IGkgLT4gU29tZSBpXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgbHNwbGl0MiB0IH5vbiA9XG4gICAgbWF0Y2ggaW5kZXhfb3B0IHQgb24gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICAgU29tZSAoc3ViIHQgfnBvczowIH5sZW46aSwgc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpKVxuXG4gIGxldCBjYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBsb3dlcmNhc2VfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdW5jYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IHNwbGl0X29uX2NoYXIgdCB+c2VwID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyIHNlcCB0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHN0cmluZylcblxuICBtb2R1bGUgTWFwID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgbGV0IGZpbmRfb3B0IGtleSB0ID1cbiAgICAgIG1hdGNoIGZpbmQga2V5IHQgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICBlbmRcblxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFN0cmluZylcbmVuZFxuXG5sZXQgKCBAICkgPSBMaXN0LmFwcGVuZFxubGV0IG91dHB1dCBvYyBieXRlcyB+cG9zIH5sZW4gPSBvdXRwdXQgb2MgYnl0ZXMgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIH5wb3MgfmxlbiA9IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIHBvcyBsZW5cbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTCA9IEFzdGxpYi5Mb2NhdGlvblxuXG50eXBlIHQgPSBsb2NhdGlvbiA9IHtcbiAgbG9jX3N0YXJ0IDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZW5kIDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5sZXQgaW5fZmlsZSBuYW1lID1cbiAgbGV0IGxvYyA9IHsgcG9zX2ZuYW1lID0gbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAtMSB9IGluXG4gIHsgbG9jX3N0YXJ0ID0gbG9jOyBsb2NfZW5kID0gbG9jOyBsb2NfZ2hvc3QgPSB0cnVlIH1cblxubGV0IHNldF9maWxlbmFtZSBsb2MgZm4gPVxuICBsZXQgbG9jX3N0YXJ0ID0geyBsb2MubG9jX3N0YXJ0IHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICBsZXQgbG9jX2VuZCA9IHsgbG9jLmxvY19lbmQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIHsgbG9jIHdpdGggbG9jX3N0YXJ0OyBsb2NfZW5kIH1cblxubGV0IG5vbmUgPSBpbl9maWxlIFwiX25vbmVfXCJcblxubGV0IGluaXQgbGV4YnVmIGZuYW1lID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAwIH1cblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIGZtdCA9IEwucmFpc2VfZXJyb3JmID9sb2MgZm10XG5sZXQgcmVwb3J0X2V4Y2VwdGlvbiA9IEwucmVwb3J0X2V4Y2VwdGlvblxuXG5sZXQgb2ZfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIHtcbiAgICBsb2Nfc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgbG9jX2VuZCA9IGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICB9XG5cbmxldCBwcmludCBwcGYgdCA9XG4gIFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XCJcbiAgICB0LmxvY19zdGFydC5wb3NfZm5hbWUgdC5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAodC5sb2Nfc3RhcnQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuICAgICh0LmxvY19lbmQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuXG50eXBlIG5vbnJlYyAnYSBsb2MgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiB0IH1cblxubGV0IGNvbXBhcmVfcG9zIHAxIHAyID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxldCBjb2x1bW4gcCA9XG4gICAgKCogTWFudWFsIGV4dHJhY3Q6XG4gICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3NfY251bSBhbmQgcG9zX2JvbCBpcyB0aGUgY2hhcmFjdGVyIG9mZnNldFxuICAgICAgIHdpdGhpbiB0aGUgbGluZSAoaS5lLiB0aGUgY29sdW1uIG51bWJlciwgYXNzdW1pbmcgZWFjaCBjaGFyYWN0ZXIgaXNcbiAgICAgICBvbmUgY29sdW1uIHdpZGUpLiAqKVxuICAgIHAucG9zX2NudW0gLSBwLnBvc19ib2xcbiAgaW5cbiAgbWF0Y2ggSW50LmNvbXBhcmUgcDEucG9zX2xudW0gcDIucG9zX2xudW0gd2l0aFxuICB8IDAgLT4gSW50LmNvbXBhcmUgKGNvbHVtbiBwMSkgKGNvbHVtbiBwMilcbiAgfCBuIC0+IG5cblxubGV0IG1pbl9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA8PSAwIHRoZW4gcDEgZWxzZSBwMlxubGV0IG1heF9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA+PSAwIHRoZW4gcDEgZWxzZSBwMlxuXG5sZXQgY29tcGFyZSBsb2MxIGxvYzIgPVxuICBtYXRjaCBjb21wYXJlX3BvcyBsb2MxLmxvY19zdGFydCBsb2MyLmxvY19zdGFydCB3aXRoXG4gIHwgMCAtPiBjb21wYXJlX3BvcyBsb2MxLmxvY19lbmQgbG9jMi5sb2NfZW5kXG4gIHwgbiAtPiBuXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBpbmNsdWRlIFBweGxpYl9hc3QuTG9jYXRpb25fZXJyb3JcblxuICBsZXQgY3JlYXRlZiB+bG9jIGZtdCA9IEZvcm1hdC5rYXNwcmludGYgKGZ1biBzdHIgLT4gbWFrZSB+bG9jIH5zdWI6W10gc3RyKSBmbXRcbmVuZFxuXG5sZXQgZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIGZtdCA9XG4gIEZvcm1hdC5rYXNwcmludGZcbiAgICAoZnVuIHN0ciAtPiBFcnJvci50b19leHRlbnNpb24gQEAgRXJyb3IubWFrZSB+bG9jIH5zdWI6W10gc3RyKVxuICAgIGZtdFxuXG5leGNlcHRpb24gRXJyb3IgPSBMLkVycm9yXG5cbmxldCAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgIHwgRXJyb3IgZSAtPiBTb21lIChFcnJvci5tZXNzYWdlIGUpXG4gICAgfCBfIC0+IE5vbmUpXG4iLCJvcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEV4cGVjdGVkIG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IGZhaWwgbG9jIGV4cGVjdGVkID0gcmFpc2UgKEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSlcblxudHlwZSBjb250ZXh0ID0ge1xuICAoKiBbbWF0Y2hlZF0gY291bnRzIGhvdyBtYW55IGNvbnN0cnVjdG9ycyBoYXZlIGJlZW4gbWF0Y2hlZC4gVGhpcyBpcyB1c2VkIHRvIGZpbmQgd2hhdFxuICAgICBwYXR0ZXJuIG1hdGNoZXMgdGhlIG1vc3Qgc29tZSBwaWVjZSBvZiBhc3QgaW4gW0FzdF9wYXR0ZXJuLmFsdF0uIEluIHRoZSBjYXNlIHdoZXJlXG4gICAgIGFsbCBicmFuY2hlcyBmYWlsIHRvIG1hdGNoLCB3ZSByZXBvcnQgdGhlIGVycm9yIGZyb20gdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlXG4gICAgIG1vc3QuXG5cbiAgICAgVGhpcyBpcyBvbmx5IGluY3JlbWVudGVkIGJ5IGNvbWJpbmF0b3JzIHRoYXQgY2FuIGZhaWwuICopXG4gIG11dGFibGUgbWF0Y2hlZCA6IGludDtcbn1cblxudHlwZSAoJ21hdGNoZWRfdmFsdWUsICdrLCAna19yZXN1bHQpIHQgPVxuICB8IFQgb2YgKGNvbnRleHQgLT4gTG9jYXRpb24udCAtPiAnbWF0Y2hlZF92YWx1ZSAtPiAnayAtPiAna19yZXN1bHQpXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIE0gPVxuICBzdHJ1Y3RcbiAgICBsZXQgYXR0cmlidXRlIH5sb2MgIH5uYW1lICB+cGF5bG9hZCAgPVxuICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG4gICAgbGV0IGJpbmRpbmdfb3AgfmxvYyAgfm9wICB+cGF0ICB+ZXhwICA9XG4gICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG4gICAgbGV0IGNhc2UgfmxocyAgfmd1YXJkICB+cmhzICA9XG4gICAgICB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cbiAgICBsZXQgcGNsX2NvbnN0ciB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9zdHJ1Y3R1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKSB9XG4gICAgbGV0IHBjbF9mdW4gfmxvYyAgeDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBjbF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2xfbGV0IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjbF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpIH1cbiAgICBsZXQgcGNmX2luaGVyaXQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjZl92YWwgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9XG4gICAgbGV0IHBjZl9tZXRob2QgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjZl9jb25zdHJhaW50IH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApIH1cbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKSB9XG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBjZl9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IGNsYXNzX2luZm9zIH5sb2MgIH52aXJ0ICB+cGFyYW1zICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHtcbiAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBjbGFzc19zaWduYXR1cmUgfnNlbGYgIH5maWVsZHMgID1cbiAgICAgIHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgcGN0eV9jb25zdHIgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9zaWduYXR1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9hcnJvdyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjdGZfaW5oZXJpdCB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnZhcnMgIH5hcmdzICB+cmVzICA9XG4gICAgICB7XG4gICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF90dXBsZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfb2JqZWN0IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY2xhc3MgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FsaWFzIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXJpYW50IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9wb2x5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BhY2thZ2UgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBkaXJfc3RyaW5nIH5sb2MgIHgwID1cbiAgICAgIHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9XG4gICAgbGV0IHBkaXJfaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBkaXJfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfVxuICAgIGxldCBwZGlyX2Jvb2wgfmxvYyAgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH1cbiAgICBsZXQgcGV4cF9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RhbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIH5sb2MgIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbWF0Y2ggfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3RyeSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF92YXJpYW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3JlY29yZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZpZWxkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FycmF5IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfd2hpbGUgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZvciB+bG9jICB4MCB4MSB4MiB4MyB4NCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29lcmNlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlbmQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vdmVycmlkZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Fzc2VydCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vYmplY3QgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BhY2sgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRvcCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5sb2MgIH5uYW1lICB+a2luZCAgPVxuICAgICAge1xuICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgaW5jbHVkZV9pbmZvcyB+bG9jICBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfm11dGFibGVfICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGxldG9wIH5sZXRfICB+YW5kcyAgfmJvZHkgID0geyBsZXRfOyBhbmRzOyBib2R5IH1cbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICB+ZW5kXyAgfmdob3N0ICA9XG4gICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bG9jICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gW107IHBtYl9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cGVfOyBwbWRfYXR0cmlidXRlcyA9IFtdOyBwbWRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtb2RfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKSB9XG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtb2RfZnVuY3RvciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF91bnBhY2sgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MCkgfVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5sb2MgIH5uYW1lICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbXR5X2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MCkgfVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfd2l0aCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV90eXBlb2YgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgb3RhZyB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpIH1cbiAgICBsZXQgb2luaGVyaXQgfmxvYyAgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5sb2MgIH5leHByICB+b3ZlcnJpZGUgID1cbiAgICAgIHtcbiAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYW55IH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdGFudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXJpYW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3JlY29yZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FycmF5IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90eXBlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICB+bG51bSAgfmJvbCAgfmNudW0gID1cbiAgICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gbG51bTsgcG9zX2JvbCA9IGJvbDsgcG9zX2NudW0gPSBjbnVtIH1cbiAgICBsZXQgcnRhZyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKSB9XG4gICAgbGV0IHJpbmhlcml0IH5sb2MgIHgwID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH1cbiAgICBsZXQgcHNpZ192YWx1ZSB+bG9jICB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3MgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHNpZ19hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzaWdfZXh0ZW5zaW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX2V2YWwgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ZhbHVlIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfcHJpbWl0aXZlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ByaW1pdGl2ZSB4MCkgfVxuICAgIGxldCBwc3RyX3R5cGUgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3R5cGV4dCB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9tb2R0eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9vcGVuIH5sb2MgIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzIH5sb2MgIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH1cbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9pbmNsdWRlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfmxvYyAgfm5hbWUgIH5hcmcgID1cbiAgICAgIHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH1cbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnBhcmFtcyAgfmNzdHJzICB+a2luZCAgfnByaXZhdGVfIFxuICAgICAgfm1hbmlmZXN0ICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIH5sb2MgIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfmxvYyAgfnBhdGggIH5wYXJhbXMgIH5jb25zdHJ1Y3RvcnMgIH5wcml2YXRlXyAgPVxuICAgICAge1xuICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdmFsdWVfYmluZGluZyB+bG9jICB+cGF0ICB+ZXhwciAgPVxuICAgICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gW107IHB2Yl9sb2MgPSBsb2MgfVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bG9jICB+bmFtZSAgfnR5cGVfICB+cHJpbSAgPVxuICAgICAge1xuICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICB9XG4gIGVuZFxubW9kdWxlIE1ha2UoTG9jOnNpZyB2YWwgbG9jIDogTG9jYXRpb24udCBlbmQpID1cbiAgc3RydWN0XG4gICAgbGV0IGxvYyA9IExvYy5sb2NcbiAgICBsZXQgYXR0cmlidXRlIH5uYW1lICB+cGF5bG9hZCAgPVxuICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG4gICAgbGV0IGJpbmRpbmdfb3Agfm9wICB+cGF0ICB+ZXhwICA9XG4gICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG4gICAgbGV0IGNhc2UgfmxocyAgfmd1YXJkICB+cmhzICA9XG4gICAgICB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cbiAgICBsZXQgcGNsX2NvbnN0ciB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9zdHJ1Y3R1cmUgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKSB9XG4gICAgbGV0IHBjbF9mdW4geDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBjbF9hcHBseSB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2xfbGV0IHgwIHgxIHgyID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjbF9jb25zdHJhaW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpIH1cbiAgICBsZXQgcGNmX2luaGVyaXQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjZl92YWwgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9XG4gICAgbGV0IHBjZl9tZXRob2QgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjZl9jb25zdHJhaW50IHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApIH1cbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKSB9XG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBjZl9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IGNsYXNzX2luZm9zIH52aXJ0ICB+cGFyYW1zICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHtcbiAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBjbGFzc19zaWduYXR1cmUgfnNlbGYgIH5maWVsZHMgID1cbiAgICAgIHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgcGN0eV9jb25zdHIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9hcnJvdyB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjdGZfaW5oZXJpdCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSAgfnZhcnMgIH5hcmdzICB+cmVzICA9XG4gICAgICB7XG4gICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hbnkgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfb2JqZWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY2xhc3MgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FsaWFzIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXJpYW50IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9wb2x5IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BhY2thZ2UgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBkaXJfc3RyaW5nIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH1cbiAgICBsZXQgcGRpcl9pbnQgeDAgeDEgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGRpcl9pZGVudCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH1cbiAgICBsZXQgcGRpcl9ib29sIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9XG4gICAgbGV0IHBleHBfaWRlbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuY3Rpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1bmN0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1biB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXBwbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX21hdGNoIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF90cnkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3RyeSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RydWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdmFyaWFudCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9yZWNvcmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3JlY29yZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9maWVsZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZmllbGQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0ZmllbGQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VxdWVuY2UgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3doaWxlIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mb3IgeDAgeDEgeDIgeDMgeDQgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJhaW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvZXJjZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZW5kIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ldyB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRleGNlcHRpb24geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hc3NlcnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Fzc2VydCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BvbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfb2JqZWN0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3dHlwZSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3dHlwZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0b3AgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG9wIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3VucmVhY2hhYmxlID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3VucmVhY2hhYmxlXG4gICAgICB9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZSAgfmtpbmQgID1cbiAgICAgIHtcbiAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGluY2x1ZGVfaW5mb3MgbW9kXyA9XG4gICAgICB7IHBpbmNsX21vZCA9IG1vZF87IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWUgIH5tdXRhYmxlXyAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBsZXRvcCB+bGV0XyAgfmFuZHMgIH5ib2R5ICA9IHsgbGV0XzsgYW5kczsgYm9keSB9XG4gICAgbGV0IGxvY2F0aW9uIH5zdGFydCAgfmVuZF8gIH5naG9zdCAgPVxuICAgICAgeyBsb2Nfc3RhcnQgPSBzdGFydDsgbG9jX2VuZCA9IGVuZF87IGxvY19naG9zdCA9IGdob3N0IH1cbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWUgIH5leHByICA9XG4gICAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IFtdOyBwbWJfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXBlXzsgcG1kX2F0dHJpYnV0ZXMgPSBbXTsgcG1kX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbW9kX2lkZW50IHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MCkgfVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfYXBwbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfdW5wYWNrIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApIH1cbiAgICBsZXQgcG1vZF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZSAgfm1hbmlmZXN0ICA9XG4gICAgICB7XG4gICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG10eV9pZGVudCB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApIH1cbiAgICBsZXQgcG10eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9mdW5jdG9yIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3dpdGggeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfdHlwZW9mIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV90eXBlb2YgeDApIH1cbiAgICBsZXQgcG10eV9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9hbGlhcyB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfYWxpYXMgeDApIH1cbiAgICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IG90YWcgeDAgeDEgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKSB9XG4gICAgbGV0IG9pbmhlcml0IHgwID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT2luaGVyaXQgeDApIH1cbiAgICBsZXQgb3Blbl9pbmZvcyB+ZXhwciAgfm92ZXJyaWRlICA9XG4gICAgICB7XG4gICAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FueSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbGlhcyB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYWxpYXMgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2ludGVydmFsIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RydWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyaWFudCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9yZWNvcmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHlwZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHlwZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3VucGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdW5wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXhjZXB0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgfmxudW0gIH5ib2wgIH5jbnVtICA9XG4gICAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IGxudW07IHBvc19ib2wgPSBib2w7IHBvc19jbnVtID0gY251bSB9XG4gICAgbGV0IHJ0YWcgeDAgeDEgeDIgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSkgfVxuICAgIGxldCByaW5oZXJpdCB4MCA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9XG4gICAgbGV0IHBzaWdfdmFsdWUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGUgeDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ190eXBleHQgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24geDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2RzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24geDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfZXZhbCB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdmFsdWUgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdHlwZXh0IHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZXh0IHgwKSB9XG4gICAgbGV0IHBzdHJfZXhjZXB0aW9uIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4Y2VwdGlvbiB4MCkgfVxuICAgIGxldCBwc3RyX21vZHVsZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9tb2R0eXBlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX29wZW4geDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3MgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX2luY2x1ZGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzdHJfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lICB+YXJnICA9XG4gICAgICB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9XG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWUgIH5wYXJhbXMgIH5jc3RycyAgfmtpbmQgIH5wcml2YXRlXyAgfm1hbmlmZXN0IFxuICAgICAgPVxuICAgICAge1xuICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBlX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiBjb25zdHJ1Y3RvciA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoICB+cGFyYW1zICB+Y29uc3RydWN0b3JzICB+cHJpdmF0ZV8gID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfnBhdCAgfmV4cHIgID1cbiAgICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IFtdOyBwdmJfbG9jID0gbG9jIH1cbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWUgIH50eXBlXyAgfnByaW0gID1cbiAgICAgIHtcbiAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgfVxuICBlbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiBMb2NhdGlvbi50IH1cblxubGV0IHR4dCB0ID0gdC50eHRcbmxldCBsb2MgdCA9IHQubG9jXG5sZXQgbWFrZSB+bG9jIHR4dCA9IHsgbG9jOyB0eHQgfVxubGV0IG1hcCB0IH5mID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbG9uZ2lkZW50ID0gTGlkZW50IG9mIHN0cmluZyB8IExkb3Qgb2YgdCAqIHN0cmluZyB8IExhcHBseSBvZiB0ICogdFxuXG4gIGxldCBjb21wYXJlIDogdCAtPiB0IC0+IGludCA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnRfY2hhciA9IGZ1bmN0aW9uXG4gICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnXycgfCAnXFwnJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBcImFzclwiIHwgXCJsYW5kXCIgfCBcImxvclwiIHwgXCJsc2xcIiB8IFwibHNyXCIgfCBcImx4b3JcIiB8IFwibW9kXCIgfCBcIm9yXCIgLT4gZmFsc2VcbiAgICB8IHN0cmluZyAtPiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6aXNfbm9ybWFsX2lkZW50X2NoYXJcblxuICBsZXQgc2hvcnRfbmFtZSBzdHJpbmcgPVxuICAgIGlmIGlzX25vcm1hbF9pZGVudCBzdHJpbmcgdGhlbiBzdHJpbmcgZWxzZSBcIiggXCIgXiBzdHJpbmcgXiBcIiApXCJcblxuICBsZXQgcmVjIG5hbWUgPSBmdW5jdGlvblxuICAgIHwgTGlkZW50IHMgLT4gc2hvcnRfbmFtZSBzXG4gICAgfCBMZG90IChhLCBiKSAtPiBuYW1lIGEgXiBcIi5cIiBeIHNob3J0X25hbWUgYlxuICAgIHwgTGFwcGx5IChhLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcIiVzKCVzKVwiIChuYW1lIGEpIChuYW1lIGIpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChuYW1lIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCByZWMgZmxhdCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzIDo6IGFjY3VcbiAgfCBMZG90IChsaWQsIHMpIC0+IGZsYXQgKHMgOjogYWNjdSkgbGlkXG4gIHwgTGFwcGx5IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5Mb25naWRlbnQuZmxhdHRlblwiXG5cbmxldCBmbGF0dGVuX2V4biBsaWQgPSBmbGF0IFtdIGxpZFxuXG5sZXQgbGFzdF9leG4gPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHNcbiAgfCBMZG90IChfLCBzKSAtPiBzXG4gIHwgTGFwcGx5IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5Mb25naWRlbnQuZmxhdHRlblwiXG5cbmxldCB1bmZsYXR0ZW4gfmluaXQgbCA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6KGZ1biBhY2MgcyAtPiBMZG90IChhY2MsIHMpKVxuXG4oKiBmb3IgY2FzZXMgd2l0aG91dCBkb3R0ZWQgb3BlcmF0b3JzIChlLmcuIFtwYXJzZSBcIkEuQi5DXCJdKSAqKVxubGV0IHBhcnNlX3NpbXBsZSBzID1cbiAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicuJyB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgcyA6OiBsIC0+IHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGxcblxuKCogZmluZCB0aGUgZmlyc3QgbWF0Y2hpbmcgcGFpciBvZiBwYXJlbnRoZXNlcyAqKVxubGV0IHJlYyBwYXJlbnRoZXNlcyBscG9zIG9wZW5lZCBwb3MgbGVuIHMgPVxuICBpZiBwb3MgPj0gbGVuIHRoZW4gaWYgb3BlbmVkID4gMCB0aGVuIEVycm9yICgpIGVsc2UgT2sgTm9uZVxuICBlbHNlXG4gICAgbWF0Y2ggcy5bcG9zXSB3aXRoXG4gICAgfCAnKCcgLT5cbiAgICAgICAgbGV0IGxwb3MgPSBpZiBvcGVuZWQgPSAwIHRoZW4gcG9zIGVsc2UgbHBvcyBpblxuICAgICAgICBwYXJlbnRoZXNlcyBscG9zIChvcGVuZWQgKyAxKSAocG9zICsgMSkgbGVuIHNcbiAgICB8ICcpJyAtPlxuICAgICAgICBsZXQgb3BlbmVkID0gb3BlbmVkIC0gMSBpblxuICAgICAgICBpZiBvcGVuZWQgPSAwIHRoZW4gT2sgKFNvbWUgKGxwb3MsIHBvcykpXG4gICAgICAgIGVsc2UgaWYgb3BlbmVkIDwgMCB0aGVuIEVycm9yICgpXG4gICAgICAgIGVsc2UgcGFyZW50aGVzZXMgbHBvcyBvcGVuZWQgKHBvcyArIDEpIGxlbiBzXG4gICAgfCBfIC0+IHBhcmVudGhlc2VzIGxwb3Mgb3BlbmVkIChwb3MgKyAxKSBsZW4gc1xuXG4oKiBoYW5kbGUgW1wiQS5CLigrLispXCJdIG9yIFtcIlZlYy4oLiUuKCk8LSlcIl0gKilcbmxldCBwYXJzZSBzID1cbiAgbGV0IGludmFsaWQgdmFyaWFudCA9XG4gICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwiUHB4bGliLkxvbmdpZGVudC5wYXJzZSglcyk6ICVTXCIgdmFyaWFudCBzKVxuICBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPCAxIHRoZW4gaW52YWxpZCBcImVtcHR5IHN0cmluZ1wiO1xuICBsZXQgcGFyID0gcGFyZW50aGVzZXMgKC0xKSAwIDAgKFN0cmluZy5sZW5ndGggcykgcyBpblxuICBtYXRjaCAocy5bMF0sIHBhcikgd2l0aFxuICB8ICgnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICdfJyksIE9rIE5vbmUgLT4gcGFyc2Vfc2ltcGxlIHNcbiAgfCBfLCBPayBOb25lIC0+IExpZGVudCBzICgqIFRoaXMgaXMgYSByYXcgb3BlcmF0b3IsIG5vIG1vZHVsZSBwYXRoICopXG4gIHwgXywgRXJyb3IgXyAtPiBpbnZhbGlkIFwidW5iYWxhbmNlZCBwYXJlbnRoZXNpc1wiXG4gIHwgXywgT2sgKFNvbWUgKGwsIHIpKSAtPiAoXG4gICAgICBpZiBJbnQuKHIgPD4gU3RyaW5nLmxlbmd0aCBzIC0gMSkgdGhlblxuICAgICAgICBpbnZhbGlkIFwicmlnaHQgcGFyZW50aGVzaXMgbWlzcGxhY2VkXCI7XG4gICAgICBsZXQgZ3JvdXAgPVxuICAgICAgICBsZXQgaW5zaWRlID0gU3RyaW5nLnRyaW0gKFN0cmluZy5zdWIgcyB+cG9zOihsICsgMSkgfmxlbjoociAtIGwgLSAxKSkgaW5cbiAgICAgICAgaWYgU3RyaW5nLihpbnNpZGUgPSBcIlwiKSB0aGVuIFwiKClcIiBlbHNlIGluc2lkZVxuICAgICAgaW5cbiAgICAgIGlmIEludC4obCA9IDApIHRoZW4gTGlkZW50IGdyb3VwXG4gICAgICBlbHNlIGlmIENoYXIuKHMuW2wgLSAxXSA8PiAnLicpIHRoZW4gaW52YWxpZCBcImFwcGxpY2F0aW9uIGluIHBhdGhcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihsIC0gMSkgaW5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgYmVmb3JlIH5zZXA6Jy4nIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBzIDo6IGwgLT4gTGRvdCAodW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbCwgZ3JvdXApKVxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2UgKFQpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFQpXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIERlZmF1bHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBMb2MudFxuXG4gICAgbGV0IGxvYyAoeCA6IF8gdCkgPSB4LmxvY1xuICAgIGxldCBtayB+bG9jIHggPSB7IGxvYzsgdHh0ID0geCB9XG4gICAgbGV0IG1hcCBmIHQgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiAgICBsZXQgbWFwX2xpZGVudCB4ID0gbWFwIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHhcbiAgICBsZXQgbGlkZW50IH5sb2MgeCA9IG1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB4KVxuICBlbmRcblxuICBpbmNsdWRlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NXG5cbiAgbW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCA9IHBwYXRfY29uc3RydWN0XG5cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gLS0tLS0qKVxuICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHZicyAtPiBbIHBzdHJfdmFsdWUgfmxvYyByZWNfZmxhZyB2YnMgXVxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jOl8gfm5hbWU6XyB+cGFyYW1zOl8gfmNzdHJzOl8gfmtpbmQ6X1xuICAgICAgfnByaXZhdGVfOl8gfm1hbmlmZXN0Ol8gPVxuICAgIGZhaWx3aXRoXG4gICAgICBcIlBweGxpYi5Bc3RfYnVpbGRlci5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbjogZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb25cIlxuXG4gIGxldCBlaW50IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBlY2hhciB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBlc3RyaW5nIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IGVmbG9hdCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IGVpbnQzMiB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IGVpbnQ2NCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IGVuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgcGludCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgcGNoYXIgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgcHN0cmluZyB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBwZmxvYXQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBwaW50MzIgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBwaW50NjQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBwbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IGVib29sIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgcGJvb2wgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBldmFyIH5sb2MgdiA9IHBleHBfaWRlbnQgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQucGFyc2UgdikpXG4gIGxldCBwdmFyIH5sb2MgdiA9IHBwYXRfdmFyIH5sb2MgKExvY2F0ZWQubWsgfmxvYyB2KVxuICBsZXQgZXVuaXQgfmxvYyA9IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwdW5pdCB+bG9jID0gcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHBleHBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBleHBfdHVwbGUgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHR5cF90dXBsZSB+bG9jIGxcblxuICBsZXQgcGV4cF90dXBsZV9vcHQgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGggW10gLT4gTm9uZSB8IF8gOjogXyAtPiBTb21lIChwZXhwX3R1cGxlIH5sb2MgbClcblxuICBsZXQgcHBhdF90dXBsZV9vcHQgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGggW10gLT4gTm9uZSB8IF8gOjogXyAtPiBTb21lIChwcGF0X3R1cGxlIH5sb2MgbClcblxuICBsZXQgcHR5cF9wb2x5IH5sb2MgdmFycyB0eSA9XG4gICAgbWF0Y2ggdmFycyB3aXRoIFtdIC0+IHR5IHwgXyAtPiBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG5cbiAgbGV0IHBleHBfYXBwbHkgfmxvYyBlIGVsID1cbiAgICBtYXRjaCAoZSwgZWwpIHdpdGhcbiAgICB8IF8sIFtdIC0+IGVcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZSwgYXJncyk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sIF8gLT5cbiAgICAgICAgeyBlIHdpdGggcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZSwgYXJncyBAIGVsKSB9XG4gICAgfCBfIC0+IHBleHBfYXBwbHkgfmxvYyBlIGVsXG5cbiAgbGV0IGVhcHBseSB+bG9jIGUgZWwgPVxuICAgIHBleHBfYXBwbHkgfmxvYyBlIChMaXN0Lm1hcCBlbCB+ZjooZnVuIGUgLT4gKEFzdHR5cGVzLk5vbGFiZWwsIGUpKSlcblxuICBsZXQgZWFic3RyYWN0IH5sb2MgcHMgZSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IHBzIH5pbml0OmUgfmY6KGZ1biBwIGUgLT5cbiAgICAgICAgcGV4cF9mdW4gfmxvYyBBc3R0eXBlcy5Ob2xhYmVsIE5vbmUgcCBlKVxuXG4gIGxldCBlc2VxdWVuY2UgfmxvYyBlbCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgZWwgd2l0aFxuICAgIHwgW10gLT4gZXVuaXQgfmxvY1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgdGwgfmluaXQ6aGQgfmY6KGZ1biBhY2MgZSAtPiBwZXhwX3NlcXVlbmNlIH5sb2MgZSBhY2MpXG5cbiAgbGV0IHBjb25zdHJ1Y3QgY2QgYXJnID1cbiAgICBwcGF0X2NvbnN0cnVjdCB+bG9jOmNkLnBjZF9sb2MgKExvY2F0ZWQubWFwX2xpZGVudCBjZC5wY2RfbmFtZSkgYXJnXG5cbiAgbGV0IGVjb25zdHJ1Y3QgY2QgYXJnID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jOmNkLnBjZF9sb2MgKExvY2F0ZWQubWFwX2xpZGVudCBjZC5wY2RfbmFtZSkgYXJnXG5cbiAgbGV0IHJlYyBlbGlzdF90YWlsIH5sb2MgbCB0YWlsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHRhaWxcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jXG4gICAgICAgICAgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIjo6XCIpKVxuICAgICAgICAgIChTb21lIChwZXhwX3R1cGxlIH5sb2MgWyB4OyBlbGlzdF90YWlsIH5sb2MgbCB0YWlsIF0pKVxuXG4gIGxldCBlbGlzdCB+bG9jIGwgPVxuICAgIGxldCB0YWlsID1cbiAgICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgaW5cbiAgICBlbGlzdF90YWlsIH5sb2MgbCB0YWlsXG5cbiAgbGV0IHJlYyBwbGlzdF90YWlsIH5sb2MgbCB0YWlsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHRhaWxcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jXG4gICAgICAgICAgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIjo6XCIpKVxuICAgICAgICAgIChTb21lIChwcGF0X3R1cGxlIH5sb2MgWyB4OyBwbGlzdF90YWlsIH5sb2MgbCB0YWlsIF0pKVxuXG4gIGxldCBwbGlzdCB+bG9jIGwgPVxuICAgIGxldCB0YWlsID1cbiAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgaW5cbiAgICBwbGlzdF90YWlsIH5sb2MgbCB0YWlsXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgfmxvYyAoaWRlbnQgOiBMb25naWRlbnQudCkgfmYgPVxuICAgIG1hdGNoIGlkZW50IHdpdGhcbiAgICB8IExpZGVudCBuIC0+IHBleHBfaWRlbnQgfmxvYyB7IHR4dCA9IExpZGVudCAoZiBuKTsgbG9jIH1cbiAgICB8IExkb3QgKHBhdGgsIG4pIC0+IHBleHBfaWRlbnQgfmxvYyB7IHR4dCA9IExkb3QgKHBhdGgsIGYgbik7IGxvYyB9XG4gICAgfCBMYXBwbHkgXyAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuZXhwZWN0ZWQgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlXCJcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiB+bG9jOmFwcGx5X2xvYyB7IExvYy5sb2M7IHR4dCA9IGxvbmdpZGVudCB9IH5mIGFyZ3MgPVxuICAgIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIChsb25naWRlbnQgOiBMb25naWRlbnQudCkgd2l0aFxuICAgIHwgTGlkZW50IF8gfCBMZG90ICgoTGlkZW50IF8gfCBMZG90IF8pLCBfKSB8IExhcHBseSBfIC0+IChcbiAgICAgICAgbGV0IGlkZW50ID1cbiAgICAgICAgICB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IGxvbmdpZGVudCB+bG9jIH5mXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGlkZW50XG4gICAgICAgIHwgXyA6OiBfIC0+IGVhcHBseSB+bG9jOmFwcGx5X2xvYyBpZGVudCBhcmdzKVxuICAgIHwgTGRvdCAoKExhcHBseSBfIGFzIG1vZHVsZV9wYXRoKSwgbikgLT5cbiAgICAgICAgbGV0IHN1ZmZpeF9uIGZ1bmN0b3JfID0gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBmdW5jdG9yXyBeIFwiX19cIiBeIG4gaW5cbiAgICAgICAgbGV0IHJlYyBnYXRoZXJfbGFwcGx5IGZ1bmN0b3JfYXJncyA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ICogXyA9XG4gICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IExhcHBseSAocmVzdCwgYXJnKSAtPiBnYXRoZXJfbGFwcGx5IChhcmcgOjogZnVuY3Rvcl9hcmdzKSByZXN0XG4gICAgICAgICAgfCBMaWRlbnQgZnVuY3Rvcl8gLT4gKExpZGVudCAoc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgICAgfCBMZG90IChmdW5jdG9yX3BhdGgsIGZ1bmN0b3JfKSAtPlxuICAgICAgICAgICAgICAoTGRvdCAoZnVuY3Rvcl9wYXRoLCBzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlkZW50LCBmdW5jdG9yX2FyZ3MgPSBnYXRoZXJfbGFwcGx5IFtdIG1vZHVsZV9wYXRoIGluXG4gICAgICAgIGVhcHBseSB+bG9jOmFwcGx5X2xvY1xuICAgICAgICAgICh1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IGlkZW50IH5sb2MgfmYpXG4gICAgICAgICAgKExpc3QubWFwIGZ1bmN0b3JfYXJncyB+ZjooZnVuIHBhdGggLT5cbiAgICAgICAgICAgICAgIHBleHBfcGFjayB+bG9jIChwbW9kX2lkZW50IH5sb2MgeyB0eHQgPSBwYXRoOyBsb2MgfSkpXG4gICAgICAgICAgQCBhcmdzKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiB+bG9jIGxvbmdpZGVudCB+ZiA9XG4gICAgdHlwZV9jb25zdHJfY29udiBsb25naWRlbnQgfmxvYyB+ZiBbXVxuXG4gIGxldCBldGFfcmVkdWNlID1cbiAgICBsZXQgcmVjIGdhdGhlcl9wYXJhbXMgYWNjIGV4cHIgPVxuICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgUGV4cF9mdW4gKGxhYmVsLCBOb25lICgqIG5vIGRlZmF1bHQgZXhwcmVzc2lvbiAqKSwgc3VicGF0LCBib2R5KTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgfSAtPiAoXG4gICAgICAgICAgbWF0Y2ggc3VicGF0IHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBOb25lKSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgdHkgKTtcbiAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgKCogV2UgcmVkdWNlIFtmdW4gKHggOiB0eSkgLT4gZiB4XSBieSByZXdyaXRpbmcgaXQgWyhmIDogdHkgLT4gXyldLiAqKVxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIFNvbWUgdHkpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwgXyAtPiAoTGlzdC5yZXYgYWNjLCBleHByKSlcbiAgICAgIHwgXyAtPiAoTGlzdC5yZXYgYWNjLCBleHByKVxuICAgIGluXG4gICAgbGV0IGFubm90YXRlIH5sb2MgZXhwciBwYXJhbXMgPVxuICAgICAgaWYgTGlzdC5leGlzdHMgcGFyYW1zIH5mOihmdW4gKF8sIF8sIHR5KSAtPiBPcHRpb24uaXNfc29tZSB0eSkgdGhlblxuICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBwYXJhbXMgfmluaXQ6KHB0eXBfYW55IH5sb2MpXG4gICAgICAgICAgICB+ZjooZnVuIChwYXJhbV9sYWJlbCwgcGFyYW0sIHR5X29wdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBsb2MgPSBwYXJhbS5sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0eV9vcHQgd2l0aCBOb25lIC0+IHB0eXBfYW55IH5sb2MgfCBTb21lIHR5IC0+IHR5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHB0eXBfYXJyb3cgfmxvYyBwYXJhbV9sYWJlbCB0eSBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIHBleHBfY29uc3RyYWludCB+bG9jIGV4cHIgdHlcbiAgICAgIGVsc2UgZXhwclxuICAgIGluXG4gICAgbGV0IHJlYyBnYXRoZXJfYXJncyBuIHggPVxuICAgICAgaWYgbiA9IDAgdGhlbiBTb21lICh4LCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoYm9keSwgYXJncyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgaWYgTGlzdC5sZW5ndGggYXJncyA8PSBuIHRoZW5cbiAgICAgICAgICAgICAgbWF0Y2ggZ2F0aGVyX2FyZ3MgKG4gLSBMaXN0Lmxlbmd0aCBhcmdzKSBib2R5IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChib2R5LCBhcmdzJykgLT4gU29tZSAoYm9keSwgYXJncycgQCBhcmdzKVxuICAgICAgICAgICAgZWxzZSBOb25lXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBmdW4gZXhwciAtPlxuICAgICAgbGV0IHBhcmFtcywgYm9keSA9IGdhdGhlcl9wYXJhbXMgW10gZXhwciBpblxuICAgICAgbWF0Y2ggZ2F0aGVyX2FyZ3MgKExpc3QubGVuZ3RoIHBhcmFtcykgYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSBhcyBmX2lkZW50KSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZvcl9hbGwyIGFyZ3MgcGFyYW1zXG4gICAgICAgICAgICAgIH5mOihmdW4gKGFyZ19sYWJlbCwgYXJnKSAocGFyYW1fbGFiZWwsIHBhcmFtLCBfKSAtPlxuICAgICAgICAgICAgICAgIFBvbHkuKCA9ICkgKGFyZ19sYWJlbCA6IGFyZ19sYWJlbCkgcGFyYW1fbGFiZWxcbiAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbmFtZSc7IF8gfTtcbiAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nLiggPSApIG5hbWUnIHBhcmFtLnR4dFxuICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+IFNvbWUgKGFubm90YXRlIH5sb2M6ZXhwci5wZXhwX2xvYyBmX2lkZW50IHBhcmFtcykpXG4gICAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHIgPSBPcHRpb24udmFsdWUgKGV0YV9yZWR1Y2UgZXhwcikgfmRlZmF1bHQ6ZXhwclxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgZXhwciB+cmVjX2ZsYWcgPVxuICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICB8IFJlY3Vyc2l2ZSAtPiBleHByXG4gICAgfCBOb25yZWN1cnNpdmUgLT4gZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByXG5lbmRcblxubW9kdWxlIHR5cGUgTG9jID0gQXN0X2J1aWxkZXJfaW50Zi5Mb2NcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEFzdF9idWlsZGVyX2ludGYuU1xuXG4gIG1vZHVsZSBMYXRlc3QgOiBzaWdcbiAgICB2YWwgcHBhdF9jb25zdHJ1Y3QgOlxuICAgICAgbG9uZ2lkZW50IGxvYyAtPiAobGFiZWwgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb24gLT4gcGF0dGVyblxuXG4gICAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgICB2YXJzOmxhYmVsIGxvYyBsaXN0IC0+XG4gICAgICBhcmdzOmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICAgIHVuaXQgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGVuZFxuXG4gIHZhbCBwcGF0X2NvbnN0cnVjdCA6IGxvbmdpZGVudCBsb2MgLT4gcGF0dGVybiBvcHRpb24gLT4gcGF0dGVyblxuXG4gIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICBhcmdzOmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbmVuZFxuXG5tb2R1bGUgTWFrZSAoTG9jIDogc2lnXG4gIHZhbCBsb2MgOiBMb2NhdGlvbi50XG5lbmQpIDogUyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NYWtlIChMb2MpXG5cbiAgbW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCA9IHBwYXRfY29uc3RydWN0XG5cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NYWtlIChMb2MpIC0tLS0tKilcblxuICBsZXQgcHBhdF9jb25zdHJ1Y3QgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCA9IERlZmF1bHQucHN0cl92YWx1ZV9saXN0XG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlXyB+bWFuaWZlc3QgPVxuICAgIERlZmF1bHQubm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV9cbiAgICAgIH5tYW5pZmVzdFxuXG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBEZWZhdWx0LkxvY2F0ZWRcblxuICAgIGxldCBsb2MgXyA9IExvYy5sb2NcbiAgICBsZXQgbWsgeCA9IG1rIH5sb2M6TG9jLmxvYyB4XG4gICAgbGV0IGxpZGVudCB4ID0gbGlkZW50IH5sb2M6TG9jLmxvYyB4XG4gIGVuZFxuXG4gIGxldCBwZXhwX3R1cGxlIGwgPSBEZWZhdWx0LnBleHBfdHVwbGUgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlIGwgPSBEZWZhdWx0LnBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIGwgPSBEZWZhdWx0LnB0eXBfdHVwbGUgfmxvYyBsXG4gIGxldCBwZXhwX3R1cGxlX29wdCBsID0gRGVmYXVsdC5wZXhwX3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBwYXRfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHR5cF9wb2x5IHZhcnMgdHkgPSBEZWZhdWx0LnB0eXBfcG9seSB+bG9jIHZhcnMgdHlcbiAgbGV0IHBleHBfYXBwbHkgZSBlbCA9IERlZmF1bHQucGV4cF9hcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVpbnQgdCA9IERlZmF1bHQuZWludCB+bG9jIHRcbiAgbGV0IGVjaGFyIHQgPSBEZWZhdWx0LmVjaGFyIH5sb2MgdFxuICBsZXQgZXN0cmluZyB0ID0gRGVmYXVsdC5lc3RyaW5nIH5sb2MgdFxuICBsZXQgZWZsb2F0IHQgPSBEZWZhdWx0LmVmbG9hdCB+bG9jIHRcbiAgbGV0IGVpbnQzMiB0ID0gRGVmYXVsdC5laW50MzIgfmxvYyB0XG4gIGxldCBlaW50NjQgdCA9IERlZmF1bHQuZWludDY0IH5sb2MgdFxuICBsZXQgZW5hdGl2ZWludCB0ID0gRGVmYXVsdC5lbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgZWJvb2wgdCA9IERlZmF1bHQuZWJvb2wgfmxvYyB0XG4gIGxldCBldmFyIHQgPSBEZWZhdWx0LmV2YXIgfmxvYyB0XG4gIGxldCBwaW50IHQgPSBEZWZhdWx0LnBpbnQgfmxvYyB0XG4gIGxldCBwY2hhciB0ID0gRGVmYXVsdC5wY2hhciB+bG9jIHRcbiAgbGV0IHBzdHJpbmcgdCA9IERlZmF1bHQucHN0cmluZyB+bG9jIHRcbiAgbGV0IHBmbG9hdCB0ID0gRGVmYXVsdC5wZmxvYXQgfmxvYyB0XG4gIGxldCBwaW50MzIgdCA9IERlZmF1bHQucGludDMyIH5sb2MgdFxuICBsZXQgcGludDY0IHQgPSBEZWZhdWx0LnBpbnQ2NCB+bG9jIHRcbiAgbGV0IHBuYXRpdmVpbnQgdCA9IERlZmF1bHQucG5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IHBib29sIHQgPSBEZWZhdWx0LnBib29sIH5sb2MgdFxuICBsZXQgcHZhciB0ID0gRGVmYXVsdC5wdmFyIH5sb2MgdFxuICBsZXQgZXVuaXQgPSBEZWZhdWx0LmV1bml0IH5sb2NcbiAgbGV0IHB1bml0ID0gRGVmYXVsdC5wdW5pdCB+bG9jXG4gIGxldCBlY29uc3RydWN0ID0gRGVmYXVsdC5lY29uc3RydWN0XG4gIGxldCBwY29uc3RydWN0ID0gRGVmYXVsdC5wY29uc3RydWN0XG4gIGxldCBlYXBwbHkgZSBlbCA9IERlZmF1bHQuZWFwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWFic3RyYWN0IHBzIGUgPSBEZWZhdWx0LmVhYnN0cmFjdCB+bG9jIHBzIGVcbiAgbGV0IGVzZXF1ZW5jZSBlbCA9IERlZmF1bHQuZXNlcXVlbmNlIH5sb2MgZWxcbiAgbGV0IGVsaXN0X3RhaWwgbCB0YWlsID0gRGVmYXVsdC5lbGlzdF90YWlsIH5sb2MgbCB0YWlsXG4gIGxldCBwbGlzdF90YWlsIGwgdGFpbCA9IERlZmF1bHQucGxpc3RfdGFpbCB+bG9jIGwgdGFpbFxuICBsZXQgZWxpc3QgbCA9IERlZmF1bHQuZWxpc3QgfmxvYyBsXG4gIGxldCBwbGlzdCBsID0gRGVmYXVsdC5wbGlzdCB+bG9jIGxcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiBhcmdzID1cbiAgICBEZWZhdWx0LnR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZiBhcmdzXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IGlkZW50IH5mID1cbiAgICBEZWZhdWx0LnVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmZcblxuICBsZXQgZXRhX3JlZHVjZSA9IERlZmF1bHQuZXRhX3JlZHVjZVxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSA9IERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgPVxuICAgIERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG5lbmRcblxubGV0IG1ha2UgbG9jID1cbiAgKG1vZHVsZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgbG9jID0gbG9jXG4gIGVuZCkgOiBTKVxuIiwiKCoqIFNtYWxsIGhlbHBlciB0byBmaW5kIG91dCB3aG8gaXMgdGhlIGNhbGxlciBvZiBhIGZ1bmN0aW9uICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFByaW50ZXhjID0gU3RkbGliLlByaW50ZXhjXG5cbnR5cGUgdCA9IFByaW50ZXhjLmxvY2F0aW9uIG9wdGlvblxuXG5sZXQgZ2V0IH5za2lwID1cbiAgbGV0IHNraXAgPSBfX0ZJTEVfXyA6OiBza2lwIGluXG4gIGxldCBzdGFjayA9IFByaW50ZXhjLmdldF9jYWxsc3RhY2sgMTYgaW5cbiAgbGV0IGxlbiA9IFByaW50ZXhjLnJhd19iYWNrdHJhY2VfbGVuZ3RoIHN0YWNrIGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA9IGxlbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90IHN0YWNrIHBvc1xuICAgICAgICB8PiBQcmludGV4Yy5jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCB8PiBQcmludGV4Yy5TbG90LmxvY2F0aW9uXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGxvYyAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIH5zZXQ6c2tpcCBsb2MuZmlsZW5hbWUgdGhlbiBsb29wIChwb3MgKyAxKSBlbHNlIFNvbWUgbG9jXG4gIGluXG4gIGxvb3AgMFxuIiwiKCoqIEhlbHBlcnMgdG8gcHJvdmlkZSBoaW50cyB0byBQUFggdXNlcnMgZm9yIHR5cG9zIG9yIHNwZWxsY2hlY2tzLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEN1dG9mZl9tZXRcblxuKCogQXMgZm91bmQgaGVyZSBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2UjT0NhbWwgKilcbmxldCBsZXZlbnNodGVpbl9kaXN0YW5jZSBzIHQgY3V0b2ZmID1cbiAgbGV0IG0gPSBTdHJpbmcubGVuZ3RoIHMgYW5kIG4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgaWYgY3V0b2ZmID0gMCB8fCBhYnMgKG0gLSBuKSA+PSBjdXRvZmYgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBmb3IgYWxsIGkgYW5kIGosIGQuKGkpLihqKSB3aWxsIGhvbGQgdGhlIExldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlXG4gICAgICAgZmlyc3QgaSBjaGFyYWN0ZXJzIG9mIHMgYW5kIHRoZSBmaXJzdCBqIGNoYXJhY3RlcnMgb2YgdCAqKVxuICAgIGxldCBkID0gQXJyYXkubWFrZV9tYXRyaXggfmRpbXg6KG0gKyAxKSB+ZGlteToobiArIDEpIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbSBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBmaXJzdCBzdHJpbmcgdG8gYW4gZW1wdHkgc2Vjb25kIHN0cmluZyAqKVxuICAgICAgZC4oaSkuKDApIDwtIGlcbiAgICBkb25lO1xuICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IHNlY29uZCBzdHJpbmcgdG8gYW4gZW1wdHkgZmlyc3Qgc3RyaW5nICopXG4gICAgICBkLigwKS4oaikgPC0galxuICAgIGRvbmU7XG4gICAgKCogdGhlIG1pbmltdW0gb2YgZWFjaCBsaW5lIHRvZ2V0aGVyIHdpdGggdGhlIGNvbHVtbiBpbmRleCB3aWxsIGJlIHVzZWRcbiAgICAgICB0byBub3RpY2UgY3V0b2ZmIGV4Y2VlZGluZyBhbmQgcmV0dXJuIGVhcmx5IGluIHRoYXQgY2FzZSAqKVxuICAgIGxldCBsaW5lX21pbiA9IHJlZiAwIGluXG4gICAgbGV0IGRpc3RhbmNlID1cbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlmICFsaW5lX21pbiA+PSBjdXRvZmYgLSAxICYmIGogPj0gY3V0b2ZmIC0gMSB0aGVuIHJhaXNlIEN1dG9mZl9tZXQ7XG4gICAgICAgICAgbGluZV9taW4gOj0gbWF4IG0gbjtcbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbSBkb1xuICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBzLltpIC0gMV0gdC5baiAtIDFdIHRoZW4gZC4oaSAtIDEpLihqIC0gMSlcbiAgICAgICAgICAgICAgICAoKiBubyBvcGVyYXRpb24gcmVxdWlyZWQgKilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1pblxuICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaikgKyAxKSAoKiBhIGRlbGV0aW9uICopXG4gICAgICAgICAgICAgICAgICAobWluXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSkuKGogLSAxKSArIDEpICgqIGFuIGluc2VydGlvbiAqKVxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaiAtIDEpICsgMSkgKCogYSBzdWJzdGl0dXRpb24gKikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZC4oaSkuKGopIDwtIHZhbHVlO1xuICAgICAgICAgICAgbGluZV9taW4gOj0gbWluICFsaW5lX21pbiB2YWx1ZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgZC4obSkuKG4pIDwgY3V0b2ZmIHRoZW4gU29tZSBkLihtKS4obikgZWxzZSBOb25lXG4gICAgICB3aXRoIEN1dG9mZl9tZXQgLT4gTm9uZVxuICAgIGluXG4gICAgZGlzdGFuY2VcblxubGV0IHNwZWxsY2hlY2sgbmFtZXMgbmFtZSA9XG4gIGxldCBjdXRvZmYgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggbmFtZSB3aXRoXG4gICAgfCAxIHwgMiAtPiAwXG4gICAgfCAzIHwgNCAtPiAxXG4gICAgfCA1IHwgNiAtPiAyXG4gICAgfCBfIC0+IDNcbiAgaW5cbiAgbGV0IF8sIHN1Z2dlc3Rpb25zID1cbiAgICBMaXN0LmZvbGRfbGVmdCBuYW1lcyB+aW5pdDooSW50Lm1heF9pbnQsIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgICgoYmVzdF9kaXN0YW5jZSwgbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkgYXMgYWNjKSByZWdpc3RlcmVkX25hbWUgLT5cbiAgICAgICAgbWF0Y2ggbGV2ZW5zaHRlaW5fZGlzdGFuY2UgbmFtZSByZWdpc3RlcmVkX25hbWUgY3V0b2ZmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZGlzdCAtPlxuICAgICAgICAgICAgaWYgZGlzdCA8IGJlc3RfZGlzdGFuY2UgdGhlbiAoZGlzdCwgWyByZWdpc3RlcmVkX25hbWUgXSlcbiAgICAgICAgICAgIGVsc2UgaWYgZGlzdCA+IGJlc3RfZGlzdGFuY2UgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKGRpc3QsIHJlZ2lzdGVyZWRfbmFtZSA6OiBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgc3VnZ2VzdGlvbnMgfD4gTGlzdC5maWx0ZXIgfmY6KFN0cmluZy4oIDw+ICkgbmFtZSkgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBsYXN0IDo6IHJldl9yZXN0IC0+XG4gICAgICBTb21lXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIkhpbnQ6IERpZCB5b3UgbWVhbiAlcyVzJXM/XCJcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QucmV2IHJldl9yZXN0KSlcbiAgICAgICAgICAgKGlmIExpc3QuaXNfZW1wdHkgcmV2X3Jlc3QgdGhlbiBcIlwiIGVsc2UgXCIgb3IgXCIpXG4gICAgICAgICAgIGxhc3QpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZiA9XG4gIGxldCByZWMgY29sbGFwc2VfYWZ0ZXJfYXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHBhcnQpKSAmJiBDaGFyLmVxdWFsIHBhcnQuWzBdICdAJyB0aGVuXG4gICAgICAgICAgWyBTdHJpbmcuY29uY2F0IChTdHJpbmcuZHJvcF9wcmVmaXggcGFydCAxIDo6IHBhcnRzKSB+c2VwOlwiLlwiIF1cbiAgICAgICAgZWxzZSBwYXJ0IDo6IGNvbGxhcHNlX2FmdGVyX2F0IHBhcnRzXG4gIGluXG4gIGxldCByZWMgbG9vcCBhY2MgcGFydHMgPVxuICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBsb29wIChmIChTdHJpbmcuY29uY2F0IChwYXJ0IDo6IHBhcnRzKSB+c2VwOlwiLlwiKSBhY2MpIHBhcnRzXG4gIGluXG4gIFN0cmluZy5zcGxpdF9vbl9jaGFyIG5hbWUgfnNlcDonLicgfD4gY29sbGFwc2VfYWZ0ZXJfYXQgfD4gbG9vcCBhY2NcblxubGV0IGRvdF9zdWZmaXhlcyBuYW1lID1cbiAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDpbXSB+ZjooZnVuIHggYWNjIC0+IHggOjogYWNjKVxuXG5sZXQgc3BsaXRfcGF0aCA9XG4gIGxldCByZWMgbG9vcCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGggJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSkgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGFuZCBhZnRlcl9kb3QgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnQScgLi4gJ1onIC0+IChTdHJpbmcucHJlZml4IHMgKGkgLSAxKSwgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHMgaSkpXG4gICAgICB8ICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpXG4gICAgICB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgaW5cbiAgZnVuIHMgLT4gbG9vcCBzIDBcblxubW9kdWxlIFBhdHRlcm4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBuYW1lIDogc3RyaW5nOyBkb3Rfc3VmZml4ZXMgOiBTdHJpbmcuU2V0LnQgfVxuXG4gIGxldCBtYWtlIG5hbWUgPVxuICAgIHsgbmFtZTsgZG90X3N1ZmZpeGVzID0gU3RyaW5nLlNldC5vZl9saXN0IChkb3Rfc3VmZml4ZXMgbmFtZSkgfVxuXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IG1hdGNoZXMgdCBtYXRjaGVkID0gU3RyaW5nLlNldC5tZW0gbWF0Y2hlZCB0LmRvdF9zdWZmaXhlc1xuZW5kXG5cbigqIE9uIHRoZSBuYW1lc3BhY2UgXCJhLk5BTUVTUEFDRVwiLCByZXR1cm4gdGhlIHBhaXIgKFwiYVwiLCBOQU1FU1BBQ0UpICopXG5sZXQgc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgPVxuICBtYXRjaCBTdHJpbmcuaW5kZXhfb3B0IG5hbWUgJy4nIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIGluXG4gICAgICBsZXQgYmVmb3JlX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOjAgfmxlbjppIGluXG4gICAgICBsZXQgYWZ0ZXJfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6KGkgKyAxKSB+bGVuOihuIC0gaSAtIDEpIGluXG4gICAgICBTb21lIChiZWZvcmVfZG90LCBhZnRlcl9kb3QpXG5cbm1vZHVsZSBBbGxvd2xpc3RlZCA9IHN0cnVjdFxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYXMgd2VsbCBhcyBhbGwgdGhlaXIgZG90IHN1ZmZpeGVzLlxuXG4gICAgIFNpbmNlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cblxuICAgICBTYWRseSwgdGhlIGNvbXBpbGVyIHNpbGVudGx5IGlnbm9yZXMgdGhlbSBpZiB0aGV5IGFyZSBtaXNwbGFjZWQuLi5cbiAgKilcbiAgbGV0IGNyZWF0ZV9zZXQgZnVsbHlfcXVhbGlmaWVkX25hbWVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgfmY6KGZ1biBhY2MgbmFtZSAtPlxuICAgICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZjooZnVuIHggYWNjIC0+IFN0cmluZy5TZXQuYWRkIHggYWNjKSlcbiAgICAgIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgZnVsbHlfcXVhbGlmaWVkX25hbWVzXG5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGNyZWF0ZV9zZXRcbiAgICAgIFtcbiAgICAgICAgXCJvY2FtbC5hbGVydFwiO1xuICAgICAgICBcIm9jYW1sLmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRfbXV0YWJsZVwiO1xuICAgICAgICBcIm9jYW1sLmRvY1wiO1xuICAgICAgICBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZVwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZTY0XCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lXCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lZFwiO1xuICAgICAgICBcIm9jYW1sLmxvY2FsXCI7XG4gICAgICAgIFwib2NhbWwubm9hbGxvY1wiO1xuICAgICAgICBcIm9jYW1sLnBwd2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnJlbW92ZV9hbGlhc2VzXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZVwiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VkXCI7XG4gICAgICAgIFwib2NhbWwudGFpbGNhbGxcIjtcbiAgICAgICAgXCJvY2FtbC50ZXh0XCI7XG4gICAgICAgIFwib2NhbWwudW5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbGVkXCI7XG4gICAgICAgIFwib2NhbWwudW50YWdnZWRcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuX29uX2xpdGVyYWxfcGF0dGVyblwiO1xuICAgICAgICBcIm9jYW1sLndhcm5lcnJvclwiO1xuICAgICAgICBcIm9jYW1sLndhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC50b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgICBcInRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICBdXG5cbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnMuXG5cbiAgICAgU2luY2UgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuICAqKVxuICBsZXQgZXh0ZW5zaW9ucyA9IGNyZWF0ZV9zZXQgWyBcIm9jYW1sLmVycm9yXCI7IFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCIgXVxuXG4gIGxldCBpc19hbGxvd2xpc3RlZCB+a2luZCBuYW1lID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBdHRyaWJ1dGUgLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBhdHRyaWJ1dGVzXG4gICAgfCBgRXh0ZW5zaW9uIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgZXh0ZW5zaW9uc1xuXG4gIGxldCBnZXRfYXR0cmlidXRlX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGF0dHJpYnV0ZXNcbiAgbGV0IGdldF9leHRlbnNpb25fbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgZXh0ZW5zaW9uc1xuZW5kXG5cbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gc3RydWN0XG4gIHR5cGUgcmVzZXJ2ZWQgPSAoc3RyaW5nLCBzdWJfbmFtZXNwYWNlcykgSGFzaHRibC50XG4gIGFuZCBzdWJfbmFtZXNwYWNlcyA9IEFsbCB8IFN1Yl9uYW1lc3BhY2VzIG9mIHJlc2VydmVkXG5cbiAgKCogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW0FsbF0sIHRoZW4gXCJ4XCIgYW5kIGFsbCBwYXRocyB0aGF0XG4gICAqIHN0YXJ0IHdpdGggXCJ4LlwiIGFyZSByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibF1cbiAgICpcbiAgICogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW1N1Yl9uYW1lc3BhY2VzIHRibCddLCBhbmQgUCBpc1xuICAgKiByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibCddLCB0aGVuIGFsbCBwYXRocyBcInguUFwiIGFyZSByZXNlcnZlZCB3aXRoXG4gICAqIHJlc3BlY3QgdG8gW3RibF0uXG4gICAqKVxuICBsZXQgY3JlYXRlX3Jlc2VydmVkICgpIDogcmVzZXJ2ZWQgPSBIYXNodGJsLmNyZWF0ZSAxNlxuXG4gIGxldCByZWMgcmVzZXJ2ZSBucyB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBucyB3aXRoXG4gICAgfCBOb25lIC0+IEhhc2h0YmwuYWRkX2V4biB0YmwgfmtleTpucyB+ZGF0YTpBbGxcbiAgICB8IFNvbWUgKG91dGVyX25zLCByZXN0X25zKSAtPiAoXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaHRibC5maW5kX29yX2FkZCB0Ymwgb3V0ZXJfbnMgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBTdWJfbmFtZXNwYWNlcyAoY3JlYXRlX3Jlc2VydmVkICgpKSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsIC0+IHJlc2VydmUgcmVzdF9ucyByZXN0X3RibFxuICAgICAgICB8IEFsbCAtPiAoKSlcblxuICBsZXQgcmVjIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgKG5zLCByZXN0KSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5zIHdpdGhcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyByZXN0X3RibCkgLT5cbiAgICAgICAgICAgIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgcmVzdCByZXN0X3RibFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlKVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyBfKSB8IE5vbmUgLT4gZmFsc2UpXG5cbiAgbGV0IHRibCA9IGNyZWF0ZV9yZXNlcnZlZCAoKVxuICBsZXQgcmVzZXJ2ZSBucyA9IHJlc2VydmUgbnMgdGJsXG4gIGxldCBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgPSBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXJsaW5cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVhc29uXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlZm10XCIgKCogcmVhc29uICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJuc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZXNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibWV0YW9jYW1sXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm9jYW1sZm9ybWF0XCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInBweGxpYi5taWdyYXRpb25cIlxuXG4gIGxldCBjaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZSA9XG4gICAgbGV0IGtpbmQsIGxpc3QgPVxuICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICB8IGBBdHRyaWJ1dGUgLT4gKFwiYXR0cmlidXRlXCIsIEFsbG93bGlzdGVkLmF0dHJpYnV0ZXMpXG4gICAgICB8IGBFeHRlbnNpb24gLT4gKFwiZXh0ZW5zaW9uXCIsIEFsbG93bGlzdGVkLmV4dGVuc2lvbnMpXG4gICAgaW5cbiAgICBpZiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGxpc3QgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0IG1hdGNoZXMgYW4gJXMgcmVzZXJ2ZWQgYnkgdGhlIFxcXG4gICAgICAgICBjb21waWxlclwiXG4gICAgICAgIGtpbmQgbmFtZSBraW5kXG4gICAgZWxzZSBpZiBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0cyBuYW1lc3BhY2UgaXMgbWFya2VkIGFzIFxcXG4gICAgICAgICByZXNlcnZlZFwiXG4gICAgICAgIGtpbmQgbmFtZVxuZW5kXG5cbmxldCBpZ25vcmVfY2hlY2tzIG5hbWUgPVxuICBSZXNlcnZlZF9uYW1lc3BhY2VzLmlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZVxuICB8fCBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpcIl9cIlxuXG5tb2R1bGUgUmVnaXN0cmFyID0gc3RydWN0XG4gIHR5cGUgZWxlbWVudCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgOiBzdHJpbmc7IGRlY2xhcmVkX2F0IDogQ2FsbGVyX2lkLnQgfVxuICB0eXBlIGFsbF9mb3JfY29udGV4dCA9IHsgbXV0YWJsZSBhbGwgOiBlbGVtZW50IFN0cmluZy5NYXAudCB9XG5cbiAgdHlwZSAnYSB0ID0ge1xuICAgIGFsbF9ieV9jb250ZXh0IDogKCdhLCBhbGxfZm9yX2NvbnRleHQpIEhhc2h0YmwudDtcbiAgICBza2lwIDogc3RyaW5nIGxpc3Q7XG4gICAga2luZCA6IHN0cmluZztcbiAgICBzdHJpbmdfb2ZfY29udGV4dCA6ICdhIC0+IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgY3JlYXRlIH5raW5kIH5jdXJyZW50X2ZpbGUgfnN0cmluZ19vZl9jb250ZXh0ID1cbiAgICB7XG4gICAgICBhbGxfYnlfY29udGV4dCA9IEhhc2h0YmwuY3JlYXRlIDE2O1xuICAgICAgc2tpcCA9IFsgY3VycmVudF9maWxlOyBfX0ZJTEVfXyBdO1xuICAgICAga2luZDtcbiAgICAgIHN0cmluZ19vZl9jb250ZXh0O1xuICAgIH1cblxuICBsZXQgZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgPVxuICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5hbGxfYnlfY29udGV4dCBjb250ZXh0IH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgeyBhbGwgPSBTdHJpbmcuTWFwLmVtcHR5IH0pXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lID1cbiAgICBtYXRjaCBTdHJpbmcuTWFwLmZpbmRfb3B0IG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGUgLT5cbiAgICAgICAgbGV0IGRlY2xhcmVkX2F0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobG9jIDogU3RkbGliLlByaW50ZXhjLmxvY2F0aW9uKSAtPlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiBkZWNsYXJlZCBhdCAlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnRleHQgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgcyAtPiBcIiBvbiBcIiBeIHMgXiBcInNcIlxuICAgICAgICBpblxuICAgICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgICBcIlNvbWUgcHB4LWVzIHRyaWVkIHRvIHJlZ2lzdGVyIGNvbmZsaWN0aW5nIHRyYW5zZm9ybWF0aW9uczogJXMgXFxcbiAgICAgICAgICAgJyVzJyVzJXMgbWF0Y2hlcyAlcyAnJXMnJXNcIlxuICAgICAgICAgIChTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaSB0LmtpbmQpXG4gICAgICAgICAgbmFtZSBjb250ZXh0IChkZWNsYXJlZF9hdCBjYWxsZXIpIHQua2luZCBlLmZ1bGx5X3F1YWxpZmllZF9uYW1lXG4gICAgICAgICAgKGRlY2xhcmVkX2F0IGUuZGVjbGFyZWRfYXQpXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnMgdCBjb250ZXh0IG5hbWUgPVxuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lXG5cbiAgbGV0IHJlZ2lzdGVyIH5raW5kIHQgY29udGV4dCBuYW1lID1cbiAgICBSZXNlcnZlZF9uYW1lc3BhY2VzLmNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lO1xuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGwgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0OmFsbCB0IGNvbnRleHQgbmFtZTtcbiAgICBsZXQgdCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgPSBuYW1lOyBkZWNsYXJlZF9hdCA9IGNhbGxlciB9IGluXG4gICAgYWxsLmFsbCA8LVxuICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphbGwuYWxsIH5mOihmdW4gbmFtZSBhY2MgLT5cbiAgICAgICAgICBTdHJpbmcuTWFwLmFkZCBuYW1lIHQgYWNjKVxuXG4gIGxldCBzcGVsbGNoZWNrIHQgY29udGV4dCA/KGFsbG93bGlzdCA9IFtdKSBuYW1lID1cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBsZXQgYWxsID1cbiAgICAgIFN0cmluZy5NYXAuZm9sZCAoZnVuIGtleSBfIGFjYyAtPiBrZXkgOjogYWNjKSBhbGxfZm9yX2NvbnRleHQuYWxsIFtdXG4gICAgaW5cbiAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKGFsbCBAIGFsbG93bGlzdCkgbmFtZSB3aXRoXG4gICAgfCBTb21lIF8gYXMgeCAtPiB4XG4gICAgfCBOb25lIHdoZW4gU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIC0+IE5vbmVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBsZXQgb3RoZXJfY29udGV4dHMgPVxuICAgICAgICAgIEhhc2h0YmwuZm9sZFxuICAgICAgICAgICAgKGZ1biBjdHggYWxsX2Zyb21fY29udGV4dCBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBQb2x5LiggPD4gKSBjb250ZXh0IGN0eFxuICAgICAgICAgICAgICAgICYmIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zyb21fY29udGV4dC5hbGxcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY3R4IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHMgLT4gKHMgXiBcInNcIikgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2UgYWNjKVxuICAgICAgICAgICAgdC5hbGxfYnlfY29udGV4dCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHBfdGV4dCA9IEZvcm1hdC5wcF9wcmludF90ZXh0IGluXG4gICAgICAgIGxldCBjdXJyZW50X2NvbnRleHQgcHBmID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgIGxldCBhX29yX2FuID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgfCAneScgLT4gXCJhblwiXG4gICAgICAgICAgICAgICAgfCBfIC0+IFwiYVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICAgICAgICAgIFwiQCBidXRAIGlzQCB1c2VkQCBoZXJlQCBpbkAgdGhlQCBjb250ZXh0QCBvZkAgJXNAICVhXCIgYV9vcl9hblxuICAgICAgICAgICAgICAgIHBwX3RleHQgc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3Quc29ydCB+Y21wOihmdW4geCB5IC0+IC1TdHJpbmcuY29tcGFyZSB4IHkpIG90aGVyX2NvbnRleHRzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgWyBjIF0gLT5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWUgcHBfdGV4dCBjXG4gICAgICAgICAgICAgICAgIGN1cnJlbnRfY29udGV4dClcbiAgICAgICAgfCBsYXN0IDo6IHJldl9vdGhlcnMgLT5cbiAgICAgICAgICAgIGxldCBvdGhlcnMgPSBMaXN0LnJldiByZXZfb3RoZXJzIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhQCBhbmRAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lXG4gICAgICAgICAgICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCBwcF90ZXh0IH5wcF9zZXA6KGZ1biBwcGYgKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIikpXG4gICAgICAgICAgICAgICAgIG90aGVycyBwcF90ZXh0IGxhc3QgY3VycmVudF9jb250ZXh0KSlcblxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICAoKiBUT0RPOiBoaW50IHNwZWxsaW5nIGVycm9ycyByZWdhcmRpbmcgcmVzZXJ2ZWQgbmFtZXNwYWNlcyBuYW1lcyBhbmQgYWxsb3dsaXN0ZWRcbiAgICAgICBuYW1lcyBpbnN0ZWFkIG9mIHRha2luZyBhbiBvcHRpb25hbCBbYWxsb3dsaXN0XSBwYXJhbWV0ZXIuICopXG4gICAgbGV0IGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBzcGVsbGNoZWNrIHQgY29udGV4dCBuYW1lLnR4dCA/YWxsb3dsaXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXNcIiBtc2dcbiAgICAgICAgICB8IFNvbWUgcyAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlcy5cXG4lc1wiIG1zZyBzKVxuICAgICAgICBmbXQgbmFtZS50eHRcblxuICAgIGxldCByYWlzZV9lcnJvcmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci5yYWlzZSBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG5cbiAgICBsZXQgZXJyb3JfZXh0ZW5zaW9uZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG4gIGVuZFxuXG4gIGxldCByYWlzZV9lcnJvcmYgPSBFcnJvci5yYWlzZV9lcnJvcmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBCdWZmZXIgPSBTdGRsaWIuQnVmZmVyXG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgbGlkZW50IHggPSBMb25naWRlbnQuTGlkZW50IHhcblxubGV0IGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkID1cbiAgbGV0IGxvYyA9IHRkLnB0eXBlX25hbWUubG9jIGluXG4gIHB0eXBfY29uc3RyIH5sb2NcbiAgICAoTG9jYXRlZC5tYXAgbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgKExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+Zjpmc3QpXG5cbmxldCBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCA9XG4gIGxldCBjaG9wIG4gfm9yX21vcmUgc3RyaW5nIHBvcyBmID1cbiAgICBsZXQgdGFyZ2V0ID0gIXBvcyAtIG4gaW5cbiAgICB3aGlsZSAhcG9zID4gMCAmJiAob3JfbW9yZSB8fCAhcG9zID4gdGFyZ2V0KSAmJiBmIHN0cmluZy5bIXBvcyAtIDFdIGRvXG4gICAgICBwb3MgOj0gIXBvcyAtIDFcbiAgICBkb25lO1xuICAgICFwb3MgPD0gdGFyZ2V0XG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBsZXQgcG9zID0gcmVmIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBpZlxuICAgICAgY2hvcCAxIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgICAgJiYgY2hvcCAzIH5vcl9tb3JlOnRydWUgc3RyaW5nIHBvcyAoZnVuY3Rpb25cbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgY2hvcCAyIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgIHRoZW4gU3RyaW5nLnByZWZpeCBzdHJpbmcgIXBvc1xuICAgIGVsc2Ugc3RyaW5nXG5cbmxldCBnZW5fc3ltYm9sID1cbiAgbGV0IGNudCA9IHJlZiAwIGluXG4gIGZ1biA/KHByZWZpeCA9IFwiX3hcIikgKCkgLT5cbiAgICBjbnQgOj0gIWNudCArIDE7XG4gICAgbGV0IHByZWZpeCA9IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4IHByZWZpeCBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXNfXyUwM2lfXCIgcHJlZml4ICFjbnRcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDpcbiAgICAodHlwZV9kZWNsYXJhdGlvbiwgXykgcmVzdWx0ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBwcmVmaXhfc3RyaW5nIGkgPVxuICAgICgqIGEsIGIsIC4uLiwgeSwgeiwgYWEsIGJiLCAuLi4gKilcbiAgICBTdHJpbmcubWFrZSAoKGkgLyAyNikgKyAxKSAoQ2hhci5jaHIgKENoYXIuY29kZSAnYScgKyAoaSBtb2QgMjYpKSlcbiAgaW5cbiAgbGV0IG5hbWVfcGFyYW0gaSAodHAsIHZhcmlhbmNlKSA9XG4gICAgKG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBPayAoUHR5cF92YXIgKGdlbl9zeW1ib2wgfnByZWZpeDoocHJlZml4X3N0cmluZyBpKSAoKSkpXG4gICAgfCBQdHlwX3ZhciBfIGFzIHYgLT4gT2sgdlxuICAgIHwgXyAtPlxuICAgICAgICBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOnRwLnB0eXBfbG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIikpXG4gICAgPj58IGZ1biBwdHlwX2Rlc2MgLT4gKHsgdHAgd2l0aCBwdHlwX2Rlc2MgfSwgdmFyaWFuY2UpXG4gIGluXG4gIGxldCBwdHlwZV9wYXJhbXMsIGVycm9ycyA9XG4gICAgdGQucHR5cGVfcGFyYW1zIHw+IExpc3QubWFwaSB+ZjpuYW1lX3BhcmFtXG4gICAgfD4gTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvblxuICAgICAgICAgfCBPayBvIC0+IEVpdGhlci5MZWZ0IG9cbiAgICAgICAgIHwgRXJyb3IgZSAtPiBFaXRoZXIuUmlnaHQgZSlcbiAgaW5cbiAgbWF0Y2ggZXJyb3JzIHdpdGggW10gLT4gT2sgeyB0ZCB3aXRoIHB0eXBlX3BhcmFtcyB9IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKVxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZCAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6IHR5cGVfZGVjbGFyYXRpb24gPVxuICBtYXRjaCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyB0ZCB3aXRoXG4gIHwgT2sgcmVzIC0+IHJlc1xuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmYgPVxuICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gIGxldCByZXN1bHRfdHlwZSA9XG4gICAgZiB+bG9jOnRkLnB0eXBlX25hbWUubG9jIChjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZClcbiAgaW5cbiAgTGlzdC5mb2xkX3JpZ2h0IHRkLnB0eXBlX3BhcmFtcyB+aW5pdDpyZXN1bHRfdHlwZVxuICAgIH5mOihmdW4gKHRwLCBfdmFyaWFuY2UpIGFjYyAtPlxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBwdHlwX2Fycm93IH5sb2MgTm9sYWJlbCAoZiB+bG9jIHRwKSBhY2MpXG5cbmxldCBzdHJpbmdfb2ZfY29yZV90eXBlIGN0ID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgUHByaW50YXN0LmNvcmVfdHlwZSBwcGYgY3Q7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWVfcmVzICh0eSwgXykgPVxuICBsZXQgbG9jID0gdHkucHR5cF9sb2MgaW5cbiAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgfCBQdHlwX3ZhciBuYW1lIC0+IE9rIChMb2NhdGVkLm1rIH5sb2MgbmFtZSlcbiAgfCBfIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiLCBbXSlcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWUgdCA9XG4gIG1hdGNoIGdldF90eXBlX3BhcmFtX25hbWVfcmVzIHQgd2l0aFxuICB8IE9rIGUgLT4gZVxuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5leGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmVcblxuY2xhc3MgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG4gICAgdmFsIHR5cGVfbmFtZXMgOiBzdHJpbmcgbGlzdCA9IExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KVxuICAgIG1ldGhvZCByZXR1cm5fdHJ1ZSAoKSA9IHJhaXNlX25vdHJhY2UgVHlwZV9pc19yZWN1cnNpdmVcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYXJyb3cgXyAtPiAoKVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IGlkOyBfIH0sIF8pXG4gICAgICAgIHdoZW4gTGlzdC5tZW0gfnNldDp0eXBlX25hbWVzIGlkIC0+XG4gICAgICAgICAgc2VsZiNyZXR1cm5fdHJ1ZSAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCA9XG4gICAgICAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggY2QucGNkX3JlcyAqKVxuICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgfCBQY3N0cl90dXBsZSBhcmdzIC0+IExpc3QuaXRlciBhcmdzIH5mOnNlbGYjY29yZV90eXBlXG4gICAgICB8IFBjc3RyX3JlY29yZCBmaWVsZHMgLT4gTGlzdC5pdGVyIGZpZWxkcyB+ZjpzZWxmI2xhYmVsX2RlY2xhcmF0aW9uXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZXMgXyA9ICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBhdHRyaWJ1dGVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKVxuXG4gICAgbWV0aG9kIGdvICgpID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuaXRlciB0ZHMgfmY6c2VsZiN0eXBlX2RlY2xhcmF0aW9uIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZSAtPiBSZWN1cnNpdmVcbiAgICAgICAgICB8ICgpIC0+IE5vbnJlY3Vyc2l2ZSlcbiAgZW5kXG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9IChuZXcgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzKSNnbyAoKVxubGV0IHJlYyBsYXN0IHggbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiB4IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbmxldCBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQgPVxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyIFtdIC0+IG5hbWUubG9jXG4gIHwgUFN0ciAoeCA6OiBsKSAtPiB7IHgucHN0cl9sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc3RyX2xvYy5sb2NfZW5kIH1cbiAgfCBQU2lnIFtdIC0+IG5hbWUubG9jXG4gIHwgUFNpZyAoeCA6OiBsKSAtPiB7IHgucHNpZ19sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc2lnX2xvYy5sb2NfZW5kIH1cbiAgfCBQVHlwIHQgLT4gdC5wdHlwX2xvY1xuICB8IFBQYXQgKHgsIE5vbmUpIC0+IHgucHBhdF9sb2NcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+IHsgeC5wcGF0X2xvYyB3aXRoIGxvY19lbmQgPSBlLnBleHBfbG9jLmxvY19lbmQgfVxuXG5sZXQgbG9jX29mX3BheWxvYWQgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG5cbmxldCBsb2Nfb2ZfYXR0cmlidXRlIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgKCogVE9ETzogZml4IHRoaXMgaW4gdGhlIGNvbXBpbGVyLCBhbmQgbW92ZSB0aGUgbG9naWMgdG8gb21wIHdoZW4gY29udmVydGluZ1xuICAgICBmcm9tIG9sZGVyIGFzdHMuICopXG4gICgqIFwib2NhbWwuZG9jXCIgYXR0cmlidXRlcyBhcmUgZ2VuZXJhdGVkIHdpdGggW0xvY2F0aW9uLm5vbmVdLCB3aGljaCBpcyBub3QgaGVscGZ1bCBmb3JcbiAgICAgZXJyb3IgbWVzc2FnZXMuICopXG4gIGlmIFBvbHkuKCA9ICkgYXR0cl9uYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW5cbiAgICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG4gIGVsc2VcbiAgICB7XG4gICAgICBhdHRyX25hbWUubG9jIHdpdGhcbiAgICAgIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZCkubG9jX2VuZDtcbiAgICB9XG5cbmxldCBsb2Nfb2ZfZXh0ZW5zaW9uIChuYW1lLCBwYXlsb2FkKSA9XG4gIGlmIFBvbHkuKCA9ICkgbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZFxuICBlbHNlXG4gICAgeyBuYW1lLmxvYyB3aXRoIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkKS5sb2NfZW5kIH1cblxubGV0IGN1cnJ5X2FwcGxpY2F0aW9ucyBleHByID1cbiAgbGV0IG9wZW4gQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfYXBwbHkgKGYsIG9yaWdfZm9yd2FyZF9hcmdzKSAtPlxuICAgICAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gZlxuICAgICAgICB8IGxhc3RfYXJnIDo6IHJldl9mcm9udF9hcmdzIC0+XG4gICAgICAgICAgICBwZXhwX2FwcGx5IH5sb2MgKGxvb3AgcmV2X2Zyb250X2FyZ3MpIFsgbGFzdF9hcmcgXVxuICAgICAgaW5cbiAgICAgIGxvb3AgKExpc3QucmV2IG9yaWdfZm9yd2FyZF9hcmdzKVxuICB8IF8gLT4gZXhwclxuXG5sZXQgYXR0cmlidXRlc19lcnJvcnMgPVxuICBMaXN0LmZpbHRlcl9tYXAgfmY6KGZ1bmN0aW9uXG4gICAgfCB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfbG9jID0gXzsgYXR0cl9wYXlsb2FkID0gXyB9XG4gICAgICB3aGVuIE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLkxvY2F0aW9uLnR4dCAtPlxuICAgICAgICBOb25lXG4gICAgfCBhdHRyIC0+XG4gICAgICAgIGxldCBsb2MgPSBsb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgICAgU29tZSAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlcyBub3QgYWxsb3dlZCBoZXJlXCIpKVxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSBhY2MgPSBhdHRyaWJ1dGVzX2Vycm9ycyBbIGEgXSBAIGFjY1xuICBlbmRcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzIGwgPVxuICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4gPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgPSBhc3NlcnRfbm9fYXR0cmlidXRlcyBbIGEgXVxuICBlbmRcblxubGV0IGF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzID1cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgbG9jOyB0eHQgPSBcIm9jYW1sLnBwd2FybmluZ1wiIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgcykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaXNfcG9seW1vcnBoaWNfdmFyaWFudCA9XG4gIGxldCByZWMgY2hlY2sgPSBmdW5jdGlvblxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgXzsgXyB9IC0+IGBEZWZpbml0ZWx5XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKHR5cCwgXyk7IF8gfSAtPiBjaGVjayB0eXBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgXzsgXyB9IC0+IGBNYXliZVxuICAgIHwgXyAtPiBgU3VyZWx5X25vdFxuICAgICgqIFR5cGUgdmFycyBnbyBoZXJlIGV2ZW4gdGhvdWdoIHRoZXkgY291bGQgYmUgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cywgaG93ZXZlciB3ZSBkb24ndCBoYW5kbGUgaXQgaWYgdGhleSBnZXQgc3Vic3RpdHV0ZWRcbiAgICAgICBieSBhIHBvbHltb3JwaGljIHZhcmlhbnQgdGhhdCBpcyB0aGVuIGluY2x1ZGVkLiAqKVxuICBpblxuICBmdW4gdGQgfnNpZ18gLT5cbiAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX3JlY29yZCBfIHwgUHR5cGVfb3BlbiAtPiBgU3VyZWx5X25vdFxuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpZiBzaWdfIHRoZW4gYE1heWJlIGVsc2UgYFN1cmVseV9ub3RcbiAgICAgICAgfCBTb21lIHR5cCAtPiBjaGVjayB0eXApXG5cbmxldCBta19uYW1lZF9zaWcgfmxvYyB+c2dfbmFtZSB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFsgdGQgXVxuICAgIHdoZW4gU3RyaW5nLmVxdWFsIHRkLnB0eXBlX25hbWUudHh0IFwidFwiICYmIExpc3QuaXNfZW1wdHkgdGQucHR5cGVfY3N0cnMgLT5cbiAgICAgIGlmXG4gICAgICAgIChub3QgaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQpXG4gICAgICAgICYmIFBvbHkuKCA9ICkgKGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSkgYERlZmluaXRlbHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYXJpdHkgPSBMaXN0Lmxlbmd0aCB0ZC5wdHlwZV9wYXJhbXMgaW5cbiAgICAgICAgaWYgYXJpdHkgPj0gNCB0aGVuIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtdHkgPVxuICAgICAgICAgICAgaWYgYXJpdHkgPSAwIHRoZW4gc2dfbmFtZSBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJXMlZFwiIHNnX25hbWUgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICAgICAgICBsZXQgZm9yX3N1YnN0ID1cbiAgICAgICAgICAgIEFzdF9oZWxwZXIuVHlwZS5tayB+bG9jIHRkLnB0eXBlX25hbWUgfnBhcmFtczp0ZC5wdHlwZV9wYXJhbXNcbiAgICAgICAgICAgICAgfm1hbmlmZXN0OlxuICAgICAgICAgICAgICAgIChwdHlwX2NvbnN0ciB+bG9jXG4gICAgICAgICAgICAgICAgICAgKExvY2F0ZWQubWFwX2xpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCB+Zjpmc3QgdGQucHR5cGVfcGFyYW1zKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChpbmNsdWRlX2luZm9zIH5sb2NcbiAgICAgICAgICAgICAgIChwbXR5X3dpdGggfmxvY1xuICAgICAgICAgICAgICAgICAgKHBtdHlfaWRlbnQgfmxvYyAoTG9jYXRlZC5saWRlbnQgbXR5IH5sb2MpKVxuICAgICAgICAgICAgICAgICAgWyBQd2l0aF90eXBlc3Vic3QgKExvY2F0ZWQubGlkZW50IH5sb2MgXCJ0XCIsIGZvcl9zdWJzdCkgXSkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBleG5fdG9fbG9jX2Vycm9yIGV4biA9XG4gIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aCBTb21lIGVycm9yIC0+IGVycm9yIHwgTm9uZSAtPiByYWlzZSBleG5cblxubW9kdWxlIFdpdGhfZXJyb3JzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0XG5cbiAgbGV0IHJldHVybiBlID0gKGUsIFtdKVxuXG4gIGxldCAoID4+PSApICh4LCBlcnJvcnMxKSBmID1cbiAgICBsZXQgeSwgZXJyb3JzMiA9IGYgeCBpblxuICAgICh5LCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICBsZXQgKCA+PnwgKSAoeCwgZXJyb3JzKSBmID0gKGYgeCwgZXJyb3JzKVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgT2sgeCAtPiAoeCwgW10pXG4gICAgfCBFcnJvciBlcnJvcnMgLT4gKGRlZmF1bHQsIE5vbkVtcHR5TGlzdC50b19saXN0IGVycm9ycylcblxuICBsZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IChMaXN0Lm1hcCBsaXN0IH5mOmZzdCwgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6c25kKVxuZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfcGF0dGVybjBcbmxldCBub2xhYmVsID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vbGFiZWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbGFiZWxcIilcbmxldCBsYWJlbGxlZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGFiZWxsZWQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhYmVsbGVkXCIpXG5sZXQgb3B0aW9uYWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE9wdGlvbmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcHRpb25hbFwiKVxubGV0IGF0dHJpYnV0ZSB+bmFtZTooVCBuYW1lKSAgfnBheWxvYWQ6KFQgcGF5bG9hZCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LmF0dHJfbmFtZSkubG9jICh4LmF0dHJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IHBheWxvYWQgY3R4IGxvYyB4LmF0dHJfcGF5bG9hZCBrIGluIGspXG5sZXQgYmluZGluZ19vcCB+b3A6KFQgb3ApICB+cGF0OihUIHBhdCkgIH5leHA6KFQgZXhwKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gb3AgY3R4ICh4LnBib3Bfb3ApLmxvYyAoeC5wYm9wX29wKS50eHQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcGF0IGN0eCBsb2MgeC5wYm9wX3BhdCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBleHAgY3R4IGxvYyB4LnBib3BfZXhwIGsgaW4gaylcbmxldCBjYXNlIH5saHM6KFQgbGhzKSAgfmd1YXJkOihUIGd1YXJkKSAgfnJoczooVCByaHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBsaHMgY3R4IGxvYyB4LnBjX2xocyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBndWFyZCBjdHggbG9jIHgucGNfZ3VhcmQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcmhzIGN0eCBsb2MgeC5wY19yaHMgayBpbiBrKVxubGV0IHBjbF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHBjbF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbmxldCBwY2xfZnVuIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1blwiKSlcbmxldCBwY2xfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBjbF9sZXQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbmxldCBwY2xfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBjbF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwY2xfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBjZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9pbmhlcml0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbmxldCBwY2ZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfdmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWxcIikpXG5sZXQgcGNmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxubGV0IHBjZl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY2ZfaW5pdGlhbGl6ZXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5pdGlhbGl6ZXJcIikpXG5sZXQgcGNmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxubGV0IHBjZl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBjZmtfdmlydHVhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZpcnR1YWxcIilcbmxldCBjZmtfY29uY3JldGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbmNyZXRlXCIpXG5sZXQgY2xhc3NfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNpX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjaV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjbGFzc19pbmZvcyB+dmlydDooVCB2aXJ0KSAgfnBhcmFtczooVCBwYXJhbXMpICB+bmFtZTooVCBuYW1lKSAgfmV4cHI6KFRcbiAgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2lfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSB2aXJ0IGN0eCBsb2MgeC5wY2lfdmlydCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wY2lfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wY2lfbmFtZSkubG9jICh4LnBjaV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBjaV9leHByIGsgaW4gaykpXG5sZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmOihUIHNlbGYpICB+ZmllbGRzOihUIGZpZWxkcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc2lnX3NlbGYgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZmllbGRzIGN0eCBsb2MgeC5wY3NpZ19maWVsZHMgayBpbiBrKVxubGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZjooVCBzZWxmKSAgfmZpZWxkczooVCBmaWVsZHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3N0cl9zZWxmIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzdHJfZmllbGRzIGsgaW4gaylcbmxldCBwY3R5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3R5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2NvbnN0ciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHBjdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxubGV0IHBjdHlfYXJyb3cgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxubGV0IHBjdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBjdHlfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwY3RmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3RmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbmxldCBwY3RmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbmxldCBwY3RmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbmxldCBwY3RmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY3RmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbmxldCBwY3RmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBjbG9zZWQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDbG9zZWRcIilcbmxldCBvcGVuXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcGVuXCIpXG5sZXQgcGNvbnN0X2ludGVnZXIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZWdlclwiKVxubGV0IHBjb25zdF9jaGFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfY2hhciB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2hhclwiKVxubGV0IHBjb25zdF9zdHJpbmcgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG5sZXQgcGNvbnN0X2Zsb2F0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmbG9hdFwiKVxubGV0IHBjc3RyX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY3N0cl90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIilcbmxldCBwY3N0cl9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnZhcnM6KFQgdmFycykgIH5hcmdzOihUIGFyZ3MpIFxuICB+cmVzOihUIHJlcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wY2RfbmFtZSkubG9jICh4LnBjZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHZhcnMgY3R4IGxvYyB4LnBjZF92YXJzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBhcmdzIGN0eCBsb2MgeC5wY2RfYXJncyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcmVzIGN0eCBsb2MgeC5wY2RfcmVzIGsgaW4gaykpXG5sZXQgcHR5cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG5sZXQgcHR5cF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG5sZXQgcHR5cF9hcnJvdyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG5sZXQgcHR5cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcHR5cF9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbmxldCBwdHlwX29iamVjdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG5sZXQgcHR5cF9jbGFzcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKSlcbmxldCBwdHlwX2FsaWFzIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG5sZXQgcHR5cF92YXJpYW50IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcHR5cF9wb2x5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxubGV0IHB0eXBfcGFja2FnZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrYWdlXCIpKVxubGV0IHB0eXBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHVwdG8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVXB0byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVXB0b1wiKVxubGV0IGRvd250b18gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgRG93bnRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJEb3dudG9cIilcbmxldCBwZGlyYV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGRpcl9zdHJpbmcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfc3RyaW5nIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJpbmdcIilcbmxldCBwZGlyX2ludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRcIilcbmxldCBwZGlyX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKVxubGV0IHBkaXJfYm9vbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9ib29sIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJib29sXCIpXG5sZXQgcGV4cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGV4cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxubGV0IHBleHBfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxubGV0IHBleHBfbGV0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxubGV0IHBleHBfZnVuY3Rpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0aW9uXCIpKVxubGV0IHBleHBfZnVuIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG5sZXQgcGV4cF9hcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBleHBfbWF0Y2ggKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtYXRjaFwiKSlcbmxldCBwZXhwX3RyeSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnlcIikpXG5sZXQgcGV4cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcGV4cF9jb25zdHJ1Y3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbmxldCBwZXhwX3ZhcmlhbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcGV4cF9yZWNvcmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxubGV0IHBleHBfZmllbGQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmllbGRcIikpXG5sZXQgcGV4cF9zZXRmaWVsZCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGZpZWxkXCIpKVxubGV0IHBleHBfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxubGV0IHBleHBfaWZ0aGVuZWxzZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZnRoZW5lbHNlXCIpKVxubGV0IHBleHBfc2VxdWVuY2UgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXF1ZW5jZVwiKSlcbmxldCBwZXhwX3doaWxlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2hpbGVcIikpXG5sZXQgcGV4cF9mb3IgKFQgZjApIChUIGYxKSAoVCBmMikgKFQgZjMpIChUIGY0KSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBsZXQgayA9IGY0IGN0eCBsb2MgeDQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZm9yXCIpKVxubGV0IHBleHBfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwZXhwX2NvZXJjZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvZXJjZVwiKSlcbmxldCBwZXhwX3NlbmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZW5kXCIpKVxubGV0IHBleHBfbmV3IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX25ldyB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld1wiKSlcbmxldCBwZXhwX3NldGluc3R2YXIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRpbnN0dmFyXCIpKVxubGV0IHBleHBfb3ZlcnJpZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm92ZXJyaWRlXCIpKVxubGV0IHBleHBfbGV0bW9kdWxlIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG1vZHVsZVwiKSlcbmxldCBwZXhwX2xldGV4Y2VwdGlvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRleGNlcHRpb25cIikpXG5sZXQgcGV4cF9hc3NlcnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhc3NlcnRcIikpXG5sZXQgcGV4cF9sYXp5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xhenkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxhenlcIikpXG5sZXQgcGV4cF9wb2x5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxubGV0IHBleHBfb2JqZWN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX29iamVjdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxubGV0IHBleHBfbmV3dHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld3R5cGVcIikpXG5sZXQgcGV4cF9wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3BhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2tcIikpXG5sZXQgcGV4cF9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBleHBfbGV0b3AgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0b3AgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG9wXCIpKVxubGV0IHBleHBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucmVhY2hhYmxlXCIpKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZTooVCBuYW1lKSAgfmtpbmQ6KFQga2luZCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGV4dF9uYW1lKS5sb2MgKHgucGV4dF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGtpbmQgY3R4IGxvYyB4LnBleHRfa2luZCBrIGluIGspKVxubGV0IHBleHRfZGVjbCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlY2xcIilcbmxldCBwZXh0X3JlYmluZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWJpbmRcIilcbmxldCB1bml0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFVuaXQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVuaXRcIilcbmxldCBuYW1lZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOYW1lZFwiKVxubGV0IGluY2x1ZGVfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGluY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGluY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBpbmNsdWRlX2luZm9zIH5tb2RfOihUIG1vZF8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBtb2RfIGN0eCBsb2MgeC5waW5jbF9tb2QgayBpbiBrKSlcbmxldCBpbmplY3RpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgSW5qZWN0aXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbmplY3RpdmVcIilcbmxldCBub2luamVjdGl2aXR5ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vSW5qZWN0aXZpdHlcIilcbmxldCBsYWJlbF9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGxkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+bXV0YWJsZV86KFQgbXV0YWJsZV8pICB+dHlwZV86KFRcbiAgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGxkX25hbWUpLmxvYyAoeC5wbGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBtdXRhYmxlXyBjdHggbG9jIHgucGxkX211dGFibGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbGRfdHlwZSBrIGluIGspKVxubGV0IGxldG9wIH5sZXRfOihUIGxldF8pICB+YW5kczooVCBhbmRzKSAgfmJvZHk6KFQgYm9keSkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGxldF8gY3R4IGxvYyB4LmxldF8gayBpblxuICAgICAgICAgICAgIGxldCBrID0gYW5kcyBjdHggbG9jIHguYW5kcyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBib2R5IGN0eCBsb2MgeC5ib2R5IGsgaW4gaylcbmxldCBsb2NhdGlvbiB+c3RhcnQ6KFQgc3RhcnQpICB+ZW5kXzooVCBlbmRfKSAgfmdob3N0OihUIGdob3N0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gc3RhcnQgY3R4IGxvYyB4LmxvY19zdGFydCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBlbmRfIGN0eCBsb2MgeC5sb2NfZW5kIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGdob3N0IGN0eCBsb2MgeC5sb2NfZ2hvc3QgayBpbiBrKVxubGV0IGxpZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGlkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMaWRlbnRcIilcbmxldCBsZG90IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGRvdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGRvdFwiKVxubGV0IGxhcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFwcGx5XCIpXG5sZXQgbW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1iX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtYl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfYmluZGluZyB+bmFtZTooVCBuYW1lKSAgfmV4cHI6KFQgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWJfbmFtZSkubG9jICh4LnBtYl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBtYl9leHByIGsgaW4gaykpXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1kX25hbWUpLmxvYyAoeC5wbWRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG1kX3R5cGUgayBpbiBrKSlcbmxldCBwbW9kX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbW9kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG5sZXQgcG1vZF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG5sZXQgcG1vZF9mdW5jdG9yIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxubGV0IHBtb2RfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbmxldCBwbW9kX2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcG1vZF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnBhY2tcIikpXG5sZXQgcG1vZF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXNfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1zX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWU6KFQgbmFtZSkgIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1zX25hbWUpLmxvYyAoeC5wbXNfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgIG1hbmlmZXN0IGN0eCAoeC5wbXNfbWFuaWZlc3QpLmxvYyAoeC5wbXNfbWFuaWZlc3QpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGspKVxubGV0IHBtdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbmxldCBwbXR5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbmxldCBwbXR5X2Z1bmN0b3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG5sZXQgcG10eV93aXRoIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aXRoXCIpKVxubGV0IHBtdHlfdHlwZW9mIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZW9mXCIpKVxubGV0IHBtdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBtdHlfYWxpYXMgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfYWxpYXMgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXRkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtdGRfbmFtZSkubG9jICh4LnBtdGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG10ZF90eXBlIGsgaW4gaykpXG5sZXQgaW1tdXRhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEltbXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW1tdXRhYmxlXCIpXG5sZXQgbXV0YWJsZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTXV0YWJsZVwiKVxubGV0IHBvZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBvZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9mX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG90YWcgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBPdGFnICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3RhZ1wiKSlcbmxldCBvaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9pbmhlcml0XCIpKVxubGV0IG9wZW5faW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9wZW5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9wZW5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvcGVuX2luZm9zIH5leHByOihUIGV4cHIpICB+b3ZlcnJpZGU6KFQgb3ZlcnJpZGUpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBleHByIGN0eCBsb2MgeC5wb3Blbl9leHByIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBvdmVycmlkZSBjdHggbG9jIHgucG9wZW5fb3ZlcnJpZGUgayBpbiBrKSlcbmxldCBvdmVycmlkZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPdmVycmlkZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3ZlcnJpZGVcIilcbmxldCBmcmVzaCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBGcmVzaCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRnJlc2hcIilcbmxldCBwcGF0X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcGF0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbmxldCBwcGF0X3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG5sZXQgcHBhdF9hbGlhcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBwcGF0X2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbmxldCBwcGF0X2ludGVydmFsIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZXJ2YWxcIikpXG5sZXQgcHBhdF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcHBhdF9jb25zdHJ1Y3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbmxldCBwcGF0X3ZhcmlhbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcHBhdF9yZWNvcmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxubGV0IHBwYXRfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxubGV0IHBwYXRfb3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvclwiKSlcbmxldCBwcGF0X2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcHBhdF90eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpKVxubGV0IHBwYXRfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxubGV0IHBwYXRfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbmxldCBwcGF0X2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKSlcbmxldCBwcGF0X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwcGF0X29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBzdHIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBTdHIgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBTdHJcIilcbmxldCBwc2lnIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQU2lnIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU2lnXCIpXG5sZXQgcHR5cCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFR5cCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFR5cFwiKVxubGV0IHBwYXQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQUGF0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQUGF0XCIpXG5sZXQgcG9zaXRpb24gfmZuYW1lOihUIGZuYW1lKSAgfmxudW06KFQgbG51bSkgIH5ib2w6KFQgYm9sKSAgfmNudW06KFQgY251bSkgXG4gID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGZuYW1lIGN0eCBsb2MgeC5wb3NfZm5hbWUgayBpblxuICAgICAgICAgICAgIGxldCBrID0gbG51bSBjdHggbG9jIHgucG9zX2xudW0gayBpblxuICAgICAgICAgICAgIGxldCBrID0gYm9sIGN0eCBsb2MgeC5wb3NfYm9sIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGNudW0gY3R4IGxvYyB4LnBvc19jbnVtIGsgaW4gaylcbmxldCBwcml2YXRlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQcml2YXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQcml2YXRlXCIpXG5sZXQgcHVibGljID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB1YmxpYyAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHVibGljXCIpXG5sZXQgbm9ucmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9ucmVjdXJzaXZlXCIpXG5sZXQgcmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmVjdXJzaXZlXCIpXG5sZXQgcHJmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHJmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcmZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcnRhZyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBSdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJ0YWdcIikpXG5sZXQgcmluaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFJpbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSaW5oZXJpdFwiKSlcbmxldCBwc2lnX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzaWdfdmFsdWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3ZhbHVlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxubGV0IHBzaWdfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwc2lnX3R5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbmxldCBwc2lnX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbmxldCBwc2lnX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbmxldCBwc2lnX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwc2lnX21vZHN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbmxldCBwc2lnX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbmxldCBwc2lnX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwc2lnX21vZHR5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbmxldCBwc2lnX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCBwc2lnX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbmxldCBwc2lnX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbmxldCBwc2lnX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbmxldCBwc2lnX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbmxldCBwc2lnX2V4dGVuc2lvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG5sZXQgcHN0cl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc3RyX2V2YWwgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJldmFsXCIpXG5sZXQgcHN0cl92YWx1ZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxubGV0IHBzdHJfcHJpbWl0aXZlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInByaW1pdGl2ZVwiKVxubGV0IHBzdHJfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwc3RyX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbmxldCBwc3RyX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbmxldCBwc3RyX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwc3RyX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbmxldCBwc3RyX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwc3RyX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCBwc3RyX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbmxldCBwc3RyX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbmxldCBwc3RyX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbmxldCBwc3RyX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbmxldCBwc3RyX2V4dGVuc2lvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG5sZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lOihUIG5hbWUpICB+YXJnOihUIGFyZykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LnBkaXJfbmFtZSkubG9jICh4LnBkaXJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGFyZyBjdHggbG9jIHgucGRpcl9hcmcgayBpbiBrKVxubGV0IHB0b3BfZGVmIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdG9wX2RlZiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGVmXCIpXG5sZXQgcHRvcF9kaXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0b3BfZGlyIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkaXJcIilcbmxldCB0eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBlX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnBhcmFtczooVCBwYXJhbXMpICB+Y3N0cnM6KFQgY3N0cnMpIFxuICB+a2luZDooVCBraW5kKSAgfnByaXZhdGVfOihUIHByaXZhdGVfKSAgfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucHR5cGVfbmFtZSkubG9jICh4LnB0eXBlX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlwZV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGNzdHJzIGN0eCBsb2MgeC5wdHlwZV9jc3RycyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucHR5cGVfa2luZCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eXBlX3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG1hbmlmZXN0IGN0eCBsb2MgeC5wdHlwZV9tYW5pZmVzdCBrIGluIGspKVxubGV0IHR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4bl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleG5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leGNlcHRpb24gfmNvbnN0cnVjdG9yOihUIGNvbnN0cnVjdG9yKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IGNvbnN0cnVjdG9yIGN0eCBsb2MgeC5wdHlleG5fY29uc3RydWN0b3IgayBpbiBrKSlcbmxldCB0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoOihUIHBhdGgpICB+cGFyYW1zOihUIHBhcmFtcykgIH5jb25zdHJ1Y3RvcnM6KFRcbiAgY29uc3RydWN0b3JzKSAgfnByaXZhdGVfOihUIHByaXZhdGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHBhdGggY3R4ICh4LnB0eWV4dF9wYXRoKS5sb2MgKHgucHR5ZXh0X3BhdGgpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlleHRfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBjb25zdHJ1Y3RvcnMgY3R4IGxvYyB4LnB0eWV4dF9jb25zdHJ1Y3RvcnMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHByaXZhdGVfIGN0eCBsb2MgeC5wdHlleHRfcHJpdmF0ZSBrIGluIGspKVxubGV0IHB0eXBlX2Fic3RyYWN0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhYnN0cmFjdFwiKVxubGV0IHB0eXBlX3ZhcmlhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIilcbmxldCBwdHlwZV9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG5sZXQgcHR5cGVfb3BlbiA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG5sZXQgdmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZiX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2JpbmRpbmcgfnBhdDooVCBwYXQpICB+ZXhwcjooVCBleHByKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHBhdCBjdHggbG9jIHgucHZiX3BhdCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucHZiX2V4cHIgayBpbiBrKSlcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmFsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2YWxfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICB+cHJpbTooVCBwcmltKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wdmFsX25hbWUpLmxvYyAoeC5wdmFsX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnB2YWxfdHlwZSBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpbSBjdHggbG9jIHgucHZhbF9wcmltIGsgaW4gaykpXG5sZXQgY292YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ292YXJpYW50XCIpXG5sZXQgY29udHJhdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb250cmF2YXJpYW50XCIpXG5sZXQgbm92YXJpYW5jZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb1ZhcmlhbmNlXCIpXG5sZXQgdmlydHVhbF8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVmlydHVhbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVmlydHVhbFwiKVxubGV0IGNvbmNyZXRlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvbmNyZXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb25jcmV0ZVwiKVxubGV0IHB3aXRoX3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG5sZXQgcHdpdGhfbW9kdWxlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG5sZXQgcHdpdGhfbW9kdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwd2l0aF9tb2R0eXBlc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxubGV0IHB3aXRoX3R5cGVzdWJzdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG5sZXQgcHdpdGhfbW9kc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXN0X3BhdHRlcm4wXG5cbmxldCBzYXZlX2NvbnRleHQgY3R4ID0gY3R4Lm1hdGNoZWRcbmxldCByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cCA9IGN0eC5tYXRjaGVkIDwtIGJhY2t1cFxubGV0IGluY3JfbWF0Y2hlZCBjID0gYy5tYXRjaGVkIDwtIGMubWF0Y2hlZCArIDFcblxubGV0IHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIHRyeSBPayAoZiB7IG1hdGNoZWQgPSAwIH0gbG9jIHggaylcbiAgd2l0aCBFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkgLT4gKFxuICAgIG1hdGNoIG9uX2Vycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIiVzIGV4cGVjdGVkXCIgZXhwZWN0ZWQsIFtdKVxuICAgIHwgU29tZSBmIC0+IE9rIChmICgpKSlcblxubGV0IHBhcnNlIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgbWF0Y2ggcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrIHdpdGhcbiAgfCBPayByIC0+IHJcbiAgfCBFcnJvciAociwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgclxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4wLnQgKiAnYiAtPiAoJ2EsICdjKSB0XG5cbiAgbGV0IGNyZWF0ZSB0IGYgPSBUICh0LCBmKVxuICBsZXQgcGFyc2VfcmVzIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZV9yZXMgdCBsb2MgeCBmXG4gIGxldCBwYXJzZSAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2UgdCBsb2MgeCBmXG5lbmRcblxubGV0IF9fID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB4KVxuXG5sZXQgX18nID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHsgbG9jOyB0eHQgPSB4IH0pXG5cbmxldCBkcm9wID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgXyBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgaylcblxubGV0IGFzX18gKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4IChrIHgpIGluXG4gICAgICBrKVxuXG5sZXQgY3N0IH50b19zdHJpbmcgPyhlcXVhbCA9IFBvbHkuZXF1YWwpIHYgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaWYgZXF1YWwgeCB2IHRoZW4gKFxuICAgICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgICBrKVxuICAgICAgZWxzZSBmYWlsIGxvYyAodG9fc3RyaW5nIHYpKVxuXG5sZXQgaW50IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQudG9fc3RyaW5nIHZcbmxldCBjaGFyIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlQ1wiKSB2XG5sZXQgc3RyaW5nIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlU1wiKSB2XG5sZXQgZmxvYXQgdiA9IGNzdCB+dG9fc3RyaW5nOkZsb2F0LnRvX3N0cmluZyB2XG5sZXQgaW50MzIgdiA9IGNzdCB+dG9fc3RyaW5nOkludDMyLnRvX3N0cmluZyB2XG5sZXQgaW50NjQgdiA9IGNzdCB+dG9fc3RyaW5nOkludDY0LnRvX3N0cmluZyB2XG5sZXQgbmF0aXZlaW50IHYgPSBjc3QgfnRvX3N0cmluZzpOYXRpdmVpbnQudG9fc3RyaW5nIHZcbmxldCBib29sIHYgPSBjc3QgfnRvX3N0cmluZzpCb29sLnRvX3N0cmluZyB2XG5cbmxldCBib29sJyAoVCBmdW5jKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgXCJ0cnVlXCIgLT4gZnVuYyBjdHggbG9jIHRydWUga1xuICAgICAgfCBcImZhbHNlXCIgLT4gZnVuYyBjdHggbG9jIGZhbHNlIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkJvb2xcIilcblxubGV0IGZhbHNlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmFsc2VcIilcblxubGV0IHRydWVfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInRydWVcIilcblxubGV0IG5pbCA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiW11cIilcblxubGV0ICggXjo6ICkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgeDAgOjogeDEgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIjo6XCIpXG5cbmxldCBub25lID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbmVcIilcblxubGV0IHNvbWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBTb21lIHgwIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiU29tZVwiKVxuXG5sZXQgcGFpciAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGspXG5cbmxldCAoICoqICkgPSBwYWlyXG5cbmxldCB0cmlwbGUgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIsIHgzKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluXG4gICAgICBrKVxuXG5sZXQgYWx0IChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGJhY2t1cCA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgIHRyeSBmMSBjdHggbG9jIHgga1xuICAgICAgd2l0aCBlMSAtPiAoXG4gICAgICAgIGxldCBtMSA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXA7XG4gICAgICAgIHRyeSBmMiBjdHggbG9jIHgga1xuICAgICAgICB3aXRoIGUyIC0+XG4gICAgICAgICAgbGV0IG0yID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICAgIGlmIG0xID49IG0yIHRoZW4gKFxuICAgICAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBtMTtcbiAgICAgICAgICAgIHJhaXNlIGUxKVxuICAgICAgICAgIGVsc2UgcmFpc2UgZTIpKVxuXG5sZXQgKCB8fHwgKSA9IGFsdFxubGV0IG1hcCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBrKSlcbmxldCBtYXAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGxvYyBrKSlcbmxldCBtYXBfcmVzdWx0IChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgKGZ1bmMgY3R4IGxvYyB4IGspKVxubGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbmxldCBtYXAwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIGYpKVxubGV0IG1hcDEgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgYSkpKVxuXG5sZXQgbWFwMiAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGEgYikpKVxuXG5sZXQgbWFwMCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgKGYgbG9jKSkpXG5cbmxldCBtYXAxJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBsb2MgYSkpKVxuXG5sZXQgbWFwMicgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBsb2MgYSBiKSkpXG5cbmxldCBtYXBfdmFsdWUgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIHgpIGspXG5sZXQgbWFwX3ZhbHVlJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgbG9jIHgpIGspXG5cbmxldCBhbHRfb3B0aW9uIHNvbWUgbm9uZSA9XG4gIGFsdCAobWFwMSBzb21lIH5mOihmdW4geCAtPiBTb21lIHgpKSAobWFwMCBub25lIH5mOk5vbmUpXG5cbmxldCBtYW55IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyBsIGsgLT5cbiAgICAgIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGsgKExpc3QucmV2IGFjY3UpXG4gICAgICAgIHwgeCA6OiB4cyAtPiBmIGN0eCBsb2MgeCAoZnVuIHggLT4gYXV4ICh4IDo6IGFjY3UpIHhzKVxuICAgICAgaW5cbiAgICAgIGF1eCBbXSBsKVxuXG5sZXQgbG9jIChUIGYpID0gVCAoZnVuIGN0eCBfbG9jICh4IDogXyBMb2MudCkgayAtPiBmIGN0eCB4LmxvYyB4LnR4dCBrKVxubGV0IHBhY2swIHQgPSBtYXAgdCB+ZjooZnVuIGYgLT4gZiAoKSlcbmxldCBwYWNrMiB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSAtPiBmICh4LCB5KSlcbmxldCBwYWNrMyB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSB6IC0+IGYgKHgsIHksIHopKVxuXG5pbmNsdWRlIEFzdF9wYXR0ZXJuX2dlbmVyYXRlZFxuXG5sZXQgZWNoYXIgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgZXN0cmluZyB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBlZmxvYXQgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgcGNoYXIgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgcHN0cmluZyB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBwZmxvYXQgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgaW50JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKGludF9vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQzMicgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQzMi5vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQ2NCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQ2NC5vZl9zdHJpbmcgeCkgaylcblxubGV0IG5hdGl2ZWludCcgKFQgZikgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChOYXRpdmVpbnQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBjb25zdF9pbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQnIHQpIG5vbmVcbmxldCBjb25zdF9pbnQzMiB0ID0gcGNvbnN0X2ludGVnZXIgKGludDMyJyB0KSAoc29tZSAoY2hhciAnbCcpKVxubGV0IGNvbnN0X2ludDY0IHQgPSBwY29uc3RfaW50ZWdlciAoaW50NjQnIHQpIChzb21lIChjaGFyICdMJykpXG5sZXQgY29uc3RfbmF0aXZlaW50IHQgPSBwY29uc3RfaW50ZWdlciAobmF0aXZlaW50JyB0KSAoc29tZSAoY2hhciAnbicpKVxubGV0IGVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IGVpbnQzMiB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBlaW50NjQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgZW5hdGl2ZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgcGludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgcGludDMyIHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IHBpbnQ2NCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBwbmF0aXZlaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBzaW5nbGVfZXhwcl9wYXlsb2FkIHQgPSBwc3RyIChwc3RyX2V2YWwgdCBuaWwgXjo6IG5pbClcbmxldCBub19sYWJlbCB0ID0gY3N0IEFzdHR5cGVzLk5vbGFiZWwgfnRvX3N0cmluZzooZnVuIF8gLT4gXCJOb2xhYmVsXCIpICoqIHRcbmxldCBlYm9vbCB0ID0gcGV4cF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcbmxldCBwYm9vbCB0ID0gcHBhdF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcblxubGV0IGV4dGVuc2lvbiAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoKG5hbWUgOiBfIExvYy50KSwgcGF5bG9hZCkgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbmFtZS5sb2MgbmFtZS50eHQgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHBheWxvYWQgayBpblxuICAgICAgaylcblxubGV0IHJlYyBwYXJzZV9lbGlzdCAoZSA6IFBhcnNldHJlZS5leHByZXNzaW9uKSBhY2MgPVxuICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXM7XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIE5vbmUpIC0+IExpc3QucmV2IGFjY1xuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBhcmcpIC0+IChcbiAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBhcmcucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgbWF0Y2ggYXJnLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfdHVwbGUgWyBoZDsgdGwgXSAtPiBwYXJzZV9lbGlzdCB0bCAoaGQgOjogYWNjKVxuICAgICAgfCBfIC0+IGZhaWwgYXJnLnBleHBfbG9jIFwibGlzdFwiKVxuICB8IF8gLT4gZmFpbCBlLnBleHBfbG9jIFwibGlzdFwiXG5cbmxldCBlbGlzdCAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IGwgPSBwYXJzZV9lbGlzdCBlIFtdIGluXG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayAoTGlzdC5tYXAgbCB+ZjooZnVuIHggLT4gZiBjdHggeC5QYXJzZXRyZWUucGV4cF9sb2MgeCAoZnVuIHggLT4geCkpKSlcblxubGV0IGVzZXF1ZW5jZSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IHJlYyBwYXJzZV9zZXEgZXhwciBhY2MgPVxuICAgICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoZXhwciwgbmV4dCkgLT4gcGFyc2Vfc2VxIG5leHQgKGV4cHIgOjogYWNjKVxuICAgICAgICB8IF8gLT4gZXhwciA6OiBhY2NcbiAgICAgIGluXG4gICAgICBrXG4gICAgICAgIChMaXN0LnJldl9tYXAgKHBhcnNlX3NlcSBlIFtdKSB+ZjooZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICBmIGN0eCBleHByLnBleHBfbG9jIGV4cHIgKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBvZl9mdW5jIGYgPSBUIGZcbmxldCB0b19mdW5jIChUIGYpID0gZlxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBwb2x5X2VxdWFsIGEgYiA9XG4gIGxldCBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgOiBfIC0+IHRcbiAgZW5kIGluXG4gIFN0ZHBweC5Qb2x5LmVxdWFsIChQb2x5LlQgYSkgKFBvbHkuVCBiKVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiB0XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gdFxuICAgIHwgVHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiB0XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ2xhc3NfaW5mb3MgOiBfIGNsYXNzX2luZm9zIHRcbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiB0XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiB0XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiB0XG4gICAgfCBJbmNsdWRlX2luZm9zIDogXyBpbmNsdWRlX2luZm9zIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgVmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgdFxuICAgIHwgTW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyB0XG4gICAgfCBQc3RyX2V2YWwgOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc3RyX2V4dGVuc2lvbiA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgUnRhZyA6IHJvd19maWVsZCB0XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCA6IG9iamVjdF9maWVsZCB0XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uID0gTGFiZWxfZGVjbGFyYXRpb25cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gQ29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZGVjbGFyYXRpb24gPSBUeXBlX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA9IFR5cGVfZXh0ZW5zaW9uXG4gIGxldCB0eXBlX2V4Y2VwdGlvbiA9IFR5cGVfZXhjZXB0aW9uXG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiA9IFZhbHVlX2Rlc2NyaXB0aW9uXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNsYXNzX2luZm9zID0gQ2xhc3NfaW5mb3NcbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfZGVjbGFyYXRpb25cbiAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0gTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgbGV0IG9wZW5fZGVzY3JpcHRpb24gPSBPcGVuX2Rlc2NyaXB0aW9uXG4gIGxldCBpbmNsdWRlX2luZm9zID0gSW5jbHVkZV9pbmZvc1xuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgdmFsdWVfYmluZGluZyA9IFZhbHVlX2JpbmRpbmdcbiAgbGV0IG1vZHVsZV9iaW5kaW5nID0gTW9kdWxlX2JpbmRpbmdcbiAgbGV0IHBzdHJfZXZhbCA9IFBzdHJfZXZhbFxuICBsZXQgcHN0cl9leHRlbnNpb24gPSBQc3RyX2V4dGVuc2lvblxuICBsZXQgcHNpZ19leHRlbnNpb24gPSBQc2lnX2V4dGVuc2lvblxuICBsZXQgcnRhZyA9IFJ0YWdcbiAgbGV0IG9iamVjdF90eXBlX2ZpZWxkID0gT2JqZWN0X3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X3BzdHJfZXZhbCBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXZhbCAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXZhbFwiXG5cbiAgbGV0IGdldF9wc3RyX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfcHNpZ19leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzaWdfZGVzYyB3aXRoXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzaWdfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geC5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geC5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHgucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHgucHR5ZXhuX2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB4LnBleHRfYXR0cmlidXRlc1xuICAgIHwgUGF0dGVybiAtPiB4LnBwYXRfYXR0cmlidXRlc1xuICAgIHwgQ29yZV90eXBlIC0+IHgucHR5cF9hdHRyaWJ1dGVzXG4gICAgfCBFeHByZXNzaW9uIC0+IHgucGV4cF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB4LnB2YWxfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZSAtPiB4LnBjdHlfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB4LnBjdGZfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfaW5mb3MgLT4geC5wY2lfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZXhwciAtPiB4LnBjbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19maWVsZCAtPiB4LnBjZl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZSAtPiB4LnBtdHlfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHgucG1kX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHgucG10ZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHgucG1zX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB4LnBpbmNsX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9leHByIC0+IHgucG1vZF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHgucHZiX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHgucG1iX2F0dHJpYnV0ZXNcbiAgICB8IFBzdHJfZXZhbCAtPiBzbmQgKGdldF9wc3RyX2V2YWwgeClcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHgpXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc2lnX2V4dGVuc2lvbiB4KVxuICAgIHwgUnRhZyAtPiB4LnByZl9hdHRyaWJ1dGVzXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB4LnBvZl9hdHRyaWJ1dGVzXG5cbiAgbGV0IHNldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4geyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfaW5mb3MgLT4geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19leHByIC0+IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHsgeCB3aXRoIHBtc19hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfYmluZGluZyAtPiB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUHN0cl9ldmFsIC0+XG4gICAgICAgIHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZ2V0X3BzdHJfZXZhbCB4IHw+IGZzdCwgYXR0cnMpIH1cbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFJ0YWcgLT4geyB4IHdpdGggcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiBcImxhYmVsIGRlY2xhcmF0aW9uXCJcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IFwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4gXCJ0eXBlIGV4dGVuc2lvblwiXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiBcInR5cGUgZXhjZXB0aW9uXCJcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4gXCJ2YWx1ZVwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDbGFzc19pbmZvcyAtPiBcImNsYXNzIGRlY2xhcmF0aW9uXCJcbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IFwibW9kdWxlIHN1YnN0aXR1dGlvblwiXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IFwib3BlblwiXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IFwib3BlblwiXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IFwiaW5jbHVkZVwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4gXCJ2YWx1ZSBiaW5kaW5nXCJcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IFwibW9kdWxlIGJpbmRpbmdcIlxuICAgIHwgUHN0cl9ldmFsIC0+IFwidG9wbGV2ZWwgZXhwcmVzc2lvblwiXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIGV4dGVuc2lvblwiXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIHNpZ25hdHVyZSBleHRlbnNpb25cIlxuICAgIHwgUnRhZyAtPiBcInBvbHltb3JwaGljIHZhcmlhbnQgdGFnXCJcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IFwib2JqZWN0IHR5cGUgZmllbGRcIlxuXG4gICgqXG4gIGxldCBwYXR0ZXJuIDogdHlwZSBhIGIgYyBkLiBhIHRcbiAgICAtPiAoYXR0cmlidXRlcywgYiwgYykgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBjLCBkKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGIsIGQpIEFzdF9wYXR0ZXJuLnQgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gICAgICAgLT4gQXN0X3BhdHRlcm4ucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IEFzdF9wYXR0ZXJuLnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAgICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yICAgLT4gQXN0X3BhdHRlcm4ucGV4dF9hdHRyaWJ1dGVzXG4qKVxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG5tb2R1bGUgRmxvYXRpbmdfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSB0IHggPVxuICAgIG1hdGNoIGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSB0IHggd2l0aFxuICAgIHwgU29tZSBhIC0+IGFcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlXCJcblxuICBsZXQgcmVwbGFjZV9ieV9kdW1teSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYSA9XG4gICAgbGV0IGR1bW15X2V4dCA9ICh7IHR4dCA9IFwiXCI7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSwgUFN0ciBbXSkgaW5cbiAgICBmdW4gdCB4IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZHVtbXlfZXh0IH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbnR5cGUgcGFja2VkX2NvbnRleHQgPVxuICB8IE9uX2l0ZW0gOiBfIENvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuICB8IEZsb2F0aW5nIDogXyBGbG9hdGluZ19jb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcblxudHlwZSBfIHBheWxvYWRfcGFyc2VyID1cbiAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAocGF5bG9hZCwgJ2EsICdiKSBBc3RfcGF0dGVybi50XG4gICAgICAqIChhdHRyX2xvYzpMb2NhdGlvbi50IC0+IG5hbWVfbG9jOkxvY2F0aW9uLnQgLT4gJ2EpXG4gICAgICAtPiAnYiBwYXlsb2FkX3BhcnNlclxuXG50eXBlICgnYSwgJ2IpIHQgPSB7XG4gIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xufVxuXG50eXBlIHBhY2tlZCA9IFQgOiAoXywgXykgdCAtPiBwYWNrZWRcblxubGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxubGV0IGNvbnRleHQgdCA9IHQuY29udGV4dFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiYXR0cmlidXRlXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuY3Rpb25cbiAgICB8IE9uX2l0ZW0gdCAtPiBTb21lIChDb250ZXh0LmRlc2MgdClcbiAgICB8IEZsb2F0aW5nIHQgLT4gU29tZSAoRmxvYXRpbmdfY29udGV4dC5kZXNjIHQgXiBcIiAoZmxvYXRpbmcpXCIpKVxuXG5sZXQgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICB7XG4gICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgY29udGV4dDtcbiAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICB9XG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKVxuXG5sZXQgZGVjbGFyZV93aXRoX25hbWVfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2MgLT5cbiAgICAgIGsgfm5hbWVfbG9jKVxuXG5sZXQgZGVjbGFyZV93aXRoX2F0dHJfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2Mgfm5hbWVfbG9jOl8gLT5cbiAgICAgIGsgfmF0dHJfbG9jKVxuXG50eXBlICdhIGZsYWcgPSAoJ2EsIHVuaXQpIHRcblxubGV0IGRlY2xhcmVfZmxhZyBuYW1lIGNvbnRleHQgPVxuICBsZXQgcGF5bG9hZF9wYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSBpblxuICBsZXQgY29udGludWF0aW9uIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfID0gKCkgaW5cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXlsb2FkX3BhdHRlcm4gY29udGludWF0aW9uXG5cbm1vZHVsZSBBdHRyaWJ1dGVfdGFibGUgPSBTdGRsaWIuSGFzaHRibC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxvY1xuXG4gIGxldCBub3JtYWxpemUgdCA9IHsgdCB3aXRoIGxvYyA9IHsgdC5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gfVxuICBsZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIChub3JtYWxpemUgdClcbiAgbGV0IGVxdWFsIHggeSA9IFBvbHkuZXF1YWwgKG5vcm1hbGl6ZSB4KSAobm9ybWFsaXplIHkpXG5lbmQpXG5cbmxldCBub3Rfc2VlbiA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgMTI4XG5sZXQgbWFya19hc19zZWVuIHsgYXR0cl9uYW1lOyBfIH0gPSBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIG5vdF9zZWVuIGF0dHJfbmFtZVxubGV0IG1hcmtfYXNfaGFuZGxlZF9tYW51YWxseSA9IG1hcmtfYXNfc2VlblxuXG5sZXQgZXhwbGljaXRseV9kcm9wID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXJcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSA9IG1hcmtfYXNfc2VlblxuICBlbmRcblxubGV0IGdldF9pbnRlcm5hbCA9XG4gIGxldCByZWMgZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBsb25nZXN0X21hdGNoID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVzIHdpdGhcbiAgICB8IFtdIC0+IE9rIGxvbmdlc3RfbWF0Y2hcbiAgICB8ICh7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBhcyBhdHRyKSA6OiByZXN0IC0+XG4gICAgICAgIGlmIE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dCB0aGVuXG4gICAgICAgICAgbWF0Y2ggbG9uZ2VzdF9tYXRjaCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICB8IFNvbWUgeyBhdHRyX25hbWUgPSBuYW1lJzsgXyB9IC0+XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIG5hbWUudHh0IGluXG4gICAgICAgICAgICAgIGxldCBsZW4nID0gU3RyaW5nLmxlbmd0aCBuYW1lJy50eHQgaW5cbiAgICAgICAgICAgICAgaWYgbGVuID4gbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPCBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCJEdXBsaWNhdGVkIGF0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2UgZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gIGluXG4gIGZ1biB0IGF0dHJpYnV0ZXMgLT4gZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBOb25lXG5cbmxldCBjb252ZXJ0ID8oZG9fbWFya19hc19zZWVuID0gdHJ1ZSkgcGF0dGVybiBhdHRyID1cbiAgaWYgZG9fbWFya19hc19zZWVuIHRoZW4gbWFya19hc19zZWVuIGF0dHI7XG4gIGxldCAoUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspKSA9IHBhdHRlcm4gaW5cbiAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm5cbiAgICAoQ29tbW9uLmxvY19vZl9wYXlsb2FkIGF0dHIpXG4gICAgYXR0ci5hdHRyX3BheWxvYWRcbiAgICAoayB+YXR0cl9sb2M6YXR0ci5hdHRyX2xvYyB+bmFtZV9sb2M6YXR0ci5hdHRyX25hbWUubG9jKVxuXG5sZXQgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA/ZG9fbWFya19hc19zZWVuID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuXG5sZXQgZ2V0IHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHggPVxuICBtYXRjaCBnZXRfcmVzID9tYXJrX2FzX3NlZW4gdCB4IHdpdGhcbiAgfCBPayAoU29tZSAoKSkgLT4gT2sgdHJ1ZVxuICB8IE9rIE5vbmUgLT4gT2sgZmFsc2VcbiAgfCBFcnJvciBfIGFzIGUgLT4gZVxuXG5sZXQgaGFzX2ZsYWcgdCA/bWFya19hc19zZWVuIHggPVxuICBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGNvbnN1bWVfcmVzIHQgeCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBsZXQgYXR0cnMgPSBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoYXR0ciA9PSBhdHRyJykpIGluXG4gICAgICBsZXQgeCA9IENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggYXR0cnMgaW5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lICh4LCB2YWx1ZSlcblxubGV0IGNvbnN1bWUgdCB4ID1cbiAgY29uc3VtZV9yZXMgdCB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCByZW1vdmVfc2Vlbl9yZXMgKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gT2sgYWNjXG4gICAgfCBUIHQgOjogcmVzdCAtPlxuICAgICAgICBpZiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0IHRoZW5cbiAgICAgICAgICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICAgICAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICB8IFNvbWUgYXR0ciAtPlxuICAgICAgICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgICAgICAgIGlmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZSB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBsb29wIChhdHRyIDo6IGFjYykgcmVzdFxuICAgICAgICBlbHNlIGxvb3AgYWNjIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBwYWNrZWRzID4+fCBmdW4gbWF0Y2hlZCAtPlxuICBsZXQgYXR0cnMgPVxuICAgIExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChMaXN0Lm1lbXEgfnNldDptYXRjaGVkIGF0dHInKSlcbiAgaW5cbiAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnNcblxubGV0IHJlbW92ZV9zZWVuICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIHJlbW92ZV9zZWVuX3JlcyAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSlcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHBhdHRlcm5fcmVzIHQgcCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgZiA9IEFzdF9wYXR0ZXJuLnRvX2Z1bmMgcCBpblxuICBBc3RfcGF0dGVybi5vZl9mdW5jIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGNvbnN1bWVfcmVzIHQgeCA+PnwgZnVuIHJlcyAtPlxuICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmIGN0eCBsb2MgeCAoayBOb25lKVxuICAgICAgfCBTb21lICh4LCB2KSAtPiBmIGN0eCBsb2MgeCAoayAoU29tZSB2KSkpXG5cbmxldCBwYXR0ZXJuIHQgcCA9XG4gIHBhdHRlcm5fcmVzIHQgcCB8PiBBc3RfcGF0dGVybi50b19mdW5jXG4gIHw+IChmdW4gZiBhIGIgYyBkIC0+XG4gICAgICAgZiBhIGIgYyBkXG4gICAgICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycikpXG4gIHw+IEFzdF9wYXR0ZXJuLm9mX2Z1bmNcblxubW9kdWxlIEZsb2F0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gRmxvYXRpbmdfY29udGV4dFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG4gIH1cblxuICBsZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gayk7XG4gICAgfVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB4ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBtYXRjaCB0cyB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCB7IGNvbnRleHQ7IF8gfSA6OiBfIC0+IChcbiAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgdHMgfmY6KGZ1biB0IC0+IENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQpKTtcbiAgICAgICAgbGV0IGF0dHIgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGUgY29udGV4dCB4IGluXG4gICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0KVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgW10gLT4gT2sgTm9uZVxuICAgICAgICB8IFsgdCBdIC0+IGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGZsb2F0aW5nIGF0dHJpYnV0ZXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgICAgIFtdICkpXG5cbiAgbGV0IGNvbnZlcnQgdHMgeCA9XG4gICAgY29udmVydF9yZXMgdHMgeFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgaWZcbiAgICAobm90XG4gICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEF0dHJpYnV0ZSBuYW1lLnR4dFxuICAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dCkpXG4gICAgJiYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lXG4gIHRoZW5cbiAgICBsZXQgYWxsb3dsaXN0ID0gTmFtZS5BbGxvd2xpc3RlZC5nZXRfYXR0cmlidXRlX2xpc3QgKCkgaW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciBjb250ZXh0IH5hbGxvd2xpc3RcbiAgICAgICAgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgbm90IHVzZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IF8gPVxuICAgICAgW1xuICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgIF1cblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuXG4gICAgICAgIGEgQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGF0dHJzXG4gICAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3RlZF9lcnJvcnMpXG4gICAgICAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdLCBlcnJvcnMpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19mbG9hdGluZyA6IHR5cGUgYS5cbiAgICAgICAgYSBGbG9hdGluZy5Db250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBGbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSBjb250ZXh0IG5vZGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IFNvbWUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgKEZsb2F0aW5nLkNvbnRleHQucmVwbGFjZV9ieV9kdW1teSBjb250ZXh0IG5vZGUsIGNvbGxlY3RlZF9lcnJvcnMpXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBMYWJlbF9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4dGVuc2lvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXhjZXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXhjZXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGluXG4gICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFBhdHRlcm4geCBpblxuICAgICAgc3VwZXIjcGF0dGVybiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb3JlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY29yZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHByZXNzaW9uIHggaW5cbiAgICAgIHN1cGVyI2V4cHJlc3Npb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZSB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4IGluXG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19leHByIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZSB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2V4cHIgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjdmFsdWVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aCBSdGFnIF8gLT4gc2VsZiNjaGVja19ub2RlIFJ0YWcgeCB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3Jvd19maWVsZCB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZykgLT5cbiAgICAgICAgICAgIGxldCBmaWVsZHMsIGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+Zjooc2VsZiNjaGVja19ub2RlIE9iamVjdF90eXBlX2ZpZWxkKVxuICAgICAgICAgICAgICB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSwgTGlzdC5jb25jYXQgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU3RydWN0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXZhbCBpdGVtXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFNpZ25hdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzaWdfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuICBlbmRcblxubGV0IGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgbWF0Y2ggY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByYWlzZV9pZl9ub25fZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuIGEgQ29udGV4dC50IC0+IGEgLT4gYSA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBub2RlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyIGF0dHJzXG4gICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgICAgICAgICAgIGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHIpO1xuICAgICAgICAgICAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW11cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9ID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbGFiZWxfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXh0ZW5zaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leGNlcHRpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcGF0dGVybiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4cHJlc3Npb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNyb3dfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuICBlbmRcblxubGV0IHJlc2V0X2NoZWNrcyAoKSA9IEF0dHJpYnV0ZV90YWJsZS5jbGVhciBub3Rfc2VlblxuXG5sZXQgY29sbGVjdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cilcbiAgICAgICAgPVxuICAgICAgbGV0IGxvYyA9IENvbW1vbi5sb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5hZGQgbm90X3NlZW4gbmFtZSBsb2NcbiAgZW5kXG5cbmxldCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgPVxuICBsZXQgZmFpbCBuYW1lIGxvYyBhY2MgPVxuICAgIGxldCB0eHQgPSBuYW1lLnR4dCBpblxuICAgIGlmIG5vdCAoTmFtZS5pZ25vcmVfY2hlY2tzIHR4dCkgdGhlblxuICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlIGAlcycgd2FzIHNpbGVudGx5IGRyb3BwZWRcIiB0eHRcbiAgICAgIDo6IGFjY1xuICAgIGVsc2UgYWNjXG4gIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkIGZhaWwgbm90X3NlZW4gW11cblxubGV0IGNoZWNrX2FsbF9zZWVuICgpID1cbiAgbWF0Y2ggY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSA9XG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIHRhYmxlIG5hbWVcbiAgZW5kXG5cbmxldCBjb3B5X29mX25vdF9zZWVuICgpID1cbiAgbGV0IGNvcHkgPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIChBdHRyaWJ1dGVfdGFibGUubGVuZ3RoIG5vdF9zZWVuKSBpblxuICBBdHRyaWJ1dGVfdGFibGUuaXRlciAoQXR0cmlidXRlX3RhYmxlLmFkZCBjb3B5KSBub3Rfc2VlbjtcbiAgY29weVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIHN0ID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc3RydWN0dXJlIHN0O1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIHNnID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc2lnbmF0dXJlIHNnO1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgZmlsZV9wYXRoIDogc3RyaW5nO1xuICBtYWluX21vZHVsZV9uYW1lIDogc3RyaW5nO1xuICBzdWJtb2R1bGVfcGF0aCA6IHN0cmluZyBsb2MgbGlzdDtcbiAgZW5jbG9zaW5nX21vZHVsZSA6IHN0cmluZztcbiAgZW5jbG9zaW5nX3ZhbHVlIDogc3RyaW5nIG9wdGlvbjtcbiAgdmFsdWUgOiBzdHJpbmcgbG9jIG9wdGlvbjtcbiAgaW5fZXhwciA6IGJvb2w7XG59XG5cbmxldCByZW1vdmVfYWxsX2V4dGVuc2lvbnMgYmFzZW5hbWUgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciB+c2VwOicuJyBiYXNlbmFtZSB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlICgqIHNwbGl0X29uX2NoYXIgbmV2ZXIgcmV0dXJucyB0aGUgZW1wdHkgbGlzdCAqKVxuICB8IG5hbWUgOjogXyAtPiBuYW1lXG5cbmxldCB0b3BfbGV2ZWwgfmZpbGVfcGF0aCA9XG4gIGxldCBtYWluX21vZHVsZV9uYW1lID1cbiAgICBmaWxlX3BhdGggfD4gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIHw+IHJlbW92ZV9hbGxfZXh0ZW5zaW9uc1xuICAgIHw+IFN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGluXG4gIHtcbiAgICBmaWxlX3BhdGg7XG4gICAgbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBzdWJtb2R1bGVfcGF0aCA9IFtdO1xuICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtYWluX21vZHVsZV9uYW1lO1xuICAgIGVuY2xvc2luZ192YWx1ZSA9IE5vbmU7XG4gICAgdmFsdWUgPSBOb25lO1xuICAgIGluX2V4cHIgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZmlsZV9wYXRoIHQgPSB0LmZpbGVfcGF0aFxubGV0IG1haW5fbW9kdWxlX25hbWUgdCA9IHQubWFpbl9tb2R1bGVfbmFtZVxubGV0IGVuY2xvc2luZ19tb2R1bGUgdCA9IHQuZW5jbG9zaW5nX21vZHVsZVxubGV0IGVuY2xvc2luZ192YWx1ZSB0ID0gdC5lbmNsb3NpbmdfdmFsdWVcblxubGV0IHN1Ym1vZHVsZV9wYXRoIHQgPVxuICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG5cbmxldCB2YWx1ZSB0ID0gT3B0aW9uLm1hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQudmFsdWVcblxubGV0IGZ1bGx5X3F1YWxpZmllZF9wYXRoIHQgPVxuICBsZXQgdmFsdWUgPSB2YWx1ZSB0IGluXG4gIGxldCBzdWJtb2R1bGVfcGF0aCA9XG4gICAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBTb21lIGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG4gIGluXG4gIGxldCBuYW1lcyA9IChTb21lIHQubWFpbl9tb2R1bGVfbmFtZSA6OiBzdWJtb2R1bGVfcGF0aCkgQCBbIHZhbHVlIF0gaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIEBAIExpc3QuZmlsdGVyX29wdCBuYW1lc1xuXG5sZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggaW5fZXhwciA9IHRydWUgfVxuXG5sZXQgZW50ZXJfbW9kdWxlIH5sb2MgbW9kdWxlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHN1Ym1vZHVsZV9wYXRoID0geyB0eHQgPSBtb2R1bGVfbmFtZTsgbG9jIH0gOjogdC5zdWJtb2R1bGVfcGF0aDtcbiAgICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZTtcbiAgICB9XG5cbmxldCBlbnRlcl92YWx1ZSB+bG9jIHZhbHVlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHZhbHVlID0gU29tZSB7IHR4dCA9IHZhbHVlX25hbWU7IGxvYyB9O1xuICAgICAgZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lO1xuICAgIH1cblxubGV0IHRvX3N0cmluZ19wYXRoIHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgKHQuZmlsZV9wYXRoIDo6IHN1Ym1vZHVsZV9wYXRoIHQpXG5sZXQgd2l0aF9zdHJpbmdfcGF0aCBmIH5sb2MgfnBhdGggPSBmIH5sb2MgfnBhdGg6KHRvX3N0cmluZ19wYXRoIHBhdGgpOztcblxubGV0IG1vZHVsZSBNID0gc3RydWN0XG4gIGxldCBhID0gXCJsb2xcIlxuZW5kIGluXG5NLmFcbiIsIm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgdG9vbF9uYW1lIDogc3RyaW5nOyBjb2RlX3BhdGggOiBDb2RlX3BhdGgudDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgbGV0IHRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWUgPVxuICAgIGxldCBjb2RlX3BhdGggPSBDb2RlX3BhdGgudG9wX2xldmVsIH5maWxlX3BhdGggaW5cbiAgICB7IHRvb2xfbmFtZTsgY29kZV9wYXRoOyBpbnB1dF9uYW1lIH1cblxuICBsZXQgY29kZV9wYXRoIHQgPSB0LmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQudG9vbF9uYW1lXG4gIGxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfZXhwciB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX21vZHVsZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX21vZHVsZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl92YWx1ZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2MgOiBMb2NhdGlvbi50OyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYyB+YmFzZSAoKSA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYzsgYmFzZSB9XG4gIGxldCBleHRlbnNpb25fcG9pbnRfbG9jIHQgPSB0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBkZXJpdmVkX2l0ZW1fbG9jIDogTG9jYXRpb24udDsgaW5saW5lIDogYm9vbDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmRlcml2ZWRfaXRlbV9sb2MgfmlubGluZSB+YmFzZSAoKSA9XG4gICAgeyBkZXJpdmVkX2l0ZW1fbG9jOyBiYXNlOyBpbmxpbmUgfVxuXG4gIGxldCBkZXJpdmVkX2l0ZW1fbG9jIHQgPSB0LmRlcml2ZWRfaXRlbV9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuICBsZXQgaW5saW5lIHQgPSB0LmlubGluZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5kZXJpdmVkX2l0ZW1fbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb24uV2l0aF9lcnJvcnNcbmluY2x1ZGUgQXN0X3RyYXZlcnNlMFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBQcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gQXN0LmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBlbmRcblxubGV0IG1vZHVsZV9uYW1lID0gZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgbmFtZSAtPiBuYW1lXG5sZXQgZW50ZXIgbmFtZSBwYXRoID0gaWYgU3RyaW5nLmlzX2VtcHR5IHBhdGggdGhlbiBuYW1lIGVsc2UgcGF0aCBeIFwiLlwiIF4gbmFtZVxubGV0IGVudGVyX29wdCBuYW1lX29wdCBwYXRoID0gZW50ZXIgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBwYXRoXG5cbmNsYXNzIG1hcF93aXRoX3BhdGggPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmddIG1hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgICgqIFdBUzpcbiAgICAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4ID1cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFBzdHJfbW9kdWxlIG1iIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgKGVudGVyIG1iLnBtYl9uYW1lLnR4dCBwYXRoKSB4XG4gICAgICAgfCBfIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4XG5cbiAgICAgICBPdmVycmlkaW5nIFttb2R1bGVfYmluZGluZ10gc2VlbXMgdG8gYmUgT0sgYmVjYXVzZSBpdCBkb2VzIG5vdCBjYXRjaFxuICAgICAgIGxvY2FsIG1vZHVsZSBiaW5kaW5ncyBiZWNhdXNlIGF0IHRoZSBtb21lbnQgdGhlIHBhcnNldHJlZSBkb2Vzbid0IG1ha2VcbiAgICAgICB1c2Ugb2YgW21vZHVsZV9iaW5kaW5nXSBmb3IgbG9jYWwgbW9kdWxlcywgYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGluIHRoZVxuICAgICAgIGZ1dHVyZSwgc28gdGhpcyBtaWdodCBiZSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG4gICAgICAgVGhlIGZvbGxvd2luZzpcblxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG5cbiAgICAgICBpcyBkaXNhbGxvd2VkLCBidXRcblxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuXG4gICAgICAgaXNuJ3QsIGFuZCB0aGUgXCJwYXRoXCIgY29uc3RydWN0ZWQgaGVyZSB3b3VsZCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICBiZXR3ZWVuIHRoZW0uICopXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBwYXRoIG1iID1cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIChlbnRlcl9vcHQgbWIucG1iX25hbWUudHh0IHBhdGgpIG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBwYXRoIG1kID1cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiAoZW50ZXJfb3B0IG1kLnBtZF9uYW1lLnR4dCBwYXRoKSBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBwYXRoIG10ZCA9XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoZW50ZXIgbXRkLnBtdGRfbmFtZS50eHQgcGF0aCkgbXRkXG4gIGVuZFxuXG5sZXQgdmFyX25hbWVzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIGZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwIGFjYyA9XG4gICAgICBsZXQgYWNjID0gc3VwZXIjcGF0dGVybiBwIGFjYyBpblxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHR4dCA6OiBhY2MgfCBfIC0+IGFjY1xuICBlbmRcblxubGV0IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYyBuYW1lX29wdCBjdHh0ID1cbiAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyAobW9kdWxlX25hbWUgbmFtZV9vcHQpIGN0eHRcblxubGV0IGVudGVyX3ZhbHVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfdmFsdWVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfaWRlbnQgKGxpZGVudCBfXycpKSlcbiAgICBGbi5pZFxuXG5sZXQgZW50ZXJfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2V4cHJcbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9jb25zdHJ1Y3QgKGxpZGVudCBfXycpIG5vbmUpKVxuICAgIEZuLmlkXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxuY2xhc3MgbWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyA9XG4gIGxldCByZXR1cm4gX2N0eCB4ID0gKHgsIFtdKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdFxuICAgICAgW0V4cGFuc2lvbl9jb250ZXh0LkJhc2UudCwgTG9jYXRpb24uRXJyb3IudCBsaXN0XSBsaWZ0X21hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBpbnQgPSByZXR1cm5cbiAgICBtZXRob2Qgc3RyaW5nID0gcmV0dXJuXG4gICAgbWV0aG9kIGJvb2wgPSByZXR1cm5cbiAgICBtZXRob2QgY2hhciA9IHJldHVyblxuICAgIG1ldGhvZCBmbG9hdCA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQzMiA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQ2NCA9IHJldHVyblxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSByZXR1cm5cbiAgICBtZXRob2QgdW5pdCA9IHJldHVyblxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCkgLT5cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgICAgICAnYSBhcnJheSAtPlxuICAgICAgICAgICdhIGFycmF5ICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+XG4gICAgICAgIGxldCBsaXN0LCBlcnJvcnMgPSBzZWxmI2xpc3QgZiBjdHggKEFycmF5LnRvX2xpc3QgYSkgaW5cbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgbGlzdCwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIG90aGVyIDogJ2EuIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIF8gXyAtPiBbXVxuXG4gICAgbWV0aG9kIHJlY29yZCBfY3R4IGZpZWxkcyA9IExpc3QuY29uY2F0X21hcCBmaWVsZHMgfmY6c25kXG4gICAgbWV0aG9kIGNvbnN0ciBfY3R4IF90YWcgYXJncyA9IExpc3QuY29uY2F0IGFyZ3NcbiAgICBtZXRob2QgdHVwbGUgX2N0eCBsID0gTGlzdC5jb25jYXQgbFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGN0eHRcbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFzIGV4cHIpID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfdmFsdWUgZXhwciB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlID4+PSBmdW4gY3R4dCAtPlxuICAgICAgbGV0IGN0eHQgPSBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX2V4cHIgY3R4dCBpblxuICAgICAgbGV0IHBleHBfZGVzYywgZGVzY19lcnJvcnMgPVxuICAgICAgICBtYXRjaCBwZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSkgLT5cbiAgICAgICAgICAgIGxldCBuYW1lLCBuYW1lX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4dCBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZV9leHByLCBtb2R1bGVfZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgICBsZXQgd2l0aF9sZXRfbW9kdWxlID1cbiAgICAgICAgICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSBleHByXG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bW9kdWxlX2V4cHIucG1vZF9sb2MgbmFtZS50eHQgY3R4dFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB3aXRoX2xldF9tb2R1bGUgPj49IGZ1biBjdHh0IC0+IHNlbGYjbW9kdWxlX2V4cHIgY3R4dCBtb2R1bGVfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBib2R5LCBib2R5X2Vycm9ycyA9IHNlbGYjZXhwcmVzc2lvbiBjdHh0IGJvZHkgaW5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHh0IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgbmFtZV9lcnJvcnM7IG1vZHVsZV9leHByX2Vycm9yczsgYm9keV9lcnJvcnMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpLCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHh0IHBleHBfZGVzY1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvYyBpblxuICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBsb2Nfc3RhY2tfZXJyb3JzID1cbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvY19zdGFja1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGN0eHQgcGV4cF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBkZXNjX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIGxvY19zdGFja19lcnJvcnMpO1xuICAgICAgICAgICAgKFwiYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgXSApXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGN0eHQgbWUgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2V4cHIgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl9tb2R1bGUgbWUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2V4cHIgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9leHByIGN0eHQgbWVcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgY3R4dCBtYiA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfYmluZGluZyA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyBtYlxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptYi5wbWJfbG9jIG1iLnBtYl9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfYmluZGluZyA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgY3R4dCBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uIG1kXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1kLnBtZF9sb2MgbWQucG1kX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gbXRkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2M6bXRkLnBtdGRfbG9jXG4gICAgICAgICAgICAgIG10ZC5wbXRkX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPlxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGRcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZCA9XG4gICAgICBsZXQgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiB2ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6dmQucHZhbF9sb2MgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAgICAgICBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIGN0eHRcbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYXMgdmIpID1cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIHZiIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSAoKSAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIGN0eHQgdmJcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpbl9iaW5kaW5nX2N0eHQgPVxuICAgICAgICAgICAgbWF0Y2ggdmFyX25hbWVzX29mI3BhdHRlcm4gcHZiX3BhdCBbXSB3aXRoXG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT4gY3R4dFxuICAgICAgICAgICAgfCBbIHZhcl9uYW1lIF0gLT5cbiAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6cHZiX2xvYyB2YXJfbmFtZSBjdHh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX3BhdCwgcGF0X2Vycm9ycyA9IHNlbGYjcGF0dGVybiBjdHh0IHB2Yl9wYXQgaW5cbiAgICAgICAgICBsZXQgcHZiX2V4cHIsIGV4cHJfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBpbl9iaW5kaW5nX2N0eHQgcHZiX2V4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGluX2JpbmRpbmdfY3R4dCBwdmJfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcHZiX2xvYyBpblxuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwYXRfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBleHByX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBlcnJvcnMpXG4gIGVuZFxuXG5jbGFzcyBzZXhwX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbU2V4cC50XSBBc3QubGlmdFxuICAgIG1ldGhvZCBpbnQgPSBzZXhwX29mX2ludFxuICAgIG1ldGhvZCBzdHJpbmcgPSBzZXhwX29mX3N0cmluZ1xuICAgIG1ldGhvZCBib29sID0gc2V4cF9vZl9ib29sXG4gICAgbWV0aG9kIGNoYXIgPSBzZXhwX29mX2NoYXJcbiAgICBtZXRob2QgZmxvYXQgPSBzZXhwX29mX2Zsb2F0XG4gICAgbWV0aG9kIGludDMyID0gc2V4cF9vZl9pbnQzMlxuICAgIG1ldGhvZCBpbnQ2NCA9IHNleHBfb2ZfaW50NjRcbiAgICBtZXRob2QgbmF0aXZlaW50ID0gc2V4cF9vZl9uYXRpdmVpbnRcbiAgICBtZXRob2QgdW5pdCA9IHNleHBfb2ZfdW5pdFxuICAgIG1ldGhvZCBvcHRpb24gPSBzZXhwX29mX29wdGlvblxuICAgIG1ldGhvZCBsaXN0ID0gc2V4cF9vZl9saXN0XG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSAtPiBTZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHAudCA9IHNleHBfb2ZfYXJyYXlcbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2EgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiXG5cbiAgICBtZXRob2QgcmVjb3JkIGZpZWxkcyA9XG4gICAgICBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAobGFiZWwsIHNleHApIC0+XG4gICAgICAgICAgICAgU2V4cC5MaXN0IFsgQXRvbSBsYWJlbDsgc2V4cCBdKSlcblxuICAgIG1ldGhvZCBjb25zdHIgdGFnIGFyZ3MgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoIFtdIC0+IEF0b20gdGFnIHwgXyAtPiBMaXN0IChBdG9tIHRhZyA6OiBhcmdzKVxuXG4gICAgbWV0aG9kIHR1cGxlIGwgPSBMaXN0IGxcbiAgZW5kXG5cbmxldCBzZXhwX29mID0gbmV3IHNleHBfb2ZcbiIsIiMgMSBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuIFxub3BlbiBMZXhpbmdcblxubGV0IHVwZGF0ZV9sb2MgbGV4YnVmIGxpbmVzX3RvX3NraXAgPVxuICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBwb3Mgd2l0aFxuICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgbGluZXNfdG9fc2tpcDtcbiAgICBwb3NfYm9sID0gcG9zLnBvc19jbnVtO1xuICB9XG5cbiMgMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgc2tpcF9oYXNoX2JhbmcgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE0IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDMgKVxuIyAxMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMSAtPlxuIyAxNiBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAxIClcbiMgMTE4IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDIgLT5cbiMgMTcgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICAoICgpIClcbiMgMTIzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuIEltcG9ydFxuXG5sZXQgd2l0aF9vdXRwdXQgZm4gfmJpbmFyeSB+ZiA9XG4gIG1hdGNoIGZuIHdpdGhcbiAgfCBOb25lIHwgU29tZSBcIi1cIiAtPlxuICAgICAgKCogRmxpcHBpbmcgYmFjayBhbmQgZm9ydGggZnJvbSBiaW5hcnkgdG8gdGV4dCBpcyBub3RcbiAgICAgICAgIGEgZ29vZCBpZGVhLCBzbyB3ZSdsbCBtYWtlIHR3byBzaW1wbGlmeWluZyBhc3N1bXB0aW9uczpcbiAgICAgICAgIDEuIEFzc3VtZSB0aGF0IG5vdGhpbmcgaXMgYnVmZmVyZWQgb24gc3Rkb3V0IGJlZm9yZVxuICAgICAgICAgICAgZW50ZXJpbmcgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICAgICBmbHVzaCB0aGUgc3Rkb3V0IG9uIGVudHJ5LlxuICAgICAgICAgMi4gQXNzdW1lIHRoYXQgbm90aGluZyBlbHNlIGlzIHNlbnQgdG8gc3Rkb3V0IGFmdGVyXG4gICAgICAgICAgICBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIGl0IGlzIHNhZmUgdG8gbGVhdmUgc3Rkb3V0XG4gICAgICAgICAgICBjaGFubmVsIGluIGJpbmFyeSBtb2RlIChvciB0ZXh0IG1vZGUgaWYgW2JpbmFyeT10cnVlXSlcbiAgICAgICAgICAgIGFmdGVyIHRoZSBmdW5jdGlvbiBpcyBkb25lLiAqKVxuICAgICAgc2V0X2JpbmFyeV9tb2RlX291dCBzdGRvdXQgYmluYXJ5O1xuICAgICAgZiBzdGRvdXRcbiAgfCBTb21lIGZuIC0+IE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+YmluYXJ5IH5mXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgfCBJbXBsXG5cbiAgbGV0IG9mX2ZpbGVuYW1lIGZuIDogdCBvcHRpb24gPVxuICAgIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxcIiB0aGVuIFNvbWUgSW1wbFxuICAgIGVsc2UgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbGlcIiB0aGVuIFNvbWUgSW50ZlxuICAgIGVsc2UgTm9uZVxuXG4gIGxldCBkZXNjcmliZSA9IGZ1bmN0aW9uIEltcGwgLT4gXCJpbXBsZW1lbnRhdGlvblwiIHwgSW50ZiAtPiBcImludGVyZmFjZVwiXG4gIGxldCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gUG9seS5lcXVhbFxuZW5kXG5cbm1vZHVsZSBJbnRmX29yX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuXG4gIGxldCBtYXAgdCAobWFwIDogQXN0X3RyYXZlcnNlLm1hcCkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIHgpXG5cbiAgbGV0IG1hcF93aXRoX2NvbnRleHQgdCAobWFwIDogXyBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dCkgY3R4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIGN0eCB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgY3R4IHgpXG5cbiAgbGV0IGtpbmQgOiBfIC0+IEtpbmQudCA9IGZ1bmN0aW9uIEludGYgXyAtPiBJbnRmIHwgSW1wbCBfIC0+IEltcGxcbmVuZFxuXG5tb2R1bGUgQXN0X2lvID0gc3RydWN0XG4gIHR5cGUgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfdmVyc2lvbilcblxuICBsZXQgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKVxuICAoKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgaW5wdXQgdmVyc2lvbiBjYW4ndCBiZSBkZXRlcm1pbmVkIGR1ZSB0b1xuICAgICAgbG9hZGluZyBvciBwcmVwcm9jZXNzaW5nIGVycm9ycyAqKVxuXG4gIHR5cGUgdCA9IHtcbiAgICBpbnB1dF9uYW1lIDogc3RyaW5nO1xuICAgIGlucHV0X3ZlcnNpb24gOiBpbnB1dF92ZXJzaW9uO1xuICAgIGFzdCA6IEludGZfb3JfaW1wbC50O1xuICB9XG5cbiAgdHlwZSByZWFkX2Vycm9yID1cbiAgICB8IE5vdF9hX2JpbmFyeV9hc3RcbiAgICB8IFVua25vd25fdmVyc2lvbiBvZiBzdHJpbmcgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFN5c3RlbV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuXG4gIHR5cGUgaW5wdXRfc291cmNlID0gU3RkaW4gfCBGaWxlIG9mIHN0cmluZ1xuICB0eXBlIGlucHV0X2tpbmQgPSBQb3NzaWJseV9zb3VyY2Ugb2YgS2luZC50ICogc3RyaW5nIHwgTmVjZXNzYXJpbHlfYmluYXJ5XG5cbiAgbGV0IHJlYWRfZXJyb3JfdG9fc3RyaW5nIChlcnJvciA6IHJlYWRfZXJyb3IpID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0IC0+IFwiRXJyb3I6IE5vdCBhIGJpbmFyeSBhc3RcIlxuICAgIHwgVW5rbm93bl92ZXJzaW9uIChzLCBfKSAtPiBcIkVycm9yOiBVbmtub3duIHZlcnNpb24gXCIgXiBzXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3IgKGxvYywgXykgLT5cbiAgICAgICAgXCJTb3VyY2UgcGFyc2UgZXJyb3I6XCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuICAgIHwgU3lzdGVtX2Vycm9yIChsb2MsIF8pIC0+IFwiU3lzdGVtIGVycm9yOiBcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG5cbiAgbGV0IHBhcnNlX3NvdXJjZV9jb2RlIH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGljXG4gICAgICA9XG4gICAgKCogVGhlIGlucHV0IHZlcnNpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBpbnB1dCB3aWxsIGdldCBwYXJzZWQgYnlcbiAgICAgICB0aGUgY3VycmVudCBjb21waWxlciBQYXJzZSBtb2R1bGUgKilcbiAgICBsZXQgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIGluXG4gICAgdHJ5XG4gICAgICAoKiBUbyB0ZXN0IGlmIGEgZmlsZSBpcyBhbiBBU1QgZmlsZSwgd2UgaGF2ZSB0byByZWFkIHRoZSBmaXJzdCBmZXcgYnl0ZXMgb2YgdGhlXG4gICAgICAgICBmaWxlLiBJZiBpdCBpcyBub3QsIHdlIGhhdmUgdG8gcGFyc2UgdGhlc2UgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWxlIGFzXG4gICAgICAgICBzb3VyY2UgY29kZS5cbiAgICAgICAgIFRoZSBjb21waWxlciBqdXN0IGRvZXMgW3NlZWtfb24gMF0gaW4gdGhpcyBjYXNlLCBob3dldmVyIHRoaXMgZG9lc24ndCB3b3JrXG4gICAgICAgICB3aGVuIHRoZSBpbnB1dCBpcyBhIHBpcGUuXG4gICAgICAgICBXaGF0IHdlIGRvIGlzIHdlIGJ1aWxkIGEgc3RyaW5nIG9mIHRoZSB3aG9sZSBzb3VyY2UsIGFwcGVuZCB0aGUgcHJlZml4XG4gICAgICAgICBhbmQgYnVpbHQgYSBsZXhpbmcgYnVmZmVyIGZyb20gdGhhdC5cbiAgICAgICAgIFdlIGhhdmUgdG8gcHV0IGFsbCB0aGUgc291cmNlIGludG8gdGhlIGxleGluZyBidWZmZXIgYXQgb25jZSB0aGlzIHdheVxuICAgICAgICAgZm9yIHNvdXJjZSBxdW90YXRpb24gdG8gd29yayBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICAgICAgIFNlZSBvY2FtbCMxMjIzOCBhbmQgb2NhbWwvZHJpdmVyL3BwYXJzZS5tbC4gKilcbiAgICAgIGxldCBhbGxfc291cmNlID0gcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgXiBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBhbGxfc291cmNlIGluXG4gICAgICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IGxleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gaW5wdXRfbmFtZSB9O1xuICAgICAgQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9sZXhidWYgKFNvbWUgbGV4YnVmKTtcbiAgICAgIFNraXBfaGFzaF9iYW5nLnNraXBfaGFzaF9iYW5nIGxleGJ1ZjtcbiAgICAgIGxldCBhc3QgOiBJbnRmX29yX2ltcGwudCA9XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IEludGYgLT4gSW50ZiAoUGFyc2UuaW50ZXJmYWNlIGxleGJ1ZilcbiAgICAgICAgfCBJbXBsIC0+IEltcGwgKFBhcnNlLmltcGxlbWVudGF0aW9uIGxleGJ1ZilcbiAgICAgIGluXG4gICAgICBPayB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgbWFnaWNfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG4gIGxldCByZWFkX21hZ2ljIGljID1cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIH5wb3M6MCB+bGVuIGluXG4gICAgaWYgbGVuID0gbWFnaWNfbGVuZ3RoIHRoZW4gT2sgcyBlbHNlIEVycm9yIHNcblxuICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lID1cbiAgICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpYyA9XG4gICAgICAoKiBzZXQgaW5wdXQgbGV4YnVmIGZvciBlcnJvciBtZXNzYWdlcy4gKilcbiAgICAgIGxldCBzb3VyY2UgPSBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzb3VyY2UgaW5cbiAgICAgIEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbGV4YnVmIChTb21lIGxleGJ1Zik7XG4gICAgICBsZXhidWZcbiAgICBpblxuICAgIG1hdGNoIEluX2NoYW5uZWwud2l0aF9maWxlIH5iaW5hcnk6dHJ1ZSBpbnB1dF9uYW1lIH5mOnNldF9pbnB1dF9sZXhidWYgd2l0aFxuICAgIHwgKF8gOiBMZXhpbmcubGV4YnVmKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIFN5c19lcnJvciBfIC0+ICgpXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBjaCB+aW5wdXRfa2luZCA9XG4gICAgbGV0IGhhbmRsZV9ub25fYmluYXJ5IHByZWZpeF9yZWFkX2Zyb21fc291cmNlID1cbiAgICAgIG1hdGNoIGlucHV0X2tpbmQgd2l0aFxuICAgICAgfCBQb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIC0+XG4gICAgICAgICAgcGFyc2Vfc291cmNlX2NvZGUgfmtpbmQgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGNoXG4gICAgICB8IE5lY2Vzc2FyaWx5X2JpbmFyeSAtPiBFcnJvciBOb3RfYV9iaW5hcnlfYXN0XG4gICAgaW5cbiAgICAoKiBNYXJzaGFsbGVkIEFTVCBtdXN0IGJlIHJlYWQgaW4gYmluYXJ5IG1vZGUuIEV2ZW4gdGhvdWdoIHdlIGRvbid0IGtub3dcbiAgICAgICBiZWZvcmUgcmVhZGluZyB0aGUgbWFnaWMgbnVtYmVyIHdoZW4gdGhlIGZpbGUgaGFzIGEgbWFyc2hhbGxlZCBBU1QsXG4gICAgICAgaXQgaXMgc2FmZSB0byByZWFkIHNvdXJjZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gKilcbiAgICBzZXRfYmluYXJ5X21vZGVfaW4gY2ggdHJ1ZTtcbiAgICBtYXRjaCByZWFkX21hZ2ljIGNoIHdpdGhcbiAgICB8IEVycm9yIHMgLT4gaGFuZGxlX25vbl9iaW5hcnkgc1xuICAgIHwgT2sgcyAtPiAoXG4gICAgICAgIG1hdGNoIEZpbmRfdmVyc2lvbi5mcm9tX21hZ2ljIHMgd2l0aFxuICAgICAgICB8IEludGYgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWU7XG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkludGYgKElucHV0X3RvX3BweGxpYi5jb3B5X3NpZ25hdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgSW1wbCAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW1wbCAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc3RydWN0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBVbmtub3duIC0+XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgfHwgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICB0aGVuIEVycm9yIChVbmtub3duX3ZlcnNpb24gKHMsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSlcbiAgICAgICAgICAgIGVsc2UgaGFuZGxlX25vbl9iaW5hcnkgcylcblxuICBsZXQgcmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggaW5wdXRfc291cmNlIHdpdGhcbiAgICAgIHwgU3RkaW4gLT5cbiAgICAgICAgICBzZXRfYmluYXJ5X21vZGVfaW4gc3RkaW4gdHJ1ZTtcbiAgICAgICAgICBmcm9tX2NoYW5uZWwgc3RkaW4gfmlucHV0X2tpbmRcbiAgICAgIHwgRmlsZSBmbiAtPiBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kKVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCB3cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24pOyBhc3QgfVxuICAgICAgfmFkZF9wcHhfY29udGV4dCA9XG4gICAgbGV0IG1vZHVsZSBQcHhsaWJfdG9faW5wdXQgPSBDb252ZXJ0IChKcykgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbGV0IG1vZHVsZSBPY2FtbF90b19pbnB1dCA9IENvbnZlcnQgKENvbXBpbGVyX3ZlcnNpb24pIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgfCBJbnRmIHNnIC0+XG4gICAgICAgIGxldCBzZyA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHNnXG4gICAgfCBJbXBsIHN0IC0+XG4gICAgICAgIGxldCBzdCA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHN0XG5cbiAgbW9kdWxlIFJlYWRfYmluID0gc3RydWN0XG4gICAgdHlwZSBhc3QgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG4gICAgdHlwZSB0ID0geyBhc3QgOiBhc3Q7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gICAgbGV0IHJlYWRfYmluYXJ5IGZuID1cbiAgICAgIG1hdGNoXG4gICAgICAgIEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQ6TmVjZXNzYXJpbHlfYmluYXJ5KVxuICAgICAgd2l0aFxuICAgICAgfCBPayB7IGFzdDsgaW5wdXRfbmFtZTsgXyB9IC0+XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgICAgfCBJbXBsIHN0cnVjdHVyZSAtPiBJbXBsIHN0cnVjdHVyZVxuICAgICAgICAgICAgfCBJbnRmIHNpZ25hdHVyZSAtPiBJbnRmIHNpZ25hdHVyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgeyBhc3Q7IGlucHV0X25hbWUgfVxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChyZWFkX2Vycm9yX3RvX3N0cmluZyBlKVxuXG4gICAgbGV0IGdldF9hc3QgdCA9IHQuYXN0XG4gICAgbGV0IGdldF9pbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5c3RlbSA9IHN0cnVjdFxuICBsZXQgcnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0IH5vdXRwdXQgPVxuICAgIGxldCBjb21tYW5kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgPiAlc1wiIHBwXG4gICAgICAgIChpZiBTdHJpbmcuZXF1YWwgaW5wdXQgXCItXCIgdGhlbiBcIlwiIGVsc2UgU3RkbGliLkZpbGVuYW1lLnF1b3RlIGlucHV0KVxuICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIG91dHB1dClcbiAgICBpblxuICAgIGlmIFN0ZGxpYi5TeXMuY29tbWFuZCBjb21tYW5kID0gMCB0aGVuIE9rICgpXG4gICAgZWxzZSBFcnJvciAoY29tbWFuZCwgQXN0X2lvLmZhbGxfYmFja19pbnB1dF92ZXJzaW9uKVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5tb2R1bGUgRmlsZW5hbWUgPSBTdGRsaWIuRmlsZW5hbWVcblxuKCogVE9ETzogbWFrZSB0aGUgXCJkZXJpdmluZy5cIiBkZXBlbmQgb24gdGhlIG1hdGNoaW5nIGF0dHJpYnV0ZSBuYW1lLiAqKVxubGV0IGVuZF9tYXJrZXJfc2lnID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTaWduYXR1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZW5kX21hcmtlcl9zdHIgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFN0cnVjdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbm1vZHVsZSB0eXBlIFQxID0gc2lnXG4gIHR5cGUgJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBnZXRfbG9jIDogdCAtPiBMb2NhdGlvbi50XG4gIHZhbCBlbmRfbWFya2VyIDogKHQsIHVuaXQpIEF0dHJpYnV0ZS5GbG9hdGluZy50XG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA6IHNpZ1xuICAgIHZhbCBhcHBseSA6XG4gICAgICA8IHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gVC50XG4gICAgICA7IHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gVC50XG4gICAgICA7IC4uID4gLT5cbiAgICAgIHQgVC50XG4gIGVuZFxuXG4gIHZhbCBwYXJzZSA6IExleGluZy5sZXhidWYgLT4gdCBsaXN0XG4gIHZhbCBwcCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19zZXhwIDogdCAtPiBTZXhwLnRcbmVuZCkgPVxuc3RydWN0XG4gIGxldCBleHRyYWN0X3ByZWZpeCB+cG9zIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcInBweGxpYjogW0BAQEBAQCVzXSBhdHRyaWJ1dGUgbWlzc2luZ1wiXG4gICAgICAgICAgICAgICAgKEF0dHJpYnV0ZS5GbG9hdGluZy5uYW1lIE0uZW5kX21hcmtlciksXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuRmxvYXRpbmcuY29udmVydF9yZXMgWyBNLmVuZF9tYXJrZXIgXSB4IHdpdGhcbiAgICAgICAgICB8IE9rIE5vbmUgLT4gbG9vcCAoeCA6OiBhY2MpIGxcbiAgICAgICAgICB8IE9rIChTb21lICgpKSAtPiBPayAoTGlzdC5yZXYgYWNjLCAoTS5nZXRfbG9jIHgpLmxvY19zdGFydClcbiAgICAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgICAgIHwgZXhjZXB0aW9uIEZhaWx1cmUgXyAtPiBsb29wICh4IDo6IGFjYykgbClcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG4gIGxldCByZW1vdmVfbG9jID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgICAgbWV0aG9kISBsb2NhdGlvbiBfID0gTG9jYXRpb24ubm9uZVxuICAgICAgbWV0aG9kISBsb2NhdGlvbl9zdGFjayBfID0gW11cbiAgICBlbmRcblxuICBtb2R1bGUgTV9tYXAgPSBNLlRyYW5zZm9ybSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCByZW1vdmVfbG9jIHggPSBNX21hcC5hcHBseSByZW1vdmVfbG9jIHhcbiAgbGV0IHJlYyBsYXN0IHByZXYgPSBmdW5jdGlvbiBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGRpZmZfYXN0cyB+Z2VuZXJhdGVkIH5yb3VuZF90cmlwID1cbiAgICBsZXQgd2l0aF90ZW1wX2ZpbGUgZiA9XG4gICAgICBFeG4ucHJvdGVjdHhcbiAgICAgICAgKEZpbGVuYW1lLnRlbXBfZmlsZSBcInBweGxpYlwiIFwiXCIpXG4gICAgICAgIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mXG4gICAgaW5cbiAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMSAtPlxuICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMiAtPlxuICAgICAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZHVtcCBmbiBhc3QgPVxuICAgICAgICAgICAgICAgICAgT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgICAgICAgICAgICAgIFNleHAucHBfaHVtIHBwZiAoTS50b19zZXhwIGFzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGR1bXAgZm4xIGdlbmVyYXRlZDtcbiAgICAgICAgICAgICAgICBkdW1wIGZuMiByb3VuZF90cmlwO1xuICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCJwYXRkaWZmIC1hc2NpaSAtYWx0LW9sZCBnZW5lcmF0ZWQgLWFsdC1uZXcgXFxcbiAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9rID1cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaWZmIC0tbGFiZWwgZ2VuZXJhdGVkIC0tbGFiZWwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBvayB0aGVuIEluX2NoYW5uZWwucmVhZF9hbGwgb3V0XG4gICAgICAgICAgICAgICAgZWxzZSBcIjxubyBkaWZmZXJlbmNlcyBwcm9kdWNlZCBieSBkaWZmPlwiKSkpXG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzID1cbiAgICBtYXRjaCBNLnBhcnNlIChMZXhpbmcuZnJvbV9zdHJpbmcgcykgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgcmVjIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2UgPVxuICAgIG1hdGNoIChleHBlY3RlZCwgc291cmNlKSB3aXRoXG4gICAgfCBbXSwgW10gLT4gKClcbiAgICB8IFtdLCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyAoTS5nZXRfbG9jIHgpIHdpdGggbG9jX2VuZCA9IChNLmdldF9sb2MgKGxhc3QgeCBsKSkubG9jX2VuZCB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFtdXG4gICAgfCBfLCBbXSAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IExvY2F0aW9uLmxvY19naG9zdCA9IGZhbHNlOyBsb2Nfc3RhcnQgPSBlbmRfcG9zOyBsb2NfZW5kID0gZW5kX3BvcyB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIGV4cGVjdGVkXG4gICAgfCB4IDo6IGV4cGVjdGVkLCB5IDo6IHNvdXJjZSAtPlxuICAgICAgICBsZXQgbG9jID0gTS5nZXRfbG9jIHkgaW5cbiAgICAgICAgbGV0IHggPSByZW1vdmVfbG9jIHggaW5cbiAgICAgICAgbGV0IHkgPSByZW1vdmVfbG9jIHkgaW5cbiAgICAgICAgaWYgUG9seS4oIDw+ICkgeCB5IHRoZW4gKFxuICAgICAgICAgIGxldCByb3VuZF90cmlwID1cbiAgICAgICAgICAgIHJlbW92ZV9sb2MgKHBhcnNlX3N0cmluZyAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIE0ucHAgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHJvdW5kX3RyaXAgdGhlblxuICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICAgICAgICAgICAgXCJwcHhsaWI6IHRoZSBjb3JyZWN0ZWQgY29kZSBkb2Vzbid0IHJvdW5kLXRyaXAuXFxuXFxcbiAgICAgICAgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIE9DYW1sIHByaW50ZXI6XFxuXFxcbiAgICAgICAgICAgICAgICVzXCJcbiAgICAgICAgICAgICAgKGRpZmZfYXN0cyB+Z2VuZXJhdGVkOnggfnJvdW5kX3RyaXApO1xuICAgICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFsgeCBdKTtcbiAgICAgICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuXG4gIGxldCBkb19tYXRjaCB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBzb3VyY2UgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGV4dHJhY3RfcHJlZml4IH5wb3Mgc291cmNlID4+fCBmdW4gKHNvdXJjZSwgZW5kX3BvcykgLT5cbiAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5lbmRcblxuKCokKilcbm1vZHVsZSBTdHIgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc3RyX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc3RyXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbXBsZW1lbnRhdGlvblxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmVfaXRlbVxuZW5kKVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5tb2R1bGUgU2lnID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHNpZ25hdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHNpZ19sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3NpZ1xuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc2lnbmF0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW50ZXJmYWNlXG4gIGxldCBwcCA9IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZV9pdGVtXG5lbmQpXG5cbigqJCopXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmVfcmVzID0gU3RyLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3N0cnVjdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlX3JlcyA9IFNpZy5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zaWduYXR1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cblxudHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHB4X2ltcG9ydCA6IHR5cGVfZGVjbGFyYXRpb24gdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFBweF9pbXBvcnQgLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcblxuICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgZnVuIGEgYiAtPlxuICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgfCBDbGFzc19leHByLCBDbGFzc19leHByIC0+IEVxXG4gICAgfCBDbGFzc19maWVsZCwgQ2xhc3NfZmllbGQgLT4gRXFcbiAgICB8IENsYXNzX3R5cGUsIENsYXNzX3R5cGUgLT4gRXFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIENsYXNzX3R5cGVfZmllbGQgLT4gRXFcbiAgICB8IENvcmVfdHlwZSwgQ29yZV90eXBlIC0+IEVxXG4gICAgfCBFeHByZXNzaW9uLCBFeHByZXNzaW9uIC0+IEVxXG4gICAgfCBNb2R1bGVfZXhwciwgTW9kdWxlX2V4cHIgLT4gRXFcbiAgICB8IE1vZHVsZV90eXBlLCBNb2R1bGVfdHlwZSAtPiBFcVxuICAgIHwgUGF0dGVybiwgUGF0dGVybiAtPiBFcVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIFNpZ25hdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgU3RydWN0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFBweF9pbXBvcnQsIFBweF9pbXBvcnQgLT4gRXFcbiAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChQb2x5LiggPD4gKSAoVCBhKSAoVCBiKSk7XG4gICAgICAgIE5lXG5cbiAgbGV0IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2wgPVxuICAgIG1hdGNoIHR5cGVfZGVjbCB3aXRoXG4gICAgfCB7IHB0eXBlX21hbmlmZXN0ID0gU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIChuYW1lLCBfKTsgXyB9OyBfIH1cbiAgICAgIC0+XG4gICAgICAgIGxldCB2aXJ0dWFsX3BheWxvYWQgPVxuICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl90eXBlIH5sb2M6dHlwZV9kZWNsLnB0eXBlX2xvYyBSZWN1cnNpdmVcbiAgICAgICAgICAgIFsgdHlwZV9kZWNsIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHIgPSBbXSBpblxuICAgICAgICBTb21lICgobmFtZSwgUFN0ciBbIHZpcnR1YWxfcGF5bG9hZCBdKSwgYXR0cilcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfZXh0ZW5zaW9uIDogdHlwZSBhLiBhIHQgLT4gYSAtPiAoZXh0ZW5zaW9uICogYXR0cmlidXRlcykgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgeyBwY2xfZGVzYyA9IFBjbF9leHRlbnNpb24gZTsgcGNsX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBlOyBwY2ZfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZSwgeyBwY3R5X2Rlc2MgPSBQY3R5X2V4dGVuc2lvbiBlOyBwY3R5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZTsgcGN0Zl9hdHRyaWJ1dGVzID0gYTsgXyB9XG4gICAgICAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ29yZV90eXBlLCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIGU7IHB0eXBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgRXhwcmVzc2lvbiwgeyBwZXhwX2Rlc2MgPSBQZXhwX2V4dGVuc2lvbiBlOyBwZXhwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV9leHByLCB7IHBtb2RfZGVzYyA9IFBtb2RfZXh0ZW5zaW9uIGU7IHBtb2RfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX3R5cGUsIHsgcG10eV9kZXNjID0gUG10eV9leHRlbnNpb24gZTsgcG10eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBQYXR0ZXJuLCB7IHBwYXRfZGVzYyA9IFBwYXRfZXh0ZW5zaW9uIGU7IHBwYXRfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBQcHhfaW1wb3J0LCB0eXBlX2RlY2wgLT4gZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbFxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXNfcmVzIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gKGEsIExvY2F0aW9uLkVycm9yLnQgTm9uRW1wdHlMaXN0LnQpIHJlc3VsdCA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDbGFzc19leHByIC0+IE9rIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0geC5wY2xfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IE9rIHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0geC5wY2ZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4gT2sgeyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0geC5wY3R5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+XG4gICAgICAgIE9rIHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IHgucGN0Zl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IE9rIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IHgucHR5cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiBPayB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSB4LnBleHBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IE9rIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IHgucG1vZF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4gT2sgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0geC5wbXR5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IE9rIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IHgucHBhdF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgUHB4X2ltcG9ydCAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWVyZ2VfYXR0cmlidXRlc19yZXMgdCB4IGF0dHJzXG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiZXh0ZW5zaW9uXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuIChDb250ZXh0LlQgY3R4KSAtPiBTb21lIChDb250ZXh0LmRlc2MgY3R4KSlcblxubW9kdWxlIE1ha2UgKENhbGxiYWNrIDogc2lnXG4gIHR5cGUgJ2EgdFxuZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSBwYXlsb2FkX3BhcnNlciA9XG4gICAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAgICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50ICogJ2IgQ2FsbGJhY2sudFxuICAgICAgICAtPiAoJ2EsICdjKSBwYXlsb2FkX3BhcnNlclxuXG4gIHR5cGUgKCdjb250ZXh0LCAncGF5bG9hZCkgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdjb250ZXh0IENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogKHBheWxvYWQsICdwYXlsb2FkKSBwYXlsb2FkX3BhcnNlcjtcbiAgICB3aXRoX2FyZyA6IGJvb2w7XG4gIH1cblxuICBsZXQgZGVjbGFyZSA6XG4gICAgICB0eXBlIGEuXG4gICAgICB3aXRoX2FyZzpib29sIC0+XG4gICAgICBzdHJpbmcgLT5cbiAgICAgIGEgQ29udGV4dC50IC0+XG4gICAgICAocGF5bG9hZCwgJ2IsICdwYXlsb2FkKSBBc3RfcGF0dGVybi50IC0+XG4gICAgICAnYiBDYWxsYmFjay50IC0+XG4gICAgICAoYSwgJ3BheWxvYWQpIHQgPVxuICAgZnVuIH53aXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrIC0+XG4gICAgKCogQ2hlY2sgdGhhdCB0aGVyZSBpcyBubyBjb2xsaXNpb25zIGJldHdlZW4gcHB4X2ltcG9ydCBhbmQgY29yZV90eXBlXG4gICAgICAgZXh0ZW5zaW9ucyAqKVxuICAgIChtYXRjaCBjb250ZXh0IHdpdGhcbiAgICB8IENvbnRleHQuUHB4X2ltcG9ydCAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIENvcmVfdHlwZSkgbmFtZVxuICAgIHwgQ29udGV4dC5Db3JlX3R5cGUgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBQcHhfaW1wb3J0KSBuYW1lXG4gICAgfCBfIC0+ICgpKTtcbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgRXh0ZW5zaW9uIHJlZ2lzdHJhciAoQ29udGV4dC5UIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgICAgIHdpdGhfYXJnO1xuICAgIH1cblxuICBsZXQgZmluZCB0cyAoZXh0IDogZXh0ZW5zaW9uKSA9XG4gICAgbGV0IHsgdHh0ID0gbmFtZTsgbG9jIH0gPSBmc3QgZXh0IGluXG4gICAgbGV0IG5hbWUsIGFyZyA9IE5hbWUuc3BsaXRfcGF0aCBuYW1lIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCBfIDo6IF8gOjogXyBhcyBsIC0+XG4gICAgICAgIEVycm9yXG4gICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZXh0ZW5zaW9uczogJXNcIlxuICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgW10gKVxuICAgIHwgWyB0IF0gLT5cbiAgICAgICAgaWYgKG5vdCB0LndpdGhfYXJnKSAmJiBPcHRpb24uaXNfc29tZSBhcmcgdGhlblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICAgICAgICAgIFwiRXh0ZW5zaW9uICVzIGRvZXNuJ3QgZXhwZWN0IGEgcGF0aCBhcmd1bWVudFwiIG5hbWUsXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBhcmcgPVxuICAgICAgICAgICAgT3B0aW9uLm1hcCBhcmcgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNoaWZ0ID0gU3RyaW5nLmxlbmd0aCBuYW1lICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGxvYy5sb2Nfc3RhcnQgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eHQgPSBMb25naWRlbnQucGFyc2UgcztcbiAgICAgICAgICAgICAgICAgIGxvYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXJ0IHdpdGggcG9zX2NudW0gPSBzdGFydC5wb3NfY251bSArIHNoaWZ0IH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIChTb21lICh0LCBhcmcpKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG4gIGVuZClcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGN0eCBwYXR0IGZcblxuICBsZXQgZGVjbGFyZSBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY3R4IHBhdHQgKGZ1biB+YXJnOl8gLT4gZilcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmxvYyBleHQgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGZpbmQgdHMgZXh0ID4+PSBmdW4gciAtPlxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPlxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5hcmcpID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBTb21lIHBheWxvYWRcblxuICBsZXQgY29udmVydCB0cyB+bG9jIGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmxvYyBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbm1vZHVsZSBNID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24udCAtPiBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG5lbmQpXG5cbnR5cGUgJ2EgZXhwYW5kZXJfcmVzdWx0ID0gU2ltcGxlIG9mICdhIHwgSW5saW5lIG9mICdhIGxpc3RcblxubW9kdWxlIEZvcl9jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgZXhwYW5kZXJfcmVzdWx0KSBNLnRcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aFxuICAgICAgICB8IFNpbXBsZSB4IC0+IFNvbWUgeFxuICAgICAgICB8IElubGluZSBfIC0+IGZhaWx3aXRoIFwiRXh0ZW5zaW9uLmNvbnZlcnRcIilcblxuICBsZXQgY29udmVydCB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoIFNpbXBsZSB4IC0+IFNvbWUgWyB4IF0gfCBJbmxpbmUgbCAtPiBTb21lIGwpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lIHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxudHlwZSB0ID0gVCA6IF8gRm9yX2NvbnRleHQudCAtPiB0XG5cbmxldCBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgOiB0eXBlIGEuIGZ1bmM6c3RyaW5nIC0+IGEgQ29udGV4dC50IC0+IHVuaXQgPVxuIGZ1biB+ZnVuYyBjdHggLT5cbiAgbWF0Y2ggY3R4IHdpdGhcbiAgfCBDb250ZXh0LkNsYXNzX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5DbGFzc190eXBlX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5TaWduYXR1cmVfaXRlbSAtPiAoKVxuICB8IENvbnRleHQuU3RydWN0dXJlX2l0ZW0gLT4gKClcbiAgfCBjb250ZXh0IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCIlczogJXMgY2FuJ3QgYmUgaW5saW5lZFwiIGZ1bmNcbiAgICAgICAgKENvbnRleHQuZGVzYyBjb250ZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9ieV9jb250ZXh0IDpcbiAgICB0eXBlIGEuIGEgQ29udGV4dC50IC0+IHQgbGlzdCAtPiBhIEZvcl9jb250ZXh0LnQgbGlzdCA9XG4gZnVuIGNvbnRleHQgZXhwYW5kZXJzIC0+XG4gIG1hdGNoIGV4cGFuZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBUIHQgOjogcmVzdCAtPiAoXG4gICAgICBtYXRjaCBDb250ZXh0LmVxIGNvbnRleHQgdC5jb250ZXh0IHdpdGhcbiAgICAgIHwgRXEgLT4gdCA6OiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3RcbiAgICAgIHwgTmUgLT4gZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0KVxuXG5sZXQgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBjdHggKG5hbWUsIF8pID1cbiAgaWZcbiAgICBub3RcbiAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBFeHRlbnNpb24gbmFtZS50eHRcbiAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dClcbiAgdGhlblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIChDb250ZXh0LlQgY3R4KVxuICAgICAgICBcIkV4dGVuc2lvbiBgJXMnIHdhcyBub3QgdHJhbnNsYXRlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pIGFjYyA9XG4gICAgICBhY2NcbiAgICAgIEAgW1xuICAgICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICAgIF1cblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENvcmVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFBhdHRlcm4gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgRXhwcmVzc2lvbiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdGZfZXh0ZW5zaW9uIGV4dCAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZV9maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjZl9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbXR5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTaWduYXR1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV9leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHN0cl9leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFN0cnVjdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2NcbiAgZW5kXG5cbmxldCBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNwYXR0ZXJuX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNleHByZXNzaW9uX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG4gIGVuZFxuXG5tb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0IH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuZW5kXG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IF9fZGVjbGFyZV9wcHhfaW1wb3J0IG5hbWUgZXhwYW5kID1cbiAgKCogVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gdW53cmFwIHRoZSB0eXBlIGRlY2xhcmF0aW9uIGZyb20gdGhlIHBheWxvYWRcbiAgICAgYXNzZW1ibGVkIGJ5IFtDb250ZXh0LmdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbl0gKilcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl90eXBlIHJlY3Vyc2l2ZSAoX18gXjo6IG5pbCkgXjo6IG5pbCkpIGluXG4gIFYzLmRlY2xhcmUgbmFtZSBDb250ZXh0LlBweF9pbXBvcnQgcGF0dGVybiBleHBhbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgPSBkZWNsYXJlXG4gIGxldCBkZWNsYXJlX2lubGluZSA9IGRlY2xhcmVfaW5saW5lXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBFID0gRXh0ZW5zaW9uXG5tb2R1bGUgRUMgPSBFeHRlbnNpb24uQ29udGV4dFxubW9kdWxlIEEgPSBBdHRyaWJ1dGVcbm1vZHVsZSBBQyA9IEF0dHJpYnV0ZS5Db250ZXh0XG5cbm1vZHVsZSBSdWxlID0gc3RydWN0XG4gIG1vZHVsZSBBdHRyX2dyb3VwX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDpcbiAgICAgICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICAgICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAgICAgJ2IgbGlzdCAtPlxuICAgICAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICAgICAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBBdHRyX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgU3BlY2lhbF9mdW5jdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBpZGVudCA6IExvbmdpZGVudC50O1xuICAgICAgZXhwYW5kIDogUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gUGFyc2V0cmVlLmV4cHJlc3Npb24gb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50X2tpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBGbG9hdCB8IEludGVnZXJcbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3VmZml4IDogY2hhcjtcbiAgICAgIGtpbmQgOiBDb25zdGFudF9raW5kLnQ7XG4gICAgICBleHBhbmQgOiBMb2NhdGlvbi50IC0+IHN0cmluZyAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEV4dGVuc2lvbiA6IEV4dGVuc2lvbi50IHRcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiA6IFNwZWNpYWxfZnVuY3Rpb24udCB0XG4gICAgICB8IENvbnN0YW50IDogQ29uc3RhbnQudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcblxuICAgIHR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbiAgICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgICBmdW4gYSBiIC0+XG4gICAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgICAgfCBFeHRlbnNpb24sIEV4dGVuc2lvbiAtPiBFcVxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uLCBTcGVjaWFsX2Z1bmN0aW9uIC0+IEVxXG4gICAgICB8IENvbnN0YW50LCBDb25zdGFudCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2wsIEF0dHJfc3RyX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2wsIEF0dHJfc2lnX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCwgQXR0cl9zdHJfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQsIEF0dHJfc2lnX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiwgQXR0cl9zdHJfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiwgQXR0cl9zaWdfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBfIC0+IE5lXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYSBGaWVsZC50ICogJ2EgLT4gdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfZ3JvdXBfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgJ2IgbGlzdCAtPlxuICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIGxldCByZWMgZmlsdGVyIDogdHlwZSBhLiBhIEZpZWxkLnQgLT4gdCBsaXN0IC0+IGEgbGlzdCA9XG4gICBmdW4gZmllbGQgbCAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IFQgKGZpZWxkJywgeCkgOjogbCAtPiAoXG4gICAgICAgIG1hdGNoIEZpZWxkLmVxIGZpZWxkIGZpZWxkJyB3aXRoXG4gICAgICAgIHwgRmllbGQuRXEgLT4geCA6OiBmaWx0ZXIgZmllbGQgbFxuICAgICAgICB8IEZpZWxkLk5lIC0+IGZpbHRlciBmaWVsZCBsKVxuXG4gIGxldCBleHRlbnNpb24gZXh0ID0gVCAoRXh0ZW5zaW9uLCBleHQpXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb24gaWQgZiA9XG4gICAgVCAoU3BlY2lhbF9mdW5jdGlvbiwgeyBuYW1lID0gaWQ7IGlkZW50ID0gTG9uZ2lkZW50LnBhcnNlIGlkOyBleHBhbmQgPSBmIH0pXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb24nIGlkZW50IGYgPVxuICAgIFQgKFNwZWNpYWxfZnVuY3Rpb24sIHsgbmFtZSA9IExvbmdpZGVudC5uYW1lIGlkZW50OyBpZGVudDsgZXhwYW5kID0gZiB9KVxuXG4gIGxldCBjb25zdGFudCBraW5kIHN1ZmZpeCBleHBhbmQgPSBUIChDb25zdGFudCwgeyBzdWZmaXg7IGtpbmQ7IGV4cGFuZCB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5lbmRcblxubW9kdWxlIEdlbmVyYXRlZF9jb2RlX2hvb2sgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzaW5nbGVfb3JfbWFueSA9IFNpbmdsZSBvZiAnYSB8IE1hbnkgb2YgJ2EgbGlzdFxuXG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEV4dGVuc2lvbi5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBzaW5nbGVfb3JfbWFueSAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbiAgbGV0IHJlcGxhY2UgdCBjb250ZXh0IGxvYyB4ID0gdC5mIGNvbnRleHQgbG9jIHhcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNYW55IFtdIC0+ICgpXG4gICAgfCBfIC0+IHQuZiBjb250ZXh0IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSB4XG5lbmRcblxuKCogVXNlZCB0byBpbnNlcnQgZXJyb3IgZXh0ZW5zaW9ucyAqKVxubGV0IHdyYXBfZXh0ZW5zaW9uIDogdHlwZSBhLiBsb2M6TG9jYXRpb24udCAtPiBhIEVDLnQgLT4gYSAtPiBleHRlbnNpb24gLT4gYSA9XG4gZnVuIH5sb2MgdCBvcmlnaW5hbF9ub2RlIGV4dGVuc2lvbiAtPlxuICAoKiBQcmVmaXhpbmcgY29uc3RydWN0b3JzIHdpdGggdGhlIG1vZHVsZSBwYXRoIGlzIG5lY2Vzc2FyeSBmb3IgT0NhbWwgPCA0LjA3LFxuICAgICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy82ODUyICopXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVDLkNsYXNzX2V4cHIgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY2xfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfZmllbGQgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY2ZfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjdGZfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ29yZV90eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5FeHByZXNzaW9uIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGV4cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtb2RfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuTW9kdWxlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wbXR5X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLlBhdHRlcm4gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wcGF0X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLlNpZ25hdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5TdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG4gIHwgRUMuUHB4X2ltcG9ydCAtPlxuICAgICAgKCogSW5zZXJ0IHRoZSBlcnJvciBpbiB0aGUgdHlwZSBkZWNsIG1hbmlmZXN0ICopXG4gICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPVxuICAgICAgICBTb21lIChBc3RfYnVpbGRlci5EZWZhdWx0LnB0eXBfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uKVxuICAgICAgaW5cbiAgICAgIHsgb3JpZ2luYWxfbm9kZSB3aXRoIHB0eXBlX21hbmlmZXN0IH1cblxubGV0IGV4bl90b19leHRlbnNpb24gZXhuID1cbiAgbGV0IGVycm9yID0gZXhuX3RvX2xvY19lcnJvciBleG4gaW5cbiAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICBsZXQgZXh0ZW5zaW9uID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIChleHRlbnNpb24sIGxvYylcblxubGV0IGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCBvcmlnaW5hbF9ub2RlIGV4biA9XG4gIGxldCBleHRlbnNpb24sIGxvYyA9IGV4bl90b19leHRlbnNpb24gZXhuIGluXG4gIHdyYXBfZXh0ZW5zaW9uIH5sb2MgY29udGV4dCBvcmlnaW5hbF9ub2RlIGV4dGVuc2lvblxuXG5sZXQgZXhuX3RvX3N0cmkgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuXG5sZXQgZXhuX3RvX3NpZ2kgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuXG5sZXQgcmVjIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuKSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIEVDLm1lcmdlX2F0dHJpYnV0ZXNfcmVzIGNvbnRleHQgeCBhdHRyc1xuICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycylcblxubGV0IG1hcF9ub2RlIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmhvb2sgfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0XG4gICAgICAgICAgICAoRUMubWVyZ2VfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnMpXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgPj58IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgbG9jIChTaW5nbGUgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgIGdlbmVyYXRlZF9jb2RlKVxuXG5sZXQgcmVjIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9vayB+ZW1iZWRfZXJyb3JzXG4gICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIFtdXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIFRoZXNlIHR3byBsZXRzIGZvcmNlIHRoZSBldmFsdWF0aW9uIG9yZGVyLCBzbyB0aGF0IGVycm9ycyBhcmUgcmVwb3J0ZWQgaW4gdGhlXG4gICAgICAgICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGZpbGUuICopXG4gICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSBbIGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4biBdKSlcbiAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgICAgIHwgU29tZSBjb252ZXJ0ZWQgLT5cbiAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGNvbnZlcnRlZCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgICAgICAgPj49IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgKE1hbnkgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGNvZGUgLT4gZ2VuZXJhdGVkX2NvZGUgQCBjb2RlKSlcblxubGV0IG1hcF9ub2RlcyA9IG1hcF9ub2RlcyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxubGV0IHRhYmxlX29mX3NwZWNpYWxfZnVuY3Rpb25zIHNwZWNpYWxfZnVuY3Rpb25zID1cbiAgbWF0Y2hcbiAgICBMaXN0Lm1hcCBzcGVjaWFsX2Z1bmN0aW9uc1xuICAgICAgfmY6KGZ1biB7IFJ1bGUuU3BlY2lhbF9mdW5jdGlvbi5pZGVudDsgZXhwYW5kOyBfIH0gLT4gKGlkZW50LCBleHBhbmQpKVxuICAgICgqIFdlIGV4cGVjdCB0aGUgbG9va3VwIHRvIGZhaWwgbW9zdCBvZiB0aGUgdGltZSwgYnkgbWFraW5nIHRoZSB0YWJsZSBiaWcgKGFuZFxuICAgICAgIHNwYXJzZSksIHdlIG1ha2UgaXQgbW9yZSBsaWtlbHkgdG8gZmFpbCBxdWlja2x5ICopXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdCB+c2l6ZToobWF4IDEwMjQgKExpc3QubGVuZ3RoIHNwZWNpYWxfZnVuY3Rpb25zICogMikpXG4gIHdpdGhcbiAgfCBPayB0YWJsZSAtPiB0YWJsZVxuICB8IEVycm9yIGlkZW50IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJDb250ZXh0X2ZyZWUuVjEubWFwX3RvcF9kb3duOiAlcyBwcmVzZW50IHR3aWNlIGluIGxpc3Qgb2Ygc3BlY2lhbCBcXFxuICAgICAgICAgZnVuY3Rpb25zXCJcbiAgICAgICAgKExpc3QuZmluZF9tYXBfZXhuIHNwZWNpYWxfZnVuY3Rpb25zIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgIGlmIFBvbHkuZXF1YWwgci5pZGVudCBpZGVudCB0aGVuIFNvbWUgci5uYW1lIGVsc2UgTm9uZSkpXG5cbigqIFtnZXRfZ3JvdXAgYXR0ciBsXSByZXR1cm5zIHRoZSBsaXN0IG9mIHRoZSBhdHRyaWJ1dGVzIGZvciBlYWNoXG4gICBub2RlIGluIFtsXS5cbiAgIElmIFtsXSBpcyBlbXB0eSBvciBpZiBub25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGF2ZSBhbiBhdHRyaWJ1dGUgYXR0YWNoZWQsXG4gICBbZ2V0X2dyb3VwXSByZXR1cm5zIFtOb25lXS5cbiAgIElmIFtsXSBpcyBub3QgZW1wdHkgYW5kIGF0IGxlYXN0IG9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhcyBhbiBhdHRyaWJ1ZVxuICAgYXR0YWNoZWQsIFtnZXRfZ3JvdXBdIHJldHVybnMgdGhlIGVxdWl2YWxlbnQgb2ZcbiAgIFtTb21lIChMaXN0Lm1hcCB+ZjooQXR0cmlidXRlLmdldCBhdHRyKSBsKV0uICopXG5sZXQgcmVjIGdldF9ncm91cCBhdHRyIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICB8IHggOjogbCAtPiAoXG4gICAgICBnZXRfZ3JvdXAgYXR0ciBsID4+PSBmdW4gZ3JvdXAgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGF0dHIgeCB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZSA+PnwgZnVuIGF0dHIyIC0+XG4gICAgICBtYXRjaCAoYXR0cjIsIGdyb3VwKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgfCBOb25lLCBTb21lIHZhbHMgLT4gU29tZSAoTm9uZSA6OiB2YWxzKVxuICAgICAgfCBTb21lIHZhbHVlLCBOb25lIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogTGlzdC5tYXAgbCB+ZjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgdmFscyAtPiBTb21lIChTb21lIHZhbHVlIDo6IHZhbHMpKVxuXG4oKiBTYW1lIGFzIFtMaXN0LnJldl0gdGhlbiBbTGlzdC5jb25jYXRdIGJ1dCBleHBlY3RpbmcgdGhlIGlucHV0IHRvIGJlIG9mIGxlbmd0aCA8PSAyICopXG5sZXQgcmV2X2NvbmNhdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBbIHggXSAtPiB4XG4gIHwgWyB4OyB5IF0gLT4geSBAIHhcbiAgfCBsIC0+IExpc3QuY29uY2F0IChMaXN0LnJldiBsKVxuXG5sZXQgc29ydF9hdHRyX2dyb3VwX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IHNvcnRfYXR0cl9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jID1cbiAgRXJyb3JcbiAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICBcIkEgY29udGV4dC1mcmVlIHJ1bGUgZGVsZXRlZCBvciBhZGRlZCBhdHRyaWJ1ZXMgb2YgYSBzdHIvc2lnIGl0ZW1cIixcbiAgICAgIFtdIClcblxuKCogUmV0dXJucyB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXR0cmlidXRlIGhhbmRsZXJzLiBXZSBkb24ndCByZW1vdmUgdGhlc2UgYXR0cmlidXRlcywgYXNcbiAgIGFub3RoZXIgcGFzcyBtaWdodCBpbnRlcnByZXQgdGhlbSBsYXRlci4gRm9yIGluc3RhbmNlIGJvdGggcHB4X2Rlcml2aW5nIGFuZFxuICAgcHB4bGliX2Rlcml2aW5nIGludGVycHJldHMgW0BAZGVyaXZpbmddIGF0dHJpYnV0ZXMuXG5cbiAgIFRoaXMgY29tcGxleGl0eSBpcyBob3JyaWJsZSwgYnV0IGluIHByYWN0aWNlIHdlIGRvbid0IGNhcmUgYXMgW2F0dHJzXSBpcyBhbHdheXMgYSBsaXN0XG4gICBvZiBvbmUgZWxlbWVudDsgaXQgb25seSBoYXMgW0BAZGVyaXZpbmddLlxuKilcbmxldCBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cnMgcmYgfml0ZW1zIH5leHBhbmRlZF9pdGVtcyB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzIH5jb252ZXJ0X2V4biA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pXG4gICAgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuVCBncm91cCkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBpdGVtcyA+Pj0gZnVuIGcxIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW1zID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlcywgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6Z3JvdXAuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gZ3JvdXAuZXhwYW5kIH5jdHh0IHJmIGV4cGFuZGVkX2l0ZW1zIHZhbHVlcyBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JfaXRlbSA9IFsgY29udmVydF9leG4gZXhuIF0gaW5cbiAgICAgICAgICAgIHJldHVybiAoZXJyb3JfaXRlbSA6OiBhY2MpKSlcblxubGV0IGhhbmRsZV9hdHRyX2lubGluZSBhdHRycyB+Y29udmVydF9leG4gfml0ZW0gfmV4cGFuZGVkX2l0ZW0gfmxvYyB+YmFzZV9jdHh0XG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gYWNjIChSdWxlLkF0dHJfaW5saW5lLlQgYSkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMSAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgXyAtPiAoXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5tYWtlIH5kZXJpdmVkX2l0ZW1fbG9jOmxvY1xuICAgICAgICAgICAgICB+aW5saW5lOmEuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gYS5leHBhbmQgfmN0eHQgZXhwYW5kZWRfaXRlbSB2YWx1ZSBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JfaXRlbSA9IFsgY29udmVydF9leG4gZXhuIF0gaW5cbiAgICAgICAgICAgIHJldHVybiAoZXJyb3JfaXRlbSA6OiBhY2MpKSlcblxubW9kdWxlIEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBsaXN0IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuZW5kXG5cbmNsYXNzIG1hcF90b3BfZG93biA/KGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wKVxuICA/KGdlbmVyYXRlZF9jb2RlX2hvb2sgPSBHZW5lcmF0ZWRfY29kZV9ob29rLm5vcCkgPyhlbWJlZF9lcnJvcnMgPSBmYWxzZSkgcnVsZXNcbiAgPVxuICBsZXQgaG9vayA9IGdlbmVyYXRlZF9jb2RlX2hvb2sgaW5cblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICAgIFJ1bGUuZmlsdGVyIFNwZWNpYWxfZnVuY3Rpb24gcnVsZXMgfD4gdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnNcbiAgaW5cbiAgbGV0IGNvbnN0YW50cyA9XG4gICAgUnVsZS5maWx0ZXIgQ29uc3RhbnQgcnVsZXNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChjIDogUnVsZS5Db25zdGFudC50KSAtPiAoKGMuc3VmZml4LCBjLmtpbmQpLCBjLmV4cGFuZCkpXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdF9leG5cbiAgaW5cbiAgbGV0IGV4dGVuc2lvbnMgPSBSdWxlLmZpbHRlciBFeHRlbnNpb24gcnVsZXMgaW5cbiAgbGV0IGNsYXNzX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZV9maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZV9maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjb3JlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNvcmVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBleHByZXNzaW9uID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5leHByZXNzaW9uIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV9leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfZXhwciBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgcGF0dGVybiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMucGF0dGVybiBleHRlbnNpb25zXG4gIGFuZCBzaWduYXR1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc2lnbmF0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgc3RydWN0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnN0cnVjdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHBweF9pbXBvcnQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLlBweF9pbXBvcnQgZXh0ZW5zaW9ucyBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xzLCBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xzLCBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRzLCBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRzLCBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25zLCBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25zLCBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IG1hcF9ub2RlID0gbWFwX25vZGUgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSA9IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9pbmxpbmUgPSBoYW5kbGVfYXR0cl9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzIGFzIHN1cGVyXG5cbiAgICAoKiBObyBwb2ludCByZWN1cnNpbmcgaW50byBldmVyeSBsb2NhdGlvbiAqKVxuICAgIG1ldGhvZCEgbG9jYXRpb24gXyB4ID0gcmV0dXJuIHhcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNvcmVfdHlwZSBjb3JlX3R5cGUgc3VwZXIjY29yZV90eXBlIHgucHR5cF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgcGF0dGVybiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5wYXR0ZXJuIHBhdHRlcm4gc3VwZXIjcGF0dGVybiB4LnBwYXRfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gYmFzZV9jdHh0IGUgPVxuICAgICAgbGV0IHdpdGhfY29udGV4dCA9XG4gICAgICAgICgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIGUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj49IGZ1biBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCBlKVxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIEV4cHJlc3Npb25cbiAgICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBdXG4gICAgICAgICAgICAgIGVcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDplXG4gICAgICAgICAgICA+PnwgZnVuIGUgLT5cbiAgICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGJhc2VfY3R4dCwgZSlcbiAgICAgIGluXG4gICAgICB3aXRoX2NvbnRleHQgPj49IGZ1biAoYmFzZV9jdHh0LCBlKSAtPlxuICAgICAgbGV0IGV4cGFuZGVkID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICAgIG1hcF9ub2RlIEVDLmV4cHJlc3Npb24gZXhwcmVzc2lvblxuICAgICAgICAgICAgICAoZnVuIF8gZSAtPiByZXR1cm4gZSlcbiAgICAgICAgICAgICAgZS5wZXhwX2xvYyBiYXNlX2N0eHQgZVxuICAgICAgICB8IF8gLT4gcmV0dXJuIGVcbiAgICAgIGluXG4gICAgICBleHBhbmRlZCA+Pj0gZnVuIGUgLT5cbiAgICAgIGxldCBleHBhbmRfY29uc3RhbnQga2luZCBjaGFyIHRleHQgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IGNvbnN0YW50cyAoY2hhciwga2luZCkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICB8IFNvbWUgZXhwYW5kIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgKGV4cGFuZCBlLnBleHBfbG9jIHRleHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2FwcGx5ICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IGlkOyBfIH0gYXMgZnVuYyksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9pZGVudCBpZCAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9pbnRlZ2VyIChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBJbnRlZ2VyIGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICByZXR1cm4gKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9mbG9hdCAocywgU29tZSBjKSkgLT4gKFxuICAgICAgICAgIHRyeSBleHBhbmRfY29uc3RhbnQgRmxvYXQgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG5cbiAgICAoKiBQcmUtY29uZGl0aW9uczpcbiAgICAgICAtIGUucGV4cF9kZXNjID0gUGV4cF9hcHBseShmdW5jLCBhcmdzKVxuICAgICAgIC0gZnVuYy5wZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF9cbiAgICAqKVxuICAgIG1ldGhvZCBwcml2YXRlIHBleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICA9XG4gICAgICBsZXQgeyBwZXhwX2Rlc2MgPSBfOyBwZXhwX2xvYzsgcGV4cF9hdHRyaWJ1dGVzOyBwZXhwX2xvY19zdGFjayB9ID0gZSBpblxuICAgICAgbGV0IGZ1bmMgPVxuICAgICAgICBsZXQgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBmdW5jIGluXG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBiYXNlX2N0eHQgcGV4cF9hdHRyaWJ1dGVzID4+fCBmdW4gcGV4cF9hdHRyaWJ1dGVzIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBwZXhwX2Rlc2M7XG4gICAgICAgICAgcGV4cF9sb2MgKCogbG9jYXRpb24gZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZCAqKTtcbiAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBmdW5jID4+PSBmdW4gZnVuYyAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gKGxhYiwgZXhwKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBleHAgPj58IGZ1biBleHAgLT4gKGxhYiwgZXhwKSlcbiAgICAgICAgfD4gY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBhcmdzID4+PSBmdW4gYXJncyAtPlxuICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZnVuYywgYXJncyk7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrO1xuICAgICAgfVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGUgY2xhc3NfdHlwZSBzdXBlciNjbGFzc190eXBlIHgucGN0eV9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICB4LnBjdGZfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZXhwciBjbGFzc19leHByIHN1cGVyI2NsYXNzX2V4cHIgeC5wY2xfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX2ZpZWxkIGNsYXNzX2ZpZWxkIHN1cGVyI2NsYXNzX2ZpZWxkIHgucGNmX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5tb2R1bGVfdHlwZSBtb2R1bGVfdHlwZSBzdXBlciNtb2R1bGVfdHlwZSB4LnBtdHlfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGJhc2VfY3R4dCB4ID1cbiAgICAgICgoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX21vZHVsZSB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCB4KVxuICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBNb2R1bGVfZXhwclxuICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIF1cbiAgICAgICAgICAgICB4XG4gICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgID4+fCBmdW4geCAtPlxuICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgYmFzZV9jdHh0LCB4KSlcbiAgICAgID4+PSBmdW4gKGJhc2VfY3R4dCwgeCkgLT5cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV9leHByIG1vZHVsZV9leHByIHN1cGVyI21vZHVsZV9leHByIHgucG1vZF9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuc3RydWN0dXJlX2l0ZW0gc3RydWN0dXJlX2l0ZW0gc3VwZXIjc3RydWN0dXJlX2l0ZW0geC5wc3RyX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zaWduYXR1cmVfaXRlbSBzaWduYXR1cmVfaXRlbSBzdXBlciNzaWduYXR1cmVfaXRlbSB4LnBzaWdfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3N0cnVjdHVyZSBiYXNlX2N0eHQgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSA9XG4gICAgICBzZWxmI3BhdHRlcm4gYmFzZV9jdHh0IHBjc3RyX3NlbGYgPj49IGZ1biBwY3N0cl9zZWxmIC0+XG4gICAgICBtYXBfbm9kZXMgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGRcbiAgICAgICAgKGZ1biB4IC0+IHgucGNmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc3RyX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3N0cl9maWVsZHMgLT4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLlBweF9pbXBvcnQgcHB4X2ltcG9ydCBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHgucHR5cGVfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3NpZ25hdHVyZSBiYXNlX2N0eHQgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSA9XG4gICAgICBzZWxmI2NvcmVfdHlwZSBiYXNlX2N0eHQgcGNzaWdfc2VsZiA+Pj0gZnVuIHBjc2lnX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY3RmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc2lnX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3NpZ19maWVsZHMgLT4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgKCogVE9ETzogdHJ5IHRvIGZhY3Rvcml6ZSAjc3RydWN0dXJlIGFuZCAjc2lnbmF0dXJlIHdpdGhvdXQgbWV0YS1wcm9ncmFtbWluZyAqKVxuICAgICgqJCopXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgYmFzZV9jdHh0IHN0ID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU3RydWN0dXJlX2l0ZW0gaXRlbS5wc3RyX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzdHJfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zdHJ1Y3R1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU3RydWN0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc3RydWN0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHN0cl9sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zdHJpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHN0cl9kZXNjLCBleHBhbmRlZF9pdGVtLnBzdHJfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlIChyZiwgdGRzKSwgUHN0cl90eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgbXRkLCBQc3RyX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHRlLCBQc3RyX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGVjLCBQc3RyX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuICAgIG1ldGhvZCEgc2lnbmF0dXJlIGJhc2VfY3R4dCBzZyA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFNpZ25hdHVyZV9pdGVtIGl0ZW0ucHNpZ19sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc2lnX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc2lnbmF0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFNpZ25hdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHNnIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHNpZ25hdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzaWdfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF9leG4gPSBleG5fdG9fc2lnaSBpblxuICAgICAgICAgICAgICAgIG1hdGNoIChpdGVtLnBzaWdfZGVzYywgZXhwYW5kZWRfaXRlbS5wc2lnX2Rlc2MpIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAocmYsIHRkcyksIFBzaWdfdHlwZSAoZXhwX3JmLCBleHBfdGRzKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBObyBjb250ZXh0LWZyZWUgcnVsZSBjYW4gcmV3cml0ZSByZWMgZmxhZ3MgYXRtLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhY3RzIGFzIGEgZmFpbHNhZmUgaW4gY2FzZSBpdCBldmVyIGNoYW5nZXMgKilcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChQb2x5LihyZiA9IGV4cF9yZikpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zaWdfdHlwZV9kZWNscyByZiB+aXRlbXM6dGRzXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIG10ZCwgUHNpZ19tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB0ZSwgUHNpZ190eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBlYywgUHNpZ19leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzaWduYXR1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX2l0ZW0gOjogcmVzdCkpXG4gICAgICBpblxuICAgICAgbG9vcCBzZyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxuICAgICgqJCopXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4dGVuc2lvbiBvZiAnYSBFeHRlbnNpb24uQ29udGV4dC50XG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgb2YgJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudFxuXG4gIGxldCBwYXJlbiBwcCBwcGYgeCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCIoJWEpXCIgcHAgeFxuXG4gIGxldCBwcmludGVyIDogdHlwZSBhLiBhIHQgLT4gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXIgLT4gYSAtPiB1bml0ID1cbiAgICBsZXQgb3BlbiBFeHRlbnNpb24uQ29udGV4dCBpblxuICAgIGxldCBvcGVuIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0IGluXG4gICAgZnVuY3Rpb25cbiAgICB8IEV4dGVuc2lvbiBDbGFzc19leHByIC0+IFBwcmludGFzdC5jbGFzc19leHByXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZSAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDb3JlX3R5cGUgLT4gcGFyZW4gUHByaW50YXN0LmNvcmVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIEV4cHJlc3Npb24gLT4gcGFyZW4gUHByaW50YXN0LmV4cHJlc3Npb25cbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfZXhwciAtPiBQcHJpbnRhc3QubW9kdWxlX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfdHlwZSAtPiBQcHJpbnRhc3QubW9kdWxlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBQYXR0ZXJuIC0+IHBhcmVuIFBwcmludGFzdC5wYXR0ZXJuXG4gICAgfCBFeHRlbnNpb24gU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gUHB4X2ltcG9ydCAtPiBQcHJpbnRhc3QudHlwZV9kZWNsYXJhdGlvblxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBkYXRhID1cbiAgICB8IFZhbHVlcyA6XG4gICAgICAgICdhIENvbnRleHQudCAqICdhIENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnNpbmdsZV9vcl9tYW55XG4gICAgICAgIC0+IGRhdGFcbiAgICB8IFRleHQgb2Ygc3RyaW5nXG5cbiAgdHlwZSB0ID0geyBzdGFydCA6IExleGluZy5wb3NpdGlvbjsgc3RvcCA6IExleGluZy5wb3NpdGlvbjsgZGF0YSA6IGRhdGEgfVxuXG4gIGxldCBtYWtlIH5jb250ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9XG4gICAgeyBzdGFydDsgc3RvcDsgZGF0YSA9IFZhbHVlcyAoY29udGV4dCwgcmVwbCkgfVxuXG4gIGxldCBtYWtlX3RleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID0geyBzdGFydDsgc3RvcDsgZGF0YSA9IFRleHQgcmVwbCB9XG5cbiAgbGV0IHRleHQgYmxvY2sgPVxuICAgIG1hdGNoIGJsb2NrLmRhdGEgd2l0aFxuICAgIHwgVGV4dCBzIC0+IHNcbiAgICB8IFZhbHVlcyAoY29udGV4dCwgZ2VuZXJhdGVkKSAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IHByaW50ZXIgPSBDb250ZXh0LnByaW50ZXIgY29udGV4dCBpblxuICAgICAgICAgIG1hdGNoIGdlbmVyYXRlZCB3aXRoXG4gICAgICAgICAgfCBTaW5nbGUgeCAtPiBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcmludGVyIHhcbiAgICAgICAgICB8IE1hbnkgbCAtPlxuICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gcHBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIgcHBmIHg7XG4gICAgICAgICAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSkpXG4gICAgICAgICAgICAgICAgbFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfd3MgPSBmdW5jdGlvbiAnICcgfCAnXFx0JyB8ICdcXHInIC0+IHRydWUgfCBfIC0+IGZhbHNlIGluXG4gICAgICAgIGxldCBzdHJpcF93cyBzIGkgbGVuID1cbiAgICAgICAgICBsZXQgbGVuID0gcmVmIGxlbiBpblxuICAgICAgICAgIHdoaWxlICFsZW4gPiAwICYmIGlzX3dzIHMuW2kgKyAhbGVuIC0gMV0gZG9cbiAgICAgICAgICAgIGxlbiA6PSAhbGVuIC0gMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgU3RyaW5nLnN1YiBzIH5wb3M6aSB+bGVuOiFsZW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgcG9zID1cbiAgICAgICAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gW11cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgaWR4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICdcXG4nIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc3RyaXBfd3MgcyBwb3MgKGlkeCAtIHBvcykgOjogXCJcXG5cIiA6OiBsb29wIHMgKGlkeCArIDEpXG4gICAgICAgIGluXG4gICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIChsb29wIHMgMClcbmVuZFxuXG5vcGVuIFJlcGxhY2VtZW50XG5cbm1vZHVsZSBSZXBsYWNlbWVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwbGFjZW1lbnQudCBsaXN0XG5cbiAgKCogTWVyZ2UgbG9jYXRpb25zIG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gT3ZlcmxhcHBpbmcgbG9jYXRpb25zIGFyZSBtZXJnZWQgaW50byBvbmUuIFRoZVxuICAgICByZXN1bHQgaXMgc29ydGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSB0byB0aGUgZW5kLiAqKVxuICBsZXQgY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzID1cbiAgICBMaXN0Lml0ZXIgcmVwbHMgfmY6KGZ1biByZXBsIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgU3RyaW5nLiggPD4gKSByZXBsLnN0YXJ0LnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgICAgfHwgU3RyaW5nLiggPD4gKSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlbmFtZSlcbiAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogdGhlIHJld3JpdGluZyBjb250YWlucyBwYXJ0cyBmcm9tIGFub3RoZXIgZmlsZS5cXG5cXFxuICAgICAgICAgICAgIEl0IGlzIHRvbyBjb21wbGljYXRlZCB0byByZWNvbmNpbGUgaXQgd2l0aCB0aGUgc291cmNlOiAlcyBvciAlcyBcXFxuICAgICAgICAgICAgIGFuZCAlc1wiXG4gICAgICAgICAgICByZXBsLnN0YXJ0LnBvc19mbmFtZSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWU7XG4gICAgICAgIGFzc2VydCAocmVwbC5zdGFydC5wb3NfY251bSA8PSByZXBsLnN0b3AucG9zX2NudW0pKTtcbiAgICBsZXQgcmVwbHMgPVxuICAgICAgTGlzdC5zb3J0IHJlcGxzIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgZCA9IGNvbXBhcmUgYS5zdGFydC5wb3NfY251bSBiLnN0b3AucG9zX2NudW0gaW5cbiAgICAgICAgICBpZiBkID0gMCB0aGVuXG4gICAgICAgICAgICAoKiBQdXQgdGhlIGxhcmdlc3QgZmlyc3QsIHNvIHRoYXQgdGhlIGZvbGxvd2luZyBbZmlsdGVyXSBmdW5jdGlvbnMgYWx3YXlzIHBpY2tzIHVwXG4gICAgICAgICAgICAgICB0aGUgbGFydGVzdCBmaXJzdCB3aGVuIHNldmVyYWwgZ2VuZXJhdGVkIHJlcGxzIHN0YXJ0IGF0IHRoZSBzYW1lIHBvc2l0aW9uICopXG4gICAgICAgICAgICBjb21wYXJlIGIuc3RvcC5wb3NfY251bSBhLnN0b3AucG9zX2NudW1cbiAgICAgICAgICBlbHNlIGQpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBwcmV2IHJlcGxzIH5hY2MgPVxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiAocHJldiA6OiBhY2MpXG4gICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPiByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+PSByZXBsLnN0b3AucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICAoKiBbcmVwbF0gaXMgaW5jbHVkZWQgaW4gW3ByZXZdID0+IHNraXAgW3JlcGxdICopXG4gICAgICAgICAgICAgIGZpbHRlciBwcmV2IHJlcGxzIH5hY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiBsb2NhdGlvbnMgb2YgZ2VuZXJhdGVkIGNvZGUgYXJlIG92ZXJsYXBwaW5nLCBcXFxuICAgICAgICAgICAgICAgICBjYW5ub3QgcmVjb25jaWxlXCJcbiAgICAgICAgICAgICAgICB+bG9jOlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPSByZXBsLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsb2NfZW5kID0gcHJldi5zdG9wO1xuICAgICAgICAgICAgICAgICAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGZpbHRlciByZXBsIHJlcGxzIH5hY2M6KHByZXYgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggcmVwbHMgd2l0aCBbXSAtPiBbXSB8IHJlcGwgOjogcmVwbHMgLT4gZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzpbXVxuZW5kXG5cbmxldCBjb3VudF9uZXdsaW5lcyBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBTdHJpbmcuaXRlciBzIH5mOihmdW5jdGlvbiAnXFxuJyAtPiBuIDo9ICFuICsgMSB8IF8gLT4gKCkpO1xuICAhblxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfYmVnaW4gPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBCRUdJTiB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9lbmQgPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBFTkQgICB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbnR5cGUgbW9kZSA9IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2Nrc1xudHlwZSB0YXJnZXQgPSBPdXRwdXQgb2YgbW9kZSB8IENvcnJlY3RlZFxuXG5sZXQgc2tpcF9ibGFua19lb2wgY29udGVudHMgKHBvcyA6IExleGluZy5wb3NpdGlvbikgPVxuICBsZXQgcmVjIGxvb3AgY251bSA9XG4gICAgaWYgY251bSA9IFN0cmluZy5sZW5ndGggY29udGVudHMgdGhlbiB7IHBvcyB3aXRoIHBvc19jbnVtID0gY251bSB9XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggY29udGVudHMuW2NudW1dIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiBsb29wIChjbnVtICsgMSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Mgd2l0aFxuICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBjbnVtICsgMTtcbiAgICAgICAgICB9XG4gICAgICB8IF8gLT4gcG9zXG4gIGluXG4gIGxvb3AgcG9zLnBvc19jbnVtXG5cbmxldCB3aXRoX291dHB1dCB+c3R5bGVyIH4oa2luZCA6IEtpbmQudCkgZm4gfmYgPVxuICBtYXRjaCBzdHlsZXIgd2l0aFxuICB8IE5vbmUgLT4gd2l0aF9vdXRwdXQgZm4gfmJpbmFyeTpmYWxzZSB+ZlxuICB8IFNvbWUgY21kIC0+XG4gICAgICBsZXQgdG1wX2ZuLCBvYyA9XG4gICAgICAgIFN0ZGxpYi5GaWxlbmFtZS5vcGVuX3RlbXBfZmlsZSBcInBweGxpYl9kcml2ZXJcIlxuICAgICAgICAgIChtYXRjaCBraW5kIHdpdGggSW1wbCAtPiBcIi5tbFwiIHwgSW50ZiAtPiBcIi5tbGlcIilcbiAgICAgIGluXG4gICAgICBsZXQgY21kID1cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyVzXCIgY21kXG4gICAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSB0bXBfZm4pXG4gICAgICAgICAgKG1hdGNoIGZuIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBmbiAtPiBcIiA+IFwiIF4gU3RkbGliLkZpbGVuYW1lLnF1b3RlIGZuKVxuICAgICAgaW5cbiAgICAgIGxldCBuID1cbiAgICAgICAgRXhuLnByb3RlY3R4IHRtcF9mbiB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZjooZnVuIF8gLT5cbiAgICAgICAgICAgIEV4bi5wcm90ZWN0eCBvYyB+ZmluYWxseTpjbG9zZV9vdXQgfmY7XG4gICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kKVxuICAgICAgaW5cbiAgICAgIGlmIG4gPD4gMCB0aGVuIChcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJjb21tYW5kIGV4aXRlZCB3aXRoIGNvZGUgJWQ6ICVzXFxuXCIgbiBjbWQ7XG4gICAgICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCByZWNvbmNpbGUgP3N0eWxlciAocmVwbHMgOiBSZXBsYWNlbWVudHMudCkgfmtpbmQgfmNvbnRlbnRzIH5pbnB1dF9maWxlbmFtZVxuICAgIH5vdXRwdXQgfmlucHV0X25hbWUgfnRhcmdldCA9XG4gIGxldCByZXBscyA9IFJlcGxhY2VtZW50cy5jaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgaW5cbiAgbGV0IG91dHB1dF9uYW1lID0gbWF0Y2ggb3V0cHV0IHdpdGggTm9uZSAtPiBcIjxzdGRvdXQ+XCIgfCBTb21lIGZuIC0+IGZuIGluXG4gIHdpdGhfb3V0cHV0IG91dHB1dCB+c3R5bGVyIH5raW5kIH5mOihmdW4gb2MgLT5cbiAgICAgIGxldCBjb3B5X2lucHV0IHBvcyB+dXBfdG8gfmxpbmUgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dCA9XG4gICAgICAgIGxldCBwb3MgPSBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3MgaW5cbiAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgdXBfdG8gdGhlbiAoXG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcbiUqc1wiIHBvcy5wb3NfbG51bSBpbnB1dF9uYW1lXG4gICAgICAgICAgICAgICAgKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgfCBDb3JyZWN0ZWQgLT4gKCkpO1xuICAgICAgICAgIG91dHB1dF9zdWJzdHJpbmcgb2MgY29udGVudHMgfnBvczpwb3MucG9zX2NudW1cbiAgICAgICAgICAgIH5sZW46KHVwX3RvIC0gcG9zLnBvc19jbnVtKTtcbiAgICAgICAgICBsZXQgbGluZSA9IHJlZiAobGluZSArIDEpIGluXG4gICAgICAgICAgZm9yIGkgPSBwb3MucG9zX2NudW0gdG8gdXBfdG8gLSAxIGRvXG4gICAgICAgICAgICBpZiBDaGFyLmVxdWFsIGNvbnRlbnRzLltpXSAnXFxuJyB0aGVuIGxpbmUgOj0gIWxpbmUgKyAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgbGluZSA9ICFsaW5lIGluXG4gICAgICAgICAgaWYgKG5vdCBpc190ZXh0KSAmJiBDaGFyLiggPD4gKSBjb250ZW50cy5bdXBfdG8gLSAxXSAnXFxuJyB0aGVuIChcbiAgICAgICAgICAgIG91dHB1dF9jaGFyIG9jICdcXG4nO1xuICAgICAgICAgICAgbGluZSArIDEpXG4gICAgICAgICAgZWxzZSBsaW5lKVxuICAgICAgICBlbHNlIGxpbmVcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgKGNvcHlfaW5wdXQgcG9zIH51cF90bzooU3RyaW5nLmxlbmd0aCBjb250ZW50cykgfmxpbmVcbiAgICAgICAgICAgICAgICAgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dDpmYWxzZVxuICAgICAgICAgICAgICAgIDogaW50KVxuICAgICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICAgIGxldCBpc190ZXh0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgY29weV9pbnB1dCBwb3MgfnVwX3RvOnJlcGwuc3RhcnQucG9zX2NudW0gfmxpbmUgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgICAgIH5pc190ZXh0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgbWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG5cIiAobGluZSArIDEpIG91dHB1dF9uYW1lO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW47XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IENvcnJlY3RlZCAtPiBsaW5lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscyB+bGFzdF9pc190ZXh0OmlzX3RleHRcbiAgICAgIGFuZCBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHNcbiAgICAgICAgICB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+IGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgIHwgcmVwbCA6OiByZXBscycgLT5cbiAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBwb3MucG9zX2NudW0gPCByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICAgIGxldCBsYXN0X2lzX3RleHQgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscycgfmxhc3RfaXNfdGV4dFxuICAgICAgYW5kIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9lbmQpO1xuICAgICAgICBsb29wIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBpbnB1dF9uYW1lO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IHsgc3RhcnQgPSB7IHBvc19jbnVtID0gMDsgXyB9OyBfIH0gOjogXyAtPlxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW4pO1xuICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZVxuICAgICAgfCBfIC0+IGxvb3AgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZSlcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBuZXh0X2lkIDogaW50O1xuICBtdXRhYmxlIGJpbmRpbmdzIDogUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgbGlzdDtcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbmV4dF9pZCA9IDA7IGJpbmRpbmdzID0gW10gfVxuXG5sZXQgc2FuaXRpemUgdCBlID1cbiAgbWF0Y2ggdC5iaW5kaW5ncyB3aXRoXG4gIHwgW10gLT4gZVxuICB8IGJpbmRpbmdzIC0+XG4gICAgICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBlLnBleHBfbG9jIGluXG4gICAgICBBc3QucGV4cF9sZXQgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGVcblxubGV0IHF1b3RlIHQgKGUgOiBleHByZXNzaW9uKSA9XG4gIGxldCBsb2MgPSBlLnBleHBfbG9jIGluXG4gIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGxvYyBpblxuICBsZXQgbmFtZSA9IFwiX19cIiBeIEludC50b19zdHJpbmcgdC5uZXh0X2lkIGluXG4gIGxldCBiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICAoKiBPcHRpbWl6ZSBpZGVudGlmaWVyIHF1b3RpbmcgYnkgYXZvaWRpbmcgY2xvc3VyZS5cbiAgICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXBweC9wcHhfZGVyaXZpbmcvcHVsbC8yNTIuICopXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IC0+IChlLCBBc3QuZXZhciBuYW1lKVxuICAgIHwgXyAtPlxuICAgICAgICBsZXQgYmluZGluZ19leHByID1cbiAgICAgICAgICBBc3QucGV4cF9mdW4gTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAobGV0IHVuaXQgPSBBc3RfYnVpbGRlci5EZWZhdWx0LkxvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiIGluXG4gICAgICAgICAgICAgQXN0LnBwYXRfY29uc3RydWN0IHVuaXQgTm9uZSlcbiAgICAgICAgICAgIGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHF1b3RlZF9leHByID0gQXN0LmVhcHBseSAoQXN0LmV2YXIgbmFtZSkgWyBBc3QuZXVuaXQgXSBpblxuICAgICAgICAoYmluZGluZ19leHByLCBxdW90ZWRfZXhwcilcbiAgaW5cbiAgbGV0IGJpbmRpbmcgPVxuICAgIGxldCBwYXQgPSBBc3QucHZhciBuYW1lIGluXG4gICAgQXN0LnZhbHVlX2JpbmRpbmcgfnBhdCB+ZXhwcjpiaW5kaW5nX2V4cHJcbiAgaW5cbiAgdC5iaW5kaW5ncyA8LSBiaW5kaW5nIDo6IHQuYmluZGluZ3M7XG4gIHQubmV4dF9pZCA8LSB0Lm5leHRfaWQgKyAxO1xuICBxdW90ZWRfZXhwclxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBta19hdHRyX25vbG9jIHR4dCA9IEFzdF9oZWxwZXIuQXR0ci5tayBMb2NhdGlvbi57IHR4dDsgbG9jID0gbm9uZSB9XG5sZXQgaGlkZV9hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmhpZGVcIiAoUFN0ciBbXSlcbmxldCBmb2N1c19hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmZvY3VzXCIgKFBTdHIgW10pXG5cbmxldCBoaWRlX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgaGlkZV9leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cbiIsIm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOb25faW50ZXJzZWN0aW5nX3JhbmdlcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpbnNlcnQgOiBub2RlX25hbWU6c3RyaW5nIC0+IExvY2F0aW9uLnQgLT4gdCAtPiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG5cbiAgdmFsIGNvdmVyZWRfYnkgOiB0IC0+IGxvYzpMb2NhdGlvbi50IC0+IGJvb2xcbiAgKCoqIFtjb3ZlcmVkX2J5IHQgfmxvYyA9IHRydWVdIGlmZiBbdF0gaXMgY292ZXJlZCBieSBbbG9jXSAqKVxuXG4gIHZhbCBmaW5kX291dHNpZGUgOiBMb2NhdGlvbi50IC0+IHQgLT4gc3RyaW5nICogTG9jYXRpb24udFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtaW5fcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICBtYXhfcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICByYW5nZXMgOiAoc3RyaW5nICogTG9jYXRpb24udCkgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWluX3BvcyA9IE5vbmU7IG1heF9wb3MgPSBOb25lOyByYW5nZXMgPSBbXSB9XG5cbiAgbGV0IHJlYyBpbnNlcnQgcmFuZ2VzICgobm9kZV9uYW1lLCBub2RlX2xvYykgYXMgbm9kZSkgPVxuICAgIG1hdGNoIHJhbmdlcyB3aXRoXG4gICAgfCBbXSAtPiBbIG5vZGUgXVxuICAgIHwgKCh4X25hbWUsIHhfbG9jKSBhcyB4KSA6OiB4cyAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbiBpblxuICAgICAgICBpZiBjb21wYXJlX3BvcyBub2RlX2xvYy5sb2Nfc3RhcnQgeF9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICBub2RlIDo6IHggOjogeHNcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlX3BvcyB4X2xvYy5sb2Nfc3RhcnQgbm9kZV9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICB4IDo6IGluc2VydCB4cyBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweCwgJXMgb3ZlcmxhcHMgd2l0aCAlcyBhdCBsb2NhdGlvbjpALiVhXCJcbiAgICAgICAgICAgIG5vZGVfbmFtZSB4X25hbWUgTG9jYXRpb24ucHJpbnQgeF9sb2NcblxuICBsZXQgbWluX3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1pbl9wb3MgcDEgcDIpXG5cbiAgbGV0IG1heF9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5tYXhfcG9zIHAxIHAyKVxuXG4gIGxldCBsb25nZXN0X2ZpcnN0IGwxIGwyIH5zdG9wX2FmdGVyID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgeXMgbiA9XG4gICAgICBtYXRjaCAoeHMsIHlzLCBuKSB3aXRoXG4gICAgICB8IFtdLCBfLCBfIHwgXywgXywgMCAtPiAobDIsIGwxKVxuICAgICAgfCBfLCBbXSwgXyAtPiAobDEsIGwyKVxuICAgICAgfCBfIDo6IHhzLCBfIDo6IHlzLCBuIC0+IGxvb3AgeHMgeXMgKG4gLSAxKVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBzdG9wX2FmdGVyXG5cbiAgbGV0IHVuaW9uIHQxIHQyID1cbiAgICBsZXQgaW5pdCwgbCA9IGxvbmdlc3RfZmlyc3QgdDEucmFuZ2VzIHQyLnJhbmdlcyB+c3RvcF9hZnRlcjo0MiBpblxuICAgIGxldCByYW5nZXMgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOmluc2VydCBpblxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIHQxLm1pbl9wb3MgdDIubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIHQxLm1heF9wb3MgdDIubWF4X3BvcztcbiAgICAgIHJhbmdlcztcbiAgICB9XG5cbiAgbGV0IGluc2VydCB+bm9kZV9uYW1lIGxvYyB0ID1cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyAoU29tZSBsb2MubG9jX3N0YXJ0KSB0Lm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyAoU29tZSBsb2MubG9jX2VuZCkgdC5tYXhfcG9zO1xuICAgICAgcmFuZ2VzID0gaW5zZXJ0IHQucmFuZ2VzIChub2RlX25hbWUsIGxvYyk7XG4gICAgfVxuXG4gIGxldCBjb3ZlcmVkX2J5IHQgfmxvYyA9XG4gICAgbWF0Y2ggKHQubWluX3BvcywgdC5tYXhfcG9zKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgbWluX3BvcywgU29tZSBtYXhfcG9zIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1pbl9wb3MgbG9jLmxvY19zdGFydCA+PSAwXG4gICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1heF9wb3MgbG9jLmxvY19lbmQgPD0gMFxuICAgIHwgXywgXyAtPlxuICAgICAgICAoKiB0aGVyZSBhcmUgbm8gb3BlbiByYW5nZXMgKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGZpbmRfb3V0c2lkZSBsb2MgdCA9XG4gICAgTGlzdC5maW5kIHQucmFuZ2VzIH5mOihmdW4gKF8sIGwpIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2Nfc3RhcnQgbC5sb2Nfc3RhcnQgPiAwXG4gICAgICAgIHx8IExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGwubG9jX2VuZCA8IDApXG5lbmRcblxubGV0IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG10eV9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbXR5X2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtdHlfbG9jID0geyByZXMucG10eV9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG1vZF9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbW9kX2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtb2RfbG9jID0geyByZXMucG1vZF9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2MgPVxuICBMaXN0LmZvcl9hbGwgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBhdHRyLmF0dHJfbG9jLmxvY19lbmQgPj0gMClcblxubGV0IGZpbGUgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5sZXQgc2FtZV9maWxlX3NvX2ZhciA9IHJlZiB0cnVlXG5cbmxldCBzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBmbmFtZSA9XG4gICgqIFRPRE86IHJlbW92ZSB1c2VzIG9mIExvY2F0aW9uLm5vbmUgZnJvbSB0aGUgcHB4ZXMuICopXG4gIGlmIFN0cmluZy5lcXVhbCBmbmFtZSBcIl9ub25lX1wiIHRoZW4gdHJ1ZSAoKiBkbyBub3RoaW5nIGZvciBub3cuICopXG4gIGVsc2VcbiAgICBtYXRjaCAhZmlsZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGZpbGUgOj0gU29tZSBmbmFtZTtcbiAgICAgICAgdHJ1ZVxuICAgIHwgU29tZSBvcmlnX2ZuYW1lIC0+XG4gICAgICAgIFN0cmluZy5lcXVhbCBvcmlnX2ZuYW1lIGZuYW1lXG4gICAgICAgIHx8XG4gICAgICAgIChzYW1lX2ZpbGVfc29fZmFyIDo9IGZhbHNlO1xuICAgICAgICAgZmFsc2UpXG5cbmxldCBzaG91bGRfaWdub3JlIGxvYyBhdHRycyA9XG4gICgqIElmIHRoZSBmaWxlbmFtZSBjaGFuZ2VkLCB0aGVuIHRoZXJlIHdlcmUgbGluZSBkaXJlY3RpdmVzLCBhbmQgdGhlIGxvY2F0aW9uc1xuICAgICBhcmUgYWxsIG1lc3NlZCB1cC4gKilcbiAgKG5vdCAoc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgbG9jLmxvY19zdGFydC5wb3NfZm5hbWUpKVxuICB8fCAoKiBJZ25vcmUgdGhpbmdzIGV4cGxpY2l0bHkgbWFya2VkLiAqKVxuICBMaXN0LmV4aXN0c1xuICAgIH5mOihmdW4gYXR0ciAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGF0dHIuYXR0cl9uYW1lLnR4dFxuICAgICAgICBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZS5hdHRyX25hbWUudHh0KVxuICAgIGF0dHJzXG5cbmxldCByZWMgZXh0cmFjdF9jb25zdHJhaW50IGUgPVxuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgfCBQZXhwX2NvZXJjZSAoZSwgXywgY3QpIC0+IFNvbWUgKGUsIGN0KVxuICB8IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKSAtPlxuICAgICAgT3B0aW9uLm1hcCAoZXh0cmFjdF9jb25zdHJhaW50IGV4cCkgfmY6KGZ1biAoZXhwLCBjdCkgLT5cbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3QgKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGRvX2NoZWNrIH5ub2RlX25hbWUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jcyA9XG4gIGlmIG5vdCAhc2FtZV9maWxlX3NvX2ZhciB0aGVuIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gIGVsc2UgaWYgbm9kZV9sb2MubG9jX2dob3N0IHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy51bmlvbiBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG4gIGVsc2UgaWYgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuY292ZXJlZF9ieSBjaGlsZHJlbnNfbG9jcyB+bG9jOm5vZGVfbG9jIHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZSBub2RlX2xvYyBzaWJsaW5nc19sb2NzXG4gIGVsc2VcbiAgICBsZXQgY2hpbGRfbmFtZSwgY2hpbGRfbG9jID1cbiAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmZpbmRfb3V0c2lkZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgIGluXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHg6QCB0aGlzICVzIGlzIGJ1aWx0IGZyb20gYSVzIHdob3NlIGxvY2F0aW9uIGlzIFxcXG4gICAgICAgb3V0c2lkZSBvZiB0aGlzIG5vZGUncy5ALkNoaWxkICVzIGZvdW5kIGF0OkAgJWFcIlxuICAgICAgbm9kZV9uYW1lXG4gICAgICAoKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IGNoaWxkX25hbWUgMCB3aXRoXG4gICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgLT4gXCJuIFwiXG4gICAgICAgfCBfIC0+IFwiIFwiKVxuICAgICAgXiBjaGlsZF9uYW1lKVxuICAgICAgY2hpbGRfbmFtZSBMb2NhdGlvbi5wcmludCBjaGlsZF9sb2NcblxubGV0IGVuZm9yY2VfaW52YXJpYW50cyBmbmFtZSA9XG4gIGxldCAoKSA9IGZpbGUgOj0gZm5hbWUgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW05vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAoKiBUT0RPOiB3ZSBzaG91bGQgZ2VuZXJhdGUgYSBjbGFzcyB3aGljaCBlbmZvcmNlcyB0aGUgbG9jYXRpb24gaW52YXJpYW50LlxuICAgICAgIEFuZCB0aGVuIHdlIHNob3VsZCBvbmx5IG92ZXJyaWRlIHRoZSBtZXRob2RzIHdoZXJlIHdlIG5lZWQgYW4gZXNjYXBlXG4gICAgICAgaGF0Y2ggYmVjYXVzZSB0aGUgcGFyc2VyIGlzbid0IGRvaW5nIHRoZSByaWdodCB0aGluZy5cblxuICAgICAgIFRoYXQgd291bGQgZW5zdXJlIHRoYXQgd2Ugc3RheSB1cCB0byBkYXRlIGFzIHRoZSBBU1QgY2hhbmdlcy4gKilcblxuICAgIG1ldGhvZCEgbG9uZ2lkZW50X2xvYyB4IHNpYmxpbmdzID1cbiAgICAgIGlmIHgubG9jLmxvY19naG9zdCB0aGVuIHNpYmxpbmdzXG4gICAgICBlbHNlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lOlwiaWRlbnRcIiB4LmxvYyBzaWJsaW5nc1xuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcmZfbG9jIHgucHJmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI3Jvd19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJyb3cgZmllbGRcIiB4LnByZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvYmplY3RfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb2ZfbG9jIHgucG9mX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb2JqZWN0X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9iamVjdCBmaWVsZFwiIHgucG9mX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgYmluZGluZ19vcCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjYmluZGluZ19vcCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiYmluZGluZyBvcGVyYXRvclwiIHgucGJvcF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2YWxfbG9jIHgucHZhbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGRlc2NyaXB0aW9uXCIgeC5wdmFsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBlX2xvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGRlY2xhcmF0aW9uXCIgeC5wdHlwZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGxkX2xvYyB4LnBsZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImxhYmVsIGRlY2xhcmF0aW9uXCIgeC5wbGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZF9sb2MgeC5wY2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiIHgucGNkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleHRfbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBleHRlbnNpb25cIiB4LnB0eWV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHRfbG9jIHgucGV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHRlbnNpb24gY29uc3RydWN0b3JcIiB4LnBleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0eV9sb2MgeC5wY3R5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZVwiIHgucGN0eV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0Zl9sb2MgeC5wY3RmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlIGZpZWxkXCIgeC5wY3RmX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjaV9sb2MgeC5wY2lfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzXCIgeC5wY2lfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjbF9sb2MgeC5wY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBleHByZXNzaW9uXCIgeC5wY2xfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZl9sb2MgeC5wY2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBmaWVsZFwiIHgucGNmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHNpZ19sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic2lnbmF0dXJlIGl0ZW1cIiB4LnBzaWdfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWRfbG9jIHgucG1kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBkZWNsYXJhdGlvblwiIHgucG1kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtc19sb2MgeC5wbXNfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfc3Vic3RpdHV0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBzdWJzdGl0dXRpb25cIiB4LnBtc19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10ZF9sb2MgeC5wbXRkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIiB4LnBtdGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvcGVuX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb3Blbl9sb2MgeC5wb3Blbl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29wZW5faW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvcGVuXCIgeC5wb3Blbl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5waW5jbF9sb2MgeC5waW5jbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJpbmNsdWRlXCIgeC5waW5jbF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzdHJfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInN0cnVjdHVyZSBpdGVtXCIgeC5wc3RyX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWJfbG9jIHgucG1iX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGJpbmRpbmdcIiB4LnBtYl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlICopXG4gICAgKCogdGhlIHR5cGUgY29uc3RyYWludCBpcyBkdXBsaWNhdGVkLiAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZiX2xvYyB4LnB2Yl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIG1hdGNoICh4LnB2Yl9wYXQucHBhdF9kZXNjLCBleHRyYWN0X2NvbnN0cmFpbnQgeC5wdmJfZXhwcikgd2l0aFxuICAgICAgICAgICgqIGxldCB4IDogdHlwZSBhIGIgYy4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgIChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXyA6OiBfLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgKCogbGV0IHggOiAgY3QgPSBlXG4gICAgICAgICAgICAgbGV0IHggOj4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludCAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKFtdLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RwLnB0eXBfbG9jIGN0ZS5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IF9hY2MgPSBzZWxmI2NvcmVfdHlwZSBjdHAgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgYmluZGluZ1wiIHgucHZiX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNVCBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIHR5cGUuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgdHlwZS4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyB4LnBtdHlfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZVwiIHgucG10eV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTUUgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSBleHByLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIGV4cHIuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbW9kX2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgeC5wbW9kX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGV4cHJlc3Npb25cIiB4LnBtb2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNjb3JlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZV9kZXNjIHgucHR5cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvcmUgdHlwZVwiIHgucHR5cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIEFuZCBhZ2FpbiAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHgucGV4cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4cHJlc3Npb25cIiB4LnBleHBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiAuLi4gYW5kIGFnYWluICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI3BhdHRlcm4geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI3BhdHRlcm5fZGVzYyB4LnBwYXRfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJwYXR0ZXJuXCIgeC5wcGF0X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mICAqKVxuICAgICgqIHRoZSBjb25zdHJ1Y3QgZXF1YWxzIHRoZSBsb2NhdGlvbiBvZiB0aGUgdHlwZV9leGNlcHRpb24gKilcbiAgICAoKiAoYW5kIHNvIGNvdmVycyB0aGUgbG9jYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMpLiAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4bl9sb2MgeC5wdHlleG5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGluaXQgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBsZXQgY2hpbGRzX2xvY3MgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGluaXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHJzX2xvY3MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcyBpbml0IGluXG4gICAgICAgIGlnbm9yZVxuICAgICAgICAgIChkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGF0dHJzX2xvY3Mgc2libGluZ3NfbG9jcyk7XG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgY2hpbGRzX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlICopXG4gICAgKCogbGhzIGlzIHNvbWV0aW1lcyBpbmNsdWRlZCBpbiB0aGUgcmhzLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHdpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHdpdGhfdHlwZSAoXywgdGRlY2wpIHwgUHdpdGhfdHlwZXN1YnN0IChfLCB0ZGVjbCkgLT5cbiAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gdGRlY2wgc2libGluZ3NfbG9jXG4gICAgICB8IF8gLT4gc3VwZXIjd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiopXG4gICAgKCogLSBGb28ueyBiYXI7IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby5bIGJhcjsgLi4uIF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLiggYmFyOyAuLi4gKSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBtZXRob2QgeCA6IHR5cGUgYS4gLi4uID0gLi4uICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSA8LSBiYXogICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9IDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfcmVjb3JkIChsYWJlbHMsIGV4cHJfbykgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChsaWQsIGUpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIGUucGV4cF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKCogcHVubmluZy4gKilcbiAgICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoZSwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGV4cHJfbyBhY2NcbiAgICAgIHwgUGV4cF9vcGVuXG4gICAgICAgICAgKCh7IHBvcGVuX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfaWRlbnQgbGlkOyBfIH07IF8gfSBhcyBvcG4pLCBlKVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0ID0gMFxuICAgICAgICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX2VuZCBlLnBleHBfbG9jLmxvY19lbmQgPD4gMCAtPlxuICAgICAgICAgICgqIGxldCdzIHJlbG9jYXRlIC4uLiAqKVxuICAgICAgICAgIGxldCBlX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19zdGFydCA9IGxpZC5sb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbl9kZXNjXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChvcG4sIHsgZSB3aXRoIHBleHBfbG9jID0gZV9sb2MgfSkpXG4gICAgICAgICAgICBhY2NcbiAgICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfLCBjdCk7IF8gfSkgLT4gKFxuICAgICAgICAgIG1hdGNoIGV4dHJhY3RfY29uc3RyYWludCBlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKGUsIGN0ZSkgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0ZS5wdHlwX2xvYyBjdC5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IFBleHBfYXBwbHkgKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGxpZDsgXyB9OyBfIH0sIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBMb25naWRlbnQubGFzdF9leG4gbGlkIHdpdGhcbiAgICAgICAgICB8IGlkXG4gICAgICAgICAgICB3aGVuIFN0cmluZy5pc19wcmVmaXggaWQgfnByZWZpeDpcIi5cIlxuICAgICAgICAgICAgICAgICAmJiAoU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKClcIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW11cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie31cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fTwtXCIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbGlzdCAoZnVuIChfLCBlKSAtPiBzZWxmI2V4cHJlc3Npb24gZSkgYXJncyBhY2NcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjogICAgICAgICAgICAgKilcbiAgICAoKiAtIHB1bm5pbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHJlY29yZCBmaWVsZCB3aXRoIHR5cGUgY29uc3RyYWludC4gICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHVucGFjayBsb2NhdGlvbnMgYmVpbmcgaW5jb3JyZWN0IHdoZW4gY29uc3RyYWluZWQgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X3JlY29yZCAobGFiZWxzLCBfKSAtPlxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAobGlkLCBwYXQpIGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IHBhdC5wcGF0X2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBwYXQucHBhdF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICgqIHNpbXBsZSBwdW5uaW5nISAqKVxuICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcCBhY2NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwYXQgYWNjXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBhdCBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICB8IFBwYXRfY29uc3RyYWludCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3VucGFjayBhOyBfIH0sIGIpIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBmYWtlIHN0cnVjdHVyZSBmb3IgYSBnZW5lcmF0aXZlIGFyZ3VtZW50IGNvdmVycyB0aGUgICAgICopXG4gICAgKCogbG9jYXRpb24gb2YgdGhlIGZ1bmN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9hcHBseSAobSwgeyBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTsgcG1vZF9sb2M7IF8gfSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtLnBtb2RfbG9jLmxvY19zdGFydCBwbW9kX2xvYy5sb2Nfc3RhcnQgPSAwIC0+XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgbSBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIG9wZW5faW5mb3MgZm9yIFBjbF9vcGVuIG9ubHkgY292ZXJzIHRoZSBcIm9wZW5cIiBrZXl3b3JkICAqKVxuICAgICgqIGFuZCBub3QgdGhlIG1vZHVsZSBvcGVuZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX29wZW4gKG9kLCBjZSkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGNlIGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9vcGVuIChvZCwgY3QpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIGRvY3N0cmluZ3MgaGF2ZSAgICAqKVxuICAgICgqIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoZSBpdGVtIHRoZXkgZ2V0IGF0dGFjaGVkIHRvLiAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeCBhY2MgPVxuICAgICAgbWF0Y2ggeC5hdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5kb2NcIiB8IFwib2NhbWwudGV4dFwiIC0+IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2F0dHJpYnV0ZSB4IGFjY1xuICBlbmRcbiIsIm1vZHVsZSBGb3JjYWJsZV9ib29sID0gc3RydWN0XG4gIHR5cGUgdCA9IFRydWUgfCBGYWxzZSB8IEZvcmNlXG5cbiAgbGV0IGFyZyB2YWx1ZSA9XG4gICAgQXJnLlN5bWJvbFxuICAgICAgKCBbIFwidHJ1ZVwiOyBcImZhbHNlXCI7IFwiZm9yY2VcIiBdLFxuICAgICAgICBmdW4gZmxhZyAtPlxuICAgICAgICAgIHZhbHVlIDo9XG4gICAgICAgICAgICBtYXRjaCBmbGFnIHdpdGhcbiAgICAgICAgICAgIHwgXCJ0cnVlXCIgLT4gVHJ1ZVxuICAgICAgICAgICAgfCBcImZhbHNlXCIgLT4gRmFsc2VcbiAgICAgICAgICAgIHwgXCJmb3JjZVwiIC0+IEZvcmNlXG4gICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbmVuZFxuXG5sZXQgZGVmYXVsdF9hbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyA6IEZvcmNhYmxlX2Jvb2wudCA9IEZhbHNlXG5sZXQgZGVmYXVsdF9hbGxvd191bnVzZWRfdHlwZV93YXJuaW5ncyA6IEZvcmNhYmxlX2Jvb2wudCA9IEZhbHNlXG5sZXQgcGVyZm9ybV9jaGVja3MgPSBmYWxzZVxuXG4oKiBUaGUgY2hlY2tzIG9uIGV4dGVuc2lvbnMgYXJlIG9ubHkgdG8gZ2V0IGJldHRlciBlcnJvciBtZXNzYWdlc1xuICAgc2luY2UgdGhlIGNvbXBpbGVyIHdpbGwgY2hva2Ugb24gdW5rbm93biBleHRlbnNpb25zLiBXZSBkaXNhYmxlXG4gICB0aGVtIGV4dGVybmFsbHkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdXNlIG5vbiBwcHhsaWIgYmFzZWRcbiAgIHJld3JpdGVycyB3aXRoIHBweGxpYiAqKVxubGV0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgPSBmYWxzZVxubGV0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrID0gZmFsc2VcbmxldCBmYWlsX29uX2R1cGxpY2F0ZV9kZXJpdmVycyA9IGZhbHNlXG5sZXQgZGlmZl9jb21tYW5kID0gTm9uZVxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgQXJnID0gU3RkbGliLkFyZ1xuXG5sZXQgZXhlX25hbWUgPSBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgU3RkbGliLlN5cy5leGVjdXRhYmxlX25hbWVcbmxldCBhcmdzID0gcmVmIFtdXG5sZXQgYWRkX2FyZyBrZXkgc3BlYyB+ZG9jID0gYXJncyA6PSAoa2V5LCBzcGVjLCBkb2MpIDo6ICFhcmdzXG5sZXQgbG9jX2ZuYW1lID0gcmVmIE5vbmVcbmxldCBwZXJmb3JtX2NoZWNrcyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzXG5sZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnNcbmxldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA9IHJlZiBPcHRpb25zLnBlcmZvcm1fbG9jYXRpb25zX2NoZWNrXG5sZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AgPSByZWYgZmFsc2VcbmxldCBhcHBseV9saXN0ID0gcmVmIE5vbmVcbmxldCBwcmVwcm9jZXNzb3IgPSByZWYgTm9uZVxubGV0IG5vX21lcmdlID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF9wYXNzZXMgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyA9IHJlZiBmYWxzZVxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE9wdGlvbnMuZGlmZl9jb21tYW5kXG5sZXQgcHJldHR5ID0gcmVmIGZhbHNlXG5sZXQgc3R5bGVyID0gcmVmIE5vbmVcbmxldCBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgPSByZWYgTm9uZVxubGV0IGNvcnJlY3RlZF9zdWZmaXggPSByZWYgXCIucHB4LWNvcnJlY3RlZFwiXG5cbmxldCBnaG9zdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgIG1ldGhvZCEgbG9jYXRpb24gbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgZW5kXG5cbmxldCBjaG9wX3ByZWZpeCB+cHJlZml4IHggPVxuICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXggeCB0aGVuXG4gICAgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHggKFN0cmluZy5sZW5ndGggcHJlZml4KSlcbiAgZWxzZSBOb25lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoIChsb2MgOiBMb2NhdGlvbi50KSA9XG4gIGxldCBmbmFtZSA9IGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lIGluXG4gIG1hdGNoIGNob3BfcHJlZml4IH5wcmVmaXg6XCIuL1wiIGZuYW1lIHdpdGhcbiAgfCBTb21lIGZuYW1lIC0+IGZuYW1lXG4gIHwgTm9uZSAtPiBmbmFtZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zdHIgOiBzdHJ1Y3R1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc3RyX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc2lnIDogc2lnbmF0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHNpZ19sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbm1vZHVsZSBMaW50X2Vycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9IExvY2F0aW9uLnQgKiBzdHJpbmdcblxuICBsZXQgb2Zfc3RyaW5nIGxvYyBzID0gKGxvYywgcylcbmVuZFxuXG5tb2R1bGUgQ29va2llcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUXG5cbiAgbGV0IGdpdmVuX3Rocm91Z2hfY2xpID0gcmVmIFtdXG5cbiAgbGV0IGdldCBUIG5hbWUgcGF0dGVybiA9XG4gICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2UgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG5cbiAgbGV0IGdldF9yZXMgVCBuYW1lIHBhdHRlcm4gPVxuICAgIG1hdGNoXG4gICAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoT2sgZSkgLT4gT2sgKFNvbWUgZSlcbiAgICB8IFNvbWUgKEVycm9yIGUpIC0+IEVycm9yIGVcblxuICBsZXQgc2V0IFQgbmFtZSBleHByID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLnNldF9jb29raWUgbmFtZSAoU2VsZWN0ZWRfYXN0LnRvX29jYW1sIEV4cHJlc3Npb24gZXhwcilcblxuICBsZXQgaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9oYW5kbGVyIGYgPSBoYW5kbGVycyA6PSAhaGFuZGxlcnMgQCBbIGYgXVxuXG4gIGxldCBhZGRfc2ltcGxlX2hhbmRsZXIgbmFtZSBwYXR0ZXJuIH5mID1cbiAgICBhZGRfaGFuZGxlciAoZnVuIFQgLT4gZiAoZ2V0IFQgbmFtZSBwYXR0ZXJuKSlcblxuICBsZXQgYWNrbm93bGVkZ2VfY29va2llcyBUID0gTGlzdC5pdGVyICFoYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuICBsZXQgcG9zdF9oYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX3Bvc3RfaGFuZGxlciBmID0gcG9zdF9oYW5kbGVycyA6PSAhcG9zdF9oYW5kbGVycyBAIFsgZiBdXG4gIGxldCBjYWxsX3Bvc3RfaGFuZGxlcnMgVCA9IExpc3QuaXRlciAhcG9zdF9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuZW5kXG5cbm1vZHVsZSBJbnN0cnVtZW50ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gQmVmb3JlIHwgQWZ0ZXJcblxuICB0eXBlIHQgPSB7XG4gICAgdHJhbnNmb3JtYXRpb24gOlxuICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQ7XG4gICAgcG9zaXRpb24gOiBwb3M7XG4gIH1cblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgICAgbGV0IHRyYW5zZm9ybWF0aW9uIGN0eCBzdCA9IHJldHVybiAodHJhbnNmb3JtYXRpb24gY3R4IHN0KSBpblxuICAgICAgeyB0cmFuc2Zvcm1hdGlvbjsgcG9zaXRpb24gfVxuICBlbmRcblxuICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBfIHN0ID0gdHJhbnNmb3JtYXRpb24gc3QgaW5cbiAgICBWMi5tYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvblxuZW5kXG5cbm1vZHVsZSBUcmFuc2Zvcm0gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgYWxpYXNlcyA6IHN0cmluZyBsaXN0O1xuICAgIGltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlICogUGFyc2V0cmVlLnN0cnVjdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgKiBQYXJzZXRyZWUuc2lnbmF0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGluc3RydW1lbnQgOiBJbnN0cnVtZW50LnQgb3B0aW9uO1xuICAgIHJ1bGVzIDogQ29udGV4dF9mcmVlLlJ1bGUudCBsaXN0O1xuICAgIHJlZ2lzdGVyZWRfYXQgOiBDYWxsZXJfaWQudDtcbiAgfVxuXG4gIGxldCBoYXNfbmFtZSB0IG5hbWUgPVxuICAgIFN0cmluZy5lcXVhbCBuYW1lIHQubmFtZSB8fCBMaXN0LmV4aXN0cyB+ZjooU3RyaW5nLmVxdWFsIG5hbWUpIHQuYWxpYXNlc1xuXG4gIGxldCBhbGwgOiB0IGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHByaW50X2NhbGxlcl9pZCBvYyAoY2FsbGVyX2lkIDogQ2FsbGVyX2lkLnQpID1cbiAgICBtYXRjaCBjYWxsZXJfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRfc3RyaW5nIG9jIFwiPHVua25vd24gbG9jYXRpb24+XCJcbiAgICB8IFNvbWUgbG9jIC0+IFByaW50Zi5mcHJpbnRmIG9jIFwiJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG5cbiAgbGV0IHJlZ2lzdGVyID8oZXh0ZW5zaW9ucyA9IFtdKSA/KHJ1bGVzID0gW10pID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuICAgICAgP2luc3RydW1lbnQgPyhhbGlhc2VzID0gW10pIG5hbWUgPVxuICAgIGxldCBydWxlcyA9IExpc3QubWFwIGV4dGVuc2lvbnMgfmY6Q29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIEAgcnVsZXMgaW5cbiAgICBsZXQgY2FsbGVyX2lkID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbIFN0ZGxpYi5fX0ZJTEVfXyBdIGluXG4gICAgKG1hdGNoIExpc3QuZmlsdGVyICFhbGwgfmY6KGZ1biBjdCAtPiBoYXNfbmFtZSBjdCBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgY3QgOjogXyAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIldhcm5pbmc6IGNvZGUgdHJhbnNmb3JtYXRpb24gJXMgcmVnaXN0ZXJlZCB0d2ljZS5cXG5cIlxuICAgICAgICAgIG5hbWU7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIGZpcnN0IHRpbWUgd2FzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkXG4gICAgICAgICAgY3QucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gc2Vjb25kIHRpbWUgaXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWQgY2FsbGVyX2lkKTtcbiAgICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgY3QgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBhbGlhc2VzO1xuICAgICAgICBydWxlcztcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGltcGw7XG4gICAgICAgIGludGY7XG4gICAgICAgIGxpbnRfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGY7XG4gICAgICAgIGxpbnRfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudDtcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IGNhbGxlcl9pZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGFsbCA6PSBjdCA6OiAhYWxsXG5cbiAgbGV0IHJlYyBsYXN0IHByZXYgbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGxvY19vZl9saXN0IH5nZXRfbG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBmaXJzdCA6IExvY2F0aW9uLnQgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgbGV0IGxhc3QgPSBnZXRfbG9jIChsYXN0IHggbCkgaW5cbiAgICAgICAgU29tZSB7IGZpcnN0IHdpdGggbG9jX2VuZCA9IGxhc3QubG9jX2VuZCB9XG5cbiAgbGV0IG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIHQgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWUgPVxuICAgIGxldCB7IHJ1bGVzOyBlbmNsb3NlX2ltcGw7IGVuY2xvc2VfaW50ZjsgaW1wbDsgaW50ZjsgXyB9ID0gdCBpblxuICAgIGxldCBtYXAgPVxuICAgICAgbmV3IENvbnRleHRfZnJlZS5tYXBfdG9wX2Rvd25cbiAgICAgICAgcnVsZXMgfmVtYmVkX2Vycm9ycyB+Z2VuZXJhdGVkX2NvZGVfaG9vazpob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgIGluXG4gICAgbGV0IGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBjb250ZXh0IHdob2xlX2xvYyBmID1cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9IGYgd2hvbGVfbG9jIGluXG4gICAgICAobWF0Y2ggd2hvbGVfbG9jIHdpdGhcbiAgICAgIHwgU29tZSAobG9jIDogTG9jYXRpb24udCkgLT4gKFxuICAgICAgICAgIGxldCBsb2NfaGVhZGVyID0geyBsb2Mgd2l0aCBsb2NfZW5kID0gbG9jLmxvY19zdGFydCB9IGluXG4gICAgICAgICAgbGV0IGxvY19mb290ZXIgPSB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICAobWF0Y2ggaGVhZGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19oZWFkZXIgKE1hbnkgaGVhZGVyKSk7XG4gICAgICAgICAgbWF0Y2ggZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19mb290ZXIgKE1hbnkgZm9vdGVyKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggaGVhZGVyIEAgZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBob29rLmYgY29udGV4dCBsb2MgKE1hbnkgbCkpKTtcbiAgICAgIChoZWFkZXIsIGZvb3RlcilcbiAgICBpblxuICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZSB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgIGluXG4gICAgbGV0IG1hcF9pbXBsIGN0eHQgc3Rfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHN0ID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzdF93aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ltcGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzdCB+Z2V0X2xvYzooZnVuIHN0IC0+IHN0LlBhcnNldHJlZS5wc3RyX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU3RydWN0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc3RydWN0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzdDsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHN0IC0+IG1hdGNoIGltcGwgd2l0aCBOb25lIC0+IHJldHVybiBzdCB8IFNvbWUgZiAtPiBmIGN0eHQgc3RcbiAgICBpblxuICAgIGxldCBtYXBfaW50ZiBjdHh0IHNnX3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzZyA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc2dfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbnRmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc2cgfmdldF9sb2M6KGZ1biBzZyAtPiBzZy5QYXJzZXRyZWUucHNpZ19sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFNpZ25hdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3NpZ25hdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc2c7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzZyAtPiBtYXRjaCBpbnRmIHdpdGggTm9uZSAtPiByZXR1cm4gc2cgfCBTb21lIGYgLT4gZiBjdHh0IHNnXG4gICAgaW5cbiAgICB7IHQgd2l0aCBpbXBsID0gU29tZSBtYXBfaW1wbDsgaW50ZiA9IFNvbWUgbWFwX2ludGYgfVxuXG4gIGxldCBidWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfmhvb2sgfnJ1bGVzIH5lbmNsb3NlX2ltcGwgfmVuY2xvc2VfaW50ZlxuICAgICAgfmlucHV0X25hbWUgPVxuICAgIG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5ob29rIH5pbnB1dF9uYW1lXG4gICAgICB7XG4gICAgICAgIG5hbWUgPSBcIjxidWlsdGluOmNvbnRleHQtZnJlZT5cIjtcbiAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOltdO1xuICAgICAgfVxuXG4gIGxldCBwYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIHRzID1cbiAgICBsZXQgYmVmb3JlX2luc3RycywgYWZ0ZXJfaW5zdHJzLCByZXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IHRzIH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChiZWZfaSwgYWZ0X2ksIHJlc3QpIHQgLT5cbiAgICAgICAgICBsZXQgcmVkdWNlZF90ID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdCB3aXRoXG4gICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZiBpbnN0ciA9XG4gICAgICAgICAgICAoaW5zdHIuSW5zdHJ1bWVudC5wb3NpdGlvbiwgaW5zdHIuSW5zdHJ1bWVudC50cmFuc2Zvcm1hdGlvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIE9wdGlvbi5tYXAgdC5pbnN0cnVtZW50IH5mIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKEJlZm9yZSwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYmVmX2ksXG4gICAgICAgICAgICAgICAgYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgU29tZSAoQWZ0ZXIsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCBiZWZfaSxcbiAgICAgICAgICAgICAgICB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IE5vbmUgLT4gKGJlZl9pLCBhZnRfaSwgcmVkdWNlZF90IDo6IHJlc3QpKVxuICAgIGluXG4gICAgKCBgTGludGVyc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIHQubGludF9pbXBsIHx8IE9wdGlvbi5pc19zb21lIHQubGludF9pbnRmIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxsaW50OiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gdC5saW50X2ltcGw7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gdC5saW50X2ludGY7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBQcmVwcm9jZXNzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbXBsXG4gICAgICAgICAgICAgICB8fCBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW50ZlxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxwcmVwcm9jZXNzOiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IHQucHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSB0LnByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgIGBSZXN0IHJlc3QgKVxuZW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm0ucmVnaXN0ZXJcblxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuICAgICAgPVxuICAgIGxldCBpbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgaW1wbCB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFN0cnVjdHVyZSlcbiAgICBpblxuICAgIGxldCBpbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgaW50ZiB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFNpZ25hdHVyZSlcbiAgICBpblxuICAgIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbmVuZFxuXG5sZXQgYWRkX2N0eHRfYXJnIChmIDogJ2EgLT4gJ2IpIDogRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdiID1cbiBmdW4gXyB4IC0+IGYgeFxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZiA/aW1wbFxuICAgID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ltcGwgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW50ZiA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbXBsID0gT3B0aW9uLm1hcCBsaW50X2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ludGYgPSBPcHRpb24ubWFwIGxpbnRfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW1wbCA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbnRmID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG5cbmxldCByZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIH5uYW1lID8oYWxpYXNlcyA9IFtdKSB+aW1wbCB+aW50ZiA9XG4gIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIG5hbWUgfmltcGwgfmludGYgfmFsaWFzZXNcbltAQHdhcm5pbmcgXCItMTZcIl1cbigqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYSB3YXJuaW5nIDE2IGFzIG9mIG9jYW1sIDQuMTIgKilcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZlxuXG5sZXQgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgbmFtZSB+b2xkX2Ryb3BwZWQgfm5ld19kcm9wcGVkID1cbiAgbGV0IHByaW50X2RpZmYgd2hhdCBhIGIgPVxuICAgIGxldCBkaWZmID1cbiAgICAgIExpc3QuZmlsdGVyIGEgfmY6KGZ1biAobmFtZSA6IF8gTG9jLnQpIC0+XG4gICAgICAgICAgbm90XG4gICAgICAgICAgICAoTGlzdC5leGlzdHMgYiB+ZjooZnVuIChuYW1lJyA6IF8gTG9jYXRpb24ubG9jKSAtPlxuICAgICAgICAgICAgICAgICBuYW1lLnR4dCA9PSBuYW1lJy50eHQpKSlcbiAgICBpblxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBkaWZmKSB0aGVuIChcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzICVzIGFmdGVyIGFwcGx5aW5nICVzOlxcblwiIHdoYXRcbiAgICAgICAgbmFtZTtcbiAgICAgIExpc3QuaXRlciBkaWZmIH5mOihmdW4geyBMb2NhdGlvbi50eHQ7IGxvYyB9IC0+XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiLSAlYTogJXNcXG5cIiBMb2NhdGlvbi5wcmludCBsb2MgdHh0KTtcbiAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIkAuXCIpXG4gIGluXG4gIHByaW50X2RpZmYgXCJkaXNhcHBlYXJlZFwiIG5ld19kcm9wcGVkIG9sZF9kcm9wcGVkO1xuICBwcmludF9kaWZmIFwicmVhcHBlYXJlZFwiIG9sZF9kcm9wcGVkIG5ld19kcm9wcGVkXG5cbmxldCBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgfmlucHV0X25hbWUgPVxuICBsZXQgY3RzID1cbiAgICBtYXRjaCAhYXBwbHlfbGlzdCB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QucmV2ICFUcmFuc2Zvcm0uYWxsXG4gICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgICAgTGlzdC5maW5kICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICBpblxuICBsZXQgKCBgTGludGVycyBsaW50ZXJzLFxuICAgICAgICBgUHJlcHJvY2VzcyBwcmVwcm9jZXNzLFxuICAgICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgICAgYFJlc3QgY3RzICkgPVxuICAgIFRyYW5zZm9ybS5wYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIGN0c1xuICBpblxuICAoKiBBbGxvdyBvbmx5IG9uZSBwcmVwcm9jZXNzb3IgdG8gYXNzdXJlIGRldGVybWluaXN0aWMgb3JkZXIgKilcbiAgKGlmIExpc3QubGVuZ3RoIHByZXByb2Nlc3MgPiAxIHRoZW5cbiAgICAgbGV0IHBwID1cbiAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0Lm1hcCBwcmVwcm9jZXNzIH5mOihmdW4gdCAtPiB0Lm5hbWUpKVxuICAgICBpblxuICAgICBsZXQgZXJyID1cbiAgICAgICBQcmludGYuc3ByaW50ZiBcIkF0IG1vc3Qgb25lIHByZXByb2Nlc3NvciBpcyBhbGxvd2VkLCB3aGlsZSBnb3Q6ICVzXCIgcHBcbiAgICAgaW5cbiAgICAgZmFpbHdpdGggZXJyKTtcbiAgbGV0IG1ha2VfZ2VuZXJpYyB0cmFuc2Zvcm1zID1cbiAgICBpZiAhbm9fbWVyZ2UgdGhlblxuICAgICAgTGlzdC5tYXAgdHJhbnNmb3Jtc1xuICAgICAgICB+ZjpcbiAgICAgICAgICAoVHJhbnNmb3JtLm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfnRvb2xfbmFtZVxuICAgICAgICAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSlcbiAgICBlbHNlXG4gICAgICAobGV0IGdldF9lbmNsb3NlcnMgfmYgPVxuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBmIGN0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGN0Lm5hbWUsIHgpKVxuICAgICAgICAgKCogU29ydCB0aGVtIHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyaW5nICopXG4gICAgICAgICB8PiBMaXN0LnNvcnQgfmNtcDooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKVxuICAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICAgaW5cblxuICAgICAgIGxldCBydWxlcyA9XG4gICAgICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LnJ1bGVzKVxuICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICBhbmQgaW1wbF9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbXBsKVxuICAgICAgIGFuZCBpbnRmX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ludGYpIGluXG4gICAgICAgbWF0Y2ggKHJ1bGVzLCBpbXBsX2VuY2xvc2VycywgaW50Zl9lbmNsb3NlcnMpIHdpdGhcbiAgICAgICB8IFtdLCBbXSwgW10gLT4gdHJhbnNmb3Jtc1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgICBsZXQgbWVyZ2VfZW5jbG9zZXIgPSBmdW5jdGlvblxuICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgIHwgZW5jbG9zZXJzIC0+XG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoZnVuIGN0eHQgbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycywgZm9vdGVycyA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIGVuY2xvc2VycyB+ZjooZnVuIGYgLT4gZiBjdHh0IGxvYykgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzID0gTGlzdC5jb25jYXQgaGVhZGVycyBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGZvb3RlcnMgPSBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgZm9vdGVycykgaW5cbiAgICAgICAgICAgICAgICAgICAgIChoZWFkZXJzLCBmb290ZXJzKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgVHJhbnNmb3JtLmJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+cnVsZXMgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgIH5lbmNsb3NlX2ltcGw6KG1lcmdlX2VuY2xvc2VyIGltcGxfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH5lbmNsb3NlX2ludGY6KG1lcmdlX2VuY2xvc2VyIGludGZfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWVcbiAgICAgICAgICAgOjogdHJhbnNmb3JtcylcbiAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKGN0LmltcGwsIGN0LmludGYpIHdpdGggTm9uZSwgTm9uZSAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgaW5cbiAgbGludGVycyBAIHByZXByb2Nlc3MgQCBiZWZvcmVfaW5zdHJzIEAgbWFrZV9nZW5lcmljIGN0cyBAIGFmdGVyX2luc3Ryc1xuXG5sZXQgYXBwbHlfdHJhbnNmb3JtcyB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmZpZWxkIH5saW50X2ZpZWxkIH5kcm9wcGVkX3NvX2ZhclxuICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzIGFzdCA9XG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH50b29sX25hbWUgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH5pbnB1dF9uYW1lXG4gIGluXG4gIGxldCBmaW5pc2ggKGFzdCwgX2Ryb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpID1cbiAgICAoIGFzdCxcbiAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzIH5mOihmdW4gKGxvYywgcykgLT5cbiAgICAgICAgICBDb21tb24uYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMpLFxuICAgICAgZXJyb3JzIClcbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgY3RzIH5pbml0Oihhc3QsIFtdLCBbXSwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKGFzdCwgZHJvcHBlZCwgKGxpbnRfZXJyb3JzIDogXyBsaXN0KSwgZXJyb3JzKSAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aFxuICAgICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgICAgICAgIG1hdGNoIGxpbnRfZmllbGQgY3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAobGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSAobGludF9lcnJvcnMgQCBmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKGxpbnRfZXJyb3JzLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmaWVsZCBjdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IChhc3QsIG1vcmVfZXJyb3JzKSwgZXJyb3JzID1cbiAgICAgICAgICAgICAgdHJ5IChmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKChhc3QsIFtdKSwgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkcm9wcGVkID1cbiAgICAgICAgICAgICAgaWYgIWRlYnVnX2F0dHJpYnV0ZV9kcm9wIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBuZXdfZHJvcHBlZCA9IGRyb3BwZWRfc29fZmFyIGFzdCBpblxuICAgICAgICAgICAgICAgIGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIGN0Lm5hbWUgfm9sZF9kcm9wcGVkOmRyb3BwZWRcbiAgICAgICAgICAgICAgICAgIH5uZXdfZHJvcHBlZDtcbiAgICAgICAgICAgICAgICBuZXdfZHJvcHBlZClcbiAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMgQCBtb3JlX2Vycm9ycykpXG4gIGluXG4gIGZpbmlzaCBhY2NcblxuKCokKilcblxubGV0IGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH4oa2luZCA6IEtpbmQudCkgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBJbnRmIC0+IEludGZfb3JfaW1wbC5JbnRmIFsgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciBdXG4gIHwgSW1wbCAtPiBJbnRmX29yX2ltcGwuSW1wbCBbIGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgXVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gfihraW5kIDogS2luZC50KSA9XG4gIGV4bl90b19sb2NfZXJyb3IgZXhuIHw+IGVycm9yX3RvX2V4dGVuc2lvbiB+a2luZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEFjdHVhbCByZXdyaXRpbmcgb2Ygc3RydWN0dXJlL3NpZ25hdHVyZXMgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBwcmludF9wYXNzZXMgKCkgPVxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhsaWJfZHJpdmVyXCIgaW5cbiAgbGV0IGVtYmVkX2Vycm9ycyA9IGZhbHNlIGluXG4gIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgICAgfmlucHV0X25hbWU6Tm9uZVxuICBpblxuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlblxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpmcmVzaGVuLWFuZC1jb2xsZWN0LWF0dHJpYnV0ZXM+XFxuXCI7XG4gIExpc3QuaXRlciBjdHMgfmY6KGZ1biBjdCAtPiBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5UcmFuc2Zvcm0ubmFtZSk7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWF0dHJpYnV0ZXM+XFxuXCI7XG4gICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1leHRlbnNpb25zPlxcblwiKVxuXG5sZXQgc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyA9XG4gIExpc3Quc29ydCBlcnJvcnMgfmNtcDooZnVuIGVycm9yIGVycm9yJyAtPlxuICAgICAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICAgICAgbGV0IGxvYycgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3InIGluXG4gICAgICBMb2NhdGlvbi5jb21wYXJlIGxvYyBsb2MnKVxuXG4oKiQqKVxuXG5sZXQgbWFwX3N0cnVjdHVyZV9nZW4gc3QgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3N0cnVjdHVyZSBzdCk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHN0ID1cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzdFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc3RcbiAgICBpblxuICAgIHN0XG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc3QgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3N0cnVjdHVyZV9pdGVtKVxuICAgIEAgc3RcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHN0ID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnNcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgaWdub3JlXG4gICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzdFxuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgbGV0IHN0LCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHN0IH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmltcGwpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ltcGwpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc3QgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9XG4gIG1hdGNoXG4gICAgbWFwX3N0cnVjdHVyZV9nZW4gc3RcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IG1hcF9zaWduYXR1cmVfZ2VuIHNnIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzaWduYXR1cmUgc2cpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzZyA9XG4gICAgbGV0IHNnID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc2dcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHNnXG4gICAgaW5cbiAgICBzZ1xuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHNnID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzaWduYXR1cmVfaXRlbSlcbiAgICBAIHNnXG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzZyA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgIGlnbm9yZVxuICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc2dcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gIGxldCBzZywgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzZyB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbnRmKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbnRmKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHNnIHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zaWduYXR1cmUgc2cgPVxuICBtYXRjaFxuICAgIG1hcF9zaWduYXR1cmVfZ2VuIHNnXG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQqKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEVudHJ5IHBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzID1cbiAgbGV0IHRlc3QgbWFnaWNfbnVtYmVyID1cbiAgICBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDooU3RyaW5nLnN1YiBtYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgaW5cbiAgdGVzdCBBc3RfbWFnaWMuYXN0X2ludGZfbWFnaWNfbnVtYmVyIHx8IHRlc3QgQXN0X21hZ2ljLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG5sZXQgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGlucHV0X2ZpbGVfbmFtZSA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExvY2F0aW9uLkVycm9yLm1ha2UgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlX25hbWUpIG1zZyB+c3ViOltdXG4gICAgICBpblxuICAgICAgRXJyb3IgKGVyciwgaW5wdXRfdmVyc2lvbikpXG5cbmxldCByZW1vdmVfbm9fZXJyb3IgZm4gPSB0cnkgU3RkbGliLlN5cy5yZW1vdmUgZm4gd2l0aCBTeXNfZXJyb3IgXyAtPiAoKVxuXG5sZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgdiAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgdlxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICByYWlzZSBlXG5cbmxldCB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mID1cbiAgbWF0Y2ggIXByZXByb2Nlc3NvciB3aXRoXG4gIHwgTm9uZSAtPiBmIGZuXG4gIHwgU29tZSBwcCAtPlxuICAgICAgcHJvdGVjdHggKFN0ZGxpYi5GaWxlbmFtZS50ZW1wX2ZpbGUgXCJvY2FtbHBwXCIgXCJcIikgfmZpbmFsbHk6cmVtb3ZlX25vX2Vycm9yXG4gICAgICAgIH5mOihmdW4gdG1wZmlsZSAtPlxuICAgICAgICAgIG1hdGNoIFN5c3RlbS5ydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQ6Zm4gfm91dHB1dDp0bXBmaWxlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGYgdG1wZmlsZVxuICAgICAgICAgIHwgRXJyb3IgKGZhaWxlZF9jb21tYW5kLCBmYWxsX2JhY2tfdmVyc2lvbikgLT5cbiAgICAgICAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICAgICAgICAgIFwiRXJyb3Igd2hpbGUgcnVubmluZyBleHRlcm5hbCBwcmVwcm9jZXNzb3JcXG5Db21tYW5kIGxpbmU6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICBmYWlsZWRfY29tbWFuZClcblxubGV0IHJlbG9jYXRlX21hcHBlciA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyAqIHN0cmluZ10gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCEgcG9zaXRpb24gKG9sZF9mbiwgbmV3X2ZuKSBwb3MgPVxuICAgICAgaWYgU3RyaW5nLmVxdWFsIHBvcy5wb3NfZm5hbWUgb2xkX2ZuIHRoZW4geyBwb3Mgd2l0aCBwb3NfZm5hbWUgPSBuZXdfZm4gfVxuICAgICAgZWxzZSBwb3NcbiAgZW5kXG5cbigqIFNldCB0aGUgaW5wdXQgbmFtZSBnbG9iYWxseS4gVGhpcyBpcyB1c2VkIGJ5IHNvbWUgcHB4IHJld3JpdGVyc1xuICAgc3VjaCBhcyBiaXNlY3RfcHB4LiAqKVxubGV0IHNldF9pbnB1dF9uYW1lID0gQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9uYW1lXG5cbmxldCBsb2FkX2lucHV0IH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnJlbG9jYXRlIGZuID1cbiAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgbGV0IGlucHV0X3NvdXJjZSA9IGlmIFN0cmluZy5lcXVhbCBmbiBcIi1cIiB0aGVuIEFzdF9pby5TdGRpbiBlbHNlIEZpbGUgZm4gaW5cbiAgbGV0IGlucHV0X2tpbmQgPSBBc3RfaW8uUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSBpblxuICBtYXRjaCBBc3RfaW8ucmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdF9raW5kID0gSW50Zl9vcl9pbXBsLmtpbmQgYXN0IGluXG4gICAgICBpZiBub3QgKEtpbmQuZXF1YWwga2luZCBhc3Rfa2luZCkgdGhlblxuICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gZm5cbiAgICAgICAgICBcIkZpbGUgY29udGFpbnMgYSBiaW5hcnkgJXMgQVNUIGJ1dCBhbiAlcyB3YXMgZXhwZWN0ZWRcIlxuICAgICAgICAgIChLaW5kLmRlc2NyaWJlIGFzdF9raW5kKSAoS2luZC5kZXNjcmliZSBraW5kKVxuICAgICAgZWxzZSBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB8fCBub3QgcmVsb2NhdGUgdGhlbiAoXG4gICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICBPayAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIE9rXG4gICAgICAgICAgKCBpbnB1dF9uYW1lLFxuICAgICAgICAgICAgaW5wdXRfdmVyc2lvbixcbiAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKSApXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICBcIkZpbGUgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSlcbiAgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgRXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbilcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGZuID1cbiAgKCogSWYgdGhlcmUncyBhbiBlcnJvciB3aGlsZSBsb2FkaW5nIGluIHJ1bl9hc19wcHggbW9kZSwgdGhlIGtpbmQgb2YgQVNUIChpbXBsL2ludGYpIGlzIHN0aWxsIHVua25vd24uXG4gICAgIFRoYXQncyB3aHksIGFzIG9wcG9zZWQgdG8gbG9hZF9pbnB1dCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgZXJyb3JzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgcmVzdWx0OlxuICAgICBoYW5kbGluZyBhbiBlcnJvciBieSByZXR1cm5pbmcgYW4gQVNUIHdpdGggdGhlIGVycm9yIHBhY2tlZCBhcyBleHRlbnNpb24gbm9kZSB3b3VsZG4ndCBiZSBwb3NzaWJsZS4gKilcbiAgbWF0Y2ggQXN0X2lvLnJlYWQgKEZpbGUgZm4pIH5pbnB1dF9raW5kOkFzdF9pby5OZWNlc3NhcmlseV9iaW5hcnkgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICAgICAgYXN0XG4gICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgdGhlbiBhc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSlcbiAgICAgIGluXG4gICAgICAoKiBXaXRoIGAtLWFzLXBweGAsIG9jYW1sIGNhbGxzIHRoZSBzdGFuZGFsb25lIHNlcGFyYXRlbHkgZm9yIGV2ZXJ5IHN0cnVjdHVyZS9zaWduYXR1cmUgaXRlbVxuICAgICAgICAgd2l0aCB0aGUgZmlsZW5hbWUgYXMgbWV0YWRhdGEgdGhhdCBpdCBnZXRzIGZyb20gdGhlIHByZXZpb3VzIGNhbGwuIHJlbG9jYXRlX21hcHBlciBvbmx5XG4gICAgICAgICByZWxvY2F0ZXMgcG9zaXRpb25zIHdob3NlIHBvc2l0aW9uIGZpbGVuYW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgbWV0YWRhdGEgZmlsZW5hbWUuXG4gICAgICAgICBTbyBhbHdheXMgcmV0dXJuIHRoZSBtZXRhZGF0YSBmaWxlbmFtZSBpdHNlbGYsIGV2ZW4gaWYgYC1sb2MtZmlsZW5hbWVgIGlzIHByb3ZpZGVkLiAqKVxuICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgXykpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJUaGUgaW5wdXQgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiRXhwZWN0ZWQgYSBiaW5hcnkgQVNUIGFzIGlucHV0XCJcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgXykpIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIF8pKSAtPlxuICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmbiB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG5cbmxldCBsb2FkX3NvdXJjZV9maWxlIGZuID1cbiAgbGV0IHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZuIGluXG4gIGlmIHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgXCJwcHhsaWJfZHJpdmVyOiBjYW5ub3QgdXNlIC1yZWNvbmNpbGUgd2l0aCBiaW5hcnkgQVNUIGZpbGVzXCI7XG4gIHNcblxudHlwZSBvdXRwdXRfbW9kZSA9XG4gIHwgUHJldHR5X3ByaW50XG4gIHwgRHVtcF9hc3RcbiAgfCBEcGFyc2V0cmVlXG4gIHwgUmVjb25jaWxlIG9mIFJlY29uY2lsZS5tb2RlXG4gIHwgTnVsbFxuXG4oKiQqKVxubGV0IGV4dHJhY3RfY29va2llc19zdHIgc3QgPVxuICBsZXQgc3QgPVxuICAgIG1hdGNoIHN0IHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzdCAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU3RydWN0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3N0ciB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzdFxuICAgIHwgXyAtPiBzdFxuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHN0XG5cbmxldCBhZGRfY29va2llc19zdHIgc3QgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFN0cnVjdHVyZVxuICBpblxuICBwcmVmaXggQCBzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5sZXQgZXh0cmFjdF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBzZyA9XG4gICAgbWF0Y2ggc2cgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzaWdfZGVzYyA9XG4gICAgICAgICAgIFBzaWdfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHNnIC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTaWduYXR1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc2lnIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHNnXG4gICAgfCBfIC0+IHNnXG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc2dcblxubGV0IGFkZF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU2lnbmF0dXJlXG4gIGluXG4gIHByZWZpeCBAIHNnXG5cbigqJCopXG5cbmxldCBleHRyYWN0X2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoZXh0cmFjdF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChleHRyYWN0X2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBhZGRfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChhZGRfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoYWRkX2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBjb3JyZWN0aW9ucyA9IHJlZiBbXVxubGV0IGFkZF90b19saXN0IHIgeCA9IHIgOj0geCA6OiAhclxuXG5sZXQgcmVnaXN0ZXJfY29ycmVjdGlvbiB+bG9jIH5yZXBsID1cbiAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2VfdGV4dCAoKSB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZFxuICAgICAgIH5yZXBsKVxuXG5sZXQgcHJvY2Vzc19maWxlX2hvb2tzID0gcmVmIFtdXG5sZXQgcmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2sgZiA9IGFkZF90b19saXN0IHByb2Nlc3NfZmlsZV9ob29rcyBmXG5cbm1vZHVsZSBGaWxlX3Byb3BlcnR5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgICBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnQ7XG4gIH1cblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGFsbCA9IHJlZiBbXVxuICBsZXQgcmVnaXN0ZXIgdCA9IGFkZF90b19saXN0IGFsbCAoVCB0KVxuICBsZXQgcmVzZXRfYWxsICgpID0gTGlzdC5pdGVyICFhbGwgfmY6KGZ1biAoVCB0KSAtPiB0LmRhdGEgPC0gTm9uZSlcblxuICBsZXQgZHVtcF9hbmRfcmVzZXRfYWxsICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QucmV2ICFhbGwpIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbWF0Y2ggdC5kYXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICAgIHQuZGF0YSA8LSBOb25lO1xuICAgICAgICAgICAgU29tZSAodC5uYW1lLCB0LnNleHBfb2ZfdCB2KSlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2ZpbGVfcHJvcGVydHlcbiAgICAoTmFtZSA6IHNpZ1xuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmQpXG4gICAgKFQgOiBTZXhwYWJsZS5TKSA9XG5zdHJ1Y3RcbiAgbGV0IHQgOiBfIEZpbGVfcHJvcGVydHkudCA9XG4gICAgeyBuYW1lID0gTmFtZS5uYW1lOyBkYXRhID0gTm9uZTsgc2V4cF9vZl90ID0gVC5zZXhwX29mX3QgfVxuXG4gIGxldCAoKSA9IEZpbGVfcHJvcGVydHkucmVnaXN0ZXIgdFxuICBsZXQgc2V0IHggPSB0LmRhdGEgPC0gU29tZSB4XG5lbmRcblxubGV0IHByb2Nlc3NfYXN0IChhc3QgOiBJbnRmX29yX2ltcGwudCkgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9va1xuICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+ZW1iZWRfZXJyb3JzID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zaWduYXR1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW50ZiBhc3RcbiAgfCBJbXBsIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW1wbCBhc3RcblxubGV0IHByb2Nlc3NfZmlsZSAoa2luZCA6IEtpbmQudCkgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZVxuICAgIH5lbWJlZF9lcnJvcnMgfm91dHB1dCA9XG4gIEZpbGVfcHJvcGVydHkucmVzZXRfYWxsICgpO1xuICBMaXN0Lml0ZXIgKExpc3QucmV2ICFwcm9jZXNzX2ZpbGVfaG9va3MpIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgY29ycmVjdGlvbnMgOj0gW107XG4gIGxldCByZXBsYWNlbWVudHMgPSByZWYgW10gaW5cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4X2RyaXZlclwiIGluXG4gIGxldCBob29rIDogQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2sudCA9XG4gICAgbWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICAgIHwgUmVjb25jaWxlIChVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBmID1cbiAgICAgICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgICAgIGFkZF90b19saXN0IHJlcGxhY2VtZW50c1xuICAgICAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRXh0ZW5zaW9uIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6Z2VuZXJhdGVkKSk7XG4gICAgICAgIH1cbiAgICB8IF8gLT4gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA6IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci50ID1cbiAgICB7XG4gICAgICBmID1cbiAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihGbG9hdGluZ19hdHRyaWJ1dGUgY29udGV4dClcbiAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOihNYW55IGdlbmVyYXRlZCkpKTtcbiAgICB9XG4gIGluXG5cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9XG4gICAgbGV0IHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkID1cbiAgICAgIHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmY6KGxvYWRfaW5wdXQgfmtpbmQgfmlucHV0X25hbWUgfnJlbG9jYXRlKVxuICAgIGluXG4gICAgbWF0Y2ggcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgd2l0aFxuICAgIHwgT2sgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpIC0+IChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBleHRyYWN0X2Nvb2tpZXMgYXN0XG4gICAgICAgICAgICB8PiBwcm9jZXNzX2FzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kKSlcbiAgICB8IEVycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikgd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgKGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+a2luZClcbiAgICB8IEVycm9yIChlcnJvciwgXykgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuXG4gICAgICAgIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcbiAgaW5cbiAgT3B0aW9uLml0ZXIgIW91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSB+ZjooZnVuIGZuIC0+XG4gICAgICBsZXQgbWV0YWRhdGEgPSBGaWxlX3Byb3BlcnR5LmR1bXBfYW5kX3Jlc2V0X2FsbCAoKSBpblxuICAgICAgT3V0X2NoYW5uZWwud3JpdGVfYWxsIGZuXG4gICAgICAgIH5kYXRhOlxuICAgICAgICAgIChMaXN0Lm1hcCBtZXRhZGF0YSB+ZjooZnVuIChzLCBzZXhwKSAtPlxuICAgICAgICAgICAgICAgU2V4cC50b19zdHJpbmdfaHVtIChTZXhwLkxpc3QgWyBBdG9tIHM7IHNleHAgXSkgXiBcIlxcblwiKVxuICAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiKSk7XG5cbiAgbGV0IGlucHV0X2NvbnRlbnRzID0gbGF6eSAobG9hZF9zb3VyY2VfZmlsZSBmbikgaW5cbiAgbGV0IGNvcnJlY3RlZCA9IGZuIF4gIWNvcnJlY3RlZF9zdWZmaXggaW5cbiAgbGV0IG1pc21hdGNoZXNfZm91bmQgPVxuICAgIG1hdGNoICFjb3JyZWN0aW9ucyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgICBpZiBTdGRsaWIuU3lzLmZpbGVfZXhpc3RzIGNvcnJlY3RlZCB0aGVuIFN0ZGxpYi5TeXMucmVtb3ZlIGNvcnJlY3RlZDtcbiAgICAgICAgZmFsc2VcbiAgICB8IGNvcnJlY3Rpb25zIC0+XG4gICAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgY29ycmVjdGlvbnNcbiAgICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgICAgfm91dHB1dDooU29tZSBjb3JyZWN0ZWQpIH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZVxuICAgICAgICAgIH50YXJnZXQ6Q29ycmVjdGVkID9zdHlsZXI6IXN0eWxlciB+a2luZDtcbiAgICAgICAgdHJ1ZVxuICBpblxuXG4gIChtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gIHwgTnVsbCAtPiAoKVxuICB8IFByZXR0eV9wcmludCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gUHByaW50YXN0LnNpZ25hdHVyZSBwcGYgYXN0XG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBQcHJpbnRhc3Quc3RydWN0dXJlIHBwZiBhc3QpO1xuICAgICAgICAgIGxldCBudWxsX2FzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aCBJbnRmIFtdIHwgSW1wbCBbXSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IG51bGxfYXN0IHRoZW4gU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBEdW1wX2FzdCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgQXN0X2lvLndyaXRlIG9jXG4gICAgICAgICAgICB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgICAgICAgICB+YWRkX3BweF9jb250ZXh0OnRydWUpXG4gIHwgRHBhcnNldHJlZSAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIGxldCBhc3QgPSBhZGRfY29va2llcyBhc3QgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlIGFzdClcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlIGFzdCkpO1xuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgUmVjb25jaWxlIG1vZGUgLT5cbiAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgIXJlcGxhY2VtZW50c1xuICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgIH5vdXRwdXQgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lIH50YXJnZXQ6KE91dHB1dCBtb2RlKVxuICAgICAgICA/c3R5bGVyOiFzdHlsZXIgfmtpbmQpO1xuXG4gIGlmXG4gICAgbWlzbWF0Y2hlc19mb3VuZCAmJiBtYXRjaCAhZGlmZl9jb21tYW5kIHdpdGggU29tZSBcIi1cIiAtPiBmYWxzZSB8IF8gLT4gdHJ1ZVxuICB0aGVuIChcbiAgICBQcHhsaWJfcHJpbnRfZGlmZi5wcmludCAoKSB+ZmlsZTE6Zm4gfmZpbGUyOmNvcnJlY3RlZCB+dXNlX2NvbG9yOiF1c2VfY29sb3JcbiAgICAgID9kaWZmX2NvbW1hbmQ6IWRpZmZfY29tbWFuZDtcbiAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgb3V0cHV0X21vZGUgPSByZWYgUHJldHR5X3ByaW50XG5sZXQgb3V0cHV0ID0gcmVmIE5vbmVcbmxldCBraW5kID0gcmVmIE5vbmVcbmxldCBpbnB1dCA9IHJlZiBOb25lXG5sZXQgZW1iZWRfZXJyb3JzID0gcmVmIGZhbHNlXG5cbmxldCBzZXRfaW5wdXQgZm4gPVxuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT4gaW5wdXQgOj0gU29tZSBmblxuICB8IFNvbWUgXyAtPiByYWlzZSAoQXJnLkJhZCBcInRvbyBtYW55IGlucHV0IGZpbGVzXCIpXG5cbmxldCBzZXRfa2luZCBrID1cbiAgbWF0Y2ggIWtpbmQgd2l0aFxuICB8IFNvbWUgaycgd2hlbiBub3QgKEtpbmQuZXF1YWwgayBrJykgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwibXVzdCBzcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIC1pbXBsIG9yIC1pbnRmXCIpXG4gIHwgXyAtPiBraW5kIDo9IFNvbWUga1xuXG5sZXQgc2V0X291dHB1dF9tb2RlIG1vZGUgPVxuICBtYXRjaCAoIW91dHB1dF9tb2RlLCBtb2RlKSB3aXRoXG4gIHwgUHJldHR5X3ByaW50LCBfIC0+IG91dHB1dF9tb2RlIDo9IG1vZGVcbiAgfCBfLCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRHVtcF9hc3QsIER1bXBfYXN0IHwgRHBhcnNldHJlZSwgRHBhcnNldHJlZSAtPiAoKVxuICB8IFJlY29uY2lsZSBhLCBSZWNvbmNpbGUgYiB3aGVuIFBvbHkuZXF1YWwgYSBiIC0+ICgpXG4gIHwgeCwgeSAtPlxuICAgICAgbGV0IGFyZ19vZl9vdXRwdXRfbW9kZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IER1bXBfYXN0IC0+IFwiLWR1bXAtYXN0XCJcbiAgICAgICAgfCBEcGFyc2V0cmVlIC0+IFwiLWRwYXJzZXRyZWVcIlxuICAgICAgICB8IFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT4gXCItcmVjb25jaWxlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+IFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCJcbiAgICAgICAgfCBOdWxsIC0+IFwiLW51bGxcIlxuICAgICAgaW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzIGFuZCAlcyBhcmUgaW5jb21wYXRpYmxlXCIgKGFyZ19vZl9vdXRwdXRfbW9kZSB4KVxuICAgICAgICAgICAgICAoYXJnX29mX291dHB1dF9tb2RlIHkpKSlcblxubGV0IHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKSA9XG4gIExpc3QuaXRlciAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QubmFtZSlcblxubGV0IHBhcnNlX2FwcGx5X2xpc3QgcyA9XG4gIGxldCBuYW1lcyA9XG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIiB0aGVuIFtdIGVsc2UgU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicsJ1xuICBpblxuICBMaXN0Lml0ZXIgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICBpZlxuICAgICAgICBub3RcbiAgICAgICAgICAoTGlzdC5leGlzdHMgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoU3RkbGliLkFyZy5CYWRcbiAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJjb2RlIHRyYW5zZm9ybWF0aW9uICclcycgZG9lcyBub3QgZXhpc3RcIiBuYW1lKSkpO1xuICBuYW1lc1xuXG50eXBlIG1hc2sgPSB7XG4gIG11dGFibGUgYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG4gIG11dGFibGUgZG9udF9hcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbn1cblxubGV0IG1hc2sgPSB7IGFwcGx5ID0gTm9uZTsgZG9udF9hcHBseSA9IE5vbmUgfVxuXG5sZXQgaGFuZGxlX2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gICgqIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncyBtb3JlIGludHVpdGl2ZSAqKVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IG11c3QgYmUgY2FsbGVkIGJlZm9yZSAtZG9udC1hcHBseVwiKTtcbiAgbWFzay5hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBoYW5kbGVfZG9udF9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gIG1hc2suZG9udF9hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBpbnRlcnByZXRfbWFzayAoKSA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgfHwgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICBsZXQgc2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUgY3QgPVxuICAgICAgbGV0IGlzX2NhbmRpZGF0ZSA9XG4gICAgICAgIG1hdGNoIG1hc2suYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT4gTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdClcbiAgICAgIGluXG4gICAgICBsZXQgaXNfc2VsZWN0ZWQgPVxuICAgICAgICBtYXRjaCBtYXNrLmRvbnRfYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaXNfY2FuZGlkYXRlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICAgICAgaXNfY2FuZGlkYXRlICYmIG5vdCAoTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdCkpXG4gICAgICBpblxuICAgICAgaWYgaXNfc2VsZWN0ZWQgdGhlbiBTb21lIGN0Lm5hbWUgZWxzZSBOb25lXG4gICAgaW5cbiAgICBhcHBseV9saXN0IDo9XG4gICAgICBTb21lIChMaXN0LmZpbHRlcl9tYXAgIVRyYW5zZm9ybS5hbGwgfmY6c2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUpXG5cbmxldCBzZXRfY29va2llIHMgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonPScgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwiaW52YWxpZCBjb29raWUsIG11c3QgYmUgb2YgdGhlIGZvcm0gXFxcIjxuYW1lPj08ZXhwcj5cXFwiXCIpXG4gIHwgU29tZSAobmFtZSwgdmFsdWUpIC0+XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHZhbHVlIGluXG4gICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIjxjb21tYW5kLWxpbmU+XCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfTtcbiAgICAgIGxldCBleHByID0gUGFyc2UuZXhwcmVzc2lvbiBsZXhidWYgaW5cbiAgICAgIENvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgOj0gKG5hbWUsIGV4cHIpIDo6ICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpXG5cbmxldCBzaGFyZWRfYXJncyA9XG4gIFtcbiAgICAoIFwiLWxvYy1maWxlbmFtZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gbG9jX2ZuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIjxzdHJpbmc+IEZpbGUgbmFtZSB0byB1c2UgaW4gbG9jYXRpb25zXCIgKTtcbiAgICAoIFwiLXJlc2VydmUtbmFtZXNwYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlcy5yZXNlcnZlLFxuICAgICAgXCI8c3RyaW5nPiBNYXJrIHRoZSBnaXZlbiBuYW1lc3BhY2UgYXMgcmVzZXJ2ZWRcIiApO1xuICAgIChcIi1uby1jaGVja1wiLCBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3MsIFwiIERpc2FibGUgY2hlY2tzICh1bnNhZmUpXCIpO1xuICAgIChcIi1jaGVja1wiLCBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzLCBcIiBFbmFibGUgY2hlY2tzXCIpO1xuICAgICggXCItbm8tY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBEaXNhYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBFbmFibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLW5vLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRGlzYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBFbmFibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEFwcGx5IHRoZXNlIHRyYW5zZm9ybWF0aW9ucyBpbiBvcmRlciAoY29tbWEtc2VwYXJhdGVkIGxpc3QpXCIgKTtcbiAgICAoIFwiLWRvbnQtYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2RvbnRfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gRXhjbHVkZSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnNcIiApO1xuICAgICggXCItbm8tbWVyZ2VcIixcbiAgICAgIEFyZy5TZXQgbm9fbWVyZ2UsXG4gICAgICBcIiBEbyBub3QgbWVyZ2UgY29udGV4dCBmcmVlIHRyYW5zZm9ybWF0aW9ucyAoYmV0dGVyIGZvciBkZWJ1Z2dpbmcgXFxcbiAgICAgICByZXdyaXRlcnMpLiBBcyBhIHJlc3VsdCwgdGhlIGNvbnRleHQtZnJlZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIG5vdCBhbGwgXFxcbiAgICAgICBhcHBsaWVkIGJlZm9yZSBhbGwgaW1wbCBhbmQgaW50Zi5cIiApO1xuICAgIChcIi1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIk5BTUU9RVhQUiBTZXQgdGhlIGNvb2tpZSBOQU1FIHRvIEVYUFJcIik7XG4gICAgKFwiLS1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIiBTYW1lIGFzIC1jb29raWVcIik7XG4gIF1cblxubGV0ICgpID1cbiAgTGlzdC5pdGVyIHNoYXJlZF9hcmdzIH5mOihmdW4gKGtleSwgc3BlYywgZG9jKSAtPiBhZGRfYXJnIGtleSBzcGVjIH5kb2MpXG5cbmxldCBhc19wcCAoKSA9XG4gIHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdDtcbiAgZW1iZWRfZXJyb3JzIDo9IHRydWVcblxubGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gIFtcbiAgICAoIFwiLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgUnVuIGFzIGEgLXBweCByZXdyaXRlciAobXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQpXCIgKTtcbiAgICAoIFwiLS1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBTYW1lIGFzIC1hcy1wcHhcIiApO1xuICAgIChcIi1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2hvcnRoYW5kIGZvcjogLWR1bXAtYXN0IC1lbWJlZC1lcnJvcnNcIik7XG4gICAgKFwiLS1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2FtZSBhcyAtYXMtcHBcIik7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXQgOj0gU29tZSBzKSxcbiAgICAgIFwiPGZpbGVuYW1lPiBPdXRwdXQgZmlsZSAodXNlICctJyBmb3Igc3Rkb3V0KVwiICk7XG4gICAgKFwiLVwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9pbnB1dCBcIi1cIiksIFwiIFJlYWQgaW5wdXQgZnJvbSBzdGRpblwiKTtcbiAgICAoIFwiLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBEdW1wIHRoZSBtYXJzaGFsZWQgYXN0IHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkIG9mIHByZXR0eS1wcmludGluZyBpdFwiXG4gICAgKTtcbiAgICAoIFwiLS1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgU2FtZSBhcyAtZHVtcC1hc3RcIiApO1xuICAgICggXCItZHBhcnNldHJlZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHBhcnNldHJlZSksXG4gICAgICBcIiBQcmludCB0aGUgcGFyc2V0cmVlIChzYW1lIGFzIG9jYW1sYyAtZHBhcnNldHJlZSlcIiApO1xuICAgICggXCItZW1iZWQtZXJyb3JzXCIsXG4gICAgICBBcmcuU2V0IGVtYmVkX2Vycm9ycyxcbiAgICAgIFwiIEVtYmVkIGVycm9ycyBpbiB0aGUgb3V0cHV0IEFTVCAoZGVmYXVsdDogdHJ1ZSB3aGVuIC1hcy1wcCwgZmFsc2UgXFxcbiAgICAgICBvdGhlcndpc2UpXCIgKTtcbiAgICAoIFwiLW51bGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIE51bGwpLFxuICAgICAgXCIgUHJvZHVjZSBubyBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXCIgKTtcbiAgICAoIFwiLWltcGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWwgZmlsZVwiICk7XG4gICAgKFwiLS1pbXBsXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksIFwiPGZpbGU+IFNhbWUgYXMgLWltcGxcIik7XG4gICAgKCBcIi1pbnRmXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1saSBmaWxlXCIgKTtcbiAgICAoXCItLWludGZcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW50ZlwiKTtcbiAgICAoIFwiLWRlYnVnLWF0dHJpYnV0ZS1kcm9wXCIsXG4gICAgICBBcmcuU2V0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wLFxuICAgICAgXCIgRGVidWcgYXR0cmlidXRlIGRyb3BwaW5nXCIgKTtcbiAgICAoIFwiLXByaW50LXRyYW5zZm9ybWF0aW9uc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyxcbiAgICAgIFwiIFByaW50IGxpbmtlZC1pbiBjb2RlIHRyYW5zZm9ybWF0aW9ucywgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGFwcGxpZWRcIiApO1xuICAgICggXCItcHJpbnQtcGFzc2VzXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfcGFzc2VzLFxuICAgICAgXCIgUHJpbnQgdGhlIGFjdHVhbCBwYXNzZXMgb3ZlciB0aGUgd2hvbGUgQVNUIGluIHRoZSBvcmRlciB0aGV5IGFyZSBcXFxuICAgICAgIGFwcGxpZWRcIiApO1xuICAgICggXCItaXRlLWNoZWNrXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiV2FybmluZzogdGhlIC1pdGUtY2hlY2sgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBoYXMgbm8gZWZmZWN0LlxcbiUhXCI7XG4gICAgICAgICAgRXh0cmFfd2FybmluZ3MuY2FyZV9hYm91dF9pdGVfYnJhbmNoIDo9IHRydWUpLFxuICAgICAgXCIgKG5vIGVmZmVjdCAtLSBrZXB0IGZvciBjb21wYXRpYmlsaXR5KVwiICk7XG4gICAgKCBcIi1wcFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gcHJlcHJvY2Vzc29yIDo9IFNvbWUgcyksXG4gICAgICBcIjxjb21tYW5kPiAgUGlwZSBzb3VyY2VzIHRocm91Z2ggcHJlcHJvY2Vzc29yIDxjb21tYW5kPiAoaW5jb21wYXRpYmxlIFxcXG4gICAgICAgd2l0aCAtYXMtcHB4KVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzKSksXG4gICAgICBcIiAoV0lQKSBQcmV0dHkgcHJpbnQgdGhlIG91dHB1dCB1c2luZyBhIG1peCBvZiB0aGUgaW5wdXQgc291cmNlIGFuZCB0aGUgXFxcbiAgICAgICBnZW5lcmF0ZWQgY29kZVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpKSxcbiAgICAgIFwiIChXSVApIHNhbWUgYXMgLXJlY29uY2lsZSBidXQgdXNlcyBjb21tZW50cyB0byBlbmNsb3NlIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgRG9uJ3QgdXNlIGNvbG9ycyB3aGVuIHByaW50aW5nIGVycm9yc1wiKTtcbiAgICAoIFwiLWRpZmYtY21kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgIFwiIERpZmYgY29tbWFuZCB3aGVuIHVzaW5nIGNvZGUgZXhwZWN0YXRpb25zICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKTtcbiAgICAoIFwiLXByZXR0eVwiLFxuICAgICAgQXJnLlNldCBwcmV0dHksXG4gICAgICBcIiBJbnN0cnVjdCBjb2RlIGdlbmVyYXRvcnMgdG8gaW1wcm92ZSB0aGUgcHJldHRpbmVzcyBvZiB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLXN0eWxlclwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzdHlsZXIgOj0gU29tZSBzKSwgXCIgQ29kZSBzdHlsZXJcIik7XG4gICAgKCBcIi1vdXRwdXQtbWV0YWRhdGFcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCJGSUxFIFdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgbWV0YWRhdGFcIiApO1xuICAgICggXCItY29ycmVjdGVkLXN1ZmZpeFwiLFxuICAgICAgQXJnLlNldF9zdHJpbmcgY29ycmVjdGVkX3N1ZmZpeCxcbiAgICAgIFwiU1VGRklYIFN1ZmZpeCB0byBhcHBlbmQgdG8gY29ycmVjdGVkIGZpbGVzXCIgKTtcbiAgXVxuXG5sZXQgZ2V0X2FyZ3MgPyhzdGFuZGFsb25lX2FyZ3MgPSBzdGFuZGFsb25lX2FyZ3MpICgpID1cbiAgc3RhbmRhbG9uZV9hcmdzIEAgTGlzdC5yZXYgIWFyZ3NcblxubGV0IHN0YW5kYWxvbmVfbWFpbiAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIFs8ZmlsZXM+XVwiIGV4ZV9uYW1lIGluXG4gIGxldCBhcmdzID0gZ2V0X2FyZ3MgKCkgaW5cbiAgQXJnLnBhcnNlIChBcmcuYWxpZ24gYXJncykgc2V0X2lucHV0IHVzYWdlO1xuICBpbnRlcnByZXRfbWFzayAoKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIHRoZW4gKFxuICAgIHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfcGFzc2VzIHRoZW4gKFxuICAgIHByaW50X3Bhc3NlcyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzOiBubyBpbnB1dCBmaWxlIGdpdmVuXFxuJSFcIiBleGVfbmFtZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBTb21lIGZuIC0+XG4gICAgICBsZXQga2luZCA9XG4gICAgICAgIG1hdGNoICFraW5kIHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggS2luZC5vZl9maWxlbmFtZSBmbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgXCIlczogZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJyVzJywgdXNlIC1pbXBsIG9yIC1pbnRmLlxcblwiXG4gICAgICAgICAgICAgICAgICBleGVfbmFtZSBmbjtcbiAgICAgICAgICAgICAgICBTdGRsaWIuZXhpdCAyKVxuICAgICAgaW5cbiAgICAgIGxldCBpbnB1dF9uYW1lLCByZWxvY2F0ZSA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aCBOb25lIC0+IChmbiwgZmFsc2UpIHwgU29tZSBmbiAtPiAoZm4sIHRydWUpXG4gICAgICBpblxuICAgICAgcHJvY2Vzc19maWxlIGtpbmQgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZTohb3V0cHV0X21vZGVcbiAgICAgICAgfm91dHB1dDohb3V0cHV0IH5lbWJlZF9lcnJvcnM6IWVtYmVkX2Vycm9yc1xuXG5sZXQgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuID1cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBpbnB1dF9mbiBpblxuICBsZXQgYXN0ID1cbiAgICB0cnlcbiAgICAgIGxldCBhc3QgPSBleHRyYWN0X2Nvb2tpZXMgYXN0IGluXG4gICAgICBsZXQgdG9vbF9uYW1lID0gQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkgaW5cbiAgICAgIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gICAgICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gICAgICBwcm9jZXNzX2FzdCBhc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgfmVtYmVkX2Vycm9yczp0cnVlXG4gICAgd2l0aCBleG4gLT4gZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQ6KEludGZfb3JfaW1wbC5raW5kIGFzdClcbiAgaW5cbiAgd2l0aF9vdXRwdXQgKFNvbWUgb3V0cHV0X2ZuKSB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgQXN0X2lvLndyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuXG5sZXQgcGFyc2VfaW5wdXQgcGFzc2VkX2luX2FyZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2cgPVxuICB0cnlcbiAgICBBcmcucGFyc2VfYXJndiBwYXNzZWRfaW5fYXJncyAoQXJnLmFsaWduIHZhbGlkX2FyZ3MpXG4gICAgICAoZnVuIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJhbm9ueW1vdXMgYXJndW1lbnRzIG5vdCBhY2NlcHRlZFwiKSlcbiAgICAgIGluY29ycmVjdF9pbnB1dF9tc2dcbiAgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IEFyZy5IZWxwIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDBcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBpbnB1dCA9XG4gIGxldCB2YWxpZF9hcmdzID0gZ2V0X2FyZ3MgfnN0YW5kYWxvbmVfYXJncyAoKSBpblxuICBtYXRjaCBMaXN0LnJldiBAQCBBcnJheS50b19saXN0IEBAIGlucHV0IHdpdGhcbiAgfCBvdXRwdXRfZm4gOjogaW5wdXRfZm4gOjogZmxhZ3NfYW5kX3Byb2dfbmFtZVxuICAgIHdoZW4gTGlzdC5sZW5ndGggZmxhZ3NfYW5kX3Byb2dfbmFtZSA+IDAgLT5cbiAgICAgIGxldCBwcm9nX25hbWVfYW5kX2ZsYWdzID0gTGlzdC5yZXYgZmxhZ3NfYW5kX3Byb2dfbmFtZSB8PiBBcnJheS5vZl9saXN0IGluXG4gICAgICBwYXJzZV9pbnB1dCBwcm9nX25hbWVfYW5kX2ZsYWdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgaW50ZXJwcmV0X21hc2sgKCk7XG4gICAgICByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm47XG4gICAgICBTdGRsaWIuZXhpdCAwXG4gIHwgWyBoZWxwOyBfIF0gd2hlbiBTdHJpbmcuZXF1YWwgaGVscCBcIi1oZWxwXCIgfHwgU3RyaW5nLmVxdWFsIGhlbHAgXCItLWhlbHBcIiAtPlxuICAgICAgcGFyc2VfaW5wdXQgaW5wdXQgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgfCBfIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIlVzYWdlOiAlc1xcbiUhXCIgdXNhZ2U7XG4gICAgICBTdGRsaWIuZXhpdCAyXG5cbmxldCBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgbGV0IHVzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzIC1hcy1wcHggW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lXG4gIGluXG4gIGxldCBhcmd2ID0gQXJyYXkubWFrZSAobiAtIDEpIFwiXCIgaW5cbiAgYXJndi4oMCkgPC0gU3RkbGliLlN5cy5hcmd2LigwKTtcbiAgZm9yIGkgPSAxIHRvIG4gLSAyIGRvXG4gICAgYXJndi4oaSkgPC0gU3RkbGliLlN5cy5hcmd2LihpICsgMSlcbiAgZG9uZTtcbiAgbGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gICAgTGlzdC5tYXAgc3RhbmRhbG9uZV9hcmdzIH5mOihmdW4gKGFyZywgc3BlYywgX2RvYykgLT5cbiAgICAgICAgKGFyZywgc3BlYywgXCIgVW51c2VkIHdpdGggLWFzLXBweFwiKSlcbiAgaW5cbiAgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGFyZ3ZcblxubGV0IHN0YW5kYWxvbmUgKCkgPVxuICBBc3RsaWIuaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCk7XG4gIHRyeVxuICAgIGlmXG4gICAgICBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2ID49IDJcbiAgICAgICYmXG4gICAgICBtYXRjaCBTdGRsaWIuU3lzLmFyZ3YuKDEpIHdpdGhcbiAgICAgIHwgXCItYXMtcHB4XCIgfCBcIi0tYXMtcHB4XCIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKClcbiAgICBlbHNlIHN0YW5kYWxvbmVfbWFpbiAoKTtcbiAgICBTdGRsaWIuZXhpdCAwXG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZSBpblxuICBsZXQgaW5wdXQgPSBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgdHJ5IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzOltdIH51c2FnZSBpbnB1dFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBwcmV0dHkgKCkgPSAhcHJldHR5XG5cbmxldCBlbmFibGVfY2hlY2tzICgpID1cbiAgKCogV2UgZG8gbm90IGVuYWJsZSB0aGUgbG9jYXRpb25zIGNoZWNrIGhlcmUsIHdlIGN1cnJlbnRseSByZXF1aXJlIHRoYXQgb25lXG4gICAgIHRvIGJlIHNwZWNpZmljYWxseSBlbmFibGVkLiAqKVxuICBwZXJmb3JtX2NoZWNrcyA6PSB0cnVlO1xuICBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIDo9IHRydWVcblxubGV0IGVuYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IHRydWVcbmxldCBkaXNhYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gZmFsc2VcbmxldCBtYXBfc3RydWN0dXJlIHN0ID0gbWFwX3N0cnVjdHVyZSBzdFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG5sZXQgdW5kZXJzY29yZV9iaW5kaW5nIGV4cCA9XG4gIGxldCBsb2MgPSBleHAucGV4cF9sb2MgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpIH5leHByOmV4cFxuXG5sZXQgdmFyc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvbmdpZGVudC50IExvY2F0ZWQudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdHQgYWNjID1cbiAgICAgIG1hdGNoIHBhdHQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF92YXIgdiAtPiBMb2NhdGVkLm1hcCAoZnVuIHZhciAtPiBMb25naWRlbnQuTGlkZW50IHZhcikgdiA6OiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdHQgYWNjXG4gIGVuZFxuXG4oKiBGb3IgZXZlcnkgW2xldCB4ID0gLi4uXSBzdHJ1Y3R1cmUgaXRlbSwgYWRkIGEgW2xldCBfID0geF0gKilcbmxldCBhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZSBzdCA9XG4gICAgICBsZXQgcmVjIGxvb3Agc3QgYWNjID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgICB8ICh7IHBzdHJfZGVzYyA9IFBzdHJfdmFsdWUgKF8sIHZicyk7IHBzdHJfbG9jID0gbG9jIH0gYXMgaXRlbSkgOjogcmVzdFxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgdmFycyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IHZicyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB2YiAtPlxuICAgICAgICAgICAgICAgICAgdmFyc19vZiNwYXR0ZXJuIHZiLnB2Yl9wYXQgYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpZ24gPVxuICAgICAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIHZhcnMgfmY6KGZ1biB2IC0+XG4gICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlX2JpbmRpbmcgKHBleHBfaWRlbnQgfmxvYzp2LmxvYyB2KSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbG9vcCByZXN0IChpZ24gQCAoaXRlbSA6OiBhY2MpKVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiBsb29wIHJlc3QgKGl0ZW0gOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKHN1cGVyI3N0cnVjdHVyZSBzdCkgW11cbiAgZW5kXG5cbmxldCBiaW5kc19tb2R1bGVfbmFtZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtib29sXSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBtYiBhY2MgPVxuICAgICAgbWF0Y2ggbWIucG1iX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIG1iIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjID1cbiAgICAgIG1hdGNoIG1kLnBtZF9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24gbXMgXyA9XG4gICAgICBtYXRjaCBtcy5wbXNfbmFtZS50eHQgd2l0aCAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuXG4gICAgbWV0aG9kISBmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgfCBOYW1lZCAobmFtZSwgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdW5wYWNrIG5hbWUgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGggU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZSB8IE5vbmUgLT4gYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGV4cHIgYWNjID1cbiAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIF8sIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjY1xuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxuKCogW2RvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGVdIC0tIElmIHRydWUsIGdlbmVyYXRlZCBjb2RlXG4gICBjb250YWlucyBjb21waWxlciBhdHRyaWJ1dGUgdG8gZGlzYWJsZSB1bnVzZWQgd2FybmluZ3MsIGluc3RlYWQgb2ZcbiAgIGluc2VydGluZyBbbGV0IF8gPSAuLi4gXS4gKilcbmxldCBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3czMl9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIGxldCBjb252X3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiY29kZVwiOyBcImF0dHJpYnV0ZVwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJjb2RlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSBmYWxzZVxuICAgICAgICB8IFwiYXR0cmlidXRlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgSG93IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmcta2VlcC13MzJcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LXczMlwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCJcblxubGV0IGtlZXBfdzMyX2ltcGwgKCkgPSAha2VlcF93MzJfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93MzJfaW50ZiAoKSA9ICFrZWVwX3czMl9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93NjBfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93NjBfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93NjBfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13NjBcIiBrZWVwX3c2MF9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyA2MCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCJcblxubGV0IGtlZXBfdzYwX2ltcGwgKCkgPSAha2VlcF93NjBfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW50ZiAoKSA9ICFrZWVwX3c2MF9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyA9IHJlZiBPcHRpb25zLmRlZmF1bHRfYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItdW51c2VkLWNvZGUtd2FybmluZ3NcIlxuICAgIChPcHRpb25zLkZvcmNhYmxlX2Jvb2wuYXJnIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzKVxuICAgIH5kb2M6XCIgQWxsb3cgcHB4IGRlcml2ZXJzIHRvIGVuYWJsZSB1bnVzZWQgY29kZSB3YXJuaW5ncyAoZGVmYXVsdDogZmFsc2UpXCJcblxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIH5wcHhfYWxsb3dzX3VudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgbWF0Y2ggIWFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIHdpdGhcbiAgfCBGb3JjZSAtPiB0cnVlXG4gIHwgRmFsc2UgLT4gZmFsc2VcbiAgfCBUcnVlIC0+IHBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubGV0IGFsbG93X3VudXNlZF90eXBlX3dhcm5pbmdzID0gcmVmIE9wdGlvbnMuZGVmYXVsdF9hbGxvd191bnVzZWRfdHlwZV93YXJuaW5nc1xuXG5sZXQgKCkgPVxuICBEcml2ZXIuYWRkX2FyZyBcIi11bnVzZWQtdHlwZS13YXJuaW5nc1wiXG4gICAgKE9wdGlvbnMuRm9yY2FibGVfYm9vbC5hcmcgYWxsb3dfdW51c2VkX3R5cGVfd2FybmluZ3MpXG4gICAgfmRvYzpcbiAgICAgIFwiIEFsbG93IHVudXNlZCB0eXBlIHdhcm5pbmdzIGZvciB0eXBlcyB3aXRoIFtAQGRlcml2aW5nIC4uLl0gKGRlZmF1bHQ6IFxcXG4gICAgICAgZmFsc2UpXCJcblxubGV0IGFsbG93X3VudXNlZF90eXBlX3dhcm5pbmdzIH5wcHhfYWxsb3dzX3VudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgbWF0Y2ggIWFsbG93X3VudXNlZF90eXBlX3dhcm5pbmdzIHdpdGhcbiAgfCBGb3JjZSAtPiB0cnVlXG4gIHwgRmFsc2UgLT4gZmFsc2VcbiAgfCBUcnVlIC0+IHBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubW9kdWxlIEFyZ3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgQXN0X3BhdHRlcm4gOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQXN0X3BhdHRlcm5cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50KVxuXG4gIHR5cGUgJ2EgcGFyYW0gPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBwYXR0ZXJuIDogKGV4cHJlc3Npb24sICdhKSBBc3RfcGF0dGVybi5QYWNrZWQudDtcbiAgICBkZWZhdWx0IDogJ2E7XG4gIH1cblxuICBsZXQgYXJnIG5hbWUgcGF0dGVybiA9XG4gICAge1xuICAgICAgbmFtZTtcbiAgICAgIGRlZmF1bHQgPSBOb25lO1xuICAgICAgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiAoZnVuIHggLT4gU29tZSB4KTtcbiAgICB9XG5cbiAgbGV0IGZsYWcgbmFtZSA9XG4gICAgbGV0IHBhdHRlcm4gPSBwZXhwX2lkZW50IChsaWRlbnQgKHN0cmluZyBuYW1lKSkgaW5cbiAgICB7IG5hbWU7IGRlZmF1bHQgPSBmYWxzZTsgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiB0cnVlIH1cblxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IE5pbCA6ICgnbSwgJ20pIHRcbiAgICB8IENvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIHQgKiAnYSBwYXJhbSAtPiAoJ20xLCAnbTIpIHRcblxuICBsZXQgZW1wdHkgPSBOaWxcbiAgbGV0ICggKz4gKSBhIGIgPSBDb25zIChhLCBiKVxuXG4gIGxldCByZWMgbmFtZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gc3RyaW5nIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh0LCBwKSAtPiBwLm5hbWUgOjogbmFtZXMgdFxuXG4gIG1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgKF8sIF8pIGluc3RhbmNlID1cbiAgICAgIHwgSV9uaWwgOiAoJ20sICdtKSBpbnN0YW5jZVxuICAgICAgfCBJX2NvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIGluc3RhbmNlICogJ2EgLT4gKCdtMSwgJ20yKSBpbnN0YW5jZVxuXG4gICAgbGV0IHJlYyBjcmVhdGUgOlxuICAgICAgICB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QgLT4gKGEsIGIpIGluc3RhbmNlID1cbiAgICAgZnVuIHNwZWMgYXJncyAtPlxuICAgICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgICB8IE5pbCAtPiBJX25pbFxuICAgICAgfCBDb25zICh0LCBwKSAtPlxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jX29wdCBwLm5hbWUgYXJncyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcC5kZWZhdWx0XG4gICAgICAgICAgICB8IFNvbWUgZXhwciAtPiBBc3RfcGF0dGVybi5QYWNrZWQucGFyc2UgcC5wYXR0ZXJuIGV4cHIucGV4cF9sb2MgZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgSV9jb25zIChjcmVhdGUgdCBhcmdzLCB2YWx1ZSlcblxuICAgIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYi4gKGEsIGIpIGluc3RhbmNlIC0+IGEgLT4gYiA9XG4gICAgIGZ1biB0IGYgLT4gbWF0Y2ggdCB3aXRoIElfbmlsIC0+IGYgfCBJX2NvbnMgKHQsIHgpIC0+IGFwcGx5IHQgZiB4XG4gIGVuZFxuXG4gIGxldCBhcHBseSB0IGFyZ3MgZiA9IEluc3RhbmNlLmFwcGx5IChJbnN0YW5jZS5jcmVhdGUgdCBhcmdzKSBmXG5lbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBHZW5lcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGlnbm9yZSAoXyA6IHQpID0gKClcblxudHlwZSBwYXJzZWRfYXJncyA9XG4gIHwgQXJncyBvZiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdFxuICB8IFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxudHlwZSAnaXRlbSBkZXJpdmVkX2NvZGUgPSB7IGl0ZW1zIDogJ2l0ZW0gbGlzdDsgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sIH1cblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlIGRlcml2ZXIgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFQgOiB7XG4gICAgICAgIHNwZWMgOiAoJ2MsICdhKSBBcmdzLnQ7XG4gICAgICAgIGdlbiA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjO1xuICAgICAgICBhcmdfbmFtZXMgOiBTdHJpbmcuU2V0LnQ7XG4gICAgICAgIGRlcHMgOiBkZXJpdmVyIGxpc3Q7XG4gICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbDtcbiAgICAgIH1cbiAgICAgICAgLT4gKCdhLCAnYikgdFxuXG4gIGxldCBkZXBzIChUIHQpID0gdC5kZXBzXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgP2F0dHJpYnV0ZXM6KF8gPSBbXSkgPyhkZXBzID0gW10pID8odW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSlcbiAgICAgICAgc3BlYyBnZW4gPVxuICAgICAgbGV0IGFyZ19uYW1lcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoQXJncy5uYW1lcyBzcGVjKSBpblxuICAgICAgVCB7IHNwZWM7IGdlbjsgYXJnX25hbWVzOyBkZXBzOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9XG5cbiAgICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG4gIGVuZFxuXG4gIGxldCBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjIGdlbiA9XG4gICAgVjIubWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlY1xuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIud2l0aF9sb2NfYW5kX3BhdGggZ2VuKVxuXG4gIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG5cbiAgbGV0IG1lcmdlX2FjY2VwdGVkX2FyZ3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBUIHQgOjogcmVzdCAtPiBsb29wIChTdHJpbmcuU2V0LnVuaW9uIGFjYyB0LmFyZ19uYW1lcykgcmVzdFxuICAgIGluXG4gICAgbG9vcCBTdHJpbmcuU2V0LmVtcHR5IGxcblxuICBsZXQgY2hlY2tfYXJndW1lbnRzIG5hbWUgZ2VuZXJhdG9ycyAoYXJncyA6IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0KSA9XG4gICAgbGV0IGVtcHR5X2xhYmVsX2Vycm9yID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBsYWJlbCB0aGVuXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yIGFyZ3VtZW50cyBtdXN0IGJlIGxhYmVsbGVkXCIpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciA9XG4gICAgICBPcHRpb24ubWFwXG4gICAgICAgIChMaXN0LmZpbmRfYV9kdXAgYXJncyB+Y29tcGFyZTooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbiAgICAgICAgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBhcmd1bWVudCBsYWJlbGxlZCAnJXMnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2VcIlxuICAgICAgICAgICAgbGFiZWwpXG4gICAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjY2VwdGVkX2FyZ3MgPSBtZXJnZV9hY2NlcHRlZF9hcmdzIGdlbmVyYXRvcnMgaW5cbiAgICBsZXQgdW5hY2NlcHRlZF9hcmd1bWVudCA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5TZXQubWVtIGxhYmVsIGFjY2VwdGVkX2FyZ3MpIHRoZW5cbiAgICAgICAgICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU3BlbGxjaGVjay5zcGVsbGNoZWNrIChTdHJpbmcuU2V0LmVsZW1lbnRzIGFjY2VwdGVkX2FyZ3MpIGxhYmVsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciAnJXMnIGRvZXNuJ3QgYWNjZXB0IGFyZ3VtZW50IFxcXG4gICAgICAgICAgICAgICAgICAnJXMnJXNcIlxuICAgICAgICAgICAgICAgICBuYW1lIGxhYmVsIHNwZWxsY2hlY2tfbXNnKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBlcnJvcnMgPVxuICAgICAgZW1wdHlfbGFiZWxfZXJyb3IgQCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgQCB1bmFjY2VwdGVkX2FyZ3VtZW50XG4gICAgaW5cbiAgICBpZiBMaXN0Lmxlbmd0aCBlcnJvcnMgPSAwIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvcnNcblxuICBsZXQgYXBwbHkgKFQgdCkgfm5hbWU6XyB+Y3R4dCB4IGFyZ3MgPSBBcmdzLmFwcGx5IHQuc3BlYyBhcmdzICh0LmdlbiB+Y3R4dCB4KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgKG5hbWUsIGdlbmVyYXRvcnMsIGFyZ3MpID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBjaGVja19hcmd1bWVudHMgbmFtZS50eHQgZ2VuZXJhdG9ycyBhcmdzID4+fCBmdW4gKCkgLT5cbiAgICBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIGl0ZW1zID0gYXBwbHkgKFQgdCkgfm5hbWU6bmFtZS50eHQgfmN0eHQgZW50cnkgYXJncztcbiAgICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA9IHQudW51c2VkX2NvZGVfd2FybmluZ3M7XG4gICAgICAgIH0pXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSBnZW5lcmF0b3JzIGV4dF90b19pdGVtID1cbiAgICBsZXQgbCA9IExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSkgaW5cbiAgICBsZXQgbDEsIGxlcnIgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvbiBPayBlIC0+IExlZnQgZSB8IEVycm9yIGUgLT4gUmlnaHQgZSkgbFxuICAgIGluXG4gICAgbGV0IGxlcnIgPVxuICAgICAgTGlzdC5jb25jYXQgbGVyclxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBlcnIgLT4gZXh0X3RvX2l0ZW0gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICBpblxuICAgIExpc3QuY29uY2F0IGwxIEAgWyB7IGl0ZW1zID0gbGVycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9IF1cbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICBtb2R1bGUgQWN0dWFsX2Rlcml2ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgc3RyX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2V4dCA6IChzaWduYXR1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGV4dGVuc2lvbiA6XG4gICAgICAgIChsb2M6TG9jYXRpb24udCAtPiBwYXRoOnN0cmluZyAtPiBjb3JlX3R5cGUgLT4gZXhwcmVzc2lvbikgb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEFsaWFzID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3RyX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSBraW5kID0gU3RyIHwgU2lnXG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAga2luZCA6IGtpbmQ7XG4gICAgICBnZXQgOiBBY3R1YWxfZGVyaXZlci50IC0+ICgnYSwgJ2IpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGdldF9zZXQgOiBBbGlhcy50IC0+IHN0cmluZyBsaXN0O1xuICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcIm1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG4gIGVuZFxuXG4gIHR5cGUgdCA9IEFjdHVhbF9kZXJpdmVyIG9mIEFjdHVhbF9kZXJpdmVyLnQgfCBBbGlhcyBvZiBBbGlhcy50XG4gIHR5cGUgUHB4X2Rlcml2ZXJzLmRlcml2ZXIgKz0gVCBvZiB0XG5cbiAgbGV0IGRlcml2ZXJzICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKFBweF9kZXJpdmVycy5kZXJpdmVycyAoKSkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIFQgdCAtPiBTb21lIChuYW1lLCB0KVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbiAgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBsZXQgcmVjIGxvb3AgbmFtZSBjb2xsZWN0ZWQgPVxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHMgY29sbGVjdGVkIH5mOihmdW4gKGQgOiBBY3R1YWxfZGVyaXZlci50KSAtPlxuICAgICAgICAgICAgU3RyaW5nLmVxdWFsIGQubmFtZSBuYW1lKVxuICAgICAgdGhlbiBjb2xsZWN0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIChUIChBY3R1YWxfZGVyaXZlciBkcnYpKSAtPiBkcnYgOjogY29sbGVjdGVkXG4gICAgICAgIHwgU29tZSAoVCAoQWxpYXMgYWxpYXMpKSAtPlxuICAgICAgICAgICAgbGV0IHNldCA9IGZpZWxkLmdldF9zZXQgYWxpYXMgaW5cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBzZXQgfmluaXQ6Y29sbGVjdGVkIH5mOmxvb3BcbiAgICAgICAgfCBfIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBuYW1lIFtdKVxuXG4gIGxldCByZXNvbHZlX2ludGVybmFsIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBMaXN0Lm1hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgbmFtZSkgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgbWF0Y2ggZmllbGQuZ2V0IGRydiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgICAgICB8IFNvbWUgZyAtPiAoZHJ2Lm5hbWUsIGcpKVxuXG4gIGxldCBzdXBwb3J0ZWRfZm9yIGZpZWxkID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZGVyaXZlcnMgKCkpIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIF8pIC0+XG4gICAgICAgIG1hdGNoIHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuU2V0LmFkZCBuYW1lIGFjY1xuICAgICAgICB8IGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIF8gLT4gYWNjKVxuICAgIHw+IFN0cmluZy5TZXQuZWxlbWVudHNcblxuICBsZXQgbm90X3N1cHBvcnRlZCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgPyhzcGVsbGNoZWNrID0gdHJ1ZSkgbmFtZSA9XG4gICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgIGlmIHNwZWxsY2hlY2sgdGhlblxuICAgICAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKHN1cHBvcnRlZF9mb3IgZmllbGQpIG5hbWUudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICBlbHNlIFwiXCJcbiAgICBpblxuICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6ICclcycgaXMgbm90IGEgc3VwcG9ydGVkICVzIGRlcml2aW5nIGdlbmVyYXRvciVzXCJcbiAgICAgIG5hbWUudHh0IGZpZWxkLm5hbWUgc3BlbGxjaGVja19tc2dcblxuICBsZXQgcmVzb2x2ZSBmaWVsZCBuYW1lID1cbiAgICB0cnkgT2sgKHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZS50eHQpXG4gICAgd2l0aCBOb3Rfc3VwcG9ydGVkIG5hbWUnIC0+XG4gICAgICBFcnJvciAobm90X3N1cHBvcnRlZCBmaWVsZCB+c3BlbGxjaGVjazooU3RyaW5nLmVxdWFsIG5hbWUudHh0IG5hbWUnKSBuYW1lKVxuXG4gIGxldCByZXNvbHZlX2FsbCBmaWVsZCBkZXJpdmVycyA9XG4gICAgbGV0IGRlcml2ZXJzX2FuZF9hcmdzLCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwXG4gICAgICAgIChmdW4gKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVpdGhlci5SaWdodCAobm90X3N1cHBvcnRlZCBmaWVsZCBuYW1lKVxuICAgICAgICAgIHwgU29tZSAoVCBfKSAtPiAoXG4gICAgICAgICAgICAgICgqIEl0J3Mgb25lIG9mIG91cnMsIHBhcnNlIHRoZSBhcmd1bWVudHMgbm93LiBXZSBjYW4ndCBkbyBpdCBiZWZvcmUgc2luY2VcbiAgICAgICAgICAgICAgICAgcHB4X2Rlcml2aW5nIHVzZXMgYSBkaWZmZXJlbnQgc3ludGF4IGZvciBhcmd1bWVudHMuICopXG4gICAgICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IEFyZ3MgbCAtPiBFaXRoZXIuTGVmdCAoU29tZSAobmFtZSwgbCkpXG4gICAgICAgICAgICAgIHwgVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPlxuICAgICAgICAgICAgICAgICAgRWl0aGVyLlJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2MgXCJQcHhsaWIuRGVyaXZpbmc6ICVzXCIgbXNnKSlcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAoKiBJdCdzIG5vdCBvbmUgb2Ygb3VycywgaWdub3JlIGl0LiAqKVxuICAgICAgICAgICAgICBFaXRoZXIuTGVmdCBOb25lKVxuICAgICAgICBkZXJpdmVyc1xuICAgICAgfD4gZnVuIChsMSwgbDIpIC0+IChMaXN0LmZpbHRlcl9vcHQgbDEsIGwyKVxuICAgIGluXG4gICAgKCogU2V0IG9mIGFjdHVhbCBkZXJpdmVyIG5hbWVzICopXG4gICAgbGV0IHNlZW4gPSBIYXNodGJsLmNyZWF0ZSAxNiBpblxuICAgIGxldCByZXN1bHQsIGRlcF9lcnJvcnMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmluaXQ6KFtdLCBbXSkgZGVyaXZlcnNfYW5kX2FyZ3NcbiAgICAgICAgfmY6KGZ1biAocmVzdWx0LCBlcnJvcnMpIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIHJlc29sdmUgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+IChyZXN1bHQsIGVycm9ycyBAIFsgZSBdKVxuICAgICAgICAgIHwgT2sgbmFtZWRfZ2VuZXJhdG9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCBuYW1lZF9nZW5lcmF0b3JzXG4gICAgICAgICAgICAgICAgICB+ZjooZnVuIChhY3R1YWxfZGVyaXZlcl9uYW1lLCBnZW4pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBkdXBfZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zLmZhaWxfb25fZHVwbGljYXRlX2Rlcml2ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBIYXNodGJsLm1lbSBzZWVuIGFjdHVhbF9kZXJpdmVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBhcHBlYXJzIHR3aWNlXCIgYWN0dWFsX2Rlcml2ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIChHZW5lcmF0b3IuZGVwcyBnZW4pIH5mOihmdW4gZGVwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgZGVwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwX25hbWUgPSBkcnYubmFtZSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChIYXNodGJsLm1lbSBzZWVuIGRlcF9uYW1lKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGlzIG5lZWRlZCBmb3IgJXMsIHlvdSBuZWVkIHRvIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBpdCBiZWZvcmUgaW4gdGhlIGxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcF9uYW1lIG5hbWUudHh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgc2VlbiB+a2V5OmFjdHVhbF9kZXJpdmVyX25hbWUgfmRhdGE6KCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cF9lcnJvciBAIGxfZXJyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHJlc3VsdCBAIFsgKG5hbWUsIExpc3QubWFwIG5hbWVkX2dlbmVyYXRvcnMgfmY6c25kLCBhcmdzKSBdLFxuICAgICAgICAgICAgICAgIGVycm9ycyBAIGxfZXJyICkpXG4gICAgaW5cbiAgICAocmVzdWx0LCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgQCBkZXBfZXJyb3JzKVxuXG4gIGxldCBhZGQgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvbiA/c3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb24gP3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/ZXh0ZW5zaW9uIG5hbWUgPVxuICAgIGxldCBhY3R1YWxfZGVyaXZlciA6IEFjdHVhbF9kZXJpdmVyLnQgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBleHRlbnNpb247XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWN0dWFsX2Rlcml2ZXIgYWN0dWFsX2Rlcml2ZXIpKTtcbiAgICAobWF0Y2ggZXh0ZW5zaW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgZXh0ZW5zaW9uID1cbiAgICAgICAgICBFeHRlbnNpb24uZGVjbGFyZSBuYW1lIEV4cHJlc3Npb24gQXN0X3BhdHRlcm4uKHB0eXAgX18pIGZcbiAgICAgICAgaW5cbiAgICAgICAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgKFwiUHB4bGliLkRlcml2aW5nLlwiIF4gbmFtZSlcbiAgICAgICAgICB+cnVsZXM6WyBDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gZXh0ZW5zaW9uIF0pO1xuICAgIG5hbWVcblxuICBsZXQgYWRkX2FsaWFzIG5hbWUgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvblxuICAgICAgP3N0cl9tb2R1bGVfdHlwZV9kZWNsID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb25cbiAgICAgID9zaWdfbW9kdWxlX3R5cGVfZGVjbCBzZXQgPVxuICAgIGxldCBhbGlhcyA6IEFsaWFzLnQgPVxuICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIE5vbmUgLT4gc2V0IHwgU29tZSBzZXQgLT4gc2V0IGluXG4gICAgICB7XG4gICAgICAgIHN0cl90eXBlX2RlY2wgPSBnZXQgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0ID0gZ2V0IHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbiA9IGdldCBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbCA9IGdldCBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQgPSBnZXQgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uID0gZ2V0IHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFsaWFzIGFsaWFzKSk7XG4gICAgbmFtZVxuZW5kXG5cbmxldCBhZGQgPSBEZXJpdmVyLmFkZFxubGV0IGFkZF9hbGlhcyA9IERlcml2ZXIuYWRkX2FsaWFzXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgW0BAZGVyaXZpbmcgXSBwYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGludmFsaWRfd2l0aCB+bG9jID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJpbnZhbGlkIFtAQGRlcml2aW5nIF0gYXR0cmlidXRlIHN5bnRheFwiXG5cbmxldCBnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQgPVxuICBtYXRjaCBMb25naWRlbnQuZmxhdHRlbl9leG4gaWQgd2l0aFxuICB8IGwgLT4geyBsb2M7IHR4dCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBsIH1cbiAgfCBleGNlcHRpb24gXyAtPiBpbnZhbGlkX3dpdGggfmxvY1xuXG5leGNlcHRpb24gVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgcGFyc2VfYXJndW1lbnRzIGwgPVxuICB0cnlcbiAgICBBcmdzXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IFsgKE5vbGFiZWwsIGUpIF0gLT4gKFxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIC0+XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChpZCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgcyAtPiBzXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXggKGlkLmxvYywgXCJzaW1wbGUgaWRlbnRpZmllciBleHBlY3RlZFwiKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAobmFtZSwgZXhwcikpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAoIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgICAgICBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBvciByZWNvcmQgZXhwZWN0ZWRcIiApKSlcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIExpc3QubWFwIGwgfmY6KGZ1biAobGFiZWwsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgICAgICAgfCBMYWJlbGxlZCBzIC0+IChzLCBleHByKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgICAgIChleHByLnBleHBfbG9jLCBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBleHBlY3RlZFwiKSkpKVxuICB3aXRoIFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT4gVW5rbm93bl9zeW50YXggKGxvYywgbXNnKVxuXG5sZXQgbWtfZGVyaXZpbmdfYXR0ciBjb250ZXh0IH5wcmVmaXggfnN1ZmZpeCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgKHByZWZpeCBeIFwiZGVyaXZpbmdcIiBeIHN1ZmZpeClcbiAgICBjb250ZXh0XG4gICAgQXN0X3BhdHRlcm4uKFxuICAgICAgbGV0IGdlbmVyYXRvcl9uYW1lICgpID1cbiAgICAgICAgbWFwJyAocGV4cF9pZGVudCBfXykgfmY6KGZ1biBsb2MgZiBpZCAtPlxuICAgICAgICAgICAgZiAoZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9yICgpID1cbiAgICAgICAgbWFwIChnZW5lcmF0b3JfbmFtZSAoKSkgfmY6KGZ1biBmIHggLT4gZiAoeCwgQXJncyBbXSkpXG4gICAgICAgIHx8fCBwYWNrMlxuICAgICAgICAgICAgICAocGV4cF9hcHBseSAoZ2VuZXJhdG9yX25hbWUgKCkpXG4gICAgICAgICAgICAgICAgIChtYXAxIChtYW55IF9fKSB+ZjpwYXJzZV9hcmd1bWVudHMpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3JzID1cbiAgICAgICAgcGV4cF90dXBsZSAobWFueSAoZ2VuZXJhdG9yICgpKSlcbiAgICAgICAgfHx8IG1hcCAoZ2VuZXJhdG9yICgpKSB+ZjooZnVuIGYgeCAtPiBmIFsgeCBdKVxuICAgICAgaW5cbiAgICAgIHBzdHIgKHBzdHJfZXZhbCBnZW5lcmF0b3JzIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBVbnVzZWQgd2FybmluZyBzdHVmZiArIGxvY2F0aW9ucyBjaGVjayBzaWxlbmNpbmcgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgc3RyaW5nID1cbiAgICBMaXN0LnNvcnQgd2FybmluZ3MgfmNtcDpJbnQuY29tcGFyZVxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gd2FybmluZyAtPiBcIi1cIiBeIEludC50b19zdHJpbmcgd2FybmluZylcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIlxuICBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLndhcm5pbmdcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2Mgc3RyaW5nKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpbmxpbmVfZG9jX2F0dHIgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLmRvY1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBcIkBpbmxpbmVcIikgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG4oKiB3cmFwIGEgc3RydWN0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtb2Rfc3RydWN0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc3RyX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc3RydWN0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc3RyXSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHN0ID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgIH5wcHhfYWxsb3dzX3VudXNlZF9jb2RlX3dhcm5pbmdzOnVudXNlZF9jb2RlX3dhcm5pbmdzXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmIGtlZXBfdzMyX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiAoW10sIHN0KVxuICAgIGVsc2UgaWYgbm90ICFkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIHRoZW5cbiAgICAgIChbXSwgSWdub3JlX3VudXNlZF93YXJuaW5nLmFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMjc3RydWN0dXJlIHN0KVxuICAgIGVsc2UgKFsgMzIgXSwgc3QpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICB8fCBub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc3RydWN0dXJlIHN0IGZhbHNlKVxuICAgIHRoZW4gKHdhcm5pbmdzLCBzdClcbiAgICBlbHNlICg2MCA6OiB3YXJuaW5ncywgc3QpXG4gIGluXG4gIGxldCB3cmFwLCBzdCA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzdClcbiAgICBlbHNlICh0cnVlLCBwc3RyX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc3QpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0IGVsc2Ugc3RcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zdHJdIGFib3ZlICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqIHdyYXAgYSBzaWduYXR1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG10eV9zaWduYXR1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzaWdfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzaWduYXR1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zaWddICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc2cgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICBhbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgfnBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3M6dW51c2VkX2NvZGVfd2FybmluZ3NcbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZiBrZWVwX3czMl9pbnRmICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gW10gZWxzZSBbIDMyIF1cbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW50ZiAoKVxuICAgICAgfHwgKG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzaWduYXR1cmUgc2cgZmFsc2UpKVxuICAgICAgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICB0aGVuIHdhcm5pbmdzXG4gICAgZWxzZSA2MCA6OiB3YXJuaW5nc1xuICBpblxuICBsZXQgd3JhcCwgc2cgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc2cpXG4gICAgZWxzZSAodHJ1ZSwgcHNpZ19hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHNnKVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zaWcgfmxvYyB+aGlkZSBzZyBlbHNlIHNnXG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc2lnXSBhYm92ZSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE1haW4gZXhwYW5zaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCB0eXBlc191c2VkX2J5X2Rlcml2aW5nICh0ZHMgOiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpXG4gICAgfnVudXNlZF9jb2RlX3dhcm5pbmdzOnBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3MgOiBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG4gICAgPVxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIH5wcHhfYWxsb3dzX3VudXNlZF9jb2RlX3dhcm5pbmdzXG4gIGluXG4gIGxldCB1bnVzZWRfdHlwZV93YXJuaW5ncyA9XG4gICAgYWxsb3dfdW51c2VkX3R5cGVfd2FybmluZ3MgfnBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgaW5cbiAgaWYga2VlcF93MzJfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB8fCB1bnVzZWRfdHlwZV93YXJuaW5ncyB0aGVuIFtdXG4gIGVsc2VcbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICBsZXQgdHlwID0gQ29tbW9uLmNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIGluXG4gICAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgICAgcHN0cl92YWx1ZSB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKVxuICAgICAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgICAgICAocGV4cF9mdW4gfmxvYyBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgICAgICAgICAocHBhdF9jb25zdHJhaW50IH5sb2MgKHBwYXRfYW55IH5sb2MpIHR5cClcbiAgICAgICAgICAgICAgICAgICAoZXVuaXQgfmxvYykpO1xuICAgICAgICAgIF0pXG5cbmxldCBtZXJnZV9nZW5lcmF0b3JzIGZpZWxkIGwgPVxuICBMaXN0LmZpbHRlcl9tYXAgbCB+ZjooZnVuIHggLT4geCkgfD4gTGlzdC5jb25jYXQgfD4gRGVyaXZlci5yZXNvbHZlX2FsbCBmaWVsZFxuXG4oKiBUaGlzIGZ1bmN0aW9uIG1lcmdlcyBbJ2EgZGVyaXZlZF0gaWYgdGhleSBoYXZlIHRoZSBzYW1lIFt1bnVzZWRfY29kZV93YXJuaW5nc10uIFRoaXNcbiAgIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBhZGQgW2luY2x1ZGUgc3RydWN0IC4uLiBlbmRdIHRvIGRpc2FibGUgd2FybmluZ3MuICopXG5sZXQgbWVyZ2VfZGVyaXZlZCBsaXN0cyA9XG4gIExpc3QuZm9sZF9yaWdodCBsaXN0cyB+aW5pdDpbXSB+ZjooZnVuIGRlcml2ZWQgYWNjIC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBvdGhlciA6OiBvdGhlcnNcbiAgICAgICAgd2hlbiBCb29sLmVxdWFsIGRlcml2ZWQudW51c2VkX2NvZGVfd2FybmluZ3Mgb3RoZXIudW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgICAgLT5cbiAgICAgICAgICB7IG90aGVyIHdpdGggaXRlbXMgPSBkZXJpdmVkLml0ZW1zIEAgb3RoZXIuaXRlbXMgfSA6OiBvdGhlcnNcbiAgICAgIHwgXyAtPiBkZXJpdmVkIDo6IGFjYylcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgTGlzdC5mb3JfYWxsIGdlbmVyYXRvcnMgfmY6KGZ1biAoXywgZ2VuZXJhdG9ycywgXykgLT5cbiAgICAgICAgTGlzdC5mb3JfYWxsIGdlbmVyYXRvcnMgfmY6KGZ1biAoR2VuZXJhdG9yLlQgdCkgLT5cbiAgICAgICAgICAgIHQudW51c2VkX2NvZGVfd2FybmluZ3MpKVxuICBpblxuICAoKiBUT0RPOiBpbnN0ZWFkIG9mIGRpc2FibGluZyB0aGUgdW51c2VkIHdhcm5pbmcgZm9yIHR5cGVzIHRoZW1zZWx2ZXMsIHdlXG4gICAgIHNob3VsZCBhZGQgYSB0YWcgW0BAdW51c2VkXS4gKilcbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAge1xuICAgICAgaXRlbXMgPSB0eXBlc191c2VkX2J5X2Rlcml2aW5nIHRkcyB+dW51c2VkX2NvZGVfd2FybmluZ3MgQCBsX2VycjtcbiAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2U7XG4gICAgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBydWxlcyB+dHlwIH5leHBhbmRfc2lnIH5leHBhbmRfc3RyIH5ydWxlX3N0ciB+cnVsZV9zaWcgfnJ1bGVfc3RyX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3QgPVxuICBsZXQgcHJlZml4ID0gXCJwcHhsaWIuXCIgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHIgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJcIiB+cHJlZml4IHR5cCBpblxuICBsZXQgZGVyaXZpbmdfYXR0cl9leHBlY3QgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJfaW5saW5lXCIgfnByZWZpeCB0eXAgaW5cbiAgW1xuICAgIHJ1bGVfc2lnIGRlcml2aW5nX2F0dHIgZXhwYW5kX3NpZztcbiAgICBydWxlX3N0ciBkZXJpdmluZ19hdHRyIGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zdHJfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zaWdfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zaWc7XG4gIF1cblxubGV0IHJ1bGVzX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZGVjbHNcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZGVjbHNcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgcnVsZXNfdHlwZV9leHQgPVxuICBydWxlcyB+dHlwOlR5cGVfZXh0ZW5zaW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9leHRcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0XG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0X2V4cGVjdFxuXG5sZXQgcnVsZXNfZXhjZXB0aW9uID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4Y2VwdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX2V4Y2VwdGlvblxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvblxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvbl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3RcblxubGV0IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOk1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgKCkgPVxuICBsZXQgcnVsZXMgPVxuICAgIFsgcnVsZXNfdHlwZV9kZWNsOyBydWxlc190eXBlX2V4dDsgcnVsZXNfZXhjZXB0aW9uOyBydWxlc19tb2R1bGVfdHlwZV9kZWNsIF1cbiAgICB8PiBMaXN0LmNvbmNhdFxuICBpblxuICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gXCJkZXJpdmluZ1wiIH5hbGlhc2VzOlsgXCJ0eXBlX2NvbnZcIiBdIH5ydWxlc1xuIiwib3BlbiBJbXBvcnRcblxudHlwZSBhZmZpeCA9XG4gIHwgUHJlZml4IG9mIHN0cmluZ1xuICB8IFN1ZmZpeCBvZiBzdHJpbmdcbiAgfCBQcmVmaXhTdWZmaXggb2Ygc3RyaW5nICogc3RyaW5nXG5cbmxldCBtYW5nbGUgPyhmaXhwb2ludCA9IFwidFwiKSBhZmZpeCBuYW1lID1cbiAgbWF0Y2ggKFN0cmluZy4obmFtZSA9IGZpeHBvaW50KSwgYWZmaXgpIHdpdGhcbiAgfCB0cnVlLCAoUHJlZml4IHggfCBTdWZmaXggeCkgLT4geFxuICB8IHRydWUsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIG5hbWUgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4IHggLT4geCBeIFwiX1wiIF4gbmFtZVxuICB8IGZhbHNlLCBTdWZmaXggeCAtPiBuYW1lIF4gXCJfXCIgXiB4XG5cbmxldCBtYW5nbGVfdHlwZV9kZWNsID9maXhwb2ludCBhZmZpeCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IG5hbWU7IF8gfTsgXyB9ID1cbiAgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBuYW1lXG5cbmxldCBtYW5nbGVfbGlkID9maXhwb2ludCBhZmZpeCBsaWQgPVxuICBtYXRjaCBsaWQgd2l0aFxuICB8IExpZGVudCBzIC0+IExpZGVudCAobWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExkb3QgKHAsIHMpIC0+IExkb3QgKHAsIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMYXBwbHkgXyAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5FeHBhbnNpb25faGVscGVycy5tYW5nbGVfbGlkOiBMYXBwbHlcIlxuXG5tb2R1bGUgUXVvdGVyID0gUXVvdGVyXG4iLCIoKiogU3RhbmRhcmQgbGlicmFyeSBmb3IgcHB4IHJld3JpdGVycyAqKVxuXG4oKiogW3BweGxpYl0gaXMgbWVhbnQgdG8gYmUgb3BlbmVkIGdsb2JhbGx5IGluIHlvdXIgUFBYIHNvdXJjZSBmaWxlcy5cblxuICAgIE9wZW5pbmcgaXQgY29tZXMgd2l0aCB0d28gYWR2YW50YWdlcy4gRmlyc3QsIGl0IHdpbGwgc2hhZG93IHRoZVxuICAgIFtjb21waWxlci1saWJzXSBtb2R1bGVzLiBUaGUgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMgYXJlIHVuc3RhYmxlIGFuZCBhcmVuJ3RcbiAgICBtZWFudCB0byBiZSB1c2VkLCBzbyBzaGFkb3dpbmcgdGhlbSBpcyBhIGdvb2QgcHJvdGVjdGlvbiBtZWNoYW5pc20uIEluIGNhc2VcbiAgICB5b3UgZG9uJ3Qgd2FudCB0byBvcGVuIFtQcHhsaWJdLCB5b3UgY2FuIG9wZW4gW09jYW1sX3NoYWRvd10gdG8gZ2V0IHRoZSBzYW1lXG4gICAgcHJvdGVjdGlvbi4gU2Vjb25kLCBpdCB3aWxsIGJyaW5nIHNldmVyYWwgbW9kdWxlcyBpbiBzY29wZSwgdGhhdCBhcmUgdXNlZnVsXG4gICAgdG8gaGF2ZSB3aGVuIHdyaXRpbmcgYSByZXdyaXRlcjpcblxuICAgIC0gVGhlIG1haW4gW3BweGxpYl0gbW9kdWxlcywgc3VjaCBhcyBtb2R1bGVzIHRvIGhlbHAgbWFuaXB1bGF0ZSB0aGUgQVNUXG4gICAgICAoeyFBc3RfYnVpbGRlcn0sIHshQXN0X3BhdHRlcm59KSwgYW5kIGEgZmV3IGZ1bmN0aW9ucy5cbiAgICAtIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXMsIHN1Y2ggYXMgeyFBc3RfaGVscGVyfSBvciB7IVBwcmludGFzdH0sXG4gICAgLSBUaGUgd2hvbGUgQVNUIHR5cGVzIChieSBbaW5jbHVkaW5nXSB0aGUgeyFBc3R9IG1vZHVsZSkuXG5cbiAgICB7MSBUaGUgY29yZSBbcHB4bGliXSBlbnRyaWVzfSAqKVxuXG4oKiogezIgTWFuaXB1bGF0aW5nIHRoZSBBU1R9ICopXG5cbm1vZHVsZSBBc3RfYnVpbGRlciA9IEFzdF9idWlsZGVyXG5tb2R1bGUgQXN0X3BhdHRlcm4gPSBBc3RfcGF0dGVyblxubW9kdWxlIEFzdF90cmF2ZXJzZSA9IEFzdF90cmF2ZXJzZVxuXG4oKiogezIgQ29udGV4dC1mcmVlIHJld3JpdGluZ30gKilcblxubW9kdWxlIENvbnRleHRfZnJlZSA9IENvbnRleHRfZnJlZVxubW9kdWxlIERlcml2aW5nID0gRGVyaXZpbmdcbm1vZHVsZSBFeHRlbnNpb24gPSBFeHRlbnNpb25cbm1vZHVsZSBFeHBhbnNpb25fY29udGV4dCA9IEV4cGFuc2lvbl9jb250ZXh0XG5tb2R1bGUgQ29kZV9wYXRoID0gQ29kZV9wYXRoXG5cbigqKiB7MiBPdGhlciBoZWxwZXJzfSAqKVxuXG5tb2R1bGUgRXhwYW5zaW9uX2hlbHBlcnMgPSBFeHBhbnNpb25faGVscGVyc1xubW9kdWxlIE1lcmxpbl9oZWxwZXJzID0gTWVybGluX2hlbHBlcnNcbm1vZHVsZSBTcGVsbGNoZWNrID0gU3BlbGxjaGVja1xubW9kdWxlIEtleXdvcmQgPSBLZXl3b3JkXG5cbigqKiB7MiBEcml2ZXItcmVsYXRlZCBtb2R1bGVzfSAqKVxuXG5tb2R1bGUgRHJpdmVyID0gRHJpdmVyXG5tb2R1bGUgQ2FsbGVyX2lkID0gQ2FsbGVyX2lkXG5tb2R1bGUgQXN0X2lvID0gVXRpbHMuQXN0X2lvLlJlYWRfYmluXG5cbigqKiB7MiBDaGVja3N9ICopXG5cbm1vZHVsZSBBdHRyaWJ1dGUgPSBBdHRyaWJ1dGVcbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzXG5cbigqKiB7MiBDb21tb24gaGVscGVyIGZ1bmN0aW9uc30gKilcblxuaW5jbHVkZSBDb21tb25cblxuKCoqIHsxIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXN9XG5cbiAgICBFeHBvc2Ugc29tZSBtb2R1bGVzIGZyb20geyFQcHhsaWJfYXN0fS4gKilcblxubW9kdWxlIEFzdCA9IFBweGxpYl9hc3QuQXN0XG5tb2R1bGUgQXN0X2hlbHBlciA9IFBweGxpYl9hc3QuQXN0X2hlbHBlclxubW9kdWxlIEFzdHR5cGVzID0gUHB4bGliX2FzdC5Bc3R0eXBlc1xubW9kdWxlIFBhcnNlID0gUHB4bGliX2FzdC5QYXJzZVxubW9kdWxlIFBhcnNldHJlZSA9IFBweGxpYl9hc3QuUGFyc2V0cmVlXG5tb2R1bGUgUHByaW50YXN0ID0gUHB4bGliX2FzdC5QcHJpbnRhc3Rcbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBMb2MgPSBMb2NcblxuKCoqIHsxIFRoZSB3aG9sZSBBU1QgdHlwZXN9ICopXG5cbmluY2x1ZGUgQXN0XG4oKiogSW5jbHVkZSBhbGwgdGhlIEFzdCBkZWZpbml0aW9ucyBzaW5jZSB3ZSBuZWVkIHRoZW0gaW4gZXZlcnkgc2luZ2xlIHBweFxuXG4gICAgQGNsb3NlZCAqKVxuXG4oKiogTWFrZSBzdXJlIGNvZGUgdXNpbmcgUHB4bGliIGRvZXNuJ3QgcmVmZXIgdG8gY29tcGlsZXItbGlicyB3aXRob3V0IGJlaW5nXG4gICAgZXhwbGljaXQgYWJvdXQgaXQ6XG5cbiAgICBAY2xvc2VkICopXG5pbmNsdWRlIHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgb3BlbiBPY2FtbF9zaGFkb3dcblxuICBpbmNsdWRlIChcbiAgICBPY2FtbF9zaGFkb3cgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgT2NhbWxfc2hhZG93XG4gICAgICBlbmRcbiAgICAgIHdpdGggbW9kdWxlIEFzdF9oZWxwZXIgOj0gQXN0X2hlbHBlclxuICAgICAgd2l0aCBtb2R1bGUgQXN0dHlwZXMgOj0gQXN0dHlwZXNcbiAgICAgIHdpdGggbW9kdWxlIERvY3N0cmluZ3MgOj0gRG9jc3RyaW5nc1xuICAgICAgd2l0aCBtb2R1bGUgSWRlbnRpZmlhYmxlIDo9IElkZW50aWZpYWJsZVxuICAgICAgd2l0aCBtb2R1bGUgTGV4ZXIgOj0gTGV4ZXJcbiAgICAgIHdpdGggbW9kdWxlIExvY2F0aW9uIDo9IExvY2F0aW9uXG4gICAgICB3aXRoIG1vZHVsZSBMb25naWRlbnQgOj0gTG9uZ2lkZW50XG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZSA6PSBQYXJzZVxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2V0cmVlIDo9IFBhcnNldHJlZVxuICAgICAgd2l0aCBtb2R1bGUgUHByaW50YXN0IDo9IFBwcmludGFzdFxuICAgICAgd2l0aCBtb2R1bGUgU3ludGF4ZXJyIDo9IFN5bnRheGVycilcbmVuZFxuXG4oKiovKiopXG5cbigqIEZvciB0ZXN0cyBhbmQgUHB4X2NvcmUgY29tcGF0aWJpbGl0eSBsYXllciAqKVxubW9kdWxlIFBweGxpYl9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBDb21tb24gPSBDb21tb25cbiAgbW9kdWxlIE5hbWUgPSBOYW1lXG5lbmRcbiIsIm9wZW4gUHB4bGliXG5cbmxldCBsaWJuYW1lID0gcmVmIE5vbmVcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItaW5saW5lLXRlc3QtbGliXCIgKEFyZy5TdHJpbmcgKGZ1biBzIC0+IGxpYm5hbWUgOj0gU29tZSBzKSlcbiAgICB+ZG9jOlwiIEEgYmFzZSBuYW1lIHRvIHVzZSBmb3IgZ2VuZXJhdGVkIGlkZW50aWZpZXJzIFxcXG4gICAgICAgICAgKGhhcyB0byBiZSBnbG9iYWxseSB1bmlxdWUgaW4gYSBwcm9ncmFtKS5cXFxuICAgICAgICAgIHBweF9pbmxpbmVfdGVzdCAoYW5kIHBweF9iZW5jaCkgYXJlIGRpc2FibGVkIHVubGVzcyB0aGlzIGZsYWcgaXMgcGFzc2VkLlwiO1xuOztcblxubGV0ICgpID1cbiAgRHJpdmVyLkNvb2tpZXMuYWRkX3NpbXBsZV9oYW5kbGVyIFwibGlicmFyeS1uYW1lXCIgQXN0X3BhdHRlcm4uKGVzdHJpbmcgX18pXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBsaWIgLT4gbGlibmFtZSA6PSBTb21lIGxpYilcbjs7XG5cbmxldCBnZXQgKCkgPVxuICBtYXRjaCAhbGlibmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBsaWIgLT5cbiAgICBtYXRjaCBTdHJpbmcuaW5kZXggbGliICc6JyB3aXRoXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IFNvbWUgKGxpYiwgXCJcIilcbiAgICB8IGkgLT4gU29tZSAoU3RyaW5nLnN1YiBsaWIgMCBpLCBTdHJpbmcuc3ViIGxpYiAoaSArIDEpIChTdHJpbmcubGVuZ3RoIGxpYiAtIGkgLSAxKSlcbiIsIm9wZW4gQmFzZVxub3BlbiBQcHhsaWJcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG4oKiBHZW5lcmF0ZWQgY29kZSBzaG91bGQgZGVwZW5kIG9uIHRoZSBlbnZpcm9ubWVudCBpbiBzY29wZSBhcyBsaXR0bGUgYXNcbiAgIHBvc3NpYmxlLiAgRS5nLiByYXRoZXIgdGhhbiBbZm9vID0gW11dIGRvIFttYXRjaCBmb28gd2l0aCBbXSAtPl0sIHRvIGVsaW1pbmF0ZSB0aGVcbiAgIHVzZSBvZiBbPV0uICBJdCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byBub3QgdXNlIHBvbHltb3JwaGljIGNvbXBhcmlzb25zLCBzaW5jZSB3ZVxuICAgYXJlIG1vdmluZyBtb3JlIGFuZCBtb3JlIHRvIGNvZGUgdGhhdCBkb2Vzbid0IGhhdmUgdGhlbSBpbiBzY29wZS4gKilcblxuXG50eXBlIG1heWJlX2Ryb3AgPVxuICB8IEtlZXBcbiAgfCBEcm9wX3dpdGhfZGVhZGNvZGVcbiAgfCBEcm9wXG5cbmxldCBtYXliZV9kcm9wX21vZGUgPSByZWYgS2VlcFxuXG5sZXQgc2V0X2RlZmF1bHRfbWF5YmVfZHJvcCB4ID0gbWF5YmVfZHJvcF9tb2RlIDo9IHhcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItaW5saW5lLXRlc3QtZHJvcFwiXG4gICAgKFVuaXQgKGZ1biAoKSAtPiBtYXliZV9kcm9wX21vZGUgOj0gRHJvcCkpXG4gICAgfmRvYzpcIiBEcm9wIHVuaXQgdGVzdHNcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItaW5saW5lLXRlc3QtZHJvcC13aXRoLWRlYWRjb2RlXCJcbiAgICAoVW5pdCAoZnVuICgpIC0+IG1heWJlX2Ryb3BfbW9kZSA6PSBEcm9wX3dpdGhfZGVhZGNvZGUpKVxuICAgIH5kb2M6XCIgRHJvcCB1bml0IHRlc3RzIGJ5IHdyYXBwaW5nIHRoZW0gaW5zaWRlIGRlYWRjb2RlIHRvIHByZXZlbnQgXFxcbiAgICAgICAgICB1bnVzZWQgdmFyaWFibGUgd2FybmluZ3MuXCI7XG47O1xuXG5sZXQgKCkgPVxuICBEcml2ZXIuQ29va2llcy5hZGRfc2ltcGxlX2hhbmRsZXIgXCJpbmxpbmUtdGVzdFwiXG4gICAgQXN0X3BhdHRlcm4uKHBleHBfaWRlbnQgKGxpZGVudCBfXycpKVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgaWQgLT5cbiAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgfCBcImRyb3BcIiAtPiBtYXliZV9kcm9wX21vZGUgOj0gRHJvcFxuICAgICAgICB8IFwiZHJvcF93aXRoX2RlYWRjb2RlXCIgLT4gbWF5YmVfZHJvcF9tb2RlIDo9IERyb3Bfd2l0aF9kZWFkY29kZVxuICAgICAgICB8IHMgLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzppZC5sb2NcbiAgICAgICAgICAgIFwiaW52YWxpZCAnaW5saW5lLXRlc3QnIGNvb2tpZSAoJXMpLCBleHBlY3RlZCBvbmUgb2Y6IGRyb3AsIGRyb3Bfd2l0aF9kZWFkY29kZVwiXG4gICAgICAgICAgICBzKVxuXG4oKiBTYW1lIGFzIGFib3ZlLCBidXQgZm9yIHRoZSBEdW5lIHNldHRpbmcgKilcbmxldCAoKSA9XG4gIERyaXZlci5Db29raWVzLmFkZF9zaW1wbGVfaGFuZGxlciBcImlubGluZV90ZXN0c1wiXG4gICAgQXN0X3BhdHRlcm4uKGVzdHJpbmcgX18nKVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgaWQgLT5cbiAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgfCBcImVuYWJsZWRcIiAtPiBtYXliZV9kcm9wX21vZGUgOj0gS2VlcFxuICAgICAgICB8IFwiZGlzYWJsZWRcIiAtPiBtYXliZV9kcm9wX21vZGUgOj0gRHJvcFxuICAgICAgICB8IFwiaWdub3JlZFwiIC0+IG1heWJlX2Ryb3BfbW9kZSA6PSBEcm9wX3dpdGhfZGVhZGNvZGVcbiAgICAgICAgfCBzIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6aWQubG9jXG4gICAgICAgICAgICBcImludmFsaWQgJ2lubGluZV90ZXN0cycgY29va2llICglcyksIGV4cGVjdGVkIG9uZSBvZjogZW5hYmxlZCwgZGlzYWJsZWQgb3IgaWdub3JlZFwiXG4gICAgICAgICAgICBzKVxuOztcblxubGV0IG1heWJlX2Ryb3AgbG9jIGNvZGUgPVxuICBtYXRjaCAhbWF5YmVfZHJvcF9tb2RlIHdpdGhcbiAgfCBLZWVwICAgICAgICAgICAgICAgLT4gWyVzdHIgbGV0ICgpID0gWyVlIGNvZGVdXVxuICB8IERyb3Bfd2l0aF9kZWFkY29kZSAtPiBbJXN0ciBsZXQgKCkgPSBpZiBmYWxzZSB0aGVuIFslZSBjb2RlXSBlbHNlICgpXVxuICB8IERyb3AgICAgICAgICAgICAgICAtPiBBdHRyaWJ1dGUuZXhwbGljaXRseV9kcm9wI2V4cHJlc3Npb24gY29kZTsgWyVzdHIgXVxuXG5sZXQgcmVjIHNob3J0X2Rlc2Nfb2ZfZXhwciB+bWF4X2xlbiBlID1cbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfbGV0IChfLCBfLCBlKSB8IFBleHBfbGV0bW9kdWxlIChfLCBfLCBlKSAtPlxuICAgIHNob3J0X2Rlc2Nfb2ZfZXhwciB+bWF4X2xlbiBlXG4gIHwgXyAtPlxuICAgIGxldCBzID0gUHByaW50YXN0LnN0cmluZ19vZl9leHByZXNzaW9uIGUgaW5cbiAgICBsZXQgcmVzID1cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA+PSBtYXhfbGVuIHRoZW5cbiAgICAgICAgbGV0IHNfc2hvcnQgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KG1heF9sZW4gLSA1KSBpblxuICAgICAgICBzX3Nob3J0IF4gXCJbLi4uXVwiXG4gICAgICBlbHNlIHNcbiAgICBpblxuICAgIFN0cmluZy5tYXAgcmVzIH5mOihmdW5jdGlvblxuICAgICAgfCAnXFxuJyAtPiAnICdcbiAgICAgIHwgYyAtPiBjKVxuOztcblxubGV0IGRlc2NyIH4obG9jOkxvY2F0aW9uLnQpID8oaW5uZXJfbG9jPWxvYykgZV9vcHQgaWRfb3B0ID1cbiAgbGV0IGZpbGVuYW1lICA9IGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgbGV0IGxpbmUgICAgICA9IGxvYy5sb2Nfc3RhcnQucG9zX2xudW0gICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgbGV0IHN0YXJ0X3BvcyA9IGxvYy5sb2Nfc3RhcnQucG9zX2NudW0gLSBsb2MubG9jX3N0YXJ0LnBvc19ib2wgaW5cbiAgbGV0IGVuZF9wb3MgICA9IGlubmVyX2xvYy5Mb2NhdGlvbi5sb2NfZW5kLnBvc19jbnVtIC0gbG9jLmxvY19zdGFydC5wb3NfYm9sIGluXG4gIGxldCBkZXNjciA9XG4gICAgbWF0Y2ggaWRfb3B0IHdpdGhcbiAgICB8IGBMaXRlcmFsIGlkIC0+IGVzdHJpbmcgfmxvYyBpZFxuICAgIHwgYEV4cHIgZSAtPiBlXG4gICAgfCBgTm9uZSAtPlxuICAgICAgZXN0cmluZyB+bG9jIChtYXRjaCBlX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBlIC0+IFwiPDxcIiBeIHNob3J0X2Rlc2Nfb2ZfZXhwciB+bWF4X2xlbjo1MCBlIF4gXCI+PlwiKVxuICBpblxuICAocGV4cF9sYXp5IH5sb2MgZGVzY3IsXG4gICBlc3RyaW5nIH5sb2MgZmlsZW5hbWUsXG4gICBlaW50IH5sb2MgbGluZSxcbiAgIGVpbnQgfmxvYyBzdGFydF9wb3MsXG4gICBlaW50IH5sb2MgZW5kX3Bvcylcbjs7XG5cbmxldCBhcHBseV90b19kZXNjciBsaWQgfmxvYyA/aW5uZXJfbG9jIGVfb3B0IGlkX29wdCB0YWdzIG1vcmVfYXJnID1cbiAgbGV0IGRlc2NyLCBmaWxlbmFtZSwgbGluZSwgc3RhcnRfcG9zLCBlbmRfcG9zID0gZGVzY3IgfmxvYyA/aW5uZXJfbG9jIGVfb3B0IGlkX29wdCBpblxuICBsZXQgZXhwciA9XG4gICAgcGV4cF9hcHBseSB+bG9jIChldmFyIH5sb2MgKFwiUHB4X2lubGluZV90ZXN0X2xpYi5SdW50aW1lLlwiIF4gbGlkKSlcbiAgICAgIFsgTGFiZWxsZWQgXCJjb25maWdcIiwgWyVleHByIChtb2R1bGUgSW5saW5lX3Rlc3RfY29uZmlnKV1cbiAgICAgIDsgTGFiZWxsZWQgXCJkZXNjclwiLCBkZXNjclxuICAgICAgOyBMYWJlbGxlZCBcInRhZ3NcIiwgZWxpc3QgfmxvYyAoTGlzdC5tYXAgfmY6KGVzdHJpbmcgfmxvYykgdGFncylcbiAgICAgIDsgTGFiZWxsZWQgXCJmaWxlbmFtZVwiLCBmaWxlbmFtZVxuICAgICAgOyBMYWJlbGxlZCBcImxpbmVfbnVtYmVyXCIsIGxpbmVcbiAgICAgIDsgTGFiZWxsZWQgXCJzdGFydF9wb3NcIiwgc3RhcnRfcG9zXG4gICAgICA7IExhYmVsbGVkIFwiZW5kX3Bvc1wiLCBlbmRfcG9zXG4gICAgICA7IE5vbGFiZWwsIG1vcmVfYXJnIF1cbiAgaW5cbiAgbWF5YmVfZHJvcCBsb2MgZXhwclxuOztcblxubGV0IGNhbl91c2VfdGVzdF9leHRlbnNpb25zICgpID1cbiAgbWF0Y2ggIW1heWJlX2Ryb3BfbW9kZSwgUHB4X2lubGluZV90ZXN0X2xpYm5hbWUuZ2V0ICgpIHdpdGhcbiAgfCBLZWVwLCBOb25lIC0+IGZhbHNlXG4gIHwgKERyb3AgfCBEcm9wX3dpdGhfZGVhZGNvZGUpLCBfIHwgXywgU29tZSBfIC0+IHRydWVcbjs7XG5cbigqIFNldCB0byBbdHJ1ZV0gd2hlbiB3ZSBzZWUgYSBbbGV0JXRlc3RdIG9yIFtsZXQlZXhwZWN0X3Rlc3RdIGV0YyBleHRlbnNpb24uICopXG5tb2R1bGUgSGFzX3Rlc3RzID1cbiAgRHJpdmVyLkNyZWF0ZV9maWxlX3Byb3BlcnR5XG4gICAgKHN0cnVjdCBsZXQgbmFtZSA9IFwicHB4X2lubGluZV90ZXN0Lmhhc190ZXN0c1wiIGVuZClcbiAgICAoQm9vbClcblxubGV0IGFsbF90YWdzID1cbiAgWyBcIm5vLWpzXCJcbiAgOyBcImpzLW9ubHlcIlxuICA7IFwiNjQtYml0cy1vbmx5XCJcbiAgOyBcIjMyLWJpdHMtb25seVwiXG4gIDsgXCJmYXN0LWZsYW1iZGFcIlxuICA7IFwieC1saWJyYXJ5LWlubGluaW5nLXNlbnNpdGl2ZVwiXG4gIF1cblxubGV0IHZhbGlkYXRlX3RhZyB0YWcgPVxuICBpZiBub3QgKExpc3QubWVtIGFsbF90YWdzIHRhZyB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuICB0aGVuXG4gICAgRXJyb3IgKFNwZWxsY2hlY2suc3BlbGxjaGVjayBhbGxfdGFncyB0YWcpXG4gIGVsc2VcbiAgICBPayAoKVxuXG5sZXQgdmFsaWRhdGVfZXh0ZW5zaW9uX3BvaW50X2V4biB+bmFtZV9vZl9wcHhfcmV3cml0ZXIgfmxvYyB+dGFncyA9XG4gIEhhc190ZXN0cy5zZXQgdHJ1ZTtcbiAgaWYgbm90IChjYW5fdXNlX3Rlc3RfZXh0ZW5zaW9ucyAoKSkgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgICBcIiVzOiBleHRlbnNpb24gaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgdGVzdHMgd291bGQgYmUgaWdub3JlZCBcXFxuICAgICAgICh0aGUgYnVpbGQgc3lzdGVtIGRpZG4ndCBwYXNzIC1pbmxpbmUtdGVzdC1saWIpXCIgbmFtZV9vZl9wcHhfcmV3cml0ZXI7XG4gIExpc3QuaXRlciB0YWdzIH5mOihmdW4gdGFnIC0+XG4gICAgbWF0Y2ggdmFsaWRhdGVfdGFnIHRhZyB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgaGludCAtPlxuICAgICAgbGV0IGhpbnQgPSBtYXRjaCBoaW50IHdpdGhcbiAgICAgICAgfCBOb25lICAgICAgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgaGludCAtPiBcIlxcblwiXmhpbnRcbiAgICAgIGluXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgICAgICBcIiVzOiAlUyBpcyBub3QgYSB2YWxpZCB0YWcgZm9yIGlubGluZSB0ZXN0cy4lc1wiIG5hbWVfb2ZfcHB4X3Jld3JpdGVyIHRhZyBoaW50XG4gIClcbjs7XG5cbmxldCBuYW1lX29mX3BweF9yZXdyaXRlciA9IFwicHB4X2lubGluZV90ZXN0XCJcblxubGV0IGV4cGFuZF90ZXN0IH5sb2MgfnBhdGg6XyB+bmFtZTppZCB+dGFncyBlID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIHZhbGlkYXRlX2V4dGVuc2lvbl9wb2ludF9leG4gfm5hbWVfb2ZfcHB4X3Jld3JpdGVyIH5sb2MgfnRhZ3M7XG4gIGFwcGx5X3RvX2Rlc2NyIFwidGVzdFwiIH5sb2MgKFNvbWUgZSkgaWQgdGFnc1xuICAgIFslZXhwciBmdW4gKCkgLT4gWyVlIGVdXVxuOztcblxubGV0IGV4cGFuZF90ZXN0X3VuaXQgfmxvYyB+cGF0aDpfIH5uYW1lOmlkIH50YWdzIGUgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgdmFsaWRhdGVfZXh0ZW5zaW9uX3BvaW50X2V4biB+bmFtZV9vZl9wcHhfcmV3cml0ZXIgfmxvYyB+dGFncztcbiAgKCogVGhlIFwiOyAoKVwiIGJpdCBpcyB0aGVyZSB0byBicmVha3MgdGFpbCBjYWxsIG9wdGltaXphdGlvbiwgZm9yIGJldHRlciBiYWNrdHJhY2VzLiAqKVxuICBhcHBseV90b19kZXNjciBcInRlc3RfdW5pdFwiIH5sb2MgKFNvbWUgZSkgaWQgdGFnc1xuICAgIFslZXhwciBmdW4gKCkgLT4gWyVlIGVdOyAoKV1cbjs7XG5cbmxldCBleHBhbmRfdGVzdF9tb2R1bGUgfmxvYyB+cGF0aDpfIH5uYW1lOmlkIH50YWdzIG0gPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgdmFsaWRhdGVfZXh0ZW5zaW9uX3BvaW50X2V4biB+bmFtZV9vZl9wcHhfcmV3cml0ZXIgfmxvYyB+dGFncztcbiAgYXBwbHlfdG9fZGVzY3IgXCJ0ZXN0X21vZHVsZVwiIH5sb2MgfmlubmVyX2xvYzptLnBtb2RfbG9jIE5vbmUgaWQgdGFnc1xuICAgIChwZXhwX2Z1biB+bG9jIE5vbGFiZWwgTm9uZSAocHVuaXQgfmxvYylcbiAgICAgICAocGV4cF9sZXRtb2R1bGUgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChTb21lIFwiTVwiKSlcbiAgICAgICAgICBtXG4gICAgICAgICAgKGV1bml0IH5sb2MpKSlcbjs7XG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIG9wZW4gQXN0X3BhdHRlcm5cblxuICBsZXQgdGFncyA9XG4gICAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICAgIFwidGFnc1wiXG4gICAgICBBdHRyaWJ1dGUuQ29udGV4dC5wYXR0ZXJuXG4gICAgICAoc2luZ2xlX2V4cHJfcGF5bG9hZCAoXG4gICAgICAgICBwZXhwX3R1cGxlIChtYW55IChlc3RyaW5nIF9fKSlcbiAgICAgICAgIHx8fCAgbWFwIChlc3RyaW5nIF9fKSB+ZjooZnVuIGYgeCAtPiBmIFt4XSkpKVxuICAgICAgKGZ1biB4IC0+IHgpXG5cbiAgbGV0IGxpc3Rfb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gW11cbiAgICB8IFNvbWUgeCAtPiB4XG5cbiAgbGV0IG9wdF9uYW1lICgpID1cbiAgICBtYXAgKHBzdHJpbmcgX18pIH5mOihmdW4gZiB4IC0+IGYgKGBMaXRlcmFsIHgpKVxuICAgIHx8fCBtYXAgcHBhdF9hbnkgICAgIH5mOihmdW4gZiAgIC0+IGYgYE5vbmUpXG4gICAgfHx8IG1hcCAocHBhdF9leHRlbnNpb24gKGV4dGVuc2lvbiAoY3N0IH50b19zdHJpbmc6Rm4uaWQgXCJuYW1lXCIpIChzaW5nbGVfZXhwcl9wYXlsb2FkIF9fKSkpXG4gICAgICAgICAgfmY6KGZ1biBmIGUgLT4gZiAoYEV4cHIgZSkpXG5cblxuICBsZXQgb3B0X25hbWVfYW5kX2V4cHIgZXhwciA9XG4gICAgcHN0ciAoKFxuICAgICAgcHN0cl92YWx1ZSBub25yZWN1cnNpdmUgKFxuICAgICAgICAodmFsdWVfYmluZGluZ1xuICAgICAgICAgICB+cGF0OihcbiAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIChBdHRyaWJ1dGUucGF0dGVybiB0YWdzIChvcHRfbmFtZSAoKSkpXG4gICAgICAgICAgICAgICB+ZjooZnVuIGYgYXR0cmlidXRlcyBuYW1lX29wdCAtPlxuICAgICAgICAgICAgICAgICBmIH5uYW1lOm5hbWVfb3B0IH50YWdzOihsaXN0X29mX29wdGlvbiBhdHRyaWJ1dGVzKSkpXG4gICAgICAgICAgIH5leHByKVxuICAgICAgICBeOjogbmlsKVxuICAgICkgXjo6IG5pbClcblxuICBsZXQgdGVzdCA9XG4gICAgRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lIFwiaW5saW5lX3Rlc3QudGVzdFwiXG4gICAgICBFeHRlbnNpb24uQ29udGV4dC5zdHJ1Y3R1cmVfaXRlbVxuICAgICAgKG9wdF9uYW1lX2FuZF9leHByIF9fKVxuICAgICAgZXhwYW5kX3Rlc3RcblxuICBsZXQgdGVzdF91bml0ID1cbiAgICBFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmUgXCJpbmxpbmVfdGVzdC50ZXN0X3VuaXRcIlxuICAgICAgRXh0ZW5zaW9uLkNvbnRleHQuc3RydWN0dXJlX2l0ZW1cbiAgICAgIChvcHRfbmFtZV9hbmRfZXhwciBfXylcbiAgICAgIGV4cGFuZF90ZXN0X3VuaXRcblxuICBsZXQgdGVzdF9tb2R1bGUgPVxuICAgIEV4dGVuc2lvbi5kZWNsYXJlX2lubGluZSBcImlubGluZV90ZXN0LnRlc3RfbW9kdWxlXCJcbiAgICAgIEV4dGVuc2lvbi5Db250ZXh0LnN0cnVjdHVyZV9pdGVtXG4gICAgICAob3B0X25hbWVfYW5kX2V4cHIgIChwZXhwX3BhY2sgX18pKVxuICAgICAgZXhwYW5kX3Rlc3RfbW9kdWxlXG5cbiAgbGV0IGFsbCA9XG4gICAgWyB0ZXN0XG4gICAgOyB0ZXN0X3VuaXRcbiAgICA7IHRlc3RfbW9kdWxlXG4gICAgXVxuZW5kXG5cbmxldCB0YWdzID0gRS50YWdzXG5cbmxldCAoKSA9XG4gIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBcImlubGluZS10ZXN0XCJcbiAgICB+ZXh0ZW5zaW9uczpFLmFsbFxuICAgIH5lbmNsb3NlX2ltcGw6KGZ1biBsb2MgLT5cbiAgICAgIG1hdGNoIGxvYywgUHB4X2lubGluZV90ZXN0X2xpYm5hbWUuZ2V0ICgpIHdpdGhcbiAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgIHwgU29tZSBsb2MsIFNvbWUgKGxpYm5hbWUsIHBhcnRpdGlvbikgLT5cbiAgICAgICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICAgICgqIFNlZSBjb21tZW50IGluIGJlbmNobWFya19hY2N1bXVsYXRvci5tbCAqKVxuICAgICAgICBsZXQgaGVhZGVyID1cbiAgICAgICAgICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZW5kID0gbG9jLmxvY19zdGFydCB9IGluXG4gICAgICAgICAgbWF5YmVfZHJvcCBsb2MgWyVleHByIFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS5zZXRfbGliX2FuZF9wYXJ0aXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJWUgZXN0cmluZyB+bG9jIGxpYm5hbWVdIFslZSBlc3RyaW5nIH5sb2MgcGFydGl0aW9uXV1cbiAgICAgICAgYW5kIGZvb3RlciA9XG4gICAgICAgICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIG1heWJlX2Ryb3AgbG9jIFslZXhwciBQcHhfaW5saW5lX3Rlc3RfbGliLlJ1bnRpbWUudW5zZXRfbGliXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyVlIGVzdHJpbmcgfmxvYyBsaWJuYW1lXV1cbiAgICAgICAgaW5cbiAgICAgICAgKGhlYWRlciwgZm9vdGVyKVxuICAgIClcbjs7XG4iLCJtb2R1bGUgdHlwZSBTID0gc2lnXG4gIHZhbCBwcmVfdGVzdF9ob29rIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IHByZV90ZXN0X2hvb2sgPSBpZ25vcmVcbiIsIm1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG5tb2R1bGUgQ29udl9lcnJvciA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvclxubW9kdWxlIFNleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwiWyUlaW1wb3J0IFwiY29uZmlnLmhcIl1cblxub3BlbiEgQmFzZVxuXG5bJSVpZmRlZiBKU0NfQVJDSF9TSVhUWUZPVVJdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5bQEBub2FsbG9jXVxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuXG5bJSVlbmRpZl1cblslJWlmZGVmIEpTQ19QT1NJWF9USU1FUlNdXG5cbmxldFtAY29sZF0gZ2V0dGltZV9mYWlsZWQgKCkgPSBmYWlsd2l0aCBcImNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIGZhaWxlZFwiXG5cblslJWVsc2VdXG5cbmxldFtAY29sZF0gZ2V0dGltZV9mYWlsZWQgKCkgPSBmYWlsd2l0aCBcImdldHRpbWVvZmRheSBmYWlsZWRcIlxuXG5bJSVlbmRpZl1cblxubGV0IG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgPVxuICBsZXQgdCA9IG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyAoKSBpblxuICBpZiBJbnQ2My4oIDw+ICkgdCBJbnQ2My56ZXJvIHRoZW4gdCBlbHNlIGdldHRpbWVfZmFpbGVkICgpXG47O1xuIiwibW9kdWxlIFRlc3RfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN1Y2Nlc3MgfCBGYWlsdXJlIHwgRXJyb3JcblxuICBsZXQgdG9fZXhpdF9jb2RlID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gMFxuICAgIHwgRmFpbHVyZSAtPiAyXG4gICAgfCBFcnJvciAgIC0+IDFcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gXCJzdWNjZXNzXCJcbiAgICB8IEZhaWx1cmUgLT4gXCJmYWlsdXJlXCJcbiAgICB8IEVycm9yICAgLT4gXCJlcnJvclwiXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmUgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBTdWNjZXNzLCBTdWNjZXNzICAgICAgICAtPiBTdWNjZXNzXG4gICAgfCBFcnJvciAgLCBfIHwgXywgRXJyb3IgICAtPiBFcnJvclxuICAgIHwgRmFpbHVyZSwgXyB8IF8sIEZhaWx1cmUgLT4gRmFpbHVyZVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbCB0cyA9IExpc3QuZm9sZF9sZWZ0IGNvbWJpbmUgU3VjY2VzcyB0c1xuZW5kXG5cbmxldCBwYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZyA9XG4gIHRyeVxuICAgIEFyZy5wYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT4gUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAxXG4gIHwgQXJnLkhlbHAgbXNnIC0+IFByaW50Zi5wcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG47O1xuXG50eXBlIGRlc2NyID0gc3RyaW5nXG5sZXQgdGVzdF9tb2R1bGVzX3JhbiA9IHJlZiAwXG5sZXQgdGVzdF9tb2R1bGVzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgdGVzdHNfcmFuID0gcmVmIDBcbmxldCB0ZXN0c19mYWlsZWQgPSByZWYgMFxubGV0IGR5bmFtaWNfbGliIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxudHlwZSBmaWxlbmFtZSA9IHN0cmluZ1xudHlwZSBsaW5lX251bWJlciA9IGludFxudHlwZSBzdGFydF9wb3MgPSBpbnRcbnR5cGUgZW5kX3BvcyA9IGludFxudHlwZSBjb25maWcgPSAobW9kdWxlIElubGluZV90ZXN0X2NvbmZpZy5TKVxudHlwZSAnYSB0ZXN0X2Z1bmN0aW9uX2FyZ3NcbiAgPSBjb25maWc6Y29uZmlnXG4gIC0+IGRlc2NyOmRlc2NyIExhenkudFxuICAtPiB0YWdzOnN0cmluZyBsaXN0XG4gIC0+IGZpbGVuYW1lOmZpbGVuYW1lXG4gIC0+IGxpbmVfbnVtYmVyOmxpbmVfbnVtYmVyXG4gIC0+IHN0YXJ0X3BvczpzdGFydF9wb3NcbiAgLT4gZW5kX3BvczplbmRfcG9zXG4gIC0+ICdhXG5cbm1vZHVsZSBUYWdfcHJlZGljYXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByZXF1aXJlZF90YWdzICA6IHN0cmluZyBsaXN0XG4gICAgOyBkcm9wcGVkX3RhZ3MgOiBzdHJpbmcgbGlzdFxuICAgIH1cblxuICBsZXQgZW5hYmxlX2V2ZXJ5dGhpbmcgPSB7IHJlcXVpcmVkX3RhZ3MgPSBbXTsgZHJvcHBlZF90YWdzID0gW10gfVxuXG4gIGxldCBkcm9wIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IHRhZyA6OiB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IExpc3QuZmlsdGVyICgoPD4pIHRhZykgdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuXG4gIGxldCByZXF1aXJlIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IExpc3QuZmlsdGVyICgoPD4pIHRhZykgdC5kcm9wcGVkX3RhZ3NcbiAgICA7IHJlcXVpcmVkX3RhZ3MgPSB0YWcgOjogdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuXG4gIGxldCBlbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHQgfnBhcnRpYWxfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIGRyb3BwZWQgLT4gTGlzdC5tZW0gZHJvcHBlZCB0YWdzKSB0LmRyb3BwZWRfdGFnc1xuXG4gIGxldCBkaXNhYmxlZCB0IH5jb21wbGV0ZV90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gcmVxIC0+IG5vdCAoTGlzdC5tZW0gcmVxIHRhZ3MpKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB8fCBMaXN0LmV4aXN0cyAoZnVuIGRyb3BwZWQgLT4gTGlzdC5tZW0gZHJvcHBlZCB0YWdzKSB0LmRyb3BwZWRfdGFnc1xuZW5kXG5cblxudHlwZSB3aGljaF90ZXN0cyA9XG4gIHsgbGlibmFtZSA6IHN0cmluZ1xuICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA6IChmaWxlbmFtZSAqIGxpbmVfbnVtYmVyIG9wdGlvbiAqIGJvb2wgcmVmKSBsaXN0XG4gIDsgbmFtZV9maWx0ZXIgOiBzdHJpbmcgbGlzdFxuICA7IHdoaWNoX3RhZ3MgOiBUYWdfcHJlZGljYXRlLnRcbiAgfVxudHlwZSB0ZXN0X21vZGUgPVxuICB7IHdoaWNoX3Rlc3RzIDogd2hpY2hfdGVzdHNcbiAgOyB3aGF0X3RvX2RvIDpcbiAgICAgIFsgYFJ1bl9wYXJ0aXRpb24gb2Ygc3RyaW5nIG9wdGlvblxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zXG4gICAgICBdXG4gIH1cblxubW9kdWxlIEFjdGlvbiA6IHNpZ1xuICB0eXBlIHQgPSBbXG4gICAgfCBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICBdXG4gIHZhbCBnZXQgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFtcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gIF1cbiAgbGV0IGFjdGlvbiA6IHQgcmVmID0gcmVmIGBJZ25vcmVcbiAgbGV0IGZvcmNlX2Ryb3AgPVxuICAgIHRyeSBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCIgOiBzdHJpbmcpOyB0cnVlXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcbiAgbGV0IGdldCAoKSA9XG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBjb21waWxpbmcgdG8gamF2YXNjcmlwdC5cbiAgICAgICBKc19vZl9vY2FtbCBjYW4gc3RhdGljYWxseSBldmFsdWF0ZSBbU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIl1cbiAgICAgICBhbmQgaW5saW5lIHRoZSByZXN1bHQgKFtgSWdub3JlXSkgd2hlbmV2ZXIgW2dldCAoKV0gaXMgY2FsbGVkLlxuICAgICAgIFVuaXQgdGVzdHMgY2FuIHRoZW4gYmUgdHJlYXRlZCBhcyBkZWFkY29kZSBzaW5jZSB0aGUgYXJndW1lbnQgW2ZdIG9mIHRoZSBbdGVzdF1cbiAgICAgICBmdW5jdGlvbiBiZWxvdyBpcyBuZXZlciB1c2VkLiAqKVxuICAgIGlmIGZvcmNlX2Ryb3BcbiAgICB0aGVuIGBJZ25vcmVcbiAgICBlbHNlICFhY3Rpb25cblxuICBsZXQgc2V0IHYgPSBhY3Rpb24gOj0gdlxuZW5kXG5cbm1vZHVsZSBQYXJ0aXRpb24gOiBzaWdcbiAgdmFsIGZvdW5kX3Rlc3QgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHNldF9jdXJyZW50IDogc3RyaW5nIC0+IHVuaXRcbiAgdmFsIGlzX2N1cnJlbnQgOiBzdHJpbmcgb3B0aW9uIC0+IGJvb2xcbiAgdmFsIGFsbCA6IHVuaXQgLT4gc3RyaW5nIGxpc3RcbmVuZCA9IHN0cnVjdFxuICBsZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgMjNcbiAgbGV0IGN1cnJlbnQgPSByZWYgXCJcIiAgbGV0IHNldF9jdXJyZW50IHggPSBjdXJyZW50IDo9IHhcbiAgbGV0IGZvdW5kX3Rlc3QgKCkgPVxuICAgIGlmICFjdXJyZW50IDw+IFwiXCIgJiYgbm90IChIYXNodGJsLm1lbSBhbGwgIWN1cnJlbnQpIHRoZW5cbiAgICAgIEhhc2h0YmwuYWRkIGFsbCAhY3VycmVudCAoKVxuICA7O1xuICBsZXQgaXNfY3VycmVudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgcCAtPiBwID0gIWN1cnJlbnRcbiAgOztcbiAgbGV0IGFsbCAoKSA9XG4gICAgTGlzdC5zb3J0IFN0cmluZy5jb21wYXJlXG4gICAgICAoSGFzaHRibC5mb2xkIChmdW4gayAoKSBhY2MgLT4gayA6OiBhY2MpIGFsbCBbXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTW9kdWxlX2NvbnRleHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG9uZV9tb2R1bGUgPVxuICAgICAgeyBkZXNjciA6IHN0cmluZ1xuICAgICAgOyB0YWdzIDogc3RyaW5nIGxpc3RcbiAgICAgIH1cblxuICAgIHR5cGUgdCA9IG9uZV9tb2R1bGUgbGlzdFxuXG4gICAgbGV0IGRlc2NyIHQgPSBMaXN0Lm1hcCAoZnVuIG0gLT4gbS5kZXNjcikgdFxuICAgIGxldCB0YWdzIHQgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgKGZ1biBtIC0+IG0udGFncykgdClcbiAgZW5kXG5cbiAgbGV0IGN1cnJlbnQgOiBULnQgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHdpdGhfIH5kZXNjciB+dGFncyBmID1cbiAgICBsZXQgcHJldiA9ICFjdXJyZW50IGluXG4gICAgY3VycmVudCA6PSB7IFQuIGRlc2NyOyB0YWdzIH0gOjogcHJldjtcbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZiAoKSBpblxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgcmFpc2UgZVxuXG4gIGxldCBjdXJyZW50X2Rlc2NyICgpID0gVC5kZXNjciAhY3VycmVudFxuICBsZXQgY3VycmVudF90YWdzICAoKSA9IFQudGFncyAgIWN1cnJlbnRcbmVuZFxuXG5sZXQgdmVyYm9zZSA9IHJlZiBmYWxzZVxubGV0IHN0cmljdCA9IHJlZiBmYWxzZVxubGV0IHNob3dfY291bnRzID0gcmVmIGZhbHNlXG5sZXQgbGlzdF90ZXN0X25hbWVzID0gcmVmIGZhbHNlXG5sZXQgZGVsYXllZF9lcnJvcnMgPSByZWYgW11cbmxldCBzdG9wX29uX2Vycm9yID0gcmVmIGZhbHNlXG5cbmxldCBsb2cgPSByZWYgTm9uZVxuXG5sZXQgdGltZV9zZWMgPSByZWYgMC5cblxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgaW5fcGxhY2UgID0gcmVmIGZhbHNlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE5vbmVcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gcmVmIE5vbmVcbmxldCBhbGxvd19vdXRwdXRfcGF0dGVybnMgPSByZWYgZmFsc2VcblxubGV0IGRpc3BsYXllZF9kZXNjciAobGF6eSBkZXNjcikgZmlsZW5hbWUgbGluZSBzdGFydF9wb3MgZW5kX3BvcyA9XG4gIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZCVzXCJcbiAgICBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zXG4gICAgKGlmIGRlc2NyID0gXCJcIiB0aGVuIFwiXCIgZWxzZSBcIjogXCIgXiBkZXNjcilcbmxldCBwYXJzZV9kZXNjciBzdHIgPVxuICB0cnkgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICwgbGluZSAlZCAsIGNoYXJhY3RlcnMgJWQgLSAlZCAlIVwiXG4gICAgICAgICAgICAgIChmdW4gZmlsZSBsaW5lIF9zdGFydF9wb3MgX2VuZF9wb3MgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aCBfIC0+XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICUhXCIgKGZ1biBmaWxlIGxpbmUgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aCBfIC0+XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgJSFcIiAoZnVuIGZpbGUgLT4gZmlsZSwgTm9uZSkpXG4gIHdpdGggXyAtPiBOb25lXG5cbmxldCAoKSA9XG4gIG1hdGNoIEFycmF5LnRvX2xpc3QgU3lzLmFyZ3Ygd2l0aFxuICB8IG5hbWUgOjogXCJpbmxpbmUtdGVzdC1ydW5uZXJcIiA6OiBsaWIgOjogcmVzdFxuICAgIHdoZW4gQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5hbV90ZXN0aW5nIC0+IGJlZ2luXG4gICAgICAoKiB3aGVuIHdlIHNlZSB0aGlzIGFyZ3VtZW50LCB3ZSBzd2l0Y2ggdG8gdGVzdCBtb2RlICopXG4gICAgICBsZXQgdGVzdHMgPSByZWYgW10gaW5cbiAgICAgIGxldCBsaXN0X3BhcnRpdGlvbnMgPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBwYXJ0aXRpb24gPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHRhZ19wcmVkaWNhdGUgPSByZWYgVGFnX3ByZWRpY2F0ZS5lbmFibGVfZXZlcnl0aGluZyBpblxuICAgICAgbGV0IG5hbWVfZmlsdGVyID0gcmVmIFtdIGluXG4gICAgICBwYXJzZV9hcmd2IChBcnJheS5vZl9saXN0IChuYW1lIDo6IHJlc3QpKSAoQXJnLmFsaWduIFtcbiAgICAgICAgXCItbGlzdC10ZXN0LW5hbWVzXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF90ZXN0X25hbWVzIDo9IHRydWU7IHZlcmJvc2UgOj0gdHJ1ZSksXG4gICAgICAgIFwiIERvIG5vdCBydW4gdGVzdHMgYnV0IHNob3cgd2hhdCB3b3VsZCBoYXZlIGJlZW4gcnVuXCI7XG4gICAgICAgIFwiLWxpc3QtcGFydGl0aW9uc1wiLCBBcmcuVW5pdCAoZnVuICgpIC0+IGxpc3RfcGFydGl0aW9ucyA6PSB0cnVlKSxcbiAgICAgICAgXCIgTGlzdHMgYWxsIHRoZSBwYXJ0aXRpb25zIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUgdGVzdCBvciB0ZXN0X21vZHVsZVwiO1xuICAgICAgICBcIi1wYXJ0aXRpb25cIiwgQXJnLlN0cmluZyAoZnVuIGkgLT4gcGFydGl0aW9uIDo9IFNvbWUgaSksXG4gICAgICAgIFwiIE9ubHkgcnVuIHRoZSB0ZXN0cyBpbiB0aGUgZ2l2ZW4gcGFydGl0aW9uXCI7XG4gICAgICAgIFwiLXZlcmJvc2VcIiwgQXJnLlNldCB2ZXJib3NlLCBcIiBTaG93IHRoZSB0ZXN0cyBhcyB0aGV5IHJ1blwiO1xuICAgICAgICBcIi1zdG9wLW9uLWVycm9yXCIsIEFyZy5TZXQgc3RvcF9vbl9lcnJvciwgXCIgUnVuIHRlc3RzIG9ubHkgdXAgdG8gdGhlIGZpcnN0IGVycm9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2Vzbid0IHdvcmsgZm9yIGV4cGVjdCB0ZXN0cylcIjtcbiAgICAgICAgXCItc3RyaWN0XCIsIEFyZy5TZXQgc3RyaWN0LCBcIiBFbmQgd2l0aCBhbiBlcnJvciBpZiBubyB0ZXN0cyB3ZXJlIHJ1blwiO1xuICAgICAgICBcIi1zaG93LWNvdW50c1wiLCBBcmcuU2V0IHNob3dfY291bnRzLCBcIiBTaG93IHRoZSBudW1iZXIgb2YgdGVzdHMgcmFuXCI7XG4gICAgICAgIFwiLWxvZ1wiLCBBcmcuVW5pdCAoZnVuICgpIC0+XG4gICAgICAgICAgKHRyeSBTeXMucmVtb3ZlIFwiaW5saW5lX3Rlc3RzLmxvZ1wiIHdpdGggXyAtPiAoKSk7XG4gICAgICAgICAgbG9nIDo9IFNvbWUgKG9wZW5fb3V0IFwiaW5saW5lX3Rlc3RzLmxvZ1wiKVxuICAgICAgICApLCBcIiBMb2cgdGhlIHRlc3RzIHJ1biBpbiBpbmxpbmVfdGVzdHMubG9nXCI7XG4gICAgICAgIFwiLWRyb3AtdGFnXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLmRyb3AgIXRhZ19wcmVkaWNhdGUgc1xuICAgICAgICApLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyBub3QgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyAtcmVxdWlyZS10YWcpXCI7XG4gICAgICAgIFwiLXJlcXVpcmUtdGFnXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLnJlcXVpcmUgIXRhZ19wcmVkaWNhdGUgc1xuICAgICAgICApLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1kcm9wLXRhZylcIjtcbiAgICAgICAgXCItbWF0Y2hpbmdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gbmFtZV9maWx0ZXIgOj0gcyA6OiAhbmFtZV9maWx0ZXIpLFxuICAgICAgICBcInN1YnN0cmluZyBPbmx5IHJ1biB0ZXN0cyB3aG9zZSBuYW1lcyBjb250YWluIHRoZSBnaXZlbiBzdWJzdHJpbmdcIjtcbiAgICAgICAgXCItb25seS10ZXN0XCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgbGV0IGZpbGVuYW1lLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBwYXJzZV9kZXNjciBzIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoZmlsZSwgaW5kZXgpIC0+IGZpbGUsIGluZGV4XG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJzonIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc6JyBpblxuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFN0cmluZy5zdWIgcyAwIGkgaW5cbiAgICAgICAgICAgICAgICBsZXQgaW5kZXhfc3RyaW5nID0gU3RyaW5nLnN1YiBzIChpICsgMSkgKFN0cmluZy5sZW5ndGggcyAtIGkgLSAxKSBpblxuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpbmRleF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJBcmd1bWVudCAlcyBkb2Vzbid0IGZpdCB0aGUgZm9ybWF0IGZpbGVuYW1lWzpsaW5lX251bWJlcl1cXG4lIVwiIHM7XG4gICAgICAgICAgICAgICAgICAgIGV4aXQgMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUsIFNvbWUgaW5kZXhcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHMsIE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIHRlc3RzIDo9IChmaWxlbmFtZSwgaW5kZXgsIHJlZiBmYWxzZSkgOjogIXRlc3RzXG4gICAgICAgICksIFwibG9jYXRpb24gUnVuIG9ubHkgdGhlIHRlc3RzIHNwZWNpZmllZCBieSBhbGwgdGhlIC1vbmx5LXRlc3Qgb3B0aW9ucy5cbiAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbnMgY2FuIGJlIG9uZSBvZiB0aGVzZSBmb3JtczpcbiAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWxcbiAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWw6bGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiXG4gICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyM1xuICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjMsIGNoYXJhY3RlcnMgMi0zXCI7XG4gICAgICAgIFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIFN1bW1hcml6ZSB0ZXN0cyB3aXRob3V0IHVzaW5nIGNvbG9yXCI7XG4gICAgICAgIFwiLWluLXBsYWNlXCIsIEFyZy5TZXQgaW5fcGxhY2UsIFwiIFVwZGF0ZSBleHBlY3QgdGVzdHMgaW4gcGxhY2VcIjtcbiAgICAgICAgXCItZGlmZi1jbWRcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcyksXG4gICAgICAgIFwiIERpZmYgY29tbWFuZCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGRpZmZpbmcgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIjtcbiAgICAgICAgXCItYWxsb3ctb3V0cHV0LXBhdHRlcm5zXCIsIEFyZy5TZXQgYWxsb3dfb3V0cHV0X3BhdHRlcm5zLFxuICAgICAgICBcIiBBbGxvdyBvdXRwdXQgcGF0dGVybnMgaW4gdGVzdHMgZXhwZWN0YXRpb25zXCI7XG4gICAgICAgIFwiLXNvdXJjZS10cmVlLXJvb3RcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gc291cmNlX3RyZWVfcm9vdCA6PSBTb21lIHMpLFxuICAgICAgICBcIiBQYXRoIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZVwiXG4gICAgICBdKSAoZnVuIGFub24gLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogdW5leHBlY3RlZCBhbm9ueW1vdXMgYXJndW1lbnQgJXNcXG4lIVwiIG5hbWUgYW5vbjtcbiAgICAgICAgZXhpdCAxXG4gICAgICApIChQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIFthcmdzXVwiIG5hbWUgXCJpbmxpbmUtdGVzdC1ydW5uZXJcIiBsaWIpO1xuICAgICAgQWN0aW9uLnNldCAoXG4gICAgICAgIGBUZXN0X21vZGVcbiAgICAgICAgICB7IHdoaWNoX3Rlc3RzID1cbiAgICAgICAgICAgICAgeyBsaWJuYW1lID0gbGliXG4gICAgICAgICAgICAgIDsgb25seV90ZXN0X2xvY2F0aW9uID0gIXRlc3RzO1xuICAgICAgICAgICAgICAgIHdoaWNoX3RhZ3MgPSAhdGFnX3ByZWRpY2F0ZTtcbiAgICAgICAgICAgICAgICBuYW1lX2ZpbHRlciA9ICFuYW1lX2ZpbHRlclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgOyB3aGF0X3RvX2RvID1cbiAgICAgICAgICAgICAgaWYgIWxpc3RfcGFydGl0aW9uc1xuICAgICAgICAgICAgICB0aGVuIGBMaXN0X3BhcnRpdGlvbnNcbiAgICAgICAgICAgICAgZWxzZSBgUnVuX3BhcnRpdGlvbiAhcGFydGl0aW9uXG4gICAgICAgICAgfSlcbiAgICBlbmRcbiAgfCBfIC0+XG4gICAgKClcblxubGV0IGFtX3Rlc3RfcnVubmVyID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYFRlc3RfbW9kZSBfIC0+IHRydWVcbiAgfCBgSWdub3JlIC0+IGZhbHNlXG5cbmxldCBhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIgPVxuICAoKiBmb3IgYXBwcm94aW1hdGUgY29tcGF0aWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdmFyaWFibGUgaXMgbm90IGV4YWN0bHkgZXF1aXZhbGVudFxuICAgICB0byB3aGF0IFBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVCB1c2VkIHRvIGJlICopXG4gIFwiVEVTVElOR19GUkFNRVdPUktcIlxuXG4oKiBUaGlzIHZhbHVlIGlzIGRlcHJlY2F0ZWQgaW4gcHJpbmNpcGxlLCBpbiBmYXZvciBvZiBDb3JlLmFtX3J1bm5pbmdfdGVzdCwgc29cbiAgIHdlJ3JlIGdvaW5nIHRvIGxpdmUgd2l0aCB0aGUgdWdseSBwYXR0ZXJuIG1hdGNoLiAqKVxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3QgPVxuICBtYXRjaCBTeXMuZ2V0ZW52IFwiUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUXCIgd2l0aFxuICB8IChfIDogc3RyaW5nKSAtPiB0cnVlICgqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcGVvcGxlIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBkaXJlY3RseSAqKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICBtYXRjaCBTeXMuZ2V0ZW52IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RfZW52X3ZhciB3aXRoXG4gICAgfCBcImlubGluZS10ZXN0XCIgLT4gdHJ1ZVxuICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBmYWxzZVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgdGVzdGluZyA9XG4gIGlmIGFtX3Rlc3RfcnVubmVyXG4gIHRoZW4gYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyXG4gIGVsc2VcbiAgICAoaWYgYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuICAgICB0aGVuIGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lclxuICAgICBlbHNlIGBOb3RfdGVzdGluZylcblxubGV0IHdhbGxfdGltZV9jbG9ja19ucyAoKSA9XG4gIFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKClcblxuXG5sZXQgd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSA9IGxhenkgKFxuICBCYXNlLlN0cmluZy5TZWFyY2hfcGF0dGVybi5jcmVhdGUgKF9fTU9EVUxFX18gXiBcIi5cIiBeIFwidGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHNcIikpXG5cbmxldCB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGJlZm9yZV9ucyA9IHdhbGxfdGltZV9jbG9ja19ucyAoKSBpblxuICBsZXQgcmVzID1cbiAgICAoKiBUbyBhdm9pZCBub2lzZSBpbiBiYWNrdHJhY2VzLCB3ZSBkbyB0d28gdGhpbmdzLlxuXG4gICAgICAgV2UgdXNlIFt3aGVyZV90b19jdXRfYmFja3RyYWNlXSBhYm92ZSB0byByZW1vdmUgdGhlIHN0YWNrIGZyYW1lcyBmb3IgdGhlIGN1cnJlbnRcbiAgICAgICBmdW5jdGlvbiBhbmQgYW55IGZ1bmN0aW9uIGl0IGdldHMgaW5saW5lZCBpbnRvLCBhcyBpdCdzIG5vdCBvZiBhbnkgaW50ZXJlc3QgdG8gdGhlXG4gICAgICAgdXNlciwgc2luY2UgaXQncyBub3QgdGFsa2luZyBhYm91dCB0aGVpciB0ZXN0IGJ1dCBpbnN0ZWFkIHRhbGtpbmcgYWJvdXQgdGhlXG4gICAgICAgcHB4X2lubGluZV90ZXN0IG1hY2hpbmVyeS5cblxuICAgICAgIFdlIGFsc28gYXZvaWQgaW5zZXJ0aW5nIGFueSBjb2RlIGJldHdlZW4gdGhlIFtmXSB0aGF0IGNvbWVzIGZyb20gdGhlIHVzZXIncyBmaWxlXG4gICAgICAgYW5kIGdyYWJiaW5nIHRoZSBiYWNrdHJhY2UgZnJvbSBpdHMgZXhjZXB0aW9ucyAobm8gd3JhcHBpbmcgb2YgW2ZdIHdpdGggaGlnaCBvcmRlclxuICAgICAgIGZ1bmN0aW9ucyBsaWtlIEV4bi5wcm90ZWN0LCBvciAoZnVuICgpIC0+IGYgKCk7IHRydWUpKS4gKilcbiAgICB0cnkgT2sgKGYgKCkpXG4gICAgd2l0aCBleG4gLT4gRXJyb3IgKGV4biwgUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgaW5cbiAgdGltZV9zZWMgOj0gQmFzZS5JbnQ2My4od2FsbF90aW1lX2Nsb2NrX25zICgpIC0gYmVmb3JlX25zIHw+IHRvX2Zsb2F0KSAgLy4gMWU5O1xuICByZXNcblxuXG5sZXQgc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUgPSBsYXp5IChTdGRsaWIuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTAwOyAyMDA7IDMwMCB8XSlcbmxldCBzYXZlZF9iYXNlX3JhbmRvbV9zdGF0ZSA9IGxhenkgKEJhc2UuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTExOyAyMjI7IDMzMyB8XSlcblxubGV0IHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGNhbWxfcmFuZG9tX3N0YXRlID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgbGV0IGJhc2VfcmFuZG9tX3N0YXRlID0gQmFzZS5SYW5kb20uU3RhdGUuY29weSBCYXNlLlJhbmRvbS5TdGF0ZS5kZWZhdWx0IGluXG4gIFN0ZGxpYi5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlKTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlKTtcbiAgbGV0IHJlc3VsdCA9IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgY2FtbF9yYW5kb21fc3RhdGU7XG4gIEJhc2UuUmFuZG9tLnNldF9zdGF0ZSBiYXNlX3JhbmRvbV9zdGF0ZTtcbiAgcmVzdWx0XG5cbmxldCBzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpID1cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChcbiAgICBMaXN0Lm1hcCAoZnVuIHMgLT4gXCIgIGluIFRFU1wiIF4gXCJUX01PRFVMRSBhdCBcIiBeIFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgcyBeIFwiXFxuXCIpXG4gICAgICAoTW9kdWxlX2NvbnRleHQuY3VycmVudF9kZXNjciAoKSlcbiAgKVxuXG5sZXQgcG9zaXRpb25fbWF0Y2ggZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBsID1cbiAgTGlzdC5leGlzdHMgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgdXNlZCkgLT5cbiAgICBsZXQgcG9zaXRpb25fc3RhcnQgPVxuICAgICAgU3RyaW5nLmxlbmd0aCBkZWZfZmlsZW5hbWUgLSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgbGV0IGZvdW5kID1cbiAgICAgIHBvc2l0aW9uX3N0YXJ0ID49IDAgJiZcbiAgICAgIGxldCBlbmRfb2ZfZGVmX2ZpbGVuYW1lID1cbiAgICAgICAgU3RyaW5nLnN1YiBkZWZfZmlsZW5hbWVcbiAgICAgICAgICBwb3NpdGlvbl9zdGFydFxuICAgICAgICAgIChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKSBpblxuICAgICAgZW5kX29mX2RlZl9maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAmJiAocG9zaXRpb25fc3RhcnQgPSAwIHx8IGRlZl9maWxlbmFtZS5bcG9zaXRpb25fc3RhcnQgLSAxXSA9ICcvJylcbiAgICAgICYmIChtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gZGVmX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIpXG4gICAgaW5cbiAgICBpZiBmb3VuZCB0aGVuIHVzZWQgOj0gdHJ1ZTtcbiAgICBmb3VuZFxuICApIGxcblxubGV0IG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciBkZXNjciA9XG4gIG1hdGNoIG5hbWVfZmlsdGVyIHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyA6OiBfIC0+XG4gICAgTGlzdC5leGlzdHMgKGZ1biBzdWJzdHJpbmcgLT4gQmFzZS5TdHJpbmcuaXNfc3Vic3RyaW5nIH5zdWJzdHJpbmcgZGVzY3IpIG5hbWVfZmlsdGVyXG5cbmxldCBwcmludF9kZWxheWVkX2Vycm9ycyAoKSA9XG4gIG1hdGNoIExpc3QucmV2ICFkZWxheWVkX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBfIDo6IF8gYXMgZGVsYXllZF9lcnJvcnMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcIlxcbiVzXFxuJSFcIiAoU3RyaW5nLm1ha2UgNzAgJz0nKTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBtZXNzYWdlIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBtZXNzYWdlXG4gICAgKSBkZWxheWVkX2Vycm9yc1xuXG5sZXQgZXByaW50Zl9vcl9kZWxheSBmbXQgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBzIC0+XG4gICAgaWYgIXZlcmJvc2UgdGhlbiBkZWxheWVkX2Vycm9ycyA6PSBzIDo6ICFkZWxheWVkX2Vycm9yc1xuICAgIGVsc2UgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcztcbiAgICBpZiAhc3RvcF9vbl9lcnJvciB0aGVuIGJlZ2luXG4gICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgIGV4aXQgMlxuICAgIGVuZFxuICApIGZtdFxuXG5sZXQgYWRkX2hvb2tzICgobW9kdWxlIEMpIDogY29uZmlnKSBmID1cbiAgZnVuICgpIC0+IEMucHJlX3Rlc3RfaG9vayAoKTsgZiAoKVxuXG5sZXQgaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgPVxuICBsZXQgb3BlbiBCYXNlIGluXG4gIGJhY2t0cmFjZVxuICB8PiBTdHJpbmcuc3BsaXRfbGluZXNcbiAgfD4gTGlzdC50YWtlX3doaWxlIH5mOihmdW4gc3RyIC0+XG4gICAgbm90IChTdHJpbmcuU2VhcmNoX3BhdHRlcm4ubWF0Y2hlcyAoZm9yY2Ugd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSkgc3RyKSlcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCIgIFwiIF4gc3RyIF4gXCJcXG5cIilcbiAgfD4gU3RyaW5nLmNvbmNhdFxuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lIH5saW5lX251bWJlcjpkZWZfbGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydF9wb3MgfmVuZF9wb3MgZiBib29sX29mX2YgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb247IHdoaWNoX3RhZ3M7IG5hbWVfZmlsdGVyIH07IHdoYXRfdG9fZG8gfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyID0gbGF6eSAoZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MpIGluXG4gICAgbGV0IGNvbXBsZXRlX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAmJiBiZWdpbiBtYXRjaCBvbmx5X3Rlc3RfbG9jYXRpb24gd2l0aFxuICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgfCBfIDo6IF8gLT4gcG9zaXRpb25fbWF0Y2ggZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBvbmx5X3Rlc3RfbG9jYXRpb25cbiAgICAgIGVuZFxuICAgICAgJiYgbm90IChUYWdfcHJlZGljYXRlLmRpc2FibGVkIHdoaWNoX3RhZ3MgfmNvbXBsZXRlX3RhZ3MpXG4gICAgICAmJiBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgKExhenkuZm9yY2UgZGVzY3IpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb24gdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBkZXNjciA9IExhenkuZm9yY2UgZGVzY3IgaW5cbiAgICAgICAgICBpbmNyIHRlc3RzX3JhbjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCAhbG9nIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgY2ggLT4gUHJpbnRmLmZwcmludGYgY2ggXCIlc1xcbiVzXCIgZGVzY3IgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIFByaW50Zi5wcmludGYgXCIlcyUhXCIgZGVzY3JcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBpZiAhbGlzdF90ZXN0X25hbWVzXG4gICAgICAgICAgICB0aGVuIE9rIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCogU2VlIFt0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc10gZm9yIHdoeSB3ZSB1c2UgW2Jvb2xfb2ZfZl1cbiAgICAgICAgICAgICAgICAgcmF0aGVyIGhhdmUgdGhlIGNhbGxlciB3cmFwIFtmXSB0byBhZGp1c3QgaXRzIHJldHVybiB2YWx1ZS4gKilcbiAgICAgICAgICAgICAgUmVzdWx0Lm1hcCBib29sX29mX2YgKHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogSWYgIWxpc3RfdGVzdF9uYW1lcywgdGhpcyBpcyBpcyBhIGhhcm1sZXNzIHplcm8uICopXG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBQcmludGYucHJpbnRmIFwiICglLjNmIHNlYylcXG4lIVwiICF0aW1lX3NlYztcbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgdHJ1ZSAtPiAoKVxuICAgICAgICAgIHwgT2sgZmFsc2UgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIGlzIGZhbHNlLlxcbiVzXFxuJSFcIiBkZXNjclxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIiBkZXNjciBzZXAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2UgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgIGVuZFxuICAgIGVuZFxuXG5sZXQgc2V0X2xpYl9hbmRfcGFydGl0aW9uIHN0YXRpY19saWIgcGFydGl0aW9uID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAoKiBwb3NzaWJsZSBpZiB0aGUgaW50ZXJmYWNlIGlzIHVzZWQgZXhwbGljaXRseSBvciBpZiB3ZSBoYXBwZW4gdG8gZHlubGluayBzb21ldGhpbmdcbiAgICAgICB0aGF0IGNvbnRhaW4gdGVzdHMgKilcbiAgICAoKVxuICB8IE5vbmUgLT5cbiAgICBkeW5hbWljX2xpYiA6PSBTb21lIHN0YXRpY19saWI7XG4gICAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gICAgfCBgSWdub3JlIC0+ICgpXG4gICAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHM7IHdoYXRfdG9fZG8gfSAtPlxuICAgICAgaWYgd2hpY2hfdGVzdHMubGlibmFtZSA9IHN0YXRpY19saWIgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcmVxdWlyZXNfcGFydGl0aW9uID1cbiAgICAgICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgfCBgUnVuX3BhcnRpdGlvbiAoU29tZSBfKSAtPiB0cnVlXG4gICAgICAgICAgfCBgUnVuX3BhcnRpdGlvbiBOb25lIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGlmIHBhcnRpdGlvbiA9IFwiXCIgJiYgcmVxdWlyZXNfcGFydGl0aW9uXG4gICAgICAgIHRoZW4gZmFpbHdpdGggXCJwcHhfaW5saW5lX3Rlc3Q6IGNhbm5vdCB1c2UgLWxpc3QtcGFydGl0aW9uIG9yIC1wYXJ0aXRpb24gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEgcGFydGl0aW9uIGF0IHByZXByb2Nlc3NpbmcgdGltZVwiXG4gICAgICAgIGVsc2UgUGFydGl0aW9uLnNldF9jdXJyZW50IHBhcnRpdGlvblxuICAgICAgZW5kXG5cbmxldCB1bnNldF9saWIgc3RhdGljX2xpYiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIG5vdCBnaXZpbmcgYW4gZXJyb3IsIGJlY2F1c2Ugd2hlbiBzb21lIGFubm95aW5nIHBlb3BsZSBwdXQgcGFfb3VuaXQgaW4gdGhlaXIgbGlzdFxuICAgICAgIG9mIHByZXByb2Nlc3NvcnMsIHBhX291bml0IGlzIHNldCB1cCB0d2ljZSBhbmQgd2UgaGF2ZSB0d28gY2FsbHMgdG8gdW5zZXRfbGliIGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgZmlsZSwgYW5kIHRoZSBzZWNvbmQgb25lIGNvbWVzIGluIHRoaXMgYnJhbmNoICopXG4gICAgKClcbiAgfCBTb21lIGxpYiAtPlxuICAgIGlmIGxpYiA9IHN0YXRpY19saWIgdGhlbiBkeW5hbWljX2xpYiA6PSBOb25lXG5cbmxldCB0ZXN0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3NcbiAgICBmIChmdW4gYiAtPiBiKVxuXG5sZXQgdGVzdF91bml0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3NcbiAgICBmIChmdW4gKCkgLT4gdHJ1ZSlcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfbW9kdWxlIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZTpkZWZfZmlsZW5hbWUgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uID0gXzsgbmFtZV9maWx0ZXIgPSBfOyB3aGljaF90YWdzIH07IHdoYXRfdG9fZG8gfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyICgpID0gZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MgaW5cbiAgICBsZXQgcGFydGlhbF90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgKCogSWYsIG5vIG1hdHRlciB3aGF0IHRhZ3MgYSB0ZXN0IGRlZmluZXMsIHdlIGNlcnRhaW5seSB3aWxsIGRyb3AgYWxsIHRlc3RzIHdpdGhpblxuICAgICAgICAgdGhpcyBtb2R1bGUsIHRoZW4gZG9uJ3QgcnVuIHRoZSBtb2R1bGUgYXQgYWxsLiBUaGlzIG1lYW5zIHBlb3BsZSBjYW4gd3JpdGVcbiAgICAgICAgIHRoaW5ncyBsaWtlIHRoZSBmb2xsb3dpbmcgd2l0aG91dCBicmVha2luZyB0aGUgMzItYml0IGJ1aWxkOlxuICAgICAgICAgbGV0JXRlc3RfbW9kdWxlIFtAdGFncyBcIjY0LWJpdHMtb25seVwiXSA9IChtb2R1bGUgc3RydWN0XG4gICAgICAgICBsZXQgaSA9IEludDY0LnRvX2ludF9leG4gLi4uLlxuICAgICAgICAgZW5kKVxuICAgICAgICAgV2UgZG9uJ3Qgc2hvcnRjdXQgYmFzZWQgb24gcG9zaXRpb24sIGFzIHdlIGNhbid0IHRlbGwgd2hhdCBwb3NpdGlvbnMgdGhlXG4gICAgICAgICBpbm5lciB0ZXN0cyB3aWxsIGhhdmUuICopXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZW50aXJlX21vZHVsZV9kaXNhYmxlZCB3aGljaF90YWdzIH5wYXJ0aWFsX3RhZ3MpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb24gdGhlbiBiZWdpblxuICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICAgICBsZXQgZGVzY3IgPSBkZXNjciAoKSBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBNb2R1bGVfY29udGV4dC53aXRoXyB+ZGVzY3IgfnRhZ3MgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAoKiBXZSBkbyBub3QgcmVzZXQgcmFuZG9tIHN0YXRlcyB1cG9uIGVudGVyaW5nIFtsZXQldGVzdF9tb2R1bGVdLlxuXG4gICAgICAgICAgICAgICAgIENvbjogQ29kZSBpbiB0ZXN0IG1vZHVsZXMgY2FuIGFjY2lkZW50YWxseSBkZXBlbmQgb24gdG9wLWxldmVsIHJhbmRvbVxuICAgICAgICAgICAgICAgICBzdGF0ZSBlZmZlY3RzLlxuXG4gICAgICAgICAgICAgICAgIFByb3M6ICgxKSBXZSBkb24ndCByZXNldCB0byB0aGUgc2FtZSBzZWVkIG9uIGVudGVyaW5nIGEgW2xldCV0ZXN0X21vZHVsZV1cbiAgICAgICAgICAgICAgICAgYW5kIHRoZW4gYSBbbGV0JXRlc3RdIGluc2lkZSB0aGF0IG1vZHVsZSwgd2hpY2ggY291bGQgbGVhZCB0b1xuICAgICAgICAgICAgICAgICBhY2NpZGVudGFsbHkgcmFuZG9tbHkgZ2VuZXJhdGluZyB0aGUgc2FtZSB2YWx1ZXMgaW4gc29tZSB0ZXN0LiAoMikgTW92aW5nXG4gICAgICAgICAgICAgICAgIGNvZGUgaW50byBhbmQgb3V0IG9mIFtsZXQldGVzdF9tb2R1bGVdIGRvZXMgbm90IGNoYW5nZSBpdHMgcmFuZG9tIHNlZWQuXG4gICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgIHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX2ZhaWxlZDtcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSBpblxuICAgICAgICAgICAgbGV0IGV4bl9zdHIgPSBTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgZXhuIGluXG4gICAgICAgICAgICBsZXQgc2VwID0gaWYgU3RyaW5nLmNvbnRhaW5zIGV4bl9zdHIgJ1xcbicgdGhlbiBcIlxcblwiIGVsc2UgXCIgXCIgaW5cbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXkgKFwiVEVTXCIgXl4gXCJUX01PRFVMRSBhdCAlcyB0aHJldyVzJXMuXFxuJXMlc1xcbiUhXCIpXG4gICAgICAgICAgICAgIChTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGRlc2NyKSBzZXAgZXhuX3N0ciBiYWNrdHJhY2UgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgIGVuZFxuICAgIGVuZFxuXG5sZXQgc3VtbWFyaXplICgpID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPlxuICAgIGlmIFN5cy5hcmd2IDw+IFt8fF0gJiYgRmlsZW5hbWUuYmFzZW5hbWUgU3lzLmFyZ3YuKDApID0gXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZVwiIHRoZW5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGUgaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJ1biBieSBoYW5kLCB5b3UgXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcnVuIHRoZSBpbmxpbmVfdGVzdHNfcnVubmVyIHNjcmlwdCBpbnN0ZWFkLlxcbiUhXCJcbiAgICBlbHNlXG4gICAgICBQcmludGYuZXByaW50ZiBcIllvdSBhcmUgZG9pbmcgc29tZXRoaW5nIHVuZXhwZWN0ZWQgd2l0aCB0aGUgdGVzdHMuIE5vIHRlc3RzIGhhdmUgXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICBiZWVuIHJ1bi4gWW91IHNob3VsZCB1c2UgdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IHRvIHJ1biBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLlxcbiUhXCI7XG4gICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSBfOyB3aGF0X3RvX2RvID0gYExpc3RfcGFydGl0aW9ucyB9IC0+XG4gICAgTGlzdC5pdGVyIChQcmludGYucHJpbnRmIFwiJXNcXG5cIikgKFBhcnRpdGlvbi5hbGwgKCkpO1xuICAgIFRlc3RfcmVzdWx0LlN1Y2Nlc3NcbiAgfCBgVGVzdF9tb2RlIHsgd2hhdF90b19kbyA9IGBSdW5fcGFydGl0aW9uIF87IHdoaWNoX3Rlc3RzIH0gLT4gYmVnaW5cbiAgICAgIGJlZ2luIG1hdGNoICFsb2cgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2ggLT4gY2xvc2Vfb3V0IGNoXG4gICAgICBlbmQ7XG4gICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgIG1hdGNoICF0ZXN0c19mYWlsZWQsICF0ZXN0X21vZHVsZXNfZmFpbGVkIHdpdGhcbiAgICAgIHwgMCwgMCAtPiBiZWdpblxuICAgICAgICAgIGlmICFzaG93X2NvdW50cyB0aGVuIGJlZ2luXG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVkIHRlc3RzIHJhbiwgJWQgdGVzdF9tb2R1bGVzIHJhblxcbiUhXCIgIXRlc3RzX3JhbiAhdGVzdF9tb2R1bGVzX3JhblxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgIGxldCB1bnVzZWRfdGVzdHMgPVxuICAgICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIChfLCBfLCB1c2VkKSAtPiBub3QgIXVzZWQpIHdoaWNoX3Rlc3RzLm9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIHVudXNlZF90ZXN0cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgIHwgXyA6OiBfIC0+IFNvbWUgdW51c2VkX3Rlc3RzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBlcnJvcnMgd2l0aFxuICAgICAgICAgIHwgU29tZSB0ZXN0cyAtPlxuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IHRoZSBmb2xsb3dpbmcgLW9ubHktdGVzdCBmbGFncyBtYXRjaGVkIG5vdGhpbmc6XCI7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzXCIgZmlsZW5hbWVcbiAgICAgICAgICAgICAgfCBTb21lIGxpbmVfbnVtYmVyIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzOiVkXCIgZmlsZW5hbWUgbGluZV9udW1iZXJcbiAgICAgICAgICAgICkgdGVzdHM7XG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcIi5cXG4lIVwiO1xuICAgICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGlmICF0ZXN0c19yYW4gPSAwICYmICFzdHJpY3QgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBQcmludGYuZXByaW50ZiBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogbm8gdGVzdHMgaGF2ZSBiZWVuIHJ1bi5cXG4lIVwiO1xuICAgICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICAgICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjb3VudCwgY291bnRfdGVzdF9tb2R1bGVzIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRkFJTEVEICVkIC8gJWQgdGVzdHMlc1xcbiUhXCIgY291bnQgIXRlc3RzX3JhblxuICAgICAgICAgIChpZiBjb3VudF90ZXN0X21vZHVsZXMgPSAwIHRoZW4gXCJcIiBlbHNlIFByaW50Zi5zcHJpbnRmIChcIiwgJWQgVEVTXCIgXl4gXCJUX01PRFVMRVNcIikgY291bnRfdGVzdF9tb2R1bGVzKTtcbiAgICAgICAgVGVzdF9yZXN1bHQuRmFpbHVyZVxuICAgIGVuZFxuXG5sZXQgdXNlX2NvbG9yID0gIXVzZV9jb2xvclxubGV0IGluX3BsYWNlICA9ICFpbl9wbGFjZVxubGV0IGRpZmZfY29tbWFuZCA9ICFkaWZmX2NvbW1hbmRcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gIXNvdXJjZV90cmVlX3Jvb3RcbmxldCBhbGxvd19vdXRwdXRfcGF0dGVybnMgPSAhYWxsb3dfb3V0cHV0X3BhdHRlcm5zXG5cbmxldCBldmFsdWF0b3JzID0gcmVmIFtzdW1tYXJpemVdXG5sZXQgYWRkX2V2YWx1YXRvciB+ZiA9IGV2YWx1YXRvcnMgOj0gZiA6OiAhZXZhbHVhdG9yc1xubGV0IGV4aXQgKCkgPVxuICBMaXN0Lm1hcCAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFldmFsdWF0b3JzKVxuICB8PiBUZXN0X3Jlc3VsdC5jb21iaW5lX2FsbFxuICB8PiBUZXN0X3Jlc3VsdC50b19leGl0X2NvZGVcbiAgfD4gZXhpdFxuIiwiKCogVE9ETzogbW92ZSB0aGlzIGFzIGEgcGFyYW1ldGVyICopXG5sZXQgZGVidWdfcHJpbnRpbmcgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBEZWJ1Z1ByaW50ID0gc2lnXG4gIHZhbCBkZWJ1Z19wcmludCA6IHN0cmluZyAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDpcbiAgICA/ZGVidWc6c3RyaW5nIC0+XG4gICAgP2VxOignYSAtPiAnYSAtPiBib29sKSAtPlxuICAgICdhIC0+XG4gICAgJ2EgdCAqICg/ZGVidWc6c3RyaW5nIC0+ICdhIC0+IHVuaXQpXG5cbiAgdmFsIHJlZ2lzdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXJfbHd0IDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCBMd3QudCkgLT4gdW5pdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhXG4gIHZhbCBzZXQgOiA/ZGVidWc6c3RyaW5nIC0+ICdhIHQgLT4gJ2EgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOlxuICAgID9kZWJ1ZzpzdHJpbmcgLT4gP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiAoJ2IgLT4gJ2EpIC0+ICdiIHQgLT4gJ2EgdFxuXG4gIHZhbCBmbWFwIDpcbiAgICA/ZGVidWc6c3RyaW5nIC0+XG4gICAgP2VxOignYSAtPiAnYSAtPiBib29sKSAtPlxuICAgICgnYiAtPiAnYSBvcHRpb24pIC0+XG4gICAgJ2EgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2EgdFxuXG4gIHZhbCBvbiA6ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbCB0IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgbDIgOiA/ZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYyAtPiAnYSkgLT4gJ2IgdCAtPiAnYyB0IC0+ICdhIHRcblxuICB2YWwgb2ZfcmVhY3Rfc2lnbmFsIDpcbiAgICA/ZGVidWc6c3RyaW5nIC0+ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgUmVhY3Quc2lnbmFsIC0+ICdhIHRcblxuICB2YWwgdG9fcmVhY3Rfc2lnbmFsIDogJ2EgdCAtPiAnYSBSZWFjdC5zaWduYWxcblxuICAoKiBhdHRlbXB0IHRvIGF2b2lkIEdDIGluIGNhc2UgVE9ETzogY2hlY2sgKilcbiAgKCogICB2YWwgbnVtYmVyX2xpbmtlZF9zaWduYWxzIDogdW5pdCAtPiBpbnQgKilcblxuICB2YWwgY29uc3QgOiAnYSAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgRSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogP2RlYnVnOnN0cmluZyAtPiB1bml0IC0+ICdhIHQgKiAoJ2EgLT4gdW5pdClcbiAgdmFsIHJlZ2lzdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgc2VuZCA6ICdhIHQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWFwIDogP2RlYnVnOnN0cmluZyAtPiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgdG9fcmVhY3RfZXZlbnQgOiAnYSB0IC0+ICdhIFJlYWN0LmV2ZW50XG5lbmRcblxubW9kdWxlIE1ha2VTIChEIDogRGVidWdQcmludCkgOiBTID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBtdXRhYmxlIHZhbHVlOiAnYTtcbiAgICBtdXRhYmxlIGhvb2tzOiAoJ2EgLT4gdW5pdCkgbGlzdDtcbiAgICBtdXRhYmxlIGhvb2tzX2x3dDogKCdhIC0+IHVuaXQgTHd0LnQpIGxpc3Q7XG4gICAgZXE6ICdhIC0+ICdhIC0+IGJvb2w7XG4gICAgc2lnbmFsOiAnYSBSZWFjdC5zaWduYWw7XG4gICAgc2V0X3NpZ25hbDogP3N0ZXA6UmVhY3Quc3RlcCAtPiAnYSAtPiB1bml0O1xuICAgIGRlYnVnOiBzdHJpbmc7XG4gICAgKCogc3RvcmUgc2lnbmFsIHJlc3VsdCBvZiBgbWFwYCB3aXRoIG9yaWdpbmFsIFJlYWN0LnNpZ25hbCxcbiAgICAgICBmbGFnZ2VkIGFzIGEgbmV2ZXIgcmVhZCByZWNvcmQgKilcbiAgICBtdXRhYmxlIGxpbmtfdG9fb3JpZ2luYWxfc2lnbmFsOiAnYSBSZWFjdC5zaWduYWwgb3B0aW9uO1xuICB9XG5cbiAgbGV0IF9kZWJ1Z19zdHJpbmcgKGhvb2tlZCA6ICdhIHQpIDogc3RyaW5nID0gaG9va2VkLmRlYnVnXG5cbiAgbGV0IF9sb2cgaG9va2VkIHMgPVxuICAgIGlmIGRlYnVnX3ByaW50aW5nIHRoZW5cbiAgICAgIEQuZGVidWdfcHJpbnQgKFByaW50Zi5zcHJpbnRmIFwiW0hvb2tlZC5TICVzXSAlc1wiIChfZGVidWdfc3RyaW5nIGhvb2tlZCkgcylcblxuICBsZXQgY3JlYXRlX25vX3NldCA/KGRlYnVnIDogc3RyaW5nID0gXCJ1bm5hbWVkIHNpZ25hbFwiKVxuICAgICAgPyhlcSA6ICdhIC0+ICdhIC0+IGJvb2wgPSAoID0gKSkgKGEgOiAnYSkgOiAnYSB0ID1cbiAgICBsZXQgc2lnbmFsLCBzZXRfc2lnbmFsID0gUmVhY3QuUy5jcmVhdGUgfmVxIGEgaW5cbiAgICBsZXQgaG9va2VkID1cbiAgICAgIHtcbiAgICAgICAgdmFsdWUgPSBhO1xuICAgICAgICBob29rcyA9IFtdO1xuICAgICAgICBob29rc19sd3QgPSBbXTtcbiAgICAgICAgZXE7XG4gICAgICAgIHNpZ25hbDtcbiAgICAgICAgc2V0X3NpZ25hbDtcbiAgICAgICAgZGVidWc7XG4gICAgICAgIGxpbmtfdG9fb3JpZ2luYWxfc2lnbmFsID0gTm9uZTtcbiAgICAgIH1cbiAgICBpblxuICAgIF9sb2cgaG9va2VkIFwiY3JlYXRlXCI7XG4gICAgaG9va2VkXG5cbiAgbGV0IHJlZ2lzdGVyIGhvb2tlZCBmID1cbiAgICBfbG9nIGhvb2tlZCBcInJlZ2lzdGVyXCI7XG4gICAgaG9va2VkLmhvb2tzIDwtIGYgOjogaG9va2VkLmhvb2tzXG5cbiAgbGV0IHJlZ2lzdGVyX2x3dCBob29rZWQgZiA9XG4gICAgX2xvZyBob29rZWQgXCJyZWdpc3RlclwiO1xuICAgIGhvb2tlZC5ob29rc19sd3QgPC0gZiA6OiBob29rZWQuaG9va3NfbHd0XG5cbiAgbGV0IHZhbHVlIGhvb2tlZCA9XG4gICAgX2xvZyBob29rZWQgXCJ2YWx1ZVwiO1xuICAgIGhvb2tlZC52YWx1ZVxuXG4gIGxldCBjYWxsX2hvb2tzIGhvb2tlZCA9XG4gICAgTGlzdC5pdGVyIChmdW4gZiAtPiBmIGhvb2tlZC52YWx1ZSkgaG9va2VkLmhvb2tzO1xuICAgIExpc3QuaXRlciAoZnVuIGYgLT4gZiBob29rZWQudmFsdWUgfD4gaWdub3JlKSBob29rZWQuaG9va3NfbHd0XG5cbiAgbGV0IHNldCA/KGRlYnVnID0gXCJcIikgaG9va2VkIHZhbHVlID1cbiAgICBsZXQgdmFsdWVfY2hhbmdlZCA9IGhvb2tlZC5lcSB2YWx1ZSBob29rZWQudmFsdWUgaW5cbiAgICBpZiBub3QgdmFsdWVfY2hhbmdlZCB0aGVuIChcbiAgICAgIF9sb2cgaG9va2VkXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIlNFVCBXSVRIIENIQU5HRVMlcywgcnVubmluZyAlZCBob29rc1wiXG4gICAgICAgICAgIChpZiBkZWJ1ZyA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgXCI6IFwiIF4gZGVidWdcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgXCJcIilcbiAgICAgICAgICAgKExpc3QubGVuZ3RoIGhvb2tlZC5ob29rcykpO1xuICAgICAgaG9va2VkLnZhbHVlIDwtIHZhbHVlO1xuICAgICAgY2FsbF9ob29rcyBob29rZWQ7XG4gICAgICBob29rZWQuc2V0X3NpZ25hbCB2YWx1ZVxuICAgICkgZWxzZVxuICAgICAgX2xvZyBob29rZWQgXCJzZXQgTk8gY2hhbmdlXCJcblxuICBsZXQgY3JlYXRlID8oZGVidWcgOiBzdHJpbmcgPSBcInVubmFtZWQgc2lnbmFsXCIpXG4gICAgICA/KGVxIDogJ2EgLT4gJ2EgLT4gYm9vbCA9ICggPSApKSAoYSA6ICdhKSA6XG4gICAgICAnYSB0ICogKD9kZWJ1ZzpzdHJpbmcgLT4gJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBob29rZWQgOiAnYSB0ID0gY3JlYXRlX25vX3NldCB+ZGVidWcgfmVxIGEgaW5cbiAgICBsZXQgc2V0X2hvb2tlZCA6ID9kZWJ1ZzpzdHJpbmcgLT4gJ2EgLT4gdW5pdCA9XG4gICAgIGZ1biA/KGRlYnVnIDogc3RyaW5nID0gXCJcIikgLT4gc2V0IH5kZWJ1ZyBob29rZWRcbiAgICBpblxuICAgIGhvb2tlZCwgc2V0X2hvb2tlZFxuXG4gIGxldCBtYXAgPyhkZWJ1ZyA6IHN0cmluZyA9IFwidW5uYW1lZCBzaWduYWxcIikgPyhlcSA6ICdhIC0+ICdhIC0+IGJvb2wgPSAoID0gKSlcbiAgICAgIGYgaG9va2VkID1cbiAgICBsZXQgbmV3X2hvb2tlZCA9IGNyZWF0ZV9ub19zZXQgfmRlYnVnIH5lcSAoZiAodmFsdWUgaG9va2VkKSkgaW5cbiAgICBfbG9nIGhvb2tlZCAoUHJpbnRmLnNwcmludGYgXCJiaW5kICVzIGZyb21cIiAoX2RlYnVnX3N0cmluZyBuZXdfaG9va2VkKSk7XG4gICAgcmVnaXN0ZXIgaG9va2VkIChmdW4gdmFsdWUgLT5cbiAgICAgICAgX2xvZyBob29rZWRcbiAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJzZXQgZnJvbSBiaW5kICVzIGZyb21cIiAoX2RlYnVnX3N0cmluZyBuZXdfaG9va2VkKSk7XG4gICAgICAgIHNldFxuICAgICAgICAgIH5kZWJ1ZzooUHJpbnRmLnNwcmludGYgXCJiaW5kIGZyb20gJXNcIiAoX2RlYnVnX3N0cmluZyBob29rZWQpKVxuICAgICAgICAgIG5ld19ob29rZWQgKGYgdmFsdWUpKTtcbiAgICBuZXdfaG9va2VkXG5cbiAgbGV0IGZtYXAgPyhkZWJ1ZyA6IHN0cmluZyA9IFwidW5uYW1lZCBzaWduYWxcIikgPyhlcSA6ICdhIC0+ICdhIC0+IGJvb2wgPSAoID0gKSlcbiAgICAgIGYgZGVmYXVsdCBob29rZWQgPVxuICAgIG1hcCB+ZGVidWcgfmVxXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICB8IE5vbmUgLT4gZGVmYXVsdClcbiAgICAgIGhvb2tlZFxuXG4gIGxldCBvbiA/KGVxIDogJ2EgLT4gJ2EgLT4gYm9vbCA9ICggPSApKSBjb25kX2hvb2tlZCBkZWZhdWx0IGhvb2tlZCA9XG4gICAgX2xvZyBob29rZWRcbiAgICAgIChcImNyZWF0aW5nIGBvbmAgd2l0aCBjb25kaXRpb24gYm9vbCBob29rZWQgYFwiIF4gY29uZF9ob29rZWQuZGVidWcgXiBcImBcIik7XG4gICAgbGV0IGluaXRpYWxfdmFsdWUgPVxuICAgICAgaWYgdmFsdWUgY29uZF9ob29rZWQgdGhlblxuICAgICAgICB2YWx1ZSBob29rZWRcbiAgICAgIGVsc2VcbiAgICAgICAgZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG5ld19ob29rZWQgPVxuICAgICAgY3JlYXRlX25vX3NldFxuICAgICAgICB+ZGVidWc6XG4gICAgICAgICAgKFwiYG9uYCBmcm9tIGBcIiBeIGhvb2tlZC5kZWJ1ZyBeIFwiYCB3aXRoIGNvbmQgYFwiIF4gY29uZF9ob29rZWQuZGVidWdcbiAgICAgICAgIF4gXCJgXCIpXG4gICAgICAgIH5lcSBpbml0aWFsX3ZhbHVlXG4gICAgaW5cbiAgICByZWdpc3RlciBjb25kX2hvb2tlZCAoZnVuIChiIDogYm9vbCkgLT5cbiAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgc2V0IH5kZWJ1ZzpcImBvbmAgZW5hYmxlXCIgbmV3X2hvb2tlZCAodmFsdWUgaG9va2VkKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc2V0IH5kZWJ1ZzpcImBvbmAgZGlzYWJsZVwiIG5ld19ob29rZWQgZGVmYXVsdCk7XG4gICAgcmVnaXN0ZXIgaG9va2VkIChmdW4gbmV3X3ZhbHVlIC0+XG4gICAgICAgIGlmIHZhbHVlIGNvbmRfaG9va2VkIHRoZW4gc2V0IH5kZWJ1ZzpcImBvbmAgdXBkYXRlXCIgbmV3X2hvb2tlZCBuZXdfdmFsdWUpO1xuICAgIG5ld19ob29rZWRcblxuICBsZXQgbDIgPyhlcSA6ICdhIC0+ICdhIC0+IGJvb2wgPSAoID0gKSkgKGYgOiAnYiAtPiAnYyAtPiAnYSkgKGhvb2tlZDEgOiAnYiB0KVxuICAgICAgKGhvb2tlZDIgOiAnYyB0KSA6ICdhIHQgPVxuICAgIGxldCBuZXdfaG9va2VkID1cbiAgICAgIGNyZWF0ZV9ub19zZXRcbiAgICAgICAgfmRlYnVnOihcImBjb21iaW5lIGZyb20gXCIgXiBob29rZWQxLmRlYnVnIF4gXCIgYW5kIFwiIF4gaG9va2VkMi5kZWJ1ZylcbiAgICAgICAgfmVxXG4gICAgICAgIChmICh2YWx1ZSBob29rZWQxKSAodmFsdWUgaG9va2VkMikpXG4gICAgaW5cbiAgICByZWdpc3RlciBob29rZWQxIChmdW4gbmV3X3ZhbHVlMSAtPlxuICAgICAgICBzZXQgfmRlYnVnOlwiYGNvbWJpbmVgIHVwZGF0ZVwiIG5ld19ob29rZWQgKGYgbmV3X3ZhbHVlMSAodmFsdWUgaG9va2VkMikpKTtcbiAgICByZWdpc3RlciBob29rZWQyIChmdW4gbmV3X3ZhbHVlMiAtPlxuICAgICAgICBzZXQgfmRlYnVnOlwiYGNvbWJpbmVgIHVwZGF0ZVwiIG5ld19ob29rZWQgKGYgKHZhbHVlIGhvb2tlZDEpIG5ld192YWx1ZTIpKTtcbiAgICBuZXdfaG9va2VkXG5cbiAgKCpcbiAgbGV0IHJlYWN0X3NpZ25hbF9saW5rcyA9IHJlZiBbXVxuXG4gIGxldCBudW1iZXJfbGlua2VkX3NpZ25hbHMgKCkgPSBMaXN0Lmxlbmd0aCAhcmVhY3Rfc2lnbmFsX2xpbmtzXG4qKVxuXG4gIGxldCBvZl9yZWFjdF9zaWduYWxcbiAgICAgID8oZGVidWcgOiBzdHJpbmcgPSBcInVubmFtZWQgc2lnbmFsIGNyZWF0ZWQgd2l0aCBvZl9yZWFjdF9zaWduYWxcIilcbiAgICAgID8oZXEgOiAnYSAtPiAnYSAtPiBib29sID0gKCA9ICkpIChzaWduYWwgOiAnYSBSZWFjdC5zaWduYWwpIDogJ2EgdCA9XG4gICAgbGV0IGhvb2tlZCA9IGNyZWF0ZV9ub19zZXQgfmRlYnVnIH5lcSAoUmVhY3QuUy52YWx1ZSBzaWduYWwpIGluXG5cbiAgICAoKiBBZGQgbWFwIHRvIHVwZGF0ZSB2YWx1ZSBpbiBob29rZWQgYW5kIHN0b3JlIGl0IGluc2lkZSBzdHJ1Y3QgKilcbiAgICBsZXQgbGlua190b19vcmlnaW5hbF9zaWduYWwgPVxuICAgICAgU29tZVxuICAgICAgICAoUmVhY3QuUy5tYXAgfmVxXG4gICAgICAgICAgICgqIGNvdWxkIGJlIHVzaW5nIGB0cmFjZWAgaGVyZSwgYnV0IGxldCdzIGJlIHNhZmUgd2l0aCB0aGUgR0M/IG5vIGNsdWUgKilcbiAgICAgICAgICAgICAoZnVuIG5ld192YWx1ZSAtPlxuICAgICAgICAgICAgIHNldCB+ZGVidWc6XCJmcm9tIG9mX3JlYWN0X3NpZ25hbCBzaWduYWxcIiBob29rZWQgbmV3X3ZhbHVlO1xuICAgICAgICAgICAgIG5ld192YWx1ZSlcbiAgICAgICAgICAgc2lnbmFsKVxuICAgIGluXG5cbiAgICAoKiAgICAgcmVhY3Rfc2lnbmFsX2xpbmtzIDo9IGxpbmtfdG9fb3JpZ2luYWxfc2lnbmFsIDo6ICFyZWFjdF9zaWduYWxfbGlua3M7ICopXG4gICAgaG9va2VkLmxpbmtfdG9fb3JpZ2luYWxfc2lnbmFsIDwtIGxpbmtfdG9fb3JpZ2luYWxfc2lnbmFsO1xuICAgIHNldCB+ZGVidWc6XCJ1cGRhdGUgYWZ0ZXIgbGluayB0byByZWFjdCBzaWduYWxcIiBob29rZWQgKFJlYWN0LlMudmFsdWUgc2lnbmFsKTtcbiAgICBob29rZWRcblxuICBsZXQgdG9fcmVhY3Rfc2lnbmFsIGhvb2tlZCA9IGhvb2tlZC5zaWduYWxcblxuICBsZXQgY29uc3QgdiA9XG4gICAgbGV0IGhvb2tlZCA9IGNyZWF0ZV9ub19zZXQgdiBpblxuICAgIHJlZ2lzdGVyIGhvb2tlZCAoZnVuIF8gLT5cbiAgICAgICAgcmFpc2UgKEZhaWx1cmUgXCJjb25zdCBob29rZWQuUyBoYXMgcmVjZWl2ZWQgYW4gYXR0ZW1wdCB0byBiZSBtb2RpZmllZFwiKSk7XG4gICAgaG9va2VkXG5lbmRcblxubW9kdWxlIE1ha2VFIChEIDogRGVidWdQcmludCkgOiBFID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBtdXRhYmxlIGhvb2tzOiAoJ2EgLT4gdW5pdCkgbGlzdDtcbiAgICBldmVudDogJ2EgUmVhY3QuZXZlbnQ7XG4gICAgc2VuZF9ldmVudDogP3N0ZXA6UmVhY3Quc3RlcCAtPiAnYSAtPiB1bml0O1xuICAgIGRlYnVnOiBzdHJpbmc7XG4gIH1cblxuICBsZXQgX2RlYnVnX3N0cmluZyAoaG9va2VkIDogJ2EgdCkgOiBzdHJpbmcgPSBob29rZWQuZGVidWdcblxuICBsZXQgX2xvZyBob29rZWQgcyA9XG4gICAgaWYgZGVidWdfcHJpbnRpbmcgdGhlblxuICAgICAgRC5kZWJ1Z19wcmludCAoUHJpbnRmLnNwcmludGYgXCJbSG9va2VkLkUgJXNdICVzXCIgKF9kZWJ1Z19zdHJpbmcgaG9va2VkKSBzKVxuXG4gIGxldCBjcmVhdGVfbm9fc2VuZCA/KGRlYnVnIDogc3RyaW5nID0gXCJ1bm5hbWVkIGV2ZW50XCIpICgpIDogJ2EgdCA9XG4gICAgbGV0IGV2ZW50LCBzZW5kX2V2ZW50ID0gUmVhY3QuRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaG9va2VkID0geyBob29rcyA9IFtdOyBldmVudDsgc2VuZF9ldmVudDsgZGVidWcgfSBpblxuICAgIF9sb2cgaG9va2VkIFwiY3JlYXRlXCI7XG4gICAgaG9va2VkXG5cbiAgbGV0IHJlZ2lzdGVyIGhvb2tlZCBmID1cbiAgICBfbG9nIGhvb2tlZCBcInJlZ2lzdGVyXCI7XG4gICAgaG9va2VkLmhvb2tzIDwtIGYgOjogaG9va2VkLmhvb2tzXG5cbiAgbGV0IHNlbmQgaG9va2VkIHZhbHVlID1cbiAgICBfbG9nIGhvb2tlZCBcInNlbmRcIjtcbiAgICBMaXN0Lml0ZXIgKGZ1biBmIC0+IGYgdmFsdWUpIGhvb2tlZC5ob29rcztcbiAgICBob29rZWQuc2VuZF9ldmVudCB2YWx1ZVxuXG4gIGxldCBjcmVhdGUgPyhkZWJ1ZyA6IHN0cmluZyA9IFwidW5uYW1lZCBzaWduYWxcIikgKCkgOiAnYSB0ICogKCdhIC0+IHVuaXQpID1cbiAgICBsZXQgaG9va2VkIDogJ2EgdCA9IGNyZWF0ZV9ub19zZW5kIH5kZWJ1ZyAoKSBpblxuICAgIGxldCBzZW5kX2hvb2tlZCA6ICdhIC0+IHVuaXQgPSBzZW5kIGhvb2tlZCBpblxuICAgIGhvb2tlZCwgc2VuZF9ob29rZWRcblxuICBsZXQgbWFwID8oZGVidWcgOiBzdHJpbmcgPSBcInVubmFtZWQgZXZlbnRcIikgaG9va2VkIGYgPVxuICAgIGxldCBuZXdfaG9va2VkID0gY3JlYXRlX25vX3NlbmQgfmRlYnVnICgpIGluXG4gICAgcmVnaXN0ZXIgaG9va2VkIChmdW4gdmFsdWUgLT5cbiAgICAgICAgX2xvZyBob29rZWRcbiAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJtYXAgc2VuZCAlcyBmcm9tXCIgKF9kZWJ1Z19zdHJpbmcgbmV3X2hvb2tlZCkpO1xuICAgICAgICBzZW5kIG5ld19ob29rZWQgKGYgdmFsdWUpKTtcbiAgICBfbG9nIGhvb2tlZCAoUHJpbnRmLnNwcmludGYgXCJtYXAgJXMgZnJvbVwiIChfZGVidWdfc3RyaW5nIG5ld19ob29rZWQpKTtcbiAgICBuZXdfaG9va2VkXG5cbiAgbGV0IHRvX3JlYWN0X2V2ZW50IGhvb2tlZCA9IGhvb2tlZC5ldmVudFxuZW5kXG5cbigqIFRlc3RpbmcgKilcbm1vZHVsZSBEZWJ1Z1ByaW50IDogRGVidWdQcmludCA9IHN0cnVjdFxuICBsZXQgZGVidWdfcHJpbnQgXyA9ICgpXG5lbmRcblxubW9kdWxlIFMgPSBNYWtlUyAoRGVidWdQcmludClcbm1vZHVsZSBFID0gTWFrZUUgKERlYnVnUHJpbnQpXG5cbmxldCV0ZXN0IFwic2lnbmFscyBiYXNpY1wiID1cbiAgbGV0IGEsIHNldF9hID0gUy5jcmVhdGUgMCBpblxuICBzZXRfYSAxMDtcbiAgbGV0IGIgPSBTLm1hcCAoZnVuIHYgLT4gdiArIDEpIGEgaW5cbiAgUy52YWx1ZSBiID0gMTFcblxubGV0JXRlc3QgXCJldmVudHMgYmFzaWNcIiA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgbGV0IGV2ZW50LCBzZW5kX2V2ZW50ID0gRS5jcmVhdGUgKCkgaW5cbiAgRS5yZWdpc3RlciBldmVudCAoZnVuIGkgLT4gciA6PSBpKTtcbiAgc2VuZF9ldmVudCAxMDtcbiAgIXIgPSAxMFxuXG5sZXQldGVzdCBcInRvX3JlYWN0X3NpZ25hbFwiID1cbiAgbGV0IGEsIHNldF9hID0gUy5jcmVhdGUgMCBpblxuICBsZXQgc2lnbmFsID0gUy50b19yZWFjdF9zaWduYWwgYSBpblxuICBzZXRfYSAxMDtcbiAgVW5peC5zbGVlcGYgMC4xO1xuICBSZWFjdC5TLnZhbHVlIHNpZ25hbCA9IDEwXG5cbmxldCV0ZXN0IFwib2ZfcmVhY3Rfc2lnbmFsXCIgPVxuICBsZXQgcywgc2V0X3MgPSBSZWFjdC5TLmNyZWF0ZSAwIGluXG4gIGxldCBoID0gUy5vZl9yZWFjdF9zaWduYWwgcyBpblxuICBzZXRfcyAxMDtcbiAgd2hpbGUgUmVhY3QuUy52YWx1ZSBzID0gMCBkb1xuICAgIFVuaXguc2xlZXBmIDAuMVxuICBkb25lO1xuICBVbml4LnNsZWVwZiAwLjE7XG4gIFMudmFsdWUgaCA9IDEwXG5cbmxldCV0ZXN0X21vZHVsZSBcIm9uXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCBhLCBzZXRfYSA9IFMuY3JlYXRlIDBcbiAgICBsZXQgY29uZCwgc2V0X2NvbmQgPSBTLmNyZWF0ZSB0cnVlXG4gICAgbGV0IG91dCA9IFMub24gY29uZCAoLTEpIGFcbiAgICBsZXQldGVzdCBfID0gUy52YWx1ZSBvdXQgPSAwXG5cbiAgICBsZXQldGVzdCBfID1cbiAgICAgIHNldF9hIDEwO1xuICAgICAgUy52YWx1ZSBvdXQgPSAxMFxuXG4gICAgbGV0JXRlc3QgXyA9XG4gICAgICBzZXRfY29uZCBmYWxzZTtcbiAgICAgIFMudmFsdWUgb3V0ID0gLTFcblxuICAgIGxldCV0ZXN0IF8gPVxuICAgICAgc2V0X2EgNDI7XG4gICAgICBTLnZhbHVlIG91dCA9IC0xXG5cbiAgICBsZXQldGVzdCBfID1cbiAgICAgIHNldF9jb25kIHRydWU7XG4gICAgICBTLnZhbHVlIG91dCA9IDQyXG5cbiAgICBsZXQldGVzdCBfID1cbiAgICAgIHNldF9hIDE7XG4gICAgICBTLnZhbHVlIG91dCA9IDFcblxuICAgIGxldCV0ZXN0IF8gPVxuICAgICAgc2V0X2NvbmQgZmFsc2U7XG4gICAgICBTLnZhbHVlIG91dCA9IC0xXG4gIGVuZClcbiIsIiMgMSBcImNvbW1vbi5tbFwiXG5sZXQgdmVyc2lvbiA9IFwiMi4xLjBcIlxuXG5leGNlcHRpb24gSnNvbl9lcnJvciBvZiBzdHJpbmdcblxubGV0IGpzb25fZXJyb3IgcyA9IHJhaXNlIChKc29uX2Vycm9yIHMpXG5cbmV4Y2VwdGlvbiBFbmRfb2ZfYXJyYXlcbmV4Y2VwdGlvbiBFbmRfb2Zfb2JqZWN0XG5leGNlcHRpb24gRW5kX29mX3R1cGxlXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbnR5cGUgaW5fcGFyYW0gPSB7IHN0cmluZ19idWYgOiBCdWZmZXIudCB9XG5cbmxldCBjcmVhdGVfaW5fcGFyYW0gPyhsZW4gPSAyNTYpICgpID0geyBzdHJpbmdfYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gfVxuXG5sZXQgdXRmOF9vZl9jb2RlIGJ1ZiB4ID1cbiAgbGV0IGFkZCA9IEJ1ZmZlci5hZGRfY2hhciBpblxuXG4gICgqIFN0cmFpZ2h0IDw9IGRvZXNuJ3Qgd29yayB3aXRoIHNpZ25lZCAzMS1iaXQgaW50cyAqKVxuICBsZXQgbWF4Yml0cyBuIHggPSB4IGxzciBuID0gMCBpblxuXG4gIGlmIG1heGJpdHMgNyB4IHRoZW4gKCogNyAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyIHgpXG4gIGVsc2UgaWYgbWF4Yml0cyAxMSB4IHRoZW4gKFxuICAgICgqIDUgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTEwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMDExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAxNiB4IHRoZW4gKFxuICAgICgqIDQgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAwMDExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyMSB4IHRoZW4gKFxuICAgICgqIDMgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMDAwMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyNiB4IHRoZW4gKFxuICAgICgqIDIgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTEwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDAwMDAxMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAobWF4Yml0cyAzMSB4KTtcbiAgICAoKiAxICsgNiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTEwMCBsb3IgKCh4IGxzciAzMCkgbGFuZCAwYjAwMDAwMDAxKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuXG5sZXQgY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGogPVxuICBsZXQgaGlnaDEwID0gaSAtIDB4RDgwMCBpblxuICBsZXQgbG93MTAgPSBqIC0gMHhEQzAwIGluXG4gIDB4MTAwMDAgKyAoKGhpZ2gxMCBsc2wgMTApIGxvciBsb3cxMClcblxubGV0IHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgYnVmIGkgaiA9XG4gIHV0Zjhfb2ZfY29kZSBidWYgKGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqKVxuXG50eXBlIGxleGVyX3N0YXRlID0ge1xuICBidWYgOiBCdWZmZXIudDsgKCogQnVmZmVyIHVzZWQgdG8gYWNjdW11bGF0ZSBzdWJzdHJpbmdzICopXG4gIG11dGFibGUgbG51bSA6IGludDsgKCogQ3VycmVudCBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxKSAqKVxuICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICAgICgqIEFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgKHN0YXJ0aW5nIGZyb20gMCkgKilcbiAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247ICgqIE5hbWUgZGVzY3JpYmluZyB0aGUgaW5wdXQgZmlsZSAqKVxufVxuXG5tb2R1bGUgTGV4ZXJfc3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV4ZXJfc3RhdGUgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5lbmRcblxubGV0IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgPyhsbnVtID0gMSkgKCkgPVxuICBsZXQgYnVmID0gbWF0Y2ggYnVmIHdpdGggTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDI1NiB8IFNvbWUgYnVmIC0+IGJ1ZiBpblxuICB7IGJ1ZjsgbG51bTsgYm9sID0gMDsgZm5hbWUgfVxuXG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgOCBcInR5cGUubWxcIlxuICAgIHwgYEludCBvZiBpbnRcbiAgICBcbiMgMTEgXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDE0IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICBcbiMgMTcgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjAgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgXG4jIDIzIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMjggXCJ0eXBlLm1sXCJcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICBcbiMgMzEgXCJ0eXBlLm1sXCJcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMjY3IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjcwIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIFxuIyAyNzMgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3NiBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyODEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIFxuIyAyODQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgXG4jIDI4NyBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG4jIDI5MCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDMwNiBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbiMgMzEzIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxuIyAzMjUgXCJ3cml0ZS5tbFwiXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAzMzIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMzM1IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzM4IFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICBcbiMgMzQxIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ3IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIFxuIyAzNTIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIFxuIyAzNTUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzc5IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODUgXCJ3cml0ZS5tbFwiXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg5IFwid3JpdGUubWxcIlxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDE1IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDIxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzMgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZ2xpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZ2xpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNDQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNzEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA4NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG4jIDk5IFwibW9ub21vcnBoaWMubWxcIlxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICBcbiMgMTA3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICBcbiMgMTIyIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTI0IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDEzNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgXG4jIDEzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTQ2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIFxuIyAxNTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBfIC0+IGZhbHNlXG4jIDE0IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDc4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgXG4jIDgxIFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDg5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgXG4jIDkyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDk1IFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTggXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICBcbiMgMTE5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgXG4jIDEzMiBcInByZXR0eS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTM1IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBcbiMgMTM5IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTQ2IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBcbiMgMTUwIFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgMTcgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAyOCBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBCYXNpYyA9XG5zdHJ1Y3RcbiMgMSBcInR5cGUubWxcIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIFxuIyA4IFwidHlwZS5tbFwiXG4gICAgfCBgSW50IG9mIGludFxuICAgIFxuIyAxNCBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgXG4jIDIwIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMjcwIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIFxuIyAyNzYgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzMyIFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDMzOCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgXG4jIDM0NCBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG4jIDM5MSBcIndyaXRlLm1sXCJcbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKTtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ5NSBcIndyaXRlLm1sXCJcbiAgfCB4IC0+IHhcbiMgMzUgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuIyAxIFwicHJldHR5Lm1sXCJcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICBcbiMgNzggXCJwcmV0dHkubWxcIlxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICBcbiMgODEgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgODkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgMzggXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDMzIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgXG4jIDEwNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTMgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICBcbiMgMTI0IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDEzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDExMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuICBcbiMgMTEzIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDEzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuXG4gIFxuIyAxNDEgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgc2V0X2ZpbGVfbmFtZSB2IGZuYW1lID1cbiAgICB2LmZuYW1lIDwtIGZuYW1lXG5cbiAgbGV0IG5ld2xpbmUgdiBsZXhidWYgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuICB0eXBlIHR1cGxlX2tpbmQgPSBbIGBQYXJlbnRoZXNpcyB8IGBTcXVhcmVfYnJhY2tldCBdXG5cblxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDBcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NFxcMDAxXFwxNjhcXDAwMVxcXG4gICAgXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE3MlxcMDAxXFwxNzNcXDAwMVxcMTgxXFwwMDFcXDE4NFxcMDAxXFwxODVcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5M1xcMDAxXFwxOTVcXDAwMVxcMTk2XFwwMDFcXDE5N1xcMDAxXFwyMDBcXDAwMVxcMjAzXFwwMDFcXDIyM1xcMDAxXFxcbiAgICBcXDIyNVxcMDAxXFwyMjhcXDAwMVxcMjQ5XFwwMDFcXDI1MVxcMDAxXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcXG4gICAgXFwwMTNcXDAwMlxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMDBcXDAwMFxcMDA1XFwwMDJcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuICAgIFxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDE1XFwwMDJcXDAxNlxcMDAyXFxcbiAgICBcXDAxN1xcMDAyXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMjRcXDAwMlxcXG4gICAgXFwwMjVcXDAwMlxcMDI2XFwwMDJcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXFxuICAgIFxcMDMzXFwwMDJcXDAwM1xcMDAyXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwM1xcMDAyXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMTI2XFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDAwM1xcMDAyXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcXG4gICAgXFwyMjFcXDAwMVxcMDAzXFwwMDJcXDI1M1xcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAzXFwwMDJcXFxuICAgIFxcMjQxXFwwMDFcXDAwM1xcMDAyXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDAzXFwwMDJcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAzXFwwMDJcXDE5OFxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDAwMVxcMDAyXFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMDAyXFwwMDJcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDAwNFxcMDAyXFwwMDVcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDAwNlxcMDAyXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDAwN1xcMDAyXFwxMjJcXDAwMVxcMDA4XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDAxMlxcMDAyXFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwOThcXDAwMFxcMDE1XFwwMDJcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDAxNlxcMDAyXFxcbiAgICBcXDIyMFxcMDAxXFwwMTdcXDAwMlxcMjUxXFwwMDFcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwwMjFcXDAwMlxcMTk0XFwwMDFcXDA5OFxcMDAwXFwwMjJcXDAwMlxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwwMjNcXDAwMlxcXG4gICAgXFwyMzhcXDAwMVxcMDI0XFwwMDJcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMDI1XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMDI2XFwwMDJcXDE5N1xcMDAxXFwwMjdcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMjhcXDAwMlxcMTk0XFwwMDFcXDAyOVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcblxuIyAxMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA0MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAxOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgXG4jIDE5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIFxuIyAyMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDc2IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICBcbiMgMjE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDkzIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICBcbiMgMjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEzNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTc5IFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgMzAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDExOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjA4IFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjEzIFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOSAtPlxuXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDEyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuXG4jIDEyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuXG4jIDEyNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG5cbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcblxuIyAxMjk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG5cbiMgMTMwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG5cbiMgMTMwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuXG4jIDEzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcblxuIyAxMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE5IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG5cbiMgMTMyMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMyNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5sZXRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcblxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cblxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB1dGY4X29mX2NvZGUgdi5idWYgeFxuICAgICAgICAgKVxuXG4jIDEzNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG5cbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMTQwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcblxuIyAxNDExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDEyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcblxuIyAxNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDE0MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcblxuIyAxNDU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDU5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuXG4jIDE0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDE0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG5cbiMgMTU1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuXG4jIDE1NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuXG4jIDE1NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTY4IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTU3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAxNTg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTkwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTk1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjAwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjI4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjI5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTY0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY4MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzAwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzEwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzI1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTczOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTczOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTc2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTc3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzg4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODE2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODQ4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODUzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuXG4jIDE4NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG5cbiMgMTg3NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG5cbiMgMTg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikgKVxuXG4jIDE4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG5cbiMgMTkwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxubGV0XG5cbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG5cbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcblxuIyAxOTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTYzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTY4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDE5ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcblxuIyAxOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTk2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDY4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjA3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMDg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwOTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjEwMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjEwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTEyIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjExNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDYzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA2MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjE1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTYxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjE3NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjI4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjIzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzEwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjMyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAyNDE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDE1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMjQxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDI1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDQxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTU1IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNTU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTYwIFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTcwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDgyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjUxIFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjU2IFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI2NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyNjgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNjkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI2OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjcwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuXG4jIDI3MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI3MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjczMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjczMiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjc0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI3NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgOTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDk0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODgwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyODg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjg5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDI5MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjkxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcblxuIyAyOTMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDI5MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyOTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI5NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTc2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAzMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDM4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMDU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDYwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDY1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMTI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzEzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuXG4jIDMxNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAzMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTg5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuXG4jIDMyMTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMzIxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGp1bmsgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiA1MTNcbmFuZCBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLmxleGVtZSBsZXhidWYgKVxuXG4jIDMyMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuXG4jIDEwNTUgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMTA1NiBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0ICgpID1cbiAgICByZWFkX2p1bmsgOj0ganVua1xuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQgcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG5cbiMgMzQwOCBcImxpYi9yZWFkLm1sXCJcbiMgNDIgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgVXRpbCA9XG5zdHJ1Y3RcbiMgMSBcInV0aWwubWxcIlxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICBcbiMgOCBcInV0aWwubWxcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDcwIFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgXG4jIDczIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgNzUgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA3OSBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICBcbiMgODIgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDg0IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgXG4jIDg5IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTUgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDk3IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgXG4jIDEwMiBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBpXG4gIFxuIyAxMDQgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIFxuIyAxMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIFxuIyAxMTcgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nIHMgLT4gc1xuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTIzIFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTcyIFwidXRpbC5tbFwiXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MSBcInV0aWwubWxcIlxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTgzIFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIFxuIyAxOTAgXCJ1dGlsLm1sXCJcbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICBcbiMgMTkzIFwidXRpbC5tbFwiXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMjAyIFwidXRpbC5tbFwiXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAyMDQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbiMgNDUgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgNDkgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcblxubW9kdWxlIFNhZmUgPVxuc3RydWN0XG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgOCBcInR5cGUubWxcIlxuICAgIHwgYEludCBvZiBpbnRcbiAgICBcbiMgMTEgXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDE0IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICBcbiMgMjAgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgXG4jIDI1IFwidHlwZS5tbFwiXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIFxuIyAyOCBcInR5cGUubWxcIlxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIFxuIyAzMSBcInR5cGUubWxcIlxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIFxuIyAzMyBcInR5cGUubWxcIlxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuIyAxIFwic2FmZS5tbFwiXG5sZXQgcmVjIHRvX2Jhc2ljIDogdCAtPiBCYXNpYy50ID0gZnVuY3Rpb25cbiAgfCAoYE51bGwgfCBgQm9vbCBfIHwgYEludCBfIHwgYEZsb2F0IF8gfCBgU3RyaW5nIF8pIGFzIHggLT4geFxuICB8IGBJbnRsaXQgcyAtPiBgU3RyaW5nIHNcbiAgfCBgTGlzdCBsIHwgYFR1cGxlIGwgLT4gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgdG9fYmFzaWMgbCkpXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGBBc3NvYyAoTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgdG9fYmFzaWMgdikpIGwpKVxuICB8IGBWYXJpYW50IChrLCBOb25lKSAtPiBgU3RyaW5nIGtcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSAtPiBgTGlzdCBbIGBTdHJpbmcgazsgdG9fYmFzaWMgdiBdXG4jIDEgXCJ3cml0ZS5tbFwiXG4oKiBpbmNsdWRlZDogdHlwZS5tbCAqKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgdGVzdF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnNldCBzIGkgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIGpzb25fc3RyaW5nX29mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxuXG5sZXQgbWF4X2RpZ2l0cyA9XG4gIG1heFxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1heF9pbnQpKVxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1pbl9pbnQpKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBvcGVuIFByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB0ZXN0X2Zsb2F0ICgpID1cbiAgbGV0IGwgPSBbIDAuOyAxLjsgLTEuIF0gaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IDIuICouIHggKy4gMS4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggLy4gc3FydCAyLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiBzcXJ0IDMuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIGNvcyBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIDEuMjNlNTApIGwgaW5cbiAgbGV0IGwgPSBsIEAgWyBpbmZpbml0eTsgbmVnX2luZmluaXR5IF0gaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHMgPSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeCBpblxuICAgICAgbGV0IHkgPSBmbG9hdF9vZl9zdHJpbmcgcyBpblxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVnICVnICVTICVCXFxuXCIgeCB5IHMgKHggPSB5KVxuICApXG4gICAgbFxuXG4oKlxubGV0ICgpID0gdGVzdF9mbG9hdCAoKVxuKilcblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMjY0IFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDI2NyBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3MCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICBcbiMgMjc2IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDI4MSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgXG4jIDI4NCBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICBcbiMgMjg3IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMjkwIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzA2IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuIyAzMTMgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG4jIDMyNSBcIndyaXRlLm1sXCJcbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDMzMiBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAzMzUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzMzggXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIFxuIyAzNDQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIFxuIyAzNTIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIFxuIyAzNTUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzc5IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODUgXCJ3cml0ZS5tbFwiXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg5IFwid3JpdGUubWxcIlxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDYyIFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDc4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgXG4jIDgxIFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDg5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgXG4jIDkyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDEwMCBcInByZXR0eS5tbFwiXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgXG4jIDExOSBcInByZXR0eS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIFxuIyAxMzIgXCJwcmV0dHkubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDEzNSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDEzOSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDE0NiBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDE1MCBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbiMgMTU2IFwicHJldHR5Lm1sXCJcbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG4jIDY1IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDE1IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDIxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA0NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA3MSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDg0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbiMgOTkgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIFxuIyAxMDcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEwIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEzIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzcgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE0NiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDEwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGBJbnRsaXQgKGxleGVtZSBsZXhidWYpXG5cbiAgXG4jIDExMyBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBgSW50bGl0IChsZXhlbWUgbGV4YnVmKVxuXG5cbiAgXG4jIDE0MSBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBzZXRfZmlsZV9uYW1lIHYgZm5hbWUgPVxuICAgIHYuZm5hbWUgPC0gZm5hbWVcblxuICBsZXQgbmV3bGluZSB2IGxleGJ1ZiA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG4gIHR5cGUgdHVwbGVfa2luZCA9IFsgYFBhcmVudGhlc2lzIHwgYFNxdWFyZV9icmFja2V0IF1cblxuXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbiMgMTYxIFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0MFxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDE1MFxcMDAxXFwxNTFcXDAwMVxcMTU0XFwwMDFcXDE2OFxcMDAxXFxcbiAgICBcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTcyXFwwMDFcXDE3M1xcMDAxXFwxODFcXDAwMVxcMTg0XFwwMDFcXDE4NVxcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkzXFwwMDFcXDE5NVxcMDAxXFwxOTZcXDAwMVxcMTk3XFwwMDFcXDIwMFxcMDAxXFwyMDNcXDAwMVxcMjIzXFwwMDFcXFxuICAgIFxcMjI1XFwwMDFcXDIyOFxcMDAxXFwyNDlcXDAwMVxcMjUxXFwwMDFcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFxcbiAgICBcXDAxM1xcMDAyXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAwMFxcMDAwXFwwMDVcXDAwMlxcMDA2XFwwMDJcXDAwN1xcMDAyXFwwMDhcXDAwMlxcXG4gICAgXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwMTVcXDAwMlxcMDE2XFwwMDJcXFxuICAgIFxcMDE3XFwwMDJcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDAyMVxcMDAyXFwwMjJcXDAwMlxcMDIzXFwwMDJcXDAyNFxcMDAyXFxcbiAgICBcXDAyNVxcMDAyXFwwMjZcXDAwMlxcMDI3XFwwMDJcXDAyOFxcMDAyXFwwMjlcXDAwMlxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcXG4gICAgXFwwMzNcXDAwMlxcMDAzXFwwMDJcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAzXFwwMDJcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwxMjZcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwM1xcMDAyXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFxcbiAgICBcXDIyMVxcMDAxXFwwMDNcXDAwMlxcMjUzXFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDNcXDAwMlxcXG4gICAgXFwyNDFcXDAwMVxcMDAzXFwwMDJcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwMDNcXDAwMlxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDNcXDAwMlxcMTk4XFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMDAxXFwwMDJcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwwMDJcXDAwMlxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMDA0XFwwMDJcXDAwNVxcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMDA2XFwwMDJcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMDA3XFwwMDJcXDEyMlxcMDAxXFwwMDhcXDAwMlxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMDEyXFwwMDJcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDA5OFxcMDAwXFwwMTVcXDAwMlxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMDE2XFwwMDJcXFxuICAgIFxcMjIwXFwwMDFcXDAxN1xcMDAyXFwyNTFcXDAwMVxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDAyMVxcMDAyXFwxOTRcXDAwMVxcMDk4XFwwMDBcXDAyMlxcMDAyXFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDAyM1xcMDAyXFxcbiAgICBcXDIzOFxcMDAxXFwwMjRcXDAwMlxcMjUxXFwwMDFcXDIzOFxcMDAxXFwwMjVcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwwMjZcXDAwMlxcMTk3XFwwMDFcXDAyN1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAyOFxcMDAyXFwxOTRcXDAwMVxcMDI5XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcblxuIyAxMDQyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDQzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDE5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICBcbiMgMTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICBcbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIFxuIyAyMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDg4IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIFxuIyAyMjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTM2IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTU1IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIFxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE3OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIFxuIyAzMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTE5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDE5IC0+XG5cbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMTIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG5cbiMgMTIzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQ3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG5cbiMgMTI2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcblxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuXG4jIDEyOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcblxuIyAxMzAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcblxuIyAxMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG5cbiMgMTMxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuXG4jIDEzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcblxuIyAxMzIzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzI0IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cbmxldFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG4gICAgICAgICApXG5cbiMgMTM1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG5cbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzY2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcblxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cblxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcblxuIyAxNDA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDA2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuXG4jIDE0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuXG4jIDE0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMTQzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDQ0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuXG4jIDE0NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG5cbiMgMTQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMTQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcblxuIyAxNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTUyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG5cbiMgMTU1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG5cbiMgMTU2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDE1ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTYxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjgyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjgzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTY4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE3MDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTcxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzM5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxNzYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTgwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODU4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG5cbiMgMTg2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcblxuIyAxODc0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODc1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcblxuIyAxODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODgwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSApXG5cbiMgMTg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcblxuIyAxOTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTA3IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTk1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5sZXRcblxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcblxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG5cbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuXG4jIDE5NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTk4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuXG4jIDE5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDAxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjAyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjA2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwNjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIwODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjA4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTAxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTAyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTA3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxMTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgNjE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgXG4jIDYzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyMTUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTUxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjE1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTc3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTc4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjA2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjMzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjI0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjY2IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjMwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzE1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzU0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzY2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzc2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjM4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDI0MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcblxuIyAyNDE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDIwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDMwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQ3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTUwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI1NTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTY1IFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTk2IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgXG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgODI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjcxIFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjY3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI2ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2ODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI2OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjY5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG5cbiMgMjcxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjcyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjcyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzMyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjc3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzc2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODIyIFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgOTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDk0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODgwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyODg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjg5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDI5MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjkxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcblxuIyAyOTMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDI5MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyOTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI5NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTc2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAzMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDM4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMDU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDYwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDY1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMTI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzEzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuXG4jIDMxNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAzMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTg5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuXG4jIDMyMTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMzIxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGp1bmsgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiA1MTNcbmFuZCBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLmxleGVtZSBsZXhidWYgKVxuXG4jIDMyMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuXG4jIDEwNTUgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMTA1NiBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0ICgpID1cbiAgICByZWFkX2p1bmsgOj0ganVua1xuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQgcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG5cbiMgMzQwOCBcImxpYi9yZWFkLm1sXCJcbiMgNjkgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgVXRpbCA9XG5zdHJ1Y3RcbiMgMSBcInV0aWwubWxcIlxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICBcbiMgOCBcInV0aWwubWxcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDcwIFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgXG4jIDczIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgNzUgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA3OSBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICBcbiMgODIgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDg0IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgXG4jIDg5IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gZlxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTUgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgXG4jIDk3IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgXG4jIDEwMiBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBpXG4gIFxuIyAxMDQgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIFxuIyAxMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIFxuIyAxMTcgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nIHMgLT4gc1xuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTIzIFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTcyIFwidXRpbC5tbFwiXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MSBcInV0aWwubWxcIlxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTgzIFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIFxuIyAxOTAgXCJ1dGlsLm1sXCJcbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICBcbiMgMTkzIFwidXRpbC5tbFwiXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMjAyIFwidXRpbC5tbFwiXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAyMDQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbiMgNzIgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgNzkgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcblxubW9kdWxlIFJhdyA9XG5zdHJ1Y3RcbiMgMSBcInR5cGUubWxcIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIFxuIyAxMSBcInR5cGUubWxcIlxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMTcgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjMgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDI1IFwidHlwZS5tbFwiXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIFxuIyAyOCBcInR5cGUubWxcIlxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIFxuIyAzMSBcInR5cGUubWxcIlxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIFxuIyAzMyBcInR5cGUubWxcIlxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuIyAxIFwid3JpdGUubWxcIlxuKCogaW5jbHVkZWQ6IHR5cGUubWwgKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHRlc3Rfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy5zZXQgcyBpIChDaGFyLmNociBpKVxuICBkb25lO1xuICBqc29uX3N0cmluZ19vZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cblxubGV0IG1heF9kaWdpdHMgPVxuICBtYXhcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtYXhfaW50KSlcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtaW5faW50KSlcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgb3BlbiBQcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgdGVzdF9mbG9hdCAoKSA9XG4gIGxldCBsID0gWyAwLjsgMS47IC0xLiBdIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiAyLiAqLiB4ICsuIDEuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4IC8uIHNxcnQgMi4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gc3FydCAzLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCBjb3MgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiAxLjIzZTUwKSBsIGluXG4gIGxldCBsID0gbCBAIFsgaW5maW5pdHk7IG5lZ19pbmZpbml0eSBdIGluXG4gIExpc3QuaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzID0gUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHggaW5cbiAgICAgIGxldCB5ID0gZmxvYXRfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlZyAlZyAlUyAlQlxcblwiIHggeSBzICh4ID0geSlcbiAgKVxuICAgIGxcblxuKCpcbmxldCAoKSA9IHRlc3RfZmxvYXQgKClcbiopXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDI2NyBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3MyBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjc5IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICBcbiMgMjg0IFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIFxuIyAyODcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzMDYgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG4jIDMxMyBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzM1IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQxIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgXG4jIDM1MiBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgXG4jIDM1NSBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuIyAzNTggXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzNzkgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG4jIDM5MSBcIndyaXRlLm1sXCJcbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKTtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4NSBcIndyaXRlLm1sXCJcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODkgXCJ3cml0ZS5tbFwiXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgXG4jIDQ5NSBcIndyaXRlLm1sXCJcbiAgfCB4IC0+IHhcbiMgOTAgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuIyAxIFwicHJldHR5Lm1sXCJcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICBcbiMgOTIgXCJwcmV0dHkubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTUgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA5OCBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyAxMDAgXCJwcmV0dHkubWxcIlxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIFxuIyAxMTkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICBcbiMgMTMyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxMzcgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIFxuIyAxMzkgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxNDggXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIFxuIyAxNTAgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG4jIDE1NiBcInByZXR0eS5tbFwiXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuIyA5MyBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyAxIFwibW9ub21vcnBoaWMubWxcIlxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDM5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDcxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgODQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgICBcbiMgMTEwIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDEyMiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzcgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE0NiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMiBcImxpYi9yZWFkLm1sbFwiXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIHNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBzcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IHNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAganNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgcmVhZF9qdW5rID0gcmVmIChmdW4gXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9ICFyZWFkX2p1bmsgbGV4YnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBcbiMgMTA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuICBcbiMgMTEzIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBcbiMgMTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuXG4gIFxuIyAxNDEgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgc2V0X2ZpbGVfbmFtZSB2IGZuYW1lID1cbiAgICB2LmZuYW1lIDwtIGZuYW1lXG5cbiAgbGV0IG5ld2xpbmUgdiBsZXhidWYgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuICB0eXBlIHR1cGxlX2tpbmQgPSBbIGBQYXJlbnRoZXNpcyB8IGBTcXVhcmVfYnJhY2tldCBdXG5cblxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDBcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NFxcMDAxXFwxNjhcXDAwMVxcXG4gICAgXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE3MlxcMDAxXFwxNzNcXDAwMVxcMTgxXFwwMDFcXDE4NFxcMDAxXFwxODVcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5M1xcMDAxXFwxOTVcXDAwMVxcMTk2XFwwMDFcXDE5N1xcMDAxXFwyMDBcXDAwMVxcMjAzXFwwMDFcXDIyM1xcMDAxXFxcbiAgICBcXDIyNVxcMDAxXFwyMjhcXDAwMVxcMjQ5XFwwMDFcXDI1MVxcMDAxXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcXG4gICAgXFwwMTNcXDAwMlxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMDBcXDAwMFxcMDA1XFwwMDJcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuICAgIFxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDE1XFwwMDJcXDAxNlxcMDAyXFxcbiAgICBcXDAxN1xcMDAyXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMjRcXDAwMlxcXG4gICAgXFwwMjVcXDAwMlxcMDI2XFwwMDJcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXFxuICAgIFxcMDMzXFwwMDJcXDAwM1xcMDAyXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwM1xcMDAyXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMTI2XFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDAwM1xcMDAyXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcXG4gICAgXFwyMjFcXDAwMVxcMDAzXFwwMDJcXDI1M1xcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAzXFwwMDJcXFxuICAgIFxcMjQxXFwwMDFcXDAwM1xcMDAyXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDAzXFwwMDJcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAzXFwwMDJcXDE5OFxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDAwMVxcMDAyXFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMDAyXFwwMDJcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDAwNFxcMDAyXFwwMDVcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDAwNlxcMDAyXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDAwN1xcMDAyXFwxMjJcXDAwMVxcMDA4XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDAxMlxcMDAyXFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwOThcXDAwMFxcMDE1XFwwMDJcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDAxNlxcMDAyXFxcbiAgICBcXDIyMFxcMDAxXFwwMTdcXDAwMlxcMjUxXFwwMDFcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwwMjFcXDAwMlxcMTk0XFwwMDFcXDA5OFxcMDAwXFwwMjJcXDAwMlxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwwMjNcXDAwMlxcXG4gICAgXFwyMzhcXDAwMVxcMDI0XFwwMDJcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMDI1XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMDI2XFwwMDJcXDE5N1xcMDAxXFwwMjdcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMjhcXDAwMlxcMTk0XFwwMDFcXDAyOVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcblxuIyAxMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA0MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJOYU5cIlxuICAgICAgICAgICAgICAgIFxuIyAxOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDU0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIkluZmluaXR5XCJcbiAgICAgICAgICAgICAgICBcbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCItSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDc2IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmdsaXQgKGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgXG4jIDIxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDk4IFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCAobGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgXG4jIDIyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgXG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTc5IFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgXG4jIDMwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTkgLT5cblxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAxMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjIzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcblxuIyAxMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjM1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcblxuIyAxMjY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjY1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjc3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG5cbiMgMTI5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuXG4jIDEzMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuXG4jIDEzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcblxuIyAxMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG5cbiMgMTMxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuXG4jIDEzMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxubGV0XG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG5cbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG5cbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgdXRmOF9vZl9jb2RlIHYuYnVmIHhcbiAgICAgICAgIClcblxuIyAxMzU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzU2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcblxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzYxIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDE0MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG5cbiMgMTQxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG5cbiMgMTQzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAxNDM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG5cbiMgMTQ1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcblxuIyAxNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAxNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuXG4jIDE1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcblxuIyAxNTU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTU4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcblxuIyAxNTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTYzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTU2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTU4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMTU4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjEyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTYxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYyOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYyOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjg4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzA1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTcwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzE1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTcyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzQ2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE3NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTc2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODA2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODExIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTg0NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg0OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcblxuIyAxODY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODcwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuXG4jIDE4NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuXG4jIDE4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpIClcblxuIyAxODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODg1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuXG4jIDE5MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTEyIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTkyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTUzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cbmxldFxuXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cblxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG5cbiMgMTk2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxOTg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG5cbiMgMTk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDYzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjA2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjA4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDkwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxMDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIxMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjExMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA2MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICBcbiMgNjM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDIxNTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTU2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjE2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTczIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxNzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjAxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjQ1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjUzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjYxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzA1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMjQxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDI0MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ0MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjU1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjE0IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjY1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNjc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjc2IFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjY4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjY5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyNjk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcblxuIyAyNzE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzE3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNzIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzIyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzI3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI3NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3NTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyNzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzcxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIFxuIyA5MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgOTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI4ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyODk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMjkwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyOTEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuXG4jIDI5MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMjkzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI5NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjk2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDA3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzA1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMwNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDc3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzA4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzEyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMxMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTUwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTU1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG5cbiMgMzE2NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE2NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDMxODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxODkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG5cbiMgMzIxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAzMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjE2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQganVuayBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIDUxM1xuYW5kIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubGV4ZW1lIGxleGJ1ZiApXG5cbiMgMzIzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzI0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG5cbiMgMTA1NSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIFxuIyAxMDU2IFwibGliL3JlYWQubWxsXCJcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgKCkgPVxuICAgIHJlYWRfanVuayA6PSBqdW5rXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBpbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZCBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cblxuIyAzNDA4IFwibGliL3JlYWQubWxcIlxuIyA5NyBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBVdGlsID1cbnN0cnVjdFxuIyAxIFwidXRpbC5tbFwiXG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIFxuIyAxMCBcInV0aWwubWxcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIFxuIyAxNiBcInV0aWwubWxcIlxuICB8IGBTdHJpbmdsaXQgXyAtPiBcInN0cmluZ2xpdFwiXG4gIFxuIyAxOCBcInV0aWwubWxcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgXG4jIDc1IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgODQgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICBcbiMgOTEgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgOTcgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICBcbiMgMTA0IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTEwIFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICBcbiMgMTE5IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTI1IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTc0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE4MyBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDE5NSBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgXG4jIDIwNCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuIyAxMDAgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMTA2IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcmF3X3ZlcnNpb25fc3RyaW5nID0gXCIkRm9ybWF0OiVEJFwiXG5cbmxldCBleHRyYWN0X3RhZ19yZSA9XG4gIFJlLmNvbXBpbGVcbiAgICAoUmUuc2VxIFsgUmUuc3RyIFwidGFnOiBcIjsgUmUuZ3JvdXAgKFJlLnJlcCAoUmUuY29tcGwgWyBSZS5jaGFyICcsJyBdKSkgXSlcblxubGV0IHZlcnNpb25fc3RyaW5nID1cbiAgbWF0Y2ggUmUuZXhlY19vcHQgZXh0cmFjdF90YWdfcmUgcmF3X3ZlcnNpb25fc3RyaW5nIHdpdGhcbiAgfCBTb21lIGdyIC0+IFJlLkdyb3VwLmdldCBnciAxXG4gIHwgTm9uZSAtPiBHaXRfdmVyc2lvbi50XG5cbmxldCB2ZXJzaW9uX21zZyA9IFwiS2FwcGEgU2ltdWxhdG9yOiBcIiBeIHZlcnNpb25fc3RyaW5nXG5sZXQgdmVyc2lvbl9rYXNhX2Z1bGxfbmFtZSA9IFwiS2FwcGEgU3RhdGljIEFuYWx5emVyIChcIiBeIHZlcnNpb25fc3RyaW5nIF4gXCIpXCJcbmxldCB2ZXJzaW9uX2thZGVfZnVsbF9uYW1lID0gXCJLYURFIChcIiBeIHZlcnNpb25fc3RyaW5nIF4gXCIpXCJcbmxldCB0a19pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHBwX2V4Y2VwdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBFeGl0IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkV4aXRcIlxuICB8IE5vdF9mb3VuZCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJOb3RfZm91bmRcIlxuICB8IEFyZy5CYWQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQXJnLkJhZCglcylcIiB4XG4gIHwgU3lzLkJyZWFrIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlN5cy5CcmVha1wiXG4gIHwgU3RhY2suRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3RhY2suRW1wdHlcIlxuICB8IFF1ZXVlLkVtcHR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlF1ZXVlLkVtcHR5XCJcbiAgfCBTdHJlYW0uRXJyb3IgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiU3RyZWFtLkVycm9yICVzXCIgeFxuICB8IFN0cmVhbS5GYWlsdXJlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlN0cmVhbS5GYWlsdXJlXCJcbiAgfCBBcmcuSGVscCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJBcmcuSGVscCglcylcIiB4XG4gIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCJcbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiU2NhbmYuU2Nhbi5mYWlsdXJlKCVzKVwiIHhcbiAgfCBMYXp5LlVuZGVmaW5lZCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJMYXp5LlVuZGVmaW5lZFwiXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIChlciwgeCwgeSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiVW5peExhYmVscy5Vbml4X2Vycm9yKCVzLCVzLCVzKVwiXG4gICAgICAoVW5peExhYmVscy5lcnJvcl9tZXNzYWdlIGVyKVxuICAgICAgeCB5XG4gIHwgVW5peC5Vbml4X2Vycm9yIChlciwgeCwgeSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiVW5peC5Vbml4X2Vycm9yKCVzLCVzLCVzKVwiIChVbml4LmVycm9yX21lc3NhZ2UgZXIpIHggeVxuICB8IEZhaWx1cmUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiRmFpbHVyZSglcylcIiB4XG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3RhY2tfb3ZlcmZsb3dcIlxuICB8IGV4YyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKFByaW50ZXhjLnRvX3N0cmluZyBleGMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZmxvYXRfaXNfemVybyB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gIHwgRlBfemVybyAtPiB0cnVlXG4gIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gZmFsc2VcblxubGV0IHBvdyBpIGogPVxuICBsZXQgKCkgPSBhc3NlcnQgKDAgPD0gaikgaW5cbiAgbGV0IHJlYyBhdXggaSBrIGFjY3UgPVxuICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIGsgbGFuZCAxID0gMCB0aGVuXG4gICAgICBhdXggaSAoayAvIDIpIGFjY3UgKiBhY2N1XG4gICAgZWxzZVxuICAgICAgYXV4IGkgKGsgLyAyKSAoaSAqIGFjY3UgKiBhY2N1KVxuICBpblxuICBhdXggaSBqIDFcblxubGV0IGZhY3QgaSA9XG4gIGxldCByZWMgYXV4IGkgYWNjdSA9XG4gICAgaWYgaSA8IDIgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2VcbiAgICAgIGF1eCAoaSAtIDEpIChpICogYWNjdSlcbiAgaW5cbiAgYXV4IGkgMVxuXG5sZXQgZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjIHN0YXJ0IGNvbWJpbmUgZiBsID1cbiAgbGV0IGwgPSBMaXN0LnNvcnQgY29tcGFyZSBsIGluXG4gIGxldCByZWMgYXV4IGwgb2xkIG9jYyBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGggOjogdCB3aGVuIGggPSBvbGQgLT4gYXV4IHQgb2xkICgxICsgb2NjKSBhY2N1XG4gICAgfCBfIC0+XG4gICAgICBsZXQgYWNjdSA9IGNvbWJpbmUgYWNjdSAoZiBvY2MpIGluXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IGggOjogdCAtPiBhdXggdCBoIDEgYWNjdVxuICAgICAgfCBbXSAtPiBhY2N1KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAxXG4gIHwgaCA6OiB0IC0+IGF1eCB0IGggMSBzdGFydFxuXG5sZXQgZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjXzIgc3RhcnQgY29tYmluZSBmIGwxIGwyID1cbiAgbGV0IGwxID0gTGlzdC5zb3J0IGNvbXBhcmUgbDEgaW5cbiAgbGV0IGwyID0gTGlzdC5zb3J0IGNvbXBhcmUgbDIgaW5cbiAgbGV0IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW10sIDBcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IHJlYyBhdXggbCBoIG9jYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdLCBvY2NcbiAgICAgICAgfCBoJyA6OiB0IHdoZW4gaCA9IGgnIC0+IGF1eCB0IGggKG9jYyArIDEpXG4gICAgICAgIHwgXyAtPiBsLCBvY2NcbiAgICAgIGluXG4gICAgICBhdXggdCBoIDFcbiAgaW5cbiAgbGV0IHJlYyBhdXggbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IGgxIDo6IF8sIGgyIDo6IF8gd2hlbiBoMSA9IGgyIC0+XG4gICAgICBsZXQgbDEsIG9jYzEgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMSBpblxuICAgICAgbGV0IGwyLCBvY2MyID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDIgaW5cbiAgICAgIGF1eCBsMSBsMiAoY29tYmluZSBhY2N1IChmIG9jYzEgb2NjMikpXG4gICAgfCBoMSA6OiBfLCBoMiA6OiBfIHdoZW4gY29tcGFyZSBoMSBoMiA8IDAgLT5cbiAgICAgIGxldCBsMSwgb2NjMSA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwxIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiBvY2MxIDApKVxuICAgIHwgXyA6OiBfLCBfIDo6IF8gLT5cbiAgICAgIGxldCBsMiwgb2NjMiA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwyIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiAwIG9jYzIpKVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBhY2N1XG4gIGluXG4gIGF1eCBsMSBsMiBzdGFydFxuXG5sZXQgZGl2MiB4ID0gSW50NjQuZGl2IHggKEludDY0LmFkZCBJbnQ2NC5vbmUgSW50NjQub25lKVxuXG5sZXQgcG93NjQgeCBuID1cbiAgYXNzZXJ0IChuID49IEludDY0Lnplcm8pO1xuICBsZXQgcmVjIGF1eCBrIGFjY3UgPVxuICAgIGlmIGsgPSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIEludDY0LmxvZ2FuZCBrIEludDY0Lm9uZSA9IEludDY0Lnplcm8gdGhlblxuICAgICAgYXV4IChkaXYyIGspIChJbnQ2NC5tdWwgYWNjdSBhY2N1KVxuICAgIGVsc2VcbiAgICAgIGF1eCAoZGl2MiBrKSAoSW50NjQubXVsIHggKEludDY0Lm11bCBhY2N1IGFjY3UpKVxuICBpblxuICBhdXggbiBJbnQ2NC5vbmVcblxubGV0IGNhbnRvcl9wYWlyaW5nIHggeSA9XG4gIGxldCBzID0geCArIHkgaW5cbiAgKHN1Y2MgcyAqIHMgLyAyKSArIHlcblxubGV0IHJlYWRfaW5wdXQgKCkgPVxuICBsZXQgcmVjIHBhcnNlIGFjYyBpbnB1dCA9XG4gICAgbWF0Y2ggU3RyZWFtLm5leHQgaW5wdXQgd2l0aFxuICAgIHwgJ1xcbicgLT4gYWNjXG4gICAgfCBjIC0+IHBhcnNlIChQcmludGYuc3ByaW50ZiBcIiVzJWNcIiBhY2MgYykgaW5wdXRcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHVzZXJfaW5wdXQgPSBTdHJlYW0ub2ZfY2hhbm5lbCBzdGRpbiBpblxuICAgIHBhcnNlIFwiXCIgdXNlcl9pbnB1dFxuICB3aXRoIFN0cmVhbS5GYWlsdXJlIC0+IGludmFsaWRfYXJnIFwiVG9vbHMuUmVhZF9pbnB1dDogY2Fubm90IHJlYWQgc3RyZWFtXCJcblxubGV0IG5vdF9hbl9pZCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID0gMFxuICB8fFxuICBsZXQgaSA9IGludF9vZl9jaGFyIHMuWzBdIGluXG4gIChpIDwgNjUgfHwgaSA+IDEyMiB8fCAoaSA+IDkwICYmIChpIDw+IDk1IHx8IFN0cmluZy5sZW5ndGggcyA9IDEpICYmIGkgPCA5NykpXG4gIHx8XG4gIHRyeVxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbGV0IGkgPSBpbnRfb2ZfY2hhciBjIGluXG4gICAgICAgIGlmXG4gICAgICAgICAgaSA8IDQ4IHx8IGkgPiAxMjJcbiAgICAgICAgICB8fCAoaSA+IDU3ICYmIChpIDwgNjUgfHwgKGkgPiA5MCAmJiBpIDw+IDk1ICYmIGkgPCA5NykpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgcztcbiAgICBmYWxzZVxuICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlXG5cbmxldCBhcnJheV9mb2xkX2xlZnRfbWFwaSBmIHggYSA9XG4gIGxldCB5ID0gcmVmIHggaW5cbiAgbGV0IG8gPVxuICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBhKSAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHknLCBvdXQgPSBmIGkgIXkgYS4oaSkgaW5cbiAgICAgICAgbGV0ICgpID0geSA6PSB5JyBpblxuICAgICAgICBvdXQpXG4gIGluXG4gICF5LCBvXG5cbmxldCBhcnJheV9tYXBfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBmIGkgdiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBBcnJheS51bnNhZmVfc2V0IHYgaSAoZiB4KTtcbiAgICAgIGZpbGwgZiAoc3VjYyBpKSB2IGxcbiAgaW5cbiAgZnVuIGYgLT4gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFt8fF1cbiAgICB8IHggOjogbCAtPlxuICAgICAgbGV0IGxlbiA9IHN1Y2MgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBsZXQgYW5zID0gQXJyYXkubWFrZSBsZW4gKGYgeCkgaW5cbiAgICAgIGxldCAoKSA9IGZpbGwgZiAxIGFucyBsIGluXG4gICAgICBhbnNcblxubGV0IGFycmF5X3Jldl9vZl9saXN0ID1cbiAgbGV0IHJlYyBmaWxsIG91dCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgIHwgaCcgOjogdCcgLT5cbiAgICAgIGxldCAoKSA9IEFycmF5LnVuc2FmZV9zZXQgb3V0IGkgaCcgaW5cbiAgICAgIGZpbGwgb3V0IChwcmVkIGkpIHQnXG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gW3x8XVxuICB8IGggOjogdCAtPlxuICAgIGxldCBsID0gc3VjYyAoTGlzdC5sZW5ndGggdCkgaW5cbiAgICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsIGggaW5cbiAgICBsZXQgKCkgPSBmaWxsIG91dCAobCAtIDIpIHQgaW5cbiAgICBvdXRcblxubGV0IGFycmF5X3Jldl9tYXBfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBmIG91dCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgIHwgaCcgOjogdCcgLT5cbiAgICAgIGxldCAoKSA9IEFycmF5LnVuc2FmZV9zZXQgb3V0IGkgKGYgaCcpIGluXG4gICAgICBmaWxsIGYgb3V0IChwcmVkIGkpIHQnXG4gIGluXG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbfHxdXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBsID0gc3VjYyAoTGlzdC5sZW5ndGggdCkgaW5cbiAgICAgIGxldCBvdXQgPSBBcnJheS5tYWtlIGwgKGYgaCkgaW5cbiAgICAgIGxldCAoKSA9IGZpbGwgZiBvdXQgKGwgLSAyKSB0IGluXG4gICAgICBvdXRcblxubGV0IGFycmF5X2ZvbGRfbGVmdGkgZiB4IGEgPVxuICBsZXQgeSA9IHJlZiB4IGluXG4gIGxldCAoKSA9IEFycmF5Lml0ZXJpIChmdW4gaSBlIC0+IHkgOj0gZiBpICF5IGUpIGEgaW5cbiAgIXlcblxubGV0IHJlYyBhdXhfZm9sZF9yaWdodGkgaSBmIGEgeCA9XG4gIGlmIGkgPCAwIHRoZW5cbiAgICB4XG4gIGVsc2VcbiAgICBhdXhfZm9sZF9yaWdodGkgKHByZWQgaSkgZiBhIChmIGkgYS4oaSkgeClcblxubGV0IGFycmF5X2ZvbGRfcmlnaHRpIGYgYSB4ID0gYXV4X2ZvbGRfcmlnaHRpIChBcnJheS5sZW5ndGggYSAtIDEpIGYgYSB4XG5cbmxldCBhcnJheV9mb2xkX2xlZnQyaSBmIHggYTEgYTIgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhMSBpblxuICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBhMiB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJhcnJheV9mb2xkX2xlZnQyaVwiKVxuICBlbHNlXG4gICAgYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBlIC0+IGYgaSB4IGUgYTIuKGkpKSB4IGExXG5cbmxldCBhcnJheV9maWx0ZXIgZiBhID1cbiAgYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgeCAtPlxuICAgICAgaWYgZiBpIHggdGhlblxuICAgICAgICBpIDo6IGFjY1xuICAgICAgZWxzZVxuICAgICAgICBhY2MpXG4gICAgW10gYVxuXG5sZXQgYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIGwxIGwyID1cbiAgaWYgQXJyYXkubGVuZ3RoIGwxIDw+IEFycmF5Lmxlbmd0aCBsMiB0aGVuXG4gICAgTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGYgaiA9XG4gICAgICBpZiBqID0gQXJyYXkubGVuZ3RoIGwxIHRoZW5cbiAgICAgICAgU29tZSAoW10sIFtdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuYjEsIGFnMSA9IGwxLihqKSBpblxuICAgICAgICBsZXQgbmIyLCBhZzIgPSBsMi4oaikgaW5cbiAgICAgICAgaWYgbmIxIDw+IG5iMiB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIG5iMSA9IDAgdGhlblxuICAgICAgICAgIGYgKHN1Y2MgailcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBhdXggaSB2YSBvdXQgPVxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBsMSB0aGVuXG4gICAgICAgICAgICAgIFNvbWUgb3V0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IG5iMSwgYWcxID0gbDEuKGkpIGluXG4gICAgICAgICAgICAgIGxldCBuYjIsIGFnMiA9IGwyLihpKSBpblxuICAgICAgICAgICAgICBpZiBuYjEgPD4gbmIyIHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2UgaWYgbmIxID4gMCAmJiBuYjEgPCB2YSB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIG5iMSAoYWcxLCBhZzIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhdXggKHN1Y2MgaSkgdmEgb3V0XG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKHN1Y2MgaikgbmIxIChhZzEsIGFnMilcbiAgICAgICAgKVxuICAgICAgKVxuICAgIGluXG4gICAgZiAwXG4gIClcblxubGV0IGFycmF5X2NvbXBhcmUgY29tcGFyZSBhIGIgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCBsJyA9IEFycmF5Lmxlbmd0aCBiIGluXG4gIGxldCBkID0gU3RkbGliLmNvbXBhcmUgbCBsJyBpblxuICBsZXQgcmVjIGF1eF9hcnJheV9jb21wYXJlIGsgPVxuICAgIGlmIGsgPj0gbCB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbyA9IGNvbXBhcmUgYS4oaykgYi4oaykgaW5cbiAgICAgIGlmIG8gPD4gMCB0aGVuXG4gICAgICAgIG9cbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X2FycmF5X2NvbXBhcmUgKHN1Y2MgaylcbiAgICApXG4gIGluXG4gIGlmIGQgPD4gMCB0aGVuXG4gICAgZFxuICBlbHNlXG4gICAgYXV4X2FycmF5X2NvbXBhcmUgMFxuXG5sZXQgaXRlcmkgZiBpID1cbiAgbGV0IHJlYyBhdXggaiA9XG4gICAgaWYgaiA8IGkgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBmIGogaW5cbiAgICAgIGF1eCAoc3VjYyBqKVxuICAgIClcbiAgaW5cbiAgYXV4IDBcblxubGV0IHJlYyByZWN0aSBmIHggaSA9XG4gIGlmIDAgPCBpIHRoZW4gKFxuICAgIGxldCBpJyA9IHByZWQgaSBpblxuICAgIHJlY3RpIGYgKGYgeCBpJykgaSdcbiAgKSBlbHNlXG4gICAgeFxuXG5sZXQgbWluX3Bvc19pbnRfbm90X3plcm8gKGtleWEsIGRhdGFhKSAoa2V5YiwgZGF0YWIpID1cbiAgaWYga2V5YSA9IDAgdGhlblxuICAgIGtleWIsIGRhdGFiXG4gIGVsc2UgaWYga2V5YiA9IDAgdGhlblxuICAgIGtleWEsIGRhdGFhXG4gIGVsc2UgaWYgY29tcGFyZSBrZXlhIGtleWIgPiAwIHRoZW5cbiAgICBrZXliLCBkYXRhYlxuICBlbHNlXG4gICAga2V5YSwgZGF0YWFcblxubGV0IG1heF9wb3NfaW50X25vdF96ZXJvIChrZXlhLCBkYXRhYSkgKGtleWIsIGRhdGFiKSA9XG4gIGlmIGNvbXBhcmUga2V5YSBrZXliID4gMCB0aGVuXG4gICAga2V5YSwgZGF0YWFcbiAgZWxzZVxuICAgIGtleWIsIGRhdGFiXG5cbmxldCBmb2xkX292ZXJfcGVybXV0YXRpb25zIGYgbCBhY2N1ID1cbiAgbGV0IHJlYyBhdXggdG9fZG8gZGlzY2FyZGVkIHBlcm11dGF0aW9uIGFjY3UgPVxuICAgIG1hdGNoIHRvX2RvLCBkaXNjYXJkZWQgd2l0aFxuICAgIHwgW10sIFtdIC0+IGYgcGVybXV0YXRpb24gYWNjdVxuICAgIHwgW10sIF8gOjogXyAtPiBhY2N1XG4gICAgfCBoIDo6IHQsIF8gLT5cbiAgICAgIGxldCB0b19kbzEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgYSAtPiBhIDo6IGxpc3QpIHQgZGlzY2FyZGVkIGluXG4gICAgICBsZXQgYWNjdSA9IGF1eCB0b19kbzEgW10gKGggOjogcGVybXV0YXRpb24pIGFjY3UgaW5cbiAgICAgIGxldCBhY2N1ID0gYXV4IHQgKGggOjogZGlzY2FyZGVkKSBwZXJtdXRhdGlvbiBhY2N1IGluXG4gICAgICBhY2N1XG4gIGluXG4gIGF1eCBsIFtdIFtdIGFjY3VcblxubGV0IGdjZF8yIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiA9XG4gICAgaWYgYiA9IDAgdGhlblxuICAgICAgYVxuICAgIGVsc2VcbiAgICAgIGF1eCBiIChhIG1vZCBiKVxuICBpblxuICBsZXQgYSA9IGFicyBhIGluXG4gIGxldCBiID0gYWJzIGIgaW5cbiAgaWYgYSA8IGIgdGhlblxuICAgIGF1eCBiIGFcbiAgZWxzZVxuICAgIGF1eCBhIGJcblxubGV0IGxjbV8yIGEgYiA9IGFicyBhICogYWJzIGIgLyBnY2RfMiBhIGJcblxubGV0IGxjbSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gLT4gMFxuICB8IGggOjogdCAtPiBMaXN0LmZvbGRfbGVmdCBsY21fMiBoIHRcblxubGV0IGdldF9pbnRlcnZhbF9saXN0IHAgaSBqID1cbiAgbGV0IGFkZCBjdXJyZW50IG91dHB1dCA9XG4gICAgbWF0Y2ggY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dFxuICAgIHwgU29tZSBwIC0+IHAgOjogb3V0cHV0XG4gIGluXG4gIGxldCBpbnNlcnQgayBjdXJyZW50ID1cbiAgICBtYXRjaCBjdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAoaywgaylcbiAgICB8IFNvbWUgKF8sIGopIC0+IFNvbWUgKGssIGopXG4gIGluXG4gIGxldCByZWMgYXV4IHAgayBjdXJyZW50IG91dHB1dCA9XG4gICAgaWYgayA8IGkgdGhlblxuICAgICAgYWRkIGN1cnJlbnQgb3V0cHV0XG4gICAgZWxzZSBpZiBwIGsgdGhlblxuICAgICAgYXV4IHAgKGsgLSAxKSAoaW5zZXJ0IGsgY3VycmVudCkgb3V0cHV0XG4gICAgZWxzZVxuICAgICAgYXV4IHAgKGsgLSAxKSBOb25lIChhZGQgY3VycmVudCBvdXRwdXQpXG4gIGluXG4gIGF1eCBwIGogTm9uZSBbXVxuXG5sZXQgbG93ZXJjYXNlID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IGNhcGl0YWxpemUgPSBTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuXG5sZXQgc3RyaW5nX3NwbGl0X29uX2NoYXIgKGRlbGltaXRlciA6IGNoYXIpIChzIDogc3RyaW5nKSA6XG4gICAgc3RyaW5nICogc3RyaW5nIG9wdGlvbiA9XG4gIHRyeVxuICAgIGxldCBpbmRleCA9IFN0cmluZy5pbmRleCBzIGRlbGltaXRlciBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBTdHJpbmcuc3ViIHMgMCBpbmRleCwgU29tZSAoU3RyaW5nLnN1YiBzIChpbmRleCArIDEpIChsZW5ndGggLSBpbmRleCAtIDEpKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBzLCBOb25lXG5cbmxldCBzbWFzaF9kdXBsaWNhdGVfaW5fb3JkZXJlZF9saXN0IHAgbCA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiRFVQTCBcXG5cIiBpblxuXG4gIGxldCByZWMgYXV4IHRhaWwgbm9jYyBjdXJyZW50IGFjY3UgPVxuICAgIG1hdGNoIHRhaWwgd2l0aFxuICAgIHwgW10gLT4gKGN1cnJlbnQsIG5vY2MpIDo6IGFjY3VcbiAgICB8IChoLCBuKSA6OiB0IHdoZW4gcCBoIGN1cnJlbnQgPSAwIC0+XG4gICAgICAoKmxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiRFVQTCAlaVxcblwiIChuK25vY2MpIGluKilcbiAgICAgIGF1eCB0IChuICsgbm9jYykgY3VycmVudCBhY2N1XG4gICAgfCAoaCwgbikgOjogdCAtPiBhdXggdCBuIGggKChjdXJyZW50LCBub2NjKSA6OiBhY2N1KVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IChoLCBuKSA6OiB0IC0+IGF1eCB0IG4gaCBbXVxuXG5sZXQgY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0ID1cbiAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IG5hbWUgZXh0IHRoZW5cbiAgICBGaWxlbmFtZS5jaG9wX3N1ZmZpeCBuYW1lIGV4dFxuICBlbHNlXG4gICAgRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvbiBuYW1lXG5cbmxldCBmaW5kX2F2YWlsYWJsZV9uYW1lIH5hbHJlYWR5X3RoZXJlIG5hbWUgfmZhY3VsdGF0aXZlIH5leHQgPVxuICBsZXQgZXh0ID1cbiAgICBtYXRjaCBleHQgd2l0aFxuICAgIHwgU29tZSBlIC0+IGVcbiAgICB8IE5vbmUgLT4gRmlsZW5hbWUuZXh0ZW5zaW9uIG5hbWVcbiAgaW5cbiAgbGV0IGJhc2UgPSBjaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgaW5cbiAgaWYgYWxyZWFkeV90aGVyZSAoYmFzZSBeIGV4dCkgdGhlbiAoXG4gICAgbGV0IGJhc2UnID1cbiAgICAgIGlmIGZhY3VsdGF0aXZlIDw+IFwiXCIgdGhlblxuICAgICAgICBiYXNlIF4gXCJfXCIgXiBmYWN1bHRhdGl2ZVxuICAgICAgZWxzZVxuICAgICAgICBiYXNlXG4gICAgaW5cbiAgICBpZiBhbHJlYWR5X3RoZXJlIChiYXNlJyBeIGV4dCkgdGhlbiAoXG4gICAgICBsZXQgdiA9IHJlZiAwIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3aGlsZSBhbHJlYWR5X3RoZXJlIChiYXNlJyBeIFwiflwiIF4gc3RyaW5nX29mX2ludCAhdiBeIGV4dCkgZG9cbiAgICAgICAgICBpbmNyIHZcbiAgICAgICAgZG9uZVxuICAgICAgaW5cbiAgICAgIGJhc2UnIF4gXCJ+XCIgXiBzdHJpbmdfb2ZfaW50ICF2IF4gZXh0XG4gICAgKSBlbHNlXG4gICAgICBiYXNlJyBeIGV4dFxuICApIGVsc2VcbiAgICBiYXNlIF4gZXh0XG5cbmxldCBkZWZhdWx0X21lc3NhZ2VfZGVsaW10ZXIgOiBjaGFyID0gJ1xceDFlJyAoKiBcIlxcdFwiICopXG5cbmxldCBnZXRfcmVmIHJlZiA9XG4gIGxldCBpID0gIXJlZiBpblxuICBsZXQgKCkgPSByZWYgOj0gaSArIDEgaW5cbiAgaVxuXG5sZXQgcmVtb3ZlX2RvdWJsZV9lbGVtZW50cyBsID1cbiAgbGV0IGwgPSBMaXN0LnNvcnQgY29tcGFyZSBsIGluXG4gIGxldCByZWMgYXV4IGwgYWNjdSBvbGQgPVxuICAgIG1hdGNoIGwsIG9sZCB3aXRoXG4gICAgfCBbXSwgXyAtPiBhY2N1XG4gICAgfCBoIDo6IHQsIFNvbWUgaCcgd2hlbiBoID0gaCcgLT4gYXV4IHQgYWNjdSBvbGRcbiAgICB8IGggOjogdCwgKE5vbmUgfCBTb21lIF8pIC0+IGF1eCB0IChoIDo6IGFjY3UpIChTb21lIGgpXG4gIGluXG4gIGF1eCBsIFtdIE5vbmVcblxubGV0IGZyb21fbl90b18wIG4gPVxuICBsZXQgcmVjIGF1eCBrIGFjYyA9XG4gICAgaWYgayA+IG4gdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgYXV4IChrICsgMSkgKGsgOjogYWNjKVxuICBpblxuICBhdXggMCBbXVxuXG5sZXQgY2xlYXIgYSA9IEFycmF5Lml0ZXJpIChmdW4gaSBfIC0+IGEuKGkpIDwtIFtdKSBhXG5cbmxldCBzb3J0X2J5X3ByaW9yaXR5IGYgbiA9XG4gIGxldCBhID0gQXJyYXkubWFrZSAobiArIDEpIFtdIGluXG4gIGxldCBrZXlzID0gZnJvbV9uX3RvXzAgbiBpblxuICBsZXQgc29ydCBsID1cbiAgICBsZXQgcmVjIGF1eCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IGsgPSBmIGggaW5cbiAgICAgICAgbGV0ICgpID0gYS4oaykgPC0gaCA6OiBhLihrKSBpblxuICAgICAgICBhdXggdFxuICAgIGluXG4gICAgbGV0ICgpID0gYXV4IGwgaW5cbiAgICBsZXQgb3V0cHV0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCBrZXkgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgZWx0IC0+IGVsdCA6OiBsaXN0KSBsaXN0IGEuKGtleSkpXG4gICAgICAgIFtdIGtleXNcbiAgICBpblxuICAgIGxldCAoKSA9IGNsZWFyIGEgaW5cbiAgICBvdXRwdXRcbiAgaW5cbiAgc29ydFxuXG5sZXQgbWFwX29wdCBmIG9wdCA9XG4gIG1hdGNoIG9wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBpbml0aWFsX2J1ZmZlcl9zaXplID0gMHgxMDAwXG5cbmxldCB3cml0ZV90b19jaGFubmVsIGYgZCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgbGV0ICgpID0gZiBiIHggaW5cbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgZCBiXG5cbmxldCBzdHJpbmdfb2Zfd3JpdGUgZiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICBsZXQgKCkgPSBmIG9iIHggaW5cbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX29mX3N0cmluZyBmIHggPVxuICBsZXQgbGV4X3N0ID0gWW9qc29uLkJhc2ljLmluaXRfbGV4ZXIgKCkgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgeCBpblxuICBmIGxleF9zdCBsZXhfYnVmXG5cbmxldCByZWFkX2JldHdlZW5fc3BhY2VzIGYgbGV4X3N0IGxleF9idWYgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgeCA9IGYgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgbGV4X3N0IGxleF9idWYgaW5cbiAgeFxuXG5sZXQgcmVhZF9uZXh0X2l0ZW0gZiBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgc3QgYiBpblxuICByZWFkX2JldHdlZW5fc3BhY2VzIGYgc3QgYlxuXG5sZXQgZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gcyA9XG4gIFwiTm90IGEgY29ycmVjdCBgXCIgXiBzIF4gXCJgOiBjb3VsZG4ndCBpbXBvcnQgZnJvbSBqc29uLlwiXG5cbmxldCBvZl9zdHJpbmcgKHMgOiBzdHJpbmcpID0gYFN0cmluZyBzXG5cbmxldCB0b19zdHJpbmcgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInN0cmluZ1wiKSA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyAocyA6IHN0cmluZykgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl9pbnQgKHMgOiBpbnQpID0gYEludCBzXG5cbmxldCB0b19pbnQgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImludFwiKSA9IGZ1bmN0aW9uXG4gIHwgYEludCAocyA6IGludCkgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl9ib29sIChzIDogYm9vbCkgPVxuICBgU3RyaW5nXG4gICAgKGlmIHMgdGhlblxuICAgICAgIFwidHJ1ZVwiXG4gICAgIGVsc2VcbiAgICAgICBcImZhbHNlXCIpXG5cbmxldCB0b19ib29sID8oZXJyb3JfbXNnID0gZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJib29sZWFuXCIpID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBgU3RyaW5nIFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl91bml0ICgpID0gYE51bGxcblxubGV0IHRvX3VuaXQgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInVuaXRcIikgPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+ICgpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX29wdGlvbiB0b19qc29uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSB4IC0+XG4gICAgKG1hdGNoIHRvX2pzb24geCB3aXRoXG4gICAgfCBgTnVsbCAtPiBmYWlsd2l0aCBcImFtYmlndW91cyBKc29uVXRpbC5vZl9vcHRpb25cIlxuICAgIHwgeCAtPiB4KVxuXG5sZXQgdG9fb3B0aW9uID0gWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG5cbmxldCB3cml0ZV9vcHRpb24gZiBvYiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvYiAoKVxuICB8IFNvbWUgeCAtPiBmIG9iIHhcblxubGV0IHJlYWRfb3B0aW9uIGYgcCBsYiA9XG4gIGlmIFlvanNvbi5CYXNpYy5yZWFkX251bGxfaWZfcG9zc2libGUgcCBsYiB0aGVuXG4gICAgTm9uZVxuICBlbHNlXG4gICAgU29tZSAoZiBwIGxiKVxuXG5sZXQgb2ZfbGlzdCB0b19qc29uIGwgPSBgTGlzdCAoTGlzdC5yZXZfbWFwIHRvX2pzb24gKExpc3QucmV2IGwpKVxuXG5sZXQgdG9fbGlzdCA/KGVycm9yX21zZyA9IGV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibGlzdFwiKSBvZl9qc29uID1cbiAgZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIHggLT5cbiAgICAodHJ5IExpc3QucmV2X21hcCBvZl9qc29uIChMaXN0LnJldiBsKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgYE51bGwgLT4gW11cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgd3JpdGVfY29tbWEgb2IgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgaXRlcjIgZl9lbHQgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICB3cml0ZV9jb21tYSB4O1xuICAgIGZfZWx0IHggeTtcbiAgICBpdGVyMiBmX2VsdCB4IGxcblxubGV0IHdyaXRlX2xpc3QgZiBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgZiBvYiB5O1xuICAgICAgaXRlcjIgZiBvYiBsXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IG9mX2FycmF5IHRvX2pzb24gYSA9XG4gIGBMaXN0IChBcnJheS5mb2xkX3JpZ2h0IChmdW4geCBhY2MgLT4gdG9fanNvbiB4IDo6IGFjYykgYSBbXSlcblxubGV0IHRvX2FycmF5ID8oZXJyb3JfbXNnID0gZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJhcnJheVwiKSBvZl9qc29uID1cbiAgZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IG9mX2pzb24gbFxuICB8IGBOdWxsIC0+IFt8fF1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgd3JpdGVfYXJyYXkgZiBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPSBpZiBBcnJheS5sZW5ndGggbCA+IDAgdGhlbiBmIG9iIGwuKDApIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgKCkgPSB3cml0ZV9jb21tYSBvYiBpblxuICAgICAgICBmIG9iIGwuKHN1Y2MgaSkpXG4gICAgICAocHJlZCAoQXJyYXkubGVuZ3RoIGwpKVxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWMgaXRlcl9zZXEgb2IgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZiA6OiBxIC0+XG4gICAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgICBsZXQgKCkgPSBmIG9iIGluXG4gICAgaXRlcl9zZXEgb2IgcVxuXG5sZXQgd3JpdGVfc2VxdWVuY2Ugb2IgbCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBmIDo6IHEgLT5cbiAgICAgIGxldCAoKSA9IGYgb2IgaW5cbiAgICAgIGl0ZXJfc2VxIG9iIHFcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgcmVhZF92YXJpYW50IHJlYWRfaWQgcmVhZCBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHN0IGIgaW5cbiAgbGV0IGNzdCA9IHJlYWRfYmV0d2Vlbl9zcGFjZXMgcmVhZF9pZCBzdCBiIGluXG4gIGxldCBvdXQgPSByZWFkIHN0IGIgY3N0IGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBzdCBiIGluXG4gIG91dFxuXG5sZXQgc21hcnRfYXNzb2MgbCA9XG4gIGBBc3NvY1xuICAgIChMaXN0LnJldlxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IF8sIChgTnVsbCB8IGBBc3NvYyBbXSB8IGBMaXN0IFtdKSAtPiBhY2NcbiAgICAgICAgICAgIHwgeCAtPiB4IDo6IGFjYylcbiAgICAgICAgICBbXSBsKSlcblxubGV0IG9mX2Fzc29jIHRvX2pzb24gbCA9IGBBc3NvYyAoTGlzdC5yZXZfbWFwIHRvX2pzb24gKExpc3QucmV2IGwpKVxuXG5sZXQgdG9fYXNzb2MgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImFzc29jaWF0aW9uXCIpIG9mX2pzb25cbiAgICBqc29uID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnkgTGlzdC5yZXZfbWFwIG9mX2pzb24gKExpc3QucmV2IGwpXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCBgTnVsbCAtPiBbXVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9maWVsZCBuYSBmIG9iIHggPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIG5hIGluXG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnOicgaW5cbiAgZiBvYiB4XG5cbmxldCBvZl9wYWlyID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgdG9fanNvbjEgdG9fanNvbjIgKGEsIGIpID1cbiAgYEFzc29jIFsgbGFiMSwgdG9fanNvbjEgYTsgbGFiMiwgdG9fanNvbjIgYiBdXG5cbmxldCB0b190cmlwbGUgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSA/KGxhYjMgPSBcInRoaXJkXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInRyaXBsZVwiKSBvZl9qc29uMSBvZl9qc29uMlxuICAgIG9mX2pzb24zID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAgKCBvZl9qc29uMSAoTGlzdC5hc3NvYyBsYWIxIGwpLFxuICAgICAgICAgb2ZfanNvbjIgKExpc3QuYXNzb2MgbGFiMiBsKSxcbiAgICAgICAgIG9mX2pzb24zIChMaXN0LmFzc29jIGxhYjMgbCkgKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX3RyaXBsZSA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpID8obGFiMyA9IFwidGhpcmRcIikgdG9fanNvbjFcbiAgICB0b19qc29uMiB0b19qc29uMyAoYSwgYiwgYykgPVxuICBgQXNzb2MgWyBsYWIxLCB0b19qc29uMSBhOyBsYWIyLCB0b19qc29uMiBiOyBsYWIzLCB0b19qc29uMyBjIF1cblxubGV0IHRvX3BhaXIgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKVxuICAgID8oZXJyb3JfbXNnID0gZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJwYWlyXCIpIG9mX2pzb24xIG9mX2pzb24yID1cbiAgZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5IG9mX2pzb24xIChMaXN0LmFzc29jIGxhYjEgbCksIG9mX2pzb24yIChMaXN0LmFzc29jIGxhYjIgbClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9jb21wYWN0X3BhaXIgZiBnIG9iICh4LCB5KSA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID0gZiBvYiB4IGluXG4gIGxldCAoKSA9IHdyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IGcgb2IgeSBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWFkX2NvbXBhY3RfcGFpciBmIGcgc3QgYiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xiciBzdCBiIGluXG4gIGxldCB4ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyBmIHN0IGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgc3QgYiBpblxuICBsZXQgeSA9IHJlYWRfYmV0d2Vlbl9zcGFjZXMgZyBzdCBiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBzdCBiIGluXG4gIHgsIHlcblxubGV0IGNvbXBhY3RfdG9fcGFpciBmIGcgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgeDsgeSBdIC0+IGYgeCwgZyB5XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb21wYWN0IHBhaXJcIiwgeCkpXG5cbmxldCBvZl9tYXAgPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpIH5mb2xkIGtleV90b19qc29uXG4gICAgdmFsdWVfdG9fanNvbiBtYXAgPVxuICBgTGlzdFxuICAgIChMaXN0LnJldlxuICAgICAgIChmb2xkXG4gICAgICAgICAgKGZ1biAoa2V5IDogJ2tleSkgKHZhbHVlIDogJ3ZhbHVlKSAobGlzdCA6IFlvanNvbi5CYXNpYy50IGxpc3QpIC0+XG4gICAgICAgICAgICBgQXNzb2MgWyBsYWJfa2V5LCBrZXlfdG9fanNvbiBrZXk7IGxhYl92YWx1ZSwgdmFsdWVfdG9fanNvbiB2YWx1ZSBdXG4gICAgICAgICAgICA6OiBsaXN0KVxuICAgICAgICAgIG1hcCBbXSkpXG5cbmxldCB0b19tYXAgPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIm1hcFwiKSB+YWRkIH5lbXB0eSBqc29uX3RvX2tleVxuICAgIGpzb25fdG9fdmFsdWUgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBtYXAgeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgYWRkXG4gICAgICAgICAgICAgICAoanNvbl90b19rZXkgKExpc3QuYXNzb2MgbGFiX2tleSBsKSlcbiAgICAgICAgICAgICAgIChqc29uX3RvX3ZhbHVlIChMaXN0LmFzc29jIGxhYl92YWx1ZSBsKSlcbiAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgICAgIGVtcHR5IGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfdW5peF9sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgVW5peExhYmVscy5FMkJJRyAtPiBgQXNzb2MgWyBcIkUyQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBQ0NFUyAtPiBgQXNzb2MgWyBcIkVBQ0NFU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUdBSU4gLT4gYEFzc29jIFsgXCJFQUdBSU5cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUJBREYgLT4gYEFzc29jIFsgXCJFQkFERlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQlVTWSAtPiBgQXNzb2MgWyBcIkVCVVNZXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDSElMRCAtPiBgQXNzb2MgWyBcIkVDSElMRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FREVBRExLIC0+IGBBc3NvYyBbIFwiRURFQURMS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRE9NIC0+IGBBc3NvYyBbIFwiRURPTVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRVhJU1QgLT4gYEFzc29jIFsgXCJFRVhJU1RcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUZBVUxUIC0+IGBBc3NvYyBbIFwiRUZBVUxUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVGQklHIC0+IGBBc3NvYyBbIFwiRUZCSUdcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlOVFIgLT4gYEFzc29jIFsgXCJFSU5UUlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5WQUwgLT4gYEFzc29jIFsgXCJFSU5WQUxcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlPIC0+IGBBc3NvYyBbIFwiRUlPXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJU0RJUiAtPiBgQXNzb2MgWyBcIkVJU0RJUlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTUZJTEUgLT4gYEFzc29jIFsgXCJFTUZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU1MSU5LIC0+IGBBc3NvYyBbIFwiRU1MSU5LXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOQU1FVE9PTE9ORyAtPiBgQXNzb2MgWyBcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkZJTEUgLT4gYEFzc29jIFsgXCJFTkZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PREVWIC0+IGBBc3NvYyBbIFwiRU5PREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0VOVCAtPiBgQXNzb2MgWyBcIkVOT0VOVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9FWEVDIC0+IGBBc3NvYyBbIFwiRU5PRVhFQ1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9MQ0sgLT4gYEFzc29jIFsgXCJFTk9MQ0tcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PTUVNIC0+IGBBc3NvYyBbIFwiRU5PTUVNXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1NQQyAtPiBgQXNzb2MgWyBcIkVOT1NQQ1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9TWVMgLT4gYEFzc29jIFsgXCJFTk9TWVNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVERJUiAtPiBgQXNzb2MgWyBcIkVOT1RESVJcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVEVNUFRZIC0+IGBBc3NvYyBbIFwiRU5PVEVNUFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RUWSAtPiBgQXNzb2MgWyBcIkVOT1RUWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTlhJTyAtPiBgQXNzb2MgWyBcIkVOWElPXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQRVJNIC0+IGBBc3NvYyBbIFwiRVBFUk1cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBJUEUgLT4gYEFzc29jIFsgXCJFUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUkFOR0UgLT4gYEFzc29jIFsgXCJFUkFOR0VcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVJPRlMgLT4gYEFzc29jIFsgXCJFUk9GU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU1BJUEUgLT4gYEFzc29jIFsgXCJFU1BJUEVcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVNSQ0ggLT4gYEFzc29jIFsgXCJFU1JDSFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FWERFViAtPiBgQXNzb2MgWyBcIkVYREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVXT1VMREJMT0NLIC0+IGBBc3NvYyBbIFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlOUFJPR1JFU1MgLT4gYEFzc29jIFsgXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUxSRUFEWSAtPiBgQXNzb2MgWyBcIkVBTFJFQURZXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RTT0NLIC0+IGBBc3NvYyBbIFwiRU5PVFNPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRURFU1RBRERSUkVRIC0+IGBBc3NvYyBbIFwiRURFU1RBRERSUkVRXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVNU0dTSVpFIC0+IGBBc3NvYyBbIFwiRU1TR1NJWkVcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBST1RPVFlQRSAtPiBgQXNzb2MgWyBcIkVQUk9UT1RZUEVcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PUFJPVE9PUFQgLT4gYEFzc29jIFsgXCJFTk9QUk9UT09QVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUFJPVE9OT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVNPQ0tUTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVPUE5PVFNVUFAgLT4gYEFzc29jIFsgXCJFT1BOT1RTVVBQXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFERFJJTlVTRSAtPiBgQXNzb2MgWyBcIkVBRERSSU5VU0VcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFERFJOT1RBVkFJTCAtPiBgQXNzb2MgWyBcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5FVERPV04gLT4gYEFzc29jIFsgXCJFTkVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkVUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVORVRVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORVRSRVNFVCAtPiBgQXNzb2MgWyBcIkVORVRSRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ09OTkFCT1JURUQgLT4gYEFzc29jIFsgXCJFQ09OTkFCT1JURURcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNPTk5SRVNFVCAtPiBgQXNzb2MgWyBcIkVDT05OUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PQlVGUyAtPiBgQXNzb2MgWyBcIkVOT0JVRlNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlTQ09OTiAtPiBgQXNzb2MgWyBcIkVJU0NPTk5cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVENPTk4gLT4gYEFzc29jIFsgXCJFTk9UQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU0hVVERPV04gLT4gYEFzc29jIFsgXCJFU0hVVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVRPT01BTllSRUZTIC0+IGBBc3NvYyBbIFwiRVRPT01BTllSRUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVUSU1FRE9VVCAtPiBgQXNzb2MgWyBcIkVUSU1FRE9VVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ09OTlJFRlVTRUQgLT4gYEFzc29jIFsgXCJFQ09OTlJFRlVTRURcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUhPU1RET1dOIC0+IGBBc3NvYyBbIFwiRUhPU1RET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVIT1NUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTE9PUCAtPiBgQXNzb2MgWyBcIkVMT09QXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVPVkVSRkxPVyAtPiBgQXNzb2MgWyBcIkVPVkVSRkxPV1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FVU5LTk9XTkVSUiBpbnQgLT4gYEFzc29jIFsgXCJFVU5LTk9XTkVSUlwiLCBvZl9pbnQgaW50IF1cblxubGV0ICh0b191bml4X2xhYmVsIDogWW9qc29uLkJhc2ljLnQgLT4gVW5peExhYmVscy5lcnJvcikgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcIkUyQklHXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRTJCSUdcbiAgfCBgQXNzb2MgWyAoXCJFQUNDRVNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUNDRVNcbiAgfCBgQXNzb2MgWyAoXCJFQUdBSU5cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUdBSU5cbiAgfCBgQXNzb2MgWyAoXCJFQkFERlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVCQURGXG4gIHwgYEFzc29jIFsgKFwiRUJVU1lcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQlVTWVxuICB8IGBBc3NvYyBbIChcIkVDSElMRFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVDSElMRFxuICB8IGBBc3NvYyBbIChcIkVERUFETEtcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FREVBRExLXG4gIHwgYEFzc29jIFsgKFwiRURPTVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVET01cbiAgfCBgQXNzb2MgWyAoXCJFRVhJU1RcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FRVhJU1RcbiAgfCBgQXNzb2MgWyAoXCJFRkFVTFRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FRkFVTFRcbiAgfCBgQXNzb2MgWyAoXCJFRkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVGQklHXG4gIHwgYEFzc29jIFsgKFwiRUlOVFJcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSU5UUlxuICB8IGBBc3NvYyBbIChcIkVJTlZBTFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlZBTFxuICB8IGBBc3NvYyBbIChcIkVJT1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJT1xuICB8IGBBc3NvYyBbIChcIkVJU0RJUlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJU0RJUlxuICB8IGBBc3NvYyBbIChcIkVNRklMRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVNRklMRVxuICB8IGBBc3NvYyBbIChcIkVNTElOS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVNTElOS1xuICB8IGBBc3NvYyBbIChcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOQU1FVE9PTE9OR1xuICB8IGBBc3NvYyBbIChcIkVORklMRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVORklMRVxuICB8IGBBc3NvYyBbIChcIkVOT0RFVlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0RFVlxuICB8IGBBc3NvYyBbIChcIkVOT0VOVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0VOVFxuICB8IGBBc3NvYyBbIChcIkVOT0VYRUNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9FWEVDXG4gIHwgYEFzc29jIFsgKFwiRU5PTENLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PTENLXG4gIHwgYEFzc29jIFsgKFwiRU5PTUVNXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PTUVNXG4gIHwgYEFzc29jIFsgKFwiRU5PU1BDXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PU1BDXG4gIHwgYEFzc29jIFsgKFwiRU5PU1lTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PU1lTXG4gIHwgYEFzc29jIFsgKFwiRU5PVERJUlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RESVJcbiAgfCBgQXNzb2MgWyAoXCJFTk9URU1QVFlcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9URU1QVFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UVFlcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9UVFlcbiAgfCBgQXNzb2MgWyAoXCJFTlhJT1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOWElPXG4gIHwgYEFzc29jIFsgKFwiRVBFUk1cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUEVSTVxuICB8IGBBc3NvYyBbIChcIkVQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBJUEVcbiAgfCBgQXNzb2MgWyAoXCJFUkFOR0VcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUkFOR0VcbiAgfCBgQXNzb2MgWyAoXCJFUk9GU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVST0ZTXG4gIHwgYEFzc29jIFsgKFwiRVNQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVNSQ0hcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU1JDSFxuICB8IGBBc3NvYyBbIChcIkVYREVWXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVhERVZcbiAgfCBgQXNzb2MgWyAoXCJFV09VTERCTE9DS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVXT1VMREJMT0NLXG4gIHwgYEFzc29jIFsgKFwiRUlOUFJPR1JFU1NcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSU5QUk9HUkVTU1xuICB8IGBBc3NvYyBbIChcIkVBTFJFQURZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFMUkVBRFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UU09DS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RTT0NLXG4gIHwgYEFzc29jIFsgKFwiRURFU1RBRERSUkVRXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRURFU1RBRERSUkVRXG4gIHwgYEFzc29jIFsgKFwiRU1TR1NJWkVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTVNHU0laRVxuICB8IGBBc3NvYyBbIChcIkVQUk9UT1RZUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUFJPVE9UWVBFXG4gIHwgYEFzc29jIFsgKFwiRU5PUFJPVE9PUFRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9QUk9UT09QVFxuICB8IGBBc3NvYyBbIChcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQUk9UT05PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTT0NLVE5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVPUE5PVFNVUFBcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FT1BOT1RTVVBQXG4gIHwgYEFzc29jIFsgKFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFERFJJTlVTRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBRERSSU5VU0VcbiAgfCBgQXNzb2MgWyAoXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFERFJOT1RBVkFJTFxuICB8IGBBc3NvYyBbIChcIkVORVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5FVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVORVRVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRU5FVFJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5FVFJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5BQk9SVEVEXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVDT05OUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFTk9CVUZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PQlVGU1xuICB8IGBBc3NvYyBbIChcIkVJU0NPTk5cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSVNDT05OXG4gIHwgYEFzc29jIFsgKFwiRU5PVENPTk5cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9UQ09OTlxuICB8IGBBc3NvYyBbIChcIkVTSFVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTSFVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVUT09NQU5ZUkVGU1xuICB8IGBBc3NvYyBbIChcIkVUSU1FRE9VVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVUSU1FRE9VVFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVDT05OUkVGVVNFRFxuICB8IGBBc3NvYyBbIChcIkVIT1NURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVIT1NURE9XTlxuICB8IGBBc3NvYyBbIChcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVIT1NUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVMT09QXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUxPT1BcbiAgfCBgQXNzb2MgWyAoXCJFT1ZFUkZMT1dcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FT1ZFUkZMT1dcbiAgfCBgQXNzb2MgWyAoXCJFVU5LTk9XTkVSUlwiLCBpbnQpIF0gLT4gVW5peExhYmVscy5FVU5LTk9XTkVSUiAodG9faW50IGludClcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJ1bml4IGxhYmVscyBlcnJvclwiLCB4KSlcblxubGV0IG9mX3VuaXhfZXJyb3IgPSBmdW5jdGlvblxuICB8IFVuaXguRTJCSUcgLT4gYEFzc29jIFsgXCJFMkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUNDRVMgLT4gYEFzc29jIFsgXCJFQUNDRVNcIiwgYE51bGwgXVxuICB8IFVuaXguRUFHQUlOIC0+IGBBc3NvYyBbIFwiRUFHQUlOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVCQURGIC0+IGBBc3NvYyBbIFwiRUJBREZcIiwgYE51bGwgXVxuICB8IFVuaXguRUJVU1kgLT4gYEFzc29jIFsgXCJFQlVTWVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ0hJTEQgLT4gYEFzc29jIFsgXCJFQ0hJTERcIiwgYE51bGwgXVxuICB8IFVuaXguRURFQURMSyAtPiBgQXNzb2MgWyBcIkVERUFETEtcIiwgYE51bGwgXVxuICB8IFVuaXguRURPTSAtPiBgQXNzb2MgWyBcIkVET01cIiwgYE51bGwgXVxuICB8IFVuaXguRUVYSVNUIC0+IGBBc3NvYyBbIFwiRUVYSVNUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVGQVVMVCAtPiBgQXNzb2MgWyBcIkVGQVVMVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FRkJJRyAtPiBgQXNzb2MgWyBcIkVGQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJTlRSIC0+IGBBc3NvYyBbIFwiRUlOVFJcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOVkFMIC0+IGBBc3NvYyBbIFwiRUlOVkFMXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJTyAtPiBgQXNzb2MgWyBcIkVJT1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSVNESVIgLT4gYEFzc29jIFsgXCJFSVNESVJcIiwgYE51bGwgXVxuICB8IFVuaXguRU1GSUxFIC0+IGBBc3NvYyBbIFwiRU1GSUxFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVNTElOSyAtPiBgQXNzb2MgWyBcIkVNTElOS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkFNRVRPT0xPTkcgLT4gYEFzc29jIFsgXCJFTkFNRVRPT0xPTkdcIiwgYE51bGwgXVxuICB8IFVuaXguRU5GSUxFIC0+IGBBc3NvYyBbIFwiRU5GSUxFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0RFViAtPiBgQXNzb2MgWyBcIkVOT0RFVlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9FTlQgLT4gYEFzc29jIFsgXCJFTk9FTlRcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PRVhFQyAtPiBgQXNzb2MgWyBcIkVOT0VYRUNcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PTENLIC0+IGBBc3NvYyBbIFwiRU5PTENLXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT01FTSAtPiBgQXNzb2MgWyBcIkVOT01FTVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9TUEMgLT4gYEFzc29jIFsgXCJFTk9TUENcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PU1lTIC0+IGBBc3NvYyBbIFwiRU5PU1lTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RESVIgLT4gYEFzc29jIFsgXCJFTk9URElSXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RFTVBUWSAtPiBgQXNzb2MgWyBcIkVOT1RFTVBUWVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9UVFkgLT4gYEFzc29jIFsgXCJFTk9UVFlcIiwgYE51bGwgXVxuICB8IFVuaXguRU5YSU8gLT4gYEFzc29jIFsgXCJFTlhJT1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FUEVSTSAtPiBgQXNzb2MgWyBcIkVQRVJNXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQSVBFIC0+IGBBc3NvYyBbIFwiRVBJUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRVJBTkdFIC0+IGBBc3NvYyBbIFwiRVJBTkdFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVST0ZTIC0+IGBBc3NvYyBbIFwiRVJPRlNcIiwgYE51bGwgXVxuICB8IFVuaXguRVNQSVBFIC0+IGBBc3NvYyBbIFwiRVNQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVTUkNIIC0+IGBBc3NvYyBbIFwiRVNSQ0hcIiwgYE51bGwgXVxuICB8IFVuaXguRVhERVYgLT4gYEFzc29jIFsgXCJFWERFVlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FV09VTERCTE9DSyAtPiBgQXNzb2MgWyBcIkVXT1VMREJMT0NLXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJTlBST0dSRVNTIC0+IGBBc3NvYyBbIFwiRUlOUFJPR1JFU1NcIiwgYE51bGwgXVxuICB8IFVuaXguRUFMUkVBRFkgLT4gYEFzc29jIFsgXCJFQUxSRUFEWVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9UU09DSyAtPiBgQXNzb2MgWyBcIkVOT1RTT0NLXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVERVNUQUREUlJFUSAtPiBgQXNzb2MgWyBcIkVERVNUQUREUlJFUVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTVNHU0laRSAtPiBgQXNzb2MgWyBcIkVNU0dTSVpFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQUk9UT1RZUEUgLT4gYEFzc29jIFsgXCJFUFJPVE9UWVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1BST1RPT1BUIC0+IGBBc3NvYyBbIFwiRU5PUFJPVE9PUFRcIiwgYE51bGwgXVxuICB8IFVuaXguRVBST1RPTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVTT0NLVE5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FT1BOT1RTVVBQIC0+IGBBc3NvYyBbIFwiRU9QTk9UU1VQUFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUEZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRUFGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBRERSSU5VU0UgLT4gYEFzc29jIFsgXCJFQUREUklOVVNFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBRERSTk9UQVZBSUwgLT4gYEFzc29jIFsgXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORVRET1dOIC0+IGBBc3NvYyBbIFwiRU5FVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXguRU5FVFVOUkVBQ0ggLT4gYEFzc29jIFsgXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkVUUkVTRVQgLT4gYEFzc29jIFsgXCJFTkVUUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXguRUNPTk5BQk9SVEVEIC0+IGBBc3NvYyBbIFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDT05OUkVTRVQgLT4gYEFzc29jIFsgXCJFQ09OTlJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0JVRlMgLT4gYEFzc29jIFsgXCJFTk9CVUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJU0NPTk4gLT4gYEFzc29jIFsgXCJFSVNDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RDT05OIC0+IGBBc3NvYyBbIFwiRU5PVENPTk5cIiwgYE51bGwgXVxuICB8IFVuaXguRVNIVVRET1dOIC0+IGBBc3NvYyBbIFwiRVNIVVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVUT09NQU5ZUkVGUyAtPiBgQXNzb2MgWyBcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FVElNRURPVVQgLT4gYEFzc29jIFsgXCJFVElNRURPVVRcIiwgYE51bGwgXVxuICB8IFVuaXguRUNPTk5SRUZVU0VEIC0+IGBBc3NvYyBbIFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVIT1NURE9XTiAtPiBgQXNzb2MgWyBcIkVIT1NURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSE9TVFVOUkVBQ0ggLT4gYEFzc29jIFsgXCJFSE9TVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXguRUxPT1AgLT4gYEFzc29jIFsgXCJFTE9PUFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FT1ZFUkZMT1cgLT4gYEFzc29jIFsgXCJFT1ZFUkZMT1dcIiwgYE51bGwgXVxuICB8IFVuaXguRVVOS05PV05FUlIgaW50IC0+IGBBc3NvYyBbIFwiRVVOS05PV05FUlJcIiwgb2ZfaW50IGludCBdXG5cbmxldCAodG9fdW5peF9lcnJvciA6IFlvanNvbi5CYXNpYy50IC0+IFVuaXguZXJyb3IpID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJFMkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4LkUyQklHXG4gIHwgYEFzc29jIFsgKFwiRUFDQ0VTXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFDQ0VTXG4gIHwgYEFzc29jIFsgKFwiRUFHQUlOXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFHQUlOXG4gIHwgYEFzc29jIFsgKFwiRUJBREZcIiwgYE51bGwpIF0gLT4gVW5peC5FQkFERlxuICB8IGBBc3NvYyBbIChcIkVCVVNZXCIsIGBOdWxsKSBdIC0+IFVuaXguRUJVU1lcbiAgfCBgQXNzb2MgWyAoXCJFQ0hJTERcIiwgYE51bGwpIF0gLT4gVW5peC5FQ0hJTERcbiAgfCBgQXNzb2MgWyAoXCJFREVBRExLXCIsIGBOdWxsKSBdIC0+IFVuaXguRURFQURMS1xuICB8IGBBc3NvYyBbIChcIkVET01cIiwgYE51bGwpIF0gLT4gVW5peC5FRE9NXG4gIHwgYEFzc29jIFsgKFwiRUVYSVNUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUVYSVNUXG4gIHwgYEFzc29jIFsgKFwiRUZBVUxUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUZBVUxUXG4gIHwgYEFzc29jIFsgKFwiRUZCSUdcIiwgYE51bGwpIF0gLT4gVW5peC5FRkJJR1xuICB8IGBBc3NvYyBbIChcIkVJTlRSXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlOVFJcbiAgfCBgQXNzb2MgWyAoXCJFSU5WQUxcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5WQUxcbiAgfCBgQXNzb2MgWyAoXCJFSU9cIiwgYE51bGwpIF0gLT4gVW5peC5FSU9cbiAgfCBgQXNzb2MgWyAoXCJFSVNESVJcIiwgYE51bGwpIF0gLT4gVW5peC5FSVNESVJcbiAgfCBgQXNzb2MgWyAoXCJFTUZJTEVcIiwgYE51bGwpIF0gLT4gVW5peC5FTUZJTEVcbiAgfCBgQXNzb2MgWyAoXCJFTUxJTktcIiwgYE51bGwpIF0gLT4gVW5peC5FTUxJTktcbiAgfCBgQXNzb2MgWyAoXCJFTkFNRVRPT0xPTkdcIiwgYE51bGwpIF0gLT4gVW5peC5FTkFNRVRPT0xPTkdcbiAgfCBgQXNzb2MgWyAoXCJFTkZJTEVcIiwgYE51bGwpIF0gLT4gVW5peC5FTkZJTEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9ERVZcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9ERVZcbiAgfCBgQXNzb2MgWyAoXCJFTk9FTlRcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9FTlRcbiAgfCBgQXNzb2MgWyAoXCJFTk9FWEVDXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PRVhFQ1xuICB8IGBBc3NvYyBbIChcIkVOT0xDS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0xDS1xuICB8IGBBc3NvYyBbIChcIkVOT01FTVwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT01FTVxuICB8IGBBc3NvYyBbIChcIkVOT1NQQ1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1NQQ1xuICB8IGBBc3NvYyBbIChcIkVOT1NZU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1NZU1xuICB8IGBBc3NvYyBbIChcIkVOT1RESVJcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9URElSXG4gIHwgYEFzc29jIFsgKFwiRU5PVEVNUFRZXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVEVNUFRZXG4gIHwgYEFzc29jIFsgKFwiRU5PVFRZXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVFRZXG4gIHwgYEFzc29jIFsgKFwiRU5YSU9cIiwgYE51bGwpIF0gLT4gVW5peC5FTlhJT1xuICB8IGBBc3NvYyBbIChcIkVQRVJNXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBFUk1cbiAgfCBgQXNzb2MgWyAoXCJFUElQRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVJBTkdFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVJBTkdFXG4gIHwgYEFzc29jIFsgKFwiRVJPRlNcIiwgYE51bGwpIF0gLT4gVW5peC5FUk9GU1xuICB8IGBBc3NvYyBbIChcIkVTUElQRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVTUElQRVxuICB8IGBBc3NvYyBbIChcIkVTUkNIXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNSQ0hcbiAgfCBgQXNzb2MgWyAoXCJFWERFVlwiLCBgTnVsbCkgXSAtPiBVbml4LkVYREVWXG4gIHwgYEFzc29jIFsgKFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwpIF0gLT4gVW5peC5FV09VTERCTE9DS1xuICB8IGBBc3NvYyBbIChcIkVJTlBST0dSRVNTXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlOUFJPR1JFU1NcbiAgfCBgQXNzb2MgWyAoXCJFQUxSRUFEWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVBTFJFQURZXG4gIHwgYEFzc29jIFsgKFwiRU5PVFNPQ0tcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UU09DS1xuICB8IGBBc3NvYyBbIChcIkVERVNUQUREUlJFUVwiLCBgTnVsbCkgXSAtPiBVbml4LkVERVNUQUREUlJFUVxuICB8IGBBc3NvYyBbIChcIkVNU0dTSVpFXCIsIGBOdWxsKSBdIC0+IFVuaXguRU1TR1NJWkVcbiAgfCBgQXNzb2MgWyAoXCJFUFJPVE9UWVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBST1RPVFlQRVxuICB8IGBBc3NvYyBbIChcIkVOT1BST1RPT1BUXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PUFJPVE9PUFRcbiAgfCBgQXNzb2MgWyAoXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peC5FUFJPVE9OT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peC5FU09DS1ROT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFT1BOT1RTVVBQXCIsIGBOdWxsKSBdIC0+IFVuaXguRU9QTk9UU1VQUFxuICB8IGBBc3NvYyBbIChcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVQRk5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVBRk5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVBRERSSU5VU0VcIiwgYE51bGwpIF0gLT4gVW5peC5FQUREUklOVVNFXG4gIHwgYEFzc29jIFsgKFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCkgXSAtPiBVbml4LkVBRERSTk9UQVZBSUxcbiAgfCBgQXNzb2MgWyAoXCJFTkVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVORVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwpIF0gLT4gVW5peC5FTkVUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVORVRSRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVORVRSRVNFVFxuICB8IGBBc3NvYyBbIChcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OQUJPUlRFRFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peC5FQ09OTlJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRU5PQlVGU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0JVRlNcbiAgfCBgQXNzb2MgWyAoXCJFSVNDT05OXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlTQ09OTlxuICB8IGBBc3NvYyBbIChcIkVOT1RDT05OXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVENPTk5cbiAgfCBgQXNzb2MgWyAoXCJFU0hVVERPV05cIiwgYE51bGwpIF0gLT4gVW5peC5FU0hVVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwpIF0gLT4gVW5peC5FVE9PTUFOWVJFRlNcbiAgfCBgQXNzb2MgWyAoXCJFVElNRURPVVRcIiwgYE51bGwpIF0gLT4gVW5peC5FVElNRURPVVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFRlVTRURcIiwgYE51bGwpIF0gLT4gVW5peC5FQ09OTlJFRlVTRURcbiAgfCBgQXNzb2MgWyAoXCJFSE9TVERPV05cIiwgYE51bGwpIF0gLT4gVW5peC5FSE9TVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFSE9TVFVOUkVBQ0hcIiwgYE51bGwpIF0gLT4gVW5peC5FSE9TVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTE9PUFwiLCBgTnVsbCkgXSAtPiBVbml4LkVMT09QXG4gIHwgYEFzc29jIFsgKFwiRU9WRVJGTE9XXCIsIGBOdWxsKSBdIC0+IFVuaXguRU9WRVJGTE9XXG4gIHwgYEFzc29jIFsgKFwiRVVOS05PV05FUlJcIiwgaW50KSBdIC0+IFVuaXguRVVOS05PV05FUlIgKHRvX2ludCBpbnQpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKGV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwidW5peCBlcnJvclwiLCB4KSlcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICBZb2pzb24uQmFzaWMud3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEFycmF5IHdpdGggZHluYW1pYyBzaXplXG5cbiAgICBJdCB1c2VzIGltcGVyYXRpdmUgc3R5bGVzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgbW9kdWxlcyAqKVxuXG5tb2R1bGUgRHluQXJyYXkgPVxuZnVuY3RvclxuICAoRyA6IEdlbkFycmF5LkdlbkFycmF5KVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSB7XG4gICAgICAgIG11dGFibGUgYXJyYXk6ICdhIEcudDtcbiAgICAgICAgbXV0YWJsZSBjdXJyZW50X3NpemU6IGludDtcbiAgICAgICAgZGVmYXVsdDogaW50IC0+ICdhO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlIG4gYSA9XG4gICAgICAgIHsgYXJyYXkgPSBHLmNyZWF0ZSBuIGE7IGN1cnJlbnRfc2l6ZSA9IG47IGRlZmF1bHQgPSAoZnVuIF8gLT4gYSkgfVxuXG4gICAgICBsZXQgbGVuZ3RoIGEgPSBhLmN1cnJlbnRfc2l6ZVxuXG4gICAgICBsZXQgZXhwYW5kIHQgPVxuICAgICAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgICAgIGxldCBuJyA9IG1heCAobiArIDEpIChuICogMikgaW5cbiAgICAgICAgbGV0IGFycmF5JyA9IEcuaW5pdCBuJyB0LmRlZmF1bHQgaW5cbiAgICAgICAgbGV0ICgpID0gRy5ibGl0IHQuYXJyYXkgMCBhcnJheScgMCBuIGluXG4gICAgICAgIGxldCAoKSA9IHQuYXJyYXkgPC0gYXJyYXknIGluXG4gICAgICAgIHQuY3VycmVudF9zaXplIDwtIG4nXG5cbiAgICAgIGxldCBnZXQgYSBpID1cbiAgICAgICAgaWYgbGVuZ3RoIGEgPiBpIHRoZW5cbiAgICAgICAgICBHLmdldCBhLmFycmF5IGlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGEuZGVmYXVsdCBpXG5cbiAgICAgIGxldCByZWMgc2V0IGEgaSB2ID1cbiAgICAgICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgICAgICBpZiBuID4gaSB0aGVuXG4gICAgICAgICAgRy5zZXQgYS5hcnJheSBpIHZcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gZXhwYW5kIGEgaW5cbiAgICAgICAgICBzZXQgYSBpIHZcbiAgICAgICAgKVxuXG4gICAgICBsZXQgbWFrZSA9IGNyZWF0ZVxuICAgICAgbGV0IGluaXQgbiBmID0geyBhcnJheSA9IEcuaW5pdCBuIGY7IGN1cnJlbnRfc2l6ZSA9IG47IGRlZmF1bHQgPSBmIH1cblxuICAgICAgbGV0IGFwcGVuZCBhIGIgPVxuICAgICAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgICAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgICAgICBsZXQgYyA9IGxhICsgbGIgaW5cbiAgICAgICAgaW5pdCBjIChmdW4geCAtPlxuICAgICAgICAgICAgaWYgeCA8IGxhIHRoZW5cbiAgICAgICAgICAgICAgZ2V0IGEgeFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBnZXQgYiAoeCAtIGxhKSlcblxuICAgICAgbGV0IGNvbmNhdCBsID1cbiAgICAgICAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuIHggLT4gbGVuZ3RoIHggPiAwKSBsIGluXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRHluYW1pY0FycmF5LmNvbmNhdFwiKVxuICAgICAgICB8IHQgOjogXyAtPlxuICAgICAgICAgIGxldCBlbHQgPSBnZXQgdCAwIGluXG4gICAgICAgICAgbGV0IGMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHNvbCBhIC0+IHNvbCArIGxlbmd0aCBhKSAwIGwgaW5cbiAgICAgICAgICBsZXQgbSA9IGNyZWF0ZSBjIGVsdCBpblxuICAgICAgICAgIGxldCByZWMgYXV4IGsgbCA9XG4gICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgICAgIGxldCBzID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYyBhdXgyIG9mZnNldCBrID1cbiAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPSBzIHRoZW5cbiAgICAgICAgICAgICAgICAgIGF1eCBrIHFcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIHNldCBtIGsgKGdldCB0IG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICBhdXgyIChvZmZzZXQgKyAxKSAoayArIDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhdXgyIDAga1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gYXV4IDAgbCBpblxuICAgICAgICAgIG1cblxuICAgICAgbGV0IHN1YiBhIHN0YXJ0IGxlbiA9XG4gICAgICAgIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNfYXJyYXkuc3ViXCIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbml0IGxlbiAoZnVuIHggLT4gZ2V0IGEgKHggKyBzdGFydCkpXG5cbiAgICAgIGxldCBjb3B5IGEgPVxuICAgICAgICB7XG4gICAgICAgICAgYXJyYXkgPSBHLmNvcHkgYS5hcnJheTtcbiAgICAgICAgICBjdXJyZW50X3NpemUgPSBhLmN1cnJlbnRfc2l6ZTtcbiAgICAgICAgICBkZWZhdWx0ID0gYS5kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgIGxldCBmaWxsIGEgc3RhcnQgbGVuIHggPVxuICAgICAgICBsZXQgcmVjIGF1eCBrIGkgPVxuICAgICAgICAgIGlmIGsgPCBsZW4gdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPSBzZXQgYSBpIHggaW5cbiAgICAgICAgICAgIGF1eCAoayArIDEpIChpICsgMSlcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNfYXJyYXkuZmlsbFwiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYXV4IDAgc3RhcnRcblxuICAgICAgbGV0IG9mX2xpc3QgfmRlZmF1bHQgbCA9XG4gICAgICAgIHtcbiAgICAgICAgICBjdXJyZW50X3NpemUgPSBMaXN0Lmxlbmd0aCBsO1xuICAgICAgICAgIGFycmF5ID0gRy5vZl9saXN0IH5kZWZhdWx0IGw7XG4gICAgICAgICAgZGVmYXVsdCA9IChmdW4gXyAtPiBkZWZhdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgaXRlciBmIGEgPSBHLml0ZXIgZiBhLmFycmF5XG4gICAgICBsZXQgaXRlcmkgZiBhID0gRy5pdGVyaSBmIGEuYXJyYXlcbiAgICAgIGxldCBmb2xkX2xlZnRpIGYgYiBhID0gRy5mb2xkX2xlZnRpIGYgYiBhLmFycmF5XG4gICAgICBsZXQgZm9sZF9yaWdodGkgZiBhIGIgPSBHLmZvbGRfcmlnaHRpIGYgYS5hcnJheSBiXG4gICAgICBsZXQgbWFwIGYgYSA9IGluaXQgKGxlbmd0aCBhKSAoZnVuIGkgLT4gZiAoZ2V0IGEgaSkpXG5cbiAgICAgIGxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICAgICAgICBpZlxuICAgICAgICAgIGxlbiA8IDAgfHwgb2ZzMSA8IDBcbiAgICAgICAgICB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgfHwgb2ZzMiA8IDBcbiAgICAgICAgICB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyBcIkR5bmFtaWNBcnJheS5ibGl0XCJcbiAgICAgICAgZWxzZSBpZiBvZnMxIDwgb2ZzMiB0aGVuXG4gICAgICAgICAgKCogVG9wLWRvd24gY29weSAqKVxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgICAgICAgRy5zZXQgYTIuYXJyYXkgKG9mczIgKyBpKSAoRy5nZXQgYTEuYXJyYXkgKG9mczEgKyBpKSlcbiAgICAgICAgICBkb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiBCb3R0b20tdXAgY29weSAqKVxuICAgICAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBHLnNldCBhMi5hcnJheSAob2ZzMiArIGkpIChHLmdldCBhMS5hcnJheSAob2ZzMSArIGkpKVxuICAgICAgICAgIGRvbmVcblxuICAgICAgbGV0IHByaW50ID90cmFpbGluZyBwcl9zIHByX2EgZiBhID0gRy5wcmludCA/dHJhaWxpbmcgcHJfcyBwcl9hIGYgYS5hcnJheVxuICAgIGVuZCA6XG4gICAgICBHZW5BcnJheS5HZW5BcnJheSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IFVuYXJ5IG9mICdhIGFycmF5IHwgQmluYXJ5IG9mICdhIGFycmF5IGFycmF5XG5cbmxldCBtYXhfYXJyYXlfc2l6ZTEgPSBTeXMubWF4X2FycmF5X2xlbmd0aCAoKiA1ICopXG5cbmxldCBtYXhfYXJyYXlfc2l6ZTIgPVxuICBpZiBmbG9hdF9vZl9pbnQgbWF4X2FycmF5X3NpemUxID4gc3FydCAoZmxvYXRfb2ZfaW50IG1heF9pbnQpIHRoZW5cbiAgICBtYXhfaW50XG4gIGVsc2VcbiAgICBtYXhfYXJyYXlfc2l6ZTEgKiBtYXhfYXJyYXlfc2l6ZTFcblxubGV0IGV1Y2xpZGVlbiBwIHEgPSBwIC8gcSwgcCBtb2QgcVxuXG5sZXQgY3JlYXRlIG4gYSA9XG4gIGlmIG4gPD0gbWF4X2FycmF5X3NpemUxIHRoZW5cbiAgICBVbmFyeSAoQXJyYXkubWFrZSBuIGEpXG4gIGVsc2UgaWYgbiA+IG1heF9hcnJheV9zaXplMiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJHZW5BcnJheTogYXJyYXkgdG9vIGxhcmdlXCJcbiAgZWxzZSAoXG4gICAgbGV0IG0gPVxuICAgICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gbiBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICAgIGxldCBsID0gQXJyYXkubWFrZSBtYXhfYXJyYXlfc2l6ZTEgYSBpblxuICAgICAgbGV0IG0gPVxuICAgICAgICBBcnJheS5tYWtlXG4gICAgICAgICAgKGlmIHEgPSAwIHRoZW5cbiAgICAgICAgICAgICBwXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBwICsgMSlcbiAgICAgICAgICBsXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggayA9XG4gICAgICAgIGlmIGsgPSAtMSB0aGVuXG4gICAgICAgICAgbVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtLihrKSA8LSBBcnJheS5tYWtlIG1heF9hcnJheV9zaXplMSBhO1xuICAgICAgICAgIGF1eCAoayAtIDEpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBpZiBxID0gMCB0aGVuXG4gICAgICAgIGF1eCAocCAtIDEpXG4gICAgICBlbHNlIChcbiAgICAgICAgbS4ocCkgPC0gQXJyYXkubWFrZSBxIGE7XG4gICAgICAgIGF1eCAocCAtIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBCaW5hcnkgbVxuICApXG5cbmxldCBsZW5ndGggPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkubGVuZ3RoIGFcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgcSA9IEFycmF5Lmxlbmd0aCAoQXJyYXkudW5zYWZlX2dldCBhIChwIC0gMSkpIGluXG4gICAgKChwIC0gMSkgKiBtYXhfYXJyYXlfc2l6ZTEpICsgcVxuXG5sZXQgZ2V0MiBhIHAgcSA9IEFycmF5LnVuc2FmZV9nZXQgKEFycmF5LnVuc2FmZV9nZXQgYSBwKSBxXG5cbmxldCBnZXQgYSBpID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS51bnNhZmVfZ2V0IGEgaVxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gaSBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICBnZXQyIGEgcCBxXG5cbmxldCBzZXQyIGEgcCBxIGogPSBBcnJheS51bnNhZmVfc2V0IChBcnJheS51bnNhZmVfZ2V0IGEgcCkgcSBqXG5cbmxldCBzZXQgYSBpIGogPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LnVuc2FmZV9zZXQgYSBpIGpcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIGkgbWF4X2FycmF5X3NpemUxIGluXG4gICAgc2V0MiBhIHAgcSBqXG5cbmxldCBtYWtlID0gY3JlYXRlXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHx8IG4gPiBtYXhfYXJyYXlfc2l6ZTIgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkJpZ19hcnJheS5pbml0IDogXCIgXiBzdHJpbmdfb2ZfaW50IG4pKVxuICBlbHNlIGlmIG4gPD0gbWF4X2FycmF5X3NpemUxIHRoZW5cbiAgICBVbmFyeSAoQXJyYXkuaW5pdCBuIGYpXG4gIGVsc2UgKFxuICAgIGxldCBtID1cbiAgICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIG4gbWF4X2FycmF5X3NpemUxIGluXG4gICAgICBBcnJheS5pbml0XG4gICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgIHBcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgcCArIDEpXG4gICAgICAgIChmdW4gcCcgLT5cbiAgICAgICAgICBpZiBwJyA9IHAgdGhlblxuICAgICAgICAgICAgQXJyYXkuaW5pdCBxIChmdW4geCAtPiBmICgocCAqIG1heF9hcnJheV9zaXplMSkgKyB4KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5pbml0IG1heF9hcnJheV9zaXplMSAoZnVuIHggLT4gZiAoKHAnICogbWF4X2FycmF5X3NpemUxKSArIHgpKSlcbiAgICBpblxuICAgIEJpbmFyeSBtXG4gIClcblxubGV0IGFwcGVuZCBhIGIgPVxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgYyA9IGxhICsgbGIgaW5cbiAgaW5pdCBjIChmdW4geCAtPlxuICAgICAgaWYgeCA8IGxhIHRoZW5cbiAgICAgICAgZ2V0IGEgeFxuICAgICAgZWxzZVxuICAgICAgICBnZXQgYiAoeCAtIGxhKSlcblxubGV0IGNvbmNhdCBsID1cbiAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuIHggLT4gbGVuZ3RoIHggPiAwKSBsIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFVuYXJ5IFt8fF1cbiAgfCB0IDo6IF8gLT5cbiAgICBsZXQgZWx0ID0gZ2V0IHQgMCBpblxuICAgIGxldCBjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzb2wgYSAtPiBzb2wgKyBsZW5ndGggYSkgMCBsIGluXG4gICAgbGV0IG0gPSBjcmVhdGUgYyBlbHQgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IG1cbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCBzID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgbGV0IHJlYyBhdXgyIG9mZnNldCBrID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSBzIHRoZW5cbiAgICAgICAgICAgIGF1eCBrIHFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHNldCBtIGsgKGdldCB0IG9mZnNldCk7XG4gICAgICAgICAgICBhdXgyIChvZmZzZXQgKyAxKSAoayArIDEpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBhdXgyIDAga1xuICAgIGluXG4gICAgYXV4IDAgbFxuXG5sZXQgc3ViIGEgc3RhcnQgbGVuID1cbiAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQmlnX2FycmF5LnN1YlwiKVxuICBlbHNlIGlmIHNpemUgPSAwIHRoZW5cbiAgICBVbmFyeSBbfHxdXG4gIGVsc2VcbiAgICBpbml0IGxlbiAoZnVuIHggLT4gZ2V0IGEgKHggKyBzdGFydCkpXG5cbmxldCBjb3B5ID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IFVuYXJ5IChBcnJheS5jb3B5IGEpXG4gIHwgQmluYXJ5IGInIC0+XG4gICAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggYicgaW5cbiAgICBCaW5hcnkgKEFycmF5LmluaXQgc2l6ZSAoZnVuIHggLT4gQXJyYXkuY29weSBiJy4oeCkpKVxuXG5sZXQgZmlsbCBhIHN0YXJ0IGxlbiB4ID1cbiAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQmlnX2FycmF5LmZpbGxcIilcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBhdXggayBpID1cbiAgICAgIGlmIGsgPCBsZW4gdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHNldCBhIGkgeCBpblxuICAgICAgICBhdXggKGsgKyAxKSAoaSArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBzdGFydFxuICApXG5cbmxldCBvZl9saXN0IH5kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBVbmFyeSBbfHxdXG4gIHwgdCA6OiBfIGFzIGwgLT5cbiAgICBsZXQgX2lrbm93d2hhdGltZG9pbmcgPSBkZWZhdWx0IGluXG4gICAgbGV0IHNpemUgPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgc2l6ZSB0IGluXG4gICAgbGV0IHJlYyBhdXggayA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCAoKSA9IHNldCBhIGsgdCBpblxuICAgICAgICBhdXggKGsgKyAxKSBxXG4gICAgaW5cbiAgICBhdXggMCBsXG5cbmxldCBpdGVyIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuaXRlciBmIGFcbiAgfCBCaW5hcnkgYSAtPiBBcnJheS5pdGVyIChBcnJheS5pdGVyIGYpIGFcblxubGV0IGl0ZXJpIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuaXRlcmkgZiBhXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgZyBrIGsnID0gKGsgKiBtYXhfYXJyYXlfc2l6ZTEpICsgaycgaW5cbiAgICBBcnJheS5pdGVyaSAoZnVuIGsgYSAtPiBBcnJheS5pdGVyaSAoZnVuIGsnIGEgLT4gZiAoZyBrIGsnKSBhKSBhKSBhXG5cbmxldCBnZW4gZzEgZzIgaDEgaDIgZiA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBoMSAoZzEgZiBhKVxuICB8IEJpbmFyeSBhIC0+IGgyIChnMiAoZzEgZikgYSlcblxubGV0IG1hcCBmIHggPSBnZW4gQXJyYXkubWFwIEFycmF5Lm1hcCAoZnVuIHggLT4gVW5hcnkgeCkgKGZ1biB4IC0+IEJpbmFyeSB4KSBmIHhcblxuKCpsZXQgZ2VuaSBnMSBnMiBoMSBoMiBmID0gZnVuY3Rpb25cbiAgICAgIHwgVW5hcnkgYSAtPiBoMSAoZzEgZiBhKVxuICAgICAgfCBCaW5hcnkgYiAtPlxuICBoMlxuICAgIChnMlxuICAgICAgIChmdW4gcCBhIC0+XG4gICAgICAgIGxldCBuID0gcCAqIG1heF9hcnJheV9zaXplMSBpblxuICAgICAgICBnMVxuICAgKGZ1biBxIGEgLT4gZiAocSArIG4pIGEpXG4gICBhKVxuICAgICAgIGIpXG5cbiAgICBsZXQgbWFwaSA9XG4gICAgICBnZW5pIEFycmF5Lm1hcGkgQXJyYXkubWFwaSAoZnVuIHggLT4gVW5hcnkgeCkgKGZ1biB4IC0+IEJpbmFyeSB4KSopXG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZlxuICAgIGxlbiA8IDAgfHwgb2ZzMSA8IDBcbiAgICB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgfHwgb2ZzMiA8IDBcbiAgICB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIGlmIG9mczEgPCBvZnMyIHRoZW5cbiAgICAoKiBUb3AtZG93biBjb3B5ICopXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICBzZXQgYTIgKG9mczIgKyBpKSAoZ2V0IGExIChvZnMxICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgKCogQm90dG9tLXVwIGNvcHkgKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgc2V0IGEyIChvZnMyICsgaSkgKGdldCBhMSAob2ZzMSArIGkpKVxuICAgIGRvbmVcblxubGV0IGZvbGRfbGVmdGkgZiBpbml0IGEgPVxuICBsZXQgeSA9IHJlZiBpbml0IGluXG4gIGxldCAoKSA9IGl0ZXJpIChmdW4gaSBlIC0+IHkgOj0gZiBpICF5IGUpIGEgaW5cbiAgIXlcblxubGV0IGZvbGRfcmlnaHQgZiBhIGluaXQgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LmZvbGRfcmlnaHQgZiBhIGluaXRcbiAgfCBCaW5hcnkgYSAtPiBBcnJheS5mb2xkX3JpZ2h0IChBcnJheS5mb2xkX3JpZ2h0IGYpIGEgaW5pdFxuXG5sZXQgZm9sZF9yaWdodGkgZiBhIGluaXQgPVxuICBsZXQgZyBrIChpLCBjdXJyZW50KSA9IGkgLSAxLCBmIGkgayBjdXJyZW50IGluXG4gIHNuZCAoZm9sZF9yaWdodCBnIGEgKGxlbmd0aCBhIC0gMSwgaW5pdCkpXG5cbmxldCBwcmludCA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGEgPVxuICBsZXQgcmVjIGF1eCBpIGYgPVxuICAgIGlmIGkgPCBsZW5ndGggYSB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByX2VsIGkgZiAoZ2V0IGEgaSkgaW5cbiAgICAgIGlmIGkgPCBsZW5ndGggYSAtIDEgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHByX3NlcCBmIGluXG4gICAgICAgIGF1eCAoc3VjYyBpKSBmXG4gICAgICApIGVsc2UgaWYgaSA+IDAgdGhlblxuICAgICAgICB0cmFpbGluZyBmXG4gICAgKVxuICBpblxuICBhdXggMCBmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHN0b3AgPSBTdG9wIG9mICdiIHwgU3VjY2VzcyBvZiAnYVxuXG5sZXQgc3VjY2VzcyBhID0gU3VjY2VzcyBhXG5sZXQgc3RvcCBhID0gU3RvcCBhXG5cbmxldCBzdWNjZXNzX29yX3N0b3AgZiBnIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTdWNjZXNzIGEgLT4gZiBhXG4gIHwgU3RvcCBhIC0+IGcgYVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG5lbmRcblxudHlwZSAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EpIHdpdGhfbG9nX3dyYXAgPVxuICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uIC0+IGV4biAtPiAnZXJyb3IpIC0+XG4gICdwYXJhbWV0ZXJzIC0+XG4gICdlcnJvciAtPlxuICAnYVxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCBpc19zaW5nbGV0b24gOiB0IC0+IGJvb2xcbiAgdmFsIGFkZCA6IGVsdCAtPiB0IC0+IHRcblxuICB2YWwgYWRkX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlIDogZWx0IC0+IHQgLT4gdFxuXG4gIHZhbCBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiBib29sICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiBib29sICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBzcGxpdCA6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuICB2YWwgZGlzam9pbnRfdW5pb24gOiB0IC0+IHQgLT4gdCBvcHRpb25cbiAgdmFsIGludGVyIDogdCAtPiB0IC0+IHRcblxuICB2YWwgbWludXMgOiB0IC0+IHQgLT4gdFxuICAoKiogW21pbnVzIGEgYl0gY29udGFpbnMgZWxlbWVudHMgb2YgW2FdIHRoYXQgYXJlIG5vdCBpbiBbYl0gKilcblxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiB0XG4gICgqKiBbZGlmZiBhIGJdID0gW21pbnVzICh1bmlvbiBhIGIpIChpbnRlciBhIGIpXSAqKVxuXG4gIHZhbCBtaW51c193aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCB1bmlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBkaXNqb2ludF91bmlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBpbnRlcl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBkaWZmX3dpdGhfbG9ncyA6ICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuICAoKiB2YWwgc3BsaXRfd2l0aF9sb2dzOlxuICAgICAgICAoJ3BhcmFtZXRlcnMsJ2Vycm9yLGVsdCAtPiB0IC0+ICdlcnJvciAqICggdCAqIGJvb2wgKiB0KSkgd2l0aF9sb2dfd3JhcCAqKVxuXG4gIHZhbCBzaXplIDogdCAtPiBpbnRcbiAgdmFsIG1lbSA6IGVsdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuXG4gIHZhbCBmaWx0ZXJfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgKGVsdCAtPiBib29sKSAtPiB0IC0+ICdlcnJvciAqIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBwYXJ0aXRpb24gOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcblxuICB2YWwgcGFydGl0aW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIChlbHQgLT4gYm9vbCkgLT4gdCAtPiAnZXJyb3IgKiB0ICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3Vic2V0IDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGZvbGRfaW52IDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJhbmRvbSA6IFJhbmRvbS5TdGF0ZS50IC0+IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHNldFxuICB0eXBlICsnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIHNpemUgOiAnYSB0IC0+IGludFxuICB2YWwgcm9vdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIG1heF9rZXkgOiAnYSB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIGFkZCA6IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHJlbW92ZSA6IGVsdCAtPiAnYSB0IC0+ICdhIHRcblxuICB2YWwgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgZWx0IC0+ICdhIC0+ICdhIHQgLT4gJ2Vycm9yICogYm9vbCAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogYm9vbCAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcG9wIDogZWx0IC0+ICdhIHQgLT4gJ2Egb3B0aW9uICogJ2EgdFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRfb3B0aW9uIDogZWx0IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2RlZmF1bHQgOiAnYSAtPiBlbHQgLT4gJ2EgdCAtPiAnYVxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSBvcHRpb24pIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIC0+IGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhKSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1lbSA6IGVsdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGRpZmYgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHVuaW9uIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVwZGF0ZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBkaWZmX3ByZWQgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG5cbiAgdmFsIGFkZF93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGpvaW5fd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgJ2EgdCAtPiBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHNwbGl0X3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICgnYSB0ICogJ2Egb3B0aW9uICogJ2EgdCkgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgdXBkYXRlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1hcDJfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiAnYSAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2IgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdiIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2Vycm9yICogJ2MgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBtYXAyel93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdhIC0+ICdlcnJvciAqICdhKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2Vycm9yICogJ2EgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb2xkMnpfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnYyAtPlxuICAgICAgJ2Vycm9yICogJ2MgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZDJfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2MgLT5cbiAgICAgICdlcnJvciAqICdjIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICdhIHQgLT5cbiAgICAgICdiIHQgLT5cbiAgICAgICdjIC0+XG4gICAgICAnZXJyb3IgKiAnYyApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2Vycm9yKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2Vycm9yIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfcHJlZF93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1lcmdlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHVuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKGVsdCAtPiAnYSAtPiAnZXJyb3IgKiAnYiAtPiAnZXJyb3IgKiAnYikgLT5cbiAgICAgIHNldCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgLT5cbiAgICAgICdlcnJvciAqICdiIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoZWx0IC0+ICdhIC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgKGVsdCAtPiAnZXJyb3IgKiAnYiAtPiAnZXJyb3IgKiAnYikgLT5cbiAgICAgIHNldCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgLT5cbiAgICAgICdlcnJvciAqICdiIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGl0ZXIgOiAoZWx0IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcblxuICB2YWwgZm9sZF93aXRoX2ludGVycnVwdGlvbiA6XG4gICAgKGVsdCAtPiAnYSAtPiAnYiAtPiAoJ2IsICdjKSBTdG9wLnN0b3ApIC0+ICdhIHQgLT4gJ2IgLT4gKCdiLCAnYykgU3RvcC5zdG9wXG5cbiAgdmFsIG1vbmFkaWNfZm9sZDIgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICgncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2MpIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2MgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2MpIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnY1xuXG4gIHZhbCBtb25hZGljX2ZvbGQyX3NwYXJzZSA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjXG5cbiAgdmFsIG1vbmFkaWNfaXRlcjJfc3BhcnNlIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG5cbiAgdmFsIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IpIC0+XG4gICAgc2V0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiXG5cbiAgdmFsIG1hcGkgOiAoZWx0IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBtYXAyIDogKCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBmaWx0ZXJfb25lIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IChlbHQgKiAnYSkgb3B0aW9uXG4gIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGJpbmRpbmdzIDogJ2EgdCAtPiAoZWx0ICogJ2EpIGxpc3RcblxuICB2YWwgcHJpbnQgOlxuICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgdCAtPiB1bml0XG5cbiAgdmFsIG9mX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgP2Vycm9yX21zZzpzdHJpbmcgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gZWx0KSAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiAndmFsdWUpIC0+XG4gICAgWW9qc29uLkJhc2ljLnQgLT5cbiAgICAndmFsdWUgdFxuXG4gIHZhbCB0b19qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgIChlbHQgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgKCd2YWx1ZSAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAndmFsdWUgdCAtPlxuICAgIFlvanNvbi5CYXNpYy50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGVsdFxuXG4gIG1vZHVsZSBTZXQgOiBTZXQgd2l0aCB0eXBlIGVsdCA9IGVsdFxuICBtb2R1bGUgTWFwIDogTWFwIHdpdGggdHlwZSBlbHQgPSBlbHQgYW5kIHR5cGUgc2V0ID0gU2V0LnRcbmVuZFxuXG5leGNlcHRpb24gRGVhZENvZGVJc05vdERlYWQgb2Ygc3RyaW5nXG5cbm1vZHVsZSBNYWtlIChPcmQgOiBPcmRlcmVkVHlwZSkgOiBTIHdpdGggdHlwZSBlbHQgPSBPcmQudCA9IHN0cnVjdFxuICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgbW9kdWxlIFNldCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcblxuICAgIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEVtcHR5IHwgTm9kZSBvZiB0ICogZWx0ICogdCAqIGludCAqIGludFxuXG4gICAgICB2YWwgZW1wdHkgOiB0XG4gICAgICB2YWwgaGVpZ2h0IDogdCAtPiBpbnRcbiAgICAgIHZhbCBzaXplIDogdCAtPiBpbnRcbiAgICAgIHZhbCBub2RlIDogdCAtPiBlbHQgLT4gdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2YgdCAqIGVsdCAqIHQgKiBpbnQgKiBpbnRcblxuICAgICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcblxuICAgICAgbGV0IHNpemUgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG5cbiAgICAgIGxldCBub2RlIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgICBsZXQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAgICAgTm9kZVxuICAgICAgICAgICggbGVmdCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAoaWYgaGwgPiBociB0aGVuXG4gICAgICAgICAgICAgICBobFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGhyKVxuICAgICAgICAgICAgKyAxLFxuICAgICAgICAgICAgc2l6ZSBsZWZ0ICsgc2l6ZSByaWdodCArIDEgKVxuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gUHJpdmF0ZS50XG5cbiAgICBsZXQgZW1wdHkgPSBQcml2YXRlLmVtcHR5XG4gICAgbGV0IGhlaWdodCA9IFByaXZhdGUuaGVpZ2h0XG4gICAgbGV0IHNpemUgPSBQcml2YXRlLnNpemVcbiAgICBsZXQgbm9kZSA9IFByaXZhdGUubm9kZVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIC0+IGZhbHNlXG5cbiAgICBsZXQgc2luZ2xldG9uIHZhbHVlID0gbm9kZSBlbXB0eSB2YWx1ZSBlbXB0eVxuXG4gICAgbGV0IGlzX3NpbmdsZXRvbiBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKHNldDEsIF8sIHNldDIsIF8sIF8pIC0+IGlzX2VtcHR5IHNldDEgJiYgaXNfZW1wdHkgc2V0MlxuXG4gICAgbGV0IGJhbGFuY2UgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBsZXQgaGVpZ2h0X2xlZnQgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgbGV0IGhlaWdodF9yaWdodCA9IGhlaWdodCByaWdodCBpblxuICAgICAgaWYgaGVpZ2h0X2xlZnQgPiBoZWlnaHRfcmlnaHQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDIyMlwiKVxuICAgICAgICAoKiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCBsZWZ0bGVmdCA+PSBoZWlnaHQgbGVmdHJpZ2h0IHRoZW5cbiAgICAgICAgICAgIG5vZGUgbGVmdGxlZnQgbGVmdHZhbHVlIChub2RlIGxlZnRyaWdodCB2YWx1ZSByaWdodClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGxlZnRyaWdodCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjI5XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCBsZWZ0bGVmdCA8IGhlaWdodCBsZWZ0cmlnaHQgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0cmlnaHRsZWZ0LCBsZWZ0cmlnaHR2YWx1ZSwgbGVmdHJpZ2h0cmlnaHQsIF8sIF8pXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgICAgICAobm9kZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgbGVmdHJpZ2h0bGVmdClcbiAgICAgICAgICAgICAgICBsZWZ0cmlnaHR2YWx1ZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnRyaWdodHJpZ2h0IHZhbHVlIHJpZ2h0KVxuICAgICAgICAgIClcbiAgICAgICkgZWxzZSBpZiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDIzOFwiKVxuICAgICAgICAoKiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAocmlnaHRsZWZ0LCByaWdodHZhbHVlLCByaWdodHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCByaWdodHJpZ2h0ID49IGhlaWdodCByaWdodGxlZnQgdGhlblxuICAgICAgICAgICAgbm9kZSAobm9kZSBsZWZ0IHZhbHVlIHJpZ2h0bGVmdCkgcmlnaHR2YWx1ZSByaWdodHJpZ2h0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByaWdodGxlZnQgd2l0aFxuICAgICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDI0NVwiKVxuICAgICAgICAgICAgKCogMCA8PSBoZWlnaHQgcmlnaHRyaWdodCA8IGhlaWdodCByaWdodGxlZnQgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnRsZWZ0LCByaWdodGxlZnR2YWx1ZSwgcmlnaHRsZWZ0cmlnaHQsIF8sIF8pXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgICAgICAobm9kZSBsZWZ0IHZhbHVlIHJpZ2h0bGVmdGxlZnQpXG4gICAgICAgICAgICAgICAgcmlnaHRsZWZ0dmFsdWVcbiAgICAgICAgICAgICAgICAobm9kZSByaWdodGxlZnRyaWdodCByaWdodHZhbHVlIHJpZ2h0cmlnaHQpXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgbGV0IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIHRyeSBlcnJvciwgYmFsYW5jZSBsZWZ0IHZhbHVlIHJpZ2h0XG4gICAgICB3aXRoIERlYWRDb2RlSXNOb3REZWFkIGxvYyAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSAobG9jIF4gXCIgU2V0IGludmFyaWFudCBpcyBicm9rZW4sIGtlZXAgb24gd2l0aCB1bmJhbGFuY2VkIHNldFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuU0VULmJhbGFuY2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgKCoqIEJld2FyZSBzb21lIGNvZGUgcmVsaWVzIG9uIHRoZSBpbnZhcmlhbnQgW2FkZCB4IHMgPT0gc10gaWZmIFttZW0geCBzXSAqKVxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgdFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBvID0gYWRkIHggbCBpblxuICAgICAgICAgIGlmIG8gPT0gbCB0aGVuXG4gICAgICAgICAgICB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBvIHYgclxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBvID0gYWRkIHggciBpblxuICAgICAgICAgIGlmIG8gPT0gciB0aGVuXG4gICAgICAgICAgICB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsIHYgb1xuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbCBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgdHJ1ZSwgc2luZ2xldG9uIG5ld192YWxcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZV9zZXQsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIG5ld192YWwgdmFsdWVfc2V0IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZmFsc2UsIHNldFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWwgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgKVxuXG4gICAgbGV0IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBzZXQgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChcIlNldE1hcCBsaW5lIDMwMFwiIF4gXCIgYW4gYWxyZWFkeSBlbHQgaGFzIGJlZW4gYWRkZWQgdG8gYSBzZXRcIikpXG4gICAgICAgICAgICAoRmFpbHVyZSBcIlNldF9hbmRfTWFwLlNFVC5hZGRcIilcbiAgICAgIGluXG4gICAgICBlcnJvciwgc2V0XG5cbiAgICBsZXQgYWRkX2V2ZW5faWZfaXRfZXhpc3RzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsdWUgc2V0ID1cbiAgICAgIGxldCBlcnJvciwgXywgc2V0ID1cbiAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsdWUgc2V0XG4gICAgICBpblxuICAgICAgZXJyb3IsIHNldFxuXG4gICAgbGV0IHJlYyBqb2luIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGFkZCB2YWx1ZSByaWdodFxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGFkZCB2YWx1ZSBsZWZ0XG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIGxlZnRoZWlnaHQsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAocmlnaHRsZWZ0LCByaWdodHZhbHVlLCByaWdodHJpZ2h0LCByaWdodGhlaWdodCwgXykgKSAtPlxuICAgICAgICBpZiBsZWZ0aGVpZ2h0ID4gcmlnaHRoZWlnaHQgKyAyIHRoZW4gKFxuICAgICAgICAgIGxldCByaWdodCcgPSBqb2luIGxlZnRyaWdodCB2YWx1ZSByaWdodCBpblxuICAgICAgICAgIGJhbGFuY2UgbGVmdGxlZnQgbGVmdHZhbHVlIHJpZ2h0J1xuICAgICAgICApIGVsc2UgaWYgcmlnaHRoZWlnaHQgPiBsZWZ0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdCcgPSBqb2luIGxlZnQgdmFsdWUgcmlnaHRsZWZ0IGluXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0JyByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgcmVjIHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gdmFsdWUsIHJpZ2h0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluLCBsZWZ0JyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnRsZWZ0IGxlZnR2YWx1ZSBsZWZ0cmlnaHQgaW5cbiAgICAgICAgbWluLCBiYWxhbmNlIGxlZnQnIHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibWluX2VsdF93aXRoX2xvZ3MsIGxpbmUgMzAzXCIpXG4gICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCB2LCBfLCBfLCBfKSAtPiBlcnJvciwgU29tZSB2XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgXywgXywgXywgXykgLT5cbiAgICAgICAgbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSBcInJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncywgbGluZSAzMTFcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIF8sIHJpZ2h0LCBfLCBfKSAtPiBlcnJvciwgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgIHJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdFxuICAgICAgICBpblxuICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUgcmlnaHRcblxuICAgIGxldCBtZXJnZSBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluMiwgc2V0MicgPSBzYWZlX2V4dHJhY3RfbWluX2VsdCBsZWZ0MiB2YWx1ZTIgcmlnaHQyIGluXG4gICAgICAgIGJhbGFuY2Ugc2V0MSBtaW4yIHNldDInXG5cbiAgICBsZXQgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0MiA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZWx0X29wdCA9IG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyIGluXG4gICAgICAgIChtYXRjaCBlbHRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibWVyZ2Vfd2l0aF9sb2dzLGxpbmUgMzM5XCIpXG4gICAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHNldDFcbiAgICAgICAgfCBTb21lIGVsdCAtPiBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBlbHQgbGVmdDIpXG5cbiAgICBsZXQgcmVjIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSByaWdodFxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnRcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnRsZWZ0LCBsZWZ0dmFsdWUsIGxlZnRyaWdodCwgbGVmdGhlaWdodCwgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIHJpZ2h0aGVpZ2h0LCBfKSApIC0+XG4gICAgICAgIGlmIGxlZnRoZWlnaHQgPiByaWdodGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRyaWdodCB2YWx1ZSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRsZWZ0IGxlZnR2YWx1ZSByaWdodCdcbiAgICAgICAgKSBlbHNlIGlmIHJpZ2h0aGVpZ2h0ID4gbGVmdGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCB2YWx1ZSByaWdodGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgbGV0IGNvbmNhdCBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluMiwgc2V0MicgPSBzYWZlX2V4dHJhY3RfbWluX2VsdCBsZWZ0MiB2YWx1ZTIgcmlnaHQyIGluXG4gICAgICAgIGpvaW4gc2V0MSBtaW4yIHNldDInXG5cbiAgICBsZXQgY29uY2F0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgbGVmdDIgPVxuICAgICAgICAgIHJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGVsdF9vcHQgPSBtaW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MiBpblxuICAgICAgICAobWF0Y2ggZWx0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcImNvbmNhdF93aXRoX2xvZ3MsbGluZSAzOTBcIilcbiAgICAgICAgICAgICAgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgc2V0MVxuICAgICAgICB8IFNvbWUgZWx0IC0+IGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIGVsdCBsZWZ0MilcblxuICAgIGxldCByZWMgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzcGxpdF92YWwgc2V0ID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIChlbXB0eSwgZmFsc2UsIGVtcHR5KVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHNldF92YWwsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNwbGl0X3ZhbCBzZXRfdmFsIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgKGxlZnQsIHRydWUsIHJpZ2h0KVxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnRsZWZ0LCBib29sLCByaWdodGxlZnQpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc3BsaXRfdmFsIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHRyaWdodCA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHRsZWZ0IHNldF92YWwgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdGxlZnQsIGJvb2wsIHJpZ2h0cmlnaHQpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdHJpZ2h0LCBib29sLCByaWdodHJpZ2h0KSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNwbGl0X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0bGVmdCA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBzZXRfdmFsIGxlZnRyaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodClcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IGFzIHNldCAtPiBzZXRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZV9zZXQsIHJpZ2h0LCBfLCBfKSBhcyBzZXQgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2YWx1ZSB2YWx1ZV9zZXQgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIG1lcmdlIGxlZnQgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdCcgPSByZW1vdmUgdmFsdWUgbGVmdCBpblxuICAgICAgICAgIGlmIGxlZnQgPT0gbGVmdCcgdGhlblxuICAgICAgICAgICAgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgcmlnaHQnID0gcmVtb3ZlIHZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgaWYgcmlnaHQgPT0gcmlnaHQnIHRoZW5cbiAgICAgICAgICAgIHNldFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJhbGFuY2UgbGVmdCB2YWx1ZV9zZXQgcmlnaHQnXG4gICAgICAgIClcblxuICAgIGxldCByZWMgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IGFzIHNldCAtPiBlcnJvciwgZmFsc2UsIHNldFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIGFzIHNldCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHZhbHVlIHZhbHVlX3NldCBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9IG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCByaWdodCBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBzZXRcbiAgICAgICAgKSBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsZWZ0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZWZ0ID09IGxlZnQnIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA0NTRcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHJpZ2h0ID09IHJpZ2h0JyB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiU2V0TWFwIGxpbmUgNDY3XCIpXG4gICAgICAgICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVtb3ZlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgc2V0ID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgc2V0ID1cbiAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgZXJyb3IsIHNldFxuICAgICAgZWxzZVxuICAgICAgICAoIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgKFwiU2V0TWFwIGxpbmUgNDgxXCJcbiAgICAgICAgICAgICAgXiBcIkF0dGVtcHQgdG8gcmVtb3ZlIGFuIGVsdCB0aGF0IGRvZXMgbm90IGV4aXN0XCIpKVxuICAgICAgICAgICAgTm90X2ZvdW5kLFxuICAgICAgICAgIHNldCApXG5cbiAgICBsZXQgcmVjIHNwbGl0IHNwbGl0X3ZhbHVlIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBmYWxzZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBzZXRfdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNwbGl0X3ZhbHVlIHNldF92YWx1ZSBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgbGVmdCwgdHJ1ZSwgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdGxlZnQsIGJvb2wsIHJpZ2h0bGVmdCA9IHNwbGl0IHNwbGl0X3ZhbHVlIGxlZnQgaW5cbiAgICAgICAgICBsZXQgcmlnaHRyaWdodCA9IGpvaW4gcmlnaHRsZWZ0IHNldF92YWx1ZSByaWdodCBpblxuICAgICAgICAgIGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnRyaWdodCwgYm9vbCwgcmlnaHRyaWdodCA9IHNwbGl0IHNwbGl0X3ZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgbGV0IGxlZnRsZWZ0ID0gam9pbiBsZWZ0IHNldF92YWx1ZSBsZWZ0cmlnaHQgaW5cbiAgICAgICAgICBsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodFxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlblxuICAgICAgICAgICAgYWRkIHZhbHVlMiBzZXQxXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGVmdDIsIF8sIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgICBsZXQgbGVmdCcgPSB1bmlvbiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICAgICAgbGV0IHJpZ2h0JyA9IHVuaW9uIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgICAgIGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuXG4gICAgICAgICAgYWRkIHZhbHVlMSBzZXQyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsZWZ0MSwgXywgcmlnaHQxID0gc3BsaXQgdmFsdWUyIHNldDEgaW5cbiAgICAgICAgICBsZXQgbGVmdCcgPSB1bmlvbiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICAgIGxldCByaWdodCcgPSB1bmlvbiByaWdodDEgcmlnaHQyIGluXG4gICAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTIgcmlnaHQnXG4gICAgICAgIClcblxuICAgIGxldCByZWMgZGlzam9pbnRfdW5pb24gc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IFNvbWUgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IFNvbWUgc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlbiAoXG4gICAgICAgICAgICBsZXQgb3V0ID0gYWRkIHZhbHVlMiBzZXQxIGluXG4gICAgICAgICAgICBpZiBvdXQgPT0gc2V0MSB0aGVuXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGxlZnQyLCBfLCByaWdodDIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICAgICAgbWF0Y2ggZGlzam9pbnRfdW5pb24gbGVmdDEgbGVmdDIsIGRpc2pvaW50X3VuaW9uIHJpZ2h0MSByaWdodDIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGxlZnQnLCBTb21lIHJpZ2h0JyAtPiBTb21lIChqb2luIGxlZnQnIHZhbHVlMSByaWdodCcpXG4gICAgICAgICAgICB8IF8sIF8gLT4gTm9uZVxuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuIChcbiAgICAgICAgICBsZXQgb3V0ID0gYWRkIHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgaWYgc2V0MiA9PSBvdXQgdGhlblxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNvbWUgb3V0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBfLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgc2V0MSBpblxuICAgICAgICAgIG1hdGNoIGRpc2pvaW50X3VuaW9uIGxlZnQxIGxlZnQyLCBkaXNqb2ludF91bmlvbiByaWdodDEgcmlnaHQyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgbGVmdCcsIFNvbWUgcmlnaHQnIC0+IFNvbWUgKGpvaW4gbGVmdCcgdmFsdWUyIHJpZ2h0JylcbiAgICAgICAgICB8IF8sIF8gLT4gTm9uZVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlblxuICAgICAgICAgICAgYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIHNldDFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBfLCByaWdodDIpID1cbiAgICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMSByaWdodCdcbiAgICAgICAgICApXG4gICAgICAgIGVsc2UgaWYgaGVpZ2h0MSA9IDEgdGhlblxuICAgICAgICAgIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQxLCBfLCByaWdodDEpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIHNldDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMiByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHVuaW9uX3dpdGhfbG9ncyB3IHAgZSBzIHMnID0gdW5pb25fZ2VuIGFkZF9ldmVuX2lmX2l0X2V4aXN0cyB3IHAgZSBzIHMnXG4gICAgbGV0IGRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyB3IHAgZSBzIHMnID0gdW5pb25fZ2VuIGFkZF93aXRoX2xvZ3MgdyBwIGUgcyBzJ1xuXG4gICAgbGV0IHN1dHVyZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgbGVmdCcgPSBmIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgcmlnaHQnID0gZiByaWdodDEgcmlnaHQyIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGNvbmNhdCBsZWZ0JyByaWdodCdcblxuICAgIGxldCBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIChsZWZ0MiwgYm9vbCwgcmlnaHQyKSBmID1cbiAgICAgIGxldCBsZWZ0JyA9IGYgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCByaWdodCcgPSBmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBjb25jYXQgbGVmdCcgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBpbnRlciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgdHJpcGxlMiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgIHN1dHVyZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSB0cmlwbGUyIGludGVyXG5cbiAgICBsZXQgc3V0dXJlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgZWxzZVxuICAgICAgICBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodCdcblxuICAgIGxldCBzdXR1cmVfbm90X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMSByaWdodCdcblxuICAgIGxldCByZWMgaW50ZXJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IG1oJywgdHJpcGxlMiA9IHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgbWgnIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTJcbiAgICAgICAgICBpbnRlcl93aXRoX2xvZ3NcblxuICAgIGxldCByZWMgZGlmZiBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCB0cmlwbGUyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlX25vdCAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSB0cmlwbGUyIGRpZmZcblxuICAgIGxldCByZWMgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0cmlwbGUyID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAgIHRyaXBsZTIgZGlmZl93aXRoX2xvZ3NcblxuICAgIGxldCByZWMgbWludXMgc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVtcHR5XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IHRyaXBsZTIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgbWludXNcblxuICAgIGxldCByZWMgbWludXNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIGVtcHR5XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgdHJpcGxlMiA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MlxuICAgICAgICBpblxuICAgICAgICBzdXR1cmVfbm90X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgICB0cmlwbGUyIG1pbnVzX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBtZW0gc2VhcmNoZWRfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgc2V0X3ZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSBzZWFyY2hlZF92YWx1ZSBzZXRfdmFsdWUgaW5cbiAgICAgICAgYyA9PSAwXG4gICAgICAgIHx8IG1lbSBzZWFyY2hlZF92YWx1ZVxuICAgICAgICAgICAgIChpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmlnaHQpXG5cbiAgICBsZXQgZmlsdGVyIHAgc2V0ID1cbiAgICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBmaWx0XG4gICAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkIHZhbHVlIGFjY3VcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgICAgbGVmdClcbiAgICAgICAgICAgIHJpZ2h0XG4gICAgICBpblxuICAgICAgZmlsdCBlbXB0eSBzZXRcblxuICAgIGxldCBmaWx0ZXJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwIHNldCA9XG4gICAgICBsZXQgcmVjIGZpbHQgYWNjdSBzZXQgPVxuICAgICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGFjY3UgaW5cbiAgICAgICAgICBmaWx0XG4gICAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbGlzdFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBmaWx0IChlcnJvciwgZW1wdHkpIHNldFxuXG4gICAgbGV0IHBhcnRpdGlvbiBwIHNldCA9XG4gICAgICBsZXQgcmVjIHBhcnQgKCh0LCBmKSBhcyBhY2N1KSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgcGFydFxuICAgICAgICAgICAgKHBhcnRcbiAgICAgICAgICAgICAgIChpZiBwIHZhbHVlIHRoZW5cbiAgICAgICAgICAgICAgICAgIGFkZCB2YWx1ZSB0LCBmXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgdCwgYWRkIHZhbHVlIGYpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBwYXJ0IChlbXB0eSwgZW1wdHkpIHNldFxuXG4gICAgbGV0IHBhcnRpdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHAgc2V0ID1cbiAgICAgIGxldCByZWMgcGFydCAoKHJoLCB0LCBmKSBhcyBhY2N1KSBzZXQgPVxuICAgICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIHBhcnRcbiAgICAgICAgICAgIChwYXJ0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgcmggdmFsdWUgdCBpblxuICAgICAgICAgICAgICAgICAgYSwgYiwgZlxuICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYyA9IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIHJoIHZhbHVlIGYgaW5cbiAgICAgICAgICAgICAgICAgIGEsIHQsIGNcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgbGVmdClcbiAgICAgICAgICAgIHJpZ2h0XG4gICAgICBpblxuICAgICAgcGFydCAoZXJyb3IsIGVtcHR5LCBlbXB0eSkgc2V0XG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIGVudW0gPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVudW1cbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGNvbnNfZW51bSAoTW9yZSAodmFsdWUsIHJpZ2h0LCBlbnVtKSkgbGVmdFxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgfCBNb3JlICh2MSwgcjEsIGUxKSwgTW9yZSAodjIsIHIyLCBlMikgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgICAgIGNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gZTEgcjEpIChjb25zX2VudW0gZTIgcjIpXG5cbiAgICBsZXQgY29tcGFyZSBzZXQxIHNldDIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBFbmQgc2V0MSkgKGNvbnNfZW51bSBFbmQgc2V0MilcblxuICAgIGxldCBlcXVhbCBzZXQxIHNldDIgPSBjb21wYXJlIHNldDEgc2V0MiA9PSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSApIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdmFsdWUxIHZhbHVlMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgc3Vic2V0IGxlZnQxIGxlZnQyICYmIHN1YnNldCByaWdodDEgcmlnaHQyXG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgIHN1YnNldCAobm9kZSBsZWZ0MSB2YWx1ZTEgZW1wdHkpIGxlZnQyICYmIHN1YnNldCByaWdodDEgc2V0MlxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3Vic2V0IChub2RlIGVtcHR5IHZhbHVlMSByaWdodDEpIHJpZ2h0MiAmJiBzdWJzZXQgbGVmdDEgc2V0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgKCkgPSBpdGVyIGYgbGVmdCBpblxuICAgICAgICBsZXQgKCkgPSBmIHZhbHVlIGluXG4gICAgICAgIGl0ZXIgZiByaWdodFxuXG4gICAgbGV0IHJlYyBmb2xkIGYgc2V0IGFjY3UgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBmb2xkIGYgcmlnaHQgKGYgdmFsdWUgKGZvbGQgZiBsZWZ0IGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb2xkX2ludiBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9pbnYgZiBsIChmIHYgKGZvbGRfaW52IGYgciBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBwIHZhbHVlICYmIGZvcl9hbGwgcCBsZWZ0ICYmIGZvcl9hbGwgcCByaWdodFxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIHAgdmFsdWUgfHwgZXhpc3RzIHAgbGVmdCB8fCBleGlzdHMgcCByaWdodFxuXG4gICAgbGV0IGVsZW1lbnRzIHNldCA9XG4gICAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBlbGVtZW50c19hdXggKHZhbHVlIDo6IGVsZW1lbnRzX2F1eCBhY2N1IHJpZ2h0KSBsZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNldFxuXG4gICAgbGV0IHJlYyBhdXhfcHJpbnQgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gKClcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1cIiBPcmQucHJpbnQga2V5XG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCByaWdodCwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXSxAICVhXCIgT3JkLnByaW50IGtleSBhdXhfcHJpbnQgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWFAXVwiIGF1eF9wcmludCBsZWZ0IE9yZC5wcmludCBrZXlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhQF0sQCAlYVwiIGF1eF9wcmludCBsZWZ0IE9yZC5wcmludCBrZXlcbiAgICAgICAgICBhdXhfcHJpbnQgcmlnaHRcblxuICAgIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDg4XFx4ODVcIlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyBhcyBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAW3slYX1AXVwiIGF1eF9wcmludCBtXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxlZnRcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIHYsIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIF8sIHJpZ2h0LCBfLCBfKSAtPiBtYXhfZWx0IHJpZ2h0XG5cbiAgICBsZXQgY2hvb3NlID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgdiwgXywgXywgXykgLT4gU29tZSB2XG5cbiAgICBsZXQgcmVjIGZpbmRfYWNjIGFpbV9hY2MgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCBrZXksIHIsIF8sIGFjYykgLT5cbiAgICAgICAgaWYgYWltX2FjYyA+PSBhY2MgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGFjY19sID0gc2l6ZSBsIGluXG4gICAgICAgICAgbGV0IGFjY19yID0gc2l6ZSByIGluXG4gICAgICAgICAgaWYgYWNjX2wgPiBhaW1fYWNjIHRoZW5cbiAgICAgICAgICAgIGZpbmRfYWNjIGFpbV9hY2MgbFxuICAgICAgICAgIGVsc2UgaWYgYWNjX3IgKyBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICAgICAgZmluZF9hY2MgKGFpbV9hY2MgLSBhY2NfbCkgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNvbWUga2V5XG4gICAgICAgIClcblxuICAgICgqIGxldCByZWMgZmluZF9hY2MgayBtID1cbiAgICAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCBrZXksIHIsIF8sIF8pIC0+XG4gICAgICAgICAgICBsZXQgcyA9IHNpemUgbCBpblxuICAgICAgICAgICAgaWYgayA8IHMgdGhlbiBmaW5kX2FjYyBrIGxcbiAgICAgICAgICAgICAgZWxzZSBpZiBrID0gcyB0aGVuIFNvbWUga2V5XG4gICAgICAgICAgICAgIGVsc2UgZmluZF9hY2MgKGsgLSBzIC0gMSkgciAqKVxuXG4gICAgbGV0IHJhbmRvbSBycyBtID1cbiAgICAgIGxldCBzID0gc2l6ZSBtIGluXG4gICAgICBpZiBzID0gMCB0aGVuXG4gICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgZmluZF9hY2MgKFJhbmRvbS5TdGF0ZS5pbnQgcnMgKHNpemUgbSkpIG1cblxuICAgICgqIGxldCBhZGQgPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gYWRkX3dpdGhfbG9nc1xuICAgICAgIGxldCBzcGxpdCA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBzcGxpdF93aXRoX2xvZ3NcbiAgICAgICBsZXQgcmVtb3ZlID0gIExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSByZW1vdmVfd2l0aF9sb2dzXG4gICAgICAgbGV0IHVuaW9uID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHVuaW9uX3dpdGhfbG9nc1xuICAgICAgIGxldCBpbnRlciA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBpbnRlcl93aXRoX2xvZ3NcbiAgICAgICBsZXQgZGlmZiA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBkaWZmX3dpdGhfbG9nc1xuICAgICAgIGxldCBtaW51cyA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBtaW51c193aXRoX2xvZ3NcbiAgICAgICBsZXQgZmlsdGVyID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGZpbHRlcl93aXRoX2xvZ3NcbiAgICAgICBsZXQgcGFydGl0aW9uID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2Zvcl9LYVNpbSBwYXJ0aXRpb25fd2l0aF9sb2dzXG4gICAgKilcbiAgZW5kXG5cbiAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAoKiBNYXAgaW1wbGVtZW50YXRpb24qKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgICAgdHlwZSArJ2RhdGEgdCA9IHByaXZhdGVcbiAgICAgICAgfCBFbXB0eVxuICAgICAgICB8IE5vZGUgb2YgJ2RhdGEgdCAqIGVsdCAqICdkYXRhICogJ2RhdGEgdCAqIGludCAqIGludFxuXG4gICAgICB2YWwgZW1wdHkgOiAnYSB0XG4gICAgICB2YWwgaGVpZ2h0IDogJ2EgdCAtPiBpbnRcbiAgICAgIHZhbCBzaXplIDogJ2EgdCAtPiBpbnRcbiAgICAgIHZhbCBub2RlIDogJ2EgdCAtPiBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlICsnZGF0YSB0ID1cbiAgICAgICAgfCBFbXB0eVxuICAgICAgICB8IE5vZGUgb2YgJ2RhdGEgdCAqIGVsdCAqICdkYXRhICogJ2RhdGEgdCAqIGludCAqIGludFxuXG4gICAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgaCwgXykgLT4gaFxuXG4gICAgICBsZXQgc2l6ZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIF8sIHMpIC0+IHNcblxuICAgICAgbGV0IG5vZGUgbGVmdCBrZXkwIGRhdGEgcmlnaHQgPVxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgICBsZXQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAgICAgTm9kZVxuICAgICAgICAgICggbGVmdCxcbiAgICAgICAgICAgIGtleTAsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAoMVxuICAgICAgICAgICAgK1xuICAgICAgICAgICAgaWYgaGwgPiBociB0aGVuXG4gICAgICAgICAgICAgIGhsXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGhyKSxcbiAgICAgICAgICAgIDEgKyBzaXplIGxlZnQgKyBzaXplIHJpZ2h0IClcbiAgICBlbmRcblxuICAgIHR5cGUgKydhIHQgPSAnYSBQcml2YXRlLnRcblxuICAgIGxldCBlbXB0eSA9IFByaXZhdGUuZW1wdHlcbiAgICBsZXQgaGVpZ2h0ID0gUHJpdmF0ZS5oZWlnaHRcbiAgICBsZXQgc2l6ZSA9IFByaXZhdGUuc2l6ZVxuICAgIGxldCBub2RlID0gUHJpdmF0ZS5ub2RlXG5cbiAgICB0eXBlIHNldCA9IFNldC50XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT4gZmFsc2VcblxuICAgIGxldCByb290ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgeCwgZCwgXywgXywgXykgLT4gU29tZSAoeCwgZClcblxuICAgIGxldCByZWMgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIGssIF8sIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+IFNvbWUga1xuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIF8sIF8sIG0sIF8sIF8pIC0+IG1heF9rZXkgbVxuXG4gICAgbGV0IGJhbGFuY2UgbGVmdCBrZXkgZGF0YSByaWdodCA9XG4gICAgICBsZXQgaGVpZ2h0X2xlZnQgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgbGV0IGhlaWdodF9yaWdodCA9IGhlaWdodCByaWdodCBpblxuICAgICAgaWYgaGVpZ2h0X2xlZnQgPiBoZWlnaHRfcmlnaHQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDgyOFwiKVxuICAgICAgICAoKiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDAsIGtleTAsIGRhdGEwLCByaWdodDAsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IGxlZnQwID49IGhlaWdodCByaWdodDAgdGhlblxuICAgICAgICAgICAgbm9kZSBsZWZ0MCBrZXkwIGRhdGEwIChub2RlIHJpZ2h0MCBrZXkgZGF0YSByaWdodClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJpZ2h0MCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgODM1XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCBsZWZ0MCA8IGhlaWdodCByaWdodDAgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnQwIGtleTAgZGF0YTAgbGVmdDEpXG4gICAgICAgICAgICAgICAga2V5MSBkYXRhMVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0MSBrZXkgZGF0YSByaWdodClcbiAgICAgICAgICApXG4gICAgICApIGVsc2UgaWYgaGVpZ2h0X3JpZ2h0ID4gaGVpZ2h0X2xlZnQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4NDRcIilcbiAgICAgICAgKCogaGVpZ2h0X3JpZ2h0ID4gaGVpZ2h0X2xlZnQgKyAyID49IDIgKilcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQwLCBrZXkwLCBkYXRhMCwgcmlnaHQwLCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCByaWdodDAgPj0gaGVpZ2h0IGxlZnQwIHRoZW5cbiAgICAgICAgICAgIG5vZGUgKG5vZGUgbGVmdCBrZXkgZGF0YSBsZWZ0MCkga2V5MCBkYXRhMCByaWdodDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGxlZnQwIHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4NTFcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IHJpZ2h0MCA8IGhlaWdodCBsZWZ0MCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgICAgICBub2RlIChub2RlIGxlZnQga2V5IGRhdGEgbGVmdDEpIGtleTEgZGF0YTFcbiAgICAgICAgICAgICAgICAobm9kZSByaWdodDEga2V5MCBkYXRhMCByaWdodDApXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIG5vZGUgbGVmdCBrZXkgZGF0YSByaWdodFxuXG4gICAgbGV0IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleSBkYXRhIHJpZ2h0ID1cbiAgICAgIHRyeSBlcnJvciwgYmFsYW5jZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG4gICAgICB3aXRoIERlYWRDb2RlSXNOb3REZWFkIGxvYyAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSAobG9jIF4gXCIgTWFwIGludmFyaWFudCBpcyBicm9rZW4sIGtlZXAgb24gd2l0aCB1bmJhbGFuY2VkIG1hcFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuTWFwLmJhbGFuY2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCBrZXkgZGF0YSByaWdodFxuXG4gICAgbGV0IHJlYyBhZGQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG5vZGUgZW1wdHkga2V5IGRhdGEgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhX21hcCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBub2RlIGxlZnQga2V5X21hcCBkYXRhIHJpZ2h0XG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgYmFsYW5jZSAoYWRkIGtleSBkYXRhIGxlZnQpIGtleV9tYXAgZGF0YV9tYXAgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJhbGFuY2UgbGVmdCBrZXlfbWFwIGRhdGFfbWFwIChhZGQga2V5IGRhdGEgcmlnaHQpXG5cbiAgICBsZXQgcmVjIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHRydWUsIG5vZGUgZW1wdHkga2V5IGRhdGEgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhX21hcCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZmFsc2UsIG5vZGUgbGVmdCBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGxlZnQnIGtleV9tYXAgZGF0YV9tYXAgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGxlZnQga2V5X21hcCBkYXRhX21hcCByaWdodCdcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgKVxuXG4gICAgbGV0IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbWFwID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhIG1hcFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgbWFwXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGEsIGIsIF8sIF8gPSBfX1BPU19fIGluXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXIgZXJyb3IgXCJzZXRNYXAubWwgXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoYSBeIFwiIGxpbmU6IFwiIF4gc3RyaW5nX29mX2ludCBiXG4gICAgICAgICAgICAgIF4gXCI6IEF0dGVtcHQgdG8gYWRkIGFuIGFzc29jaWF0aW9uIG92ZXIgYSBmb3JtZXIgb25lIGluIGEgbWFwXCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5NYXAuYWRkXCIpLFxuICAgICAgICAgIG1hcCApXG4gICAgICApXG5cbiAgICBsZXQgcmVjIGV4dHJhY3RfbWluX2JpbmRpbmcgbWFwIGtleSBkYXRhIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoa2V5LCBkYXRhKSwgbWFwJ1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluLCBsZWZ0JyA9IGV4dHJhY3RfbWluX2JpbmRpbmcgbGVmdDIga2V5MiBkYXRhMiByaWdodDIgaW5cbiAgICAgICAgbWluLCBiYWxhbmNlIGxlZnQnIGtleSBkYXRhIG1hcCdcblxuICAgIGxldCByZWMgZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcCBrZXkgZGF0YVxuICAgICAgICBtYXAnID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsICgoa2V5LCBkYXRhKSwgbWFwJylcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobWluLCBsZWZ0JykgPVxuICAgICAgICAgIGV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MiBrZXkyIGRhdGEyXG4gICAgICAgICAgICByaWdodDJcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIChtaW4sIGJhbGFuY2UgbGVmdCcga2V5IGRhdGEgbWFwJylcblxuICAgIGxldCBtZXJnZSBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwMlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICAobWF0Y2ggbWFwMiB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAxXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgLT5cbiAgICAgICAgICBsZXQgKGtleTMsIGRhdGEzKSwgbGVmdCcgPVxuICAgICAgICAgICAgZXh0cmFjdF9taW5fYmluZGluZyBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZSBtYXAxIGtleTMgZGF0YTMgbGVmdCcpXG5cbiAgICBsZXQgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgKG1hdGNoIG1hcDIgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDFcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgKChrZXkzLCBkYXRhMyksIGxlZnQnKSA9XG4gICAgICAgICAgICBleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDIga2V5MiBkYXRhMlxuICAgICAgICAgICAgICByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIGtleTMgZGF0YTMgbGVmdCcpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0XG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgYmFsYW5jZSAocmVtb3ZlIGtleSBsZWZ0KSBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJhbGFuY2UgbGVmdCBrZXlfbWFwIGRhdGEgKHJlbW92ZSBrZXkgcmlnaHQpXG5cbiAgICBsZXQgcmVjIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcCA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBmYWxzZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPSBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgcmlnaHQgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbWFwXG4gICAgICAgICkgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbGVmdCcgPT0gbGVmdCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiU2V0TWFwIGxpbmUgOTYxXCIpXG4gICAgICAgICAgICAgICAgICAoZmFpbHdpdGggXCJJbnZhcmlhbnQgaXMgYnJva2VuXCIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcga2V5X21hcCBkYXRhIHJpZ2h0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmlnaHQnID09IHJpZ2h0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA5NzhcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleV9tYXAgZGF0YSByaWdodCdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVtb3ZlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcCA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIG1hcCA9XG4gICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgbWFwXG4gICAgICBlbHNlXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoXCJTZXRNYXAgbGluZSA5OTRcIlxuICAgICAgICAgICAgICBeIFwiVHJ5IHRvIHJlbW92ZSBhbiBhc3NvY2lhdGlvbiB0aGF0IGlzIG5vdCBkZWZpbmVkIGluIE1hcC5yZW1vdmVcIlxuICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgIChmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJUcnkgdG8gcmVtb3ZlIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gTWFwLnJlbW92ZVwiKSxcbiAgICAgICAgICBtYXAgKVxuXG4gICAgbGV0IHJlYyBwb3AgeCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgbSAtPiBOb25lLCBtXG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgZCwgciwgXywgXykgYXMgbSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgU29tZSBkLCBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBwb3AgeCBsIHdpdGhcbiAgICAgICAgICB8IChOb25lIGFzIG8pLCBfIC0+IG8sIG1cbiAgICAgICAgICB8IChTb21lIF8gYXMgbyksIHQgLT4gbywgYmFsYW5jZSB0IHYgZCByXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcG9wIHggciB3aXRoXG4gICAgICAgICAgfCAoTm9uZSBhcyBvKSwgXyAtPiBvLCBtXG4gICAgICAgICAgfCAoU29tZSBfIGFzIG8pLCB0IC0+IG8sIGJhbGFuY2UgbCB2IGQgdFxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGpvaW4gbGVmdCBrZXkgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggYmFsYW5jZSBsZWZ0IGtleSB2YWx1ZSByaWdodCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMTAxM1wiKSAoKiBCeSBjYXNlIGFuYWx5c2lzICopXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIGFzIG1hcDIgLT5cbiAgICAgICAgbGV0IGggPSBoZWlnaHQgbGVmdDIgLSBoZWlnaHQgcmlnaHQyIGluXG4gICAgICAgIGlmIGggPiAyIHx8IGggPCAtMiB0aGVuXG4gICAgICAgICAgam9pbiBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MlxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWFwMlxuXG4gICAgbGV0IHJlYyBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBrZXkgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5IHZhbHVlIHJpZ2h0IHdpdGhcbiAgICAgIHwgZXJyb3IsIFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIFwiTWFwLmpvaW5fd2l0aF9sb2dzLCBsaW5lIDk4NiwgdGhlIG91dHB1dCBvZiBiYWxhbmNlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICBiZSBlbXB0eVwiKVxuICAgICAgICAgICAgKGZhaWx3aXRoIFwidGhlIG91dHB1dCBvZiBiYWxhbmNlIHNob3VsZCBub3QgYmUgZW1wdHlcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGVtcHR5XG4gICAgICB8IGVycm9yLCAoUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgYXMgbWFwMikgLT5cbiAgICAgICAgbGV0IGggPSBoZWlnaHQgbGVmdDIgLSBoZWlnaHQgcmlnaHQyIGluXG4gICAgICAgIGlmIGggPiAyIHx8IGggPCAtMiB0aGVuXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlcnJvciwgbWFwMlxuXG4gICAgbGV0IHJlYyBzcGxpdCB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIE5vbmUsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSB2YWx1ZSBrZXkxIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGxlZnQxLCBTb21lIGRhdGExLCByaWdodDFcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlIGxlZnQxIGluXG4gICAgICAgICAgbGV0IHJpZ2h0MicgPSBqb2luIHJpZ2h0MiBrZXkxIGRhdGExIHJpZ2h0MSBpblxuICAgICAgICAgIGxlZnQyLCBkYXRhMiwgcmlnaHQyJ1xuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlIHJpZ2h0MSBpblxuICAgICAgICAgIGxldCBsZWZ0MicgPSBqb2luIGxlZnQxIGtleTEgZGF0YTEgbGVmdDIgaW5cbiAgICAgICAgICBsZWZ0MicsIGRhdGEyLCByaWdodDJcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIG1hcCA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCAoZW1wdHksIE5vbmUsIGVtcHR5KVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUgdmFsdWUga2V5MSBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgKGxlZnQxLCBTb21lIGRhdGExLCByaWdodDEpXG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsZWZ0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodDInID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDIga2V5MSBkYXRhMSByaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDInKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHJpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0MicgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGtleTEgZGF0YTEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdDInLCBkYXRhMiwgcmlnaHQyKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGRpZmYgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICBsZXQgb2xlZnQxLCBvbGVmdDIgPSBkaWZmIGxlZnQxIGxlZnQyIGluXG4gICAgICAgIGxldCBvcmlnaHQxLCBvcmlnaHQyID0gZGlmZiByaWdodDEgcmlnaHQyIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4geCA9IGRhdGExIC0+IG1lcmdlIG9sZWZ0MSBvcmlnaHQxLCBtZXJnZSBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIGpvaW4gb2xlZnQyIGtleTEgZGF0YTIgb3JpZ2h0MlxuICAgICAgICB8IE5vbmUgLT4gam9pbiBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxLCBtZXJnZSBvbGVmdDIgb3JpZ2h0MilcblxuICAgIGxldCByZWMgdW5pb24gbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1hcDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtYXAxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCBkYXRhMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIGRhdGEyLCByaWdodDIsIGhlaWdodDIsIF8pICkgLT5cbiAgICAgICAgaWYgaGVpZ2h0MSA+PSBoZWlnaHQyIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0Miwgb3BfZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBtYXAyIGluXG4gICAgICAgICAgam9pbiAodW5pb24gbGVmdDEgbGVmdDIpIHZhbHVlMVxuICAgICAgICAgICAgKG1hdGNoIG9wX2RhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgKHVuaW9uIHJpZ2h0MSByaWdodDIpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBvcF9kYXRhMSwgcmlnaHQxID0gc3BsaXQgdmFsdWUyIG1hcDEgaW5cbiAgICAgICAgICBqb2luICh1bmlvbiBsZWZ0MSBsZWZ0MikgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEyXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gZDEpXG4gICAgICAgICAgICAodW5pb24gcmlnaHQxIHJpZ2h0MilcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgbWFwMlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBtYXAxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCBkYXRhMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIGRhdGEyLCByaWdodDIsIGhlaWdodDIsIF8pICkgLT5cbiAgICAgICAgaWYgaGVpZ2h0MSA+PSBoZWlnaHQyIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBvcF9kYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBtYXAyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQnID1cbiAgICAgICAgICAgIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMVxuICAgICAgICAgICAgKG1hdGNoIG9wX2RhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgcmlnaHQnXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDEsIG9wX2RhdGExLCByaWdodDEpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIG1hcDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEyXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gZDEpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyB1cGRhdGUgbWFwMSBtYXAyID1cbiAgICAgIGlmIG1hcDEgPT0gbWFwMiB0aGVuXG4gICAgICAgIG1hcDJcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG1hcDJcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICAgIGpvaW4gKHVwZGF0ZSBsZWZ0MSBsZWZ0Mikga2V5MVxuICAgICAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgKHVwZGF0ZSByaWdodDEgcmlnaHQyKVxuICAgICAgKVxuXG4gICAgbGV0IHJlYyB1cGRhdGVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgaWYgbWFwMSA9PSBtYXAyIHRoZW5cbiAgICAgICAgZXJyb3IsIG1hcDJcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBtYXAyXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdXBkYXRlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVwZGF0ZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXkxXG4gICAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgIClcblxuICAgIGxldCByZWMgZGlmZl9wcmVkIHByZWQgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICBsZXQgb2xlZnQxLCBvbGVmdDIgPSBkaWZmX3ByZWQgcHJlZCBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICBsZXQgb3JpZ2h0MSwgb3JpZ2h0MiA9IGRpZmZfcHJlZCBwcmVkIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBwcmVkIHggZGF0YTEgLT4gbWVyZ2Ugb2xlZnQxIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgam9pbiBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgIHwgTm9uZSAtPiBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCBfLCBfLCBfKSAtPiBTb21lIChrZXksIGRhdGEpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgXywgXywgXywgXywgXykgLT4gbWluX2VsdCBsZWZ0XG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0aW9uIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgU29tZSBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX29wdGlvbiBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9kZWZhdWx0IGQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBkXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX2RlZmF1bHQgZCBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9vcHRpb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibGluZSA2NTlcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgU29tZSBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX29wdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5XG4gICAgICAgICAgICAoaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgICAgICBsZWZ0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgcmlnaHQpXG5cbiAgICBsZXQgcmVjIGZpbmRfZGVmYXVsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcImxpbmUgNjY5XCIpIE5vdF9mb3VuZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgZFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfZGVmYXVsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZCBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgbWVtIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBfLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGNtcCA9PSAwXG4gICAgICAgIHx8XG4gICAgICAgIGlmIGNtcCA+IDAgdGhlblxuICAgICAgICAgIG1lbSBrZXkgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1lbSBrZXkgbGVmdFxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfb25lIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgaWYgcCBrZXkgdmFsdWUgdGhlblxuICAgICAgICAgIFNvbWUgKGtleSwgdmFsdWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGZpbHRlcl9vbmUgcCBsZWZ0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX29uZSBwIHJpZ2h0XG4gICAgICAgICAgfCBvdXQgLT4gb3V0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCAoKSA9IGl0ZXIgZiBsZWZ0IGluXG4gICAgICAgIGxldCAoKSA9IGYga2V5IGRhdGEgaW5cbiAgICAgICAgaXRlciBmIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGZvbGQgZiByaWdodCAoZiBrZXkgZGF0YSAoZm9sZCBmIGxlZnQgdmFsdWUpKVxuXG4gICAgbGV0IHJlYyBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbWFwIHZhbHVlID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2UsIFN0b3Auc3VjY2VzcyB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBvdXRwdXRsID0gZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIGxlZnQgdmFsdWUgaW5cbiAgICAgICAgbGV0IGludGVycnVwdGVkLCB2YWx1ZSA9IG91dHB1dGwgaW5cbiAgICAgICAgaWYgaW50ZXJydXB0ZWQgdGhlblxuICAgICAgICAgIG91dHB1dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgIGxldCB2YWxfb3B0ID1cbiAgICAgICAgICAgICAgICB0cnkgU29tZSAoZiBrZXkgZGF0YSB2YWx1ZSkgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCB2YWxfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHRydWUsIFN0b3Auc3VjY2VzcyB2YWx1ZVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAgICAgICAoZnVuIHYgLT4gZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIHJpZ2h0IHYpXG4gICAgICAgICAgICAgICAgICAoZnVuIHYgLT4gZmFsc2UsIFN0b3Auc3RvcCB2KVxuICAgICAgICAgICAgICAgICAgdilcbiAgICAgICAgICAgIChmdW4geCAtPiBmYWxzZSwgU3RvcC5zdG9wIHgpXG4gICAgICAgICAgICB2YWx1ZVxuXG4gICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUgPVxuICAgICAgc25kIChmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbWFwIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGQgcGFyYW0gZXJyIGYgbWFwIHZhbHVlID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyLCB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnInLCB2YWx1ZScgPSBtb25hZGljX2ZvbGQgcGFyYW0gZXJyIGYgbGVmdCB2YWx1ZSBpblxuICAgICAgICBsZXQgZXJyJycsIHZhbHVlJycgPSBmIHBhcmFtIGVycicga2V5IGRhdGEgdmFsdWUnIGluXG4gICAgICAgIG1vbmFkaWNfZm9sZCBwYXJhbSBlcnInJyBmIHJpZ2h0IHZhbHVlJydcblxuICAgIGxldCByZWMgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIG1hcDEgbWFwMiByZXMgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIFByaXZhdGUuRW1wdHkgLT4gcmgsIHJlc1xuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIHJoIGggbWFwMiByZXNcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyByaCBnIG1hcDEgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID0gbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIGxlZnQxIGxlZnQyIHJlcyBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGcgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMSByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoJycgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID0gbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIGxlZnQxIGxlZnQyIHJlcyBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGYgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoJycgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBtb25hZGljX2ZvbGQyX3NwYXJzZSBwYXJhbWV0ZXJzIHJoIGYgbWFwMSBtYXAyIHJlcyA9XG4gICAgICBsZXQgaWQgXyB4IF8gXyB5ID0geCwgeSBpblxuICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgaWQgaWQgbWFwMSBtYXAyIHJlc1xuXG4gICAgbGV0IG1vbmFkaWNfaXRlcjJfc3BhcnNlIHBhcmFtZXRlcnMgcmggZiBtYXAxIG1hcDIgPVxuICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgIG1vbmFkaWNfZm9sZDJfc3BhcnNlIHBhcmFtZXRlcnMgcmhcbiAgICAgICAgICAoZnVuIHAgZSBrIGEgYiAoKSAtPiBmIHAgZSBrIGEgYiwgKCkpXG4gICAgICAgICAgbWFwMSBtYXAyICgpXG4gICAgICBpblxuICAgICAgZXJyb3JcblxuICAgIGxldCByZWMgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBzZXQgbWFwIHJlcyA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBTZXQuUHJpdmF0ZS5FbXB0eSAtPiByaCwgcmVzXG4gICAgICB8IFNldC5Qcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPVxuICAgICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoJyBmIHJpZ2h0MSByaWdodDIgcmVzJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID1cbiAgICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmgnJywgcmVzJycgPSBmIHBhcmFtZXRlcnMgcmgnIGtleTEgZGF0YTIgcmVzJyBpblxuICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoJycgZiByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbm9kZSAobWFwaSBmIGxlZnQpIGtleSAoZiBrZXkgZGF0YSkgKG1hcGkgZiByaWdodClcblxuICAgIGxldCBtYXAgZiBzID0gbWFwaSAoZnVuIF8geCAtPiBmIHgpIHNcblxuICAgIGxldCByZWMgbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3JzLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvcnMsIGxlZnQnID0gbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgbGVmdCBpblxuICAgICAgICBsZXQgZXJyb3JzLCBkYXRhJyA9IGYgcGFyYW1ldGVycyBlcnJvcnMgZGF0YSBpblxuICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IG1hcF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIHJpZ2h0IGluXG4gICAgICAgIGVycm9yLCBub2RlIGxlZnQnIGtleSBkYXRhJyByaWdodCdcblxuICAgIGxldCByZWMgbWFwMiBmIG1hcCBtYXAnID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwJ1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbGVmdDIsIGRhdGEyLCByaWdodDIgPSBzcGxpdCBrZXkxIG1hcCcgaW5cbiAgICAgICAgam9pbiAobWFwMiBmIGxlZnQxIGxlZnQyKSBrZXkxXG4gICAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZGF0YTFcbiAgICAgICAgICB8IFNvbWUgZDIgLT4gZiBkYXRhMSBkMilcbiAgICAgICAgICAobWFwMiBmIHJpZ2h0MSByaWdodDIpXG5cbiAgICBsZXQgcmVjIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBtYXAyIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9ycywgZW1wdHlcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPiBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZyBtYXAyKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgZXJyb3JzLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9ycywgbGVmdCcgPVxuICAgICAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggbGVmdDEgbGVmdDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID1cbiAgICAgICAgICBtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGYgcGFyYW1ldGVycyBlcnJvciBkYXRhMVxuICAgICAgICAgIHwgU29tZSBkMiAtPiBoIHBhcmFtZXRlcnMgZXJyb3JzIGRhdGExIGQyXG4gICAgICAgIGluXG4gICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXkxIGRhdGEnIHJpZ2h0J1xuXG4gICAgbGV0IG1hcDJ6X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzID1cbiAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnNcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNDgsIGluY29tcGF0aWJsZSBtYXBzIGluIG1hcDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNTEsIGluY29tcGF0aWJsZSBtYXBzIGluIG1hcDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcblxuICAgIGxldCByZWMgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCBtYXAxIG1hcDIgcmVzID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCByZXNcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyBlcnJvciBnIG1hcDIgcmVzXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gbW9uYWRpY19mb2xkIHBhcmFtZXRlcnMgZXJyb3IgZiBtYXAxIHJlc1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBtYXAyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnJyA9IGYgcGFyYW1ldGVycyBlcnJvciBrZXkxIGRhdGExIHJlcycgaW5cbiAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIHJpZ2h0MSByaWdodDIgcmVzJydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gaCBwYXJhbWV0ZXJzIGVycm9yIChrZXkxIDogZWx0KSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IGZvbGQyel93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yID1cbiAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIF8gXyBhIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAgIChTb21lIFwibGluZSAxMjQ4LCBpbmNvbXBhdGlibGUgbWFwcyBpbiBmb2xkMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgXyBfIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNTEsIGluY29tcGF0aWJsZSBtYXBzIGluIGZvbGQyel9zYWZlXCIpIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGEpXG5cbiAgICBsZXQgcmVjIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbWFwMSBtYXAyIHJlcyA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHJlc1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBtYXAyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiByaWdodDEgcmlnaHQyIHJlcydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgZGF0YTEgZGF0YTIgcmVzJyBpblxuICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIG1hcDEgbWFwMiA9XG4gICAgICBsZXQgZXJyb3IsIF8gPVxuICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyIGVyciBhIGIgYyBfIC0+IGYgcGFyIGVyciBhIGIgYywgKCkpXG4gICAgICAgICAgbWFwMSBtYXAyICgpXG4gICAgICBpblxuICAgICAgZXJyb3JcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgcCBrZXkgZGF0YSAmJiBmb3JfYWxsIHAgcmlnaHQgJiYgZm9yX2FsbCBwIGxlZnRcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIHYsIGQsIHIsIF8sIF8pIC0+IGNvbnNfZW51bSBsIChNb3JlICh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggZTEsIGUyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgICAgICAgY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgICAgIGNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBjb21wYXJlXG4gICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgaWYgY21wIHggeSB0aGVuXG4gICAgICAgICAgICAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgMSlcbiAgICAgICAgbTEgbTJcbiAgICAgID09IDBcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCBkLCByLCBfLCBfKSAtPlxuICAgICAgICBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9IGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgcmVjIGF1eF9wcmludCBwciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgZGF0YSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEtPkAsJWFAXVwiIE9yZC5wcmludCBrZXkgcHIgZGF0YVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLT4lYUBdLEAgJWFcIiBPcmQucHJpbnQga2V5IHByIGRhdGEgKGF1eF9wcmludCBwcilcbiAgICAgICAgICByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLEAgQFslYS0+JWFAXVwiIChhdXhfcHJpbnQgcHIpIGxlZnQgT3JkLnByaW50IGtleSBwclxuICAgICAgICAgIGRhdGFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhLT4lYUBdLEAgJWFcIiAoYXV4X3ByaW50IHByKSBsZWZ0IE9yZC5wcmludFxuICAgICAgICAgIGtleSBwciBkYXRhIChhdXhfcHJpbnQgcHIpIHJpZ2h0XG5cbiAgICBsZXQgcHJpbnQgcHIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXFx4RTJcXHg4OFxceDg1XCJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gYXMgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFt7JWF9QF1cIiAoYXV4X3ByaW50IHByKSBtXG5cbiAgICBsZXQgcmVjIGRpZmZfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGVmdDEsIG9sZWZ0MiA9XG4gICAgICAgICAgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb3JpZ2h0MSwgb3JpZ2h0MiA9XG4gICAgICAgICAgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiB4ID0gZGF0YTEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMlxuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMilcblxuICAgIGxldCByZWMgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGVmdDEsIG9sZWZ0MiA9XG4gICAgICAgICAgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCBsZWZ0MSBsZWZ0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9yaWdodDEsIG9yaWdodDIgPVxuICAgICAgICAgIGRpZmZfcHJlZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHByZWQgcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHByZWQgeCBkYXRhMSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yKVxuXG4gICAgbGV0IHJlYyBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICBlcnJvciBmIGcgc2V0IG1hcCByZXMgPVxuICAgICAgbWF0Y2ggc2V0LCBtYXAgd2l0aFxuICAgICAgfCBTZXQuUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgcmVzXG4gICAgICB8IFNldC5Qcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcFxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgZXJyb3IgZiBnIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnJyA9IGcga2V5MSAoZXJyb3IsIHJlcycpIGluXG4gICAgICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnNcbiAgICAgICAgICAgIGVycm9yIGYgZyByaWdodDEgcmlnaHQyIHJlcycnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgICBlcnJvciBmIGcgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBrZXkxIGRhdGEyIChlcnJvciwgcmVzJykgaW5cbiAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgZXJyb3IgZiBnIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgc2V0IG1hcCByZXMgPVxuICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgZlxuICAgICAgICAoZnVuIF8geCAtPiB4KVxuICAgICAgICBzZXQgbWFwIHJlc1xuXG4gICAgbGV0IHRvX2pzb24gPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpID1cbiAgICAgIEpzb25VdGlsLm9mX21hcCB+bGFiX2tleSB+bGFiX3ZhbHVlIH5mb2xkXG5cbiAgICBsZXQgb2ZfanNvbiA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIilcbiAgICAgICAgPyhlcnJvcl9tc2cgPSBKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIm1hcFwiKSA9XG4gICAgICBKc29uVXRpbC50b19tYXAgfmxhYl9rZXkgfmxhYl92YWx1ZSB+ZXJyb3JfbXNnIH5hZGQgfmVtcHR5XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24gPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlIHNldF9hXG4gIHR5cGUgc2V0X2JcblxuICB2YWwgcHJval9tYXAgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT4gJ2IgLT4gKCdiIC0+ICdhIC0+ICdiKSAtPiAnYSBtYXBfYSAtPiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX21hcF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX3NldCA6IChlbHRfYSAtPiBlbHRfYikgLT4gc2V0X2EgLT4gc2V0X2JcblxuICB2YWwgcHJval9zZXRfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdF9hIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIGVsdF9iKSAtPlxuICAgIHNldF9hIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHNldF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXQgOiAoZWx0X2EgLT4gZWx0X2IpIC0+IHNldF9hIC0+IHNldF9hIG1hcF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXRfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdF9hIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIGVsdF9iKSAtPlxuICAgIHNldF9hIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHNldF9hIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2ogKEEgOiBTKSAoQiA6IFMpID0gc3RydWN0XG4gIG1vZHVsZSBNQSA9IEEuTWFwXG4gIG1vZHVsZSBNQiA9IEIuTWFwXG4gIG1vZHVsZSBTQSA9IEEuU2V0XG4gIG1vZHVsZSBTQiA9IEIuU2V0XG5cbiAgdHlwZSBlbHRfYSA9IE1BLmVsdFxuICB0eXBlIGVsdF9iID0gTUIuZWx0XG4gIHR5cGUgc2V0X2EgPSBTQS50XG4gIHR5cGUgc2V0X2IgPSBTQi50XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG5cbiAgbGV0IHByb2pfbWFwIGYgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgbWFwX2IgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBNQi5hZGQga2V5X2JcbiAgICAgICAgICAobWVyZ2UgKE1CLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2IgbWFwX2IpIGRhdGFfYSlcbiAgICAgICAgICBtYXBfYilcbiAgICAgIG1hcCBNQi5lbXB0eVxuXG4gIGxldCBwcm9qX21hcF9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgaWRlbnRpdHlfZWx0IG1vbmFkaWNfbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGRhdGEnID1cbiAgICAgICAgICBtb25hZGljX21lcmdlIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAoTUIuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYiBtYXBfYilcbiAgICAgICAgICAgIGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVyLCBNQi5hZGQga2V5X2IgZGF0YScgbWFwX2IpXG4gICAgICBtYXAgKGhhbmRsZXIsIE1CLmVtcHR5KVxuXG4gIGxldCBwcm9qX3NldCBmIHNldF9hID0gU0EuZm9sZCAoZnVuIGtleV9hIC0+IFNCLmFkZCAoZiBrZXlfYSkpIHNldF9hIFNCLmVtcHR5XG5cbiAgbGV0IHByb2pfc2V0X21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoaGFuZGxlciwgc2V0X2IpIC0+XG4gICAgICAgIGxldCBoYW5kbGVyLCBrZXlfYiA9IGYgcGFyYW1ldGVyIGhhbmRsZXIga2V5X2EgaW5cbiAgICAgICAgaGFuZGxlciwgU0IuYWRkIGtleV9iIHNldF9iKVxuICAgICAgc2V0X2EgKGhhbmRsZXIsIFNCLmVtcHR5KVxuXG4gIGxldCBwYXJ0aXRpb25fc2V0IGYgc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgbWFwX2IgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBNQi5hZGQga2V5X2IgKFNBLmFkZCBrZXlfYSAoTUIuZmluZF9kZWZhdWx0IFNBLmVtcHR5IGtleV9iIG1hcF9iKSkgbWFwX2IpXG4gICAgICBzZXRfYSBNQi5lbXB0eVxuXG4gIGxldCBwYXJ0aXRpb25fc2V0X21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBoYW5kbGVyLCBrZXlfYiA9IGYgcGFyYW1ldGVyIGhhbmRsZXIga2V5X2EgaW5cbiAgICAgICAgKCBoYW5kbGVyLFxuICAgICAgICAgIE1CLmFkZCBrZXlfYlxuICAgICAgICAgICAgKFNBLmFkZCBrZXlfYSAoTUIuZmluZF9kZWZhdWx0IFNBLmVtcHR5IGtleV9iIG1hcF9iKSlcbiAgICAgICAgICAgIG1hcF9iICkpXG4gICAgICBzZXRfYSAoaGFuZGxlciwgTUIuZW1wdHkpXG5lbmRcbigqIHRvZG86IGFkZCB0aGUgZm9sbG93aW5nICB0ZXN0IHRvIHRoZSBzYW5pdHkgdGVzdHMgKilcblxuKCpcbigqIGZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBjb2RlOiAqKVxuXG5tb2R1bGUgSW50TWFwID0gTWFrZShzdHJ1Y3QgdHlwZSB0ID0gaW50IGxldCBjb21wYXJlID0gY29tcGFyZSBlbmQpXG5tb2R1bGUgUCA9IFByb2ooSW50TWFwKShJbnRNYXApXG5cblxubGV0IGYgPSBMaXN0LmZvbGRfbGVmdFxuKGZ1biBtYXAgKGEsYikgLT4gSW50TWFwLk1hcC5hZGQgYSBiIG1hcClcbkludE1hcC5NYXAuZW1wdHlcblsxLFsyOzNdOzIsWzM7NF07NSxbNjs3XTs4LFsxMjsxM11dXG5cbigqIGJhZCBpbXBsZW1lbnRhdGlvbiAocXVhZHJhdGljIHRpbWUgY29tcGxleGl0eSkgKilcbmxldCBnID0gUC5wcm9qIChmdW4gaSAtPiBpIG1vZCAyKSBbXSAoTGlzdC5hcHBlbmQpIGZcblxuKCogZ29vZCBpbXBsZW1lbnRhdGlvbiAobGluZWFyIHRpbWUgY29tcGxleGl0eSkqKVxubGV0IGcnID0gSW50TWFwLk1hcC5tYXAgTGlzdC5yZXYgKFAucHJvaiAoZnVuIGkgLT4gaSBtb2QgMikgW10gKGZ1biB4IHkgLT4gTGlzdC5hcHBlbmQgKExpc3QucmV2IHkpIHgpIGYpXG5cblxubGV0IGR1bXAgKHM6c3RyaW5nKSBmID1cbiAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlczogXFxuXCIgcyBpblxuICBsZXQgXyA9IEludE1hcC5NYXAuaXRlclxuKGZ1biBhIGwgLT5cbmxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiICAlaTpcIiBhIGluXG5sZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksXCIpIGwgaW5cbmxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW4gKCkpXG5mIGluXG4gICgpXG5sZXQgXyA9IGR1bXAgXCJmXCIgZlxubGV0IF8gPSBkdW1wIFwiZ1wiIGdcbmxldCBfID0gZHVtcCBcImcnXCIgZydcblxuKCogc2hvdWxkIGR1bXA6ICopXG4oKlxuXG5mOlxuICAxOjIsMyxcbiAgMjozLDQsXG4gIDU6Niw3LFxuICA4OjEyLDEzLFxuZzpcbiAgMDozLDQsMTIsMTMsXG4gIDE6MiwzLDYsNyxcbiAqKVxuICopXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24yID0gc2lnXG4gIHR5cGUgZWx0X2FcbiAgdHlwZSBlbHRfYlxuICB0eXBlIGVsdF9jXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlICdhIG1hcF9jXG5cbiAgdmFsIHByb2oyIDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9jKSAtPlxuICAgICdiIC0+XG4gICAgKCdiIC0+ICdhIC0+ICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ2IgbWFwX2MgbWFwX2JcblxuICB2YWwgcHJvajJfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgICgncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiIG1hcF9jIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2oyIChBIDogUykgKEIgOiBTKSAoQyA6IFMpID0gc3RydWN0XG4gIG1vZHVsZSBNQSA9IEEuTWFwXG4gIG1vZHVsZSBNQiA9IEIuTWFwXG4gIG1vZHVsZSBNQyA9IEMuTWFwXG5cbiAgdHlwZSBlbHRfYSA9IE1BLmVsdFxuICB0eXBlIGVsdF9iID0gTUIuZWx0XG4gIHR5cGUgZWx0X2MgPSBNQy5lbHRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcbiAgdHlwZSAnYSBtYXBfYyA9ICdhIE1DLnRcblxuICBsZXQgcHJvajIgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIG1hcF9iIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUIuZmluZF9kZWZhdWx0IE1DLmVtcHR5IGtleV9iIG1hcF9iIGluXG4gICAgICAgIGxldCBzdWJtYXAgPVxuICAgICAgICAgIE1DLmFkZCBrZXlfY1xuICAgICAgICAgICAgKG1lcmdlIChNQy5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcCkgZGF0YV9hKVxuICAgICAgICAgICAgc3VibWFwXG4gICAgICAgIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYiBzdWJtYXAgbWFwX2IpXG4gICAgICBtYXAgTUIuZW1wdHlcblxuICBsZXQgcHJvajJfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGhhbmRsZXIsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBrZXlfYyA9IGcga2V5X2EgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9IE1CLmZpbmRfZGVmYXVsdCBNQy5lbXB0eSBrZXlfYiBtYXBfYiBpblxuICAgICAgICBsZXQgaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1lcmdlIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAoTUMuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYyBzdWJtYXApXG4gICAgICAgICAgICBkYXRhX2FcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9IE1DLmFkZCBrZXlfYyBkYXRhJyBzdWJtYXAgaW5cbiAgICAgICAgaGFuZGxlciwgTUIuYWRkIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCAoaGFuZGxlciwgTUIuZW1wdHkpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBpbnRfY29tcGFyZSAoeCA6IGludCkgeSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuXG5sZXQgaW50X3BhaXJfY29tcGFyZSAocCwgcSkgKHAnLCBxJykgPVxuICBsZXQgbyA9IGludF9jb21wYXJlIHAgcCcgaW5cbiAgaWYgbyA9IDAgdGhlblxuICAgIGludF9jb21wYXJlIHEgcSdcbiAgZWxzZVxuICAgIG9cblxubGV0IHN0cmluZ19wYWlyX2NvbXBhcmUgKHAsIHEpIChwJywgcScpID1cbiAgbGV0IG8gPSBTdHJpbmcuY29tcGFyZSBwIHAnIGluXG4gIGlmIG8gPSAwIHRoZW5cbiAgICBTdHJpbmcuY29tcGFyZSBxIHEnXG4gIGVsc2VcbiAgICBvXG5cbmxldCBwYWlyX2VxdWFsIGVxYSBlcWIgKHhhLCB4YikgKHlhLCB5YikgPSBlcWEgeGEgeWEgJiYgZXFiIHhiIHliXG5cbm1vZHVsZSBTdHJpbmdTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZ1xuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuZW5kKVxuXG5tb2R1bGUgU3RyaW5nU2V0ID0gU3RyaW5nU2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ01hcCA9IFN0cmluZ1NldE1hcC5NYXBcblxubW9kdWxlIFN0cmluZzJTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIHN0cmluZ1xuXG4gIGxldCBjb21wYXJlID0gc3RyaW5nX3BhaXJfY29tcGFyZVxuICBsZXQgcHJpbnQgZiAoYSwgYikgPSBGb3JtYXQuZnByaW50ZiBmIFwiKCVzLCAlcylcIiBhIGJcbmVuZClcblxubW9kdWxlIFN0cmluZzJNYXAgPSBTdHJpbmcyU2V0TWFwLk1hcFxuXG5tb2R1bGUgSW50U2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgY29tcGFyZSA9IGludF9jb21wYXJlXG4gIGxldCBwcmludCA9IEZvcm1hdC5wcF9wcmludF9pbnRcbmVuZClcblxubW9kdWxlIEludFNldCA9IEludFNldE1hcC5TZXRcbm1vZHVsZSBJbnRNYXAgPSBJbnRTZXRNYXAuTWFwXG5cbm1vZHVsZSBJbnQyU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgKiBpbnRcblxuICBsZXQgY29tcGFyZSA9IGludF9wYWlyX2NvbXBhcmVcbiAgbGV0IHByaW50IGYgKGEsIGIpID0gRm9ybWF0LmZwcmludGYgZiBcIiglaSwgJWkpXCIgYSBiXG5lbmQpXG5cbm1vZHVsZSBJbnQyU2V0ID0gSW50MlNldE1hcC5TZXRcbm1vZHVsZSBJbnQyTWFwID0gSW50MlNldE1hcC5NYXBcblxubW9kdWxlIENoYXJTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGNoYXJcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2NoYXJcbmVuZClcblxubW9kdWxlIENoYXJTZXQgPSBDaGFyU2V0TWFwLlNldFxubW9kdWxlIENoYXJNYXAgPSBDaGFyU2V0TWFwLk1hcFxubW9kdWxlIER5bkFycmF5ID0gRHluYW1pY0FycmF5LkR5bkFycmF5IChMYXJnZUFycmF5KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHVuc29tZSBkZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGRlZmF1bHRcbiAgfCBTb21lIGEgLT4gYVxuXG5sZXQgdW5zb21lX29yX3JhaXNlXG4gICAgPyhleGNlcCA9IEludmFsaWRfYXJndW1lbnQgXCJ1bnNvbWVfb3JfcmFpc2Ugd2FzIHBhc3NlZCBhIE5vbmVcIikgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcmFpc2UgZXhjZXBcbiAgfCBTb21lIGEgLT4gYVxuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBiaW5kIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgbyAtPiBmIG9cblxubGV0IGZvbGQgZiB4ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHkgLT4gZiB4IHlcblxubGV0IGVxdWFsIGVxIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgXywgTm9uZSB8IE5vbmUsIFNvbWUgXyAtPiBmYWxzZVxuICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxIHggeVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwb3NpdGlvbiA9IHsgY2hyOiBpbnQ7IGxpbmU6IGludCB9XG50eXBlIHQgPSB7IGZpbGU6IHN0cmluZzsgZnJvbV9wb3NpdGlvbjogcG9zaXRpb247IHRvX3Bvc2l0aW9uOiBwb3NpdGlvbiB9XG50eXBlICdhIGFubm90ZWQgPSAnYSAqIHRcblxubGV0IHYgKHYsIF8pID0gdlxubGV0IGdldF9hbm5vdCAoXywgYW5ub3QpID0gYW5ub3RcbmxldCBjb3B5X2Fubm90IChfLCBsb2MpIGEgPSBhLCBsb2NcbmxldCBtYXBfYW5ub3QgZiAoYSwgbG9jKSA9IGYgYSwgbG9jXG5cbmxldCBvZl9wb3Mgc3RhcnRfbG9jYXRpb24gZW5kX2xvY2F0aW9uID1cbiAgbGV0ICgpID1cbiAgICBhc3NlcnQgKHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfZm5hbWUgPSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19mbmFtZSlcbiAgaW5cbiAge1xuICAgIGZpbGUgPSBzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2ZuYW1lO1xuICAgIGZyb21fcG9zaXRpb24gPVxuICAgICAge1xuICAgICAgICBjaHIgPSBzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2NudW0gLSBzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2JvbDtcbiAgICAgICAgbGluZSA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfbG51bTtcbiAgICAgIH07XG4gICAgdG9fcG9zaXRpb24gPVxuICAgICAge1xuICAgICAgICBjaHIgPSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19jbnVtIC0gZW5kX2xvY2F0aW9uLkxleGluZy5wb3NfYm9sO1xuICAgICAgICBsaW5lID0gZW5kX2xvY2F0aW9uLkxleGluZy5wb3NfbG51bTtcbiAgICAgIH07XG4gIH1cblxubGV0IGR1bW15X3Bvc2l0aW9uID1cbiAge1xuICAgIGNociA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19jbnVtIC0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2JvbDtcbiAgICBsaW5lID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2xudW07XG4gIH1cblxubGV0IGR1bW15ID1cbiAge1xuICAgIGZpbGUgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWU7XG4gICAgZnJvbV9wb3NpdGlvbiA9IGR1bW15X3Bvc2l0aW9uO1xuICAgIHRvX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb247XG4gIH1cblxubGV0IGFubm90X3dpdGhfZHVtbXkgeCA9IHgsIGR1bW15XG5cbmxldCBpc19kdW1teSBsb2MgPVxuICBsb2MuZmlsZSA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZVxuICAmJiBsb2MuZnJvbV9wb3NpdGlvbiA9IGR1bW15X3Bvc2l0aW9uXG4gICYmIGxvYy50b19wb3NpdGlvbiA9IGR1bW15X3Bvc2l0aW9uXG5cbmxldCBpc19hbm5vdGVkX3dpdGhfZHVtbXkgKF8sIGxvYykgPSBpc19kdW1teSBsb2NcblxubGV0IHByaW50IGYgbG9jID1cbiAgbGV0IHByX2YgZiA9XG4gICAgaWYgbG9jLmZpbGUgPD4gXCJcIiB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJGaWxlIFxcXCIlc1xcXCIsIFwiIGxvYy5maWxlXG4gIGluXG4gIGxldCBwcl9sIGYgPVxuICAgIGlmIGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmUgPSBsb2MudG9fcG9zaXRpb24ubGluZSB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwibGluZSAlaVwiIGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmVcbiAgICBlbHNlXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwibGluZXMgJWktJWlcIiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lIGxvYy50b19wb3NpdGlvbi5saW5lXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIldCV0LCBjaGFyYWN0ZXJzICVpLSVpOlwiIHByX2YgcHJfbCBsb2MuZnJvbV9wb3NpdGlvbi5jaHJcbiAgICBsb2MudG9fcG9zaXRpb24uY2hyXG5cbmxldCB0b19zdHJpbmcgbG9jID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnQgbG9jXG5sZXQgcHJpbnRfYW5ub3RlZCBwciBmICh4LCBsKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIlYUAgJWFcIiBwcmludCBsIHByIHhcblxubGV0IHJlYWRfcG9zaXRpb24gcCBsYiA9XG4gIG1hdGNoIFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYiB3aXRoXG4gIHwgYEFzc29jIFsgKFwibGluZVwiLCBgSW50IGxpbmUpOyAoXCJjaHJcIiwgYEludCBjaHIpIF1cbiAgfCBgQXNzb2MgWyAoXCJjaHJcIiwgYEludCBjaHIpOyAoXCJsaW5lXCIsIGBJbnQgbGluZSkgXSAtPlxuICAgIHsgbGluZTsgY2hyIH1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcG9zaXRpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9wb3NpdGlvbiBvYiB7IGxpbmU7IGNociB9ID1cbiAgWW9qc29uLndyaXRlX2Fzc29jIG9iIFsgXCJsaW5lXCIsIGBJbnQgbGluZTsgXCJjaHJcIiwgYEludCBjaHIgXVxuXG5sZXQgdG9fY29tcGFjdF95b2pzb24gZGVjbHMgbG9jID1cbiAgaWYgaXNfZHVtbXkgbG9jIHRoZW5cbiAgICBgTnVsbFxuICBlbHNlXG4gICAgYEFzc29jXG4gICAgICAoKGlmIGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmUgPD4gbG9jLnRvX3Bvc2l0aW9uLmxpbmUgdGhlblxuICAgICAgICAgIGZ1biBsIC0+XG4gICAgICAgIChcImVsaW5lXCIsIGBJbnQgbG9jLnRvX3Bvc2l0aW9uLmxpbmUpIDo6IGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZ1biBsIC0+XG4gICAgICAgIGwpXG4gICAgICAgICBbXG4gICAgICAgICAgICggXCJmaWxlXCIsXG4gICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmQgKE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxvYy5maWxlKSBkZWNsc1xuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgaSAtPiBgSW50IGlcbiAgICAgICAgICAgICB8IE5vbmUgLT4gYFN0cmluZyBsb2MuZmlsZSApO1xuICAgICAgICAgICBcImJsaW5lXCIsIGBJbnQgbG9jLmZyb21fcG9zaXRpb24ubGluZTtcbiAgICAgICAgICAgXCJiY2hyXCIsIGBJbnQgbG9jLmZyb21fcG9zaXRpb24uY2hyO1xuICAgICAgICAgICBcImVjaHJcIiwgYEludCBsb2MudG9fcG9zaXRpb24uY2hyO1xuICAgICAgICAgXSlcblxubGV0IG9mX2NvbXBhY3RfeW9qc29uID8oZmlsZW5hbWVzID0gW3x8XSkgPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IGR1bW15XG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPD0gNSAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZSA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiZmlsZVwiIGwgd2l0aFxuICAgICAgICAgfCBgU3RyaW5nIHggLT4geFxuICAgICAgICAgfCBgSW50IGkgLT4gZmlsZW5hbWVzLihpKVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgb2ZfbGluZSA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiYmxpbmVcIiBsIHdpdGhcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IG9mX2NociA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiYmNoclwiIGwgd2l0aFxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgdG9fY2hyID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJlY2hyXCIgbCB3aXRoXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCB0b19saW5lID1cbiAgICAgICAgIG1hdGNoIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImVsaW5lXCIgeCB3aXRoXG4gICAgICAgICB8IGBOdWxsIC0+IG9mX2xpbmVcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgZmlsZTtcbiAgICAgICAgIGZyb21fcG9zaXRpb24gPSB7IGxpbmUgPSBvZl9saW5lOyBjaHIgPSBvZl9jaHIgfTtcbiAgICAgICAgIHRvX3Bvc2l0aW9uID0geyBsaW5lID0gdG9fbGluZTsgY2hyID0gdG9fY2hyIH07XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgYXJyb3dfbm90YXRpb25cIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcblxubGV0IHlvanNvbl9vZl9hbm5vdGVkID9maWxlbmFtZXMgZiAoeCwgbCkgPVxuICBsZXQganAgPSB0b19jb21wYWN0X3lvanNvbiBmaWxlbmFtZXMgbCBpblxuICBpZiBqcCA9IGBOdWxsIHRoZW5cbiAgICBgQXNzb2MgWyBcInZhbFwiLCBmIHggXVxuICBlbHNlXG4gICAgYEFzc29jIFsgXCJ2YWxcIiwgZiB4OyBcImxvY1wiLCBqcCBdXG5cbmxldCBhbm5vdGVkX29mX3lvanNvbiA/ZmlsZW5hbWVzIGYgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInZhbFwiLCB4KTsgKFwibG9jXCIsIGwpIF0gfCBgQXNzb2MgWyAoXCJsb2NcIiwgbCk7IChcInZhbFwiLCB4KSBdIC0+XG4gICAgZiB4LCBvZl9jb21wYWN0X3lvanNvbiA/ZmlsZW5hbWVzIGxcbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgeCkgXSAtPiBmIHgsIGR1bW15XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuXG5sZXQgd3JpdGVfcmFuZ2Ugb2IgZiA9IFlvanNvbi5CYXNpYy50b19idWZmZXIgb2IgKHRvX2NvbXBhY3RfeW9qc29uIE5vbmUgZilcblxubGV0IHN0cmluZ19vZl9yYW5nZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yYW5nZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfcmFuZ2UgcCBsYiA9XG4gIG9mX2NvbXBhY3RfeW9qc29uID9maWxlbmFtZXM6Tm9uZSAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgcmFuZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3JhbmdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBpc19pbmNsdWRlZF9pbiBmaWxlIHsgbGluZTsgY2hyIH0gcmFuZ2UgPVxuICBmaWxlID0gcmFuZ2UuZmlsZVxuICAmJiBsaW5lID49IHJhbmdlLmZyb21fcG9zaXRpb24ubGluZVxuICAmJiBsaW5lIDw9IHJhbmdlLnRvX3Bvc2l0aW9uLmxpbmVcbiAgJiYgKGxpbmUgPD4gcmFuZ2UuZnJvbV9wb3NpdGlvbi5saW5lIHx8IGNociA+PSByYW5nZS5mcm9tX3Bvc2l0aW9uLmNocilcbiAgJiYgKGxpbmUgPD4gcmFuZ2UudG9fcG9zaXRpb24ubGluZSB8fCBjaHIgPD0gcmFuZ2UudG9fcG9zaXRpb24uY2hyKVxuXG5sZXQgbWVyZ2UgYiBlID1cbiAgaWYgaXNfZHVtbXkgYiB0aGVuXG4gICAgZVxuICBlbHNlIGlmIGlzX2R1bW15IGUgdGhlblxuICAgIGJcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gYXNzZXJ0IChiLmZpbGUgPSBlLmZpbGUpIGluXG4gICAge1xuICAgICAgZmlsZSA9IGIuZmlsZTtcbiAgICAgIGZyb21fcG9zaXRpb24gPSBiLmZyb21fcG9zaXRpb247XG4gICAgICB0b19wb3NpdGlvbiA9IGUudG9fcG9zaXRpb247XG4gICAgfVxuICApXG5cbigqKiBBbm5vdGVkIHlvanNvbiBoZWxwZXJzICopXG5cbmxldCBzdHJpbmdfYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMgPVxuICB5b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZ1xuXG5sZXQgc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzID1cbiAgYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHN0cmluZ19vcHRpb25fYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMgPVxuICB5b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuXG5sZXQgc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcyA9XG4gIGFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gRm9ybWF0XG5cbmxldCBsaXN0aSA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGwgPVxuICBsZXQgcmVjIGF1eCBhY2MgZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyBlbCBdIC0+XG4gICAgICBsZXQgKCkgPSBwcl9lbCBhY2MgZiBlbCBpblxuICAgICAgdHJhaWxpbmcgZlxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgKCkgPSBwcl9lbCBhY2MgZiBoIGluXG4gICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgYXV4IChzdWNjIGFjYykgZiB0XG4gIGluXG4gIGF1eCAwIGYgbFxuXG5sZXQgbGlzdCA/dHJhaWxpbmcgcHJfc2VwIHByX2VsIGYgbCA9XG4gIGxpc3RpID90cmFpbGluZyBwcl9zZXAgKGZ1biBfIGYgeCAtPiBwcl9lbCBmIHgpIGYgbFxuXG5sZXQgc2V0ID90cmFpbGluZyBlbGVtZW50cyBwcl9zZXAgcHJfZWwgZiBzZXQgPVxuICBsaXN0ID90cmFpbGluZyBwcl9zZXAgcHJfZWwgZiAoZWxlbWVudHMgc2V0KVxuXG5sZXQgaGFzaHRibCBwcl9zZXAgcHJfZWwgZiB0YmwgPVxuICBsaXN0IHByX3NlcCBwcl9lbCBmIChIYXNodGJsLmZvbGQgKGZ1biBhIGIgbCAtPiAoYSwgYikgOjogbCkgdGJsIFtdKVxuXG5sZXQgYm90dG9tIGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDhBXFx4QTVcIlxubGV0IG51IGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhDRVxceEJEXCJcbmxldCBlbXB0eV9zZXQgZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4ODhcXHg4NVwiXG5sZXQgY29tbWEgZiA9IGZwcmludGYgZiBcIixAIFwiXG5sZXQgZG90IGYgPSBmcHJpbnRmIGYgXCIuXCJcbmxldCBjb21wYWN0X2NvbW1hIGYgPSBmcHJpbnRmIGYgXCIsQCxcIlxubGV0IGNvbG9uIGYgPSBmcHJpbnRmIGYgXCI7QCBcIlxubGV0IHNwYWNlIGYgPSBwcF9wcmludF9zcGFjZSBmICgpXG5sZXQgY3V0IGYgPSBwcF9wcmludF9jdXQgZiAoKVxubGV0IGVtcHR5IF8gPSAoKVxubGV0IHVuaXQgXyAoKSA9ICgpXG5sZXQgcGFpciBwcGEgcHBiIGYgKGEsIGIpID0gZnByaW50ZiBmIFwiKCVhLCAlYSlcIiBwcGEgYSBwcGIgYlxuXG5sZXQgb3B0aW9uID8od2l0aF9zcGFjZSA9IHRydWUpIHByIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICBmcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBpZiB3aXRoX3NwYWNlIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZiAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gICAgICBwciB4XG5cbmxldCBhcnJheSA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGEgPVxuICBsZXQgcmVjIGF1eCBpIGYgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggYSB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByX2VsIGkgZiBhLihpKSBpblxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIC0gMSB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gcHJfc2VwIGYgaW5cbiAgICAgICAgYXV4IChzdWNjIGkpIGZcbiAgICAgICkgZWxzZSBpZiBpID4gMCB0aGVuXG4gICAgICAgIHRyYWlsaW5nIGZcbiAgICApXG4gIGluXG4gIGF1eCAwIGZcblxubGV0IHBsYWluX2FycmF5IHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVhXCIgaSBwcl9lbCBhLihpKSBpblxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIC0gMSB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCI7QCwldFwiIChhdXggKHN1Y2MgaSkpXG4gICAgKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiW3wldHxdXCIgKGF1eCAwKVxuXG5sZXQgZXJyb3IgcHIgeCA9IGVwcmludGYgXCIlYUAuXCIgKExvYy5wcmludF9hbm5vdGVkIHByKSB4XG5cbmxldCBsaXN0X3RvX3N0cmluZyBwcl9zZXAgcHJfZWwgKCkgbCA9XG4gIGxldCByZWMgYXV4ICgpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IFsgZWwgXSAtPiBwcl9lbCAoKSBlbFxuICAgIHwgaCA6OiB0IC0+IHNwcmludGYgXCIlYSV0JWFcIiBwcl9lbCBoIHByX3NlcCBhdXggdFxuICBpblxuICBhdXggKCkgbFxuXG5sZXQgc2V0X3RvX3N0cmluZyBlbGVtZW50cyBwcl9zZXAgcHJfZWwgKCkgc2V0ID1cbiAgbGlzdF90b19zdHJpbmcgcHJfc2VwIHByX2VsICgpIChlbGVtZW50cyBzZXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IGludFxudHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHQgKiBrZXkgKiB0ICogaW50ICogSW50NjQudFxuKCpOb2RlKGxlZnQsa2V5LHJpZ2h0LGhlaWdodCxhY2MpKilcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcblxubGV0IGFjY3ZhbCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMExcbiAgfCBOb2RlIChfLCBfLCBfLCBfLCBhY2MpIC0+IGFjY1xuXG5sZXQgdG90YWwgPSBhY2N2YWxcblxubGV0IHdlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMExcbiAgfCBOb2RlIChsLCBfLCByLCBfLCBhY2MpIC0+IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpXG5cbmxldCByZWMgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gUHAuZW1wdHlfc2V0IGZcbiAgfCBOb2RlIChsLCBrLCByLCBfLCBhY2MpIGFzIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+PCVkLCVMaSglTGkpPkAsWyVhQCx8JWFALF1cIiBrIGFjYyAod2VpZ2h0IHgpXG4gICAgICBwcmludCBsIHByaW50IHJcblxubGV0IGNyZWF0ZSBsIGtleSBhY2MgciA9XG4gIGxldCBobCA9IGhlaWdodCBsIGluXG4gIGxldCBociA9IGhlaWdodCByIGluXG4gIE5vZGUgKGwsIGtleSwgciwgc3VjYyAobWluIGhsIGhyKSwgYWNjKVxuXG5sZXQgYmFsIGwgeCB3IHIgPVxuICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICBsZXQgaHIgPSBoZWlnaHQgciBpblxuICBpZiBobCA+IGhyICsgMiB0aGVuIChcbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgIHwgTm9kZSAobGwsIGx2LCBsciwgXywgYWNjX2wpIC0+XG4gICAgICBsZXQgYWNjX3IgPSBhY2N2YWwgciBpblxuICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgIGNyZWF0ZSBsbCBsdlxuICAgICAgICAgIChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcilcbiAgICAgICAgICAoY3JlYXRlIGxyIHggKEludDY0LmFkZCAoSW50NjQuYWRkIHcgKGFjY3ZhbCBscikpIGFjY19yKSByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBhY2NfbHJyID0gYWNjdmFsIGxyciBpblxuICAgICAgICAgIGNyZWF0ZVxuICAgICAgICAgICAgKGNyZWF0ZSBsbCBsdiAoSW50NjQuc3ViIGFjY19sIGFjY19scnIpIGxybClcbiAgICAgICAgICAgIGxydlxuICAgICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgICAgKGNyZWF0ZSBscnIgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2xyciB3KSBhY2NfcikgcilcbiAgICAgIClcbiAgKSBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gKFxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLmJhbFwiXG4gICAgfCBOb2RlIChybCwgcnYsIHJyLCBfLCBhY2NfcikgLT5cbiAgICAgIGxldCBhY2NfbCA9IGFjY3ZhbCBsIGluXG4gICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgY3JlYXRlXG4gICAgICAgICAgKGNyZWF0ZSBsIHggKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIChhY2N2YWwgcmwpKSBybClcbiAgICAgICAgICBydlxuICAgICAgICAgIChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcilcbiAgICAgICAgICByclxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBhY2NfcmxsID0gYWNjdmFsIHJsbCBpblxuICAgICAgICAgIGNyZWF0ZVxuICAgICAgICAgICAgKGNyZWF0ZSBsIHggKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19ybGwpIHJsbClcbiAgICAgICAgICAgIHJsdlxuICAgICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgICAgKGNyZWF0ZSBybHIgcnYgKEludDY0LnN1YiBhY2NfciBhY2NfcmxsKSBycilcbiAgICAgIClcbiAgKSBlbHNlIChcbiAgICBsZXQgYWNjX2wgPSBhY2N2YWwgbCBpblxuICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpIHJcbiAgKVxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBOb2RlIF8gLT4gZmFsc2VcblxubGV0IHJlYyBhZGQga2V5IHdlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9kZSAoRW1wdHksIGtleSwgRW1wdHksIDEsIEludDY0Lm9mX2ludCB3ZWlnaHQpXG4gIHwgTm9kZSAobCwga2V5JywgciwgaCwgYWNjKSAtPlxuICAgIGlmIGtleSA9IGtleScgdGhlblxuICAgICAgTm9kZVxuICAgICAgICAoIGwsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHIsXG4gICAgICAgICAgaCxcbiAgICAgICAgICBJbnQ2NC5hZGQgKEludDY0LmFkZCAoSW50NjQub2ZfaW50IHdlaWdodCkgKGFjY3ZhbCBsKSkgKGFjY3ZhbCByKSApXG4gICAgZWxzZSAoXG4gICAgICBsZXQgd2VpZ2h0JyA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgICBpZiBrZXkgPCBrZXknIHRoZW5cbiAgICAgICAgYmFsIChhZGQga2V5IHdlaWdodCBsKSBrZXknIHdlaWdodCcgclxuICAgICAgZWxzZVxuICAgICAgICBiYWwgbCBrZXknIHdlaWdodCcgKGFkZCBrZXkgd2VpZ2h0IHIpXG4gICAgKVxuXG5sZXQgcmVjIGZpbmRfYWNjIGFpbV9hY2MgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IE5vZGUgKGwsIGtleSwgciwgXywgYWNjKSAtPlxuICAgIGlmIGFpbV9hY2MgPj0gYWNjIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFjY19sID0gYWNjdmFsIGwgaW5cbiAgICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgICBpZiBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICBmaW5kX2FjYyBhaW1fYWNjIGxcbiAgICAgIGVsc2UgaWYgSW50NjQuYWRkIGFjY19yIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgIGZpbmRfYWNjIChJbnQ2NC5zdWIgYWltX2FjYyBhY2NfbCkgclxuICAgICAgZWxzZVxuICAgICAgICBrZXlcbiAgICApXG5cbmxldCByZWMgbWVtIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBOb2RlIChsLCBrZXknLCByLCBfLCBfKSAtPlxuICAgIGxldCBjID0gTW9kcy5pbnRfY29tcGFyZSBrZXkga2V5JyBpblxuICAgIGMgPSAwXG4gICAgfHwgbWVtIGtleVxuICAgICAgICAgKGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByKVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBOb2RlIChFbXB0eSwgeCwgciwgXywgYWNjKSAtPiB4LCBJbnQ2NC5zdWIgYWNjIChhY2N2YWwgcilcbiAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fYmluZGluZyBsXG5cbmxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAucmVtb3ZlX21pbl9lbHRcIlxuICB8IE5vZGUgKEVtcHR5LCBfLCByLCBfLCBfKSAtPiByXG4gIHwgTm9kZSAobCwgeCwgciwgXywgYWNjKSAtPlxuICAgIGxldCB3ZWlnaHQgPSBJbnQ2NC5zdWIgKEludDY0LnN1YiBhY2MgKGFjY3ZhbCBsKSkgKGFjY3ZhbCByKSBpblxuICAgIGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHggd2VpZ2h0IHJcblxubGV0IG1lcmdlIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBFbXB0eSwgdCAtPiB0XG4gIHwgdCwgRW1wdHkgLT4gdFxuICB8IE5vZGUgXywgTm9kZSBfIC0+XG4gICAgbGV0IHgsIHcgPSBtaW5fYmluZGluZyB0MiBpblxuICAgIGJhbCB0MSB4IHcgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxubGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBOb2RlIChsLCB2LCByLCBfLCBhY2MpIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIHggdiBpblxuICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgIG1lcmdlIGwgclxuICAgIGVsc2UgKFxuICAgICAgbGV0IHdlaWdodCA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgIGJhbCAocmVtb3ZlIHggbCkgdiB3ZWlnaHQgclxuICAgICAgZWxzZVxuICAgICAgICBiYWwgbCB2IHdlaWdodCAocmVtb3ZlIHggcilcbiAgICApXG4oKlxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTm9kZShsLCB2LCByLCBfLF8pIGFzIHggLT4gaXRlciBmIGw7IGYgdiAod2VpZ2h0IHgpOyBpdGVyIGYgclxuXG5sZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICBtYXRjaCBtIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTm9kZShsLCB2LCByLCBfLF8pIGFzIHggLT4gZm9sZCBmIHIgKGYgdiAod2VpZ2h0IHgpIChmb2xkIGYgbCBhY2N1KSlcbiopXG5cbigqKlJldHVybnMgKGtleSx2YWx1ZSkgYXQgcmFuZG9tIGluIHRoZSB0cmVlKilcbmxldCByYW5kb20gc3RhdGUgbSA9XG4gIHRyeVxuICAgIGxldCByID0gUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlIChhY2N2YWwgbSkgaW5cbiAgICBmaW5kX2FjYyByIG1cbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLnJhbmRvbV92YWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0dXMgPVxuICBbIGBPS1xuICB8IGBBY2NlcHRlZFxuICB8IGBDcmVhdGVkXG4gIHwgYEJhZF9yZXF1ZXN0XG4gIHwgYENvbmZsaWN0XG4gIHwgYE5vdF9mb3VuZFxuICB8IGBSZXF1ZXN0X3RpbWVvdXQgXVxuKCoqIFRoZSBzdWJzZXQgb2YgW0NvaHR0cC5Db2RlLnN0YXR1c10gd2UgbmVlZCAqKVxuXG50eXBlIG1lc3NhZ2UgPSB7XG4gIHNldmVyaXR5OiBMb2dzLmxldmVsO1xuICB0ZXh0OiBzdHJpbmc7ICgqc2hvdWxkIGJlIGFuIGFsZ2VicmFpYyB0eXBlKilcbiAgcmFuZ2U6IExvYy50IG9wdGlvbjtcbn1cblxuKCogTm90ZShBUCk6IE9uIGNob2ljZSBvZiBSZXN1bHRfdXRpbC50XG4gICBJIHRoaW5rIHRoaXMgZGVmaW5pdGlvbiB3YXMgYW4gZXJyb3IsIGFzIGl0IGZvcmNlcyB0byByZWRlZmluZSBmdW5jdGlvbnMgdG8gdXNlIHRoZSBzdHJ1Y3R1cmUsIGFzIHdlbGwgYXMgaW1wZWRlcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCBsd3QgcmVzdWx0cywgd2hlcmUgd2UgY291bGQgaGF2ZSB1c2VkIHRoZSBsd3RfcmVzdWx0IHByaW1pdGl2ZXMgaW5zdGVhZCBvZiBuZXcgZnVuY3Rpb25zIHdpdGggZGlmZmVyZW50IGFyZ3VtZW50IG9yZGVyLCBhbmQgcHJlc2VuY2Ugb2YgYm90aCBBcGkucmVzdWx0IGFuZCBBcGkucmVzdWx0IEx3dC50IChTZWUgYXBpX2NvbW1vbi5tbGkpLlxuICAgV2UgY291bGQgaGF2ZSB1c2VkIGluc3RlYWQ6IGB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsIHN0YXR1cyAqICdiKSBSZXN1bHQucmVzdWx0YCBvciBzaW1pbGFyIHdpdGggYSByZWNvcmQgb3IgZWxzZS5cbiAgIFRoaXMgaXMgY29tcGxleCBhcyB3ZSBoYXZlICdiIHdoaWNoIGlzIGluIHNvbWUgcGxhY2VzIGEgcmVjb3JkIG9mIGxpc3RzIG9mIGV4Y2VwdGlvbnMgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLCBzb21ldGltZXMgbWFkZSB1cCB0byByZWNvcmQgYW4gZXJyb3IsIGFuZCBzb21ldGltZXMgYSBBcGkucmVzdWx0LCB3aXRoICdiIGEgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0LlxuICAgKEluaXRpYWxseSB0aGUgcmVjb3JkIGFsc28gY29udGFpbmVkIGEgbm93LXJlbW92ZWQgYG1lc3NhZ2VgIGZpZWxkLCB3aGljaCB3YXMgdW51c2VkIGFzIHRoZSBtZXNzYWdlcyB3ZXJlIHN0b3JlZCBpbiB0aGUgJ2IpXG5cbiAgIFRoaXMgaXMgYSBsb3Qgb2Ygd29yayBmb3IgZmV3IGJlbmVmaXRzIG5vdywgYnV0IHRoYXQgbWFrZXMgdXNpbmcgcmVzdWx0cyBhIGJpdCBwYWluZnVsLlxuICAgU2VlbXMgYmVzdCB0byB1c2VkIEFwaS5yZXN1bHQgZm9yIG5ldyBzdHVmZiBpbiB0aGUgd2ViYXBwLCB1cGRhdGUgdG8gaXQgd2hlbiBpdCdzIG5vdCwgYW5kIG1heWJlIGtlZXAgdGhlIHJlc3VsdCB3aXRoIHRoZSBleGNlcHRpb25zIHdoZXJlIGl0J3MgdXNlZC5cbiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IHsgdmFsdWU6ICgnYSwgJ2IpIFJlc3VsdC5yZXN1bHQ7IHN0YXR1czogc3RhdHVzIH1cblxubGV0IHdyaXRlX3NldmVyaXR5IG9iIHggPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJyBpblxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiAoTG9ncy5sZXZlbF90b19zdHJpbmcgKFNvbWUgeCkpIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCByZWFkX3NldmVyaXR5IHAgbGIgPVxuICBtYXRjaCBMb2dzLmxldmVsX29mX3N0cmluZyAoWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIpIHdpdGhcbiAgfCBSZXN1bHQuT2sgKFNvbWUgeCkgLT4geFxuICB8IFJlc3VsdC5PayBOb25lIC0+IHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciBcIk1lc3NhZ2Ugb2Ygbm8gc2V2ZXJpdHlcIilcbiAgfCBSZXN1bHQuRXJyb3IgKGBNc2cgeCkgLT5cbiAgICByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgKFwiV2hpbGUgcmVhZGluZyBzZXZlcml0eTogXCIgXiB4KSlcblxubGV0IHdyaXRlX3N0YXR1cyBvYiA9IGZ1bmN0aW9uXG4gIHwgYE9LIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAwXCJcbiAgfCBgQWNjZXB0ZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIyMDJcIlxuICB8IGBDcmVhdGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAxXCJcbiAgfCBgQmFkX3JlcXVlc3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDBcIlxuICB8IGBDb25mbGljdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwOVwiXG4gIHwgYE5vdF9mb3VuZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwNFwiXG4gIHwgYFJlcXVlc3RfdGltZW91dCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwOFwiXG5cbmxldCByZWFkX3N0YXR1cyBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIgd2l0aFxuICB8IDIwMCAtPiBgT0tcbiAgfCAyMDIgLT4gYEFjY2VwdGVkXG4gIHwgMjAxIC0+IGBDcmVhdGVkXG4gIHwgNDAwIC0+IGBCYWRfcmVxdWVzdFxuICB8IDQwOSAtPiBgQ29uZmxpY3RcbiAgfCA0MDQgLT4gYE5vdF9mb3VuZFxuICB8IDQwOCAtPiBgUmVxdWVzdF90aW1lb3V0XG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkpzb25fZXJyb3JcbiAgICAgICAgIChcIlN0YXR1cyBcIiBeIHN0cmluZ19vZl9pbnQgeCBeIFwiIGlzIG91dCBvZiB0aGUgc2NvcGUgb2YgS2FwcGFcIikpXG5cbmxldCB3cml0ZV9tZXNzYWdlIG9iIHsgc2V2ZXJpdHk7IHRleHQ7IHJhbmdlIH0gPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2V2ZXJpdHlcIiB3cml0ZV9zZXZlcml0eSBvYiBzZXZlcml0eSBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInRleHRcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIHRleHQgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHIgLT5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInJhbmdlXCIgTG9jLndyaXRlX3JhbmdlIG9iIHJcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9tZXNzYWdlIHAgbGIgPVxuICBsZXQgc2V2ZXJpdHksIHRleHQsIHJhbmdlID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHMsIHQsIHIpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2V2ZXJpdHlcIiB0aGVuXG4gICAgICAgICAgcmVhZF9zZXZlcml0eSBwIGxiLCB0LCByXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJ0ZXh0XCIgdGhlblxuICAgICAgICAgIHMsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCByXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJyYW5nZVwiIHRoZW5cbiAgICAgICAgICBzLCB0LCBTb21lIChMb2MucmVhZF9yYW5nZSBwIGxiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIChcIk5vIGZpZWxkIFwiIF4ga2V5IF4gXCIgZXhwZWN0ZWQgaW4gbWVzc2FnZVwiKSkpXG4gICAgICAoTG9ncy5BcHAsIFwiXCIsIE5vbmUpIHAgbGJcbiAgaW5cbiAgeyBzZXZlcml0eTsgdGV4dDsgcmFuZ2UgfVxuXG5sZXQgcHJpbnRfbWVzc2FnZSBmIHsgcmFuZ2U7IHRleHQ7IF8gfSA9XG4gIG1hdGNoIHJhbmdlIHdpdGhcbiAgfCBTb21lIHJhbmdlIC0+IExvYy5wcmludF9hbm5vdGVkIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAodGV4dCwgcmFuZ2UpXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgdGV4dFxuXG5sZXQgd3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iID0gZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIHg7IHN0YXR1cyB9IC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIk9rXFxcIixcIjtcbiAgICB3cml0ZV9fb2sgb2IgeDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgIHdyaXRlX3N0YXR1cyBvYiBzdGF0dXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgeDsgc3RhdHVzIH0gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiRXJyb3JcXFwiLFwiO1xuICAgIHdyaXRlX19lcnJvciBvYiB4O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgd3JpdGVfc3RhdHVzIG9iIHN0YXR1cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCBzdHJpbmdfb2ZfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfdF9jb250ZW50IGYgcCBsYiA9XG4gIGxldCB2ID0gZiBwIGxiIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgcCBsYiBpblxuICBsZXQgcyA9IHJlYWRfc3RhdHVzIHAgbGIgaW5cbiAgdiwgc1xuXG5sZXQgcmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yIHAgbGIgPVxuICBsZXQgYXV4X3JlYWRfdCBjbG9zaW5nIHAgbGIgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbGV0IG91dCA9XG4gICAgICBZb2pzb24uQmFzaWMubWFwX2lkZW50IHBcbiAgICAgICAgKGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBtYXRjaCBTdHJpbmcuc3ViIHMgcG9zIGxlbiB3aXRoXG4gICAgICAgICAgfCBcIk9rXCIgLT5cbiAgICAgICAgICAgIGxldCB2LCBzdGF0dXMgPSByZWFkX3RfY29udGVudCByZWFkX19vayBwIGxiIGluXG4gICAgICAgICAgICB7IHZhbHVlID0gUmVzdWx0Lk9rIHY7IHN0YXR1cyB9XG4gICAgICAgICAgfCBcIkVycm9yXCIgLT5cbiAgICAgICAgICAgIGxldCB2LCBzdGF0dXMgPSByZWFkX3RfY29udGVudCByZWFkX19lcnJvciBwIGxiIGluXG4gICAgICAgICAgICB7IHZhbHVlID0gUmVzdWx0LkVycm9yIHY7IHN0YXR1cyB9XG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoWW9qc29uLkpzb25fZXJyb3JcbiAgICAgICAgICAgICAgICAgKFwiRmllbGQgXFxcIlwiIF4geCBeIFwiXFxcIiBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIHJlc3VsdCB0eXBlXCIpKSlcbiAgICAgICAgbGJcbiAgICBpblxuICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgY2xvc2luZyBwIGxiO1xuICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgb3V0XG4gIGluXG4gIG1hdGNoIFlvanNvbi5CYXNpYy5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgfCBgRWRneV9icmFja2V0IC0+IGF1eF9yZWFkX3QgWW9qc29uLkJhc2ljLnJlYWRfZ3QgcCBsYlxuICB8IGBEb3VibGVfcXVvdGUgLT4gcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIFwiTm90IG9mIHJlc3VsdCB0eXBlXCIpXG4gIHwgYFNxdWFyZV9icmFja2V0IC0+IGF1eF9yZWFkX3QgWW9qc29uLkJhc2ljLnJlYWRfcmJyIHAgbGJcblxubGV0IHRfb2Zfc3RyaW5nIHJlYWRfX29rIHJlYWRfX2Vycm9yIHMgPVxuICByZWFkX3QgcmVhZF9fb2sgcmVhZF9fZXJyb3IgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IGxpZnQgPyhva19zdGF0dXMgPSBgT0spID8oZXJyb3Jfc3RhdHVzID0gYEJhZF9yZXF1ZXN0KSA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIF8gYXMgdmFsdWUgLT4geyB2YWx1ZTsgc3RhdHVzID0gb2tfc3RhdHVzIH1cbiAgfCBSZXN1bHQuRXJyb3IgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBlcnJvcl9zdGF0dXMgfVxuXG5sZXQgZm9sZCB+KG9rIDogJ29rIC0+ICdhKSB+KGVycm9yIDogJ2Vycm9yIC0+ICdhKSA6ICgnb2ssICdlcnJvcikgdCAtPiAnYSA9XG4gIGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBvOyBfIH0gLT4gb2sgb1xuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgZTsgXyB9IC0+IGVycm9yIGVcblxubGV0IGJpbmQgOlxuICAgIHR5cGUgb2sgYSBlcnIuXG4gICAgP292ZXJ3cml0ZV9zdGF0dXM6c3RhdHVzIC0+XG4gICAgP2Vycm9yX3N0YXR1czpzdGF0dXMgLT5cbiAgICAob2sgLT4gKGEsIGVycikgUmVzdWx0LnJlc3VsdCkgLT5cbiAgICAob2ssIGVycikgdCAtPlxuICAgIChhLCBlcnIpIHQgPVxuIGZ1biA/b3ZlcndyaXRlX3N0YXR1cyA/KGVycm9yX3N0YXR1cyA9IGBCYWRfcmVxdWVzdCkgb2sgLT4gZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlIC0+IGVcbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIG87IHN0YXR1cyB9IC0+XG4gICAgKG1hdGNoIG9rIG8gd2l0aFxuICAgIHwgUmVzdWx0LkVycm9yIF8gYXMgdmFsdWUgLT4geyB2YWx1ZTsgc3RhdHVzID0gZXJyb3Jfc3RhdHVzIH1cbiAgICB8IFJlc3VsdC5PayBfIGFzIHZhbHVlIC0+XG4gICAgICAobWF0Y2ggb3ZlcndyaXRlX3N0YXR1cyB3aXRoXG4gICAgICB8IE5vbmUgLT4geyB2YWx1ZTsgc3RhdHVzIH1cbiAgICAgIHwgU29tZSBzdGF0dXMgLT4geyB2YWx1ZTsgc3RhdHVzIH0pKVxuXG5sZXQgbWFwIDogdHlwZSBvayBhIGVyci4gKG9rIC0+IGEpIC0+IChvaywgZXJyKSB0IC0+IChhLCBlcnIpIHQgPVxuIGZ1biBvayAtPiBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgc3RhdHVzIH0gLT4geyB2YWx1ZSA9IFJlc3VsdC5PayAob2sgbyk7IHN0YXR1cyB9XG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSAtPiBlXG5cbmxldCBtYXAyIDpcbiAgICB0eXBlIGEgYiBvayBlcnIuIChhIC0+IGIgLT4gb2spIC0+IChhLCBlcnIpIHQgLT4gKGIsIGVycikgdCAtPiAob2ssIGVycikgdCA9XG4gZnVuIGYgYSBiIC0+XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgYTsgXyB9LCB7IHZhbHVlID0gUmVzdWx0Lk9rIGI7IHN0YXR1cyB9IC0+XG4gICAgeyB2YWx1ZSA9IFJlc3VsdC5PayAoZiBhIGIpOyBzdGF0dXMgfVxuICB8ICh7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlKSwgXyAtPiBlXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBfOyBfIH0sICh7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlKSAtPiBlXG5cbmxldCBlcnJvciA/KHN0YXR1cyA9IGBCYWRfcmVxdWVzdCkgKGVycm9yIDogJ2Vycm9yKSA6ICgnb2ssICdlcnJvcikgdCA9XG4gIHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgZXJyb3I7IHN0YXR1cyB9XG5cbmxldCBvayA/KHN0YXR1cyA9IGBPSykgKG9rIDogJ29rKSA6ICgnb2ssICdlcnJvcikgdCA9XG4gIHsgdmFsdWUgPSBSZXN1bHQuT2sgb2s7IHN0YXR1cyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5leGNlcHRpb24gTm90QmlqZWN0aXZlXG5leGNlcHRpb24gQ2xhc2hpbmdcblxubGV0IHNwZWNpYWxfdmFsID0gbWF4X2ludFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgaW1tZWRpYXRlOiBpbnQgYXJyYXk7XG4gIG11dGFibGUgZGVsYXllZDogKHQgKiB0KSBvcHRpb247XG4gIG11dGFibGUgaXNfaWRlbnRpdHk6IGJvb2w7XG4gIG11dGFibGUgZHN0czogTW9kcy5JbnRTZXQudDtcbn1cblxubGV0IGVtcHR5ICgpID1cbiAge1xuICAgIGltbWVkaWF0ZSA9IFt8fF07XG4gICAgZGVsYXllZCA9IE5vbmU7XG4gICAgaXNfaWRlbnRpdHkgPSB0cnVlO1xuICAgIGRzdHMgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgfVxuXG5sZXQgZHVtbXkgPSBlbXB0eSAoKVxuXG5sZXQgaWRlbnRpdHkgbCA9XG4gIGxldCBtYXggPSBMaXN0LmZvbGRfbGVmdCBtYXggMCBsIGluXG4gIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChzdWNjIG1heCkgc3BlY2lhbF92YWwgaW5cbiAgbGV0ICgpID0gTGlzdC5pdGVyIChmdW4geCAtPiBpbW1lZGlhdGUuKHgpIDwtIHgpIGwgaW5cbiAge1xuICAgIGltbWVkaWF0ZTtcbiAgICBkZWxheWVkID0gTm9uZTtcbiAgICBpc19pZGVudGl0eSA9IHRydWU7XG4gICAgZHN0cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG91dCB4IC0+IE1vZHMuSW50U2V0LmFkZCB4IG91dCkgTW9kcy5JbnRTZXQuZW1wdHkgbDtcbiAgfVxuXG5sZXQgaXNfaWRlbnRpdHkgaSA9IGkuaXNfaWRlbnRpdHlcblxubGV0IHJlYyBjb21wdXRlIGsgaSA9XG4gIGxldCB2ID0gaS5pbW1lZGlhdGUuKGspIGluXG4gIGlmIHYgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgIHZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaS5kZWxheWVkIHdpdGhcbiAgICB8IE5vbmUgLT4gc3BlY2lhbF92YWxcbiAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICBpZiBrID49IEFycmF5Lmxlbmd0aCB4LmltbWVkaWF0ZSB0aGVuXG4gICAgICAgIHNwZWNpYWxfdmFsXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHYnID0gY29tcHV0ZSBrIHggaW5cbiAgICAgICAgaWYgdicgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgc3BlY2lhbF92YWxcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHYnJyA9IGNvbXB1dGUgdicgeSBpblxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIGlmIHYnJyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgICAgdidcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdicnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpLmltbWVkaWF0ZS4oaykgPC0gbyBpblxuICAgICAgICAgIG9cbiAgICAgICAgKVxuICAgICAgKVxuICApXG5cbmxldCBmb3JjZSBpID1cbiAgaWYgaS5kZWxheWVkIDw+IE5vbmUgdGhlbiAoXG4gICAgbGV0ICgpID0gQXJyYXkuaXRlcmkgKGZ1biBrIF8gLT4gaWdub3JlIChjb21wdXRlIGsgaSkpIGkuaW1tZWRpYXRlIGluXG4gICAgaS5kZWxheWVkIDwtIE5vbmVcbiAgKVxuXG5sZXQgdG9fbGlzdCBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB2IC0+XG4gICAgICBpZiB2IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgKGksIHYpIDo6IGFjY1xuICAgICAgZWxzZVxuICAgICAgICBhY2MpXG4gICAgW10gaS5pbW1lZGlhdGVcbiAgfD4gTGlzdC5yZXZcblxubGV0IGltYWdlIGkgPSBpLmRzdHNcblxubGV0IHVuc2FmZV9mdW5jdGlvbm5hbF9hZGQgeCB5IGkgPVxuICBsZXQgbCA9IG1heCAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSAoeCArIDEpIGluXG4gIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIGwgc3BlY2lhbF92YWwgaW5cbiAgbGV0ICgpID0gQXJyYXkuYmxpdCBpLmltbWVkaWF0ZSAwIGltbWVkaWF0ZSAwIChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpIGluXG4gIGxldCAoKSA9IGltbWVkaWF0ZS4oeCkgPC0geSBpblxuICB7XG4gICAgaW1tZWRpYXRlO1xuICAgIGRlbGF5ZWQgPSBpLmRlbGF5ZWQ7XG4gICAgaXNfaWRlbnRpdHkgPSBpLmlzX2lkZW50aXR5ICYmIHggPT0geTtcbiAgICBkc3RzID0gTW9kcy5JbnRTZXQuYWRkIHkgaS5kc3RzO1xuICB9XG5cbmxldCBhZGQgfmRlYnVnX21vZGUgeCB5IGkgPVxuICBsZXQgbm90X29rID1cbiAgICBkZWJ1Z19tb2RlICYmIHggPCBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgJiYgaS5pbW1lZGlhdGUuKHgpIDw+IHNwZWNpYWxfdmFsXG4gIGluXG4gIGlmIG5vdF9vayB0aGVuXG4gICAgcmFpc2UgQ2xhc2hpbmdcbiAgZWxzZSAoXG4gICAgbGV0IGknID0gdW5zYWZlX2Z1bmN0aW9ubmFsX2FkZCB4IHkgaSBpblxuICAgIGlmIGkuZHN0cyA9PSBpJy5kc3RzIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIGknXG4gIClcblxubGV0IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB4IHkgaSA9XG4gIGxldCAoKSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgaW5cbiAgICBpZiB4ID49IGwgdGhlbiAoXG4gICAgICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoc3VjYyB4KSBzcGVjaWFsX3ZhbCBpblxuICAgICAgbGV0ICgpID0gQXJyYXkuYmxpdCBpLmltbWVkaWF0ZSAwIGltbWVkaWF0ZSAwIGwgaW5cbiAgICAgIGxldCAoKSA9IGltbWVkaWF0ZS4oeCkgPC0geSBpblxuICAgICAgaS5pbW1lZGlhdGUgPC0gaW1tZWRpYXRlXG4gICAgKSBlbHNlXG4gICAgICBpLmltbWVkaWF0ZS4oeCkgPC0geVxuICBpblxuICBsZXQgKCkgPSBpLmlzX2lkZW50aXR5IDwtIGkuaXNfaWRlbnRpdHkgJiYgeCA9PSB5IGluXG4gIGkuZHN0cyA8LSBNb2RzLkludFNldC5hZGQgeSBpLmRzdHNcblxubGV0IGltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIHggeSBpID1cbiAgbGV0IG5vdF9vayA9XG4gICAgZGVidWdfbW9kZSAmJiB4IDwgQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlICYmIGkuaW1tZWRpYXRlLih4KSA8PiBzcGVjaWFsX3ZhbFxuICBpblxuICBpZiBub3Rfb2sgdGhlblxuICAgIHJhaXNlIENsYXNoaW5nXG4gIGVsc2UgKFxuICAgIGxldCBvcmlnaW4gPSBpLmRzdHMgaW5cbiAgICBsZXQgKCkgPSB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeCB5IGkgaW5cbiAgICBub3QgKGkuZHN0cyA9PSBvcmlnaW4pXG4gIClcblxubGV0IHJlYyBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBtYXggaWQgc3Vic3QgcHJlID0gZnVuY3Rpb25cbiAgfCBfIHdoZW4gcHJlID0gaWQgLT4gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHByZSBtYXggc3Vic3RcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgKCkgPSB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgcHJlIGggc3Vic3QgaW5cbiAgICBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBtYXggaWQgc3Vic3QgaCB0XG5cbmxldCBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0IH5zdG9wX2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcIlJlbmFtaW5nLmN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2xpc3RcIlxuICB8IGggOjogdCAtPlxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9IGN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2lkZW50aXR5IGggc3RvcF9hdCBvdXQgaCB0IGluXG4gICAgb3V0XG5cbmxldCBtZW0geCBpID0geCA8IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSAmJiBjb21wdXRlIHggaSA8PiBzcGVjaWFsX3ZhbFxuXG5sZXQgZm9sZCBmIGkgYWNjID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB2IC0+XG4gICAgICBpZiB2ID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgZiBpIHYgYWNjKVxuICAgIGFjYyBpLmltbWVkaWF0ZVxuXG5sZXQgYXBwbHkgfmRlYnVnX21vZGUgaSB4ID1cbiAgaWYgKG5vdCBpLmlzX2lkZW50aXR5KSB8fCBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgIGxldCBjID0gY29tcHV0ZSB4IGkgaW5cbiAgICBpZiBjID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgcmFpc2UgVW5kZWZpbmVkXG4gICAgZWxzZVxuICAgICAgY1xuICApIGVsc2VcbiAgICB4XG5cbmxldCBjb21wb3NlIH5kZWJ1Z19tb2RlIGV4dGVuc2libGUgaSBpJyA9XG4gIGlmIChub3QgaS5pc19pZGVudGl0eSkgfHwgZXh0ZW5zaWJsZSB8fCBkZWJ1Z19tb2RlIHRoZW5cbiAgICB7XG4gICAgICBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpIHNwZWNpYWxfdmFsO1xuICAgICAgZGVsYXllZCA9IFNvbWUgKGksIGknKTtcbiAgICAgIGlzX2lkZW50aXR5ID0gaS5pc19pZGVudGl0eSAmJiBpJy5pc19pZGVudGl0eTtcbiAgICAgIGRzdHMgPVxuICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgKGZ1biB2JyBzZXQgLT5cbiAgICAgICAgICAgIGxldCB2JycgPSBjb21wdXRlIHYnIGknIGluXG4gICAgICAgICAgICBNb2RzLkludFNldC5hZGQgdicnIHNldClcbiAgICAgICAgICBpLmRzdHMgTW9kcy5JbnRTZXQuZW1wdHk7XG4gICAgfVxuICAoKiBsZXQgc2lnbWEsaXNfaWQgPVxuICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biB4IHkgKG91dCxpc19pZCkgLT5cbiAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geSBpJy5zaWdtYSB3aXRoXG4gICAgICAgICAgIHwgU29tZSB6IC0+IChNb2RzLkludE1hcC5hZGQgeCB6IG91dCxpc19pZCAmJiB4PT16KVxuICAgICAgICAgICB8IE5vbmUgLT4gKG91dCxpc19pZCAmJiB4PT15KVxuICAgICAgICAgKSBpLnNpZ21hIChpLnNpZ21hLHRydWUpXG4gICAgIGluXG4gICAgIHtzaWdtYT1zaWdtYSA7IGlzX2lkZW50aXR5PWlzX2lkIDsgZHN0cyA9IGknLmRzdHN9XG4gICopXG4gIGVsc2VcbiAgICBpJ1xuXG5sZXQgaW52ZXJzZSBpID1cbiAgaWYgaS5pc19pZGVudGl0eSB0aGVuXG4gICAgaVxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgaWYgeSA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICB5IDwgQXJyYXkubGVuZ3RoIG91dC5pbW1lZGlhdGUgJiYgb3V0LmltbWVkaWF0ZS4oeSkgPD4gc3BlY2lhbF92YWxcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgTm90QmlqZWN0aXZlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB5IHggb3V0KVxuICAgICAgICBpLmltbWVkaWF0ZVxuICAgIGluXG4gICAgb3V0XG4gIClcblxubGV0IGNvbXBhcmUgaSBpJyA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgbGV0ICgpID0gZm9yY2UgaScgaW5cbiAgVG9vbHMuYXJyYXlfY29tcGFyZSBNb2RzLmludF9jb21wYXJlIGkuaW1tZWRpYXRlIGknLmltbWVkaWF0ZVxuXG5sZXQgZXF1YWwgaSBpJyA9IGNvbXBhcmUgaSBpJyA9IDBcblxubGV0IG1pbl9lbHQgaSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlIGluXG4gIGxldCByZWMgYXV4X21pbl9lbHQgayA9XG4gICAgaWYgayA+PSBsIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCBvID0gY29tcHV0ZSBrIGkgaW5cbiAgICAgIGlmIG8gPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgIGF1eF9taW5fZWx0IChzdWNjIGspXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKGssIG8pXG4gICAgKVxuICBpblxuICBhdXhfbWluX2VsdCAwXG5cbmxldCBwcmludCBmIGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGlnbm9yZVxuICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgKGZ1biBzcmMgYiBkc3QgLT5cbiAgICAgICAgIGlmIHNyYyA8PiBkc3QgJiYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW4gKFxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVpLT4laVwiXG4gICAgICAgICAgICAgICAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICBQcC5jb21tYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgc3JjIGRzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICB0cnVlXG4gICAgICAgICApIGVsc2VcbiAgICAgICAgICAgYilcbiAgICAgICBmYWxzZSBpLmltbWVkaWF0ZSlcblxubGV0IHByaW50X2Z1bGwgZiBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFsoJWEpQF1cIlxuICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIHNyYyBmIGRzdCAtPlxuICAgICAgICAgaWYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgaWYgc3JjIDw+IGRzdCB0aGVuXG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpLT4laVwiIHNyYyBkc3RcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZiBzcmMpKVxuICAgIGkuaW1tZWRpYXRlXG5cbmxldCB0b195b2pzb24gaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgYExpc3RcbiAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgIChmdW4gc3JjIGFjYyBkc3QgLT5cbiAgICAgICAgIGlmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgIGBMaXN0IFsgYEludCBzcmM7IGBJbnQgZHN0IF0gOjogYWNjXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGFjYylcbiAgICAgICBbXSBpLmltbWVkaWF0ZSlcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTGlzdCBbIGBJbnQgc3JjOyBgSW50IGRzdCBdIGFzIHggLT5cbiAgICAgICAgICAgIGlmIG5vdCAoaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGU6ZmFsc2Ugc3JjIGRzdCBvdXQpIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmcgaXRlbVwiLCB4KSlcbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCByZW5hbWluZyBpdGVtXCIsIHgpKSlcbiAgICAgICAgbFxuICAgIGluXG4gICAgb3V0XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmdcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRyZWUgPSB7XG4gIG1hc2s6IChpbnQsIGludCkgSGFzaHRibC50O1xuICB1bm1hc2s6IChpbnQsIGludCkgSGFzaHRibC50O1xuICBtdXRhYmxlIG5ld19tYXNrOiBpbnQ7XG4gIG11dGFibGUgaW5mX2xpc3Q6IE1vZHMuSW50U2V0LnQ7XG4gIHNpemU6IGludDtcbiAgd2VpZ2h0X29mX25vZGVzOiBmbG9hdCBhcnJheTtcbiAgd2VpZ2h0X29mX3N1YnRyZWVzOiBmbG9hdCBhcnJheTtcbiAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI6IGludCBsaXN0IGFycmF5O1xuICB1bmJhbGFuY2VkX2V2ZW50czogYm9vbCBhcnJheTtcbiAgbGF5ZXI6IGludCBhcnJheTtcbiAgbXV0YWJsZSBjb25zaXN0ZW50OiBib29sO1xufVxuXG5sZXQgbWFzayB0IGkgPVxuICB0cnkgSGFzaHRibC5maW5kIHQubWFzayBpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IG0gPSB0Lm5ld19tYXNrIGluXG4gICAgbGV0ICgpID0gdC5uZXdfbWFzayA8LSBtICsgMSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSB0Lm1hc2sgaSBtIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHQudW5tYXNrIG0gaSBpblxuICAgIG1cblxubGV0IHVubWFzayB0IG0gPVxuICB0cnkgSGFzaHRibC5maW5kIHQudW5tYXNrIG1cbiAgd2l0aCBOb3RfZm91bmQgLT4gaW52YWxpZF9hcmcgXCJSYW5kb21fdHJlZTogaW5jb2hlcmVudCBoYXNoXCJcblxubGV0IGlzX2luZmluaXRlIGkgdCA9XG4gIGxldCBpID0gbWFzayB0IGkgaW5cbiAgTW9kcy5JbnRTZXQubWVtIGkgdC5pbmZfbGlzdFxuXG5sZXQgZmluZCBpIHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIHQud2VpZ2h0X29mX25vZGVzLihpKVxuXG5sZXQgY29weSB0ID1cbiAge1xuICAgIG1hc2sgPSBIYXNodGJsLmNvcHkgdC5tYXNrO1xuICAgIHVubWFzayA9IEhhc2h0YmwuY29weSB0LnVubWFzaztcbiAgICBuZXdfbWFzayA9IHQubmV3X21hc2s7XG4gICAgc2l6ZSA9IHQuc2l6ZTtcbiAgICAoKlx0dG90YWwgPSB0LnRvdGFsIDsqKVxuICAgIHdlaWdodF9vZl9ub2RlcyA9IEFycmF5LmNvcHkgdC53ZWlnaHRfb2Zfbm9kZXM7XG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzID0gQXJyYXkuY29weSB0LndlaWdodF9vZl9zdWJ0cmVlcztcbiAgICBsYXllciA9IEFycmF5LmNvcHkgdC5sYXllcjtcbiAgICBjb25zaXN0ZW50ID0gdC5jb25zaXN0ZW50O1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyID0gQXJyYXkuY29weSB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzID0gQXJyYXkuY29weSB0LnVuYmFsYW5jZWRfZXZlbnRzO1xuICAgIGluZl9saXN0ID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gIH1cblxubGV0IGNvcHlfdmVjdF9pbiB0IHQxID0gQXJyYXkuaXRlcmkgKGZ1biBpIGEgLT4gdDEuKGkpIDwtIGEpIHRcblxubGV0IGNvcHlfaW4gdDEgdDIgPVxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEud2VpZ2h0X29mX25vZGVzIHQyLndlaWdodF9vZl9ub2RlcyBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEud2VpZ2h0X29mX3N1YnRyZWVzIHQyLndlaWdodF9vZl9zdWJ0cmVlcyBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEubGF5ZXIgdDIubGF5ZXIgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLnVuYmFsYW5jZWRfZXZlbnRzIHQyLnVuYmFsYW5jZWRfZXZlbnRzIGluXG4gIGxldCAoKSA9XG4gICAgY29weV92ZWN0X2luIHQxLnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyIHQyLnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyXG4gIGluXG4gIGxldCAoKSA9IHQyLmNvbnNpc3RlbnQgPC0gdDEuY29uc2lzdGVudCBpblxuICB0MlxuXG5sZXQgaXNfcm9vdCBpID0gaSA9IDFcblxubGV0IGRlY2xhcmVfdW5iYWxhbmNlZCBpIHQgPVxuICBsZXQgKCkgPVxuICAgIGlmIG5vdCB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSB0aGVuIChcbiAgICAgIGxldCBsID0gdC5sYXllci4oaSkgaW5cbiAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIDwtIHRydWUgaW5cbiAgICAgIHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGwpIDwtIGkgOjogdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4obClcbiAgICApXG4gIGluXG4gIHQuY29uc2lzdGVudCA8LSBmYWxzZVxuXG5sZXQgdXBkYXRlX3N0cnVjdHVyZSB0ID1cbiAgaWYgdC5jb25zaXN0ZW50IHRoZW5cbiAgICB0XG4gIGVsc2UgKFxuICAgIGxldCBuX2xheWVyID0gdC5sYXllci4odC5zaXplKSBpblxuICAgIGxldCB1cGRhdGVfc3RydWN0dXJlX2F1eCBpID1cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLihpKSA8LVxuICAgICAgICAgICh0LndlaWdodF9vZl9ub2Rlcy4oaSlcbiAgICAgICAgICArLiAoaWYgMiAqIGkgPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgICAgIDAuXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oMiAqIGkpKVxuICAgICAgICAgICsuXG4gICAgICAgICAgaWYgKDIgKiBpKSArIDEgPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgMC5cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oKDIgKiBpKSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIDwtIGZhbHNlIGluXG4gICAgICBpZiBub3QgKGlzX3Jvb3QgaSkgdGhlbiAoXG4gICAgICAgIGxldCBmYXRoZXIgPSBpIC8gMiBpblxuICAgICAgICBkZWNsYXJlX3VuYmFsYW5jZWQgZmF0aGVyIHRcbiAgICAgIClcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGsgPVxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsID0gdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4oaykgaW5cbiAgICAgICAgbGV0ICgpID0gdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4oaykgPC0gW10gaW5cbiAgICAgICAgbGV0ICgpID0gTGlzdC5pdGVyIHVwZGF0ZV9zdHJ1Y3R1cmVfYXV4IGwgaW5cbiAgICAgICAgYXV4IChrIC0gMSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9IGF1eCBuX2xheWVyIGluXG4gICAgbGV0ICgpID0gdC5jb25zaXN0ZW50IDwtIHRydWUgaW5cbiAgICB0XG4gIClcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IHRfbm9kZSA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwLiBpblxuICBsZXQgdF9zdWJ0cmVlID0gQXJyYXkubWFrZSAobiArIDEpIDAuIGluXG4gIGxldCBsYXllciA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwIGluXG4gIGxldCAoKSA9XG4gICAgbGV0IHJlYyBhdXggayBjdXJyZW50X2xheWVyIGxheWVyX2VuZCA9XG4gICAgICBpZiBrIDw9IG4gdGhlblxuICAgICAgICBpZiBrID4gbGF5ZXJfZW5kIHRoZW5cbiAgICAgICAgICBhdXggayAoY3VycmVudF9sYXllciArIDEpICgoMiAqIGxheWVyX2VuZCkgKyAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBsYXllci4oaykgPC0gY3VycmVudF9sYXllciBpblxuICAgICAgICAgIGF1eCAoayArIDEpIGN1cnJlbnRfbGF5ZXIgbGF5ZXJfZW5kXG4gICAgICAgIClcbiAgICBpblxuICAgIGF1eCAxIDEgMVxuICBpblxuICBsZXQgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIgPSBBcnJheS5tYWtlIChsYXllci4obikgKyAxKSBbXSBpblxuICBsZXQgdW5iYWxhbmNlZF9ldmVudHMgPSBBcnJheS5tYWtlIChuICsgMSkgZmFsc2UgaW5cbiAge1xuICAgIHNpemUgPSBuO1xuICAgICgqXHR0b3RhbCA9IDAuOyopXG4gICAgbmV3X21hc2sgPSAxO1xuICAgIG1hc2sgPSBIYXNodGJsLmNyZWF0ZSAobiArIDEpO1xuICAgIHVubWFzayA9IEhhc2h0YmwuY3JlYXRlIChuICsgMSk7XG4gICAgaW5mX2xpc3QgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgICBjb25zaXN0ZW50ID0gdHJ1ZTtcbiAgICB3ZWlnaHRfb2Zfbm9kZXMgPSB0X25vZGU7XG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzID0gdF9zdWJ0cmVlO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzO1xuICAgIGxheWVyO1xuICB9XG5cbmxldCBhZGQgaSB3IHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIGlmIHcgPCAwLiB0aGVuXG4gICAgZmFpbHdpdGggXCJOZWdhdGl2ZSB2YWx1ZSBmb3JiaWRkZW4gaW4gUmFuZG9tX3RyZWVcIlxuICBlbHNlIChcbiAgICBsZXQgdyA9XG4gICAgICBpZiB3ID0gaW5maW5pdHkgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHQuaW5mX2xpc3QgPC0gTW9kcy5JbnRTZXQuYWRkIGkgdC5pbmZfbGlzdCBpblxuICAgICAgICAwLlxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gdC5pbmZfbGlzdCA8LSBNb2RzLkludFNldC5yZW1vdmUgaSB0LmluZl9saXN0IGluXG4gICAgICAgIHdcbiAgICAgIClcbiAgICBpblxuICAgICgqXHRsZXQgdG90YWwgPSB0LnRvdGFsIC0uIHQud2VpZ2h0X29mX25vZGVzLihpKSArLiB3IGluKilcbiAgICBsZXQgKCkgPSB0LndlaWdodF9vZl9ub2Rlcy4oaSkgPC0gdyBpblxuICAgIGxldCAoKSA9IGRlY2xhcmVfdW5iYWxhbmNlZCBpIHQgaW5cbiAgICAoKSAoKnQudG90YWwgPC0gKG1heCAwLjAgdG90YWwpICgqbm90IHNhdGlzZmFjdG9yeSopKilcbiAgKVxuXG5sZXQgdG90YWwgdCA9XG4gIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHQuaW5mX2xpc3QgdGhlbiAoXG4gICAgbGV0IHQgPSB1cGRhdGVfc3RydWN0dXJlIHQgaW5cbiAgICBpZiB0LnNpemUgPSAwIHRoZW5cbiAgICAgIDAuXG4gICAgZWxzZVxuICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKDEpXG4gICkgZWxzZVxuICAgIGluZmluaXR5XG5cbmxldCByYW5kb20gcnMgdCA9XG4gIG1hdGNoIE1vZHMuSW50U2V0LnJhbmRvbSBycyB0LmluZl9saXN0IHdpdGhcbiAgfCBTb21lIHggLT4gdW5tYXNrIHQgeCwgaW5maW5pdHlcbiAgfCBOb25lIC0+XG4gICAgbGV0IHQgPSB1cGRhdGVfc3RydWN0dXJlIHQgaW5cbiAgICBsZXQgYSA9IHRvdGFsIHQgaW5cbiAgICBpZiBhIDw9IDAuIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBSYW5kb20uU3RhdGUuZmxvYXQgcnMgYSBpblxuICAgICAgbGV0IHJlYyBmaW5kIGkgciA9XG4gICAgICAgIGxldCBub2RlID0gdC53ZWlnaHRfb2Zfbm9kZXMuKGkpIGluXG4gICAgICAgIGlmIHIgPCBub2RlIHRoZW5cbiAgICAgICAgICBpLCBub2RlXG4gICAgICAgIGVsc2UgaWYgMiAqIGkgPiB0LnNpemUgdGhlblxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcicgPSByIC0uIG5vZGUgaW5cbiAgICAgICAgICBsZXQgbHNvbiA9IDIgKiBpIGluXG4gICAgICAgICAgbGV0IHJzb24gPSAoMiAqIGkpICsgMSBpblxuICAgICAgICAgIGxldCBsZWZ0ID0gdC53ZWlnaHRfb2Zfc3VidHJlZXMuKGxzb24pIGluXG4gICAgICAgICAgaWYgcicgPCBsZWZ0IHRoZW5cbiAgICAgICAgICAgIGZpbmQgbHNvbiByJ1xuICAgICAgICAgIGVsc2UgaWYgcnNvbiA+IHQuc2l6ZSB0aGVuXG4gICAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kIHJzb24gKHInIC0uIGxlZnQpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgcmVwLCB3ID0gZmluZCAxIHIgaW5cbiAgICAgIHVubWFzayB0IHJlcCwgd1xuICAgIClcblxuKCogVE9ET1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlczogZmxvYXQgYXJyYXkgO1xuICAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI6IGludCBsaXN0IGFycmF5IDtcbiopXG5sZXQgZGVidWdfcHJpbnQgZiB0ID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslc2NvbnNpc3RlbnQ6QCBbXCJcbiAgICAgIChpZiB0LmNvbnNpc3RlbnQgdGhlblxuICAgICAgICAgXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwidW5cIilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gaSBrIC0+XG4gICAgICAgIGxldCBiYWwgPVxuICAgICAgICAgIGlmIHQudW5iYWxhbmNlZF9ldmVudHMuKGspIHRoZW5cbiAgICAgICAgICAgIFwiIVwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCJcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgaW52ID1cbiAgICAgICAgICBpZiBIYXNodGJsLmZpbmQgdC5tYXNrIGsgPSBpIHRoZW5cbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIiBub3QgaW52b2x1dGl2ZVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbmYgPVxuICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQud2VpZ2h0X29mX25vZGVzLihrKSB3aXRoXG4gICAgICAgICAgfCBGUF9pbmZpbml0ZSB3aGVuIE1vZHMuSW50U2V0Lm1lbSBrIHQuaW5mX2xpc3QgLT4gXCJcIlxuICAgICAgICAgIHwgRlBfaW5maW5pdGUgLT4gXCIgbm90IGluIGluZl9saXN0XCJcbiAgICAgICAgICB8IF8gd2hlbiBub3QgKE1vZHMuSW50U2V0Lm1lbSBrIHQuaW5mX2xpc3QpIC0+IFwiXCJcbiAgICAgICAgICB8IEZQX25vcm1hbCB8IEZQX3plcm8gfCBGUF9uYW4gfCBGUF9zdWJub3JtYWwgLT4gXCIgaW4gaW5mX2xpc3RcIlxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlaTolZiVzJXMsQCxcIiBiYWwgaSB0LndlaWdodF9vZl9ub2Rlcy4oaykgaW5mIGludilcbiAgICAgIHQudW5tYXNrXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJdQF1cIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdyYXBoX3BhZ2UgdGl0bGUgP3N1YnRpdGxlIGRlcHMgaGVhZGVyIGNvcmUgZiA9XG4gIGxldCBkZXBlbmRlbmN5IGYgdCA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxzY3JpcHQgc3JjPVxcXCIlc1xcXCIgY2hhcnNldD1cXFwidXRmLThcXFwiPjwvc2NyaXB0PlwiIHRcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PCFkb2N0eXBlIGh0bWw+QCxALDxodG1sPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48aGVhZD5ALDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXQ8L3RpdGxlPkAsXCIgdGl0bGUgaW5cbiAgbGV0ICgpID0gUHAubGlzdCB+dHJhaWxpbmc6UHAuc3BhY2UgUHAuc3BhY2UgZGVwZW5kZW5jeSBmIGRlcHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiV0QF1ALDwvaGVhZD5ALFwiIGhlYWRlciBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxib2R5PkAsPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxoMT5AWyV0JXRAXTwvaDE+QCxcIiB0aXRsZSAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggc3VidGl0bGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHQgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAsPHNtYWxsPiV0PC9zbWFsbD5cIiB0KVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXRALDwvZGl2PkBdQCw8L2JvZHk+QCw8L2h0bWw+QF1ALlwiIGNvcmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmluX2FsZ19vcCA9IE1VTFQgfCBTVU0gfCBESVYgfCBNSU5VUyB8IFBPVyB8IE1PRFVMTyB8IE1JTiB8IE1BWFxudHlwZSB1bl9hbGdfb3AgPSBMT0cgfCBTUVJUIHwgRVhQIHwgU0lOVVMgfCBDT1NJTlVTIHwgVEFOIHwgSU5UIHwgVU1JTlVTXG5cbnR5cGUgc3RhdGVfYWxnX29wID1cbiAgfCBDUFVUSU1FXG4gIHwgVElNRV9WQVJcbiAgfCBFVkVOVF9WQVJcbiAgfCBOVUxMX0VWRU5UX1ZBUlxuICB8IFRNQVhfVkFSXG4gIHwgRU1BWF9WQVJcblxudHlwZSBiaW5fYm9vbF9vcCA9IEFORCB8IE9SXG50eXBlIHVuX2Jvb2xfb3AgPSBOT1RcbnR5cGUgY29tcGFyZV9vcCA9IEdSRUFURVIgfCBTTUFMTEVSIHwgRVFVQUwgfCBESUZGXG50eXBlIHJldl9kZXAgPSBBTEcgb2YgaW50IHwgUlVMRSBvZiBpbnQgfCBNT0RJRiBvZiBpbnRcblxubGV0IGJpbl9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBNVUxUIC0+IFwiKlwiXG4gIHwgU1VNIC0+IFwiK1wiXG4gIHwgRElWIC0+IFwiL1wiXG4gIHwgTUlOVVMgLT4gXCItXCJcbiAgfCBQT1cgLT4gXCJeXCJcbiAgfCBNT0RVTE8gLT4gXCJbbW9kXVwiXG4gIHwgTUlOIC0+IFwiW21pbl1cIlxuICB8IE1BWCAtPiBcIlttYXhdXCJcblxubGV0IGJpbl9hbGdfb3BfaXNfcHJlZml4ID0gZnVuY3Rpb25cbiAgfCBNQVggfCBNSU4gLT4gdHJ1ZVxuICB8IE1VTFQgfCBTVU0gfCBESVYgfCBNSU5VUyB8IFBPVyB8IE1PRFVMTyAtPiBmYWxzZVxuXG5sZXQgcHJpbnRfYmluX2FsZ19vcCBmeCB4IGZ5IHkgZiBvcCA9XG4gIGlmIGJpbl9hbGdfb3BfaXNfcHJlZml4IG9wIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMgKCVhKSAoJWEpXCIgKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKSBmeCB4IGZ5IHlcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJXMgJWEpXCIgZnggeCAoYmluX2FsZ19vcF90b19zdHJpbmcgb3ApIGZ5IHlcblxubGV0IGJpbl9hbGdfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgYmluX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiKlwiIC0+IE1VTFRcbiAgfCBgU3RyaW5nIFwiK1wiIC0+IFNVTVxuICB8IGBTdHJpbmcgXCIvXCIgLT4gRElWXG4gIHwgYFN0cmluZyBcIi1cIiAtPiBNSU5VU1xuICB8IGBTdHJpbmcgXCJeXCIgLT4gUE9XXG4gIHwgYFN0cmluZyBcIlttb2RdXCIgLT4gTU9EVUxPXG4gIHwgYFN0cmluZyBcIlttaW5dXCIgLT4gTUlOXG4gIHwgYFN0cmluZyBcIlttYXhdXCIgLT4gTUFYXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYmluX2FsZ19vcFwiLCB4KSlcblxubGV0IHVuX2FsZ19vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IENPU0lOVVMgLT4gXCJbY29zXVwiXG4gIHwgU0lOVVMgLT4gXCJbc2luXVwiXG4gIHwgVEFOIC0+IFwiW3Rhbl1cIlxuICB8IEVYUCAtPiBcIltleHBdXCJcbiAgfCBTUVJUIC0+IFwiW3NxcnRdXCJcbiAgfCBJTlQgLT4gXCJbaW50XVwiXG4gIHwgTE9HIC0+IFwiW2xvZ11cIlxuICB8IFVNSU5VUyAtPiBcIi1cIlxuXG5sZXQgcHJpbnRfdW5fYWxnX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHVuX2FsZ19vcF90b19zdHJpbmcgb3ApXG5sZXQgdW5fYWxnX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nICh1bl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgdW5fYWxnX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJbY29zXVwiIC0+IENPU0lOVVNcbiAgfCBgU3RyaW5nIFwiW3Npbl1cIiAtPiBTSU5VU1xuICB8IGBTdHJpbmcgXCJbdGFuXVwiIC0+IFRBTlxuICB8IGBTdHJpbmcgXCJbZXhwXVwiIC0+IEVYUFxuICB8IGBTdHJpbmcgXCJbc3FydF1cIiAtPiBTUVJUXG4gIHwgYFN0cmluZyBcIltpbnRdXCIgLT4gSU5UXG4gIHwgYFN0cmluZyBcIltsb2ddXCIgLT4gTE9HXG4gIHwgYFN0cmluZyBcIi1cIiAtPiBVTUlOVVNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCB1bl9hbGdfb3BcIiwgeCkpXG5cbmxldCBzdGF0ZV9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBDUFVUSU1FIC0+IFwiW1RzaW1dXCJcbiAgfCBUSU1FX1ZBUiAtPiBcIltUXVwiXG4gIHwgRVZFTlRfVkFSIC0+IFwiW0VdXCJcbiAgfCBOVUxMX0VWRU5UX1ZBUiAtPiBcIltFLV1cIlxuICB8IFRNQVhfVkFSIC0+IFwiW1RtYXhdXCJcbiAgfCBFTUFYX1ZBUiAtPiBcIltFbWF4XVwiXG5cbmxldCBwcmludF9zdGF0ZV9hbGdfb3AgZiBvcCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RhdGVfYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHN0YXRlX2FsZ19vcF90b19qc29uIG9wID0gYFN0cmluZyAoc3RhdGVfYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHN0YXRlX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW1RzaW1dXCIgLT4gQ1BVVElNRVxuICB8IGBTdHJpbmcgXCJbVF1cIiAtPiBUSU1FX1ZBUlxuICB8IGBTdHJpbmcgXCJbRV1cIiAtPiBFVkVOVF9WQVJcbiAgfCBgU3RyaW5nIFwiW0UtXVwiIC0+IE5VTExfRVZFTlRfVkFSXG4gIHwgYFN0cmluZyBcIltUbWF4XVwiIC0+IFRNQVhfVkFSXG4gIHwgYFN0cmluZyBcIltFbWF4XVwiIC0+IEVNQVhfVkFSXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3Qgc3RhdGVfYWxnX29wXCIsIHgpKVxuXG5sZXQgYmluX2Jvb2xfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBTkQgLT4gXCImJlwiXG4gIHwgT1IgLT4gXCJ8fFwiXG5cbmxldCBwcmludF9iaW5fYm9vbF9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChiaW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5sZXQgYmluX2Jvb2xfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGJpbl9ib29sX29wX3RvX3N0cmluZyBvcClcblxubGV0IGJpbl9ib29sX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCImJlwiIC0+IEFORFxuICB8IGBTdHJpbmcgXCJ8fFwiIC0+IE9SXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYm9vbGVhbiBvcFwiLCB4KSlcblxubGV0IHVuX2Jvb2xfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBOT1QgLT4gXCJbbm90XVwiXG5cbmxldCBwcmludF91bl9ib29sX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHVuX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxubGV0IHVuX2Jvb2xfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKHVuX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgdW5fYm9vbF9vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW25vdF1cIiAtPiBOT1RcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBib29sZWFuIG9wXCIsIHgpKVxuXG5sZXQgY29tcGFyZV9vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEdSRUFURVIgLT4gXCI+XCJcbiAgfCBTTUFMTEVSIC0+IFwiPFwiXG4gIHwgRVFVQUwgLT4gXCI9XCJcbiAgfCBESUZGIC0+IFwiIT1cIlxuXG5sZXQgcHJpbnRfY29tcGFyZV9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChjb21wYXJlX29wX3RvX3N0cmluZyBvcClcbmxldCBjb21wYXJlX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChjb21wYXJlX29wX3RvX3N0cmluZyBvcClcblxubGV0IGNvbXBhcmVfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIj5cIiAtPiBHUkVBVEVSXG4gIHwgYFN0cmluZyBcIjxcIiAtPiBTTUFMTEVSXG4gIHwgYFN0cmluZyBcIj1cIiAtPiBFUVVBTFxuICB8IGBTdHJpbmcgXCIhPVwiIC0+IERJRkZcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBjb21wYXJlX29wXCIsIHgpKVxuXG5sZXQgcHJpbnRfcmV2X2RlcCBmID0gZnVuY3Rpb25cbiAgfCBSVUxFIGlkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJyYXRlX29mX3J1bGUgWyVpXVwiIGlkXG4gICgqXCJyYXRlIG9mIHJ1bGUgJyVhJ1wiIChNb2RlbC5wcmludF9ydWxlIGVudikgaWQqKVxuICB8IEFMRyBpZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxnZWJyYWljIHZhcmlhYmxlIFslaV1cIiBpZFxuICAoKlwidmFyaWFibGUgJyVhJ1wiIChNb2RlbC5wcmludF9hbGcgZW52KSBpZCopXG4gIHwgTU9ESUYgaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcImludGVydmVudGlvbiBbJWldXCIgaWRcblxubGV0IHJldl9kZXBfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBSVUxFIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIlJVTEVcIjsgYEludCBpZCBdXG4gIHwgQUxHIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIkFMR1wiOyBgSW50IGlkIF1cbiAgfCBNT0RJRiBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJNT0RJRlwiOyBgSW50IGlkIF1cblxubGV0IHJldl9kZXBfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJSVUxFXCI7IGBJbnQgaWQgXSAtPiBSVUxFIGlkXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQUxHXCI7IGBJbnQgaWQgXSAtPiBBTEcgaWRcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJNT0RJRlwiOyBgSW50IGlkIF0gLT4gTU9ESUYgaWRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCByZXZfZGVwXCIsIHgpKVxuXG5tb2R1bGUgRGVwU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSByZXZfZGVwXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IHByaW50X3Jldl9kZXBcbmVuZClcblxubW9kdWxlIERlcFNldCA9IERlcFNldE1hcC5TZXRcblxubGV0IGRlcHNldF90b195b2pzb24geCA9XG4gIGBMaXN0IChEZXBTZXQuZm9sZCAoZnVuIHggYSAtPiByZXZfZGVwX3RvX3lvanNvbiB4IDo6IGEpIHggW10pXG5cbmxldCBkZXBzZXRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBEZXBTZXQuZW1wdHlcbiAgfCBgTGlzdCBsIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHggLT4gRGVwU2V0LmFkZCAocmV2X2RlcF9vZl95b2pzb24geCkgYWNjKVxuICAgICAgRGVwU2V0LmVtcHR5IGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgZGVwc2V0XCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gRiBvZiBmbG9hdCB8IEkgb2YgaW50IHwgSTY0IG9mIEludDY0LnRcblxubGV0IGNhc3RfYmluX29wIH5vcF9mID9vcF9pID9vcF9pNjQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgRiB4LCBGIHkgLT4gRiAob3BfZiB4IHkpXG4gIHwgSSB4LCBGIHkgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpIHkpXG4gIHwgRiB4LCBJIHkgLT4gRiAob3BfZiB4IChmbG9hdF9vZl9pbnQgeSkpXG4gIHwgSSB4LCBJIHkgLT5cbiAgICAobWF0Y2ggb3BfaSB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSAoZmxvYXRfb2ZfaW50IHkpKVxuICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgeCB5KSlcbiAgfCBJIHgsIEk2NCB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSAoSW50NjQudG9fZmxvYXQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCAoSW50NjQub2ZfaW50IHgpIHkpKVxuICB8IEk2NCB4LCBJIHkgLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IE5vbmUgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgKGZsb2F0X29mX2ludCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHggKEludDY0Lm9mX2ludCB5KSkpXG4gIHwgSTY0IHgsIEk2NCB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIChJbnQ2NC50b19mbG9hdCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHggeSkpXG4gIHwgRiB4LCBJNjQgeSAtPiBGIChvcF9mIHggKEludDY0LnRvX2Zsb2F0IHkpKVxuICB8IEk2NCB4LCBGIHkgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgeSlcblxubGV0IGNhc3RfdW5fb3AgP29wX2YgP29wX2kgP29wX2k2NCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIG9wX2Ygd2l0aFxuICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9pIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5cIlxuICAgICAgfCBTb21lIG9wX2kgLT4gSSAob3BfaSAoaW50X29mX2Zsb2F0IHgpKSkpXG4gIHwgSTY0IHggLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuX29wXCJcbiAgICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpKSkpXG4gIHwgSSB4IC0+XG4gICAgKG1hdGNoIG9wX2kgd2l0aFxuICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5fb3BcIlxuICAgICAgfCBTb21lIG9wX2YgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpKSkpXG5cbmxldCBjb21wYXJlIG4xIG4yID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCBGIHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBJIHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBGIHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IChmbG9hdF9vZl9pbnQgeSlcbiAgfCBJIHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSAoZmxvYXRfb2ZfaW50IHgpIHlcbiAgfCBJIHgsIEk2NCB5IC0+IFN0ZGxpYi5jb21wYXJlIChJbnQ2NC5vZl9pbnQgeCkgeVxuICB8IEk2NCB4LCBJNjQgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBJNjQgeCwgSSB5IC0+IFN0ZGxpYi5jb21wYXJlIHggKEludDY0Lm9mX2ludCB5KVxuICB8IEYgeCwgSTY0IHkgLT4gU3RkbGliLmNvbXBhcmUgeCAoSW50NjQudG9fZmxvYXQgeSlcbiAgfCBJNjQgeCwgRiB5IC0+IFN0ZGxpYi5jb21wYXJlIChJbnQ2NC50b19mbG9hdCB4KSB5XG5cbmxldCBpc19ncmVhdGVyIG4xIG4yID0gY29tcGFyZSBuMSBuMiA+IDBcbmxldCBpc19zbWFsbGVyIG4xIG4yID0gY29tcGFyZSBuMSBuMiA8IDBcbmxldCBpc19lcXVhbCBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPSAwXG5sZXQgYWRkIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCArLiApIH5vcF9pOiggKyApIH5vcF9pNjQ6SW50NjQuYWRkIG4xIG4yXG5sZXQgc3ViIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCAtLiApIH5vcF9pOiggLSApIH5vcF9pNjQ6SW50NjQuc3ViIG4xIG4yXG5sZXQgbXVsdCBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggKi4gKSB+b3BfaTooICogKSB+b3BfaTY0OkludDY0Lm11bCBuMSBuMlxubGV0IG1pbiBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOm1pbiB+b3BfaTptaW4gfm9wX2k2NDptaW4gbjEgbjJcbmxldCBtYXggbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjptYXggfm9wX2k6bWF4IH5vcF9pNjQ6bWF4IG4xIG4yXG5cbmxldCByZW0gbjEgbjIgPVxuICBjYXN0X2Jpbl9vcCB+b3BfaTooIG1vZCApIH5vcF9pNjQ6SW50NjQucmVtIH5vcF9mOm1vZF9mbG9hdCBuMSBuMlxuXG5sZXQgaW50ZXJuYWxfZGl2IG4xIG4yID1cbiAgY2FzdF9iaW5fb3Agfm9wX2k6KCAvICkgfm9wX2k2NDpJbnQ2NC5kaXYgfm9wX2Y6KCAvLiApIG4xIG4yXG5cbmxldCBzdWNjIG4gPSBjYXN0X3VuX29wIH5vcF9mOigoICsuICkgMS4pIH5vcF9pOnN1Y2Mgfm9wX2k2NDpJbnQ2NC5zdWNjIG5cbmxldCBwcmVkIG4gPSBjYXN0X3VuX29wIH5vcF9mOihmdW4geCAtPiB4IC0uIDEuKSB+b3BfaTpwcmVkIH5vcF9pNjQ6SW50NjQucHJlZCBuXG5sZXQgbmVnIG4gPSBjYXN0X3VuX29wIH5vcF9mOiggfi0uICkgfm9wX2k6KCB+LSApIH5vcF9pNjQ6SW50NjQubmVnIG5cblxubGV0IHRvX2Zsb2F0IG4gPVxuICBtYXRjaCBuIHdpdGhcbiAgfCBJIHggLT4gU29tZSAoZmxvYXRfb2ZfaW50IHgpXG4gIHwgSTY0IHggLT4gU29tZSAoSW50NjQudG9fZmxvYXQgeClcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IFNvbWUgeFxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gTm9uZSlcblxubGV0IHRvX2ludCBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgRiB4IC0+IGludF9vZl9mbG9hdCB4XG4gIHwgSSB4IC0+IHhcbiAgfCBJNjQgeCAtPiBJbnQ2NC50b19pbnQgeCAoKk1pZ2h0IGV4Y2VlZCB0aGViaWdnZXN0IDMyIGJpdHMgaW50ZWdlciopXG5cbmxldCB6ZXJvID0gSSAwXG5cbmxldCBpc196ZXJvID0gZnVuY3Rpb25cbiAgfCBJNjQgeCAtPiB4ID0gSW50NjQuemVyb1xuICB8IEkgeCAtPiB4ID0gMFxuICB8IEYgeCAtPiBUb29scy5mbG9hdF9pc196ZXJvIHhcblxubGV0IG9uZSA9IEkgMVxuXG5sZXQgaXNfc3RyaWN0bHlfcG9zaXRpdmUgPSBmdW5jdGlvblxuICB8IEYgeCAtPiB4ID4gMC5cbiAgfCBJIHggLT4geCA+IDBcbiAgfCBJNjQgeCAtPiB4ID4gSW50NjQuemVyb1xuXG5sZXQgcG9zX3BvdyBuMSBuMiA9XG4gIGNhc3RfYmluX29wIH5vcF9mOiggKiogKSB+b3BfaTpUb29scy5wb3cgfm9wX2k2NDpUb29scy5wb3c2NCBuMSBuMlxuXG5sZXQgcG93IHggbiA9XG4gIGlmIGlzX3plcm8gbiB8fCBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW5cbiAgICBwb3NfcG93IHggblxuICBlbHNlIChcbiAgICBtYXRjaCB0b19mbG9hdCB4IHdpdGhcbiAgICB8IFNvbWUgeCAtPiBwb3NfcG93IChGICgxLiAvLiB4KSkgKG5lZyBuKVxuICAgIHwgTm9uZSAtPiBGIG5hblxuICApXG5cbmxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKHN0cmluZ19vZl9mbG9hdCB4KVxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcblxubGV0IHByZXR0eV9wcmludCBmID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVnXCIgeFxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcblxubGV0IHByaW50X29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBJIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgeFxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKHN0cmluZ19vZl9mbG9hdCB4KVxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gKCkpXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEYgeCAtPiBzdHJpbmdfb2ZfZmxvYXQgeFxuICB8IEk2NCB4IC0+IEludDY0LnRvX3N0cmluZyB4XG4gIHwgSSB4IC0+IHN0cmluZ19vZl9pbnQgeFxuXG5sZXQgcmVjIGl0ZXJpIGYgeCBuID1cbiAgaWYgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuXG4gICAgaXRlcmkgZiAoZiBuIHgpIChwcmVkIG4pXG4gIGVsc2VcbiAgICB4XG5cbmxldCByZWMgbWF5YmVfaXRlcmkgZiB4IG4gPVxuICBpZiBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW4gKFxuICAgIG1hdGNoIGYgbiB4IHdpdGhcbiAgICB8IE5vbmUgLT4geFxuICAgIHwgU29tZSB4JyAtPiBtYXliZV9pdGVyaSBmIHgnIChwcmVkIG4pXG4gICkgZWxzZVxuICAgIHhcblxubGV0IG9mX3N0cmluZyB4ID1cbiAgdHJ5IEkgKGludF9vZl9zdHJpbmcgeCkgd2l0aCBGYWlsdXJlIF8gLT4gRiAoZmxvYXRfb2Zfc3RyaW5nIHgpXG5cbmxldCB0b195b2pzb24gPSBmdW5jdGlvblxuICB8IEkgeCAtPiBgSW50IHhcbiAgfCBJNjQgeCAtPiBgU3RyaW5nIChJbnQ2NC50b19zdHJpbmcgeClcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGBGbG9hdCB4XG4gICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiBgU3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgeCkpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBJbnQgeCAtPiBJIHhcbiAgfCBgRmxvYXQgeCAtPiBGIHhcbiAgfCBgU3RyaW5nIG4gYXMgeCAtPlxuICAgICh0cnkgSTY0IChJbnQ2NC5vZl9zdHJpbmcgbilcbiAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAodHJ5IEYgKGZsb2F0X29mX3N0cmluZyBuKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBOYnJcIiwgeCkpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBOYnJcIiwgeCkpXG5cbmxldCB3cml0ZV90IG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b195b2pzb24gZilcblxubGV0IHN0cmluZ19vZl90ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX3QgcCBsYiA9IG9mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxubGV0IHRfb2Zfc3RyaW5nIHMgPSByZWFkX3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IG9mX2Jpbl9hbGdfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLk1VTFQgLT4gbXVsdFxuICB8IE9wZXJhdG9yLlNVTSAtPiBhZGRcbiAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICBmdW4geCB5IC0+XG4gICAgICBpZiAobm90IChpc196ZXJvIHkpKSAmJiBpc196ZXJvIChyZW0geCB5KSB0aGVuXG4gICAgICAgIGludGVybmFsX2RpdiB4IHlcbiAgICAgIGVsc2VcbiAgICAgICAgY2FzdF9iaW5fb3Agfm9wX2Y6KCAvLiApIHggeVxuICB8IE9wZXJhdG9yLk1JTlVTIC0+IHN1YlxuICB8IE9wZXJhdG9yLk1PRFVMTyAtPiByZW1cbiAgfCBPcGVyYXRvci5NSU4gLT4gbWluXG4gIHwgT3BlcmF0b3IuTUFYIC0+IG1heFxuICB8IE9wZXJhdG9yLlBPVyAtPiBwb3dcblxubGV0IG9mX3VuX2FsZ19vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuTE9HIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6bG9nIHhcbiAgfCBPcGVyYXRvci5TUVJUIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6c3FydCB4XG4gIHwgT3BlcmF0b3IuRVhQIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6ZXhwIHhcbiAgfCBPcGVyYXRvci5TSU5VUyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnNpbiB4XG4gIHwgT3BlcmF0b3IuQ09TSU5VUyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmNvcyB4XG4gIHwgT3BlcmF0b3IuVEFOIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6dGFuIHhcbiAgfCBPcGVyYXRvci5JTlQgLT5cbiAgICBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9pOihmdW4gbiAtPiBuKSB+b3BfaTY0OihmdW4gbiAtPiBuKSB4XG4gIHwgT3BlcmF0b3IuVU1JTlVTIC0+IG5lZ1xuXG5sZXQgb2ZfY29tcGFyZV9vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuR1JFQVRFUiAtPiBpc19ncmVhdGVyXG4gIHwgT3BlcmF0b3IuU01BTExFUiAtPiBpc19zbWFsbGVyXG4gIHwgT3BlcmF0b3IuRVFVQUwgLT4gaXNfZXF1YWxcbiAgfCBPcGVyYXRvci5ESUZGIC0+IGZ1biB2IHYnIC0+IG5vdCAoaXNfZXF1YWwgdiB2JylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBTeW50YXhfRXJyb3Igb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5leGNlcHRpb24gTWFsZm9ybWVkX0RlY2wgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5leGNlcHRpb24gSW50ZXJuYWxfRXJyb3Igb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5cbmxldCB3YXJuaW5nX2J1ZmZlciA6IChMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSkgbGlzdCByZWYgPVxuICByZWYgW11cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgZGVjbHM6IChzdHJpbmcgKiAnYSkgYXJyYXk7IGZpbmRlcjogaW50IE1vZHMuU3RyaW5nTWFwLnQgfVxuXG5sZXQgbmFtZV9tYXBfb2ZfYXJyYXkgP2ZvcmJpZGRlbiBhID1cbiAgbGV0IGJhZCA9XG4gICAgbWF0Y2ggZm9yYmlkZGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gLT4gZmFsc2VcbiAgICB8IFNvbWUgcyAtPiBmdW4geCAtPiBNb2RzLlN0cmluZ1NldC5tZW0geCBzXG4gIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgbWFwICgoeCwgcG9zKSwgXykgLT5cbiAgICAgIGlmIGJhZCB4IHx8IE1vZHMuU3RyaW5nTWFwLm1lbSB4IG1hcCB0aGVuXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJMYWJlbCAnXCIgXiB4IF4gXCInIGFscmVhZHkgZGVmaW5lZFwiLCBwb3MpKVxuICAgICAgZWxzZVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgeCBpIG1hcClcbiAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBhXG5cbmxldCBjcmVhdGUgP2ZvcmJpZGRlbiBhID1cbiAge1xuICAgIGRlY2xzID0gQXJyYXkubWFwIChmdW4gKCh4LCBfKSwgeSkgLT4geCwgeSkgYTtcbiAgICBmaW5kZXIgPSBuYW1lX21hcF9vZl9hcnJheSA/Zm9yYmlkZGVuIGE7XG4gIH1cblxubGV0IGNyZWF0ZV9mcm9tX2xpc3QgP2ZvcmJpZGRlbiBsID0gY3JlYXRlID9mb3JiaWRkZW4gKEFycmF5Lm9mX2xpc3QgbClcblxuKCogVE9ETyBzZWUgaWYgd2Ugc2hvdWxkIGtlZXAgdGhpcyAqKVxubGV0IGNyZWF0ZV9ub19sb2MgP2ZvcmJpZGRlbiBhID1cbiAgQXJyYXkubWFwIChmdW4gKHgsIHkpIC0+ICh4LCBMb2MuZHVtbXkpLCB5KSBhIHw+IGNyZWF0ZSA/Zm9yYmlkZGVuXG5cbmxldCBzaXplIG5kID0gQXJyYXkubGVuZ3RoIG5kLmRlY2xzXG5sZXQgZWx0X25hbWUgbmQgaSA9IGZzdCBuZC5kZWNscy4oaSlcblxubGV0IGVsdF9pZCA/KGtpbmQgPSBcImVsZW1lbnRcIikgbmQgKHMsIHBvcykgPVxuICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzIG5kLmZpbmRlciB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiXFxcIiVzXFxcIiBpcyBub3QgYSBkZWNsYXJlZCAlcy5cIiBzIGtpbmQsIHBvcykpXG5cbmxldCBwcmludCB+c2VwIHBwIGYgbmQgPVxuICBQcC5hcnJheSBzZXAgKGZ1biBpIGYgKG4sIGVsKSAtPiBwcCBpIG4gZiBlbCkgZiBuZC5kZWNsc1xuXG5sZXQgZGVidWdfcHJpbnQgcHIgZiBuZCA9XG4gIHByaW50IH5zZXA6UHAuc3BhY2VcbiAgICAoZnVuIGkgbiBmIGVsIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVpPiVzOiBAWzwyPiVhQF1AXVwiIGkgbiBwciBlbClcbiAgICBmIG5kXG5cbmxldCBmb2xkIGYgYWNjIG5kID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgYWNjIChuYSwgeCkgLT4gZiBpIG5hIGFjYyB4KSBhY2MgbmQuZGVjbHNcblxubGV0IG1hcCBmIG5kID1cbiAgeyBkZWNscyA9IEFycmF5Lm1hcCAoZnVuIChzLCB2KSAtPiBzLCBmIHMgdikgbmQuZGVjbHM7IGZpbmRlciA9IG5kLmZpbmRlciB9XG5cbmxldCBtYXBpIGYgbmQgPVxuICB7XG4gICAgZGVjbHMgPSBBcnJheS5tYXBpIChmdW4gaSAocywgdikgLT4gcywgZiBpIHMgdikgbmQuZGVjbHM7XG4gICAgZmluZGVyID0gbmQuZmluZGVyO1xuICB9XG5cbmxldCBlbHRfdmFsIG5kIGkgPSBzbmQgbmQuZGVjbHMuKGkpXG5cbmxldCB0b19qc29uIGF1eCBuZCA9XG4gIGBMaXN0XG4gICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICh4LCBhKSBhY2MgLT4gYEFzc29jIFsgXCJuYW1lXCIsIGBTdHJpbmcgeDsgXCJkZWNsXCIsIGF1eCBhIF0gOjogYWNjKVxuICAgICAgIG5kLmRlY2xzIFtdKVxuXG5sZXQgb2ZfanNvbiBhdXggPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT5cbiAgICBsZXQgZGVjbHMgPVxuICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIGBTdHJpbmcgeCk7IChcImRlY2xcIiwgYSkgXVxuICAgICAgICAgIHwgYEFzc29jIFsgKFwiZGVjbFwiLCBhKTsgKFwibmFtZVwiLCBgU3RyaW5nIHgpIF0gLT5cbiAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IHgsIGF1eCBhXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSB2YWxpZCBOYW1lZERlY2wgZWxlbWVudFwiLCB4KSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIGNyZWF0ZSBkZWNsc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgdmFsaWQgTmFtZWREZWNsXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1cnJlbmNlIHAgbGlzdCA9XG4gIGxldCByZWMgYXV4IGxpc3QgYnVmZmVyIG91dHB1dCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBoIDo6IHQgd2hlbiBwIGggLT4gYXV4IHQgW10gKChoIDo6IGJ1ZmZlcikgOjogb3V0cHV0KVxuICAgIHwgaCA6OiB0IC0+IGF1eCB0IChoIDo6IGJ1ZmZlcikgb3V0cHV0XG4gICAgfCBbXSAtPiBvdXRwdXRcbiAgaW5cbiAgbGV0IHJldl9jb25jYXQgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKExpc3QuZm9sZF9sZWZ0IChmdW4gb3V0cHV0IGEgLT4gYSA6OiBvdXRwdXQpKSBbXSBsaXN0XG4gIGluXG4gIHJldl9jb25jYXQgKGF1eCBsaXN0IFtdIFtdKVxuXG5sZXQgcmVjIGxhc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwibGlzdF9sYXN0XCJcbiAgfCBbIHggXSAtPiB4XG4gIHwgXyA6OiBsIC0+IGxhc3QgbFxuXG5sZXQgcmVjIGF1eF9wb3BfbGFzdCBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwibGlzdF9wb3BfbGFzdFwiXG4gIHwgWyB4IF0gLT4gTGlzdC5yZXYgYWNjLCB4XG4gIHwgaCA6OiB0IC0+IGF1eF9wb3BfbGFzdCAoaCA6OiBhY2MpIHRcblxubGV0IHBvcF9sYXN0IGwgPSBhdXhfcG9wX2xhc3QgW10gbFxuXG5sZXQgY29uc19vcHRpb24gaCB0ID1cbiAgbWF0Y2ggaCB3aXRoXG4gIHwgU29tZSB4IC0+IHggOjogdFxuICB8IE5vbmUgLT4gdFxuXG5sZXQgcmVjIHNtYXJ0X2ZpbHRlciBmID0gZnVuY3Rpb25cbiAgfCB0IDo6IHEgYXMgbCAtPlxuICAgIGxldCBxJyA9IHNtYXJ0X2ZpbHRlciBmIHEgaW5cbiAgICBpZiBmIHQgdGhlblxuICAgICAgaWYgcSA9PSBxJyB0aGVuXG4gICAgICAgIGxcbiAgICAgIGVsc2VcbiAgICAgICAgdCA6OiBxJ1xuICAgIGVsc2VcbiAgICAgIHEnXG4gIHwgbCAtPiBsXG5cbmxldCByZWMgc21hcnRfbWFwIGYgPSBmdW5jdGlvblxuICB8IHQgOjogcSBhcyBsIC0+XG4gICAgbGV0IHEnID0gc21hcnRfbWFwIGYgcSBpblxuICAgIGxldCB0JyA9IGYgdCBpblxuICAgIGlmIHQnID09IHQgJiYgcScgPT0gcSB0aGVuXG4gICAgICBsXG4gICAgZWxzZVxuICAgICAgdCcgOjogcSdcbiAgfCBsIC0+IGxcblxubGV0IHJldl9tYXBpIGYgbCA9XG4gIGxldCByZWMgYXV4X21hcGkgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHEgLT4gYXV4X21hcGkgKHByZWQgaSkgKGYgaSBoIDo6IGFjYykgcVxuICBpblxuICBhdXhfbWFwaSAoTGlzdC5sZW5ndGggbCAtIDEpIFtdIGxcblxubGV0IHJlYyBtYXBfb3B0aW9uIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiBxIC0+IGNvbnNfb3B0aW9uIChmIGgpIChtYXBfb3B0aW9uIGYgcSlcblxubGV0IGV4aXN0c191bmlxIGYgbCA9XG4gIGxldCByZWMgc2Vjb25kID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IGggOjogdCAtPiAobm90IChmIGgpKSAmJiBzZWNvbmQgdFxuICBpblxuICBsZXQgcmVjIGZpcnN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGYgaCB0aGVuXG4gICAgICAgIHNlY29uZCB0XG4gICAgICBlbHNlXG4gICAgICAgIGZpcnN0IHRcbiAgaW5cbiAgZmlyc3QgbFxuXG5sZXQgbWVyZ2VfdW5pcSBjbXAgbDEgbDIgPVxuICBsZXQgcmVjIGF1eF9tZXJnZV91bmlxIGwxIGwyIGsgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgXyAtPiBrIGwyXG4gICAgfCBfLCBbXSAtPiBrIGwxXG4gICAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIHQxIGwyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MSB0aGVuXG4gICAgICAgICAgICAgIGsgbDFcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDEgOjogbykpXG4gICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgYXV4X21lcmdlX3VuaXEgbDEgdDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQyIHRoZW5cbiAgICAgICAgICAgICAgayBsMlxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMiA6OiBvKSlcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X21lcmdlX3VuaXEgdDEgdDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQxIHRoZW5cbiAgICAgICAgICAgICAgayBsMVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMSA6OiBvKSlcbiAgaW5cbiAgYXV4X21lcmdlX3VuaXEgbDEgbDIgKGZ1biB4IC0+IHgpXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgZiBsIGFjYyA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IGggOjogdCAtPiByZXZfbWFwX2FwcGVuZCBmIHQgKGYgaCA6OiBhY2MpXG5cbmxldCByZWMgbWFwX2ZsYXR0ZW4gZiA9IGZ1bmN0aW9uXG4gICgqIGxpc3RfYmluZCAqKVxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiB0IC0+IExpc3QuYXBwZW5kIChmIGgpIChtYXBfZmxhdHRlbiBmIHQpXG4oKiBMaXN0LnJldlxuICAgKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IExpc3QucmV2X2FwcGVuZCB5IHgpIFtdIChMaXN0LnJldl9tYXAgZiBsKSlcbiopXG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZG91YmxlIGwgPVxuICBsZXQgcmVjIGF1eCBsYXN0IGwgYWNjID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGggOjogcSB3aGVuIGxhc3QgPSBoIC0+IGF1eCBsYXN0IHEgYWNjXG4gICAgfCBoIDo6IHEgLT4gYXV4IGggcSAoaCA6OiBhY2MpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoIDo6IHEgLT4gYXV4IGggcSBbIGggXVxuXG5sZXQgcmVjIGZvbGRfcmlnaHRfbWFwIGYgbCB4ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW10sIHhcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgdCcsIHgnID0gZm9sZF9yaWdodF9tYXAgZiB0IHggaW5cbiAgICBsZXQgaCcsIHgnJyA9IGYgaCB4JyBpblxuICAgIGgnIDo6IHQnLCB4JydcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHhcbiAgfCBbXSwgXyA6OiBfIHwgXyA6OiBfLCBbXSAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImxpc3RfZm9sZF9sZWZ0MlwiKVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPiBmb2xkX2xlZnQyIGYgKGYgeCBoMSBoMikgdDEgdDJcblxubGV0IHJhbmRvbSBycyBsID0gTGlzdC5udGggbCAoUmFuZG9tLlN0YXRlLmludCBycyAoTGlzdC5sZW5ndGggbCkpXG5cbmxldCBmaW5kX29wdGlvbiAocCA6ICdhIC0+IGJvb2wpIChsIDogJ2EgbGlzdCkgOiAnYSBvcHRpb24gPVxuICB0cnkgU29tZSAoTGlzdC5maW5kIHAgbCkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggJCQgKSA9IGNvbnNfb3B0aW9uXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgYmFnOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICBtdXRhYmxlIHNpemU6IGludDtcbiAgZGljdDogKGludCwgaW50KSBIYXNodGJsLnQ7XG59XG5cbmxldCBjcmVhdGUgc2l6ZSA9XG4gIHsgc2l6ZSA9IDA7IGJhZyA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIHNpemUgKC0xKTsgZGljdCA9IEhhc2h0YmwuY3JlYXRlIHNpemUgfVxuXG5sZXQgcHJpbnQgZiBzID1cbiAgaWYgcy5zaXplIDw9IDAgdGhlblxuICAgIFBwLmVtcHR5X3NldCBmXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsgXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIGkgPSAwIHRvIHMuc2l6ZSAtIDIgZG9cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyBpKTtcbiAgICAgICAgUHAuY29tbWEgZlxuICAgICAgZG9uZVxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ludCBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyAocy5zaXplIC0gMSkpIGluXG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIH1cIlxuICApXG5cbmxldCBpc19lbXB0eSBzID0gcy5zaXplID0gMFxuXG5sZXQgYWRkIHggcyA9XG4gIGlmIG5vdCAoSGFzaHRibC5tZW0gcy5kaWN0IHgpIHRoZW4gKFxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHMuYmFnIHMuc2l6ZSB4IGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHMuZGljdCB4IHMuc2l6ZSBpblxuICAgIHMuc2l6ZSA8LSBzdWNjIHMuc2l6ZVxuICApXG5cbmxldCByZW1vdmUgeCBzID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IEhhc2h0YmwuZmluZCBzLmRpY3QgeCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIHMuZGljdCB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBvcyA8IHMuc2l6ZSAtIDEgdGhlbiAoXG4gICAgICAgIGxldCBsYXN0ID0gTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgKHMuc2l6ZSAtIDEpIGluXG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBzLmRpY3QgbGFzdCBwb3MgaW5cbiAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgcy5iYWcgcG9zIGxhc3RcbiAgICAgIClcbiAgICBpblxuICAgIHMuc2l6ZSA8LSBwcmVkIHMuc2l6ZVxuICB3aXRoIE5vdF9mb3VuZCAtPiAoKVxuXG5sZXQgc2l6ZSBzID0gcy5zaXplXG5cbmxldCByYW5kb20gcnMgcyA9XG4gIGlmIHMuc2l6ZSA8IDEgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIChSYW5kb20uU3RhdGUuaW50IHJzIHMuc2l6ZSkpXG5cbmxldCBmb2xkIGYgcyBhY2MgPVxuICBUb29scy5yZWN0aSAoZnVuIGFjYyBpIC0+IGYgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIGkpIGFjYykgYWNjIHMuc2l6ZVxuXG5sZXQgbWVtIHggcyA9IEhhc2h0YmwubWVtIHMuZGljdCB4XG4iLCJ0eXBlICdhIHQgPSAnYSBsaXN0XG5cbmxldCBjcmVhdGUgX2kgX2RlZmF1bHQgPSBbXVxubGV0IGFkZCB4IHQgPSB4IDo6IHRcbmxldCBpdGVyIGYgdCA9IExpc3QuaXRlciBmIChMaXN0LnJldiB0KVxubGV0IGNsZWFuIF8gPSBbXVxuIiwibW9kdWxlIHR5cGUgSGFzaCA9IHNpZ1xuICB0eXBlIGhhc2hlZF9saXN0XG4gIHR5cGUgZWx0XG4gIHR5cGUgY2FjaGVcblxuICB2YWwgaW50X29mX2hhc2hlZF9saXN0IDogaGFzaGVkX2xpc3QgLT4gaW50XG4gIHZhbCBjb21wYXJlIDogaGFzaGVkX2xpc3QgLT4gaGFzaGVkX2xpc3QgLT4gaW50XG4gIHZhbCBpbml0IDogdW5pdCAtPiBjYWNoZVxuICB2YWwgaGFzaCA6IGNhY2hlIC0+IGVsdCBsaXN0IC0+IGNhY2hlICogaGFzaGVkX2xpc3RcbiAgdmFsIGNvbnMgOiBjYWNoZSAtPiBlbHQgLT4gaGFzaGVkX2xpc3QgLT4gY2FjaGUgKiBoYXNoZWRfbGlzdFxuICB2YWwgZW1wdHkgOiBoYXNoZWRfbGlzdFxuICB2YWwgcHJpbnQgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGhhc2hlZF9saXN0IC0+IHVuaXRcbiAgdmFsIHByaW50X2NhY2hlIDogRm9ybWF0LmZvcm1hdHRlciAtPiBjYWNoZSAtPiB1bml0XG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoQSA6IFNldE1hcC5PcmRlcmVkVHlwZSlcbiAgLT5cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBBLnRcbiAgICB0eXBlIGVsdF9pZCA9IGludFxuICAgIHR5cGUgaGFzaGVkX2xpc3QgPSBpbnRcblxuICAgIGxldCBpbnRfb2ZfaGFzaGVkX2xpc3QgKGggOiBoYXNoZWRfbGlzdCkgOiBpbnQgPSBoXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICBtb2R1bGUgU2V0TWFwID0gU2V0TWFwLk1ha2UgKEEpXG5cbiAgICB0eXBlIGNhY2hlID0ge1xuICAgICAgZGljdGlvbmFyeTogZWx0X2lkIFNldE1hcC5NYXAudDtcbiAgICAgIG5leHRfZWx0X2lkOiBlbHRfaWQ7XG4gICAgICBjb25zOiBoYXNoZWRfbGlzdCBvcHRpb24gTW9kcy5EeW5BcnJheS50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQ7XG4gICAgICBuZXh0X2xpc3RfaWQ6IGhhc2hlZF9saXN0O1xuICAgIH1cblxuICAgIGxldCBmc3RfZWx0X2lkID0gMVxuICAgIGxldCBuZXh0X2VsdF9pZCA9IHN1Y2NcblxuICAgIGxldCBmcmVzaF9lbHRfaWQgY2FjaGUgPVxuICAgICAgKCBjYWNoZS5uZXh0X2VsdF9pZCxcbiAgICAgICAgeyBjYWNoZSB3aXRoIG5leHRfZWx0X2lkID0gbmV4dF9lbHRfaWQgY2FjaGUubmV4dF9lbHRfaWQgfSApXG5cbiAgICBsZXQgZnN0X2xpc3RfaWQgPSAxXG4gICAgbGV0IG5leHRfbGlzdF9pZCA9IHN1Y2NcblxuICAgIGxldCBmcmVzaF9saXN0X2lkIGNhY2hlID1cbiAgICAgICggeyBjYWNoZSB3aXRoIG5leHRfbGlzdF9pZCA9IG5leHRfbGlzdF9pZCBjYWNoZS5uZXh0X2xpc3RfaWQgfSxcbiAgICAgICAgY2FjaGUubmV4dF9saXN0X2lkIClcblxuICAgIGxldCBpbml0ICgpID1cbiAgICAgIHtcbiAgICAgICAgZGljdGlvbmFyeSA9IFNldE1hcC5NYXAuZW1wdHk7XG4gICAgICAgIG5leHRfZWx0X2lkID0gZnN0X2VsdF9pZDtcbiAgICAgICAgY29ucyA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDAgTm9uZTtcbiAgICAgICAgbmV4dF9saXN0X2lkID0gZnN0X2xpc3RfaWQ7XG4gICAgICB9XG5cbiAgICBsZXQgZW1wdHkgPSAwXG5cbiAgICBsZXQgaGFzaF9lbHQgY2FjaGUgZWx0ID1cbiAgICAgIG1hdGNoIFNldE1hcC5NYXAuZmluZF9vcHRpb24gZWx0IGNhY2hlLmRpY3Rpb25hcnkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gY2FjaGUsIGlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgaWQsIGNhY2hlID0gZnJlc2hfZWx0X2lkIGNhY2hlIGluXG4gICAgICAgIHsgY2FjaGUgd2l0aCBkaWN0aW9uYXJ5ID0gU2V0TWFwLk1hcC5hZGQgZWx0IGlkIGNhY2hlLmRpY3Rpb25hcnkgfSwgaWRcblxuICAgIGxldCBjb25zIGNhY2hlIGhlYWQgdGFpbCA9XG4gICAgICBsZXQgY2FjaGUsIGhhc2hfaGVhZCA9IGhhc2hfZWx0IGNhY2hlIGhlYWQgaW5cbiAgICAgIGxldCBzdWJ0YWIgPVxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBjYWNoZS5jb25zIGhhc2hfaGVhZCB3aXRoXG4gICAgICAgIHwgU29tZSBzdWJ0YWIgLT4gc3VidGFiXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBzdWJ0YWIgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSAwIE5vbmUgaW5cbiAgICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYWNoZS5jb25zIGhhc2hfaGVhZCAoU29tZSBzdWJ0YWIpIGluXG4gICAgICAgICAgc3VidGFiXG4gICAgICBpblxuICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgc3VidGFiIHRhaWwgd2l0aFxuICAgICAgfCBTb21lIGhhc2ggLT4gY2FjaGUsIGhhc2hcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgY2FjaGUsIGhhc2ggPSBmcmVzaF9saXN0X2lkIGNhY2hlIGluXG4gICAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHN1YnRhYiB0YWlsIChTb21lIGhhc2gpIGluXG4gICAgICAgIGNhY2hlLCBoYXNoXG5cbiAgICBsZXQgcmVjIGhhc2ggY2FjaGUgbGlzdCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gY2FjaGUsIGVtcHR5XG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgY2FjaGUsIHQgPSBoYXNoIGNhY2hlIHQgaW5cbiAgICAgICAgY29ucyBjYWNoZSBoIHRcblxuICAgIGxldCBwcmludCBmb3JtYXR0ZXIgPSBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlaVwiXG5cbiAgICBsZXQgcHJpbnRfY2FjaGUgZm9ybWF0dGVyIGNhY2hlID1cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlclxuICAgICAgICAgIFwiQ2FjaGVcXG4gbmV4dF9mcmVzaF9saXN0X2lkOiAlaTsgbmV4dF9mcmVzaF9lbHRfaWQ6ICVpXFxuXCJcbiAgICAgICAgICBjYWNoZS5uZXh0X2xpc3RfaWQgY2FjaGUubmV4dF9lbHRfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBTZXRNYXAuTWFwLml0ZXJcbiAgICAgICAgICAoZnVuIGEgaSAtPiBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCJESUM6JWE6JWlcXG5cIiBBLnByaW50IGEgaSlcbiAgICAgICAgICBjYWNoZS5kaWN0aW9uYXJ5XG4gICAgICBpblxuICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGEgb3B0IC0+XG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgb3B0IC0+XG4gICAgICAgICAgICBNb2RzLkR5bkFycmF5Lml0ZXJpXG4gICAgICAgICAgICAgIChmdW4gYiBrIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIGsgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiKCVpLCVpKS0+JWkgXFxuXCIgYSBiIGspXG4gICAgICAgICAgICAgIG9wdClcbiAgICAgICAgY2FjaGUuY29uc1xuICBlbmRcbiIsInR5cGUgdCA9IHsgbnVtOiBpbnQ7IGRlbjogaW50IH1cblxubGV0IHNpZ24gZiA9XG4gIGlmIGYubnVtID0gMCB0aGVuXG4gICAgeyBudW0gPSAwOyBkZW4gPSAxIH1cbiAgZWxzZSBpZiBmLmRlbiA8IDAgdGhlblxuICAgIHsgbnVtID0gLWYubnVtOyBkZW4gPSAtZi5kZW4gfVxuICBlbHNlXG4gICAgZlxuXG5sZXQgc2ltcGxpZnkgZiA9XG4gIGxldCBnY2QgPSBUb29scy5nY2RfMiBmLm51bSBmLmRlbiBpblxuICBzaWduIHsgbnVtID0gZi5udW0gLyBnY2Q7IGRlbiA9IGYuZGVuIC8gZ2NkIH1cblxubGV0IGFkZCBhIGIgPVxuICBzaW1wbGlmeSB7IG51bSA9IChhLm51bSAqIGIuZGVuKSArIChiLm51bSAqIGEuZGVuKTsgZGVuID0gYi5kZW4gKiBhLmRlbiB9XG5cbmxldCBvcCBmID0geyBmIHdpdGggbnVtID0gLWYubnVtIH1cbmxldCBzdWIgYSBiID0gYWRkIGEgKG9wIGIpXG5sZXQgbXVsdCBhIGIgPSBzaW1wbGlmeSB7IG51bSA9IGEubnVtICogYi5udW07IGRlbiA9IGEuZGVuICogYi5kZW4gfVxuXG5sZXQgaW52IGEgPVxuICBpZiBhLm51bSA9IDAgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgeyBudW0gPSBhLmRlbjsgZGVuID0gYS5udW0gfVxuXG5sZXQgZGl2IGEgYiA9XG4gIG1hdGNoIGludiBiIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGJfaW52IC0+IFNvbWUgKG11bHQgYSBiX2ludilcblxubGV0IHplcm8gPSB7IG51bSA9IDA7IGRlbiA9IDEgfVxubGV0IGlzX2VxdWFsIGEgYiA9IGEgPSBiXG5sZXQgb2ZfaW50IGkgPSBzaW1wbGlmeSB7IG51bSA9IGk7IGRlbiA9IDEgfVxubGV0IGlzX3plcm8gYSA9IGEubnVtID0gMFxubGV0IG9uZSA9IG9mX2ludCAxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IHdhaXRpbmdfZWx0czogJ2EgbGlzdDsgbGlzdDogJ2EgbGlzdCB9XG5cbmxldCBlbXB0eSA9IHsgd2FpdGluZ19lbHRzID0gW107IGxpc3QgPSBbXSB9XG5sZXQgaXNfZW1wdHkgdCA9IHQud2FpdGluZ19lbHRzID0gW10gJiYgdC5saXN0ID0gW11cbmxldCBwdXNoIGEgdCA9IHsgdCB3aXRoIHdhaXRpbmdfZWx0cyA9IGEgOjogdC53YWl0aW5nX2VsdHMgfVxuXG5sZXQgcmVjIHBvcCB0ID1cbiAgbWF0Y2ggdC5saXN0IHdpdGhcbiAgfCBoZWFkIDo6IHRhaWwgLT4geyB0IHdpdGggbGlzdCA9IHRhaWwgfSwgU29tZSBoZWFkXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC53YWl0aW5nX2VsdHMgd2l0aFxuICAgIHwgW10gLT4gdCwgTm9uZVxuICAgIHwgbGlzdCAtPiBwb3AgeyB3YWl0aW5nX2VsdHMgPSBbXTsgbGlzdCA9IExpc3QucmV2IGxpc3QgfSlcbiIsIigqIENvcHlyaWdodCAoYykgMjAxMSwgSm9uYXRoYW4gRGVycXVlIC0gTUlUIGxpY2Vuc2VkICopXG5cbmxldCAoICYmJiApID0gSW50MzIubG9nYW5kXG5sZXQgKCBeXl4gKSA9IEludDMyLmxvZ3hvclxubGV0ICggPj4+ICkgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsXG5cbmxldCBjcmNfdGFibGUgPVxuICBbfFxuICAgIDB4MDAwMDAwMDBsO1xuICAgIDB4NzcwNzMwOTZsO1xuICAgIDB4ZWUwZTYxMmNsO1xuICAgIDB4OTkwOTUxYmFsO1xuICAgIDB4MDc2ZGM0MTlsO1xuICAgIDB4NzA2YWY0OGZsO1xuICAgIDB4ZTk2M2E1MzVsO1xuICAgIDB4OWU2NDk1YTNsO1xuICAgIDB4MGVkYjg4MzJsO1xuICAgIDB4NzlkY2I4YTRsO1xuICAgIDB4ZTBkNWU5MWVsO1xuICAgIDB4OTdkMmQ5ODhsO1xuICAgIDB4MDliNjRjMmJsO1xuICAgIDB4N2ViMTdjYmRsO1xuICAgIDB4ZTdiODJkMDdsO1xuICAgIDB4OTBiZjFkOTFsO1xuICAgIDB4MWRiNzEwNjRsO1xuICAgIDB4NmFiMDIwZjJsO1xuICAgIDB4ZjNiOTcxNDhsO1xuICAgIDB4ODRiZTQxZGVsO1xuICAgIDB4MWFkYWQ0N2RsO1xuICAgIDB4NmRkZGU0ZWJsO1xuICAgIDB4ZjRkNGI1NTFsO1xuICAgIDB4ODNkMzg1YzdsO1xuICAgIDB4MTM2Yzk4NTZsO1xuICAgIDB4NjQ2YmE4YzBsO1xuICAgIDB4ZmQ2MmY5N2FsO1xuICAgIDB4OGE2NWM5ZWNsO1xuICAgIDB4MTQwMTVjNGZsO1xuICAgIDB4NjMwNjZjZDlsO1xuICAgIDB4ZmEwZjNkNjNsO1xuICAgIDB4OGQwODBkZjVsO1xuICAgIDB4M2I2ZTIwYzhsO1xuICAgIDB4NGM2OTEwNWVsO1xuICAgIDB4ZDU2MDQxZTRsO1xuICAgIDB4YTI2NzcxNzJsO1xuICAgIDB4M2MwM2U0ZDFsO1xuICAgIDB4NGIwNGQ0NDdsO1xuICAgIDB4ZDIwZDg1ZmRsO1xuICAgIDB4YTUwYWI1NmJsO1xuICAgIDB4MzViNWE4ZmFsO1xuICAgIDB4NDJiMjk4NmNsO1xuICAgIDB4ZGJiYmM5ZDZsO1xuICAgIDB4YWNiY2Y5NDBsO1xuICAgIDB4MzJkODZjZTNsO1xuICAgIDB4NDVkZjVjNzVsO1xuICAgIDB4ZGNkNjBkY2ZsO1xuICAgIDB4YWJkMTNkNTlsO1xuICAgIDB4MjZkOTMwYWNsO1xuICAgIDB4NTFkZTAwM2FsO1xuICAgIDB4YzhkNzUxODBsO1xuICAgIDB4YmZkMDYxMTZsO1xuICAgIDB4MjFiNGY0YjVsO1xuICAgIDB4NTZiM2M0MjNsO1xuICAgIDB4Y2ZiYTk1OTlsO1xuICAgIDB4YjhiZGE1MGZsO1xuICAgIDB4MjgwMmI4OWVsO1xuICAgIDB4NWYwNTg4MDhsO1xuICAgIDB4YzYwY2Q5YjJsO1xuICAgIDB4YjEwYmU5MjRsO1xuICAgIDB4MmY2ZjdjODdsO1xuICAgIDB4NTg2ODRjMTFsO1xuICAgIDB4YzE2MTFkYWJsO1xuICAgIDB4YjY2NjJkM2RsO1xuICAgIDB4NzZkYzQxOTBsO1xuICAgIDB4MDFkYjcxMDZsO1xuICAgIDB4OThkMjIwYmNsO1xuICAgIDB4ZWZkNTEwMmFsO1xuICAgIDB4NzFiMTg1ODlsO1xuICAgIDB4MDZiNmI1MWZsO1xuICAgIDB4OWZiZmU0YTVsO1xuICAgIDB4ZThiOGQ0MzNsO1xuICAgIDB4NzgwN2M5YTJsO1xuICAgIDB4MGYwMGY5MzRsO1xuICAgIDB4OTYwOWE4OGVsO1xuICAgIDB4ZTEwZTk4MThsO1xuICAgIDB4N2Y2YTBkYmJsO1xuICAgIDB4MDg2ZDNkMmRsO1xuICAgIDB4OTE2NDZjOTdsO1xuICAgIDB4ZTY2MzVjMDFsO1xuICAgIDB4NmI2YjUxZjRsO1xuICAgIDB4MWM2YzYxNjJsO1xuICAgIDB4ODU2NTMwZDhsO1xuICAgIDB4ZjI2MjAwNGVsO1xuICAgIDB4NmMwNjk1ZWRsO1xuICAgIDB4MWIwMWE1N2JsO1xuICAgIDB4ODIwOGY0YzFsO1xuICAgIDB4ZjUwZmM0NTdsO1xuICAgIDB4NjViMGQ5YzZsO1xuICAgIDB4MTJiN2U5NTBsO1xuICAgIDB4OGJiZWI4ZWFsO1xuICAgIDB4ZmNiOTg4N2NsO1xuICAgIDB4NjJkZDFkZGZsO1xuICAgIDB4MTVkYTJkNDlsO1xuICAgIDB4OGNkMzdjZjNsO1xuICAgIDB4ZmJkNDRjNjVsO1xuICAgIDB4NGRiMjYxNThsO1xuICAgIDB4M2FiNTUxY2VsO1xuICAgIDB4YTNiYzAwNzRsO1xuICAgIDB4ZDRiYjMwZTJsO1xuICAgIDB4NGFkZmE1NDFsO1xuICAgIDB4M2RkODk1ZDdsO1xuICAgIDB4YTRkMWM0NmRsO1xuICAgIDB4ZDNkNmY0ZmJsO1xuICAgIDB4NDM2OWU5NmFsO1xuICAgIDB4MzQ2ZWQ5ZmNsO1xuICAgIDB4YWQ2Nzg4NDZsO1xuICAgIDB4ZGE2MGI4ZDBsO1xuICAgIDB4NDQwNDJkNzNsO1xuICAgIDB4MzMwMzFkZTVsO1xuICAgIDB4YWEwYTRjNWZsO1xuICAgIDB4ZGQwZDdjYzlsO1xuICAgIDB4NTAwNTcxM2NsO1xuICAgIDB4MjcwMjQxYWFsO1xuICAgIDB4YmUwYjEwMTBsO1xuICAgIDB4YzkwYzIwODZsO1xuICAgIDB4NTc2OGI1MjVsO1xuICAgIDB4MjA2Zjg1YjNsO1xuICAgIDB4Yjk2NmQ0MDlsO1xuICAgIDB4Y2U2MWU0OWZsO1xuICAgIDB4NWVkZWY5MGVsO1xuICAgIDB4MjlkOWM5OThsO1xuICAgIDB4YjBkMDk4MjJsO1xuICAgIDB4YzdkN2E4YjRsO1xuICAgIDB4NTliMzNkMTdsO1xuICAgIDB4MmViNDBkODFsO1xuICAgIDB4YjdiZDVjM2JsO1xuICAgIDB4YzBiYTZjYWRsO1xuICAgIDB4ZWRiODgzMjBsO1xuICAgIDB4OWFiZmIzYjZsO1xuICAgIDB4MDNiNmUyMGNsO1xuICAgIDB4NzRiMWQyOWFsO1xuICAgIDB4ZWFkNTQ3MzlsO1xuICAgIDB4OWRkMjc3YWZsO1xuICAgIDB4MDRkYjI2MTVsO1xuICAgIDB4NzNkYzE2ODNsO1xuICAgIDB4ZTM2MzBiMTJsO1xuICAgIDB4OTQ2NDNiODRsO1xuICAgIDB4MGQ2ZDZhM2VsO1xuICAgIDB4N2E2YTVhYThsO1xuICAgIDB4ZTQwZWNmMGJsO1xuICAgIDB4OTMwOWZmOWRsO1xuICAgIDB4MGEwMGFlMjdsO1xuICAgIDB4N2QwNzllYjFsO1xuICAgIDB4ZjAwZjkzNDRsO1xuICAgIDB4ODcwOGEzZDJsO1xuICAgIDB4MWUwMWYyNjhsO1xuICAgIDB4NjkwNmMyZmVsO1xuICAgIDB4Zjc2MjU3NWRsO1xuICAgIDB4ODA2NTY3Y2JsO1xuICAgIDB4MTk2YzM2NzFsO1xuICAgIDB4NmU2YjA2ZTdsO1xuICAgIDB4ZmVkNDFiNzZsO1xuICAgIDB4ODlkMzJiZTBsO1xuICAgIDB4MTBkYTdhNWFsO1xuICAgIDB4NjdkZDRhY2NsO1xuICAgIDB4ZjliOWRmNmZsO1xuICAgIDB4OGViZWVmZjlsO1xuICAgIDB4MTdiN2JlNDNsO1xuICAgIDB4NjBiMDhlZDVsO1xuICAgIDB4ZDZkNmEzZThsO1xuICAgIDB4YTFkMTkzN2VsO1xuICAgIDB4MzhkOGMyYzRsO1xuICAgIDB4NGZkZmYyNTJsO1xuICAgIDB4ZDFiYjY3ZjFsO1xuICAgIDB4YTZiYzU3NjdsO1xuICAgIDB4M2ZiNTA2ZGRsO1xuICAgIDB4NDhiMjM2NGJsO1xuICAgIDB4ZDgwZDJiZGFsO1xuICAgIDB4YWYwYTFiNGNsO1xuICAgIDB4MzYwMzRhZjZsO1xuICAgIDB4NDEwNDdhNjBsO1xuICAgIDB4ZGY2MGVmYzNsO1xuICAgIDB4YTg2N2RmNTVsO1xuICAgIDB4MzE2ZThlZWZsO1xuICAgIDB4NDY2OWJlNzlsO1xuICAgIDB4Y2I2MWIzOGNsO1xuICAgIDB4YmM2NjgzMWFsO1xuICAgIDB4MjU2ZmQyYTBsO1xuICAgIDB4NTI2OGUyMzZsO1xuICAgIDB4Y2MwYzc3OTVsO1xuICAgIDB4YmIwYjQ3MDNsO1xuICAgIDB4MjIwMjE2YjlsO1xuICAgIDB4NTUwNTI2MmZsO1xuICAgIDB4YzViYTNiYmVsO1xuICAgIDB4YjJiZDBiMjhsO1xuICAgIDB4MmJiNDVhOTJsO1xuICAgIDB4NWNiMzZhMDRsO1xuICAgIDB4YzJkN2ZmYTdsO1xuICAgIDB4YjVkMGNmMzFsO1xuICAgIDB4MmNkOTllOGJsO1xuICAgIDB4NWJkZWFlMWRsO1xuICAgIDB4OWI2NGMyYjBsO1xuICAgIDB4ZWM2M2YyMjZsO1xuICAgIDB4NzU2YWEzOWNsO1xuICAgIDB4MDI2ZDkzMGFsO1xuICAgIDB4OWMwOTA2YTlsO1xuICAgIDB4ZWIwZTM2M2ZsO1xuICAgIDB4NzIwNzY3ODVsO1xuICAgIDB4MDUwMDU3MTNsO1xuICAgIDB4OTViZjRhODJsO1xuICAgIDB4ZTJiODdhMTRsO1xuICAgIDB4N2JiMTJiYWVsO1xuICAgIDB4MGNiNjFiMzhsO1xuICAgIDB4OTJkMjhlOWJsO1xuICAgIDB4ZTVkNWJlMGRsO1xuICAgIDB4N2NkY2VmYjdsO1xuICAgIDB4MGJkYmRmMjFsO1xuICAgIDB4ODZkM2QyZDRsO1xuICAgIDB4ZjFkNGUyNDJsO1xuICAgIDB4NjhkZGIzZjhsO1xuICAgIDB4MWZkYTgzNmVsO1xuICAgIDB4ODFiZTE2Y2RsO1xuICAgIDB4ZjZiOTI2NWJsO1xuICAgIDB4NmZiMDc3ZTFsO1xuICAgIDB4MThiNzQ3NzdsO1xuICAgIDB4ODgwODVhZTZsO1xuICAgIDB4ZmYwZjZhNzBsO1xuICAgIDB4NjYwNjNiY2FsO1xuICAgIDB4MTEwMTBiNWNsO1xuICAgIDB4OGY2NTllZmZsO1xuICAgIDB4Zjg2MmFlNjlsO1xuICAgIDB4NjE2YmZmZDNsO1xuICAgIDB4MTY2Y2NmNDVsO1xuICAgIDB4YTAwYWUyNzhsO1xuICAgIDB4ZDcwZGQyZWVsO1xuICAgIDB4NGUwNDgzNTRsO1xuICAgIDB4MzkwM2IzYzJsO1xuICAgIDB4YTc2NzI2NjFsO1xuICAgIDB4ZDA2MDE2ZjdsO1xuICAgIDB4NDk2OTQ3NGRsO1xuICAgIDB4M2U2ZTc3ZGJsO1xuICAgIDB4YWVkMTZhNGFsO1xuICAgIDB4ZDlkNjVhZGNsO1xuICAgIDB4NDBkZjBiNjZsO1xuICAgIDB4MzdkODNiZjBsO1xuICAgIDB4YTliY2FlNTNsO1xuICAgIDB4ZGViYjllYzVsO1xuICAgIDB4NDdiMmNmN2ZsO1xuICAgIDB4MzBiNWZmZTlsO1xuICAgIDB4YmRiZGYyMWNsO1xuICAgIDB4Y2FiYWMyOGFsO1xuICAgIDB4NTNiMzkzMzBsO1xuICAgIDB4MjRiNGEzYTZsO1xuICAgIDB4YmFkMDM2MDVsO1xuICAgIDB4Y2RkNzA2OTNsO1xuICAgIDB4NTRkZTU3MjlsO1xuICAgIDB4MjNkOTY3YmZsO1xuICAgIDB4YjM2NjdhMmVsO1xuICAgIDB4YzQ2MTRhYjhsO1xuICAgIDB4NWQ2ODFiMDJsO1xuICAgIDB4MmE2ZjJiOTRsO1xuICAgIDB4YjQwYmJlMzdsO1xuICAgIDB4YzMwYzhlYTFsO1xuICAgIDB4NWEwNWRmMWJsO1xuICAgIDB4MmQwMmVmOGRsO1xuICB8XVxuXG5sZXQgc3RyaW5nX2ZvbGRfbGVmdCBmIGFjYyBzdHIgb2Zmc2V0IGxlbmd0aCA9XG4gIGxldCBhY2NfciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSBvZmZzZXQgdG8gb2Zmc2V0ICsgbGVuZ3RoIC0gMSBkb1xuICAgIGFjY19yIDo9IGYgIWFjY19yIChTdHJpbmcuZ2V0IHN0ciBpKVxuICBkb25lO1xuICAhYWNjX3JcblxuKCpsZXQgYmlnc3RyaW5nX2ZvbGRfbGVmdCBmIGFjYyBzdHIgPVxuICBsZXQgYWNjX3IgPSByZWYgYWNjIGluXG4gIGZvciBpID0gMCB0byAoQmlnYXJyYXkuQXJyYXkxLmRpbSBzdHIpIC0gMSBkb1xuICAgIGFjY19yIDo9IGYgIWFjY19yIEBAIEJpZ2FycmF5LkFycmF5MS5nZXQgc3RyIGlcbiAgZG9uZTtcbiAgIWFjY19yXG4qKVxudHlwZSB0ID0gaW50MzJcblxubGV0IHVwZGF0ZV9jcmMgYWNjIGMgPVxuICBsZXQgaW5kZXggPSBJbnQzMi50b19pbnQgKGFjYyBeXl4gSW50MzIub2ZfaW50IChpbnRfb2ZfY2hhciBjKSAmJiYgMHhmZmwpIGluXG4gIGNyY190YWJsZS4oaW5kZXgpIF5eXiAoYWNjID4+PiA4KSAmJiYgMHhmZmZmZmZmZmxcblxubGV0IHN0cmluZyA/KGNyYyA9IDBsKSBzdHIgb2Zmc2V0IGxlbmd0aCA9XG4gIHN0cmluZ19mb2xkX2xlZnQgdXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgc3RyIG9mZnNldCBsZW5ndGhcbiAgXl5eIDB4ZmZmZmZmZmZsXG5cbigqbGV0IGJpZ3N0cmluZyA/KGNyYz0wbCkgc3RyID1cbiAgKGJpZ3N0cmluZ19mb2xkX2xlZnQgdXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgc3RyKSBeXl4gMHhmZmZmZmZmZmxcbiopXG4oKlxubGV0IGRpZ2VzdCAoY3JjIDogdCkgPyhvZmYgPSAwKSA/bGVuIGJ1ZiA9XG4gIGxldCBsZW4gPSBtYXRjaCBsZW4gd2l0aCBTb21lIGxlbiAtPiBsZW4gfCBOb25lIC0+IENzdHJ1Y3QubGVuIGJ1ZiAtIG9mZiBpblxuICBjc3RydWN0IH5jcmM6KGNyYyA6PiBpbnQzMikgKENzdHJ1Y3Quc3ViIGJ1ZiBvZmYgbGVuKVxuXG5sZXQgZGlnZXN0diA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHYgLT4gZGlnZXN0IGFjYyB2KVxuXG5sZXQgZGlnZXN0YyAoY3JjIDogdCkgYnl0ZSA9XG4gICh1cGRhdGVfY3JjIChjcmMgXl5eIDB4ZmZmZmZmZmZsKSAoQ2hhci5jaHIgYnl0ZSkpIF5eXiAweGZmZmZmZmZmbFxuXG5sZXQgZGlnZXN0cyAoY3JjIDogdCkgPyhvZmYgPSAwKSA/bGVuIGJ1ZiA9XG4gIGxldCBsZW4gPSBtYXRjaCBsZW4gd2l0aCBTb21lIGxlbiAtPiBsZW4gfCBOb25lIC0+IEJ5dGVzLmxlbmd0aCBidWYgLSBvZmYgaW5cbiAgYnl0ZXMgfmNyYzooY3JjIDo+IGludDMyKSBidWYgb2ZmIGxlblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQzMiA6IHQgLT4gaW50MzIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBwcCBwcGYgdiA9IEZtdC5wZiBwcGYgXCIlMDRseFwiICh2IDo+IGludDMyKVxuXG5sZXQgZGVmYXVsdCA9IDBsXG5cbmxldCBlcSA9IEludDMyLmVxdWFsXG5sZXQgbmVxIGEgYiA9IG5vdCAoZXEgYSBiKVxuKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29sb3IgPSBSZWQgfCBHcmV5IHwgTGlnaHRibHVlIHwgQmxhY2tcblxubGV0IHRyaXBsZV9vZl9jb2xvciA9IGZ1bmN0aW9uXG4gIHwgUmVkIC0+IDI1NSwgMCwgMFxuICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICB8IExpZ2h0Ymx1ZSAtPiAwLCAwLCAxMjhcbiAgfCBCbGFjayAtPiAwLCAwLCAwXG4iLCJ0eXBlICdhIHQgPSB7XG4gIHNpemU6IGludDtcbiAgZGVmYXVsdDogJ2E7XG4gIG11dGFibGUgc3RhcnQ6IGludDtcbiAgbXV0YWJsZSBmaW5hbDogaW50O1xuICBjb250ZW50OiAnYSBhcnJheTtcbn1cblxubGV0IGNyZWF0ZSBpIGRlZmF1bHQgPVxuICBsZXQgc2l6ZSA9IG1heCBpIDIgaW5cbiAgeyBzaXplOyBkZWZhdWx0OyBzdGFydCA9IDA7IGZpbmFsID0gMDsgY29udGVudCA9IEFycmF5Lm1ha2Ugc2l6ZSBkZWZhdWx0IH1cblxubGV0IHN1Y2MgaSB0ID1cbiAgaWYgaSA9IHQuc2l6ZSAtIDEgdGhlblxuICAgIDBcbiAgZWxzZVxuICAgIHN1Y2MgaVxuXG5sZXQgZnVsbCB0ID0gc3VjYyB0LmZpbmFsIHQgPSB0LnN0YXJ0XG5sZXQgZnJlZV9vbmUgdCA9IHQuc3RhcnQgPC0gc3VjYyB0LnN0YXJ0IHRcblxubGV0IGFkZCB4IHQgPVxuICBsZXQgKCkgPSBpZiBmdWxsIHQgdGhlbiBmcmVlX29uZSB0IGluXG4gIGxldCAoKSA9IHQuY29udGVudC4odC5maW5hbCkgPC0geCBpblxuICBsZXQgKCkgPSB0LmZpbmFsIDwtIHN1Y2MgdC5maW5hbCB0IGluXG4gIHRcblxubGV0IGl0ZXIgZiB0ID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA8PiB0LmZpbmFsIHRoZW4gKFxuICAgICAgbGV0ICgpID0gZiB0LmNvbnRlbnQuKGkpIGluXG4gICAgICBhdXggKHN1Y2MgaSB0KVxuICAgIClcbiAgaW5cbiAgYXV4IHQuc3RhcnRcblxubGV0IGNsZWFuIHQgPVxuICBsZXQgcmVjIGF1eCBrID1cbiAgICBpZiBrID0gdC5zaXplIHRoZW5cbiAgICAgIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCAoKSA9IHQuY29udGVudC4oaykgPC0gdC5kZWZhdWx0IGluXG4gICAgICBhdXggKGsgKyAxKVxuICAgIClcbiAgaW5cbiAgYXV4IDBcbiIsIigqKlxuICAqIGNhY2hlLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjcvMDMvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNy8wMy8yMDEyXG4gICogKlxuICAqXG4gICogSXQgdXNlcyBpbXBlcmF0aXZlIHN0eWxlcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIG1vZHVsZXNcbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ2FjaGUgPSBzaWdcbiAgbW9kdWxlIE8gOiBTZXRNYXAuT3JkZXJlZFR5cGVcblxuICB0eXBlIHRcblxuICB2YWwgbGFzdCA6IHQgLT4gTy50IG9wdGlvblxuICB2YWwgY3JlYXRlIDogaW50IG9wdGlvbiAtPiB0XG4gIHZhbCBhZGQgOiBPLnQgLT4gdCAtPiB0XG4gIHZhbCBmb2xkIDogKE8udCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgaXRlciA6IChPLnQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIENhY2hlID1cbmZ1bmN0b3JcbiAgKE9PIDogU2V0TWFwLk9yZGVyZWRUeXBlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICBtb2R1bGUgTyA9IE9PXG4gICAgICBtb2R1bGUgU00gPSBTZXRNYXAuTWFrZSAoTylcbiAgICAgIG1vZHVsZSBTID0gU00uU2V0XG5cbiAgICAgIHR5cGUgZmluaXRlX2NhY2hlID0ge1xuICAgICAgICBzaXplOiBpbnQ7XG4gICAgICAgIG9mZnNldDogaW50O1xuICAgICAgICBjYWNoZTogTy50IG9wdGlvbiBhcnJheTtcbiAgICAgICAgYmFnOiBTLnQ7XG4gICAgICAgIGxhc3Q6IE8udCBvcHRpb247XG4gICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGVfZmluaXRlIG4gPVxuICAgICAgICB7XG4gICAgICAgICAgc2l6ZSA9IG47XG4gICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICBjYWNoZSA9IEFycmF5Lm1ha2UgbiBOb25lO1xuICAgICAgICAgIGJhZyA9IFMuZW1wdHk7XG4gICAgICAgICAgbGFzdCA9IE5vbmU7XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCBpblxuICAgICAgICBpZiBvZmZzZXQgPSB0LnNpemUgLSAxIHRoZW5cbiAgICAgICAgICB7IHQgd2l0aCBvZmZzZXQgPSAwIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHsgdCB3aXRoIG9mZnNldCA9IG9mZnNldCArIDEgfVxuXG4gICAgICBsZXQgYWRkX2Zpbml0ZSBrZXkgdCA9XG4gICAgICAgIGxldCB0ID0geyB0IHdpdGggbGFzdCA9IFNvbWUga2V5IH0gaW5cbiAgICAgICAgaWYgUy5tZW0ga2V5IHQuYmFnIHRoZW5cbiAgICAgICAgICB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB0ID0geyB0IHdpdGggYmFnID0gUy5hZGQga2V5IHQuYmFnIH0gaW5cbiAgICAgICAgICBsZXQgdCA9IG5leHQgdCBpblxuICAgICAgICAgIGxldCBvdmVyd3JpdHRlbl92YWx1ZSA9IHQuY2FjaGUuKHQub2Zmc2V0KSBpblxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIG1hdGNoIG92ZXJ3cml0dGVuX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiB0XG4gICAgICAgICAgICB8IFNvbWUgb3ZlcndyaXR0ZW5fdmFsdWUgLT5cbiAgICAgICAgICAgICAgeyB0IHdpdGggYmFnID0gUy5yZW1vdmUgb3ZlcndyaXR0ZW5fdmFsdWUgdC5iYWcgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPSB0LmNhY2hlLih0Lm9mZnNldCkgPC0gU29tZSBrZXkgaW5cbiAgICAgICAgICB0XG4gICAgICAgIClcblxuICAgICAgbGV0IGxhc3RfZmluaXRlIHQgPSB0Lmxhc3RcblxuICAgICAgdHlwZSBpbmZpbml0ZV9jYWNoZSA9IHsgaW5mX2JhZzogUy50OyBsYXN0OiBPLnQgb3B0aW9uIH1cbiAgICAgIHR5cGUgdCA9IEZpbml0ZSBvZiBmaW5pdGVfY2FjaGUgfCBJbmZpbml0ZSBvZiBpbmZpbml0ZV9jYWNoZVxuXG4gICAgICBsZXQgY3JlYXRlX2luZmluaXRlID0geyBpbmZfYmFnID0gUy5lbXB0eTsgbGFzdCA9IE5vbmUgfVxuXG4gICAgICBsZXQgYWRkX2luZmluaXRlIGtleSB0ID1cbiAgICAgICAgeyBpbmZfYmFnID0gUy5hZGQga2V5IHQuaW5mX2JhZzsgbGFzdCA9IFNvbWUga2V5IH1cblxuICAgICAgbGV0IGNyZWF0ZSBzaXplID1cbiAgICAgICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJbmZpbml0ZSBjcmVhdGVfaW5maW5pdGVcbiAgICAgICAgfCBTb21lIGEgLT4gRmluaXRlIChjcmVhdGVfZmluaXRlIGEpXG5cbiAgICAgIGxldCBsYXN0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBsYXN0X2Zpbml0ZSB0XG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiB0Lmxhc3RcblxuICAgICAgbGV0IGFkZCBrZXkgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IEZpbml0ZSAoYWRkX2Zpbml0ZSBrZXkgdClcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IEluZmluaXRlIChhZGRfaW5maW5pdGUga2V5IHQpXG5cbiAgICAgIGxldCBmb2xkIGYgdCBhID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gUy5mb2xkIGYgdC5iYWcgYVxuICAgICAgICB8IEluZmluaXRlIHQgLT4gUy5mb2xkIGYgdC5pbmZfYmFnIGFcblxuICAgICAgbGV0IGl0ZXIgZiB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gUy5pdGVyIGYgdC5iYWdcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IFMuaXRlciBmIHQuaW5mX2JhZ1xuICAgIGVuZCA6XG4gICAgICBDYWNoZSB3aXRoIHR5cGUgTy50ID0gT08udClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRnJvbSkgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbm1vZHVsZSBCQSA9IEJpZ2FycmF5LkFycmF5MVxuXG50eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBidWZmZXI6IGJpZ3N0cmluZztcbiAgbXV0YWJsZSBwb3NpdGlvbjogaW50O1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBpbml0aWFsX2J1ZmZlcjogYmlnc3RyaW5nO1xufVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9XG4gICAgaWYgbiA8IDEgdGhlblxuICAgICAgMVxuICAgIGVsc2VcbiAgICAgIG5cbiAgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZVxuICAgICAgblxuICBpblxuICBsZXQgcyA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IG4gaW5cbiAgeyBidWZmZXIgPSBzOyBwb3NpdGlvbiA9IDA7IGxlbmd0aCA9IG47IGluaXRpYWxfYnVmZmVyID0gcyB9XG5cbmxldCBjb250ZW50cyBiID1cbiAgbGV0IG91dCA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IGIucG9zaXRpb24gaW5cbiAgbGV0ICgpID0gQkEuYmxpdCAoQkEuc3ViIGIuYnVmZmVyIDAgYi5wb3NpdGlvbikgb3V0IGluXG4gIG91dFxuXG4oKmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJBLnN1YiBiLmJ1ZmZlciBvZnMgbGVuXG4qKVxuKCpcbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJBLmJsaXQgKHN1YiBzcmMgc3Jjb2ZmIGxlbilcbiAgICAgIChCaWdzdHJpbmcuc3ViIChCaWdzdHJpbmcub2ZfYXJyYXkgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBkc3QpIGRzdG9mZiBsZW4pXG4qKVxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gYi5wb3NpdGlvbiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZVxuICAgIEJBLnVuc2FmZV9nZXQgYi5idWZmZXIgb2ZzXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBiLmJ1ZmZlciA8LSBiLmluaXRpYWxfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSBCQS5kaW0gYi5idWZmZXJcblxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgbGVuID0gYi5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgbGVuIGluXG4gIHdoaWxlIGIucG9zaXRpb24gKyBtb3JlID4gIW5ld19sZW4gZG9cbiAgICBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlblxuICBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgaWYgYi5wb3NpdGlvbiArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZVxuICAgICAgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgbGV0IG5ld19idWZmZXIgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJBLmJsaXQgKEJBLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb24pIChCQS5zdWIgbmV3X2J1ZmZlciAwIGIucG9zaXRpb24pO1xuICBiLmJ1ZmZlciA8LSBuZXdfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSAhbmV3X2xlblxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbigqXG4gbGV0IGFkZF91dGZfOF91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgYWRkX2NoYXIgYiAoQ2hhci51bnNhZmVfY2hyIHUpXG4gfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEMwIGxvciAodSBsc3IgNikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDMgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDM7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhFMCBsb3IgKHUgbHNyIDEyKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAzXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RjAgbG9yICh1IGxzciAxOCkpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuKilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChiLnBvc2l0aW9uICsgaSkgKFN0cmluZy5nZXQgcyAob2Zmc2V0ICsgaSkpXG4gIGRvbmU7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPSBhZGRfc3Vic3RyaW5nIGIgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5cbigqXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogcmVhZCB1cCB0byBbbGVuXSBieXRlcyBmcm9tIFtpY10gaW50byBbYl0uICopXG5sZXQgcmVjIGFkZF9jaGFubmVsX3JlYyBiIGljIGxlbiA9XG4gIGlmIGxlbiA+IDAgdGhlbiAoXG4gICAgbGV0IG4gPSBpbnB1dCBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAgIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gICAgaWYgbiA9IDAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgYWRkX2NoYW5uZWxfcmVjIGIgaWMgKGxlbi1uKSAgICgqIG4gPD0gbGVuICopXG4gIClcblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGFkZF9jaGFubmVsX3JlYyBiIGljIGxlblxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIChMd3RfYnl0ZXMudG9fYnl0ZXMgYi5idWZmZXIpIDAgYi5wb3NpdGlvblxuKilcbigqbGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICAgIHwgJygnIC0+ICcpJ1xuICAgIHwgJ3snIC0+ICd9J1xuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbiAgbGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICAgIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4gIGxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkgaW5cbiAgICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbiAgKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbiAgbGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICAgIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAgICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgICB8IF8gLT5cbiAgICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuICAoKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbiAgbGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICAgIHwgJyQnIC0+XG4gICAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICBlbmQgZWxzZVxuICAgICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gICAgc3Vic3QgJyAnIDBcblxuICBsZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICAgIGVsc2VcbiAgICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cbiopXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgQ2l0cml4IFN5c3RlbXMgSW5jLlxuICogQ29weXJpZ2h0IChjKSAyMDEwIFRob21hcyBHYXphZ25haXJlIDx0aG9tYXNAZ2F6YWduYWlyZS5jb20+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxubGV0IGRlZmF1bHRfYWxwaGFiZXQgPVxuICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIlxuXG5sZXQgdXJpX3NhZmVfYWxwaGFiZXQgPVxuICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV9cIlxuXG5sZXQgcGFkZGluZyA9ICc9J1xuXG5sZXQgb2ZfY2hhciA/KGFscGhhYmV0ID0gZGVmYXVsdF9hbHBoYWJldCkgeCA9XG4gIGlmIHggPSBwYWRkaW5nIHRoZW5cbiAgICAwXG4gIGVsc2VcbiAgICBTdHJpbmcuaW5kZXggYWxwaGFiZXQgeFxuXG5sZXQgdG9fY2hhciA/KGFscGhhYmV0ID0gZGVmYXVsdF9hbHBoYWJldCkgeCA9IGFscGhhYmV0Llt4XVxuXG5sZXQgZGVjb2RlID9hbHBoYWJldCBpbnB1dCA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGxldCBpbnB1dCA9XG4gICAgaWYgbGVuZ3RoIG1vZCA0ID0gMCB0aGVuXG4gICAgICBpbnB1dFxuICAgIGVsc2VcbiAgICAgIGlucHV0IF4gU3RyaW5nLm1ha2UgKDQgLSAobGVuZ3RoIG1vZCA0KSkgcGFkZGluZ1xuICBpblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBsZXQgd29yZHMgPSBsZW5ndGggLyA0IGluXG4gIGxldCBwYWRkaW5nID1cbiAgICBtYXRjaCBsZW5ndGggd2l0aFxuICAgIHwgMCAtPiAwXG4gICAgfCBfIHdoZW4gaW5wdXQuW2xlbmd0aCAtIDJdID0gcGFkZGluZyAtPiAyXG4gICAgfCBfIHdoZW4gaW5wdXQuW2xlbmd0aCAtIDFdID0gcGFkZGluZyAtPiAxXG4gICAgfCBfIC0+IDBcbiAgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0XG4gICAgICAoKHdvcmRzICogMykgLSBwYWRkaW5nKVxuICBpblxuICBmb3IgaSA9IDAgdG8gd29yZHMgLSAxIGRvXG4gICAgbGV0IGEgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDApKVxuICAgIGFuZCBiID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAxKSlcbiAgICBhbmQgYyA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMikpXG4gICAgYW5kIGQgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDMpKSBpblxuICAgIGxldCBuID0gKGEgbHNsIDE4KSBsb3IgKGIgbHNsIDEyKSBsb3IgKGMgbHNsIDYpIGxvciBkIGluXG4gICAgbGV0IHggPSAobiBsc3IgMTYpIGxhbmQgMjU1IGFuZCB5ID0gKG4gbHNyIDgpIGxhbmQgMjU1IGFuZCB6ID0gbiBsYW5kIDI1NSBpblxuICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMCkgKGNoYXJfb2ZfaW50IHgpO1xuICAgIGlmIGkgPD4gd29yZHMgLSAxIHx8IHBhZGRpbmcgPCAyIHRoZW5cbiAgICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMSkgKGNoYXJfb2ZfaW50IHkpO1xuICAgIGlmIGkgPD4gd29yZHMgLSAxIHx8IHBhZGRpbmcgPCAxIHRoZW5cbiAgICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMikgKGNoYXJfb2ZfaW50IHopXG4gIGRvbmU7XG4gIG91dHB1dFxuXG5sZXQgZW5jb2RlID8ocGFkID0gdHJ1ZSkgP2FscGhhYmV0IGlucHV0ID1cbiAgbGV0IGxlbmd0aCA9IEJpZ2FycmF5LkFycmF5MS5kaW0gaW5wdXQgaW5cbiAgbGV0IHdvcmRzID0gKGxlbmd0aCArIDIpIC8gMyBpblxuICAoKiByb3VuZGVkIHVwICopXG4gIGxldCBwYWRkaW5nX2xlbiA9XG4gICAgaWYgbGVuZ3RoIG1vZCAzID0gMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgMyAtIChsZW5ndGggbW9kIDMpXG4gIGluXG4gIGxldCBvdXRwdXQgPSBCeXRlcy5tYWtlICh3b3JkcyAqIDQpICdcXDAwMCcgaW5cbiAgbGV0IGdldCBpID1cbiAgICBpZiBpID49IGxlbmd0aCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaW50X29mX2NoYXIgKEJpZ2FycmF5LkFycmF5MS5nZXQgaW5wdXQgaSlcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIHdvcmRzIC0gMSBkb1xuICAgIGxldCB4ID0gZ2V0ICgoMyAqIGkpICsgMClcbiAgICBhbmQgeSA9IGdldCAoKDMgKiBpKSArIDEpXG4gICAgYW5kIHogPSBnZXQgKCgzICogaSkgKyAyKSBpblxuICAgIGxldCBuID0gKHggbHNsIDE2KSBsb3IgKHkgbHNsIDgpIGxvciB6IGluXG4gICAgbGV0IGEgPSAobiBsc3IgMTgpIGxhbmQgNjNcbiAgICBhbmQgYiA9IChuIGxzciAxMikgbGFuZCA2M1xuICAgIGFuZCBjID0gKG4gbHNyIDYpIGxhbmQgNjNcbiAgICBhbmQgZCA9IG4gbGFuZCA2MyBpblxuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAwKSAodG9fY2hhciA/YWxwaGFiZXQgYSk7XG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDEpICh0b19jaGFyID9hbHBoYWJldCBiKTtcbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMikgKHRvX2NoYXIgP2FscGhhYmV0IGMpO1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAzKSAodG9fY2hhciA/YWxwaGFiZXQgZClcbiAgZG9uZTtcbiAgZm9yIGkgPSAxIHRvIHBhZGRpbmdfbGVuIGRvXG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoQnl0ZXMubGVuZ3RoIG91dHB1dCAtIGkpIHBhZGRpbmdcbiAgZG9uZTtcbiAgaWYgcGFkIHRoZW5cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIG91dHB1dFxuICBlbHNlXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBvdXRwdXQgMCAoQnl0ZXMubGVuZ3RoIG91dHB1dCAtIHBhZGRpbmdfbGVuKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBsaW5rcyA9XG4gIHwgTElOS1Mgb2YgKChpbnQgKiBpbnQpICogaW50KSBsaXN0XG4gIHwgV0hBVEVWRVJcbiAgfCBTT01FXG4gIHwgVFlQRSBvZiBzdHJpbmcgKiBzdHJpbmdcblxudHlwZSBjY19wb3J0ID0ge1xuICBwb3J0X2xpbmtzOiBsaW5rcztcbiAgcG9ydF9zdGF0ZXM6IHN0cmluZyBsaXN0IG9wdGlvbjsgICgqKiBbTm9uZV0gbWVhbnMgV0hBVEVWRVIgKilcbn1cblxudHlwZSBzaXRlID0gUG9ydCBvZiBjY19wb3J0IHwgQ291bnRlciBvZiBpbnRcbnR5cGUgY2Nfc2l0ZSA9IHsgc2l0ZV9uYW1lOiBzdHJpbmc7IHNpdGVfdHlwZTogc2l0ZSB9XG5cbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBzdHJpbmc7XG4gIG5vZGVfaWQ6IGludCBvcHRpb247XG4gIG5vZGVfc2l0ZXM6IGNjX3NpdGUgYXJyYXk7XG59XG5cbnR5cGUgY29ubmVjdGVkX2NvbXBvbmVudCA9IGNjX25vZGUgb3B0aW9uIGFycmF5IGFycmF5XG5cbm1vZHVsZSBMaW5rU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSAoaW50ICogaW50KSAqIGludFxuXG4gIGxldCBwcmludCA9XG4gICAgUHAucGFpclxuICAgICAgKFBwLnBhaXIgRm9ybWF0LnBwX3ByaW50X2ludCBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2ludFxuXG4gIGxldCBjb21wYXJlICh4LCB5KSAoeCcsIHknKSA9XG4gICAgbGV0IGMgPSBNb2RzLmludF9wYWlyX2NvbXBhcmUgeCB4JyBpblxuICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgIE1vZHMuaW50X2NvbXBhcmUgeSB5J1xuICAgIGVsc2VcbiAgICAgIGNcbmVuZClcblxubGV0IHByaW50X2xpbmsgKGRhbmdsaW5nLCBmcmVlX2lkKSBwIGYgPSBmdW5jdGlvblxuICB8IFdIQVRFVkVSIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsjXVwiXG4gIHwgU09NRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbX11cIlxuICB8IFRZUEUgKHNpLCB0eSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlslcy4lc11cIiBzaSB0eVxuICB8IExJTktTIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiXG4gIHwgTElOS1MgbCAtPlxuICAgIGxldCBteXNlbGYgPVxuICAgICAgcmVmIChMaW5rU2V0TWFwLk1hcC5maW5kX2RlZmF1bHQgTGlua1NldE1hcC5NYXAuZW1wdHkgcCAhZGFuZ2xpbmcpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslYV1cIlxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgcCcgLT5cbiAgICAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICAgICBpZiBwID0gcCcgdGhlblxuICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgICAgICAgKExpbmtTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIHApXG4gICAgICAgICAgICAgICAgICAgICAoTGlua1NldE1hcC5NYXAuZmluZF9vcHRpb24gcCcgIWRhbmdsaW5nKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGluY3IgZnJlZV9pZCBpblxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG15c2VsZiA6PSBMaW5rU2V0TWFwLk1hcC5hZGQgcCcgIWZyZWVfaWQgIW15c2VsZiBpblxuICAgICAgICAgICAgICAgICAgICFmcmVlX2lkXG4gICAgICAgICAgICAgICAgIHwgU29tZSB2YSAtPiB2YVxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpXCIgaSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIGRhbmdsaW5nIDo9IExpbmtTZXRNYXAuTWFwLmFkZCBwICFteXNlbGYgIWRhbmdsaW5nXG5cbmxldCBwcmludF9wb3J0IHdpdGhfbGluayBub2RlIHAgaWQgZiA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJ7I31cIlxuICAgICAgfCBTb21lIFtdIC0+ICgpXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiXG4gICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgaSkpXG4gICAgICAgICAgbClcbiAgICBwLnBvcnRfc3RhdGVzXG4gICAgKG1hdGNoIHdpdGhfbGluayB3aXRoXG4gICAgfCBTb21lIHBhY2sgLT4gcHJpbnRfbGluayBwYWNrIChub2RlLCBpZClcbiAgICB8IE5vbmUgLT4gZnVuIF8gXyAtPiAoKSlcbiAgICBwLnBvcnRfbGlua3NcblxubGV0IHByaW50X2ludGYgd2l0aF9saW5rIG5vZGUgPVxuICBQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGlkIGYgc2kgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHNpLnNpdGVfbmFtZSBpblxuICAgICAgbWF0Y2ggc2kuc2l0ZV90eXBlIHdpdGhcbiAgICAgIHwgUG9ydCBwIC0+IHByaW50X3BvcnQgd2l0aF9saW5rIG5vZGUgcCBpZCBmXG4gICAgICB8IENvdW50ZXIgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiez0laX1cIiBpKVxuXG5sZXQgcHJpbnRfYWdlbnQgd2l0aF9pZCBsaW5rIG5vZGUgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBTb21lIGFnIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXMoQFs8aD4lYUBdKVwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ4JWk6XCIgaSkpXG4gICAgICAoaWYgd2l0aF9pZCB0aGVuXG4gICAgICAgICBhZy5ub2RlX2lkXG4gICAgICAgZWxzZVxuICAgICAgICAgTm9uZSlcbiAgICAgIGFnLm5vZGVfdHlwZSAocHJpbnRfaW50ZiBsaW5rIG5vZGUpIGFnLm5vZGVfc2l0ZXNcblxubGV0IHByaW50X2NjIGYgbWl4ID1cbiAgbGV0IGxpbmsgPSBTb21lIChyZWYgTGlua1NldE1hcC5NYXAuZW1wdHksIHJlZiAwKSBpblxuICBQcC5hcnJheVxuICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcXEAgXCIpXG4gICAgKGZ1biBhbCAtPiBQcC5hcnJheSBQcC5jb21tYSAoZnVuIGFyIC0+IHByaW50X2FnZW50IHRydWUgbGluayAoYWwsIGFyKSkpXG4gICAgZiBtaXhcblxubGV0IGdldF9jb2xvciA9XG4gIGxldCBzdG9yZSA9IEhhc2h0YmwuY3JlYXRlIDEwIGluXG4gIGZ1biBpIC0+XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBzdG9yZSBpXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCB2ID1cbiAgICAgICAgRm9ybWF0LnNwcmludGYgXCIjJXgleCV4XCIgKFJhbmRvbS5pbnQgMjU1KSAoUmFuZG9tLmludCAyNTUpXG4gICAgICAgICAgKFJhbmRvbS5pbnQgMjU1KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEhhc2h0YmwuYWRkIHN0b3JlIGkgdiBpblxuICAgICAgdlxuXG5sZXQgcHJpbnRfZG90X2NjIG5iX2NjIGYgbWl4ID1cbiAgUHAuYXJyYXkgUHAuZW1wdHlcbiAgICAoZnVuIGlsIC0+XG4gICAgICBQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGlyIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBhZyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgIFwibm9kZSVkXyVkXyVkIFtsYWJlbCA9IFxcXCJAWzxoPiVhQF1cXFwiLCBjb2xvciA9IFxcXCIlc1xcXCIsIFxcXG4gICAgICAgICAgICAgc3R5bGU9ZmlsbGVkXTtALFwiXG4gICAgICAgICAgICBuYl9jYyBpbCBpclxuICAgICAgICAgICAgKHByaW50X2FnZW50IGZhbHNlIE5vbmUgKGlsLCBpcikpXG4gICAgICAgICAgICAoU29tZSBhZykgKGdldF9jb2xvciBhZy5ub2RlX3R5cGUpO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJub2RlJWRfJWRfJWQgLT4gY291bnRlciVkIFtzdHlsZT1pbnZpc107QCxcIiBuYl9jYyBpbFxuICAgICAgICAgICAgaXIgbmJfY2MpKVxuICAgIGYgbWl4O1xuICBpZ25vcmVcbiAgQEAgQXJyYXkuaXRlcmlcbiAgICAgICAoZnVuIGFsIC0+XG4gICAgICAgICBBcnJheS5pdGVyaSAoZnVuIGFyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgYWcgLT5cbiAgICAgICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgICAgICAgKGZ1biBzIHNpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHNpLnNpdGVfdHlwZSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQ291bnRlciBfIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHAucG9ydF9saW5rcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBXSEFURVZFUiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNPTUUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBUWVBFIChfc2ksIF90eSkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBMSU5LUyBsaW5rcyAtPlxuICAgICAgICAgICAgICAgICAgICAgUHAubGlzdCBQcC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgKChhbCcsIGFyJyksIHMnKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhbCA8IGFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGFsID0gYWwnICYmIChhciA8IGFyJyB8fCAoYXIgPSBhcicgJiYgcyA8IHMnKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBtaXguKGFsJykuKGFyJykgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGFnJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJub2RlJWRfJWRfJWQgLT4gbm9kZSVkXyVkXyVkIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWlsbGFiZWw9XFxcIiVzXFxcIiwgaGVhZGxhYmVsPVxcXCIlc1xcXCIsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcj1ub25lXTtALFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJfY2MgYWwgYXIgbmJfY2MgYWwnIGFyJyBzaS5zaXRlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZycubm9kZV9zaXRlcy4ocycpLnNpdGVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgIGYgbGlua3MpKVxuICAgICAgICAgICAgICAgYWcubm9kZV9zaXRlcykpXG4gICAgICAgbWl4XG5cbigqXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogc3RyaW5nO1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxudHlwZSBjb25uZWN0ZWRfY29tcG9uZW50ID0gY2Nfbm9kZSBhcnJheVxuICopXG5cbmxldCB3cml0ZV9jY19wb3J0IG9iIHAgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3J0X2xpbmtzXCJcbiAgICAgIChmdW4gb2IgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBXSEFURVZFUiAtPiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvYiAoKVxuICAgICAgICB8IFNPTUUgLT4gWW9qc29uLkJhc2ljLndyaXRlX2Jvb2wgb2IgdHJ1ZVxuICAgICAgICB8IFRZUEUgKHNpLCB0eSkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIntcXFwic2l0ZV9uYW1lXFxcIjpcXFwiXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBzaSBpblxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIixcXFwiYWdlbnRfdHlwZVxcXCI6XFxcIlwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgdHkgaW5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJ9XCJcbiAgICAgICAgfCBMSU5LUyBsIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpclxuICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgIG9iIGwpXG4gICAgICBvYiBwLnBvcnRfbGlua3NcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInBvcnRfc3RhdGVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9vcHRpb24gKEpzb25VdGlsLndyaXRlX2xpc3QgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZykpXG4gICAgICBvYiBwLnBvcnRfc3RhdGVzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHdyaXRlX3NpdGUgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBmLnNpdGVfdHlwZSB3aXRoXG4gICAgfCBDb3VudGVyIGkgLT5cbiAgICAgIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJjb3VudGVyXCIgaW5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCcgaW5cbiAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgaVxuICAgIHwgUG9ydCBwIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwicG9ydFwiIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnIGluXG4gICAgICB3cml0ZV9jY19wb3J0IG9iIHBcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgd3JpdGVfY2Nfc2l0ZSBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2l0ZV9uYW1lXCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBmLnNpdGVfbmFtZVxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInNpdGVfdHlwZVwiIHdyaXRlX3NpdGUgb2IgZiBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCBsaW5rc19vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IFdIQVRFVkVSXG4gIHwgYEJvb2wgYiAtPlxuICAgIGxldCAoKSA9IGFzc2VydCBiIGluXG4gICAgU09NRVxuICB8IGBBc3NvYyBbIChcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpKTsgKFwiYWdlbnRfdHlwZVwiLCBgU3RyaW5nIHR5KSBdXG4gIHwgYEFzc29jIFsgKFwiYWdlbnRfdHlwZVwiLCBgU3RyaW5nIHR5KTsgKFwic2l0ZV9uYW1lXCIsIGBTdHJpbmcgc2kpIF0gLT5cbiAgICBUWVBFIChzaSwgdHkpXG4gIHwgYExpc3QgXyBhcyB4IC0+XG4gICAgbGV0IGVycm9yX21zZyA9IE5vbmUgaW5cbiAgICBMSU5LU1xuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIChKc29uVXRpbC5jb21wYWN0X3RvX3BhaXJcbiAgICAgICAgICAgIChKc29uVXRpbC5jb21wYWN0X3RvX3BhaXJcbiAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZylcbiAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZykpXG4gICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpKVxuICAgICAgICAgeClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBjY19wb3J0XCIsIHgpKVxuXG5sZXQgcmVhZF9jY19wb3J0IHAgbGIgPVxuICBsZXQgcG9ydF9saW5rcywgcG9ydF9zdGF0ZXMgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAocywgaSkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJwb3J0X2xpbmtzXCIgdGhlblxuICAgICAgICAgIGxpbmtzX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKSwgaVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwicG9ydF9zdGF0ZXNcIikgaW5cbiAgICAgICAgICAoIHMsXG4gICAgICAgICAgICBKc29uVXRpbC5yZWFkX29wdGlvblxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICApKVxuICAgICAgKExJTktTIFtdLCBTb21lIFtdKSBwIGxiXG4gIGluXG4gIHsgcG9ydF9saW5rczsgcG9ydF9zdGF0ZXMgfVxuXG5sZXQgcmVhZF9zaXRlIHAgbGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sYnIgcCBsYiBpblxuICBsZXQga2V5ID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIGxldCBvdXQgPVxuICAgIEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXNcbiAgICAgIChmdW4gcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcImNvdW50ZXJcIiB0aGVuXG4gICAgICAgICAgQ291bnRlciAoWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJwb3J0XCIpIGluXG4gICAgICAgICAgUG9ydCAocmVhZF9jY19wb3J0IHAgbGIpXG4gICAgICAgICkpXG4gICAgICBwIGxiXG4gIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBwIGxiIGluXG4gIG91dFxuXG5sZXQgcmVhZF9jY19zaXRlIHAgbGIgPVxuICBsZXQgc2l0ZV9uYW1lLCBzaXRlX3R5cGUgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAobiwgcykga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzaXRlX25hbWVcIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInNpdGVfdHlwZVwiKSBpblxuICAgICAgICAgIG4sIHJlYWRfc2l0ZSBwIGxiXG4gICAgICAgICkpXG4gICAgICAoXCJcIiwgQ291bnRlciAoLTEpKSBwIGxiXG4gIGluXG4gIHsgc2l0ZV9uYW1lOyBzaXRlX3R5cGUgfVxuXG5sZXQgd3JpdGVfY2Nfbm9kZSBvYiB4ID1cbiAgSnNvblV0aWwud3JpdGVfb3B0aW9uXG4gICAgKGZ1biBvYiBmIC0+XG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm5vZGVfdHlwZVwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2JcbiAgICAgICAgICBmLm5vZGVfdHlwZVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBmLm5vZGVfaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5vZGVfaWQgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJub2RlX2lkXCIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBub2RlX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9jb21tYSBvYlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibm9kZV9zaXRlc1wiXG4gICAgICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IHdyaXRlX2NjX3NpdGUpXG4gICAgICAgICAgb2IgZi5ub2RlX3NpdGVzXG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JylcbiAgICBvYiB4XG5cbmxldCByZWFkX2NjX25vZGUgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfb3B0aW9uXG4gICAgKGZ1biBwIGxiIC0+XG4gICAgICBsZXQgbm9kZV9pZCwgbm9kZV90eXBlLCBub2RlX3NpdGVzID1cbiAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAgICAgKGZ1biAoaWQsIG4sIHMpIGtleSBwIGxiIC0+XG4gICAgICAgICAgICBpZiBrZXkgPSBcIm5vZGVfaWRcIiB0aGVuXG4gICAgICAgICAgICAgIFNvbWUgKFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiKSwgbiwgc1xuICAgICAgICAgICAgZWxzZSBpZiBrZXkgPSBcIm5vZGVfdHlwZVwiIHRoZW5cbiAgICAgICAgICAgICAgaWQsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcIm5vZGVfc2l0ZXNcIikgaW5cbiAgICAgICAgICAgICAgaWQsIG4sIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IHJlYWRfY2Nfc2l0ZSBwIGxiXG4gICAgICAgICAgICApKVxuICAgICAgICAgIChOb25lLCBcIlwiLCBbfHxdKSBwIGxiXG4gICAgICBpblxuICAgICAgeyBub2RlX2lkOyBub2RlX3R5cGU7IG5vZGVfc2l0ZXMgfSlcbiAgICBwIGxiXG5cbmxldCB3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IG9iIGYgPVxuICBKc29uVXRpbC53cml0ZV9hcnJheSAoSnNvblV0aWwud3JpdGVfYXJyYXkgd3JpdGVfY2Nfbm9kZSkgb2IgZlxuXG5sZXQgcmVhZF9jb25uZWN0ZWRfY29tcG9uZW50IG9iIGYgPVxuICBZb2pzb24uQmFzaWMucmVhZF9hcnJheSAoWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgcmVhZF9jY19ub2RlKSBvYiBmXG5cbmxldCBzdHJpbmdfb2ZfY29ubmVjdGVkX2NvbXBvbmVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICBsZXQgKCkgPSB3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IG9iIHggaW5cbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCBjb25uZWN0ZWRfY29tcG9uZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9jb25uZWN0ZWRfY29tcG9uZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvdW50ZXJfaW5mbyA9IHtcbiAgY291bnRlcl9pbmZvX21pbjogaW50IG9wdGlvbjtcbiAgY291bnRlcl9pbmZvX21heDogaW50IG9wdGlvbjtcbiAgY291bnRlcl9kZWZhdWx0X3ZhbHVlOiBpbnQ7XG59XG5cbnR5cGUgJ2xpbmtzIHNpdGVfc2lnID0ge1xuICBpbnRlcm5hbF9zdGF0ZTogdW5pdCBOYW1lZERlY2xzLnQ7XG4gIGxpbmtzOiAnbGlua3Mgb3B0aW9uO1xuICBjb3VudGVyX2luZm86IGNvdW50ZXJfaW5mbyBvcHRpb247XG59XG5cbnR5cGUgdCA9IGJvb2wgYXJyYXkgYXJyYXkgc2l0ZV9zaWcgTmFtZWREZWNscy50XG5cbmxldCBmb2xkIGYgPSBOYW1lZERlY2xzLmZvbGQgKGZ1biBpIG4gbyBfIC0+IGYgaSBuIG8pXG5cbmxldCBudW1fb2Zfc2l0ZSA/YWdlbnRfbmFtZSBzaXRlX25hbWUgc2lnbmF0dXJlID1cbiAgbGV0IGtpbmQgPVxuICAgIG1hdGNoIGFnZW50X25hbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBcInNpdGUgbmFtZVwiXG4gICAgfCBTb21lIGFnZW50X25hbWUgLT4gXCJzaXRlIG5hbWUgZm9yIGFnZW50IFwiIF4gYWdlbnRfbmFtZVxuICBpblxuICBOYW1lZERlY2xzLmVsdF9pZCB+a2luZCBzaWduYXR1cmUgc2l0ZV9uYW1lXG5cbmxldCBzaXRlX29mX251bSBhZGRyIHNpZ25hdHVyZSA9XG4gIHRyeSBOYW1lZERlY2xzLmVsdF9uYW1lIHNpZ25hdHVyZSBhZGRyXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbnVtX29mX2ludGVybmFsX3N0YXRlIHNpdGVfaWQgc3RhdGUgc2lnbmF0dXJlID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfbmFtZSwgc2l0ZV9zaWcgPSBzaWduYXR1cmUuTmFtZWREZWNscy5kZWNscy4oc2l0ZV9pZCkgaW5cbiAgICBOYW1lZERlY2xzLmVsdF9pZFxuICAgICAgfmtpbmQ6KFwiaW50ZXJuYWwgc3RhdGUgZm9yIHNpdGUgXCIgXiBzaXRlX25hbWUpXG4gICAgICBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSBzdGF0ZVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGludGVybmFsX3N0YXRlX29mX3NpdGVfaWQgc2l0ZV9pZCB2YWxfaWQgc2lnbmF0dXJlID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBzaXRlX2lkIGluXG4gICAgTmFtZWREZWNscy5lbHRfbmFtZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSB2YWxfaWRcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBjb3VudGVyX29mX3NpdGVfaWQgc2l0ZV9pZCBzaWduYXR1cmUgPVxuICB0cnkgKE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgc2l0ZV9pZCkuY291bnRlcl9pbmZvXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgaGFzX2NvdW50ZXIgc2lnbmF0dXJlID1cbiAgZm9sZFxuICAgIChmdW4gcF9pZCBfIG9rIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBwX2lkIGluXG4gICAgICAgIG9rIHx8IG5vdCAoc2l0ZV9zaWcuY291bnRlcl9pbmZvID0gTm9uZSlcbiAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICBmYWxzZSBzaWduYXR1cmVcblxuKCpcbmxldCByZWFkX3Bvc2l0aW9uIHAgbGIgPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIgd2l0aFxuICB8IGBBc3NvYyBbIChcImxpbmVcIiwgYEludCBsaW5lKTsgKFwiY2hyXCIsIGBJbnQgY2hyKSBdXG4gIHwgYEFzc29jIFsgKFwiY2hyXCIsIGBJbnQgY2hyKTsgKFwibGluZVwiLCBgSW50IGxpbmUpIF0gLT5cbiAgICB7IGxpbmU7IGNociB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHBvc2l0aW9uXCIsIHgpKVxuXG5sZXQgd3JpdGVfcG9zaXRpb24gb2IgeyBsaW5lOyBjaHIgfSA9XG4gIFlvanNvbi53cml0ZV9hc3NvYyBvYiBbIFwibGluZVwiLCBgSW50IGxpbmU7IFwiY2hyXCIsIGBJbnQgY2hyIF1cbiopXG5cbmxldCBvbmVfdG9fanNvbiA9XG4gIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuIHNpZ25hdHVyZSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiaW50ZXJuYWxfc3RhdGVcIixcbiAgICAgICAgICAgIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSBzaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgKTtcbiAgICAgICAgICAoIFwibGlua3NcIixcbiAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAoZnVuIGxpbmtzIC0+XG4gICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGEgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChBcnJheS5mb2xkX3JpZ2h0IChmdW4gYiBjIC0+IGBCb29sIGIgOjogYykgYSBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgbGlua3MgW10pKVxuICAgICAgICAgICAgICBzaWduYXR1cmUubGlua3MgKTtcbiAgICAgICAgICAoIFwiY291bnRlcl9pbmZvXCIsXG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICggXCJtaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biB4IC0+IGBJbnQgeCkgYy5jb3VudGVyX2luZm9fbWluICk7XG4gICAgICAgICAgICAgICAgICAgICggXCJtYXhcIixcbiAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biB4IC0+IGBJbnQgeCkgYy5jb3VudGVyX2luZm9fbWF4ICk7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiLCBgSW50IGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlO1xuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgc2lnbmF0dXJlLmNvdW50ZXJfaW5mbyApO1xuICAgICAgICBdKVxuXG5sZXQgb25lX29mX2pzb24gOiBZb2pzb24uQmFzaWMudCAtPiBib29sIGFycmF5IGFycmF5IHNpdGVfc2lnIE5hbWVkRGVjbHMudCA9XG4gIE5hbWVkRGVjbHMub2ZfanNvbiAoZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcImludGVybmFsX3N0YXRlXCIsIGEpOyAoXCJsaW5rc1wiLCBiKTsgKFwiY291bnRlcl9pbmZvXCIsIGMpIF0gLT5cbiAgICAgIHtcbiAgICAgICAgaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgIE5hbWVkRGVjbHMub2ZfanNvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gKClcbiAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgYTtcbiAgICAgICAgbGlua3MgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsJyAtPlxuICAgICAgICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQm9vbCBiIC0+IGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgbCdcbiAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICBiO1xuICAgICAgICBjb3VudGVyX2luZm8gPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYEFzc29jXG4gICAgICAgICAgICAgICAgICBbIChcIm1pblwiLCBjMV9vcHQpOyAoXCJtYXhcIiwgYzJfb3B0KTsgKFwiZGVmYXVsdFwiLCBgSW50IGMzKSBdIC0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21pbiA9XG4gICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgfCBgSW50IGMgLT4gY1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgICAgIGMxX29wdDtcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19tYXggPVxuICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBjIC0+IGNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICAgICBjMl9vcHQ7XG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2RlZmF1bHRfdmFsdWUgPSBjMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGM7XG4gICAgICB9XG4gICAgfCB4IC0+XG4gICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuXG50eXBlIGNvdW50ZXJfYWdlbnRfaW5mbyA9IHsgaWQ6IGludDsgYXJpdHk6IGludDsgcG9ydHM6IGludCAqIGludCB9XG5cbnR5cGUgcyA9IHtcbiAgYWdlbnRfc2lnczogdCBOYW1lZERlY2xzLnQ7XG4gIGNvdW50ZXJfYWdlbnRfaW5mbzogY291bnRlcl9hZ2VudF9pbmZvIG9wdGlvbjtcbn1cblxubGV0IHNpemUgc2lncyA9IE5hbWVkRGVjbHMuc2l6ZSBzaWdzLmFnZW50X3NpZ3NcbmxldCBnZXQgc2lncyBhZ2VudF9pZCA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWdzLmFnZW50X3NpZ3MgYWdlbnRfaWRcbmxldCBhcml0eSBzaWdzIGFnZW50X2lkID0gTmFtZWREZWNscy5zaXplIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IG1heF9hcml0eSBzaWdzID1cbiAgTmFtZWREZWNscy5mb2xkIChmdW4gXyBfIHggYSAtPiBtYXggeCAoTmFtZWREZWNscy5zaXplIGEpKSAwIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgYWdlbnRfb2ZfbnVtIGkgc2lncyA9IE5hbWVkRGVjbHMuZWx0X25hbWUgc2lncy5hZ2VudF9zaWdzIGlcblxubGV0IG51bV9vZl9hZ2VudCBuYW1lIHNpZ3MgPVxuICBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcImFnZW50XCIgc2lncy5hZ2VudF9zaWdzIG5hbWVcblxubGV0IGlkX29mX3NpdGUgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eSkgc2l0ZV9uYW1lIHNpZ3MgPVxuICBsZXQgbiA9IG51bV9vZl9hZ2VudCBhZ2VudF90eSBzaWdzIGluXG4gIG51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHNpdGVfbmFtZSAoZ2V0IHNpZ3MgbilcblxubGV0IHNpdGVfb2ZfaWQgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID0gc2l0ZV9vZl9udW0gc2l0ZV9pZCAoZ2V0IHNpZ3MgYWdlbnRfaWQpXG5cbmxldCBpZF9vZl9pbnRlcm5hbF9zdGF0ZSAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5KSBzaXRlX25hbWUgc3RhdGUgc2lncyA9XG4gIGxldCBuID0gbnVtX29mX2FnZW50IGFnZW50X3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ25hdHVyZSA9IGdldCBzaWdzIG4gaW5cbiAgbGV0IHNpdGVfaWQgPSBudW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBzaXRlX25hbWUgc2lnbmF0dXJlIGluXG4gIG51bV9vZl9pbnRlcm5hbF9zdGF0ZSBzaXRlX2lkIHN0YXRlIHNpZ25hdHVyZVxuXG5sZXQgaW50ZXJuYWxfc3RhdGVfb2ZfaWQgYWdlbnRfaWQgaWRfc2l0ZSBpZF9zdGF0ZSBzaWdzID1cbiAgaW50ZXJuYWxfc3RhdGVfb2Zfc2l0ZV9pZCBpZF9zaXRlIGlkX3N0YXRlIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IGludGVybmFsX3N0YXRlc19udW1iZXIgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZ2VudF9pZCkgc2l0ZV9pZCBpblxuICAgIE5hbWVkRGVjbHMuc2l6ZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZ2VudF9pZCkgc2l0ZV9pZCBpblxuICAgIGlmIE5hbWVkRGVjbHMuc2l6ZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSA9IDAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgMFxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnIFwiU2lnbmF0dXJlLmRlZmF1bHRfbnVtX3ZhbHVlOiBpbnZhbGlkIHNpdGUgaWRlbnRpZmllclwiXG5cbmxldCByZWMgYWxsb3dlZF9saW5rIGFnMSBzMSBhZzIgczIgc2lncyA9XG4gIGlmIGFnMSA+IGFnMiB0aGVuXG4gICAgYWxsb3dlZF9saW5rIGFnMiBzMiBhZzEgczEgc2lnc1xuICBlbHNlIChcbiAgICB0cnlcbiAgICAgIG1hdGNoIChOYW1lZERlY2xzLmVsdF92YWwgKGdldCBzaWdzIGFnMSkgczEpLmxpbmtzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgbCAtPiBsLihhZzIgLSBhZzEpLihzMilcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJTaWduYXR1cmUuYWxsb3dlZF9saW5rOiBpbnZhbGlkIHNpdGUgaWRlbnRpZmllclwiXG4gIClcblxubGV0IGNyZWF0ZSB+Y291bnRlcnNfcGVyX2FnZW50IGFnZW50X3NpZ3MgPVxuICB7XG4gICAgYWdlbnRfc2lncztcbiAgICBjb3VudGVyX2FnZW50X2luZm8gPVxuICAgICAgKGlmIGNvdW50ZXJzX3Blcl9hZ2VudCA9IFtdIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICAoKiBJZiB0aGVyZSBpcyBhIGNvdW50ZXIgYWdlbnQsIHdlIGNob29zZSAwIGZvciBpdHMgYWdlbnQgaWQgYW5kIDAgYW5kIDEgYXMgaXRzIHBvcnQgaWRzICopXG4gICAgICAgICBTb21lIHsgaWQgPSAwOyBhcml0eSA9IDI7IHBvcnRzID0gMCwgMSB9KTtcbiAgfVxuXG5sZXQgaXNfY291bnRlcl9hZ2VudCBzaWdzIGFnZW50X2lkID1cbiAgbWF0Y2ggc2lncy5jb3VudGVyX2FnZW50X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGFnZW50X2luZm8gLT4gYWdlbnRfaWQgPSBhZ2VudF9pbmZvLmlkXG5cbmxldCBwb3J0c19pZl9jb3VudGVyX2FnZW50IHNpZ3MgYWdlbnRfaWQgPVxuICBtYXRjaCBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhZ2VudF9pbmZvIC0+XG4gICAgaWYgYWdlbnRfaWQgPSBhZ2VudF9pbmZvLmlkIHRoZW5cbiAgICAgIFNvbWUgYWdlbnRfaW5mby5wb3J0c1xuICAgIGVsc2VcbiAgICAgIE5vbmVcblxubGV0IHNpdGVfaXNfY291bnRlciBzaWdzIGFnX3R5IGlkID1cbiAgY291bnRlcl9vZl9zaXRlX2lkIGlkIChnZXQgc2lncyBhZ190eSkgPD4gTm9uZVxuXG5sZXQgZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzID1cbiAgbWF0Y2ggc2lncy5jb3VudGVyX2FnZW50X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJObyBjb3VudGVyIGFnZW50XCJcbiAgfCBTb21lIGNvdW50ZXJfYWdlbnRfaW5mbyAtPiBjb3VudGVyX2FnZW50X2luZm9cblxubGV0IGludmVydGVkX2NvdW50ZXJfc3VmZml4IDogc3RyaW5nID0gXCJfX2ludmVydGVkXCJcblxubGV0IGlzX2ludmVydGVkX2NvdW50ZXIgKGNvdW50ZXJfbmFtZSA6IHN0cmluZykgOiBib29sID1cbiAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OmludmVydGVkX2NvdW50ZXJfc3VmZml4IGNvdW50ZXJfbmFtZVxuXG5sZXQgcHJpbnRfYWdlbnQgc2lncyBmIGFnX3R5ID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIGFnZW50X29mX251bSBhZ190eSBzaWdzXG5cbmxldCBwcmludF9zaXRlIHNpZ3MgYWdfdHkgZiBpZCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBAQCBzaXRlX29mX2lkIGFnX3R5IGlkIHNpZ3NcblxubGV0IHByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSBmIGlkID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIGludGVybmFsX3N0YXRlX29mX2lkIGFnX3R5IHNpdGUgaWQgc2lnc1xuXG5sZXQgcHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwcmludF9zaXRlIHNpZ3MgYWdfdHkgZiBzaXRlXG4gIHwgU29tZSBpZCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc3slc31cIlxuICAgICAgKHNpdGVfb2ZfaWQgYWdfdHkgc2l0ZSBzaWdzKVxuICAgICAgKGludGVybmFsX3N0YXRlX29mX2lkIGFnX3R5IHNpdGUgaWQgc2lncylcblxubGV0IHByaW50X2NvdW50ZXJfaW5mbyBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjIC0+XG4gICAgKG1hdGNoIGMuY291bnRlcl9pbmZvX21pbiwgYy5jb3VudGVyX2luZm9fbWF4IHdpdGhcbiAgICB8IFNvbWUgaSwgU29tZSBqIHdoZW4gaSA9IGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiez0lZC8rPSVkfVwiIGkgalxuICAgIHwgaV9vcHQsIGpfb3B0IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiey09JXMvPSVkLys9JXN9XCJcbiAgICAgICAgKG1hdGNoIGlfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiLW9vXCJcbiAgICAgICAgfCBTb21lIGkgLT4gRm9ybWF0LnNwcmludGYgXCIlZFwiIGkpXG4gICAgICAgIGMuY291bnRlcl9kZWZhdWx0X3ZhbHVlXG4gICAgICAgIChtYXRjaCBqX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIi1vb1wiXG4gICAgICAgIHwgU29tZSBpIC0+IEZvcm1hdC5zcHJpbnRmIFwiJWRcIiBpKSlcblxubGV0IHByaW50X2NvdW50ZXIgc2lncyBhZ190eSBmIGlkID1cbiAgcHJpbnRfY291bnRlcl9pbmZvIGYgKGNvdW50ZXJfb2Zfc2l0ZV9pZCBpZCAoZ2V0IHNpZ3MgYWdfdHkpKVxuXG5sZXQgcHJpbnRfb25lID8oc2lncyA6IHMgb3B0aW9uKSAoaSA6IGludCkgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKVxuICAgIChzaWduYXR1cmUgOiB0KSA9XG4gIGxldCBwcF9pbnQgZiB4ID1cbiAgICBpZiBOYW1lZERlY2xzLnNpemUgeCA+IDAgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIlxuICAgICAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gXyBuYSBmICgpIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgbmEpKVxuICAgICAgICB4XG4gIGluXG4gIGxldCBwcF9saW5rID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gXyBfIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIGZ1biBpIGYgLT4gKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbGlua3MgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhXVwiXG4gICAgICAgICAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBhZyAtPlxuICAgICAgICAgICAgICAgICBQcC5hcnJheSBQcC5zcGFjZSAoZnVuIHNpIGYgYiAtPlxuICAgICAgICAgICAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHByaW50X3NpdGUgc2lncyAoaSArIGFnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBzaSAocHJpbnRfYWdlbnQgc2lncykgKGkgKyBhZykpKSlcbiAgICAgICAgICAgIGxpbmtzKVxuICBpblxuICAoTmFtZWREZWNscy5wcmludFxuICAgICB+c2VwOihmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLEAsXCIpXG4gICAgIChmdW4gXyBuYW1lIGYgc2l0ZV9zaWcgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYSVhJWFcIiBuYW1lIHBwX2ludCBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgKHBwX2xpbmsgaSkgc2l0ZV9zaWcubGlua3MgcHJpbnRfY291bnRlcl9pbmZvIHNpdGVfc2lnLmNvdW50ZXJfaW5mbykpXG4gICAgZiBzaWduYXR1cmVcblxubGV0IHByaW50IGYgc2lncyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBpIG4gZiBzaSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JSVhZ2VudDogJXMoJWEpQF1cIiBuIChwcmludF9vbmUgfnNpZ3MgaSkgc2kpKVxuICAgIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgdG9fanNvbiBzaWdzID0gTmFtZWREZWNscy50b19qc29uIG9uZV90b19qc29uIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgb2ZfanNvbiB2ID1cbiAgbGV0IGFnZW50X3NpZ3MgOiAnYSBzaXRlX3NpZyBOYW1lZERlY2xzLnQgTmFtZWREZWNscy50ID1cbiAgICBOYW1lZERlY2xzLm9mX2pzb24gb25lX29mX2pzb24gdlxuICBpblxuICBtYXRjaFxuICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIFwiX19jb3VudGVyX2FnZW50XCIgYWdlbnRfc2lncy5OYW1lZERlY2xzLmZpbmRlclxuICB3aXRoXG4gIHwgU29tZSBpZCAtPlxuICAgIGxldCBhZ2VudF9zaWduYXR1cmUgPSBOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lncyBpZCBpblxuICAgIGxldCBwb3J0cyA9XG4gICAgICAoIG51bV9vZl9zaXRlIChcImFcIiwgTG9jLmR1bW15KSBhZ2VudF9zaWduYXR1cmUsXG4gICAgICAgIG51bV9vZl9zaXRlIChcImJcIiwgTG9jLmR1bW15KSBhZ2VudF9zaWduYXR1cmUgKVxuICAgIGluXG4gICAgeyBhZ2VudF9zaWdzOyBjb3VudGVyX2FnZW50X2luZm8gPSBTb21lIHsgaWQ7IGFyaXR5ID0gMjsgcG9ydHMgfSB9XG4gIHwgTm9uZSAtPiB7IGFnZW50X3NpZ3M7IGNvdW50ZXJfYWdlbnRfaW5mbyA9IE5vbmUgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjY19zaXRlID0geyBzaXRlX2xpbms6IChpbnQgKiBpbnQpIG9wdGlvbjsgc2l0ZV9zdGF0ZTogaW50IG9wdGlvbiB9XG5cbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBpbnQ7XG4gIG5vZGVfaWRfaW5fd2l0bmVzczogaW50O1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxuXG50eXBlIGNvbm5lY3RlZF9jb21wb25lbnQgPSBjY19ub2RlIGFycmF5XG5cbmxldCByZWMgYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgZG9uID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgKHgsIHkpIDo6IHEgLT5cbiAgICBsZXQgbyA9IGEuKHgpIGluXG4gICAgbGV0IHAgPSBiLih5KSBpblxuICAgIG8ubm9kZV90eXBlID0gcC5ub2RlX3R5cGVcbiAgICAmJlxuICAgIGxldCBpX29rID1cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgIChmdW4gXyBiIHggeSAtPlxuICAgICAgICAgIGJcbiAgICAgICAgICAmJlxuICAgICAgICAgIG1hdGNoIHguc2l0ZV9zdGF0ZSwgeS5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGEgPSBiXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgICB8IChTb21lIF8gfCBOb25lKSwgXyAtPiBmYWxzZSlcbiAgICAgICAgdHJ1ZSBvLm5vZGVfc2l0ZXMgcC5ub2RlX3NpdGVzXG4gICAgaW5cbiAgICBpX29rXG4gICAgJiZcbiAgICAobWF0Y2hcbiAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgKGZ1biBfIGMgeCB5IC0+XG4gICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY1xuICAgICAgICAgICB8IFNvbWUgdG9kbyAtPlxuICAgICAgICAgICAgIChtYXRjaCB4LnNpdGVfbGluaywgeS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gY1xuICAgICAgICAgICAgIHwgU29tZSAoYSwgcyksIFNvbWUgKGIsIHMnKSAtPlxuICAgICAgICAgICAgICAgaWYgcyA8PiBzJyB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICggTGlzdC5maW5kX2FsbCAoZnVuIChhJywgYicpIC0+IGEgPSBhJyB8fCBiID0gYicpIGRvbixcbiAgICAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9hbGwgKGZ1biAoYScsIGInKSAtPiBhID0gYScgfHwgYiA9IGInKSB0b2RvIClcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfLCBfIHwgXywgXyA6OiBfIDo6IF8gfCBbIF8gXSwgWyBfIF0gLT4gTm9uZVxuICAgICAgICAgICAgICAgICB8IFsgKGEnLCBiJykgXSwgW10gfCBbXSwgWyAoYScsIGInKSBdIC0+XG4gICAgICAgICAgICAgICAgICAgaWYgYSA9IGEnICYmIGIgPSBiJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBjXG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICB8IFtdLCBbXSAtPiBTb21lICgoYSwgYikgOjogdG9kbylcbiAgICAgICAgICAgICAgICkpKVxuICAgICAgICAgKFNvbWUgcSkgby5ub2RlX3NpdGVzIHAubm9kZV9zaXRlc1xuICAgICB3aXRoXG4gICAgfCBTb21lIHRvZG8nIC0+IGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiICgoeCwgeSkgOjogZG9uKSB0b2RvJ1xuICAgIHwgXyAtPiBmYWxzZSlcblxubGV0IGNsYXNzaWZ5X2J5X3R5cGUgc2lncyBtaXggPVxuICBsZXQgbGVuID0gU2lnbmF0dXJlLnNpemUgc2lncyBpblxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsZW4gKDAsIFtdKSBpblxuICBsZXQgY2xhc3NpZnkgaWQgYWcgPVxuICAgIGxldCBuYiwgYWdzID0gb3V0LihhZy5ub2RlX3R5cGUpIGluXG4gICAgb3V0LihhZy5ub2RlX3R5cGUpIDwtIHN1Y2MgbmIsIGlkIDo6IGFnc1xuICBpblxuICBsZXQgKCkgPSBBcnJheS5pdGVyaSBjbGFzc2lmeSBtaXggaW5cbiAgb3V0XG5cbmxldCBlcXVhbCBjYnRfYSBhIGNidF9iIGIgPVxuICBtYXRjaCBUb29scy5hcnJheV9taW5fZXF1YWxfbm90X251bGwgY2J0X2EgY2J0X2Igd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIChbXSwgYWdzKSAtPiBhZ3MgPSBbXVxuICB8IFNvbWUgKGgxIDo6IF8sIGFncykgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBib29sIGFnIC0+IGJvb2wgfHwgYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgW10gWyBoMSwgYWcgXSlcbiAgICAgIGZhbHNlIGFnc1xuXG5sZXQgaGFzaF9wcmltZSA9IDI5XG5cbmxldCBjb2Fyc2VfaGFzaCBjYnQgPVxuICBBcnJheS5mb2xkX3JpZ2h0IChmdW4gKGwsIF8pIGFjYyAtPiBsICsgKGhhc2hfcHJpbWUgKiBhY2MpKSBjYnQgMFxuXG50eXBlIHQgPSAoaW50ICogKGludCAqIGludCBsaXN0KSBhcnJheSAqIGNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgTW9kcy5JbnRNYXAudFxuXG5sZXQgZW1wdHkgPSBNb2RzLkludE1hcC5lbXB0eVxuXG5sZXQgaW5jcmVtZW50X2luX3NuYXBzaG90IH5yYXcgc2lncyB4IHMgPVxuICBsZXQgY2J0X3ggPSBjbGFzc2lmeV9ieV90eXBlIHNpZ3MgeCBpblxuICBsZXQgaHMgPSBjb2Fyc2VfaGFzaCBjYnRfeCBpblxuICBsZXQgbCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbXSBocyBzIGluXG4gIGxldCByZWMgYXV4X2luY3JlbWVudCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIDEsIGNidF94LCB4IF1cbiAgICB8ICgobiwgY2J0X3ksIHkpIGFzIGgpIDo6IHQgLT5cbiAgICAgIGlmIGVxdWFsIGNidF94IHggY2J0X3kgeSB0aGVuXG4gICAgICAgIChzdWNjIG4sIGNidF95LCB5KSA6OiB0XG4gICAgICBlbHNlXG4gICAgICAgIGggOjogYXV4X2luY3JlbWVudCB0XG4gIGluXG4gIE1vZHMuSW50TWFwLmFkZCBoc1xuICAgIChpZiByYXcgdGhlblxuICAgICAgICgxLCBjYnRfeCwgeCkgOjogbFxuICAgICBlbHNlXG4gICAgICAgYXV4X2luY3JlbWVudCBsKVxuICAgIHNcblxubGV0IHJlYyBjb3VudGVyX3ZhbHVlIGNjIChuaWQsIHNpZCkgY291bnQgPVxuICBsZXQgYWcgPSBjYy4obmlkKSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpZCBhY2Mgc2kgLT5cbiAgICAgIGlmIGlkID0gc2lkIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc2kuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgeCAtPiBjb3VudGVyX3ZhbHVlIGNjIHggKGFjYyArIDEpXG4gICAgICApKVxuICAgIGNvdW50IGFnLm5vZGVfc2l0ZXNcblxubGV0IGNjX3RvX3VzZXJfY2MgPyhrZWVwX2ludmVydGVkX2NvdW50ZXJzIDogYm9vbCA9IGZhbHNlKSB+ZGVidWdfbW9kZSB+cmF3IHNpZ3NcbiAgICBjYyA9XG4gIGxldCByIDogUmVuYW1pbmcudCA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCAoY2NfbGlzdF93aXRob3V0X2NvdW50ZXJzLCBpbmRleGVzLCBfKSA6IGNjX25vZGUgbGlzdCAqIFJlbmFtaW5nLnQgKiBpbnQgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSAoYWNjLCBpbmRleGVzLCBwb3MpIGFnIC0+XG4gICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgYWcubm9kZV90eXBlIHRoZW5cbiAgICAgICAgICBhY2MsIGluZGV4ZXMsIHBvc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaW5kZXhlcycgPVxuICAgICAgICAgICAgaWYgaSA9IHBvcyB0aGVuXG4gICAgICAgICAgICAgIGluZGV4ZXNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaSBwb3MgaW5kZXhlcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiSW5qZWN0aXZpdHkgb2YgcmVuYW1pbmcgaW4gc25hcHNob3RcIikpXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IHJcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFnIDo6IGFjYywgaW5kZXhlcycsIHBvcyArIDFcbiAgICAgICAgKSlcbiAgICAgIChbXSwgciwgMCkgY2NcbiAgaW5cbiAgbGV0IGNjX3dpdGhvdXRfY291bnRlcnMgOiBjY19ub2RlIGFycmF5ID1cbiAgICBBcnJheS5vZl9saXN0IChMaXN0LnJldiBjY19saXN0X3dpdGhvdXRfY291bnRlcnMpXG4gIGluXG4gIFt8XG4gICAgQXJyYXkubWFwXG4gICAgICAoZnVuIGFnIC0+XG4gICAgICAgIGxldCBub2RlX3NpdGVzX2FsbCA6IFVzZXJfZ3JhcGguY2Nfc2l0ZSBhcnJheSA9XG4gICAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgICAgKGZ1biBpZCBzaSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPVxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZy5ub2RlX3R5cGUpXG4gICAgICAgICAgICAgICAgICAgIGlkO1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgIChsZXQgcG9ydF9zdGF0ZXMgPVxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2kuc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBbXVxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnLm5vZGVfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKGRuX2lkLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGRuX2lkJyA9XG4gICAgICAgICAgICAgICAgICAgICAgIHRyeSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmRleGVzIGRuX2lkXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggUmVuYW1pbmcuVW5kZWZpbmVkIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGRuX2lkXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBjYy4oZG5faWQpLm5vZGVfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLkNvdW50ZXIgKGNvdW50ZXJfdmFsdWUgY2MgKGRuX2lkLCBzKSAwKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLkxJTktTIFsgKDAsIGRuX2lkJyksIHMgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBhZy5ub2RlX3NpdGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub2RlX3NpdGVzIDogVXNlcl9ncmFwaC5jY19zaXRlIGFycmF5ID1cbiAgICAgICAgICBpZiBrZWVwX2ludmVydGVkX2NvdW50ZXJzIHRoZW5cbiAgICAgICAgICAgIG5vZGVfc2l0ZXNfYWxsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCogUmVtb3ZlIGludmVydGVkIGNvdW50ZXJzIGZyb20gdXNlciBzbmFwc2hvdCAqKVxuICAgICAgICAgICAgbm9kZV9zaXRlc19hbGwgfD4gQXJyYXkudG9fbGlzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgKGZ1biAoc2l0ZSA6IFVzZXJfZ3JhcGguY2Nfc2l0ZSkgOiBib29sIC0+XG4gICAgICAgICAgICAgICAgICAgbm90IChTaWduYXR1cmUuaXNfaW52ZXJ0ZWRfY291bnRlciBzaXRlLnNpdGVfbmFtZSkpXG4gICAgICAgICAgICB8PiBBcnJheS5vZl9saXN0XG4gICAgICAgIGluXG5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV9pZCA9XG4gICAgICAgICAgICAgIChpZiByYXcgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIGFnLm5vZGVfaWRfaW5fd2l0bmVzc1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV90eXBlID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIGFnLm5vZGVfdHlwZTtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV9zaXRlcztcbiAgICAgICAgICB9KVxuICAgICAgY2Nfd2l0aG91dF9jb3VudGVycztcbiAgfF1cblxubGV0IGZvbGQgZiB4IHMgPVxuICBNb2RzLkludE1hcC5mb2xkXG4gICAgKGZ1biBfIGwgYWNjIC0+IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAobmIsIF8sIGNjKSAtPiBmIGEgbmIgY2MpIGFjYyBsKVxuICAgIHMgeFxuXG5sZXQgZXhwb3J0IH5kZWJ1Z19tb2RlIH5yYXcgc2lncyBzID1cbiAgZm9sZCAoZnVuIGEgeCB5IC0+ICh4LCBjY190b191c2VyX2NjIH5kZWJ1Z19tb2RlIH5yYXcgc2lncyB5KSA6OiBhKSBbXSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnQgKiBpbnRcbigqKiBhZ2VudF9pZCAqIGFnZW50X3R5cGUgKilcblxudHlwZSBhZyA9IHRcblxubGV0IG1ha2UgfmlkIH5zb3J0ID0gaWQsIHNvcnRcblxubGV0IHByaW50ID9zaWdzIH53aXRoX2lkIGYgKGksIHR5KSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSB0eSAoZnVuIGYgLT5cbiAgICAgICAgaWYgd2l0aF9pZCB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIvKiVpKi9cIiBpKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laVwiIGlcblxubGV0IHByaW50X3NpdGUgP3NpZ3MgKGksIGFnZW50KSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdlbnQgZiBpZFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaVwiIGkgaWRcblxubGV0IHByaW50X2ludGVybmFsID9zaWdzIChpLCBhZ2VudCkgc2l0ZSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYWdlbnQgc2l0ZSBmIChTb21lIGlkKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaX4laVwiIGkgc2l0ZSBpZFxuXG5sZXQgcHJpbnRfcmF3X2ludGVybmFsID9zaWdzIChpLCBhZ2VudCkgc2l0ZSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnZW50IHNpdGUgZiBpZFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaX4laVwiIGkgc2l0ZSBpZFxuXG5sZXQgcmVuYW1lIH5kZWJ1Z19tb2RlIGluaiAobl9pZCwgbl90eSkgPVxuICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogbl9pZCwgbl90eVxuXG5sZXQgc29ydCAoXywgdHkpID0gdHlcbmxldCBpZCAoaWQsIF8pID0gaWRcbmxldCBjb21wYXJlIChpZDEsIF8pIChpZDIsIF8pID0gTW9kcy5pbnRfY29tcGFyZSBpZDEgaWQyXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9IFwiXFxcImFnZW50XFxcIjp7XFxcImlkXFxcIjowLFxcXCJ0eXBlXFxcIjoxfVwiXG5cbmxldCB3cml0ZV9qc29uIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfanNvbiBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiXG5cbmxldCB0b19qc29uIChpZCwgdHkpID0gYExpc3QgWyBgSW50IGlkOyBgSW50IHR5IF1cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCBpZDsgYEludCB0eSBdIC0+IGlkLCB0eVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcblxubW9kdWxlIFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gYWdcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gcHJpbnQgP3NpZ3M6Tm9uZSB+d2l0aF9pZDp0cnVlXG5lbmQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRWRnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBZ2VudC50ICogaW50XG4gICgqKiBhZ2VudCAqIHNpdGUgKilcblxuICBsZXQgX2NvbXBhcmUgKChuLCBfKSwgcykgKChuJywgXyksIHMnKSA9XG4gICAgbGV0IGMgPSBNb2RzLmludF9jb21wYXJlIG4gbicgaW5cbiAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgY1xuICAgIGVsc2VcbiAgICAgIE1vZHMuaW50X2NvbXBhcmUgcyBzJ1xuXG4gICgqIGxldCBkdW1teV9saW5rID0gKCgtMSwtMSksLTEpICopXG5lbmRcblxuKCogZnVuY3Rpb25zIHVzaW5nIHRoZSBjYWNoZSBhcmUgcmVzcG9uc2libGUgb2YgcmVzZXRpbmcgdGhlIGNhY2hlIGF0IGV4aXQgKilcbm1vZHVsZSBDYWNoZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdGVzdHM6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gICAgYmFnOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICAgIG11dGFibGUgbGltaXQ6IGludDtcbiAgfVxuXG4gIGxldCBpbnRfbCA9IDMxICgqU3lzLmludF9zaXplKilcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICB7IHRlc3RzID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgMDsgYmFnID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgMDsgbGltaXQgPSAwIH1cblxuICBsZXQgbWFyayB0IGkgPVxuICAgIGxldCB4ID0gaSAvIGludF9sIGluXG4gICAgbGV0IG9sZCA9IE1vZHMuRHluQXJyYXkuZ2V0IHQudGVzdHMgeCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBvbGQgPSAwIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0LmJhZyB0LmxpbWl0IHggaW5cbiAgICAgICAgdC5saW1pdCA8LSBzdWNjIHQubGltaXRcbiAgICAgIClcbiAgICBpblxuICAgIE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgeCAob2xkIGxvciAoMSBsc2wgKGkgbW9kIGludF9sKSkpXG5cbiAgbGV0IHRlc3QgdCBpID1cbiAgICBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIChpIC8gaW50X2wpIGxhbmQgKDEgbHNsIChpIG1vZCBpbnRfbCkpIDw+IDBcblxuICBsZXQgcmVzZXQgdCA9XG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCB0LnRlc3RzIChNb2RzLkR5bkFycmF5LmdldCB0LmJhZyBpKSAwKVxuICAgICAgICB0LmxpbWl0XG4gICAgaW5cbiAgICB0LmxpbWl0IDwtIDBcblxuICBsZXQgaXRlcmlfcmVzZXQgZiB0ID1cbiAgICBsZXQgKCkgPVxuICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgKGZ1biBrIC0+XG4gICAgICAgICAgbGV0IGkgPSBNb2RzLkR5bkFycmF5LmdldCB0LmJhZyBrIGluXG4gICAgICAgICAgbGV0IHYgPSBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIGkgaW5cbiAgICAgICAgICBpZiB2IDw+IDAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaW50X2wgKiBpIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBUb29scy5pdGVyaVxuICAgICAgICAgICAgICAgIChmdW4gaiAtPiBpZiB2IGxhbmQgKDEgbHNsIGopIDw+IDAgdGhlbiBmIChhY2MgKyBqKSlcbiAgICAgICAgICAgICAgICBpbnRfbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgaSAwXG4gICAgICAgICAgKSlcbiAgICAgICAgdC5saW1pdFxuICAgIGluXG4gICAgdC5saW1pdCA8LSAwXG5lbmRcblxubGV0IGdsdWVfY29ubmVjdGVkX2NvbXBvbmVudCBsaW5rcyBjYWNoZSBjY3Mgbm9kZTEgbm9kZTIgPVxuICBsZXQgY2NfaWRfb3AgPSBNb2RzLkR5bkFycmF5LmdldCBjY3Mgbm9kZTIgaW5cbiAgbGV0IHJlYyBleHBsb3JlX3NpdGUgaWQgc2l0ZSBuZXh0ID1cbiAgICBpZiBzaXRlID0gMCB0aGVuXG4gICAgICBuZXh0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgfCBTb21lICgoaWQnLCBfKSwgXykgLT5cbiAgICAgICAgaWYgTW9kcy5EeW5BcnJheS5nZXQgY2NzIGlkJyA9IGNjX2lkX29wIHx8IENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGV4cGxvcmVfc2l0ZSBpZCAocHJlZCBzaXRlKSAoaWQnIDo6IG5leHQpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCByZWMgaXNfaW5fY2MgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgaXNfaW5fY2NcbiAgICAgICAgKGV4cGxvcmVfc2l0ZSBpZCAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpIG5leHQpXG4gICAgICAgIHRvZG9zXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBDYWNoZS5pdGVyaV9yZXNldCAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGkgY2NfaWRfb3ApIGNhY2hlXG4gICAgICB8IF8gLT4gaXNfaW5fY2MgW10gbmV4dClcbiAgaW5cbiAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBub2RlMSBpblxuICBpc19pbl9jYyBbXSBbIG5vZGUxIF1cblxubGV0IHNlcGFyYXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgbGlua3MgKGNhY2hlMSwgY2FjaGUyKSBjY3Mgbm9kZTEgbm9kZTIgPVxuICBsZXQgb2xkX2NjX2lkID0gT3B0aW9uX3V0aWwudW5zb21lICgtMSkgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBub2RlMSkgaW5cbiAgbGV0IHJlYyBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCBzaXRlIG5leHQgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIFNvbWUgbmV4dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKS4ocHJlZCBzaXRlKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgfCBTb21lICgoaWQnLCBfKSwgXykgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBtYXRjaCBkc3RfY2FjaGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgIHwgU29tZSBkYyAtPiBDYWNoZS50ZXN0IGRjIGlkJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgKGlkJyA6OiBuZXh0KVxuICAgICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgaWQgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSBuZXh0XG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIG5leHQnIC0+IG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgbmV4dCcgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIENhY2hlLml0ZXJpX3Jlc2V0IChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaSAoU29tZSBvcmlnKSkgY2FjaGVcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAob2xkX2NjX2lkLCBvcmlnKVxuICAgICAgfCBfIC0+IG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgW10gbmV4dClcbiAgaW5cbiAgbGV0IHJlYyBpbl9zYW1lX2NjIG90aGVyX29yaWcgb3RoZXJfY2FjaGUgb3RoZXJfbmV4dCB0aGlzX29yaWcgdGhpc19jYWNoZVxuICAgICAgdGhpc19uZXh0ID0gZnVuY3Rpb25cbiAgICB8IGlkIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGluc3BlY3Rfc2l0ZSB0aGlzX2NhY2hlIH5kc3RfY2FjaGU6b3RoZXJfY2FjaGUgaWRcbiAgICAgICAgICAgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKVxuICAgICAgICAgICB0aGlzX25leHRcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgdGhpc19jYWNoZSBpblxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCBvdGhlcl9jYWNoZSBpblxuICAgICAgICBOb25lXG4gICAgICB8IFNvbWUgbmV4dCcgLT5cbiAgICAgICAgaW5fc2FtZV9jYyBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIG90aGVyX25leHQgdGhpc19vcmlnIHRoaXNfY2FjaGUgbmV4dCdcbiAgICAgICAgICB0b2RvcylcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggdGhpc19uZXh0IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgaWYgQ2FjaGUudGVzdCB0aGlzX2NhY2hlIG9sZF9jY19pZCB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCB0aGlzX2NhY2hlIGluXG4gICAgICAgICAgbWFya19uZXdfY2Mgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBbXSBvdGhlcl9uZXh0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgb3RoZXJfY2FjaGUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgQ2FjaGUuaXRlcmlfcmVzZXRcbiAgICAgICAgICAgICAgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBpIChTb21lIHRoaXNfb3JpZykpXG4gICAgICAgICAgICAgIHRoaXNfY2FjaGVcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWUgKG9sZF9jY19pZCwgdGhpc19vcmlnKVxuICAgICAgICApXG4gICAgICB8IF8gLT5cbiAgICAgICAgaW5fc2FtZV9jYyB0aGlzX29yaWcgdGhpc19jYWNoZSB0aGlzX25leHQgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBbXVxuICAgICAgICAgIG90aGVyX25leHQpXG4gIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUxIG5vZGUxIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUyIG5vZGUyIGluXG4gIGluX3NhbWVfY2Mgbm9kZTEgY2FjaGUxIFsgbm9kZTEgXSBub2RlMiBjYWNoZTIgW10gWyBub2RlMiBdXG5cbnR5cGUgdGFibGVzID0ge1xuICBjb25uZWN0OiBFZGdlLnQgb3B0aW9uIGFycmF5IE1vZHMuRHluQXJyYXkudDtcbiAgc3RhdGU6IGludCBvcHRpb24gYXJyYXkgTW9kcy5EeW5BcnJheS50O1xuICBzb3J0OiBpbnQgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgY29ubmVjdGVkX2NvbXBvbmVudDogaW50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQgb3B0aW9uO1xuICBjYWNoZXM6IENhY2hlLnQgKiBDYWNoZS50O1xufVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGFibGVzOiB0YWJsZXMgb3B0aW9uO1xuICBtaXNzaW5nczogTW9kcy5JbnQyU2V0LnQ7XG4gIGZyZWVfaWQ6IGludCAqIGludCBsaXN0O1xufVxuKCoqIChhZ2VudCxzaXRlIC0+IGJpbmRpbmdfc3RhdGU7IG1pc3NpbmdzKTtcbiAgICBhZ2VudCxzaXRlIC0+IGludGVybmFsX3N0YXRlOyBhZ2VudCAtPiBzb3J0OyBmcmVlX2lkXG4gICAgdGhlIGZyZWUgc2l0ZXMgYXJlIG5laXRoZXIgaW4gbWlzc2luZ3Mgbm9yIGluIGxpbmtpbmdfZGVzdGluYXRpb24gKilcblxubGV0IGVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID1cbiAge1xuICAgIHRhYmxlcyA9XG4gICAgICBTb21lXG4gICAgICAgIHtcbiAgICAgICAgICBjb25uZWN0ID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgW3x8XTtcbiAgICAgICAgICBzdGF0ZSA9IE1vZHMuRHluQXJyYXkubWFrZSAxIFt8fF07XG4gICAgICAgICAgc29ydCA9IE1vZHMuRHluQXJyYXkubWFrZSAxIE5vbmU7XG4gICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudCA9XG4gICAgICAgICAgICAoaWYgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyB0aGVuXG4gICAgICAgICAgICAgICBTb21lIChNb2RzLkR5bkFycmF5Lm1ha2UgMSBOb25lKVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIE5vbmUpO1xuICAgICAgICAgIGNhY2hlcyA9IENhY2hlLmNyZWF0ZSAoKSwgQ2FjaGUuY3JlYXRlICgpO1xuICAgICAgICB9O1xuICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmVtcHR5O1xuICAgIGZyZWVfaWQgPSAwLCBbXTtcbiAgfVxuXG5sZXQgY29weSBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIHtcbiAgICAgIHRhYmxlcyA9XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25uZWN0ID0gTW9kcy5EeW5BcnJheS5tYXAgQXJyYXkuY29weSB0YWJsZXMuY29ubmVjdDtcbiAgICAgICAgICAgIHN0YXRlID0gTW9kcy5EeW5BcnJheS5tYXAgQXJyYXkuY29weSB0YWJsZXMuc3RhdGU7XG4gICAgICAgICAgICBzb3J0ID0gTW9kcy5EeW5BcnJheS5jb3B5IHRhYmxlcy5zb3J0O1xuICAgICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudCA9XG4gICAgICAgICAgICAgIChtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBjY3MgLT4gU29tZSAoTW9kcy5EeW5BcnJheS5jb3B5IGNjcykpO1xuICAgICAgICAgICAgY2FjaGVzID0gQ2FjaGUuY3JlYXRlICgpLCBDYWNoZS5jcmVhdGUgKCk7XG4gICAgICAgICAgfTtcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5ncztcbiAgICB9XG5cbnR5cGUgc3RhdHMgPSB7IG5iX2FnZW50czogaW50IH1cblxubGV0IHN0YXRzIGdyYXBoID1cbiAgbGV0IHRvcF9pZCwgZnJlZV9pZHMgPSBncmFwaC5mcmVlX2lkIGluXG4gIHsgbmJfYWdlbnRzID0gdG9wX2lkIC0gTGlzdC5sZW5ndGggZnJlZV9pZHMgfVxuXG5sZXQgYWRkX2FnZW50ID9pZCBzaWdzIHR5IGdyYXBoID1cbiAgbGV0IGFyID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkgaW5cbiAgbGV0IGFsID0gQXJyYXkubWFrZSBhciBOb25lIGluXG4gIGxldCBhaSA9IEFycmF5Lm1ha2UgYXIgTm9uZSBpblxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCBoLCBmcmVlX2lkID1cbiAgICAgIG1hdGNoIGlkIHdpdGhcbiAgICAgIHwgU29tZSBpZCAtPlxuICAgICAgICAoIGlkLFxuICAgICAgICAgIGxldCBuZXdfaWQsIGwgPSBncmFwaC5mcmVlX2lkIGluXG4gICAgICAgICAgaWYgaWQgPCBuZXdfaWQgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBMaXN0LnBhcnRpdGlvbiAoZnVuIGkgLT4gaSA9IGlkKSBsIHdpdGhcbiAgICAgICAgICAgIHwgWyBfIF0sIHQgLT4gbmV3X2lkLCB0XG4gICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgIChcIlRyeSB0byBhZGQgYW4gYWdlbnQgd2l0aCBhIHRoZSBmcmVlIGlkIFwiXG4gICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgaWQpKSlcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICggc3VjYyBpZCxcbiAgICAgICAgICAgICAgVG9vbHMucmVjdGkgKGZ1biBhY2MgayAtPiAoayArIG5ld19pZCkgOjogYWNjKSBsIChpZCAtIG5ld19pZCkgKSApXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGdyYXBoLmZyZWVfaWQgd2l0aFxuICAgICAgICB8IG5ld19pZCwgaCA6OiB0IC0+IGgsIChuZXdfaWQsIHQpXG4gICAgICAgIHwgbmV3X2lkLCBbXSAtPiBuZXdfaWQsIChzdWNjIG5ld19pZCwgW10pKVxuICAgIGluXG4gICAgbGV0IG1pc3NpbmdzJyA9XG4gICAgICBUb29scy5yZWN0aSAoZnVuIGEgcyAtPiBNb2RzLkludDJTZXQuYWRkIChoLCBzKSBhKSBncmFwaC5taXNzaW5ncyBhclxuICAgIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLmNvbm5lY3QgaCBhbCBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zdGF0ZSBoIGFpIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnNvcnQgaCAoU29tZSB0eSkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBoIChTb21lIGgpXG4gICAgaW5cbiAgICBoLCB7IHRhYmxlcyA9IFNvbWUgdGFibGVzOyBtaXNzaW5ncyA9IG1pc3NpbmdzJzsgZnJlZV9pZCB9XG5cbmxldCBhZGRfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBOb25lIGluXG4gICAge1xuICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5yZW1vdmUgKGFnLCBzKSBncmFwaC5taXNzaW5ncztcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgIH1cblxubGV0IGFkZF9pbnRlcm5hbCBhZyBzIGkgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSA8LSBTb21lIGkgaW5cbiAgICB7IHRhYmxlcyA9IFNvbWUgdGFibGVzOyBtaXNzaW5ncyA9IGdyYXBoLm1pc3NpbmdzOyBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZCB9XG5cbmxldCBhZGRfbGluayAoYWcsIHR5KSBzIChhZycsIHR5JykgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBTb21lICgoYWcnLCB0eScpLCBzJylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcnKS4ocycpIDwtIFNvbWUgKChhZywgdHkpLCBzKVxuICAgIGluXG4gICAgbGV0IG91dCA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPlxuICAgICAgICBsZXQgaSA9IE9wdGlvbl91dGlsLnVuc29tZSAoLTEpIChNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcpIGluXG4gICAgICAgIGxldCBqID0gT3B0aW9uX3V0aWwudW5zb21lICgtMikgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZycpIGluXG4gICAgICAgIGlmIGkgPSBqIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBnbHVlX2Nvbm5lY3RlZF9jb21wb25lbnQgdGFibGVzLmNvbm5lY3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBjY3MgYWdcbiAgICAgICAgICAgICAgYWcnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lIChqLCBpKVxuICAgICAgICApXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgIG1pc3NpbmdzID1cbiAgICAgICAgICBNb2RzLkludDJTZXQucmVtb3ZlIChhZywgcylcbiAgICAgICAgICAgIChNb2RzLkludDJTZXQucmVtb3ZlIChhZycsIHMnKSBncmFwaC5taXNzaW5ncyk7XG4gICAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgfSxcbiAgICAgIG91dCApXG5cbmxldCByZW1vdmVfYWdlbnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5jb25uZWN0IGFnIFt8fF0gaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc3RhdGUgYWcgW3x8XSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zb3J0IGFnIE5vbmUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBhZyBOb25lXG4gICAgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmZpbHRlciAoZnVuIChhZycsIF8pIC0+IGFnIDw+IGFnJykgZ3JhcGgubWlzc2luZ3M7XG4gICAgICBmcmVlX2lkID1cbiAgICAgICAgKGxldCBuZXdfaWQsIGlkcyA9IGdyYXBoLmZyZWVfaWQgaW5cbiAgICAgICAgIG5ld19pZCwgYWcgOjogaWRzKTtcbiAgICB9XG5cbmxldCByZW1vdmVfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpID0gTm9uZSkgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmFkZCAoYWcsIHMpIGdyYXBoLm1pc3NpbmdzO1xuICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgfVxuXG5sZXQgZ2V0X2ludGVybmFsIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJTaXRlIFwiIF4gc3RyaW5nX29mX2ludCBzIF4gXCIgb2YgYWdlbnQgXCIgXiBzdHJpbmdfb2ZfaW50IGFnXG4gICAgICAgXiBcIiBoYXMgbm8gaW50ZXJuYWwgc3RhdGUgaW4gdGhlIGN1cnJlbnQgZ3JhcGguXCIpKVxuXG5sZXQgZ2V0X3NpdGVzIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IGFyciA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZyBpblxuICAgIEFycmF5Lmxlbmd0aCBhcnJcblxubGV0IGdldF9zb3J0IGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICB8IFNvbWUgdHkgLT4gdHlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChcIkFnZW50IFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIGhhcyBubyB0eXBlIGluIHRoZSBjdXJyZW50IGdyYXBoLlwiKSlcblxubGV0IHJlbW92ZV9pbnRlcm5hbCBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgaSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSA8LSBOb25lIGluXG4gICAgKG1hdGNoIGkgd2l0aFxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgKCBpLFxuICAgICAgICB7XG4gICAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgICAgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5ncztcbiAgICAgICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgICAgfSApKVxuXG5sZXQgcmVtb3ZlX2xpbmsgYWcgcyBhZycgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcnKS4ocycpIDwtIE5vbmUgaW5cbiAgICBsZXQgb3V0ID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgY2NzIC0+XG4gICAgICAgIHNlcGFyYXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgdGFibGVzLmNvbm5lY3QgdGFibGVzLmNhY2hlcyBjY3MgYWcgYWcnXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgIG1pc3NpbmdzID1cbiAgICAgICAgICBNb2RzLkludDJTZXQuYWRkIChhZywgcykgKE1vZHMuSW50MlNldC5hZGQgKGFnJywgcycpIGdyYXBoLm1pc3NpbmdzKTtcbiAgICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICB9LFxuICAgICAgb3V0IClcblxubGV0IGlzX2FnZW50IChhZywgdHkpIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgKG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICB8IFNvbWUgdHknIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKHR5ID0gdHknKSBpblxuICAgICAgdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZSlcblxubGV0IGlzX2FnZW50X2lkIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgPD4gTm9uZVxuXG5sZXQgaXNfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIHQgPD4gW3x8XSAmJiB0LihzKSA9IE5vbmVcblxubGV0IGlzX2ludGVybmFsIGkgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnIGluXG4gICAgdCA8PiBbfHxdXG4gICAgJiZcbiAgICAobWF0Y2ggdC4ocykgd2l0aFxuICAgIHwgU29tZSBqIC0+IGogPSBpXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuXG5sZXQgbGlua19leGlzdHMgYWcgcyBhZycgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgdCA8PiBbfHxdXG4gICAgJiZcbiAgICAobWF0Y2ggdC4ocykgd2l0aFxuICAgIHwgU29tZSAoKGFnJycsIF8pLCBzJycpIC0+IGFnJyA9IGFnJycgJiYgcycgPSBzJydcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG5cbmxldCBleGlzdHNfZnJlc2ggYWcgcyB0eSBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICBpZiB0ID0gW3x8XSB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LihzKSB3aXRoXG4gICAgICB8IFNvbWUgKChhZycsIHR5JyksIHMnJykgLT5cbiAgICAgICAgaWYgdHknID0gdHkgJiYgcycgPSBzJycgdGhlblxuICAgICAgICAgIFNvbWUgYWcnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgIClcblxubGV0IGxpbmtfZGVzdGluYXRpb24gYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPiAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKVxuXG5sZXQgaXRlcl9uZWlnaGJvcnMgZiBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBhZ190YWJsZSA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgQXJyYXkuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgcyAtPiBmIChmc3QgcykpXG4gICAgICBhZ190YWJsZVxuXG5sZXQgYWxsX2FnZW50c193aGVyZSBmIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IG91dCA9IEludENvbGxlY3Rpb24uY3JlYXRlIDAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGlkIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHR5IHdoZW4gZiAoaWQsIHR5KSAtPiBJbnRDb2xsZWN0aW9uLmFkZCBpZCBvdXRcbiAgICAgICAgICB8IF8gLT4gKCkpXG4gICAgICAgIHRhYmxlcy5zb3J0XG4gICAgaW5cbiAgICBvdXRcblxubGV0IGluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCBhZyBhZycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHdoaWxlIG5vdCB0cmFja2luZyBjY3NcIikpXG4gICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcgPSBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcnKVxuXG5sZXQgZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgd2hpbGUgbm90IHRyYWNraW5nIGNjc1wiKSlcbiAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZylcblxuKCoqIFRoZSBzbmFwc2hvdCBtYWNoaW5lcnkgKilcbmxldCBvbmVfY29ubmVjdGVkX2NvbXBvbmVudCAoc2lncyA6IFNpZ25hdHVyZS5zKSAodHkgOiBpbnQpIChub2RlIDogaW50KVxuICAgIChncmFwaCA6IHRhYmxlcykgOiBTbmFwc2hvdC5jY19ub2RlIGFycmF5ID1cbiAgbGV0IHJlYyBidWlsZCAoaWQgOiBpbnQpXG4gICAgICAoYWNjIDogKGludCAqIGludCAqIChFZGdlLnQgb3B0aW9uICogaW50IG9wdGlvbikgbGlzdCkgbGlzdClcbiAgICAgIChrbm93biA6IGludCBNb2RzLkludE1hcC50KSA6IChpbnQgKiBpbnQpIGxpc3QgLT4gU25hcHNob3QuY2Nfbm9kZSBhcnJheSA9XG4gICAgZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBUb29scy5hcnJheV9yZXZfbWFwX29mX2xpc3RcbiAgICAgICAgKGZ1biAobm9kZV9pZF9pbl93aXRuZXNzLCBub2RlX3R5cGUsIHNpdGVzKSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfaWRfaW5fd2l0bmVzcztcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfdHlwZTtcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfc2l0ZXMgPVxuICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGxpbmssIHNpdGVfc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFNuYXBzaG90LnNpdGVfbGluayA9XG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgobiwgXyksIHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCAoLTEpIG4ga25vd24sIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rO1xuICAgICAgICAgICAgICAgICAgICBTbmFwc2hvdC5zaXRlX3N0YXRlO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBzaXRlcztcbiAgICAgICAgICB9KVxuICAgICAgICBhY2NcbiAgICB8IChub2RlLCB0eSkgOjogdG9kb3MgLT5cbiAgICAgIGlmIENhY2hlLnRlc3QgKGZzdCBncmFwaC5jYWNoZXMpIG5vZGUgdGhlblxuICAgICAgICBidWlsZCBpZCBhY2Mga25vd24gdG9kb3NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBncmFwaC5zb3J0IG5vZGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFZGdlcy5vbmVfY29ubmVjdGVkX2NvbXBvbmVudFwiXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayAoZnN0IGdyYXBoLmNhY2hlcykgbm9kZSBpblxuICAgICAgICAgIGxldCBrbm93bicgPSBNb2RzLkludE1hcC5hZGQgbm9kZSBpZCBrbm93biBpblxuICAgICAgICAgIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5IGluXG4gICAgICAgICAgbGV0IHRvZG9zJywgcG9ydHMgPVxuICAgICAgICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgKGZ1biAodG9kb3MsIGFjYykgaSAtPlxuICAgICAgICAgICAgICAgIGxldCBsaW5rID0gKE1vZHMuRHluQXJyYXkuZ2V0IGdyYXBoLmNvbm5lY3Qgbm9kZSkuKGkpIGluXG4gICAgICAgICAgICAgICAgKCAobWF0Y2ggbGluayB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdG9kb3NcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChuJywgXykgYXMgcCksIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIE1vZHMuSW50TWFwLm1lbSBuJyBrbm93bicgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHRvZG9zXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBwIDo6IHRvZG9zKSxcbiAgICAgICAgICAgICAgICAgIChsaW5rLCAoTW9kcy5EeW5BcnJheS5nZXQgZ3JhcGguc3RhdGUgbm9kZSkuKGkpKSA6OiBhY2MgKSlcbiAgICAgICAgICAgICAgKHRvZG9zLCBbXSkgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGJ1aWxkIChzdWNjIGlkKSAoKG5vZGUsIHR5LCBwb3J0cykgOjogYWNjKSBrbm93bicgdG9kb3MnXG4gICAgICApXG4gIGluXG4gIGJ1aWxkIDAgW10gTW9kcy5JbnRNYXAuZW1wdHkgWyBub2RlLCB0eSBdXG5cbmxldCBzcGVjaWVzIH5kZWJ1Z19tb2RlIHNpZ3Mgcm9vdCBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBzcGVjaWUgPVxuICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgcm9vdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgIChcIlNvcnQgb2Ygbm9kZSB1bmF2YWlsYWJsZSBcIiBeIHN0cmluZ19vZl9pbnQgcm9vdCkpKVxuICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgIFNuYXBzaG90LmNjX3RvX3VzZXJfY2MgfmRlYnVnX21vZGUgfnJhdzp0cnVlIHNpZ3NcbiAgICAgICAgICAob25lX2Nvbm5lY3RlZF9jb21wb25lbnQgc2lncyB0eSByb290IHRhYmxlcylcbiAgICBpblxuICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICBzcGVjaWVcblxubGV0IHJlYyBhdXhfYnVpbGRfc25hcHNob3QgKHJhdyA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpICh0YWJsZXMgOiB0YWJsZXMpXG4gICAgKGNjcyA6IFNuYXBzaG90LnQpIChub2RlIDogaW50KSA6IFNuYXBzaG90LnQgPVxuICBpZiBub2RlID0gTW9kcy5EeW5BcnJheS5sZW5ndGggdGFibGVzLnNvcnQgdGhlbiAoXG4gICAgKCogV2Ugd2VudCB0aHJvdWdoIGFsbCBub2Rlcywgd2UgcmV0dXJuIHRoZSBmdWxsIHNuYXBzaG90ICopXG4gICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgIGNjc1xuICApIGVsc2UgaWYgQ2FjaGUudGVzdCAoZnN0IHRhYmxlcy5jYWNoZXMpIG5vZGUgdGhlblxuICAgICgqIEFscmVhZHkgaW4gY2FjaGUsIHdlIGNvbnRpbnVlIHRvIHRoZSBuZXh0IG5vZGUgKilcbiAgICBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzIGNjcyAoc3VjYyBub2RlKVxuICBlbHNlIChcbiAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBub2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBjY3MgKHN1Y2Mgbm9kZSlcbiAgICB8IFNvbWUgKHR5IDogaW50KSAtPlxuICAgICAgbGV0IG91dCA9IG9uZV9jb25uZWN0ZWRfY29tcG9uZW50IHNpZ3MgdHkgbm9kZSB0YWJsZXMgaW5cbiAgICAgIGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXNcbiAgICAgICAgKFNuYXBzaG90LmluY3JlbWVudF9pbl9zbmFwc2hvdCB+cmF3IHNpZ3Mgb3V0IGNjcylcbiAgICAgICAgKHN1Y2Mgbm9kZSlcbiAgKVxuXG5sZXQgYnVpbGRfc25hcHNob3QgfihyYXcgOiBib29sKSAoc2lncyA6IFNpZ25hdHVyZS5zKSAoZ3JhcGggOiB0KSA6IFNuYXBzaG90LnQgPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT4gYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBTbmFwc2hvdC5lbXB0eSAwXG5cbmxldCBidWlsZF91c2VyX3NuYXBzaG90IH4oZGVidWdfbW9kZSA6IGJvb2wpIH4ocmF3IDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAoZ3JhcGggOiB0KSA6IChpbnQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgPVxuICBTbmFwc2hvdC5leHBvcnQgfmRlYnVnX21vZGUgfnJhdyBzaWdzIChidWlsZF9zbmFwc2hvdCB+cmF3IHNpZ3MgZ3JhcGgpXG5cbmxldCBkZWJ1Z19wcmludCBmIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJPVVREQVRFREAgXCJcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBwcmludF9zaXRlcyBhZyA9XG4gICAgICBQcC5hcnJheSBQcC5jb21tYSAoZnVuIHMgZiBsIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpJXQldFwiIHNcbiAgICAgICAgICAgIChtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGludCAtPiBmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwifiVpXCIgaW50XG4gICAgICAgICAgICB8IE5vbmUgLT4gZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGlmIE1vZHMuSW50MlNldC5tZW0gKGFnLCBzKSBncmFwaC5taXNzaW5ncyB0aGVuXG4gICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCI/XCJcbiAgICAgICAgICAgICAgfCBTb21lICgoYWcnLCB0eScpLCBzJykgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLT4laTolaS4laVwiIGFnJyB0eScgcycpKVxuICAgIGluXG4gICAgTW9kcy5EeW5BcnJheS5wcmludCBQcC5lbXB0eVxuICAgICAgKGZ1biBhZyBmIGEgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgd2l0aFxuICAgICAgICB8IFNvbWUgdHkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVpKEBbJWFAXSlAIFwiIGFnIHR5IChwcmludF9zaXRlcyBhZykgYVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBhID0gW3x8XSB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaTpOT1RZUEUoQFslYUBdKUAgXCIgYWcgKHByaW50X3NpdGVzIGFnKSBhKVxuICAgICAgZiB0YWJsZXMuY29ubmVjdFxuXG50eXBlIHBhdGggPSAoKEFnZW50LnQgKiBpbnQpICogKEFnZW50LnQgKiBpbnQpKSBsaXN0XG4oKiogKChhZ2VudF9pZCwgYWdlbnRfbmFtZSksc2l0ZV9uYW1lKSAqKVxuXG5sZXQgcmVjIHByaW50X3BhdGggP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gUHAuZW1wdHlfc2V0IGZcbiAgfCBbICgoYWcsIHMpLCAoYWcnLCBzJykpIF0gLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFALC0lYS4lYVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgIHNcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnJylcbiAgICAgIHMnXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnJ1xuICB8ICgoYWcsIHMpLCAoKChwJywgXykgYXMgYWcnKSwgcycpKSA6OiAoKCgocCcnLCBfKSwgXyksIF8pIDo6IF8gYXMgbCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFALC0lYS4ldCVhXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnKVxuICAgICAgc1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcnKVxuICAgICAgcydcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBpZiBwJyA8PiBwJycgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSMjXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnJylcbiAgICAgIChwcmludF9wYXRoID9zaWdzKSBsXG5cbmxldCBlbXB0eV9wYXRoID0gW11cbmxldCBzaW5nbGV0b25fcGF0aCBuIHMgbicgcycgPSBbIChuLCBzKSwgKG4nLCBzJykgXVxubGV0IHJldl9wYXRoIGwgPSBMaXN0LnJldl9tYXAgKGZ1biAoeCwgeSkgLT4geSwgeCkgbFxuXG5sZXQgaXNfdmFsaWRfcGF0aCBwIGdyYXBoID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1biAoKChhZywgXyksIHMpLCAoKGFnJywgXyksIHMnKSkgLT4gbGlua19leGlzdHMgYWcgcyBhZycgcycgZ3JhcGgpXG4gICAgcFxuXG5sZXQgYnJlYWR0aF9maXJzdF90cmF2ZXJzYWwgfmxvb3BpbmcgP21heF9kaXN0YW5jZSBzdG9wX29uX2ZpbmQgaXNfaW50ZXJlc3RpbmdcbiAgICBsaW5rcyBjYWNoZSBvdXQgdG9kb3MgPVxuICBsZXQgcmVjIGxvb2tfZWFjaF9zaXRlICgoKChpZCwgXykgYXMgYWcpLCBwYXRoKSBhcyB4KSBzaXRlXG4gICAgICAoKG91dCwgbmV4dCkgYXMgYWNjKSA9XG4gICAgaWYgc2l0ZSA9IDAgdGhlblxuICAgICAgU29tZSAoZmFsc2UsIG91dCwgbmV4dClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkuKHByZWQgc2l0ZSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgYWNjXG4gICAgICB8IFNvbWUgKCgoKGlkJywgXykgYXMgYWcnKSwgc2l0ZScpIGFzIHkpIC0+XG4gICAgICAgIGlmIGFnJyA9IGZzdCBsb29waW5nICYmIHNpdGUnIDw+IHNuZCBsb29waW5nIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgaWYgQ2FjaGUudGVzdCBjYWNoZSBpZCcgdGhlblxuICAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgYWNjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgbGV0IHBhdGgnID0gKHksIChhZywgcHJlZCBzaXRlKSkgOjogcGF0aCBpblxuICAgICAgICAgIGxldCBuZXh0JyA9IChhZycsIHBhdGgnKSA6OiBuZXh0IGluXG4gICAgICAgICAgbGV0IG91dCcsIHN0b3JlID1cbiAgICAgICAgICAgIG1hdGNoIGlzX2ludGVyZXN0aW5nIGFnJyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiAoKHgsIGlkJyksIHBhdGgnKSA6OiBvdXQsIHRydWVcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvdXQsIGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBzdG9yZSAmJiBzdG9wX29uX2ZpbmQgdGhlblxuICAgICAgICAgICAgU29tZSAodHJ1ZSwgb3V0JywgbmV4dCcpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9va19lYWNoX3NpdGUgeCAocHJlZCBzaXRlKSAob3V0JywgbmV4dCcpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gICgqIGRlcHRoID0gbnVtYmVyIG9mIGVkZ2VzIGJldHdlZW4gcm9vdCBhbmQgbm9kZSAqKVxuICBsZXQgcmVjIGF1eCBkZXB0aCBvdXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCAoKChpZCwgXyksIF8pIGFzIHgpIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSAob3V0LCBuZXh0KVxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIChzdG9wLCBvdXQnLCBuZXh0JykgLT5cbiAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgb3V0J1xuICAgICAgICBlbHNlXG4gICAgICAgICAgYXV4IGRlcHRoIG91dCcgbmV4dCcgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPiBvdXRcbiAgICAgICgqIGVuZCB3aGVuIGFsbCBncmFwaCB0cmF2ZXJzZWQgYW5kIHJldHVybiB0aGUgbGlzdCBvZiBwYXRocyAqKVxuICAgICAgfCBfIC0+XG4gICAgICAgIChtYXRjaCBtYXhfZGlzdGFuY2Ugd2l0aFxuICAgICAgICB8IFNvbWUgZCB3aGVuIGQgPD0gZGVwdGggLT4gb3V0XG4gICAgICAgICgqIHN0b3Agd2hlbiB0aGUgbWF4IGRpc3RhbmNlIGlzIHJlYWNoZWQgKilcbiAgICAgICAgfCBTb21lIF8gLT4gYXV4IChkZXB0aCArIDEpIG91dCBbXSBuZXh0XG4gICAgICAgIHwgTm9uZSAtPiBhdXggZGVwdGggb3V0IFtdIG5leHQpKVxuICBpblxuICBhdXggMSBvdXQgW10gdG9kb3NcblxuKCogbm9kZXNfeDogYWdlbnRfaWQgbGlzdCA9IChpbnQgKiBpbnQpIGxpc3RcbiAgIG5vZGVzX3k6IGFkZW50X2lkIGxpc3QgPSBpbnQgbGlzdCAqKVxubGV0IGFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBncmFwaCBub2Rlc194IG5vZGVzX3kgPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBpZlxuICAgICAgaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50XG4gICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXNfeCkpXG4gICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXNfeSkpXG4gICAgICAgIGdyYXBoXG4gICAgdGhlbiAoXG4gICAgICAoKiBsb29rIGZvciB0aGUgY2xvc2VzdCBub2RlIGluIG5vZGVzX3kgKilcbiAgICAgIGxldCBpc19pbl9ub2Rlc195IHogPVxuICAgICAgICBpZiBMaXN0Lm1lbSB6IG5vZGVzX3kgdGhlblxuICAgICAgICAgIFNvbWUgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICAoKiBicmVhZHRoIGZpcnN0IHNlYXJjaCBpcyBjYWxsZWQgb24gYSBsaXN0IG9mIHNpdGVzO1xuICAgICAgICAgc3RhcnQgdGhlIGJyZWFkdGggZmlyc3Qgc2VhcmNoIHdpdGggdGhlIGJvdW5kYXJpZXMgb2Ygbm9kZXNfeCxcbiAgICAgICAgIHRoYXQgaXMgYWxsIHNpdGVzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byBvdGhlciBub2RlcyBpbiB4XG4gICAgICAgICBhbmQgd2l0aCBhbGwgbm9kZXMgaW4gbm9kZXNfeCBtYXJrZWQgYXMgZG9uZSAqKVxuICAgICAgbGV0IHByZXBhcmUgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjICgoaWQsIF8pIGFzIGFnKSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayAoZnN0IHRhYmxlcy5jYWNoZXMpIGlkIGluXG4gICAgICAgICAgICAoYWcsIFtdKSA6OiBhY2MpXG4gICAgICAgICAgW10gbm9kZXNfeFxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIGJyZWFkdGhfZmlyc3RfdHJhdmVyc2FsXG4gICAgICAgICAgfmxvb3Bpbmc6KCgtMSwgLTEpLCAtMSlcbiAgICAgICAgICA/bWF4X2Rpc3RhbmNlIHRydWUgaXNfaW5fbm9kZXNfeSB0YWJsZXMuY29ubmVjdCAoZnN0IHRhYmxlcy5jYWNoZXMpIFtdXG4gICAgICAgICAgcHJlcGFyZVxuICAgICAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgWyAoXywgcCkgXSAtPlxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgICAgIFNvbWUgcFxuICAgICAgfCBfIDo6IF8gLT4gZmFpbHdpdGggXCJFZGdlcy5hcmVfdGhleV9jb25uZWN0ZWQgY29tcGxldGVseSBicm9rZW5cIlxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhYnN0cmFjdCA9IEV4aXN0aW5nIG9mIGludCB8IEZyZXNoIG9mIEFnZW50LnRcbnR5cGUgJ2EgcG9ydCA9ICdhICogaW50XG50eXBlICdhIGFycm93ID0gVG9Ob2RlIG9mICdhIHBvcnQgfCBUb05vdGhpbmcgfCBUb0ludGVybmFsIG9mIGludFxudHlwZSAnYSBzdGVwID0gJ2EgcG9ydCAqICdhIGFycm93XG50eXBlICdhIHQgPSAnYSBzdGVwIGxpc3RcblxubGV0IHByaW50X2lkIHNpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgaWQgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIGlkXG4gIHwgRnJlc2ggKGlkLCB0eSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiISVhLSVpXCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSB0eSBpZFxuXG5sZXQgcHJpbnRfaWRfc2l0ZSA/c291cmNlIHNpZ3MgZmluZF90eSBuID1cbiAgbGV0IHR5ID1cbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IEZyZXNoIChfLCB0eSkgLT4gdHlcbiAgICB8IEV4aXN0aW5nIGlkIC0+XG4gICAgICAobWF0Y2ggc291cmNlIHdpdGhcbiAgICAgIHwgU29tZSAoRnJlc2ggKGlkJywgdHkpKSB3aGVuIGlkID0gaWQnIC0+IHR5XG4gICAgICB8IE5vbmUgfCBTb21lIChGcmVzaCBfIHwgRXhpc3RpbmcgXykgLT4gZmluZF90eSBpZClcbiAgaW5cbiAgU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyB0eVxuXG5sZXQgcHJpbnRfaWRfaW50ZXJuYWxfc3RhdGUgc2lncyBmaW5kX3R5IG4gPVxuICBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzXG4gICAgKG1hdGNoIG4gd2l0aFxuICAgIHwgRXhpc3RpbmcgaWQgLT4gZmluZF90eSBpZFxuICAgIHwgRnJlc2ggKF8sIHR5KSAtPiB0eSlcblxubGV0IGlkX3VwX3RvX2FscGhhX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgaSAtPiBgSW50IGlcbiAgfCBGcmVzaCBmIC0+IEFnZW50LnRvX2pzb24gZlxuXG5sZXQgaWRfdXBfdG9fYWxwaGFfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gRXhpc3RpbmcgaVxuICB8IHggLT4gRnJlc2ggKEFnZW50Lm9mX2pzb24geClcblxubGV0IHBvcnRfdG9feW9qc29uIChhLCBzKSA9IGBMaXN0IFsgaWRfdXBfdG9fYWxwaGFfdG9feW9qc29uIGE7IGBJbnQgcyBdXG5cbmxldCBwb3J0X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBhOyBgSW50IHMgXSAtPiBpZF91cF90b19hbHBoYV9vZl95b2pzb24gYSwgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IG5hdmlnYXRpb24gcG9ydFwiLCB4KSlcblxubGV0IGFycm93X3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgVG9Ob2RlIHAgLT4gcG9ydF90b195b2pzb24gcFxuICB8IFRvTm90aGluZyAtPiBgTnVsbFxuICB8IFRvSW50ZXJuYWwgaSAtPiBgSW50IGlcblxubGV0IGFycm93X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gVG9Ob3RoaW5nXG4gIHwgYEludCBpIC0+IFRvSW50ZXJuYWwgaVxuICB8IHggLT4gVG9Ob2RlIChwb3J0X29mX3lvanNvbiB4KVxuXG5sZXQgc3RlcF90b195b2pzb24gKHAsIGEpID0gYExpc3QgWyBwb3J0X3RvX3lvanNvbiBwOyBhcnJvd190b195b2pzb24gYSBdXG5cbmxldCBzdGVwX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBwOyBhIF0gLT4gcG9ydF9vZl95b2pzb24gcCwgYXJyb3dfb2ZfeW9qc29uIGFcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uIHN0ZXBcIiwgeCkpXG5cbmxldCB0b195b2pzb24gbCA9IGBMaXN0IChMaXN0Lm1hcCBzdGVwX3RvX3lvanNvbiBsKVxuXG5sZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIHN0ZXBfb2ZfeW9qc29uIGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uXCIsIHgpKVxuXG5sZXQgZXh0ZW5kIGYgPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIF8gLT4gZlxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGlmIHggPSBpZCB0aGVuXG4gICAgICAgIHR5XG4gICAgICBlbHNlXG4gICAgICAgIGYgeFxuXG5sZXQgcmVjIHByaW50IHNpZ3MgZmluZF90eSBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9Ob3RoaW5nKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYVsuXSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX3NpdGUgc2lncyBmaW5kX3R5IHNvdXJjZSlcbiAgICAgIHNpdGVcbiAgICAgIChwcmludCBzaWdzIChleHRlbmQgZmluZF90eSBzb3VyY2UpKVxuICAgICAgdFxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9Ob2RlIChpZCwgcG9ydCkpIDo6IHQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLSVhKCVhWyVhLiVhXSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX3NpdGUgc2lncyBmaW5kX3R5IHNvdXJjZSlcbiAgICAgIHNpdGVcbiAgICAgIChwcmludF9pZF9zaXRlIH5zb3VyY2Ugc2lncyBmaW5kX3R5IGlkKVxuICAgICAgcG9ydCAocHJpbnRfaWQgc2lncykgaWRcbiAgICAgIChwcmludCBzaWdzIChleHRlbmQgKGV4dGVuZCBmaW5kX3R5IGlkKSBzb3VyY2UpKVxuICAgICAgdFxuICB8ICgoc291cmNlLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYSktPiVhXCIgKHByaW50X2lkIHNpZ3MpIHNvdXJjZVxuICAgICAgKHByaW50X2lkX2ludGVybmFsX3N0YXRlIHNpZ3MgZmluZF90eSBzb3VyY2Ugc2l0ZSlcbiAgICAgIChTb21lIGkpXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIGZpbmRfdHkgc291cmNlKSlcbiAgICAgIHRcblxubGV0IGNvbXBhdGlibGVfZnJlc2hfcG9pbnQgfmRlYnVnX21vZGUgZSAoc2lkLCBzdHkpIHNzaXRlIGFycm93ID1cbiAgbWF0Y2ggZSwgYXJyb3cgd2l0aFxuICB8IF8sIFRvTm9kZSAoRXhpc3RpbmcgXywgXykgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgXCJOYXZpZ2F0aW9uLmNvbXBhdGlibGVfZnJlc2hfcG9pbnQgZG9lcyBub3QgZGVhbCB3aXRoIGV4aXN0aW5nIFxcXG4gICAgICAgICAgICAgYXJyb3dcIikpXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIHgpLCBUb05vdGhpbmcgLT5cbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgeCA9IFRvTm90aGluZyB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIFNvbWUgaW5qXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgeCksIFRvSW50ZXJuYWwgaSAtPlxuICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB4ID0gVG9JbnRlcm5hbCBpIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgU29tZSBpbmpcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpKSxcbiAgICAgIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpICkgLT5cbiAgICAoKiBsaW5rIGJldHdlZW4gMiBhZ2VudHMgKilcbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgdHknID0gc3R5JyAmJiBzaXRlJyA9IHNzaXRlJyB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQnIGluaiB0aGVuXG4gICAgICAgICAgU29tZSBpbmpcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZSBpZiB0eSA9IHN0eScgJiYgc2l0ZSA9IHNzaXRlJyAmJiB0eScgPSBzdHkgJiYgc2l0ZScgPSBzc2l0ZSB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkJyBpbmogdGhlblxuICAgICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCcgc2lkIGluaiB0aGVuXG4gICAgICAgICAgU29tZSBpbmpcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpXG4gICAgICB8IChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykgKSxcbiAgICAgIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpICkgLT5cbiAgICAoKiBzZWxmLWxpbmsgaW4gYWdlbnQgKilcbiAgICBpZlxuICAgICAgKChzc2l0ZSA9IHNpdGUgJiYgc3NpdGUnID0gc2l0ZScpIHx8IChzc2l0ZScgPSBzaXRlICYmIHNzaXRlID0gc2l0ZScpKVxuICAgICAgJiYgaWQgPSBpZCcgJiYgc2lkID0gc2lkJyAmJiB0eSA9IHN0eSAmJiBzdHkgPSBzdHknXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBTb21lIGlualxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBfLCBfKSwgXyksIF8gLT4gTm9uZVxuICB8ICgoRnJlc2ggXywgXyksIChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pKSwgVG9Ob2RlIF8gLT4gTm9uZVxuXG5sZXQgY29tcGF0aWJsZV9wb2ludCB+ZGVidWdfbW9kZSBpbmogZSBlJyA9XG4gIG1hdGNoIGUsIGUnIHdpdGhcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob3RoaW5nKSwgZSAtPlxuICAgIGlmXG4gICAgICBSZW5hbWluZy5tZW0gaWQgaW5qXG4gICAgICAmJiBlID0gKChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksIFRvTm90aGluZylcbiAgICB0aGVuXG4gICAgICBTb21lIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSwgZSAtPlxuICAgIGlmXG4gICAgICBSZW5hbWluZy5tZW0gaWQgaW5qXG4gICAgICAmJiBlID0gKChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksIFRvSW50ZXJuYWwgaSlcbiAgICB0aGVuXG4gICAgICBTb21lIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGluaiAmJiBSZW5hbWluZy5tZW0gaWQnIGlualxuICAgICAgJiYgKGVcbiAgICAgICAgICA9ICggKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSxcbiAgICAgICAgICAgICAgVG9Ob2RlIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkJyksIHNpdGUnKSApXG4gICAgICAgICB8fCBlXG4gICAgICAgICAgICA9ICggKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQnKSwgc2l0ZScpLFxuICAgICAgICAgICAgICAgIFRvTm9kZSAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpICkpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSksXG4gICAgICAoKEV4aXN0aW5nIHNpZCwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZScpKSApXG4gIHwgKCAoKEZyZXNoIChpZCcsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQsIHNpdGUnKSksXG4gICAgICAoKEV4aXN0aW5nIHNpZCwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZScpKSApXG4gIHwgKCAoKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSksXG4gICAgICAoKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZSksIFRvTm9kZSAoRXhpc3Rpbmcgc2lkLCBzc2l0ZScpKSApXG4gIHwgKCAoKEZyZXNoIChpZCcsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQsIHNpdGUnKSksXG4gICAgICAoKEZyZXNoIChzaWQnLCB0eScpLCBzc2l0ZSksIFRvTm9kZSAoRXhpc3Rpbmcgc2lkLCBzc2l0ZScpKSApIC0+XG4gICAgaWZcbiAgICAgIHR5JyA9IHR5XG4gICAgICAmJiAobm90IChSZW5hbWluZy5tZW0gaWQnIGluaikpXG4gICAgICAmJiAoKHNzaXRlID0gc2l0ZSAmJiBzc2l0ZScgPSBzaXRlJylcbiAgICAgICAgIHx8IChpZCA9IGlkJyAmJiBzc2l0ZSA9IHNpdGUnICYmIHNzaXRlJyA9IHNpdGUpKVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQnIGluaiB3aXRoXG4gICAgICB8IFNvbWUgaW5qJ1xuICAgICAgICB3aGVuIFJlbmFtaW5nLm1lbSBpZCBpbmonICYmIHNpZCA9IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgaWQgLT5cbiAgICAgICAgU29tZSBpbmonXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgXywgXyksIFRvTm9kZSAoRnJlc2ggXywgXykpLCAoKChGcmVzaCBfIHwgRXhpc3RpbmcgXyksIF8pLCBfKSAtPlxuICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9Ob3RoaW5nKSwgKChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJyksIHgpIC0+XG4gICAgaWYgdHkgPSB0eScgJiYgc2l0ZSA9IHNpdGUnICYmIHggPSBUb05vdGhpbmcgJiYgbm90IChSZW5hbWluZy5tZW0gaWQgaW5qKVxuICAgIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb0ludGVybmFsIGkpLCAoKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSwgeCkgLT5cbiAgICBpZiB0eSA9IHR5JyAmJiBzaXRlID0gc2l0ZScgJiYgeCA9IFRvSW50ZXJuYWwgaSAmJiBub3QgKFJlbmFtaW5nLm1lbSBpZCBpbmopXG4gICAgdGhlblxuICAgICAgUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIGlkJyBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkLCBzdHkpLCBzc2l0ZSksIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHN0eScpLCBzc2l0ZScpKSApIC0+XG4gICAgaWYgKG5vdCAoUmVuYW1pbmcubWVtIGlkIGluaikpICYmIG5vdCAoUmVuYW1pbmcubWVtIGlkJyBpbmopIHRoZW5cbiAgICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB0eScgPSBzdHknICYmIHNpdGUnID0gc3NpdGUnIHRoZW4gKFxuICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmonIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBpbmonJyAtPiBTb21lIGluaicnKVxuICAgICAgKSBlbHNlIGlmIHR5ID0gc3R5JyAmJiBzaXRlID0gc3NpdGUnICYmIHR5JyA9IHN0eSAmJiBzaXRlJyA9IHNzaXRlIHRoZW4gKFxuICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgc2lkJyBpbmogd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCBpbmonIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBpbmonJyAtPiBTb21lIGluaicnKVxuICAgICAgKSBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChGcmVzaCBfLCBfKSwgXyksICgoRnJlc2ggXywgXyksIF8pIC0+IE5vbmVcbiAgfCAoKEZyZXNoIF8sIF8pLCBfKSwgKChFeGlzdGluZyBfLCBfKSwgXykgLT4gTm9uZVxuXG5sZXQgcmVjIGF1eF9zdWIgfmRlYnVnX21vZGUgaW5qIGdvYWwgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgaCA6OiB0IC0+XG4gICAgKG1hdGNoIGNvbXBhdGlibGVfcG9pbnQgfmRlYnVnX21vZGUgaW5qIGggZ29hbCB3aXRoXG4gICAgfCBOb25lIC0+IGF1eF9zdWIgfmRlYnVnX21vZGUgaW5qIGdvYWwgKGggOjogYWNjKSB0XG4gICAgfCBTb21lIGluaicgLT4gU29tZSAoaW5qJywgTGlzdC5yZXZfYXBwZW5kIGFjYyB0KSlcblxubGV0IHJlYyBpc19zdWJuYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGluaiBuYXYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFNvbWUgKGluaiwgbmF2KVxuICB8IGggOjogdCAtPlxuICAgIChtYXRjaCBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBoIFtdIG5hdiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKGluaicsIG5hdicpIC0+IGlzX3N1Ym5hdmlnYXRpb24gfmRlYnVnX21vZGUgaW5qJyBuYXYnIHQpXG5cbmxldCByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBuIC0+IGluajJjYywgRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajJjYyBuKVxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgbGV0IGltZyA9IFJlbmFtaW5nLmltYWdlIGluajJjYyBpblxuICAgIGxldCBpZCcgPVxuICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGlkIGltZyB0aGVuIChcbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRTZXQubWF4X2VsdCBpbWcgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICB8IFNvbWUgaSAtPiBzdWNjIGlcbiAgICAgICkgZWxzZVxuICAgICAgICBpZFxuICAgIGluXG4gICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qMmNjIHdpdGhcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGluaicgLT4gaW5qJywgRnJlc2ggKGlkJywgdHkpKVxuXG5sZXQgcmVjIHJlbmFtZSB+ZGVidWdfbW9kZSBpbmoyY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IGluajJjYywgW11cbiAgfCAoKHgsIGkpLCAoKFRvTm90aGluZyB8IFRvSW50ZXJuYWwgXykgYXMgYSkpIDo6IHQgLT5cbiAgICBsZXQgaW5qLCB4JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmoyY2MgeCBpblxuICAgIGxldCBpbmonLCB0JyA9IHJlbmFtZSB+ZGVidWdfbW9kZSBpbmogdCBpblxuICAgIGluaicsICgoeCcsIGkpLCBhKSA6OiB0J1xuICB8ICgoeCwgaSksIFRvTm9kZSAoeSwgaikpIDo6IHQgLT5cbiAgICBsZXQgaW5qLCB4JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmoyY2MgeCBpblxuICAgIGxldCBpbmonLCB5JyA9IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmogeSBpblxuICAgIGxldCBpbmonJywgdCcgPSByZW5hbWUgfmRlYnVnX21vZGUgaW5qJyB0IGluXG4gICAgaW5qJycsICgoeCcsIGkpLCBUb05vZGUgKHknLCBqKSkgOjogdCdcblxubGV0IGNoZWNrX2VkZ2UgZ3JhcGggPSBmdW5jdGlvblxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob3RoaW5nIC0+IEVkZ2VzLmlzX2ZyZWUgaWQgc2l0ZSBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgaWQgc2l0ZSBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIF8pLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm90aGluZyAtPiBFZGdlcy5pc19mcmVlIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb0ludGVybmFsIGkgLT4gRWRnZXMuaXNfaW50ZXJuYWwgaSBpZCBzaXRlIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCBfKSwgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcblxuKCppbmogaXMgdGhlIHBhcnRpYWwgaW5qZWN0aW9uIGJ1aWx0IHNvIGZhcjogaW5qOmFicy0+Y29uY3JldGUqKVxubGV0IGRzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaicgZ3JhcGggcm9vdCBzaXRlID0gZnVuY3Rpb25cbiAgfCBUb05vdGhpbmcgLT5cbiAgICBpZiBFZGdlcy5pc19mcmVlIHJvb3Qgc2l0ZSBncmFwaCB0aGVuXG4gICAgICBTb21lIGluaidcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgVG9JbnRlcm5hbCBpIC0+XG4gICAgaWYgRWRnZXMuaXNfaW50ZXJuYWwgaSByb290IHNpdGUgZ3JhcGggdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBpZlxuICAgICAgRWRnZXMubGlua19leGlzdHMgcm9vdCBzaXRlXG4gICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGlkJylcbiAgICAgICAgc2l0ZScgZ3JhcGhcbiAgICB0aGVuXG4gICAgICBTb21lIGluaidcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSAtPlxuICAgIChtYXRjaCBFZGdlcy5leGlzdHNfZnJlc2ggcm9vdCBzaXRlIHR5IHNpdGUnIGdyYXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBub2RlIC0+IFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgbm9kZSBpbmonKVxuXG5sZXQgaW5qZWN0aW9uX2Zvcl9vbmVfbW9yZV9lZGdlIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgZHN0IC0+XG4gICAgZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKVxuICAgICAgc2l0ZSBkc3RcbiAgfCAoRnJlc2ggKGlkLCBydHkpLCBzaXRlKSwgZHN0IC0+XG4gICAgKG1hdGNoIHJvb3Qgd2l0aFxuICAgIHwgU29tZSAocm9vdCwgcnR5Jykgd2hlbiBydHkgPSBydHknIC0+XG4gICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHJvb3QgaW5qIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgaW5qJyAtPiBkc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSBkc3QpXG4gICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbXBlcmF0aXZlX2RzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaicgZ3JhcGggcm9vdCBzaXRlID0gZnVuY3Rpb25cbiAgfCBUb05vdGhpbmcgLT4gRWRnZXMuaXNfZnJlZSByb290IHNpdGUgZ3JhcGhcbiAgfCBUb0ludGVybmFsIGkgLT4gRWRnZXMuaXNfaW50ZXJuYWwgaSByb290IHNpdGUgZ3JhcGhcbiAgfCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgcm9vdCBzaXRlXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBpZCcpXG4gICAgICBzaXRlJyBncmFwaFxuICB8IFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykgLT5cbiAgICAobWF0Y2ggRWRnZXMuZXhpc3RzX2ZyZXNoIHJvb3Qgc2l0ZSB0eSBzaXRlJyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG5vZGUgLT4gUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQnIG5vZGUgaW5qJylcblxubGV0IGltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggPSBmdW5jdGlvblxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIGRzdCAtPlxuICAgIGltcGVyYXRpdmVfZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoXG4gICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKVxuICAgICAgc2l0ZSBkc3RcbiAgfCAoRnJlc2ggKGlkLCBydHkpLCBzaXRlKSwgZHN0IC0+XG4gICAgKG1hdGNoIHJvb3Qgd2l0aFxuICAgIHwgU29tZSAocm9vdCwgcnR5Jykgd2hlbiBydHkgPSBydHknIC0+XG4gICAgICBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCByb290IGlualxuICAgICAgJiYgaW1wZXJhdGl2ZV9kc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmogZ3JhcGggcm9vdCBzaXRlIGRzdFxuICAgIHwgXyAtPiBmYWxzZSlcblxubGV0IGNvbmNyZXRpemVfcG9ydCB+ZGVidWdfbW9kZSBpbmogPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGlkLCBzaXRlIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCwgc2l0ZVxuICB8IEZyZXNoIChpZCwgXyksIHNpdGUgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkLCBzaXRlXG5cbmxldCBjb25jcmV0aXplX2Fycm93IH5kZWJ1Z19tb2RlIGluaiA9IGZ1bmN0aW9uXG4gIHwgKFRvTm90aGluZyB8IFRvSW50ZXJuYWwgXykgYXMgeCAtPiB4XG4gIHwgVG9Ob2RlIHggLT4gVG9Ob2RlIChjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qIHgpXG5cbmxldCBjb25jcmV0aXplIH5kZWJ1Z19tb2RlIHJvb3QgZ3JhcGggbmF2ID1cbiAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCBvdXQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG91dCAoKHAsIGRzdCkgYXMgc3RlcCkgLT5cbiAgICAgICAgbWF0Y2ggb3V0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICB8IFNvbWUgKHJvb3QsIGFjYykgLT5cbiAgICAgICAgICBpZiBpbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoIHN0ZXAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgICAgICAoIGNvbmNyZXRpemVfcG9ydCB+ZGVidWdfbW9kZSBpbmogcCxcbiAgICAgICAgICAgICAgICBjb25jcmV0aXplX2Fycm93IH5kZWJ1Z19tb2RlIGluaiBkc3QgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWUgKE5vbmUsIHN0IDo6IGFjYylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICAoU29tZSAoU29tZSByb290LCBbXSkpXG4gICAgICBuYXZcbiAgaW5cbiAgT3B0aW9uX3V0aWwubWFwIChmdW4gKF8sIGwpIC0+IExpc3QucmV2IGwpIG91dFxuIiwidHlwZSB0cmFuc2xhdGVfaW50ID0gQkFTSVNfTUlOVVNfSU5QVVQgb2YgaW50XG5cbnR5cGUgY29udmVyc2lvbl9pbmZvID0ge1xuICBmcm9tX3NpZ19uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIGNvbnZlcnRfdmFsdWU6IHRyYW5zbGF0ZV9pbnQ7XG4gIGNvbnZlcnRfZGVsdGE6IHRyYW5zbGF0ZV9pbnQ7XG59XG5cbnR5cGUgb3JpZ2luID0gRnJvbV9vcmlnaW5hbF9hc3QgfCBGcm9tX2NsdGVfZWxpbWluYXRpb24gb2YgY29udmVyc2lvbl9pbmZvXG5cbmxldCBhcHBseV9pbnQgdCBpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQkFTSVNfTUlOVVNfSU5QVVQgZCAtPiBkIC0gaVxuXG5sZXQgYXBwbHlfb3JpZ2luX3RvX3ZhbHVlIHQgaSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZyb21fb3JpZ2luYWxfYXN0IC0+IGlcbiAgfCBGcm9tX2NsdGVfZWxpbWluYXRpb24gZCAtPiBhcHBseV9pbnQgZC5jb252ZXJ0X3ZhbHVlIGlcblxubGV0IGFwcGx5X29yaWdpbl90b19kZWx0YSB0IGkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGcm9tX29yaWdpbmFsX2FzdCAtPiBpXG4gIHwgRnJvbV9jbHRlX2VsaW1pbmF0aW9uIGQgLT4gYXBwbHlfaW50IGQuY29udmVydF9kZWx0YSBpXG5cbmxldCByZW9yZGVyX2JvdW5kcyB0IChpLCBqKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEJBU0lTX01JTlVTX0lOUFVUIF8gLT4gaiwgaVxuXG50eXBlIGNvdW50ZXJfc2lnID0ge1xuICBjb3VudGVyX3NpZ19uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIGNvdW50ZXJfc2lnX21pbjogaW50IG9wdGlvbiBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGNvdW50ZXJfc2lnX21heDogaW50IG9wdGlvbiBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGNvdW50ZXJfc2lnX3Zpc2libGU6IG9yaWdpbjtcbiAgY291bnRlcl9zaWdfZGVmYXVsdDogaW50O1xufVxuXG50eXBlIHQgPSBjb3VudGVyX3NpZyBvcHRpb24gYXJyYXkgYXJyYXlcblxubGV0IHByaW50X2JvdW5kIHdoZXJlIHNpZ24gZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyAlYVwiIHdoZXJlXG4gICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc29vXCIgc2lnblxuICAgICAgICB8IFNvbWUgaSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgaSlcbiAgICAgIChMb2MudiB4KVxuXG5sZXQgcHJpbnRfbG93ZXJfYm91bmQgPSBwcmludF9ib3VuZCBcImZyb21cIiBcIi1cIlxubGV0IHByaW50X3VwcGVyX2JvdW5kID0gcHJpbnRfYm91bmQgXCJ0b1wiIFwiK1wiXG5cbmxldCBwcmludF9nZW4gayBmIG5hbWUgb3JpZ2luYWxfbmFtZSBjb252ZXJ0ID1cbiAgbWF0Y2ggY29udmVydCB3aXRoXG4gIHwgQkFTSVNfTUlOVVNfSU5QVVQgYiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVzID0gJWkgLSAlcyVzIDsgXCIgayAoTG9jLnYgbmFtZSkgYiBrXG4gICAgICAoTG9jLnYgb3JpZ2luYWxfbmFtZSlcblxubGV0IHByaW50X3ggPSBwcmludF9nZW4gXCJcIlxubGV0IHByaW50X2RlbHRhID0gcHJpbnRfZ2VuIFwiRFwiXG5cbmxldCBwcmludF9zaWdfdmlzaWJsZSBmIHggPVxuICBtYXRjaCB4LmNvdW50ZXJfc2lnX3Zpc2libGUgd2l0aFxuICB8IEZyb21fb3JpZ2luYWxfYXN0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJPUklHSU5BTFwiXG4gIHwgRnJvbV9jbHRlX2VsaW1pbmF0aW9uIGNvbnZlcnQgLT5cbiAgICBwcmludF94IGYgeC5jb3VudGVyX3NpZ19uYW1lIGNvbnZlcnQuZnJvbV9zaWdfbmFtZSBjb252ZXJ0LmNvbnZlcnRfdmFsdWU7XG4gICAgcHJpbnRfZGVsdGEgZiB4LmNvdW50ZXJfc2lnX25hbWUgY29udmVydC5mcm9tX3NpZ19uYW1lIGNvbnZlcnQuY29udmVydF9kZWx0YVxuXG5sZXQgcHJpbnRfY291bnRlcl9zaWcgZiB0ID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhLCBkZWZhdWx0OiAlaSAlYSBcIiBwcmludF9sb3dlcl9ib3VuZCB0LmNvdW50ZXJfc2lnX21pblxuICAgIHByaW50X3VwcGVyX2JvdW5kIHQuY291bnRlcl9zaWdfbWF4IHQuY291bnRlcl9zaWdfZGVmYXVsdCBwcmludF9zaWdfdmlzaWJsZVxuICAgIHRcblxubGV0IHByaW50X2NvdW50ZXIgY291bnRlcnNfaW5mbyBhZ2VudF9pZCBzaXRlX2lkIGYgPVxuICBtYXRjaCBjb3VudGVyc19pbmZvLihhZ2VudF9pZCkuKHNpdGVfaWQpIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjIC0+IHByaW50X2NvdW50ZXJfc2lnIGYgY1xuXG5sZXQgcHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgc2lncyBmIHQgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBhZyBmIGludGYgLT5cbiAgICAgICAgIGlmIChub3QgKFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgYWcpKSB8fCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+JSVhZ2VudDpAICVhKEBbJWFAXSlAXVwiXG4gICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgIGFnXG4gICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gcyBmIGNvdW50ZXJfc2lnX29wdCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggY291bnRlcl9zaWdfb3B0IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGNvdW50ZXJfc2lnIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIFNpZ25hdHVyZS5zaXRlX2lzX2NvdW50ZXIgc2lncyBhZyBzICYmIG5vdCBub0NvdW50ZXJzXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWcpXG4gICAgICAgICAgICAgICAgICAgICAgICBzIHByaW50X2NvdW50ZXJfc2lnIGNvdW50ZXJfc2lnKSlcbiAgICAgICAgICAgICBpbnRmKSlcbiAgICB0XG5cbmxldCBpbnRfb3B0X2Fubm90ZWRfb3B0X3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgSnNvblV0aWwub2ZfaW50IHw+IEpzb25VdGlsLm9mX29wdGlvblxuICB8PiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICB8PiBKc29uVXRpbC5vZl9vcHRpb25cblxubGV0IGludF9vcHRfYW5ub3RlZF9vcHRfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBKc29uVXRpbC50b19pbnQgfD4gSnNvblV0aWwudG9fb3B0aW9uXG4gIHw+IExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gIHw+IEpzb25VdGlsLnRvX29wdGlvblxuXG5sZXQgZnJvbV9vcmlnaW5hbF9hc3RfeW9qc29uX3N0ciA9IFwiZnJvbV9vcmlnaW5hbF9hc3RcIlxubGV0IGZyb21fY2x0ZV9lbGltaW5hdGlvbl95b2pzb25fc3RyID0gXCJmcm9tX2NsdGVfZWxpbWluYXRpb25cIlxuXG5sZXQgdHJhbnNsYXRlX2ludF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IEJBU0lTX01JTlVTX0lOUFVUIGkgLT4gSnNvblV0aWwub2ZfaW50IGlcblxubGV0IHRyYW5zbGF0ZV9pbnRfb2ZfeW9qc29uIHRyYW5zbGF0ZV9pbnRfanNvbiA9XG4gIEJBU0lTX01JTlVTX0lOUFVUIChKc29uVXRpbC50b19pbnQgdHJhbnNsYXRlX2ludF9qc29uKVxuXG5sZXQgZnJvbV9zaWdfbmFtZV9zdHIgPSBcImZyb21fc2lnX25hbWVcIlxubGV0IGNvbnZlcnRfdmFsdWVfc3RyID0gXCJjb252ZXJ0X3ZhbHVlXCJcbmxldCBjb252ZXJ0X2RlbHRhX3N0ciA9IFwiY29udmVydF9kZWx0YVwiXG5cbmxldCBjb252ZXJzaW9uX2luZm9fdG9feW9qc29uIH5maWxlbmFtZXMgY29udmVyc2lvbl9pbmZvID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBmcm9tX3NpZ19uYW1lX3N0cixcbiAgICAgICAgTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcyBjb252ZXJzaW9uX2luZm8uZnJvbV9zaWdfbmFtZSApO1xuICAgICAgY29udmVydF92YWx1ZV9zdHIsIHRyYW5zbGF0ZV9pbnRfdG9feW9qc29uIGNvbnZlcnNpb25faW5mby5jb252ZXJ0X3ZhbHVlO1xuICAgICAgY29udmVydF9kZWx0YV9zdHIsIHRyYW5zbGF0ZV9pbnRfdG9feW9qc29uIGNvbnZlcnNpb25faW5mby5jb252ZXJ0X2RlbHRhO1xuICAgIF1cblxubGV0IGNvbnZlcnNpb25faW5mb19vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgZnJvbV9zaWdfbmFtZSA9XG4gICAgICAgICBMaXN0LmFzc29jIGZyb21fc2lnX25hbWVfc3RyIGwgfD4gTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lc1xuICAgICAgIGluXG4gICAgICAgbGV0IGNvbnZlcnRfdmFsdWUgPVxuICAgICAgICAgTGlzdC5hc3NvYyBjb252ZXJ0X3ZhbHVlX3N0ciBsIHw+IHRyYW5zbGF0ZV9pbnRfb2ZfeW9qc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgY29udmVydF9kZWx0YSA9XG4gICAgICAgICBMaXN0LmFzc29jIGNvbnZlcnRfZGVsdGFfc3RyIGwgfD4gdHJhbnNsYXRlX2ludF9vZl95b2pzb25cbiAgICAgICBpblxuICAgICAgIHsgZnJvbV9zaWdfbmFtZTsgY29udmVydF92YWx1ZTsgY29udmVydF9kZWx0YSB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiY29udmVyc2lvbl9pbmZvXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJjb252ZXJzaW9uX2luZm9cIiwgeCkpXG5cbmxldCBvcmlnaW5fdG9feW9qc29uIH5maWxlbmFtZXMgb3JpZ2luID1cbiAgbWF0Y2ggb3JpZ2luIHdpdGhcbiAgfCBGcm9tX29yaWdpbmFsX2FzdCAtPiBgQXNzb2MgWyBmcm9tX29yaWdpbmFsX2FzdF95b2pzb25fc3RyLCBgTnVsbCBdXG4gIHwgRnJvbV9jbHRlX2VsaW1pbmF0aW9uIGNvbnZlcnNpb25faW5mbyAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIGZyb21fY2x0ZV9lbGltaW5hdGlvbl95b2pzb25fc3RyLFxuICAgICAgICAgIGNvbnZlcnNpb25faW5mb190b195b2pzb24gfmZpbGVuYW1lcyBjb252ZXJzaW9uX2luZm8gKTtcbiAgICAgIF1cblxubGV0IG9yaWdpbl9vZl95b2pzb24gfmZpbGVuYW1lcyBvcmlnaW5fanNvbiA9XG4gIG1hdGNoIG9yaWdpbl9qc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gZnJvbV9vcmlnaW5hbF9hc3RfeW9qc29uX3N0ciAtPlxuICAgIEZyb21fb3JpZ2luYWxfYXN0XG4gIHwgYEFzc29jIFsgKHMsIGNvbnZlcnNpb25faW5mb19qc29uKSBdXG4gICAgd2hlbiBzID0gZnJvbV9jbHRlX2VsaW1pbmF0aW9uX3lvanNvbl9zdHIgLT5cbiAgICBGcm9tX2NsdGVfZWxpbWluYXRpb25cbiAgICAgIChjb252ZXJzaW9uX2luZm9fb2ZfeW9qc29uIH5maWxlbmFtZXMgY29udmVyc2lvbl9pbmZvX2pzb24pXG4gIHwgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwib3JpZ2luXCIsIG9yaWdpbl9qc29uKSlcblxubGV0IGNvdW50ZXJfc2lnX25hbWVfc3RyID0gXCJjb3VudGVyX3NpZ19uYW1lXCJcbmxldCBjb3VudGVyX3NpZ19taW5fc3RyID0gXCJjb3VudGVyX3NpZ19taW5cIlxubGV0IGNvdW50ZXJfc2lnX21heF9zdHIgPSBcImNvdW50ZXJfc2lnX21heFwiXG5sZXQgY291bnRlcl9zaWdfdmlzaWJsZV9zdHIgPSBcImNvdW50ZXJfc2lnX3Zpc2libGVcIlxubGV0IGNvdW50ZXJfc2lnX2RlZmF1bHRfc3RyID0gXCJjb3VudGVyX3NpZ19kZWZhdWx0XCJcblxubGV0IGNvdW50ZXJfc2lnX29wdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLm9mX29wdGlvbiAoZnVuIGNvdW50ZXJfc2lnIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggY291bnRlcl9zaWdfbmFtZV9zdHIsXG4gICAgICAgICAgICBMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzIGNvdW50ZXJfc2lnLmNvdW50ZXJfc2lnX25hbWUgKTtcbiAgICAgICAgICAoIGNvdW50ZXJfc2lnX21pbl9zdHIsXG4gICAgICAgICAgICBpbnRfb3B0X2Fubm90ZWRfb3B0X3RvX3lvanNvbiB+ZmlsZW5hbWVzIGNvdW50ZXJfc2lnLmNvdW50ZXJfc2lnX21pblxuICAgICAgICAgICk7XG4gICAgICAgICAgKCBjb3VudGVyX3NpZ19tYXhfc3RyLFxuICAgICAgICAgICAgaW50X29wdF9hbm5vdGVkX29wdF90b195b2pzb24gfmZpbGVuYW1lcyBjb3VudGVyX3NpZy5jb3VudGVyX3NpZ19tYXhcbiAgICAgICAgICApO1xuICAgICAgICAgICggY291bnRlcl9zaWdfdmlzaWJsZV9zdHIsXG4gICAgICAgICAgICBvcmlnaW5fdG9feW9qc29uIH5maWxlbmFtZXMgY291bnRlcl9zaWcuY291bnRlcl9zaWdfdmlzaWJsZSApO1xuICAgICAgICAgICggY291bnRlcl9zaWdfZGVmYXVsdF9zdHIsXG4gICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQgY291bnRlcl9zaWcuY291bnRlcl9zaWdfZGVmYXVsdCApO1xuICAgICAgICBdKVxuXG5sZXQgY291bnRlcl9zaWdfb3B0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgSnNvblV0aWwudG9fb3B0aW9uIChmdW5jdGlvblxuICAgIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX25hbWUgPVxuICAgICAgICAgICBMaXN0LmFzc29jIGNvdW50ZXJfc2lnX25hbWVfc3RyIGxcbiAgICAgICAgICAgfD4gTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBjb3VudGVyX3NpZ19taW4gPVxuICAgICAgICAgICBMaXN0LmFzc29jIGNvdW50ZXJfc2lnX21pbl9zdHIgbFxuICAgICAgICAgICB8PiBpbnRfb3B0X2Fubm90ZWRfb3B0X29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX21heCA9XG4gICAgICAgICAgIExpc3QuYXNzb2MgY291bnRlcl9zaWdfbWF4X3N0ciBsXG4gICAgICAgICAgIHw+IGludF9vcHRfYW5ub3RlZF9vcHRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY291bnRlcl9zaWdfdmlzaWJsZSA9XG4gICAgICAgICAgIExpc3QuYXNzb2MgY291bnRlcl9zaWdfdmlzaWJsZV9zdHIgbCB8PiBvcmlnaW5fb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY291bnRlcl9zaWdfZGVmYXVsdCA9XG4gICAgICAgICAgIExpc3QuYXNzb2MgY291bnRlcl9zaWdfZGVmYXVsdF9zdHIgbCB8PiBKc29uVXRpbC50b19pbnRcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGNvdW50ZXJfc2lnX25hbWU7XG4gICAgICAgICAgIGNvdW50ZXJfc2lnX21pbjtcbiAgICAgICAgICAgY291bnRlcl9zaWdfbWF4O1xuICAgICAgICAgICBjb3VudGVyX3NpZ192aXNpYmxlO1xuICAgICAgICAgICBjb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgICAgICAgfVxuICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiY29udmVyc2lvbl9pbmZvXCIsIHgpKSlcbiAgICB8IHggLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImNvbnZlcnNpb25faW5mb1wiLCB4KSkpXG5cbmxldCB0b195b2pzb24gfmZpbGVuYW1lcyAodCA6IHQpIDogWW9qc29uLkJhc2ljLnQgPVxuICBKc29uVXRpbC5vZl9hcnJheVxuICAgIChKc29uVXRpbC5vZl9hcnJheSAoY291bnRlcl9zaWdfb3B0aW9uX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICB0XG5cbmxldCBvZl95b2pzb24gfmZpbGVuYW1lcyAoanNvbiA6IFlvanNvbi5CYXNpYy50KSA6IHQgPVxuICBKc29uVXRpbC50b19hcnJheVxuICAgIChKc29uVXRpbC50b19hcnJheSAoY291bnRlcl9zaWdfb3B0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICBqc29uXG5cbmxldCByYWlzZV9lcnJvciA/ZXhjZXB0IGV4Y2VwdCcgPVxuICBtYXRjaCBleGNlcHQgd2l0aFxuICB8IFNvbWUgZXhjZXB0IC0+IHJhaXNlIGV4Y2VwdFxuICB8IE5vbmUgLT4gcmFpc2UgZXhjZXB0J1xuXG5sZXQgZ2V0X2NvdW50ZXJfc2lnID9leGNlcHQgc2lncyBjIGFnZW50X2lkIHNpdGVfaWQgPVxuICBtYXRjaCBjLihhZ2VudF9pZCkuKHNpdGVfaWQpIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VfZXJyb3IgP2V4Y2VwdFxuICAgICAgKGxldCBlcnJvciA9XG4gICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJTaXRlICVhIG9mIGFnZW50ICVhIGlzIG5vdCBhbiBjb3VudGVyXCJcbiAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdlbnRfaWQpXG4gICAgICAgICAgIChzaXRlX2lkIDogaW50KVxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgIChhZ2VudF9pZCA6IGludClcbiAgICAgICBpblxuICAgICAgIEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3IgKExvYy5hbm5vdF93aXRoX2R1bW15IGVycm9yKSlcbiAgfCBTb21lIGNvdW50ZXJfc2lnIC0+IGNvdW50ZXJfc2lnXG5cbmxldCBnZXRfY29udmVyc2lvbl9pbmZvID9leGNlcHQgYyA9XG4gIG1hdGNoIGMuY291bnRlcl9zaWdfdmlzaWJsZSB3aXRoXG4gIHwgRnJvbV9vcmlnaW5hbF9hc3QgLT5cbiAgICByYWlzZV9lcnJvciA/ZXhjZXB0XG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICBcImludGVybmFsIGVycm9yOiBjb252ZXJzaW9uIGFwcGx5aWVkIHRvIGFuIG9yaWdpbmFsIGNvdW50ZXJcIikpXG4gIHwgRnJvbV9jbHRlX2VsaW1pbmF0aW9uIGNvdW50ZXJfY29udmVyc2lvbiAtPiBjb3VudGVyX2NvbnZlcnNpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaW50ZXJuYWwgPSBpbnQgb3B0aW9uXG50eXBlIGxpbmsgPSBGUkVFIHwgVkFMIG9mIGludFxudHlwZSBhZ2VudCA9IHsgYV90eXBlOiBpbnQ7IGFfcG9ydHM6IGxpbmsgYXJyYXk7IGFfaW50czogaW50ZXJuYWwgYXJyYXkgfVxudHlwZSB0ID0gYWdlbnQgbGlzdFxuXG5sZXQgY29weV9hZ2VudCBhZ2VudCA9XG4gIHtcbiAgICBhX3R5cGUgPSBhZ2VudC5hX3R5cGU7XG4gICAgYV9wb3J0cyA9IEFycmF5LmNvcHkgYWdlbnQuYV9wb3J0cztcbiAgICBhX2ludHMgPSBBcnJheS5jb3B5IGFnZW50LmFfaW50cztcbiAgfVxuXG50eXBlIGluY3JfdCA9IHtcbiAgZmF0aGVyOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICByYW5rOiAoaW50ICogKGJvb2wgKiBib29sKSkgTW9kcy5EeW5BcnJheS50O1xufVxuXG5sZXQgY3JlYXRlIG4gPVxuICB7XG4gICAgZmF0aGVyID0gTW9kcy5EeW5BcnJheS5pbml0IG4gKGZ1biBpIC0+IGkpO1xuICAgIHJhbmsgPSBNb2RzLkR5bkFycmF5Lm1ha2UgbiAoMSwgKHRydWUsIGZhbHNlKSk7XG4gIH1cblxubGV0IHJlYyBmaW5kX2F1eCBhIGkgPVxuICBsZXQgYWkgPVxuICAgIGlmIE1vZHMuRHluQXJyYXkubGVuZ3RoIGEgPD0gaSB0aGVuXG4gICAgICBpXG4gICAgZWxzZVxuICAgICAgTW9kcy5EeW5BcnJheS5nZXQgYSBpXG4gIGluXG4gIGlmIGFpID09IGkgdGhlblxuICAgIGlcbiAgZWxzZSAoXG4gICAgbGV0IHJvb3QgPSBmaW5kX2F1eCBhIGFpIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgYSBpIHJvb3QgaW5cbiAgICByb290XG4gIClcblxubGV0IGZpbmQgaCB4ID0gZmluZF9hdXggaC5mYXRoZXIgeFxubGV0IGNvbWJpbmVfcmFua3MgKGl4LCAoYngsIF8pKSAoaXksIChieSwgXykpID0gaXggKyBpeSwgKGJ4ICYmIGJ5LCB0cnVlKVxuXG5sZXQgdW5pb24gaCB4IHkgPVxuICBsZXQgcm9vdF94ID0gZmluZCBoIHggaW5cbiAgbGV0IHJvb3RfeSA9IGZpbmQgaCB5IGluXG4gIGlmIHJvb3RfeCA9PSByb290X3kgdGhlblxuICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCByYW5rX3ggPSBNb2RzLkR5bkFycmF5LmdldCBoLnJhbmsgcm9vdF94IGluXG4gICAgbGV0IHJhbmtfeSA9IE1vZHMuRHluQXJyYXkuZ2V0IGgucmFuayByb290X3kgaW5cbiAgICBpZiBmc3QgcmFua194ID4gZnN0IHJhbmtfeSB0aGVuIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3ggKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeSByb290X3hcbiAgICApIGVsc2UgaWYgZnN0IHJhbmtfeCA8IGZzdCByYW5rX3kgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBoLnJhbmsgcm9vdF95IChjb21iaW5lX3JhbmtzIHJhbmtfeCByYW5rX3kpIGluXG4gICAgICBNb2RzLkR5bkFycmF5LnNldCBoLmZhdGhlciByb290X3ggcm9vdF95XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3ggKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeSByb290X3hcbiAgICApXG4gIClcblxubGV0IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggPVxuICBsZXQgdCA9IGNyZWF0ZSAxIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGFnIC0+XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5hX3R5cGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSAoYmVmb3JlLCBhZnRlcikgLT5cbiAgICAgICAgICAgIGxldCBhID0gYWcuYV9wb3J0cy4oYWZ0ZXIpIGluXG4gICAgICAgICAgICBsZXQgYiA9IGFnLmFfcG9ydHMuKGJlZm9yZSkgaW5cbiAgICAgICAgICAgIChtYXRjaCBiIHdpdGhcbiAgICAgICAgICAgIHwgRlJFRSAtPiAoKVxuICAgICAgICAgICAgfCBWQUwgbG5rX2IgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IEZSRUUgLT5cbiAgICAgICAgICAgICAgICAoKiBpbiB0aGlzIGNhc2UgdGhlIGVuZHBvaW50IG9mIHRoZSBjaGFpbiBvZiBpbmNyZW1lbnRzIGlzIHJhdzpcbiAgICAgICAgICAgICAgICAgICB0aGUgYWdlbnQgaXMgY3JlYXRlZCB3aXRoIGEgY291bnRlciB2YWx1ZSopXG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBmaW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5yYW5rIHJvb3QgKHMgLSAxLCAodHJ1ZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgVkFMIGxua19hIC0+IHVuaW9uIHQgbG5rX2IgbG5rX2EpKSlcbiAgICAgICAgbWl4XG4gIGluXG4gIHRcblxubGV0IHByaW50X2xpbmsgfm5vQ291bnRlcnMgP21pbl92YWx1ZSBjb3VudGVyX2FnZW50cyBmID0gZnVuY3Rpb25cbiAgfCBGUkVFIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiXG4gIHwgVkFMIGkgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHJvb3QgPSBmaW5kIGNvdW50ZXJfYWdlbnRzIGkgaW5cbiAgICAgICBsZXQgY291bnRlciwgKF8sIGlzX2NvdW50ZXIpID1cbiAgICAgICAgIE1vZHMuRHluQXJyYXkuZ2V0IGNvdW50ZXJfYWdlbnRzLnJhbmsgcm9vdFxuICAgICAgIGluXG4gICAgICAgaWYgaXNfY291bnRlciAmJiBub3Qgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiez0lZH1cIlxuICAgICAgICAgICAobWF0Y2ggbWluX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNvdW50ZXJcbiAgICAgICAgICAgfCBTb21lIG0gLT4gbSArIGNvdW50ZXIpXG4gICAgICAgZWxzZVxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslaV1cIiBpXG4gICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJbJWldXCIgaSlcblxubGV0IGF1eF9wcF9zaSBzaWdzIGEgcyBmIGkgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyBhIHMgZiBpXG4gIHwgTm9uZSAtPlxuICAgIChtYXRjaCBpIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWl7JWl9XCIgcyBpXG4gICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBzKVxuXG5sZXQgcHJpbnRfaW50ZiB+bm9Db3VudGVycyB3aXRoX2xpbmsgP3NpZ3MgP2NvdW50ZXJzX2luZm8gY291bnRlcl9hZ2VudHMgYWdfdHkgZlxuICAgIChwb3J0cywgaW50cykgPVxuICBsZXQgcmVjIGF1eCBlbXB0eSBpID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW4gKFxuICAgICAgbGV0IG1pbl92YWx1ZSA9XG4gICAgICAgIGlmIG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggc2lncywgY291bnRlcnNfaW5mbyB3aXRoXG4gICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIHNpZ3MsIFNvbWUgY291bnRlcnNfaW5mbyAtPlxuICAgICAgICAgICAgaWYgU2lnbmF0dXJlLnNpdGVfaXNfY291bnRlciBzaWdzIGFnX3R5IGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZyA9XG4gICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5nZXRfY291bnRlcl9zaWcgc2lncyBjb3VudGVyc19pbmZvIGFnX3R5IGlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggY291bnRlcl9zaWcuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLCBfKSAtPiBTb21lIGlcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhXCJcbiAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAoYXV4X3BwX3NpIHNpZ3MgYWdfdHkgaSkgaW50cy4oaSlcbiAgICAgICAgICAoaWYgd2l0aF9saW5rIHRoZW5cbiAgICAgICAgICAgICBwcmludF9saW5rIH5ub0NvdW50ZXJzID9taW5fdmFsdWUgY291bnRlcl9hZ2VudHNcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGZ1biBfIF8gLT5cbiAgICAgICAgICAgKCkpXG4gICAgICAgICAgcG9ydHMuKGkpXG4gICAgICBpblxuICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBhdXhfcHBfYWcgc2lncyBmIGEgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MgZiBhXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgYVxuXG5sZXQgcHJpbnRfYWdlbnQgfm5vQ291bnRlcnMgY3JlYXRlZCBsaW5rID9zaWdzID9jb3VudGVyc19pbmZvIGNvdW50ZXJfYWdlbnRzIGZcbiAgICBhZyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pJXRcIiAoYXV4X3BwX2FnIHNpZ3MpIGFnLmFfdHlwZVxuICAgIChwcmludF9pbnRmIH5ub0NvdW50ZXJzIGxpbmsgP3NpZ3MgP2NvdW50ZXJzX2luZm8gY291bnRlcl9hZ2VudHMgYWcuYV90eXBlKVxuICAgIChhZy5hX3BvcnRzLCBhZy5hX2ludHMpIChmdW4gZiAtPlxuICAgICAgaWYgY3JlYXRlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIitcIilcblxubGV0IHByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkIH5pbml0aWFsX2NvbW1hID9zaWdzID9jb3VudGVyc19pbmZvIGYgbWl4ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRzID0gdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCBpblxuICBsZXQgcmVjIGF1eF9wcmludCBzb21lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGguYV90eXBlICYmIG5vdCBub0NvdW50ZXJzXG4gICAgICB0aGVuXG4gICAgICAgIGF1eF9wcmludCBzb21lIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBpZiBzb21lIHRoZW4gUHAuY29tbWEgZiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHByaW50X2FnZW50IH5ub0NvdW50ZXJzIGNyZWF0ZWQgdHJ1ZSA/c2lncyA/Y291bnRlcnNfaW5mb1xuICAgICAgICAgICAgY291bnRlcl9hZ2VudHMgZiBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9wcmludCB0cnVlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4X3ByaW50IGluaXRpYWxfY29tbWEgbWl4XG5cbmxldCBhZ2VudF90b19qc29uIGEgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcInR5cGVcIiwgYEludCBhLmFfdHlwZTtcbiAgICAgICggXCJzaXRlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBGUkVFIC0+IGBOdWxsXG4gICAgICAgICAgICAgICB8IFZBTCBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICBhLmFfcG9ydHMgW10pICk7XG4gICAgICAoIFwiaW50ZXJuYWxzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICBhLmFfaW50cyBbXSkgKTtcbiAgICBdXG5cbmxldCBhZ2VudF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSkgXVxuICB8IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0KTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJzaXRlc1wiLCBgTGlzdCBzKSBdXG4gIHwgYEFzc29jIFsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcInNpdGVzXCIsIGBMaXN0IHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJ0eXBlXCIsIGBJbnQgdCkgXVxuICB8IGBBc3NvYyBbIChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInR5cGVcIiwgYEludCB0KSBdXG4gIHwgYEFzc29jIFsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcInR5cGVcIiwgYEludCB0KTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpIF0gLT5cbiAgICB7XG4gICAgICBhX3R5cGUgPSB0O1xuICAgICAgYV9wb3J0cyA9XG4gICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBOdWxsIC0+IEZSRUVcbiAgICAgICAgICAgIHwgYEludCBwIC0+IFZBTCBwXG4gICAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBzaXRlIGxpbmtcIiwgeCkpKVxuICAgICAgICAgIHM7XG4gICAgICBhX2ludHMgPVxuICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgTnVsbCAtPiBOb25lXG4gICAgICAgICAgICB8IGBJbnQgcCAtPiBTb21lIHBcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGludGVybmFsIHN0YXRlXCIsIHgpKSlcbiAgICAgICAgICBpO1xuICAgIH1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcmF3X2FnZW50XCIsIHgpKVxuXG5sZXQgdG9fanNvbiBtID0gYExpc3QgKExpc3QubWFwIGFnZW50X3RvX2pzb24gbSlcblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgYWdlbnRfb2ZfanNvbiBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJhd19taXh0dXJlXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwZXJ2YXNpdmVzX2Jvb2wgPSBib29sXG5cbnR5cGUgKCdtaXgsICdpZCkgZSA9XG4gIHwgQklOX0FMR19PUCBvZlxuICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgfCBVTl9BTEdfT1Agb2YgT3BlcmF0b3IudW5fYWxnX29wICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IFNUQVRFX0FMR19PUCBvZiBPcGVyYXRvci5zdGF0ZV9hbGdfb3BcbiAgfCBBTEdfVkFSIG9mICdpZFxuICB8IEtBUFBBX0lOU1RBTkNFIG9mICdtaXhcbiAgfCBUT0tFTl9JRCBvZiAnaWRcbiAgfCBDT05TVCBvZiBOYnIudFxuICB8IElGIG9mXG4gICAgICAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IERJRkZfVE9LRU4gb2YgKCgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWQgKiAnaWQpXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBvZiAoKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZCAqICdtaXgpXG5cbmFuZCAoJ21peCwgJ2lkKSBib29sID1cbiAgfCBUUlVFXG4gIHwgRkFMU0VcbiAgfCBCSU5fQk9PTF9PUCBvZlxuICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BcbiAgICAgICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gIHwgVU5fQk9PTF9PUCBvZiBPcGVyYXRvci51bl9ib29sX29wICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICB8IENPTVBBUkVfT1Agb2ZcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3BcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG5cbmxldCByZWMgZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5iaW5fYWxnX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGI7XG4gICAgICBdXG4gIHwgVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci51bl9hbGdfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgIF1cbiAgfCBTVEFURV9BTEdfT1Agb3AgLT4gT3BlcmF0b3Iuc3RhdGVfYWxnX29wX3RvX2pzb24gb3BcbiAgfCBBTEdfVkFSIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiVkFSXCI7IGZfaWQgaSBdXG4gIHwgS0FQUEFfSU5TVEFOQ0UgY2MgLT4gYExpc3QgWyBgU3RyaW5nIFwiTUlYXCI7IGZfbWl4IGNjIF1cbiAgfCBUT0tFTl9JRCBpIC0+IGBMaXN0IFsgYFN0cmluZyBcIlRPS0VOXCI7IGZfaWQgaSBdXG4gIHwgQ09OU1QgbiAtPiBOYnIudG9feW9qc29uIG5cbiAgfCBJRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiSUZcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGNvbmQ7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIHllcztcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgbm87XG4gICAgICBdXG4gIHwgRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkRJRkZfVE9LRU5cIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGV4cHI7XG4gICAgICAgIGZfaWQgdG9rZW47XG4gICAgICBdXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4dHVyZSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElGRl9NSVhUVVJFXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBleHByO1xuICAgICAgICBmX21peCBtaXh0dXJlO1xuICAgICAgXVxuXG5hbmQgYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBUUlVFIC0+IGBCb29sIHRydWVcbiAgfCBGQUxTRSAtPiBgQm9vbCBmYWxzZVxuICB8IFVOX0JPT0xfT1AgKG9wLCBhKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLnVuX2Jvb2xfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGE7XG4gICAgICBdXG4gIHwgQklOX0JPT0xfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmJpbl9ib29sX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYjtcbiAgICAgIF1cbiAgfCBDT01QQVJFX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5jb21wYXJlX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGI7XG4gICAgICBdXG5cbmxldCByZWMgZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESUZGX01JWFRVUkVcIjsgZXhwcjsgbWl4dHVyZSBdIC0+XG4gICAgRElGRl9LQVBQQV9JTlNUQU5DRVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBleHByLFxuICAgICAgICBmX21peCBtaXh0dXJlIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESUZGX1RPS0VOXCI7IGV4cHI7IHRvayBdIC0+XG4gICAgRElGRl9UT0tFTlxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBleHByLFxuICAgICAgICBmX2lkIHRvayApXG4gIHwgYExpc3QgWyBvcDsgYTsgYiBdIC0+XG4gICAgQklOX0FMR19PUFxuICAgICAgKCBPcGVyYXRvci5iaW5fYWxnX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGEsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGJcbiAgICAgIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJWQVJcIjsgaSBdIC0+IEFMR19WQVIgKGZfaWQgaSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJUT0tFTlwiOyBpIF0gLT4gVE9LRU5fSUQgKGZfaWQgaSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJNSVhcIjsgY2MgXSAtPiBLQVBQQV9JTlNUQU5DRSAoZl9taXggY2MpXG4gIHwgYExpc3QgWyBvcDsgYSBdIC0+XG4gICAgVU5fQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLnVuX2FsZ19vcF9vZl9qc29uIG9wLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhXG4gICAgICApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiSUZcIjsgY29uZDsgeWVzOyBubyBdIC0+XG4gICAgSUZcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGNvbmQsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIHllcyxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgbm9cbiAgICAgIClcbiAgfCB4IC0+XG4gICAgKHRyeSBTVEFURV9BTEdfT1AgKE9wZXJhdG9yLnN0YXRlX2FsZ19vcF9vZl9qc29uIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgKHRyeSBDT05TVCAoTmJyLm9mX3lvanNvbiB4KVxuICAgICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgQWxnX2V4cHJcIiwgeCkpKSlcblxuYW5kIGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPlxuICAgIGlmIGIgdGhlblxuICAgICAgVFJVRVxuICAgIGVsc2VcbiAgICAgIEZBTFNFXG4gIHwgYExpc3QgWyBvcDsgYSBdIC0+XG4gICAgVU5fQk9PTF9PUFxuICAgICAgKCBPcGVyYXRvci51bl9ib29sX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhIClcbiAgfCBgTGlzdCBbIG9wOyBhOyBiIF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBCSU5fQk9PTF9PUFxuICAgICAgICAgKCBPcGVyYXRvci5iaW5fYm9vbF9vcF9vZl9qc29uIG9wLFxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgYSxcbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgIGIgKVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBDT01QQVJFX09QXG4gICAgICAgICAgICAoIE9wZXJhdG9yLmNvbXBhcmVfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICAgICBiIClcbiAgICAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbCBleHByXCIsIHgpKSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbF9leHByXCIsIHgpKVxuXG5sZXQgcmVjIHByaW50IHByX21peCBwcl90b2sgcHJfdmFyIGYgPSBmdW5jdGlvblxuICB8IENPTlNUIG4gLT4gTmJyLnByaW50IGYgblxuICB8IEFMR19WQVIgbGFiIC0+IHByX3ZhciBmIGxhYlxuICB8IEtBUFBBX0lOU1RBTkNFIGFzdCAtPiBwcl9taXggZiBhc3RcbiAgfCBUT0tFTl9JRCB0ayAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIHByX3RvayB0a1xuICB8IFNUQVRFX0FMR19PUCBvcCAtPiBPcGVyYXRvci5wcmludF9zdGF0ZV9hbGdfb3AgZiBvcFxuICB8IEJJTl9BTEdfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBPcGVyYXRvci5wcmludF9iaW5fYWxnX29wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiIGYgb3BcbiAgfCBVTl9BTEdfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhKCVhKVwiIE9wZXJhdG9yLnByaW50X3VuX2FsZ19vcCBvcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYVxuICB8IElGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSBbP10gJWEgWzpdICVhXCJcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgY29uZFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgeWVzXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBub1xuICB8IERJRkZfVE9LRU4gKChleHByLCBfKSwgdG9rKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkaWZmKCVhLCVhKVwiIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgZXhwciBwcl90b2sgdG9rXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoKGV4cHIsIF8pLCBtaXh0dXJlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkaWZmKCVhLCVhKVwiXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBleHByIHByX21peCBtaXh0dXJlXG5cbmFuZCBwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyIGYgPSBmdW5jdGlvblxuICB8IFRSVUUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlt0cnVlXVwiXG4gIHwgRkFMU0UgLT4gRm9ybWF0LmZwcmludGYgZiBcIltmYWxzZV1cIlxuICB8IFVOX0JPT0xfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICglYSlcIiBPcGVyYXRvci5wcmludF91bl9ib29sX29wIG9wXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGFcbiAgfCBCSU5fQk9PTF9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJWEgJWEpXCJcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYSBPcGVyYXRvci5wcmludF9iaW5fYm9vbF9vcCBvcFxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiXG4gIHwgQ09NUEFSRV9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJWEgJWEpXCJcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGEgT3BlcmF0b3IucHJpbnRfY29tcGFyZV9vcCBvcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYlxuXG5sZXQgY29uc3QgbiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChDT05TVCBuKVxubGV0IGludCBpID0gY29uc3QgKE5ici5JIGkpXG5sZXQgZmxvYXQgZiA9IGNvbnN0IChOYnIuRiBmKVxubGV0IGFkZCBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5TVU0sIGUxLCBlMikpXG5sZXQgbWludXMgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuTUlOVVMsIGUxLCBlMikpXG5sZXQgbXVsdCBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBlMSwgZTIpKVxubGV0IGRpdiBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGUxLCBlMikpXG5sZXQgcG93IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLlBPVywgZTEsIGUyKSlcbmxldCBsb2cgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5MT0csIGUxKSlcblxubGV0IGxuIGUxID1cbiAgKCogSkY6IElmIEkgcmVtZW1uYmVyIHdlbGwgKilcbiAgZGl2IChsb2cgZTEpIChsb2cgKGludCAxMCkpXG5cbmxldCBzaW4gZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5TSU5VUywgZTEpKVxubGV0IGNvcyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLkNPU0lOVVMsIGUxKSlcbmxldCB1bWludXMgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5VTUlOVVMsIGUxKSlcbmxldCBzcXJ0IGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuU1FSVCwgZTEpKVxuXG5sZXQgcmVjIGFkZF9kZXAgKChpbl90LCBpbl9lLCB0b2tzX2QsIG91dCkgYXMgeCkgZCA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gYWRkX2RlcCAoYWRkX2RlcCB4IGQgYSkgZCBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgX1xuICAoKiB3aGVuIHdlIGRpZmZlcmVudGlhdGUgYWdhaW5zdCBhIHZhcmlhYmxlLCB0aGUgcmVzdWx0IG1heSBkZXBlbmQgb24gdGhpcyB2YXJpYWJsZSBvbmx5IGlmIHRoZSB2YXJpYWJsZSBvY2N1cnMgaW4gdGhlIGRpZmZlcm50aWF0ZWQgZXhwcmVzc2lvbiAqKVxuICAgIC0+XG4gICAgYWRkX2RlcCB4IGQgYVxuICB8IEFMR19WQVIgaiwgXyAtPlxuICAgIGxldCAoKSA9IG91dC4oaikgPC0gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIG91dC4oaikgaW5cbiAgICB4XG4gIHwgKEtBUFBBX0lOU1RBTkNFIF8gfCBDT05TVCBfKSwgXyAtPiB4XG4gIHwgVE9LRU5fSUQgaSwgXyAtPlxuICAgIGxldCAoKSA9IHRva3NfZC4oaSkgPC0gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIHRva3NfZC4oaSkgaW5cbiAgICB4XG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYWRkX2RlcCAoYWRkX2RlcCAoYWRkX2RlcF9ib29sIHggZCBjb25kKSBkIHllcykgZCBub1xuICB8IFNUQVRFX0FMR19PUCBvcCwgXyAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5FTUFYX1ZBUiB8IE9wZXJhdG9yLlRNQVhfVkFSIC0+IHhcbiAgICB8IE9wZXJhdG9yLlRJTUVfVkFSIC0+IE9wZXJhdG9yLkRlcFNldC5hZGQgZCBpbl90LCBpbl9lLCB0b2tzX2QsIG91dFxuICAgIHwgT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIC0+XG4gICAgICBpbl90LCBPcGVyYXRvci5EZXBTZXQuYWRkIGQgaW5fZSwgdG9rc19kLCBvdXQpXG5cbmFuZCBhZGRfZGVwX2Jvb2wgeCBkID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiB4XG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYWRkX2RlcF9ib29sIHggZCBhXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGFkZF9kZXBfYm9vbCAoYWRkX2RlcF9ib29sIHggZCBhKSBkIGJcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBhZGRfZGVwIChhZGRfZGVwIHggZCBhKSBkIGJcblxubGV0IHJlYyBoYXNfbWl4IDpcbiAgICB0eXBlIGEuID92YXJfZGVjbHM6KCdiIC0+ICgnYywgJ2IpIGUpIC0+IChhLCAnYikgZSAtPiBwZXJ2YXNpdmVzX2Jvb2wgPVxuIGZ1biA/dmFyX2RlY2xzIC0+IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBVTl9BTEdfT1AgKF8sIChhLCBfKSlcbiAgfCBESUZGX1RPS0VOICgoYSwgXyksIF8pXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoKGEsIF8pLCBfKSAtPlxuICAgICgqIHdoZW4gd2UgZGlmZmVyZW50aWF0ZSBhZ2FpbnN0IGEgdmFyaWFibGUsIHRoZSByZXN1bHQgbWF5IGRlcGVuZCBvbiB0aGlzIHZhcmlhYmxlIG9ubHkgaWYgdGhlIHZhcmlhYmxlIG9jY3VycyBpbiB0aGUgZGlmZmVybnRpYXRlZCBleHByZXNzaW9uICopXG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGFcbiAgfCBTVEFURV9BTEdfT1AgXyB8IENPTlNUIF8gLT4gZmFsc2VcbiAgfCBUT0tFTl9JRCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyAtPiB0cnVlXG4gIHwgSUYgKChjb25kLCBfKSwgKHllcywgXyksIChubywgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIHllcyB8fCBoYXNfbWl4ID92YXJfZGVjbHMgbm9cbiAgICB8fCBib29sX2hhc19taXggP3Zhcl9kZWNscyBjb25kXG4gIHwgQUxHX1ZBUiBpIC0+XG4gICAgKG1hdGNoIHZhcl9kZWNscyB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGYgLT4gaGFzX21peCA/dmFyX2RlY2xzIChmIGkpKVxuXG5hbmQgYm9vbF9oYXNfbWl4IDpcbiAgICB0eXBlIGEuID92YXJfZGVjbHM6KCdiIC0+ICgnYywgJ2IpIGUpIC0+IChhLCAnYikgYm9vbCAtPiBwZXJ2YXNpdmVzX2Jvb2wgPVxuIGZ1biA/dmFyX2RlY2xzIC0+IGZ1bmN0aW9uXG4gIHwgVFJVRSB8IEZBTFNFIC0+IGZhbHNlXG4gIHwgQ09NUEFSRV9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgYm9vbF9oYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBib29sX2hhc19taXggP3Zhcl9kZWNscyBiXG4gIHwgVU5fQk9PTF9PUCAoXywgKGEsIF8pKSAtPiBib29sX2hhc19taXggP3Zhcl9kZWNscyBhXG5cbmxldCByZWMgaXNfY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IENPTlNUIF8sIF8gLT4gdHJ1ZVxuICB8IElGIChhLCBiLCBjKSwgXyAtPiBib29sX2lzX2NvbnN0YW50IGEgJiYgaXNfY29uc3RhbnQgYiAmJiBpc19jb25zdGFudCBjXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gaXNfY29uc3RhbnQgYSAmJiBpc19jb25zdGFudCBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSB8IERJRkZfVE9LRU4gKGEsIF8pKSwgXyAtPlxuICAgIGlzX2NvbnN0YW50IGFcbiAgfCAoQUxHX1ZBUiBfIHwgU1RBVEVfQUxHX09QIF8gfCBUT0tFTl9JRCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyksIF8gLT4gZmFsc2VcblxuYW5kIGJvb2xfaXNfY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHRydWVcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBpc19jb25zdGFudCBhICYmIGlzX2NvbnN0YW50IGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gYm9vbF9pc19jb25zdGFudCBhICYmIGJvb2xfaXNfY29uc3RhbnQgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaXNfY29uc3RhbnQgYVxuXG5sZXQgcmVjIGlzX3RpbWVfaG9tb2dlbmVvdXMgPSBmdW5jdGlvblxuICB8IENPTlNUIF8sIF8gLT4gdHJ1ZVxuICB8IElGIChhLCBiLCBjKSwgXyAtPlxuICAgIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBhICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgYiAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGNcbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBpc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSB8IERJRkZfVE9LRU4gKGEsIF8pKSwgXyAtPlxuICAgIGlzX3RpbWVfaG9tb2dlbmVvdXMgYVxuICB8ICggU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApLFxuICAgICAgXyApXG4gIHwgQUxHX1ZBUiBfLCBfXG4gIHwgVE9LRU5fSUQgXywgX1xuICB8IEtBUFBBX0lOU1RBTkNFIF8sIF8gLT5cbiAgICB0cnVlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSLCBfIC0+IGZhbHNlXG5cbmFuZCBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHRydWVcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBpc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYVxuXG5sZXQgcmVjIGF1eF9leHRyYWN0X2NjIGFjYyA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIGFjYyBhKSBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgXyAtPlxuICAgIGF1eF9leHRyYWN0X2NjIGFjYyBhXG4gIHwgKEFMR19WQVIgXyB8IENPTlNUIF8gfCBUT0tFTl9JRCBfIHwgU1RBVEVfQUxHX09QIF8pLCBfIC0+IGFjY1xuICB8IEtBUFBBX0lOU1RBTkNFIGksIF8gLT4gaSA6OiBhY2NcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgKGV4dHJhY3RfY2NfYm9vbCBhY2MgY29uZCkgeWVzKSBub1xuXG5hbmQgZXh0cmFjdF9jY19ib29sIGFjYyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gYWNjXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGV4dHJhY3RfY2NfYm9vbCAoZXh0cmFjdF9jY19ib29sIGFjYyBhKSBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gZXh0cmFjdF9jY19ib29sIGFjYyBhXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT4gYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIGFjYyBhKSBiXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIHggPSBhdXhfZXh0cmFjdF9jYyBbXSB4XG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIHggPSBleHRyYWN0X2NjX2Jvb2wgW10geFxuXG5sZXQgc2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCB0b2tzIHZhcnMgPVxuICBsZXQgaW5fdCA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgaW5fZSA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgdG9rc19kID0gQXJyYXkubWFrZSAoTmFtZWREZWNscy5zaXplIHRva3MpIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIHZhcnMpIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIHggKF8sIHkpIC0+IGFkZF9kZXAgeCAoT3BlcmF0b3IuQUxHIGkpIHkpXG4gICAgKGluX3QsIGluX2UsIHRva3NfZCwgb3V0KSB2YXJzXG5cbmxldCByZWMgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzID1cbiAgZnVuY3Rpb25cbiAgfCAoQklOX0FMR19PUCAob3AsIGEsIGIpLCBwb3MpIGFzIHggLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhLFxuICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGJcbiAgICAgICApXG4gICAgIHdpdGhcbiAgICB8IChDT05TVCBjMSwgXyksIChDT05TVCBjMiwgXykgLT4gQ09OU1QgKE5ici5vZl9iaW5fYWxnX29wIG9wIGMxIGMyKSwgcG9zXG4gICAgfCAoICgoICggQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICAgfCBESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfXG4gICAgICAgICAgIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgICAgXyApIGFzIGEnKSxcbiAgICAgICAgKCggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICB8IERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF9cbiAgICAgICAgICAgfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICAgICBfICkgYXMgYicpICkgLT5cbiAgICAgIGlmIGEgPT0gYScgJiYgYiA9PSBiJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgQklOX0FMR19PUCAob3AsIGEnLCBiJyksIHBvcylcbiAgfCAoVU5fQUxHX09QIChvcCwgYSksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIGMsIF8gLT4gQ09OU1QgKE5ici5vZl91bl9hbGdfb3Agb3AgYyksIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBVTl9BTEdfT1AgKG9wLCBhJyksIHBvcylcbiAgfCAoRElGRl9UT0tFTiAoYSwgdCksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIF8sIF8gLT5cbiAgICAgICgqIHRoZSBkZXJpdmF0aXZlIG9mIGEgY29uc3RhbnQgaXMgemVybyAqKVxuICAgICAgQ09OU1QgTmJyLnplcm8sIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgSUYgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBESUZGX1RPS0VOIChhJywgdCksIHBvcylcbiAgfCAoRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgbSksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIF8sIF8gLT5cbiAgICAgICgqIHRoZSBkZXJpdmF0aXZlIG9mIGEgY29uc3RhbnQgaXMgemVybyAqKVxuICAgICAgQ09OU1QgTmJyLnplcm8sIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBESUZGX0tBUFBBX0lOU1RBTkNFIChhJywgbSksIHBvcylcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuRU1BWF9WQVIsIHBvcyAtPlxuICAgICggQ09OU1RcbiAgICAgICAgKG1hdGNoIG1heF9ldmVudHMgd2l0aFxuICAgICAgICB8IFNvbWUgbiAtPiBOYnIuSSBuXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgICAgICBcIltFbWF4XSBjb25zdGFudCBpcyBldmFsdWF0ZWQgdG8gaW5maW5pdHlcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIE5ici5GIGluZmluaXR5KSxcbiAgICAgIHBvcyApXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRNQVhfVkFSLCBwb3MgLT5cbiAgICAoIENPTlNUXG4gICAgICAgIChtYXRjaCBtYXhfdGltZSB3aXRoXG4gICAgICAgIHwgU29tZSB0IC0+IE5ici5GIHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICAgIFwiW1RtYXhdIGNvbnN0YW50IGlzIGV2YWx1YXRlZCB0byBpbmZpbml0eVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTmJyLkYgaW5maW5pdHkpLFxuICAgICAgcG9zIClcbiAgfCAoIFNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5USU1FX1ZBUiB8IE9wZXJhdG9yLkVWRU5UX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSICksXG4gICAgICBfICkgYXMgeCAtPlxuICAgIHhcbiAgfCAoQUxHX1ZBUiBpLCBwb3MpIGFzIHggLT5cbiAgICBpZiBMaXN0Lm1lbSBpIHVwZGF0ZWRfdmFycyB0aGVuXG4gICAgICB4XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB2YXJzLihpKSB3aXRoXG4gICAgICB8IF8sICgoKENPTlNUIF8gfCBBTEdfVkFSIF8pIGFzIHkpLCBfKSAtPiB5LCBwb3NcbiAgICAgIHwgKCBfLFxuICAgICAgICAgICggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICAgfCBUT0tFTl9JRCBfIHwgSUYgXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IERJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgeFxuICAgIClcbiAgfCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyksIF8pIGFzIHggLT4geFxuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgIH52YXJzIGNvbmRcbiAgICAgd2l0aFxuICAgIHwgVFJVRSwgXyAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIHllc1xuICAgIHwgRkFMU0UsIF8gLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBub1xuICAgIHwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgY29uZCcgLT5cbiAgICAgICggSUZcbiAgICAgICAgICAoIGNvbmQnLFxuICAgICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgIH52YXJzIHllcyxcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgICB+dmFycyBubyApLFxuICAgICAgICBwb3MgKSlcblxuYW5kIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzID1cbiAgZnVuY3Rpb25cbiAgfCAoKFRSVUUgfCBGQUxTRSksIF8pIGFzIHggLT4geFxuICB8IFVOX0JPT0xfT1AgKG9wLCBhKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICB+dmFycyBhLFxuICAgICAgICAgb3AgKVxuICAgICB3aXRoXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk5PVCAtPiBGQUxTRSwgcG9zXG4gICAgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5OT1QgLT4gVFJVRSwgcG9zXG4gICAgfCAoKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgYScpLCBfIC0+XG4gICAgICBVTl9CT09MX09QIChvcCwgYScpLCBwb3MpXG4gIHwgQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICB+dmFycyBhLFxuICAgICAgICAgb3AgKVxuICAgICB3aXRoXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk9SIC0+IFRSVUUsIHBvc1xuICAgIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuQU5EIC0+IEZBTFNFLCBwb3NcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuQU5EIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuT1IgLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzXG4gICAgICAgIGJcbiAgICB8ICgoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBhJyksIF8gLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgIH52YXJzIGIsXG4gICAgICAgICAgIG9wIClcbiAgICAgICB3aXRoXG4gICAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuT1IgLT4gVFJVRSwgcG9zXG4gICAgICB8IChGQUxTRSwgXyksIE9wZXJhdG9yLkFORCAtPiBGQUxTRSwgcG9zXG4gICAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuQU5EIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuT1IgLT4gYSdcbiAgICAgIHwgKCgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGInKSwgXyAtPlxuICAgICAgICBCSU5fQk9PTF9PUCAob3AsIGEnLCBiJyksIHBvcykpXG4gIHwgQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgYScgPVxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICBpblxuICAgIGxldCBiJyA9XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYlxuICAgIGluXG4gICAgKG1hdGNoIGEnLCBiJyB3aXRoXG4gICAgfCAoQ09OU1QgbjEsIF8pLCAoQ09OU1QgbjIsIF8pIC0+XG4gICAgICBpZiBOYnIub2ZfY29tcGFyZV9vcCBvcCBuMSBuMiB0aGVuXG4gICAgICAgIFRSVUUsIHBvc1xuICAgICAgZWxzZVxuICAgICAgICBGQUxTRSwgcG9zXG4gICAgfCAoICggKCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBESUZGX1RPS0VOIF8gfCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgX1xuICAgICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgICB8IElGIF8gKSxcbiAgICAgICAgICBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQ09NUEFSRV9PUCAob3AsIGEnLCBiJyksIHBvcylcblxubGV0IHJlYyBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgKChpbl90LCBfLCBfLCBkZXBzKSBhcyB2YXJzX2RlcHMpID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IChVTl9BTEdfT1AgKF8sIGEpIHwgRElGRl9UT0tFTiAoYSwgXykgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSksIF8gLT5cbiAgICBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfKSwgXyAtPiBmYWxzZVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiwgXyAtPiB0cnVlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLkVWRU5UX1ZBUiwgXyAtPiBub3Qgb25seV90aW1lXG4gIHwgKCBTVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSICksXG4gICAgICBfICkgLT5cbiAgICBmYWxzZVxuICB8IEFMR19WQVIgaSwgXyAtPlxuICAgIGxldCByZWMgYXV4IGogPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0Lm1lbSAoT3BlcmF0b3IuQUxHIGopIGluX3RcbiAgICAgIHx8IE9wZXJhdG9yLkRlcFNldC5leGlzdHNcbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBPcGVyYXRvci5BTEcgayAtPiBhdXgga1xuICAgICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBfIHwgT3BlcmF0b3IuTU9ESUYgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgZGVwcy4oailcbiAgICBpblxuICAgIGF1eCBpXG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGNvbmRcbiAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIHllc1xuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgbm9cblxuYW5kIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gZmFsc2VcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuXG5sZXQgcmVjIGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgPSBmdW5jdGlvblxuICB8IFRSVUUgfCBGQUxTRSAtPiBmYWxzZVxuICB8IFVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwgKGEsIF8pKSAtPiBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzIGFcbiAgfCBCSU5fQk9PTF9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyBhIHx8IGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgYlxuICB8IENPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGxldCBvbmx5X3RpbWUgPSB0cnVlIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLkVRVUFMXG4gICAgICB3aGVuIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgICAgICAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGIgLT5cbiAgICAgIHRydWVcbiAgICB8IE9wZXJhdG9yLkVRVUFMIHwgT3BlcmF0b3IuU01BTExFUiB8IE9wZXJhdG9yLkdSRUFURVIgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgICBmYWxzZSlcblxubGV0IHJlYyBtYXBfb25fbWl4dHVyZSBmID0gZnVuY3Rpb25cbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBwIC0+IGYgaSwgcFxuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXywgXyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICBcIkFsZ19leHByLm1hcF9vbl9taXh0dXJlIGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIG9mIERJRkZfS0FQUEFfSU5TVEFOQ0VcIlxuICB8IChDT05TVCBfLCBfKSBhcyB4IC0+IHhcbiAgfCAoQUxHX1ZBUiBfLCBfKSBhcyB4IC0+IHhcbiAgfCAoVE9LRU5fSUQgXywgXykgYXMgeCAtPiB4XG4gIHwgRElGRl9UT0tFTiAoYSwgaSksIHAgLT4gRElGRl9UT0tFTiAobWFwX29uX21peHR1cmUgZiBhLCBpKSwgcFxuICB8IChTVEFURV9BTEdfT1AgXywgXykgYXMgeCAtPiB4XG4gIHwgQklOX0FMR19PUCAobywgeCwgeSksIHAgLT5cbiAgICBCSU5fQUxHX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcbiAgfCBVTl9BTEdfT1AgKG8sIHgpLCBwIC0+IFVOX0FMR19PUCAobywgbWFwX29uX21peHR1cmUgZiB4KSwgcFxuICB8IElGIChiLCB4LCB5KSwgcCAtPlxuICAgIElGIChtYXBfYm9vbF9vbl9taXh0dXJlIGYgYiwgbWFwX29uX21peHR1cmUgZiB4LCBtYXBfb25fbWl4dHVyZSBmIHkpLCBwXG5cbmFuZCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgPSBmdW5jdGlvblxuICB8IChUUlVFLCBfKSBhcyB4IC0+IHhcbiAgfCAoRkFMU0UsIF8pIGFzIHggLT4geFxuICB8IEJJTl9CT09MX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIEJJTl9CT09MX09QIChvLCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeCwgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHkpLCBwXG4gIHwgVU5fQk9PTF9PUCAobywgeCksIHAgLT4gVU5fQk9PTF9PUCAobywgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHgpLCBwXG4gIHwgQ09NUEFSRV9PUCAobywgeCwgeSksIHAgLT5cbiAgICBDT01QQVJFX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcblxubGV0IHJlYyBmb2xkX29uX21peHR1cmUgZiB4ID0gZnVuY3Rpb25cbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBfIC0+IGYgeCBpXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfLCBfIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiQWxnX2V4cHIuZm9sZF9vbl9taXh0dXJlIGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIG9mIERJRkZfS0FQUEFfSU5TVEFOQ0VcIlxuICB8IENPTlNUIF8sIF8gLT4geFxuICB8IEFMR19WQVIgXywgXyAtPiB4XG4gIHwgVE9LRU5fSUQgXywgXyAtPiB4XG4gIHwgRElGRl9UT0tFTiAoYSwgXyksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgeCBhXG4gIHwgU1RBVEVfQUxHX09QIF8sIF8gLT4geFxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IGEpIGJcbiAgfCBVTl9BTEdfT1AgKF8sIGEpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIHggYVxuICB8IElGIChiLCB1LCB2KSwgXyAtPlxuICAgIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IHUpIHYpIGJcblxuYW5kIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCA9IGZ1bmN0aW9uXG4gIHwgVFJVRSwgXyAtPiB4XG4gIHwgRkFMU0UsIF8gLT4geFxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgKGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCBhKSBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gZm9sZF9ib29sX29uX21peHR1cmUgZiB4IGFcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgeCBhKSBiXG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgKEJJTl9BTEdfT1AgKG9wYSwgYTEsIGEyKSwgXyksIChCSU5fQUxHX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4gIHwgKCAoQklOX0FMR19PUCBfLCBfKSxcbiAgICAgICggKCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICBfICkgKVxuICB8ICggKCAoIFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSxcbiAgICAgIChCSU5fQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChVTl9BTEdfT1AgKG9wYSwgYTEpLCBfKSwgKFVOX0FMR19PUCAob3BiLCBiMSksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxXG4gIHwgKCAoVU5fQUxHX09QIF8sIF8pLFxuICAgICAgKCAoIFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgIHwgSUYgXyApLFxuICAgICAgICBfICkgKVxuICB8ICggKCAoIFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgIHwgSUYgXyApLFxuICAgICAgICBfICksXG4gICAgICAoVU5fQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChTVEFURV9BTEdfT1Agb3BhLCBfKSwgKFNUQVRFX0FMR19PUCBvcGIsIF8pIC0+IG9wYSA9IG9wYlxuICB8ICggKFNUQVRFX0FMR19PUCBfLCBfKSxcbiAgICAgICgoQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pIClcbiAgfCAoICgoQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLFxuICAgICAgKFNUQVRFX0FMR19PUCBfLCBfKSApIC0+XG4gICAgZmFsc2VcbiAgfCAoQUxHX1ZBUiBpZDEsIF8pLCAoQUxHX1ZBUiBpZDIsIF8pIC0+IGlkMSA9IGlkMlxuICB8IChBTEdfVkFSIF8sIF8pLCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLCAoQUxHX1ZBUiBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEtBUFBBX0lOU1RBTkNFIG1peDEsIF8pLCAoS0FQUEFfSU5TVEFOQ0UgbWl4MiwgXykgLT4gbWl4MSA9IG1peDJcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXywgXyksICgoVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXylcbiAgfCAoKFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLCAoS0FQUEFfSU5TVEFOQ0UgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChUT0tFTl9JRCBpZDEsIF8pLCAoVE9LRU5fSUQgaWQyLCBfKSAtPiBpZDEgPSBpZDJcbiAgfCAoVE9LRU5fSUQgXywgXyksICgoQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoQ09OU1QgXyB8IElGIF8pLCBfKSwgKFRPS0VOX0lEIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoQ09OU1QgYzEsIF8pLCAoQ09OU1QgYzIsIF8pIC0+IE5ici5pc19lcXVhbCBjMSBjMlxuICB8IChDT05TVCBfLCBfKSwgKElGIF8sIF8pIHwgKElGIF8sIF8pLCAoQ09OU1QgXywgXykgLT4gZmFsc2VcbiAgfCAoSUYgKGNvbmRhLCBhMSwgYTIpLCBfKSwgKElGIChjb25kYiwgYjEsIGIyKSwgXykgLT5cbiAgICBlcXVhbF9ib29sIGNvbmRhIGNvbmRiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4gIHwgKChESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8pLCBfKSwgX1xuICB8IF8sICgoRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfKSwgXykgLT5cbiAgICBhc3NlcnQgZmFsc2VcblxuYW5kIGVxdWFsX2Jvb2wgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgKFRSVUUsIF8pLCAoVFJVRSwgXykgLT4gdHJ1ZVxuICB8IChUUlVFLCBfKSwgKChGQUxTRSB8IEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKVxuICB8ICgoRkFMU0UgfCBCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXyksIChUUlVFLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEZBTFNFLCBfKSwgKEZBTFNFLCBfKSAtPiB0cnVlXG4gIHwgKEZBTFNFLCBfKSwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXylcbiAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSwgKEZBTFNFLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKFVOX0JPT0xfT1AgKG9wYSwgYSksIF8pLCAoVU5fQk9PTF9PUCAob3BiLCBiKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWxfYm9vbCBhIGJcbiAgfCAoVU5fQk9PTF9PUCBfLCBfKSwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfKSwgXylcbiAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8pLCBfKSwgKFVOX0JPT0xfT1AgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChCSU5fQk9PTF9PUCAob3BhLCBhMSwgYTIpLCBfKSwgKEJJTl9CT09MX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsX2Jvb2wgYTEgYjEgJiYgZXF1YWxfYm9vbCBhMiBiMlxuICB8IChCSU5fQk9PTF9PUCBfLCBfKSwgKENPTVBBUkVfT1AgXywgXykgfCAoQ09NUEFSRV9PUCBfLCBfKSwgKEJJTl9CT09MX09QIF8sIF8pXG4gICAgLT5cbiAgICBmYWxzZVxuICB8IChDT01QQVJFX09QIChvcGEsIGExLCBhMiksIF8pLCAoQ09NUEFSRV9PUCAob3BiLCBiMSwgYjIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbCBhMSBiMSAmJiBlcXVhbCBhMiBiMlxuIiwiKCoqXG4gICogY29udGFjdF9tYXAubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCAmIEx5IEtpbSBRdXllbiwgcHJvamVjdCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogQ3JlYXRpb246IDIwMTcsIHRoZSAyM3JkIG9mIEp1bmVcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNSAyMDE3PlxuICAqXG4gICogQ29tcHV0ZSBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50IGluIGNvbnRhY3QgbWFwXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGVcbiAgKiBlbiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuXG4gICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHQgPSAoTW9kcy5JbnRTZXQudCAqIE1vZHMuSW50MlNldC50KSBhcnJheSBhcnJheVxuXG5sZXQgdG9feW9qc29uIGEgPVxuICBsZXQgaW50bHNfdG9fanNvbiBhID1cbiAgICBgTGlzdCAoTW9kcy5JbnRTZXQuZm9sZCAoZnVuIGIgYWNjIC0+IGBJbnQgYiA6OiBhY2MpIGEgW10pXG4gIGluXG4gIGxldCBwYWlybHNfdG9fanNvbiBhID1cbiAgICBgTGlzdFxuICAgICAgKE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAoZnVuIChiLCBjKSBhY2MgLT4gYExpc3QgWyBgSW50IGI7IGBJbnQgYyBdIDo6IGFjYylcbiAgICAgICAgIGEgW10pXG4gIGluXG4gIGxldCBhcnJheV90b19qc29uIGEgPVxuICAgIGBMaXN0XG4gICAgICAoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIGFjYyAoYSwgYikgLT4gYExpc3QgWyBpbnRsc190b19qc29uIGE7IHBhaXJsc190b19qc29uIGIgXSA6OiBhY2MpXG4gICAgICAgICBbXSBhKVxuICBpblxuICBgTGlzdCAoQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjIHQgLT4gYXJyYXlfdG9fanNvbiB0IDo6IGFjYykgW10gYSlcblxubGV0IG9mX3lvanNvbiAoYSA6IFlvanNvbi5CYXNpYy50KSA9XG4gIGxldCBpbnRsc19vZl9qc29uIGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBJbnQgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhY2NcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTFcIiwgeCkpKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgYVxuICBpblxuICBsZXQgcGFpcmxzX29mX2pzb24gYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExpc3QgWyBgSW50IGI7IGBJbnQgYyBdIC0+IE1vZHMuSW50MlNldC5hZGQgKGIsIGMpIGFjY1xuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhMlwiLCB4KSkpXG4gICAgICBNb2RzLkludDJTZXQuZW1wdHkgYVxuICBpblxuICBsZXQgYXJyYXlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgTGlzdCBscyAtPlxuICAgICAgKG1hdGNoIGxzIHdpdGhcbiAgICAgIHwgWyBgTGlzdCBhOyBgTGlzdCBiIF0gLT4gaW50bHNfb2ZfanNvbiBhLCBwYWlybHNfb2ZfanNvbiBiXG4gICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGEzXCIsIHgpKVxuICBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBgTGlzdCBhcnJheTEgLT5cbiAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYExpc3QgYXJyYXkyIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IGFycmF5X29mX2pzb24gYXJyYXkyXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGE0XCIsIHgpKSlcbiAgICAgIGFycmF5MVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBjb250YWN0IG1hcFwiLCB4KSlcblxubGV0IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHNpZ3MgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gYWcgZiBpbnRmIC0+XG4gICAgICAgICBpZiAobm90IChTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGFnKSkgfHwgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiUlYWdlbnQ6QCAlYShAWyVhQF0pQF1cIlxuICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICBhZ1xuICAgICAgICAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIHMgZiAoaXMsIGxzKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgU2lnbmF0dXJlLnNpdGVfaXNfY291bnRlciBzaWdzIGFnIHMgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2NvdW50ZXIgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJXQldEBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKE1vZHMuSW50U2V0LmlzX2VtcHR5IGlzKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7QFslYUBdfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBwLnNldCBNb2RzLkludFNldC5lbGVtZW50cyBQcC5zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZyBzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcylcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGxzKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJALFtAWyVhQF1dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50MlNldC5lbGVtZW50cyBQcC5zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAoYWQsIHNkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzKSkpXG4gICAgICAgICAgICAgaW50ZikpXG4gICAgY1xuXG5sZXQgY3V0X2F0IGkgcycgbCA9XG4gIGxldCByZWMgYXV4X2N1dF9hdCBvID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8ICgoKGosIHMpLCBfKSBhcyBoKSA6OiB0IC0+XG4gICAgICBpZiBpID0gaiB0aGVuXG4gICAgICAgIGlmIHMgPj0gcycgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUgKGggOjogbylcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X2N1dF9hdCAoaCA6OiBvKSB0XG4gIGluXG4gIGF1eF9jdXRfYXQgW10gbFxuXG5sZXQgZ2V0X2N5Y2xlcyBjb250YWN0X21hcCA9XG4gIGxldCByZWMgZGZzICgoa25vd24sIG91dCkgYXMgYWNjKSBwYXRoIGkgbGFzdF9zID1cbiAgICBpZiBNb2RzLkludFNldC5tZW0gaSBrbm93biB0aGVuIChcbiAgICAgIG1hdGNoIGN1dF9hdCBpIGxhc3RfcyBwYXRoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSB4IC0+IGtub3duLCB4IDo6IG91dFxuICAgICkgZWxzZSAoXG4gICAgICBsZXQga25vd24nID0gTW9kcy5JbnRTZXQuYWRkIGkga25vd24gaW5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBzIGFjYyAoXywgbCkgLT5cbiAgICAgICAgICBpZiBzID0gbGFzdF9zIHRoZW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gKCh0eSwgcycpIGFzIHgpIGFjYyAtPiBkZnMgYWNjICgoKGksIHMpLCB4KSA6OiBwYXRoKSB0eSBzJylcbiAgICAgICAgICAgICAgbCBhY2MpXG4gICAgICAgIChrbm93bicsIG91dCkgY29udGFjdF9tYXAuKGkpXG4gICAgKVxuICBpblxuICBsZXQgcmVjIHNjYW4gKChrbm93biwgb3V0KSBhcyBhY2MpIGkgPVxuICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgIG91dFxuICAgIGVsc2VcbiAgICAgIHNjYW5cbiAgICAgICAgKGlmIE1vZHMuSW50U2V0Lm1lbSBpIGtub3duIHRoZW5cbiAgICAgICAgICAgYWNjXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGRmcyBhY2MgW10gaSAoLTEpKVxuICAgICAgICAocHJlZCBpKVxuICBpblxuICBzY2FuIChNb2RzLkludFNldC5lbXB0eSwgW10pIChBcnJheS5sZW5ndGggY29udGFjdF9tYXAgLSAxKVxuXG5sZXQgcHJpbnRfY3ljbGVzIHNpZ3MgZm9ybSBjb250YWN0X21hcCA9XG4gIGxldCBvID0gZ2V0X2N5Y2xlcyBjb250YWN0X21hcCBpblxuICBQcC5saXN0IFBwLnNwYWNlXG4gICAgKFBwLmxpc3QgUHAuZW1wdHkgKGZ1biBmICgoYWcsIHMpLCAoYWcnLCBzJykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWEtJWEuXCJcbiAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICBhZ1xuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgc1xuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZycpXG4gICAgICAgICAgIHMnKSlcbiAgICBmb3JtIG9cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMyBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcmluZ19sZXZlbCA9IE5vX3NoYXJpbmcgfCBDb21wYXRpYmxlX3BhdHRlcm5zIHwgTWF4X3NoYXJpbmdcblxubGV0IHNoYXJpbmdfbGV2ZWxfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwibm9fc2hhcmluZ1wiIC0+IE5vX3NoYXJpbmdcbiAgfCBgU3RyaW5nIFwiY29tcGF0aWJsZV9wYXR0ZXJuc1wiIC0+IENvbXBhdGlibGVfcGF0dGVybnNcbiAgfCBgU3RyaW5nIFwibWF4X3NoYXJpbmdcIiAtPiBNYXhfc2hhcmluZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHNoYXJpbmdfbGV2ZWxcIiwgeCkpXG5cbmxldCB3cml0ZV9zaGFyaW5nX2xldmVsIG9iID0gZnVuY3Rpb25cbiAgfCBOb19zaGFyaW5nIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJub19zaGFyaW5nXCJcbiAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJjb21wYXRpYmxlX3BhdHRlcm5zXCJcbiAgfCBNYXhfc2hhcmluZyAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwibWF4X3NoYXJpbmdcIlxuXG5sZXQgc3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwgP2xlbjooXyA9IDEwMjQpID0gZnVuY3Rpb25cbiAgfCBOb19zaGFyaW5nIC0+IFwiXFxcIm5vX3NoYXJpbmdcXFwiXCJcbiAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+IFwiXFxcImNvbXBhdGlibGVfcGF0dGVybnNcXFwiXCJcbiAgfCBNYXhfc2hhcmluZyAtPiBcIlxcXCJtYXhfc2hhcmluZ1xcXCJcIlxuXG5sZXQgcmVhZF9zaGFyaW5nX2xldmVsIHAgbGIgPVxuICBzaGFyaW5nX2xldmVsX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgc2hhcmluZ19sZXZlbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2hhcmluZ19sZXZlbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIGxpbmsgPSBVblNwZWMgfCBGcmVlIHwgTGluayBvZiBpbnQgKiBpbnQgICgqKiBub2RlX2lkLCBzaXRlX2lkICopXG5cbnR5cGUgY2MgPSB7XG4gIG5vZGVzX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICBub2RlczogKGxpbmsgKiBpbnQpIGFycmF5IE1vZHMuSW50TWFwLnQ7XG4gICgqcGF0dGVybiBncmFwaCBpZCAtPiBbfC4uLiAobGlua19qLHN0YXRlX2opLi4ufF0gaS5lIGFnZW50X2lkIG9uIHNpdGVfaiBoYXNcbiAgICBhIGxpbmsgbGlua19qIGFuZCBpbnRlcm5hbCBzdGF0ZSBzdGF0ZV9qICgtMSBtZWFucyBhbnkpICopXG4gIHJlY29nbl9uYXY6IE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi50O1xufVxuKCoqIFRoZSBsaW5rIG9mIHNpdGUgayBvZiBub2RlIGkgaXMgW2ZzdCBub2RlcyhpKS4oayldLlxuXG4gICAgVGhlIGludGVybmFsIHN0YXRlIG9mIHNpdGUgayBvZiBub2RlIGkgaXMgW3NuZCBub2RlcyhpKS4oayldLiBBXG4gICAgbmVnYXRpdmUgbnVtYmVyIG1lYW5zIFVuU3BlYy4gKilcblxudHlwZSB0ID0gY2NcbnR5cGUgaWQgPSBpbnRcblxubGV0IGRlYnVnX3ByaW50X2lkIGZtdCBpZCA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgaWRcbmxldCBzaXplX29mX2NjIGNjID0gTW9kcy5JbnRNYXAuc2l6ZSBjYy5ub2Rlc1xubGV0IGNvbXBhcmVfY2Fub25pY2FscyBjYyBjYycgPSBNb2RzLmludF9jb21wYXJlIGNjIGNjJ1xubGV0IGlzX2VxdWFsX2Nhbm9uaWNhbHMgY2MgY2MnID0gY29tcGFyZV9jYW5vbmljYWxzIGNjIGNjJyA9IDBcbmxldCBoYXNoX3ByaW1lID0gMjlcblxubGV0IGNvYXJzZV9oYXNoIGNjID1cbiAgbGV0IHBsdXNfaW50ZXJuYWwgYWNjIHMgaSA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgVG9vbHMuY2FudG9yX3BhaXJpbmcgKHN1Y2MgcykgKHN1Y2MgaSkgKyBhY2NcbiAgaW5cbiAgbGV0IG5vZGVfc2hhcGUgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gbiBlIGFjYyAtPlxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgKGZ1biBzIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBVblNwZWMsIGkgLT4gcGx1c19pbnRlcm5hbCBhY2MgcyBpXG4gICAgICAgICAgICB8IEZyZWUsIGkgLT4gcGx1c19pbnRlcm5hbCAoMyArIChzICogMykgKyBhY2MpIHMgaVxuICAgICAgICAgICAgfCBMaW5rIChuJywgcycpLCBpIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MnID0gcGx1c19pbnRlcm5hbCBhY2MgcyBpIGluXG4gICAgICAgICAgICAgIGxldCBleHRyYSA9IFRvb2xzLmNhbnRvcl9wYWlyaW5nICgxICsgbWluIHMgcycpICgxICsgbWF4IHMgcycpIGluXG4gICAgICAgICAgICAgIGlmIChuID0gbicgJiYgcyA8IHMnKSB8fCBuIDwgbicgdGhlblxuICAgICAgICAgICAgICAgIChleHRyYSAqIDcpICsgYWNjJ1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICBhY2MgZSlcbiAgICAgIGNjLm5vZGVzIDBcbiAgaW5cbiAgQXJyYXkuZm9sZF9yaWdodFxuICAgIChmdW4gbCBhY2MgLT4gTGlzdC5sZW5ndGggbCArIChoYXNoX3ByaW1lICogYWNjKSlcbiAgICBjYy5ub2Rlc19ieV90eXBlIG5vZGVfc2hhcGVcblxubGV0IGlkX3RvX3lvanNvbiBjYyA9IGBJbnQgY2NcblxubGV0IGlkX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBjYyAtPiBjY1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgcGF0dGVybiBpZFwiLCB4KSlcblxubW9kdWxlIFNldCA9IE1vZHMuSW50U2V0XG5tb2R1bGUgTWFwID0gTW9kcy5JbnRNYXBcblxubW9kdWxlIE9ic01hcCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vZHMuRHluQXJyYXlcblxuICBsZXQgZHVtbXkgeCA9IG1ha2UgMCB4XG5lbmRcblxubGV0IGVtcHR5X2NjIHNpZ3MgPVxuICBsZXQgbmJ0ID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lncykgW10gaW5cbiAgeyBub2Rlc19ieV90eXBlID0gbmJ0OyByZWNvZ25fbmF2ID0gW107IG5vZGVzID0gTW9kcy5JbnRNYXAuZW1wdHkgfVxuXG5sZXQgcmF3X2ZpbmRfdHkgdHlzIGlkID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIExpc3QubWVtIGlkIHR5cy4oaSkgdGhlblxuICAgICAgaVxuICAgIGVsc2VcbiAgICAgIGF1eCAocHJlZCBpKVxuICBpblxuICBhdXggKEFycmF5Lmxlbmd0aCB0eXMgLSAxKVxuXG5sZXQgZmluZF90eSBjYyBpZCA9IHJhd19maW5kX3R5IGNjLm5vZGVzX2J5X3R5cGUgaWRcblxubGV0IGFkZF9vcmlnaW4gZGVwcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBkZXBzXG4gIHwgU29tZSB4IC0+IE9wZXJhdG9yLkRlcFNldC5hZGQgeCBkZXBzXG5cbmxldCByZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIGNjID0gY2MucmVjb2duX25hdlxuXG4oKiogRXJyb3JzICopXG5sZXQgYWxyZWFkeV9zcGVjaWZpZWQgP3NpZ3MgeCBpID1cbiAgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJTaXRlICVhIG9mIGFnZW50ICVhIGFscmVhZHkgc3BlY2lmaWVkXCJcbiAgICAgICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyB4KSBpXG4gICAgICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOmZhbHNlKVxuICAgICAgICAgIHgpKVxuXG5sZXQgZGFuZ2xpbmdfbm9kZSB+c2lncyB0eXMgeCA9XG4gIEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQ2Fubm90IHByb2NlZWQgYmVjYXVzZSBsYXN0IGRlY2xhcmVkIGFnZW50ICVhLyolaSovJWFcIlxuICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAocmF3X2ZpbmRfdHkgdHlzIHgpIHggRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgICAgICAgIFwiIGlzIG5vdCBsaW5rZWQgdG8gaXRzIGNvbm5lY3RlZCBjb21wb25lbnQuXCIpKVxuXG5sZXQgaWRlbnRpdHlfaW5qZWN0aW9uIGNjID1cbiAgUmVuYW1pbmcuaWRlbnRpdHlcbiAgICAoQXJyYXkuZm9sZF9sZWZ0IChmdW4geCB5IC0+IExpc3QucmV2X2FwcGVuZCB5IHgpIFtdIGNjLm5vZGVzX2J5X3R5cGUpXG5cbigqKiBwaWNrIGEgcm9vdCBpbiB0aGUgQ0MuIEFueSByb290IHdvcmtzLlxuICAgIEluIHRoaXMgY2FzZSBwaWNrIHRoZSBmaXJzdCBub2RlIG9mIHNtYWxsZXN0IHR5cGUgKilcbmxldCByYXdfZmluZF9yb290IG5vZGVzX2J5X3R5cGUgPVxuICBsZXQgcmVjIGF1eCB0eSA9XG4gICAgaWYgdHkgPSBBcnJheS5sZW5ndGggbm9kZXNfYnlfdHlwZSB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBub2Rlc19ieV90eXBlLih0eSkgd2l0aFxuICAgICAgfCBbXSAtPiBhdXggKHN1Y2MgdHkpXG4gICAgICB8IGggOjogXyAtPiBTb21lIChoLCB0eSlcbiAgICApXG4gIGluXG4gIGF1eCAwXG5cbmxldCBmaW5kX3Jvb3QgY2MgPSByYXdfZmluZF9yb290IGNjLm5vZGVzX2J5X3R5cGVcblxubGV0IHdlaWdodCBjYyA9XG4gIGxldCBsaW5rcywgZG91YmxlID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgQXJyYXkuZm9sZF9yaWdodCAoZnVuIChpLCBzKSAobCwgZCkgLT5cbiAgICAgICAgICAgIGlmIGkgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgKCBzdWNjXG4gICAgICAgICAgICAgICAgICAoaWYgcyA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBzdWNjIGxcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBsKSxcbiAgICAgICAgICAgICAgICBpZiBpIDw+IEZyZWUgdGhlblxuICAgICAgICAgICAgICAgICAgc3VjYyBkXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgZCApXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICggKGlmIHMgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgIHN1Y2MgbFxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgbCksXG4gICAgICAgICAgICAgICAgZCApKSlcbiAgICAgIGNjLm5vZGVzICgwLCAwKVxuICBpblxuICBsaW5rcyAtIChkb3VibGUgLyAyKVxuXG5sZXQgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgP3Bvc3NpYmlsaXRpZXMgfnN0cmljdCByb290MSBjYzEgcm9vdDIgY2MyID1cbiAgbGV0IHRpY2sgeCA9XG4gICAgbWF0Y2ggcG9zc2liaWxpdGllcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT4gcyA6PSBNb2RzLkludDJTZXQucmVtb3ZlIHggIXNcbiAgaW5cbiAgbGV0IHJlYyBhdXggYXRfbGVhc3Rfb25lX2VkZ2UgcmVuYW1lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBpZiBhdF9sZWFzdF9vbmVfZWRnZSB0aGVuXG4gICAgICAgIFNvbWUgcmVuYW1lLCBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmUsIE5vbmVcbiAgICB8ICgobywgcCkgYXMgcGFpcikgOjogdG9kb3MgLT5cbiAgICAgIGxldCAoKSA9IHRpY2sgcGFpciBpblxuICAgICAgKG1hdGNoXG4gICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgICAoZnVuIGkgYyAobHgsIGl4KSAobHksIGl5KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSwgXyAtPiBjXG4gICAgICAgICAgICAgfCBTb21lIChvbmVfZWRnZSwgdG9kbywgcmVuKSwgXyAtPlxuICAgICAgICAgICAgICAgaWYgKChub3Qgc3RyaWN0KSAmJiAoaXggPSAtMSB8fCBpeSA9IC0xKSkgfHwgaXggPSBpeSB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBMaW5rIF8sIEZyZWUgfCBGcmVlLCBMaW5rIF8gLT5cbiAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBGcmVlIHwgRnJlZSwgVW5TcGVjIHwgTGluayBfLCBVblNwZWMgfCBVblNwZWMsIExpbmsgX1xuICAgICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgICAgaWYgc3RyaWN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBTb21lIChvbmVfZWRnZSB8fCAoaXggPD4gLTEgJiYgaXggPSBpeSksIHRvZG8sIHJlbiksIE5vbmVcbiAgICAgICAgICAgICAgICAgfCBVblNwZWMsIFVuU3BlYyAtPlxuICAgICAgICAgICAgICAgICAgIFNvbWUgKG9uZV9lZGdlIHx8IChpeCA8PiAtMSAmJiBpeCA9IGl5KSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IEZyZWUsIEZyZWUgLT4gU29tZSAodHJ1ZSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IExpbmsgKG4xLCBzMSksIExpbmsgKG4yLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBzMSA9IHMyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBuMSByZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBpZiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZW4gbjEgPSBuMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAodHJ1ZSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBuMSBuMiByZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcicgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaW5kX3R5IGNjMSBuMSA9IGZpbmRfdHkgY2MyIG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgKHRydWUsIChuMSwgbjIpIDo6IHRvZG8sIHInKSwgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIHRydWUpKVxuICAgICAgICAgICAoU29tZSAoYXRfbGVhc3Rfb25lX2VkZ2UsIHRvZG9zLCByZW5hbWUpLCBOb25lKVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gbyBjYzEubm9kZXMpXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBwIGNjMi5ub2RlcylcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUsIGNvbmZsaWN0IC0+IE5vbmUsIGNvbmZsaWN0XG4gICAgICB8IFNvbWUgKG9uZV9lZGdlcycsIHRvZG9zJywgcmVuJyksIF8gLT4gYXV4IG9uZV9lZGdlcycgcmVuJyB0b2RvcycpXG4gIGluXG4gIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSByb290MSByb290MiAoUmVuYW1pbmcuZW1wdHkgKCkpIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgciAtPlxuICAgIGxldCBhX3NpbmdsZV9hZ2VudCA9XG4gICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBiIChsLCBpKSAtPiBiICYmIGkgPSAtMSAmJiBsID0gVW5TcGVjKVxuICAgICAgICB0cnVlXG4gICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSByb290MSBjYzEubm9kZXMpXG4gICAgICB8fCBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgKGZ1biBiIChsLCBpKSAtPiBiICYmIGkgPSAtMSAmJiBsID0gVW5TcGVjKVxuICAgICAgICAgICB0cnVlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSByb290MiBjYzIubm9kZXMpXG4gICAgaW5cbiAgICBhdXggYV9zaW5nbGVfYWdlbnQgciBbIHJvb3QxLCByb290MiBdXG5cbigqKiBAcmV0dXJuIGluamVjdGlvbiBmcm9tIGEgdG8gYiAqKVxubGV0IGVxdWFsIH5kZWJ1Z19tb2RlIGEgYiA9XG4gIG1hdGNoXG4gICAgVG9vbHMuYXJyYXlfbWluX2VxdWFsX25vdF9udWxsXG4gICAgICAoQXJyYXkubWFwIChmdW4geCAtPiBMaXN0Lmxlbmd0aCB4LCB4KSBhLm5vZGVzX2J5X3R5cGUpXG4gICAgICAoQXJyYXkubWFwIChmdW4geCAtPiBMaXN0Lmxlbmd0aCB4LCB4KSBiLm5vZGVzX2J5X3R5cGUpXG4gIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChbXSwgYWdzKSAtPlxuICAgIGlmIGFncyA9IFtdIHRoZW5cbiAgICAgIFNvbWUgKFJlbmFtaW5nLmVtcHR5ICgpKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBTb21lIChoMSA6OiBfLCBhZ3MpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYm9vbCBhZyAtPlxuICAgICAgICBtYXRjaCBib29sIHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gYm9vbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcmVuYW1lLCBfID0gYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnN0cmljdDp0cnVlIGgxIGEgYWcgYiBpblxuICAgICAgICAgIHJlbmFtZSlcbiAgICAgIE5vbmUgYWdzXG5cbmxldCBhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGEgPVxuICBtYXRjaFxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeCAtPiBUb29scy5taW5fcG9zX2ludF9ub3RfemVybyBhY2MgKExpc3QubGVuZ3RoIHgsIHgpKVxuICAgICAgKDAsIFtdKSBhLm5vZGVzX2J5X3R5cGVcbiAgd2l0aFxuICB8IF8sIFtdIC0+IFsgUmVuYW1pbmcuZW1wdHkgKCkgXVxuICB8IF8sIChoIDo6IF8gYXMgbCkgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgYWcgLT5cbiAgICAgICAgbWF0Y2ggYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnN0cmljdDp0cnVlIGggYSBhZyBhIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IGFjY1xuICAgICAgICB8IFNvbWUgciwgXyAtPiByIDo6IGFjYylcbiAgICAgIFtdIGxcblxubGV0IHBvdGVudGlhbF9wYWlyaW5nIHNpZ3MgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgIChmdW4geCBhY2MgbGEgbGIgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgeCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIGIgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTW9kcy5JbnQyU2V0LmFkZCAoYSwgYikgYWNjKSBhY2MgbGEpXG4gICAgICAgICAgYWNjIGxiKVxuICAgIE1vZHMuSW50MlNldC5lbXB0eVxuXG5sZXQgbWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgYSBiID1cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPVxuICAgIHJlZiAocG90ZW50aWFsX3BhaXJpbmcgc2lncyBhLm5vZGVzX2J5X3R5cGUgYi5ub2Rlc19ieV90eXBlKVxuICBpblxuICBsZXQgcmVjIGZvcl9vbmVfcm9vdCBhY2MgPVxuICAgIG1hdGNoIE1vZHMuSW50MlNldC5jaG9vc2UgIXBvc3NpYmlsaXRpZXMgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5wb3NzaWJpbGl0aWVzIH5zdHJpY3Q6ZmFsc2UgeCBhIHkgYlxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSwgXyAtPiBmb3Jfb25lX3Jvb3QgYWNjXG4gICAgICB8IFNvbWUgciwgXyAtPiBmb3Jfb25lX3Jvb3QgKHIgOjogYWNjKSlcbiAgaW5cbiAgZm9yX29uZV9yb290IFtdXG5cbigqdHVybnMgYSBjYyBpbnRvIGEgcGF0aCg6bGlzdCkgaW4gdGhlIGRvbWFpbiopXG5sZXQgcmF3X3RvX25hdmlnYXRpb24gKGZ1bGwgOiBib29sKSBub2Rlc19ieV90eXBlIG5vZGVzID1cbiAgbGV0IHJlYyBidWlsZF9mb3IgKGZpcnN0LCBvdXQpIGRvbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBMaXN0LnJldiBvdXRcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IGZpcnN0Jywgb3V0JywgdG9kbyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIGkgKChmaXJzdCwgYW5zLCByZSkgYXMgYWNjKSAobCwgcykgLT5cbiAgICAgICAgICAgIGxldCAoKGZpcnN0JywgYW5zJywgXykgYXMgYWNjJykgPVxuICAgICAgICAgICAgICBpZiAoZnVsbCB8fCBmaXJzdCkgJiYgcyA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBzIClcbiAgICAgICAgICAgICAgICAgIDo6IGFucyxcbiAgICAgICAgICAgICAgICAgIHJlIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBVblNwZWMgLT4gYWNjJ1xuICAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgIGlmIGZ1bGwgfHwgZmlyc3QnIHRoZW5cbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRnJlc2ggKGgsIHJhd19maW5kX3R5IG5vZGVzX2J5X3R5cGUgaClcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgaSApLFxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm90aGluZyApXG4gICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgcmUgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgfCBMaW5rIChuLCBsKSAtPlxuICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSBuIGRvbiB8fCAobiA9IGggJiYgaSA+IGwpIHRoZW5cbiAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgIGVsc2UgaWYgbiA9IGggfHwgTGlzdC5tZW0gbiByZSB0aGVuXG4gICAgICAgICAgICAgICAgaWYgZnVsbCB8fCBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgbiwgbCkgKVxuICAgICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgICByZSApXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICggKCAoaWYgZmlyc3QnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkV4aXN0aW5nIGgpLFxuICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGVcbiAgICAgICAgICAgICAgICAgICAgICAoTmF2aWdhdGlvbi5GcmVzaCAobiwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBuKSwgbCkgKVxuICAgICAgICAgICAgICAgICAgOjogYW5zJyxcbiAgICAgICAgICAgICAgICAgIG4gOjogcmUgKSlcbiAgICAgICAgICAoZmlyc3QsIG91dCwgdClcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaCBub2RlcylcbiAgICAgIGluXG4gICAgICBidWlsZF9mb3IgKGZpcnN0Jywgb3V0JykgKGggOjogZG9uKSB0b2RvXG4gIGluXG4gIG1hdGNoIHJhd19maW5kX3Jvb3Qgbm9kZXNfYnlfdHlwZSB3aXRoXG4gIHwgTm9uZSAtPiBbXSAoKmVtcHR5IHBhdGggZm9yIHgwKilcbiAgfCBTb21lICh4LCBfKSAtPlxuICAgICgqKGFnX3NvcnQsYWdfaWQpKilcbiAgICBidWlsZF9mb3IgKHRydWUsIFtdKSAoKndpcCopIFtdICgqYWxyZWFkeV9kb25lKikgWyB4IF1cbigqdG9kbyopXG5cbmxldCByZWMgc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHIgPSBmdW5jdGlvblxuICB8IFtdLCBfIC0+IHJcbiAgfCBfIDo6IF8sIFtdIC0+IGFzc2VydCBmYWxzZVxuICB8ICh4IDo6IHEgYXMgbCksIHkgOjogcScgLT5cbiAgICBpZiB4ID0geSB0aGVuIChcbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSB4IHkgciB3aXRoXG4gICAgICB8IFNvbWUgcicgLT4gc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHInIChxLCBxJylcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGZzdHMsIGxzdCA9IExpc3RfdXRpbC5wb3BfbGFzdCBsIGluXG4gICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgbHN0IHkgciB3aXRoXG4gICAgICB8IFNvbWUgcicgLT4gc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHInIChmc3RzLCBxJylcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICApXG5cbmxldCBtaW5pbWl6ZV9yZW5hbWluZyB+ZGVidWdfbW9kZSBkc3RfbmJ0IHJlZl9uYnQgPVxuICBsZXQgcmUgPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biB0eSByIGlkcyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgciAoaWRzLCByZWZfbmJ0Lih0eSkpKVxuICAgIHJlIGRzdF9uYnRcblxubGV0IG1pbmltaXplIH5kZWJ1Z19tb2RlIGNhbmRfbmJ0IGNhbmRfbm9kZXMgcmVmX25idCA9XG4gIGxldCByZSA9IG1pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGNhbmRfbmJ0IHJlZl9uYnQgaW5cbiAgbGV0IHJlX2ltZyA9IFJlbmFtaW5nLmltYWdlIHJlIGluXG4gIGxldCBub2Rlc19ieV90eXBlID1cbiAgICBBcnJheS5tYXAgKExpc3QuZmlsdGVyIChmdW4gYSAtPiBNb2RzLkludFNldC5tZW0gYSByZV9pbWcpKSByZWZfbmJ0XG4gIGluXG4gIGxldCBub2RlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBpZCBzaXRlcyBhY2MgLT5cbiAgICAgICAgbGV0IHNpdGVzJyA9XG4gICAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgaSAtPiBMaW5rIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZSBuLCBzKSwgaVxuICAgICAgICAgICAgICB8ICgoVW5TcGVjIHwgRnJlZSksIF8pIGFzIHggLT4geClcbiAgICAgICAgICAgIHNpdGVzXG4gICAgICAgIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgcmUgaWQpIHNpdGVzJyBhY2MpXG4gICAgICBjYW5kX25vZGVzIE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIHtcbiAgICBub2Rlc19ieV90eXBlO1xuICAgIG5vZGVzO1xuICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICB9XG5cbigqIHJldHVybnMgYSBsaXN0IG9mIGNjIHdoZXJlIGVhY2ggY2MgaXMgaW5jbHVkZWQgaW4gY2MxKilcbmxldCBpbmZzIH5kZWJ1Z19tb2RlIHNpZ3MgY2MxIGNjMiA9XG4gIGxldCBwb3NzaWJpbGl0aWVzID1cbiAgICByZWYgKHBvdGVudGlhbF9wYWlyaW5nIHNpZ3MgY2MxLm5vZGVzX2J5X3R5cGUgY2MyLm5vZGVzX2J5X3R5cGUpXG4gIGluXG4gIGxldCByZWMgYXV4IHJlbmFtZSBub2RlcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBub2Rlc1xuICAgIHwgKChvLCBwKSBhcyBwYWlyKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0ICgpID0gcG9zc2liaWxpdGllcyA6PSBNb2RzLkludDJTZXQucmVtb3ZlIHBhaXIgIXBvc3NpYmlsaXRpZXMgaW5cbiAgICAgIGxldCBsbmsxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gbyBjYzEubm9kZXMgaW5cbiAgICAgIGxldCAodG9kb3MnLCByZW4nKSwgb3V0bCA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdF9tYXBpXG4gICAgICAgICAgKGZ1biBrICgodG9kbywgcmVuKSBhcyBhY2MpIChseSwgaXkpIC0+XG4gICAgICAgICAgICBsZXQgbHgsIGl4ID0gbG5rMS4oaykgaW5cbiAgICAgICAgICAgIG1hdGNoIGx4LCBseSB3aXRoXG4gICAgICAgICAgICB8IExpbmsgXywgRnJlZVxuICAgICAgICAgICAgfCBGcmVlLCBMaW5rIF9cbiAgICAgICAgICAgIHwgTGluayBfLCBVblNwZWNcbiAgICAgICAgICAgIHwgVW5TcGVjLCBMaW5rIF9cbiAgICAgICAgICAgIHwgVW5TcGVjLCBGcmVlXG4gICAgICAgICAgICB8IEZyZWUsIFVuU3BlY1xuICAgICAgICAgICAgfCBVblNwZWMsIFVuU3BlYyAtPlxuICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgIHwgRnJlZSwgRnJlZSAtPlxuICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAoIEZyZWUsXG4gICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICB8IChMaW5rIChuMSwgczEpIGFzIHgpLCBMaW5rIChuMiwgczIpIC0+XG4gICAgICAgICAgICAgIGlmIHMxID0gczIgdGhlblxuICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBuMSByZW4gdGhlblxuICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICggKGlmIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlbiBuMSA9IG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBuMSBuMiByZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHInIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfdHkgY2MxIG4xID0gZmluZF90eSBjYzIgbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICggKChuMSwgbjIpIDo6IHRvZG8sIHInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICggeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICAgKCBVblNwZWMsXG4gICAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAtMSApICkpXG4gICAgICAgICAgKHRvZG9zLCByZW5hbWUpXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHAgY2MyLm5vZGVzKVxuICAgICAgaW5cbiAgICAgIGlmIEFycmF5LmZvbGRfbGVmdCAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgbCA9IFVuU3BlYyAmJiBpIDwgMCkgdHJ1ZSBvdXRsXG4gICAgICB0aGVuXG4gICAgICAgIGF1eCByZW4nIG5vZGVzIHRvZG9zJ1xuICAgICAgZWxzZVxuICAgICAgICBhdXggcmVuJyAoTW9kcy5JbnRNYXAuYWRkIG8gb3V0bCBub2RlcykgdG9kb3MnXG4gIGluXG5cbiAgbGV0IHJlYyBmb3Jfb25lX3Jvb3QgYWNjID1cbiAgICBtYXRjaCBNb2RzLkludDJTZXQuY2hvb3NlICFwb3NzaWJpbGl0aWVzIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIChyb290MSwgcm9vdDIpIC0+XG4gICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHJvb3QxIHJvb3QyIChSZW5hbWluZy5lbXB0eSAoKSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIHIgLT5cbiAgICAgICAgbGV0IG5vZGVzID0gYXV4IHIgTW9kcy5JbnRNYXAuZW1wdHkgWyByb290MSwgcm9vdDIgXSBpblxuICAgICAgICBsZXQgYWNjJyA9XG4gICAgICAgICAgaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgbm9kZXMgdGhlblxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbm9kZXNfYnlfdHlwZSA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcFxuICAgICAgICAgICAgICAgIChMaXN0LmZpbHRlciAoZnVuIGEgLT4gTW9kcy5JbnRNYXAubWVtIGEgbm9kZXMpKVxuICAgICAgICAgICAgICAgIGNjMS5ub2Rlc19ieV90eXBlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWluaW1pemUgfmRlYnVnX21vZGUgbm9kZXNfYnlfdHlwZSBub2RlcyBjYzEubm9kZXNfYnlfdHlwZSA6OiBhY2NcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGZvcl9vbmVfcm9vdCBhY2MnKVxuICBpblxuICBmb3Jfb25lX3Jvb3QgW11cblxuKCogcmVuYW1pbmcgaXMgYSB0b3RhbCBtb3JwaGlzbSBmcm9tIGNjMScgdG8gY2MyOyBjYzEnIGlzIGluY2x1ZGVkIGluIGNjMSAqKVxubGV0IGludGVyc2VjdGlvbiByZW5hbWluZyBjYzEgY2MyID1cbiAgbGV0IG5vZGVzLCBpbWFnZSA9XG4gICAgUmVuYW1pbmcuZm9sZFxuICAgICAgKGZ1biBpIGogKChhY2NuLCBsKSBhcyBhY2MpIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgY2MxLm5vZGVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgbm9kZXMxIC0+XG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGogY2MyLm5vZGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgfCBTb21lIG5vZGVzMiAtPlxuICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAgICAgICAoZnVuIGsgKGwyLCBpMikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsMSwgaTEgPSBub2RlczEuKGspIGluXG4gICAgICAgICAgICAgICAgICAoIChpZiBsMSA9IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIFVuU3BlY1xuICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBsMiksXG4gICAgICAgICAgICAgICAgICAgIGlmIGkxID0gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpMiApKVxuICAgICAgICAgICAgICAgIG5vZGVzMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBqIG91dCBhY2NuLCBqIDo6IGwpKVxuICAgICAgcmVuYW1pbmcgKE1vZHMuSW50TWFwLmVtcHR5LCBbXSlcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPVxuICAgIEFycmF5Lm1hcCAoTGlzdC5maWx0ZXIgKGZ1biBhIC0+IExpc3QubWVtIGEgaW1hZ2UpKSBjYzIubm9kZXNfYnlfdHlwZVxuICBpblxuICB7XG4gICAgbm9kZXNfYnlfdHlwZTtcbiAgICBub2RlcztcbiAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSBub2RlcztcbiAgfVxuXG50eXBlIGV4dHJlbWl0eSA9IE9wZW4gfCBDbG9zZWRcblxubGV0IGZldGNoX2V4aXRfc2l0ZSBfc2lncyBzaWQgPSBzaWQgKyAxXG5cbmxldCByZWMgY291bnRlcl92YWx1ZSBzaWdzIG5vZGVzIChuaWQsIHNpZCkgY291bnQgPVxuICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBuaWQgbm9kZXMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgXCJwZW5kaW5nIGJvbmRzIGVuY291bnRlcmVkIHdoZW4gY29tcHV0aW5nIHRoZSBsZW5ndGggb2YgYSBjaGFpbiBcXFxuICAgICAgIChjb3VudGVycylcIlxuICB8IFNvbWUgYWcgLT5cbiAgICBsZXQgb3RoZXIgPSBmZXRjaF9leGl0X3NpdGUgc2lncyBzaWQgaW5cbiAgICBsZXQgZWwsIF8gPSBhZy4ob3RoZXIpIGluXG4gICAgKG1hdGNoIGVsIHdpdGhcbiAgICB8IFVuU3BlYyAtPiBjb3VudCwgT3BlblxuICAgIHwgRnJlZSAtPiBjb3VudCwgQ2xvc2VkXG4gICAgfCBMaW5rIChkbiwgZGkpIC0+IGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAoZG4sIGRpKSAoY291bnQgKyAxKSlcblxubGV0IGNvdW50ZXJfdmFsdWUgc2lncyBtaW5fdmFsdWUgbm9kZXMgKG5pZCwgc2lkKSA9XG4gIGxldCBhLCBiID0gY291bnRlcl92YWx1ZSBzaWdzIG5vZGVzIChuaWQsIHNpZCkgMCBpblxuICBtaW5fdmFsdWUgKyBhLCBiXG5cbmxldCBjb3VudGVyX3ZhbHVlX2NjIHNpZ3MgY291bnRlcl9zaWcgY2MgKG5pZCwgc2lkKSA9XG4gIGxldCBtaW5fdmFsdWUgPSBjb3VudGVyX3NpZy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiBpblxuICBsZXQgbWluX3ZhbHVlID1cbiAgICBtYXRjaCBtaW5fdmFsdWUgd2l0aFxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgKE5vbmUsIF8pIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSAoU29tZSBtaW5fdmFsdWUsIF8pIC0+IG1pbl92YWx1ZVxuICBpblxuICBsZXQgbm9kZXMgPSBjYy5ub2RlcyBpblxuICBsZXQgY291bnQsIGV4dHJlbWl0eSA9IGNvdW50ZXJfdmFsdWUgc2lncyBtaW5fdmFsdWUgbm9kZXMgKG5pZCwgc2lkKSBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGV4dHJlbWl0eSB3aXRoXG4gICAgfCBPcGVuIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICBcInBlbmRpbmcgYm9uZHMgZW5jb3VudGVyZWQgd2hlbiBjb21wdXRpbmcgdGhlIGxlbmd0aCBvZiBhIGNoYWluIFxcXG4gICAgICAgICAoY291bnRlcnMpXCJcbiAgICB8IENsb3NlZCAtPiAoKVxuICBpblxuICBjb3VudFxuXG5sZXQgZG90Y29tbWEgZG90bmV0ID1cbiAgaWYgZG90bmV0IHRoZW5cbiAgICBmdW4gZm10IC0+XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixcIlxuICBlbHNlXG4gICAgUHAuc3BhY2VcblxubGV0IHByaW50X2NjIH5ub0NvdW50ZXJzID8oZG90bmV0ID0gZmFsc2UpID8oZnVsbF9zcGVjaWVzID0gZmFsc2UpID9zaWdzXG4gICAgP2NvdW50ZXJzX2luZm8gP2NjX2lkIH53aXRoX2lkIGYgY2MgPVxuICBsZXQgcHJpbnRfaW50ZiAoKGFnX2ksIGFnX3QpIGFzIGFnKSBsaW5rX2lkcyBuZWlnaCA9XG4gICAgc25kXG4gICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgKGZ1biBwIChub3RfZW1wdHksICgoZnJlZSwgbGlua19pZHMpIGFzIG91dCkpIChlbCwgc3QpIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYVwiXG4gICAgICAgICAgICAgICAgIChpZiBub3RfZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICBkb3Rjb21tYSBkb3RuZXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBwKVxuICAgICAgICAgICAgICAgICBzdFxuICAgICAgICAgICAgIGVsc2UgaWYgZWwgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRvdGNvbW1hIGRvdG5ldFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICAgICAgICAgICAgIHBcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgICAgICB8IFVuU3BlYyAtPlxuICAgICAgICAgICAgIGlmIHN0ID49IDAgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBpZiBmdWxsX3NwZWNpZXMgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIiBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICBub3RfZW1wdHksIG91dFxuICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIiBpblxuICAgICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICAgICB8IExpbmsgKGRzdF9hLCBkc3RfcCkgLT5cbiAgICAgICAgICAgICBsZXQgZHN0X3R5ID0gZmluZF90eSBjYyBkc3RfYSBpblxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBkc3RfdHkgJiYgbm90IG5vQ291bnRlcnNcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIG1hdGNoIHNpZ3MsIGNvdW50ZXJzX2luZm8gd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHwgU29tZSBzaWdzLCBTb21lIGNvdW50ZXJzX2luZm8gLT5cbiAgICAgICAgICAgICAgICAgbGV0IG1pbl92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnID1cbiAgICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uZ2V0X2NvdW50ZXJfc2lnIHNpZ3MgY291bnRlcnNfaW5mbyBhZ190IHBcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvdW50ZXJfc2lnLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBTb21lIChOb25lLCBfKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgbWluX3ZhbHVlLCBfKSAtPiBtaW5fdmFsdWVcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIsIGtpbmQgPVxuICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfdmFsdWUgc2lncyBtaW5fdmFsdWUgY2Mubm9kZXMgKGRzdF9hLCBkc3RfcClcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVzJWR9XCJcbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IFwiPVwiXG4gICAgICAgICAgICAgICAgICAgICB8IE9wZW4gLT4gXCI+PVwiKVxuICAgICAgICAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IGksIG91dCcgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3RfcCkgbGlua19pZHMgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBvdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgZnJlZSwgKHN1Y2MgZnJlZSwgTW9kcy5JbnQyTWFwLmFkZCAoYWdfaSwgcCkgZnJlZSBsaW5rX2lkcylcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGkgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dCdcbiAgICAgICAgICAgICApKVxuICAgICAgICAgKGZhbHNlLCBsaW5rX2lkcykgbmVpZ2gpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2NfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjY19pZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLypjYyVpKi9AIFwiIGNjX2lkXG4gIGluXG4gIGxldCBfLCBfID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHggZWwgKG5vdF9lbXB0eSwgbGlua19pZHMpIC0+XG4gICAgICAgIGxldCBhZ194ID0geCwgZmluZF90eSBjYyB4IGluXG4gICAgICAgIGlmXG4gICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgICAgKG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyAoc25kIGFnX3gpKSkgfHwgbm9Db3VudGVyc1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QFs8aD4lYShcIlxuICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgaWYgZG90bmV0IHRoZW5cbiAgICAgICAgICAgICAgICAgICBmdW4gZm10IC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIi5cIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgUHAuY29tbWFcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZClcbiAgICAgICAgICAgICAgYWdfeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IHByaW50X2ludGYgYWdfeCBsaW5rX2lkcyBlbCBpblxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIpQF1cIiBpblxuICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub3RfZW1wdHksIGxpbmtfaWRzKVxuICAgICAgY2Mubm9kZXNcbiAgICAgIChmYWxzZSwgKDEsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG4gIGluXG4gICgpXG5cbmxldCBwcmludF9jY19hc19pZCBzaWdzIGNvdW50ZXJzX2luZm8gZiBjYyA9XG4gIGxldCBwcmludF9pbnRmICgoYWdfaSwgYWdfdCkgYXMgYWcpIGxpbmtfaWRzIG5laWdoID1cbiAgICBzbmRcbiAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAoZnVuIHAgKG5vdF9lbXB0eSwgKChmcmVlLCBsaW5rX2lkcykgYXMgb3V0KSkgKGVsLCBzdCkgLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpZiBlbCA8PiBVblNwZWMgfHwgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYVwiXG4gICAgICAgICAgICAgICAgIChpZiBub3RfZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiX1wiXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAoQWdlbnQucHJpbnRfc2l0ZSB+c2lncyBhZylcbiAgICAgICAgICAgICAgICAgcFxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIGlmIHN0ID49IDAgdGhlblxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIn4lYVwiIChBZ2VudC5wcmludF9yYXdfaW50ZXJuYWwgfnNpZ3MgYWcgcCkgc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgICAgICB8IFVuU3BlYyAtPiBub3RfZW1wdHkgfHwgc3QgPj0gMCwgb3V0XG4gICAgICAgICAgIHwgRnJlZSAtPiB0cnVlLCBvdXRcbiAgICAgICAgICAgfCBMaW5rIChkc3RfYSwgZHN0X3ApIC0+XG4gICAgICAgICAgICAgbGV0IGRzdF90eSA9IGZpbmRfdHkgY2MgZHN0X2EgaW5cbiAgICAgICAgICAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGRzdF90eSB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCBtaW5fdmFsdWUgPVxuICAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWcgPVxuICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uZ2V0X2NvdW50ZXJfc2lnIHNpZ3MgY291bnRlcnNfaW5mbyBhZ190IHBcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY291bnRlcl9zaWcuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgU29tZSAoTm9uZSwgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBtaW5fdmFsdWUsIF8pIC0+IG1pbl92YWx1ZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBjb3VudGVyLCBleHRyZW1pdHkgPVxuICAgICAgICAgICAgICAgICBjb3VudGVyX3ZhbHVlIHNpZ3MgbWluX3ZhbHVlIGNjLm5vZGVzIChkc3RfYSwgZHN0X3ApXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggZXh0cmVtaXR5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPcGVuIC0+IGZhaWx3aXRoIFwiYm9uZHMgc2hvdWxkIG5vdCBiZSBvcGVuZWRcIlxuICAgICAgICAgICAgICAgICB8IENsb3NlZCAtPiAoKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ+KyVkXCIgY291bnRlciBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgIGxldCBpLCBvdXQnID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnQyTWFwLmZpbmRfb3B0aW9uIChkc3RfYSwgZHN0X3ApIGxpbmtfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHggLT4geCwgb3V0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGZyZWUsIChzdWNjIGZyZWUsIE1vZHMuSW50Mk1hcC5hZGQgKGFnX2ksIHApIGZyZWUgbGlua19pZHMpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn4laVwiIGkgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dCdcbiAgICAgICAgICAgICApKVxuICAgICAgICAgKGZhbHNlLCBsaW5rX2lkcykgbmVpZ2gpXG4gIGluXG4gIGxldCBfLCBfID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHggZWwgKG5vdF9lbXB0eSwgbGlua19pZHMpIC0+XG4gICAgICAgIGxldCBhZ194ID0geCwgZmluZF90eSBjYyB4IGluXG4gICAgICAgIGlmIG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyAoc25kIGFnX3gpKSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QFs8aD4lYV9fXCJcbiAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfX1wiXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAoQWdlbnQucHJpbnQgfnNpZ3MgfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgICAgIGFnX3hcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvdXQgPSBwcmludF9pbnRmIGFnX3ggbGlua19pZHMgZWwgaW5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF1cIiBpblxuICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub3RfZW1wdHksIGxpbmtfaWRzKVxuICAgICAgY2Mubm9kZXNcbiAgICAgIChmYWxzZSwgKDEsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG4gIGluXG4gICgpXG5cbmxldCB0b195b2pzb24gY2MgPVxuICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGNjLm5vZGVzIHdpdGhcbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSBtIC0+XG4gICAgbGV0IHMgPSBzdWNjIG0gaW5cbiAgICBsZXQgc29ydHMgPSBBcnJheS5tYWtlIHMgTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIHR5IC0+IExpc3QuaXRlciAoZnVuIGlkIC0+IHNvcnRzLihpZCkgPC0gU29tZSB0eSkpXG4gICAgICAgIGNjLm5vZGVzX2J5X3R5cGVcbiAgICBpblxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwic29ydHNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICBzb3J0cyBbXSkgKTtcbiAgICAgICAgKCBcIm5vZGVzXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgKGZ1biBhY2MgaSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBjYy5ub2RlcyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAobCwgcykgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGcmVlIC0+IGBCb29sIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGluayAobiwgcykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYEFzc29jIFsgXCJub2RlXCIsIGBJbnQgbjsgXCJzaXRlXCIsIGBJbnQgcyBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVuU3BlYyAtPiBgQm9vbCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcyA8IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYE51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgSW50IHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgYSBbXSkpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIFtdIHMpICk7XG4gICAgICBdXG5cbmxldCBvZl95b2pzb24gc2lnX2RlY2wgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInNvcnRzXCIsIGBMaXN0IHMpOyAoXCJub2Rlc1wiLCBgTGlzdCBuKSBdXG4gIHwgYEFzc29jIFsgKFwibm9kZXNcIiwgYExpc3Qgbik7IChcInNvcnRzXCIsIGBMaXN0IHMpIF0gLT5cbiAgICBsZXQgXywgbm9kZXMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoaSwgYWNjKSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgYE51bGwgLT4gc3VjYyBpLCBhY2NcbiAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICggc3VjYyBpLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgIChUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBCb29sIGI7IGBOdWxsIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKCAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAtMSApXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBgQXNzb2MgWyAoXCJub2RlXCIsIGBJbnQgbik7IChcInNpdGVcIiwgYEludCBzKSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBBc3NvYyBbIChcInNpdGVcIiwgYEludCBzKTsgKFwibm9kZVwiLCBgSW50IG4pIF0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGBOdWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTGluayAobiwgcyksIC0xXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYEJvb2wgYjsgYEludCBzIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKCAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBzIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGBBc3NvYyBbIChcIm5vZGVcIiwgYEludCBuKTsgKFwic2l0ZVwiLCBgSW50IHMpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFzc29jIFsgKFwic2l0ZVwiLCBgSW50IHMpOyAoXCJub2RlXCIsIGBJbnQgbikgXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYEludCBzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIExpbmsgKG4sIHMpLCBzdFxuICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbm9kZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICAgICAgICBhY2MgKVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG5vZGUgbGlua3NcIiwgeCkpKVxuICAgICAgICAoMCwgTW9kcy5JbnRNYXAuZW1wdHkpIG5cbiAgICBpblxuICAgIGxldCBub2Rlc19ieV90eXBlID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lnX2RlY2wpIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTnVsbCAtPiAoKVxuICAgICAgICAgIHwgYEludCB0eSAtPiBub2Rlc19ieV90eXBlLih0eSkgPC0gaSA6OiBub2Rlc19ieV90eXBlLih0eSlcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3Jvbmcgbm9kZSB0eXBlXCIsIHgpKSlcbiAgICAgICAgc1xuICAgIGluXG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gICAgfVxuICB8IGBOdWxsIC0+IGVtcHR5X2NjIHNpZ19kZWNsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwYXR0ZXJuXCIsIHgpKVxuXG5sZXQgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSByZXNlcnZlZF9pZHMgZnJlZV9pZCBpbmoxX3RvXzIgY2MxIGNjMiA9XG4gIGxldCBpbWcgPSBSZW5hbWluZy5pbWFnZSBpbmoxX3RvXzIgaW5cbiAgbGV0IGF2YWlsYWJsZV9pZHMgPVxuICAgIEFycmF5Lm1hcFxuICAgICAgKExpc3QuZmlsdGVyIChmdW4gaWQgLT4gbm90IChNb2RzLkludFNldC5tZW0gaWQgaW1nKSkpXG4gICAgICByZXNlcnZlZF9pZHNcbiAgaW5cbiAgbGV0IHVzZWRfaWRzID1cbiAgICBBcnJheS5tYXBcbiAgICAgIChMaXN0X3V0aWwubWFwX29wdGlvbiAoZnVuIGlkIC0+XG4gICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBpZCBpbmoxX3RvXzIgdGhlblxuICAgICAgICAgICAgIFNvbWUgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajFfdG9fMiBpZClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE5vbmUpKVxuICAgICAgY2MxLm5vZGVzX2J5X3R5cGVcbiAgaW5cbiAgbGV0IGF2YWlsYWJsZV9pbl9jYzEgPVxuICAgIEFycmF5Lm1hcGlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKExpc3QubWVtIHggY2MxLm5vZGVzX2J5X3R5cGUuKGkpKSkgbClcbiAgICAgIHJlc2VydmVkX2lkc1xuICBpblxuICBsZXQgZnJlZV9pZF9mb3JfY2MxID0gcmVmIGZyZWVfaWQgaW5cblxuICBsZXQgZ2V0X2NjMiBqICgoKGluajEsIGZyZWVfaWQpLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKSBhcyBwYWNrKSA9XG4gICAgaWYgUmVuYW1pbmcubWVtIGogaW5qMiB0aGVuXG4gICAgICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoyIGosIHBhY2tcbiAgICBlbHNlIChcbiAgICAgIGxldCB0eSA9IGZpbmRfdHkgY2MyIGogaW5cbiAgICAgIGxldCBpbWcsIGZyZWVfaWQnID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2lkcy4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmcmVlX2lkLCBzdWNjIGZyZWVfaWRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaWRzLih0eSkgPC0gdCBpblxuICAgICAgICAgIGgsIGZyZWVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB1c2VkX2lkcy4odHkpIDwtIGltZyA6OiB1c2VkX2lkcy4odHkpIGluXG4gICAgICBsZXQgbyA9XG4gICAgICAgIG1hdGNoIGF2YWlsYWJsZV9pbl9jYzEuKHR5KSB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgeCA9ICFmcmVlX2lkX2Zvcl9jYzEgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpbmNyIGZyZWVfaWRfZm9yX2NjMSBpblxuICAgICAgICAgIHhcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaW5fY2MxLih0eSkgPC0gdCBpblxuICAgICAgICAgIGhcbiAgICAgIGluXG4gICAgICAoIGltZyxcbiAgICAgICAgKCAoIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgbyBpbWcgaW5qMSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAgIGZyZWVfaWQnICksXG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBqIGltZyBpbmoyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgKHRvZG9zMSwgKGosIGltZykgOjogdG9kb3MyKSApIClcbiAgICApXG4gIGluXG5cbiAgbGV0IGdldF9jYzEgaSAoKChpbmoxLCBmcmVlX2lkKSwgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSkgYXMgcGFjaykgPVxuICAgIGlmIFJlbmFtaW5nLm1lbSBpIGluajEgdGhlblxuICAgICAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMSBpLCBwYWNrXG4gICAgZWxzZSAoXG4gICAgICBsZXQgdHkgPSBmaW5kX3R5IGNjMSBpIGluXG4gICAgICBsZXQgaW1nLCBmcmVlX2lkJyA9XG4gICAgICAgIG1hdGNoIGF2YWlsYWJsZV9pZHMuKHR5KSB3aXRoXG4gICAgICAgIHwgW10gLT4gZnJlZV9pZCwgc3VjYyBmcmVlX2lkXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgbGV0ICgpID0gYXZhaWxhYmxlX2lkcy4odHkpIDwtIHQgaW5cbiAgICAgICAgICBoLCBmcmVlX2lkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gdXNlZF9pZHMuKHR5KSA8LSBpbWcgOjogdXNlZF9pZHMuKHR5KSBpblxuICAgICAgKCBpbWcsXG4gICAgICAgICggKCAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGkgaW1nIGluajEgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgICBmcmVlX2lkJyApLFxuICAgICAgICAgIGluajIsXG4gICAgICAgICAgKChpLCBpbWcpIDo6IHRvZG9zMSwgdG9kb3MyKSApIClcbiAgICApXG4gIGluXG4gIGxldCBwYWNrJywgbm9kZXMgPVxuICAgIGxldCByZWMgZ2x1ZSBwYWNrIGluajIgbm9kZXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSwgW10gLT4gcGFjaywgbm9kZXNcbiAgICAgIHwgW10sIChpLCBqKSA6OiB0b2RvczIgLT5cbiAgICAgICAgbGV0IG5vZGVzaSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIGkgY2MyLm5vZGVzIGluXG4gICAgICAgIGxldCBub2Rlc28gPSBBcnJheS5jb3B5IG5vZGVzaSBpblxuICAgICAgICBsZXQgcGFjaycsIGluajInLCB0b2RvcycgPVxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgIChmdW4gayBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCAoVW5TcGVjIHwgRnJlZSksIF8gLT4gYWNjXG4gICAgICAgICAgICAgIHwgTGluayAobiwgcyksIHN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMiBuIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdCBpblxuICAgICAgICAgICAgICAgIGFjYycpXG4gICAgICAgICAgICAocGFjaywgaW5qMiwgKFtdLCB0b2RvczIpKVxuICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgIGluXG4gICAgICAgIGdsdWUgcGFjaycgaW5qMicgKE1vZHMuSW50TWFwLmFkZCBqIG5vZGVzbyBub2RlcykgdG9kb3MnXG4gICAgICB8IChpLCBqKSA6OiB0b2RvczEsIHRvZG9zMiAtPlxuICAgICAgICBsZXQgbm9kZXNpID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaSBjYzEubm9kZXMgaW5cbiAgICAgICAgbGV0IG5vZGVzbyA9IEFycmF5LmNvcHkgbm9kZXNpIGluXG4gICAgICAgIGxldCBwYWNrJywgaW5qMicsIHRvZG9zJyA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBjYzIubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIGsgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCAoVW5TcGVjIHwgRnJlZSksIF8gLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3QgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuJywgYWNjJyA9IGdldF9jYzEgbiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdCBpblxuICAgICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICAgICAgKHBhY2ssIGluajIsICh0b2RvczEsIHRvZG9zMikpXG4gICAgICAgICAgICAgIG5vZGVzaVxuICAgICAgICAgIHwgU29tZSBub2Rlc2ogLT5cbiAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgKGZ1biBrIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRnJlZSwgXyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHN0aiA9IG5vZGVzai4oaykgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIHN0aiA8PiAtMSB0aGVuIG5vZGVzby4oaykgPC0gRnJlZSwgc3RqIGluXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdGkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBfLCBzdGogPSBub2Rlc2ouKGspIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc3RvID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHN0aVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBuJywgYWNjJyA9IGdldF9jYzEgbiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdG8gaW5cbiAgICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgICB8IFVuU3BlYywgc3RpIC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggbm9kZXNqLihrKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFVuU3BlYywgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIHN0aiA8PiAtMSB0aGVuIG5vZGVzby4oaykgPC0gVW5TcGVjLCBzdGogaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICB8IEZyZWUsIHN0aiAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIG5vZGVzby4oaykgPC1cbiAgICAgICAgICAgICAgICAgICAgICAgICggRnJlZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aSApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdG8gPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIHN0aiA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMiBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBub2Rlc28uKGspIDwtIExpbmsgKG4nLCBzKSwgc3RvIGluXG4gICAgICAgICAgICAgICAgICAgIGFjYycpKVxuICAgICAgICAgICAgICAocGFjaywgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSlcbiAgICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgIGluXG4gICAgICAgIGdsdWUgcGFjaycgaW5qMicgKE1vZHMuSW50TWFwLmFkZCBqIG5vZGVzbyBub2RlcykgdG9kb3MnXG4gICAgaW5cbiAgICBnbHVlIChpbmoxX3RvXzIsIGZyZWVfaWQpXG4gICAgICAoUmVuYW1pbmcuaWRlbnRpdHkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIGltZykpXG4gICAgICBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgKFJlbmFtaW5nLnRvX2xpc3QgaW5qMV90b18yLCBbXSlcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYXAgKExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlKSB1c2VkX2lkcyBpblxuICBsZXQgKCkgPVxuICAgIEFycmF5Lml0ZXJpXG4gICAgICAoZnVuIGkgeCAtPlxuICAgICAgICByZXNlcnZlZF9pZHMuKGkpIDwtXG4gICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgTW9kcy5pbnRfY29tcGFyZSBub2Rlc19ieV90eXBlLihpKSB4KVxuICAgICAgYXZhaWxhYmxlX2lkc1xuICBpblxuICAoIHBhY2snLFxuICAgIHtcbiAgICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgICBub2RlcztcbiAgICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICAgIH0gKVxuXG5sZXQgYnVpbGRfbmF2aWdhdGlvbl9iZXR3ZWVuIH5kZWJ1Z19tb2RlIGlual9kX3RvX28gY2NfbyBjY19kID1cbiAgbGV0IHJlYyBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCBuZXh0X3JvdW5kIHJlY29nbiBpbnRlcm4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIG5leHRfcm91bmQgPSBbXSB0aGVuXG4gICAgICAgIExpc3QucmV2X2FwcGVuZCByZWNvZ24gaW50ZXJuXG4gICAgICBlbHNlXG4gICAgICAgIGhhbmRsZV9saW5rcyBkaXNjb3ZlcmVkIFtdIHJlY29nbiBpbnRlcm4gbmV4dF9yb3VuZFxuICAgIHwgKCgoaSwgaiwgcyksIChuJywgcycpKSBhcyBoKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0IG4gPSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmpfZF90b19vIG4nIGluXG4gICAgICAobWF0Y2ggTW9kcy5JbnRTZXQubWVtIGogZGlzY292ZXJlZCwgTW9kcy5JbnRTZXQubWVtIG4nIGRpc2NvdmVyZWQgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgKGggOjogbmV4dF9yb3VuZCkgcmVjb2duIGludGVybiB0b2Rvc1xuICAgICAgfCB0cnVlLCB0cnVlIC0+XG4gICAgICAgIGxldCBpbnRlcm4nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLFxuICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgbiwgcycpIClcbiAgICAgICAgICA6OiBpbnRlcm5cbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgbmV4dF9yb3VuZCByZWNvZ24gaW50ZXJuJyB0b2Rvc1xuICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICBsZXQgcmVjb2duJyA9XG4gICAgICAgICAgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBpLCBzKSxcbiAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChuLCBmaW5kX3R5IGNjX2QgbicpLCBzJykgKVxuICAgICAgICAgIDo6IHJlY29nblxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfbGlua3NcbiAgICAgICAgICAoTW9kcy5JbnRTZXQuYWRkIG4nIGRpc2NvdmVyZWQpXG4gICAgICAgICAgbmV4dF9yb3VuZCByZWNvZ24nIGludGVybiB0b2Rvc1xuICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICBsZXQgcmVjb2duJyA9XG4gICAgICAgICAgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBzJyksXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCAoaSwgZmluZF90eSBjY19kIGopLCBzKSApXG4gICAgICAgICAgOjogcmVjb2duXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9saW5rc1xuICAgICAgICAgIChNb2RzLkludFNldC5hZGQgaiBkaXNjb3ZlcmVkKVxuICAgICAgICAgIG5leHRfcm91bmQgcmVjb2duJyBpbnRlcm4gdG9kb3MpXG4gIGluXG4gIGxldCBkaXNjb3YsIGFsbF9saW5rcywgaW50ZXJuID1cbiAgICBSZW5hbWluZy5mb2xkXG4gICAgICAoZnVuIGogaSAoZGlzYywgbGlua3MsIGludGVyKSAtPlxuICAgICAgICBsZXQgbm9kZXNkID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaiBjY19kLm5vZGVzIGluXG4gICAgICAgIGxldCBkaXNjJywgbm9kZXNvID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGNjX28ubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkaXNjLCBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggbm9kZXNkKSAoVW5TcGVjLCAtMSlcbiAgICAgICAgICB8IFNvbWUgbm9kZXNvIC0+IE1vZHMuSW50U2V0LmFkZCBqIGRpc2MsIG5vZGVzb1xuICAgICAgICBpblxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgIChmdW4gcyAoKGRpcywgbGksIGludCkgYXMgYWNjKSAob2wsIG9zKSAoZGwsIGRzKSAtPlxuICAgICAgICAgICAgbGV0ICgoXywgXywgaW50JykgYXMgYWNjJykgPVxuICAgICAgICAgICAgICBpZiBvcyA9IC0xICYmIGRzIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAoIGRpcyxcbiAgICAgICAgICAgICAgICAgIGxpLFxuICAgICAgICAgICAgICAgICAgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgZHMpIDo6IGludFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIG9sIDw+IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBkbCB3aXRoXG4gICAgICAgICAgICAgIHwgVW5TcGVjIC0+IGFjYydcbiAgICAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgICAgKCBkaXMsXG4gICAgICAgICAgICAgICAgICBsaSxcbiAgICAgICAgICAgICAgICAgICgoTmF2aWdhdGlvbi5FeGlzdGluZyBpLCBzKSwgTmF2aWdhdGlvbi5Ub05vdGhpbmcpIDo6IGludCcgKVxuICAgICAgICAgICAgICB8IExpbmsgKG4sIHMnKSAtPlxuICAgICAgICAgICAgICAgIGlmIG4gPiAoKmxhKikgaiB8fCAobiA9IGogJiYgcyA+IHMnKSB0aGVuXG4gICAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgZGlzLCAoKGksIGosIHMpLCAobiwgcycpKSA6OiBsaSwgaW50J1xuICAgICAgICAgICAgKSlcbiAgICAgICAgICAoZGlzYycsIGxpbmtzLCBpbnRlcikgbm9kZXNvIG5vZGVzZClcbiAgICAgIGlual9kX3RvX29cbiAgICAgIChNb2RzLkludFNldC5lbXB0eSwgW10sIFtdKVxuICBpblxuICBoYW5kbGVfbGlua3MgZGlzY292IFtdIFtdIGludGVybiBhbGxfbGlua3NcblxubW9kdWxlIEVudiA6IHNpZ1xuICB0eXBlIHRyYW5zaXRpb24gPSB7XG4gICAgbmV4dDogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG4gICAgZHN0OiBpZDsgKCogaWQgb2YgY2MgYW5kIGFsc28gYWRkcmVzcyBpbiB0aGUgRW52LmRvbWFpbiBtYXAqKVxuICAgIGluajogUmVuYW1pbmcudDsgKCogRnJvbSBkc3QgVG8gKFwidGhpc1wiIGNjICsgZXh0cmEgZWRnZSkgKilcbiAgfVxuXG4gIHR5cGUgcG9pbnQgPSB7XG4gICAgY29udGVudDogY2M7XG4gICAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xuICAgIGRlcHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIG11dGFibGUgc29uczogdHJhbnNpdGlvbiBsaXN0O1xuICB9XG5cbiAgdmFsIGNvbnRlbnQgOiBwb2ludCAtPiBjY1xuICB2YWwgcm9vdHMgOiBwb2ludCAtPiAoaW50IGxpc3QgKCppZHMqKSAqIGludCAoKnR5KikpIG9wdGlvblxuICB2YWwgZGVwcyA6IHBvaW50IC0+IE9wZXJhdG9yLkRlcFNldC50XG4gIHZhbCBzb25zIDogcG9pbnQgLT4gdHJhbnNpdGlvbiBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBjb3VudGVyc19pbmZvOiBDb3VudGVyc19pbmZvLnQ7XG4gICAgaWRfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gICAgbWF4X29iczogaW50O1xuICAgIGRvbWFpbjogcG9pbnQgYXJyYXk7XG4gICAgZWxlbWVudGFyaWVzOiAoTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnN0ZXAgKiBpZCkgbGlzdCBhcnJheSBhcnJheTtcbiAgICBzaW5nbGVfYWdlbnRfcG9pbnRzOiAoaWQgKiBPcGVyYXRvci5EZXBTZXQudCkgb3B0aW9uIGFycmF5O1xuICB9XG5cbiAgdmFsIGdldCA6IHQgLT4gaWQgLT4gcG9pbnRcbiAgdmFsIGdldF9zaW5nbGVfYWdlbnQgOiBpbnQgLT4gdCAtPiAoaWQgKiBPcGVyYXRvci5EZXBTZXQudCkgb3B0aW9uXG4gIHZhbCB0b19uYXZpZ2F0aW9uIDogdCAtPiBpZCAtPiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udFxuXG4gIHZhbCBnZXRfZWxlbWVudGFyeSA6XG4gICAgZGVidWdfbW9kZTpib29sIC0+XG4gICAgdCAtPlxuICAgIEFnZW50LnQgLT5cbiAgICBpbnQgLT5cbiAgICBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uYXJyb3cgLT5cbiAgICAoaWQgKiBwb2ludCAqIFJlbmFtaW5nLnQpIG9wdGlvblxuXG4gIHZhbCBzaWduYXR1cmVzIDogdCAtPiBTaWduYXR1cmUuc1xuICB2YWwgY291bnRlcnNfaW5mbyA6IHQgLT4gQ291bnRlcnNfaW5mby50XG4gIHZhbCBuZXdfb2JzX21hcCA6IHQgLT4gKGlkIC0+ICdhKSAtPiAnYSBPYnNNYXAudFxuICB2YWwgcHJpbnQgOiBub0NvdW50ZXJzOmJvb2wgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX3lvanNvbiA6IHQgLT4gWW9qc29uLkJhc2ljLnRcbiAgdmFsIG9mX3lvanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRyYW5zaXRpb24gPSB7XG4gICAgbmV4dDogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG4gICAgZHN0OiBpZDsgKCogaWQgb2YgY2MgYW5kIGFsc28gYWRkcmVzcyBpbiB0aGUgRW52LmRvbWFpbiBtYXAqKVxuICAgIGluajogUmVuYW1pbmcudDsgKCogRnJvbSBkc3QgVG8gKFwidGhpc1wiIGNjICsgZXh0cmEgZWRnZSkgKilcbiAgfVxuXG4gIHR5cGUgcG9pbnQgPSB7XG4gICAgY29udGVudDogY2M7XG4gICAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xuICAgIGRlcHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIG11dGFibGUgc29uczogdHJhbnNpdGlvbiBsaXN0O1xuICB9XG5cbiAgbGV0IGNvbnRlbnQgcCA9IHAuY29udGVudFxuICBsZXQgcm9vdHMgcCA9IHAucm9vdHNcbiAgbGV0IGRlcHMgcCA9IHAuZGVwc1xuICBsZXQgc29ucyBwID0gcC5zb25zXG5cbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBjb3VudGVyc19pbmZvOiBDb3VudGVyc19pbmZvLnQ7XG4gICAgaWRfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gICAgbWF4X29iczogaW50O1xuICAgIGRvbWFpbjogcG9pbnQgYXJyYXk7XG4gICAgZWxlbWVudGFyaWVzOiAoTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnN0ZXAgKiBpZCkgbGlzdCBhcnJheSBhcnJheTtcbiAgICBzaW5nbGVfYWdlbnRfcG9pbnRzOiAoaWQgKiBPcGVyYXRvci5EZXBTZXQudCkgb3B0aW9uIGFycmF5O1xuICB9XG5cbiAgbGV0IHNpZ25hdHVyZXMgZW52ID0gZW52LnNpZ19kZWNsXG4gIGxldCBjb3VudGVyc19pbmZvIGVudiA9IGVudi5jb3VudGVyc19pbmZvXG5cbiAgbGV0IHByaW50IH5ub0NvdW50ZXJzIGYgZW52ID1cbiAgICBsZXQgcHBfcG9pbnQgcF9pZCBmIHAgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPkBbPGg+JWFAXUAgJXQtPiBAWyglYSlAXUBdXCJcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgcHJpbnRfY2Mgfm5vQ291bnRlcnMgfnNpZ3M6ZW52LnNpZ19kZWNsXG4gICAgICAgICAgICB+Y291bnRlcnNfaW5mbzplbnYuY291bnRlcnNfaW5mbyB+Y2NfaWQ6cF9pZCB+d2l0aF9pZDp0cnVlIHgpXG4gICAgICAgIHAuY29udGVudFxuICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICBpZiBwLnJvb3RzIDw+IE5vbmUgdGhlblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbWyVhXUBdQCBcIlxuICAgICAgICAgICAgICAoUHAuc2V0IE9wZXJhdG9yLkRlcFNldC5lbGVtZW50cyBQcC5zcGFjZSBPcGVyYXRvci5wcmludF9yZXZfZGVwKVxuICAgICAgICAgICAgICBwLmRlcHMpXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBzIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEoJWEpQCAlaUBdXCJcbiAgICAgICAgICAgICAgIChOYXZpZ2F0aW9uLnByaW50IGVudi5zaWdfZGVjbCAoZmluZF90eSBwLmNvbnRlbnQpKVxuICAgICAgICAgICAgICAgcy5uZXh0IFJlbmFtaW5nLnByaW50IHMuaW5qIHMuZHN0KSlcbiAgICAgICAgcC5zb25zXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCIgKFBwLmFycmF5IFBwLnNwYWNlIHBwX3BvaW50KSBlbnYuZG9tYWluXG5cbiAgbGV0IGdldF9zaW5nbGVfYWdlbnQgdHkgZW52ID0gZW52LnNpbmdsZV9hZ2VudF9wb2ludHMuKHR5KVxuICBsZXQgZ2V0IGVudiBjY19pZCA9IGVudi5kb21haW4uKGNjX2lkKVxuXG4gIGxldCB0b19uYXZpZ2F0aW9uIGVudiBpZCA9XG4gICAgbGV0IGNjID0gKGdldCBlbnYgaWQpLmNvbnRlbnQgaW5cbiAgICByYXdfdG9fbmF2aWdhdGlvbiB0cnVlIGNjLm5vZGVzX2J5X3R5cGUgY2Mubm9kZXNcblxuICBsZXQgdHJhbnNpdGlvbl90b195b2pzb24gdCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiZHN0XCIsIGBJbnQgdC5kc3Q7XG4gICAgICAgIFwiaW5qXCIsIFJlbmFtaW5nLnRvX3lvanNvbiB0LmluajtcbiAgICAgICAgXCJuYXZcIiwgTmF2aWdhdGlvbi50b195b2pzb24gdC5uZXh0O1xuICAgICAgXVxuXG4gIGxldCB0cmFuc2l0aW9uX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJpbmpcIiwgcik7IChcIm5hdlwiLCBuKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJuYXZcIiwgbik7IChcImlualwiLCByKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJpbmpcIiwgcik7IChcIm5hdlwiLCBuKTsgKFwiZHN0XCIsIGBJbnQgZHN0KSBdXG4gICAgfCBgQXNzb2MgWyAoXCJuYXZcIiwgbik7IChcImlualwiLCByKTsgKFwiZHN0XCIsIGBJbnQgZHN0KSBdXG4gICAgfCBgQXNzb2MgWyAoXCJpbmpcIiwgcik7IChcImRzdFwiLCBgSW50IGRzdCk7IChcIm5hdlwiLCBuKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJuYXZcIiwgbik7IChcImRzdFwiLCBgSW50IGRzdCk7IChcImlualwiLCByKSBdIC0+XG4gICAgICB7IGRzdDsgaW5qID0gUmVuYW1pbmcub2ZfeW9qc29uIHI7IG5leHQgPSBOYXZpZ2F0aW9uLm9mX3lvanNvbiBuIH1cbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHRyYW5zaXRpb25cIiwgeCkpXG5cbiAgbGV0IHBvaW50X3RvX3lvanNvbiBwID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJjb250ZW50XCIsIHRvX3lvanNvbiBwLmNvbnRlbnQ7XG4gICAgICAgICggXCJyb290c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgKGZ1biAoaWRzLCB0eSkgLT5cbiAgICAgICAgICAgICAgYExpc3QgWyBgTGlzdCAoTGlzdC5tYXAgSnNvblV0aWwub2ZfaW50IGlkcyk7IGBJbnQgdHkgXSlcbiAgICAgICAgICAgIHAucm9vdHMgKTtcbiAgICAgICAgXCJkZXBzXCIsIE9wZXJhdG9yLmRlcHNldF90b195b2pzb24gcC5kZXBzO1xuICAgICAgICBcInNvbnNcIiwgYExpc3QgKExpc3QubWFwIHRyYW5zaXRpb25fdG9feW9qc29uIHAuc29ucyk7XG4gICAgICBdXG5cbiAgbGV0IHBvaW50X29mX3lvanNvbiBzaWdfZGVjbCA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgY29udGVudCA9IG9mX3lvanNvbiBzaWdfZGVjbCAoTGlzdC5hc3NvYyBcImNvbnRlbnRcIiBsKTtcbiAgICAgICAgICAgcm9vdHMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwicm9vdHNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBOdWxsIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGBMaXN0IFsgYExpc3QgaWRzOyBgSW50IHR5IF0gLT5cbiAgICAgICAgICAgICAgIFNvbWUgKExpc3QubWFwIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBpZHMsIHR5KVxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBkZXBzID0gT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvbiAoTGlzdC5hc3NvYyBcImRlcHNcIiBsKTtcbiAgICAgICAgICAgc29ucyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJzb25zXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+IExpc3QubWFwIHRyYW5zaXRpb25fb2ZfeW9qc29uIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGRvbWFpbiBwb2ludFwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkb21haW4gcG9pbnRcIiwgeCkpXG5cbiAgbGV0IHRvX3lvanNvbiBlbnYgPVxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcInNpZ25hdHVyZXNcIiwgU2lnbmF0dXJlLnRvX2pzb24gZW52LnNpZ19kZWNsO1xuICAgICAgICAoIFwic2luZ2xlX2FnZW50c1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgKGlkLCBfZGVwcykgLT4gYEludCBpZClcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LnNpbmdsZV9hZ2VudF9wb2ludHMgW10pICk7XG4gICAgICAgICggXCJlbGVtZW50YXJpZXNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdCwgZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCBbIE5hdmlnYXRpb24uc3RlcF90b195b2pzb24gc3Q7IGBJbnQgZCBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIHggW10pXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5lbGVtZW50YXJpZXMgW10pICk7XG4gICAgICAgICggXCJkYWdcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT4gcG9pbnRfdG9feW9qc29uIHggOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LmRvbWFpbiBbXSkgKTtcbiAgICAgICAgKCBcImlkX2J5X3R5cGVcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT4gYExpc3QgKExpc3QubWFwIChmdW4gaSAtPiBgSW50IGkpIHgpIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5pZF9ieV90eXBlIFtdKSApO1xuICAgICAgICBcIm1heF9vYnNcIiwgYEludCBlbnYubWF4X29icztcbiAgICAgIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICAgbGV0IHNpZ19kZWNsID0gU2lnbmF0dXJlLm9mX2pzb24gKExpc3QuYXNzb2MgXCJzaWduYXR1cmVzXCIgbCkgaW5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgc2lnX2RlY2w7XG4gICAgICAgICAgIGNvdW50ZXJzX2luZm8gPSBbfHxdO1xuICAgICAgICAgICAoKiBUTyBETyAqKVxuICAgICAgICAgICAoKiBTaSBqc29uIGxlIHByZW5kcmUsIHNpbm9uIGxlIHN5bnRow6l0aXNlciBhdmVjIGwnYW5jaWVuIGZvbmN0aW9ubmVtZW50ICopXG4gICAgICAgICAgIHNpbmdsZV9hZ2VudF9wb2ludHMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwic2luZ2xlX2FnZW50c1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpLCBPcGVyYXRvci5EZXBTZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIHNpbmdsZV9hZ2VudFwiLCB4KSkpKVxuICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGVsZW1lbnRhcmllcyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJlbGVtZW50YXJpZXNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgczsgYEludCBkIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uc3RlcF9vZl95b2pzb24gcywgZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBkb21haW4gPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZGFnXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChwb2ludF9vZl95b2pzb24gc2lnX2RlY2wpIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgaWRfYnlfdHlwZSA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJpZF9ieV90eXBlXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBtYXhfb2JzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcIm1heF9vYnNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB1cGRhdGUgZG9tYWluXCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHVwZGF0ZSBkb21haW5cIiwgeCkpXG5cbiAgbGV0IG5ld19vYnNfbWFwIGVudiBmID0gTW9kcy5EeW5BcnJheS5pbml0IGVudi5tYXhfb2JzIGZcblxuICBsZXQgZ2V0X2VsZW1lbnRhcnkgfmRlYnVnX21vZGUgZG9tYWluICgoXywgdHkpIGFzIG5vZGUpIHMgYXJyb3cgPVxuICAgIGxldCBzYSA9IGRvbWFpbi5lbGVtZW50YXJpZXMuKHR5KSBpblxuICAgIGxldCByZWMgZmluZF9nb29kX2VkZ2UgPSBmdW5jdGlvblxuICAgICAgKCpvbmUgc2hvdWxkIHVzZSBhIGhhc2ggaGVyZSopXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgKHN0LCBjY19pZCkgOjogdGFpbCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTmF2aWdhdGlvbi5jb21wYXRpYmxlX2ZyZXNoX3BvaW50IH5kZWJ1Z19tb2RlIHN0IG5vZGUgcyBhcnJvd1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmluZF9nb29kX2VkZ2UgdGFpbFxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIGxldCBkc3QgPSBnZXQgZG9tYWluIGNjX2lkIGluXG4gICAgICAgICAgU29tZSAoY2NfaWQsIGRzdCwgaW5qJykpXG4gICAgaW5cbiAgICBmaW5kX2dvb2RfZWRnZSBzYS4ocylcbmVuZFxuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZCBmIGlkID1cbiAgbWF0Y2ggZG9tYWluIHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IGNjX2lkID1cbiAgICAgIGlmIHdpdGhfaWQgdGhlblxuICAgICAgICBTb21lIGlkXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIHByaW50X2NjIH5ub0NvdW50ZXJzIH5zaWdzOihFbnYuc2lnbmF0dXJlcyBlbnYpXG4gICAgICB+Y291bnRlcnNfaW5mbzooRW52LmNvdW50ZXJzX2luZm8gZW52KSA/Y2NfaWQgfndpdGhfaWQgZlxuICAgICAgZW52LkVudi5kb21haW4uKGlkKS5FbnYuY29udGVudFxuXG5sZXQgZW1iZWRkaW5nc190b19mdWxseV9zcGVjaWZpZWQgfmRlYnVnX21vZGUgZG9tYWluIGFfaWQgYiA9XG4gIGxldCBhID0gZG9tYWluLkVudi5kb21haW4uKGFfaWQpLkVudi5jb250ZW50IGluXG4gIG1hdGNoIGZpbmRfcm9vdCBhIHdpdGhcbiAgfCBOb25lIC0+IFsgUmVuYW1pbmcuZW1wdHkgKCkgXVxuICB8IFNvbWUgKGgsIHR5KSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBhZyAtPlxuICAgICAgICBtYXRjaCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OmZhbHNlIGggYSBhZyBiIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IGFjY1xuICAgICAgICB8IFNvbWUgciwgXyAtPiByIDo6IGFjYylcbiAgICAgIFtdIGIubm9kZXNfYnlfdHlwZS4odHkpXG5cbnR5cGUgcHJlcG9pbnQgPSB7XG4gIHBfaWQ6IGlkO1xuICBlbGVtZW50OiBjYztcbiAgZGVwZW5kaW5nOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xufVxuXG50eXBlIHdvcmsgPSB7XG4gIHNpZ3M6IFNpZ25hdHVyZS5zO1xuICBjb3VudGVyczogQ291bnRlcnNfaW5mby50O1xuICBjY19lbnY6IHByZXBvaW50IGxpc3QgTW9kcy5JbnRNYXAudCBNb2RzLkludE1hcC50O1xuICByZXNlcnZlZF9pZDogaW50IGxpc3QgYXJyYXk7XG4gIHVzZWRfaWQ6IGludCBsaXN0IGFycmF5O1xuICBmcmVlX2lkOiBpbnQ7XG4gIGNjX25vZGVzOiAobGluayAqIGludCkgYXJyYXkgTW9kcy5JbnRNYXAudDtcbiAgZGFuZ2xpbmc6IGludDsgKCogbm9kZV9pZCAqKVxufVxuXG5tb2R1bGUgUHJlRW52ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBzaWdfZGVjbDogU2lnbmF0dXJlLnM7XG4gICAgY291bnRlcnNfaW5mbzogQ291bnRlcnNfaW5mby50O1xuICAgIGlkX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICAgIG5iX2lkOiBpbnQ7XG4gICAgZG9tYWluOiBwcmVwb2ludCBsaXN0IE1vZHMuSW50TWFwLnQgTW9kcy5JbnRNYXAudDtcbiAgICBtdXRhYmxlIHVzZWRfYnlfYV9iZWdpbl9uZXc6IGJvb2w7XG4gIH1cblxuICB0eXBlIHN0YXQgPSB7IHN0YXRfbm9kZXM6IGludDsgc3RhdF9uYXZfc3RlcHM6IGludCB9XG5cbiAgbGV0IGNvdW50ZXJzX2luZm8gcHJlZW52ID0gcHJlZW52LmNvdW50ZXJzX2luZm9cblxuICBsZXQgZnJlc2ggc2lncyBjb3VudGVyc19pbmZvIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluID1cbiAgICB7XG4gICAgICBzaWdfZGVjbCA9IHNpZ3M7XG4gICAgICBjb3VudGVyc19pbmZvO1xuICAgICAgaWRfYnlfdHlwZTtcbiAgICAgIG5iX2lkO1xuICAgICAgZG9tYWluO1xuICAgICAgdXNlZF9ieV9hX2JlZ2luX25ldyA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgZW1wdHkgc2lncyBjb3VudGVyc19pbmZvID1cbiAgICBsZXQgbmJ0JyA9IEFycmF5Lm1ha2UgKFNpZ25hdHVyZS5zaXplIHNpZ3MpIFtdIGluXG4gICAgZnJlc2ggc2lncyBjb3VudGVyc19pbmZvIG5idCcgMSBNb2RzLkludE1hcC5lbXB0eVxuXG4gIGxldCBjaGVja192aXRhbGl0eSBlbnYgPSBhc3NlcnQgKGVudi51c2VkX2J5X2FfYmVnaW5fbmV3ID0gZmFsc2UpXG5cbiAgbGV0IHRvX3dvcmsgZW52ID1cbiAgICBsZXQgKCkgPSBjaGVja192aXRhbGl0eSBlbnYgaW5cbiAgICBsZXQgKCkgPSBlbnYudXNlZF9ieV9hX2JlZ2luX25ldyA8LSB0cnVlIGluXG4gICAge1xuICAgICAgc2lncyA9IGVudi5zaWdfZGVjbDtcbiAgICAgIGNvdW50ZXJzID0gZW52LmNvdW50ZXJzX2luZm87XG4gICAgICBjY19lbnYgPSBlbnYuZG9tYWluO1xuICAgICAgcmVzZXJ2ZWRfaWQgPSBlbnYuaWRfYnlfdHlwZTtcbiAgICAgIHVzZWRfaWQgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggZW52LmlkX2J5X3R5cGUpIFtdO1xuICAgICAgZnJlZV9pZCA9IGVudi5uYl9pZDtcbiAgICAgIGNjX25vZGVzID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICBkYW5nbGluZyA9IDA7XG4gICAgfVxuXG4gIGxldCBzaWdzIGVudiA9IGVudi5zaWdfZGVjbFxuXG4gIGxldCBlbXB0eV9wb2ludCBzaWdzID1cbiAgICB7XG4gICAgICBFbnYuY29udGVudCA9IGVtcHR5X2NjIHNpZ3M7XG4gICAgICBFbnYucm9vdHMgPSBOb25lO1xuICAgICAgRW52LmRlcHMgPSBPcGVyYXRvci5EZXBTZXQuZW1wdHk7XG4gICAgICBFbnYuc29ucyA9IFtdO1xuICAgIH1cblxuICBsZXQgZmlsbF9lbGVtIHNpZ3MgYm90dG9tID1cbiAgICBsZXQgZWxlbWVudGFyaWVzID1cbiAgICAgIEFycmF5LmluaXQgKFNpZ25hdHVyZS5zaXplIHNpZ3MpIChmdW4gaSAtPlxuICAgICAgICAgIEFycmF5Lm1ha2UgKFNpZ25hdHVyZS5hcml0eSBzaWdzIGkpIFtdKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgICAgICAgICBtYXRjaCBwLmVsZW1lbnQucmVjb2duX25hdiB3aXRoXG4gICAgICAgICAgICAgIHwgW10gfCAoKE5hdmlnYXRpb24uRXhpc3RpbmcgXywgXyksIF8pIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgKChOYXZpZ2F0aW9uLkZyZXNoIF8sIF8pLCBfKSA6OiBfIDo6IF8gLT4gKClcbiAgICAgICAgICAgICAgfCBbICgoKE5hdmlnYXRpb24uRnJlc2ggKF8sIHR5MSksIHMxKSwgYXJyKSBhcyBzdGVwKSBdIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNhMSA9IGVsZW1lbnRhcmllcy4odHkxKSBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHNhMS4oczEpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMS4oczEpIGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIGFyciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCAoXywgdHkyKSwgczIpIC0+XG4gICAgICAgICAgICAgICAgICBpZiB0eTEgPSB0eTIgJiYgczEgPD4gczIgdGhlblxuICAgICAgICAgICAgICAgICAgICBzYTEuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTEuKHMyKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBzYTIgPSBlbGVtZW50YXJpZXMuKHR5MikgaW5cbiAgICAgICAgICAgICAgICAgICAgc2EyLihzMikgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2EyLihzMilcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8IE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkV4aXN0aW5nIF8sIHMyKSAtPlxuICAgICAgICAgICAgICAgICAgc2ExLihzMikgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2ExLihzMilcbiAgICAgICAgICAgICAgICB8IE5hdmlnYXRpb24uVG9Ob3RoaW5nIHwgTmF2aWdhdGlvbi5Ub0ludGVybmFsIF8gLT4gKCkpKSlcbiAgICAgICAgYm90dG9tXG4gICAgaW5cbiAgICBlbGVtZW50YXJpZXNcblxuICBsZXQgcHJlc2VudF9pbl9kc3QgfmRlYnVnX21vZGUgZHN0IGluajJkc3QgbmF2ID1cbiAgICBsZXQgcmVjIGF1eF9wcmVzZW50X2luX2RzdCBpbmonID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gU29tZSBpbmonXG4gICAgICB8ICgoTmF2aWdhdGlvbi5GcmVzaCBfLCBfKSwgXykgOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksIE5hdmlnYXRpb24uVG9Ob3RoaW5nKSA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgZnN0IG4uKHNpKSA9IEZyZWUgdGhlblxuICAgICAgICAgICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICB8ICgoTmF2aWdhdGlvbi5FeGlzdGluZyBhZywgc2kpLCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgaSkgOjogdCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZylcbiAgICAgICAgICAgICBkc3Qubm9kZXNcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGlmIHNuZCBuLihzaSkgPSBpIHRoZW5cbiAgICAgICAgICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgfCAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksXG4gICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcnLCBzaScpIClcbiAgICAgICAgOjogdCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZylcbiAgICAgICAgICAgICBkc3Qubm9kZXNcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGlmIGZzdCBuLihzaSkgPSBMaW5rIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnJywgc2knKSB0aGVuXG4gICAgICAgICAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIHwgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBhZywgc2kpLFxuICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChhZycsIHR5JyksIHNpJykgKVxuICAgICAgICA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgKG1hdGNoIG4uKHNpKSB3aXRoXG4gICAgICAgICAgfCBMaW5rIChhZ2wsIHNpbCksIF8gLT5cbiAgICAgICAgICAgIGlmIExpc3QubWVtIGFnbCBkc3Qubm9kZXNfYnlfdHlwZS4odHknKSAmJiBzaScgPSBzaWwgdGhlbiAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBhZycgYWdsIGluaicgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgaW5qJyAtPiBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIHwgKEZyZWUgfCBVblNwZWMpLCBfIC0+IE5vbmUpKVxuICAgIGluXG4gICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluajJkc3QgbmF2XG5cbiAgbGV0IHJlYyBpbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpZF9ieV90eXBlIG5iX2lkIGRvbWFpbiBkc3RfaWQgZHN0XG4gICAgICBpbmoyZHN0IHBfaWQgPVxuICAgIGlmIHBfaWQgPSBkc3RfaWQgdGhlblxuICAgICAgMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvaW50ID0gZG9tYWluLihwX2lkKSBpblxuICAgICAgbGV0IHJlYyBpbnNlcnRfbmF2X3NvbnMgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgbGV0IChpbmpfZTJzdXAsIF8pLCBzdXAgPVxuICAgICAgICAgICAgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSBpZF9ieV90eXBlIG5iX2lkIGluajJkc3RcbiAgICAgICAgICAgICAgcG9pbnQuRW52LmNvbnRlbnQgZHN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggZXF1YWwgfmRlYnVnX21vZGUgc3VwIGRzdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgU29tZSBpbmpfc3VwMmRzdCAtPlxuICAgICAgICAgICAgbGV0IGlual9kc3QycCA9XG4gICAgICAgICAgICAgIFJlbmFtaW5nLmludmVyc2VcbiAgICAgICAgICAgICAgICAoUmVuYW1pbmcuY29tcG9zZSB+ZGVidWdfbW9kZSBmYWxzZSBpbmpfZTJzdXAgaW5qX3N1cDJkc3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG5hdiA9XG4gICAgICAgICAgICAgIGJ1aWxkX25hdmlnYXRpb25fYmV0d2VlbiB+ZGVidWdfbW9kZSBpbmpfZHN0MnAgcG9pbnQuRW52LmNvbnRlbnRcbiAgICAgICAgICAgICAgICBkc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb2ludC5FbnYuc29ucyA8LVxuICAgICAgICAgICAgICAgIHsgRW52LmRzdCA9IGRzdF9pZDsgRW52LmluaiA9IGlual9kc3QycDsgRW52Lm5leHQgPSBuYXYgfVxuICAgICAgICAgICAgICAgIDo6IHBvaW50LkVudi5zb25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTGlzdC5sZW5ndGggbmF2KVxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIChtYXRjaCBwcmVzZW50X2luX2RzdCB+ZGVidWdfbW9kZSBkc3QgaW5qMmRzdCBoLkVudi5uZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5zZXJ0X25hdl9zb25zIHRcbiAgICAgICAgICB8IFNvbWUgaW5qX3AnMmRzdCAtPlxuICAgICAgICAgICAgaW5zZXJ0X25hdmlnYXRpb24gfmRlYnVnX21vZGUgaWRfYnlfdHlwZSBuYl9pZCBkb21haW4gZHN0X2lkIGRzdFxuICAgICAgICAgICAgICAoUmVuYW1pbmcuY29tcG9zZSB+ZGVidWdfbW9kZSBmYWxzZSBoLkVudi5pbmogaW5qX3AnMmRzdClcbiAgICAgICAgICAgICAgaC5FbnYuZHN0KVxuICAgICAgaW5cbiAgICAgIGluc2VydF9uYXZfc29ucyBwb2ludC5FbnYuc29uc1xuICAgIClcblxuICBsZXQgYWRkX2NjIH5kZWJ1Z19tb2RlIH50b3BsZXZlbCA/b3JpZ2luIGVudiBwX2lkIGVsZW1lbnQgPVxuICAgIGxldCB3ID0gd2VpZ2h0IGVsZW1lbnQgaW5cbiAgICBsZXQgaGFzaCA9IGNvYXJzZV9oYXNoIGVsZW1lbnQgaW5cbiAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCByb290cyA9XG4gICAgICAgICAgaWYgdG9wbGV2ZWwgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBmaW5kX3Jvb3QgZWxlbWVudCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIChyaWQsIHJ0eSkgLT5cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICggTGlzdC5zb3J0IE1vZHMuaW50X2NvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gciAtPiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByIHJpZClcbiAgICAgICAgICAgICAgICAgICAgICAgKGF1dG9tb3JwaGlzbXMgfmRlYnVnX21vZGUgZWxlbWVudCkpLFxuICAgICAgICAgICAgICAgICAgcnR5IClcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgKCBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBfaWQ7XG4gICAgICAgICAgICAgIGVsZW1lbnQ7XG4gICAgICAgICAgICAgIHJvb3RzO1xuICAgICAgICAgICAgICBkZXBlbmRpbmcgPSBhZGRfb3JpZ2luIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBvcmlnaW47XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIF0sXG4gICAgICAgICAgaWRlbnRpdHlfaW5qZWN0aW9uIGVsZW1lbnQsXG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICBwX2lkIClcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIChtYXRjaCBlcXVhbCB+ZGVidWdfbW9kZSBlbGVtZW50IGguZWxlbWVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBhLCBiLCBjLCBkID0gYXV4IHQgaW5cbiAgICAgICAgICBoIDo6IGEsIGIsIGMsIGRcbiAgICAgICAgfCBTb21lIHIgLT5cbiAgICAgICAgICBsZXQgcm9vdHMgPVxuICAgICAgICAgICAgaWYgaC5yb290cyA8PiBOb25lIHx8IG5vdCB0b3BsZXZlbCB0aGVuXG4gICAgICAgICAgICAgIGgucm9vdHNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBmaW5kX3Jvb3QgZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSAocmlkLCBydHkpIC0+XG4gICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgKCBMaXN0LnNvcnQgTW9kcy5pbnRfY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gciAtPiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByIHJpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYXV0b21vcnBoaXNtcyB+ZGVidWdfbW9kZSBlbGVtZW50KSksXG4gICAgICAgICAgICAgICAgICAgIHJ0eSApXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgcF9pZCA9IGgucF9pZDtcbiAgICAgICAgICAgICAgZWxlbWVudCA9IGguZWxlbWVudDtcbiAgICAgICAgICAgICAgZGVwZW5kaW5nID0gYWRkX29yaWdpbiBoLmRlcGVuZGluZyBvcmlnaW47XG4gICAgICAgICAgICAgIHJvb3RzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOjogdCxcbiAgICAgICAgICAgIHIsXG4gICAgICAgICAgICBoLmVsZW1lbnQsXG4gICAgICAgICAgICBoLnBfaWQgKSlcbiAgICBpblxuICAgIGxldCBlbnZfdyA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSB3IGVudiBpblxuICAgIGxldCBlbnZfd19oLCByLCBvdXQsIG91dF9pZCA9XG4gICAgICBhdXggKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbXSBoYXNoIGVudl93KVxuICAgIGluXG4gICAgTW9kcy5JbnRNYXAuYWRkIHcgKE1vZHMuSW50TWFwLmFkZCBoYXNoIGVudl93X2ggZW52X3cpIGVudiwgciwgb3V0LCBvdXRfaWRcblxuICBsZXQgcmVjIHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIHRoaXMgbWF4X2wgbGV2ZWxcbiAgICAgICgoXywgZG9tYWluKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBpZiBsZXZlbCA8IG1heF9sIHRoZW5cbiAgICAgICAgc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgdGhpcyBtYXhfbCAoc3VjYyBsZXZlbCkgYWNjXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAgICAoZnVuIF8gLT4gTGlzdC5yZXZfYXBwZW5kKVxuICAgICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgKHN1Y2MgbGV2ZWwpIGRvbWFpbilcbiAgICAgICAgICAgICBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBuZXdzID1cbiAgICAgICAgbWF0Y2ggc2hhcmluZyB3aXRoXG4gICAgICAgIHwgTm9fc2hhcmluZyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBNYXhfc2hhcmluZyAtPiBpbmZzIHNpZ3MgfmRlYnVnX21vZGUgdGhpcy5lbGVtZW50IGguZWxlbWVudFxuICAgICAgICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT5cbiAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgIChmdW4gciAtPiBpbnRlcnNlY3Rpb24gciB0aGlzLmVsZW1lbnQgaC5lbGVtZW50KVxuICAgICAgICAgICAgKG1hdGNoaW5ncyB+ZGVidWdfbW9kZSBzaWdzIHRoaXMuZWxlbWVudCBoLmVsZW1lbnQpXG4gICAgICBpblxuICAgICAgbGV0IGFjYycgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKG1pZCwgYWNjKSBjYyAtPlxuICAgICAgICAgICAgbGV0IGlkJyA9IHN1Y2MgbWlkIGluXG4gICAgICAgICAgICBsZXQgeCwgXywgXywgaWQgPSBhZGRfY2MgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIGFjYyBpZCcgY2MgaW5cbiAgICAgICAgICAgICggKGlmIGlkID0gaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbWlkKSxcbiAgICAgICAgICAgICAgeCApKVxuICAgICAgICAgIGFjYyBuZXdzXG4gICAgICBpblxuICAgICAgc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgdGhpcyBtYXhfbCBsZXZlbCBhY2MnIHRcblxuICBsZXQgcmVjIHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbWF4X2wgbGV2ZWxcbiAgICAgICgoXywgZG9tYWluKSBhcyBhY2MpID1cbiAgICBpZiBsZXZlbCA8IDIgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBsZXZlbCBkb21haW4gd2l0aFxuICAgICAgfCBOb25lIC0+IHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbWF4X2wgKHByZWQgbGV2ZWwpIGFjY1xuICAgICAgfCBTb21lIGxpc3QgLT5cbiAgICAgICAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIG1heF9sIChwcmVkIGxldmVsKSBhY2NcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgYXV4IChzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBoIG1heF9sIGxldmVsIGFjYyB0KSB0XG4gICAgICAgIGluXG4gICAgICAgIGF1eCBhY2MgKE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIC0+IExpc3QucmV2X2FwcGVuZCkgbGlzdCBbXSlcbiAgICApXG5cbiAgbGV0IHNhdHVyYXRlIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgZG9tYWluID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGRvbWFpbiB3aXRoXG4gICAgfCBOb25lIC0+IDAsIGRvbWFpblxuICAgIHwgU29tZSBsIC0+XG4gICAgICBsZXQgc2kgPVxuICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyBsIG0gLT5cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG0gcCAtPiBtYXggbSBwLnBfaWQpIG0gbCkpXG4gICAgICAgICAgZG9tYWluIDBcbiAgICAgIGluXG4gICAgICAobWF0Y2ggc2hhcmluZyB3aXRoXG4gICAgICB8IE5vX3NoYXJpbmcgLT4gc2ksIGRvbWFpblxuICAgICAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIHwgTWF4X3NoYXJpbmcgLT5cbiAgICAgICAgc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBsIGwgKHNpLCBkb21haW4pKVxuXG4gIGxldCBvZl9lbnYgZW52ID1cbiAgICBsZXQgYWRkX2NjIGFjYyBwID1cbiAgICAgIGxldCB3ID0gd2VpZ2h0IHAuZWxlbWVudCBpblxuICAgICAgbGV0IGhhc2ggPSBjb2Fyc2VfaGFzaCBwLmVsZW1lbnQgaW5cbiAgICAgIGxldCBhY2NfdyA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSB3IGFjYyBpblxuICAgICAgTW9kcy5JbnRNYXAuYWRkIHdcbiAgICAgICAgKE1vZHMuSW50TWFwLmFkZCBoYXNoXG4gICAgICAgICAgIChwIDo6IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbXSBoYXNoIGFjY193KVxuICAgICAgICAgICBhY2NfdylcbiAgICAgICAgYWNjXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJyA9XG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgIChmdW4gcF9pZCBhY2MgcCAtPlxuICAgICAgICAgIGFkZF9jYyBhY2NcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcF9pZDtcbiAgICAgICAgICAgICAgZWxlbWVudCA9IHAuRW52LmNvbnRlbnQ7XG4gICAgICAgICAgICAgIGRlcGVuZGluZyA9IHAuRW52LmRlcHM7XG4gICAgICAgICAgICAgIHJvb3RzID0gcC5FbnYucm9vdHM7XG4gICAgICAgICAgICB9KVxuICAgICAgICBNb2RzLkludE1hcC5lbXB0eSBlbnYuRW52LmRvbWFpblxuICAgIGluXG4gICAge1xuICAgICAgc2lnX2RlY2wgPSBlbnYuRW52LnNpZ19kZWNsO1xuICAgICAgY291bnRlcnNfaW5mbyA9IEVudi5jb3VudGVyc19pbmZvIGVudjtcbiAgICAgIG5iX2lkID0gc3VjYyAoQXJyYXkuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCBtYXgpIDAgZW52LkVudi5pZF9ieV90eXBlKTtcbiAgICAgIGlkX2J5X3R5cGUgPSBlbnYuRW52LmlkX2J5X3R5cGU7XG4gICAgICBkb21haW4gPSBkb21haW4nO1xuICAgICAgdXNlZF9ieV9hX2JlZ2luX25ldyA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgZGVidWdfcHJpbnQgZiBlbnYgPVxuICAgIFBwLmFycmF5IFBwLmNvbW1hXG4gICAgICAoZnVuIHR5IGYgbCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWQ6ICV0XCIgdHkgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiW1wiO1xuICAgICAgICAgICAgUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgYSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiBhKSBmIGw7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXVwiKSlcbiAgICAgIGYgZW52LmlkX2J5X3R5cGU7XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInVzZWRfYnlfYV9iZWdpbl9uZXcgPSAlQkAuXCIgZW52LnVzZWRfYnlfYV9iZWdpbl9uZXdcbmVuZFxuXG4oKiogT3BlcmF0aW9uIHRvIGNyZWF0ZSBjYyAqKVxubGV0IGNoZWNrX2RhbmdsaW5nIHdrID1cbiAgaWYgd2suZGFuZ2xpbmcgPD4gMCB0aGVuXG4gICAgcmFpc2UgKGRhbmdsaW5nX25vZGUgfnNpZ3M6d2suc2lncyB3ay51c2VkX2lkIHdrLmRhbmdsaW5nKVxuXG5sZXQgYmVnaW5fbmV3IGVudiA9IFByZUVudi50b193b3JrIGVudlxuXG5sZXQgZnJlc2hfY2NfaWQgZG9tYWluID1cbiAgc3VjY1xuICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgKGZ1biBfIC0+XG4gICAgICAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPlxuICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gbWF4IGFjYyBwLnBfaWQpIGFjYyB4KSlcbiAgICAgICBkb21haW4gMClcblxubGV0IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbCA/b3JpZ2luIHdrID1cbiAgbGV0ICgpID0gY2hlY2tfZGFuZ2xpbmcgd2sgaW5cbiAgKCogcmVidWlsZCBlbnYgKilcbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIHdrLnJlc2VydmVkX2lkLihpKSA8LSBMaXN0LnJldl9hcHBlbmQgd2sudXNlZF9pZC4oaSkgd2sucmVzZXJ2ZWRfaWQuKGkpKVxuICAgICAgKEFycmF5Lmxlbmd0aCB3ay51c2VkX2lkKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9IEFycmF5Lm1hcCBMaXN0LnJldiB3ay51c2VkX2lkIGluXG4gIGxldCBjY19jYW5kaWRhdGUgPVxuICAgIHtcbiAgICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgICBub2RlcyA9IHdrLmNjX25vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgd2suY2Nfbm9kZXM7XG4gICAgfVxuICBpblxuICBsZXQgcHJlZW52LCByLCBvdXQsIG91dF9pZCA9XG4gICAgUHJlRW52LmFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiB3ay5jY19lbnZcbiAgICAgIChmcmVzaF9jY19pZCB3ay5jY19lbnYpIGNjX2NhbmRpZGF0ZVxuICBpblxuICAoIFByZUVudi5mcmVzaCB3ay5zaWdzIHdrLmNvdW50ZXJzIHdrLnJlc2VydmVkX2lkIHdrLmZyZWVfaWQgcHJlZW52LFxuICAgIHIsXG4gICAgb3V0LFxuICAgIG91dF9pZCApXG5cbmxldCBmaW5pc2hfbmV3IH5kZWJ1Z19tb2RlID9vcmlnaW4gd2sgPVxuICByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6dHJ1ZSA/b3JpZ2luIHdrXG5cbmxldCBuZXdfbGluayB3ayAoKCh4LCBfKSBhcyBuMSksIGkpICgoKHksIF8pIGFzIG4yKSwgaikgPVxuICBsZXQgeF9uID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0geCB3ay5jY19ub2RlcyBpblxuICBsZXQgeV9uID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0geSB3ay5jY19ub2RlcyBpblxuICBtYXRjaCB4X24uKGkpLCB5X24uKGopIHdpdGhcbiAgfCAoVW5TcGVjLCBzdHgpLCAoVW5TcGVjLCBzdHkpIC0+XG4gICAgbGV0ICgpID0geF9uLihpKSA8LSBMaW5rICh5LCBqKSwgc3R4IGluXG4gICAgbGV0ICgpID0geV9uLihqKSA8LSBMaW5rICh4LCBpKSwgc3R5IGluXG4gICAgaWYgd2suZGFuZ2xpbmcgPSB4IHx8IHdrLmRhbmdsaW5nID0geSB0aGVuXG4gICAgICB7IHdrIHdpdGggZGFuZ2xpbmcgPSAwIH1cbiAgICBlbHNlXG4gICAgICB3a1xuICB8ICgoRnJlZSB8IExpbmsgXyksIF8pLCBfIC0+IHJhaXNlIChhbHJlYWR5X3NwZWNpZmllZCB+c2lnczp3ay5zaWdzIG4xIGkpXG4gIHwgXywgKChGcmVlIHwgTGluayBfKSwgXykgLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbjIgailcblxubGV0IG5ld19mcmVlIHdrICgoKHgsIF8pIGFzIG4pLCBpKSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIG1hdGNoIHhfbi4oaSkgd2l0aFxuICB8IFVuU3BlYywgc3QgLT5cbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIEZyZWUsIHN0IGluXG4gICAgd2tcbiAgfCAoRnJlZSB8IExpbmsgXyksIF8gLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbiBpKVxuXG5sZXQgbmV3X2ludGVybmFsX3N0YXRlIHdrICgoKHgsIF8pIGFzIG4pLCBpKSB2YSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIGxldCBsLCBzID0geF9uLihpKSBpblxuICBpZiBzID49IDAgdGhlblxuICAgIHJhaXNlIChhbHJlYWR5X3NwZWNpZmllZCB+c2lnczp3ay5zaWdzIG4gaSlcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0geF9uLihpKSA8LSBsLCB2YSBpblxuICAgIHdrXG4gIClcblxubGV0IG5ld19ub2RlIHdrIHR5cGVfaWQgPVxuICBsZXQgKCkgPSBjaGVja19kYW5nbGluZyB3ayBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgd2suc2lncyB0eXBlX2lkIGluXG4gIG1hdGNoIHdrLnJlc2VydmVkX2lkLih0eXBlX2lkKSB3aXRoXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0ICgpID0gd2sudXNlZF9pZC4odHlwZV9pZCkgPC0gaCA6OiB3ay51c2VkX2lkLih0eXBlX2lkKSBpblxuICAgIGxldCAoKSA9IHdrLnJlc2VydmVkX2lkLih0eXBlX2lkKSA8LSB0IGluXG4gICAgbGV0IG5vZGUgPSBoLCB0eXBlX2lkIGluXG4gICAgKCBub2RlLFxuICAgICAge1xuICAgICAgICBzaWdzID0gd2suc2lncztcbiAgICAgICAgY291bnRlcnMgPSB3ay5jb3VudGVycztcbiAgICAgICAgY2NfZW52ID0gd2suY2NfZW52O1xuICAgICAgICByZXNlcnZlZF9pZCA9IHdrLnJlc2VydmVkX2lkO1xuICAgICAgICB1c2VkX2lkID0gd2sudXNlZF9pZDtcbiAgICAgICAgZnJlZV9pZCA9IHdrLmZyZWVfaWQ7XG4gICAgICAgIGRhbmdsaW5nID1cbiAgICAgICAgICAoaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgd2suY2Nfbm9kZXMgdGhlblxuICAgICAgICAgICAgIDBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGgpO1xuICAgICAgICBjY19ub2RlcyA9IE1vZHMuSW50TWFwLmFkZCBoIChBcnJheS5tYWtlIGFyaXR5IChVblNwZWMsIC0xKSkgd2suY2Nfbm9kZXM7XG4gICAgICB9IClcbiAgfCBbXSAtPlxuICAgIGxldCAoKSA9IHdrLnVzZWRfaWQuKHR5cGVfaWQpIDwtIHdrLmZyZWVfaWQgOjogd2sudXNlZF9pZC4odHlwZV9pZCkgaW5cbiAgICBsZXQgbm9kZSA9IHdrLmZyZWVfaWQsIHR5cGVfaWQgaW5cbiAgICAoIG5vZGUsXG4gICAgICB7XG4gICAgICAgIHNpZ3MgPSB3ay5zaWdzO1xuICAgICAgICBjb3VudGVycyA9IHdrLmNvdW50ZXJzO1xuICAgICAgICBjY19lbnYgPSB3ay5jY19lbnY7XG4gICAgICAgIHJlc2VydmVkX2lkID0gd2sucmVzZXJ2ZWRfaWQ7XG4gICAgICAgIHVzZWRfaWQgPSB3ay51c2VkX2lkO1xuICAgICAgICBmcmVlX2lkID0gc3VjYyB3ay5mcmVlX2lkO1xuICAgICAgICBkYW5nbGluZyA9XG4gICAgICAgICAgKGlmIE1vZHMuSW50TWFwLmlzX2VtcHR5IHdrLmNjX25vZGVzIHRoZW5cbiAgICAgICAgICAgICAwXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB3ay5mcmVlX2lkKTtcbiAgICAgICAgY2Nfbm9kZXMgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCB3ay5mcmVlX2lkIChBcnJheS5tYWtlIGFyaXR5IChVblNwZWMsIC0xKSkgd2suY2Nfbm9kZXM7XG4gICAgICB9IClcblxubGV0IG1pbmltYWxfZW52IH5kZWJ1Z19tb2RlIGVudiBjb250YWN0X21hcCA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHR5IC0+XG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcyBhY2MgKGludHMsIGxpbmtzKSAtPlxuICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgIGxldCB3ID0gbmV3X2ZyZWUgdyAobiwgcykgaW5cbiAgICAgICAgICBsZXQgYWNjJywgXywgXywgXyA9IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3IGluXG4gICAgICAgICAgbGV0IGFjYycnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAgICAgKGZ1biBpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgICAgICAgIGxldCB3ID0gbmV3X2ludGVybmFsX3N0YXRlIHcgKG4sIHMpIGkgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0LCBfLCBfLCBfID1cbiAgICAgICAgICAgICAgICAgIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvdXQpXG4gICAgICAgICAgICAgIGludHMgYWNjJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAgIChmdW4gKHR5JywgcycpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgdyA9IGJlZ2luX25ldyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgICAgIGxldCBuJywgdyA9IG5ld19ub2RlIHcgdHknIGluXG4gICAgICAgICAgICAgIGxldCB3ID0gbmV3X2xpbmsgdyAobiwgcykgKG4nLCBzJykgaW5cbiAgICAgICAgICAgICAgbGV0IG91dCwgXywgXywgXyA9IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3IGluXG4gICAgICAgICAgICAgIGlmIHR5ID0gdHknICYmIHMgPCBzJyB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgdyA9IGJlZ2luX25ldyBvdXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgbiwgdyA9IG5ld19ub2RlIHcgdHkgaW5cbiAgICAgICAgICAgICAgICBsZXQgdyA9IG5ld19saW5rIHcgKG4sIHMpIChuLCBzJykgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0JywgXywgXywgXyA9XG4gICAgICAgICAgICAgICAgICByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6ZmFsc2Ugd1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgb3V0J1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBvdXQpXG4gICAgICAgICAgICBsaW5rcyBhY2MnJykpXG4gICAgZW52IGNvbnRhY3RfbWFwXG5cbmxldCBmb2xkX2J5X3R5cGUgZiBjYyBhY2MgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBhZ2VudF90eXBlIGFjYyBsaXN0X3BvcyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgcG9zIC0+XG4gICAgICAgICAgbGV0IGludGYgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBwb3MgY2Mubm9kZXMgaW5cbiAgICAgICAgICBmIH5wb3MgfmFnZW50X3R5cGUgaW50ZiBhY2MpXG4gICAgICAgIGFjYyBsaXN0X3BvcylcbiAgICBhY2MgY2Mubm9kZXNfYnlfdHlwZVxuXG5sZXQgZm9sZCBmIGNjIGFjYyA9IE1vZHMuSW50TWFwLmZvbGQgZiBjYy5ub2RlcyBhY2NcblxubGV0IGZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIGVudiBjb250YWN0X21hcCA9XG4gIGxldCBzaWdzID0gUHJlRW52LnNpZ3MgZW52IGluXG4gIGxldCBlbnYgPSBtaW5pbWFsX2VudiB+ZGVidWdfbW9kZSBlbnYgY29udGFjdF9tYXAgaW5cbiAgbGV0IHNpLCBjb21wbGV0ZV9kb21haW4gPVxuICAgIFByZUVudi5zYXR1cmF0ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGVudi5QcmVFbnYuZG9tYWluXG4gIGluXG4gIGxldCBkb21haW4gPSBBcnJheS5tYWtlIChzdWNjIHNpKSAoUHJlRW52LmVtcHR5X3BvaW50IGVudi5QcmVFbnYuc2lnX2RlY2wpIGluXG4gIGxldCBzaW5nbGVzID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IDEgY29tcGxldGVfZG9tYWluIGluXG4gIGxldCBlbGVtZW50YXJpZXMgPSBQcmVFbnYuZmlsbF9lbGVtIGVudi5QcmVFbnYuc2lnX2RlY2wgc2luZ2xlcyBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+XG4gICAgICAgICAgICBkb21haW4uKHgucF9pZCkgPC1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0geC5lbGVtZW50O1xuICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgRW52LmRlcHMgPSB4LmRlcGVuZGluZztcbiAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSB4LnJvb3RzO1xuICAgICAgICAgICAgICB9KSlcbiAgICAgIHNpbmdsZXNcbiAgaW5cbiAgbGV0IHN0YXRfbmF2X3N0ZXBzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGxldmVsIGRvbWFpbl9sZXZlbCBhY2NfbGV2ZWwgLT5cbiAgICAgICAgaWYgbGV2ZWwgPD0gMSB0aGVuXG4gICAgICAgICAgYWNjX2xldmVsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAoZnVuIF8gbCBhY2MgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGFjYyB4IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBkb21haW4uKHgucF9pZCkgPC1cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYuY29udGVudCA9IHguZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSB4LnJvb3RzO1xuICAgICAgICAgICAgICAgICAgICAgICAgRW52LmRlcHMgPSB4LmRlcGVuZGluZztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAoZnVuIF8gbGwgYWNjbCAtPlxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgZS5lbGVtZW50IHguZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5qcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBpbmpfZV94IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZUVudi5pbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5QcmVFbnYuaWRfYnlfdHlwZSBlbnYuUHJlRW52Lm5iX2lkIGRvbWFpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucF9pZCB4LmVsZW1lbnQgaW5qX2VfeCBlLnBfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgaW5qcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2wgbGwpXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZXMgYWNjKVxuICAgICAgICAgICAgICAgIGFjYyBsKVxuICAgICAgICAgICAgZG9tYWluX2xldmVsIGFjY19sZXZlbClcbiAgICAgIGNvbXBsZXRlX2RvbWFpbiAwXG4gIGluXG4gIGxldCBsZXZlbDAgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgMCBjb21wbGV0ZV9kb21haW4gaW5cbiAgbGV0IHNpbmdsZV9hZ2VudF9wb2ludHMgPVxuICAgIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBlbnYuUHJlRW52LmlkX2J5X3R5cGUpIE5vbmVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IHAuZWxlbWVudCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAoXywgdHkpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgZG9tYWluLihwLnBfaWQpIDwtXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0gcC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSBwLnJvb3RzO1xuICAgICAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHAuZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgICAgICBFbnYuc29ucyA9IFtdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzaW5nbGVfYWdlbnRfcG9pbnRzLih0eSkgPC0gU29tZSAocC5wX2lkLCBwLmRlcGVuZGluZykpKVxuICAgICAgbGV2ZWwwXG4gIGluXG4gICgge1xuICAgICAgRW52LnNpZ19kZWNsID0gZW52LlByZUVudi5zaWdfZGVjbDtcbiAgICAgIEVudi5jb3VudGVyc19pbmZvID0gZW52LlByZUVudi5jb3VudGVyc19pbmZvO1xuICAgICAgRW52LmlkX2J5X3R5cGUgPSBlbnYuUHJlRW52LmlkX2J5X3R5cGU7XG4gICAgICBFbnYubWF4X29icyA9IGZyZXNoX2NjX2lkIGVudi5QcmVFbnYuZG9tYWluO1xuICAgICAgRW52LmRvbWFpbjtcbiAgICAgIEVudi5lbGVtZW50YXJpZXM7XG4gICAgICBFbnYuc2luZ2xlX2FnZW50X3BvaW50cztcbiAgICB9LFxuICAgIHsgc3RhdF9ub2RlcyA9IHNpOyBQcmVFbnYuc3RhdF9uYXZfc3RlcHMgfSApXG5cbmxldCBtZXJnZV9vbl9pbmYgfmRlYnVnX21vZGUgZW52IG0gZzEgZzIgPVxuICBsZXQgbV9saXN0ID0gUmVuYW1pbmcudG9fbGlzdCBtIGluXG4gIGxldCByb290MSwgcm9vdDIgPSBMaXN0LmhkIG1fbGlzdCBpblxuICBsZXQgcGFpcmluZyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChhLCBiKSAtPiBNb2RzLkludDJTZXQuYWRkIChhLCBiKSBhY2MpXG4gICAgICBNb2RzLkludDJTZXQuZW1wdHkgbV9saXN0XG4gIGluXG4gIGxldCBwb3NzaWJpbGl0aWVzID0gcmVmIHBhaXJpbmcgaW5cbiAgbWF0Y2hcbiAgICBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+cG9zc2liaWxpdGllcyB+c3RyaWN0OmZhbHNlIHJvb3QxIGcxIHJvb3QyIGcyXG4gIHdpdGhcbiAgfCBTb21lIG0nLCBfIC0+XG4gICAgbGV0IF8sIHB1c2hvdXQgPVxuICAgICAgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSBlbnYuUHJlRW52LmlkX2J5X3R5cGUgZW52LlByZUVudi5uYl9pZCBtJyBnMVxuICAgICAgICBnMlxuICAgIGluXG4gICAgU29tZSBwdXNob3V0LCBOb25lXG4gIHwgTm9uZSwgY29uZmxpY3QgLT4gTm9uZSwgY29uZmxpY3RcblxubGV0IGxlbmd0aCBjYyA9IE1vZHMuSW50TWFwLnNpemUgY2Mubm9kZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IFJlbmFtaW5nLnQgTW9kcy5JbnRNYXAudCAqIE1vZHMuSW50U2V0LnRcbigqIChtYXAsc2V0KVxuICAgbWFwOiBwb2ludF9pIC0+IChub2RlX2ooaSkgLT4gaWRfbm9kZV9ncmFwaF9pbl9jdXJyZW50X21hdGNoaW5nKVxuICAgc2V0OmNvZG9tYWluIG9mIGN1cnJlbnQgbWF0Y2hpbmcgKilcblxudHlwZSBtYXRjaGluZyA9IHRcblxubGV0IGVtcHR5ID0gTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50U2V0LmVtcHR5XG5cbmxldCBhZGRfY2MgKGluaiwgY28pIGlkIHIgPVxuICBsZXQgYyA9IFJlbmFtaW5nLmltYWdlIHIgaW5cbiAgbWF0Y2ggTW9kcy5JbnRTZXQuZGlzam9pbnRfdW5pb24gY28gYyB3aXRoXG4gIHwgU29tZSBjbycgLT4gU29tZSAoTW9kcy5JbnRNYXAuYWRkIGlkIHIgaW5qLCBjbycpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBkZWJ1Z19wcmludCBmIChtLCBfY28pID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbKCVhKUBdXCJcbiAgICAoUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLmNvbW1hIChmdW4gZiAoY2NpZCwgbm0pIC0+XG4gICAgICAgICBQcC5zZXQgUmVuYW1pbmcudG9fbGlzdCBQcC5jb21tYVxuICAgICAgICAgICAoZnVuIGYgKG5vZGUsIGRzdCkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVpLT4laVwiIGNjaWQgbm9kZSBkc3QpXG4gICAgICAgICAgIGYgbm0pKVxuICAgIG1cblxubGV0IHJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjY19pZCByb290ID1cbiAgbGV0IHBvaW50ID0gUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY19pZCBpblxuICBtYXRjaCBQYXR0ZXJuLkVudi5yb290cyBwb2ludCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk1hdGNoaW5nLnJlY29uc3RydWN0IGNjIGVycm9yXCJcbiAgKCotIHJtIC0gYWRkIDogaW50IC0+IGludCAtPiBSZW5hbWluZy50IC0+IFJlbmFtaW5nLnQgKilcbiAgfCBTb21lIChyaWRzLCBydHkpIC0+XG4gICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgbGV0IF8sIGluamVjdGl2ZSA9XG4gICAgICBtYXRjaCBQYXR0ZXJuLnJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gKFBhdHRlcm4uRW52LmNvbnRlbnQgcG9pbnQpIHdpdGhcbiAgICAgIHwgXyA6OiBfIGFzIG5hdiAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKHJvb3QsIGluamVjdGl2ZSkgbmF2IC0+XG4gICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgIGluamVjdGl2ZVxuICAgICAgICAgICAgICAmJiBOYXZpZ2F0aW9uLmltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGhcbiAgICAgICAgICAgICAgICAgICBuYXYgKSlcbiAgICAgICAgICAoU29tZSAocm9vdCwgcnR5KSwgdHJ1ZSlcbiAgICAgICAgICBuYXZcbiAgICAgICgqLSBybSAtIGZpbmRfcm9vdDogY2MgLT4gKHR5cGUsIG5vZGUpIG9wdGlvbiAqKVxuICAgICAgfCBbXSAtPlxuICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgKG1hdGNoIHJpZHMgd2l0aFxuICAgICAgICAgIHwgWyByaWQgXSAtPiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSByaWQgcm9vdCBpbmpcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpIClcbiAgICBpblxuICAgIGlmIGluamVjdGl2ZSB0aGVuXG4gICAgICBpbmpcbiAgICBlbHNlXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJNYXRjaGluZy5yZWNvbnN0cnVjdCByZW5hbWluZyBlcnJvciBhdCByb290IFwiIF4gc3RyaW5nX29mX2ludCByb290KVxuXG4oKiByZWNvbnN0cnVjdDogUGF0dGVybi5FbnYudCAtPiBFZGdlcy50IC0+IHQgLT4gaW50IC0+IFBhdHRlcm4uaWQgLT5cbiAgIGludCAtPiB0IG9wdGlvbiopXG5sZXQgcmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGluaiBpZCBjY19pZCByb290ID1cbiAgbGV0IHJlbmFtZSA9IHJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjY19pZCByb290IGluXG4gIG1hdGNoIE1vZHMuSW50U2V0LmRpc2pvaW50X3VuaW9uIChSZW5hbWluZy5pbWFnZSByZW5hbWUpIChzbmQgaW5qKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBjbyAtPiBTb21lIChNb2RzLkludE1hcC5hZGQgaWQgcmVuYW1lIChmc3QgaW5qKSwgY28pXG5cbmxldCByZWMgYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggcm9vdCBpbmogPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBoIDo6IHQgLT5cbiAgICBOYXZpZ2F0aW9uLmltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggaFxuICAgICYmIGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIE5vbmUgaW5qIHRcblxubGV0IGlzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoICgoXywgcnR5KSBhcyByb290KSBjY19pZCA9XG4gIGxldCBwb2ludCA9IFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NfaWQgaW5cbiAgbWF0Y2ggUGF0dGVybi5yZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIChQYXR0ZXJuLkVudi5jb250ZW50IHBvaW50KSB3aXRoXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICAgIHwgU29tZSAoXywgcnR5JykgLT4gcnR5ID0gcnR5J1xuICAgIHwgTm9uZSAtPiBmYWxzZSlcbiAgfCBuYXYgLT4gYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggKFNvbWUgcm9vdCkgKFJlbmFtaW5nLmVtcHR5ICgpKSBuYXZcblxubGV0IHJvb3RzX29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjYyA9XG4gIEVkZ2VzLmFsbF9hZ2VudHNfd2hlcmVcbiAgICAoZnVuIHggLT4gaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggeCBjYylcbiAgICBncmFwaFxuXG4oKiBnZXQgOiAoQ29udGVudEFnZW50LnQgKiBpbnQpIC0+IHQgLT4gaW50ICopXG5sZXQgZ2V0IH5kZWJ1Z19tb2RlICgobm9kZSwgXyksIGlkKSAodCwgXykgPVxuICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFJlbmFtaW5nLmR1bW15IGlkIHQpIG5vZGVcblxubGV0IGVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIGNjcyAodCwgXykgPVxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSAoTW9kcy5JbnRNYXAuc2l6ZSB0KSBbXSBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gaWQgbWFwIC0+XG4gICAgICAgIG91dC4oaWQpIDwtXG4gICAgICAgICAgUmVuYW1pbmcuZm9sZFxuICAgICAgICAgICAgKGZ1biBpIG91dCBhY2MgLT5cbiAgICAgICAgICAgICAgKCBvdXQsXG4gICAgICAgICAgICAgICAgUGF0dGVybi5maW5kX3R5XG4gICAgICAgICAgICAgICAgICAoUGF0dGVybi5FbnYuY29udGVudCAoUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY3MuKGlkKSkpXG4gICAgICAgICAgICAgICAgICBpIClcbiAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgbWFwIFtdKVxuICAgICAgdFxuICBpblxuICBvdXRcblxubW9kdWxlIENhY2hlID0gc3RydWN0XG4gIHR5cGUgdCA9IFBhdHRlcm4uaWQgKiAoaW50ICogaW50KSBvcHRpb25cblxuICBsZXQgY29tcGFyZSAoYSwgYScpIChiLCBiJykgPVxuICAgIGxldCBjID0gUGF0dGVybi5jb21wYXJlX2Nhbm9uaWNhbHMgYSBiIGluXG4gICAgaWYgYyA9IDAgdGhlbiAoXG4gICAgICBtYXRjaCBhJywgYicgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IDBcbiAgICAgIHwgTm9uZSwgU29tZSBfIC0+IDFcbiAgICAgIHwgU29tZSBfLCBOb25lIC0+IC0xXG4gICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IE1vZHMuaW50X3BhaXJfY29tcGFyZSB4IHlcbiAgICApIGVsc2VcbiAgICAgIGNcblxuICBsZXQgcHJpbnQgZiAoYSwgYScpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVyczp0cnVlID9kb21haW46Tm9uZSB+d2l0aF9pZDp0cnVlKVxuICAgICAgYVxuICAgICAgKFBwLm9wdGlvbiAoUHAucGFpciBGb3JtYXQucHBfcHJpbnRfaW50IEZvcm1hdC5wcF9wcmludF9pbnQpKVxuICAgICAgYSdcbmVuZFxuXG5tb2R1bGUgQ2FjaGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoQ2FjaGUpXG5cbnR5cGUgY2FjaGUgPSBDYWNoZVNldE1hcC5TZXQudFxuXG5sZXQgZW1wdHlfY2FjaGUgPSBDYWNoZVNldE1hcC5TZXQuZW1wdHlcblxubGV0IHN1cnZpdmVfbmF2IH5kZWJ1Z19tb2RlIGluaiBncmFwaCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBpbmogc3RlcCAtPlxuICAgICAgbWF0Y2ggaW5qIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbmpcbiAgICAgIHwgU29tZSBpbmogLT5cbiAgICAgICAgTmF2aWdhdGlvbi5pbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UgfmRlYnVnX21vZGUgaW5qIGdyYXBoIHN0ZXApXG4gICAgKFNvbWUgaW5qKVxuXG4oKmVkZ2VzOiBsaXN0IG9mIGNvbmNyZXRlIGVkZ2VzLFxuICAgIHJldHVybnMgdGhlIHJvb3RzIG9mIG9ic2VydmFibGVzIHRoYXQgYXJlIGFib3ZlIGluIHRoZSBkb21haW4qKVxubGV0IGZyb21fZWRnZSB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggKChvdXQsIGNhY2hlKSBhcyBhY2MpIG5vZGUgc2l0ZSBhcnJvdyA9XG4gIGxldCByZWMgYXV4X2Zyb21fZWRnZXMgY2FjaGUgKChvYnMsIHJldl9kZXBzKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjYywgY2FjaGVcbiAgICB8IChwaWQsIHBvaW50LCBpbmpfcG9pbnQyZ3JhcGgpIDo6IHJlbWFpbnMgLT5cbiAgICAgIGxldCBhY2MnID1cbiAgICAgICAgbWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSAoaWRzLCB0eSkgLT5cbiAgICAgICAgICAoIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gYWNjIGlkIC0+XG4gICAgICAgICAgICAgICAgKHBpZCwgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGlual9wb2ludDJncmFwaCBpZCwgdHkpKVxuICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgb2JzIGlkcyxcbiAgICAgICAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZXZfZGVwcyAoUGF0dGVybi5FbnYuZGVwcyBwb2ludCkgKVxuICAgICAgaW5cbiAgICAgIGxldCByZW1haW5zJywgY2FjaGUnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuICgocmUsIGNhKSBhcyBwYWlyKSBzb24gLT5cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIHN1cnZpdmVfbmF2IH5kZWJ1Z19tb2RlIGlual9wb2ludDJncmFwaCBncmFwaCBzb24uUGF0dGVybi5FbnYubmV4dFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHBhaXJcbiAgICAgICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgICAgIGxldCByZW5hbWUgPVxuICAgICAgICAgICAgICAgIFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2Ugc29uLlBhdHRlcm4uRW52LmluaiBpbmonXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBjYScgPVxuICAgICAgICAgICAgICAgIENhY2hlU2V0TWFwLlNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChzb24uUGF0dGVybi5FbnYuZHN0LCBSZW5hbWluZy5taW5fZWx0IHJlbmFtZSlcbiAgICAgICAgICAgICAgICAgIGNhXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIGNhID09IGNhJyB0aGVuXG4gICAgICAgICAgICAgICAgcGFpclxuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcCcgPSBQYXR0ZXJuLkVudi5nZXQgZG9tYWluIHNvbi5QYXR0ZXJuLkVudi5kc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHNvbi5QYXR0ZXJuLkVudi5kc3QsIHAnLCByZW5hbWUgaW5cbiAgICAgICAgICAgICAgICBuZXh0IDo6IHJlLCBjYSdcbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAocmVtYWlucywgY2FjaGUpIChQYXR0ZXJuLkVudi5zb25zIHBvaW50KVxuICAgICAgaW5cbiAgICAgIGF1eF9mcm9tX2VkZ2VzIGNhY2hlJyBhY2MnIHJlbWFpbnMnXG4gIGluXG4gIG1hdGNoIFBhdHRlcm4uRW52LmdldF9lbGVtZW50YXJ5IH5kZWJ1Z19tb2RlIGRvbWFpbiBub2RlIHNpdGUgYXJyb3cgd2l0aFxuICB8IE5vbmUgLT4gYWNjXG4gIHwgU29tZSB4IC0+XG4gICAgYXV4X2Zyb21fZWRnZXNcbiAgICAgICgqKCp1bm5lY2Vzc2FyeSopQ2FjaGVTZXRNYXAuU2V0LmFkZCAoY2NfaWQsUmVuYW1pbmcubWluX2VsdCBpbmonKSopXG4gICAgICBjYWNoZSBvdXQgWyB4IF1cblxubGV0IG9ic2VydmFibGVzX2Zyb21fYWdlbnQgZG9tYWluIGdyYXBoICgoKG9icywgcmRlcHMpLCBjYWNoZSkgYXMgYWNjKVxuICAgICgoXywgdHkpIGFzIG5vZGUpID1cbiAgaWYgRWRnZXMuaXNfYWdlbnQgbm9kZSBncmFwaCB0aGVuIChcbiAgICBtYXRjaCBQYXR0ZXJuLkVudi5nZXRfc2luZ2xlX2FnZW50IHR5IGRvbWFpbiB3aXRoXG4gICAgfCBTb21lIChjYywgZGVwcykgLT5cbiAgICAgICgoY2MsIG5vZGUpIDo6IG9icywgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJkZXBzIGRlcHMpLCBjYWNoZVxuICAgIHwgTm9uZSAtPiBhY2NcbiAgKSBlbHNlXG4gICAgYWNjXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgPVxuICBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgTmF2aWdhdGlvbi5Ub05vdGhpbmdcblxubGV0IG9ic2VydmFibGVzX2Zyb21faW50ZXJuYWwgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgaWQgPVxuICBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgKE5hdmlnYXRpb24uVG9JbnRlcm5hbCBpZClcblxubGV0IG9ic2VydmFibGVzX2Zyb21fbGluayB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggYWNjIG4gc2l0ZSBuJyBzaXRlJyA9XG4gIGZyb21fZWRnZSBkb21haW4gfmRlYnVnX21vZGUgZ3JhcGggYWNjIG4gc2l0ZVxuICAgIChOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCBuJywgc2l0ZScpKVxuXG5tb2R1bGUgQWdlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRXhpc3Rpbmcgb2YgQWdlbnQudCAqIGludCB8IEZyZXNoIG9mIGludCAqIGludCAoKiB0eXBlLCBpZCAqKVxuXG4gIGxldCByZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCcpIGFzIHggLT5cbiAgICAgIGlmIGlkIDw+IGlkJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbicgPSBBZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaW5qIG4gaW5cbiAgICAgICAgaWYgbiA9PSBuJyB0aGVuXG4gICAgICAgICAgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgRXhpc3RpbmcgKG4nLCBpZCcpXG4gICAgICApXG4gICAgfCBGcmVzaCBfIGFzIHggLT4geFxuXG4gIGxldCBwcmludCA/c2lncyBmID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS8qJWkqL1wiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBuIGlkXG4gICAgfCBGcmVzaCAodHksIGkpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEvKiV0ICVpKi9cIlxuICAgICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50XG4gICAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICB0eSBQcC5udSBpXG5cbiAgbGV0IHByaW50X3NpdGUgP3NpZ3MgcGxhY2UgZiBzaXRlID1cbiAgICBtYXRjaCBwbGFjZSB3aXRoXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBuIGYgc2l0ZVxuICAgIHwgRnJlc2ggKHR5LCBfKSAtPlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBzaXRlXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5IGYgc2l0ZSlcblxuICBsZXQgcHJpbnRfaW50ZXJuYWwgP3NpZ3MgcGxhY2Ugc2l0ZSBmIGlkID1cbiAgICBtYXRjaCBwbGFjZSB3aXRoXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgbiBzaXRlIGYgaWRcbiAgICB8IEZyZXNoICh0eSwgXykgLT5cbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWl+JWlcIiBzaXRlIGlkXG4gICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIHR5IHNpdGUgZiAoU29tZSBpZCkpXG5cbiAgbGV0IGdldF90eXBlID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBfKSAtPiBBZ2VudC5zb3J0IG5cbiAgICB8IEZyZXNoIChpLCBfKSAtPiBpXG5cbiAgbGV0IGdldF9pZCA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQuaWQgblxuICAgIHwgRnJlc2ggKF8sIGkpIC0+IGlcblxuICBsZXQgaXNfZnJlc2ggPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgXyAtPiBmYWxzZVxuICAgIHwgRnJlc2ggXyAtPiB0cnVlXG5cbiAgbGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgKGlual9ub2RlcywgaW5qX2ZyZXNoKSA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQpIC0+IGdldCB+ZGVidWdfbW9kZSAobiwgaWQpIGlual9ub2RlcywgQWdlbnQuc29ydCBuXG4gICAgfCBGcmVzaCAodHksIGlkKSAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIGlual9mcmVzaCB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4LCB0eVxuICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgdG9feW9qc29uID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCB0eSkgLT5cbiAgICAgIChgQXNzb2NcbiAgICAgICAgIFtcbiAgICAgICAgICAgKCBcIkV4aXN0aW5nXCIsXG4gICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgYEFzc29jIFsgXCJhZ2VudFwiLCBBZ2VudC50b19qc29uIG4gXTsgYEFzc29jIFsgXCJ0eXBlXCIsIGBJbnQgdHkgXTtcbiAgICAgICAgICAgICAgIF0gKTtcbiAgICAgICAgIF1cbiAgICAgICAgOiBZb2pzb24uQmFzaWMudClcbiAgICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgICBgQXNzb2MgWyBcIkZyZXNoXCIsIGBBc3NvYyBbIFwiaWRcIiwgYEludCBpZDsgXCJ0eXBlXCIsIGBJbnQgdHkgXSBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJFeGlzdGluZ1wiLCBgTGlzdCBsaXN0KSBdIC0+XG4gICAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFsgYEFzc29jIFsgKFwiYWdlbnRcIiwgYSkgXTsgYEFzc29jIFsgKFwidHlwZVwiLCBgSW50IHR5KSBdIF0gLT5cbiAgICAgICAgRXhpc3RpbmcgKEFnZW50Lm9mX2pzb24gYSwgdHkpXG4gICAgICB8IHggOjogXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuICAgICAgfCBbXSAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIGBOdWxsKSkpXG4gICAgfCBgQXNzb2MgWyAoXCJGcmVzaFwiLCBhKSBdIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJ0eXBlXCIsIGBJbnQgdHkpIF0gLT4gRnJlc2ggKGlkLCB0eSlcbiAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhZ2VudF9uYW1lID0gaW50XG50eXBlIHNpdGVfbmFtZSA9IGludFxudHlwZSBpbnRlcm5hbF9zdGF0ZSA9IGludFxudHlwZSBiaW5kaW5nX3R5cGUgPSBhZ2VudF9uYW1lICogc2l0ZV9uYW1lXG50eXBlIGFic3RyYWN0ID0gTWF0Y2hpbmcuQWdlbnQudFxudHlwZSBjb25jcmV0ZSA9IEFnZW50LnRcbnR5cGUgJ2Egc2l0ZSA9ICdhICogc2l0ZV9uYW1lXG5cbnR5cGUgJ2EgdGVzdCA9XG4gIHwgSXNfSGVyZSBvZiAnYVxuICB8IEhhc19JbnRlcm5hbCBvZiAnYSBzaXRlICogaW50ZXJuYWxfc3RhdGVcbiAgfCBJc19GcmVlIG9mICdhIHNpdGVcbiAgfCBJc19Cb3VuZCBvZiAnYSBzaXRlXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSBvZiAnYSBzaXRlICogYmluZGluZ190eXBlXG4gIHwgSXNfQm91bmRfdG8gb2YgJ2Egc2l0ZSAqICdhIHNpdGVcblxudHlwZSAnYSBhY3Rpb24gPVxuICB8IENyZWF0ZSBvZiAnYSAqIChzaXRlX25hbWUgKiBpbnRlcm5hbF9zdGF0ZSBvcHRpb24pIGxpc3QgKCogcG91cnF1b2kgw6dhICopXG4gIHwgTW9kX2ludGVybmFsIG9mICdhIHNpdGUgKiBpbnRlcm5hbF9zdGF0ZVxuICB8IEJpbmQgb2YgJ2Egc2l0ZSAqICdhIHNpdGVcbiAgfCBCaW5kX3RvIG9mICdhIHNpdGUgKiAnYSBzaXRlXG4gIHwgRnJlZSBvZiAnYSBzaXRlXG4gIHwgUmVtb3ZlIG9mICdhXG5cbigqIFRoZSBzZW1hbnRpY3Mgb2YgY29uY3JldGUgYWN0aW9ucyBzZWVtcyB0byBiZSB0aGUgZm9sbG93aW5nIG9uZS5cblxuICAgLSBXaGVuIGFuIGFnZW50IGlzIHJlbW92ZWQsIG5vIG90aGVyIGFjdGlvbiBpcyBzdG9yZWQgYWJvdXQgaXQgKGluY2x1ZGluZyBib25kIHJlbGVhc2luZykuXG4gICAtIENyZWF0ZWQgYWdlbnRzIGFyZSBjcmVhdGVkIHdpdGhvdXQgZGVmYXVsdCBiaW5kaW5nL2ludGVybmFsIHN0YXRlcy5cbiAgIC0gQm9uZHMgYXJlIGluc2VydGVkIHRoYW5rcyB0byB0d28gc3ltbWV0cmljIGFjdGlvbnMgKEJpbmRfdG8gLi4uKSAqKVxuXG5sZXQgd2VpZ2h0IGFjdGlvbiA9XG4gIG1hdGNoIGFjdGlvbiB3aXRoXG4gIHwgQ3JlYXRlIF8gLT4gMVxuICB8IE1vZF9pbnRlcm5hbCBfIHwgQmluZCBfIHwgQmluZF90byBfIHwgRnJlZSBfIC0+IDJcbiAgfCBSZW1vdmUgXyAtPiAwXG5cbmxldCB3ZWlnaHRfcmV2ZXJzZSBhY3Rpb24gPVxuICBtYXRjaCBhY3Rpb24gd2l0aFxuICB8IENyZWF0ZSBfIC0+IDFcbiAgfCBNb2RfaW50ZXJuYWwgXyB8IEJpbmQgXyB8IEJpbmRfdG8gXyB8IEZyZWUgXyAtPiAwXG4gIHwgUmVtb3ZlIF8gLT4gMlxuXG5sZXQgc29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdCA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0IDJcbmxldCBzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0X3JldmVyc2UgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodF9yZXZlcnNlIDJcbmxldCBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0ID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHQgMlxubGV0IHNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3RfcmV2ZXJzZSA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0X3JldmVyc2UgMlxuXG50eXBlICdhIGJpbmRpbmdfc3RhdGUgPVxuICB8IEFOWVxuICB8IEZSRUVcbiAgfCBCT1VORFxuICB8IEJPVU5EX1RZUEUgb2YgYmluZGluZ190eXBlXG4gIHwgQk9VTkRfdG8gb2YgJ2Egc2l0ZVxuXG50eXBlICdhIGV2ZW50ID0ge1xuICB0ZXN0czogJ2EgdGVzdCBsaXN0IGxpc3Q7XG4gIGFjdGlvbnM6ICdhIGFjdGlvbiBsaXN0O1xuICBzaWRlX2VmZmVjdHNfc3JjOiAoJ2Egc2l0ZSAqICdhIGJpbmRpbmdfc3RhdGUpIGxpc3Q7XG4gIHNpZGVfZWZmZWN0c19kc3Q6ICdhIHNpdGUgbGlzdDtcbiAgY29ubmVjdGl2aXR5X3Rlc3RzOiAnYSB0ZXN0IGxpc3Q7XG59XG5cbmxldCBlbXB0eV9ldmVudCA9XG4gIHtcbiAgICB0ZXN0cyA9IFtdO1xuICAgIGFjdGlvbnMgPSBbXTtcbiAgICBzaWRlX2VmZmVjdHNfc3JjID0gW107XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9IFtdO1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9IFtdO1xuICB9XG5cbmxldCBjb25jcmV0aXplX2JpbmRpbmdfc3RhdGUgfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gQU5ZXG4gIHwgRlJFRSAtPiBGUkVFXG4gIHwgQk9VTkQgLT4gQk9VTkRcbiAgfCBCT1VORF9UWVBFIGJ0IC0+IEJPVU5EX1RZUEUgYnRcbiAgfCBCT1VORF90byAocGwsIHMpIC0+XG4gICAgQk9VTkRfdG8gKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuXG5sZXQgY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBwbCAtPiBJc19IZXJlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbClcbiAgfCBIYXNfSW50ZXJuYWwgKChwbCwgcyksIGkpIC0+XG4gICAgSGFzX0ludGVybmFsICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCBpKVxuICB8IElzX0ZyZWUgKHBsLCBzKSAtPlxuICAgIElzX0ZyZWUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICB8IElzX0JvdW5kIChwbCwgcykgLT5cbiAgICBJc19Cb3VuZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKHBsLCBzKSwgdCkgLT5cbiAgICBIYXNfQmluZGluZ190eXBlICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCB0KVxuICB8IElzX0JvdW5kX3RvICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgSXNfQm91bmRfdG9cbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcblxubGV0IGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChwbCwgaSkgLT5cbiAgICBDcmVhdGUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBpKVxuICB8IE1vZF9pbnRlcm5hbCAoKHBsLCBzKSwgaSkgLT5cbiAgICBNb2RfaW50ZXJuYWwgKChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksIGkpXG4gIHwgQmluZCAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIEJpbmRcbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcbiAgfCBCaW5kX3RvICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgQmluZF90b1xuICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwnLCBzJykgKVxuICB8IEZyZWUgKHBsLCBzKSAtPiBGcmVlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgfCBSZW1vdmUgcGwgLT4gUmVtb3ZlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbClcblxubGV0IHRyeV9jb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYWN0aW9ucyA9XG4gIHRyeSBTb21lIChjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYWN0aW9ucylcbiAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuKCogVGhlIGFjdGlvbiBpcyBkZWFsaW5nIHdpdGggYSBmcmVzaCBhZ2VudCAqKVxuXG5sZXQgY29uY3JldGl6ZV9ldmVudCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0Lm1hcCAoTGlzdC5yZXZfbWFwIChjb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGUgaW5qMmdyYXBoKSkgZS50ZXN0cztcbiAgICBhY3Rpb25zID1cbiAgICAgICgqIGFjdGlvbnMgYXJlIHJlb3JkZXJlZCB0aGUgZm9sbG93aW5nIHdheTpcbiAgICAgICAgIDEpIFJlbW92ZSBhY3Rpb25zXG4gICAgICAgICAyKSBDcmVhdGlvbiBhY3Rpb25zXG4gICAgICAgICAzKSBBbnl0aGluZyBlbHNlLiopXG4gICAgICBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0XG4gICAgICAgIChMaXN0LnJldl9tYXAgKGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCkgZS5hY3Rpb25zKTtcbiAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuICgocGwsIHMpLCBiKSAtPlxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgICAgIGNvbmNyZXRpemVfYmluZGluZ19zdGF0ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYiApKVxuICAgICAgICBlLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAocGwsIHMpIC0+IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICAgICAgICBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3QucmV2X21hcCAoY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCkgZS5jb25uZWN0aXZpdHlfdGVzdHM7XG4gIH1cblxubGV0IG1hcF90ZXN0IGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYVxuICB8IEhhc19JbnRlcm5hbCAoKGEsIF8pLCBfKVxuICB8IElzX0ZyZWUgKGEsIF8pXG4gIHwgSXNfQm91bmQgKGEsIF8pXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKGEsIF8pLCBfKVxuICB8IElzX0JvdW5kX3RvICgoYSwgXyksIF8pIC0+XG4gICAgZiBhXG5cbmxldCBtYXBfYWN0aW9uIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYSwgXylcbiAgfCBNb2RfaW50ZXJuYWwgKChhLCBfKSwgXylcbiAgfCBCaW5kICgoYSwgXyksIF8pXG4gIHwgQmluZF90byAoKGEsIF8pLCBfKVxuICB8IEZyZWUgKGEsIF8pXG4gIHwgUmVtb3ZlIGEgLT5cbiAgICBmIGFcblxubGV0IG1hdGNoX3Rlc3RzID0gZnVuY3Rpb25cbiAgKCogYWJzdHJhY3QsIGNvbmNyZXRlKilcbiAgfCBJc19IZXJlIGEsIElzX0hlcmUgYiAtPiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gIHwgSGFzX0ludGVybmFsICgoYSwgcyksIGkpLCBIYXNfSW50ZXJuYWwgKChiLCB0KSwgaikgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0ICYmIGkgPSBqXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKGEsIHMpLCBjKSwgSGFzX0JpbmRpbmdfdHlwZSAoKGIsIHQpLCBkKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHQgJiYgYyA9IGRcbiAgfCBJc19GcmVlIChhLCBzKSwgSXNfRnJlZSAoYiwgdCkgfCBJc19Cb3VuZCAoYSwgcyksIElzX0JvdW5kIChiLCB0KSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHRcbiAgfCBJc19Cb3VuZF90byAoKGEsIHMpLCAoYywgdSkpLCBJc19Cb3VuZF90byAoKGIsIHQpLCAoZCwgdikpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICAgICYmIHMgPSB0XG4gICAgJiYgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYyA9IEFnZW50LnNvcnQgZFxuICAgICYmIHUgPSB2XG4gIHwgSXNfSGVyZSBfLCBfXG4gIHwgSGFzX0ludGVybmFsIF8sIF9cbiAgfCBJc19GcmVlIF8sIF9cbiAgfCBJc19Cb3VuZCBfLCBfXG4gIHwgSXNfQm91bmRfdG8gXywgX1xuICB8IEhhc19CaW5kaW5nX3R5cGUgXywgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBtYXRjaF9hY3Rpb25zID0gZnVuY3Rpb25cbiAgKCogYWJzdHJhY3QsIGNvbmNyZXRlKilcbiAgfCBDcmVhdGUgKGEsIGFscyksIENyZWF0ZSAoYiwgYmxzKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgICAmJiBMaXN0LmZvbGRfbGVmdDJcbiAgICAgICAgIChmdW4gb2sgKHMsIGkpICh0LCBqKSAtPiBvayAmJiBzID0gdCAmJiBpID0gailcbiAgICAgICAgIHRydWUgYWxzIGJsc1xuICB8IE1vZF9pbnRlcm5hbCAoKGEsIHMpLCBpKSwgTW9kX2ludGVybmFsICgoYiwgdCksIGopIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdCAmJiBpID0galxuICB8IEJpbmQgKChhLCBzKSwgKGMsIHUpKSwgQmluZCAoKGIsIHQpLCAoZCwgdikpXG4gIHwgQmluZF90byAoKGEsIHMpLCAoYywgdSkpLCBCaW5kX3RvICgoYiwgdCksIChkLCB2KSkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gICAgJiYgcyA9IHRcbiAgICAmJiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBjID0gQWdlbnQuc29ydCBkXG4gICAgJiYgdSA9IHZcbiAgfCBGcmVlIChhLCBzKSwgRnJlZSAoYiwgdCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0XG4gIHwgUmVtb3ZlIGEsIFJlbW92ZSBiIC0+IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgfCBDcmVhdGUgXywgX1xuICB8IE1vZF9pbnRlcm5hbCBfLCBfXG4gIHwgQmluZCBfLCBfXG4gIHwgQmluZF90byBfLCBfXG4gIHwgRnJlZSBfLCBfXG4gIHwgUmVtb3ZlIF8sIF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgZ2V0X2lkcyBmIGF1eCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgYSAtPlxuICAgICAgbGV0IGlkID0gZiBhIGluXG4gICAgICBpZiBMaXN0Lm1lbSBpZCBhY2MgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgaWQgOjogYWNjKVxuICAgIGF1eFxuXG5sZXQgcmVjIG1hdGNoX3F1YXJrcyBhX3F1YXJrcyBjX3F1YXJrcyBmbWF0Y2ggPVxuICBtYXRjaCBhX3F1YXJrcyB3aXRoXG4gIHwgYXEgOjogYXFzIC0+XG4gICAgbGV0IGNxcywgcmVzdCA9IExpc3QucGFydGl0aW9uIChmdW4gY3EgLT4gZm1hdGNoIChhcSwgY3EpKSBjX3F1YXJrcyBpblxuICAgIGlmIGNxcyA9IFtdIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgbWF0Y2hfcXVhcmtzIGFxcyByZXN0IGZtYXRjaFxuICB8IFtdIC0+IGNfcXVhcmtzID0gW11cblxubGV0IHJlYyBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY3Rlc3RzIGNhY3Rpb25zID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiYWJzdHJhY3QgYW5kIGNvbmNyZXQgcXVhcmtzIGRvbid0IG1hdGNoXCIpKVxuICB8IGNpZCA6OiB0bCAtPlxuICAgIGxldCBjdGVzdHMnID1cbiAgICAgIExpc3QuZmlsdGVyIChmdW4gdGVzdCAtPiBtYXBfdGVzdCAoZnVuIGEgLT4gQWdlbnQuaWQgYSA9IGNpZCkgdGVzdCkgY3Rlc3RzXG4gICAgaW5cbiAgICBsZXQgY2FjdGlvbnMnID1cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4gYWN0IC0+IG1hcF9hY3Rpb24gKGZ1biBhIC0+IEFnZW50LmlkIGEgPSBjaWQpIGFjdClcbiAgICAgICAgY2FjdGlvbnNcbiAgICBpblxuICAgIGlmXG4gICAgICBtYXRjaF9xdWFya3MgdGVzdHMgY3Rlc3RzJyBtYXRjaF90ZXN0c1xuICAgICAgJiYgbWF0Y2hfcXVhcmtzIGFjdGlvbnMgY2FjdGlvbnMnIG1hdGNoX2FjdGlvbnNcbiAgICB0aGVuXG4gICAgICBjaWRcbiAgICBlbHNlXG4gICAgICBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY3Rlc3RzIGNhY3Rpb25zIHRsXG5cbmxldCBtYXRjaGluZ19hYnN0cmFjdF9jb25jcmV0ZSB+ZGVidWdfbW9kZSBhZSBjZSA9XG4gIGxldCBhZV90ZXN0cyA9IExpc3QuZmxhdHRlbiBhZS50ZXN0cyBpblxuICBsZXQgY2VfdGVzdHMgPSBMaXN0LmZsYXR0ZW4gY2UudGVzdHMgaW5cbiAgbGV0IGFic3RyYWN0X2lkcyA9XG4gICAgZ2V0X2lkc1xuICAgICAgKG1hcF9hY3Rpb24gTWF0Y2hpbmcuQWdlbnQuZ2V0X2lkKVxuICAgICAgKGdldF9pZHMgKG1hcF90ZXN0IE1hdGNoaW5nLkFnZW50LmdldF9pZCkgW10gYWVfdGVzdHMpXG4gICAgICBhZS5hY3Rpb25zXG4gIGluXG4gIGxldCBjb25jcmV0ZV9pZHMgPVxuICAgIGdldF9pZHMgKG1hcF9hY3Rpb24gQWdlbnQuaWQpXG4gICAgICAoZ2V0X2lkcyAobWFwX3Rlc3QgQWdlbnQuaWQpIFtdIGNlX3Rlc3RzKVxuICAgICAgY2UuYWN0aW9uc1xuICBpblxuICBsZXQgYXZhaWxhYmxlX2lkcyB1c2VkID1cbiAgICBMaXN0LmZpbHRlclxuICAgICAgKGZ1biBpIC0+IG5vdCAoTW9kcy5JbnRTZXQubWVtIGkgKFJlbmFtaW5nLmltYWdlIHVzZWQpKSlcbiAgICAgIGNvbmNyZXRlX2lkc1xuICBpblxuICBsZXQgcGFydGl0aW9uIGZtYXAgaSA9XG4gICAgTGlzdC5wYXJ0aXRpb24gKGZ1biBxIC0+IGZtYXAgKGZ1biBhIC0+IE1hdGNoaW5nLkFnZW50LmdldF9pZCBhID0gaSkgcSlcbiAgaW5cbiAgbGV0IG1hdGNoaW5nID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgbGV0IGluamVjdGl2ZSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGkgLT5cbiAgICAgICAgYWNjXG4gICAgICAgICYmXG4gICAgICAgIGxldCB0ZXN0cywgXyA9IHBhcnRpdGlvbiBtYXBfdGVzdCBpIGFlX3Rlc3RzIGluXG4gICAgICAgIGxldCBhY3Rpb25zLCBfID0gcGFydGl0aW9uIG1hcF9hY3Rpb24gaSBhZS5hY3Rpb25zIGluXG4gICAgICAgIGxldCBqID1cbiAgICAgICAgICBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY2VfdGVzdHMgY2UuYWN0aW9ucyAoYXZhaWxhYmxlX2lkcyBtYXRjaGluZylcbiAgICAgICAgaW5cbiAgICAgICAgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaSBqIG1hdGNoaW5nKVxuICAgICAgdHJ1ZSBhYnN0cmFjdF9pZHNcbiAgaW5cbiAgaWYgaW5qZWN0aXZlIHRoZW5cbiAgICBTb21lIG1hdGNoaW5nXG4gIGVsc2VcbiAgICBOb25lXG5cbmxldCBzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZiAoKGlkLCBuYSkgYXMgYWdlbnQpID1cbiAgdHJ5XG4gICAgaWYgZiBpZCA9PSBpZCB0aGVuXG4gICAgICBhZ2VudFxuICAgIGVsc2VcbiAgICAgIGYgaWQsIG5hXG4gIHdpdGggTm90X2ZvdW5kIC0+IGFnZW50XG5cbmxldCBzdWJzdF9tYXBfc2l0ZSBmICgoYWcsIHMpIGFzIHNpdGUpID1cbiAgbGV0IGFnJyA9IGYgYWcgaW5cbiAgaWYgYWcgPT0gYWcnIHRoZW5cbiAgICBzaXRlXG4gIGVsc2VcbiAgICBhZycsIHNcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYWdlbnQgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmIGFnZW50IGluXG4gICAgaWYgYWdlbnQgPT0gYWdlbnQnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19IZXJlIGFnZW50J1xuICB8IEhhc19JbnRlcm5hbCAoc2l0ZSwgaW50ZXJuYWxfc3RhdGUpIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBIYXNfSW50ZXJuYWwgKHNpdGUnLCBpbnRlcm5hbF9zdGF0ZSlcbiAgfCBJc19GcmVlIHNpdGUgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIElzX0ZyZWUgc2l0ZSdcbiAgfCBJc19Cb3VuZCBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19Cb3VuZCBzaXRlJ1xuICB8IEhhc19CaW5kaW5nX3R5cGUgKHNpdGUsIGJpbmRpbmdfdHlwZSkgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEhhc19CaW5kaW5nX3R5cGUgKHNpdGUnLCBiaW5kaW5nX3R5cGUpXG4gIHwgSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgYXMgeCAtPlxuICAgIGxldCBzaXRlMScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUxIGluXG4gICAgbGV0IHNpdGUyJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZTIgaW5cbiAgICBpZiBzaXRlMSA9PSBzaXRlMScgJiYgc2l0ZTIgPT0gc2l0ZTInIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19Cb3VuZF90byAoc2l0ZTEnLCBzaXRlMicpXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdFxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X3Rlc3QgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmJyA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChhZ2VudCwgbGlzdCkgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmJyBhZ2VudCBpblxuICAgIGlmIGFnZW50ID09IGFnZW50JyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQ3JlYXRlIChhZ2VudCcsIGxpc3QpXG4gIHwgTW9kX2ludGVybmFsIChzaXRlLCBpKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZicgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIE1vZF9pbnRlcm5hbCAoc2l0ZScsIGkpXG4gIHwgQmluZCAoczEsIHMyKSBhcyB4IC0+XG4gICAgbGV0IHMxJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMxIGluXG4gICAgbGV0IHMyJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMyIGluXG4gICAgaWYgczEgPT0gczEnICYmIHMyID09IHMyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQmluZCAoczEnLCBzMicpXG4gIHwgQmluZF90byAoczEsIHMyKSBhcyB4IC0+XG4gICAgbGV0IHMxJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMxIGluXG4gICAgbGV0IHMyJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMyIGluXG4gICAgaWYgczEgPT0gczEnICYmIHMyID09IHMyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQmluZF90byAoczEnLCBzMicpXG4gIHwgRnJlZSBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgRnJlZSBzaXRlJ1xuICB8IFJlbW92ZSBhZ2VudCBhcyB4IC0+XG4gICAgbGV0IGFnZW50JyA9IGYgYWdlbnQgaW5cbiAgICBpZiBhZ2VudCA9PSBhZ2VudCcgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIFJlbW92ZSBhZ2VudCdcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gZiB4ID0gc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmIHhcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb25cbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9hY3Rpb24gfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBzdWJzdF9tYXBfYmluZGluZ19zdGF0ZSBmID0gZnVuY3Rpb25cbiAgfCAoQU5ZIHwgRlJFRSB8IEJPVU5EIHwgQk9VTkRfVFlQRSBfKSBhcyB4IC0+IHhcbiAgfCBCT1VORF90byAoYWcsIHMpIGFzIHggLT5cbiAgICBsZXQgYWcnID0gZiBhZyBpblxuICAgIGlmIGFnID09IGFnJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQk9VTkRfdG8gKGFnJywgcylcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCBmICgoc2l0ZSwgYnN0YXRlKSBhcyB4KSA9XG4gIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICBsZXQgYnN0YXRlJyA9IHN1YnN0X21hcF9iaW5kaW5nX3N0YXRlIGYgYnN0YXRlIGluXG4gIGlmIHNpdGUgPT0gc2l0ZScgJiYgYnN0YXRlID09IGJzdGF0ZScgdGhlblxuICAgIHhcbiAgZWxzZVxuICAgIHNpdGUnLCBic3RhdGUnXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3QgZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZikgeFxuXG5sZXQgc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3QgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3RcbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9zaWRlX2VmZmVjdCB+ZGVidWdfbW9kZSBpZCBpbmogeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2V2ZW50IGYgZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSlcbiAgICAgICAgZS50ZXN0cztcbiAgICBhY3Rpb25zID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiBmKSBlLmFjdGlvbnM7XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgZikgZS5zaWRlX2VmZmVjdHNfc3JjO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfc2l0ZSBmKSBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYpIGUuY29ubmVjdGl2aXR5X3Rlc3RzO1xuICB9XG5cbmxldCBzdWJzdF9tYXAyX2FnZW50X2luX2V2ZW50IGYgZicgZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSlcbiAgICAgICAgZS50ZXN0cztcbiAgICBhY3Rpb25zID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmJykgZS5hY3Rpb25zO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IGYpIGUuc2lkZV9lZmZlY3RzX3NyYztcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX3NpdGUgZikgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSBlLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgfVxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgZiBmJyB4ID1cbiAgc3Vic3RfbWFwMl9hZ2VudF9pbl9ldmVudFxuICAgIChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZilcbiAgICAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYnKVxuICAgIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3RfZXZlbnQgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MgZiAoYWdlbnQsIGlkKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgYWdlbnRcbiAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZ2VudClcbiAgICBpZFxuXG5sZXQgcHJpbnRfY29uY3JldGVfdGVzdCA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFnZW50IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0hlcmUoJWEpXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnZW50XG4gIHwgSGFzX0ludGVybmFsICgoYWcsIGlkKSwgaW50KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJIYXNfSW50ZXJuYWwoJWEuJWEpXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBpZClcbiAgICAgIGludFxuICB8IElzX0ZyZWUgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19GcmVlKCVhKVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gIHwgSXNfQm91bmQgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19Cb3VuZCglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKHNpdGUsICh0eSwgc2lkKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQnR5cGUoJWEsJXQpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaS4laVwiIHR5IHNpZFxuICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICB0eVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgdHkpXG4gICAgICAgICAgICBzaWQpXG4gIHwgSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfQm91bmQoJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcblxubGV0IHByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKCgoXywgdHkpIGFzIGFnZW50KSwgbGlzdCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQ3JlYXRlKCVhW0BbPGg+JWFAXV0pXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdlbnRcbiAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiAoeCwgeSkgLT5cbiAgICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgdHkgeCBmIHlcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgeFxuICAgICAgICAgICAgIHwgU29tZSB5IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaS4laVwiIHggeSkpKVxuICAgICAgbGlzdFxuICB8IE1vZF9pbnRlcm5hbCAoKGFnLCBpZCksIGludCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiTW9kKCVhLiVhKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgYWcgaWQpXG4gICAgICBpbnRcbiAgfCBCaW5kIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJpbmQoJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcbiAgfCBCaW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJpbmRfdG8oJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcbiAgfCBGcmVlIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiRnJlZSglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IFJlbW92ZSBhZ2VudCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJSZW1vdmUoJWEpXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnZW50XG5cbmxldCBwcmludF9jb25jcmV0ZV9iaW5kaW5nX3N0YXRlID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IEFOWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIqXCJcbiAgfCBGUkVFIC0+ICgpXG4gIHwgQk9VTkQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIV9cIlxuICB8IEJPVU5EX1RZUEUgKHMsIGEpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYS4lYVwiXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHNcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgYVxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3NcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgc1xuICB8IEJPVU5EX3RvICgoYWdfaWQsIGFnKSwgcykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiISVhXyVpLiVhXCJcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIGFnIGFnX2lkXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIHNcblxubGV0IGpzb25fZGljdGlvbm5hcnkgPVxuICBcIlxcXCJiaW5kaW5nX3R5cGVcXFwiOntcXFwidHlwZVxcXCI6MCxcXFwic2l0ZVxcXCI6MX0sXFxcInF1YXJrXFxcIjp7XFxcImFnZW50XFxcIjowLFxcXCJzaXRlXFxcIjoxfSxcXFwidGVzdFxcXCI6W1xcXCJJc19oZXJlXFxcIixcXFwiSGFzX0ludGVybmFsXFxcIixcXFwiSXNfRnJlZVxcXCIsXFxcIklzX0JvdW5kXFxcIixcXFwiSGFzX0JpbmRpbmdfdHlwZVxcXCIsXFxcIklzX0JvdW5kX3RvXFxcIl0sXFxcImFjdGlvbnNcXFwiOltcXFwiQ3JlYXRlXFxcIixcXFwiTW9kX2ludGVybmFsXFxcIixcXFwiQmluZFxcXCIsXFxcIkJpbmRfdG9cXFwiLFxcXCJGcmVlXFxcIixcXFwiUmVtb3ZlXFxcIl0sXFxcImJpbmRpbmdfc3RhdGVcXFwiOltcXFwiQU5ZXFxcIixcXFwiRlJFRVxcXCIsXFxcIkJPVU5EXFxcIixcXFwiQk9VTkRfVFlQRVxcXCIsXFxcIkJPVU5EX3RvXFxcIl0sXFxcImV2ZW50XFxcIjp7XFxcInRlc3RzXFxcIjowLFxcXCJhY3Rpb25zXFxcIjoxLFxcXCJzaWRlX2VmZmVjdF9zcmNcXFwiOjIsXFxcInNpZGVfZWZmZWN0X2RzdFxcXCI6MyxcXFwiY29ubmVjdGl2aXR5X3Rlc3RzXFxcIjo0fVwiXG5cbmxldCB3cml0ZV9iaW5kaW5nX3R5cGUgb2IgYSA9XG4gIEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgYVxuXG5sZXQgcmVhZF9iaW5kaW5nX3R5cGUgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludCBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxuXG5sZXQgYmluZGluZ190eXBlX3RvX2pzb24gKHR5LCBzKSA9IGBMaXN0IFsgYEludCB0eTsgYEludCBzIF1cblxubGV0IGJpbmRpbmdfdHlwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdIC0+IHR5LCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBiaW5kaW5nX3R5cGVcIiwgeCkpXG5cbmxldCB3cml0ZV9xdWFyayBmIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgZiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfcXVhcmsgZiBwIGxiID0gSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgZiBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxubGV0IHF1YXJrX3RvX2pzb24gZiAoYWcsIHMpID0gYExpc3QgWyBmIGFnOyBgSW50IHMgXVxuXG5sZXQgcXVhcmtfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGFnOyBgSW50IHMgXSAtPiBmIGFnLCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcXVhcmtcIiwgeCkpXG5cbmxldCB3cml0ZV90ZXN0IGYgb2IgdCA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIHQgd2l0aFxuICAgIHwgSXNfSGVyZSBhIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAwKTsgKGZ1biBvIC0+IGYgbyBhKSBdXG4gICAgfCBIYXNfSW50ZXJuYWwgKHMsIGkpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcyk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gaSk7XG4gICAgICBdXG4gICAgfCBJc19GcmVlIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdXG4gICAgfCBJc19Cb3VuZCBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXVxuICAgIHwgSGFzX0JpbmRpbmdfdHlwZSAocywgYikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIDQpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2Igcyk7XG4gICAgICAgIChmdW4gb2IgLT4gd3JpdGVfYmluZGluZ190eXBlIG9iIGIpO1xuICAgICAgXVxuICAgIHwgSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIDUpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2IgczEpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2IgczIpO1xuICAgICAgXSlcblxubGV0IHJlYWRfdGVzdCBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IHkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgSXNfSGVyZSB5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgSGFzX0ludGVybmFsIChzLCBpKVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19GcmVlIHNcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfQm91bmQgc1xuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgYmkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSByZWFkX2JpbmRpbmdfdHlwZSBzdCBiIGluXG4gICAgICAgIEhhc19CaW5kaW5nX3R5cGUgKHMsIGJpKVxuICAgICAgfCA1IC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19Cb3VuZF90byAoczEsIHMyKVxuICAgICAgfCBfIC0+IFlvanNvbi5qc29uX2Vycm9yIFwiV3JvbmcgdGVzdFwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IHRlc3RfdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGEgLT4gYExpc3QgWyBgSW50IDA7IGYgYSBdXG4gIHwgSGFzX0ludGVybmFsIChzLCBpKSAtPiBgTGlzdCBbIGBJbnQgMTsgcXVhcmtfdG9fanNvbiBmIHM7IGBJbnQgaSBdXG4gIHwgSXNfRnJlZSBzIC0+IGBMaXN0IFsgYEludCAyOyBxdWFya190b19qc29uIGYgcyBdXG4gIHwgSXNfQm91bmQgcyAtPiBgTGlzdCBbIGBJbnQgMzsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKHMsIGIpIC0+XG4gICAgYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzOyBiaW5kaW5nX3R5cGVfdG9fanNvbiBiIF1cbiAgfCBJc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgIGBMaXN0IFsgYEludCA1OyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG5cbmxldCB0ZXN0X29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDA7IGEgXSAtPiBJc19IZXJlIChmIGEpXG4gIHwgYExpc3QgWyBgSW50IDE7IHM7IGBJbnQgaSBdIC0+IEhhc19JbnRlcm5hbCAocXVhcmtfb2ZfanNvbiBmIHMsIGkpXG4gIHwgYExpc3QgWyBgSW50IDI7IHMgXSAtPiBJc19GcmVlIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgMzsgcyBdIC0+IElzX0JvdW5kIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgNDsgczsgYiBdIC0+XG4gICAgSGFzX0JpbmRpbmdfdHlwZSAocXVhcmtfb2ZfanNvbiBmIHMsIGJpbmRpbmdfdHlwZV9vZl9qc29uIGIpXG4gIHwgYExpc3QgWyBgSW50IDU7IHMxOyBzMiBdIC0+XG4gICAgSXNfQm91bmRfdG8gKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3JvbmcgdGVzdFwiLCB4KSlcblxubGV0IHdyaXRlX2FjdGlvbiBmIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBhIHdpdGhcbiAgICB8IENyZWF0ZSAoYWcsIGluZm8pIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7XG4gICAgICAgIChmdW4gbyAtPiBmIG8gYWcpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnRcbiAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCkpXG4gICAgICAgICAgICBvIGluZm8pO1xuICAgICAgXVxuICAgIHwgTW9kX2ludGVybmFsIChzLCBpKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGkpO1xuICAgICAgXVxuICAgIHwgQmluZCAoczEsIHMyKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMik7XG4gICAgICBdXG4gICAgfCBCaW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMyKTtcbiAgICAgIF1cbiAgICB8IEZyZWUgcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF1cbiAgICB8IFJlbW92ZSBhIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA1KTsgKGZ1biBvIC0+IGYgbyBhKSBdKVxuXG5sZXQgcmVhZF9hY3Rpb24gZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCBhZyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIGYgc3QgYiBpblxuICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9vcHRpb24gWW9qc29uLkJhc2ljLnJlYWRfaW50KSkpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIENyZWF0ZSAoYWcsIGluZm8pXG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgTW9kX2ludGVybmFsIChzLCBpKVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCaW5kIChzMSwgczIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IHMxID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgczIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEJpbmRfdG8gKHMxLCBzMilcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgRnJlZSBzXG4gICAgICB8IDUgLT5cbiAgICAgICAgbGV0IGEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgUmVtb3ZlIGFcbiAgICAgIHwgXyAtPiBZb2pzb24uanNvbl9lcnJvciBcIldyb25nIGFjdGlvblwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IGFjdGlvbl90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYWcsIGluZm8pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCAwO1xuICAgICAgICBmIGFnO1xuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW4gKHMsIGkpIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAoYEludCBzXG4gICAgICAgICAgICAgICAgIDo6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IFsgYEludCBpIF0pKSlcbiAgICAgICAgICAgICBpbmZvKTtcbiAgICAgIF1cbiAgfCBNb2RfaW50ZXJuYWwgKHMsIGkpIC0+IGBMaXN0IFsgYEludCAxOyBxdWFya190b19qc29uIGYgczsgYEludCBpIF1cbiAgfCBCaW5kIChzMSwgczIpIC0+IGBMaXN0IFsgYEludCAyOyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG4gIHwgQmluZF90byAoczEsIHMyKSAtPiBgTGlzdCBbIGBJbnQgMzsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuICB8IEZyZWUgcyAtPiBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IFJlbW92ZSBhIC0+IGBMaXN0IFsgYEludCA1OyBmIGEgXVxuXG5sZXQgYWN0aW9uX29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDA7IGFnOyBgTGlzdCBpbmZvIF0gLT5cbiAgICBDcmVhdGVcbiAgICAgICggZiBhZyxcbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYExpc3QgWyBgSW50IHMgXSAtPiBzLCBOb25lXG4gICAgICAgICAgICB8IGBMaXN0IFsgYEludCBzOyBgSW50IGkgXSAtPiBzLCBTb21lIGlcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFjdGlvbiBpbmZvXCIsIHgpKSlcbiAgICAgICAgICBpbmZvIClcbiAgfCBgTGlzdCBbIGBJbnQgMTsgczsgYEludCBpIF0gLT4gTW9kX2ludGVybmFsIChxdWFya19vZl9qc29uIGYgcywgaSlcbiAgfCBgTGlzdCBbIGBJbnQgMjsgczE7IHMyIF0gLT4gQmluZCAocXVhcmtfb2ZfanNvbiBmIHMxLCBxdWFya19vZl9qc29uIGYgczIpXG4gIHwgYExpc3QgWyBgSW50IDM7IHMxOyBzMiBdIC0+IEJpbmRfdG8gKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IGBMaXN0IFsgYEludCA0OyBzIF0gLT4gRnJlZSAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDU7IGEgXSAtPiBSZW1vdmUgKGYgYSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIGFjdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX2JpbmRpbmdfc3RhdGUgZiBvYiBiZiA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIGJmIHdpdGhcbiAgICB8IEFOWSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCkgXVxuICAgIHwgRlJFRSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSkgXVxuICAgIHwgQk9VTkQgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpIF1cbiAgICB8IEJPVU5EX1RZUEUgYiAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpOyAoZnVuIG8gLT4gd3JpdGVfYmluZGluZ190eXBlIG8gYik7XG4gICAgICBdXG4gICAgfCBCT1VORF90byBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNCk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXSlcblxubGV0IHJlYWRfYmluZGluZ19zdGF0ZSBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gQU5ZXG4gICAgICB8IDEgLT4gRlJFRVxuICAgICAgfCAyIC0+IEJPVU5EXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSByZWFkX2JpbmRpbmdfdHlwZSBzdCBiIGluXG4gICAgICAgIEJPVU5EX1RZUEUgYlxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCT1VORF90byBzXG4gICAgICB8IF8gLT4gWW9qc29uLmpzb25fZXJyb3IgXCJXcm9uZyBiaW5kaW5nIHN0YXRlXCIgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgYmluZGluZ19zdGF0ZV90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IEFOWSAtPiBgTGlzdCBbIGBJbnQgMCBdXG4gIHwgRlJFRSAtPiBgTGlzdCBbIGBJbnQgMSBdXG4gIHwgQk9VTkQgLT4gYExpc3QgWyBgSW50IDIgXVxuICB8IEJPVU5EX1RZUEUgYiAtPiBgTGlzdCBbIGBJbnQgMzsgYmluZGluZ190eXBlX3RvX2pzb24gYiBdXG4gIHwgQk9VTkRfdG8gcyAtPiBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHMgXVxuXG5sZXQgYmluZGluZ19zdGF0ZV9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwIF0gLT4gQU5ZXG4gIHwgYExpc3QgWyBgSW50IDEgXSAtPiBGUkVFXG4gIHwgYExpc3QgWyBgSW50IDIgXSAtPiBCT1VORFxuICB8IGBMaXN0IFsgYEludCAzOyBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdIF0gLT4gQk9VTkRfVFlQRSAodHksIHMpXG4gIHwgYExpc3QgWyBgSW50IDQ7IGBMaXN0IFsgYWc7IGBJbnQgcyBdIF0gLT4gQk9VTkRfdG8gKGYgYWcsIHMpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYmluZGluZ19zdGF0ZVwiLCB4KSlcblxubGV0IHdyaXRlX2V2ZW50IGYgb2IgZSA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgW1xuICAgICAgKGZ1biBvIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3QgKEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3Rlc3QgZikpIG8gZS50ZXN0cyk7XG4gICAgICAoZnVuIG8gLT4gSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfYWN0aW9uIGYpIG8gZS5hY3Rpb25zKTtcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciAod3JpdGVfcXVhcmsgZikgKHdyaXRlX2JpbmRpbmdfc3RhdGUgZikpXG4gICAgICAgICAgbyBlLnNpZGVfZWZmZWN0c19zcmMpO1xuICAgICAgKGZ1biBvIC0+IEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3F1YXJrIGYpIG8gZS5zaWRlX2VmZmVjdHNfZHN0KTtcbiAgICAgIChmdW4gbyAtPiBKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV90ZXN0IGYpIG8gZS5jb25uZWN0aXZpdHlfdGVzdHMpO1xuICAgIF1cblxubGV0IHJlYWRfZXZlbnQgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50XG4gICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfdGVzdCBmKSkpXG4gICAgKGZ1biBzdCBiIHRlc3RzIC0+XG4gICAgICBsZXQgYWN0aW9ucyA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX2FjdGlvbiBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciAocmVhZF9xdWFyayBmKSAocmVhZF9iaW5kaW5nX3N0YXRlIGYpKSlcbiAgICAgICAgICBzdCBiXG4gICAgICBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF9xdWFyayBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF90ZXN0IGYpKSBzdCBiXG4gICAgICBpblxuICAgICAgeyB0ZXN0czsgYWN0aW9uczsgc2lkZV9lZmZlY3RzX3NyYzsgc2lkZV9lZmZlY3RzX2RzdDsgY29ubmVjdGl2aXR5X3Rlc3RzIH0pXG4gICAgc3QgYlxuXG5sZXQgZXZlbnRfdG9fanNvbiBmIGUgPVxuICBgTGlzdFxuICAgIFtcbiAgICAgIGBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIGNjdCAtPiBgTGlzdCAoTGlzdC5tYXAgKHRlc3RfdG9fanNvbiBmKSBjY3QpKSBlLnRlc3RzKTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAoYWN0aW9uX3RvX2pzb24gZikgZS5hY3Rpb25zKTtcbiAgICAgIGBMaXN0XG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIChzLCBiKSAtPlxuICAgICAgICAgICAgIGBMaXN0IFsgcXVhcmtfdG9fanNvbiBmIHM7IGJpbmRpbmdfc3RhdGVfdG9fanNvbiBmIGIgXSlcbiAgICAgICAgICAgZS5zaWRlX2VmZmVjdHNfc3JjKTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAocXVhcmtfdG9fanNvbiBmKSBlLnNpZGVfZWZmZWN0c19kc3QpO1xuICAgICAgYExpc3QgKExpc3QubWFwICh0ZXN0X3RvX2pzb24gZikgZS5jb25uZWN0aXZpdHlfdGVzdHMpO1xuICAgIF1cblxubGV0IGV2ZW50X29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgTGlzdCB0OyBgTGlzdCBhOyBgTGlzdCBzX2Vfc3JjOyBgTGlzdCBzX2VfZHN0OyBgTGlzdCBjX3QgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHRlc3RzID1cbiAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgY2NsIC0+IExpc3QubWFwICh0ZXN0X29mX2pzb24gZikgY2NsXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHQ7XG4gICAgICAgICBhY3Rpb25zID0gTGlzdC5tYXAgKGFjdGlvbl9vZl9qc29uIGYpIGE7XG4gICAgICAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBzOyBiIF0gLT4gcXVhcmtfb2ZfanNvbiBmIHMsIGJpbmRpbmdfc3RhdGVfb2ZfanNvbiBmIGJcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgc19lX3NyYztcbiAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0Lm1hcCAocXVhcmtfb2ZfanNvbiBmKSBzX2VfZHN0O1xuICAgICAgICAgY29ubmVjdGl2aXR5X3Rlc3RzID0gTGlzdC5tYXAgKHRlc3Rfb2ZfanNvbiBmKSBjX3Q7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBldmVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZXZlbnRcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgVHJhbnNmb3JtYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFnZW50IG9mICdhXG4gICAgfCBGcmVlZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IExpbmtlZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGUgKiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCBvZlxuICAgICAgICAnYSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lICogSW5zdGFudGlhdGlvbi5pbnRlcm5hbF9zdGF0ZVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG5cbiAgbGV0IHRvX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IGBBc3NvYyBbIFwiQWdlbnRcIiwgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGEgXVxuICAgIHwgRnJlZWQgKGEsIHMpIC0+XG4gICAgICBgQXNzb2MgWyBcIkZyZWVkXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cbiAgICB8IExpbmtlZCAoKGEsIHMpLCAoYiwgdCkpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJMaW5rZWRcIixcbiAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTtcbiAgICAgICAgICAgICAgICBgSW50IHM7XG4gICAgICAgICAgICAgICAgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGI7XG4gICAgICAgICAgICAgICAgYEludCB0O1xuICAgICAgICAgICAgICBdICk7XG4gICAgICAgIF1cbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgWyBcIk5lZ2F0aXZlV2hhdEV2ZXJcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJQb3NpdGl2ZUludGVybmFsaXplZFwiLFxuICAgICAgICAgICAgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzOyBgSW50IGkgXSApO1xuICAgICAgICBdXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbIFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuXG4gIGxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiQWdlbnRcIiwgYSkgXSAtPiBBZ2VudCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEpXG4gICAgfCBgQXNzb2MgWyAoXCJGcmVlZFwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBGcmVlZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCBgQXNzb2MgWyAoXCJMaW5rZWRcIiwgYExpc3QgWyBhOyBgSW50IHM7IGI7IGBJbnQgdCBdKSBdIC0+XG4gICAgICBMaW5rZWQgKChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcyksIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYiwgdCkpXG4gICAgfCBgQXNzb2MgWyAoXCJOZWdhdGl2ZVdoYXRFdmVyXCIsIGBMaXN0IFsgYTsgYEludCBzIF0pIF0gLT5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgYEFzc29jIFsgKFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBhOyBgSW50IHM7IGBJbnQgaSBdKSBdIC0+XG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMsIGkpXG4gICAgfCBgQXNzb2MgWyAoXCJOZWdhdGl2ZUludGVybmFsaXplZFwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5cbiAgbGV0IHJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogPSBmdW5jdGlvblxuICAgIHwgRnJlZWQgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgRnJlZWQgKHAnLCBzKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBOZWdhdGl2ZVdoYXRFdmVyIChwJywgcylcbiAgICB8IExpbmtlZCAoKHAxLCBzMSksIChwMiwgczIpKSBhcyB4IC0+XG4gICAgICBsZXQgcDEnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwMSBpblxuICAgICAgbGV0IHAyJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcDIgaW5cbiAgICAgIGlmIHAxID09IHAxJyAmJiBwMiA9PSBwMicgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIExpbmtlZCAoKHAxJywgczEpLCAocDInLCBzMikpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAocCwgcywgaSkgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAocCcsIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAocCcsIHMpXG4gICAgfCBBZ2VudCBwIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgQWdlbnQgcCdcblxuICBsZXQgY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgbiAtPiBBZ2VudCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbilcbiAgICB8IEZyZWVkIChuLCBzKSAtPlxuICAgICAgRnJlZWQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG4gICAgfCBMaW5rZWQgKChuLCBzKSwgKG4nLCBzJykpIC0+XG4gICAgICBMaW5rZWRcbiAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcyksXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4nLCBzJykgKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAobiwgcykgLT5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAobiwgcywgaSkgLT5cbiAgICAgIFBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMpIC0+XG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcylcblxuICBsZXQgbWFwX2ZvbGRfYWdlbnQgZiB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBZ2VudCBhIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBBZ2VudCBhJywgYWNjJ1xuICAgIHwgRnJlZWQgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBGcmVlZCAoYScsIHMpLCBhY2MnXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSkgLT5cbiAgICAgIGxldCBhMScsIGFjYycgPSBmIGExIGFjYyBpblxuICAgICAgbGV0IGEyJywgYWNjJycgPSBmIGEyIGFjYycgaW5cbiAgICAgIExpbmtlZCAoKGExJywgczEpLCAoYTInLCBzMikpLCBhY2MnJ1xuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKGEnLCBzKSwgYWNjJ1xuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAoYScsIHMsIGkpLCBhY2MnXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhJywgcyksIGFjYydcblxuICBsZXQgbWFwX2FnZW50IGYgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBBZ2VudCAoZiBhKVxuICAgIHwgRnJlZWQgKGEsIHMpIC0+IEZyZWVkIChmIGEsIHMpXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSkgLT4gTGlua2VkICgoZiBhMSwgczEpLCAoZiBhMiwgczIpKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT4gTmVnYXRpdmVXaGF0RXZlciAoZiBhLCBzKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+IFBvc2l0aXZlSW50ZXJuYWxpemVkIChmIGEsIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT4gTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGYgYSwgcylcblxuICBsZXQgZm9sZF9hZ2VudCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IGYgYWNjIGFcbiAgICB8IEZyZWVkIChhLCBfKSAtPiBmIGFjYyBhXG4gICAgfCBMaW5rZWQgKChhMSwgXyksIChhMiwgXykpIC0+IGYgKGYgYWNjIGExKSBhMlxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgXykgLT4gZiBhY2MgYVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIF8sIF8pIC0+IGYgYWNjIGFcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhLCBfKSAtPiBmIGFjYyBhXG5cbiAgbGV0IGVxdWFsIGYgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEFnZW50IGEsIEFnZW50IGEnIC0+IGYgYSBhJ1xuICAgIHwgKCBBZ2VudCBfLFxuICAgICAgICAoIEZyZWVkIF8gfCBMaW5rZWQgXyB8IE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfICkgKVxuICAgIHwgXywgQWdlbnQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IEZyZWVkIChhLCBzKSwgRnJlZWQgKGEnLCBzJykgLT4gcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgKCBGcmVlZCBfLFxuICAgICAgICAoIExpbmtlZCBfIHwgTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8gKSApXG4gICAgfCBfLCBGcmVlZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpLCBMaW5rZWQgKChhMScsIHMxJyksIChhMicsIHMyJykpIC0+XG4gICAgICAoczEgPSBzMScgJiYgczIgPSBzMicgJiYgZiBhMSBhMScgJiYgZiBhMiBhMicpXG4gICAgICB8fCAoczEgPSBzMicgJiYgczIgPSBzMScgJiYgZiBhMSBhMicgJiYgZiBhMiBhMScpXG4gICAgfCAoIExpbmtlZCBfLFxuICAgICAgICAoTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8pIClcbiAgICB8IF8sIExpbmtlZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcyksIE5lZ2F0aXZlV2hhdEV2ZXIgKGEnLCBzJykgLT4gcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgTmVnYXRpdmVXaGF0RXZlciBfLCAoUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8pXG4gICAgfCBfLCBOZWdhdGl2ZVdoYXRFdmVyIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcyksIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhJywgcycpIC0+XG4gICAgICBzID0gcycgJiYgZiBhIGEnXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfLCBQb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCBfLCBOZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpLCBQb3NpdGl2ZUludGVybmFsaXplZCAoYScsIHMnLCBpJykgLT5cbiAgICAgIGkgPSBpJyAmJiBzID0gcycgJiYgZiBhIGEnXG5cbiAgbGV0IHByaW50ID9zaWdzIGYgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdXCIgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKSBwXG4gICAgfCBGcmVlZCAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gJXRAXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwKVxuICAgICAgICBzIFBwLmJvdHRvbVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gPz8/QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcClcbiAgICAgICAgc1xuICAgIHwgTGlua2VkICgocDEsIHMxKSwgKHAyLCBzMikpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ICVhLiVhQF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHAxXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHAxKVxuICAgICAgICBzMVxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHAyXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHAyKVxuICAgICAgICBzMlxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMsIGkpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X2ludGVybmFsID9zaWdzIHAgcylcbiAgICAgICAgaVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYX4gPUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHApXG4gICAgICAgIHNcblxuICBsZXQgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCAoKChhLCBfKSwgXykgYXMgcCkgKGRvbiwgb3V0KSA9XG4gICAgaWYgTGlzdC5tZW0gcCBkb24gfHwgTGlzdC5tZW0gYSBjcmVhdGVkX2FnZW50cyB0aGVuXG4gICAgICBkb24sIG91dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbG5rX2RzdCBwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBwIDo6IGRvbiwgRnJlZWQgcCA6OiBvdXRcbiAgICAgIHwgU29tZSBwJyAtPiBwIDo6IHAnIDo6IGRvbiwgTGlua2VkIChwLCBwJykgOjogb3V0XG4gICAgKVxuXG4gIGxldCBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24gPSBmdW5jdGlvblxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChhZ19pZCwgXyksIF8pIC0+IFNvbWUgYWdfaWRcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gX1xuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgIE5vbmVcblxuICBsZXQgYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9ucyBhY3Rpb25zID1cbiAgICBMaXN0X3V0aWwubWFwX29wdGlvbiBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24gYWN0aW9uc1xuXG4gIGxldCBuZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIGxua19kc3QgYWN0aW9ucyA9XG4gICAgbGV0IGNyZWF0ZWRfYWdlbnRzID0gYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9ucyBhY3Rpb25zIGluXG4gICAgc25kXG4gICAgICAoTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgICAoZnVuIHggKChkb24sIG91dCkgYXMgYWNjKSAtPlxuICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoXywgXykgLT4gYWNjXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKCgoKGlkLCBfKSwgXykgYXMgcCksIF8pIC0+XG4gICAgICAgICAgICAgaWYgTGlzdC5tZW0gaWQgY3JlYXRlZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgICAgZG9uLCBvdXRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBkb24sIE5lZ2F0aXZlSW50ZXJuYWxpemVkIHAgOjogb3V0XG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChwMSwgcDIpIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChwMSwgcDIpIC0+XG4gICAgICAgICAgICAgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwMVxuICAgICAgICAgICAgICAgKGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcDIgYWNjKVxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBwIC0+XG4gICAgICAgICAgICAgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwIGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoXywgdHkpIGFzIGEpIC0+XG4gICAgICAgICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgIChmdW4gc3QgcyAtPiBnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IChhLCBzKSBzdClcbiAgICAgICAgICAgICAgIChkb24sIEFnZW50IGEgOjogb3V0KVxuICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KSlcbiAgICAgICAgIGFjdGlvbnMgKFtdLCBbXSkpXG5cbiAgbGV0IHBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3Mgc2lkZV9lZmZlY3RfZHN0cyBhY3Rpb25zID1cbiAgICBsZXQgcmVtLCByZXYgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoKHJlbSwgb3V0KSBhcyBhY2MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChfLCB0eSkgYXMgYSksIF8pIC0+XG4gICAgICAgICAgICAoIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAgKGZ1biBzdCBzIC0+IChhLCBzKSA6OiBzdClcbiAgICAgICAgICAgICAgICByZW0gKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KSxcbiAgICAgICAgICAgICAgQWdlbnQgYSA6OiBvdXQgKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChhLCBzKSwgaSkgLT5cbiAgICAgICAgICAgIHJlbSwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIDo6IG91dFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChwMSwgcDIpIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChwMSwgcDIpIC0+XG4gICAgICAgICAgICAoIExpc3QuZmlsdGVyIChmdW4gcCAtPiBwIDw+IHAxICYmIHAgPD4gcDIpIHJlbSxcbiAgICAgICAgICAgICAgTGlua2VkIChwMSwgcDIpIDo6IG91dCApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcCAtPlxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biBwJyAtPiBwJyA8PiBwKSByZW0sIEZyZWVkIHAgOjogb3V0XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+IGFjYylcbiAgICAgICAgKFtdLCBbXSkgYWN0aW9uc1xuICAgIGluXG4gICAgTGlzdC5yZXZfYXBwZW5kIHJldlxuICAgICAgKExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAgKGZ1biBwIC0+IEZyZWVkIHApXG4gICAgICAgICByZW1cbiAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHAgLT4gRnJlZWQgcCkgc2lkZV9lZmZlY3RfZHN0cykpXG5lbmRcblxudHlwZSBhbGdfZXhwciA9IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuZVxuXG50eXBlIGVsZW1lbnRhcnlfcnVsZSA9IHtcbiAgcmF0ZTogYWxnX2V4cHIgTG9jLmFubm90ZWQ7XG4gIHVuYXJ5X3JhdGU6IChhbGdfZXhwciBMb2MuYW5ub3RlZCAqIGFsZ19leHByIG9wdGlvbikgb3B0aW9uO1xuICBjb25uZWN0ZWRfY29tcG9uZW50czogUGF0dGVybi5pZCBhcnJheTsgKCppZCAtPiBjYyopXG4gIHJlbW92ZWQ6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgVHJhbnNmb3JtYXRpb24udCBsaXN0O1xuICBpbnNlcnRlZDogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBUcmFuc2Zvcm1hdGlvbi50IGxpc3Q7XG4gIGRlbHRhX3Rva2VuczogKGFsZ19leHByIExvYy5hbm5vdGVkICogaW50KSBsaXN0O1xuICBzeW50YWN0aWNfcnVsZTogaW50OyAgKCoqIFswXSBtZWFucyBnZW5lcmF0ZWQgZm9yIHBlcnR1cmJhdGlvbi4gKilcbiAgaW5zdGFudGlhdGlvbnM6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi5ldmVudDtcbn1cblxubGV0IGV4dHJhY3RfY2NfaWRzIHIgPSByLmNvbm5lY3RlZF9jb21wb25lbnRzXG5sZXQgZXh0cmFjdF9hYnN0cmFjdF9ldmVudCByID0gci5pbnN0YW50aWF0aW9uc1xuXG5sZXQgYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uKSlcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBydWxlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgICggXCJyYXRlXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgci5yYXRlXG4gICAgICApO1xuICAgICAgKCBcInVuYXJ5X3JhdGVcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpKVxuICAgICAgICAgIHIudW5hcnlfcmF0ZSApO1xuICAgICAgKCBcImNvbm5lY3RlZF9jb21wb25lbnRzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIHIuY29ubmVjdGVkX2NvbXBvbmVudHMgKTtcbiAgICAgIFwicmVtb3ZlZFwiLCBKc29uVXRpbC5vZl9saXN0IFRyYW5zZm9ybWF0aW9uLnRvX3lvanNvbiByLnJlbW92ZWQ7XG4gICAgICBcImluc2VydGVkXCIsIEpzb25VdGlsLm9mX2xpc3QgVHJhbnNmb3JtYXRpb24udG9feW9qc29uIHIuaW5zZXJ0ZWQ7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQpXG4gICAgICAgICAgci5kZWx0YV90b2tlbnMgKTtcbiAgICAgIFwic3ludGFjdGljX3J1bGVcIiwgYEludCByLnN5bnRhY3RpY19ydWxlO1xuICAgICAgKCBcImluc3RhbnRpYXRpb25zXCIsXG4gICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfdG9fanNvbiBNYXRjaGluZy5BZ2VudC50b195b2pzb24gci5pbnN0YW50aWF0aW9ucyApO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgciA9XG4gIG1hdGNoIHIgd2l0aFxuICB8IChgQXNzb2MgbCA6IFlvanNvbi5CYXNpYy50KSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJhdGUgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJhdGVcIiBsKTtcbiAgICAgICAgIHVuYXJ5X3JhdGUgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidW5hcnlfcmF0ZVwiIHgpO1xuICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25uZWN0ZWRfY29tcG9uZW50c1wiIHgpO1xuICAgICAgICAgcmVtb3ZlZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgVHJhbnNmb3JtYXRpb24ub2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJlbW92ZWRcIiB4KTtcbiAgICAgICAgIGluc2VydGVkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdCBUcmFuc2Zvcm1hdGlvbi5vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiaW5zZXJ0ZWRcIiB4KTtcbiAgICAgICAgIGRlbHRhX3Rva2VucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVsdGFfdG9rZW5zXCIgeCk7XG4gICAgICAgICBzeW50YWN0aWNfcnVsZSA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBcInN5bnRhY3RpY19ydWxlXCIgbCk7XG4gICAgICAgICBpbnN0YW50aWF0aW9ucyA9XG4gICAgICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfb2ZfanNvbiBNYXRjaGluZy5BZ2VudC5vZl95b2pzb25cbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImluc3RhbnRpYXRpb25zXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWxlbWVudGFyeSBydWxlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbGVtZW50YXJ5IHJ1bGVcIiwgeCkpXG5cbmxldCBmdWxseV9zcGVjaWZpZWRfcGF0dGVybl90b19wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnMgY2MgPVxuICBsZXQgXywgdHIgPVxuICAgIFBhdHRlcm4uZm9sZF9ieV90eXBlXG4gICAgICAoZnVuIH5wb3MgfmFnZW50X3R5cGUgaW50ZiAoZW1iLCBnKSAtPlxuICAgICAgICBsZXQgYSA9IHBvcywgYWdlbnRfdHlwZSBpblxuICAgICAgICBsZXQgZycgPSBUcmFuc2Zvcm1hdGlvbi5BZ2VudCBhIDo6IGcgaW5cbiAgICAgICAgbGV0IGVtYicgPSBNb2RzLkludE1hcC5hZGQgcG9zIGEgZW1iIGluXG4gICAgICAgICggZW1iJyxcbiAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAoZnVuIHNpdGUgYWNjIChsLCBpKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjJyA9XG4gICAgICAgICAgICAgICAgaWYgaSA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAoYSwgc2l0ZSwgaSkgOjogYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFBhdHRlcm4uVW5TcGVjIHwgUGF0dGVybi5GcmVlIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uRnJlZWQgKGEsIHNpdGUpIDo6IGFjYydcbiAgICAgICAgICAgICAgfCBQYXR0ZXJuLkxpbmsgKHgnLCBzJykgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geCcgZW1iJyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjYydcbiAgICAgICAgICAgICAgICB8IFNvbWUgYWcnIC0+XG4gICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChhLCBzaXRlKSwgKGFnJywgcycpKSA6OiBhY2MnKSlcbiAgICAgICAgICAgIGcnIGludGYgKSlcbiAgICAgIGNjIChNb2RzLkludE1hcC5lbXB0eSwgW10pXG4gIGluXG4gIExpc3QucmV2IHRyXG5cbnR5cGUgJ2FsZ19leHByIHByaW50X2V4cHIgPVxuICB8IFN0cl9wZXhwciBvZiBzdHJpbmcgTG9jLmFubm90ZWRcbiAgfCBBbGdfcGV4cHIgb2YgJ2FsZ19leHByIExvYy5hbm5vdGVkXG5cbmxldCBwcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBTdHJfcGV4cHIgcyAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgc1xuICB8IEFsZ19wZXhwciBhIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJBXCIsXG4gICAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgYSApO1xuICAgICAgXVxuXG5sZXQgcHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYEFzc29jIFsgKFwiQVwiLCB4KSBdIC0+XG4gICAgKHRyeVxuICAgICAgIEFsZ19wZXhwclxuICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHByaW50IGV4cHJcIiwgeCkpKVxuICB8IHggLT5cbiAgICAodHJ5XG4gICAgICAgU3RyX3BleHByXG4gICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgeClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcHJpbnQgZXhwclwiLCB4KSkpXG5cbmxldCBtYXBfZXhwcl9wcmludCBmIHggPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyBhcyB4IC0+IHhcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gQWxnX3BleHByIChmIGUpKVxuICAgIHhcblxubGV0IGZvbGRfZXhwcl9wcmludCBmIGFjYyB4ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyAtPiBhY2NcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gZiBhY2MgZSlcbiAgICBhY2MgeFxuXG50eXBlIGRpbl9raW5kID0gQUJTT0xVVEUgfCBSRUxBVElWRSB8IFBST0JBQklMSVRZXG5cbmxldCBkaW5fa2luZF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IEFCU09MVVRFIC0+IGBTdHJpbmcgXCJBQlNPTFVURVwiXG4gIHwgUkVMQVRJVkUgLT4gYFN0cmluZyBcIlJFTEFUSVZFXCJcbiAgfCBQUk9CQUJJTElUWSAtPiBgU3RyaW5nIFwiUFJPQkFCSUxJVFlcIlxuXG5sZXQgZGluX2tpbmRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQUJTT0xVVEVcIiAtPiBBQlNPTFVURVxuICB8IGBTdHJpbmcgXCJSRUxBVElWRVwiIC0+IFJFTEFUSVZFXG4gIHwgYFN0cmluZyBcIlBST0JBQklMSVRZXCIgLT4gUFJPQkFCSUxJVFlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkaW5fa2luZFwiLCB4KSlcblxubGV0IHdyaXRlX2Rpbl9raW5kIG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iIChkaW5fa2luZF90b195b2pzb24gZilcblxubGV0IHN0cmluZ19vZl9kaW5fa2luZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5fa2luZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfZGluX2tpbmQgcCBsYiA9XG4gIGRpbl9raW5kX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgZGluX2tpbmRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9raW5kIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgbW9kaWZpY2F0aW9uID1cbiAgfCBJVEVSX1JVTEUgb2YgYWxnX2V4cHIgTG9jLmFubm90ZWQgKiBlbGVtZW50YXJ5X3J1bGVcbiAgfCBVUERBVEUgb2YgaW50ICogYWxnX2V4cHIgTG9jLmFubm90ZWRcbiAgfCBTTkFQU0hPVCBvZiBib29sICogYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgU1RPUCBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBDRkxPVyBvZlxuICAgICAgc3RyaW5nIG9wdGlvblxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICB8IERJTiBvZiBkaW5fa2luZCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IERJTk9GRiBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBDRkxPV09GRiBvZiBzdHJpbmcgb3B0aW9uICogUGF0dGVybi5pZCBhcnJheVxuICB8IFBMT1RFTlRSWVxuICB8IFBSSU5UIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IFNQRUNJRVMgb2ZcbiAgICAgIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICB8IFNQRUNJRVNfT0ZGIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuXG5sZXQgcHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgcHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBwcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IG1vZGlmaWNhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChuLCByKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiO1xuICAgICAgICAoIFwicmVwZWF0c1wiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgbiApO1xuICAgICAgICBcInJ1bGVcIiwgcnVsZV90b195b2pzb24gfmZpbGVuYW1lcyByO1xuICAgICAgXVxuICB8IFVQREFURSAodiwgZSkgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiO1xuICAgICAgICBcInZhclwiLCBgSW50IHY7XG4gICAgICAgICggXCJ2YWx1ZVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZSApO1xuICAgICAgXVxuICB8IFNOQVBTSE9UIChyYXcsIGYpIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCI7XG4gICAgICAgIFwicmF3XCIsIGBCb29sIHJhdztcbiAgICAgICAgXCJmaWxlXCIsIEpzb25VdGlsLm9mX2xpc3QgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZjtcbiAgICAgIF1cbiAgfCBTVE9QIGYgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiO1xuICAgICAgICBcImZpbGVcIiwgSnNvblV0aWwub2ZfbGlzdCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmO1xuICAgICAgXVxuICB8IENGTE9XIChuYW1lLCBpZHMsIHRlc3RzKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJDRkxPV1wiO1xuICAgICAgICBcIm5hbWVcIiwgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZyBuYW1lO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgICAoIFwidGVzdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF90b19qc29uIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbikpXG4gICAgICAgICAgICB0ZXN0cyApO1xuICAgICAgXVxuICB8IENGTE9XT0ZGIChuYW1lLCBpZHMpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJDRkxPV09GRlwiO1xuICAgICAgICBcIm5hbWVcIiwgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZyBuYW1lO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgXVxuICB8IERJTiAoa2luZCwgZikgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiO1xuICAgICAgICBcImtpbmRcIiwgZGluX2tpbmRfdG9feW9qc29uIGtpbmQ7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG4gIHwgRElOT0ZGIGYgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCI7XG4gICAgICAgIFwiZmlsZVwiLCBKc29uVXRpbC5vZl9saXN0IChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGY7XG4gICAgICBdXG4gIHwgUExPVEVOVFJZIC0+IGBBc3NvYyBbIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQTE9UTk9XXCIgXVxuICB8IFBSSU5UIChmLCB0KSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIjtcbiAgICAgICAgXCJ0ZXh0XCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSB0KTtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cbiAgfCBTUEVDSUVTIChmLCBpZHMsIHRlc3RzKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTXCI7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICAgIFwicGF0dGVyblwiLCBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiBpZHM7XG4gICAgICAgICggXCJ0ZXN0c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uKSlcbiAgICAgICAgICAgIHRlc3RzICk7XG4gICAgICBdXG4gIHwgU1BFQ0lFU19PRkYgZiAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIjtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cblxubGV0IG1vZGlmaWNhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gICAgLT5cbiAgICBQUklOVFxuICAgICAgKCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBmLFxuICAgICAgICBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSB0IClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF0gLT5cbiAgICBQUklOVCAoW10sIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIHQpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImZpbGVcIiwgYExpc3QgZik7IChcImtpbmRcIiwga2luZCkgXVxuICB8IGBBc3NvYyBbIChcImtpbmRcIiwga2luZCk7IChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwia2luZFwiLCBraW5kKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwia2luZFwiLCBraW5kKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJraW5kXCIsIGtpbmQpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJraW5kXCIsIGtpbmQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKSBdIC0+XG4gICAgRElOIChkaW5fa2luZF9vZl95b2pzb24ga2luZCwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgZilcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFyXCIsIGBJbnQgdik7IChcInZhbHVlXCIsIGUpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YXJcIiwgYEludCB2KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhbHVlXCIsIGUpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFsdWVcIiwgZSk7IChcInZhclwiLCBgSW50IHYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YXJcIiwgYEludCB2KTsgKFwidmFsdWVcIiwgZSk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWx1ZVwiLCBlKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhclwiLCBgSW50IHYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWx1ZVwiLCBlKTsgKFwidmFyXCIsIGBJbnQgdik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpIF0gLT5cbiAgICBVUERBVEVcbiAgICAgICh2LCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGUpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJydWxlXCIsIHIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJ1bGVcIiwgcik7IChcInJlcGVhdHNcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInJlcGVhdHNcIiwgbik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicnVsZVwiLCByKSBdXG4gIHwgYEFzc29jIFsgKFwicnVsZVwiLCByKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJyZXBlYXRzXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJydWxlXCIsIHIpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIikgXVxuICB8IGBBc3NvYyBbIChcInJ1bGVcIiwgcik7IChcInJlcGVhdHNcIiwgbik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKSBdIC0+XG4gICAgSVRFUl9SVUxFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbixcbiAgICAgICAgcnVsZV9vZl95b2pzb24gfmZpbGVuYW1lcyByIClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBMT1ROT1dcIikgXSAtPiBQTE9URU5UUllcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXSAtPlxuICAgIERJTk9GRiAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXSAtPlxuICAgIERJTk9GRiBbXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXSAtPlxuICAgIFNOQVBTSE9UIChmYWxzZSwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF1cbiAgICAtPlxuICAgIFNOQVBTSE9UIChyYXcsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYE51bGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF0gLT5cbiAgICBTTkFQU0hPVCAocmF3LCBbXSlcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXSAtPlxuICAgIFNOQVBTSE9UIChmYWxzZSwgW10pXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIikgXSAtPlxuICAgIFNUT1AgKExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpIF0gLT5cbiAgICBTVE9QIFtdXG4gIHwgYEFzc29jIF8gYXMgbCB3aGVuIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFjdGlvblwiIGwgPSBgU3RyaW5nIFwiQ0ZMT1dcIiAtPlxuICAgIENGTE9XXG4gICAgICAoIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJuYW1lXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF9vZl9qc29uIE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbikpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRlc3RzXCIgbCkgKVxuICB8IGBBc3NvYyBfIGFzIGwgd2hlbiBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhY3Rpb25cIiBsID0gYFN0cmluZyBcIkNGTE9XT0ZGXCJcbiAgICAtPlxuICAgIENGTE9XT0ZGXG4gICAgICAoIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJuYW1lXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiKTsgKFwiZmlsZVwiLCBwKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBwKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiKSBdIC0+XG4gICAgU1BFQ0lFU19PRkYgKEpzb25VdGlsLnRvX2xpc3QgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgcClcbiAgfCBgQXNzb2MgXyBhcyBsIHdoZW4gWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWN0aW9uXCIgbCA9IGBTdHJpbmcgXCJTUEVDSUVTXCJcbiAgICAtPlxuICAgIFNQRUNJRVNcbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImZpbGVcIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicGF0dGVyblwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X29mX2pzb24gTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGVzdHNcIiBsKSApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG1vZGlmaWNhdGlvblwiLCB4KSlcblxudHlwZSBwZXJ0dXJiYXRpb24gPSB7XG4gIGFsYXJtOiBOYnIudCBvcHRpb247XG4gIHByZWNvbmRpdGlvbjogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkO1xuICBlZmZlY3Q6IG1vZGlmaWNhdGlvbiBsaXN0O1xuICByZXBlYXQ6IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZDtcbiAgbmVlZHNfYmFja3RyYWNrOiBib29sO1xufVxuXG5sZXQgYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuYm9vbF90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBib29sX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHBlcnR1cmJhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyBwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJhbGFybVwiLCBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biBuIC0+IE5ici50b195b2pzb24gbikgcC5hbGFybTtcbiAgICAgICggXCJjb25kaXRpb25cIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIHAucHJlY29uZGl0aW9uICk7XG4gICAgICBcImVmZmVjdFwiLCBKc29uVXRpbC5vZl9saXN0IChtb2RpZmljYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMpIHAuZWZmZWN0O1xuICAgICAgKCBcInJlcGVhdFwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgcC5yZXBlYXQgKTtcbiAgICAgIFwibmVlZHNfYmFja3RyYWNrXCIsIGBCb29sIHAubmVlZHNfYmFja3RyYWNrO1xuICAgIF1cblxubGV0IHBlcnR1cmJhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA1IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGFsYXJtID0gSnNvblV0aWwudG9fb3B0aW9uIE5ici5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJhbGFybVwiIGwpO1xuICAgICAgICAgcHJlY29uZGl0aW9uID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiY29uZGl0aW9uXCIgbCk7XG4gICAgICAgICBlZmZlY3QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKG1vZGlmaWNhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImVmZmVjdFwiIGwpO1xuICAgICAgICAgcmVwZWF0ID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmVwZWF0XCIgbCk7XG4gICAgICAgICBuZWVkc19iYWNrdHJhY2sgPVxuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBCb29sIGIgLT4gYlxuICAgICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbFwiLCB4KSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJuZWVkc19iYWNrdHJhY2tcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwZXJ0dXJiYXRpb25cIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwZXJ0dXJiYXRpb25cIiwgeCkpXG5cbmxldCBleGlzdHNfbW9kaWZpY2F0aW9uIGNoZWNrIGwgPVxuICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgcCAtPiBhY2MgfHwgTGlzdC5leGlzdHMgY2hlY2sgcC5lZmZlY3QpIGZhbHNlIGxcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IGEpIGFjYykpXG4gICAgYWNjXG4gICAgKEFsZ19leHByLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgZSlcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBlID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3QgYSkgYWNjKSlcbiAgICBbXVxuICAgIChBbGdfZXhwci5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgZSlcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcnVsZSBhY2MgciA9XG4gIGxldCBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKHgsIF8pIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgeClcbiAgICAgIGFjYyByLmRlbHRhX3Rva2Vuc1xuICBpblxuICBsZXQgYiA9XG4gICAgbWF0Y2ggci51bmFyeV9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gYVxuICAgIHwgU29tZSAoeCwgXykgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGEgeFxuICBpblxuICBsZXQgYyA9IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBiIHIucmF0ZSBpblxuICBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3Qgci5jb25uZWN0ZWRfY29tcG9uZW50cykgY1xuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludCBhY2MgeCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gLT4gYWNjXG4gICAgICB8IEFsZ19wZXhwciBlIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSlcbiAgICBhY2MgeFxuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb24gYWNjID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ydWxlXG4gICAgICAoZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlKVxuICAgICAgclxuICB8IFVQREFURSAoXywgZSkgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlXG4gIHwgU05BUFNIT1QgKF8sIHApIHwgU1RPUCBwIHwgU1BFQ0lFU19PRkYgcCB8IERJTiAoXywgcCkgfCBESU5PRkYgcCAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHBcbiAgfCBQUklOVCAoZm4sIHApIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludFxuICAgICAgKGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHApXG4gICAgICBmblxuICB8IENGTE9XIChfLCB4LCBfKSB8IENGTE9XT0ZGIChfLCB4KSB8IFNQRUNJRVMgKF8sIHgsIF8pIC0+XG4gICAgTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IHgpIGFjY1xuICB8IFBMT1RFTlRSWSAtPiBhY2NcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9ucyBsID1cbiAgTGlzdC5mb2xkX2xlZnQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb24gW10gbFxuXG5sZXQgbWFwX2V4cHJfcnVsZSBmIHggPVxuICB7XG4gICAgcmF0ZSA9IGYgeC5yYXRlO1xuICAgIHVuYXJ5X3JhdGUgPSBPcHRpb25fdXRpbC5tYXAgKGZ1biAoeCwgZCkgLT4gZiB4LCBkKSB4LnVuYXJ5X3JhdGU7XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPSB4LmNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgIHJlbW92ZWQgPSB4LnJlbW92ZWQ7XG4gICAgaW5zZXJ0ZWQgPSB4Lmluc2VydGVkO1xuICAgIGRlbHRhX3Rva2VucyA9IExpc3QubWFwIChmdW4gKHgsIHQpIC0+IGYgeCwgdCkgeC5kZWx0YV90b2tlbnM7XG4gICAgc3ludGFjdGljX3J1bGUgPSB4LnN5bnRhY3RpY19ydWxlO1xuICAgIGluc3RhbnRpYXRpb25zID0geC5pbnN0YW50aWF0aW9ucztcbiAgfVxuXG5sZXQgZm9sZF9leHByX3J1bGUgZiB4IHIgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjICh5LCBfKSAtPiBmIGFjYyB5KVxuICAgIChPcHRpb25fdXRpbC5mb2xkIChmdW4gYSAoZSwgXykgLT4gZiBhIGUpIChmIHggci5yYXRlKSByLnVuYXJ5X3JhdGUpXG4gICAgci5kZWx0YV90b2tlbnNcblxubGV0IG1hcF9leHByX21vZGlmaWNhdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+IElURVJfUlVMRSAoZiBlLCBtYXBfZXhwcl9ydWxlIGYgcilcbiAgfCBVUERBVEUgKGksIGUpIC0+IFVQREFURSAoaSwgZiBlKVxuICB8IFNOQVBTSE9UIChyYXcsIHApIC0+IFNOQVBTSE9UIChyYXcsIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBTVE9QIHAgLT4gU1RPUCAobWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IFBSSU5UIChmbiwgcCkgLT4gUFJJTlQgKG1hcF9leHByX3ByaW50IGYgZm4sIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBESU4gKGIsIHApIC0+IERJTiAoYiwgbWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IERJTk9GRiBwIC0+IERJTk9GRiAobWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IChDRkxPVyBfIHwgQ0ZMT1dPRkYgXyB8IFNQRUNJRVNfT0ZGIF8gfCBQTE9URU5UUlkpIGFzIHggLT4geFxuICB8IFNQRUNJRVMgKHAsIHgsIHQpIC0+IFNQRUNJRVMgKG1hcF9leHByX3ByaW50IGYgcCwgeCwgdClcblxubGV0IGZvbGRfZXhwcl9tb2RpZmljYXRpb24gZiB4ID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+IGZvbGRfZXhwcl9ydWxlIGYgKGYgeCBlKSByXG4gIHwgVVBEQVRFIChfLCBlKSAtPiBmIHggZVxuICB8IFNOQVBTSE9UIChfLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcbiAgfCBTVE9QIHAgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgUFJJTlQgKGZuLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiAoZm9sZF9leHByX3ByaW50IGYgeCBwKSBmblxuICB8IERJTiAoXywgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgRElOT0ZGIHAgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgQ0ZMT1cgXyB8IENGTE9XT0ZGIF8gfCBTUEVDSUVTX09GRiBfIHwgUExPVEVOVFJZIC0+IHhcbiAgfCBTUEVDSUVTIChwLCBfLCBfKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcblxubGV0IG1hcF9leHByX3BlcnR1cmJhdGlvbiBmX2FsZyBmX2Jvb2wgeCA9XG4gIHtcbiAgICBhbGFybSA9IHguYWxhcm07XG4gICAgcHJlY29uZGl0aW9uID0gZl9ib29sIHgucHJlY29uZGl0aW9uO1xuICAgIGVmZmVjdCA9IExpc3QubWFwIChtYXBfZXhwcl9tb2RpZmljYXRpb24gZl9hbGcpIHguZWZmZWN0O1xuICAgIHJlcGVhdCA9IGZfYm9vbCB4LnJlcGVhdDtcbiAgICBuZWVkc19iYWNrdHJhY2sgPSB4Lm5lZWRzX2JhY2t0cmFjaztcbiAgfVxuXG5sZXQgZm9sZF9leHByX3BlcnR1cmJhdGlvbiBmX2FsZyBmX2Jvb2wgYWNjIHggPVxuICBsZXQgYTEgPSBmX2Jvb2wgYWNjIHgucHJlY29uZGl0aW9uIGluXG4gIGxldCBhMiA9IExpc3QuZm9sZF9sZWZ0IChmb2xkX2V4cHJfbW9kaWZpY2F0aW9uIGZfYWxnKSBhMSB4LmVmZmVjdCBpblxuICBmX2Jvb2wgYTIgeC5yZXBlYXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYW5ub3QpIGxpbmsgPVxuICB8IEFOWV9GUkVFXG4gIHwgTE5LX1ZBTFVFIG9mIGludCAqICdhbm5vdFxuICB8IExOS19GUkVFXG4gIHwgTE5LX0FOWVxuICB8IExOS19TT01FXG4gIHwgTE5LX1RZUEUgb2YgJ2EgKiAnYSAgKCoqIHBvcnQgKiBhZ2VudF90eXBlICopXG5cbnR5cGUgc3dpdGNoaW5nID0gTGlua2VkIG9mIGludCB8IEZyZWVkIHwgTWFpbnRhaW5lZCB8IEVyYXNlZFxuXG50eXBlIHJ1bGVfaW50ZXJuYWwgPVxuICB8IElfQU5ZXG4gIHwgSV9BTllfQ0hBTkdFRCBvZiBpbnRcbiAgfCBJX0FOWV9FUkFTRURcbiAgfCBJX1ZBTF9DSEFOR0VEIG9mIGludCAqIGludFxuICB8IElfVkFMX0VSQVNFRCBvZiBpbnRcblxudHlwZSBydWxlX2FnZW50ID0ge1xuICByYV90eXBlOiBpbnQ7XG4gIHJhX2VyYXNlZDogYm9vbDtcbiAgcmFfcG9ydHM6ICgoaW50LCBpbnQgKiBpbnQpIGxpbmsgTG9jLmFubm90ZWQgKiBzd2l0Y2hpbmcpIGFycmF5O1xuICByYV9pbnRzOiBydWxlX2ludGVybmFsIGFycmF5O1xuICByYV9zeW50YXg6XG4gICAgKCgoaW50LCBpbnQgKiBpbnQpIGxpbmsgTG9jLmFubm90ZWQgKiBzd2l0Y2hpbmcpIGFycmF5XG4gICAgKiBydWxlX2ludGVybmFsIGFycmF5KVxuICAgIG9wdGlvbjtcbn1cblxudHlwZSBydWxlX21peHR1cmUgPSBydWxlX2FnZW50IGxpc3RcblxudHlwZSBydWxlID0ge1xuICByX21peDogcnVsZV9taXh0dXJlO1xuICByX2NyZWF0ZWQ6IFJhd19taXh0dXJlLnQ7XG4gIHJfZGVsdGFfdG9rZW5zOiAoKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogaW50KSBsaXN0O1xuICByX3JhdGU6IChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZDtcbiAgcl91bl9yYXRlOlxuICAgICgocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgb3B0aW9uO1xuICByX2VkaXRfc3R5bGU6IGJvb2w7XG59XG5cbmxldCBwcmludF9saW5rIHByX3BvcnQgcHJfdHlwZSBwcl9hbm5vdCBmID0gZnVuY3Rpb25cbiAgfCBBTllfRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCJcbiAgfCBMTktfVFlQRSAocCwgYSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCIgKHByX3BvcnQgYSkgcCBwcl90eXBlIGFcbiAgfCBMTktfQU5ZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiNcIlxuICB8IExOS19GUkVFIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIlxuICB8IExOS19TT01FIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9cIlxuICB8IExOS19WQUxVRSAoaSwgYSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpJWFcIiBpIHByX2Fubm90IGFcblxubGV0IGxpbmtfdG9fanNvbiBwb3J0X3RvX2pzb24gdHlwZV90b19qc29uIGFubm90X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEFOWV9GUkVFIC0+IGBTdHJpbmcgXCJBTllfRlJFRVwiXG4gIHwgTE5LX0ZSRUUgLT4gYFN0cmluZyBcIkZSRUVcIlxuICB8IExOS19UWVBFIChwLCBhKSAtPiBgTGlzdCBbIHBvcnRfdG9fanNvbiBhIHA7IHR5cGVfdG9fanNvbiBhIF1cbiAgfCBMTktfQU5ZIC0+IGBOdWxsXG4gIHwgTE5LX1NPTUUgLT4gYFN0cmluZyBcIlNPTUVcIlxuICB8IExOS19WQUxVRSAoaSwgYSkgLT4gYExpc3QgKGBJbnQgaSA6OiBhbm5vdF90b19qc29uIGEpXG5cbmxldCBsaW5rX29mX2pzb24gcG9ydF9vZl9qc29uIHR5cGVfb2ZfanNvbiBhbm5vdGVkX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJBTllfRlJFRVwiIC0+IEFOWV9GUkVFXG4gIHwgYFN0cmluZyBcIkZSRUVcIiAtPiBMTktfRlJFRVxuICB8IGBMaXN0IFsgcDsgYSBdIC0+XG4gICAgbGV0IHggPSB0eXBlX29mX2pzb24gYSBpblxuICAgIExOS19UWVBFIChwb3J0X29mX2pzb24geCBwLCB4KVxuICB8IGBOdWxsIC0+IExOS19BTllcbiAgfCBgU3RyaW5nIFwiU09NRVwiIC0+IExOS19TT01FXG4gIHwgYExpc3QgKGBJbnQgaSA6OiAoKFtdIHwgXyA6OiBfIDo6IF8pIGFzIGEpKSAtPlxuICAgIExOS19WQUxVRSAoaSwgYW5ub3RlZF9vZl9qc29uIGEpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgbGlua1wiLCB4KSlcblxubGV0IHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzIGYgKHMsIGEpID1cbiAgaWYgbHR5cGVzIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLyolYS4lYSovXCJcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGEpXG4gICAgICBzXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICBhXG5cbmxldCBwcmludF9ydWxlX2ludGVybmFsIHNpZ3MgfnNob3dfZXJhc2VkIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIGogLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyMvJWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGpcbiAgfCBJX0FOWV9FUkFTRUQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyMldH1cIiAoZnVuIGYgLT5cbiAgICAgICAgaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiKVxuICB8IElfVkFMX0NIQU5HRUQgKGksIGopIC0+XG4gICAgaWYgaSA8PiBqIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWEvJWF9XCJcbiAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpXG4gICAgICAgIGlcbiAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpXG4gICAgICAgIGpcbiAgICBlbHNlXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBpXG4gIHwgSV9WQUxfRVJBU0VEIGkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhJXR9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcbiAgICAgIChmdW4gZiAtPiBpZiBzaG93X2VyYXNlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi0tXCIpXG5cbmxldCBydWxlX2ludGVybmFsX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+IGBOdWxsXG4gIHwgSV9BTllfQ0hBTkdFRCBqIC0+IGBMaXN0IFsgYFN0cmluZyBcIkFOWVwiOyBgSW50IGogXVxuICB8IElfQU5ZX0VSQVNFRCAtPiBgU3RyaW5nIFwiRVJBU0VEXCJcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPiBgTGlzdCBbIGBJbnQgaTsgYEludCBqIF1cbiAgfCBJX1ZBTF9FUkFTRUQgaSAtPiBgTGlzdCBbIGBJbnQgaTsgYFN0cmluZyBcIkVSQVNFRFwiIF1cblxubGV0IHJ1bGVfaW50ZXJuYWxfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gSV9BTllcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJBTllcIjsgYEludCBqIF0gLT4gSV9BTllfQ0hBTkdFRCBqXG4gIHwgYFN0cmluZyBcIkVSQVNFRFwiIC0+IElfQU5ZX0VSQVNFRFxuICB8IGBMaXN0IFsgYEludCBpOyBgSW50IGogXSAtPiBJX1ZBTF9DSEFOR0VEIChpLCBqKVxuICB8IGBMaXN0IFsgYEludCBpOyBgU3RyaW5nIFwiRVJBU0VEXCIgXSAtPiBJX1ZBTF9FUkFTRUQgaVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHJ1bGVfaW50ZXJuYWxcIiwgeCkpXG5cbmxldCBwcmludF9zd2l0Y2hpbmcgfnNob3dfZXJhc2VkIGYgPSBmdW5jdGlvblxuICB8IExpbmtlZCBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJWlcIiBpXG4gIHwgRnJlZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLy5cIlxuICB8IE1haW50YWluZWQgLT4gKClcbiAgfCBFcmFzZWQgLT4gaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiXG5cbmxldCBzd2l0Y2hpbmdfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRnJlZWQgLT4gYFN0cmluZyBcIkZyZWVkXCJcbiAgfCBNYWludGFpbmVkIC0+IGBTdHJpbmcgXCJNYWludGFpbmVkXCJcbiAgfCBFcmFzZWQgLT4gYFN0cmluZyBcIkVyYXNlZFwiXG4gIHwgTGlua2VkIGkgLT4gSnNvblV0aWwub2ZfaW50IGlcblxubGV0IHN3aXRjaGluZ19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiRnJlZWRcIiAtPiBGcmVlZFxuICB8IGBTdHJpbmcgXCJNYWludGFpbmVkXCIgLT4gTWFpbnRhaW5lZFxuICB8IGBTdHJpbmcgXCJFcmFzZWRcIiAtPiBFcmFzZWRcbiAgfCB4IC0+IExpbmtlZCAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6XCJJbnZhbGlkIFN3aXRjaGluZ1wiIHgpXG5cbmxldCBwcmludF9ydWxlX2xpbmsgc2lncyB+c2hvd19lcmFzZWQgfmx0eXBlcyBmICgoZSwgXyksIHMpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIlslYSVhXVwiXG4gICAgKHByaW50X2xpbmtcbiAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKSlcbiAgICBlXG4gICAgKHByaW50X3N3aXRjaGluZyB+c2hvd19lcmFzZWQpXG4gICAgc1xuXG5sZXQgcHJpbnRfY291bnRlcl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IGMsIG1pbl92YWx1ZSwgdHJ1ZSwgX2NvbnZlcnQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiPSVpXCJcbiAgICAgICgoKkNvdW50ZXJzX2luZm8uYXBwbHlfb3JpZ2luX3RvX3ZhbHVlIGNvbnZlcnQqKSBjICsgbWluX3ZhbHVlKVxuICB8IGMsIG1pbl92YWx1ZSwgZmFsc2UsIGNvbnZlcnQgLT5cbiAgICBsZXQgaSA9ICgqQ291bnRlcnNfaW5mby5hcHBseV9vcmlnaW5fdG9fdmFsdWUgY29udmVydCopIGMgKyBtaW5fdmFsdWUgaW5cbiAgICAobWF0Y2ggY29udmVydCB3aXRoXG4gICAgfCBDb3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI+PSVpXCIgaVxuICAgIHwgQ291bnRlcnNfaW5mby5Gcm9tX2NsdGVfZWxpbWluYXRpb24geCAtPlxuICAgICAgKG1hdGNoIHguQ291bnRlcnNfaW5mby5jb252ZXJ0X3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlcnNfaW5mby5CQVNJU19NSU5VU19JTlBVVCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI+PSVpXCIgaSkpXG5cbmxldCBwcmludF9jb3VudGVyX2RlbHRhIGNvdW50ZXJzIF9jb252ZXJ0IGogZiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExpbmtlZCBpIC0+XG4gICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIGNvdW50ZXJzIGkgaW5cbiAgICBsZXQgcywgKF8sIGlzX2NvdW50ZXIpID0gTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcnMuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgbGV0IGRlbHRhID1cbiAgICAgIGlmIGlzX2NvdW50ZXIgdGhlblxuICAgICAgICBzIC0gMVxuICAgICAgZWxzZVxuICAgICAgICBqIC0gaVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi8rPSVkXCIgZGVsdGFcbiAgfCBGcmVlZCAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQ2Fubm90IGVyYXNlIGFsbCBpbmNyZW1lbnQgYWdlbnRzXCIpKVxuICB8IE1haW50YWluZWQgLT4gKClcbiAgfCBFcmFzZWQgLT4gKClcblxubGV0IHByaW50X3J1bGVfaW50ZiB+bm9Db3VudGVycyBzaWdzIGNvdW50ZXJzX2luZm8gfnNob3dfZXJhc2VkIH5sdHlwZXMgYWdfdHkgZlxuICAgIChwb3J0cywgaW50cywgY291bnRlcnMsIGNyZWF0ZWRfY291bnRlcnMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgTWFpbnRhaW5lZCAtPiBpbnRzLihpKSA8PiBJX0FOWVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgKEVyYXNlZCB8IEZyZWVkIHwgTGlua2VkIF8pXG4gICAgICAgIHwgKChMTktfU09NRSB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfVFlQRSBfIHwgTE5LX1ZBTFVFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKGUsIF8pLCBzd2l0Y2ggPSBwb3J0cy4oaSkgaW5cbiAgICAgICAgbGV0IGlzX2NvdW50ZXIgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT4gZmFsc2VcbiAgICAgICAgICB8IExOS19WQUxVRSAoaiwgXykgLT5cbiAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCBjb3VudGVycyBqIGluXG4gICAgICAgICAgICAgICBsZXQgYywgKGVxLCBpc19jb3VudGVyJykgPVxuICAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVycy5SYXdfbWl4dHVyZS5yYW5rIHJvb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBpZiBpc19jb3VudGVyJyAmJiBub3Qgbm9Db3VudGVycyB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnID1cbiAgICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmdldF9jb3VudGVyX3NpZyBzaWdzIGNvdW50ZXJzX2luZm8gYWdfdHkgaVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBsZXQgbWluX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyX3NpZy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvdW50ZXIgJWEgaW4gYWdlbnQgJWEgc2hvdWxkIGhhdmUgYSBsb3dlciBib3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICAgICAgICAgICBhZ190eVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoTG9jLmFubm90X3dpdGhfZHVtbXkgbXNnKSlcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgbWluX3ZhbHVlLCBfKSAtPiBtaW5fdmFsdWVcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWF7JWElYX1cIlxuICAgICAgICAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgICAgICAgIGkgcHJpbnRfY291bnRlcl90ZXN0XG4gICAgICAgICAgICAgICAgICAgKCBjIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgIG1pbl92YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgIGVxLFxuICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9zaWcuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlIClcbiAgICAgICAgICAgICAgICAgICAocHJpbnRfY291bnRlcl9kZWx0YSBjcmVhdGVkX2NvdW50ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9zaWcuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlIGopXG4gICAgICAgICAgICAgICAgICAgc3dpdGNoO1xuICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBub3QgaXNfY291bnRlciB0aGVuXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhJWFcIlxuICAgICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICAgIGlcbiAgICAgICAgICAgICAgKHByaW50X3J1bGVfaW50ZXJuYWwgc2lncyB+c2hvd19lcmFzZWQgYWdfdHkgaSlcbiAgICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgICAgKHByaW50X3J1bGVfbGluayBzaWdzIH5zaG93X2VyYXNlZCB+bHR5cGVzKVxuICAgICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICAgICkgZWxzZVxuICAgICAgICBhdXggZW1wdHkgKHN1Y2MgaSlcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCA9XG4gIGxldCB0ID0gUmF3X21peHR1cmUuY3JlYXRlIDEgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUucG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnLnJhX3R5cGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSAoYmVmb3JlLCBhZnRlcikgLT5cbiAgICAgICAgICAgIGxldCAoYSwgXyksIF8gPSBhZy5yYV9wb3J0cy4oYWZ0ZXIpIGluXG4gICAgICAgICAgICBsZXQgKGIsIF8pLCBfID0gYWcucmFfcG9ydHMuKGJlZm9yZSkgaW5cbiAgICAgICAgICAgIChtYXRjaCBiIHdpdGhcbiAgICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT4gKClcbiAgICAgICAgICAgIHwgTE5LX1ZBTFVFIChsbmtfYiwgXykgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IExOS19WQUxVRSAobG5rX2EsIF8pIC0+IFJhd19taXh0dXJlLnVuaW9uIHQgbG5rX2IgbG5rX2FcbiAgICAgICAgICAgICAgfCBBTllfRlJFRSB8IExOS19GUkVFIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgKHMsICh0cnVlLCB0cnVlKSlcbiAgICAgICAgICAgICAgfCBMTktfQU5ZIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgKHMsIChmYWxzZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUG9ydCBhIG9mIF9fY291bnRlcl9hZ2VudCBhZ2VudCBub3Qgd2VsbCBzcGVjaWZpZWRcIikpKSkpXG4gICAgICAgIG1peFxuICBpblxuICB0XG5cbmxldCBwcmludF9ydWxlX2FnZW50IH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mbyB+bHR5cGVzIGNvdW50ZXJzXG4gICAgY3JlYXRlZF9jb3VudGVycyBmIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSkldFwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgYWcucmFfdHlwZVxuICAgIChwcmludF9ydWxlX2ludGYgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIH5zaG93X2VyYXNlZDpmYWxzZSB+bHR5cGVzXG4gICAgICAgYWcucmFfdHlwZSkgKGFnLnJhX3BvcnRzLCBhZy5yYV9pbnRzLCBjb3VudGVycywgY3JlYXRlZF9jb3VudGVycylcbiAgICAoZnVuIGYgLT4gaWYgYWcucmFfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLVwiKVxuXG5sZXQgcHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mbyB+bHR5cGVzIGNyZWF0ZWQgZiBtaXggPVxuICBsZXQgY291bnRlcl9hZ2VudHMgPSB1bmlvbl9maW5kX2NvdW50ZXJzIChTb21lIHNpZ3MpIG1peCBpblxuICBsZXQgY3JlYXRlZF9pbmNyID0gUmF3X21peHR1cmUudW5pb25fZmluZF9jb3VudGVycyAoU29tZSBzaWdzKSBjcmVhdGVkIGluXG4gIGxldCByZWMgYXV4X3ByaW50IHNvbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBoLnJhX3R5cGUgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICBhdXhfcHJpbnQgc29tZSB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gaWYgc29tZSB0aGVuIFBwLmNvbW1hIGYgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9ydWxlX2FnZW50IH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mbyB+bHR5cGVzIGNvdW50ZXJfYWdlbnRzXG4gICAgICAgICAgICBjcmVhdGVkX2luY3IgZiBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9wcmludCB0cnVlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4X3ByaW50IGZhbHNlIG1peFxuXG5sZXQgcHJpbnRfaW50ZXJuYWxfbGhzIHNpZ3MgYWdfdHkgc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBJX0FOWSAtPiAoKVxuICB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJ7I31cIlxuICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBpXG5cbmxldCBwcmludF9pbnRlcm5hbF9yaHMgc2lncyBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+ICgpXG4gIHwgSV9BTllfQ0hBTkdFRCBqIHwgSV9WQUxfQ0hBTkdFRCAoXywgaikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBqXG4gIHwgSV9BTllfRVJBU0VEIHwgSV9WQUxfRVJBU0VEIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwcmludF9saW5rX2xocyB+bHR5cGVzIHNpZ3MgZiAoKGUsIF8pLCBfKSA9XG4gIHByaW50X2xpbmtcbiAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKVxuICAgIGYgZVxuXG5sZXQgcHJpbnRfbGlua19yaHMgfmx0eXBlcyBzaWdzIGYgKChlLCBfKSwgcykgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBMaW5rZWQgaSAtPlxuICAgIHByaW50X2xpbmtcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgKGZ1biBfICgpIC0+ICgpKVxuICAgICAgZlxuICAgICAgKExOS19WQUxVRSAoaSwgKCkpKVxuICB8IEZyZWVkIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIlxuICB8IE1haW50YWluZWQgLT5cbiAgICBwcmludF9saW5rXG4gICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgIChwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncylcbiAgICAgIGYgZVxuICB8IEVyYXNlZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHByaW50X2ludGZfbGhzIH5sdHlwZXMgc2lncyBhZ190eSBmIChwb3J0cywgaW50cykgPVxuICBsZXQgcmVjIGF1eCBlbXB0eSBpID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHBvcnRzLihpKSB3aXRoXG4gICAgICAgIHwgKChMTktfU09NRSB8IExOS19GUkVFIHwgQU5ZX0ZSRUUgfCBMTktfVFlQRSBfIHwgTE5LX1ZBTFVFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIF8gLT5cbiAgICAgICAgICAobWF0Y2ggaW50cy4oaSkgd2l0aFxuICAgICAgICAgIHwgSV9BTlkgfCBJX0FOWV9FUkFTRUQgfCBJX0FOWV9DSEFOR0VEIF8gLT4gZmFsc2VcbiAgICAgICAgICB8IElfVkFMX0NIQU5HRUQgXyB8IElfVkFMX0VSQVNFRCBfIC0+IHRydWUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhWyVhXVwiXG4gICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgaVxuICAgICAgICAgICAgKHByaW50X2ludGVybmFsX2xocyBzaWdzIGFnX3R5IGkpXG4gICAgICAgICAgICBpbnRzLihpKVxuICAgICAgICAgICAgKHByaW50X2xpbmtfbGhzIH5sdHlwZXMgc2lncylcbiAgICAgICAgICAgIHBvcnRzLihpKVxuICAgICAgICBpblxuICAgICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICAgICkgZWxzZVxuICAgICAgICBhdXggZW1wdHkgKHN1Y2MgaSlcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgcHJpbnRfaW50Zl9yaHMgfmx0eXBlcyBzaWdzIGFnX3R5IGYgKHBvcnRzLCBpbnRzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlblxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgICAgfCAoKExOS19TT01FIHwgTE5LX0ZSRUUgfCBBTllfRlJFRSB8IExOS19UWVBFIF8gfCBMTktfVkFMVUUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgKEVyYXNlZCB8IEZyZWVkIHwgTGlua2VkIF8pIC0+IHRydWVcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIE1haW50YWluZWQgLT5cbiAgICAgICAgICAobWF0Y2ggaW50cy4oaSkgd2l0aFxuICAgICAgICAgIHwgSV9BTlkgLT4gZmFsc2VcbiAgICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIGopIC0+IGkgPD4galxuICAgICAgICAgIHwgSV9BTllfRVJBU0VEIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9WQUxfRVJBU0VEIF8gLT4gdHJ1ZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFbJWFdXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICBpXG4gICAgICAgICAgICAocHJpbnRfaW50ZXJuYWxfcmhzIHNpZ3MgYWdfdHkgaSlcbiAgICAgICAgICAgIGludHMuKGkpXG4gICAgICAgICAgICAocHJpbnRfbGlua19yaHMgfmx0eXBlcyBzaWdzKVxuICAgICAgICAgICAgcG9ydHMuKGkpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSAoc3VjYyBpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGF1eCBlbXB0eSAoc3VjYyBpKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBwcmludF9hZ2VudF9saHMgfmx0eXBlcyBzaWdzIGYgYWcgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKVwiXG4gICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgIGFnLnJhX3R5cGVcbiAgICAocHJpbnRfaW50Zl9saHMgfmx0eXBlcyBzaWdzIGFnLnJhX3R5cGUpXG4gICAgKGFnLnJhX3BvcnRzLCBhZy5yYV9pbnRzKVxuXG5sZXQgcHJpbnRfYWdlbnRfcmhzIH5sdHlwZXMgc2lncyBmIGFnID1cbiAgaWYgbm90IGFnLnJhX2VyYXNlZCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSlcIlxuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgYWcucmFfdHlwZVxuICAgICAgKHByaW50X2ludGZfcmhzIH5sdHlwZXMgc2lncyBhZy5yYV90eXBlKVxuICAgICAgKGFnLnJhX3BvcnRzLCBhZy5yYV9pbnRzKVxuXG5sZXQgcHJpbnRfcmhzIH5ub0NvdW50ZXJzIH5sdHlwZXMgc2lncyBjb3VudGVyc19pbmZvIGNyZWF0ZWQgZiBtaXggPVxuICBsZXQgcmVjIGF1eCBlbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmluaXRpYWxfY29tbWE6KG5vdCBlbXB0eSkgfmNyZWF0ZWQ6ZmFsc2VcbiAgICAgICAgfnNpZ3MgfmNvdW50ZXJzX2luZm8gZiBjcmVhdGVkXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGgucmFfZXJhc2VkIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldC5cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuY29tbWEpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSB0XG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLmNvbW1hKVxuICAgICAgICAgICAgKHByaW50X2FnZW50X3JocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSB0XG4gICAgICApXG4gIGluXG4gIGF1eCB0cnVlIG1peFxuXG5sZXQgcHJpbnRfcmF0ZXMgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIHByX3RvayBwcl92YXIgZiByID1cbiAgbGV0IGx0eXBlcyA9IGZhbHNlIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgQEAgJWEldFwiXG4gICAgKEFsZ19leHByLnByaW50XG4gICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIGNvdW50ZXJzX2luZm8gfmx0eXBlcyBbXSlcbiAgICAgICAgICAgbSlcbiAgICAgICBwcl90b2sgcHJfdmFyKVxuICAgIChmc3Qgci5yX3JhdGUpXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCByLnJfdW5fcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoKHJhLCBfKSwgbWF4X2Rpc3QpIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJWF9XCJcbiAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAoZnVuIGYgbSAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mbyB+bHR5cGVzIFtdKVxuICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgcmFcbiAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiAobWQsIF8pIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCJcbiAgICAgICAgICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIGNvdW50ZXJzX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH5sdHlwZXMgW10pXG4gICAgICAgICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgICAgICAgICBwcl90b2sgcHJfdmFyKVxuICAgICAgICAgICAgICAgICBtZCkpXG4gICAgICAgICAgbWF4X2Rpc3QpXG5cbmxldCBwcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsIHNpZ3MgY291bnRlcnNfaW5mbyBwcl90b2sgcHJfdmFyIGYgciA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiV0JXQlYSV0QF1cIlxuICAgIChmdW4gZiAtPlxuICAgICAgaWYgZnVsbCB8fCByLnJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mbyB+bHR5cGVzOmZhbHNlXG4gICAgICAgICAgICAgci5yX2NyZWF0ZWQpXG4gICAgICAgICAgci5yX21peFxuICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6KHIucl9taXggPD4gW10pIH5zaWdzIH5jb3VudGVyc19pbmZvKVxuICAgICAgICAgIHIucl9jcmVhdGVkXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0JWEgLT4gJWFcIlxuICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChwcmludF9hZ2VudF9saHMgfmx0eXBlczpmYWxzZSBzaWdzKSlcbiAgICAgICAgICByLnJfbWl4XG4gICAgICAgICAgKGZ1biBmIC0+IGlmIHIucl9taXggPD4gW10gJiYgci5yX2NyZWF0ZWQgPD4gW10gdGhlbiBQcC5jb21tYSBmKVxuICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIikpXG4gICAgICAgICAgci5yX2NyZWF0ZWRcbiAgICAgICAgICAocHJpbnRfcmhzIH5ub0NvdW50ZXJzIH5sdHlwZXM6ZmFsc2Ugc2lncyBjb3VudGVyc19pbmZvIHIucl9jcmVhdGVkKVxuICAgICAgICAgIHIucl9taXgpXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCByLnJfZGVsdGFfdG9rZW5zIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB8IFwiKVxuICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiAoKG5iLCBfKSwgdGspIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgJWFcIlxuICAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgfmx0eXBlczpmYWxzZSBbXSlcbiAgICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgIG5iIHByX3RvayB0aykpXG4gICAgci5yX2RlbHRhX3Rva2Vuc1xuICAgIChmdW4gZiAtPlxuICAgICAgaWYgZnVsbCB0aGVuIHByaW50X3JhdGVzIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mbyBwcl90b2sgcHJfdmFyIGYgcilcblxubGV0IHJ1bGVfYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMgYSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwidHlwZVwiLCBgSW50IGEucmFfdHlwZTtcbiAgICAgICggXCJiaW5kaW5nc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAoZSwgcykgYyAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAobGlua190b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocywgYSkgLT4gWyBgSW50IHM7IGBJbnQgYSBdKSlcbiAgICAgICAgICAgICAgICAgICAgIGU7XG4gICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nX3RvX2pzb24gcztcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgOjogYylcbiAgICAgICAgICAgICBhLnJhX3BvcnRzIFtdKSApO1xuICAgICAgKCBcInN0YXRlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGMgLT4gcnVsZV9pbnRlcm5hbF90b19qc29uIHggOjogYylcbiAgICAgICAgICAgICBhLnJhX2ludHMgW10pICk7XG4gICAgICBcImVyYXNlZFwiLCBgQm9vbCBhLnJhX2VyYXNlZDtcbiAgICBdXG5cbmxldCBydWxlX2FnZW50X29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHBvcnRzID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJiaW5kaW5nc1wiIGwgd2l0aFxuICAgICAgICAgfCBgTGlzdCBzIC0+XG4gICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgZTsgcyBdIC0+XG4gICAgICAgICAgICAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgIChsaW5rX29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyAtPiBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsgYEludCBzOyBgSW50IGEgXSAtPiBzLCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpKVxuICAgICAgICAgICAgICAgICAgICAgZSxcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmdfb2ZfanNvbiBzIClcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgc1xuICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgIGluXG4gICAgICAgbGV0IGludHMgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcInN0YXRlc1wiIGwgd2l0aFxuICAgICAgICAgfCBgTGlzdCBzIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHJ1bGVfaW50ZXJuYWxfb2ZfanNvbiBzXG4gICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICByYV90eXBlID0gWW9qc29uLkJhc2ljLlV0aWwudG9faW50IChMaXN0LmFzc29jIFwidHlwZVwiIGwpO1xuICAgICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgIHJhX2ludHMgPSBpbnRzO1xuICAgICAgICAgcmFfZXJhc2VkID0gWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBcImVyYXNlZFwiIGwpO1xuICAgICAgICAgcmFfc3ludGF4ID0gU29tZSAocG9ydHMsIGludHMpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJ1bGVfYWdlbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBydWxlX2FnZW50XCIsIHgpKVxuXG5sZXQgcnVsZV9taXh0dXJlX3RvX2pzb24gZmlsZW5hbWVzID1cbiAgSnNvblV0aWwub2ZfbGlzdCAocnVsZV9hZ2VudF90b19qc29uIGZpbGVuYW1lcylcblxubGV0IHJ1bGVfbWl4dHVyZV9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLnRvX2xpc3QgKHJ1bGVfYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpXG5cbmxldCBsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKHJ1bGVfbWl4dHVyZV90b19qc29uIGZpbGVuYW1lcylcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAocnVsZV9taXh0dXJlX29mX2pzb24gZmlsZW5hbWVzKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgcnVsZV90b19qc29uIH5maWxlbmFtZXMgciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwibWl4dHVyZVwiLCBydWxlX21peHR1cmVfdG9fanNvbiBmaWxlbmFtZXMgci5yX21peDtcbiAgICAgIFwiY3JlYXRlZFwiLCBSYXdfbWl4dHVyZS50b19qc29uIHIucl9jcmVhdGVkO1xuICAgICAgKCBcImRlbHRhX3Rva2Vuc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludClcbiAgICAgICAgICByLnJfZGVsdGFfdG9rZW5zICk7XG4gICAgICAoIFwicmF0ZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSByLnJfcmF0ZVxuICAgICAgKTtcbiAgICAgICggXCJ1bmFyeV9yYXRlXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykpKSlcbiAgICAgICAgICByLnJfdW5fcmF0ZSApO1xuICAgICAgXCJlZGl0X3N0eWxlXCIsIGBCb29sIHIucl9lZGl0X3N0eWxlO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8IDcgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcl9taXggPSBydWxlX21peHR1cmVfb2ZfanNvbiBmaWxlbmFtZXMgKExpc3QuYXNzb2MgXCJtaXh0dXJlXCIgbCk7XG4gICAgICAgICByX2NyZWF0ZWQgPSBSYXdfbWl4dHVyZS5vZl9qc29uIChMaXN0LmFzc29jIFwiY3JlYXRlZFwiIGwpO1xuICAgICAgICAgcl9kZWx0YV90b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImRlbHRhX3Rva2Vuc1wiIGwpO1xuICAgICAgICAgcl9yYXRlID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmF0ZVwiIGwpO1xuICAgICAgICAgcl91bl9yYXRlID1cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKSkpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ1bmFyeV9yYXRlXCIgbClcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpO1xuICAgICAgICAgcl9lZGl0X3N0eWxlID0gWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBcImVkaXRfc3R5bGVcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJ1bGVcIiwgeCkpXG5cbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb24gcG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJBIG1vZGlmaWNhdGlvbiBpcyBmb3JiaWRkZW4gaGVyZS5cIiwgcG9zKSlcblxubGV0IHJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoXCJJbiBhIHBhdHRlcm4sIGEgc2l0ZSBjYW5ub3QgaGF2ZSBzZXZlcmFsIGludGVybmFsIHN0YXRlcy5cIiwgcG9zKSlcblxubGV0IHJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXMgfnNpZGUgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlRoZSBcIiBeIHN0YXR1cyBeIFwiIHN0YXRlIG9mIGFnZW50ICdcIiBeIGFnZW50X25hbWUgXiBcIicsIHNpdGUgJ1wiIF4gbmFcbiAgICAgICAgIF4gXCInIG9uIHRoZSBcIiBeIHNpZGUgXiBcIiBoYW5kIHNpZGUgaXMgdW5kZXJzcGVjaWZpZWRcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiU2l0ZSAnXCIgXiBuYSBeIFwiJyBvY2N1cnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhpcyBhZ2VudCAnXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICBeIFwiJ1wiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlNpdGUgJ1wiIF4gbmEgXiBcIicgb2NjdXJzIGJvdGggYXMgcG9ydCBhbmQgYXMgY291bnRlciBpbiAnXCJcbiAgICAgICAgIF4gYWdlbnRfbmFtZSBeIFwiJ1wiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiVGhlIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICBeIFwiJyBvY2N1cnMgb25seSBvbmUgdGltZSBpbiB0aGUgbWl4dHVyZS5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfbGlua19zaG91bGRfYmVfcmVtb3ZlZCBpIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJUaGUgbGluayAnXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIicgc2hvdWxkIGJlIG1hZGUgZnJlZSBpbiB0aGUgc2l0ZSAnXCJcbiAgICAgICAgIF4gbmEgXiBcIicgb2YgYWdlbnQgJ1wiIF4gYWdlbnRfbmFtZVxuICAgICAgICAgXiBcIicsIHNpbmNlIGl0IHdpbGwgbWFkZSBiZSBmcmVlIGJ5IHNpZGUtZWZmZWN0LlwiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCBjb3B5X3J1bGVfYWdlbnQgYSA9XG4gIGxldCBwID0gQXJyYXkuY29weSBhLnJhX3BvcnRzIGluXG4gIGxldCBpID0gQXJyYXkuY29weSBhLnJhX2ludHMgaW5cbiAge1xuICAgIHJhX3R5cGUgPSBhLnJhX3R5cGU7XG4gICAgcmFfZXJhc2VkID0gYS5yYV9lcmFzZWQ7XG4gICAgcmFfcG9ydHMgPSBwO1xuICAgIHJhX2ludHMgPSBpO1xuICAgIHJhX3N5bnRheCA9XG4gICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biBfIC0+IEFycmF5LmNvcHkgcCwgQXJyYXkuY29weSBpKSBhLnJhX3N5bnRheDtcbiAgfVxuXG5sZXQgYWdlbnRfdG9fZXJhc2VkIHNpZ3MgciA9XG4gIGxldCByYV9wb3J0cyA9IEFycmF5Lm1hcCAoZnVuIChhLCBfKSAtPiBhLCBFcmFzZWQpIHIucmFfcG9ydHMgaW5cbiAgbGV0IHJhX2ludHMgPVxuICAgIEFycmF5Lm1hcGlcbiAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gSV9WQUxfRVJBU0VEIGlcbiAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgIChtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSByLnJhX3R5cGUgaiBzaWdzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBJX0FOWV9FUkFTRURcbiAgICAgICAgICB8IE5vbmUgLT4gSV9BTlkpKVxuICAgICAgci5yYV9pbnRzXG4gIGluXG4gIHtcbiAgICByYV90eXBlID0gci5yYV90eXBlO1xuICAgIHJhX2VyYXNlZCA9IHRydWU7XG4gICAgcmFfcG9ydHM7XG4gICAgcmFfaW50cztcbiAgICByYV9zeW50YXggPVxuICAgICAgKG1hdGNoIHIucmFfc3ludGF4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgXyAtPiBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpKTtcbiAgfVxuXG5sZXQgdG9fZXJhc2VkIChzaWdzIDogU2lnbmF0dXJlLnMpICh4IDogcnVsZV9taXh0dXJlKSA6IHJ1bGVfbWl4dHVyZSA9XG4gIExpc3QubWFwIChhZ2VudF90b19lcmFzZWQgc2lncykgeFxuXG5sZXQgdG9fbWFpbnRhaW5lZCAoeCA6IHJ1bGVfbWl4dHVyZSkgOiBydWxlX21peHR1cmUgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gciAtPlxuICAgICAgbGV0IHBvcnRzID0gQXJyYXkubWFwIChmdW4gKGEsIF8pIC0+IGEsIE1haW50YWluZWQpIHIucmFfcG9ydHMgaW5cbiAgICAgIGxldCBpbnRzID1cbiAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gSV9WQUxfQ0hBTkdFRCAoaSwgaSlcbiAgICAgICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT4gSV9BTlkpXG4gICAgICAgICAgci5yYV9pbnRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICByYV90eXBlID0gci5yYV90eXBlO1xuICAgICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgcmFfaW50cyA9IGludHM7XG4gICAgICAgIHJhX3N5bnRheCA9XG4gICAgICAgICAgKG1hdGNoIHIucmFfc3ludGF4IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBfIC0+IFNvbWUgKHBvcnRzLCBpbnRzKSk7XG4gICAgICB9KVxuICAgIHhcblxubGV0IHRvX3Jhd19taXh0dXJlIHNpZ3MgeCA9XG4gIExpc3QubWFwXG4gICAgKGZ1biByIC0+XG4gICAgICBsZXQgaW50ZXJuYWxzID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IFNvbWUgaVxuICAgICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgICAgICBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSByLnJhX3R5cGUgaiBzaWdzKVxuICAgICAgICAgIHIucmFfaW50c1xuICAgICAgaW5cbiAgICAgIGxldCBwb3J0cyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgKExOS19TT01FLCBwb3MgfCBMTktfVFlQRSBfLCBwb3MpLCBfIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgci5yYV90eXBlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBwb3J0X25hbWUgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3Mgci5yYV90eXBlKSBqXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICBhZ2VudF9uYW1lIChwb3J0X25hbWUsIHBvcylcbiAgICAgICAgICAgIHwgKExOS19WQUxVRSAoaSwgXyksIF8pLCBfIC0+IFJhd19taXh0dXJlLlZBTCBpXG4gICAgICAgICAgICB8ICgoTE5LX0FOWSB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUpLCBfKSwgXyAtPiBSYXdfbWl4dHVyZS5GUkVFKVxuICAgICAgICAgIHIucmFfcG9ydHNcbiAgICAgIGluXG4gICAgICB7XG4gICAgICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICAgICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICB9KVxuICAgIHhcblxubGV0IG1heF9saW5rX2lkIHIgPVxuICBsZXQgbWF4X3MgbSA9IGZ1bmN0aW9uXG4gICAgfCBMaW5rZWQgaSAtPiBtYXggaSBtXG4gICAgfCBGcmVlZCB8IE1haW50YWluZWQgfCBFcmFzZWQgLT4gbVxuICBpblxuICBsZXQgbWF4X2xpbmtfaWRfc2l0ZXMgbWF4X2lkIGFnID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gbWF4X2lkIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgKExOS19WQUxVRSAoaiwgXyksIF8pLCBzIC0+IG1heF9zIChtYXggaiBtYXhfaWQpIHNcbiAgICAgICAgfCAoKExOS19UWVBFIF8gfCBMTktfU09NRSB8IExOS19GUkVFIHwgTE5LX0FOWSB8IEFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICBtYXhfcyBtYXhfaWQgcylcbiAgICAgIG1heF9pZCBhZy5yYV9wb3J0c1xuICBpblxuICBMaXN0LmZvbGRfbGVmdCBtYXhfbGlua19pZF9zaXRlcyAwIHJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGtleSBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgKCBcIkJ1ZzogTGluayBcIiBeIHN0cmluZ19vZl9pbnQga2V5XG4gICAgICAgICBeIFwiIGlzIHByb2JsZW1hdGljISBMS2FwcGEgaXMgZWl0aGVyIGJyb2tlblwiXG4gICAgICAgICBeIFwiIG9yIHVudXNlZCEgUGxlYXNlIHJlcG9ydC5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBwX2lkID1cbiAgc25kIGNvbnRhY3RfbWFwLih0eV9pZCkuKHBfaWQpXG5cbmxldCBmaW5kX2ltcGxpY2l0X2luZm9zIGNvbnRhY3RfbWFwIGFncyA9XG4gIGxldCBuZXdfc3dpdGNoID0gZnVuY3Rpb25cbiAgICB8IExLYXBwYS5NYWludGFpbmVkIC0+IExLYXBwYS5NYWludGFpbmVkXG4gICAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRXJhc2VkIC0+IExLYXBwYS5GcmVlZFxuICBpblxuICBsZXQgcmVjIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgaSA9XG4gICAgbGV0IHR5X2lkID0gYWcuTEthcHBhLnJhX3R5cGUgaW5cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW4gKFxuICAgICAgbGV0IGN1cnJlbnQnID1cbiAgICAgICAge1xuICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgICAgTEthcHBhLnJhX2ludHMgPSBhZy5MS2FwcGEucmFfaW50cztcbiAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgfVxuICAgICAgICA6OiBjdXJyZW50XG4gICAgICBpblxuICAgICAgYXV4X2FncyBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQnIHRvZG9zIGFnX3RhaWxcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgIHwgKExLYXBwYS5MTktfVFlQRSAocCwgYSksIF8pLCBzIC0+XG4gICAgICAgIGxldCBvcl90eSA9IGksIHR5X2lkIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcG9ydHMuKGkpIDwtXG4gICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKHAsIGEpKSksIHNcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X29uZSAoc3VjYyBmcmVlX2lkKSBwcmV2aW91cyBjdXJyZW50XG4gICAgICAgICAgKChmcmVlX2lkLCAocCwgYSksIG9yX3R5LCBuZXdfc3dpdGNoIHMpIDo6IHRvZG9zKVxuICAgICAgICAgIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKExLYXBwYS5MTktfU09NRSwgXyksIHMgLT5cbiAgICAgICAgbGV0IG9yX3R5ID0gaSwgdHlfaWQgaW5cbiAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIChhLCBwKSBwcmV2JyAtPlxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgcG9ydHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvcnRzJy4oaSkgPC1cbiAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKHAsIGEpKSksIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdG9kb3MnID0gKGZyZWVfaWQsIChwLCBhKSwgb3JfdHksIG5ld19zd2l0Y2ggcykgOjogdG9kb3MgaW5cbiAgICAgICAgICAgIGF1eF9vbmUgKHN1Y2MgZnJlZV9pZCkgcHJldicgY3VycmVudCB0b2RvcycgYWdfdGFpbCBhZyBwb3J0cydcbiAgICAgICAgICAgICAgKHN1Y2MgaSkpXG4gICAgICAgICAgKHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgaSlcbiAgICAgICAgICBwcmV2aW91c1xuICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSwgXyAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIHBvcyksICgoTEthcHBhLk1haW50YWluZWQgfCBMS2FwcGEuRXJhc2VkKSBhcyBzKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICgqIERvIG5vdCBtYWtlIHRlc3QgaWYgYmVpbmcgZnJlZSBpcyB0aGUgb25seSBwb3NzaWJpbGl0eSAqKVxuICAgICAgICAgIGlmIE1vZHMuSW50MlNldC5pc19lbXB0eSAocG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBpKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHBvcnRzLihpKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBMS2FwcGEuRnJlZWQgLT5cbiAgICAgICAgZmFpbHdpdGggXCJBIGZyZWUgc2l0ZSBjYW5ub3QgYmUgZnJlZWRcIlxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgTEthcHBhLkxpbmtlZCBfIC0+XG4gICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIF8pLCBMS2FwcGEuTWFpbnRhaW5lZCAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8ICggKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIHBvcyksXG4gICAgICAgICAgKChMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkZyZWVkKSBhcyBzKSApIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmlzX2VtcHR5IChwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIGkpXG4gICAgICAgICAgJiYgcyA9IExLYXBwYS5GcmVlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBEbyBub3QgbWFrZSB0ZXN0IGlzIGJlaW5nIGZyZWUgaXMgdGhlIG9ubHkgcG9zc2liaWxpdHkgKilcbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4oaSkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgIClcbiAgYW5kIGF1eF9hZ3MgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChMaXN0LnJldiBjdXJyZW50LCB0b2RvcykgOjogcHJldmlvdXNcbiAgICB8IGFnIDo6IGFnX3RhaWwgLT5cbiAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgYWcuTEthcHBhLnJhX3BvcnRzIDBcbiAgaW5cbiAgYXV4X2FncyAoc3VjYyAoTEthcHBhLm1heF9saW5rX2lkIGFncykpIFtdIFtdIFtdIGFnc1xuXG5sZXQgY29tcGxldGVfd2l0aF9jYW5kaWRhdGUgb3V0cyBwcmV2cyBhZyBhZ190YWlsIGlkIHRvZG8gcF9pZCBkc3RfaW5mbyBwX3N3aXRjaFxuICAgID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgcG9ydCAtPlxuICAgICAgaWYgaSA8PiBwX2lkIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIF8pLCBzIC0+XG4gICAgICAgICAgaWYgcyA9IExLYXBwYS5NYWludGFpbmVkIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLCBwX3N3aXRjaFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgIHRvZG8sXG4gICAgICAgICAgICAgIGZhbHNlIClcbiAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICkgZWxzZSBpZiBzID0gTEthcHBhLkVyYXNlZCAmJiBwX3N3aXRjaCA9IExLYXBwYS5GcmVlZCB0aGVuIChcbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IGFnLkxLYXBwYS5yYV9wb3J0cyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LVxuICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgIHRvZG8sXG4gICAgICAgICAgICAgIGZhbHNlIClcbiAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGssIHgpLCBfKSwgcyAtPlxuICAgICAgICAgIGlmIHggPSBkc3RfaW5mbyB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoaiwgXywgKHAnLCBhJyksIHN3JykgLT5cbiAgICAgICAgICAgICAgICAgIGogPSBrICYmIGkgPSBwJyAmJiBhJyA9IGFnLkxLYXBwYS5yYV90eXBlICYmIHN3JyA9IHBfc3dpdGNoKVxuICAgICAgICAgICAgICAgIHRvZG9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWyBfIF0sIHRvZG8nIC0+XG4gICAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IGFnLkxLYXBwYS5yYV9wb3J0cyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHBvcnRzJy4oaSkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCB4KSksIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBMaXN0LnJldl9hcHBlbmQgcHJldnNcbiAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHMnO1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2ludHMgPSBhZy5MS2FwcGEucmFfaW50cztcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgICAgdG9kbycsXG4gICAgICAgICAgICAgICAgZmFsc2UgKVxuICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgIHwgW10sIF8gLT4gYWNjXG4gICAgICAgICAgICB8IF8gOjogXyA6OiBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX1RZUEUgXyB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfU09NRSksIF8pLCBfIC0+IGFjY1xuICAgICAgKSlcbiAgICBvdXRzIGFnLkxLYXBwYS5yYV9wb3J0c1xuXG5sZXQgbmV3X2FnZW50X3dpdGhfb25lX2xpbmsgc2lncyB0eV9pZCBwb3J0IGxpbmsgZHN0X2luZm8gc3dpdGNoID1cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHlfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPSBBcnJheS5tYWtlIGFyaXR5IExLYXBwYS5JX0FOWSBpblxuICBsZXQgKCkgPVxuICAgIHBvcnRzLihwb3J0KSA8LVxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGxpbmssIGRzdF9pbmZvKSksIHN3aXRjaFxuICBpblxuICB7XG4gICAgTEthcHBhLnJhX3R5cGUgPSB0eV9pZDtcbiAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cztcbiAgICBMS2FwcGEucmFfaW50cyA9IGludGVybmFscztcbiAgICBMS2FwcGEucmFfZXJhc2VkID0gZmFsc2U7XG4gICAgTEthcHBhLnJhX3N5bnRheCA9IE5vbmU7XG4gIH1cblxubGV0IHJlYyBhZGRfb25lX2ltcGxpY2l0X2luZm8gc2lncyBpZCAoKChwb3J0LCB0eV9pZCksIGRzdF9pbmZvLCBzKSBhcyBpbmZvKSBhY2NcbiAgICBmcmVzaF9vbmx5X2FjYyBvdXQgdG9kbyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAoIExpc3QucmV2X2FwcGVuZCBhY2NcbiAgICAgICAgWyBuZXdfYWdlbnRfd2l0aF9vbmVfbGluayBzaWdzIHR5X2lkIHBvcnQgaWQgZHN0X2luZm8gcyBdLFxuICAgICAgdG9kbyxcbiAgICAgIGZyZXNoX29ubHlfYWNjIClcbiAgICA6OiBvdXRcbiAgfCBhZyA6OiBhZ190YWlsIC0+XG4gICAgbGV0IG91dF90YWlsID1cbiAgICAgIGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkIGluZm8gKGFnIDo6IGFjYykgZnJlc2hfb25seV9hY2Mgb3V0IHRvZG9cbiAgICAgICAgYWdfdGFpbFxuICAgIGluXG4gICAgaWYgdHlfaWQgPSBhZy5MS2FwcGEucmFfdHlwZSB0aGVuXG4gICAgICBjb21wbGV0ZV93aXRoX2NhbmRpZGF0ZSBvdXRfdGFpbCBhY2MgYWcgYWdfdGFpbCBpZCB0b2RvIHBvcnQgZHN0X2luZm8gc1xuICAgIGVsc2VcbiAgICAgIG91dF90YWlsXG5cbmxldCBhZGRfaW1wbGljaXRfaW5mb3Mgc2lncyBsID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgKG0sIFtdLCBvbmx5X2ZyZXNoKSA6OiB0IC0+IGF1eCAoKG0sIG9ubHlfZnJlc2gpIDo6IGFjYykgdFxuICAgIHwgKG0sIChpZCwgaW5mbywgZHN0X2luZm8sIHMpIDo6IHRvZG8nLCBvbmx5X2ZyZXNoKSA6OiB0IC0+XG4gICAgICBhdXggYWNjXG4gICAgICAgIChhZGRfb25lX2ltcGxpY2l0X2luZm8gc2lncyBpZCAoaW5mbywgZHN0X2luZm8sIHMpIFtdIG9ubHlfZnJlc2ggdCB0b2RvJ1xuICAgICAgICAgICBtKVxuICBpblxuICBhdXggW10gKExpc3QucmV2X21hcCAoZnVuIChhLCBiKSAtPiBhLCBiLCB0cnVlKSAoTGlzdC5yZXYgbCkpXG5cbmxldCBpc19saW5rZWRfb25fcG9ydCBtZSBpIGlkID0gZnVuY3Rpb25cbiAgfCAoTEthcHBhLkxOS19WQUxVRSAoaiwgXyksIF8pLCBfIHdoZW4gaSA9IGogLT4gaWQgPD4gbWVcbiAgfCAoICggKCBMS2FwcGEuTE5LX1ZBTFVFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1RZUEUgX1xuICAgICAgICB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIGZhbHNlXG5cbmxldCBpc19saW5rZWRfb24gaSBhZyA9XG4gIFRvb2xzLmFycmF5X2ZpbHRlciAoaXNfbGlua2VkX29uX3BvcnQgKC0xKSBpKSBhZy5MS2FwcGEucmFfcG9ydHMgPD4gW11cblxubGV0IGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uICgocmVtb3ZlZCwgYWRkZWQpIGFzIHRyYW5zZikgbGlua3NfdHJhbnNmIHBsYWNlXG4gICAgc2l0ZSAoY2FuZCwgXykgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBMS2FwcGEuRnJlZWQgLT5cbiAgICAoIChjYW5kIDo6IHJlbW92ZWQsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlKSA6OiBhZGRlZCksXG4gICAgICBsaW5rc190cmFuc2YgKVxuICB8IExLYXBwYS5NYWludGFpbmVkIC0+IHRyYW5zZiwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLkVyYXNlZCAtPiAoY2FuZCA6OiByZW1vdmVkLCBhZGRlZCksIGxpbmtzX3RyYW5zZlxuICB8IExLYXBwYS5MaW5rZWQgaSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGxpbmtzX3RyYW5zZiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZSkgbGlua3NfdHJhbnNmIGluXG4gICAgICAoY2FuZCA6OiByZW1vdmVkLCBhZGRlZCksIGxpbmtzX3RyYW5zZidcbiAgICB8IFNvbWUgZHN0JyAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rc190cmFuc2YgaW5cbiAgICAgICggKCBjYW5kIDo6IHJlbW92ZWQsXG4gICAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZSksIGRzdCcpIDo6IGFkZGVkICksXG4gICAgICAgIGxpbmtzX3RyYW5zZicgKSlcblxubGV0IGRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiAoKHJlbW92ZWQsIGFkZGVkKSBhcyB0cmFuc2YpIGxpbmtzX3RyYW5zZlxuICAgIHBsYWNlIHNpdGUgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBMS2FwcGEuRnJlZWQgLT5cbiAgICAoIChyZW1vdmVkLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChwbGFjZSwgc2l0ZSkgOjogYWRkZWQpLFxuICAgICAgbGlua3NfdHJhbnNmIClcbiAgfCBMS2FwcGEuRXJhc2VkIC0+IHRyYW5zZiwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuTGlua2VkIGkgLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBsaW5rc190cmFuc2Ygd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5hZGQgaSAocGxhY2UsIHNpdGUpIGxpbmtzX3RyYW5zZiBpblxuICAgICAgdHJhbnNmLCBsaW5rc190cmFuc2YnXG4gICAgfCBTb21lIGRzdCcgLT5cbiAgICAgIGxldCBsaW5rc190cmFuc2YnID0gTW9kcy5JbnRNYXAucmVtb3ZlIGkgbGlua3NfdHJhbnNmIGluXG4gICAgICAoICggcmVtb3ZlZCxcbiAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlKSwgZHN0JykgOjogYWRkZWQgKSxcbiAgICAgICAgbGlua3NfdHJhbnNmJyApKVxuXG5sZXQgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zIHBsIHMgPSBmdW5jdGlvblxuICB8IExLYXBwYS5GcmVlZCAtPiBJbnN0YW50aWF0aW9uLkZyZWUgKHBsLCBzKSA6OiBhY3Rpb25zXG4gIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLk1haW50YWluZWQgfCBMS2FwcGEuRXJhc2VkIC0+IGFjdGlvbnNcblxubGV0IGFkZF9zaWRlX3NpdGUgc2lkZV9zaXRlcyBidCBwbCBzID0gZnVuY3Rpb25cbiAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRXJhc2VkIC0+XG4gICAgKChwbCwgcyksIGJ0KSA6OiBzaWRlX3NpdGVzXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gc2lkZV9zaXRlc1xuXG5sZXQgYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0cyBwbCBzID0gZnVuY3Rpb25cbiAgfCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSwgTEthcHBhLkZyZWVkIC0+IChwbCwgcykgOjogc2lkZV9lZmZlY3RzXG4gIHwgKCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSxcbiAgICAgIChMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pIClcbiAgfCAoICggKCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVFlQRSBfXG4gICAgICAgIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIHNpZGVfZWZmZWN0c1xuXG5sZXQgYWRkX2V4dHJhX3NpZGVfZWZmZWN0cyBzaWRlX2VmZmVjdHMgcGxhY2UgcmVmaW5lZCA9XG4gIGxldCByZWMgYXV4IHNpZGVfZWZmZWN0cyBzaXRlX2lkID1cbiAgICBpZiBzaXRlX2lkIDwgMCB0aGVuXG4gICAgICBzaWRlX2VmZmVjdHNcbiAgICBlbHNlXG4gICAgICBhdXhcbiAgICAgICAgKGFkZF9mcmVlZF9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdHMgcGxhY2Ugc2l0ZV9pZCByZWZpbmVkLihzaXRlX2lkKSlcbiAgICAgICAgKHByZWQgc2l0ZV9pZClcbiAgaW5cbiAgYXV4IHNpZGVfZWZmZWN0cyAocHJlZCAoQXJyYXkubGVuZ3RoIHJlZmluZWQpKVxuXG4oKiBEZWFscyB3aXRoIHRlc3RzLCBlcmFzdXJlIGludGVybmFsIHN0YXRlIGNoYW5nZSBhbmQgcmVsZWFzZSAoYnV0XG4gICBub3QgYmluZGluZykqKVxubGV0IG1ha2VfaW5zdGFudGlhdGlvbiBwbGFjZSBsaW5rcyBldmVudCByZWZfcG9ydHMgaXNfZXJhc2VkID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAge1xuICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPSBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICBhZGRfZXh0cmFfc2lkZV9lZmZlY3RzIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCBwbGFjZVxuICAgICAgICAgIHJlZl9wb3J0cztcbiAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID0gZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgfVxuICB8IFNvbWUgKHBvcnRzLCBpbnRzKSAtPlxuICAgIChtYXRjaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgdGhpc19jY190ZXN0cyA6OiBvX2NjX3Rlc3RzIC0+XG4gICAgICBsZXQgcmVjIGF1eCBzaXRlX2lkIHRlc3RzIGFjdGlvbnMgc2lkZV9lZmZlY3RzX3NyYyBzaWRlX2VmZmVjdHNfZHN0IGxpbmtzXG4gICAgICAgICAgPVxuICAgICAgICBpZiBzaXRlX2lkID49IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICAgICAge1xuICAgICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IHRlc3RzIDo6IG9fY2NfdGVzdHM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgIH1cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHRlc3RzJywgYWN0aW9ucycgPVxuICAgICAgICAgICAgbWF0Y2ggaW50cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTlkgfCBMS2FwcGEuSV9BTllfRVJBU0VEIC0+IHRlc3RzLCBhY3Rpb25zXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIGogLT5cbiAgICAgICAgICAgICAgdGVzdHMsIEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBqKSA6OiBhY3Rpb25zXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiB0ZXN0cyxcbiAgICAgICAgICAgICAgICBpZiBpIDw+IGogdGhlblxuICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGopIDo6IGFjdGlvbnNcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zIClcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBpIC0+XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiB0ZXN0cywgYWN0aW9uc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RzJycsIGFjdGlvbnMnJywgc2lkZV9zaXRlcycsIHNpZGVfZWZmZWN0cycsIGxpbmtzJyA9XG4gICAgICAgICAgICBtYXRjaCBwb3J0cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQgLT5cbiAgICAgICAgICAgICAgICAgIGFkZF9mcmVlZF9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdHNfZHN0IHBsYWNlIHNpdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgcmVmX3BvcnRzLihzaXRlX2lkKVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5GcmVlZCAtPlxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBhZGRfc2lkZV9zaXRlIHNpZGVfZWZmZWN0c19zcmMgSW5zdGFudGlhdGlvbi5BTlkgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0cycsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSXNfRnJlZSAocGxhY2UsIHNpdGVfaWQpIDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfc3JjLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSXNfQm91bmQgKHBsYWNlLCBzaXRlX2lkKSA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgYWRkX3NpZGVfc2l0ZSBzaWRlX2VmZmVjdHNfc3JjIEluc3RhbnRpYXRpb24uQk9VTkQgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgIGxpbmtzIClcbiAgICAgICAgICAgIHwgKExLYXBwYS5MTktfVFlQRSAoYiwgYSksIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlICgocGxhY2UsIHNpdGVfaWQpLCAoYSwgYikpXG4gICAgICAgICAgICAgICAgOjogdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIGFkZF9zaWRlX3NpdGUgc2lkZV9lZmZlY3RzX3NyY1xuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uQk9VTkRfVFlQRSAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChpLCBfKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgbGlua3Mgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICggeCA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMsXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAucmVtb3ZlIGkgbGlua3MgKVxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAoIHRlc3RzJyxcbiAgICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgICBsaW5rcyApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChzdWNjIHNpdGVfaWQpIHRlc3RzJycgYWN0aW9ucycnIHNpZGVfc2l0ZXMnIHNpZGVfZWZmZWN0cycgbGlua3MnXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggMFxuICAgICAgICAoSW5zdGFudGlhdGlvbi5Jc19IZXJlIHBsYWNlIDo6IHRoaXNfY2NfdGVzdHMpXG4gICAgICAgIChpZiBpc19lcmFzZWQgdGhlblxuICAgICAgICAgICBJbnN0YW50aWF0aW9uLlJlbW92ZSBwbGFjZSA6OiBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmNcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IGxpbmtzKVxuXG5sZXQgcmVjIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayByZWdpc3RlcmVkX2xpbmtzXG4gICAgKChyZW1vdmVkLCBhZGRlZCkgYXMgdHJhbnNmKSBsaW5rc190cmFuc2YgaW5zdGFudGlhdGlvbnMgcmVtYWlucyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByZWdpc3RlcmVkX2xpbmtzIHdpdGhcbiAgICB8IE5vbmUgLT4gd2ssIHRyYW5zZiwgbGlua3NfdHJhbnNmLCBpbnN0YW50aWF0aW9ucywgcmVtYWluc1xuICAgIHwgU29tZSAoa2V5LCBfKSAtPiBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGtleSBMb2MuZHVtbXkpXG4gIHwgYWcgOjogYWdfbCAtPlxuICAgIGxldCBub2RlLCB3ayA9IFBhdHRlcm4ubmV3X25vZGUgd2sgYWcuTEthcHBhLnJhX3R5cGUgaW5cbiAgICBsZXQgcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAobm9kZSwgaWQpIGluXG4gICAgbGV0IHRyYW5zZicgPVxuICAgICAgaWYgYWcuTEthcHBhLnJhX2VyYXNlZCB0aGVuXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgcGxhY2UgOjogcmVtb3ZlZCwgYWRkZWRcbiAgICAgIGVsc2VcbiAgICAgICAgdHJhbnNmXG4gICAgaW5cbiAgICBsZXQgcmVjIGhhbmRsZV9wb3J0cyB3ayByX2wgY19sIChyZW1vdmVkLCBhZGRlZCkgbF90IHJlIGFjYyBzaXRlX2lkID1cbiAgICAgIGlmIHNpdGVfaWQgPSBBcnJheS5sZW5ndGggYWcuTEthcHBhLnJhX3BvcnRzIHRoZW4gKFxuICAgICAgICBsZXQgaW5zdGFudGlhdGlvbnMnID1cbiAgICAgICAgICBtYWtlX2luc3RhbnRpYXRpb24gcGxhY2UgY19sIGluc3RhbnRpYXRpb25zIGFnLkxLYXBwYS5yYV9wb3J0c1xuICAgICAgICAgICAgYWcuTEthcHBhLnJhX2VyYXNlZCBhZy5MS2FwcGEucmFfc3ludGF4XG4gICAgICAgIGluXG4gICAgICAgIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayByX2wgKHJlbW92ZWQsIGFkZGVkKSBsX3QgaW5zdGFudGlhdGlvbnMnIHJlXG4gICAgICAgICAgYWNjXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgdHJhbnNmLCB3aycgPVxuICAgICAgICAgIG1hdGNoIGFnLkxLYXBwYS5yYV9pbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBMS2FwcGEuSV9BTlkgLT4gKHJlbW92ZWQsIGFkZGVkKSwgd2tcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAgICggKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgIGFkZGVkICksXG4gICAgICAgICAgICAgIHdrIClcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIGogLT5cbiAgICAgICAgICAgICggKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZCwgailcbiAgICAgICAgICAgICAgICA6OiBhZGRlZCApLFxuICAgICAgICAgICAgICB3ayApXG4gICAgICAgICAgfCBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT5cbiAgICAgICAgICAgICggKGlmIGkgPSBqIHRoZW5cbiAgICAgICAgICAgICAgICAgcmVtb3ZlZCwgYWRkZWRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgICAgICAgICAgICAocGxhY2UsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgOjogcmVtb3ZlZCxcbiAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgICAgICAgICAgICAocGxhY2UsIHNpdGVfaWQsIGopXG4gICAgICAgICAgICAgICAgICAgOjogYWRkZWQgKSksXG4gICAgICAgICAgICAgIFBhdHRlcm4ubmV3X2ludGVybmFsX3N0YXRlIHdrIChub2RlLCBzaXRlX2lkKSBpIClcbiAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9FUkFTRUQgaSAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgYWRkZWQgKSxcbiAgICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgd2sgKG5vZGUsIHNpdGVfaWQpIGkgKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhZy5MS2FwcGEucmFfcG9ydHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgcG9zKSwgcyAtPlxuICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciAocGxhY2UsIHNpdGVfaWQpLFxuICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJyByX2wgY19sIHRyYW5zZicgbF90JyByZSBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgcyAtPlxuICAgICAgICAgIGxldCB3aycnID0gUGF0dGVybi5uZXdfZnJlZSB3aycgKG5vZGUsIHNpdGVfaWQpIGluXG4gICAgICAgICAgbGV0IHRyYW5zZicsIGxfdCcgPVxuICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChwbGFjZSwgc2l0ZV9pZCksIE5vbmUpXG4gICAgICAgICAgICAgIHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIHJfbCBjX2wgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICB8ICgoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19UWVBFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICBcIlRyeSB0byBjcmVhdGUgdGhlIGNvbm5lY3RlZCBjb21wb25lbnRzIG9mIGFuIGFtYmlndW91cyBcXFxuICAgICAgICAgICAgICAgICAgIG1peHR1cmUuXCIpKVxuICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChpLCBfKSwgcG9zKSwgcyAtPlxuICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIHJfbCB3aXRoXG4gICAgICAgICAgfCBTb21lICgobm9kZScsIHNpdGUnKSBhcyBkc3QpIC0+XG4gICAgICAgICAgICBsZXQgZHN0X3BsYWNlID0gTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKG5vZGUnLCBpZCksIHNpdGUnIGluXG4gICAgICAgICAgICBsZXQgd2snJyA9IFBhdHRlcm4ubmV3X2xpbmsgd2snIChub2RlLCBzaXRlX2lkKSBkc3QgaW5cbiAgICAgICAgICAgIGxldCBjX2wnID1cbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0X3BsYWNlKSlcbiAgICAgICAgICAgICAgICBjX2xcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZV9pZCksIGRzdF9wbGFjZSksXG4gICAgICAgICAgICAgICAgICBTb21lIHBvcyApXG4gICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIChNb2RzLkludE1hcC5yZW1vdmUgaSByX2wpIGNfbCcgdHJhbnNmJyBsX3QnIHJlXG4gICAgICAgICAgICAgIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9maWx0ZXJcbiAgICAgICAgICAgICAgICAgKGlzX2xpbmtlZF9vbl9wb3J0IHNpdGVfaWQgaSlcbiAgICAgICAgICAgICAgICAgYWcuTEthcHBhLnJhX3BvcnRzXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIHNpdGVfaWQnIF1cbiAgICAgICAgICAgICgqIGxpbmsgYmV0d2VlbiAyIHNpdGVzIG9mIDEgYWdlbnQgKilcbiAgICAgICAgICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IG5vdCAoaXNfbGlua2VkX29uIGkgeCkpIGFjY1xuICAgICAgICAgICAgICAgICAgICYmIExpc3QuZm9yX2FsbCAoZnVuIHggLT4gbm90IChpc19saW5rZWRfb24gaSB4KSkgcmUgLT5cbiAgICAgICAgICAgICAgbGV0IHdrJycsICh0cmFuc2YnLCBsX3QnKSA9XG4gICAgICAgICAgICAgICAgaWYgc2l0ZV9pZCcgPiBzaXRlX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgICggUGF0dGVybi5uZXdfbGluayB3aycgKG5vZGUsIHNpdGVfaWQpIChub2RlLCBzaXRlX2lkJyksXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFjZSwgc2l0ZV9pZCksIChwbGFjZSwgc2l0ZV9pZCcpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgICAgICAgICBzIClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICB3aycsIGRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB0cmFuc2YgbF90IHBsYWNlIHNpdGVfaWQgc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgY19sJyA9XG4gICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvXG4gICAgICAgICAgICAgICAgICAgICAoKHBsYWNlLCBzaXRlX2lkKSwgKHBsYWNlLCBzaXRlX2lkJykpKVxuICAgICAgICAgICAgICAgICAgY19sXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIHJfbCBjX2wnIHRyYW5zZicgbF90JyByZSBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgIHwgXyA6OiBfIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3NcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKCogbGluayBiZXR3ZWVuIDIgYWdlbnRzICopXG4gICAgICAgICAgICAgIGxldCByX2wnID0gTW9kcy5JbnRNYXAuYWRkIGkgKG5vZGUsIHNpdGVfaWQpIHJfbCBpblxuICAgICAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICAgICAgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBMaXN0LnBhcnRpdGlvbiAoaXNfbGlua2VkX29uIGkpIHJlIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSwgcmUnIC0+XG4gICAgICAgICAgICAgICAgaWYgTGlzdF91dGlsLmV4aXN0c191bmlxIChpc19saW5rZWRfb24gaSkgYWNjIHRoZW5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycgcl9sJyBjX2wgdHJhbnNmJyBsX3QnIHJlJyBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGkgcG9zXG4gICAgICAgICAgICAgIHwgWyBuIF0sIHJlJ1xuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4geCAtPiBub3QgKGlzX2xpbmtlZF9vbiBpIHgpKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBoYW5kbGVfcG9ydHMgd2snIHJfbCcgY19sIHRyYW5zZicgbF90JyByZScgKG4gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgICAgfCBfLCBfIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3MpKSlcbiAgICAgIClcbiAgICBpblxuICAgIGhhbmRsZV9wb3J0cyB3ayByZWdpc3RlcmVkX2xpbmtzIE1vZHMuSW50TWFwLmVtcHR5IHRyYW5zZicgbGlua3NfdHJhbnNmXG4gICAgICByZW1haW5zIGFnX2wgMFxuXG5sZXQgcmVjIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyAocmVtb3ZlZCwgYWRkZWQpIGxpbmtzX3RyYW5zZiBjcmVhdGVfYWN0aW9uc1xuICAgIGFjdGlvbnMgZnJlc2ggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgbGlua3NfdHJhbnNmIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2X2FwcGVuZCBhY3Rpb25zIGNyZWF0ZV9hY3Rpb25zLCAoTGlzdC5yZXYgcmVtb3ZlZCwgTGlzdC5yZXYgYWRkZWQpXG4gICAgfCBTb21lIChpLCBfKSAtPiBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGkgTG9jLmR1bW15KVxuICB8IGFnIDo6IGFnX2wgLT5cbiAgICBsZXQgcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5GcmVzaCAoYWcuUmF3X21peHR1cmUuYV90eXBlLCBmcmVzaCkgaW5cbiAgICBsZXQgcmVjIGhhbmRsZV9wb3J0cyBhZGRlZCBsX3QgYWN0aW9ucyBpbnRmIHNpdGVfaWQgPVxuICAgICAgaWYgc2l0ZV9pZCA9IEFycmF5Lmxlbmd0aCBhZy5SYXdfbWl4dHVyZS5hX3BvcnRzIHRoZW4gKFxuICAgICAgICBsZXQgY3JlYXRlX2FjdGlvbnMnID1cbiAgICAgICAgICBJbnN0YW50aWF0aW9uLkNyZWF0ZSAocGxhY2UsIExpc3QucmV2IGludGYpIDo6IGNyZWF0ZV9hY3Rpb25zXG4gICAgICAgIGluXG4gICAgICAgIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyAocmVtb3ZlZCwgYWRkZWQpIGxfdCBjcmVhdGVfYWN0aW9ucycgYWN0aW9uc1xuICAgICAgICAgIChzdWNjIGZyZXNoKSBhZ19sXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgYWRkZWQnLCBhY3Rpb25zJywgcG9pbnQgPVxuICAgICAgICAgIG1hdGNoIGFnLlJhd19taXh0dXJlLmFfaW50cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhZGRlZCwgYWN0aW9ucywgKHNpdGVfaWQsIE5vbmUpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAocGxhY2UsIHNpdGVfaWQsIGkpXG4gICAgICAgICAgICAgIDo6IGFkZGVkLFxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKHBsYWNlLCBzaXRlX2lkKSwgaSkgOjogYWN0aW9ucyxcbiAgICAgICAgICAgICAgKHNpdGVfaWQsIFNvbWUgaSkgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWRkZWQnJywgYWN0aW9ucycnLCBsX3QnID1cbiAgICAgICAgICBtYXRjaCBhZy5SYXdfbWl4dHVyZS5hX3BvcnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBSYXdfbWl4dHVyZS5GUkVFIC0+XG4gICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlX2lkKSA6OiBhZGRlZCcsXG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uRnJlZSAocGxhY2UsIHNpdGVfaWQpIDo6IGFjdGlvbnMnLFxuICAgICAgICAgICAgICBsX3QgKVxuICAgICAgICAgIHwgUmF3X21peHR1cmUuVkFMIGkgLT5cbiAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaSBsX3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGRzdCwgbF90JyAtPlxuICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgocGxhY2UsIHNpdGVfaWQpLCBkc3QpXG4gICAgICAgICAgICAgICAgOjogYWRkZWQnLFxuICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uQmluZF90byAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0KVxuICAgICAgICAgICAgICAgIDo6IEluc3RhbnRpYXRpb24uQmluZF90byAoZHN0LCAocGxhY2UsIHNpdGVfaWQpKVxuICAgICAgICAgICAgICAgIDo6IGFjdGlvbnMnLFxuICAgICAgICAgICAgICAgIGxfdCcgKVxuICAgICAgICAgICAgfCBOb25lLCBsX3QgLT5cbiAgICAgICAgICAgICAgbGV0IGxfdCcgPSBNb2RzLkludE1hcC5hZGQgaSAocGxhY2UsIHNpdGVfaWQpIGxfdCBpblxuICAgICAgICAgICAgICBhZGRlZCcsIGFjdGlvbnMnLCBsX3QnKVxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfcG9ydHMgYWRkZWQnJyBsX3QnIGFjdGlvbnMnJyAocG9pbnQgOjogaW50ZikgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgIClcbiAgICBpblxuICAgIGhhbmRsZV9wb3J0c1xuICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgcGxhY2UgOjogYWRkZWQpXG4gICAgICBsaW5rc190cmFuc2YgYWN0aW9ucyBbXSAwXG5cbmxldCBpbmNyX29yaWdpbiA9IGZ1bmN0aW9uXG4gIHwgKE9wZXJhdG9yLkFMRyBfIHwgT3BlcmF0b3IuTU9ESUYgXykgYXMgeCAtPiB4XG4gIHwgT3BlcmF0b3IuUlVMRSBpIC0+IE9wZXJhdG9yLlJVTEUgKHN1Y2MgaSlcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX29mX21peHR1cmUgfmRlYnVnX21vZGUgY3JlYXRlZCAobWl4LCBib29sKSAoZW52LCBvcmlnaW4pXG4gICAgPVxuICBsZXQgc2lncyA9IFBhdHRlcm4uUHJlRW52LnNpZ3MgZW52IGluXG4gIGxldCByZWMgYXV4IGVudiB0cmFuc2Zvcm1hdGlvbnMgaW5zdGFudGlhdGlvbnMgbGlua3NfdHJhbnNmIGFjYyBpZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IHJlbW92ZWQsIGFkZGVkID0gdHJhbnNmb3JtYXRpb25zIGluXG4gICAgICBsZXQgYWN0aW9ucycgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNzIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgoKGF4LCBfKSBhcyB4KSwgKChheSwgXykgYXMgeSkpXG4gICAgICAgICAgICAgIHdoZW4gTWF0Y2hpbmcuQWdlbnQuaXNfZnJlc2ggYXggfHwgTWF0Y2hpbmcuQWdlbnQuaXNfZnJlc2ggYXkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kX3RvICh4LCB5KSA6OiBhY3NcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKHgsIHkpIC0+XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uQmluZCAoeCwgeSkgOjogYWNzXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgXyAtPlxuICAgICAgICAgICAgICBhY3MpXG4gICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zIGFkZGVkXG4gICAgICBpblxuICAgICAgbGV0IHRyYW5zZm9ybWF0aW9ucycgPSBMaXN0LnJldiByZW1vdmVkLCBMaXN0LnJldiBhZGRlZCBpblxuICAgICAgbGV0IGFjdGlvbnMnJywgdHJhbnNmb3JtYXRpb25zJycgPVxuICAgICAgICBjb21wbGV0ZV93aXRoX2NyZWF0aW9uIHNpZ3MgdHJhbnNmb3JtYXRpb25zJyBsaW5rc190cmFuc2YgW10gYWN0aW9ucycgMFxuICAgICAgICAgIGNyZWF0ZWRcbiAgICAgIGluXG4gICAgICAoICggKCBvcmlnaW4sXG4gICAgICAgICAgICBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCBhY2MsXG4gICAgICAgICAgICB7IGluc3RhbnRpYXRpb25zIHdpdGggSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gYWN0aW9ucycnIH0sXG4gICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbnMnJyApLFxuICAgICAgICAgIGJvb2wgKSxcbiAgICAgICAgKGVudiwgT3B0aW9uX3V0aWwubWFwIGluY3Jfb3JpZ2luIG9yaWdpbikgKVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgd2sgPSBQYXR0ZXJuLmJlZ2luX25ldyBlbnYgaW5cbiAgICAgIGxldCBpbnN0YW50aWF0aW9ucycgPVxuICAgICAgICB7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IFtdIDo6IGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCB3a19vdXQsIChyZW1vdmVkLCBhZGRlZCksIGxfdCwgZXZlbnQsIHJlbWFpbnMgPVxuICAgICAgICBhZGRfYWdlbnRzX2luX2NjIHNpZ3MgaWQgd2sgTW9kcy5JbnRNYXAuZW1wdHkgdHJhbnNmb3JtYXRpb25zXG4gICAgICAgICAgbGlua3NfdHJhbnNmIGluc3RhbnRpYXRpb25zJyB0IFsgaCBdXG4gICAgICBpblxuICAgICAgbGV0IGVudicsIGluaiwgY2MsIGNjX2lkID1cbiAgICAgICAgUGF0dGVybi5maW5pc2hfbmV3IH5kZWJ1Z19tb2RlID9vcmlnaW4gd2tfb3V0XG4gICAgICBpblxuICAgICAgbGV0IGFkZGVkJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKVxuICAgICAgICAgIGFkZGVkXG4gICAgICBpblxuICAgICAgbGV0IHJlbW92ZWQnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopXG4gICAgICAgICAgcmVtb3ZlZFxuICAgICAgaW5cbiAgICAgIGxldCBldmVudCcgPVxuICAgICAgICBJbnN0YW50aWF0aW9uLnJlbmFtZV9hYnN0cmFjdF9ldmVudCB+ZGVidWdfbW9kZSBpZCBpbmogZXZlbnRcbiAgICAgIGluXG4gICAgICBsZXQgbF90JyA9XG4gICAgICAgIE1vZHMuSW50TWFwLm1hcFxuICAgICAgICAgIChmdW4gKChwLCBzKSBhcyB4KSAtPlxuICAgICAgICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICAgICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwJywgcylcbiAgICAgICAgICBsX3RcbiAgICAgIGluXG4gICAgICBhdXggZW52JyAocmVtb3ZlZCcsIGFkZGVkJykgZXZlbnQnIGxfdCcgKChjY19pZCwgY2MpIDo6IGFjYykgKHN1Y2MgaWQpXG4gICAgICAgIHJlbWFpbnNcbiAgaW5cbiAgYXV4IGVudiAoW10sIFtdKSBJbnN0YW50aWF0aW9uLmVtcHR5X2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5IFtdIDAgbWl4XG5cbmxldCBydWxlX21peHR1cmVzX29mX2FtYmlndW91c19ydWxlIGNvbnRhY3RfbWFwIHNpZ3MgcHJlY29tcF9taXhzID1cbiAgYWRkX2ltcGxpY2l0X2luZm9zIHNpZ3NcbiAgICAoZmluZF9pbXBsaWNpdF9pbmZvcyBjb250YWN0X21hcFxuICAgICAgIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIExLYXBwYS5jb3B5X3J1bGVfYWdlbnQgcHJlY29tcF9taXhzKSkpXG5cbmxldCBjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX3J1bGUgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgIGNvbnRhY3RfbWFwIGVudiA/b3JpZ2luIHByZWNvbXBfbWl4cyBjcmVhdGVkID1cbiAgbGV0IG5vQ291bnRlcnMgPSBkZWJ1Z19tb2RlIGluXG4gIGxldCBzaWdzID0gUGF0dGVybi5QcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IGNvdW50ZXJzX2luZm8gPSBQYXR0ZXJuLlByZUVudi5jb3VudGVyc19pbmZvIGVudiBpblxuICBsZXQgYWxsX21peHMgPVxuICAgIHJ1bGVfbWl4dHVyZXNfb2ZfYW1iaWd1b3VzX3J1bGUgY29udGFjdF9tYXAgc2lncyBwcmVjb21wX21peHNcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBjb21waWxlX21vZGVfb24gdGhlblxuICAgICAgRm9ybWF0LmVwcmludGYgXCJAWzx2Pl9fX19fKCVpKUAsJWFAXUAuXCIgKExpc3QubGVuZ3RoIGFsbF9taXhzKVxuICAgICAgICAoUHAubGlzdCBQcC5jdXQgKGZ1biBmICh4LCBfKSAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAoTEthcHBhLnByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIGNvdW50ZXJzX2luZm9cbiAgICAgICAgICAgICAgICAgIH5sdHlwZXM6dHJ1ZSBjcmVhdGVkKVxuICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOih4IDw+IFtdKSB+c2lncyB+Y291bnRlcnNfaW5mbylcbiAgICAgICAgICAgICAgIChMaXN0LnJldiBjcmVhdGVkKSkpXG4gICAgICAgIGFsbF9taXhzXG4gIGluXG4gIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgIChjb25uZWN0ZWRfY29tcG9uZW50c19vZl9taXh0dXJlIH5kZWJ1Z19tb2RlIGNyZWF0ZWQpXG4gICAgYWxsX21peHMgKGVudiwgb3JpZ2luKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBlbnYgP29yaWdpbiBtaXggPVxuICBsZXQgcnVsZXMsIChjY19lbnYsIF8pID1cbiAgICBjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX3J1bGUgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gbWl4IFtdXG4gIGluXG4gICggY2NfZW52LFxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgKF8sIGwsIGV2ZW50LCAoW10sIFtdKSksIF9iIC0+IGwsIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHJ1bGVzIClcblxubGV0IGF1eF9sa2FwcGFfb2ZfcGF0dGVybiBmcmVlX2lkIHAgPVxuICBQYXR0ZXJuLmZvbGRfYnlfdHlwZVxuICAgIChmdW4gfnBvcyB+YWdlbnRfdHlwZSBpbnRmIChhY2MsIGxua19wYWNrKSAtPlxuICAgICAgbGV0IHJhX3BvcnRzID1cbiAgICAgICAgQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGludGYpXG4gICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgICAgIGluXG4gICAgICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBpbnRmKSBMS2FwcGEuSV9BTlkgaW5cbiAgICAgIGxldCBvdXQgPVxuICAgICAgICB7XG4gICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ2VudF90eXBlO1xuICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gTm9uZTtcbiAgICAgICAgICBMS2FwcGEucmFfcG9ydHM7XG4gICAgICAgICAgTEthcHBhLnJhX2ludHM7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgYWNjJyA9IE1vZHMuSW50TWFwLmFkZCBwb3Mgb3V0IGFjYyBpblxuICAgICAgbGV0IGxua19wYWNrJyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIHNpdGUgKChmcmVlX2lkLCBrbm93bl9zcmMpIGFzIHBhY2spIChsaW5rLCBpbnQpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBpbnQgPD4gLTEgdGhlbiByYV9pbnRzLihzaXRlKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaW50LCBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggbGluayB3aXRoXG4gICAgICAgICAgICB8IFBhdHRlcm4uVW5TcGVjIC0+IHBhY2tcbiAgICAgICAgICAgIHwgUGF0dGVybi5GcmVlIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgcmFfcG9ydHMuKHNpdGUpIDwtXG4gICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHBhY2tcbiAgICAgICAgICAgIHwgUGF0dGVybi5MaW5rIChkc3RfYSwgZHN0X3MpIC0+XG4gICAgICAgICAgICAgIGxldCBzcmNfaW5mbyA9IHNpdGUsIGFnZW50X3R5cGUgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50Mk1hcC5maW5kX29wdGlvbiAoZHN0X2EsIGRzdF9zKSBrbm93bl9zcmMgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgKGlkLCBkc3RfaW5mbykgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKHNpdGUpIDwtXG4gICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLFxuICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IG91dCBkc3RfYSBhY2MnKS5MS2FwcGEucmFfcG9ydHMuKGRzdF9zKSA8LVxuICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgc3JjX2luZm8pKSxcbiAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwYWNrXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICggc3VjYyBmcmVlX2lkLFxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnQyTWFwLmFkZCAocG9zLCBzaXRlKSAoZnJlZV9pZCwgc3JjX2luZm8pIGtub3duX3NyYyApKSlcbiAgICAgICAgICBsbmtfcGFjayBpbnRmXG4gICAgICBpblxuICAgICAgYWNjJywgbG5rX3BhY2snKVxuICAgIHBcbiAgICAoTW9kcy5JbnRNYXAuZW1wdHksIChmcmVlX2lkLCBNb2RzLkludDJNYXAuZW1wdHkpKVxuXG5sZXQgcmVnaXN0ZXJfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyBmcmVlX2lkIHRyYW5zZnMgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gKChmaWQsIGZyKSBhcyBwYWNrKSAtPiBmdW5jdGlvblxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXykgLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChhX3R5cGUsIGlkKSkgLT5cbiAgICAgICAgbGV0IHNpID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYV90eXBlIGluXG4gICAgICAgIGxldCBuID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX3R5cGU7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gQXJyYXkubWFrZSBzaSBSYXdfbWl4dHVyZS5GUkVFO1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV9pbnRzID0gQXJyYXkubWFrZSBzaSBOb25lO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgZmlkLCBNb2RzLkludE1hcC5hZGQgaWQgbiBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQsIF8pLCBjY19pZCksIHMsIGkpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIChtYXRjaCBhLkxLYXBwYS5yYV9pbnRzLihzKSB3aXRoXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIF8gfCBMS2FwcGEuSV9BTllfRVJBU0VEXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9FUkFTRUQgXyAtPlxuICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0NIQU5HRUQgKGosIGspIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoaiA9IGspIGluXG4gICAgICAgICAgICAgIGEuTEthcHBhLnJhX2ludHMuKHMpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChqLCBpKVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTlkgLT4gYS5MS2FwcGEucmFfaW50cy4ocykgPC0gTEthcHBhLklfQU5ZX0NIQU5HRUQgaSlcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMsIGkpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9pbnRzLihzKSA8LSBTb21lIGlcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSAtPiBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZCwgXyksIGNjX2lkKSwgcykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4ocykgPC0gdGVzdCwgTEthcHBhLkZyZWVkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwYWNrXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZDEsIF8pLCBjY19pZDEpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZDIsIF8pLCBjY19pZDIpLCBzMikgKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMSBtaXhzLihjY19pZDEpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczEpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMSkgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQyIG1peHMuKGNjX2lkMikgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzMikgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMyKSA8LSB0ZXN0LCBMS2FwcGEuTGlua2VkIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoZWlkLCBfKSwgY2NfaWQpLCBzMikgKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoZWlkLCBfKSwgY2NfaWQpLCBzMiksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgczEpICkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMSkgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMikgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZDEpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkMiksIHMyKSApIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQxIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfcG9ydHMuKHMxKSA8LSBSYXdfbWl4dHVyZS5WQUwgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMiBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMikgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyKVxuICAgIChmcmVlX2lkLCBNb2RzLkludE1hcC5lbXB0eSlcbiAgICB0cmFuc2ZzXG4gIHw+IHNuZFxuXG5sZXQgYWRkX25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgdHJhbnNmcyA9XG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChNYXRjaGluZy5BZ2VudC5GcmVzaCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoXywgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICgoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXyksIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKSlcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXykgLT5cbiAgICAgICAgKClcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkLCBfKSwgY2NfaWQpKSAtPlxuICAgICAgICBsZXQgYWcgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgU29tZSBhIC0+IGFcbiAgICAgICAgaW5cbiAgICAgICAgbWl4cy4oY2NfaWQpIDwtXG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlkIChMS2FwcGEuYWdlbnRfdG9fZXJhc2VkIHNpZ3MgYWcpIG1peHMuKGNjX2lkKSlcbiAgICB0cmFuc2ZzXG5cbmxldCBsa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgZG9tYWluIHIgPVxuICBsZXQgbmJfY2MgPSBBcnJheS5sZW5ndGggci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGluXG4gIGxldCBtaXhzID0gQXJyYXkubWFrZSBuYl9jYyBNb2RzLkludE1hcC5lbXB0eSBpblxuICBsZXQgZnJlZV9pZCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBjY19pZCBmcmVlX2lkIGNjIC0+XG4gICAgICAgIGxldCBvdXQsIChmcmVlX2lkJywgXykgPVxuICAgICAgICAgIGF1eF9sa2FwcGFfb2ZfcGF0dGVybiBmcmVlX2lkXG4gICAgICAgICAgICAoUGF0dGVybi5FbnYuY29udGVudCAoUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjYykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IG1peHMuKGNjX2lkKSA8LSBvdXQgaW5cbiAgICAgICAgZnJlZV9pZCcpXG4gICAgICAxIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICBpblxuICBsZXQgbmV3cyA9XG4gICAgcmVnaXN0ZXJfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyBmcmVlX2lkIHIuUHJpbWl0aXZlcy5pbnNlcnRlZFxuICBpblxuICBsZXQgKCkgPSBhZGRfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyByLlByaW1pdGl2ZXMucmVtb3ZlZCBpblxuICBsZXQgcl9taXggPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhIGIgLT4gTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT4geCA6OiBhY2MpIGIgYSlcbiAgICAgIFtdIG1peHNcbiAgICB8PiBMaXN0LnJldlxuICBpblxuICBsZXQgcl9jcmVhdGVkID1cbiAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPiB4IDo6IGFjYykgbmV3cyBbXSB8PiBMaXN0LnJldlxuICBpblxuICByX21peCwgcl9jcmVhdGVkXG4oKntcbiAgTEthcHBhLnJfbWl4OyBMS2FwcGEucl9jcmVhdGVkOyBMS2FwcGEucl9lZGl0X3N0eWxlID0gdHJ1ZTtcbiAgTEthcHBhLnJfcmF0ZSA9IHIuUHJpbWl0aXZlcy5yYXRlO1xuICBMS2FwcGEucl91bl9yYXRlID0gci5QcmltaXRpdmVzLnVuYXJ5X3JhdGU7XG4gIExLYXBwYS5yX2RlbHRhX3Rva2VucyA9IHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnM7XG4gIH0qKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9mX3NuYXBzaG90IGcgPVxuICBsZXQgb3V0LCBfID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIG5vZGUgKGFjYywgcGFjaykgYWcgLT5cbiAgICAgICAgbGV0IHJhX3R5cGUgPSBhZy5TbmFwc2hvdC5ub2RlX3R5cGUgaW5cbiAgICAgICAgbGV0IGFyID0gQXJyYXkubGVuZ3RoIGFnLlNuYXBzaG90Lm5vZGVfc2l0ZXMgaW5cbiAgICAgICAgbGV0IHJhX3BvcnRzID1cbiAgICAgICAgICBBcnJheS5tYWtlIGFyIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgYXIgTEthcHBhLklfQU5ZIGluXG4gICAgICAgIGxldCBwYWNrJyA9XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBpZCAoKGRhbmdsaW5nLCBmcmVlX2lkKSBhcyBwYWNrKSBwIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcC5TbmFwc2hvdC5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiByYV9pbnRzLihpZCkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGksIGkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHAuU25hcHNob3Quc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHBhY2tcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnQyTWFwLnBvcCBzIGRhbmdsaW5nIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgdmEsIGRhbmdsaW5nJyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKGlkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKHZhLCAoLTEsIC0xKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGRhbmdsaW5nJywgZnJlZV9pZFxuICAgICAgICAgICAgICAgIHwgTm9uZSwgZGFuZ2xpbmcnIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICByYV9wb3J0cy4oaWQpIDwtXG4gICAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKC0xLCAtMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBNb2RzLkludDJNYXAuYWRkIChub2RlLCBpZCkgZnJlZV9pZCBkYW5nbGluZycsIHN1Y2MgZnJlZV9pZCkpXG4gICAgICAgICAgICBwYWNrIGFnLlNuYXBzaG90Lm5vZGVfc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBMS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmFfcG9ydHM7XG4gICAgICAgICAgICByYV9pbnRzO1xuICAgICAgICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIHJhIDo6IGFjYywgcGFjaycpXG4gICAgICAoW10sIChNb2RzLkludDJNYXAuZW1wdHksIDEpKVxuICAgICAgZ1xuICBpblxuICBvdXRcblxubGV0IHBhdHRlcm5zX29mX21peHR1cmUgfmRlYnVnX21vZGUgY29udGFjdF9tYXAgc2lncyBwcmVfZW52IGUgPVxuICBsZXQgc25hcCA9IEVkZ2VzLmJ1aWxkX3NuYXBzaG90IH5yYXc6ZmFsc2Ugc2lncyBlIGluXG4gIGxldCBwcmVfZW52JywgYWNjID1cbiAgICBTbmFwc2hvdC5mb2xkXG4gICAgICAoZnVuIChjY19jYWNoZSwgYWNjKSBpIG0gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZVxuICAgICAgICAgICAgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19jYWNoZVxuICAgICAgICAgICAgKG9mX3NuYXBzaG90IG0pXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBjY19jYWNoZScsIFsgKFt8IChfLCB4KSB8XSwgXykgXSAtPlxuICAgICAgICAgIGNjX2NhY2hlJywgVG9vbHMucmVjdGkgKGZ1biBhIF8gLT4geCA6OiBhKSBhY2MgaVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgKHByZV9lbnYsIFtdKSBzbmFwXG4gIGluXG4gIHByZV9lbnYnLCBhY2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgZmlsZW5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgZG9tYWluOiBQYXR0ZXJuLkVudi50O1xuICB0b2tlbnM6IHVuaXQgTmFtZWREZWNscy50O1xuICBhbGdzOiBQcmltaXRpdmVzLmFsZ19leHByIExvYy5hbm5vdGVkIE5hbWVkRGVjbHMudDtcbiAgb2JzZXJ2YWJsZXM6IFByaW1pdGl2ZXMuYWxnX2V4cHIgTG9jLmFubm90ZWQgYXJyYXk7XG4gIGFzdF9ydWxlczogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBMS2FwcGEucnVsZSBMb2MuYW5ub3RlZCkgYXJyYXk7XG4gIHJ1bGVzOiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSBhcnJheTtcbiAgaW50ZXJ2ZW50aW9uczogUHJpbWl0aXZlcy5wZXJ0dXJiYXRpb24gYXJyYXk7XG4gIGRlcGVuZGVuY2llc19pbl90aW1lOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgZGVwZW5kZW5jaWVzX2luX2V2ZW50OiBPcGVyYXRvci5EZXBTZXQudDtcbiAgYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llczogT3BlcmF0b3IuRGVwU2V0LnQgYXJyYXk7XG4gIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llczogT3BlcmF0b3IuRGVwU2V0LnQgYXJyYXk7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICBjb3VudGVyc19pbmZvOiBDb3VudGVyc19pbmZvLnQ7XG59XG5cbmxldCBpbml0IH5maWxlbmFtZXMgZG9tYWluIHRva2VucyBhbGdzIChkZXBzX2luX3QsIGRlcHNfaW5fZSwgdG9rX3JkLCBhbGdfcmQpXG4gICAgKGFzdF9ydWxlcywgcnVsZXMpIG9ic2VydmFibGVzIGludGVydmVudGlvbnMgY29udGFjdF9tYXAgY291bnRlcnNfaW5mbyA9XG4gIHtcbiAgICBmaWxlbmFtZXM7XG4gICAgZG9tYWluO1xuICAgIHRva2VucztcbiAgICBhc3RfcnVsZXM7XG4gICAgcnVsZXM7XG4gICAgYWxncztcbiAgICBvYnNlcnZhYmxlcztcbiAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID0gYWxnX3JkO1xuICAgIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9IHRva19yZDtcbiAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9IGRlcHNfaW5fdDtcbiAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPSBkZXBzX2luX2U7XG4gICAgaW50ZXJ2ZW50aW9ucztcbiAgICBjb250YWN0X21hcDtcbiAgICBjb3VudGVyc19pbmZvO1xuICB9XG5cbmxldCBkZWNvbnN0cnVjdCBlbnYgPVxuICAoIGVudi5maWxlbmFtZXMsXG4gICAgZW52LmRvbWFpbixcbiAgICBlbnYudG9rZW5zLFxuICAgIGVudi5hbGdzLFxuICAgICggZW52LmRlcGVuZGVuY2llc19pbl90aW1lLFxuICAgICAgZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCxcbiAgICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsXG4gICAgICBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyApLFxuICAgIChlbnYuYXN0X3J1bGVzLCBlbnYucnVsZXMpLFxuICAgIGVudi5vYnNlcnZhYmxlcyxcbiAgICBlbnYuaW50ZXJ2ZW50aW9ucyxcbiAgICBlbnYuY29udGFjdF9tYXAsXG4gICAgZW52LmNvdW50ZXJzX2luZm8gKVxuXG5sZXQgZG9tYWluIGVudiA9IGVudi5kb21haW5cbmxldCBnZXRfb2JzIGVudiA9IGVudi5vYnNlcnZhYmxlc1xubGV0IGdldF9ydWxlcyBlbnYgPSBlbnYucnVsZXNcbmxldCBuZXdfZG9tYWluIGRvbWFpbiBlbnYgPSB7IGVudiB3aXRoIGRvbWFpbiB9XG5sZXQgc2lnbmF0dXJlcyBlbnYgPSBQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGVudi5kb21haW5cbmxldCB0b2tlbnNfZmluZGVyIGVudiA9IGVudi50b2tlbnMuTmFtZWREZWNscy5maW5kZXJcbmxldCBhbGdzX2ZpbmRlciBlbnYgPSBlbnYuYWxncy5OYW1lZERlY2xzLmZpbmRlclxubGV0IGNvbnRhY3RfbWFwIGVudiA9IGVudi5jb250YWN0X21hcFxubGV0IG51bV9vZl9hZ2VudCBubWUgZW52ID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBubWUgKHNpZ25hdHVyZXMgZW52KVxubGV0IGNvdW50ZXJzX2luZm8gZW52ID0gZW52LmNvdW50ZXJzX2luZm9cbmxldCBjb3VudGVyX2luZm8gZW52IGkgaiA9IChjb3VudGVyc19pbmZvIGVudikuKGkpLihqKVxuXG5sZXQgZm9sZF9ydWxlcyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBydWxlIC0+IGYgaSB4IHJ1bGUpIHggZW52LnJ1bGVzXG5cbmxldCBmb2xkX3BlcnR1cmJhdGlvbnMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggcCAtPiBmIGkgeCBwKSB4IGVudi5pbnRlcnZlbnRpb25zXG5cbmxldCBnZXRfcnVsZSBlbnYgaSA9IGVudi5ydWxlcy4oaSlcbmxldCBnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCBlbnYgaSA9IGVudi5hc3RfcnVsZXMuKGkgLSAxKVxubGV0IGdldF9hc3RfcnVsZSBlbnYgaSA9IGZzdCAoc25kIChnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCBlbnYgaSkpXG5cbmxldCBmb2xkX2FzdF9ydWxlcyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSB4IChfLCBfcnVsZSkgLT5cbiAgICAgIGxldCBsa2FwcGFfcnVsZSA9IGdldF9hc3RfcnVsZSBlbnYgaSBpblxuICAgICAgZiBpIHggbGthcHBhX3J1bGUpXG4gICAgeCBlbnYuYXN0X3J1bGVzXG5cbmxldCBnZXRfYXN0X3J1bGVfcmF0ZV9wb3MgfnVuYXJ5IGVudiBpID1cbiAgaWYgdW5hcnkgdGhlbiAoXG4gICAgbWF0Y2ggKGZzdCAoc25kIGVudi5hc3RfcnVsZXMuKGkgLSAxKSkpLkxLYXBwYS5yX3VuX3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk5vIHVuYXJ5IHJhdGUgdG8gZ2V0IHBvc2l0aW9uIG9mXCJcbiAgICB8IFNvbWUgKChfLCBwb3MpLCBfKSAtPiBwb3NcbiAgKSBlbHNlXG4gICAgc25kIChmc3QgKHNuZCBlbnYuYXN0X3J1bGVzLihpIC0gMSkpKS5MS2FwcGEucl9yYXRlXG5cbmxldCBuYl9ydWxlcyBlbnYgPSBBcnJheS5sZW5ndGggZW52LnJ1bGVzXG5cbmxldCBudW1zX29mX3J1bGUgbmFtZSBlbnYgPVxuICBmb2xkX3J1bGVzXG4gICAgKGZ1biBpIGFjYyByIC0+XG4gICAgICBtYXRjaCBlbnYuYXN0X3J1bGVzLihwcmVkIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSkgd2l0aFxuICAgICAgfCBTb21lICh4LCBfKSwgXyAtPlxuICAgICAgICBpZiB4ID0gbmFtZSB0aGVuXG4gICAgICAgICAgaSA6OiBhY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjY1xuICAgICAgfCBOb25lLCBfIC0+IGFjYylcbiAgICBbXSBlbnZcblxubGV0IG5iX3N5bnRhY3RpY19ydWxlcyBlbnYgPSBBcnJheS5sZW5ndGggZW52LmFzdF9ydWxlc1xubGV0IG51bV9vZl9hbGcgcyBlbnYgPSBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcInZhcmlhYmxlXCIgZW52LmFsZ3Mgc1xubGV0IGdldF9hbGcgZW52IGkgPSBmc3QgQEAgTmFtZWREZWNscy5lbHRfdmFsIGVudi5hbGdzIGlcbmxldCBnZXRfYWxncyBlbnYgPSBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzXG5sZXQgbmJfYWxncyBlbnYgPSBOYW1lZERlY2xzLnNpemUgZW52LmFsZ3NcbmxldCBudW1fb2ZfdG9rZW4gc3RyIGVudiA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwidG9rZW5cIiBlbnYudG9rZW5zIHN0clxubGV0IG5iX3Rva2VucyBlbnYgPSBOYW1lZERlY2xzLnNpemUgZW52LnRva2Vuc1xubGV0IGdldF9wZXJ0dXJiYXRpb24gZW52IGkgPSBlbnYuaW50ZXJ2ZW50aW9ucy4oaSlcbmxldCBuYl9wZXJ0dXJiYXRpb25zIGVudiA9IEFycmF5Lmxlbmd0aCBlbnYuaW50ZXJ2ZW50aW9uc1xubGV0IGdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgPSBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcy4oaSlcbmxldCBnZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgPSBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLihpKVxuXG5sZXQgYWxsX2RlcGVuZGVuY2llcyBlbnYgPVxuICAoIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZSxcbiAgICBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50LFxuICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsXG4gICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKVxuXG5sZXQgcHJpbnRfYWdlbnQgP2VudiBmIGkgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYWdlbnRfJWlcIiBpXG4gIHwgU29tZSBlbnYgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IChzaWduYXR1cmVzIGVudikgZiBpXG5cbmxldCBwcmludF9hbGcgP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FsZ18laVwiIGlkXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgbmFtZSA9IE5hbWVkRGVjbHMuZWx0X25hbWUgZW52LmFsZ3MgaWQgaW5cbiAgICBsZXQgc3BlY2lhbCA9IFRvb2xzLm5vdF9hbl9pZCBuYW1lIGluXG4gICAgbGV0ICgpID0gaWYgc3BlY2lhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIidcIiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBuYW1lIGluXG4gICAgaWYgc3BlY2lhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIidcIlxuXG5sZXQgcHJpbnRfdG9rZW4gP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX3Rva2VuXyVpXCIgaWRcbiAgfCBTb21lIGVudiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiAoTmFtZWREZWNscy5lbHRfbmFtZSBlbnYudG9rZW5zIGlkKVxuXG5sZXQgcHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIGkgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYXN0X3J1bGVfJWlcIiBpXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgc2lncyA9IHNpZ25hdHVyZXMgZW52IGluXG4gICAgbGV0IGNvdW50ZXJzX2luZm8gPSBjb3VudGVyc19pbmZvIGVudiBpblxuICAgIGlmIGkgPSAwIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkludGVydmVudGlvbnNcIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZW52LmFzdF9ydWxlcy4ocHJlZCBpKSB3aXRoXG4gICAgICB8IFNvbWUgKG5hLCBfKSwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgbmFcbiAgICAgIHwgTm9uZSwgKHIsIF8pIC0+XG4gICAgICAgIExLYXBwYS5wcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOmZhbHNlIHNpZ3MgY291bnRlcnNfaW5mb1xuICAgICAgICAgIChwcmludF90b2tlbiB+ZW52KSAocHJpbnRfYWxnIH5lbnYpIGYgclxuICAgIClcblxubGV0IHByaW50X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX3J1bGVfJWlcIiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgcHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudiBmIGVudi5ydWxlcy4oaWQpLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGVcblxubGV0IG1hcF9vYnNlcnZhYmxlcyBmIGVudiA9IEFycmF5Lm1hcCAoZnVuICh4LCBfKSAtPiBmIHgpIGVudi5vYnNlcnZhYmxlc1xuXG5sZXQgcHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgcHJfYWxnID9wcl9ydWxlIHByX3BlcnQgZiBlbnYgPVxuICBsZXQgc2lncyA9IHNpZ25hdHVyZXMgZW52IGluXG4gIGxldCBjb3VudGVyc19pbmZvID0gY291bnRlcnNfaW5mbyBlbnYgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALCVhJXRALCVhJXQlYUAsJXQldCVhQF1cIlxuICAgIChDb250YWN0X21hcC5wcmludF9rYXBwYSB+bm9Db3VudGVycyBzaWdzKVxuICAgIGVudi5jb250YWN0X21hcFxuICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBfIG4gZiAoKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiUldG9rZW46ICVzXCIgbikpXG4gICAgZW52LnRva2Vuc1xuICAgIChmdW4gZiAtPiBpZiBlbnYudG9rZW5zLk5hbWVkRGVjbHMuZGVjbHMgPD4gW3x8XSB0aGVuIFBwLnNwYWNlIGYpXG4gICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIGkgbiBmIChlLCBfKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JSV2YXI6LyolaSovICclcycgJWFAXVwiIGkgbiAocHJfYWxnIGVudikgZSkpXG4gICAgZW52LmFsZ3NcbiAgICAoZnVuIGYgLT4gaWYgZW52LmFsZ3MuTmFtZWREZWNscy5kZWNscyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgfnRyYWlsaW5nOlBwLnNwYWNlIChmdW4gXyBmIChlLCBfKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JSVwbG90OiAlYUBdXCIgKHByX2FsZyBlbnYpIGUpKVxuICAgIGVudi5vYnNlcnZhYmxlc1xuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggcHJfcnVsZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgUHAuYXJyYXkgUHAuc3BhY2UgfnRyYWlsaW5nOlBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBfIGYgKG5hLCAoZSwgXykpIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgICAgICAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIChuYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJyBcIiBuYSkpXG4gICAgICAgICAgICAgIG5hXG4gICAgICAgICAgICAgIChMS2FwcGEucHJpbnRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbDp0cnVlIHNpZ3MgY291bnRlcnNfaW5mb1xuICAgICAgICAgICAgICAgICAocHJpbnRfdG9rZW4gfmVudikgKHByaW50X2FsZyB+ZW52KSlcbiAgICAgICAgICAgICAgZSlcbiAgICAgICAgICBmIGVudi5hc3RfcnVsZXNcbiAgICAgIHwgU29tZSBwcl9ydWxlIC0+XG4gICAgICAgIFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZVxuICAgICAgICAgIChmdW4gXyBmIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWFAXVwiIChwcl9ydWxlIGVudikgcilcbiAgICAgICAgICBmIGVudi5ydWxlcylcbiAgICAoZnVuIGYgLT4gaWYgZW52LmludGVydmVudGlvbnMgPD4gW3x8XSB0aGVuIFBwLnNwYWNlIGYpXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIHAgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPi8qJWkqLyVhQF1cIiBpIChwcl9wZXJ0IGVudikgcCkpXG4gICAgZW52LmludGVydmVudGlvbnNcblxubGV0IHByaW50IH5ub0NvdW50ZXJzIHByX2FsZyBwcl9ydWxlIHByX3BlcnQgZiBlbnYgPVxuICBsZXQgKCkgPSBwcmludF9rYXBwYSB+bm9Db3VudGVycyBwcl9hbGcgcHJfcGVydCBmIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQCxAWzx2PkBbPHYgMj5SdWxlczpALCVhQF1AXVwiXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIHIgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzwyPiVpOkAgJWFAXVwiIGkgKHByX3J1bGUgZW52KSByKSlcbiAgICBlbnYucnVsZXNcblxubGV0IGNoZWNrX2lmX2NvdW50ZXJfaXNfZmlsbGVkX2Vub3VnaCB4ID1cbiAgaWZcbiAgICBub3RcbiAgICBAQCBQcmltaXRpdmVzLmV4aXN0c19tb2RpZmljYXRpb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1RPUCBfIC0+IHRydWVcbiAgICAgICAgICAgfCBQcmltaXRpdmVzLklURVJfUlVMRSBfIHwgUHJpbWl0aXZlcy5VUERBVEUgX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgXyB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuRElOIF9cbiAgICAgICAgICAgfCBQcmltaXRpdmVzLkRJTk9GRiBfIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QTE9URU5UUllcbiAgICAgICAgICAgfCBQcmltaXRpdmVzLlBSSU5UIF8gfCBQcmltaXRpdmVzLlNQRUNJRVMgX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgeC5pbnRlcnZlbnRpb25zXG4gIHRoZW5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIlRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIHNpbXVsYXRpb24gdG8gc3RvcC5cIikpXG5cbmxldCBvdmVyd3JpdGVfdmFycyBhbGdfb3ZlcndyaXRlIGVudiA9XG4gIGxldCBhbGdzJyA9XG4gICAgQXJyYXkubWFwXG4gICAgICAoZnVuICh4LCB5KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCB5KVxuICAgICAgZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaSwgdikgLT4gYWxncycuKGkpIDwtIGZzdCBhbGdzJy4oaSksIExvYy5hbm5vdF93aXRoX2R1bW15IHYpXG4gICAgICBhbGdfb3ZlcndyaXRlXG4gIGluXG4gIHsgZW52IHdpdGggYWxncyA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ3MnIH1cblxubGV0IGZvbGRfYWxnX2V4cHIgZl9hbGcgZl9ib29sIHggZW52ID1cbiAgbGV0IHgxID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgKF8sIHkpIC0+IGZfYWxnIGFjYyB5KSB4IGVudi5hbGdzLk5hbWVkRGVjbHMuZGVjbHNcbiAgaW5cbiAgbGV0IHgyID0gQXJyYXkuZm9sZF9sZWZ0IGZfYWxnIHgxIGVudi5vYnNlcnZhYmxlcyBpblxuICBsZXQgeDMgPSBBcnJheS5mb2xkX2xlZnQgKFByaW1pdGl2ZXMuZm9sZF9leHByX3J1bGUgZl9hbGcpIHgyIGVudi5ydWxlcyBpblxuICBBcnJheS5mb2xkX2xlZnRcbiAgICAoUHJpbWl0aXZlcy5mb2xkX2V4cHJfcGVydHVyYmF0aW9uIGZfYWxnIGZfYm9vbClcbiAgICB4MyBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgZm9sZF9taXh0dXJlX2luX2V4cHIgZiA9XG4gIGZvbGRfYWxnX2V4cHIgKEFsZ19leHByLmZvbGRfb25fbWl4dHVyZSBmKSAoQWxnX2V4cHIuZm9sZF9ib29sX29uX21peHR1cmUgZilcblxubGV0IHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgIH5hbGdfb3ZlcndyaXRlIHggPVxuICBsZXQgYWxncycgPVxuICAgIEFycmF5Lm1hcCAoZnVuICh4LCB5KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCB5KSB4LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaSwgdikgLT4gYWxncycuKGkpIDwtIGZzdCBhbGdzJy4oaSksIExvYy5hbm5vdF93aXRoX2R1bW15IHYpXG4gICAgICBhbGdfb3ZlcndyaXRlXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSAobmEsIHYpIC0+XG4gICAgICAgIGFsZ3MnLihpKSA8LVxuICAgICAgICAgICggbmEsXG4gICAgICAgICAgICBBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycgdiApKVxuICAgICAgYWxncydcbiAgaW5cbiAge1xuICAgIGZpbGVuYW1lcyA9IHguZmlsZW5hbWVzO1xuICAgIGRvbWFpbiA9IHguZG9tYWluO1xuICAgIHRva2VucyA9IHgudG9rZW5zO1xuICAgIGFsZ3MgPSBOYW1lZERlY2xzLmNyZWF0ZSBhbGdzJztcbiAgICBvYnNlcnZhYmxlcyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJylcbiAgICAgICAgeC5vYnNlcnZhYmxlcztcbiAgICBhc3RfcnVsZXMgPSB4LmFzdF9ydWxlcztcbiAgICBydWxlcyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKFByaW1pdGl2ZXMubWFwX2V4cHJfcnVsZVxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKSlcbiAgICAgICAgeC5ydWxlcztcbiAgICBjb3VudGVyc19pbmZvID0geC5jb3VudGVyc19pbmZvO1xuICAgIGludGVydmVudGlvbnMgPVxuICAgICAgQXJyYXkubWFwXG4gICAgICAgIChQcmltaXRpdmVzLm1hcF9leHByX3BlcnR1cmJhdGlvblxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKVxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpKVxuICAgICAgICB4LmludGVydmVudGlvbnM7XG4gICAgZGVwZW5kZW5jaWVzX2luX3RpbWUgPSB4LmRlcGVuZGVuY2llc19pbl90aW1lO1xuICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9IHguZGVwZW5kZW5jaWVzX2luX2V2ZW50O1xuICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSB4LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXM7XG4gICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID0geC50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXM7XG4gICAgY29udGFjdF9tYXAgPSB4LmNvbnRhY3RfbWFwO1xuICB9XG5cbmxldCBrYXBwYV9pbnN0YW5jZV90b195b2pzb24gPVxuICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbilcblxubGV0IHRvX3lvanNvbiBlbnYgPVxuICBsZXQgZmlsZXMgPVxuICAgIEFycmF5Lm9mX2xpc3QgKExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZSA6OiBlbnYuZmlsZW5hbWVzKVxuICBpblxuICBsZXQgZmlsZW5hbWVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWFwIHggLT4gTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBmaWxlc1xuICBpblxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcImZpbGVuYW1lc1wiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9zdHJpbmcgZmlsZXM7XG4gICAgICBcInVwZGF0ZVwiLCBQYXR0ZXJuLkVudi50b195b2pzb24gKGRvbWFpbiBlbnYpO1xuICAgICAgXCJ0b2tlbnNcIiwgTmFtZWREZWNscy50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIGVudi50b2tlbnM7XG4gICAgICAoIFwiYWxnc1wiLFxuICAgICAgICBOYW1lZERlY2xzLnRvX2pzb25cbiAgICAgICAgICAoZnVuICh4LCBfKSAtPlxuICAgICAgICAgICAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV90b195b2pzb25cbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50IHgpXG4gICAgICAgICAgZW52LmFsZ3MgKTtcbiAgICAgICggXCJvYnNlcnZhYmxlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAoeCwgXykgbCAtPlxuICAgICAgICAgICAgICAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV90b195b2pzb25cbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50IHhcbiAgICAgICAgICAgICAgIDo6IGwpXG4gICAgICAgICAgICAgZW52Lm9ic2VydmFibGVzIFtdKSApO1xuICAgICAgKCBcImFzdF9ydWxlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAobiwgKHIsIF8pKSBsIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIG4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICAgIHwgU29tZSAobiwgXykgLT4gYFN0cmluZyBuKTtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucnVsZV90b19qc29uIH5maWxlbmFtZXMgcjtcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgOjogbClcbiAgICAgICAgICAgICBlbnYuYXN0X3J1bGVzIFtdKSApO1xuICAgICAgKCBcImVsZW1lbnRhcnlfcnVsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgKFByaW1pdGl2ZXMucnVsZV90b195b2pzb24gfmZpbGVuYW1lcykgZW52LnJ1bGVzICk7XG4gICAgICBcImNvbnRhY3RfbWFwXCIsIENvbnRhY3RfbWFwLnRvX3lvanNvbiBlbnYuY29udGFjdF9tYXA7XG4gICAgICAoIFwiaW50ZXJ2ZW50aW9uc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheVxuICAgICAgICAgIChQcmltaXRpdmVzLnBlcnR1cmJhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICBlbnYuaW50ZXJ2ZW50aW9ucyApO1xuICAgICAgXCJkZXBlbmRlbmNpZXNfaW5fdGltZVwiLCBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZTtcbiAgICAgICggXCJkZXBlbmRlbmNpZXNfaW5fZXZlbnRcIixcbiAgICAgICAgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvbiBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50ICk7XG4gICAgICAoIFwiYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uXG4gICAgICAgICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKTtcbiAgICAgICggXCJ0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvblxuICAgICAgICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKTtcbiAgICBdXG5cbmxldCBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbilcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAxMyAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZW5hbWVzID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImZpbGVuYW1lc1wiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgZG9tYWluID0gUGF0dGVybi5FbnYub2ZfeW9qc29uIChMaXN0LmFzc29jIFwidXBkYXRlXCIgbCkgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlbmFtZXMgPSBMaXN0LnRsIChBcnJheS50b19saXN0IGZpbGVuYW1lcyk7XG4gICAgICAgICBkb21haW4gPSBQYXR0ZXJuLkVudi5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJ1cGRhdGVcIiBsKTtcbiAgICAgICAgIGNvdW50ZXJzX2luZm8gPVxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIENvdW50ZXJzX2luZm8ub2ZfeW9qc29uIH5maWxlbmFtZXMgKExpc3QuYXNzb2MgXCJjb3VudGVyc19pbmZvXCIgbClcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFBhdHRlcm4uRW52LmNvdW50ZXJzX2luZm8gZG9tYWluKTtcbiAgICAgICAgIHRva2VucyA9IE5hbWVkRGVjbHMub2ZfanNvbiAoZnVuIF8gLT4gKCkpIChMaXN0LmFzc29jIFwidG9rZW5zXCIgbCk7XG4gICAgICAgICBhbGdzID1cbiAgICAgICAgICAgTmFtZWREZWNscy5vZl9qc29uXG4gICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgICAgICAgIHgpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiYWxnc1wiIGwpO1xuICAgICAgICAgb2JzZXJ2YWJsZXMgPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcIm9ic2VydmFibGVzXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbyAtPlxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICB4KSlcbiAgICAgICAgICAgICAgIG9cbiAgICAgICAgICAgfCBgTnVsbCAtPiBbfHxdXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgYXN0X3J1bGVzID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJhc3RfcnVsZXNcIiBsIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdCBvIC0+XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYE51bGw7IHIgXSAtPlxuICAgICAgICAgICAgICAgICAgIE5vbmUsIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEucnVsZV9vZl9qc29uIH5maWxlbmFtZXMgcilcbiAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBTdHJpbmcgbjsgciBdIC0+XG4gICAgICAgICAgICAgICAgICAgKCBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBuKSxcbiAgICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEucnVsZV9vZl9qc29uIH5maWxlbmFtZXMgcikgKVxuICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgb1xuICAgICAgICAgICB8IGBOdWxsIC0+IFt8fF1cbiAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICBydWxlcyA9XG4gICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZWxlbWVudGFyeV9ydWxlc1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IG8gLT5cbiAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAoUHJpbWl0aXZlcy5ydWxlX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBvXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgaW50ZXJ2ZW50aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICAgKFByaW1pdGl2ZXMucGVydHVyYmF0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJpbnRlcnZlbnRpb25zXCIgeCk7XG4gICAgICAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9XG4gICAgICAgICAgIE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVwZW5kZW5jaWVzX2luX3RpbWVcIiB4KTtcbiAgICAgICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9XG4gICAgICAgICAgIE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVwZW5kZW5jaWVzX2luX2V2ZW50XCIgeCk7XG4gICAgICAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIgeCk7XG4gICAgICAgICB0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiIHgpO1xuICAgICAgICAgY29udGFjdF9tYXAgPSBDb250YWN0X21hcC5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJjb250YWN0X21hcFwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpXG5cbmxldCB1bmFyeV9wYXR0ZXJucyBlbnYgPVxuICBmb2xkX3J1bGVzXG4gICAgKGZ1biBfIGFjYyByIC0+XG4gICAgICBtYXRjaCByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBQYXR0ZXJuLlNldC5hZGRcbiAgICAgICAgICByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApXG4gICAgICAgICAgKFBhdHRlcm4uU2V0LmFkZCByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGFjYykpXG4gICAgUGF0dGVybi5TZXQuZW1wdHkgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2NfbWl4IH5ub0NvdW50ZXJzID9lbnYgZiBtaXggPVxuICBsZXQgZG9tYWluID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGUgLT4gU29tZSAoTW9kZWwuZG9tYWluIGUpXG4gIGluXG4gIG1hdGNoIG1peCB3aXRoXG4gIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIjBcIlxuICB8IF8gLT5cbiAgICBQcC5saXN0XG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiArQCBcIilcbiAgICAgIChmdW4gZiBjY3MgLT5cbiAgICAgICAgUHAuYXJyYXlcbiAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIipcIilcbiAgICAgICAgICAoZnVuIF8gZiBjYyAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKVxuICAgICAgICAgICAgICBjYylcbiAgICAgICAgICBmIGNjcylcbiAgICAgIGYgbWl4XG5cbmxldCBhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52ID1cbiAgQWxnX2V4cHIucHJpbnQgKGNjX21peCB+bm9Db3VudGVycyA/ZW52KSAoTW9kZWwucHJpbnRfdG9rZW4gP2VudilcbiAgICAoTW9kZWwucHJpbnRfYWxnID9lbnYpXG5cbmxldCBib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudiA9XG4gIEFsZ19leHByLnByaW50X2Jvb2wgKGNjX21peCB+bm9Db3VudGVycyA/ZW52KVxuICAgIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKE1vZGVsLnByaW50X3Rva2VuID9lbnYpIGkpXG4gICAgKE1vZGVsLnByaW50X2FsZyA/ZW52KVxuXG5sZXQgcHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52IGYgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYgZiBhbGdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHN0clxuICB8IChbIFByaW1pdGl2ZXMuQWxnX3BleHByIF8gXSB8IF8gOjogXyA6OiBfKSBhcyBlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSlcIiAoUHAubGlzdCAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIi5cIikgYXV4KSBlXG5cbmxldCBwcmludF9leHByX3ZhbCBhbGdfdmFsIGYgZSA9XG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBOYnIucHJpbnQgZiAoYWxnX3ZhbCBhbGcpXG4gIGluXG4gIFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9jdXQgZiAoKSkgYXV4IGYgZVxuXG5sZXQgZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsIGVudiBmIHIgPVxuICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gIGxldCBjb3VudGVyc19pbmZvID0gTW9kZWwuY291bnRlcnNfaW5mbyBlbnYgaW5cbiAgbGV0IHJfbWl4LCByX2NyZWF0ZWQgPVxuICAgIFBhdHRlcm5fY29tcGlsZXIubGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSBzaWdzIChNb2RlbC5kb21haW4gZW52KSByXG4gIGluXG4gIGxldCBwcl9hbGcgZiAoYSwgXykgPSBhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52IGYgYSBpblxuICBsZXQgcHJfdG9rIGYgKHZhLCB0b2spID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgJWFcIiBwcl9hbGcgdmEgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIHRva1xuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYSV0JWEldFwiXG4gICAgKExLYXBwYS5wcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIH5sdHlwZXM6ZmFsc2VcbiAgICAgICByX2NyZWF0ZWQpXG4gICAgcl9taXhcbiAgICAoUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmNyZWF0ZWQ6dHJ1ZSB+aW5pdGlhbF9jb21tYToocl9taXggPD4gW10pXG4gICAgICAgfnNpZ3MgfmNvdW50ZXJzX2luZm8pXG4gICAgcl9jcmVhdGVkXG4gICAgKGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlblxuICAgICAgIGZ1biBmIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8QCBcIlxuICAgICBlbHNlXG4gICAgICAgUHAuZW1wdHkpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdG9rKSByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zXG4gICAgKGZ1biBmIC0+XG4gICAgICBpZiBmdWxsIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkAgQEAgJWEldFwiIHByX2FsZyByLlByaW1pdGl2ZXMucmF0ZSAoZnVuIGYgLT5cbiAgICAgICAgICAgIG1hdGNoIHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChyYXRlLCBkaXN0KSAtPlxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiIHByX2FsZyByYXRlXG4gICAgICAgICAgICAgICAgKFBwLm9wdGlvbiAoZnVuIGYgbWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIiAoYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudikgbWQpKVxuICAgICAgICAgICAgICAgIGRpc3QpKVxuXG5sZXQgZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiByID1cbiAgbGV0IGRvbWFpbiwgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSBlIC0+IFNvbWUgKE1vZGVsLmRvbWFpbiBlKSwgU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlKVxuICBpblxuICBsZXQgcHJfYWxnIGYgKGEsIF8pID0gYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudiBmIGEgaW5cbiAgbGV0IHByX3RvayBmICh2YSwgdG9rKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgcHJfYWxnIHZhIChNb2RlbC5wcmludF90b2tlbiA/ZW52KSB0b2tcbiAgaW5cbiAgbGV0IHByX3RyYW5zIGYgdCA9IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucHJpbnQgP3NpZ3MgZiB0IGluXG4gIGxldCBib3hlZF9jYyBpIGYgY2MgPVxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX2JveCBmIDIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfaW50IGYgaSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIjogXCIgaW5cbiAgICBsZXQgKCkgPSBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSBmIGNjIGluXG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmICgpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIoYXN0OiAlaSlAIEBbQFslYUBdJXRAWyVhQF1AXUAgLS0gQFslYUBdQCArKyBAWyVhQF1AIEBAJWEldFwiXG4gICAgci5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlXG4gICAgKFBwLmFycmF5IFBwLmNvbW1hIGJveGVkX2NjKVxuICAgIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgIChpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW5cbiAgICAgICBmdW4gZiAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwifEAgXCJcbiAgICAgZWxzZVxuICAgICAgIFBwLmVtcHR5KVxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3Rvaykgci5QcmltaXRpdmVzLmRlbHRhX3Rva2Vuc1xuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3RyYW5zKVxuICAgIHIuUHJpbWl0aXZlcy5yZW1vdmVkXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdHJhbnMpXG4gICAgci5QcmltaXRpdmVzLmluc2VydGVkIHByX2FsZyByLlByaW1pdGl2ZXMucmF0ZVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKHJhdGUsIGRpc3QpIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJWF9XCIgcHJfYWxnIHJhdGVcbiAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiBtZCAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjolYVwiIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KSBtZCkpXG4gICAgICAgICAgZGlzdClcblxubGV0IG1vZGlmaWNhdGlvbiB+bm9Db3VudGVycyA/ZW52IGYgbSA9XG4gIGxldCBkb21haW4gPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZSAtPiBTb21lIChNb2RlbC5kb21haW4gZSlcbiAgaW5cbiAgbWF0Y2ggbSB3aXRoXG4gIHwgUHJpbWl0aXZlcy5QUklOVCAobm1lLCB2YSkgLT5cbiAgICBpZiBubWUgPD4gW10gdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYgJWEgPiAlYVwiXG4gICAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICAgIHZhXG4gICAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICAgIG5tZVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgdmFcbiAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIkUExPVEVOVFJZXCJcbiAgfCBQcmltaXRpdmVzLklURVJfUlVMRSAoKG4sIF8pLCBydWxlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkQVBQTFkgJWEgJWFcIlxuICAgICAgKGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICBuXG4gICAgICAobWF0Y2ggZW52IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbGVtZW50YXJ5X3J1bGUgfm5vQ291bnRlcnMgP2VudlxuICAgICAgfCBTb21lIGVudiAtPiBkZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6ZmFsc2UgZW52KVxuICAgICAgcnVsZVxuICB8IFByaW1pdGl2ZXMuVVBEQVRFIChpZCwgKHZhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFVQREFURSAlYSAlYVwiIChNb2RlbC5wcmludF9hbGcgP2VudikgaWRcbiAgICAgIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgdmFcbiAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIChyYXcsIGZuKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU05BUFNIT1QgJWEldFwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuIChmdW4gZiAtPlxuICAgICAgICBpZiByYXcgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgW3RydWVdXCIpXG4gIHwgUHJpbWl0aXZlcy5TVE9QIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTVE9QICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgfCBQcmltaXRpdmVzLkRJTiAoa2luZCwgZm4pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRESU4gJWEgJXRbdHJ1ZV1cIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJhYnNvbHV0ZVxcXCIgXCJcbiAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+ICgpXG4gICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInByb2JhYmlsaXR5XFxcIiBcIilcbiAgfCBQcmltaXRpdmVzLkRJTk9GRiBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOICVhIFtmYWxzZV1cIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICB8IFByaW1pdGl2ZXMuQ0ZMT1cgKF9uYW1lLCBjYywgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLIEBbJWFAXSBbdHJ1ZV1cIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIChfLCBjYykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLICVhIFtmYWxzZV1cIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgfCBQcmltaXRpdmVzLlNQRUNJRVMgKGZuLCBjYywgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgQFslYUBdIFt0cnVlXSA+ICVhXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgZm5cbiAgfCBQcmltaXRpdmVzLlNQRUNJRVNfT0ZGIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIFtmYWxzZV0gPiAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG5cbmxldCBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgP2VudiBmIHBlcnQgPVxuICBsZXQgYXV4X2FsYXJtIGYgPVxuICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG4gLT4gRm9ybWF0LmZwcmludGYgZiBcImFsYXJtICVhIFwiIE5ici5wcmludCBuXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlJW1vZDogJXQlYSBkbyAlYXJlcGVhdCAlYVwiIGF1eF9hbGFybVxuICAgIChib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uIChtb2RpZmljYXRpb24gfm5vQ291bnRlcnMgP2VudikpXG4gICAgcGVydC5QcmltaXRpdmVzLmVmZmVjdFxuICAgIChib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5yZXBlYXQpXG5cbmxldCBlbnYgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludCB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgZiBlbnZcblxubGV0IGVudl9rYXBwYSB+bm9Db3VudGVycyBmIGVudiA9XG4gIE1vZGVsLnByaW50X2thcHBhIH5ub0NvdW50ZXJzXG4gICAgKGZ1biBlbnYgLT4gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudilcbiAgICAoZnVuIGVudiAtPiBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgfmVudilcbiAgICBmIGVudlxuXG5sZXQgZGVjb21waWxlZF9lbnYgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludF9rYXBwYSB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgfnByX3J1bGU6KGRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbDp0cnVlKVxuICAgIChmdW4gZW52IC0+IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyB+ZW52KVxuICAgIGYgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBlcmlvZCA9IERFIG9mIGludCB8IERUIG9mIGZsb2F0XG5cbnR5cGUgdCA9IHtcbiAgcHJvZ3Jlc3NTaXplOiBpbnQ7XG4gIHByb2dyZXNzQ2hhcjogY2hhcjtcbiAgZHVtcElmRGVhZGxvY2tlZDogYm9vbDtcbiAgaW5pdGlhbDogZmxvYXQgb3B0aW9uO1xuICBtYXhDb25zZWN1dGl2ZUNsYXNoOiBpbnQ7XG4gIG91dHB1dEZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBwbG90UGVyaW9kOiBwZXJpb2Qgb3B0aW9uO1xuICBzZWVkOiBpbnQgb3B0aW9uO1xuICB0cmFjZUZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID1cbiAge1xuICAgIHByb2dyZXNzU2l6ZSA9IDcwO1xuICAgIHByb2dyZXNzQ2hhciA9ICcjJztcbiAgICBkdW1wSWZEZWFkbG9ja2VkID0gdHJ1ZTtcbiAgICBpbml0aWFsID0gTm9uZTtcbiAgICBtYXhDb25zZWN1dGl2ZUNsYXNoID0gMztcbiAgICBzZWVkID0gTm9uZTtcbiAgICB0cmFjZUZpbGVOYW1lID0gTm9uZTtcbiAgICBwbG90UGVyaW9kID0gTm9uZTtcbiAgICBvdXRwdXRGaWxlTmFtZSA9IE5vbmU7XG4gICAgZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWUgPSBOb25lO1xuICB9XG5cbmxldCBwYXJzZSByZXN1bHQgPVxuICBsZXQgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgZiA9XG4gICAgbWF0Y2ggdmFsdWVfbGlzdCB3aXRoXG4gICAgfCBbICh2LCBwb3MpIF0gLT4gZiB2IHBvc1xuICAgIHwgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVyIFwiIF4gcGFyYW0sIHBvc19wKSlcbiAgaW5cbiAgbGV0IGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgPVxuICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdmFsdWUgcG9zX3YgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgICB8IFwidHJ1ZVwiIHwgXCJ5ZXNcIiAtPiB0cnVlXG4gICAgICAgIHwgXCJmYWxzZVwiIHwgXCJub1wiIC0+IGZhbHNlXG4gICAgICAgIHwgXyBhcyBlcnJvciAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBlcnJvciBeIFwiIHNob3VsZCBiZSBlaXRoZXIgXFxcInllc1xcXCIgb3IgXFxcIm5vXFxcIlwiLCBwb3NfdikpKVxuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gKGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlKVxuICAgICAgICAgKChwYXJhbSwgcG9zX3ApLCB2YWx1ZV9saXN0KSAtPlxuICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgfCBcImRpc3BsYXlDb21wcmVzc2lvblwiIC0+XG4gICAgICAgIGxldCByZWMgcGFyc2UgKGEsIGIsIGMpIGwgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgKFwic3Ryb25nXCIsIF8pIDo6IHRsIC0+IHBhcnNlIChhLCBiLCB0cnVlKSB0bFxuICAgICAgICAgIHwgKFwid2Vha1wiLCBfKSA6OiB0bCAtPiBwYXJzZSAoYSwgdHJ1ZSwgYykgdGxcbiAgICAgICAgICB8IChcIm5vbmVcIiwgXykgOjogdGwgLT4gcGFyc2UgKHRydWUsIGIsIGMpIHRsXG4gICAgICAgICAgfCBbXSAtPiBjb25mLCAoYSwgYiwgYyksIGZvcm1hdENmbG93LCBjZmxvd0ZpbGVcbiAgICAgICAgICB8IChlcnJvciwgcG9zKSA6OiBfIC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoXCJVbmtub3duIHZhbHVlIFwiIF4gZXJyb3IgXiBcIiBmb3IgY29tcHJlc3Npb24gbW9kZVwiLCBwb3MpKVxuICAgICAgICBpblxuICAgICAgICBwYXJzZSBzdG9yeV9jb21wcmVzc2lvbiB2YWx1ZV9saXN0XG4gICAgICB8IFwiY2Zsb3dGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4geCBfIC0+XG4gICAgICAgICAgICBjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIFNvbWUgeClcbiAgICAgIHwgXCJzZWVkXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHNlZWQgPSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpXG4gICAgICB8IFwiVDBcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgcCAtPlxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggaW5pdGlhbCA9IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgcCkpKVxuICAgICAgfCBcInBsb3RQZXJpb2RcIiAtPlxuICAgICAgICAobWF0Y2ggdmFsdWVfbGlzdCB3aXRoXG4gICAgICAgIHwgWyAocywgcCkgXSAtPlxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChEVCAoZmxvYXRfb2Zfc3RyaW5nIHMpKSB9LFxuICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBwKSkpXG4gICAgICAgIHwgWyAocywgc3ApOyAodSwgdXApIF0gLT5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgdSA9IFwiZVwiIHx8IHUgPSBcImV2ZW50XCIgfHwgdSA9IFwiZXZlbnRzXCIgfHwgdSA9IFwiRXZlbnRcIlxuICAgICAgICAgICAgfHwgdSA9IFwiRXZlbnRzXCJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChERSAoaW50X29mX3N0cmluZyBzKSkgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHNwKSlcbiAgICAgICAgICApIGVsc2UgaWZcbiAgICAgICAgICAgICAgdSA9IFwidC51LlwiIHx8IHUgPSBcInRpbWUgdW5pdHNcIiB8fCB1ID0gXCJUaW1lIHVuaXRzXCJcbiAgICAgICAgICAgICAgfHwgdSA9IFwidGltZSB1bml0XCIgfHwgdSA9IFwiVGltZSB1bml0XCJcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggcGxvdFBlcmlvZCA9IFNvbWUgKERUIChmbG9hdF9vZl9zdHJpbmcgcykpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBzcCkpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJJbmNvcnJlY3QgdW5pdCBcIiBeIHUsIHVwKSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBwYXJhbWV0ZXIgXCIgXiBwYXJhbSwgcG9zX3ApKSlcbiAgICAgIHwgXCJvdXRwdXRGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIG91dHB1dEZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwidHJhY2VGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIHRyYWNlRmlsZU5hbWUgPSBTb21lIHMgfSxcbiAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICBjZmxvd0ZpbGUgKSlcbiAgICAgIHwgXCJkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIGRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwicHJvZ3Jlc3NCYXJTaXplXCIgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBjb25mIHdpdGhcbiAgICAgICAgICAgIHByb2dyZXNzU2l6ZSA9XG4gICAgICAgICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyB2XG4gICAgICAgICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICB8IFwicHJvZ3Jlc3NCYXJTeW1ib2xcIiAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGNvbmYgd2l0aFxuICAgICAgICAgICAgcHJvZ3Jlc3NDaGFyID1cbiAgICAgICAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgICAgICAgIHRyeSBTdHJpbmcudW5zYWZlX2dldCB2IDBcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGEgY2hhcmFjdGVyXCIsIHApKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgfCBcImR1bXBJZkRlYWRsb2NrZWRcIiAtPlxuICAgICAgICAoIHsgY29uZiB3aXRoIGR1bXBJZkRlYWRsb2NrZWQgPSBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IH0sXG4gICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgIHwgXCJtYXhDb25zZWN1dGl2ZUNsYXNoXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIG1heENvbnNlY3V0aXZlQ2xhc2ggPSBpbnRfb2Zfc3RyaW5nIHYgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHYgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpXG4gICAgICB8IFwiZG90Q2Zsb3dzXCIgLT5cbiAgICAgICAgbGV0IGZvcm1hdENmbG93ID0gZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IF8gLT4gdikgaW5cbiAgICAgICAgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGVcbiAgICAgICgqIGlmIGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgdGhlblxuICAgICAgICAgKHN0b3J5X2NvbXByZXNzaW9uLCBEb3QpIGVsc2VcbiAgICAgICAgIChzdG9yeV9jb21wcmVzc2lvbiwgSHRtbCkqKVxuICAgICAgfCBfIGFzIGVycm9yIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiVW5rbm93biBwYXJhbWV0ZXIgXCIgXiBlcnJvciwgcG9zX3ApKSlcbiAgICAoZW1wdHksIChmYWxzZSwgZmFsc2UsIGZhbHNlKSwgXCJkb3RcIiwgTm9uZSlcbiAgICByZXN1bHRcblxubGV0IHByaW50IGYgY29uZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX3Zib3ggZiAwIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwic2VlZFxcXCIgXFxcIiVpXFxcIkAsXCIpXG4gICAgICBmIGNvbmYuc2VlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcImR1bXBJZkRlYWRsb2NrZWRcXFwiIFxcXCIlYlxcXCJALFwiXG4gICAgICBjb25mLmR1bXBJZkRlYWRsb2NrZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJtYXhDb25zZWN1dGl2ZUNsYXNoXFxcIiBcXFwiJWlcXFwiQCxcIlxuICAgICAgY29uZi5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwicHJvZ3Jlc3NCYXJTaXplXFxcIiBcXFwiJWlcXFwiQCxcIiBjb25mLnByb2dyZXNzU2l6ZVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInByb2dyZXNzQmFyU3ltYm9sXFxcIiBcXFwiJWNcXFwiQCxcIiBjb25mLnByb2dyZXNzQ2hhclxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcIlQwXFxcIiBcXFwiJWdcXFwiQCxcIilcbiAgICAgIGYgY29uZi5pbml0aWFsXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBERSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInBsb3RQZXJpb2RcXFwiIFxcXCIlaVxcXCIgXFxcImV2ZW50c1xcXCJALFwiIGlcbiAgICAgICAgfCBEVCB0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInBsb3RQZXJpb2RcXFwiIFxcXCIlZ1xcXCIgXFxcInQudS5cXFwiQCxcIiB0KVxuICAgICAgZiBjb25mLnBsb3RQZXJpb2RcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJvdXRwdXRGaWxlTmFtZVxcXCIgXFxcIiVzXFxcIkAsXCIpXG4gICAgICBmIGNvbmYub3V0cHV0RmlsZU5hbWVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJ0cmFjZUZpbGVOYW1lXFxcIiBcXFwiJXNcXFwiQCxcIilcbiAgICAgIGYgY29uZi50cmFjZUZpbGVOYW1lXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwiZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWVcXFwiIFxcXCIlc1xcXCJALFwiKVxuICAgICAgZiBjb25mLmRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lXG4gIGluXG4gIEZvcm1hdC5wcF9jbG9zZV9ib3ggZiAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRpdmlkZV9leHByX2J5X2ludCBlIGkgPVxuICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgIChBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgKE9wZXJhdG9yLkRJViwgZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIChOYnIuSSBpKSkpKVxuXG50eXBlICgnYSwgJ2IpIGNvcnJlY3RlZF9yYXRlX2NvbnN0ID0ge1xuICBudW06IE5ici50O1xuICBkZW46IE5ici50O1xuICB2YXI6ICgnYSwgJ2IpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uO1xufVxuXG5sZXQgcmVjIHNpbXBsaWZ5ID8ocm9vdF9vbmx5ID0gZmFsc2UpIGV4cHIgPVxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYyAtPlxuICAgIGxldCBhLCBiID1cbiAgICAgIGlmIHJvb3Rfb25seSB0aGVuXG4gICAgICAgIGEsIGJcbiAgICAgIGVsc2VcbiAgICAgICAgc2ltcGxpZnkgYSwgc2ltcGxpZnkgYlxuICAgIGluXG4gICAgbGV0IHJvb3Rfb25seSA9IHRydWUgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuYWRkIGEgYiksIGxvY1xuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIF8gd2hlbiBOYnIuaXNfemVybyBhIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX3plcm8gYiAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuc3ViIGEgYiksIGxvY1xuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfemVybyBiIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLm11bHQgYSBiKSwgbG9jXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhJywgXyksIF8gd2hlbiBOYnIuaXNfZXF1YWwgYScgTmJyLnplcm8gLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYicsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGInIE5ici56ZXJvIC0+IGJcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEgTmJyLm9uZSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF9cbiAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGMsIChBbGdfZXhwci5DT05TVCBiLCBfKSksIF8gKSApXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBjLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykpLCBfICksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpICkgLT5cbiAgICAgICAgKCogYSooYipjKSAtPiAoYSpiKSpjIGlmIGEgJiBiIGFyZSBjb25zdGFudCAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgKE5ici5tdWx0IGEgYiksIGxvY19jc3QpLCBjKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF8pIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCkgKSAtPlxuICAgICAgICAoKiBhKihiL2MpIC0+IChhKmIpL2MgaWYgYSAmIGIgYXJlIGNvbnN0YW50ICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIChOYnIubXVsdCBhIGIpLCBsb2NfY3N0KSwgYyksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGIsIChBbGdfZXhwci5DT05TVCBjLCBfKSksIF8pLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSApXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGIsIChBbGdfZXhwci5DT05TVCBjLCBfKSksIF8pIClcbiAgICAgICAgd2hlbiAobm90IChOYnIuaXNfemVybyBjKSkgJiYgTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiBhKihiL2MpIC0+ICgoYS9jKSpiKSBpZiBhICYgYyBhcmUgY29uc3RhbnQgIGFuZCBjfGEgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoIE9wZXJhdG9yLk1VTFQsXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGEgYyksIGxvY19jc3QpLFxuICAgICAgICAgICAgICAgIGIgKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAgICggKCBPcGVyYXRvci5ESVYgfCBPcGVyYXRvci5NVUxUIHwgT3BlcmF0b3IuU1VNIHwgT3BlcmF0b3IuTUlOVVNcbiAgICAgICAgICAgICAgICAgIHwgT3BlcmF0b3IuUE9XIHwgT3BlcmF0b3IuTU9EVUxPIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgXyApXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pXG4gICAgICAgIHdoZW4gKG5vdCAoTmJyLmlzX3plcm8gYikpICYmIE5ici5pc196ZXJvIChOYnIucmVtIGEgYikgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYSBiKSwgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIGIpLFxuICAgICAgICAgICAgbG9jX2JpbiApLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBjLCBfKSApXG4gICAgICAgIHdoZW4gTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiAoYSpiL2MpICYgY3xhIC0+ICgoYy9hKSpiKSopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKCBPcGVyYXRvci5NVUxULFxuICAgICAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBjIGEpLCBsb2NfYmluKSxcbiAgICAgICAgICAgICAgICBiICksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgYiwgKEFsZ19leHByLkNPTlNUIGEsIF8pKSxcbiAgICAgICAgICAgIGxvY19iaW4gKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYywgXykgKVxuICAgICAgICB3aGVuIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogKGIqYS9jKSAmIGN8YSAtPiAoKGMvYSkqYikqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICggT3BlcmF0b3IuTVVMVCxcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYyBhKSwgbG9jX2JpbiksXG4gICAgICAgICAgICAgICAgYiApLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCBhLFxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIChBbGdfZXhwci5DT05TVCBjLCBfKSksXG4gICAgICAgICAgICBsb2NkaXYgKSApIC0+XG4gICAgICAgICgqIChhL2IvYykgLT4gYS8oYipjKSAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5ESVYsIGEsIEFsZ19leHByLihDT05TVCAoTmJyLm11bHQgYiBjKSwgbG9jZGl2KSksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgICAoICggT3BlcmF0b3IuRElWIHwgT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLlNVTSB8IE9wZXJhdG9yLk1JTlVTXG4gICAgICAgICAgICAgICAgICB8IE9wZXJhdG9yLlBPVyB8IE9wZXJhdG9yLk1PRFVMTyB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgIF8gKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKVxuICAgICAgICB3aGVuIE5ici5pc19zbWFsbGVyIGEgKE5ici5JIDExKVxuICAgICAgICAgICAgICYmIE5ici5pc19ncmVhdGVyIGIgTmJyLnplcm9cbiAgICAgICAgICAgICAmJiBOYnIuaXNfc21hbGxlciBiIChOYnIuSSAxMSkgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5wb3cgYSBiKSwgbG9jXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1PRFVMTyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYIC0+IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MgLT5cbiAgICBsZXQgYSA9IHNpbXBsaWZ5IGEgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IEFsZ19leHByLkNPTlNUIGEsIF8gLT4gQWxnX2V4cHIuQ09OU1QgKE5ici5uZWcgYSksIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuQ09TSU5VUyB8IE9wZXJhdG9yLkVYUCAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIHdoZW4gTmJyLmlzX3plcm8gYSAtPiBBbGdfZXhwci5DT05TVCBOYnIub25lLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgXyApIC0+XG4gICAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5TSU5VUyB8IE9wZXJhdG9yLlRBTiAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEgTmJyLm9uZSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuU1FSVCB8IE9wZXJhdG9yLkxPRyB8IE9wZXJhdG9yLklOVCAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXgpLCBsb2MgLT5cbiAgICBsZXQgZXhwciA9IHNpbXBsaWZ5IGV4cHIgaW5cbiAgICAobWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+IEFsZ19leHByLkNPTlNUIE5ici56ZXJvLCBsb2NcbiAgICB8ICggKCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF8gfCBBbGdfZXhwci5VTl9BTEdfT1AgX1xuICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4KSwgbG9jKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgbG9jIC0+XG4gICAgbGV0IGV4cHIgPSBzaW1wbGlmeSBleHByIGluXG4gICAgKG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPiBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICBfICkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgbG9jKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfLCBfXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfLCBfXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXywgX1xuICB8IEFsZ19leHByLlRPS0VOX0lEIF8sIF9cbiAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+XG4gICAgZXhwclxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSwgbG9jIC0+XG4gICAgbGV0IGNvbmQsIHllcywgbm8gPSBzaW1wbGlmeV9ib29sIGNvbmQsIHNpbXBsaWZ5IHllcywgc2ltcGxpZnkgbm8gaW5cbiAgICAobWF0Y2ggY29uZCB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFLCBfIC0+IHllc1xuICAgIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gbm9cbiAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pLCBfXG4gICAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXyksIF9cbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pLCBfIC0+XG4gICAgICBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubyksIGxvYylcblxuYW5kIHNpbXBsaWZ5X2Jvb2wgZXhwcl9ib29sID1cbiAgbWF0Y2ggZXhwcl9ib29sIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFLCBfIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gZXhwcl9ib29sXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpLCBsb2MgLT5cbiAgICAobWF0Y2ggc2ltcGxpZnlfYm9vbCBhIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUsIF8gLT4gQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgfCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKSwgX1xuICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKSwgX1xuICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSwgXyApIGFzIGEnIC0+XG4gICAgICBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYScpLCBsb2MpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgbG9jIC0+XG4gICAgbGV0IGEsIGIgPSBzaW1wbGlmeV9ib29sIGEsIHNpbXBsaWZ5X2Jvb2wgYiBpblxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5BTkQgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLlRSVUUsIF8pLCBfIC0+IGJcbiAgICAgIHwgKEFsZ19leHByLkZBTFNFLCBfKSwgXyAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5UUlVFLCBfKSAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5GQUxTRSwgXykgLT4gYlxuICAgICAgfCAoICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5PUiAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuVFJVRSwgXyksIF8gLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuRkFMU0UsIF8pLCBfIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLlRSVUUsIF8pIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkZBTFNFLCBfKSAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIGxvYykpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBsb2MgLT5cbiAgICBsZXQgYSwgYiA9IHNpbXBsaWZ5IGEsIHNpbXBsaWZ5IGIgaW5cbiAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgKG1hdGNoIG9wIHdpdGhcbiAgICAgIHwgT3BlcmF0b3IuR1JFQVRFUiAtPlxuICAgICAgICBpZiBOYnIuaXNfZ3JlYXRlciBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5TTUFMTEVSIC0+XG4gICAgICAgIGlmIE5ici5pc19zbWFsbGVyIGEgYiB0aGVuXG4gICAgICAgICAgQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICB8IE9wZXJhdG9yLkVRVUFMIC0+XG4gICAgICAgIGlmIE5ici5pc19lcXVhbCBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgICAgIGlmIE5ici5pc19lcXVhbCBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvYylcbiAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgXyApLFxuICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICBfICkgKSAtPlxuICAgICAgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBsb2MpXG5cbmxldCBzaW1wbGlmeSBleHByID1cbiAgbGV0IHJvb3Rfb25seSA9IGZhbHNlIGluXG4gIHNpbXBsaWZ5IH5yb290X29ubHkgZXhwclxuXG5sZXQgcmVjIGNsZWFuIGV4cHIgPVxuICBsZXQgZXhwciA9IGZzdCBleHByIGluXG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgY2xlYW4gYSwgY2xlYW4gYikpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgY2xlYW4gYSkpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgZHQpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkRJRkZfVE9LRU4gKGNsZWFuIGV4cHIsIGR0KSlcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBkdCkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoY2xlYW4gZXhwciwgZHQpKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5DT05TVCBfIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgZXhwclxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5JRiAoY2xlYW5fYm9vbCBjb25kLCBjbGVhbiB5ZXMsIGNsZWFuIG5vKSlcblxuYW5kIGNsZWFuX2Jvb2wgZXhwcl9ib29sID1cbiAgbGV0IGV4cHIgPSBmc3QgZXhwcl9ib29sIGluXG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSBleHByXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBjbGVhbl9ib29sIGEpKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBjbGVhbl9ib29sIGEsIGNsZWFuX2Jvb2wgYikpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBjbGVhbiBhLCBjbGVhbiBiKSlcblxubGV0IHJlYyBnZXRfY29ycmVjdGVkX3JhdGUgZSA9XG4gIG1hdGNoIGUgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pLCBlKSwgX1xuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGUsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUgLT5cbiAgICAgIFNvbWUgeyBjb3JyZWN0ZWRfcmF0ZSB3aXRoIG51bSA9IE5ici5tdWx0IGNzdCBjb3JyZWN0ZWRfcmF0ZS5udW0gfSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGUsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUgLT5cbiAgICAgIFNvbWUgeyBjb3JyZWN0ZWRfcmF0ZSB3aXRoIGRlbiA9IE5ici5tdWx0IGNzdCBjb3JyZWN0ZWRfcmF0ZS5kZW4gfSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5TVU0sIGUxLCBlMiksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUxIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZTEgLT5cbiAgICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZTIgd2l0aFxuICAgICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlMlxuICAgICAgICB3aGVuIGNvbXBhcmUgY29ycmVjdGVkX3JhdGUxLnZhciBjb3JyZWN0ZWRfcmF0ZTIudmFyID0gMFxuICAgICAgICAgICAgICYmIE5ici5pc19lcXVhbCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5kZW4gLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvcnJlY3RlZF9yYXRlMSB3aXRoXG4gICAgICAgICAgICBudW0gPSBOYnIuYWRkIGNvcnJlY3RlZF9yYXRlMS5udW0gY29ycmVjdGVkX3JhdGUyLm51bTtcbiAgICAgICAgICB9XG4gICAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUyXG4gICAgICAgIHdoZW4gY29tcGFyZSBjb3JyZWN0ZWRfcmF0ZTEudmFyIGNvcnJlY3RlZF9yYXRlMi52YXIgPSAwIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0ZWRfcmF0ZTEgd2l0aFxuICAgICAgICAgICAgbnVtID1cbiAgICAgICAgICAgICAgTmJyLmFkZFxuICAgICAgICAgICAgICAgIChOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTIuZGVuIGNvcnJlY3RlZF9yYXRlMS5udW0pXG4gICAgICAgICAgICAgICAgKE5ici5tdWx0IGNvcnJlY3RlZF9yYXRlMS5kZW4gY29ycmVjdGVkX3JhdGUyLm51bSk7XG4gICAgICAgICAgICBkZW4gPSBOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5kZW47XG4gICAgICAgICAgfVxuICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpKVxuICB8ICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAoICggT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLkRJViB8IE9wZXJhdG9yLk1JTlVTIHwgT3BlcmF0b3IuUE9XXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RVTE8gfCBPcGVyYXRvci5NQVggfCBPcGVyYXRvci5NSU4gKSxcbiAgICAgICAgICBfLFxuICAgICAgICAgIF8gKSxcbiAgICAgIF8gKVxuICB8ICggKCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfXG4gICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLklGIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIE5vbmVcbiAgfCBBbGdfZXhwci5BTEdfVkFSIF8sIF8gLT4gU29tZSB7IHZhciA9IFNvbWUgZTsgbnVtID0gTmJyLm9uZTsgZGVuID0gTmJyLm9uZSB9XG4gIHwgQWxnX2V4cHIuQ09OU1QgY3N0LCBfIC0+IFNvbWUgeyB2YXIgPSBOb25lOyBudW0gPSBjc3Q7IGRlbiA9IE5ici5vbmUgfVxuXG5sZXQgZ2V0X2NvcnJlY3RlZF9yYXRlIGUgPSBnZXRfY29ycmVjdGVkX3JhdGUgKGNsZWFuIGUpXG5cbmxldCBwcmludCBwcl92YXIgZiBjb3JyZWN0ZWRfcmF0ZV9jb25zdCA9XG4gIG1hdGNoIGNvcnJlY3RlZF9yYXRlX2NvbnN0IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJOb25lXCJcbiAgfCBTb21lIGEgLT5cbiAgICAobWF0Y2ggYS52YXIgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhLyVhKS4lYVwiIE5ici5wcmludCBhLm51bSBOYnIucHJpbnQgYS5kZW4gcHJfdmFyIGEudmFyXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEvJWEpXCIgTmJyLnByaW50IGEubnVtIE5ici5wcmludCBhLmRlbilcblxubGV0IG5lY2Vzc2FyaWx5X2VxdWFsIGFfb3B0IGJfb3B0ID1cbiAgbWF0Y2ggYV9vcHQsIGJfb3B0IHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgT3B0aW9uX3V0aWwuZXF1YWwgQWxnX2V4cHIuZXF1YWwgYS52YXIgYi52YXJcbiAgICAmJiBOYnIuaXNfZXF1YWwgKE5ici5tdWx0IGEubnVtIGIuZGVuKSAoTmJyLm11bHQgYS5kZW4gYi5udW0pXG5cbmxldCBkZXAgZW1wdHkgYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgP3RpbWVfdmFyIGV4cHIgPVxuICBsZXQgcmVjIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBleHByIGFjY3UgPVxuICAgIG1hdGNoIGZzdCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKF8sIGUxLCBlMikgfCBBbGdfZXhwci5JRiAoXywgZTEsIGUyKSAtPlxuICAgICAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUxXG4gICAgICAgIChhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZTIgYWNjdSlcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAoXywgZSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGUsIF8pXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChlLCBfKSAtPlxuICAgICAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUgYWNjdVxuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSIC0+XG4gICAgICAobWF0Y2ggdGltZV92YXIgd2l0aFxuICAgICAgfCBTb21lIGlkIC0+IGFkZF9taXh0dXJlIGlkIGFjY3VcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgKCBcIkEgdmFyaWFibGUgZm9yIHRpbWUgc2hhbGwgYmUgcHJvdmlkZWQgdG8gYW5hbHlzZSB0aGUgXFxcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNlcyBpbiBhIHRpbWUtZGVwZW5kZW50IGV4cHJlc3Npb25cIixcbiAgICAgICAgICAgICAgIHNuZCBleHByICkpKVxuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApIC0+XG4gICAgICBhY2N1XG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGlkIC0+IHVuaW9uIChkZXBfZW52IGlkKSBhY2N1XG4gICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gYWRkX21peHR1cmUgbWl4IGFjY3VcbiAgICB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGFkZF90b2tlbiBpZCBhY2N1XG4gICAgfCBBbGdfZXhwci5DT05TVCBfIC0+IGFjY3VcbiAgaW5cbiAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGV4cHIgZW1wdHlcblxubGV0IHJlYyBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwciA9XG4gIG1hdGNoIGZzdCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5JRiAoYiwgZTEsIGUyKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAoQWxnX2V4cHIuSUZcbiAgICAgICAgICggYixcbiAgICAgICAgICAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxLFxuICAgICAgICAgICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIgKSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgZTEsIGUyKSAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5TVU0gLT5cbiAgICAgIEFsZ19leHByLmFkZFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKVxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgICAgQWxnX2V4cHIuYWRkXG4gICAgICAgIChBbGdfZXhwci5tdWx0IGUxIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpKVxuICAgICAgICAoQWxnX2V4cHIubXVsdCBlMiAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKSlcbiAgICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgICBBbGdfZXhwci5taW51c1xuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKVxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYIC0+IEFsZ19leHByLmludCAwXG4gICAgfCBPcGVyYXRvci5NT0RVTE8gLT4gZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxXG4gICAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAgIEFsZ19leHByLmRpdlxuICAgICAgICAoQWxnX2V4cHIubWludXNcbiAgICAgICAgICAgKEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkgZTIpXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpIGUxKSlcbiAgICAgICAgKEFsZ19leHByLnBvdyBlMiAoQWxnX2V4cHIuaW50IDIpKVxuICAgIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgICAoKiAodV52KSoodicqbG4odSkrdip1Jy91KSAqKVxuICAgICAgQWxnX2V4cHIubXVsdCAoQWxnX2V4cHIucG93IGUxIGUyKVxuICAgICAgICAoQWxnX2V4cHIuYWRkXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0XG4gICAgICAgICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpXG4gICAgICAgICAgICAgIChBbGdfZXhwci5sbiBlMSkpXG4gICAgICAgICAgIChBbGdfZXhwci5kaXZcbiAgICAgICAgICAgICAgKEFsZ19leHByLm11bHQgZTIgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkpXG4gICAgICAgICAgICAgIGUxKSkpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgZSkgLT5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgICBBbGdfZXhwci51bWludXMgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgIHwgT3BlcmF0b3IuQ09TSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci51bWludXMgKEFsZ19leHByLnNpbiBlKSlcbiAgICB8IE9wZXJhdG9yLlNJTlVTIC0+XG4gICAgICBBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSkgKEFsZ19leHByLmNvcyBlKVxuICAgIHwgT3BlcmF0b3IuTE9HIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmRpdiAoQWxnX2V4cHIuaW50IDEpIGUpXG4gICAgfCBPcGVyYXRvci5TUVJUIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmRpdiAoQWxnX2V4cHIuaW50ICgtMSkpIChBbGdfZXhwci5zcXJ0IGUpKVxuICAgIHwgT3BlcmF0b3IuRVhQIC0+IEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKSBlXG4gICAgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIuYWRkIChBbGdfZXhwci5pbnQgMSkgKEFsZ19leHByLnBvdyBlIChBbGdfZXhwci5pbnQgMikpKVxuICAgIHwgT3BlcmF0b3IuSU5UIC0+IEFsZ19leHByLmludCAwKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiAtPiBmX3RpbWUgKClcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1BcbiAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVIgKSAtPlxuICAgIEFsZ19leHByLmludCAwXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgbWl4IC0+IGZfbWl4IG1peFxuICB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGZfdG9rZW4gaWRcbiAgfCBBbGdfZXhwci5DT05TVCBfIC0+IEFsZ19leHByLmludCAwXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgLT5cbiAgICBmX3N5bWIgZXhwclxuXG5sZXQgZGlmZl90b2tlbiBleHByIHRva2VuID1cbiAgbGV0IGZfbWl4IF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBsZXQgZl90b2tlbiBhID1cbiAgICBpZiBhID0gdG9rZW4gdGhlblxuICAgICAgQWxnX2V4cHIuaW50IDFcbiAgICBlbHNlXG4gICAgICBBbGdfZXhwci5pbnQgMFxuICBpblxuICBsZXQgZl9zeW1iIGV4cHIgPSBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIExvYy5kdW1teSBpblxuICBsZXQgZl90aW1lIF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwclxuXG5sZXQgZGlmZl9taXh0dXJlID90aW1lX3ZhciBleHByIG1peHR1cmUgPVxuICBsZXQgZl9taXggYSA9XG4gICAgaWYgYSA9IG1peHR1cmUgdGhlblxuICAgICAgQWxnX2V4cHIuaW50IDFcbiAgICBlbHNlXG4gICAgICBBbGdfZXhwci5pbnQgMFxuICBpblxuICBsZXQgZl90b2tlbiBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgbGV0IGZfc3ltYiBleHByID0gQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4dHVyZSksIExvYy5kdW1teSBpblxuICBsZXQgZl90aW1lICgpID1cbiAgICBtYXRjaCB0aW1lX3ZhciB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBtaXh0dXJlID0gYiAtPiBBbGdfZXhwci5pbnQgMVxuICAgIHwgU29tZSBfIC0+IEFsZ19leHByLmludCAwXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQSB0aW1lLWRlcGVuZGVudCBleHByZXNzaW9uIGNhbm5vdCBiZSBkaWZmZXJlbnRpYXRlZCB3aXRob3V0IFxcXG4gICAgICAgICAgICAgIHNwZWNpZnlpbmcgYSB2YXJpYWJsZSBmb3IgdGltZSBwcm9ncmVzc1wiLFxuICAgICAgICAgICAgIExvYy5kdW1teSApKVxuICBpblxuICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwclxuXG5sZXQgZm9sZF9vdmVyX21peF9pbl9saXN0IGYgbWl4IGFjY3UgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjdSBhcnJheV9pZCAtPlxuICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjdSBwaWQgLT4gZiBwaWQgYWNjdSkgYWNjdSBhcnJheV9pZClcbiAgICBhY2N1IG1peFxuXG5sZXQgZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdSA9XG4gIGxldCBsID0gQWxnX2V4cHIuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyBleHByIGluXG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjdSBtaXggLT4gZm9sZF9vdmVyX21peF9pbl9saXN0IGYgbWl4IGFjY3UpIGFjY3UgbFxuXG5sZXQgZm9sZF9vdmVyX21peHR1cmVzX2luX2FsZ19leHBycyBmIG1vZGVsIGFjY3UgPVxuICBsZXQgYWxnc19leHByID0gTW9kZWwuZ2V0X2FsZ3MgbW9kZWwgaW5cbiAgbGV0IG9ic2VydmFibGVzID0gTW9kZWwuZ2V0X29icyBtb2RlbCBpblxuICAoKmFsZ3MqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgKF8sIG1peCkgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIG1peCBhY2N1KVxuICAgICAgYWNjdSBhbGdzX2V4cHJcbiAgaW5cbiAgKCpvYnNlcnZhdGlvbnMqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgbWl4IC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBtaXggYWNjdSlcbiAgICAgIGFjY3Ugb2JzZXJ2YWJsZXNcbiAgaW5cbiAgKCpydWxlcyopXG4gIGxldCBydWxlcyA9IE1vZGVsLmdldF9ydWxlcyBtb2RlbCBpblxuICAoKnJhdGUqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgZWxlbWVudGFyeV9ydWxlIC0+XG4gICAgICAgIGxldCByYXRlID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMucmF0ZSBpblxuICAgICAgICBsZXQgYWNjdSA9IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiByYXRlIGFjY3UgaW5cbiAgICAgICAgKCp1bmFyeV9yYXRlKilcbiAgICAgICAgbGV0IHVuYXJ5X3JhdGUgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIGluXG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCB1bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgIHwgU29tZSAoZXhwciwgXykgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdVxuICAgICAgICBpblxuICAgICAgICAoKmRlbHRhIHRva2VucyopXG4gICAgICAgIGxldCBkZWx0YV90b2tlbnMgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgaW5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjY3UgKGV4cHIsIF8pIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3UpXG4gICAgICAgICAgICBhY2N1IGRlbHRhX3Rva2Vuc1xuICAgICAgICBpblxuICAgICAgICBhY2N1KVxuICAgICAgYWNjdSBydWxlc1xuICBpblxuICBhY2N1XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgU2ltdWxhdGlvbl9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBzdG9yeV9pZDogaW50O1xuICAgIHN0b3J5X3RpbWU6IGZsb2F0O1xuICAgIHN0b3J5X2V2ZW50OiBpbnQ7XG4gICAgcHJvZmlsaW5nX2luZm86ICdhO1xuICB9XG4gICgqIHR5cGUgb2YgZGF0YSB0byBiZSBnaXZlbiB3aXRoIG9ic2VydmFibGVzIGZvciBzdG9yeSBjb21wcmVzc2lvblxuICAgICAoc3VjaCBhcyBkYXRlIHdoZW4gdGhlIG9icyBpcyB0cmlnZ2VyZWQqKVxuXG4gIGxldCB1cGRhdGVfcHJvZmlsaW5nX2luZm8gYSBpbmZvID1cbiAgICB7XG4gICAgICBzdG9yeV9pZCA9IGluZm8uc3RvcnlfaWQ7XG4gICAgICBzdG9yeV90aW1lID0gaW5mby5zdG9yeV90aW1lO1xuICAgICAgc3RvcnlfZXZlbnQgPSBpbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgcHJvZmlsaW5nX2luZm8gPSBhO1xuICAgIH1cblxuICBsZXQgZXZlbnQgYSA9IGEuc3RvcnlfZXZlbnRcbiAgbGV0IHN0b3J5X2lkIGEgPSBhLnN0b3J5X2lkXG4gIGxldCBjb21wYXJlX2J5X3N0b3J5X2lkIHggeSA9IE1vZHMuaW50X2NvbXBhcmUgeC5zdG9yeV9pZCB5LnN0b3J5X2lkXG5cbiAgbGV0IGR1bW15IGEgPVxuICAgIHsgc3RvcnlfaWQgPSAwOyBzdG9yeV90aW1lID0gMC47IHN0b3J5X2V2ZW50ID0gMDsgcHJvZmlsaW5nX2luZm8gPSBhIH1cblxuICBsZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gICAgXCJcXFwic2ltdWxhdGlvbl9pbmZvXFxcIjp7XFxcImlkXFxcIjowLFxcXCJ0aW1lXFxcIjoxLFxcXCJldmVudFxcXCI6MixcXFwicHJvZmlsaW5nXFxcIjozfVwiXG5cbiAgbGV0IHRvX2pzb24gZiB4ID1cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IHguc3RvcnlfaWQ7XG4gICAgICAgIGBGbG9hdCB4LnN0b3J5X3RpbWU7XG4gICAgICAgIGBJbnQgeC5zdG9yeV9ldmVudDtcbiAgICAgICAgZiB4LnByb2ZpbGluZ19pbmZvO1xuICAgICAgXVxuXG4gIGxldCBvZl9qc29uIGYgPSBmdW5jdGlvblxuICAgIHwgYExpc3QgWyBgSW50IHN0b3J5X2lkOyBgRmxvYXQgc3RvcnlfdGltZTsgYEludCBzdG9yeV9ldmVudDsgaW5mbyBdIC0+XG4gICAgICB7IHN0b3J5X2lkOyBzdG9yeV90aW1lOyBzdG9yeV9ldmVudDsgcHJvZmlsaW5nX2luZm8gPSBmIGluZm8gfVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBzaW11bGF0aW9uX2luZm9cIiwgeCkpXG5cbiAgbGV0IHdyaXRlX2pzb24gZiBvYiB4ID1cbiAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIHguc3RvcnlfaWQpO1xuICAgICAgICAoKiBcIk9ubHlcIiAxMyBzaWduaWZpY2FudCBkaWdpdHMgYXMgbWF4IHByZWMgY2F1c2VzIGlzc3VlcyB3aXRoIG9wYW0gQ0kgb24gZnJlZWJzZC5cbiAgICAgICAgICogKFNlZSBodHRwczovL29wYW0uY2kub2NhbWwub3JnL2dpdGh1Yi9vY2FtbC9vcGFtLXJlcG9zaXRvcnkvY29tbWl0LzkxYjg4MzdiZDY5M2FiN2ZiNjIyMTVmYTM5NmU5NjkyM2I5OGQ0NDMvdmFyaWFudC9mcmVlYnNkLGZyZWVic2Qtb2NhbWwtNC4xNC1hbWQ2NCxrYXBwYS1iaW5hcmllcy40LjEuMyx0ZXN0cyApICopXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXRfcHJlYyAxMyBvIHguc3RvcnlfdGltZSk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8geC5zdG9yeV9ldmVudCk7XG4gICAgICAgIChmdW4gbyAtPiBmIG8geC5wcm9maWxpbmdfaW5mbyk7XG4gICAgICBdXG5cbiAgbGV0IHJlYWRfanNvbiBmIHN0IGIgPVxuICAgIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAgIChmdW4gc3QgYiBzdG9yeV9pZCAtPlxuICAgICAgICBsZXQgc3RvcnlfdGltZSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0b3J5X2V2ZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IHByb2ZpbGluZ19pbmZvID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIHsgc3RvcnlfaWQ7IHN0b3J5X3RpbWU7IHN0b3J5X2V2ZW50OyBwcm9maWxpbmdfaW5mbyB9KVxuICAgICAgc3QgYlxuZW5kXG5cbnR5cGUgZXZlbnRfa2luZCA9XG4gIHwgUlVMRSBvZiBpbnRcbiAgfCBJTklUIG9mIGludCBsaXN0ICgqIHRoZSBhZ2VudHMgKilcbiAgfCBQRVJUIG9mIHN0cmluZyAoKiB0aGUgcnVsZSAqKVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgeCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IFJVTEUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUlVMRSglaSlcIiBpXG4gICAgfCBJTklUIGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJTklUKCVhKVwiIChQcC5saXN0IFBwLmNvbW1hIEZvcm1hdC5wcF9wcmludF9pbnQpIGxcbiAgICB8IFBFUlQgcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUEVSVCglcylcIiBzKVxuICB8IFNvbWUgZW52IC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgUEVSVCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBzXG4gICAgfCBSVUxFIHJfaWQgLT4gTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52IGYgcl9pZFxuICAgIHwgSU5JVCBzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSW50cm8gQFs8aD4lYUBdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgICBzKVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgPSBmdW5jdGlvblxuICB8IFJVTEUgcl9pZCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVhXFxcIiwgc2hhcGU9JXMsIHN0eWxlPSVzLCBmaWxsY29sb3IgPSAlc11cIlxuICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudilcbiAgICAgIHJfaWQgXCJpbnZob3VzZVwiIFwiZmlsbGVkXCIgXCJsaWdodGJsdWVcIlxuICB8IElOSVQgcyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiW2xhYmVsPVxcXCJJbnRybyBAWzxoPiVhQF1cXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvcj1ncmVlbl1cIlxuICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgcyBcImhvdXNlXCIgXCJmaWxsZWRcIlxuICB8IFBFUlQgcyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVzXFxcIiwgc2hhcGU9JXMsIHN0eWxlPSVzLCBmaWxsY29sb3IgPSAlc11cIiBzXG4gICAgICBcImludmhvdXNlXCIgXCJmaWxsZWRcIiBcImdyZWVuXCJcblxudHlwZSBzdGVwID1cbiAgfCBTdWJzIG9mIGludCAqIGludFxuICB8IFJ1bGUgb2ZcbiAgICAgIGludCAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5ldmVudCAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBQZXJ0IG9mXG4gICAgICBzdHJpbmdcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmV2ZW50XG4gICAgICAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBJbml0IG9mIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdFxuICB8IE9icyBvZlxuICAgICAgc3RyaW5nXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICAgICAgKiB1bml0IFNpbXVsYXRpb25faW5mby50XG4gIHwgRHVtbXkgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IHN0ZXAgbGlzdFxuXG5sZXQgc3Vic19zdGVwIGEgYiA9IFN1YnMgKGEsIGIpXG5sZXQgZHVtbXlfc3RlcCB4ID0gRHVtbXkgeFxubGV0IHByaW50X3N1YnMgX2YgKF9hLCBfYikgPSAoKVxuXG5sZXQgcHJpbnRfc2l0ZSA/ZW52IGYgKChhZ19pZCwgYWcpLCBzKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYV8laS4lYVwiIChNb2RlbC5wcmludF9hZ2VudCA/ZW52KSBhZyBhZ19pZFxuICAgIChtYXRjaCBlbnYgd2l0aFxuICAgIHwgU29tZSBlbnYgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSBhZ1xuICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgIHNcblxubGV0IHByaW50X2luaXQgfmNvbXBhY3QgP2VudiBsb2cgYWN0aW9ucyA9XG4gIGxldCBzaWdzID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGVudiAtPiBTb21lIChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgaW5cbiAgaWYgY29tcGFjdCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgbG9nIFwiSU5JVFwiXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBsb2cgXCIqKipAWzwxPklOSVQ6JWFAXSoqKlwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV9hY3Rpb24gP3NpZ3MpKVxuICAgICAgYWN0aW9uc1xuXG5sZXQgcHJpbnRfc2lkZV9lZmZlY3RzID9lbnYgPVxuICBQcC5saXN0XG4gICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiBcIilcbiAgICAoZnVuIGYgKHNpdGUsIHN0YXRlKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlNpZGVfZWZmZWN0cyglYSwlYSlcIiAocHJpbnRfc2l0ZSA/ZW52KSBzaXRlXG4gICAgICAgIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2JpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgP3NpZ3M6KE9wdGlvbl91dGlsLm1hcCBNb2RlbC5zaWduYXR1cmVzIGVudikpXG4gICAgICAgIHN0YXRlKVxuXG5sZXQgcHJpbnRfZXZlbnQgfmNvbXBhY3QgP2VudiBsb2cgKGV2X2tpbmQsIGUpID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBwcmludF9ldmVudF9raW5kID9lbnYgbG9nIGV2X2tpbmRcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGxvZ1xuICAgICAgXCJAWyoqKlJlZmluZWQgZXZlbnQ6KioqQCwqIEthcHBhX3J1bGUgJWEgU3RvcnkgZW5jb2Rpbmc6JWElYSVhQF1cIlxuICAgICAgKHByaW50X2V2ZW50X2tpbmQgP2VudikgZXZfa2luZFxuICAgICAgKFBwLmxpc3QgUHAuZW1wdHlcbiAgICAgICAgIChQcC5saXN0IFBwLmVtcHR5IChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgP3NpZ3MpKSlcbiAgICAgIChlLkluc3RhbnRpYXRpb24udGVzdHMgQCBbIGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgXSlcbiAgICAgIChQcC5saXN0IFBwLmVtcHR5IChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncykpXG4gICAgICBlLkluc3RhbnRpYXRpb24uYWN0aW9ucyAocHJpbnRfc2lkZV9lZmZlY3RzID9lbnYpXG4gICAgICBlLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuXG5sZXQgcHJpbnRfb2JzIH5jb21wYWN0ID9lbnYgZiAoZXZfa2luZCwgdGVzdHMsIF8pID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiT0JTICVzXCIgZXZfa2luZFxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIioqKkBbPDE+T0JTICVzOiVhQF0qKipcIiBldl9raW5kXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZVxuICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCA/c2lncykpKVxuICAgICAgdGVzdHNcblxubGV0IHByaW50X3N0ZXAgPyhjb21wYWN0ID0gZmFsc2UpID9lbnYgZiA9IGZ1bmN0aW9uXG4gIHwgU3VicyAoYSwgYikgLT4gcHJpbnRfc3VicyBmIChhLCBiKVxuICB8IFJ1bGUgKHgsIHksIF96KSAtPiBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGYgKFJVTEUgeCwgeSlcbiAgfCBQZXJ0ICh4LCB5LCBfeikgLT4gcHJpbnRfZXZlbnQgfmNvbXBhY3QgP2VudiBmIChQRVJUIHgsIHkpXG4gIHwgSW5pdCBhIC0+IHByaW50X2luaXQgfmNvbXBhY3QgP2VudiBmIGFcbiAgfCBPYnMgKGEsIGIsIGMpIC0+IHByaW50X29icyB+Y29tcGFjdCA/ZW52IGYgKGEsIGIsIGMpXG4gIHwgRHVtbXkgXyAtPiAoKVxuXG5sZXQgZ2V0X3R5cGVzX2Zyb21faW5pdCBhID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyBhY3Rpb24gLT5cbiAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoXywgYXR5cGUpLCBfKSAtPiBhdHlwZSA6OiBhY2NcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgIC0+XG4gICAgICAgIGFjYylcbiAgICBbXSBhXG5cbmxldCBwcmludF9sYWJlbF9vZl9zdGVwID9lbnYgZiB4ID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgU3VicyBfIC0+ICgpXG4gICAgfCBSdWxlICh4LCBfLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWlcIiB4XG4gICAgfCBQZXJ0ICh4LCBfLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiB4XG4gICAgfCBJbml0IGEgLT5cbiAgICAgIGxldCBsID0gZ2V0X3R5cGVzX2Zyb21faW5pdCBhIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSU5JVCglYSlcIiAoUHAubGlzdCBQcC5jb21tYSBGb3JtYXQucHBfcHJpbnRfaW50KSBsXG4gICAgfCBPYnMgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHhcbiAgICB8IER1bW15IF8gLT4gKCkpXG4gIHwgU29tZSBlbnYgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBTdWJzIF8gLT4gKClcbiAgICB8IFJ1bGUgKHgsIF8sIF8pIC0+IE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudiBmIHhcbiAgICB8IFBlcnQgKHgsIF8sIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgfCBJbml0IGEgLT5cbiAgICAgIGxldCBsID0gZ2V0X3R5cGVzX2Zyb21faW5pdCBhIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSW50cm8gQFs8aD4lYUBdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgICBsXG4gICAgfCBPYnMgKHgsIF8sIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgfCBEdW1teSBfIC0+ICgpKVxuXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gIFwiXFxcInN0ZXBcXFwiOltcXFwiU3Vic1xcXCIsXFxcIlJ1bGVcXFwiLFxcXCJQZXJ0XFxcIixcXFwiSW5pdFxcXCIsXFxcIk9ic1xcXCIsXFxcIkR1bW15XFxcIl1cIlxuXG5sZXQgd3JpdGVfc3RlcCBvYiBzID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggcyB3aXRoXG4gICAgfCBTdWJzIChhLCBiKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGEpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGIpO1xuICAgICAgXVxuICAgIHwgUnVsZSAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+IEluc3RhbnRpYXRpb24ud3JpdGVfZXZlbnQgQWdlbnQud3JpdGVfanNvbiBvIHkpO1xuICAgICAgICAoZnVuIG8gLT4gU2ltdWxhdGlvbl9pbmZvLndyaXRlX2pzb24gWW9qc29uLkJhc2ljLndyaXRlX251bGwgbyB6KTtcbiAgICAgIF1cbiAgICB8IFBlcnQgKHgsIHksIHopIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMik7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG8geCk7XG4gICAgICAgIChmdW4gbyAtPiBJbnN0YW50aWF0aW9uLndyaXRlX2V2ZW50IEFnZW50LndyaXRlX2pzb24gbyB5KTtcbiAgICAgICAgKGZ1biBvIC0+IFNpbXVsYXRpb25faW5mby53cml0ZV9qc29uIFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG8geik7XG4gICAgICBdXG4gICAgfCBJbml0IGEgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdCAoSW5zdGFudGlhdGlvbi53cml0ZV9hY3Rpb24gQWdlbnQud3JpdGVfanNvbikgbyBhKTtcbiAgICAgIF1cbiAgICB8IE9icyAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA0KTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3QgKEluc3RhbnRpYXRpb24ud3JpdGVfdGVzdCBBZ2VudC53cml0ZV9qc29uKSlcbiAgICAgICAgICAgIG8geSk7XG4gICAgICAgIChmdW4gbyAtPiBTaW11bGF0aW9uX2luZm8ud3JpdGVfanNvbiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvIHopO1xuICAgICAgXVxuICAgIHwgRHVtbXkgXyAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNSkgXSlcblxubGV0IHJlYWRfc3RlcCBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCBhID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IGIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBTdWJzIChhLCBiKVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2V2ZW50IEFnZW50LnJlYWRfanNvbilcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBSdWxlICh4LCB5LCB6KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2V2ZW50IEFnZW50LnJlYWRfanNvbilcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBQZXJ0ICh4LCB5LCB6KVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBsID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RfcmV2XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2FjdGlvbiBBZ2VudC5yZWFkX2pzb24pKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBJbml0IChMaXN0LnJldiBsKVxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfdGVzdCBBZ2VudC5yZWFkX2pzb24pKSlcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBPYnMgKHgsIHksIHopXG4gICAgICB8IDUgLT4gRHVtbXkgXCJcIlxuICAgICAgfCBfIC0+IHJhaXNlIChZb2pzb24uanNvbl9lcnJvciBcIkludmFsaWQgc3RlcFwiKVxuICAgICAgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgc3RlcF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IFN1YnMgKGEsIGIpIC0+IGBMaXN0IFsgYEludCAwOyBgSW50IGE7IGBJbnQgYiBdXG4gIHwgUnVsZSAoeCwgeSwgeikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDE7XG4gICAgICAgIGBJbnQgeDtcbiAgICAgICAgSW5zdGFudGlhdGlvbi5ldmVudF90b19qc29uIEFnZW50LnRvX2pzb24geTtcbiAgICAgICAgU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgejtcbiAgICAgIF1cbiAgfCBQZXJ0ICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMjtcbiAgICAgICAgYFN0cmluZyB4O1xuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gQWdlbnQudG9fanNvbiB5O1xuICAgICAgICBTaW11bGF0aW9uX2luZm8udG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSB6O1xuICAgICAgXVxuICB8IEluaXQgYSAtPlxuICAgIGxldCByZXZfYWN0aW9ucyA9XG4gICAgICBMaXN0LnJldl9tYXAgKEluc3RhbnRpYXRpb24uYWN0aW9uX3RvX2pzb24gQWdlbnQudG9fanNvbikgYVxuICAgIGluXG4gICAgYExpc3QgWyBgSW50IDM7IGBMaXN0IChMaXN0LnJldiByZXZfYWN0aW9ucykgXVxuICB8IE9icyAoeCwgeSwgeikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDQ7XG4gICAgICAgIGBTdHJpbmcgeDtcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuIHogLT5cbiAgICAgICAgICAgICAgIGBMaXN0IChMaXN0Lm1hcCAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gQWdlbnQudG9fanNvbikgeikpXG4gICAgICAgICAgICAgeSk7XG4gICAgICAgIFNpbXVsYXRpb25faW5mby50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHo7XG4gICAgICBdXG4gIHwgRHVtbXkgXyAtPiBgTGlzdCBbIGBJbnQgNSBdXG5cbmxldCB3cml0ZV9qc29uID0gSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9zdGVwXG5sZXQgcmVhZF9qc29uIHN0IGIgPSBMaXN0LnJldiAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdF9yZXYgcmVhZF9zdGVwIHN0IGIpXG5cbmxldCBzdHJpbmdfb2Zfc3RlcCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zdGVwIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgc3RlcF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc3RlcCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgc3RlcF9pc19vYnMgPSBmdW5jdGlvblxuICB8IE9icyBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgSW5pdCBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX2luaXQgPSBmdW5jdGlvblxuICB8IEluaXQgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgUGVydCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3N1YnMgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgUGVydCBfIHwgSW5pdCBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3J1bGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgXyAtPiB0cnVlXG4gIHwgUGVydCBfIHwgSW5pdCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3BlcnQgPSBmdW5jdGlvblxuICB8IFBlcnQgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgSW5pdCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgT2JzIChfLCBfLCBpbmZvKSB8IFJ1bGUgKF8sIF8sIGluZm8pIHwgUGVydCAoXywgXywgaW5mbykgLT4gU29tZSBpbmZvXG4gIHwgSW5pdCBfIC0+IFNvbWUgKFNpbXVsYXRpb25faW5mby5kdW1teSAoKSlcbiAgfCBTdWJzIF8gfCBEdW1teSBfIC0+IE5vbmVcblxubGV0IGNyZWF0aW9uX29mX2FjdGlvbnMgb3AgYWN0aW9ucyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBsIC0+IGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICh4LCBfKSAtPiBvcCB4IDo6IGxcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgIC0+XG4gICAgICAgIGwpXG4gICAgW10gYWN0aW9uc1xuXG5sZXQgY3JlYXRpb25fb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgUnVsZSAoXywgeyBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhYzsgXyB9LCBfKVxuICB8IFBlcnQgKF8sIHsgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gYWM7IF8gfSwgXylcbiAgfCBJbml0IGFjIC0+XG4gICAgY3JlYXRpb25fb2ZfYWN0aW9ucyBmc3QgYWNcbiAgfCBPYnMgXyB8IER1bW15IF8gfCBTdWJzIF8gLT4gW11cblxubGV0IGhhc19jcmVhdGlvbl9vZl9zdGVwIHggPSBjcmVhdGlvbl9vZl9zdGVwIHggPD4gW11cblxubGV0IHRlc3RzX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiBbXVxuICB8IFJ1bGUgKF8sIGUsIF8pIHwgUGVydCAoXywgZSwgXykgLT5cbiAgICBMaXN0LmZvbGRfcmlnaHQgTGlzdC5hcHBlbmQgZS5JbnN0YW50aWF0aW9uLnRlc3RzXG4gICAgICBlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzXG4gIHwgSW5pdCBfIC0+IFtdXG4gIHwgT2JzIChfLCB4LCBfKSAtPiBMaXN0LmNvbmNhdCB4XG4gIHwgRHVtbXkgXyAtPiBbXVxuXG5sZXQgYWN0aW9uc19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBTdWJzIF8gLT4gW10sIFtdXG4gIHwgUnVsZSAoXywgZSwgXykgfCBQZXJ0IChfLCBlLCBfKSAtPlxuICAgIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zLCBlLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuICB8IEluaXQgeSAtPiB5LCBbXVxuICB8IE9icyAoXywgXywgXykgLT4gW10sIFtdXG4gIHwgRHVtbXkgXyAtPiBbXSwgW11cblxubGV0IHNpZGVfZWZmZWN0c19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBSdWxlIChfLCBlLCBfKSB8IFBlcnQgKF8sIGUsIF8pIC0+IGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gIHwgU3VicyBfIHwgT2JzIF8gfCBEdW1teSBfIHwgSW5pdCBfIC0+IFtdXG5cbmxldCBpbml0X3RyYWNlX2ZpbGUgfnV1aWQgZW52IGRlc2MgPVxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJ7XFxuXFxcInV1aWRcXFwiIDogXFxcIlwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyAoc3RyaW5nX29mX2ludCB1dWlkKSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJcXFwiLFxcblxcXCJkaWN0XFxcIjp7XCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIEFnZW50Lmpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiLFwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBJbnN0YW50aWF0aW9uLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiLFwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBTaW11bGF0aW9uX2luZm8uanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIGpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwifSxcXG5cXFwibW9kZWxcXFwiOlwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy50b19jaGFubmVsIGRlc2MgKE1vZGVsLnRvX3lvanNvbiBlbnYpIGluXG4gIG91dHB1dF9zdHJpbmcgZGVzYyBcIixcXG5cXFwidHJhY2VcXFwiOltcIlxuXG5sZXQgYXNzZXJ0X2ZpZWxkIGlkZW50IHggPVxuICBpZiBpZGVudCA8PiB4IHRoZW5cbiAgICBZb2pzb24uanNvbl9lcnJvclxuICAgICAgKFwidHJhY2UgbGFja3MgdGhlIGZpZWxkIFxcXCJcIiBeIHggXiBcIlxcXCIgKGF0IHRoZSByaWdodCBwbGFjZSlcIilcblxubGV0IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCBpZGVudCA9XG4gICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZlxuICBpblxuICBsZXQgaWRlbnQnLCB1dWlkID1cbiAgICBpZiBpZGVudCA9IFwidXVpZFwiIHRoZW4gKFxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29sb24gbGV4X3N0IGxleF9idWYgaW5cbiAgICAgIGxldCB1dWlkID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgbGV4X3N0IGxleF9idWZcbiAgICAgIGluXG4gICAgICBsZXQgdXVpZCA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHV1aWQpIHdpdGggXyAtPiBOb25lIGluXG4gICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiwgdXVpZFxuICAgICkgZWxzZVxuICAgICAgaWRlbnQsIE5vbmVcbiAgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50JyBcImRpY3RcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5za2lwX2pzb24gbGV4X3N0IGxleF9idWYgaW5cbiAgdXVpZFxuXG5sZXQgZm9sZF90cmFjZSBmIGluaXQgbGV4X3N0IGxleF9idWYgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sY3VybCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgXyA9IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJtb2RlbFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLm9mX3lvanNvblxuICAgICAgKEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBsZXhfc3QgbGV4X2J1ZilcbiAgaW5cbiAgbGV0IGlkZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaWRlbnQgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50IFwidHJhY2VcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgb3V0ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzXG4gICAgICAoWW9qc29uLkJhc2ljLnJlYWRfc2VxdWVuY2VcbiAgICAgICAgIChmdW4gYWNjIHggeSAtPiBmIGVudiBhY2MgKHJlYWRfc3RlcCB4IHkpKVxuICAgICAgICAgKGluaXQgZW52KSlcbiAgICAgIGxleF9zdCBsZXhfYnVmXG4gIGluXG4gIGxldCAoKSA9XG4gICAgdHJ5IFlvanNvbi5CYXNpYy5yZWFkX29iamVjdF9lbmQgbGV4X2J1ZiB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+ICgpXG4gIGluXG4gIGVudiwgb3V0XG5cbmxldCBmb2xkX3RyYWNlX2ZpbGUgZiBpbml0IGZuYW1lID1cbiAgbGV0IGRlc2MgPSBvcGVuX2luIGZuYW1lIGluXG4gIGxldCBsZXhfYnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkZXNjIGluXG4gIGxldCBsZXhfc3QgPSBZb2pzb24uaW5pdF9sZXhlciB+Zm5hbWUgKCkgaW5cbiAgbGV0IG91dCA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgKGZvbGRfdHJhY2UgZiBpbml0KSBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBjbG9zZV9pbiBkZXNjIGluXG4gIG91dFxuXG5sZXQgZ2V0X2hlYWRlcnNfZnJvbV9maWxlIGZuYW1lID1cbiAgbGV0IGRlc2MgPSBvcGVuX2luIGZuYW1lIGluXG4gIGxldCBsZXhfYnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkZXNjIGluXG4gIGxldCBsZXhfc3QgPSBZb2pzb24uaW5pdF9sZXhlciB+Zm5hbWUgKCkgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGN1cmwgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IHV1aWQgPSByZWFkX3RyYWNlX2hlYWRlcnMgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IGlkZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaWRlbnQgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50IFwibW9kZWxcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgZW52ID1cbiAgICBNb2RlbC5vZl95b2pzb25cbiAgICAgIChKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2pzb24gbGV4X3N0IGxleF9idWYpXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX2luIGRlc2MgaW5cbiAgdXVpZCwgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRWZmaWNpZW5jeSA6IHNpZ1xuICB0eXBlIHQgPSB7XG4gICAgY29uc2VjdXRpdmU6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGNvbnNlY3V0aXZlX2Jsb2NrZWQ6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfYmluYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBub19tb3JlX3VuYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBjbGFzaGluZ19pbnN0YW5jZTogaW50O1xuICAgIG11dGFibGUgdGltZV9jb3JyZWN0aW9uOiBpbnQ7XG4gIH1cblxuICB2YWwgaW5pdCA6IGludCAtPiB0XG4gIHZhbCBuYiA6IHQgLT4gaW50XG4gIHZhbCBuYl9jb25zZWN1dGl2ZSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gaW50XG4gIHZhbCBuYl9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiBpbnRcbiAgdmFsIHByaW50X2RldGFpbCA6IGN1cnJlbnRfZXZlbnQ6aW50IC0+IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCByZXNldF9jb25zZWN1dGl2ZSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gdFxuICB2YWwgcmVzZXRfY29uc2VjdXRpdmVfYmxvY2tlZCA6IHQgLT4gdFxuICB2YWwgaW5jcl9ub19tb3JlX2JpbmFyeSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gdFxuICB2YWwgaW5jcl9ub19tb3JlX3VuYXJ5IDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX2NsYXNoaW5nX2luc3RhbmNlIDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX3RpbWVfY29ycmVjdGlvbiA6IHQgLT4gdFxuICB2YWwgaW5jcl9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiB0XG4gIHZhbCB3cml0ZV90IDogQnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCBzdHJpbmdfb2ZfdCA6ID9sZW46aW50IC0+IHQgLT4gc3RyaW5nXG4gIHZhbCByZWFkX3QgOiBZb2pzb24uU2FmZS5sZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgdmFsIHRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29uc2VjdXRpdmU6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGNvbnNlY3V0aXZlX2Jsb2NrZWQ6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfYmluYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBub19tb3JlX3VuYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBjbGFzaGluZ19pbnN0YW5jZTogaW50O1xuICAgIG11dGFibGUgdGltZV9jb3JyZWN0aW9uOiBpbnQ7XG4gIH1cblxuICBsZXQgaW5pdCBzaXplID1cbiAgICB7XG4gICAgICBjb25zZWN1dGl2ZSA9IEFycmF5Lm1ha2Ugc2l6ZSAwO1xuICAgICAgY29uc2VjdXRpdmVfYmxvY2tlZCA9IDA7XG4gICAgICBub19tb3JlX2JpbmFyeSA9IDA7XG4gICAgICBub19tb3JlX3VuYXJ5ID0gMDtcbiAgICAgIGNsYXNoaW5nX2luc3RhbmNlID0gMDtcbiAgICAgIHRpbWVfY29ycmVjdGlvbiA9IDA7XG4gICAgfVxuXG4gIGxldCBuYiB0ID1cbiAgICB0Lm5vX21vcmVfYmluYXJ5ICsgdC5ub19tb3JlX3VuYXJ5ICsgdC5jbGFzaGluZ19pbnN0YW5jZSArIHQudGltZV9jb3JyZWN0aW9uXG5cbiAgbGV0IG5iX2NvbnNlY3V0aXZlIH5ydWxlX2lkIHQgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKVxuICBsZXQgbmJfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID0gdC5jb25zZWN1dGl2ZV9ibG9ja2VkXG5cbiAgbGV0IHJlc2V0X2NvbnNlY3V0aXZlIH5ydWxlX2lkIHQgPVxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIDAgaW5cbiAgICB0XG5cbiAgbGV0IHJlc2V0X2NvbnNlY3V0aXZlX2Jsb2NrZWQgdCA9XG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZV9ibG9ja2VkIDwtIDAgaW5cbiAgICB0XG5cbiAgbGV0IGluY3JfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgPC0gc3VjYyB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgaW5cbiAgICB0XG5cbiAgbGV0IGluY3Jfbm9fbW9yZV9iaW5hcnkgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5ub19tb3JlX2JpbmFyeSA8LSBzdWNjIHQubm9fbW9yZV9iaW5hcnkgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSA8LSBzdWNjIHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIGluXG4gICAgdFxuXG4gIGxldCBpbmNyX25vX21vcmVfdW5hcnkgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5ub19tb3JlX3VuYXJ5IDwtIHN1Y2MgdC5ub19tb3JlX3VuYXJ5IGluXG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gc3VjYyB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSBpblxuICAgIHRcblxuICBsZXQgaW5jcl9jbGFzaGluZ19pbnN0YW5jZSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNsYXNoaW5nX2luc3RhbmNlIDwtIHN1Y2MgdC5jbGFzaGluZ19pbnN0YW5jZSBpblxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIHN1Y2MgdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgaW5cbiAgICB0XG5cbiAgbGV0IGluY3JfdGltZV9jb3JyZWN0aW9uIHQgPVxuICAgIGxldCAoKSA9IHQudGltZV9jb3JyZWN0aW9uIDwtIHN1Y2MgdC50aW1lX2NvcnJlY3Rpb24gaW5cbiAgICB0XG5cbiAgbGV0IHByaW50X2RldGFpbCB+Y3VycmVudF9ldmVudCBmIHQgPVxuICAgIGxldCBhbGwgPSBmbG9hdF9vZl9pbnQgKG5iIHQpIGluXG4gICAgbGV0IGV2ZW50cyA9IGZsb2F0X29mX2ludCBjdXJyZW50X2V2ZW50IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBmIDAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgYWxsID4gMC4gdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJAWyUuMmYlJSBvZiBldmVudCBsb29wcyB3ZXJlIHByb2R1Y3RpdmUuQCBOdWxsIGV2ZW50IGNhdXNlOkBdQCxcIlxuICAgICAgICAgICgxMDAuICouIGV2ZW50cyAvLiAoYWxsICsuIGV2ZW50cykpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC5ub19tb3JlX3VuYXJ5ID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcdFZhbGlkIGVtYmVkZGluZyBidXQgbm8gbG9uZ2VyIHVuYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5ub19tb3JlX3VuYXJ5IC8uIGFsbClcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiB0Lm5vX21vcmVfYmluYXJ5ID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcdFZhbGlkIGVtYmVkZGluZyBidXQgbm90IGJpbmFyeSB3aGVuIHJlcXVpcmVkOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQubm9fbW9yZV9iaW5hcnkgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQuY2xhc2hpbmdfaW5zdGFuY2UgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcdENsYXNoaW5nIGluc3RhbmNlOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQuY2xhc2hpbmdfaW5zdGFuY2UgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQudGltZV9jb3JyZWN0aW9uID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXHRQZXJ0dXJiYXRpb24gaW50ZXJydXB0aW5nIHRpbWUgYWR2YW5jZTogJS4yZiUlQCxcIlxuICAgICAgICAgICgxMDAuICouIGZsb2F0X29mX2ludCB0LnRpbWVfY29ycmVjdGlvbiAvLiBhbGwpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1cIlxuXG4gIGxldCB0b195b2pzb24gdCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiY29uc2VjdXRpdmVcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2ZfaW50IHQuY29uc2VjdXRpdmU7XG4gICAgICAgIFwiY29uc2VjdXRpdmVfYmxvY2tlZFwiLCBgSW50IHQuY29uc2VjdXRpdmVfYmxvY2tlZDtcbiAgICAgICAgXCJub19tb3JlX2JpbmFyeVwiLCBgSW50IHQubm9fbW9yZV9iaW5hcnk7XG4gICAgICAgIFwibm9fbW9yZV91bmFyeVwiLCBgSW50IHQubm9fbW9yZV91bmFyeTtcbiAgICAgICAgXCJjbGFzaGluZ19pbnN0YW5jZVwiLCBgSW50IHQuY2xhc2hpbmdfaW5zdGFuY2U7XG4gICAgICAgIFwidGltZV9jb3JyZWN0aW9uXCIsIGBJbnQgdC50aW1lX2NvcnJlY3Rpb247XG4gICAgICBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgIHtcbiAgICAgICAgY29uc2VjdXRpdmUgPVxuICAgICAgICAgIChKc29uVXRpbC50b19hcnJheSBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29uc2VjdXRpdmVcIiB4KTtcbiAgICAgICAgY29uc2VjdXRpdmVfYmxvY2tlZCA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29uc2VjdXRpdmVfYmxvY2tlZFwiIHgpO1xuICAgICAgICBub19tb3JlX2JpbmFyeSA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJub19tb3JlX2JpbmFyeVwiIHgpO1xuICAgICAgICBub19tb3JlX3VuYXJ5ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vX21vcmVfdW5hcnlcIiB4KTtcbiAgICAgICAgY2xhc2hpbmdfaW5zdGFuY2UgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludFxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImNsYXNoaW5nX2luc3RhbmNlXCIgeCk7XG4gICAgICAgIHRpbWVfY29ycmVjdGlvbiA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGltZV9jb3JyZWN0aW9uXCIgeCk7XG4gICAgICB9XG4gICAgfCB4IC0+XG4gICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHNpbXVsYXRpb24gZWZmaWNpZW5jeVwiLCB4KSlcblxuICBsZXQgd3JpdGVfdCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9feW9qc29uIGYpXG5cbiAgbGV0IHN0cmluZ19vZl90ID8obGVuID0gMTAyNCkgeCA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICB3cml0ZV90IG9iIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHJlYWRfdCBwIGxiID0gb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG4gIGxldCB0X29mX3N0cmluZyBzID0gcmVhZF90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5lbmRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIHRpbWU6IGZsb2F0O1xuICBtdXRhYmxlIGV2ZW50czogaW50O1xuICBtdXRhYmxlIHN0b3JpZXM6IGludDtcbiAgbXV0YWJsZSBsYXN0X3BvaW50OiBpbnQ7XG4gIG11dGFibGUgc3RhdF9udWxsOiBFZmZpY2llbmN5LnQ7XG4gIGluaXRfdGltZTogZmxvYXQ7XG4gIGluaXRfZXZlbnQ6IGludDtcbiAgbXV0YWJsZSBwbG90X3BlcmlvZDogQ29uZmlndXJhdGlvbi5wZXJpb2Q7XG4gIG11dGFibGUgbWF4X3RpbWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBtYXhfZXZlbnQ6IGludCBvcHRpb247XG59XG5cbmxldCBjdXJyZW50X3N0b3J5IGMgPSBjLnN0b3JpZXNcbmxldCBjdXJyZW50X3RpbWUgYyA9IGMudGltZVxubGV0IGN1cnJlbnRfZXZlbnQgYyA9IGMuZXZlbnRzXG5sZXQgbmJfbnVsbF9ldmVudCBjID0gRWZmaWNpZW5jeS5uYiBjLnN0YXRfbnVsbFxuXG5sZXQgY29uc2VjdXRpdmVfbnVsbF9ldmVudCB+cnVsZV9pZCBjID1cbiAgRWZmaWNpZW5jeS5uYl9jb25zZWN1dGl2ZSB+cnVsZV9pZCBjLnN0YXRfbnVsbFxuXG5sZXQgY29uc2VjdXRpdmVfYmxvY2tlZCBjID0gRWZmaWNpZW5jeS5uYl9jb25zZWN1dGl2ZV9ibG9ja2VkIGMuc3RhdF9udWxsXG5sZXQgaW5jX3N0b3JpZXMgYyA9IGMuc3RvcmllcyA8LSBjLnN0b3JpZXMgKyAxXG5sZXQgaW5jX2V2ZW50cyBjID0gYy5ldmVudHMgPC0gYy5ldmVudHMgKyAxXG5cbmxldCBjaGVja190aW1lIGMgPVxuICBtYXRjaCBjLm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBjLnRpbWUgPD0gbWF4XG5cbmxldCBjaGVja19vdXRwdXRfdGltZSBjIG90ID1cbiAgbWF0Y2ggYy5tYXhfdGltZSB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBtYXggLT4gb3QgPD0gbWF4XG5cbmxldCBjaGVja19ldmVudHMgYyA9XG4gIG1hdGNoIGMubWF4X2V2ZW50IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBjLmV2ZW50cyA8IG1heFxuXG5sZXQgb25lX3RpbWVfYWR2YW5jZSBjIGR0ID1cbiAgbGV0ICgpID0gYy50aW1lIDwtIGMudGltZSArLiBkdCBpblxuICBjaGVja190aW1lIGNcblxubGV0IG9uZV9jb25zdHJ1Y3RpdmVfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kucmVzZXRfY29uc2VjdXRpdmUgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5yZXNldF9jb25zZWN1dGl2ZV9ibG9ja2VkIGMuc3RhdF9udWxsIGluXG4gIGxldCAoKSA9IGluY19ldmVudHMgYyBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX25vX21vcmVfYmluYXJ5IH5ydWxlX2lkIGMuc3RhdF9udWxsIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX25vX21vcmVfdW5hcnlfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl9ub19tb3JlX3VuYXJ5IH5ydWxlX2lkIGMuc3RhdF9udWxsIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50IH5ydWxlX2lkIGMgPVxuICBsZXQgKCkgPVxuICAgIGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl9jbGFzaGluZ19pbnN0YW5jZSB+cnVsZV9pZCBjLnN0YXRfbnVsbFxuICBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgP3RpIGMgPVxuICBtYXRjaCBPcHRpb25fdXRpbC5iaW5kIE5ici50b19mbG9hdCB0aSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgdGkgLT5cbiAgICBsZXQgKCkgPSBjLnRpbWUgPC0gdGkgaW5cbiAgICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3JfdGltZV9jb3JyZWN0aW9uIGMuc3RhdF9udWxsIGluXG4gICAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfYmxvY2tlZF9ldmVudCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBnZXRfZWZmaWNpZW5jeSBjID0gYy5zdGF0X251bGxcblxubGV0IHByaW50X2VmZmljaWVuY3kgZiBjID1cbiAgRWZmaWNpZW5jeS5wcmludF9kZXRhaWwgfmN1cnJlbnRfZXZlbnQ6KGN1cnJlbnRfZXZlbnQgYykgZiBjLnN0YXRfbnVsbFxuXG5sZXQgaW5pdF90aW1lIGMgPSBjLmluaXRfdGltZVxubGV0IG1heF90aW1lIGMgPSBjLm1heF90aW1lXG5sZXQgbWF4X2V2ZW50cyBjID0gYy5tYXhfZXZlbnRcbmxldCBwbG90X3BlcmlvZCBjID0gYy5wbG90X3BlcmlvZFxuXG5sZXQgdGltZV9yYXRpbyB0ID1cbiAgbWF0Y2ggdC5tYXhfdGltZSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB0bWF4IC0+XG4gICAgaWYgdG1heCA+IHQuaW5pdF90aW1lIHRoZW5cbiAgICAgIFNvbWUgKCh0LnRpbWUgLS4gdC5pbml0X3RpbWUpIC8uICh0bWF4IC0uIHQuaW5pdF90aW1lKSlcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmxldCBldmVudF9yYXRpbyB0ID1cbiAgbWF0Y2ggdC5tYXhfZXZlbnQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZW1heCAtPlxuICAgIGlmIGVtYXggPSAwIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lXG4gICAgICAgIChmbG9hdF9vZl9pbnQgKHQuZXZlbnRzIC0gdC5pbml0X2V2ZW50KVxuICAgICAgICAvLiBmbG9hdF9vZl9pbnQgKGVtYXggLSB0LmluaXRfZXZlbnQpKVxuXG5sZXQgc2V0X21heF90aW1lIGMgdCA9IGMubWF4X3RpbWUgPC0gdFxubGV0IHNldF9tYXhfZXZlbnRzIGMgZSA9IGMubWF4X2V2ZW50IDwtIGVcblxubGV0IHRyYWNrZWRfZXZlbnRzIChjb3VudGVyIDogdCkgOiBpbnQgb3B0aW9uID1cbiAgaWYgY291bnRlci5zdG9yaWVzID49IDAgdGhlblxuICAgIFNvbWUgY291bnRlci5zdG9yaWVzXG4gIGVsc2VcbiAgICBOb25lXG5cbmxldCBzZXRfcGxvdF9wZXJpb2QgKHQgOiB0KSBwbG90X3BlcmlvZCA6IHVuaXQgPSB0LnBsb3RfcGVyaW9kIDwtIHBsb3RfcGVyaW9kXG5cbmxldCBjcmVhdGUgPyhpbml0X3QgPSAwLikgPyhpbml0X2UgPSAwKSA/bWF4X3RpbWUgP21heF9ldmVudCB+cGxvdF9wZXJpb2RcbiAgICB+bmJfcnVsZXMgKCkgPVxuICB7XG4gICAgdGltZSA9IGluaXRfdDtcbiAgICBldmVudHMgPSBpbml0X2U7XG4gICAgc3RvcmllcyA9IC0xO1xuICAgIHN0YXRfbnVsbCA9IEVmZmljaWVuY3kuaW5pdCBuYl9ydWxlcztcbiAgICBwbG90X3BlcmlvZDtcbiAgICBpbml0X3RpbWUgPSBpbml0X3Q7XG4gICAgaW5pdF9ldmVudCA9IGluaXRfZTtcbiAgICBtYXhfdGltZTtcbiAgICBtYXhfZXZlbnQ7XG4gICAgbGFzdF9wb2ludCA9IDA7XG4gIH1cblxubGV0IHJlaW5pdGlhbGl6ZSBjb3VudGVyID1cbiAgY291bnRlci50aW1lIDwtIGNvdW50ZXIuaW5pdF90aW1lO1xuICBjb3VudGVyLmV2ZW50cyA8LSBjb3VudGVyLmluaXRfZXZlbnQ7XG4gIGNvdW50ZXIuc3RvcmllcyA8LSAtMTtcbiAgY291bnRlci5sYXN0X3BvaW50IDwtIDA7XG4gIGNvdW50ZXIuc3RhdF9udWxsIDwtXG4gICAgRWZmaWNpZW5jeS5pbml0IChBcnJheS5sZW5ndGggY291bnRlci5zdGF0X251bGwuRWZmaWNpZW5jeS5jb25zZWN1dGl2ZSlcblxubGV0IG5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gYyA9XG4gIHtcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPSBjdXJyZW50X3N0b3J5IGM7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUgPSBjdXJyZW50X3RpbWUgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQgPSBjdXJyZW50X2V2ZW50IGMgKyAxO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5wcm9maWxpbmdfaW5mbyA9ICgpO1xuICB9XG5cbmxldCBjdXJyZW50X3NpbXVsYXRpb25faW5mbyBjID1cbiAge1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGN1cnJlbnRfc3RvcnkgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSA9IGN1cnJlbnRfdGltZSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCA9IGN1cnJlbnRfZXZlbnQgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8ucHJvZmlsaW5nX2luZm8gPSAoKTtcbiAgfVxuXG5sZXQgbmV4dF9zdG9yeSBjID1cbiAgbGV0ICgpID0gaW5jX3N0b3JpZXMgYyBpblxuICBuZXh0X3N0ZXBfc2ltdWxhdGlvbl9pbmZvIGNcblxubGV0IHBvc2l0aXZlX3Bsb3RfcGVyaW9kIGNvdW50ZXIgPVxuICBtYXRjaCBwbG90X3BlcmlvZCBjb3VudGVyIHdpdGhcbiAgfCBDb25maWd1cmF0aW9uLkRFIGUgLT4gZSA+IDBcbiAgfCBDb25maWd1cmF0aW9uLkRUIHQgLT4gdCA+IDAuXG5cbmxldCBuZXh0X3BvaW50IGNvdW50ZXIgZHQgPVxuICBtYXRjaCBjb3VudGVyLnBsb3RfcGVyaW9kIHdpdGhcbiAgfCBDb25maWd1cmF0aW9uLkRUIGRUIC0+XG4gICAgaWYgZFQgPD0gMC4gdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIGludF9vZl9mbG9hdFxuICAgICAgICAoKG1pblxuICAgICAgICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSBpbmZpbml0eSAobWF4X3RpbWUgY291bnRlcikpXG4gICAgICAgICAgICAoZHQgKy4gY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAtLiBjb3VudGVyLmluaXRfdGltZSlcbiAgICAgICAgLy4gZFQpXG4gIHwgQ29uZmlndXJhdGlvbi5ERSBkRSAtPlxuICAgIGlmIGRFIDw9IDAgdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIChjdXJyZW50X2V2ZW50IGNvdW50ZXIgLSBjb3VudGVyLmluaXRfZXZlbnQpIC8gZEVcblxubGV0IHRvX3Bsb3RfcG9pbnRzIGNvdW50ZXIgZHQgPVxuICBsZXQgbmV4dCA9IG5leHRfcG9pbnQgY291bnRlciBkdCBpblxuICBsZXQgbGFzdCA9IGNvdW50ZXIubGFzdF9wb2ludCBpblxuICBsZXQgKCkgPSBjb3VudGVyLmxhc3RfcG9pbnQgPC0gbmV4dCBpblxuICBsZXQgbiA9IG5leHQgLSBsYXN0IGluXG4gIG1hdGNoIGNvdW50ZXIucGxvdF9wZXJpb2Qgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uRFQgZFQgLT5cbiAgICAoIHNuZFxuICAgICAgICAoVG9vbHMucmVjdGlcbiAgICAgICAgICAgKGZ1biAodGltZSwgYWNjKSBfIC0+XG4gICAgICAgICAgICAgKCB0aW1lIC0uIGRULFxuICAgICAgICAgICAgICAgaWYgY2hlY2tfb3V0cHV0X3RpbWUgY291bnRlciB0aW1lIHRoZW5cbiAgICAgICAgICAgICAgICAgdGltZSA6OiBhY2NcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYWNjICkpXG4gICAgICAgICAgIChjb3VudGVyLmluaXRfdGltZSArLiAoZmxvYXRfb2ZfaW50IG5leHQgKi4gZFQpLCBbXSlcbiAgICAgICAgICAgbiksXG4gICAgICBjb3VudGVyIClcbiAgfCBDb25maWd1cmF0aW9uLkRFIF8gLT5cbiAgICBpZiBuID0gMSB0aGVuXG4gICAgICBbIGNvdW50ZXIudGltZSBdLCBjb3VudGVyXG4gICAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgICBbXSwgY291bnRlclxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIChcIkNvdW50ZXIudG9fcGxvdF9wb2ludHM6IGludmFsaWQgaW5jcmVtZW50IFwiIF4gc3RyaW5nX29mX2ludCBuKVxuXG5sZXQgZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdCA9XG4gIGxldCBwb2ludHMsIGNvdW50ZXInID0gdG9fcGxvdF9wb2ludHMgY291bnRlciBkdCBpblxuICBMaXN0Lml0ZXIgKGZ1biB0aW1lIC0+IG91dHB1dHMgY291bnRlcicgdGltZSkgcG9pbnRzXG5cbmxldCBmYWtlX3RpbWUgdCB0aW1lID0geyB0IHdpdGggdGltZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcHJpbnRfaW5pdGlhbF9pbnB1dHMgP3V1aWQgY29uZiBlbnYgaW5wdXRzX2Zvcm0gaW5pdCA9XG4gIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCB1dWlkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdXVpZCAtPiBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALlwiIHV1aWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIiVhQC4lYUAuXCIgQ29uZmlndXJhdGlvbi5wcmludCBjb25mXG4gICAgICAoS2FwcGFfcHJpbnRlci5lbnZfa2FwcGEgfm5vQ291bnRlcnMpXG4gICAgICBlbnZcbiAgaW5cbiAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICBsZXQgY291bnRlcnNfaW5mbyA9IE1vZGVsLmNvdW50ZXJzX2luZm8gZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiQC5AWzx2PiVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChuLCByKSAtPlxuICAgICAgICAgbGV0IF8sIGluc19mcmVzaCA9XG4gICAgICAgICAgIFBhdHRlcm5fY29tcGlsZXIubGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSBzaWdzIChNb2RlbC5kb21haW4gZW52KSByXG4gICAgICAgICBpblxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgaWYgaW5zX2ZyZXNoIDw+IFtdIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OkAgQFslYUBdQCBAWyVhQF1AXVwiXG4gICAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOmZhbHNlIH5zaWdzIH5jb3VudGVyc19pbmZvKVxuICAgICAgICAgICAgICAgICBpbnNfZnJlc2hcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlbiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZiAoKVxuICAgICAgICAgICApXG4gICAgICAgICBpblxuICAgICAgICAgUHAubGlzdCBQcC5zcGFjZVxuICAgICAgICAgICAoZnVuIGYgKG5iLCB0aykgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OkAgQFslYUBdQCAlYUBdXCJcbiAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICAgICAoZnN0IChBbGdfZXhwci5tdWx0IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBuKSBuYikpXG4gICAgICAgICAgICAgICAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgdGspXG4gICAgICAgICAgIGYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucykpXG4gICAgaW5pdFxuXG50eXBlIHNuYXBzaG90ID0ge1xuICBzbmFwc2hvdF9ldmVudDogaW50O1xuICBzbmFwc2hvdF90aW1lOiBmbG9hdDtcbiAgc25hcHNob3RfYWdlbnRzOiAoaW50ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0O1xuICBzbmFwc2hvdF90b2tlbnM6IChzdHJpbmcgKiBOYnIudCkgYXJyYXk7XG59XG5cbmxldCBwcmludF9zbmFwc2hvdCA/dXVpZCBmIHMgPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2Pi8vIFNuYXBzaG90IFtFdmVudDogJWRdQCxcIlxuICAgICAgKCpcIiwgVGltZTogJWZcIiopIHMuc25hcHNob3RfZXZlbnRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJSVkZWY6IFxcXCJUMFxcXCIgXFxcIiVzXFxcIkAsQCwlYUAsJWFAXUAuXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAsXCIgeCkpXG4gICAgdXVpZFxuICAgIChKc29uVXRpbC5zdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgcy5zbmFwc2hvdF90aW1lKVxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoaSwgbWl4KSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDogJWkgLyolaSBhZ2VudHMqLyAlYUBdXCIgaVxuICAgICAgICAgICAoQXJyYXkuZm9sZF9sZWZ0IChmdW4gcyBlIC0+IHMgKyBBcnJheS5sZW5ndGggZSkgMCBtaXgpXG4gICAgICAgICAgIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4KSlcbiAgICBzLnNuYXBzaG90X2FnZW50c1xuICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIF8gZiAobmEsIGVsKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiUlaW5pdDogJWEgJXNcIiBOYnIucHJpbnQgZWwgbmEpKVxuICAgIHMuc25hcHNob3RfdG9rZW5zXG5cbmxldCBwcmludF9kb3Rfc25hcHNob3QgP3V1aWQgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4vLyBTbmFwc2hvdCBbRXZlbnQ6ICVkXUAsXCJcbiAgICAgICgqXCIsIFRpbWU6ICVmXCIqKSBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYWRpZ3JhcGggR3tALCVhQCwlYX1AXUAuXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAsXCIgeCkpXG4gICAgdXVpZFxuICAgIChQcC5saXN0aSBQcC5jdXQgKGZ1biBpIGYgKG5iLCBtaXgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPnN1YmdyYXBoIGNsdXN0ZXIlZHtALFwiIGk7XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgIFwiY291bnRlciVkIFtsYWJlbCA9IFxcXCIlZCBpbnN0YW5jZShzKVxcXCIsIHNoYXBlPW5vbmVdO0AsJWF9QF1cIiBpIG5iXG4gICAgICAgICAgIChVc2VyX2dyYXBoLnByaW50X2RvdF9jYyBpKVxuICAgICAgICAgICBtaXgpKVxuICAgIHMuc25hcHNob3RfYWdlbnRzXG4gICAgKFBwLmFycmF5IFBwLmN1dCAoZnVuIGkgZiAobmEsIGVsKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInRva2VuXyVkIFtsYWJlbCA9IFxcXCIlcyAoJWEpXFxcIiAsIHNoYXBlPW5vbmVdXCIgaSBuYVxuICAgICAgICAgICBOYnIucHJpbnQgZWwpKVxuICAgIHMuc25hcHNob3RfdG9rZW5zXG5cbmxldCB3cml0ZV9zbmFwc2hvdCBvYiBzID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfZXZlbnRcIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iXG4gICAgICBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF90aW1lXCIgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG9iXG4gICAgICBzLnNuYXBzaG90X3RpbWVcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X2FnZW50c1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICBVc2VyX2dyYXBoLndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnQpKVxuICAgICAgb2Igcy5zbmFwc2hvdF9hZ2VudHNcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X3Rva2Vuc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXlcbiAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBOYnIud3JpdGVfdCkpXG4gICAgICBvYiBzLnNuYXBzaG90X3Rva2Vuc1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCByZWFkX3NuYXBzaG90IHAgbGIgPVxuICBsZXQgc25hcHNob3RfZXZlbnQsIHNuYXBzaG90X3RpbWUsIHNuYXBzaG90X2FnZW50cywgc25hcHNob3RfdG9rZW5zID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGUsIHRpLCBhLCB0KSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNuYXBzaG90X2V2ZW50XCIgdGhlblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiLCB0aSwgYSwgdFxuICAgICAgICBlbHNlIGlmIGtleSA9IFwic25hcHNob3RfdGltZVwiIHRoZW5cbiAgICAgICAgICBlLCBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgcCBsYiwgYSwgdFxuICAgICAgICBlbHNlIGlmIGtleSA9IFwic25hcHNob3RfYWdlbnRzXCIgdGhlblxuICAgICAgICAgICggZSxcbiAgICAgICAgICAgIHRpLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucmVhZF9jb25uZWN0ZWRfY29tcG9uZW50KVxuICAgICAgICAgICAgICBwIGxiLFxuICAgICAgICAgICAgdCApXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJzbmFwc2hvdF90b2tlbnNcIikgaW5cbiAgICAgICAgICAoIGUsXG4gICAgICAgICAgICB0aSxcbiAgICAgICAgICAgIGEsXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9hcnJheVxuICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIE5ici5yZWFkX3QpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICApKVxuICAgICAgKC0xLCBuYW4sIFtdLCBbfHxdKSBwIGxiXG4gIGluXG4gIHsgc25hcHNob3RfZXZlbnQ7IHNuYXBzaG90X3RpbWU7IHNuYXBzaG90X2FnZW50czsgc25hcHNob3RfdG9rZW5zIH1cblxubGV0IHN0cmluZ19vZl9zbmFwc2hvdCA9IEpzb25VdGlsLnN0cmluZ19vZl93cml0ZSB3cml0ZV9zbmFwc2hvdFxuXG5sZXQgc25hcHNob3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgZGluX2RhdGEgPSB7XG4gIGRpbl9raW5kOiBQcmltaXRpdmVzLmRpbl9raW5kO1xuICBkaW5fc3RhcnQ6IGZsb2F0O1xuICBkaW5faGl0czogaW50IGFycmF5O1xuICBkaW5fZmx1eHM6IGZsb2F0IGFycmF5IGFycmF5O1xufVxuXG50eXBlIGRpbiA9IHsgZGluX3J1bGVzOiBzdHJpbmcgYXJyYXk7IGRpbl9kYXRhOiBkaW5fZGF0YTsgZGluX2VuZDogZmxvYXQgfVxuXG5sZXQgd3JpdGVfZGluIG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fa2luZFwiIFByaW1pdGl2ZXMud3JpdGVfZGluX2tpbmQgb2JcbiAgICAgIGYuZGluX2RhdGEuZGluX2tpbmRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9zdGFydFwiIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvYlxuICAgICAgZi5kaW5fZGF0YS5kaW5fc3RhcnRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9lbmRcIiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQgb2IgZi5kaW5fZW5kXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fcnVsZXNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcpXG4gICAgICBvYiBmLmRpbl9ydWxlc1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2hpdHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICBvYiBmLmRpbl9kYXRhLmRpbl9oaXRzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fZmx1eHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQpKVxuICAgICAgb2IgZi5kaW5fZGF0YS5kaW5fZmx1eHNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9kaW4gcCBsYiA9XG4gIGxldCBkaW5fa2luZCwgZGluX3N0YXJ0LCBkaW5faGl0cywgZGluX2ZsdXhzLCBkaW5fcnVsZXMsIGRpbl9lbmQgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAoaywgcywgaCwgZiwgciwgZSkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJkaW5fa2luZFwiIHRoZW5cbiAgICAgICAgICBQcmltaXRpdmVzLnJlYWRfZGluX2tpbmQgcCBsYiwgcywgaCwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX3N0YXJ0XCIgdGhlblxuICAgICAgICAgIGssIFlvanNvbi5CYXNpYy5yZWFkX251bWJlciBwIGxiLCBoLCBmLCByLCBlXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5faGl0c1wiIHRoZW5cbiAgICAgICAgICBrLCBzLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX2ZsdXhzXCIgdGhlblxuICAgICAgICAgICggayxcbiAgICAgICAgICAgIHMsXG4gICAgICAgICAgICBoLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXlcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX251bWJlcilcbiAgICAgICAgICAgICAgcCBsYixcbiAgICAgICAgICAgIHIsXG4gICAgICAgICAgICBlIClcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9lbmRcIiB0aGVuXG4gICAgICAgICAgaywgcywgaCwgZiwgciwgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHAgbGJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImRpbl9ydWxlc1wiKSBpblxuICAgICAgICAgIGssIHMsIGgsIGYsIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBlXG4gICAgICAgICkpXG4gICAgICAoUHJpbWl0aXZlcy5BQlNPTFVURSwgbmFuLCBbfHxdLCBbfHxdLCBbfHxdLCBuYW4pXG4gICAgICBwIGxiXG4gIGluXG4gIHtcbiAgICBkaW5fcnVsZXM7XG4gICAgZGluX2VuZDtcbiAgICBkaW5fZGF0YSA9IHsgZGluX2tpbmQ7IGRpbl9zdGFydDsgZGluX2hpdHM7IGRpbl9mbHV4cyB9O1xuICB9XG5cbmxldCBzdHJpbmdfb2ZfZGluID0gSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlIHdyaXRlX2RpblxuXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IHByaW50X2RvdF9kaW4gP3V1aWQgZGVzYyBmbHV4ID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQFs8dj4lYVwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiLEAsXCIgeCkpXG4gICAgICB1dWlkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgXCJkaWdyYXBoIEd7IGxhYmVsPVxcXCJEeW5hbWljIGluZmx1ZW5jZSBuZXR3b3JrXFxcIiA7IGxhYmVsbG9jPVxcXCJ0XFxcIiA7IFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIm5vZGUgW3NoYXBlPWJveCxzdHlsZT1maWxsZWQsZmlsbGNvbG9yPWxpZ2h0c2t5Ymx1ZV1ALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAuYXJyYXlcbiAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgIChmdW4gcyAtPlxuICAgICAgICBQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGQgZiB2IC0+XG4gICAgICAgICAgICBpZiB2ID0gMC4gdGhlblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBjb2xvciwgYXJyb3doZWFkID1cbiAgICAgICAgICAgICAgICBpZiB2IDwgMC4gdGhlblxuICAgICAgICAgICAgICAgICAgXCJyZWQzXCIsIFwidGVlXCJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBcImdyZWVuM1wiLCBcIm5vcm1hbFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICBcIkBbPGg+XFxcIiVzXFxcIiAtPiBcXFwiJXNcXFwiIFxcXG4gICAgICAgICAgICAgICAgIFt3ZWlnaHQ9JWQsbGFiZWw9XFxcIiUuM2ZcXFwiLGNvbG9yPSVzLGFycm93aGVhZD0lc107QF1ALFwiXG4gICAgICAgICAgICAgICAgZmx1eC5kaW5fcnVsZXMuKHMpIGZsdXguZGluX3J1bGVzLihkKVxuICAgICAgICAgICAgICAgIChhYnMgKGludF9vZl9mbG9hdCB2KSlcbiAgICAgICAgICAgICAgICB2IGNvbG9yIGFycm93aGVhZFxuICAgICAgICAgICAgKSkpXG4gICAgICBkZXNjIGZsdXguZGluX2RhdGEuZGluX2ZsdXhzXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJ9QF1ALlwiXG5cbmxldCBwcmludF9odG1sX2RpbiBkZXNjIGZsdXggPVxuICBQcF9odG1sLmdyYXBoX3BhZ2VcbiAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiRHluYW1pYyBpbmZsdWVuY2UgbWFwXCIpXG4gICAgfnN1YnRpdGxlOihmdW4gZiAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgIFwiYmV0d2VlbiB0ID0gPHNwYW4gaWQ9XFxcImJlZ2luX3RpbWVcXFwiPjwvc3Bhbj5zIGFuZCB0ID0gPHNwYW4gXFxcbiAgICAgICAgIGlkPVxcXCJlbmRfdGltZVxcXCI+PC9zcGFuPnMgKDxzcGFuIGlkPVxcXCJuYl9ldmVudHNcXFwiPjwvc3Bhbj4gZXZlbnRzKVwiKVxuICAgIFtcbiAgICAgIFwiaHR0cDovL2QzanMub3JnL2QzLnY0Lm1pbi5qc1wiO1xuICAgICAgXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy4zLjEubWluLmpzXCI7XG4gICAgXVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCwuY2hvcmQgcGF0aCB7QCBmaWxsLW9wYWNpdHk6IC42NztAIFwiXG4gICAgICBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInN0cm9rZTogIzAwMDtAIHN0cm9rZS13aWR0aDogLjVweDtAIH1AXUAsPC9zdHlsZT5cIilcbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGl2IGlkPVxcXCJmbHV4X2NvbnRhaW5lclxcXCI+PC9kaXY+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGZvcm0+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxhYmVsIGZvcj1cXFwiY29ycmVjdGlvblxcXCI+Q29ycmVjdGlvbjwvbGFiZWw+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxzZWxlY3QgaWQ9XFxcInNlbGVjdF9jb3JyZWN0aW9uXFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIiBcXFxuICAgICAgICAgICBpZD1cXFwiY29ycmVjdGlvblxcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8b3B0aW9uIHZhbHVlPVxcXCJub25lXFxcIj5Ob25lPC9vcHRpb24+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxvcHRpb24gdmFsdWU9XFxcImhpdHNcXFwiPlJ1bGUgb2NjdXJlbmNlczwvb3B0aW9uPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8b3B0aW9uIHZhbHVlPVxcXCJ0aW1lXFxcIj5UaW1lPC9vcHRpb24+QF1ALDwvc2VsZWN0PkAsPC9kaXY+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxpbnB1dCBpZD1cXFwidG9nZ2xlX3NlbGVjdGVkX3J1bGVzXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiIHZhbHVlPVxcXCJUb2dnbGUgXFxcbiAgICAgICAgICAgc2VsZWN0ZWQgcnVsZXNcXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxsYWJlbCBjbGFzcz1cXFwiY2hlY2tib3gtaW5saW5lXFxcIj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8aW5wdXQgaWQ9XFxcImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlXFxcIiB0eXBlPVxcXCJjaGVja2JveFxcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJSdWxlcyBzZWxmIGluZmx1ZW5jZUBdQCw8L2xhYmVsPkBdQCw8L2Zvcm0+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8Zm9ybSBpZD1cXFwibWVudVxcXCI+PC9mb3JtPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHNjcmlwdD5ALCVzQCw8L3NjcmlwdD5AXUAsXCJcbiAgICAgICAgICBSZXNvdXJjZV9zdHJpbmdzLmNvbW1vbl9qc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHNjcmlwdD5ALCVzQCw8L3NjcmlwdD5AXUAsXCJcbiAgICAgICAgICBSZXNvdXJjZV9zdHJpbmdzLmZsdXhfanNcbiAgICAgIGluXG5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIkBbPHYgMj48c2NyaXB0PkAsXFxcInVzZSBzdHJpY3RcXFwiQCxAW3ZhciBmbHV4ID1AICVzO0BdQCxcIlxuICAgICAgICAgIChzdHJpbmdfb2ZfZGluIGZsdXgpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInZhciBpZHMgPSB7QFtALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImJlZ2luVGltZUlkXFxcIiA6IFxcXCJiZWdpbl90aW1lXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImVuZFRpbWVJZFxcXCIgOiBcXFwiZW5kX3RpbWVcXFwiLEAgXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwic2VsZWN0Q29ycmVjdGlvbklkXFxcIiA6IFxcXCJzZWxlY3RfY29ycmVjdGlvblxcXCIsQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwibmJFdmVudHNJZFxcXCIgOiBcXFwibmJfZXZlbnRzXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInJ1bGVzQ2hlY2tib3hlc0lkXFxcIiA6IFxcXCJtZW51XFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInRvZ2dsZVJ1bGVzSWRcXFwiIDogXFxcInRvZ2dsZV9zZWxlY3RlZF9ydWxlc1xcXCIsQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcXCJjaGVja2JveFNlbGZJbmZsdWVuY2VJZFxcXCIgOiBcXFwiY2hlY2tib3hfc2VsZl9pbmZsdWVuY2VcXFwifTtAXUAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwid2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7IEBbQCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInZhciBmbHV4X21hcCA9IG5ldyBmbHV4TWFwKGlkcyk7QCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcImZsdXhfbWFwLnNldEZsdXgoZmx1eCk7IH07IEBdQCxcIiBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBdQCw8L3NjcmlwdD5cIilcbiAgICBkZXNjXG5cbnR5cGUgcGxvdCA9IHsgcGxvdF9sZWdlbmQ6IHN0cmluZyBhcnJheTsgcGxvdF9zZXJpZXM6IGZsb2F0IG9wdGlvbiBhcnJheSBsaXN0IH1cblxubGV0IGFkZF9wbG90X2xpbmUgbmV3X29ic2VydmFibGVzIHBsb3QgPVxuICBsZXQgbmV3X3ZhbHVlcyA9IEFycmF5Lm1hcCAoZnVuIG5iciAtPiBOYnIudG9fZmxvYXQgbmJyKSBuZXdfb2JzZXJ2YWJsZXMgaW5cbiAge1xuICAgIHBsb3RfbGVnZW5kID0gcGxvdC5wbG90X2xlZ2VuZDtcbiAgICBwbG90X3NlcmllcyA9IG5ld192YWx1ZXMgOjogcGxvdC5wbG90X3NlcmllcztcbiAgfVxuXG5sZXQgaW5pdF9wbG90IGVudiA9XG4gIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cbiAgbGV0IHBsb3RfbGVnZW5kID1cbiAgICBNb2RlbC5tYXBfb2JzZXJ2YWJsZXNcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KSBvKVxuICAgICAgZW52XG4gIGluXG4gIHsgcGxvdF9sZWdlbmQ7IHBsb3Rfc2VyaWVzID0gW10gfVxuXG5sZXQgd3JpdGVfcGxvdCBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibGVnZW5kXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nKVxuICAgICAgb2IgZi5wbG90X2xlZ2VuZFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2VyaWVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgKEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQpKSlcbiAgICAgIG9iIGYucGxvdF9zZXJpZXNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9wbG90IHAgbGIgPVxuICBsZXQgcGxvdF9sZWdlbmQsIHBsb3Rfc2VyaWVzID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGwsIHMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2VyaWVzXCIgdGhlblxuICAgICAgICAgICggbCxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5XG4gICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX29wdGlvbiBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIpKVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImxlZ2VuZFwiKSBpblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgICkpXG4gICAgICAoW3x8XSwgW10pIHAgbGJcbiAgaW5cbiAgeyBwbG90X2xlZ2VuZDsgcGxvdF9zZXJpZXMgfVxuXG5sZXQgc3RyaW5nX29mX3Bsb3QgPSBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGUgd3JpdGVfcGxvdFxuXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgcHJpbnRfcGxvdF9zZXAgaXNfdHN2IGYgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgaXNfdHN2IHRoZW5cbiAgICAgICBcIlxcdFwiXG4gICAgIGVsc2VcbiAgICAgICBcIixcIilcblxubGV0IHByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YgZiBhID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWFAXUAuXCJcbiAgICAoUHAuYXJyYXkgKHByaW50X3Bsb3Rfc2VwIGlzX3RzdikgKGZ1biBfIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHgpKVxuICAgIGFcblxubGV0IHByaW50X3Bsb3RfbGluZSB+aXNfdHN2IHBwIGYgbCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhQF1ALlwiXG4gICAgKFBwLmFycmF5IChwcmludF9wbG90X3NlcCBpc190c3YpIChmdW4gXyAtPiBwcCkpXG4gICAgbFxuXG5sZXQgZXhwb3J0X3Bsb3QgfmlzX3RzdiBwbG90ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWElYVwiXG4gICAgKHByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YpXG4gICAgcGxvdC5wbG90X2xlZ2VuZFxuICAgIChQcC5saXN0IFBwLmVtcHR5XG4gICAgICAgKHByaW50X3Bsb3RfbGluZSB+aXNfdHN2IChQcC5vcHRpb24gKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZVwiKSkpKVxuICAgIChMaXN0LnJldiBwbG90LnBsb3Rfc2VyaWVzKVxuXG5sZXQgcHJpbnRfd2FybmluZyA/cG9zIGYgbXNnID1cbiAgbGV0IHByIGYgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiV2FybmluZzogQFsldEBdXCIgbXNnIGluXG4gIG1hdGNoIHBvcyB3aXRoXG4gIHwgU29tZSBwb3MgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXUAuXCIgKExvYy5wcmludF9hbm5vdGVkIHByKSAoKCksIHBvcylcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1ALlwiIHByICgpXG5cbnR5cGUgZmlsZV9saW5lID0geyBmaWxlX2xpbmVfbmFtZTogc3RyaW5nIG9wdGlvbjsgZmlsZV9saW5lX3RleHQ6IHN0cmluZyB9XG5cbnR5cGUgdCA9XG4gIHwgRElOIG9mIHN0cmluZyAqIGRpblxuICB8IERlbHRhQWN0aXZpdGllcyBvZiBpbnQgKiAoaW50ICogKGZsb2F0ICogZmxvYXQpKSBsaXN0XG4gIHwgUGxvdCBvZiBOYnIudCBhcnJheSAgKCoqIE11c3QgaGF2ZSBsZW5ndGggPj0gMSAoYXQgbGVhc3QgW1RdIG9yIFtFXSkgKilcbiAgfCBQcmludCBvZiBmaWxlX2xpbmVcbiAgfCBUcmFjZVN0ZXAgb2YgVHJhY2Uuc3RlcFxuICB8IFNuYXBzaG90IG9mIHN0cmluZyAqIHNuYXBzaG90XG4gIHwgTG9nIG9mIHN0cmluZ1xuICB8IFNwZWNpZXMgb2Ygc3RyaW5nICogZmxvYXQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcbiAgfCBXYXJuaW5nIG9mIExvYy50IG9wdGlvbiAqIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY3JlYXRlX2ZsdXggZW52IGNvdW50ZXIgZGluX2tpbmQgPVxuICBsZXQgc2l6ZSA9IE1vZGVsLm5iX3N5bnRhY3RpY19ydWxlcyBlbnYgKyAxIGluXG4gIHtcbiAgICBEYXRhLmRpbl9raW5kO1xuICAgIERhdGEuZGluX3N0YXJ0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcjtcbiAgICBEYXRhLmRpbl9oaXRzID0gQXJyYXkubWFrZSBzaXplIDA7XG4gICAgRGF0YS5kaW5fZmx1eHMgPSBBcnJheS5tYWtlX21hdHJpeCBzaXplIHNpemUgMC47XG4gIH1cblxubGV0IGluY3JfZmx1eF9mbHV4IG9mX3J1bGUgb25fcnVsZSB2IGZsdXggPVxuICBmbHV4LkRhdGEuZGluX2ZsdXhzLihvZl9ydWxlKS4ob25fcnVsZSkgPC1cbiAgICBmbHV4LkRhdGEuZGluX2ZsdXhzLihvZl9ydWxlKS4ob25fcnVsZSkgKy4gdlxuXG5sZXQgaW5jcl9mbHV4X2hpdCBvZl9ydWxlIGZsdXggPVxuICBmbHV4LkRhdGEuZGluX2hpdHMuKG9mX3J1bGUpIDwtIHN1Y2MgZmx1eC5EYXRhLmRpbl9oaXRzLihvZl9ydWxlKVxuXG5sZXQgc3RvcF9mbHV4IGVudiBjb3VudGVyIGRpbl9kYXRhID1cbiAgbGV0IHNpemUgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52ICsgMSBpblxuICBsZXQgZGluX3J1bGVzID1cbiAgICBBcnJheS5pbml0IHNpemUgKGZ1biB4IC0+XG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYpIHgpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggZGluX2RhdGEuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+ICgpXG4gICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPlxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+XG4gICAgICAgICAgQXJyYXkuaXRlcmkgKGZ1biBqIHggLT5cbiAgICAgICAgICAgICAgZGluX2RhdGEuRGF0YS5kaW5fZmx1eHMuKGkpLihqKSA8LVxuICAgICAgICAgICAgICAgIChpZiBkaW5fZGF0YS5EYXRhLmRpbl9oaXRzLihpKSA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIHggLy4gZmxvYXRfb2ZfaW50IGRpbl9kYXRhLkRhdGEuZGluX2hpdHMuKGkpKSkpXG4gICAgICAgIGRpbl9kYXRhLkRhdGEuZGluX2ZsdXhzXG4gIGluXG4gIHsgRGF0YS5kaW5fcnVsZXM7IERhdGEuZGluX2RhdGE7IERhdGEuZGluX2VuZCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICAoKiBwYXQgLT4gc2V0IG9mIHJvb3RzICopXG4gIG9mX3BhdHRlcm5zOiBJbnRDb2xsZWN0aW9uLnQgUGF0dGVybi5PYnNNYXAudDtcbiAgKCogcGF0IC0+IGNjIC0+IHNldCBvZiByb290cyAqKVxuICBvZl91bmFyeV9wYXR0ZXJuczogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50IFBhdHRlcm4uT2JzTWFwLnQ7XG59XG5cbnR5cGUgbW9kX2Njc19jYWNoZSA9IChpbnQsIHVuaXQpIEhhc2h0YmwudFxuXG5sZXQgZW1wdHkgZW52ID1cbiAge1xuICAgIG9mX3BhdHRlcm5zID1cbiAgICAgIFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT5cbiAgICAgICAgICBJbnRDb2xsZWN0aW9uLmNyZWF0ZSA2NCk7XG4gICAgb2ZfdW5hcnlfcGF0dGVybnMgPVxuICAgICAgUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPiBNb2RzLkludE1hcC5lbXB0eSk7XG4gIH1cblxubGV0IGluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUgcGF0dGVybiBtYXRjaGluZ3MgPVxuICBpZiBJbnRDb2xsZWN0aW9uLmlzX2VtcHR5IChQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybikgdGhlblxuICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuIG1hdGNoaW5nc1xuXG5sZXQgYWRkX2ludHNldF9pbl9pbnRtYXAgaWQgc2V0IG1hcCA9XG4gIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHNldCB0aGVuXG4gICAgTW9kcy5JbnRNYXAucmVtb3ZlIGlkIG1hcFxuICBlbHNlXG4gICAgTW9kcy5JbnRNYXAuYWRkIGlkIHNldCBtYXBcblxuKCogQnJlYWsgYXBhcnQgY29ubmVjdGVkIGNvbXBvbmVudDpcbiAgIFVwZGF0ZSBcInJvb3RzIG9mIHVuYXJ5IHBhdHRlcm5zXCJcbiAgIEVhc3ksIEkgc2hvdWxkIG5vdCBoYXZlIHRvIHJld3JpdGUgdGhpcy5cbiAgIFNob3VsZCBjYWNoZXMgYmUgaGFuZGxlZCBhdCB0aGlzIGxldmVsID8gSSBkbyBudCB0aGluayBzb1xuICAgYW5kIEkgd2lsbCBwcm9iYWJseSBjbGVhbiB0aGlzLlxuKilcbmxldCBicmVha19hcGFydF9jYyBzdGF0ZSBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKG9yaWdpbl9jYywgbmV3X2NjKSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIG1vZF9jb25uIC0+XG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubiBuZXdfY2MgKCkgaW5cbiAgICAgICAgSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uIG9yaWdpbl9jYyAoKVxuICAgIGluXG4gICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgIChmdW4gY2NfaWQgY2NfbWFwIC0+XG4gICAgICAgIGxldCBvc2V0ID1cbiAgICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgb3JpZ2luX2NjIGNjX21hcFxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgKE1vZHMuSW50U2V0LmlzX2VtcHR5IG9zZXQpIHRoZW4gKFxuICAgICAgICAgIGxldCBuc2V0LCBvc2V0JyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5wYXJ0aXRpb25cbiAgICAgICAgICAgICAgKGZ1biB4IC0+IEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHggZWRnZXMgPSBTb21lIG5ld19jYylcbiAgICAgICAgICAgICAgb3NldFxuICAgICAgICAgIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIGNjX2lkXG4gICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgbmV3X2NjIG5zZXRcbiAgICAgICAgICAgICAgIChhZGRfaW50c2V0X2luX2ludG1hcCBvcmlnaW5fY2Mgb3NldCcgY2NfbWFwKSlcbiAgICAgICAgKSlcbiAgICAgIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIFNhbWU6IG5vdCB2ZXJ5IHN1YnRsZS4gWW91IGp1c3QgcHJvcGFnYXRlLiAqKVxubGV0IG1lcmdlX2NjIHN0YXRlID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoY2MxLCBjYzIpIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgbW9kX2Nvbm5lY3Rpdml0eSAtPlxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjYzIgKCkgaW5cbiAgICAgICAgSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2MxICgpXG4gICAgaW5cbiAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgKGZ1biBjY19pZCBjY19tYXAgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAucG9wIGNjMiBjY19tYXAgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gKClcbiAgICAgICAgfCBTb21lIHNldDIsIGNjX21hcCcgLT5cbiAgICAgICAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYzEgY2NfbWFwIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIGNjX2lkXG4gICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgY2MxIChNb2RzLkludFNldC51bmlvbiBzZXQxIHNldDIpIGNjX21hcCcpKVxuICAgICAgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnNcblxuKCogTW9zdCBvZiB0aGUgY29kZSBpcyB0byBkZWFsIHdpdGggdW5hcnlfaW5zdGFuY2VzLlxuICAgRG9lcyBub3RoaW5nIGZhbmN5LlxuICAgQWxzbyB0YWtlcyB0aGUgY2FjaGUgYXMgYW4gYXJndW1lbnQgKilcbmxldCB1cGRhdGVfcm9vdHMgc3RhdGUgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm4gcm9vdCA9XG4gIGxldCB2YSA9IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuIGluXG4gIGxldCAoKSA9XG4gICAgKGlmIGlzX2FkZCB0aGVuXG4gICAgICAgSW50Q29sbGVjdGlvbi5hZGRcbiAgICAgZWxzZVxuICAgICAgIEludENvbGxlY3Rpb24ucmVtb3ZlKVxuICAgICAgcm9vdCB2YVxuICBpblxuICBpZiBQYXR0ZXJuLlNldC5tZW0gcGF0dGVybiB1bmFyeV9jY3MgdGhlbiAoXG4gICAgbGV0IGNjX21hcCA9IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXR0ZXJuIGluXG4gICAgbGV0IGNjX2lkID1cbiAgICAgICgqIFRoZSBvbmx5IGNhc2Ugd2hlcmUgZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgaXMgTm9uZSBpcyB3aGVuXG4gICAgICAgICBbbm90IGlzX2FkZF0gYW5kIFtyb290XSBoYXMganVzdCBiZWVuIGVyYXNlZCEgQnV0LCBqdXN0XG4gICAgICAgICBiZWZvcmUgYmVpbmcgZXJhc2VkLCB3ZSBrbm93IHRoYXQgYW4gYWdlbnQgaXMgaW4gaXRzIG93blxuICAgICAgICAgY29ubmVjdGVkIGNvbXBvbmVudC4uLiAqKVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lIHJvb3QgKEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHJvb3QgZWRnZXMpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjY19pZCAoKSBpblxuICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2NfaWQgY2NfbWFwIGluXG4gICAgbGV0IHNldCcgPVxuICAgICAgKGlmIGlzX2FkZCB0aGVuXG4gICAgICAgICBNb2RzLkludFNldC5hZGRcbiAgICAgICBlbHNlXG4gICAgICAgICBNb2RzLkludFNldC5yZW1vdmUpXG4gICAgICAgIHJvb3Qgc2V0XG4gICAgaW5cbiAgICBsZXQgY2NfbWFwJyA9IGFkZF9pbnRzZXRfaW5faW50bWFwIGNjX2lkIHNldCcgY2NfbWFwIGluXG4gICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdHRlcm4gY2NfbWFwJ1xuICApXG5cbmxldCBudW1iZXIgciBwYXQgPSBJbnRDb2xsZWN0aW9uLnNpemUgKFBhdHRlcm4uT2JzTWFwLmdldCByLm9mX3BhdHRlcm5zIHBhdClcblxubGV0IHByaW50X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHJvb3RzX29mX3BhdHRlcm5zID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKFBhdHRlcm4uT2JzTWFwLnByaW50IFBwLnNwYWNlIChmdW4gcGF0dGVybiBmIHJvb3RzIC0+XG4gICAgICAgICBpZiBJbnRDb2xsZWN0aW9uLnNpemUgcm9vdHMgPiAwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbIyBAWyVhQF0gPT0+QCBAWyVhQF1AXVwiXG4gICAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlKVxuICAgICAgICAgICAgIHBhdHRlcm4gSW50Q29sbGVjdGlvbi5wcmludCByb290cykpXG4gICAgcm9vdHNfb2ZfcGF0dGVybnNcblxubGV0IHByaW50X3VuYXJ5X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHJvb3RzX29mX3BhdHRlcm5zID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdj4lYUBdXCJcbiAgICAoUGF0dGVybi5PYnNNYXAucHJpbnQgUHAuc3BhY2UgKGZ1biBwYXR0ZXJuIGYgcm9vdF9tYXBzIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFsjIEBbJWFAXSA9PT5AIEBbJWFAXUBdXCJcbiAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlKVxuICAgICAgICAgICBwYXR0ZXJuXG4gICAgICAgICAgIChQcC5zZXQgTW9kcy5JbnRNYXAuYmluZGluZ3MgUHAuc3BhY2UgKGZ1biBmIChfY2NfaWQsIHJvb3RzKSAtPlxuICAgICAgICAgICAgICAgIE1vZHMuSW50U2V0LnByaW50IGYgcm9vdHMpKVxuICAgICAgICAgICByb290X21hcHMpKVxuICAgIHJvb3RzX29mX3BhdHRlcm5zXG5cbmxldCBkZWJ1Z19wcmludCBmIHN0YXRlID1cbiAgbGV0IG5vQ291bnRlcnMgPSB0cnVlIGluXG4gIGxldCBkb21haW4gPSBOb25lIGluXG4gIGxldCAoKSA9IHByaW50X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHN0YXRlLm9mX3BhdHRlcm5zIGluXG4gIHByaW50X3VuYXJ5X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIFVzZWZ1bCBzaG9ydGN1dHMgKilcblxubGV0IG9mX3BhdHRlcm4gcGF0X2lkIHN0YXRlID1cbiAgdHJ5IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXRfaWRcbiAgd2l0aCBOb3RfZm91bmQgLT4gSW50Q29sbGVjdGlvbi5jcmVhdGUgMVxuXG5sZXQgb2ZfdW5hcnlfcGF0dGVybiBwYXRfaWQgc3RhdGUgPVxuICB0cnkgUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdF9pZFxuICB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludE1hcC5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICAoKiBGb3IgY291bnRlcmZhY3R1YWwgc2ltdWxhdGlvbiwgdGhlcmUgd291bGQgYmUgdHdvIG9mIHRoZXNlLiAqKVxuICByb290czogUm9vdHMudDtcbn1cblxudHlwZSBtZXNzYWdlID0gdW5pdFxuXG5sZXQgcmVjZWl2ZV9tZXNzYWdlIF8gc3QgPSBzdFxubGV0IGVtcHR5IGVudiA9IHsgcm9vdHMgPSBSb290cy5lbXB0eSBlbnYgfVxuXG5sZXQgaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiBzdGF0ZSBwYXR0ZXJuIG1hdGNoaW5ncyA9XG4gIFJvb3RzLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUucm9vdHMgcGF0dGVybiBtYXRjaGluZ3NcblxubGV0IGJyZWFrX2FwYXJ0X2NjIHN0YXRlIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjcyA9XG4gIFJvb3RzLmJyZWFrX2FwYXJ0X2NjIHN0YXRlLnJvb3RzIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjc1xuXG5sZXQgbWVyZ2VfY2Mgc3RhdGUgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzID1cbiAgUm9vdHMubWVyZ2VfY2Mgc3RhdGUucm9vdHMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzXG5cbmxldCB1cGRhdGVfcm9vdHMgc3RhdGUgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm4gcm9vdCA9XG4gIFJvb3RzLnVwZGF0ZV9yb290cyBzdGF0ZS5yb290cyBpc19hZGQgdW5hcnlfY2NzIGVkZ2VzIG1vZF9jb25uZWN0aXZpdHkgcGF0dGVyblxuICAgIHJvb3RcblxuKCoqIHsyIENoZWNraW5nIGluc3RhbmNlc30gKilcblxubGV0IGlzX3ZhbGlkIHN0YXRlIHBhdCByb290ID1cbiAgSW50Q29sbGVjdGlvbi5tZW0gcm9vdCAoUm9vdHMub2ZfcGF0dGVybiBwYXQgc3RhdGUucm9vdHMpXG5cbigqKiB7MiBDb21wdXRlIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIH0gKilcblxubGV0IG51bWJlcl9vZl9pbnN0YW5jZXMgP3J1bGVfaWQ6XyBzdCBwYXRzID1cbiAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgcGF0dGVybiAtPiBhY2MgKiBSb290cy5udW1iZXIgc3Qucm9vdHMgcGF0dGVybilcbiAgICAxIHBhdHNcblxubGV0IG51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fY2MgP3J1bGVfaWQ6XyBzdCAocGF0MSwgcGF0MikgPVxuICBsZXQgbWFwMSA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MSBzdC5yb290cyBpblxuICBsZXQgbWFwMiA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MiBzdC5yb290cyBpblxuICBmdW4gY2MgLT5cbiAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAxIGluXG4gICAgbGV0IHNldDIgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMiBpblxuICAgIE1vZHMuSW50U2V0LnNpemUgc2V0MSAqIE1vZHMuSW50U2V0LnNpemUgc2V0MlxuXG4oKiB7NiBQaWNrIGluc3RhbmNlcyB9ICopXG5cbmxldCBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjID9ydWxlX2lkOl8gc3QgcmFuZG9tX3N0YXRlIChwYXQxLCBwYXQyKSA9XG4gIGxldCBtYXAxID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQxIHN0LnJvb3RzIGluXG4gIGxldCBtYXAyID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQyIHN0LnJvb3RzIGluXG4gIGZ1biBjYyAtPlxuICAgIGxldCByb290MSA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWUgKC0xKVxuICAgICAgICAoTW9kcy5JbnRTZXQucmFuZG9tIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDEpKVxuICAgIGluXG4gICAgbGV0IHJvb3QyID1cbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoLTEpXG4gICAgICAgIChNb2RzLkludFNldC5yYW5kb20gcmFuZG9tX3N0YXRlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMikpXG4gICAgaW5cbiAgICByb290MSwgcm9vdDJcblxuKCogV2UgcHJvdmlkZSBhIGN1c3RvbSBtb25hZGljIGZvbGQgZnVuY3Rpb24gdG8gYmVcbiAgIGxhenkgaW4gZHJhd2luZyByYW5kb20gbnVtYmVycyAqKVxubGV0IGZvbGRfcGlja2VkX2luc3RhbmNlID9ydWxlX2lkOl8gc3QgcmFuZG9tX3N0YXRlIHBhdHMgfmluaXQgZiA9XG4gIGxldCByZWMgYXV4IGkgYWNjID1cbiAgICBpZiBpID49IEFycmF5Lmxlbmd0aCBwYXRzIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgYWNjIC0+XG4gICAgICAgIGxldCBwYXQgPSBwYXRzLihpKSBpblxuICAgICAgICBsZXQgcm9vdF9vcHQgPVxuICAgICAgICAgIEludENvbGxlY3Rpb24ucmFuZG9tIHJhbmRvbV9zdGF0ZSAoUm9vdHMub2ZfcGF0dGVybiBwYXQgc3Qucm9vdHMpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCByb290X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSByb290IC0+XG4gICAgICAgICAgbGV0IGFjYyA9IGYgaSBwYXQgcm9vdCBhY2MgaW5cbiAgICAgICAgICBhdXggKGkgKyAxKSBhY2MpXG4gICAgKVxuICBpblxuICBhdXggMCAoU29tZSBpbml0KVxuXG4oKiogezYgRW51bWVyYXRlIGluc3RhbmNlc30gKilcblxubGV0IHByb2Nlc3NfZXhjcCA9XG4gIGxldCBub19ub19ubyBfID0gZmFsc2UgaW5cbiAgZnVuIHBhdHMgLT4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9fbm9fbm8sIC0xXG4gICAgfCBTb21lIChwYXQsIHJvb3QpIC0+XG4gICAgICBsZXQgc2VudF90b19maXhlZF9yb290IGogPSBQYXR0ZXJuLmlzX2VxdWFsX2Nhbm9uaWNhbHMgcGF0IHBhdHMuKGopIGluXG4gICAgICBzZW50X3RvX2ZpeGVkX3Jvb3QsIHJvb3RcblxuKCogVGhpcyBpcyB0aGUgbGVnaXRpbWF0ZSBhbmQgZWZmaWNpZW50IHZlcnNpb24uICopXG5sZXQgZm9sZF9pbnN0YW5jZXMgP3J1bGVfaWQ6XyA/ZXhjcCBzdCBwYXRzIH5pbml0IGYgPVxuICBsZXQgc2VudF90b19leGNwX3Jvb3QsIGV4Y3Bfcm9vdCA9IHByb2Nlc3NfZXhjcCBwYXRzIGV4Y3AgaW5cblxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBwYXRzIGluXG4gIGxldCB0YWIgPSBBcnJheS5tYWtlIG4gKC0xKSBpblxuICBsZXQgcmVjIGF1eCBpIGFjYyA9XG4gICAgaWYgaSA+PSBuIHRoZW5cbiAgICAgIGYgdGFiIGFjY1xuICAgIGVsc2UgaWYgc2VudF90b19leGNwX3Jvb3QgaSB0aGVuIChcbiAgICAgIHRhYi4oaSkgPC0gZXhjcF9yb290O1xuICAgICAgYXV4IChpICsgMSkgYWNjXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBpdGhfcm9vdHMgPSBSb290cy5vZl9wYXR0ZXJuIHBhdHMuKGkpIHN0LnJvb3RzIGluXG4gICAgICBJbnRDb2xsZWN0aW9uLmZvbGRcbiAgICAgICAgKGZ1biByIGFjYyAtPlxuICAgICAgICAgIHRhYi4oaSkgPC0gcjtcbiAgICAgICAgICBhdXggKGkgKyAxKSBhY2MpXG4gICAgICAgIGl0aF9yb290cyBhY2NcbiAgICApXG4gIGluXG4gIGF1eCAwIGluaXRcblxubGV0IG1hcF9mb2xkMiBtYXAxIG1hcDIgfmluaXQgZiA9XG4gIE1vZHMuSW50TWFwLm1vbmFkaWNfZm9sZDJfc3BhcnNlICgpICgpXG4gICAgKGZ1biAoKSAoKSBrZXkgeDEgeDIgYWNjIC0+ICgpLCBmIGtleSB4MSB4MiBhY2MpXG4gICAgbWFwMSBtYXAyIGluaXRcbiAgfD4gc25kXG5cbmxldCBmb2xkX3VuYXJ5X2luc3RhbmNlcyA/cnVsZV9pZDpfIHN0IChwYXQxLCBwYXQyKSB+aW5pdCBmID1cbiAgbGV0IG1hcDEgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDEgc3Qucm9vdHMgaW5cbiAgbGV0IG1hcDIgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDIgc3Qucm9vdHMgaW5cbiAgbWFwX2ZvbGQyIG1hcDEgbWFwMiB+aW5pdCAoZnVuIF8gc2V0MSBzZXQyIGFjYyAtPlxuICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAoZnVuIHJvb3QxIGFjYyAtPlxuICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGQgKGZ1biByb290MiBhY2MgLT4gZiAocm9vdDEsIHJvb3QyKSBhY2MpIHNldDIgYWNjKVxuICAgICAgICBzZXQxIGFjYylcblxuKCoqIHs2IERlYnVnIGZ1bmN0aW9uc30gKilcblxubGV0IGRlYnVnX3ByaW50IGYgc3RhdGUgPSBSb290cy5kZWJ1Z19wcmludCBmIHN0YXRlLnJvb3RzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdmFsdWVfc3RhdGVfYWxnX29wIGNvdW50ZXIgPyh0aW1lID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcikgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkNQVVRJTUUgLT4gTmJyLkYgKFN5cy50aW1lICgpKVxuICB8IE9wZXJhdG9yLlRJTUVfVkFSIC0+IE5ici5GIHRpbWVcbiAgfCBPcGVyYXRvci5FVkVOVF9WQVIgLT4gTmJyLkkgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIC0+IE5ici5JIChDb3VudGVyLm5iX251bGxfZXZlbnQgY291bnRlcilcbiAgfCBPcGVyYXRvci5FTUFYX1ZBUiAtPlxuICAgIChtYXRjaCBDb3VudGVyLm1heF9ldmVudHMgY291bnRlciB3aXRoXG4gICAgfCBTb21lIG4gLT4gTmJyLkkgblxuICAgIHwgTm9uZSAtPiBOYnIuRiBpbmZpbml0eSlcbiAgfCBPcGVyYXRvci5UTUFYX1ZBUiAtPlxuICAgIChtYXRjaCBDb3VudGVyLm1heF90aW1lIGNvdW50ZXIgd2l0aFxuICAgIHwgU29tZSB0IC0+IE5ici5GIHRcbiAgICB8IE5vbmUgLT4gTmJyLkYgaW5maW5pdHkpXG5cbnR5cGUgKF8sIF8pIHN0YWNrID1cbiAgfCBSRVRVUk4gOiAoJ2EsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfQUxHIDpcbiAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3AgKiBQcmltaXRpdmVzLmFsZ19leHByICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19DT01QIDpcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3AgKiBQcmltaXRpdmVzLmFsZ19leHByICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0lGIDpcbiAgICAgIFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmFsZ19leHByICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChib29sLCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0JPT0wgOlxuICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BcbiAgICAgICogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sXG4gICAgICAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChib29sLCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0FMRyA6XG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wICogTmJyLnQgKiAoTmJyLnQsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0NPTVAgOlxuICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcCAqIE5ici50ICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX1VOIDogT3BlcmF0b3IudW5fYWxnX29wICogKE5ici50LCAnYSkgc3RhY2sgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0JPT0wgOiBPcGVyYXRvci51bl9ib29sX29wICogKGJvb2wsICdhKSBzdGFjayAtPiAoYm9vbCwgJ2EpIHN0YWNrXG5cbmxldCByZWMgZXhlY19hbGcgOlxuICAgIHR5cGUgYS5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5lIC0+XG4gICAgKE5ici50LCBhKSBzdGFjayAtPlxuICAgIGEgPVxuIGZ1biBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyBzayAtPlxuICBtYXRjaCBhbGcgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0FMRyAob3AsIGIsIHNrKSlcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhIChUT19DT01QVVRFX1VOIChvcCwgc2spKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKHZhbHVlX3N0YXRlX2FsZ19vcCBjb3VudGVyID90aW1lIG9wKVxuICAgICAgc2tcbiAgfCBBbGdfZXhwci5BTEdfVkFSIGkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfYWxnIGkpIHNrXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgY2NzIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfbWl4IGNjcykgc2tcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfdG9rIGkpIHNrXG4gIHwgQWxnX2V4cHIuQ09OU1QgbiAtPiB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgbiBza1xuICB8IEFsZ19leHByLklGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGNvbmRcbiAgICAgIChUT19FWEVDX0lGICh5ZXMsIG5vLCBzaykpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDYW5ub3QgZXZhbHV0YXRlIGRlcml2YXRpdmVzIGluIGV4cHJlc3Npb25cIiwgTG9jLmR1bW15KSlcblxuYW5kIGV4ZWNfYm9vbCA6XG4gICAgdHlwZSBhLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2wgLT5cbiAgICAoYm9vbCwgYSkgc3RhY2sgLT5cbiAgICBhID1cbiBmdW4gY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIHNrIC0+XG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLlRSVUUgLT4gd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIHRydWUgc2tcbiAgfCBBbGdfZXhwci5GQUxTRSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBmYWxzZSBza1xuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0NPTVBVVEVfQk9PTCAob3AsIHNrKSlcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0JPT0wgKG9wLCBiLCBzaykpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0VYRUNfQ09NUCAob3AsIGIsIHNrKSlcblxuYW5kIHdpdGhfdmFsdWUgOlxuICAgIHR5cGUgYSBiLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICBhIC0+XG4gICAgKGEsIGIpIHN0YWNrIC0+XG4gICAgYiA9XG4gZnVuIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgbiAtPiBmdW5jdGlvblxuICB8IFJFVFVSTiAtPiBuXG4gIHwgVE9fRVhFQ19BTEcgKG9wLCBhbGcsIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnXG4gICAgICAoVE9fQ09NUFVURV9BTEcgKG9wLCBuLCBzaykpXG4gIHwgVE9fQ09NUFVURV9BTEcgKG9wLCBuMSwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoTmJyLm9mX2Jpbl9hbGdfb3Agb3AgbjEgbilcbiAgICAgIHNrXG4gIHwgVE9fQ09NUFVURV9VTiAob3AsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoTmJyLm9mX3VuX2FsZ19vcCBvcCBuKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0NPTVAgKG9wLCBhbGcsIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnXG4gICAgICAoVE9fQ09NUFVURV9DT01QIChvcCwgbiwgc2spKVxuICB8IFRPX0NPTVBVVEVfQ09NUCAob3AsIG4xLCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgIChOYnIub2ZfY29tcGFyZV9vcCBvcCBuMSBuKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0lGICh5ZXMsIG5vLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoaWYgbiB0aGVuXG4gICAgICAgICB5ZXNcbiAgICAgICBlbHNlXG4gICAgICAgICBubylcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19CT09MIChPcGVyYXRvci5PUiwgXywgc2spIHdoZW4gbiAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayB0cnVlIHNrXG4gIHwgVE9fRVhFQ19CT09MIChPcGVyYXRvci5BTkQsIF8sIHNrKSB3aGVuIG5vdCBuIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGZhbHNlIHNrXG4gIHwgVE9fRVhFQ19CT09MICgoT3BlcmF0b3IuT1IgfCBPcGVyYXRvci5BTkQpLCBleHByLCBzaykgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIHNrXG4gIHwgVE9fQ09NUFVURV9CT09MIChPcGVyYXRvci5OT1QsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAobm90IG4pIHNrXG5cbmxldCB2YWx1ZV9ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciA9XG4gIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgUkVUVVJOXG5cbmxldCB2YWx1ZV9hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgPVxuICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyBSRVRVUk5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcHJlY29tcHV0ZWQgPSB7XG4gIHVuYXJ5X3BhdHRlcm5zOiBQYXR0ZXJuLlNldC50O1xuICBhbHdheXNfb3V0ZGF0ZWQ6IE9wZXJhdG9yLkRlcFNldC50O1xufVxuXG5tb2R1bGUgTWFrZSAoSW5zdGFuY2VzIDogSW5zdGFuY2VzX3NpZy5TKSA9IHN0cnVjdFxuICB0eXBlIGV2ZW50X3ByZWRpY2F0ZSA9XG4gICAgaW50IG9wdGlvbiAtPlxuICAgIE1hdGNoaW5nLnQgLT5cbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IC0+XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0IC0+XG4gICAgYm9vbFxuXG4gIHR5cGUgaW1wZXJhdGl2ZV9maWVsZHMgPSB7XG4gICAgcHJlY29tcHV0ZWQ6IHByZWNvbXB1dGVkO1xuICAgIGluc3RhbmNlczogSW5zdGFuY2VzLnQ7XG4gICAgdmFyaWFibGVzX2NhY2hlOiBOYnIudCBhcnJheTtcbiAgICB2YXJpYWJsZXNfb3ZlcndyaXRlOiBQcmltaXRpdmVzLmFsZ19leHByIG9wdGlvbiBhcnJheTtcbiAgICB0b2tlbnM6IE5ici50IGFycmF5O1xuICAgIGFjdGl2aXRpZXM6IFJhbmRvbV90cmVlLnRyZWU7XG4gICAgICAgICgqIHBhaXIgbnVtYmVycyBhcmUgcmVndWxhciBydWxlLCBvZGQgdW5hcnkgaW5zdGFuY2VzICopXG4gICAgcmFuZG9tX3N0YXRlOiBSYW5kb20uU3RhdGUudDtcbiAgICBzdG9yeV9tYWNoaW5lcnk6XG4gICAgICAoc3RyaW5nICgqb2JzIG5hbWUqKVxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdClcbiAgICAgIGxpc3RcbiAgICAgIFBhdHRlcm4uT2JzTWFwLnRcbiAgICAgICgqY3VycmVudGx5IHRyYWNrZWQgY2NzICopXG4gICAgICBvcHRpb247XG4gICAgc3BlY2llczpcbiAgICAgIChzdHJpbmcgKCpmaWxlbmFtZSopXG4gICAgICAqIFBhdHRlcm4uaWQgYXJyYXkgKCp3aXRoIG9ubHkgb25lIHBhdHRlcm4qKVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3QpXG4gICAgICBsaXN0XG4gICAgICBQYXR0ZXJuLk9ic01hcC50O1xuICAgIGNoYW5nZWRfY29ubmVjdGl2aXR5OiAoaW50LCB1bml0KSBIYXNodGJsLnQ7XG4gICAgICAgICgqIHNldCBvZiBjY3MgdGhhdCBoYXZlIGNoYW5nZWQgKilcbiAgfVxuXG4gIHR5cGUgaW5zdGFuY2UgPVxuICAgIGJvb2xcbiAgICAqIGludFxuICAgICogKEthcHBhX3Rlcm1zLk1hdGNoaW5nLnQgKiBpbnQgbGlzdCAqIEthcHBhX3NpdGVfZ3JhcGhzLkVkZ2VzLnBhdGggb3B0aW9uKVxuICAgICAgb3B0aW9uXG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgb3V0ZGF0ZWQ6IGJvb2w7XG4gICAgKCogV2l0aG91dCByZWN0YW5ndWxhciBhcHByb3hpbWF0aW9uICopXG4gICAgbWF0Y2hpbmdzX29mX3J1bGU6IChNYXRjaGluZy50ICogaW50IGxpc3QpIGxpc3QgTW9kcy5JbnRNYXAudDtcbiAgICB1bmFyeV9jYW5kaWRhdGVzOlxuICAgICAgKCogcnVsZV9pZCAtPiBsaXN0IG9mIG1hdGNoaW5ncyAqKVxuICAgICAgKE1hdGNoaW5nLnQgKiBpbnQgbGlzdCAqIEVkZ2VzLnBhdGggb3B0aW9uKSBsaXN0IE1vZHMuSW50TWFwLnQ7XG4gICAgKCogcnVsZSAtPiBjYyAtPiBudW1iZXJfaW5zdGFuY2VzIChhY3Rpdml0eSBwZXIgY2MpICopXG4gICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjOiBWYWxNYXAudCBNb2RzLkludE1hcC50O1xuICAgIGVkZ2VzOiBFZGdlcy50O1xuICAgIGltcDogaW1wZXJhdGl2ZV9maWVsZHM7XG4gICAgb3V0ZGF0ZWRfZWxlbWVudHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIGV2ZW50c190b19ibG9jazogZXZlbnRfcHJlZGljYXRlIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBnZXRfZWRnZXMgc3QgPSBzdC5lZGdlc1xuXG4gIGxldCBzdW1faW5zdGFuY2VzX251bWJlcnMgP3J1bGVfaWQgaW5zdHMgbCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWMgeCAtPiBhYyArIEluc3RhbmNlcy5udW1iZXJfb2ZfaW5zdGFuY2VzID9ydWxlX2lkIGluc3RzIHgpXG4gICAgICAwIGxcblxuICB0eXBlIHJlc3VsdCA9IENsYXNoIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCB8IFN1Y2Nlc3Mgb2YgdFxuXG4gIGxldCByYXdfZ2V0X2FsZyBlbnYgb3ZlcndyIGkgPVxuICAgIG1hdGNoIG92ZXJ3ci4oaSkgd2l0aFxuICAgIHwgTm9uZSAtPiBNb2RlbC5nZXRfYWxnIGVudiBpXG4gICAgfCBTb21lIGV4cHIgLT4gZXhwclxuXG4gIGxldCB2YWx1ZV9ib29sIGNvdW50ZXIgc3RhdGUgZXhwciA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgRXhwcl9pbnRlcnByZXRlci52YWx1ZV9ib29sIGNvdW50ZXJcbiAgICAgIH5nZXRfYWxnOihmdW4gaSAtPiBBbGdfZXhwci5DT05TVCBzdGF0ZS5pbXAudmFyaWFibGVzX2NhY2hlLihpKSlcbiAgICAgIH5nZXRfbWl4OihmdW4gcGF0dGVybnMgLT5cbiAgICAgICAgTmJyLkkgKHN1bV9pbnN0YW5jZXNfbnVtYmVycyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHBhdHRlcm5zKSlcbiAgICAgIH5nZXRfdG9rOihmdW4gaSAtPiBzdGF0ZS5pbXAudG9rZW5zLihpKSlcbiAgICAgIGV4cHJcblxuICBsZXQgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgYWxnID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBFeHByX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyXG4gICAgICB+Z2V0X2FsZzooZnVuIGkgLT4gQWxnX2V4cHIuQ09OU1Qgc3RhdGUuaW1wLnZhcmlhYmxlc19jYWNoZS4oaSkpXG4gICAgICB+Z2V0X21peDooZnVuIHBhdHRlcm5zIC0+XG4gICAgICAgIE5ici5JIChzdW1faW5zdGFuY2VzX251bWJlcnMgc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJucykpXG4gICAgICB+Z2V0X3RvazooZnVuIGkgLT4gc3RhdGUuaW1wLnRva2Vucy4oaSkpXG4gICAgICBhbGdcblxuICBsZXQgcmVjb21wdXRlIGVudiBjb3VudGVyIHN0YXRlIGkgPVxuICAgIHN0YXRlLmltcC52YXJpYWJsZXNfY2FjaGUuKGkpIDwtXG4gICAgICB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSAocmF3X2dldF9hbGcgZW52IHN0YXRlLmltcC52YXJpYWJsZXNfb3ZlcndyaXRlIGkpXG5cbiAgbGV0IGFjdGl2aXR5IHN0YXRlID0gUmFuZG9tX3RyZWUudG90YWwgc3RhdGUuaW1wLmFjdGl2aXRpZXNcbiAgbGV0IGdldF9hY3Rpdml0eSBydWxlIHN0YXRlID0gUmFuZG9tX3RyZWUuZmluZCBydWxlIHN0YXRlLmltcC5hY3Rpdml0aWVzXG4gIGxldCBzZXRfYWN0aXZpdHkgcnVsZSB2IHN0YXRlID0gUmFuZG9tX3RyZWUuYWRkIHJ1bGUgdiBzdGF0ZS5pbXAuYWN0aXZpdGllc1xuICBsZXQgcGlja19ydWxlIHJ0IHN0YXRlID0gZnN0IChSYW5kb21fdHJlZS5yYW5kb20gcnQgc3RhdGUuaW1wLmFjdGl2aXRpZXMpXG5cbiAgbGV0IGluaXRpYWxfYWN0aXZpdHkgfm91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgPVxuICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgIChmdW4gaSAoKSBydWxlIC0+XG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgPSAwIHRoZW4gKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBOYnIudG9fZmxvYXQgQEAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgKCBTb21lIChzbmQgcnVsZS5QcmltaXRpdmVzLnJhdGUpLFxuICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9Db3VudGVycyA9IGZhbHNlIGluXG5cbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJQcm9ibGVtYXRpYyBydWxlIHJhdGUgcmVwbGFjZWQgYnkgMFwiO1xuICAgICAgICAgICAgICAgICAgICAgS2FwcGFfcHJpbnRlci5lbGVtZW50YXJ5X3J1bGUgfmVudiB+bm9Db3VudGVycyBmIHJ1bGUgKSlcbiAgICAgICAgICB8IFNvbWUgcmF0ZSAtPiBzZXRfYWN0aXZpdHkgKDIgKiBpKSByYXRlIHN0YXRlXG4gICAgICAgICkpXG4gICAgICAoKSBlbnZcblxuICBsZXQgZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudiBjb3VudGVyID1cbiAgICBsZXQgYWN0aXZpdHlfdHJlZSA9IFJhbmRvbV90cmVlLmNyZWF0ZSAoMiAqIE1vZGVsLm5iX3J1bGVzIGVudikgaW5cbiAgICBsZXQgdW5hcnlfcGF0dGVybnMgPSBNb2RlbC51bmFyeV9wYXR0ZXJucyBlbnYgaW5cbiAgICBsZXQgYWx3YXlzX291dGRhdGVkID1cbiAgICAgIGxldCBkZXBzX2luX3QsIGRlcHNfaW5fZSwgXywgXyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gZGVwc19pbl90IGRlcHNfaW5fZVxuICAgIGluXG4gICAgbGV0IHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgPSBub3QgKFBhdHRlcm4uU2V0LmlzX2VtcHR5IHVuYXJ5X3BhdHRlcm5zKSBpblxuICAgIGxldCB2YXJpYWJsZXNfb3ZlcndyaXRlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfYWxncyBlbnYpIE5vbmUgaW5cbiAgICBsZXQgdmFyaWFibGVzX2NhY2hlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfYWxncyBlbnYpIE5ici56ZXJvIGluXG4gICAgbGV0IGNhbmQgPVxuICAgICAge1xuICAgICAgICBpbXAgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMgPSBhY3Rpdml0eV90cmVlO1xuICAgICAgICAgICAgcHJlY29tcHV0ZWQgPSB7IHVuYXJ5X3BhdHRlcm5zOyBhbHdheXNfb3V0ZGF0ZWQgfTtcbiAgICAgICAgICAgIGluc3RhbmNlcyA9IEluc3RhbmNlcy5lbXB0eSBlbnY7XG4gICAgICAgICAgICB2YXJpYWJsZXNfb3ZlcndyaXRlO1xuICAgICAgICAgICAgdmFyaWFibGVzX2NhY2hlO1xuICAgICAgICAgICAgdG9rZW5zID0gQXJyYXkubWFrZSAoTW9kZWwubmJfdG9rZW5zIGVudikgTmJyLnplcm87XG4gICAgICAgICAgICByYW5kb21fc3RhdGU7XG4gICAgICAgICAgICBzdG9yeV9tYWNoaW5lcnkgPVxuICAgICAgICAgICAgICAoaWYgd2l0aF90cmFjZSB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWUgKFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT4gW10pKVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICAgIHNwZWNpZXMgPSBQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+IFtdKTtcbiAgICAgICAgICAgIGNoYW5nZWRfY29ubmVjdGl2aXR5ID0gSGFzaHRibC5jcmVhdGUgMzI7XG4gICAgICAgICAgfTtcbiAgICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgZWRnZXMgPSBFZGdlcy5lbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSBhbHdheXNfb3V0ZGF0ZWQ7XG4gICAgICAgIGV2ZW50c190b19ibG9jayA9IE5vbmU7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBUb29scy5pdGVyaSAocmVjb21wdXRlIGVudiBjb3VudGVyIGNhbmQpIChNb2RlbC5uYl9hbGdzIGVudikgaW5cbiAgICBsZXQgKCkgPSBpbml0aWFsX2FjdGl2aXR5IH5vdXRwdXRzIGVudiBjb3VudGVyIGNhbmQgaW5cbiAgICBjYW5kXG5cbiAgbGV0IGNvbmNyZXRlX2FjdGlvbnNfZm9yX2luY29tcGxldGVfaW5qIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgPVxuICAgIGxldCBhYnN0cmFjdF9hY3Rpb25zID1cbiAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBpbmogPSBtYXRjaGluZywgTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgICAgKEluc3RhbnRpYXRpb24udHJ5X2NvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluailcbiAgICAgIGFic3RyYWN0X2FjdGlvbnNcblxuICBsZXQgY29uY3JldGVfdGVzdHMgfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyA9XG4gICAgbGV0IGFic3RyYWN0X3Rlc3RzID1cbiAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnRlc3RzIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBsZXQgaW5qID0gbWF0Y2hpbmcsIE1vZHMuSW50TWFwLmVtcHR5IGluXG4gICAgTGlzdC5tYXAgKEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluaikgYWJzdHJhY3RfdGVzdHNcblxuICBsZXQgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSA/cnVsZV9pZCBydWxlIG1hdGNoaW5nID1cbiAgICBtYXRjaCBzdGF0ZS5ldmVudHNfdG9fYmxvY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSB0b19ibG9jayAtPlxuICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICBjb25jcmV0ZV9hY3Rpb25zX2Zvcl9pbmNvbXBsZXRlX2luaiB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nXG4gICAgICBpblxuICAgICAgbGV0IHRlc3RzID0gY29uY3JldGVfdGVzdHMgfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyBpblxuICAgICAgdG9fYmxvY2sgcnVsZV9pZCBtYXRjaGluZyB0ZXN0cyBhY3Rpb25zXG5cbiAgbGV0IHNldF9ldmVudHNfdG9fYmxvY2sgcHJlZGljYXRlIHN0YXRlID1cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBwcmVkaWNhdGU7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIH1cblxuICBsZXQgaW5zdGFuY2VfdG9fbWF0Y2hpbmcgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluc3RhbmNlIHBhdHRlcm5zID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWF0Y2hpbmcgcm9vdCAtPlxuICAgICAgICBtYXRjaCBtYXRjaGluZyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBtYXRjaGluZyAtPlxuICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBtYXRjaGluZyBpIHBhdHRlcm5zLihpKVxuICAgICAgICAgICAgcm9vdClcbiAgICAgIChTb21lIE1hdGNoaW5nLmVtcHR5KSBpbnN0YW5jZVxuXG4gIGxldCBhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSA/ZXhjcCA/dW5hcnlfcmF0ZSA/cnVsZV9pZCBzdGF0ZV9pbnN0cyBkb21haW5cbiAgICAgIGVkZ2VzIHBhdHRlcm5hID1cbiAgICBsZXQgb3V0ID1cbiAgICAgIEluc3RhbmNlcy5mb2xkX2luc3RhbmNlcyA/ZXhjcCA/cnVsZV9pZCBzdGF0ZV9pbnN0cyBwYXR0ZXJuYSB+aW5pdDpbXVxuICAgICAgICAoZnVuIGluc3RhbmNlIGFjYyAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBpbnN0YW5jZV90b19tYXRjaGluZyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5zdGFuY2UgcGF0dGVybmFcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgIHwgU29tZSBtYXRjaGluZyAtPlxuICAgICAgICAgICAgbGV0IHJldl9yb290cyA9IEFycmF5LmZvbGRfbGVmdCAoZnVuIHQgaCAtPiBoIDo6IHQpIFtdIGluc3RhbmNlIGluXG4gICAgICAgICAgICAobWF0Y2hpbmcsIHJldl9yb290cykgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggdW5hcnlfcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IG91dFxuICAgIHwgU29tZSAoXywgTm9uZSkgLT5cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgXywgWyByMTsgcjIgXSAtPiBub3QgKEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCByMSByMiBlZGdlcylcbiAgICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICAgIG91dFxuICAgIHwgU29tZSAoXywgKFNvbWUgXyBhcyBtYXhfZGlzdGFuY2UpKSAtPlxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biAoaW5qLCBfKSAtPlxuICAgICAgICAgIGxldCBub2RlcyA9IE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIHBhdHRlcm5hIGluaiBpblxuICAgICAgICAgIE5vbmUgPSBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZWRnZXMgbm9kZXMuKDApIG5vZGVzLigxKSlcbiAgICAgICAgb3V0XG5cbiAgbGV0IHBvcF9leGFjdF9tYXRjaGluZ3MgbWF0Y2hpbmdzX29mX3J1bGUgcnVsZSA9XG4gICAgc25kIChNb2RzLkludE1hcC5wb3AgcnVsZSBtYXRjaGluZ3Nfb2ZfcnVsZSlcblxuICBsZXQgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgcmFuZG9tX3N0YXRlIGRvbWFpbiBlZGdlcyA/cnVsZV9pZFxuICAgICAgcnVsZSA9XG4gICAgbGV0IGZyb21fcGF0dGVybnMgKCkgPVxuICAgICAgbGV0IHBhdHMgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5cbiAgICAgIEluc3RhbmNlcy5mb2xkX3BpY2tlZF9pbnN0YW5jZSA/cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzIHJhbmRvbV9zdGF0ZVxuICAgICAgICBwYXRzIH5pbml0OihNYXRjaGluZy5lbXB0eSwgW10sIE5vbmUpXG4gICAgICAgIChmdW4gaWQgcGF0dGVybiByb290IChpbmosIHJldl9yb290cywgXykgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluaiBpZCBwYXR0ZXJuIHJvb3RcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJyAtPiBTb21lIChpbmonLCByb290IDo6IHJldl9yb290cywgTm9uZSkpXG4gICAgaW5cbiAgICBtYXRjaCBydWxlX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gZnJvbV9wYXR0ZXJucyAoKVxuICAgIHwgU29tZSBpZCAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlIHdpdGhcbiAgICAgIHwgU29tZSBbXSAtPiBOb25lXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBsZXQgYSwgYiA9IExpc3RfdXRpbC5yYW5kb20gcmFuZG9tX3N0YXRlIGwgaW5cbiAgICAgICAgU29tZSAoYSwgYiwgTm9uZSlcbiAgICAgIHwgTm9uZSAtPiBmcm9tX3BhdHRlcm5zICgpKVxuXG4gIGxldCBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP3VuYXJ5X3JhdGUgc3RhdGUgZG9tYWluIGVkZ2VzXG4gICAgICBjY3MgcnVsZSA9XG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgP3VuYXJ5X3JhdGUgfnJ1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlcyBkb21haW5cbiAgICAgICAgZWRnZXMgY2NzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBpZiBzdGF0ZS5ldmVudHNfdG9fYmxvY2sgPSBOb25lIHRoZW5cbiAgICAgICAgbWF0Y2hlc1xuICAgICAgZWxzZVxuICAgICAgICBtYXRjaGVzXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIChmdW4gKG1hdGNoaW5nLCBfKSAtPlxuICAgICAgICAgICAgICAgbm90IChpc19ibG9ja2VkIH5kZWJ1Z19tb2RlIHN0YXRlIH5ydWxlX2lkIHJ1bGUgbWF0Y2hpbmcpKVxuICAgIGluXG4gICAgKCBMaXN0Lmxlbmd0aCBtYXRjaGVzLFxuICAgICAge1xuICAgICAgICBzdGF0ZSB3aXRoXG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlID1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBtYXRjaGVzIHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgfSApXG5cbiAgKCogV2l0aCByZWN0YW5ndWxhciBhcHByb3hpbWF0aW9uICopXG4gIGxldCBjb21wdXRlX3VuYXJ5X251bWJlciBpbnN0YW5jZXNcbiAgICAgIChuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHVuYXJ5X2NhbmRpZGF0ZXMpIG1vZGlmaWVkX2NjcyBydWxlXG4gICAgICBydWxlX2lkID1cbiAgICBsZXQgcGF0MSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICBsZXQgcGF0MiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cblxuICAgIGxldCBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjID1cbiAgICAgIEluc3RhbmNlcy5udW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjIH5ydWxlX2lkIGluc3RhbmNlcyAocGF0MSwgcGF0MilcbiAgICBpblxuXG4gICAgbGV0IG9sZF9wYWNrID1cbiAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBWYWxNYXAuZW1wdHkgcnVsZV9pZFxuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICBpblxuICAgIGxldCBuZXdfcGFjayA9XG4gICAgICBIYXNodGJsLmZvbGRcbiAgICAgICAgKGZ1biBjYyAoKSBpX2luc3QgLT5cbiAgICAgICAgICBsZXQgbmV3X3YgPSBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjIGNjIGluXG4gICAgICAgICAgaWYgbmV3X3YgPSAwIHRoZW5cbiAgICAgICAgICAgIFZhbE1hcC5yZW1vdmUgY2MgaV9pbnN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgVmFsTWFwLmFkZCBjYyBuZXdfdiBpX2luc3QpXG4gICAgICAgIG1vZGlmaWVkX2NjcyBvbGRfcGFja1xuICAgIGluXG4gICAgbGV0IHZhID0gVmFsTWFwLnRvdGFsIG5ld19wYWNrIGluXG4gICAgbGV0IG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYycgPVxuICAgICAgaWYgdmEgPSAwTCB0aGVuXG4gICAgICAgIE1vZHMuSW50TWFwLnJlbW92ZSBydWxlX2lkIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jY1xuICAgICAgZWxzZVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBuZXdfcGFjayBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICBpblxuICAgIGxldCBfLCB1bmFyeV9jYW5kaWRhdGVzJyA9XG4gICAgICAoKiBJbnZhbGlkYXRlcyB0aGUgY2FjaGUgKilcbiAgICAgIE1vZHMuSW50TWFwLnBvcCBydWxlX2lkIHVuYXJ5X2NhbmRpZGF0ZXNcbiAgICBpblxuICAgIHZhLCAobmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJywgdW5hcnlfY2FuZGlkYXRlcycpXG5cbiAgbGV0IHBpY2tfYV91bmFyeV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHJhbmRvbV9zdGF0ZSBkb21haW4gZWRnZXNcbiAgICAgIH5ydWxlX2lkIHJ1bGUgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHJ1bGVfaWQgc3RhdGUudW5hcnlfY2FuZGlkYXRlcyB3aXRoXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGxldCBpbmosIHJvb3RzLCBwYXRoID0gTGlzdF91dGlsLnJhbmRvbSByYW5kb21fc3RhdGUgbCBpblxuICAgICAgU29tZSAoaW5qLCByb290cywgcGF0aClcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwYXQxID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKSBpblxuICAgICAgbGV0IHBhdDIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG4gICAgICBsZXQgcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyA9XG4gICAgICAgIEluc3RhbmNlcy5waWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIH5ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICByYW5kb21fc3RhdGUgKHBhdDEsIHBhdDIpXG4gICAgICBpblxuICAgICAgbGV0IGNjX2lkID1cbiAgICAgICAgVmFsTWFwLnJhbmRvbSByYW5kb21fc3RhdGVcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFZhbE1hcC5lbXB0eSBydWxlX2lkXG4gICAgICAgICAgICAgc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjKVxuICAgICAgaW5cbiAgICAgIGxldCByb290MSwgcm9vdDIgPSBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIGNjX2lkIGluXG5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiBGb3JtYXQucHJpbnRmIFwiQFtPbiByb290czpAICVpQCAlaUBdQC5cIiByb290MSByb290MlxuICAgICAgaW5cbiAgICAgIGxldCBwYXR0ZXJuMSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICAgIGxldCBwYXR0ZXJuMiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cbiAgICAgIGxldCBpbmoxID1cbiAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIE1hdGNoaW5nLmVtcHR5IDAgcGF0dGVybjFcbiAgICAgICAgICByb290MVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBpbmoxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgaW5qIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5qIDEgcGF0dGVybjIgcm9vdDJcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGlual9vdXQgLT4gU29tZSAoaW5qX291dCwgWyByb290Mjsgcm9vdDEgXSwgTm9uZSkpKVxuXG4gIGxldCBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP21heF9kaXN0YW5jZSBzdGF0ZVxuICAgICAgZG9tYWluIGdyYXBoIHBhdHMgcnVsZSA9XG4gICAgbGV0IHBhdHRlcm4xID0gcGF0cy4oMCkgaW5cbiAgICBsZXQgcGF0dGVybjIgPSBwYXRzLigxKSBpblxuICAgIGxldCBjYW5kcywgbGVuID1cbiAgICAgIEluc3RhbmNlcy5mb2xkX3VuYXJ5X2luc3RhbmNlcyB+cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgIChwYXR0ZXJuMSwgcGF0dGVybjIpIH5pbml0OihbXSwgMClcbiAgICAgICAgKGZ1biAocm9vdDEsIHJvb3QyKSAoKGxpc3QsIGxlbikgYXMgb3V0KSAtPlxuICAgICAgICAgIGxldCBpbmoxID1cbiAgICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBNYXRjaGluZy5lbXB0eSAwXG4gICAgICAgICAgICAgIHBhdHRlcm4xIHJvb3QxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBpbmoxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgfCBTb21lIGluaiAtPlxuICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggaW5qIDEgcGF0dGVybjJcbiAgICAgICAgICAgICAgICAgcm9vdDJcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IChpbmonLCBbIHJvb3QyOyByb290MSBdLCBOb25lKSA6OiBsaXN0LCBzdWNjIGxlblxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIHBhdHMgaW5qJyBpblxuICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBncmFwaCBub2Rlcy4oMCkgbm9kZXMuKDEpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgICAgICAgfCBTb21lIF8gYXMgcCAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSB+cnVsZV9pZCBydWxlIGluaicgdGhlblxuICAgICAgICAgICAgICAgICAgICBvdXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKGluaicsIFsgcm9vdDI7IHJvb3QxIF0sIHApIDo6IGxpc3QsIHN1Y2MgbGVuKSkpKVxuICAgIGluXG4gICAgbGV0IHVuYXJ5X2NhbmRpZGF0ZXMgPVxuICAgICAgaWYgbGVuID0gMCB0aGVuXG4gICAgICAgIE1vZHMuSW50TWFwLnJlbW92ZSBydWxlX2lkIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgY2FuZHMgc3RhdGUudW5hcnlfY2FuZGlkYXRlc1xuICAgIGluXG4gICAgbGVuLCB7IHN0YXRlIHdpdGggdW5hcnlfY2FuZGlkYXRlcyB9XG5cbiAgbGV0IHByaW50IGVudiBmIHN0YXRlID1cbiAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChpLCBtaXgpIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVpIEBbPGg+JWFAXVwiIGkgVXNlcl9ncmFwaC5wcmludF9jYyBtaXgpKVxuICAgICAgKEVkZ2VzLmJ1aWxkX3VzZXJfc25hcHNob3QgfmRlYnVnX21vZGU6ZmFsc2UgfnJhdzpmYWxzZSBzaWdzIHN0YXRlLmVkZ2VzKVxuICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIGVsIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVhICVhXCIgTmJyLnByaW50IGVsXG4gICAgICAgICAgICAgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIGkpKVxuICAgICAgc3RhdGUuaW1wLnRva2Vuc1xuXG4gIGxldCBkZWJ1Z19wcmludCBmIHN0YXRlID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWFALCVhQF1cIiBFZGdlcy5kZWJ1Z19wcmludCBzdGF0ZS5lZGdlc1xuICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIGVsIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSB0b2tlbl8laVwiIE5ici5wcmludCBlbCBpKSlcbiAgICAgIHN0YXRlLmltcC50b2tlbnMgSW5zdGFuY2VzLmRlYnVnX3ByaW50IHN0YXRlLmltcC5pbnN0YW5jZXNcblxuICB0eXBlIHN0YXRzID0geyBtaXh0dXJlX3N0YXRzOiBFZGdlcy5zdGF0cyB9XG5cbiAgbGV0IHN0YXRzIHN0YXRlID0geyBtaXh0dXJlX3N0YXRzID0gRWRnZXMuc3RhdHMgc3RhdGUuZWRnZXMgfVxuXG4gIGxldCBwcmludF9zdGF0cyBmIHN0YXRlID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWkgYWdlbnRzXCIgKHN0YXRzIHN0YXRlKS5taXh0dXJlX3N0YXRzLkVkZ2VzLm5iX2FnZW50c1xuXG4gIGxldCBuZXdfcGxhY2UgZnJlZV9pZCAoaW5qX25vZGVzLCBpbmpfZnJlc2gpID0gZnVuY3Rpb25cbiAgICB8IE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8gLT4gZmFpbHdpdGggXCJSdWxlX2ludGVycHJldGVyLm5ld19wbGFjZVwiXG4gICAgfCBNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpIC0+XG4gICAgICBpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmFkZCBpZCBmcmVlX2lkIGlual9mcmVzaFxuXG4gIGxldCBhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBpbnN0YW5jZXNcbiAgICAgIChzaWRlX2VmZmVjdHMsIGVkZ2VzKSA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChpZCwgXykgLT5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9mcmVlIGlkIHMgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKChpZCwgXyksIHMpLCAoKGlkJywgXyksIHMnKSkgLT5cbiAgICAgIGxldCBlZGdlcycsIGNjX21vZGlmID0gRWRnZXMucmVtb3ZlX2xpbmsgaWQgcyBpZCcgcycgZWRnZXMgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEluc3RhbmNlcy5icmVha19hcGFydF9jYyBpbnN0YW5jZXMgZWRnZXMnID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgY2NfbW9kaWZcbiAgICAgIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyICgoKGlkLCBfKSwgcykgYXMgbikgLT5cbiAgICAgIChtYXRjaCBMaXN0LnBhcnRpdGlvbiAoZnVuIHggLT4geCA9IG4pIHNpZGVfZWZmZWN0cyB3aXRoXG4gICAgICB8IF8gOjogXywgc2lkZV9lZmZlY3RzJyAtPiBzaWRlX2VmZmVjdHMnLCBlZGdlc1xuICAgICAgfCBbXSwgXyAtPlxuICAgICAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBpZCBzIGVkZ2VzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNpZGVfZWZmZWN0cywgRWRnZXMucmVtb3ZlX2ZyZWUgaWQgcyBlZGdlc1xuICAgICAgICB8IFNvbWUgKCgoaWQnLCBfKSBhcyBuYycpLCBzJykgLT5cbiAgICAgICAgICBsZXQgZWRnZXMnLCBjY19tb2RpZiA9IEVkZ2VzLnJlbW92ZV9saW5rIGlkIHMgaWQnIHMnIGVkZ2VzIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEluc3RhbmNlcy5icmVha19hcGFydF9jYyBpbnN0YW5jZXMgZWRnZXMnID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgICAgIGNjX21vZGlmXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobmMnLCBzJykgOjogc2lkZV9lZmZlY3RzLCBlZGdlcycpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJQb3NpdGl2ZUludGVybmFsaXplZCBpbiBuZWdhdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgbGV0IF8sIGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9pbnRlcm5hbCBpZCBzIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuXG4gIGxldCBhcHBseV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBzaWdzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICBpbnN0YW5jZXMgKGluajJncmFwaCwgc2lkZV9lZmZlY3RzLCBlZGdlcykgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuIC0+XG4gICAgICBsZXQgbmMsIGluajJncmFwaCcsIGVkZ2VzJyA9XG4gICAgICAgIGxldCB0eSA9IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIG4gaW5cbiAgICAgICAgbGV0IGlkLCBlZGdlcycgPSBFZGdlcy5hZGRfYWdlbnQgc2lncyB0eSBlZGdlcyBpblxuICAgICAgICAoaWQsIHR5KSwgbmV3X3BsYWNlIGlkIGluajJncmFwaCBuLCBlZGdlcydcbiAgICAgIGluXG4gICAgICAoaW5qMmdyYXBoJywgc2lkZV9lZmZlY3RzLCBlZGdlcycpLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IG5jXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0ICgoaWQsIF8pIGFzIG5jKSA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgICgqKEEsMjMpKilcbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfZnJlZSBpZCBzIGVkZ2VzIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9maWx0ZXIgKGZ1biB4IC0+IHggPD4gKG5jLCBzKSkgc2lkZV9lZmZlY3RzXG4gICAgICBpblxuICAgICAgKGluajJncmFwaCwgc2lkZV9lZmZlY3RzJywgZWRnZXMnKSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG4sIHMpLCAobicsIHMnKSkgLT5cbiAgICAgIGxldCBuYyA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgIGxldCBuYycgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuJyBpblxuICAgICAgbGV0IGVkZ2VzJywgbW9kaWZfY2MgPSBFZGdlcy5hZGRfbGluayBuYyBzIG5jJyBzJyBlZGdlcyBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfZmlsdGVyXG4gICAgICAgICAgKGZ1biB4IC0+IHggPD4gKG5jLCBzKSAmJiB4IDw+IChuYycsIHMnKSlcbiAgICAgICAgICBzaWRlX2VmZmVjdHNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBJbnN0YW5jZXMubWVyZ2VfY2MgaW5zdGFuY2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIG1vZGlmX2NjIGluXG4gICAgICAoIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cycsIGVkZ2VzJyksXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIClcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZVdoYXRFdmVyIGluIHBvc2l0aXZlIHVwZGF0ZVwiKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMsIGkpIC0+XG4gICAgICBsZXQgKChpZCwgXykgYXMgbmMpID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiBpblxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9pbnRlcm5hbCBpZCBzIGkgZWRnZXMgaW5cbiAgICAgICggKGluajJncmFwaCwgc2lkZV9lZmZlY3RzLCBlZGdlcycpLFxuICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChuYywgcywgaSkgKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZUludGVybmFsaXplZCBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG5cbiAgbGV0IGFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHNpZ3MgP21vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgIGluc3RhbmNlcyBlZGdlcyA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChpZCwgdHkpIC0+XG4gICAgICBsZXQgXywgZWRnZXMnID0gRWRnZXMuYWRkX2FnZW50IH5pZCBzaWdzIHR5IGVkZ2VzIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKChpZCwgXyksIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ZyZWUgaWQgcyBlZGdlcyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSAtPlxuICAgICAgbGV0IGVkZ2VzJywgbW9kaWZfY2MgPSBFZGdlcy5hZGRfbGluayBuYyBzIG5jJyBzJyBlZGdlcyBpblxuICAgICAgbGV0ICgpID0gSW5zdGFuY2VzLm1lcmdlX2NjIGluc3RhbmNlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBtb2RpZl9jYyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVXaGF0RXZlciBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkICgoaWQsIF8pLCBzLCBpKSAtPlxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9pbnRlcm5hbCBpZCBzIGkgZWRnZXMgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZUludGVybmFsaXplZCBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG5cbiAgbGV0IG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuYyAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCBkb21haW4gZWRnZXMgYWNjIG5jXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHNcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2xpbmsgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzIG5jJyBzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAobmMsIHMsIGkpIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICBsZXQgaSA9IEVkZ2VzLmdldF9pbnRlcm5hbCBpZCBzIGVkZ2VzIGluXG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgKCgoaWQsIF8pIGFzIG5jKSwgcykgLT5cbiAgICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGlkIHMgZWRnZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHNcbiAgICAgIHwgU29tZSAobmMnLCBzJykgLT5cbiAgICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9saW5rIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBuYycgcycpXG5cbiAgbGV0IG9ic19mcm9tX3RyYW5zZm9ybWF0aW9ucyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgdHJhbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzKVxuICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICB0cmFuc1xuICAgIHw+IGZzdFxuXG4gIGxldCBwYXRoX3Rlc3RzIHBhdGggdGVzdHMgPVxuICAgIGxldCBrbm93bl9hZ2VudHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIChpZCwgXykgLT4gTW9kcy5JbnRTZXQuYWRkIGlkIGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgX1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIC0+XG4gICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgdGVzdHNcbiAgICBpblxuICAgIGxldCBwcmV0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgICAgICAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAgKExpc3QuZm9yX2FsbCAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICB4IDw+IGEgJiYgeCA8PiBiICYmIHkgPD4gYSAmJiB5IDw+IGJcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgX1xuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBTb21lIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICh4LCB5KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgICBwYXRoXG4gICAgaW5cbiAgICBsZXQgXywgcGF0aF90ZXN0cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChhZywgdGUpICgoKChpZCwgXykgYXMgYSksIF8pLCAoKChpZCcsIF8pIGFzIGEnKSwgXykpIC0+XG4gICAgICAgICAgbGV0IGFnJywgdGUnID1cbiAgICAgICAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpZCBhZyB0aGVuXG4gICAgICAgICAgICAgIGFnLCB0ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBNb2RzLkludFNldC5hZGQgaWQgYWcsIEluc3RhbnRpYXRpb24uSXNfSGVyZSBhIDo6IHRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQnIGFnJyB0aGVuXG4gICAgICAgICAgICBhZycsIHRlJ1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmFkZCBpZCcgYWcnLCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYScgOjogdGUnKVxuICAgICAgICAoa25vd25fYWdlbnRzLCBwcmV0ZXN0cykgcGF0aFxuICAgIGluXG4gICAgcGF0aF90ZXN0c1xuXG4gIGxldCBzdGVwX29mX2V2ZW50IGNvdW50ZXIgPSBmdW5jdGlvblxuICAgIHwgVHJhY2UuSU5JVCBfLCBlIC0+IFRyYWNlLkluaXQgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICB8IFRyYWNlLlJVTEUgciwgeCAtPlxuICAgICAgVHJhY2UuUnVsZSAociwgeCwgQ291bnRlci5uZXh0X3N0ZXBfc2ltdWxhdGlvbl9pbmZvIGNvdW50ZXIpXG4gICAgfCBUcmFjZS5QRVJUIHAsIHggLT5cbiAgICAgIFRyYWNlLlBlcnQgKHAsIHgsIENvdW50ZXIuY3VycmVudF9zaW11bGF0aW9uX2luZm8gY291bnRlcilcblxuICBsZXQgc3RvcmVfZXZlbnQgfmRlYnVnX21vZGUgY291bnRlciBpbmoyZ3JhcGggbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlc1xuICAgICAgZXZlbnRfa2luZCA/cGF0aCBleHRyYV9zaWRlX2VmZmVjdHMgcnVsZSBvdXRwdXRzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgbGV0IGNldmVudCA9XG4gICAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV9ldmVudCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGhcbiAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnNcbiAgICAgIGluXG4gICAgICBsZXQgZnVsbF9jb25jcmV0ZV9ldmVudCA9XG4gICAgICAgIHtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gY2V2ZW50Lkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gY2V2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPSBjZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgZXh0cmFfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGNldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgKG1hdGNoIHBhdGggd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICB8IFNvbWUgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoU29tZSBwYXRoKSAtPiBwYXRoX3Rlc3RzIHBhdGggY2V2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMpO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLlRyYWNlU3RlcFxuICAgICAgICAgICAgIChzdGVwX29mX2V2ZW50IGNvdW50ZXIgKGV2ZW50X2tpbmQsIGZ1bGxfY29uY3JldGVfZXZlbnQpKSlcbiAgICAgIGluXG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoaSwgeCkgLT5cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5UcmFjZVN0ZXAgKFRyYWNlLk9icyAoaSwgeCwgQ291bnRlci5uZXh0X3N0b3J5IGNvdW50ZXIpKSkpXG4gICAgICAgIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcblxuICBsZXQgZ2V0X3NwZWNpZXNfb2JzIH5kZWJ1Z19tb2RlIHNpZ3MgZWRnZXMgb2JzIGFjYyB0cmFja2VkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKHBhdHRlcm4sIChyb290LCBfKSkgLT5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjIChmbiwgcGF0dGVybnMsIF8pIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIG9rIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICBQYXR0ZXJuLmNvbXBhcmVfY2Fub25pY2FscyBwaWQgcGF0dGVybiA9IDAgfHwgb2spXG4gICAgICAgICAgICAgICAgICBmYWxzZSBwYXR0ZXJuc1xuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgc3BlYyA9IEVkZ2VzLnNwZWNpZXMgfmRlYnVnX21vZGUgc2lncyByb290IGVkZ2VzIGluXG4gICAgICAgICAgICAgICAgKGZuLCBwYXR0ZXJucywgc3BlYykgOjogYWNjXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgKFBhdHRlcm4uT2JzTWFwLmdldCB0cmFja2VkIHBhdHRlcm4pXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGFjYylcbiAgICAgIGFjYyBvYnNcblxuICBsZXQgc3RvcmVfb2JzIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbnN0YW5jZXMgb2JzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSB0cmFja2VkIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyAocGF0dGVybiwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBhY2MgKGV2LCBwYXR0ZXJucywgdGVzdHMpIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIChpbmosIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0cycgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluaiwgTW9kcy5JbnRNYXAuZW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChldiwgdGVzdHMnKSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgIChhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSBpbnN0YW5jZXMgfmV4Y3A6KHBhdHRlcm4sIHJvb3QpXG4gICAgICAgICAgICAgICAgICAgICBkb21haW4gZWRnZXMgcGF0dGVybnMpKVxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgKFBhdHRlcm4uT2JzTWFwLmdldCB0cmFja2VkIHBhdHRlcm4pXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gYWNjKVxuICAgICAgICBhY2Mgb2JzXG5cbiAgbGV0IHVwZGF0ZV9lZGdlcyB+ZGVidWdfbW9kZSBvdXRwdXRzIGNvdW50ZXIgZG9tYWluIGlual9ub2RlcyBzdGF0ZSBldmVudF9raW5kXG4gICAgICA/cGF0aCBydWxlIHNpZ3MgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICgqTmVnYXRpdmUgdXBkYXRlKilcbiAgICBsZXQgY29uY3JldGVfcmVtb3ZlZCA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5jb25jcmV0aXplIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgIChpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmVtcHR5KSlcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLnJlbW92ZWRcbiAgICBpblxuICAgIGxldCAoZGVsX29icywgZGVsX2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgIChbXSwgc3RhdGUuZWRnZXMpIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIGZhbHNlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXNfYWZ0ZXJfbmVnXG4gICAgICAgICAgICBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHBhdCByb290KVxuICAgICAgICBkZWxfb2JzXG4gICAgaW5cbiAgICAoKlBvc2l0aXZlIHVwZGF0ZSopXG4gICAgbGV0IChmaW5hbF9pbmoyZ3JhcGgsIHJlbWFpbmluZ19zaWRlX2VmZmVjdHMsIGVkZ2VzJyksIGNvbmNyZXRlX2luc2VydGVkID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHgsIHApIGggLT5cbiAgICAgICAgICBsZXQgeCcsIGgnID1cbiAgICAgICAgICAgIGFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgIChQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGRvbWFpbilcbiAgICAgICAgICAgICAgfm1vZF9jb25uZWN0aXZpdHlfc3RvcmUgc3RhdGUuaW1wLmluc3RhbmNlcyB4IGhcbiAgICAgICAgICBpblxuICAgICAgICAgIHgnLCBoJyA6OiBwKVxuICAgICAgICAoKChpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmVtcHR5KSwgc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcpLCBbXSlcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLmluc2VydGVkXG4gICAgaW5cbiAgICBsZXQgZWRnZXMnJywgY29uY3JldGVfaW5zZXJ0ZWQnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGUsIGkpICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICAgICAgRWRnZXMuYWRkX2ZyZWUgaWQgcyBlLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcykgOjogaSlcbiAgICAgICAgKGVkZ2VzJywgY29uY3JldGVfaW5zZXJ0ZWQpXG4gICAgICAgIHJlbWFpbmluZ19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCAobmV3X29icywgbmV3X2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnJylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX2luc2VydGVkJ1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgdHJ1ZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzJycgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICAgcGF0IHJvb3QpXG4gICAgICAgIG5ld19vYnNcbiAgICBpblxuICAgICgqU3RvcmUgZXZlbnQqKVxuICAgIGxldCBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzID1cbiAgICAgIHN0b3JlX29icyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnJyBzdGF0ZS5pbXAuaW5zdGFuY2VzIG5ld19vYnMgW11cbiAgICAgICAgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0b3JlX2V2ZW50IH5kZWJ1Z19tb2RlIGNvdW50ZXIgZmluYWxfaW5qMmdyYXBoIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcbiAgICAgICAgZXZlbnRfa2luZCA/cGF0aCByZW1haW5pbmdfc2lkZV9lZmZlY3RzIHJ1bGUgb3V0cHV0c1xuICAgICAgICBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5XG4gICAgaW5cbiAgICAoKlByaW50IHNwZWNpZXMqKVxuICAgIGxldCBzcGVjaWVzID1cbiAgICAgIGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzJycgbmV3X29icyBbXSBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChmaWxlLCBfLCBtaXh0dXJlKSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuU3BlY2llcyAoZmlsZSwgQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciwgbWl4dHVyZSkpKVxuICAgICAgICBzcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgcmV2X2RlcHMgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzXG4gICAgICAgIChPcGVyYXRvci5EZXBTZXQudW5pb24gZGVsX2RlcHMgbmV3X2RlcHMpXG4gICAgaW5cbiAgICB7XG4gICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzO1xuICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgZWRnZXMgPSBlZGdlcycnO1xuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSByZXZfZGVwcztcbiAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICB9XG5cbiAgbGV0IHVwZGF0ZV9lZGdlc19mcm9tX2FjdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgc2lncyBjb3VudGVyIGRvbWFpbiBzdGF0ZVxuICAgICAgKGFjdGlvbnMsIHNpZGVfZWZmZWN0X2RzdCkgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICgqTmVnYXRpdmUgdXBkYXRlKilcbiAgICBsZXQgbG5rX2RzdCAoKGEsIF8pLCBzKSA9IEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gYSBzIHN0YXRlLmVkZ2VzIGluXG4gICAgbGV0IGNvbmNyZXRlX3JlbW92ZWQgPVxuICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIGxua19kc3RcbiAgICAgICAgYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IChkZWxfb2JzLCBkZWxfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZS5lZGdlcylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCBfc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgIChbXSwgc3RhdGUuZWRnZXMpIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIGZhbHNlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXNfYWZ0ZXJfbmVnXG4gICAgICAgICAgICBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHBhdCByb290KVxuICAgICAgICBkZWxfb2JzXG4gICAgaW5cbiAgICAoKlBvc2l0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGNvbmNyZXRlX2luc2VydGVkID1cbiAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lnc1xuICAgICAgICBzaWRlX2VmZmVjdF9kc3QgYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGVkZ2VzJyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggaCAtPlxuICAgICAgICAgIGFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgICAoUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBkb21haW4pXG4gICAgICAgICAgICB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBzdGF0ZS5pbXAuaW5zdGFuY2VzIHggaClcbiAgICAgICAgZWRnZXNfYWZ0ZXJfbmVnIGNvbmNyZXRlX2luc2VydGVkXG4gICAgaW5cbiAgICBsZXQgKG5ld19vYnMsIG5ld19kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX2luc2VydGVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyB0cnVlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXMnIG1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgIHBhdCByb290KVxuICAgICAgICBuZXdfb2JzXG4gICAgaW5cbiAgICAoKlByaW50IHNwZWNpZXMqKVxuICAgIGxldCBzcGVjaWVzID1cbiAgICAgIGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzJyBuZXdfb2JzIFtdIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGZpbGUsIF8sIG1peHR1cmUpIC0+XG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5TcGVjaWVzIChmaWxlLCBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyLCBtaXh0dXJlKSkpXG4gICAgICAgIHNwZWNpZXNcbiAgICBpblxuICAgIGxldCByZXZfZGVwcyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHNcbiAgICAgICAgKE9wZXJhdG9yLkRlcFNldC51bmlvbiBkZWxfZGVwcyBuZXdfZGVwcylcbiAgICBpblxuICAgIHtcbiAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXM7XG4gICAgICBlZGdlcyA9IGVkZ2VzJztcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gcmV2X2RlcHM7XG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgfVxuXG4gIGxldCBtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkID0gTmJyLnRvX2ludCAodmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZClcblxuICAoKiBjY192YSBpcyB0aGUgbnVtYmVyIG9mIGVtYmVkZGluZ3MuIEl0IG9ubHkgaGFzXG4gICAgIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIHJhdGUgY29uc3RhbnQgb2YgdGhlIHJ1bGUgKilcbiAgbGV0IHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlIGlkIHN5bnRheF9pZCByYXRlIGNjX3ZhXG4gICAgICA9XG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFslc3VsZSAlYSBoYXMgbm93ICVpIGluc3RhbmNlcy5AXUAuXCJcbiAgICAgICAgICAoaWYgaWQgbW9kIDIgPSAxIHRoZW5cbiAgICAgICAgICAgICBcIlVuYXJ5IHJcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJSXCIpXG4gICAgICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6dHJ1ZSB+ZW52KVxuICAgICAgICAgIChpZCAvIDIpIGNjX3ZhXG4gICAgaW5cbiAgICBsZXQgYWN0ID1cbiAgICAgIG1hdGNoIE5ici50b19mbG9hdCBAQCB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSByYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBpZiBjY192YSA9IDAgdGhlblxuICAgICAgICAgIDAuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmZpbml0eVxuICAgICAgfCBTb21lIHJhdGUgLT4gcmF0ZSAqLiBmbG9hdF9vZl9pbnQgY2NfdmFcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBhY3QgPCAwLiB0aGVuIChcbiAgICAgICAgbGV0IHVuYXJ5ID0gaWQgbW9kIDIgPSAxIGluXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkF0IHQ9JS4yZiAlc2N0aXZpdHkgb2YgcnVsZSAlYSBoYXMgYmVjb21lIG5lZ2F0aXZlICglZilcIlxuICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgKGlmIHVuYXJ5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgXCJVbmFyeSBcIlxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBcIlwiKVxuICAgICAgICAgICAgICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5lbnYpXG4gICAgICAgICAgICAgICAgIGlkIGFjdCxcbiAgICAgICAgICAgICAgIE1vZGVsLmdldF9hc3RfcnVsZV9yYXRlX3BvcyB+dW5hcnkgZW52IHN5bnRheF9pZCApKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IG9sZF9hY3QgPSBnZXRfYWN0aXZpdHkgaWQgc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBzZXRfYWN0aXZpdHkgaWQgYWN0IHN0YXRlIGluXG4gICAgc3RvcmUgc3ludGF4X2lkIG9sZF9hY3QgYWN0XG5cbiAgbGV0IHVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlIGtub3duX3BlcnRzXG4gICAgICA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IHVuYXJ5X3J1bGVfdXBkYXRlIG1vZGlmaWVkX2NjIGluc3RhbmNlcyBpIHBhY2sgcnVsZSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcGFja1xuICAgICAgfCBTb21lICh1bnJhdGUsIF8pIC0+XG4gICAgICAgIGxldCB2YSwgcGFjaycgPVxuICAgICAgICAgIGNvbXB1dGVfdW5hcnlfbnVtYmVyIGluc3RhbmNlcyBwYWNrIG1vZGlmaWVkX2NjIHJ1bGUgaVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgICAoKDIgKiBpKSArIDEpXG4gICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCB1bnJhdGUpIChJbnQ2NC50b19pbnQgdmEpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2snXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBkZXAgYWNjID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5mb2xkXG4gICAgICAgIChmdW4gZGVwICgoZXhhY3RfbWF0Y2hpbmdzLCBwZXJ0cykgYXMgYWNjKSAtPlxuICAgICAgICAgIG1hdGNoIGRlcCB3aXRoXG4gICAgICAgICAgfCBPcGVyYXRvci5BTEcgaiAtPlxuICAgICAgICAgICAgbGV0ICgpID0gcmVjb21wdXRlIGVudiBjb3VudGVyIHN0YXRlIGogaW5cbiAgICAgICAgICAgIGF1eCAoTW9kZWwuZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaikgYWNjXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RJRiBwIC0+IGV4YWN0X21hdGNoaW5ncywgcCA6OiBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBpIC0+XG4gICAgICAgICAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBpIGluXG4gICAgICAgICAgICBsZXQgcGF0dGVybl92YSA9XG4gICAgICAgICAgICAgIEluc3RhbmNlcy5udW1iZXJfb2ZfaW5zdGFuY2VzIH5ydWxlX2lkOmkgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlICgyICogaSlcbiAgICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSlcbiAgICAgICAgICAgICAgICBwYXR0ZXJuX3ZhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcG9wX2V4YWN0X21hdGNoaW5ncyBleGFjdF9tYXRjaGluZ3MgaSwgcGVydHMpXG4gICAgICAgIGRlcCBhY2NcbiAgICBpblxuICAgIGxldCBtYXRjaGluZ3Nfb2ZfcnVsZSwgcGVydHMgPVxuICAgICAgYXV4IHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzIChzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZSwga25vd25fcGVydHMpXG4gICAgaW5cbiAgICBsZXQgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCB1bmFyeV9jYW5kaWRhdGVzID1cbiAgICAgIGlmIEhhc2h0YmwubGVuZ3RoIHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSA9IDAgdGhlblxuICAgICAgICBzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICBNb2RlbC5mb2xkX3J1bGVzXG4gICAgICAgICAgICAodW5hcnlfcnVsZV91cGRhdGUgc3RhdGUuaW1wLmNoYW5nZWRfY29ubmVjdGl2aXR5XG4gICAgICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAgICAgKHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgc3RhdGUudW5hcnlfY2FuZGlkYXRlcylcbiAgICAgICAgICAgIGVudlxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlc2V0IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICAgICBvdXRcbiAgICAgIClcbiAgICBpblxuICAgICgge1xuICAgICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICAgIGVkZ2VzID0gc3RhdGUuZWRnZXM7XG4gICAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgICAgdW5hcnlfY2FuZGlkYXRlcztcbiAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSBzdGF0ZS5pbXAucHJlY29tcHV0ZWQuYWx3YXlzX291dGRhdGVkO1xuICAgICAgfSxcbiAgICAgIHBlcnRzIClcblxuICBsZXQgb3ZlcndyaXRlX3ZhciBpIGNvdW50ZXIgc3RhdGUgZXhwciA9XG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXRlLmltcC52YXJpYWJsZXNfb3ZlcndyaXRlLihpKSA8LVxuICAgICAgICBTb21lIChBbGdfZXhwci5DT05TVCAodmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZXhwcikpXG4gICAgaW5cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgIE9wZXJhdG9yLkRlcFNldC5hZGQgKE9wZXJhdG9yLkFMRyBpKSBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cztcbiAgICB9XG5cbiAgbGV0IHVwZGF0ZV90b2tlbnMgZW52IGNvdW50ZXIgc3RhdGUgaW5qZWN0ZWQgPVxuICAgIGxldCBpbmplY3RlZCcgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKChleHByLCBfKSwgaSkgLT4gdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZXhwciwgaSlcbiAgICAgICAgaW5qZWN0ZWRcbiAgICBpblxuICAgIHtcbiAgICAgIHN0YXRlIHdpdGhcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHJkZXBzICh2YSwgaSkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlLmltcC50b2tlbnMuKGkpIDwtIE5ici5hZGQgc3RhdGUuaW1wLnRva2Vucy4oaSkgdmEgaW5cbiAgICAgICAgICAgIGxldCBkZXBzJyA9IE1vZGVsLmdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaSBpblxuICAgICAgICAgICAgaWYgT3BlcmF0b3IuRGVwU2V0LmlzX2VtcHR5IGRlcHMnIHRoZW5cbiAgICAgICAgICAgICAgcmRlcHNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJkZXBzIGRlcHMnKVxuICAgICAgICAgIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzIGluamVjdGVkJztcbiAgICB9XG5cbiAgbGV0IHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kID9wYXRoXG4gICAgICBydWxlID9ydWxlX2lkIGluaiA9XG4gICAgaWYgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSA/cnVsZV9pZCBydWxlIGluaiB0aGVuXG4gICAgICBCbG9ja2VkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc3RhdGUgPVxuICAgICAgICB1cGRhdGVfdG9rZW5zIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnNcbiAgICAgIGluXG4gICAgICBsZXQgc3RhdGUgPVxuICAgICAgICB1cGRhdGVfZWRnZXMgfmRlYnVnX21vZGUgb3V0cHV0cyBjb3VudGVyIChNb2RlbC5kb21haW4gZW52KSBpbmogc3RhdGVcbiAgICAgICAgICBldmVudF9raW5kID9wYXRoIHJ1bGUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICAgICAgaW5cbiAgICAgIFN1Y2Nlc3Mgc3RhdGVcbiAgICApXG5cbiAgbGV0IGFwcGx5X2dpdmVuX3VuYXJ5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBDbGFzaFxuICAgIHwgU29tZSAoaW5qLCBfcmV2X3Jvb3RzLCBwYXRoKSAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgc3RhdGUnID1cbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlIHdpdGhcbiAgICAgICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgICAgICBPcGVyYXRvci5EZXBTZXQuYWRkIChPcGVyYXRvci5SVUxFIHJ1bGVfaWQpIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgKG1hdGNoIHBhdGggd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlJyBldmVudF9raW5kXG4gICAgICAgICAgfnBhdGggcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbWF4X2Rpc3RhbmNlID1cbiAgICAgICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKF8sIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgICAgKG1hdGNoIGRpc3Rfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZScgZCkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgIGxldCBub2RlcyA9XG4gICAgICAgICAgTWF0Y2hpbmcuZWxlbWVudHNfd2l0aF90eXBlcyBkb21haW5cbiAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpbmpcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbWF4X2Rpc3RhbmNlID0gTm9uZSAmJiBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5ID0gTm9uZSB0aGVuXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudFxuICAgICAgICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzLigwKSkpXG4gICAgICAgICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXMuKDEpKSlcbiAgICAgICAgICAgICAgc3RhdGUuZWRnZXNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUnXG4gICAgICAgICAgICAgIGV2ZW50X2tpbmQgfnBhdGg6Tm9uZSBydWxlIH5ydWxlX2lkIGlualxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIENvcnJlY3RlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIHN0YXRlLmVkZ2VzIG5vZGVzLigwKSBub2Rlcy4oMSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IENvcnJlY3RlZFxuICAgICAgICAgIHwgU29tZSBfIGFzIHBhdGggLT5cbiAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSdcbiAgICAgICAgICAgICAgZXZlbnRfa2luZCB+cGF0aCBydWxlIH5ydWxlX2lkIGlualxuICAgICAgICApKVxuXG4gIGxldCBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQ2xhc2hcbiAgICB8IFNvbWUgKGluaiwgcmV2X3Jvb3RzLCBfcGF0aCkgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgcm9vdHMgPSBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCByZXZfcm9vdHMgaW5cbiAgICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFtPbiByb290czpAIEBbJWFAXUBdQC5cIlxuICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gXyAtPiBGb3JtYXQucHBfcHJpbnRfaW50KSlcbiAgICAgICAgICAgIHJvb3RzXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgIHwgU29tZSAoXywgbWF4X2Rpc3RhbmNlKSAtPlxuICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHJldl9yb290cyB3aXRoXG4gICAgICAgICAgfCBbIHJvb3QxOyByb290MCBdIC0+XG4gICAgICAgICAgICBpZiBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgcm9vdDAgcm9vdDEgc3RhdGUuZWRnZXMgdGhlblxuICAgICAgICAgICAgICBDb3JyZWN0ZWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgICAgICAgZXZlbnRfa2luZCBydWxlID9ydWxlX2lkIGlualxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcImFwcGx5X2dpdmVuX3J1bGUgdW5hcnkgcnVsZSB3aXRob3V0IDIgcGF0dGVybnNcIilcbiAgICAgICAgfCBTb21lIGRpc3QgLT5cbiAgICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICAgIGxldCBkaXN0JyA9IFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGRpc3QpIGluXG4gICAgICAgICAgbGV0IG5vZGVzID1cbiAgICAgICAgICAgIE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluXG4gICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpbmpcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZTpkaXN0JyBzdGF0ZS5lZGdlcyBub2Rlcy4oMClcbiAgICAgICAgICAgICAgIG5vZGVzLigxKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgICAgICBydWxlID9ydWxlX2lkIGlualxuICAgICAgICAgIHwgU29tZSBfIC0+IENvcnJlY3RlZCkpKVxuXG4gIGxldCBhcHBseV9naXZlbl9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPVxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IGluc3QgPVxuICAgICAgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBkb21haW5cbiAgICAgICAgc3RhdGUuZWRnZXMgP3J1bGVfaWQgcnVsZVxuICAgIGluXG4gICAgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSBpbnN0XG5cbiAgbGV0IGZvcmNlX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZCA/cnVsZV9pZCBydWxlXG4gICAgICA9XG4gICAgbWF0Y2hcbiAgICAgIGFwcGx5X2dpdmVuX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgICAgZXZlbnRfa2luZCBydWxlXG4gICAgd2l0aFxuICAgIHwgU3VjY2VzcyBvdXQgLT4gU29tZSBvdXRcbiAgICB8IENvcnJlY3RlZCB8IEJsb2NrZWQgfCBDbGFzaCAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgdW5hcnlfcmF0ZSA9XG4gICAgICAgIG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIChsb2MsIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgIChtYXRjaCBkaXN0X29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFNvbWUgKGxvYywgTm9uZSlcbiAgICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChsb2MsIFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQpKSlcbiAgICAgIGluXG4gICAgICAobWF0Y2hcbiAgICAgICAgIGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlID9ydWxlX2lkID91bmFyeV9yYXRlIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICAgKE1vZGVsLmRvbWFpbiBlbnYpIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgICAgIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkF0IHQ9JWYsICVhIGRvZXMgbm90IGFwcGx5IChhbnltb3JlKVwiXG4gICAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgIChUcmFjZS5wcmludF9ldmVudF9raW5kIH5lbnYpXG4gICAgICAgICAgICAgICAgICAgICBldmVudF9raW5kICkpXG4gICAgICAgIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgbCAtPlxuICAgICAgICBsZXQgaCwgXyA9IExpc3RfdXRpbC5yYW5kb20gc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBsIGluXG4gICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgICBydWxlID9ydWxlX2lkIGhcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIG91dCB3aXRoXG4gICAgICAgIHwgU3VjY2VzcyBvdXQgLT4gU29tZSBvdXRcbiAgICAgICAgfCBCbG9ja2VkIC0+IE5vbmVcbiAgICAgICAgfCBDbGFzaCB8IENvcnJlY3RlZCAtPiBhc3NlcnQgZmFsc2UpKVxuXG4gIGxldCBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGUgcnVsZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgdW5hcnlfcmF0ZSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChsb2MsIGRpc3Rfb3B0KSAtPlxuICAgICAgICAobWF0Y2ggZGlzdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAobG9jLCBOb25lKVxuICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChsb2MsIFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQpKSlcbiAgICBpblxuICAgIGxldCBhY3QsIHN0YXRlID1cbiAgICAgIGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCA/dW5hcnlfcmF0ZSBzdGF0ZSBkb21haW5cbiAgICAgICAgc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIHJ1bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBzdGF0ZSAoMiAqIHJ1bGVfaWQpIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZVxuICAgICAgICAoZnN0IHJ1bGUuUHJpbWl0aXZlcy5yYXRlKSBhY3RcbiAgICBpblxuICAgIHN0YXRlXG5cbiAgKCogUmVkZWZpbmVzIGBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXNgICopXG4gIGxldCBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGUgcnVsZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgbWF4X2Rpc3RhbmNlID1cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biAoXywgZGlzdF9vcHQpIC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSkgZGlzdF9vcHQpXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlXG4gICAgaW5cbiAgICBsZXQgYWN0LCBzdGF0ZSA9XG4gICAgICBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP21heF9kaXN0YW5jZSBzdGF0ZVxuICAgICAgICBkb21haW4gc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIHJ1bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgKHVucmF0ZSwgXykgLT5cbiAgICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGVcbiAgICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICAgIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgKCgyICogcnVsZV9pZCkgKyAxKVxuICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSAoZnN0IHVucmF0ZSkgYWN0XG4gICAgaW5cbiAgICBzdGF0ZVxuXG4gIGxldCBpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZSBwYXR0ZXJuID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgSW5zdGFuY2VzLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJuXG4gICAgICAgIChNYXRjaGluZy5yb290c19vZiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMgcGF0dGVybilcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyBlbnYgY291bnRlciBzdGF0ZSA9XG4gICAge1xuICAgICAgRGF0YS5zbmFwc2hvdF9ldmVudCA9IENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyO1xuICAgICAgRGF0YS5zbmFwc2hvdF90aW1lID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcjtcbiAgICAgIERhdGEuc25hcHNob3RfYWdlbnRzID1cbiAgICAgICAgRWRnZXMuYnVpbGRfdXNlcl9zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgICAgICAgICBzdGF0ZS5lZGdlcztcbiAgICAgIERhdGEuc25hcHNob3RfdG9rZW5zID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaSB4IC0+IEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIGksIHgpXG4gICAgICAgICAgc3RhdGUuaW1wLnRva2VucztcbiAgICB9XG5cbiAgbGV0IHBpY2tfYW5faW5zdGFuY2UgfmRlYnVnX21vZGUgZW52IHN0YXRlID1cbiAgICBsZXQgY2hvaWNlID0gcGlja19ydWxlIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgc3RhdGUgaW5cbiAgICBsZXQgcnVsZV9pZCA9IGNob2ljZSAvIDIgaW5cbiAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAoIGNob2ljZSBtb2QgMiA9IDEsXG4gICAgICBydWxlX2lkLFxuICAgICAgaWYgY2hvaWNlIG1vZCAyID0gMSB0aGVuXG4gICAgICAgIHBpY2tfYV91bmFyeV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHN0YXRlLmltcC5yYW5kb21fc3RhdGVcbiAgICAgICAgICBkb21haW4gc3RhdGUuZWRnZXMgfnJ1bGVfaWQgcnVsZVxuICAgICAgZWxzZVxuICAgICAgICBwaWNrX2FfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIGRvbWFpblxuICAgICAgICAgIHN0YXRlLmVkZ2VzIH5ydWxlX2lkIHJ1bGUgKVxuXG4gIGxldCBpc19jb3JyZWN0X2luc3RhbmNlIGVudiBncmFwaCAoaXNfdW5hcnksIHJ1bGVfaWQsIGluc3RhbmNlKSA9XG4gICAgbWF0Y2ggaW5zdGFuY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIChfaW5qLCBpbnZfcm9vdHMsIHBhdGgpIC0+XG4gICAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgICBsZXQgcGF0cyA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpblxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0MmlcbiAgICAgICAgKGZ1biBfIGIgY2MgciAtPiBiICYmIEluc3RhbmNlcy5pc192YWxpZCBncmFwaC5pbXAuaW5zdGFuY2VzIGNjIHIpXG4gICAgICAgIHRydWUgcGF0c1xuICAgICAgICAoVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgaW52X3Jvb3RzKVxuICAgICAgJiYgKChub3QgaXNfdW5hcnkpXG4gICAgICAgICB8fFxuICAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgICB8IFNvbWUgcCAtPiBFZGdlcy5pc192YWxpZF9wYXRoIHAgZ3JhcGguZWRnZXNcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggaW52X3Jvb3RzIHdpdGhcbiAgICAgICAgICAgfCBbIHg7IHkgXSAtPiBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgeCB5IGdyYXBoLmVkZ2VzXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG4gIGxldCBhcHBseV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/bWF4Q29uc2VjdXRpdmVCbG9ja2VkXG4gICAgICB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCAoaXNfdW5hcnksIHJ1bGVfaWQsIGluc3RhbmNlKSA9XG4gICAgbGV0IGNhdXNlID0gVHJhY2UuUlVMRSBydWxlX2lkIGluXG4gICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbPHY+QFtBcHBsaWVkQCAldCVpOkBdQCBAWyVhQF1AXUAuXCJcbiAgICAgICAgICAoZnVuIGYgLT4gaWYgaXNfdW5hcnkgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwidW5hcnlAIFwiKVxuICAgICAgICAgIHJ1bGVfaWRcbiAgICAgICAgICAoS2FwcGFfcHJpbnRlci5kZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnM6dHJ1ZSB+ZnVsbDp0cnVlIGVudilcbiAgICAgICAgICBydWxlXG4gICAgICAoKlJ1bGVfaW50ZXJwcmV0ZXIucHJpbnRfZGlzdCBlbnYgZ3JhcGggcnVsZV9pZCopXG4gICAgaW5cbiAgICBsZXQgYXBwbHlfZ2l2ZW4gPVxuICAgICAgaWYgaXNfdW5hcnkgdGhlblxuICAgICAgICBhcHBseV9naXZlbl91bmFyeV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZFxuICAgICAgZWxzZVxuICAgICAgICBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZFxuICAgIGluXG4gICAgbWF0Y2ggYXBwbHlfZ2l2ZW4gZW52IGNvdW50ZXIgZ3JhcGggY2F1c2UgcnVsZSBpbnN0YW5jZSB3aXRoXG4gICAgfCBTdWNjZXNzIGdyYXBoJyAtPlxuICAgICAgbGV0IGZpbmFsX3N0ZXAgPSBub3QgKENvdW50ZXIub25lX2NvbnN0cnVjdGl2ZV9ldmVudCB+cnVsZV9pZCBjb3VudGVyKSBpblxuICAgICAgU29tZSBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUsIGZpbmFsX3N0ZXAsIGdyYXBoJ1xuICAgIHwgKENsYXNoIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCkgYXMgb3V0IC0+XG4gICAgICBsZXQgY29udGludWUgPVxuICAgICAgICBpZiBvdXQgPSBDbGFzaCB0aGVuXG4gICAgICAgICAgQ291bnRlci5vbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQgfnJ1bGVfaWQgY291bnRlclxuICAgICAgICBlbHNlIGlmIG91dCA9IEJsb2NrZWQgdGhlblxuICAgICAgICAgIENvdW50ZXIub25lX2Jsb2NrZWRfZXZlbnQgY291bnRlclxuICAgICAgICBlbHNlIGlmIGlzX3VuYXJ5IHRoZW5cbiAgICAgICAgICBDb3VudGVyLm9uZV9ub19tb3JlX3VuYXJ5X2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgICAgZWxzZVxuICAgICAgICAgIENvdW50ZXIub25lX25vX21vcmVfYmluYXJ5X2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgIGluXG4gICAgICBpZlxuICAgICAgICBDb3VudGVyLmNvbnNlY3V0aXZlX251bGxfZXZlbnQgfnJ1bGVfaWQgY291bnRlciA8IG1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgICAgJiZcbiAgICAgICAgbWF0Y2ggbWF4Q29uc2VjdXRpdmVCbG9ja2VkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIG4gLT4gQ291bnRlci5jb25zZWN1dGl2ZV9ibG9ja2VkIGNvdW50ZXIgPCBuXG4gICAgICB0aGVuXG4gICAgICAgIE5vbmUsIG5vdCBjb250aW51ZSwgZ3JhcGhcbiAgICAgIGVsc2VcbiAgICAgICAgKCBOb25lLFxuICAgICAgICAgIG5vdCBjb250aW51ZSxcbiAgICAgICAgICBpZiBpc191bmFyeSB0aGVuXG4gICAgICAgICAgICBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgcnVsZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCBlbnYgY291bnRlciBncmFwaCBydWxlIClcblxuICBsZXQgYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgdHBhdHRlcm4gPVxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIHBhdHRlcm4gLT5cbiAgICAgICAgICBsZXQgYWNjID0gUGF0dGVybi5PYnNNYXAuZ2V0IHRwYXR0ZXJuIHBhdHRlcm4gaW5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gcGF0dGVybiAoKG5hbWUsIHBhdHRlcm5zLCB0ZXN0cykgOjogYWNjKSlcbiAgICAgICAgcGF0dGVybnNcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgYWRkX3RyYWNrZWQgfm91dHB1dHMgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbWF0Y2ggc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICBcIk9ic2VydmFibGUgJXMgc2hvdWxkIGJlIHRyYWNrZWQgYnV0IHRoZSB0cmFjZSBpcyBub3Qgc3RvcmVkXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lICkpXG4gICAgICBpblxuICAgICAgc3RhdGVcbiAgICB8IFNvbWUgdHBhdHRlcm4gLT4gYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgdHBhdHRlcm5cblxuICBsZXQgcmVtb3ZlX3RyYWNrZWQgcGF0dGVybnMgbmFtZSBzdGF0ZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbWF0Y2ggc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+IHN0YXRlXG4gICAgfCBTb21lIHRwYXR0ZXJuIC0+XG4gICAgICAobWF0Y2ggbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgICAgICBsZXQgdGVzdGVyIChfLCBlbCwgXykgPVxuICAgICAgICAgIG5vdFxuICAgICAgICAgIEBAIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgIChmdW4gaSBiIHggLT4gYiAmJiBQYXR0ZXJuLmlzX2VxdWFsX2Nhbm9uaWNhbHMgeCBlbC4oaSkpXG4gICAgICAgICAgICAgICB0cnVlIHBhdHRlcm5zXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQXJyYXkuaXRlclxuICAgICAgICAgICAgKGZ1biBwYXR0ZXJuIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBQYXR0ZXJuLk9ic01hcC5nZXQgdHBhdHRlcm4gcGF0dGVybiBpblxuICAgICAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gcGF0dGVybiAoTGlzdC5maWx0ZXIgdGVzdGVyIGFjYykpXG4gICAgICAgICAgICBwYXR0ZXJuc1xuICAgICAgICBpblxuICAgICAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG4gICAgICB8IFNvbWUgbmFtZSAtPlxuICAgICAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgICAgIGxldCB0ZXN0ZXIgKG4sIF8sIF8pID0gbm90IChTdHJpbmcuY29tcGFyZSBuYW1lIG4gPSAwKSBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAgICAgICAoZnVuIGNjX2lkIHBsaXN0IC0+XG4gICAgICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCB0cGF0dGVybiBjY19pZCAoTGlzdC5maWx0ZXIgdGVzdGVyIHBsaXN0KSlcbiAgICAgICAgICAgIHRwYXR0ZXJuXG4gICAgICAgIGluXG4gICAgICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH0pXG5cbiAgbGV0IGFkZF90cmFja2VkX3NwZWNpZXMgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSA9XG4gICAgYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgc3RhdGUuaW1wLnNwZWNpZXNcblxuICBsZXQgcmVtb3ZlX3RyYWNrZWRfc3BlY2llcyBuYW1lIHN0YXRlID1cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IHRlc3RlciAobiwgXywgXykgPSBub3QgKFN0cmluZy5jb21wYXJlIG5hbWUgbiA9IDApIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAgIChmdW4gY2NfaWQgcGxpc3QgLT5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUuaW1wLnNwZWNpZXMgY2NfaWQgKExpc3QuZmlsdGVyIHRlc3RlciBwbGlzdCkpXG4gICAgICAgIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IGdldF9yYW5kb21fc3RhdGUgc3RhdGUgPSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlXG5cbiAgbGV0IHNlbmRfaW5zdGFuY2VzX21lc3NhZ2UgbXNnIHN0YXRlID1cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBpbXAgPVxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGUuaW1wIHdpdGhcbiAgICAgICAgICBpbnN0YW5jZXMgPSBJbnN0YW5jZXMucmVjZWl2ZV9tZXNzYWdlIG1zZyBzdGF0ZS5pbXAuaW5zdGFuY2VzO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgYWRkX291dGRhdGVkX2RlcGVuZGVuY2llcyBuZXdfZGVwcyBzdGF0ZSA9XG4gICAgbGV0IG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBuZXdfZGVwcyBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50c1xuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkX2VsZW1lbnRzIH1cblxuICBsZXQgZGVidWdfcHJpbnRfaW5zdGFuY2VzIGYgc3QgPSBJbnN0YW5jZXMuZGVidWdfcHJpbnQgZiBzdC5pbXAuaW5zdGFuY2VzXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgaW5pdF9zdG9wcGluZ190aW1lczogKE5ici50ICogaW50KSBsaXN0O1xuICBtdXRhYmxlIHN0b3BwaW5nX3RpbWVzOiAoTmJyLnQgKiBpbnQpIGxpc3Q7XG4gIHBlcnR1cmJhdGlvbnNfYWxpdmU6IGJvb2wgYXJyYXk7XG4gIHRpbWVfZGVwZW5kZW50X3BlcnRzOiBpbnQgbGlzdDtcbiAgbXV0YWJsZSBmb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnM6IGludCBsaXN0O1xuICBwZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldDogYm9vbCBhcnJheTtcbiAgKCogaW50ZXJuYWwgYXJyYXkgZm9yIHBlcnR1cmJhdGUgZnVuY3Rpb24gKGdsb2JhbCB0byBhdm9pZCB1c2VsZXNzIGFsbG9jKSAqKVxuICBtdXRhYmxlIGZsdXg6IChzdHJpbmcgKiBEYXRhLmRpbl9kYXRhKSBsaXN0O1xuICB3aXRoX2RlbHRhX2FjdGl2aXRpZXM6IGJvb2w7XG59XG5cbmxldCBjb21wYXJlX3N0b3BzICh0MSwgcDEpICh0MiwgcDIpID1cbiAgbGV0IHQgPSBOYnIuY29tcGFyZSB0MSB0MiBpblxuICBpZiB0ID0gMCB0aGVuXG4gICAgY29tcGFyZSBwMSBwMlxuICBlbHNlXG4gICAgdFxuXG5sZXQgZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllcyBjb3VudGVyIGVudiA9XG4gIGxldCB0MCA9IENvdW50ZXIuaW5pdF90aW1lIGNvdW50ZXIgaW5cbiAgbGV0IHN0b3BwaW5nX3RpbWVzID1cbiAgICBsZXQgYWxnc19kZXBzID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICBNb2RlbC5mb2xkX3BlcnR1cmJhdGlvbnNcbiAgICAgIChmdW4gaSBhY2MgeCAtPlxuICAgICAgICBtYXRjaCB4LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGxldCBrID0gMS4gKy4gZmxvb3IgKHQwIC8uIE9wdGlvbl91dGlsLnVuc29tZSAwLiAoTmJyLnRvX2Zsb2F0IG4pKSBpblxuICAgICAgICAgIChOYnIubXVsdCAoTmJyLkYgaykgbiwgaSkgOjogYWNjXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgYWxnc19kZXBzXG4gICAgICAgICAgICAgICAgKGZzdCB4LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKCBcIkVxdWFsaXR5IHRlc3Qgb24gdGltZSByZXF1aXJlcyBhbiBhbGFybVwiLFxuICAgICAgICAgICAgICAgICAgICAgc25kIHguUHJpbWl0aXZlcy5wcmVjb25kaXRpb24gKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgYWxnc19kZXBzIChmc3QgeC5QcmltaXRpdmVzLnJlcGVhdClcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggXCJFcXVhbGl0eSB0ZXN0IG9uIHRpbWUgcmVxdWlyZXMgYW4gYWxhcm1cIixcbiAgICAgICAgICAgICAgICAgICAgIHNuZCB4LlByaW1pdGl2ZXMucmVwZWF0ICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhY2MpXG4gICAgICBbXSBlbnZcbiAgaW5cbiAgbGV0IHN0b3BzID0gTGlzdC5zb3J0IGNvbXBhcmVfc3RvcHMgc3RvcHBpbmdfdGltZXMgaW5cbiAgbGV0IHRpbWVfZGVwZW5kZW50X3BlcnRzID1cbiAgICBsZXQgcmVjIGF1eCBkZXAgYWNjID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5mb2xkXG4gICAgICAgIChmdW4gZGVwIHBlcnRzIC0+XG4gICAgICAgICAgbWF0Y2ggZGVwIHdpdGhcbiAgICAgICAgICB8IE9wZXJhdG9yLkFMRyBqIC0+XG4gICAgICAgICAgICBhdXggKE1vZGVsLmdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGopIHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RJRiBwIC0+XG4gICAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBNb2RzLmludF9jb21wYXJlIFsgcCBdIHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5SVUxFIF8gLT4gcGVydHMpXG4gICAgICAgIGRlcCBhY2NcbiAgICBpblxuICAgIGF1eFxuICAgICAgKGxldCB4LCBfLCBfLCBfID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICAgICB4KVxuICAgICAgW11cbiAgaW5cbiAge1xuICAgIGluaXRfc3RvcHBpbmdfdGltZXMgPSBzdG9wcztcbiAgICBzdG9wcGluZ190aW1lcyA9IHN0b3BzO1xuICAgIHBlcnR1cmJhdGlvbnNfYWxpdmUgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9wZXJ0dXJiYXRpb25zIGVudikgdHJ1ZTtcbiAgICBmb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPSBbXTtcbiAgICB0aW1lX2RlcGVuZGVudF9wZXJ0cztcbiAgICBwZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldCA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX3BlcnR1cmJhdGlvbnMgZW52KSB0cnVlO1xuICAgIGZsdXggPSBbXTtcbiAgICB3aXRoX2RlbHRhX2FjdGl2aXRpZXM7XG4gIH1cblxubGV0IG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggY291bnRlciA9XG4gIE1vZGVsLm1hcF9vYnNlcnZhYmxlcyAoUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBncmFwaCkgZW52XG5cbmxldCBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICBtb2RpZmljYXRpb24gPVxuICBsZXQgcHJpbnRfZXhwcl92YWwgPVxuICAgIEthcHBhX3ByaW50ZXIucHJpbnRfZXhwcl92YWwgKFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgZ3JhcGgpXG4gIGluXG4gIG1hdGNoIG1vZGlmaWNhdGlvbiB3aXRoXG4gIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgKCh2LCBfKSwgcikgLT5cbiAgICBsZXQgdGV4dCA9XG4gICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIlxuICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZW52KVxuICAgICAgICBtb2RpZmljYXRpb25cbiAgICBpblxuICAgIGxldCBncmFwaCcgPVxuICAgICAgTmJyLm1heWJlX2l0ZXJpXG4gICAgICAgIChmdW4gXyBnIC0+XG4gICAgICAgICAgUnVsZV9pbnRlcnByZXRlci5mb3JjZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdcbiAgICAgICAgICAgIChUcmFjZS5QRVJUIHRleHQpIHIpXG4gICAgICAgIGdyYXBoXG4gICAgICAgIChSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIGdyYXBoIHYpXG4gICAgaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmEnID1cbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGgnIGV4dHJhXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgnJywgc3RhdGUsIGV4dHJhJ1xuICB8IFByaW1pdGl2ZXMuVVBEQVRFIChpLCAoZXhwciwgXykpIC0+XG4gICAgbGV0IGdyYXBoJyA9IFJ1bGVfaW50ZXJwcmV0ZXIub3ZlcndyaXRlX3ZhciBpIGNvdW50ZXIgZ3JhcGggZXhwciBpblxuICAgIGxldCBncmFwaCcnLCBleHRyYScgPVxuICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBncmFwaCcgZXh0cmFcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCcnLCBzdGF0ZSwgZXh0cmEnXG4gIHwgUHJpbWl0aXZlcy5TVE9QIHBleHByIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBleHByIDw+IFtdIHRoZW4gKFxuICAgICAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBleHByIGluXG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAgICggZmlsZSxcbiAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdzpmYWxzZSBlbnYgY291bnRlclxuICAgICAgICAgICAgICAgICBncmFwaCApKVxuICAgICAgKVxuICAgIGluXG4gICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuUFJJTlQgKHBlX2ZpbGUsIHBlX2V4cHIpIC0+XG4gICAgbGV0IGZpbGVfb3B0ID1cbiAgICAgIG1hdGNoIHBlX2ZpbGUgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gLT4gU29tZSAoRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGVfZmlsZSlcbiAgICBpblxuICAgIGxldCBsaW5lID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGVfZXhwciBpblxuICAgIGxldCAoKSA9XG4gICAgICBvdXRwdXRzXG4gICAgICAgIChEYXRhLlByaW50XG4gICAgICAgICAgIHsgRGF0YS5maWxlX2xpbmVfbmFtZSA9IGZpbGVfb3B0OyBEYXRhLmZpbGVfbGluZV90ZXh0ID0gbGluZSB9KVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSAtPlxuICAgIGxldCAoKSA9IG91dHB1dHMgKERhdGEuUGxvdCAob2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCBjb3VudGVyKSkgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgcGV4cHIpIC0+XG4gICAgbGV0IGZpbGUgPVxuICAgICAgaWYgcGV4cHIgPSBbXSB0aGVuXG4gICAgICAgIFwic25hcC5rYVwiXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBleHByXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgb3V0cHV0c1xuICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAoZmlsZSwgUnVsZV9pbnRlcnByZXRlci5zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IGVudiBjb3VudGVyIGdyYXBoKSlcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5DRkxPVyAobmFtZSwgY2MsIHRlc3RzKSAtPlxuICAgIGxldCBuYW1lID1cbiAgICAgIG1hdGNoIG5hbWUgd2l0aFxuICAgICAgfCBTb21lIHMgLT4gc1xuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiXG4gICAgICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgICAgIGNjXG4gICAgaW5cbiAgICAoIGZhbHNlLFxuICAgICAgUnVsZV9pbnRlcnByZXRlci5hZGRfdHJhY2tlZCB+b3V0cHV0cyBjYyBuYW1lIHRlc3RzIGdyYXBoLFxuICAgICAgc3RhdGUsXG4gICAgICBleHRyYSApXG4gIHwgUHJpbWl0aXZlcy5DRkxPV09GRiAobmFtZSwgY2MpIC0+XG4gICAgZmFsc2UsIFJ1bGVfaW50ZXJwcmV0ZXIucmVtb3ZlX3RyYWNrZWQgY2MgbmFtZSBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBmbiAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgZm4gaW5cbiAgICBmYWxzZSwgUnVsZV9pbnRlcnByZXRlci5yZW1vdmVfdHJhY2tlZF9zcGVjaWVzIGZpbGUgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuRElOIChyZWwsIHMpIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAobmFtZSwgeCkgLT4gZmlsZSA9IG5hbWUgJiYgeC5EYXRhLmRpbl9raW5kID0gcmVsKVxuICAgICAgICAgIHN0YXRlLmZsdXhcbiAgICAgIHRoZW5cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJBdCB0PSVmLCBlPSVpOiB0cmFja2luZyBESU4gaW50byBcXFwiJXNcXFwiIHdhcyBhbHJlYWR5IG9uXCJcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgZmlsZSApKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXRlLmZsdXggPC0gKGZpbGUsIEZsdXhtYXAuY3JlYXRlX2ZsdXggZW52IGNvdW50ZXIgcmVsKSA6OiBzdGF0ZS5mbHV4XG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuRElOT0ZGIHMgLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHMgaW5cbiAgICBsZXQgdGhlc2UsIG90aGVycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIChuYW1lLCBfKSAtPiBuYW1lID0gZmlsZSkgc3RhdGUuZmx1eFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChuYW1lLCB4KSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuRElOIChuYW1lLCBGbHV4bWFwLnN0b3BfZmx1eCBlbnYgY291bnRlciB4KSkpXG4gICAgICAgIHRoZXNlXG4gICAgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5mbHV4IDwtIG90aGVycyBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTIChzLCBjYywgdGVzdHMpIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgKCBmYWxzZSxcbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYWRkX3RyYWNrZWRfc3BlY2llcyBjYyBmaWxlIHRlc3RzIGdyYXBoLFxuICAgICAgc3RhdGUsXG4gICAgICBleHRyYSApXG5cbmxldCByZWMgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm0gZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICBtaXhfY2hhbmdlZCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2UsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWRcbiAgfCBpIDo6IHRhaWwgLT5cbiAgICBsZXQgcGVydCA9IE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IGkgaW5cbiAgICBsZXQgbW9kX2FsYXJtID1cbiAgICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIF8gLT4gaXNfYWxhcm1cbiAgICBpblxuICAgIGlmXG4gICAgICBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihpKVxuICAgICAgJiYgc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpXG4gICAgICAmJiBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgY291bnRlciBncmFwaFxuICAgICAgICAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgICAmJiBtb2RfYWxhcm1cbiAgICB0aGVuIChcbiAgICAgIGxldCBtaXhfY2hhbmdlZCA9IG1peF9jaGFuZ2VkICYmIHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCwgc3RhdGUsIHRhaWwnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSkgYXMgYWNjKSBlZmZlY3QgLT5cbiAgICAgICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgICAgICAgICAgICAgZWZmZWN0KVxuICAgICAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCB0YWlsKVxuICAgICAgICAgIHBlcnQuUHJpbWl0aXZlcy5lZmZlY3RcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gZmFsc2UgaW5cbiAgICAgIGxldCBhbGl2ZSA9XG4gICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCBjb3VudGVyIGdyYXBoIChmc3QgcGVydC5QcmltaXRpdmVzLnJlcGVhdClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBhbGl2ZSAmJiBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gPSBOb25lIHRoZW5cbiAgICAgICAgICBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPC0gaSA6OiBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihpKSA8LSBhbGl2ZSBpblxuICAgICAgbGV0IG1peF9jaGFuZ2VkJyA9IG1peF9jaGFuZ2VkIHx8IHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgaW5cbiAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkJ1xuICAgICAgZWxzZVxuICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgICAgIG1peF9jaGFuZ2VkJyB0YWlsJ1xuICAgICkgZWxzZVxuICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgbWl4X2NoYW5nZWQgdGFpbFxuXG5sZXQgZG9fbW9kaWZpY2F0aW9ucyB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBsaXN0ID1cbiAgbGV0IHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSkgYXMgYWNjKSBlZmZlY3QgLT5cbiAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgYWNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICAgICAgICAgIGVmZmVjdClcbiAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCBbXSkgbGlzdFxuICBpblxuICBpZiBzdG9wIHRoZW5cbiAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGZhbHNlXG4gIGVsc2VcbiAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgZmFsc2UgZXh0cmFcblxubGV0IGluaXRpYWxpemUgfmJpbmQgfnJldHVybiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaDAgc3RhdGUwXG4gICAgaW5pdF9sID1cbiAgbGV0IG1ncmFwaCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gbXN0YXRlIChhbGcsIGNvbXBpbGVkX3J1bGUpIC0+XG4gICAgICAgIGJpbmQgbXN0YXRlIChmdW4gKHN0b3AsIHN0YXRlLCBzdGF0ZTApIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGFsZyBpblxuICAgICAgICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICAgICAgICBjb21waWxlZF9ydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGNyZWF0aW9uc19zb3J0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGwgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKHgsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIHggOjogbFxuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgX1xuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICAgICAgW10gYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAoIHN0b3AsXG4gICAgICAgICAgICAgICAgTmJyLml0ZXJpXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfZ2l2ZW5fcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgcyAoVHJhY2UuSU5JVCBjcmVhdGlvbnNfc29ydCkgY29tcGlsZWRfcnVsZVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUnVsZV9pbnRlcnByZXRlci5TdWNjZXNzIHMgLT4gc1xuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuQ2xhc2ggfCBSdWxlX2ludGVycHJldGVyLkNvcnJlY3RlZFxuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuQmxvY2tlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQnVnZ2VkIGluaXRpYWwgcnVsZVwiKSkpXG4gICAgICAgICAgICAgICAgICBzdGF0ZSB2YWx1ZSxcbiAgICAgICAgICAgICAgICBzdGF0ZTAgKSkpXG4gICAgICAocmV0dXJuIChmYWxzZSwgZ3JhcGgwLCBzdGF0ZTApKVxuICAgICAgaW5pdF9sXG4gIGluXG4gIGJpbmQgbWdyYXBoIChmdW4gKF8sIGdyYXBoLCBzdGF0ZTApIC0+XG4gICAgICBsZXQgbWlkX2dyYXBoLCBfID1cbiAgICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGggW11cbiAgICAgIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgsIHN0YXRlLCBfID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gaSAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWQpIGFzIGFjYykgXyAtPlxuICAgICAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgICAgc3RhdGUgbWl4X2NoYW5nZWQgWyBpIF0pXG4gICAgICAgICAgKGZhbHNlLCBtaWRfZ3JhcGgsIHN0YXRlMCwgZmFsc2UpXG4gICAgICAgICAgc3RhdGUwLnBlcnR1cmJhdGlvbnNfYWxpdmVcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBfIC0+IHN0YXRlMC5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBzdGF0ZTAucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICAgIGluXG4gICAgICByZXR1cm4gKHN0b3AsIGdyYXBoLCBzdGF0ZSkpXG5cbmxldCBvbmVfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgIGluc3RhbmNlID1cbiAgbGV0IHByZXZfYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gIGxldCBhY3Rfc3RhY2sgPSByZWYgW10gaW5cbiAgbGV0IGZpbmFsaXplX3JlZ2lzdHJhdGlvbiBteV9zeW50YXhfcmRfaWQgPVxuICAgIG1hdGNoIHN0YXRlLmZsdXgsIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB3aXRoXG4gICAgfCBbXSwgZmFsc2UgLT4gKClcbiAgICB8IGwsIF8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB0aGVuXG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5EZWx0YUFjdGl2aXRpZXMgKG15X3N5bnRheF9yZF9pZCwgIWFjdF9zdGFjaykpXG4gICAgICBpblxuICAgICAgbGV0IG5fYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChfLCBmbCkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IEZsdXhtYXAuaW5jcl9mbHV4X2hpdCBteV9zeW50YXhfcmRfaWQgZmwgaW5cbiAgICAgICAgICAgIG1hdGNoIGZsLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+XG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChmdW4gKHN5bnRheF9yZF9pZCwgKF8sIG5ld19hY3QpKSAtPlxuICAgICAgICAgICAgICAgICAgRmx1eG1hcC5pbmNyX2ZsdXhfZmx1eCBteV9zeW50YXhfcmRfaWQgc3ludGF4X3JkX2lkXG4gICAgICAgICAgICAgICAgICAgIChsZXQgY2FuZCA9IG5ld19hY3QgLy4gbl9hY3Rpdml0eSBpblxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgY2FuZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFuIGluZmluaXRlIChvciBOYU4pIGFjdGl2aXR5IHZhcmlhdGlvbiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIGlnbm9yZWQgYXQgdD0lZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCApKVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGNhbmQpXG4gICAgICAgICAgICAgICAgICAgIGZsKVxuICAgICAgICAgICAgICAgICFhY3Rfc3RhY2spXG4gICAgICAgICAgbFxuICAgICAgaW5cbiAgICAgIGFjdF9zdGFjayA6PSBbXVxuICBpblxuICAoKiBsZXQgKCkgPSAqKVxuICAoKiAgIEZvcm1hdC5lcHJpbnRmIFwiJWFALlwiIChSdWxlX2ludGVycHJldGVyLnByaW50X2luamVjdGlvbnMgZW52KSBncmFwaCBpbiAqKVxuICBsZXQgYXBwbGllZF9yaWRfc3ludGF4LCBmaW5hbF9zdGVwLCBncmFwaCcgPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgIGVudiBjb3VudGVyIGdyYXBoIGluc3RhbmNlXG4gIGluXG4gIG1hdGNoIGFwcGxpZWRfcmlkX3N5bnRheCB3aXRoXG4gIHwgTm9uZSAtPiBmaW5hbF9zdGVwLCBncmFwaCcsIHN0YXRlXG4gIHwgU29tZSBzeW50YXhfcmlkIC0+XG4gICAgbGV0IHJlZ2lzdGVyX25ld19hY3Rpdml0eSBzeW50YXhfcmRfaWQgb2xkX2FjdCBuZXdfYWN0ID1cbiAgICAgIG1hdGNoIHN0YXRlLmZsdXgsIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB3aXRoXG4gICAgICB8IFtdLCBmYWxzZSAtPiAoKVxuICAgICAgfCBsLCBfIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgYWN0X3N0YWNrIDo9IChzeW50YXhfcmRfaWQsIChvbGRfYWN0LCBuZXdfYWN0KSkgOjogIWFjdF9zdGFja1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChfLCBmbCkgLT5cbiAgICAgICAgICAgIEZsdXhtYXAuaW5jcl9mbHV4X2ZsdXggc3ludGF4X3JpZCBzeW50YXhfcmRfaWRcbiAgICAgICAgICAgICAgKGxldCBjYW5kID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggZmwuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiBuZXdfYWN0IC0uIG9sZF9hY3RcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+IC0uKG9sZF9hY3QgLy4gcHJldl9hY3Rpdml0eSlcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+XG4gICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IG9sZF9hY3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbmFuIHwgRlBfaW5maW5pdGUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAobmV3X2FjdCAtLiBvbGRfYWN0KSAvLiBvbGRfYWN0XG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgbmV3X2FjdCAtLiBvbGRfYWN0XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgY2FuZCB3aXRoXG4gICAgICAgICAgICAgICB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgbGV0IGN0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciBpblxuICAgICAgICAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFuIGluZmluaXRlIChvciBOYU4pIGFjdGl2aXR5IHZhcmlhdGlvbiBoYXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIGlnbm9yZWQgYXQgdD0lZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCApKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGNhbmQpXG4gICAgICAgICAgICAgIGZsKVxuICAgICAgICAgIGxcbiAgICBpblxuICAgIGxldCBmb3JjZV90ZXN0ZWQgPSBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPC0gW10gaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmFfcGVydCA9XG4gICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgIHJlZ2lzdGVyX25ld19hY3Rpdml0eSBlbnYgY291bnRlciBncmFwaCcgZm9yY2VfdGVzdGVkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBmaW5hbGl6ZV9yZWdpc3RyYXRpb24gc3ludGF4X3JpZCBpblxuICAgIGxldCBzdG9wLCBncmFwaCcnJywgc3RhdGUnLCBfbWl4X2NoYW5nZWQgPVxuICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGgnJyBzdGF0ZVxuICAgICAgICBmYWxzZSBleHRyYV9wZXJ0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIF8gLT4gc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgIHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJAWzx2Pk9idGFpbmVkQCAlYUBdQC5cIlxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLnByaW50IGVudilcbiAgICAgICAgICBncmFwaCcnJ1xuICAgIGluXG4gICAgZmluYWxfc3RlcCB8fCBzdG9wLCBncmFwaCcnJywgc3RhdGUnXG5cbmxldCByZWMgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAoc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCkgPVxuICBtYXRjaCBzdGF0ZS5zdG9wcGluZ190aW1lcyB3aXRoXG4gIHwgW10gLT4gc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgZmFsc2VcbiAgfCAodGksIHBlKSA6OiB0YWlsIC0+XG4gICAgaWYgTmJyLmlzX3NtYWxsZXIgdGkgKE5ici5GIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyICsuIGR0KSkgdGhlbiAoXG4gICAgICBsZXQgcGVydCA9IE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlIGluXG4gICAgICBpZiBub3QgcGVydC5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjayB0aGVuIChcbiAgICAgICAgbGV0IHN0b3AnLCBncmFwaCcsIHN0YXRlJywgZHQnID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTmJyLnRvX2Zsb2F0IChOYnIuc3ViIHRpIChOYnIuRiAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcikpKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZHRcbiAgICAgICAgICB8IFNvbWUgZHRpIC0+XG4gICAgICAgICAgICBsZXQgZHQnID0gZHQgLS4gZHRpIGluXG4gICAgICAgICAgICAoKnNldCB0aW1lIGZvciBwZXJ0dXJiYXRlICopXG4gICAgICAgICAgICBpZiBDb3VudGVyLm9uZV90aW1lX2FkdmFuY2UgY291bnRlciBkdGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIF8gPVxuICAgICAgICAgICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgICAgIHN0YXRlIGZhbHNlIFsgcGUgXVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGFpbCcgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IHRhaWxcbiAgICAgICAgICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgICAgICAgICAgaWYgc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4ocGUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgY29tcGFyZV9zdG9wcyBbIE5ici5hZGQgdGkgbiwgcGUgXSB0YWlsXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRhaWxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc3RhdGUnLnN0b3BwaW5nX3RpbWVzIDwtIHRhaWwnIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4ocGUpIDwtIHRydWUgaW5cbiAgICAgICAgICAgICAgKCogQXJndW1lbnQgdG8gcmVzZXQgb25seSBwZSBhbmQgbm90IGFsbCBwZXJ0cyBpcyBcImlmXG4gICAgICAgICAgICAgICAgIHlvdSdyZSBub3QgYmFja3RyYWNraW5nLCBub3RoaW5nIGRlcGVuZHMgdXBvblxuICAgICAgICAgICAgICAgICB5b3VcIi4uLiBXZSdkIGJldHRlciBnZXQgc3VyZSBvZiB0aGF0IDotKSAqKVxuICAgICAgICAgICAgICBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIGR0J1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHRydWUsIGdyYXBoLCBzdGF0ZSwgZHQnXG4gICAgICAgIGluXG5cbiAgICAgICAgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAgICAgICAoc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBkdCcpXG4gICAgICAgICgqIGlmIHNvbWUgcGVydHVyYmF0aW9uIG5lZWRzIGJhY2t0cmFjaywgcmV0dXJuIHRoZSBwZXJ0dXJiYXRpb24gKilcbiAgICAgICkgZWxzZVxuICAgICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCB0cnVlXG4gICAgKSBlbHNlXG4gICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCBmYWxzZVxuXG5sZXQgcGVydHVyYmF0ZV93aXRoX2JhY2t0cmFjayB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKHRpLCBwZSkgOjogdGFpbCAtPlxuICAgIGxldCB0YWlsJyA9XG4gICAgICBtYXRjaCAoTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUpLlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgfCBOb25lIC0+IHRhaWxcbiAgICAgIHwgU29tZSBuIC0+IExpc3RfdXRpbC5tZXJnZV91bmlxIGNvbXBhcmVfc3RvcHMgWyBOYnIuYWRkIHRpIG4sIHBlIF0gdGFpbFxuICAgIGluXG4gICAgbGV0ICgpID0gc3RhdGUuc3RvcHBpbmdfdGltZXMgPC0gdGFpbCcgaW5cbiAgICBpZiBDb3VudGVyLm9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgfnRpIGNvdW50ZXIgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgICAgICBsZXQgY2FuZCA9XG4gICAgICAgICAgICBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIChDb3VudGVyLmZha2VfdGltZSBjb3VudGVyJyB0aW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgICAgIGluXG4gICAgICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdDowLlxuICAgICAgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgXyA9XG4gICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBmYWxzZSBbIHBlIF1cbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBfIC0+IHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICAgIGluXG4gICAgICBzdG9wLCBncmFwaCcsIHN0YXRlJ1xuICAgICkgZWxzZVxuICAgICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlXG5cbmxldCByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlclxuICAgIGdyYXBoIHN0YXRlIGR0ID1cbiAgbGV0ICgpID1cbiAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgIGxldCBjYW5kID1cbiAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICBpblxuICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdFxuICBpblxuICBsZXQgY29udGludWUgPSBDb3VudGVyLm9uZV90aW1lX2FkdmFuY2UgY291bnRlciBkdCBpblxuICBsZXQgcGlja2VkX2luc3RhbmNlID1cbiAgICBSdWxlX2ludGVycHJldGVyLnBpY2tfYW5faW5zdGFuY2UgfmRlYnVnX21vZGUgZW52IGdyYXBoXG4gIGluXG4gIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgbWl4X2NoYW5nZWQgPVxuICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICBmYWxzZSBzdGF0ZS50aW1lX2RlcGVuZGVudF9wZXJ0c1xuICBpblxuICBpZiAobm90IGNvbnRpbnVlKSB8fCBzdG9wIHRoZW5cbiAgICB0cnVlLCBncmFwaCcsIHN0YXRlJ1xuICBlbHNlIGlmXG4gICAgKG5vdCBtaXhfY2hhbmdlZClcbiAgICB8fCBSdWxlX2ludGVycHJldGVyLmlzX2NvcnJlY3RfaW5zdGFuY2UgZW52IGdyYXBoJyBwaWNrZWRfaW5zdGFuY2VcbiAgdGhlblxuICAgIG9uZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyIGdyYXBoJyBzdGF0ZSdcbiAgICAgIHBpY2tlZF9pbnN0YW5jZVxuICBlbHNlXG4gICAgQ291bnRlci5vbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IGNvdW50ZXIsIGdyYXBoJywgc3RhdGUnXG5cbmxldCBhX2xvb3AgfmRlYnVnX21vZGUgfm91dHB1dHMgfmR1bXBJZkRlYWRsb2NrZWQgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52XG4gICAgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGxldCBhY3Rpdml0eSA9IFJ1bGVfaW50ZXJwcmV0ZXIuYWN0aXZpdHkgZ3JhcGggaW5cbiAgbGV0IHJkID0gUmFuZG9tLlN0YXRlLmZsb2F0IChSdWxlX2ludGVycHJldGVyLmdldF9yYW5kb21fc3RhdGUgZ3JhcGgpIDEuMCBpblxuICBsZXQgZHQgPSBhYnNfZmxvYXQgKGxvZyByZCAvLiBhY3Rpdml0eSkgaW5cblxuICBsZXQgb3V0ID1cbiAgICAoKkFjdGl2aXR5IGlzIG51bGwgb3IgZHQgaXMgaW5maW5pdGUqKVxuICAgIGlmIChub3QgKGFjdGl2aXR5ID4gMC4pKSB8fCBjbGFzc2lmeV9mbG9hdCBkdCA9IEZQX2luZmluaXRlIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAoXywgcGUpIC0+XG4gICAgICAgICAgICAoTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUpLlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrKVxuICAgICAgICAgIHN0YXRlLnN0b3BwaW5nX3RpbWVzXG4gICAgICB0aGVuXG4gICAgICAgIHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBzdGF0ZS5zdG9wcGluZ190aW1lc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgZHVtcElmRGVhZGxvY2tlZCB0aGVuXG4gICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgIChEYXRhLlNuYXBzaG90XG4gICAgICAgICAgICAgICAgICggXCJkZWFkbG9jay5rYVwiLFxuICAgICAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdzpmYWxzZSBlbnYgY291bnRlclxuICAgICAgICAgICAgICAgICAgICAgZ3JhcGggKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgXCJBIGRlYWRsb2NrIHdhcyByZWFjaGVkIGFmdGVyICVkIGV2ZW50cyBhbmQgJUVzIChBY3Rpdml0eSBcXFxuICAgICAgICAgICAgICAgICAgICAgID0gJS41ZilcIlxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eSApKVxuICAgICAgICBpblxuICAgICAgICB0cnVlLCBncmFwaCwgc3RhdGVcbiAgICAgIClcbiAgICBlbHNlIChcbiAgICAgICgqYWN0aXZpdHkgaXMgcG9zaXRpdmUqKVxuICAgICAgbWF0Y2ggc3RhdGUuc3RvcHBpbmdfdGltZXMgd2l0aFxuICAgICAgfCAodGksIF8pIDo6IF9cbiAgICAgICAgd2hlbiBOYnIuaXNfc21hbGxlciB0aSAoTmJyLkYgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgKy4gZHQpKSAtPlxuICAgICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIGR0JywgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICBwZXJ0dXJiYXRlX3VudGlsX2ZpcnN0X2JhY2t0cmFjayB+ZGVidWdfbW9kZSBlbnYgY291bnRlciB+b3V0cHV0c1xuICAgICAgICAgICAgKGZhbHNlLCBncmFwaCwgc3RhdGUsIGR0KVxuICAgICAgICBpblxuICAgICAgICBpZiBuZWVkc19iYWNrdHJhY2sgdGhlblxuICAgICAgICAgIHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGgnXG4gICAgICAgICAgICBzdGF0ZScgc3RhdGUnLnN0b3BwaW5nX3RpbWVzXG4gICAgICAgIGVsc2UgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgc3RvcCwgZ3JhcGgnLCBzdGF0ZSdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudlxuICAgICAgICAgICAgY291bnRlciBncmFwaCcgc3RhdGUnIGR0J1xuICAgICAgfCBfIC0+XG4gICAgICAgIHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyXG4gICAgICAgICAgZ3JhcGggc3RhdGUgZHRcbiAgICApXG4gIGluXG4gIG91dFxuXG5sZXQgZW5kX29mX3NpbXVsYXRpb24gfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBsZXQgXyA9IHN0YXRlLmluaXRfc3RvcHBpbmdfdGltZXMgaW5cbiAgbGV0ICgpID1cbiAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgIGxldCBjYW5kID1cbiAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICBpblxuICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdDowLlxuICBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChuYW1lLCBlKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJUcmFja2luZyBESU4gaW50byBcXFwiJXNcXFwiIHdhcyBub3Qgc3RvcHBlZCBiZWZvcmUgZW5kIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgIG5hbWUgKSlcbiAgICAgIGluXG4gICAgICBvdXRwdXRzIChEYXRhLkRJTiAobmFtZSwgRmx1eG1hcC5zdG9wX2ZsdXggZW52IGNvdW50ZXIgZSkpKVxuICAgIHN0YXRlLmZsdXhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdGUgPSB7XG4gIGdyYXBoOiBFZGdlcy50O1xuICB0aW1lOiBmbG9hdDtcbiAgZXZlbnQ6IGludDtcbiAgY29ubmVjdGVkX2NvbXBvbmVudHM6IEFnZW50LlNldE1hcC5TZXQudCBNb2RzLkludE1hcC50IG9wdGlvbjtcbn1cblxudHlwZSBzdW1tYXJ5ID0geyB1bmFyeV9kaXN0YW5jZXM6IChpbnQgKiBpbnQpIG9wdGlvbiB9XG5cbmxldCBpbml0X3N0YXRlIH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID1cbiAge1xuICAgIGdyYXBoID0gRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgdGltZSA9IDAuO1xuICAgIGV2ZW50ID0gMDtcbiAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICAoaWYgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyB0aGVuXG4gICAgICAgICBTb21lIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAgZWxzZVxuICAgICAgICAgTm9uZSk7XG4gIH1cblxubGV0IGNjX29mX2FnZW50IGFnIGUgd29yayA9XG4gIGxldCByZWMgZm9sZF9hcml0eV9saXN0IGYgeCBhcml0eSBhY2MgPVxuICAgIGlmIHggPSBhcml0eSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBmb2xkX2FyaXR5X2xpc3QgZiAoc3VjYyB4KSBhcml0eSAoZiBhY2MgeClcbiAgaW5cblxuICBsZXQgYWRkX2FnZW50IGEgZSAod29yaywgbW9ycGhpc20sIHRvZG9zKSA9XG4gICAgbGV0IGFpZCA9IEFnZW50LmlkIGEgaW5cbiAgICBsZXQgYXR5cGUgPSBBZ2VudC5zb3J0IGEgaW5cbiAgICBsZXQgYXJpdHkgPSBFZGdlcy5nZXRfc2l0ZXMgYWlkIGUgaW5cbiAgICBsZXQgd19hZ2VudCwgd29yaycgPSBQYXR0ZXJuLm5ld19ub2RlIHdvcmsgYXR5cGUgaW5cbiAgICBsZXQgdG9kb3MnID0gZm9sZF9hcml0eV9saXN0IChmdW4gYWNjIHggLT4gKGFpZCwgeCkgOjogYWNjKSAwIGFyaXR5IHRvZG9zIGluXG4gICAgbGV0IHdvcmsnJyA9XG4gICAgICBmb2xkX2FyaXR5X2xpc3RcbiAgICAgICAgKGZ1biB3IHggLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBpbnRlcm5hbCA9IEVkZ2VzLmdldF9pbnRlcm5hbCBhaWQgeCBlIGluXG4gICAgICAgICAgICBQYXR0ZXJuLm5ld19pbnRlcm5hbF9zdGF0ZSB3ICh3X2FnZW50LCB4KSBpbnRlcm5hbFxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IHcpXG4gICAgICAgIDAgYXJpdHkgd29yaydcbiAgICBpblxuICAgIHdfYWdlbnQsIHdvcmsnJywgKGFpZCwgd19hZ2VudCkgOjogbW9ycGhpc20sIHRvZG9zJ1xuICBpblxuXG4gIGxldCBhZGRfbGlua3MgKHdvcmssIG1vcnBoaXNtLCB0b2RvcykgKGFpZCwgeCkgZSA9XG4gICAgbGV0IF8sIHdfYWdlbnQgPSBMaXN0LmZpbmQgKGZ1biAoaWQsIF8pIC0+IGlkID0gYWlkKSBtb3JwaGlzbSBpblxuICAgIGxldCBub3RfYWdlbnQgKGlkLCBzKSA9IG5vdCAoaWQgPSBhaWQgJiYgeCA9IHMpIGluXG4gICAgbWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBhaWQgeCBlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCB3b3JrJyA9IFBhdHRlcm4ubmV3X2ZyZWUgd29yayAod19hZ2VudCwgeCkgaW5cbiAgICAgIGxldCB0b2RvcycgPSBMaXN0LmZpbHRlciBub3RfYWdlbnQgdG9kb3MgaW5cbiAgICAgIHdvcmsnLCBtb3JwaGlzbSwgdG9kb3MnXG4gICAgfCBTb21lIChiLCB5KSAtPlxuICAgICAgbGV0IGJpZCA9IEFnZW50LmlkIGIgaW5cbiAgICAgIGxldCBub3RfYWdlbnRzIChpZCwgcykgPVxuICAgICAgICBub3RfYWdlbnQgKGlkLCBzKSAmJiBub3QgKGlkID0gQWdlbnQuaWQgYiAmJiBzID0geSlcbiAgICAgIGluXG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgXywgd2JfYWdlbnQgPSBMaXN0LmZpbmQgKGZ1biAoaWQsIF8pIC0+IGlkID0gYmlkKSBtb3JwaGlzbSBpblxuICAgICAgICAgbGV0IHdvcmsnID0gUGF0dGVybi5uZXdfbGluayB3b3JrICh3X2FnZW50LCB4KSAod2JfYWdlbnQsIHkpIGluXG4gICAgICAgICBsZXQgdG9kb3MnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50cyB0b2RvcyBpblxuICAgICAgICAgd29yaycsIG1vcnBoaXNtLCB0b2RvcydcbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgbGV0IHdiX2FnZW50LCB3b3JrJywgbW9ycGhpc20nLCB0b2RvcycgPVxuICAgICAgICAgICBhZGRfYWdlbnQgYiBlICh3b3JrLCBtb3JwaGlzbSwgdG9kb3MpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHdvcmsnJyA9IFBhdHRlcm4ubmV3X2xpbmsgd29yaycgKHdfYWdlbnQsIHgpICh3Yl9hZ2VudCwgeSkgaW5cbiAgICAgICAgIGxldCB0b2RvcycnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50cyB0b2RvcycgaW5cbiAgICAgICAgIHdvcmsnJywgbW9ycGhpc20nLCB0b2RvcycnKVxuICBpblxuXG4gIGxldCByZWMgd29ya2luZ190b2RvICh3b3JrLCBtb3JwaGlzbSwgdG9kbykgPVxuICAgIG1hdGNoIHRvZG8gd2l0aFxuICAgIHwgW10gLT4gbW9ycGhpc20sIHdvcmtcbiAgICB8IHBvcnQgOjogXyAtPlxuICAgICAgbGV0IHdvcmsnLCBtb3JwaGlzbScsIHRvZG8nID0gYWRkX2xpbmtzICh3b3JrLCBtb3JwaGlzbSwgdG9kbykgcG9ydCBlIGluXG4gICAgICB3b3JraW5nX3RvZG8gKHdvcmsnLCBtb3JwaGlzbScsIHRvZG8nKVxuICBpblxuXG4gIGxldCBfLCB3LCBtLCB0ID0gYWRkX2FnZW50IGFnIGUgKHdvcmssIFtdLCBbXSkgaW5cbiAgd29ya2luZ190b2RvICh3LCBtLCB0KVxuXG5sZXQgY2Nfb2Zfc3RhdGUgfmRlYnVnX21vZGUgcyBlbnYgPVxuICBsZXQgY2Nfb2Zfcm9vdCBhZ2VudCBlJyA9XG4gICAgbGV0IHdvcmsgPSBQYXR0ZXJuLmJlZ2luX25ldyBlJyBpblxuICAgIGxldCBtb3JwaGlzbSwgd29yaycgPSBjY19vZl9hZ2VudCBhZ2VudCBzLmdyYXBoIHdvcmsgaW5cbiAgICBsZXQgZW4sIF8sIGMsIGkgPSBQYXR0ZXJuLmZpbmlzaF9uZXcgfmRlYnVnX21vZGUgd29yaycgaW5cbiAgICBlbiwgTGlzdC5tYXAgKGZ1biAoY2lkLCAoYWlkLCBfKSkgLT4gY2lkLCBhaWQpIG1vcnBoaXNtLCBjLCBpXG4gIGluXG4gIG1hdGNoIHMuY29ubmVjdGVkX2NvbXBvbmVudHMgd2l0aFxuICB8IFNvbWUgY2NfbWFwcyAtPlxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gcm9vdCBjY19tYXAgKGUsIGFjYykgLT5cbiAgICAgICAgQWdlbnQuU2V0TWFwLlNldC5mb2xkXG4gICAgICAgICAgKGZ1biBhZ2VudCAoZScsIGFjYycpIC0+XG4gICAgICAgICAgICBpZiBBZ2VudC5pZCBhZ2VudCA9IHJvb3QgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlbiwgciwgYywgaSA9IGNjX29mX3Jvb3QgYWdlbnQgZScgaW5cbiAgICAgICAgICAgICAgZW4sIChyLCBjLCBpKSA6OiBhY2MnXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZScsIGFjYycpXG4gICAgICAgICAgY2NfbWFwIChlLCBhY2MpKVxuICAgICAgY2NfbWFwcyAoZW52LCBbXSlcbiAgfCBOb25lIC0+IGVudiwgW11cblxubGV0IGJyZWFrX2FwYXJ0X2NjIGdyYXBoIGNjcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBjY3NcbiAgfCBTb21lIChvcmlnaW5fY2MsIG5ld19jYykgLT5cbiAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IEFnZW50LlNldE1hcC5TZXQuZW1wdHkgb3JpZ2luX2NjIGNjcyBpblxuICAgIGlmIEFnZW50LlNldE1hcC5TZXQuaXNfZW1wdHkgc2V0IHRoZW5cbiAgICAgIGNjc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zZXQsIG9zZXQnID1cbiAgICAgICAgQWdlbnQuU2V0TWFwLlNldC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuICh4LCBfKSAtPiBFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCB4IGdyYXBoID0gU29tZSBuZXdfY2MpXG4gICAgICAgICAgc2V0XG4gICAgICBpblxuICAgICAgTW9kcy5JbnRNYXAuYWRkIG5ld19jYyBuc2V0IChNb2RzLkludE1hcC5hZGQgb3JpZ2luX2NjIG9zZXQnIGNjcylcbiAgICApXG5cbmxldCBtZXJnZV9jYyBjY3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gY2NzXG4gIHwgU29tZSAoY2MxLCBjYzIpIC0+XG4gICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgQWdlbnQuU2V0TWFwLlNldC5lbXB0eSBjYzEgY2NzIGluXG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBjYzIgY2NzIHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gY2NzXG4gICAgfCBTb21lIHNldDIsIGNjcycgLT5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBjYzEgKEFnZW50LlNldE1hcC5TZXQudW5pb24gc2V0MSBzZXQyKSBjY3MnKVxuXG5sZXQgZG9fbmVnYXRpdmVfcGFydCAoKGEsIF8pLCBzKSAoZ3JhcGgsIGNjcykgPVxuICBtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGEgcyBncmFwaCB3aXRoXG4gIHwgTm9uZSAtPiBFZGdlcy5yZW1vdmVfZnJlZSBhIHMgZ3JhcGgsIGNjc1xuICB8IFNvbWUgKChhJywgXyksIHMnKSAtPlxuICAgIGxldCBncmFwaCcsIGNjX2NoYW5nZSA9IEVkZ2VzLnJlbW92ZV9saW5rIGEgcyBhJyBzJyBncmFwaCBpblxuICAgICggZ3JhcGgnLFxuICAgICAgKG1hdGNoIGNjcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPiBTb21lIChicmVha19hcGFydF9jYyBncmFwaCcgY2NzIGNjX2NoYW5nZSkpIClcblxubGV0IGRvX2FjdGlvbiBzaWdzICgoZ3JhcGgsIGNjcykgYXMgcGFjaykgPSBmdW5jdGlvblxuICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKGlkLCB0eSkgYXMgYWcpLCBfZ3JhcGhzKSAtPlxuICAgICggc25kIEBAIEVkZ2VzLmFkZF9hZ2VudCB+aWQgc2lncyB0eSBncmFwaCxcbiAgICAgIE9wdGlvbl91dGlsLm1hcCAoTW9kcy5JbnRNYXAuYWRkIGlkIChBZ2VudC5TZXRNYXAuU2V0LnNpbmdsZXRvbiBhZykpIGNjcyApXG4gIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKCgoYSwgXyksIHMpLCBpKSAtPlxuICAgIEVkZ2VzLmFkZF9pbnRlcm5hbCBhIHMgaSBncmFwaCwgY2NzXG4gIHwgSW5zdGFudGlhdGlvbi5CaW5kICgoKGExLCBzMSkgYXMgeDEpLCAoKGEyLCBzMikgYXMgeDIpKVxuICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoKChhMSwgczEpIGFzIHgxKSwgKChhMiwgczIpIGFzIHgyKSkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID0gZG9fbmVnYXRpdmVfcGFydCB4MiAoZG9fbmVnYXRpdmVfcGFydCB4MSBwYWNrKSBpblxuICAgIGxldCBncmFwaCcnLCBjY19jaGFuZ2UgPSBFZGdlcy5hZGRfbGluayBhMSBzMSBhMiBzMiBncmFwaCcgaW5cbiAgICAoIGdyYXBoJycsXG4gICAgICAobWF0Y2ggY2NzJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcycgLT4gU29tZSAobWVyZ2VfY2MgY2NzJyBjY19jaGFuZ2UpKSApXG4gIHwgSW5zdGFudGlhdGlvbi5GcmVlICgoKGEsIF8pLCBzKSBhcyB4KSAtPlxuICAgIGxldCBncmFwaCcsIGNjcycgPSBkb19uZWdhdGl2ZV9wYXJ0IHggcGFjayBpblxuICAgIEVkZ2VzLmFkZF9mcmVlIGEgcyBncmFwaCcsIGNjcydcbiAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKGlkLCB0eSkgYXMgYSkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID1cbiAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgIChmdW4gc3QgcyAtPiBkb19uZWdhdGl2ZV9wYXJ0IChhLCBzKSBzdClcbiAgICAgICAgcGFjayAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkpXG4gICAgaW5cbiAgICAobWF0Y2ggY2NzJyB3aXRoXG4gICAgfCBOb25lIC0+IEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBncmFwaCcsIE5vbmVcbiAgICB8IFNvbWUgY2NzJyAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpZCBjY3MnIHdpdGhcbiAgICAgIHwgTm9uZSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSB4LCBjY3MnJyAtPlxuICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKEFnZW50LlNldE1hcC5TZXQuaXNfc2luZ2xldG9uIHgpIGluXG4gICAgICAgIEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBncmFwaCcsIFNvbWUgY2NzJycpKVxuXG5sZXQgaW52b2x2ZWRfYWdlbnRzIGwgPVxuICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYSAtPiBTb21lIGFcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gX1xuICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgXyAtPlxuICAgICAgICBOb25lKVxuICAgIGxcblxubGV0IHN0b3JlX2Rpc3RhbmNlcyByIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBbXSB8IFsgXyBdIHwgXyA6OiBfIDo6IF8gOjogXyAtPiBOb25lXG4gIHwgWyBjYzE7IGNjMiBdIC0+XG4gICAgbGV0IGNjMV9hZ3MgPSBpbnZvbHZlZF9hZ2VudHMgY2MxIGluXG4gICAgbGV0IGNjMl9hZ3MgPSBpbnZvbHZlZF9hZ2VudHMgY2MyIGluXG4gICAgKG1hdGNoIEVkZ2VzLmFyZV9jb25uZWN0ZWQgZ3JhcGggY2MxX2FncyBjYzJfYWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwYXRoIC0+IFNvbWUgKHIsIExpc3QubGVuZ3RoIHBhdGgpKVxuXG5sZXQgdGVzdF9wYXNzX29uIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWcgLT4gRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoKGFnLCBzKSwgc3QpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgRWRnZXMuaXNfaW50ZXJuYWwgc3QgKEFnZW50LmlkIGFnKSBzIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIChhZywgcykgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBFZGdlcy5pc19mcmVlIChBZ2VudC5pZCBhZykgcyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgKGFnLCBzKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIG5vdCAoRWRnZXMuaXNfZnJlZSAoQWdlbnQuaWQgYWcpIHMgZ3JhcGgpXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoKGFnLCBzKSwgKGFnJywgcycpKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIEVkZ2VzLmlzX2FnZW50IGFnJyBncmFwaFxuICAgICYmIEVkZ2VzLmxpbmtfZXhpc3RzIChBZ2VudC5pZCBhZykgcyAoQWdlbnQuaWQgYWcnKSBzJyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoKGFnLCBzKSwgKGFnX3R5LCBzJykpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGhcbiAgICAmJlxuICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIChBZ2VudC5pZCBhZykgcyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lICgoXywgZHN0X2FnX3R5KSwgZHN0X3MpIC0+IGRzdF9hZ190eSA9IGFnX3R5ICYmIGRzdF9zID0gcycpXG5cbmxldCB0ZXN0c19wYXNzX29uIGdyYXBoIHRlc3RzID1cbiAgTGlzdC5mb3JfYWxsICh0ZXN0X3Bhc3Nfb24gZ3JhcGgpIChMaXN0LmNvbmNhdCB0ZXN0cylcblxubGV0IGlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMgZ3JhcGggPSBmdW5jdGlvblxuICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkluaXQgXyB8IFRyYWNlLlBlcnQgXyB8IFRyYWNlLkR1bW15IF8gLT4gdHJ1ZVxuICB8IFRyYWNlLlJ1bGUgKF9yLCBldmVudCwgX2luZm8pIC0+XG4gICAgdGVzdHNfcGFzc19vbiBncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzXG4gIHwgVHJhY2UuT2JzIChfLCB0ZXN0cywgXykgLT4gdGVzdHNfcGFzc19vbiBncmFwaCB0ZXN0c1xuXG5sZXQgaXNfc3RlcF90cmlnZ2VyYWJsZSBzdGF0ZSA9IGlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMgc3RhdGUuZ3JhcGhcblxuKCogVGhlcmUgaXMgYSBzdWJ0ZWx0eSB3aGVuIGV4ZWN1dGluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMuIEluZGVlZCxcbiAgIHdoZW5ldmVyIGEgcnVsZSBib3RoIGNyZWF0ZXMgYW5kIHJlbW92ZXMgYWdlbnRzLCB0aGVyZSBpcyBjdXJyZW50bHlcbiAgIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBjcmVhdGlvbiBhY3Rpb25zIGFyZSBwbGFjZWQgYmVmb3JlIHRoZSByZW1vdmFsXG4gICBhY3Rpb25zIGluIFtldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNdLiBUaGlzIGNhbiBiZSBhbiBpc3N1ZSBpbiBhXG4gICBjYXNlIHdoZXJlIGFuIGV2ZW50IHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdHdvIGFjdGlvbnMgZm9yIGV4YW1wbGU6XG4gICBbXCJjcmVhdGUgYWdlbnQgd2l0aCBpZCA4XCIsIFwicmVtb3ZlIGFnZW50IHdpdGggaWQgOFwiXS4gSW4gdGhpcyBjYXNlLFxuICAgYWdlbnQgaWQgOCBpcyBub3QgYXZhaWxhYmxlIHdoZW4gdGhlIGNyZWF0aW9uIGFjdGlvbiBpcyBwZXJmb3JtZWQgYW5kXG4gICBzbyB0aGUgW0VkZ2VzXSBtb2R1bGUgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cblxuICAgQXMgYSB0ZW1wb3JhcnkgZml4LCB3ZSBtYWtlIHN1cmUgdGhhdCBhbGwgZGVsZXRpb24gYWN0aW9ucyBhcmVcbiAgIGV4ZWN1dGVkIGZpcnN0LiBUaGlzIGltcGxpY2l0bHkgYXNzdW1lcyB0aGF0IGEgc3RlcCBkZWxldGluZyBhbiBhZ2VudFxuICAgY2Fubm90IHBlcmZvcm0gYW55IG90aGVyIGFjdGlvbiBpbnZvbHZpbmcgdGhpcyBhZ2VudC5cblxuICAgVE9ETzogU2hvdWxkbid0IHdlIHJhdGhlciBlbnN1cmUgdGhhdCBhY3Rpb25zIGFyZSBwcm9wZXJseSBzb3J0ZWQgaW5cbiAgIHRoZSB0cmFjZSBmaWxlIGluIHRoZSBmaXJzdCBwbGFjZT8gKilcbmxldCBkb19hY3Rpb25zIHNpZ3Mgc3QgYWN0aW9ucyA9XG4gIGxldCBpc19yZW1vdmFsID1cbiAgICBsZXQgb3BlbiBJbnN0YW50aWF0aW9uIGluXG4gICAgZnVuY3Rpb25cbiAgICB8IFJlbW92ZSBfIC0+IHRydWVcbiAgICB8IENyZWF0ZSBfIHwgTW9kX2ludGVybmFsIF8gfCBCaW5kIF8gfCBCaW5kX3RvIF8gfCBGcmVlIF8gLT4gZmFsc2VcbiAgaW5cbiAgbGV0IHJlbW92YWxzLCBvdGhlcnMgPSBMaXN0LnBhcnRpdGlvbiBpc19yZW1vdmFsIGFjdGlvbnMgaW5cbiAgbGV0IGRvX2luX29yZGVyIGFjdGlvbnMgc3QgPSBMaXN0LmZvbGRfbGVmdCAoZG9fYWN0aW9uIHNpZ3MpIHN0IGFjdGlvbnMgaW5cbiAgc3QgfD4gZG9faW5fb3JkZXIgcmVtb3ZhbHMgfD4gZG9faW5fb3JkZXIgb3RoZXJzXG5cbmxldCBkb19zdGVwIHNpZ3Mgc3RhdGUgPSBmdW5jdGlvblxuICB8IFRyYWNlLlN1YnMgXyAtPiBzdGF0ZSwgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH1cbiAgfCBUcmFjZS5SdWxlIChraW5kLCBldmVudCwgaW5mbykgLT5cbiAgICBsZXQgdW5hcnlfZGlzdGFuY2VzID1cbiAgICAgIGlmIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzID0gTm9uZSB0aGVuXG4gICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgc3RvcmVfZGlzdGFuY2VzIGtpbmQgc3RhdGUuZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICAgIGluXG4gICAgbGV0IHByZWdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3NcbiAgICAgICAgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cylcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgZ3JhcGggPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBncmFwaCAoKGlkLCBfKSwgcykgLT4gRWRnZXMuYWRkX2ZyZWUgaWQgcyBncmFwaClcbiAgICAgICAgcHJlZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGg7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgICB0aW1lID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgZXZlbnQgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudDtcbiAgICAgIH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyB9IClcbiAgfCBUcmFjZS5QZXJ0IChfLCBldmVudCwgaW5mbykgLT5cbiAgICBsZXQgcHJlZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lnc1xuICAgICAgICAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBncmFwaCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGdyYXBoICgoaWQsIF8pLCBzKSAtPiBFZGdlcy5hZGRfZnJlZSBpZCBzIGdyYXBoKVxuICAgICAgICBwcmVncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICBpblxuICAgICgge1xuICAgICAgICBncmFwaDtcbiAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICAgIHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lO1xuICAgICAgICBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICBsZXQgZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lncyAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKSBhY3Rpb25zXG4gICAgaW5cbiAgICAoIHsgZ3JhcGg7IGNvbm5lY3RlZF9jb21wb25lbnRzOyB0aW1lID0gc3RhdGUudGltZTsgZXZlbnQgPSBzdGF0ZS5ldmVudCB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLk9icyAoXywgXywgaW5mbykgLT5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGggPSBzdGF0ZS5ncmFwaDtcbiAgICAgICAgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQ7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID0gc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLkR1bW15IF8gLT4gc3RhdGUsIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN5bnRheF92ZXJzaW9uID0gVjMgfCBWNFxuXG5sZXQgbWVyZ2VfdmVyc2lvbiBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBWNCwgXyB8IF8sIFY0IC0+IFY0XG4gIHwgVjMsIFYzIC0+IFYzXG5cbnR5cGUgaW50ZXJuYWwgPSBzdHJpbmcgb3B0aW9uIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSBwb3J0ID0ge1xuICBwb3J0X25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgcG9ydF9pbnQ6IGludGVybmFsO1xuICBwb3J0X2ludF9tb2Q6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb247XG4gIHBvcnRfbGluazogKHN0cmluZyBMb2MuYW5ub3RlZCwgdW5pdCkgTEthcHBhLmxpbmsgTG9jLmFubm90ZWQgbGlzdDtcbiAgcG9ydF9saW5rX21vZDogaW50IExvYy5hbm5vdGVkIG9wdGlvbiBvcHRpb247XG59XG5cbigqIFRPRE8gY2hhbmdlIG5hbWUsIENWQVIgaXMgbm90IGEgdGVzdD8gKilcbigqIFRPRE8gZGlzY3JpbWluYXRlIGJldHdlZW4gY291bnRlciBkZWZpbml0aW9uIGFuZCBjb3VudGVyIHRlc3QgPyAqKVxuKCogVE9ETzogY2hhbmdlIHRoaXMgdG8gQ1RZUEUgPSBDVEVTVCAoQ1RFU1RUWVBFICogaW50KSB8IENWQVIgc3RyaW5nPyAqKVxuXG50eXBlIGNvdW50ZXJfdGVzdCA9IENFUSBvZiBpbnQgfCBDR1RFIG9mIGludCB8IENMVEUgb2YgaW50IHwgQ1ZBUiBvZiBzdHJpbmdcblxudHlwZSBjb3VudGVyID0ge1xuICBjb3VudGVyX25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgY291bnRlcl90ZXN0OiBjb3VudGVyX3Rlc3QgTG9jLmFubm90ZWQgb3B0aW9uO1xuICAgICAgKCoqIEluIGEgcnVsZTogd2hhdCB0ZXN0IGlzIGRvbmUsIGluIGFuIGFnZW50IGRlY2xhcmF0aW9uOiB0aGUgbWluIHZhbHVlLCBpbiBhbiBpbml0IGRlY2xhcmF0aW9uOiB0aGUgaW5pdCB2YWx1ZSwgTm9uZSBpZiBhYnNlbnQgKilcbiAgY291bnRlcl9kZWx0YTogaW50IExvYy5hbm5vdGVkO1xuICAgICAgKCoqIEluIGEgcnVsZTogY2hhbmdlIGluIGNvdW50ZXIgdmFsdWUsIGluIGFuIGFnZW50IGRlY2xhcmF0aW9uOiBtYXggdmFsdWUgb2YgdGhlIGNvdW50ZXIsIDAgaWYgYWJzZW50ICopXG59XG5cbmxldCBjb3VudGVyX3NpZ19vZl9jb3VudGVyIChjIDogY291bnRlcikgOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnID1cbiAgbGV0IChjb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfc2lnX2RlZmF1bHQpIDogKGludCBvcHRpb24gKiBMb2MudCkgb3B0aW9uICogaW50XG4gICAgICA9XG4gICAgbWF0Y2ggYy5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgIHwgU29tZSAoQ0VRIGksIGxvYykgLT4gU29tZSAoU29tZSBpLCBsb2MpLCBpXG4gICAgfCBOb25lIHwgU29tZSAoKENHVEUgXyB8IENMVEUgXyB8IENWQVIgXyksIF8pIC0+IE5vbmUsIDBcbiAgaW5cbiAgbGV0IGNvdW50ZXJfc2lnX21heCA9XG4gICAgbWF0Y2ggYy5jb3VudGVyX2RlbHRhIHdpdGhcbiAgICB8IGksIGxvYyAtPiBTb21lIChTb21lIGksIGxvYylcbiAgaW5cbiAge1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9IGMuY291bnRlcl9uYW1lO1xuICAgIGNvdW50ZXJfc2lnX21pbjtcbiAgICBjb3VudGVyX3NpZ19tYXg7XG4gICAgY291bnRlcl9zaWdfZGVmYXVsdDtcbiAgICBjb3VudGVyX3NpZ192aXNpYmxlID0gRnJvbV9vcmlnaW5hbF9hc3Q7XG4gIH1cblxudHlwZSAnY291bnRlciBzaXRlID0gUG9ydCBvZiBwb3J0IHwgQ291bnRlciBvZiAnY291bnRlclxuXG5sZXQgbWFwX2NvdW50ZXJzX2luX3NpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgUG9ydCBfIGFzIHggLT4geFxuICB8IENvdW50ZXIgY28gLT4gQ291bnRlciAoZiBjbylcblxudHlwZSBhZ2VudF9tb2QgPSBOb01vZCB8IEVyYXNlIHwgQ3JlYXRlXG5cbnR5cGUgJ2NvdW50ZXIgcGFyYW1ldHJpY19hZ2VudCA9XG4gIHwgUHJlc2VudCBvZiBzdHJpbmcgTG9jLmFubm90ZWQgKiAnY291bnRlciBzaXRlIGxpc3QgKiBhZ2VudF9tb2RcbiAgfCBBYnNlbnQgb2YgTG9jLnRcblxudHlwZSBhZ2VudCA9IGNvdW50ZXIgcGFyYW1ldHJpY19hZ2VudFxudHlwZSBhZ2VudF9zaWcgPSBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnIHBhcmFtZXRyaWNfYWdlbnRcblxuKCogVE9ETzogZG9jdW1lbnQgd2h5IGxpc3QgbGlzdCAqKVxudHlwZSBtaXh0dXJlID0gYWdlbnQgbGlzdCBsaXN0XG5cbnR5cGUgZWRpdF9ub3RhdGlvbiA9IHtcbiAgbWl4OiBtaXh0dXJlO1xuICBkZWx0YV90b2tlbjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdDtcbn1cblxudHlwZSBhcnJvd19ub3RhdGlvbiA9IHtcbiAgbGhzOiBtaXh0dXJlO1xuICBybV90b2tlbjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdDtcbiAgcmhzOiBtaXh0dXJlO1xuICBhZGRfdG9rZW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQpIGxpc3Q7XG59XG5cbnR5cGUgcnVsZV9jb250ZW50ID0gRWRpdCBvZiBlZGl0X25vdGF0aW9uIHwgQXJyb3cgb2YgYXJyb3dfbm90YXRpb25cblxudHlwZSBydWxlID0ge1xuICByZXdyaXRlOiBydWxlX2NvbnRlbnQ7XG4gIGJpZGlyZWN0aW9uYWw6IGJvb2w7XG4gIGtfZGVmOiAobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkO1xuICBrX3VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gICAgKiAobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICBvcHRpb247XG4gICgqa18xOnJhZGl1c19vcHQqKVxuICBrX29wOiAobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbjtcbiAga19vcF91bjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICAgICogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgb3B0aW9uO1xuICAgICAgKCpyYXRlIGZvciBiYWNrd2FyZCBydWxlKilcbn1cblxubGV0IGZsaXBfbGFiZWwgc3RyID0gc3RyIF4gXCJfb3BcIlxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIG1vZGlmX2V4cHIgPVxuICB8IEFQUExZIG9mICgoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqICdydWxlIExvYy5hbm5vdGVkKVxuICB8IFVQREFURSBvZiAoJ2lkIExvYy5hbm5vdGVkICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQpXG4gIHwgU1RPUCBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IFNOQVBTSE9UIG9mIGJvb2wgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IFBSSU5UIG9mXG4gICAgICAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICAgICAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IFBMT1RFTlRSWVxuICB8IENGTE9XTEFCRUwgb2YgKGJvb2wgKiBzdHJpbmcgTG9jLmFubm90ZWQpXG4gIHwgQ0ZMT1dNSVggb2YgKGJvb2wgKiAncGF0dGVybiBMb2MuYW5ub3RlZClcbiAgfCBESU4gb2ZcbiAgICAgIFByaW1pdGl2ZXMuZGluX2tpbmRcbiAgICAgICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBESU5PRkYgb2YgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBTUEVDSUVTX09GIG9mXG4gICAgICBib29sXG4gICAgICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gICAgICAqICdwYXR0ZXJuIExvYy5hbm5vdGVkXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uID1cbiAgKE5ici50IG9wdGlvblxuICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkIG9wdGlvblxuICAqICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIG1vZGlmX2V4cHIgbGlzdFxuICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgTG9jLmFubm90ZWRcblxudHlwZSBjb25maWd1cmF0aW9uID0gc3RyaW5nIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmID1cbiAgc3RyaW5nIExvYy5hbm5vdGVkICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcblxudHlwZSAoJ21peHR1cmUsICdpZCkgaW5pdF90ID1cbiAgfCBJTklUX01JWCBvZiAnbWl4dHVyZSBMb2MuYW5ub3RlZFxuICB8IElOSVRfVE9LIG9mICdpZCBMb2MuYW5ub3RlZCBsaXN0XG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkKSBpbml0X3N0YXRlbWVudCA9XG4gICgqICBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogKCp2b2x1bWUqKSopXG4gICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogKCdtaXh0dXJlLCAnaWQpIGluaXRfdFxuXG50eXBlICgnYWdlbnQsICdhZ2VudF9pZCwgJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBpbnN0cnVjdGlvbiA9XG4gIHwgU0lHIG9mICdhZ2VudF9pZFxuICB8IFRPS0VOU0lHIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuICB8IFZPTFNJRyBvZiBzdHJpbmcgKiBmbG9hdCAqIHN0cmluZyAoKiB0eXBlLCB2b2x1bWUsIHBhcmFtZXRlciopXG4gIHwgSU5JVCBvZiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50XG4gICgqdm9sdW1lLCBpbml0LCBwb3NpdGlvbiAqKVxuICB8IERFQ0xBUkUgb2YgKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZlxuICB8IE9CUyBvZiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkqKVxuICB8IFBMT1Qgb2YgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgfCBQRVJUIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIHBlcnR1cmJhdGlvblxuICB8IENPTkZJRyBvZiBjb25maWd1cmF0aW9uXG4gIHwgUlVMRSBvZiAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqICdydWxlIExvYy5hbm5vdGVkKVxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGNvbW1hbmQgPVxuICB8IFJVTiBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZFxuICB8IE1PRElGWSBvZiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBtb2RpZl9leHByIGxpc3RcbiAgfCBRVUlUXG5cbnR5cGUgKCdhZ2VudCwgJ2FnZW50X3NpZywgJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBjb21waWwgPSB7XG4gIGZpbGVuYW1lczogc3RyaW5nIGxpc3Q7XG4gIHZhcmlhYmxlczogKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZiBsaXN0O1xuICAgICAgKCoqIHBhdHRlcm4gZGVjbGFyYXRpb24gZm9yIHJldXNpbmcgYXMgdmFyaWFibGUgaW4gcGVydHVyYmF0aW9uc1xuICAgIG9yIGtpbmV0aWMgcmF0ZSAqKVxuICBzaWduYXR1cmVzOiAnYWdlbnRfc2lnIGxpc3Q7ICAoKiogYWdlbnQgc2lnbmF0dXJlIGRlY2xhcmF0aW9uICopXG4gIHJ1bGVzOiAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqICdydWxlIExvYy5hbm5vdGVkKSBsaXN0O1xuICAgICAgKCoqIHJ1bGVzIChwb3NzaWJseSBuYW1lZCk6IFtuYW1lX29wdGlvbiAqIHJ1bGVfZGVmaW5pdGlvbl0gKilcbiAgb2JzZXJ2YWJsZXM6ICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIGxpc3Q7XG4gICAgICAoKiogbGlzdCBvZiBwYXR0ZXJucyB0byBwbG90ICopXG4gIGluaXQ6ICgncGF0dGVybiwgJ21peHR1cmUsICdpZCkgaW5pdF9zdGF0ZW1lbnQgbGlzdDtcbiAgICAgICgqKiBpbml0aWFsIGdyYXBoIGRlY2xhcmF0aW9uICopXG4gIHBlcnR1cmJhdGlvbnM6ICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIHBlcnR1cmJhdGlvbiBsaXN0O1xuICBjb25maWd1cmF0aW9uczogY29uZmlndXJhdGlvbiBsaXN0O1xuICB0b2tlbnM6IHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0O1xuICB2b2x1bWVzOiAoc3RyaW5nICogZmxvYXQgKiBzdHJpbmcpIGxpc3Q7XG59XG5cbnR5cGUgcGFyc2luZ19jb21waWwgPSAoYWdlbnQsIGFnZW50X3NpZywgbWl4dHVyZSwgbWl4dHVyZSwgc3RyaW5nLCBydWxlKSBjb21waWxcblxudHlwZSBwYXJzaW5nX2luc3RydWN0aW9uID1cbiAgKGFnZW50LCBhZ2VudF9zaWcsIG1peHR1cmUsIG1peHR1cmUsIHN0cmluZywgcnVsZSkgaW5zdHJ1Y3Rpb25cblxubGV0IG5vX21vcmVfc2l0ZV9vbl9yaWdodCBlcnJvciBsZWZ0IHJpZ2h0ID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvdW50ZXIgXyAtPiB0cnVlXG4gICAgICB8IFBvcnQgcCAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBDb3VudGVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgUG9ydCBwJyAtPiBmc3QgcC5wb3J0X25hbWUgPSBmc3QgcCcucG9ydF9uYW1lKVxuICAgICAgICAgIGxlZnRcbiAgICAgICAgfHxcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBlcnJvciB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoIFwiU2l0ZSAnXCIgXiBmc3QgcC5wb3J0X25hbWVcbiAgICAgICAgICAgICAgICAgICBeIFwiJyB3YXMgbm90IG1lbnRpb25uZWQgaW4gdGhlIGxlZnQtaGFuZCBzaWRlLlwiLFxuICAgICAgICAgICAgICAgICAgIHNuZCBwLnBvcnRfbmFtZSApKVxuICAgICAgICBpblxuICAgICAgICBmYWxzZSlcbiAgICByaWdodFxuXG5sZXQgZW1wdHlfY29tcGlsID1cbiAge1xuICAgIGZpbGVuYW1lcyA9IFtdO1xuICAgIHZhcmlhYmxlcyA9IFtdO1xuICAgIHNpZ25hdHVyZXMgPSBbXTtcbiAgICBydWxlcyA9IFtdO1xuICAgIGluaXQgPSBbXTtcbiAgICBvYnNlcnZhYmxlcyA9IFtdO1xuICAgIHBlcnR1cmJhdGlvbnMgPSBbXTtcbiAgICBjb25maWd1cmF0aW9ucyA9IFtdO1xuICAgIHRva2VucyA9IFtdO1xuICAgIHZvbHVtZXMgPSBbXTtcbiAgfVxuXG4oKlxuICBsZXQgcmV2ZXJzZSByZXMgPVxuICBsZXQgbF9wYXQgPSBMaXN0LnJldiAhcmVzLnBhdHRlcm5zXG4gIGFuZCBsX3NpZyA9IExpc3QucmV2ICFyZXMuc2lnbmF0dXJlc1xuICBhbmQgbF9ydWwgPSBMaXN0LnJldiAhcmVzLnJ1bGVzXG4gIGFuZCBsX2luaSA9IExpc3QucmV2ICFyZXMuaW5pdFxuICBhbmQgbF9vYnMgPSBMaXN0LnJldiAhcmVzLm9ic2VydmFibGVzXG4gIGluXG4gIHJlczo9e3BhdHRlcm5zPWxfcGF0IDsgc2lnbmF0dXJlcz1sX3NpZyA7XG4gICAgICAgIHJ1bGVzPWxfcnVsIDsgaW5pdCA9IGxfaW5pIDsgb2JzZXJ2YWJsZXMgPSBsX29ic31cbiopXG5cbmxldCBwcmludF9hc3RfbGluayBtb2RfbCBmIGwgPVxuICBpZiBsIDw+IFtdIHx8IG1vZF9sIDw+IE5vbmUgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWElYV1cIlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmICh4LCBfKSAtPlxuICAgICAgICAgICBMS2FwcGEucHJpbnRfbGlua1xuICAgICAgICAgICAgIChmdW4gXyBmICh4LCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgeClcbiAgICAgICAgICAgICAoZnVuIGYgKHgsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4KVxuICAgICAgICAgICAgIChmdW4gXyAoKSAtPiAoKSlcbiAgICAgICAgICAgICBmIHgpKVxuICAgICAgbFxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLyVhXCJcbiAgICAgICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIGxcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCIpXG4gICAgICAgICAgICAgeCkpXG4gICAgICBtb2RfbFxuXG5sZXQgcHJpbnRfYXN0X2ludGVybmFsIG1vZF9pIGYgbCA9XG4gIGlmIGwgPD4gW10gfHwgbW9kX2kgPD4gTm9uZSB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYSVhfVwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgIHwgU29tZSB4LCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgICAgICB8IE5vbmUsIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiI1wiKSlcbiAgICAgIGxcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIChpLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLyVzXCIgaSkpXG4gICAgICBtb2RfaVxuXG5sZXQgcHJpbnRfYXN0X3BvcnQgZiBwID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzJWElYVwiIChmc3QgcC5wb3J0X25hbWUpXG4gICAgKHByaW50X2FzdF9pbnRlcm5hbCBwLnBvcnRfaW50X21vZClcbiAgICBwLnBvcnRfaW50XG4gICAgKHByaW50X2FzdF9saW5rIHAucG9ydF9saW5rX21vZClcbiAgICBwLnBvcnRfbGlua1xuXG5sZXQgcHJpbnRfY291bnRlcl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IENFUSB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9JWlcIiB4XG4gIHwgQ0dURSB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI+PSVpXCIgeFxuICB8IENMVEUgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPD0laVwiIHhcbiAgfCBDVkFSIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj0lc1wiIHhcblxubGV0IHByaW50X2NvdW50ZXJfbWluIGYgKHgsIF8pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9JWRcIiB4XG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPS1vb1wiXG5cbmxldCBwcmludF9jb3VudGVyX21heCBmICh4LCBfKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLyVkXCIgeFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIi8rb29cIlxuXG5sZXQgcHJpbnRfY291bnRlcl9kZWZhdWx0IG1pbiBmIHggPVxuICBtYXRjaCBtaW4gd2l0aFxuICB8IFNvbWUgKFNvbWUgaSwgXykgd2hlbiBpID0geCAtPiAoKVxuICB8IE5vbmUgfCBTb21lIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiglZClcIiB4XG5cbmxldCBwcmludF9jb3VudGVyX2RlbHRhIHRlc3QgZiAoZGVsdGEsIF8pID1cbiAgaWYgZGVsdGEgPD4gMCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhKz0lZFwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi9cIikpXG4gICAgICB0ZXN0IGRlbHRhXG5cbmxldCBwcmludF9jb3VudGVyIGYgYyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlc3slYSVhfVwiIChmc3QgYy5jb3VudGVyX25hbWUpXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSBwcmludF9jb3VudGVyX3Rlc3QpXG4gICAgYy5jb3VudGVyX3Rlc3RcbiAgICAocHJpbnRfY291bnRlcl9kZWx0YSBjLmNvdW50ZXJfdGVzdClcbiAgICBjLmNvdW50ZXJfZGVsdGFcblxubGV0IHByaW50X2NvdW50ZXJfc2lnIGYgYyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlc3slYSVhfSVhXCJcbiAgICAoZnN0IGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lKVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgcHJpbnRfY291bnRlcl9taW4pXG4gICAgYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pblxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgcHJpbnRfY291bnRlcl9tYXgpXG4gICAgYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heFxuICAgIChwcmludF9jb3VudGVyX2RlZmF1bHQgYy5jb3VudGVyX3NpZ19taW4pXG4gICAgYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHRcblxubGV0IHByaW50X2FzdF9zaXRlIH5wcmludF9jb3VudGVyIGYgPSBmdW5jdGlvblxuICB8IFBvcnQgcCAtPiBwcmludF9hc3RfcG9ydCBmIHBcbiAgfCBDb3VudGVyIGMgLT4gcHJpbnRfY291bnRlciBmIGNcblxubGV0IGNvdW50ZXJfdGVzdF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBDRVEgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImVxXCI7IFwidmFsXCIsIGBJbnQgeCBdXG4gIHwgQ0dURSB4IC0+IGBBc3NvYyBbIFwidGVzdFwiLCBgU3RyaW5nIFwiZ3RlXCI7IFwidmFsXCIsIGBJbnQgeCBdXG4gIHwgQ0xURSB4IC0+IGBBc3NvYyBbIFwidGVzdFwiLCBgU3RyaW5nIFwibHRlXCI7IFwidmFsXCIsIGBJbnQgeCBdXG4gIHwgQ1ZBUiB4IC0+IGBBc3NvYyBbIFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIjsgXCJ2YWxcIiwgYFN0cmluZyB4IF1cblxubGV0IGNvdW50ZXJfdGVzdF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXVxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiKSBdIC0+XG4gICAgQ0VRIHhcbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgYEludCB4KTsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZ3RlXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIik7IChcInZhbFwiLCBgSW50IHgpIF0gLT5cbiAgICBDR1RFIHhcbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgYEludCB4KTsgKFwidGVzdFwiLCBgU3RyaW5nIFwibHRlXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJsdGVcIik7IChcInZhbFwiLCBgSW50IHgpIF0gLT5cbiAgICBDTFRFIHhcbiAgfCBgQXNzb2MgWyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiKTsgKFwidmFsXCIsIGBTdHJpbmcgeCkgXVxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgU3RyaW5nIHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiKSBdIC0+XG4gICAgQ1ZBUiB4XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgY291bnRlciB0ZXN0XCIsIHgpKVxuXG5sZXQgcG9ydF90b19qc29uIGZpbGVuYW1lcyBwID1cbiAgbGV0IG1vZF9sID1cbiAgICBKc29uVXRpbC5vZl9vcHRpb24gKGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYFN0cmluZyBcIkZSRUVcIlxuICAgICAgfCBTb21lIHggLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2ZfaW50IHgpXG4gIGluXG4gIGxldCBtb2RfaSA9XG4gICAgSnNvblV0aWwub2Zfb3B0aW9uIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcpXG4gIGluXG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJwb3J0X25hbWVcIiwgTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcyBwLnBvcnRfbmFtZTtcbiAgICAgICggXCJwb3J0X2ludFwiLFxuICAgICAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggXCJzdGF0ZVwiLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgKExvYy5zdHJpbmdfb3B0aW9uX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIHAucG9ydF9pbnQgKTtcbiAgICAgICAgICAgIFwibW9kXCIsIG1vZF9pIHAucG9ydF9pbnRfbW9kO1xuICAgICAgICAgIF0gKTtcbiAgICAgICggXCJwb3J0X2xpbmtcIixcbiAgICAgICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIFwic3RhdGVcIixcbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChMS2FwcGEubGlua190b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IExvYy5zdHJpbmdfYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSkpKVxuICAgICAgICAgICAgICAgIHAucG9ydF9saW5rICk7XG4gICAgICAgICAgICBcIm1vZFwiLCBtb2RfbCBwLnBvcnRfbGlua19tb2Q7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGwgPVxuICBsZXQgbW9kX2wgPVxuICAgIEpzb25VdGlsLnRvX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgIHwgYFN0cmluZyBcIkZSRUVcIiAtPiBOb25lXG4gICAgICB8IHggLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkgeCkpXG4gIGluXG4gIGxldCBtb2RfaSA9XG4gICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKVxuICBpblxuICBsZXQgcG9ydF9pbnQsIHBvcnRfaW50X21vZCA9XG4gICAgbWF0Y2ggaSB3aXRoXG4gICAgfCBgQXNzb2MgW10gfCBgTnVsbCAtPiBbXSwgTm9uZVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgaSkgXSAtPlxuICAgICAgSnNvblV0aWwudG9fbGlzdCAoTG9jLnN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpIGksIE5vbmVcbiAgICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKSBdIC0+IFtdLCBtb2RfaSBtXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBpKTsgKFwibW9kXCIsIG0pIF0gfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSk7IChcInN0YXRlXCIsIGkpIF1cbiAgICAgIC0+XG4gICAgICBKc29uVXRpbC50b19saXN0IChMb2Muc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcykgaSwgbW9kX2kgbVxuICAgIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgaW50ZXJuYWwgc3RhdGVzXCIsIGkpKVxuICBpblxuICBsZXQgcG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGBBc3NvYyBbXSB8IGBOdWxsIC0+IFtdLCBOb25lXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBsKSBdIC0+XG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoTEthcHBhLmxpbmtfb2ZfanNvblxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiBMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSkpKVxuICAgICAgICAgIGwsXG4gICAgICAgIE5vbmUgKVxuICAgIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pIF0gLT4gW10sIG1vZF9sIG1cbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGwpOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic3RhdGVcIiwgbCkgXVxuICAgICAgLT5cbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChMS2FwcGEubGlua19vZl9qc29uXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+IExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKSkpXG4gICAgICAgICAgbCxcbiAgICAgICAgbW9kX2wgbSApXG4gICAgfCBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBsaW5rIHN0YXRlc1wiLCBpKSlcbiAgaW5cbiAgUG9ydFxuICAgIHtcbiAgICAgIHBvcnRfbmFtZSA9IExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMgbjtcbiAgICAgIHBvcnRfaW50O1xuICAgICAgcG9ydF9pbnRfbW9kO1xuICAgICAgcG9ydF9saW5rO1xuICAgICAgcG9ydF9saW5rX21vZDtcbiAgICB9XG5cbmxldCBzaXRlX3NpZ19vZl9qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdIC0+XG4gICAgQ291bnRlclxuICAgICAge1xuICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX3N0cmluZyBuO1xuICAgICAgICBjb3VudGVyX3NpZ19taW4gPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCkpXG4gICAgICAgICAgICBtaW47XG4gICAgICAgIGNvdW50ZXJfc2lnX21heCA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KSlcbiAgICAgICAgICAgIG1heDtcbiAgICAgICAgY291bnRlcl9zaWdfZGVmYXVsdCA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBkZWZhdWx0O1xuICAgICAgICBjb3VudGVyX3NpZ192aXNpYmxlID0gRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICB9XG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGBOdWxsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKSBdIC0+IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBgTnVsbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IHNpdGVfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfZGVsdGFcIiwgZCk7IChcImNvdW50ZXJfdGVzdFwiLCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfZGVsdGFcIiwgZCkgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfdGVzdFwiLCB0KTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl9uYW1lXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfdGVzdFwiLCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX25hbWVcIiwgbikgXSAtPlxuICAgIENvdW50ZXJcbiAgICAgIHtcbiAgICAgICAgY291bnRlcl9uYW1lID1cbiAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBZb2pzb24uQmFzaWMuVXRpbC50b19zdHJpbmcgbjtcbiAgICAgICAgY291bnRlcl90ZXN0ID1cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBjb3VudGVyX3Rlc3Rfb2ZfanNvbilcbiAgICAgICAgICAgIHQ7XG4gICAgICAgIGNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBkO1xuICAgICAgfVxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBgTnVsbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGBOdWxsIGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPiBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgYE51bGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBBU1QgYWdlbnRcIiwgeCkpXG5cbmxldCBjb3VudGVyX3RvX2pzb24gfmZpbGVuYW1lcyBjID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNvdW50ZXJfbmFtZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgYy5jb3VudGVyX25hbWUgKTtcbiAgICAgICggXCJjb3VudGVyX3Rlc3RcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGNvdW50ZXJfdGVzdF90b19qc29uKVxuICAgICAgICAgIGMuY291bnRlcl90ZXN0ICk7XG4gICAgICAoIFwiY291bnRlcl9kZWx0YVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9pbnQgYy5jb3VudGVyX2RlbHRhICk7XG4gICAgXVxuXG5sZXQgY291bnRlcl9zaWdfdG9fanNvbiB+ZmlsZW5hbWVzIGMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY291bnRlcl9zaWdfbmFtZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAgICBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSApO1xuICAgICAgKCBcImNvdW50ZXJfbWluXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50KSlcbiAgICAgICAgICBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluICk7XG4gICAgICAoIFwiY291bnRlcl9tYXhcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpKVxuICAgICAgICAgIGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggKTtcbiAgICAgIFwiY291bnRlcl9kZWZhdWx0XCIsIEpzb25VdGlsLm9mX2ludCBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdDtcbiAgICBdXG5cbmxldCBzaXRlX3RvX2pzb24gfmNvdW50ZXJfdG9fanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IFBvcnQgcCAtPiBwb3J0X3RvX2pzb24gZmlsZW5hbWVzIHBcbiAgfCBDb3VudGVyIGMgLT4gY291bnRlcl90b19qc29uIH5maWxlbmFtZXMgY1xuXG5sZXQgcHJpbnRfYWdlbnRfbW9kIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIrXCJcbiAgfCBFcmFzZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItXCJcbiAgfCBOb01vZCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcIlxuXG5sZXQgcHJpbnRfYXN0X2FnZW50IH5wcmludF9jb3VudGVyIGYgPSBmdW5jdGlvblxuICB8IEFic2VudCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIlxuICB8IFByZXNlbnQgKChhZ2VudF9uYW1lLCBfKSwgbCwgbSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMoJWEpJWFcIiBhZ2VudF9uYW1lXG4gICAgICAoUHAubGlzdCAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiBcIikgKHByaW50X2FzdF9zaXRlIH5wcmludF9jb3VudGVyKSlcbiAgICAgIGwgcHJpbnRfYWdlbnRfbW9kIG1cblxubGV0IGFnZW50X21vZF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IENyZWF0ZSAtPiBgU3RyaW5nIFwiY3JlYXRlZFwiXG4gIHwgRXJhc2UgLT4gYFN0cmluZyBcImVyYXNlXCJcbiAgfCBOb01vZCAtPiBgU3RyaW5nIFwibm9fbW9kXCJcblxubGV0IGFnZW50X21vZF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJjcmVhdGVkXCIgLT4gQ3JlYXRlXG4gIHwgYFN0cmluZyBcImVyYXNlXCIgLT4gRXJhc2VcbiAgfCBgU3RyaW5nIFwibm9fbW9kXCIgLT4gTm9Nb2RcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGFnZW50IG1vZGlmaWNhdGlvblwiLCB4KSlcblxubGV0IGFnZW50X3RvX2pzb24gfmNvdW50ZXJfdG9fanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IEFic2VudCBfIC0+IGBOdWxsXG4gIHwgUHJlc2VudCAobmEsIGwsIG0pIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJuYW1lXCIsIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBuYTtcbiAgICAgICAgXCJzaWdcIiwgSnNvblV0aWwub2ZfbGlzdCAoc2l0ZV90b19qc29uIH5jb3VudGVyX3RvX2pzb24gZmlsZW5hbWVzKSBsO1xuICAgICAgICBcIm1vZFwiLCBhZ2VudF9tb2RfdG9feW9qc29uIG07XG4gICAgICBdXG5cbmxldCBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBBYnNlbnQgTG9jLmR1bW15XG4gIHwgYEFzc29jIFsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpOyAoXCJtb2RcIiwgbSkgXVxuICB8IGBBc3NvYyBbIChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKTsgKFwibW9kXCIsIG0pIF1cbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSk7IChcInNpZ1wiLCBzKSBdXG4gIHwgYEFzc29jIFsgKFwic2lnXCIsIHMpOyAoXCJtb2RcIiwgbSk7IChcIm5hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSk7IChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoc2l0ZV9vZl9qc29uIGZpbGVuYW1lcykgcyxcbiAgICAgICAgYWdlbnRfbW9kX29mX3lvanNvbiBtIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgW10sXG4gICAgICAgIGFnZW50X21vZF9vZl95b2pzb24gbSApXG4gIHwgYEFzc29jIFsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpIF0gfCBgQXNzb2MgWyAoXCJzaWdcIiwgcyk7IChcIm5hbWVcIiwgbikgXSAtPlxuICAgIFByZXNlbnRcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpIG4sXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHNpdGVfb2ZfanNvbiBmaWxlbmFtZXMpIHMsXG4gICAgICAgIE5vTW9kIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBbXSxcbiAgICAgICAgTm9Nb2QgKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IGFnZW50X3NpZ19vZl9qc29uID0gYWdlbnRfb2ZfanNvbiB+c2l0ZV9vZl9qc29uOnNpdGVfc2lnX29mX2pzb25cblxuKCogVE8gRE8gVHJhbnNmZXIgYmFjayBpbnZlcnRlZCBjb3VudGVycyAqKVxubGV0IGFnZW50X3NpZ190b19qc29uID0gYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uOmNvdW50ZXJfc2lnX3RvX2pzb25cbmxldCBhZ2VudF9vZl9qc29uID0gYWdlbnRfb2ZfanNvbiB+c2l0ZV9vZl9qc29uXG5sZXQgYWdlbnRfdG9fanNvbiA9IGFnZW50X3RvX2pzb24gfmNvdW50ZXJfdG9fanNvblxuXG5sZXQgcHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlciA9XG4gIFBwLmxpc3RcbiAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXFxAIFwiKVxuICAgIChQcC5saXN0IFBwLmNvbW1hIChwcmludF9hc3RfYWdlbnQgfnByaW50X2NvdW50ZXIpKVxuXG5sZXQgdG9fZXJhc2VkX21peHR1cmUgPVxuICBMaXN0Lm1hcFxuICAgIChMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgIHwgQWJzZW50IHBvcyAtPiBBYnNlbnQgcG9zXG4gICAgICB8IFByZXNlbnQgKG4sIHMsIF8pIC0+IFByZXNlbnQgKG4sIHMsIEVyYXNlKSkpXG5cbmxldCB0b19jcmVhdGVkX21peHR1cmUgPVxuICBMaXN0Lm1hcFxuICAgIChMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgIHwgQWJzZW50IHBvcyAtPiBBYnNlbnQgcG9zXG4gICAgICB8IFByZXNlbnQgKG4sIHMsIF8pIC0+IFByZXNlbnQgKG4sIHMsIENyZWF0ZSkpKVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9saW5rID0gZnVuY3Rpb25cbiAgfCBbXSB8IFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdIC0+IFVzZXJfZ3JhcGguV0hBVEVWRVJcbiAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gLT4gVXNlcl9ncmFwaC5MSU5LUyBbXVxuICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKHgsIF8pLCBfKSBdIC0+IFVzZXJfZ3JhcGguTElOS1MgWyAoLTEsIC0xKSwgeCBdXG4gIHwgWyAoTEthcHBhLkxOS19GUkVFLCBfKSBdIC0+IFVzZXJfZ3JhcGguTElOS1MgW11cbiAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF0gLT4gVXNlcl9ncmFwaC5TT01FXG4gIHwgWyAoTEthcHBhLkxOS19UWVBFICgodHksIF8pLCAoc2ksIF8pKSwgXykgXSAtPiBVc2VyX2dyYXBoLlRZUEUgKHR5LCBzaSlcbiAgfCBfIDo6IF8gOjogXyAtPiBhc3NlcnQgZmFsc2UgKCogVE9ETyAqKVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9pbnRlcm5hbCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU29tZSBbXVxuICB8IFsgKE5vbmUsIF8pIF0gLT4gTm9uZVxuICB8IFsgKFNvbWUgc3QsIF8pIF0gLT4gU29tZSBbIHN0IF1cbiAgfCBfIDo6IF8gOjogXyBhcyBsIC0+IFNvbWUgKExpc3RfdXRpbC5tYXBfb3B0aW9uIGZzdCBsKVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9zaXRlID0gZnVuY3Rpb25cbiAgfCBQb3J0IHsgcG9ydF9uYW1lOyBwb3J0X2ludDsgcG9ydF9pbnRfbW9kID0gXzsgcG9ydF9saW5rOyBwb3J0X2xpbmtfbW9kID0gXyB9XG4gICAgLT5cbiAgICB7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9IGZzdCBwb3J0X25hbWU7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IHRvX2R1bW15X3VzZXJfbGluayBwb3J0X2xpbms7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzID0gdG9fZHVtbXlfdXNlcl9pbnRlcm5hbCBwb3J0X2ludDtcbiAgICAgICAgICB9O1xuICAgIH1cbiAgfCBDb3VudGVyIHsgY291bnRlcl9uYW1lOyBjb3VudGVyX3Rlc3QgPSBfOyBjb3VudGVyX2RlbHRhID0gXyB9IC0+XG4gICAge1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPSBmc3QgY291bnRlcl9uYW1lO1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPSBVc2VyX2dyYXBoLkNvdW50ZXIgKC0xKTtcbiAgICAgICgqIFRPRE8gKilcbiAgICB9XG5cbmxldCB0b19kdW1teV91c2VyX2FnZW50ID0gZnVuY3Rpb25cbiAgfCBBYnNlbnQgXyAtPiBOb25lXG4gIHwgUHJlc2VudCAoKG5hLCBfKSwgcywgX21vZHMpIC0+XG4gICAgU29tZVxuICAgICAge1xuICAgICAgICBVc2VyX2dyYXBoLm5vZGVfdHlwZSA9IG5hO1xuICAgICAgICBVc2VyX2dyYXBoLm5vZGVfaWQgPSBOb25lO1xuICAgICAgICBVc2VyX2dyYXBoLm5vZGVfc2l0ZXMgPSBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCB0b19kdW1teV91c2VyX3NpdGUgcztcbiAgICAgIH1cblxubGV0IHNldHVwX2xpbmsgbSAoKGxpbmUsIHJvdyksIHNpdGUpIHZhID1cbiAgbWF0Y2ggbS4obGluZSkuKHJvdykgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzOyBfIH0gLT5cbiAgICBsZXQgcyA9IG5vZGVfc2l0ZXMuKHNpdGUpIGluXG4gICAgKG1hdGNoIHMuVXNlcl9ncmFwaC5zaXRlX3R5cGUgd2l0aFxuICAgIHwgVXNlcl9ncmFwaC5Db3VudGVyIF8gLT4gKClcbiAgICB8IFVzZXJfZ3JhcGguUG9ydCBwIC0+XG4gICAgICBub2RlX3NpdGVzLihzaXRlKSA8LVxuICAgICAgICB7XG4gICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPSBzLlVzZXJfZ3JhcGguc2l0ZV9uYW1lO1xuICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbIHZhIF07XG4gICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyA9IHAuVXNlcl9ncmFwaC5wb3J0X3N0YXRlcztcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcblxubGV0IG1peHR1cmVfdG9fdXNlcl9ncmFwaCBtID1cbiAgbGV0IG91dCA9XG4gICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHRvX2R1bW15X3VzZXJfYWdlbnQpIG1cbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBsaW5lIC0+XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biByb3cgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgIHwgU29tZSB7IFVzZXJfZ3JhcGgubm9kZV9zaXRlczsgXyB9IC0+XG4gICAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgIChmdW4gc2l0ZSBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFtdOyBfIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIChfIDo6IF8gOjogXyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFVzZXJfZ3JhcGguV0hBVEVWRVIgfCBVc2VyX2dyYXBoLlNPTUVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguVFlQRSAoXywgXykgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICB8IHsgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPSBVc2VyX2dyYXBoLkNvdW50ZXIgXzsgXyB9IC0+IGFjY1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgWyAoXywgaWQpIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpZCBhY2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lLCBhY2MnIC0+IE1vZHMuSW50TWFwLmFkZCBpZCAoKGxpbmUsIHJvdyksIHNpdGUpIGFjYydcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB2YSwgYWNjJyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdmEnID0gKGxpbmUsIHJvdyksIHNpdGUgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0dXBfbGluayBvdXQgdmEgdmEnIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHNldHVwX2xpbmsgb3V0IHZhJyB2YSBpblxuICAgICAgICAgICAgICAgICAgICBhY2MnKSlcbiAgICAgICAgICAgICAgYWNjIG5vZGVfc2l0ZXMpKVxuICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgb3V0XG4gIGluXG4gIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnRNYXAuaXNfZW1wdHkgYWNjKSBpblxuICBvdXRcblxubGV0IGluaXRfdG9fanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBJTklUX01JWCBtIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwibWl4dHVyZVwiOyBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX21peCBtIF1cbiAgfCBJTklUX1RPSyB0IC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcInRva2VuXCI7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfdmFyKSB0O1xuICAgICAgXVxuXG5sZXQgaW5pdF9vZl9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIm1peHR1cmVcIjsgbSBdIC0+XG4gICAgSU5JVF9NSVggKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IG0pXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwidG9rZW5cIjsgdCBdIC0+XG4gICAgSU5JVF9UT0tcbiAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIklOSVRfVE9LXCIpXG4gICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl92YXIpXG4gICAgICAgICB0KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBBc3QgaW5pdCBzdGF0ZW1lbnRcIiwgeCkpXG5cbmxldCBwcmludF90b2sgcHJfbWl4IHByX3RvayBwcl92YXIgZiAoKG5iLCBfKSwgKG4sIF8pKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIChBbGdfZXhwci5wcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgbmIgcHJfdG9rIG5cblxubGV0IHByaW50X29uZV9zaXplIHRrIGYgbWl4ID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXQlYVwiXG4gICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgbWl4XG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCB0ayB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IF8gOjogXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgfCBcIilcbiAgICAoUHAubGlzdFxuICAgICAgIChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgKyBcIilcbiAgICAgICAocHJpbnRfdG9rXG4gICAgICAgICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KSkpXG4gICAgdGtcblxubGV0IHByaW50X2Fycm93IGYgYmlkaXIgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgYmlkaXIgdGhlblxuICAgICAgIFwiPC0+XCJcbiAgICAgZWxzZVxuICAgICAgIFwiLT5cIilcblxubGV0IHByaW50X3Jhd19yYXRlIHByX21peCBwcl90b2sgcHJfdmFyIG9wIGYgKGRlZiwgXykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiIChBbGdfZXhwci5wcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgZGVmIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggb3Agd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKGQsIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIsICVhXCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBkKVxuXG5sZXQgcHJpbnRfYXN0X2FsZ19leHByID1cbiAgQWxnX2V4cHIucHJpbnRcbiAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG5cbmxldCBwcmludF9yYXRlc19vbmVfZGlyIHVuIGYgZGVmID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXRcIlxuICAgIChwcmludF9yYXdfcmF0ZVxuICAgICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpIG0pXG4gICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgICAgIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnXCIgeClcbiAgICAgICBOb25lKVxuICAgIGRlZlxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggdW4gd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKChkLCBfKSwgbWF4X2Rpc3QpIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJXR9XCIgcHJpbnRfYXN0X2FsZ19leHByIGQgKGZ1biBmIC0+XG4gICAgICAgICAgICBQcC5vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBmIChtZCwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIjolYVwiIHByaW50X2FzdF9hbGdfZXhwciBtZClcbiAgICAgICAgICAgICAgZiBtYXhfZGlzdCkpXG5cbmxldCBwcmludF9ydWxlX2NvbnRlbnQgfmJpZGlyZWN0aW9uYWwgZiA9IGZ1bmN0aW9uXG4gIHwgRWRpdCByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhIEBdXCIgKHByaW50X29uZV9zaXplIHIuZGVsdGFfdG9rZW4pIHIubWl4XG4gIHwgQXJyb3cgciAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhICVhQCAlYUBdXCJcbiAgICAgIChwcmludF9vbmVfc2l6ZSByLnJtX3Rva2VuKVxuICAgICAgci5saHMgcHJpbnRfYXJyb3cgYmlkaXJlY3Rpb25hbFxuICAgICAgKHByaW50X29uZV9zaXplIHIuYWRkX3Rva2VuKVxuICAgICAgci5yaHNcblxubGV0IHByaW50X2FzdF9ydWxlIGYgciA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhIEBAICVhJXRAXVwiXG4gICAgKHByaW50X3J1bGVfY29udGVudCB+YmlkaXJlY3Rpb25hbDpyLmJpZGlyZWN0aW9uYWwpIHIucmV3cml0ZVxuICAgIChwcmludF9yYXRlc19vbmVfZGlyIHIua191bikgci5rX2RlZiAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIua19vcCwgci5rX29wX3VuIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiAoKVxuICAgICAgfCBOb25lLCBfIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgLCAlYVwiXG4gICAgICAgICAgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX29wX3VuKVxuICAgICAgICAgIChBbGdfZXhwci5jb25zdCBOYnIuemVybylcbiAgICAgIHwgU29tZSBhLCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgLCAlYVwiIChwcmludF9yYXRlc19vbmVfZGlyIHIua19vcF91bikgYSlcblxubGV0IHByaW50X2NvbmZpZ3VyYXRpb24gZiAoKG4sIF8pLCBsKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlZGVmOiBcXFwiJXNcXFwiIEBbJWFAXUBdXCIgblxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiB4KSlcbiAgICBsXG5cbmxldCBwcmludF9pbml0IGYgPSBmdW5jdGlvblxuICB8IChuLCBfKSwgSU5JVF9NSVggKG0sIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVpbml0OiBAWyVhQF1AIEBbJWFAXUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgbVxuICB8IChuLCBfKSwgSU5JVF9UT0sgdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlaW5pdDogJWEgJWFAXVwiIHByaW50X2FzdF9hbGdfZXhwciBuXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHgsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4KSlcbiAgICAgIHRcblxubGV0IHByaW50X2FzdF9ib29sX2V4cHIgPVxuICBBbGdfZXhwci5wcmludF9ib29sXG4gICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuXG5sZXQgcHJpbnRfcHJpbnRfZXhwciBmID1cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBwcmludF9hc3RfYWxnX2V4cHIgZiBhbGdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIFxcXCIlc1xcXCJcIiBzdHJcbiAgfCAoWyBQcmltaXRpdmVzLkFsZ19wZXhwciBfIF0gfCBfIDo6IF8gOjogXykgYXMgZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAIChAWyVhQF0pXCJcbiAgICAgIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLlwiKSBhdXgpXG4gICAgICBlXG5cbmxldCBwcmludF9tb2RpZiBmID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoKG4sIF8pLCAociwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRBUFBMWSBAWyVhQF0gQFslYUBdO1wiIHByaW50X2FzdF9hbGdfZXhwciBuXG4gICAgICAocHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsOmZhbHNlKVxuICAgICAgci5yZXdyaXRlXG4gIHwgVVBEQVRFICgocywgXyksIChuLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFVQREFURSAnJXNAJyBAWyVhQF07XCIgcyBwcmludF9hc3RfYWxnX2V4cHIgblxuICB8IFNUT1AgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJFNUT1AlYTtcIiBwcmludF9wcmludF9leHByIHBcbiAgfCBTTkFQU0hPVCAocmF3LCBwKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU05BUFNIT1QlYSV0O1wiIHByaW50X3ByaW50X2V4cHIgcCAoZnVuIGYgLT5cbiAgICAgICAgaWYgcmF3IHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFt0cnVlXVwiKVxuICB8IFBSSU5UIChbXSwgeCkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYlYVwiIHByaW50X3ByaW50X2V4cHIgeFxuICB8IFBSSU5UIChmaWxlLCB4KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGJWEgPiVhXCIgcHJpbnRfcHJpbnRfZXhwciB4IHByaW50X3ByaW50X2V4cHIgZmlsZVxuICB8IFBMT1RFTlRSWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIkUExPVE5PVztcIlxuICB8IENGTE9XTEFCRUwgKG9uLCAocywgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyAnJXMnICVzO1wiIHNcbiAgICAgIChpZiBvbiB0aGVuXG4gICAgICAgICBcIlt0cnVlXVwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJbZmFsc2VdXCIpXG4gIHwgQ0ZMT1dNSVggKG9uLCAocCwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyBAWyVhQF0gJXM7XCJcbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgcFxuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgfCBESU4gKGssIHApIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRESU4lYSAldFt0cnVlXVwiIHByaW50X3ByaW50X2V4cHIgcCAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImFic29sdXRlXFxcIiBcIlxuICAgICAgICB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgLT4gKClcbiAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwicHJvYmFiaWxpdHlcXFwiIFwiKVxuICB8IERJTk9GRiBwIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOJWEgW2ZhbHNlXVwiIHByaW50X3ByaW50X2V4cHIgcFxuICB8IFNQRUNJRVNfT0YgKG9uLCBwLCAobSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIEBbJWFAXSAlcyA+JWE7XCJcbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgbVxuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgICAgIHByaW50X3ByaW50X2V4cHIgcFxuXG5sZXQgcHJpbnRfcGVydHVyYmF0aW9uIGYgKChhbGFybSwgY29uZCwgbW9kaWYsIHJlcCksIF8pID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVtb2Q6JWElYSBkb0AgQFslYUBdJWFAXVwiXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxhcm0gJWFcIiBOYnIucHJpbnQgaSkpXG4gICAgYWxhcm1cbiAgICAoUHAub3B0aW9uIChmdW4gZiAociwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIHByaW50X2FzdF9ib29sX2V4cHIgcikpXG4gICAgY29uZFxuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X21vZGlmKVxuICAgIG1vZGlmXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgKHIsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwicmVwZWF0IEBbJWFAXVwiIHByaW50X2FzdF9ib29sX2V4cHIgcikpXG4gICAgcmVwXG5cbmxldCBwcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsQCwlYUAsJWFALEAsJWFALEAsJWFALCVhQCxALCVhQCxALCVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfY29uZmlndXJhdGlvbilcbiAgICBjLmNvbmZpZ3VyYXRpb25zXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIGEgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlYWdlbnQ6QCBAWyVhQF1AXVwiXG4gICAgICAgICAgIChwcmludF9hc3RfYWdlbnQgfnByaW50X2NvdW50ZXI6cHJpbnRfY291bnRlcl9zaWcpXG4gICAgICAgICAgIGEpKVxuICAgIGMuc2lnbmF0dXJlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAocywgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUldG9rZW46ICVzXCIgcykpXG4gICAgYy50b2tlbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKChzLCBfKSwgKGEsIF8pKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSV2YXI6ICclcydAIEBbJWFAXUBdXCIgcyBwcmludF9hc3RfYWxnX2V4cHIgYSkpXG4gICAgYy52YXJpYWJsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGEsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJXBsb3Q6QCBAWyVhQF1AXVwiIHByaW50X2FzdF9hbGdfZXhwciBhKSlcbiAgICBjLm9ic2VydmFibGVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChzLCAociwgXykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFtAWyVhJWFAXUBdXCJcbiAgICAgICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKHMsIF8pIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiclcydAIFwiIHMpKVxuICAgICAgICAgICBzIHByaW50X2FzdF9ydWxlIHIpKVxuICAgIGMucnVsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9wZXJ0dXJiYXRpb24pXG4gICAgYy5wZXJ0dXJiYXRpb25zXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfaW5pdClcbiAgICBjLmluaXRcblxubGV0IGFycm93X25vdGF0aW9uX3RvX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgciA9XG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJsaHNcIiwgZl9taXggci5saHM7XG4gICAgICAoIFwicm1fdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICByLnJtX3Rva2VuICk7XG4gICAgICBcInJoc1wiLCBmX21peCByLnJocztcbiAgICAgICggXCJhZGRfdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICByLmFkZF90b2tlbiApO1xuICAgIF1cblxubGV0IGFycm93X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDQgLT5cbiAgICB7XG4gICAgICBsaHMgPSBmX21peCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibGhzXCIgeCk7XG4gICAgICBybV90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJtX3Rva2VuXCIgeCk7XG4gICAgICByaHMgPSBmX21peCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicmhzXCIgeCk7XG4gICAgICBhZGRfdG9rZW4gPVxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhZGRfdG9rZW5cIiB4KTtcbiAgICB9XG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgYXJyb3dfbm90YXRpb25cIiwgeCkpXG5cbmxldCBlZGl0X25vdGF0aW9uX3RvX3lvanNvbiBmaWxlbmFtZXMgciA9XG4gIGxldCBtaXhfdG9fanNvbiA9XG4gICAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpKVxuICBpblxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwibWl4XCIsIG1peF90b19qc29uIHIubWl4O1xuICAgICAgKCBcImRlbHRhX3Rva2VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIEpzb25VdGlsLm9mX3N0cmluZykpXG4gICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgIHIuZGVsdGFfdG9rZW4gKTtcbiAgICBdXG5cbmxldCBlZGl0X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgciA9XG4gIGxldCBtaXhfb2ZfanNvbiA9XG4gICAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fbGlzdCAoYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICBpblxuICBtYXRjaCByIHdpdGhcbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8IDMgLT5cbiAgICB7XG4gICAgICBtaXggPSBtaXhfb2ZfanNvbiAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibWl4XCIgeCk7XG4gICAgICBkZWx0YV90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKSlcbiAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlbHRhX3Rva2VuXCIgeCk7XG4gICAgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBlZGl0X25vdGF0aW9uXCIsIHgpKVxuXG5sZXQgcnVsZV9jb250ZW50X3RvX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IEVkaXQgciAtPiBgTGlzdCBbIGBTdHJpbmcgXCJlZGl0XCI7IGVkaXRfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyByIF1cbiAgfCBBcnJvdyByIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwiYXJyb3dcIjsgYXJyb3dfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByIF1cblxubGV0IHJ1bGVfY29udGVudF9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJlZGl0XCI7IHIgXSAtPiBFZGl0IChlZGl0X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgcilcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJhcnJvd1wiOyByIF0gLT5cbiAgICBBcnJvdyAoYXJyb3dfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlIGNvbnRlbnRcIiwgeCkpXG5cbmxldCBydWxlX3RvX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIgPVxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwicmV3cml0ZVwiLCBydWxlX2NvbnRlbnRfdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByLnJld3JpdGU7XG4gICAgICBcImJpZGlyZWN0aW9uYWxcIiwgYEJvb2wgci5iaWRpcmVjdGlvbmFsO1xuICAgICAgKCBcImtfZGVmXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgci5rX2RlZiApO1xuICAgICAgKCBcImtfdW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSkpKVxuICAgICAgICAgIHIua191biApO1xuICAgICAgKCBcImtfb3BcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgIHIua19vcCApO1xuICAgICAgKCBcImtfb3BfdW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSkpKVxuICAgICAgICAgIHIua19vcF91biApO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDYgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcmV3cml0ZSA9XG4gICAgICAgICAgIHJ1bGVfY29udGVudF9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJld3JpdGVcIiB4KTtcbiAgICAgICAgIGJpZGlyZWN0aW9uYWwgPVxuICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImJpZGlyZWN0aW9uYWxcIiB4KTtcbiAgICAgICAgIGtfZGVmID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19kZWZcIiB4KTtcbiAgICAgICAgIGtfdW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfdW5cIiB4KTtcbiAgICAgICAgIGtfb3AgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfb3BcIiB4KTtcbiAgICAgICAgIGtfb3BfdW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfb3BfdW5cIiB4KTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgcnVsZVwiLCB4KSlcblxubGV0IG1vZGlmX3RvX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoYWxnLCByKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJBUFBMWVwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZztcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIpIHI7XG4gICAgICBdXG4gIHwgVVBEQVRFIChpZCwgYWxnKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJVUERBVEVcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl92YXIgaWQ7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnO1xuICAgICAgXVxuICB8IFNUT1AgbCAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZyBcIlNUT1BcIlxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBTTkFQU0hPVCAocmF3LCBsKSAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZ1xuICAgICAgICAgKGlmIHJhdyB0aGVuXG4gICAgICAgICAgICBcIlJBV19TTkFQU0hPVFwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCJTTkFQU0hPVFwiKVxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBQUklOVCAoZmlsZSwgZXhwcikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiUFJJTlRcIjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZTtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZXhwcjtcbiAgICAgIF1cbiAgfCBQTE9URU5UUlkgLT4gYFN0cmluZyBcIlBMT1RFTlRSWVwiXG4gIHwgQ0ZMT1dMQUJFTCAoYiwgaWQpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkNGTE9XTEFCRUxcIjsgYEJvb2wgYjsgTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcyBpZDtcbiAgICAgIF1cbiAgfCBDRkxPV01JWCAoYiwgbSkgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV1wiOyBgQm9vbCBiOyBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX21peCBtIF1cbiAgfCBESU4gKGIsIGZpbGUpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkRJTlwiO1xuICAgICAgICBQcmltaXRpdmVzLmRpbl9raW5kX3RvX3lvanNvbiBiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlO1xuICAgICAgXVxuICB8IERJTk9GRiBmaWxlIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nIFwiRElOT0ZGXCJcbiAgICAgIDo6IExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGZpbGVcbiAgICAgIClcbiAgfCBTUEVDSUVTX09GIChiLCBsLCBtKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJTUEVDSUVTX09GXCI7XG4gICAgICAgIGBCb29sIGI7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGw7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfbWl4IG07XG4gICAgICBdXG5cbmxldCBtb2RpZl9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQVBQTFlcIjsgYWxnOyBtaXggXSAtPlxuICAgIEFQUExZXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChydWxlX29mX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIG1peCApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiVVBEQVRFXCI7IGlkOyBhbGcgXSAtPlxuICAgIFVQREFURVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX3ZhciBpZCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGcgKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiU1RPUFwiIDo6IGwpIC0+XG4gICAgU1RPUCAoTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIlNOQVBTSE9UXCIgOjogbCkgLT5cbiAgICBTTkFQU0hPVFxuICAgICAgKCBmYWxzZSxcbiAgICAgICAgTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbCApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJSQVdfU05BUFNIT1RcIiA6OiBsKSAtPlxuICAgIFNOQVBTSE9UXG4gICAgICAodHJ1ZSwgTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQUklOVFwiOyBmaWxlOyBleHByIF0gLT5cbiAgICBQUklOVFxuICAgICAgKCBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBleHByIClcbiAgfCBgU3RyaW5nIFwiUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQ0ZMT1dMQUJFTFwiOyBgQm9vbCBiOyBpZCBdIC0+XG4gICAgQ0ZMT1dMQUJFTCAoYiwgTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcyBpZClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV1wiOyBgQm9vbCBiOyBtIF0gLT5cbiAgICBDRkxPV01JWCAoYiwgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESU5cIjsgYjsgZmlsZSBdIC0+XG4gICAgRElOXG4gICAgICAoIFByaW1pdGl2ZXMuZGluX2tpbmRfb2ZfeW9qc29uIGIsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUgKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiRElOT0ZGXCIgOjogZmlsZSkgLT5cbiAgICBESU5PRkZcbiAgICAgIChMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBmaWxlKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlNQRUNJRVNfT0ZcIjsgYEJvb2wgYjsgZmlsZTsgbSBdIC0+XG4gICAgU1BFQ0lFU19PRlxuICAgICAgKCBiLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtIClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbW9kaWZpY2F0aW9uXCIsIHgpKVxuXG5sZXQgbWVyZ2VfaW50ZXJuYWxfbW9kIGFjYyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBhY2NcbiAgfCBTb21lICh4LCBwb3MpIC0+XG4gICAgbGV0IHhfb3AgPSBTb21lIHggaW5cbiAgICBpZiBMaXN0LmV4aXN0cyAoZnVuICh4JywgXykgLT4geF9vcCA9IHgnKSBhY2MgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgKHhfb3AsIHBvcykgOjogYWNjXG5cbmxldCBtZXJnZV9pbnRlcm5hbHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoKHgsIF8pIGFzIHkpIC0+XG4gICAgICBpZlxuICAgICAgICB4ID0gTm9uZVxuICAgICAgICB8fCBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgIChmdW4gKHgnLCBfKSAtPlxuICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuZXF1YWwgKGZ1biB4IHgnIC0+IFN0cmluZy5jb21wYXJlIHggeCcgPSAwKSB4IHgnKVxuICAgICAgICAgICAgIGFjY1xuICAgICAgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgeSA6OiBhY2MpXG5cbmxldCByZWMgbWVyZ2Vfc2l0ZXNfY291bnRlciBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbIENvdW50ZXIgYyBdXG4gIHwgQ291bnRlciBjJyA6OiBfIGFzIGxcbiAgICB3aGVuIGZzdCBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZVxuICAgICAgICAgPSBmc3QgYycuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lIC0+XG4gICAgbFxuICB8ICgoUG9ydCBfIHwgQ291bnRlciBfKSBhcyBoKSA6OiB0IC0+IGggOjogbWVyZ2Vfc2l0ZXNfY291bnRlciBjIHRcblxubGV0IHJlYyBtZXJnZV9zaXRlc19wb3J0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IFsgUG9ydCB7IHAgd2l0aCBwb3J0X2xpbmsgPSBbXSB9IF1cbiAgfCBQb3J0IGggOjogdCB3aGVuIGZzdCBwLnBvcnRfbmFtZSA9IGZzdCBoLnBvcnRfbmFtZSAtPlxuICAgIFBvcnRcbiAgICAgIHtcbiAgICAgICAgaCB3aXRoXG4gICAgICAgIHBvcnRfaW50ID1cbiAgICAgICAgICBtZXJnZV9pbnRlcm5hbF9tb2RcbiAgICAgICAgICAgIChtZXJnZV9pbnRlcm5hbHMgaC5wb3J0X2ludCBwLnBvcnRfaW50KVxuICAgICAgICAgICAgcC5wb3J0X2ludF9tb2Q7XG4gICAgICB9XG4gICAgOjogdFxuICB8ICgoUG9ydCBfIHwgQ291bnRlciBfKSBhcyBoKSA6OiB0IC0+IGggOjogbWVyZ2Vfc2l0ZXNfcG9ydCBwIHRcblxubGV0IG1lcmdlX3NpdGVzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICB8IFBvcnQgcCAtPiBtZXJnZV9zaXRlc19wb3J0IHAgYWNjXG4gICAgfCBDb3VudGVyIGMgLT4gbWVyZ2Vfc2l0ZXNfY291bnRlciAoY291bnRlcl9zaWdfb2ZfY291bnRlciBjKSBhY2MpXG5cbmxldCBtZXJnZV9hZ2VudHMgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChhY2MgOiBhZ2VudF9zaWcgbGlzdCkgLT4gZnVuY3Rpb25cbiAgICAgICB8IEFic2VudCBfIC0+IGFjY1xuICAgICAgIHwgUHJlc2VudCAoKChuYSwgXykgYXMgeCksIChzIDogY291bnRlciBzaXRlIGxpc3QpLCBfKSAtPlxuICAgICAgICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgUHJlc2VudFxuICAgICAgICAgICAgICAgICAoIHgsXG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPiBQb3J0IHsgcCB3aXRoIHBvcnRfbGluayA9IFtdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIF8gYXMgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hcF9jb3VudGVyc19pbl9zaXRlIGNvdW50ZXJfc2lnX29mX2NvdW50ZXIgeClcbiAgICAgICAgICAgICAgICAgICAgIHMsXG4gICAgICAgICAgICAgICAgICAgTm9Nb2QgKTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgIHwgUHJlc2VudCAoKG5hJywgXyksIHMnLCBfKSA6OiB0IHdoZW4gU3RyaW5nLmNvbXBhcmUgbmEgbmEnID0gMCAtPlxuICAgICAgICAgICAgIFByZXNlbnQgKHgsIG1lcmdlX3NpdGVzIHMnIHMsIE5vTW9kKSA6OiB0XG4gICAgICAgICAgIHwgKChQcmVzZW50IF8gfCBBYnNlbnQgXykgYXMgaCkgOjogdCAtPiBoIDo6IGF1eCB0XG4gICAgICAgICBpblxuICAgICAgICAgYXV4IGFjYykpXG5cbmxldCBtZXJnZV90b2tlbnMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoXywgKChuYSwgXykgYXMgdG9rKSkgLT5cbiAgICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbIHRvayBdXG4gICAgICAgIHwgKG5hJywgXykgOjogXyBhcyBsIHdoZW4gU3RyaW5nLmNvbXBhcmUgbmEgbmEnID0gMCAtPiBsXG4gICAgICAgIHwgaCA6OiB0IGFzIGwgLT5cbiAgICAgICAgICBsZXQgbyA9IGF1eCB0IGluXG4gICAgICAgICAgaWYgdCA9PSBvIHRoZW5cbiAgICAgICAgICAgIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBoIDo6IG9cbiAgICAgIGluXG4gICAgICBhdXggYWNjKVxuXG5sZXQgc2lnX2Zyb21faW5pdHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIChhZ3MsIHRva3MpIC0+IGZ1bmN0aW9uXG4gICAgfCBfLCBJTklUX01JWCAobSwgXykgLT4gbWVyZ2VfYWdlbnRzIGFncyBtLCB0b2tzXG4gICAgfCBuYSwgSU5JVF9UT0sgbCAtPiBhZ3MsIG1lcmdlX3Rva2VucyB0b2tzIChMaXN0Lm1hcCAoZnVuIHggLT4gbmEsIHgpIGwpKVxuXG5sZXQgc2lnX2Zyb21fcnVsZSAoYWdzLCB0b2tzKSByID1cbiAgbWF0Y2ggci5yZXdyaXRlIHdpdGhcbiAgfCBFZGl0IGUgLT4gbWVyZ2VfYWdlbnRzIGFncyBlLm1peCwgbWVyZ2VfdG9rZW5zIHRva3MgZS5kZWx0YV90b2tlblxuICB8IEFycm93IGEgLT5cbiAgICBsZXQgYWdzJywgdG9rcycgPVxuICAgICAgaWYgci5iaWRpcmVjdGlvbmFsIHRoZW5cbiAgICAgICAgbWVyZ2VfYWdlbnRzIGFncyBhLnJocywgbWVyZ2VfdG9rZW5zIHRva3MgYS5hZGRfdG9rZW5cbiAgICAgIGVsc2VcbiAgICAgICAgYWdzLCB0b2tzXG4gICAgaW5cbiAgICBtZXJnZV9hZ2VudHMgYWdzJyBhLmxocywgbWVyZ2VfdG9rZW5zIHRva3MnIGEucm1fdG9rZW5cblxubGV0IHNpZ19mcm9tX3J1bGVzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBwIChfLCAociwgXykpIC0+IHNpZ19mcm9tX3J1bGUgcCByKVxuXG5sZXQgc2lnX2Zyb21fcGVydHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoKF8sIF8sIHAsIF8pLCBfKSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBwIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBUFBMWSAoXywgKHIsIF8pKSAtPiBzaWdfZnJvbV9ydWxlIHAgclxuICAgICAgICAgIHwgVVBEQVRFIF8gfCBTVE9QIF8gfCBTTkFQU0hPVCBfIHwgUFJJTlQgXyB8IFBMT1RFTlRSWSB8IENGTE9XTEFCRUwgX1xuICAgICAgICAgIHwgQ0ZMT1dNSVggXyB8IERJTiBfIHwgRElOT0ZGIF8gfCBTUEVDSUVTX09GIF8gLT5cbiAgICAgICAgICAgIHApXG4gICAgICAgIGFjYyBwKVxuXG5sZXQgaW5mZXJfYWdlbnRfc2lnbmF0dXJlcyByID1cbiAgbGV0IGFjYyA9IHNpZ19mcm9tX2luaXRzIChyLnNpZ25hdHVyZXMsIHIudG9rZW5zKSByLmluaXQgaW5cbiAgbGV0IGFjYycgPSBzaWdfZnJvbV9ydWxlcyBhY2Mgci5ydWxlcyBpblxuICBsZXQgYWdzLCB0b2tzID0gc2lnX2Zyb21fcGVydHMgYWNjJyByLnBlcnR1cmJhdGlvbnMgaW5cbiAgeyByIHdpdGggc2lnbmF0dXJlcyA9IGFnczsgdG9rZW5zID0gdG9rcyB9XG5cbmxldCBzcGxpdF9taXh0dXJlIG0gPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIGwgKGxocywgcmhzKSAtPlxuICAgICAgbGV0IGxsLCByciA9XG4gICAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgIChmdW4gYWcgKChsaHMsIHJocykgYXMgcGFjaykgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnIHdpdGhcbiAgICAgICAgICAgIHwgQWJzZW50IF8gLT4gcGFja1xuICAgICAgICAgICAgfCBQcmVzZW50ICgoKF8sIHBvcykgYXMgbmEpLCBpbnRmLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG1vZGlmIHdpdGhcbiAgICAgICAgICAgICAgfCBDcmVhdGUgLT4gQWJzZW50IHBvcyA6OiBsaHMsIFByZXNlbnQgKG5hLCBpbnRmLCBOb01vZCkgOjogcmhzXG4gICAgICAgICAgICAgIHwgRXJhc2UgLT4gUHJlc2VudCAobmEsIGludGYsIE5vTW9kKSA6OiBsaHMsIEFic2VudCBwb3MgOjogcmhzXG4gICAgICAgICAgICAgIHwgTm9Nb2QgLT5cbiAgICAgICAgICAgICAgICBsZXQgaW50ZmwsIGludGZyID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGwsIHIpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgfCBQb3J0IHAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IHAucG9ydF9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnQgPSBwLnBvcnRfaW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnRfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGluayA9IHAucG9ydF9saW5rO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rX21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lID0gcC5wb3J0X25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfaW50X21vZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBwLnBvcnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoeCwgcG9zKSAtPiBbIFNvbWUgeCwgcG9zIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnRfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGluayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfbGlua19tb2Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gcC5wb3J0X2xpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSAoaSwgcG9zKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rX21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiByIClcbiAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBDb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjIHdpdGggY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyIHsgYyB3aXRoIGNvdW50ZXJfdGVzdCA9IE5vbmUgfSA6OiByICkpXG4gICAgICAgICAgICAgICAgICAgIChbXSwgW10pIGludGZcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggUHJlc2VudCAobmEsIGludGZsLCBOb01vZCkgOjogbGhzLFxuICAgICAgICAgICAgICAgICAgUHJlc2VudCAobmEsIGludGZyLCBOb01vZCkgOjogcmhzICkpKVxuICAgICAgICAgIGwgKFtdLCBbXSlcbiAgICAgIGluXG4gICAgICBsbCA6OiBsaHMsIHJyIDo6IHJocylcbiAgICBtIChbXSwgW10pXG5cbmxldCBjb21waWxfdG9fanNvbiBjID1cbiAgbGV0IGZpbGVzID1cbiAgICBBcnJheS5vZl9saXN0IChMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWUgOjogYy5maWxlbmFtZXMpXG4gIGluXG4gIGxldCBmaWxlbmFtZXMgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSBtYXAgeCAtPiBNb2RzLlN0cmluZ01hcC5hZGQgeCBpIG1hcClcbiAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGZpbGVzXG4gIGluXG4gIGxldCBtaXhfdG9fanNvbiA9XG4gICAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpKVxuICBpblxuICBsZXQgdmFyX3RvX2pzb24gPSBKc29uVXRpbC5vZl9zdHJpbmcgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJmaWxlbmFtZXNcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2Zfc3RyaW5nIGZpbGVzO1xuICAgICAgXCJzaWduYXR1cmVzXCIsIEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X3NpZ190b19qc29uIGZpbGVuYW1lcykgYy5zaWduYXR1cmVzO1xuICAgICAgKCBcInRva2Vuc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IChMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzKSBjLnRva2VucyApO1xuICAgICAgKCBcInZhcmlhYmxlc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpKVxuICAgICAgICAgIGMudmFyaWFibGVzICk7XG4gICAgICAoIFwicnVsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiAoTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKSlcbiAgICAgICAgICBjLnJ1bGVzICk7XG4gICAgICAoIFwib2JzZXJ2YWJsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICBjLm9ic2VydmFibGVzICk7XG4gICAgICAoIFwiaW5pdFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgKGluaXRfdG9fanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICBjLmluaXQgKTtcbiAgICAgICggXCJwZXJ0dXJiYXRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGZ1biAoYWxhcm0sIHByZSwgbW9kaWYsIHBvc3QpIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIE5ici50b195b2pzb24gYWxhcm07XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwcmU7XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgKG1vZGlmX3RvX2pzb24gZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKVxuICAgICAgICAgICAgICAgICAgICAgbW9kaWY7XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwb3N0O1xuICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBjLnBlcnR1cmJhdGlvbnMgKTtcbiAgICAgICggXCJjb25maWd1cmF0aW9uc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdCAoTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcykpKVxuICAgICAgICAgIGMuY29uZmlndXJhdGlvbnMgKTtcbiAgICBdXG5cbmxldCBjb21waWxfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA5IC0+XG4gICAgbGV0IHZhcl9vZl9qc29uID0gSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSBpblxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZW5hbWVzID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImZpbGVuYW1lc1wiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgbWl4X29mX2pzb24gPVxuICAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fbGlzdCAoYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgZmlsZW5hbWVzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBmaWxlbmFtZXMpO1xuICAgICAgICAgc2lnbmF0dXJlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIkFTVCBzaWduYXR1cmVcIilcbiAgICAgICAgICAgICAoYWdlbnRfc2lnX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwic2lnbmF0dXJlc1wiIGwpO1xuICAgICAgICAgdG9rZW5zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiQVNUIHRva2VuIHNpZ1wiKVxuICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidG9rZW5zXCIgbCk7XG4gICAgICAgICB2YXJpYWJsZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJBU1QgdmFyaWFibGVzXCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidmFyaWFibGVzXCIgbCk7XG4gICAgICAgICBydWxlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIkFTVCBydWxlc1wiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKHJ1bGVfb2ZfanNvbiBmaWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJ1bGVzXCIgbCk7XG4gICAgICAgICBvYnNlcnZhYmxlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOlxuICAgICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiQVNUIG9ic2VydmFibGVzXCIpXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwib2JzZXJ2YWJsZXNcIiBsKTtcbiAgICAgICAgIGluaXQgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJBU1QgaW5pdFwiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgICAgIChpbml0X29mX2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJpbml0XCIgbCk7XG4gICAgICAgICBwZXJ0dXJiYXRpb25zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6XG4gICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJBU1QgcGVydHVyYmF0aW9uc1wiKVxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBhbGFybTsgcHJlOyBtb2RpZjsgcG9zdCBdIC0+XG4gICAgICAgICAgICAgICAgICggSnNvblV0aWwudG9fb3B0aW9uIE5ici5vZl95b2pzb24gYWxhcm0sXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwcmUsXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgICAgICAgICAgKG1vZGlmX29mX2pzb24gZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAgICAgbW9kaWYsXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwb3N0IClcbiAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwZXJ0dXJiYXRpb25cIiwgeCkpKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInBlcnR1cmJhdGlvbnNcIiBsKTtcbiAgICAgICAgIGNvbmZpZ3VyYXRpb25zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6XG4gICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJBU1QgY29uZmlndXJhdGlvblwiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgKExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImNvbmZpZ3VyYXRpb25zXCIgbCk7XG4gICAgICAgICB2b2x1bWVzID0gW107XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1RcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVFwiLCB4KSlcblxubGV0IHdyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0ID0gWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYiAoY29tcGlsX3RvX2pzb24gYXN0KVxubGV0IHJlYWRfcGFyc2luZ19jb21waWwgcCBsYiA9IGNvbXBpbF9vZl9qc29uIChZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIpXG5sZXQgcHJpbnRfYXN0X21peCA9IHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2Egd2l0aF9hZ2VudF9jb3VudGVycyA9IHtcbiAgYWdlbnQ6ICdhO1xuICBjb3VudGVyczogKEFzdC5jb3VudGVyICogTEthcHBhLnN3aXRjaGluZykgb3B0aW9uIGFycmF5O1xufVxuXG50eXBlIHJ1bGVfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgTEthcHBhLnJ1bGVfYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycyBsaXN0XG5cbnR5cGUgcmF3X21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycyA9XG4gIFJhd19taXh0dXJlLmFnZW50IHdpdGhfYWdlbnRfY291bnRlcnMgbGlzdFxuXG50eXBlIGN2YXJfdmFsdWUgPSB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGludCB9XG5cbigqKiBbY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cCBsczEgbHMyXVxuICogRWFjaCBlbGVtZW50IG9mIFtsczFdIGRlc2NyaWJlcyBhIHNldHVwIG9mIGNvdW50ZXIgdmFyaWFibGVzLCB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSB0dXBsZSBiZWluZyB0aGUgbGlzdCBvZiBlbnRpdGllcyB0byBiZSB1c2VkIGluIHRoZSBtb2RlbCwgd2hlcmUgdmFyaWFibGVzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gY291bnRlcnMsIGFuZCB0aGUgc2Vjb25kIG9uZSB0aGUgbWFwcGluZyBvZiB2YXJpYWJsZXMgdG8gdGhlaXIgdmFsdWVzLCB0aGF0IGFsbG93cyB0byBrbm93IHdoaWNoIGluc3RhbmNlIG9mIG1vZGVsIGVudGl0aWVzIHdvdWxkIGJlIGNob3NlbiBpbiB0aGlzIGdpdmVuIHNldHVwLlxuICogW2xzMl0gYWRkcyBhIG5ldyBlbnRpdHkgd2l0aCBkaWZmZXJlbnQga2luZHMgYWNjb3JkaW5nIHRvIHRoZSB2YXJpYWJsZSB2YWx1ZXMgZ2l2ZW4gaW4gdGhlIGxpc3QgYXMgc2Vjb25kIG1lbWJlciBvZiB0aGUgdHVwbGUsIHdoaWNoIGlzIHRoZW4gY29tYmluZWQgaW4gdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBvdGhlciBzZXR1cHMsIGNvbWJpbmluZyB0aGUgZGlmZmVyZW50IHZhcmlhYmxlIHZhbHVlcyB3aGljaCB0aG9zZSBhbHJlYWR5IGRlZmluZWQuXG4gKiBObyBjaGVjayBpcyBkb25lIG9uIHRoZSB1bmljaXR5IG9mIHRoZSBkZXNjcmliZWQgdmFyaWFibGVzIGFuZCB0aGVpciB2YWx1ZXMgKilcbmxldCBjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwIChsczEgOiAoJ2EgbGlzdCAqICdiIGxpc3QpIGxpc3QpXG4gICAgKGxzMiA6ICgnYSAqICdiIGxpc3QpIGxpc3QpIDogKCdhIGxpc3QgKiAnYiBsaXN0KSBsaXN0ID1cbiAgaWYgbHMxID0gW10gdGhlblxuICAgIHJhaXNlIEV4aXQgKCpMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoYiwgZHMpIC0+IChbIGIgXSwgZHMpIDo6IGFjYykgW10gbHMyKilcbiAgZWxzZVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAoYSwgY3MpIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjJyAoYiwgZHMpIC0+IChiIDo6IGEsIGRzIEAgY3MpIDo6IGFjYycpIGFjYyBsczIpXG4gICAgICBbXSBsczFcblxubGV0IHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyAoaywgYSkgPVxuICBsZXQgdXBkYXRlX2lkIHMgayA9XG4gICAgbGV0IGNvdW50ZXJzX21hdGNoaW5nX3MsIF8gPVxuICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgKGZ1biB2YXJfdmFsdWUgLT4gU3RyaW5nLmNvbXBhcmUgcyB2YXJfdmFsdWUubmFtZSA9IDApXG4gICAgICAgIGNvdW50ZXJfdmFyX3ZhbHVlc1xuICAgIGluXG4gICAgbWF0Y2ggY291bnRlcnNfbWF0Y2hpbmdfcyB3aXRoXG4gICAgfCBbIHZhcl92YWx1ZSBdIC0+IEFsZ19leHByLkNPTlNUIChOYnIuSSB2YXJfdmFsdWUudmFsdWUpXG4gICAgfCBbXSAtPiBrXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICggRm9ybWF0LnNwcmludGYgXCJDb3VudGVyIHZhcmlhYmxlICVzIGFwcGVhcnMgdHdpY2UgaW4gcnVsZVwiIHMsXG4gICAgICAgICAgICAgTG9jLmR1bW15ICkpXG4gIGluXG5cbiAgbGV0IHJlYyB1cGRhdGVfYm9vbF9leHByIGsgPVxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgQWxnX2V4cHIuVFJVRSB8IEFsZ19leHByLkZBTFNFIC0+IGtcbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgKGsxLCBhMSksIChrMiwgYTIpKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0JPT0xfT1BcbiAgICAgICAgKG9wLCAodXBkYXRlX2Jvb2xfZXhwciBrMSwgYTEpLCAodXBkYXRlX2Jvb2xfZXhwciBrMiwgYTIpKVxuICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIChrLCBhKSkgLT5cbiAgICAgIEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCAodXBkYXRlX2Jvb2xfZXhwciBrLCBhKSlcbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpKVxuICBhbmQgdXBkYXRlX2V4cHIgayA9XG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKGsxLCBhMSksIChrMiwgYTIpKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsICh1cGRhdGVfZXhwciBrMSwgYTEpLCAodXBkYXRlX2V4cHIgazIsIGEyKSlcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIChrMSwgYTEpKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSkpXG4gICAgfCBBbGdfZXhwci5JRiAoKGsxLCBhMSksIChrMiwgYTIpLCAoazMsIGEzKSkgLT5cbiAgICAgIEFsZ19leHByLklGXG4gICAgICAgICgodXBkYXRlX2Jvb2xfZXhwciBrMSwgYTEpLCAodXBkYXRlX2V4cHIgazIsIGEyKSwgKHVwZGF0ZV9leHByIGszLCBhMykpXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOICgoazEsIGExKSwgazIpIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX1RPS0VOICgodXBkYXRlX2V4cHIgazEsIGExKSwgazIpXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgoaywgYSksIG0pIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgodXBkYXRlX2V4cHIgaywgYSksIG0pXG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGlkIHwgQWxnX2V4cHIuVE9LRU5fSUQgaWQgLT4gdXBkYXRlX2lkIGlkIGtcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgIGtcbiAgaW5cbiAgdXBkYXRlX2V4cHIgaywgYVxuXG5sZXQgY29sbGVjdF9pZHMgZXhwcl9saXN0IDogTW9kcy5TdHJpbmdTZXQudCA9XG4gIGxldCByZWMgYXV4X2V4cHIgZXhwciBhY2MgPVxuICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoXywgKGsxLCBfKSwgKGsyLCBfKSkgLT4gYXV4X2V4cHIgazIgKGF1eF9leHByIGsxIGFjYylcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAoXywgKGsxLCBfKSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKChrMSwgXyksIF8pXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgoazEsIF8pLCBfKSAtPlxuICAgICAgYXV4X2V4cHIgazEgYWNjXG4gICAgfCBBbGdfZXhwci5JRiAoKGsxLCBfKSwgKGsyLCBfKSwgKGszLCBfKSkgLT5cbiAgICAgIGF1eF9leHByIGszIChhdXhfZXhwciBrMiAoYXV4X2Jvb2wgazEgYWNjKSlcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBhdXhfaWQgaWQgYWNjXG4gICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgICBhY2NcbiAgYW5kIGF1eF9pZCBpZCBhY2MgPSBNb2RzLlN0cmluZ1NldC5hZGQgaWQgYWNjXG4gIGFuZCBhdXhfYm9vbCBleHByIGFjYyA9XG4gICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4gYWNjXG4gICAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgKGsxLCBfKSwgKGsyLCBfKSkgLT5cbiAgICAgIGF1eF9ib29sIGsyIChhdXhfYm9vbCBrMSBhY2MpXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCAoaywgXykpIC0+IGF1eF9ib29sIGsgYWNjXG4gICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPiBhdXhfZXhwciBrMiAoYXV4X2V4cHIgazEgYWNjKVxuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGV4cHJfb3B0IC0+XG4gICAgICBtYXRjaCBleHByX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgKGV4cHIsIF8pIC0+IGF1eF9leHByIGV4cHIgYWNjKVxuICAgIE1vZHMuU3RyaW5nU2V0LmVtcHR5IGV4cHJfbGlzdFxuXG5sZXQgbmFtZV9tYXRjaCAocywgXykgKHMnLCBfKSA9IFN0cmluZy5jb21wYXJlIHMgcycgPSAwXG5cbmxldCBwcmVwYXJlX2FnZW50IHJzaXRlcyBsc2l0ZXMgPVxuICBsZXQgcmVjIHByZXBhcmVfc2l0ZSBzaXRlcyBjID1cbiAgICBtYXRjaCBzaXRlcyB3aXRoXG4gICAgfCBbXSAtPiBbIEFzdC5Db3VudGVyIGMgXVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBoZCB3aXRoXG4gICAgICB8IEFzdC5Db3VudGVyIGMnIHdoZW4gbmFtZV9tYXRjaCBjLkFzdC5jb3VudGVyX25hbWUgYycuQXN0LmNvdW50ZXJfbmFtZSAtPlxuICAgICAgICBBc3QuQ291bnRlciB7IGMnIHdpdGggQXN0LmNvdW50ZXJfZGVsdGEgPSBjLkFzdC5jb3VudGVyX2RlbHRhIH0gOjogdGxcbiAgICAgIHwgQXN0LkNvdW50ZXIgXyB8IEFzdC5Qb3J0IF8gLT4gaGQgOjogcHJlcGFyZV9zaXRlIHRsIGMpXG4gIGluXG4gIGxldCBjb3VudGVycyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjJyByc2l0ZSAtPlxuICAgICAgICBtYXRjaCByc2l0ZSB3aXRoXG4gICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MnXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBjIDo6IGFjYycpXG4gICAgICBbXSByc2l0ZXNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgcHJlcGFyZV9zaXRlIGxzaXRlcyBjb3VudGVyc1xuXG4oKiAtIGFkZCBpbiB0aGUgbGhzIDogKGkpIGNvdW50ZXJzIG9ubHkgbWVudGlvbmVkIGluIHRoZSByaHMgYW5kIChpaSkgdGhlIGRlbHRhc1xuICAgLSBzeW50YWN0aWMgY2hlY2tzIG9mIG5vIHRlc3QgaW4gcmhzOyBubyBtb2RpZiBpbiBsaHMgKilcbmxldCBwcmVwYXJlX2NvdW50ZXJzIHJ1bGVzID1cbiAgbGV0IGNoZWNrX3N5bnRheCBzaXRlcyBmIGVycm9yID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gKClcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICAgICAgaWYgZiBjIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5Bc3QuY291bnRlcl9uYW1lIF4gZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjLkFzdC5jb3VudGVyX25hbWUgKSkpXG4gICAgICBzaXRlc1xuICBpblxuXG4gIGxldCByZWMgcHJlcGFyZV9saHNfcnVsZSByaHMgbGhzID1cbiAgICBtYXRjaCByaHMsIGxocyB3aXRoXG4gICAgfCBBc3QuUHJlc2VudCAocm5hLCByc2l0ZXMsIF8pIDo6IHIsIEFzdC5QcmVzZW50IChsbmEsIGxzaXRlcywgYikgOjogbCAtPlxuICAgICAgY2hlY2tfc3ludGF4IGxzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChMb2MudiBjLmNvdW50ZXJfZGVsdGEgPSAwKSlcbiAgICAgICAgXCIgaGFzIGEgbW9kaWYgaW4gdGhlIGxoc1wiO1xuICAgICAgY2hlY2tfc3ludGF4IHJzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChjLmNvdW50ZXJfdGVzdCA9IE5vbmUpKVxuICAgICAgICBcIiBoYXMgYSB0ZXN0IGluIHRoZSByaHNcIjtcbiAgICAgIGlmIFN0cmluZy5jb21wYXJlIChMb2MudiBybmEpIChMb2MudiBsbmEpID0gMCB0aGVuIChcbiAgICAgICAgbGV0IGxzaXRlcycgPSBwcmVwYXJlX2FnZW50IHJzaXRlcyBsc2l0ZXMgaW5cbiAgICAgICAgQXN0LlByZXNlbnQgKGxuYSwgbHNpdGVzJywgYikgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICAgICkgZWxzZVxuICAgICAgICBsaHNcbiAgICAgICgqVE9ETyB3ZSBzdG9wIG91ciBqb2IgaGVyZS4gTEthcHBhX2NvbXBpbGVyIHdpbGwgZGV0ZWN0XG4gICAgICAgIGxhdGVyIHRoYXQgdGhlcmUgaXMgYSBwcm9ibGVtICopXG4gICAgfCBfIDo6IHIsIChBc3QuQWJzZW50IF8gYXMgbGFnZW50KSA6OiBsIC0+XG4gICAgICAoKmNyZWF0ZWQgYWdlbnQqKVxuICAgICAgKCogVE9ETyBNYXliZSBzb21lIHN5bnRheCBjaGVjayBvbiByaHMgYXJlIG5lY2Vzc2FyeSBoZXJlICopXG4gICAgICBsYWdlbnQgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICB8IEFzdC5BYnNlbnQgXyA6OiByLCAoQXN0LlByZXNlbnQgKF8sIGxzaXRlcywgXykgYXMgbGFnZW50KSA6OiBsIC0+XG4gICAgICAoKmRlbGV0ZWQgIGFnZW50KilcbiAgICAgIGNoZWNrX3N5bnRheCBsc2l0ZXNcbiAgICAgICAgKGZ1biBjIC0+IG5vdCAoTG9jLnYgYy5Bc3QuY291bnRlcl9kZWx0YSA9IDApKVxuICAgICAgICBcIiBoYXMgYSBtb2RpZiBpbiB0aGUgbGhzXCI7XG4gICAgICBsYWdlbnQgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICB8IFtdLCB4IC0+XG4gICAgICB4XG4gICAgICAoKiBUT0RPIHggbXVzdCBiZSBbXSBidXQgaXQgaXMgZm9yIG5vdyBMS2FwcGFfY29tcGlsZXJcbiAgICAgICAgIGR1dHkgdG8gY29tcGxhaW4gKilcbiAgICB8IF94LCBbXSAtPiAoKlRPRE8gbGV0ICgpID0gYXNzZXJ0IChfeCA9IFtdKSBpbiopIFtdXG4gIGluXG5cbiAgbGV0IGF1eCAocnVsZSA6IEFzdC5ydWxlKSA6IEFzdC5ydWxlID1cbiAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgIHwgQXN0LkVkaXQgXyAtPiBydWxlXG4gICAgfCBBc3QuQXJyb3cgY29udGVudCAtPlxuICAgICAge1xuICAgICAgICBydWxlIHdpdGhcbiAgICAgICAgcmV3cml0ZSA9XG4gICAgICAgICAgQXN0LkFycm93XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICBBc3QubGhzID1cbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBwcmVwYXJlX2xoc19ydWxlIChMaXN0LmZsYXR0ZW4gY29udGVudC5yaHMpXG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmZsYXR0ZW4gY29udGVudC5saHMpO1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9O1xuICAgICAgfVxuICBpblxuICBMaXN0Lm1hcCAoZnVuIChzLCAociwgYSkpIC0+IHMsIChhdXggciwgYSkpIHJ1bGVzXG5cbmxldCBjb3VudGVyc19zaWduYXR1cmUgcyBhZ2VudHMgPVxuICBtYXRjaFxuICAgIExpc3QuZmluZFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGZhbHNlXG4gICAgICAgIHwgQXN0LlByZXNlbnQgKHMnLCBfLCBfKSAtPiBuYW1lX21hdGNoIHMgcycpXG4gICAgICBhZ2VudHNcbiAgd2l0aFxuICB8IEFzdC5BYnNlbnQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMnLCBfKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBzIC0+XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT4gYyA6OiBhY2NcbiAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYylcbiAgICAgIFtdIHNpdGVzJ1xuXG4oKiogW3NwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgdmFyX25hbWUgYW5ub3QgY291bnRlcl9kZWx0YSBjb3VudGVyX2RlZl0gdHJhbnNsYXRlcyBhIGNvdW50ZXIgQ1ZBUiB3aG9zZSB2YWx1ZSBhY3RzIHVwb24gdGhlIHJhdGUgZXhwcmVzc2lvbiBpbnRvIGEgcnVsZSBwZXIgcG9zc2libGUgdmFsdWUsIHRoYXQgYXJlIHNlbGVjdGVkIGJ5IGEgQ0VRwqBleHByZXNzaW9uLlxuICogKilcbmxldCBzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlICh2YXJfbmFtZSA6IHN0cmluZykgKGFubm90IDogTG9jLnQpXG4gICAgKGNvdW50ZXJfZGVsdGEgOiBpbnQgTG9jLmFubm90ZWQpIChjb3VudGVyX2RlZiA6IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWcpXG4gICAgOiAoQXN0LmNvdW50ZXIgQXN0LnNpdGUgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPVxuICBsZXQgKG1pbl92YWx1ZSwgbWF4X3ZhbHVlKSA6IGludCAqIGludCA9XG4gICAgbWF0Y2ggY291bnRlcl9kZWYuY291bnRlcl9zaWdfbWluLCBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19tYXggd2l0aFxuICAgIHwgU29tZSAoU29tZSBtaW5fbG9jLCBfKSwgU29tZSAoU29tZSBtYXhfbG9jLCBfKSAtPiBtaW5fbG9jLCBtYXhfbG9jXG4gICAgfCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSwgXyB8IF8sIChOb25lIHwgU29tZSAoTm9uZSwgXykpIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoIFwiSW52YWxpZCBjb3VudGVyIHNpZ25hdHVyZSAtIGhhdmUgdG8gc3BlY2lmeSBtaW4vbWF4IGJvdW5kXCIsXG4gICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19uYW1lICkpXG4gIGluXG4gICgqIE1ha2UgQ0VRIGNvdW50ZXJzIHdpdGggYWxsIHBvc3NpYmxlIHZhbHVlcyBvZiB2YXJpYWJsZSAqKVxuICBsZXQgcmVjIG1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbHVlcyAodmFsdWUgOiBpbnQpIDpcbiAgICAgIChBc3QuY291bnRlciBBc3Quc2l0ZSAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9XG4gICAgaWYgdmFsdWUgPiBtYXhfdmFsdWUgdGhlblxuICAgICAgW11cbiAgICBlbHNlIGlmXG4gICAgICB2YWx1ZSArIExvYy52IGNvdW50ZXJfZGVsdGEgPD0gbWF4X3ZhbHVlXG4gICAgICAmJiB2YWx1ZSArIExvYy52IGNvdW50ZXJfZGVsdGEgPj0gbWluX3ZhbHVlXG4gICAgdGhlblxuICAgICAgKCBBc3QuQ291bnRlclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19uYW1lO1xuICAgICAgICAgICAgY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNFUSB2YWx1ZSwgYW5ub3QpO1xuICAgICAgICAgICAgY291bnRlcl9kZWx0YTtcbiAgICAgICAgICB9LFxuICAgICAgICBbIHsgbmFtZSA9IHZhcl9uYW1lOyB2YWx1ZSB9IF0gKVxuICAgICAgOjogbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSArIDEpXG4gICAgZWxzZVxuICAgICAgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSArIDEpXG4gIGluXG4gIG1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbHVlcyBtaW5fdmFsdWVcblxubGV0IGhhc19jb3VudGVycyBjb21waWwgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW5jdGlvblxuICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgIHwgQXN0LlByZXNlbnQgKF8sIHNpdGVzLCBfKSAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQ291bnRlciBfIC0+IHRydWVcbiAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBmYWxzZSlcbiAgICAgICAgICBzaXRlcylcbiAgICBjb21waWwuQXN0LnNpZ25hdHVyZXNcblxuKCoqIFtzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzXSB+d2FybmluZyBydWxlcyBzaWduYXR1cmVzXSByZXBsYWNlcyBjb3VudGVycyB3aXRoIENWQVIgY29udHJhaW50cyB3aXRoIGNvdW50ZXJzIHdpdGggQ0VRIGNvbnRyYWludHMgaW4gW3J1bGVzXSwgaW4gbGlzdHMgd2l0aCB0aGUgdmFyaWFibGUgdmFsdWVzIGFzc29jaWF0ZWQsIHNvIHRoYXQgaW4gc2ltdWxhdGlvbiwgY29ycmVjdCBjb3VudGVyIGNvbmRpdGlvbnMgYXJlIGJlaW5nIHNlbGVjdGVkLiBUaGUgbWFpbiBvcGVyYXRpb24gaGFwcGVucyBpbiBbc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZV0gKilcbmxldCBzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nIHJ1bGVzIHNpZ25hdHVyZXMgPVxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZSBpZHMgY291bnRlcl9kZWZzID0gZnVuY3Rpb25cbiAgICB8IEFzdC5Qb3J0IHAgLT4gWyBBc3QuUG9ydCBwLCBbXSBdXG4gICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICBsZXQgY291bnRlcl9kZWYgOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnID1cbiAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgKGZ1biBjb3VudGVyIC0+XG4gICAgICAgICAgICBuYW1lX21hdGNoIGMuQXN0LmNvdW50ZXJfbmFtZSBjb3VudGVyLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSlcbiAgICAgICAgICBjb3VudGVyX2RlZnNcbiAgICAgIGluXG4gICAgICBsZXQgKG1pbl92YWx1ZSwgbWF4X3ZhbHVlKSA6IGludCAqIGludCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgKCBjb3VudGVyX2RlZi5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbixcbiAgICAgICAgICAgIGNvdW50ZXJfZGVmLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4IClcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUgKFNvbWUgbWluX2xvYywgXyksIFNvbWUgKFNvbWUgbWF4X2xvYywgXykgLT4gbWluX2xvYywgbWF4X2xvY1xuICAgICAgICB8IChOb25lIHwgU29tZSAoTm9uZSwgXykpLCBfIHwgXywgKE5vbmUgfCBTb21lIChOb25lLCBfKSkgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJJbnZhbGlkIGNvdW50ZXIgc2lnbmF0dXJlIC0gaGF2ZSB0byBzcGVjaWZ5IG1pbi9tYXggYm91bmRcIixcbiAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyX2RlZi5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGVsdGEgPSBMb2MudiBjLkFzdC5jb3VudGVyX2RlbHRhIGluXG4gICAgICAobWF0Y2ggYy5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgfCBTb21lIChBc3QuQ0VRIHZhbHVlLCBfKSAtPlxuICAgICAgICBpZlxuICAgICAgICAgIChkZWx0YSA+IDAgfHwgbWluX3ZhbHVlIDw9IHZhbHVlICsgZGVsdGEpXG4gICAgICAgICAgJiYgKGRlbHRhIDwgMCB8fCB2YWx1ZSArIGRlbHRhIDw9IG1heF92YWx1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIFsgQXN0LkNvdW50ZXIgYywgW10gXVxuICAgICAgICBlbHNlIGlmIGRlbHRhID4gMCB8fCBtaW5fdmFsdWUgPD0gdmFsdWUgKyBkZWx0YSB0aGVuXG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgIF4gXCIgYmVjb21lcyBsZXNzIHRoYW4gdGhlICAgbWluaW1hbCB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgbWluX3ZhbHVlLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuY291bnRlcl9uYW1lICkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgXiBcIiBiZWNvbWVzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW1hbCB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgbWF4X3ZhbHVlLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuY291bnRlcl9uYW1lICkpXG4gICAgICB8IFNvbWUgKEFzdC5DTFRFIF92YWx1ZSwgX2Fubm90KSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiPD0gU2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIG5vdCBpbXBsZW1lbnRlZFwiKSlcbiAgICAgICAgKCogVE9ET8KgTk9XICopXG4gICAgICB8IFNvbWUgKEFzdC5DR1RFIHZhbHVlLCBhbm5vdCkgLT5cbiAgICAgICAgaWYgdmFsdWUgKyBkZWx0YSA8IG1pbl92YWx1ZSB0aGVuXG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgIF4gXCIgYmVjb21lcyBsZXNzIHRoYW4gdGhhIG1pbmltYWwgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IG1pbl92YWx1ZSxcbiAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjLmNvdW50ZXJfbmFtZSApKTtcbiAgICAgICAgaWYgdmFsdWUgPSBtaW5fdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lIF4gXCI9PlwiIF4gc3RyaW5nX29mX2ludCBtaW5fdmFsdWVcbiAgICAgICAgICAgIF4gXCIgIGFsd2F5cyBob2xkc1wiXG4gICAgICAgICAgaW5cbiAgICAgICAgICB3YXJuaW5nIH5wb3M6YW5ub3QgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBlcnJvcilcbiAgICAgICAgKTtcbiAgICAgICAgWyBBc3QuQ291bnRlciBjLCBbXSBdXG4gICAgICB8IFNvbWUgKEFzdC5DVkFSIHZhcl9uYW1lLCBhbm5vdCkgd2hlbiBNb2RzLlN0cmluZ1NldC5tZW0gdmFyX25hbWUgaWRzIC0+XG4gICAgICAgICgqIElmIHRoZSB2YXJpYWJsZSBpcyBwcmVzZW50IGluIGFuIHJhdGUgZGVmaW5pdGlvbiBleHByZXNzaW9uICopXG4gICAgICAgIHNwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgdmFyX25hbWUgYW5ub3QgYy5jb3VudGVyX2RlbHRhXG4gICAgICAgICAgY291bnRlcl9kZWZcbiAgICAgIHwgTm9uZSB8IFNvbWUgKEFzdC5DVkFSIF8sIF8pIC0+XG4gICAgICAgIGlmIGRlbHRhIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgY291bnRlcl9kZWx0YSA6IEFzdC5jb3VudGVyID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYyB3aXRoXG4gICAgICAgICAgICAgIGNvdW50ZXJfdGVzdCA9IFNvbWUgKEFzdC5DR1RFIChhYnMgZGVsdGEgKyBtaW5fdmFsdWUpLCBMb2MuZHVtbXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgWyBBc3QuQ291bnRlciBjb3VudGVyX2RlbHRhLCBbXSBdXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgICggQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0dURSBtaW5fdmFsdWUsIExvYy5kdW1teSkgfSxcbiAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICBdKVxuICBpblxuXG4gIGxldCByZWMgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZXMgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpXG4gICAgICAoY291bnRlcl9kZWZzIDogQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZyBsaXN0KSA6XG4gICAgICBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0IC0+XG4gICAgICAoQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIFtdLCBbXSBdXG4gICAgfCBzIDo6IHQgLT5cbiAgICAgIGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXBcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIGlkcyBjb3VudGVyX2RlZnMgdClcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGUgaWRzIGNvdW50ZXJfZGVmcyBzKVxuICBpblxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfYWdlbnQgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpIDpcbiAgICAgIEFzdC5hZ2VudCAtPiAoQXN0LmFnZW50ICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IEFzdC5BYnNlbnQgbCAtPiBbIEFzdC5BYnNlbnQgbCwgW10gXVxuICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgIGxldCBjb3VudGVyX2RlZnMgPSBjb3VudGVyc19zaWduYXR1cmUgYWdlbnRfbmFtZSBzaWduYXR1cmVzIGluXG4gICAgICBsZXQgc2l0ZXNfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVzID1cbiAgICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZXMgaWRzIGNvdW50ZXJfZGVmcyBzaXRlc1xuICAgICAgaW5cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKHNpdGVzJywgdmFyX3ZhbHVlcykgLT5cbiAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZXMnLCBtb2RpZiksIHZhcl92YWx1ZXMpXG4gICAgICAgIHNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlc1xuICBpblxuICBsZXQgcmVjIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpIDpcbiAgICAgIEFzdC5hZ2VudCBsaXN0IC0+IChBc3QuYWdlbnQgbGlzdCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIFtdLCBbXSBdXG4gICAgfCBhc3RfYWdlbnQgOjogdCAtPlxuICAgICAgY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cFxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfbWl4dHVyZSBpZHMgdClcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX2FnZW50IGlkcyBhc3RfYWdlbnQpXG4gIGluXG5cbiAgbGV0IHVwZGF0ZV9vcHRfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHIgLT4gU29tZSAodXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHIpXG4gIGluXG4gIGxldCB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKHIxLCByMikgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKCB1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcjEsXG4gICAgICAgICAgdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyByMiApXG4gIGluXG5cbiAgKCogVE9ETyBbc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZV0gcnVsZSBldmFsdWVzIHRvIGEgbGlzdCBvZiBydWxlcyB3aXRoIHRoZWlyIG5hbWVzICopXG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9ydWxlXG4gICAgICAocnVsZV9uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICAgICgocnVsZSwgYW5ub3QpIDogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIDpcbiAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIGxpc3QgPVxuICAgIGxldCBtaXhfbGhzID1cbiAgICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgICB8IEFzdC5FZGl0IGNvbnRlbnQgLT4gY29udGVudC5taXhcbiAgICAgIHwgQXN0LkFycm93IGNvbnRlbnQgLT4gY29udGVudC5saHNcbiAgICBpblxuXG4gICAgKCogRmV0Y2ggaWRzIGZyb20gcnVsZSByYXRlcyAqKVxuICAgIGxldCBleHByc19mcm9tX3JhdGVzIDpcbiAgICAgICAgKEFzdC5taXh0dXJlLCBzdHJpbmcpIEthcHBhX3Rlcm1zLkFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uIGxpc3QgPVxuICAgICAgWyBTb21lIHJ1bGUua19kZWY7IHJ1bGUua19vcCBdXG4gICAgICBAIChtYXRjaCBydWxlLmtfdW4gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIHJfa3VuX3JhdGVzIC0+IFsgU29tZSAoZnN0IHJfa3VuX3JhdGVzKTsgc25kIHJfa3VuX3JhdGVzIF0pXG4gICAgICBAXG4gICAgICBtYXRjaCBydWxlLmtfb3BfdW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgcl9rX29wX3VuX3JhdGVzIC0+XG4gICAgICAgIFsgU29tZSAoZnN0IHJfa19vcF91bl9yYXRlcyk7IHNuZCByX2tfb3BfdW5fcmF0ZXMgXVxuICAgIGluXG4gICAgbGV0IGlkcyA9IGNvbGxlY3RfaWRzIGV4cHJzX2Zyb21fcmF0ZXMgaW5cblxuICAgIGxldCBtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlIDpcbiAgICAgICAgKEFzdC5hZ2VudCBsaXN0ICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID1cbiAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgaWRzIChMaXN0LmZsYXR0ZW4gbWl4X2xocylcbiAgICBpblxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChsaHMsIGNvdW50ZXJfdmFyX3ZhbHVlcykgLT5cbiAgICAgICAgKCogQXBwbHkgY291bnRlciB2YXIgdmFsdWVzIHRvIHJhdGVzICopXG4gICAgICAgIGxldCBrX2RlZiA9IHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfZGVmIGluXG4gICAgICAgIGxldCBrX3VuID0gdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX3VuIGluXG4gICAgICAgIGxldCBrX29wID0gdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfb3AgaW5cbiAgICAgICAgbGV0IGtfb3BfdW4gPSB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfb3BfdW4gaW5cbiAgICAgICAgbGV0IGxocyA9IFsgbGhzIF0gaW5cbiAgICAgICAgbGV0IG5ld19ydWxlX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uID1cbiAgICAgICAgICBpZiBjb3VudGVyX3Zhcl92YWx1ZXMgPSBbXSB0aGVuXG4gICAgICAgICAgICBydWxlX25hbWVcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIEJ1aWxkIGNvdW50ZXJzX2lkc19hc19zdHJpbmcsIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIG5ldyBydWxlIG5hbWVzICopXG4gICAgICAgICAgICBsZXQgY291bnRlcnNfaWRzX2FzX3N0cmluZyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKCogVE9ETyBzaG91bGQgd2UgYWRkIGEgc2VwYXJhdG9yLiBtYXliZSBhbHNvIGFkZCBuYW1lIG9mIHZhcmlhYmxlPyAqKVxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgdmFyX3ZhbHVlIC0+IHN0cmluZ19vZl9pbnQgdmFyX3ZhbHVlLnZhbHVlIF4gYWNjKVxuICAgICAgICAgICAgICAgIFwiXCIgY291bnRlcl92YXJfdmFsdWVzXG4gICAgICAgICAgICBpblxuXG4gICAgICAgICAgICBtYXRjaCBydWxlX25hbWUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUgKCogTm8gcnVsZSBuYW1lLCBuZXcgcnVsZXMgd2lsbCBoYXZlIG5vIG5hbWUgdG9vICopXG4gICAgICAgICAgICB8IFNvbWUgKHJ1bGVfbmFtZV9zdHJpbmcsIGxvY2FsaXR5KSAtPlxuICAgICAgICAgICAgICAoKiBNYWtlIGEgbmV3IG5hbWUgZm9yIG5ldyBydWxlIGluY2x1ZGluZyBjb3VudGVyX3Zhcl92YWx1ZXMgaW5mbyAqKVxuICAgICAgICAgICAgICBTb21lIChydWxlX25hbWVfc3RyaW5nIF4gXCJfX1wiIF4gY291bnRlcnNfaWRzX2FzX3N0cmluZywgbG9jYWxpdHkpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuXG4gICAgICAgICggbmV3X3J1bGVfbmFtZSxcbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgQXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQXN0LkVkaXQgY29udGVudCAtPiBBc3QuRWRpdCB7IGNvbnRlbnQgd2l0aCBBc3QubWl4ID0gbGhzIH1cbiAgICAgICAgICAgICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IEFzdC5BcnJvdyB7IGNvbnRlbnQgd2l0aCBBc3QubGhzIH0pO1xuICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gcnVsZS5iaWRpcmVjdGlvbmFsO1xuICAgICAgICAgICAgICBrX2RlZjtcbiAgICAgICAgICAgICAga191bjtcbiAgICAgICAgICAgICAga19vcDtcbiAgICAgICAgICAgICAga19vcF91bjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbm5vdCApICkpXG4gICAgICBtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlXG4gIGluXG5cbiAgbGV0IHJ1bGVzID0gcHJlcGFyZV9jb3VudGVycyBydWxlcyBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIChydWxlX25hbWUsIHJ1bGVfYW5ub3RlZCkgLT5cbiAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGUgcnVsZV9uYW1lIHJ1bGVfYW5ub3RlZCBAIGFjYylcbiAgICBbXSBydWxlc1xuICAoKiBUT0RPOiBpcyByZXYgcmVsZXZhbnQgaGVyZT8gKilcbiAgfD4gTGlzdC5yZXZcblxubGV0IHNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmcgfmRlYnVnX21vZGVcbiAgICAoY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKSA9XG4gIGxldCBydWxlcyA9XG4gICAgc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZyBjb21waWwucnVsZXNcbiAgICAgIGNvbXBpbC5zaWduYXR1cmVzXG4gIGluXG4gICgqIERlYnVnIHByaW50aW5nICopXG4gIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIkAuYXN0IHJ1bGVzQC5cIjtcbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKHMsIChyLCBfKSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobCwgXykgLT4gbFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQC4lcyA9ICVhXCIgbGFiZWwgQXN0LnByaW50X2FzdF9ydWxlIHIpXG4gICAgICBydWxlc1xuICApO1xuICB7IGNvbXBpbCB3aXRoIEFzdC5ydWxlcyB9XG5cbmxldCBtYWtlX2NvdW50ZXJfYWdlbnQgc2lncyAoaXNfZmlyc3QsIChkc3QsIHJhX2VyYXNlZCkpIChpc19sYXN0LCBlcXVhbCkgaSBqXG4gICAgbG9jIChjcmVhdGVkIDogYm9vbCkgOiBMS2FwcGEucnVsZV9hZ2VudCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcmFfdHlwZSA9IGNvdW50ZXJfYWdlbnRfaW5mby5pZCBpblxuXG4gIGxldCByYV9wb3J0cyA9XG4gICAgQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHlcbiAgICAgICgoTEthcHBhLkxOS19GUkVFLCBsb2MpLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGJlZm9yZV9zd2l0Y2ggPVxuICAgIGlmIGlzX2ZpcnN0IHRoZW5cbiAgICAgIGlmIGNyZWF0ZWQgdGhlblxuICAgICAgICBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGVsc2UgaWYgcmFfZXJhc2VkIHRoZW5cbiAgICAgICAgTEthcHBhLkVyYXNlZFxuICAgICAgZWxzZVxuICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgIGVsc2VcbiAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGlzX2ZpcnN0IHRoZW5cbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGksIGRzdCksIGxvY1xuICAgIGVsc2VcbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGksIChyYV90eXBlLCBwb3J0X2EpKSwgbG9jXG4gIGluXG4gIGxldCAoKSA9IHJhX3BvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSwgYmVmb3JlX3N3aXRjaCBpblxuICBsZXQgYWZ0ZXIgPVxuICAgIGlmIGlzX2xhc3QgJiYgZXF1YWwgdGhlblxuICAgICAgTEthcHBhLkxOS19GUkVFLCBsb2NcbiAgICBlbHNlIGlmIGlzX2xhc3QgdGhlblxuICAgICAgTEthcHBhLkxOS19BTlksIGxvY1xuICAgIGVsc2VcbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGosIChyYV90eXBlLCBwb3J0X2IpKSwgbG9jXG4gIGluXG4gIGxldCAoKSA9XG4gICAgcmFfcG9ydHMuKHBvcnRfYSkgPC1cbiAgICAgICggYWZ0ZXIsXG4gICAgICAgIGlmIHJhX2VyYXNlZCB0aGVuXG4gICAgICAgICAgTEthcHBhLkVyYXNlZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICBpblxuICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgY291bnRlcl9hZ2VudF9pbmZvLmFyaXR5IExLYXBwYS5JX0FOWSBpblxuICB7XG4gICAgTEthcHBhLnJhX3R5cGU7XG4gICAgcmFfZXJhc2VkO1xuICAgIHJhX3BvcnRzO1xuICAgIHJhX2ludHM7XG4gICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKTtcbiAgfVxuXG5sZXQgcmF3X2NvdW50ZXJfYWdlbnQgKGlzX2ZpcnN0LCBmaXJzdF9saW5rKSAoaXNfbGFzdCwgbGFzdF9saW5rKSBpIGogc2lncyBlcXVhbFxuICAgIDogUmF3X21peHR1cmUuYWdlbnQgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iLCBwb3J0X2EgPSBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbGV0IHBvcnRzID0gQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHkgUmF3X21peHR1cmUuRlJFRSBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eSAoZnVuIGkgLT5cbiAgICAgICAgU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgY291bnRlcl9hZ2VudF9pbmZvLmlkIGkgc2lncylcbiAgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgUmF3X21peHR1cmUuVkFMIGZpcnN0X2xpbmtcbiAgICBlbHNlXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgaVxuICBpblxuICBsZXQgKCkgPSBwb3J0cy4ocG9ydF9iKSA8LSBiZWZvcmUgaW5cbiAgbGV0IGFmdGVyID1cbiAgICBpZiBpc19sYXN0ICYmIGVxdWFsIHRoZW5cbiAgICAgIFJhd19taXh0dXJlLkZSRUVcbiAgICBlbHNlIGlmIGlzX2xhc3QgdGhlblxuICAgICAgUmF3X21peHR1cmUuVkFMIGxhc3RfbGlua1xuICAgIGVsc2VcbiAgICAgIFJhd19taXh0dXJlLlZBTCBqXG4gIGluXG4gIGxldCAoKSA9IHBvcnRzLihwb3J0X2EpIDwtIGFmdGVyIGluXG4gIHtcbiAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSBjb3VudGVyX2FnZW50X2luZm8uaWQ7XG4gICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IHBvcnRzO1xuICAgIFJhd19taXh0dXJlLmFfaW50cyA9IGludGVybmFscztcbiAgfVxuXG5sZXQgcmVjIGFkZF9pbmNyIChpIDogaW50KSAoZmlyc3RfbGluayA6IGludCkgKGxhc3RfbGluayA6IGludClcbiAgICAobWluX3ZhbHVlIDogaW50KSAoZGVsdGEgOiBpbnQpIChlcXVhbCA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpIDpcbiAgICBSYXdfbWl4dHVyZS5hZ2VudCBsaXN0ID1cbiAgaWYgaSA9IGRlbHRhIHRoZW5cbiAgICBbXVxuICBlbHNlIChcbiAgICBsZXQgaXNfZmlyc3QgPSBpID0gMCBpblxuICAgIGxldCBpc19sYXN0ID0gaSA9IGRlbHRhIC0gMSBpblxuICAgIGxldCByYXdfaW5jciA9XG4gICAgICByYXdfY291bnRlcl9hZ2VudCAoaXNfZmlyc3QsIGZpcnN0X2xpbmspIChpc19sYXN0LCBsYXN0X2xpbmspXG4gICAgICAgIChmaXJzdF9saW5rICsgaSlcbiAgICAgICAgKGZpcnN0X2xpbmsgKyBpICsgMSlcbiAgICAgICAgc2lncyBlcXVhbFxuICAgIGluXG4gICAgcmF3X2luY3IgOjogYWRkX2luY3IgKGkgKyAxKSBmaXJzdF9saW5rIGxhc3RfbGluayBtaW5fdmFsdWUgZGVsdGEgZXF1YWwgc2lnc1xuICApXG5cbmxldCByZWMgbGlua19pbmNyIChzaWdzIDogU2lnbmF0dXJlLnMpIChpIDogaW50KSAobmIgOiBpbnQpXG4gICAgKGFnX2luZm8gOiAoaW50ICogaW50KSAqIGJvb2wpIChlcXVhbCA6IGJvb2wpIChsaW5rIDogaW50KSAobG9jIDogTG9jLnQpXG4gICAgKG1pbl92YWx1ZSA6IGludCkgKGRlbHRhIDogaW50KSA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICBpZiBpID0gbmIgdGhlblxuICAgIFtdXG4gIGVsc2UgKFxuICAgIGxldCBpc19maXJzdCA9IGkgPSAwIGluXG4gICAgbGV0IGlzX2xhc3QgPSBpID0gbmIgLSAxIGluXG4gICAgbGV0IHJhX2FnZW50ID1cbiAgICAgIG1ha2VfY291bnRlcl9hZ2VudCBzaWdzIChpc19maXJzdCwgYWdfaW5mbykgKGlzX2xhc3QsIGVxdWFsKSAobGluayArIGkpXG4gICAgICAgIChsaW5rICsgaSArIDEpXG4gICAgICAgIGxvYyAoZGVsdGEgPiAwKVxuICAgIGluXG4gICAgcmFfYWdlbnQgOjogbGlua19pbmNyIHNpZ3MgKGkgKyAxKSBuYiBhZ19pbmZvIGVxdWFsIGxpbmsgbG9jIG1pbl92YWx1ZSBkZWx0YVxuICApXG5cbmxldCByZWMgZXJhc2VfaW5jciAoc2lncyA6IFNpZ25hdHVyZS5zKSAoaSA6IGludCkgKGluY3JzIDogTEthcHBhLnJ1bGVfbWl4dHVyZSlcbiAgICAoZGVsdGEgOiBpbnQpIChsaW5rIDogaW50KSA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBtYXRjaCBpbmNycyB3aXRoXG4gIHwgaW5jciA6OiBpbmNyX3MgLT5cbiAgICBpZiBpID0gYWJzIGRlbHRhIHRoZW4gKFxuICAgICAgbGV0IGJlZm9yZSwgXyA9IGluY3IuTEthcHBhLnJhX3BvcnRzLihwb3J0X2IpIGluXG4gICAgICBpbmNyLkxLYXBwYS5yYV9wb3J0cy4ocG9ydF9iKSA8LSBiZWZvcmUsIExLYXBwYS5MaW5rZWQgbGluaztcbiAgICAgIGluY3IgOjogaW5jcl9zXG4gICAgKSBlbHNlIChcbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAoYSwgXykgLT4gaW5jci5MS2FwcGEucmFfcG9ydHMuKGkpIDwtIGEsIExLYXBwYS5FcmFzZWQpXG4gICAgICAgIGluY3IuTEthcHBhLnJhX3BvcnRzO1xuICAgICAgbGV0IHJ1bGVfYWdlbnQgPSB7IGluY3Igd2l0aCBMS2FwcGEucmFfZXJhc2VkID0gdHJ1ZSB9IGluXG4gICAgICBydWxlX2FnZW50IDo6IGVyYXNlX2luY3Igc2lncyAoaSArIDEpIGluY3JfcyBkZWx0YSBsaW5rXG4gICAgKVxuICB8IFtdIC0+IFtdXG5cbigqKiBSZXR1cm5zIG1peHR1cmVzIGZvciBhZ2VudCB3aXRoIHNpdGUgY2hhbmdlZCBmcm9tIGNvdW50ZXIgdG8gcG9ydCwgYXMgd2VsbCBhcyBuZXcgW2xpbmtfbmJdIGFmdGVyIHByZXZpb3VzIGFkZGl0aW9uc1xuICogVXNlZCBieSBbY29tcGlsZV9jb3VudGVyX2luX3J1bGVfYWdlbnRdKilcbmxldCBjb3VudGVyX2JlY29tZXNfcG9ydCAoc2lncyA6IFNpZ25hdHVyZS5zKSAocmEgOiBMS2FwcGEucnVsZV9hZ2VudClcbiAgICAocG9ydF9pZCA6IGludCkgKGNvdW50ZXJfZGVmIDogQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZylcbiAgICAoY291bnRlciA6IEFzdC5jb3VudGVyKSAoc3RhcnRfbGlua19uYiA6IGludCkgOlxuICAgIChMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCkgKiBpbnQgPVxuICAoKiBSZXR1cm5zIHBvc2l0aXZlIHBhcnQgb2YgdmFsdWUgKilcbiAgbGV0IHBvc2l0aXZlX3BhcnQgKGkgOiBpbnQpIDogaW50ID1cbiAgICBpZiBpIDwgMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaVxuICBpblxuICBsZXQgKG1pbl92YWx1ZSwgX21heF92YWx1ZSkgOiBpbnQgKiBpbnQgPVxuICAgIG1hdGNoIGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX21pbiwgY291bnRlcl9kZWYuY291bnRlcl9zaWdfbWF4IHdpdGhcbiAgICB8IFNvbWUgKFNvbWUgbWluX2xvYywgXyksIFNvbWUgKFNvbWUgbWF4X2xvYywgXykgLT4gbWluX2xvYywgbWF4X2xvY1xuICAgIHwgKE5vbmUgfCBTb21lIChOb25lLCBfKSksIF8gfCBfLCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKCBcIkludmFsaWQgY291bnRlciBzaWduYXR1cmUgLSBoYXZlIHRvIHNwZWNpZnkgbWluL21heCBib3VuZFwiLFxuICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl9kZWYuY291bnRlcl9zaWdfbmFtZSApKVxuICBpblxuICBsZXQgbG9jIDogTG9jLnQgPSBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZSBpblxuICBsZXQgKGRlbHRhLCBsb2NfZGVsdGEpIDogaW50ICogTG9jLnQgPSBjb3VudGVyLkFzdC5jb3VudGVyX2RlbHRhIGluXG4gIGxldCBjb3VudGVyX3Rlc3QgOiBBc3QuY291bnRlcl90ZXN0IExvYy5hbm5vdGVkID1cbiAgICBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgIH5leGNlcDpcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkNvdW50ZXIgXCJcbiAgICAgICAgICAgICBeIExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgIF4gXCIgc2hvdWxkIGhhdmUgYSB0ZXN0IGJ5IG5vd1wiLFxuICAgICAgICAgICAgIGxvYyApKVxuICAgICAgY291bnRlci5Bc3QuY291bnRlcl90ZXN0XG4gIGluXG4gIGxldCAodGVzdCwgZXF1YWwpIDogaW50ICogYm9vbCA9XG4gICAgbWF0Y2ggTG9jLnYgY291bnRlcl90ZXN0IHdpdGhcbiAgICB8IEFzdC5DVkFSIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJDb3VudGVyIFwiXG4gICAgICAgICAgICAgXiBMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICBeIFwiIGRlZmluZXMgYSB2YXJpYWJsZSwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiByZXBsYWNlZCBieSBDRVEgXFxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zIGFmdGVyIHJ1bGUgc3BsaXR0aW5nXCIsXG4gICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyX3Rlc3QgKSlcbiAgICB8IEFzdC5DRVEgaiAtPiBqLCB0cnVlXG4gICAgfCBBc3QuQ0dURSBqIC0+IGosIGZhbHNlXG4gICAgfCBBc3QuQ0xURSBfaiAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiUE9SVCA6IDw9IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCwgbm90IGltcGxlbWVudGVkXCIpKVxuICAgICgqIFRPRE/CoG5vdyAqKVxuICBpblxuICBsZXQgc3RhcnRfbGlua19mb3JfY3JlYXRlZCA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyAodGVzdCAtIG1pbl92YWx1ZSArIDEpIGluXG4gIGxldCBsaW5rX2Zvcl9lcmFzZWQgOiBpbnQgPSBzdGFydF9saW5rX25iICsgYWJzIGRlbHRhICgqKyBtaW5fdmFsdWUqKSBpblxuICBsZXQgYWdfaW5mbyA6IChpbnQgKiBpbnQpICogYm9vbCA9XG4gICAgKHBvcnRfaWQsIHJhLkxLYXBwYS5yYV90eXBlKSwgcmEuTEthcHBhLnJhX2VyYXNlZFxuICBpblxuXG4gIGxldCB0ZXN0X2luY3IgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgICBsaW5rX2luY3Igc2lncyAwXG4gICAgICAodGVzdCArIDEgLSBtaW5fdmFsdWUpXG4gICAgICBhZ19pbmZvIGVxdWFsIHN0YXJ0X2xpbmtfbmIgbG9jIG1pbl92YWx1ZSBkZWx0YVxuICBpblxuICBsZXQgYWRqdXN0X2RlbHRhIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gICAgaWYgZGVsdGEgPCAwIHRoZW5cbiAgICAgIGVyYXNlX2luY3Igc2lncyAwIHRlc3RfaW5jciBkZWx0YSBsaW5rX2Zvcl9lcmFzZWRcbiAgICBlbHNlXG4gICAgICB0ZXN0X2luY3JcbiAgaW5cbiAgbGV0IGNyZWF0ZWQgOiBSYXdfbWl4dHVyZS50ID1cbiAgICBpZiBkZWx0YSA+IDAgdGhlblxuICAgICAgYWRkX2luY3IgMCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkIHN0YXJ0X2xpbmtfbmIgbWluX3ZhbHVlIGRlbHRhIGZhbHNlIHNpZ3NcbiAgICBlbHNlXG4gICAgICBbXVxuICBpblxuXG4gIGlmIHRlc3QgKyBkZWx0YSA8IG1pbl92YWx1ZSB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDb3VudGVyIHRlc3QgKyBkZWx0YSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG1pbl92YWx1ZVwiLCBsb2NfZGVsdGEpKTtcblxuICBsZXQgc3dpdGNoIDogTEthcHBhLnN3aXRjaGluZyA9XG4gICAgaWYgZGVsdGEgPSAwIHRoZW5cbiAgICAgIGlmIHJhLkxLYXBwYS5yYV9lcmFzZWQgdGhlblxuICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICBlbHNlXG4gICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgZWxzZSBpZiBkZWx0YSA+IDAgdGhlblxuICAgICAgTEthcHBhLkxpbmtlZCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxpbmtlZCBsaW5rX2Zvcl9lcmFzZWRcbiAgaW5cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA6IGludCA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgcmEuTEthcHBhLnJhX3BvcnRzLihwb3J0X2lkKSA8LVxuICAgICggKExLYXBwYS5MTktfVkFMVUUgKHN0YXJ0X2xpbmtfbmIsIChwb3J0X2IsIGNvdW50ZXJfYWdlbnRfaW5mby5pZCkpLCBsb2MpLFxuICAgICAgc3dpdGNoICk7XG4gIGxldCBuZXdfbGlua19uYiA6IGludCA9XG4gICAgc3RhcnRfbGlua19uYiArIDEgKyB0ZXN0ICsgcG9zaXRpdmVfcGFydCBkZWx0YSAtIG1pbl92YWx1ZVxuICBpblxuXG4gIChhZGp1c3RfZGVsdGEsIGNyZWF0ZWQpLCBuZXdfbGlua19uYlxuXG4oKiogQ29tcGlsZXMgdGhlIGNvdW50ZXIgcHJlY29uZGl0aW9uIGluIGEgbGVmdCBoYW5kIHNpZGUgbWl4dHVyZSBvZiBhIHJ1bGUgaW50byBhIG1peHR1cmUgd2hpY2ggdGVzdHMgZHVtbXkgcG9zaXRpb25zXG4gKiBydWxlX2FnZW50XyAtIGFnZW50IHdpdGggY291bnRlcnMgaW4gYSBydWxlXG4gICBsbmtfbmIgLSB0aGUgbWF4IGxpbmsgbnVtYmVyIHVzZWQgaW4gdGhlIHJ1bGU7XG4gICBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyAtIGluZm8gb24gdGhlIGNvdW50ZXIgYWdlbnRcbiAgIHJldHVybnM6IGFnZW50IHdpdGggZXhwbGljaXQgY291bnRlcnM7IGNyZWF0ZWQgaW5jciBhZ2VudHM7XG4gICAgICAgICAgICB0aGUgbmV4dCBsaW5rIG51bWJlciB0byB1c2UgKilcbmxldCBjb21waWxlX2NvdW50ZXJfaW5fcnVsZV9hZ2VudCAoc2lncyA6IFNpZ25hdHVyZS5zKVxuICAgIChjb3VudGVyc19kZWZzIDogQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZyBvcHRpb24gQXJyYXkudClcbiAgICAocnVsZV9hZ2VudF8gOiBMS2FwcGEucnVsZV9hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzKSAobG5rX25iIDogaW50KSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgKiBpbnQgPVxuICBsZXQgKGluY3JzLCBsbmtfbmInKSA6IChMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCkgbGlzdCAqIGludCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpZCAoYWNjX2luY3JzLCBsbmtfbmIpIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBhY2NfaW5jcnMsIGxua19uYlxuICAgICAgICB8IFNvbWUgKGNvdW50ZXIsIF8pIC0+XG4gICAgICAgICAgKG1hdGNoIGNvdW50ZXJzX2RlZnMuKGlkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgXCJTSUdOQVRVUkUgb2YgQ09VTlRFUlMgSVMgTk9UIElOSVRJQUxJWkVEXCIpKVxuICAgICAgICAgIHwgU29tZSBjb3VudGVyX3NpZyAtPlxuICAgICAgICAgICAgKCpsZXQgY291bnRlcl9kZWZzID0gKFNpZ25hdHVyZS5nZXQgc2lncyBydWxlX2FnZW50LnJhX3R5cGUpIGluKilcbiAgICAgICAgICAgICgqbGV0IGNvdW50ZXJfZGVmcyA9ICgqIFRPIERPICopXG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gIExvYy5hbm5vdF93aXRoX2R1bW15IFwiXCI7XG4gICAgICAgICAgICAgICAgY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICAgICAgICAgICAgICBjb3VudGVyX3NpZ19tYXggPSBOb25lO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICAgICAgICAgICAgY291bnRlcl9zaWdfZGVmYXVsdCA9IDA7XG4gICAgICAgICAgICAgIH0gaW4qKVxuICAgICAgICAgICAgbGV0IG5ld19pbmNycywgbmV3X2xua19uYiA9XG4gICAgICAgICAgICAgIGNvdW50ZXJfYmVjb21lc19wb3J0IHNpZ3MgcnVsZV9hZ2VudF8uYWdlbnQgaWQgY291bnRlcl9zaWcgY291bnRlclxuICAgICAgICAgICAgICAgIGxua19uYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG5ld19pbmNycyA6OiBhY2NfaW5jcnMsIG5ld19sbmtfbmIpXG4gICAgICAgICgqIEpGOiBsaW5rIGlkcyB3ZXJlIGNvbGxpZGluZyBhZnRlciBjb3VudGVyIGRlY3JlbWVudGF0aW9ucyAtPiBJIGRvIG5vdCB0aGluayB0aGF0IHdlIHNob3VsZCBhZGQgZGVsdGEgd2hlbiBuZWdhdGl2ZSAqKSlcbiAgICAgIChbXSwgbG5rX25iKSBydWxlX2FnZW50Xy5jb3VudGVyc1xuICBpblxuICBsZXQgKGFscywgYmxzKSA6IExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIChhbHMsIGJscykgKGEsIGIpIC0+IGEgQCBhbHMsIGIgQCBibHMpIChbXSwgW10pIGluY3JzXG4gIGluXG4gIGFscywgYmxzLCBsbmtfbmInXG5cbigqKiBDb21waWxlcyB0aGUgY291bnRlciB2YWx1ZSBjaGFuZ2UgaW4gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhIHJ1bGUgaW50byBkdW1teSBjaGFpbiBjaGFuZ2VzICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3Jhd19hZ2VudCAoc2lncyA6IFNpZ25hdHVyZS5zKVxuICAgIChjb3VudGVyc19pbmZvIDogQ291bnRlcnNfaW5mby50KVxuICAgIChyYXdfYWdlbnRfIDogUmF3X21peHR1cmUuYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycykgKGxua19uYiA6IGludCkgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IGxpc3QgKiBpbnQgPVxuICBsZXQgcmF3X2FnZW50IDogUmF3X21peHR1cmUuYWdlbnQgPSByYXdfYWdlbnRfLmFnZW50IGluXG4gIGxldCBwb3J0cyA6IFJhd19taXh0dXJlLmxpbmsgYXJyYXkgPSByYXdfYWdlbnQuUmF3X21peHR1cmUuYV9wb3J0cyBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBwb3J0X2lkIChhY2MsIGxua19uYikgLT4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBhY2MsIGxua19uYlxuICAgICAgfCBTb21lIChjLCBfKSAtPlxuICAgICAgICAobWF0Y2ggYy5Bc3QuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICByYXdfYWdlbnQuUmF3X21peHR1cmUuYV90eXBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImNvdW50ZXJcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgfCBTb21lICh0ZXN0LCBfKSAtPlxuICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgcmF3X2FnZW50LlJhd19taXh0dXJlLmFfdHlwZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIkBbJXNAXVwiIChMb2MudiBjLkFzdC5jb3VudGVyX25hbWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBBc3QuQ0dURSBfIHwgQXN0LkNMVEUgXyB8IEFzdC5DVkFSIF8gLT5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiY291bnRlclwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBBc3QuQ0VRIGogLT5cbiAgICAgICAgICAgIGxldCBwID0gUmF3X21peHR1cmUuVkFMIGxua19uYiBpblxuICAgICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBvcnRfaWQpIDwtIHAgaW5cbiAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZyA9XG4gICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uZ2V0X2NvdW50ZXJfc2lnIHNpZ3MgY291bnRlcnNfaW5mb1xuICAgICAgICAgICAgICAgIHJhd19hZ2VudC5SYXdfbWl4dHVyZS5hX3R5cGUgcG9ydF9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBtaW5fdmFsdWUgPVxuICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyX3NpZy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ291bnRlciAlcyBvZiBhZ2VudCAlcyBzaG91bGQgaGF2ZSBhIGxvd2VyIGJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfbmFtZSBhZ2VudF9uYW1lKSkpXG4gICAgICAgICAgICAgIHwgU29tZSAoU29tZSBtaW5fdmFsdWUsIF8pIC0+IG1pbl92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBjb3JyZWN0ZWRfaiA9IGogLSBtaW5fdmFsdWUgaW5cbiAgICAgICAgICAgIGxldCBmaW5hbF9sbmtfbmIgPSBsbmtfbmIgKyBjb3JyZWN0ZWRfaiBpblxuICAgICAgICAgICAgbGV0IGluY3JzID1cbiAgICAgICAgICAgICAgYWRkX2luY3IgMCBsbmtfbmIgZmluYWxfbG5rX25iIG1pbl92YWx1ZSAoY29ycmVjdGVkX2ogKyAxKSB0cnVlXG4gICAgICAgICAgICAgICAgc2lnc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjYyBAIGluY3JzLCBmaW5hbF9sbmtfbmIgKyAxKSkpXG4gICAgKFtdLCBsbmtfbmIpIHJhd19hZ2VudF8uY291bnRlcnNcblxubGV0IHJhd19hZ2VudF9oYXNfY291bnRlcnMgKGFnXyA6ICdhIHdpdGhfYWdlbnRfY291bnRlcnMpIDogYm9vbCA9XG4gIEFycmF5LmZvbGRfbGVmdCAoZnVuIG9rIHggLT4geCA8PiBOb25lIHx8IG9rKSBmYWxzZSBhZ18uY291bnRlcnNcblxubGV0IHJ1bGVfYWdlbnRfaGFzX2NvdW50ZXJzIChydWxlX2FnZW50IDogTEthcHBhLnJ1bGVfYWdlbnQpXG4gICAgKHNpZ3MgOiBTaWduYXR1cmUucykgOiBib29sID1cbiAgU2lnbmF0dXJlLmhhc19jb3VudGVyIChTaWduYXR1cmUuZ2V0IHNpZ3MgcnVsZV9hZ2VudC5yYV90eXBlKVxuXG4oKiogW2NvbXBpbGVfY291bnRlcl9pbl9ydWxlIHNpZ3MgbWl4IGNyZWF0ZWRdIHRha2VzIHRoZSBpbnRpYWwgbWl4dHVyZSBmcm9tIGEgcnVsZSBbbWl4XSxcbiAqIGFuZCB0aGUgbWl4dHVyZSBvYnRhaW5lZCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgcnVsZSBbY3JlYXRlZF0sXG4gKiBib3RoIHdpdGggY291bnRlciBpbmZvcm1hdGlvbiwgYW5kIHJldHVybnMgdHdvIG1peHR1cmVzIGZvciBhIG5ldyBydWxlIHdpdGhvdXQgY291bnRlcnMsIGhhdmluZyBjb21waWxlZCB0aGUgY291bnRlciBsb2dpYyBpbnNpZGUgdGhlIHJ1bGUuXG4gKlxuICogLSBhZGRzIGluY3JlbWVudCBhZ2VudHMgdG8gdGhlIHJ1bGVfYWdlbnQgbWl4dHVyZVxuICAgLSBhZGRzIGluY3JlbWVudCBhZ2VudHMgdG8gdGhlIHJhdyBtaXh0dXJlXG4gICAtIGxpbmtzIHRoZSBhZ2VudHMgaW4gdGhlIG1peHR1cmUobGhzLHJocyxtaXgpIG9yIGluIHRoZSByYXcgbWl4dHVyZShjcmVhdGVkKVxuICAgICB0byB0aGUgaW5jcmVtZW50cyAqKVxubGV0IGNvbXBpbGVfY291bnRlcl9pbl9ydWxlIChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKGNvdW50ZXJzX2luZm8gOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnIG9wdGlvbiBBcnJheS50IEFycmF5LnQpXG4gICAgKG1peCA6IHJ1bGVfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzKVxuICAgIChjcmVhdGVkIDogcmF3X21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycykgOlxuICAgIExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgbGV0IGhhc19jb3VudGVycyA6IGJvb2wgPVxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfaGFzX2NvdW50ZXJzIHJ1bGVfYWdlbnRfLmFnZW50IHNpZ3MpXG4gICAgICBtaXhcbiAgICB8fCBMaXN0LmV4aXN0cyAoZnVuIHJhd19hZ2VudF8gLT4gcmF3X2FnZW50X2hhc19jb3VudGVycyByYXdfYWdlbnRfKSBjcmVhdGVkXG4gIGluXG4gIGlmIGhhc19jb3VudGVycyB0aGVuIChcbiAgICBsZXQgbG5rX25iIDogaW50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG0gOiBpbnQpIHJ1bGVfYWdlbnRfIC0+XG4gICAgICAgICAgbWF4IG0gKExLYXBwYS5tYXhfbGlua19pZCBbIHJ1bGVfYWdlbnRfLmFnZW50IF0pKVxuICAgICAgICAwIG1peFxuICAgIGluXG4gICAgbGV0IChpbmNycywgaW5jcnNfY3JlYXRlZCwgbG5rX25iJykgOlxuICAgICAgICBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCAqIGludCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChtaXhfaW5jciwgY3JlYXRlZF9pbmNyLCBsbmtfbmIpIHJ1bGVfYWdlbnRfIC0+XG4gICAgICAgICAgbGV0IHJ1bGVfYWdlbnQgOiBMS2FwcGEucnVsZV9hZ2VudCA9IHJ1bGVfYWdlbnRfLmFnZW50IGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJfZGVmcyA9IGNvdW50ZXJzX2luZm8uKHJ1bGVfYWdlbnQuTEthcHBhLnJhX3R5cGUpIGluXG4gICAgICAgICAgbGV0IG1peF9pbmNyX25ldywgY3JlYXRlZF9pbmNyX25ldywgbG5rX25iJyA9XG4gICAgICAgICAgICBjb21waWxlX2NvdW50ZXJfaW5fcnVsZV9hZ2VudCBzaWdzIGNvdW50ZXJfZGVmcyBydWxlX2FnZW50XyBsbmtfbmJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1peF9pbmNyX25ldyBAIG1peF9pbmNyLCBjcmVhdGVkX2luY3JfbmV3IEAgY3JlYXRlZF9pbmNyLCBsbmtfbmInICsgMSlcbiAgICAgICAgKFtdLCBbXSwgbG5rX25iICsgMSlcbiAgICAgICAgbWl4XG4gICAgaW5cblxuICAgIGxldCBpbmNyc19jcmVhdGVkJyA6IFJhd19taXh0dXJlLnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoY3JlYXRlZF9pbmNyLCBsbmtfbmIpIHJhd19hZ2VudF8gLT5cbiAgICAgICAgICBsZXQgY3JlYXRlZF9pbmNyX25ldywgbG5rX25iJycgPVxuICAgICAgICAgICAgY29tcGlsZV9jb3VudGVyX2luX3Jhd19hZ2VudCBzaWdzIGNvdW50ZXJzX2luZm8gcmF3X2FnZW50XyBsbmtfbmJcbiAgICAgICAgICBpblxuICAgICAgICAgIGNyZWF0ZWRfaW5jcl9uZXcgQCBjcmVhdGVkX2luY3IsIGxua19uYicnKVxuICAgICAgICAoW10sIGxua19uYicgKyAxKVxuICAgICAgICBjcmVhdGVkXG4gICAgICB8PiBmc3RcbiAgICAgICgqIFdlIGRyb3AgdGhlIGxua19uYiBhcyB3ZSBkb24ndCBuZWVkIGluIHRoZSBmb2xsb3dpbmcgKilcbiAgICBpblxuICAgICgqIFJldHVybiBpbml0aWFsIG1peHR1cmVzIHdpdGggbmV3IGFnZW50cyBpbiBydWxlIGZyb20gY291bnRlciBjb21waWxhdGlvbiAqKVxuICAgIGxldCBydWxlX2FnZW50X21peCA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICAgICAgTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF8uYWdlbnQpIG1peCBpbmNyc1xuICAgIGluXG4gICAgbGV0IHJhd19taXggOiBSYXdfbWl4dHVyZS50ID1cbiAgICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAoZnVuIHJhd19hZ2VudF8gLT4gcmF3X2FnZW50Xy5hZ2VudClcbiAgICAgICAgY3JlYXRlZFxuICAgICAgICAoaW5jcnNfY3JlYXRlZCBAIGluY3JzX2NyZWF0ZWQnKVxuICAgIGluXG4gICAgcnVsZV9hZ2VudF9taXgsIHJhd19taXhcbiAgKSBlbHNlXG4gICAgKCBMaXN0LnJldl9tYXAgKGZ1biBydWxlX2FnZW50XyAtPiBydWxlX2FnZW50Xy5hZ2VudCkgKExpc3QucmV2IG1peCksXG4gICAgICBMaXN0LnJldl9tYXAgKGZ1biByYXdfYWdlbnRfIC0+IHJhd19hZ2VudF8uYWdlbnQpIChMaXN0LnJldiBjcmVhdGVkKSApXG5cbmxldCBydWxlX2FnZW50X3dpdGhfbWF4X2NvdW50ZXIgc2lncyBjICgoYWdlbnRfbmFtZSwgbG9jX2FnKSBhcyBhZ2VudF90eXBlKSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfdHlwZSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IGNfbmEgPSBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSBpblxuICBsZXQgY19pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjX25hIHNpZ24gaW5cbiAgbGV0IG1heF92YWwsIGxvYyA9XG4gICAgbWF0Y2ggYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgfCBTb21lIChTb21lIG1heCwgbG9jKSAtPiBtYXgsIGxvY1xuICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIGZzdCBjX25hIF4gXCIgaW4gXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgXiBcIiBzaG91bGQgaGF2ZSBhbiB1cHBlciBib3VuZFwiLFxuICAgICAgICAgICAgIGxvY19hZyApKVxuICBpblxuICBsZXQgbWF4X3ZhbCcgPSBtYXhfdmFsICsgMSBpblxuICBsZXQgbWluX3ZhbHVlID1cbiAgICBtYXRjaCBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluIHdpdGhcbiAgICB8IFNvbWUgKFNvbWUgbWluLCBfKSAtPiBtaW5cbiAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBmc3QgY19uYSBeIFwiIGluIFwiIF4gYWdlbnRfbmFtZVxuICAgICAgICAgICAgIF4gXCIgc2hvdWxkIGhhdmUgYSBsb3dlciBib3VuZFwiLFxuICAgICAgICAgICAgIGxvY19hZyApKVxuICBpblxuICBsZXQgaW5jcnMgPVxuICAgIGxpbmtfaW5jciBzaWdzIDBcbiAgICAgIChtYXhfdmFsJyArIDEgLSBtaW5fdmFsdWUpXG4gICAgICAoKGNfaWQsIGFnX2lkKSwgZmFsc2UpXG4gICAgICBmYWxzZSAxIGxvYyBtaW5fdmFsdWUgKC0xKVxuICBpblxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcCA9IExLYXBwYS5MTktfVkFMVUUgKDEsIChwb3J0X2IsIGNvdW50ZXJfYWdlbnRfaW5mby5pZCkpLCBsb2MgaW5cbiAgcG9ydHMuKGNfaWQpIDwtIHAsIExLYXBwYS5NYWludGFpbmVkO1xuICBsZXQgcmEgOiBMS2FwcGEucnVsZV9hZ2VudCA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICByYSA6OiBpbmNyc1xuXG5sZXQgY291bnRlcl9wZXJ0dXJiYXRpb24gc2lncyBjIGFnZW50X3R5cGUgPVxuICBsZXQgYW5ub3QgPSBMb2MuZ2V0X2Fubm90IGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lIGluXG4gIGxldCBmaWxlbmFtZSA9IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKFwiY291bnRlcl9wZXJ0dXJiYXRpb24ua2FcIiwgYW5ub3QpIF0gaW5cbiAgbGV0IHN0b3BfbWVzc2FnZSA9XG4gICAgXCJDb3VudGVyIFwiXG4gICAgXiBMb2MudiBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZVxuICAgIF4gXCIgb2YgYWdlbnQgXCIgXiBMb2MudiBhZ2VudF90eXBlIF4gXCIgcmVhY2hlZCBtYXhpbXVtXCJcbiAgaW5cbiAgbGV0IG1vZHMgPVxuICAgIFtcbiAgICAgIEFzdC5QUklOVCAoW10sIFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKFwiXCIsIGFubm90KSBdKTtcbiAgICAgIEFzdC5QUklOVCAoW10sIFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0b3BfbWVzc2FnZSwgYW5ub3QpIF0pO1xuICAgICAgQXN0LlNUT1AgZmlsZW5hbWU7XG4gICAgXVxuICBpblxuICBsZXQgdmFsX29mX2NvdW50ZXIgPVxuICAgIEFsZ19leHByLktBUFBBX0lOU1RBTkNFIChydWxlX2FnZW50X3dpdGhfbWF4X2NvdW50ZXIgc2lncyBjIGFnZW50X3R5cGUpXG4gIGluXG4gIGxldCBwcmUgPVxuICAgIEFsZ19leHByLkNPTVBBUkVfT1BcbiAgICAgICggT3BlcmF0b3IuRVFVQUwsXG4gICAgICAgICh2YWxfb2ZfY291bnRlciwgYW5ub3QpLFxuICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5JIDEpLCBhbm5vdCkgKVxuICBpblxuICAoIE5vbmUsXG4gICAgU29tZSAocHJlLCBMb2MuZ2V0X2Fubm90IGFnZW50X3R5cGUpLFxuICAgIG1vZHMsXG4gICAgU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIClcblxubGV0IGNvdW50ZXJzX3BlcnR1cmJhdGlvbnMgc2lncyBhc3Rfc2lncyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWNjXG4gICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIF8pIC0+XG4gICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAoZnVuIGFjYycgc2l0ZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MnXG4gICAgICAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICAgICAgICAgICAoY291bnRlcl9wZXJ0dXJiYXRpb24gc2lncyBjIGFnZW50X3R5cGUsIExvYy5nZXRfYW5ub3QgYWdlbnRfdHlwZSlcbiAgICAgICAgICAgICAgIDo6IGFjYycpXG4gICAgICAgICAgIGFjYyBzaXRlcykpXG4gICAgW10gYXN0X3NpZ3NcblxubGV0IG1ha2VfY291bnRlciBpIG5hbWUgPVxuICB7XG4gICAgQXN0LmNvdW50ZXJfbmFtZSA9IExvYy5hbm5vdF93aXRoX2R1bW15IG5hbWU7XG4gICAgY291bnRlcl90ZXN0ID0gU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFzdC5DRVEgaSkpO1xuICAgIGNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwO1xuICB9XG5cbmxldCBhZGRfY291bnRlcl90b19jb250YWN0X21hcCBzaWdzIGFkZF9saW5rX2NvbnRhY3RfbWFwID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiwgcG9ydF9hID0gY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGFkZF9saW5rX2NvbnRhY3RfbWFwIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2EgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uIChkZWx0YSwgbG9jKSA9XG4gIGlmIGRlbHRhICE9IDAgdGhlbiBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIGxvYyAoU29tZSBkZWx0YSlcblxubGV0IGFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMgc2lnbiBhc3RfY291bnRlcnMgcmEgYXJpdHkgYWdlbnRfbmFtZSBhdXggPVxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwb3J0X2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBvcnRfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmFpc2VfaWZfbW9kaWZpY2F0aW9uIGMuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdXggd2l0aFxuICAgICAgICAgIHwgU29tZSBmIC0+IGYgcG9ydF9pZFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC0gU29tZSAoYywgTEthcHBhLkVyYXNlZCk7XG4gICAgICAgIHBzZXQnKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgYXN0X2NvdW50ZXJzXG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9lZGl0X2NvdW50ZXJzIHNpZ3MgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eXBlKSBjb3VudGVycyByYVxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ2VudF90eXBlIHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHJhX2NvdW50ZXJzID0gQXJyYXkubWFrZSBhcml0eSBOb25lIGluXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2JcbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwb3J0X2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBvcnRfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBwb3J0X2lkIGluXG4gICAgICAgIGxldCAoKSA9IHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LSBTb21lIChjLCBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBjb3VudGVyc1xuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIHNpZ3MgKChhZ2VudF9uYW1lLCBsb2MpIGFzIGFnZW50X3R5cGUpIGxjIHJjIHJhXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBsZXQgKCkgPSBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2IgaW5cbiAgICBjLCBMS2FwcGEuTWFpbnRhaW5lZFxuICBpblxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IHJjX3IsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChyYywgY3NldCkgYyAtPlxuICAgICAgICBsZXQgKChuYSwgXykgYXMgY291bnRlcl9uYW1lKSA9IGMuQXN0LmNvdW50ZXJfbmFtZSBpblxuICAgICAgICBsZXQgY19pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjb3VudGVyX25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgY3NldCcgPSBNb2RzLkludFNldC5hZGQgY19pZCBjc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgY3NldCA9PSBjc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYycsIHJjJyA9XG4gICAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAgIChmdW4gcCAtPiBTdHJpbmcuY29tcGFyZSAoTG9jLnYgcC5Bc3QuY291bnRlcl9uYW1lKSBuYSA9IDApXG4gICAgICAgICAgICByY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYycnID1cbiAgICAgICAgICBtYXRjaCBjJyB3aXRoXG4gICAgICAgICAgfCBfIDo6IFtdIHwgW10gLT4gcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjIGNfaWRcbiAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmFfY291bnRlcnMuKGNfaWQpIDwtIFNvbWUgYycnIGluXG4gICAgICAgIHJjJywgY3NldCcpXG4gICAgICAocmMsIE1vZHMuSW50U2V0LmVtcHR5KSBsY1xuICBpblxuICBsZXQgXyA9XG4gICAgKCogdGVzdCBpZiBjb3VudGVyIG9mIHJocyBpcyBpbiB0aGUgc2lnbmF0dXJlICopXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYyAtPiBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lIHNpZ24pXG4gICAgICByY19yXG4gIGluXG4gIGlmIChub3QgKHJjID0gW10pKSAmJiBub3QgKHJjX3IgPSBbXSkgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ291bnRlcnMgaW4gXCIgXiBhZ2VudF9uYW1lIF4gXCIgc2hvdWxkIGhhdmUgdGVzdHMgYnkgbm93XCIsIGxvYykpO1xuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzICgoYWdlbnRfbmFtZSwgXykgYXMgYWdlbnRfdHlwZSkgY291bnRlcl9saXN0XG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgcmEgPVxuICBsZXQgYWdlbnRfaWQgOiBpbnQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgYWdlbnRfc2lnbmF0dXJlIDogU2lnbmF0dXJlLnQgPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdlbnRfaWQgaW5cbiAgbGV0IGFyaXR5IDogaW50ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdlbnRfaWQgaW5cbiAgbGV0IHJhX2NvdW50ZXJzIDogKEFzdC5jb3VudGVyICogTEthcHBhLnN3aXRjaGluZykgb3B0aW9uIGFycmF5ID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IE5vbmVcbiAgaW5cblxuICAoKiByZWdpc3RlciBhbGwgY291bnRlcnMgKHNwZWNpZmllZCBvciBub3QpIHdpdGggZGVmYXVsdCB2YWx1ZSAqKVxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gcG9ydF9pZCBfIC0+XG4gICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIHdpdGhcbiAgICAgIHwgU29tZSBjb3VudGVyX2luZm8gLT5cbiAgICAgICAgbGV0IGNvdW50ZXJfbmFtZSA9IFNpZ25hdHVyZS5zaXRlX29mX251bSBwb3J0X2lkIGFnZW50X3NpZ25hdHVyZSBpblxuICAgICAgICAodHJ5XG4gICAgICAgICAgICgqIGZpbmQgY291bnRlciBtYXRjaGluZyBwb3J0ICopXG4gICAgICAgICAgIGxldCBjIDogQXN0LmNvdW50ZXIgPVxuICAgICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgICAgKGZ1biBjJyAtPlxuICAgICAgICAgICAgICAgICBTdHJpbmcuY29tcGFyZSAoTG9jLnYgYycuQXN0LmNvdW50ZXJfbmFtZSkgY291bnRlcl9uYW1lID0gMClcbiAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC1cbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPSBjLkFzdC5jb3VudGVyX3Rlc3Q7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAwLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjb3VudGVyX25hbWUgfD4gTG9jLmFubm90X3dpdGhfZHVtbXk7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgIChBc3QuQ0VRIGNvdW50ZXJfaW5mby5jb3VudGVyX2RlZmF1bHRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICB8PiBMb2MuYW5ub3Rfd2l0aF9kdW1teSk7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAwLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkICkpXG4gICAgICB8IE5vbmUgLT4gKCkpXG4gICAgcmFfY291bnRlcnM7XG5cbiAgbGV0IHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnZW50X2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuICBpblxuICBsZXQgXyA6IE1vZHMuSW50U2V0LnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID1cbiAgICAgICAgICBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIGFnZW50X3NpZ25hdHVyZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAoKTtcbiAgICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICByZWdpc3Rlcl9jb3VudGVyX21vZGlmIHBvcnRfaWQ7XG4gICAgICAgICAgcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtIFNvbWUgKGMsIExLYXBwYS5NYWludGFpbmVkKTtcbiAgICAgICAgICBwc2V0JylcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGNvdW50ZXJfbGlzdFxuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG1hcF9vcHQgZiBvcHQgPVxuICBtYXRjaCBvcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG5cbigqIFRPRE8gb3JpZ2luYWxseV9mcm9tIHRlcm0vbEthcHBhLm1sLCBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgaGVyZSAqKVxubGV0IHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCAocG9zIDogTG9jLnQpID0gZnVuY3Rpb25cbiAgfCBBc3QuTm9Nb2QgLT4gKClcbiAgfCBBc3QuRXJhc2UgfCBBc3QuQ3JlYXRlIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIkEgbW9kaWZpY2F0aW9uIGlzIGZvcmJpZGRlbiBoZXJlLlwiLCBwb3MpKVxuXG5sZXQgYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBzd2l0Y2ggPVxuICBsZXQgdHlfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGRzdF90eSBzaWdzIGluXG4gIGxldCBwX2lkID0gU2lnbmF0dXJlLmlkX29mX3NpdGUgZHN0X3R5IGRzdF9wIHNpZ3MgaW5cbiAgKExLYXBwYS5MTktfVFlQRSAocF9pZCwgdHlfaWQpLCBwb3MpLCBzd2l0Y2hcblxubGV0IGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCBzdHkgc3AgZHR5IGRwID1cbiAgbWF0Y2ggY29udGFjdF9tYXAgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNvbnRhY3RfbWFwIC0+XG4gICAgbGV0IHNpLCBzbCA9IGNvbnRhY3RfbWFwLihzdHkpLihzcCkgaW5cbiAgICBsZXQgZGksIGRsID0gY29udGFjdF9tYXAuKGR0eSkuKGRwKSBpblxuICAgIGxldCAoKSA9IGNvbnRhY3RfbWFwLihzdHkpLihzcCkgPC0gc2ksIE1vZHMuSW50MlNldC5hZGQgKGR0eSwgZHApIHNsIGluXG4gICAgY29udGFjdF9tYXAuKGR0eSkuKGRwKSA8LSBkaSwgTW9kcy5JbnQyU2V0LmFkZCAoc3R5LCBzcCkgZGxcblxubGV0IHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgP2RzdF90eSBzaWdzIHNvcnQgc2l0ZSA9XG4gIGxldCB3YXJuaW5nX2Zvcl9jb3VudGVycyA9XG4gICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBzb3J0IHRoZW5cbiAgICAgIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGRzdF90eSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBzIC0+IFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3Mgc1xuICAgIClcbiAgaW5cblxuICBpZiBub3Qgd2FybmluZ19mb3JfY291bnRlcnMgdGhlblxuICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwicnVsZSBpbmR1Y2VzIGEgbGluayBwZXJtdXRhdGlvbiBvbiBzaXRlICclYScgb2YgYWdlbnQgJyVhJ1wiXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3Mgc29ydClcbiAgICAgICAgICBzaXRlXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgIHNvcnQpXG5cbmxldCBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGFnX3R5IHBfaWQgcG9zID1cbiAgTEthcHBhLnJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQgaVxuICAgIChsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdHJfZm9ybWF0dGVyIFwiJWFcIlxuICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgYWdfdHlcbiAgICAgaW5cbiAgICAgRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpXG4gICAgKCAobGV0ICgpID1cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdHJfZm9ybWF0dGVyIFwiJWFcIlxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgcF9pZFxuICAgICAgIGluXG4gICAgICAgRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpLFxuICAgICAgcG9zIClcblxubGV0IGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcCBzaWdzID9jb250YWN0X21hcCBwb3MgaSBhZ190eSBwX2lkIHN3aXRjaFxuICAgIChsaW5rc19vbmUsIGxpbmtzX3R3bykgPVxuICBpZiBNb2RzLkludE1hcC5tZW0gaSBsaW5rc190d28gdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKCBcIlRoaXMgaXMgdGhlIHRoaXJkIG9jY3VyZW5jZSBvZiBsaW5rICdcIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICBeIFwiJyBpbiB0aGUgc2FtZSBtaXh0dXJlLlwiLFxuICAgICAgICAgICBwb3MgKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucG9wIGkgbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUsIG9uZScgLT5cbiAgICAgIGxldCBuZXdfbGluayA9XG4gICAgICAgIG1hdGNoIHN3aXRjaCB3aXRoXG4gICAgICAgIHwgTEthcHBhLkxpbmtlZCBqIC0+IFNvbWUgalxuICAgICAgICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBOb25lXG4gICAgICBpblxuICAgICAgKCAoKExLYXBwYS5MTktfVkFMVUUgKGksICgtMSwgLTEpKSwgcG9zKSwgc3dpdGNoKSxcbiAgICAgICAgKE1vZHMuSW50TWFwLmFkZCBpIChhZ190eSwgcF9pZCwgbmV3X2xpbmssIHBvcywgc3dpdGNoKSBvbmUnLCBsaW5rc190d28pXG4gICAgICApXG4gICAgfCBTb21lIChkc3RfdHksIGRzdF9wLCBkc3RfaWQsIHBvcycsIHN3aXRjaCcpLCBvbmUnIC0+XG4gICAgICBpZiBTaWduYXR1cmUuYWxsb3dlZF9saW5rIGFnX3R5IHBfaWQgZHN0X3R5IGRzdF9wIHNpZ3MgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCBhZ190eSBwX2lkIGRzdF90eSBkc3RfcCBpblxuICAgICAgICBsZXQgbWFpbnRhaW5lZCA9XG4gICAgICAgICAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5MaW5rZWQgaiAtPlxuICAgICAgICAgICAgbGV0IGxpbmtfc3dhcCA9IFNvbWUgaiA8PiBkc3RfaWQgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxpbmtfc3dhcCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCB3YXJuX29uX3N3YXAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgU29tZSB3YXJuaW5nIC0+XG4gICAgICAgICAgICAgICAgICBydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiB+d2FybmluZyB+cG9zIH5kc3RfdHkgc2lncyBhZ190eVxuICAgICAgICAgICAgICAgICAgICBwX2lkXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBub3QgbGlua19zd2FwXG4gICAgICAgICAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLk1haW50YWluZWQgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF9jaGVja19jb21wYXRpYmlsdHkgPVxuICAgICAgICAgIG1hdGNoIHN3aXRjaCwgc3dpdGNoJyB3aXRoXG4gICAgICAgICAgfCBMS2FwcGEuTWFpbnRhaW5lZCwgTEthcHBhLk1haW50YWluZWQgLT4gKClcbiAgICAgICAgICB8IExLYXBwYS5NYWludGFpbmVkLCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXylcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGFnX3R5IHBfaWQgcG9zXG4gICAgICAgICAgfCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyksIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgc2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIGkgc2lncyBkc3RfdHkgZHN0X3AgcG9zJ1xuICAgICAgICAgIHwgKCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyksXG4gICAgICAgICAgICAgIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSApIC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICAoICggKExLYXBwYS5MTktfVkFMVUUgKGksIChkc3RfcCwgZHN0X3R5KSksIHBvcyksXG4gICAgICAgICAgICBpZiBtYWludGFpbmVkIHRoZW5cbiAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgc3dpdGNoICksXG4gICAgICAgICAgKG9uZScsIE1vZHMuSW50TWFwLmFkZCBpIChhZ190eSwgcF9pZCwgbWFpbnRhaW5lZCkgbGlua3NfdHdvKSApXG4gICAgICApIGVsc2VcbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiRm9yYmlkZGVuIGxpbmsgdG8gYSAlYS4lYSBmcm9tIHNpZ25hdHVyZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGRzdF90eSlcbiAgICAgICAgICAgICAgICAgZHN0X3BcbiAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgICBkc3RfdHksXG4gICAgICAgICAgICAgICBwb3MgKSlcbiAgKVxuXG5sZXQgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZSBzaWdzXG4gICAgbGlua3NfYW5ub3QgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLkVyYXNlZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9XG4gICAgQXJyYXkuaW5pdCBhcml0eSAoZnVuIGkgLT5cbiAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgYWdfaWQgaSBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IExLYXBwYS5JX0FOWVxuICAgICAgICB8IFNvbWUgXyAtPiBMS2FwcGEuSV9BTllfRVJBU0VEKVxuICBpblxuICBsZXQgbGFubm90LCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAobGFubm90LCBwc2V0KSBwIC0+XG4gICAgICAgIGxldCAoKF8sIHBfcG9zKSBhcyBwb3J0X25hbWUpID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwX2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmtfbW9kLCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgXyAtPiAoKVxuICAgICAgICAgIHwgU29tZSBOb25lLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSksIF8pIF1cbiAgICAgICAgICAoKiBbaS8uXSBpcyBhbGxvd2VkIGluIGRlZ3JhZGVkIGFnZW50LlxuICAgICAgICAgICAgIEl0IHdpbGwgYmUgY2hlY2tlZCBsYXRlciB0aGF0IHRoZSBvdGhlciBzaXRlIHdpdGggbGluayBpZCBpIGlzIGFsc28gZnJlZWQgaW4gdGhlIHJ1bGUgKilcbiAgICAgICAgICAoKiBQbGVhc2Ugbm90ZSB0aGF0IGEgcnVsZSB3cml0dGVuIGFzIEEoeFsxXSktLEIoeFsxLy5dKS0gaXMgYWxsb3dlZCAqKVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgfCAoIFNvbWUgKE5vbmUgfCBTb21lIF8pLFxuICAgICAgICAgICAgICAoIFtdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoXywgKCkpLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19GUkVFLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKF8sIF8pLCBfKSBdXG4gICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gKSApIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfaW50IHdpdGhcbiAgICAgICAgICB8IFtdIHwgWyAoTm9uZSwgXykgXSAtPiAoKVxuICAgICAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdIC0+XG4gICAgICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgICAgIExLYXBwYS5JX1ZBTF9FUkFTRURcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduKVxuICAgICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuQU5ZX0ZSRUUsIHBvcyksIExLYXBwYS5FcmFzZWQgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSAtPlxuICAgICAgICAgIGxldCBwb3J0X25hbWUsIHBvcyA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICBwb3J0X25hbWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRXJhc2VkIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdIC0+XG4gICAgICAgICAgbGV0IHBvcnRfbmFtZSwgcG9zID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCAoWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10pIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB8IFtdIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuQU5ZX0ZSRUUsIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0IHZhLCBsYW5ub3QnID1cbiAgICAgICAgICAgIGxldCB3YXJuX29uX3N3YXAgPVxuICAgICAgICAgICAgICBpZiByX2VkaXRfc3R5bGUgdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFNvbWUgd2FybmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcCBzaWdzIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkVyYXNlZCBsYW5ub3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgICAgIGxhbm5vdCcsIHBzZXQnXG4gICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSkpXG4gICAgICAobGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KVxuICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICBpblxuICBsZXQgcmEgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IHRydWU7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMgc2lnbiBjb3VudGVyX2xpc3QgcmEgYXJpdHlcbiAgICAgIGFnZW50X25hbWUgTm9uZSxcbiAgICBsYW5ub3QgKVxuXG5sZXQgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZSBzaWdzXG4gICAgP2NvbnRhY3RfbWFwIHJhbm5vdCAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBzaW1wbGVfcG9ydF9saXN0ID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9IEFycmF5Lm1ha2UgYXJpdHkgUmF3X21peHR1cmUuRlJFRSBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGFyaXR5IChmdW4gaSAtPiBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ19pZCBpIHNpZ3MpXG4gIGluXG4gIGxldCBfLCByYW5ub3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChwc2V0LCByYW5ub3QpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2QgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2ludCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgWyAoTm9uZSwgXykgXSAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJpbnRlcm5hbFwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgIGFnZW50X25hbWUgcG9ydF9uYW1lXG4gICAgICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0gLT5cbiAgICAgICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgU29tZSAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduKVxuICAgICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSBfLCBfKSBdXG4gICAgICAgIHwgXyA6OiBfIDo6IF8gLT5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBwb3J0X25hbWVcbiAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WNCAtPlxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIHBvcnRfbmFtZVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIFJhd19taXh0dXJlLlZBTCBpIGluXG4gICAgICAgICAgbGV0IF8sIHJhbm5vdCcgPVxuICAgICAgICAgICAgbGV0IHdhcm5fb25fc3dhcCA9XG4gICAgICAgICAgICAgIGlmIHJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgU29tZSB3YXJuaW5nXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICAgICAgTEthcHBhLkZyZWVkIHJhbm5vdFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHNldCcsIHJhbm5vdCdcbiAgICAgICAgfCBbICgoTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19GUkVFKSwgXykgXSB8IFtdIC0+IHBzZXQnLCByYW5ub3QpXG4gICAgICAoTW9kcy5JbnRTZXQuZW1wdHksIHJhbm5vdClcbiAgICAgIHNpbXBsZV9wb3J0X2xpc3RcbiAgaW5cbiAgKCByYW5ub3QsXG4gICAge1xuICAgICAgUmF3X21peHR1cmUuYV90eXBlID0gYWdfaWQ7XG4gICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgfSApXG5cbmxldCB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgP3dhcm5faW5mb1xuICAgICgobGhzX2xpbmtzLCByaHNfbGlua3MpIGFzIGxpbmtzX2Fubm90KSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBMS2FwcGEuTWFpbnRhaW5lZCwgbGlua3NfYW5ub3RcbiAgfCBTb21lIHggLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggd2Fybl9pbmZvIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChzaXRlX25hbWUsIHBvcykgLT5cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgc2l0ZV9uYW1lKVxuICAgIGluXG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBMS2FwcGEuRnJlZWQsIGxpbmtzX2Fubm90XG4gICAgfCBTb21lIChqLCBwb3NfaikgLT5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwOk5vbmUgc2lncyA/Y29udGFjdF9tYXAgcG9zX2ogaiBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIExLYXBwYS5MaW5rZWQgaiwgKGxoc19saW5rcywgcmhzX2xpbmtzJykpXG5cbmxldCBhbm5vdGF0ZV9lZGl0X2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzID9jb250YWN0X21hcFxuICAgICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGxpbmtzX2Fubm90IHNpbXBsZV9wb3J0X2xpc3QgY291bnRlcl9saXN0ID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IHNjYW5fcG9ydCAobGlua3NfYW5ub3QsIHBzZXQpIHAgPVxuICAgIGxldCBwb3J0X25hbWUsIF8gPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWUgc2lnbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBpblxuICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgaW5cbiAgICBsZXQgbGlua3NfYW5ub3QnID1cbiAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICB8IFsgKChMS2FwcGEuTE5LX1NPTUUsIHBvcykgYXMgeCkgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0geCwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgfndhcm5faW5mbzoocG9ydF9uYW1lLCBwb3MpIHNpZ3NcbiAgICAgICAgICAgID9jb250YWN0X21hcCBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuQU5ZX0ZSRUUsIHBvcyksIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCAoW10gfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0pIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFtdIHdoZW4gcC5Bc3QucG9ydF9saW5rX21vZCA9IE5vbmUgLT4gbGlua3NfYW5ub3RcbiAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10gLT5cbiAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCAobGhzX2xpbmtzLCByaHNfbGlua3MpID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nID93YXJuX2luZm86Tm9uZSBzaWdzID9jb250YWN0X21hcFxuICAgICAgICAgICAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgICAgYnVpbGRfbGluayBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXA6XG4gICAgICAgICAgICAgIChpZiBpc19ydWxlIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBjb250YWN0X21hcClcbiAgICAgICAgICAgID93YXJuX29uX3N3YXA6Tm9uZSBwb3MgaSBhZ19pZCBwX2lkIG1vZGlmIGxoc19saW5rc1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgICB8IF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQsIHAuQXN0LnBvcnRfaW50X21vZCB3aXRoXG4gICAgICB8IChbIChOb25lLCBfKSBdIHwgW10pLCBOb25lIC0+ICgpXG4gICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgU29tZSB2YScgLT5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgIExLYXBwYS5JX1ZBTF9DSEFOR0VEXG4gICAgICAgICAgICAoIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbixcbiAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhJyBzaWduIClcbiAgICAgIHwgW10sIFNvbWUgKChfLCBwb3MpIGFzIHZhKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIHRoZW5cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImludGVybmFsIHN0YXRlIG9mIHNpdGUgJyVzJyBvZiBhZ2VudCAnJXMnIGlzIG1vZGlmaWVkIFxcXG4gICAgICAgICAgICAgICAgICAgYWx0aG91Z2ggaXQgaXMgbGVmdCB1bnBlY2lmaWVkIGluIHRoZSBsZWZ0IGhhbmQgc2lkZVwiXG4gICAgICAgICAgICAgICAgICBwb3J0X25hbWUgYWdlbnRfbmFtZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoXCJNb2RpZmllZCBpbnRlcm5hbCBzdGF0ZSBtdXN0IGFwcGVhciBvbiB0aGUgbGVmdFwiLCBwb3MpKVxuICAgICAgICBpblxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRUQgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCB2YSBzaWduKVxuICAgICAgfCBbIChOb25lLCBfKSBdLCBTb21lIHZhIC0+XG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRCAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhIHNpZ24pXG4gICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgTm9uZSAtPlxuICAgICAgICBsZXQgaV9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbiBpblxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpX2lkLCBpX2lkKVxuICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgIGluXG4gICAgbGlua3NfYW5ub3QnLCBwc2V0J1xuICBpblxuICBsZXQgYW5ub3RlZCcsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNjYW5fcG9ydCAobGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KSBzaW1wbGVfcG9ydF9saXN0XG4gIGluXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2VkaXRfY291bnRlcnMgc2lncyBhZ190eSBjb3VudGVyX2xpc3QgcmFcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApLFxuICAgIGFubm90ZWQnIClcblxubGV0IGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBsaW5rc19hbm5vdCBscCBycCBsYyByYyA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCByZWdpc3Rlcl9wb3J0X21vZGlmIHBfaWQgbG5rMSBwJyAoKGxoc19saW5rcywgcmhzX2xpbmtzKSBhcyBsaW5rc19hbm5vdCkgPVxuICAgIGxldCAoKSA9XG4gICAgICBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uXG4gICAgICAgIChMb2MuZ2V0X2Fubm90IHAnLkFzdC5wb3J0X25hbWUpXG4gICAgICAgIHAnLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgaW5cbiAgICBtYXRjaCBsbmsxLCBwJy5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvcykgXSwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFtcbiAgICAgICAgICAoIExLYXBwYS5MTktfVFlQRSAoKChkc3RfcCcnLCBfKSBhcyBkc3RfcCksICgoZHN0X3R5JycsIF8pIGFzIGRzdF90eSkpLFxuICAgICAgICAgICAgcG9zICk7XG4gICAgICAgIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVFlQRSAoKGRzdF9wJywgXyksIChkc3RfdHknLCBfKSksIF8pIF0gKVxuICAgICAgd2hlbiBkc3RfcCcnID0gZHN0X3AnICYmIGRzdF90eScnID0gZHN0X3R5JyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvcyBkc3RfdHkgZHN0X3AgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBfLFxuICAgICAgICAoIFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIF8sIF8pIF0gKSApIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSAtPlxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRnJlZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSwgW11cbiAgICAgIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRnJlZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCAoWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gfCBbXSksXG4gICAgICAgIChbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSB8IFtdKSApXG4gICAgICB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbXSwgW10gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5GcmVlZFxuICAgICAgICAgIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5GcmVlZFxuICAgICAgICAgIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zX2xpbmspIF0sIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3NfbGluayksIExLYXBwYS5MaW5rZWQgaSBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MnKSBdIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5MaW5rZWQgaSBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MnIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8ICggWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zJykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LVxuICAgICAgICAgIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCAoTEthcHBhLkxpbmtlZCBpKVxuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zJyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCAoIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSApIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCBbXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkxpbmtlZCBpXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvc19pKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChqLCAoKSksIHBvc19qKSBdICkgLT5cbiAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgcG9zX2kgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgKExLYXBwYS5MaW5rZWQgaikgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3NfaiBqIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3MnXG4gICAgfCAoIFtcbiAgICAgICAgICAoICggTEthcHBhLkxOS19WQUxVRSAoXywgKCkpXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRVxuICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKF8sIF8pXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfQU5ZICksXG4gICAgICAgICAgICBfICk7XG4gICAgICAgIF0sXG4gICAgICAgIFtdICkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFtdLCBbICgoTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkxOS19WQUxVRSAoXywgXykpLCBfKSBdXG4gICAgICAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKVxuICAgIHwgXywgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSlcbiAgaW5cbiAgbGV0IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgaW50MSBwJyA9XG4gICAgbGV0ICgpID1cbiAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb25cbiAgICAgICAgKExvYy5nZXRfYW5ub3QgcCcuQXN0LnBvcnRfbmFtZSlcbiAgICAgICAgcCcuQXN0LnBvcnRfaW50X21vZFxuICAgIGluXG4gICAgbWF0Y2ggaW50MSwgcCcuQXN0LnBvcnRfaW50IHdpdGhcbiAgICB8IFtdLCBbXSB8IFsgKE5vbmUsIF8pIF0sIFsgKE5vbmUsIF8pIF0gLT4gKClcbiAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgWyAoU29tZSB2YScsIHBvcycpIF0gLT5cbiAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgTEthcHBhLklfVkFMX0NIQU5HRURcbiAgICAgICAgICAoIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbixcbiAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEnLCBwb3MnKSBzaWduIClcbiAgICB8IFtdLCBbIChTb21lIHZhLCB2YXBvcykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJpbnRlcm5hbCBzdGF0ZSBvZiBzaXRlICclcycgb2YgYWdlbnQgJyVzJyBpcyBtb2RpZmllZCBhbHRob3VnaCBcXFxuICAgICAgICAgICAgICAgaXQgaXMgbGVmdCB1bnBlY2lmaWVkIGluIHRoZSBsZWZ0IGhhbmQgc2lkZVwiXG4gICAgICAgICAgICAgIG5hIGFnZW50X25hbWUpXG4gICAgICBpblxuICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRFxuICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCB2YXBvcykgc2lnbilcbiAgICB8IFsgKE5vbmUsIF8pIF0sIFsgKFNvbWUgdmEsIHZhcG9zKSBdIC0+XG4gICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEXG4gICAgICAgICAgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHZhcG9zKSBzaWduKVxuICAgIHwgW10sIFsgXyBdIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImludGVybmFsXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbIF8gXSwgKFsgKE5vbmUsIF8pIF0gfCBbXSkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiaW50ZXJuYWxcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gfCBfLCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgaW5cbiAgbGV0IGZpbmRfaW5fciAobmEsIHBvcykgcnAgPVxuICAgIGxldCBwJywgciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIHAgLT4gU3RyaW5nLmNvbXBhcmUgKExvYy52IHAuQXN0LnBvcnRfbmFtZSkgbmEgPSAwKSBycFxuICAgIGluXG4gICAgbWF0Y2ggcCcgd2l0aFxuICAgIHwgWyBwJyBdIC0+IHAnLCByXG4gICAgfCBbXSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgKG5hLCBwb3MpXG4gICAgfCBfIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSAobmEsIHBvcylcbiAgaW5cbiAgbGV0IHJwX3IsIGFubm90ZWQsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChycCwgYW5ub3RlZCwgcHNldCkgcCAtPlxuICAgICAgICBsZXQgKChfLCBwX3BvcykgYXMgcG9ydF9uYW1lKSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2QgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cblxuICAgICAgICBsZXQgcCcsIHJwJyA9IGZpbmRfaW5fciBwb3J0X25hbWUgcnAgaW5cbiAgICAgICAgbGV0IGFubm90ZWQnID0gcmVnaXN0ZXJfcG9ydF9tb2RpZiBwX2lkIHAuQXN0LnBvcnRfbGluayBwJyBhbm5vdGVkIGluXG4gICAgICAgIGxldCAoKSA9IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgcC5Bc3QucG9ydF9pbnQgcCcgaW5cbiAgICAgICAgcnAnLCBhbm5vdGVkJywgcHNldCcpXG4gICAgICAocnAsIGxpbmtzX2Fubm90LCBNb2RzLkludFNldC5lbXB0eSlcbiAgICAgIGxwXG4gIGluXG4gIGxldCBhbm5vdGVkJyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYW5ub3RlZCBwIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBbXSBwIGluXG4gICAgICAgIHJlZ2lzdGVyX3BvcnRfbW9kaWYgcF9pZFxuICAgICAgICAgIFsgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlkgXVxuICAgICAgICAgIHAgYW5ub3RlZClcbiAgICAgIGFubm90ZWQgcnBfclxuICBpblxuXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NvdW50ZXJzX3dpdGhfZGlmZiBzaWdzIGFnX3R5IGxjIHJjIHJhXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKSxcbiAgICBhbm5vdGVkJyApXG5cbmxldCByZWZlcl9saW5rc19hbm5vdCA/d2FybmluZyBzaWdzIGxpbmtzX2Fubm90IG1peCA9XG4gIExpc3QuaXRlclxuICAgIChmdW4gKHJhXyA6IExLYXBwYS5ydWxlX2FnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMpIC0+XG4gICAgICBsZXQgcmEgPSByYV8uYWdlbnQgaW5cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGosICgtMSwgLTEpKSwgcG9zKSwgbW9kcyAtPlxuICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGogbGlua3NfYW5ub3Qgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgKGRzdF90eSwgZHN0X3AsIG1haW50YWluZWQpIC0+XG4gICAgICAgICAgICAgIGxldCBtb2RzJyA9XG4gICAgICAgICAgICAgICAgaWYgbWFpbnRhaW5lZCB0aGVuXG4gICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1vZHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBtYXRjaCBtb2RzJyB3aXRoXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLk1haW50YWluZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IExLYXBwYS5MaW5rZWQgXyAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHdhcm5pbmcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgd2FybmluZyAtPlxuICAgICAgICAgICAgICAgICAgICBydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiB+d2FybmluZyB+cG9zIH5kc3RfdHkgc2lnc1xuICAgICAgICAgICAgICAgICAgICAgIHJhLkxLYXBwYS5yYV90eXBlIGkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhLkxLYXBwYS5yYV9wb3J0cy4oaSkgPC1cbiAgICAgICAgICAgICAgICAoTEthcHBhLkxOS19WQUxVRSAoaiwgKGRzdF9wLCBkc3RfdHkpKSwgcG9zKSwgbW9kcycpXG4gICAgICAgICAgfCAoICggKCBMS2FwcGEuTE5LX1ZBTFVFIF8gfCBMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5MTktfU09NRVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgICAgICAgICBfICksXG4gICAgICAgICAgICAgIF8gKSAtPlxuICAgICAgICAgICAgKCkpXG4gICAgICAgIHJhLkxLYXBwYS5yYV9wb3J0cylcbiAgICBtaXhcblxubGV0IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIGxzID1cbiAgbGV0IGEsIGIgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChwcywgY3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlBvcnQgcCAtPiBwIDo6IHBzLCBjc1xuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT4gcHMsIGMgOjogY3MpXG4gICAgICAoW10sIFtdKSBsc1xuICBpblxuICBMaXN0LnJldiBhLCBiXG5cbmxldCBmaW5hbF9ydWxlX3Nhbml0eSA/d2FybmluZyBzaWdzXG4gICAgKChsaHNfbGlua3Nfb25lLCBsaHNfbGlua3NfdHdvKSwgKHJoc19saW5rc19vbmUsIF8pKSBtaXggPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgbGhzX2xpbmtzX29uZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChpLCAoXywgXywgXywgcG9zLCBfKSkgLT4gTEthcHBhLnJhaXNlX2xpbmtfb25seV9vbmVfb2NjdXJlbmNlIGkgcG9zXG4gIGluXG4gIGxldCAoKSA9IHJlZmVyX2xpbmtzX2Fubm90ID93YXJuaW5nIHNpZ3MgbGhzX2xpbmtzX3R3byBtaXggaW5cbiAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByaHNfbGlua3Nfb25lIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuXG4oKlxuSXMgcmVzcG9uc2libGUgZm9yIHRoZSBjaGVjayB0aGF0OlxuLSBhZ2VudCBleGlzdHNcbi0gc2l0ZXMgZXhpc3Rcbi0gdW5pcXVlIHNpdGUgb2NjdXJlbmNlIC8gYWdlbnRcbi0gaW50ZXJuYWxfc3RhdGVzIGV4aXN0XG4tIHVuaXF1ZSBpbnRlcm5hbF9zdGF0ZSAvIHNpdGVcbi0gbGlua3MgYXBwZWFyIGV4YWN0bHkgdHdpY2VcbiopXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92MyB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIGluXG4gIGxldCByZWMgYXV4IGxpbmtzX2Fubm90IGFjYyBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBBc3QuQWJzZW50IHBvcyA6OiBfLCBfIHwgKEFzdC5QcmVzZW50IF8gOjogXyB8IFtdKSwgQXN0LkFic2VudCBwb3MgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgfCAoIEFzdC5QcmVzZW50ICgoKGxhZ2VudF9uYW1lLCBscG9zKSBhcyBhZ190eSksIGxhZ19zLCBsbW9kKSA6OiBsdCxcbiAgICAgICAgQXN0LlByZXNlbnQgKChyYWdlbnRfbmFtZSwgcnBvcyksIHJhZ19zLCBybW9kKSA6OiBydCApXG4gICAgICB3aGVuIFN0cmluZy5jb21wYXJlIGxhZ2VudF9uYW1lIHJhZ2VudF9uYW1lID0gMFxuICAgICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IHRydWUgbGFnX3MgcmFnX3MgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBscG9zIGxtb2Q7XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcnBvcyBybW9kO1xuICAgICAgbGV0IGxhZ19wLCBsYWdfYyA9IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIGxhZ19zIGluXG4gICAgICBsZXQgcmFnX3AsIHJhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgcmFnX3MgaW5cbiAgICAgIGxldCByYSwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgICAgICAgIGFnX3R5IGxpbmtzX2Fubm90IGxhZ19wIHJhZ19wIGxhZ19jIHJhZ19jXG4gICAgICBpblxuICAgICAgYXV4IGxpbmtzX2Fubm90JyAocmEgOjogYWNjKSBsdCBydFxuICAgIHwgKChBc3QuUHJlc2VudCBfIDo6IF8gfCBbXSkgYXMgZXJhc2VkKSwgYWRkZWQgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGFkZGVkIDw+IFtdIHRoZW5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiAoKVxuICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgobGFnLCBwb3MpLCBsYWdfcCwgXykgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgocmFnLCBfKSwgcmFnX3AsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuY29tcGFyZSBsYWcgcmFnID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgQXN0Lm5vX21vcmVfc2l0ZV9vbl9yaWdodCBmYWxzZSBsYWdfcCByYWdfcClcbiAgICAgICAgICAgICAgICAgICAgYWRkZWRcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSdWxlIGluZHVjZWQgZGVsZXRpb24gQU5EIGNyZWF0aW9uIG9mIHRoZSBhZ2VudCAlc1wiIGxhZykpXG4gICAgICAgICAgICBlcmFzZWRcbiAgICAgIGluXG4gICAgICBsZXQgbWl4LCBsbGlua3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGFjYywgbGFubm90KSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfbmFtZSksIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBtb2RpZjtcbiAgICAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJhLCBsYW5ub3QnID1cbiAgICAgICAgICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzIGxhbm5vdCBhZ2VudF9uYW1lIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICByYSA6OiBhY2MsIGxhbm5vdCcpXG4gICAgICAgICAgKGFjYywgZnN0IGxpbmtzX2Fubm90KVxuICAgICAgICAgIGVyYXNlZFxuICAgICAgaW5cbiAgICAgIGxldCBjbWl4LCBybGlua3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGFjYywgcmFubm90KSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfbmFtZSksIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBtb2RpZjtcbiAgICAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJhbm5vdCcsIHgnID1cbiAgICAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzID9jb250YWN0X21hcCByYW5ub3QgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgeCcnID1cbiAgICAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKVxuICAgICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgeCcnIDo6IGFjYywgcmFubm90JylcbiAgICAgICAgICAoW10sIHNuZCBsaW5rc19hbm5vdClcbiAgICAgICAgICBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IGZpbmFsX3J1bGVfc2FuaXR5IH53YXJuaW5nIHNpZ3MgKGxsaW5rcywgcmxpbmtzKSBtaXggaW5cbiAgICAgIExpc3QucmV2IG1peCwgTGlzdC5yZXYgY21peFxuICBpblxuICBhdXhcbiAgICAoIChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpLFxuICAgICAgKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSkgKVxuICAgIFtdIChMaXN0LmZsYXR0ZW4gbGhzKSAoTGlzdC5mbGF0dGVuIHJocylcblxubGV0IGFubm90YXRlX2xoc193aXRoX2RpZmZfdjQgfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgbGhzIHJocyA9XG4gIGxldCBzeW50YXhfdmVyc2lvbiA9IEFzdC5WNCBpblxuICBsZXQgcmVjIGF1eCBsaW5rc19hbm5vdCBtaXggY21peCBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBbXSwgW10gLT4gbGlua3NfYW5ub3QsIG1peCwgY21peFxuICAgIHwgQXN0LkFic2VudCBfIDo6IGx0LCBBc3QuQWJzZW50IF8gOjogcnQgLT4gYXV4IGxpbmtzX2Fubm90IG1peCBjbWl4IGx0IHJ0XG4gICAgfCAoIEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfdHlwZSksIHNpdGVzLCBsbW9kKSA6OiBsdCxcbiAgICAgICAgQXN0LkFic2VudCBfIDo6IHJ0ICkgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3MgbG1vZDtcbiAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgaW5cbiAgICAgIGxldCByYSwgbGFubm90JyA9XG4gICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6ZmFsc2Ugc2lnc1xuICAgICAgICAgIChmc3QgbGlua3NfYW5ub3QpIGFnZW50X3R5cGUgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgIGluXG4gICAgICBhdXggKGxhbm5vdCcsIHNuZCBsaW5rc19hbm5vdCkgKHJhIDo6IG1peCkgY21peCBsdCBydFxuICAgIHwgKCBBc3QuQWJzZW50IF8gOjogbHQsXG4gICAgICAgIEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfdHlwZSksIHNpdGVzLCBybW9kKSA6OiBydCApIC0+XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIHJtb2Q7XG4gICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3NcbiAgICAgICAgICA/Y29udGFjdF9tYXAgKHNuZCBsaW5rc19hbm5vdCkgYWdlbnRfdHlwZSBzaW1wbGVfcG9ydF9saXN0XG4gICAgICBpblxuICAgICAgbGV0IHgnJyA9XG4gICAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMgc2lncyBhZ2VudF90eXBlIGNvdW50ZXJfbGlzdFxuICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgeCdcbiAgICAgIGluXG4gICAgICBhdXggKGZzdCBsaW5rc19hbm5vdCwgcmFubm90JykgbWl4ICh4JycgOjogY21peCkgbHQgcnRcbiAgICB8ICggQXN0LlByZXNlbnQgKCgobGFnZW50X25hbWUsIGxwb3MpIGFzIGFnX3R5KSwgbGFnX3MsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuUHJlc2VudCAoKHJhZ2VudF9uYW1lLCBycG9zKSwgcmFnX3MsIHJtb2QpIDo6IHJ0ICkgLT5cbiAgICAgIGlmXG4gICAgICAgIFN0cmluZy5jb21wYXJlIGxhZ2VudF9uYW1lIHJhZ2VudF9uYW1lID0gMFxuICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IHRydWUgbGFnX3MgcmFnX3NcbiAgICAgIHRoZW4gKFxuICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgbHBvcyBsbW9kO1xuICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcnBvcyBybW9kO1xuICAgICAgICBsZXQgbGFnX3AsIGxhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbGFnX3MgaW5cbiAgICAgICAgbGV0IHJhZ19wLCByYWdfYyA9IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHJhZ19zIGluXG4gICAgICAgIGxldCByYSwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICBhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ190eSBsaW5rc19hbm5vdCBsYWdfcCByYWdfcCBsYWdfYyByYWdfY1xuICAgICAgICBpblxuICAgICAgICBhdXggbGlua3NfYW5ub3QnIChyYSA6OiBtaXgpIGNtaXggbHQgcnRcbiAgICAgICkgZWxzZVxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiTGVmdCBoYW5kIHNpZGUvcmlnaHQgaGFuZCBzaWRlIGFnZW50IG1pc21hdGNoXCIsIHJwb3MpKVxuICAgIHwgKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXywgW11cbiAgICB8IFtdLCAoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcG9zKSlcbiAgaW5cbiAgbGV0IHJlYyBhdXhfbGluZSBsaW5rc19hbm5vdCBtaXggY21peCBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIGxldCAoKSA9IGZpbmFsX3J1bGVfc2FuaXR5IH53YXJuaW5nIHNpZ3MgbGlua3NfYW5ub3QgbWl4IGluXG4gICAgICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcbiAgICB8IGhsIDo6IHRsLCBociA6OiB0ciAtPlxuICAgICAgbGV0IGxpbmtzX2Fubm90JywgbWl4JywgY21peCcgPSBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggaGwgaHIgaW5cbiAgICAgIGF1eF9saW5lIGxpbmtzX2Fubm90JyBtaXgnIGNtaXgnIHRsIHRyXG4gICAgfCAoKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXykgOjogXywgW11cbiAgICB8IFtdLCAoKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXykgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiTGVmdCBoYW5kIHNpZGUvcmlnaHQgaGFuZCBzaWRlIGFnZW50IG1pc21hdGNoXCIsIHBvcykpXG4gICAgfCBbXSA6OiBfLCBbXSB8IFtdLCBbXSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJJbnZhcmlhbnQgdmlvbGF0aW9uIGluIGFubm90YXRlX2xoc193aXRoLi4uXCIpKVxuICBpblxuICBhdXhfbGluZVxuICAgICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApXG4gICAgW10gW10gbGhzIHJoc1xuXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgbGhzIHJocyA9XG4gIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgfCBBc3QuVjMgLT4gYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92MyB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzXG4gIHwgQXN0LlY0IC0+IGFubm90YXRlX2xoc193aXRoX2RpZmZfdjQgfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgbGhzIHJoc1xuXG5sZXQgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzID9jb250YWN0X21hcFxuICAgIChtIDogQXN0Lm1peHR1cmUpIDpcbiAgICBDb3VudGVyc19jb21waWxlci5ydWxlX21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVyc1xuICAgICogQ291bnRlcnNfY29tcGlsZXIucmF3X21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycyA9XG4gICgqIG1peCBpcyB0aGUgbWl4dHVyZSBmcm9tIGluaXRpYWwgc3RhdGUgb2YgdGhlIHJ1bGUsIGNtaXggaXMgdGhlIG1peHR1cmUgYWZ0ZXIgdGhlIHJ1bGUgd2FzIGFwcGxpZWQgKilcbiAgbGV0IGxpbmtzX2Fubm90LCBtaXgsIGNtaXggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAobGFubm90LCBhY2MsIG5ld3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBsYW5ub3QsIGFjYywgbmV3c1xuICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggbW9kaWYgd2l0aFxuICAgICAgICAgICB8IEFzdC5Ob01vZCAtPlxuICAgICAgICAgICAgIGxldCBhLCBsYW5ub3QnID1cbiAgICAgICAgICAgICAgIGFubm90YXRlX2VkaXRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3NcbiAgICAgICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnZW50X3R5cGUgbGFubm90IHNpbXBsZV9wb3J0X2xpc3QgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsYW5ub3QnLCBhIDo6IGFjYywgbmV3c1xuICAgICAgICAgICB8IEFzdC5DcmVhdGUgLT5cbiAgICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTp0cnVlIHNpZ3MgP2NvbnRhY3RfbWFwIChzbmQgbGFubm90KSBhZ2VudF90eXBlXG4gICAgICAgICAgICAgICAgIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCB4JycgPVxuICAgICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgICAgICAgIHgnXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoZnN0IGxhbm5vdCwgcmFubm90JyksIGFjYywgeCcnIDo6IG5ld3NcbiAgICAgICAgICAgfCBBc3QuRXJhc2UgLT5cbiAgICAgICAgICAgICBsZXQgcmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTp0cnVlIHNpZ3MgKGZzdCBsYW5ub3QpIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChsYW5ub3QnLCBzbmQgbGFubm90KSwgcmEgOjogYWNjLCBuZXdzKSkpXG4gICAgICAoICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSkgKSxcbiAgICAgICAgW10sXG4gICAgICAgIFtdIClcbiAgICAgIG1cbiAgaW5cbiAgZmluYWxfcnVsZV9zYW5pdHkgP3dhcm5pbmc6Tm9uZSBzaWdzIGxpbmtzX2Fubm90IG1peDtcbiAgTGlzdC5yZXYgbWl4LCBMaXN0LnJldiBjbWl4XG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKG0gOiBBc3QubWl4dHVyZSkgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdCA9XG4gIGxldCAocmhzX2xpbmtzX29uZSwgXyksIGNtaXggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAocmFubm90LCBuZXdzKSAtPiBmdW5jdGlvblxuICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGNhbm5vdCBvY2N1cnMgaW4gY3JlYXRlZCBtaXh0dXJlc1wiLCBwb3MpKVxuICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIF9tb2RpZikgLT5cbiAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHJhbm5vdCcsIHgnID1cbiAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlOnRydWVcbiAgICAgICAgICAgICAgIHNpZ3MgP2NvbnRhY3RfbWFwIHJhbm5vdCBhZ2VudF90eXBlIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHgnJyA9XG4gICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgIHgnXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHJhbm5vdCcsIHgnJyA6OiBuZXdzKSlcbiAgICAgICgoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSwgW10pXG4gICAgICBtXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByaHNfbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGksIChfLCBfLCBfLCBwb3MsIF8pKSAtPiBMS2FwcGEucmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3NcbiAgaW5cbiAgTGlzdC5yZXYgY21peFxuXG5sZXQgZ2l2ZV9ydWxlX2xhYmVsIGJpZGlyZWN0aW9uYWwgKGlkLCBzZXQpIHByaW50ZXIgciA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoc3VjYyBpZCwgc2V0KSwgRm9ybWF0LmFzcHJpbnRmIFwiciVpOiAlYVwiIGlkIHByaW50ZXIgclxuICB8IFNvbWUgKGxhYiwgcG9zKSAtPlxuICAgIGxldCBzZXQnID0gTW9kcy5TdHJpbmdTZXQuYWRkIGxhYiBzZXQgaW5cbiAgICBpZiBzZXQgPT0gc2V0JyB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJBIHJ1bGUgbmFtZWQgJ1wiIF4gbGFiIF4gXCInIGFscmVhZHkgZXhpc3RzLlwiLCBwb3MpKVxuICAgIGVsc2UgaWYgYmlkaXJlY3Rpb25hbCB0aGVuIChcbiAgICAgIGxldCBzZXQnJyA9IE1vZHMuU3RyaW5nU2V0LmFkZCAoQXN0LmZsaXBfbGFiZWwgbGFiKSBzZXQnIGluXG4gICAgICBpZiBzZXQnID09IHNldCcnIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIkEgcnVsZSBuYW1lZCAnXCIgXiBBc3QuZmxpcF9sYWJlbCBsYWIgXiBcIicgYWxyZWFkeSBleGlzdHMuXCIsIHBvcykpXG4gICAgICBlbHNlXG4gICAgICAgIChpZCwgc2V0JycpLCBsYWJcbiAgICApIGVsc2VcbiAgICAgIChpZCwgc2V0JyksIGxhYlxuXG5sZXQgbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyA/Y29udGFjdF9tYXBcbiAgICAocG9zIDogTG9jLnQpIChtaXggOiBBc3QubWl4dHVyZSkgPVxuICBtYXRjaFxuICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGU6ZmFsc2Ugc2lnc1xuICAgICAgP2NvbnRhY3RfbWFwIG1peFxuICB3aXRoXG4gIHwgciwgW10gLT5cbiAgICBmc3QgKENvdW50ZXJzX2NvbXBpbGVyLmNvbXBpbGVfY291bnRlcl9pbl9ydWxlIHNpZ3MgY291bnRlcnNfaW5mbyByIFtdKVxuICB8IF8sIF8gLT5cbiAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoXCJBIG1peHR1cmUgY2Fubm90IGNyZWF0ZSBhZ2VudHNcIiwgcG9zKSlcblxubGV0IHJhd19taXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lnc1xuICAgIChjb3VudGVyc19pbmZvIDogQ291bnRlcnNfaW5mby50KSA/Y29udGFjdF9tYXAgKG1peCA6IEFzdC5taXh0dXJlKSA9XG4gIGxldCBiID1cbiAgICBhbm5vdGF0ZV9jcmVhdGVkX21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwIG1peFxuICBpblxuICBzbmQgKENvdW50ZXJzX2NvbXBpbGVyLmNvbXBpbGVfY291bnRlcl9pbl9ydWxlIHNpZ3MgY291bnRlcnNfaW5mbyBbXSBiKVxuXG5sZXQgY29udmVydF9hbGdfdmFyID9tYXhfYWxsb3dlZF92YXIgYWxncyBsYWIgcG9zID1cbiAgbGV0IGkgPVxuICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiBhbGdzIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAobGFiIF4gXCIgaXMgbm90IGEgZGVjbGFyZWQgdmFyaWFibGVcIiwgcG9zKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBtYXhfYWxsb3dlZF92YXIgd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlJlZmVyZW5jZSB0byBub3QgeWV0IGRlZmluZWQgJ1wiIF4gbGFiIF4gXCInIGlzIGZvcmJpZGRlbi5cIiwgcG9zKSlcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gKClcbiAgaW5cbiAgaVxuXG5sZXQgY29udmVydF90b2tlbl9uYW1lIHRrX25hbWUgdG9rIHBvcyA9XG4gIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIHRrX25hbWUgdG9rIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKHRrX25hbWUgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB0b2tlblwiLCBwb3MpKVxuXG5sZXQgcmVjIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgP21heF9hbGxvd2VkX3ZhciAoYWxnLCBwb3MpID1cbiAgKCAobWF0Y2ggYWxnIHdpdGhcbiAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGFzdCAtPlxuICAgICAgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0VcbiAgICAgICAgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gcG9zIGFzdClcbiAgICB8IEFsZ19leHByLkFMR19WQVIgbGFiIC0+XG4gICAgICBBbGdfZXhwci5BTEdfVkFSIChjb252ZXJ0X2FsZ192YXIgP21heF9hbGxvd2VkX3ZhciBhbGdzIGxhYiBwb3MpXG4gICAgfCBBbGdfZXhwci5UT0tFTl9JRCB0a19uYW1lIC0+XG4gICAgICBBbGdfZXhwci5UT0tFTl9JRCAoY29udmVydF90b2tlbl9uYW1lIHRrX25hbWUgdG9rIHBvcylcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIGFzdCkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0VcbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBleHByLFxuICAgICAgICAgIG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gcG9zIGFzdCApXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0a19uYW1lKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9UT0tFTlxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGV4cHIsXG4gICAgICAgICAgY29udmVydF90b2tlbl9uYW1lIHRrX25hbWUgdG9rIHBvcyApXG4gICAgfCAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5DT05TVCBfKSBhcyB4IC0+IHhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGEsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYiApXG4gICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYSApXG4gICAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICAgIEFsZ19leHByLklGXG4gICAgICAgICggYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGNvbmQsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeWVzLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIG5vICkpLFxuICAgIHBvcyApXG5cbmFuZCBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICA/bWF4X2FsbG93ZWRfdmFyID0gZnVuY3Rpb25cbiAgfCAoKEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSksIF8pIGFzIHggLT4geFxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgeCwgeSksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuQklOX0JPT0xfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeCxcbiAgICAgICAgICBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeSApLFxuICAgICAgcG9zIClcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgeCksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuVU5fQk9PTF9PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4ICksXG4gICAgICBwb3MgKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCB4LCB5KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5DT01QQVJFX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ICksXG4gICAgICBwb3MgKVxuXG5sZXQgcHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxncyA9XG4gIGZ1bmN0aW9uXG4gIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgXyBhcyB4IC0+IHhcbiAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciB4IC0+XG4gICAgUHJpbWl0aXZlcy5BbGdfcGV4cHJcbiAgICAgIChhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxncyB4KVxuXG4oKiBJbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24gZm9yIGEgcnVsZSwgdXNlZCBiZXR3ZWVuIGludGVybmFsIHRyYW5zbGF0aW9ucyAqKVxudHlwZSBydWxlX2ludGVyX3JlcCA9IHtcbiAgbGFiZWxfb3B0OiAoc3RyaW5nICogTG9jLnQpIG9wdGlvbjtcbiAgYmlkaXJlY3Rpb25hbDogYm9vbDsgKCogVE9ETyBjaGVjayAqKVxuICBtaXh0dXJlOiBMS2FwcGEucnVsZV9hZ2VudCBDb3VudGVyc19jb21waWxlci53aXRoX2FnZW50X2NvdW50ZXJzIGxpc3Q7XG4gIGNyZWF0ZWRfbWl4OiBSYXdfbWl4dHVyZS5hZ2VudCBDb3VudGVyc19jb21waWxlci53aXRoX2FnZW50X2NvdW50ZXJzIGxpc3Q7XG4gIHJtX3Rva2VuOlxuICAgICgoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0O1xuICBhZGRfdG9rZW46XG4gICAgKCgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkpIGxpc3Q7XG4gIGtfZGVmOiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50O1xuICBrX3VuOlxuICAgICgoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudClcbiAgICAqICgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KSBvcHRpb24pXG4gICAgb3B0aW9uO1xuICBwb3M6IExvYy50O1xufVxuKCoqIEludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiBmb3IgcnVsZSB0eXBlICopXG5cbigqKiBbYXNzZW1ibGVfcnVsZV0gdHJhbnNsYXRlcyBhIHJ1bGVfaW50ZXJfcmVwIGludG8gYSBMS2FwcGEucnVsZSAqKVxubGV0IGFzc2VtYmxlX3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIChydWxlIDogcnVsZV9pbnRlcl9yZXApXG4gICAgKHNpZ3MgOiBTaWduYXR1cmUucykgY291bnRlcnNfaW5mbyAodG9rIDogaW50IE1vZHMuU3RyaW5nTWFwLnQpXG4gICAgKGFsZ3MgOiBpbnQgTW9kcy5TdHJpbmdNYXAudCkgOiBMS2FwcGEucnVsZSA9XG4gIGxldCAocl9taXgsIHJfY3JlYXRlZCkgOiBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCA9XG4gICAgQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBjb3VudGVyc19pbmZvIHJ1bGUubWl4dHVyZVxuICAgICAgcnVsZS5jcmVhdGVkX21peFxuICBpblxuXG4gIGxldCByX2RlbHRhX3Rva2VucyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIChhbCwgKHRrLCBwb3MpKSAtPlxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0FMR19PUCAoT3BlcmF0b3IuVU1JTlVTLCBhbCkpKSxcbiAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGsgdG9rIHBvcyApKVxuICAgICAgcnVsZS5ybV90b2tlblxuICAgIHw+IExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAgKGZ1biAoYWwsICh0aywgcG9zKSkgLT5cbiAgICAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2tcbiAgICAgICAgICAgICAgIGFsZ3MgYWwsXG4gICAgICAgICAgICAgY29udmVydF90b2tlbl9uYW1lIHRrIHRvayBwb3MgKSlcbiAgICAgICAgIHJ1bGUuYWRkX3Rva2VuXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgbGV0IHJfcmF0ZSA9XG4gICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgIHJ1bGUua19kZWZcbiAgaW5cbiAgbGV0IHJfdW5fcmF0ZSA9XG4gICAgbGV0IHJfZGlzdCBkID1cbiAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgID9tYXhfYWxsb3dlZF92YXI6Tm9uZSBkXG4gICAgaW5cbiAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgIChmdW4gKHVuX3JhdGUnLCBkaXN0KSAtPlxuICAgICAgICBsZXQgdW5fcmF0ZScnID1cbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcjpOb25lIHVuX3JhdGUnXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGRpc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgZCAtPiB1bl9yYXRlJycsIFNvbWUgKHJfZGlzdCBkKVxuICAgICAgICB8IE5vbmUgLT4gdW5fcmF0ZScnLCBOb25lKVxuICAgICAgcnVsZS5rX3VuXG4gIGluXG4gIHtcbiAgICBMS2FwcGEucl9taXg7XG4gICAgcl9jcmVhdGVkO1xuICAgIHJfZWRpdF9zdHlsZSA9IHJ1bGUuYmlkaXJlY3Rpb25hbDtcbiAgICByX2RlbHRhX3Rva2VucztcbiAgICByX3JhdGU7XG4gICAgcl91bl9yYXRlO1xuICB9XG5cbmxldCBtb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgY29udGFjdF9tYXAgbW9kaWYgYWNjID1cbiAgbWF0Y2ggbW9kaWYgd2l0aFxuICB8IEFzdC5BUFBMWSAobmIsIChhc3RfcnVsZSwgcG9zKSkgLT5cbiAgICBsZXQgcnVsZSA6IHJ1bGVfaW50ZXJfcmVwID1cbiAgICAgIG1hdGNoIGFzdF9ydWxlLkFzdC5yZXdyaXRlIHdpdGhcbiAgICAgIHwgQXN0LkVkaXQgcnVsZV9jb250ZW50IC0+XG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQgfmlzX3J1bGU6dHJ1ZVxuICAgICAgICAgICAgc2lncyB+Y29udGFjdF9tYXAgcnVsZV9jb250ZW50Lm1peFxuICAgICAgICBpblxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWxfb3B0ID0gTm9uZTtcbiAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gdHJ1ZTtcbiAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICAgIHJtX3Rva2VuID0gW107XG4gICAgICAgICAgYWRkX3Rva2VuID0gcnVsZV9jb250ZW50LmRlbHRhX3Rva2VuO1xuICAgICAgICAgIGtfZGVmID0gYXN0X3J1bGUua19kZWY7XG4gICAgICAgICAga191biA9IGFzdF9ydWxlLmtfdW47XG4gICAgICAgICAgcG9zO1xuICAgICAgICB9XG4gICAgICB8IEFzdC5BcnJvdyBydWxlX2NvbnRlbnQgLT5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICAgICAgcnVsZV9jb250ZW50LmxocyBydWxlX2NvbnRlbnQucmhzXG4gICAgICAgIGluXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQgPSBOb25lO1xuICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICAgIHJtX3Rva2VuID0gcnVsZV9jb250ZW50LnJtX3Rva2VuO1xuICAgICAgICAgIGFkZF90b2tlbiA9IHJ1bGVfY29udGVudC5hZGRfdG9rZW47XG4gICAgICAgICAga19kZWYgPSBhc3RfcnVsZS5rX2RlZjtcbiAgICAgICAgICBrX3VuID0gYXN0X3J1bGUua191bjtcbiAgICAgICAgICBwb3M7XG4gICAgICAgIH1cbiAgICBpblxuICAgICggQXN0LkFQUExZXG4gICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3MgbmIsXG4gICAgICAgICAgKCBhc3NlbWJsZV9ydWxlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBydWxlIHNpZ3MgY291bnRlcnNfaW5mbyB0b2tcbiAgICAgICAgICAgICAgYWxncyxcbiAgICAgICAgICAgIHBvcyApICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5VUERBVEUgKChsYWIsIHBvcyksIGhvdykgLT5cbiAgICBsZXQgaSA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgfmV4Y2VwOlxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiVmFyaWFibGUgXCIgXiBsYWIgXiBcIiBpcyBub3QgZGVmaW5lZFwiLCBwb3MpKVxuICAgICAgICAoTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIGFsZ3MpXG4gICAgaW5cbiAgICAoIEFzdC5VUERBVEVcbiAgICAgICAgKCAoaSwgcG9zKSxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgaG93ICksXG4gICAgICBpIDo6IGFjYyApXG4gIHwgQXN0LlNUT1AgcCAtPlxuICAgICggQXN0LlNUT1BcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRva1xuICAgICAgICAgICAgICBhbGdzKVxuICAgICAgICAgICBwKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LlNOQVBTSE9UIChyYXcsIHApIC0+XG4gICAgKCBBc3QuU05BUFNIT1RcbiAgICAgICAgKCByYXcsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRva1xuICAgICAgICAgICAgICAgYWxncylcbiAgICAgICAgICAgIHAgKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LkRJTiAocmVsLCBwKSAtPlxuICAgICggQXN0LkRJTlxuICAgICAgICAoIHJlbCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rXG4gICAgICAgICAgICAgICBhbGdzKVxuICAgICAgICAgICAgcCApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuRElOT0ZGIHAgLT5cbiAgICAoIEFzdC5ESU5PRkZcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRva1xuICAgICAgICAgICAgICBhbGdzKVxuICAgICAgICAgICBwKSxcbiAgICAgIGFjYyApXG4gIHwgKEFzdC5QTE9URU5UUlkgfCBBc3QuQ0ZMT1dMQUJFTCAoXywgXykpIGFzIHggLT4geCwgYWNjXG4gIHwgQXN0LlBSSU5UIChwLCBwJykgLT5cbiAgICAoIEFzdC5QUklOVFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2tcbiAgICAgICAgICAgICAgIGFsZ3MpXG4gICAgICAgICAgICBwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2tcbiAgICAgICAgICAgICAgIGFsZ3MpXG4gICAgICAgICAgICBwJyApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuQ0ZMT1dNSVggKGIsIChtLCBwb3MpKSAtPlxuICAgICggQXN0LkNGTE9XTUlYXG4gICAgICAgICggYixcbiAgICAgICAgICAobWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyBwb3MgbSwgcG9zKVxuICAgICAgICApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuU1BFQ0lFU19PRiAoYiwgcCwgKG0sIHBvcykpIC0+XG4gICAgKCBBc3QuU1BFQ0lFU19PRlxuICAgICAgICAoIGIsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRva1xuICAgICAgICAgICAgICAgYWxncylcbiAgICAgICAgICAgIHAsXG4gICAgICAgICAgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gcG9zIG0sIHBvcylcbiAgICAgICAgKSxcbiAgICAgIGFjYyApXG5cbmxldCBwZXJ0dXJiYXRpb25fb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICBjb250YWN0X21hcCAoKGFsYXJtLCBwcmUsIG1vZHMsIHBvc3QpLCBwb3MpIHVwX3ZhcnMgOlxuICAgIChfLCBfLCBfLCBfKSBBc3QucGVydHVyYmF0aW9uICogaW50IGxpc3QgPVxuICBsZXQgbW9kcycsIHVwX3ZhcnMnID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChtb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICBjb250YWN0X21hcClcbiAgICAgIG1vZHMgdXBfdmFyc1xuICBpblxuICBsZXQgbWF4X2FsbG93ZWRfdmFyID0gTm9uZSBpblxuICAoICggKCBhbGFybSxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIpXG4gICAgICAgICAgcHJlLFxuICAgICAgICBtb2RzJyxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIpXG4gICAgICAgICAgcG9zdCApLFxuICAgICAgcG9zICksXG4gICAgdXBfdmFycycgKVxuXG5sZXQgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgY29udGFjdF9tYXAgPVxuICBmdW5jdGlvblxuICB8IEFzdC5JTklUX01JWCAod2hvLCBwb3MpIC0+XG4gICAgQXN0LklOSVRfTUlYXG4gICAgICAoIHJhd19taXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvXG4gICAgICAgICAgfmNvbnRhY3RfbWFwIHdobyxcbiAgICAgICAgcG9zIClcbiAgfCBBc3QuSU5JVF9UT0sgbGFiIC0+XG4gICAgQXN0LklOSVRfVE9LXG4gICAgICAoTGlzdC5tYXBcbiAgICAgICAgIChmdW4gKGxhYiwgcG9zKSAtPlxuICAgICAgICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBsYWIgdG9rIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHggLT4geCwgcG9zXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgKGxhYiBeIFwiIGlzIG5vdCBhIGRlY2xhcmVkIHRva2VuXCIsIHBvcykpKVxuICAgICAgICAgbGFiKVxuXG5sZXQgYWRkX3VuX3ZhcmlhYmxlIGtfdW4gYWNjIHJhdGVfdmFyID1cbiAgbWF0Y2gga191biB3aXRoXG4gIHwgTm9uZSAtPiBhY2MsIE5vbmVcbiAgfCBTb21lIChrLCBkaXN0KSAtPlxuICAgIGxldCBhY2NfdW4sIGsnID1cbiAgICAgIGlmIEFsZ19leHByLmhhc19taXggKExvYy52IGspIHRoZW5cbiAgICAgICAgKCAoTG9jLmFubm90X3dpdGhfZHVtbXkgcmF0ZV92YXIsIGspIDo6IGFjYyxcbiAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3ZhcikgKVxuICAgICAgZWxzZVxuICAgICAgICBhY2MsIGtcbiAgICBpblxuICAgIGFjY191biwgU29tZSAoaycsIGRpc3QpXG5cbnR5cGUgYWNjX2Z1bmN0aW9uX3J1bGVzID0ge1xuICBydWxlX25hbWVzOiBpbnQgKiBNb2RzLlN0cmluZ1NldC50O1xuICBleHRyYV92YXJzOlxuICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCkgbGlzdDtcbiAgY2xlYW5lZF9ydWxlczogcnVsZV9pbnRlcl9yZXAgbGlzdDtcbn1cblxuKCoqIFtuYW1lX2FuZF9wdXJpZnldIGNvbXBpbGVzIHRoZSBydWxlcyBmcm9tIEFzdC5ydWxlcyBpbnRvIHJ1bGVfaW50ZXJfcmVwLCBjYWxsZWQgaW4gYSBmb2xkICopXG5sZXQgbmFtZV9hbmRfcHVyaWZ5X3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgKGFjYyA6IGFjY19mdW5jdGlvbl9ydWxlcylcbiAgICAoKGxhYmVsX29wdCwgKGFzdF9ydWxlLCByX3BvcykpIDpcbiAgICAgIHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgOiBhY2NfZnVuY3Rpb25fcnVsZXMgPVxuICBsZXQgcnVsZV9uYW1lcycsIHJ1bGVfbGFiZWwgPVxuICAgIGdpdmVfcnVsZV9sYWJlbCBhc3RfcnVsZS5iaWRpcmVjdGlvbmFsIGFjYy5ydWxlX25hbWVzIEFzdC5wcmludF9hc3RfcnVsZVxuICAgICAgYXN0X3J1bGUgbGFiZWxfb3B0XG4gIGluXG4gIGxldCBhY2MnLCBrX2RlZiA9XG4gICAgaWYgQWxnX2V4cHIuaGFzX21peCAoTG9jLnYgYXN0X3J1bGUua19kZWYpIHRoZW4gKFxuICAgICAgbGV0IHJhdGVfdmFyID0gcnVsZV9sYWJlbCBeIFwiX3JhdGVcIiBpblxuICAgICAgKCAoTG9jLmFubm90X3dpdGhfZHVtbXkgcmF0ZV92YXIsIGFzdF9ydWxlLmtfZGVmKSA6OiBhY2MuZXh0cmFfdmFycyxcbiAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkFMR19WQVIgcmF0ZV92YXIpIClcbiAgICApIGVsc2VcbiAgICAgIGFjYy5leHRyYV92YXJzLCBhc3RfcnVsZS5Bc3Qua19kZWZcbiAgaW5cbiAgbGV0IGFjYycnLCBrX3VuID1cbiAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua191biBhY2MnIChydWxlX2xhYmVsIF4gXCJfdW5fcmF0ZVwiKVxuICBpblxuICBtYXRjaCBhc3RfcnVsZS5yZXdyaXRlIHdpdGhcbiAgfCBBc3QuRWRpdCBlIC0+XG4gICAgaWZcbiAgICAgIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwgfHwgYXN0X3J1bGUua19vcCA8PiBOb25lXG4gICAgICB8fCBhc3RfcnVsZS5rX29wX3VuIDw+IE5vbmVcbiAgICB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJSdWxlcyBpbiBlZGl0IG5vdGF0aW9uIGNhbm5vdCBiZSBiaWRpcmVjdGlvbmFsXCIsIHJfcG9zKSk7XG4gICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGU6dHJ1ZSBzaWdzXG4gICAgICAgIH5jb250YWN0X21hcCBlLkFzdC5taXhcbiAgICBpblxuICAgIHtcbiAgICAgIHJ1bGVfbmFtZXMgPSBydWxlX25hbWVzJztcbiAgICAgIGV4dHJhX3ZhcnMgPSBhY2MnJztcbiAgICAgIGNsZWFuZWRfcnVsZXMgPVxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWxfb3B0O1xuICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSB0cnVlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBlLkFzdC5kZWx0YV90b2tlbjtcbiAgICAgICAgICBrX2RlZjtcbiAgICAgICAgICBrX3VuO1xuICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICB9XG4gICAgICAgIDo6IGFjYy5jbGVhbmVkX3J1bGVzO1xuICAgIH1cbiAgfCBBc3QuQXJyb3cgYSAtPlxuICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICBhLkFzdC5saHMgYS5Bc3QucmhzXG4gICAgaW5cbiAgICBsZXQgcnVsZXMnID1cbiAgICAgIHtcbiAgICAgICAgbGFiZWxfb3B0O1xuICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgIG1peHR1cmU7XG4gICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICBybV90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICBhZGRfdG9rZW4gPSBhLkFzdC5hZGRfdG9rZW47XG4gICAgICAgIGtfZGVmO1xuICAgICAgICBrX3VuO1xuICAgICAgICBwb3MgPSByX3BvcztcbiAgICAgIH1cbiAgICAgIDo6IGFjYy5jbGVhbmVkX3J1bGVzXG4gICAgaW5cbiAgICBsZXQgYWNjJycnLCBydWxlcycnID1cbiAgICAgIG1hdGNoIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwsIGFzdF9ydWxlLmtfb3Agd2l0aFxuICAgICAgfCB0cnVlLCBTb21lIGsgd2hlbiBBbGdfZXhwci5oYXNfbWl4IChMb2MudiBrKSAtPlxuICAgICAgICBsZXQgcmF0ZV92YXIgPSBBc3QuZmxpcF9sYWJlbCBydWxlX2xhYmVsIF4gXCJfcmF0ZVwiIGluXG4gICAgICAgIGxldCByYXRlX3Zhcl91biA9IEFzdC5mbGlwX2xhYmVsIHJ1bGVfbGFiZWwgXiBcIl91bl9yYXRlXCIgaW5cbiAgICAgICAgbGV0IGFjY191biwga19vcF91biA9XG4gICAgICAgICAgYWRkX3VuX3ZhcmlhYmxlIGFzdF9ydWxlLmtfb3BfdW4gYWNjJycgcmF0ZV92YXJfdW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICAgICAgYS5Bc3QucmhzIGEuQXN0Lmxoc1xuICAgICAgICBpblxuICAgICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgaykgOjogYWNjX3VuLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsX29wdCA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIChsLCBwKSAtPiBBc3QuZmxpcF9sYWJlbCBsLCBwKSBsYWJlbF9vcHQ7XG4gICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgICBybV90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICAgICAga19kZWYgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3Zhcik7XG4gICAgICAgICAgICBrX3VuID0ga19vcF91bjtcbiAgICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICA6OiBydWxlcycgKVxuICAgICAgfCB0cnVlLCBTb21lIHJhdGUgLT5cbiAgICAgICAgbGV0IHJhdGVfdmFyX3VuID0gQXN0LmZsaXBfbGFiZWwgcnVsZV9sYWJlbCBeIFwiX3VuX3JhdGVcIiBpblxuICAgICAgICBsZXQgYWNjX3VuLCBrX29wX3VuID1cbiAgICAgICAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua19vcF91biBhY2MnJyByYXRlX3Zhcl91blxuICAgICAgICBpblxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBhLkFzdC5yaHMgYS5Bc3QubGhzXG4gICAgICAgIGluXG4gICAgICAgICggYWNjX3VuLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsX29wdCA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIChsLCBwKSAtPiBBc3QuZmxpcF9sYWJlbCBsLCBwKSBsYWJlbF9vcHQ7XG4gICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgICBybV90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICAgICAga19kZWYgPSByYXRlO1xuICAgICAgICAgICAga191biA9IGtfb3BfdW47XG4gICAgICAgICAgICBwb3MgPSByX3BvcztcbiAgICAgICAgICB9XG4gICAgICAgICAgOjogcnVsZXMnIClcbiAgICAgIHwgZmFsc2UsIE5vbmUgLT4gYWNjJycsIHJ1bGVzJ1xuICAgICAgfCBmYWxzZSwgU29tZSBfIHwgdHJ1ZSwgTm9uZSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBcIkluY29tcGF0aWJsZSBhcnJvdyBhbmQga2luZWN0aWMgcmF0ZSBmb3IgaW52ZXJzZSBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICByX3BvcyApKVxuICAgIGluXG4gICAgeyBydWxlX25hbWVzID0gcnVsZV9uYW1lcyc7IGV4dHJhX3ZhcnMgPSBhY2MnJyc7IGNsZWFuZWRfcnVsZXMgPSBydWxlcycnIH1cblxudHlwZSBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzID1cbiAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdCBTaWduYXR1cmUuc2l0ZV9zaWdcbigqKiBUZW1wb3JhcnkgdHlwZSB0byBzdG9yZSBzaXRlIHNpZ25hdHVyZSB3aXRoIGxpc3QgbGlua3MgaW5zdGVhZCBvZiBhcnJheSBhcnJheSBsaW5rcyAqKVxuXG4oKiogW3ByZXBhcmVfYWdlbnRfc2lnIH5zaXRlcyBldmFsdWF0ZXMgdG8gKHNpdGVfc2lncywgY291bnRlcl9saXN0KSB3aGljaCBkZXNjcmliZSBkYXRhIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgU2lnbmF0dXJlLnQgZm9yIGEgc2luZ2xlIGFnZW50KilcbmxldCBwcmVwYXJlX2FnZW50X3NpZyB+KHNpdGVzIDogQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZyBBc3Quc2l0ZSBsaXN0KSA6XG4gICAgc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cyBOYW1lZERlY2xzLnQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdCA9XG4gIGxldCAoIChzaXRlX3NpZ3NfcHJlX25hbWVkZGVjbHMgOlxuICAgICAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzKSBsaXN0KSxcbiAgICAgICAgKGNvdW50ZXJfbmFtZXMgOiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdCkgKSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIHNpdGUgKGFjY19zaXRlX3NpZ3MsIGFjY19jb3VudGVyX25hbWVzKSAtPlxuICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgKCogVE9ETyBzZWUgaWYgY2FuIHJlbW92ZSBBc3QgaGVyZSAqKVxuICAgICAgICB8IEFzdC5Qb3J0IHAgLT5cbiAgICAgICAgICAoICggcC5wb3J0X25hbWUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBTaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgTmFtZWREZWNscy5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgKFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSB4LCBwb3MgLT4gKHgsIHBvcyksICgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lLCBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJGb3JiaWRkZW4gaW50ZXJuYWwgc3RhdGUgaW5zaWRlIHNpZ25hdHVyZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICAgICAgICAgICAgICAgICBwLnBvcnRfaW50KTtcbiAgICAgICAgICAgICAgICBsaW5rcyA9XG4gICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjY19saW5rcycgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICB8ICggKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSB8IExLYXBwYS5MTktfQU5ZKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyApIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfbGlua3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19WQUxVRSBfKSwgcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiRm9yYmlkZGVuIGxpbmsgc3RhdHVzIGluc2lkZSBzaWduYXR1cmUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyApKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIChhLCBiKSwgXyAtPiAoYSwgYikgOjogYWNjX2xpbmtzJylcbiAgICAgICAgICAgICAgICAgICAgICAgW10gcC5wb3J0X2xpbmspO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mbyA9IE5vbmU7XG4gICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgOjogYWNjX3NpdGVfc2lncyxcbiAgICAgICAgICAgIGFjY19jb3VudGVyX25hbWVzIClcbiAgICAgICAgfCBDb3VudGVyIGMgLT5cbiAgICAgICAgICAoKiBXZSBhcmUgcmVhZGluZyBoZXJlIGEgc2lnbmF0dXJlLCBvbmx5IENFUSB0ZXN0cyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgICAgICAoICggYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICAgICAgICAgICAgKCogQWdlbnQgd2l0aCBjb3VudGVyIGNhbiBsaW5rIHRvIHBvcnQgW2JdIG9uIGNvdW50ZXIgYWdlbnQgW19fY291bnRlcl9hZ2VudF0gKilcbiAgICAgICAgICAgICAgICBsaW5rcyA9XG4gICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IFwiYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgXCJfX2NvdW50ZXJfYWdlbnRcIiApO1xuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2luZm9fbWluID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLCBfKSAtPiBTb21lIGlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+IE5vbmUpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19tYXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIGksIF8pIC0+IFNvbWUgaVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT4gTm9uZSk7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9kZWZhdWx0X3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgIDo6IGFjY19zaXRlX3NpZ3MsXG4gICAgICAgICAgICBjLmNvdW50ZXJfc2lnX25hbWUgOjogYWNjX2NvdW50ZXJfbmFtZXMgKSlcbiAgICAgIHNpdGVzIChbXSwgW10pXG4gIGluXG4gIE5hbWVkRGVjbHMuY3JlYXRlX2Zyb21fbGlzdCBzaXRlX3NpZ3NfcHJlX25hbWVkZGVjbHMsIGNvdW50ZXJfbmFtZXNcblxuKCoqIFttYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzIGNvdW50ZXJzX3Blcl9hZ2VudF0gZXZhbHVhdGVzIHRvXG4gIChjb3VudGVyX2FnZW50X25hbWUsIHNpdGVfc2lnc19jb3VudGVyX2FnZW50KSB3aGljaCBkZXNjcmliZSB0aGUgY291bnRlclxuICAgICAgYWdlbnQgYW5kIGl0cyBzaXRlIHNpZ25hdHVyZXMgd2l0aCBwb3NzaWJsZSBsaW5rcyB0byBvdGhlciBhZ2VudHMuXG4gICAgICBbY291bnRlcl9pbmZvXSBhc3NvY2lhdGVzIGVhY2ggYWdlbnQgdG8gYSBsaXN0IG9mIGNvdW50ZXIgcG9ydHMsIG9uZSBmb3IgZWFjaCBkZWZpbmVkIGNvdW50ZXIgKilcbmxldCBtYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzXG4gICAgKGNvdW50ZXJzX3Blcl9hZ2VudCA6ICgoc3RyaW5nICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSBsaXN0KSBsaXN0KSA6XG4gICAgKHN0cmluZyAqIExvYy50KVxuICAgICogKChzdHJpbmcgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0IFNpZ25hdHVyZS5zaXRlX3NpZyBOYW1lZERlY2xzLnRcbiAgICA9XG4gIGxldCBjb3VudGVyX2FnZW50X25hbWUgPSBcIl9fY291bnRlcl9hZ2VudFwiLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGFfcG9ydF9uYW1lID0gXCJhXCIsIExvYy5kdW1teSBpblxuICAoKiBhZnRlciBwb3J0ICopXG4gIGxldCBiX3BvcnRfbmFtZSA9IFwiYlwiLCBMb2MuZHVtbXkgaW5cblxuICAoKiBiZWZvcmUgcG9ydCAqKVxuXG4gICgqIFBvcnQgW2FdIGNhbiBsaW5rIHRvIHBvcnQgYiBvZiBhZ2VudCBvZiB0eXBlIGNvdW50ZXIgYWdlbnQgKilcbiAgbGV0IGFfcG9ydF9zaWcgPVxuICAgIHtcbiAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICBsaW5rcyA9IFNvbWUgWyBiX3BvcnRfbmFtZSwgY291bnRlcl9hZ2VudF9uYW1lIF07XG4gICAgICBjb3VudGVyX2luZm8gPSBOb25lO1xuICAgIH1cbiAgaW5cbiAgKCogUG9ydCBbYl0gY2FuIGxpbmsgdG8gcG9ydCBhIG9mIGFnZW50IG9mIHR5cGUgY291bnRlciBhZ2VudFxuICAgKiBPUiBmb3IgZWFjaCBhZ2VudCBbYWdlbnRfbmFtZV0gd2l0aCBjb3VudGVycywgdG8gdGhlaXIgcG9ydHNcbiAgICogW2FnZW50X2NvdW50ZXJfcG9ydF9uYW1lXSAqKVxuICBsZXQgYl9saW5rcyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChhZ2VudF9uYW1lLCBjb3VudGVyc19mcm9tX2FnZW50KSBhY2MgLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGFnZW50X2NvdW50ZXJfcG9ydF9uYW1lIC0+IGFnZW50X2NvdW50ZXJfcG9ydF9uYW1lLCBhZ2VudF9uYW1lKVxuICAgICAgICAgIGNvdW50ZXJzX2Zyb21fYWdlbnRcbiAgICAgICAgQCBhY2MpXG4gICAgICBjb3VudGVyc19wZXJfYWdlbnRcbiAgICAgIFsgYV9wb3J0X25hbWUsIGNvdW50ZXJfYWdlbnRfbmFtZSBdXG4gIGluXG4gIGxldCBiX3BvcnRfc2lnID1cbiAgICB7XG4gICAgICBTaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgPSBOYW1lZERlY2xzLmNyZWF0ZSBbfHxdO1xuICAgICAgbGlua3MgPSBTb21lIGJfbGlua3M7XG4gICAgICBjb3VudGVyX2luZm8gPSBOb25lO1xuICAgIH1cbiAgaW5cbiAgbGV0IHNpdGVfc2lnc19jb3VudGVyX2FnZW50ID1cbiAgICBOYW1lZERlY2xzLmNyZWF0ZSBbfCBhX3BvcnRfbmFtZSwgYV9wb3J0X3NpZzsgYl9wb3J0X25hbWUsIGJfcG9ydF9zaWcgfF1cbiAgaW5cbiAgY291bnRlcl9hZ2VudF9uYW1lLCBzaXRlX3NpZ3NfY291bnRlcl9hZ2VudFxuXG5sZXQgYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgfihidWlsZF9jb250YWN0X21hcCA6IGJvb2wpXG4gICAgKGFnZW50X3NpZ3NfcHJlIDogc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cyBOYW1lZERlY2xzLnQgTmFtZWREZWNscy50KSA6XG4gICAgU2lnbmF0dXJlLnQgTmFtZWREZWNscy50ID1cbiAgbGV0IHNpemVfc2lncyA9IE5hbWVkRGVjbHMuc2l6ZSBhZ2VudF9zaWdzX3ByZSBpblxuICBOYW1lZERlY2xzLm1hcGlcbiAgICAoZnVuIGFnX2lkIGFnX25hbWUgLT5cbiAgICAgIE5hbWVkRGVjbHMubWFwIChmdW4gc2l0ZV9uYW1lX2FnMSBzaXRlX3NpZyAtPlxuICAgICAgICAgIGlmIG5vdCBidWlsZF9jb250YWN0X21hcCB0aGVuXG4gICAgICAgICAgICB7IHNpdGVfc2lnIHdpdGggU2lnbmF0dXJlLmxpbmtzID0gTm9uZSB9XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBVcGRhdGUgbGlua3MgKilcbiAgICAgICAgICAgICgqIFRPRE8gaW1wcm92ZSBjb21tZW50IGFib3ZlICopXG4gICAgICAgICAgICBsZXQgc2l0ZV9saW5rcyA9XG4gICAgICAgICAgICAgIEFycmF5LmluaXQgKHNpemVfc2lncyAtIGFnX2lkKSAoZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIEFycmF5Lm1ha2VcbiAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuc2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3NfcHJlIChpICsgYWdfaWQpKSlcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKCgoc2l0ZV9uYW1lX2FnMiwgcG9zKSBhcyBzaXRlX25hbWUpLCAoKGFnMl9uYW1lLCBfKSBhcyBhZykpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFnMl9pZCA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwiYWdcIiBhZ2VudF9zaWdzX3ByZSBhZyBpblxuICAgICAgICAgICAgICAgIGxldCBzaXRlX2lkID1cbiAgICAgICAgICAgICAgICAgIE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwic2l0ZSBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzX3ByZSBhZzJfaWQpXG4gICAgICAgICAgICAgICAgICAgIHNpdGVfbmFtZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgYWcyX2lkID49IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgIHNpdGVfbGlua3MuKGFnMl9pZCAtIGFnX2lkKS4oc2l0ZV9pZCkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsZXQgc2hvdWxkX3JhaXNlX2Zvcl9taXNzaW5nX2xpbmsgPVxuICAgICAgICAgICAgICAgICAgbm90XG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgoeCwgXyksICh5LCBfKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gc2l0ZV9uYW1lX2FnMSAmJiB5ID0gYWdfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKChOYW1lZERlY2xzLmVsdF92YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lnc19wcmUgYWcyX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmxpbmtzIHw+IE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayB0aGVuXG4gICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZiBcIk5vIGxpbmsgdG8gJXMuJXMgZnJvbSAlcy4lcy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9uYW1lX2FnMSBhZ19uYW1lIHNpdGVfbmFtZV9hZzIgYWcyX25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlIHNpdGVfc2lnLmxpbmtzKTtcbiAgICAgICAgICAgIHsgc2l0ZV9zaWcgd2l0aCBTaWduYXR1cmUubGlua3MgPSBTb21lIHNpdGVfbGlua3MgfVxuICAgICAgICAgICkpKVxuICAgIGFnZW50X3NpZ3NfcHJlXG5cbmxldCBjcmVhdGVfc2lncyAobCA6IEFzdC5hZ2VudF9zaWcgbGlzdCkgOiBTaWduYXR1cmUucyA9XG4gICgqIENvbnRhY3QgbWFwIHNob3VsZCBiZSBidWlsdCBvbmx5IGlmIGEgc3BlY2lmaWMgbGluayBpcyBkZXNjcmliZWQgaW4gdGhlIGRlZmluaXRpb24gb2Ygc2lnbmF0dXJlICopXG4gIGxldCBidWlsZF9jb250YWN0X21hcCA6IGJvb2wgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYzAgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBmb3JiaWRkZW4gaW4gc2lnbmF0dXJlXCIsIHBvcykpXG4gICAgICAgIHwgQXN0LlByZXNlbnQgKF8sIHNpdGVzLCBfKSAtPlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjYzEgc2l0ZSAtPlxuICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3QuQ291bnRlciBfIC0+IGFjYzFcbiAgICAgICAgICAgICAgfCBBc3QuUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjMiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSksIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBhY2MyXG4gICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVkFMVUUgXyksIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBsaW5rIHN0YXR1cyBpbnNpZGUgYSBkZWZpbml0aW9uIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpXG4gICAgICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIChfLCBfKSwgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgYWNjMSBwLkFzdC5wb3J0X2xpbmspXG4gICAgICAgICAgICBhY2MwIHNpdGVzKVxuICAgICAgZmFsc2UgbFxuICBpblxuXG4gIGxldCAoIChzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgOlxuICAgICAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCkgbGlzdCksXG4gICAgICAgIChjb3VudGVyc19wZXJfYWdlbnQgOlxuICAgICAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdCkgbGlzdCkgKSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIGFnZW50IChhY2Nfc2lncywgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudCkgLT5cbiAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhY2Nfc2lncywgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF9uYW1lLCBzaXRlcywgXykgLT5cbiAgICAgICAgICBsZXQgc2l0ZV9zaWdzX25kLCBjb3VudGVyc19hZ2VudCA9IHByZXBhcmVfYWdlbnRfc2lnIH5zaXRlcyBpblxuICAgICAgICAgIGxldCBjb3VudGVycycgPVxuICAgICAgICAgICAgaWYgY291bnRlcnNfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgICAgICAgIGFjY19jb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKGFnZW50X25hbWUsIGNvdW50ZXJzX2FnZW50KSA6OiBhY2NfY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoYWdlbnRfbmFtZSwgc2l0ZV9zaWdzX25kKSA6OiBhY2Nfc2lncywgY291bnRlcnMnKVxuICAgICAgbCAoW10sIFtdKVxuICBpblxuXG4gIGxldCBhZ2VudF9zaWdzIDogU2lnbmF0dXJlLnQgTmFtZWREZWNscy50ID1cbiAgICAoaWYgY291bnRlcnNfcGVyX2FnZW50ID0gW10gdGhlblxuICAgICAgIHNpZ3Nfd2l0aF9saW5rc19hc19saXN0c1xuICAgICBlbHNlXG4gICAgICAgbWFrZV9jb3VudGVyX2FnZW50X3NpdGVfc2lncyBjb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICA6OiBzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMpXG4gICAgfD4gTmFtZWREZWNscy5jcmVhdGVfZnJvbV9saXN0XG4gICAgfD4gYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgfmJ1aWxkX2NvbnRhY3RfbWFwXG4gIGluXG5cbiAgKCogVE9ETyBzZWUgYWdlbnRfc2lncyBuYW1pbmdzICopXG4gIFNpZ25hdHVyZS5jcmVhdGUgfmNvdW50ZXJzX3Blcl9hZ2VudCBhZ2VudF9zaWdzXG5cbmxldCBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIGNvbnRhY3RfbWFwIHRvayBhbGdzXG4gICAgaW5pdHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGV4cHIsIGluaSkgLT5cbiAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3MgZXhwcixcbiAgICAgICAgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgY29udGFjdF9tYXBcbiAgICAgICAgICBpbmkgKSlcbiAgICBpbml0c1xuXG50eXBlIGFzdF9jb21waWxlZF9kYXRhID0ge1xuICBhZ2VudHNfc2lnOiBTaWduYXR1cmUucztcbiAgY29udGFjdF9tYXA6IENvbnRhY3RfbWFwLnQ7XG4gIGNvdW50ZXJzX2luZm86IENvdW50ZXJzX2luZm8udDtcbiAgdG9rZW5fbmFtZXM6IHVuaXQgTmFtZWREZWNscy50O1xuICBhbGdfdmFyc19maW5kZXI6IGludCBNb2RzLlN0cmluZ01hcC50O1xuICB1cGRhdGVkX2FsZ192YXJzOiBpbnQgbGlzdDtcbiAgcmVzdWx0OlxuICAgICggQXN0LmFnZW50LFxuICAgICAgQXN0LmFnZW50X3NpZyxcbiAgICAgIExLYXBwYS5ydWxlX21peHR1cmUsXG4gICAgICBSYXdfbWl4dHVyZS50LFxuICAgICAgaW50LFxuICAgICAgTEthcHBhLnJ1bGUgKVxuICAgIEFzdC5jb21waWw7XG4gICAgICAoKiogQ29tcGlsZWQgZGF0YSB3aGVyZSBpZGVudGlmaWVycyBhcmUgaSBBc3QuY29tcGlsIHdoZXJlIGlkZW50aWZpZXJzXG4gICAgICogYXJlIGludGVnZXJzIGFuZCBub3Qgc3RyaW5nLCBzeW50YWN0aWMgc3VnYXIgb24gcnVsZXMgYXJlIGV4cGFuc2VkXG4gICAgICogKHN5bnRhY3RpYyBzdWdhciBvbiBtaXh0dXJlIGFyZSBub3QpICopXG59XG5cbmxldCBpbnZlcnRlZF9jb3VudGVyX25hbWUgKG5hbWUgOiBzdHJpbmcpIDogc3RyaW5nID1cbiAgbmFtZSBeIFNpZ25hdHVyZS5pbnZlcnRlZF9jb3VudGVyX3N1ZmZpeFxuXG4oKiogRXZhbHVhdGVzIHRvIGEgYXN0X2NvbXBpbCB3aGVyZSBjbHRlIHRlc3RzIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGNndGUgdGVzdHMuXG4gKiBGb3IgdGhpcywgZm9yIGVhY2ggY291bnRlciB3aGVyZSBhIENMVEUgdGVzdCBpcyBwcmVzZW50LCB3aG9zZSB2YWx1ZXMgYXJlIGluIFtcXFthLCBiXFxdXSwgaW5pdGlhbGl6ZWQgYXQgW2ldIGFuZCBhZGQgYSBuZXcgY291bnRlciBiZWxvbmdpbmcgaW4gW2EsIGJdIGluaXRpYWxpemVkIGF0IFthK2ItaV0uXG4gKiBFYWNoIHRlc3QgWz4gdmFsdWVdIGlzIHRoZW4gdHJhbnNsYXRlZCBpbnRvIGEgdGVzdCB0byB0aGUgXCJpbnZlcnRlZFwiIGNvdW50ZXIgYXMgWzwgYStiLXZhbHVlXS5cbiAqIEVhY2ggZGVsdGEgWysgZGVsdGFdIGlzIHRyYW5zbGF0ZWQgaW50byBhIFstIGRlbHRhXSAqKVxuXG5sZXQgdHJhbnNsYXRlX2NsdGVfaW50b19jZ3RlIChhc3RfY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKSA9XG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MyIGFnZW50X2xpc3QgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYzMgYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFjYzNcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVfbGlzdCwgXykgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGFjYzQgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjNFxuICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT4gZiBhY2M0IChMb2MudiBhZ2VudF9uYW1lKSBjb3VudGVyKVxuICAgICAgICAgICAgICAgIGFjYzMgc2l0ZV9saXN0KVxuICAgICAgICAgIGFjYzIgYWdlbnRfbGlzdClcbiAgICAgIGFjYyBtaXh0dXJlXG4gIGluXG4gIGxldCByZWMgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZXhwciA9XG4gICAgbWF0Y2ggTG9jLnYgZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChfLCBlMSwgZTIpIC0+XG4gICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTJcbiAgICB8IFVOX0FMR19PUCAoXywgZSkgfCBESUZGX1RPS0VOIChlLCBfKSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIC0+IGFjY1xuICAgIHwgS0FQUEFfSU5TVEFOQ0UgbWl4dHVyZSAtPiBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlXG4gICAgfCBJRiAoZWIsIGUxLCBlMikgLT5cbiAgICAgIGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmXG4gICAgICAgIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTIpXG4gICAgICAgIGViXG4gICAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChlLCBtaXh0dXJlKSAtPlxuICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgbWl4dHVyZSkgZVxuICBhbmQgY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGJleHByID1cbiAgICBtYXRjaCBMb2MudiBiZXhwciB3aXRoXG4gICAgfCBUUlVFIHwgRkFMU0UgLT4gYWNjXG4gICAgfCBCSU5fQk9PTF9PUCAoXywgYmUxLCBiZTIpIC0+XG4gICAgICBjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiAoY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGJlMSkgYmUyXG4gICAgfCBVTl9CT09MX09QIChfLCBiZSkgLT4gY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGJlXG4gICAgfCBDT01QQVJFX09QIChfLCBlMSwgZTIpIC0+XG4gICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTJcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQgZiBhY2MgYmV4cHIgPVxuICAgIG1hdGNoIGJleHByIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIGUgLT4gY291bnRlcl9mb2xkX2luX2JleHByIGYgYWNjIGVcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIHJ1bGUgPVxuICAgIGxldCBydWxlIDogQXN0LnJ1bGUgPSBydWxlIHw+IExvYy52IGluXG4gICAgbGV0IGFjYyA9XG4gICAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBfIC0+XG4gICAgICAgIGFjY1xuICAgICAgICAoKiBubyBjb3VudGVyIHRlc3QgYWxsb3dlZCBpbiBlZGl0IHJ1bGUgKilcbiAgICAgICAgKCogdG8gZG8gKilcbiAgICAgIHwgQXN0LkFycm93IGNvbnRlbnQgLT4gY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgY29udGVudC5saHNcbiAgICBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5rX3VuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSAoZSwgU29tZSBlJykgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZScpIGVcbiAgICAgIHwgU29tZSAoZSwgTm9uZSkgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIGluXG4gICAgbGV0IGFjYyA9IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIHJ1bGUua19kZWYgaW5cbiAgICBsZXQgYWNjID1cbiAgICAgIG1hdGNoIHJ1bGUua19vcF91biB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgKGUsIFNvbWUgZScpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUnKSBlXG4gICAgICB8IFNvbWUgKGUsIE5vbmUpIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5rX29wIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSBlIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICBpblxuICAgIGFjY1xuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX3ZhcmlhYmxlIGYgYWNjIHZhcmlhYmxlX2RlZiA9XG4gICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgKHNuZCB2YXJpYWJsZV9kZWYpXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fb2JzZXJ2YWJsZSBmIGFjYyBvYnNfZGVmID1cbiAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBvYnNfZGVmXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5faW5pdCBmIGFjYyBpbml0ID1cbiAgICBsZXQgZSwgXyA9IGluaXQgaW5cbiAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fcHJpbnQgZiBhY2MgcCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBfIC0+IGFjY1xuICAgIHwgQWxnX3BleHByIGUgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX21vZCBmIGFjYyBtb2RfZGVmID1cbiAgICBtYXRjaCBtb2RfZGVmIHdpdGhcbiAgICB8IEFzdC5BUFBMWSAoZSwgcikgLT5cbiAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIHIpIGVcbiAgICB8IFVQREFURSAoXywgZSkgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIHwgU1RPUCBsIHwgU05BUFNIT1QgKF8sIGwpIHwgRElOIChfLCBsKSB8IERJTk9GRiBsIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpIGFjYyBsXG4gICAgfCBQUklOVCAobCwgbCcpIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpXG4gICAgICAgIChMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX3ByaW50IGYpIGFjYyBsJylcbiAgICAgICAgbFxuICAgIHwgUExPVEVOVFJZIHwgQ0ZMT1dMQUJFTCBfIC0+IGFjY1xuICAgIHwgQ0ZMT1dNSVggKF8sIHApIC0+IGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIChMb2MudiBwKVxuICAgIHwgU1BFQ0lFU19PRiAoXywgbCwgbSkgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChjb3VudGVyX2ZvbGRfaW5fcHJpbnQgZilcbiAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIChMb2MudiBtKSlcbiAgICAgICAgbFxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX3BlcnR1cmJhdGlvbiBmIGFjYyBwZXJ0dXJiYXRpb24gPVxuICAgIGxldCBfLCBiMV9vcHQsIG1vZF9saXN0LCBiMl9vcHQgPSBMb2MudiBwZXJ0dXJiYXRpb24gaW5cbiAgICBjb3VudGVyX2ZvbGRfaW5fYmV4cHJfb3B0IGZcbiAgICAgIChjb3VudGVyX2ZvbGRfaW5fYmV4cHJfb3B0IGZcbiAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX21vZCBmKSBhY2MgbW9kX2xpc3QpXG4gICAgICAgICBiMl9vcHQpXG4gICAgICBiMV9vcHRcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZCBmIGluaXQgPVxuICAgIGxldCBsMSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyByIC0+IGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIChzbmQgcikpXG4gICAgICAgIGluaXQgYXN0X2NvbXBpbC5ydWxlc1xuICAgIGluXG4gICAgbGV0IGwyID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChjb3VudGVyX2ZvbGRfaW5fdmFyaWFibGUgZikgbDEgYXN0X2NvbXBpbC52YXJpYWJsZXNcbiAgICBpblxuICAgIGxldCBsMyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX29ic2VydmFibGUgZikgbDIgYXN0X2NvbXBpbC5vYnNlcnZhYmxlc1xuICAgIGluXG4gICAgbGV0IGw0ID0gTGlzdC5mb2xkX2xlZnQgKGNvdW50ZXJfZm9sZF9pbl9pbml0IGYpIGwzIGFzdF9jb21waWwuaW5pdCBpblxuICAgIGxldCBsNSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoY291bnRlcl9mb2xkX2luX3BlcnR1cmJhdGlvbiBmKVxuICAgICAgICBsNCBhc3RfY29tcGlsLnBlcnR1cmJhdGlvbnNcbiAgICBpblxuICAgIGw1XG4gIGluXG4gICgqIEZpbmQgY291bnRlcnMgdGhhdCBoYXZlIENMVEUgdGVzdHMsIGFuZCBidWlsZCBsaXN0OiBhZ2VudF9uYW1lLCBjb3VudGVyX25hbWUsIHN1bV9ib3VuZHNfcmVmIGxpc3QuXG4gICAqIHN1bV9ib3VuZHNfcmVmIGlzIHRoZW4gZmlsbGVkIHdoZW4gcmVhZGluZyB0aGUgc2lnbmF0dXJlIGFuZCB1c2VkIHRvIHNwZWNpZnkgZm9yIGludmVydGVkIGNvdW50ZXIgaW5pdCB2YWx1ZSBvciB0ZXN0IHZhbHVlIGFzIFtzdW1fYm91bmRzX3JlZiAtIHZhbHVlXSAqKVxuICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzIDogTW9kcy5TdHJpbmdTZXQudCBNb2RzLlN0cmluZ01hcC50ID1cbiAgICBjb3VudGVyX2ZvbGRcbiAgICAgIChmdW4gbWFwIGFnZW50X25hbWUgY291bnRlciAtPlxuICAgICAgICBsZXQgY291bnRlcl9uYW1lID0gTG9jLnYgY291bnRlci5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgKCogRm9yYmlkIHByZWZpeCB0byBhdm9pZCBub25zZW5zZSBpbiBjb3VudGVyIGRlZmluaXRpb24gKilcbiAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2ludmVydGVkX2NvdW50ZXIgY291bnRlcl9uYW1lIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJjYW5ub3QgZW5kIGNvdW50ZXIgbmFtZSBieSBcXFwiXCJcbiAgICAgICAgICAgICAgICAgXiBTaWduYXR1cmUuaW52ZXJ0ZWRfY291bnRlcl9zdWZmaXggXiBcIlxcXCJcIixcbiAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyLmNvdW50ZXJfbmFtZSApKTtcbiAgICAgICAgKCogUmV0dXJuIGNvdW50ZXIgbmFtZSBhbG9uZyB3aXRoIG1hdGNoaW5nIGFnZW50X25hbWUgKilcbiAgICAgICAgbWF0Y2ggT3B0aW9uX3V0aWwubWFwIExvYy52IGNvdW50ZXIuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgfCBTb21lIChBc3QuQ0xURSBfKSAtPlxuICAgICAgICAgIGxldCBzaXRlcyA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgTW9kcy5TdHJpbmdTZXQuZW1wdHkgYWdlbnRfbmFtZSBtYXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIE1vZHMuU3RyaW5nU2V0Lm1lbSBjb3VudGVyX25hbWUgc2l0ZXMgdGhlblxuICAgICAgICAgICAgbWFwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIGFnZW50X25hbWVcbiAgICAgICAgICAgICAgKE1vZHMuU3RyaW5nU2V0LmFkZCBjb3VudGVyX25hbWUgc2l0ZXMpXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICB8IFNvbWUgKEFzdC5DRVEgXykgfCBTb21lIChBc3QuQ0dURSBfKSB8IFNvbWUgKEFzdC5DVkFSIF8pIHwgTm9uZSAtPiBtYXApXG4gICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eVxuICBpblxuICBsZXQgYWRkICh4LCB5KSBkYXRhIG1hcCA9XG4gICAgTW9kcy5TdHJpbmdNYXAuYWRkIHhcbiAgICAgIChNb2RzLlN0cmluZ01hcC5hZGQgeSBkYXRhXG4gICAgICAgICAoTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IE1vZHMuU3RyaW5nTWFwLmVtcHR5IHggbWFwKSlcbiAgICAgIG1hcFxuICBpblxuICAoKiBDcmVhdGUgb3Bwb3NpdGUgY291bnRlcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHRlc3RzICopXG4gIGxldCAoIChzaWduYXR1cmVzIDogQXN0LmFnZW50X3NpZyBsaXN0KSxcbiAgICAgICAgKGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcCA6XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZyBNb2RzLlN0cmluZ01hcC50IE1vZHMuU3RyaW5nTWFwLnQpICkgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChhY2MsIG1hcCkgYWdlbnQgLT5cbiAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudCA6OiBhY2MsIG1hcFxuICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9IExvYy52IGFnZW50X25hbWVfIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDogTW9kcy5TdHJpbmdTZXQudCA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgTW9kcy5TdHJpbmdTZXQuZW1wdHkgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAobmV3X2NvdW50ZXJfc2l0ZXMgOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnIEFzdC5zaXRlIGxpc3QpLCBtYXBcbiAgICAgICAgICAgICAgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGNvdW50ZXJfbmFtZSAoYWNjLCBtYXApIC0+XG4gICAgICAgICAgICAgICAgKCogRmluZCBjb3VudGVyIHRvIGludmVydCAqKVxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX29yaWcgOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLnYgY291bnRlci5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBjb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBjb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgICAgICAgIHNpdGVfbGlzdFxuICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgICAgICAgICAgaW5cblxuICAgICAgICAgICAgICAgICgqIE1ha2UgaW52ZXJ0ZWQgY291bnRlciBkZWNsYXJhdGlvbiAqKVxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZ19uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkID1cbiAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBuYW1lIC0+IGludmVydGVkX2NvdW50ZXJfbmFtZSBuYW1lKVxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF9jb3VudGVyX3NpZ19kZWZhdWx0LCBfaW5mX2JvdW5kLCBfc3VwX2JvdW5kID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19tYXhcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBtaW4sIF8pLCBTb21lIChTb21lIG1heCwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF4ICsgbWluIC0gY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX2RlZmF1bHQsIG1pbiwgbWF4XG4gICAgICAgICAgICAgICAgICB8IChOb25lIHwgU29tZSAoTm9uZSwgXykpLCBfIHwgXywgKE5vbmUgfCBTb21lIChOb25lLCBfKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDYW5ub3QgdGFrZSB0aGUgb3Bwb3NpdGUgb2YgYW4gdW5ib3VuZGVkIGNvdW50ZXJzICBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX25hbWUgKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uQkFTSVNfTUlOVVNfSU5QVVQgMCAoKihpbmZfYm91bmQgKyBzdXBfYm91bmQpKilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2RlbHRhID0gQ291bnRlcnNfaW5mby5CQVNJU19NSU5VU19JTlBVVCAwIGluXG4gICAgICAgICAgICAgICAgbGV0IHVwZGF0ZSB4ID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoTm9uZSwgbG9jKSAtPiBTb21lIChOb25lLCBsb2MpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSwgbG9jKSAtPlxuICAgICAgICAgICAgICAgICAgICBTb21lIChTb21lIChDb3VudGVyc19pbmZvLmFwcGx5X2ludCBjb252ZXJ0X3ZhbHVlIGkpLCBsb2MpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVmX21pbiwgcmVmX21heCA9XG4gICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLnJlb3JkZXJfYm91bmRzIGNvbnZlcnRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19tYXgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfbWluID0gdXBkYXRlIHJlZl9taW4gaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfbWF4ID0gdXBkYXRlIHJlZl9tYXggaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfZGVmYXVsdCA9XG4gICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmFwcGx5X2ludCBjb252ZXJ0X3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19kZWZhdWx0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF9pbmZvID1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5mcm9tX3NpZ19uYW1lID0gY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX25hbWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfZGVsdGE7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWdfdmlzaWJsZSA9XG4gICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLkZyb21fY2x0ZV9lbGltaW5hdGlvbiBjb252ZXJ0X2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICgqIFdyaXRlIGluIHN1bV9ib3VuZHNfcmVmIHRoZSBzdW0gb2YgdGhlIGNvdW50ZXIgYm91bmRzIGFib3ZlICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIgPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWU7XG4gICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluO1xuICAgICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heDtcbiAgICAgICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoIEFzdC5Db3VudGVyIGNvdW50ZXIgOjogYWNjLFxuICAgICAgICAgICAgICAgICAgYWRkXG4gICAgICAgICAgICAgICAgICAgIChhZ2VudF9uYW1lLCBMb2MudiBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgY291bnRlciBtYXAgKSlcbiAgICAgICAgICAgICAgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgKFtdLCBtYXApXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0IEAgbmV3X2NvdW50ZXJfc2l0ZXMsIGFnZW50X21vZClcbiAgICAgICAgICAgIDo6IGFjYyxcbiAgICAgICAgICAgIG1hcCApKVxuICAgICAgKFtdLCBNb2RzLlN0cmluZ01hcC5lbXB0eSlcbiAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLnNpZ25hdHVyZXMpXG4gIGluXG5cbiAgKCogSW4gcnVsZXMsIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgY291bnRlciB0ZXN0cyBhbmQgdGhlIGNvdW50ZXIgbW9kaWZpY2F0aW9ucyAqKVxuICBsZXQgcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCAobWl4IDogQXN0Lm1peHR1cmUpIDogQXN0Lm1peHR1cmUgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGFnZW50X2xpc3QgLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGFnZW50IC0+XG4gICAgICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudFxuICAgICAgICAgICAgfCBQcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0LCBhZ2VudF9tb2QpIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lIDogc3RyaW5nID0gTG9jLnYgYWdlbnRfbmFtZV8gaW5cbiAgICAgICAgICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDpcbiAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWcgTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IE1vZHMuU3RyaW5nTWFwLmVtcHR5IGFnZW50X25hbWVcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiBBZGQgZGVsdGEgdG8gY291bnRlciBhcyBvcHBvc2l0ZSBkZWx0YXMgdG8gY291bnRlcl9kZWx0YSAqKVxuICAgICAgICAgICAgICBsZXQgKGFkZGVkX3NpdGVzLCBzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMpIDpcbiAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgKiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdF9tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHNpdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGNvdW50ZXJfc2lnJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogQXMgd2Uga25vdyB0aGF0IHRoaXMgY291bnRlciB1c2VzIGEgQ0xURSB0ZXN0LCBXZSBpbnRyb2R1Y2UgdGhlIGludmVydGVkIGNvdW50ZXIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIFtjbHRlX3ZhbHVlX29yX25vbmVdIGRpc2NyaW1pbmF0ZXMgdGhlIGNhc2Ugd2hlcmUgdGhpcyBzaXRlIGluIHRoaXMgZXhwcmVzc2lvbiBoYXMgYSBDTFRFIHRlc3QgKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb252ZXJzaW9uX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmdldF9jb252ZXJzaW9uX2luZm8gY291bnRlcl9zaWcnXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsdGVfdmFsdWVfb3Jfbm9uZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvdW50ZXIuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggTG9jLnYgdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0VRIF8gfCBDR1RFIF8gfCBDVkFSIF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNMVEUgdmFsdWUgLT4gU29tZSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2x0ZV92YWx1ZV9vcl9ub25lIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZiB0aGVyZSBpcyBhIHRlc3QsIGl0IGRvZXNuJ3QgbmVlZCBpbnZlcnNpb246IHdlIGFkZCBpbnZlcnRlZCBjb3VudGVyIHdpdGhvdXQgdGVzdCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMb2MudiBjb3VudGVyLmNvdW50ZXJfZGVsdGEgPT0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZSBjb3VudGVyIHZhbHVlIGlzIGNoYW5naW5nLCB3ZSBuZWVkIHRvIGFkZCBpdCB0byB0aGUgaW52ZXJ0ZWQgY291bnRlciAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnZlcnRlZF9jb3VudGVyX3NpdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdCBpbnZlcnRlZF9jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlcnNfaW5mby5hcHBseV9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2lvbl9pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkNvdW50ZXJzX2luZm8uY29udmVydF9kZWx0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX2RlbHRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnRlZF9jb3VudGVyX3NpdGUgOjogYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUaGUgdGVzdCBpcyBDTFRFLCB3ZSBpbnZlcnQgaXQgKilcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTaXRlIHdpdGggaW52ZXJ0ZWQgY291bnRlciB3aXRoIENHVEUgdGVzdCBpbnN0ZWFkIG9mIENMVEUgdGVzdCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X3NpdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3QgaW52ZXJ0ZWRfY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DR1RFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlcnNfaW5mby5hcHBseV9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25faW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQ291bnRlcnNfaW5mby5jb252ZXJ0X3ZhbHVlIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gTG9jLmNvcHlfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfdGVzdCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXJzX2luZm8uYXBwbHlfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJzaW9uX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkNvdW50ZXJzX2luZm8uY29udmVydF9kZWx0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9kZWx0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5jb3VudGVyX2RlbHRhID09IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywgbmV3X3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlIGNvdW50ZXIgdmFsdWUgaXMgY2hhbmdpbmcsIHdlIG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBvcmlnaW5hbCBjb3VudGVyIHRvbyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbF9jb3VudGVyX3NpdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXIgeyBjb3VudGVyIHdpdGggY291bnRlcl90ZXN0ID0gTm9uZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb3VudGVyX3NpdGUgOjogYWNjLCBuZXdfc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSkpXG4gICAgICAgICAgICAgICAgICBbXSBzaXRlX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5ld19zaXRlX2xpc3QgOiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMgQCBhZGRlZF9zaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZV8sIG5ld19zaXRlX2xpc3QsIGFnZW50X21vZCkpXG4gICAgICAgICAgYWdlbnRfbGlzdClcbiAgICAgIG1peFxuICBpblxuICBsZXQgYWRkX2ludmVydGVkX2NvdW50ZXJfdG9faW5pdF9taXh0dXJlIChtaXggOiBBc3QubWl4dHVyZSkgOiBBc3QubWl4dHVyZSA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50XG4gICAgICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgOiBzdHJpbmcgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOlxuICAgICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZyBNb2RzLlN0cmluZ01hcC50ID1cbiAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgTW9kcy5TdHJpbmdNYXAuZW1wdHkgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqXG4gICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOlxuICAgICAgICAgICAgICAgICAgKHN0cmluZyAqIHN0cmluZyAqIGludCByZWYpIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIChhZ2VudF9uYW1lX2NvdW50ZXIsIF8sIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGFnZW50X25hbWUgPSBhZ2VudF9uYW1lX2NvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAoZnN0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0cylcbiAgICAgICAgICAgICAgaW4qKVxuICAgICAgICAgICAgICAoKiBBZGQgZGVsdGEgdG8gY291bnRlciBhcyBvcHBvc2l0ZSBkZWx0YXMgdG8gY291bnRlcl9kZWx0YSAqKVxuICAgICAgICAgICAgICBsZXQgYWRkZWRfc2l0ZXMgOiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2Mgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgY291bnRlcl9zaWcgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmdldF9jb252ZXJzaW9uX2luZm8gY291bnRlcl9zaWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBBcyB3ZSBrbm93IHRoYXQgdGhpcyBjb3VudGVyIHVzZXMgYSBDTFRFIHRlc3QsIFdlIGludHJvZHVjZSB0aGUgaW52ZXJ0ZWQgY291bnRlciAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNvdW50ZXIuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgc2hvdWxkIGhhdmUgQ0VRIHRlc3QgdmFsdWUgaW4gaW5pdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyLmNvdW50ZXJfbmFtZSApKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIExvYy52IHRlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DR1RFIF8gfCBDTFRFIF8gfCBDVkFSIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDb3VudGVyIHNob3VsZCBoYXZlIENFUSB0ZXN0IHZhbHVlIGluIGluaXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IHRlc3QgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0VRIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5jb3VudGVyX2RlbHRhIDw+IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgZGVsdGEgc2hvdWxkIGJlIDAgaW4gaW5pdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IHRlc3QgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90IGludmVydGVkX2NvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLkFzdC5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MuY29weV9hbm5vdCB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuQ0VRXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyc19pbmZvLmFwcGx5X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQ291bnRlcnNfaW5mby5jb252ZXJ0X3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfZGVsdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDAgd2l0aCBhbm5vdCBhcyB0ZXN0ZWQgYWJvdmUgKik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgIFtdIHNpdGVfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmV3X3NpdGVfbGlzdCA6IEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIHNpdGVfbGlzdCBAIGFkZGVkX3NpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgbmV3X3NpdGVfbGlzdCwgYWdlbnRfbW9kKSlcbiAgICAgICAgICBhZ2VudF9saXN0KVxuICAgICAgbWl4XG4gIGluXG5cbiAgbGV0IG1hcF9leHByIGV4cHIgPVxuICAgIEFsZ19leHByLm1hcF9vbl9taXh0dXJlXG4gICAgICAoZnVuIHggLT4gQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgKHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgeCkpXG4gICAgICBleHByXG4gIGluXG4gIGxldCBtYXBfYmV4cHIgZXhwciA9XG4gICAgQWxnX2V4cHIubWFwX2Jvb2xfb25fbWl4dHVyZVxuICAgICAgKGZ1biB4IC0+IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIChyZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IHgpKVxuICAgICAgZXhwclxuICBpblxuICBsZXQgbWFwX3J1bGUgcnVsZSA9XG4gICAgbGV0IHJld3JpdGUgPVxuICAgICAgbWF0Y2ggcnVsZS5Bc3QucmV3cml0ZSB3aXRoXG4gICAgICB8IEVkaXQgY29udGVudCAtPlxuICAgICAgICBBc3QuRWRpdCB7IGNvbnRlbnQgd2l0aCBtaXggPSByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IGNvbnRlbnQubWl4IH1cbiAgICAgIHwgQXJyb3cgY29udGVudCAtPlxuICAgICAgICBBcnJvd1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgbGhzID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50LmxocztcbiAgICAgICAgICAgIHJocyA9IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgY29udGVudC5yaHM7XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IGtfZGVmID0gbWFwX2V4cHIgcnVsZS5rX2RlZiBpblxuICAgIGxldCBrX29wID0gbWFwX29wdCBtYXBfZXhwciBydWxlLmtfb3AgaW5cbiAgICBsZXQga191biA9XG4gICAgICBtYXBfb3B0IChmdW4gKGEsIGIpIC0+IG1hcF9leHByIGEsIG1hcF9vcHQgbWFwX2V4cHIgYikgcnVsZS5rX3VuXG4gICAgaW5cbiAgICBsZXQga19vcF91biA9XG4gICAgICBtYXBfb3B0IChmdW4gKGEsIGIpIC0+IG1hcF9leHByIGEsIG1hcF9vcHQgbWFwX2V4cHIgYikgcnVsZS5rX29wX3VuXG4gICAgaW5cbiAgICB7IHJ1bGUgd2l0aCByZXdyaXRlOyBrX2RlZjsga19vcDsga191bjsga19vcF91biB9XG4gIGluXG4gIGxldCBydWxlcyA6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIGxpc3QgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biBydWxlX2RlZiAtPiBmc3QgcnVsZV9kZWYsIExvYy5tYXBfYW5ub3QgbWFwX3J1bGUgKHNuZCBydWxlX2RlZikpXG4gICAgICAoTGlzdC5yZXYgYXN0X2NvbXBpbC5ydWxlcylcbiAgaW5cblxuICBsZXQgaW5pdCA6IChBc3QubWl4dHVyZSwgQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LmluaXRfc3RhdGVtZW50IGxpc3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChxdWFudGl0eV9hbGdfZXhwciwgaW5pdF9raW5kKSAtPlxuICAgICAgICAoIHF1YW50aXR5X2FsZ19leHByLFxuICAgICAgICAgIG1hdGNoIGluaXRfa2luZCB3aXRoXG4gICAgICAgICAgfCBBc3QuSU5JVF9UT0sgXyAtPiBpbml0X2tpbmRcbiAgICAgICAgICB8IElOSVRfTUlYIG1peF8gLT5cbiAgICAgICAgICAgIElOSVRfTUlYIChMb2MubWFwX2Fubm90IGFkZF9pbnZlcnRlZF9jb3VudGVyX3RvX2luaXRfbWl4dHVyZSBtaXhfKSApKVxuICAgICAgYXN0X2NvbXBpbC5pbml0XG4gIGluXG4gIGxldCB2YXJpYWJsZXMgPVxuICAgIExpc3QucmV2X21hcCAoZnVuIChhLCBiKSAtPiBhLCBtYXBfZXhwciBiKSAoTGlzdC5yZXYgYXN0X2NvbXBpbC52YXJpYWJsZXMpXG4gIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9IExpc3QucmV2X21hcCBtYXBfZXhwciAoTGlzdC5yZXYgYXN0X2NvbXBpbC5vYnNlcnZhYmxlcykgaW5cbiAgbGV0IG1hcF9wcmludCBhID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gLT4gYVxuICAgIHwgQWxnX3BleHByIGUgLT4gQWxnX3BleHByIChtYXBfZXhwciBlKVxuICBpblxuICBsZXQgbWFwX21vZGlmIG1vZGlmID1cbiAgICBtYXRjaCBtb2RpZiB3aXRoXG4gICAgfCBBc3QuQVBQTFkgKGEsIHIpIC0+IEFzdC5BUFBMWSAobWFwX2V4cHIgYSwgTG9jLm1hcF9hbm5vdCBtYXBfcnVsZSByKVxuICAgIHwgVVBEQVRFIChhLCBlKSAtPiBVUERBVEUgKGEsIG1hcF9leHByIGUpXG4gICAgfCBTVE9QIGwgLT4gU1RPUCAoTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCkpXG4gICAgfCBTTkFQU0hPVCAoYiwgbCkgLT4gU05BUFNIT1QgKGIsIExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpKVxuICAgIHwgUFJJTlQgKGwsIGwnKSAtPlxuICAgICAgUFJJTlRcbiAgICAgICAgKCBMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSxcbiAgICAgICAgICBMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsJykgKVxuICAgIHwgUExPVEVOVFJZIHwgQ0ZMT1dMQUJFTCBfIC0+IG1vZGlmXG4gICAgfCBDRkxPV01JWCAoYiwgbWl4dHVyZSkgLT5cbiAgICAgIENGTE9XTUlYIChiLCBMb2MubWFwX2Fubm90IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgbWl4dHVyZSlcbiAgICB8IERJTiAoYSwgbCkgLT4gRElOIChhLCBMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICB8IERJTk9GRiBsIC0+IERJTk9GRiAoTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCkpXG4gICAgfCBTUEVDSUVTX09GIChiLCBsLCBtKSAtPlxuICAgICAgU1BFQ0lFU19PRlxuICAgICAgICAoYiwgTGlzdC5yZXZfbWFwIG1hcF9wcmludCBsLCBMb2MubWFwX2Fubm90IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgbSlcbiAgaW5cbiAgbGV0IHBlcnR1cmJhdGlvbnMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoKGEsIGIsIGMsIGQpLCBleHQpIC0+XG4gICAgICAgICggKCBhLFxuICAgICAgICAgICAgbWFwX29wdCBtYXBfYmV4cHIgYixcbiAgICAgICAgICAgIExpc3QucmV2X21hcCBtYXBfbW9kaWYgKExpc3QucmV2IGMpLFxuICAgICAgICAgICAgbWFwX29wdCBtYXBfYmV4cHIgZCApLFxuICAgICAgICAgIGV4dCApKVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwucGVydHVyYmF0aW9ucylcbiAgaW5cbiAgKCB7XG4gICAgICBhc3RfY29tcGlsIHdpdGhcbiAgICAgIHNpZ25hdHVyZXM7XG4gICAgICBydWxlcztcbiAgICAgIGluaXQ7XG4gICAgICB2YXJpYWJsZXM7XG4gICAgICBvYnNlcnZhYmxlcztcbiAgICAgIHBlcnR1cmJhdGlvbnM7XG4gICAgfSxcbiAgICBjb3VudGVyX2NvbnZlcnNpb25faW5mb19tYXAgKVxuXG5sZXQgY29tcGlsX29mX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSB+c3ludGF4X3ZlcnNpb24gfnZhcl9vdmVyd3JpdGUgYXN0X2NvbXBpbFxuICAgID1cbiAgKCogVE9ETyB0ZXN0IHRoaXMgKilcbiAgKCogVHJhbnNsYXRlIENMVEUgdGVzdHMgaW4gYXN0X2NvbXBpbCBpbnRvIENHVEUgdGVzdHMgKilcbiAgbGV0IGFzdF9jb21waWwsIF9jb3VudGVyX2NvbnZlcnNpb25faW5mb19tYXAgPVxuICAgIHRyYW5zbGF0ZV9jbHRlX2ludG9fY2d0ZSBhc3RfY29tcGlsXG4gIGluXG4gIGxldCBoYXNfY291bnRlcnMgPSBDb3VudGVyc19jb21waWxlci5oYXNfY291bnRlcnMgYXN0X2NvbXBpbCBpblxuICBsZXQgYWdlbnRfc2lnX2lzX2ltcGxpY2l0ID1cbiAgICBhc3RfY29tcGlsLkFzdC5zaWduYXR1cmVzID0gW10gJiYgYXN0X2NvbXBpbC5Bc3QudG9rZW5zID0gW11cbiAgaW5cbiAgKCogSW5mZXIgYWdlbnQgc2lnbmF0dXJlcyBpZiB0aGUgc2lnbmF0dXJlIGlzIGltcGxpY2l0ICopXG4gIGxldCBhc3RfY29tcGlsID1cbiAgICBpZiBhZ2VudF9zaWdfaXNfaW1wbGljaXQgJiYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcImltcGxpY2l0IHNpZ25hdHVyZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBjb3VudGVyc1wiLCBMb2MuZHVtbXkpKVxuICAgIGVsc2UgaWYgYWdlbnRfc2lnX2lzX2ltcGxpY2l0IHRoZW5cbiAgICAgIEFzdC5pbmZlcl9hZ2VudF9zaWduYXR1cmVzIGFzdF9jb21waWxcbiAgICBlbHNlXG4gICAgICBhc3RfY29tcGlsXG4gIGluXG4gICgqIFJlbW92ZSBjb3VudGVyIGVxdWFsaXR5IHRlc3Qgd2l0aCBhIHZhcmlhYmxlIGJ5IHNwbGl0dGluZyBpbiBvbmUgcnVsZSBwZXIgdmFyaWFibGUgdmFsdWUgKilcbiAgbGV0IGFzdF9jb21waWwgPVxuICAgIGlmIGhhc19jb3VudGVycyB0aGVuXG4gICAgICBDb3VudGVyc19jb21waWxlci5zcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nXG4gICAgICAgIH5kZWJ1Z19tb2RlIGFzdF9jb21waWxcbiAgICBlbHNlXG4gICAgICBhc3RfY29tcGlsXG4gIGluXG5cbiAgbGV0IGFnZW50c19zaWcgOiBTaWduYXR1cmUucyA9IGNyZWF0ZV9zaWdzIGFzdF9jb21waWwuQXN0LnNpZ25hdHVyZXMgaW5cbiAgKCogU2V0IGFuIGVtcHR5IGNvbnRhY3QgbWFwICopXG4gIGxldCBjb3VudGVyc19pbmZvID1cbiAgICBsZXQgc2l6ZSA9IFNpZ25hdHVyZS5zaXplIGFnZW50c19zaWcgaW5cbiAgICBsZXQgdCA9IEFycmF5Lm1ha2Ugc2l6ZSBbfHxdIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID0gc2l6ZSB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gdC4oaykgPC0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLmFyaXR5IGFnZW50c19zaWcgaykgTm9uZSBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0ICgpID0gYXV4IDAgaW5cbiAgICB0XG4gIGluXG4gICgqbGV0ICgpID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAgICAgKGZ1biBhZ2VudF9uYW1lIG0gLT5cbiAgICAgICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9IExvYy5hbm5vdF93aXRoX2R1bW15IGFnZW50X25hbWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWdlbnRfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X25hbWUgYWdlbnRzX3NpZyAgaW5cbiAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIHNpdGVfbmFtZSBjb3VudGVyX3NpZyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgc2l0ZV9pZCA9IFNpZ25hdHVyZS5pZF9vZl9zaXRlIGFnZW50X25hbWUgKExvYy5hbm5vdF93aXRoX2R1bW15IHNpdGVfbmFtZSkgYWdlbnRzX3NpZyBpblxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyc19pbmZvLihhZ2VudF9pZCkuKHNpdGVfaWQpPC1Tb21lIGNvdW50ZXJfc2lnKVxuICAgICAgICAgICAgbSkgY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwXG4gICAgaW4qKVxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIGludGVyZmFjZSwgXykgLT5cbiAgICAgICAgICBsZXQgYWdlbnRfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X25hbWUgYWdlbnRzX3NpZyBpblxuXG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+ICgpXG4gICAgICAgICAgICAgIHwgQXN0LkNvdW50ZXIgY291bnRlcl9zaWcgLT5cbiAgICAgICAgICAgICAgICBsZXQgc2l0ZV9uYW1lID0gY291bnRlcl9zaWcuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lIGluXG4gICAgICAgICAgICAgICAgbGV0IHNpdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLmlkX29mX3NpdGUgYWdlbnRfbmFtZSBzaXRlX25hbWUgYWdlbnRzX3NpZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgY291bnRlcnNfaW5mby4oYWdlbnRfaWQpLihzaXRlX2lkKSA8LSBTb21lIGNvdW50ZXJfc2lnKVxuICAgICAgICAgICAgaW50ZXJmYWNlXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+ICgpKVxuICAgICAgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlc1xuICBpblxuICBsZXQgY29udGFjdF9tYXAgOiAoTW9kcy5JbnRTZXQudCAqIE1vZHMuSW50MlNldC50KSBhcnJheSBhcnJheSA9XG4gICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLnNpemUgYWdlbnRzX3NpZykgKGZ1biBpIC0+XG4gICAgICAgIEFycmF5LmluaXQgKFNpZ25hdHVyZS5hcml0eSBhZ2VudHNfc2lnIGkpIChmdW4gcyAtPlxuICAgICAgICAgICAgKCBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgIChmdW4gYSBrIC0+IE1vZHMuSW50U2V0LmFkZCBrIGEpXG4gICAgICAgICAgICAgICAgTW9kcy5JbnRTZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLmludGVybmFsX3N0YXRlc19udW1iZXIgaSBzIGFnZW50c19zaWcpLFxuICAgICAgICAgICAgICBNb2RzLkludDJTZXQuZW1wdHkgKSkpXG4gIGluXG4gIGxldCBydWxlX25hbWVzLCBleHRyYV92YXJzLCBjbGVhbmVkX3J1bGVzID1cbiAgICBsZXQgYWNjID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChuYW1lX2FuZF9wdXJpZnlfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyB+Y29udGFjdF9tYXApXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlX25hbWVzID0gMCwgTW9kcy5TdHJpbmdTZXQuZW1wdHk7XG4gICAgICAgICAgZXh0cmFfdmFycyA9IFtdO1xuICAgICAgICAgIGNsZWFuZWRfcnVsZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBhc3RfY29tcGlsLkFzdC5ydWxlc1xuICAgIGluXG4gICAgc25kIGFjYy5ydWxlX25hbWVzLCBhY2MuZXh0cmFfdmFycywgYWNjLmNsZWFuZWRfcnVsZXNcbiAgaW5cblxuICBsZXQgb3ZlcndyaXRlX3ZhcnMgKHZhcl9vdmVyd3JpdGUgOiAoc3RyaW5nICogTmJyLnQpIGxpc3QpXG4gICAgICAodmFycyA6IChBc3QubWl4dHVyZSwgc3RyaW5nKSBBc3QudmFyaWFibGVfZGVmIGxpc3QpIDpcbiAgICAgIChzdHJpbmcgKiBOYnIudCkgbGlzdCAqIChBc3QubWl4dHVyZSwgc3RyaW5nKSBBc3QudmFyaWFibGVfZGVmIGxpc3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChvdmVyd3JpdGVfdmFyc19yZW1haW5pbmcsIGFjY192YXJzKSAoKCh4LCBfKSwgXykgYXMgdmFyKSAtPlxuICAgICAgICBsZXQgbWF0Y2hzLCBvdGhlcl9vdmVyd3JpdGVfdmFycyA9XG4gICAgICAgICAgTGlzdC5wYXJ0aXRpb24gKGZ1biAoeCcsIF8pIC0+IHggPSB4Jykgb3ZlcndyaXRlX3ZhcnNfcmVtYWluaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2NfdmFyc193aXRoX3hfcmV3cml0dGVuX2lmX3ByZXNlbnQgPVxuICAgICAgICAgIG1hdGNoIG1hdGNocyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiB2YXIgOjogYWNjX3ZhcnNcbiAgICAgICAgICB8IFsgKHgsIHYpIF0gLT4gKExvYy5hbm5vdF93aXRoX2R1bW15IHgsIEFsZ19leHByLmNvbnN0IHYpIDo6IGFjY192YXJzXG4gICAgICAgICAgfCAoeCwgXykgOjogXyA6OiBfIC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoIFwidmFyaWFibGUgJ1wiIF4geCBeIFwiJyBpcyBvdmVyd3JpdHRlbiBtb3JlIHRoYW4gb25jZVwiLFxuICAgICAgICAgICAgICAgICAgIExvYy5kdW1teSApKVxuICAgICAgICBpblxuXG4gICAgICAgIG90aGVyX292ZXJ3cml0ZV92YXJzLCBhY2NfdmFyc193aXRoX3hfcmV3cml0dGVuX2lmX3ByZXNlbnQpXG4gICAgICAodmFyX292ZXJ3cml0ZSwgW10pIHZhcnNcbiAgICB8PiBmdW4gKHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQsIHJldl9hbGdfdmFycykgLT5cbiAgICB2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkLCBMaXN0LnJldiByZXZfYWxnX3ZhcnNcbiAgaW5cbiAgbGV0IHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQsIGFsZ192YXJzX3dpdGhfcmV3cml0dGVuX3ZhcnMgPVxuICAgIG92ZXJ3cml0ZV92YXJzIHZhcl9vdmVyd3JpdGUgKGFzdF9jb21waWwuQXN0LnZhcmlhYmxlcyBAIGV4dHJhX3ZhcnMpXG4gIGluXG4gIGxldCBhbGdfdmFyc19hcnJheSA9XG4gICAgTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAoZnVuICh4LCB2KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCBBbGdfZXhwci5jb25zdCB2KVxuICAgICAgdmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCBhbGdfdmFyc193aXRoX3Jld3JpdHRlbl92YXJzXG4gICAgfD4gQXJyYXkub2ZfbGlzdFxuICBpblxuICBsZXQgYWxnX3ZhcnNfZmluZGVyID1cbiAgICBhbGdfdmFyc19hcnJheSB8PiBOYW1lZERlY2xzLmNyZWF0ZSB+Zm9yYmlkZGVuOnJ1bGVfbmFtZXMgfD4gZnVuIG5kIC0+XG4gICAgbmQuTmFtZWREZWNscy5maW5kZXJcbiAgaW5cblxuICBsZXQgdG9rZW5fbmFtZXMgPVxuICAgIGFzdF9jb21waWwuQXN0LnRva2Vuc1xuICAgIHw+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChmdW4geCAtPiB4LCAoKSlcbiAgICB8PiBOYW1lZERlY2xzLmNyZWF0ZVxuICBpblxuICBsZXQgdG9rZW5zX2ZpbmRlciA9IHRva2VuX25hbWVzLk5hbWVkRGVjbHMuZmluZGVyIGluXG5cbiAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICBDb3VudGVyc19jb21waWxlci5hZGRfY291bnRlcl90b19jb250YWN0X21hcCBhZ2VudHNfc2lnXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgfmNvbnRhY3RfbWFwKTtcblxuICBsZXQgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnMsIHVwZGF0ZWRfYWxnX3ZhcnMgPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKHBlcnR1cmJhdGlvbl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgY291bnRlcnNfaW5mb1xuICAgICAgICAgdG9rZW5zX2ZpbmRlciBhbGdfdmFyc19maW5kZXIgY29udGFjdF9tYXApXG4gICAgICBhc3RfY29tcGlsLkFzdC5wZXJ0dXJiYXRpb25zIFtdXG4gIGluXG4gIGxldCBwZXJ0dXJiYXRpb25zID1cbiAgICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgQ291bnRlcnNfY29tcGlsZXIuY291bnRlcnNfcGVydHVyYmF0aW9ucyBhZ2VudHNfc2lnXG4gICAgICAgIFsgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyBdXG4gICAgICBAIHBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzXG4gICAgZWxzZVxuICAgICAgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnNcbiAgaW5cblxuICBsZXQgcnVsZXMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAocnVsZSA6IHJ1bGVfaW50ZXJfcmVwKSAtPlxuICAgICAgICAoIHJ1bGUubGFiZWxfb3B0LFxuICAgICAgICAgICggYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gcnVsZSBhZ2VudHNfc2lnIGNvdW50ZXJzX2luZm9cbiAgICAgICAgICAgICAgdG9rZW5zX2ZpbmRlciBhbGdfdmFyc19maW5kZXIsXG4gICAgICAgICAgICBydWxlLnBvcyApICkpXG4gICAgICBjbGVhbmVkX3J1bGVzXG4gIGluXG5cbiAgbGV0IHZhcmlhYmxlcyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9yaWdodGlcbiAgICAgIChmdW4gaSAobGFiLCBleHByKSBhY2MgLT5cbiAgICAgICAgKCBsYWIsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+bWF4X2FsbG93ZWRfdmFyOihwcmVkIGkpXG4gICAgICAgICAgICBhZ2VudHNfc2lnIGNvdW50ZXJzX2luZm8gdG9rZW5zX2ZpbmRlciBhbGdfdmFyc19maW5kZXIgZXhwciApXG4gICAgICAgIDo6IGFjYylcbiAgICAgIGFsZ192YXJzX2FycmF5IFtdXG4gIGluXG5cbiAgbGV0IG9ic2VydmFibGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gZXhwciAtPlxuICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgY291bnRlcnNfaW5mb1xuICAgICAgICAgIHRva2Vuc19maW5kZXIgYWxnX3ZhcnNfZmluZGVyIGV4cHIpXG4gICAgICAoTGlzdC5yZXYgYXN0X2NvbXBpbC5vYnNlcnZhYmxlcylcbiAgaW5cblxuICBsZXQgaW5pdCA9XG4gICAgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgY291bnRlcnNfaW5mbyBjb250YWN0X21hcFxuICAgICAgdG9rZW5zX2ZpbmRlciBhbGdfdmFyc19maW5kZXIgYXN0X2NvbXBpbC5pbml0XG4gIGluXG5cbiAge1xuICAgIGFnZW50c19zaWc7XG4gICAgY29udGFjdF9tYXA7XG4gICAgY291bnRlcnNfaW5mbztcbiAgICB0b2tlbl9uYW1lcztcbiAgICBhbGdfdmFyc19maW5kZXI7XG4gICAgdXBkYXRlZF9hbGdfdmFycztcbiAgICByZXN1bHQgPVxuICAgICAge1xuICAgICAgICBmaWxlbmFtZXMgPSBhc3RfY29tcGlsLmZpbGVuYW1lcztcbiAgICAgICAgdmFyaWFibGVzO1xuICAgICAgICBydWxlcztcbiAgICAgICAgb2JzZXJ2YWJsZXM7XG4gICAgICAgIGluaXQ7XG4gICAgICAgIHBlcnR1cmJhdGlvbnM7XG4gICAgICAgIHZvbHVtZXMgPSBhc3RfY29tcGlsLnZvbHVtZXM7XG4gICAgICAgIHRva2VucyA9IGFzdF9jb21waWwudG9rZW5zO1xuICAgICAgICBzaWduYXR1cmVzID0gYXN0X2NvbXBpbC5zaWduYXR1cmVzO1xuICAgICAgICBjb25maWd1cmF0aW9ucyA9IGFzdF9jb21waWwuY29uZmlndXJhdGlvbnM7XG4gICAgICB9O1xuICB9XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBFT0ZcbiAgfCBDT01NQVxuICB8IERPVFxuICB8IE9QX1BBUlxuICB8IENMX1BBUlxuICB8IE9QX0NVUlxuICB8IENMX0NVUlxuICB8IE9QX0JSQVxuICB8IENMX0JSQVxuICB8IEFUXG4gIHwgU0VNSUNPTE9OXG4gIHwgUExVU1xuICB8IE1JTlVTXG4gIHwgTVVMVFxuICB8IERJVlxuICB8IE1PRFxuICB8IE1BWFxuICB8IE1JTlxuICB8IFNJTlVTXG4gIHwgQ09TSU5VU1xuICB8IFRBTlxuICB8IFBPV1xuICB8IEFCU1xuICB8IFNRUlRcbiAgfCBFWFBPTkVOVFxuICB8IExPR1xuICB8IE9SXG4gIHwgQU5EXG4gIHwgTk9UXG4gIHwgVEhFTlxuICB8IEVMU0VcbiAgfCBESUZGXG4gIHwgRVFVQUxcbiAgfCBTTUFMTEVSXG4gIHwgR1JFQVRFUlxuICB8IFRSVUVcbiAgfCBGQUxTRVxuICB8IElORklOSVRZXG4gIHwgU0hBUlBcbiAgfCBVTkRFUlNDT1JFXG4gIHwgUElQRVxuICB8IFJBUlxuICB8IExSQVJcbiAgfCBMQVJcbiAgfCBFTUFYXG4gIHwgVE1BWFxuICB8IENQVVRJTUVcbiAgfCBUSU1FXG4gIHwgRVZFTlRcbiAgfCBOVUxMX0VWRU5UXG4gIHwgQ09MT05cbiAgfCBORVdMSU5FXG4gIHwgQkFDS1NMQVNIXG4gIHwgU0lHTkFUVVJFXG4gIHwgVE9LRU5cbiAgfCBJTklUXG4gIHwgT0JTXG4gIHwgUExPVFxuICB8IFBFUlRcbiAgfCBDT05GSUdcbiAgfCBBUFBMWVxuICB8IERFTEVURVxuICB8IElOVFJPXG4gIHwgU05BUFNIT1RcbiAgfCBTVE9QXG4gIHwgRkxVWFxuICB8IFRSQUNLXG4gIHwgQVNTSUdOXG4gIHwgUFJJTlRGXG4gIHwgUExPVEVOVFJZXG4gIHwgU1BFQ0lFU19PRlxuICB8IERPXG4gIHwgUkVQRUFUXG4gIHwgQUxBUk1cbiAgfCBSVU5cbiAgfCBMRVRcbiAgfCBJTlQgb2YgKGludClcbiAgfCBGTE9BVCBvZiAoZmxvYXQpXG4gIHwgSUQgb2YgKHN0cmluZylcbiAgfCBMQUJFTCBvZiAoc3RyaW5nKVxuICB8IFNUUklORyBvZiAoc3RyaW5nKVxuICB8IFNQQUNFIG9mIChzdHJpbmcpXG4gIHwgQ09NTUVOVCBvZiAoc3RyaW5nKVxuXG5vcGVuIFBhcnNpbmc7O1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gIGxldCBhZGRfcG9zIGUgeCA9XG4gICAgKHgsXG4gICAgTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBlKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gICAgTG9jLm9mX3BvcyAoUGFyc2luZy5yaHNfc3RhcnRfcG9zIGkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGkpXG4gIGxldCBlbmRfcG9zID0gUGFyc2luZy5yaHNfZW5kX3Bvc1xuICBsZXQgc3RhcnRfcG9zID0gUGFyc2luZy5yaHNfc3RhcnRfcG9zXG5cbiAgbGV0IGludGVybmFsX21lbW9yeSA9IHJlZiBbXVxuICBsZXQgYWRkIHggPSBpbnRlcm5hbF9tZW1vcnkgOj0geCA6OiAhaW50ZXJuYWxfbWVtb3J5XG4gIGxldCBvdXRwdXQgKCkgPVxuICAgIGxldCBvID0gTGlzdC5yZXYgIWludGVybmFsX21lbW9yeSBpbiBsZXQgKCkgPSBpbnRlcm5hbF9tZW1vcnkgOj0gW10gaW4gb1xuIyAxMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgICAwICgqIEVPRiAqKTtcbiAgMjU3ICgqIENPTU1BICopO1xuICAyNTggKCogRE9UICopO1xuICAyNTkgKCogT1BfUEFSICopO1xuICAyNjAgKCogQ0xfUEFSICopO1xuICAyNjEgKCogT1BfQ1VSICopO1xuICAyNjIgKCogQ0xfQ1VSICopO1xuICAyNjMgKCogT1BfQlJBICopO1xuICAyNjQgKCogQ0xfQlJBICopO1xuICAyNjUgKCogQVQgKik7XG4gIDI2NiAoKiBTRU1JQ09MT04gKik7XG4gIDI2NyAoKiBQTFVTICopO1xuICAyNjggKCogTUlOVVMgKik7XG4gIDI2OSAoKiBNVUxUICopO1xuICAyNzAgKCogRElWICopO1xuICAyNzEgKCogTU9EICopO1xuICAyNzIgKCogTUFYICopO1xuICAyNzMgKCogTUlOICopO1xuICAyNzQgKCogU0lOVVMgKik7XG4gIDI3NSAoKiBDT1NJTlVTICopO1xuICAyNzYgKCogVEFOICopO1xuICAyNzcgKCogUE9XICopO1xuICAyNzggKCogQUJTICopO1xuICAyNzkgKCogU1FSVCAqKTtcbiAgMjgwICgqIEVYUE9ORU5UICopO1xuICAyODEgKCogTE9HICopO1xuICAyODIgKCogT1IgKik7XG4gIDI4MyAoKiBBTkQgKik7XG4gIDI4NCAoKiBOT1QgKik7XG4gIDI4NSAoKiBUSEVOICopO1xuICAyODYgKCogRUxTRSAqKTtcbiAgMjg3ICgqIERJRkYgKik7XG4gIDI4OCAoKiBFUVVBTCAqKTtcbiAgMjg5ICgqIFNNQUxMRVIgKik7XG4gIDI5MCAoKiBHUkVBVEVSICopO1xuICAyOTEgKCogVFJVRSAqKTtcbiAgMjkyICgqIEZBTFNFICopO1xuICAyOTMgKCogSU5GSU5JVFkgKik7XG4gIDI5NCAoKiBTSEFSUCAqKTtcbiAgMjk1ICgqIFVOREVSU0NPUkUgKik7XG4gIDI5NiAoKiBQSVBFICopO1xuICAyOTcgKCogUkFSICopO1xuICAyOTggKCogTFJBUiAqKTtcbiAgMjk5ICgqIExBUiAqKTtcbiAgMzAwICgqIEVNQVggKik7XG4gIDMwMSAoKiBUTUFYICopO1xuICAzMDIgKCogQ1BVVElNRSAqKTtcbiAgMzAzICgqIFRJTUUgKik7XG4gIDMwNCAoKiBFVkVOVCAqKTtcbiAgMzA1ICgqIE5VTExfRVZFTlQgKik7XG4gIDMwNiAoKiBDT0xPTiAqKTtcbiAgMzA3ICgqIE5FV0xJTkUgKik7XG4gIDMwOCAoKiBCQUNLU0xBU0ggKik7XG4gIDMwOSAoKiBTSUdOQVRVUkUgKik7XG4gIDMxMCAoKiBUT0tFTiAqKTtcbiAgMzExICgqIElOSVQgKik7XG4gIDMxMiAoKiBPQlMgKik7XG4gIDMxMyAoKiBQTE9UICopO1xuICAzMTQgKCogUEVSVCAqKTtcbiAgMzE1ICgqIENPTkZJRyAqKTtcbiAgMzE2ICgqIEFQUExZICopO1xuICAzMTcgKCogREVMRVRFICopO1xuICAzMTggKCogSU5UUk8gKik7XG4gIDMxOSAoKiBTTkFQU0hPVCAqKTtcbiAgMzIwICgqIFNUT1AgKik7XG4gIDMyMSAoKiBGTFVYICopO1xuICAzMjIgKCogVFJBQ0sgKik7XG4gIDMyMyAoKiBBU1NJR04gKik7XG4gIDMyNCAoKiBQUklOVEYgKik7XG4gIDMyNSAoKiBQTE9URU5UUlkgKik7XG4gIDMyNiAoKiBTUEVDSUVTX09GICopO1xuICAzMjcgKCogRE8gKik7XG4gIDMyOCAoKiBSRVBFQVQgKik7XG4gIDMyOSAoKiBBTEFSTSAqKTtcbiAgMzMwICgqIFJVTiAqKTtcbiAgMzMxICgqIExFVCAqKTtcbiAgICAwfF1cblxubGV0IHl5dHJhbnNsX2Jsb2NrID0gW3xcbiAgMzMyICgqIElOVCAqKTtcbiAgMzMzICgqIEZMT0FUICopO1xuICAzMzQgKCogSUQgKik7XG4gIDMzNSAoKiBMQUJFTCAqKTtcbiAgMzM2ICgqIFNUUklORyAqKTtcbiAgMzM3ICgqIFNQQUNFICopO1xuICAzMzggKCogQ09NTUVOVCAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFxcblxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcblxcMDExXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDE0XFwwMDBcXDAxNFxcMDAwXFxcblxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFxcblxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcblxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFxcblxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcblxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFxcblxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFxcblxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFxcblxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFxcblxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFxcblxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFxcblxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFxcblxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFxcblxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzZcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFxcblxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcblxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFxcblxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcblxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFxcblxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFxcblxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcblxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcblxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcblxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFxcblxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcblxcMDYzXFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFxcblxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcblxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDEwXFwwMDBcXDAwNlxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDdcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXFxuXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDdcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAwXFwyNDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNDlcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDIzOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI2XFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk5XFwwMDBcXDIwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMFxcMDAwXFwxMjFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODFcXDAwMFxcMDkzXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1NVxcMDAwXFwwMDBcXDAwMFxcMTU0XFwwMDBcXDIzN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzJcXDAwMFxcMTIzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0MFxcMDAwXFwyMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDAwMFxcMDAwXFwwMDBcXDE2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNFxcMDAwXFwxNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzNcXDAwMFxcXG5cXDIzMVxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxMTdcXDAwMFxcMTE4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5OFxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDJcXDAwMFxcMDk3XFwwMDBcXDEwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDEyMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjNcXDAwMFxcXG5cXDE2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDE0MVxcMDAwXFwxMzlcXDAwMFxcXG5cXDE0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODRcXDAwMFxcMTg3XFwwMDBcXDE4NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxOTJcXDAwMFxcMDAwXFwwMDBcXDI0MlxcMDAwXFwwMDBcXDAwMFxcMTk3XFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMFxcXG5cXDA5MlxcMDAwXFwxMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcXG5cXDEwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEyNlxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNFxcMDAwXFwxMjlcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAwXFwxNTdcXDAwMFxcMTU4XFwwMDBcXDE1NlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzZcXDAwMFxcXG5cXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODJcXDAwMFxcXG5cXDAwMFxcMDAwXFwxODFcXDAwMFxcMTc4XFwwMDBcXDE3OVxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDBcXDE5NlxcMDAwXFwwOTVcXDAwMFxcXG5cXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIyM1xcMDAwXFwyMTlcXDAwMFxcMjIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyMlxcMDAwXFwyMjBcXDAwMFxcMTY5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTNcXDAwMFxcXG5cXDE3M1xcMDAwXFwxNzRcXDAwMFxcMTgzXFwwMDBcXDE5NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY0XFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMFxcXG5cXDIwN1xcMDAwXFwyMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAwXFwwMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDAzMFxcMDAwXFwwMDhcXDAwMFxcMDEyXFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDAwMFxcMDAwXFwxNDhcXDAwMFxcXG5cXDE0OVxcMDAwXFwxNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDExNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDA0MVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwwMjlcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMzdcXDAwMFxcMDQwXFwwMDBcXDAzOVxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyN1xcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwNTNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcXG5cXDA0N1xcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwwMDBcXDAwMFxcMDQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDVcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDEwXFwwMDBcXDAxM1xcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDEzMVxcMDAwXFwwOTNcXDAwMFxcMjQyXFwwMDFcXDI0M1xcMDAxXFxcblxcMDE1XFwwMDJcXDIzMFxcMDAxXFwyMzFcXDAwMVxcMDA4XFwwMDJcXDIwNVxcMDAxXFwyMzJcXDAwMVxcMjMzXFwwMDFcXDAyOVxcMDAyXFxcblxcMjM0XFwwMDFcXDIzNVxcMDAxXFwwMjBcXDAwMlxcMTYyXFwwMDFcXDA5OVxcMDAxXFwxMDBcXDAwMVxcMTYzXFwwMDFcXDE3OVxcMDAxXFxcblxcMDM4XFwwMDBcXDE4MVxcMDAwXFwwMzlcXDAwMFxcMDk0XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMjM2XFwwMDBcXDA5N1xcMDAwXFxcblxcMDk4XFwwMDBcXDA5OVxcMDAwXFwxODZcXDAwMFxcMTg3XFwwMDBcXDIyM1xcMDAwXFwxMDJcXDAwMFxcMTAzXFwwMDBcXDEwNFxcMDAwXFxcblxcMDQwXFwwMDBcXDE3N1xcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDE0OVxcMDAxXFwwMzZcXDAwMVxcMTI2XFwwMDBcXDA0M1xcMDAwXFxcblxcMTkyXFwwMDBcXDAxN1xcMDAxXFwxODhcXDAwMFxcMDk2XFwwMDFcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTMyXFwwMDBcXDA2MlxcMDAwXFxcblxcMDYzXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDkyXFwwMDFcXDA5M1xcMDAxXFwxMTNcXDAwMFxcMTM4XFwwMDFcXDEzOVxcMDAxXFxcblxcMTE0XFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwyNTBcXDAwMlxcXG5cXDEyNVxcMjU1XFwxMjlcXDI1NVxcMTQ3XFwyNTVcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExOFxcMDA3XFwwMDBcXDAwMFxcMjUyXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDQ4XFwyNTVcXDAyNFxcMjU1XFwyMDhcXDAwMFxcXG5cXDE5MFxcMjU1XFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA2NFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDczXFwyNTVcXDIwOFxcMDAwXFwyMDNcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDI1NVxcXG5cXDAwMlxcMDAxXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzZcXDAwMFxcMjM5XFwyNTVcXDI1NVxcMDAyXFwwNjVcXDAwMVxcMjA4XFwwMDBcXDA3MlxcMDAwXFwwODBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMTBcXDAxMVxcMTA0XFwyNTVcXDAzM1xcMDAwXFwwNjRcXDAwOVxcMDM3XFwyNTVcXDEzMlxcMDA5XFwwNjdcXDAwMFxcXG5cXDE1OFxcMDEyXFwwMDBcXDAwMFxcMDkzXFwwMDBcXDAzN1xcMjU1XFwwOTJcXDAwMVxcMjIzXFwwMDFcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMTZcXDI1NVxcMjA4XFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDJcXDAxNFxcXG5cXDIwMFxcMDA5XFwwMTJcXDAxMFxcMjUxXFwwMTFcXDA4OVxcMDAwXFwwMDBcXDAwMFxcMjUxXFwwMTFcXDI0OFxcMjU1XFwxMzVcXDAwMVxcXG5cXDE2M1xcMDAwXFwwMDBcXDAwMFxcMDkyXFwyNTVcXDIyOFxcMDEyXFwwMDBcXDAwMFxcMTE4XFwwMDdcXDAwMFxcMDAwXFwxNzhcXDAwMFxcXG5cXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDQyXFwwMTRcXDEzNlxcMDE0XFwxMzZcXDAxNFxcMTM2XFwwMTRcXDEzNlxcMDE0XFwxMzZcXDAxNFxcXG5cXDEzNlxcMDE0XFwxMzZcXDAxNFxcMTM2XFwwMTRcXDEzNlxcMDE0XFwxMzZcXDAxNFxcMDUxXFwyNTVcXDEyMVxcMjU1XFwwMTFcXDAwMVxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwyNTVcXDAwMlxcMDEwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk0XFwwMDBcXDIwOFxcMDAwXFwyNDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwOTJcXDI1NVxcMDkyXFwyNTVcXDA2MFxcMDExXFwwMDBcXDAwMFxcXG5cXDIxNlxcMjU1XFwwMTlcXDAxM1xcMjMzXFwwMDFcXDAwMFxcMDAwXFwwOTJcXDI1NVxcMDAwXFwwMDBcXDA5MlxcMjU1XFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwwODVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwxNTdcXDI1NVxcXG5cXDIwOFxcMDAwXFwwODlcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDg5XFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcXG5cXDA4MVxcMDAxXFwxOTZcXDAwMFxcMTE4XFwwMDdcXDA5NlxcMDAxXFwyMDFcXDI1NVxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDY4XFwwMDFcXDIwOFxcMDAwXFwxMzZcXDAxNFxcMTM2XFwwMTRcXDEzNlxcMDE0XFwxMzZcXDAxNFxcXG5cXDEzNlxcMDE0XFwwNDJcXDAxNFxcMDQyXFwwMTRcXDA0MlxcMDE0XFwwNDJcXDAxNFxcMDQyXFwwMTRcXDA0MlxcMDE0XFwwNDJcXDAxNFxcXG5cXDAyN1xcMDAxXFwwMDBcXDAwMFxcMTgyXFwwMDFcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDgwXFwwMTBcXDE0OFxcMDEwXFwwMDBcXDAwMFxcMTU5XFwyNTVcXDE4NlxcMDA3XFwyMDhcXDAwMFxcXG5cXDA0NFxcMDAxXFwxMjZcXDI1NVxcMDYyXFwwMDFcXDA0MlxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDhcXDAwMFxcMTU1XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAxMVxcXG5cXDE3OVxcMDAxXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDg5XFwwMDBcXDIwOFxcMDAwXFwwNDJcXDAxNFxcXG5cXDA0MlxcMDE0XFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDA0MlxcMDE0XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMTRcXDEzNlxcMDE0XFwwNDJcXDAxNFxcMDUxXFwwMDFcXDAwMFxcMDAwXFwxMzZcXDAxNFxcXG5cXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDIzOVxcMjU1XFwyMzlcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwNDJcXDAxNFxcXG5cXDA5MlxcMjU1XFwwMDNcXDAwMlxcMDQyXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwxNzZcXDAwMVxcMTk1XFwwMDFcXDEzNlxcMDAxXFwxMzZcXDAwMVxcMTg2XFwwMDdcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDQzXFwyNTVcXDIyMlxcMDAxXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDA0MlxcMDE0XFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMTM3XFwwMDNcXDIzMlxcMDAxXFwyMDhcXDAwMFxcMjUxXFwwMTFcXDA4OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMlxcMTQzXFwyNTVcXDE4OFxcMDAxXFwwMDBcXDAwMFxcXG5cXDAzOFxcMDAyXFwyMDhcXDAwMFxcMDE0XFwwMDJcXDAwMFxcMDAwXFwxMThcXDAwN1xcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNlxcMDAxXFwxMzZcXDAwMVxcMDQ0XFwwMDFcXDE1NFxcMDAxXFwyMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDQ1XFwwMDJcXDA2NFxcMDAyXFwxNTVcXDAwMlxcMDQyXFwwMTRcXDAxOVxcMDEzXFwxNzlcXDAwMVxcXG5cXDIwOFxcMDAwXFwyNTFcXDAxMVxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMTJcXDI1NVxcMTYwXFwwMDJcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDg3XFwwMDJcXDIwOFxcMDAwXFwxNjRcXDAwMlxcXG5cXDAwOFxcMDA0XFwxMThcXDAwN1xcMDQyXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDEyNlxcMjU1XFwyMzZcXDAwMVxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDE3NVxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAxNFxcMTk0XFwwMDFcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwxNjhcXDAwMlxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMTRcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDAwNVxcMDAxXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDEyNlxcMjU1XFwwNDJcXDAxNFxcMDQyXFwwMTRcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwxNDNcXDI1NVxcXG5cXDAwMFxcMDAwXFwyMDhcXDAwMFxcMTgxXFwwMDJcXDIwOFxcMDAwXFwxNzZcXDAwMlxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDE3M1xcMDAyXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMTc0XFwwMDJcXDE4NFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NlxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwyNTVcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwyNTVcXDAwMFxcMDAwXFwyMDhcXDAwMFxcXG5cXDE1OVxcMDAyXFwxNzlcXDAwMlxcMDcwXFwwMDBcXDE4NVxcMDAyXFwxODdcXDAwMlxcMTg3XFwyNTVcXDIwOFxcMDAwXFwxODhcXDAwMlxcXG5cXDE5OVxcMDAyXFwyMDFcXDAwMlxcMTM1XFwwMDBcXDI0M1xcMDAxXFwxNjVcXDAwMlxcMjA4XFwwMDBcXDIwOFxcMDAyXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMlxcMjE2XFwwMDJcXDAwMFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNzdcXDI1NVxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMjU1XFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDI1NVxcXG5cXDIzMlxcMDAyXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDE5NlxcMjU1XFwxMTZcXDAwMlxcMTY2XFwwMDJcXDA3MlxcMjU1XFwwNzJcXDI1NVxcXG5cXDE4MlxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAyXFwxNjdcXDAwMlxcXG5cXDEwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1M1xcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDE5MlxcMDAyXFwyMzRcXDAwMlxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMlxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMzhcXDAwMlxcXG5cXDIwOFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDA5NVxcMDA4XFwyNTRcXDAwNVxcMTY1XFwwMDhcXDIxNlxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAyXFwwNjNcXDAwMlxcXG5cXDA2M1xcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwNlxcXG5cXDExMFxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwxODJcXDAwMlxcMjE2XFwwMTBcXDA2M1xcMjU1XFwyMTZcXDAxMFxcXG5cXDA4OVxcMDEyXFwxNzFcXDAwMlxcMDYzXFwyNTVcXDIyOFxcMDAxXFwyMDZcXDAwMlxcMTYxXFwwMDZcXDEyOFxcMDAxXFwwNjNcXDAwMVxcXG5cXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDE0XFwyMTZcXDAxMFxcXG5cXDIxNlxcMDEwXFwyMTJcXDAwNFxcMTA1XFwwMDVcXDA0MlxcMDEyXFwxMjRcXDAwMFxcMjM0XFwwMDFcXDAzNFxcMDA1XFwwNDFcXDAwMFxcXG5cXDE4NFxcMjU1XFwwNjZcXDAxM1xcMDAwXFwwMDBcXDE2NVxcMDA4XFwyMThcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMTRcXDE4M1xcMDE0XFwxODNcXDAxNFxcMTgzXFwwMTRcXDE4M1xcMDE0XFwxODNcXDAxNFxcXG5cXDE4M1xcMDE0XFwxODNcXDAxNFxcMTgzXFwwMTRcXDE4M1xcMDE0XFwxODNcXDAxNFxcMTc3XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxODRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMVxcXG5cXDAwMFxcMDAwXFwyMjNcXDAwMlxcMjMwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDZcXDAxM1xcMDA3XFwwNzFcXDAwN1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAxM1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMjU1XFwxODRcXDI1NVxcXG5cXDExMFxcMDExXFwwMDBcXDAwMFxcMTk4XFwwMDRcXDAwMFxcMDAwXFwxODJcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDNcXDAwMlxcXG5cXDE4M1xcMDE0XFwxODNcXDAxNFxcMTgzXFwwMTRcXDE4M1xcMDE0XFwxODNcXDAxNFxcMDg5XFwwMTRcXDA4OVxcMDE0XFwwODlcXDAxNFxcXG5cXDA4OVxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDE0XFwwODlcXDAxNFxcMDAwXFwwMDBcXDA4OVxcMDE0XFwxODJcXDAwMlxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk1XFwwMDhcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMDk1XFwwMDhcXDAwMFxcMDAwXFwwNTBcXDAwOFxcXG5cXDAwMFxcMDAwXFwxNjJcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE2XFwwMTBcXDIxNlxcMDEwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDE2NVxcMDA4XFwwMDBcXDAwMFxcMTcxXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxOFxcMDAwXFwxODJcXDAwMlxcMDg5XFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEyN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAxMVxcXG5cXDAzOFxcMDAwXFwwMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyM1xcMDAyXFwwMDBcXDAwMFxcMDg5XFwwMTRcXDA4OVxcMDE0XFwxMDVcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODlcXDAxNFxcMDIwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDE0XFwxODNcXDAxNFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAxNFxcXG5cXDAwMFxcMDAwXFwyMDZcXDAwMVxcMDAwXFwwMDBcXDE4M1xcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAxNFxcMTg0XFwyNTVcXDExNlxcMDA3XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODlcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjVcXDAwOFxcXG5cXDAwMFxcMDAwXFwwMDJcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODlcXDAxNFxcMDA0XFwwMDdcXDEwNVxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNDJcXDAxMlxcMDAwXFwwMDBcXDAyM1xcMDAyXFwwNDFcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM2XFwwMDJcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDdcXDAwM1xcMTUwXFwwMDNcXDA1NFxcMDA0XFwxMzRcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE4XFwwMDBcXDE4MlxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzZcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjlcXDAxM1xcXG5cXDE2NVxcMDA4XFwwMDBcXDAwMFxcMjAwXFwwMDJcXDAwMFxcMDAwXFwxNjNcXDAwOFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNDlcXDAwMFxcMDAyXFwwMDNcXDAwMFxcMDAwXFwwMTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAxNFxcXG5cXDE4MlxcMDEzXFwwMTdcXDAwM1xcMDIzXFwwMDNcXDAwMFxcMDAwXFwwNDJcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTBcXDAwM1xcMDI1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxODJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI3XFwwMDFcXDE4MVxcMDA2XFwwODlcXDAxNFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjNcXDAwOFxcMjA0XFwwMDhcXDA2MVxcMjU1XFwwMThcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDVcXDAwNlxcMDAwXFwwMDBcXDAyOFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDI0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMTA1XFwwMDVcXDE4M1xcMDE0XFwwMDBcXDAwMFxcXG5cXDI0OVxcMDAwXFwwMjVcXDAwM1xcMDAwXFwwMDBcXDAxNVxcMDAzXFwwOTVcXDAwOFxcMDAwXFwwMDBcXDE4M1xcMDE0XFwwMDBcXDAwMFxcXG5cXDE2NlxcMDA3XFwyMTlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOFxcMDAxXFwwMDhcXDAwMVxcXG5cXDAwMlxcMDAzXFwxMzNcXDAwNlxcMDAwXFwwMDBcXDAxOFxcMDAwXFwwODlcXDAxNFxcMDg5XFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwyNTVcXDAxOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1NFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDA3XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDI1NVxcMDAwXFwwMDBcXDA3M1xcMDA2XFwwNzNcXDAwNlxcXG5cXDAwMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDA3XFwwMDBcXDAwMFxcMTg1XFwyNTVcXDAwOFxcMDAxXFwwMjVcXDAwM1xcXG5cXDAwMFxcMDAwXFwwMThcXDAwMFxcMTM2XFwwMDhcXDIyMVxcMDA1XFwyMzVcXDAwN1xcMDAwXFwwMDBcXDAwNFxcMDAzXFwwMDRcXDAwM1xcXG5cXDE3MFxcMDAwXFwwMDRcXDAwM1xcMDA0XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMzXFwwMDFcXDAzMVxcMDAzXFwxMjlcXDAwMVxcXG5cXDAzNFxcMDAzXFwyNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyMVxcMDAyXFwxNDFcXDAwNFxcMDMzXFwwMDNcXDIzOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDNcXDAwMFxcMDAwXFwwMzdcXDAwOFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDFcXDA2OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDI1NVxcMjI4XFwwMDBcXDAwMFxcMDAwXFwxMjNcXDAwMFxcXG5cXDA0NVxcMDA2XFwyMjJcXDAwMFxcMTI5XFwwMDFcXDAwMFxcMDAwXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjJcXDAwMFxcXG5cXDIyNFxcMDAyXFwyMjRcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIyXFwwMDBcXDIyMlxcMDAwXFwyMzBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwxNDRcXDAwMVxcMTQ0XFwwMDFcXDE0MFxcMDAyXFwwMDBcXDAwMFxcXG5cXDE4MlxcMDAyXFwxOTNcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0OVxcMDAxXFwxMjNcXDAwMFxcMDU0XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDNcXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDNcXDAzNVxcMDAzXFwxNDRcXDAwMVxcMjUxXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMjRcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDRcXDAwMVxcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ0XFwwMDFcXDE0MFxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAzXFwwMDBcXDAwMFxcXG5cXDE0NFxcMDAxXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDNcXDAwMFxcMDAwXFwyMDJcXDI1NVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwyNTRcXDAwMFxcMDAwXFwwNjNcXDI1NFxcMTk4XFwyNTVcXDIzNVxcMjUzXFwwNTFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgyXFwyNTRcXDE4NlxcMjU0XFwwODFcXDI1NFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg4XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDEwN1xcMDAxXFwxNzZcXDI1NVxcXG5cXDE2MVxcMDAyXFwxNjJcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwxMjNcXDI1NVxcMTUzXFwwMDNcXDAwMFxcMDAwXFwwNTdcXDAwM1xcXG5cXDAyM1xcMDA0XFwwNTRcXDI1NVxcMTQ5XFwyNTVcXDExM1xcMDAzXFwxNzhcXDAwMlxcMTgwXFwwMDJcXDAwMFxcMDAwXFwyMDdcXDAwM1xcXG5cXDIyNFxcMDAzXFwxODNcXDAwMlxcMDAwXFwwMDBcXDIxMlxcMDAyXFwxMzRcXDI1NVxcMDMwXFwwMDNcXDIxNFxcMjU1XFwyNTJcXDI1NVxcXG5cXDA1NVxcMjU1XFwwMDBcXDAwMFxcMTMzXFwyNTVcXDI0N1xcMDAyXFwxNzZcXDI1NFxcMDAwXFwwMDBcXDIwNFxcMjU0XFwyMDVcXDAwMlxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQyXFwwMDRcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSA0MTAyXG5sZXQgeXl0YWJsZSA9IFwiXFwwMTFcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMTdcXDAwMFxcMDE5XFwwMDBcXDIwM1xcMDAwXFwwMzJcXDAwMVxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMjJcXDAwMFxcXG5cXDEzM1xcMDAwXFwwNTlcXDAwMFxcMTQ2XFwwMDBcXDIyNFxcMDAwXFwxMzdcXDAwMFxcMTQxXFwwMDFcXDIwOFxcMDAwXFwxMDBcXDAwMFxcXG5cXDEwMVxcMDAwXFwyMTdcXDAwMVxcMjMzXFwwMDBcXDIwMlxcMDAwXFwxNzFcXDAwMFxcMjUyXFwwMDFcXDEwNVxcMDAwXFwxMDZcXDAwMFxcXG5cXDE0NVxcMDAxXFwwMDFcXDAwMFxcMTA3XFwwMDBcXDEwOFxcMDAwXFwxMDlcXDAwMFxcMTEwXFwwMDBcXDExMVxcMDAwXFwxMTJcXDAwMFxcXG5cXDExNVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDExOFxcMDAwXFwxODlcXDAwMFxcMDAxXFwwMDBcXDEyMlxcMDAwXFwxMzdcXDAwMVxcXG5cXDAwMVxcMDAwXFwwODNcXDAwMlxcMDk3XFwwMDFcXDE0NFxcMDAxXFwwMDFcXDAwMFxcMTI4XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcXG5cXDExOVxcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMzZcXDAwMFxcMjQ4XFwwMDBcXDEzOFxcMDAwXFwxMzlcXDAwMFxcXG5cXDE0MFxcMDAwXFwyMjJcXDAwMVxcMTQyXFwwMDBcXDE0NFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDAwMVxcMDAwXFwxMjFcXDAwMFxcXG5cXDA1OFxcMDAwXFwxNDdcXDAwMFxcMTQ4XFwwMDBcXDE0OVxcMDAwXFwxNTBcXDAwMFxcMTUxXFwwMDBcXDE1MlxcMDAwXFwxNTNcXDAwMFxcXG5cXDE1NFxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwxNThcXDAwMFxcMDkxXFwwMDFcXDA3OFxcMDAwXFwxMDNcXDAwMlxcXG5cXDE1OVxcMDAwXFwwMzNcXDAwMlxcMTQxXFwwMDBcXDAyNlxcMDAyXFwxNzZcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwxNzJcXDAwMVxcXG5cXDIwMFxcMDAxXFwwMThcXDAwMlxcMDQ1XFwwMDFcXDE5MlxcMDAxXFwwNDdcXDAwMVxcMDI0XFwwMDBcXDE2MFxcMDAwXFwyMjhcXDAwMVxcXG5cXDA1MVxcMDAxXFwwNDdcXDAwMlxcMDYwXFwwMDJcXDEyMFxcMDAwXFwxNzFcXDAwMFxcMDMzXFwwMDFcXDIwNlxcMDAxXFwxNzhcXDAwMFxcXG5cXDE4OVxcMDAwXFwxNzlcXDAwMFxcMDY2XFwwMDJcXDE3NlxcMDAwXFwwNjdcXDAwMlxcMTAwXFwwMDBcXDE5N1xcMDAwXFwwNTZcXDAwMVxcXG5cXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwwNTJcXDAwMFxcMjA1XFwwMDBcXDIwNlxcMDAwXFwyMDdcXDAwMFxcXG5cXDA5OFxcMDAxXFwyMDlcXDAwMFxcMDI0XFwwMDBcXDIxMFxcMDAwXFwwMDZcXDAwMFxcMDk3XFwwMDFcXDE0NFxcMDAwXFwyMThcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMDFcXDAwMFxcMjE4XFwwMDBcXDA3M1xcMDAyXFwwODBcXDAwMlxcMDkwXFwwMDJcXDI0N1xcMDAxXFwyMjlcXDAwMVxcXG5cXDEwMFxcMDAwXFwyMzJcXDAwMFxcMDU4XFwwMDBcXDE5M1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE2MFxcMDAxXFwyMzVcXDAwMFxcXG5cXDIzN1xcMDAwXFwyNTNcXDAwMVxcMDE1XFwwMDBcXDAyN1xcMDAyXFwwOTFcXDAwMVxcMjM4XFwwMDBcXDIzOVxcMDAwXFwyNDBcXDAwMFxcXG5cXDI0MVxcMDAwXFwyNDJcXDAwMFxcMjQzXFwwMDBcXDI0NFxcMDAwXFwyNDVcXDAwMFxcMjQ2XFwwMDBcXDI0N1xcMDAwXFwyNTNcXDAwMFxcXG5cXDI1NFxcMDAwXFwyNTVcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDExM1xcMDAxXFwwMzZcXDAwMFxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwNjVcXDAwMVxcMDA4XFwwMDFcXDAwOVxcMDAxXFwwMDdcXDAwMFxcXG5cXDA1OFxcMDAyXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAwN1xcMDAwXFwwMTJcXDAwMVxcMTgwXFwwMDBcXDA2OFxcMDAyXFwwMjJcXDAwMlxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDUwXFwwMDFcXDAzMlxcMDAyXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDA1MlxcMDAwXFwyMjFcXDAwMFxcXG5cXDIyMlxcMDAwXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwMjVcXDAwMVxcMDA3XFwwMDBcXDI1MFxcMDAwXFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMjhcXDAwMVxcMTQzXFwwMDBcXDA5OFxcMDAxXFwwNThcXDAwMVxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwNzRcXDAwMlxcXG5cXDE3NlxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDE2MFxcMDAxXFwxOTFcXDAwMVxcMDE0XFwwMDBcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMjRcXDAwMFxcMTQ1XFwwMDBcXDAxNFxcMDAwXFwxNjFcXDAwMVxcMDQzXFwwMDFcXDAwMVxcMDAwXFwwNDZcXDAwMVxcXG5cXDIyOFxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDE4XFwwMDFcXDAyNlxcMDAwXFwwMjdcXDAwMFxcXG5cXDA1NVxcMDAxXFwxNTZcXDAwMVxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwNDRcXDAwMVxcMDU5XFwwMDFcXDA2MFxcMDAxXFwxMjRcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjEzXFwwMDFcXDE1NVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2MVxcMDAxXFwwMDFcXDAwMFxcXG5cXDA2MlxcMDAxXFwwMjRcXDAwMFxcMDY0XFwwMDFcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMDA3XFwwMDBcXDA1OVxcMDAyXFwwMjVcXDAwMFxcXG5cXDIyMlxcMDAxXFwxNDZcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwNzVcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDNcXDAwMFxcXG5cXDIyOVxcMDAxXFwxNjhcXDAwMVxcMTQ2XFwwMDBcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDE0NlxcMDAwXFwwNzVcXDAwMlxcXG5cXDA4M1xcMDAxXFwwMDFcXDAwMFxcMDkwXFwwMDFcXDE0NlxcMDAwXFwxNDZcXDAwMFxcMDAxXFwwMDBcXDA5NFxcMDAxXFwyMDJcXDAwMFxcXG5cXDE3MVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDAxXFwwMDBcXDE3MVxcMDAwXFwxODZcXDAwMVxcXG5cXDEwM1xcMDAxXFwxNjFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDdcXDAwMVxcMDM2XFwwMDBcXDIyOFxcMDAxXFwwMDFcXDAwMFxcXG5cXDExMFxcMDAxXFwwMDFcXDAwMFxcMTExXFwwMDFcXDExMlxcMDAxXFwwMDFcXDAwMFxcMTE0XFwwMDFcXDIwMVxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxMTdcXDAwMVxcMDAxXFwwMDBcXDExOFxcMDAxXFwwMDFcXDAwMFxcMTcwXFwwMDBcXDE3MVxcMDAwXFwxNzFcXDAwMFxcXG5cXDE3MVxcMDAwXFwxMDBcXDAwMFxcMTIyXFwwMDFcXDE3MFxcMDAwXFwxMjBcXDAwMVxcMTIxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDE3MFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDM2XFwwMDBcXDIyNVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI1XFwwMDFcXDIwM1xcMDAwXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDIyOVxcMDAxXFwwMjRcXDAwMFxcXG5cXDAxNFxcMDAxXFwwMjZcXDAwMlxcMTQ2XFwwMDBcXDE3MFxcMDAwXFwxNzBcXDAwMFxcMTcwXFwwMDBcXDEzMlxcMDAxXFwxMzNcXDAwMVxcXG5cXDE3NlxcMDAwXFwwOTBcXDAwMVxcMTYxXFwwMDBcXDIwMlxcMDAwXFwxNzFcXDAwMFxcMTQyXFwwMDFcXDE3NlxcMDAwXFwwMDFcXDAwMFxcXG5cXDE0M1xcMDAxXFwwMDFcXDAwMFxcMTcyXFwwMDBcXDE0N1xcMDAxXFwxNzFcXDAwMFxcMjM3XFwwMDFcXDE1MFxcMDAxXFwxNTFcXDAwMVxcXG5cXDE1MlxcMDAxXFwxNzNcXDAwMFxcMjE4XFwwMDBcXDE1NFxcMDAxXFwxODlcXDAwMFxcMDAxXFwwMDBcXDE4MlxcMDAwXFwxNTdcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTg5XFwwMDBcXDE4OFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG5cXDE3NlxcMDAwXFwxNzBcXDAwMFxcMDAxXFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMDAxXFwwMDBcXDE0NFxcMDAwXFwxMzhcXDAwMFxcXG5cXDE2NlxcMDAxXFwxNzBcXDAwMFxcMTQ0XFwwMDBcXDAwMVxcMDAwXFwxNjlcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNDRcXDAwMFxcXG5cXDE0NFxcMDAwXFwyMzhcXDAwMVxcMjM5XFwwMDFcXDE5NVxcMDAwXFwwMzhcXDAwMlxcMDAxXFwwMDBcXDE3N1xcMDAxXFwxOTNcXDAwMFxcXG5cXDE3OFxcMDAxXFwwMjdcXDAwMlxcMDAxXFwwMDBcXDAyOFxcMDAyXFwwMzlcXDAwMlxcMTkzXFwwMDBcXDIxOFxcMDAwXFwxODVcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTg3XFwwMDFcXDAxNVxcMDAxXFwxNzZcXDAwMFxcMTg5XFwwMDFcXDA5NFxcMDAyXFwxOTBcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTk0XFwwMDFcXDE5NVxcMDAxXFwwOTBcXDAwMVxcMTk4XFwwMDFcXDA5NVxcMDAyXFwxMDBcXDAwMFxcXG5cXDIwMlxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOThcXDAwMFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyNDBcXDAwMVxcXG5cXDE4OVxcMDAwXFwyNDFcXDAwMVxcMjA5XFwwMDFcXDIxMFxcMDAxXFwyMTFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjE2XFwwMDFcXDE3NlxcMDAwXFwxNzhcXDAwMVxcXG5cXDAxOVxcMDAyXFwwMjFcXDAwMVxcMjE5XFwwMDFcXDA1NFxcMDAxXFwyMjlcXDAwMFxcMjIxXFwwMDFcXDE0NFxcMDAwXFwyMjBcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI0NFxcMDAxXFwwMDFcXDAwMFxcMjQ1XFwwMDFcXDI0NlxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjUwXFwwMDFcXDE5M1xcMDAwXFwyNTFcXDAwMVxcMjA0XFwwMDFcXDA0M1xcMDAyXFwxODVcXDAwMFxcXG5cXDI1NFxcMDAxXFwxOTRcXDAwMFxcMjU1XFwwMDFcXDIyOFxcMDAxXFwyMzRcXDAwMFxcMDAxXFwwMDJcXDAwMlxcMDAyXFwwMDNcXDAwMlxcXG5cXDAwNFxcMDAyXFwwMDVcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDZcXDAwMlxcMDAxXFwwMDBcXDAwOVxcMDAyXFwwMTBcXDAwMlxcXG5cXDAxMVxcMDAyXFwwMDFcXDAwMFxcMjExXFwwMDBcXDIxM1xcMDAwXFwyMTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwMTJcXDAwMlxcXG5cXDAxM1xcMDAyXFwwNTVcXDAwMFxcMDEzXFwwMDFcXDA2OVxcMDAyXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDIxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAyM1xcMDAyXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA3XFwwMDBcXDIyOVxcMDAxXFwyMzZcXDAwMVxcMDM0XFwwMDJcXDIzN1xcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDg1XFwwMDJcXDAwMVxcMDAwXFwwNDRcXDAwMlxcMDkxXFwwMDJcXDA0NlxcMDAyXFwxNzhcXDAwMVxcXG5cXDA0OFxcMDAyXFwwNDlcXDAwMlxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDA1MlxcMDAyXFwwNTNcXDAwMlxcXG5cXDA1NFxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNTVcXDAwMlxcMDU2XFwwMDJcXDA1N1xcMDAyXFwyNTJcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDlcXDAwMFxcMjA0XFwwMDFcXDA2MVxcMDAyXFwwNjJcXDAwMlxcMDYzXFwwMDJcXDAxOFxcMDAxXFwwNjRcXDAwMlxcXG5cXDA2NVxcMDAyXFwwMDFcXDAwMFxcMjM4XFwwMDFcXDIzOVxcMDAxXFwwMjNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDA3MlxcMDAyXFwxNzhcXDAwMVxcMjAwXFwwMDBcXDAwMVxcMDAwXFwwMjNcXDAwMFxcMjAxXFwwMDBcXDAyNFxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwODFcXDAwMlxcMDgyXFwwMDJcXDA1NVxcMDAwXFwwMzVcXDAwMVxcMDUyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwODZcXDAwMlxcMDg3XFwwMDJcXDA4OFxcMDAyXFwwODlcXDAwMlxcMjA0XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDA5MlxcMDAyXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDU2XFwwMDBcXDEyNFxcMDAwXFwwNDlcXDAwMFxcXG5cXDI0MFxcMDAxXFwwOTNcXDAwMlxcMjQxXFwwMDFcXDAwMVxcMDAwXFwwNTNcXDAwMVxcMDAxXFwwMDBcXDA0MlxcMDAxXFwxMjVcXDAwMFxcXG5cXDA5NlxcMDAyXFwwOTdcXDAwMlxcMTIzXFwwMDFcXDIwMFxcMDAwXFwxMDBcXDAwMlxcMTAxXFwwMDJcXDIwMVxcMDAwXFwxNjRcXDAwMFxcXG5cXDE2NVxcMDAwXFwxMDJcXDAwMlxcMDcwXFwwMDJcXDA1N1xcMDAxXFwyMDJcXDAwMFxcMTA0XFwwMDJcXDAwMVxcMDAwXFwxMDZcXDAwMlxcXG5cXDA3NlxcMDAxXFwwNzhcXDAwMlxcMDc5XFwwMDJcXDA2M1xcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA5NVxcMDAxXFwwMDFcXDAwMFxcMDg1XFwwMDFcXDA4N1xcMDAxXFwxMzhcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEzOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwMlxcMDAxXFwwMDFcXDAwMFxcXG5cXDEzOFxcMDAwXFwxMzhcXDAwMFxcMDAxXFwwMDBcXDEwMVxcMDAxXFwwMDFcXDAwMFxcMjAyXFwwMDBcXDEwNVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwyMjJcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDEwNVxcMDAxXFwwNTZcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNDlcXDAwMFxcMTE1XFwwMDFcXDExNlxcMDAxXFwyMjNcXDAwMVxcMjI0XFwwMDFcXDE3NVxcMDAxXFwxMDRcXDAwMVxcXG5cXDE3NlxcMDAxXFwxMTlcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDEzOFxcMDAwXFwxMzhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwyMjVcXDAwMVxcMjI2XFwwMDFcXDIyN1xcMDAxXFwxMDlcXDAwMVxcMDc3XFwwMDFcXDAwMVxcMDAwXFwyMjhcXDAwMVxcXG5cXDA3OFxcMDAxXFwxMzRcXDAwMVxcMTI4XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTMxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxNFxcMDAxXFwxMzhcXDAwMFxcXG5cXDIxNVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMzVcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMzZcXDAwMVxcXG5cXDAwMVxcMDAwXFwxNDhcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMjdcXDAwMFxcMjI4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwOVxcMDAwXFwyMjlcXDAwMVxcXG5cXDAyNFxcMDAwXFwxNDZcXDAwMVxcMDUwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNzlcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDI0XFwwMDBcXDE1M1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE1OFxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDQwXFwwMDJcXDA1OFxcMDAxXFwwNDFcXDAwMlxcMDAxXFwwMDBcXDIwN1xcMDAxXFwyMDhcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDIwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDE0OFxcMDAxXFwwMzVcXDAwMVxcMjAwXFwwMDBcXDEzMFxcMDAxXFwxNTlcXDAwMVxcMjAxXFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyN1xcMDAwXFwxNjRcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxNjVcXDAwMVxcMDAxXFwwMDBcXDE2N1xcMDAxXFwwMzZcXDAwMFxcMDAxXFwwMDBcXDExMFxcMDAwXFwxODBcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjIzXFwwMDFcXDIyNFxcMDAxXFwyMDJcXDAwMFxcMDAxXFwwMDBcXDAzNlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNDhcXDAwMVxcMjQ5XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxODFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDVcXDAwMFxcXG5cXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTExXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDE4MlxcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDE5M1xcMDAxXFwxOTZcXDAwMVxcMDQyXFwwMDJcXDIzN1xcMDAxXFwxOTlcXDAwMVxcXG5cXDEwNVxcMDAwXFwxMDVcXDAwMFxcMjE4XFwwMDFcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcXG5cXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDAwMVxcMDAwXFwyMTJcXDAwMVxcMTMwXFwwMDFcXDEwNVxcMDAwXFwxMDVcXDAwMFxcXG5cXDEwNVxcMDAwXFwwMDBcXDAwMlxcMDA3XFwwMDJcXDAxNFxcMDAyXFwwMTZcXDAwMlxcMDE3XFwwMDJcXDAyNFxcMDAyXFwwNzZcXDAwMlxcXG5cXDEwNVxcMDAwXFwwMzVcXDAwMlxcMDAxXFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcXG5cXDEwNVxcMDAwXFwxMDVcXDAwMFxcMjM4XFwwMDFcXDIzOVxcMDAxXFwwMDFcXDAwMFxcMDM2XFwwMDJcXDAzN1xcMDAyXFwwMDFcXDAwMFxcXG5cXDA1MFxcMDAyXFwxMzZcXDAwMFxcMDI1XFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwwNDVcXDAwMlxcXG5cXDAzMFxcMDAyXFwxMDVcXDAwMFxcMDMxXFwwMDJcXDA1MVxcMDAyXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTEyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAxXFwwMDBcXDA3MVxcMDAyXFwwOTlcXDAwMlxcXG5cXDI0MFxcMDAxXFwwNzdcXDAwMlxcMjQxXFwwMDFcXDEwNVxcMDAyXFwwODRcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAxXFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDU5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwxNjRcXDAwMFxcMTY1XFwwMDBcXDA5OFxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDZcXDAwMFxcXG5cXDEwOVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTE1XFwwMDBcXDAwMVxcMDAwXFwwNjNcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcXG5cXDE2OVxcMDAwXFwxNDdcXDAwMFxcMjA1XFwwMDBcXDAwMVxcMDAwXFwwMjZcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAxN1xcMDAwXFwxMDlcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEzXFwwMDBcXDI0OVxcMDAwXFwwMDFcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDg4XFwwMDFcXDA3NFxcMDAxXFwxMjNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjI2XFwwMDBcXDAzN1xcMDAxXFwyMDRcXDAwMFxcMTA4XFwwMDFcXDIzMFxcMDAwXFwxODNcXDAwMVxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTg0XFwwMDFcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDE5OVxcMDAwXFwxNDBcXDAwMVxcMTI3XFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwxNzNcXDAwMVxcMjUxXFwwMDBcXDAwMFxcMDAwXFwxOTdcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDExMFxcMDAwXFwxNzRcXDAwMVxcMDAwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMVxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDQyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDM5XFwwMDFcXDE2NFxcMDAwXFwxNjVcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMFxcXG5cXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwxMzZcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMDBcXDEzNlxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMDBcXDEzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMDg5XFwwMDFcXDAwMFxcMDAwXFwxMjlcXDAwMVxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcXG5cXDA0NlxcMDAwXFwxMzZcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcXG5cXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcXG5cXDExNFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMTRcXDAwMFxcXG5cXDExNFxcMDAwXFwxMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTRcXDAwMFxcXG5cXDExNFxcMDAwXFwxMTVcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcXG5cXDExNFxcMDAwXFwxMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcXG5cXDExNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDExNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcXG5cXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwMDBcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTVcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcXG5cXDExNVxcMDAwXFwxMTVcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDExNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTVcXDAwMFxcXG5cXDExNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMjEwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcXG5cXDA2N1xcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDA2N1xcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDA4MFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxNTFcXDAwMFxcMTUxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjhcXDAwMFxcMDAxXFwwMDBcXDE1MVxcMDAwXFwxNTFcXDAwMFxcMTUxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MVxcMDAwXFwxNTFcXDAwMFxcMTUxXFwwMDBcXDE1MVxcMDAwXFwxNTFcXDAwMFxcMTUxXFwwMDBcXDE1MVxcMDAwXFwwMjNcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEzMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxNTFcXDAwMFxcMTUxXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFwwODlcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2MVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2OFxcMDAwXFwwMDBcXDAwMFxcMjEwXFwwMDBcXDIxMFxcMDAwXFwyMTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEwXFwwMDBcXDIxMFxcMDAwXFwyMTBcXDAwMFxcMjEwXFwwMDBcXDIxMFxcMDAwXFwyMTBcXDAwMFxcXG5cXDIxMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDhcXDAwMFxcMjEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMFxcMDAwXFwyMTBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG5cXDA4N1xcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMjdcXDAwMFxcMTUyXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxNjFcXDAwMFxcMDM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MlxcMDAwXFwxNTJcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXDE1MlxcMDAwXFwxNTJcXDAwMFxcXG5cXDE1MlxcMDAwXFwxNTJcXDAwMFxcMTUyXFwwMDBcXDE1MlxcMDAwXFwyMThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxNjFcXDAwMFxcXG5cXDE2MVxcMDAwXFwxNjFcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwxNTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjFcXDAwMFxcMTYxXFwwMDBcXDE2MVxcMDAwXFwxNjFcXDAwMFxcXG5cXDE2MVxcMDAwXFwxNjFcXDAwMFxcMTYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDBcXDIxOFxcMDAwXFwyMThcXDAwMFxcMTY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYxXFwwMDBcXDE2MVxcMDAwXFwyMThcXDAwMFxcXG5cXDIxOFxcMDAwXFwyMThcXDAwMFxcMjE4XFwwMDBcXDIxOFxcMDAwXFwyMThcXDAwMFxcMjE4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIxOFxcMDAwXFwyMThcXDAwMFxcMDAxXFwwMDBcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTY4XFwwMDBcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTY4XFwwMDBcXDE2OFxcMDAwXFwwNjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDE2OFxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNjhcXDAwMFxcMTY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcXG5cXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcXG5cXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcXG5cXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMTg0XFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcXG5cXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcXG5cXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcXG5cXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcXG5cXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcXG5cXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcXG5cXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcXG5cXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcXG5cXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcXG5cXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcXG5cXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcXG5cXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwODlcXDAwMFxcXG5cXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwxMDZcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDA2N1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcXG5cXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcXG5cXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwODlcXDAwMFxcXG5cXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIxNFxcMDAwXFwyMTRcXDAwMFxcMjE0XFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcXG5cXDIxNFxcMDAwXFwyMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcMjE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTRcXDAwMFxcMjE0XFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcXG5cXDIxNFxcMDAwXFwyMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTRcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwyMTRcXDAwMFxcMjE0XFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcXG5cXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcXG5cXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcXG5cXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG5cXDA1MVxcMDAwXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNTVcXDAwMFxcMDk0XFwwMDFcXDEyMlxcMDAwXFwwMTlcXDAwMFxcXG5cXDAxOVxcMDAwXFwxOTNcXDAwMVxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE1XFwwMDFcXDAyNFxcMDAwXFwwMjVcXDAwMFxcXG5cXDA5OVxcMDAxXFwwMDBcXDAwMFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwOTJcXDAwMVxcXG5cXDAwMFxcMDAwXFwwNjNcXDAwMlxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcXG5cXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDAzXFwwMDFcXDA1NlxcMDAwXFwwNTdcXDAwMFxcXG5cXDA1OFxcMDAwXFwwMDBcXDAwMVxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwNDBcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDIzXFwwMDFcXDAyOFxcMDAxXFwxMDFcXDAwMlxcXG5cXDA4MlxcMDAwXFwwMDZcXDAwMlxcMDEwXFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDM1XFwwMDFcXDAzNlxcMDAxXFwxNDBcXDAwMVxcXG5cXDE2OVxcMDAxXFwwMzJcXDAwMVxcMjI0XFwwMDBcXDE2MlxcMDAxXFwyMjZcXDAwMFxcMDAyXFwwMDFcXDA5NlxcMDAwXFwwMzhcXDAwMVxcXG5cXDIzMFxcMDAwXFwwMTdcXDAwMlxcMDM2XFwwMDJcXDA1MlxcMDAxXFwxMDJcXDAwMFxcMjA5XFwwMDBcXDE3N1xcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDEwNlxcMDAwXFwwMDJcXDAwMVxcMTEzXFwwMDBcXDExM1xcMDAwXFwyMzVcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDRcXDAwMVxcMTE5XFwwMDBcXDEyMFxcMDAwXFwxMjFcXDAwMFxcXG5cXDA3OFxcMDAxXFwxMjNcXDAwMFxcMDAyXFwwMDFcXDEyNVxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwxMzFcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA1MVxcMDAyXFwwNTdcXDAwMlxcMDcxXFwwMDJcXDIwOVxcMDAxXFwwNzhcXDAwMVxcXG5cXDE0MFxcMDAwXFwxNDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAxXFwxNDVcXDAwMFxcXG5cXDE0N1xcMDAwXFwyMTZcXDAwMVxcMDAwXFwwMDFcXDA3NlxcMDAxXFwwOTRcXDAwMVxcMTQ4XFwwMDBcXDE0OVxcMDAwXFwxNTBcXDAwMFxcXG5cXDE1MVxcMDAwXFwxNTJcXDAwMFxcMTUzXFwwMDBcXDE1NFxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwxNjFcXDAwMFxcXG5cXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY0XFwwMDBcXDE2NVxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcXG5cXDA0NlxcMDAxXFwwNzhcXDAwMVxcMTcyXFwwMDBcXDE3M1xcMDAwXFwyNTNcXDAwMFxcMTc1XFwwMDBcXDE3NlxcMDAwXFwwNTFcXDAwMVxcXG5cXDAwMFxcMDAxXFwxNzlcXDAwMFxcMTgwXFwwMDBcXDA1MVxcMDAxXFwxODJcXDAwMFxcMDc4XFwwMDFcXDA3NlxcMDAxXFwyNTRcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDJcXDAwMVxcMjI5XFwwMDBcXDAwMVxcMDAxXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDA3OFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwxOTVcXDAwMFxcMTk2XFwwMDBcXDAzN1xcMDAxXFwxOThcXDAwMFxcMDUxXFwwMDFcXDA3OFxcMDAxXFwyMDFcXDAwMFxcXG5cXDIwMlxcMDAwXFwyMDNcXDAwMFxcMDAwXFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMTJcXDAwMVxcXG5cXDIwN1xcMDAwXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDA4XFwwMDFcXDIxNlxcMDAwXFwyMTdcXDAwMFxcXG5cXDAzMlxcMDAxXFwwMDJcXDAwMVxcMDEwXFwwMDFcXDAxNFxcMDAxXFwwNzhcXDAwMVxcMjIzXFwwMDBcXDAzOFxcMDAxXFwyMjVcXDAwMFxcXG5cXDAzOFxcMDAxXFwyMjdcXDAwMFxcMjI4XFwwMDBcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDI5XFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDIzNFxcMDAwXFwxMTFcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwODBcXDAwMVxcMjM5XFwwMDBcXDI0MFxcMDAwXFwwNjRcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMTg5XFwwMDFcXDExMFxcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDI0OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDI1MFxcMDAwXFwwMDJcXDAwMVxcMjUyXFwwMDBcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDUxXFwwMDFcXDA3OFxcMDAxXFwwNDBcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDdcXDAwMVxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcXG5cXDA3OFxcMDAxXFwxMzNcXDAwMVxcMDAwXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAwNFxcMDAxXFwwNzZcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMDBcXDAwMVxcMDIzXFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDA0XFwwMDFcXDAyNFxcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDA0XFwwMDFcXDAxMFxcMDAxXFwxNTRcXDAwMVxcXG5cXDAzNFxcMDAxXFwwNzhcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDc4XFwwMDFcXDAzOFxcMDAxXFwwMDJcXDAwMVxcXG5cXDA0MlxcMDAxXFwwMDRcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwMDRcXDAwMVxcMDQ3XFwwMDFcXDE3MFxcMDAxXFwwMTBcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNTFcXDAwMVxcMDEwXFwwMDFcXDA1M1xcMDAxXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwNjFcXDAwMVxcMDYxXFwwMDFcXDAxMFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDJcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDBcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc2XFwwMDFcXDA3MlxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3OFxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMTJcXDAwMVxcMDcyXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA4OFxcMDAxXFwwODlcXDAwMVxcXG5cXDAwNFxcMDAxXFwwOTRcXDAwMVxcMDE1XFwwMDFcXDA3MlxcMDAxXFwwNzJcXDAwMVxcMDk1XFwwMDFcXDAxMFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA5OFxcMDAxXFwwNzJcXDAwMVxcMDI3XFwwMDFcXDEwMVxcMDAxXFwwODBcXDAwMVxcMDAyXFwwMDFcXDEwNFxcMDAxXFwxMDVcXDAwMVxcXG5cXDEwNlxcMDAxXFwwMjZcXDAwMVxcMTEwXFwwMDFcXDEwOVxcMDAxXFwwMDRcXDAwMVxcMDcyXFwwMDFcXDA3OFxcMDAxXFwxMTNcXDAwMVxcXG5cXDA3MlxcMDAxXFwwMzdcXDAwMVxcMDEwXFwwMDFcXDE1OFxcMDAxXFwwNzJcXDAwMVxcMDgwXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcXG5cXDEzMFxcMDAxXFwwODBcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFwxMzRcXDAwMVxcMTM1XFwwMDFcXDEzNlxcMDAxXFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA3M1xcMDAxXFwwMDZcXDAwMVxcMDc4XFwwMDFcXDE0NFxcMDAxXFwwMDRcXDAwMVxcXG5cXDE0NlxcMDAxXFwwNzZcXDAwMVxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwMTRcXDAwMVxcMDEwXFwwMDFcXDE1NFxcMDAxXFwxNTNcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMTU2XFwwMDFcXDA3OFxcMDAxXFwwNzJcXDAwMVxcMTU5XFwwMDFcXDAwNlxcMDAxXFwxNjFcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMDBcXDAwMFxcMTY0XFwwMDFcXDE2NVxcMDAxXFwxNjlcXDAwMVxcMTY3XFwwMDFcXDAxNFxcMDAxXFwxNzFcXDAwMVxcXG5cXDE3MVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwODBcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3MlxcMDAxXFwwNzhcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMDEyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMTkxXFwwMDFcXDE4OVxcMDAxXFwxOTNcXDAwMVxcXG5cXDI1MVxcMDAxXFwwMDBcXDAwMVxcMTk2XFwwMDFcXDAwMFxcMDAxXFwwMzRcXDAwMVxcMTk5XFwwMDFcXDA3MlxcMDAxXFwxOThcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDIwNVxcMDAxXFwwNzVcXDAwMVxcMjA3XFwwMDFcXDIwOFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMjEyXFwwMDFcXDA3MlxcMDAxXFwyMTRcXDAwMVxcMjE1XFwwMDFcXDAxM1xcMDAyXFwxMDlcXDAwMFxcXG5cXDIxOFxcMDAxXFwxMTFcXDAwMFxcMjIwXFwwMDFcXDAzOFxcMDAxXFwwNDNcXDAwMVxcMjIzXFwwMDFcXDIyNFxcMDAxXFwyMjVcXDAwMVxcXG5cXDIyNlxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwyMzBcXDAwMVxcMDAyXFwwMDFcXDIzMlxcMDAxXFwyMzNcXDAwMVxcXG5cXDIzNFxcMDAxXFwwMTJcXDAwMVxcMTI4XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwyNDFcXDAwMVxcXG5cXDI0MlxcMDAxXFwwMDRcXDAwMVxcMDQzXFwwMDFcXDA0NlxcMDAyXFwwNTFcXDAwMVxcMDc2XFwwMDFcXDA1MVxcMDAxXFwwNzhcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMjUyXFwwMDFcXDAwNFxcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMFxcMDAyXFwwMDdcXDAwMVxcXG5cXDAwNlxcMDAxXFwwMTBcXDAwMVxcMDUxXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMVxcMDA3XFwwMDJcXDAwMlxcMDAxXFwwMDBcXDAwMVxcXG5cXDAxNFxcMDAxXFwwMDJcXDAwMVxcMDY1XFwwMDJcXDAzOFxcMDAxXFwwMTRcXDAwMlxcMDcyXFwwMDJcXDAxNlxcMDAyXFwwMTdcXDAwMlxcXG5cXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAyNFxcMDAyXFwwMjVcXDAwMlxcXG5cXDAyNlxcMDAyXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFwwMjFcXDAwMVxcXG5cXDA4MVxcMDAxXFwwODJcXDAwMVxcMDM2XFwwMDJcXDAzN1xcMDAyXFwwMzhcXDAwMlxcMDM5XFwwMDJcXDAyOVxcMDAxXFwwNDFcXDAwMlxcXG5cXDA0MlxcMDAyXFwwNzZcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwMDZcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNzZcXDAwMVxcXG5cXDA1MFxcMDAyXFwwNTFcXDAwMlxcMDAwXFwwMDFcXDA3OFxcMDAxXFwwMTRcXDAwMVxcMDAzXFwwMDFcXDA3MVxcMDAxXFwwMDNcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNTlcXDAwMlxcMDYwXFwwMDJcXDA3OFxcMDAxXFwyMTBcXDAwMFxcMDEwXFwwMDFcXDAwMFxcMDAwXFwwNzJcXDAwMVxcXG5cXDAwMlxcMDAxXFwwNjdcXDAwMlxcMDY4XFwwMDJcXDA2OVxcMDAyXFwwNzBcXDAwMlxcMDcxXFwwMDJcXDA3OFxcMDAxXFwwODBcXDAwMVxcXG5cXDA3NFxcMDAyXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDRcXDAwMVxcXG5cXDA3NlxcMDAxXFwwODNcXDAwMlxcMDc4XFwwMDFcXDA3NlxcMDAxXFwwMDRcXDAwMVxcMDc4XFwwMDFcXDAwMlxcMDAxXFwwMDlcXDAwMVxcXG5cXDA5MFxcMDAyXFwwOTFcXDAwMlxcMDQwXFwwMDFcXDAwMFxcMDAxXFwwOTRcXDAwMlxcMDk1XFwwMDJcXDAwM1xcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwOTlcXDAwMlxcMDQ4XFwwMDJcXDAwNFxcMDAxXFwwNTBcXDAwMVxcMTAzXFwwMDJcXDA0MFxcMDAxXFwxMDVcXDAwMlxcXG5cXDA3OFxcMDAxXFwwNTVcXDAwMlxcMDU2XFwwMDJcXDA0MFxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA4MFxcMDAxXFwwNzJcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDc4XFwwMDFcXDAwNFxcMDAxXFwwMDRcXDAwMVxcMDAxXFwwMDFcXDAyOFxcMDAxXFwwMDdcXDAwMVxcXG5cXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDA2XFwwMDFcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDE0XFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwNzhcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAwNVxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwN1xcMDAxXFwwNTVcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDM4XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcXG5cXDAxNVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAyMVxcMDAxXFwwMzhcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMTBcXDAwMVxcMDgwXFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDgzXFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcXG5cXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAwNVxcMDAxXFwwNzJcXDAwMVxcXG5cXDAwN1xcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMTBcXDAwMVxcMDAwXFwwMDFcXDA3OFxcMDAxXFwwNzJcXDAwMVxcXG5cXDAwM1xcMDAxXFwxMDNcXDAwMVxcMDc4XFwwMDFcXDA1MFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDRcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwM1xcMDAxXFwwNTBcXDAwMVxcXG5cXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDAyXFwwMDFcXDAwNFxcMDAxXFwwNzVcXDAwMVxcMDAwXFwwMDFcXDAzNFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDQwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAzMlxcMDAxXFwwNTBcXDAwMVxcXG5cXDE1MFxcMDAxXFwxNTFcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAzXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwNzhcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAzOFxcMDAxXFwwMDBcXDAwMVxcMDUwXFwwMDFcXDAwMlxcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcXG5cXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcXG5cXDA3MFxcMDAxXFwwMDRcXDAwMVxcMDcyXFwwMDFcXDAzMFxcMDAxXFwwNzhcXDAwMVxcMDc1XFwwMDFcXDAwMFxcMDAwXFwwMDNcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwNTBcXDAwMVxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA3OFxcMDAxXFwyMTBcXDAwMVxcMjExXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDA1MFxcMDAxXFwwNTBcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcXG5cXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcXG5cXDA3NFxcMDAxXFwwNzVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDI1NFxcMDAwXFwyNTVcXDAwMFxcXG5cXDAwNlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDRcXDAwMVxcXG5cXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDAzXFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAwM1xcMDAxXFwwMDZcXDAwMVxcMDAxXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwMTBcXDAwMVxcMDE0XFwwMDFcXDAxNFxcMDAxXFwwMDVcXDAwMVxcMDA0XFwwMDFcXDAzMlxcMDAxXFwwNzZcXDAwMVxcXG5cXDA1MFxcMDAxXFwwMDZcXDAwMVxcMDAyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwMjhcXDAwMVxcMDA3XFwwMDFcXDAwNlxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwMDhcXDAwMVxcXG5cXDAzMlxcMDAxXFwwNzVcXDAwMVxcMDMyXFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMzlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDMyXFwwMDFcXDAwN1xcMDAxXFwwMDZcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzZcXDAwMVxcMDc4XFwwMDFcXDAwNlxcMDAxXFwwNzhcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDgwXFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA3OFxcMDAxXFwwNDNcXDAwMVxcMDA0XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA3NlxcMDAxXFwwNzZcXDAwMVxcMDM0XFwwMDFcXDA3OFxcMDAxXFwwNzJcXDAwMVxcXG5cXDA1MFxcMDAxXFwwMDNcXDAwMVxcMDAyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDA0XFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDAzMlxcMDAxXFwwMDZcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwMDZcXDAwMVxcXG5cXDAwOFxcMDAxXFwwNzVcXDAwMVxcMDA4XFwwMDFcXDA3NlxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDE1OFxcMDAwXFwwMDJcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDIyXFwwMDFcXDAwNlxcMDAxXFwwNDFcXDAwMFxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMTM1XFwwMDBcXDIxMVxcMDAwXFwxMThcXDAwMFxcMDQwXFwwMDFcXDEzOVxcMDAwXFwxNTBcXDAwMVxcXG5cXDAyNlxcMDAxXFwwMjdcXDAwMVxcMTUxXFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDExNlxcMDAwXFwwOTRcXDAwMVxcMDQ0XFwwMDBcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwxNDFcXDAwMVxcMTU5XFwwMDBcXDI1NVxcMjU1XFwxNjZcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDA1MFxcMDAxXFwxNDJcXDAwMVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODVcXDAwMFxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDIwNVxcMDAwXFwyMDZcXDAwMFxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDIxM1xcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDBcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwODFcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcXG5cXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcXG5cXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMTBcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMDBcXDAwMFxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDA3NlxcMDAxXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwwMDBcXDAwMFxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcXG5cXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwwMzBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3MVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwwMjdcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcXG5cXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNzRcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcXG5cXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMDEwXFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDcxXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAxMFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDAxMFxcMDAxXFwwMDJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcXG5cXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3OFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDJcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcXG5cXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcXG5cXDAxNVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwMDJcXDAwMVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDc4XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwwMjhcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcXG5cXDAwM1xcMDAxXFwwNzNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgRU9GXFwwMDBcXFxuICBDT01NQVxcMDAwXFxcbiAgRE9UXFwwMDBcXFxuICBPUF9QQVJcXDAwMFxcXG4gIENMX1BBUlxcMDAwXFxcbiAgT1BfQ1VSXFwwMDBcXFxuICBDTF9DVVJcXDAwMFxcXG4gIE9QX0JSQVxcMDAwXFxcbiAgQ0xfQlJBXFwwMDBcXFxuICBBVFxcMDAwXFxcbiAgU0VNSUNPTE9OXFwwMDBcXFxuICBQTFVTXFwwMDBcXFxuICBNSU5VU1xcMDAwXFxcbiAgTVVMVFxcMDAwXFxcbiAgRElWXFwwMDBcXFxuICBNT0RcXDAwMFxcXG4gIE1BWFxcMDAwXFxcbiAgTUlOXFwwMDBcXFxuICBTSU5VU1xcMDAwXFxcbiAgQ09TSU5VU1xcMDAwXFxcbiAgVEFOXFwwMDBcXFxuICBQT1dcXDAwMFxcXG4gIEFCU1xcMDAwXFxcbiAgU1FSVFxcMDAwXFxcbiAgRVhQT05FTlRcXDAwMFxcXG4gIExPR1xcMDAwXFxcbiAgT1JcXDAwMFxcXG4gIEFORFxcMDAwXFxcbiAgTk9UXFwwMDBcXFxuICBUSEVOXFwwMDBcXFxuICBFTFNFXFwwMDBcXFxuICBESUZGXFwwMDBcXFxuICBFUVVBTFxcMDAwXFxcbiAgU01BTExFUlxcMDAwXFxcbiAgR1JFQVRFUlxcMDAwXFxcbiAgVFJVRVxcMDAwXFxcbiAgRkFMU0VcXDAwMFxcXG4gIElORklOSVRZXFwwMDBcXFxuICBTSEFSUFxcMDAwXFxcbiAgVU5ERVJTQ09SRVxcMDAwXFxcbiAgUElQRVxcMDAwXFxcbiAgUkFSXFwwMDBcXFxuICBMUkFSXFwwMDBcXFxuICBMQVJcXDAwMFxcXG4gIEVNQVhcXDAwMFxcXG4gIFRNQVhcXDAwMFxcXG4gIENQVVRJTUVcXDAwMFxcXG4gIFRJTUVcXDAwMFxcXG4gIEVWRU5UXFwwMDBcXFxuICBOVUxMX0VWRU5UXFwwMDBcXFxuICBDT0xPTlxcMDAwXFxcbiAgTkVXTElORVxcMDAwXFxcbiAgQkFDS1NMQVNIXFwwMDBcXFxuICBTSUdOQVRVUkVcXDAwMFxcXG4gIFRPS0VOXFwwMDBcXFxuICBJTklUXFwwMDBcXFxuICBPQlNcXDAwMFxcXG4gIFBMT1RcXDAwMFxcXG4gIFBFUlRcXDAwMFxcXG4gIENPTkZJR1xcMDAwXFxcbiAgQVBQTFlcXDAwMFxcXG4gIERFTEVURVxcMDAwXFxcbiAgSU5UUk9cXDAwMFxcXG4gIFNOQVBTSE9UXFwwMDBcXFxuICBTVE9QXFwwMDBcXFxuICBGTFVYXFwwMDBcXFxuICBUUkFDS1xcMDAwXFxcbiAgQVNTSUdOXFwwMDBcXFxuICBQUklOVEZcXDAwMFxcXG4gIFBMT1RFTlRSWVxcMDAwXFxcbiAgU1BFQ0lFU19PRlxcMDAwXFxcbiAgRE9cXDAwMFxcXG4gIFJFUEVBVFxcMDAwXFxcbiAgQUxBUk1cXDAwMFxcXG4gIFJVTlxcMDAwXFxcbiAgTEVUXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgSU5UXFwwMDBcXFxuICBGTE9BVFxcMDAwXFxcbiAgSURcXDAwMFxcXG4gIExBQkVMXFwwMDBcXFxuICBTVFJJTkdcXDAwMFxcXG4gIFNQQUNFXFwwMDBcXFxuICBDT01NRU5UXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggW10gKVxuIyAxNjQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIFwiXFxuXCI6Ol8yIClcbiMgMTY1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBfMTo6XzIgKVxuIyAxNjYzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXzE6Ol8yIClcbiMgMTY3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggTmJyLkYgaW5maW5pdHkgKVxuIyAxNjc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogZmxvYXQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBOYnIuRiBfMSApXG4jIDE2ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggTmJyLkkgXzEgKVxuIyAxNjkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgTEthcHBhLkxOS19GUkVFIClcbiMgMTY5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggYWRkX3BvcyAxIChMS2FwcGEuTE5LX1ZBTFVFIChfMSwoKSkpIClcbiMgMTcwNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgKCBhZGRfcG9zIDEgTEthcHBhLkxOS19TT01FIClcbiMgMTcxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyA1IChMS2FwcGEuTE5LX1RZUEUgKChfMSxyaHNfcG9zIDEpLChfNSxyaHNfcG9zIDUpKSkgKVxuIyAxNzIwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDcwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgTEthcHBhLkxOS19BTlkgKVxuIyAxNzI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBzdGF0ZVwiKSkgKVxuIyAxNzM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBbXzFdIClcbiMgMTc0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzMgKVxuIyAxNzUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNSApXG4jIDE3NjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBOb25lIClcbiMgMTc2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIE5vbmUgKVxuIyAxNzc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBpbnQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSAoU29tZSAoXzMsIHJoc19wb3MgMykpIClcbiMgMTc4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIClcbiMgMTc5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgKCBhZGRfcG9zIDEgKFNvbWUgXzEpIClcbiMgMTc5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgOTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBOb25lIClcbiMgMTgwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDE4MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJuYWxfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzMgKVxuIyAxODIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF81IClcbiMgMTgzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggTm9uZSApXG4jIDE4MzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSAoXzMsIHJoc19wb3MgMykgKVxuIyAxODQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSApXG4jIDE4NTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbGlua19zdGF0ZXMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8yLCBfMykgKVxuIyAxODY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfbGluaykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGxpbmtpbmcgc3RhdGUgb3IgbWlzc2luZyAnXSdcIixyaHNfcG9zIDIpKSApXG4jIDE4NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9saW5rKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJuYWxfc3RhdGVzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsIF8yKSApXG4jIDE4ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9pbnRlcm5hbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgaW50ZXJuYWwgc3RhdGUgb3IgbWlzc2luZyAnfSdcIixyaHNfcG9zIDMpKSApXG4jIDE4ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9pbnRlcm5hbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfNSwgcmhzX3BvcyA1KSApXG4jIDE4OTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgtIF83LCByaHNfcG9zIDcpIClcbiMgMTkwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgtIF81LCByaHNfcG9zIDUpIClcbiMgMTkxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgIChfMSlcbiMgMTkyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd6aW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICgtXzMpXG4jIDE5MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnemludCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd6aW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNFUSBfMyxyaHNfcG9zIDMpIClcbiMgMTkzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ppbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNHVEUgXzUscmhzX3BvcyA1KSApXG4jIDE5NDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd6aW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNMVEUgXzUscmhzX3BvcyA1KSApXG4jIDE5NTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DVkFSIF8zLHJoc19wb3MgMykgKVxuIyAxOTY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfbW9kaWYpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKE5vbmUsIF8xKSApXG4jIDE5NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKFNvbWUgXzEsIExvYy5hbm5vdF93aXRoX2R1bW15IDApIClcbiMgMTk4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfbW9kaWYpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTQ0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCAoU29tZSBfMSxfNSkgKVxuIyAxOTk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICd6aW50KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzEwID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggU29tZSAoU29tZSAoXzMpLHJoc19wb3MgMyksbWF0Y2ggXzcgd2l0aCAoYSxsb2MpIC0+IFNvbWUgKFNvbWUgKGEpLGxvYykgKVxuIyAyMDA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnemludCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBTb21lIChTb21lIChfMykscmhzX3BvcyAzKSxOb25lIClcbiMgMjAxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXJfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMDM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMDUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjA2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50OyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjA3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzaXRlX2NvdW50ZXJfc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IChjb3VudGVyX3NpZ19taW4sY291bnRlcl9zaWdfbWF4KSA9IF81IGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgeyBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWU9KF8xLHJoc19wb3MgMSk7XG4gICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbjtcbiAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4O1xuICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0PVxuICAgICAgICAgICAgICAgIChtYXRjaCBjb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXyktPiAwXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSxfKSAtPiBpICk7XG4gICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGU9Q291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgICAgICAgIH0gKVxuIyAyMDk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjEwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyMDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjE0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIxNTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIxNjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzaXRlX2NvdW50ZXIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIxOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChjb3VudGVyX3Rlc3QsY291bnRlcl9kZWx0YSkgPSBfNSBpblxuICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QuY291bnRlcl90ZXN0OyBBc3QuY291bnRlcl9kZWx0YSB9IClcbiMgMjE4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyMjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjE5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIFtdIClcbiMgMjE5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSApXG4jIDIyMDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMiApXG4jIDIyMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc2l0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2UpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNCApXG4jIDIyMjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggW10gKVxuIyAyMjI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgKVxuIyAyMjM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX3NpZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8yIClcbiMgMjI0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2Vfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc2l0ZV9zaWcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNCApXG4jIDIyNTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBBc3QuTm9Nb2Qsc3RhcnRfcG9zIDEsXzEgKVxuIyAyMjU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LkNyZWF0ZSxlbmRfcG9zIDIsXzMgKVxuIyAyMjY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5FcmFzZSxlbmRfcG9zIDIsXzMgKVxuIyAyMjc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCAoQXN0LkFic2VudCAocmhzX3BvcyAxKSxlbmRfcG9zIDEsXzIpIClcbiMgMjI4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2UpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMjU1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF83IGluXG4gICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfNSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjI5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxMCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA5IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZSkgaW5cbiAgICBsZXQgXzExID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMjU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF8xMSBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoXzUscmhzX3BvcyA1KSwgXzksIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIzMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzFeXCInXCIpKSkgKVxuIyAyMzE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSxfMikgKVxuIyAyMzI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2Vfc2lnKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF83IGluXG4gICAgICAgIChBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF81LCBtb2RpZikscGVuZCxhbikgKVxuIyAyMzM2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxMCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA5IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgbGV0IF8xMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF8xMSBpblxuICAgICAgICAoQXN0LlByZXNlbnQgKChfNSxyaHNfcG9zIDUpLCBfOSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjM1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMjM2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhZ2VudCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiggbGV0ICh4LF8sXykgPSBfMSBpblxuICBtYXRjaCBfNCB3aXRoXG4gIHwgKHk6OnoscGVuZCxwKSAtPiAoKHg6OnkpOjp6LHBlbmQscClcbiAgfCAoW10sXyxfKSAtPlxuICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAoYWRkX3BvcyA0IChcImFzc2VydGlvbiBmYWlsdXJlIGluIHBhdHRlcm4gcGFyc2luZ1wiKSkpIClcbiMgMjM3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWdlbnQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4oIGxldCAoeCxfLF8pID0gXzEgaW4gbGV0ICh5LHBlbmQscCkgPSBfNCBpbiAoW3hdOjp5LHBlbmQscCkgKVxuIyAyMzgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBsZXQgKHgscGVuZCxwKSA9IF8xIGluIChbW3hdXSxwZW5kLHApIClcbiMgMjM5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmJyKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkNPTlNUIF8xKSApXG4jIDIzOTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKSApXG4jIDI0MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSApXG4jIDI0MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpIClcbiMgMjQxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLlRPS0VOX0lEIChfMykpIClcbiMgMjQyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzMgaW4gYWRkX3BvcyA0IChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBwKSApXG4jIDI0MzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKF8xKSkgKVxuIyAyNDM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSIChfMSkpIClcbiMgMjQ0NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpIClcbiMgMjQ1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSkgKVxuIyAyNDU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpIClcbiMgMjQ2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMyBpbiB4IClcbiMgMjQ3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbnN0YW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIF8xIClcbiMgMjQ3OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIF8xIClcbiMgMjQ4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLF8zLF81KSkgKVxuIyAyNDk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sXzMsXzUpKSApXG4jIDI1MDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLF8zKSkgKVxuIyAyNTE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLF8zKSkgKVxuIyAyNTIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsXzMpKSApXG4jIDI1MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLF8zKSkgKVxuIyAyNTM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCxfMykpIClcbiMgMjU0NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULF8zKSkgKVxuIyAyNTU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRyxfMykpIClcbiMgMjU2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsXzMpKSApXG4jIDI1NzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsZW5kX3BvcyAxLF8yKSApXG4jIDI1NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHgseSx6KSA9IF81IGluXG4gICAgICAoYWRkX3BvcyA0IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVyxfMSx4KSkseSx6KSApXG4jIDI1ODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI1OTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1PRFVMTyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyNjE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3N1bSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCx4LHkpLFxuICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2MjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjY0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19zdW0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjY0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX2lmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjY3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIE9iai5yZXByKFxuIyAzODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjY4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChpLF8sXykgPSBfMSBpblxuICAgICAgbGV0ICh0LF8sXykgPSBfNCBpblxuICAoKEFsZ19leHByLklGKGksdCxfNyksXG4gICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIChlbmRfcG9zIDcpKSxlbmRfcG9zIDcsXzgpIClcbiMgMjY5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIHRydWUgKVxuIyAyNzAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggZmFsc2UgKVxuIyAyNzA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMyBpbiB4IClcbiMgMjcxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgQWxnX2V4cHIuVFJVRSApXG4jIDI3MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBBbGdfZXhwci5GQUxTRSApXG4jIDI3MjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULF8zKSkgKVxuIyAyNzM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLGVuZF9wb3MgMSwgXzIpIClcbiMgMjc0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNzU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3NzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDIwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjc5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcl9jb21wKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjgwNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfbm9fb3IpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHJfY29tcCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHJfbm9fb3IpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI4MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX25vX29yKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI4MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyODM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzIgaW4geCApXG4jIDI4NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDU2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJQcm9ibGVtYXRpYyBib29sZWFuIGV4cHJlc3Npb25cIikpIClcbiMgMjg1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoZmFsc2UpXG4jIDI4NTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKHRydWUpXG4jIDI4NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFsoXzEsKF8zLHJoc19wb3MgMykpXSxlbmRfcG9zIDMsXzQgKVxuIyAyODc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsLHBlbmQsYW4pID0gXzcgaW4gKF8xLChfMyxyaHNfcG9zIDMpKSA6OiBsLHBlbmQsYW4gKVxuIyAyODg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBsZXQgKHAscGVuZCxhbikgPSBfMSBpbiAocCxbXSxwZW5kLGFuKSApXG4jIDI4OTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMSBpblxuICAgICAgbGV0ICh0LHBlbmQsYW4pID0gXzQgaW4gKHAsIHQsIHBlbmQsIGFuKSApXG4jIDI5MDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodCxwZW5kLGFuKSA9IF8zIGluIChbXSwgdCwgcGVuZCwgYW4pIClcbiMgMjkxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgNCBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIClcbiMgMjkyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0ODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgKVxuIyAyOTMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDg5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGxocyxybV90b2tlbixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9IF80IGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LF8yLHBlbmQsYW4pIClcbiMgMjk0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdydWxlX3NpZGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9IF8xIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW49W119LF8yLGVuZF9wb3MgMixfMykgKVxuIyAyOTUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSBfMyBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuPVtdOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSxfMSxwZW5kLGFuKSApXG4jIDI5NjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9zaWRlKSBpblxuICAgIE9iai5yZXByKFxuIyA0OTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobWl4LGRlbHRhX3Rva2VuLHBlbmQsYW4pID0gXzEgaW5cbiAgICAgIChBc3QuRWRpdCB7QXN0Lm1peDsgQXN0LmRlbHRhX3Rva2VufSxmYWxzZSxwZW5kLGFuKSApXG4jIDI5NzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiAoeCxOb25lKSApXG4jIDI5NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiBsZXQgKHksXyxfKSA9IF80IGluICh4LCBTb21lIHkpIClcbiMgMjk4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYixwZW5kLGFuKSA9IF82IGluIChiLFNvbWUgXzMscGVuZCxhbikgKVxuIyAyOTk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gKHgsU29tZSBfNCxlbmRfcG9zIDUsXzYpIClcbiMgMzAwNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0IChhLHBlbmQsYW4pID0gXzEgaW4gKGEsTm9uZSxwZW5kLGFuKSApXG4jIDMwMTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGsyLGsxLHBlbmQsYW4pID0gXzMgaW4gKGsyLGsxLE5vbmUsTm9uZSxwZW5kLGFuKSApXG4jIDMwMjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3JhdGUpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTIwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGsyLGsxLF8sXykgPSBfMyBpblxuICAgICAgbGV0IChrYmFjayxrYmFjazEscGVuZCxhbikgPSBfNiBpblxuICAgICAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxLHBlbmQsYW4pIClcbiMgMzAzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdiaXJhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bixwb3NfZW5kLF9hbm5vdCkgPSBfMiBpblxuICAgICAgbGV0IChyZXdyaXRlLGJpZGlyZWN0aW9uYWwsXyxfKSA9IF8xIGluXG4gICAgICAoe1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcG9zX2VuZCkgKVxuIyAzMDQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDIgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpIClcbiMgMzA1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYscGVuZCxhbikgPSBfMyBpbiAoKF8xLHJoc19wb3MgMSksdixwZW5kLGFuKSApXG4jIDMwNjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodixwZW5kLGFuKSA9IF8zIGluICgoXzEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIClcbiMgMzA3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl5fMV5cIidcIikpKSApXG4jIDMwODEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSkgKVxuIyAzMDkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIChcImxhYmVsIGV4cGVjdGVkXCIpKSkgKVxuIyAzMDk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICggWyBfMSxyaHNfcG9zIDEgXSApXG4jIDMxMDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1NTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxyaHNfcG9zIDEpIDo6IF81IClcbiMgMzExNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA1NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gXzIgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMikgcGVuZCkpIClcbiMgMzEyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSBfNCBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSkgKVxuIyAzMTM2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpbiAodixBc3QuSU5JVF9UT0sgXzIpIClcbiMgMzE0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfNCBpbiAodixBc3QuSU5JVF9UT0sgW18xLHJoc19wb3MgMV0pKVxuIyAzMTUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSApXG4jIDMxNjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKFtfMSwgcmhzX3BvcyAxXSlcbiMgMzE2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTc5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8xLHJoc19wb3MgMSk6Ol8zKVxuIyAzMTc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKFtQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAxIF8xKV0sZW5kX3BvcyAxLF8yKSApXG4jIDMxODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzEgaW4gKFtQcmltaXRpdmVzLkFsZ19wZXhwciBhXSxwZW5kLHApIClcbiMgMzE5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcl9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMxOTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByX2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLGFuKSA9IF8zIGluICh2LGVuZF9wb3MgNCxhbiBAIF81KSApXG4jIDMyMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLHApID0gXzUgaW4gKFByaW1pdGl2ZXMuU3RyX3BleHByIChfMSwgcmhzX3BvcyAxKTo6bCxwZW5kLHApIClcbiMgMzIxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLHApID0gXzQgaW5cbiAgICAgIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciB2OjpsLHBlbmQscCkgKVxuIyAzMjI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHJfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCAoW10sc3RhcnRfcG9zIDEsXzEpIClcbiMgMzIzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMzI0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzUgaW4gKEFzdC5VUERBVEUgKChfMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgKVxuIyAzMjU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF81IGluIChBc3QuVVBEQVRFICgoXzMscmhzX3BvcyAzKSxhKSxwZW5kLHApIClcbiMgMzI2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKEFzdC5DRkxPV0xBQkVMIChfNSwoXzMscmhzX3BvcyAzKSksZW5kX3BvcyA1LF82KSApXG4jIDMyNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBhdCxlcGF0LF8pID0gXzMgaW5cbiAgICAgIChBc3QuQ0ZMT1dNSVggKF80LChwYXQsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIGVwYXQpKSxlbmRfcG9zIDQsIF81KSApXG4jIDMyODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluXG4gICAgICAoKGlmIF80IHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSBlbHNlIEFzdC5ESU5PRkYgcCksXG4gICAgICAgZW5kX3BvcyA0LF81KSApXG4jIDMyOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluXG4gICAgICBpZiBfNiAmJiBfNCA9IFwiYWJzb2x1dGVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLHApLGVuZF9wb3MgNixfNylcbiAgICAgIGVsc2UgaWYgXzYgJiYgXzQgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSxwKSxlbmRfcG9zIDYsXzcpXG4gICAgICBlbHNlIGlmIF82ICYmIF80ID0gXCJyZWxhdGl2ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCksZW5kX3BvcyA2LF83KVxuICAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyA0KSkgKVxuIyAzMzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHJld3JpdGUsXyxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICBBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAoeyBBc3QucmV3cml0ZTsgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmQpKSxcbiAgICAgIHBlbmQsYW5cbiAgICApXG4jIDMzMzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNjQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG0scGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgIEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19jcmVhdGVkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMzNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgXFxcbickQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSApXG4jIDMzNjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNjU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG0scGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2VyYXNlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMzODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIClcbiMgMzM5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChzLHBlbmQscCkgPSBfMiBpbiAoQXN0LlNOQVBTSE9UIChmYWxzZSxzKSxwZW5kLHApIClcbiMgMzM5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChzLF8sXykgPSBfMiBpbiAoQXN0LlNOQVBTSE9UIChfMyxzKSxlbmRfcG9zIDMsXzQpIClcbiMgMzQwNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHMscGVuZCxwKSA9IF8yIGluIChBc3QuU1RPUCBzLHBlbmQscCkgKVxuIyAzNDE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZixwZW5kLHApID0gXzQgaW4gbGV0IChjLF8sXykgPSBfMiBpbiAoQXN0LlBSSU5UIChmLGMpLHBlbmQscCkgKVxuIyAzNDIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggbGV0IChjLHBlbmQscCkgPSBfMiBpbiAoQXN0LlBSSU5UIChbXSxjKSxwZW5kLHApIClcbiMgMzQyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuUExPVEVOVFJZLGVuZF9wb3MgMSxfMikgKVxuIyAzNDM2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoXG4gICAgICBsZXQgKGZpbGUscGVuZCxwKSA9IF83IGluXG4gICAgICBsZXQgKHBhdCxwZW5kcCxfKSA9IF8zIGluXG4gICAgICAoQXN0LlNQRUNJRVNfT0YgKF80LGZpbGUsKHBhdCwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmRwKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDM0NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICBsZXQgKHYscGVuZCxwKSA9IF81IGluXG4gICBsZXQgdGsgPSAoXzEscmhzX3BvcyAxKSBpblxuICAgIChBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgKHtBc3QucmV3cml0ZSA9XG4gICAgICAgICAgICAgIEFzdC5FZGl0XG4gICAgICAgICAgICAgICAgICB7QXN0Lm1peD1bXTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW4gPVxuICAgICAgICAgICAgICAgICAgICAgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx2LChBbGdfZXhwci5UT0tFTl9JRCBfMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAgNCkgcGVuZCkpLHBlbmQscClcbiAgIClcbiMgMzQ3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSApXG4jIDM0ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA3MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbiAgIGV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSApXG4jIDM0OTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgIChfMSlcbiMgMzUwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3Rfb3JfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKF8xKVxuIyAzNTA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9vcl9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzMgKVxuIyAzNTE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzNTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBsZXQgKGUscCxhKSA9IF8xIGluIChbZV0scCxhKSApXG4jIDM1MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2VmZmVjdF9vcl9pZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNTQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDM1NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0IChlLHAsYSkgPSBfMSBpbiAoW2VdLHAsYSkgKVxuIyAzNTU1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdpZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNTY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMyApXG4jIDM1NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKGUsXyxfKSA9ICBfMyBpbiBlLGVuZF9wb3MgNixfNyApXG4jIDM1ODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDM1OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzNjAwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8yIGluIGUgKVxuIyAzNjA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlByb2JsZW1hdGljIGVmZmVjdCBsaXN0XCIpKSApXG4jIDM2MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIE5vbmUgKVxuIyAzNjIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbmJyKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfNCApXG4jIDM2MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImFsYXJtIHRha2VzIGEgbnVtYmVyIGFzIGFyZ3VtZW50XCIpKSApXG4jIDM2MzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChiLHBlbmQscCkgPSBfMyBpbiAoU29tZSBiLHBlbmQscCkgKVxuIyAzNjQ2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCAoTm9uZSwgUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpLFtdKSApXG4jIDM2NTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDM2NTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzYwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHByZSxfLF8pID0gXzIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gXzUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gXzYgaW5cbiAgICAgIChfMSxTb21lIHByZSxlLHBvc3QpIClcbiMgMzY3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGUsXyxfKSA9IF80IGluIGxldCAocG9zdCxfLF8pID0gXzUgaW4gKF8xLE5vbmUsZSxwb3N0KSApXG4jIDM2ODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwcmUsXyxfKSA9IF8yIGluXG4gICAgICBsZXQgKGUsXyxfKSA9IF81IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9IF82IGluXG4gICAgICAoXzEsU29tZSBwcmUsZSxwb3N0KSApXG4jIDM2OTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGxldCAoZSxfLF8pID0gXzQgaW5cbiAgICAgICAgICBsZXQgKHBvc3QsXyxfKSA9IF81IGluXG4gICAgICAgICAgKF8xLE5vbmUsZSxwb3N0KSApXG4jIDM3MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNzgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGQgKEFzdC5SVUxFKFNvbWUgKF8xLCByaHNfcG9zIDEpLF8zKSkgKVxuIyAzNzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzUgaW4gYWRkIChBc3QuREVDTEFSRSAoKF8xLHJoc19wb3MgMSksdikpIClcbiMgMzcyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGQgKEFzdC5SVUxFIChOb25lLF8xKSkgKVxuIyAzNzM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNzg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChhLF8sXykgPSBfMyBpbiBhZGQgKEFzdC5TSUcgYSkgKVxuIyAzNzQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmVcIikpIClcbiMgMzc1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZCAoQXN0LlRPS0VOU0lHIChfMyxyaHNfcG9zIDMpKSApXG4jIDM3NjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodixfLF8pID0gXzMgaW4gYWRkIChBc3QuUExPVCB2KSApXG4jIDM3NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgM1xuICAgICAgICAgICAgICAgICAgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgXFxcbmFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSApXG4jIDM3NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChpLHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0LkRFQ0xBUkUgKGksdikpIClcbiMgMzc4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGksdixfLF8pID0gXzMgaW4gYWRkIChBc3QuT0JTIChpLHYpKSApXG4jIDM3OTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW5pdF9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGFsZyxpbml0KSA9IF8zIGluIGFkZCAoQXN0LklOSVQgKGFsZyxpbml0KSkgKVxuIyAzODAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA4MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZCAoQXN0LlBFUlQgKF8yLCByaHNfcG9zIDIpKSApXG4jIDM4MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgODAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGQgKEFzdC5DT05GSUcgKChfMyxyaHNfcG9zIDMpLF81KSkgKVxuIyAzODE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2VudGVuY2UpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtb2RlbF9ib2R5KSBpblxuICAgIE9iai5yZXByKFxuIyA4MDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAzODI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZGVsX2JvZHkpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgwNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIG91dHB1dCAoKSApXG4jIDM4MzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kZWxfYm9keSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtb2RlbF9ib2R5KSBpblxuICAgIE9iai5yZXByKFxuIyA4MTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDM4NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIkluY29ycmVjdCBiZWdpbm5pbmcgb2Ygc2VudGVuY2UgISEhXCIpKSApXG4jIDM4NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIClcbiMgMzg1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocGF1c2UsXyxfKSA9IF80IGluIEFzdC5SVU4gcGF1c2UgKVxuIyAzODY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0KSBpblxuICAgIE9iai5yZXByKFxuIyA4MjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGVmZixfLF8pID0gXzIgaW4gQXN0Lk1PRElGWSBbZWZmXSApXG4jIDM4NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICggQXN0LlFVSVQgKVxuIyAzODgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSkgKVxuIyAzODg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuKCogRW50cnkgbW9kZWwgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgaW50ZXJhY3RpdmVfY29tbWFuZCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2VmZmVjdF9saXN0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfYm9vbF9leHByICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IG1vZGVsIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0KVxubGV0IGludGVyYWN0aXZlX2NvbW1hbmQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKVxubGV0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpXG5sZXQgc3RhbmRhbG9uZV9ib29sX2V4cHIgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICovXG4vKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICovXG4vKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4le1xuICBsZXQgYWRkX3BvcyBlIHggPVxuICAgICh4LFxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgZSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuICBsZXQgZW5kX3BvcyA9IFBhcnNpbmcucmhzX2VuZF9wb3NcbiAgbGV0IHN0YXJ0X3BvcyA9IFBhcnNpbmcucmhzX3N0YXJ0X3Bvc1xuXG4gIGxldCBpbnRlcm5hbF9tZW1vcnkgPSByZWYgW11cbiAgbGV0IGFkZCB4ID0gaW50ZXJuYWxfbWVtb3J5IDo9IHggOjogIWludGVybmFsX21lbW9yeVxuICBsZXQgb3V0cHV0ICgpID1cbiAgICBsZXQgbyA9IExpc3QucmV2ICFpbnRlcm5hbF9tZW1vcnkgaW4gbGV0ICgpID0gaW50ZXJuYWxfbWVtb3J5IDo9IFtdIGluIG9cbiV9XG5cbiV0b2tlbiBFT0YgQ09NTUEgRE9UIE9QX1BBUiBDTF9QQVIgT1BfQ1VSIENMX0NVUiBPUF9CUkEgQ0xfQlJBIEFUIFNFTUlDT0xPTlxuJXRva2VuIFBMVVMgTUlOVVMgTVVMVCBESVYgTU9EIE1BWCBNSU4gU0lOVVMgQ09TSU5VUyBUQU4gUE9XIEFCUyBTUVJUIEVYUE9ORU5UXG4ldG9rZW4gTE9HIE9SIEFORCBOT1QgVEhFTiBFTFNFIERJRkYgRVFVQUwgU01BTExFUiBHUkVBVEVSIFRSVUUgRkFMU0UgSU5GSU5JVFlcbiV0b2tlbiBTSEFSUCBVTkRFUlNDT1JFIFBJUEUgUkFSIExSQVIgTEFSIEVNQVggVE1BWCBDUFVUSU1FIFRJTUUgRVZFTlQgTlVMTF9FVkVOVFxuJXRva2VuIENPTE9OIE5FV0xJTkUgQkFDS1NMQVNIIFNJR05BVFVSRSBUT0tFTiBJTklUIE9CUyBQTE9UIFBFUlQgQ09ORklHIEFQUExZXG4ldG9rZW4gREVMRVRFIElOVFJPIFNOQVBTSE9UIFNUT1AgRkxVWCBUUkFDSyBBU1NJR04gUFJJTlRGIFBMT1RFTlRSWSBTUEVDSUVTX09GXG4ldG9rZW4gRE8gUkVQRUFUIEFMQVJNIFJVTiBMRVRcbiV0b2tlbiA8aW50PiBJTlRcbiV0b2tlbiA8ZmxvYXQ+IEZMT0FUXG4ldG9rZW4gPHN0cmluZz4gSUQgTEFCRUwgU1RSSU5HXG4ldG9rZW4gPHN0cmluZz4gU1BBQ0UgQ09NTUVOVFxuXG4lc3RhcnQgbW9kZWxcbiV0eXBlIDxBc3QucGFyc2luZ19pbnN0cnVjdGlvbiBsaXN0PiBtb2RlbFxuXG4lc3RhcnQgaW50ZXJhY3RpdmVfY29tbWFuZFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kPiBpbnRlcmFjdGl2ZV9jb21tYW5kXG5cbiVzdGFydCBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG4ldHlwZVxuICA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdD4gc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9ib29sX2V4cHJcbiV0eXBlIDwoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkPiBzdGFuZGFsb25lX2Jvb2xfZXhwclxuXG4lJVxuXG5hbm5vdGVkOlxuICB8IHsgW10gfVxuICB8IE5FV0xJTkUgYW5ub3RlZCB7IFwiXFxuXCI6OiQyIH1cbiAgfCBTUEFDRSBhbm5vdGVkIHsgJDE6OiQyIH1cbiAgfCBDT01NRU5UIGFubm90ZWQgeyAkMTo6JDIgfVxuICA7XG5cbm5icjpcbiAgfCBJTkZJTklUWSB7IE5ici5GIGluZmluaXR5IH1cbiAgfCBGTE9BVCB7IE5ici5GICQxIH1cbiAgfCBJTlQgeyBOYnIuSSAkMSB9XG4gIDtcblxubGlua19zdGF0ZTpcbiAgfCBET1QgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19GUkVFIH1cbiAgfCBJTlQgeyBhZGRfcG9zIDEgKExLYXBwYS5MTktfVkFMVUUgKCQxLCgpKSkgfVxuICB8IFVOREVSU0NPUkUgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19TT01FIH1cbiAgfCBJRCBhbm5vdGVkIERPVCBhbm5vdGVkIElEXG4gICAgeyBhZGRfcG9zIDUgKExLYXBwYS5MTktfVFlQRSAoKCQxLHJoc19wb3MgMSksKCQ1LHJoc19wb3MgNSkpKSB9XG4gIHwgU0hBUlAgeyBhZGRfcG9zIDEgTEthcHBhLkxOS19BTlkgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIHN0YXRlXCIpKSB9XG4gIDtcblxubGlua19zdGF0ZXM6XG4gIHwgbGlua19zdGF0ZSBhbm5vdGVkIHsgWyQxXSB9XG4gIHwgbGlua19zdGF0ZSBhbm5vdGVkIGxpbmtfc3RhdGVzIHsgJDEgOjogJDMgfVxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCBDT01NQSBhbm5vdGVkIGxpbmtfc3RhdGVzIHsgJDEgOjogJDUgfVxuICA7XG5cbmxpbmtfbW9kaWY6XG4gIHwgeyBOb25lIH1cbiAgfCBESVYgYW5ub3RlZCBET1QgYW5ub3RlZCB7IFNvbWUgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgSU5UIGFubm90ZWQgeyBTb21lIChTb21lICgkMywgcmhzX3BvcyAzKSkgfVxuICB8IERJViBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSB9XG4gIDtcblxuaW50ZXJuYWxfc3RhdGU6XG4gIHwgSUQgeyBhZGRfcG9zIDEgKFNvbWUgJDEpIH1cbiAgfCBTSEFSUCB7IGFkZF9wb3MgMSBOb25lIH1cbiAgO1xuXG5pbnRlcm5hbF9zdGF0ZXM6XG4gIHwgaW50ZXJuYWxfc3RhdGUgYW5ub3RlZCB7IFskMV0gfVxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgaW50ZXJuYWxfc3RhdGVzIHsgJDEgOjogJDMgfVxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBpbnRlcm5hbF9zdGF0ZXMgeyAkMSA6OiAkNSB9XG4gIDtcblxuaW50ZXJuYWxfbW9kaWY6XG4gIHwgeyBOb25lIH1cbiAgfCBESVYgYW5ub3RlZCBJRCBhbm5vdGVkIHsgU29tZSAoJDMsIHJoc19wb3MgMykgfVxuICB8IERJViBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSB9XG4gIDtcblxuc2l0ZV9saW5rOlxuICB8IGFubm90ZWQgbGlua19zdGF0ZXMgbGlua19tb2RpZiBDTF9CUkEgeyAoJDIsICQzKSB9XG4gIHwgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGxpbmtpbmcgc3RhdGUgb3IgbWlzc2luZyAnXSdcIixyaHNfcG9zIDIpKSB9XG4gIDtcblxuc2l0ZV9pbnRlcm5hbDpcbiAgfCBpbnRlcm5hbF9zdGF0ZXMgaW50ZXJuYWxfbW9kaWYgQ0xfQ1VSIHsgKCQxLCAkMikgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgaW50ZXJuYWwgc3RhdGUgb3IgbWlzc2luZyAnfSdcIixyaHNfcG9zIDMpKSB9XG4gIDtcblxuY291bnRlcl9tb2RpZjpcbiAgfCBQTFVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoJDUsIHJoc19wb3MgNSkgfVxuICB8IFBMVVMgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIE1JTlVTIGFubm90ZWQgSU5UIHsgKC0gJDcsIHJoc19wb3MgNykgfVxuICB8IE1JTlVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoLSAkNSwgcmhzX3BvcyA1KSB9XG4gIDtcblxuemludDpcbiAgICB8IElOVCB7JDF9XG4gICAgfCBNSU5VUyBhbm5vdGVkIElOVCB7LSQzfVxuXG5jb3VudGVyX3Rlc3Q6XG4gIHwgRVFVQUwgYW5ub3RlZCB6aW50IHsgKEFzdC5DRVEgJDMscmhzX3BvcyAzKSB9XG4gIHwgR1JFQVRFUiBhbm5vdGVkIEVRVUFMIGFubm90ZWQgemludCB7IChBc3QuQ0dURSAkNSxyaHNfcG9zIDUpIH1cbiAgfCBTTUFMTEVSIGFubm90ZWQgRVFVQUwgYW5ub3RlZCB6aW50eyAoQXN0LkNMVEUgJDUscmhzX3BvcyA1KSB9XG4gIHwgRVFVQUwgYW5ub3RlZCBJRCB7IChBc3QuQ1ZBUiAkMyxyaHNfcG9zIDMpIH1cbiAgO1xuXG5zaXRlX2NvdW50ZXI6XG4gIHwgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkIHsgKE5vbmUsICQxKSB9XG4gIHwgY291bnRlcl90ZXN0IGFubm90ZWQgQ0xfQ1VSIGFubm90ZWQgeyAoU29tZSAkMSwgTG9jLmFubm90X3dpdGhfZHVtbXkgMCkgfVxuICB8IGNvdW50ZXJfdGVzdCBhbm5vdGVkIERJViBhbm5vdGVkIGNvdW50ZXJfbW9kaWYgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZFxuICAgIHsgKFNvbWUgJDEsJDUpIH1cbiAgO1xuXG5zaXRlX2NvdW50ZXJfc2lnOlxuICAgIHwgRVFVQUwgYW5ub3RlZCB6aW50ICBhbm5vdGVkIERJViBhbm5vdGVkIGNvdW50ZXJfbW9kaWYgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZFxuICAgICAgeyBTb21lIChTb21lICgkMykscmhzX3BvcyAzKSxtYXRjaCAkNyB3aXRoIChhLGxvYykgLT4gU29tZSAoU29tZSAoYSksbG9jKSB9XG4gICAgfCBFUVVBTCBhbm5vdGVkIHppbnQgIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWRcbiAgICAgICAgeyBTb21lIChTb21lICgkMykscmhzX3BvcyAzKSxOb25lIH1cbiAgICAgIDtcblxuICBzaXRlX3NpZzpcbiAgICB8IElEIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZFxuICAgICAgeyBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkNCBpblxuICAgICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDggaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZFxuICAgICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDggaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgICB8IElEIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50OyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9jb3VudGVyX3NpZ1xuICAgICAgeyBsZXQgKGNvdW50ZXJfc2lnX21pbixjb3VudGVyX3NpZ19tYXgpID0gJDUgaW5cbiAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZT0oJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluO1xuICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXg7XG4gICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQ9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKS0+IDBcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLF8pIC0+IGkgKTtcbiAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfdmlzaWJsZT1Db3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0O1xuICAgICAgICAgICAgfSB9XG4gICAgfCBJRCBhbm5vdGVkXG4gICAgICB7IEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSB9XG4gICAgO1xuXG5zaXRlOlxuICB8IElEIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkNCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50OyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfY291bnRlclxuICAgIHsgbGV0IChjb3VudGVyX3Rlc3QsY291bnRlcl9kZWx0YSkgPSAkNSBpblxuICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QuY291bnRlcl90ZXN0OyBBc3QuY291bnRlcl9kZWx0YSB9IH1cbiAgfCBJRCBhbm5vdGVkXG4gICAgeyBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSB9XG4gIDtcblxuaW50ZXJmYWNlOlxuICB8IHsgW10gfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgKFwiTWFsZm9ybWVkIHNpdGUgZXhwcmVzc2lvblwiKSkpIH1cbiAgfCBzaXRlIGludGVyZmFjZSB7ICQxIDo6ICQyIH1cbiAgfCBzaXRlIENPTU1BIGFubm90ZWQgaW50ZXJmYWNlIHsgJDEgOjogJDQgfVxuICA7XG5cbmludGVyZmFjZV9zaWc6XG4gICAgfCB7IFtdIH1cbiAgICB8IGVycm9yXG4gICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSB9XG4gICAgfCBzaXRlX3NpZyBpbnRlcmZhY2Vfc2lnIHsgJDEgOjogJDIgfVxuICAgIHwgc2l0ZV9zaWcgQ09NTUEgYW5ub3RlZCBpbnRlcmZhY2Vfc2lnIHsgJDEgOjogJDQgfVxuICAgIDtcblxuYWdlbnRfbW9kaWY6XG4gIHwgYW5ub3RlZCB7IEFzdC5Ob01vZCxzdGFydF9wb3MgMSwkMSB9XG4gIHwgYW5ub3RlZCBQTFVTIGFubm90ZWQgeyBBc3QuQ3JlYXRlLGVuZF9wb3MgMiwkMyB9XG4gIHwgYW5ub3RlZCBNSU5VUyBhbm5vdGVkIHsgQXN0LkVyYXNlLGVuZF9wb3MgMiwkMyB9XG4gIDtcblxuYWdlbnQ6XG4gIHwgRE9UIGFubm90ZWQgeyAoQXN0LkFic2VudCAocmhzX3BvcyAxKSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBJRCBhbm5vdGVkIE9QX1BBUiBhbm5vdGVkIGludGVyZmFjZSBDTF9QQVIgYWdlbnRfbW9kaWZcbiAgICB7IGxldCBtb2RpZixwZW5kLGFuID0gJDcgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQ1LCBtb2RpZikscGVuZCxhbikgfVxuICB8IElEIGFubm90ZWQgQ09MT04gYW5ub3RlZCBJRCBhbm5vdGVkIE9QX1BBUiBhbm5vdGVkIGludGVyZmFjZSBDTF9QQVIgYWdlbnRfbW9kaWZcbiAgICB7IGxldCBtb2RpZixwZW5kLGFuID0gJDExIGluXG4gICAgICAoQXN0LlByZXNlbnQgKCgkNSxyaHNfcG9zIDUpLCAkOSwgbW9kaWYpLHBlbmQsYW4pIH1cbiAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl4kMV5cIidcIikpKSB9XG4gIDtcblxuYWdlbnRfc2lnOlxuICAgIHwgRE9UIGFubm90ZWQgeyAoQXN0LkFic2VudCAocmhzX3BvcyAxKSxlbmRfcG9zIDEsJDIpIH1cbiAgICB8IElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlX3NpZyBDTF9QQVIgYWdlbnRfbW9kaWZcbiAgICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkNyBpblxuICAgICAgICAoQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkNSwgbW9kaWYpLHBlbmQsYW4pIH1cbiAgICB8IElEIGFubm90ZWQgQ09MT04gYW5ub3RlZCBJRCBhbm5vdGVkIE9QX1BBUiBhbm5vdGVkIGludGVyZmFjZV9zaWcgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgICB7IGxldCBtb2RpZixwZW5kLGFuID0gJDExIGluXG4gICAgICAgIChBc3QuUHJlc2VudCAoKCQ1LHJoc19wb3MgNSksICQ5LCBtb2RpZikscGVuZCxhbikgfVxuICAgIHwgSUQgYW5ub3RlZCBlcnJvclxuICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgICA7XG5wYXR0ZXJuOlxuICB8IGFnZW50IENPTU1BIGFubm90ZWQgcGF0dGVyblxueyBsZXQgKHgsXyxfKSA9ICQxIGluXG4gIG1hdGNoICQ0IHdpdGhcbiAgfCAoeTo6eixwZW5kLHApIC0+ICgoeDo6eSk6OnoscGVuZCxwKVxuICB8IChbXSxfLF8pIC0+XG4gICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgIChhZGRfcG9zIDQgKFwiYXNzZXJ0aW9uIGZhaWx1cmUgaW4gcGF0dGVybiBwYXJzaW5nXCIpKSkgfVxuICB8IGFnZW50IEJBQ0tTTEFTSCBhbm5vdGVkIHBhdHRlcm5cbnsgbGV0ICh4LF8sXykgPSAkMSBpbiBsZXQgKHkscGVuZCxwKSA9ICQ0IGluIChbeF06OnkscGVuZCxwKSB9XG4gIHwgYWdlbnQgeyBsZXQgKHgscGVuZCxwKSA9ICQxIGluIChbW3hdXSxwZW5kLHApIH1cbiAgO1xuXG5jb25zdGFudDpcbiAgfCBuYnIgeyBhZGRfcG9zIDEgKEFsZ19leHByLkNPTlNUICQxKSB9XG4gIHwgRU1BWCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FTUFYX1ZBUikpIH1cbiAgfCBUTUFYIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRNQVhfVkFSKSkgfVxuICB8IENQVVRJTUUgeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpIH1cbiAgO1xuXG52YXJpYWJsZTpcbiAgfCBQSVBFIGFubm90ZWQgSUQgYW5ub3RlZCBQSVBFIHsgYWRkX3BvcyA1IChBbGdfZXhwci5UT0tFTl9JRCAoJDMpKSB9XG4gIHwgUElQRSBhbm5vdGVkIHBhdHRlcm4gUElQRVxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpbiBhZGRfcG9zIDQgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIHApIH1cbiAgfCBJRCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKSB9XG4gIHwgTEFCRUwgeyBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKCQxKSkgfVxuICB8IFRJTUUgeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSB9XG4gIHwgRVZFTlQgeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSkgfVxuICB8IE5VTExfRVZFTlRcbiAgICB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpIH1cbiAgO1xuXG5zbWFsbF9hbGdfZXhwcjpcbiAgfCBPUF9QQVIgYW5ub3RlZCBhbGdfZXhwciBDTF9QQVIgeyBsZXQgKHgsXyxfKSA9ICQzIGluIHggfVxuICB8IGNvbnN0YW50IHsgJDEgfVxuICB8IHZhcmlhYmxlIHsgJDEgfVxuICB8IE1BWCBhbm5vdGVkIHNtYWxsX2FsZ19leHByIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsJDMsJDUpKSB9XG4gIHwgTUlOIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTiwkMywkNSkpIH1cbiAgfCBFWFBPTkVOVCBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5FWFAsJDMpKSB9XG4gIHwgU0lOVVMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU0lOVVMsJDMpKSB9XG4gIHwgQ09TSU5VUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLCQzKSkgfVxuICB8IFRBTiBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5UQU4sJDMpKSB9XG4gIHwgQUJTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCwkMykpIH1cbiAgfCBTUVJUIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsJDMpKSB9XG4gIHwgTE9HIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRywkMykpIH1cbiAgfCBNSU5VUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsJDMpKSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9fbW9kOlxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgeyAoJDEsZW5kX3BvcyAxLCQyKSB9XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBQT1cgYW5ub3RlZCBhbGdfZXhwcl91cF90b19tb2RcbiAgICB7IGxldCAoeCx5LHopID0gJDUgaW5cbiAgICAgIChhZGRfcG9zIDQgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuUE9XLCQxLHgpKSx5LHopIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19wcm9kOlxuICB8IGFsZ19leHByX3VwX3RvX21vZCB7ICQxIH1cbiAgfCBhbGdfZXhwcl91cF90b19wcm9kIE1PRCBhbm5vdGVkIGFsZ19leHByX3VwX3RvX21vZFxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTU9EVUxPLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9fc3VtOlxuICB8IGFsZ19leHByX3VwX3RvX3Byb2QgeyAkMSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIE1VTFQgYW5ub3RlZCBhbGdfZXhwcl91cF90b19wcm9kXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQseCx5KSxcbiAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX3N1bSBESVYgYW5ub3RlZCBhbGdfZXhwcl91cF90b19wcm9kXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLkRJVix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX2lmOlxuICB8IGFsZ19leHByX3VwX3RvX3N1bSB7ICQxIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBQTFVTIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fc3VtXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIE1JTlVTIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fc3VtXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG5cbmFsZ19leHByOlxuICB8IGFsZ19leHByX3VwX3RvX2lmIHsgJDEgfVxuICB8IGJvb2xfZXhwciBUSEVOIGFubm90ZWQgYWxnX2V4cHIgRUxTRSBhbm5vdGVkIHNtYWxsX2FsZ19leHByIGFubm90ZWRcbiAgICB7IGxldCAoaSxfLF8pID0gJDEgaW5cbiAgICAgIGxldCAodCxfLF8pID0gJDQgaW5cbiAgKChBbGdfZXhwci5JRihpLHQsJDcpLFxuICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSAoZW5kX3BvcyA3KSksZW5kX3BvcyA3LCQ4KSB9XG4gIDtcblxuYm9vbGVhbjpcbiAgfCBUUlVFIHsgdHJ1ZSB9XG4gIHwgRkFMU0UgeyBmYWxzZSB9XG4gIDtcblxuc21hbGxfYm9vbF9leHByOlxuICB8IE9QX1BBUiBhbm5vdGVkIGJvb2xfZXhwciBDTF9QQVIgeyBsZXQgKHgsXyxfKSA9ICQzIGluIHggfVxuICB8IFRSVUUgeyBhZGRfcG9zIDEgQWxnX2V4cHIuVFJVRSB9XG4gIHwgRkFMU0UgeyBhZGRfcG9zIDEgQWxnX2V4cHIuRkFMU0UgfVxuICB8IE5PVCBhbm5vdGVkIHNtYWxsX2Jvb2xfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCwkMykpIH1cbiAgO1xuXG5ib29sX2V4cHJfY29tcDpcbiAgfCBzbWFsbF9ib29sX2V4cHIgYW5ub3RlZCB7ICgkMSxlbmRfcG9zIDEsICQyKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgR1JFQVRFUiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBTTUFMTEVSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuU01BTExFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIEVRVUFMIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBESUZGIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRElGRix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbmJvb2xfZXhwcl9ub19vcjpcbiAgfCBib29sX2V4cHJfY29tcCB7ICQxIH1cbiAgfCBib29sX2V4cHJfY29tcCBBTkQgYW5ub3RlZCBib29sX2V4cHJfbm9fb3JcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbmJvb2xfZXhwcjpcbiAgfCBib29sX2V4cHJfbm9fb3IgeyAkMSB9XG4gIHwgYm9vbF9leHByX25vX29yIE9SIGFubm90ZWQgYm9vbF9leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbnN0YW5kYWxvbmVfYm9vbF9leHByOlxuICB8IGFubm90ZWQgYm9vbF9leHByIEVPRiB7IGxldCAoeCxfLF8pID0gJDIgaW4geCB9XG4gIHwgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiUHJvYmxlbWF0aWMgYm9vbGVhbiBleHByZXNzaW9uXCIpKSB9XG4gIDtcblxuYXJyb3c6XG4gIHwgUkFSIHtmYWxzZX1cbiAgfCBMUkFSIHt0cnVlfVxuICA7XG5cbnN1bV90b2tlbjpcbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIElEIGFubm90ZWQgeyBbKCQxLCgkMyxyaHNfcG9zIDMpKV0sZW5kX3BvcyAzLCQ0IH1cbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIElEIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBzdW1fdG9rZW5cbiAgICB7IGxldCAobCxwZW5kLGFuKSA9ICQ3IGluICgkMSwoJDMscmhzX3BvcyAzKSkgOjogbCxwZW5kLGFuIH1cbiAgO1xuXG5ydWxlX3NpZGU6XG4gIHwgcGF0dGVybiB7IGxldCAocCxwZW5kLGFuKSA9ICQxIGluIChwLFtdLHBlbmQsYW4pIH1cbiAgfCBwYXR0ZXJuIFBJUEUgYW5ub3RlZCBzdW1fdG9rZW5cbiAgICB7IGxldCAocCxfLF8pID0gJDEgaW5cbiAgICAgIGxldCAodCxwZW5kLGFuKSA9ICQ0IGluIChwLCB0LCBwZW5kLCBhbikgfVxuICB8IFBJUEUgYW5ub3RlZCBzdW1fdG9rZW4geyBsZXQgKHQscGVuZCxhbikgPSAkMyBpbiAoW10sIHQsIHBlbmQsIGFuKSB9XG4gIHwgcGF0dGVybiBQSVBFIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyA0IFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgfVxuICB8IFBJUEUgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSB9XG4gIDtcblxucnVsZV9jb250ZW50OlxuICB8IHJ1bGVfc2lkZSBhcnJvdyBhbm5vdGVkIHJ1bGVfc2lkZVxuICAgIHsgbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSAkNCBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSwkMixwZW5kLGFuKSB9XG4gIHwgcnVsZV9zaWRlIGFycm93IGFubm90ZWRcbiAgICB7IGxldCAobGhzLHJtX3Rva2VuLF8sXykgPSAkMSBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuPVtdfSwkMixlbmRfcG9zIDIsJDMpIH1cbiAgfCBhcnJvdyBhbm5vdGVkIHJ1bGVfc2lkZVxuICAgIHsgbGV0IChyaHMsYWRkX3Rva2VuLHBlbmQsYW4pID0gJDMgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbj1bXTsgQXN0LnJoczsgQXN0LmFkZF90b2tlbn0sJDEscGVuZCxhbikgfVxuICB8IHJ1bGVfc2lkZVxuICAgIHsgbGV0IChtaXgsZGVsdGFfdG9rZW4scGVuZCxhbikgPSAkMSBpblxuICAgICAgKEFzdC5FZGl0IHtBc3QubWl4OyBBc3QuZGVsdGFfdG9rZW59LGZhbHNlLHBlbmQsYW4pIH1cbiAgO1xuXG5hbGdfd2l0aF9yYWRpdXM6XG4gIHwgYWxnX2V4cHIgeyBsZXQgKHgsXyxfKSA9ICQxIGluICh4LE5vbmUpIH1cbiAgfCBhbGdfZXhwciBDT0xPTiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHgsXyxfKSA9ICQxIGluIGxldCAoeSxfLF8pID0gJDQgaW4gKHgsIFNvbWUgeSkgfVxuICA7XG5cbnJhdGU6XG4gIHwgT1BfQ1VSIGFubm90ZWQgYWxnX3dpdGhfcmFkaXVzIENMX0NVUiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKGIscGVuZCxhbikgPSAkNiBpbiAoYixTb21lICQzLHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwciBPUF9DVVIgYW5ub3RlZCBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIGFubm90ZWRcbiAgICB7IGxldCAoeCxfLF8pID0gJDEgaW4gKHgsU29tZSAkNCxlbmRfcG9zIDUsJDYpIH1cbiAgfCBhbGdfZXhwciB7IGxldCAoYSxwZW5kLGFuKSA9ICQxIGluIChhLE5vbmUscGVuZCxhbikgfVxuICA7XG5cbmJpcmF0ZTpcbiAgfCBBVCBhbm5vdGVkIHJhdGUgeyBsZXQgKGsyLGsxLHBlbmQsYW4pID0gJDMgaW4gKGsyLGsxLE5vbmUsTm9uZSxwZW5kLGFuKSB9XG4gIHwgQVQgYW5ub3RlZCByYXRlIENPTU1BIGFubm90ZWQgcmF0ZVxuICAgIHsgbGV0IChrMixrMSxfLF8pID0gJDMgaW5cbiAgICAgIGxldCAoa2JhY2ssa2JhY2sxLHBlbmQsYW4pID0gJDYgaW5cbiAgICAgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSxwZW5kLGFuKSB9XG4gIDtcblxucnVsZTpcbiAgfCBydWxlX2NvbnRlbnQgYmlyYXRlXG4gICAgeyBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuLHBvc19lbmQsX2Fubm90KSA9ICQyIGluXG4gICAgICBsZXQgKHJld3JpdGUsYmlkaXJlY3Rpb25hbCxfLF8pID0gJDEgaW5cbiAgICAgICh7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwb3NfZW5kKSB9XG4gIHwgcnVsZV9jb250ZW50IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMiBcInJ1bGUgcmF0ZSBleHBlY3RlZFwiKSkgfVxuICA7XG5cbnZhcmlhYmxlX2RlY2xhcmF0aW9uOlxuICB8IExBQkVMIGFubm90ZWQgYWxnX2V4cHIgeyBsZXQgKHYscGVuZCxhbikgPSAkMyBpbiAoKCQxLHJoc19wb3MgMSksdixwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixwZW5kLGFuKSA9ICQzIGluICgoJDEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIH1cbiAgfCBMQUJFTCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl4kMV5cIidcIikpKSB9XG4gIHwgSUQgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeJDFeXCInXCIpKSkgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSAoXCJsYWJlbCBleHBlY3RlZFwiKSkpIH1cbiAgO1xuXG5pZF9saXN0OlxuICB8IElEIGFubm90ZWQgeyBbICQxLHJoc19wb3MgMSBdIH1cbiAgfCBJRCBhbm5vdGVkIENPTU1BIGFubm90ZWQgaWRfbGlzdCB7ICgkMSxyaHNfcG9zIDEpIDo6ICQ1IH1cbiAgO1xuXG5pbml0X2RlY2xhcmF0aW9uOlxuICB8IGFsZ19leHByIHBhdHRlcm5cbiAgICB7IGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gJDIgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMikgcGVuZCkpIH1cbiAgfCBhbGdfZXhwciBPUF9QQVIgYW5ub3RlZCBwYXR0ZXJuIENMX1BBUiBhbm5vdGVkXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHAscGVuZCxfKSA9ICQ0IGluXG4gICAgICAodixBc3QuSU5JVF9NSVggKHAsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSB9XG4gIHwgYWxnX2V4cHIgaWRfbGlzdFxuICAgIHsgbGV0ICh2LF8sXykgPSAkMSBpbiAodixBc3QuSU5JVF9UT0sgJDIpIH1cbi8qXG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBpbml0X2RlY2xhcmF0aW9uIENMX0NVUiBhbm5vdGVkXG4gICAgeyBsZXQgKF8sYWxnLGluaXQpID0gJDUgaW4gKFNvbWUgKCQxLHJoc19wb3MgMSksYWxnLGluaXQpIH1cbiovXG4gIHwgSUQgTEFSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAodixfLF8pID0gJDQgaW4gKHYsQXN0LklOSVRfVE9LIFskMSxyaHNfcG9zIDFdKX1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSB9XG4gIDtcblxudmFsdWVfbGlzdDpcbiAgfCBTVFJJTkcgYW5ub3RlZCB7WyQxLCByaHNfcG9zIDFdfVxuICB8IFNUUklORyBhbm5vdGVkIHZhbHVlX2xpc3QgeygkMSxyaHNfcG9zIDEpOjokM31cbiAgO1xuXG5ub25lbXB0eV9wcmludF9leHByOlxuICB8IFNUUklORyBhbm5vdGVkXG4gICAgeyAoW1ByaW1pdGl2ZXMuU3RyX3BleHByIChhZGRfcG9zIDEgJDEpXSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZlxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkMSBpbiAoW1ByaW1pdGl2ZXMuQWxnX3BleHByIGFdLHBlbmQscCkgfVxuICB8IHByaW50X2V4cHJfbGlzdCB7ICQxIH1cbiAgfCBPUF9QQVIgYW5ub3RlZCBwcmludF9leHByX2xpc3QgQ0xfUEFSIGFubm90ZWRcbiAgICB7IGxldCAodixfLGFuKSA9ICQzIGluICh2LGVuZF9wb3MgNCxhbiBAICQ1KSB9XG4gIDtcblxucHJpbnRfZXhwcl9saXN0OlxuICB8IFNUUklORyBhbm5vdGVkIERPVCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHJcbiAgICB7IGxldCAobCxwZW5kLHApID0gJDUgaW4gKFByaW1pdGl2ZXMuU3RyX3BleHByICgkMSwgcmhzX3BvcyAxKTo6bCxwZW5kLHApIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBET1QgYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByXG4gICAgeyBsZXQgKGwscGVuZCxwKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQxIGluXG4gICAgICAoUHJpbWl0aXZlcy5BbGdfcGV4cHIgdjo6bCxwZW5kLHApIH1cbiAgO1xuXG5wcmludF9leHByOlxuICB8IGFubm90ZWQgeyAoW10sc3RhcnRfcG9zIDEsJDEpIH1cbiAgfCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHIgeyAkMiB9XG4gIDtcblxuZWZmZWN0OlxuICB8IEFTU0lHTiBhbm5vdGVkIElEIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoYSxwZW5kLHApID0gJDUgaW4gKEFzdC5VUERBVEUgKCgkMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgfVxuICB8IEFTU0lHTiBhbm5vdGVkIExBQkVMIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoYSxwZW5kLHApID0gJDUgaW4gKEFzdC5VUERBVEUgKCgkMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgfVxuICB8IFRSQUNLIGFubm90ZWQgTEFCRUwgYW5ub3RlZCBib29sZWFuIGFubm90ZWRcbiAgICB7IChBc3QuQ0ZMT1dMQUJFTCAoJDUsKCQzLHJoc19wb3MgMykpLGVuZF9wb3MgNSwkNikgfVxuICB8IFRSQUNLIGFubm90ZWQgcGF0dGVybiBib29sZWFuIGFubm90ZWRcbiAgICB7IGxldCAocGF0LGVwYXQsXykgPSAkMyBpblxuICAgICAgKEFzdC5DRkxPV01JWCAoJDQsKHBhdCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgZXBhdCkpLGVuZF9wb3MgNCwgJDUpIH1cbiAgfCBGTFVYIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwciBib29sZWFuIGFubm90ZWRcbiAgICB7IGxldCAocCxfLF8pID0gJDMgaW5cbiAgICAgICgoaWYgJDQgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApIGVsc2UgQXN0LkRJTk9GRiBwKSxcbiAgICAgICBlbmRfcG9zIDQsJDUpIH1cbiAgfCBGTFVYIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwciBTVFJJTkcgYW5ub3RlZCBib29sZWFuIGFubm90ZWRcbiAgICB7IGxldCAocCxfLF8pID0gJDMgaW5cbiAgICAgIGlmICQ2ICYmICQ0ID0gXCJhYnNvbHV0ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUscCksZW5kX3BvcyA2LCQ3KVxuICAgICAgZWxzZSBpZiAkNiAmJiAkNCA9IFwicHJvYmFiaWxpdHlcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLHApLGVuZF9wb3MgNiwkNylcbiAgICAgIGVsc2UgaWYgJDYgJiYgJDQgPSBcInJlbGF0aXZlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSxlbmRfcG9zIDYsJDcpXG4gICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDQpKSB9XG4gIHwgQVBQTFkgYW5ub3RlZCBhbGdfZXhwciBydWxlX2NvbnRlbnRcbiAgICB7IGxldCAocmV3cml0ZSxfLHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDMgaW5cbiAgICAgIEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICh7IEFzdC5yZXdyaXRlOyBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgcGVuZCkpLFxuICAgICAgcGVuZCxhblxuICAgIH1cbiAgfCBJTlRSTyBhbm5vdGVkIGFsZ19leHByIHBhdHRlcm5cbiAgICB7IGxldCAobSxwZW5kLHApID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDMgaW5cbiAgICAgIChBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0ICAgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2NyZWF0ZWRfbWl4dHVyZSBtO1xuICAgICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0ICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSxcbiAgICAgICBwZW5kLHApIH1cbiAgfCBJTlRSTyBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgXFxcbickQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSB9XG4gIHwgREVMRVRFIGFubm90ZWQgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0IChtLHBlbmQscCkgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19lcmFzZWRfbWl4dHVyZSBtO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgfVxuICB8IERFTEVURSBhbm5vdGVkIGVycm9yXG4gICAgICAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIH1cbiAgfCBTTkFQU0hPVCBwcmludF9leHByIHsgbGV0IChzLHBlbmQscCkgPSAkMiBpbiAoQXN0LlNOQVBTSE9UIChmYWxzZSxzKSxwZW5kLHApIH1cbiAgfCBTTkFQU0hPVCBwcmludF9leHByIGJvb2xlYW4gYW5ub3RlZCB7IGxldCAocyxfLF8pID0gJDIgaW4gKEFzdC5TTkFQU0hPVCAoJDMscyksZW5kX3BvcyAzLCQ0KSB9XG4gIHwgU1RPUCBwcmludF9leHByIHsgbGV0IChzLHBlbmQscCkgPSAkMiBpbiAoQXN0LlNUT1AgcyxwZW5kLHApIH1cbiAgfCBQUklOVEYgcHJpbnRfZXhwciBHUkVBVEVSIHByaW50X2V4cHJcbiAgICB7IGxldCAoZixwZW5kLHApID0gJDQgaW4gbGV0IChjLF8sXykgPSAkMiBpbiAoQXN0LlBSSU5UIChmLGMpLHBlbmQscCkgfVxuICB8IFBSSU5URiBwcmludF9leHByIHsgbGV0IChjLHBlbmQscCkgPSAkMiBpbiAoQXN0LlBSSU5UIChbXSxjKSxwZW5kLHApIH1cbiAgfCBQTE9URU5UUlkgYW5ub3RlZCB7IChBc3QuUExPVEVOVFJZLGVuZF9wb3MgMSwkMikgfVxuICB8IFNQRUNJRVNfT0YgYW5ub3RlZCBwYXR0ZXJuIGJvb2xlYW4gYW5ub3RlZCBHUkVBVEVSIHByaW50X2V4cHJcbiAgICB7XG4gICAgICBsZXQgKGZpbGUscGVuZCxwKSA9ICQ3IGluXG4gICAgICBsZXQgKHBhdCxwZW5kcCxfKSA9ICQzIGluXG4gICAgICAoQXN0LlNQRUNJRVNfT0YgKCQ0LGZpbGUsKHBhdCwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmRwKSksXG4gICAgICAgcGVuZCxwKSB9XG4gIDtcblxuaWRpbjpcbnwgSUQgYW5ub3RlZCBMQVIgYW5ub3RlZCBhbGdfZXhwciB7XG4gICBsZXQgKHYscGVuZCxwKSA9ICQ1IGluXG4gICBsZXQgdGsgPSAoJDEscmhzX3BvcyAxKSBpblxuICAgIChBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgKHtBc3QucmV3cml0ZSA9XG4gICAgICAgICAgICAgIEFzdC5FZGl0XG4gICAgICAgICAgICAgICAgICB7QXN0Lm1peD1bXTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW4gPVxuICAgICAgICAgICAgICAgICAgICAgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx2LChBbGdfZXhwci5UT0tFTl9JRCAkMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAgNCkgcGVuZCkpLHBlbmQscClcbiAgIH1cbnwgSUQgYW5ub3RlZCBMQVIgZXJyb3JcbiAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSB9XG58IElEIGVycm9yXG4gICAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMiBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG4gICBleHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgfTtcbjtcblxuZWZmZWN0X29yX2lkaW46XG4gIHwgZWZmZWN0IHskMX1cbiAgfCBpZGluIHskMX1cblxucGFydGlhbF9lZmZlY3RfbGlzdDpcbiAgfCBPUF9QQVIgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IENMX1BBUiBhbm5vdGVkIHsgJDMgfVxuICB8IGVmZmVjdF9vcl9pZGluIFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICB8IGVmZmVjdF9vcl9pZGluIHsgbGV0IChlLHAsYSkgPSAkMSBpbiAoW2VdLHAsYSkgfVxuICB8IGVmZmVjdF9vcl9pZGluIFNFTUlDT0xPTiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RcbiAgICB7IGxldCAoZSxfLF8pID0gJDEgaW4gbGV0IChsLHBlbmQsYSkgPSAkNCBpbiAoZTo6bCxwZW5kLGEpIH1cblxucGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbjpcbiAgICAgIHwgaWRpbiBTRU1JQ09MT04gYW5ub3RlZCB7IGxldCAoZSxfLF8pID0gJDEgaW4gKFtlXSxlbmRfcG9zIDIsJDMpIH1cbiAgICAgIHwgaWRpbiB7IGxldCAoZSxwLGEpID0gJDEgaW4gKFtlXSxwLGEpIH1cbiAgICAgIHwgaWRpbiBTRU1JQ09MT04gYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0XG4gICAgICAgICAgeyBsZXQgKGUsXyxfKSA9ICQxIGluIGxldCAobCxwZW5kLGEpID0gJDQgaW4gKGU6OmwscGVuZCxhKSB9XG5cbmVmZmVjdF9saXN0OlxuICB8IE9QX1BBUiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgQ0xfUEFSIGFubm90ZWQgeyAkMyB9XG4gIHwgT1BfUEFSIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBDTF9QQVIgYW5ub3RlZCBTRU1JQ09MT04gYW5ub3RlZCB7bGV0IChlLF8sXykgPSAgJDMgaW4gZSxlbmRfcG9zIDYsJDcgfVxuICB8IGVmZmVjdCBTRU1JQ09MT04gYW5ub3RlZCB7IGxldCAoZSxfLF8pID0gJDEgaW4gKFtlXSxlbmRfcG9zIDIsJDMpIH1cbiAgfCBlZmZlY3QgU0VNSUNPTE9OIGFubm90ZWQgZWZmZWN0X2xpc3RcbiAgICB7IGxldCAoZSxfLF8pID0gJDEgaW4gbGV0IChsLHBlbmQsYSkgPSAkNCBpbiAoZTo6bCxwZW5kLGEpIH1cbiAgO1xuXG5zdGFuZGFsb25lX2VmZmVjdF9saXN0OlxuICB8IGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBFT0YgeyBsZXQgKGUsXyxfKSA9ICQyIGluIGUgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlByb2JsZW1hdGljIGVmZmVjdCBsaXN0XCIpKSB9XG4gIDtcblxucGVydHVyYmF0aW9uX2FsYXJtOlxuICB8IGFubm90ZWQgeyBOb25lIH1cbiAgfCBhbm5vdGVkIEFMQVJNIGFubm90ZWQgbmJyIGFubm90ZWQgeyBTb21lICQ0IH1cbiAgfCBhbm5vdGVkIEFMQVJNIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImFsYXJtIHRha2VzIGEgbnVtYmVyIGFzIGFyZ3VtZW50XCIpKSB9XG4gIDtcblxucGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkOlxuICB8IFJFUEVBVCBhbm5vdGVkIGJvb2xfZXhwciB7IGxldCAoYixwZW5kLHApID0gJDMgaW4gKFNvbWUgYixwZW5kLHApIH1cblxucGVydHVyYmF0aW9uX3Bvc3Q6XG4gIHwgeyAoTm9uZSwgUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpLFtdKSB9XG4gIHwgcGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkIHskMX1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fZGVjbGFyYXRpb246XG4gIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBETyBhbm5vdGVkIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyBsZXQgKHByZSxfLF8pID0gJDIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gJDUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gJDYgaW5cbiAgICAgICgkMSxTb21lIHByZSxlLHBvc3QpIH1cbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gRE8gYW5ub3RlZCBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgbGV0IChlLF8sXykgPSAkNCBpbiBsZXQgKHBvc3QsXyxfKSA9ICQ1IGluICgkMSxOb25lLGUscG9zdCkgfVxuXG4gIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBETyBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4gcGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkXG4gICAgeyBsZXQgKHByZSxfLF8pID0gJDIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gJDUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gJDYgaW5cbiAgICAgICgkMSxTb21lIHByZSxlLHBvc3QpIH1cbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gRE8gYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluIHBlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZFxuICAgICAgICB7IGxldCAoZSxfLF8pID0gJDQgaW5cbiAgICAgICAgICBsZXQgKHBvc3QsXyxfKSA9ICQ1IGluXG4gICAgICAgICAgKCQxLE5vbmUsZSxwb3N0KSB9XG4gIDtcblxuc2VudGVuY2U6XG4gIHwgTEFCRUwgYW5ub3RlZCBydWxlXG4gICAgeyBhZGQgKEFzdC5SVUxFKFNvbWUgKCQxLCByaHNfcG9zIDEpLCQzKSkgfVxuICB8IExBQkVMIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh2LF8sXykgPSAkNSBpbiBhZGQgKEFzdC5ERUNMQVJFICgoJDEscmhzX3BvcyAxKSx2KSkgfVxuICB8IHJ1bGUgeyBhZGQgKEFzdC5SVUxFIChOb25lLCQxKSkgfVxuICB8IFNJR05BVFVSRSBhbm5vdGVkIGFnZW50X3NpZyB7IGxldCAoYSxfLF8pID0gJDMgaW4gYWRkIChBc3QuU0lHIGEpIH1cbiAgfCBTSUdOQVRVUkUgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlXCIpKSB9XG4gIHwgVE9LRU4gYW5ub3RlZCBJRCBhbm5vdGVkIHsgYWRkIChBc3QuVE9LRU5TSUcgKCQzLHJoc19wb3MgMykpIH1cbiAgfCBQTE9UIGFubm90ZWQgYWxnX2V4cHIgeyBsZXQgKHYsXyxfKSA9ICQzIGluIGFkZCAoQXN0LlBMT1QgdikgfVxuICB8IFBMT1QgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzXG4gICAgICAgICAgICAgICAgICBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBcXFxuYW4gYWxnZWJyYWljIGV4cHJlc3Npb24gaXMgZXhwZWN0ZWRcIikpIH1cbiAgfCBMRVQgYW5ub3RlZCB2YXJpYWJsZV9kZWNsYXJhdGlvblxuICAgIHsgbGV0IChpLHYsXyxfKSA9ICQzIGluIGFkZCAoQXN0LkRFQ0xBUkUgKGksdikpIH1cbiAgfCBPQlMgYW5ub3RlZCB2YXJpYWJsZV9kZWNsYXJhdGlvbiB7IGxldCAoaSx2LF8sXykgPSAkMyBpbiBhZGQgKEFzdC5PQlMgKGksdikpIH1cbiAgfCBJTklUIGFubm90ZWQgaW5pdF9kZWNsYXJhdGlvblxuICAgIHsgbGV0IChhbGcsaW5pdCkgPSAkMyBpbiBhZGQgKEFzdC5JTklUIChhbGcsaW5pdCkpIH1cbiAgfCBQRVJUIHBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbiB7IGFkZCAoQXN0LlBFUlQgKCQyLCByaHNfcG9zIDIpKSB9XG4gIHwgQ09ORklHIGFubm90ZWQgU1RSSU5HIGFubm90ZWQgdmFsdWVfbGlzdFxuICAgIHsgYWRkIChBc3QuQ09ORklHICgoJDMscmhzX3BvcyAzKSwkNSkpIH1cbiAgO1xuXG5tb2RlbF9ib2R5OlxuICB8IHNlbnRlbmNlIG1vZGVsX2JvZHkgeyAkMiB9XG4gIHwgRU9GIHsgb3V0cHV0ICgpIH1cbiAgO1xuXG5tb2RlbDpcbiAgfCBhbm5vdGVkIG1vZGVsX2JvZHkgeyAkMiB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIkluY29ycmVjdCBiZWdpbm5pbmcgb2Ygc2VudGVuY2UgISEhXCIpKSB9XG4gIDtcblxuaW50ZXJhY3RpdmVfY29tbWFuZDpcbiAgfCBhbm5vdGVkIFJVTiBhbm5vdGVkIFNFTUlDT0xPTiB7IEFzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKSB9XG4gIHwgYW5ub3RlZCBSVU4gYW5ub3RlZCBib29sX2V4cHIgU0VNSUNPTE9OIHsgbGV0IChwYXVzZSxfLF8pID0gJDQgaW4gQXN0LlJVTiBwYXVzZSB9XG4gIHwgYW5ub3RlZCBlZmZlY3QgU0VNSUNPTE9OIHsgbGV0IChlZmYsXyxfKSA9ICQyIGluIEFzdC5NT0RJRlkgW2VmZl0gfVxuICB8IGFubm90ZWQgRU9GIHsgQXN0LlFVSVQgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKSB9XG4gIDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBhcHBlbmRfdG9fYXN0X2NvbXBpbCByZXZfaW5zdHIgY29tcGlsID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIHIgLT4gZnVuY3Rpb25cbiAgICAgIHwgQXN0LlJVTEUgcnUgLT4geyByIHdpdGggQXN0LnJ1bGVzID0gcnUgOjogci5Bc3QucnVsZXMgfVxuICAgICAgfCBBc3QuU0lHIGFnIC0+IHsgciB3aXRoIEFzdC5zaWduYXR1cmVzID0gYWcgOjogci5Bc3Quc2lnbmF0dXJlcyB9XG4gICAgICB8IEFzdC5UT0tFTlNJRyBzdHJfcG9zIC0+IHsgciB3aXRoIEFzdC50b2tlbnMgPSBzdHJfcG9zIDo6IHIuQXN0LnRva2VucyB9XG4gICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLCB2b2wsIHZvbF9wYXJhbSkgLT5cbiAgICAgICAgeyByIHdpdGggQXN0LnZvbHVtZXMgPSAodm9sX3R5cGUsIHZvbCwgdm9sX3BhcmFtKSA6OiByLkFzdC52b2x1bWVzIH1cbiAgICAgIHwgQXN0LklOSVQgKGFsZywgaW5pdF90KSAtPlxuICAgICAgICB7IHIgd2l0aCBBc3QuaW5pdCA9IChhbGcsIGluaXRfdCkgOjogci5Bc3QuaW5pdCB9XG4gICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPiB7IHIgd2l0aCBBc3QudmFyaWFibGVzID0gdmFyIDo6IHIuQXN0LnZhcmlhYmxlcyB9XG4gICAgICB8IEFzdC5PQlMgKCgobGJsLCBwb3MpLCBfKSBhcyB2YXIpIC0+XG4gICAgICAgICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuICAgICAgICB7XG4gICAgICAgICAgciB3aXRoXG4gICAgICAgICAgQXN0LnZhcmlhYmxlcyA9IHZhciA6OiByLkFzdC52YXJpYWJsZXM7XG4gICAgICAgICAgQXN0Lm9ic2VydmFibGVzID0gKEFsZ19leHByLkFMR19WQVIgbGJsLCBwb3MpIDo6IHIuQXN0Lm9ic2VydmFibGVzO1xuICAgICAgICB9XG4gICAgICB8IEFzdC5QTE9UIGV4cHIgLT4geyByIHdpdGggQXN0Lm9ic2VydmFibGVzID0gZXhwciA6OiByLkFzdC5vYnNlcnZhYmxlcyB9XG4gICAgICB8IEFzdC5QRVJUICgoYWxhcm0sIHByZSwgZWZmZWN0LCBvcHQpLCBwb3MpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICByIHdpdGhcbiAgICAgICAgICBBc3QucGVydHVyYmF0aW9ucyA9XG4gICAgICAgICAgICAoKGFsYXJtLCBwcmUsIGVmZmVjdCwgb3B0KSwgcG9zKSA6OiByLkFzdC5wZXJ0dXJiYXRpb25zO1xuICAgICAgICB9XG4gICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsIHZhbHVlX2xpc3QpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICByIHdpdGhcbiAgICAgICAgICBBc3QuY29uZmlndXJhdGlvbnMgPSAocGFyYW1fbmFtZSwgdmFsdWVfbGlzdCkgOjogci5Bc3QuY29uZmlndXJhdGlvbnM7XG4gICAgICAgIH0pXG4gICAgY29tcGlsIChMaXN0LnJldiByZXZfaW5zdHIpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG57XG5vcGVuIEtwYXJzZXI0XG5cbiBsZXQga2V5d29yZF9vcl9pZCA9XG4gbGV0IGtleXdvcmRzID0gSGFzaHRibC5jcmVhdGUgMTUgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImRvXCIgRE8gaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG59XG5cbmxldCBlb2wgPSAnXFxyJz8gJ1xcbidcbmxldCBibGFuayA9IFsnICcgJ1xcdCddXG5sZXQgaW50ZWdlciA9IFsnMCctJzknXStcbmxldCByZWFsID1cbiAgKFsnMCctJzknXSsgWydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKykgfFxuICAoKChbJzAnLSc5J10rICcuJyBbJzAnLSc5J10qKSB8ICgnLicgWycwJy0nOSddKykpXG4gICAgKFsnZScgJ0UnXSBbJysnICctJ10/IFsnMCctJzknXSspPylcbmxldCBpZCA9IFsnXycgJ34nXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICd+JyAnLScgJysnXSsgfFxuICAgICAgICAgWydhJy0neicgJ0EnLSdaJ10gWydhJy0neicgJ0EnLSdaJyAnMCctJzknICdfJyAnficgJy0nICcrJ10qXG5cbnJ1bGUgdG9rZW4gPSBwYXJzZVxuICB8ICcvJyAnLycgKFteJ1xccicnXFxuJ10qIGFzIHMpIChlb2wgfCBlb2YpIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBDT01NRU5UIHN9XG4gIHwgJy8nICcqJyB7Q09NTUVOVCAoaW5saW5lX2NvbW1lbnQgW10gbGV4YnVmKX1cbiAgfCBlb2wgeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBORVdMSU5FIH1cbiAgfCBibGFuayArIGFzIHggeyBTUEFDRSB4IH1cbiAgfCAnIycgeyBTSEFSUCB9XG4gIHwgXCImJlwiIHsgQU5EIH1cbiAgfCBcInx8XCIgeyBPUiB9XG4gIHwgXCI8LT5cIiB7IExSQVIgfVxuICB8IFwiPC1cIiB7TEFSfVxuICB8IFwiLT5cIiB7IFJBUiB9XG4gIHwgXCI8PlwiIHsgRElGRiB9XG4gIHwgJzonIHsgQ09MT04gfVxuICB8ICc7JyB7IFNFTUlDT0xPTiB9XG4gIHwgJ0AnIHsgQVQgfVxuICB8ICcsJyB7IENPTU1BIH1cbiAgfCAnXFxcXCcge0JBQ0tTTEFTSH1cbiAgfCAnKCcgeyBPUF9QQVIgfVxuICB8ICcpJyB7IENMX1BBUiB9XG4gIHwgJ1snIHsgT1BfQlJBIH1cbiAgfCAnXScgeyBDTF9CUkEgfVxuICB8ICd7JyB7IE9QX0NVUiB9XG4gIHwgJ30nIHsgQ0xfQ1VSIH1cbiAgfCAnfCcgeyBQSVBFIH1cbiAgfCAnLicgeyBET1QgfVxuICB8ICdfJyB7IFVOREVSU0NPUkUgfVxuICB8ICcrJyB7IFBMVVMgfVxuICB8ICcqJyB7IE1VTFQgfVxuICB8ICctJyB7IE1JTlVTIH1cbiAgfCAnXicgeyBQT1cgfVxuICB8ICcvJyB7IERJViB9XG4gIHwgJzwnIHsgU01BTExFUiB9XG4gIHwgJz4nIHsgR1JFQVRFUiB9XG4gIHwgJz0nIHsgRVFVQUwgfVxuICB8IGludGVnZXIgYXMgbiB7IElOVCAoaW50X29mX3N0cmluZyBuKSB9XG4gIHwgcmVhbCBhcyBmIHsgRkxPQVQgKGZsb2F0X29mX3N0cmluZyBmKSB9XG4gIHwgJ1xcJycgKFteJ1xcbicgJ1xcJyddKyBhcyB4KSAnXFwnJ3sgTEFCRUwoeCkgfVxuICB8ICdcXFwiJyAoW14nXFxuJyAnXFxcIiddKiBhcyB4KSAnXFxcIid7IFNUUklORyh4KSB9XG4gIHwgJ1xcJycgKFteJ1xcbicgJ1xcJyddKyBhcyBzKSAoZW9mIHwgJ1xcbicpXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBsYWJlbDogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8ICdcXFwiJyAoW14nXFxuJyAnXFxcIiddKyBhcyBzKSAoZW9mIHwgJ1xcbicpXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmc6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cbiAgfCBpZCBhcyBzdHIgeyBrZXl3b3JkX29yX2lkIHN0ciB9XG4gIHwgJyUnIChpZCBhcyBsYWIpICc6JyB7XG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcbiAgICB8IFwiaW5pdFwiIC0+IElOSVRcbiAgICB8IFwidmFyXCIgLT4gTEVUXG4gICAgfCBcInBsb3RcIiAtPiBQTE9UXG4gICAgfCBcIm1vZFwiIC0+IFBFUlRcbiAgICB8IFwib2JzXCIgLT4gT0JTXG4gICAgfCBcImRlZlwiIC0+IENPTkZJR1xuICAgIHwgXCJ0b2tlblwiIC0+IFRPS0VOXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGRpcmVjdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgfVxuICB8ICdbJyBibGFuayogJz8nIGJsYW5rKiAnXScgeyBUSEVOIH1cbiAgfCAnWycgYmxhbmsqICc6JyBibGFuayogJ10nIHsgRUxTRSB9XG4gIHwgJ1snIGJsYW5rKiAoaWQgYXMgbGFiKSBibGFuayogJ10nIHtcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJFXCIgLT4gRVZFTlRcbiAgICB8IFwiRS1cIiAtPiBOVUxMX0VWRU5UXG4gICAgfCBcIlRcIiAtPiBUSU1FXG4gICAgfCBcIlRzaW1cIiAtPiBDUFVUSU1FXG4gICAgfCBcImxvZ1wiIC0+IExPR1xuICAgIHwgXCJzaW5cIiAtPiBTSU5VU1xuICAgIHwgXCJjb3NcIiAtPiBDT1NJTlVTXG4gICAgfCBcInRhblwiIC0+IFRBTlxuICAgIHwgXCJleHBcIiAtPiBFWFBPTkVOVFxuICAgIHwgXCJpbnRcIiAtPiBBQlNcbiAgICB8IFwibW9kXCIgLT4gTU9EXG4gICAgfCBcInNxcnRcIiAtPiBTUVJUXG4gICAgfCBcInRydWVcIiAtPiBUUlVFXG4gICAgfCBcImZhbHNlXCIgLT4gRkFMU0VcbiAgICB8IFwicGlcIiAtPiBGTE9BVCAoMy4xNDE1OTI2NSlcbiAgICB8IFwibWF4XCIgLT4gTUFYXG4gICAgfCBcIm1pblwiIC0+IE1JTlxuICAgIHwgXCJFbWF4XCIgLT4gRU1BWFxuICAgIHwgXCJUbWF4XCIgLT4gVE1BWFxuICAgIHwgXCJub3RcIiAtPiBOT1RcbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gcHJpbWl0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICB9XG4gIHwgJyQnIChpZCBhcyBzKSB7XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBcIkFQUExZXCIgLT4gQVBQTFlcbiAgICB8IFwiREVMXCIgLT4gREVMRVRFXG4gICAgfCBcIkFERFwiIC0+IElOVFJPXG4gICAgfCBcIlNOQVBTSE9UXCIgLT4gU05BUFNIT1RcbiAgICB8IFwiU1RPUFwiIC0+IFNUT1BcbiAgICB8IFwiRElOXCIgLT4gRkxVWFxuICAgIHwgXCJUUkFDS1wiIC0+IFRSQUNLXG4gICAgfCBcIlVQREFURVwiIC0+IEFTU0lHTlxuICAgIHwgXCJQUklOVFwiIC0+IFBSSU5URlxuICAgIHwgXCJQUklOVEZcIiAtPiBQUklOVEZcbiAgICB8IFwiUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG4gICAgfCBcIlJVTlwiIC0+IFJVTlxuICAgIHwgXCJTUEVDSUVTX09GXCIgLT4gU1BFQ0lFU19PRlxuICAgIHwgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gaW50ZXJ2ZW50aW9uOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICB9XG4gIHwgZW9mIHsgbGV4YnVmLkxleGluZy5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgRU9GIH1cbiAgfCBfIGFzIGMgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gY2hhcmFjdGVyOiBcIl5TdHJpbmcubWFrZSAxIGMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSB9XG5cbmFuZCBpbmxpbmVfY29tbWVudCBhY2MgPSBwYXJzZVxuICB8IChbXidcXG4nICcqJyAnXFxcIicgJy8nXSAqKSBhcyB4IHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoJy8nICcvJyBbXidcXHInJ1xcbiddKiBhcyB4KSBlb2xcbiAgICB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgZW9sIGFzIHggeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgnKicgW14nLycgJ1xcbicgJ1xcXCInXSkgYXMgeCB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCcvJyBbXicqJyAnXFxuJyAnXFxcIiddKSBhcyB4IHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAnKicgJy8nIHsgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIH1cbiAgfCBlb2YgeyBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgfVxuICB8ICcqJyAnXFxuJyB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIipcXG5cIjo6YWNjKSBsZXhidWYgfVxuICB8ICgoJyonIHwgJy8nKT8gJ1xcXCInIFteJ1xcbicgJ1xcXCInXSsgJ1xcXCInKSBhcyB4XG4gICAgeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgoJyonIHwgJy8nKT8gJ1xcXCInIFteJ1xcbicgJ1xcXCInXSsgKGVvZiB8ICdcXG4nKSkgYXMgeFxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGluIGNvbW1lbnQ6IFwiXngsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cbiAgfCAnLycgJyonXG4gICAgeyBpbmxpbmVfY29tbWVudCAoXCIqL1wiOjooaW5saW5lX2NvbW1lbnQgW1wiLypcIl0gbGV4YnVmKTo6IGFjYykgbGV4YnVmIH1cbiAgfCAnLycgJ1xcbicgeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIvXFxuXCI6OmFjYykgbGV4YnVmIH1cblxuYW5kIHJlY292ZXJ5ID0gcGFyc2VcbiAgfCBbXidcXHInJ1xcbiddKiAoZW9sIHwgZW9mKSB7TGV4aW5nLm5ld19saW5lIGxleGJ1Zn1cblxue1xuICBsZXQgcmVjIGF1eF9tb2RlbCBlcnIgbGV4ID1cbiAgdHJ5IGxldCBvdXQgPSBLcGFyc2VyNC5tb2RlbCB0b2tlbiBsZXggaW4gKG91dCwgTGlzdC5yZXYgZXJyKVxuICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIGUgLT5cbiAgICBsZXQgKCkgPSByZWNvdmVyeSBsZXggaW5cbiAgICBhdXhfbW9kZWwgKGU6OmVycikgbGV4XG5cbiAgbGV0IG1vZGVsIGxleCA9IGF1eF9tb2RlbCBbXSBsZXhcblxuICBsZXQgY29tcGlsZSBsb2dnZXIgY29tcGlsIGZpYyA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpYyBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgIHtsZXhidWYuTGV4aW5nLmxleF9jdXJyX3Agd2l0aCBMZXhpbmcucG9zX2ZuYW1lID0gZmljfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWMgOjogY29tcGlsLkFzdC5maWxlbmFtZXMgfSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpYyBpblxuICAgIGxldCAob3V0LGVycikgPSBtb2RlbCBsZXhidWYgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgIGxldCAoKSA9IG1hdGNoIGVyciB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IChtc2cscG9zKTo6XyAtPlxuICAgICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgICBleGl0IDMgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgQ3N0LmFwcGVuZF90b19hc3RfY29tcGlsIG91dCBjb21waWxcbn1cbiIsIiMgOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gXG5vcGVuIEtwYXJzZXI0XG5cbiBsZXQga2V5d29yZF9vcl9pZCA9XG4gbGV0IGtleXdvcmRzID0gSGFzaHRibC5jcmVhdGUgMTUgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImRvXCIgRE8gaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5cbiMgMTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMDlcXDI1NVxcMjEwXFwyNTVcXDA2MlxcMDAwXFwxMjRcXDAwMFxcMjA5XFwwMDBcXDAzM1xcMDAxXFwyMzdcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTEyXFwwMDFcXDIyM1xcMjU1XFwyMjRcXDI1NVxcMjI3XFwyNTVcXDIyOVxcMjU1XFwyMzBcXDI1NVxcMTczXFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDIzNFxcMjU1XFwyMzVcXDI1NVxcMjM2XFwyNTVcXDAzMVxcMDAyXFwyMzhcXDI1NVxcMjM5XFwyNTVcXDI0MFxcMjU1XFxcbiAgICBcXDI0MVxcMjU1XFwyNDJcXDI1NVxcMjQzXFwyNTVcXDI0NFxcMjU1XFwwMDFcXDAwMFxcMjA2XFwwMDBcXDAyOVxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwyNTFcXDI1NVxcMjQwXFwwMDBcXDI1M1xcMjU1XFwwMDFcXDAwMFxcMjA2XFwwMDBcXDI1NFxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDI1MFxcMjU1XFwyNDlcXDI1NVxcMjQ1XFwyNTVcXDA5MlxcMDAwXFwyNDhcXDI1NVxcMjQ2XFwyNTVcXDE0NVxcMDAyXFxcbiAgICBcXDIyNVxcMDAyXFwxNzFcXDAwMVxcMDMyXFwwMDJcXDA4M1xcMDAzXFwyMTRcXDI1NVxcMjEzXFwyNTVcXDE5N1xcMDAzXFwyMTJcXDI1NVxcXG4gICAgXFwwNjNcXDAwMlxcMDczXFwwMDNcXDI1NVxcMDAxXFwxNDRcXDAwMVxcMDI1XFwwMDJcXDAyMVxcMDA0XFwxMDBcXDAwNFxcMTE1XFwwMDJcXFxuICAgIFxcMTMwXFwwMDJcXDA0OFxcMDAzXFwxNzdcXDAwMFxcMjE4XFwyNTVcXDIyMFxcMjU1XFwyMTlcXDI1NVxcMDgzXFwwMDNcXDIxN1xcMjU1XFxcbiAgICBcXDEzN1xcMDA0XFwyMTdcXDAwNFxcMDQxXFwwMDVcXDIxNVxcMjU1XFwxMjFcXDAwNVxcMjAxXFwwMDVcXDAyNVxcMDA2XFwxOTdcXDAwM1xcXG4gICAgXFwwODRcXDAwM1xcMjQ5XFwyNTVcXDEzNFxcMDA0XFwyNTNcXDI1NVxcMTM4XFwwMDZcXDEzOVxcMDA2XFwxNDBcXDAwNlxcMjQ0XFwyNTVcXFxuICAgIFxcMjQ1XFwyNTVcXDI1MVxcMjU1XFwwMTNcXDAwMFxcMjU0XFwyNTVcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMjQ4XFwyNTVcXDI1MFxcMjU1XFxcbiAgICBcXDI1MlxcMjU1XFwxOThcXDAwM1xcMjQ2XFwyNTVcXDI0N1xcMjU1XFwyMDdcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwMzlcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMzBcXDAwMFxcMDIyXFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM5XFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMDQ0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcwXFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg1XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzOVxcMDAwXFwwMzVcXDAwMFxcMDkxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwwOTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDMyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDMxXFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjFcXDAwMFxcMDEzXFwwMDBcXDAxNFxcMDAwXFwwMjRcXDAwMFxcMDI4XFwwMDBcXDAxNlxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMjdcXDAwMFxcMDI2XFwwMDBcXDAyOVxcMDAwXFwwMTBcXDAwMFxcMDExXFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcMDE5XFwwMDBcXDAxMlxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMThcXDAwMFxcMDMwXFwwMDBcXDAxN1xcMDAwXFwwMDZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA0MlxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2N1xcMDAwXFwwNzdcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNjhcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMTAyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDM3XFwwMDBcXDAzM1xcMDAwXFwwNzNcXDAwMFxcMDQ0XFwwMDBcXDAwNVxcMDAwXFwwMzhcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMzlcXDAwMFxcMDQzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA2M1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDQ4XFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTFcXDAwMFxcMDcxXFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU2XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDA5OFxcMDAwXFwwNDhcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA5NVxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDA5OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU4XFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODNcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFxcbiAgICBcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDkwXFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDMwXFwwMDBcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDY2XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwxMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMzZcXDAwMFxcMDMzXFwwMDBcXDAwNFxcMDAwXFwwMjlcXDAwMFxcMDA1XFwwMDBcXDAzNlxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAzOFxcMDAwXFwwMjlcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDkzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwOFxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDA5XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwNTBcXDAwMFxcMDU4XFwwMDBcXDAxNVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNThcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNTZcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXFxuICAgIFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDA1NlxcMDAwXFwwMjBcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA1MVxcMDAwXFwwNzBcXDAwMFxcMDgwXFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFwwNzBcXDAwMFxcMDgwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA1MVxcMDAwXFwwNzlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc5XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzlcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDgyXFwwMDBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMFxcMDgyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFwwNzlcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzJcXDAwMFxcMjU1XFwyNTVcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDczXFwwMDBcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzZcXDAwMFxcMjU1XFwyNTVcXDA3NlxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzZcXDAwMFxcMjU1XFwyNTVcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwyNTVcXDI1NVxcMDc4XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3OFxcMDAwXFwyNTVcXDI1NVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDE2NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMlxcMDAxXFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDY2XFwwMDBcXDAzOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDkwXFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMDkwXFwwMDBcXDA5M1xcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwODRcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDcwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDA0OFxcMDAwXFwwNjZcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDkzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXFwyNTVcXDAwMlxcMjU1XFwyNTVcXDAwNlxcMjU1XFwyNTVcXDAwNVxcMjU1XFwyNTVcXDAwNFxcMjU1XFwyNTVcXDAwM1xcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDNcXDI1NVxcMDAwXFwwMDJcXDAwMVxcMDA0XFwyNTVcXDAwMFxcMDA1XFwyNTVcXDAwMFxcMDA2XFwyNTVcXDAwMVxcMjU1XFxcbiAgICBcXDI1NVxcMDAwXFwwMDFcXDI1NVwiO1xufVxuXG5sZXQgcmVjIHRva2VuIGxleGJ1ZiA9XG4gIGxleGJ1Zi5MZXhpbmcubGV4X21lbSA8LSBBcnJheS5tYWtlIDcgKC0xKTsgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5uZXdfZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzXG4jIDc1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGluXG4jIDM1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWY7IENPTU1FTlQgcylcbiMgNzYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAoQ09NTUVOVCAoaW5saW5lX2NvbW1lbnQgW10gbGV4YnVmKSlcbiMgNzY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgTkVXTElORSApXG4jIDc3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICB4XG4jIDc3OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICggU1BBQ0UgeCApXG4jIDc4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQgLT5cbiMgMzkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNIQVJQIClcbiMgNzg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIEFORCApXG4jIDc5MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDYgLT5cbiMgNDEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBPUiApXG4jIDc5OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDcgLT5cbiMgNDIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICggTFJBUiApXG4jIDgwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDggLT5cbiMgNDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKExBUilcbiMgODA4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgOSAtPlxuIyA0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIFJBUiApXG4jIDgxMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEwIC0+XG4jIDQ1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggRElGRiApXG4jIDgxOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDExIC0+XG4jIDQ2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDT0xPTiApXG4jIDgyMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEyIC0+XG4jIDQ3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTRU1JQ09MT04gKVxuIyA4MjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQVQgKVxuIyA4MzMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA0OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ09NTUEgKVxuIyA4MzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA1MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoQkFDS1NMQVNIKVxuIyA4NDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA1MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggT1BfUEFSIClcbiMgODQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTcgLT5cbiMgNTIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENMX1BBUiApXG4jIDg1MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE4IC0+XG4jIDUzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBPUF9CUkEgKVxuIyA4NTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxOSAtPlxuIyA1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ0xfQlJBIClcbiMgODYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjAgLT5cbiMgNTUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE9QX0NVUiApXG4jIDg2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIxIC0+XG4jIDU2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDTF9DVVIgKVxuIyA4NzMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMiAtPlxuIyA1NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggUElQRSApXG4jIDg3OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIzIC0+XG4jIDU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBET1QgKVxuIyA4ODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNCAtPlxuIyA1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggVU5ERVJTQ09SRSApXG4jIDg4OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI1IC0+XG4jIDYwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQTFVTIClcbiMgODkzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjYgLT5cbiMgNjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE1VTFQgKVxuIyA4OTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNyAtPlxuIyA2MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggTUlOVVMgKVxuIyA5MDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyOCAtPlxuIyA2MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggUE9XIClcbiMgOTA4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjkgLT5cbiMgNjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIERJViApXG4jIDkxMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMwIC0+XG4jIDY1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTTUFMTEVSIClcbiMgOTE4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzEgLT5cbiMgNjYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIEdSRUFURVIgKVxuIyA5MjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMiAtPlxuIyA2NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggRVFVQUwgKVxuIyA5MjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMyAtPlxubGV0XG4jIDY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIG5cbiMgOTM0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBJTlQgKGludF9vZl9zdHJpbmcgbikgKVxuIyA5MzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzNCAtPlxubGV0XG4jIDY5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgIGZcbiMgOTQ0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDY5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgKCBGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpIClcbiMgOTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzUgLT5cbmxldFxuIyA3MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDk1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgNzAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTEFCRUwoeCkgKVxuIyA5NTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzNiAtPlxubGV0XG4jIDcxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgOTY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA3MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTVFJJTkcoeCkgKVxuIyA5NjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzNyAtPlxubGV0XG4jIDcyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgOTc0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgNzMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgbGFiZWw6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgOTgxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzggLT5cbmxldFxuIyA3NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzXG4jIDk4NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGluXG4jIDc4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZzogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyA5OTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzOSAtPlxubGV0XG4jIDgyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICBzdHJcbiMgMTAwMCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA4MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICgga2V5d29yZF9vcl9pZCBzdHIgKVxuIyAxMDA0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDAgLT5cbmxldFxuIyA4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICBsYWJcbiMgMTAxMCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcImFnZW50XCIgLT4gU0lHTkFUVVJFXG4gICAgfCBcImluaXRcIiAtPiBJTklUXG4gICAgfCBcInZhclwiIC0+IExFVFxuICAgIHwgXCJwbG90XCIgLT4gUExPVFxuICAgIHwgXCJtb2RcIiAtPiBQRVJUXG4gICAgfCBcIm9ic1wiIC0+IE9CU1xuICAgIHwgXCJkZWZcIiAtPiBDT05GSUdcbiAgICB8IFwidG9rZW5cIiAtPiBUT0tFTlxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBkaXJlY3RpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIClcbiMgMTAyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQxIC0+XG4jIDk4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVEhFTiApXG4jIDEwMzMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MiAtPlxuIyA5OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEVMU0UgKVxuIyAxMDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDMgLT5cbmxldFxuIyAxMDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYlxuIyAxMDQ0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDEpIGluXG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJFXCIgLT4gRVZFTlRcbiAgICB8IFwiRS1cIiAtPiBOVUxMX0VWRU5UXG4gICAgfCBcIlRcIiAtPiBUSU1FXG4gICAgfCBcIlRzaW1cIiAtPiBDUFVUSU1FXG4gICAgfCBcImxvZ1wiIC0+IExPR1xuICAgIHwgXCJzaW5cIiAtPiBTSU5VU1xuICAgIHwgXCJjb3NcIiAtPiBDT1NJTlVTXG4gICAgfCBcInRhblwiIC0+IFRBTlxuICAgIHwgXCJleHBcIiAtPiBFWFBPTkVOVFxuICAgIHwgXCJpbnRcIiAtPiBBQlNcbiAgICB8IFwibW9kXCIgLT4gTU9EXG4gICAgfCBcInNxcnRcIiAtPiBTUVJUXG4gICAgfCBcInRydWVcIiAtPiBUUlVFXG4gICAgfCBcImZhbHNlXCIgLT4gRkFMU0VcbiAgICB8IFwicGlcIiAtPiBGTE9BVCAoMy4xNDE1OTI2NSlcbiAgICB8IFwibWF4XCIgLT4gTUFYXG4gICAgfCBcIm1pblwiIC0+IE1JTlxuICAgIHwgXCJFbWF4XCIgLT4gRU1BWFxuICAgIHwgXCJUbWF4XCIgLT4gVE1BWFxuICAgIHwgXCJub3RcIiAtPiBOT1RcbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gcHJpbWl0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICApXG4jIDEwNzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0NCAtPlxubGV0XG4jIDEyNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICBzXG4jIDEwODAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTI3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgIChcbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFwiQVBQTFlcIiAtPiBBUFBMWVxuICAgIHwgXCJERUxcIiAtPiBERUxFVEVcbiAgICB8IFwiQUREXCIgLT4gSU5UUk9cbiAgICB8IFwiU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuICAgIHwgXCJTVE9QXCIgLT4gU1RPUFxuICAgIHwgXCJESU5cIiAtPiBGTFVYXG4gICAgfCBcIlRSQUNLXCIgLT4gVFJBQ0tcbiAgICB8IFwiVVBEQVRFXCIgLT4gQVNTSUdOXG4gICAgfCBcIlBSSU5UXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBSSU5URlwiIC0+IFBSSU5URlxuICAgIHwgXCJQTE9URU5UUllcIiAtPiBQTE9URU5UUllcbiAgICB8IFwiUlVOXCIgLT4gUlVOXG4gICAgfCBcIlNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG4gICAgfCBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBpbnRlcnZlbnRpb246IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIClcbiMgMTEwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQ1IC0+XG4jIDE0NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggbGV4YnVmLkxleGluZy5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgRU9GIClcbiMgMTEwOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQ2IC0+XG5sZXRcbiMgMTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgIGNcbiMgMTExNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGNoYXJhY3RlcjogXCJeU3RyaW5nLm1ha2UgMSBjLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkgKVxuIyAxMTIxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBpbmxpbmVfY29tbWVudCBhY2MgbGV4YnVmID1cbiAgbGV4YnVmLkxleGluZy5sZXhfbWVtIDwtIEFycmF5Lm1ha2UgMiAoLTEpOyBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgYWNjIGxleGJ1ZiA3OVxuYW5kIF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBhY2MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLm5ld19lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAxNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExMzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgMTU1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTQ0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgMTU2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyIC0+XG5sZXRcbiMgMTU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgeFxuIyAxMTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMyAtPlxubGV0XG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGluXG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQgLT5cbmxldFxuIyAxNTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTc0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBpblxuIyAxNTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE2MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAoIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSApXG4jIDExODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE2MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIClcbiMgMTE4OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDcgLT5cbiMgMTYyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIipcXG5cIjo6YWNjKSBsZXhidWYgKVxuIyAxMTkzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgOCAtPlxubGV0XG4jIDE2MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTk5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMjAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgOSAtPlxubGV0XG4jIDE2NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDEyMDkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTY2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZyBpbiBjb21tZW50OiBcIl54LFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDEyMTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAxNzEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggaW5saW5lX2NvbW1lbnQgKFwiKi9cIjo6KGlubGluZV9jb21tZW50IFtcIi8qXCJdIGxleGJ1Zik6OiBhY2MpIGxleGJ1ZiApXG4jIDEyMjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAxNzIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiL1xcblwiOjphY2MpIGxleGJ1ZiApXG4jIDEyMjYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBhY2MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWNvdmVyeSBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVjb3ZlcnlfcmVjIGxleGJ1ZiAxMDBcbmFuZCBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZilcbiMgMTIzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVjb3ZlcnlfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gXG4gIGxldCByZWMgYXV4X21vZGVsIGVyciBsZXggPVxuICB0cnkgbGV0IG91dCA9IEtwYXJzZXI0Lm1vZGVsIHRva2VuIGxleCBpbiAob3V0LCBMaXN0LnJldiBlcnIpXG4gIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgZSAtPlxuICAgIGxldCAoKSA9IHJlY292ZXJ5IGxleCBpblxuICAgIGF1eF9tb2RlbCAoZTo6ZXJyKSBsZXhcblxuICBsZXQgbW9kZWwgbGV4ID0gYXV4X21vZGVsIFtdIGxleFxuXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmljID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmljIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAge2xleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCB3aXRoIExleGluZy5wb3NfZm5hbWUgPSBmaWN9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpYyA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmljIGluXG4gICAgbGV0IChvdXQsZXJyKSA9IG1vZGVsIGxleGJ1ZiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgbGV0ICgpID0gbWF0Y2ggZXJyIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgKG1zZyxwb3MpOjpfIC0+XG4gICAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICAgIGV4aXQgMyBpblxuICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICBDc3QuYXBwZW5kX3RvX2FzdF9jb21waWwgb3V0IGNvbXBpbFxuXG4jIDEyNzIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIGl0ZW0gPSB7IHJhbms6IGludDsgY29udGVudDogc3RyaW5nIH1cblxudHlwZSBjYXRhbG9nID0ge1xuICBlbGVtZW50czogKHN0cmluZywgaXRlbSkgSGFzaHRibC50O1xuICBpbmRleDogc3RyaW5nIG9wdGlvbiBNb2RzLkR5bkFycmF5LnQ7XG4gIGFzdDogQXN0LnBhcnNpbmdfY29tcGlsIG9wdGlvbiByZWY7XG59XG5cbnR5cGUgY2F0YWxvZ19pdGVtID0geyBwb3NpdGlvbjogaW50OyBpZDogc3RyaW5nIH1cblxubGV0IHdyaXRlX2NhdGFsb2dfaXRlbSBvYiB7IHBvc2l0aW9uOyBpZCB9ID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcImlkXCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBpZCBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInBvc2l0aW9uXCIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBwb3NpdGlvbiBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCByZWFkX2NhdGFsb2dfaXRlbSBwIGxiID1cbiAgbGV0IHBvc2l0aW9uLCBpZCwgY291bnQgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAocG9zLCBpLCBjKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInBvc2l0aW9uXCIgdGhlblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiLCBpLCBzdWNjIGNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImlkXCIpIGluXG4gICAgICAgICAgcG9zLCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgc3VjYyBjXG4gICAgICAgICkpXG4gICAgICAoLTEsIFwiXCIsIDApIHAgbGJcbiAgaW5cbiAgbGV0ICgpID0gYXNzZXJ0IChjb3VudCA9IDIpIGluXG4gIHsgcG9zaXRpb247IGlkIH1cblxubGV0IGNyZWF0ZSAoKSA9XG4gIHtcbiAgICBlbGVtZW50cyA9IEhhc2h0YmwuY3JlYXRlIDE7XG4gICAgaW5kZXggPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSAxIE5vbmU7XG4gICAgYXN0ID0gcmVmIE5vbmU7XG4gIH1cblxubGV0IHB1dCB+cG9zaXRpb246cmFuayB+aWQgfmNvbnRlbnQgY2F0YWxvZyA9XG4gIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBjYXRhbG9nLmVsZW1lbnRzIGlkIHsgcmFuazsgY29udGVudCB9IGluXG4gIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IGNhdGFsb2cuaW5kZXggcmFuayB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggcmFuayAoU29tZSBpZCkgaW5cbiAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBOb25lIGluXG4gICAgUmVzdWx0Lk9rICgpXG4gIHwgU29tZSBhaWUgLT5cbiAgICBSZXN1bHQuRXJyb3JcbiAgICAgIChcIlNsb3QgXCIgXiBzdHJpbmdfb2ZfaW50IHJhbmsgXiBcIiBpcyBub3QgYXZhaWxhYmxlLiBUaGVyZSBpcyBhbHJlYWR5IFwiXG4gICAgIF4gYWllKVxuXG5sZXQgZmlsZV9jcmVhdGUgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nID1cbiAgaWYgSGFzaHRibC5tZW0gY2F0YWxvZy5lbGVtZW50cyBpZCB0aGVuXG4gICAgUmVzdWx0LkVycm9yXG4gICAgICAoXCJBIGZpbGUgY2FsbGVkIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgY2F0YWxvZ1wiKVxuICBlbHNlXG4gICAgcHV0IH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZ1xuXG5sZXQgZmlsZV9tb3ZlIH5wb3NpdGlvbiB+aWQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIk1pc3NpbmcgZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIiBpbiB0aGUgY2F0YWxvZ1wiKVxuICB8IF8gOjogXyA6OiBfIC0+IFJlc3VsdC5FcnJvciBcIkZpbGUgY2F0YWxvZyBoYXMgc2VyaW91cyBwcm9ibGVtc1wiXG4gIHwgWyB7IHJhbms7IGNvbnRlbnQgfSBdIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIE5vbmUgaW5cbiAgICBwdXQgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG5cbmxldCBmaWxlX3BhdGNoIH5pZCBjb250ZW50IGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJVbmtub3duIGZpbGUgXFxcIlwiIF4gaWQgXiBcIlxcXCJcIilcbiAgfCBfIDo6IF8gOjogXyAtPiBSZXN1bHQuRXJyb3IgXCJTZXJpb3VzIHByb2JsZW1zIGluIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IF8gfSBdIC0+XG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGNhdGFsb2cuZWxlbWVudHMgaWQgeyByYW5rOyBjb250ZW50IH0gaW5cbiAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBOb25lIGluXG4gICAgUmVzdWx0Lk9rICgpXG5cbmxldCBmaWxlX2RlbGV0ZSB+aWQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIk5vIGZpbGUgXFxcIlwiIF4gaWQgXiBcIlxcXCJcIilcbiAgfCBfIDo6IF8gOjogXyAtPiBmYWlsd2l0aCBcIkJpZyB0cm91YmxlcyBpbiBmaWxlIGNhdGFsb2dcIlxuICB8IFsgeyByYW5rOyBfIH0gXSAtPlxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggcmFuayBOb25lIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZW1vdmUgY2F0YWxvZy5lbGVtZW50cyBpZCBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcblxubGV0IGZpbGVfZ2V0IH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiRmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIiBkb2VzIG5vdCBleGlzdFwiKVxuICB8IF8gOjogXyA6OiBfIC0+IFJlc3VsdC5FcnJvciBcIkNvcnJ1cHRlZCBmaWxlIGNhdGFsb2dcIlxuICB8IFsgeyByYW5rOyBjb250ZW50IH0gXSAtPiBSZXN1bHQuT2sgKGNvbnRlbnQsIHJhbmspXG5cbmxldCBjYXRhbG9nIGNhdGFsb2cgPVxuICBNb2RzLkR5bkFycmF5LmZvbGRfcmlnaHRpXG4gICAgKGZ1biBwb3NpdGlvbiB4IGFjYyAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgaWQgLT4geyBwb3NpdGlvbjsgaWQgfSA6OiBhY2MpXG4gICAgY2F0YWxvZy5pbmRleCBbXVxuXG5sZXQgcGFyc2UgeWllbGQgY2F0YWxvZyA9XG4gIG1hdGNoICEoY2F0YWxvZy5hc3QpIHdpdGhcbiAgfCBTb21lIGNvbXBpbGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgY29tcGlsZSlcbiAgfCBOb25lIC0+XG4gICAgTW9kcy5EeW5BcnJheS5mb2xkX3JpZ2h0aVxuICAgICAgKGZ1biBfIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGZpbGUgPSBIYXNodGJsLmZpbmQgY2F0YWxvZy5lbGVtZW50cyB4IGluXG4gICAgICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBmaWxlLmNvbnRlbnQgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICAgICAgICAgIHsgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIHdpdGggTGV4aW5nLnBvc19mbmFtZSA9IHggfVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWNjID4+PSBmdW4gKGNvbXBpbGUsIGVycikgLT5cbiAgICAgICAgICBsZXQgY29tcGlsZSA9XG4gICAgICAgICAgICB7IGNvbXBpbGUgd2l0aCBBc3QuZmlsZW5hbWVzID0geCA6OiBjb21waWxlLkFzdC5maWxlbmFtZXMgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgTHd0LmNhdGNoXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC53cmFwMSBLbGV4ZXI0Lm1vZGVsIGxleGJ1ZiA+Pj0gZnVuIChpbnN0cywgZXJyJykgLT5cbiAgICAgICAgICAgICAgeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChDc3QuYXBwZW5kX3RvX2FzdF9jb21waWwgaW5zdHMgY29tcGlsZSwgZXJyJyBAIGVycikpXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpXG4gICAgICAgICAgICAgIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAobWVzc2FnZSwgcmFuZ2UpXG4gICAgICAgICAgICAgIHwgRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgTHd0LnJldHVybiAoY29tcGlsZSwgKG1lc3NhZ2UsIHJhbmdlKSA6OiBlcnIpXG4gICAgICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBlcnJvciAtPlxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICggY29tcGlsZSxcbiAgICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKFwiUnVudGltZSBlcnJvciBcIiBeIGVycm9yKSA6OiBlcnIgKVxuICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gUHJpbnRleGMudG9fc3RyaW5nIGV4biBpblxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKGNvbXBpbGUsIExvYy5hbm5vdF93aXRoX2R1bW15IG1lc3NhZ2UgOjogZXJyKSkpXG4gICAgICBjYXRhbG9nLmluZGV4XG4gICAgICAoTHd0LnJldHVybiAoQXN0LmVtcHR5X2NvbXBpbCwgW10pKVxuICAgID4+PSAoIGZ1bmN0aW9uXG4gICAgfCBjb21waWxlLCBbXSAtPlxuICAgICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gU29tZSBjb21waWxlIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBjb21waWxlKVxuICAgIHwgXywgZXJyIC0+XG4gICAgICBsZXQgZXJyID1cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuICgodGV4dCwgcCkgYXMgeCkgLT5cbiAgICAgICAgICAgIGxldCByYW5nZSA9XG4gICAgICAgICAgICAgIGlmIExvYy5pc19hbm5vdGVkX3dpdGhfZHVtbXkgeCB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgU29tZSBwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7IHJhbmdlOyB0ZXh0IH0pXG4gICAgICAgICAgZXJyXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZXJyKSApXG5cbmxldCBvdmVyd3JpdGUgZmlsZW5hbWUgYXN0IGNhdGFsb2cgPVxuICBsZXQgY29udGVudCA9IEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgQXN0LnByaW50X3BhcnNpbmdfY29tcGlsX2thcHBhIGFzdCBpblxuICBsZXQgaXQgPSB7IHJhbmsgPSAwOyBjb250ZW50IH0gaW5cbiAgbGV0ICgpID0gSGFzaHRibC5yZXNldCBjYXRhbG9nLmVsZW1lbnRzIGluXG4gIGxldCAoKSA9IEhhc2h0YmwuYWRkIGNhdGFsb2cuZWxlbWVudHMgZmlsZW5hbWUgaXQgaW5cbiAgbGV0ICgpID1cbiAgICBNb2RzLkR5bkFycmF5Lml0ZXJpXG4gICAgICAoZnVuIGkgXyAtPiBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IGkgTm9uZSlcbiAgICAgIGNhdGFsb2cuaW5kZXhcbiAgaW5cbiAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCAwIChTb21lIGZpbGVuYW1lKSBpblxuICBjYXRhbG9nLmFzdCA6PSBTb21lIGFzdFxuIiwidHlwZSB0b2tlbiA9XG4gIHwgRU9GXG4gIHwgTkVXTElORVxuICB8IFNFTUlDT0xPTlxuICB8IENPTU1BXG4gIHwgRE9UXG4gIHwgT1BfUEFSXG4gIHwgQ0xfUEFSXG4gIHwgT1BfQ1VSXG4gIHwgQ0xfQ1VSXG4gIHwgQVRcbiAgfCBUWVBFXG4gIHwgTEFSXG4gIHwgQ1BVVElNRVxuICB8IEVNQVhcbiAgfCBUTUFYXG4gIHwgUExPVEVOVFJZXG4gIHwgREVMRVRFXG4gIHwgSU5UUk9cbiAgfCBUUkFDS1xuICB8IERPXG4gIHwgU0VUXG4gIHwgUkVQRUFUXG4gIHwgU1BFQ0lFU19PRlxuICB8IFVOVElMXG4gIHwgTE9HXG4gIHwgUExVU1xuICB8IE1VTFRcbiAgfCBNSU5VU1xuICB8IE1BWFxuICB8IE1JTlxuICB8IERJVlxuICB8IFNJTlVTXG4gIHwgQ09TSU5VU1xuICB8IFRBTlxuICB8IFBPV1xuICB8IEFCU1xuICB8IE1PRFVMT1xuICB8IFNRUlRcbiAgfCBFWFBPTkVOVFxuICB8IElORklOSVRZXG4gIHwgVElNRVxuICB8IEVWRU5UXG4gIHwgTlVMTF9FVkVOVFxuICB8IFBJUEVcbiAgfCBFUVVBTFxuICB8IEFORFxuICB8IE9SXG4gIHwgTk9UXG4gIHwgR1JFQVRFUlxuICB8IFNNQUxMRVJcbiAgfCBUUlVFXG4gIHwgRkFMU0VcbiAgfCBESUZGXG4gIHwgS0FQUEFfUkFSXG4gIHwgS0FQUEFfTFJBUlxuICB8IEtBUFBBX0xOS1xuICB8IFNJR05BVFVSRVxuICB8IElOSVRcbiAgfCBMRVRcbiAgfCBQTE9UXG4gIHwgUEVSVFxuICB8IE9CU1xuICB8IFRPS0VOXG4gIHwgQ09ORklHXG4gIHwgS0FQUEFfV0xEXG4gIHwgS0FQUEFfU0VNSVxuICB8IEZMVVhcbiAgfCBBU1NJR05cbiAgfCBQUklOVEZcbiAgfCBTVE9QXG4gIHwgU05BUFNIT1RcbiAgfCBSVU5cbiAgfCBUSEVOXG4gIHwgRUxTRVxuICB8IEFMQVJNXG4gIHwgQVBQTFlcbiAgfCBJTlQgb2YgKGludClcbiAgfCBJRCBvZiAoc3RyaW5nKVxuICB8IEtBUFBBX01SSyBvZiAoc3RyaW5nKVxuICB8IExBQkVMIG9mIChzdHJpbmcpXG4gIHwgRkxPQVQgb2YgKGZsb2F0KVxuICB8IFNUUklORyBvZiAoc3RyaW5nKVxuXG5vcGVuIFBhcnNpbmc7O1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIGxldCBhZGRfcG9zIHggPVxuICAgICh4LExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MgKCkpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgTG9jLm9mX3BvcyAoUGFyc2luZy5yaHNfc3RhcnRfcG9zIGkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGkpXG4jIDkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gICAgMCAoKiBFT0YgKik7XG4gIDI1NyAoKiBORVdMSU5FICopO1xuICAyNTggKCogU0VNSUNPTE9OICopO1xuICAyNTkgKCogQ09NTUEgKik7XG4gIDI2MCAoKiBET1QgKik7XG4gIDI2MSAoKiBPUF9QQVIgKik7XG4gIDI2MiAoKiBDTF9QQVIgKik7XG4gIDI2MyAoKiBPUF9DVVIgKik7XG4gIDI2NCAoKiBDTF9DVVIgKik7XG4gIDI2NSAoKiBBVCAqKTtcbiAgMjY2ICgqIFRZUEUgKik7XG4gIDI2NyAoKiBMQVIgKik7XG4gIDI2OCAoKiBDUFVUSU1FICopO1xuICAyNjkgKCogRU1BWCAqKTtcbiAgMjcwICgqIFRNQVggKik7XG4gIDI3MSAoKiBQTE9URU5UUlkgKik7XG4gIDI3MiAoKiBERUxFVEUgKik7XG4gIDI3MyAoKiBJTlRSTyAqKTtcbiAgMjc0ICgqIFRSQUNLICopO1xuICAyNzUgKCogRE8gKik7XG4gIDI3NiAoKiBTRVQgKik7XG4gIDI3NyAoKiBSRVBFQVQgKik7XG4gIDI3OCAoKiBTUEVDSUVTX09GICopO1xuICAyNzkgKCogVU5USUwgKik7XG4gIDI4MCAoKiBMT0cgKik7XG4gIDI4MSAoKiBQTFVTICopO1xuICAyODIgKCogTVVMVCAqKTtcbiAgMjgzICgqIE1JTlVTICopO1xuICAyODQgKCogTUFYICopO1xuICAyODUgKCogTUlOICopO1xuICAyODYgKCogRElWICopO1xuICAyODcgKCogU0lOVVMgKik7XG4gIDI4OCAoKiBDT1NJTlVTICopO1xuICAyODkgKCogVEFOICopO1xuICAyOTAgKCogUE9XICopO1xuICAyOTEgKCogQUJTICopO1xuICAyOTIgKCogTU9EVUxPICopO1xuICAyOTMgKCogU1FSVCAqKTtcbiAgMjk0ICgqIEVYUE9ORU5UICopO1xuICAyOTUgKCogSU5GSU5JVFkgKik7XG4gIDI5NiAoKiBUSU1FICopO1xuICAyOTcgKCogRVZFTlQgKik7XG4gIDI5OCAoKiBOVUxMX0VWRU5UICopO1xuICAyOTkgKCogUElQRSAqKTtcbiAgMzAwICgqIEVRVUFMICopO1xuICAzMDEgKCogQU5EICopO1xuICAzMDIgKCogT1IgKik7XG4gIDMwMyAoKiBOT1QgKik7XG4gIDMwNCAoKiBHUkVBVEVSICopO1xuICAzMDUgKCogU01BTExFUiAqKTtcbiAgMzA2ICgqIFRSVUUgKik7XG4gIDMwNyAoKiBGQUxTRSAqKTtcbiAgMzA4ICgqIERJRkYgKik7XG4gIDMwOSAoKiBLQVBQQV9SQVIgKik7XG4gIDMxMCAoKiBLQVBQQV9MUkFSICopO1xuICAzMTEgKCogS0FQUEFfTE5LICopO1xuICAzMTIgKCogU0lHTkFUVVJFICopO1xuICAzMTMgKCogSU5JVCAqKTtcbiAgMzE0ICgqIExFVCAqKTtcbiAgMzE1ICgqIFBMT1QgKik7XG4gIDMxNiAoKiBQRVJUICopO1xuICAzMTcgKCogT0JTICopO1xuICAzMTggKCogVE9LRU4gKik7XG4gIDMxOSAoKiBDT05GSUcgKik7XG4gIDMyMCAoKiBLQVBQQV9XTEQgKik7XG4gIDMyMSAoKiBLQVBQQV9TRU1JICopO1xuICAzMjIgKCogRkxVWCAqKTtcbiAgMzIzICgqIEFTU0lHTiAqKTtcbiAgMzI0ICgqIFBSSU5URiAqKTtcbiAgMzI1ICgqIFNUT1AgKik7XG4gIDMyNiAoKiBTTkFQU0hPVCAqKTtcbiAgMzI3ICgqIFJVTiAqKTtcbiAgMzI4ICgqIFRIRU4gKik7XG4gIDMyOSAoKiBFTFNFICopO1xuICAzMzAgKCogQUxBUk0gKik7XG4gIDMzMSAoKiBBUFBMWSAqKTtcbiAgICAwfF1cblxubGV0IHl5dHJhbnNsX2Jsb2NrID0gW3xcbiAgMzMyICgqIElOVCAqKTtcbiAgMzMzICgqIElEICopO1xuICAzMzQgKCogS0FQUEFfTVJLICopO1xuICAzMzUgKCogTEFCRUwgKik7XG4gIDMzNiAoKiBGTE9BVCAqKTtcbiAgMzM3ICgqIFNUUklORyAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxM1xcMDAwXFxcblxcMDEzXFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFxcblxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcblxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcblxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFxcblxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAxMVxcMDAwXFxcblxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFxcblxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDA0XFwwMDBcXDAyOVxcMDAwXFxcblxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAyNVxcMDAwXFxcblxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMDZcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcblxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFxcblxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFxcblxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFxcblxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFxcblxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzNVxcMDAwXFxcblxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDM2XFwwMDBcXDAyMlxcMDAwXFxcblxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMTRcXDAwMFxcMDE0XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAwOVxcMDAwXFxcblxcMDA5XFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFxcblxcMDM4XFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFxcblxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFxcblxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0NFxcMDAwXFxcblxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcblxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXFxuXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXFxuXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXFxuXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXFxuXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNTBcXDAwMFxcMTUxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAwXFwyMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDNcXDAwMFxcMTAxXFwwMDBcXDEwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwOTdcXDAwMFxcMTA4XFwwMDBcXDEwOVxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwOTlcXDAwMFxcMTA2XFwwMDBcXDEwN1xcMDAwXFwwOThcXDAwMFxcMjA3XFwwMDBcXDAwMFxcMDAwXFwxMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjRcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwxMTJcXDAwMFxcMTEzXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcXG5cXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFwwMTdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5NFxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTFcXDAwMFxcXG5cXDE5OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDExOFxcMDAwXFwxMTlcXDAwMFxcXG5cXDEyMFxcMDAwXFwxMjFcXDAwMFxcMTE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDAyN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFwxNDVcXDAwMFxcMTU1XFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDhcXDAwMFxcMDQ2XFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMFxcXG5cXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDExMVxcMDAwXFwwNjhcXDAwMFxcMTE0XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcXG5cXDEwNFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDZcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNTVcXDAwMFxcMDU5XFwwMDBcXDA0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4NVxcMDAwXFwxODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcXG5cXDA4OFxcMDAwXFwwMDBcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAwXFwwODdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYyXFwwMDBcXDE2NVxcMDAwXFwwMDBcXDAwMFxcMTg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxOTVcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwxMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE2NlxcMDAwXFwwMDBcXDAwMFxcMTYwXFwwMDBcXDAwMFxcMDAwXFwxNjNcXDAwMFxcMTY0XFwwMDBcXDAwMFxcMDAwXFwxNzlcXDAwMFxcXG5cXDAwMFxcMDAwXFwxOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMTkxXFwwMDBcXDE5M1xcMDAwXFwxOTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc2XFwwMDBcXDE5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNjdcXDAwMFxcMTQ4XFwwMDBcXDE4MFxcMDAwXFwwMDBcXDAwMFxcMTgxXFwwMDBcXDE4OFxcMDAwXFwxODlcXDAwMFxcXG5cXDE3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3MVxcMDAwXFwwMDBcXDAwMFxcMTcyXFwwMDBcXDE2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE4MlxcMDAwXFwxNzhcXDAwMFxcMTk0XFwwMDBcXDE3M1xcMDAwXFwxNjlcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDIyXFwwMDBcXDA0N1xcMDAwXFwwNTBcXDAwMFxcMDc4XFwwMDBcXDAyM1xcMDAwXFwwMjRcXDAwMFxcMDc5XFwwMDBcXDAyNVxcMDAwXFxcblxcMDk2XFwwMDBcXDEwMFxcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDIwM1xcMDAwXFwxNjVcXDAwMFxcMTA5XFwwMDBcXDA4MFxcMDAwXFxcblxcMDQ2XFwwMDFcXDA5MlxcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDIyMlxcMDAwXFwwMjZcXDAwMFxcMTQxXFwwMDBcXDA4MlxcMDAwXFxcblxcMDI3XFwwMDBcXDE0MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDAyOFxcMDAwXFwwOTNcXDAwMFxcMTI0XFwwMDBcXDEyMVxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyMTBcXDAwMFxcMDE3XFwwMDFcXDAyOVxcMDAwXFwwMjNcXDAwMVxcMDMwXFwwMDBcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAyNFxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA3NVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDAzXFwwMDJcXFxuXFwwODVcXDAwMlxcMTYwXFwwMDJcXDE0NFxcMjU1XFwyMzRcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDJcXFxuXFwxODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwNFxcMDMyXFwyNTVcXDE0N1xcMDA0XFwyMzNcXDI1NFxcMjAxXFwwMDRcXFxuXFwwMDRcXDI1NVxcMjMzXFwyNTRcXDIxNVxcMjU0XFwyMTdcXDI1NFxcMjEyXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMTZcXDAwMFxcMDA2XFwyNTVcXDEzOFxcMjU1XFwxNzJcXDAwMFxcMDg5XFwyNTVcXDIzMlxcMjU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNDRcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMDA0XFwwNTNcXDAwNVxcMDY0XFwyNTVcXDIxNVxcMDA1XFwyMTVcXDAwNVxcMTA2XFwyNTVcXFxuXFwyMTVcXDAwNVxcMjE1XFwwMDVcXDIxNVxcMDA1XFwxNjFcXDAwNVxcMTQwXFwwMDdcXDA2OFxcMjU1XFwwMDBcXDAwMFxcMDU5XFwyNTVcXFxuXFwxMzdcXDI1NVxcMDAwXFwwMDBcXDEyN1xcMDAwXFwyMzRcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDdcXFxuXFwwODZcXDAwN1xcMTQwXFwwMDdcXDE0MFxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXFxuXFwwODZcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMjU1XFwxNDFcXDI1NVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwyNTVcXFxuXFwwMDBcXDAwMFxcMDMyXFwwMDdcXDAxNVxcMDAxXFwyNTBcXDI1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTBcXDI1NVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjE5XFwyNTVcXDA3NlxcMjU1XFwwMDBcXDAwMFxcMjM0XFwwMDZcXDEwN1xcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODNcXDAwMVxcMjM0XFwwMDZcXDEyOVxcMjU1XFwwMDBcXDAwMFxcMDE4XFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYwXFwyNTVcXFxuXFwyMzRcXDAwNlxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDRcXDE3MlxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDZcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTVcXDAwMFxcMTgyXFwwMDFcXDI0NFxcMjU1XFwyNTFcXDI1NVxcMDAwXFwwMDBcXFxuXFwwMDRcXDAwMVxcMDAwXFwwMDBcXDAwNFxcMDAxXFwxODBcXDAwMFxcMTgwXFwwMDBcXDIzNFxcMDA2XFwwOTZcXDAwMFxcMjQ1XFwyNTVcXFxuXFwxNjJcXDAwM1xcMDkwXFwyNTVcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQ5XFwyNTVcXDEwMVxcMDAxXFwyMzRcXDAwNlxcMDAwXFwwMDBcXDE0NFxcMjU1XFwwMDBcXDAwMFxcMTc0XFwyNTVcXFxuXFwwNDJcXDI1NVxcMDAwXFwwMDBcXDE4MFxcMDAxXFwxNDBcXDAwN1xcMTQwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDI1NVxcMDk5XFwwMDBcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMjM0XFwwMDZcXFxuXFwyMzRcXDAwNlxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMjM0XFwwMDZcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMDg2XFwwMDdcXFxuXFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDAwMFxcMDAwXFwxMjVcXDI1NVxcMTExXFwwMDBcXFxuXFwwODBcXDAwMFxcMTYxXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcMjM0XFwwMDZcXDI0NVxcMjU1XFwyMDZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODNcXDAwMVxcMDAwXFwwMDBcXDIwNlxcMDAwXFwwODNcXDAwMVxcMDAwXFwwMDBcXDE3MFxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwyNTVcXFxuXFwwOTFcXDI1NVxcMTYwXFwyNTVcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTVcXDAwMFxcMjM0XFwwMDZcXFxuXFwxNzVcXDAwMFxcMjE4XFwwMDBcXDAwNlxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTFcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE1XFwwMDVcXFxuXFwxODBcXDAwMFxcMjE1XFwwMDVcXDE4MFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDA4M1xcMDAxXFwyMTVcXDAwNVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwODNcXDAwMVxcMDgzXFwwMDFcXDA4M1xcMDAxXFwyMDdcXDAwMFxcMDAwXFwyNTVcXFxuXFwwODlcXDAwMVxcMTgwXFwwMDFcXDA2NVxcMDAwXFwxODBcXDAwMVxcMDY1XFwwMDBcXDAxNlxcMDAxXFwwMTZcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMVxcMDMyXFwwMDdcXDAwOFxcMjU1XFwwNDNcXDAwMVxcMDUyXFwwMDFcXDA4M1xcMDAxXFwwODBcXDAwMVxcMTQ0XFwyNTVcXFxuXFwxMTdcXDAwMFxcMTQ0XFwyNTVcXDE0NFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMjU1XFwwMDBcXDAwMFxcMDk1XFwwMDBcXFxuXFwwNTBcXDAwMVxcMjM0XFwwMDZcXDEyNlxcMDA2XFwwNzJcXDAwNlxcMDAwXFwwMDBcXDAyN1xcMjU1XFwwODFcXDAwMVxcMDk3XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDExOVxcMDAxXFwxNDBcXDAwN1xcMDMyXFwwMDdcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NlxcMjU1XFwwODVcXDAwMVxcMDA3XFwyNTVcXDEwNVxcMDAxXFwxNDJcXDI1NVxcMDAwXFwwMDBcXFxuXFwxMjFcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAxXFwyMzRcXDAwNlxcMjM0XFwwMDZcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjM0XFwwMDZcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDk2XFwwMDFcXFxuXFwxMjBcXDAwMVxcMjM3XFwwMDBcXDAwMFxcMDAwXFwxNTFcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTFcXDAwMVxcMDkyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI0XFwyNTVcXDAwMFxcMDAwXFwxMjVcXDAwMVxcMDEyXFwyNTVcXFxuXFwwMzFcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDNcXDAwMVxcMTQwXFwyNTVcXDAwMFxcMDAwXFwyMzRcXDAwNlxcMjUwXFwyNTRcXFxuXFwyNTBcXDI1NFxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMjU1XFwxMzNcXDAwMVxcMDIxXFwyNTVcXFxuXFwwMDBcXDAwMFxcMTQzXFwwMDFcXDAwMFxcMDAwXFwxODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMDAwXFwwMDBcXFxuXFwwNTdcXDI1NVxcMDAwXFwwMDBcXDAyMlxcMjU1XFwwMjRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNzdcXDAwMVxcMDM4XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUwXFwyNTRcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMTE4XFwyNTVcXFxuXFwwMjRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTQzXFwwMDFcXDEzOFxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwxNjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDFcXFxuXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODBcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNjlcXDAwMVxcMDk2XFwwMDJcXDA5NlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzJcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0OFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjAyXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzM1xcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDRcXDAwMlxcMDAwXFwwMDBcXFxuXFwwNTdcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY4XFwwMDNcXDAwMFxcMDAwXFwyMTZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAzXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNThcXDAwMFxcMDYyXFwwMDBcXDE2MVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTlcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg1XFwwMDJcXDAzOFxcMDAzXFwxNzhcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc5XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE5XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAyXFwxOThcXDAwMlxcMjEzXFwwMDJcXDI0MVxcMDAyXFwwMDZcXDAwM1xcMDc0XFwwMDNcXFxuXFwwMDBcXDAwMFxcMTUxXFwwMDFcXDE2NFxcMDAwXFwyMzJcXDAwMVxcMjQ1XFwwMDBcXDAwMVxcMDAwXFwwODNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTZcXDAwM1xcMDAwXFwwMDBcXDEyNlxcMjU1XFwwMDBcXDAwMFxcMjIzXFwwMDFcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MVxcMDAzXFwwMDBcXDAwMFxcMTQyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMjU1XFwwMDBcXDAwMFxcMjQxXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwyNTVcXDIyOFxcMjU1XFwyMzdcXDI1NVxcMDAwXFwwMDBcXFxuXFwyMTZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzNcXDAwMFxcMjM3XFwyNTVcXDAwMFxcMDAwXFwyMTlcXDAwMVxcMDAwXFwwMDBcXDEyMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzdcXDI1NVxcMTQ1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDE3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjM3XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjM3XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwyNTVcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwyNDJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDIyOFxcMDAyXFwxMjNcXDAwNFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNlxcMDAyXFwwMDBcXDAwMFxcMDU2XFwwMDJcXDIwMFxcMjU1XFwwMDBcXDAwMFxcMTU5XFwwMDJcXFxuXFwyMjFcXDAwMVxcMDEzXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMTMzXFwyNTVcXDI0N1xcMjU1XFwyMzFcXDI1NVxcMjE3XFwyNTVcXFxuXFwxMzJcXDAwMlxcMjE4XFwyNTVcXDE4OFxcMDA0XFwyMTZcXDAwMlxcMjMzXFwyNTVcXDE2OFxcMjU1XFwxNzFcXDAwMlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAyXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDA0NlxcMjU1XFwwMDBcXDAwMFxcMjUwXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAyXFwxOThcXDI1NVxcMDU0XFwyNTVcXDA2NVxcMjU1XFwwMDBcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDIyNjhcbmxldCB5eXRhYmxlID0gXCJcXDA4OFxcMDAwXFxcblxcMTI5XFwwMDBcXDE4NFxcMDAwXFwxMThcXDAwMFxcMTQzXFwwMDBcXDE0NFxcMDAwXFwxNDdcXDAwMFxcMDM0XFwwMDFcXDAzNFxcMDAxXFxcblxcMTQxXFwwMDBcXDIyM1xcMDAwXFwwNTFcXDAwMFxcMDk4XFwwMDFcXDEzNlxcMDAwXFwxMzhcXDAwMFxcMjI4XFwwMDBcXDAwN1xcMDAwXFxcblxcMDgxXFwwMDBcXDAzNVxcMDAxXFwxNTZcXDAwMFxcMTU3XFwwMDBcXDA5OFxcMDAxXFwxNzJcXDAwMFxcMTE1XFwwMDBcXDExNlxcMDAwXFxcblxcMTA2XFwwMDBcXDExOVxcMDAxXFwwMzRcXDAwMVxcMTMzXFwwMDBcXDIwNlxcMDAwXFwwMzBcXDAwMVxcMTAxXFwwMDFcXDA5NFxcMDAwXFxcblxcMDM2XFwwMDFcXDAxNlxcMDAwXFwxMDJcXDAwMVxcMTExXFwwMDBcXDAzNVxcMDAxXFwwOThcXDAwMVxcMTczXFwwMDBcXDE3NFxcMDAwXFxcblxcMTI3XFwwMDBcXDExMlxcMDAwXFwxOTJcXDAwMFxcMjQwXFwwMDBcXDE3M1xcMDAwXFwxOTdcXDAwMFxcMDIzXFwwMDBcXDIzN1xcMDAwXFxcblxcMTE3XFwwMDBcXDIzMlxcMDAwXFwwOTVcXDAwMVxcMDU2XFwwMDFcXDEyNlxcMDAwXFwxMDFcXDAwMFxcMDY2XFwwMDBcXDEwMlxcMDAwXFxcblxcMTQ2XFwwMDBcXDEzOFxcMDAwXFwwNjVcXDAwMFxcMTQ5XFwwMDBcXDAyNFxcMDAwXFwxMzNcXDAwMFxcMDIyXFwwMDBcXDAyOFxcMDAwXFxcblxcMTUzXFwwMDBcXDE3NVxcMDAwXFwwOTlcXDAwMVxcMTQxXFwwMDBcXDAwOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDE3NVxcMDAwXFxcblxcMjE4XFwwMDBcXDAzM1xcMDAwXFwyMTlcXDAwMFxcMDk5XFwwMDFcXDExMFxcMDAxXFwxMDdcXDAwMFxcMTQ4XFwwMDBcXDIyNVxcMDAwXFxcblxcMTkwXFwwMDBcXDI0MVxcMDAwXFwxMzBcXDAwMFxcMTE3XFwwMDFcXDAzN1xcMDAxXFwwMzdcXDAwMVxcMTczXFwwMDBcXDE3NFxcMDAwXFxcblxcMDEwXFwwMDBcXDEwMFxcMDAxXFwwMTFcXDAwMFxcMTI1XFwwMDBcXDA5OVxcMDAxXFwxNzNcXDAwMFxcMTc0XFwwMDBcXDEwM1xcMDAxXFxcblxcMDA3XFwwMDBcXDEyMFxcMDAxXFwxMTNcXDAwMVxcMDk2XFwwMDFcXDIxMlxcMDAwXFwwMjZcXDAwMVxcMTUzXFwwMDBcXDAyOFxcMDAxXFxcblxcMDM3XFwwMDFcXDA5MVxcMDAxXFwxMDRcXDAwMVxcMTA1XFwwMDFcXDA5NVxcMDAwXFwwMTBcXDAwMVxcMDExXFwwMDFcXDA4OVxcMDAxXFxcblxcMjA1XFwwMDBcXDE3NVxcMDAwXFwyMTFcXDAwMFxcMjEzXFwwMDBcXDIzOFxcMDAwXFwyMzlcXDAwMFxcMTk4XFwwMDBcXDE2OFxcMDAwXFxcblxcMTc1XFwwMDBcXDIwMVxcMDAwXFwwOTBcXDAwMVxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxMTFcXDAwMVxcMTUxXFwwMDBcXDE3MVxcMDAwXFxcblxcMTg0XFwwMDBcXDEwN1xcMDAxXFwyMzZcXDAwMFxcMTg0XFwwMDBcXDExOFxcMDAxXFwwMDdcXDAwMVxcMTg1XFwwMDBcXDE3M1xcMDAwXFxcblxcMTc0XFwwMDBcXDExOVxcMDAwXFwxNTBcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMDhcXDAwMVxcMTMyXFwwMDBcXDExNFxcMDAxXFxcblxcMTI1XFwwMDFcXDE2NlxcMDAwXFwxMjBcXDAwMFxcMTk4XFwwMDBcXDAzM1xcMDAwXFwxODdcXDAwMFxcMTk4XFwwMDBcXDA4MFxcMDAwXFxcblxcMTkxXFwwMDBcXDEyMVxcMDAxXFwxODhcXDAwMFxcMTg0XFwwMDBcXDE2NFxcMDAwXFwyMzVcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFxcblxcMDM2XFwwMDBcXDAzN1xcMDAwXFwxNzVcXDAwMFxcMTI1XFwwMDBcXDEyMlxcMDAxXFwwMzhcXDAwMFxcMTI3XFwwMDFcXDA2NlxcMDAwXFxcblxcMTY4XFwwMDBcXDAzM1xcMDAxXFwyMjdcXDAwMFxcMDcyXFwwMDFcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTk4XFwwMDBcXDEzMFxcMDAxXFxcblxcMTcxXFwwMDBcXDEyOFxcMDAxXFwxNTNcXDAwMFxcMjM2XFwwMDBcXDE4NFxcMDAwXFwxMzNcXDAwMVxcMTM5XFwwMDBcXDAxNVxcMDAxXFxcblxcMTQwXFwwMDBcXDI0N1xcMDAwXFwyNDhcXDAwMFxcMDIxXFwwMDFcXDAwOFxcMDAxXFwxODRcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDI5XFwwMDFcXDEyNlxcMDAxXFwwNzNcXDAwMVxcMTgyXFwwMDBcXDA3M1xcMDAxXFwwMTRcXDAwMVxcMDI1XFwwMDFcXDA2NFxcMDAxXFxcblxcMDI3XFwwMDFcXDE4NlxcMDAwXFwwMTNcXDAwMVxcMDc0XFwwMDFcXDA3NFxcMDAwXFwwNzRcXDAwMVxcMTA2XFwwMDBcXDAwOVxcMDAxXFxcblxcMDc3XFwwMDBcXDAzOVxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMTczXFwwMDBcXDE3NFxcMDAwXFxcblxcMDA5XFwwMDBcXDE2OFxcMDAwXFwwNDVcXDAwMFxcMDU4XFwwMDFcXDA0NlxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDA2NVxcMDAxXFxcblxcMDY2XFwwMDFcXDE3MVxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwxODlcXDAwMFxcMTgzXFwwMDBcXDEwNlxcMDAwXFxcblxcMDkyXFwwMDBcXDE4M1xcMDAwXFwwNzBcXDAwMVxcMTA2XFwwMDBcXDAxMFxcMDAwXFwxMDZcXDAwMFxcMDExXFwwMDBcXDE4N1xcMDAwXFxcblxcMjAyXFwwMDBcXDE3NVxcMDAwXFwxODdcXDAwMFxcMjE0XFwwMDBcXDEyN1xcMDAwXFwxMDZcXDAwMFxcMDQ5XFwwMDFcXDA2M1xcMDAxXFxcblxcMjE1XFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMDY3XFwwMDFcXDA2OFxcMDAxXFwxMDZcXDAwMFxcMDEyXFwwMDBcXDExM1xcMDAwXFxcblxcMjE2XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFxcblxcMTI5XFwwMDBcXDE0MVxcMDAwXFwxMjlcXDAwMFxcMTQxXFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDA0M1xcMDAxXFxcblxcMDA4XFwwMDBcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTA2XFwwMDBcXDEyOVxcMDAwXFxcblxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFxcblxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwMTZcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFxcblxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAyM1xcMDAwXFxcblxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDA2NlxcMDAwXFxcblxcMDgwXFwwMDFcXDA4MVxcMDAxXFwxMzhcXDAwMFxcMDY1XFwwMDBcXDEzOFxcMDAwXFwwMjRcXDAwMFxcMTMzXFwwMDBcXDAyMlxcMDAwXFxcblxcMDI4XFwwMDBcXDIxN1xcMDAwXFwxNzNcXDAwMFxcMTc0XFwwMDBcXDE0MVxcMDAwXFwxMjNcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFxcblxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwMzNcXDAwMFxcMTc0XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTc0XFwwMDBcXDEyOVxcMDAwXFxcblxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMTVcXDAwMVxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTA5XFwwMDFcXDEzMFxcMDAwXFwxNzVcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMwXFwwMDBcXDAwOFxcMDAwXFwxODBcXDAwMFxcMjI0XFwwMDBcXDE4MVxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMDUwXFwwMDFcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAxXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMwXFwwMDBcXDIzMVxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMwXFwwMDBcXDA0NFxcMDAxXFwxNjhcXDAwMFxcMDQ1XFwwMDFcXDE2OFxcMDAwXFwyNDJcXDAwMFxcMTY5XFwwMDBcXDE3MFxcMDAwXFxcblxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxNzFcXDAwMFxcMTQyXFwwMDBcXDE3MVxcMDAwXFwxNDJcXDAwMFxcMTI2XFwwMDBcXDA4MFxcMDAwXFxcblxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMDgwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFxcblxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDA4MFxcMDAwXFwxMjVcXDAwMFxcMDgwXFwwMDBcXDEyNVxcMDAwXFxcblxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxNDNcXDAwMFxcMDE4XFwwMDFcXDE0M1xcMDAwXFwwMTlcXDAwMVxcMTI1XFwwMDBcXDEyNVxcMDAwXFxcblxcMTI1XFwwMDBcXDAwMlxcMDAxXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFxcblxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwwMDNcXDAwMVxcMTI1XFwwMDBcXDAwOVxcMDAwXFxcblxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFxcblxcMTI1XFwwMDBcXDEyNVxcMDAwXFwyNDBcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFxcblxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxNjhcXDAwMFxcMDEwXFwwMDBcXDAyMFxcMDAxXFwwMTFcXDAwMFxcMTY5XFwwMDBcXDE3MFxcMDAwXFxcblxcMTIyXFwwMDBcXDEyM1xcMDAwXFwxNzFcXDAwMFxcMDIyXFwwMDFcXDE0OVxcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyOFxcMDAwXFxcblxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMTdcXDAwMFxcMDkyXFwwMDBcXDEyNVxcMDAwXFxcblxcMTI1XFwwMDBcXDA5MlxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFxcblxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwOTJcXDAwMFxcMTI3XFwwMDBcXDA5MlxcMDAwXFxcblxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDEyN1xcMDAwXFxcblxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwODhcXDAwMVxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFxcblxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTc1XFwwMDBcXDEyN1xcMDAwXFxcblxcMTg1XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFxcblxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDczXFwwMDFcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFxcblxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDU2XFwwMDBcXDA3NFxcMDAxXFwwNTJcXDAwMVxcMDU0XFwwMDFcXDE2OFxcMDAwXFxcblxcMDQwXFwwMDFcXDE4MFxcMDAwXFwwMzJcXDAwMVxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxMDZcXDAwMVxcMDQxXFwwMDFcXDE3MVxcMDAwXFxcblxcMDU3XFwwMDBcXDA1MVxcMDAxXFwxNjhcXDAwMFxcMDgwXFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTY5XFwwMDBcXDE3MFxcMDAwXFxcblxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxNzFcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFxcblxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDczXFwwMDFcXDEyM1xcMDAwXFxcblxcMjE3XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDAwN1xcMDAwXFwwNDJcXDAwMVxcMDU5XFwwMDFcXDA3NFxcMDAxXFxcblxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTg2XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA2MFxcMDAwXFxcblxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYwXFwwMDFcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA2MVxcMDAxXFxcblxcMTIzXFwwMDBcXDAwOVxcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFxcblxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA3N1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFxcblxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA2MlxcMDAxXFwwMTBcXDAwMFxcMTY4XFwwMDBcXDAxMVxcMDAwXFxcblxcMDY5XFwwMDFcXDA3MVxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDE2OFxcMDAwXFwwNzlcXDAwMVxcMTcxXFwwMDBcXDA4NFxcMDAxXFxcblxcMTY5XFwwMDBcXDE3MFxcMDAwXFwwODVcXDAwMVxcMDg2XFwwMDFcXDE3MVxcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDAxMlxcMDAwXFxcblxcMDg3XFwwMDFcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTMxXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyNlxcMDAwXFxcblxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDAzMlxcMDAwXFxcblxcMTI2XFwwMDBcXDAzMVxcMDAxXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwOTJcXDAwMVxcMDkzXFwwMDFcXDA5NFxcMDAxXFxcblxcMDk3XFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEwNlxcMDAxXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTEyXFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyM1xcMDAxXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMDM5XFwwMDBcXDEyNlxcMDAwXFwwMDlcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwNzVcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxNzdcXDAwMFxcMDEwXFwwMDBcXDExNlxcMDAxXFxcblxcMDExXFwwMDBcXDE3OVxcMDAwXFwxMjRcXDAwMVxcMTI5XFwwMDFcXDA3NlxcMDAwXFwxODBcXDAwMFxcMTMxXFwwMDFcXDE4MVxcMDAwXFxcblxcMTMyXFwwMDFcXDA2MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDE0OVxcMDAwXFwxNTZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTU5XFwwMDBcXDA2MFxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDE1OFxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFxcblxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMDc4XFwwMDBcXDEyOFxcMDAwXFwxNDlcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTYxXFwwMDBcXDE0NlxcMDAwXFxcblxcMTE0XFwwMDBcXDA4N1xcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMTBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDAxMlxcMDAxXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwNzNcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDE5OVxcMDAwXFwxMjhcXDAwMFxcMDgyXFwwMDFcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMjMzXFwwMDBcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTY3XFwwMDBcXDA5M1xcMDAwXFxcblxcMjA3XFwwMDBcXDA1NVxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDA1N1xcMDAxXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDU2XFwwMDBcXDA4MFxcMDAwXFwwNTZcXDAwMFxcMDg0XFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFxcblxcMDgwXFwwMDBcXDEwNlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA4NlxcMDAwXFxcblxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcblxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNzdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU2XFwwMDBcXDE0N1xcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFxcblxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFxcblxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFxcblxcMTMxXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFxcblxcMDgwXFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDIxXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFxcblxcMTMxXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFxcblxcMDM2XFwwMDBcXDAzN1xcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDEzMVxcMDAwXFxcblxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDc1XFwwMDBcXDEzMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTMxXFwwMDBcXDAzOVxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzVcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDE0NlxcMDAwXFxcblxcMTQ2XFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQ2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXDE0NlxcMDAwXFwwNzVcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDczXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5M1xcMDAwXFxcblxcMDkzXFwwMDBcXDA5M1xcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFxcblxcMDkzXFwwMDBcXDE0NlxcMDAwXFwxNDZcXDAwMFxcMDQwXFwwMDBcXDE0NlxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAwXFwxNzZcXDAwMFxcMTc3XFwwMDBcXDE3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzlcXDAwMFxcMDg0XFwwMDBcXDA4NFxcMDAwXFwwODRcXDAwMFxcMTgwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgxXFwwMDBcXDA4NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFxcblxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDg2XFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDA4NlxcMDAwXFwxMDZcXDAwMFxcMDg2XFwwMDBcXDA3NFxcMDAwXFxcblxcMDg0XFwwMDBcXDA4NFxcMDAwXFwxNDdcXDAwMFxcMTQ3XFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFxcblxcMDAwXFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwxMDZcXDAwMFxcMDkxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk5XFwwMDBcXDAzN1xcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXDAwMFxcMDAwXFxcblxcMTQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjlcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFwyMjZcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXDE0N1xcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFxcblxcMDUwXFwwMDBcXDAwMFxcMDAwXFwxNzZcXDAwMFxcMTc3XFwwMDBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3OVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgwXFwwMDBcXDAwMFxcMDAwXFwxODFcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFxcblxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFxcblxcMTk2XFwwMDBcXDEzN1xcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwxMzdcXDAwMFxcMTM3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMTU0XFwwMDBcXDE1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAwXFxcblxcMTU5XFwwMDBcXDE2MFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjlcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFxcblxcMDU0XFwwMDBcXDA1NVxcMDAwXFwyNDNcXDAwMFxcMjQ0XFwwMDBcXDI0NVxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDI0OVxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFxcblxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwNlxcMDAxXFxcblxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUwXFwwMDBcXDI1MVxcMDAwXFwyNTJcXDAwMFxcMjUzXFwwMDBcXDI1NFxcMDAwXFxcblxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAxXFwwMTZcXDAwMVxcMjA5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcMTM3XFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFxcblxcMDU1XFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA5OFxcMDAwXFxcblxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFxcblxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFxcblxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFxcblxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFxcblxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFxcblxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFxcblxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFxcblxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFxcblxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDE5NVxcMDAwXFxcblxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFxcblxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFxcblxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFxcblxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFxcblxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDIwMFxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDEzNVxcMDAwXFxcblxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFxcblxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFxcblxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFxcblxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFxcblxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFxcblxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFxcblxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDI2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFxcblxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFxcblxcMDI2XFwwMDBcXDA1NlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFxcblxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFxcblxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFxcblxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFxcblxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFxcblxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFxcblxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMDAwXFxcblxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwOTBcXDAwMFxcMDI2XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMFxcMDAwXFwxMzNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAxXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMTBcXDAwMVxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyMVxcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAzN1xcMDAwXFwxMTdcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAyNVxcMDAxXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDA3N1xcMDAxXFwwMTBcXDAwMVxcMDAwXFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDAzM1xcMDAwXFwwODFcXDAwMVxcMDk5XFwwMDBcXDAwNVxcMDAxXFwwNDVcXDAwMVxcMTAyXFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMVxcXG5cXDA0M1xcMDAxXFwwMDFcXDAwMVxcMDI3XFwwMDFcXDAyNVxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwNzlcXDAwMVxcXG5cXDA0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1MlxcMDAwXFwwNzJcXDAwMVxcMDU1XFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcXG5cXDEyOVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDA1NVxcMDAxXFwwMjdcXDAwMVxcMDc0XFwwMDFcXDAxMVxcMDAxXFwxMzZcXDAwMFxcXG5cXDAwNVxcMDAxXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAyN1xcMDAxXFwwNzhcXDAwMVxcMDc4XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDAyNVxcMDAxXFwwNzhcXDAwMVxcMDI3XFwwMDFcXDAwM1xcMDAxXFwwNTVcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNjVcXDAwMVxcXG5cXDAwMFxcMDAwXFwwNzZcXDAwMVxcMDc4XFwwMDFcXDA3NlxcMDAxXFwxMjRcXDAwMFxcMjI1XFwwMDBcXDA5MFxcMDAwXFwyMjdcXDAwMFxcXG5cXDA3OFxcMDAxXFwwNjBcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwNThcXDAwMVxcXG5cXDExNFxcMDAwXFwwNzJcXDAwMVxcMTI0XFwwMDBcXDEyNVxcMDAwXFwxNTZcXDAwMFxcMTU3XFwwMDBcXDEwNlxcMDAwXFwwNDRcXDAwMVxcXG5cXDA3MlxcMDAxXFwxMDlcXDAwMFxcMDU4XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDc2XFwwMDFcXDAwMFxcMDAwXFwwNTJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwNzZcXDAwMVxcMDA2XFwwMDFcXDAwNlxcMDAxXFwwNzZcXDAwMVxcMTkwXFwwMDBcXDAxMFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwMDBcXDAwMVxcMDAyXFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDc3XFwwMDFcXDA3OVxcMDAxXFwwOTBcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMDVcXDAwMVxcMDA5XFwwMDFcXDAwM1xcMDAxXFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMFxcXG5cXDA3N1xcMDAxXFwxMDBcXDAwMVxcMDA1XFwwMDFcXDAzMFxcMDAxXFwwNzdcXDAwMVxcMTUwXFwwMDBcXDAxNVxcMDAxXFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMVxcMDIyXFwwMDFcXDExM1xcMDAxXFwwMzlcXDAwMVxcXG5cXDA0NFxcMDAxXFwwMDJcXDAwMVxcMDgxXFwwMDFcXDAzMFxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAzMFxcMDAxXFwxMjJcXDAwMVxcXG5cXDA1MlxcMDAxXFwxMTNcXDAwMVxcMTY2XFwwMDBcXDAwNlxcMDAxXFwwNTVcXDAwMVxcMTI4XFwwMDFcXDA3N1xcMDAxXFwyMDdcXDAwMFxcXG5cXDA3OVxcMDAxXFwxNzNcXDAwMFxcMTc0XFwwMDBcXDIxMVxcMDAwXFwwMTlcXDAwMVxcMDY0XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcXG5cXDIzMVxcMDAwXFwwNzZcXDAwMVxcMDU1XFwwMDFcXDAwNlxcMDAxXFwwNTVcXDAwMVxcMjA3XFwwMDBcXDIyNFxcMDAwXFwwMzJcXDAwMVxcXG5cXDIyNlxcMDAwXFwwNzdcXDAwMVxcMjA0XFwwMDBcXDA2NFxcMDAxXFwwNzZcXDAwMVxcMDY0XFwwMDFcXDAwNVxcMDAxXFwyMDBcXDAwMFxcXG5cXDA4MFxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDAwNVxcMDAxXFwwNDRcXDAwMVxcMDc1XFwwMDFcXDAyMlxcMDAxXFwwNzdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwNTJcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDExXFwwMDFcXDAwM1xcMDAxXFwwMzBcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDZcXDAwMVxcMDM3XFwwMDFcXDAzNFxcMDAxXFwwMjVcXDAwMVxcMDM2XFwwMDFcXDAyN1xcMDAxXFwwMDNcXDAwMVxcXG5cXDA4MVxcMDAxXFwwNzJcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDQ0XFwwMDFcXDAxNFxcMDAxXFwwMzFcXDAwMVxcXG5cXDAwNVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDUyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcXG5cXDAwNlxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcXG5cXDAwOFxcMDAxXFwwMDFcXDAwMVxcMDEwXFwwMDFcXDAwM1xcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDhcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDA3N1xcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDAxXFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDFcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDFcXDAwMVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDNcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMVxcMDAxXFwwNzdcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDFcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMVxcXG5cXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDAxXFwwMDFcXDAwM1xcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAwNlxcMDAxXFwwNzlcXDAwMVxcXG5cXDA4MFxcMDAxXFwwODFcXDAwMVxcMDkyXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDA3OVxcMDAxXFwwMTBcXDAwMVxcMDcyXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcXG5cXDAxNFxcMDAxXFwwMDFcXDAwMVxcMDM0XFwwMDFcXDAwNFxcMDAxXFwwMzZcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMDZcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDlcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwMjFcXDAwMVxcMDQ0XFwwMDFcXDAyM1xcMDAxXFwwNDRcXDAwMVxcMDQzXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUyXFwwMDFcXDAwNlxcMDAxXFwwNTJcXDAwMVxcMDA4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDAwOVxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMjFcXDAwMVxcMDEwXFwwMDFcXDAyM1xcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA2XFwwMDFcXDAwNVxcMDAxXFwwMDhcXDAwMVxcMDA3XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDAyMVxcMDAxXFwwMjVcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDc3XFwwMDFcXDAzNVxcMDAxXFwwMDVcXDAwMVxcXG5cXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDA1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDQ0XFwwMDFcXDAyNVxcMDAxXFwwMDNcXDAwMVxcMDI3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDUyXFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDQzXFwwMDFcXDAwNlxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwMDlcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDIxXFwwMDFcXDAxMFxcMDAxXFwwMjNcXDAwMVxcXG5cXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDMwXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcXG5cXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDA3MlxcMDAxXFwwMzVcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA1NVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcXG5cXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwNDRcXDAwMVxcXG5cXDAwNlxcMDAxXFwwMzRcXDAwMVxcMDI1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDMwXFwwMDFcXDAwM1xcMDAxXFwwNTJcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDQ0XFwwMDFcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDUyXFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDA1NVxcMDAxXFwwMTBcXDAwMVxcXG5cXDA3N1xcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDBcXDAwMFxcMDA2XFwwMDFcXDAwNlxcMDAxXFwwNjRcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDA3N1xcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAwM1xcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwNDhcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMDVcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDBcXDAwMFxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcXG5cXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDZcXDAwMVxcMDI1XFwwMDFcXDA0NFxcMDAxXFwwMjdcXDAwMVxcXG5cXDA0NFxcMDAxXFwwMjVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNDRcXDAwMVxcMDIzXFwwMDFcXDA1MlxcMDAxXFwwMDZcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDA4XFwwMDFcXDA0NFxcMDAxXFwwNTJcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNDNcXDAwMVxcXG5cXDAyNVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG5cXDAxMFxcMDAxXFwwNzNcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAzXFwwMDFcXDA3NlxcMDAxXFwwNzZcXDAwMVxcXG5cXDA0NFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMzBcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDA0NFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMDRcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMzVcXDAwMVxcMDA1XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAwXFwwMDBcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDI2XFwwMDFcXDAyNVxcMDAxXFwwNzZcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMzBcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDM0XFwwMDFcXDA3N1xcMDAxXFwwMzZcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNDlcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcXG5cXDAwNlxcMDAxXFwwNDhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDc3XFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMFxcXG5cXDAyMVxcMDAwXFwwMDhcXDAwMFxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDE4XFwwMDBcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyMDJcXDAwMFxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDAwXFwwMDBcXDAzMVxcMDAxXFwwMzJcXDAwMVxcXG5cXDAzM1xcMDAxXFwxMDdcXDAwMFxcMDM1XFwwMDFcXDA0N1xcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDE0N1xcMDAwXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA3MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDExOFxcMDAwXFwwMjBcXDAwMVxcMDQxXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcXG5cXDA3M1xcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMVxcMDAxXFwwMDZcXDAwMVxcMDIzXFwwMDFcXDAwMFxcMDAwXFwwMDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcXG5cXDAyMVxcMDAxXFwwMDBcXDAwMFxcMDIzXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwwMjdcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMDAxXFwwMDFcXDAyM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwODFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwwODFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDAwMFxcMDAwXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA3OVxcMDAxXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAxXFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMjU1XFwyNTVcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwNTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDA2XFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3N1xcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA3MVxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwOVxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwwMjFcXDAwMVxcMDcyXFwwMDFcXDAyM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwOVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwNlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAzNFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAzNlxcMDAxXFwwMDZcXDAwMVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwwMDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwOVxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwwMjFcXDAwMVxcMDM2XFwwMDFcXDAyM1xcMDAxXFwwNDZcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDI1NVxcMjU1XFwwMDZcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDUyXFwwMDFcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG5cXDAxNFxcMDAwXFwwMDZcXDAwMVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzNlxcMDAwXFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNDNcXDAwMVxcMDA0XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDlcXDAwMVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDA1MlxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcXG5cXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTVcXDI1NVxcMDM2XFwwMDFcXDI1NVxcMjU1XFwwMjFcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDFcXDAwMFxcXG5cXDEwMlxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDI1NVxcMjU1XFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTdcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMFxcXG5cXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDEzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM5XFwwMDBcXDE0MFxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0OFxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTcxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwxNzVcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAxXFwwMjhcXDAwMVxcXG5cXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwxODlcXDAwMFxcXG5cXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMTc4XFwwMDBcXDE3OVxcMDAwXFwxODBcXDAwMFxcXG5cXDE4MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDFcXDIyNFxcMDAwXFwyNTVcXDI1NVxcMjI2XFwwMDBcXDAxMlxcMDAxXFwwMTNcXDAwMVxcXG5cXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDFcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcXG5cXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcXG5cXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMTlcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcXG5cXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDAwN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcXG5cXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcXG5cXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcXG5cXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcXG5cXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcXG5cXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA4MFxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIEVPRlxcMDAwXFxcbiAgTkVXTElORVxcMDAwXFxcbiAgU0VNSUNPTE9OXFwwMDBcXFxuICBDT01NQVxcMDAwXFxcbiAgRE9UXFwwMDBcXFxuICBPUF9QQVJcXDAwMFxcXG4gIENMX1BBUlxcMDAwXFxcbiAgT1BfQ1VSXFwwMDBcXFxuICBDTF9DVVJcXDAwMFxcXG4gIEFUXFwwMDBcXFxuICBUWVBFXFwwMDBcXFxuICBMQVJcXDAwMFxcXG4gIENQVVRJTUVcXDAwMFxcXG4gIEVNQVhcXDAwMFxcXG4gIFRNQVhcXDAwMFxcXG4gIFBMT1RFTlRSWVxcMDAwXFxcbiAgREVMRVRFXFwwMDBcXFxuICBJTlRST1xcMDAwXFxcbiAgVFJBQ0tcXDAwMFxcXG4gIERPXFwwMDBcXFxuICBTRVRcXDAwMFxcXG4gIFJFUEVBVFxcMDAwXFxcbiAgU1BFQ0lFU19PRlxcMDAwXFxcbiAgVU5USUxcXDAwMFxcXG4gIExPR1xcMDAwXFxcbiAgUExVU1xcMDAwXFxcbiAgTVVMVFxcMDAwXFxcbiAgTUlOVVNcXDAwMFxcXG4gIE1BWFxcMDAwXFxcbiAgTUlOXFwwMDBcXFxuICBESVZcXDAwMFxcXG4gIFNJTlVTXFwwMDBcXFxuICBDT1NJTlVTXFwwMDBcXFxuICBUQU5cXDAwMFxcXG4gIFBPV1xcMDAwXFxcbiAgQUJTXFwwMDBcXFxuICBNT0RVTE9cXDAwMFxcXG4gIFNRUlRcXDAwMFxcXG4gIEVYUE9ORU5UXFwwMDBcXFxuICBJTkZJTklUWVxcMDAwXFxcbiAgVElNRVxcMDAwXFxcbiAgRVZFTlRcXDAwMFxcXG4gIE5VTExfRVZFTlRcXDAwMFxcXG4gIFBJUEVcXDAwMFxcXG4gIEVRVUFMXFwwMDBcXFxuICBBTkRcXDAwMFxcXG4gIE9SXFwwMDBcXFxuICBOT1RcXDAwMFxcXG4gIEdSRUFURVJcXDAwMFxcXG4gIFNNQUxMRVJcXDAwMFxcXG4gIFRSVUVcXDAwMFxcXG4gIEZBTFNFXFwwMDBcXFxuICBESUZGXFwwMDBcXFxuICBLQVBQQV9SQVJcXDAwMFxcXG4gIEtBUFBBX0xSQVJcXDAwMFxcXG4gIEtBUFBBX0xOS1xcMDAwXFxcbiAgU0lHTkFUVVJFXFwwMDBcXFxuICBJTklUXFwwMDBcXFxuICBMRVRcXDAwMFxcXG4gIFBMT1RcXDAwMFxcXG4gIFBFUlRcXDAwMFxcXG4gIE9CU1xcMDAwXFxcbiAgVE9LRU5cXDAwMFxcXG4gIENPTkZJR1xcMDAwXFxcbiAgS0FQUEFfV0xEXFwwMDBcXFxuICBLQVBQQV9TRU1JXFwwMDBcXFxuICBGTFVYXFwwMDBcXFxuICBBU1NJR05cXDAwMFxcXG4gIFBSSU5URlxcMDAwXFxcbiAgU1RPUFxcMDAwXFxcbiAgU05BUFNIT1RcXDAwMFxcXG4gIFJVTlxcMDAwXFxcbiAgVEhFTlxcMDAwXFxcbiAgRUxTRVxcMDAwXFxcbiAgQUxBUk1cXDAwMFxcXG4gIEFQUExZXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgSU5UXFwwMDBcXFxuICBJRFxcMDAwXFxcbiAgS0FQUEFfTVJLXFwwMDBcXFxuICBMQUJFTFxcMDAwXFxcbiAgRkxPQVRcXDAwMFxcXG4gIFNUUklOR1xcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDEwNzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmV3bGluZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAoZnVuIGMgLT4gYylcbiMgMTA4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduZXdsaW5lKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKF8xKVxuIyAxMDg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKGxldCBvdXQgPSAoU29tZSAoXzEsIHJoc19wb3MgMSksXzIpIGluXG5cdGZ1biBjIC0+IGxldCByID0gXzMgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IG91dDo6ci5Bc3QucnVsZXN9KVxuIyAxMDk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3J1bGVfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChmdW4gYyAtPiBsZXQgciA9IF8yIGMgaW4ge3Igd2l0aCBBc3QucnVsZXMgPSAoTm9uZSxfMSk6OnIuQXN0LnJ1bGVzfSlcbiMgMTEwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKGxldCBvdXQgPSAoKF8xLHJoc19wb3MgMSksXzMpIGluXG5cdGZ1biBjIC0+IGxldCByID0gXzQgYyBpbiB7ciB3aXRoIEFzdC52YXJpYWJsZXMgPSBvdXQ6OnIuQXN0LnZhcmlhYmxlc30pXG4jIDExMTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW5zdHJ1Y3Rpb24pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggZnVuIGMgLT4gbGV0IHIgPSBfMiBjIGluXG5cdFx0ICAgICAgbWF0Y2ggXzEgd2l0aFxuXHRcdCAgICAgIHwgQXN0LlJVTEUgcnUgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5ydWxlcyA9IHJ1OjpyLkFzdC5ydWxlc31cblx0XHQgICAgICB8IEFzdC5TSUcgYWcgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5zaWduYXR1cmVzPWFnOjpyLkFzdC5zaWduYXR1cmVzfVxuXHRcdCAgICAgIHwgQXN0LlRPS0VOU0lHIChzdHJfcG9zKSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnRva2Vucz1zdHJfcG9zOjpyLkFzdC50b2tlbnN9XG5cdFx0ICAgICAgfCBBc3QuVk9MU0lHICh2b2xfdHlwZSx2b2wsdm9sX3BhcmFtKSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZvbHVtZXM9KHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pOjpyLkFzdC52b2x1bWVzfVxuXHRcdCAgICAgIHwgQXN0LklOSVQgKGFsZyxpbml0X3QpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QuaW5pdD0oYWxnLGluaXRfdCk6OnIuQXN0LmluaXR9XG5cdFx0ICAgICAgfCBBc3QuREVDTEFSRSB2YXIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC52YXJpYWJsZXMgPSB2YXI6OnIuQXN0LnZhcmlhYmxlc31cblx0XHQgICAgICB8IEFzdC5PQlMgKChsYmwscG9zKSxfIGFzIHZhcikgLT5cblx0XHRcdCAoKmZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBzaG9ydGN1dCBmb3IgJXZhciArICVwbG90Kilcblx0XHRcdCAgIHtyIHdpdGhcblx0XHRcdCAgICAgQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzO1xuXHRcdFx0ICAgICBBc3Qub2JzZXJ2YWJsZXMgPSAoQWxnX2V4cHIuQUxHX1ZBUiBsYmwscG9zKVxuXHRcdFx0XHRcdFx0IDo6ci5Bc3Qub2JzZXJ2YWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuUExPVCBleHByIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qub2JzZXJ2YWJsZXMgPSBleHByOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QRVJUICgoYWxhcm0scHJlLGVmZmVjdCxvcHQpLHBvcykgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5wZXJ0dXJiYXRpb25zID1cblx0XHRcdCAgICgoYWxhcm0scHJlLGVmZmVjdCxvcHQpLHBvcyk6OnIuQXN0LnBlcnR1cmJhdGlvbnN9XG5cdFx0ICAgICAgfCBBc3QuQ09ORklHIChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpIC0+XG5cdFx0XHQge3Igd2l0aFxuXHRcdFx0ICBBc3QuY29uZmlndXJhdGlvbnMgPSAocGFyYW1fbmFtZSx2YWx1ZV9saXN0KTo6ci5Bc3QuY29uZmlndXJhdGlvbnN9XG5cdFx0ICApXG4jIDExNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwiU3ludGF4IGVycm9yXCIpKSlcbiMgMTE1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9leHByZXNzaW9uX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTA0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5TSUcgXzIpXG4jIDExNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoQXN0LlRPS0VOU0lHIChfMixyaHNfcG9zIDIpKVxuIyAxMTczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHRcdChhZGRfcG9zIFwiTWFsZm9ybWVkIGFnZW50IHNpZ25hdHVyZSwgSSB3YXMgZXhwZWN0aW5nIHNvbWV0aGluZyBvZiB0aGUgZm9ybSAnJWFnZW50OiBBKHgseX51fnYseiknXCIpKSlcbiMgMTE4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2luaXRfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuSU5JVCBfMilcbiMgMTE4NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBpbml0aWFsIGNvbmRpdGlvblwiKSkpXG4jIDExOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5ERUNMQVJFIF8yKVxuIyAxMjAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuT0JTIF8yKVxuIyAxMjA4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoQXN0LlBMT1QgXzIpXG4jIDEyMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBhbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkpXG4jIDEyMjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDExOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5QRVJUIChhZGRfcG9zIF8yKSlcbiMgMTIyOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoQXN0LkNPTkZJRyAoKF8yLHJoc19wb3MgMiksXzMpKVxuIyAxMjM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsQXN0LklOSVRfTUlYIChfMixyaHNfcG9zIDIpKSApXG4jIDEyNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKF8xLEFzdC5JTklUX01JWCAoXzMsIHJoc19wb3MgMykpIClcbiMgMTI1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKChfMyxBc3QuSU5JVF9UT0sgW18xLHJoc19wb3MgMV0pKVxuIyAxMjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICgoXzEsQXN0LklOSVRfVE9LIFtfMixyaHNfcG9zIDJdKSlcbiMgMTI2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgIChbXzEsIHJoc19wb3MgMV0pXG4jIDEyNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTM1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoKF8xLHJoc19wb3MgMSk6Ol8yKVxuIyAxMjg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoTm9uZSlcbiMgMTI5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduYnIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoU29tZSBfMilcbiMgMTI5NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDE0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoTm9uZSlcbiMgMTMwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoU29tZSBfMilcbiMgMTMxMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggU29tZSAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULF8yKSkpKVxuIyAxMzE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTUyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsU29tZSBfMixfNCxfNSkgKVxuIyAxMzI3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKF8xLE5vbmUsXzMsXzQpIClcbiMgMTMzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIChOb25lLFNvbWUgXzIsXzQsU29tZSAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULF82KSkpKSlcbiMgMTM0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggKF8xLFNvbWUgXzIsXzQsTm9uZSkpXG4jIDEzNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMTM2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTM2OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKFtfMV0pXG4jIDEzNzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzMpXG4jIDEzODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChBc3QuVVBEQVRFICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEzOTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoQXN0LlVQREFURSAoKF8yLHJoc19wb3MgMiksXzMpKVxuIyAxMzk5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgIChBc3QuQ0ZMT1dMQUJFTCAoXzMsKF8yLHJoc19wb3MgMikpKVxuIyAxNDA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgKEFzdC5DRkxPV01JWCAoXzMsKFtfMl0scmhzX3BvcyAyKSkpXG4jIDE0MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChpZiBfMyB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsXzIpIGVsc2UgQXN0LkRJTk9GRiBfMilcbiMgMTQyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoaWYgXzQgJiYgXzMgPSBcImFic29sdXRlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLF8yKVxuXHQgICBlbHNlIGlmIF80ICYmIF8zID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cblx0ICAgICBBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLF8yKVxuXHQgICBlbHNlIGlmIF80ICYmIF8zID0gXCJyZWxhdGl2ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxfMilcblx0ICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyAzKSkpXG4jIDE0MzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKCBBc3QuQVBQTFkoXG5cdFx0ICAgXzIsXG5cdFx0ICAgKHsgQXN0LnJld3JpdGUgPSBmc3QgXzM7XG5cdFx0ICAgICAgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcblx0XHQgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcblx0XHQgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuXHRcdCApXG4jIDE0NTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICggQXN0LkFQUExZKF8yLFxuICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgIEFzdC5yaHM9XzM7IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgICApXG4jIDE0NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSlcbiMgMTQ3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAyMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoIEFzdC5BUFBMWShfMixcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuQXJyb3cge0FzdC5saHM9XzM7IEFzdC5ybV90b2tlbiA9IFtdO1xuICAgICAgICAgICAgICAgICBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICApXG4jIDE0ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSlcbiMgMTQ5NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoXG4gICAgICAgbGV0IHRrID0gKF8xLHJoc19wb3MgMSkgaW5cbiAgICAgICAgQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICAgIGFkZF9wb3NcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuRWRpdFxuXHRcdCB7QXN0Lm1peD1bXTtcblx0XHQgIEFzdC5kZWx0YV90b2tlbiA9XG5cdFx0ICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsXzMsKEFsZ19leHByLlRPS0VOX0lEIF8xLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0pKVxuICAgICAgIClcbiMgMTUxNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5TTkFQU0hPVCAoZmFsc2UsXzIpKVxuIyAxNTIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChBc3QuU1RPUCBfMilcbiMgMTUzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5QUklOVCAoXzIsXzQpIClcbiMgMTUzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICggQXN0LlBMT1RFTlRSWSApXG4jIDE1NDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5TUEVDSUVTX09GIChfNCxfMiwoXzMsIHJoc19wb3MgMykpKVxuIyAxNTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoW1ByaW1pdGl2ZXMuU3RyX3BleHByIChhZGRfcG9zIF8xKV0pXG4jIDE1NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgKFtQcmltaXRpdmVzLkFsZ19wZXhwciBfMV0pXG4jIDE1NjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuU3RyX3BleHByIChfMSwgcmhzX3BvcyAxKTo6XzMpXG4jIDE1NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciBfMTo6XzMpXG4jIDE1ODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChbXSlcbiMgMTU4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMTU5NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKHRydWUpXG4jIDE2MDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbGVhbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoZmFsc2UpXG4jIDE2MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbGVhbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKChfMSxyaHNfcG9zIDEpLChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfMixyaHNfcG9zIDIpKSlcbiMgMTYxNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKCgoXzEscmhzX3BvcyAxKSxfMikpXG4jIDE2MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICgoKF8xLHJoc19wb3MgMSksXzIpKVxuIyAxNjMyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAocmFpc2Vcblx0ICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl5fMV5cIidcIikpKVxuXHQgICAgKVxuIyAxNjQyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTY0OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyBBbGdfZXhwci5UUlVFKVxuIyAxNjU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoYWRkX3BvcyBBbGdfZXhwci5GQUxTRSlcbiMgMTY2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAxNjY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCxfMikpKVxuIyAxNjc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELF8xLF8zKSkpXG4jIDE2ODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLF8xLF8zKSkpXG4jIDE2OTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLF8xLF8zKSkpXG4jIDE2OTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLF8xLF8zKSkpXG4jIDE3MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCxfMSxfMykpKVxuIyAxNzE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRElGRixfMSxfMykpKVxuIyAxNzIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDE3MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChbXSlcbiMgMTczNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd0b2tlbl9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTc0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd0b2tlbl9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyOTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAgKyAuLi4gKyBhX24gdF9uLCB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkpXG4jIDE3NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndG9rZW5fZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDE3NTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAoWyhfMSwoXzIscmhzX3BvcyAyKSldKVxuIyAxNzY1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsID0gXzQgaW4gKF8xLChfMixyaHNfcG9zIDIpKTo6bClcbiMgMTc3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKFsoXzEsKF8zLHJoc19wb3MgMykpXSlcbiMgMTc4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsID0gXzUgaW4gKF8xLChfMyxyaHNfcG9zIDMpKTo6bClcbiMgMTc5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W18xXTsgQXN0LnJtX3Rva2VuID0gXzI7IEFzdC5yaHM9W180XTsgQXN0LmFkZF90b2tlbiA9IF81fSxcbiAgICAgXzMpXG4jIDE4MDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W18xXTsgQXN0LnJtX3Rva2VuID0gXzI7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBfNH0sXG4gICAgIF8zKVxuIyAxODE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBfMTsgQXN0LnJocz1bXzNdOyBBc3QuYWRkX3Rva2VuID0gXzR9LFxuICAgICBfMilcbiMgMTgyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBfMTsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IF8zfSxcbiAgICAgXzIpXG4jIDE4MzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggQXN0LkVkaXQge0FzdC5taXggPSBbXzFdOyBBc3QuZGVsdGFfdG9rZW4gPSBfMn0sZmFsc2UgKVxuIyAxODQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBBc3QuRWRpdCB7QXN0Lm1peCA9IFtdOyBBc3QuZGVsdGFfdG9rZW4gPSBfMn0sZmFsc2UgKVxuIyAxODUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2JpcmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzI3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuKSA9IF8yIGluXG4gICAgICBsZXQgcmV3cml0ZSxiaWRpcmVjdGlvbmFsID0gXzEgaW5cbiAgICAgIGFkZF9wb3Mge1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSApXG4jIDE4NjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAoZmFsc2UpXG4jIDE4NjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAodHJ1ZSlcbiMgMTg3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhcnJvdykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoIE5ici5GIGluZmluaXR5IClcbiMgMTg4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGZsb2F0KSBpblxuICAgIE9iai5yZXByKFxuIyAzNDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICggTmJyLkYgXzEgKVxuIyAxODg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzNDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAoIE5ici5JIF8xIClcbiMgMTg5NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduYnIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT05TVCBfMSkpXG4jIDE5MDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FTUFYX1ZBUikpKVxuIyAxOTA4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSlcbiMgMTkxNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQ4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkNQVVRJTUUpKSlcbiMgMTkyMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVE9LRU5fSUQgKF8yKSkpXG4jIDE5MjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGRfcG9zIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfMikgKVxuIyAxOTM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKF8xKSkpXG4jIDE5NDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSlcbiMgMTk0OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSkpXG4jIDE5NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM1NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSkpXG4jIDE5NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM1OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpKVxuIyAxOTY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDE5NzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb25zdGFudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzYzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoXzEpXG4jIDE5ODAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoXzEpXG4jIDE5ODcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCxfMixfMykpKVxuIyAxOTk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sXzIsXzMpKSlcbiMgMjAwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5FWFAsXzIpKSlcbiMgMjAxMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzcwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUyxfMikpKVxuIyAyMDE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuQ09TSU5VUyxfMikpKVxuIyAyMDI0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5UQU4sXzIpKSlcbiMgMjAzMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULF8yKSkpXG4jIDIwMzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULF8yKSkpXG4jIDIwNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRyxfMikpKVxuIyAyMDUyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsXzIpKSApXG4jIDIwNTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDIwNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULF8xLF8zKSkpXG4jIDIwNzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0sXzEsXzMpKSlcbiMgMjA4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLF8xLF8zKSkpXG4jIDIwOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsXzEsXzMpKSlcbiMgMjA5OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuUE9XLF8xLF8zKSkpXG4jIDIxMDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1PRFVMTyxfMSxfMykpKVxuIyAyMTE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgKF8xKVxuIyAyMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5JRihfMSxfMyxfNSkpKVxuIyAyMTMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChsZXQgKGsyLGsxKSA9IF8yIGluIChrMixrMSxOb25lLE5vbmUpKVxuIyAyMTM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3JhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IChrMixrMSkgPSBfMiBpblxuXHRcdFx0ICBsZXQgKGtiYWNrLGtiYWNrMSkgPSBfNCBpblxuXHRcdFx0ICAoazIsazEsU29tZSBrYmFjayxrYmFjazEpKVxuIyAyMTQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSlcbiMgMjE1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBPYmoucmVwcihcbiMgNDAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8xLFNvbWUgXzMpKVxuIyAyMTYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBPYmoucmVwcihcbiMgNDAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxTb21lIF8zKSApXG4jIDIxNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICgoXzEsTm9uZSkpXG4jIDIxNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBPYmoucmVwcihcbiMgNDA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoKExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCBOYnIuemVybyksU29tZSBfMikpXG4jIDIxODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICgoXzEsU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxOb25lKSkpXG4jIDIxOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDA4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwibWlzc2luZyBydWxlIHJhdGVcIikpKVxuIyAyMTk2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoKF8xLE5vbmUpKVxuIyAyMjAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8xLCBTb21lIF8zKSlcbiMgMjIxMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDIyMTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FnZW50X2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEgOjogXzMpXG4jIDIyMjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoW18xXSlcbiMgMjIzMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDI0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBbW0FzdC5QcmVzZW50ICgoXzEscmhzX3BvcyAxKSwgXzMsIEFzdC5Ob01vZCldXSApXG4jIDIyNDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uX2VtcHR5X21peHR1cmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNDI2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBbQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKSA6OiBfNl0pXG4jIDIyNTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uX2VtcHR5X21peHR1cmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKCBBc3QuTm9Nb2QgKVxuIyAyMjU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZF9hZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDMxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICggQXN0LkNyZWF0ZSApXG4jIDIyNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kX2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkVyYXNlIClcbiMgMjI2OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RfYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDM1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5QcmVzZW50ICgoXzEscmhzX3BvcyAxKSwgXzMsIEFzdC5Ob01vZCkpXG4jIDIyNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8xXlwiJ1wiKSkpKVxuIyAyMjg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnbW9kX2FnZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChBc3QuUHJlc2VudCAoKF8yLHJoc19wb3MgMiksIF80LCBfMSkpXG4jIDIyOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21vZF9hZ2VudCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAgKGFkZF9wb3MgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl5fMl5cIidcIikpKSlcbiMgMjMwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0NDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKFtdKVxuIyAyMzA4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMylcbiMgMjMxNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyA0NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtfMV0pXG4jIDIzMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChbXSlcbiMgMjMyOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BvcnRfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8zKVxuIyAyMzM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncG9ydF9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0NTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoW18xXSlcbiMgMjM0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKCBTb21lIChBc3QuQ0VRIF8yLHJoc19wb3MgMikpXG4jIDIzNTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggU29tZSAoQXN0LkNHVEUgXzMscmhzX3BvcyAzKSlcbiMgMjM1OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChBc3QuQ0xURSBfMyxyaHNfcG9zIDMpKVxuIyAyMzY1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DVkFSIF8yLHJoc19wb3MgMikpXG4jIDIzNzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPVtdO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzM7IH0gKVxuIyAyMzgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9XzM7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNDsgfSApXG4jIDIzOTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZShfNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9IF81OyB9IClcbiMgMjQwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9XzU7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZShfNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9IF82OyB9IClcbiMgMjQyMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0ODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IChfNCxyaHNfcG9zIDQpfSApXG4jIDI0MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLV81LHJoc19wb3MgNSl9IClcbiMgMjQ0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0OTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBfMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoXzUscmhzX3BvcyA1KX0gKVxuIyAyNDU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IF8yO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtIF82LHJoc19wb3MgNil9IClcbiMgMjQ2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gXzI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gTG9jLmFubm90X3dpdGhfZHVtbXkgMH0gKVxuIyAyNDc3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPVtdO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF8zOyB9IClcbiMgMjQ4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV8zO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF80OyB9IClcbiMgMjUwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZShfNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9IF81OyB9IClcbiMgMjUxMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9XzU7XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNjsgfSApXG4jIDI1MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICggQXN0LkNvdW50ZXJcbiAgICBcdCAgIHsgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gKF8xLHJoc19wb3MgMSk7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lIF80LCByaHNfcG9zIDQpO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBfNDtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlID0gQ291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdH0pXG4jIDI1MzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAoQXN0LkNvdW50ZXJcbiAgeyBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiA9IE5vbmU7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICgtXzUpLCByaHNfcG9zIDUpO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdCA9IC1fNTtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgPSBDb3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjU1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKCBsZXQgbWluID1cbiAgICAgICAgICAgIG1hdGNoIF8yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgIGluIEFzdC5Db3VudGVyXG4gICAgICAgICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgXzUsIHJoc19wb3MgNSk7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbjtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlID0gQ291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdH0pXG4jIDI1NzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBsZXQgbWluID1cbiAgICAgICAgICAgbWF0Y2ggXzIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICBpblxuICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICgtXzYpLCByaHNfcG9zIDYpO1xuICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbiA7XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlID0gQ291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdH0pXG4jIDI1OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggbGV0IG1pbiA9XG4gICAgICAgICAgIG1hdGNoIF8yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgaW5cbiAgICAgICBBc3QuQ291bnRlclxuICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggPSBOb25lO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbjtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgPSBDb3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjYwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1ODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChbXSlcbiMgMjYxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU29tZSBfMSxyaHNfcG9zIDEpOjpfMilcbiMgMjYyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIFwiSXNzdWUgYWZ0ZXIgaW50ZXJuYWwgc3RhdGVcIikpKVxuIyAyNjMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1ODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgIChOb25lKVxuIyAyNjM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVfbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIE5vbmUpXG4jIDI2NDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoU29tZSAoU29tZSAoXzMscmhzX3BvcyAzKSkpXG4jIDI2NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0ICAoYWRkX3BvcyBcIkluY29ycmVjdCBsaW5rIG1vZGlmaWNhdGlvblwiKSkpXG4jIDI2NTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU5OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfRlJFRSxyaHNfcG9zIDIpKVxuIyAyNjYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKChMS2FwcGEuTE5LX1ZBTFVFIChfMiwoKSkscmhzX3BvcyAyKSlcbiMgMjY2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMS2FwcGEuTE5LX1NPTUUscmhzX3BvcyAyKSlcbiMgMjY3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKExLYXBwYS5MTktfVFlQRVxuXHRcdFx0XHQgICAgICAoKF8yLHJoc19wb3MgMiksKF80LHJoc19wb3MgNCkpKSlcbiMgMjY4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChhZGRfcG9zIExLYXBwYS5MTktfQU5ZKVxuIyAyNjkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgXCJJbnZhbGlkIGxpbmsgc3RhdGVcIikpKVxuIyAyNjk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FfbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMilcbiMgMjcwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYV9saW5rX3N0YXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAoW18xXSlcbiMgMjcxMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkpXG4jIDI3MTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5SVU4gXzIpXG4jIDI3MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA2MTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5NT0RJRlkgXzEpXG4jIDI3MzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKEFzdC5RVUlUKVxuIyAyNzM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSkpXG4jIDI3NDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG4oKiBFbnRyeSBzdGFydF9ydWxlICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IGludGVyYWN0aXZlX2NvbW1hbmQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2Jvb2xfZXhwciAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzdGFydF9ydWxlIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKVxubGV0IGludGVyYWN0aXZlX2NvbW1hbmQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKVxubGV0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpXG5sZXQgc3RhbmRhbG9uZV9ib29sX2V4cHIgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpXG47O1xuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqL1xuLyogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqL1xuLyogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuJXtcbiAgbGV0IGFkZF9wb3MgeCA9XG4gICAgKHgsTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiV9XG5cbiV0b2tlbiBFT0YgTkVXTElORSBTRU1JQ09MT04gQ09NTUEgRE9UIE9QX1BBUiBDTF9QQVIgT1BfQ1VSIENMX0NVUiBBVCBUWVBFIExBUlxuJXRva2VuIENQVVRJTUUgRU1BWCBUTUFYIFBMT1RFTlRSWSBERUxFVEUgSU5UUk8gVFJBQ0sgRE8gU0VUIFJFUEVBVCBTUEVDSUVTX09GXG4ldG9rZW4gVU5USUwgTE9HIFBMVVMgTVVMVCBNSU5VUyBNQVggTUlOIERJViBTSU5VUyBDT1NJTlVTIFRBTiBQT1cgQUJTIE1PRFVMT1xuJXRva2VuIFNRUlQgRVhQT05FTlQgSU5GSU5JVFkgVElNRSBFVkVOVCBOVUxMX0VWRU5UIFBJUEUgRVFVQUwgQU5EIE9SIE5PVFxuJXRva2VuIEdSRUFURVIgU01BTExFUiBUUlVFIEZBTFNFIERJRkYgS0FQUEFfUkFSIEtBUFBBX0xSQVIgS0FQUEFfTE5LXG4ldG9rZW4gU0lHTkFUVVJFIElOSVQgTEVUIFBMT1QgUEVSVCBPQlMgVE9LRU4gQ09ORklHIEtBUFBBX1dMRCBLQVBQQV9TRU1JXG4ldG9rZW4gRkxVWCBBU1NJR04gUFJJTlRGIFNUT1AgU05BUFNIT1QgUlVOIFRIRU4gRUxTRSBBTEFSTSBBUFBMWVxuJXRva2VuIDxpbnQ+IElOVFxuJXRva2VuIDxzdHJpbmc+IElEXG4ldG9rZW4gPHN0cmluZz4gS0FQUEFfTVJLIExBQkVMXG4ldG9rZW4gPGZsb2F0PiBGTE9BVFxuJXRva2VuIDxzdHJpbmc+IFNUUklOR1xuXG4lbGVmdCBNSU5VUyBQTFVTXG4lbGVmdCBNVUxUIERJVlxuJWxlZnQgTU9EVUxPXG4lcmlnaHQgUE9XXG4lbm9uYXNzb2MgTE9HIFNRUlQgRVhQT05FTlQgU0lOVVMgQ09TSU5VUyBBQlMgVEFOXG5cbiVsZWZ0IE9SXG4lbGVmdCBBTkRcblxuJW5vbmFzc29jIFRIRU5cblxuJXN0YXJ0IHN0YXJ0X3J1bGVcbiV0eXBlIDxBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsPiBzdGFydF9ydWxlXG5cbiVzdGFydCBpbnRlcmFjdGl2ZV9jb21tYW5kXG4ldHlwZSA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQ+IGludGVyYWN0aXZlX2NvbW1hbmRcblxuJXN0YXJ0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0PiBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG5cbiVzdGFydCBzdGFuZGFsb25lX2Jvb2xfZXhwclxuJXR5cGUgPChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQ+IHN0YW5kYWxvbmVfYm9vbF9leHByXG5cbiUlIC8qR3JhbW1hciBydWxlcyovXG5cbm5ld2xpbmU6XG4gICAgfCBORVdMSU5FIHN0YXJ0X3J1bGUgeyQyfVxuICAgIHwgRU9GIHtmdW4gYyAtPiBjfTtcblxuc3RhcnRfcnVsZTpcbiAgICB8IG5ld2xpbmUgeyQxfVxuICAgIHwgTEFCRUwgcnVsZV9leHByZXNzaW9uIG5ld2xpbmVcbiAgICAgICAge2xldCBvdXQgPSAoU29tZSAoJDEsIHJoc19wb3MgMSksJDIpIGluXG5cdGZ1biBjIC0+IGxldCByID0gJDMgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IG91dDo6ci5Bc3QucnVsZXN9fVxuICAgIHwgcnVsZV9leHByZXNzaW9uIG5ld2xpbmVcbiAgICAgICAge2Z1biBjIC0+IGxldCByID0gJDIgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IChOb25lLCQxKTo6ci5Bc3QucnVsZXN9fVxuICAgIHwgTEFCRUwgRVFVQUwgYWxnX2V4cHIgbmV3bGluZVxuICAgICAgICB7bGV0IG91dCA9ICgoJDEscmhzX3BvcyAxKSwkMykgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSAkNCBjIGluIHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IG91dDo6ci5Bc3QudmFyaWFibGVzfX1cbiAgICB8IGluc3RydWN0aW9uIG5ld2xpbmVcblx0XHQgIHsgZnVuIGMgLT4gbGV0IHIgPSAkMiBjIGluXG5cdFx0ICAgICAgbWF0Y2ggJDEgd2l0aFxuXHRcdCAgICAgIHwgQXN0LlJVTEUgcnUgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5ydWxlcyA9IHJ1OjpyLkFzdC5ydWxlc31cblx0XHQgICAgICB8IEFzdC5TSUcgYWcgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5zaWduYXR1cmVzPWFnOjpyLkFzdC5zaWduYXR1cmVzfVxuXHRcdCAgICAgIHwgQXN0LlRPS0VOU0lHIChzdHJfcG9zKSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnRva2Vucz1zdHJfcG9zOjpyLkFzdC50b2tlbnN9XG5cdFx0ICAgICAgfCBBc3QuVk9MU0lHICh2b2xfdHlwZSx2b2wsdm9sX3BhcmFtKSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZvbHVtZXM9KHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pOjpyLkFzdC52b2x1bWVzfVxuXHRcdCAgICAgIHwgQXN0LklOSVQgKGFsZyxpbml0X3QpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QuaW5pdD0oYWxnLGluaXRfdCk6OnIuQXN0LmluaXR9XG5cdFx0ICAgICAgfCBBc3QuREVDTEFSRSB2YXIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC52YXJpYWJsZXMgPSB2YXI6OnIuQXN0LnZhcmlhYmxlc31cblx0XHQgICAgICB8IEFzdC5PQlMgKChsYmwscG9zKSxfIGFzIHZhcikgLT5cblx0XHRcdCAoKmZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBzaG9ydGN1dCBmb3IgJXZhciArICVwbG90Kilcblx0XHRcdCAgIHtyIHdpdGhcblx0XHRcdCAgICAgQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzO1xuXHRcdFx0ICAgICBBc3Qub2JzZXJ2YWJsZXMgPSAoQWxnX2V4cHIuQUxHX1ZBUiBsYmwscG9zKVxuXHRcdFx0XHRcdFx0IDo6ci5Bc3Qub2JzZXJ2YWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuUExPVCBleHByIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qub2JzZXJ2YWJsZXMgPSBleHByOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QRVJUICgoYWxhcm0scHJlLGVmZmVjdCxvcHQpLHBvcykgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5wZXJ0dXJiYXRpb25zID1cblx0XHRcdCAgICgoYWxhcm0scHJlLGVmZmVjdCxvcHQpLHBvcyk6OnIuQXN0LnBlcnR1cmJhdGlvbnN9XG5cdFx0ICAgICAgfCBBc3QuQ09ORklHIChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpIC0+XG5cdFx0XHQge3Igd2l0aFxuXHRcdFx0ICBBc3QuY29uZmlndXJhdGlvbnMgPSAocGFyYW1fbmFtZSx2YWx1ZV9saXN0KTo6ci5Bc3QuY29uZmlndXJhdGlvbnN9XG5cdFx0ICB9XG4gICAgfCBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwiU3ludGF4IGVycm9yXCIpKX1cbiAgICA7XG5cbmluc3RydWN0aW9uOlxuICAgIHwgU0lHTkFUVVJFIGFnZW50X2V4cHJlc3Npb25fc2lnIHtBc3QuU0lHICQyfVxuICAgIHwgVE9LRU4gSUQge0FzdC5UT0tFTlNJRyAoJDIscmhzX3BvcyAyKX1cbiAgICB8IFNJR05BVFVSRSBlcnJvciB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHRcdChhZGRfcG9zIFwiTWFsZm9ybWVkIGFnZW50IHNpZ25hdHVyZSwgSSB3YXMgZXhwZWN0aW5nIHNvbWV0aGluZyBvZiB0aGUgZm9ybSAnJWFnZW50OiBBKHgseX51fnYseiknXCIpKX1cblxuICAgIHwgSU5JVCBpbml0X2RlY2xhcmF0aW9uIHtBc3QuSU5JVCAkMn1cbiAgICB8IElOSVQgZXJyb3Jcblx0eyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBpbml0aWFsIGNvbmRpdGlvblwiKSl9XG5cbiAgICB8IExFVCB2YXJpYWJsZV9kZWNsYXJhdGlvbiB7QXN0LkRFQ0xBUkUgJDJ9XG4gICAgfCBPQlMgdmFyaWFibGVfZGVjbGFyYXRpb24ge0FzdC5PQlMgJDJ9XG4gICAgfCBQTE9UIGFsZ19leHByIHtBc3QuUExPVCAkMn1cbiAgICB8IFBMT1QgZXJyb3Ige3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgYW4gYWxnZWJyYWljIGV4cHJlc3Npb24gaXMgZXhwZWN0ZWRcIikpfVxuICAgIHwgUEVSVCBwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24ge0FzdC5QRVJUIChhZGRfcG9zICQyKX1cbiAgICB8IENPTkZJRyBTVFJJTkcgdmFsdWVfbGlzdFxuXHQgICAgIHtBc3QuQ09ORklHICgoJDIscmhzX3BvcyAyKSwkMyl9XG4gICAgO1xuXG5pbml0X2RlY2xhcmF0aW9uOlxuICAgIHwgYWxnX2V4cHIgbm9uX2VtcHR5X21peHR1cmVcbiAgICB7ICgkMSxBc3QuSU5JVF9NSVggKCQyLHJoc19wb3MgMikpIH1cbiAgICB8IGFsZ19leHByIE9QX1BBUiBub25fZW1wdHlfbWl4dHVyZSBDTF9QQVJcbiAgICB7ICgkMSxBc3QuSU5JVF9NSVggKCQzLCByaHNfcG9zIDMpKSB9XG4gICAgfCBJRCBMQVIgYWxnX2V4cHIgeygkMyxBc3QuSU5JVF9UT0sgWyQxLHJoc19wb3MgMV0pfVxuICAgIHwgYWxnX2V4cHIgSUQgeygkMSxBc3QuSU5JVF9UT0sgWyQyLHJoc19wb3MgMl0pfVxuICAgIDtcblxudmFsdWVfbGlzdDpcbiAgICB8IFNUUklORyB7WyQxLCByaHNfcG9zIDFdfVxuICAgIHwgU1RSSU5HIHZhbHVlX2xpc3QgeygkMSxyaHNfcG9zIDEpOjokMn1cbiAgICA7XG5cbnBlcnR1cmJhdGlvbl9hbGFybTpcbiAge05vbmV9XG4gIHwgQUxBUk0gbmJyIHtTb21lICQyfVxuXG5wZXJ0dXJiYXRpb25fcG9zdDpcbiAge05vbmV9XG4gIHwgUkVQRUFUIGJvb2xfZXhwciB7U29tZSAkMn1cbiAgfCBVTlRJTCBib29sX2V4cHJcbiAgIC8qIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKi9cblx0IHsgU29tZSAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULCQyKSkpfVxuXG5cbnBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbjpcbiAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgRE8gZWZmZWN0X2xpc3QgcGVydHVyYmF0aW9uX3Bvc3RcbiAgICB7ICgkMSxTb21lICQyLCQ0LCQ1KSB9XG4gICAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gRE8gZWZmZWN0X2xpc3QgcGVydHVyYmF0aW9uX3Bvc3RcbiAgICB7ICgkMSxOb25lLCQzLCQ0KSB9XG4gICAgfCBSRVBFQVQgYm9vbF9leHByIERPIGVmZmVjdF9saXN0IFVOVElMIGJvb2xfZXhwclxuICAgICAgIC8qIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKi9cblx0ICB7IChOb25lLFNvbWUgJDIsJDQsU29tZSAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULCQ2KSkpKX1cbiAgICAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIFNFVCBlZmZlY3RfbGlzdFxuXHRcdHsgKCQxLFNvbWUgJDIsJDQsTm9uZSl9IC8qRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkqL1xuICAgIDtcblxuc3RhbmRhbG9uZV9lZmZlY3RfbGlzdDogZWZmZWN0X2xpc3QgRU9GIHskMX1cblxuZWZmZWN0X2xpc3Q6XG4gICAgfCBPUF9QQVIgZWZmZWN0X2xpc3QgQ0xfUEFSIHskMn1cbiAgICB8IGVmZmVjdCB7WyQxXX1cbiAgICB8IGVmZmVjdCBTRU1JQ09MT04gZWZmZWN0X2xpc3QgeyQxOjokM31cbiAgICA7XG5cbmVmZmVjdDpcbiAgICB8IEFTU0lHTiBJRCBhbGdfZXhwciAvKnVwZGF0aW5nIHRoZSByYXRlIG9mIGEgcnVsZSovXG5cdFx0XHRcdFx0XHQgICAgICB7QXN0LlVQREFURSAoKCQyLHJoc19wb3MgMiksJDMpfVxuICAgIHwgQVNTSUdOIExBQkVMIGFsZ19leHByIC8qdXBkYXRpbmcgdGhlIHJhdGUgb2YgYSBydWxlKi9cblx0XHRcdFx0XHRcdCAgICAgIHtBc3QuVVBEQVRFICgoJDIscmhzX3BvcyAyKSwkMyl9XG4gICAgfCBUUkFDSyBMQUJFTCBib29sZWFuXG5cdCAgICB7QXN0LkNGTE9XTEFCRUwgKCQzLCgkMixyaHNfcG9zIDIpKX1cbiAgICB8IFRSQUNLIHBhdHRlcm4gYm9vbGVhblxuXHQgICAge0FzdC5DRkxPV01JWCAoJDMsKFskMl0scmhzX3BvcyAyKSl9XG4gICAgfCBGTFVYIG5vbmVtcHR5X3ByaW50X2V4cHIgYm9vbGVhblxuXHQgICB7aWYgJDMgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLCQyKSBlbHNlIEFzdC5ESU5PRkYgJDJ9XG4gICAgfCBGTFVYIG5vbmVtcHR5X3ByaW50X2V4cHIgU1RSSU5HIGJvb2xlYW5cblx0ICAge2lmICQ0ICYmICQzID0gXCJhYnNvbHV0ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSwkMilcblx0ICAgZWxzZSBpZiAkNCAmJiAkMyA9IFwicHJvYmFiaWxpdHlcIiB0aGVuXG5cdCAgICAgQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSwkMilcblx0ICAgZWxzZSBpZiAkNCAmJiAkMyA9IFwicmVsYXRpdmVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsJDIpXG5cdCAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0ICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgMykpfVxuICAgIHwgQVBQTFkgc21hbGxfYWxnX2V4cHIgcnVsZV9jb250ZW50XG5cdFx0IHsgQXN0LkFQUExZKFxuXHRcdCAgICQyLFxuXHRcdCAgICh7IEFzdC5yZXdyaXRlID0gZnN0ICQzO1xuXHRcdCAgICAgIEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG5cdFx0ICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG5cdFx0ICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcblx0XHQgfVxuICAgIHwgSU5UUk8gYWxnX2V4cHIgbm9uX2VtcHR5X21peHR1cmVcbiAgICAgICAgeyBBc3QuQVBQTFkoJDIsXG4gICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0ICBBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgQXN0LnJocz0kMzsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0ICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgIH1cbiAgICB8IElOVFJPIGVycm9yXG4gICAgICAge3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJEFERCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSl9XG4gICAgfCBERUxFVEUgYWxnX2V4cHIgbm9uX2VtcHR5X21peHR1cmVcbiAgICAgICB7IEFzdC5BUFBMWSgkMixcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuQXJyb3cge0FzdC5saHM9JDM7IEFzdC5ybV90b2tlbiA9IFtdO1xuICAgICAgICAgICAgICAgICBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICB9XG5cbiAgICB8IERFTEVURSBlcnJvclxuICAgICAgIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpfVxuICAgIHwgSUQgTEFSIGFsZ19leHByIC8qdXBkYXRpbmcgdGhlIHZhbHVlIG9mIGEgdG9rZW4qL1xuICAgICAgIHtcbiAgICAgICBsZXQgdGsgPSAoJDEscmhzX3BvcyAxKSBpblxuICAgICAgICBBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgICAgYWRkX3Bvc1xuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0XG5cdFx0IHtBc3QubWl4PVtdO1xuXHRcdCAgQXN0LmRlbHRhX3Rva2VuID1cblx0XHQgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUywkMywoQWxnX2V4cHIuVE9LRU5fSUQgJDEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSkpXG4gICAgICAgfVxuICAgIHwgU05BUFNIT1QgcHJpbnRfZXhwciB7QXN0LlNOQVBTSE9UIChmYWxzZSwkMil9XG4gICAgfCBTVE9QIHByaW50X2V4cHIge0FzdC5TVE9QICQyfVxuICAgIHwgUFJJTlRGIHByaW50X2V4cHIgU01BTExFUiBwcmludF9leHByIEdSRUFURVIgeyBBc3QuUFJJTlQgKCQyLCQ0KSB9XG4gICAgfCBQTE9URU5UUlkgeyBBc3QuUExPVEVOVFJZIH1cbiAgICB8IFNQRUNJRVNfT0Ygbm9uZW1wdHlfcHJpbnRfZXhwciBub25fZW1wdHlfbWl4dHVyZSBib29sZWFuIHsgQXN0LlNQRUNJRVNfT0YgKCQ0LCQyLCgkMywgcmhzX3BvcyAzKSl9XG4gICAgO1xuXG5ub25lbXB0eV9wcmludF9leHByOlxuICAgIHwgU1RSSU5HIHtbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgJDEpXX1cbiAgICB8IG1pZF9hbGdfZXhwciB7W1ByaW1pdGl2ZXMuQWxnX3BleHByICQxXX1cbiAgICB8IFNUUklORyBET1Qgbm9uZW1wdHlfcHJpbnRfZXhwciB7UHJpbWl0aXZlcy5TdHJfcGV4cHIgKCQxLCByaHNfcG9zIDEpOjokM31cbiAgICB8IG1pZF9hbGdfZXhwciBET1Qgbm9uZW1wdHlfcHJpbnRfZXhwciB7UHJpbWl0aXZlcy5BbGdfcGV4cHIgJDE6OiQzfVxuICAgIDtcbnByaW50X2V4cHI6XG4gICAgLyplbXB0eSovIHtbXX1cbiAgICB8IG5vbmVtcHR5X3ByaW50X2V4cHIgeyQxfVxuXG5ib29sZWFuOlxuICAgIHwgVFJVRSB7dHJ1ZX1cbiAgICB8IEZBTFNFIHtmYWxzZX1cbiAgICA7XG5cbnZhcmlhYmxlX2RlY2xhcmF0aW9uOlxuICAgIHwgTEFCRUwgbm9uX2VtcHR5X21peHR1cmVcblx0ICAgeyAoKCQxLHJoc19wb3MgMSksKEFsZ19leHByLktBUFBBX0lOU1RBTkNFICQyLHJoc19wb3MgMikpfVxuICAgIHwgTEFCRUwgYWxnX2V4cHIgeygoJDEscmhzX3BvcyAxKSwkMil9XG4gICAgfCBJRCBhbGdfZXhwciB7KCgkMSxyaHNfcG9zIDEpLCQyKX1cbiAgICB8IExBQkVMIGVycm9yXG5cdCAgICB7cmFpc2Vcblx0ICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl4kMV5cIidcIikpKVxuXHQgICAgfVxuICAgIDtcblxuc21hbGxfYm9vbF9leHByOlxuICAgIHwgT1BfUEFSIGJvb2xfZXhwciBDTF9QQVIgeyQyfVxuICAgIHwgVFJVRSB7YWRkX3BvcyBBbGdfZXhwci5UUlVFfVxuICAgIHwgRkFMU0Uge2FkZF9wb3MgQWxnX2V4cHIuRkFMU0V9XG5cbmJvb2xfZXhwcjpcbiAgICB8IHNtYWxsX2Jvb2xfZXhwciB7ICQxIH1cbiAgICB8IE5PVCBzbWFsbF9ib29sX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULCQyKSl9XG4gICAgfCBib29sX2V4cHIgQU5EIGJvb2xfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELCQxLCQzKSl9XG4gICAgfCBib29sX2V4cHIgT1IgYm9vbF9leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUiwkMSwkMykpfVxuICAgIHwgYWxnX2V4cHIgR1JFQVRFUiBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUiwkMSwkMykpfVxuICAgIHwgYWxnX2V4cHIgU01BTExFUiBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuU01BTExFUiwkMSwkMykpfVxuICAgIHwgYWxnX2V4cHIgRVFVQUwgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBESUZGIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLCQxLCQzKSl9XG4gICAgO1xuXG5zdGFuZGFsb25lX2Jvb2xfZXhwcjogYm9vbF9leHByIEVPRiB7JDF9XG5cbnRva2VuX2V4cHI6XG4gIC8qZW1wdHkqLyB7W119XG4gICAgfCBQSVBFIHN1bV90b2tlbiB7JDJ9XG4gICAgfCBQSVBFIGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zICBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCArIC4uLiArIGFfbiB0X24sIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKX1cbiAgICA7XG5cbnN1bV90b2tlbjpcbiAgICB8IE9QX1BBUiBzdW1fdG9rZW4gQ0xfUEFSIHskMn1cbiAgICB8IGFsZ19leHByIElEIHtbKCQxLCgkMixyaHNfcG9zIDIpKV19XG4gICAgfCBhbGdfZXhwciBJRCBQTFVTIHN1bV90b2tlbiB7bGV0IGwgPSAkNCBpbiAoJDEsKCQyLHJoc19wb3MgMikpOjpsfVxuICAgIHwgYWxnX2V4cHIgVFlQRSBJRCB7WygkMSwoJDMscmhzX3BvcyAzKSldfVxuICAgIHwgYWxnX2V4cHIgVFlQRSBJRCBQTFVTIHN1bV90b2tlbiB7bGV0IGwgPSAkNSBpbiAoJDEsKCQzLHJoc19wb3MgMykpOjpsfVxuXG5ydWxlX2NvbnRlbnQ6XG4gIHwgcGF0dGVybiB0b2tlbl9leHByIGFycm93IHBhdHRlcm4gdG9rZW5fZXhwclxuICAgIHtBc3QuQXJyb3cge0FzdC5saHM9WyQxXTsgQXN0LnJtX3Rva2VuID0gJDI7IEFzdC5yaHM9WyQ0XTsgQXN0LmFkZF90b2tlbiA9ICQ1fSxcbiAgICAgJDN9XG4gIHwgcGF0dGVybiB0b2tlbl9leHByIGFycm93IHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVskMV07IEFzdC5ybV90b2tlbiA9ICQyOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gJDR9LFxuICAgICAkM31cbiAgfCB0b2tlbl9leHByIGFycm93IHBhdHRlcm4gdG9rZW5fZXhwclxuICAgIHtBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9ICQxOyBBc3QucmhzPVskM107IEFzdC5hZGRfdG9rZW4gPSAkNH0sXG4gICAgICQyfVxuICB8IHRva2VuX2V4cHIgYXJyb3cgdG9rZW5fZXhwclxuICAgIHtBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9ICQxOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gJDN9LFxuICAgICAkMn1cbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHJcbiAgICB7IEFzdC5FZGl0IHtBc3QubWl4ID0gWyQxXTsgQXN0LmRlbHRhX3Rva2VuID0gJDJ9LGZhbHNlIH07XG4gIHwgUElQRSBzdW1fdG9rZW5cbiAgICB7IEFzdC5FZGl0IHtBc3QubWl4ID0gW107IEFzdC5kZWx0YV90b2tlbiA9ICQyfSxmYWxzZSB9O1xuXG5ydWxlX2V4cHJlc3Npb246XG4gIHwgcnVsZV9jb250ZW50IGJpcmF0ZVxuICAgIHsgbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bikgPSAkMiBpblxuICAgICAgbGV0IHJld3JpdGUsYmlkaXJlY3Rpb25hbCA9ICQxIGluXG4gICAgICBhZGRfcG9zIHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0gfTtcblxuYXJyb3c6XG4gICAgfCBLQVBQQV9SQVIge2ZhbHNlfVxuICAgIHwgS0FQUEFfTFJBUiB7dHJ1ZX1cbiAgICA7XG5cbm5icjpcbiAgICB8IElORklOSVRZIHsgTmJyLkYgaW5maW5pdHkgfVxuICAgIHwgRkxPQVQgeyBOYnIuRiAkMSB9XG4gICAgfCBJTlQgeyBOYnIuSSAkMSB9XG5cbmNvbnN0YW50OlxuICAgIHwgbmJyIHthZGRfcG9zIChBbGdfZXhwci5DT05TVCAkMSl9XG4gICAgfCBFTUFYIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSl9XG4gICAgfCBUTUFYIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRNQVhfVkFSKSl9XG4gICAgfCBDUFVUSU1FIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkNQVVRJTUUpKX1cbiAgICA7XG5cbnZhcmlhYmxlOlxuICAgIHwgUElQRSBJRCBQSVBFIHthZGRfcG9zIChBbGdfZXhwci5UT0tFTl9JRCAoJDIpKX1cbiAgICB8IFBJUEUgbm9uX2VtcHR5X21peHR1cmUgUElQRSB7IGFkZF9wb3MgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFICQyKSB9XG4gICAgfCBJRCB7YWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKX1cbiAgICB8IExBQkVMIHthZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSICgkMSkpfVxuICAgIHwgVElNRSB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpfVxuICAgIHwgRVZFTlQge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSl9XG4gICAgfCBOVUxMX0VWRU5UIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSl9XG4gICAgO1xuXG5zbWFsbF9hbGdfZXhwcjpcbiAgICB8IE9QX1BBUiBhbGdfZXhwciBDTF9QQVIgeyQyfVxuICAgIHwgY29uc3RhbnQgeyQxfVxuICAgIHwgdmFyaWFibGUgeyQxfVxuICAgIHwgTUFYIHNtYWxsX2FsZ19leHByIHNtYWxsX2FsZ19leHByXG5cdCAge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLCQyLCQzKSl9XG4gICAgfCBNSU4gc21hbGxfYWxnX2V4cHIgc21hbGxfYWxnX2V4cHJcblx0ICB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sJDIsJDMpKX1cbiAgICB8IEVYUE9ORU5UIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCwkMikpfVxuICAgIHwgU0lOVVMgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU0lOVVMsJDIpKX1cbiAgICB8IENPU0lOVVMgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuQ09TSU5VUywkMikpfVxuICAgIHwgVEFOIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTiwkMikpfVxuICAgIHwgQUJTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCwkMikpfVxuICAgIHwgU1FSVCBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULCQyKSl9XG4gICAgfCBMT0cgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLCQyKSl9XG4gICAgO1xuXG5taWRfYWxnX2V4cHI6XG4gICAgfCBNSU5VUyBtaWRfYWxnX2V4cHIgeyBhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVU1JTlVTLCQyKSkgfVxuICAgIHwgc21hbGxfYWxnX2V4cHIgeyAkMSB9XG4gICAgfCBtaWRfYWxnX2V4cHIgTVVMVCBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCwkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIFBMVVMgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSwkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIERJViBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgTUlOVVMgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgUE9XIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBNT0RVTE8gbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1PRFVMTywkMSwkMykpfVxuXG5hbGdfZXhwcjpcbiAgICB8IG1pZF9hbGdfZXhwciB7JDF9XG4gICAgfCBib29sX2V4cHIgVEhFTiBhbGdfZXhwciBFTFNFIHNtYWxsX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5JRigkMSwkMywkNSkpfVxuXG5iaXJhdGU6XG4gICAgfCBBVCByYXRlIHtsZXQgKGsyLGsxKSA9ICQyIGluIChrMixrMSxOb25lLE5vbmUpfVxuICAgIHwgQVQgcmF0ZSBDT01NQSByYXRlIHtsZXQgKGsyLGsxKSA9ICQyIGluXG5cdFx0XHQgIGxldCAoa2JhY2ssa2JhY2sxKSA9ICQ0IGluXG5cdFx0XHQgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSl9XG4gICAgfCBlcnJvciB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKX1cbiAgICA7XG5cbnJhdGU6XG4gICAgfCBhbGdfZXhwciBPUF9DVVIgYWxnX3dpdGhfcmFkaXVzIENMX0NVUiB7KCQxLFNvbWUgJDMpfVxuICAgIHwgYWxnX2V4cHIgT1BfUEFSIGFsZ193aXRoX3JhZGl1cyBDTF9QQVIgeyAoJDEsU29tZSAkMykgfVxuICAgIHwgYWxnX2V4cHIgeygkMSxOb25lKX1cbiAgICB8IE9QX0NVUiBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSXG4gICAgICB7KExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCBOYnIuemVybyksU29tZSAkMil9XG4gICAgfCBhbGdfZXhwciBPUF9DVVIgQ0xfQ1VSXG4gICAgICB7KCQxLFNvbWUgKExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCBOYnIuemVybyksTm9uZSkpfVxuICAgIHwge3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIm1pc3NpbmcgcnVsZSByYXRlXCIpKX1cbiAgICA7XG5cbmFsZ193aXRoX3JhZGl1czpcbiAgICB8IGFsZ19leHByIHsoJDEsTm9uZSl9XG4gICAgfCBhbGdfZXhwciBUWVBFIGFsZ19leHByIHsoJDEsIFNvbWUgJDMpfVxuICAgIDtcblxucGF0dGVybjpcbiAgICB8IE9QX1BBUiBwYXR0ZXJuIENMX1BBUiB7JDJ9XG4gICAgfCBhZ2VudF9leHByZXNzaW9uIENPTU1BIHBhdHRlcm4geyQxIDo6ICQzfVxuICAgIHwgYWdlbnRfZXhwcmVzc2lvbiB7WyQxXX1cbjtcblxubm9uX2VtcHR5X21peHR1cmU6XG4gICAgfCBJRCBPUF9QQVIgaW50ZXJmYWNlX2V4cHJlc3Npb24gQ0xfUEFSXG4gICAgeyBbW0FzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDMsIEFzdC5Ob01vZCldXSB9XG4gICAgfCBJRCBPUF9QQVIgaW50ZXJmYWNlX2V4cHJlc3Npb24gQ0xfUEFSIENPTU1BIHBhdHRlcm5cbiAgICB7IFtBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQzLCBBc3QuTm9Nb2QpIDo6ICQ2XX1cbiAgICA7XG5cbm1vZF9hZ2VudDpcblx0fCB7IEFzdC5Ob01vZCB9XG5cdHwgUExVUyB7IEFzdC5DcmVhdGUgfVxuXHR8IE1JTlVTIHsgQXN0LkVyYXNlIH07XG5cbmFnZW50X2V4cHJlc3Npb25fc2lnOlxuICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcgQ0xfUEFSIHtBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQzLCBBc3QuTm9Nb2QpfVxuICB8IElEIGVycm9yIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl4kMV5cIidcIikpKX1cblxuYWdlbnRfZXhwcmVzc2lvbjpcbiAgICB8IG1vZF9hZ2VudCBJRCBPUF9QQVIgaW50ZXJmYWNlX2V4cHJlc3Npb24gQ0xfUEFSXG5cdCB7QXN0LlByZXNlbnQgKCgkMixyaHNfcG9zIDIpLCAkNCwgJDEpfVxuICAgIHwgbW9kX2FnZW50IElEIGVycm9yXG5cdCB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQyXlwiJ1wiKSkpfVxuICAgIDtcblxuaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnOlxuICAgIC8qZW1wdHkqLyB7W119XG4gICAgfCBwb3J0X2V4cHJlc3Npb25fc2lnIENPTU1BIGludGVyZmFjZV9leHByZXNzaW9uX3NpZyB7JDE6OiQzfVxuICAgIHwgcG9ydF9leHByZXNzaW9uX3NpZyB7WyQxXX1cbiAgICA7XG5cbmludGVyZmFjZV9leHByZXNzaW9uOlxuICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgcG9ydF9leHByZXNzaW9uIENPTU1BIGludGVyZmFjZV9leHByZXNzaW9uIHskMTo6JDN9XG4gICAgfCBwb3J0X2V4cHJlc3Npb24ge1skMV19XG4gICAgO1xuXG5jb3VudGVyX3Rlc3Q6XG4gICB8IFRZUEUgSU5UIHsgU29tZSAoQXN0LkNFUSAkMixyaHNfcG9zIDIpfVxuICAgfCBUWVBFIEdSRUFURVIgSU5UIHsgU29tZSAoQXN0LkNHVEUgJDMscmhzX3BvcyAzKX1cbiAgIHwgVFlQRSBTTUFMTEVSIElOVCB7IFNvbWUgKEFzdC5DTFRFICQzLHJoc19wb3MgMyl9XG4gICB8IFRZUEUgSUQgeyBTb21lIChBc3QuQ1ZBUiAkMixyaHNfcG9zIDIpfVxuXG5wb3J0X2V4cHJlc3Npb246XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlX21vZFxuXHQgeyBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPVtdO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDM7IH0gfVxuICAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgbGlua19zdGF0ZSBsaW5rX3N0YXRlX21vZFxuXHQgeyBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQzO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDQ7IH0gfVxuICAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlX21vZFxuXHQgeyBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPVtdO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNTsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGUgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kNTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKCQ0LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDY7IH0gfVxuICAgIHwgSUQgUExVUyBFUVVBTCBJTlRcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgkNCxyaHNfcG9zIDQpfSB9XG4gICAgfCBJRCBQTFVTIEVRVUFMIE1JTlVTIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC0kNSxyaHNfcG9zIDUpfSB9XG4gICAgfCBJRCBjb3VudGVyX3Rlc3QgUExVUyBFUVVBTCBJTlRcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSAkMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoJDUscmhzX3BvcyA1KX0gfVxuICAgfCBJRCBjb3VudGVyX3Rlc3QgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSAkMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLSAkNixyaHNfcG9zIDYpfSB9XG4gICB8IElEIGNvdW50ZXJfdGVzdFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDB9IH1cbiAgICA7XG5cbnBvcnRfZXhwcmVzc2lvbl9zaWc6XG4gICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkMzsgfSB9XG4gIHwgSUQgaW50ZXJuYWxfc3RhdGUgbGlua19zdGF0ZSBsaW5rX3N0YXRlX21vZFxuICAgIFx0IHsgQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDM7XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDQ7IH0gfVxuICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZV9tb2RcbiAgICBcdCB7IEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPVtdO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKCQ0LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDU7IH0gfVxuICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZSBsaW5rX3N0YXRlX21vZFxuICAgIFx0IHsgQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDU7XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNjsgfSB9XG4gIHwgSUQgUExVUyBFUVVBTCBJTlRcbiAgICAgICAgICAgICB7IEFzdC5Db3VudGVyXG4gICAgXHQgICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiA9IE5vbmU7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAkNCwgcmhzX3BvcyA0KTtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0ID0gJDQ7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfdmlzaWJsZSA9IENvdW50ZXJzX2luZm8uRnJvbV9vcmlnaW5hbF9hc3R9fVxuICB8IElEIFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICAgIHtBc3QuQ291bnRlclxuICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC0kNSksIHJoc19wb3MgNSk7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0ID0gLSQ1O1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfdmlzaWJsZSA9IENvdW50ZXJzX2luZm8uRnJvbV9vcmlnaW5hbF9hc3R9fVxuICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIElOVFxuICAgICAgIHsgbGV0IG1pbiA9XG4gICAgICAgICAgICBtYXRjaCAkMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgICBpbiBBc3QuQ291bnRlclxuICAgICAgICAgeyBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICQ1LCByaHNfcG9zIDUpO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfdmlzaWJsZSA9IENvdW50ZXJzX2luZm8uRnJvbV9vcmlnaW5hbF9hc3R9fVxuICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIE1JTlVTIElOVFxuICAgICAgeyBsZXQgbWluID1cbiAgICAgICAgICAgbWF0Y2ggJDIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICBpblxuICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICgtJDYpLCByaHNfcG9zIDYpO1xuICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbiA7XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlID0gQ291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgY291bnRlcl90ZXN0XG4gICAgICB7IGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCAkMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgQXN0LkNvdW50ZXJcbiAgeyBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4ID0gTm9uZTtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlID0gQ291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdH19XG5cblxuaW50ZXJuYWxfc3RhdGU6XG4gIC8qZW1wdHkqLyB7W119XG4gICAgfCBLQVBQQV9NUksgaW50ZXJuYWxfc3RhdGUgeyhTb21lICQxLHJoc19wb3MgMSk6OiQyfVxuICAgIHwgZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBhZnRlciBpbnRlcm5hbCBzdGF0ZVwiKSl9XG4gICAgO1xuXG5saW5rX3N0YXRlX21vZDpcblx0fCB7Tm9uZX1cblx0fCBESVYgS0FQUEFfTE5LIERPVCB7U29tZSBOb25lfVxuXHR8IERJViBLQVBQQV9MTksgSU5UIHtTb21lIChTb21lICgkMyxyaHNfcG9zIDMpKX1cblx0fCBESVYgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgIChhZGRfcG9zIFwiSW5jb3JyZWN0IGxpbmsgbW9kaWZpY2F0aW9uXCIpKX07XG5cblxuYV9saW5rX3N0YXRlOlxuICAgIHwgS0FQUEFfTE5LIERPVCB7KExLYXBwYS5MTktfRlJFRSxyaHNfcG9zIDIpfVxuICAgIHwgS0FQUEFfTE5LIElOVCB7KExLYXBwYS5MTktfVkFMVUUgKCQyLCgpKSxyaHNfcG9zIDIpfVxuICAgIHwgS0FQUEFfTE5LIEtBUFBBX1NFTUkgeyhMS2FwcGEuTE5LX1NPTUUscmhzX3BvcyAyKX1cbiAgICB8IEtBUFBBX0xOSyBJRCBET1QgSUQge2FkZF9wb3MgKExLYXBwYS5MTktfVFlQRVxuXHRcdFx0XHQgICAgICAoKCQyLHJoc19wb3MgMiksKCQ0LHJoc19wb3MgNCkpKX1cbiAgICB8IEtBUFBBX1dMRCB7YWRkX3BvcyBMS2FwcGEuTE5LX0FOWX1cbiAgICB8IEtBUFBBX0xOSyBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyBcIkludmFsaWQgbGluayBzdGF0ZVwiKSl9XG47XG5cbmxpbmtfc3RhdGU6XG5cdHwgYV9saW5rX3N0YXRlIGxpbmtfc3RhdGUgeyQxOjokMn1cblx0fCBhX2xpbmtfc3RhdGUge1skMV19O1xuXG5pbnRlcmFjdGl2ZV9jb21tYW5kOlxuXHR8IFJVTiBORVdMSU5FIHtBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSl9XG5cdHwgUlVOIGJvb2xfZXhwciBORVdMSU5FIHtBc3QuUlVOICQyfVxuXHR8IGVmZmVjdF9saXN0IE5FV0xJTkUge0FzdC5NT0RJRlkgJDF9XG5cdHwgRU9GIHtBc3QuUVVJVH1cblx0fCBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpfVxuJSVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbntcbiAgb3BlbiBMZXhpbmdcbiAgb3BlbiBLYXBwYVBhcnNlclxuXG4gIGxldCByZWFjaF9lb2YgbGV4YnVmID1cbiAgICBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWVcblxuIGxldCByZXNldF9lb2YgbGV4YnVmID1cbiAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gZmFsc2VcblxuIGxldCBwb3NpdGlvbiBsZXhidWYgPVxuICAgbGV0IHBvcyA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gICAocG9zLnBvc19mbmFtZSwgcG9zLnBvc19sbnVtLCBwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbClcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwic2V0XCIgU0VUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInVudGlsXCIgVU5USUwgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxubGV0IHNwYWNlX2NoYXJzID0gWycgJzsnXFxuJzsnXFx0J11cbn1cblxubGV0IGVvbCA9ICdcXHInPyAnXFxuJ1xubGV0IGJsYW5rID0gWycgJyAnXFx0J11cbmxldCBpbnRlZ2VyID0gKFsnMCctJzknXSspXG5sZXQgcmVhbCA9XG4gICAgICgoKChbJzAnLSc5J10rICgnLicgWycwJy0nOSddKik/KSB8ICgnLicgWycwJy0nOSddKykpXG5cdFsnZScgJ0UnXSBbJysnICctJ10/IFsnMCctJzknXSspXG4gIHwgKChbJzAnLSc5J10rICcuJyBbJzAnLSc5J10qICkgfCAoWycwJy0nOSddKiAnLicgWycwJy0nOSddKykpKVxubGV0IGlkID0gKCdfJyogWydhJy0neicgJ0EnLSdaJ10gWydhJy0neicgJ0EnLSdaJyAnMCctJzknICdfJyAnLScgJysnXSogKVxubGV0IGludGVybmFsX3N0YXRlID0gJ34nIChbJzAnLSc5JyAnYSctJ3onICdBJy0nWicgJ18nICctJyAnKyddKylcbmxldCBwZXJ0ID0gJyQnIGlkXG5cbnJ1bGUgdG9rZW4gPSBwYXJzZVxuXHQgfCAnXFxcXCcgYmxhbmsqIGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IHRva2VuIGxleGJ1Zn1cblx0IHwgXCImJlwiIHtBTkR9XG5cdCB8IFwifHxcIiB7T1J9XG5cdCB8IFwiPC0+XCIge0tBUFBBX0xSQVJ9XG5cdCB8IFwiLT5cIiB7S0FQUEFfUkFSfVxuXHQgfCBcIjwtXCIge0xBUn1cblx0IHwgXCI8PlwiIHtESUZGfVxuXHQgfCBwZXJ0IGFzIHMge21hdGNoIHMgd2l0aFxuXHRcdCAgICAgIHwgXCIkREVMXCIgLT4gREVMRVRFXG5cdFx0ICAgICAgfCBcIiRBRERcIiAtPiBJTlRST1xuXHRcdCAgICAgIHwgXCIkQVBQTFlcIiAtPiBBUFBMWVxuXHRcdCAgICAgIHwgXCIkU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuXHRcdCAgICAgIHwgXCIkU1RPUFwiIC0+IFNUT1Bcblx0XHQgICAgICB8IFwiJEZMVVhcIiAtPiBGTFVYXG5cdFx0ICAgICAgfCBcIiRUUkFDS1wiIC0+IFRSQUNLXG5cdFx0ICAgICAgfCBcIiRVUERBVEVcIiAtPiBBU1NJR05cblx0XHQgICAgICB8IFwiJFBSSU5UXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQUklOVEZcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuXHRcdCAgICAgIHwgXCIkUlVOXCIgLT4gUlVOXG5cdFx0ICAgICAgfCBcIiRTUEVDSUVTX09GXCIgLT4gU1BFQ0lFU19PRlxuXHRcdCAgICAgIHwgcyAtPlxuXHRcdFx0IHJhaXNlXG5cdFx0XHQgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAgIChcIlBlcnR1cmJhdGlvbiBlZmZlY3QgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0KExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdFx0ICAgICB9XG5cdCB8ICdbJyBibGFuayogKGlkIGFzIGxhYikgYmxhbmsqICddJyB7XG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiRVwiIC0+IEVWRU5UXG5cdFx0fCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuXHRcdHwgXCJUXCIgLT4gVElNRVxuXHRcdHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuXHRcdHwgXCJsb2dcIiAtPiBMT0dcblx0XHR8IFwic2luXCIgLT4gU0lOVVNcblx0XHR8IFwiY29zXCIgLT4gQ09TSU5VU1xuXHRcdHwgXCJ0YW5cIiAtPiBUQU5cblx0XHR8IFwiZXhwXCIgLT4gRVhQT05FTlRcblx0XHR8IFwiaW50XCIgLT4gQUJTXG5cdFx0fCBcIm1vZFwiIC0+IE1PRFVMT1xuXHRcdHwgXCJzcXJ0XCIgLT4gU1FSVFxuXHRcdHwgXCJ0cnVlXCIgLT4gVFJVRVxuXHRcdHwgXCJmYWxzZVwiIC0+IEZBTFNFXG5cdFx0fCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG5cdFx0fCBcIm1heFwiIC0+IE1BWFxuXHRcdHwgXCJtaW5cIiAtPiBNSU5cblx0XHR8IFwiRW1heFwiIC0+IEVNQVhcblx0XHR8IFwiVG1heFwiIC0+IFRNQVhcblx0XHR8IFwiP1wiIC0+IFRIRU5cblx0XHR8IFwiOlwiIC0+IEVMU0Vcblx0XHR8IFwibm90XCIgLT4gTk9UXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAoXCJTeW1ib2wgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIH1cblx0IHwgJzonIHtUWVBFfVxuXHQgfCAnOycge1NFTUlDT0xPTn1cblx0IHwgJ1xcXCInIHtsZXQgc3RyID0gcmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYgaW5cblx0XHQgU1RSSU5HIHN0cn1cblx0IHwgZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgTkVXTElORX1cblx0IHwgJyMnIHtjb21tZW50IGxleGJ1Zn1cblx0IHwgJy8nICcqJyB7aW5saW5lX2NvbW1lbnQgbGV4YnVmOyB0b2tlbiBsZXhidWZ9XG5cdCB8IGludGVnZXIgYXMgbiB7dHJ5IElOVCAoaW50X29mX3N0cmluZyBuKVxuXHQgd2l0aCBGYWlsdXJlIF8gLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAobl5cIiBpcyBhIGluY29ycmVjdCBpbnRlZ2VyXCIsXG5cdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG5cblx0IHwgcmVhbCBhcyBmIHtGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpfVxuXHQgfCAnXFwnJyAoW14nXFxuJydcXCcnXSsgYXMgeCkgJ1xcJyd7TEFCRUwoeCl9XG5cdCB8IGlkIGFzIHN0ciB7a2V5d29yZF9vcl9pZCBzdHJ9XG5cdCB8ICdAJyB7QVR9XG5cdCB8ICcsJyB7Q09NTUF9XG5cdCB8ICcoJyB7T1BfUEFSfVxuXHQgfCAnKScge0NMX1BBUn1cblx0IHwgJ3snIHtPUF9DVVJ9XG5cdCB8ICd9JyB7Q0xfQ1VSfVxuXHQgfCAnfCcge1BJUEV9XG5cdCB8ICcuJyB7RE9UfVxuXHQgfCAnKycge1BMVVN9XG5cdCB8ICcqJyB7TVVMVH1cblx0IHwgJy0nIHtNSU5VU31cblx0IHwgJ14nIHtQT1d9XG5cdCB8ICcvJyB7RElWfVxuXHQgfCAnPCcge1NNQUxMRVJ9XG5cdCB8ICc+JyB7R1JFQVRFUn1cblx0IHwgJz0nIHtFUVVBTH1cblx0IHwgJyUnIChpZCBhcyBsYWIpICc6JyB7XG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcblx0XHR8IFwiaW5pdFwiIC0+IElOSVRcblx0XHR8IFwidmFyXCIgLT4gTEVUXG5cdFx0fCBcInBsb3RcIiAtPiBQTE9UXG5cdFx0fCBcIm1vZFwiIC0+IFBFUlRcblx0XHR8IFwib2JzXCIgLT4gT0JTXG5cdFx0fCBcImRlZlwiIC0+IENPTkZJR1xuXHRcdHwgXCJ0b2tlblwiIC0+IFRPS0VOXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoXCJJbnN0cnVjdGlvbiBcXFwiXCJec15cIlxcXCIgbm90IHJlY29nbml6ZWRcIixcblx0XHRcdFx0XHRMb2Mub2ZfcG9zXG5cdFx0XHRcdFx0KExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdFx0IChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgfVxuXHQgfCAnIScge0tBUFBBX0xOS31cblx0IHwgaW50ZXJuYWxfc3RhdGUgYXMgcyB7bGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnficgaW5cblx0XHRcdFx0bGV0IHIgPSBTdHJpbmcuc3ViIHMgKGkrMSkgKFN0cmluZy5sZW5ndGggcy1pLTEpIGluXG5cdFx0XHRcdEtBUFBBX01SSyByXG5cdFx0XHQgICAgICAgfVxuXHQgfCAnPycge0tBUFBBX1dMRH1cblx0IHwgJ18nIHtLQVBQQV9TRU1JfVxuXHQgfCBibGFuayAge3Rva2VuIGxleGJ1Zn1cblx0IHwgZW9mIHtyZWFjaF9lb2YgbGV4YnVmOyBFT0Z9XG5cdCB8IF8gYXMgYyB7XG5cdFx0ICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAoXCJpbnZhbGlkIHVzZSBvZiBjaGFyYWN0ZXIgXCJeIFN0cmluZy5tYWtlIDEgYyxcblx0XHRcdCAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdFx0ICB9XG5cbmFuZCByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgPVxuICBwYXJzZVxuICB8IGVvZiB7U3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IFN0cmluZy5tYWtlIDEgeCkgYWNjKX1cbiAgfCAnXFxcXCcgYmxhbmsqIGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCBsZXhidWZ9XG4gIHwgXyBhcyBjIHtpZiBMaXN0Lm1lbSBjIGNoYXJfbGlzdFxuXHQgICAgdGhlbiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpXG5cdCAgICBlbHNlIHJlYWRfbGFiZWwgKGM6OmFjYykgY2hhcl9saXN0IGxleGJ1Zn1cblxuYW5kIGNvbW1lbnQgPSBwYXJzZVxuXHQgICAgfCBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FfVxuXHQgICAgfCAnXFxcXCcgYmxhbmsqIGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgdG9rZW4gbGV4YnVmfVxuXHQgICAgfCBlb2Yge0VPRn1cblx0ICAgIHwgXyB7Y29tbWVudCBsZXhidWZ9XG5cbmFuZCBpbmxpbmVfY29tbWVudCA9IHBhcnNlXG5cdFx0ICAgfCBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1Zn1cblx0XHQgICB8ICcqJyAnLycgeyAoKSB9XG5cdFx0ICAgfCAnXFxcIidcblx0XHQgICAgICAge2lnbm9yZSAocmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYpO1xuXHRcdFx0aW5saW5lX2NvbW1lbnQgbGV4YnVmfVxuXHRcdCAgIHwgJy8nICcqJyB7aW5saW5lX2NvbW1lbnQgbGV4YnVmOyBpbmxpbmVfY29tbWVudCBsZXhidWZ9XG5cdFx0ICAgfCBfIHtpbmxpbmVfY29tbWVudCBsZXhidWZ9XG57XG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmlsZSA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZmlsZX0gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmlsZSA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgdHJ5XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWxlIGluXG4gICAgICBsZXQgb3V0ID0gS2FwcGFQYXJzZXIuc3RhcnRfcnVsZSB0b2tlbiBsZXhidWYgY29tcGlsIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpbiBvdXRcbiAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtc2cscG9zKSAtPlxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgIGV4aXQgM1xufVxuIiwiIyA5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiBcbiAgb3BlbiBMZXhpbmdcbiAgb3BlbiBLYXBwYVBhcnNlclxuXG4gIGxldCByZWFjaF9lb2YgbGV4YnVmID1cbiAgICBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWVcblxuIGxldCByZXNldF9lb2YgbGV4YnVmID1cbiAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gZmFsc2VcblxuIGxldCBwb3NpdGlvbiBsZXhidWYgPVxuICAgbGV0IHBvcyA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gICAocG9zLnBvc19mbmFtZSwgcG9zLnBvc19sbnVtLCBwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbClcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwic2V0XCIgU0VUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInVudGlsXCIgVU5USUwgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxubGV0IHNwYWNlX2NoYXJzID0gWycgJzsnXFxuJzsnXFx0J11cblxuIyAzMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIxM1xcMjU1XFwyMTRcXDI1NVxcMjE1XFwyNTVcXDIxN1xcMjU1XFwwODRcXDAwMFxcMjE5XFwyNTVcXDE2MFxcMDAwXFxcbiAgICBcXDIyMVxcMjU1XFwyMjJcXDI1NVxcMjI1XFwyNTVcXDIyN1xcMjU1XFwyMjhcXDI1NVxcMjMxXFwyNTVcXDIzMlxcMjU1XFwyMzNcXDI1NVxcXG4gICAgXFwyMzRcXDI1NVxcMjM1XFwyNTVcXDIzNlxcMjU1XFwyNDBcXDAwMFxcMDQyXFwwMDFcXDEzNlxcMDAwXFwxNTlcXDAwMFxcMTE5XFwwMDFcXFxuICAgIFxcMDUxXFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcMDAxXFwwMDBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDE1N1xcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwwMzRcXDAwMFxcMDgzXFwwMDBcXDAwNlxcMDAwXFwwOTNcXDAwMFxcMTY4XFwwMDFcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwxNzBcXDAwMVxcMjU0XFwyNTVcXDI1M1xcMjU1XFwyNDlcXDI1NVxcMDgwXFwwMDBcXDI1MlxcMjU1XFwyNTFcXDI1NVxcMDM5XFwwMDJcXFxuICAgIFxcMDk3XFwwMDJcXDIxMVxcMDAyXFwwMTNcXDAwM1xcMTI3XFwwMDNcXDI0N1xcMjU1XFwyMTJcXDAwMlxcMjQxXFwyNTVcXDE0MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAzXFwxNTVcXDAwMVxcMTc0XFwwMDJcXDExN1xcMDAzXFwxMzhcXDAwMFxcMjM4XFwyNTVcXDE4NVxcMDAzXFwwMDlcXDAwNFxcXG4gICAgXFwwNjdcXDAwNFxcMjIwXFwyNTVcXDE0N1xcMDA0XFwyNDdcXDAwMVxcMjUzXFwyNTVcXDIyM1xcMDAyXFwyNTVcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMDA0XFwwMDBcXDIyNVxcMDAyXFwxNzhcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzlcXDAwMlxcMjU1XFwyNTVcXDAwNVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwwMDZcXDAwMFxcMTQzXFwwMDNcXDAwNFxcMDA1XFwyNTFcXDI1NVxcMTAxXFwwMDBcXDI1M1xcMjU1XFwwOTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDI1NFxcMjU1XFwyNTJcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQyXFwwMDBcXDI1NVxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDBcXDAzOVxcMDAwXFwwNDJcXDAwMFxcMDI2XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNDJcXDAwMFxcMDI5XFwwMDBcXDAzMlxcMDAwXFwwMjVcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDM4XFwwMDBcXDAyN1xcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDA2XFwwMDBcXDAyOFxcMDAwXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAwN1xcMDAwXFwwMzZcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDE2XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMzNcXDAwMFxcMDIyXFwwMDBcXDAyNFxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAzMFxcMDAwXFwwMjlcXDAwMFxcMDM0XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDMxXFwwMDBcXDAzN1xcMDAwXFwwNTRcXDAwMFxcMDEwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxNFxcMDAwXFwwMzVcXDAwMFxcMDEzXFwwMDBcXDAwNVxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDY2XFwwMDBcXDA0MlxcMDAwXFwwNDFcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDQ1XFwwMDBcXDA5MVxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwNDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDA1NlxcMDAwXFwwNTFcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwNDBcXDAwMFxcMDM4XFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDU1XFwwMDBcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDY5XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzFcXDAwMFxcMDczXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXFxuICAgIFxcMDgyXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI3XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDM0XFwwMDBcXDAwNVxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDA0NFxcMDAwXFwwODVcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDM0XFwwMDBcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDYwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA2MFxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDIxXFwwMDBcXDAyMFxcMDAwXFwwNjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcMDMxXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA1NVxcMDAwXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDAyM1xcMDAwXFwwMzFcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwMzdcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDQ3XFwwMDBcXDA2N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc0XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTNcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwwNjlcXDAwMFxcMDY5XFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDY5XFwwMDBcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNjlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDczXFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDlcXDAwMFxcMDUzXFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDgyXFwwMDBcXDA4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4MlxcMDAwXFwyNTVcXDI1NVxcMDU2XFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjRcXDAwMFxcMjU1XFwyNTVcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA4M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMTM4XFwwMDBcXDI1MlxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXFwyNTVcXDAwMlxcMjU1XFwyNTVcXDAwM1xcMjU1XFwyNTVcXDAwMFxcMDAyXFwwMDFcXDAwM1xcMjU1XCI7XG59XG5cbmxldCByZWMgdG9rZW4gbGV4YnVmID1cbiAgbGV4YnVmLkxleGluZy5sZXhfbWVtIDwtIEFycmF5Lm1ha2UgNCAoLTEpOyBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLm5ld19lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IHRva2VuIGxleGJ1ZilcbiMgNjQwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyA1MSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoQU5EKVxuIyA2NDUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChPUilcbiMgNjUwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA1MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgKEtBUFBBX0xSQVIpXG4jIDY1NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKEtBUFBBX1JBUilcbiMgNjYwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyA1NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoTEFSKVxuIyA2NjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA2IC0+XG4jIDU2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChESUZGKVxuIyA2NzAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA3IC0+XG5sZXRcbiMgNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgc1xuIyA2NzYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAobWF0Y2ggcyB3aXRoXG5cdFx0ICAgICAgfCBcIiRERUxcIiAtPiBERUxFVEVcblx0XHQgICAgICB8IFwiJEFERFwiIC0+IElOVFJPXG5cdFx0ICAgICAgfCBcIiRBUFBMWVwiIC0+IEFQUExZXG5cdFx0ICAgICAgfCBcIiRTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG5cdFx0ICAgICAgfCBcIiRTVE9QXCIgLT4gU1RPUFxuXHRcdCAgICAgIHwgXCIkRkxVWFwiIC0+IEZMVVhcblx0XHQgICAgICB8IFwiJFRSQUNLXCIgLT4gVFJBQ0tcblx0XHQgICAgICB8IFwiJFVQREFURVwiIC0+IEFTU0lHTlxuXHRcdCAgICAgIHwgXCIkUFJJTlRcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBSSU5URlwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG5cdFx0ICAgICAgfCBcIiRSVU5cIiAtPiBSVU5cblx0XHQgICAgICB8IFwiJFNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG5cdFx0ICAgICAgfCBzIC0+XG5cdFx0XHQgcmFpc2Vcblx0XHRcdCAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAgKFwiUGVydHVyYmF0aW9uIGVmZmVjdCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHQoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgICAgIClcbiMgNzAwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgOCAtPlxubGV0XG4jIDc4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJcbiMgNzA2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDEpIGluXG4jIDc4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuXHRcdG1hdGNoIGxhYiB3aXRoXG5cdFx0fCBcIkVcIiAtPiBFVkVOVFxuXHRcdHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcblx0XHR8IFwiVFwiIC0+IFRJTUVcblx0XHR8IFwiVHNpbVwiIC0+IENQVVRJTUVcblx0XHR8IFwibG9nXCIgLT4gTE9HXG5cdFx0fCBcInNpblwiIC0+IFNJTlVTXG5cdFx0fCBcImNvc1wiIC0+IENPU0lOVVNcblx0XHR8IFwidGFuXCIgLT4gVEFOXG5cdFx0fCBcImV4cFwiIC0+IEVYUE9ORU5UXG5cdFx0fCBcImludFwiIC0+IEFCU1xuXHRcdHwgXCJtb2RcIiAtPiBNT0RVTE9cblx0XHR8IFwic3FydFwiIC0+IFNRUlRcblx0XHR8IFwidHJ1ZVwiIC0+IFRSVUVcblx0XHR8IFwiZmFsc2VcIiAtPiBGQUxTRVxuXHRcdHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuXHRcdHwgXCJtYXhcIiAtPiBNQVhcblx0XHR8IFwibWluXCIgLT4gTUlOXG5cdFx0fCBcIkVtYXhcIiAtPiBFTUFYXG5cdFx0fCBcIlRtYXhcIiAtPiBUTUFYXG5cdFx0fCBcIj9cIiAtPiBUSEVOXG5cdFx0fCBcIjpcIiAtPiBFTFNFXG5cdFx0fCBcIm5vdFwiIC0+IE5PVFxuXHRcdHwgXyBhcyBzIC0+XG5cdFx0ICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgKFwiU3ltYm9sIFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0ICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICApXG4jIDczOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTA4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFRZUEUpXG4jIDc0NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEwIC0+XG4jIDEwOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChTRU1JQ09MT04pXG4jIDc0OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDExMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAobGV0IHN0ciA9IHJlYWRfbGFiZWwgW10gWydcXFwiJ10gbGV4YnVmIGluXG5cdFx0IFNUUklORyBzdHIpXG4jIDc1NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEyIC0+XG4jIDExMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgTkVXTElORSlcbiMgNzYwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTMgLT5cbiMgMTEzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKGNvbW1lbnQgbGV4YnVmKVxuIyA3NjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxNCAtPlxuIyAxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZjsgdG9rZW4gbGV4YnVmKVxuIyA3NzAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxNSAtPlxubGV0XG4jIDExNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBuXG4jIDc3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAodHJ5IElOVCAoaW50X29mX3N0cmluZyBuKVxuXHQgd2l0aCBGYWlsdXJlIF8gLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAobl5cIiBpcyBhIGluY29ycmVjdCBpbnRlZ2VyXCIsXG5cdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDc4NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE2IC0+XG5sZXRcbiMgMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgIGZcbiMgNzkwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpKVxuIyA3OTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxNyAtPlxubGV0XG4jIDEyMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgODAwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyAxMjIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExBQkVMKHgpKVxuIyA4MDQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxOCAtPlxubGV0XG4jIDEyMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgc3RyXG4jIDgxMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAoa2V5d29yZF9vcl9pZCBzdHIpXG4jIDgxNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE5IC0+XG4jIDEyNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChBVClcbiMgODE5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjAgLT5cbiMgMTI1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKENPTU1BKVxuIyA4MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMSAtPlxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoT1BfUEFSKVxuIyA4MjkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMiAtPlxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQ0xfUEFSKVxuIyA4MzQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMyAtPlxuIyAxMjggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoT1BfQ1VSKVxuIyA4MzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNCAtPlxuIyAxMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQ0xfQ1VSKVxuIyA4NDQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNSAtPlxuIyAxMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoUElQRSlcbiMgODQ5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjYgLT5cbiMgMTMxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKERPVClcbiMgODU0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjcgLT5cbiMgMTMyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFBMVVMpXG4jIDg1OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI4IC0+XG4jIDEzMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChNVUxUKVxuIyA4NjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyOSAtPlxuIyAxMzQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoTUlOVVMpXG4jIDg2OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMwIC0+XG4jIDEzNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChQT1cpXG4jIDg3NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMxIC0+XG4jIDEzNiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChESVYpXG4jIDg3OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMyIC0+XG4jIDEzNyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChTTUFMTEVSKVxuIyA4ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzMyAtPlxuIyAxMzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoR1JFQVRFUilcbiMgODg5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzQgLT5cbiMgMTM5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEVRVUFMKVxuIyA4OTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNSAtPlxubGV0XG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBsYWJcbiMgOTAwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyAxNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKFxuXHRcdG1hdGNoIGxhYiB3aXRoXG5cdFx0fCBcImFnZW50XCIgLT4gU0lHTkFUVVJFXG5cdFx0fCBcImluaXRcIiAtPiBJTklUXG5cdFx0fCBcInZhclwiIC0+IExFVFxuXHRcdHwgXCJwbG90XCIgLT4gUExPVFxuXHRcdHwgXCJtb2RcIiAtPiBQRVJUXG5cdFx0fCBcIm9ic1wiIC0+IE9CU1xuXHRcdHwgXCJkZWZcIiAtPiBDT05GSUdcblx0XHR8IFwidG9rZW5cIiAtPiBUT0tFTlxuXHRcdHwgXyBhcyBzIC0+XG5cdFx0ICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKFwiSW5zdHJ1Y3Rpb24gXFxcIlwiXnNeXCJcXFwiIG5vdCByZWNvZ25pemVkXCIsXG5cdFx0XHRcdFx0TG9jLm9mX3Bvc1xuXHRcdFx0XHRcdChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHRcdCAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIClcbiMgOTIwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzYgLT5cbiMgMTU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEtBUFBBX0xOSylcbiMgOTI1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzcgLT5cbmxldFxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIHNcbiMgOTMxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnficgaW5cblx0XHRcdFx0bGV0IHIgPSBTdHJpbmcuc3ViIHMgKGkrMSkgKFN0cmluZy5sZW5ndGggcy1pLTEpIGluXG5cdFx0XHRcdEtBUFBBX01SSyByXG5cdFx0XHQgICAgICAgKVxuIyA5MzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzOCAtPlxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoS0FQUEFfV0xEKVxuIyA5NDMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzOSAtPlxuIyAxNjMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoS0FQUEFfU0VNSSlcbiMgOTQ4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNDAgLT5cbiMgMTY0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKHRva2VuIGxleGJ1ZilcbiMgOTUzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNDEgLT5cbiMgMTY1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKHJlYWNoX2VvZiBsZXhidWY7IEVPRilcbiMgOTU4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNDIgLT5cbmxldFxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgY1xuIyA5NjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoXG5cdFx0ICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAoXCJpbnZhbGlkIHVzZSBvZiBjaGFyYWN0ZXIgXCJeIFN0cmluZy5tYWtlIDEgYyxcblx0XHRcdCAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdFx0ICApXG4jIDk3MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xhYmVsX3JlYyBhY2MgY2hhcl9saXN0IGxleGJ1ZiA2N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGFiZWxfcmVjIGFjYyBjaGFyX2xpc3QgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IFN0cmluZy5tYWtlIDEgeCkgYWNjKSlcbiMgOTg1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCBsZXhidWYpXG4jIDk5MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyAxNzcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgY1xuIyA5OTYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAxNzcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoaWYgTGlzdC5tZW0gYyBjaGFyX2xpc3Rcblx0ICAgIHRoZW4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IFN0cmluZy5tYWtlIDEgeCkgYWNjKVxuXHQgICAgZWxzZSByZWFkX2xhYmVsIChjOjphY2MpIGNoYXJfbGlzdCBsZXhidWYpXG4jIDEwMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGFiZWxfcmVjIGFjYyBjaGFyX2xpc3QgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBjb21tZW50IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9jb21tZW50X3JlYyBsZXhidWYgNzRcbmFuZCBfX29jYW1sX2xleF9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE4MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgTkVXTElORSlcbiMgMTAxNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTgzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWY7IHRva2VuIGxleGJ1ZilcbiMgMTAxOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTg0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKEVPRilcbiMgMTAyNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMTg1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChjb21tZW50IGxleGJ1ZilcbiMgMTAyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfY29tbWVudF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBpbmxpbmVfY29tbWVudCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiA4M1xuYW5kIF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE4OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCBsZXhidWYpXG4jIDEwNDEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDE4OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAoICgpIClcbiMgMTA0NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTkxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChpZ25vcmUgKHJlYWRfbGFiZWwgW10gWydcXFwiJ10gbGV4YnVmKTtcblx0XHRcdGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA1MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMTkzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIChpbmxpbmVfY29tbWVudCBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMTk0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChpbmxpbmVfY29tbWVudCBsZXhidWYpXG4jIDEwNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxOTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuIFxuICBsZXQgY29tcGlsZSBsb2dnZXIgY29tcGlsIGZpbGUgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZpbGV9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpbGUgOjogY29tcGlsLkFzdC5maWxlbmFtZXMgfSBpblxuICAgIHRyeVxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmlsZSBpblxuICAgICAgbGV0IG91dCA9IEthcHBhUGFyc2VyLnN0YXJ0X3J1bGUgdG9rZW4gbGV4YnVmIGNvbXBpbCBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW4gb3V0XG4gICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobXNnLHBvcykgLT5cbiAgICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICBleGl0IDNcblxuIyAxMDg2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNhdGFsb2cgPSBLZmlsZXMuY3JlYXRlICgpXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IENhdGFsb2cgOiBLZmlsZXMuY2F0YWxvZ19pdGVtIGxpc3QgaGFuZGxlXG4gIHwgSW5mbyA6IChzdHJpbmcgKiBpbnQpIGhhbmRsZVxuICB8IEFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCBoYW5kbGVcblxudHlwZSBib3ggPVxuICB8IEIgOiAnYSBoYW5kbGUgKiBpbnQgKiAoJ2EsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCAtPiBib3hcblxubGV0IHJlcGx5IHBvc3Qgd3JpdGVfdiBpZCB2ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTtcbiAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICBSZXN1bHRfdXRpbC53cml0ZV90IHdyaXRlX3ZcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfbGlzdCBSZXN1bHRfdXRpbC53cml0ZV9tZXNzYWdlKVxuICAgICAgICAgICAgICAgIGIgdik7XG4gICAgICAgICAgXSlcbiAgICAgICgpXG4gIGluXG4gIHBvc3QgbWVzc2FnZVxuXG5sZXQgd3JpdGVfY2F0YWxvZ19pdGVtcyA9IEpzb25VdGlsLndyaXRlX2xpc3QgS2ZpbGVzLndyaXRlX2NhdGFsb2dfaXRlbVxuXG5sZXQgbGlmdF9hbnN3ZXIgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgfCBSZXN1bHQuRXJyb3IgdGV4dCAtPlxuICAgIFJlc3VsdF91dGlsLmVycm9yXG4gICAgICBbIHsgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lOyBzZXZlcml0eSA9IExvZ3MuRXJyb3I7IHRleHQgfSBdXG5cbmxldCBvbl9tZXNzYWdlIHlpZWxkIHBvc3QgPVxuICBsZXQgY3VycmVudF9pZCA9IHJlZiBOb25lIGluXG4gIGZ1biB0ZXh0IC0+XG4gICAgdHJ5XG4gICAgICBMd3QuYmluZFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnQgKGZ1biBzdCBiIG1zZ19pZCAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IGN1cnJlbnRfaWQgOj0gU29tZSBtc2dfaWQgaW5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgKGZ1biBzdCBiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZUNhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmNhdGFsb2cgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChDYXRhbG9nLCBtc2dfaWQsIFJlc3VsdF91dGlsLm9rIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZUNyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgS2ZpbGVzLmZpbGVfY3JlYXRlIH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZUdldFwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX2dldCB+aWQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChJbmZvLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZU1vdmVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX21vdmUgfnBvc2l0aW9uIH5pZCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlVXBkYXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX3BhdGNoIH5pZCBjb250ZW50IGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVEZWxldGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuZmlsZV9kZWxldGUgfmlkIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIlByb2plY3RQYXJzZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5iaW5kIChLZmlsZXMucGFyc2UgeWllbGQgY2F0YWxvZykgKGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKEFzdCwgbXNnX2lkLCBvdXQpKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJQcm9qZWN0T3ZlcndyaXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gQXN0LnJlYWRfcGFyc2luZ19jb21waWwgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBLZmlsZXMub3ZlcndyaXRlIGlkIGNvbnRlbnQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5vdGhpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IFwiSW52YWxpZCBkaXJlY3RpdmU6IFwiIF4geDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICkpKSlcbiAgICAgICAgICAgICAgICAgIHN0IGIpKVxuICAgICAgICAgICB0ZXh0KVxuICAgICAgICAoZnVuIGFuc3dlciAtPlxuICAgICAgICAgIGxldCAoKSA9IGN1cnJlbnRfaWQgOj0gTm9uZSBpblxuICAgICAgICAgIG1hdGNoIGFuc3dlciB3aXRoXG4gICAgICAgICAgfCBCIChDYXRhbG9nLCBtc2dfaWQsIHgpIC0+IHJlcGx5IHBvc3Qgd3JpdGVfY2F0YWxvZ19pdGVtcyBtc2dfaWQgeFxuICAgICAgICAgIHwgQiAoTm90aGluZywgbXNnX2lkLCB4KSAtPlxuICAgICAgICAgICAgcmVwbHkgcG9zdCBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBtc2dfaWQgeFxuICAgICAgICAgIHwgQiAoQXN0LCBtc2dfaWQsIHgpIC0+IHJlcGx5IHBvc3QgQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChJbmZvLCBtc2dfaWQsIHgpIC0+XG4gICAgICAgICAgICByZXBseSBwb3N0XG4gICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZ1xuICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgICAgICAgICBtc2dfaWQgeClcbiAgICB3aXRoIGUgLT5cbiAgICAgIChtYXRjaCAhY3VycmVudF9pZCB3aXRoXG4gICAgICB8IFNvbWUgbXNnX2lkIC0+XG4gICAgICAgIHJlcGx5IHBvc3QgWW9qc29uLkJhc2ljLndyaXRlX251bGwgbXNnX2lkXG4gICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgIHJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgdGV4dCA9IFwiRXhjZXB0aW9uIHJhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgXSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggZSB3aXRoXG4gICAgICAgIHwgWW9qc29uLkpzb25fZXJyb3IgeCAtPlxuICAgICAgICAgIHBvc3RcbiAgICAgICAgICAgIChZb2pzb24udG9fc3RyaW5nXG4gICAgICAgICAgICAgICAoYFN0cmluZ1xuICAgICAgICAgICAgICAgICAoeCBeIFwiXFxuTWVzc2FnZSBmb3JtYXQgbXVzdCBiZSBbIGlkLCBbXFxcIlJlcXVlc3RcXFwiLCAuLi4gXSBdXCIpKSlcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgcG9zdFxuICAgICAgICAgICAgKFlvanNvbi50b19zdHJpbmdcbiAgICAgICAgICAgICAgIChgU3RyaW5nXG4gICAgICAgICAgICAgICAgIChcInVuZXhwZWN0ZWQgZXhjZXB0aW9uOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBlXG4gICAgICAgICAgICAgICAgXiBcIlxcbk1lc3NhZ2UgZm9ybWF0IG11c3QgYmUgWyBpZCwgW1xcXCJSZXF1ZXN0XFxcIiwgLi4uIF0gXVwiKSkpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQXN0XG5cbmxldCByZWMgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gKGFsZywgcG9zKSA9XG4gIG1hdGNoIGFsZyB3aXRoXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgYXN0IC0+XG4gICAgKG1hdGNoIGRvbWFpbiB3aXRoXG4gICAgfCBTb21lIChvcmlnaW4sIGNvbnRhY3RfbWFwLCBkb21haW4pIC0+XG4gICAgICBsZXQgZG9tYWluJywgY2NzID1cbiAgICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmVcbiAgICAgICAgICB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiA/b3JpZ2luIGFzdFxuICAgICAgaW5cbiAgICAgIGxldCBvdXRfY2NzID0gTGlzdC5tYXAgKGZ1biAoeCwgXykgLT4gQXJyYXkubWFwIGZzdCB4KSBjY3MgaW5cbiAgICAgIFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbicpLCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0Ugb3V0X2NjcywgcG9zKVxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKFwiVGhlb3JpdGljYWxseSBwdXJlIGFsZ19leHByIGhhcyBhIG1peHR1cmVcIiwgcG9zKSkpXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBpIC0+IGRvbWFpbiwgKEFsZ19leHByLkFMR19WQVIgaSwgcG9zKVxuICB8IEFsZ19leHByLlRPS0VOX0lEIGkgLT4gZG9tYWluLCAoQWxnX2V4cHIuVE9LRU5fSUQgaSwgcG9zKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCAtPiBkb21haW4sIChBbGdfZXhwci5TVEFURV9BTEdfT1Agb3AsIHBvcylcbiAgfCBBbGdfZXhwci5DT05TVCBuIC0+IGRvbWFpbiwgKEFsZ19leHByLkNPTlNUIG4sIHBvcylcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgbGV0IGRvbWFpbicnLCBiJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJyBiIGluXG4gICAgZG9tYWluJycsIChBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGRvbWFpbicsIChBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhJyksIHBvcylcbiAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBsZXQgZG9tYWluJywgY29uZCcgPVxuICAgICAgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGNvbmRcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgeWVzJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJyB5ZXMgaW5cbiAgICBsZXQgZG9tYWluJycnLCBubycgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicnIG5vIGluXG4gICAgZG9tYWluJycnLCAoQWxnX2V4cHIuSUYgKGNvbmQnLCB5ZXMnLCBubycpLCBwb3MpXG4gIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDYW5ub3QgZGVhbCB3aXRoIGRlcml2YXRpdmUgaW4gZXhwcmVzc2lvbnNcIiwgcG9zKSlcblxuYW5kIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiA9IGZ1bmN0aW9uXG4gIHwgQWxnX2V4cHIuVFJVRSwgcG9zIC0+IGRvbWFpbiwgKEFsZ19leHByLlRSVUUsIHBvcylcbiAgfCBBbGdfZXhwci5GQUxTRSwgcG9zIC0+IGRvbWFpbiwgKEFsZ19leHByLkZBTFNFLCBwb3MpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBsZXQgZG9tYWluJycsIGInID0gY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJyBiIGluXG4gICAgZG9tYWluJycsIChBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEnLCBiJyksIHBvcylcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYSksIHBvcyAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgZG9tYWluJywgKEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhJyksIHBvcylcbiAgfCBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgYSwgYiksIHBvcyAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBsZXQgZG9tYWluJycsIGInID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhJywgYicpLCBwb3MpXG5cbmxldCBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gKGFsZywgcG9zKSA9XG4gIHNuZCBAQCBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIE5vbmUgKGFsZywgcG9zKVxuXG5sZXQgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiA/b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgIChhbGcsIHBvcykgPVxuICBtYXRjaFxuICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICAgIChTb21lIChvcmlnaW4sIGNvbnRhY3RfbWFwLCBkb21haW4pKVxuICAgICAgKGFsZywgcG9zKVxuICB3aXRoXG4gIHwgU29tZSAoXywgXywgZG9tYWluKSwgYWxnIC0+IGRvbWFpbiwgYWxnXG4gIHwgTm9uZSwgXyAtPiBmYWlsd2l0aCBcImRvbWFpbiBoYXMgYmVlbiBsb3N0IGluIEV4cHIuY29tcGlsZV9hbGdcIlxuXG5sZXQgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gP29yaWdpbiBjb250YWN0X21hcCBkb21haW5cbiAgICAoYWxnLCBwb3MpID1cbiAgbWF0Y2hcbiAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgKFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikpXG4gICAgICAoYWxnLCBwb3MpXG4gIHdpdGhcbiAgfCBTb21lIChfLCBfLCBkb21haW4pLCBhbGcgLT4gZG9tYWluLCBhbGdcbiAgfCBOb25lLCBfIC0+IGZhaWx3aXRoIFwiZG9tYWluIGhhcyBiZWVuIGxvc3QgaW4gRXhwci5jb21waWxlX2FsZ1wiXG5cbmxldCB0b2tlbmlmeSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBsID1cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biAoYWxnX2V4cHIsIGlkKSAoZG9tYWluLCBvdXQpIC0+XG4gICAgICBsZXQgZG9tYWluJywgYWxnID1cbiAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2V4cHJcbiAgICAgIGluXG4gICAgICBkb21haW4nLCAoYWxnLCBpZCkgOjogb3V0KVxuICAgIGwgKGRvbWFpbiwgW10pXG5cbigqIHRyYW5zZm9ybSBhbiBMS2FwcGEgcnVsZSBpbnRvIGEgUHJpbWl0aXZlcyBydWxlICopXG5sZXQgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9kZXBzX21hY2hpbmVyeSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZG9tYWluIH5zeW50YXhfcmVmIChydWxlLCBfKSA9XG4gIGxldCBkb21haW4nLCBkZWx0YV90b2tzID1cbiAgICB0b2tlbmlmeSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgcnVsZS5MS2FwcGEucl9kZWx0YV90b2tlbnNcbiAgaW5cbiAgKCogbGV0IG9uZV9zaWRlIHN5bnRheF9yZWYgbGFiZWwgKGRvbWFpbixkZXBzX21hY2hpbmVyeSx1bmFyeV9jY3MsYWNjKVxuICAgICAgIHJhdGUgdW5hcnlfcmF0ZSBsaHMgcmhzIHJtIGFkZCA9KilcbiAgbGV0IG9yaWdpbiwgZGVwcyA9XG4gICAgbWF0Y2ggZGVwc19tYWNoaW5lcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lLCBOb25lXG4gICAgfCBTb21lIChvLCBkKSAtPiBTb21lIG8sIFNvbWUgZFxuICBpblxuICBsZXQgdW5hcnlfaW5mb3MgPVxuICAgIGxldCBjcnAgPVxuICAgICAgY29tcGlsZV9wdXJlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIHJ1bGUuTEthcHBhLnJfcmF0ZVxuICAgIGluXG4gICAgbWF0Y2ggcnVsZS5MS2FwcGEucl91bl9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gLT4gY3JwLCBOb25lXG4gICAgfCBTb21lICgoKF8sIHBvcykgYXMgcmF0ZSksIGRpc3QpIC0+XG4gICAgICBsZXQgZGlzdCcgPVxuICAgICAgICBtYXRjaCBkaXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGQgLT5cbiAgICAgICAgICBsZXQgZCcsIF8gPSBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZCBpblxuICAgICAgICAgIFNvbWUgZCdcbiAgICAgIGluXG4gICAgICBsZXQgdW5yYXRlID0gY29tcGlsZV9wdXJlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIHJhdGUgaW5cbiAgICAgIGZ1biAoY2NzLCBib29sKSAtPlxuICAgICAgICAobWF0Y2ggQXJyYXkubGVuZ3RoIGNjcyB3aXRoXG4gICAgICAgIHwgMCB8IDEgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgbm90IGJvb2wgdGhlblxuICAgICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfdGV4dCBmXG4gICAgICAgICAgICAgICAgICAgIFwiVXNlbGVzcyBtb2xlY3VsYXIgYW1iaWd1aXR5LCB0aGUgcnVsZXMgaXMgYWx3YXlzIFxcXG4gICAgICAgICAgICAgICAgICAgICBjb25zaWRlcmVkIGFzIHVuYXJ5LlwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdW5yYXRlLCBOb25lXG4gICAgICAgIHwgMiAtPiBjcnAsIFNvbWUgKHVucmF0ZSwgZGlzdCcpXG4gICAgICAgIHwgbiAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcIlVuYXJ5IHJ1bGUgZG9lcyBub3QgZGVhbCB3aXRoIFwiIF4gc3RyaW5nX29mX2ludCBuXG4gICAgICAgICAgICAgICAgIF4gXCIgY29ubmVjdGVkIGNvbXBvbmVudHMuXCIsXG4gICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgaW5cbiAgbGV0IGJ1aWxkIGRlcHMgKChvcmlnaW4sIGNjcywgc3ludGF4LCAobmVnLCBwb3MpKSwgYm9vbCkgPVxuICAgIGxldCBjY3MnID0gQXJyYXkubWFwIGZzdCBjY3MgaW5cbiAgICBsZXQgcmF0ZSwgdW5yYXRlID0gdW5hcnlfaW5mb3MgKGNjcycsIGJvb2wpIGluXG4gICAgKCBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICBtYXRjaCBvcmlnaW4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIG8gLT4gb1xuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwidWdseSBFdmFsLnJ1bGVfb2ZfYXN0XCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB4JyA9XG4gICAgICAgICAgICBtYXRjaCB1bnJhdGUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHhcbiAgICAgICAgICAgIHwgU29tZSAodXIsIF8pIC0+IEFsZ19leHByLmFkZF9kZXAgeCBvcmlnaW4gdXJcbiAgICAgICAgICBpblxuICAgICAgICAgIEFsZ19leHByLmFkZF9kZXAgeCcgb3JpZ2luIHJhdGUpXG4gICAgICAgIGRlcHMsXG4gICAgICB7XG4gICAgICAgIFByaW1pdGl2ZXMudW5hcnlfcmF0ZSA9IHVucmF0ZTtcbiAgICAgICAgUHJpbWl0aXZlcy5yYXRlO1xuICAgICAgICBQcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzID0gY2NzJztcbiAgICAgICAgUHJpbWl0aXZlcy5yZW1vdmVkID0gbmVnO1xuICAgICAgICBQcmltaXRpdmVzLmluc2VydGVkID0gcG9zO1xuICAgICAgICBQcmltaXRpdmVzLmRlbHRhX3Rva2VucyA9IGRlbHRhX3Rva3M7XG4gICAgICAgIFByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgPSBzeW50YXhfcmVmO1xuICAgICAgICBQcmltaXRpdmVzLmluc3RhbnRpYXRpb25zID0gc3ludGF4O1xuICAgICAgfSApXG4gIGluXG4gIGxldCBydWxlX21peHR1cmVzLCAoZG9tYWluJywgb3JpZ2luJykgPVxuICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlXG4gICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgP29yaWdpbiBydWxlLkxLYXBwYS5yX21peFxuICAgICAgcnVsZS5MS2FwcGEucl9jcmVhdGVkXG4gIGluXG4gIGxldCBkZXBzX2FsZ3MnLCBydWxlc19sID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gciAoZGVwc19hbGdzLCBvdXQpIC0+XG4gICAgICAgIGxldCBkZXBzX2FsZ3MnLCByJycgPSBidWlsZCBkZXBzX2FsZ3MgciBpblxuICAgICAgICBkZXBzX2FsZ3MnLCByJycgOjogb3V0KVxuICAgICAgcnVsZV9taXh0dXJlcyAoZGVwcywgW10pXG4gIGluXG4gICggZG9tYWluJyxcbiAgICAobWF0Y2ggb3JpZ2luJyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbyAtPlxuICAgICAgU29tZVxuICAgICAgICAoIG8sXG4gICAgICAgICAgbWF0Y2ggZGVwc19hbGdzJyB3aXRoXG4gICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcInVnbHkgRXZhbC5ydWxlX29mX2FzdFwiICkpLFxuICAgIHJ1bGVzX2wgKVxuXG5sZXQgb2JzX29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZGVwcyByZXMgPVxuICBsZXQgZG9tYWluLCBvdXQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChkb21haW4sIGNvbnQpIGFsZ19leHByIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBhbGdfcG9zID1cbiAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBhbGdfcG9zIDo6IGNvbnQpXG4gICAgICAoZG9tYWluLCBbXSkgcmVzLm9ic2VydmFibGVzXG4gIGluXG4gIGlmIExpc3QuZXhpc3RzIChBbGdfZXhwci5oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWU6ZmFsc2UgYWxnX2RlcHMpIG91dCB0aGVuXG4gICAgZG9tYWluLCBMaXN0LnJldiBvdXRcbiAgZWxzZVxuICAgICggZG9tYWluLFxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUilcbiAgICAgIDo6IExpc3QucmV2IG91dCApXG5cbmxldCBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gZXggPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIGVsIChkb21haW4sIG91dCkgLT5cbiAgICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgcyAtPiBkb21haW4sIFByaW1pdGl2ZXMuU3RyX3BleHByIHMgOjogb3V0XG4gICAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIGFzdF9hbGcgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYXN0X2FsZ1xuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBQcmltaXRpdmVzLkFsZ19wZXhwciBhbGcgOjogb3V0KVxuICAgIGV4IChkb21haW4sIFtdKVxuXG5sZXQgY2Zsb3dzX29mX2xhYmVsIH5kZWJ1Z19tb2RlIG9yaWdpbiB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBvblxuICAgIGFsZ3MgcnVsZXMgKGxhYmVsLCBwb3MpIHJldl9lZmZlY3RzID1cbiAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICBpZiBvbiB0aGVuXG4gICAgICBQcmltaXRpdmVzLkNGTE9XIChTb21lIGxhYmVsLCB4LCB0ZXN0cykgOjogbFxuICAgIGVsc2VcbiAgICAgIFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKFNvbWUgbGFiZWwsIHgpIDo6IGxcbiAgaW5cbiAgbGV0IG1peCA9XG4gICAgdHJ5XG4gICAgICBsZXQgXywgKHJ1bGUsIF8pID1cbiAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUsIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAobCwgXyksIF8gLT4gbCA9IGxhYmVsKVxuICAgICAgICAgIHJ1bGVzXG4gICAgICBpblxuICAgICAgTEthcHBhLnRvX21haW50YWluZWQgcnVsZS5MS2FwcGEucl9taXhcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IF8sICh2YXIsIF8pID0gTGlzdC5maW5kIChmdW4gKChsLCBfKSwgXykgLT4gbCA9IGxhYmVsKSBhbGdzIGluXG4gICAgICAgICBtYXRjaCB2YXIgd2l0aFxuICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gbWl4XG4gICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgX1xuICAgICAgICAgfCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gX1xuICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlXG4gICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICggXCJMYWJlbCAnXCIgXiBsYWJlbFxuICAgICAgICAgICAgICAgIF4gXCInIGRvZXMgbm90IHJlZmVyIHRvIGEgbm9uIGFtYmlndW91cyBLYXBwYSBleHByZXNzaW9uXCIsXG4gICAgICAgICAgICAgICAgcG9zICkpKVxuICBpblxuICBsZXQgZG9tYWluJywgY2NzID1cbiAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gfm9yaWdpbiBtaXhcbiAgaW5cbiAgKCBkb21haW4nLFxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4geCAoeSwgdCkgLT4gYWRkcyB0IHggKEFycmF5Lm1hcCBmc3QgeSkpIHJldl9lZmZlY3RzIGNjc1xuICApXG5cbmxldCBlZmZlY3RzX29mX21vZGlmIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIChkb21haW4sIHJldl9lZmZlY3RzKSA9IGZ1bmN0aW9uXG4gIHwgQVBQTFkgKGFsZ19leHByLCAoKF8sIHBvcykgYXMgcGFjaykpIC0+XG4gICAgbGV0IGRvbWFpbicsIGFsZ19wb3MgPVxuICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2V4cHJcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgXywgZWxlbV9ydWxlcyA9XG4gICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nXG4gICAgICAgIH5zeW50YXhfcmVmOjAgcGFja1xuICAgIGluXG4gICAgbGV0IGVsZW1fcnVsZSA9XG4gICAgICBtYXRjaCBlbGVtX3J1bGVzIHdpdGhcbiAgICAgIHwgWyByIF0gLT4gclxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJBbWJpZ3VvdXMgcnVsZSBpbiBtb2RpZml0aW9uIGlzIGltcG9zc2libGVcIiwgcG9zKSlcbiAgICBpblxuICAgIGRvbWFpbicnLCBQcmltaXRpdmVzLklURVJfUlVMRSAoYWxnX3BvcywgZWxlbV9ydWxlKSA6OiByZXZfZWZmZWN0c1xuICB8IFVQREFURSAoKGksIF8pLCBhbGdfZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgYWxnX3BvcyA9XG4gICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5VUERBVEUgKGksIGFsZ19wb3MpIDo6IHJldl9lZmZlY3RzXG4gIHwgU05BUFNIT1QgKHJhdywgcGV4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgICgqd2hlbiBzcGVjaWFsaXppbmcgc25hcHNob3RzIHRvIHBhcnRpY3VsYXIgbWl4dHVyZXMsIGFkZCB2YXJpYWJsZXMgYmVsb3cqKVxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgcGV4cHInKSA6OiByZXZfZWZmZWN0c1xuICB8IFNUT1AgcGV4cHIgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5TVE9QIHBleHByJyA6OiByZXZfZWZmZWN0c1xuICB8IENGTE9XTEFCRUwgKG9uLCBsYWIpIC0+XG4gICAgY2Zsb3dzX29mX2xhYmVsIH5kZWJ1Z19tb2RlIG9yaWdpbiB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBvblxuICAgICAgYXN0X2FsZ3MgYXN0X3J1bGVzIGxhYiByZXZfZWZmZWN0c1xuICB8IENGTE9XTUlYIChvbiwgKGFzdCwgXykpIC0+XG4gICAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICAgIGlmIG9uIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5DRkxPVyAoTm9uZSwgeCwgdGVzdHMpIDo6IGxcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbWl0aXZlcy5DRkxPV09GRiAoTm9uZSwgeCkgOjogbFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicsIGNjcyA9XG4gICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiB+b3JpZ2luIGFzdFxuICAgIGluXG4gICAgKCBkb21haW4nLFxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSlcbiAgICAgICAgcmV2X2VmZmVjdHMgY2NzIClcbiAgfCBESU4gKHJlbCwgcGV4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuRElOIChyZWwsIHBleHByJykgOjogcmV2X2VmZmVjdHNcbiAgfCBESU5PRkYgcGV4cHIgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5ESU5PRkYgcGV4cHInIDo6IHJldl9lZmZlY3RzXG4gIHwgQXN0LlBSSU5UIChwZXhwciwgcHJpbnQpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgcHJpbnQnID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgcHJpbnRcbiAgICBpblxuICAgIGRvbWFpbicnLCBQcmltaXRpdmVzLlBSSU5UIChwZXhwcicsIHByaW50JykgOjogcmV2X2VmZmVjdHNcbiAgfCBQTE9URU5UUlkgLT4gZG9tYWluLCBQcmltaXRpdmVzLlBMT1RFTlRSWSA6OiByZXZfZWZmZWN0c1xuICB8IFNQRUNJRVNfT0YgKG9uLCBwZXhwciwgKGFzdCwgcG9zKSkgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICAgIGlmIG9uIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5TUEVDSUVTIChwZXhwcicsIHgsIHRlc3RzKSA6OiBsXG4gICAgICBlbHNlXG4gICAgICAgIFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgcGV4cHInIDo6IGxcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgY2NzID1cbiAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyB+b3JpZ2luIGFzdFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChhcnIsIF8pIC0+XG4gICAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGFyciA+IDEgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIlNQRUNJRVNfT0YgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBvbmUgY29ubmVjdGVkIGNvbXBvbmVudFwiLFxuICAgICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgICAgICAgY2NzXG4gICAgaW5cbiAgICAoIGRvbWFpbicnLFxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSlcbiAgICAgICAgcmV2X2VmZmVjdHMgY2NzIClcblxubGV0IGVmZmVjdHNfb2ZfbW9kaWZzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBsID1cbiAgbGV0IGRvbWFpbicsIHJldl9lZmZlY3RzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGVmZmVjdHNfb2ZfbW9kaWYgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcClcbiAgICAgIChkb21haW4sIFtdKSBsXG4gIGluXG4gIGRvbWFpbicsIExpc3QucmV2IHJldl9lZmZlY3RzXG5cbmxldCBjb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2sgPVxuICBlZmZlY3RzX29mX21vZGlmcyBbXSBbXSAoT3BlcmF0b3IuTU9ESUYgKC0xKSlcblxuKCogaW50ZXJ2ZW50aW9ucyB3aXRob3V0IHByZSBhbmQgcG9zdCwgYnV0IHdpdGggYWxhcm0gYXJlIG5vdCBhcHBsaWVkXG4gICBhdCBpbml0aWFsaXNhdGlvbiAqKVxubGV0IHBlcnRfbm90X2luaXQgb3ZlcndyaXRlX3QwIHggeSB6ID1cbiAgbWF0Y2ggeCwgeSwgeiB3aXRoXG4gIHwgXywgU29tZSBwLCBfIC0+IHBcbiAgfCBTb21lIF8sIE5vbmUsIE5vbmUgLT5cbiAgICBsZXQgdF92YXIgPVxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUilcbiAgICBpblxuICAgIGxldCB0MCA9IE9wdGlvbl91dGlsLmZvbGQgKGZ1biBfIHggLT4gTmJyLkYgeCkgTmJyLnplcm8gb3ZlcndyaXRlX3QwIGluXG4gICAgbGV0IGluaXRfdCA9IExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCB0MCkgaW5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09NUEFSRV9PUCAoT3BlcmF0b3IuR1JFQVRFUiwgdF92YXIsIGluaXRfdCkpXG4gIHwgTm9uZSwgTm9uZSwgTm9uZSB8IFNvbWUgXywgTm9uZSwgU29tZSBfIHwgTm9uZSwgTm9uZSwgU29tZSBfIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuVFJVRVxuXG5sZXQgcGVydF9vZl9yZXN1bHQgfmRlYnVnX21vZGUgfndhcm5pbmcgP292ZXJ3cml0ZV90MCBhc3RfYWxncyBhc3RfcnVsZXNcbiAgICBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiByZXMgPVxuICBsZXQgZG9tYWluLCBvdXRfYWxnX2RlcHMsIF8sIGxwZXJ0LCB0cmFja2luZ19lbmFibGVkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZG9tYWluLCBhbGdfZGVwcywgcF9pZCwgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWQpXG4gICAgICAgICAgICgoYWxhcm0sIHByZV9leHByLCBtb2RpZl9leHByX2xpc3QsIG9wdF9wb3N0KSwgcG9zKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGFsYXJtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgICAgaWYgTmJyLmNvbXBhcmUgbiBOYnIuemVybyA8PSAwIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcImFsYXJtIGhhcyB0byBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC4wXCIsIHBvcykpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvcmlnaW4gPSBPcGVyYXRvci5NT0RJRiBwX2lkIGluXG4gICAgICAgIGxldCBwcmVfZXhwcicgPSBwZXJ0X25vdF9pbml0IG92ZXJ3cml0ZV90MCBhbGFybSBwcmVfZXhwciBvcHRfcG9zdCBpblxuICAgICAgICBsZXQgZG9tYWluJywgcHJlID1cbiAgICAgICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiB+b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgICAgICAgcHJlX2V4cHInXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhbGdfZGVwcycgPVxuICAgICAgICAgIG1hdGNoIGFsYXJtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBhbGdfZGVwc1xuICAgICAgICAgIHwgTm9uZSAtPiBBbGdfZXhwci5hZGRfZGVwX2Jvb2wgYWxnX2RlcHMgb3JpZ2luIHByZVxuICAgICAgICBpblxuICAgICAgICBsZXQgZG9tYWluLCBlZmZlY3RzID1cbiAgICAgICAgICBlZmZlY3RzX29mX21vZGlmcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgbW9kaWZfZXhwcl9saXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4sIG9wdCA9XG4gICAgICAgICAgbWF0Y2ggb3B0X3Bvc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkb21haW4sIE5vbmVcbiAgICAgICAgICB8IFNvbWUgcG9zdF9leHByIC0+XG4gICAgICAgICAgICBsZXQgZG9tYWluJywgKHBvc3QsIHBvc3RfcG9zKSA9XG4gICAgICAgICAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgICAgICAgICAgIHBvc3RfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGRvbWFpbicsIFNvbWUgKHBvc3QsIHBvc3RfcG9zKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFzX3RyYWNraW5nID1cbiAgICAgICAgICB0cmFja2luZ19lbmFibGVkXG4gICAgICAgICAgfHwgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBSSU5UIF9cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlVQREFURSBfIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5ESU4gXyB8IFByaW1pdGl2ZXMuRElOT0ZGIF8gfCBQcmltaXRpdmVzLlBMT1RFTlRSWVxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1RPUCBfIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgX1xuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5VUERBVEUgXyB8IFByaW1pdGl2ZXMuU1RPUCBfIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgX1xuICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QUklOVCBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfIHwgUHJpbWl0aXZlcy5ESU4gXyB8IFByaW1pdGl2ZXMuRElOT0ZGIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgcmVwZWF0ID1cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRVxuICAgICAgICAgIHwgU29tZSBwIC0+IHBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBlcnQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMuYWxhcm07XG4gICAgICAgICAgICBQcmltaXRpdmVzLnByZWNvbmRpdGlvbiA9IHByZTtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMuZWZmZWN0ID0gZWZmZWN0cztcbiAgICAgICAgICAgIFByaW1pdGl2ZXMucmVwZWF0O1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2s7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBkb21haW4sIGFsZ19kZXBzJywgc3VjYyBwX2lkLCBwZXJ0IDo6IGxwZXJ0LCBoYXNfdHJhY2tpbmcpXG4gICAgICAoZG9tYWluLCBhbGdfZGVwcywgMCwgW10sIGZhbHNlKVxuICAgICAgcmVzLnBlcnR1cmJhdGlvbnNcbiAgaW5cbiAgZG9tYWluLCBvdXRfYWxnX2RlcHMsIExpc3QucmV2IGxwZXJ0LCB0cmFja2luZ19lbmFibGVkXG5cbmxldCBjb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlIH53YXJuaW5nID9yZXNjYWxlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZW52XG4gICAgaW5pdHMgPVxuICBsZXQgaW5pdF9sLCBfID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChmdW4gKGFsZywgaW5pdF90KSBwcmVlbnYgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBBbGdfZXhwci5oYXNfbWl4IH52YXJfZGVjbHM6KE1vZGVsLmdldF9hbGcgZW52KSAoZnN0IGFsZykgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIkluaXRpYWwgcXVhbnRpdGllcyBjYW5ub3QgZGVwZW5kIG9uIGEgbnVtYmVyIG9mIG9jY3VyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgIHNuZCBhbGcgKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFsZyA9XG4gICAgICAgICAgbWF0Y2ggcmVzY2FsZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFsZ1xuICAgICAgICAgIHwgU29tZSByIC0+IEFsZ19leHByLm11bHQgYWxnIChBbGdfZXhwci5mbG9hdCByKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBpbml0X3Qgd2l0aFxuICAgICAgICB8IElOSVRfTUlYIChyYXdfbWl4LCBtaXhfcG9zKSAtPlxuICAgICAgICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBlbnYgaW5cbiAgICAgICAgICBsZXQgY291bnRlcnNfaW5mbyA9IE1vZGVsLmNvdW50ZXJzX2luZm8gZW52IGluXG4gICAgICAgICAgbGV0IHByZWVudicsIGFsZycgPVxuICAgICAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnYgYWxnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmFrZV9ydWxlID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgTEthcHBhLnJfbWl4ID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX2NyZWF0ZWQgPSByYXdfbWl4O1xuICAgICAgICAgICAgICBMS2FwcGEucl9kZWx0YV90b2tlbnMgPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfcmF0ZSA9IEFsZ19leHByLmNvbnN0IE5ici56ZXJvO1xuICAgICAgICAgICAgICBMS2FwcGEucl91bl9yYXRlID0gTm9uZTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZWRpdF9zdHlsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlZW52JycsIHN0YXRlJyA9XG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgICAgICAgICAgICAgIHByZWVudicgfnN5bnRheF9yZWY6MCAoZmFrZV9ydWxlLCBtaXhfcG9zKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBkb21haW4nJywgXywgWyBjb21waWxlZF9ydWxlIF0gLT5cbiAgICAgICAgICAgICAgKGZzdCBhbGcnLCBjb21waWxlZF9ydWxlKSwgZG9tYWluJydcbiAgICAgICAgICAgIHwgXywgXywgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGYgXCJpbml0aWFsIG1peHR1cmUgJWEgaXMgcGFydGlhbGx5IGRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAoUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOmZhbHNlIH5zaWdzIH5jb3VudGVyc19pbmZvKVxuICAgICAgICAgICAgICAgICAgICAgICByYXdfbWl4LFxuICAgICAgICAgICAgICAgICAgICAgbWl4X3BvcyApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJlZW52JycsIHN0YXRlJ1xuICAgICAgICB8IElOSVRfVE9LIHRrX2wgLT5cbiAgICAgICAgICBsZXQgcl9kZWx0YV90b2tlbnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGZ1biAodGtfaWQsIF9wb3NfdGspIC0+IGFsZywgdGtfaWQpIHRrX2xcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmYWtlX3J1bGUgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBMS2FwcGEucl9taXggPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfY3JlYXRlZCA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9kZWx0YV90b2tlbnM7XG4gICAgICAgICAgICAgIExLYXBwYS5yX3JhdGUgPSBBbGdfZXhwci5jb25zdCBOYnIuemVybztcbiAgICAgICAgICAgICAgTEthcHBhLnJfdW5fcmF0ZSA9IE5vbmU7XG4gICAgICAgICAgICAgIExLYXBwYS5yX2VkaXRfc3R5bGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgICBwcmVlbnYgfnN5bnRheF9yZWY6MFxuICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IGZha2VfcnVsZSlcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZG9tYWluJycsIF8sIFsgY29tcGlsZWRfcnVsZSBdIC0+XG4gICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgTmJyLm9uZSwgY29tcGlsZWRfcnVsZSksIGRvbWFpbicnXG4gICAgICAgICAgfCBfLCBfLCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICBpbml0c1xuICAgICAgKFBhdHRlcm4uUHJlRW52LmVtcHR5IChNb2RlbC5zaWduYXR1cmVzIGVudikgKE1vZGVsLmNvdW50ZXJzX2luZm8gZW52KSlcbiAgaW5cbiAgaW5pdF9sXG5cbmxldCBjb21waWxlX2FsZ192YXJzIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHZhcnMgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRfbWFwaVxuICAgIChmdW4gaSBkb21haW4gKGxibF9wb3MsIGFzdCkgLT5cbiAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIH5vcmlnaW46KE9wZXJhdG9yLkFMRyBpKVxuICAgICAgICAgIGNvbnRhY3RfbWFwIGRvbWFpbiBhc3RcbiAgICAgIGluXG4gICAgICBkb21haW4nLCAobGJsX3BvcywgYWxnKSlcbiAgICBkb21haW4gKEFycmF5Lm9mX2xpc3QgdmFycylcblxubGV0IGNvbXBpbGVfcnVsZXMgfmRlYnVnX21vZGUgfndhcm5pbmcgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgIGRvbWFpbiBydWxlcyA9XG4gIG1hdGNoXG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGRvbWFpbiwgc3ludGF4X3JlZiwgZGVwc19tYWNoaW5lcnksIGFjYykgKF8sIHJ1bGUpIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBvcmlnaW4nLCBjciA9XG4gICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9kZXBzX21hY2hpbmVyeSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAgICAgICBjb250YWN0X21hcCBkb21haW4gfnN5bnRheF9yZWYgcnVsZVxuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBzdWNjIHN5bnRheF9yZWYsIG9yaWdpbicsIExpc3QuYXBwZW5kIGNyIGFjYylcbiAgICAgIChkb21haW4sIDEsIFNvbWUgKE9wZXJhdG9yLlJVTEUgMCwgYWxnX2RlcHMpLCBbXSlcbiAgICAgIHJ1bGVzXG4gIHdpdGhcbiAgfCBmZG9tYWluLCBfLCBTb21lIChfLCBmYWxnX2RlcHMpLCBmcnVsZXMgLT5cbiAgICBmZG9tYWluLCBmYWxnX2RlcHMsIExpc3QucmV2IGZydWxlc1xuICB8IF8sIF8sIE5vbmUsIF8gLT4gZmFpbHdpdGggXCJUaGUgb3JpZ2luIG9mIEV2YWwuY29tcGlsZV9ydWxlcyBoYXMgYmVlbiBsb3N0XCJcblxuKCpsZXQgdHJhbnNsYXRlX2NvbnRhY3RfbWFwIHNpZ3Mga2FzYV9jb250YWN0X21hcCA9XG4gICAgbGV0IHdkbCA9IExvYy5hbm5vdF93aXRoX2R1bW15IGluXG4gICAgbGV0IHNvbCA9IEFycmF5LmluaXRcbiAgICAgICAgKFNpZ25hdHVyZS5zaXplIHNpZ3MpXG4gICAgICAgIChmdW4gaSAtPiBBcnJheS5tYWtlIChTaWduYXR1cmUuYXJpdHkgc2lncyBpKSAoW10sW10pKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgIChmdW4gYWdlbnRfbmFtZSBzaXRlcyAtPlxuICAgICAgICAgICBsZXQgaWRfYSA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgKHdkbCBhZ2VudF9uYW1lKSBzaWdzIGluXG4gICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAoZnVuIHNpdGVfbmFtZSAoc3RhdGVzLGxpbmtzKSAtPlxuICAgICAgICAgICAgICAgIGxldCBpZF9zID1cbiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZVxuICAgICAgICAgICAgICAgICAgICB+YWdlbnRfbmFtZSAod2RsIHNpdGVfbmFtZSkgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSBpblxuICAgICAgICAgICAgICAgIHNvbC4oaWRfYSkuKGlkX3MpIDwtXG4gICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gc3RhdGUgLT4gU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGlkX3MgKHdkbCBzdGF0ZSkgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSlcbiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcyxcbiAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZSxiKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkX2EgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX2FnZW50ICh3ZGwgYWdlbnRfbmFtZSkgc2lncyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkX2IgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+YWdlbnRfbmFtZSAod2RsIGIpIChTaWduYXR1cmUuZ2V0IHNpZ3MgaWRfYSkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChpZF9hLGlkX2IpKVxuICAgICAgICAgICAgICAgICAgICAgbGlua3MpKSBzaXRlcykga2FzYV9jb250YWN0X21hcCBpblxuICAgIHNvbFxuXG4gIGxldCBpbml0X2thc2EgY2FsbGVkX2Zyb20gc2lncyByZXN1bHQgPVxuICAgIGxldCBwcmVfa2FzYV9zdGF0ZSA9IEV4cG9ydF90b19LYVNpbS5pbml0IH5jb21waWw6cmVzdWx0IH5jYWxsZWRfZnJvbSAoKSBpblxuICAgIGxldCBrYXNhX3N0YXRlLGNvbnRhY3RfbWFwID0gRXhwb3J0X3RvX0thU2ltLmdldF9jb250YWN0X21hcCBwcmVfa2FzYV9zdGF0ZSBpblxuICAgIGxldCAoKSA9IEV4cG9ydF90b19LYVNpbS5kdW1wX2Vycm9yc19saWdodCBrYXNhX3N0YXRlIGluXG4gICAgdHJhbnNsYXRlX2NvbnRhY3RfbWFwIHNpZ3MgY29udGFjdF9tYXAsXG4gICAgRXhwb3J0X3RvX0thU2ltLmZsdXNoX2Vycm9ycyBrYXNhX3N0YXRlXG4qKVxubGV0IGNvbXBpbGUgfm91dHB1dHMgfnBhdXNlIH5yZXR1cm4gfnNoYXJpbmcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgID9vdmVyd3JpdGVfaW5pdCA/b3ZlcndyaXRlX3QwID9yZXNjYWxlX2luaXQgc2lnc19uZCBjb3VudGVyc19pbmZvIHRrX25kXG4gICAgY29udGFjdF9tYXAgcmVzdWx0ID1cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBvdXRwdXRzIChEYXRhLldhcm5pbmcgKFNvbWUgcG9zLCBtc2cpKSBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIisgQnVpbGRpbmcgaW5pdGlhbCBzaW11bGF0aW9uIGNvbmRpdGlvbnMuLi5cIik7XG4gIGxldCBwcmVlbnYgPSBQYXR0ZXJuLlByZUVudi5lbXB0eSBzaWdzX25kIGNvdW50ZXJzX2luZm8gaW5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLXZhcmlhYmxlIGRlY2xhcmF0aW9uc1wiKTtcbiAgbGV0IHByZWVudicsIGFsZ19hID1cbiAgICBjb21waWxlX2FsZ192YXJzIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52XG4gICAgICByZXN1bHQuQXN0LnZhcmlhYmxlc1xuICBpblxuICBsZXQgYWxnX25kID0gTmFtZWREZWNscy5jcmVhdGUgYWxnX2EgaW5cbiAgbGV0IGFsZ19kZXBzID0gQWxnX2V4cHIuc2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCB0a19uZCBhbGdfYSBpblxuXG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtcnVsZXNcIik7XG4gIGxldCBwcmVlbnYnLCBhbGdfZGVwcycsIGNvbXBpbGVkX3J1bGVzID1cbiAgICBjb21waWxlX3J1bGVzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFsZ19kZXBzIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICAgIHByZWVudicgcmVzdWx0LkFzdC5ydWxlc1xuICBpblxuICBsZXQgcnVsZV9uZCA9IEFycmF5Lm9mX2xpc3QgY29tcGlsZWRfcnVsZXMgaW5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1pbnRlcnZlbnRpb25zXCIpO1xuICBsZXQgcHJlZW52LCBhbGdfZGVwcycnLCBwZXJ0LCBoYXNfdHJhY2tpbmcgPVxuICAgIHBlcnRfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9vdmVyd3JpdGVfdDAgcmVzdWx0LnZhcmlhYmxlc1xuICAgICAgcmVzdWx0LnJ1bGVzIGFsZ19kZXBzJyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudicgcmVzdWx0XG4gIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1vYnNlcnZhYmxlc1wiKTtcbiAgbGV0IHByZWVudiwgb2JzID1cbiAgICBvYnNfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52IGFsZ19kZXBzXG4gICAgICByZXN1bHRcbiAgaW5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLXVwZGF0ZV9kb21haW4gY29uc3RydWN0aW9uXCIpO1xuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgbGV0IGRvbWFpbiwgZG9tX3N0YXRzID1cbiAgICBQYXR0ZXJuLmZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHByZWVudiBjb250YWN0X21hcFxuICBpblxuICBvdXRwdXRzXG4gICAgKERhdGEuTG9nXG4gICAgICAgKFwiXFx0IFwiXG4gICAgICAgXiBzdHJpbmdfb2ZfaW50IGRvbV9zdGF0cy5QYXR0ZXJuLlByZUVudi5zdGF0X25vZGVzXG4gICAgICAgXiBcIiAoc3ViKW9ic2VydmFibGVzIFwiXG4gICAgICAgXiBzdHJpbmdfb2ZfaW50IGRvbV9zdGF0cy5QYXR0ZXJuLlByZUVudi5zdGF0X25hdl9zdGVwc1xuICAgICAgIF4gXCIgbmF2aWdhdGlvbiBzdGVwc1wiKSk7XG5cbiAgbGV0IGVudiA9XG4gICAgTW9kZWwuaW5pdCB+ZmlsZW5hbWVzOnJlc3VsdC5maWxlbmFtZXMgZG9tYWluIHRrX25kIGFsZ19uZCBhbGdfZGVwcycnXG4gICAgICAoQXJyYXkub2ZfbGlzdCByZXN1bHQucnVsZXMsIHJ1bGVfbmQpXG4gICAgICAoQXJyYXkub2ZfbGlzdCBvYnMpIChBcnJheS5vZl9saXN0IHBlcnQpIGNvbnRhY3RfbWFwIGNvdW50ZXJzX2luZm9cbiAgaW5cblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtaW5pdGlhbCBjb25kaXRpb25zXCIpO1xuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgbGV0IGluaXRfbCA9XG4gICAgY29tcGlsZV9pbml0cyB+ZGVidWdfbW9kZSB+d2FybmluZyA/cmVzY2FsZTpyZXNjYWxlX2luaXQgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgY29udGFjdF9tYXAgZW52XG4gICAgICAoT3B0aW9uX3V0aWwudW5zb21lIHJlc3VsdC5Bc3QuaW5pdCBvdmVyd3JpdGVfaW5pdClcbiAgaW5cbiAgcmV0dXJuIChlbnYsIGhhc190cmFja2luZywgaW5pdF9sKVxuXG5sZXQgYnVpbGRfaW5pdGlhbF9zdGF0ZSB+YmluZCB+cmV0dXJuIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGNvdW50ZXIgZW52XG4gICAgfndpdGhfdHJhY2UgfndpdGhfZGVsdGFfYWN0aXZpdGllcyByYW5kb21fc3RhdGUgaW5pdF9sID1cbiAgbGV0IGdyYXBoMCA9XG4gICAgUnVsZV9pbnRlcnByZXRlci5lbXB0eSB+b3V0cHV0cyB+d2l0aF90cmFjZSByYW5kb21fc3RhdGUgZW52IGNvdW50ZXJcbiAgaW5cbiAgbGV0IHN0YXRlMCA9IFN0YXRlX2ludGVycHJldGVyLmVtcHR5IH53aXRoX2RlbHRhX2FjdGl2aXRpZXMgY291bnRlciBlbnYgaW5cbiAgU3RhdGVfaW50ZXJwcmV0ZXIuaW5pdGlhbGl6ZSB+YmluZCB+cmV0dXJuIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyXG4gICAgZ3JhcGgwIHN0YXRlMCBpbml0X2xcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5zaGFyaW5nIH5zeW50YXhfdmVyc2lvblxuICAgIGNvbnRhY3RfbWFwIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGUgPVxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IG91dHB1dHMgKERhdGEuV2FybmluZyAoU29tZSBwb3MsIG1zZykpIGluXG4gIGxldCBjY19wcmVlbnYgPSBQYXR0ZXJuLlByZUVudi5vZl9lbnYgKE1vZGVsLmRvbWFpbiBlbnYpIGluXG4gIGxldCBjb250YWN0X21hcCcgPSBBcnJheS5tYXAgQXJyYXkuY29weSBjb250YWN0X21hcCBpblxuICBsZXQgZScsIF8gPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKExLYXBwYV9jb21waWxlci5tb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgKE1vZGVsLmNvdW50ZXJzX2luZm8gZW52KVxuICAgICAgICAgKE1vZGVsLnRva2Vuc19maW5kZXIgZW52KSAoTW9kZWwuYWxnc19maW5kZXIgZW52KSBjb250YWN0X21hcCcpXG4gICAgICBlIFtdXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWZcbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBuIC0+XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIHMgYiB4IC0+IGIgfHwgeCAhPSBjb250YWN0X21hcC4obikuKHMpKSlcbiAgICAgICAgZmFsc2UgY29udGFjdF9tYXAnXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQ3JlYXRpbmcgbmV3IGxpbmsgdHlwZSBpcyBmb3JiaWRkZW5cIikpXG4gIGluXG4gIGxldCBjY19wcmVlbnYnLCBlJycgPVxuICAgIEV2YWwuY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIH5kZWJ1Z19tb2RlIH53YXJuaW5nXG4gICAgICB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIGNvbnRhY3RfbWFwIGNjX3ByZWVudiBlJ1xuICBpblxuICBsZXQgZW52JywgZ3JhcGgnID1cbiAgICBpZiBjY19wcmVlbnYgPT0gY2NfcHJlZW52JyB0aGVuXG4gICAgICBlbnYsIGdyYXBoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZmVudiwgXyA9XG4gICAgICAgIFBhdHRlcm4uZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgY2NfcHJlZW52JyBjb250YWN0X21hcFxuICAgICAgaW5cbiAgICAgICggTW9kZWwubmV3X2RvbWFpbiBmZW52IGVudixcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGZlbnYpXG4gICAgICAgICAgZ3JhcGhcbiAgICAgICAgICAoUHJpbWl0aXZlcy5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbnMgZScnKSApXG4gICAgKVxuICBpblxuICBsZXQgb3N0b3AsIG9ncmFwaCwgb3N0YXRlLCBfID1cbiAgICBTdGF0ZV9pbnRlcnByZXRlci5kb19tb2RpZmljYXRpb25zIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudicgY291bnRlciBncmFwaCdcbiAgICAgIHN0YXRlIGUnJ1xuICBpblxuICBlJycsIChlbnYnLCAob3N0b3AsIG9ncmFwaCwgb3N0YXRlKSlcblxubGV0IGdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+c2hhcmluZyB+c3ludGF4X3ZlcnNpb24gY29udGFjdF9tYXBcbiAgICBlbnYgZ3JhcGggYiA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgbGV0IGNjX3ByZWVudiA9IFBhdHRlcm4uUHJlRW52Lm9mX2VudiAoTW9kZWwuZG9tYWluIGVudikgaW5cbiAgbGV0IGInID1cbiAgICBMS2FwcGFfY29tcGlsZXIuYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgKE1vZGVsLmNvdW50ZXJzX2luZm8gZW52KSAoTW9kZWwudG9rZW5zX2ZpbmRlciBlbnYpXG4gICAgICAoTW9kZWwuYWxnc19maW5kZXIgZW52KSBiXG4gIGluXG4gIGxldCBjY19wcmVlbnYnLCAoKGInJywgcG9zX2InJykgYXMgYnBvcycnKSA9XG4gICAgRXZhbC5jb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19wcmVlbnZcbiAgICAgIGInXG4gIGluXG4gIGxldCBlbnYnLCBncmFwaCcgPVxuICAgIGlmIGNjX3ByZWVudiA9PSBjY19wcmVlbnYnIHRoZW5cbiAgICAgIGVudiwgZ3JhcGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBmZW52LCBfID1cbiAgICAgICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBjY19wcmVlbnYnIGNvbnRhY3RfbWFwXG4gICAgICBpblxuICAgICAgKCBNb2RlbC5uZXdfZG9tYWluIGZlbnYgZW52LFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gfmRlYnVnX21vZGUgZmVudilcbiAgICAgICAgICBncmFwaFxuICAgICAgICAgIChQcmltaXRpdmVzLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBicG9zJycpIClcbiAgICApXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIChNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudikgYicnIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIltUXSBjYW4gb25seSBiZSB1c2VkIGluIGluZXF1YWxpdGllc1wiLCBwb3NfYicnKSlcbiAgaW5cbiAgZW52JywgZ3JhcGgnLCBiJydcblxubGV0IGZpbmRfYWxsX2VtYmVkZGluZ3MgfmRlYnVnX21vZGUgZW52IHRyID1cbiAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgbGV0IGR1bW15X2luc3RhbmNlcyA9IEluc3RhbmNlcy5lbXB0eSBlbnYgaW5cbiAgbGV0IGdyYXBoID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgP21vZF9jb25uZWN0aXZpdHlfc3RvcmU6Tm9uZSBkdW1teV9pbnN0YW5jZXMpXG4gICAgICAoRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM6ZmFsc2UpXG4gICAgICB0clxuICBpblxuICBsZXQgb3V0LCBfID1cbiAgICBSdWxlX2ludGVycHJldGVyLm9ic19mcm9tX3RyYW5zZm9ybWF0aW9ucyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggdHJcbiAgaW5cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChwLCAocm9vdCwgXykpIC0+XG4gICAgICBwLCBNYXRjaGluZy5yZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggcCByb290KVxuICAgIG91dFxuIiwiKCogU2ltaWxhciB0byBPQ2FtbCdzIHN0YW5kYXJkIEFyZyBtb2R1bGUgYnV0IHdpdGggc29tZSBpbXByb3ZlbWVudHM6XG4gICAtIG9wdGlvbnMgYXJlIGNsYXNzaWZpZWQgd2l0aCByZXNwZWN0IHRvIGNhdGVnb3JpZXNcbiAgIC0gbmVvcGh5dGUgLyBleHBlcnQgbW9kZXNcbiAgIC0gaGlkZGVuIG9wdGlvbnNcblxuICAgTm90ZSB0aGF0IHRoZSBzcGVjIHR5cGUgaXMgcmVhbGx5IGRpZmZlcmVudC5cblxuICAgQ29weXJpZ2h0IChDKSBBbnRvaW5lIE1pbmUnIDIwMDZcbiopXG5cbmxldCBleHBlcnRfbW9kZSA9IHJlZiBmYWxzZSAoKiBzaG93cyBleHBlcnQgb3B0aW9ucyAqKVxubGV0IGRldl9tb2RlID0gcmVmIGZhbHNlICgqIGFjY2VwdCBfQUxMXyBvcHRpb25zICopXG5cbigqIFR5cGVzICopXG4oKiAqKioqKiAqKVxuXG50eXBlIGtleSA9IHN0cmluZyAoKiBjb21tYW5kLWxpbmUgYXJndW1lbnQgKilcbnR5cGUgbXNnID0gc3RyaW5nICgqIGhlbHAgbWVzc2FnZSAqKVxuXG4oKiB0eXBlIG9mIG9wdGlvbiAqKVxudHlwZSBsZXZlbCA9XG4gIHwgTm9ybWFsICgqIGFsd2F5cyBzaG93biAmIGFjY2VwdGVkICopXG4gIHwgRXhwZXJ0ICgqIHNob3duIGluIGV4cGVydCBvciBkZXZlbG9wcGVyIG1vZGUsIGFsd2F5cyBhY2NlcHRlZCAqKVxuICB8IERldmVsb3BwZXIgKCogb25seSBzaG93biAmIGFjY2VwdGVkIGluIGRldmVsb3BwZXIgbW9kZSAqKVxuICB8IEhpZGRlbiAoKiBuZXZlciBzaG93biAqKVxuXG5tb2R1bGUgU3RyaW5nSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIGxldmVsIG9wdGlvblxuXG4gIGxldCBjb21wYXJlIChhLCBiLCBfKSAoYywgZCwgXykgPVxuICAgIGxldCBjbXAgPSBjb21wYXJlIGIgZCBpblxuICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgY29tcGFyZSBhIGNcbiAgICBlbHNlXG4gICAgICBjbXBcblxuICBsZXQgcHJpbnQgZm10IChhLCBiLCBfKSA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzOiVpXCIgYSBiXG5lbmRcblxubW9kdWxlIFN0cmluZ0ludFNldE1hcCA9IFNldE1hcC5NYWtlIChTdHJpbmdJbnQpXG5tb2R1bGUgU3RyaW5nSW50TWFwID0gU3RyaW5nSW50U2V0TWFwLk1hcFxubW9kdWxlIFN0cmluZ0ludFNldCA9IFN0cmluZ0ludFNldE1hcC5TZXRcbm1vZHVsZSBTdHJpbmdTZXRNYXAgPSBNb2RzLlN0cmluZ1NldE1hcFxubW9kdWxlIFN0cmluZ1NldCA9IFN0cmluZ1NldE1hcC5TZXRcbm1vZHVsZSBTdHJpbmdNYXAgPSBTdHJpbmdTZXRNYXAuTWFwXG5cbmxldCBtaW5fbGV2ZWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9ybWFsLCBfIHwgXywgTm9ybWFsIC0+IE5vcm1hbFxuICB8IEV4cGVydCwgXyB8IF8sIEV4cGVydCAtPiBFeHBlcnRcbiAgfCBEZXZlbG9wcGVyLCBfIHwgXywgRGV2ZWxvcHBlciAtPiBEZXZlbG9wcGVyXG4gIHwgSGlkZGVuLCBIaWRkZW4gLT4gSGlkZGVuXG5cbmxldCBtYXhfbGV2ZWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgSGlkZGVuLCBfIHwgXywgSGlkZGVuIC0+IEhpZGRlblxuICB8IERldmVsb3BwZXIsIF8gfCBfLCBEZXZlbG9wcGVyIC0+IERldmVsb3BwZXJcbiAgfCBFeHBlcnQsIF8gfCBfLCBFeHBlcnQgLT4gRXhwZXJ0XG4gIHwgTm9ybWFsLCBOb3JtYWwgLT4gTm9ybWFsXG5cbmxldCBtYXhfbGV2ZWxfb3B0IGEgYiA9XG4gIG1hdGNoIGIgd2l0aFxuICB8IE5vbmUgLT4gYVxuICB8IFNvbWUgYiAtPiBtYXhfbGV2ZWwgYSBiXG5cbnR5cGUgcG9zaXRpb24gPSBpbnRcbnR5cGUgY2F0ZWdvcnkgPSBzdHJpbmcgKiBwb3NpdGlvbiAqIGxldmVsIG9wdGlvblxuXG50eXBlIHNwZWMgPVxuICB8IFZvaWQgKCogVG8gc2tpcCBhIGxpbmUgKilcbiAgfCBCb29sIG9mIGJvb2wgcmVmICgqIFNldHMgYSBib29sZWFuIHZhbHVlICopXG4gIHwgSW50IG9mIGludCByZWYgKCogU2V0cyBhbiBpbnRlZ2VyIHZhbHVlICopXG4gIHwgSW50X29wdCBvZiBpbnQgb3B0aW9uIHJlZiAoKiBTZXRzIGFuIG9wdGlvbmFsIGludGVnZXIgdmFsdWUgKilcbiAgfCBTdHJpbmcgb2Ygc3RyaW5nIHJlZiAoKiBTZXRzIGEgc3RyaW5nIHZhbHVlICopXG4gIHwgU3RyaW5nX29wdCBvZiBzdHJpbmcgb3B0aW9uIHJlZiAoKiBTZXRzIGFuIG9wdGlvbmFsIHN0cmluZyB2YWx1ZSAqKVxuICB8IFN0cmluZ19saXN0IG9mIHN0cmluZyBsaXN0IHJlZiAoKiBTZXRzIGEgbGlzdCBvZiBzdHJpbmdzICopXG4gIHwgU3RyaW5nTmJyX2xpc3Qgb2ZcbiAgICAgIChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgcmVmICgqIFNldHMgYSBsaXN0IG9mIHBhaXJzIG9mIHN0cmluZ3MgKilcbiAgfCBGbG9hdCBvZiBmbG9hdCByZWYgKCogU2V0cyBhIGZsb2F0IHZhbHVlICopXG4gIHwgRmxvYXRfb3B0IG9mIGZsb2F0IG9wdGlvbiByZWYgKCogU2V0cyBhbiBvcHRpb25hbCAgZmxvYXQgdmFsdWUgKilcbiAgKCogb25lIG9yIHNldmVyYWwgb3B0aW9ucyBhbW9uZyBhIGxpc3QgKilcbiAgfCBDaG9pY2Ugb2YgKGtleSAqIG1zZykgbGlzdCAqIGtleSBsaXN0ICoga2V5IHJlZlxuICB8IENob2ljZV9saXN0IG9mIChrZXkgKiBtc2cpIGxpc3QgKiBrZXkgbGlzdCByZWZcbiAgKCogbWV0YS1vcHRpb25zIHRvIHNldCBzZXZlcmFsIG9wdGlvbnMgYXQgb25jZTpcbiAgICAgLSAxc3Qgb3B0aW9uIGxpc3QgaXMgYXBwZW5kZWQgYXMtaXMgd2hlbiB0aGUgb3B0aW9uIGlzIHVzZWRcbiAgICAgLSB3aGVuIDItc3QgbGlzdCBpcyBub3QgZW1wdHksIHRoZSBtZXRhIG9wdGlvbiB0YWtlcyBhbiBhcmd1bWVudCB0aGF0XG4gICAgIGlzIHBhc3NlZCB0byBlYWNoIG9wdGlvbiBpbiB0aGUgbGlzdFxuICAgICAtIHRoZSBrZXlzIGluIGJvdGggbGlzdHMgbXVzdCBhcHBlYXIgYXMgcmVndWxhciBvcHRpb25zIGFzIHdlbGwhXG4gICopXG4gIHwgTXVsdGkgb2Yga2V5IGxpc3QgKiBrZXkgbGlzdFxuICAgICgqIG1ldGEtb3B0aW9ucywgdGFrZSBhIGxpc3Qgb2YgKGssZXh0KTprZXkqc3RyaW5nIGFuZCBnaXZlIHRvIHRoZSBvcHRpb24gayB0aGUgcGFyYW1ldGVyIHNeZXh0ICopXG4gIHwgTXVsdGlFeHQgb2YgKGtleSAqIHN0cmluZykgbGlzdFxuXG50eXBlIHQgPSAoa2V5ICogc3BlYyAqIG1zZyAqIChjYXRlZ29yeSAqIHBvc2l0aW9uKSBsaXN0ICogbGV2ZWwpIGxpc3RcblxuKCogVXRpbGl0aWVzICopXG4oKiAqKioqKioqKiogKilcblxubGV0IHNob3dfbGV2ZWwgKGx2bCA6IGxldmVsKSA6IGJvb2wgPVxuICBtYXRjaCBsdmwgd2l0aFxuICB8IE5vcm1hbCAtPiB0cnVlXG4gIHwgRXhwZXJ0IC0+ICFleHBlcnRfbW9kZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlICYmICFleHBlcnRfbW9kZVxuICB8IEhpZGRlbiAtPiBmYWxzZVxuXG5sZXQgc2hvd19sZXZlbF9vcHQgKGx2bF9vcHQgOiBsZXZlbCBvcHRpb24pIDogYm9vbCA9XG4gIG1hdGNoIGx2bF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbHZsIC0+IHNob3dfbGV2ZWwgbHZsXG5cbmxldCBhY2NlcHRfbGV2ZWxfZGlzcGxheSAobHZsIDogbGV2ZWwpIDogYm9vbCA9XG4gIG1hdGNoIGx2bCB3aXRoXG4gIHwgTm9ybWFsIHwgRXhwZXJ0IC0+IHRydWVcbiAgfCBEZXZlbG9wcGVyIC0+ICFkZXZfbW9kZVxuICB8IEhpZGRlbiAtPiBmYWxzZVxuXG5sZXQgYWNjZXB0X2xldmVsX3VzZSAobHZsIDogbGV2ZWwpIDogYm9vbCA9XG4gIG1hdGNoIGx2bCB3aXRoXG4gIHwgTm9ybWFsIHwgRXhwZXJ0IHwgSGlkZGVuIC0+IHRydWVcbiAgfCBEZXZlbG9wcGVyIC0+ICFkZXZfbW9kZVxuXG5sZXQgaXNrZXkgKGsgOiBrZXkpID0gU3RyaW5nLmxlbmd0aCBrID4gMiAmJiBrLlswXSA9ICctJyAmJiBrLlsxXSA9ICctJ1xuXG4oKiAtLVhYWCA9PiAtLW5vLVhYWCAqKVxubGV0IG5va2V5IChrIDoga2V5KSA9XG4gIGlmIFN0cmluZy5sZW5ndGggayA+IDIgJiYgay5bMF0gPSAnLScgJiYgay5bMV0gPSAnLScgdGhlblxuICAgIFwiLS1uby1cIiBeIFN0cmluZy5zdWIgayAyIChTdHJpbmcubGVuZ3RoIGsgLSAyKVxuICBlbHNlIGlmIFN0cmluZy5sZW5ndGggayA+IDEgJiYgay5bMF0gPSAnLScgdGhlblxuICAgIFwiLW5vLVwiIF4gU3RyaW5nLnN1YiBrIDEgKFN0cmluZy5sZW5ndGggayAtIDEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoayBeIFwiIG9wdGlvbiAobm8pIGRvZXMgbm90IGJlZ2luIHdpdGggLS0gbm9yIC1cIilcblxuKCogLS1YWFggPT4gLS0obm8tKVhYWCAqKVxubGV0IGFsdGtleSAoayA6IGtleSkgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGsgPiAyICYmIGsuWzBdID0gJy0nICYmIGsuWzFdID0gJy0nIHRoZW5cbiAgICBcIi0tKG5vLSlcIiBeIFN0cmluZy5zdWIgayAyIChTdHJpbmcubGVuZ3RoIGsgLSAyKVxuICBlbHNlIGlmIFN0cmluZy5sZW5ndGggayA+IDEgJiYgay5bMF0gPSAnLScgdGhlblxuICAgIFwiLShuby0pXCIgXiBTdHJpbmcuc3ViIGsgMSAoU3RyaW5nLmxlbmd0aCBrIC0gMSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChrIF4gXCIgb3B0aW9uIChhbHQpIGRvZXMgbm90IGJlZ2luIHdpdGggLS0gbm90IC0gXCIpXG5cbigqIGN1dHMgYSBzdHJpbmcgaW50byBzcGFjZS1zZXBhcmF0ZWQgc3ViLXN0cmluZ3MgKilcbmxldCBjdXRfbGlzdCAocyA6IHN0cmluZykgOiBzdHJpbmcgbGlzdCA9XG4gIGxldCByZWMgZG9pdCBhY2N1bSBwb3MgPVxuICAgIHRyeVxuICAgICAgbGV0IGkgPSBTdHJpbmcuaW5kZXhfZnJvbSBzIHBvcyAnICcgaW5cbiAgICAgIGlmIGkgPSBwb3MgdGhlblxuICAgICAgICBkb2l0IGFjY3VtIChpICsgMSlcbiAgICAgIGVsc2VcbiAgICAgICAgZG9pdCAoU3RyaW5nLnN1YiBzIHBvcyAoaSAtIHBvcykgOjogYWNjdW0pIChpICsgMSlcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgaWYgcG9zIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgU3RyaW5nLnN1YiBzIHBvcyAoU3RyaW5nLmxlbmd0aCBzIC0gcG9zKSA6OiBhY2N1bVxuICAgICAgZWxzZVxuICAgICAgICBhY2N1bVxuICBpblxuICBMaXN0LnJldiAoZG9pdCBbXSAwKVxuXG4oKiBvcmRlciBieSBjYXRlZ29yeSAqKVxubGV0IHAgKF8sIF8sIF8sIGwsIF8pIChfLCBfLCBfLCBsJywgXykgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gIHwgWyAoXywgaSkgXSwgWyAoXywgaScpIF0gLT4gY29tcGFyZSBpIGknXG4gIHwgKFtdIHwgXyA6OiBfIDo6IF8pLCBfIHwgXywgKFtdIHwgXyA6OiBfIDo6IF8pIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgb3JkZXIgKGEgOiB0KSA9XG4gIGxldCBvcmRlcmVkID0gcmVmIFN0cmluZ0ludE1hcC5lbXB0eSBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChhLCBiLCBjLCBjYXQsIGx2bCkgLT5cbiAgICAgIGlmIGFjY2VwdF9sZXZlbF91c2UgbHZsIHRoZW5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoY2F0LCBpKSAtPlxuICAgICAgICAgICAgbGV0IGFzc28sIG9sZF9sdmwgPVxuICAgICAgICAgICAgICBTdHJpbmdJbnRNYXAuZmluZF9kZWZhdWx0IChbXSwgSGlkZGVuKSBjYXQgIW9yZGVyZWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvcmRlcmVkIDo9XG4gICAgICAgICAgICAgIFN0cmluZ0ludE1hcC5hZGQgY2F0XG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBbIGNhdCwgaSBdLCBsdmwpIDo6IGFzc28sIG1pbl9sZXZlbCBsdmwgb2xkX2x2bClcbiAgICAgICAgICAgICAgICAhb3JkZXJlZClcbiAgICAgICAgICBjYXQpXG4gICAgYTtcbiAgb3JkZXJlZCA6PSBTdHJpbmdJbnRNYXAubWFwIChmdW4gKGEsIGIpIC0+IExpc3Quc29ydCBwIGEsIGIpICFvcmRlcmVkO1xuICAhb3JkZXJlZFxuXG4oKiBzYW5pdHkgY2hlY2tpbmcgKilcbmxldCBjaGVjayAoYSA6IHQpID1cbiAgKCogY2hlY2sgZHVwbGljYXRlcyAmIGNvbXB1dGUgb3B0aW9uIGxpc3QgKilcbiAgbGV0IG9wdHMgPSByZWYgU3RyaW5nU2V0LmVtcHR5IGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGtleSwgYiwgXywgXywgXykgLT5cbiAgICAgIGlmIGIgPSBWb2lkIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgaWYgU3RyaW5nU2V0Lm1lbSBrZXkgIW9wdHMgfHwgU3RyaW5nU2V0Lm1lbSAobm9rZXkga2V5KSAhb3B0cyB0aGVuXG4gICAgICAgIGZhaWx3aXRoIChcIkR1cGxpY2F0ZSBvcHRpb24gXCIgXiBrZXkpO1xuICAgICAgb3B0cyA6PSBTdHJpbmdTZXQuYWRkIGtleSAhb3B0cztcbiAgICAgIG9wdHMgOj0gU3RyaW5nU2V0LmFkZCAobm9rZXkga2V5KSAhb3B0cylcbiAgICBhO1xuICAoKiBjaGVjayBzdWItb3B0aW9ucyBpbiBNdWxpLW9wdGlvbnMgKilcbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoa2V5LCB0LCBfLCBfLCBfKSAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE11bHRpIChhLCBiKSAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgTGlzdC5pdGVyIChmdW4gcyAtPlxuICAgICAgICAgICAgICBpZiBpc2tleSBzICYmIG5vdCAoU3RyaW5nU2V0Lm1lbSBzICFvcHRzKSB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGggKFwiVW5rbm93biBvcHRpb24gXCIgXiBzIF4gXCIgaW4gbXVsdGktb3B0aW9uIFwiIF4ga2V5KSlcbiAgICAgICAgaW5cbiAgICAgICAgZiBhO1xuICAgICAgICBmIGJcbiAgICAgIHwgVm9pZCB8IEludCBfIHwgRmxvYXQgXyB8IENob2ljZSBfIHwgQm9vbCBfIHwgSW50X29wdCBfIHwgU3RyaW5nIF9cbiAgICAgIHwgU3RyaW5nTmJyX2xpc3QgXyB8IFN0cmluZ19vcHQgXyB8IFN0cmluZ19saXN0IF8gfCBGbG9hdF9vcHQgX1xuICAgICAgfCBDaG9pY2VfbGlzdCAoXywgXylcbiAgICAgIHwgTXVsdGlFeHQgXyAtPlxuICAgICAgICAoKSlcbiAgICBhXG5cbigqIENvbW1hbmQtbGluZSBpbnRlcmZhY2UgKilcbigqICoqKioqKioqKioqKioqKioqKioqKiogKilcblxuKCogcHJpbnRzIGEgc3RyaW5nIHdpdGggYnJlYWtzIGluc3RlYWQgb2Ygc3BhY2UgKilcbmxldCBwcmludF9tc2cgZiAocyA6IHN0cmluZykgPVxuICBQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoY3V0X2xpc3QgcylcblxuKCogZG9jdW1lbnQgdGhlIG9wdGlvbnMgb24gdGhlIHN0YW5kYXJkIG91dHB1dCEgKilcbmxldCBwcmludF9vcHRpb24gdmVyYm9zZSBmIChrZXksIHNwZWMsIG1zZywgX2NhdCwgX2x2bCkgPVxuICBsZXQga2V5MiA9IGFsdGtleSBrZXkgaW5cbiAgKG1hdGNoIHNwZWMgd2l0aFxuICB8IEJvb2wgciAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzICAgIChkZWZhdWx0OiAlcylALlwiIGtleTJcbiAgICAgIChpZiAhciB0aGVuXG4gICAgICAgICBcImVuYWJsZWRcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiZGlzYWJsZWRcIilcbiAgfCBWb2lkIC0+ICgpXG4gIHwgSW50IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGludD4gICAoZGVmYXVsdDogJWkpQC5cIiBrZXkgIXJcbiAgfCBJbnRfb3B0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8aW50PiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IFNvbWUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8aW50PiAgIChkZWZhdWx0OiAlaSlALlwiIGtleTIgaSlcbiAgfCBTdHJpbmcgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBcIlwiIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleVxuICAgIHwgcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdDogJXMpQC5cIiBrZXkgcylcbiAgfCBTdHJpbmdfb3B0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0ICVzKUAuXCIga2V5MiBzKVxuICB8IFN0cmluZ19saXN0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWVzPiAuLi4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBsIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IC4uLiAgIChkZWZhdWx0ICVhKUAuXCIga2V5MlxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKVxuICAgICAgICBsKVxuICB8IFN0cmluZ05icl9saXN0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWVzPiA8Li4uICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgbCAtPlxuICAgICAgbGV0IHJlYyBhdXggbGlzdCA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IChoMSwgaDIpIDo6IHRhaWwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWVzPiA8dmFsdWU+IChkZWZhdWx0ICVzICVzKVwiIGtleTIgaDEgaDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCB0YWlsXG4gICAgICAgIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIkAuXCJcbiAgICAgIGluXG4gICAgICBhdXggbClcbiAgfCBGbG9hdCByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxmbG9hdD4gICAoZGVmYXVsdCAlZilALlwiIGtleSAhclxuICB8IEZsb2F0X29wdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGZsb2F0PiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IFNvbWUgdiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8ZmxvYXQ+ICAgKGRlZmF1bHQ6ICVmKUAuXCIga2V5MiB2KVxuICB8IENob2ljZSAobCwgXywgcikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyBAWyVhQF0gQCAgKGRlZmF1bHQ6ICVzKUAuXCIga2V5XG4gICAgICAoUHAubGlzdFxuICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgfEAgXCIpXG4gICAgICAgICAoZnVuIGYgKGtleSwgX21zZykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIGtleSkpXG4gICAgICBsICFyXG4gIHwgQ2hvaWNlX2xpc3QgKGwsIHIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgQFslYUBdQC5cIiBrZXkyXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGtleSwgX21zZykgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslcyVzXVwiIGtleVxuICAgICAgICAgICAgIChpZiBMaXN0Lm1lbSBrZXkgIXIgdGhlblxuICAgICAgICAgICAgICAgIFwiIChkZWZhdWx0KVwiXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBcIlwiKSkpXG4gICAgICBsXG4gIHwgTXVsdGkgKF8sIFtdKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlc0AuXCIga2V5XG4gIHwgTXVsdGkgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8dmFsdWU+QC5cIiBrZXlcbiAgfCBNdWx0aUV4dCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDx2YWx1ZT5ALlwiIGtleSk7XG5cbiAgKCogc2hvd3MgZGVzY3JpcHRpb24gaWYgaW4gdmVyYm9zZSBtb2RlICopXG4gIGlmIHZlcmJvc2UgJiYgbXNnIDw+IFwiXCIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiICAgICAgQFslYUBdQC5cIiBwcmludF9tc2cgbXNnXG5cbmxldCBwcmludF9oZWxwIChoZWFkZXIgOiBib29sKSAodmVyYm9zZSA6IGJvb2wpIGYgKGEgOiB0KSA9XG4gIGxldCBuYiA9IHJlZiAwIGluXG5cbiAgKCogZ2VuZXJhbCBvcHRpb25zICopXG4gIGlmIGhlYWRlciB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJALkdlbmVyYWwgb3B0aW9uc0AuXCI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0taGVscCAgICAgICAgICAgIFZlcmJvc2UgaGVscEAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgICAtaCAgICAgICAgICAgICAgIFNob3J0IGhlbHBALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLXZlcnNpb24gICAgICAgICBTaG93IHZlcnNpb24gbnVtYmVyQC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS1ndWkgICAgICAgICAgICAgR1VJIHRvIHNlbGVjdEAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0tKG5vLSlleHBlcnQgICAgIEV4cGVydCBtb2RlIChtb3JlIG9wdGlvbnMpQC5cIjtcbiAgaW5jciBuYjtcbiAgaWYgdmVyYm9zZSAmJiBoZWFkZXIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIjtcblxuICAoKiBkdW1wICopXG4gIFN0cmluZ0ludE1hcC5pdGVyXG4gICAgKGZ1biAoY2F0LCBfLCBsdmxfb3B0KSAobCwgbHZsKSAtPlxuICAgICAgaWYgc2hvd19sZXZlbF9vcHQgbHZsX29wdCAmJiBzaG93X2xldmVsIGx2bCB0aGVuIChcbiAgICAgICAgaWYgaGVhZGVyIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIiVzQC5cIiBjYXQ7XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gKChfLCBfLCBfLCBfLCBsdmwpIGFzIHgpIC0+XG4gICAgICAgICAgICBpZiBzaG93X2xldmVsIGx2bCB0aGVuIChcbiAgICAgICAgICAgICAgaW5jciBuYjtcbiAgICAgICAgICAgICAgcHJpbnRfb3B0aW9uIHZlcmJvc2UgZiB4XG4gICAgICAgICAgICApKVxuICAgICAgICAgIGw7XG4gICAgICAgIGlmIGhlYWRlciAmJiB2ZXJib3NlIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAuXCJcbiAgICAgICkpXG4gICAgKG9yZGVyIGEpO1xuXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWkgb3B0aW9ucylALlwiICFuYlxuXG4oKiBwYXJzZSB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cywgZ2l2ZW4gYXMgYSBsaXN0IG9mIHN0cmluZ3MsXG4gICByZXR1cm5zIHRoZSBsaXN0IG9mIG5vbi1vcHRpb25zIChmaWxlbmFtZXMpIGluIHJldmVyc2Ugb3JkZXIpXG4qKVxubGV0IHBhcnNlX2xpc3QgfndpdGhfdGsgP3RpdGxlIChhIDogdCkgKGwgOiBzdHJpbmcgbGlzdCkgOiBzdHJpbmcgbGlzdCA9XG4gIGxldCBsb25nX2hlbHAgPSByZWYgZmFsc2VcbiAgYW5kIHNob3J0X2hlbHAgPSByZWYgZmFsc2VcbiAgYW5kIHNob3dfdmVyc2lvbiA9IHJlZiBmYWxzZSBpblxuXG4gIGxldCByZWMgZG9pdCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgb3B0IDo6IHJlbSAtPlxuICAgICAgKCogLSBtZWFucyBubyBtb3JlIG9wdGlvbnM6IHRoZSByZXN0IGFyZSBmaWxlbmFtZXMgKilcbiAgICAgIGlmIG9wdCA9IFwiLVwiIHRoZW5cbiAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHJlbSBhY2N1bVxuICAgICAgKCogaGVscCBvcHRpb25zICopXG4gICAgICBlbHNlIGlmIG9wdCA9IFwiLWhlbHBcIiB8fCBvcHQgPSBcIi0taGVscFwiIHRoZW4gKFxuICAgICAgICBsb25nX2hlbHAgOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW1cbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi1oXCIgdGhlbiAoXG4gICAgICAgICgqIHNob3J0ZXIgbGlzdCAqKVxuICAgICAgICBzaG9ydF9oZWxwIDo9IHRydWU7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtICgqIHZlcnNpb24gbnVtYmVyICopXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItLXZlcnNpb25cIiB0aGVuIChcbiAgICAgICAgc2hvd192ZXJzaW9uIDo9IHRydWU7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtICgqIGV4cGVydCAqKVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLS1leHBlcnRcIiB0aGVuIChcbiAgICAgICAgZXhwZXJ0X21vZGUgOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW1cbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi0tbm8tZXhwZXJ0XCIgdGhlbiAoXG4gICAgICAgIGV4cGVydF9tb2RlIDo9IGZhbHNlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbSAoKiByZWd1bGFyIG9wdGlvbiwgc3RhcnRpbmcgd2l0aCBcIi1cIiAqKVxuICAgICAgKSBlbHNlIGlmIFN0cmluZy5sZW5ndGggb3B0ID4gMSAmJiBvcHQuWzBdID0gJy0nIHRoZW4gKFxuICAgICAgICBsZXQgKChrZXksIHNwZWMsIF8sIF8sIF8pIGFzIGFhKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAgICAgKGZ1biAoa2V5LCBfc3BlYywgX21zZywgX2NhdCwgbHZsKSAtPlxuICAgICAgICAgICAgICAgIGFjY2VwdF9sZXZlbF91c2UgbHZsICYmIChvcHQgPSBrZXkgfHwgb3B0ID0gbm9rZXkga2V5KSlcbiAgICAgICAgICAgICAgYVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBGb3JtYXQucHJpbnRmXG4gICAgICAgICAgICAgIFwiSGVyZSBpcyB0aGUgbGlzdCBvZiByZWNvZ25pemVkIG9wdGlvbnNALiVhQC5VbnJlY29nbml6ZWQgXFxcbiAgICAgICAgICAgICAgIG9wdGlvbjogJXNALkAuXCJcbiAgICAgICAgICAgICAgKHByaW50X2hlbHAgdHJ1ZSBmYWxzZSkgYSBvcHQ7XG4gICAgICAgICAgICBmYWlsd2l0aCBcImJhZCBvcHRpb25cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNwZWMsIHJlbSB3aXRoXG4gICAgICAgICAgICB8IEJvb2wgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gb3B0ID0ga2V5O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gMDtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IGludF9vZl9zdHJpbmcgdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludF9vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50X29wdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IFNvbWUgKGludF9vZl9zdHJpbmcgdik7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnRfb3B0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmcgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nIHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFwiXCI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfb3B0IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBTb21lIHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfb3B0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCBfLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPiByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX2xpc3QgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSB2IDo6ICFyO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX2xpc3QgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gW107XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPiByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nTmJyX2xpc3QgXywgWyBfIF0gd2hlbiBvcHQgPSBrZXkgLT4gZmFpbHdpdGggXCJpbnZhbGlkIHBhaXJcIlxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCByLCB2JyA6OiB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9ICh2LCB2JykgOjogIXI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBbXTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gMC47XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IGZsb2F0X29mX3N0cmluZyB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0X29wdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IFNvbWUgKGZsb2F0X29mX3N0cmluZyB2KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0X29wdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgQ2hvaWNlIChsLCBsJywgciksIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgKG5vdCAoTGlzdC5leGlzdHMgKGZ1biAoaywgXykgLT4gdiA9IGspIGwpKVxuICAgICAgICAgICAgICAgICYmIG5vdCAoTGlzdC5leGlzdHMgKGZ1biBrIC0+IHYgPSBrKSBsJylcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW52YWxpZCBjaG9pY2VcIjtcbiAgICAgICAgICAgICAgciA6PSB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgQ2hvaWNlX2xpc3QgKGwsIHIpLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICBpZiBub3QgKExpc3QuZXhpc3RzIChmdW4gKGssIF8pIC0+IHYgPSBrKSBsKSB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIGNob2ljZVwiO1xuICAgICAgICAgICAgICByIDo9IHYgOjogIXI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2VfbGlzdCAoX2wsIHIpLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBbXTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpICh4LCBbXSksIHJlbSAtPlxuICAgICAgICAgICAgICBpZ25vcmUgKGRvaXQgW10geCk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aSAoeCwgeSksIHYgOjogcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZSAoZG9pdCBbXSB4KTtcbiAgICAgICAgICAgICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdCAoZnVuIF8gbCAtPiBkb2l0IFtdIFsgbDsgdiBdKSBhY2N1bSB5KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpRXh0IGwsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIF8gKGwsIHMpIC0+IGRvaXQgW10gWyBsOyB2IF4gcyBdKSBhY2N1bSBsKTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpRXh0IGwsIHJlbSAtPlxuICAgICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAoZnVuIF8gKGwsIHMpIC0+IGRvaXQgW10gWyBub2tleSBsOyBzIF0pXG4gICAgICAgICAgICAgICAgICAgYWNjdW0gbCk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aSBfLCBbXSB8IChWb2lkIHwgSW50IF8gfCBGbG9hdCBfIHwgQ2hvaWNlIF8pLCBfIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW52YWxpZCBvcHRpb24gb3IgYXJndW1lbnRcIlxuICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgRm9ybWF0LnByaW50ZiBcIldyb25nIG9wdGlvbiBvciBhcmd1bWVudCBmb3IgJXNALiVhXCIgb3B0XG4gICAgICAgICAgICAgIChwcmludF9vcHRpb24gZmFsc2UpIGFhO1xuICAgICAgICAgICAgZmFpbHdpdGggXCJiYWQgb3B0aW9uXCJcbiAgICAgICAgaW5cbiAgICAgICAgZG9pdCBhY2N1bSByZW1cbiAgICAgICAgKCogZG9lcyBub3Qgc3RhcnQgd2l0aCAtID0+IHRoaXMgaXMgZmlsZW5hbWUgKilcbiAgICAgICkgZWxzZVxuICAgICAgICBkb2l0IChvcHQgOjogYWNjdW0pIHJlbVxuICBpblxuXG4gIGxldCBmaWxlbmFtZXMgPSBkb2l0IFtdIGwgaW5cbiAgaWYgIXNob3dfdmVyc2lvbiB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJXMgQC4od2l0aCVzIFRrIGludGVyZmFjZSlALlwiXG4gICAgICAobWF0Y2ggdGl0bGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb24udmVyc2lvbl9rYXNhX2Z1bGxfbmFtZVxuICAgICAgfCBTb21lIHggLT4geClcbiAgICAgIChpZiB3aXRoX3RrIHRoZW5cbiAgICAgICAgIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIm91dFwiKTtcbiAgICBleGl0IDBcbiAgKSBlbHNlIGlmICFsb25nX2hlbHAgdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIiVhXCIgKHByaW50X2hlbHAgdHJ1ZSB0cnVlKSBhO1xuICAgIGV4aXQgMFxuICApIGVsc2UgaWYgIXNob3J0X2hlbHAgdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIiVhXCIgKHByaW50X2hlbHAgdHJ1ZSBmYWxzZSkgYTtcbiAgICBleGl0IDBcbiAgKTtcbiAgKCogTGlzdC5jb25jYXQqKSBmaWxlbmFtZXMgKCooTGlzdC5tYXAgV29yZGV4cC53b3JkZXhwIGZpbGVuYW1lcykqKVxuIiwiKCogTGFibFRLIEdVSSBmb3Igb3B0aW9uIHNlbGVjdGlvbiBTdXBlcmFyZy5cblxuICAgQ29weXJpZ2h0IChDKSBBbnRvaW5lIE1pbmUnIDIwMDZcbiAgIExpZ2h0IFZlcnNpb24gKEplcm9tZSBGZXJldClcbiAgIFRoaXMgTElHSFQgdmVyc2lvbiBkb2VzIG5vdCByZXF1aXJlIGxhYmx0a1xuKilcblxuZXhjZXB0aW9uIEV4aXQgb2Ygc3RyaW5nIGxpc3RcblxuKCogTUFJTiAqKVxuKCogKioqKiAqKVxuXG5sZXQgcGFyc2UgP3RpdGxlIChhIDogU3VwZXJhcmcudCkgKGRlZiA6IHN0cmluZyBsaXN0IHJlZikgPVxuICBTdXBlcmFyZy5jaGVjayBhO1xuICAoKiBkcm9wIHRoZSBmaXJzdCBjb21tYW5kLWxpbmUgYXJndW1lbnQ6IGl0IGlzIHRoZSBleGVjdXRhYmxlIG5hbWUgKilcbiAgbGV0IGFyZ3MgPSBMaXN0LnRsIChBcnJheS50b19saXN0IFN5cy5hcmd2KSBpblxuICAoKiBpZiBubyBhcmd1bWVudCBvciBcIi0tZ3VpXCIgZ2l2ZW4sIGxhdW5jaCB0aGUgZ3VpLCBvdGhlcndpc2UsIHBhcnNlIGFyZ3MgKilcbiAgbGV0IHJlbSA9XG4gICAgaWZcbiAgICAgIGFyZ3MgPSBbXSB8fCBhcmdzID0gWyBcIi0tZXhwZXJ0XCIgXSB8fCBhcmdzID0gWyBcIi0tbm8tZXhwZXJ0XCIgXVxuICAgICAgfHwgTGlzdC5leGlzdHMgKCggPSApIFwiLS1ndWlcIikgYXJnc1xuICAgIHRoZW5cbiAgICAgIFN1cGVyYXJnLnBhcnNlX2xpc3QgfndpdGhfdGs6ZmFsc2UgP3RpdGxlIGFcbiAgICAgICAgKGlmIExpc3QuZXhpc3RzICgoID0gKSBcIi0tZXhwZXJ0XCIpIGFyZ3MgdGhlblxuICAgICAgICAgICBbIFwiLS1oZWxwXCI7IFwiLS1leHBlcnRcIiBdXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFsgXCItLWhlbHBcIiBdKVxuICAgIGVsc2VcbiAgICAgIFN1cGVyYXJnLnBhcnNlX2xpc3QgfndpdGhfdGs6ZmFsc2UgP3RpdGxlIGEgYXJnc1xuICBpblxuICBpZiByZW0gPD4gW10gdGhlbiBkZWYgOj0gcmVtXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZGF0YV9zZXQgPSBcIkRhdGEgc2V0XCIsIDAsIE5vbmVcbmxldCBvdXRwdXQgPSBcIk91dHB1dFwiLCAxLCBOb25lXG5sZXQgc2VtYW50aWNzID0gXCJTZW1hbnRpY3NcIiwgMiwgTm9uZVxubGV0IGludGVncmF0aW9uX3NldHRpbmdzID0gXCJJbnRlZ3JhdGlvbiBzZXR0aW5nc1wiLCAzLCBOb25lXG5sZXQgbW9kZWxfcmVkdWN0aW9uID0gXCJNb2RlbCByZWR1Y3Rpb25cIiwgNCwgTm9uZVxubGV0IHN0YXRpY19hbmFseXNpcyA9IFwiU3RhdGljIGFuYWx5c2lzXCIsIDUsIFNvbWUgU3VwZXJhcmcuRXhwZXJ0XG5sZXQgZGVidWdfbW9kZSA9IFwiRGVidWcgbW9kZVwiLCA2LCBTb21lIFN1cGVyYXJnLkV4cGVydFxuXG50eXBlIHQgPSB7IG11dGFibGUgYmFja3RyYWNlOiBib29sOyBtdXRhYmxlIGRlYnVnOiBib29sIH1cblxudHlwZSB0X2d1aSA9IHtcbiAgYmFja3RyYWNlX2d1aTogYm9vbCByZWY7XG4gIGRlYnVnX2d1aTogYm9vbCByZWY7XG4gIHZlcnNpb25fZ3VpOiBib29sIHJlZjtcbiAgZ2x1dHRvbnlfZ3VpOiBib29sIHJlZjtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID0geyBiYWNrdHJhY2UgPSBmYWxzZTsgZGVidWcgPSBmYWxzZSB9XG5cbmxldCBkZWZhdWx0X2d1aSA9XG4gIHtcbiAgICBiYWNrdHJhY2VfZ3VpID0gcmVmIGZhbHNlO1xuICAgIGRlYnVnX2d1aSA9IHJlZiBmYWxzZTtcbiAgICB2ZXJzaW9uX2d1aSA9IHJlZiBmYWxzZTtcbiAgICBnbHV0dG9ueV9ndWkgPSByZWYgZmFsc2U7XG4gIH1cblxubGV0IGRvX3ZlcnNpb24gKCkgPVxuICBGb3JtYXQucHJpbnRfc3RyaW5nIFZlcnNpb24udmVyc2lvbl9tc2c7XG4gIEZvcm1hdC5wcmludF9uZXdsaW5lICgpO1xuICBleGl0IDBcblxubGV0IGRvX2dsdXR0b255ICgpID1cbiAgR2Muc2V0IHsgKEdjLmdldCAoKSkgd2l0aCBHYy5zcGFjZV9vdmVyaGVhZCA9IDUwMCAoKmRlZmF1bHQgODAqKSB9XG5cbmxldCBnZXRfZnJvbV9ndWkgdF9ndWkgPVxuICBsZXQgKCkgPSBpZiAhKHRfZ3VpLnZlcnNpb25fZ3VpKSB0aGVuIGRvX3ZlcnNpb24gKCkgaW5cbiAgbGV0ICgpID0gaWYgISh0X2d1aS5nbHV0dG9ueV9ndWkpIHRoZW4gZG9fZ2x1dHRvbnkgKCkgaW5cbiAgeyBiYWNrdHJhY2UgPSAhKHRfZ3VpLmJhY2t0cmFjZV9ndWkpOyBkZWJ1ZyA9ICEodF9ndWkuZGVidWdfZ3VpKSB9XG5cbmxldCBjb3B5X2Zyb21fZ3VpIHRfZ3VpIHQgPVxuICBsZXQgdF90bXAgPSBnZXRfZnJvbV9ndWkgdF9ndWkgaW5cbiAgdC5iYWNrdHJhY2UgPC0gdF90bXAuYmFja3RyYWNlO1xuICB0LmRlYnVnIDwtIHRfdG1wLmRlYnVnXG5cbmxldCBvcHRpb25zX2dlbiB0IHRfZ3VpIDpcbiAgICAoc3RyaW5nXG4gICAgKiBBcmcuc3BlY1xuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogc3RyaW5nXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS12ZXJzaW9uXCIsXG4gICAgICBBcmcuVW5pdCBkb192ZXJzaW9uLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS52ZXJzaW9uX2d1aSxcbiAgICAgIFwiZGlzcGxheSB2ZXJzaW9uIG51bWJlclwiLFxuICAgICAgW10sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLS1kZWJ1Z1wiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LmRlYnVnIDwtIHRydWUpLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS5kZWJ1Z19ndWksXG4gICAgICBcIkVuYWJsZSBkZWJ1ZyBtb2RlXCIsXG4gICAgICBbIGRlYnVnX21vZGUsIDEgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItLWJhY2t0cmFjZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LmJhY2t0cmFjZSA8LSB0cnVlKSxcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkuYmFja3RyYWNlX2d1aSxcbiAgICAgIFwiQmFja3RyYWNpbmcgZXhjZXB0aW9uc1wiLFxuICAgICAgWyBkZWJ1Z19tb2RlLCAyIF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgICAoIFwiLS1nbHV0dG9ueVwiLFxuICAgICAgQXJnLlVuaXQgZG9fZ2x1dHRvbnksXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLmdsdXR0b255X2d1aSxcbiAgICAgIFwiTG93ZXIgZ2MgYWN0aXZpdHkgZm9yIGEgZmFzdGVyIGJ1dCBtZW1vcnkgaW50ZW5zaXZlIHNpbXVsYXRpb25cIixcbiAgICAgIFsgZGVidWdfbW9kZSwgMyBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gIF1cblxubGV0IG9wdGlvbnMgdCA9XG4gIExpc3QucmV2X21hcFxuICAgIChmdW4gKGEsIGIsIF8sIGMsIF8sIF8pIC0+IGEsIGIsIGMpXG4gICAgKExpc3QucmV2IChvcHRpb25zX2dlbiB0IGRlZmF1bHRfZ3VpKSlcblxubGV0IG9wdGlvbnNfZ3VpIHRfZ3VpID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgXywgYiwgYywgZCwgZSkgLT4gYSwgYiwgYywgZCwgZSlcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIGRlZmF1bHQgdF9ndWkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGlucHV0S2FwcGFGaWxlTmFtZXM6IHN0cmluZyBsaXN0O1xuICBtdXRhYmxlIG1pblZhbHVlOiBmbG9hdCBvcHRpb247XG4gIG11dGFibGUgbWF4VmFsdWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBwbG90UGVyaW9kOiBmbG9hdCBvcHRpb247XG4gIG11dGFibGUgb3V0cHV0RGF0YUZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmc7XG4gIG11dGFibGUgYmF0Y2htb2RlOiBib29sO1xuICBtdXRhYmxlIGludGVyYWN0aXZlOiBib29sO1xuICBtdXRhYmxlIHN5bnRheFZlcnNpb246IEFzdC5zeW50YXhfdmVyc2lvbjtcbn1cblxudHlwZSB0X2d1aSA9IHtcbiAgaW5wdXRLYXBwYUZpbGVOYW1lc19ndWk6IHN0cmluZyBsaXN0IHJlZjtcbiAgbWluVmFsdWVfZ3VpOiBmbG9hdCBvcHRpb24gcmVmO1xuICBtYXhWYWx1ZV9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIHBsb3RQZXJpb2RfZ3VpOiBmbG9hdCBvcHRpb24gcmVmO1xuICBvdXRwdXREYXRhRmlsZV9ndWk6IHN0cmluZyBvcHRpb24gcmVmO1xuICBvdXRwdXREaXJlY3RvcnlfZ3VpOiBzdHJpbmcgcmVmO1xuICBzeW50YXhWZXJzaW9uX2d1aTogc3RyaW5nIHJlZjtcbiAgYmF0Y2htb2RlX2d1aTogc3RyaW5nIHJlZjtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGlucHV0S2FwcGFGaWxlTmFtZXMgPSBbXTtcbiAgICBtaW5WYWx1ZSA9IE5vbmU7XG4gICAgbWF4VmFsdWUgPSBOb25lO1xuICAgIHBsb3RQZXJpb2QgPSBOb25lO1xuICAgIG91dHB1dERhdGFGaWxlID0gTm9uZTtcbiAgICBvdXRwdXREaXJlY3RvcnkgPSBcIi5cIjtcbiAgICBzeW50YXhWZXJzaW9uID0gQXN0LlY0O1xuICAgIGJhdGNobW9kZSA9IGZhbHNlO1xuICAgIGludGVyYWN0aXZlID0gZmFsc2U7XG4gIH1cblxubGV0IGRlZmF1bHRfZ3VpID1cbiAge1xuICAgIGlucHV0S2FwcGFGaWxlTmFtZXNfZ3VpID0gcmVmIFtdO1xuICAgIG1pblZhbHVlX2d1aSA9IHJlZiAoU29tZSAwLik7XG4gICAgbWF4VmFsdWVfZ3VpID0gcmVmIChTb21lIDEuKTtcbiAgICBwbG90UGVyaW9kX2d1aSA9IHJlZiAoU29tZSAwLjAxKTtcbiAgICBvdXRwdXREYXRhRmlsZV9ndWkgPSByZWYgKFNvbWUgXCJkYXRhLmNzdlwiKTtcbiAgICBvdXRwdXREaXJlY3RvcnlfZ3VpID0gcmVmIFwiLlwiO1xuICAgIHN5bnRheFZlcnNpb25fZ3VpID0gcmVmIFwiNFwiO1xuICAgIGJhdGNobW9kZV9ndWkgPSByZWYgXCJpbnRlcmFjdGl2ZVwiO1xuICB9XG5cbmxldCByZWMgYXV4IGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8ICh2LCB2YXJfdmFsKSA6OiB0YWlsIC0+XG4gICAgYXV4IHRhaWxcbiAgICAgICgoIHYsXG4gICAgICAgICB0cnkgTmJyLm9mX3N0cmluZyB2YXJfdmFsXG4gICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICByYWlzZSAoQXJnLkJhZCAoXCJcXFwiXCIgXiB2YXJfdmFsIF4gXCJcXFwiIGlzIG5vdCBhIHZhbGlkIHZhbHVlXCIpKSApXG4gICAgICA6OiBhY2N1KVxuICB8IFtdIC0+IGFjY3VcblxubGV0IGdldF9mcm9tX2d1aSB0X2d1aSA9XG4gIHtcbiAgICBtaW5WYWx1ZSA9ICEodF9ndWkubWluVmFsdWVfZ3VpKTtcbiAgICBtYXhWYWx1ZSA9ICEodF9ndWkubWF4VmFsdWVfZ3VpKTtcbiAgICBwbG90UGVyaW9kID0gISh0X2d1aS5wbG90UGVyaW9kX2d1aSk7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lcyA9ICEodF9ndWkuaW5wdXRLYXBwYUZpbGVOYW1lc19ndWkpO1xuICAgIG91dHB1dERhdGFGaWxlID0gISh0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWkpO1xuICAgIG91dHB1dERpcmVjdG9yeSA9ICEodF9ndWkub3V0cHV0RGlyZWN0b3J5X2d1aSk7XG4gICAgc3ludGF4VmVyc2lvbiA9XG4gICAgICAobWF0Y2ggISh0X2d1aS5zeW50YXhWZXJzaW9uX2d1aSkgd2l0aFxuICAgICAgfCBcIjNcIiB8IFwidjNcIiB8IFwiVjNcIiAtPiBBc3QuVjNcbiAgICAgIHwgXCI0XCIgfCBcInY0XCIgfCBcIlY0XCIgLT4gQXN0LlY0XG4gICAgICB8IF9zIC0+IEFzdC5WNCk7XG4gICAgYmF0Y2htb2RlID0gVG9vbHMubG93ZXJjYXNlICEodF9ndWkuYmF0Y2htb2RlX2d1aSkgPSBcImJhdGNoXCI7XG4gICAgaW50ZXJhY3RpdmUgPSBUb29scy5sb3dlcmNhc2UgISh0X2d1aS5iYXRjaG1vZGVfZ3VpKSA9IFwiaW50ZXJhY3RpdmVcIjtcbiAgfVxuXG5sZXQgY29weV9mcm9tX2d1aSB0X2d1aSB0ID1cbiAgbGV0IHRfdG1wID0gZ2V0X2Zyb21fZ3VpIHRfZ3VpIGluXG4gIHQubWluVmFsdWUgPC0gdF90bXAubWluVmFsdWU7XG4gIHQubWF4VmFsdWUgPC0gdF90bXAubWF4VmFsdWU7XG4gIHQucGxvdFBlcmlvZCA8LSB0X3RtcC5wbG90UGVyaW9kO1xuICB0LmlucHV0S2FwcGFGaWxlTmFtZXMgPC0gdF90bXAuaW5wdXRLYXBwYUZpbGVOYW1lcztcbiAgdC5vdXRwdXREYXRhRmlsZSA8LSB0X3RtcC5vdXRwdXREYXRhRmlsZTtcbiAgdC5vdXRwdXREaXJlY3RvcnkgPC0gdF90bXAub3V0cHV0RGlyZWN0b3J5O1xuICB0LnN5bnRheFZlcnNpb24gPC0gdF90bXAuc3ludGF4VmVyc2lvbjtcbiAgdC5iYXRjaG1vZGUgPC0gdF90bXAuYmF0Y2htb2RlO1xuICB0LmludGVyYWN0aXZlIDwtIHRfdG1wLmludGVyYWN0aXZlXG5cbmxldCBvcHRpb25zX2dlbiAodCA6IHQpICh0X2d1aSA6IHRfZ3VpKSA6XG4gICAgKHN0cmluZ1xuICAgICogQXJnLnNwZWNcbiAgICAqIFN1cGVyYXJnLnNwZWNcbiAgICAqIHN0cmluZ1xuICAgICogKFN1cGVyYXJnLmNhdGVnb3J5ICogU3VwZXJhcmcucG9zaXRpb24pIGxpc3RcbiAgICAqIFN1cGVyYXJnLmxldmVsKVxuICAgIGxpc3QgPVxuICBbXG4gICAgKCBcIi1pXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gZmljIC0+IHQuaW5wdXRLYXBwYUZpbGVOYW1lcyA8LSBmaWMgOjogdC5pbnB1dEthcHBhRmlsZU5hbWVzKSxcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19saXN0IHRfZ3VpLmlucHV0S2FwcGFGaWxlTmFtZXNfZ3VpLFxuICAgICAgXCJuYW1lIG9mIGEga2FwcGEgZmlsZSB0byB1c2UgYXMgaW5wdXQgKGNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIGZvciBcXFxuICAgICAgIG11bHRpcGxlIGlucHV0IGZpbGVzKVwiLFxuICAgICAgW10sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLWluaXRpYWxcIixcbiAgICAgIEFyZy5GbG9hdCAoZnVuIHRpbWUgLT4gdC5taW5WYWx1ZSA8LSBTb21lIHRpbWUpLFxuICAgICAgU3VwZXJhcmcuRmxvYXRfb3B0IHRfZ3VpLm1pblZhbHVlX2d1aSxcbiAgICAgIFwiTWluIHRpbWUgb2Ygc2ltdWxhdGlvbiAoYXJiaXRyYXJ5IHRpbWUgdW5pdClcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDA7IENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAwIF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAoIFwiLWxcIixcbiAgICAgIEFyZy5GbG9hdCAoZnVuIHRpbWUgLT4gdC5tYXhWYWx1ZSA8LSBTb21lIHRpbWUpLFxuICAgICAgU3VwZXJhcmcuRmxvYXRfb3B0IHRfZ3VpLm1heFZhbHVlX2d1aSxcbiAgICAgIFwiTGltaXQgb2YgdGhlIHNpbXVsYXRpb25cIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDE7IENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxIF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAoIFwiLXRcIixcbiAgICAgIEFyZy5GbG9hdFxuICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgICAgIChcIk9wdGlvbiAnLXQnIGhhcyBiZWVuIHJlcGxhY2UgYnkgJ1stdSB0aW1lXSAtbCBcIlxuICAgICAgICAgICAgICBeIHN0cmluZ19vZl9mbG9hdCBmIF4gXCInXCIpKSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWF4VmFsdWVfZ3VpLFxuICAgICAgXCJEZXByZWNhdGVkIG9wdGlvblwiLFxuICAgICAgW10sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLXBcIixcbiAgICAgIEFyZy5GbG9hdCAoZnVuIHBvaW50TnVtYmVyVmFsdWUgLT4gdC5wbG90UGVyaW9kIDwtIFNvbWUgcG9pbnROdW1iZXJWYWx1ZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkucGxvdFBlcmlvZF9ndWksXG4gICAgICBcInBsb3QgcGVyaW9kOiB0aW1lIGludGVydmFsIGJldHdlZW4gcG9pbnRzIGluIHBsb3QgKGRlZmF1bHQ6IDEuMClcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDI7IENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAyIF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAoIFwiLW9cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBvdXRwdXREYXRhRmlsZSAtPiB0Lm91dHB1dERhdGFGaWxlIDwtIFNvbWUgb3V0cHV0RGF0YUZpbGUpLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICBcImZpbGUgbmFtZSBmb3IgZGF0YSBvdXRwdXRcIixcbiAgICAgIFtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDM7XG4gICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMztcbiAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDM7XG4gICAgICBdLFxuICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgKCBcIi1kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gb3V0cHV0RGlyZWN0b3J5IC0+IHQub3V0cHV0RGlyZWN0b3J5IDwtIG91dHB1dERpcmVjdG9yeSksXG4gICAgICBTdXBlcmFyZy5TdHJpbmcgdF9ndWkub3V0cHV0RGlyZWN0b3J5X2d1aSxcbiAgICAgIFwiU3BlY2lmaWVzIGRpcmVjdG9yeSBuYW1lIHdoZXJlIG91dHB1dCBmaWxlKHMpIHNob3VsZCBiZSBzdG9yZWRcIixcbiAgICAgIFtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb24sIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDEwMDtcbiAgICAgIF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAoIFwiLW1vZGVcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgaWYgbSA9IFwiYmF0Y2hcIiB0aGVuXG4gICAgICAgICAgICB0LmJhdGNobW9kZSA8LSB0cnVlXG4gICAgICAgICAgZWxzZSBpZiBtID0gXCJpbnRlcmFjdGl2ZVwiIHRoZW5cbiAgICAgICAgICAgIHQuaW50ZXJhY3RpdmUgPC0gdHJ1ZSksXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbIFwiYmF0Y2hcIiwgXCJiYXRjaCBtb2RlXCI7IFwiaW50ZXJhY3RpdmVcIiwgXCJpbnRlcmFjdGl2ZSBtb2RlXCIgXSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICB0X2d1aS5iYXRjaG1vZGVfZ3VpICksXG4gICAgICBcImVpdGhlciBcXFwiYmF0Y2hcXFwiIHRvIG5ldmVyIGFzayBhbnl0aGluZyB0byB0aGUgdXNlciBvciBcXFwiaW50ZXJhY3RpdmVcXFwiIFxcXG4gICAgICAgdG8gYXNrIHNvbWV0aGluZyBiZWZvcmUgZG9pbmcgYW55dGhpbmdcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA3OyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCA3IF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgICAoIFwiLXN5bnRheFwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBcIjNcIiB8IFwidjNcIiB8IFwiVjNcIiAtPiB0LnN5bnRheFZlcnNpb24gPC0gQXN0LlYzXG4gICAgICAgIHwgXCI0XCIgfCBcInY0XCIgfCBcIlY0XCIgLT4gdC5zeW50YXhWZXJzaW9uIDwtIEFzdC5WNFxuICAgICAgICB8IHMgLT4gcmFpc2UgKEFyZy5CYWQgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBzeW50YXggdmVyc2lvblwiKSkpLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCIzXCIsIFwib2xkXCI7XG4gICAgICAgICAgICBcInYzXCIsIFwib2xkXCI7XG4gICAgICAgICAgICBcIlYzXCIsIFwib2xkXCI7XG4gICAgICAgICAgICBcIjRcIiwgXCJuZXdcIjtcbiAgICAgICAgICAgIFwidjRcIiwgXCJuZXdcIjtcbiAgICAgICAgICAgIFwiVjRcIiwgXCJuZXdcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHRfZ3VpLnN5bnRheFZlcnNpb25fZ3VpICksXG4gICAgICBcIlVzZSBleHBsaWNpdCBub3RhdGlvbiBmb3IgZnJlZSBzaXRlXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgOCBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gIF1cblxubGV0IG9wdGlvbnMgdCA9XG4gIExpc3QucmV2X21hcFxuICAgIChmdW4gKGEsIGIsIF8sIGMsIF8sIF8pIC0+IGEsIGIsIGMpXG4gICAgKExpc3QucmV2IChvcHRpb25zX2dlbiB0IGRlZmF1bHRfZ3VpKSlcblxubGV0IG9wdGlvbnNfZ3VpIHRfZ3VpID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgXywgYiwgYywgZCwgZSkgLT4gYSwgYiwgYywgZCwgZSlcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIGRlZmF1bHQgdF9ndWkpKVxuICBAIFtcbiAgICAgICggXCItLW91dHB1dC1wbG90XCIsXG4gICAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdF9ndWkub3V0cHV0RGF0YUZpbGVfZ3VpLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgZGF0YSBvdXRwdXRcIixcbiAgICAgICAgW1xuICAgICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTtcbiAgICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDE7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDE7XG4gICAgICAgIF0sXG4gICAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICAgKCBcIi0tZGF0YS1maWxlXCIsXG4gICAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdF9ndWkub3V0cHV0RGF0YUZpbGVfZ3VpLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgZGF0YSBvdXRwdXRcIixcbiAgICAgICAgW1xuICAgICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTtcbiAgICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDI7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDM7XG4gICAgICAgIF0sXG4gICAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgIF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmFyID0geyBtdXRhYmxlIHRpY2tzOiBpbnQ7IGJhcl9zaXplOiBpbnQ7IGJhcl9jaGFyOiBjaGFyIH1cblxudHlwZSB0ZXh0ID0ge1xuICBtdXRhYmxlIGxhc3RfbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgbGFzdF9ldmVudF9uYjogaW50O1xuICBtdXRhYmxlIGxhc3RfdGltZTogZmxvYXQ7XG59XG5cbnR5cGUgdCA9IEJhciBvZiBiYXIgfCBUZXh0IG9mIHRleHRcblxubGV0IGluY190aWNrIGMgPSBjLnRpY2tzIDwtIGMudGlja3MgKyAxXG5cbmxldCBjcmVhdGUgYmFyX3NpemUgYmFyX2NoYXIgPVxuICBpZiBVbml4LmlzYXR0eSBVbml4LnN0ZG91dCB0aGVuXG4gICAgVGV4dCB7IGxhc3RfbGVuZ3RoID0gMDsgbGFzdF90aW1lID0gLTUuOyBsYXN0X2V2ZW50X25iID0gMCB9XG4gIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBmb3IgXyA9IGJhcl9zaXplIGRvd250byAxIGRvXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgXCJfXCJcbiAgICAgIGRvbmVcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpIGluXG4gICAgQmFyIHsgdGlja3MgPSAwOyBiYXJfc2l6ZTsgYmFyX2NoYXIgfVxuICApXG5cbmxldCBwcF9ub3RfbnVsbCBmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiAoJS4yZiUlKVwiICh4ICouIDEwMC4pXG4gIHwgTm9uZSAtPiAoKVxuXG5sZXQgcHBfdGV4dCBkZWx0YV90IHRpbWUgdF9yIGV2ZW50IGVfciBmIHMgPVxuICBsZXQgc3RyaW5nID1cbiAgICBGb3JtYXQuYXNwcmludGYgXCIlLjJmIHRpbWUgdW5pdHMlYSBpbiAlaSBldmVudHMlYSV0XCIgdGltZSBwcF9ub3RfbnVsbCB0X3JcbiAgICAgIGV2ZW50IHBwX25vdF9udWxsIGVfciAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggZGVsdGFfdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgZHQgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIChqdXN0IGRpZCAlLjFmIGV2ZW50cy9zKVwiXG4gICAgICAgICAgICAoZmxvYXRfb2ZfaW50IChldmVudCAtIHMubGFzdF9ldmVudF9uYikgLy4gZHQpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVzJXNAP1wiXG4gICAgICAoU3RyaW5nLm1ha2Ugcy5sYXN0X2xlbmd0aCAnXFxiJylcbiAgICAgIHN0cmluZ1xuICAgICAgKFN0cmluZy5tYWtlIChtYXggMCAocy5sYXN0X2xlbmd0aCAtIFN0cmluZy5sZW5ndGggc3RyaW5nKSkgJyAnKVxuICBpblxuICBzLmxhc3RfbGVuZ3RoIDwtIFN0cmluZy5sZW5ndGggc3RyaW5nXG5cbmxldCByZWMgYXV4X3RpY2sgc29tZXRoaW5nIHMgbiA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgaWYgc29tZXRoaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKVxuICAgIGVsc2VcbiAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9jaGFyIEZvcm1hdC5zdGRfZm9ybWF0dGVyIHMuYmFyX2NoYXIgaW5cbiAgICBsZXQgKCkgPSBpbmNfdGljayBzIGluXG4gICAgYXV4X3RpY2sgdHJ1ZSBzIChwcmVkIG4pXG4gIClcblxubGV0IHRpY2sgfmVmZmljaWVuY3kgdGltZSB0X3IgZXZlbnQgZV9yID0gZnVuY3Rpb25cbiAgfCBCYXIgcyAtPlxuICAgIGxldCBuX3QgPSBPcHRpb25fdXRpbC51bnNvbWUgMC4gdF9yICouIGZsb2F0X29mX2ludCBzLmJhcl9zaXplIGluXG4gICAgbGV0IG5fZSA9IE9wdGlvbl91dGlsLnVuc29tZSAwLiBlX3IgKi4gZmxvYXRfb2ZfaW50IHMuYmFyX3NpemUgaW5cbiAgICBhdXhfdGljayBmYWxzZSBzIChpbnRfb2ZfZmxvYXQgKG1heCBuX3Qgbl9lKSAtIHMudGlja3MpXG4gIHwgVGV4dCBzIC0+XG4gICAgbGV0IHJ1biA9IFN5cy50aW1lICgpIGluXG4gICAgbGV0IGR0ID0gcnVuIC0uIHMubGFzdF90aW1lIGluXG4gICAgaWYgZHQgPiAwLjUgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwcF90ZXh0XG4gICAgICAgICAgKGlmIGVmZmljaWVuY3kgdGhlblxuICAgICAgICAgICAgIFNvbWUgZHRcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgdGltZSB0X3IgZXZlbnQgZV9yIEZvcm1hdC5zdGRfZm9ybWF0dGVyIHNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzLmxhc3RfZXZlbnRfbmIgPC0gZXZlbnQgaW5cbiAgICAgIHMubGFzdF90aW1lIDwtIFN5cy50aW1lICgpXG4gICAgKVxuXG5sZXQgY29tcGxldGVfcHJvZ3Jlc3NfYmFyIHRpbWUgZXZlbnQgdCA9XG4gIChtYXRjaCB0IHdpdGhcbiAgfCBCYXIgdCAtPiBhdXhfdGljayBmYWxzZSB0ICh0LmJhcl9zaXplIC0gdC50aWNrcylcbiAgfCBUZXh0IHMgLT4gcHBfdGV4dCBOb25lIHRpbWUgTm9uZSBldmVudCBOb25lIEZvcm1hdC5zdGRfZm9ybWF0dGVyIHMpO1xuICBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG91dHB1dERpck5hbWUgPSByZWYgXCJcIlxubGV0IG1hcnNoYWxpemVkT3V0RmlsZSA9IHJlZiBcIlwiXG5sZXQgY2Zsb3dGaWxlTmFtZSA9IHJlZiBcImNmbG93LmRvdFwiXG5sZXQgYnJhbmNoX2FuZF9jdXRfZW5naW5lX3Byb2ZpbGluZ05hbWUgPSByZWYgXCJjb21wcmVzc2lvbl9zdGF0dXMudHh0XCJcbmxldCB0YXNrc19wcm9maWxpbmdOYW1lID0gcmVmIFwicHJvZmlsaW5nLmh0bWxcIlxubGV0IGZsdXhGaWxlTmFtZSA9IHJlZiBcIlwiXG5cbmxldCBta19kaXJfciBkID1cbiAgbGV0IHJlYyBhdXggZCA9XG4gICAgaWYgbm90IChTeXMuZmlsZV9leGlzdHMgZCkgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBhdXggKEZpbGVuYW1lLmRpcm5hbWUgZCkgaW5cbiAgICAgIFVuaXgubWtkaXIgZCAwbzc3NVxuICAgIClcbiAgaW5cbiAgVW5peC5oYW5kbGVfdW5peF9lcnJvciBhdXggZFxuXG5sZXQgb3ZlcndyaXRlX3Blcm1pc3Npb24gPSByZWYgZmFsc2VcblxubGV0IHBhdGggZiA9XG4gIGlmIEZpbGVuYW1lLmlzX2ltcGxpY2l0IGYgdGhlblxuICAgIEZpbGVuYW1lLmNvbmNhdCAhb3V0cHV0RGlyTmFtZSBmXG4gIGVsc2VcbiAgICBmXG5cbmxldCBvcGVuX291dCBmID1cbiAgbGV0IHggPSBwYXRoIGYgaW5cbiAgbGV0ICgpID0gbWtfZGlyX3IgKEZpbGVuYW1lLmRpcm5hbWUgeCkgaW5cbiAgb3Blbl9vdXQgeFxuXG5sZXQgcmVjIGF1eF9vcGVuX291dF9mcmVzaCBiYXNlIHYgZXh0ID1cbiAgdHJ5XG4gICAgb3Blbl9vdXRfZ2VuXG4gICAgICBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2w7IE9wZW5fdGV4dCBdXG4gICAgICAwbzY2NlxuICAgICAgKGJhc2UgXiBcIn5cIiBeIHN0cmluZ19vZl9pbnQgdiBeIGV4dClcbiAgd2l0aCBTeXNfZXJyb3IgXyAtPiBhdXhfb3Blbl9vdXRfZnJlc2ggYmFzZSAoc3VjYyB2KSBleHRcblxubGV0IG9wZW5fb3V0X2ZyZXNoIG5hbWUgY29uY2F0X2xpc3QgZmFjdWx0YXRpdmUgZXh0ID1cbiAgbGV0IG5hbWUgPSBwYXRoIG5hbWUgaW5cbiAgbGV0ICgpID0gbWtfZGlyX3IgKEZpbGVuYW1lLmRpcm5hbWUgbmFtZSkgaW5cbiAgbGV0IHRtcF9uYW1lID0gVG9vbHMuY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0IGluXG4gIGxldCBiYXNlID0gU3RyaW5nLmNvbmNhdCBcIl9cIiAodG1wX25hbWUgOjogY29uY2F0X2xpc3QpIGluXG4gIGxldCBvdmVyX2ZsYWcgPVxuICAgIGlmICFvdmVyd3JpdGVfcGVybWlzc2lvbiB0aGVuXG4gICAgICBPcGVuX3RydW5jXG4gICAgZWxzZVxuICAgICAgT3Blbl9leGNsXG4gIGluXG4gIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IG92ZXJfZmxhZzsgT3Blbl90ZXh0IF0gaW5cbiAgdHJ5IG9wZW5fb3V0X2dlbiBmbGFncyAwbzY2NiAoYmFzZSBeIGV4dClcbiAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgIGxldCBiYXNlJyA9XG4gICAgICBpZiBmYWN1bHRhdGl2ZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgYmFzZSBeIFwiX1wiIF4gZmFjdWx0YXRpdmVcbiAgICAgIGVsc2VcbiAgICAgICAgYmFzZVxuICAgIGluXG4gICAgKHRyeSBvcGVuX291dF9nZW4gZmxhZ3MgMG82NjYgKGJhc2UnIF4gZXh0KVxuICAgICB3aXRoIFN5c19lcnJvciBfIC0+IGF1eF9vcGVuX291dF9mcmVzaCBiYXNlJyAwIGV4dClcblxubGV0IHNldCBuYW1lIGV4dF9vcHQgPVxuICBpZiAhbmFtZSA8PiBcIlwiIHRoZW4gKFxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBleHRfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAhbmFtZVxuICAgICAgfCBTb21lIGV4dCAtPlxuICAgICAgICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggIW5hbWUgZXh0IHRoZW5cbiAgICAgICAgICAhbmFtZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgIW5hbWUgXiBcIi5cIiBeIGV4dFxuICAgIGluXG4gICAgbmFtZSA6PSBmbmFtZVxuICApXG5cbmxldCBzZXRPdXRwdXROYW1lICgpID1cbiAgc2V0IGZsdXhGaWxlTmFtZSAoU29tZSBcImRvdFwiKTtcbiAgc2V0IG1hcnNoYWxpemVkT3V0RmlsZSBOb25lXG5cbmxldCBjaGVja19ub3RfZXhpc3RzID0gZnVuY3Rpb25cbiAgfCBcIlwiIC0+ICgpXG4gIHwgZmlsZSAtPlxuICAgIGxldCBmaWxlID0gcGF0aCBmaWxlIGluXG4gICAgaWYgU3lzLmZpbGVfZXhpc3RzIGZpbGUgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIkZpbGUgJyVzJyBhbHJlYWR5IGV4aXN0cyBkbyB5b3Ugd2FudCB0byBlcmFzZSAoeS9OKT9ALlwiXG4gICAgICAgICAgZmlsZVxuICAgICAgaW5cbiAgICAgIGxldCBhbnN3ZXIgPSBUb29scy5yZWFkX2lucHV0ICgpIGluXG4gICAgICBpZlxuICAgICAgICBhbnN3ZXIgPD4gXCJ5XCIgJiYgYW5zd2VyIDw+IFwiWVwiICYmIGFuc3dlciA8PiBcInllc1wiICYmIGFuc3dlciA8PiBcIllFU1wiXG4gICAgICAgICYmIGFuc3dlciA8PiBcIlllc1wiXG4gICAgICB0aGVuXG4gICAgICAgIGV4aXQgMVxuICAgICAgZWxzZVxuICAgICAgICBvdmVyd3JpdGVfcGVybWlzc2lvbiA6PSB0cnVlXG4gICAgKVxuXG5sZXQgc2V0Q2hlY2tGaWxlRXhpc3RzIH5iYXRjaG1vZGUgb3V0cHV0RmlsZSA9XG4gIGxldCAoKSA9IHNldE91dHB1dE5hbWUgKCkgaW5cbiAgaWYgYmF0Y2htb2RlIHRoZW5cbiAgICBvdmVyd3JpdGVfcGVybWlzc2lvbiA6PSB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9IGNoZWNrX25vdF9leGlzdHMgIWZsdXhGaWxlTmFtZSBpblxuICAgIGxldCAoKSA9IGNoZWNrX25vdF9leGlzdHMgIW1hcnNoYWxpemVkT3V0RmlsZSBpblxuICAgIGNoZWNrX25vdF9leGlzdHMgb3V0cHV0RmlsZVxuICApXG5cbmxldCB3aXRoX2NoYW5uZWwgc3RyIGYgPVxuICBpZiBzdHIgPD4gXCJcIiB0aGVuIChcbiAgICBsZXQgZGVzYyA9IG9wZW5fb3V0IHN0ciBpblxuICAgIGxldCAoKSA9IGYgZGVzYyBpblxuICAgIGNsb3NlX291dCBkZXNjXG4gIClcblxubGV0IHdyYXBfZm9ybWF0dGVyIGYgZGVzYyA9XG4gIGxldCBmciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZGVzYyBpblxuICBsZXQgKCkgPSBmIGZyIGluXG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBmciAoKVxuXG5sZXQgc2V0X2RpciBzID1cbiAgbGV0ICgpID1cbiAgICB0cnlcbiAgICAgIGlmIG5vdCAoU3lzLmlzX2RpcmVjdG9yeSBzKSB0aGVuIChcbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCInJXMnIGlzIG5vdCBhIGRpcmVjdG9yeUAuXCIgcztcbiAgICAgICAgZXhpdCAxXG4gICAgICApXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBta19kaXJfciBzXG4gIGluXG4gIG91dHB1dERpck5hbWUgOj0gc1xuXG5sZXQgZ2V0X2RpciAoKSA9ICFvdXRwdXREaXJOYW1lXG5sZXQgc2V0X21hcnNoYWxpemVkIGYgPSBtYXJzaGFsaXplZE91dEZpbGUgOj0gZlxuXG5sZXQgd2l0aF9tYXJzaGFsaXplZCBmID1cbiAgbWF0Y2ggIW1hcnNoYWxpemVkT3V0RmlsZSB3aXRoXG4gIHwgXCJcIiAtPiAoKVxuICB8IGZpbGUgLT5cbiAgICBsZXQgeCA9IHBhdGggZmlsZSBpblxuICAgIGxldCAoKSA9IG1rX2Rpcl9yIChGaWxlbmFtZS5kaXJuYW1lIHgpIGluXG4gICAgbGV0IGQgPSBvcGVuX291dF9iaW4geCBpblxuICAgIGxldCAoKSA9IGYgZCBpblxuICAgIGNsb3NlX291dCBkXG5cbmxldCBzZXRfY2Zsb3cgcyA9IGNmbG93RmlsZU5hbWUgOj0gc1xuXG5sZXQgd2l0aF9jZmxvd19maWxlIGwgZSBmID1cbiAgbGV0IGRlc2MgPSBvcGVuX291dF9mcmVzaCAhY2Zsb3dGaWxlTmFtZSBsIFwiXCIgZSBpblxuICBsZXQgKCkgPSB3cmFwX2Zvcm1hdHRlciBmIGRlc2MgaW5cbiAgY2xvc2Vfb3V0IGRlc2NcblxubGV0IG9wZW5fdGFza3NfcHJvZmlsaW5nICgpID0gb3Blbl9vdXQgIXRhc2tzX3Byb2ZpbGluZ05hbWVcblxubGV0IG9wZW5fYnJhbmNoX2FuZF9jdXRfZW5naW5lX3Byb2ZpbGluZyAoKSA9XG4gIG9wZW5fb3V0ICFicmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nTmFtZVxuXG5sZXQgc2V0X2ZsdXggbm1lIGV2ZW50ID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBubWUgd2l0aFxuICAgIHwgXCJcIiAtPiBmbHV4RmlsZU5hbWUgOj0gXCJmbHV4XCIgXiBcIl9cIiBeIHN0cmluZ19vZl9pbnQgZXZlbnRcbiAgICB8IF8gLT4gZmx1eEZpbGVOYW1lIDo9IG5tZVxuICBpblxuICBzZXQgZmx1eEZpbGVOYW1lIChTb21lIFwiZG90XCIpXG5cbmxldCB3aXRoX2ZsdXggc3RyIGYgPVxuICB3aXRoX2NoYW5uZWxcbiAgICAobWF0Y2ggc3RyIHdpdGhcbiAgICB8IFwiXCIgLT4gIWZsdXhGaWxlTmFtZVxuICAgIHwgXyAtPiBzdHIpXG4gICAgZlxuXG5sZXQgd2l0aF9zbmFwc2hvdCBzdHIgZXh0IGV2ZW50IGYgPVxuICBsZXQgZGVzYyA9IG9wZW5fb3V0X2ZyZXNoIHN0ciBbXSAoc3RyaW5nX29mX2ludCBldmVudCkgZXh0IGluXG4gIGxldCAoKSA9IGYgZGVzYyBpblxuICBjbG9zZV9vdXQgZGVzY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdG9yZSA9IHtcbiAgZmlsZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcjogc3RyaW5nO1xuICBsZWdlbmQ6IHN0cmluZyBhcnJheTtcbiAgbXV0YWJsZSBwb2ludHM6IE5ici50IGFycmF5IGxpc3Q7XG59XG5cbmxldCBuZXdfZmlsZSBuYW1lID1cbiAgbGV0IGNoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBuYW1lIGluXG4gIGxldCBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFuIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2Pjw/eG1sIHZlcnNpb249XFxcIjEuMFxcXCI/PkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjwhRE9DVFlQRUAgc3ZnQCBQVUJMSUNAIFxcXCItLy9XM0MvL0RURCBTVkcgMS4xLy9FTlxcXCJAIFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJcXFwiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkXFxcIj5AXUAsQCxcIlxuICBpblxuICBmLCBjaGFuXG5cbmxldCBjbG9zZV9maWxlIGZvcm0gY2hhbiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAXUAuXCIgaW5cbiAgY2xvc2Vfb3V0IGNoYW5cblxubGV0IHN0eWxlIGYgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN0eWxlIHR5cGU9XFxcInRleHQvY3NzXFxcIiA+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPCFbQ0RBVEFbQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jbGVnZW5kIHRleHQge0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInRleHQtYW5jaG9yOmVuZDtAIGJhc2VsaW5lLXNoaWZ0Oi0uNGVtO0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn1AXUAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2F4aXNfdCB0ZXh0IHtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ0ZXh0LWFuY2hvcjptaWRkbGU7QCBiYXNlbGluZS1zaGlmdDotMWVtO0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn1AXUAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2F4aXNfdmEgdGV4dCB7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidGV4dC1hbmNob3I6ZW5kO0AgYmFzZWxpbmUtc2hpZnQ6LS40ZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNheGVzIHtALGNvbG9yOmJsYWNrO0Asc3Ryb2tlOmN1cnJlbnRDb2xvcjtcIlxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCxzdHJva2Utc2l6ZToxcHg7QCx9QF1ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJAWzxodiAyPiNheGVzIHRleHQge0Asc3Ryb2tlOm5vbmU7QCxmaWxsOmN1cnJlbnRDb2xvcjtALH1AXUAsXCJcbiAgaW5cbiAgKCogbGV0ICgpID1cbiAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2RhdGEgdXNlOmhvdmVyIHtALGZpbGw6Z3JlZW47QCx9QF1ALFwiIGluKilcbiAgRm9ybWF0LmZwcmludGYgZiBcIl1dPkAsPC9zdHlsZT5ALEAsXCJcblxubGV0IGNvbG9ycyA9IFt8IFwicGVydVwiOyBcImJsdWVcIjsgXCJwdXJwbGVcIjsgXCJncmVlblwiIHxdXG5sZXQgc3R5bGVzID0gW3wgXCJwb2ludFwiOyBcInBsdXNcIjsgXCJjcm9zc1wiIHxdXG5cbmxldCBkZWZzIGYgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRlZnM+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8cGF0aCBpZD1cXFwicGx1c1xcXCIgY2xhc3M9XFxcInBvaW50XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCJcIlxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiIGQ9XFxcIk0tMy41LDAgaDcgTTAsLTMuNSB2N1xcXCIvPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIjxwYXRoIGlkPVxcXCJjcm9zc1xcXCIgY2xhc3M9XFxcInBvaW50XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCJcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgZD1cXFwiTS0zLjUsLTMuNSBMMy41LDMuNSBNMy41LC0zLjUgTC0zLjUsMy41XFxcIi8+QCxcIlxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGNpcmNsZSBpZD1cXFwicG9pbnRcXFwiIGNsYXNzPVxcXCJwb2ludFxcXCIgcj1cXFwiMi41XFxcIlwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgc3Ryb2tlPVxcXCJub25lXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz5ALFwiIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCI8L2RlZnM+QCxALFwiXG5cbmxldCBsZWdlbmQgdyBmIGEgPVxuICBsZXQgcHBfbGluZSBpJyBmIHMgPVxuICAgIGlmIGknID4gMCB0aGVuIChcbiAgICAgIGxldCBpID0gcHJlZCBpJyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+PHRleHQgeD1cXFwiJWlcXFwiIHk9XFxcIiVpXFxcIj4lczwvdGV4dD5AXUAsXCIgKHcgLSAxNSlcbiAgICAgICAgICAoMTAgKyAoaSAqIDE1KSlcbiAgICAgICAgICBzXG4gICAgICBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIjx1c2UgeGxpbms6aHJlZj1cXFwiIyVzXFxcIiBzdHlsZT1cXFwiY29sb3I6JXNcXFwiIHg9XFxcIiVpXFxcIiB5PVxcXCIlaVxcXCIvPlwiXG4gICAgICAgIHN0eWxlcy4oaScgbW9kIEFycmF5Lmxlbmd0aCBzdHlsZXMpXG4gICAgICAgIGNvbG9ycy4oaScgbW9kIEFycmF5Lmxlbmd0aCBjb2xvcnMpXG4gICAgICAgICh3IC0gNylcbiAgICAgICAgKDEwICsgKGkgKiAxNSkpXG4gICAgKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj48ZyBpZD1cXFwibGVnZW5kXFxcIj5ALCVhQF1ALDwvZz5ALEAsXCJcbiAgICAoUHAuYXJyYXkgUHAuY3V0IHBwX2xpbmUpIGFcblxubGV0IGdldF9saW1pdHMgbCA9XG4gIGxldCBkdW1teV92YWx1ZXMgPSAwLiwgLTEuLCAxLiBpblxuICBsZXQgcmVjIGF1eCB0X21heCB2YV9taW4gdmFfbWF4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBpZiB2YV9taW4gPSB2YV9tYXggdGhlblxuICAgICAgICB0X21heCwgdmFfbWluIC0uIDEuLCB2YV9tYXggKy4gMS5cbiAgICAgIGVsc2VcbiAgICAgICAgdF9tYXgsIG1pbiB2YV9taW4gMC4sIHZhX21heFxuICAgIHwgdmEgOjogcSAtPlxuICAgICAgYXV4XG4gICAgICAgIChtYXggKE9wdGlvbl91dGlsLnVuc29tZSAwLiAoTmJyLnRvX2Zsb2F0IHZhLigwKSkpIHRfbWF4KVxuICAgICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAoZnVuIGkgYSB4IC0+XG4gICAgICAgICAgICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IHggd2l0aFxuICAgICAgICAgICAgIHwgU29tZSB4IHdoZW4gaSA8PiAwIC0+IG1pbiBhIHhcbiAgICAgICAgICAgICB8IF8gLT4gYSlcbiAgICAgICAgICAgdmFfbWluIHZhKVxuICAgICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAoZnVuIGkgYSB4IC0+XG4gICAgICAgICAgICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IHggd2l0aFxuICAgICAgICAgICAgIHwgU29tZSB4IHdoZW4gaSA8PiAwIC0+IG1heCBhIHhcbiAgICAgICAgICAgICB8IF8gLT4gYSlcbiAgICAgICAgICAgdmFfbWF4IHZhKVxuICAgICAgICBxXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGR1bW15X3ZhbHVlc1xuICB8IHZhIDo6IF8gd2hlbiBBcnJheS5sZW5ndGggdmEgPCAyIC0+IGR1bW15X3ZhbHVlc1xuICB8IGwgLT4gYXV4IDAuIGluZmluaXR5IDAuIGxcblxubGV0IGRyYXdfaW5fZGF0YSAoKHRfbWF4LCB2YV9taW4sIHZhX21heCksICh6ZXJvX3csIHplcm9faCwgZHJhd193LCBkcmF3X2gpKSA9XG4gIGxldCBkZWx0YV92YSA9IHZhX21heCAtLiB2YV9taW4gaW5cbiAgbGV0IHplcm9fdycgPSBmbG9hdF9vZl9pbnQgemVyb193IGluXG4gIGxldCB6ZXJvX2gnID0gZmxvYXRfb2ZfaW50IHplcm9faCBpblxuICBsZXQgZHJhd193JyA9IGZsb2F0X29mX2ludCBkcmF3X3cgaW5cbiAgbGV0IGRyYXdfaCcgPSBmbG9hdF9vZl9pbnQgZHJhd19oIGluXG4gIGZ1biBmIHggeSAtPlxuICAgIG1hdGNoIE5ici50b19mbG9hdCB5IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeScgLT5cbiAgICAgIGZcbiAgICAgICAgKHplcm9fdydcbiAgICAgICAgKy4gKChPcHRpb25fdXRpbC51bnNvbWUgMC4gQEAgTmJyLnRvX2Zsb2F0IHgpICouIGRyYXdfdycgLy4gdF9tYXgpKVxuICAgICAgICAoemVyb19oJyAtLiAoKHknIC0uIHZhX21pbikgKi4gZHJhd19oJyAvLiBkZWx0YV92YSkpXG5cbmxldCBncmFkdWF0aW9uX3N0ZXAgZHJhd19sIG1pbl9ncmFkX2wgdmFfbWluIHZhX21heCA9XG4gIGxldCBuYnJfZGVsdGEgPSB2YV9tYXggLS4gdmFfbWluIGluXG4gIGxldCBkZWx0YV92YSA9XG4gICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgbmJyX2RlbHRhIHdpdGhcbiAgICB8IEZQX3plcm8gLT4gMS5cbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IG5icl9kZWx0YVxuICBpblxuICBsZXQgbmJfZ3JhZCA9IGNlaWwgKGZsb2F0IGRyYXdfbCAvLiBmbG9hdCBtaW5fZ3JhZF9sKSBpblxuICBsZXQgZXhhY3Rfc3RlcCA9IGRlbHRhX3ZhIC8uIG5iX2dyYWQgaW5cbiAgbGV0IGRlbHRhX2dyYWQgPSAxMC4gKiogbG9nMTAgZXhhY3Rfc3RlcCBpblxuICBsZXQgdmFfbWluJyA9IGRlbHRhX2dyYWQgKi4gZmxvb3IgKHZhX21pbiAvLiBleGFjdF9zdGVwKSBpblxuICBsZXQgdmFfbWF4JyA9XG4gICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgbmJyX2RlbHRhIHdpdGhcbiAgICB8IEZQX3plcm8gLT4gdmFfbWluJyArLiAxLlxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT5cbiAgICAgIGRlbHRhX2dyYWQgKi4gY2VpbCAodmFfbWF4IC8uIGV4YWN0X3N0ZXApXG4gIGluXG4gIHZhX21pbicsIGludF9vZl9mbG9hdCBuYl9ncmFkLCBkZWx0YV9ncmFkLCB2YV9tYXgnXG5cbmxldCBheGlzICh3LCBoKSAoYl9vcCwgYl93LCBiX2gpIGYgbCA9XG4gIGxldCB0X21heCwgdmFfbWluLCB2YV9tYXggPSBnZXRfbGltaXRzIGwgaW5cbiAgbGV0IGRhdGFfdyA9IHcgLSAoYl9vcCArIGJfdykgaW5cbiAgbGV0IGRhdGFfaCA9IGggLSAoYl9vcCArIGJfaCkgaW5cbiAgbGV0IF8sIG5iX3csIGdyYWRfdywgdF9tYXgnID0gZ3JhZHVhdGlvbl9zdGVwIGRhdGFfdyBiX3cgMC4gdF9tYXggaW5cbiAgbGV0IHZhX21pbicsIG5iX2gsIGdyYWRfaCwgdmFfbWF4JyA9XG4gICAgZ3JhZHVhdGlvbl9zdGVwIGRhdGFfaCBiX3cgdmFfbWluIHZhX21heFxuICBpblxuICBsZXQgZHJhd19mdW4gPVxuICAgIGRyYXdfaW5fZGF0YSAoKHRfbWF4JywgdmFfbWluJywgdmFfbWF4JyksIChiX3csIGggLSBiX2gsIGRhdGFfdywgZGF0YV9oKSlcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxnIGlkPVxcXCJheGVzXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxnIGlkPVxcXCJheGlzX3ZhXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+T2JzZXJ2YWJsZSB2YWx1ZXM8L3RpdGxlPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxwYXRoIGQ9XFxcIk0gJWksJWkgTCAlaSwlaVxcXCIvPkBdQCxcIiBiX3cgYl9vcCBiX3dcbiAgICAgIChkYXRhX2ggKyBiX29wKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHYgPSBncmFkX2ggKi4gZmxvYXQgaSBpblxuICAgICAgICBkcmF3X2Z1blxuICAgICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRleHQgeD1cXFwiJWZcXFwiIHk9XFxcIiVmXFxcIj4lLjNnPC90ZXh0PkAsXCIgKHggLS4gOC4pXG4gICAgICAgICAgICAgICAgeSB2XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsaW5lIHgxPVxcXCIlZlxcXCIgeTE9XFxcIiVmXFxcIiB4Mj1cXFwiJWZcXFwiIHkyPVxcXCIlZlxcXCIvPkAsXCJcbiAgICAgICAgICAgICAgKHggLS4gNS4pIHkgKHggKy4gNS4pIHkpXG4gICAgICAgICAgTmJyLnplcm8gKE5ici5GIHYpKVxuICAgICAgKHN1Y2MgbmJfaClcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBdPC9nPkAsQFs8aHYgMj48ZyBpZD1cXFwiYXhpc190XFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+VGltZSAoYXJiaXRyYXJ5IHVuaXQpPC90aXRsZT5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48cGF0aCBkPVxcXCJNICVpLCVpIEwgJWksJWlcXFwiLz5AXUAsXCIgYl93IChoIC0gYl9oKVxuICAgICAgKHcgLSBiX29wKSAoaCAtIGJfaClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIGxldCB2ID0gZ3JhZF93ICouIGZsb2F0IGkgaW5cbiAgICAgICAgZHJhd19mdW5cbiAgICAgICAgICAoZnVuIHggeSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjx0ZXh0IHg9XFxcIiVmXFxcIiB5PVxcXCIlZlxcXCI+JS4zZzwvdGV4dD5ALFwiIHhcbiAgICAgICAgICAgICAgICAoeSArLiA4LikgdlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8bGluZSB4MT1cXFwiJWZcXFwiIHkxPVxcXCIlZlxcXCIgeDI9XFxcIiVmXFxcIiB5Mj1cXFwiJWZcXFwiLz5ALFwiXG4gICAgICAgICAgICAgIHggKHkgLS4gNS4pIHggKHkgKy4gNS4pKVxuICAgICAgICAgIChOYnIuRiB2KSAoTmJyLkYgdmFfbWluJykpXG4gICAgICAoc3VjYyBuYl93KVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF08L2c+QCw8L2c+QCxALFwiIGluXG4gIGRyYXdfZnVuXG5cbmxldCBkYXRhIGRyYXdfZnVuIGwgZiBwID1cbiAgbGV0IG9uZV9wb2ludCBzIHQgaSBmIHZhID1cbiAgICBkcmF3X2Z1blxuICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8Pjx1c2UgeGxpbms6aHJlZj1cXFwiIyVzXFxcIiB4PVxcXCIlZlxcXCIgeT1cXFwiJWZcXFwiPkAsXCJcbiAgICAgICAgICAgIHN0eWxlcy4oaSBtb2QgQXJyYXkubGVuZ3RoIHN0eWxlcylcbiAgICAgICAgICAgIHggeVxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPiVzIHQ9JWEgdj0lYTwvdGl0bGU+QCw8L3VzZT5AXUAsXCIgc1xuICAgICAgICAgIE5ici5wcmV0dHlfcHJpbnQgdCBOYnIucHJpbnQgdmEpXG4gICAgICB0IHZhXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCI8ZyBpZD1cXFwiZGF0YVxcXCI+QCwlYTwvZz5ALEAsXCJcbiAgICAoUHAuYXJyYXkgUHAuZW1wdHkgKGZ1biBpIGYgcyAtPlxuICAgICAgICAgaWYgaSA+IDAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgXCJAWzxodiAyPjxnIGlkPVxcXCJkYXRhXyVpXFxcIiBzdHlsZT1cXFwiY29sb3I6JXNcXFwiPkAsJWFAXTwvZz5ALFwiXG4gICAgICAgICAgICAgKHByZWQgaSlcbiAgICAgICAgICAgICBjb2xvcnMuKGkgbW9kIEFycmF5Lmxlbmd0aCBjb2xvcnMpXG4gICAgICAgICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKGZ1biBmIGUgLT4gb25lX3BvaW50IHMgZS4oMCkgaSBmIGUuKGkpKSlcbiAgICAgICAgICAgICBwKSlcbiAgICBsXG5cbmxldCBkcmF3ICgodywgaCkgYXMgc2l6ZSkgYm9yZGVyIGYgcyA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48c3ZnQCB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiQCBcIlxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwieG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiQCBcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwid2lkdGg9XFxcIiVpXFxcIkAgaGVpZ2h0PVxcXCIlaVxcXCI+QF1ALFwiIHcgaCBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXM8L3RpdGxlPkAsPGRlc2NyPiVzPC9kZXNjcj5ALEAsXCIgcy50aXRsZSBzLmRlc2NyXG4gIGluXG4gIGxldCAoKSA9IHN0eWxlIGYgaW5cbiAgbGV0ICgpID0gZGVmcyBmIGluXG4gIGxldCBkcmF3X2Z1biA9IGF4aXMgc2l6ZSBib3JkZXIgZiBzLnBvaW50cyBpblxuICBsZXQgKCkgPSBsZWdlbmQgdyBmIHMubGVnZW5kIGluXG4gIGxldCAoKSA9IGRhdGEgZHJhd19mdW4gcy5sZWdlbmQgZiBzLnBvaW50cyBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiPC9zdmc+XCJcblxubGV0IHRvX3N0cmluZyA/KHdpZHRoID0gODAwKSBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBzaXplID0gd2lkdGgsIGludF9vZl9mbG9hdCAoZmxvYXQgd2lkdGggLy4gc3FydCAyLikgaW5cbiAgbGV0IGJvcmRlciA9IDEwLCA3MCwgMjUgaW5cbiAgbGV0ICgpID0gZHJhdyBzaXplIGJvcmRlciBmIHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgZiAoKSBpblxuICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgdG9fZmlsZSBzID1cbiAgbGV0IGZvcm0sIGNoYW4gPSBuZXdfZmlsZSBzLmZpbGUgaW5cbiAgbGV0IHNpemUgPSA4MDAsIDYwMCBpblxuICBsZXQgYm9yZGVyID0gMTAsIDcwLCAyNSBpblxuICBsZXQgKCkgPSBkcmF3IHNpemUgYm9yZGVyIGZvcm0gcyBpblxuICBjbG9zZV9maWxlIGZvcm0gY2hhblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpFeHBlcnQgbW9kZSB2YWx1ZXMqKVxubGV0IGRlZmF1bHRFeHRBcnJheVNpemUgPSByZWYgNVxubGV0IGRlZmF1bHRHcmFwaFNpemUgPSByZWYgNVxubGV0IGRlZmF1bHRMaWZ0U2V0U2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdEhlYXBTaXplID0gcmVmIDVcbmxldCBkZWJ1Z19tb2RlT24gPSByZWYgZmFsc2VcblxuKCogZXhwZXJ0IG9wdGlvbiBmb3Igc3RvcmllcyAqKVxuXG4oKiBOdW1iZXIgb2YgcG90ZW50aWFsIHN0YXRlcyB0aGF0IGFyZSBwdXQgaW4gdGhlIGNhY2hlIHBlciBiaW5kaW5nIHNpdGUsIHNvIGFzIHRvIGhhbmRsZXIgd2l0aCBzaWRlIGVmZmVjdHMgaW4gc3Rvcmllcy4gTm9uZSAtPiBVbmxpbWl0ZWQgY2FjaGUgKilcblxuKCoqIE1lbW9yeSAqKilcbmxldCBjYWNoZV9zaXplID0gcmVmIChOb25lIDogaW50IG9wdGlvbilcblxuKCogQ3V0IGNvbmN1cnJlbnQgZXZlbnRzIChmb3IgYWxsIG9ic2VydmFibGVzKSBiZWZvcmUgZ2VuZXJhdGluZyB0aGUgYmxhY2tib2FyZCAqKVxuXG4oKiogUHJlY29tcHV0YXRpb24gKiopXG5sZXQgZG9fZ2xvYmFsX2N1dCA9IHRydWVcblxuKCogQ3V0IHBzZXVkby1pbnZlcnNlIGV2ZW50cyAqKVxubGV0IGN1dF9wc2V1ZG9faW52ZXJzZV9ldmVudCA9IHRydWVcblxuKCogQ3V0IGNvbmN1cnJlbnQgZXZlbnRzIChmb3IgdGhlIGN1cnJlbnQgb2JzZXJ2YWxlKSBiZWZvcmUgZ2VuZXJhdGluZyB0aGUgYmxhY2tib2FyZCAqKVxubGV0IGRvX2xvY2FsX2N1dCA9IHRydWVcblxuKCogQ3V0IHNlcGFyYWJsZSBjb21wb25lbnRzICopXG5sZXQgZG9fZGV0ZWN0X3NlcGFyYWJsZV9jb21wb25lbnRzID0gdHJ1ZVxuXG4oKiBXaGVuZXZlciB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIGFuIGV2ZW50IGhhcyB0byBiZSBzZWxlY3RlZCBvciwgbm90LCBjaGVjayB3aGV0aGVyIHRoaXMgaXMgbm90IHRoZSBsYXN0IG9uZSB0aGF0IGNhbiBwYXJmb3JtIGEgcmVxdWVzdGVkIGFjdGlvbiAqKVxuXG4oKiogUHJvcGFnYXRpb24gaGV1cmlzdGljcyAqKilcbmxldCBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0ID0gdHJ1ZVxuXG4oKiBXaGVuZXZlciBhbiBldmVudCBpcyByZW1vdmVkLCBjaGVja2VkIHdoZXRoZXIgdGhlcmUgaXMgbm90IG9ubHkgb25lIGxlZnQgdG8gcGVyZm9ybSBhIHJlcXVpcmVkIGFjdGlvbiAqKVxubGV0IGxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCA9IHRydWVcbmxldCBsb2dfbnVtYmVyX29mX2NhdXNhbF9mbG93cyA9IHRydWVcblxuKCpVc2VyIGRlZmluYWJsZSB2YWx1ZXMqKVxubGV0IHRpbWVfaW5kZXBlbmRlbnQgPSByZWYgZmFsc2VcbmxldCBibGFja2xpc3RfZXZlbnRzID0gcmVmIGZhbHNlXG5cbigqWExTIG91dHB1dCBmb3IgdGhlIGdyaWRzIGR1cmluZyBjb21wcmVzc2lvbiopXG5sZXQgZHVtcF9ncmlkX2JlZm9yZV93ZWFrX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmVzc2lvbiA9IGZhbHNlXG5sZXQgZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfd2Vha19jb21wcmVzc2lvbiA9IGZhbHNlXG5sZXQgZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfc3Ryb25nX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCB4bHN3ZWFrRmlsZU5hbWUgPSBcImdyaWRfd2Vha19jb21wcmVzc2lvblwiXG5sZXQgeGxzc3Ryb25nRmlsZU5hbWUgPSBcImdyaWRfc3Ryb25nX2NvbXByZXNzaW9uXCJcbmxldCBnZXRfY2FjaGVfc2l6ZSAoKSA9ICFjYWNoZV9zaXplXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcHJpbnRfZGVzYyA6IChzdHJpbmcsIG91dF9jaGFubmVsICogRm9ybWF0LmZvcm1hdHRlcikgSGFzaHRibC50ID1cbiAgSGFzaHRibC5jcmVhdGUgMlxuXG5sZXQgc3BlY2llc19kZXNjIDogKHN0cmluZywgb3V0X2NoYW5uZWwgKiBGb3JtYXQuZm9ybWF0dGVyKSBIYXNodGJsLnQgPVxuICBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCB1dWlkID0gUmFuZG9tLlN0YXRlLmJpdHMgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IGdldF9kZXNjIGZpbGUgdGJsID1cbiAgdHJ5IHNuZCAoSGFzaHRibC5maW5kIHRibCBmaWxlKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBkX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBmaWxlIGluXG4gICAgbGV0IGQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGRfY2hhbiBpblxuICAgIEhhc2h0YmwuYWRkIHRibCBmaWxlIChkX2NoYW4sIGQpO1xuICAgIGRcblxubGV0IGNsb3NlX2Rlc2MgKCkgPVxuICBIYXNodGJsLml0ZXIgKGZ1biBfZmlsZSAoZF9jaGFuLCBfZCkgLT4gY2xvc2Vfb3V0IGRfY2hhbikgcHJpbnRfZGVzYztcbiAgSGFzaHRibC5pdGVyIChmdW4gX2ZpbGUgKGRfY2hhbiwgX2QpIC0+IGNsb3NlX291dCBkX2NoYW4pIHNwZWNpZXNfZGVzY1xuXG5sZXQgb3V0cHV0X2ZsdXggZGluX25hbWUgZmx1eCA9XG4gIEthcHBhX2ZpbGVzLndpdGhfZmx1eCBkaW5fbmFtZVxuICAgIChpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuaHRtbFwiIHRoZW5cbiAgICAgICBLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9odG1sX2RpbiBmIGZsdXgpXG4gICAgIGVsc2UgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgZnVuIGQgLT5cbiAgICAgSnNvblV0aWwud3JpdGVfdG9fY2hhbm5lbCBEYXRhLndyaXRlX2RpbiBkIGZsdXhcbiAgICAgZWxzZVxuICAgICAgIEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2RvdF9kaW4gfnV1aWQgZiBmbHV4KSlcblxubGV0IGFjdHNEZXNjciA9IHJlZiBOb25lXG5sZXQgZW1wdHlBY3RzID0gcmVmIHRydWVcblxubGV0IGluaXRfYWN0aXZpdGllcyBlbnYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHMgLT5cbiAgICBsZXQgbm9Db3VudGVycyA9ICFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIGluXG4gICAgbGV0IGRlc2MgPSBLYXBwYV9maWxlcy5vcGVuX291dCBzIGluXG4gICAgbGV0IGZvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGRlc2MgaW5cbiAgICBsZXQgbmJfciA9IE1vZGVsLm5iX3N5bnRhY3RpY19ydWxlcyBlbnYgaW5cbiAgICBsZXQgKCkgPSBhY3RzRGVzY3IgOj0gU29tZSAoZGVzYywgZm9ybSwgbmJfcikgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj57QCxydWxlczpAW1tcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBUb29scy5pdGVyaVxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiXFxcIiVhXFxcIixALFwiXG4gICAgICAgICAgICAoTW9kZWwucHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudilcbiAgICAgICAgICAgIHgpXG4gICAgICAgIG5iX3JcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWFcXFwiXUBdLEAsZGF0YTpbQCxcIlxuICAgICAgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICBuYl9yXG5cbmxldCBjbG9zZV9hY3Rpdml0aWVzICgpID1cbiAgbWF0Y2ggIWFjdHNEZXNjciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKGMsIGYsIF8pIC0+XG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsXX1AXUAuXCIgaW5cbiAgICBjbG9zZV9vdXQgY1xuXG5sZXQgb3V0cHV0X2FjdGl2aXRpZXMgciBmbHV4ID1cbiAgbWF0Y2ggIWFjdHNEZXNjciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKF8sIGYsIGxhc3QpIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmICFlbXB0eUFjdHMgdGhlblxuICAgICAgICBlbXB0eUFjdHMgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIixALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFtbJWlcIiByIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBpID0gMCB0byBsYXN0IGRvXG4gICAgICAgIGxldCBrLCBrJyA9IHRyeSBMaXN0LmFzc29jIGkgZmx1eCB3aXRoIE5vdF9mb3VuZCAtPiAwLiwgMC4gaW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiwlZlwiIChrJyAtLiBrKVxuICAgICAgZG9uZVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIl1AXVwiXG5cbnR5cGUgZmQgPSB7IGRlc2M6IG91dF9jaGFubmVsOyBmb3JtOiBGb3JtYXQuZm9ybWF0dGVyOyBpc190c3Y6IGJvb2wgfVxuXG50eXBlIGZvcm1hdCA9XG4gIHwgU3RhbmRCeSBvZiAoc3RyaW5nICogc3RyaW5nICogc3RyaW5nIGFycmF5KVxuICB8IFJhdyBvZiBmZFxuICB8IFN2ZyBvZiBQcF9zdmcuc3RvcmVcblxubGV0IHBsb3REZXNjciA9IHJlZiBOb25lXG5cbmxldCBjbG9zZV9wbG90ICgpID1cbiAgbWF0Y2ggIXBsb3REZXNjciB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgKFN0YW5kQnkgXykgLT4gKClcbiAgfCBTb21lIChSYXcgcGxvdCkgLT4gY2xvc2Vfb3V0IHBsb3QuZGVzY1xuICB8IFNvbWUgKFN2ZyBzKSAtPiBQcF9zdmcudG9fZmlsZSBzXG5cbmxldCB0cmFjZURlc2NyID0gcmVmIE5vbmVcbmxldCB0cmFjZU5vdEVtcHR5ID0gcmVmIGZhbHNlXG5cbmxldCBjbG9zZV90cmFjZSAoKSA9XG4gIG1hdGNoICF0cmFjZURlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkZXNjIC0+XG4gICAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiXVxcbn1cXG5cIiBpblxuICAgIGxldCAoKSA9IGNsb3NlX291dCBkZXNjIGluXG4gICAgdHJhY2VEZXNjciA6PSBOb25lXG5cbmxldCBpbml0aWFsaXplIGFjdGl2aXRpZXNfZmlsZSB0cmFjZV9maWxlIHBsb3RQYWNrIGVudiA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggdHJhY2VfZmlsZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT5cbiAgICAgIGxldCBkZXNjID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgcyBpblxuICAgICAgbGV0ICgpID0gVHJhY2UuaW5pdF90cmFjZV9maWxlIH51dWlkIGVudiBkZXNjIGluXG4gICAgICB0cmFjZURlc2NyIDo9IFNvbWUgZGVzY1xuICBpblxuICBsZXQgKCkgPSBpbml0X2FjdGl2aXRpZXMgZW52IGFjdGl2aXRpZXNfZmlsZSBpblxuICBtYXRjaCBwbG90UGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgcGFjayAtPiBwbG90RGVzY3IgOj0gU29tZSAoU3RhbmRCeSBwYWNrKVxuXG5sZXQgbGF1bmNoX3Bsb3QgKGZpbGVuYW1lLCB0aXRsZSwgaGVhZCkgPVxuICBsZXQgZm9ybWF0ID1cbiAgICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZW5hbWUgXCIuc3ZnXCIgdGhlblxuICAgICAgU3ZnXG4gICAgICAgIHtcbiAgICAgICAgICBQcF9zdmcuZmlsZSA9IGZpbGVuYW1lO1xuICAgICAgICAgIFBwX3N2Zy50aXRsZTtcbiAgICAgICAgICBQcF9zdmcuZGVzY3IgPSBcIlxcXCJ1dWlkXFxcIiA6IFxcXCJcIiBeIHN0cmluZ19vZl9pbnQgdXVpZCBeIFwiXFxcIlwiO1xuICAgICAgICAgIFBwX3N2Zy5sZWdlbmQgPSBoZWFkO1xuICAgICAgICAgIFBwX3N2Zy5wb2ludHMgPSBbXTtcbiAgICAgICAgfVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGRfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGVuYW1lIGluXG4gICAgICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gICAgICBsZXQgaXNfdHN2ID0gRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZpbGVuYW1lIFwiLnRzdlwiIGluXG4gICAgICBsZXQgKCkgPSBpZiBub3QgaXNfdHN2IHRoZW4gRm9ybWF0LmZwcmludGYgZCBcIiMgJXNALlwiIHRpdGxlIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBub3QgaXNfdHN2IHRoZW4gRm9ybWF0LmZwcmludGYgZCBcIiMgXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAuXCIgdXVpZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IERhdGEucHJpbnRfcGxvdF9sZWdlbmQgfmlzX3RzdiBkIGhlYWQgaW5cbiAgICAgIFJhdyB7IGRlc2MgPSBkX2NoYW47IGZvcm0gPSBkOyBpc190c3YgfVxuICAgIClcbiAgaW5cbiAgcGxvdERlc2NyIDo9IFNvbWUgZm9ybWF0XG5cbmxldCByZWMgcGxvdF9ub3cgbCA9XG4gIG1hdGNoICFwbG90RGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSAoU3RhbmRCeSBwKSAtPlxuICAgIGxldCAoKSA9IGxhdW5jaF9wbG90IHAgaW5cbiAgICBwbG90X25vdyBsXG4gIHwgU29tZSAoUmF3IGZkKSAtPlxuICAgIERhdGEucHJpbnRfcGxvdF9saW5lIH5pc190c3Y6ZmQuaXNfdHN2IE5ici5wcmludF9vcHRpb24gZmQuZm9ybSBsXG4gIHwgU29tZSAoU3ZnIHMpIC0+IHMuUHBfc3ZnLnBvaW50cyA8LSBsIDo6IHMuUHBfc3ZnLnBvaW50c1xuXG5sZXQgc25hcHNob3QgZmlsZSBzID1cbiAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZpbGUgXCIuZG90XCIgdGhlblxuICAgIEthcHBhX2ZpbGVzLndpdGhfc25hcHNob3QgZmlsZSBcIi5kb3RcIiBzLkRhdGEuc25hcHNob3RfZXZlbnRcbiAgICAgIChLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9kb3Rfc25hcHNob3QgfnV1aWQgZiBzKSlcbiAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZSBcIi5qc29uXCIgdGhlblxuICAgIEthcHBhX2ZpbGVzLndpdGhfc25hcHNob3QgZmlsZSBcIi5qc29uXCIgcy5EYXRhLnNuYXBzaG90X2V2ZW50IChmdW4gZCAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIERhdGEud3JpdGVfc25hcHNob3QgZCBzKVxuICBlbHNlXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmthXCIgcy5EYXRhLnNuYXBzaG90X2V2ZW50XG4gICAgICAoS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfc25hcHNob3QgfnV1aWQgZiBzKSlcblxubGV0IHByaW50X3NwZWNpZXMgdGltZSBmIG1peHR1cmUgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWc6IEBbPGg+JWFAXUAuXCIgdGltZSBVc2VyX2dyYXBoLnByaW50X2NjIG1peHR1cmVcblxubGV0IHdhcm5pbmdfYnVmZmVyIDogKExvYy50IG9wdGlvbiAqIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpKSBsaXN0IHJlZiA9XG4gIHJlZiBbXVxuXG5sZXQgZ28gPSBmdW5jdGlvblxuICB8IERhdGEuU25hcHNob3QgKGYsIHMpIC0+IHNuYXBzaG90IGYgc1xuICB8IERhdGEuRElOIChuLCBmKSAtPiBvdXRwdXRfZmx1eCBuIGZcbiAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyAociwgZmx1eCkgLT4gb3V0cHV0X2FjdGl2aXRpZXMgciBmbHV4XG4gIHwgRGF0YS5QbG90IHggLT4gcGxvdF9ub3cgeFxuICB8IERhdGEuUHJpbnQgcCAtPlxuICAgIGxldCBkZXNjID1cbiAgICAgIG1hdGNoIHAuRGF0YS5maWxlX2xpbmVfbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBzdGRvdXRcbiAgICAgIHwgU29tZSBmaWxlIC0+IGdldF9kZXNjIGZpbGUgcHJpbnRfZGVzY1xuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIiVzQC5cIiBwLkRhdGEuZmlsZV9saW5lX3RleHRcbiAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5wcmludGYgXCIlc0AuXCIgc1xuICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IHdhcm5pbmdfYnVmZmVyIDo9IChwb3MsIG1zZykgOjogIXdhcm5pbmdfYnVmZmVyXG4gIHwgRGF0YS5UcmFjZVN0ZXAgc3RlcCAtPlxuICAgIChtYXRjaCAhdHJhY2VEZXNjciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGQgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmICF0cmFjZU5vdEVtcHR5IHRoZW5cbiAgICAgICAgICBvdXRwdXRfY2hhciBkICcsJ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdHJhY2VOb3RFbXB0eSA6PSB0cnVlXG4gICAgICBpblxuICAgICAgSnNvblV0aWwud3JpdGVfdG9fY2hhbm5lbCBUcmFjZS53cml0ZV9zdGVwIGQgc3RlcClcbiAgfCBEYXRhLlNwZWNpZXMgKGZpbGUsIHRpbWUsIG1peHR1cmUpIC0+XG4gICAgbGV0IGRlc2MgPSBnZXRfZGVzYyBmaWxlIHNwZWNpZXNfZGVzYyBpblxuICAgIHByaW50X3NwZWNpZXMgdGltZSBkZXNjIG1peHR1cmVcblxubGV0IGlucHV0c0Rlc2MgPSByZWYgTm9uZVxuXG5sZXQgZmx1c2hfd2FybmluZyAoKSA9XG4gIGxldCBsID0gTGlzdC5yZXYgIXdhcm5pbmdfYnVmZmVyIGluXG4gIGxldCAoKSA9IHdhcm5pbmdfYnVmZmVyIDo9IFtdIGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBGb3JtYXQuZXJyX2Zvcm1hdHRlciBtc2cpXG4gICAgbFxuXG5sZXQgY2xvc2VfaW5wdXQgP2V2ZW50ICgpID1cbiAgbWF0Y2ggIWlucHV0c0Rlc2Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGlucHV0cyAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgICAgIChGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGlucHV0cylcbiAgICAgICAgICBcIkAuJSVtb2Q6IFtFXSA9ICVpIGRvICRTVE9QO0AuXCIgZXZlbnRcbiAgICBpblxuICAgIGNsb3NlX291dCBpbnB1dHNcblxubGV0IGNsb3NlID9ldmVudCAoKSA9XG4gIGxldCAoKSA9IGNsb3NlX3Bsb3QgKCkgaW5cbiAgbGV0ICgpID0gY2xvc2VfdHJhY2UgKCkgaW5cbiAgbGV0ICgpID0gY2xvc2VfYWN0aXZpdGllcyAoKSBpblxuICBsZXQgKCkgPSBmbHVzaF93YXJuaW5nICgpIGluXG4gIGxldCAoKSA9IGNsb3NlX2lucHV0ID9ldmVudCAoKSBpblxuICBjbG9zZV9kZXNjICgpXG5cbmxldCBpbml0aWFsX2lucHV0cyBjb25mIGVudiBpbml0IH5maWxlbmFtZSA9XG4gIGxldCBpbnB1dHMgPSBLYXBwYV9maWxlcy5vcGVuX291dF9mcmVzaCBmaWxlbmFtZSBbXSBcIlwiIFwiLmthXCIgaW5cbiAgbGV0IGlucHV0c19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBpbnB1dHMgaW5cbiAgbGV0ICgpID0gRGF0YS5wcmludF9pbml0aWFsX2lucHV0cyB+dXVpZCBjb25mIGVudiBpbnB1dHNfZm9ybSBpbml0IGluXG4gIGlucHV0c0Rlc2MgOj0gU29tZSBpbnB1dHNcblxubGV0IGlucHV0X21vZGlmaWNhdGlvbnMgZW52IGV2ZW50IG1vZHMgPVxuICBtYXRjaCAhaW5wdXRzRGVzYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaW5wdXRzIC0+XG4gICAgRm9ybWF0LmZwcmludGZcbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGlucHV0cylcbiAgICAgIFwiJSVtb2Q6IFtFXSA9ICVpIGRvICVhQC5cIiBldmVudFxuICAgICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uXG4gICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6IVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gfmVudikpXG4gICAgICBtb2RzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGRpcmVjdGl2ZV91bml0ID0gVGltZSB8IEV2ZW50XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBhbGdfdmFyX292ZXJ3cml0ZTogKHN0cmluZyAqIE5ici50KSBsaXN0O1xuICBtdXRhYmxlIG1hcnNoYWxpemVkSW5GaWxlOiBzdHJpbmc7XG4gIG11dGFibGUgaW5pdGlhbE1peDogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSByZXNjYWxlOiBmbG9hdCBvcHRpb247XG4gIG11dGFibGUgc2VlZFZhbHVlOiBpbnQgb3B0aW9uO1xuICBtdXRhYmxlIHVuaXQ6IGRpcmVjdGl2ZV91bml0O1xuICBtdXRhYmxlIG1hcnNoYWxpemVPdXRGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIGRvbWFpbk91dHB1dEZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgdHJhY2VGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIGxvZ0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgY29tcGlsZV9tb2RlOiBib29sO1xuICBtdXRhYmxlIHNoYXJpbmc6IFBhdHRlcm4uc2hhcmluZ19sZXZlbDtcbiAgbXV0YWJsZSBzaG93RWZmaWNpZW5jeTogYm9vbDtcbiAgbXV0YWJsZSB0aW1lSW5kZXBlbmRlbnQ6IGJvb2w7XG59XG5cbmxldCBkZWZhdWx0IDogdCA9XG4gIHtcbiAgICBhbGdfdmFyX292ZXJ3cml0ZSA9IFtdO1xuICAgIHJlc2NhbGUgPSBOb25lO1xuICAgIG1hcnNoYWxpemVkSW5GaWxlID0gXCJcIjtcbiAgICBpbml0aWFsTWl4ID0gTm9uZTtcbiAgICBzZWVkVmFsdWUgPSBOb25lO1xuICAgIHVuaXQgPSBUaW1lO1xuICAgIG1hcnNoYWxpemVPdXRGaWxlID0gTm9uZTtcbiAgICBkb21haW5PdXRwdXRGaWxlID0gTm9uZTtcbiAgICB0cmFjZUZpbGUgPSBOb25lO1xuICAgIGxvZ0ZpbGUgPSBTb21lIFwiaW5wdXRzXCI7XG4gICAgY29tcGlsZV9tb2RlID0gZmFsc2U7XG4gICAgc2hhcmluZyA9IFBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJucztcbiAgICBzaG93RWZmaWNpZW5jeSA9IGZhbHNlO1xuICAgIHRpbWVJbmRlcGVuZGVudCA9IGZhbHNlO1xuICB9XG5cbmxldCBvcHRpb25zICh0IDogdCkgOiAoc3RyaW5nICogQXJnLnNwZWMgKiBzdHJpbmcpIGxpc3QgPVxuICBbXG4gICAgKCBcIi1taXh0dXJlXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gZmljIC0+IHQuaW5pdGlhbE1peCA8LSBTb21lIGZpYyksXG4gICAgICBcIlRha2UgdGhlIGluaXRpYWwgc3RhdGUgZnJvbSB0aGlzIGZpbGUgKGlnbm9yZSAlaW5pdCBmcm9tIG90aGVyIGZpbGVzKVwiICk7XG4gICAgKCBcIi12YXJcIixcbiAgICAgIEFyZy5UdXBsZVxuICAgICAgICAobGV0IHRtcF92YXJfbmFtZSA9IHJlZiBcIlwiIGluXG4gICAgICAgICBbXG4gICAgICAgICAgIEFyZy5TdHJpbmcgKGZ1biBuYW1lIC0+IHRtcF92YXJfbmFtZSA6PSBuYW1lKTtcbiAgICAgICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAgICAgIChmdW4gdmFyX3ZhbCAtPlxuICAgICAgICAgICAgICAgdC5hbGdfdmFyX292ZXJ3cml0ZSA8LVxuICAgICAgICAgICAgICAgICAoICF0bXBfdmFyX25hbWUsXG4gICAgICAgICAgICAgICAgICAgdHJ5IE5ici5vZl9zdHJpbmcgdmFyX3ZhbFxuICAgICAgICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoQXJnLkJhZCAoXCJcXFwiXCIgXiB2YXJfdmFsIF4gXCJcXFwiIGlzIG5vdCBhIHZhbGlkIHZhbHVlXCIpKSApXG4gICAgICAgICAgICAgICAgIDo6IHQuYWxnX3Zhcl9vdmVyd3JpdGUpO1xuICAgICAgICAgXSksXG4gICAgICBcIlNldCBhIHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWVcIiApO1xuICAgICggXCItbG9hZC1zaW1cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBmaWxlIC0+IHQubWFyc2hhbGl6ZWRJbkZpbGUgPC0gZmlsZSksXG4gICAgICBcImxvYWQgc2ltdWxhdGlvbiBwYWNrYWdlIGluc3RlYWQgb2Yga2FwcGEgZmlsZXNcIiApO1xuICAgICggXCItcmVzY2FsZVwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gaSAtPiB0LnJlc2NhbGUgPC0gU29tZSBpKSxcbiAgICAgIFwiQXBwbHkgcmVzY2FsaW5nIGZhY3RvciB0byBpbml0aWFsIGNvbmRpdGlvblwiICk7XG4gICAgKCBcIi11XCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwidGltZVwiIHwgXCJUaW1lXCIgfCBcInRcIiAtPiB0LnVuaXQgPC0gVGltZVxuICAgICAgICB8IFwiZXZlbnRcIiB8IFwiZXZlbnRzXCIgfCBcImVcIiB8IFwiRXZlbnRcIiB8IFwiRXZlbnRzXCIgLT4gdC51bml0IDwtIEV2ZW50XG4gICAgICAgIHwgcyAtPiByYWlzZSAoQXJnLkJhZCAoXCJVbnJlY29nbml6ZWQgdW5pdDogXCIgXiBzKSkpLFxuICAgICAgXCJ1bml0ICh0aW1lL2V2ZW50KSBpbiB3aGljaCBsaW1pdCBhbmQgcGxvdCBwZXJpb2QgYXJlIHNwZWNpZmllZFwiICk7XG4gICAgKCBcIi1lXCIsXG4gICAgICBBcmcuSW50XG4gICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAgICAgKFwiT3B0aW9uICctZScgaGFzIGJlZW4gcmVwbGFjZSBieSAnLXUgZXZlbnQgLWwgXCJcbiAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IGUgXiBcIidcIikpKSxcbiAgICAgIFwiRGVwcmVjYXRlZCBvcHRpb25cIiApO1xuICAgICggXCItbWFrZS1zaW1cIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBtYXJzaGFsaXplT3V0RmlsZSAtPiB0Lm1hcnNoYWxpemVPdXRGaWxlIDwtIFNvbWUgbWFyc2hhbGl6ZU91dEZpbGUpLFxuICAgICAgXCJzYXZlIGthcHBhIGZpbGVzIGFzIGEgc2ltdWxhdGlvbiBwYWNrYWdlXCIgKTtcbiAgICAoIFwiLWR1bXAtY2NcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBkb21haW5PdXRwdXRGaWxlIC0+IHQuZG9tYWluT3V0cHV0RmlsZSA8LSBTb21lIGRvbWFpbk91dHB1dEZpbGUpLFxuICAgICAgXCJmaWxlIG5hbWUgZm9yIGR1bXBpbmcgdGhlIGRvbWFpbiBvZiBvYnNlcnZhYmxlc1wiICk7XG4gICAgKCBcIi10cmFjZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHRyYWNlRmlsZSAtPiB0LnRyYWNlRmlsZSA8LSBTb21lIHRyYWNlRmlsZSksXG4gICAgICBcImZpbGUgbmFtZSBmb3IgZHVtcGluZyB0aGUgc2ltdWxhdGlvbiB0cmFjZVwiICk7XG4gICAgKCBcIi0tdGltZS1pbmRlcGVuZGVudFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LnRpbWVJbmRlcGVuZGVudCA8LSB0cnVlKSxcbiAgICAgIFwiRGlzYWJsZSB0aGUgdXNlIG9mIHRpbWUgaXMgc3RvcnkgaGV1cml0aWNzIChmb3IgdGVzdCBzdWl0ZSlcIiApO1xuICAgICggXCItc2VlZFwiLFxuICAgICAgQXJnLkludCAoZnVuIGkgLT4gdC5zZWVkVmFsdWUgPC0gU29tZSBpKSxcbiAgICAgIFwiU2VlZCBmb3IgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXCIgKTtcbiAgICAoIFwiLS1wcmludC1lZmZpY2llbmN5XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuc2hvd0VmZmljaWVuY3kgPC0gdHJ1ZSksXG4gICAgICBcIkthU2ltIHRlbGxzIGhvdyBmYXN0IGl0IHJ1bnNcIiApO1xuICAgICggXCItc2hhcmluZ1wiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBcIm5vXCIgfCBcIm5vbmVcIiB8IFwiTm9uZVwiIC0+IHQuc2hhcmluZyA8LSBQYXR0ZXJuLk5vX3NoYXJpbmdcbiAgICAgICAgfCBcIkNvbXBhdGlibGVcIiAtPiB0LnNoYXJpbmcgPC0gUGF0dGVybi5NYXhfc2hhcmluZ1xuICAgICAgICB8IFwibWF4XCIgfCBcIk1heFwiIC0+IHQuc2hhcmluZyA8LSBQYXR0ZXJuLk1heF9zaGFyaW5nXG4gICAgICAgIHwgcyAtPiByYWlzZSAoQXJnLkJhZCAoXCJVbnJlY29nbml6ZWQgc2hhcmluZyBsZXZlbDogXCIgXiBzKSkpLFxuICAgICAgXCJMZXZlbCBvZiBzaGFyaW5nIGNvbXB1dGVkIGJldHdlZW4gcGF0dGVybnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIFxcXG4gICAgICAgKE5vbmUvQ29tcGF0aWJsZS9NYXgpXCIgKTtcbiAgICAoIFwiLS1jb21waWxlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuY29tcGlsZV9tb2RlIDwtIHRydWUpLFxuICAgICAgXCJEaXNwbGF5IHJ1bGUgY29tcGlsYXRpb24gYXMgYWN0aW9uIGxpc3RcIiApO1xuICAgICggXCItbG9nXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gbG9nRmlsZSAtPiB0LmxvZ0ZpbGUgPC0gU29tZSBsb2dGaWxlKSxcbiAgICAgIFwiZmlsZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHJlZ2VuZXJhdGUgdGhlIGV4YWN0IHNhbWUgc2ltdWxhdGlvblwiICk7XG4gICAgKCBcIi0tbm8tbG9nXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQubG9nRmlsZSA8LSBOb25lKSxcbiAgICAgIFwiRG8gbm90IGdlbmVyYXRlIGEgZmlsZSB0byByZWRvIHRoZSBleGFjdCBzYW1lIHNpbXVsYXRpb25cIiApO1xuICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHByZXByb2Nlc3NlZF9hc3QgPSB7XG4gIGNvbmY6IENvbmZpZ3VyYXRpb24udDtcbiAgc3RvcnlfY29tcHJlc3Npb246IGJvb2wgKiBib29sICogYm9vbDtcbiAgZm9ybWF0Q2Zsb3c6IHN0cmluZztcbiAgY2Zsb3dGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBhc3RfY29tcGlsZWRfZGF0YTogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhO1xuICBvdmVyd3JpdGVfaW5pdDpcbiAgICAoTEthcHBhLnJ1bGVfbWl4dHVyZSwgUmF3X21peHR1cmUudCwgaW50KSBBc3QuaW5pdF9zdGF0ZW1lbnQgbGlzdCBvcHRpb247XG4gIG92ZXJ3cml0ZV90MDogZmxvYXQgb3B0aW9uO1xufVxuXG50eXBlIGNvbXBpbGF0aW9uX3Jlc3VsdCA9IHtcbiAgY29uZjogQ29uZmlndXJhdGlvbi50O1xuICBjb3VudGVyc19pbmZvOiBDb3VudGVyc19pbmZvLnQ7XG4gIGVudjogTW9kZWwudDtcbiAgY29udGFjdF9tYXA6IENvbnRhY3RfbWFwLnQ7XG4gIHVwZGF0ZWRfYWxnX3ZhcnM6IGludCBsaXN0O1xuICBzdG9yeV9jb21wcmVzc2lvbjogKGJvb2wgKiBib29sICogYm9vbCkgb3B0aW9uO1xuICBmb3JtYXRDZmxvdzogc3RyaW5nO1xuICBjZmxvd0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIGluaXRfbDogKFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSkgbGlzdDtcbiAgY291bnRlcl9vcHQ6IENvdW50ZXIudCBvcHRpb247XG59XG5cbmxldCBwcmVwcm9jZXNzX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSA/a2FzaW1fYXJncyBjbGlfYXJnc1xuICAgIChhc3QgOiAoXywgXywgXywgXywgXywgXykgQXN0LmNvbXBpbCkgOiBwcmVwcm9jZXNzZWRfYXN0ID1cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgc2ltdWxhdGlvbiBwYXJhbWV0ZXJzQC5cIiBpblxuICBsZXQgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGUgPVxuICAgIENvbmZpZ3VyYXRpb24ucGFyc2UgYXN0LkFzdC5jb25maWd1cmF0aW9uc1xuICBpblxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBTYW5pdHkgY2hlY2tzQC5cIiBpblxuICBsZXQgc3ludGF4X3ZlcnNpb24gPSBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvbiBpblxuICBsZXQgdmFyX292ZXJ3cml0ZSwgaW5pdGlhbE1peCA9XG4gICAgbWF0Y2gga2FzaW1fYXJncyB3aXRoXG4gICAgfCBOb25lIC0+IFtdLCBOb25lXG4gICAgfCBTb21lIGthc2ltX2FyZ3MgLT5cbiAgICAgIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5hbGdfdmFyX292ZXJ3cml0ZSwga2FzaW1fYXJncy5LYXNpbV9hcmdzLmluaXRpYWxNaXhcbiAgaW5cbiAgbGV0IGFzdF9jb21waWxlZF9kYXRhIDogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhID1cbiAgICBMS2FwcGFfY29tcGlsZXIuY29tcGlsX29mX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSB+c3ludGF4X3ZlcnNpb25cbiAgICAgIH52YXJfb3ZlcndyaXRlIGFzdFxuICBpblxuICBsZXQgb3ZlcndyaXRlX2luaXQsIG92ZXJ3cml0ZV90MCA9XG4gICAgbWF0Y2ggaW5pdGlhbE1peCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgZmlsZSAtPlxuICAgICAgbGV0IGNvbXBpbCA9XG4gICAgICAgIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBBc3QuVjQgLT4gS2xleGVyNC5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyIEFzdC5lbXB0eV9jb21waWwgZmlsZVxuICAgICAgICB8IEFzdC5WMyAtPlxuICAgICAgICAgIEthcHBhTGV4ZXIuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciBBc3QuZW1wdHlfY29tcGlsIGZpbGVcbiAgICAgIGluXG4gICAgICBsZXQgY29uZiwgXywgXywgXyA9IENvbmZpZ3VyYXRpb24ucGFyc2UgY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyBpblxuICAgICAgKCBTb21lXG4gICAgICAgICAgKExLYXBwYV9jb21waWxlci5pbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnIGFzdF9jb21waWxlZF9kYXRhLmNvdW50ZXJzX2luZm9cbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5jb250YWN0X21hcFxuICAgICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzLk5hbWVkRGVjbHMuZmluZGVyXG4gICAgICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuYWxnX3ZhcnNfZmluZGVyIGNvbXBpbC5Bc3QuaW5pdCksXG4gICAgICAgIGNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsIClcbiAgaW5cbiAge1xuICAgIGNvbmY7XG4gICAgc3RvcnlfY29tcHJlc3Npb247XG4gICAgZm9ybWF0Q2Zsb3c7XG4gICAgY2Zsb3dGaWxlO1xuICAgIGFzdF9jb21waWxlZF9kYXRhO1xuICAgIG92ZXJ3cml0ZV9pbml0O1xuICAgIG92ZXJ3cml0ZV90MDtcbiAgfVxuXG5sZXQgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgc3ludGF4X3ZlcnNpb24gZmlsZV9saXN0ID1cbiAgbGV0IGNvbXBpbGluZ19mdW5jdGlvbiA9XG4gICAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICAgIHwgQXN0LlY0IC0+IEtsZXhlcjQuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlclxuICAgIHwgQXN0LlYzIC0+IEthcHBhTGV4ZXIuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlclxuICBpblxuICBMaXN0LmZvbGRfbGVmdCBjb21waWxpbmdfZnVuY3Rpb24gQXN0LmVtcHR5X2NvbXBpbCBmaWxlX2xpc3RcblxubGV0IGdldF9hc3RfZnJvbV9jbGlfYXJncyBjbGlfYXJncyA9XG4gIGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uXG4gICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXNcblxubGV0IGdldF9wcmVwcm9jZXNzZWRfYXN0X2Zyb21fY2xpX2FyZ3Mgfndhcm5pbmcgfmRlYnVnX21vZGVcbiAgICA/KGthc2ltX2FyZ3MgPSBLYXNpbV9hcmdzLmRlZmF1bHQpIGNsaV9hcmdzID1cbiAgbGV0IGFzdCA6XG4gICAgICAoIEFzdC5hZ2VudCxcbiAgICAgICAgQXN0LmFnZW50X3NpZyxcbiAgICAgICAgQXN0Lm1peHR1cmUsXG4gICAgICAgIEFzdC5taXh0dXJlLFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIEFzdC5ydWxlIClcbiAgICAgIEFzdC5jb21waWwgPVxuICAgIGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uXG4gICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lc1xuICBpblxuICBwcmVwcm9jZXNzX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSBjbGlfYXJncyB+a2FzaW1fYXJncyBhc3RcblxudHlwZSBjb21waWxhdGlvbl9wYWNrID0ge1xuICBjb21waWxhdGlvbl9yZXN1bHQ6IGNvbXBpbGF0aW9uX3Jlc3VsdDtcbiAgYWxnX292ZXJ3cml0ZTogKGludCAqIFByaW1pdGl2ZXMuYWxnX2V4cHIpIGxpc3Q7XG4gIG92ZXJ3cml0ZV90MDogZmxvYXQgb3B0aW9uO1xufVxuXG5sZXQgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3Mgfihjb21waWxlX21vZGVfb24gOiBib29sKVxuICAgIChwcmVwcm9jZXNzZWRfYXN0IDogcHJlcHJvY2Vzc2VkX2FzdCkgOiBjb21waWxhdGlvbl9wYWNrID1cbiAgbGV0IG4sIHcsIHMgPSBwcmVwcm9jZXNzZWRfYXN0LnN0b3J5X2NvbXByZXNzaW9uIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcmludGYgXCIrIENvbXBpbGluZy4uLkAuXCIgaW5cbiAgbGV0IGVudiwgaGFzX3RyYWNraW5nLCBpbml0X2wgPVxuICAgIEV2YWwuY29tcGlsZSB+b3V0cHV0czpPdXRwdXRzLmdvXG4gICAgICB+cGF1c2U6KGZ1biBmIC0+IGYgKCkpXG4gICAgICB+cmV0dXJuOihmdW4geCAtPiB4KVxuICAgICAgfmRlYnVnX21vZGU6IVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gfnNoYXJpbmc6a2FzaW1fYXJncy5LYXNpbV9hcmdzLnNoYXJpbmdcbiAgICAgID9yZXNjYWxlX2luaXQ6a2FzaW1fYXJncy5LYXNpbV9hcmdzLnJlc2NhbGVcbiAgICAgID9vdmVyd3JpdGVfaW5pdDpwcmVwcm9jZXNzZWRfYXN0Lm92ZXJ3cml0ZV9pbml0XG4gICAgICA/b3ZlcndyaXRlX3QwOnByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX3QwIH5jb21waWxlX21vZGVfb25cbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuYWdlbnRzX3NpZ1xuICAgICAgcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS5jb3VudGVyc19pbmZvXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnJlc3VsdFxuICBpblxuICBsZXQgc3RvcnlfY29tcHJlc3Npb24gPVxuICAgIGlmIGhhc190cmFja2luZyAmJiAobiB8fCB3IHx8IHMpIHRoZW5cbiAgICAgIFNvbWUgcHJlcHJvY2Vzc2VkX2FzdC5zdG9yeV9jb21wcmVzc2lvblxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgaW5cbiAge1xuICAgIGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gICAgICB7XG4gICAgICAgIGNvbmYgPSBwcmVwcm9jZXNzZWRfYXN0LmNvbmY7XG4gICAgICAgIGVudjtcbiAgICAgICAgY291bnRlcnNfaW5mbyA9IHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY291bnRlcnNfaW5mbztcbiAgICAgICAgY29udGFjdF9tYXAgPSBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwO1xuICAgICAgICB1cGRhdGVkX2FsZ192YXJzID0gcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS51cGRhdGVkX2FsZ192YXJzO1xuICAgICAgICBzdG9yeV9jb21wcmVzc2lvbjtcbiAgICAgICAgZm9ybWF0Q2Zsb3cgPSBwcmVwcm9jZXNzZWRfYXN0LmZvcm1hdENmbG93O1xuICAgICAgICBjZmxvd0ZpbGUgPSBwcmVwcm9jZXNzZWRfYXN0LmNmbG93RmlsZTtcbiAgICAgICAgaW5pdF9sO1xuICAgICAgICBjb3VudGVyX29wdCA9IE5vbmU7XG4gICAgICB9O1xuICAgIGFsZ19vdmVyd3JpdGUgPSBbXTtcbiAgICBvdmVyd3JpdGVfdDAgPSBwcmVwcm9jZXNzZWRfYXN0Lm92ZXJ3cml0ZV90MDtcbiAgfVxuXG5sZXQgZ2V0X3BhY2tfZnJvbV9tYXJzaGFsaXplZGZpbGUgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJncyBtYXJzaGFsaXplZF9maWxlXG4gICAgOiBjb21waWxhdGlvbl9wYWNrID1cbiAgYXNzZXJ0IChtYXJzaGFsaXplZF9maWxlIDw+IFwiXCIpO1xuICB0cnlcbiAgICBsZXQgZCA9IG9wZW5faW5fYmluIG1hcnNoYWxpemVkX2ZpbGUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXMgPD4gW10gdGhlblxuICAgICAgICB3YXJuaW5nIH5wb3M6TG9jLmR1bW15IChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgIFwiU2ltdWxhdGlvbiBwYWNrYWdlIGxvYWRlZCwgYWxsIGthcHBhIGZpbGVzIGFyZSBpZ25vcmVkXCIpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LnByaW50ZiBcIisgTG9hZGluZyBzaW11bGF0aW9uIHBhY2thZ2UgJXMuLi5ALlwiIG1hcnNoYWxpemVkX2ZpbGVcbiAgICBpblxuICAgIGxldCBjb21waWxhdGlvbl9yZXN1bHQgOiBjb21waWxhdGlvbl9yZXN1bHQgPSBNYXJzaGFsLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gU3RkbGliLmNsb3NlX2luIGQgaW5cbiAgICBsZXQgYWxnX292ZXJ3cml0ZSA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIChzLCB2KSAtPlxuICAgICAgICAgICggTW9kZWwubnVtX29mX2FsZyAoTG9jLmFubm90X3dpdGhfZHVtbXkgcykgY29tcGlsYXRpb25fcmVzdWx0LmVudixcbiAgICAgICAgICAgIEFsZ19leHByLkNPTlNUIHYgKSlcbiAgICAgICAga2FzaW1fYXJncy5LYXNpbV9hcmdzLmFsZ192YXJfb3ZlcndyaXRlXG4gICAgaW5cbiAgICBtYXRjaCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuaW5pdGlhbE1peCB3aXRoXG4gICAgfCBOb25lIC0+IHsgY29tcGlsYXRpb25fcmVzdWx0OyBhbGdfb3ZlcndyaXRlOyBvdmVyd3JpdGVfdDAgPSBOb25lIH1cbiAgICB8IFNvbWUgZmlsZSAtPlxuICAgICAgbGV0IGNvbXBpbCA9XG4gICAgICAgIGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uIFsgZmlsZSBdXG4gICAgICBpblxuICAgICAgbGV0IG92ZXJ3cml0ZV90MCA6IGZsb2F0IG9wdGlvbiA9XG4gICAgICAgIChDb25maWd1cmF0aW9uLnBhcnNlIGNvbXBpbC5Bc3QuY29uZmlndXJhdGlvbnMgfD4gZnVuIChhLCBfLCBfLCBfKSAtPiBhKVxuICAgICAgICB8PiBmdW4gY29uZiAtPiBjb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbFxuICAgICAgaW5cblxuICAgICAgbGV0IHJhd19pbml0cyA9XG4gICAgICAgIExLYXBwYV9jb21waWxlci5pbml0X29mX2FzdCB+d2FybmluZ1xuICAgICAgICAgIH5zeW50YXhfdmVyc2lvbjpjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYpXG4gICAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0LmNvdW50ZXJzX2luZm8gY29tcGlsYXRpb25fcmVzdWx0LmNvbnRhY3RfbWFwXG4gICAgICAgICAgKE1vZGVsLnRva2Vuc19maW5kZXIgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICAoTW9kZWwuYWxnc19maW5kZXIgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICBjb21waWwuQXN0LmluaXRcbiAgICAgIGluXG4gICAgICBsZXQgaW5pdF9sID1cbiAgICAgICAgRXZhbC5jb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH53YXJuaW5nXG4gICAgICAgICAgP3Jlc2NhbGU6a2FzaW1fYXJncy5LYXNpbV9hcmdzLnJlc2NhbGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZVxuICAgICAgICAgIGNvbXBpbGF0aW9uX3Jlc3VsdC5jb250YWN0X21hcCBjb21waWxhdGlvbl9yZXN1bHQuZW52IHJhd19pbml0c1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0ID0geyBjb21waWxhdGlvbl9yZXN1bHQgd2l0aCBpbml0X2wgfTtcbiAgICAgICAgYWxnX292ZXJ3cml0ZTtcbiAgICAgICAgb3ZlcndyaXRlX3QwO1xuICAgICAgfVxuICB3aXRoXG4gIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCBfIGFzIGUgLT4gcmFpc2UgZVxuICB8IGV4biAtPlxuICAgIEZvcm1hdC5wcmludGZcbiAgICAgIFwiU2ltdWxhdGlvbiBwYWNrYWdlIHNlZW1zIHRvIGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbiBcXFxuICAgICAgIG9mIEthU2ltLCBhYm9ydGluZy4uLlwiO1xuICAgIEZvcm1hdC5lcHJpbnRmIFwiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIG9wZW5pbmcgbWFyc2hhbGl6ZWQgZmlsZTogXCI7XG4gICAgVXRpbHMucHBfZXhjZXB0aW9uIEZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBleGl0IDFcblxubGV0IGdldF9jb21waWxhdGlvbl9mcm9tX3BhY2sgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJnc1xuICAgIChwYWNrIDogY29tcGlsYXRpb25fcGFjaykgOiBjb21waWxhdGlvbl9yZXN1bHQgPVxuICBsZXQgaW5pdF90X2Zyb21fZmlsZXMgPVxuICAgIE9wdGlvbl91dGlsLnVuc29tZVxuICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSAwLiBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbClcbiAgICAgIHBhY2sub3ZlcndyaXRlX3QwXG4gIGluXG4gIGxldCBpbml0X3QsIG1heF90aW1lLCBpbml0X2UsIG1heF9ldmVudCwgcGxvdF9wZXJpb2QgPVxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy51bml0IHdpdGhcbiAgICB8IEthc2ltX2FyZ3MuVGltZSAtPlxuICAgICAgKCBPcHRpb25fdXRpbC51bnNvbWUgaW5pdF90X2Zyb21fZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLm1pblZhbHVlLFxuICAgICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWF4VmFsdWUsXG4gICAgICAgIE5vbmUsXG4gICAgICAgIE5vbmUsXG4gICAgICAgIChtYXRjaCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MucGxvdFBlcmlvZCB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IENvbmZpZ3VyYXRpb24uRFQgYVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgKENvbmZpZ3VyYXRpb24uRFQgMS4pXG4gICAgICAgICAgICBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24ucGxvdFBlcmlvZCkgKVxuICAgIHwgS2FzaW1fYXJncy5FdmVudCAtPlxuICAgICAgKCBpbml0X3RfZnJvbV9maWxlcyxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgU29tZVxuICAgICAgICAgIChpbnRfb2ZfZmxvYXQgKE9wdGlvbl91dGlsLnVuc29tZSAwLiBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWluVmFsdWUpKSxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwIGludF9vZl9mbG9hdCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWF4VmFsdWUsXG4gICAgICAgIChtYXRjaCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MucGxvdFBlcmlvZCB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IENvbmZpZ3VyYXRpb24uREUgKGludF9vZl9mbG9hdCAoY2VpbCBhKSlcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwudW5zb21lIChDb25maWd1cmF0aW9uLkRFIDEpXG4gICAgICAgICAgICBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24ucGxvdFBlcmlvZCkgKVxuICBpblxuICBsZXQgY291bnRlciA9XG4gICAgQ291bnRlci5jcmVhdGUgfmluaXRfdCA/aW5pdF9lID9tYXhfdGltZSA/bWF4X2V2ZW50IH5wbG90X3BlcmlvZFxuICAgICAgfm5iX3J1bGVzOihNb2RlbC5uYl9ydWxlcyBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYpXG4gICAgICAoKVxuICBpblxuICBsZXQgZW52ID1cbiAgICBpZlxuICAgICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmJhdGNobW9kZVxuICAgICAgJiYga2FzaW1fYXJncy5LYXNpbV9hcmdzLm1hcnNoYWxpemVPdXRGaWxlID0gTm9uZVxuICAgIHRoZW5cbiAgICAgIE1vZGVsLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWU6KENvdW50ZXIubWF4X3RpbWUgY291bnRlcilcbiAgICAgICAgP21heF9ldmVudHM6KENvdW50ZXIubWF4X2V2ZW50cyBjb3VudGVyKVxuICAgICAgICB+dXBkYXRlZF92YXJzOnBhY2suY29tcGlsYXRpb25fcmVzdWx0LnVwZGF0ZWRfYWxnX3ZhcnNcbiAgICAgICAgfmFsZ19vdmVyd3JpdGU6cGFjay5hbGdfb3ZlcndyaXRlIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudlxuICAgIGVsc2VcbiAgICAgIE1vZGVsLm92ZXJ3cml0ZV92YXJzIHBhY2suYWxnX292ZXJ3cml0ZSBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5lbnZcbiAgaW5cbiAgeyBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdCB3aXRoIGVudjsgY291bnRlcl9vcHQgPSBTb21lIGNvdW50ZXIgfVxuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCB+d2FybmluZyA/KGNvbXBpbGVfbW9kZV9vbiA9IGZhbHNlKVxuICAgID8oa2FzaW1fYXJncyA9IEthc2ltX2FyZ3MuZGVmYXVsdCkgY2xpX2FyZ3MgcHJlcHJvY2Vzc2VkX2FzdCA6XG4gICAgY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgbGV0IHBhY2sgPVxuICAgIGdldF9wYWNrX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCBrYXNpbV9hcmdzIH5jb21waWxlX21vZGVfb24gcHJlcHJvY2Vzc2VkX2FzdFxuICBpblxuICBnZXRfY29tcGlsYXRpb25fZnJvbV9wYWNrIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3MgcGFja1xuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uIH53YXJuaW5nIH5kZWJ1Z19tb2RlID8oY29tcGlsZV9tb2RlX29uID0gZmFsc2UpXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gIGxldCAocGFjayA6IGNvbXBpbGF0aW9uX3BhY2spID1cbiAgICBtYXRjaCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MubWFyc2hhbGl6ZWRJbkZpbGUgd2l0aFxuICAgIHwgXCJcIiAtPlxuICAgICAgbGV0IHByZXByb2Nlc3NlZF9hc3QgPVxuICAgICAgICBnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV9hcmdzIH53YXJuaW5nIH5kZWJ1Z19tb2RlIGNsaV9hcmdzXG4gICAgICBpblxuICAgICAgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3MgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgICBwcmVwcm9jZXNzZWRfYXN0XG4gICAgfCBtYXJzaGFsaXplZF9maWxlIC0+XG4gICAgICBnZXRfcGFja19mcm9tX21hcnNoYWxpemVkZmlsZSB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgICAgIG1hcnNoYWxpemVkX2ZpbGVcbiAgaW5cbiAgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzIHBhY2tcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBkZWxpbWl0ZXI6IGNoYXIgfVxuXG5sZXQgZGVmYXVsdCA6IHQgPSB7IGRlbGltaXRlciA9IFRvb2xzLmRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlciB9XG5cbmxldCBvcHRpb25zICh0IDogdCkgOiAoc3RyaW5nICogQXJnLnNwZWMgKiBzdHJpbmcpIGxpc3QgPVxuICBbXG4gICAgKCBcIi0tZGVsaW1pdGVyXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGQgPSBTY2FuZi51bmVzY2FwZWQgZCBpblxuICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICBpZiAxID0gU3RyaW5nLmxlbmd0aCBkIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuZ2V0IGQgMFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJkZWxpbWV0ZXIgaGFzIG11bHRpcGxlIGNoYXJhY3RlcnMgJyVzJ1wiIGQpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHQuZGVsaW1pdGVyIDwtIGQgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgd2l0aCBTY2FuZi5TY2FuX2ZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgcmFpc2UgKEFyZy5CYWQgKEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHBhcnNlIGRlbGltZXRlciAnJXMnXCIgZCkpKSxcbiAgICAgIFwiRGVsaW1pdGVyIGZvciBtZXNzYWdlIHBhc3NpbmdcIiApO1xuICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKiopXG4oKiBKU29uIGxhYmVscyopXG4oKioqKioqKioqKioqKiopXG5cbmxldCBhZ2VudCA9IFwiYWdlbnQgbmFtZVwiXG5sZXQgY29udGFjdG1hcCA9IFwiY29udGFjdCBtYXBcIlxubGV0IGFjY3VyYWN5X3N0cmluZyA9IFwiYWNjdXJhY3lcIlxubGV0IGRlYWRfcnVsZXMgPSBcImRlYWQgcnVsZXNcIlxubGV0IGRlYWRfYWdlbnRzID0gXCJkZWFkIGFnZW50c1wiXG5sZXQgbWFwID0gXCJtYXBcIlxubGV0IGludGVyZmFjZSA9IFwiaW50ZXJmYWNlXCJcbmxldCBzaXRlID0gXCJzaXRlIG5hbWVcIlxubGV0IHN0YXRlc2xpc3QgPSBcInN0YXRlcyBsaXN0XCJcbmxldCBzaXRlbmFtZSA9IFwic2l0ZV9uYW1lXCJcbmxldCBzaXRldHlwZSA9IFwic2l0ZV90eXBlXCJcbmxldCBzaXRlbGlua3MgPSBcInBvcnRfbGlua3NcIlxubGV0IHNpdGVzdGF0ZXMgPSBcInBvcnRfc3RhdGVzXCJcbmxldCBzaXRlbm9kZW5hbWUgPSBcIm5vZGVfdHlwZVwiXG5sZXQgc2l0ZW5vZGVpZCA9IFwibm9kZV9pZFwiXG5sZXQgc2l0ZW5vZGVzaXRlcyA9IFwibm9kZV9zaXRlc1wiXG5sZXQgaHlwID0gXCJzaXRlIGdyYXBoXCJcbmxldCByZWZpbmVtZW50ID0gXCJzaXRlIGdyYXBoIGxpc3RcIlxubGV0IGRvbWFpbl9uYW1lID0gXCJkb21haW4gbmFtZVwiXG5sZXQgcmVmaW5lbWVudHNfbGlzdCA9IFwicmVmaW5lbWVudHMgbGlzdFwiXG5sZXQgcmVmaW5lbWVudF9sZW1tYXMgPSBcInJlZmluZW1lbnQgbGVtbWFzXCJcbmxldCBydWxlX2lkID0gXCJpZFwiXG5sZXQgYWdlbnRfaWQgPSBcImlkXCJcbmxldCBsYWJlbCA9IFwibGFiZWxcIlxubGV0IGFzdCA9IFwiYXN0XCJcbmxldCBwb3NpdGlvbiA9IFwibG9jYXRpb25cIlxubGV0IHBvc2l0aW9uX2xpc3QgPSBcImxvY2F0aW9uIGxpc3RcIlxubGV0IHZhcmlhYmxlID0gXCJ2YXJpYWJsZVwiXG5sZXQgcnVsZSA9IFwicnVsZVwiXG5sZXQgZGlyZWN0ID0gXCJkaXJlY3RcIlxubGV0IHNpZGVfZWZmZWN0ID0gXCJzaWRlIGVmZmVjdFwiXG5sZXQgc291cmNlID0gXCJzb3VyY2VcIlxubGV0IHRhcmdldF9tYXAgPSBcInRhcmdldCBtYXBcIlxubGV0IHRhcmdldCA9IFwidGFyZ2V0XCJcbmxldCBsb2NhdGlvbl9wYWlyX2xpc3QgPSBcImxvY2F0aW9uIHBhaXIgbGlzdFwiXG5sZXQgcmhzID0gXCJSSFNcIlxubGV0IGxocyA9IFwiTEhTXCJcbmxldCBpbmZsdWVuY2VtYXAgPSBcImluZmx1ZW5jZSBtYXBcIlxubGV0IG5vZGVzb2ZpbmZsdWVuY2VtYXAgPSBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIlxubGV0IHdha2V1cCA9IFwid2FrZS11cCBtYXBcIlxubGV0IGluaGliaXRpb24gPSBcImluaGliaXRpb24gbWFwXCJcbmxldCBub2RlcyA9IFwibm9kZXNcIlxubGV0IHRvdGFsX3N0cmluZyA9IFwidG90YWxcIlxubGV0IGZ3ZF9zdHJpbmcgPSBcImZ3ZFwiXG5sZXQgYndkX3N0cmluZyA9IFwiYndkXCJcbmxldCBvcmlnaW4gPSBcIm9yaWdpblwiXG5sZXQgZGlyZWN0aW9uID0gXCJkaXJlY3Rpb25cIlxubGV0IHJ1bGVfaGlkZGVuID0gXCJoaWRkZW5cIlxubGV0IHNjYyA9IFwic2NjXCJcbmxldCBhY2N1cmFjeV9jbSA9IFwiYWNjdXJhY3lfY21cIlxubGV0IGFjY3VyYWN5X3NjYyA9IFwiYWNjdXJhY3lfc2NjXCJcbmxldCBjb250YWN0bWFwc2NjID0gXCJjb250YWN0IG1hcCBzY2NcIlxubGV0IGNvdW50ZXIgPSBcImNvdW50ZXJcIlxubGV0IGluZiA9IFwibWluXCJcbmxldCBzdXAgPSBcIm1heFwiXG5sZXQga2V5ID0gXCJrZXlcIlxubGV0IGxvY2FsaXR5ID0gXCJsb2NhbGl0eVwiXG5cbigqKioqKioqKioqKioqKioqKioqKVxuKCogQWNjdXJhY3kgbGV2ZWxzICopXG4oKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhY2N1cmFjeV9sZXZlbCA9IExvdyB8IE1lZGl1bSB8IEhpZ2ggfCBGdWxsXG5cbmxldCBhY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgTWVkaXVtOyBIaWdoOyBGdWxsIF1cbmxldCBjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgSGlnaCBdXG5sZXQgaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgTWVkaXVtOyBIaWdoIF1cbmxldCByZWR1Y3Rpb25fYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IEhpZ2ggXVxuXG5sZXQgYWNjdXJhY3lfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBMb3cgLT4gXCJsb3dcIlxuICB8IE1lZGl1bSAtPiBcIm1lZGl1bVwiXG4gIHwgSGlnaCAtPiBcImhpZ2hcIlxuICB8IEZ1bGwgLT4gXCJmdWxsXCJcblxubGV0IGFjY3VyYWN5X3RvX2pzb24geCA9IEpzb25VdGlsLm9mX3N0cmluZyAoYWNjdXJhY3lfdG9fc3RyaW5nIHgpXG5cbmxldCBhY2N1cmFjeV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwibG93XCIgLT4gU29tZSBMb3dcbiAgfCBcIm1lZGl1bVwiIC0+IFNvbWUgTWVkaXVtXG4gIHwgXCJoaWdoXCIgLT4gU29tZSBIaWdoXG4gIHwgXCJmdWxsXCIgLT4gU29tZSBGdWxsXG4gIHwgXyAtPiBOb25lXG5cbmxldCBhY2N1cmFjeV9vZl9qc29uIGpzb24gPVxuICBtYXRjaCBhY2N1cmFjeV9vZl9zdHJpbmcgKEpzb25VdGlsLnRvX3N0cmluZyBqc29uKSB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJhY2N1cmFjeSBsZXZlbFwiLCBqc29uKSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFjY3VyYWN5U2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBhY2N1cmFjeV9sZXZlbFxuXG4gIGxldCBjb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBMb3csIExvdyAtPiAwXG4gICAgfCBMb3csIF8gLT4gLTFcbiAgICB8IF8sIExvdyAtPiAxXG4gICAgfCBNZWRpdW0sIE1lZGl1bSAtPiAwXG4gICAgfCBNZWRpdW0sIF8gLT4gLTFcbiAgICB8IF8sIE1lZGl1bSAtPiAxXG4gICAgfCBIaWdoLCBIaWdoIC0+IDBcbiAgICB8IEhpZ2gsIF8gLT4gLTFcbiAgICB8IF8sIEhpZ2ggLT4gMVxuICAgIHwgRnVsbCwgRnVsbCAtPiAwXG5cbiAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgIHwgRnVsbCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiRnVsbFwiXG4gICAgfCBIaWdoIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJIaWdoXCJcbiAgICB8IE1lZGl1bSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTWVkaXVtXCJcbiAgICB8IExvdyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTG93XCJcbmVuZClcblxubW9kdWxlIEFjY3VyYWN5TWFwID0gQWNjdXJhY3lTZXRNYXAuTWFwXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKioqKioqKioqKioqKiopXG4oKiBDb250YWN0IG1hcCAqKVxuKCoqKioqKioqKioqKioqKilcblxudHlwZSBjb250YWN0X21hcCA9IFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudFxuXG5sZXQgc2l0ZV90eXBlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IFVzZXJfZ3JhcGguQ291bnRlciBpIC0+IGBMaXN0IFsgYFN0cmluZyBcImNvdW50ZXJcIjsgYEludCBpIF1cbiAgfCBVc2VyX2dyYXBoLlBvcnQgcCAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJwb3J0XCI7XG4gICAgICAgIGBBc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggc2l0ZWxpbmtzLFxuICAgICAgICAgICAgICBtYXRjaCBwLlVzZXJfZ3JhcGgucG9ydF9saW5rcyB3aXRoXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5MSU5LUyBsIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgKGZ1biAoKHhsLCB4ciksIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgIGBMaXN0IFsgYExpc3QgWyBgSW50IHhsOyBgSW50IHhyIF07IGBJbnQgeSBdKVxuICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguV0hBVEVWRVIgLT4gYE51bGxcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlNPTUUgLT4gYEJvb2wgdHJ1ZVxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguVFlQRSAoc2ksIHR5KSAtPlxuICAgICAgICAgICAgICAgIGBBc3NvYyBbIFwic2l0ZV9uYW1lXCIsIGBTdHJpbmcgc2k7IFwicG9ydF9uYW1lXCIsIGBTdHJpbmcgdHkgXSApO1xuICAgICAgICAgICAgKCBzaXRlc3RhdGVzLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdCBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgICAgICAgICAgICAgcC5Vc2VyX2dyYXBoLnBvcnRfc3RhdGVzICk7XG4gICAgICAgICAgXTtcbiAgICAgIF1cblxubGV0IHNpdGVfdG9fanNvbiBzaXRlID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgc2l0ZW5hbWUsIEpzb25VdGlsLm9mX3N0cmluZyBzaXRlLlVzZXJfZ3JhcGguc2l0ZV9uYW1lO1xuICAgICAgc2l0ZXR5cGUsIHNpdGVfdHlwZV90b19qc29uIHNpdGUuVXNlcl9ncmFwaC5zaXRlX3R5cGU7XG4gICAgXVxuXG5sZXQgc2l0ZV90eXBlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcImNvdW50ZXJcIjsgYEludCBpIF0gLT4gVXNlcl9ncmFwaC5Db3VudGVyIGlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJwb3J0XCI7IGBBc3NvYyBsIF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgcG9ydF9saW5rcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZWxpbmtzIGwgaW5cbiAgICAgICAgIFVzZXJfZ3JhcGgubGlua3Nfb2ZfeW9qc29uIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBwb3J0X3N0YXRlcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZXN0YXRlcyBsIGluXG4gICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInN0YXRlIGxpc3RcIlxuICAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzdGF0ZVwiKSlcbiAgICAgICAgICAganNvblxuICAgICAgIGluXG4gICAgICAgVXNlcl9ncmFwaC5Qb3J0IHsgVXNlcl9ncmFwaC5wb3J0X2xpbmtzOyBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJzaXRlIG5vZGUgdHlwZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwic2l0ZSBub2RlIHR5cGVcIiwgeCkpXG5cbmxldCBzaXRlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHNpdGVfbmFtZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5hbWUgbCBpblxuICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBzaXRlX3R5cGUgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGV0eXBlIGwgaW5cbiAgICAgICAgIHNpdGVfdHlwZV9vZl9qc29uIGpzb25cbiAgICAgICBpblxuICAgICAgIHsgVXNlcl9ncmFwaC5zaXRlX25hbWU7IFVzZXJfZ3JhcGguc2l0ZV90eXBlIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJzaXRlIG5vZGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInNpdGUgbm9kZVwiLCB4KSlcblxubGV0IHNpdGVfbm9kZV9zaXRlc190b19qc29uIGxpc3QgPSBKc29uVXRpbC5vZl9hcnJheSBzaXRlX3RvX2pzb24gbGlzdFxuXG5sZXQgc2l0ZV9ub2RlX3NpdGVzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19hcnJheSB+ZXJyb3JfbXNnOlwic2l0ZSBub2RlIHNpdGVzXCIgc2l0ZV9vZl9qc29uXG5cbmxldCBzaXRlX25vZGVfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBgTnVsbFxuICB8IFNvbWUgbm9kZSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBzaXRlbm9kZW5hbWUsIEpzb25VdGlsLm9mX3N0cmluZyBub2RlLlVzZXJfZ3JhcGgubm9kZV90eXBlO1xuICAgICAgICBzaXRlbm9kZXNpdGVzLCBzaXRlX25vZGVfc2l0ZXNfdG9fanNvbiBub2RlLlVzZXJfZ3JhcGgubm9kZV9zaXRlcztcbiAgICAgIF1cblxubGV0IHNpdGVfbm9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBub2RlX2lkID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvY19vcHQgc2l0ZW5vZGVpZCBsIGluXG4gICAgICAgICBPcHRpb25fdXRpbC5tYXAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBub2RlX3R5cGUgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVub2RlbmFtZSBsIGluXG4gICAgICAgICBKc29uVXRpbC50b19zdHJpbmcganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IG5vZGVfc2l0ZXMgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVub2Rlc2l0ZXMgbCBpblxuICAgICAgICAgc2l0ZV9ub2RlX3NpdGVzX29mX2pzb24ganNvblxuICAgICAgIGluXG4gICAgICAgU29tZSB7IFVzZXJfZ3JhcGgubm9kZV90eXBlOyBVc2VyX2dyYXBoLm5vZGVfaWQ7IFVzZXJfZ3JhcGgubm9kZV9zaXRlcyB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwic2l0ZSBub2RlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJzaXRlIG5vZGVcIiwgeCkpXG5cbmxldCBjb250YWN0X21hcF90b19qc29uIGNvbnRhY3RfbWFwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBjb250YWN0bWFwLFxuICAgICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXAgYWNjdXJhY3lfdG9fanNvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9hcnJheSAoSnNvblV0aWwub2ZfYXJyYXkgc2l0ZV9ub2RlX3RvX2pzb24pKVxuICAgICAgICAgIGNvbnRhY3RfbWFwICk7XG4gICAgXVxuXG5sZXQgY29udGFjdF9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgY29udGFjdG1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImNvbnRhY3QgbWFwXCIpXG4gICAgICAgICBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICAoSnNvblV0aWwudG9fYXJyYXlcbiAgICAgICAgICAgIH5lcnJvcl9tc2c6XG4gICAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInNpdGUgbm9kZXMgbGlzdFwiKVxuICAgICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICAgICB+ZXJyb3JfbXNnOlxuICAgICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJzaXRlIG5vZGVzIGxpc3RcIilcbiAgICAgICAgICAgICAgIHNpdGVfbm9kZV9vZl9qc29uKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJjb250YWN0IG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiY29udGFjdCBtYXBcIiwgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCpzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50KilcblxudHlwZSBzY2MgPSAoKHN0cmluZyAqIHN0cmluZykgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdCBsaXN0XG5cbmxldCBzdHJpbmdfcGFpcl90b19qc29uIChhLCBiKSA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6c2l0ZW5hbWUgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgSnNvblV0aWwub2Zfc3RyaW5nIChhLCBiKVxuXG5sZXQgc3RyaW5nX3BhaXJfb2ZfanNvbiAoanNvbiA6IFlvanNvbi5CYXNpYy50KSA6IHN0cmluZyAqIHN0cmluZyA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6c2l0ZW5hbWUgfmVycm9yX21zZzpcInNpdGVcIlxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzaXRlX25hbWVcIilcbiAgICBqc29uXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24gKGEsIGIpID1cbiAgSnNvblV0aWwub2ZfcGFpciBzdHJpbmdfcGFpcl90b19qc29uIHN0cmluZ19wYWlyX3RvX2pzb24gKGEsIGIpXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24ganNvbiA6IChzdHJpbmcgKiBzdHJpbmcpICogKHN0cmluZyAqIHN0cmluZykgPVxuICBKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJib25kXCIgc3RyaW5nX3BhaXJfb2ZfanNvbiBzdHJpbmdfcGFpcl9vZl9qc29uXG4gICAganNvblxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24gbCA9XG4gIEpzb25VdGlsLm9mX2xpc3Qgc3RyaW5nX3BhaXJfcGFpcl90b19qc29uIGxcblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0X29mX2JvbmRzXCIgc3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIGpzb25cblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvX2pzb24gbCA9XG4gIEpzb25VdGlsLm9mX2xpc3Qgc3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24gbFxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGlzdF9vZl9saXN0c19vZl9ib25kc1wiXG4gICAgc3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24ganNvblxuXG5sZXQgc2NjX3RvX2pzb24gKGNtX2FjYywgc2NjX2FjYywgc2NjKSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggY29udGFjdG1hcHNjYyxcbiAgICAgICAgSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOmFjY3VyYWN5X2NtIH5sYWIyOmFjY3VyYWN5X3NjYyB+bGFiMzptYXBcbiAgICAgICAgICBhY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X3RvX2pzb24gc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fanNvblxuICAgICAgICAgIChjbV9hY2MsIHNjY19hY2MsIHNjYykgKTtcbiAgICBdXG5cbmxldCBzY2Nfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgY29udGFjdG1hcHNjYyBsIGluXG4gICAgICAgSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOmFjY3VyYWN5X2NtIH5sYWIyOmFjY3VyYWN5X3NjYyB+bGFiMzptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6XCJzY2MgZGVjb21wb3NpdGlvblwiIGFjY3VyYWN5X29mX2pzb24gYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfanNvbiBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwic2NjIGRlY29tcG9zaXRpb25cIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInNjYyBkZWNvbXBvc2l0aW9uXCIsIHgpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKiopXG4oKiBkZWFkIHJ1bGVzICopXG4oKioqKioqKioqKioqKiopXG5cbnR5cGUgcnVsZV9kaXJlY3Rpb24gPVxuICB8IERpcmVjdF9ydWxlXG4gIHwgUmV2ZXJzZV9ydWxlXG4gIHwgQm90aF9kaXJlY3Rpb25zXG4gIHwgRHVtbXlfcnVsZV9kaXJlY3Rpb25cbiAgfCBWYXJpYWJsZVxuXG50eXBlIHJ1bGUgPSB7XG4gIHJ1bGVfaWQ6IGludDtcbiAgcnVsZV9sYWJlbDogc3RyaW5nO1xuICBydWxlX2FzdDogc3RyaW5nO1xuICBydWxlX3Bvc2l0aW9uOiBMb2MudDtcbiAgcnVsZV9kaXJlY3Rpb246IHJ1bGVfZGlyZWN0aW9uO1xuICBydWxlX2hpZGRlbjogYm9vbDtcbn1cblxubGV0IGRpcmVjdGlvbl90b19qc29uIGQgPVxuICBtYXRjaCBkIHdpdGhcbiAgfCBEaXJlY3RfcnVsZSAtPiBgU3RyaW5nIFwiZGlyZWN0XCJcbiAgfCBSZXZlcnNlX3J1bGUgLT4gYFN0cmluZyBcInJldmVyc2VcIlxuICB8IEJvdGhfZGlyZWN0aW9ucyAtPiBgU3RyaW5nIFwiYm90aFwiXG4gIHwgRHVtbXlfcnVsZV9kaXJlY3Rpb24gLT4gYFN0cmluZyBcImR1bW15XCJcbiAgfCBWYXJpYWJsZSAtPiBgU3RyaW5nIFwidmFyaWFibGVcIlxuXG5sZXQganNvbl90b19kaXJlY3Rpb24gcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IGBTdHJpbmcgXCJkaXJlY3RcIiAtPiBEaXJlY3RfcnVsZVxuICB8IGBTdHJpbmcgXCJyZXZlcnNlXCIgLT4gUmV2ZXJzZV9ydWxlXG4gIHwgYFN0cmluZyBcImJvdGhcIiAtPiBCb3RoX2RpcmVjdGlvbnNcbiAgfCBgU3RyaW5nIFwiZHVtbXlcIiAtPiBEdW1teV9ydWxlX2RpcmVjdGlvblxuICB8IGBTdHJpbmcgXCJ2YXJpYWJsZVwiIC0+IFZhcmlhYmxlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJydWxlIGRpcmVjdGlvblwiLCB4KSlcblxubGV0IHJ1bGVfdG9fanNvbiBydWxlID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgcnVsZV9pZCwgSnNvblV0aWwub2ZfaW50IHJ1bGUucnVsZV9pZDtcbiAgICAgIGxhYmVsLCBKc29uVXRpbC5vZl9zdHJpbmcgcnVsZS5ydWxlX2xhYmVsO1xuICAgICAgYXN0LCBKc29uVXRpbC5vZl9zdHJpbmcgcnVsZS5ydWxlX2FzdDtcbiAgICAgIHBvc2l0aW9uLCBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIHJ1bGUucnVsZV9wb3NpdGlvbik7XG4gICAgICBkaXJlY3Rpb24sIGRpcmVjdGlvbl90b19qc29uIHJ1bGUucnVsZV9kaXJlY3Rpb247XG4gICAgICBydWxlX2hpZGRlbiwgSnNvblV0aWwub2ZfYm9vbCBydWxlLnJ1bGVfaGlkZGVuO1xuICAgIF1cblxubGV0IGpzb25fdG9fcnVsZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA2IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJ1bGVfaWQgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgcnVsZV9pZCBsKTtcbiAgICAgICAgIHJ1bGVfbGFiZWwgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgbGFiZWwgbCk7XG4gICAgICAgICBydWxlX2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICBydWxlX3Bvc2l0aW9uID1cbiAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgICAgfmVycm9yX21zZzpcbiAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImxvY2FsaXR5XCIpKVxuICAgICAgICAgICAgICAgIChMaXN0LmFzc29jIHBvc2l0aW9uIGwpKTtcbiAgICAgICAgIHJ1bGVfZGlyZWN0aW9uID0ganNvbl90b19kaXJlY3Rpb24gKExpc3QuYXNzb2MgZGlyZWN0aW9uIGwpO1xuICAgICAgICAgcnVsZV9oaWRkZW4gPSBKc29uVXRpbC50b19ib29sIChMaXN0LmFzc29jIHJ1bGVfaGlkZGVuIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIiBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcInJ1bGVcIiwgeCkpXG5cbnR5cGUgdmFyID0ge1xuICB2YXJfaWQ6IGludDtcbiAgdmFyX2xhYmVsOiBzdHJpbmc7XG4gIHZhcl9hc3Q6IHN0cmluZztcbiAgdmFyX3Bvc2l0aW9uOiBMb2MudDtcbn1cblxubGV0IHZhcl90b19qc29uIHZhciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHJ1bGVfaWQsIEpzb25VdGlsLm9mX2ludCB2YXIudmFyX2lkO1xuICAgICAgbGFiZWwsIEpzb25VdGlsLm9mX3N0cmluZyB2YXIudmFyX2xhYmVsO1xuICAgICAgYXN0LCBKc29uVXRpbC5vZl9zdHJpbmcgdmFyLnZhcl9hc3Q7XG4gICAgICBwb3NpdGlvbiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCB2YXIudmFyX3Bvc2l0aW9uKTtcbiAgICBdXG5cbmxldCBqc29uX3RvX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHZhcl9pZCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBydWxlX2lkIGwpO1xuICAgICAgICAgdmFyX2xhYmVsID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGxhYmVsIGwpO1xuICAgICAgICAgdmFyX2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICB2YXJfcG9zaXRpb24gPVxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICB+ZXJyb3JfbXNnOlxuICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgcG9zaXRpb24gbCkpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIiB2YXJcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwidmFyXCIsIHgpKVxuXG50eXBlICgncnVsZSwgJ3ZhcikgaW5mbHVlbmNlX25vZGUgPSBSdWxlIG9mICdydWxlIHwgVmFyIG9mICd2YXJcbnR5cGUgc2hvcnRfaW5mbHVlbmNlX25vZGUgPSAoaW50LCBpbnQpIGluZmx1ZW5jZV9ub2RlXG50eXBlIHJlZmluZWRfaW5mbHVlbmNlX25vZGUgPSAocnVsZSwgdmFyKSBpbmZsdWVuY2Vfbm9kZVxudHlwZSBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPSByZWZpbmVkX2luZmx1ZW5jZV9ub2RlIExvYy5hbm5vdGVkIGxpc3RcblxubGV0IGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gcnVsZV90b19qc29uIHZhcl90b19qc29uIGEgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBWYXIgaSAtPiBgQXNzb2MgWyB2YXJpYWJsZSwgdmFyX3RvX2pzb24gaSBdXG4gIHwgUnVsZSBpIC0+IGBBc3NvYyBbIHJ1bGUsIHJ1bGVfdG9fanNvbiBpIF1cblxubGV0IGluZmx1ZW5jZV9ub2RlX29mX2pzb24ganNvbl90b19ydWxlIGpzb25fdG9fdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSB2YXJpYWJsZSAtPiBWYXIgKGpzb25fdG9fdmFyIGpzb24pXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gcnVsZSAtPiBSdWxlIChqc29uX3RvX3J1bGUganNvbilcbiAgfCB4IC0+XG4gICAgbGV0IGVycm9yX21zZyA9IFwiTm90IGEgY29ycmVjdCBpbmZsdWVuY2Ugbm9kZVwiIGluXG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfdG9fanNvbiBKc29uVXRpbC5vZl9pbnQgSnNvblV0aWwub2ZfaW50XG5cbmxldCBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgIChKc29uVXRpbC50b19pbnRcbiAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInJ1bGUgaWRcIikpXG4gICAgKEpzb25VdGlsLnRvX2ludFxuICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwidmFyIGlkXCIpKVxuXG5sZXQgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfdG9fanNvbiBydWxlX3RvX2pzb24gdmFyX3RvX2pzb25cblxubGV0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX29mX2pzb24ganNvbl90b19ydWxlIGpzb25fdG9fdmFyXG5cbmxldCBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX2xpc3RcbiAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTprZXkgfmxhYjI6bG9jYWxpdHkgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgKGZ1biBsb2MgLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBsb2MpKSlcblxubGV0IHBvc19vZl9ydWxlc19hbmRfdmFyc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdFxuICAgIChKc29uVXRpbC50b19wYWlyIH5sYWIxOmtleSB+bGFiMjpsb2NhbGl0eSByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAoZnVuIHggLT5cbiAgICAgICAgIHNuZFxuICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgIHgpKSlcblxubGV0IHNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlID0gZnVuY3Rpb25cbiAgfCBSdWxlIHJ1bGUgLT4gUnVsZSBydWxlLnJ1bGVfaWRcbiAgfCBWYXIgdmFyIC0+IFZhciB2YXIudmFyX2lkXG5cbmxldCBwb3NpdGlvbl9vZl9yZWZpbmVkX2luZmx1ZW5jZV9ub2RlID0gZnVuY3Rpb25cbiAgfCBSdWxlIHIgLT4gci5ydWxlX3Bvc2l0aW9uXG4gIHwgVmFyIHYgLT4gdi52YXJfcG9zaXRpb25cblxubW9kdWxlIEluZmx1ZW5jZU5vZGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHNob3J0X2luZmx1ZW5jZV9ub2RlXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgIHwgUnVsZSByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJSdWxlICVpXCIgclxuICAgIHwgVmFyIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIlZhciAlaVwiIHJcbmVuZClcblxubW9kdWxlIEluZmx1ZW5jZU5vZGVNYXAgPSBJbmZsdWVuY2VOb2RlU2V0TWFwLk1hcFxuXG4oKiBSZWxhdGlvbnMgKilcblxudHlwZSAnYSBwYWlyID0gJ2EgKiAnYVxudHlwZSBsb2NhdGlvbiA9IERpcmVjdCBvZiBpbnQgfCBTaWRlX2VmZmVjdCBvZiBpbnRcblxubGV0IGR1bXBfbG9jYXRpb24gZm10ID0gZnVuY3Rpb25cbiAgfCBEaXJlY3QgaW50IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVpXCIgaW50XG4gIHwgU2lkZV9lZmZlY3QgaW50IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVpKlwiIGludFxuXG5sZXQgZHVtcF9sb2NhdGlvbl9wYWlyIGZtdCAoYSwgYikgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoJWEsJWEpXCIgZHVtcF9sb2NhdGlvbiBhIGR1bXBfbG9jYXRpb24gYlxuXG5sZXQgZHVtcF9sb2NhdGlvbl9wYWlyX2xpc3QgZm10IGwgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJbJWFdXCJcbiAgICAoUHAubGlzdCAoZnVuIGZtdCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIjtcIikgZHVtcF9sb2NhdGlvbl9wYWlyKVxuICAgIGxcblxubGV0IHN0cmluZ19vZl9sYWJlbF9saXN0IGwgPSBGb3JtYXQuYXNwcmludGYgXCIlYVwiIGR1bXBfbG9jYXRpb25fcGFpcl9saXN0IGxcblxudHlwZSBoYWxmX2luZmx1ZW5jZV9tYXAgPVxuICBsb2NhdGlvbiBwYWlyIGxpc3QgSW5mbHVlbmNlTm9kZU1hcC50IEluZmx1ZW5jZU5vZGVNYXAudFxuXG50eXBlIGluZmx1ZW5jZV9tYXAgPSB7XG4gIG5vZGVzOiByZWZpbmVkX2luZmx1ZW5jZV9ub2RlIGxpc3Q7XG4gIHBvc2l0aXZlOiBoYWxmX2luZmx1ZW5jZV9tYXA7XG4gIG5lZ2F0aXZlOiBoYWxmX2luZmx1ZW5jZV9tYXA7XG59XG5cbigqIExvY2F0aW9uIGxhYmVscyAqKVxubGV0IGxvY2F0aW9uX3RvX2pzb24gYSA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IERpcmVjdCBpIC0+IGBBc3NvYyBbIGRpcmVjdCwgSnNvblV0aWwub2ZfaW50IGkgXVxuICB8IFNpZGVfZWZmZWN0IGkgLT4gYEFzc29jIFsgc2lkZV9lZmZlY3QsIEpzb25VdGlsLm9mX2ludCBpIF1cblxubGV0IGxvY2F0aW9uX29mX2pzb24gPyhlcnJvcl9tc2cgPSBcIk5vdCBhIGNvcnJlY3QgbG9jYXRpb25cIikgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IGRpcmVjdCAtPiBEaXJlY3QgKEpzb25VdGlsLnRvX2ludCBqc29uKVxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IHNpZGVfZWZmZWN0IC0+XG4gICAgU2lkZV9lZmZlY3QgKEpzb25VdGlsLnRvX2ludCBqc29uKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiA9XG4gIEluZmx1ZW5jZU5vZGVNYXAudG9fanNvbiB+bGFiX2tleTpzb3VyY2UgfmxhYl92YWx1ZTp0YXJnZXRfbWFwXG4gICAgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgIChJbmZsdWVuY2VOb2RlTWFwLnRvX2pzb24gfmxhYl9rZXk6dGFyZ2V0IH5sYWJfdmFsdWU6bG9jYXRpb25fcGFpcl9saXN0XG4gICAgICAgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6cmhzIH5sYWIyOmxocyBsb2NhdGlvbl90b19qc29uXG4gICAgICAgICAgICAgbG9jYXRpb25fdG9fanNvbikpKVxuXG5sZXQgaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gPVxuICBJbmZsdWVuY2VOb2RlTWFwLm9mX2pzb25cbiAgICB+ZXJyb3JfbXNnOlxuICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiYWN0aXZhdGlvbiBvciBpbmhpYml0aW9uIG1hcFwiKVxuICAgIH5sYWJfa2V5OnNvdXJjZSB+bGFiX3ZhbHVlOnRhcmdldF9tYXAgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgIChJbmZsdWVuY2VOb2RlTWFwLm9mX2pzb24gfmxhYl9rZXk6dGFyZ2V0IH5sYWJfdmFsdWU6bG9jYXRpb25fcGFpcl9saXN0XG4gICAgICAgfmVycm9yX21zZzpcIm1hcCBvZiBsaXN0cyBvZiBwYWlycyBvZiBsb2NhdGlvbnNcIlxuICAgICAgIHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGlzdCBvZiBwYWlyIG9mIGxvY2F0aW9uc1wiXG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcIlwiIH5sYWIxOnJocyB+bGFiMjpsaHNcbiAgICAgICAgICAgICAobG9jYXRpb25fb2ZfanNvblxuICAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibG9jYXRpb25cIikpXG4gICAgICAgICAgICAgKGxvY2F0aW9uX29mX2pzb25cbiAgICAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImxvY2F0aW9uXCIpKSkpKVxuXG4oKiBJbmZsdWVuY2UgbWFwICopXG5cbmxldCBub2Rlc19saXN0X3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxubGV0IG5vZGVzX2xpc3Rfb2ZfanNvbiA9IEpzb25VdGlsLnRvX2xpc3QgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG5cbmxldCBpbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggaW5mbHVlbmNlbWFwLFxuICAgICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXAgYWNjdXJhY3lfdG9fanNvblxuICAgICAgICAgIChmdW4gaW5mbHVlbmNlX21hcCAtPlxuICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBub2Rlcywgbm9kZXNfbGlzdF90b19qc29uIGluZmx1ZW5jZV9tYXAubm9kZXM7XG4gICAgICAgICAgICAgICAgd2FrZXVwLCBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLnBvc2l0aXZlO1xuICAgICAgICAgICAgICAgIGluaGliaXRpb24sIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAubmVnYXRpdmU7XG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgaW5mbHVlbmNlX21hcCApO1xuICAgIF1cblxubGV0IG5vZGVzX29mX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBub2Rlc19saXN0ID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBub2Rlc29maW5mbHVlbmNlbWFwLFxuICAgICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXAgYWNjdXJhY3lfdG9fanNvblxuICAgICAgICAgIChmdW4gbm9kZXNfbGlzdCAtPiBgQXNzb2MgWyBub2Rlcywgbm9kZXNfbGlzdF90b19qc29uIG5vZGVzX2xpc3QgXSlcbiAgICAgICAgICBub2Rlc19saXN0ICk7XG4gICAgXVxuXG5sZXQgbm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBub2Rlc29maW5mbHVlbmNlbWFwIGwgaW5cbiAgICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6XG4gICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXAxXCIpXG4gICAgICAgICBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDEgLT5cbiAgICAgICAgICAgICAodHJ5IG5vZGVzX2xpc3Rfb2ZfanNvbiAoTGlzdC5hc3NvYyBub2RlcyBsKVxuICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKCBKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICB4ICkpKVxuICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICggSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgICAgICAgICAgICAgeCApKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG5sZXQgbG9jYWxfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAgPVxuICBsZXQgYWNjdXJhY3ksIHRvdGFsLCBid2QsIGZ3ZCwgb3JpZ2luX29wdCwgaW5mbHVlbmNlX21hcCA9IGluZmx1ZW5jZV9tYXAgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBpbmZsdWVuY2VtYXAsXG4gICAgICAgIGBBc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGFjY3VyYWN5X3N0cmluZywgYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeTtcbiAgICAgICAgICAgIHRvdGFsX3N0cmluZywgSnNvblV0aWwub2ZfaW50IHRvdGFsO1xuICAgICAgICAgICAgZndkX3N0cmluZywgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBmd2Q7XG4gICAgICAgICAgICBid2Rfc3RyaW5nLCBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGJ3ZDtcbiAgICAgICAgICAgIG9yaWdpbiwgSnNvblV0aWwub2Zfb3B0aW9uIHJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBvcmlnaW5fb3B0O1xuICAgICAgICAgICAgKCBtYXAsXG4gICAgICAgICAgICAgIChmdW4gaW5mbHVlbmNlX21hcCAtPlxuICAgICAgICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBub2Rlcywgbm9kZXNfbGlzdF90b19qc29uIGluZmx1ZW5jZV9tYXAubm9kZXM7XG4gICAgICAgICAgICAgICAgICAgIHdha2V1cCwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5wb3NpdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgKCBpbmhpYml0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAubmVnYXRpdmUgKTtcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgaW5mbHVlbmNlX21hcCApO1xuICAgICAgICAgIF0gKTtcbiAgICBdXG5cbmxldCBpbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIGluZmx1ZW5jZW1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImluZmx1ZW5jZSBtYXAxXCIpXG4gICAgICAgICBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbm9kZXMgPSBub2Rlc19saXN0X29mX2pzb24gKExpc3QuYXNzb2Mgbm9kZXMgbCk7XG4gICAgICAgICAgICAgICAgICBwb3NpdGl2ZSA9IGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIChMaXN0LmFzc29jIHdha2V1cCBsKTtcbiAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlID1cbiAgICAgICAgICAgICAgICAgICAgaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2MgaW5oaWJpdGlvbiBsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG5sZXQgbG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIG1hdGNoIGpzb24gd2l0aFxuICAgICAgIHwgYEFzc29jIGwnIC0+XG4gICAgICAgICBsZXQgYWNjdXJhY3kgPSBhY2N1cmFjeV9vZl9qc29uIChMaXN0LmFzc29jIGFjY3VyYWN5X3N0cmluZyBsJykgaW5cbiAgICAgICAgIGxldCB0b3RhbCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyB0b3RhbF9zdHJpbmcgbCcpIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnID0gSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJmd2QgcmFkaXVzXCIgaW5cbiAgICAgICAgIGxldCBmd2QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2cpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgZndkX3N0cmluZyBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnID0gSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJid2QgcmFkaXVzXCIgaW5cbiAgICAgICAgIGxldCBid2QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2cpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgYndkX3N0cmluZyBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIHJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgIChMaXN0LmFzc29jIG9yaWdpbiBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgaW5mbHVlbmNlX21hcCA9XG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzID0gbm9kZXNfbGlzdF9vZl9qc29uIChMaXN0LmFzc29jIG5vZGVzIGwpO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGl2ZSA9IGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIChMaXN0LmFzc29jIHdha2V1cCBsKTtcbiAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgPVxuICAgICAgICAgICAgICAgICAgICAgIGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIChMaXN0LmFzc29jIGluaGliaXRpb24gbCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICggSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWwgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHggKSkpXG4gICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAoIEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgICAgICAgICAgICAgICB4ICkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIG1hcCBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBhY2N1cmFjeSwgdG90YWwsIGZ3ZCwgYndkLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIHJhaXNlXG4gICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImluZmx1ZW5jZSBtYXBcIiwgeCkpXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKilcbigqIGRlYWQgcnVsZXMgICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGRlYWRfcnVsZXMgPSBydWxlIGxpc3RcblxubGV0IGRlYWRfcnVsZXNfdG9fanNvbiBqc29uID1cbiAgYEFzc29jIFsgZGVhZF9ydWxlcywgSnNvblV0aWwub2ZfbGlzdCBydWxlX3RvX2pzb24ganNvbiBdXG5cbmxldCBkZWFkX3J1bGVzX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIGFzIHggd2hlbiBzID0gZGVhZF9ydWxlcyAtPlxuICAgICh0cnkgSnNvblV0aWwudG9fbGlzdCBqc29uX3RvX3J1bGUganNvblxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIGRlYWRfcnVsZXMsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gZGVhZF9ydWxlcywgeCkpXG5cbigqKioqKioqKioqKioqKiopXG4oKiBkZWFkIGFnZW50cyAqKVxuKCoqKioqKioqKioqKioqKilcblxudHlwZSBhZ2VudF9raW5kID0ge1xuICBhZ2VudF9pZDogaW50O1xuICBhZ2VudF9hc3Q6IHN0cmluZztcbiAgYWdlbnRfcG9zaXRpb246IExvYy50IGxpc3Q7XG59XG5cbmxldCBqc29uX3RvX2FnZW50X2tpbmQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBhZ2VudF9pZCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBhZ2VudF9pZCBsKTtcbiAgICAgICAgIGFnZW50X2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICBhZ2VudF9wb3NpdGlvbiA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImxvY2FsaXR5IGxpc3RcIilcbiAgICAgICAgICAgICAoZnVuIGpzb24gLT5cbiAgICAgICAgICAgICAgIHNuZFxuICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6XG4gICAgICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgICAgIGpzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIHBvc2l0aW9uX2xpc3QgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiYWdlbnQga2luZFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJhZ2VudCBraW5kXCIsIHgpKVxuXG5sZXQgYWdlbnRfa2luZF90b19qc29uIGFnZW50X2tpbmQgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBhZ2VudF9pZCwgSnNvblV0aWwub2ZfaW50IGFnZW50X2tpbmQuYWdlbnRfaWQ7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyBhZ2VudF9raW5kLmFnZW50X2FzdDtcbiAgICAgICggcG9zaXRpb25fbGlzdCxcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChmdW4gYSAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIGEpKVxuICAgICAgICAgIGFnZW50X2tpbmQuYWdlbnRfcG9zaXRpb24gKTtcbiAgICBdXG5cbnR5cGUgZGVhZF9hZ2VudHMgPSBhZ2VudF9raW5kIGxpc3RcblxubGV0IGpzb25fb2ZfZGVhZF9hZ2VudHMganNvbiA9XG4gIGBBc3NvYyBbIGRlYWRfYWdlbnRzLCBKc29uVXRpbC5vZl9saXN0IGFnZW50X2tpbmRfdG9fanNvbiBqc29uIF1cblxubGV0IGpzb25fdG9fZGVhZF9hZ2VudHMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIGFzIHggd2hlbiBzID0gZGVhZF9hZ2VudHMgLT5cbiAgICAodHJ5IEpzb25VdGlsLnRvX2xpc3QganNvbl90b19hZ2VudF9raW5kIGpzb25cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBkZWFkX2FnZW50cywgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBkZWFkX2FnZW50cywgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gKHJ1bGUgKiAoc3RyaW5nICogc3RyaW5nKSBsaXN0KSBsaXN0XG5cbmxldCBzZXBhcmF0aW5nX3RyYW5zaXRpb25zX3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9saXN0XG4gICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJydWxlXCIgfmxhYjI6XCJwb3RlbnRpYWwtY29udGV4dHNcIiBydWxlX3RvX2pzb25cbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwiczFcIiB+bGFiMjpcInMyXCIgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgICAgICAgICAgSnNvblV0aWwub2Zfc3RyaW5nKSkpXG5cbmxldCBzZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25zIGxpc3RcIlxuICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25cIiB+bGFiMTpcInJ1bGVcIlxuICAgICAgIH5sYWIyOlwicG90ZW50aWFsLWNvbnRleHRzXCIganNvbl90b19ydWxlXG4gICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInNlcGFyYXRpbmcgdHJhbnNpdGlvbnNcIlxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJ0cmFuc2l0aW9uXCIgfmxhYjE6XCJzMVwiIH5sYWIyOlwiczJcIlxuICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSkpKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogQ29uc3RyYWludHMgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmluZGluZ19zdGF0ZSA9XG4gIHwgRnJlZVxuICB8IFdpbGRjYXJkXG4gIHwgQm91bmRfdG9fdW5rbm93blxuICB8IEJvdW5kX3RvIG9mIGludFxuICB8IEJpbmRpbmdfdHlwZSBvZiBzdHJpbmcgKiBzdHJpbmdcblxudHlwZSBhZ2VudCA9XG4gIHN0cmluZ1xuICAqIChzdHJpbmdcbiAgICAqIHN0cmluZyBvcHRpb25cbiAgICAqIGJpbmRpbmdfc3RhdGUgb3B0aW9uXG4gICAgKiAoaW50IG9wdGlvbiAqIGludCBvcHRpb24pIG9wdGlvbilcbiAgICBsaXN0XG5cbnR5cGUgJ3NpdGVfZ3JhcGggbGVtbWEgPSB7IGh5cDogJ3NpdGVfZ3JhcGg7IHJlZmluZW1lbnQ6ICdzaXRlX2dyYXBoIGxpc3QgfVxudHlwZSAnc2l0ZV9ncmFwaCBwb2x5X2NvbnN0cmFpbnRzX2xpc3QgPSAoc3RyaW5nICogJ3NpdGVfZ3JhcGggbGVtbWEgbGlzdCkgbGlzdFxuXG5sZXQgbGVtbWFfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6aHlwIH5sYWIyOnJlZmluZW1lbnQgc2l0ZV9ncmFwaF90b19qc29uXG4gICAgKEpzb25VdGlsLm9mX2xpc3Qgc2l0ZV9ncmFwaF90b19qc29uKVxuICAgIChqc29uLmh5cCwganNvbi5yZWZpbmVtZW50KVxuXG5sZXQgbGVtbWFfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiID1cbiAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmh5cCB+bGFiMjpyZWZpbmVtZW50IH5lcnJvcl9tc2c6XCJsZW1tYVwiXG4gICAgICBzaXRlX2dyYXBoX29mX2pzb25cbiAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJyZWZpbmVtZW50cyBsaXN0XCIgc2l0ZV9ncmFwaF9vZl9qc29uKVxuICAgICAganNvblxuICBpblxuICB7IGh5cCA9IGE7IHJlZmluZW1lbnQgPSBiIH1cblxubGV0IGdldF9oeXAgaCA9IGguaHlwXG5sZXQgZ2V0X3JlZmluZW1lbnQgciA9IHIucmVmaW5lbWVudFxubGV0IGZyZWUgPSBcIlwiXG5sZXQgd2lsZGNhcmQgPSBcIj9cIlxubGV0IGJvdW5kID0gXCIhX1wiXG5sZXQgYm9uZF9pZCA9IFwiYm9uZCBpZFwiXG5sZXQgYm91bmRfdG8gPSBcImJvdW5kIHRvXCJcbmxldCBiaW5kaW5nX3R5cGUgPSBcImJpbmRpbmcgdHlwZVwiXG5sZXQgcHJvcCA9IFwicHJvcGVydHkgc3RhdGVcIlxubGV0IGJpbmQgPSBcImJpbmRpbmcgc3RhdGVcIlxubGV0IGJpbmRpbmdfdHlwZV9iYWNrZW5kX3N5bWJvbCA9IFwiLlwiXG5sZXQgZnJlZV9iYWNrZW5kX3N5bWJvbCA9IFwiLlwiXG5sZXQgbWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zeW1ib2wgPSBcIlwiXG5sZXQgd2lsZGNhcmRfYmFja2VuZF9zeW1ib2wgPSBcIiNcIlxubGV0IGJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ib2wgPSBcIl9cIlxubGV0IGludGVybmFsX3N0YXRlX2ludHJvZHVjdGlvbl9iYWNrZW5kX3N5bWJvbCA9IFwiflwiXG5sZXQgaW50ZXJuYWxfc3RhdGVfZGVsaW1pdGVyX2JhY2tlbmRfc3ltYm9sID0gXCIsXCJcbmxldCBiaW5kaW5nX3N0YXRlX2RlbGltaXRlcl9iYWNrZW5kX3N5bWJvbCA9IFwiLFwiXG5sZXQgYmluZGluZ19zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJbXCJcbmxldCBiaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgPSBcIl1cIlxubGV0IGludGVybmFsX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2wgPSBcIntcIlxubGV0IGludGVybmFsX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgPSBcIn1cIlxubGV0IGNvdW50ZXJfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbCA9IFwie1wiXG5sZXQgY291bnRlcl9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ9XCJcbmxldCBjb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3ltYm9sID0gXCIgLi4gXCJcbmxldCBvcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPSBcIltcIlxubGV0IGNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPSBcIl1cIlxubGV0IG9wZW5faW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9IFwiXVwiXG5sZXQgY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9IFwiW1wiXG5sZXQgcGx1c19pbmZpbml0eV9zeW1ib2wgPSBcIitvb1wiXG5sZXQgbWludXNfaW5maW5pdHlfc3ltYm9sID0gXCItb29cIlxuXG5sZXQgc3RyaW5nX29mX2JpbmRpbmdfdHlwZSA/KGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBcIi5cIikgfmFnZW50X25hbWUgfnNpdGVfbmFtZVxuICAgICgpID1cbiAgRm9ybWF0LnNwcmludGYgXCIlcyVzJXNcIiBzaXRlX25hbWUgYmluZGluZ190eXBlX3N5bWJvbCBhZ2VudF9uYW1lXG5cbmxldCBiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBgTnVsbCkgXSB3aGVuIHMgPSBmcmVlIC0+IEZyZWVcbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gd2lsZGNhcmQgLT4gV2lsZGNhcmRcbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gYm91bmRfdG8gLT4gQm91bmRfdG9fdW5rbm93blxuICB8IGBBc3NvYyBbIChzLCBqKSBdIHdoZW4gcyA9IGJvbmRfaWQgLT5cbiAgICBsZXQgaSA9IEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOlwid3JvbmcgYmluZGluZyBpZFwiIGogaW5cbiAgICBsZXQgYm9uZF9pbmRleCA9IGkgaW5cbiAgICBCb3VuZF90byBib25kX2luZGV4XG4gIHwgYEFzc29jIFsgKHMsIGopIF0gd2hlbiBzID0gYmluZGluZ190eXBlIC0+XG4gICAgbGV0IGFnZW50X25hbWUsIHNpdGVfbmFtZSA9XG4gICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOlwiYWdlbnRcIiB+bGFiMjpcInNpdGVcIiB+ZXJyb3JfbXNnOlwiYmluZGluZyB0eXBlXCJcbiAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzaXRlIG5hbWVcIilcbiAgICAgICAgalxuICAgIGluXG4gICAgQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJ3cm9uZyBiaW5kaW5nIHN0YXRlXCIsIHgpKVxuXG5sZXQgYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBGcmVlIC0+IGBBc3NvYyBbIGZyZWUsIGBOdWxsIF1cbiAgfCBXaWxkY2FyZCAtPiBgQXNzb2MgWyB3aWxkY2FyZCwgYE51bGwgXVxuICB8IEJvdW5kX3RvX3Vua25vd24gLT4gYEFzc29jIFsgYm91bmRfdG8sIGBOdWxsIF1cbiAgfCBCb3VuZF90byBib25kX2luZGV4IC0+IGBBc3NvYyBbIGJvbmRfaWQsIEpzb25VdGlsLm9mX2ludCBib25kX2luZGV4IF1cbiAgfCBCaW5kaW5nX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkgLT5cbiAgICBsZXQgaiA9XG4gICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwiYWdlbnRcIiB+bGFiMjpcInNpdGVcIiBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAgSnNvblV0aWwub2Zfc3RyaW5nIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpXG4gICAgaW5cbiAgICBgQXNzb2MgWyBiaW5kaW5nX3R5cGUsIGogXVxuXG5sZXQgY291bnRlcl9zdGF0ZV9saWdodF9vZl9qc29uID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTppbmYgfmxhYjI6c3VwIH5lcnJvcl9tc2c6XCJ3cm9uZyBjb3VudGVyIHN0YXRlXCJcbiAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpjb3VudGVyKSlcbiAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpjb3VudGVyKSlcblxubGV0IGNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6aW5mIH5sYWIyOnN1cFxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50KVxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50KVxuXG5sZXQgaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24gaW50ZiA9XG4gIEpzb25VdGlsLm9mX21hcCB+bGFiX2tleTpzaXRlIH5sYWJfdmFsdWU6c3RhdGVzbGlzdFxuICAgIH5mb2xkOihmdW4gZiBhIHggLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCAoaywgYSwgYiwgYykgLT4gZiBrIChhLCBiLCBjKSBsaXN0KSB4IGEpXG4gICAgKCpqc29uIC0+IGVsdCopXG4gICAgICAoZnVuIHNpdGUgLT4gSnNvblV0aWwub2Zfc3RyaW5nIHNpdGUpXG4gICAgKCpqc29uIC0+ICd2YWx1ZSopXG4gICAgKEpzb25VdGlsLm9mX3RyaXBsZSB+bGFiMTpwcm9wIH5sYWIyOmJpbmQgfmxhYjM6Y291bnRlclxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uKVxuICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gY291bnRlcl9zdGF0ZV9saWdodF90b19qc29uKSlcbiAgICBpbnRmXG5cbmxldCBpbnRlcmZhY2VfbGlnaHRfb2ZfanNvbiBqc29uID1cbiAgSnNvblV0aWwudG9fbWFwIH5sYWJfa2V5OnNpdGUgfmxhYl92YWx1ZTpzdGF0ZXNsaXN0IH5lcnJvcl9tc2c6aW50ZXJmYWNlXG4gICAgfmVtcHR5OltdXG4gICAgfmFkZDooZnVuIGsgKGEsIGIsIGMpIGxpc3QgLT4gKGssIGEsIGIsIGMpIDo6IGxpc3QpXG4gICAgKCpqc29uIC0+IGVsdCopXG4gICAgICAoZnVuIGpzb24gLT4gSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6c2l0ZSBqc29uKVxuICAgICgqanNvbiAtPiAndmFsdWUqKVxuICAgIChKc29uVXRpbC50b190cmlwbGUgfmxhYjE6cHJvcCB+bGFiMjpiaW5kIH5sYWIzOmNvdW50ZXJcbiAgICAgICB+ZXJyb3JfbXNnOlwid3JvbmcgYmluZGluZyBzdGF0ZVwiXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6cHJvcCkpXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24pXG4gICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBjb3VudGVyX3N0YXRlX2xpZ2h0X29mX2pzb24pKVxuICAgIGpzb25cblxubGV0IGFnZW50X2dlbl9vZl9qc29uIGludGVyZmFjZV9vZl9qc29uID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphZ2VudCB+bGFiMjppbnRlcmZhY2UgfmVycm9yX21zZzpcImFnZW50XCJcbiAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhZ2VudCBuYW1lXCIpXG4gICAgaW50ZXJmYWNlX29mX2pzb25cblxubGV0IHBvbHlfY29uc3RyYWludHNfbGlzdF9vZl9qc29uIHNpdGVfZ3JhcGhfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3RcbiAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwiY29uc3RyYWludHMgbGlzdFwiIH5sYWIxOmRvbWFpbl9uYW1lXG4gICAgICAgfmxhYjI6cmVmaW5lbWVudHNfbGlzdFxuICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFic3RyYWN0IGRvbWFpblwiKVxuICAgICAgIChKc29uVXRpbC50b19saXN0IChsZW1tYV9vZl9qc29uIHNpdGVfZ3JhcGhfb2ZfanNvbikpKVxuXG5sZXQgbGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4gaW50ZXJmYWNlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHJlZmluZW1lbnRfbGVtbWFzIGwgaW5cbiAgICAgICBwb2x5X2NvbnN0cmFpbnRzX2xpc3Rfb2ZfanNvblxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInNpdGUgZ3JhcGhcIlxuICAgICAgICAgICAgKGFnZW50X2dlbl9vZl9qc29uIGludGVyZmFjZV9vZl9qc29uKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJyZWZpbmVtZW50IGxlbW1hcyBsaXN0XCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJyZWZpbmVtZW50IGxlbW1hcyBsaXN0XCIsIHgpKVxuXG5sZXQgbGVtbWFzX2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgbGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4gaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24ganNvblxuXG5sZXQgYWdlbnRfZ2VuX3RvX2pzb24gaW50ZXJmYWNlX3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFnZW50IH5sYWIyOmludGVyZmFjZSBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICBpbnRlcmZhY2VfdG9fanNvblxuXG5sZXQgcG9seV9jb25zdHJhaW50c19saXN0X3RvX2pzb24gc2l0ZV9ncmFwaF90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmRvbWFpbl9uYW1lIH5sYWIyOnJlZmluZW1lbnRzX2xpc3RcbiAgICAgICBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdCAobGVtbWFfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24pKSlcbiAgICBjb25zdHJhaW50c1xuXG5sZXQgbGVtbWFzX2xpc3RfdG9fanNvbl9nZW4gaW50ZXJmYWNlX3RvX2pzb24gY29uc3RyYWludHMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIHJlZmluZW1lbnRfbGVtbWFzLFxuICAgICAgICBwb2x5X2NvbnN0cmFpbnRzX2xpc3RfdG9fanNvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IChhZ2VudF9nZW5fdG9fanNvbiBpbnRlcmZhY2VfdG9fanNvbikpXG4gICAgICAgICAgY29uc3RyYWludHMgKTtcbiAgICBdXG5cbmxldCBsZW1tYXNfbGlzdF90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgbGVtbWFzX2xpc3RfdG9fanNvbl9nZW4gaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24gY29uc3RyYWludHNcbiIsIigqKlxuICAqIGxvZ2dlcnMubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjYvMDEvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIGVuY29kaW5nID1cbiAgfCBNYXRyaXhcbiAgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGhcbiAgfCBIVE1MXG4gIHwgSFRNTF9UYWJ1bGFyXG4gIHwgRE9UXG4gIHwgVFhUXG4gIHwgVFhUX1RhYnVsYXJcbiAgfCBYTFNcbiAgfCBPY3RhdmVcbiAgfCBNYXRsYWJcbiAgfCBNYXBsZVxuICB8IE1hdGhlbWF0aWNhXG4gIHwgU0JNTFxuICB8IERPVE5FVFxuICB8IEpzb25cbiAgfCBHRVBISVxuXG5tb2R1bGUgdHlwZSBGb3JtYXRNYXAgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGFkZCA6IGVuY29kaW5nIC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZmluZCA6IGVuY29kaW5nIC0+ICdhIHQgLT4gJ2FcbiAgdmFsIGVtcHR5IDogJ2EgdFxuZW5kXG5cbm1vZHVsZSBGb3JtYXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGVuY29kaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmQpXG5cbnR5cGUgdG9rZW4gPSBTdHJpbmcgb2Ygc3RyaW5nIHwgQnJlYWthYmxlX3NwYWNlIHwgQnJlYWthYmxlX2hpbnRcblxudHlwZSBsb2dnZXIgPVxuICB8IERFVk5VTFxuICB8IEZvcm1hdHRlciBvZiBGb3JtYXQuZm9ybWF0dGVyXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIG9mIHN0cmluZyBDaXJjdWxhcl9idWZmZXJzLnQgcmVmXG4gIHwgSW5maW5pdGVfYnVmZmVyIG9mIHN0cmluZyBJbmZpbml0ZV9idWZmZXJzLnQgcmVmXG5cbmxldCBicmVha2FibGUgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEhUTUxfVGFidWxhciB8IEhUTUwgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBUWFQgLT4gdHJ1ZVxuICB8IE1hdHJpeCB8IEpzb24gfCBNYXRoZW1hdGljYSB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVCB8IERPVFxuICB8IEdFUEhJIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICBmYWxzZVxuXG50eXBlIHQgPSB7XG4gIGVuY29kaW5nOiBlbmNvZGluZztcbiAgbG9nZ2VyOiBsb2dnZXI7XG4gIGNoYW5uZWxfb3B0OiBvdXRfY2hhbm5lbCBvcHRpb247XG4gIG11dGFibGUgY3VycmVudF9saW5lOiB0b2tlbiBsaXN0O1xufVxuXG5sZXQgZ2V0X2VuY29kaW5nX2Zvcm1hdCB0ID0gdC5lbmNvZGluZ1xuXG5sZXQgZHVtbXlfaHRtbF9sb2dnZXIgPVxuICB7XG4gICAgKCogIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHkgOyopXG4gICAgZW5jb2RpbmcgPSBIVE1MO1xuICAgIGxvZ2dlciA9IERFVk5VTDtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogZnJlc2hfaWQgPSByZWYgMTtcbiAgICAgICBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbmxldCBkdW1teV90eHRfbG9nZ2VyID1cbiAge1xuICAgICgqICBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5IDsqKVxuICAgIGVuY29kaW5nID0gVFhUO1xuICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICBsb2dnZXIgPSBERVZOVUw7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogZnJlc2hfaWQgPSByZWYgMTtcbiAgICAgICBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbigqIFdhcm5pbmcsIHdlIGhhdmUgdG8ga2VlcCB0aGUgY2hhcmFjdGVyIEAgd2hlbiBpdCBpcyBmb2xsb3dlZCBieSBhIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhIGxldHRlciBvciBhIGRpZ2l0IHNob3VsZCBiZSBwcmVzZXJ2ZWQgKilcblxubGV0IGR1bXBfY2xlYW5fc3RyaW5nIGZtdCA9XG4gIFN0cmluZy5pdGVyIChmdW4gYSAtPlxuICAgICAgaWYgYSA9ICdcXG4nIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWNcIiBhKVxuXG5sZXQgY2xlYW5fc3RyaW5nIHMgPVxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gIGxldCBmbXRfYnVmZmVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmZmVyIGluXG4gIGxldCAoKSA9IGR1bXBfY2xlYW5fc3RyaW5nIGZtdF9idWZmZXIgcyBpblxuICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICBCdWZmZXIuY29udGVudHMgYnVmZmVyXG5cbmxldCBjbGVhbiBmbXQgPVxuICBsZXQgcyA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIHMgaW5cbiAgRm9ybWF0LmtmcHJpbnRmXG4gICAgKGZ1biBfIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICAgICAgZHVtcF9jbGVhbl9zdHJpbmcgZm10IChCdWZmZXIuY29udGVudHMgcykpXG4gICAgZm10X2J1ZmZlclxuXG5sZXQgZnByaW50ZiA/KGZwcmludG5ld2xpbmUgPSBmYWxzZSkgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciwgZnByaW50bmV3bGluZSB8fCBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBERVZOVUwsIF8gLT4gRm9ybWF0LmlmcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gIHwgRm9ybWF0dGVyIGZtdCwgdHJ1ZSAtPiBGb3JtYXQuZnByaW50ZiBmbXRcbiAgfCBGb3JtYXR0ZXIgZm10LCBmYWxzZSAtPiBjbGVhbiBmbXRcbiAgfCBDaXJjdWxhcl9idWZmZXIgXywgYm9vbCB8IEluZmluaXRlX2J1ZmZlciBfLCBib29sIC0+XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgICBGb3JtYXQua2ZwcmludGZcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICAgICAgICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICAgICAgbG9nZ2VyLmN1cnJlbnRfbGluZSA8LVxuICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgKGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgY2xlYW5fc3RyaW5nIHN0cilcbiAgICAgICAgICA6OiBsb2dnZXIuY3VycmVudF9saW5lKVxuICAgICAgZm10X2J1ZmZlclxuXG5sZXQgcHJpbnRfYnJlYWthYmxlX3NwYWNlIGxvZ2dlciA9XG4gIGlmIGJyZWFrYWJsZSBsb2dnZXIuZW5jb2RpbmcgdGhlbiAoXG4gICAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gICAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBmcHJpbnRmIGxvZ2dlciBcIkAgXCJcbiAgICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT5cbiAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gQnJlYWthYmxlX3NwYWNlIDo6IGxvZ2dlci5jdXJyZW50X2xpbmVcbiAgKSBlbHNlXG4gICAgZnByaW50ZiBsb2dnZXIgXCIgXCJcblxubGV0IHByaW50X2JyZWFrYWJsZV9oaW50IGxvZ2dlciA9XG4gIGlmIGJyZWFrYWJsZSBsb2dnZXIuZW5jb2RpbmcgdGhlbiAoXG4gICAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gICAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBmcHJpbnRmIGxvZ2dlciBcIkAsXCJcbiAgICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT5cbiAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gQnJlYWthYmxlX2hpbnQgOjogbG9nZ2VyLmN1cnJlbnRfbGluZVxuICApIGVsc2VcbiAgICBmcHJpbnRmIGxvZ2dlciBcIlwiXG5cbmxldCBlbmRfb2ZfbGluZV9zeW1ib2wgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIC0+IFwiPEJyPlwiXG4gIHwgTWF0cml4IHwgTWF0bGFiIHwgTWF0aGVtYXRpY2EgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVQgfCBKc29uXG4gIHwgR0VQSEkgfCBIVE1MX1RhYnVsYXIgfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgIFwiXCJcblxubGV0IGR1bXBfdG9rZW4gZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHNcbiAgfCBCcmVha2FibGVfc3BhY2UgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAgXCJcbiAgfCBCcmVha2FibGVfaGludCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQCxcIlxuXG5sZXQgcHJpbnRfbmV3bGluZSBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIGZwcmludGYgfmZwcmludG5ld2xpbmU6dHJ1ZSBsb2dnZXIgXCIlcyV0XCIgKGVuZF9vZl9saW5lX3N5bWJvbCBsb2dnZXIpXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgZiAoKSlcbiAgaW5cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgYmYgLT5cbiAgICBsZXQgYmYnID1cbiAgICAgIENpcmN1bGFyX2J1ZmZlcnMuYWRkXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgIChQcC5saXN0IChmdW4gXyAtPiAoKSkgZHVtcF90b2tlbilcbiAgICAgICAgICAgKExpc3QucmV2IGxvZ2dlci5jdXJyZW50X2xpbmUpKVxuICAgICAgICAhYmZcbiAgICBpblxuICAgIGxldCAoKSA9IGJmIDo9IGJmJyBpblxuICAgIGxldCAoKSA9IGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gW10gaW5cbiAgICAoKVxuICB8IEluZmluaXRlX2J1ZmZlciBiZiAtPlxuICAgIGxldCBiZicgPVxuICAgICAgSW5maW5pdGVfYnVmZmVycy5hZGRcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgKFBwLmxpc3QgKGZ1biBfIC0+ICgpKSBkdW1wX3Rva2VuKVxuICAgICAgICAgICAoTGlzdC5yZXYgbG9nZ2VyLmN1cnJlbnRfbGluZSkpXG4gICAgICAgICFiZlxuICAgIGluXG4gICAgbGV0ICgpID0gYmYgOj0gYmYnIGluXG4gICAgbGV0ICgpID0gbG9nZ2VyLmN1cnJlbnRfbGluZSA8LSBbXSBpblxuICAgICgpXG5cbmxldCBwcmludF9jZWxsIGxvZ2dlciBzID1cbiAgbGV0IG9wZW5fY2VsbF9zeW1ib2wsIGNsb3NlX2NlbGxfc3ltYm9sID1cbiAgICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICAgIHwgSFRNTF9UYWJ1bGFyIC0+IFwiPFREPlwiLCBcIjwvVEQ+XCJcbiAgICB8IFRYVF9UYWJ1bGFyIC0+IFwiXCIsIFwiXFx0XCJcbiAgICB8IE1hdHJpeCB8IEdFUEhJIHwgSnNvbiB8IE1hdGhlbWF0aWNhIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MXG4gICAgfCBET1RORVQgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBIVE1MIHwgRE9UIHwgVFhUIHwgWExTIC0+XG4gICAgICBcIlwiLCBcIlwiXG4gIGluXG4gIGZwcmludGYgbG9nZ2VyIFwiJXMlcyVzXCIgb3Blbl9jZWxsX3N5bWJvbCBzIGNsb3NlX2NlbGxfc3ltYm9sXG5cbmxldCBmbHVzaF9sb2dnZXIgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIC0+ICgpXG4gIHwgRm9ybWF0dGVyIGZtdCAtPiBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPiAoKVxuXG5sZXQgY2xvc2VfbG9nZ2VyIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgICB8IEhUTUwgLT4gZnByaW50ZiBsb2dnZXIgXCI8L2Rpdj5cXG48L2JvZHk+XFxuXCJcbiAgICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjwvVEFCTEU+XFxuPC9kaXY+XFxuPC9ib2R5PlwiXG4gICAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJ9XFxuXCJcbiAgICB8IEdFUEhJIHwgSnNvbiB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUXG4gICAgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgICAgKClcbiAgaW5cbiAgbGV0ICgpID0gZmx1c2hfbG9nZ2VyIGxvZ2dlciBpblxuICAoKVxuXG5sZXQgcHJpbnRfcHJlYW1ibGUgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MIC0+IGZwcmludGYgbG9nZ2VyIFwiPGJvZHk+XFxuPGRpdj5cXG5cIlxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjxib2R5PlxcbjxkaXY+XFxuPFRBQkxFPlxcblwiXG4gIHwgTWF0cml4IC0+XG4gICAgbGV0ICgpID0gZnByaW50ZiBsb2dnZXIgXCJ7XCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwiXFxcImJpb0JlZ2luVGltZVxcXCIgOiAwLjAwMDAwMGUrMDAsXCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwiXFxcImJpb0VuZFRpbWVcXFwiIDogMC4wMDAwMDBlKzAwLFwiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAoKVxuICB8IEdFUEhJIHwgSnNvbiB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUXG4gIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICAoKVxuXG5sZXQgb3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsID8obW9kZSA9IFRYVCkgY2hhbm5lbCA9XG4gIGxldCBmb3JtYXR0ZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW5uZWwgaW5cbiAgbGV0IGxvZ2dlciA9XG4gICAge1xuICAgICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICAgIGxvZ2dlciA9IEZvcm1hdHRlciBmb3JtYXR0ZXI7XG4gICAgICBjaGFubmVsX29wdCA9IFNvbWUgY2hhbm5lbDtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciA/KG1vZGUgPSBUWFQpIGZvcm1hdHRlciA9XG4gIGxldCBsb2dnZXIgPVxuICAgIHtcbiAgICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgICBsb2dnZXIgPSBGb3JtYXR0ZXIgZm9ybWF0dGVyO1xuICAgICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fY2lyY3VsYXJfYnVmZmVyID8obW9kZSA9IFRYVCkgPyhzaXplID0gMTApICgpID1cbiAge1xuICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgIGxvZ2dlciA9IENpcmN1bGFyX2J1ZmZlciAocmVmIChDaXJjdWxhcl9idWZmZXJzLmNyZWF0ZSBzaXplIFwiXCIpKTtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gIH1cblxubGV0IG9wZW5faW5maW5pdGVfYnVmZmVyID8obW9kZSA9IFRYVCkgKCkgPVxuICBsZXQgbG9nZ2VyID1cbiAgICB7XG4gICAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgICAgbG9nZ2VyID0gSW5maW5pdGVfYnVmZmVyIChyZWYgKEluZmluaXRlX2J1ZmZlcnMuY3JlYXRlIDAgXCJcIikpO1xuICAgICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fcm93IGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPHRyPlwiXG4gIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwiW1wiXG4gIHwgSnNvbiB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hdGhlbWF0aWNhIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoIHwgWExTIHwgSFRNTCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgY2xvc2Vfcm93IGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPHRyPkAuXCJcbiAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJdXFxuXCJcbiAgfCBKc29uIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBNYXRoZW1hdGljYSB8IFNCTUwgfCBET1RORVQgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGggfCBYTFMgfCBIVE1MIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBHRVBISSAtPlxuICAgIGZwcmludGYgbG9nZ2VyIFwiQC5cIlxuXG5sZXQgZm9ybWF0dGVyX29mX2xvZ2dlciBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBGb3JtYXR0ZXIgZm10IC0+IFNvbWUgZm10XG4gIHwgREVWTlVMIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPiBOb25lXG5cbmxldCByZWRpcmVjdCBsb2dnZXIgZm10ID0geyBsb2dnZXIgd2l0aCBsb2dnZXIgPSBGb3JtYXR0ZXIgZm10IH1cbmxldCBwcmludF9hc19sb2dnZXIgbG9nZ2VyIGYgPSBmcHJpbnRmIGxvZ2dlciBcIiV0XCIgZlxuXG5sZXQgZmx1c2hfYnVmZmVyIGxvZ2dlciBmbXQgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBhIC0+IENpcmN1bGFyX2J1ZmZlcnMuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikgIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBJbmZpbml0ZV9idWZmZXJzLml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpICFiXG5cbmxldCBmbHVzaF9hbmRfY2xlYW4gbG9nZ2VyIGZtdCA9XG4gIGxldCAoKSA9IGZsdXNoX2J1ZmZlciBsb2dnZXIgZm10IGluXG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGEgLT4gYSA6PSBDaXJjdWxhcl9idWZmZXJzLmNsZWFuICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gYiA6PSBJbmZpbml0ZV9idWZmZXJzLmNsZWFuICFiXG5cbmxldCBmcHJpbnRmIGxvZ2dlciA9IGZwcmludGYgfmZwcmludG5ld2xpbmU6ZmFsc2UgbG9nZ2VyXG5sZXQgY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyID0gbG9nZ2VyLmNoYW5uZWxfb3B0XG5cbmxldCBwcmludF9iaW5kaW5nX3R5cGUgdCA/KGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBcIi5cIikgfmFnZW50X25hbWUgfnNpdGVfbmFtZSAoKVxuICAgID1cbiAgZnByaW50ZiB0IFwiJXNcIlxuICAgIChQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfYmluZGluZ190eXBlIH5iaW5kaW5nX3R5cGVfc3ltYm9sIH5hZ2VudF9uYW1lXG4gICAgICAgfnNpdGVfbmFtZSAoKSlcblxubGV0IGR1bXBfanNvbiBsb2dnZXIganNvbiA9XG4gIGxldCBjaGFubmVsX29wdCA9IGNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNoYW5uZWxfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2hhbm5lbCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgY2hhbm5lbCBqc29uIGluXG4gICAgICAoKVxuICBpblxuICAoKVxuXG5sZXQgbGluZV90b19qc29uIGxpbmUgPSBgQXNzb2MgWyBcImxpbmVcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGxpbmUgXVxuXG5sZXQgbGluZV9vZl9qc29uIGpzb24gPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBTdHJpbmcgcykgXSAtPiBzXG4gIHwgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibGluZVwiLCBqc29uKSlcblxubGV0IGdlbl9pdGVyIGl0ZXIgbGlzdCA9XG4gIGxldCBvdXRwdXQgPSByZWYgW10gaW5cbiAgbGV0ICgpID0gaXRlciAoZnVuIGxpbmUgLT4gb3V0cHV0IDo9IGxpbmUgOjogIW91dHB1dCkgbGlzdCBpblxuICBKc29uVXRpbC5vZl9saXN0IGxpbmVfdG9fanNvbiAoTGlzdC5yZXYgIW91dHB1dClcblxubGV0IG9mX2pzb24gPSBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaW5lIGxpc3RcIiBsaW5lX29mX2pzb25cblxubGV0IHRvX2pzb24gbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gYExpc3QgW11cbiAgfCBDaXJjdWxhcl9idWZmZXIgYSAtPiBnZW5faXRlciBDaXJjdWxhcl9idWZmZXJzLml0ZXIgIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBnZW5faXRlciBJbmZpbml0ZV9idWZmZXJzLml0ZXIgIWJcbiIsImxldCBzdHJpbmdfb2ZfdW5fb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbnVzLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCItXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkxPRyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGxvZy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwibG9nXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNRUlQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxyb290Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJzcXJ0XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkVYUCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGV4cC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiZXhwXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNJTlVTIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8c2luLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJzaW5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuQ09TSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGNvcy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiY29zXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlRBTiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHRhbi8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwidGFuXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLklOVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGZsb29yLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJmbG9vclwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl9jb21wYXJlX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5FUVVBTCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGVxLz5cIlxuICAgIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiAtPiBcIj09XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT4gXCI9XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkRJRkYgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxuZXEvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIiE9XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNNQUxMRVIgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxsdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiPFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5HUkVBVEVSIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8Z3QvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIj5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfYmluX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5NT0RVTE8gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxyZW0vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1vZFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NQVggLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtYXgvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1heFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NSU4gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW4vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1pblwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxkaXZpZGUvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIi9cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cGx1cy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiK1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbnVzLz5cIlxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCItXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjx0aW1lcy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiKlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5QT1cgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxwb3dlci8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiKipcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfYmluX2Jvb2xfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLkFORCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGFuZC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiJlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5PUiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG9yLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCJ8XCJcbiAgICB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX3VuX2Jvb2xfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLk5PVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG5vdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiIVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiIsIigqKlxuICAqIGdyYXBoX2xvZ2dlcnNfc2lnLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBkaXJlY3Rpb24gPSBEaXJlY3QgfCBSZXZlcnNlIHwgVW5kaXJlY3RlZCB8IEJvdGhcbnR5cGUgc2hhcGUgPSBJbnZpc2libGUgfCBIb3VzZSB8IFJlY3QgfCBFbGxpcHNlIHwgQ2lyY2xlIHwgSW52aG91c2VcbnR5cGUgaGVhZGtpbmQgPSBOb3JtYWwgfCBWZWUgfCBUZWUgfCBOb19oZWFkXG50eXBlIGxpbmVzdHlsZSA9IFBsYWluIHwgRG90dGVkIHwgRGFzaGVkXG5cbnR5cGUgY29sb3IgPVxuICB8IFJlZFxuICB8IEdyZWVuXG4gIHwgV2hpdGVcbiAgfCBCbHVlXG4gIHwgQmxhY2tcbiAgfCBMaWdodFNreUJsdWVcbiAgfCBQYWxlR3JlZW5cbiAgfCBCcm93blxuICB8IFllbGxvd1xuICB8IEdyZXlcblxudHlwZSBvcHRpb25zID1cbiAgfCBDb2xvciBvZiBjb2xvclxuICB8IEZpbGxDb2xvciBvZiBjb2xvclxuICB8IExhYmVsIG9mIHN0cmluZ1xuICB8IFdpZHRoIG9mIGludCAoKnBpeGVsKilcbiAgfCBIZWlnaHQgb2YgaW50ICgqcGl4ZWwqKVxuICB8IERpcmVjdGlvbiBvZiBkaXJlY3Rpb25cbiAgfCBTaGFwZSBvZiBzaGFwZVxuICB8IEFycm93SGVhZCBvZiBoZWFka2luZFxuICB8IEFycm93VGFpbCBvZiBoZWFka2luZFxuICB8IExpbmVTdHlsZSBvZiBsaW5lc3R5bGVcbiAgfCBPbkNsaWNrIG9mIFlvanNvbi5CYXNpYy50XG4gIHwgQ29udGV4dHVhbF9oZWxwIG9mIHN0cmluZ1xuICB8IFBvc2l0aW9uIG9mIExvYy50IGxpc3RcblxudHlwZSBncmFwaCA9XG4gIChzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgKiAoc3RyaW5nICogc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0XG5cbnR5cGUgdCA9IHtcbiAgbG9nZ2VyOiBMb2dnZXJzLnQ7XG4gIGlkX21hcDogaW50IE1vZHMuU3RyaW5nTWFwLnQgcmVmO1xuICBmcmVzaF9pZDogaW50IHJlZjtcbiAgbm9kZXM6IChzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgcmVmO1xuICBlZGdlczogKHN0cmluZyAqIHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdCByZWY7XG4gIGVkZ2VzX21hcDogb3B0aW9ucyBsaXN0IGxpc3QgTW9kcy5TdHJpbmcyTWFwLnQgcmVmO1xufVxuXG5sZXQgbGlmdCB0ID0gdC5sb2dnZXJcblxubGV0IGV4dGVuZF9sb2dnZXIgbG9nZ2VyID1cbiAge1xuICAgIGxvZ2dlcjtcbiAgICBpZF9tYXAgPSByZWYgTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZnJlc2hfaWQgPSByZWYgMTtcbiAgICBub2RlcyA9IHJlZiBbXTtcbiAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5O1xuICB9XG5cbmxldCByZWZyZXNoX2lkIHQgPVxuICBsZXQgKCkgPSB0LmlkX21hcCA6PSBNb2RzLlN0cmluZ01hcC5lbXB0eSBpblxuICBsZXQgKCkgPSB0Lm5vZGVzIDo9IFtdIGluXG4gIGxldCAoKSA9IHQuZWRnZXMgOj0gW10gaW5cbiAgbGV0ICgpID0gdC5mcmVzaF9pZCA6PSAxIGluXG4gICgpXG5cbmxldCBhZGRfbm9kZSB0IHMgZCA9IHQubm9kZXMgOj0gKHMsIGQpIDo6ICEodC5ub2RlcylcblxubGV0IGFkZF9lZGdlIHQgczEgczIgZCA9XG4gIGxldCAoKSA9IHQuZWRnZXMgOj0gKHMxLCBzMiwgZCkgOjogISh0LmVkZ2VzKSBpblxuICBsZXQgbWFwID0gISh0LmVkZ2VzX21hcCkgaW5cbiAgbGV0IG9sZF9saXN0ID1cbiAgICBtYXRjaCBNb2RzLlN0cmluZzJNYXAuZmluZF9vcHRpb24gKHMxLCBzMikgbWFwIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IFtdXG4gIGluXG4gIGxldCAoKSA9IHQuZWRnZXNfbWFwIDo9IE1vZHMuU3RyaW5nMk1hcC5hZGQgKHMxLCBzMikgKGQgOjogb2xkX2xpc3QpIG1hcCBpblxuICAoKVxuXG5sZXQgZ3JhcGhfb2ZfbG9nZ2VyIGxvZ2dlciA9IExpc3QucmV2ICEobG9nZ2VyLm5vZGVzKSwgTGlzdC5yZXYgIShsb2dnZXIuZWRnZXMpXG5sZXQgZ2V0X2VkZ2VfbWFwIHQgPSAhKHQuZWRnZXNfbWFwKVxubGV0IGdldF9ub2RlcyB0ID0gISh0Lm5vZGVzKVxubGV0IGZyZXNoX2lkIGxvZ2dlciA9IFRvb2xzLmdldF9yZWYgbG9nZ2VyLmZyZXNoX2lkXG5cbmxldCBpbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBzdHJpbmcgPVxuICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzdHJpbmcgIShsb2dnZXIuaWRfbWFwKSB3aXRoXG4gIHwgU29tZSBhIC0+IGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IGkgPSBmcmVzaF9pZCBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBsb2dnZXIuaWRfbWFwIDo9IE1vZHMuU3RyaW5nTWFwLmFkZCBzdHJpbmcgaSAhKGxvZ2dlci5pZF9tYXApIGluXG4gICAgaVxuIiwiKCoqXG4gICogZ3JhcGhfbG9nZ2Vycy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkb3RfY29sb3JfZW5jb2RpbmcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBcInllbGxvd1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBcImdyZXlcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBcInJlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gXCJncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBcImJsdWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrIC0+IFwiYmxhY2tcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBcIiM4N2NlZWJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBcIiM5OGZiOThcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IFwiYnJvd25cIlxuXG5sZXQgc3ZnX2NvbG9yX2VuY29kaW5nIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gXCIjZmYzXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5IC0+IFwiI2FhYVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IFwiI2YwMFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gXCIjMGYwXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaGl0ZSAtPiBcIiNmZmZcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gXCIjMDBmXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBcIiMwMDBcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBcIiM4Y2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBcIiM5ZjlcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IFwiI2ZjOVwiXG5cbnR5cGUgbm9kZV9hdHRyaWJ1dGUgPSB7XG4gIG5vZGVfY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgbm9kZV9maWxsY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgbm9kZV9sYWJlbDogc3RyaW5nIG9wdGlvbjtcbiAgbm9kZV93aWR0aDogaW50IG9wdGlvbjtcbiAgbm9kZV9oZWlnaHQ6IGludCBvcHRpb247XG4gIG5vZGVfc2hhcGU6IEdyYXBoX2xvZ2dlcnNfc2lnLnNoYXBlIG9wdGlvbjtcbiAgbm9kZV9wb3NpdGlvbnM6IExvYy50IGxpc3Q7XG4gIG5vZGVfY29udGV4dHVhbF9oZWxwOiBzdHJpbmcgb3B0aW9uO1xuICBub2RlX29uX2NsaWNrOiBZb2pzb24uQmFzaWMudCBvcHRpb247XG59XG5cbnR5cGUgZWRnZV9hdHRyaWJ1dGUgPSB7XG4gIGVkZ2VfY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgZWRnZV9sYWJlbDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xuICBlZGdlX3N0eWxlOiBHcmFwaF9sb2dnZXJzX3NpZy5saW5lc3R5bGU7XG4gIGVkZ2VfZGlyZWN0aW9uOiBHcmFwaF9sb2dnZXJzX3NpZy5kaXJlY3Rpb247XG4gIGVkZ2VfYXJyb3doZWFkOiBHcmFwaF9sb2dnZXJzX3NpZy5oZWFka2luZDtcbiAgZWRnZV9hcnJvd3RhaWw6IEdyYXBoX2xvZ2dlcnNfc2lnLmhlYWRraW5kO1xuICBlZGdlX3Bvc2l0aW9uczogTG9jLnQgbGlzdDtcbiAgZWRnZV9jb250ZXh0dWFsX2hlbHA6IHN0cmluZyBvcHRpb247XG4gIGVkZ2Vfb25fY2xpY2s6IFlvanNvbi5CYXNpYy50IG9wdGlvbjtcbn1cblxubGV0IGR1bW15X25vZGUgPVxuICB7XG4gICAgbm9kZV9jb2xvciA9IE5vbmU7XG4gICAgbm9kZV9maWxsY29sb3IgPSBOb25lO1xuICAgIG5vZGVfbGFiZWwgPSBOb25lO1xuICAgIG5vZGVfd2lkdGggPSBOb25lO1xuICAgIG5vZGVfaGVpZ2h0ID0gTm9uZTtcbiAgICBub2RlX3NoYXBlID0gTm9uZTtcbiAgICBub2RlX3Bvc2l0aW9ucyA9IFtdO1xuICAgIG5vZGVfb25fY2xpY2sgPSBOb25lO1xuICAgIG5vZGVfY29udGV4dHVhbF9oZWxwID0gTm9uZTtcbiAgfVxuXG5sZXQgZHVtbXlfZWRnZSA9XG4gIHtcbiAgICBlZGdlX2NvbG9yID0gTm9uZTtcbiAgICBlZGdlX2xhYmVsID0gTm9uZTtcbiAgICBlZGdlX3N0eWxlID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW47XG4gICAgZWRnZV9kaXJlY3Rpb24gPSBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Q7XG4gICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgZWRnZV9wb3NpdGlvbnMgPSBbXTtcbiAgICBlZGdlX29uX2NsaWNrID0gTm9uZTtcbiAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9IE5vbmU7XG4gIH1cblxubGV0IGlzX25vX25vZGVfYXR0cmlidXRlcyBub2RlX2F0dHJpYnV0ZSA9IG5vZGVfYXR0cmlidXRlID0gZHVtbXlfbm9kZVxuXG5sZXQgaXNfbm9fZWRnZV9hdHRyaWJ1dGVzIGVkZ2VfYXR0cmlidXRlID1cbiAgZHVtbXlfZWRnZVxuICA9IHtcbiAgICAgIGVkZ2VfYXR0cmlidXRlIHdpdGhcbiAgICAgIGVkZ2VfZGlyZWN0aW9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0O1xuICAgICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgICBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbDtcbiAgICB9XG5cbmxldCBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgXCJcbiAgZWxzZVxuICAgICgpXG5cbmxldCBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLCBcIlxuICBlbHNlXG4gICAgKClcblxubGV0IGh0bWxfZGVwcyA9XG4gIFtcbiAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52My5taW4uanNcIjtcbiAgICBcImh0dHA6Ly9jcGV0dGl0dC5naXRodWIuaW8vcHJvamVjdC9kYWdyZS1kMy9sYXRlc3QvZGFncmUtZDMubWluLmpzXCI7XG4gIF1cblxubGV0IHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0ID1cbiAgbGV0IGIxID1cbiAgICBtYXRjaCBmaWx0ZXJfaW4gd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gZm9ybWF0IGxcbiAgaW5cbiAgYjEgJiYgbm90IChMaXN0Lm1lbSBmb3JtYXQgZmlsdGVyX291dClcblxubGV0IHByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIGYgdGl0bGUgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8aDE+QFslc0BdPC9oMT5ALFwiIHRpdGxlIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3ZnIHdpZHRoPTk2MCBoZWlnaHQ9NjAwPjxnLz48L3N2Zz5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c2NyaXB0PkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIENyZWF0ZSBhIG5ldyBkaXJlY3RlZCBncmFwaEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGcgPSBuZXcgZGFncmVEMy5ncmFwaGxpYi5HcmFwaCgpLnNldEdyYXBoKHt9KTtALFwiXG4gIGluXG5cbiAgKClcblxubGV0IHByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciA/KGZpbHRlcl9pbiA9IE5vbmUpID8oZmlsdGVyX291dCA9IFtdKVxuICAgID8oaGVhZGVyID0gW10pIHRpdGxlID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gIGlmIHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0IHRoZW4gKFxuICAgIG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLkRPVCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiMlc1wiIHggaW5cbiAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBoZWFkZXJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImRpZ3JhcGggR3tcIiBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgICAoKiBJTiBQUk9HRVNTICopXG4gICAgICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKG1hdGNoIGZfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGYgLT4gcHJpbnRfcHJlYW1ibGVfc2hhcmVkX2h0bWxfanMgZiB0aXRsZSlcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgIChtYXRjaCBmX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiPCEtLUAsXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgeCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIGhlYWRlclxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIi0tPkAsXCIgaW5cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgZiB0ID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHNjcmlwdCBzcmM9XFxcIiVzXFxcIiBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+PC9zY3JpcHQ+XCIgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj48IWRvY3R5cGUgaHRtbD5ALEAsPGh0bWw+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxoZWFkPkAsPG1ldGEgY2hhcnNldD1cXFwidXRmLThcXFwiPkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lczwvdGl0bGU+QCxcIiB0aXRsZSBpblxuICAgICAgICBsZXQgKCkgPSBQcC5saXN0IH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZSBkZXBlbmRlbmN5IGYgaHRtbF9kZXBzIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QF1ALDwvaGVhZD5ALFwiIChmdW4gZiAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALFwiIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImR0IHtmbG9hdDogbGVmdDsgY2xlYXI6IGxlZnQ7IHdpZHRoOiAyMGVtO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImRkIHtmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiAwIDAgMCAyMWVtO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi5ub2RlIHJlY3Qge3N0cm9rZTogIzMzMzsgZmlsbDogI2ZmZjt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiLmVkZ2VQYXRoIHBhdGgge3N0cm9rZTogIzMzMzsgZmlsbDogIzMzMzsgc3Ryb2tlLXdpZHRoOiBcXFxuICAgICAgICAgICAgICAgICAgIDEuNXB4O31cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc3R5bGU+XCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGJvZHk+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyBmIHRpdGxlIGluXG4gICAgICAgICgpKVxuICAgIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYVxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICAgIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICAoKVxuICApXG5cbmxldCBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCB0aXRsZSBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAoKnwgVGVlIC0+XG4gICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIiVzOiBcXFwidGVlXFxcIlwiIHRpdGxlXG4gICAgICAgIGluXG4gICAgICAgIHRydWUqKVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXM6IFxcXCJ2ZWVcXFwiXCIgdGl0bGVcbiAgICBpblxuICAgIHRydWVcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgKCogbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIlczogXFxcIm5vbmVcXFwiXCIgdGl0bGVcbiAgICAgICBpblxuICAgICAgIHRydWUqKVxuICAgIGJvb2xcblxubGV0IG1lcmdlIHMgcycgPVxuICBpZiBzID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB0aGVuXG4gICAgcydcbiAgZWxzZVxuICAgIHNcblxubGV0IG1hdHJpeF9zdHJpbmdfb2Zfb3B0aW9ucyBsID1cbiAgbGV0IGkgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBpIGwgLT5cbiAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgeCAtPlxuICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IGkgKiA3XG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBpXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBpICogM1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IGkgKiAtMVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBpICogNVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gaVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlIC0+IGkgKiAxMVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IGkgKiAxM1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBpICogMTdcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBpICogMTkpXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBfIC0+XG4gICAgICAgICAgICAgaSkpXG4gICAgICAxIGxcbiAgaW5cbiAgc3RyaW5nX29mX2ludCBpXG5cbmxldCBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgTW9kcy5TdHJpbmcyTWFwLml0ZXJcbiAgICAgIChmdW4gKGlkMSwgaWQyKSBsaXN0IC0+XG4gICAgICAgIGxldCBsaXN0ID0gTGlzdC5yZXYgbGlzdCBpblxuICAgICAgICBsZXQgaWQxX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkMSBpblxuICAgICAgICBsZXQgaWQyX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkMiBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X2VkZ2UgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uX2xpc3QgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9sYWJlbCA9IFNvbWUgWyBzIF0gfVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2xhYmVsID0gU29tZSAocyA6OiBcIixcIiA6OiBzJykgfSlcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgcyAtPlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgd2hlbiBzID0gcycgLT4gYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRnZV9jb2xvciA9IFNvbWUgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd247XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9zdHlsZSA9IHMgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gcyAtPlxuICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2RpcmVjdGlvbiA9IHMgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgcyAtPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgZWRnZV9hcnJvd3RhaWwgPSBtZXJnZSBzIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd3RhaWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfYXJyb3doZWFkID0gbWVyZ2UgcyBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMuZWRnZV9wb3NpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfY29udGV4dHVhbF9oZWxwID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzJyAtPiBTb21lIChzJyBeIHMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9vbl9jbGljayA9IFNvbWUganNvbiB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF9cbiAgICAgICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIG9wdGlvbl9saXN0KVxuICAgICAgICAgICAgYXR0cmlidXRlcyBsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICBcImcuc2V0RWRnZSglaSwlaSx7IFwiIGlkMV9pbnQgaWQyX2ludFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2RpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQ7XG4gICAgICAgICAgICAgIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+IGF0dHJpYnV0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCwgc19vcHQgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2wsIE5vbmVcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwibGFiZWw6IFxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gZm10IC0+IExpc3QuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikpXG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHN0cmluZ19saXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzX29wdCwgcycgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAxMDAgdGhlblxuICAgICAgICAgICAgICAgIFNvbWUgcywgU3RyaW5nLnN1YiBzIDAgMTAwIF4gXCIuLi5cIlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgTm9uZSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcXFwiXCIgcydcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlLCBzX29wdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0IGNvbG9yID0gc3ZnX2NvbG9yX2VuY29kaW5nIHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcInN0eWxlOiBcXFwic3Ryb2tlOiAlczsgZmlsbDogd2hpdGVcXFwiLCBhcnJvd2hlYWRTdHlsZTogXFxcImZpbGw6IFxcXG4gICAgICAgICAgICAgICAgICVzOyBzdHJva2U6ICVzXFxcIlwiXG4gICAgICAgICAgICAgICAgY29sb3IgY29sb3IgY29sb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCBcImFycm93aGVhZFwiXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCBcImFycm93dGFpbFwiXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIH0pO0AsXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBzX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiPCEtLSVzLS0+XFxuXCIgc1xuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5nZXRfZWRnZV9tYXAgbG9nZ2VyKVxuICBpblxuICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBtYXRjaCBmX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPlxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwidmFyIHN2ZyA9IGQzLnNlbGVjdChcXFwic3ZnXFxcIiksaW5uZXIgPSBzdmcuc2VsZWN0KFxcXCJnXFxcIik7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIFNldCB1cCB6b29tIHN1cHBvcnRALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJ2YXIgem9vbSA9IGQzLmJlaGF2aW9yLnpvb20oKS5vbihcXFwiem9vbVxcXCIsIGZ1bmN0aW9uKCkge0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiaW5uZXIuYXR0cihcXFwidHJhbnNmb3JtXFxcIiwgXFxcInRyYW5zbGF0ZShcXFwiICsgZDMuZXZlbnQudHJhbnNsYXRlICsgXFxcIilcXFwiIFxcXG4gICAgICAgICArQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJcXFwic2NhbGUoXFxcIiArIGQzLmV2ZW50LnNjYWxlICsgXFxcIilcXFwiKTtALH0pO0Asc3ZnLmNhbGwoem9vbSk7XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiLy8gQ3JlYXRlIHRoZSByZW5kZXJlckAsIHZhciByZW5kZXIgPSBuZXcgZGFncmVEMy5yZW5kZXIoKTtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIi8vIFJ1biB0aGUgcmVuZGVyZXIuIFRoaXMgaXMgd2hhdCBkcmF3cyB0aGUgZmluYWwgZ3JhcGguQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInJlbmRlcihpbm5lciwgZyk7QCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ2VudGVyIHRoZSBncmFwaEAsdmFyIGluaXRpYWxTY2FsZSA9IDAuNzU7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInpvb21ALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCIudHJhbnNsYXRlKFsoc3ZnLmF0dHIoXFxcIndpZHRoXFxcIikgLSBnLmdyYXBoKCkud2lkdGggKiBpbml0aWFsU2NhbGUpIC8gXFxcbiAgICAgICAgIDIsIDIwXSlALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLnNjYWxlKGluaXRpYWxTY2FsZSlALC5ldmVudChzdmcpO0AsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcInN2Zy5hdHRyKCdoZWlnaHQnLCBnLmdyYXBoKCkuaGVpZ2h0ICogaW5pdGlhbFNjYWxlICsgNDApO1wiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCw8L3NjcmlwdD5cIiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALDwvZGl2PlwiIGluXG4gICAgKClcblxubGV0IHByaW50X2dyYXBoX2Zvb3QgbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJ9XCIgaW5cbiAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICB8IExvZ2dlcnMuTWF0cml4IC0+XG4gICAgbGV0IG5vZGVzID0gR3JhcGhfbG9nZ2Vyc19zaWcuZ2V0X25vZGVzIGxvZ2dlciBpblxuICAgIGxldCBlZGdlcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdldF9lZGdlX21hcCBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJydWxlc1xcXCIgOlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlcCAocywgXykgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1xcXCIlc1xcXCJcIiBzZXAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgXCIsIFwiKVxuICAgICAgICBcIlwiIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcImhpdHNcXFwiIDpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzZXAgXyAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXMxXCIgc2VwIGluXG4gICAgICAgICAgXCIsIFwiKVxuICAgICAgICBcIlwiIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcImZsdXhzXFxcIiA6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYiAoczEsIF8pIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGIgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIHNlcCAoczIsIF8pIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIE1vZHMuU3RyaW5nMk1hcC5maW5kX29wdGlvbiAoczEsIHMyKSBlZGdlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gXCIwXCJcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBvcHRpb25zIC0+IG1hdHJpeF9zdHJpbmdfb2Zfb3B0aW9ucyBvcHRpb25zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICAgICAgXCIlcyVzXCIgc2VwIGNvbG9yX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBcIiwgXCIpXG4gICAgICAgICAgICAgIFwiXCIgbm9kZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICB0cnVlKVxuICAgICAgICBmYWxzZSBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+IHByaW50X2Zvb3Rfc2hhcmVkX2h0bWxfanMgbG9nZ2VyXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAobWF0Y2ggZl9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICBsZXQgKCkgPSBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlciBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsPC9ib2R5PkBdQCw8L2h0bWw+QF1ALlwiIGluXG4gICAgICAoKSlcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLlNCTUxcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIC0+XG4gICAgKClcblxubGV0IHByaW50X2NvbW1lbnQgbG9nZ2VyID8oZmlsdGVyX2luID0gTm9uZSkgPyhmaWx0ZXJfb3V0ID0gW10pIHN0cmluZyA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBpZiBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCB0aGVuIChcbiAgICBtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIyVzXCIgc3RyaW5nXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgc3RyaW5nXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gICAgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAgICgpXG4gIClcblxubGV0IG9wZW5fYXNzbyBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFx0PHA+PGRsPlxcblwiXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdHJpeFxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgY2xvc2VfYXNzbyBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFx0XFx0PC9kbD48L3A+XFxuXCJcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWF0cml4XG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUXG4gIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBwcmludF9hc3NvIGxvZ2dlciBzdHJpbmcxIHN0cmluZzIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIi8qJXMgJXMqL1wiIHN0cmluZzEgc3RyaW5nMlxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgIFwiXFx0XFx0XFx0PGR0PiVzPC9kdD48ZGQ+JXM8L2RkPlwiIHN0cmluZzEgc3RyaW5nMlxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLlNCTUxcbiAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2FcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBzaGFwZV9pbl9kb3Qgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IFwic3R5bGU9aW52aXNcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlIC0+IFwic2hhcGU9aW52aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IFwic2hhcGU9aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gXCJzaGFwZT1ib3hcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gXCJzaGFwZT1lbGxpcHNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGUgLT4gXCJzaGFwZT1jaXJjbGVcIlxuXG5sZXQgc2hhcGVfaW5faHRtbCBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gU29tZSBcInN0eWxlOiBcXFwidmlzaWJpbGl0eTpoaWRkZW5cXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJpbnZob3VzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IFNvbWUgXCJzaGFwZTogXFxcImhvdXNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdCAtPiBTb21lIFwic2hhcGU6IFxcXCJyZWN0XFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJlbGxpcHNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlIC0+IFNvbWUgXCJzaGFwZTogXFxcImVsbGlwc2VcXFwiXCJcblxubGV0IHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBfID0gXCItXCJcbmxldCBzdHJpbmdfdHdvX29mX2xpbmVzdHlsZV9pbl9kb3QgXyA9IFwiLS1cIlxuXG5sZXQgc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IHN0eWxlID1cbiAgbWF0Y2ggc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBcIj5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcInw+XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gXCJ8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IFwiXCJcblxubGV0IHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gXCI8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCI8fFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwifFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBcIlwiXG5cbmxldCBwcmludF9ub2RlIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSkgaWQgPVxuICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X25vZGUgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgICB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuVFhUXG4gICAgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9sYWJlbCA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfZmlsbGNvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGkgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV93aWR0aCA9IFNvbWUgaSB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaSAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9oZWlnaHQgPSBTb21lIGkgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX3NoYXBlID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMubm9kZV9wb3NpdGlvbnMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX29uX2NsaWNrID0gU29tZSBqc29uIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBub2RlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBfXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBfIC0+XG4gICAgICAgICAgICBhdHRyaWJ1dGVzKVxuICAgICAgICBhdHRyaWJ1dGVzIGRpcmVjdGl2ZXNcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdGhlbWF0aWNhXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTFxuICAgIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkhUTUwgLT5cbiAgICAgIGF0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiJXNcXFwiXCIgaWQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgaXNfbm9fbm9kZV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIFtcIiBpblxuICAgICAgICBsZXQgYm9vbCA9IGZhbHNlIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwibGFiZWw9XFxcIiVzXFxcIlwiIHN0cmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9zaGFwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcIiVzXCIgKHNoYXBlX2luX2RvdCBzaGFwZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfd2lkdGggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwid2lkdGg9XFxcIiVpcHhcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9oZWlnaHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImhlaWdodD1cXFwiJWlweFxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcj1cXFwiJXNcXFwiXCIgKGRvdF9jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9maWxsY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImZpbGxjb2xvcj1cXFwiJXNcXFwiIHN0eWxlPWZpbGxlZFwiIChkb3RfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IGlmIGJvb2wgdGhlbiAoKSBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIl07XCIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgbGV0IGlkX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiZy5zZXROb2RlKCVpLCB7IFwiIGlkX2ludFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX25vZGVfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZFxuICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT4gc3RyaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdHJpbmcgPSBTdHJpbmcuZXNjYXBlZCBzdHJpbmcgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImxhYmVsOiBcXFwiJXNcXFwiXCIgc3RyaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3NoYXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgIChtYXRjaCBzaGFwZV9pbl9odG1sIHNoYXBlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHNoYXBlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV93aWR0aCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIndpZHRoOiBcXFwiJWlcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2hlaWdodCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImhlaWdodDogXFxcIiVpXFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcjogXFxcIiVzXFxcIlwiIChzdmdfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9maWxsY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwic3R5bGU6IFxcXCJmaWxsOiAlc1xcXCIgXCIgKHN2Z19jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiB9KTtALFwiIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLlRYVCAtPlxuICAgIChtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJOb2RlOiAlc1wiIGlkIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKClcbiAgICB8IFNvbWUgbGFiZWwgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICBcIk5vZGU6JXMsIExhYmVsOiVzXCIgaWQgbGFiZWxcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKCkpXG4gIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSnNvbiAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmFkZF9ub2RlIGxvZ2dlciBpZCBkaXJlY3RpdmVzXG4gIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhclxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICgpXG5cbmxldCBwcmludF9lZGdlIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSkgPyhwcmVmaXggPSBcIlwiKSBpZDEgaWQyID1cbiAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9lZGdlIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gICAgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfbGFiZWwgPSBTb21lIFsgcyBdIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9jb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3N0eWxlID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9kaXJlY3Rpb24gPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93dGFpbCA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3doZWFkID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLmVkZ2VfcG9zaXRpb25zIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfb25fY2xpY2sgPSBTb21lIGpzb24gfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF8gLT5cbiAgICAgICAgICAgIGF0dHJpYnV0ZXMpXG4gICAgICAgIGF0dHJpYnV0ZXMgZGlyZWN0aXZlc1xuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gICAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMU1xuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgLT5cbiAgICAgIGF0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfZGlyZWN0aW9uIHdpdGhcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+XG4gICAgICAgIHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICAgICAgXiBzdHJpbmdfb2ZfYXJyb3dfaGVhZF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT5cbiAgICAgICAgc3RyaW5nX3R3b19vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+XG4gICAgICAgIHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgICAgXiBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgICAgIF4gc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+XG4gICAgICAgIHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgICAgXiBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgXCJcXFwiJXNcXFwiICVzIFxcXCIlc1xcXCJcIiBpZDEgZGlyZWN0aW9uIGlkMlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX2VkZ2VfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiBbXCIgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzdHJpbmdfbGlzdCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJsYWJlbD1cXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdHJpbmdfbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJcIiBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX3N0eWxlIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIC0+IGJvb2xcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJzdHlsZT1cXFwiZG90dGVkXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGFzaGVkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcInN0eWxlPVxcXCJkYXNoZWRcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImNvbG9yPVxcXCIlc1xcXCJcIiAoZG90X2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZCB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcInRlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJ2ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcIm5vbmVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBib29sXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwidGVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcInZlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwibm9uZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gaWYgYm9vbCB0aGVuICgpIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXTtcIiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuSFRNTCAtPlxuICAgIGxldCBsYWJlbCA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IFsgXCJcIiBdXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgYXJyb3cgPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZCB3aXRoXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gXCItLVwiXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcIi0+XCJcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwiLXxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgIFwiJXMlcyAlcyAlc1wiIHByZWZpeCBpZDEgYXJyb3cgaWQyXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIpXG4gICAgICAgIChMaXN0LnJldiBsYWJlbClcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuYWRkX2VkZ2UgbG9nZ2VyIGlkMSBpZDIgZGlyZWN0aXZlc1xuICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfb25lX3RvX25fcmVsYXRpb24gbG9nZ2VyID8oZGlyZWN0aXZlcyA9IFtdKVxuICAgID8oc3R5bGVfb25lID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4pID8oc3R5bGVfbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluKVxuICAgIGlkIGlkbGlzdCA9XG4gIGxldCBmaWN0aXRpb3VzID0gXCJGaWN0aXRpb3VzX1wiIF4gaWQgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfZmljdCA9XG4gICAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgICBMaXN0LnJldlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXCJcIlxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIDAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IDBcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2tcbiAgICAgICA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5ET1RcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBMaXN0LnJldlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXCJcIlxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZVxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIDAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IDBcbiAgICAgICA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgZGlyZWN0aXZlc19vbmUgPVxuICAgIGlmIHN0eWxlX29uZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIHRoZW5cbiAgICAgIGRpcmVjdGl2ZXNcbiAgICBlbHNlXG4gICAgICBMaXN0LnJldiAoR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHN0eWxlX29uZSA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgZGlyZWN0aXZlc19uID1cbiAgICBpZiBzdHlsZV9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4gdGhlblxuICAgICAgZGlyZWN0aXZlc1xuICAgIGVsc2VcbiAgICAgIExpc3QucmV2IChHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgc3R5bGVfbiA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgXyA9IHByaW50X25vZGUgbG9nZ2VyIGZpY3RpdGlvdXMgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19maWN0IGluXG4gIGxldCBfID0gcHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19vbmUgZmljdGl0aW91cyBpZCBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIGlkJyAtPiBwcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlczpkaXJlY3RpdmVzX24gZmljdGl0aW91cyBpZCcpXG4gICAgICBpZGxpc3RcbiAgaW5cbiAgKClcblxubGV0IF8gPVxuICBsZXQgZiB0IHQnID0gdC5lZGdlX29uX2NsaWNrLCB0Jy5ub2RlX29uX2NsaWNrIGluXG4gIGZcbiIsIigqKlxuICAqIGdyYXBoX2pzLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRpcmVjdGlvbl90b19qc29uIGRpcmVjdGlvbiA9XG4gIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+IGBTdHJpbmcgXCJEaXJlY3RcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT4gYFN0cmluZyBcIlJldmVyc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT4gYFN0cmluZyBcIlVuZGlyZWN0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGggLT4gYFN0cmluZyBcIkJvdGhcIlxuXG5sZXQgc2hhcGVfdG9fanNvbiBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gYFN0cmluZyBcIkludmlzaWJsZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2UgLT4gYFN0cmluZyBcIkhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBgU3RyaW5nIFwiSW52aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gYFN0cmluZyBcInJlY3RcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gYFN0cmluZyBcImVsbGlwc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZSAtPiBgU3RyaW5nIFwiY2lyY2xlXCJcblxubGV0IGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmQgPVxuICBtYXRjaCBoZWFka2luZCB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IGBTdHJpbmcgXCJ2ZWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBgU3RyaW5nIFwiVGVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IGBTdHJpbmcgXCJ1bmRpcmVjdGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYFN0cmluZyBcIm5vcm1hbFwiXG5cbmxldCBsaW5lc3R5bGVfdG9fanNvbiBsaW5lc3R5bGUgPVxuICBtYXRjaCBsaW5lc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIC0+IGBTdHJpbmcgXCJQbGFpblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkIC0+IGBTdHJpbmcgXCJEb3R0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRhc2hlZCAtPiBgU3RyaW5nIFwiRGFzaGVkXCJcblxubGV0IGNvbG9yX3RvX2pzb24gY29sb3IgPVxuICBtYXRjaCBjb2xvciB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IGBTdHJpbmcgXCJyZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IGBTdHJpbmcgXCJncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gYFN0cmluZyBcIndoaXRlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IGBTdHJpbmcgXCJibHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBgU3RyaW5nIFwiYmxhY2tcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBgU3RyaW5nIFwibGlnaHRza3libHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gYFN0cmluZyBcInBhbGVncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd24gLT4gYFN0cmluZyBcImJyb3duXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gYFN0cmluZyBcInllbGxvd1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBgU3RyaW5nIFwiZ3JleVwiXG5cbmxldCBkaXJlY3RpdmVfdG9fanNvbiBvcHRpb24gPVxuICBtYXRjaCBvcHRpb24gd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGNvbG9yIC0+IFwiY29sb3JcIiwgY29sb3JfdG9fanNvbiBjb2xvclxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBjb2xvciAtPiBcImZpbGxjb2xvclwiLCBjb2xvcl90b19qc29uIGNvbG9yXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgc3RyaW5nIC0+IFwibGFiZWxcIiwgYFN0cmluZyBzdHJpbmdcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpbnQgLT4gXCJ3aWR0aFwiLCBgSW50IGludFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpbnQgLT4gXCJoZWlnaHRcIiwgYEludCBpbnRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gZGlyZWN0aW9uIC0+XG4gICAgXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uX3RvX2pzb24gZGlyZWN0aW9uXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgc2hhcGUgLT4gXCJzaGFwZVwiLCBzaGFwZV90b19qc29uIHNoYXBlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIGhlYWRraW5kIC0+XG4gICAgXCJhcnJvd2hlYWRcIiwgaGVhZGtpbmRfdG9fanNvbiBoZWFka2luZFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBoZWFka2luZCAtPlxuICAgIFwiYXJyb3d0YWlsXCIsIGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgbGluZXN0eWxlIC0+XG4gICAgXCJsaW5lc3R5bGVcIiwgbGluZXN0eWxlX3RvX2pzb24gbGluZXN0eWxlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICggXCJwb3NpdGlvblwiLFxuICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAoZnVuIGpzb24gLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBqc29uKSlcbiAgICAgICAgcCApXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICBcImNvbnRleHR1YWwgaGVscFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgc1xuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPiBcIm9uX2NsaWNrXCIsIGpzb25cblxubGV0IGRpcmVjdGl2ZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2Fzc29jIGRpcmVjdGl2ZV90b19qc29uXG5cbmxldCBub2RlX3RvX2pzb24gKGlkLCBkaXJlY3RpdmVzKSA9XG4gIGBBc3NvYyBbIFwiaWRcIiwgYFN0cmluZyBpZDsgXCJkaXJlY3RpdmVzXCIsIGRpcmVjdGl2ZXNfdG9fanNvbiBkaXJlY3RpdmVzIF1cblxubGV0IGVkZ2VfdG9fanNvbiAoaWQxLCBpZDIsIGRpcmVjdGl2ZXMpID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJzb3VyY2VcIiwgYFN0cmluZyBpZDE7XG4gICAgICBcInRhcmdldFwiLCBgU3RyaW5nIGlkMjtcbiAgICAgIFwiZGlyZWN0aXZlc1wiLCBkaXJlY3RpdmVzX3RvX2pzb24gZGlyZWN0aXZlcztcbiAgICBdXG5cbmxldCBub2Rlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBub2RlX3RvX2pzb25cbmxldCBlZGdlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBlZGdlX3RvX2pzb25cblxubGV0IHRvX2pzb24gZ3JhcGggOiBZb2pzb24uQmFzaWMudCA9XG4gIGBBc3NvY1xuICAgIFsgXCJub2Rlc1wiLCBub2Rlc190b19qc29uIChmc3QgZ3JhcGgpOyBcImVkZ2VzXCIsIGVkZ2VzX3RvX2pzb24gKHNuZCBncmFwaCkgXVxuXG5sZXQgbGluZXN0eWxlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJQbGFpblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluXG4gIHwgYFN0cmluZyBcIkRvdHRlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZFxuICB8IGBTdHJpbmcgXCJEYXNoZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5EYXNoZWRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaGVhZGtpbmRcIiwgeCkpXG5cbmxldCBoZWFka2luZF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwidmVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVmVlXG4gIHwgYFN0cmluZyBcIlRlZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZVxuICB8IGBTdHJpbmcgXCJ1bmRpcmVjdGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZFxuICB8IGBTdHJpbmcgXCJub3JtYWxcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaGVhZGtpbmRcIiwgeCkpXG5cbmxldCBzaGFwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiSW52aXNpYmxlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlXG4gIHwgYFN0cmluZyBcIkhvdXNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2VcbiAgfCBgU3RyaW5nIFwiSW52aG91c2VcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZVxuICB8IGBTdHJpbmcgXCJyZWN0XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxuICB8IGBTdHJpbmcgXCJlbGxpcHNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxuICB8IGBTdHJpbmcgXCJjaXJjbGVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGVcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc2hhcGVcIiwgeCkpXG5cbmxldCBkaXJlY3Rpb25fb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkRpcmVjdFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdFxuICB8IGBTdHJpbmcgXCJSZXZlcnNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZVxuICB8IGBTdHJpbmcgXCJVbmRpcmVjdGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZFxuICB8IGBTdHJpbmcgXCJCb3RoXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQm90aFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBkaXJlY3Rpb25cIiwgeCkpXG5cbmxldCBjb2xvcl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiZ3JleVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXlcbiAgfCBgU3RyaW5nIFwieWVsbG93XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93XG4gIHwgYFN0cmluZyBcInJlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZFxuICB8IGBTdHJpbmcgXCJncmVlblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuXG4gIHwgYFN0cmluZyBcIndoaXRlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGVcbiAgfCBgU3RyaW5nIFwiYmx1ZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWVcbiAgfCBgU3RyaW5nIFwiYmxhY2tcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xuICB8IGBTdHJpbmcgXCJsaWdodHNreWJsdWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWVcbiAgfCBgU3RyaW5nIFwicGFsZWdyZWVuXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuXG4gIHwgYFN0cmluZyBcImJyb3duXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd25cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgY29sb3JcIiwgeCkpXG5cbmxldCBkaXJlY3RpdmVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgXCJjb2xvclwiLCBjb2xvciAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAoY29sb3Jfb2ZfanNvbiBjb2xvcilcbiAgfCBcImZpbGxjb2xvclwiLCBjb2xvciAtPiBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgKGNvbG9yX29mX2pzb24gY29sb3IpXG4gIHwgXCJsYWJlbFwiLCBgU3RyaW5nIHN0cmluZyAtPiBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzdHJpbmdcbiAgfCBcIndpZHRoXCIsIGBJbnQgaW50IC0+IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGludFxuICB8IFwiaGVpZ2h0XCIsIGBJbnQgaW50IC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpbnRcbiAgfCBcImRpcmVjdGlvblwiLCBkaXJlY3Rpb24gLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gKGRpcmVjdGlvbl9vZl9qc29uIGRpcmVjdGlvbilcbiAgfCBcInNoYXBlXCIsIHNoYXBlIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIChzaGFwZV9vZl9qc29uIHNoYXBlKVxuICB8IFwiYXJyb3doZWFkXCIsIGhlYWRraW5kIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIChoZWFka2luZF9vZl9qc29uIGhlYWRraW5kKVxuICB8IFwiYXJyb3d0YWlsXCIsIGhlYWRraW5kIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIChoZWFka2luZF9vZl9qc29uIGhlYWRraW5kKVxuICB8IFwibGluZXN0eWxlXCIsIGxpbmVzdHlsZSAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSAobGluZXN0eWxlX29mX2pzb24gbGluZXN0eWxlKVxuICB8IFwicG9zaXRpb25cIiwgcG9zX2xpc3QgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvblxuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIChmdW4ganNvbiAtPlxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICA/ZXJyb3JfbXNnOlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwicG9zaXRpb25cIikpKVxuICAgICAgICAgICAgICAgIGpzb24pKVxuICAgICAgICAgcG9zX2xpc3QpXG4gIHwgXCJjb250ZXh0dWFsIGhlbHBcIiwgY29udGV4dHVhbF9oZWxwIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIChKc29uVXRpbC50b19zdHJpbmcgY29udGV4dHVhbF9oZWxwKVxuICB8IFwib25fY2xpY2tcIiwganNvbiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb25cbiAgfCBfLCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZGlyZWN0aXZlXCIsIHgpKVxuXG5sZXQgZGlyZWN0aXZlc19vZl9qc29uIGRpcmVjdGl2ZXMgPVxuICBKc29uVXRpbC50b19hc3NvY1xuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibGlzdCBvZiBkaXJlY3RpdmVzXCIpXG4gICAgZGlyZWN0aXZlX29mX2pzb24gZGlyZWN0aXZlc1xuXG5sZXQgaWRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGlkXCIsIHgpKVxuXG5sZXQgbm9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5XG4gICAgICAgKCBpZF9vZl9qc29uIChMaXN0LmFzc29jIFwiaWRcIiBsKSxcbiAgICAgICAgIGRpcmVjdGl2ZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImRpcmVjdGl2ZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBub2RlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgbm9kZVwiLCB4KSlcblxubGV0IGVkZ2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgICggaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInNvdXJjZVwiIGwpLFxuICAgICAgICAgaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInRhcmdldFwiIGwpLFxuICAgICAgICAgZGlyZWN0aXZlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZGlyZWN0aXZlc1wiIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVkZ2VcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlZGdlXCIsIHgpKVxuXG5sZXQgbm9kZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3RcbiAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIm5vZGUgbGlzdFwiKVxuICAgIG5vZGVfb2ZfanNvblxuXG5sZXQgZWRnZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3RcbiAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImVkZ2UgbGlzdFwiKVxuICAgIGVkZ2Vfb2ZfanNvblxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgICggbm9kZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcIm5vZGVzXCIgbCksXG4gICAgICAgICBlZGdlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZWRnZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKVxuIiwidHlwZSBicmVha19oaW50ID0gU3BhY2UgfCBOb19zcGFjZVxuXG50eXBlIHN5bWJvbF90YWJsZSA9IHtcbiAgYWdlbnRfb3Blbjogc3RyaW5nO1xuICBhZ2VudF9jbG9zZTogc3RyaW5nO1xuICBhZ2VudF9zZXBfY29tbWE6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGFnZW50X3NlcF9kb3Q6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGFnZW50X3NlcF9wbHVzOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBnaG9zdF9hZ2VudDogc3RyaW5nO1xuICBzaG93X2dob3N0OiBib29sO1xuICBpbnRlcm5hbF9zdGF0ZV9zeW1ib2w6IHN0cmluZztcbiAgb3Blbl9pbnRlcm5hbF9zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9pbnRlcm5hbF9zdGF0ZTogc3RyaW5nO1xuICBvcGVuX2ludGVybmFsX3N0YXRlX21vZDogc3RyaW5nO1xuICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2Q6IHN0cmluZztcbiAgaW50ZXJuYWxfc3RhdGVfbW9kX3N5bWJvbDogc3RyaW5nO1xuICBpbnRlcm5hbF9zdGF0ZV9hbnk6IHN0cmluZztcbiAgb3Blbl9iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIGNsb3NlX2JpbmRpbmdfc3RhdGU6IHN0cmluZztcbiAgbWlzc2luZ19iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIG9wZW5fYmluZGluZ19zdGF0ZV9tb2Q6IHN0cmluZztcbiAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sOiBzdHJpbmc7XG4gIGNsb3NlX2JpbmRpbmdfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGZyZWU6IHN0cmluZztcbiAgYm91bmQ6IHN0cmluZztcbiAgbGlua190b19hbnk6IHN0cmluZztcbiAgbGlua190b19zb21lOiBzdHJpbmc7XG4gIGF0OiBzdHJpbmc7XG4gIHNpdGVfc2VwOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBidHlwZV9zZXA6IHN0cmluZztcbiAgdW5pX2Fycm93OiBzdHJpbmc7XG4gIHJldl9hcnJvdzogc3RyaW5nO1xuICBiaV9hcnJvdzogc3RyaW5nO1xuICB1bmlfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIHJldl9hcnJvd19ub3BvbHk6IHN0cmluZztcbiAgYmlfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIGJyZWFrYWJsZTogYm9vbDtcbiAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlOiBzdHJpbmc7XG4gIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZTogc3RyaW5nO1xuICBvcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eTogc3RyaW5nO1xuICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlOiBzdHJpbmc7XG4gIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmU6IHN0cmluZztcbiAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5OiBzdHJpbmc7XG4gIGludF9pbnRlcnZhbF9zZXBhcmF0b3I6IHN0cmluZztcbiAgcGx1c19pbmZpbml0eTogc3RyaW5nO1xuICBtaW51c19pbmZpbml0eTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJfc3RhdGU6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY2VxOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmNndGU6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY3Zhcjogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJkZWx0YTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJ2YWw6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcl9zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY2VxOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjZ3RlOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjdmFyOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJkZWx0YTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVydmFsOiBzdHJpbmc7XG4gIGNvdW50ZXJjZXFfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJjZ3RlX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyY3Zhcl9zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmRlbHRhcGx1c19zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJ2YWxfc3ltYm9sOiBzdHJpbmc7XG59XG5cbmxldCBzeW1ib2xfdGFibGVfVjMgPVxuICB7XG4gICAgYm91bmQgPSBcIiFcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIG1pc3NpbmdfYmluZGluZ19zdGF0ZSA9IFwiP1wiO1xuICAgIGxpbmtfdG9fYW55ID0gXCI/XCI7XG4gICAgbGlua190b19zb21lID0gXCIhX1wiO1xuICAgIGludGVybmFsX3N0YXRlX3N5bWJvbCA9IFwiflwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGUgPSBcIlwiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlID0gXCJcIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9tb2Rfc3ltYm9sID0gXCIvXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfYW55ID0gXCJcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sID0gXCJcIjtcbiAgICBmcmVlID0gXCJcIjtcbiAgICBhdCA9IFwiLlwiO1xuICAgIGFnZW50X29wZW4gPSBcIihcIjtcbiAgICBhZ2VudF9jbG9zZSA9IFwiKVwiO1xuICAgIGFnZW50X3NlcF9jb21tYSA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIsXCIsIFNwYWNlO1xuICAgIGJ0eXBlX3NlcCA9IFwiLlwiO1xuICAgIHNpdGVfc2VwID0gXCIsXCIsIE5vX3NwYWNlO1xuICAgIGdob3N0X2FnZW50ID0gXCIuXCI7XG4gICAgc2hvd19naG9zdCA9IGZhbHNlO1xuICAgIHVuaV9hcnJvdyA9IFwiLT5cIjtcbiAgICByZXZfYXJyb3cgPSBcIjwtXCI7XG4gICAgYmlfYXJyb3cgPSBcIjwtPlwiO1xuICAgIHVuaV9hcnJvd19ub3BvbHkgPSBcIi0hLT5cIjtcbiAgICByZXZfYXJyb3dfbm9wb2x5ID0gXCI8LSEtXCI7XG4gICAgYmlfYXJyb3dfbm9wb2x5ID0gXCI8LSEtPlwiO1xuICAgIGJyZWFrYWJsZSA9IHRydWU7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJbXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJdXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIl1cIjtcbiAgICBwbHVzX2luZmluaXR5ID0gXCIrb29cIjtcbiAgICBtaW51c19pbmZpbml0eSA9IFwiLW9vXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiXVwiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIltcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIltcIjtcbiAgICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yID0gXCIgLi4gXCI7XG4gICAgb3Blbl9jb3VudGVyX3N0YXRlID0gXCJ7XCI7XG4gICAgb3Blbl9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyX3N0YXRlID0gXCJ9XCI7XG4gICAgY2xvc2VfY291bnRlcmNlcSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmNndGUgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNvdW50ZXJjZXFfc3ltYm9sID0gXCI9XCI7XG4gICAgY291bnRlcmNndGVfc3ltYm9sID0gXCI+PVwiO1xuICAgIGNvdW50ZXJjdmFyX3N5bWJvbCA9IFwiOlwiO1xuICAgIGNvdW50ZXJ2YWxfc3ltYm9sID0gXCI6PVwiO1xuICAgIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID0gXCIrXCI7XG4gICAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sID0gXCItXCI7XG4gIH1cblxubGV0IGxpZ2h0ZW4gc3ltYm9sX3RhYmxlID1cbiAgeyBzeW1ib2xfdGFibGUgd2l0aCBzaXRlX3NlcCA9IFwiIFwiLCBzbmQgc3ltYm9sX3RhYmxlLnNpdGVfc2VwIH1cblxubGV0IHRvX2RvdG5ldCBzeW1ib2xfdGFibGUgPVxuICB7XG4gICAgc3ltYm9sX3RhYmxlIHdpdGhcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiICtcIiwgc25kIHN5bWJvbF90YWJsZS5hZ2VudF9zZXBfcGx1cztcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIuXCIsIE5vX3NwYWNlO1xuICB9XG5cbmxldCBzeW1ib2xfdGFibGVfVjQgPVxuICB7XG4gICAgYm91bmQgPSBcIlwiO1xuICAgIG9wZW5fYmluZGluZ19zdGF0ZSA9IFwiW1wiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGUgPSBcIl1cIjtcbiAgICBtaXNzaW5nX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIGxpbmtfdG9fYW55ID0gXCIjXCI7XG4gICAgbGlua190b19zb21lID0gXCJfXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfc3ltYm9sID0gXCJcIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlID0gXCJ7XCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGUgPSBcIn1cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9hbnkgPSBcInsjfVwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGludGVybmFsX3N0YXRlX21vZF9zeW1ib2wgPSBcIi9cIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sID0gXCJcIjtcbiAgICBmcmVlID0gXCIuXCI7XG4gICAgYXQgPSBcIi5cIjtcbiAgICBhZ2VudF9vcGVuID0gXCIoXCI7XG4gICAgYWdlbnRfY2xvc2UgPSBcIilcIjtcbiAgICBhZ2VudF9zZXBfY29tbWEgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLFwiLCBTcGFjZTtcbiAgICBidHlwZV9zZXAgPSBcIi5cIjtcbiAgICBzaXRlX3NlcCA9IFwiLFwiLCBOb19zcGFjZTtcbiAgICBnaG9zdF9hZ2VudCA9IFwiLlwiO1xuICAgIHNob3dfZ2hvc3QgPSB0cnVlO1xuICAgIHVuaV9hcnJvdyA9IFwiLT5cIjtcbiAgICByZXZfYXJyb3cgPSBcIjwtXCI7XG4gICAgYmlfYXJyb3cgPSBcIjwtPlwiO1xuICAgIHVuaV9hcnJvd19ub3BvbHkgPSBcIi0hLT5cIjtcbiAgICByZXZfYXJyb3dfbm9wb2x5ID0gXCI8LSEtXCI7XG4gICAgYmlfYXJyb3dfbm9wb2x5ID0gXCI8LSEtPlwiO1xuICAgIGJyZWFrYWJsZSA9IHRydWU7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJbXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJdXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIl1cIjtcbiAgICBwbHVzX2luZmluaXR5ID0gXCIrb29cIjtcbiAgICBtaW51c19pbmZpbml0eSA9IFwiLW9vXCI7XG4gICAgb3Blbl9jb3VudGVyX3N0YXRlID0gXCJ7XCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiXVwiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIltcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIltcIjtcbiAgICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yID0gXCIgLi4gXCI7XG4gICAgb3Blbl9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyX3N0YXRlID0gXCJ9XCI7XG4gICAgY2xvc2VfY291bnRlcmNlcSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmNndGUgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNvdW50ZXJjZXFfc3ltYm9sID0gXCI9XCI7XG4gICAgY291bnRlcmNndGVfc3ltYm9sID0gXCI+PVwiO1xuICAgIGNvdW50ZXJjdmFyX3N5bWJvbCA9IFwiOlwiO1xuICAgIGNvdW50ZXJ2YWxfc3ltYm9sID0gXCI6PVwiO1xuICAgIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID0gXCIrXCI7XG4gICAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sID0gXCItXCI7XG4gIH1cblxubGV0IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlID0geyBzeW1ib2xfdGFibGUgd2l0aCBicmVha2FibGUgPSBmYWxzZSB9XG5sZXQgc3ltYm9sX3RhYmxlX1YzX2xpZ2h0ID0gbGlnaHRlbiBzeW1ib2xfdGFibGVfVjNcbmxldCBzeW1ib2xfdGFibGVfZG90bmV0ID0gdG9fZG90bmV0IHN5bWJvbF90YWJsZV9WM1xubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX1YzXG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1Y0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfVjRcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfVjNfbGlnaHQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9WM19saWdodFxubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9kb3RuZXRcblxubGV0IHdpdGhfZG90X2FuZF9wbHVzIHN5bWJvbF90YWJsZSA9XG4gIHtcbiAgICBzeW1ib2xfdGFibGUgd2l0aFxuICAgIGFnZW50X3NlcF9wbHVzID0gdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldC5hZ2VudF9zZXBfcGx1cztcbiAgICBhZ2VudF9zZXBfZG90ID0gdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldC5hZ2VudF9zZXBfZG90O1xuICB9XG4iLCIoKipcbiAgICAqIHJlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5tbFxuICAgICpcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAxMi8xMC8yMDEwXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAyOCAyMDE4PlxuICAgICogKlxuICAgICogU2lnbmF0dXJlIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgbWVtb3J5XG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBydWxlX2tleSA9IGludFxuXG50eXBlIGVuZ2luZV9zdGF0ZSA9IHtcbiAgY29tbWFuZF9saW5lOiBzdHJpbmcgb3B0aW9uO1xuICB3YWtlX3VwX21hcDogKHJ1bGVfa2V5IC0+IHJ1bGVfa2V5IGxpc3QpIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5X2VuZ2luZV9zdGF0ZSA9IHsgY29tbWFuZF9saW5lID0gTm9uZTsgd2FrZV91cF9tYXAgPSBOb25lIH1cbmxldCB3YWtlX3VwX21hcCBlcnJvciBlbmdpbmVfc3RhdGUgPSBlcnJvciwgZW5naW5lX3N0YXRlLndha2VfdXBfbWFwXG4iLCIoKipcbiAgICAqIGV4Y2VwdGlvbi5tbFxuICAgICogb3BlbmthcHBhXG4gICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICAqXG4gICAgKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMDQgMjAxOD5cbiAgICAqICpcbiAgICAqIFRoaXMgbGlicmFyeSBkZWNsYXJlcyBleGNlcHRpb25zXG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgdW5jYXVnaHRfZXhjZXB0aW9uID0ge1xuICBmaWxlX25hbWU6IHN0cmluZyBvcHRpb247XG4gIG1lc3NhZ2U6IHN0cmluZyBvcHRpb247XG4gIGFsYXJtOiBleG47XG59XG5cbnR5cGUgY2F1Z2h0X2V4Y2VwdGlvbiA9IHtcbiAgdW5jYXVnaHRfZXhjZXB0aW9uOiB1bmNhdWdodF9leGNlcHRpb247XG4gIGNhbGxpbmdfc3RhY2s6IHN0cmluZyBsaXN0O1xufVxuXG5leGNlcHRpb24gVW5jYXVnaHRfZXhjZXB0aW9uIG9mIHVuY2F1Z2h0X2V4Y2VwdGlvblxuZXhjZXB0aW9uIENhdWdodF9leGNlcHRpb24gb2YgY2F1Z2h0X2V4Y2VwdGlvblxuXG5sZXQgcmVjIGV4bl90b19qc29uID0gZnVuY3Rpb25cbiAgfCBFeGl0IC0+IGBBc3NvYyBbIFwiRXhpdFwiLCBgTnVsbCBdXG4gIHwgTm90X2ZvdW5kIC0+IGBBc3NvYyBbIFwiTm90X2ZvdW5kXCIsIGBOdWxsIF1cbiAgfCBBcmcuQmFkIHggLT4gYEFzc29jIFsgXCJBcmcuQmFkXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTeXMuQnJlYWsgLT4gYEFzc29jIFsgXCJTeXMuQnJlYWtcIiwgYE51bGwgXVxuICB8IFN0YWNrLkVtcHR5IC0+IGBBc3NvYyBbIFwiU3RhY2suRW1wdHlcIiwgYE51bGwgXVxuICB8IFF1ZXVlLkVtcHR5IC0+IGBBc3NvYyBbIFwiUXVldWUuRW1wdHlcIiwgYE51bGwgXVxuICB8IFN0cmVhbS5FcnJvciB4IC0+IGBBc3NvYyBbIFwiU3RyZWFtLkVycm9yXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBgQXNzb2MgWyBcIlN0cmVhbS5GYWlsdXJlXCIsIGBOdWxsIF1cbiAgfCBBcmcuSGVscCB4IC0+IGBBc3NvYyBbIFwiQXJnLkhlbHBcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gYEFzc29jIFsgXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIsIGBOdWxsIF1cbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBgQXNzb2MgWyBcIlNjYW5fZmFpbHVyZVwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gYEFzc29jIFsgXCJMYXp5LlVuZGVmaW5lZFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIChhLCBiLCBjKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIsXG4gICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwiZnN0XCIsIEpzb25VdGlsLm9mX3VuaXhfbGFiZWwgYTtcbiAgICAgICAgICAgICAgXCJzbmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGI7XG4gICAgICAgICAgICAgIFwidHJkXCIsIEpzb25VdGlsLm9mX3N0cmluZyBjO1xuICAgICAgICAgICAgXSApO1xuICAgICAgXVxuICB8IFVuaXguVW5peF9lcnJvciAoYSwgYiwgYykgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcIlVuaXguVW5peC5lcnJvclwiLFxuICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImZzdFwiLCBKc29uVXRpbC5vZl91bml4X2Vycm9yIGE7XG4gICAgICAgICAgICAgIFwic25kXCIsIEpzb25VdGlsLm9mX3N0cmluZyBiO1xuICAgICAgICAgICAgICBcInRyZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYztcbiAgICAgICAgICAgIF0gKTtcbiAgICAgIF1cbiAgfCBGYWlsdXJlIHggLT4gYEFzc29jIFsgXCJGYWlsdXJlXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTdGFja19vdmVyZmxvdyAtPiBgQXNzb2MgWyBcIlN0YWNrX292ZXJmbG93XCIsIGBOdWxsIF1cbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT4gYEFzc29jIFsgXCJDYXVnaHRcIiwgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHggXVxuICB8IFVuY2F1Z2h0X2V4Y2VwdGlvbiB4IC0+IGBBc3NvYyBbIFwiVW5jYXVnaHRcIiwgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24geCBdXG4gIHwgXyAtPiBgQXNzb2MgWyBcIlVua25vd25cIiwgYE51bGwgXVxuXG5hbmQgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24gdW5jYXVnaHQgPVxuICBKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6XCJmaWxlX25hbWVcIiB+bGFiMjpcIm1lc3NhZ2VcIiB+bGFiMzpcImV4blwiXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgZXhuX3RvX2pzb25cbiAgICAodW5jYXVnaHQuZmlsZV9uYW1lLCB1bmNhdWdodC5tZXNzYWdlLCB1bmNhdWdodC5hbGFybSlcblxuYW5kIGNhdWdodF9leGNlcHRpb25fdG9fanNvbiBjYXVnaHQgPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwidW5jYXVnaHRfZXhjZXB0aW9uXCIgfmxhYjI6XCJjYWxsaW5nX3N0YWNrXCJcbiAgICB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgIChKc29uVXRpbC5vZl9saXN0IEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAoY2F1Z2h0LnVuY2F1Z2h0X2V4Y2VwdGlvbiwgY2F1Z2h0LmNhbGxpbmdfc3RhY2spXG5cbmxldCByZWMgZXhuX29mX2pzb24gKGpzb24gOiBZb2pzb24uQmFzaWMudCkgPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJFeGl0XCIsIGBOdWxsKSBdIC0+IEV4aXRcbiAgfCBgQXNzb2MgWyAoXCJOb3RfZm91bmRcIiwgYE51bGwpIF0gLT4gTm90X2ZvdW5kXG4gIHwgYEFzc29jIFsgKFwiQXJnLkJhZFwiLCB4KSBdIC0+IEFyZy5CYWQgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN5cy5CcmVha1wiLCBgTnVsbCkgXSAtPiBTeXMuQnJlYWtcbiAgfCBgQXNzb2MgWyAoXCJTdGFjay5FbXB0eVwiLCBgTnVsbCkgXSAtPiBTdGFjay5FbXB0eVxuICB8IGBBc3NvYyBbIChcIlF1ZXVlLkVtcHR5XCIsIGBOdWxsKSBdIC0+IFF1ZXVlLkVtcHR5XG4gIHwgYEFzc29jIFsgKFwiU3RyZWFtLkVycm9yXCIsIHgpIF0gLT4gU3RyZWFtLkVycm9yIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJTdHJlYW0uRmFpbHVyZVwiLCBgTnVsbCkgXSAtPiBTdHJlYW0uRmFpbHVyZVxuICB8IGBBc3NvYyBbIChcIkFyZy5IZWxwXCIsIHgpIF0gLT4gQXJnLkhlbHAgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIiwgYE51bGwpIF0gLT4gUGFyc2luZy5QYXJzZV9lcnJvclxuICB8IGBBc3NvYyBbIChcIlNjYW5fZmFpbHVyZVwiLCB4KSBdIC0+IFNjYW5mLlNjYW5fZmFpbHVyZSAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiTGF6eS5VbmRlZmluZWRcIiwgYE51bGwpIF0gLT4gTGF6eS5VbmRlZmluZWRcbiAgfCBgQXNzb2MgWyAoXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIiwgYEFzc29jIGwpIF0gd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICBVbml4TGFiZWxzLlVuaXhfZXJyb3JcbiAgICAgICAgICggSnNvblV0aWwudG9fdW5peF9sYWJlbCAoTGlzdC5hc3NvYyBcImZzdFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJzbmRcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwidHJkXCIgbCkgKVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInVuaXggbGFiZWxzIGVycm9yXCIsIGpzb24pKSlcbiAgfCBgQXNzb2MgWyAoXCJVbml4LlVuaXhfZXJyb3JcIiwgYEFzc29jIGwpIF0gd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICBVbml4LlVuaXhfZXJyb3JcbiAgICAgICAgICggSnNvblV0aWwudG9fdW5peF9sYWJlbCAoTGlzdC5hc3NvYyBcImZzdFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJzbmRcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwidHJkXCIgbCkgKVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInVuaXggZXJyb3JcIiwganNvbikpKVxuICB8IGBBc3NvYyBbIChcIkZhaWx1cmVcIiwgeCkgXSAtPiBGYWlsdXJlIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJTdGFja19vdmVyZmxvd1wiLCBgTnVsbCkgXSAtPiBTdGFja19vdmVyZmxvd1xuICB8IGBBc3NvYyBbIChcIkNhdWdodFwiLCB4KSBdIC0+IENhdWdodF9leGNlcHRpb24gKGNhdWdodF9leGNlcHRpb25fb2ZfanNvbiB4KVxuICB8IGBBc3NvYyBbIChcIlVuY2F1Z2h0XCIsIHgpIF0gLT5cbiAgICBVbmNhdWdodF9leGNlcHRpb24gKHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIHgpXG4gIHwgYEFzc29jIFsgKFwiVW5rbm93blwiLCBgTnVsbCkgXSAtPiBGYWlsdXJlIFwiVW5rbm93blwiXG4gIHwgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiZXhjZXB0aW9uXCIsIGpzb24pKVxuXG5hbmQgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiLCBjID1cbiAgICBKc29uVXRpbC50b190cmlwbGUgfmxhYjE6XCJmaWxlX25hbWVcIiB+bGFiMjpcIm1lc3NhZ2VcIiB+bGFiMzpcImV4blwiXG4gICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImZpbGVfbmFtZVwiKSlcbiAgICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwibWVzc2FnZVwiKSlcbiAgICAgIGV4bl9vZl9qc29uIGpzb25cbiAgaW5cbiAgeyBmaWxlX25hbWUgPSBhOyBtZXNzYWdlID0gYjsgYWxhcm0gPSBjIH1cblxuYW5kIGNhdWdodF9leGNlcHRpb25fb2ZfanNvbiBqc29uID1cbiAgbGV0IGEsIGIgPVxuICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ1bmNhdWdodF9leGNlcHRpb25cIiB+bGFiMjpcImNhbGxpbmdfc3RhY2tcIlxuICAgICAgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb25cbiAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJjYWxsaW5nIHN0YWNrXCJcbiAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInN0YWNrIGVsdFwiKSlcbiAgICAgIGpzb25cbiAgaW5cbiAgeyB1bmNhdWdodF9leGNlcHRpb24gPSBhOyBjYWxsaW5nX3N0YWNrID0gYiB9XG5cbmxldCBidWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG4gPVxuICB7IGZpbGVfbmFtZTsgbWVzc2FnZTsgYWxhcm0gPSBleG4gfVxuXG5sZXQgYnVpbGRfY2F1Z2h0X2V4Y2VwdGlvbiBmaWxlX25hbWUgbWVzc2FnZSBleG4gc3RhY2sgPVxuICB7XG4gICAgdW5jYXVnaHRfZXhjZXB0aW9uID0gYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuO1xuICAgIGNhbGxpbmdfc3RhY2sgPSBzdGFjaztcbiAgfVxuXG5sZXQgcmFpc2VfZXhjZXB0aW9uIGZpbGVfbmFtZSBfa2V5IG1lc3NhZ2UgZXhuID1cbiAgcmFpc2UgKFVuY2F1Z2h0X2V4Y2VwdGlvbiB7IGZpbGVfbmFtZTsgbWVzc2FnZTsgYWxhcm0gPSBleG4gfSlcblxubGV0IHJlYyBwcF9leGNlcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiVW5jYXVnaHRfZXhjZXB0aW9uKCVhKVwiIHBwX3VuY2F1Z2h0IHhcbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkNhdWdodF9leGNlcHRpb24oJWEpXCIgcHBfY2F1Z2h0IHhcbiAgfCBleGMgLT4gVXRpbHMucHBfZXhjZXB0aW9uIGYgZXhjXG5cbmFuZCBwcF91bmNhdWdodCBmIHggPVxuICBsZXQgd2l0aF9zcGFjZSA9IGZhbHNlIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhJWFleGNlcHRpb246QCAlYUBdXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJmaWxlX25hbWU6ICVzOyBcIiB4KSlcbiAgICB4LmZpbGVfbmFtZVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2UgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIm1lc3NhZ2U6ICVzOyBcIiB4KSlcbiAgICB4Lm1lc3NhZ2UgcHBfZXhjZXB0aW9uIHguYWxhcm1cblxuYW5kIHBwX2NhdWdodCBmIHggPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD5jYWxsaW5nX3N0YWNrOiAlYTsgJWFAXVwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZylcbiAgICB4LmNhbGxpbmdfc3RhY2sgcHBfdW5jYXVnaHQgeC51bmNhdWdodF9leGNlcHRpb25cblxubGV0IHJlYyBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4IHN0YWNrID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRXhpdCAtPiBcIkV4aXRcIiA6OiBzdGFja1xuICB8IE5vdF9mb3VuZCAtPiBcIk5vdF9mb3VuZFwiIDo6IHN0YWNrXG4gIHwgQXJnLkJhZCB4IC0+IFwiQXJnLkJhZChcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgU3lzLkJyZWFrIC0+IFwiU3lzLkJyZWFrXCIgOjogc3RhY2tcbiAgfCBTdGFjay5FbXB0eSAtPiBcIlN0YWNrLkVtcHR5XCIgOjogc3RhY2tcbiAgfCBRdWV1ZS5FbXB0eSAtPiBcIlF1ZXVlLkVtcHR5XCIgOjogc3RhY2tcbiAgfCBTdHJlYW0uRXJyb3IgeCAtPiBcIlN0cmVhbS5FcnJvclwiIDo6IHggOjogc3RhY2tcbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBcIlN0cmVhbS5GYWlsdXJlXCIgOjogc3RhY2tcbiAgfCBBcmcuSGVscCB4IC0+IFwiQXJnLkhlbHAoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIgOjogc3RhY2tcbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBcIlNjYW5mLlNjYW4uZmFpbHVyZShcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gXCJMYXp5LlVuZGVmaW5lZFwiIDo6IHN0YWNrXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIF8gLT4gXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIiA6OiBzdGFja1xuICB8IFVuaXguVW5peF9lcnJvciBfIC0+IFwiVW5peC5Vbml4LmVycm9yXCIgOjogc3RhY2tcbiAgfCBGYWlsdXJlIHggLT4gXCJGYWlsdXJlKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrX292ZXJmbG93XCIgOjogc3RhY2tcbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBcIkNhdWdodF9leGNlcHRpb24oXCIgOjogc3RyaW5nbGlzdF9vZl9jYXVnaHQgeCAoXCIpXCIgOjogc3RhY2spXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBcIlVuY2F1Z2h0X2V4Y2VwdGlvbihcIiA6OiBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHggKFwiKVwiIDo6IHN0YWNrKVxuICB8IF8gLT4gXCJVbmtub3duXCIgOjogc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgeCBzdGFjayA9XG4gIChtYXRjaCB4LmZpbGVfbmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBmaWxlX25hbWUgLT4gXCJmaWxlX25hbWU6IFwiIF4gZmlsZV9uYW1lIF4gXCI7IFwiKVxuICA6OiAobWF0Y2ggeC5tZXNzYWdlIHdpdGhcbiAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgfCBTb21lIG1lc3NhZ2UgLT4gXCJtZXNzYWdlOiBcIiBeIG1lc3NhZ2UgXiBcIjsgXCIpXG4gIDo6IFwiZXhjZXB0aW9uOlwiXG4gIDo6IHN0cmluZ2xpc3Rfb2ZfZXhjZXB0aW9uIHguYWxhcm0gc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IHggc3RhY2sgPVxuICBcImNhbGxpbmdfc3RhY2s6IFwiXG4gIDo6IChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNvbCBzdHJpbmcgLT4gc3RyaW5nIDo6IFwiLCBcIiA6OiBzb2wpXG4gICAgICAgIChcIjsgXCIgOjogc3RyaW5nbGlzdF9vZl91bmNhdWdodCB4LnVuY2F1Z2h0X2V4Y2VwdGlvbiAoXCI7IFwiIDo6IHN0YWNrKSkpXG4gICAgICAgeC5jYWxsaW5nX3N0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0X2xpZ2h0IHggc3RhY2sgPVxuICAobWF0Y2ggeC5maWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgZmlsZV9uYW1lIC0+IFwiZmlsZV9uYW1lOiBcIiBeIGZpbGVfbmFtZSBeIFwiOyBcIilcbiAgOjogKG1hdGNoIHgubWVzc2FnZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgIHwgU29tZSBtZXNzYWdlIC0+IFwibWVzc2FnZTogXCIgXiBtZXNzYWdlIF4gXCI7IFwiKVxuICA6OiBcImV4Y2VwdGlvbjpcIlxuICA6OiBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4LmFsYXJtIHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX2NhdWdodF9saWdodCB4IHN0YWNrID1cbiAgXCJjYWxsaW5nX3N0YWNrOiBcIlxuICA6OiAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzb2wgc3RyaW5nIC0+IHN0cmluZyA6OiBcIiwgXCIgOjogc29sKVxuICAgICAgICAoXCI7IFwiXG4gICAgICAgIDo6IHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHRfbGlnaHQgeC51bmNhdWdodF9leGNlcHRpb24gKFwiOyBcIiA6OiBzdGFjaykpKVxuICAgICAgIHguY2FsbGluZ19zdGFja1xuXG50eXBlIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA9IHtcbiAgY2F1Z2h0X2Vycm9yX2xpc3Q6IGNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk6IGNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgdW5jYXVnaHRfZXJyb3JfbGlzdDogdW5jYXVnaHRfZXhjZXB0aW9uIGxpc3Q7XG4gIHVuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk6IHVuY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xufVxuXG5sZXQgdG9fanNvbiBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY2F1Z2h0XCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0LmNhdWdodF9lcnJvcl9saXN0ICk7XG4gICAgICAoIFwiY2F1Z2h0X3RvX3VpXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0LmNhdWdodF9lcnJvcl9saXN0X3RvX3VpICk7XG4gICAgICAoIFwidW5jYXVnaHRcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodC51bmNhdWdodF9lcnJvcl9saXN0ICk7XG4gICAgICAoIFwidW5jYXVnaHRfdG9fdWlcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodC51bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpICk7XG4gICAgXVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBjYXVnaHQgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKSAoTGlzdC5hc3NvYyBcImNhdWdodFwiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgY2F1Z2h0X3RvX3VpID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IGNhdWdodF9leGNlcHRpb25fb2ZfanNvbilcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJjYXVnaHRfdG9fdWlcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IHVuY2F1Z2h0ID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKSAoTGlzdC5hc3NvYyBcInVuY2F1Z2h0XCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCB1bmNhdWdodF90b191aSA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbilcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ1bmNhdWdodF90b191aVwiIGwpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBjYXVnaHRfZXJyb3JfbGlzdCA9IGNhdWdodDtcbiAgICAgICAgIGNhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gY2F1Z2h0X3RvX3VpO1xuICAgICAgICAgdW5jYXVnaHRfZXJyb3JfbGlzdCA9IHVuY2F1Z2h0O1xuICAgICAgICAgdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IHVuY2F1Z2h0X3RvX3VpO1xuICAgICAgIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJlcnJvciBoYW5kbGVyXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJlcnJvciBoYW5kbGVyXCIsIHgpKVxuXG5sZXQgZW1wdHlfZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID1cbiAge1xuICAgIGNhdWdodF9lcnJvcl9saXN0ID0gW107XG4gICAgY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSBbXTtcbiAgICB1bmNhdWdodF9lcnJvcl9saXN0ID0gW107XG4gICAgdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IFtdO1xuICB9XG5cbmxldCBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fdWkgdW5jYXVnaHQgZXJyb3IgPVxuICB7XG4gICAgZXJyb3Igd2l0aFxuICAgIHVuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSB1bmNhdWdodCA6OiBlcnJvci51bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpO1xuICB9XG5cbmxldCBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fb3RoZXJzIHVuY2F1Z2h0IGVycm9yID1cbiAgeyBlcnJvciB3aXRoIHVuY2F1Z2h0X2Vycm9yX2xpc3QgPSB1bmNhdWdodCA6OiBlcnJvci51bmNhdWdodF9lcnJvcl9saXN0IH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvciA/dG9fdWkgdW5jYXVnaHQgZXJyb3IgPVxuICBsZXQgZXJyb3IgPVxuICAgIG1hdGNoIHRvX3VpIHdpdGhcbiAgICB8IFNvbWUgZmFsc2UgfCBOb25lIC0+IGVycm9yXG4gICAgfCBTb21lIHRydWUgLT4gYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX3VpIHVuY2F1Z2h0IGVycm9yXG4gIGluXG4gIGFkZF91bmNhdWdodF9lcnJvcl90b19vdGhlcnMgdW5jYXVnaHQgZXJyb3JcblxubGV0IGdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgZXJyb3IgPSBlcnJvci5jYXVnaHRfZXJyb3JfbGlzdFxubGV0IGdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXJyb3IgPSBlcnJvci5jYXVnaHRfZXJyb3JfbGlzdF90b191aVxubGV0IGdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBlcnJvciA9IGVycm9yLnVuY2F1Z2h0X2Vycm9yX2xpc3RcbmxldCBnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXJyb3IgPSBlcnJvci51bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpXG5cbmxldCBpc19lbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgeCA9XG4gIHguY2F1Z2h0X2Vycm9yX2xpc3QgPSBbXSAmJiB4LnVuY2F1Z2h0X2Vycm9yX2xpc3QgPSBbXVxuIiwiKCoqXG4gICogY29uZmlnLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbi9BbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAwOC8wMy8yMDEwXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMjggMjAxOD5cbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzXG4gICogcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTVcbiAgKiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcblxubGV0IGRhdGUgPSBcIjwyMDE1LjAxLjIzXCJcbmxldCB2ZXJzaW9uID0gXCI0LjAxXCJcbmxldCBvdXRwdXRfZGlyZWN0b3J5ID0gcmVmIFwib3V0cHV0XCJcbmxldCBvdXRwdXRfY21fZGlyZWN0b3J5ID0gcmVmIFwib3V0cHV0XCJcbmxldCBvdXRwdXRfaW1fZGlyZWN0b3J5ID0gcmVmIFwib3V0cHV0XCJcbmxldCBvdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5ID0gcmVmIFwib3V0cHV0XCJcbmxldCB1bnNhZmUgPSByZWYgdHJ1ZVxubGV0IHRyYWNlID0gcmVmIGZhbHNlXG5sZXQgc3ludGF4X3ZlcnNpb24gPSByZWYgXCJWNFwiXG5sZXQgZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXIgPSByZWYgZmFsc2VcbmxldCBsb2cgPSByZWYgc3Rkb3V0XG5sZXQgZm9ybWF0dGVyID0gcmVmIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG5sZXQgZmlsZSA9IHJlZiAoTm9uZSA6IHN0cmluZyBvcHRpb24pXG5sZXQgbGlua19tb2RlID0gcmVmIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkJvdW5kX2luZGljZXNcblxuKCoqIGluZmx1ZW5jZSBtYXAgKilcbmxldCBkb19pbmZsdWVuY2VfbWFwID0gcmVmIHRydWVcblxubGV0IHJ1bGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxuXG5sZXQgcnVsZV9jb2xvciA9XG4gIHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgKCpcIiM4N2NlZWJcIiAoKiBsaWdodCBza3kgYmx1ZSAqKSopXG5cbmxldCB2YXJpYWJsZV9zaGFwZSA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlXG5cbmxldCB2YXJpYWJsZV9jb2xvciA9XG4gIHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gKCogXCIjOThmYjk4XCIgKCpQYWxlIGdyZWVuKikqKVxuXG5sZXQgY2VudGVyX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZFxubGV0IHdha2VfdXBfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gKCpcIiMwMGZmMDBcIiAoKkdyZWVuICopKilcbmxldCBpbmhpYml0aW9uX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAoKlwiI2ZmMDAwMFwiICgqcmVkKikqKVxubGV0IHdha2VfdXBfYXJyb3cgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG5sZXQgaW5oaWJpdGlvbl9hcnJvdyA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5UZWVcbmxldCBpbmZsdWVuY2VfbWFwX2ZpbGUgPSByZWYgXCJpbmZsdWVuY2VcIlxubGV0IGluZmx1ZW5jZV9tYXBfZm9ybWF0ID0gcmVmIFwiRE9UXCJcbmxldCBwcm9tcHRfZnVsbF92YXJfZGVmID0gcmVmIGZhbHNlXG5sZXQgcHJvbXB0X2Z1bGxfcnVsZV9kZWYgPSByZWYgZmFsc2VcblxubGV0IG1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3QgPVxuICByZWYgWyAnXFxcIicsIFsgJ1xcXFwnOyAnXFxcIicgXTsgJ1xcXFwnLCBbICdcXFxcJzsgJ1xcXFwnIF0gXVxuXG4oKiogY29udGFjdCBtYXAqKVxubGV0IGRvX2NvbnRhY3RfbWFwID0gcmVmIHRydWVcblxubGV0IGRvX3NjYyA9IHJlZiBmYWxzZVxubGV0IHB1cmVfY29udGFjdCA9IHJlZiBmYWxzZVxubGV0IGNvbnRhY3RfbWFwX2ZpbGUgPSByZWYgXCJjb250YWN0XCJcbmxldCBjb250YWN0X21hcF9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IGJpbmRpbmdfc2l0ZV9zaGFwZSA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGVcbmxldCBiaW5kaW5nX3NpdGVfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93XG5sZXQgaW50ZXJuYWxfc2l0ZV9zaGFwZSA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlXG5sZXQgaW50ZXJuYWxfc2l0ZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlblxubGV0IGNvdW50ZXJfc2l0ZV9zaGFwZSA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZVxubGV0IGNvdW50ZXJfc2l0ZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5XG5sZXQgYWdlbnRfc2hhcGVfYXJyYXkgPSByZWYgKFt8fF0gOiBHcmFwaF9sb2dnZXJzX3NpZy5zaGFwZSBvcHRpb24gYXJyYXkpXG5sZXQgYWdlbnRfY29sb3JfYXJyYXkgPSByZWYgKFt8fF0gOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb24gYXJyYXkpXG5sZXQgYWdlbnRfc2hhcGVfZGVmID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3RcbmxldCBhZ2VudF9jb2xvcl9kZWYgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZVxubGV0IGxpbmtfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2tcbmxldCBpbmZsdWVuY2VfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkXG5sZXQgaW5mbHVlbmNlX2Fycm93ID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuXG4oKipmbG93IG9mIGluZm9ybWF0aW9uOiBpbnRlcm5hbDsgZXh0ZXJuYWwgZmxvdyopXG5sZXQgZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPSByZWYgZmFsc2VcblxubGV0IGRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbiA9IHJlZiBmYWxzZVxuXG4oKmNvdmVyaW5nIGNsYXNzZXM6IHRoaXMgcGFyYW1ldGVyIGRvZXMgbm90IG1hdHRlciBpZiBpdCBpcyB0cnVlL2ZhbHNlKilcbmxldCBkb19zaXRlX2RlcGVuZGVuY2llcyA9IHJlZiBmYWxzZVxuXG4oKnNldCB0byB0cnVlIGlmIG9uZSB3YW50cyB0byBwcmludCBjb3ZlcmluZyBjbGFzc2VzKilcbmxldCBkdW1wX3NpdGVfZGVwZW5kZW5jaWVzID0gcmVmIGZhbHNlXG5cbigqUkVNQVJLOiBvbmUgbmVlZHMgdG8gc2V0IGRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyB0byB0cnVlIGZpcnN0IHRvIGJlXG4gIGFibGUgdG8gYWN0aXZlIGRpZmZlcmVudCBvdXRwdXQgKilcbmxldCBkb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaXR5X2FuYWx5c2lzID0gcmVmIFwiTG93XCJcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHQgPSByZWYgdHJ1ZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb24gPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsID0gcmVmIGZhbHNlXG5sZXQgaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXMgPSByZWYgdHJ1ZVxubGV0IGhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPSByZWYgdHJ1ZVxubGV0IHNtYXNoX3JlbGF0aW9ucyA9IHJlZiB0cnVlXG5sZXQgdXNlX25hdHVyYWxfbGFuZ3VhZ2UgPSByZWYgXCJrYXBwYVwiXG5sZXQgY29tcHV0ZV9sb2NhbF90cmFjZXMgPSByZWYgZmFsc2VcbmxldCBzaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID0gcmVmIHRydWVcbmxldCB1c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPSByZWYgZmFsc2VcbmxldCBhZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMgPSByZWYgZmFsc2VcbmxldCBhZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMgPSByZWYgZmFsc2VcbmxldCBkb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmdlcyA9IHJlZiBmYWxzZVxubGV0IGxvY2FsX3RyYWNlX3ByZWZpeCA9IHJlZiBcIkFnZW50X3RyYWNlX1wiXG5sZXQgbG9jYWxfdHJhY2VfZm9ybWF0ID0gcmVmIFwiRE9UXCJcbmxldCBjb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPSByZWYgZmFsc2VcblxuKCoqIGFjY3VyYWN5ICopXG5cbmxldCB3aXRoX3ZpZXdzX2FuYWx5c2lzID0gcmVmIHRydWVcbmxldCB3aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzID0gcmVmIHRydWVcbmxldCB3aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzID0gcmVmIHRydWVcbmxldCB3aXRoX2R5bmFtaWNfY29udGFjdF9tYXAgPSByZWYgXCJkeW5hbWljXCJcbmxldCB3aXRoX2NvdW50ZXJzX2FuYWx5c2lzID0gcmVmIHRydWVcbmxldCBjb3VudGVyX2FuYWx5c2lzX2RvbWFpbiA9IHJlZiBcIm1pXCJcbmxldCB2aWV3X2FjY3VyYWN5X2xldmVsID0gcmVmIFwiSGlnaFwiXG5sZXQgaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkRpcmVjdFwiXG5sZXQgY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJMb3dcIlxubGV0IHNjY19hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkhpZ2hcIlxuXG4oKiBTeW1tZXRyaWVzICopXG5sZXQgZG9fc3ltbWV0cmllcyA9IHJlZiBmYWxzZVxubGV0IHJhdGVfY29udmVudGlvbiA9IHJlZiBcImJpb2NoZW1pc3RcIlxuXG4oKiBCYWNrZG9vcnMgLSBzdGF0cyBmb3IgYmVuY2htYXJraW5nICopXG5sZXQgcHJpbnRfZWZmaWNpZW5jeSA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9zY2MgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl90aW1pbmcgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9maWxlID0gcmVmIFwiYmVuY2htYXJrLnRleFwiXG5sZXQgYmFja2Rvb3JfZGlyZWN0b3J5ID0gcmVmIFwiXCJcbiIsIigqKlxuICAqIHBhcmFtZXRlcnMubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uL0FudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDIwMTAsIHRoZSAxOXRoIG9mIERlY2VtYmVyXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKYW4gMDggMjAyMD5cbiAgKiAqXG4gICogQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBwYXNzZWQgdGhyb3VnaCBmdW5jdGlvbnMgY29tcHV0YXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG4oKiogaWYgdW5zYWZlID0gdHJ1ZSwgdGhlbiB3aGVuZXZlciBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCBhIGRlZmF1bHQgdmFsdWUgaXMgb3V0cHV0LCBhbmQgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCopXG5cbmxldCBhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X21lbnRpb25lZCBhIGV4dCA9XG4gIGxldCBzaXplX2EgPSBTdHJpbmcubGVuZ3RoIGEgaW5cbiAgbGV0IHNpemVfZXh0ID0gU3RyaW5nLmxlbmd0aCBleHQgaW5cbiAgdHJ5XG4gICAgaWYgc2l6ZV9hIDwgc2l6ZV9leHQgfHwgU3RyaW5nLnN1YiBhIChzaXplX2EgLSBzaXplX2V4dCkgc2l6ZV9leHQgPSBleHQgdGhlblxuICAgICAgYVxuICAgIGVsc2VcbiAgICAgIGEgXiBleHRcbiAgd2l0aCBfIC0+IGEgXiBleHRcblxubGV0IG9wZW5fb3V0IGEgZXh0ID1cbiAgKCogaXQgd291bGQgYmUgZWFzaWVyIHdpdGggT0NhbWwgMy4wNCAqKVxuICBsZXQgYSA9IGFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbWVudGlvbmVkIGEgZXh0IGluXG4gIGxldCBkID0gRmlsZW5hbWUuZGlybmFtZSBhIGluXG4gIGxldCAoKSA9XG4gICAgdHJ5XG4gICAgICBpZiBub3QgKFN5cy5pc19kaXJlY3RvcnkgZCkgdGhlbiAoXG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiJyVzJyBpcyBub3QgYSBkaXJlY3RvcnlALlwiIGQ7XG4gICAgICAgIGV4aXQgMVxuICAgICAgKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gS2FwcGFfZmlsZXMubWtfZGlyX3IgZFxuICBpblxuICBvcGVuX291dCBhXG5cbmxldCBvcGVuX2FwcGVuZCBhIGV4dCA9XG4gIGxldCBhID0gYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tZW50aW9uZWQgYSBleHQgaW5cbiAgbGV0IGQgPSBGaWxlbmFtZS5kaXJuYW1lIGEgaW5cbiAgbGV0ICgpID1cbiAgICB0cnlcbiAgICAgIGlmIG5vdCAoU3lzLmlzX2RpcmVjdG9yeSBkKSB0aGVuIChcbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCInJXMnIGlzIG5vdCBhIGRpcmVjdG9yeUAuXCIgZDtcbiAgICAgICAgZXhpdCAxXG4gICAgICApXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBLYXBwYV9maWxlcy5ta19kaXJfciBkXG4gIGluXG4gIHRyeSBvcGVuX291dF9nZW4gWyBPcGVuX2FwcGVuZCBdIDUxMSBhIHdpdGggXyAtPiBvcGVuX291dCBhIGV4dFxuXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcblxubGV0IGV4dF9mb3JtYXQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVCAtPiBcIi5kb3RcIlxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUwgLT4gXCIuaHRtbFwiXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRElNIC0+IFwiLmRpbS5qc29uXCJcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5HRVBISSAtPiBcIi5nZXhmXCJcblxubGV0IGZldGNoX2xldmVsX2dlbiBzIHIgPVxuICBtYXRjaCBUb29scy5sb3dlcmNhc2UgIXIgd2l0aFxuICB8IFwibXV0ZVwiIHwgXCJub25lXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uZVxuICB8IFwibG93XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93XG4gIHwgXCJtZWRpdW1cIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW1cbiAgfCBcImhpZ2hcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoXG4gIHwgXCJjb21wbGV0ZVwiIHwgXCJmdWxsXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbFxuICB8IHggLT5cbiAgICBsZXQgKCkgPSBQcmludGYuZXByaW50ZiBcIiVzOiAlcyBpcyBub3QgYSB2YWxpZCBsZXZlbCAhISFcIiBzIHggaW5cbiAgICByYWlzZSBFeGl0XG5cbmxldCBmZXRjaF9ncmFwaF9mb3JtYXQgZiA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhZiB3aXRoXG4gIHwgXCJkb3RcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1RcbiAgfCBcImh0bWxcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IVE1MXG4gIHwgXCJkaW1cIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU1cbiAgfCBcImdlcGhpXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuR0VQSElcbiAgfCB4IC0+XG4gICAgbGV0ICgpID0gUHJpbnRmLmVwcmludGYgXCIlcyBpcyBub3QgYSB2YWxpZCBncmFwaCBmb3JtYXQgISEhXCIgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGZldGNoX2FjY3VyYWN5X2xldmVsIHIgPSBmZXRjaF9sZXZlbF9nZW4gXCJhbiBhY2N1cmFjeVwiIHJcbmxldCBmZXRjaF92ZXJib3NpdHlfbGV2ZWwgciA9IGZldGNoX2xldmVsX2dlbiBcImEgdmVyYm9zaXR5XCIgclxuXG5sZXQgZmV0Y2hfcmF0ZV9jb252ZW50aW9uIGYgPVxuICBtYXRjaCBUb29scy5sb3dlcmNhc2UgIWYgd2l0aFxuICB8IFwia2FzaW1cIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob19jb3JyZWN0aW9uXG4gIHwgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcbiAgfCBcImJpb2NoZW1pc3RcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5CaW9jaGVtaXN0XG4gIHwgeCAtPlxuICAgIGxldCAoKSA9IFByaW50Zi5lcHJpbnRmIFwiJXMgaXMgbm90IGEgdmFsaWQgcmF0ZSBjb252ZW50aW9uICEhIVwiIHggaW5cbiAgICByYWlzZSBFeGl0XG5cbmxldCBnZXRfc3ludGF4X3ZlcnNpb24gKCkgPVxuICBtYXRjaCAhQ29uZmlnLnN5bnRheF92ZXJzaW9uIHdpdGhcbiAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiBBc3QuVjRcbiAgfCBcIjNcIiB8IFwidjNcIiB8IFwiVjNcIiAtPiBBc3QuVjNcbiAgfCBfIC0+IGZhaWx3aXRoIFwiU3ludGF4IHZlcnNpb24gc2hvdWxkIGJlIGVpdGhlciBWMyBvciBWNFwiXG5cbmxldCBnZXRfc3ltYm9scyAoKSA9XG4gIG1hdGNoIGdldF9zeW50YXhfdmVyc2lvbiAoKSB3aXRoXG4gIHwgQXN0LlYzIC0+IFN5bWJvbF90YWJsZS5zeW1ib2xfdGFibGVfVjNcbiAgfCBBc3QuVjQgLT4gU3ltYm9sX3RhYmxlLnN5bWJvbF90YWJsZV9WNFxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXAgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZm9ybWF0ID1cbiAgICAgIGZldGNoX2dyYXBoX2Zvcm1hdCBDb25maWcuaW5mbHVlbmNlX21hcF9mb3JtYXQ7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZmlsZSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5pbmZsdWVuY2VfbWFwX2ZpbGUgd2l0aFxuICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgIHwgeCAtPiBTb21lIHgpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2RpcmVjdG9yeSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfaW1fZGlyZWN0b3J5IHdpdGhcbiAgICAgIHwgXCJcIiAtPiBTb21lIFwiXCJcbiAgICAgIHwgeCAtPiBTb21lICh4IF4gXCIvXCIpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ydWxlX3NoYXBlID0gIUNvbmZpZy5ydWxlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfY29sb3IgPSAhQ29uZmlnLnJ1bGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfc2hhcGUgPSAhQ29uZmlnLnZhcmlhYmxlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX2NvbG9yID0gIUNvbmZpZy52YXJpYWJsZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2NvbG9yID0gIUNvbmZpZy53YWtlX3VwX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fY29sb3IgPSAhQ29uZmlnLmluaGliaXRpb25fY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcud2FrZV91cF9hcnJvdyA9ICFDb25maWcud2FrZV91cF9hcnJvdztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2Fycm93ID0gIUNvbmZpZy5pbmhpYml0aW9uX2Fycm93O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb21wdF9mdWxsX3Zhcl9kZWYgPSAhQ29uZmlnLnByb21wdF9mdWxsX3Zhcl9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfcnVsZV9kZWYgPSAhQ29uZmlnLnByb21wdF9mdWxsX3J1bGVfZGVmO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGEsIGwpIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkNoYXJNYXAuYWRkIGEgbCBtYXApXG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkNoYXJNYXAuZW1wdHlcbiAgICAgICAgIUNvbmZpZy5tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90O1xuICB9XG5cbmxldCBnZXRfY29udGFjdF9tYXAgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZm9ybWF0ID1cbiAgICAgIGZldGNoX2dyYXBoX2Zvcm1hdCBDb25maWcuY29udGFjdF9tYXBfZm9ybWF0O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2ZpbGUgPVxuICAgICAgKG1hdGNoICFDb25maWcuY29udGFjdF9tYXBfZmlsZSB3aXRoXG4gICAgICB8IFwiXCIgLT4gTm9uZVxuICAgICAgfCB4IC0+IFNvbWUgeCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZGlyZWN0b3J5ID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9jbV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgfCBcIlwiIC0+IFNvbWUgXCJcIlxuICAgICAgfCB4IC0+IFNvbWUgKHggXiBcIi9cIikpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnB1cmVfY29udGFjdCA9ICFDb25maWcucHVyZV9jb250YWN0O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJpbmRpbmdfc2l0ZV9zaGFwZSA9ICFDb25maWcuYmluZGluZ19zaXRlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJpbmRpbmdfc2l0ZV9jb2xvciA9ICFDb25maWcuYmluZGluZ19zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfc2hhcGUgPSAhQ29uZmlnLmludGVybmFsX3NpdGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9jb2xvciA9ICFDb25maWcuaW50ZXJuYWxfc2l0ZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX3NpdGVfc2hhcGUgPSAhQ29uZmlnLmNvdW50ZXJfc2l0ZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX3NpdGVfY29sb3IgPSAhQ29uZmlnLmNvdW50ZXJfc2l0ZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9hcnJheSA9ICFDb25maWcuYWdlbnRfc2hhcGVfYXJyYXk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfYXJyYXkgPSAhQ29uZmlnLmFnZW50X2NvbG9yX2FycmF5O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X3NoYXBlX2RlZiA9ICFDb25maWcuYWdlbnRfc2hhcGVfZGVmO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2RlZiA9ICFDb25maWcuYWdlbnRfY29sb3JfZGVmO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfY29sb3IgPSAhQ29uZmlnLmxpbmtfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX2NvbG9yID0gIUNvbmZpZy5pbmZsdWVuY2VfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX2Fycm93ID0gIUNvbmZpZy5pbmZsdWVuY2VfYXJyb3c7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMCA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHQgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb24gPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19jb3ZlcmluZ19jbGFzc2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICAgICAgZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaWdub3JlX3RyaXZpYWxfbG9zYW5nZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zbWFzaF9yZWxhdGlvbnMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9XG4gICAgICB0cnVlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlID0gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FwcGE7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0X2Zvcl9sb2NhbF90cmFjZXMgPVxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX3ByZWZpeCA9IFwiQWdlbnRfdHJhY2VfXCI7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfZGlyZWN0b3J5ID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgeCAtPiB4IF4gXCIvXCIpO1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzEgPVxuICB7XG4gICAgcmVhY2hhYmlsaXR5X21hcF8wIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHQgPSB0cnVlO1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzIgPVxuICB7XG4gICAgcmVhY2hhYmlsaXR5X21hcF8xIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb24gPSB0cnVlO1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzMgPVxuICB7XG4gICAgcmVhY2hhYmlsaXR5X21hcF8yIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmID0gdHJ1ZTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF80ID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMyB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPSB0cnVlO1xuICB9XG5cbmxldCBhZGRfZGVidWdnaW5nX3BhcmFtZXRlcnNfdG9fcmVhY2hhYmlsaXR5X21hcCByZWFjaGFiaWxpdHkgPVxuICBsZXQgdHJhY2UgPSAhQ29uZmlnLnRyYWNlIGluXG4gIGxldCByZWFjaGFiaWxpdHkgPVxuICAgIHtcbiAgICAgIHJlYWNoYWJpbGl0eSB3aXRoXG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9XG4gICAgICAgICFDb25maWcuaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uID1cbiAgICAgICAgIUNvbmZpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc21hc2hfcmVsYXRpb25zID0gIUNvbmZpZy5zbWFzaF9yZWxhdGlvbnM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSA9XG4gICAgICAgIChtYXRjaCAhQ29uZmlnLnVzZV9uYXR1cmFsX2xhbmd1YWdlIHdpdGhcbiAgICAgICAgfCBcInJhd1wiIHwgXCJSQVdcIiB8IFwiUmF3XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuUmF3XG4gICAgICAgIHwgXCJrYXBwYVwiIHwgXCJLQVBQQVwiIHwgXCJLYXBwYVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhXG4gICAgICAgIHwgXCJFbmdsaXNoXCIgfCBcIkVOR0xJU0hcIiB8IFwiZW5nbGlzaFwiIC0+XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTmF0dXJhbF9sYW5ndWFnZVxuICAgICAgICB8IF8gLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FwcGEpO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9sb2NhbF90cmFjZXMgPVxuICAgICAgICAhQ29uZmlnLmNvbXB1dGVfbG9jYWxfdHJhY2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID1cbiAgICAgICAgIUNvbmZpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pZ25vcmVfdHJpdmlhbF9sb3NhbmdlcyA9XG4gICAgICAgICFDb25maWcuZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMgPVxuICAgICAgICAhQ29uZmlnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9XG4gICAgICAgICFDb25maWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgICFDb25maWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgICFDb25maWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0X2Zvcl9sb2NhbF90cmFjZXMgPVxuICAgICAgICBmZXRjaF9ncmFwaF9mb3JtYXQgQ29uZmlnLmxvY2FsX3RyYWNlX2Zvcm1hdDtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX3ByZWZpeCA9ICFDb25maWcubG9jYWxfdHJhY2VfcHJlZml4O1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfZGlyZWN0b3J5ID1cbiAgICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICAgIHwgeCAtPiB4IF4gXCIvXCIpO1xuICAgIH1cbiAgaW5cbiAgaWYgdHJhY2UgdGhlblxuICAgIHtcbiAgICAgIHJlYWNoYWJpbGl0eSB3aXRoXG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19jb3ZlcmluZ19jbGFzc2VzID1cbiAgICAgICAgIUNvbmZpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19jb3ZlcmluZ19jbGFzc2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljID1cbiAgICAgICAgIUNvbmZpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID1cbiAgICAgICAgIUNvbmZpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljO1xuICAgIH1cbiAgZWxzZVxuICAgIHJlYWNoYWJpbGl0eVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9tYXAgKCkgPVxuICBhZGRfZGVidWdnaW5nX3BhcmFtZXRlcnNfdG9fcmVhY2hhYmlsaXR5X21hcFxuICAgIChtYXRjaFxuICAgICAgIGZldGNoX3ZlcmJvc2l0eV9sZXZlbCBDb25maWcudmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXNcbiAgICAgd2l0aFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uZSAtPiByZWFjaGFiaWxpdHlfbWFwXzBcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvdyAtPiByZWFjaGFiaWxpdHlfbWFwXzFcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bSAtPiByZWFjaGFiaWxpdHlfbWFwXzJcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2ggLT4gcmVhY2hhYmlsaXR5X21hcF8zXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsIC0+IHJlYWNoYWJpbGl0eV9tYXBfNClcblxubGV0IGdldF9yZWFjaGFiaWxpdHlfcGFyYW1ldGVycyAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3cyA9ICFDb25maWcud2l0aF92aWV3c19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaXRlX2Fjcm9zc19ib25kcyA9XG4gICAgICAhQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYWxsZWxfYm9uZHMgPVxuICAgICAgIUNvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJzID0gIUNvbmZpZy53aXRoX2NvdW50ZXJzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR5bmFtaWNfY29udGFjdF9tYXAgPVxuICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLndpdGhfZHluYW1pY19jb250YWN0X21hcCB3aXRoXG4gICAgICB8IFwiZHluYW1pY1wiIC0+IHRydWVcbiAgICAgIHwgXCJzdGF0aWNcIiAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfZG9tYWluID1cbiAgICAgIChtYXRjaCBUb29scy5sb3dlcmNhc2UgIUNvbmZpZy5jb3VudGVyX2FuYWx5c2lzX2RvbWFpbiB3aXRoXG4gICAgICB8IFwibWlcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NaVxuICAgICAgfCBcIm9jdGFnb25cIiB8IFwib2N0XCIgfCBcIm9jdG9cIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5PY3RhZ29uc1xuICAgICAgfCBcImFic3RyYWN0LW11bHRpc2V0XCIgfCBcImFtXCIgfCBcImFic3RyYWN0X211bHRpc2V0XCIgLT5cbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQWJzdHJhY3RfbXVsdGlzZXRcbiAgICAgIHwgXCJub24tcmVsYXRpb25hbFwiIHwgXCJuclwiIHwgXCJub24tcmVsXCIgfCBcIm5vbl9yZWxcIiB8IFwibm9uX3JlbGF0aW9uYWxcIiAtPlxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25fcmVsYXRpb25hbFxuICAgICAgfCBfIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1pKTtcbiAgfVxuXG5sZXQgb3Blbl90YXNrc19wcm9maWxpbmcgPVxuICBsZXQgY2FjaGUgPSByZWYgTm9uZSBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAhY2FjaGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGNoYW5uZWwgPSBLYXBwYV9maWxlcy5vcGVuX3Rhc2tzX3Byb2ZpbGluZyAoKSBpblxuICAgICAgbGV0ICgpID0gY2FjaGUgOj0gU29tZSBjaGFubmVsIGluXG4gICAgICBjaGFubmVsXG4gICAgfCBTb21lIGNoYW5uZWwgLT4gY2hhbm5lbFxuXG5sZXQgZmV0Y2hfYmFja2Rvb3JzICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9zY2MgPSAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9zY2M7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2M7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnXG4gICAgLmJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl90aW1pbmcgPSAhQ29uZmlnLmJhY2tkb29yX3RpbWluZztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9maWxlID0gIUNvbmZpZy5iYWNrZG9vcl9maWxlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2RpcmVjdG9yeSA9ICFDb25maWcuYmFja2Rvb3JfZGlyZWN0b3J5O1xuICB9XG5cbmxldCBnZXRfcGFyYW1ldGVycyA/KGh0bWxfbW9kZSA9IHRydWUpIH5jYWxsZWRfZnJvbSAoKSA9XG4gIGxldCBjaGFubmVsLCBjaGFubmVsX2VyciwgY2hhbm5lbF9iYWNrZG9vciwgaHRtbF9tb2RlLCBjb21tYW5kID1cbiAgICBtYXRjaCBjYWxsZWRfZnJvbSB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgLT5cbiAgICAgIE5vbmUsIE5vbmUsIE5vbmUsIGZhbHNlIHx8IGh0bWxfbW9kZSwgW3wgXCJLYVNhXCI7IFwiKEludGVycmFjdGl2ZSBtb2RlKVwiIHxdXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5JbnRlcm5hbGlzZWQgLT5cbiAgICAgICggU29tZSBzdGRvdXQsXG4gICAgICAgIFNvbWUgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgIFNvbWUgc3Rkb3V0LFxuICAgICAgICBmYWxzZSB8fCBodG1sX21vZGUsXG4gICAgICAgIFN5cy5hcmd2IClcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2ltIC0+XG4gICAgICBTb21lIChvcGVuX3Rhc2tzX3Byb2ZpbGluZyAoKSksIE5vbmUsIE5vbmUsIGZhbHNlIHx8IGh0bWxfbW9kZSwgU3lzLmFyZ3ZcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgLT5cbiAgICAgICggKG1hdGNoXG4gICAgICAgICAgICFDb25maWcub3V0cHV0X2RpcmVjdG9yeSwgXCJwcm9maWxpbmdcIiwgXCIuaHRtbFwiXG4gICAgICAgICAgICgqdGVtcG9yYXJ5LCB0byBkbzogcHJvdmlkZSBhIHBhcmFtZXRlcmlzYWJsZSBmaWxlbmFtZSopXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgXywgXCJcIiwgXyAtPiBTb21lIHN0ZG91dFxuICAgICAgICB8IFwiXCIsIGEsIGV4dCAtPiBTb21lIChvcGVuX291dCBhIGV4dClcbiAgICAgICAgfCBhLCBiLCBleHQgLT4gU29tZSAob3Blbl9vdXQgKGEgXiBcIi9cIiBeIGIpIGV4dCkpLFxuICAgICAgICBTb21lIEZvcm1hdC5lcnJfZm9ybWF0dGVyLFxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgKCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlc1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3NjY1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlc1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgIHx8ICFDb25maWdcbiAgICAgICAgICAgICAgICAgLmJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX3RpbWluZ1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMsXG4gICAgICAgICAgICAgIUNvbmZpZy5iYWNrZG9vcl9kaXJlY3RvcnksXG4gICAgICAgICAgICAgIUNvbmZpZy5iYWNrZG9vcl9maWxlLFxuICAgICAgICAgICAgIFwiLnRleFwiIClcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBmYWxzZSwgXywgXywgXyAtPiBOb25lXG4gICAgICAgIHwgXywgXywgXCJcIiwgXyAtPiBTb21lIHN0ZG91dFxuICAgICAgICB8IF8sIFwiXCIsIGEsIGV4dCAtPiBTb21lIChvcGVuX2FwcGVuZCBhIGV4dClcbiAgICAgICAgfCBfLCBhLCBiLCBleHQgLT4gU29tZSAob3Blbl9hcHBlbmQgKGEgXiBcIi9cIiBeIGIpIGV4dCkpLFxuICAgICAgICBmYWxzZSB8fCBodG1sX21vZGUsXG4gICAgICAgIFN5cy5hcmd2IClcbiAgaW5cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICB7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnN5bnRheF92ZXJzaW9uID0gZ2V0X3N5bnRheF92ZXJzaW9uICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19jb250YWN0X21hcCA9ICFDb25maWcuZG9fY29udGFjdF9tYXA7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NjYyA9ICFDb25maWcuZG9fc2NjO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19pbmZsdWVuY2VfbWFwID0gIUNvbmZpZy5kb19pbmZsdWVuY2VfbWFwO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgIUNvbmZpZy5kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbjtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAhQ29uZmlnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbjtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2l0ZV9kZXBlbmRlbmNpZXMgPVxuICAgICAgICAgICFDb25maWcuZG9fc2l0ZV9kZXBlbmRlbmNpZXM7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N5bW1ldHJpZXNfYW5hbHlzaXMgPSAhQ29uZmlnLmRvX3N5bW1ldHJpZXM7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJhdGVfY29udmVudGlvbiA9XG4gICAgICAgICAgZmV0Y2hfcmF0ZV9jb252ZW50aW9uIENvbmZpZy5yYXRlX2NvbnZlbnRpb247XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfc2l0ZV9kZXBlbmRlbmNpZXMgPVxuICAgICAgICAgICFDb25maWcuZHVtcF9zaXRlX2RlcGVuZGVuY2llcztcbiAgICAgICAgKCpkaWZmZXJlbnQgcmVhY2hhYmlsaXR5IG91dHB1dCopXG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyA9XG4gICAgICAgICAgIUNvbmZpZy5kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXM7XG4gICAgICAgICgqR0VUIFNZTUJPTFMqKVxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5maWxlID0gIUNvbmZpZy5maWxlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW1ib2xzID0gZ2V0X3N5bWJvbHMgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9tYXBfb3V0cHV0ID0gZ2V0X2luZmx1ZW5jZV9tYXAgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX291dHB1dCA9IGdldF9jb250YWN0X21hcCAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgPVxuICAgICAgICAgIGdldF9yZWFjaGFiaWxpdHlfbWFwICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVycyA9XG4gICAgICAgICAgZ2V0X3JlYWNoYWJpbGl0eV9wYXJhbWV0ZXJzICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51bnNhZmUgPSAhQ29uZmlnLnVuc2FmZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2UgPSAhQ29uZmlnLnRyYWNlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1ciA9XG4gICAgICAgICAgIUNvbmZpZy5kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1cjtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJlZml4ID0gXCJcIjtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbF9zdGFjayA9IFtdO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5saW5rX21vZGUgPSAhQ29uZmlnLmxpbmtfbW9kZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcua2FzYV9zdGF0ZSA9XG4gICAgICAgICAgUmVtYW5lbnRfc3RhdGVfc2lnbmF0dXJlLmVtcHR5X2VuZ2luZV9zdGF0ZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGF1bmNoaW5nX2RhdGUgPVxuICAgICAgICAgIFVuaXgubG9jYWx0aW1lIChVbml4LmdldHRpbWVvZmRheSAoKSk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRpbWVfc2hpZnQgPVxuICAgICAgICAgIChsZXQgeCA9IFVuaXguZ2V0dGltZW9mZGF5ICgpIGluXG4gICAgICAgICAgIChVbml4LmxvY2FsdGltZSB4KS5Vbml4LnRtX2hvdXIgLSAoVW5peC5nbXRpbWUgeCkuVW5peC50bV9ob3VyKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaG9zdG5hbWUgPVxuICAgICAgICAgICh0cnkgVW5peC5nZXRob3N0bmFtZSAoKSB3aXRoIF8gLT4gXCJqYXZhc2NyaXB0XCIpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21tYW5kX2xpbmUgPSBjb21tYW5kO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG9ydF92ZXJzaW9uID0gVmVyc2lvbi52ZXJzaW9uX3N0cmluZztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmVyc2lvbiA9IFZlcnNpb24udmVyc2lvbl9rYXNhX2Z1bGxfbmFtZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGtfaW50ZXJmYWNlID0gIVZlcnNpb24udGtfaXNfaW5pdGlhbGl6ZWQ7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICAgICAgICAgIChtYXRjaCBUb29scy5sb3dlcmNhc2UgIUNvbmZpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsIHdpdGhcbiAgICAgICAgICB8IFwiaW5kaXJlY3RcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3dcbiAgICAgICAgICB8IFwiZGlyZWN0XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtXG4gICAgICAgICAgfCBcInJlYWxpc2FibGVcIiB8IFwicmVhbGl6YWJsZVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2hcbiAgICAgICAgICB8IF8gLT4gZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zY2NfYWNjdXJhY3lfbGV2ZWwgPVxuICAgICAgICAgIGZldGNoX2FjY3VyYWN5X2xldmVsIENvbmZpZy5zY2NfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdfYWNjdXJhY3lfbGV2ZWwgPVxuICAgICAgICAgIGZldGNoX2FjY3VyYWN5X2xldmVsIENvbmZpZy52aWV3X2FjY3VyYWN5X2xldmVsO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaHRtbF9tb2RlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5lbXB0eV9oYXNodGJsX3NpemUgPSAxO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcnMgPSBmZXRjaF9iYWNrZG9vcnMgKCk7XG4gICAgICB9O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfZXJyb3JfbGlzdCA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhciA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgPVxuICAgICAgKG1hdGNoIGNoYW5uZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIF8gLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciAhQ29uZmlnLmZvcm1hdHRlcik7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyX2VyciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbF9lcnIgd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGZtdCAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIGZtdCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyX2JhY2tkb29yID1cbiAgICAgIChtYXRjaCBjaGFubmVsX2JhY2tkb29yIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXJcbiAgICAgIHwgU29tZSBjaGFubmVsIC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIGNoYW5uZWwpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXByZXNzaW9uX3N0YXR1cyA9IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmludF9lZmZpY2llbmN5ID0gIUNvbmZpZy5wcmludF9lZmZpY2llbmN5O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb2ZpbGVyID1cbiAgICAgIChtYXRjaCBjaGFubmVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXJcbiAgICAgIHwgU29tZSBhIC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuSFRNTF9UYWJ1bGFyIGEpO1xuICB9XG5cbmxldCBkdW1teV9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbSA9XG4gIGxldCBjYWNoZSA9IHJlZiBOb25lIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFjYWNoZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgcCA9IGdldF9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbSAoKSBpblxuICAgICAgbGV0ICgpID0gY2FjaGUgOj0gU29tZSBwIGluXG4gICAgICBwXG4gICAgfCBTb21lIHAgLT4gcFxuXG5sZXQgZ2V0X2JvdW5kX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYm91bmRcbmxldCBnZXRfb3Blbl9iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2JpbmRpbmdfc3RhdGVcbmxldCBnZXRfY2xvc2VfYmluZGluZ19zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfYmluZGluZ19zdGF0ZVxuXG5sZXQgZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZV8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUubWlzc2luZ19iaW5kaW5nX3N0YXRlXG5cbmxldCBnZXRfbGlua190b19hbnlfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmxpbmtfdG9fYW55XG5sZXQgZ2V0X2xpbmtfdG9fc29tZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubGlua190b19zb21lXG5cbmxldCBnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5pbnRlcm5hbF9zdGF0ZV9zeW1ib2xcblxubGV0IGdldF9vcGVuX2ludGVybmFsX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludGVybmFsX3N0YXRlXG5sZXQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9pbnRlcm5hbF9zdGF0ZVxubGV0IGdldF9mcmVlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5mcmVlXG5sZXQgZ2V0X2F0X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYXRcbmxldCBnZXRfYWdlbnRfb3Blbl9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X29wZW5cbmxldCBnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9jbG9zZVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2xfMSBzeW1ib2wgPVxuICBmc3Qgc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9zZXBfY29tbWFcblxubGV0IGdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2xfMSBzeW1ib2wgPSBmc3Qgc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9zZXBfcGx1c1xubGV0IGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbF8xIHN5bWJvbCA9IGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9kb3RcbmxldCBnZXRfYnR5cGVfc2VwX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYnR5cGVfc2VwXG5sZXQgZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbF8xIHN5bWJvbCA9IGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLnNpdGVfc2VwXG5sZXQgZ2V0X2dob3N0X2FnZW50X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuZ2hvc3RfYWdlbnRcbmxldCBnZXRfZG9fd2Vfc2hvd19naG9zdF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuc2hvd19naG9zdFxubGV0IGdldF91bmlfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS51bmlfYXJyb3dcbmxldCBnZXRfcmV2X2Fycm93X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUucmV2X2Fycm93XG5sZXQgZ2V0X2JpX2Fycm93X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYmlfYXJyb3dcbmxldCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJpX2Fycm93X25vcG9seVxubGV0IGdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnVuaV9hcnJvd19ub3BvbHlcbmxldCBnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5yZXZfYXJyb3dfbm9wb2x5XG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmVcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHlcblxubGV0IGdldF9wbHVzX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUucGx1c19pbmZpbml0eVxubGV0IGdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm1pbnVzX2luZmluaXR5XG5cbmxldCBnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmludF9pbnRlcnZhbF9zZXBhcmF0b3JcblxubGV0IGdldF9vcGVuX2NvdW50ZXJfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcl9zdGF0ZVxubGV0IGdldF9vcGVuX2NvdW50ZXJjZXFfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcmNlcVxubGV0IGdldF9vcGVuX2NvdW50ZXJjdmFyXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJjdmFyXG5sZXQgZ2V0X29wZW5fY291bnRlcmNndGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcmNndGVcbmxldCBnZXRfb3Blbl9jb3VudGVyZGVsdGFfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcmRlbHRhXG5sZXQgZ2V0X29wZW5fY291bnRlcnZhbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVydmFsXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJfc3RhdGVcbmxldCBnZXRfY2xvc2VfY291bnRlcmNlcV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcmNlcVxubGV0IGdldF9jbG9zZV9jb3VudGVyY3Zhcl8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcmN2YXJcbmxldCBnZXRfY2xvc2VfY291bnRlcmNndGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJjZ3RlXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcmRlbHRhXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJ2YWxfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJ2YWxcbmxldCBnZXRfY291bnRlcmNlcV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJjZXFfc3ltYm9sXG5sZXQgZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmN2YXJfc3ltYm9sXG5sZXQgZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmNndGVfc3ltYm9sXG5cbmxldCBnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXG5cbmxldCBnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyZGVsdGFtaW51c19zeW1ib2xcblxubGV0IGdldF9jb3VudGVydmFsX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcnZhbF9zeW1ib2xcblxuKCpJbmZsdWVuY2UqKVxubGV0IGdldF9pbV9mb3JtYXRfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZm9ybWF0XG5sZXQgZ2V0X2ltX2ZpbGVfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZmlsZVxuXG5sZXQgZ2V0X2ltX2RpcmVjdG9yeV8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9kaXJlY3RvcnlcblxubGV0IGdldF9ydWxlX3NoYXBlXzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfc2hhcGVcbmxldCBnZXRfcnVsZV9jb2xvcl8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ydWxlX2NvbG9yXG5cbmxldCBnZXRfdmFyaWFibGVfc2hhcGVfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfc2hhcGVcblxubGV0IGdldF92YXJpYWJsZV9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9jb2xvclxuXG5sZXQgZ2V0X3dha2VfdXBfY29sb3JfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcud2FrZV91cF9jb2xvclxuXG5sZXQgZ2V0X2luaGliaXRpb25fY29sb3JfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9jb2xvclxuXG5sZXQgZ2V0X3dha2VfdXBfYXJyb3dfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcud2FrZV91cF9hcnJvd1xuXG5sZXQgZ2V0X2luaGliaXRpb25fYXJyb3dfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9hcnJvd1xuXG5sZXQgZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWZfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfdmFyX2RlZlxuXG5sZXQgZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb21wdF9mdWxsX3J1bGVfZGVmXG5cbmxldCBnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYWtlX2xhYmVsc19jb21wYXRpYmxlXG5cbmxldCBnZXRfcHVyZV9jb250YWN0XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wdXJlX2NvbnRhY3RcbmxldCBnZXRfY21fZm9ybWF0XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9mb3JtYXRcbmxldCBnZXRfY21fZmlsZV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZmlsZVxubGV0IGdldF9jbV9kaXJlY3RvcnlfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2RpcmVjdG9yeVxubGV0IGdldF9iaW5kaW5nX3NpdGVfc2hhcGVfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJpbmRpbmdfc2l0ZV9zaGFwZVxubGV0IGdldF9iaW5kaW5nX3NpdGVfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJpbmRpbmdfc2l0ZV9jb2xvclxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMSBjbSA9XG4gIGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfc2hhcGVcblxubGV0IGdldF9pbnRlcm5hbF9zaXRlX2NvbG9yXzEgY20gPVxuICBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX2NvbG9yXG5cbmxldCBnZXRfY291bnRlcl9zaXRlX3NoYXBlXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX3NpdGVfc2hhcGVcbmxldCBnZXRfY291bnRlcl9zaXRlX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX3NpdGVfY29sb3JcbmxldCBnZXRfYWdlbnRfc2hhcGVfYXJyYXlfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X3NoYXBlX2FycmF5XG5sZXQgZ2V0X2FnZW50X2NvbG9yX2FycmF5XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9hcnJheVxubGV0IGdldF9hZ2VudF9zaGFwZV9kZWZfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X3NoYXBlX2RlZlxubGV0IGdldF9hZ2VudF9jb2xvcl9kZWZfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2RlZlxubGV0IGdldF9saW5rX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5saW5rX2NvbG9yXG5sZXQgZ2V0X2luZmx1ZW5jZV9jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX2NvbG9yXG5sZXQgZ2V0X2luZmx1ZW5jZV9hcnJvd18xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX2Fycm93XG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0XzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0XG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pY18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWNcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZlxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xcblxubGV0IGdldF9zbWFzaF9yZWxhdGlvbnNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zbWFzaF9yZWxhdGlvbnNcblxubGV0IGdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvblxuXG5sZXQgZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXNcblxubGV0IGdldF9wb3N0X3Byb2Nlc3NpbmdfMSByID1cbiAgbWF0Y2ggci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSB3aXRoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuUmF3IC0+IGZhbHNlXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FwcGEgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5OYXR1cmFsX2xhbmd1YWdlIC0+XG4gICAgdHJ1ZVxuXG5sZXQgZ2V0X2JhY2tlbmRfbW9kZV8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0X2Zvcl9sb2NhbF90cmFjZXNcblxubGV0IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXG5cbmxldCBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzEgciBiID1cbiAgeyByIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gYiB9XG5cbmxldCBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbl9pbl9sb2NhbF90cmFjZXNfMSByIGIgPVxuICB7IHIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPSBiIH1cblxubGV0IGdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmlnbm9yZV90cml2aWFsX2xvc2FuZ2VzXG5cbmxldCBnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXNcblxubGV0IGdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXNcblxubGV0IGdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXNcblxubGV0IGdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXNcblxubGV0IGdldF9sb2NhbF90cmFjZV9wcmVmaXhfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9wcmVmaXhcbmxldCBnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5XzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfZGlyZWN0b3J5XG5sZXQgZ2V0X3ZpZXdfYW5hbHlzaXNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3c1xuXG5sZXQgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2l0ZV9hY3Jvc3NfYm9uZHNcblxubGV0IGdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFsbGVsX2JvbmRzXG5sZXQgZ2V0X2R5bmFtaWNfY29udGFjdF9tYXBfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5keW5hbWljX2NvbnRhY3RfbWFwXG5sZXQgZ2V0X2NvdW50ZXJzX2FuYWx5c2lzXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcnNcbmxldCBnZXRfY291bnRlcnNfZG9tYWluXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9kb21haW5cblxubGV0IGdldF9jb21wdXRlX3N5bW1ldHJpZXNfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zeW1tZXRyaWVzX2FuYWx5c2lzXG5cbmxldCBnZXRfcmF0ZV9jb252ZW50aW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmF0ZV9jb252ZW50aW9uXG5cbmxldCBnZXRfZW1wdHlfaGFzaHRibF9zaXplXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZW1wdHlfaGFzaHRibF9zaXplXG5cbmxldCBnZXRfc3ltYm9sc18xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnN5bWJvbHNcbmxldCBnZXRfZmlsZV8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZpbGVcblxubGV0IGdldF9pbmZsdWVuY2VfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9vdXRwdXRcblxubGV0IGdldF9jb250YWN0X21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX291dHB1dFxuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IGdldF9yZWFjaGFiaWxpdHlfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXRcblxubGV0IGdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXG5cbmxldCBnZXRfdW5zYWZlXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudW5zYWZlXG5sZXQgZ2V0X3RyYWNlXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VcblxubGV0IGdldF9kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1cl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXG5cbmxldCBnZXRfcHJlZml4XzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJlZml4XG5cbmxldCBnZXRfY2FsbF9zdGFja18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxfc3RhY2tcblxubGV0IGdldF9saW5rX21vZGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5saW5rX21vZGVcblxubGV0IGdldF9rYXNhX3N0YXRlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcua2FzYV9zdGF0ZVxuXG5sZXQgZ2V0X2RvX2NvbnRhY3RfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fY29udGFjdF9tYXBcblxubGV0IGdldF9zeW50YXhfdmVyc2lvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnN5bnRheF92ZXJzaW9uXG5cbmxldCBnZXRfZG9fc2NjXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2NjXG5cbmxldCBnZXRfZG9faW5mbHVlbmNlX21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2luZmx1ZW5jZV9tYXBcblxubGV0IGdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXG5cbmxldCBnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uXG5cbmxldCBnZXRfZG9fc2l0ZV9kZXBlbmRlbmNpZXNfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zaXRlX2RlcGVuZGVuY2llc1xuXG5sZXQgZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXNfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXG5cbigqcmVhY2hhYmlsaXR5IGRpZmZlcmVudCBvdXRwdXQqKVxubGV0IGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNcblxuKCoqKVxubGV0IGdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxcblxubGV0IGdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zY2NfYWNjdXJhY3lfbGV2ZWxcblxubGV0IGdldF92aWV3X2FjY3VyYWN5X2xldmVsXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld19hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X2xhdW5jaGluZ19kYXRlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIGxldCB0ID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sYXVuY2hpbmdfZGF0ZSBpblxuICBsZXQgZ210ID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50aW1lX3NoaWZ0IGluXG4gIFByaW50Zi5zcHJpbnRmIFwiQW5hbHlzaXMgbGF1bmNoZWQgYXQgJTA0aS8lMDJpLyUwMmkgJTAyaTolMDJpOiUwMmkgKEdNVCUraSlcIlxuICAgICh0LlVuaXgudG1feWVhciArIDE5MDApICh0LlVuaXgudG1fbW9uICsgMSkgdC5Vbml4LnRtX21kYXkgdC5Vbml4LnRtX2hvdXJcbiAgICB0LlVuaXgudG1fbWluIHQuVW5peC50bV9zZWMgZ210XG5cbmxldCBnZXRfc2hvcnRfdmVyc2lvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZlcnNpb25cblxubGV0IGdldF9mdWxsX3ZlcnNpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgUHJpbnRmLnNwcmludGYgXCIlcyAod2l0aCVzIFRrIGludGVyZmFjZSlcIlxuICAgIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmVyc2lvblxuICAgIChpZiBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRrX2ludGVyZmFjZSB0aGVuXG4gICAgICAgXCJcIlxuICAgICBlbHNlXG4gICAgICAgXCJvdXRcIilcblxubGV0IGdldF9sYXVuY2hlZF93aGVyZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhvc3RuYW1lXG5cbmxldCBnZXRfY29tbWFuZF9saW5lXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tbWFuZF9saW5lXG5cbmxldCBnZXRfbWFyc2hhbGlzYWJsZSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzXG5cbmxldCBnZXRfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJcbmxldCBnZXRfbG9nZ2VyX2VyciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyX2VyclxuXG5sZXQgZ2V0X2xvZ2dlcl9iYWNrZG9vciBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyX2JhY2tkb29yXG5cbigqbGV0IGdldF9mb3JtYXR0ZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdHRlclxuICBsZXQgc2V0X2Zvcm1hdHRlciBwYXJhbWV0ZXIgbG9nZ2VyID0ge3BhcmFtZXRlciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdHRlciA9IGxvZ2dlcn0qKVxuXG5sZXQgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfbWFyc2hhbGlzYWJsZVxubGV0IGdldF9jb21tYW5kX2xpbmUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29tbWFuZF9saW5lXzFcbmxldCBnZXRfc2hvcnRfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zaG9ydF92ZXJzaW9uXzFcbmxldCBnZXRfbGF1bmNoZWRfd2hlcmUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfbGF1bmNoZWRfd2hlcmVfMVxubGV0IGdldF9mdWxsX3ZlcnNpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZnVsbF92ZXJzaW9uXzFcbmxldCBnZXRfbGF1bmNoaW5nX2RhdGUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfbGF1bmNoaW5nX2RhdGVfMVxuXG5sZXQgZ2V0X2xhdW5jaGVkX3doZW5fYW5kX3doZXJlIHBhcmFtZXRlcnMgPVxuICBQcmludGYuc3ByaW50ZiBcIiVzIG9uICVzXCJcbiAgICAoZ2V0X2xhdW5jaGluZ19kYXRlIHBhcmFtZXRlcnMpXG4gICAgKGdldF9sYXVuY2hlZF93aGVyZSBwYXJhbWV0ZXJzKVxuXG5sZXQgZ2V0X2RvX2NvbnRhY3RfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX2NvbnRhY3RfbWFwXzFcbmxldCBnZXRfc3ludGF4X3ZlcnNpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc3ludGF4X3ZlcnNpb25fMVxubGV0IGdldF9kb19zY2MgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fc2NjXzFcbmxldCBnZXRfZG9faW5mbHVlbmNlX21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19pbmZsdWVuY2VfbWFwXzFcblxubGV0IGdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbl8xXG5cbmxldCBnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbl8xXG5cbmxldCBnZXRfZG9fc2l0ZV9kZXBlbmRlbmNpZXMgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fc2l0ZV9kZXBlbmRlbmNpZXNfMVxuXG5sZXQgZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXMgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llc18xXG4oKnJlYWNoYWJpbGl0eSBhbmFseXNpcyBpbiBkaWZmZXJlbnQgb3V0cHV0KilcblxuKCoqKVxubGV0IGdldF9zeW1ib2xzID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3N5bWJvbHNfMVxubGV0IGdldF9maWxlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2ZpbGVfMVxubGV0IGdldF9jb21wdXRlX3N5bW1ldHJpZXMgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29tcHV0ZV9zeW1tZXRyaWVzXzFcbmxldCBnZXRfcmF0ZV9jb252ZW50aW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JhdGVfY29udmVudGlvbl8xXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfaW5mbHVlbmNlX21hcF8xXG5sZXQgZ2V0X2NvbnRhY3RfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NvbnRhY3RfbWFwXzFcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcbmxldCBnZXRfcmVhY2hhYmlsaXR5X21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9yZWFjaGFiaWxpdHlfbWFwXzFcblxubGV0IGdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVycyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc18xXG5cbmxldCBnZXRfdW5zYWZlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3Vuc2FmZV8xXG5sZXQgZ2V0X3RyYWNlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3RyYWNlXzFcblxubGV0IGdldF9kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1ciA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1cl8xXG5cbmxldCBnZXRfcHJlZml4ID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3ByZWZpeF8xXG5sZXQgZ2V0X2NhbGxfc3RhY2sgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY2FsbF9zdGFja18xXG5sZXQgZ2V0X2xpbmtfbW9kZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9saW5rX21vZGVfMVxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF9zY2NfYWNjdXJhY3lfbGV2ZWwgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc2NjX2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdmlld19hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfZW1wdHlfaGFzaHRibF9zaXplID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZV8xXG5sZXQgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfaW5mbHVlbmNlX21hcFxubGV0IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9jb250YWN0X21hcFxubGV0IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X3N5bWJvbHNcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcbmxldCB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9yZWFjaGFiaWxpdHlfbWFwXG5cbmxldCB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGQgZiA9XG4gIGNvbXBvc2UgZiBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNcblxuKCpzeW1ib2xzKilcbmxldCBnZXRfYm91bmRfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2JvdW5kX3N5bWJvbF8xXG5sZXQgZ2V0X29wZW5fYmluZGluZ19zdGF0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2JpbmRpbmdfc3RhdGVfMVxuXG5sZXQgZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfYmluZGluZ19zdGF0ZV8xXG5cbmxldCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZV8xXG5cbmxldCBnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludGVybmFsX3N0YXRlXzFcblxubGV0IGdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZV8xXG5cbmxldCBnZXRfbGlua190b19hbnkgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfbGlua190b19hbnlfMVxubGV0IGdldF9saW5rX3RvX3NvbWUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfbGlua190b19zb21lXzFcbmxldCBnZXRfZnJlZV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfZnJlZV8xXG5sZXQgZ2V0X2F0X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hdF9zeW1ib2xfMVxubGV0IGdldF9hZ2VudF9vcGVuX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9vcGVuX3N5bWJvbF8xXG5sZXQgZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9jbG9zZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xXG5cbmxldCBnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xXG5cbmxldCBnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2xfMVxuXG5sZXQgZ2V0X2J0eXBlX3NlcF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYnR5cGVfc2VwX3N5bWJvbF8xXG5cbmxldCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbF8xXG5cbmxldCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2dob3N0X2FnZW50X3N5bWJvbF8xXG5sZXQgZ2V0X2RvX3dlX3Nob3dfZ2hvc3QgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfZG9fd2Vfc2hvd19naG9zdF8xXG5sZXQgZ2V0X3VuaV9hcnJvd19zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfdW5pX2Fycm93X3N5bWJvbF8xXG5sZXQgZ2V0X3Jldl9hcnJvd19zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfcmV2X2Fycm93X3N5bWJvbF8xXG5sZXQgZ2V0X2JpX2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9iaV9hcnJvd19zeW1ib2xfMVxuXG5sZXQgZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sXzFcblxubGV0IGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sXzFcblxubGV0IGdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9taW51c19pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9jb3VudGVyX3N0YXRlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcl9zdGF0ZV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmNlcSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJjZXFfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJjZ3RlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmNndGVfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJjdmFyID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmN2YXJfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJkZWx0YSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJkZWx0YV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcnZhbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJ2YWxfMVxuXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xXG5cbmxldCBnZXRfY2xvc2VfY291bnRlcmNlcSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyY2VxXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcmNndGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmNndGVfMVxubGV0IGdldF9jbG9zZV9jb3VudGVyY3ZhciA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyY3Zhcl8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyZGVsdGFfMVxubGV0IGdldF9jbG9zZV9jb3VudGVydmFsID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJ2YWxfMVxubGV0IGdldF9jb3VudGVyY2VxX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyY2VxX3N5bWJvbF8xXG5sZXQgZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyY2d0ZV9zeW1ib2xfMVxubGV0IGdldF9jb3VudGVyY3Zhcl9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmN2YXJfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbF8xXG5cbmxldCBnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbF8xXG5cbmxldCBnZXRfY291bnRlcnZhbF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcnZhbF9zeW1ib2xfMVxubGV0IGdldF9pbV9mb3JtYXQgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW1fZm9ybWF0XzFcbmxldCBnZXRfaW1fZmlsZSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbV9maWxlXzFcbmxldCBnZXRfaW1fZGlyZWN0b3J5ID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2ltX2RpcmVjdG9yeV8xXG5sZXQgZ2V0X3J1bGVfc2hhcGUgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfcnVsZV9zaGFwZV8xXG5sZXQgZ2V0X3J1bGVfY29sb3IgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfcnVsZV9jb2xvcl8xXG5sZXQgZ2V0X3ZhcmlhYmxlX3NoYXBlID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3ZhcmlhYmxlX3NoYXBlXzFcbmxldCBnZXRfdmFyaWFibGVfY29sb3IgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfdmFyaWFibGVfY29sb3JfMVxubGV0IGdldF93YWtlX3VwX2NvbG9yID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3dha2VfdXBfY29sb3JfMVxuXG5sZXQgZ2V0X2luaGliaXRpb25fY29sb3IgPVxuICB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW5oaWJpdGlvbl9jb2xvcl8xXG5cbmxldCBnZXRfd2FrZV91cF9hcnJvdyA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF93YWtlX3VwX2Fycm93XzFcblxubGV0IGdldF9pbmhpYml0aW9uX2Fycm93ID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2luaGliaXRpb25fYXJyb3dfMVxuXG5sZXQgZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWYgPVxuICB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWYgPVxuICB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWZfMVxuXG5sZXQgZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3QgPVxuICB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV8xXG5cbmxldCBnZXRfcHVyZV9jb250YWN0ID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9wdXJlX2NvbnRhY3RfMVxubGV0IGdldF9jbV9mb3JtYXQgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2NtX2Zvcm1hdF8xXG5sZXQgZ2V0X2NtX2ZpbGUgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2NtX2ZpbGVfMVxubGV0IGdldF9jbV9kaXJlY3RvcnkgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2NtX2RpcmVjdG9yeV8xXG5cbmxldCBnZXRfYmluZGluZ19zaXRlX3NoYXBlID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9iaW5kaW5nX3NpdGVfc2hhcGVfMVxuXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYmluZGluZ19zaXRlX2NvbG9yXzFcblxubGV0IGdldF9pbnRlcm5hbF9zaXRlX3NoYXBlID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9pbnRlcm5hbF9zaXRlX3NoYXBlXzFcblxubGV0IGdldF9pbnRlcm5hbF9zaXRlX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9pbnRlcm5hbF9zaXRlX2NvbG9yXzFcblxubGV0IGdldF9jb3VudGVyX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZV8xXG5cbmxldCBnZXRfY291bnRlcl9zaXRlX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jb3VudGVyX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2FnZW50X3NoYXBlX2FycmF5ID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9zaGFwZV9hcnJheV8xXG5cbmxldCBnZXRfYWdlbnRfY29sb3JfYXJyYXkgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X2NvbG9yX2FycmF5XzFcblxubGV0IGdldF9hZ2VudF9zaGFwZV9kZWYgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X3NoYXBlX2RlZl8xXG5sZXQgZ2V0X2FnZW50X2NvbG9yX2RlZiA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfY29sb3JfZGVmXzFcbmxldCBnZXRfbGlua19jb2xvciA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfbGlua19jb2xvcl8xXG5sZXQgZ2V0X2luZmx1ZW5jZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW5mbHVlbmNlX2NvbG9yXzFcbmxldCBnZXRfaW5mbHVlbmNlX2Fycm93ID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9pbmZsdWVuY2VfYXJyb3dfMVxuXG4oKmFkZCByZWFjaGFibGl0eSopXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdF8xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbl8xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpY18xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmZfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsXzFcblxubGV0IGdldF9wb3N0X3Byb2Nlc3NpbmcgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfcG9zdF9wcm9jZXNzaW5nXzFcblxubGV0IGdldF9iYWNrZW5kX21vZGUgPSB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfYmFja2VuZF9tb2RlXzFcblxubGV0IGdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGRcbiAgICBnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbl8xXG5cbmxldCBnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZFxuICAgIGdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlc18xXG5cbmxldCBnZXRfc21hc2hfcmVsYXRpb25zID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3NtYXNoX3JlbGF0aW9uc18xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfZm9ybWF0ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdF8xXG5cbmxldCBnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMVxuXG5sZXQgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18yIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzFcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCBiO1xuICB9XG5cbmxldCBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbl9pbl9sb2NhbF90cmFjZXNfMiByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgPVxuICAgICAgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzFcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCBiO1xuICB9XG5cbmxldCBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18yXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzIGI7XG4gIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbl9pbl9sb2NhbF90cmFjZXNfMlxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyBiO1xuICB9XG5cbmxldCBnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzXzFcblxubGV0IGdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzXzFcblxubGV0IGdldF9pZ25vcmVfbG9jYWxfbG9zYW5nZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNfMVxuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXNfMVxuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXNfMVxuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9sb2NhbF90cmFjZV9wcmVmaXhfMVxuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnlfMVxuXG5sZXQgZ2V0X3ZpZXdfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGQgZ2V0X3ZpZXdfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkXG4gICAgZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzXzFcblxubGV0IGdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZFxuICAgIGdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpc18xXG5cbmxldCBnZXRfZHluYW1pY19jb250YWN0X21hcCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfZHluYW1pY19jb250YWN0X21hcF8xXG5cbmxldCBnZXRfY291bnRlcnNfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGQgZ2V0X2NvdW50ZXJzX2FuYWx5c2lzXzFcblxubGV0IGdldF9jb3VudGVyc19kb21haW4gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGQgZ2V0X2NvdW50ZXJzX2RvbWFpbl8xXG5cbmxldCBnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIHAgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXzEgcFxuICB8fCBnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXMgcFxuXG5sZXQgc2V0X3ByZWZpeF8xIG1hcnNoYWxpc2FibGUgcHJlZml4ID1cbiAgeyBtYXJzaGFsaXNhYmxlIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJlZml4IH1cblxubGV0IHNldF9jYWxsX3N0YWNrXzEgbWFyc2hhbGlzYWJsZSBjYWxsX3N0YWNrID1cbiAgeyBtYXJzaGFsaXNhYmxlIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbF9zdGFjayB9XG5cbmxldCBzZXRfdHJhY2VfMSBtYXJzaGFsaXNhYmxlIGJvb2wgPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZSA9IGJvb2wgfVxuXG5sZXQgdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIGYgcGFyYW1ldGVycyBwcmVmaXggPVxuICB7XG4gICAgcGFyYW1ldGVycyB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIGYgKGdldF9tYXJzaGFsaXNhYmxlIHBhcmFtZXRlcnMpIHByZWZpeDtcbiAgfVxuXG5sZXQgc2V0X3ByZWZpeCA9IHVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSBzZXRfcHJlZml4XzFcbmxldCBzZXRfY2FsbF9zdGFjayA9IHVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSBzZXRfY2FsbF9zdGFja18xXG5sZXQgc2V0X3RyYWNlID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF90cmFjZV8xXG5cbmxldCB1cGRhdGVfcHJlZml4IHBhcmFtZXRlcnMgc3VmZml4ID1cbiAgc2V0X3ByZWZpeCBwYXJhbWV0ZXJzIChnZXRfcHJlZml4IHBhcmFtZXRlcnMgXiBzdWZmaXgpXG5cbmxldCB1cGRhdGVfY2FsbF9zdGFjayBwYXJhbWV0ZXJzIGJvb2wgbmFtZSA9XG4gIGxldCByZXBfYm9vbCA9IGdldF90cmFjZSBwYXJhbWV0ZXJzIHx8IGJvb2wgaW5cbiAgbWF0Y2ggbmFtZSwgZ2V0X3RyYWNlIHBhcmFtZXRlcnMgPSBib29sIHdpdGhcbiAgfCBOb25lLCB0cnVlIC0+IHBhcmFtZXRlcnNcbiAgfCBOb25lLCBmYWxzZSAtPiBzZXRfdHJhY2UgcGFyYW1ldGVycyByZXBfYm9vbFxuICB8IFNvbWUgeCwgdHJ1ZSAtPiBzZXRfY2FsbF9zdGFjayBwYXJhbWV0ZXJzICh4IDo6IGdldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMpXG4gIHwgU29tZSB4LCBmYWxzZSAtPlxuICAgIHNldF9jYWxsX3N0YWNrXG4gICAgICAoc2V0X3RyYWNlIHBhcmFtZXRlcnMgcmVwX2Jvb2wpXG4gICAgICAoeCA6OiBnZXRfY2FsbF9zdGFjayBwYXJhbWV0ZXJzKVxuXG5sZXQgb3Blbl9pbmZsdWVuY2VfbWFwX2ZpbGUgcGFyYW1ldGVycyA9XG4gIGxldCBjaGFubmVsID1cbiAgICBtYXRjaFxuICAgICAgKCBnZXRfaW1fZmlsZSBwYXJhbWV0ZXJzLFxuICAgICAgICBnZXRfaW1fZGlyZWN0b3J5IHBhcmFtZXRlcnMsXG4gICAgICAgIGV4dF9mb3JtYXQgKGdldF9pbV9mb3JtYXQgcGFyYW1ldGVycykgKVxuICAgIHdpdGhcbiAgICB8IE5vbmUsIF8sIF8gLT4gc3Rkb3V0XG4gICAgfCBTb21lIGEsIE5vbmUsIGV4dCAtPiBvcGVuX291dCBhIGV4dFxuICAgIHwgU29tZSBhLCBTb21lIGQsIGV4dCAtPiBvcGVuX291dCAoZCBeIGEpIGV4dFxuICBpblxuICBsZXQgZm9ybWF0ID1cbiAgICBtYXRjaCBnZXRfaW1fZm9ybWF0IHBhcmFtZXRlcnMgd2l0aFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UIC0+IExvZ2dlcnMuRE9UXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IVE1MIC0+IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRElNIC0+IExvZ2dlcnMuTWF0cml4XG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5HRVBISSAtPiBMb2dnZXJzLkdFUEhJXG4gIGluXG4gIGxldCBsb2dnZXIgPSBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCB+bW9kZTpmb3JtYXQgY2hhbm5lbCBpblxuICB7IHBhcmFtZXRlcnMgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgfVxuXG5sZXQgb3Blbl9jb250YWN0X21hcF9maWxlIHBhcmFtZXRlcnMgPVxuICBsZXQgY2hhbm5lbCA9XG4gICAgbWF0Y2hcbiAgICAgICggZ2V0X2NtX2ZpbGUgcGFyYW1ldGVycyxcbiAgICAgICAgZ2V0X2NtX2RpcmVjdG9yeSBwYXJhbWV0ZXJzLFxuICAgICAgICBleHRfZm9ybWF0IChnZXRfY21fZm9ybWF0IHBhcmFtZXRlcnMpIClcbiAgICB3aXRoXG4gICAgfCBOb25lLCBfLCBfIC0+IHN0ZG91dFxuICAgIHwgU29tZSBhLCBOb25lLCBleHQgLT4gb3Blbl9vdXQgYSBleHRcbiAgICB8IFNvbWUgYSwgU29tZSBkLCBleHQgLT4gb3Blbl9vdXQgKGQgXiBhKSBleHRcbiAgaW5cbiAge1xuICAgIHBhcmFtZXRlcnMgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIGNoYW5uZWw7XG4gIH1cblxubGV0IHBlcnNpc3RlbnRfbW9kZSA9IGZhbHNlXG5cbmxldCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9pbmZsdWVuY2VfbWFwXG4gICAgcGFyYW1ldGVyID1cbiAgKG1hdGNoIGdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsIHBhcmFtZXRlciB3aXRoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbCB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2ggfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3cgLT5cbiAgICB0cnVlXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uZSAtPiBmYWxzZSlcbiAgJiYgZ2V0X2RvX2luZmx1ZW5jZV9tYXAgcGFyYW1ldGVyXG5cbmxldCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9wZXJzaXN0ZW50X21vZGVcbiAgICBfID1cbiAgcGVyc2lzdGVudF9tb2RlXG5cbmxldCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9jb250YWN0X21hcFxuICAgIHBhcmFtZXRlciA9XG4gIGdldF9kb19jb250YWN0X21hcCBwYXJhbWV0ZXJcbiAgJiZcbiAgbWF0Y2ggZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsIHBhcmFtZXRlciB3aXRoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93IC0+IHRydWVcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGwgLT5cbiAgICBmYWxzZVxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJucyBwYXJhbWV0ZXIgPVxuICBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9wZXJzaXN0ZW50X21vZGVcbiAgICBwYXJhbWV0ZXJcbiAgfHwgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfY29udGFjdF9tYXBcbiAgICAgICBwYXJhbWV0ZXJcbiAgfHwgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfaW5mbHVlbmNlX21hcFxuICAgICAgIHBhcmFtZXRlclxuXG5sZXQgZ2V0X2NhbGxlZF9mcm9tIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbGVkX2Zyb21cblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9zY2NcblxubGV0IGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzEgYmFja2Rvb3JzXG4gICAgPVxuICBiYWNrZG9vcnNcbiAgICAuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWdcbiAgICAgLmJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnNcbiAgICAuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuXG5sZXQgZ2V0X2JhY2tkb29yX3RpbWluZ18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl90aW1pbmdcblxubGV0IGdldF9iYWNrZG9vcl9maWxlXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2ZpbGVcblxubGV0IGdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZGlyZWN0b3J5XG5cbmxldCBnZXRfYmFja2Rvb3JzIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMVxuICAgIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl90aW1pbmdfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX3RpbWluZ18xIGdldF9iYWNrZG9vcnNcbmxldCBnZXRfYmFja2Rvb3JfZmlsZV8yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZmlsZV8xIGdldF9iYWNrZG9vcnNcbmxldCBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9zY2MgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlc18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMlxuICAgIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMlxuICAgIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfdGltaW5nID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfdGltaW5nXzIgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfYmFja2Rvb3JfZmlsZSA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2ZpbGVfMiBnZXRfbWFyc2hhbGlzYWJsZVxubGV0IGdldF9iYWNrZG9vcl9kaXJlY3RvcnkgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMiBnZXRfbWFyc2hhbGlzYWJsZVxubGV0IGdldF9wcm9maWxlciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvZmlsZXJcblxubGV0IGdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wcmVzc2lvbl9zdGF0dXNcblxubGV0IGdldF9rYXNhX3N0YXRlID0gY29tcG9zZSBnZXRfa2FzYV9zdGF0ZV8xIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBzZXRfcHJpbnRfZWZmaWNpZW5jeSBwYXJhbWV0ZXIgYm9vbCA9XG4gIHsgcGFyYW1ldGVyIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJpbnRfZWZmaWNpZW5jeSA9IGJvb2wgfVxuXG5sZXQgZ2V0X3ByaW50X2VmZmljaWVuY3kgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByaW50X2VmZmljaWVuY3lcblxubGV0IHNldF9sb2dnZXIgcGFyYW1ldGVyIGxvZ2dlciA9XG4gIHsgcGFyYW1ldGVyIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyIH1cblxubGV0IHNhdmVfZXJyb3JfbGlzdCBwYXJhbWV0ZXIgZXJyb3IgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0IGVycm9yXG5cbmxldCBzYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgYmFyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfcHJvZ3Jlc3NfYmFyIGJhclxuXG5sZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXJcblxubGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlXG5cbmxldCByZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlXG4iLCJvcGVuIFN1cGVyYXJnXG5cbnR5cGUgY291bnQgPSBFbWJlZGRpbmdzIHwgT2NjdXJyZW5jZXNcblxudHlwZSB0ID0ge1xuICBiYWNrZW5kOiBzdHJpbmcgcmVmO1xuICBydWxlX3JhdGVfY29udmVudGlvbjogc3RyaW5nIHJlZjtcbiAgcmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uOiBzdHJpbmcgcmVmO1xuICBjb3VudDogc3RyaW5nIHJlZjtcbiAgaW50ZXJuYWxfbWVhbmluZzogc3RyaW5nIHJlZjtcbiAgc2hvd19yZWFjdGlvbnM6IGJvb2wgcmVmO1xuICBjb21wdXRlX2phY29iaWFuOiBib29sIHJlZjtcbiAgb2N0YXZlX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hdGxhYl9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBtYXBsZV9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBtYXRoZW1hdGljYV9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBzYm1sX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIGRvdG5ldF9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBkYXRhX2ZpbGU6IHN0cmluZyBvcHRpb24gcmVmO1xuICB3aXRoX3N5bW1ldHJpZXM6IHN0cmluZyByZWY7XG4gIHNob3dfc3ltbWV0cmllczogYm9vbCByZWY7XG4gIHZpZXdzOiBib29sIHJlZjtcbiAgZGJvbmRzOiBib29sIHJlZjtcbiAgc2l0ZV9hY3Jvc3M6IGJvb2wgcmVmO1xuICBub25uZWdhdGl2ZTogYm9vbCByZWY7XG4gIHNob3dfdGltZV9hZHZhbmNlOiBib29sIHJlZjtcbiAgaW5pdGlhbF9zdGVwOiBmbG9hdCByZWY7XG4gIG1heF9zdGVwOiBmbG9hdCByZWY7XG4gIHJlbGF0aXZlX3RvbGVyYW5jZTogZmxvYXQgcmVmO1xuICBhYnNvbHV0ZV90b2xlcmFuY2U6IGZsb2F0IHJlZjtcbiAgc21hc2hfcmVhY3Rpb25zOiBib29sIHJlZjtcbiAgcHJvcGFnYXRlX2NvbnN0YW50czogYm9vbCByZWY7XG4gIHByaW50X2VmZmljaWVuY3k6IGJvb2wgcmVmO1xuICBtYXhfc2l6ZV9mb3Jfc3BlY2llczogaW50IG9wdGlvbiByZWY7XG4gIGNzdl9zZXA6IHN0cmluZyByZWY7XG59XG5cbmxldCBkZWZhdWx0IDogdCA9XG4gIHtcbiAgICBiYWNrZW5kID0gcmVmIFwib2N0YXZlXCI7XG4gICAgcnVsZV9yYXRlX2NvbnZlbnRpb24gPSByZWYgXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgIHJlYWN0aW9uX3JhdGVfY29udmVudGlvbiA9IHJlZiBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgY291bnQgPSByZWYgXCJFbWJlZGRpbmdzXCI7XG4gICAgaW50ZXJuYWxfbWVhbmluZyA9IHJlZiBcIkVtYmVkZGluZ3NcIjtcbiAgICBzaG93X3JlYWN0aW9ucyA9IHJlZiB0cnVlO1xuICAgIGNvbXB1dGVfamFjb2JpYW4gPSByZWYgdHJ1ZTtcbiAgICBkb3RuZXRfb3V0cHV0ID0gcmVmIChTb21lIFwibmV0d29yay5uZXRcIik7XG4gICAgb2N0YXZlX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5tXCIpO1xuICAgIG1hdGxhYl9vdXRwdXQgPSByZWYgKFNvbWUgXCJvZGUubVwiKTtcbiAgICBtYXBsZV9vdXRwdXQgPSByZWYgKFNvbWUgXCJvZGUubXdzXCIpO1xuICAgIG1hdGhlbWF0aWNhX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5uYlwiKTtcbiAgICBzYm1sX291dHB1dCA9IHJlZiAoU29tZSBcIm5ldHdvcmsueG1sXCIpO1xuICAgIGRhdGFfZmlsZSA9IHJlZiAoU29tZSBcImRhdGEuY3N2XCIpO1xuICAgIHdpdGhfc3ltbWV0cmllcyA9IHJlZiBcIk5vbmVcIjtcbiAgICBzaG93X3N5bW1ldHJpZXMgPSByZWYgZmFsc2U7XG4gICAgdmlld3MgPSByZWYgdHJ1ZTtcbiAgICBkYm9uZHMgPSByZWYgdHJ1ZTtcbiAgICBzaXRlX2Fjcm9zcyA9IHJlZiB0cnVlO1xuICAgIG5vbm5lZ2F0aXZlID0gcmVmIGZhbHNlO1xuICAgIHNob3dfdGltZV9hZHZhbmNlID0gcmVmIGZhbHNlO1xuICAgIGluaXRpYWxfc3RlcCA9IHJlZiAwLjAwMDAxO1xuICAgIG1heF9zdGVwID0gcmVmIDAuMDI7XG4gICAgYWJzb2x1dGVfdG9sZXJhbmNlID0gcmVmIDAuMDAxO1xuICAgIHJlbGF0aXZlX3RvbGVyYW5jZSA9IHJlZiAwLjAwMTtcbiAgICBzbWFzaF9yZWFjdGlvbnMgPSByZWYgZmFsc2U7XG4gICAgcHJvcGFnYXRlX2NvbnN0YW50cyA9IHJlZiBmYWxzZTtcbiAgICBwcmludF9lZmZpY2llbmN5ID0gcmVmIGZhbHNlO1xuICAgIG1heF9zaXplX2Zvcl9zcGVjaWVzID0gcmVmIE5vbmU7XG4gICAgY3N2X3NlcCA9IHJlZiBcIiBcIjtcbiAgfVxuXG5sZXQgY29tYmluZSBsMSBsMiA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBsaXN0IGExIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgKGEyIDogaW50KSAtPiAoYTEsIGEyKSA6OiBsaXN0KSBsaXN0IGwyKVxuICAgIFtdIGwxXG5cbmxldCBvcHRpb25zICh0IDogdCkgOlxuICAgIChTdXBlcmFyZy5rZXlcbiAgICAqIFN1cGVyYXJnLnNwZWNcbiAgICAqIFN1cGVyYXJnLm1zZ1xuICAgICogKFN1cGVyYXJnLmNhdGVnb3J5ICogU3VwZXJhcmcucG9zaXRpb24pIGxpc3RcbiAgICAqIFN1cGVyYXJnLmxldmVsKVxuICAgIGxpc3QgPVxuICBbXG4gICAgKCBcIi0tdm9pZFwiLFxuICAgICAgU3VwZXJhcmcuVm9pZCxcbiAgICAgIFwiXCIsXG4gICAgICBjb21iaW5lXG4gICAgICAgIFtcbiAgICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldDtcbiAgICAgICAgICBDb21tb25fYXJncy5vdXRwdXQ7XG4gICAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzO1xuICAgICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzO1xuICAgICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbjtcbiAgICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXM7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZTtcbiAgICAgICAgXVxuICAgICAgICBbIDUwOyA1MTsgNTIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuTXVsdGlFeHRcbiAgICAgICAgW1xuICAgICAgICAgIFwiLS1kb3RuZXQtb3V0cHV0XCIsIFwiLm5ldFwiO1xuICAgICAgICAgIFwiLS1tYXBsZS1vdXRwdXRcIiwgXCIubXdzXCI7XG4gICAgICAgICAgXCItLW1hdGhlbWF0aWNhLW91dHB1dFwiLCBcIi5uYlwiO1xuICAgICAgICAgIFwiLS1tYXRsYWItb3V0cHV0XCIsIFwiLm1cIjtcbiAgICAgICAgICBcIi0tb2N0YXZlLW91dHB1dFwiLCBcIi5tXCI7XG4gICAgICAgICAgXCItLXNibWwtb3V0cHV0XCIsIFwiLnhtbFwiO1xuICAgICAgICBdLFxuICAgICAgXCJQcmVmaXggZm9yIGZpbGUgbmFtZSBvdXRwdXRcIixcbiAgICAgIFtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb24sIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDEwMTtcbiAgICAgIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1vZGUtYmFja2VuZFwiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJkb3RuZXRcIiwgXCJkb3RuZXQgKEJOR0wpIGJhY2tlbmRcIjtcbiAgICAgICAgICAgIFwibWFwbGVcIiwgXCJtYXBsZSBiYWNrZW5kIChpbiBwcm9ncmVzcylcIjtcbiAgICAgICAgICAgIFwibWF0aGVtYXRpY2FcIiwgXCJtYXRoZW1hdGljYSBiYWNrZW5kIChpbiBwcm9ncmVzcylcIjtcbiAgICAgICAgICAgIFwibWF0bGFiXCIsIFwibWF0bGFiIGJhY2tlbmRcIjtcbiAgICAgICAgICAgIFwib2N0YXZlXCIsIFwib2N0YXZlIGJhY2tlbmRcIjtcbiAgICAgICAgICAgIFwic2JtbFwiLCBcInNibWwgYmFja2VuZFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJEb3RuZXRcIjtcbiAgICAgICAgICAgIFwiRE9UTkVUXCI7XG4gICAgICAgICAgICBcIk9jdGF2ZVwiO1xuICAgICAgICAgICAgXCJPQ1RBVkVcIjtcbiAgICAgICAgICAgIFwiTWF0bGFiXCI7XG4gICAgICAgICAgICBcIk1BVExBQlwiO1xuICAgICAgICAgICAgXCJNYXRoZW1hdGljYVwiO1xuICAgICAgICAgICAgXCJNQVRIRU1BVElDQVwiO1xuICAgICAgICAgICAgXCJNYXBsZVwiO1xuICAgICAgICAgICAgXCJNQVBMRVwiO1xuICAgICAgICAgICAgXCJTYm1sXCI7XG4gICAgICAgICAgICBcIlNCTUxcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQuYmFja2VuZCApLFxuICAgICAgXCJTZWxlY3QgdGhlIGJhY2tlbmQgZm9ybWF0XCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tZG90bmV0LW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0LmRvdG5ldF9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3IgZG90bmV0IGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAyIF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1tYXBsZS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5tYXBsZV9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3IgbWFwbGUgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDMgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW1hdGhlbWF0aWNhLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm1hdGhlbWF0aWNhX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXRoZW1hdGljYSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNCBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tbWF0bGFiLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm1hdGxhYl9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3IgbWF0bGFiIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA1IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1vY3RhdmUtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQub2N0YXZlX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBvY3RhdmUgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDYgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXNibWwtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQuc2JtbF9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3Igc2JtbCBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNyBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tcHJvcGFnYXRlLWNvbnN0YW50c1wiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnByb3BhZ2F0ZV9jb25zdGFudHMsXG4gICAgICBcInByb3BhZ2F0ZSBjb25zdGFudHNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA4IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1jb25zdGFudC1wcm9wYWdhdGlvblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnByb3BhZ2F0ZV9jb25zdGFudHMsXG4gICAgICBcInByb3BhZ2F0ZSBjb25zdGFudHNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA5IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1jc3Ytc2VwYXJhdG9yXCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmcgdC5jc3Zfc2VwLFxuICAgICAgXCJzZXBhcmF0b3Igc3ltYm9sIGluIENTViBmaWxlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDEwIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1yYXRlLWNvbnZlbnRpb25cIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiS2FTaW1cIiwgXCJkbyBub3QgZGl2aWRlIGJ5IGFueXRoaW5nXCI7XG4gICAgICAgICAgICAoIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzXCIgKTtcbiAgICAgICAgICAgICggXCJCaW9jaGVtaXN0XCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlcyB0aGF0IGluZHVjZSBcXFxuICAgICAgICAgICAgICAgYW4gYXV0byBhbHNvIGluIHRoZSByaHNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJrYXNpbVwiO1xuICAgICAgICAgICAgXCJLQVNJTVwiO1xuICAgICAgICAgICAgXCJLYXNpbVwiO1xuICAgICAgICAgICAgXCJESVZJREVfQllfTkJSX09GX0FVVE9TX0lOX0xIU1wiO1xuICAgICAgICAgICAgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgICAgICAgICAgXCJiaW9iaGVtaXN0XCI7XG4gICAgICAgICAgICBcIkJJT0NIRU1JU1RcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQucnVsZV9yYXRlX2NvbnZlbnRpb24gKSxcbiAgICAgIFwiY29udmVudGlvbiBmb3IgZGl2aWRpbmcgY29uc3RhbnQgcmF0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxIF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1ydWxlLXJhdGUtY29udmVudGlvblwiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJLYVNpbVwiLCBcImRvIG5vdCBkaXZpZGUgYnkgYW55dGhpbmdcIjtcbiAgICAgICAgICAgICggXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzIHRoYXQgaW5kdWNlIFxcXG4gICAgICAgICAgICAgICBhbiBhdXRvIGFsc28gaW4gdGhlIHJoc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImthc2ltXCI7XG4gICAgICAgICAgICBcIktBU0lNXCI7XG4gICAgICAgICAgICBcIkthc2ltXCI7XG4gICAgICAgICAgICBcIkRJVklERV9CWV9OQlJfT0ZfQVVUT1NfSU5fTEhTXCI7XG4gICAgICAgICAgICBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgICAgICAgICBcImJpb2JoZW1pc3RcIjtcbiAgICAgICAgICAgIFwiQklPQ0hFTUlTVFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5ydWxlX3JhdGVfY29udmVudGlvbiApLFxuICAgICAgXCJjb252ZW50aW9uIGZvciBkaXZpZGluZyBjb25zdGFudCByYXRlcyAoZm9yIHJ1bGVzKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJlYWN0aW9uLXJhdGUtY29udmVudGlvblwiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJLYVNpbVwiLCBcImRvIG5vdCBkaXZpZGUgYnkgYW55dGhpbmdcIjtcbiAgICAgICAgICAgICggXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcmVhY3Rpb25zXCIgKTtcbiAgICAgICAgICAgICggXCJCaW9jaGVtaXN0XCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiByZWFjdGlvbnMgdGhhdCBcXFxuICAgICAgICAgICAgICAgaW5kdWNlIGFuIGF1dG8gYWxzbyBpbiB0aGUgcmhzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwia2FzaW1cIjtcbiAgICAgICAgICAgIFwiS0FTSU1cIjtcbiAgICAgICAgICAgIFwiS2FzaW1cIjtcbiAgICAgICAgICAgIFwiRElWSURFX0JZX05CUl9PRl9BVVRPU19JTl9MSFNcIjtcbiAgICAgICAgICAgIFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICAgICAgICAgIFwiYmlvYmhlbWlzdFwiO1xuICAgICAgICAgICAgXCJCSU9DSEVNSVNUXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LnJlYWN0aW9uX3JhdGVfY29udmVudGlvbiApLFxuICAgICAgXCJjb252ZW50aW9uIGZvciBkaXZpZGluZyBjb25zdGFudCByYXRlcyAoZm9yIHJlYWN0aW9ucylcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1jb3VudFwiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgKCBcIkVtYmVkZGluZ3NcIixcbiAgICAgICAgICAgICAgXCJjb3VudCB0aGUgbnVtYmVyIG9mIGVtYmVkZGluZ3Mgb2YgcGF0dGVybnMgaW50byBzcGVjaWVzXCIgKTtcbiAgICAgICAgICAgIFwiT2NjdXJyZW5jZXNcIiwgXCJjb3VudCB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHNwZWNpZXNcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFsgXCJlbWJlZGRpbmdzXCI7IFwiRU1CRURESU5HU1wiOyBcIm9jY3VycmVuY2VzXCI7IFwiT0NDVVJSRU5DRVNcIiBdLFxuICAgICAgICAgIHQuY291bnQgKSxcbiAgICAgIFwidHVuZSB3aGV0aGVyIHdlIGNvdW50IGluIGVtYmVkZGluZ3Mgb3IgaW4gb2NjdXJyZW5jZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAzIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1pbnRlcm5hbC1tZWFuaW5nXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICAoIFwiRW1iZWRkaW5nc1wiLFxuICAgICAgICAgICAgICBcIlZhcmlhYmxlcyBmb3IgS2FwcGEgc3BlY2llcyBkZW5vdGUgbnVtYmVycyBvZiBlbWJlZGRpbmdzXCIgKTtcbiAgICAgICAgICAgICggXCJPY2N1cnJlbmNlc1wiLFxuICAgICAgICAgICAgICBcIlZhcmlhYmxlcyBmb3IgS2FwcGEgc3BlY2llcyBkZW5vdGUgbnVtYmVycyBvZiBvY2N1cnJlbmNlc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbIFwiZW1iZWRkaW5nc1wiOyBcIkVNQkVERElOR1NcIjsgXCJvY2N1cnJlbmNlc1wiOyBcIk9DQ1VSUkVOQ0VTXCIgXSxcbiAgICAgICAgICB0LmludGVybmFsX21lYW5pbmcgKSxcbiAgICAgIFwidHVuZSB0aGUgbWVhbmluZyBvZiB2YXJpYWJsZSBmb3IgS2FwcGEgc3BlY2llcyAod2hldGhlciBpdCBpcyB0aGUgXFxcbiAgICAgICBudW1iZXIgb2YgZW1iZWRkaW5ncyBvciB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDQgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXRydW5jYXRlXCIsXG4gICAgICBTdXBlcmFyZy5JbnRfb3B0IHQubWF4X3NpemVfZm9yX3NwZWNpZXMsXG4gICAgICBcInRydW5jYXRlIHRoZSBuZXR3b3JrIGJ5IGRpc2NhcmRpbmcgc3BlY2llcyB3aXRoIHNpemUgZ3JlYXRlciB0aGFuIHRoZSBcXFxuICAgICAgIGFyZ3VtZW50XCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tbWF4LXNpemUtZm9yLXNwZWNpZXNcIixcbiAgICAgIFN1cGVyYXJnLkludF9vcHQgdC5tYXhfc2l6ZV9mb3Jfc3BlY2llcyxcbiAgICAgIFwidHJ1bmNhdGUgdGhlIG5ldHdvcmsgYnkgZGlzY2FyZGluZyBzcGVjaWVzIHdpdGggc2l6ZSBncmVhdGVyIHRoYW4gdGhlIFxcXG4gICAgICAgYXJndW1lbnRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA1IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1zaG93LXJlYWN0aW9uc1wiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNob3dfcmVhY3Rpb25zLFxuICAgICAgXCJBbm5vdGF0ZSBPREVzIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGNoZW1pY2FsIHJlYWN0aW9uc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDEwIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1zbWFzaC1yZWFjdGlvbnNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zbWFzaF9yZWFjdGlvbnMsXG4gICAgICBcIkdhdGhlciBpZGVudGljYWwgcmVhY3Rpb25zIGluIHRoZSBPREVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTE7IENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1jb21wdXRlLWphY29iaWFuXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuY29tcHV0ZV9qYWNvYmlhbixcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBKYWNvYmlhbiBvZiB0aGUgT0RFcyBcXG5cXFxuICAgICAgIFxcdCAobm90IGF2YWlsYWJsZSB5ZXQpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS13aXRoLXN5bW1ldHJpZXNcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiTm9uZVwiLCBcIm5vIHN5bW1ldHJpZXMgcmVkdWN0aW9uXCI7XG4gICAgICAgICAgICAoIFwiQmFja3dhcmRcIixcbiAgICAgICAgICAgICAgXCJ1c2UgdGhlIHN5bW1ldHJpZXMgc2F0aXNmaWVkIGJ5IHRoZSBydWxlcyBhbmQgdGhlIGFsZ2VicmFpYyBcXFxuICAgICAgICAgICAgICAgZXhwcmVzc2lvbnNcIiApO1xuICAgICAgICAgICAgKCBcIkZvcndhcmRcIixcbiAgICAgICAgICAgICAgXCJ1c2UgdGhlIHN5bW1ldHJpZXMgc2F0aXNmaWVkIGJ5IHRoZSBydWxlcyBhbmQgdGhlIGluaXRpYWwgc3RhdGVcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwibm9uZVwiO1xuICAgICAgICAgICAgXCJOT05FXCI7XG4gICAgICAgICAgICBcIkJBQ0tXQVJEXCI7XG4gICAgICAgICAgICBcImJhY2t3YXJkXCI7XG4gICAgICAgICAgICBcImZvcndhcmRcIjtcbiAgICAgICAgICAgIFwiRk9SV0FSRFwiO1xuICAgICAgICAgICAgXCJ0cnVlXCI7XG4gICAgICAgICAgICBcIlRSVUVcIjtcbiAgICAgICAgICAgIFwiVHJ1ZVwiO1xuICAgICAgICAgICAgXCJmYWxzZVwiO1xuICAgICAgICAgICAgXCJGQUxTRVwiO1xuICAgICAgICAgICAgXCJGYWxzZVwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC53aXRoX3N5bW1ldHJpZXMgKSxcbiAgICAgIFwiVHVuZSB3aGljaCBraW5kIG9mIGJpc2ltdWxhdGlvbiBpcyB1c2VkIHRvIHJlZHVjZSB0aGUgc2V0IG9mIHNwZWNpZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA1OyBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb24sIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXNob3ctc3ltbWV0cmllc1wiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNob3dfc3ltbWV0cmllcyxcbiAgICAgIFwiRGlzcGxheSB0aGUgZXF1aXZhbGVuY2UgcmVsYXRpb25zIG92ZXIgdGhlIHNpdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tdmlld3MtZG9tYWluXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQudmlld3MsXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIHZpZXdzIGFuYWx5c2lzIHdoZW4gZGV0ZWN0aW5nIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLWRvdWJsZS1ib25kcy1kb21haW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5kYm9uZHMsXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIGRvdWJsZSBib25kcyBhbmFseXNpcyB3aGVuIGRldGVjdGluZyBzeW1tZXRyaWMgc2l0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAyIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1zaXRlLWFjcm9zcy1ib25kcy1kb21haW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaXRlX2Fjcm9zcyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdGhlIGFuYWx5c2lzIG9mIHRoZSByZWxhdGlvbiBhbW9uZCB0aGUgc3RhdGVzIG9mIHNpdGVzIFxcXG4gICAgICAgaW4gY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDMgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLW5vbm5lZ2F0aXZlXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQubm9ubmVnYXRpdmUsXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIHRoZSBjb3JyZWN0aW9uIG9mIG5lZ2F0aXZlIGNvbmNlbnRyYXRpb25zIGluIHN0aWZmIE9ERSBcXFxuICAgICAgIHN5c3RlbXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDMgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXNob3ctdGltZS1hZHZhbmNlXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd190aW1lX2FkdmFuY2UsXG4gICAgICBcIkRpc3BsYXkgdGltZSBhZHZhbmNlIGR1cmluZyBudW1lcmljYWwgaW50ZWdyYXRpb25cIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMSBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0taW5pdGlhbC1zdGVwXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0LmluaXRpYWxfc3RlcCxcbiAgICAgIFwiSW5pdGlhbCBpbnRlZ3JhdGlvbiBzdGVwXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCA0IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1tYXgtc3RlcFwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5tYXhfc3RlcCxcbiAgICAgIFwiTWF4aW11bSBpbnRlZ3JhdGlvbiBzdGVwXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCA1IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1yZWxhdGl2ZS10b2xlcmFuY2VcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQucmVsYXRpdmVfdG9sZXJhbmNlLFxuICAgICAgXCJ0b2xlcmFuY2UgdG8gcmVsYXRpdmUgcm91bmRpbmcgZXJyb3JzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCA2IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1hYnNvbHV0ZS10b2xlcmFuY2VcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQuYWJzb2x1dGVfdG9sZXJhbmNlLFxuICAgICAgXCJ0b2xlcmFuY2UgdG8gYWJzb2x1dGUgcm91bmRpbmcgZXJyb3JzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCA3IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1wcmludC1lZmZpY2llbmN5XCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJpbnRfZWZmaWNpZW5jeSxcbiAgICAgIFwicHJvbXB0IENQVSB0aW1lIGFuZCB2YXJpb3VzIGRhdGFzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDIgXSxcbiAgICAgIEV4cGVydCApO1xuICBdXG5cbmxldCBnZXRfb3B0aW9uIG9wdGlvbnMgPVxuICBsZXQgdGl0bGUgPSBWZXJzaW9uLnZlcnNpb25fa2FkZV9mdWxsX25hbWUgaW5cbiAgbGV0IGlucHV0ID0gcmVmIFtdIGluXG4gIGxldCAoKSA9IFN1cGVyYXJnVGsucGFyc2UgfnRpdGxlIG9wdGlvbnMgaW5wdXQgaW5cbiAgIWlucHV0XG5cbmxldCBidWlsZF9rYXNhX3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tIHQgdF9jb21tb24gPVxuICBDb25maWcud2l0aF92aWV3c19hbmFseXNpcyA6PSAhKHQudmlld3MpO1xuICBDb25maWcud2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyA6PSAhKHQuZGJvbmRzKTtcbiAgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMgOj0gISh0LnNpdGVfYWNyb3NzKTtcbiAgQ29uZmlnLnRyYWNlIDo9IHRfY29tbW9uLkNvbW1vbl9hcmdzLmRlYnVnO1xuICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbSAoKVxuIiwiKCoqXG4gKiBoZWFkZXJzLm1sXG4gKiBvcGVua2FwcGFcbiAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24vQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8Tm92IDE0IDIwMTY+XG4gKiAqXG4gKiBTb21lIHBhcmFtZXRlcnNcbiAqIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gKlxuICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1XG4gKiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG4oKiogaWYgdW5zYWZlID0gdHJ1ZSwgdGhlbiB3aGVuZXZlciBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCBhIGRlZmF1bHQgdmFsdWUgaXMgb3V0cHV0LCBhbmQgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCopXG5sZXQgZG90X2NvbW1lbnQgPSBcIiNcIlxuXG5sZXQgaGVhZCBwYXJhbWV0ZXJzID1cbiAgW1xuICAgIFwiVGhpcyBmaWxlIGhhcyBiZWVuIGNvbXB1dGVkIGJ5IEthU2E6IGEgU3RhdGljIEFuYWx5emVyIGZvciBLYXBwYSAoXCJcbiAgICBeIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Nob3J0X3ZlcnNpb24gcGFyYW1ldGVyc1xuICAgIF4gXCIpXCI7XG4gICAgXCJEb3dubG9hZCBzb3VyY2VzL2JpbmFyaWVzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9LYXBwYS1EZXYvS2FTaW1cIjtcbiAgICBcIlwiO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xhdW5jaGVkX3doZW5fYW5kX3doZXJlIHBhcmFtZXRlcnM7XG4gICAgXCJDb21tYW5kIGxpbmUgaXM6IFwiXG4gICAgXiBTdHJpbmcuY29uY2F0IFwiIFwiXG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBBcnJheS50b19saXN0IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21tYW5kX2xpbmUgcGFyYW1ldGVycylcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBfdCA6OiBxIC0+IFwiS2FTYVwiIDo6IHFcbiAgICAgICAgfCBbXSAtPiBbXSk7XG4gICAgXCJcIjtcbiAgXVxuXG5sZXQgZG90X3RvX3BkZiA9XG4gIFwiUGxlYXNlIHVzZSBncmFwaHZpeiAoaHR0cDovL3d3dy5ncmFwaHZpei5vcmcpIG9yIE9tbmlHcmFmZmxlIHRvIGV4cG9ydCBpdCBcXFxuICAgdG8gYSBQREZcIlxuXG5sZXQgaGVhZF9pbmZsdWVuY2VfbWFwX2luX2RvdCA9XG4gIFtcbiAgICBcIlRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGluZmx1ZW5jZSBtYXAgaW4gZG90LlwiO1xuICAgIGRvdF90b19wZGY7XG4gICAgXCJcIjtcbiAgXVxuXG5sZXQgaGVhZF9jb250YWN0X21hcF9pbl9kb3QgPVxuICBbXG4gICAgXCJUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjb250YWN0IG1hcCBpbiBkb3QuXCI7XG4gICAgZG90X3RvX3BkZjtcbiAgICBcIlwiO1xuICBdXG4iLCIoKmZpbGUgbmFtZXMqKVxuXG5sZXQgaW5wdXQgOiBzdHJpbmcgbGlzdCByZWYgPSByZWYgW10gKCpuYW1lIG9mIHRoZSBrYXBwYSBmaWxlcyopXG5sZXQgb3V0cHV0ID0gcmVmIFwiZGF0YS5vdXRcIlxuIiwiKCoqXG4gICogZ2V0X29wdGlvbi5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDE4LzEyLzIwMTBcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEphbiAwOCAyMDIwPlxuICAqICpcbiAgKiBwcmltaXRpdmUgdG8gcGFyc2UgY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKlxuICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxub3BlbiBTdXBlcmFyZ1xuXG5sZXQgYWN0aW9ucyA9IFwiQWN0aW9uc1wiLCAwLCBOb25lXG5sZXQgc3ludGF4ID0gXCJTeW50YXhcIiwgMSwgTm9uZVxubGV0IG91dHB1dCA9IFwiT3V0cHV0XCIsIDIsIE5vbmVcbmxldCByZWFjaGFiaWxpdHkgPSBcIlJlYWNoYWJpbGl0eSBhbmFseXNpc1wiLCAzLCBOb25lXG5sZXQgdHJhY2VzID0gXCJUcmFjZSBhbmFseXNpc1wiLCA0LCBOb25lXG5sZXQgY29udGFjdF9tYXAgPSBcIkNvbnRhY3QgbWFwXCIsIDUsIE5vbmVcbmxldCBpbmZsdWVuY2VfbWFwID0gXCJJbmZsdWVuY2UgbWFwXCIsIDYsIE5vbmVcbmxldCBmbG93ID0gXCJGbG93IG9mIGluZm9ybWF0aW9uXCIsIDcsIE5vbmVcbmxldCBkZWJ1ZyA9IFwiRGVidWdnaW5nIGluZm9ybWF0aW9uXCIsIDgsIE5vbmVcblxubGV0IG9wdGlvbnMgPVxuICBMaXN0LnJldlxuICAgIFtcbiAgICAgICggXCItLWRvLWFsbFwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1jb250YWN0LW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1pbmZsdWVuY2UtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLU9ERS1mbG93LW9mLWluZm9ybWF0aW9uXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLXBvdGVudGlhbC1jeWNsZXNcIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtc3RvY2hhc3RpYy1mbG93LW9mLWluZm9ybWF0aW9uXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdICksXG4gICAgICAgIFwibGF1bmNoIGV2ZXJ5dGhpbmdcIixcbiAgICAgICAgWyBhY3Rpb25zLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tcmVzZXQtYWxsXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLWNvbnRhY3QtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLWluZmx1ZW5jZS1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtcG90ZW50aWFsLWN5Y2xlc1wiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1zdG9jaGFzdGljLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJsYXVuY2ggbm90aGluZ1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICBcIi0tdm9pZFwiLCBWb2lkLCBcIlwiLCBbIGFjdGlvbnMsIDIgXSwgTm9ybWFsO1xuICAgICAgKCBcIi1zeW50YXhcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbIFwiVjNcIiwgXCJwcmV2aW91cyB2ZXJzaW9uXCI7IFwiVjRcIiwgXCJjdXJyZW50IHZlcnNpb25cIiBdLFxuICAgICAgICAgICAgWyBcIlYzXCI7IFwiVjRcIjsgXCIzXCI7IFwiNFwiOyBcInYzXCI7IFwidjRcIiBdLFxuICAgICAgICAgICAgQ29uZmlnLnN5bnRheF92ZXJzaW9uICksXG4gICAgICAgIFwiVmVyc2lvbiBvZiB0aGUgbGV4ZXIvcGFyc2VyXCIsXG4gICAgICAgIFsgc3ludGF4LCAxOyBhY3Rpb25zLCAzMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtY29udGFjdC1tYXBcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fY29udGFjdF9tYXAsXG4gICAgICAgIFwiY29tcHV0ZSB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBhY3Rpb25zLCAyOyBjb250YWN0X21hcCwgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtaW5mbHVlbmNlLW1hcFwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19pbmZsdWVuY2VfbWFwLFxuICAgICAgICBcImNvbXB1dGUgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBhY3Rpb25zLCAzOyBpbmZsdWVuY2VfbWFwLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taW5mbHVlbmNlLW1hcC1hY2N1cmFjeS1sZXZlbFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJJbmRpcmVjdFwiLCBcIklnbm9yZSBnbHVpbmcgY29tcGF0aWJpbGl0eVwiO1xuICAgICAgICAgICAgICBcIkRpcmVjdFwiLCBcIklnbm9yZSByZWFjaGFibGUgc3RhdGVzXCI7XG4gICAgICAgICAgICAgIFwiUmVhbGlzYWJsZVwiLCBcIlRha2UgaW50byBhY2NvdW50IHJlYWNoYWJsZSBzdGF0ZXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbIFwiTG93XCI7IFwiTWVkaXVtXCI7IFwiSGlnaFwiOyBcIkZ1bGxcIiBdLFxuICAgICAgICAgICAgQ29uZmlnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBhY2N1cmFjeSBsZXZlbCBvZiB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIGluZmx1ZW5jZV9tYXAsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLU9ERS1mbG93LW9mLWluZm9ybWF0aW9uXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uLFxuICAgICAgICBcIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgZmxvdyBvZiBpbmZvcm1hdGlvbiBpbiB0aGUgT0RFIFxcXG4gICAgICAgICBzZW1hbnRpY3NcIixcbiAgICAgICAgWyBhY3Rpb25zLCA0OyBmbG93LCA2IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1wb3RlbnRpYWwtY3ljbGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX3NjYyxcbiAgICAgICAgXCJDb21wdXRlIHRoZSBib25kcyB0aGF0IG1heSBiZSBpbnZvbHZlZCBpbiBwb2x5bWVyaXNhdGlvblwiLFxuICAgICAgICBbIGFjdGlvbnMsIDU7IGNvbnRhY3RfbWFwLCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1zdG9jaGFzdGljLWZsb3ctb2YtaW5mb3JtYXRpb25cIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uLFxuICAgICAgICBcIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgZmxvdyBvZiBpbmZvcm1hdGlvbiBpbiB0aGUgc3RvY2hhc3RpYyBcXFxuICAgICAgICAgc2VtYW50aWNzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNjsgZmxvdywgNiBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWNvbXB1dGUtcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyxcbiAgICAgICAgXCJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIHN0YXRlcyBvZiBhZ2VudCBzaXRlc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDc7IHJlYWNoYWJpbGl0eSwgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWVuYWJsZS1ldmVyeS1kb21haW5cIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcImR5bmFtaWNcIjtcbiAgICAgICAgICAgICAgXCItLXZpZXdzLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcIi0tc2l0ZXMtYWNyb3NzLWJvbmRzLWRvbWFpblwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdICksXG4gICAgICAgIFwiZW5hYmxlIGV2ZXJ5IGFic3RyYWN0IGRvbWFpblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWRpc2FibGUtZXZlcnktZG9tYWluXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1jb250YWN0LW1hcC1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCJzdGF0aWNcIjtcbiAgICAgICAgICAgICAgXCItLW5vLXZpZXdzLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tZG91YmxlLWJvbmRzLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tc2l0ZXMtYWNyb3NzLWJvbmRzLWRvbWFpblwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdICksXG4gICAgICAgIFwiZGlzYWJsZSBldmVyeSBhYnN0cmFjdCBkb21haW5cIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDIgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb250YWN0LW1hcC1kb21haW5cIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICggXCJzdGF0aWNcIixcbiAgICAgICAgICAgICAgICBcIlZlcnkgY29hcnNlIHN0YXRpYyBhYnN0cmFjdGlvbjogZXZlcnkgYm9uZCB0aGF0IG9jY3VycyBpbiBcXFxuICAgICAgICAgICAgICAgICBpbml0aWFsIHN0YXRlcyBhbmQgcmhzIG9mIHJ1bGVzIGlzIGNvbnNpZGVyZWRcIiApO1xuICAgICAgICAgICAgICAoIFwiZHluYW1pY1wiLFxuICAgICAgICAgICAgICAgIFwiTW9yZSBhY2N1cmF0ZSBhYnN0cmFjdGlvbjogb25seSB0aGUgYm9uZHMgdGhhdCBvY2N1ciBpbiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgaW5pdGlhbCBzdGF0ZSBvciBhIHJ1bGUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQgXFxcbiAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5LCBhcmUgY29uc2lkZXJlZFwiICk7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcud2l0aF9keW5hbWljX2NvbnRhY3RfbWFwICksXG4gICAgICAgIFwiY29udGFjdCBtYXAgZG9tYWluIGlzIHVzZWQgdG8gb3Zlci1hcHByb3hpbWF0ZSBzaWRlLWVmZmVjdHNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDMgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS12aWV3cy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF92aWV3c19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgbG9jYWwgdmlld3MgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb3VudGVycy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF9jb3VudGVyc19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgY291bnRlciBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvdW50ZXJzLWFjY3VyYWN5XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIm5vbi1yZWxhdGlvbmFsXCIsIFwiTG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBmb3IgZWFjaCB2YXJpYWJsZVwiO1xuICAgICAgICAgICAgICAoIFwib2N0YWdvbnNcIixcbiAgICAgICAgICAgICAgICBcIkxvd2VyIGFuZCB1cHBlciBib3VuZHMgZm9yIGVhY2ggdmFyaWFibGUsICBhbiBlYWNoIHN1bSBhbmQgXFxcbiAgICAgICAgICAgICAgICAgZWFjaCBkaWZmZXJlbmNlIGFtb25nIHR3byB2YXJpYWJsZXNcIiApO1xuICAgICAgICAgICAgICAoIFwibWlcIixcbiAgICAgICAgICAgICAgICBcIkFwcHJveGltYXRlIHJlZHVjZWQgcHJvZHVjdCBiZXR3ZWVuIGludGVydmFscyBhbmQgYWZmaW5lIFxcXG4gICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNcIiApO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJvY3RcIjtcbiAgICAgICAgICAgICAgXCJvY3RvXCI7XG4gICAgICAgICAgICAgIFwib2N0YWdvblwiO1xuICAgICAgICAgICAgICBcIk1JXCI7XG4gICAgICAgICAgICAgIFwiTWlcIjtcbiAgICAgICAgICAgICAgXCJPY3RcIjtcbiAgICAgICAgICAgICAgXCJPY3RvXCI7XG4gICAgICAgICAgICAgIFwiT2N0YWdvblwiO1xuICAgICAgICAgICAgICBcIk9jdGFnb25zXCI7XG4gICAgICAgICAgICAgIFwibm9uLXJlbGF0aW9uYWxcIjtcbiAgICAgICAgICAgICAgXCJuclwiO1xuICAgICAgICAgICAgICBcIm5vbi1yZWxcIjtcbiAgICAgICAgICAgICAgXCJub25fcmVsXCI7XG4gICAgICAgICAgICAgIFwibm9uX3JlbGF0aW9uYWxcIjtcbiAgICAgICAgICAgICAgXCJOb24tcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIk5yXCI7XG4gICAgICAgICAgICAgIFwiTm9uLXJlbFwiO1xuICAgICAgICAgICAgICBcIk5vbl9yZWxcIjtcbiAgICAgICAgICAgICAgXCJOb25fcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIENvbmZpZy5jb3VudGVyX2FuYWx5c2lzX2RvbWFpbiApLFxuICAgICAgICBcIkFic3RyYWN0IGRvbWFpbiBmb3IgY291bnRlciBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWRvdWJsZS1ib25kcy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgZG91YmxlIGJvbmRzIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA3IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tc2l0ZXMtYWNyb3NzLWJvbmRzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSB0aGUgYW5hbHlzaXMgb2YgdGhlIHJlbGF0aW9uIGFtb25nIHRoZSBzdGF0ZXMgb2Ygc2l0ZXMgaW4gXFxcbiAgICAgICAgIGNvbm5lY3RlZCBhZ2VudHNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDggXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1zaXRlcy1hY2Nyb3NzLWJvbmRzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSB0aGUgYW5hbHlzaXMgb2YgdGhlIHJlbGF0aW9uIGFtb25nIHRoZSBzdGF0ZXMgb2Ygc2l0ZXMgaW4gXFxcbiAgICAgICAgIGNvbm5lY3RlZCBhZ2VudHNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDggXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXN5bW1ldHJpZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fc3ltbWV0cmllcyxcbiAgICAgICAgXCJMb29rIHVwIGZvciBwYWlycyBvZiBzeW1tZXRyaWMgc2l0ZXNcIixcbiAgICAgICAgWyBhY3Rpb25zLCA4IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tdmVyYm9zaXR5LWxldmVsLWZvci12aWV3LWFuYWx5c2lzXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIk11dGVcIiwgXCJObyBpbmZvcm1hdGlvbiBkaXNwbGF5ZWRcIjtcbiAgICAgICAgICAgICAgXCJMb3dcIiwgXCJTaG93IGFuYWx5c2lzIHJlc3VsdCBvbmx5XCI7XG4gICAgICAgICAgICAgIFwiTWVkaXVtXCIsIFwiQWxzbyBzaG93IHdoaWNoIHJ1bGVzIGFyZSBhcHBsaWVkXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcIkFsc28gc2hvdyB3aGVuIG5ldyB2aWV3cyBhcmUgZGlzY292ZXJlZFwiO1xuICAgICAgICAgICAgICBcIkZ1bGxcIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIHB1dCBpbiB0aGUgd29ya2luZyBsaXN0XCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgKSxcbiAgICAgICAgXCJUdW5lIHRoZSB2ZXJib3NpdHkgbGV2ZWwgZm9yIHRoZSB2aWV3IGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA5IF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tdmVyYm9zaXR5LWxldmVsLWZvci1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTXV0ZVwiLCBcIk5vIGluZm9ybWF0aW9uIGRpc3BsYXllZFwiO1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcIlNob3cgYW5hbHlzaXMgcmVzdWx0IG9ubHlcIjtcbiAgICAgICAgICAgICAgXCJNZWRpdW1cIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIGFwcGxpZWRcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwiQWxzbyBzaG93IHdoZW4gcGF0dGVybnMgYXJlIGRpc2NvdmVyZWRcIjtcbiAgICAgICAgICAgICAgXCJGdWxsXCIsIFwiQWxzbyBzaG93IHdoaWNoIHJ1bGVzIGFyZSBwdXQgaW4gdGhlIHdvcmtpbmcgbGlzdFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaXR5X2FuYWx5c2lzICksXG4gICAgICAgIFwiVHVuZSB0aGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgcmVhY2hhYmlsaXR5IGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWhpZGUtb25lLWQtcmVsYXRpb25zLWZyb20tY2FydGVzaWFuLWRlY29tcG9zaXRpb25cIixcbiAgICAgICAgQm9vbCBDb25maWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbixcbiAgICAgICAgXCJGaWx0ZXIgb3V0IDEtZCByZWxhdGlvbnMgZnJvbSB0aGUgQ2FydGVzaWFuIGRlY29tcG9zaXRpb25cIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDExIF0sXG4gICAgICAgIERldmVsb3BwZXIgKTtcbiAgICAgICggXCItLXNtYXNoLXJlbGF0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5zbWFzaF9yZWxhdGlvbnMsXG4gICAgICAgIFwiUmVjb21iaW5lIHJlbGF0aW9ucyB0byBnZXQgYSBtb3JlIHByZWNpc2UgJiBjb21wYWN0IG91dHB1dFwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTIgXSxcbiAgICAgICAgRGV2ZWxvcHBlciApO1xuICAgICAgKCBcIi0tb3V0cHV0LW1vZGUtZm9yLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJyYXdcIiwgXCJubyBwb3N0LXByb2Nlc3NpbmdcIjtcbiAgICAgICAgICAgICAgXCJrYXBwYVwiLCBcImthcHBhIG1vZGVcIjtcbiAgICAgICAgICAgICAgXCJlbmdsaXNoXCIsIFwibmF0dXJhbCBsYW5ndWFnZVwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnVzZV9uYXR1cmFsX2xhbmd1YWdlICksXG4gICAgICAgIFwicG9zdC1wcm9jZXNzIHJlbGF0aW9uIGFuZCBvdXRwdXQgdGhlIHJlc3VsdCBpbiB0aGUgY2hvc2VuIGZvcm1hdFwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTMgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLWxvY2FsLXRyYWNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyxcbiAgICAgICAgXCJDb21wdXRlIHRoZSBsb2NhbCB0cmFjZXMgb2YgaW50ZXJlc3RpbmcgcGFydHMgb2YgYWdlbnQgaW50ZXJmYWNlc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDk7IHRyYWNlcywgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXNob3ctcnVsZS1uYW1lcy1pbi1sb2NhbC10cmFjZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyxcbiAgICAgICAgXCJBbm5vdGF0ZSBlYWNoIHRyYW5zaXRpb24gd2l0aCB0aGUgbmFtZSBvZiB0aGUgcnVsZXMgaW4gdHJhY2UgXFxcbiAgICAgICAgIGFic3RyYWN0aW9uXCIsXG4gICAgICAgIFsgdHJhY2VzLCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tdXNlLW1hY3JvdHJhbnNpdGlvbnMtaW4tbG9jYWwtdHJhY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyxcbiAgICAgICAgXCJVc2UgbWFjcm90cmFuc2l0aW9ucyB0byBnZXQgYSBjb21wYWN0IHRyYWNlIHVwIHRvIGNoYW5nZSBvZiB0aGUgXFxcbiAgICAgICAgIGludGVybGVhdmluZyBvcmRlciBvZiBjb21tdXRpbmcgbWljcm90cmFuc2l0aW9uc1wiLFxuICAgICAgICBbIHRyYWNlcywgMiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWlnbm9yZS10cml2aWFsLWxvc2FuZ2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZ2VzLFxuICAgICAgICBcIkRvIG5vdCB1c2UgbWFjcm90cmFuc2l0aW9ucyBmb3Igc2ltcGxpZnlpbmcgdHJpdmlhbCBsb3Nhbmdlc1wiLFxuICAgICAgICBbIHRyYWNlcywgMyBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWFkZC1zaW5ndWxhci1tYWNyb3N0YXRlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMsXG4gICAgICAgIFwiQ29tcGxldGUgdGhlIHNpbXBsaWNpYWwgY29tcGxleGVzIHdpdGggc2luZ3VsYXIgaW50ZXJzZWN0aW9uIG9mIFxcXG4gICAgICAgICBoaWdoZXItZGltZW5zaW9uIGZhY2VzXCIsXG4gICAgICAgIFsgdHJhY2VzLCA0IF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYWRkLXNpbmd1bGFyLW1pY3Jvc3RhdGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyxcbiAgICAgICAgXCJDb21wbGV0ZSB0aGUgc2ltcGxpY2lhbCBjb21wbGV4ZXMgd2l0aCBzaW5ndWxhciBpbnRlcnNlY3Rpb24gb2YgXFxcbiAgICAgICAgIGhpZ2hlci1kaW1lbnNpb24gZmFjZXNcIixcbiAgICAgICAgWyB0cmFjZXMsIDUgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXNlcGFyYXRpbmctdHJhbnNpdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIHRyYW5zaXRpb25zIHRoYXQgc2VwYXJhdGVzIHN0cm9uZ2x5IGNvbm5lY3RlZCBzZXQgb2YgXFxcbiAgICAgICAgIGNvbmZpZ3VyYXRpb25zXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMTA7IHRyYWNlcywgNiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLW91dHB1dC1kaXJlY3RvcnlcIixcbiAgICAgICAgTXVsdGlFeHRcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIi0tb3V0cHV0LWNvbnRhY3QtbWFwLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgICAgXCItLW91dHB1dC1pbmZsdWVuY2UtbWFwLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgICAgXCItLW91dHB1dC1sb2NhbC10cmFjZXMtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWxvZy1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICBdLFxuICAgICAgICBcIkRlZmF1bHQgcmVwb3NpdG9yeSBmb3Igb3V0cHV0c1wiLFxuICAgICAgICBbIG91dHB1dCwgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICgqIENPTlRBQ1QgTUFQICopXG4gICAgICAoIFwiLS1vdXRwdXQtY29udGFjdC1tYXAtZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcub3V0cHV0X2NtX2RpcmVjdG9yeSxcbiAgICAgICAgXCJwdXQgdGhlIGNvbnRhY3QgbWFwIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnlcIixcbiAgICAgICAgWyBvdXRwdXQsIDA7IGNvbnRhY3RfbWFwLCAzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWNvbnRhY3QtbWFwXCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuY29udGFjdF9tYXBfZmlsZSxcbiAgICAgICAgXCJmaWxlIG5hbWUgZm9yIHRoZSBjb250YWN0IG1hcCBvdXRwdXRcIixcbiAgICAgICAgWyBvdXRwdXQsIDE7IGNvbnRhY3RfbWFwLCA0IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29udGFjdC1tYXAtZm9ybWF0XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkRPVFwiLCBcImRvdCBmb3JtYXRcIjtcbiAgICAgICAgICAgICAgXCJHRVBISVwiLCBcIkdlcGhpIGZvcm1hdFwiO1xuICAgICAgICAgICAgICAoKlwiSFRNTFwiLFwiSFRNTCBmb3JtYXRcIiopXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuY29udGFjdF9tYXBfZm9ybWF0ICksXG4gICAgICAgIFwiVHVuZSB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGNvbnRhY3QgbWFwXCIsXG4gICAgICAgIFsgb3V0cHV0LCAyOyBjb250YWN0X21hcCwgNSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbnRhY3QtbWFwLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcIkNvbGxlY3QgaW5mbyBmcm9tIHJocyBvZiBydWxlcyBhbmQgaW5pdGlhbCBzdGF0ZVwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJPbmx5IGNvbnNpZGVyIHJlYWNoYWJsZSBydWxlc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsICksXG4gICAgICAgIFwiVHVuZSB0aGUgYWNjdXJhY3kgbGV2ZWwgb2YgdGhlIGNvbnRhY3QgbWFwXCIsXG4gICAgICAgIFsgY29udGFjdF9tYXAsIDYgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1wb2x5bWVyLWRldGVjdGlvbi1hY2N1cmFjeS1sZXZlbFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJMb3dcIiwgXCJiYXNlZCBvbmx5IG9uIHRoZSBjb250YWN0IG1hcFwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJ1c2UgcmVhY2hhYmlsaXR5IGFuYWx5c2lzIGFzIHdlbGxcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5zY2NfYWNjdXJhY3lfbGV2ZWwgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBhY2N1cmFjeSBsZXZlbCBvZiB0aGUgZGV0ZWN0aW9uIG9mIHBvbHltZXJzXCIsXG4gICAgICAgIFsgY29udGFjdF9tYXAsIDcgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1wdXJlLWNvbnRhY3RcIixcbiAgICAgICAgQm9vbCBDb25maWcucHVyZV9jb250YWN0LFxuICAgICAgICBcInNob3cgaW4gdGhlIGNvbnRhY3QgbWFwICBvbmx5IHRoZSBzaXRlcyB3aXRoIGEgYmluZGluZyBzdGF0ZVwiLFxuICAgICAgICBbIGNvbnRhY3RfbWFwLCA4IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCogSU5GTFVFTkNFIE1BUCAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXAtZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcub3V0cHV0X2ltX2RpcmVjdG9yeSxcbiAgICAgICAgXCJwdXQgdGhlIGluZmx1ZW5jZSBtYXAgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgMzsgaW5mbHVlbmNlX21hcCwgMiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLW91dHB1dC1pbmZsdWVuY2UtbWFwXCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuaW5mbHVlbmNlX21hcF9maWxlLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDM7IGluZmx1ZW5jZV9tYXAsIDMgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1pbmZsdWVuY2UtbWFwLWZvcm1hdFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJET1RcIiwgXCJkb3QgZm9ybWF0XCI7IFwiRElNXCIsIFwiRElNIGZvcm1hdFwiOyBcIkhUTUxcIiwgXCJIVE1MIGZvcm1hdFwiIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5pbmZsdWVuY2VfbWFwX2Zvcm1hdCApLFxuICAgICAgICBcIlR1bmUgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgb3V0cHV0LCA0OyBpbmZsdWVuY2VfbWFwLCA0IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCogTE9DQUwgVFJBQ0VTICopXG4gICAgICAoIFwiLS1vdXRwdXQtbG9jYWwtdHJhY2VzLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBmaWxlcyBhYm91dCBsb2NhbCB0cmFjZXMgaW4gdGhpcyBkaXJlY3RvcnlcIixcbiAgICAgICAgWyBvdXRwdXQsIDU7IHRyYWNlcywgNyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWxvY2FsLXRyYWNlcy1mb3JtYXRcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbIFwiRE9UXCIsIFwiZG90IGZvcm1hdFwiOyBcIkhUTUxcIiwgXCJIVE1MIGZvcm1hdFwiIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5sb2NhbF90cmFjZV9mb3JtYXQgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgbG9jYWwgdHJhbnNpdGlvbiBzeXN0ZW1zXCIsXG4gICAgICAgIFsgb3V0cHV0LCA2OyB0cmFjZXMsIDggXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoKiBMT0cgKilcbiAgICAgICggXCItLW91dHB1dC1sb2ctZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcub3V0cHV0X2RpcmVjdG9yeSxcbiAgICAgICAgXCJwdXQgdGhlIGxvZyBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgNzsgZGVidWcsIDAgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1kZWJ1Z1wiLFxuICAgICAgICBCb29sIENvbmZpZy50cmFjZSxcbiAgICAgICAgXCJkdW1wIGRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbIGRlYnVnLCAxIF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tZGVidWctbW9kZVwiLFxuICAgICAgICBCb29sIENvbmZpZy50cmFjZSxcbiAgICAgICAgXCJkdW1wIGRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbIGRlYnVnLCAyIF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tZGVidWdnaW5nLW1vZGVcIixcbiAgICAgICAgQm9vbCBDb25maWcudHJhY2UsXG4gICAgICAgIFwiZHVtcCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgWyBkZWJ1ZywgMyBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLXVuc2FmZS1tb2RlXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnVuc2FmZSxcbiAgICAgICAgXCJleGNlcHRpb25zIGFyZSBnYXRoZXJlZCBhdCB0aGUgZW5kIG9mIHRoZSBjb21wdXRhdGlvbiwgaW5zdGVhZCBvZiBcXFxuICAgICAgICAgaGFsdGluZyBpdCBcIixcbiAgICAgICAgWyBkZWJ1ZywgNCBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgICAgQm9vbCBDb25maWcucHJpbnRfZWZmaWNpZW5jeSxcbiAgICAgICAgXCJwcm9tcHQgQ1BVIHRpbWUgYW5kIHZhcmlvdXMgZGF0YXNcIixcbiAgICAgICAgWyBkZWJ1ZywgNSBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLXJ1bGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlcyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgcnVsZXNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItY29uc3RyYWludHNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiByZWZpbmVtZW50IGNvbnN0cmFpbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLW5yLWNvbnN0cmFpbnRzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2Ygbm9uIHJlbGF0aW9uYWwgcmVmaW5lbWVudCBjb25zdHJhaW50c1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1pbmZsdWVuY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBpbmZsdWVuY2UgcmVsYXRpb25zXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLWRlYWQtcnVsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIGRlYWQgcnVsZXNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItbm9uLXdlYWtseS1yZXZlcnNpYmxlLXRyYW5zaXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9uc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1vZi1ydWxlcy13aXRoLW5vbi13ZWFrbHktcmV2ZXJzaWJsZS10cmFuc2l0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHJ1bGVzIHdpdGggbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLXNjY1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50c1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLWF2ZXJhZ2Utc2NjXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MsXG4gICAgICAgIFwiZHVtcCB0aGUgYXZlcmFnZSBzaXplIG9mIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtdGltaW5nXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX3RpbWluZyxcbiAgICAgICAgXCJkdW1wIENQVSB0aW1lXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWZpbGVcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5iYWNrZG9vcl9maWxlLFxuICAgICAgICBcInNlbGVjdCB0aGUgZmlsZSB0byBkdW1wIGJhY2tkb29yIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmJhY2tkb29yX2RpcmVjdG9yeSxcbiAgICAgICAgXCJzZWxlY3QgdGhlIGRpcmVjdG9yeSBmb3IgdGhlIGZpbGUgdG8gZHVtcCBiYWNrZG9vciBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgXVxuXG5sZXQgZ2V0X29wdGlvbiBlcnJvciA9XG4gIGxldCB0aXRsZSA9IFZlcnNpb24udmVyc2lvbl9rYXNhX2Z1bGxfbmFtZSBpblxuICBsZXQgKCkgPSBTdXBlcmFyZ1RrLnBhcnNlIH50aXRsZSBvcHRpb25zIEZpbGVOYW1lcy5pbnB1dCBpblxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYVxuICAgICAgKClcbiAgaW5cbiAgZXJyb3IsIHBhcmFtZXRlcnMsICFGaWxlTmFtZXMuaW5wdXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIG5lZWQgdG8gc3BlY2lmeSBtZXNzYWdlcyB3aGVyZSB0aGVyZSBpcyBhbiBlcnJvciAqKVxubGV0IHRvc3MgOiAnYSAnYi4gJ2EgLT4gJ2IgPVxuIGZ1biBlIC0+XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcInRvc3NcIikgW3wgSnMuVW5zYWZlLmluamVjdCBlIHxdXG4gIGluXG4gIGFzc2VydCBmYWxzZVxuXG5sZXQgaWQgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaWRcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgZGVidWcgfmxvYyB2YWx1ZSA9XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJkZWJ1Z1wiKVxuICAgICAgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZTsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChcIlxcbiAgXCIgXiBsb2MpKSB8XVxuICBpblxuICAoKVxuXG5sZXQgbG9nIH5sb2MgdmFsdWUgPVxuICBsZXQgKCkgPVxuICAgIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJsb2dcIilcbiAgICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWU7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAoXCJcXG4gIFwiIF4gbG9jKSkgfF1cbiAgaW5cbiAgKClcblxubGV0IGluZm8gfmxvYyB2YWx1ZSA9XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImluZm9cIilcbiAgICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWU7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAoXCJcXG4gIFwiIF4gbG9jKSkgfF1cbiAgaW5cbiAgKClcblxubGV0IHdhcm4gfmxvYyB2YWx1ZSA9XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcIndhcm5cIilcbiAgICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWU7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAoXCJcXG4gIFwiIF4gbG9jKSkgfF1cbiAgaW5cbiAgKClcblxubGV0IGVycm9yIH5sb2MgdmFsdWUgPVxuICBsZXQgKCkgPVxuICAgIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgICAgKEpzLlVuc2FmZS5qc19leHByIFwiZXJyb3JcIilcbiAgICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWU7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAoXCJcXG4gIFwiIF4gbG9jKSkgfF1cbiAgaW5cbiAgKClcblxubGV0IGxvZ19ncm91cCBsYWJlbCA9XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJsb2dfZ3JvdXBcIilcbiAgICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgbGFiZWwgfF1cbiAgaW5cbiAgKClcblxubGV0IGxvZ19ncm91cF9lbmQgKCkgOiB1bml0ID1cbiAgbGV0ICgpID0gSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImxvZ19ncm91cF9lbmRcIikgW3x8XSBpblxuICAoKVxuXG5sZXQganF1ZXJ5X29uIChzZWxlY3RvciA6IHN0cmluZykgKGV2ZW50IDogc3RyaW5nKSBoYW5kbGVyID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwianF1ZXJ5T25cIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHNlbGVjdG9yKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBldmVudCk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IGhhbmRsZXI7XG4gICAgfF1cblxubGV0IG9wdGlvbl9zdHJpbmcgKGlkIDogc3RyaW5nIG9wdGlvbikgPVxuICBtYXRjaCBpZCB3aXRoXG4gIHwgU29tZSBpZCAtPiBKcy5zb21lIChKcy5zdHJpbmcgaWQpXG4gIHwgTm9uZSAtPiBKcy5udWxsXG5cbmxldCBwbG90UE5HID8ocGxvdFN0eWxlSWQgOiBzdHJpbmcgb3B0aW9uKSAocGxvdERpdklkIDogc3RyaW5nKSAodGl0bGUgOiBzdHJpbmcpXG4gICAgKHBsb3ROYW1lIDogc3RyaW5nKSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInBsb3RQTkdcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHBsb3REaXZJZCk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdGl0bGUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHBsb3ROYW1lKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKG9wdGlvbl9zdHJpbmcgcGxvdFN0eWxlSWQpO1xuICAgIHxdXG5cbmxldCBwbG90U1ZHID8ocGxvdFN0eWxlSWQgOiBzdHJpbmcgb3B0aW9uKSAocGxvdERpdklkIDogc3RyaW5nKSAodGl0bGUgOiBzdHJpbmcpXG4gICAgKHBsb3ROYW1lIDogc3RyaW5nKSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInBsb3RTVkdcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHBsb3REaXZJZCk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdGl0bGUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHBsb3ROYW1lKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKG9wdGlvbl9zdHJpbmcgcGxvdFN0eWxlSWQpO1xuICAgIHxdXG5cbmxldCBzYXZlRmlsZSB+KGRhdGEgOiAnYSBKcy50KSB+KG1pbWUgOiBzdHJpbmcpIH4oZmlsZW5hbWUgOiBzdHJpbmcpIDogdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInNhdmVGaWxlXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgZGF0YTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBtaW1lKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBmaWxlbmFtZSk7XG4gICAgfF1cblxudHlwZSBtZXRoID0gWyBgREVMRVRFIHwgYEdFVCB8IGBIRUFEIHwgYE9QVElPTlMgfCBgUEFUQ0ggfCBgUE9TVCB8IGBQVVQgXVxuXG5sZXQgbWV0aG9kX3RvX3N0cmluZyA6IG1ldGggLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBgREVMRVRFIC0+IFwiREVMRVRFXCJcbiAgfCBgR0VUIC0+IFwiR0VUXCJcbiAgfCBgSEVBRCAtPiBcIkhFQURcIlxuICB8IGBPUFRJT05TIC0+IFwiT1BUSU9OU1wiXG4gIHwgYFBBVENIIC0+IFwiUEFUQ0hcIlxuICB8IGBQT1NUIC0+IFwiUE9TVFwiXG4gIHwgYFBVVCAtPiBcIlBVVFwiXG5cbmxldCBhamF4X3JlcXVlc3QgPyh0aW1lb3V0IDogZmxvYXQgb3B0aW9uKSB+KHVybCA6IHN0cmluZykgfihtZXRoIDogbWV0aClcbiAgICA/KGRhdGEgOiBzdHJpbmcgb3B0aW9uKSB+KGhhbmRsZXIgOiBpbnQgLT4gc3RyaW5nIC0+IHVuaXQpID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwiYWpheFJlcXVlc3RcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHVybCk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgKG1ldGhvZF90b19zdHJpbmcgbWV0aCkpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdFxuICAgICAgICAoSnMuT3B0Lm9wdGlvblxuICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgIHwgU29tZSBkYXRhIC0+IFNvbWUgKEpzLnN0cmluZyBkYXRhKSkpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdFxuICAgICAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHN0YXR1cyByZXNwb25zZSAtPlxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBkZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAoXCJyZXF1ZXN0IFwiIF4gdXJsIF4gXCIgYW5zd2VyOiBcIiBeIHN0cmluZ19vZl9pbnQgc3RhdHVzKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IGRlYnVnIH5sb2M6X19MT0NfXyByZXNwb25zZSBpblxuICAgICAgICAgICAgIGhhbmRsZXIgc3RhdHVzIChKcy50b19zdHJpbmcgcmVzcG9uc2UpKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy5PcHQub3B0aW9uXG4gICAgICAgICAgIChtYXRjaCB0aW1lb3V0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgfCBTb21lIHRpbWVvdXQgLT4gU29tZSB0aW1lb3V0KSk7XG4gICAgfF1cblxuKCogVGhpcyBpcyB0byBoYW5kbGUgZXJyb3JzIGJlaW5nIGxvc3QgaW4gYXN5bmNzXG4gICBzbyB0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgYXN5bmMgY2FsbHMgaW4gdGhlXG4gICBjb2RlLlxuKilcbmxldCBhc3luYyBsb2MgKHRhc2sgOiB1bml0IC0+ICdhIEx3dC50KSA6IHVuaXQgPVxuICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzX2V2ZW50cy5hc3luYyAoZnVuICgpIC0+XG4gICAgICBMd3QuY2F0Y2ggdGFzayAoZnVuIGV4biAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuIH5sb2M6X19MT0NfX1xuICAgICAgICAgICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgIChcIkFzeW5jIGVycm9yIGF0IFwiIF4gbG9jIF4gXCI6XFxuXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfdHJhY2UgPVxuICAgICAgICAgICAgaWYgUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1cyAoKSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IHRyYWNlID0gUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSBpblxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHRyYWNlID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgXCJCYWNrdHJhY2U6IFwiIF4gdHJhY2VcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFwiQ291bGRuJ3QgZ2V0IGJhY2t0cmFjZSB3aGlsZSBiYWNrdHJhY2UgcmVjb3JkIGlzIGVuYWJsZWQsIFxcXG4gICAgICAgICAgICAgICAgIG1pZ2h0IGJlIGJlY2F1c2Ugb2YganNvbyBvciByZWFjdCA6L1wiXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgXCJFbmFibGUgYmFja3RyYWNlIHJlY29yZGluZyB0byAoaG9wZWZ1bGx5PykgZ2V0IGJhY2t0cmFjZVwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSB3YXJuIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIGxvZ190cmFjZSkgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuXG5sZXQgZ3VpZCAoKSA6IHN0cmluZyA9XG4gIEpzLnRvX3N0cmluZyAoSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImd1aWRcIikgW3x8XSlcblxubGV0IG1vZGFsIH4oaWQgOiBzdHJpbmcpIH4oYWN0aW9uIDogc3RyaW5nKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJtb2RhbFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBhY3Rpb24pIHxdXG5cbmxldCBlbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIChsYWJlbCA6IHN0cmluZykgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImVsZW1lbnREYXRhXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCBlbGVtZW50OyBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbGFiZWwpIHxdXG5cbmxldCBjcmVhdGVfc29ydCAoaWQgOiBzdHJpbmcpIChoYW5kbGVyIDogRG9tX2h0bWwuZXZlbnQgSnMudCAtPiAnYiAtPiB1bml0KSA6XG4gICAgdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImNyZWF0ZVNvcnRcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IGhhbmRsZXIgfF1cblxubGV0IGNoaWxkcmVuX3ZhbHVlIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAoc2VsZWN0b3IgOiBzdHJpbmcpXG4gICAgKG1hcCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiAnYSkgOiAnYSBsaXN0ID1cbiAgQXJyYXkudG9fbGlzdFxuICAgIChKcy50b19hcnJheVxuICAgICAgIChKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAgICAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJjaGlsZHJlblZhbHVlXCIpXG4gICAgICAgICAgW3xcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudDtcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzZWxlY3Rvcik7XG4gICAgICAgICAgICBKcy5VbnNhZmUuaW5qZWN0IG1hcDtcbiAgICAgICAgICB8XSkpXG5cbmxldCBoaWRlX2NvZGVtaXJyb3IgKCkgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImhpZGVDb2RlTWlycm9yXCIpIFt8fF1cblxubGV0IHNob3dfY29kZW1pcnJvciAoKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwic2hvd0NvZGVNaXJyb3JcIikgW3x8XVxuXG5sZXQgc3RyaW5nX29mX29wdGlvbiBzdHJpbmdfb2ZfdmFsdWUgaV9vcHQgPVxuICBtYXRjaCBpX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBcIk5vbmVcIlxuICB8IFNvbWUgaSAtPiBcIlNvbWUgXCIgXiBzdHJpbmdfb2ZfdmFsdWUgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgb3B0aW9uX2xhYmVsID8obWF4X3NpemUgPSAyNCkgbGFiZWwgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGxhYmVsID4gbWF4X3NpemUgdGhlblxuICAgIFN0cmluZy5zdWIgbGFiZWwgMCAobWF4X3NpemUgLSAxKSBeIFwiLi4uXCJcbiAgZWxzZVxuICAgIGxhYmVsXG5cbmxldCBleHBvcnRfY29udHJvbHMgfihleHBvcnRfc2VsZWN0X2lkIDogc3RyaW5nKSB+KGV4cG9ydF9maWxlbmFtZV9pZCA6IHN0cmluZylcbiAgICB+KGV4cG9ydF9idXR0b25faWQgOiBzdHJpbmcpIH4oZXhwb3J0X2RhdGFfbGFiZWwgOiBzdHJpbmcpID1cbiAgbGV0IGV4cG9ydF9mb3JtYXRzIDogc3RyaW5nIGxpc3QgPSBbIGV4cG9ydF9kYXRhX2xhYmVsIF0gaW5cbiAgbGV0IGV4cG9ydF9maWxlbmFtZSA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgZXhwb3J0X2ZpbGVuYW1lX2lkO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJmaWxlIG5hbWVcIjtcbiAgICAgICAgXVxuICAgICAgKClcbiAgaW5cbiAgbGV0IGV4cG9ydF9idXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBleHBvcnRfYnV0dG9uX2lkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwicHVsbC1yaWdodFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImV4cG9ydFwiIF1cbiAgaW5cbiAgbGV0IGV4cG9ydF9mb3JtYXRzX3NlbGVjdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gZm9ybWF0IC0+XG4gICAgICAgIFslaHRtbFxuICAgICAgICAgIHt8PG9wdGlvbiB2YWx1ZT1cInx9IGZvcm1hdCB7fFwiPnx9IChIdG1sLmNkYXRhIGZvcm1hdCkge3w8L29wdGlvbj58fV0pXG4gICAgICBleHBvcnRfZm9ybWF0c1xuICBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1pbmxpbmVcIj5cbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgaWQ9XCJ8fVxuICAgICAgZXhwb3J0X3NlbGVjdF9pZFxuICAgICAge3xcIj48b3B0aW9uIHZhbHVlPVwicG5nXCI+cG5nPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cInN2Z1wiPnN2Zzwvb3B0aW9uPnx9XG4gICAgICBleHBvcnRfZm9ybWF0c19zZWxlY3RcbiAgICAgIHt8PC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveC1pbmxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx9XG4gICAgICBbIGV4cG9ydF9maWxlbmFtZSBdXG4gICAgICB7fFxuICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3gtaW5saW5lXCI+XG4gICAgICAgICAgICAgIHx9XG4gICAgICBbIGV4cG9ydF9idXR0b24gXVxuICAgICAge3xcbiAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2Pnx9XVxuXG5sZXQgZG9jdW1lbnQgPSBEb21faHRtbC53aW5kb3cjIy5kb2N1bWVudFxuXG5sZXQgYXJndW1lbnRzIChrZXkgOiBzdHJpbmcpIDogc3RyaW5nIGxpc3QgPVxuICBMaXN0Lm1hcCBzbmQgKExpc3QuZmlsdGVyIChmdW4gKGssIF8pIC0+IGtleSA9IGspIFVybC5DdXJyZW50LmFyZ3VtZW50cylcblxubGV0IHZlcnNpb24gPyh0ZXN0IDogJ2Egb3B0aW9uID0gTm9uZSkgfihwcm9kIDogJ2EpIH4oZGV2IDogJ2EpIDogJ2EgPVxuICBsZXQgdmVyc2lvbiA6IHN0cmluZyBsaXN0ID0gYXJndW1lbnRzIFwidmVyc2lvblwiIGluXG4gIG1hdGNoIHRlc3QsIHZlcnNpb24gd2l0aFxuICB8IFNvbWUgdGVzdCwgWyBcInRlc3RcIiBdIC0+IHRlc3RcbiAgfCBfLCBbIFwiZGV2XCIgXSAtPiBkZXZcbiAgfCBfIC0+IHByb2RcblxubGV0IG5hdmxpIGxhYmVsIGZvcmNlX2NsYXNzIGRlY29yYXRpb25zID1cbiAgbGV0IGRlZmF1bHRfYXR0cmlidXRlcyA9XG4gICAgWyBIdG1sLmFfaWQgKFwibmF2XCIgXiBsYWJlbCk7IEh0bWwuYV9yb2xlIFsgXCJwcmVzZW50YXRpb25cIiBdIF1cbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIG1hdGNoIGZvcmNlX2NsYXNzIHdpdGhcbiAgICB8IE5vbmUgLT4gZGVmYXVsdF9hdHRyaWJ1dGVzXG4gICAgfCBTb21lIGwgLT4gVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzIGwgOjogZGVmYXVsdF9hdHRyaWJ1dGVzXG4gIGluXG4gIGxldCB0ZXh0ID1cbiAgICBSZWFjdGl2ZURhdGEuUkxpc3QuY29uY2F0XG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LnNpbmdsZXRvbiAoSHRtbC5jZGF0YSBsYWJlbCkpXG4gICAgICBkZWNvcmF0aW9uc1xuICBpblxuICBIdG1sLmxpIH5hOmF0dHJpYnV0ZXNcbiAgICBbXG4gICAgICBUeXhtbF9qcy5SLkh0bWwuYVxuICAgICAgICB+YTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS10b2dnbGVcIiBcInRhYlwiO1xuICAgICAgICAgICAgSHRtbC5hX3JvbGUgWyBcInRhYlwiIF07XG4gICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1jb250cm9sc1wiIGxhYmVsO1xuICAgICAgICAgICAgSHRtbC5hX2hyZWYgKFwiI1wiIF4gbGFiZWwpO1xuICAgICAgICAgIF1cbiAgICAgICAgdGV4dDtcbiAgICBdXG5cbmxldCBuYXZ0YWJzIG5hdnRhYnNfaWQgPSBmdW5jdGlvblxuICB8IFtdIHwgKF8sIFNvbWUgXywgXykgOjogXyAtPiBDb21tb24udG9zcyBcInVpX2NvbW1vbi5uYXZ0YWJzIDogbWlzc2luZyB0YWJzXCJcbiAgfCAodGksIE5vbmUsIGwpIDo6IHQgLT5cbiAgICBIdG1sLnVsXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBuYXZ0YWJzX2lkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibmF2XCI7IFwibmF2LXRhYnNcIiBdO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJ0YWJsaXN0XCI7XG4gICAgICAgIF1cbiAgICAgIChuYXZsaSB0aSAoU29tZSAoUmVhY3QuUy5jb25zdCBbIFwiYWN0aXZlXCIgXSkpIGxcbiAgICAgIDo6IExpc3QubWFwIChmdW4gKHQsIGFfY2xhc3MsIGxpKSAtPiBuYXZsaSB0IGFfY2xhc3MgbGkpIHQpXG5cbmxldCBvbmVuYXZjb250ZW50IGxhYmVsIGFjdGl2ZSBjbGFzc2VzIGNvbnRlbnQgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgbGFiZWw7XG4gICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgIChpZiBhY3RpdmUgdGhlblxuICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCIgOjogXCJ0YWItcGFuZVwiIDo6IFwiYWN0aXZlXCIgOjogY2xhc3Nlc1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJmbGV4LWNvbnRlbnRcIiA6OiBcInRhYi1wYW5lXCIgOjogY2xhc3Nlcyk7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJ0YWJwYW5lbFwiO1xuICAgICAgXVxuICAgIGNvbnRlbnRcblxubGV0IG5hdmNvbnRlbnQgP2lkIGNsYXNzZXMgPSBmdW5jdGlvblxuICB8IFtdIC0+IENvbW1vbi50b3NzIFwidWlfY29tbW9uLm5hdmNvbnRlbnQgOiBtaXNzaW5nIGNvbnRlbnRcIlxuICB8ICh0LCBjbCwgYykgOjogbCAtPlxuICAgIGxldCBpZCA6IFs+IGBJZCBdIEh0bWwuYXR0cmliIGxpc3QgPVxuICAgICAgbWF0Y2ggaWQgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgaWQgLT4gWyBIdG1sLmFfaWQgaWQgXVxuICAgIGluXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICAoW1xuICAgICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAoWyBcInBhbmVsLWNvbnRlbnRcIjsgXCJ0YWItY29udGVudFwiOyBcImZsZXgtY29udGVudFwiIF0gQCBjbGFzc2VzKTtcbiAgICAgICAgIF1cbiAgICAgICAgQCBpZClcbiAgICAgIChvbmVuYXZjb250ZW50IHQgdHJ1ZSBjbCBjXG4gICAgICA6OiBMaXN0Lm1hcCAoZnVuICh0LCBjbCwgYykgLT4gb25lbmF2Y29udGVudCB0IGZhbHNlIGNsIGMpIGwpXG5cbmxldCBsZXZlbCA/ZGVidWcgP2luZm8gP2xvZyA/d2FybmluZyA/ZXJyb3IgKCkgOiAnYSBsaXN0ID1cbiAgbGV0IGxldmVsIDogc3RyaW5nIGxpc3QgPSBhcmd1bWVudHMgXCJsZXZlbFwiIGluXG4gIGxldCBleHRyYWN0IGtleSB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgTm9uZSAtPiBbXVxuICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgaWYgTGlzdC5tZW0ga2V5IGxldmVsIHRoZW5cbiAgICAgICAgWyB2YWx1ZSBdXG4gICAgICBlbHNlXG4gICAgICAgIFtdXG4gIGluXG4gIGV4dHJhY3QgXCJkZWJ1Z1wiIGRlYnVnIEAgZXh0cmFjdCBcImluZm9cIiBpbmZvIEAgZXh0cmFjdCBcImxvZ1wiIGxvZ1xuICBAIGV4dHJhY3QgXCJ3YXJuaW5nXCIgd2FybmluZyBAIGV4dHJhY3QgXCJlcnJvclwiIGVycm9yIEAgW11cblxubGV0IGZlYXR1cmVzID8oZGVmYXVsdCA9IFtdKSAob3B0aW9ucyA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYSBsaXN0ID1cbiAgbGV0IGZlYXR1cmVzIDogc3RyaW5nIGxpc3QgPSBhcmd1bWVudHMgXCJmZWF0dXJlXCIgaW5cbiAgbGV0IG1hdGNoZXMgOiAnYSBsaXN0ID1cbiAgICBMaXN0Lm1hcCBzbmRcbiAgICAgIChMaXN0LmZpbHRlciAoZnVuIChmZWF0dXJlLCBfKSAtPiBMaXN0Lm1lbSBmZWF0dXJlIGZlYXR1cmVzKSBvcHRpb25zKVxuICBpblxuICBtYXRjaCBtYXRjaGVzIHdpdGhcbiAgfCBbXSAtPiBkZWZhdWx0XG4gIHwgXyA6OiBfIC0+IG1hdGNoZXNcblxubGV0IGlucHV0X2NoYW5nZSBpbnB1dF9kb20gc2lnbmFsX2hhbmRsZXIgPVxuICBpbnB1dF9kb20jIy5vbmNoYW5nZSA6PVxuICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNpZ25hbF9oYW5kbGVyIChKcy50b19zdHJpbmcgaW5wdXRfZG9tIyMudmFsdWUpIGluXG4gICAgICAgIEpzLl90cnVlKVxuXG5tb2R1bGUgdHlwZSBNZW51ID0gc2lnXG4gIHZhbCBjb250ZW50IDpcbiAgICB1bml0IC0+XG4gICAgWz4gYEJ1dHRvbiB8IGBEaXYgfCBgVWwgfCBgQSBvZiBbPiBgUENEQVRBIHwgYFNwYW4gXSBdIFR5eG1sX2pzLkh0bWw1LmVsdFxuICAgIGxpc3RcblxuICB2YWwgb25sb2FkIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgRGl2ID0gc2lnXG4gIHZhbCBpZCA6IHN0cmluZ1xuICB2YWwgY29udGVudCA6IHVuaXQgLT4gSHRtbF90eXBlcy5kaXZfY29udGVudF9mdW4gVHl4bWxfanMuSHRtbC5lbHQgbGlzdFxuICB2YWwgb25sb2FkIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgVGFiID0gc2lnXG4gIHZhbCBuYXZsaSA6XG4gICAgdW5pdCAtPlxuICAgIEh0bWxfdHlwZXMuZmxvdzVfd2l0aG91dF9pbnRlcmFjdGl2ZSBUeXhtbF9qcy5IdG1sNS5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnRcblxuICB2YWwgY29udGVudCA6IHVuaXQgLT4gSHRtbF90eXBlcy5kaXZfY29udGVudF9mdW4gVHl4bWxfanMuSHRtbDUuZWx0IGxpc3RcbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgb25yZXNpemUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTdWJUYWIgPSBzaWdcbiAgaW5jbHVkZSBUYWJcblxuICB2YWwgcGFyZW50X2hpZGUgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHBhcmVudF9zaG93biA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFBhbmVsID0gc2lnXG4gIHZhbCBjb250ZW50IDogdW5pdCAtPiBIdG1sX3R5cGVzLmRpdiBUeXhtbF9qcy5IdG1sNS5lbHRcbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgb25yZXNpemUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5sZXQgaWRfZG9tIChpZCA6IHN0cmluZykgOiAnYSBKcy50ID1cbiAgSnMuVW5zYWZlLmNvZXJjZVxuICAgIChKcy5PcHQuZ2V0XG4gICAgICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICBDb21tb24udG9zc1xuICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJ1aV9jb21tb24uaWRfZG9tIDogY291bGQgbm90IGZpbmQgaWQgJXNcIiBpZCkpXG4gICAgICA6IERvbV9odG1sLmVsZW1lbnQgSnMudClcblxubGV0IHN3aXRjaF9jbGFzcyBlbHRfaWQgYWRkX2xpc3QgcmVtb3ZlX2xpc3QgPVxuICBsZXQgZG9tX2VsdCA6ICdhIEpzLnQgPSBpZF9kb20gZWx0X2lkIHw+IEpzLlVuc2FmZS5jb2VyY2UgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoY2xhc3Nfc3RyIDogc3RyaW5nKSAtPlxuICAgICAgSnMuVW5zYWZlLm1ldGhfY2FsbCBkb21fZWx0IyMuY2xhc3NMaXN0IFwiYWRkXCJcbiAgICAgICAgW3wgSnMuc3RyaW5nIGNsYXNzX3N0ciB8PiBKcy5VbnNhZmUuY29lcmNlIHxdKVxuICAgIGFkZF9saXN0O1xuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChjbGFzc19zdHIgOiBzdHJpbmcpIC0+XG4gICAgICBKcy5VbnNhZmUubWV0aF9jYWxsIGRvbV9lbHQjIy5jbGFzc0xpc3QgXCJyZW1vdmVcIlxuICAgICAgICBbfCBKcy5zdHJpbmcgY2xhc3Nfc3RyIHw+IEpzLlVuc2FmZS5jb2VyY2UgfF0pXG4gICAgcmVtb3ZlX2xpc3RcblxuKCogbW9kYWxzICopXG5cbmxldCBjcmVhdGVfbW9kYWxfdGV4dF9pbnB1dCB+KGlkIDogc3RyaW5nKSB+KHRpdGxlX2xhYmVsIDogc3RyaW5nKVxuICAgIH4oYm9keSA6IFs8IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIF0gSHRtbC5lbHQgSHRtbC5saXN0X3dyYXApXG4gICAgfihzdWJtaXRfbGFiZWwgOiBzdHJpbmcpIH4oc3VibWl0IDogKCdzZWxmIEpzLnQsIF8gSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyKVxuICAgIDogWz4gSHRtbF90eXBlcy5kaXYgXSBIdG1sLmVsdCA9XG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0OyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1wcmltYXJ5XCIgXSBdXG4gICAgICBbIEh0bWwudHh0IHN1Ym1pdF9sYWJlbCBdXG4gIGluXG4gIGxldCBmb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1jb250ZW50XCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWhlYWRlclwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWxhYmVsXCIgXCJDbG9zZVwiO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEh0bWwuc3BhblxuICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1oaWRkZW5cIiBcInRydWVcIiBdXG4gICAgICAgICAgICAgICAgICBbIEh0bWwuZW50aXR5IFwidGltZXNcIiBdO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgSHRtbC5oNCBbIEh0bWwuY2RhdGEgdGl0bGVfbGFiZWwgXTtcbiAgICAgICAgICBdO1xuICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtYm9keVwiIF0gXSBib2R5O1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1mb290ZXJcIiBdIF1cbiAgICAgICAgICAoW1xuICAgICAgICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1kaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICBbIEh0bWwuY2RhdGEgXCJDYW5jZWxcIiBdO1xuICAgICAgICAgICBdXG4gICAgICAgICAgQCBbIGJ1dHRvbiBdKTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0ICgpID0gKFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIGZvcm0pIyMub25zdWJtaXQgOj0gc3VibWl0IGluXG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWxcIjsgXCJmYWRlXCIgXTtcbiAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidGFiaW5kZXhcIiBcIi0xXCI7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJkaWFsb2dcIjtcbiAgICAgIF1cbiAgICBbXG4gICAgICBIdG1sLmRpdlxuICAgICAgICB+YTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWRpYWxvZ1wiIF07XG4gICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiZG9jdW1lbnRcIjtcbiAgICAgICAgICBdXG4gICAgICAgIFsgZm9ybSBdO1xuICAgIF1cblxuKCogRHVwbGljYXRlZCBpbiBqcyBpbiBjb21tb24uanMuIFRPRE86IG1lcmdlIHRoZSBsb2dpYz8gKilcbmxldCBjcmVhdGVfbW9kYWxfZXJyb3IgfihpZCA6IHN0cmluZykgfihpc19jcml0aWNhbCA6IGJvb2wpXG4gICAgfihlcnJvcl9jb250ZW50IDogc3RyaW5nKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgPVxuICBsZXQgYnV0dG9uX3R5cGUgOiBzdHJpbmcgPVxuICAgIGlmIGlzX2NyaXRpY2FsIHRoZW5cbiAgICAgIFwiYnRuLWRhbmdlclwiXG4gICAgZWxzZVxuICAgICAgXCJidG4tcHJpbWFyeVwiXG4gIGluXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IGJ1dHRvbl90eXBlIF07XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLnR4dCBcIlJldHVybiB0byBhcHBcIiBdXG4gIGluXG5cbiAgbGV0IHRpdGxlX2xhYmVsID1cbiAgICBpZiBpc19jcml0aWNhbCB0aGVuXG4gICAgICBcIkNyaXRpY2FsIGVycm9yLlwiXG4gICAgZWxzZVxuICAgICAgXCJFcnJvci5cIlxuICBpblxuXG4gIGxldCBib2R5ID1cbiAgICBbXG4gICAgICBIdG1sLnR4dFxuICAgICAgICAoXCJUaGUgS2FwcGEgYXBwIGhhcyBlbmNvdW50ZXJlZCBhIFwiXG4gICAgICAgIF4gKGlmIGlzX2NyaXRpY2FsIHRoZW5cbiAgICAgICAgICAgICBcImNyaXRpY2FsIFwiXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBcIlwiKVxuICAgICAgICBeIFwiZXJyb3I6XCIpO1xuICAgICAgSHRtbC5wcmUgWyBIdG1sLmNvZGUgWyBIdG1sLnR4dCBlcnJvcl9jb250ZW50IF0gXTtcbiAgICBdXG4gICAgQFxuICAgIGlmIGlzX2NyaXRpY2FsIHRoZW5cbiAgICAgIFtcbiAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICBcIlNvbWUgcGFydHMgb2YgdGhlIGFwcCBtaWdodCBub3QgYmVoYXZlIHByb3Blcmx5IGFmdGVyIHRoaXMuIEluIHRoaXMgXFxcbiAgICAgICAgICAgY2FzZSwgc2F2ZSB5b3VyIHdvcmsgYW5kIHJlbG9hZCB0aGUgYXBwLlwiO1xuICAgICAgXVxuICAgIGVsc2VcbiAgICAgIFtdXG4gIGluXG5cbiAgbGV0IGJhY2tkcm9wX2F0dHJpYiA9XG4gICAgaWYgaXNfY3JpdGljYWwgdGhlblxuICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtYmFja2Ryb3BcIiBcInN0YXRpY1wiXG4gICAgZWxzZVxuICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtYmFja2Ryb3BcIiBcInRydWVcIlxuICBpblxuXG4gIGxldCBmb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1jb250ZW50XCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWhlYWRlclwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWxhYmVsXCIgXCJDbG9zZVwiO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEh0bWwuc3BhblxuICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1oaWRkZW5cIiBcInRydWVcIiBdXG4gICAgICAgICAgICAgICAgICBbIEh0bWwuZW50aXR5IFwidGltZXNcIiBdO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgSHRtbC5oNCBbIEh0bWwuY2RhdGEgdGl0bGVfbGFiZWwgXTtcbiAgICAgICAgICBdO1xuICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtYm9keVwiIF0gXSBib2R5O1xuICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdIFsgYnV0dG9uIF07XG4gICAgICBdXG4gIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWxcIjsgXCJmYWRlXCIgXTtcbiAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidGFiaW5kZXhcIiBcIi0xXCI7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJkaWFsb2dcIjtcbiAgICAgICAgYmFja2Ryb3BfYXR0cmliO1xuICAgICAgXVxuICAgIFtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZGlhbG9nXCIgXTtcbiAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJkb2N1bWVudFwiO1xuICAgICAgICAgIF1cbiAgICAgICAgWyBmb3JtIF07XG4gICAgXVxuXG5sZXQgKCkgPSBSYW5kb20uc2VsZl9pbml0ICgpXG5sZXQgaW5kZXhfbW9kYWwgPSByZWYgMFxuXG5sZXQgbmV3X21vZGFsX2Vycm9yX2lkICgpID1cbiAgaW5jciBpbmRleF9tb2RhbDtcbiAgXCJtb2RhbF9lcnJvcl9pZC1cIiBeIHN0cmluZ19vZl9pbnQgIWluZGV4X21vZGFsXG5cbmxldCBvcGVuX21vZGFsX2Vycm9yIH4oaXNfY3JpdGljYWwgOiBib29sKSB+KGVycm9yX2NvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIGxldCBpZCA9IG5ld19tb2RhbF9lcnJvcl9pZCAoKSBpblxuXG4gIGxldCBtb2RhbCA9XG4gICAgVHl4bWxfanMuVG9fZG9tLm9mX2RpdiAoY3JlYXRlX21vZGFsX2Vycm9yIH5pZCB+aXNfY3JpdGljYWwgfmVycm9yX2NvbnRlbnQpXG4gIGluXG4gIGxldCBtYWluID0gaWRfZG9tIFwibWFpblwiIGluXG4gIERvbS5hcHBlbmRDaGlsZCBtYWluIG1vZGFsO1xuICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIGlkKSB+YWN0aW9uOlwic2hvd1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbnR5cGUgaGFuZGxlciA9IHsgc3VmZml4OiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IGV4cG9ydDogc3RyaW5nIC0+IHVuaXQgfVxuXG50eXBlIGNvbmZpZ3VyYXRpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGhhbmRsZXJzOiBoYW5kbGVyIGxpc3Q7XG4gIHNob3c6IGJvb2wgUmVhY3Quc2lnbmFsO1xufVxuXG5sZXQgZXhwb3J0X2Zvcm1hdF9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfc2VsZWN0XCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2ZpbGVuYW1lX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19maWxlbmFtZVwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9idXR0b25faWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2J1dHRvblwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9kYXRhX2xhYmVsIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19sYWJlbFwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9mb3JtX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19mb3JtXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgaW5saW5lX2NvbnRlbnQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA9XG4gIGxldCBleHBvcnRfZmlsZW5hbWUgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfZmlsZW5hbWVfaWQgY29uZmlndXJhdGlvbik7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImZpbGUgbmFtZVwiO1xuICAgICAgICBdXG4gICAgICAoKVxuICBpblxuICBsZXQgZXhwb3J0X2J1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfYnV0dG9uX2lkIGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9kaXNhYmxlZCAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcCBub3QgY29uZmlndXJhdGlvbi5zaG93KTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiZXhwb3J0XCIgXVxuICBpblxuICBsZXQgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBoYW5kbGVyIC0+XG4gICAgICAgIFslaHRtbFxuICAgICAgICAgIHt8PG9wdGlvbiB2YWx1ZT1cInx9IGhhbmRsZXIubGFiZWwge3xcIj58fSAoSHRtbC5jZGF0YSBoYW5kbGVyLmxhYmVsKVxuICAgICAgICAgICAge3w8L29wdGlvbj58fV0pXG4gICAgICBjb25maWd1cmF0aW9uLmhhbmRsZXJzXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ8fVxuICAgICAgKGV4cG9ydF9mb3JtYXRfaWQgY29uZmlndXJhdGlvbilcbiAgICAgIHt8XCI+XG4gICAgICAgICAgICAgICB8fVxuICAgICAgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0XG4gICAgICB7fFxuICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICA8bGFiZWwgZm9yPXx9XG4gICAgICAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pXG4gICAgICB7fD48L2xhYmVsPlxuICAgICAgICAgICAgICAgfH1cbiAgICAgIFsgZXhwb3J0X2ZpbGVuYW1lIF1cbiAgICAgIHt8XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgfH1dXG4gIEAgWyBleHBvcnRfYnV0dG9uIF1cblxubGV0IGNvbnRlbnQgY29uZmlndXJhdGlvbiA9XG4gIEh0bWwuZm9ybVxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgKGV4cG9ydF9mb3JtX2lkIGNvbmZpZ3VyYXRpb24pOyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taW5saW5lXCIgXTtcbiAgICAgIF1cbiAgICAoaW5saW5lX2NvbnRlbnQgY29uZmlndXJhdGlvbilcblxubGV0IG9ubG9hZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pID1cbiAgbGV0IGV4cG9ydF9idXR0b24gOiBEb21faHRtbC5idXR0b25FbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gKGV4cG9ydF9idXR0b25faWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9maWxlbmFtZSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfZmlsZW5hbWVfaWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9mb3JtYXQgOiBEb21faHRtbC5zZWxlY3RFbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gKGV4cG9ydF9mb3JtYXRfaWQgY29uZmlndXJhdGlvbilcbiAgaW5cbiAgbGV0IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIDogdW5pdCA9XG4gICAgbGV0IGlzX2Rpc2FibGVkIDogYm9vbCBKcy50ID1cbiAgICAgIEpzLmJvb2xcbiAgICAgICAgKChub3QgKFJlYWN0LlMudmFsdWUgY29uZmlndXJhdGlvbi5zaG93KSlcbiAgICAgICAgfHwgZXhwb3J0X2ZpbGVuYW1lIyMudmFsdWUjI3RyaW0jIy5sZW5ndGggPSAwKVxuICAgIGluXG4gICAgbGV0ICgpID0gZXhwb3J0X2J1dHRvbiMjLmRpc2FibGVkIDo9IGlzX2Rpc2FibGVkIGluXG4gICAgKClcbiAgaW5cbiAgbGV0ICgpID0gZXhwb3J0X2J1dHRvbl90b2dnbGUgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBleHBvcnRfZmlsZW5hbWUjIy5vbmlucHV0IDo9XG4gICAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgIGxldCAoKSA9IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIGluXG4gICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGV4cG9ydF9idXR0b24jIy5vbmNsaWNrIDo9XG4gICAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgIGxldCBoYW5kbGVyIDogaGFuZGxlciA9XG4gICAgICAgICAgICBMaXN0Lm50aCBjb25maWd1cmF0aW9uLmhhbmRsZXJzIGV4cG9ydF9mb3JtYXQjIy5zZWxlY3RlZEluZGV4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmlsZW5hbWUgZGVmYXVsdCA6IHN0cmluZyA9XG4gICAgICAgICAgICBsZXQgcm9vdCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBleHBvcnRfZmlsZW5hbWUjIy52YWx1ZSBpblxuICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHJvb3QgJy4nIHRoZW5cbiAgICAgICAgICAgICAgcm9vdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByb290IF4gXCIuXCIgXiBkZWZhdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBoYW5kbGVyLmV4cG9ydCAoZmlsZW5hbWUgaGFuZGxlci5zdWZmaXgpIGluXG4gICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgZXhwb3J0X3N2ZyA/c3ZnX3N0eWxlX2lkIH4oc3ZnX2Rpdl9pZCA6IHN0cmluZykgKCkgOiBoYW5kbGVyID1cbiAge1xuICAgIHN1ZmZpeCA9IFwic3ZnXCI7XG4gICAgbGFiZWwgPSBcInN2Z1wiO1xuICAgIGV4cG9ydCA9XG4gICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgIENvbW1vbi5wbG90U1ZHID9wbG90U3R5bGVJZDpzdmdfc3R5bGVfaWQgc3ZnX2Rpdl9pZCBmaWxlbmFtZSBmaWxlbmFtZSk7XG4gIH1cblxubGV0IGV4cG9ydF9wbmcgP3N2Z19zdHlsZV9pZCB+KHN2Z19kaXZfaWQgOiBzdHJpbmcpICgpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcInBuZ1wiO1xuICAgIGxhYmVsID0gXCJwbmdcIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBDb21tb24ucGxvdFBORyA/cGxvdFN0eWxlSWQ6c3ZnX3N0eWxlX2lkIHN2Z19kaXZfaWQgZmlsZW5hbWUgZmlsZW5hbWUpO1xuICB9XG5cbmxldCBleHBvcnRfanNvbiB+KHNlcmlhbGl6ZV9qc29uIDogdW5pdCAtPiBzdHJpbmcpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcImpzb25cIjtcbiAgICBsYWJlbCA9IFwianNvblwiO1xuICAgIGV4cG9ydCA9XG4gICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIChzZXJpYWxpemVfanNvbiAoKSkgaW5cbiAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZSk7XG4gIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgc3RvcnlfcmVuZGVyaW5nID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcnlfcmVuZGVyaW5nIChpZCA6IHN0cmluZykgOiBzdG9yeV9yZW5kZXJpbmcgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJTdG9yeVJlbmRlcmluZ1wiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCkgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgc25hcHNob3QgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOlxuICAgIGNvbnRhY3RfbWFwOkpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfc25hcHNob3QgKGlkIDogc3RyaW5nKSAoY29sb3JpbmcgOiB1bml0IEpzLnQpIDogc25hcHNob3QgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJTbmFwc2hvdFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgY29sb3JpbmcgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqbW9kdWxlIEFwaVR5cGVzID0gQXBpX3R5cGVzX2oqKVxuXG5jbGFzcyB0eXBlIG9ic2VydmFibGVfcGxvdCA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX29ic2VydmFibGVfcGxvdCBtYWluX2Rpdl9pZCA6IG9ic2VydmFibGVfcGxvdCBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9ic2VydmFibGVQbG90XCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIG1haW5fZGl2X2lkKSB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBncmFwaF9sb2dnZXIgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfZ3JhcGhfbG9nZ2VyIChpZCA6IHN0cmluZykgKG9uX2NsaWNrIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgOlxuICAgIGdyYXBoX2xvZ2dlciBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIkdyYXBoTG9nZ2VyXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBvbl9jbGljayB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBmbHV4X2NvbmZpZ3VyYXRpb24gPSBvYmplY3RcbiAgdmFsIGJlZ2luVGltZUlkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICB2YWwgZW5kVGltZUlkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICB2YWwgc2VsZWN0Q29ycmVjdGlvbklkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICB2YWwgY2hlY2tib3hTZWxmSW5mbHVlbmNlSWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIHZhbCB0b2dnbGVSdWxlc0lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICB2YWwgbmJFdmVudHNJZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgdmFsIHN2Z0lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICB2YWwgcnVsZXNDaGVja2JveGVzSWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIHZhbCBoZWlnaHQgOiBpbnQgSnMudCBKcy5wcm9wXG4gIHZhbCB3aWR0aCA6IGludCBKcy50IEpzLnByb3BcbiAgdmFsIHNob3J0TGFiZWxzIDogYm9vbCBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfY29uZmlndXJhdGlvbiA6IGZsdXhfY29uZmlndXJhdGlvbiBKcy50IEpzLmNvbnN0ciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX2NvbmZpZ3VyYXRpb24gfihzaG9ydF9sYWJlbHMgOiBib29sKSB+KGJlZ2luX3RpbWVfaWQgOiBzdHJpbmcpXG4gICAgfihlbmRfdGltZV9pZCA6IHN0cmluZykgfihzZWxlY3RfY29ycmVjdGlvbl9pZCA6IHN0cmluZylcbiAgICB+KHRvZ2dsZV9ydWxlc19pZCA6IHN0cmluZykgfihjaGVja2JveF9zZWxmX2luZmx1ZW5jZV9pZCA6IHN0cmluZylcbiAgICB+KG5iX2V2ZW50c19pZCA6IHN0cmluZykgfihzdmdfaWQgOiBzdHJpbmcpIH4ocnVsZXNfY2hlY2tib3hlc19pZCA6IHN0cmluZylcbiAgICB+KGhlaWdodCA6IGludCkgfih3aWR0aCA6IGludCkgOiBmbHV4X2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gIGxldCBjb25maWd1cmF0aW9uIDogZmx1eF9jb25maWd1cmF0aW9uIEpzLnQgPVxuICAgIG5ldyVqcyBjb25zdHJ1Y3Rvcl9jb25maWd1cmF0aW9uXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgY29uZmlndXJhdGlvbikjIy5iZWdpblRpbWVJZCA6PSBKcy5zdHJpbmcgYmVnaW5fdGltZV9pZDtcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBjb25maWd1cmF0aW9uKSMjLmVuZFRpbWVJZCA6PSBKcy5zdHJpbmcgZW5kX3RpbWVfaWQ7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgY29uZmlndXJhdGlvbikjIy5zZWxlY3RDb3JyZWN0aW9uSWRcbiAgICA6PSBKcy5zdHJpbmcgc2VsZWN0X2NvcnJlY3Rpb25faWQ7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgY29uZmlndXJhdGlvbikjIy5jaGVja2JveFNlbGZJbmZsdWVuY2VJZFxuICAgIDo9IEpzLnN0cmluZyBjaGVja2JveF9zZWxmX2luZmx1ZW5jZV9pZDtcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBjb25maWd1cmF0aW9uKSMjLnRvZ2dsZVJ1bGVzSWRcbiAgICA6PSBKcy5zdHJpbmcgdG9nZ2xlX3J1bGVzX2lkO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGNvbmZpZ3VyYXRpb24pIyMubmJFdmVudHNJZCA6PSBKcy5zdHJpbmcgbmJfZXZlbnRzX2lkO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGNvbmZpZ3VyYXRpb24pIyMuc3ZnSWQgOj0gSnMuc3RyaW5nIHN2Z19pZDtcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBjb25maWd1cmF0aW9uKSMjLnJ1bGVzQ2hlY2tib3hlc0lkXG4gICAgOj0gSnMuc3RyaW5nIHJ1bGVzX2NoZWNrYm94ZXNfaWQ7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgY29uZmlndXJhdGlvbikjIy5oZWlnaHQgOj0gaGVpZ2h0O1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGNvbmZpZ3VyYXRpb24pIyMud2lkdGggOj0gd2lkdGg7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgY29uZmlndXJhdGlvbikjIy5zaG9ydExhYmVscyA6PSBzaG9ydF9sYWJlbHNcbiAgaW5cbiAgY29uZmlndXJhdGlvblxuXG5jbGFzcyB0eXBlIGZsdXhfZGF0YSA9IG9iamVjdFxuICB2YWwgYmlvQmVnaW5UaW1lIDogZmxvYXQgSnMudCBKcy5wcm9wXG4gIHZhbCBiaW9FbmRUaW1lIDogZmxvYXQgSnMudCBKcy5wcm9wXG4gIHZhbCBub3JtYWxpemVkIDogYm9vbCBKcy50IEpzLnByb3BcbiAgdmFsIHJ1bGVzIDogSnMuanNfc3RyaW5nIEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICB2YWwgaGl0cyA6IGludCBKcy5qc19hcnJheSBKcy50IEpzLnByb3BcbiAgdmFsIGZsdXhzIDogaW50IEpzLmpzX2FycmF5IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9kYXRhIDogZmx1eF9kYXRhIEpzLnQgSnMuY29uc3RyID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfZGF0YSB+KGZsdXhfYmVnaW5fdGltZSA6IGZsb2F0KSB+KGZsdXhfZW5kX3RpbWUgOiBmbG9hdClcbiAgICB+KG5vcm1hbGl6ZWQgOiBib29sKSB+KGZsdXhfcnVsZXMgOiBzdHJpbmcgYXJyYXkpIH4oZmx1eF9oaXRzIDogaW50IGFycmF5KVxuICAgIH4oZmx1eF9mbHV4cyA6IGZsb2F0IGFycmF5IGFycmF5KSA6IGZsdXhfZGF0YSBKcy50ID1cbiAgbGV0IGRhdGEgOiBmbHV4X2RhdGEgSnMudCA9IG5ldyVqcyBjb25zdHJ1Y3Rvcl9kYXRhIGluXG4gIGxldCAoKSA9XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgZGF0YSkjIy5iaW9CZWdpblRpbWUgOj0gZmx1eF9iZWdpbl90aW1lO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGRhdGEpIyMuYmlvRW5kVGltZSA6PSBmbHV4X2VuZF90aW1lO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGRhdGEpIyMubm9ybWFsaXplZCA6PSBub3JtYWxpemVkO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGRhdGEpIyMucnVsZXMgOj0gSnMuYXJyYXkgKEFycmF5Lm1hcCBKcy5zdHJpbmcgZmx1eF9ydWxlcyk7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgZGF0YSkjIy5oaXRzIDo9IEpzLmFycmF5IGZsdXhfaGl0cztcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBkYXRhKSMjLmZsdXhzIDo9IEpzLmFycmF5IChBcnJheS5tYXAgSnMuYXJyYXkgZmx1eF9mbHV4cyk7XG4gICAgKClcbiAgaW5cbiAgZGF0YVxuXG5jbGFzcyB0eXBlIGZsdXhfbWFwID0gb2JqZWN0XG4gIG1ldGhvZCBleHBvcnRKU09OIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBzZXRGbHV4IDogZmx1eF9kYXRhIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9mbHV4X21hcCAoY29uZmlndXJhdGlvbiA6IGZsdXhfY29uZmlndXJhdGlvbiBKcy50KSA6IGZsdXhfbWFwIEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZmx1eE1hcFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgY29uZmlndXJhdGlvbiB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBjb250YWN0X21hcCA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcmVkcmF3IDogdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBjbGVhckRhdGEgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX2NvbnRhY3RfbWFwIChpZCA6IHN0cmluZykgKGNvbG9yaW5nIDogdW5pdCBKcy50KSA6IGNvbnRhY3RfbWFwIEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiQ29udGFjdE1hcFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgY29sb3JpbmcgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHByaW50X3N0cmluZyBzIGxpc3QgPSBIdG1sLnR4dCBzIDo6IGxpc3RcbmxldCBwcmludF9uZXdsaW5lIGxpc3QgPSBwcmludF9zdHJpbmcgXCJcXG5cIiBsaXN0XG5cbmxldCBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBhIGxpc3QgPVxuICBwcmludF9zdHJpbmcgUHVibGljX2RhdGEuYmluZGluZ19zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sXG4gICAgKHByaW50X3N0cmluZyBhXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5iaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgbGlzdCkpXG5cbmxldCBwcmludF9zaW5nbGVfaW50ZXJuYWxfc3RhdGUgYSBsaXN0ID1cbiAgcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmludGVybmFsX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfc3RyaW5nIGFcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmludGVybmFsX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgbGlzdCkpXG5cbmxldCBwcmludF9jb3VudGVyX2ludGVydmFsIChhLCBiKSBsaXN0ID1cbiAgbGV0IG9wZW5fcmFuZ2UsIGluZiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAoIFB1YmxpY19kYXRhLm9wZW5faW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCxcbiAgICAgICAgUHVibGljX2RhdGEubWludXNfaW5maW5pdHlfc3ltYm9sIClcbiAgICB8IFNvbWUgYSAtPiBQdWJsaWNfZGF0YS5vcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wsIHN0cmluZ19vZl9pbnQgYVxuICBpblxuICBsZXQgY2xvc2VfcmFuZ2UsIHN1cCA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAoIFB1YmxpY19kYXRhLmNsb3NlX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wsXG4gICAgICAgIFB1YmxpY19kYXRhLnBsdXNfaW5maW5pdHlfc3ltYm9sIClcbiAgICB8IFNvbWUgYiAtPiBQdWJsaWNfZGF0YS5jbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sLCBzdHJpbmdfb2ZfaW50IGJcbiAgaW5cbiAgcHJpbnRfc3RyaW5nIG9wZW5fcmFuZ2VcbiAgICAocHJpbnRfc3RyaW5nIGluZlxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuY291bnRlcl9zdGF0ZV9yYW5nZV9iYWNrZW5kX3N5bWJvbFxuICAgICAgICAgIChwcmludF9zdHJpbmcgc3VwIChwcmludF9zdHJpbmcgY2xvc2VfcmFuZ2UgbGlzdCkpKSlcblxubGV0IHByaW50X2NvdW50ZXJfc3RhdGUgKGEsIGIpIGxpc3QgPVxuICBwcmludF9zdHJpbmcgUHVibGljX2RhdGEuY291bnRlcl9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sXG4gICAgKHByaW50X2NvdW50ZXJfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgbGlzdCkpXG5cbmxldCBwcmludF9zaXRlIHNpdGUgbGlzdCA9XG4gIGxldCBzaXRlX25hbWUsIHByb3Bfb3B0LCBiaW5kaW5nX29wdCwgY291bnRlcl9vcHQgPSBzaXRlIGluXG4gIGxldCBsaXN0ID1cbiAgICBtYXRjaCBiaW5kaW5nX29wdCB3aXRoXG4gICAgfCBOb25lIC0+IHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5taXNzaW5nX2JpbmRpbmdfc2l0ZV9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLkZyZWUgLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIFB1YmxpY19kYXRhLmZyZWVfYmFja2VuZF9zeW1ib2wgbGlzdFxuICAgIHwgU29tZSBQdWJsaWNfZGF0YS5XaWxkY2FyZCAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgUHVibGljX2RhdGEud2lsZGNhcmRfYmFja2VuZF9zeW1ib2wgbGlzdFxuICAgIHwgU29tZSBQdWJsaWNfZGF0YS5Cb3VuZF90b191bmtub3duIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBQdWJsaWNfZGF0YS5ib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm9sXG4gICAgICAgIGxpc3RcbiAgICB8IFNvbWUgKFB1YmxpY19kYXRhLkJpbmRpbmdfdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKSkgLT5cbiAgICAgIGxldCBiaW5kaW5nX3R5cGVfc3ltYm9sID0gUHVibGljX2RhdGEuYmluZGluZ190eXBlX2JhY2tlbmRfc3ltYm9sIGluXG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZVxuICAgICAgICAoUHVibGljX2RhdGEuc3RyaW5nX29mX2JpbmRpbmdfdHlwZSB+YmluZGluZ190eXBlX3N5bWJvbCB+YWdlbnRfbmFtZVxuICAgICAgICAgICB+c2l0ZV9uYW1lICgpKVxuICAgICAgICBsaXN0XG4gICAgfCBTb21lIChQdWJsaWNfZGF0YS5Cb3VuZF90byBpKSAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgKHN0cmluZ19vZl9pbnQgaSkgbGlzdFxuICBpblxuICBsZXQgbGlzdCA9XG4gICAgbWF0Y2ggY291bnRlcl9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgfCBTb21lIGEgLT4gcHJpbnRfY291bnRlcl9zdGF0ZSBhIGxpc3RcbiAgaW5cbiAgbGV0IGxpc3QgPVxuICAgIG1hdGNoIHByb3Bfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gbGlzdFxuICAgIHwgU29tZSBhIC0+IHByaW50X3NpbmdsZV9pbnRlcm5hbF9zdGF0ZSBhIGxpc3RcbiAgaW5cbiAgcHJpbnRfc3RyaW5nIHNpdGVfbmFtZSBsaXN0XG5cbmxldCBwcmludF9hZ2VudCBhZ2VudCBsaXN0ID1cbiAgbGV0IGFnZW50X25hbWUsIGludGVyZmFjZSA9IGFnZW50IGluXG4gIGxldCBsaXN0ID0gcHJpbnRfc3RyaW5nIFwiKVwiIGxpc3QgaW5cbiAgbGV0IGxpc3QgPVxuICAgIHNuZFxuICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIChiLCBsaXN0KSBzaXRlIC0+XG4gICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICAgIHByaW50X3N0cmluZyBcIixcIiBsaXN0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgbGlzdCA9IHByaW50X3NpdGUgc2l0ZSBsaXN0IGluXG4gICAgICAgICAgIHRydWUsIGxpc3QpXG4gICAgICAgICAoZmFsc2UsIGxpc3QpIGludGVyZmFjZSlcbiAgaW5cbiAgbGV0IGxpc3QgPSBIdG1sLnR4dCBcIihcIiA6OiBsaXN0IGluXG4gIGxldCBsaXN0ID0gSHRtbC50eHQgYWdlbnRfbmFtZSA6OiBsaXN0IGluXG4gIGxpc3RcblxubGV0IHByaW50X3NpdGVfZ3JhcGggYWdlbnRfbGlzdCBsaXN0ID1cbiAgc25kXG4gICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biAoYiwgbGlzdCkgYWdlbnQgLT5cbiAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgcHJpbnRfc3RyaW5nIFwiLFwiIGxpc3RcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgIGluXG4gICAgICAgICB0cnVlLCBwcmludF9hZ2VudCBhZ2VudCBsaXN0KVxuICAgICAgIChmYWxzZSwgbGlzdCkgKExpc3QucmV2IGFnZW50X2xpc3QpKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IG1oID1cbiAgbGV0IHVuY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBtaCBpblxuICBsZXQgY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgbWggaW5cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biB4IGwgLT5cbiAgICAgIEh0bWwucFxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF9jYXVnaHQgeCk7XG4gICAgICAgIF1cbiAgICAgIDo6IGwpXG4gICAgY2F1Z2h0XG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biB4IC0+XG4gICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIucHBfdW5jYXVnaHQgeCk7XG4gICAgICAgICAgIF0pXG4gICAgICAgdW5jYXVnaHQpXG4iLCJtb2R1bGUgRGVidWdQcmludCA6IEthcHBhX3dlYmFwcF9saWJfbm9fanNvby5Ib29rZWQuRGVidWdQcmludCA9IHN0cnVjdFxuICBsZXQgZGVidWdfcHJpbnQgcyA9XG4gICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyBzIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgUyA9IEthcHBhX3dlYmFwcF9saWJfbm9fanNvby5Ib29rZWQuTWFrZVMgKERlYnVnUHJpbnQpXG5tb2R1bGUgRSA9IEthcHBhX3dlYmFwcF9saWJfbm9fanNvby5Ib29rZWQuTWFrZUUgKERlYnVnUHJpbnQpXG5cbnR5cGUgJ2Egc2lnbmFsID0gJ2EgUy50XG50eXBlICdhIGV2ZW50ID0gJ2EgRS50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBKcyB1dGlsICopXG4oKiByZWZlcmVuY2VzXG4gICBodHRwOi8vdG9zcy5zb3VyY2Vmb3JnZS5uZXQvb2NhbWwuaHRtbFxuICAgaHR0cDovL3BlcHBlcm1pbnQuanAvdGVtcC9hby9hby5tbFxuKilcbmxldCBwcm90b3R5cGUgPSBKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3IucHJvdG90eXBlXCJcblxubGV0IGNyZWF0ZV9oYW5kbGVyIGxhYmVsID1cbiAgbGV0IGhlYWQgOiBjaGFyID0gQ2hhci51cHBlcmNhc2VfYXNjaWkgKFN0cmluZy5nZXQgbGFiZWwgMCkgaW5cbiAgbGV0IHRhaWwgOiBzdHJpbmcgPSBTdHJpbmcuc3ViIGxhYmVsIDEgKFN0cmluZy5sZW5ndGggbGFiZWwgLSAxKSBpblxuICBsZXQgb25fbGFiZWwgPSBcIm9uXCIgXiBDaGFyLmVzY2FwZWQgaGVhZCBeIHRhaWwgaW5cbiAgbGV0IHdyYXBwZXIgaGFuZGxlciA9IChKcy5VbnNhZmUucHVyZV9qc19leHByIFwidGhpc1wiKSMjb24gbGFiZWwgaGFuZGxlciBpblxuICBsZXQgKCkgPSBKcy5VbnNhZmUuc2V0IHByb3RvdHlwZSAoSnMuc3RyaW5nIG9uX2xhYmVsKSB3cmFwcGVyIGluXG4gICgpXG5cbigqIGFkZCBvbiBoYW5kbGVycyB0byB0aGUgcHJvdG90eXBlcyBzbyB0aGV5IGNhbiBiZSBzdHJvbmdseSB0eXBlZCAqKVxubGV0ICgpID1cbiAgTGlzdC5pdGVyIGNyZWF0ZV9oYW5kbGVyXG4gICAgW1xuICAgICAgXCJiZWZvcmVDaGFuZ2VcIjtcbiAgICAgIFwiYmVmb3JlQ3Vyc29yRW50ZXJcIjtcbiAgICAgIFwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlXCI7XG4gICAgICBcImJsdXJcIjtcbiAgICAgIFwiY2hhbmdlc1wiO1xuICAgICAgXCJjbGVhclwiO1xuICAgICAgXCJjb250ZXh0bWVudVwiO1xuICAgICAgXCJjb3B5XCI7XG4gICAgICBcImN1cnNvckFjdGl2aXR5XCI7XG4gICAgICBcImN1dFwiO1xuICAgICAgXCJkYmxjbGlja1wiO1xuICAgICAgXCJkZWxldGVcIjtcbiAgICAgIFwiZHJhZ2VudGVyXCI7XG4gICAgICBcImRyYWdsZWF2ZVwiO1xuICAgICAgXCJkcmFnb3ZlclwiO1xuICAgICAgXCJkcmFnc3RhcnRcIjtcbiAgICAgIFwiZHJvcFwiO1xuICAgICAgXCJlbGVjdHJpY0lucHV0XCI7XG4gICAgICBcImZvY3VzXCI7XG4gICAgICBcImd1dHRlckNsaWNrXCI7XG4gICAgICBcImd1dHRlckNvbnRleHRNZW51XCI7XG4gICAgICBcImhpZGVcIjtcbiAgICAgIFwiaW5wdXRSZWFkXCI7XG4gICAgICBcImtleUhhbmRsZWRcIjtcbiAgICAgIFwia2V5cHJlc3NcIjtcbiAgICAgIFwia2V5dXBcIjtcbiAgICAgIFwibW91c2Vkb3duXCI7XG4gICAgICBcInBhc3RlXCI7XG4gICAgICBcInJlZHJhd1wiO1xuICAgICAgXCJyZW5kZXJMaW5lXCI7XG4gICAgICBcInNjcm9sbFwiO1xuICAgICAgXCJzY3JvbGxDdXJzb3JJbnRvVmlld1wiO1xuICAgICAgXCJzd2FwRG9jXCI7XG4gICAgICBcInRvdWNoc3RhcnRcIjtcbiAgICAgIFwidW5oaWRlXCI7XG4gICAgICBcInVwZGF0ZVwiO1xuICAgICAgXCJ2aWV3cG9ydENoYW5nZVwiO1xuICAgICAgXCJjaGFuZ2VcIjtcbiAgICAgIFwia2V5ZG93blwiO1xuICAgIF1cblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY2ggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgbGluZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBkaW1lbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlZnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgcmlnaHQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgdG9wIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgbWV0aG9kIGJvdHRvbSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHBvc2l0aW9uIDogKGludCAtPiBpbnQgLT4gcG9zaXRpb24gSnMudCkgSnMuY29uc3RyID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLl9Qb3NcblxudHlwZSBzZXZlcml0eSA9IEVycm9yIHwgV2FybmluZ1xuXG5jbGFzcyB0eXBlIGxpbnQgPSBvYmplY3RcbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBzZXZlcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGZyb20gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRvXyA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9saW50IDogbGludCBKcy50IEpzLmNvbnN0ciA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX2xpbnQgfihtZXNzYWdlIDogc3RyaW5nKSB+KHNldmVyaXR5IDogc2V2ZXJpdHkpXG4gICAgfihmcm9tIDogcG9zaXRpb24gSnMudCkgfih0b18gOiBwb3NpdGlvbiBKcy50KSA6IGxpbnQgSnMudCA9XG4gIGxldCByZXN1bHQgPSBuZXclanMgY29uc3RydWN0b3JfbGludCBpblxuICBsZXQgKCkgPSByZXN1bHQjIy5tZXNzYWdlIDo9IEpzLnN0cmluZyBtZXNzYWdlIGluXG4gIGxldCAoKSA9XG4gICAgcmVzdWx0IyMuc2V2ZXJpdHkgOj1cbiAgICAgIG1hdGNoIHNldmVyaXR5IHdpdGhcbiAgICAgIHwgRXJyb3IgLT4gSnMuc3RyaW5nIFwiZXJyb3JcIlxuICAgICAgfCBXYXJuaW5nIC0+IEpzLnN0cmluZyBcIndhcm5pbmdcIlxuICBpblxuICBsZXQgKCkgPSByZXN1bHQjIy5mcm9tIDo9IGZyb20gaW5cbiAgbGV0ICgpID0gcmVzdWx0IyMudG9fIDo9IHRvXyBpblxuICByZXN1bHRcblxuY2xhc3MgdHlwZSBjaGFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGZyb20gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRvXyA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdGV4dCA6IEpzLnN0cmluZ19hcnJheSBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHJlbW92ZWQgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBvcmlnaW4gOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2NoYW5nZSA6IGNoYW5nZSBKcy50IEpzLmNvbnN0ciA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxubGV0IGNyZWF0ZV9jaGFuZ2UgKCkgOiBjaGFuZ2UgSnMudCA9IG5ldyVqcyBjb25zdHJ1Y3Rvcl9jaGFuZ2VcblxuY2xhc3MgdHlwZSBjb2RlbWlycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIHNldFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgSnMubWV0aFxuXG4gICgqIFByb2dyYW1tYXRpY2FsbHkgc2V0IHRoZSBzaXplIG9mIHRoZSBlZGl0b3IgKG92ZXJyaWRpbmcgdGhlXG4gICAgIGFwcGxpY2FibGUgQ1NTIHJ1bGVzKS4gd2lkdGggYW5kIGhlaWdodCBjYW4gYmUgZWl0aGVyIG51bWJlcnNcbiAgICAgKGludGVycHJldGVkIGFzIHBpeGVscykgb3IgQ1NTIHVuaXRzIChcIjEwMCVcIiwgZm9yIGV4YW1wbGUpLlxuICAgICBZb3UgY2FuIHBhc3MgbnVsbCBmb3IgZWl0aGVyIG9mIHRoZW0gdG8gaW5kaWNhdGUgdGhhdCB0aGF0XG4gICAgIGRpbWVuc2lvbiBzaG91bGQgbm90IGJlIGNoYW5nZWQuXG4gICopXG4gIG1ldGhvZCBzZXRTaXplIDogaW50IEpzLnQgSnMub3B0IC0+IGludCBKcy50IEpzLm9wdCAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBTY3JvbGwgdGhlIGVkaXRvciB0byBhIGdpdmVuIChwaXhlbCkgcG9zaXRpb24uIEJvdGggYXJndW1lbnRzXG4gICAgIG1heSBiZSBsZWZ0IGFzIG51bGwgb3IgdW5kZWZpbmVkIHRvIGhhdmUgbm8gZWZmZWN0LiAqKVxuICBtZXRob2Qgc2Nyb2xsVG8gOiBpbnQgSnMub3B0IC0+IGludCBKcy5vcHQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNoYXJDb29yZHMgOlxuICAgIHBvc2l0aW9uIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IGRpbWVuc2lvbiBKcy50IEpzLm1ldGhcblxuICBtZXRob2QgZ2V0U2Nyb2xsZXJFbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIG9uIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gKERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZmlyZWQgd2hlbiBjb250ZW50IGlzIGNoYW5nZWQgKilcbiAgbWV0aG9kIG9uQ2hhbmdlIDogKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiYXRjaGVkIGNoYW5nZWQgb3BlcmF0aW9uICopXG4gIG1ldGhvZCBvbkNoYW5nZXMgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLmpzX2FycmF5IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmVmb3JlIGEgY2hhbmdlIGlzIGFwcGxpZWQgKilcbiAgbWV0aG9kIG9uQmVmb3JlQ2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGN1cnNvciBtb3Zlcywgb3IgYW55IGNoYW5nZSAqKVxuICBtZXRob2Qgb25DdXJzb3JBY3Rpdml0eSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiBuZXcgaW5wdXQgaXMgcmVhZCAqKVxuICBtZXRob2Qgb25LZXlIYW5kbGVkIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIG5ldyBpbnB1dCBpcyByZWFkICopXG4gIG1ldGhvZCBvbklucHV0UmVhZCA6IChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiB0ZXh0IG1hdGNoZXMgZWxlY3RyaWMgcGF0dGVybiAqKVxuICBtZXRob2Qgb25FbGVjdHJpY0lucHV0IDogKGNvZGVtaXJyb3IgSnMudCAtPiBpbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiZWZvcmUgYSBzZWxlY3Rpb24gaXMgbW92ZWQgVE9ETyAqKVxuICBtZXRob2Qgb25CZWZvcmVTZWxlY3Rpb25DaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogdGhlIHZpZXcgcG9ydCBjaGFuZ2VkICopXG4gIG1ldGhvZCBvblZpZXdwb3J0Q2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IGludCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqICBkb2N1bWVudCBzd2FwcGVkICopXG4gIG1ldGhvZCBvblN3YXBEb2MgOiAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGd1dHRlciBjbGlja2VkICopXG4gIG1ldGhvZCBvbkd1dHRlckNsaWNrIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+XG4gICAgdW5pdCBKcy5tZXRoXG5cbiAgKCogY29udGV4dCBtZW51IGV2ZW50IGZyb20gZ3V0dGVyICopXG4gIG1ldGhvZCBvbkd1dHRlckNvbnRleHRNZW51IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+XG4gICAgdW5pdCBKcy5tZXRoXG5cbiAgKCogZm9jdXMgKilcbiAgbWV0aG9kIG9uRm9jdXMgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJsdXIgKilcbiAgbWV0aG9kIG9uQmx1ciA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogc2Nyb2xsICopXG4gIG1ldGhvZCBvblNjcm9sbCA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogY3Vyc29yIHNjcm9sbGVkIGluIHZpZXcqKVxuICBtZXRob2Qgb25TY3JvbGxDdXJzb3JJbnRvVmlldyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGRvbSB1cGRhdGVkICopXG4gIG1ldGhvZCBvblVwZGF0ZSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogbGluZSByZW5kZXJlZCAqKVxuICBtZXRob2Qgb25SZW5kZXJMaW5lIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uTW91c2Vkb3duIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRGJsY2xpY2sgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Ub3VjaHN0YXJ0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ29udGV4dG1lbnUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXlkb3duIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uS2V5cHJlc3MgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXl1cCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkN1dCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkNvcHkgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25QYXN0ZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdzdGFydCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdlbnRlciA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdvdmVyIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ2xlYXZlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJvcCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRlbGV0ZSA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25CZWZvcmVDdXJzb3JFbnRlciA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25DbGVhciA6IChwb3NpdGlvbiBKcy50IC0+IHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkhpZGUgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uVW5oaWRlIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvblJlZHJhdyA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgc2V0Q3Vyc29yIDogcG9zaXRpb24gSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGdldEN1cnNvciA6IHBvc2l0aW9uIEpzLnQgSnMubWV0aFxuICBtZXRob2Qgc2V0U2VsZWN0aW9uIDogcG9zaXRpb24gSnMudCAtPiBwb3NpdGlvbiBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcGVyZm9ybUxpbnQgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbnRfY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIGdldEFubm90YXRpb25zIDpcbiAgICAoSnMuanNfc3RyaW5nIC0+XG4gICAgbGludF9jb25maWd1cmF0aW9uIEpzLnQgLT5cbiAgICBjb2RlbWlycm9yIEpzLnQgLT5cbiAgICBsaW50IEpzLnQgSnMuanNfYXJyYXkgSnMudClcbiAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW50T25DaGFuZ2UgOiBib29sIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb24gOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCBKcy5jb25zdHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24gKCkgOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gIG5ldyVqcyBjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb25cblxuY2xhc3MgdHlwZSBjb25maWd1cmF0aW9uID0gb2JqZWN0XG4gICgqIFRoZSBzdGFydGluZyB2YWx1ZSBvZiB0aGUgZWRpdG9yLiAqKVxuICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIG1vZGUgdG8gdXNlLiAqKVxuICBtZXRob2QgbW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBFeHBsaWNpdGx5IHNldCB0aGUgbGluZSBzZXBhcmF0b3IgZm9yIHRoZSBlZGl0b3IuICAqKVxuICBtZXRob2QgbGluZVNlcGFyYXRvciA6IEpzLmpzX3N0cmluZyBKcy5vcHQgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIHRoZW1lIHRvIHN0eWxlIHRoZSBlZGl0b3Igd2l0aC4gKilcbiAgbWV0aG9kIHRoZW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIEhvdyBtYW55IHNwYWNlcyBhIGJsb2NrIHNob3VsZCBiZSBpbmRlbnRlZC4gICopXG4gIG1ldGhvZCBpbmRlbnRVbml0IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIFdoZXRoZXIgdG8gdXNlIHRoZSBjb250ZXh0LXNlbnNpdGl2ZSBpbmRlbnRhdGlvbiAqKVxuICBtZXRob2Qgc21hcnRJbmRlbnQgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSB3aWR0aCBvZiBhIHRhYiBjaGFyYWN0ZXIuICopXG4gIG1ldGhvZCB0YWJTaXplIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSBmaXJzdCBOKnRhYlNpemUgaW4gaW5kZW50YXRpb24gc2hvdWxkIE4gdGFicy4gKilcbiAgbWV0aG9kIGluZGVudFdpdGhUYWJzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgZWRpdG9yIHNob3VsZCByZS1pbmRlbnQgdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbWV0aG9kIGVsZWN0cmljQ2hhcnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIEEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIHNwZWNpYWwgcGxhY2Vob2xkZXIuICopXG4gIG1ldGhvZCBzcGVjaWFsQ2hhcnMgOiBKcy5yZWdFeHAgSnMudCBKcy5wcm9wXG5cbiAgKCogQSBmdW5jdGlvbiBpZGVudGlmaWVzIHNwZWNpYWxDaGFycyBhbmQgcHJvZHVjZXMgYSBET00gbm9kZSAqKVxuICBtZXRob2Qgc3BlY2lhbENoYXJQbGFjZWhvbGRlciA6IChpbnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50KSBKcy5wcm9wXG5cbiAgKCogSG9yaXpvbnRhbCBjdXJzb3IgbW92ZW1lbnQgdGhyb3VnaCByaWdodC10by1sZWZ0LiAqKVxuICBtZXRob2QgcnRsTW92ZVZpc3VhbGx5IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBDb25maWd1cmVzIHRoZSBrZXkgbWFwIHRvIHVzZS4gKilcbiAgbWV0aG9kIGtleU1hcCA6IHN0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBzcGVjaWZ5IGV4dHJhIGtleSBiaW5kaW5ncyBmb3IgdGhlIGVkaXRvciAqKVxuICBtZXRob2QgZXh0cmFLZXlzIDogJ2EgSnMucHJvcFxuXG4gICgqIFNjcm9sbCBvciB3cmFwIGZvciBsb25nIGxpbmVzICopXG4gIG1ldGhvZCBsaW5lV3JhcHBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqICBTaG93IGxpbmUgbnVtYmVycyB0byB0aGUgbGVmdCBvZiB0aGUgZWRpdG9yICopXG4gIG1ldGhvZCBsaW5lTnVtYmVycyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQXQgd2hpY2ggbnVtYmVyIHRvIHN0YXJ0IGNvdW50aW5nIGxpbmVzLiBEZWZhdWx0IGlzIDEuICopXG4gIG1ldGhvZCBmaXJzdExpbmVOdW1iZXIgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQSBmdW5jdGlvbiB1c2VkIHRvIGZvcm1hdCBsaW5lIG51bWJlcnMuICopXG4gIG1ldGhvZCBsaW5lTnVtYmVyRm9ybWF0dGVyIDogKGludCBKcy50IC0+IEpzLmpzX3N0cmluZykgSnMudCBKcy5wcm9wXG5cbiAgKCogQWRkIGV4dHJhIGd1dHRlcnMgKilcbiAgbWV0aG9kIGd1dHRlcnMgOiBKcy5zdHJpbmdfYXJyYXkgSnMudCBKcy5wcm9wXG5cbiAgKCogR3V0dGVyIHNjcm9sbHMgYWxvbmcgd2l0aCB0aGUgY29udGVudCBob3Jpem9udGFsbHkgKilcbiAgbWV0aG9kIGZpeGVkR3V0dGVyIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBDaG9vc2VzIGEgc2Nyb2xsYmFyIGltcGxlbWVudGF0aW9uLiAqKVxuICBtZXRob2Qgc2Nyb2xsYmFyU3R5bGUgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogY292ZXIgZ3V0dGVyIHdpdGggd2l0aCBjbGFzcyBDb2RlTWlycm9yLWd1dHRlci1maWxsZXIuICopXG4gIG1ldGhvZCBjb3Zlckd1dHRlck5leHRUb1Njcm9sbGJhciA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogU2VsZWN0cyB0aGUgd2F5IENvZGVNaXJyb3IgaGFuZGxlcyBpbnB1dCBhbmQgZm9jdXMuICopXG4gIG1ldGhvZCBpbnB1dFN0eWxlIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIGRpc2FibGUgZWRpdGluZyBvZiB0aGUgZWRpdG9yIGNvbnRlbnQgKilcbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiB0aGUgY3Vyc29yIHNob3VsZCBiZSBkcmF3biB3aGVuIGEgc2VsZWN0aW9uIGlzIGFjdGl2ZS4gKilcbiAgbWV0aG9kIHNob3dDdXJzb3JXaGVuU2VsZWN0aW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBjb3B5IG9yIGN1dCB3aGVuIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiB3aWxsIGNvcHkgb3IgY3V0IHdob2xlIGxpbmVzICopXG4gIG1ldGhvZCBsaW5lV2lzZUNvcHlDdXQgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFdoZW4gcGFzdGluZyBzb21ldGhpbmcgZnJvbSBhbiBleHRlcm5hbCBzb3VyY2UgKG5vdCBmcm9tIHRoZVxuICAgICBlZGl0b3IgaXRzZWxmKSwgaWYgdGhlIG51bWJlciBvZiBsaW5lcyBtYXRjaGVzIHRoZSBudW1iZXIgb2ZcbiAgICAgc2VsZWN0aW9uLCBDb2RlTWlycm9yIHdpbGwgYnkgZGVmYXVsdCBpbnNlcnQgb25lIGxpbmUgcGVyXG4gICAgIHNlbGVjdGlvbi4gWW91IGNhbiBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHRoYXRcbiAgICAgYmVoYXZpb3IuICopXG4gIG1ldGhvZCBwYXN0ZUxpbmVzUGVyU2VsZWN0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBEZXRlcm1pbmVzIHdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9ucyBhcmUgam9pbmVkIGFzIHNvb24gYXNcbiAgICAgdGhleSB0b3VjaCAodGhlIGRlZmF1bHQpIG9yIG9ubHkgd2hlbiB0aGV5IG92ZXJsYXAgKHRydWUpLiAqKVxuICBtZXRob2Qgc2VsZWN0aW9uc01heVRvdWNoIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBtYXhpbXVtIG51bWJlciBvZiB1bmRvICopXG4gIG1ldGhvZCB1bmRvRGVwdGggOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogbWlsbGlzZWNvbmRzIG9mIGluYWN0aXZpdHkgdG8gY3JlYXRlIGEgbmV3IGhpc3RvcnkgZXZlbnQgKilcbiAgbWV0aG9kIGhpc3RvcnlFdmVudERlbGF5IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIHRhYiBpbmRleCBvZiBlZGl0b3IgKilcbiAgbWV0aG9kIHRhYmluZGV4IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIENvZGVNaXJyb3IgZm9jdXMgaXRzZWxmIG9uIGluaXRpYWxpemF0aW9uICopXG4gIG1ldGhvZCBhdXRvZm9jdXMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGVuYWJsZSBkcmFnLWFuZC1kcm9wICopXG4gIG1ldGhvZCBkcmFnRHJvcCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogd2hlbiBzZXQgZmlsZXMgd2l0IG1pbWUgdHlwZSBjYW4gYmUgZHJvcHBlZCBpbnRvIHRoZSBlZGl0b3IgKilcbiAgbWV0aG9kIGFsbG93RHJvcEZpbGVUeXBlcyA6IEpzLnN0cmluZ19hcnJheSBKcy5vcHQgSnMudCBKcy5wcm9wXG5cbiAgKCogSGFsZi1wZXJpb2QgaW4gbWlsbGlzZWNvbmRzIHVzZWQgZm9yIGN1cnNvciBibGlua2luZy4gKilcbiAgbWV0aG9kIGN1cnNvckJsaW5rUmF0ZSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBIb3cgbXVjaCBleHRyYSBzcGFjZSB0byBhbHdheXMga2VlcCBhYm92ZSBhbmQgYmVsb3cgdGhlIGN1cnNvciAqKVxuICBtZXRob2QgY3Vyc29yU2Nyb2xsTWFyZ2luIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIERldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgY3Vyc29yLiAqKVxuICBtZXRob2QgY3Vyc29ySGVpZ2h0IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIHRoZSBjb250ZXh0IG1lbnUgaXMgb3BlbmVkIHdpdGggYSBjbGljayBvdXRzaWRlIG9mIHRoZVxuICAgICBjdXJyZW50IHNlbGVjdGlvbiwgbW92ZSBjdXJzb3IgdG8gdGhlIHBvaW50IG9mIHRoZSBjbGljayopXG4gIG1ldGhvZCByZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHRpbWUgdG8gcnVuIGhpZ2hsaWdodGluZyB0aHJlYWQgKilcbiAgbWV0aG9kIHdvcmtUaW1lIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIGRlbGF5IHRvIHJ1biBoaWdobGlnaHRpbmcgdGhyZWFkICopXG4gIG1ldGhvZCB3b3JrRGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogaG93IG9mdGVuIHRvIHBvbGwgZm9yIGNoYW5nZXMgKilcbiAgbWV0aG9kIHBvbGxJbnRlcnZhbCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBjb21iaW5lIHRva2VucyB0byBhIHNpbmdsZSBzcGFuICopXG4gIG1ldGhvZCBmbGF0dGVuU3BhbnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHByZWZpeCBjc3MgKilcbiAgbWV0aG9kIGFkZE1vZGVDbGFzcyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogbGVuZ3RoIHRvIGhpZ2hsaWdodCAqKVxuICBtZXRob2QgbWF4SGlnaGxpZ2h0TGVuZ3RoIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBhbW91bnQgb2YgbGluZXMgdGhhdCBhcmUgcmVuZGVyZWQgYWJvdmUgYW5kIGJlbG93IHRoZVxuICAgICB2aXNpYmxlIGRvY3VtZW50KilcbiAgbWV0aG9kIHZpZXdwb3J0TWFyZ2luIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIEFERE9OIHNlbGVjdGlvbi9hY3RpdmUtbGluZS5qcyAqKVxuICBtZXRob2Qgc3R5bGVBY3RpdmVMaW5lIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBBRERPTiBsaW50L2xpbnQuanMgKilcbiAgbWV0aG9kIGxpbnQgOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCBKcy5wcm9wXG5cbiAgKCogQURET04gZWRpdC9tYXRjaGJyYWNrZXRzLmpzICopXG4gIG1ldGhvZCBtYXRjaEJyYWNrZXRzIDogYm9vbCBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdF9jb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbiBKcy50ID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLmRlZmF1bHRzXG5cbmxldCBmcm9tVGV4dEFyZWEgKGRvbSA6IERvbV9odG1sLmVsZW1lbnQgSnMudClcbiAgICAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24gSnMudCkgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAoKiBsZXQgKCkgPSBKcy5kZWJ1Z2dlcigpIGluICopXG4gIChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjI2Zyb21UZXh0QXJlYVxuICAgIChKcy5VbnNhZmUuaW5qZWN0IGRvbSlcbiAgICAoSnMuVW5zYWZlLmluamVjdCBjb25maWd1cmF0aW9uKVxuXG5sZXQgc2V0TGludENvbmZpZyAoY20gOiBjb2RlbWlycm9yIEpzLnQpID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSAjIyBMaW50U3RhdGUgY21cblxuY2xhc3MgdHlwZSBjb21tYW5kcyA9IG9iamVjdFxuICBtZXRob2Qgc2F2ZSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgSnMucHJvcFxuZW5kXG5cbmxldCBjb21tYW5kcyA6IGNvbW1hbmRzIEpzLnQgPSAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyMuY29tbWFuZHNcbiIsImxldCByZXZfc3BsaXQgbCA9XG4gIGxldCByZWMgaW5uZXIgeHMgeXMgPSBmdW5jdGlvblxuICAgIHwgKHgsIHkpIDo6IHh5cyAtPlxuICAgICAgIGlubmVyICh4Ojp4cykgKHk6OnlzKSB4eXNcbiAgICB8IFtdIC0+ICh4cywgeXMpXG4gIGluXG4gIGlubmVyIFtdIFtdIGxcblxudHlwZSB3cmFwID0gW1xuICB8IGBXcmFwX2F0b21zXG4gIHwgYEFsd2F5c193cmFwXG4gIHwgYE5ldmVyX3dyYXBcbiAgfCBgRm9yY2VfYnJlYWtzXG4gIHwgYEZvcmNlX2JyZWFrc19yZWNcbiAgfCBgTm9fYnJlYWtzXG5dXG5cbnR5cGUgbGFiZWxfYnJlYWsgPSBbXG4gIHwgYEF1dG9cbiAgfCBgQWx3YXlzXG4gIHwgYEFsd2F5c19yZWNcbiAgfCBgTmV2ZXJcbl1cblxudHlwZSBzdHlsZV9uYW1lID0gc3RyaW5nXG50eXBlIHN0eWxlID0ge1xuICB0YWdfb3BlbiA6IHN0cmluZztcbiAgdGFnX2Nsb3NlIDogc3RyaW5nXG59XG5cbnR5cGUgYXRvbV9wYXJhbSA9IHtcbiAgYXRvbV9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xufVxuXG5sZXQgYXRvbSA9IHtcbiAgYXRvbV9zdHlsZSA9IE5vbmVcbn1cblxudHlwZSBsaXN0X3BhcmFtID0ge1xuICBzcGFjZV9hZnRlcl9vcGVuaW5nIDogYm9vbDtcbiAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIDogYm9vbDtcbiAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA6IGJvb2w7XG4gIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA6IGJvb2w7XG4gIHNwYWNlX2JlZm9yZV9jbG9zaW5nIDogYm9vbDtcbiAgc3RpY2tfdG9fbGFiZWwgOiBib29sO1xuICBhbGlnbl9jbG9zaW5nIDogYm9vbDtcbiAgd3JhcF9ib2R5IDogd3JhcDtcbiAgaW5kZW50X2JvZHkgOiBpbnQ7XG4gIGxpc3Rfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgb3BlbmluZ19zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBib2R5X3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIHNlcGFyYXRvcl9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBjbG9zaW5nX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBsaXN0ID0ge1xuICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gdHJ1ZTtcbiAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IGZhbHNlO1xuICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlO1xuICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IHRydWU7XG4gIHN0aWNrX3RvX2xhYmVsID0gdHJ1ZTtcbiAgYWxpZ25fY2xvc2luZyA9IHRydWU7XG4gIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICBpbmRlbnRfYm9keSA9IDI7XG4gIGxpc3Rfc3R5bGUgPSBOb25lO1xuICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgYm9keV9zdHlsZSA9IE5vbmU7XG4gIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xufVxuXG50eXBlIGxhYmVsX3BhcmFtID0ge1xuICBsYWJlbF9icmVhazogbGFiZWxfYnJlYWs7XG4gIHNwYWNlX2FmdGVyX2xhYmVsIDogYm9vbDtcbiAgaW5kZW50X2FmdGVyX2xhYmVsIDogaW50O1xuICBsYWJlbF9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xufVxuXG5sZXQgbGFiZWwgPSB7XG4gIGxhYmVsX2JyZWFrID0gYEF1dG87XG4gIHNwYWNlX2FmdGVyX2xhYmVsID0gdHJ1ZTtcbiAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgbGFiZWxfc3R5bGUgPSBOb25lO1xufVxuXG50eXBlIHQgPVxuICAgIEF0b20gb2Ygc3RyaW5nICogYXRvbV9wYXJhbVxuICB8IExpc3Qgb2YgKHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAqIGxpc3RfcGFyYW0pICogdCBsaXN0XG4gIHwgTGFiZWwgb2YgKHQgKiBsYWJlbF9wYXJhbSkgKiB0XG4gIHwgQ3VzdG9tIG9mIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpXG5cbnR5cGUgZXNjYXBlID1cbiAgICBbIGBOb25lXG4gICAgfCBgRXNjYXBlIG9mXG4gICAgICAgICgoc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdClcbiAgICB8IGBFc2NhcGVfc3RyaW5nIG9mIChzdHJpbmcgLT4gc3RyaW5nKSBdXG5cbnR5cGUgc3R5bGVzID0gKHN0eWxlX25hbWUgKiBzdHlsZSkgbGlzdFxuXG4oKlxuICAgVHJhbnNmb3JtIGEgdHJlZSBzdGFydGluZyBmcm9tIHRoZSBsZWF2ZXMsIHByb3BhZ2F0aW5nIGFuZCBtZXJnaW5nXG4gICBhY2N1bXVsYXRvcnMgdW50aWwgcmVhY2hpbmcgdGhlIHJvb3QuXG4qKVxubGV0IHByb3BhZ2F0ZV9mcm9tX2xlYWZfdG9fcm9vdFxuICB+aW5pdF9hY2MgICgqIGNyZWF0ZSBpbml0aWFsIGFjY3VtdWxhdG9yIGZvciBhIGxlYWYgKilcbiAgfm1lcmdlX2FjYyAoKiBtZXJnZSB0d28gYWNjdW11bGF0b3JzIGNvbWluZyBmcm9tIGNoaWxkIG5vZGVzICopXG4gIH5tYXBfbm9kZSAgKCogKG5vZGUsIGFjYykgLT4gKG5vZGUsIGFjYykgKilcbiAgeCA9XG5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBdG9tIF8gLT5cbiAgICAgICAgbGV0IGFjYyA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbWFwX25vZGUgeCBhY2NcbiAgICB8IExpc3QgKHBhcmFtLCBjaGlsZHJlbikgLT5cbiAgICAgICAgbGV0IG5ld19jaGlsZHJlbiwgYWNjcyA9IHJldl9zcGxpdCAoTGlzdC5yZXZfbWFwIGF1eCBjaGlsZHJlbikgaW5cbiAgICAgICAgbGV0IGFjYyA9IExpc3QuZm9sZF9sZWZ0IG1lcmdlX2FjYyAoaW5pdF9hY2MgeCkgYWNjcyBpblxuICAgICAgICBtYXBfbm9kZSAoTGlzdCAocGFyYW0sIG5ld19jaGlsZHJlbikpIGFjY1xuICAgIHwgTGFiZWwgKCh4MSwgcGFyYW0pLCB4MikgLT5cbiAgICAgICAgbGV0IGFjYzAgPSBpbml0X2FjYyB4IGluXG4gICAgICAgIGxldCBuZXdfeDEsIGFjYzEgPSBhdXggeDEgaW5cbiAgICAgICAgbGV0IG5ld194MiwgYWNjMiA9IGF1eCB4MiBpblxuICAgICAgICBsZXQgYWNjID0gbWVyZ2VfYWNjIChtZXJnZV9hY2MgYWNjMCBhY2MxKSBhY2MyIGluXG4gICAgICAgIG1hcF9ub2RlIChMYWJlbCAoKG5ld194MSwgcGFyYW0pLCBuZXdfeDIpKSBhY2NcbiAgICB8IEN1c3RvbSBfIC0+XG4gICAgICAgIGxldCBhY2MgPSBpbml0X2FjYyB4IGluXG4gICAgICAgIG1hcF9ub2RlIHggYWNjXG4gIGluXG4gIGF1eCB4XG5cbigqXG4gICBDb252ZXJ0IHdyYXBwYWJsZSBsaXN0cyBpbnRvIHZlcnRpY2FsIGxpc3RzIGlmIGFueSBvZiB0aGVpciBkZXNjZW5kYW50c1xuICAgaGFzIHRoZSBhdHRyaWJ1dGUgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrc19yZWMuXG4qKVxubGV0IHByb3BhZ2F0ZV9mb3JjZWRfYnJlYWtzIHggPVxuICAoKiBhY2MgPSB3aGV0aGVyIHRvIGZvcmNlIGJyZWFrcyBpbiB3cmFwcGFibGUgbGlzdHMgb3IgbGFiZWxzICopXG4gIGxldCBpbml0X2FjYyA9IGZ1bmN0aW9uXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYzsgXyB9KSwgXylcbiAgICB8IExhYmVsICgoXywgeyBsYWJlbF9icmVhayA9IGBBbHdheXNfcmVjOyBfIH0pLCBfKSAtPiB0cnVlXG4gICAgfCBBdG9tIF9cbiAgICB8IExhYmVsIF9cbiAgICB8IEN1c3RvbSBfXG4gICAgfCBMaXN0IF8gLT4gZmFsc2VcbiAgaW5cbiAgbGV0IG1lcmdlX2FjYyBmb3JjZV9icmVha3MxIGZvcmNlX2JyZWFrczIgPVxuICAgIGZvcmNlX2JyZWFrczEgfHwgZm9yY2VfYnJlYWtzMlxuICBpblxuICBsZXQgbWFwX25vZGUgeCBmb3JjZV9icmVha3MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrc19yZWM7IF8gfSksIF8pIC0+IHgsIHRydWVcbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3M7IF8gfSksIF8pIC0+IHgsIGZvcmNlX2JyZWFrc1xuXG4gICAgfCBMaXN0ICgob3AsIHNlcCwgY2wsICh7IHdyYXBfYm9keSA9IChgV3JhcF9hdG9tc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBOZXZlcl93cmFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFsd2F5c193cmFwKTsgXyB9IGFzIHApKSxcbiAgICAgICAgICAgIGNoaWxkcmVuKSAtPlxuICAgICAgICBpZiBmb3JjZV9icmVha3MgdGhlblxuICAgICAgICAgIGxldCBwID0geyBwIHdpdGggd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrcyB9IGluXG4gICAgICAgICAgTGlzdCAoKG9wLCBzZXAsIGNsLCBwKSwgY2hpbGRyZW4pLCB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB4LCBmYWxzZVxuXG4gICAgfCBMYWJlbCAoKGEsICh7IGxhYmVsX2JyZWFrID0gYEF1dG87IF8gfSBhcyBscCkpLCBiKSAtPlxuICAgICAgICBpZiBmb3JjZV9icmVha3MgdGhlblxuICAgICAgICAgIGxldCBscCA9IHsgbHAgd2l0aCBsYWJlbF9icmVhayA9IGBBbHdheXMgfSBpblxuICAgICAgICAgIExhYmVsICgoYSwgbHApLCBiKSwgdHJ1ZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgeCwgZmFsc2VcblxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYE5vX2JyZWFrczsgXyB9KSwgXylcbiAgICB8IExhYmVsICgoXywgeyBsYWJlbF9icmVhayA9IChgQWx3YXlzIHwgYEFsd2F5c19yZWMgfCBgTmV2ZXIpOyBfIH0pLCBfKVxuICAgIHwgQXRvbSBfXG4gICAgfCBDdXN0b20gXyAtPiB4LCBmb3JjZV9icmVha3NcbiAgaW5cbiAgbGV0IG5ld194LCBfZm9yY2VkX2JyZWFrcyA9XG4gICAgcHJvcGFnYXRlX2Zyb21fbGVhZl90b19yb290XG4gICAgICB+aW5pdF9hY2NcbiAgICAgIH5tZXJnZV9hY2NcbiAgICAgIH5tYXBfbm9kZVxuICAgICAgeFxuICBpblxuICBuZXdfeFxuXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuICAoKlxuICAgICBSZXdyaXRlIHRoZSB0cmVlIHRvIGJlIHByaW50ZWQuXG4gICAgIEN1cnJlbnRseSwgdGhpcyBpcyB1c2VkIG9ubHkgdG8gaGFuZGxlIGBGb3JjZV9icmVha3NfcmVjLlxuICAqKVxuICBsZXQgcmV3cml0ZSB4ID0gcHJvcGFnYXRlX2ZvcmNlZF9icmVha3MgeFxuXG4gICgqXG4gICAgUmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgbWFya19vcGVuX3RhZyBhbmQgbWFya19jbG9zZV90YWdcbiAgICBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgY2FsbGluZyBwcF9vdXRwdXRfc3RyaW5nIG9uY2UuXG4gICAgSXQncyBhIHJlYXNvbmFibGUgYXNzdW1wdGlvbiBhbHRob3VnaCBub3QgZ3VhcmFudGVlZCBieSB0aGVcbiAgICBkb2N1bWVudGF0aW9uIG9mIHRoZSBGb3JtYXQgbW9kdWxlLlxuICAqKVxuICBsZXQgc2V0X2VzY2FwZSBmbXQgZXNjYXBlID1cbiAgICBsZXQgcHJpbnQwLCBmbHVzaDAgPSBGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIGZtdCAoKSBpblxuICAgIGxldCB0YWdmMCA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSBpblxuXG4gICAgbGV0IGlzX3RhZyA9IHJlZiBmYWxzZSBpblxuXG4gICAgbGV0IG1vdCB0YWcgPVxuICAgICAgaXNfdGFnIDo9IHRydWU7XG4gICAgICB0YWdmMC5tYXJrX29wZW5fc3RhZyB0YWdcbiAgICBpblxuXG4gICAgbGV0IG1jdCB0YWcgPVxuICAgICAgaXNfdGFnIDo9IHRydWU7XG4gICAgICB0YWdmMC5tYXJrX2Nsb3NlX3N0YWcgdGFnXG4gICAgaW5cblxuICAgIGxldCBwcmludCBzIHAgbiA9XG4gICAgICBpZiAhaXNfdGFnIHRoZW5cbiAgICAgICAgKHByaW50MCBzIHAgbjtcbiAgICAgICAgIGlzX3RhZyA6PSBmYWxzZSlcbiAgICAgIGVsc2VcbiAgICAgICAgZXNjYXBlIHByaW50MCBzIHAgblxuICAgIGluXG5cbiAgICBsZXQgdGFnZiA9IHtcbiAgICAgIHRhZ2YwIHdpdGhcbiAgICAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdFxuICAgIH1cbiAgICBpblxuICAgIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgZm10IHByaW50IGZsdXNoMDtcbiAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgdGFnZlxuXG5cbiAgbGV0IHNldF9lc2NhcGVfc3RyaW5nIGZtdCBlc2MgPVxuICAgIGxldCBlc2NhcGUgcHJpbnQgcyBwIG4gPVxuICAgICAgbGV0IHMwID0gU3RyaW5nLnN1YiBzIHAgbiBpblxuICAgICAgbGV0IHMxID0gZXNjIHMwIGluXG4gICAgICBwcmludCBzMSAwIChTdHJpbmcubGVuZ3RoIHMxKVxuICAgIGluXG4gICAgc2V0X2VzY2FwZSBmbXQgZXNjYXBlXG5cblxuICBsZXQgZGVmaW5lX3N0eWxlcyBmbXQgZXNjYXBlIGwgPVxuICAgIGlmIGwgPD4gW10gdGhlbiAoXG4gICAgICBGb3JtYXQucHBfc2V0X3RhZ3MgZm10IHRydWU7XG4gICAgICBsZXQgdGJsMSA9IEhhc2h0YmwuY3JlYXRlICgyICogTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgIGxldCB0YmwyID0gSGFzaHRibC5jcmVhdGUgKDIgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgTGlzdC5pdGVyIChcbiAgICAgICAgZnVuIChzdHlsZV9uYW1lLCBzdHlsZSkgLT5cbiAgICAgICAgICBIYXNodGJsLmFkZCB0YmwxIHN0eWxlX25hbWUgc3R5bGUudGFnX29wZW47XG4gICAgICAgICAgSGFzaHRibC5hZGQgdGJsMiBzdHlsZV9uYW1lIHN0eWxlLnRhZ19jbG9zZVxuICAgICAgKSBsO1xuICAgICAgbGV0IG1hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICAgICAgICB8IEZvcm1hdC5TdHJpbmdfdGFnIHN0eWxlX25hbWUgLT5cbiAgICAgICAgICAgICh0cnkgSGFzaHRibC5maW5kIHRibDEgc3R5bGVfbmFtZVxuICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIpXG4gICAgICAgIHwgXyAtPiBcIlwiXG4gICAgICBpblxuICAgICAgbGV0IG1hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgICAgICAgfCBGb3JtYXQuU3RyaW5nX3RhZyBzdHlsZV9uYW1lIC0+XG4gICAgICAgICAgICAodHJ5IEhhc2h0YmwuZmluZCB0YmwyIHN0eWxlX25hbWVcbiAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFwiXCJcbiAgICAgIGluXG5cbiAgICAgIGxldCB0YWdmID0ge1xuICAgICAgICAoRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpKSB3aXRoXG4gICAgICAgICAgbWFya19vcGVuX3N0YWcgPSBtYXJrX29wZW5fdGFnO1xuICAgICAgICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1hcmtfY2xvc2VfdGFnXG4gICAgICB9XG4gICAgICBpblxuICAgICAgRm9ybWF0LnBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10IHRhZ2ZcbiAgICApO1xuXG4gICAgKG1hdGNoIGVzY2FwZSB3aXRoXG4gICAgICAgICBgTm9uZSAtPiAoKVxuICAgICAgIHwgYEVzY2FwZSBlc2MgLT4gc2V0X2VzY2FwZSBmbXQgZXNjXG4gICAgICAgfCBgRXNjYXBlX3N0cmluZyBlc2MgLT4gc2V0X2VzY2FwZV9zdHJpbmcgZm10IGVzYylcblxuXG4gIGxldCBwcF9vcGVuX3hib3ggZm10IHAgaW5kZW50ID1cbiAgICBtYXRjaCBwLndyYXBfYm9keSB3aXRoXG4gICAgICAgIGBBbHdheXNfd3JhcFxuICAgICAgfCBgTmV2ZXJfd3JhcFxuICAgICAgfCBgV3JhcF9hdG9tcyAtPiBGb3JtYXQucHBfb3Blbl9odmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBGb3JjZV9icmVha3NcbiAgICAgIHwgYEZvcmNlX2JyZWFrc19yZWMgLT4gRm9ybWF0LnBwX29wZW5fdmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBOb19icmVha3MgLT4gRm9ybWF0LnBwX29wZW5faGJveCBmbXQgKClcblxuICBsZXQgZXh0cmFfYm94IHAgbCA9XG4gICAgbGV0IHdyYXAgPVxuICAgICAgbWF0Y2ggcC53cmFwX2JvZHkgd2l0aFxuICAgICAgICAgIGBBbHdheXNfd3JhcCAtPiB0cnVlXG4gICAgICAgIHwgYE5ldmVyX3dyYXBcbiAgICAgICAgfCBgRm9yY2VfYnJlYWtzXG4gICAgICAgIHwgYEZvcmNlX2JyZWFrc19yZWNcbiAgICAgICAgfCBgTm9fYnJlYWtzIC0+IGZhbHNlXG4gICAgICAgIHwgYFdyYXBfYXRvbXMgLT5cbiAgICAgICAgICAgIExpc3QuZm9yX2FsbCAoZnVuY3Rpb24gQXRvbSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsXG4gICAgaW5cbiAgICBpZiB3cmFwIHRoZW5cbiAgICAgICgoZnVuIGZtdCAtPiBGb3JtYXQucHBfb3Blbl9ob3Zib3ggZm10IDApLFxuICAgICAgIChmdW4gZm10IC0+IEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpKSlcbiAgICBlbHNlXG4gICAgICAoKGZ1biBfIC0+ICgpKSxcbiAgICAgICAoZnVuIF8gLT4gKCkpKVxuXG5cbiAgbGV0IHBwX29wZW5fbm9uYWxpZ25lZF9ib3ggZm10IHAgaW5kZW50IGwgPVxuICAgIG1hdGNoIHAud3JhcF9ib2R5IHdpdGhcbiAgICAgICAgYEFsd2F5c193cmFwIC0+IEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBOZXZlcl93cmFwIC0+IEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYFdyYXBfYXRvbXMgLT5cbiAgICAgICAgICBpZiBMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uIEF0b20gXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbCB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfb3Blbl9ob3Zib3ggZm10IGluZGVudFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYEZvcmNlX2JyZWFrc1xuICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlYyAtPiBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5vX2JyZWFrcyAtPiBGb3JtYXQucHBfb3Blbl9oYm94IGZtdCAoKVxuXG5cbiAgbGV0IG9wZW5fdGFnIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT4gRm9ybWF0LnBwX29wZW5fc3RhZyBmbXQgKEZvcm1hdC5TdHJpbmdfdGFnIHMpXG5cbiAgbGV0IGNsb3NlX3RhZyBmbXQgPSBmdW5jdGlvblxuICAgICAgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBfIC0+IEZvcm1hdC5wcF9jbG9zZV9zdGFnIGZtdCAoKVxuXG4gIGxldCB0YWdfc3RyaW5nIGZtdCBvIHMgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgICAgICBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHNcbiAgICAgIHwgU29tZSB0YWcgLT5cbiAgICAgICAgICBGb3JtYXQucHBfb3Blbl9zdGFnIGZtdCAoRm9ybWF0LlN0cmluZ190YWcgdGFnKTtcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzO1xuICAgICAgICAgIEZvcm1hdC5wcF9jbG9zZV9zdGFnIGZtdCAoKVxuXG4gIGxldCByZWMgZnByaW50X3QgZm10ID0gZnVuY3Rpb25cbiAgICAgIEF0b20gKHMsIHApIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuYXRvbV9zdHlsZSBzO1xuXG4gICAgfCBMaXN0ICgoXywgXywgXywgcCkgYXMgcGFyYW0sIGwpIC0+XG4gICAgICAgIG9wZW5fdGFnIGZtdCBwLmxpc3Rfc3R5bGU7XG4gICAgICAgIGlmIHAuYWxpZ25fY2xvc2luZyB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3QgZm10IE5vbmUgcGFyYW0gbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3QyIGZtdCBwYXJhbSBsO1xuICAgICAgICBjbG9zZV90YWcgZm10IHAubGlzdF9zdHlsZVxuXG4gICAgfCBMYWJlbCAobGFiZWwsIHgpIC0+IGZwcmludF9wYWlyIGZtdCBsYWJlbCB4XG4gICAgfCBDdXN0b20gZiAtPiBmIGZtdFxuXG4gIGFuZCBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsID1cbiAgICBvcGVuX3RhZyBmbXQgcC5ib2R5X3N0eWxlO1xuICAgIGZwcmludF90IGZtdCBoZDtcbiAgICBMaXN0Lml0ZXIgKFxuICAgICAgZnVuIHggLT5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcbiAgICBjbG9zZV90YWcgZm10IHAuYm9keV9zdHlsZVxuXG4gIGFuZCBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX3JpZ2h0IGZtdCBwIHNlcCBoZCB0bCA9XG4gICAgb3Blbl90YWcgZm10IHAuYm9keV9zdHlsZTtcbiAgICBmcHJpbnRfdCBmbXQgaGQ7XG4gICAgTGlzdC5pdGVyIChcbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuc2VwYXJhdG9yX3N0eWxlIHNlcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICBmcHJpbnRfdCBmbXQgeFxuICAgICkgdGw7XG4gICAgY2xvc2VfdGFnIGZtdCBwLmJvZHlfc3R5bGVcblxuICBhbmQgZnByaW50X29wdF9sYWJlbCBmbXQgPSBmdW5jdGlvblxuICAgICAgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAobGFiLCBscCkgLT5cbiAgICAgICAgb3Blbl90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICBmcHJpbnRfdCBmbXQgbGFiO1xuICAgICAgICBjbG9zZV90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCJcblxuICAoKiBFaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBsaXN0ICopXG4gIGFuZCBmcHJpbnRfbGlzdCBmbXQgbGFiZWwgKChvcCwgX3NlcCwgY2wsIHApIGFzIHBhcmFtKSA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPlxuICAgICAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgfHwgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG4gICAgfCBoZCA6OiB0bCBhcyBsIC0+XG5cbiAgICAgICAgaWYgdGwgPSBbXSB8fCBwLnNlcGFyYXRvcnNfc3RpY2tfbGVmdCB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3Rfc3RpY2tfbGVmdCBmbXQgbGFiZWwgcGFyYW0gaGQgdGwgbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3Rfc3RpY2tfcmlnaHQgZm10IGxhYmVsIHBhcmFtIGhkIHRsIGxcblxuXG4gIGFuZCBmcHJpbnRfbGlzdF9zdGlja19sZWZ0IGZtdCBsYWJlbCAob3AsIHNlcCwgY2wsIHApIGhkIHRsIGwgPVxuICAgIGxldCBpbmRlbnQgPSBwLmluZGVudF9ib2R5IGluXG4gICAgcHBfb3Blbl94Ym94IGZtdCBwIGluZGVudDtcbiAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcblxuICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcblxuICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG5cbiAgICBsZXQgb3Blbl9leHRyYSwgY2xvc2VfZXh0cmEgPSBleHRyYV9ib3ggcCBsIGluXG4gICAgb3Blbl9leHRyYSBmbXQ7XG4gICAgZnByaW50X2xpc3RfYm9keV9zdGlja19sZWZ0IGZtdCBwIHNlcCBoZCB0bDtcbiAgICBjbG9zZV9leHRyYSBmbXQ7XG5cbiAgICBpZiBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSAoLWluZGVudClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgKC1pbmRlbnQpO1xuICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbDtcbiAgICBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKVxuXG4gIGFuZCBmcHJpbnRfbGlzdF9zdGlja19yaWdodCBmbXQgbGFiZWwgKG9wLCBzZXAsIGNsLCBwKSBoZCB0bCBsID1cbiAgICBsZXQgYmFzZV9pbmRlbnQgPSBwLmluZGVudF9ib2R5IGluXG4gICAgbGV0IHNlcF9pbmRlbnQgPVxuICAgICAgU3RyaW5nLmxlbmd0aCBzZXAgKyAoaWYgcC5zcGFjZV9hZnRlcl9zZXBhcmF0b3IgdGhlbiAxIGVsc2UgMClcbiAgICBpblxuICAgIGxldCBpbmRlbnQgPSBiYXNlX2luZGVudCArIHNlcF9pbmRlbnQgaW5cblxuICAgIHBwX29wZW5feGJveCBmbXQgcCBpbmRlbnQ7XG4gICAgZnByaW50X29wdF9sYWJlbCBmbXQgbGFiZWw7XG5cbiAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG5cbiAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpO1xuXG4gICAgbGV0IG9wZW5fZXh0cmEsIGNsb3NlX2V4dHJhID0gZXh0cmFfYm94IHAgbCBpblxuICAgIG9wZW5fZXh0cmEgZm10O1xuXG4gICAgZnByaW50X3QgZm10IGhkO1xuICAgIExpc3QuaXRlciAoXG4gICAgICBmdW4geCAtPlxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSAoLXNlcF9pbmRlbnQpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgKC1zZXBfaW5kZW50KTtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcblxuICAgIGNsb3NlX2V4dHJhIGZtdDtcblxuICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtaW5kZW50KVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLWluZGVudCk7XG4gICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cblxuXG4gICgqIGFsaWduX2Nsb3NpbmcgPSBmYWxzZSAqKVxuICBhbmQgZnByaW50X2xpc3QyIGZtdCAob3AsIHNlcCwgY2wsIHApID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHx8IHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2xcblxuICAgIHwgaGQgOjogdGwgYXMgbCAtPlxuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG5cbiAgICAgICAgcHBfb3Blbl9ub25hbGlnbmVkX2JveCBmbXQgcCAwIGwgO1xuICAgICAgICBpZiBwLnNlcGFyYXRvcnNfc3RpY2tfbGVmdCB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3RfYm9keV9zdGlja19sZWZ0IGZtdCBwIHNlcCBoZCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3RfYm9keV9zdGlja19yaWdodCBmbXQgcCBzZXAgaGQgdGw7XG4gICAgICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpO1xuXG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2xcblxuXG4gICgqIFByaW50aW5nIGEgbGFiZWw6dmFsdWUgcGFpci5cblxuICAgICBUaGUgb3BlbmluZyBicmFja2V0IHN0YXlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGtleSwgbm8gbWF0dGVyIHdoYXQsXG4gICAgIGFuZCB0aGUgY2xvc2luZyBicmFja2V0IGlzIGVpdGhlciBvbiB0aGUgc2FtZSBsaW5lXG4gICAgIG9yIHZlcnRpY2FsbHkgYWxpZ25lZCB3aXRoIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGtleS5cbiAgKilcbiAgYW5kIGZwcmludF9wYWlyIGZtdCAoKGxhYiwgbHApIGFzIGxhYmVsKSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgTGlzdCAoKG9wLCBzZXAsIGNsLCBwKSwgbCkgd2hlbiBwLnN0aWNrX3RvX2xhYmVsICYmIHAuYWxpZ25fY2xvc2luZyAtPlxuICAgICAgICAgIGZwcmludF9saXN0IGZtdCAoU29tZSBsYWJlbCkgKG9wLCBzZXAsIGNsLCBwKSBsXG5cbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBpbmRlbnQgPSBscC5pbmRlbnRfYWZ0ZXJfbGFiZWwgaW5cbiAgICAgICAgICBGb3JtYXQucHBfb3Blbl9odmJveCBmbXQgMDtcblxuICAgICAgICAgIG9wZW5fdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcbiAgICAgICAgICBmcHJpbnRfdCBmbXQgbGFiO1xuICAgICAgICAgIGNsb3NlX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG5cbiAgICAgICAgICAobWF0Y2ggbHAubGFiZWxfYnJlYWsgd2l0aFxuICAgICAgICAgICB8IGBBdXRvIC0+XG4gICAgICAgICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSBpbmRlbnRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwIGluZGVudFxuICAgICAgICAgICB8IGBBbHdheXNcbiAgICAgICAgICAgfCBgQWx3YXlzX3JlYyAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LnBwX2ZvcmNlX25ld2xpbmUgZm10ICgpO1xuICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgKFN0cmluZy5tYWtlIGluZGVudCAnICcpXG4gICAgICAgICAgIHwgYE5ldmVyIC0+XG4gICAgICAgICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9jaGFyIGZtdCAnICdcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICApO1xuICAgICAgICAgIGZwcmludF90IGZtdCB4O1xuICAgICAgICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cbiAgbGV0IHRvX2Zvcm1hdHRlciBmbXQgeCA9XG4gICAgbGV0IHggPSByZXdyaXRlIHggaW5cbiAgICBmcHJpbnRfdCBmbXQgeDtcbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgbGV0IHRvX2J1ZmZlciA/KGVzY2FwZSA9IGBOb25lKSA/KHN0eWxlcyA9IFtdKSBidWYgeCA9XG4gICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgIGRlZmluZV9zdHlsZXMgZm10IGVzY2FwZSBzdHlsZXM7XG4gICAgdG9fZm9ybWF0dGVyIGZtdCB4XG5cbiAgbGV0IHRvX3N0cmluZyA/ZXNjYXBlID9zdHlsZXMgeCA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNTAwIGluXG4gICAgdG9fYnVmZmVyID9lc2NhcGUgP3N0eWxlcyBidWYgeDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHRvX2NoYW5uZWwgPyhlc2NhcGUgPSBgTm9uZSkgPyhzdHlsZXMgPSBbXSkgb2MgeCA9XG4gICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICBkZWZpbmVfc3R5bGVzIGZtdCBlc2NhcGUgc3R5bGVzO1xuICAgIHRvX2Zvcm1hdHRlciBmbXQgeFxuXG4gIGxldCB0b19zdGRvdXQgP2VzY2FwZSA/c3R5bGVzIHggPSB0b19jaGFubmVsID9lc2NhcGUgP3N0eWxlcyBzdGRvdXQgeFxuICBsZXQgdG9fc3RkZXJyID9lc2NhcGUgP3N0eWxlcyB4ID0gdG9fY2hhbm5lbCA/ZXNjYXBlID9zdHlsZXMgc3RkZXJyIHhcblxuZW5kXG5cblxuXG5cbm1vZHVsZSBDb21wYWN0ID1cbnN0cnVjdFxuICBvcGVuIFByaW50ZlxuXG4gIGxldCByZWMgZnByaW50X3QgYnVmID0gZnVuY3Rpb25cbiAgICAgIEF0b20gKHMsIF8pIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzXG4gICAgfCBMaXN0IChwYXJhbSwgbCkgLT4gZnByaW50X2xpc3QgYnVmIHBhcmFtIGxcbiAgICB8IExhYmVsIChsYWJlbCwgeCkgLT4gZnByaW50X3BhaXIgYnVmIGxhYmVsIHhcbiAgICB8IEN1c3RvbSBmIC0+XG4gICAgICAgICgqIFdpbGwgbW9zdCBsaWtlbHkgbm90IGJlIGNvbXBhY3QgKilcbiAgICAgICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgICAgICBmIGZtdDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuXG4gIGFuZCBmcHJpbnRfbGlzdCBidWYgKG9wLCBzZXAsIGNsLCBfKSA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiBicHJpbnRmIGJ1ZiBcIiVzJXNcIiBvcCBjbFxuICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgb3A7XG4gICAgICAgIGZwcmludF90IGJ1ZiB4O1xuICAgICAgICBMaXN0Lml0ZXIgKFxuICAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgICAgICAgICAgZnByaW50X3QgYnVmIHhcbiAgICAgICAgKSB0bDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGNsXG5cbiAgYW5kIGZwcmludF9wYWlyIGJ1ZiAobGFiZWwsIF8pIHggPVxuICAgIGZwcmludF90IGJ1ZiBsYWJlbDtcbiAgICBmcHJpbnRfdCBidWYgeFxuXG5cbiAgbGV0IHRvX2J1ZmZlciBidWYgeCA9IGZwcmludF90IGJ1ZiB4XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA1MDAgaW5cbiAgICB0b19idWZmZXIgYnVmIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCB0b19mb3JtYXR0ZXIgZm10IHggPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHggaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiIHM7XG4gICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuXG4gIGxldCB0b19jaGFubmVsIG9jIHggPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDUwMCBpblxuICAgIHRvX2J1ZmZlciBidWYgeDtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBidWZcblxuICBsZXQgdG9fc3Rkb3V0IHggPSB0b19jaGFubmVsIHN0ZG91dCB4XG4gIGxldCB0b19zdGRlcnIgeCA9IHRvX2NoYW5uZWwgc3RkZXJyIHhcbmVuZFxuXG5cblxuXG4oKiBPYnNvbGV0ZSAqKVxubW9kdWxlIFBhcmFtID1cbnN0cnVjdFxuICBsZXQgbGlzdF90cnVlID0ge1xuICAgIHNwYWNlX2FmdGVyX29wZW5pbmcgPSB0cnVlO1xuICAgIHNwYWNlX2FmdGVyX3NlcGFyYXRvciA9IHRydWU7XG4gICAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IHRydWU7XG4gICAgc2VwYXJhdG9yc19zdGlja19sZWZ0ID0gdHJ1ZTtcbiAgICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IHRydWU7XG4gICAgc3RpY2tfdG9fbGFiZWwgPSB0cnVlO1xuICAgIGFsaWduX2Nsb3NpbmcgPSB0cnVlO1xuICAgIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICAgIGluZGVudF9ib2R5ID0gMjtcbiAgICBsaXN0X3N0eWxlID0gTm9uZTtcbiAgICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgICBib2R5X3N0eWxlID0gTm9uZTtcbiAgICBzZXBhcmF0b3Jfc3R5bGUgPSBOb25lO1xuICAgIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xuICB9XG5cbiAgbGV0IGxpc3RfZmFsc2UgPSB7XG4gICAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IGZhbHNlO1xuICAgIHNwYWNlX2FmdGVyX3NlcGFyYXRvciA9IGZhbHNlO1xuICAgIHNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgPSBmYWxzZTtcbiAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSBmYWxzZTtcbiAgICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IGZhbHNlO1xuICAgIHN0aWNrX3RvX2xhYmVsID0gZmFsc2U7XG4gICAgYWxpZ25fY2xvc2luZyA9IGZhbHNlO1xuICAgIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICAgIGluZGVudF9ib2R5ID0gMjtcbiAgICBsaXN0X3N0eWxlID0gTm9uZTtcbiAgICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgICBib2R5X3N0eWxlID0gTm9uZTtcbiAgICBzZXBhcmF0b3Jfc3R5bGUgPSBOb25lO1xuICAgIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xuICB9XG5cbiAgbGV0IGxhYmVsX3RydWUgPSB7XG4gICAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgICBzcGFjZV9hZnRlcl9sYWJlbCA9IHRydWU7XG4gICAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgICBsYWJlbF9zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGFiZWxfZmFsc2UgPSB7XG4gICAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgICBzcGFjZV9hZnRlcl9sYWJlbCA9IGZhbHNlO1xuICAgIGluZGVudF9hZnRlcl9sYWJlbCA9IDI7XG4gICAgbGFiZWxfc3R5bGUgPSBOb25lO1xuICB9XG5lbmRcbiIsImV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IGVycm9yIHMgPSByYWlzZSAoRXJyb3IgcylcblxuXG4oKlxuICBEZWJ1Z2dpbmcgdXRpbGl0aWVzLlxuKilcblxubGV0IHN0cmluZzhfb2ZfaW50IHggPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gIGZvciBpID0gMCB0byA3IGRvXG4gICAgQnl0ZXMuc2V0IHMgKDctaSkgKENoYXIuY2hyICgweGZmIGxhbmQgKHggbHNyICg4ICogaSkpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHNcblxubGV0IHN0cmluZzRfb2ZfaW50IHggPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gIGZvciBpID0gMCB0byAzIGRvXG4gICAgQnl0ZXMuc2V0IHMgKDMtaSkgKENoYXIuY2hyICgweGZmIGxhbmQgKHggbHNyICg4ICogaSkpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHNcblxubGV0IHByaW50X2JpdHMgPyhwb3MgPSAwKSA/bGVuIHMgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBwb3MgPCAwIHx8IChwb3MgPiAwICYmIHBvcyA+PSBzbGVuKSB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCaV91dGlsLnByaW50X2JpdHNcIjtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgTm9uZSAtPiBzbGVuIC0gcG9zXG4gICAgICB8IFNvbWUgbGVuIC0+XG4gICAgICAgICAgaWYgbGVuID4gc2xlbiAtIHBvcyB0aGVuIGludmFsaWRfYXJnIFwiQmlfdXRpbC5wcmludF9iaXRzXCJcbiAgICAgICAgICBlbHNlIGxlblxuICBpblxuXG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIChsZW4gKiA5KSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBrID0gaSAqIDkgaW5cbiAgICBsZXQgeCA9IENoYXIuY29kZSBzLltwb3MraV0gaW5cbiAgICBmb3IgaiA9IDAgdG8gNyBkb1xuICAgICAgQnl0ZXMuc2V0IHIgKGsraikgKGlmICh4IGxzciAoNyAtIGopKSBsYW5kIDEgPSAwIHRoZW4gJzAnIGVsc2UgJzEnKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IHIgKGsrOCkgKGlmIChpICsgMSkgbW9kIDggPSAwIHRoZW4gJ1xcbicgZWxzZSAnICcpXG4gIGRvbmU7XG4gIEJ5dGVzLnRvX3N0cmluZyByXG5cbigqIGludCBzaXplIGluIGJpdHMgKilcbmxldCBpbnRfc2l6ZSA9XG4gIGxldCBjID0gcmVmIDAgaW5cbiAgbGV0IHIgPSByZWYgKC0xKSBpblxuICB3aGlsZSAhciA8PiAwIGRvXG4gICAgciA6PSAhciBsc3IgMTtcbiAgICBpbmNyIGNcbiAgZG9uZTtcbiAgIWNcbiIsInR5cGUgdHlwZV9pZCA9IGludFxuXG5sZXQgZHVtbXlfdHlwZV9pZCA9IDBcblxubGV0IGNyZWF0ZV90eXBlX2lkID1cbiAgbGV0IG4gPSByZWYgZHVtbXlfdHlwZV9pZCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIG47XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwiQmlfc2hhcmUuUmRfcG9seS5jcmVhdGVfdHlwZV9pZDogXFxcbiAgICAgICAgICAgICAgICBleGhhdXN0ZWQgYXZhaWxhYmxlIHR5cGVfaWQnc1wiXG4gICAgZWxzZVxuICAgICAgIW5cblxubW9kdWxlIFdyID1cbnN0cnVjdFxuICBtb2R1bGUgSCA9IEhhc2h0YmwuTWFrZSAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSBPYmoudCAqIHR5cGVfaWRcbiAgICAgIGxldCBlcXVhbCAoeDEsIHQxKSAoeDIsIHQyKSA9IHgxID09IHgyICYmIHQxID09IHQyXG4gICAgICBsZXQgaGFzaCA9IEhhc2h0YmwuaGFzaFxuICAgIGVuZFxuICApXG5cbiAgdHlwZSB0YmwgPSBpbnQgSC50XG5cbiAgbGV0IGNyZWF0ZSA9IEguY3JlYXRlXG4gIGxldCBjbGVhciB0YmwgPVxuICAgIGlmIEgubGVuZ3RoIHRibCA+IDAgdGhlblxuICAgICAgSC5jbGVhciB0YmxcblxuICBsZXQgcHV0IHRibCBrIHBvcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgcG9zMCA9IEguZmluZCB0YmwgKE9iai5tYWdpYyBrKSBpblxuICAgICAgcG9zIC0gcG9zMFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBILmFkZCB0YmwgKE9iai5tYWdpYyBrKSBwb3M7XG4gICAgICAwXG5lbmRcblxubW9kdWxlIFJkID1cbnN0cnVjdFxuICB0eXBlIHRibCA9ICgoaW50ICogdHlwZV9pZCksIE9iai50KSBIYXNodGJsLnRcblxuICBsZXQgY3JlYXRlIG4gPSBIYXNodGJsLmNyZWF0ZSBuXG4gIGxldCBjbGVhciA9IEhhc2h0YmwuY2xlYXJcblxuICBsZXQgcHV0IHRibCBwb3MgeCA9XG4gICAgSGFzaHRibC5hZGQgdGJsIHBvcyB4XG5cbiAgbGV0IGdldCB0YmwgcG9zID1cbiAgICB0cnkgSGFzaHRibC5maW5kIHRibCBwb3NcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIHJlZmVyZW5jZSlcIlxuZW5kXG4iLCJ0eXBlIHQgPSB7XG4gIG11dGFibGUgaV9zIDogYnl0ZXM7XG4gIG11dGFibGUgaV9wb3MgOiBpbnQ7XG4gIG11dGFibGUgaV9sZW4gOiBpbnQ7XG4gIG11dGFibGUgaV9vZmZzIDogaW50O1xuICBtdXRhYmxlIGlfbWF4X2xlbiA6IGludDtcbiAgaV9yZWZpbGwgOiAodCAtPiBpbnQgLT4gdW5pdCk7XG4gIGlfc2hhcmVkIDogQmlfc2hhcmUuUmQudGJsO1xufVxuXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbmxldCB0cnlfcHJlcmVhZCBpYiBuID1cbiAgaWYgaWIuaV9sZW4gLSBpYi5pX3BvcyA8IG4gdGhlbiAoXG4gICAgaWIuaV9yZWZpbGwgaWIgbjtcbiAgICBtaW4gKGliLmlfbGVuIC0gaWIuaV9wb3MpIG5cbiAgKVxuICBlbHNlXG4gICAgblxuXG5sZXQgcmVhZCBpYiBuID1cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGlmIGliLmlfbGVuIC0gcG9zID49IG4gdGhlbiAoXG4gICAgaWIuaV9wb3MgPC0gcG9zICsgbjtcbiAgICBwb3NcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgbiA+PSBuIHRoZW5cbiAgICAgIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICAgICAgaWIuaV9wb3MgPC0gaWIuaV9wb3MgKyBuO1xuICAgICAgcG9zXG4gICAgZWxzZVxuICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG5cbmxldCByZWFkX2NoYXIgaWIgPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPiAwIHRoZW4gKFxuICAgIGxldCBjID0gQnl0ZXMudW5zYWZlX2dldCBpYi5pX3MgcG9zIGluXG4gICAgaWIuaV9wb3MgPC0gcG9zICsgMTtcbiAgICBjXG4gIClcbiAgZWxzZVxuICAgIGlmIHRyeV9wcmVyZWFkIGliIDEgPiAwIHRoZW5cbiAgICAgIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICAgICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3MgaW5cbiAgICAgIGliLmlfcG9zIDwtIHBvcyArIDE7XG4gICAgICBjXG4gICAgZWxzZVxuICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG5cbmxldCBwZWVrIGliID1cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGlmIGliLmlfbGVuIC0gcG9zID4gMCB0aGVuIChcbiAgICBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3NcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgMSA+IDAgdGhlblxuICAgICAgQnl0ZXMudW5zYWZlX2dldCBpYi5pX3MgaWIuaV9wb3NcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IGZyb21fYnl0ZXMgPyhwb3MgPSAwKSA/KHNocmxlbiA9IDE2KSBzID0ge1xuICBpX3MgPSBzO1xuICBpX3BvcyA9IHBvcztcbiAgaV9sZW4gPSBCeXRlcy5sZW5ndGggcztcbiAgaV9vZmZzID0gLXBvcztcbiAgaV9tYXhfbGVuID0gQnl0ZXMubGVuZ3RoIHM7XG4gIGlfcmVmaWxsID0gKGZ1biBpYiBuIC0+ICgpKTtcbiAgaV9zaGFyZWQgPSBCaV9zaGFyZS5SZC5jcmVhdGUgc2hybGVuO1xufVxuXG5sZXQgZnJvbV9zdHJpbmcgP3BvcyA/c2hybGVuIHMgPSBmcm9tX2J5dGVzID9wb3MgP3NocmxlbiAoQnl0ZXMub2Zfc3RyaW5nIHMpXG5cbigqXG4gIExpa2UgUGVydmFzaXZlcy5yZWFsbHlfaW5wdXQgYnV0IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlc1xuICByZWFkIGluc3RlYWQgb2YgcmFpc2luZyBFbmRfb2ZfZmlsZSB3aGVuIHRoZSBlbmQgb2YgZmlsZSBpcyByZWFjaGVkLlxuKilcbmxldCByZWMgbm90X3JlYWxseV9pbnB1dCBpYyBzIHBvcyBsZW4gYWNjdSA9XG4gIGxldCBuID0gaW5wdXQgaWMgcyBwb3MgbGVuIGluXG4gIGlmIG4gPCBsZW4gJiYgbiA+IDAgdGhlblxuICAgIG5vdF9yZWFsbHlfaW5wdXQgaWMgcyAocG9zICsgbikgKGxlbiAtIG4pIChhY2N1ICsgbilcbiAgZWxzZVxuICAgIGFjY3UgKyBuXG5cbmxldCByZWZpbGxfZnJvbV9jaGFubmVsIGljIGliIG4gPVxuICBpZiBuID4gaWIuaV9tYXhfbGVuIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJpX2luYnVmLnJlZmlsbF9mcm9tX2NoYW5uZWxcIlxuICBlbHNlIChcbiAgICBsZXQgcmVtX2xlbiA9IGliLmlfbGVuIC0gaWIuaV9wb3MgaW5cbiAgICBpZiByZW1fbGVuIDwgbiB0aGVuXG4gICAgICBsZXQgcyA9IGliLmlfcyBpblxuICAgICAgQnl0ZXMuYmxpdCBzIGliLmlfcG9zIHMgMCByZW1fbGVuO1xuICAgICAgbGV0IHRvX3JlYWQgPSBuIC0gcmVtX2xlbiBpblxuICAgICAgbGV0IHJlYWxseV9yZWFkID0gbm90X3JlYWxseV9pbnB1dCBpYyBzIHJlbV9sZW4gdG9fcmVhZCAwIGluXG4gICAgICBpYi5pX29mZnMgPC0gaWIuaV9vZmZzICsgaWIuaV9wb3M7XG4gICAgICBpYi5pX3BvcyA8LSAwO1xuICAgICAgaWIuaV9sZW4gPC0gcmVtX2xlbiArIHJlYWxseV9yZWFkXG4gIClcblxubGV0IGZyb21fY2hhbm5lbCA/KGxlbiA9IDQwOTYpID8oc2hybGVuID0gMTYpIGljID0ge1xuICBpX3MgPSBCeXRlcy5jcmVhdGUgbGVuO1xuICBpX3BvcyA9IDA7XG4gIGlfbGVuID0gMDtcbiAgaV9vZmZzID0gMDtcbiAgaV9tYXhfbGVuID0gbGVuO1xuICBpX3JlZmlsbCA9IHJlZmlsbF9mcm9tX2NoYW5uZWwgaWM7XG4gIGlfc2hhcmVkID0gQmlfc2hhcmUuUmQuY3JlYXRlIHNocmxlbjtcbn1cbiIsInR5cGUgdCA9IHtcbiAgbXV0YWJsZSBvX3MgOiBieXRlcztcbiAgbXV0YWJsZSBvX21heF9sZW4gOiBpbnQ7XG4gIG11dGFibGUgb19sZW4gOiBpbnQ7XG4gIG11dGFibGUgb19vZmZzIDogaW50O1xuICBvX2luaXRfbGVuIDogaW50O1xuICBvX21ha2Vfcm9vbSA6ICh0IC0+IGludCAtPiB1bml0KTtcbiAgbXV0YWJsZSBvX3NoYXJlZCA6IEJpX3NoYXJlLldyLnRibDtcbiAgb19zaGFyZWRfaW5pdF9sZW4gOiBpbnQ7XG59XG5cbmxldCByZWFsbHlfZXh0ZW5kIGIgbiA9XG4gIGxldCBzbGVuMCA9IGIub19tYXhfbGVuIGluXG4gIGxldCByZXFsZW4gPSBiLm9fbGVuICsgbiBpblxuICBsZXQgc2xlbiA9XG4gICAgbGV0IHggPSBtYXggcmVxbGVuICgyICogc2xlbjApIGluXG4gICAgaWYgeCA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiB4XG4gICAgZWxzZVxuICAgICAgaWYgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIDwgcmVxbGVuIHRoZW5cblx0aW52YWxpZF9hcmcgXCJCdWYuZXh0ZW5kOiByZWFjaGVkIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFwiXG4gICAgICBlbHNlXG5cdFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBzbGVuIGluXG4gIEJ5dGVzLmJsaXQgYi5vX3MgMCBzIDAgYi5vX2xlbjtcbiAgYi5vX3MgPC0gcztcbiAgYi5vX21heF9sZW4gPC0gc2xlblxuXG5sZXQgZmx1c2hfdG9fb3V0cHV0IGFic3RyYWN0X291dHB1dCBiIG4gPVxuICBhYnN0cmFjdF9vdXRwdXQgKEJ5dGVzLnRvX3N0cmluZyBiLm9fcykgMCBiLm9fbGVuO1xuICBiLm9fb2ZmcyA8LSBiLm9fb2ZmcyArIGIub19sZW47XG4gIGIub19sZW4gPC0gMDtcbiAgaWYgbiA+IGIub19tYXhfbGVuIHRoZW5cbiAgICByZWFsbHlfZXh0ZW5kIGIgblxuXG5sZXQgZmx1c2hfdG9fY2hhbm5lbCBvYyA9IGZsdXNoX3RvX291dHB1dCAob3V0cHV0X3N1YnN0cmluZyBvYylcblxuXG5sZXQgY3JlYXRlID8obWFrZV9yb29tID0gcmVhbGx5X2V4dGVuZCkgPyhzaHJsZW4gPSAxNikgbiA9IHtcbiAgb19zID0gQnl0ZXMuY3JlYXRlIG47XG4gIG9fbWF4X2xlbiA9IG47XG4gIG9fbGVuID0gMDtcbiAgb19vZmZzID0gMDtcbiAgb19pbml0X2xlbiA9IG47XG4gIG9fbWFrZV9yb29tID0gbWFrZV9yb29tO1xuICBvX3NoYXJlZCA9IEJpX3NoYXJlLldyLmNyZWF0ZSBzaHJsZW47XG4gIG9fc2hhcmVkX2luaXRfbGVuID0gc2hybGVuO1xufVxuXG5sZXQgY3JlYXRlX2NoYW5uZWxfd3JpdGVyID8obGVuID0gNDA5NikgP3NocmxlbiBvYyA9XG4gIGNyZWF0ZSB+bWFrZV9yb29tOihmbHVzaF90b19jaGFubmVsIG9jKSA/c2hybGVuIGxlblxuXG5sZXQgZmx1c2hfY2hhbm5lbF93cml0ZXIgYiA9XG4gIGIub19tYWtlX3Jvb20gYiAwXG5cbmxldCBjcmVhdGVfb3V0cHV0X3dyaXRlciA/KGxlbiA9IDQwOTYpID9zaHJsZW4gb3V0ID1cbiAgY3JlYXRlIH5tYWtlX3Jvb206KGZsdXNoX3RvX291dHB1dCBvdXQjb3V0cHV0KSA/c2hybGVuIGxlblxuXG5sZXQgZmx1c2hfb3V0cHV0X3dyaXRlciA9IGZsdXNoX2NoYW5uZWxfd3JpdGVyXG5cblxuKCpcbiAgR3VhcmFudGVlIHRoYXQgdGhlIGJ1ZmZlciBzdHJpbmcgaGFzIGVub3VnaCByb29tIGZvciBuIGFkZGl0aW9uYWwgYnl0ZXMuXG4qKVxubGV0IGV4dGVuZCBiIG4gPVxuICBpZiBiLm9fbGVuICsgbiA+IGIub19tYXhfbGVuIHRoZW5cbiAgICBiLm9fbWFrZV9yb29tIGIgblxuXG5sZXQgYWxsb2MgYiBuID1cbiAgZXh0ZW5kIGIgbjtcbiAgbGV0IHBvcyA9IGIub19sZW4gaW5cbiAgYi5vX2xlbiA8LSBwb3MgKyBuO1xuICBwb3NcblxubGV0IGFkZF9zdWIgYmxpdCBiIHMgcG9zIGxlbiA9XG4gIGV4dGVuZCBiIGxlbjtcbiAgYmxpdCBzIHBvcyBiLm9fcyBiLm9fbGVuIGxlbjtcbiAgYi5vX2xlbiA8LSBiLm9fbGVuICsgbGVuXG5cbmxldCBhZGRfc3Vic3RyaW5nID0gYWRkX3N1YiBTdHJpbmcuYmxpdFxubGV0IGFkZF9zdWJieXRlcyA9IGFkZF9zdWIgQnl0ZXMuYmxpdFxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBhZGRfc3Vic3RyaW5nIGIgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZGRfYnl0ZXMgYiBzID1cbiAgYWRkX3N1YmJ5dGVzIGIgcyAwIChCeXRlcy5sZW5ndGggcylcblxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGFsbG9jIGIgMSBpblxuICBCeXRlcy5zZXQgYi5vX3MgcG9zIGNcblxubGV0IHVuc2FmZV9hZGRfY2hhciBiIGMgPVxuICBsZXQgbGVuID0gYi5vX2xlbiBpblxuICBCeXRlcy5zZXQgYi5vX3MgbGVuIGM7XG4gIGIub19sZW4gPC0gbGVuICsgMVxuXG5sZXQgYWRkX2NoYXIyIGIgYzEgYzIgPVxuICBsZXQgcG9zID0gYWxsb2MgYiAyIGluXG4gIGxldCBzID0gYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyBjMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgYzJcblxubGV0IGFkZF9jaGFyNCBiIGMxIGMyIGMzIGM0ID1cbiAgbGV0IHBvcyA9IGFsbG9jIGIgNCBpblxuICBsZXQgcyA9IGIub19zIGluXG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyBwb3MgYzE7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzEpIGMyO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysyKSBjMztcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMykgYzRcblxuXG5cbmxldCBjbGVhciBiID1cbiAgYi5vX29mZnMgPC0gMDtcbiAgYi5vX2xlbiA8LSAwO1xuICBCaV9zaGFyZS5Xci5jbGVhciBiLm9fc2hhcmVkXG5cbmxldCByZXNldCBiID1cbiAgaWYgQnl0ZXMubGVuZ3RoIGIub19zIDw+IGIub19pbml0X2xlbiB0aGVuXG4gICAgYi5vX3MgPC0gQnl0ZXMuY3JlYXRlIGIub19pbml0X2xlbjtcbiAgYi5vX29mZnMgPC0gMDtcbiAgYi5vX2xlbiA8LSAwO1xuICBiLm9fc2hhcmVkIDwtIEJpX3NoYXJlLldyLmNyZWF0ZSBiLm9fc2hhcmVkX2luaXRfbGVuXG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLm9fcyAwIGIub19sZW5cbiIsIigqIFZhcmlhYmxlLWJ5dGUgZW5jb2Rpbmcgb2YgOC1ieXRlIGludGVnZXJzIChzdGFydGluZyBmcm9tIDApLiAqKVxuXG5vcGVuIFByaW50Zlxub3BlbiBCaV9vdXRidWZcbm9wZW4gQmlfaW5idWZcblxudHlwZSB1aW50ID0gaW50XG5cbigqIE1heGltdW0gbGVuZ3RoIG9mIGEgdmludCBkZWNvZGFibGUgaW50byBhbiBPQ2FtbCBpbnQsXG4gICBtYXhpbXVtIHZhbHVlIG9mIHRoZSBoaWdoZXN0IGJ5dGUgb2YgdGhlIGxhcmdlc3QgdmludCBzdXBwb3J0ZWQgKilcbmxldCBtYXhfdmludF9ieXRlcywgbWF4X2hpZ2hlc3RfYnl0ZSA9XG4gIGlmIEJpX3V0aWwuaW50X3NpemUgbW9kIDcgPSAwIHRoZW5cbiAgICBsZXQgbSA9IEJpX3V0aWwuaW50X3NpemUgLyA3IGluXG4gICAgbGV0IGggPSAxIGxzbCA3IC0gMSBpblxuICAgIG0sIGhcbiAgZWxzZVxuICAgIGxldCBtID0gQmlfdXRpbC5pbnRfc2l6ZSAvIDcgKyAxIGluXG4gICAgbGV0IGggPSAxIGxzbCAoQmlfdXRpbC5pbnRfc2l6ZSBtb2QgNykgLSAxIGluXG4gICAgbSwgaFxuXG5sZXQgY2hlY2tfaGlnaGVzdF9ieXRlIHggPVxuICBpZiB4ID4gbWF4X2hpZ2hlc3RfYnl0ZSB0aGVuXG4gICAgQmlfdXRpbC5lcnJvciBcIlZpbnQgZXhjZWVkaW5nIHJhbmdlIG9mIE9DYW1sIGludHNcIlxuXG5cbmxldCB1bnNpZ25lZF9vZl9zaWduZWQgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgKCpcbiAgICAgIDAgLT4gMFxuICAgICAgMSAtPiAyXG4gICAgICAyIC0+IDRcbiAgICAgIDMgLT4gNlxuICAgICopXG4gICAgaSBsc2wgMVxuICBlbHNlXG4gICAgKCpcbiAgICAgIC0xIC0+IDFcbiAgICAgIC0yIC0+IDNcbiAgICAgIC0zIC0+IDVcbiAgICAqKVxuICAgICgoLTEtaSkgbHNsIDEpIGxvciAxXG5cbmxldCBzaWduZWRfb2ZfdW5zaWduZWQgaSA9XG4gIGlmIGkgbGFuZCAxID0gMCB0aGVuIGkgbHNyIDFcbiAgZWxzZSAtMSAtIChpIGxzciAxKVxuXG5sZXQgd3JpdGVfdXZpbnQgYnVmIGkgID1cbiAgQmlfb3V0YnVmLmV4dGVuZCBidWYgbWF4X3ZpbnRfYnl0ZXM7XG5cbiAgbGV0IHggPSByZWYgaSBpblxuICB3aGlsZSAheCBsc3IgNyA8PiAwIGRvXG4gICAgbGV0IGJ5dGUgPSAweDgwIGxvciAoIXggbGFuZCAweDdmKSBpblxuICAgIEJpX291dGJ1Zi51bnNhZmVfYWRkX2NoYXIgYnVmIChDaGFyLmNociBieXRlKTtcbiAgICB4IDo9ICF4IGxzciA3O1xuICBkb25lO1xuICBCaV9vdXRidWYudW5zYWZlX2FkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgIXgpXG5cbmxldCB3cml0ZV9zdmludCBidWYgaSA9XG4gIHdyaXRlX3V2aW50IGJ1ZiAodW5zaWduZWRfb2Zfc2lnbmVkIGkpXG5cbigqIGNvbnZlbmllbmNlICopXG5sZXQgdXZpbnRfb2ZfdWludCA/YnVmIGkgPVxuICBsZXQgYnVmZmVyID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgfCBOb25lIC0+IEJpX291dGJ1Zi5jcmVhdGUgMTBcbiAgICAgIHwgU29tZSBiIC0+IGJcbiAgaW5cbiAgQmlfb3V0YnVmLmNsZWFyIGJ1ZmZlcjtcbiAgd3JpdGVfdXZpbnQgYnVmZmVyIGk7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBidWZmZXJcblxubGV0IHN2aW50X29mX2ludCA/YnVmIGkgPVxuICB1dmludF9vZl91aW50ID9idWYgKHVuc2lnbmVkX29mX3NpZ25lZCBpKVxuXG5cbmxldCByZWFkX3V2aW50IGliID1cbiAgbGV0IGF2YWlsID0gQmlfaW5idWYudHJ5X3ByZXJlYWQgaWIgbWF4X3ZpbnRfYnl0ZXMgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGxldCB4ID0gcmVmIDAgaW5cbiAgKHRyeVxuICAgICBmb3IgaSA9IDAgdG8gYXZhaWwgLSAxIGRvXG4gICAgICAgbGV0IGIgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChwb3MraSkpIGluXG4gICAgICAgeCA6PSAoKGIgbGFuZCAweDdmKSBsc2wgKDcqaSkpIGxvciAheDtcbiAgICAgICBpZiBiIDwgMHg4MCB0aGVuIChcblx0IGliLmlfcG9zIDwtIHBvcyArIGkgKyAxO1xuXHQgaWYgaSArIDEgPSBtYXhfdmludF9ieXRlcyB0aGVuXG5cdCAgIGNoZWNrX2hpZ2hlc3RfYnl0ZSBiO1xuXHQgcmFpc2UgRXhpdFxuICAgICAgIClcbiAgICAgZG9uZTtcbiAgICAgQmlfdXRpbC5lcnJvciBcIlVudGVybWluYXRlZCB2aW50IG9yIHZpbnQgZXhjZWVkaW5nIHJhbmdlIG9mIE9DYW1sIGludHNcIlxuICAgd2l0aCBFeGl0IC0+ICgpXG4gICk7XG4gICF4XG5cblxubGV0IHJlYWRfc3ZpbnQgaWIgPVxuICBzaWduZWRfb2ZfdW5zaWduZWQgKHJlYWRfdXZpbnQgaWIpXG5cbigqIGNvbnZlbmllbmNlICopXG5cbmxldCBjaGVja19lbmRfb2ZfaW5wdXQgaWIgPVxuICBpZiBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiAxID4gMCB0aGVuXG4gICAgQmlfdXRpbC5lcnJvciBcIkp1bmsgaW5wdXQgYWZ0ZXIgZW5kIG9mIHZpbnRcIlxuXG5sZXQgdWludF9vZl91dmludCBzID1cbiAgbGV0IGliID0gQmlfaW5idWYuZnJvbV9zdHJpbmcgcyBpblxuICBsZXQgeCA9IHJlYWRfdXZpbnQgaWIgaW5cbiAgY2hlY2tfZW5kX29mX2lucHV0IGliO1xuICB4XG5cbmxldCBpbnRfb2Zfc3ZpbnQgcyA9XG4gIGxldCBpYiA9IEJpX2luYnVmLmZyb21fc3RyaW5nIHMgaW5cbiAgbGV0IHggPSByZWFkX3N2aW50IGliIGluXG4gIGNoZWNrX2VuZF9vZl9pbnB1dCBpYjtcbiAgeFxuXG5cbigqXG4gIFRlc3RpbmdcbiopXG5cbmxldCBzdHJpbmdfb2ZfbGlzdCBsID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSAxMDAgaW5cbiAgTGlzdC5pdGVyICh3cml0ZV91dmludCBvYikgbDtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIG9iXG5cbmxldCByZWMgcmVhZF9saXN0IGliID1cbiAgaWYgaWIuaV9wb3MgPCBpYi5pX2xlbiB0aGVuXG4gICAgbGV0IHggPSByZWFkX3V2aW50IGliIGluXG4gICAgeCA6OiByZWFkX2xpc3QgaWJcbiAgZWxzZVxuICAgIFtdXG5cbmxldCBsaXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9saXN0IChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKVxuXG5sZXQgcHJpbnRfbGlzdCBsID1cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4gaSAtPlxuICAgICAgcHJpbnRmIFwiZGVjICVpXFxuaGV4ICV4XFxuYmluICVzXFxuXCIgaSBpXG5cdChCaV91dGlsLnByaW50X2JpdHMgKEJpX3V0aWwuc3RyaW5nOF9vZl9pbnQgaSkpXG4gICkgbFxuXG5sZXQgdGVzdCAoKSA9XG4gIGxldCBsID0gW1xuICAgIDA7XG4gICAgMHhmZmZmZmZmO1xuICAgICgweDAxMDIwMzA0IGxzbCAzMikgbG9yIDB4MDUwNjA3MDg7XG4gICAgbWF4X2ludDtcbiAgICBtaW5faW50XG4gIF0gaW5cbiAgcHJpbnRmIFwiSW5wdXQ6XFxuXCI7XG4gIHByaW50X2xpc3QgbDtcbiAgbGV0IGwnID0gbGlzdF9vZl9zdHJpbmcgKHN0cmluZ19vZl9saXN0IGwpIGluXG4gIHByaW50ZiBcIk91dHB1dDpcXG5cIjtcbiAgcHJpbnRfbGlzdCBsJztcbiAgaWYgbCA9IGwnIHRoZW5cbiAgICBwcmludF9lbmRsaW5lIFwiU1VDQ0VTU1wiXG4gIGVsc2VcbiAgICBwcmludF9lbmRsaW5lIFwiRkFJTFVSRVwiXG4iLCJvcGVuIFByaW50ZlxuXG5sZXQgZXJyb3IgcyA9IGZhaWx3aXRoIChcIkJpX3N0cmVhbTogXCIgXiBzKVxuXG5sZXQgaW5wdXRfaW50NjQgaWMgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICAgIDY0IC0+XG4gICAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDggZG9cbiAgICAgICAgICBuIDo9ICghbiBsc2wgOCkgbG9yIChpbnB1dF9ieXRlIGljKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgICAgICBlcnJvciBcIkNvcnJ1cHRlZCBzdHJlYW06IGV4Y2Vzc2l2ZSBjaHVuayBsZW5ndGhcIjtcbiAgICAgICAgIW5cbiAgICB8IDMyIC0+XG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgaWYgaW5wdXRfYnl0ZSBpYyA8PiAwIHRoZW5cbiAgICAgICAgICAgIGVycm9yIFwiQ2h1bmsgbGVuZ3RoIGV4Y2VlZHMgc3VwcG9ydGVkIHJhbmdlIG9uIHRoaXMgcGxhdGZvcm1cIlxuICAgICAgICBkb25lO1xuICAgICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgbiA6PSAoIW4gbHNsIDgpIGxvciAoaW5wdXRfYnl0ZSBpYyk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICAgICAgZXJyb3IgXCJDaHVuayBsZW5ndGggZXhjZWVkcyBzdXBwb3J0ZWQgcmFuZ2Ugb24gdGhpcyBwbGF0Zm9ybVwiO1xuICAgICAgICAhblxuICAgIHwgbiAtPlxuICAgICAgICBlcnJvciAoc3ByaW50ZiBcInVuc3VwcG9ydGVkIHdvcmQgc2l6ZSAoJWkpXCIgbilcblxubGV0IG91dHB1dF9pbnQ2NCBvYyBuID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgICA2NCAtPlxuICAgICAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgICAgIGZvciBpID0gMSB0byA4IGRvXG4gICAgICAgICAgb3V0cHV0X2NoYXIgb2MgKGNoYXJfb2ZfaW50ICghbiBsc3IgNTYpKTtcbiAgICAgICAgICBuIDo9ICFuIGxzbCA4XG4gICAgICAgIGRvbmVcbiAgICB8IDMyIC0+XG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICAgICAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgb3V0cHV0X2NoYXIgb2MgKGNoYXJfb2ZfaW50ICghbiBsc3IgMjQpKTtcbiAgICAgICAgICBuIDo9ICFuIGxzbCA4XG4gICAgICAgIGRvbmVcbiAgICB8IG4gLT5cbiAgICAgICAgZXJyb3IgKHNwcmludGYgXCJ1bnN1cHBvcnRlZCB3b3JkIHNpemUgKCVpKVwiIG4pXG5cbmxldCByZWMgcmVhZF9jaHVuayBvZl9zdHJpbmcgaWMgPVxuICBtYXRjaCBpbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICdcXDAwMScgLT5cbiAgICAgICAgbGV0IGxlbiA9IGlucHV0X2ludDY0IGljIGluXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICBcIkNvcnJ1cHRlZCBzdHJlYW06IGV4Y2Vzc2l2ZSBjaHVuayBsZW5ndGggKCVpIGJ5dGVzKVwiIGxlbik7XG4gICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgICAgICAgU29tZSAob2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcykpXG5cbiAgICB8ICdcXDAwMCcgLT4gTm9uZVxuXG4gICAgfCBjIC0+IGVycm9yIChzcHJpbnRmIFwiQ29ycnVwdGVkIHN0cmVhbTogJUNcIiBjKVxuXG5cbmxldCBmbGF0dGVuIHN0ID1cbiAgbGV0IGEgPSByZWYgW3wgfF0gaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCByZWMgbmV4dCBpID1cbiAgICBpZiAhcG9zID49IEFycmF5Lmxlbmd0aCAhYSB0aGVuIChcbiAgICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0IHdpdGhcbiAgICAgICAgICBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGEnIC0+XG4gICAgICAgICAgICBTdHJlYW0uanVuayBzdDtcbiAgICAgICAgICAgIGEgOj0gYSc7XG4gICAgICAgICAgICBwb3MgOj0gMDtcbiAgICAgICAgICAgIG5leHQgaVxuICAgIClcbiAgICBlbHNlIChcbiAgICAgIGxldCB4ID0gKCFhKS4oIXBvcykgaW5cbiAgICAgIGluY3IgcG9zO1xuICAgICAgU29tZSB4XG4gICAgKVxuICBpblxuICBTdHJlYW0uZnJvbSBuZXh0XG5cblxubGV0IHJlYWRfc3RyZWFtIG9mX3N0cmluZyBpYyA9XG4gIGZsYXR0ZW4gKFN0cmVhbS5mcm9tIChmdW4gaSAtPiByZWFkX2NodW5rIG9mX3N0cmluZyBpYykpXG5cbmxldCByZXZfYXJyYXlfb2ZfbGlzdCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPiBbfHxdXG4gICAgfCB4IDo6IHRsIC0+XG4gICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICBtYXRjaCAhciB3aXRoXG4gICAgICAgICAgICAgIGhkIDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgYS4oaSkgPC0gaGQ7XG4gICAgICAgICAgICAgICAgciA6PSB0bDtcbiAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFcblxubGV0IHdyaXRlX3N0cmVhbSA/KGNodW5rX2xlbiA9IDEwMjQpIHRvX3N0cmluZyBvYyBzdCA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBsZXQgZmx1c2hfY2h1bmsgKCkgPVxuICAgIGxldCBhID0gcmV2X2FycmF5X29mX2xpc3QgIWFjYyBpblxuICAgIGFjYyA6PSBbXTtcbiAgICBuIDo9IDA7XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgYSBpblxuICAgIG91dHB1dF9jaGFyIG9jICdcXDAwMSc7XG4gICAgb3V0cHV0X2ludDY0IG9jIChTdHJpbmcubGVuZ3RoIHMpO1xuICAgIG91dHB1dF9zdHJpbmcgb2Mgc1xuICBpblxuICBTdHJlYW0uaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGluY3IgbjtcbiAgICAgIGFjYyA6PSB4IDo6ICFhY2M7XG4gICAgICBpZiAhbiA+PSBjaHVua19sZW4gdGhlblxuICAgICAgICBmbHVzaF9jaHVuayAoKVxuICApIHN0O1xuICBpZiAhbiA+IDAgdGhlblxuICAgIGZsdXNoX2NodW5rICgpO1xuICBvdXRwdXRfY2hhciBvYyAnXFwwMDAnXG5cblxubGV0IHRlc3QgbCA9XG4gIExpc3QuaXRlciAoZnVuIHggLT4gYXNzZXJ0ICh4ID49IDAgJiYgeCA8PSA5KSkgbDtcbiAgbGV0IHRvX3N0cmluZyBhID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgKEFycmF5LnRvX2xpc3QgYSkpXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgQXJyYXkuaW5pdCAoU3RyaW5nLmxlbmd0aCBzKSAoZnVuIGkgLT4gaW50X29mX3N0cmluZyAoU3RyaW5nLm1ha2UgMSBzLltpXSkpXG4gIGluXG4gIGxldCBzdCA9IFN0cmVhbS5vZl9saXN0IGwgaW5cbiAgbGV0IG9jID0gb3Blbl9vdXQgXCJ0ZXN0LXN0cmVhbS5kYXRcIiBpblxuICB3cml0ZV9zdHJlYW0gfmNodW5rX2xlbjoyIHRvX3N0cmluZyBvYyBzdDtcbiAgY2xvc2Vfb3V0IG9jO1xuXG4gIGxldCBpYyA9IG9wZW5faW4gXCJ0ZXN0LXN0cmVhbS5kYXRcIiBpblxuICBsZXQgc3QnID0gcmVhZF9zdHJlYW0gb2Zfc3RyaW5nIGljIGluXG4gIGxldCBsJyA9IHJlZiBbXSBpblxuICBTdHJlYW0uaXRlciAoZnVuIGkgLT4gbCcgOj0gaSA6OiAhbCcpIHN0JztcbiAgY2xvc2VfaW4gaWM7XG4gIGwgPSBMaXN0LnJldiAhbCdcbiIsIm9wZW4gUHJpbnRmXG5cbm9wZW4gQmlfb3V0YnVmXG5vcGVuIEJpX2luYnVmXG5cbnR5cGUgbm9kZV90YWcgPSBpbnRcblxubGV0IGJvb2xfdGFnID0gMFxubGV0IGludDhfdGFnID0gMVxubGV0IGludDE2X3RhZyA9IDJcbmxldCBpbnQzMl90YWcgPSAzXG5sZXQgaW50NjRfdGFnID0gNFxubGV0IGZsb2F0MzJfdGFnID0gMTFcbmxldCBmbG9hdDY0X3RhZyA9IDEyXG5sZXQgdXZpbnRfdGFnID0gMTZcbmxldCBzdmludF90YWcgPSAxN1xubGV0IHN0cmluZ190YWcgPSAxOFxubGV0IGFycmF5X3RhZyA9IDE5XG5sZXQgdHVwbGVfdGFnID0gMjBcbmxldCByZWNvcmRfdGFnID0gMjFcbmxldCBudW1fdmFyaWFudF90YWcgPSAyMlxubGV0IHZhcmlhbnRfdGFnID0gMjNcbmxldCB1bml0X3RhZyA9IDI0XG5sZXQgdGFibGVfdGFnID0gMjVcbmxldCBzaGFyZWRfdGFnID0gMjZcblxudHlwZSBoYXNoID0gaW50XG5cbigqXG4gIERhdGEgdHJlZSwgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4qKVxudHlwZSB0cmVlID1cbiAgICBbIGBVbml0XG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50OCBvZiBjaGFyXG4gICAgfCBgSW50MTYgb2YgaW50XG4gICAgfCBgSW50MzIgb2YgSW50MzIudFxuICAgIHwgYEludDY0IG9mIEludDY0LnRcbiAgICB8IGBGbG9hdDMyIG9mIGZsb2F0XG4gICAgfCBgRmxvYXQ2NCBvZiBmbG9hdFxuICAgIHwgYFV2aW50IG9mIGludFxuICAgIHwgYFN2aW50IG9mIGludFxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBBcnJheSBvZiAobm9kZV90YWcgKiB0cmVlIGFycmF5KSBvcHRpb25cbiAgICB8IGBUdXBsZSBvZiB0cmVlIGFycmF5XG4gICAgfCBgUmVjb3JkIG9mIChzdHJpbmcgb3B0aW9uICogaGFzaCAqIHRyZWUpIGFycmF5XG4gICAgfCBgTnVtX3ZhcmlhbnQgb2YgKGludCAqIHRyZWUgb3B0aW9uKVxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyBvcHRpb24gKiBoYXNoICogdHJlZSBvcHRpb24pXG4gICAgfCBgVGFibGUgb2Zcblx0KChzdHJpbmcgb3B0aW9uICogaGFzaCAqIG5vZGVfdGFnKSBhcnJheSAqIHRyZWUgYXJyYXkgYXJyYXkpIG9wdGlvblxuICAgIHwgYFNoYXJlZCBvZiB0cmVlIF1cblxuKCogZXh0ZW5kIHNpZ24gYml0ICopXG5sZXQgbWFrZV9zaWduZWQgeCA9XG4gIGlmIHggPiAweDNGRkZGRkZGIHRoZW4geCAtICgxIGxzbCAzMSkgZWxzZSB4XG5cbigqXG4gIFNhbWUgZnVuY3Rpb24gYXMgdGhlIG9uZSB1c2VkIGZvciBPQ2FtbCB2YXJpYW50cyBhbmQgb2JqZWN0IG1ldGhvZHMuXG4qKVxubGV0IGhhc2hfbmFtZSBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIG1ha2Vfc2lnbmVkICFhY2N1XG5cblxuKCpcbiAgU3RydWN0dXJlIG9mIGEgaGFzaHRhZzogNCBieXRlcyxcblxuICBhcmdiaXQgN2JpdHMgOGJpdHMgOGJpdHMgOGJpdHNcbiAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgICAgICAgICAgIDMxLWJpdCBoYXNoXG5cbiAgYXJnYml0ID0gMSBpZmYgaGFzaHRhZyBpcyBmb2xsb3dlZCBieSBhbiBhcmd1bWVudCwgdGhpcyBpcyBhbHdheXMgMSBmb3JcbiAgICAgICAgICAgcmVjb3JkIGZpZWxkcy5cblxuKilcblxubGV0IG1hc2tfMzFiaXQgPVxuICBsZXQgbiA9IEJpX3V0aWwuaW50X3NpemUgLSAzMSBpblxuICBhc3NlcnQgKG4gPj0gMCk7XG4gIGZ1biB4IC0+ICh4IGxzbCBuKSBsc3IgblxuXG5sZXQgd3JpdGVfaGFzaHRhZyBvYiBoIGhhc19hcmcgPVxuICBsZXQgaCA9IG1hc2tfMzFiaXQgaCBpblxuICBsZXQgcG9zID0gQmlfb3V0YnVmLmFsbG9jIG9iIDQgaW5cbiAgbGV0IHMgPSBvYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMykgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMikgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyAoXG4gICAgQ2hhci5jaHIgKFxuICAgICAgaWYgaGFzX2FyZyB0aGVuIGggbG9yIDB4ODBcbiAgICAgIGVsc2UgaFxuICAgIClcbiAgKVxuXG5sZXQgc3RyaW5nX29mX2hhc2h0YWcgaCBoYXNfYXJnID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSA0IGluXG4gIHdyaXRlX2hhc2h0YWcgb2IgaCBoYXNfYXJnO1xuICBCaV9vdXRidWYuY29udGVudHMgb2JcblxubGV0IHJlYWRfaGFzaHRhZyBpYiBjb250ID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHgwID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgcyBpKSBpblxuICBsZXQgaGFzX2FyZyA9IHgwID49IDB4ODAgaW5cbiAgbGV0IHgxID0gKHgwIGxhbmQgMHg3ZikgbHNsIDI0IGluXG4gIGxldCB4MiA9IChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzEpKSkgbHNsIDE2IGluXG4gIGxldCB4MyA9IChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzIpKSkgbHNsIDggaW5cbiAgbGV0IHg0ID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgcyAoaSszKSkgaW5cbiAgbGV0IGggPSBtYWtlX3NpZ25lZCAoeDEgbG9yIHgyIGxvciB4MyBsb3IgeDQpIGluXG5cbiAgY29udCBpYiBoIGhhc19hcmdcblxuXG5sZXQgcmVhZF9maWVsZF9oYXNodGFnIGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHgwID0gQ2hhci5jb2RlIChCeXRlcy51bnNhZmVfZ2V0IHMgaSkgaW5cbiAgaWYgeDAgPCAweDgwIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgZmllbGQgaGFzaHRhZylcIjtcbiAgbGV0IHgxID0gKHgwIGxhbmQgMHg3ZikgbHNsIDI0IGluXG4gIGxldCB4MiA9IChDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSsxKSkpIGxzbCAxNiBpblxuICBsZXQgeDMgPSAoQ2hhci5jb2RlIChCeXRlcy51bnNhZmVfZ2V0IHMgKGkrMikpKSBsc2wgOCBpblxuICBsZXQgeDQgPSBDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSszKSkgaW5cbiAgbWFrZV9zaWduZWQgKHgxIGxvciB4MiBsb3IgeDMgbG9yIHg0KVxuXG5cbnR5cGUgaW50NyA9IGludFxuXG5sZXQgd3JpdGVfbnVtdGFnIG9iIGkgaGFzX2FyZyA9XG4gIGlmIGkgPCAwIHx8IGkgPiAweDdmIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgbnVtdGFnKVwiO1xuICBsZXQgeCA9XG4gICAgaWYgaGFzX2FyZyB0aGVuIGkgbG9yIDB4ODBcbiAgICBlbHNlIGlcbiAgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociB4KVxuXG5sZXQgcmVhZF9udW10YWcgaWIgY29udCA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiAxIGluXG4gIGxldCB4ID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgaWIuaV9zIGkpIGluXG4gIGxldCBoYXNfYXJnID0geCA+PSAweDgwIGluXG4gIGNvbnQgaWIgKHggbGFuZCAweDdmKSBoYXNfYXJnXG5cbmxldCBtYWtlX3VuaGFzaCBsID1cbiAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICg0ICogTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4gcyAtPlxuICAgICAgbGV0IGggPSBoYXNoX25hbWUgcyBpblxuICAgICAgdHJ5XG5cdG1hdGNoIEhhc2h0YmwuZmluZCB0YmwgaCB3aXRoXG5cdCAgICBTb21lIHMnIC0+XG5cdCAgICAgIGlmIHMgPD4gcycgdGhlblxuXHRcdGZhaWx3aXRoIChcblx0XHQgIHNwcmludGZcblx0XHQgICAgXCJCaV9pby5tYWtlX3VuaGFzaDogXFxcbiAgICAgICAgICAgICAgICAgICAgICVTIGFuZCAlUyBoYXZlIHRoZSBzYW1lIGhhc2gsIHBsZWFzZSBwaWNrIGFub3RoZXIgbmFtZVwiXG5cdFx0ICAgIHMgcydcblx0XHQpXG5cdCAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiBIYXNodGJsLmFkZCB0YmwgaCAoU29tZSBzKVxuICApIGw7XG4gIGZ1biBoIC0+XG4gICAgdHJ5IEhhc2h0YmwuZmluZCB0YmwgaFxuICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuXG5sZXQgd3JpdGVfdGFnIG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIHgpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iICdcXHgwMCdcblxubGV0IHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoaWYgeCB0aGVuICdcXHgwMScgZWxzZSAnXFx4MDAnKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfY2hhciBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIHhcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDggb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgeClcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDE2IG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4IGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHggbGFuZCAweGZmKSlcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHggPVxuICBsZXQgaGlnaCA9IEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDE2KSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIChoaWdoIGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKGhpZ2ggbGFuZCAweGZmKSk7XG4gIGxldCBsb3cgPSBJbnQzMi50b19pbnQgeCBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgobG93IGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAobG93IGxhbmQgMHhmZikpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9mbG9hdDMyIG9iIHggPVxuICB3cml0ZV91bnRhZ2dlZF9pbnQzMiBvYiAoSW50MzIuYml0c19vZl9mbG9hdCB4KVxuXG5sZXQgZmxvYXRfZW5kaWFubmVzcyA9IGxhenkgKFxuICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCAoT2JqLm1hZ2ljIDEuMCkgMCB3aXRoXG4gICAgICAnXFx4M2YnIC0+IGBCaWdcbiAgICB8ICdcXHgwMCcgLT4gYExpdHRsZVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbilcblxubGV0IHJlYWRfdW50YWdnZWRfZmxvYXQ2NCBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA4IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmouZG91YmxlX3RhZyA4IGluXG4gIChtYXRjaCBMYXp5LmZvcmNlIGZsb2F0X2VuZGlhbm5lc3Mgd2l0aFxuICAgICAgIGBMaXR0bGUgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgKE9iai5vYmogeCkgKDctaikgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaStqKSlcblx0IGRvbmVcbiAgICAgfCBgQmlnIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IChPYmoub2JqIHgpIGogKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaStqKSlcblx0IGRvbmVcbiAgKTtcbiAgKE9iai5vYmogeCA6IGZsb2F0KVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4ID1cbiAgbGV0IGkgPSBCaV9vdXRidWYuYWxsb2Mgb2IgOCBpblxuICBsZXQgcyA9IG9iLm9fcyBpblxuICAobWF0Y2ggTGF6eS5mb3JjZSBmbG9hdF9lbmRpYW5uZXNzIHdpdGhcbiAgICAgICBgTGl0dGxlIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IHMgKGkraikgKFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgeCkgKDctaikpXG5cdCBkb25lXG4gICAgIHwgYEJpZyAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCBzIChpK2opIChTdHJpbmcudW5zYWZlX2dldCAoT2JqLm1hZ2ljIHgpIGopXG5cdCBkb25lXG4gIClcblxuKCpcbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4ID1cbiAgbGV0IHg0ID0gSW50NjQudG9faW50IChJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggNDgpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHg0IGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHg0IGxhbmQgMHhmZikpO1xuICBsZXQgeDMgPSBJbnQ2NC50b19pbnQgKEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAzMikgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoKHgzIGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDMgbGFuZCAweGZmKSk7XG4gIGxldCB4MiA9IEludDY0LnRvX2ludCAoSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDE2KSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDIgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MiBsYW5kIDB4ZmYpKTtcbiAgbGV0IHgxID0gSW50NjQudG9faW50IHggaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoKHgxIGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDEgbGFuZCAweGZmKSlcbiopXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4ID1cbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiAoSW50NjQuZmxvYXRfb2ZfYml0cyB4KVxuXG5cbmxldCBzYWZldHlfdGVzdCAoKSA9XG4gIGxldCBzID0gXCJcXHgzZlxceGYwXFx4MDZcXHgwNVxceDA0XFx4MDNcXHgwMlxceDAxXCIgaW5cbiAgbGV0IHggPSAxLjAwMTQ2OTYyNzA2NjUxMjg4IGluXG4gIGxldCB5ID0gcmVhZF91bnRhZ2dlZF9mbG9hdDY0IChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKSBpblxuICBpZiB4IDw+IHkgdGhlblxuICAgIGFzc2VydCBmYWxzZTtcbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSA4IGluXG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeDtcbiAgaWYgQmlfb3V0YnVmLmNvbnRlbnRzIG9iIDw+IHMgdGhlblxuICAgIGFzc2VydCBmYWxzZVxuXG5cblxubGV0IHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiBzID1cbiAgQmlfdmludC53cml0ZV91dmludCBvYiAoU3RyaW5nLmxlbmd0aCBzKTtcbiAgQmlfb3V0YnVmLmFkZF9zdHJpbmcgb2Igc1xuXG5sZXQgd3JpdGVfdW50YWdnZWRfdXZpbnQgPSBCaV92aW50LndyaXRlX3V2aW50XG5sZXQgd3JpdGVfdW50YWdnZWRfc3ZpbnQgPSBCaV92aW50LndyaXRlX3N2aW50XG5cbmxldCB3cml0ZV91bml0IG9iICgpID1cbiAgd3JpdGVfdGFnIG9iIHVuaXRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICB3cml0ZV90YWcgb2IgYm9vbF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeFxuXG5sZXQgd3JpdGVfY2hhciBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHhcblxubGV0IHdyaXRlX2ludDggb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQ4X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50OCBvYiB4XG5cbmxldCB3cml0ZV9pbnQxNiBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDE2X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeFxuXG5sZXQgd3JpdGVfaW50MzIgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQzMl90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHhcblxubGV0IHdyaXRlX2ludDY0IG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50NjRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4XG5cbmxldCB3cml0ZV9mbG9hdDMyIG9iIHggPVxuICB3cml0ZV90YWcgb2IgZmxvYXQzMl90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeFxuXG5sZXQgd3JpdGVfZmxvYXQ2NCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGZsb2F0NjRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHhcblxubGV0IHdyaXRlX3N0cmluZyBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHN0cmluZ190YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiB4XG5cbmxldCB3cml0ZV91dmludCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHV2aW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfdXZpbnQgb2IgeFxuXG5sZXQgd3JpdGVfc3ZpbnQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBzdmludF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3N2aW50IG9iIHhcblxuXG5cblxubGV0IHJlYyB3cml0ZV90IG9iIHRhZ2dlZCAoeCA6IHRyZWUpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgVW5pdCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB1bml0X3RhZztcblx0d3JpdGVfdW50YWdnZWRfdW5pdCBvYiAoKVxuXG4gICAgfCBgQm9vbCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGJvb2xfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9ib29sIG9iIHhcblxuICAgIHwgYEludDggeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQ4X3RhZztcblx0d3JpdGVfdW50YWdnZWRfY2hhciBvYiB4XG5cbiAgICB8IGBJbnQxNiB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDE2X3RhZztcblx0d3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeFxuXG4gICAgfCBgSW50MzIgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQzMl90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHhcblxuICAgIHwgYEludDY0IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50NjRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4XG5cbiAgICB8IGBGbG9hdDMyIHggLT5cbiAgICAgICAgaWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgZmxvYXQzMl90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeFxuXG4gICAgfCBgRmxvYXQ2NCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGZsb2F0NjRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHhcblxuICAgIHwgYFV2aW50IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdXZpbnRfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIHhcblxuICAgIHwgYFN2aW50IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2Igc3ZpbnRfdGFnO1xuXHRCaV92aW50LndyaXRlX3N2aW50IG9iIHhcblxuICAgIHwgYFN0cmluZyBzIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHN0cmluZ190YWc7XG5cdHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiBzXG5cbiAgICB8IGBBcnJheSBvIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGFycmF5X3RhZztcblx0KG1hdGNoIG8gd2l0aFxuXHQgICAgIE5vbmUgLT4gQmlfdmludC53cml0ZV91dmludCBvYiAwXG5cdCAgIHwgU29tZSAobm9kZV90YWcsIGEpIC0+XG5cdCAgICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cblx0ICAgICAgIEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgbGVuO1xuXHQgICAgICAgaWYgbGVuID4gMCB0aGVuIChcblx0XHQgd3JpdGVfdGFnIG9iIG5vZGVfdGFnO1xuXHRcdCBBcnJheS5pdGVyICh3cml0ZV90IG9iIGZhbHNlKSBhXG5cdCAgICAgICApXG5cdClcblxuICAgIHwgYFR1cGxlIGEgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdHVwbGVfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIChBcnJheS5sZW5ndGggYSk7XG5cdEFycmF5Lml0ZXIgKHdyaXRlX3Qgb2IgdHJ1ZSkgYVxuXG4gICAgfCBgUmVjb3JkIGEgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgcmVjb3JkX3RhZztcblx0QmlfdmludC53cml0ZV91dmludCBvYiAoQXJyYXkubGVuZ3RoIGEpO1xuICAgICAgICBBcnJheS5pdGVyICh3cml0ZV9maWVsZCBvYikgYVxuXG4gICAgfCBgTnVtX3ZhcmlhbnQgKGksIHgpIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIG51bV92YXJpYW50X3RhZztcblx0d3JpdGVfbnVtdGFnIG9iIGkgKHggPD4gTm9uZSk7XG5cdChtYXRjaCB4IHdpdGhcblx0ICAgICBOb25lIC0+ICgpXG5cdCAgIHwgU29tZSB2IC0+IHdyaXRlX3Qgb2IgdHJ1ZSB2KVxuXG4gICAgfCBgVmFyaWFudCAobywgaCwgeCkgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdmFyaWFudF90YWc7XG5cdHdyaXRlX2hhc2h0YWcgb2IgaCAoeCA8PiBOb25lKTtcblx0KG1hdGNoIHggd2l0aFxuXHQgICAgIE5vbmUgLT4gKClcblx0ICAgfCBTb21lIHYgLT4gd3JpdGVfdCBvYiB0cnVlIHYpXG5cbiAgICB8IGBUYWJsZSBvIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHRhYmxlX3RhZztcblx0KG1hdGNoIG8gd2l0aFxuXHQgICAgIE5vbmUgLT4gQmlfdmludC53cml0ZV91dmludCBvYiAwXG5cdCAgIHwgU29tZSAoZmllbGRzLCBhKSAtPlxuXHQgICAgICAgbGV0IHJvd19udW0gPSBBcnJheS5sZW5ndGggYSBpblxuXHQgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiByb3dfbnVtO1xuXHQgICAgICAgaWYgcm93X251bSA+IDAgdGhlblxuXHRcdCBsZXQgY29sX251bSA9IEFycmF5Lmxlbmd0aCBmaWVsZHMgaW5cblx0XHQgQmlfdmludC53cml0ZV91dmludCBvYiBjb2xfbnVtO1xuXHRcdCBBcnJheS5pdGVyIChcblx0XHQgICBmdW4gKG5hbWUsIGgsIHRhZykgLT5cblx0XHQgICAgIHdyaXRlX2hhc2h0YWcgb2IgaCB0cnVlO1xuXHRcdCAgICAgd3JpdGVfdGFnIG9iIHRhZ1xuXHRcdCApIGZpZWxkcztcblx0XHQgaWYgcm93X251bSA+IDAgdGhlbiAoXG5cdFx0ICAgZm9yIGkgPSAwIHRvIHJvd19udW0gLSAxIGRvXG5cdFx0ICAgICBsZXQgYWkgPSBhLihpKSBpblxuXHRcdCAgICAgaWYgQXJyYXkubGVuZ3RoIGFpIDw+IGNvbF9udW0gdGhlblxuXHRcdCAgICAgICBpbnZhbGlkX2FyZyBcIkJpX2lvLndyaXRlX3Q6IE1hbGZvcm1lZCBgVGFibGVcIjtcblx0XHQgICAgIGZvciBqID0gMCB0byBjb2xfbnVtIC0gMSBkb1xuXHRcdCAgICAgICB3cml0ZV90IG9iIGZhbHNlIGFpLihqKVxuXHRcdCAgICAgZG9uZVxuXHRcdCAgIGRvbmVcblx0XHQgKVxuXHQpXG5cbiAgICB8IGBTaGFyZWQgeCAtPlxuICAgICAgICBpZiB0YWdnZWQgdGhlblxuICAgICAgICAgIHdyaXRlX3RhZyBvYiBzaGFyZWRfdGFnO1xuICAgICAgICBsZXQgb2Zmc2V0ID1cbiAgICAgICAgICBCaV9zaGFyZS5Xci5wdXQgb2Iub19zaGFyZWRcbiAgICAgICAgICAgICh4LCBCaV9zaGFyZS5kdW1teV90eXBlX2lkKSAob2Iub19vZmZzICsgb2Iub19sZW4pIGluXG4gICAgICAgIEJpX3ZpbnQud3JpdGVfdXZpbnQgb2Igb2Zmc2V0O1xuICAgICAgICBpZiBvZmZzZXQgPSAwIHRoZW5cbiAgICAgICAgICB3cml0ZV90IG9iIHRydWUgeFxuXG5hbmQgd3JpdGVfZmllbGQgb2IgKHMsIGgsIHgpID1cbiAgd3JpdGVfaGFzaHRhZyBvYiBoIHRydWU7XG4gIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmxldCB3cml0ZV90cmVlIG9iIHggPVxuICB3cml0ZV90IG9iIHRydWUgeFxuXG5sZXQgc3RyaW5nX29mX3RyZWUgeCA9XG4gIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGUgMTAwMCBpblxuICB3cml0ZV90cmVlIG9iIHg7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBvYlxuXG5sZXQgdGFnX29mX3RyZWUgKHggOiB0cmVlKSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYFVuaXQgLT4gdW5pdF90YWdcbiAgICB8IGBCb29sIF8gLT4gYm9vbF90YWdcbiAgICB8IGBJbnQ4IF8gLT4gaW50OF90YWdcbiAgICB8IGBJbnQxNiBfIC0+IGludDE2X3RhZ1xuICAgIHwgYEludDMyIF8gLT4gaW50MzJfdGFnXG4gICAgfCBgSW50NjQgXyAtPiBpbnQ2NF90YWdcbiAgICB8IGBGbG9hdDMyIF8gLT4gZmxvYXQzMl90YWdcbiAgICB8IGBGbG9hdDY0IF8gLT4gZmxvYXQ2NF90YWdcbiAgICB8IGBVdmludCBfIC0+IHV2aW50X3RhZ1xuICAgIHwgYFN2aW50IF8gLT4gc3ZpbnRfdGFnXG4gICAgfCBgU3RyaW5nIF8gLT4gc3RyaW5nX3RhZ1xuICAgIHwgYEFycmF5IF8gLT4gYXJyYXlfdGFnXG4gICAgfCBgVHVwbGUgXyAtPiB0dXBsZV90YWdcbiAgICB8IGBSZWNvcmQgXyAtPiByZWNvcmRfdGFnXG4gICAgfCBgTnVtX3ZhcmlhbnQgXyAtPiBudW1fdmFyaWFudF90YWdcbiAgICB8IGBWYXJpYW50IF8gLT4gdmFyaWFudF90YWdcbiAgICB8IGBUYWJsZSBfIC0+IHRhYmxlX3RhZ1xuICAgIHwgYFNoYXJlZCBfIC0+IHNoYXJlZF90YWdcblxuXG5sZXQgcmVhZF90YWcgaWIgPVxuICBDaGFyLmNvZGUgKEJpX2luYnVmLnJlYWRfY2hhciBpYilcblxubGV0IHJlYWRfdW50YWdnZWRfdW5pdCBpYiA9XG4gIG1hdGNoIEJpX2luYnVmLnJlYWRfY2hhciBpYiB3aXRoXG4gICAgICAnXFx4MDAnIC0+ICgpXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAodW5pdCB2YWx1ZSlcIlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9ib29sIGliID1cbiAgbWF0Y2ggQmlfaW5idWYucmVhZF9jaGFyIGliIHdpdGhcbiAgICAgICdcXHgwMCcgLT4gZmFsc2VcbiAgICB8ICdcXHgwMScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGJvb2wgdmFsdWUpXCJcblxubGV0IHJlYWRfdW50YWdnZWRfY2hhciBpYiA9IEJpX2luYnVmLnJlYWRfY2hhciBpYlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ4IGliID1cbiAgQ2hhci5jb2RlIChCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIpXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDE2IGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDIgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgKChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzEpKSlcblxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQzMiBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA0IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCBnZXRfY29kZSBzIGkgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpIGluXG4gIGxldCB4MSA9XG4gICAgSW50MzIub2ZfaW50ICgoKGdldF9jb2RlIHMgKGkgICkpIGxzbCA4KSBsb3IgKGdldF9jb2RlIHMgKGkrMSkpKSBpblxuICBsZXQgeDIgPVxuICAgIEludDMyLm9mX2ludCAoKChnZXRfY29kZSBzIChpKzIpKSBsc2wgOCkgbG9yIChnZXRfY29kZSBzIChpKzMpKSkgaW5cbiAgSW50MzIubG9nb3IgKEludDMyLnNoaWZ0X2xlZnQgeDEgMTYpIHgyXG5cbmxldCByZWFkX3VudGFnZ2VkX2Zsb2F0MzIgaWIgPVxuICBJbnQzMi5mbG9hdF9vZl9iaXRzIChyZWFkX3VudGFnZ2VkX2ludDMyIGliKVxuXG4oKlxubGV0IHJlYWRfdW50YWdnZWRfaW50NjQgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgOCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDEgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSAgXSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krMV0pKSBpblxuICBsZXQgeDIgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSsyXSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krM10pKSBpblxuICBsZXQgeDMgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSs0XSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krNV0pKSBpblxuICBsZXQgeDQgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSs2XSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krN10pKSBpblxuICBJbnQ2NC5sb2dvciAoSW50NjQuc2hpZnRfbGVmdCB4MSA0OClcbiAgICAoSW50NjQubG9nb3IgKEludDY0LnNoaWZ0X2xlZnQgeDIgMzIpXG4gICAgICAgKEludDY0LmxvZ29yIChJbnQ2NC5zaGlmdF9sZWZ0IHgzIDE2KSB4NCkpXG4qKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ2NCBpYiA9XG4gIEludDY0LmJpdHNfb2ZfZmxvYXQgKHJlYWRfdW50YWdnZWRfZmxvYXQ2NCBpYilcblxuXG5cbmxldCByZWFkX3VudGFnZ2VkX3N0cmluZyBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCByZW0gPSByZWYgbGVuIGluXG4gIHdoaWxlICFyZW0gPiAwIGRvXG4gICAgbGV0IGJ5dGVzX3JlYWQgPSBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiAhcmVtIGluXG4gICAgaWYgYnl0ZXNfcmVhZCA9IDAgdGhlblxuICAgICAgQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChzdHJpbmcpXCJcbiAgICBlbHNlIChcbiAgICAgIEJ5dGVzLmJsaXQgaWIuaV9zIGliLmlfcG9zIHN0ciAhcG9zIGJ5dGVzX3JlYWQ7XG4gICAgICBpYi5pX3BvcyA8LSBpYi5pX3BvcyArIGJ5dGVzX3JlYWQ7XG4gICAgICBwb3MgOj0gIXBvcyArIGJ5dGVzX3JlYWQ7XG4gICAgICByZW0gOj0gIXJlbSAtIGJ5dGVzX3JlYWRcbiAgICApXG4gIGRvbmU7XG4gIEJ5dGVzLnRvX3N0cmluZyBzdHJcblxubGV0IHJlYWRfdW50YWdnZWRfdXZpbnQgPSBCaV92aW50LnJlYWRfdXZpbnRcbmxldCByZWFkX3VudGFnZ2VkX3N2aW50ID0gQmlfdmludC5yZWFkX3N2aW50XG5cbmxldCByZWFkX3VuaXQgaWIgPSByZWFkX3VudGFnZ2VkX3VuaXQgaWI7IGBVbml0XG5cbmxldCByZWFkX2Jvb2wgaWIgPSBgQm9vbCAocmVhZF91bnRhZ2dlZF9ib29sIGliKVxuXG5sZXQgcmVhZF9pbnQ4IGliID0gYEludDggKHJlYWRfdW50YWdnZWRfY2hhciBpYilcblxubGV0IHJlYWRfaW50MTYgaWIgPSBgSW50MTYgKHJlYWRfdW50YWdnZWRfaW50MTYgaWIpXG5cbmxldCByZWFkX2ludDMyIGliID0gYEludDMyIChyZWFkX3VudGFnZ2VkX2ludDMyIGliKVxuXG5sZXQgcmVhZF9pbnQ2NCBpYiA9IGBJbnQ2NCAocmVhZF91bnRhZ2dlZF9pbnQ2NCBpYilcblxubGV0IHJlYWRfZmxvYXQzMiBpYiA9XG4gIGBGbG9hdDMyIChyZWFkX3VudGFnZ2VkX2Zsb2F0MzIgaWIpXG5cbmxldCByZWFkX2Zsb2F0NjQgaWIgPVxuICBgRmxvYXQ2NCAocmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliKVxuXG5sZXQgcmVhZF91dmludCBpYiA9IGBVdmludCAocmVhZF91bnRhZ2dlZF91dmludCBpYilcbmxldCByZWFkX3N2aW50IGliID0gYFN2aW50IChyZWFkX3VudGFnZ2VkX3N2aW50IGliKVxuXG5sZXQgcmVhZF9zdHJpbmcgaWIgPSBgU3RyaW5nIChyZWFkX3VudGFnZ2VkX3N0cmluZyBpYilcblxubGV0IHByaW50IHMgPSBwcmludF9zdHJpbmcgczsgcHJpbnRfbmV3bGluZSAoKVxuXG5sZXQgcmVhZF90cmVlID8odW5oYXNoID0gbWFrZV91bmhhc2ggW10pIGliIDogdHJlZSA9XG5cbiAgbGV0IHJlYyByZWFkX2FycmF5IGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgaWYgbGVuID0gMCB0aGVuIGBBcnJheSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG4gICAgICBsZXQgcmVhZCA9IHJlYWRlcl9vZl90YWcgdGFnIGluXG4gICAgICBgQXJyYXkgKFNvbWUgKHRhZywgQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWQgaWIpKSlcblxuICBhbmQgcmVhZF90dXBsZSBpYiA9XG4gICAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGBUdXBsZSAoQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWRfdHJlZSBpYikpXG5cbiAgYW5kIHJlYWRfZmllbGQgaWIgPVxuICAgIGxldCBoID0gcmVhZF9maWVsZF9oYXNodGFnIGliIGluXG4gICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuICAgIGxldCB4ID0gcmVhZF90cmVlIGliIGluXG4gICAgKG5hbWUsIGgsIHgpXG5cbiAgYW5kIHJlYWRfcmVjb3JkIGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgYFJlY29yZCAoQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWRfZmllbGQgaWIpKVxuXG4gIGFuZCByZWFkX251bV92YXJpYW50X2NvbnQgaWIgaSBoYXNfYXJnID1cbiAgICBsZXQgeCA9XG4gICAgICBpZiBoYXNfYXJnIHRoZW5cblx0U29tZSAocmVhZF90cmVlIGliKVxuICAgICAgZWxzZVxuXHROb25lXG4gICAgaW5cbiAgICBgTnVtX3ZhcmlhbnQgKGksIHgpXG5cbiAgYW5kIHJlYWRfbnVtX3ZhcmlhbnQgaWIgPVxuICAgIHJlYWRfbnVtdGFnIGliIHJlYWRfbnVtX3ZhcmlhbnRfY29udFxuXG4gIGFuZCByZWFkX3ZhcmlhbnRfY29udCBpYiBoIGhhc19hcmcgPVxuICAgIGxldCBuYW1lID0gdW5oYXNoIGggaW5cbiAgICBsZXQgeCA9XG4gICAgICBpZiBoYXNfYXJnIHRoZW5cblx0U29tZSAocmVhZF90cmVlIGliKVxuICAgICAgZWxzZVxuXHROb25lXG4gICAgaW5cbiAgICBgVmFyaWFudCAobmFtZSwgaCwgeClcblxuICBhbmQgcmVhZF92YXJpYW50IGliID1cbiAgICByZWFkX2hhc2h0YWcgaWIgcmVhZF92YXJpYW50X2NvbnRcblxuICBhbmQgcmVhZF90YWJsZSBpYiA9XG4gICAgbGV0IHJvd19udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiByb3dfbnVtID0gMCB0aGVuXG4gICAgICBgVGFibGUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBjb2xfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgICBsZXQgZmllbGRzID1cblx0QXJyYXkuaW5pdCBjb2xfbnVtIChcblx0ICBmdW4gXyAtPlxuXHQgICAgbGV0IGggPSByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgaW5cblx0ICAgIGxldCBuYW1lID0gdW5oYXNoIGggaW5cblx0ICAgIGxldCB0YWcgPSByZWFkX3RhZyBpYiBpblxuXHQgICAgKG5hbWUsIGgsIHRhZylcblx0KVxuICAgICAgaW5cbiAgICAgIGxldCByZWFkZXJzID1cblx0QXJyYXkubWFwIChmdW4gKG5hbWUsIGgsIHRhZykgLT4gcmVhZGVyX29mX3RhZyB0YWcpIGZpZWxkcyBpblxuICAgICAgbGV0IGEgPVxuXHRBcnJheS5pbml0IHJvd19udW1cblx0ICAoZnVuIF8gLT5cblx0ICAgICBBcnJheS5pbml0IGNvbF9udW0gKGZ1biBqIC0+IHJlYWRlcnMuKGopIGliKSlcbiAgICAgIGluXG4gICAgICBgVGFibGUgKFNvbWUgKGZpZWxkcywgYSkpXG5cbiAgYW5kIHJlYWRfc2hhcmVkIGliID1cbiAgICBsZXQgcG9zID0gaWIuaV9vZmZzICsgaWIuaV9wb3MgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgaWYgb2Zmc2V0ID0gMCB0aGVuXG4gICAgICBsZXQgcmVjIHIgPSBgU2hhcmVkIHIgaW5cbiAgICAgIEJpX3NoYXJlLlJkLnB1dCBpYi5pX3NoYXJlZFxuICAgICAgICAocG9zLCBCaV9zaGFyZS5kdW1teV90eXBlX2lkKSAoT2JqLnJlcHIgcik7XG4gICAgICBsZXQgeCA9IHJlYWRfdHJlZSBpYiBpblxuICAgICAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgcikgMSAoT2JqLnJlcHIgeCk7XG4gICAgICByXG4gICAgZWxzZVxuICAgICAgT2JqLm9iaiAoQmlfc2hhcmUuUmQuZ2V0IGliLmlfc2hhcmVkXG4gICAgICAgICAgICAgICAgIChwb3MgLSBvZmZzZXQsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpKVxuXG4gIGFuZCByZWFkZXJfb2ZfdGFnID0gZnVuY3Rpb25cbiAgICAgIDAgKCogYm9vbCAqKSAtPiByZWFkX2Jvb2xcbiAgICB8IDEgKCogaW50OCAqKSAtPiByZWFkX2ludDhcbiAgICB8IDIgKCogaW50MTYgKikgLT4gcmVhZF9pbnQxNlxuICAgIHwgMyAoKiBpbnQzMiAqKSAtPiByZWFkX2ludDMyXG4gICAgfCA0ICgqIGludDY0ICopIC0+IHJlYWRfaW50NjRcbiAgICB8IDExICgqIGZsb2F0MzIgKikgLT4gcmVhZF9mbG9hdDMyXG4gICAgfCAxMiAoKiBmbG9hdDY0ICopIC0+IHJlYWRfZmxvYXQ2NFxuICAgIHwgMTYgKCogdXZpbnQgKikgLT4gcmVhZF91dmludFxuICAgIHwgMTcgKCogc3ZpbnQgKikgLT4gcmVhZF9zdmludFxuICAgIHwgMTggKCogc3RyaW5nICopIC0+IHJlYWRfc3RyaW5nXG4gICAgfCAxOSAoKiBhcnJheSAqKSAtPiByZWFkX2FycmF5XG4gICAgfCAyMCAoKiB0dXBsZSAqKSAtPiByZWFkX3R1cGxlXG4gICAgfCAyMSAoKiByZWNvcmQgKikgLT4gcmVhZF9yZWNvcmRcbiAgICB8IDIyICgqIG51bV92YXJpYW50ICopIC0+IHJlYWRfbnVtX3ZhcmlhbnRcbiAgICB8IDIzICgqIHZhcmlhbnQgKikgLT4gcmVhZF92YXJpYW50XG4gICAgfCAyNCAoKiB1bml0ICopIC0+IHJlYWRfdW5pdFxuICAgIHwgMjUgKCogdGFibGUgKikgLT4gcmVhZF90YWJsZVxuICAgIHwgMjYgKCogc2hhcmVkICopIC0+IHJlYWRfc2hhcmVkXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCB0YWcpXCJcblxuICBhbmQgcmVhZF90cmVlIGliIDogdHJlZSA9XG4gICAgcmVhZGVyX29mX3RhZyAocmVhZF90YWcgaWIpIGliXG5cbiAgaW5cbiAgcmVhZF90cmVlIGliXG5cbmxldCB0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMgPSByZWFkX3RyZWUgP3VuaGFzaCAoQmlfaW5idWYuZnJvbV9zdHJpbmcgcylcblxuXG5sZXQgc2tpcF9ieXRlcyBpYiBuID0gaWdub3JlIChCaV9pbmJ1Zi5yZWFkIGliIG4pXG5cbmxldCBza2lwX3VuaXQgaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2Jvb2wgaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2ludDggaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2ludDE2IGliID0gc2tpcF9ieXRlcyBpYiAyXG5sZXQgc2tpcF9pbnQzMiBpYiA9IHNraXBfYnl0ZXMgaWIgNFxubGV0IHNraXBfaW50NjQgaWIgPSBza2lwX2J5dGVzIGliIDhcbmxldCBza2lwX2Zsb2F0MzIgaWIgPSBza2lwX2J5dGVzIGliIDRcbmxldCBza2lwX2Zsb2F0NjQgaWIgPSBza2lwX2J5dGVzIGliIDhcbmxldCBza2lwX3V2aW50IGliID0gaWdub3JlIChyZWFkX3VudGFnZ2VkX3V2aW50IGliKVxubGV0IHNraXBfc3ZpbnQgaWIgPSBpZ25vcmUgKHJlYWRfdW50YWdnZWRfc3ZpbnQgaWIpXG5cbmxldCBza2lwX3N0cmluZyBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgc2tpcF9ieXRlcyBpYiBsZW5cblxubGV0IHJlYyBza2lwX2FycmF5IGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiBsZW4gPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCB0YWcgPSByZWFkX3RhZyBpYiBpblxuICAgIGxldCByZWFkID0gc2tpcHBlcl9vZl90YWcgdGFnIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiBkb1xuICAgICAgcmVhZCBpYlxuICAgIGRvbmVcblxuYW5kIHNraXBfdHVwbGUgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGZvciBpID0gMSB0byBsZW4gZG9cbiAgICBza2lwIGliXG4gIGRvbmVcblxuYW5kIHNraXBfZmllbGQgaWIgPVxuICBpZ25vcmUgKHJlYWRfZmllbGRfaGFzaHRhZyBpYik7XG4gIHNraXAgaWJcblxuYW5kIHNraXBfcmVjb3JkIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBmb3IgaSA9IDEgdG8gbGVuIGRvXG4gICAgc2tpcF9maWVsZCBpYlxuICBkb25lXG5cbmFuZCBza2lwX251bV92YXJpYW50X2NvbnQgaWIgaSBoYXNfYXJnID1cbiAgaWYgaGFzX2FyZyB0aGVuXG4gICAgc2tpcCBpYlxuXG5hbmQgc2tpcF9udW1fdmFyaWFudCBpYiA9XG4gIHJlYWRfbnVtdGFnIGliIHNraXBfbnVtX3ZhcmlhbnRfY29udFxuXG5hbmQgc2tpcF92YXJpYW50X2NvbnQgaWIgaCBoYXNfYXJnID1cbiAgaWYgaGFzX2FyZyB0aGVuXG4gICAgc2tpcCBpYlxuXG5hbmQgc2tpcF92YXJpYW50IGliID1cbiAgcmVhZF9oYXNodGFnIGliIHNraXBfdmFyaWFudF9jb250XG5cbmFuZCBza2lwX3RhYmxlIGliID1cbiAgbGV0IHJvd19udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgaWYgcm93X251bSA9IDAgdGhlblxuICAgICgpXG4gIGVsc2VcbiAgICBsZXQgY29sX251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGxldCByZWFkZXJzID1cbiAgICAgIEFycmF5LmluaXQgY29sX251bSAoXG5cdGZ1biBfIC0+XG5cdCAgaWdub3JlIChyZWFkX2ZpZWxkX2hhc2h0YWcgaWIpO1xuXHQgIHNraXBwZXJfb2ZfdGFnIChyZWFkX3RhZyBpYilcbiAgICAgIClcbiAgICBpblxuICAgIGZvciBpID0gMSB0byByb3dfbnVtIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gY29sX251bSBkb1xuXHRyZWFkZXJzLihqKSBpYlxuICAgICAgZG9uZVxuICAgIGRvbmVcblxuYW5kIHNraXBwZXJfb2ZfdGFnID0gZnVuY3Rpb25cbiAgICAwICgqIGJvb2wgKikgLT4gc2tpcF9ib29sXG4gIHwgMSAoKiBpbnQ4ICopIC0+IHNraXBfaW50OFxuICB8IDIgKCogaW50MTYgKikgLT4gc2tpcF9pbnQxNlxuICB8IDMgKCogaW50MzIgKikgLT4gc2tpcF9pbnQzMlxuICB8IDQgKCogaW50NjQgKikgLT4gc2tpcF9pbnQ2NFxuICB8IDExICgqIGZsb2F0MzIgKikgLT4gc2tpcF9mbG9hdDMyXG4gIHwgMTIgKCogZmxvYXQ2NCAqKSAtPiBza2lwX2Zsb2F0NjRcbiAgfCAxNiAoKiB1dmludCAqKSAtPiBza2lwX3V2aW50XG4gIHwgMTcgKCogc3ZpbnQgKikgLT4gc2tpcF9zdmludFxuICB8IDE4ICgqIHN0cmluZyAqKSAtPiBza2lwX3N0cmluZ1xuICB8IDE5ICgqIGFycmF5ICopIC0+IHNraXBfYXJyYXlcbiAgfCAyMCAoKiB0dXBsZSAqKSAtPiBza2lwX3R1cGxlXG4gIHwgMjEgKCogcmVjb3JkICopIC0+IHNraXBfcmVjb3JkXG4gIHwgMjIgKCogbnVtX3ZhcmlhbnQgKikgLT4gc2tpcF9udW1fdmFyaWFudFxuICB8IDIzICgqIHZhcmlhbnQgKikgLT4gc2tpcF92YXJpYW50XG4gIHwgMjQgKCogdW5pdCAqKSAtPiBza2lwX3VuaXRcbiAgfCAyNSAoKiB0YWJsZSAqKSAtPiBza2lwX3RhYmxlXG4gIHwgXyAtPiBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgdGFnKVwiXG5cbmFuZCBza2lwIGliIDogdW5pdCA9XG4gIHNraXBwZXJfb2ZfdGFnIChyZWFkX3RhZyBpYikgaWJcblxuXG4oKiBFcXVpdmFsZW50IG9mIEFycmF5Lm1hcCB0aGF0IGd1YXJhbnRlZXMgYSBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG5sZXQgYXJyYXlfbWFwIGYgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBpZiBsZW4gPSAwIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgciA9IEFycmF5Lm1ha2UgbGVuIChmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIClcblxuXG5tb2R1bGUgUHAgPVxuc3RydWN0XG4gIG9wZW4gRWFzeV9mb3JtYXRcblxuICBsZXQgYXJyYXkgPSBsaXN0XG4gIGxldCByZWNvcmQgPSBsaXN0XG4gIGxldCB0dXBsZSA9IHsgbGlzdCB3aXRoXG5cdFx0ICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gZmFsc2U7XG5cdFx0ICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IGZhbHNlO1xuXHRcdCAgYWxpZ25fY2xvc2luZyA9IGZhbHNlIH1cbiAgbGV0IHZhcmlhbnQgPSB7IGxpc3Qgd2l0aFxuXHRcdCAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlIH1cblxuICBsZXQgbWFwIGYgYSA9IEFycmF5LnRvX2xpc3QgKGFycmF5X21hcCBmIGEpXG5cbiAgbGV0IHJlYyBmb3JtYXQgc2hhcmVkICh4IDogdHJlZSkgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgICBgVW5pdCAtPiBBdG9tIChcInVuaXRcIiwgYXRvbSlcbiAgICAgIHwgYEJvb2wgeCAtPiBBdG9tICgoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKSwgYXRvbSlcbiAgICAgIHwgYEludDggeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDJ4XCIgKENoYXIuY29kZSB4KSwgYXRvbSlcbiAgICAgIHwgYEludDE2IHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTA0eFwiIHgsIGF0b20pXG4gICAgICB8IGBJbnQzMiB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwOGx4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEludDY0IHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTAxNkx4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEZsb2F0MzIgeCAtPiBBdG9tIChzdHJpbmdfb2ZfZmxvYXQgeCwgYXRvbSlcbiAgICAgIHwgYEZsb2F0NjQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfZmxvYXQgeCwgYXRvbSlcbiAgICAgIHwgYFV2aW50IHggLT4gQXRvbSAoc3RyaW5nX29mX2ludCB4LCBhdG9tKVxuICAgICAgfCBgU3ZpbnQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfaW50IHgsIGF0b20pXG4gICAgICB8IGBTdHJpbmcgcyAtPiBBdG9tIChzcHJpbnRmIFwiJVNcIiBzLCBhdG9tKVxuICAgICAgfCBgQXJyYXkgTm9uZSAtPiBBdG9tIChcIltdXCIsIGF0b20pXG4gICAgICB8IGBBcnJheSAoU29tZSAoXywgYSkpIC0+XG4gICAgICAgICAgTGlzdCAoKFwiW1wiLCBcIixcIiwgXCJdXCIsIGFycmF5KSwgbWFwIChmb3JtYXQgc2hhcmVkKSBhKVxuICAgICAgfCBgVHVwbGUgYSAtPiBMaXN0ICgoXCIoXCIsIFwiLFwiLCBcIilcIiwgdHVwbGUpLCBtYXAgKGZvcm1hdCBzaGFyZWQpIGEpXG4gICAgICB8IGBSZWNvcmQgYSAtPiBMaXN0ICgoXCJ7XCIsIFwiLFwiLCBcIn1cIiwgcmVjb3JkKSwgbWFwIChmb3JtYXRfZmllbGQgc2hhcmVkKSBhKVxuICAgICAgfCBgTnVtX3ZhcmlhbnQgKGksIG8pIC0+XG5cdCAgbGV0IHN1ZmZpeCA9XG5cdCAgICBpZiBpID0gMCB0aGVuIFwiXCJcblx0ICAgIGVsc2Ugc3RyaW5nX29mX2ludCBpXG5cdCAgaW5cblx0ICAobWF0Y2ggbyB3aXRoXG5cdCAgICAgICBOb25lIC0+IEF0b20gKFwiTm9uZVwiIF4gc3VmZml4LCBhdG9tKVxuXHQgICAgIHwgU29tZSB4IC0+XG5cdFx0IGxldCBjb25zID0gQXRvbSAoXCJTb21lXCIgXiBzdWZmaXgsIGF0b20pIGluXG5cdFx0IExhYmVsICgoY29ucywgbGFiZWwpLCBmb3JtYXQgc2hhcmVkIHgpKVxuICAgICAgfCBgVmFyaWFudCAob3B0X25hbWUsIGgsIG8pIC0+XG5cdCAgbGV0IG5hbWUgPVxuXHQgICAgbWF0Y2ggb3B0X25hbWUgd2l0aFxuXHRcdE5vbmUgLT4gc3ByaW50ZiBcIiMlMDhseFwiIChJbnQzMi5vZl9pbnQgaClcblx0ICAgICAgfCBTb21lIHMgLT4gc3ByaW50ZiBcIiVTXCIgc1xuXHQgIGluXG5cdCAgKG1hdGNoIG8gd2l0aFxuXHQgICAgICAgTm9uZSAtPiBBdG9tIChcIjxcIiBeIG5hbWUgXiBcIj5cIiwgYXRvbSlcblx0ICAgICB8IFNvbWUgeCAtPlxuXHRcdCBMaXN0ICgoXCI8XCIsIFwiXCIsIFwiPlwiLCB0dXBsZSksXG4gICAgICAgICAgICAgICAgICAgICAgIFsgTGFiZWwgKChBdG9tIChuYW1lIF4gXCI6XCIsIGF0b20pLCBsYWJlbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCBzaGFyZWQgeCkgXSlcblx0ICApXG4gICAgICB8IGBUYWJsZSBOb25lIC0+IEF0b20gKFwiW11cIiwgYXRvbSlcbiAgICAgIHwgYFRhYmxlIChTb21lIChoZWFkZXIsIGFhKSkgLT5cblx0ICBsZXQgcmVjb3JkX2FycmF5ID1cblx0ICAgIGBBcnJheSAoXG5cdCAgICAgIFNvbWUgKFxuXHRcdHJlY29yZF90YWcsXG5cdFx0QXJyYXkubWFwIChcblx0XHQgIGZ1biBhIC0+XG5cdFx0ICAgIGBSZWNvcmQgKFxuXHRcdCAgICAgIEFycmF5Lm1hcGkgKFxuXHRcdFx0ZnVuIGkgeCAtPlxuXHRcdFx0ICBsZXQgcywgaCwgXyA9IGhlYWRlci4oaSkgaW5cblx0XHRcdCAgKHMsIGgsIHgpXG5cdFx0ICAgICAgKSBhXG5cdFx0ICAgIClcblx0XHQpIGFhXG5cdCAgICAgIClcblx0ICAgICkgaW5cblx0ICBmb3JtYXQgc2hhcmVkIHJlY29yZF9hcnJheVxuXG4gICAgICB8IGBTaGFyZWQgeCAtPlxuICAgICAgICAgIGxldCB0YmwsIHAgPSBzaGFyZWQgaW5cbiAgICAgICAgICBpbmNyIHA7XG4gICAgICAgICAgbGV0IHBvcyA9ICFwIGluXG4gICAgICAgICAgbGV0IG9mZnNldCA9IEJpX3NoYXJlLldyLnB1dCB0YmwgKHgsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIHBvcyBpblxuICAgICAgICAgIGlmIG9mZnNldCA9IDAgdGhlblxuICAgICAgICAgICAgTGFiZWwgKChBdG9tIChzcHJpbnRmIFwic2hhcmVkJWkgLT5cIiBwb3MsIGF0b20pLCBsYWJlbCksXG4gICAgICAgICAgICAgICAgICAgZm9ybWF0IHNoYXJlZCB4KVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEF0b20gKHNwcmludGYgXCJzaGFyZWQlaVwiIChwb3MgLSBvZmZzZXQpLCBhdG9tKVxuXG4gIGFuZCBmb3JtYXRfZmllbGQgc2hhcmVkIChvLCBoLCB4KSA9XG4gICAgbGV0IHMgPVxuICAgICAgbWF0Y2ggbyB3aXRoXG5cdCAgTm9uZSAtPiBzcHJpbnRmIFwiIyUwOGx4XCIgKEludDMyLm9mX2ludCBoKVxuXHR8IFNvbWUgcyAtPiBzcHJpbnRmIFwiJVNcIiBzXG4gICAgaW5cbiAgICBMYWJlbCAoKEF0b20gKHNwcmludGYgXCIlczpcIiBzLCBhdG9tKSwgbGFiZWwpLCBmb3JtYXQgc2hhcmVkIHgpXG5lbmRcblxubGV0IGluaXQgKCkgPSAoQmlfc2hhcmUuV3IuY3JlYXRlIDUxMiwgcmVmIDApXG5cbmxldCB2aWV3X29mX3RyZWUgdCA9XG4gIEVhc3lfZm9ybWF0LlByZXR0eS50b19zdHJpbmcgKFBwLmZvcm1hdCAoaW5pdCAoKSkgdClcblxubGV0IHByaW50X3ZpZXdfb2ZfdHJlZSB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX3N0ZG91dCAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgb3V0cHV0X3ZpZXdfb2ZfdHJlZSBvYyB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX2NoYW5uZWwgb2MgKFBwLmZvcm1hdCAoaW5pdCAoKSkgdClcblxubGV0IHZpZXcgP3VuaGFzaCBzID1cbiAgdmlld19vZl90cmVlICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG5cbmxldCBwcmludF92aWV3ID91bmhhc2ggcyA9XG4gIHByaW50X3ZpZXdfb2ZfdHJlZSAodHJlZV9vZl9zdHJpbmcgP3VuaGFzaCBzKVxuXG5sZXQgb3V0cHV0X3ZpZXcgP3VuaGFzaCBvYyBzID1cbiAgb3V0cHV0X3ZpZXdfb2ZfdHJlZSBvYyAodHJlZV9vZl9zdHJpbmcgP3VuaGFzaCBzKVxuIiwib3BlbiBQcmludGZcblxuKCpcbmxldCBzcGxpdCBzID0gU3RyLnNwbGl0IChTdHIucmVnZXhwIFwiLFwiKSBzXG4qKVxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgbGV0IHN0b3AgPSByZWYgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgZm9yIGkgPSAhc3RvcCAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiBzLltpXSA9ICcsJyB0aGVuIChcbiAgICAgIGxldCBzdGFydCA9IGkgKyAxIGluXG4gICAgICBhY2MgOj0gU3RyaW5nLnN1YiBzIHN0YXJ0ICghc3RvcCAtIHN0YXJ0KSA6OiAhYWNjO1xuICAgICAgc3RvcCA6PSBpXG4gICAgKVxuICBkb25lO1xuICBTdHJpbmcuc3ViIHMgMCAhc3RvcCA6OiAhYWNjXG5cblxubGV0IGxvYWRfbGluZXMgYWNjdSBzID1cbiAgbGV0IGljID0gb3Blbl9pbiBzIGluXG4gIGxldCBsID0gcmVmIGFjY3UgaW5cbiAgKHRyeVxuICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgbCA6PSBpbnB1dF9saW5lIGljIDo6IExpc3QucmV2ICFsXG4gICAgIGRvbmVcbiAgIHdpdGggRW5kX29mX2ZpbGUgLT5cbiAgICAgY2xvc2VfaW4gaWNcbiAgKTtcbiAgIWxcblxubGV0IGxvYWQgaWMgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMDAwIGluXG4gIHRyeVxuICAgIHdoaWxlIHRydWUgZG9cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKGlucHV0X2NoYXIgaWMpO1xuICAgIGRvbmU7XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHdpdGggRW5kX29mX2ZpbGUgLT5cbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCAoIC8vICkgPSBGaWxlbmFtZS5jb25jYXRcblxubGV0IGRlZmF1bHRfZGljdF9wYXRoICgpID1cbiAgdHJ5XG4gICAgbWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgICBcIlVuaXhcIiAtPiBTb21lIChTeXMuZ2V0ZW52IFwiSE9NRVwiIC8vIFwiLmJkdW1wLWRpY3RcIilcbiAgICAgIHwgXCJXaW4zMlwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FUEFUSFwiIC8vIFwiX2JkdW1wLWRpY3RcIilcbiAgICAgIHwgXCJDeWd3aW5cIiAtPiBTb21lIChTeXMuZ2V0ZW52IFwiSE9NRVwiIC8vIFwiLmJkdW1wLWRpY3RcIilcbiAgICAgIHwgXyAtPiBOb25lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgTm9uZVxuXG5sZXQgbG9hZF9kaWN0aW9uYXJ5IGRpY19maWxlIGFjY3UgPVxuICBtYXRjaCBkaWNfZmlsZSB3aXRoXG4gICAgICBOb25lIC0+IGFjY3VcbiAgICB8IFNvbWUgZm4gLT5cbiAgICAgICAgaWYgU3lzLmZpbGVfZXhpc3RzIGZuIHRoZW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxvYWRfbGluZXMgYWNjdSBmblxuICAgICAgICAgIHdpdGggZSAtPlxuICAgICAgICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJDYW5ub3QgbG9hZCBkaWN0aW9uYXJ5IGZyb20gJVM6ICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm4gKFByaW50ZXhjLnRvX3N0cmluZyBlKSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjY3VcblxubGV0IHdyaXRlX3VuaXEgb2MgYSA9XG4gIGlmIEFycmF5Lmxlbmd0aCBhID4gMCB0aGVuIChcbiAgICBmcHJpbnRmIG9jIFwiJXNcXG5cIiBhLigwKTtcbiAgICBpZ25vcmUgKFxuICAgICAgQXJyYXkuZm9sZF9sZWZ0IChcbiAgICAgICAgZnVuIGxhc3QgeCAtPlxuICAgICAgICAgIGlmIGxhc3QgPD4geCB0aGVuXG4gICAgICAgICAgICBmcHJpbnRmIG9jIFwiJXNcXG5cIiB4O1xuICAgICAgICAgIHhcbiAgICAgICkgYS4oMCkgYVxuICAgIClcbiAgKVxuXG5sZXQgc2F2ZV9kaWN0aW9uYXJ5IGRpY19maWxlIGwgPVxuICBtYXRjaCBkaWNfZmlsZSB3aXRoXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIGZuIC0+XG4gICAgICAgIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gICAgICAgIEFycmF5LnNvcnQgU3RyaW5nLmNvbXBhcmUgYTtcbiAgICAgICAgbGV0IG9jID0gb3Blbl9vdXQgZm4gaW5cbiAgICAgICAgbGV0IGZpbmFsbHkgKCkgPSBjbG9zZV9vdXRfbm9lcnIgb2MgaW5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgd3JpdGVfdW5pcSBvYyBhO1xuICAgICAgICAgIGZpbmFsbHkgKClcbiAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgZmluYWxseSAoKTtcbiAgICAgICAgICByYWlzZSBlXG4iLCJcbnR5cGUgJ2Egb2NhbWxfYXJyYXkgPSAnYSBhcnJheVxuXG5sZXQgaW5wdXRfZmlsZSBmbmFtZSByZWFkID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgdHJ5XG4gICAgbGV0IHggPSByZWFkIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgeFxuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBlXG5cbmxldCBvdXRwdXRfZmlsZSBmbmFtZSB3cml0ZSA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmbmFtZSBpblxuICB0cnlcbiAgICB3cml0ZSBvYztcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubW9kdWxlIEJpbmlvdSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSByZWFkZXIgPSBCaV9pbmJ1Zi50IC0+ICdhXG4gIHR5cGUgJ2Egd3JpdGVyID0gQmlfb3V0YnVmLnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2xlbiA/KHNocmxlbiA9IDApIHJlYWQgaWMgPVxuICAgIGxldCBpYiA9IEJpX2luYnVmLmZyb21fY2hhbm5lbCA/bGVuIH5zaHJsZW4gaWMgaW5cbiAgICByZWFkIGliXG5cbiAgbGV0IGZyb21fZmlsZSA/bGVuID8oc2hybGVuID0gMCkgcmVhZCBmbmFtZSA9XG4gICAgaW5wdXRfZmlsZSBmbmFtZSAoZnVuIGljIC0+IGZyb21fY2hhbm5lbCA/bGVuIH5zaHJsZW4gcmVhZCBpYylcblxuICBsZXQgdG9fY2hhbm5lbCA/bGVuID8oc2hybGVuID0gMCkgd3JpdGUgb2MgeCA9XG4gICAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZV9jaGFubmVsX3dyaXRlciA/bGVuIH5zaHJsZW4gb2MgaW5cbiAgICB3cml0ZSBvYiB4O1xuICAgIEJpX291dGJ1Zi5mbHVzaF9jaGFubmVsX3dyaXRlciBvYlxuXG4gIGxldCB0b19maWxlID9sZW4gPyhzaHJsZW4gPSAwKSB3cml0ZSBmbmFtZSB4ID1cbiAgICBvdXRwdXRfZmlsZSBmbmFtZSAoZnVuIG9jIC0+IHRvX2NoYW5uZWwgP2xlbiB+c2hybGVuIHdyaXRlIG9jIHgpXG5lbmRcblxubW9kdWxlIEpzb24gPVxuc3RydWN0XG4gIHR5cGUgJ2EgcmVhZGVyID0gWW9qc29uLlNhZmUubGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiAnYVxuICB0eXBlICdhIHdyaXRlciA9IEJ1ZmZlci50IC0+ICdhIC0+IHVuaXRcblxuICBsZXQgZmluaXNoIGxzIGxleGJ1ZiA9XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBscyBsZXhidWY7XG4gICAgaWYgbm90IChZb2pzb24uU2FmZS5yZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIFlvanNvbi5qc29uX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZVwiXG5cbiAgbGV0IGZyb21fbGV4YnVmID8oc3RyZWFtID0gZmFsc2UpIHJlYWQgbHMgbGV4YnVmID1cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIGxzIGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIFlvanNvbi5TYWZlLnJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIFlvanNvbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCBscyBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggbHMgbGV4YnVmO1xuXG4gICAgeFxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSByZWFkIHMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBmcm9tX2xleGJ1ZiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgZnJvbV9sZXhidWYgcmVhZCBscyBsZXhidWZcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBpbnB1dF9maWxlIGZuYW1lIChmdW4gaWMgLT4gZnJvbV9jaGFubmVsID9idWYgfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljKVxuXG4gICgqIHNlcV91bmZvbGQgaXMgU2VxLnVuZm9sZCwgbmVlZGVkIGZvciBvY2FtbCA8IDQuMTEgKilcbiAgbGV0IHJlYyBzZXFfdW5mb2xkIGYgdSAoKSA9XG4gICAgbWF0Y2ggZiB1IHdpdGhcbiAgICB8IE5vbmUgLT4gU2VxLk5pbFxuICAgIHwgU29tZSAoeCwgdScpIC0+IFNlcS5Db25zICh4LCBzZXFfdW5mb2xkIGYgdScpXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgcmVhZCBscyBsZXhidWYgPVxuICAgIGxldCBmICgpID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdiA9IGZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSByZWFkIGxzIGxleGJ1ZiBpblxuICAgICAgICBTb21lICh2LCAoKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBZb2pzb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBOb25lXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICgqIFNlcS51bmZvbGQgaXMgb25seSBhdmFpbGFibGUgZnJvbSBvY2FtbCA0LjExICopXG4gICAgc2VxX3VuZm9sZCBmICgpXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmID9maW4gcmVhZCBscyBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiA/ZmluIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbl9ub2VyciBpYzsgZmluICgpIGluXG4gICAgc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljXG5cbiAgbGV0IGxpc3RfZnJvbV9zdHJpbmcgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgc2VxID0gc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyBpblxuICAgIExpc3Qub2Zfc2VxIHNlcVxuXG4gIGxldCBsaXN0X2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBzZXEgPSBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyBpblxuICAgIExpc3Qub2Zfc2VxIHNlcVxuXG4gIGxldCBsaXN0X2Zyb21fZmlsZSA/YnVmID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW5fbm9lcnIgaWMgaW5cbiAgICBsaXN0X2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljXG5cbiAgbGV0IHRvX3N0cmluZyA/KGxlbiA9IDEwMjQpIHdyaXRlIHggPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgdG9fY2hhbm5lbCA/KGxlbiA9IDEwMjQpIHdyaXRlIG9jIHggPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYlxuXG4gIGxldCB0b19maWxlID9sZW4gd3JpdGUgZm5hbWUgeCA9XG4gICAgb3V0cHV0X2ZpbGUgZm5hbWUgKGZ1biBvYyAtPiB0b19jaGFubmVsID9sZW4gd3JpdGUgb2MgeClcblxuICBsZXQgc2VxX3RvX3N0cmluZyA/KGxlbiA9IDEwMjQpID8obGYgPSBcIlxcblwiKSB3cml0ZSBzZXEgPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgU2VxLml0ZXIgKGZ1biB4IC0+IHdyaXRlIG9iIHg7IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIGxmKSBzZXE7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHNlcV90b19jaGFubmVsID8obGVuID0gMTAyNCkgPyhsZiA9IFwiXFxuXCIpIHdyaXRlIG9jIHNlcSA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBTZXEuaXRlciAoZnVuIHggLT4gd3JpdGUgb2IgeDsgQnVmZmVyLmFkZF9zdHJpbmcgb2IgbGYpIHNlcTtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYlxuXG4gIGxldCBzZXFfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSBzZXEgPVxuICAgIG91dHB1dF9maWxlIGZuYW1lIChmdW4gb2MgLT4gc2VxX3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2Mgc2VxKVxuXG4gIGxldCBsaXN0X3RvX3N0cmluZyA/bGVuID9sZiB3cml0ZSBsID1cbiAgICBzZXFfdG9fc3RyaW5nID9sZW4gP2xmIHdyaXRlIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBsaXN0X3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2MgbCA9XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2MgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IGxpc3RfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSAgbCA9XG4gICAgc2VxX3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IHByZXNldF91bmtub3duX2ZpZWxkX2hhbmRsZXIgbG9jIG5hbWUgPVxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJGb3VuZCB1bmtub3duIEpTT04gZmllbGQgJXMgd2hpbGUgZXhwZWN0aW5nIHR5cGUgZGVmaW5lZCBhdDogJXNcIlxuICAgICAgICBuYW1lIGxvY1xuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbGV0IHVua25vd25fZmllbGRfaGFuZGxlciA9IHJlZiBwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyXG5lbmRcblxubW9kdWxlIFZhbGlkYXRpb24gPVxuc3RydWN0XG4gIHR5cGUgcGF0aF9lbGVtID0gWyBgRmllbGQgb2Ygc3RyaW5nIHwgYEluZGV4IG9mIGludCBdXG4gIHR5cGUgcGF0aCA9IHBhdGhfZWxlbSBsaXN0XG5cbiAgbGV0IHN0cmluZ19vZl9wYXRoIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoXG4gICAgICBMaXN0LnJldl9tYXAgKFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgYEZpZWxkIHMgLT4gXCIuXCIgXiBzXG4gICAgICAgICAgfCBgSW5kZXggbiAtPiBcIltcIiBeIHN0cmluZ19vZl9pbnQgbiBeIFwiXVwiXG4gICAgICApIGxcbiAgICApXG5cbiAgdHlwZSBlcnJvciA9IHtcbiAgICBlcnJvcl9wYXRoIDogcGF0aDtcbiAgICBlcnJvcl9tc2cgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGVycm9yID9tc2cgcGF0aCA9IHtcbiAgICBlcnJvcl9wYXRoID0gcGF0aDtcbiAgICBlcnJvcl9tc2cgPSBtc2c7XG4gIH1cblxuICBsZXQgc3RyaW5nX29mX2Vycm9yIHggPVxuICAgIGxldCBwYXRoID0gc3RyaW5nX29mX3BhdGggeC5lcnJvcl9wYXRoIGluXG4gICAgbWF0Y2ggeC5lcnJvcl9tc2cgd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgICAgXCJWYWxpZGF0aW9uIGVycm9yOyBwYXRoID0gPHJvb3Q+XCIgXiBwYXRoXG4gICAgICB8IFNvbWUgbXNnIC0+XG4gICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJWYWxpZGF0aW9uIGVycm9yOiAlczsgcGF0aCA9IDxyb290PiVzXCIgbXNnIHBhdGhcbmVuZFxuIiwibGV0IHZhbGlkYXRlX2xpc3QgZiBwYXRoIGwgPVxuICBsZXQgcmVjIGxvb3AgZiBwYXRoIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBzdWJwYXRoID0gYEluZGV4IGkgOjogcGF0aCBpblxuICAgICAgICBtYXRjaCBmIHN1YnBhdGggeCB3aXRoXG4gICAgICAgICAgICBOb25lIC0+IGxvb3AgZiBwYXRoIChpKzEpIGxcbiAgICAgICAgICB8IGVyciAtPiBlcnJcbiAgaW5cbiAgbG9vcCBmIHBhdGggMCBsXG5cbmxldCB2YWxpZGF0ZV9hcnJheSBmIHBhdGggYSA9XG4gIGxldCByZWMgbG9vcCBmIHBhdGggYSBsZW4gaSA9XG4gICAgaWYgaSA+PSBsZW4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAoYEluZGV4IGkgOjogcGF0aCkgYS4oaSkgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gbG9vcCBmIHBhdGggYSBsZW4gKGkrMSlcbiAgICAgICAgfCBlcnIgLT4gZXJyXG4gIGluXG4gIGxvb3AgZiBwYXRoIGEgKEFycmF5Lmxlbmd0aCBhKSAwXG5cbmxldCB2YWxpZGF0ZV9vcHRpb24gZiBwYXRoID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gZiBwYXRoIHhcbiIsIigqXG4gIFJ1bnRpbWUgbGlicmFyeSBmb3IgSlNPTlxuKilcblxub3BlbiBQcmludGZcblxudHlwZSAnYSB3cml0ZSA9IEJ1ZmZlci50IC0+ICdhIC0+IHVuaXRcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG4oKlxuICBFcnJvciBtZXNzYWdlc1xuKilcbmxldCBlcnJvciBzID0gcmFpc2UgKEVycm9yIHMpXG5cbmxldCBlcnJvcl93aXRoX2xpbmUgcCBzID1cbiAgbGV0IHMyID1cbiAgICBtYXRjaCBwLllvanNvbi5MZXhlcl9zdGF0ZS5mbmFtZSB3aXRoXG4gICAgICBTb21lIGYgLT4gc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmUgJWk6XFxuJXNcIiBmIHAuWW9qc29uLkxleGVyX3N0YXRlLmxudW0gc1xuICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiTGluZSAlaTpcXG4lc1wiIHAuWW9qc29uLkxleGVyX3N0YXRlLmxudW0gc1xuICBpblxuICByYWlzZSAoRXJyb3IgczIpXG5cblxubGV0IGxpc3RfaXRlciBmIHNlcCB4IGwgPVxuICBsZXQgcmVjIGF1eCBmIHNlcCB4ID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCB5IDo6IGwgLT5cbiAgICAgICAgc2VwIHg7XG4gICAgICAgIGYgeCB5O1xuICAgICAgICBhdXggZiBzZXAgeCBsXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgICBmIHggeTtcbiAgICAgICAgYXV4IGYgc2VwIHggbFxuXG5sZXQgYXJyYXlfaXRlciBmIHNlcCB4IGEgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGlmIG4gPiAwIHRoZW4gKFxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIDApO1xuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgc2VwIHg7XG4gICAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmVcbiAgKVxuXG5sZXQgd3JpdGVfY29tbWEgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCB3cml0ZV9saXN0IHdyaXRlX2l0ZW0gb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGxpc3RfaXRlciB3cml0ZV9pdGVtIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHdyaXRlX2FycmF5IHdyaXRlX2l0ZW0gb2IgYSA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGFycmF5X2l0ZXIgd3JpdGVfaXRlbSB3cml0ZV9jb21tYSBvYiBhO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCB3cml0ZV9hc3NvY19saXN0IHdyaXRlX2tleSB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBsaXN0X2l0ZXIgKFxuICAgIGZ1biBvYiAoaywgdikgLT5cbiAgICAgIHdyaXRlX2tleSBvYiBrO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgIHdyaXRlX2l0ZW0gb2IgdlxuICApIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHdyaXRlX2Fzc29jX2FycmF5IHdyaXRlX2tleSB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBhcnJheV9pdGVyIChcbiAgICBmdW4gb2IgKGssIHYpIC0+XG4gICAgICB3cml0ZV9rZXkgb2IgaztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICB3cml0ZV9pdGVtIG9iIHZcbiAgKSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cblxubGV0IHdyaXRlX29wdGlvbiB3cml0ZV9pdGVtIG9iID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPFxcXCJOb25lXFxcIj5cIlxuICB8IFNvbWUgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI8XFxcIlNvbWVcXFwiOlwiO1xuICAgICAgd3JpdGVfaXRlbSBvYiB4O1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI+XCJcblxubGV0IHdyaXRlX3N0ZF9vcHRpb24gd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJOb25lXFxcIlwiXG4gIHwgU29tZSB4IC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU29tZVxcXCIsXCI7XG4gICAgICB3cml0ZV9pdGVtIG9iIHg7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIl1cIlxuXG5sZXQgd3JpdGVfbnVsbGFibGUgd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuICB8IFNvbWUgeCAtPiB3cml0ZV9pdGVtIG9iIHhcblxubGV0IHdyaXRlX2ludF9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHdyaXRlX2ludDggb2IgeCA9XG4gIFlvanNvbi5TYWZlLndyaXRlX2ludCBvYiAoaW50X29mX2NoYXIgeClcblxubGV0IHdyaXRlX2ludDhfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50OCBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgd3JpdGVfaW50MzIgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChJbnQzMi50b19zdHJpbmcgeClcblxubGV0IHdyaXRlX2ludDMyX2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDMyIG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCB3cml0ZV9pbnQ2NCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKEludDY0LnRvX3N0cmluZyB4KVxuXG5sZXQgd3JpdGVfaW50NjRfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50NjQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IG1pbl9mbG9hdCA9IGZsb2F0IG1pbl9pbnRcbmxldCBtYXhfZmxvYXQgPSBmbG9hdCBtYXhfaW50XG5cbmxldCB3cml0ZV9mbG9hdF9hc19pbnQgb2IgeCA9XG4gIGlmIHggPj0gbWluX2Zsb2F0ICYmIHggPD0gbWF4X2Zsb2F0IHRoZW5cbiAgICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2JcbiAgICAgIChpbnRfb2ZfZmxvYXQgKGlmIHggPCAwLiB0aGVuIHggLS4gMC41IGVsc2UgeCArLiAwLjUpKVxuICBlbHNlXG4gICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgICAgIEZQX25vcm1hbFxuICAgICAgfCBGUF9zdWJub3JtYWxcbiAgICAgIHwgRlBfemVybyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiAoUHJpbnRmLnNwcmludGYgXCIlLjBmXCIgeClcbiAgICAgIHwgRlBfaW5maW5pdGUgLT4gZXJyb3IgXCJDYW5ub3QgY29udmVydCBpbmYgb3IgLWluZiBpbnRvIGEgSlNPTiBpbnRcIlxuICAgICAgfCBGUF9uYW4gLT4gZXJyb3IgXCJDYW5ub3QgY29udmVydCBOYU4gaW50byBhIEpTT04gaW50XCJcblxubGV0IHdyaXRlX2Zsb2F0X2FzX2ludF9zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9mbG9hdF9hc19pbnQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxudHlwZSAnYSByZWFkID0gWW9qc29uLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gJ2FcblxubGV0IHJlYWRfbnVsbCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX251bGwgcCBsYlxuXG5sZXQgcmVhZF9ib29sIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfYm9vbCBwIGxiXG5cbmxldCByZWFkX2ludCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludCBwIGxiXG5cbmxldCByZWFkX2ludDggcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQ4IHAgbGJcblxubGV0IHJlYWRfaW50MzIgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQzMiBwIGxiXG5cbmxldCByZWFkX2ludDY0IHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50NjQgcCBsYlxuXG5sZXQgcmVhZF9udW1iZXIgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9udW1iZXIgcCBsYlxuXG5sZXQgcmVhZF9zdHJpbmcgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9zdHJpbmcgcCBsYlxuXG5sZXQgcmVhZF9qc29uIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfanNvbiBwIGxiXG5cbmxldCByZWFkX2xpc3QgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfbGlzdCByZWFkX2l0ZW0gcCBsYlxuXG5sZXQgcmVhZF9hcnJheSByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9hcnJheSByZWFkX2l0ZW0gcCBsYlxuXG5sZXQgcmVhZF9hc3NvY19saXN0X3JldiByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgbGV0IHJlYWQgYWNjIGsgcCBsYiA9IChrLCByZWFkX2l0ZW0gcCBsYikgOjogYWNjIGluXG4gIFlvanNvbi5TYWZlLnJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWQgW10gcCBsYlxuXG5sZXQgcmVhZF9hc3NvY19saXN0IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiID1cbiAgTGlzdC5yZXYgKHJlYWRfYXNzb2NfbGlzdF9yZXYgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIpXG5cbmxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPiBbfCB8XVxuICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYVxuXG5sZXQgcmVhZF9hc3NvY19hcnJheSByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIGFycmF5X29mX3Jldl9saXN0IChyZWFkX2Fzc29jX2xpc3RfcmV2IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiKVxuXG5sZXQgcmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2NvbG9uIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYlxuXG5sZXQgbWlzc2luZ190dXBsZV9maWVsZHMgcCBsZW4gcmVxX2ZpZWxkcyA9XG4gIGxldCBtaXNzaW5nID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgKFxuICAgICAgZnVuIGkgYWNjIC0+IGlmIGkgPj0gbGVuIHRoZW4gaSA6OiBhY2MgZWxzZSBhY2NcbiAgICApIHJlcV9maWVsZHMgW11cbiAgaW5cbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJNaXNzaW5nIHR1cGxlIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggbWlzc2luZyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCBtaXNzaW5nKSkpXG5cbmxldCBtaXNzaW5nX2ZpZWxkIHAgZmllbGRfbmFtZSA9XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQgJXNcIiBmaWVsZF9uYW1lKVxuXG5sZXQgbWlzc2luZ19maWVsZHMgcCBiaXRfZmllbGRzIGZpZWxkX25hbWVzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBmb3IgeiA9IEFycmF5Lmxlbmd0aCBmaWVsZF9uYW1lcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgaSA9IHogLyAzMSBpblxuICAgIGxldCBqID0geiBtb2QgMzEgaW5cbiAgICBpZiBiaXRfZmllbGRzLihpKSBsYW5kICgxIGxzbCBqKSA9IDAgdGhlblxuICAgICAgYWNjIDo9IGZpZWxkX25hbWVzLih6KSA6OiAhYWNjXG4gIGRvbmU7XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCAhYWNjID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiICFhY2MpKVxuXG5sZXQgaW52YWxpZF92YXJpYW50X3RhZyBwIHMgPVxuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIlVuc3VwcG9ydGVkIHZhcmlhbnQgJVNcIiBzKVxuXG5sZXQgcmVhZF93aXRoX2FkYXB0ZXIgbm9ybWFsaXplIHJlYWRlciBwIGxiID1cbiAgbGV0IGFzdCA9IFlvanNvbi5TYWZlLnJlYWRfanNvbiBwIGxiIGluXG4gIGxldCBhc3QnID0gbm9ybWFsaXplIGFzdCBpblxuICBsZXQgcycgPSBZb2pzb24uU2FmZS50b19zdHJpbmcgYXN0JyBpblxuICBsZXQgbGInID0gTGV4aW5nLmZyb21fc3RyaW5nIHMnIGluXG4gIHJlYWRlciBwIGxiJ1xuXG5sZXQgd3JpdGVfd2l0aF9hZGFwdGVyIHJlc3RvcmUgd3JpdGVyIG9iIHggPVxuICBsZXQgb2JfdG1wID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIHdyaXRlciBvYl90bXAgeDtcbiAgbGV0IHNfdG1wID0gQnVmZmVyLmNvbnRlbnRzIG9iX3RtcCBpblxuICBsZXQgYXN0ID0gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgc190bXAgaW5cbiAgbGV0IGFzdCcgPSByZXN0b3JlIGFzdCBpblxuICBZb2pzb24uU2FmZS50b19idWZmZXIgb2IgYXN0J1xuXG4oKlxuICBDaGVja2luZyBhdCBydW50aW1lIHRoYXQgb3VyIGFzc3VtcHRpb25zIG9uIHVuc3BlY2lmaWVkIGNvbXBpbGVyIGJlaGF2aW9yXG4gIHN0aWxsIGhvbGQuXG4gICBUT0RPOiB3aGF0IGFyZSB0aGVzZSBhc3N1bXB0aW9ucyBhbmQgd2hpY2ggY29tcG9uZW50IG1ha2VzIHRoZW0/XG4qKVxudHlwZSB0ID0ge1xuICBfYSA6IGludCBvcHRpb247XG4gIF9iIDogaW50O1xufVxuXG4oKiBUaGlzIG11c3QgYmUgYSB0ZXN0IGZvciB0aGUgdHlwZSBjaGVja2VyIHNpbmNlIHRoZSBmdW5jdGlvbiBpc24ndCB1c2VkXG4gICBhbnl3aGVyZS4gKilcbmxldCBfdGVzdCAoKSA9XG4gIHsgeyBfYSA9IE5vbmU7IF9iID0gQXJyYXkubGVuZ3RoIFN5cy5hcmd2IH0gd2l0aCBfYSA9IE5vbmUgfVxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuKCpcbiAgUnVudGltZSBsaWJyYXJ5XG4qKVxuXG5vcGVuIFByaW50ZlxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbigqXG4gIEVycm9yIG1lc3NhZ2VzXG4qKVxubGV0IGVycm9yIHMgPSByYWlzZSAoRXJyb3IgcylcblxubGV0IHJlYWRfZXJyb3IgKCkgPVxuICBlcnJvciBcIlJlYWQgZXJyb3JcIlxuXG5sZXQgcmVhZF9lcnJvcl9hdCBpYiA9XG4gIGVycm9yIChzcHJpbnRmIFwiUmVhZCBlcnJvciAoJWkpXCIgaWIuQmlfaW5idWYuaV9wb3MpXG5cbmxldCB0YWdfZXJyb3IgdGFnIHMgPVxuICBlcnJvciAoc3ByaW50ZiBcIkZvdW5kIHdyb25nIHRhZyAlaSBmb3IgJXNcIiB0YWcgcylcblxubGV0IHVuc3VwcG9ydGVkX3ZhcmlhbnQgaCBoYXNfYXJnID1cbiAgZXJyb3IgKHNwcmludGYgXCJVbnN1cHBvcnRlZCB2YXJpYW50IChoYXNoPSVpLCBhcmc9JUIpXCIgaCBoYXNfYXJnKVxuXG5cbmxldCBtaXNzaW5nX3R1cGxlX2ZpZWxkcyBsZW4gcmVxX2ZpZWxkcyA9XG4gIGxldCBtaXNzaW5nID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgKFxuICAgICAgZnVuIGkgYWNjIC0+IGlmIGkgPj0gbGVuIHRoZW4gaSA6OiBhY2MgZWxzZSBhY2NcbiAgICApIHJlcV9maWVsZHMgW11cbiAgaW5cbiAgZXJyb3IgKHNwcmludGYgXCJNaXNzaW5nIHR1cGxlIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggbWlzc2luZyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCBtaXNzaW5nKSkpXG5cblxubGV0IG1pc3NpbmdfZmllbGRzIGJpdF9maWVsZHMgZmllbGRfbmFtZXMgPVxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGZvciB6ID0gQXJyYXkubGVuZ3RoIGZpZWxkX25hbWVzIC0gMSBkb3dudG8gMCBkb1xuICAgIGxldCBpID0geiAvIDMxIGluXG4gICAgbGV0IGogPSB6IG1vZCAzMSBpblxuICAgIGlmIGJpdF9maWVsZHMuKGkpIGxhbmQgKDEgbHNsIGopID0gMCB0aGVuXG4gICAgICBhY2MgOj0gZmllbGRfbmFtZXMuKHopIDo6ICFhY2NcbiAgZG9uZTtcbiAgZXJyb3IgKHNwcmludGYgXCJNaXNzaW5nIHJlY29yZCBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoICFhY2MgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgIWFjYykpXG5cblxuKCpcbiAgUmVhZGVyc1xuKilcblxubGV0IGdldF91bml0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby51bml0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF91bml0XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwidW5pdFwiXG5cbmxldCByZWFkX3VuaXQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLnVuaXRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3VuaXQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9ib29sX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5ib29sX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9ib29sXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiYm9vbFwiXG5cbmxldCByZWFkX2Jvb2wgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmJvb2xfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Jvb2wgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnRfcmVhZGVyIHRhZyA9XG4gIG1hdGNoIHRhZyB3aXRoXG4gICAgICAxIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50OFxuICAgIHwgMiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2XG4gICAgfCAxNiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3V2aW50XG4gICAgfCAxNyAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3N2aW50XG4gICAgfCBfIC0+IHRhZ19lcnJvciB0YWcgXCJpbnRcIlxuXG5sZXQgcmVhZF9pbnQgaWIgPVxuICBtYXRjaCBCaV9pby5yZWFkX3RhZyBpYiB3aXRoXG4gICAgICAxIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50OCBpYlxuICAgIHwgMiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2IGliXG4gICAgfCAxNiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3V2aW50IGliXG4gICAgfCAxNyAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3N2aW50IGliXG4gICAgfCBfIC0+IHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9jaGFyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQ4X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9jaGFyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiY2hhclwiXG5cbmxldCByZWFkX2NoYXIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDhfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2NoYXIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnQxNl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50MTZfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiaW50MTZcIlxuXG5sZXQgcmVhZF9pbnQxNiBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50MTZfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50MzJfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQzMlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImludDMyXCJcblxubGV0IHJlYWRfaW50MzIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQzMiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludDY0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50NjRcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJpbnQ2NFwiXG5cbmxldCByZWFkX2ludDY0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50NjQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9mbG9hdDMyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5mbG9hdDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDMyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiZmxvYXQzMlwiXG5cbmxldCBnZXRfZmxvYXQ2NF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uZmxvYXQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQ2NFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImZsb2F0NjRcIlxuXG5sZXQgZ2V0X2Zsb2F0X3JlYWRlciA9IGdldF9mbG9hdDY0X3JlYWRlclxuXG5sZXQgcmVhZF9mbG9hdDMyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5mbG9hdDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDMyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2Zsb2F0NjQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmZsb2F0NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfZmxvYXQgPSByZWFkX2Zsb2F0NjRcblxubGV0IGdldF9zdHJpbmdfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLnN0cmluZ190YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfc3RyaW5nXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwic3RyaW5nXCJcblxubGV0IHJlYWRfc3RyaW5nIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5zdHJpbmdfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3N0cmluZyBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiBsZW4gPSAwIHRoZW4gW3wgfF1cbiAgZWxzZVxuICAgIGxldCByZWFkZXIgPSBnZXRfcmVhZGVyIChCaV9pby5yZWFkX3RhZyBpYikgaW5cbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChyZWFkZXIgaWIpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIChyZWFkZXIgaWIpXG4gICAgZG9uZTtcbiAgICBhXG5cbmxldCByZWFkX2xpc3RfdmFsdWUgZ2V0X3JlYWRlciBpYiA9XG4gIEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYilcblxubGV0IGdldF9hcnJheV9yZWFkZXIgZ2V0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5hcnJheV90YWcgdGhlblxuICAgIHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlclxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImFycmF5XCJcblxubGV0IGdldF9saXN0X3JlYWRlciBnZXRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmFycmF5X3RhZyB0aGVuXG4gICAgZnVuIGliIC0+IEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYilcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJsaXN0XCJcblxubGV0IHJlYWRfYXJyYXkgZ2V0X3JlYWRlciBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uYXJyYXlfdGFnIHRoZW5cbiAgICByZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfbGlzdCByZWFkIGliID1cbiAgQXJyYXkudG9fbGlzdCAocmVhZF9hcnJheSByZWFkIGliKVxuXG5cbigqXG4gIFdyaXRlcnNcbiopXG5cbmxldCB3cml0ZV90YWdnZWQgdGFnIHdyaXRlIGJ1ZiB4ID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiB0YWc7XG4gIHdyaXRlIGJ1ZiB4XG5cbmxldCB3cml0ZV91bnRhZ2dlZF9vcHRpb24gd3JpdGUgYnVmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIE5vbmUgLT4gQmlfaW8ud3JpdGVfbnVtdGFnIGJ1ZiAwIGZhbHNlXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQmlfaW8ud3JpdGVfbnVtdGFnIGJ1ZiAwIHRydWU7XG4gICAgICAgIHdyaXRlIGJ1ZiB4XG5cbmxldCB3cml0ZV9vcHRpb24gd3JpdGUgYnVmIHggPVxuICBCaV9pby53cml0ZV90YWcgYnVmIEJpX2lvLm51bV92YXJpYW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfb3B0aW9uIHdyaXRlIGJ1ZiB4XG5cbmxldCBhcnJheV9pbml0MiBsZW4geCBmID1cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChmIDAgeCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgKGYgaSB4KVxuICAgIGRvbmU7XG4gICAgYVxuXG5sZXQgYXJyYXlfaW5pdDMgbGVuIHggeSBmID1cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChmIDAgeCB5KSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSAoZiBpIHggeSlcbiAgICBkb25lO1xuICAgIGFcblxubGV0IGFycmF5X2l0ZXIyIGYgeCBhID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcblxubGV0IGFycmF5X2l0ZXIzIGYgeCB5IGEgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgZiB4IHkgKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG5cblxubGV0IHJlYyBsaXN0X2l0ZXIyIGYgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGYgeCB5O1xuICAgICAgbGlzdF9pdGVyMiBmIHggbFxuXG5sZXQgcmVjIGxpc3RfaXRlcjMgZiB4IHkgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeiA6OiBsIC0+XG4gICAgICBmIHggeSB6O1xuICAgICAgbGlzdF9pdGVyMyBmIHggeSBsXG5cblxubGV0IHdyaXRlX3VudGFnZ2VkX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIEJpX3ZpbnQud3JpdGVfdXZpbnQgYnVmIGxlbjtcbiAgaWYgbGVuID4gMCB0aGVuIChcbiAgICBCaV9pby53cml0ZV90YWcgYnVmIGNlbGxfdGFnO1xuICAgIGFycmF5X2l0ZXIyIHdyaXRlIGJ1ZiBhXG4gIClcblxubGV0IHdyaXRlX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5hcnJheV90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgQmlfdmludC53cml0ZV91dmludCBidWYgbGVuO1xuICBpZiBsZW4gPiAwIHRoZW4gKFxuICAgIEJpX2lvLndyaXRlX3RhZyBidWYgY2VsbF90YWc7XG4gICAgbGlzdF9pdGVyMiB3cml0ZSBidWYgbFxuICApXG5cbmxldCB3cml0ZV9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5hcnJheV90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2xpc3QgY2VsbF90YWcgd3JpdGUgYnVmIGxcblxuKCpcbiAgc2hvcnRjdXQgZm9yIGdldHRpbmcgdGhlIHRhZyBvZiBhIHBvbHltb3JwaGljIHZhcmlhbnQgc2luY2VcbiAgYmluaW91IHVzZXMgdGhlIHNhbWUgcmVwcmVzZW50YXRpb25cbiAgKHVzZWZ1bG5lc3M/KVxuKilcbmxldCBnZXRfcG9seV90YWcgKHggOiBbPiBdKSA9XG4gIGxldCByID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmouaXNfYmxvY2sgciB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCByIDApIDogaW50KVxuICBlbHNlXG4gICAgKE9iai5vYmogciA6IGludClcblxuKCogV2Ugd2FudCBhbiBpZGVudGl0eSBmdW5jdGlvbiB0aGF0IGlzIG5vdCBpbmxpbmVkICopXG50eXBlIGlkZW50aXR5X3QgPSB7IG11dGFibGUgX2lkZW50aXR5IDogJ2EuICdhIC0+ICdhIH1cbmxldCBpZGVudGl0eV9yZWYgPSB7IF9pZGVudGl0eSA9IChmdW4geCAtPiB4KSB9XG5sZXQgaWRlbnRpdHkgeCA9IGlkZW50aXR5X3JlZi5faWRlbnRpdHkgeFxuXG4oKlxuICBDaGVja2luZyBhdCBydW50aW1lIHRoYXQgb3VyIGFzc3VtcHRpb25zIG9uIHVuc3BlY2lmaWVkIGNvbXBpbGVyIGJlaGF2aW9yXG4gIHN0aWxsIGhvbGQuXG4qKVxuXG50eXBlIHQgPSB7XG4gIF9hIDogaW50IG9wdGlvbjtcbiAgX2IgOiBpbnQ7XG59XG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IHsgX2EgPSBOb25lOyBfYiA9IEFycmF5Lmxlbmd0aCBTeXMuYXJndiB9IHdpdGggX2EgPSBOb25lIH1cblxuKCpcbiAgIFRoaXMgaXMgYSBydW50aW1lIHRlc3QgdGhhdCBjaGVja3Mgd2hldGhlciBvdXIgYXNzdW1wdGlvbnMgYWJvdXRcbiAgIHRoZSBjb21waWxlciBzdGlsbCBob2xkLlxuXG4gICBXZSBnZXQgdGhlIGZvbGxvd2luZyB3YXJuaW5nIHdoZW4gdXNpbmcgYW4gT0NhbWwgY29tcGlsZXIgYnVpbHRcbiAgIHdpdGggdGhlIGZsYW1iZGEgb3B0aW1pemF0aW9uLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCB3YXJuaW5nXG4gICBhbmQgc2hvdWxkbid0IGJlIGlnbm9yZWQgaWYgdGhlIE9DYW1sL2JpbmlvdSBpcyB0byBiZSB1c2VkLlxuICAgVGhpcyB3b24ndCBhZmZlY3QgdGhlIE9DYW1sL0pTT04gYmFja2VuZC5cblxuICAgPiBXYXJuaW5nIDU5IFtmbGFtYmRhLWFzc2lnbm1lbnQtdG8tbm9uLW11dGFibGUtdmFsdWVdOiBBIHBvdGVudGlhbFxuICAgPiBhc3NpZ25tZW50IHRvIGEgbm9uLW11dGFibGUgdmFsdWUgd2FzIGRldGVjdGVkIGluIHRoaXMgc291cmNlIGZpbGUuXG4gICA+IFN1Y2ggYXNzaWdubWVudHMgbWF5IGdlbmVyYXRlIGluY29ycmVjdCBjb2RlIHdoZW4gdXNpbmcgRmxhbWJkYS5cbiopXG5sZXQgdGVzdCAoKSA9XG4gIGxldCByID0gY3JlYXRlICgpIGluXG4gIGxldCB2ID0gU29tZSAxNyBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciByKSAwIChPYmoucmVwciB2KTtcbiAgbGV0IHNhZmVfciA9IGlkZW50aXR5IHIgaW5cbiAgKCogci5fYSBpcyBpbmxpbmVkIGJ5IG9jYW1sb3B0IGFuZCBlcXVhbHMgTm9uZVxuICAgICBiZWNhdXNlIHRoZSBmaWVsZCBpcyBzdXBwb3NlZCB0byBiZSBpbW11dGFibGUuICopXG4gIGFzc2VydCAoc2FmZV9yLl9hID0gdilcblxubGV0ICgpID0gdGVzdCAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuIiwiKCogSnNvbiBhZGFwdGVycy4gU2VlIC5tbGkuICopXG5cbmxldCBub3JtYWxpemVfdHlwZV9maWVsZCB0eXBlX2ZpZWxkX25hbWUgKHggOiBZb2pzb24uU2FmZS50KSA6IFlvanNvbi5TYWZlLnQgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgQXNzb2MgZmllbGRzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5hc3NvYyB0eXBlX2ZpZWxkX25hbWUgZmllbGRzIHdpdGhcbiAgICAgICB8IGBTdHJpbmcgdHlwZV8gLT4gYExpc3QgWyBgU3RyaW5nIHR5cGVfOyB4IF1cbiAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4geFxuICAgICAgIHwgXyAtPiB4ICgqIG1hbGZvcm1lZCAqKVxuICAgICAgKVxuICB8IGBTdHJpbmcgdHlwZV8gYXMgeCAtPiB4XG4gIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuXG5sZXQgcmVzdG9yZV90eXBlX2ZpZWxkIHR5cGVfZmllbGRfbmFtZSAoeCA6IFlvanNvbi5TYWZlLnQpIDogWW9qc29uLlNhZmUudCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBMaXN0IFsgYFN0cmluZyB0eXBlXzsgYEFzc29jIGZpZWxkcyBdIC0+XG4gICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgKHR5cGVfZmllbGRfbmFtZSwgYFN0cmluZyB0eXBlXykgOjpcbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biAoaywgdikgLT4gayA8PiB0eXBlX2ZpZWxkX25hbWUpIGZpZWxkc1xuICAgICAgaW5cbiAgICAgIGBBc3NvYyBmaWVsZHNcbiAgfCBgU3RyaW5nIHR5cGVfIGFzIHggLT4geFxuICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgbm9ybWFsaXplIDogWW9qc29uLlNhZmUudCAtPiBZb2pzb24uU2FmZS50XG4gIHZhbCByZXN0b3JlIDogWW9qc29uLlNhZmUudCAtPiBZb2pzb24uU2FmZS50XG5lbmRcblxubW9kdWxlIFR5cGVfZmllbGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUGFyYW0gPSBzaWdcbiAgICB2YWwgdHlwZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChQYXJhbSA6IFBhcmFtKSA6IFMgPSBzdHJ1Y3RcbiAgICBsZXQgbm9ybWFsaXplID0gbm9ybWFsaXplX3R5cGVfZmllbGQgUGFyYW0udHlwZV9maWVsZF9uYW1lXG5cbiAgICBsZXQgcmVzdG9yZSA9IHJlc3RvcmVfdHlwZV9maWVsZCBQYXJhbS50eXBlX2ZpZWxkX25hbWVcbiAgZW5kXG5cbiAgbW9kdWxlIERlZmF1bHRfcGFyYW0gOiBQYXJhbSA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2ZpZWxkX25hbWUgPSBcInR5cGVcIlxuICBlbmRcblxuICBpbmNsdWRlIE1ha2UgKERlZmF1bHRfcGFyYW0pXG5lbmRcblxubW9kdWxlIE9uZV9maWVsZCA9IHN0cnVjdFxuICBvcGVuIFlvanNvbi5TYWZlXG5cbiAgbGV0IG5vcm1hbGl6ZSAoeCA6IHQpIDogdCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgQXNzb2MgW25hbWUsIHZhbHVlXSAtPiBgTGlzdCBbYFN0cmluZyBuYW1lOyB2YWx1ZV1cbiAgICB8IGBTdHJpbmcgXyBhcyB4IC0+IHhcbiAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxuICBsZXQgcmVzdG9yZSAoeCA6IHQpIDogdCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTGlzdCBbYFN0cmluZyBuYW1lOyB2YWx1ZV0gLT4gYEFzc29jIFtuYW1lLCB2YWx1ZV1cbiAgICB8IGBTdHJpbmcgXyBhcyB4IC0+IHhcbiAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcbmVuZFxuXG5tb2R1bGUgVHlwZV9hbmRfdmFsdWVfZmllbGRzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFBhcmFtID0gc2lnXG4gICAgdmFsIHR5cGVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWx1ZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gICAgdmFsIGtub3duX3RhZ3MgOiAoc3RyaW5nIGxpc3QgKiBzdHJpbmcpIG9wdGlvblxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoUGFyYW0gOiBQYXJhbSkgOiBTID0gc3RydWN0XG4gICAgb3BlbiBZb2pzb24uU2FmZVxuICAgIG9wZW4gUGFyYW1cblxuICAgIGxldCBpc19rbm93bl90YWcgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKGZ1biBfIC0+IHRydWUpXG4gICAgICB8IFNvbWUgKGwsIF8pIC0+XG4gICAgICAgICAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICgyICogTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+IEhhc2h0YmwuYWRkIHRibCB4ICgpKSBsO1xuICAgICAgICAgIEhhc2h0YmwubWVtIHRibFxuXG4gICAgbGV0IGlzX2NhdGNoX2FsbF90YWcgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKGZ1biBfIC0+IGZhbHNlKVxuICAgICAgfCBTb21lIChfLCBzKSAtPiAoKD0pIHMpXG5cbiAgICBsZXQgY2F0Y2hfYWxsX3RhZyAoKSA9XG4gICAgICBtYXRjaCBrbm93bl90YWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSAoXywgcykgLT4gc1xuXG4gICAgbGV0IHdyYXBfdmFyaWFudCB0eXBlXyB2YWx1ZSA9XG4gICAgICBsZXQgdmFyaWFudCA9IGBMaXN0IFtgU3RyaW5nIHR5cGVfOyB2YWx1ZV0gaW5cbiAgICAgIGlmIGlzX2tub3duX3RhZyB0eXBlXyB0aGVuXG4gICAgICAgIHZhcmlhbnRcbiAgICAgIGVsc2VcbiAgICAgICAgYExpc3QgWyBgU3RyaW5nIChjYXRjaF9hbGxfdGFnICgpKTsgdmFyaWFudCBdXG5cbiAgICBsZXQgd3JhcF9lbnVtIHR5cGVfID1cbiAgICAgIGlmIGlzX2tub3duX3RhZyB0eXBlXyB0aGVuXG4gICAgICAgIGBTdHJpbmcgdHlwZV9cbiAgICAgIGVsc2VcbiAgICAgICAgYExpc3QgWyBgU3RyaW5nIChjYXRjaF9hbGxfdGFnICgpKTsgYE51bGwgXVxuXG4gICAgbGV0IG5vcm1hbGl6ZSAoeCA6IHQpIDogdCA9XG4gICAgICBsZXQgb3BlbiBZb2pzb24uU2FmZS5VdGlsIGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYEFzc29jIGZpZWxkcyAtPlxuICAgICAgICAgIGxldCB0eXBlXyA9IG1lbWJlciB0eXBlX2ZpZWxkX25hbWUgeCB8PiB0b19zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIExpc3QubWFwIChmdW4gKChrLCB2KSBhcyBmaWVsZCkgLT5cbiAgICAgICAgICAgICAgaWYgayA9IHZhbHVlX2ZpZWxkX25hbWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgZm91bmQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAoaywgd3JhcF92YXJpYW50IHR5cGVfIHYpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZpZWxkXG4gICAgICAgICAgICApIGZpZWxkc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBpZiAhZm91bmQgdGhlblxuICAgICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKHZhbHVlX2ZpZWxkX25hbWUsIHdyYXBfZW51bSB0eXBlXykgOjogZmllbGRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBgQXNzb2MgZmllbGRzXG4gICAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxuICAgIGxldCB1bndyYXBfdmFsdWUgKHggOiB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFN0cmluZyB0YWcgLT4gKHRhZywgTm9uZSlcbiAgICAgIHwgYExpc3QgW2BTdHJpbmcgdGFnOyB2XSAtPlxuICAgICAgICAgIGlmIGlzX2NhdGNoX2FsbF90YWcgdGFnIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgICAgICB8IGBMaXN0IFtgU3RyaW5nIHJlYWxfdGFnOyBgTnVsbF0gLT4gKHJlYWxfdGFnLCBOb25lKVxuICAgICAgICAgICAgfCBgTGlzdCBbYFN0cmluZyByZWFsX3RhZzsgcmVhbF92XSAtPiAocmVhbF90YWcsIFNvbWUgcmVhbF92KVxuICAgICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIChcIk1hbGZvcm1lZCBqc29uIGZpZWxkIFwiIF4gdmFsdWVfZmllbGRfbmFtZSlcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKHRhZywgU29tZSB2KVxuICAgICAgfCBtYWxmb3JtZWQgLT4gZmFpbHdpdGggKFwiTWFsZm9ybWVkIGpzb24gZmllbGQgXCIgXiB2YWx1ZV9maWVsZF9uYW1lKVxuXG4gICAgbGV0IHJlc3RvcmUgKHggOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBBc3NvYyBmaWVsZHMgLT5cbiAgICAgICAgICBsZXQgdHlwZV8gPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKChrLCB0YWdnZWQpIGFzIGZpZWxkKSBhY2MgLT5cbiAgICAgICAgICAgICAgaWYgayA9IHZhbHVlX2ZpZWxkX25hbWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IHRhZywgb3B0X3ZhbHVlID0gdW53cmFwX3ZhbHVlIHRhZ2dlZCBpblxuICAgICAgICAgICAgICAgIHR5cGVfIDo9IFNvbWUgdGFnO1xuICAgICAgICAgICAgICAgIG1hdGNoIG9wdF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2YWx1ZV9maWVsZF9uYW1lLCB2KSA6OiBhY2NcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlIGlmIGsgPSB0eXBlX2ZpZWxkX25hbWUgdGhlblxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmllbGQgOjogYWNjXG4gICAgICAgICAgICAgICkgZmllbGRzIFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIG1hdGNoICF0eXBlXyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgICAgICAgICB8IFNvbWUgdGFnIC0+ICh0eXBlX2ZpZWxkX25hbWUsIGBTdHJpbmcgdGFnKSA6OiBmaWVsZHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGBBc3NvYyBmaWVsZHNcbiAgICAgIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuICBlbmRcbmVuZFxuIiwiKCoqXG4gKiBleGNlcHRpb24ubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXVnIDE1IDIwMTY+XG4gKiAqXG4gKiBUaGlzIGxpYnJhcnkgZGVjbGFyZXMgZXhjZXB0aW9uc1xuICpcbiAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA9XG4gIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxubGV0IGVtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA9XG4gIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxubGV0IGlzX2VtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA9XG4gIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5pc19lbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxubGV0IHNhZmVfd2FybiBwYXJhbWV0ZXJzIF9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgZmlsZV9uYW1lIG1lc3NhZ2UgZXhuXG4gICAgX2RlZmF1bHQgPVxuICBsZXQgdW5jYXVnaHQgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG5cbiAgaW5cbiAgbGV0IHN0cmluZ2xpc3QgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5zdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHVuY2F1Z2h0XG4gICAgICBbIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzIF1cbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiJXNcIilcbiAgICAgIHN0cmluZ2xpc3RcbiAgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBpblxuICByYWlzZSAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLlVuY2F1Z2h0X2V4Y2VwdGlvbiB1bmNhdWdodClcblxubGV0IHVuc2FmZV93YXJuIF9wYXJhbWV0ZXJzIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA/dG9fdWkgZmlsZV9uYW1lXG4gICAgbWVzc2FnZSBleG4gZGVmYXVsdCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4blxuICBpblxuICAoIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3IgdW5jYXVnaHQgP3RvX3VpXG4gICAgICBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQsXG4gICAgZGVmYXVsdCAoKSApXG5cbmxldCB3YXJuX2F1eCBwYXJhbWV0ZXJzIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA/dG9fdWkgZmlsZSBtZXNzYWdlIGV4blxuICAgIGRlZmF1bHQgPVxuICBsZXQgZXJyb3IsIGRmdCA9XG4gICAgaWYgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdW5zYWZlIHBhcmFtZXRlcnMgdGhlblxuICAgICAgdW5zYWZlX3dhcm4gcGFyYW1ldGVycyBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgP3RvX3VpIGZpbGUgbWVzc2FnZVxuICAgICAgICBleG4gZGVmYXVsdFxuICAgIGVsc2VcbiAgICAgIHNhZmVfd2FybiBwYXJhbWV0ZXJzIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCBmaWxlIG1lc3NhZ2UgZXhuXG4gICAgICAgIGRlZmF1bHRcbiAgaW5cbiAgbGV0ICgpID0gUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX2Vycm9yX2xpc3QgcGFyYW1ldGVycyBlcnJvciBpblxuICBlcnJvciwgZGZ0XG5cbmxldCB3YXJuX3dpdGhfZXhuIHBhcmFtZXRlcnMgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID90b191aVxuICAgIChmaWxlLCBsaW5lLCBfLCBfKSA/KG1lc3NhZ2UgPSBcIlwiKSA/KHBvcyA9IE5vbmUpIGV4biBkZWZhdWx0ID1cbiAgbGV0IGxpYWlzb24gPVxuICAgIGlmIG1lc3NhZ2UgPSBcIlwiICYmIHBvcyA9IE5vbmUgdGhlblxuICAgICAgXCJcIlxuICAgIGVsc2VcbiAgICAgIFwiOiBcIlxuICBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIHMgLT4gXCIsIFwiIF4gTG9jLnRvX3N0cmluZyBzXG4gIGluXG4gIHdhcm5fYXV4IHBhcmFtZXRlcnMgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID90b191aSAoU29tZSBmaWxlKVxuICAgIChTb21lIChcImxpbmUgXCIgXiBzdHJpbmdfb2ZfaW50IGxpbmUgXiBwb3MgXiBsaWFpc29uIF4gbWVzc2FnZSkpXG4gICAgZXhuIGRlZmF1bHRcblxubGV0IHdhcm4gcGFyYW1ldGVycyBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgP3RvX3VpIGZpbGVfbGluZVxuICAgID8obWVzc2FnZSA9IFwiXCIpID9wb3MgZXhuIGRlZmF1bHQgPVxuICB3YXJuX3dpdGhfZXhuIHBhcmFtZXRlcnMgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID90b191aSBmaWxlX2xpbmVcbiAgICB+bWVzc2FnZSB+cG9zIGV4biAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBwcmludF9mb3JfS2FTaW0gcGFyYW1ldGVycyBoYW5kbGVycyA9XG4gIGxldCBwYXJhbWV0ZXJzID0gUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4IHBhcmFtZXRlcnMgXCJlcnJvcjogXCIgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBjYXVnaHQgLT5cbiAgICAgICAgbGV0IHN0cmluZ2xpc3QgPVxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgOjogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IGNhdWdodCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgICAgICAgc3RyaW5nbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycykpXG4gIGluXG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gdW5jYXVnaHQgLT5cbiAgICAgICAgbGV0IHN0cmluZ2xpc3QgPVxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgOjogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgdW5jYXVnaHQgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiJXNcIilcbiAgICAgICAgICAgIHN0cmluZ2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIGluXG4gICAgICAgICgpKVxuICAgICAgKExpc3QucmV2XG4gICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycykpXG4gIGluXG4gICgpXG5cbmxldCBwcmludCBwYXJhbWV0ZXJzIGhhbmRsZXJzID1cbiAgaWZcbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycyA9IFtdXG4gICAgJiYgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycyA9IFtdXG4gIHRoZW4gKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzZXhlY3V0aW9uIGZpbmlzaGVkIHdpdGhvdXQgYW55IGV4Y2VwdGlvblwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXggcGFyYW1ldGVycylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgKClcbiAgKSBlbHNlIChcbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgXCIlc1NvbWUgZXhjZXB0aW9ucyBoYXZlIGJlZW4gcmFpc2VkXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBwcmludF9mb3JfS2FTaW0gcGFyYW1ldGVycyBoYW5kbGVyc1xuICApXG5cbmxldCBwcmludF9lcnJvcnNfbGlnaHRfZm9yX2thc2ltIHBhcmFtZXRlcnMgaGFuZGxlcnMgPVxuICBpZlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgICAmJiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgdGhlblxuICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzU29tZSBleGNlcHRpb25zIGhhdmUgYmVlbiByYWlzZWQgZHVyaW5nIHRoZSBzdGF0aWMgYW5hbHlzaXMsIHBsZWFzZSBcXFxuICAgICAgICAgYW5hbHlzZSB5b3VyIGZpbGUgd2l0aCBLYVNhXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICAoKVxuICApXG5cbmxldCB3cmFwIHBhcmFtZXRlcnMgZXJyb3Igc3RyaW5nIHN0cmluZ19vcHQgZXhuID1cbiAgZnN0ICh3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yIChTb21lIHN0cmluZykgc3RyaW5nX29wdCBleG4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBfbGlmdF9lcnJvcl9sb2dzX2Zvcl9LYVNhIGYgPVxuICBmIChmdW4gcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgc3RyaW5nX29wdCBleG4gLT5cbiAgICAgIGZzdFxuICAgICAgICAod2Fybl9hdXggcGFyYW1ldGVycyBlcnJvciAoU29tZSBzdHJpbmcpIHN0cmluZ19vcHQgZXhuIChmdW4gKCkgLT4gKCkpKSlcblxubGV0IGNoZWNrX3BvaW50XG4gICAgKHdhcm4gOlxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgICAgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgICA/dG9fdWk6Ym9vbCAtPlxuICAgICAgJ2EgLT5cbiAgICAgID9tZXNzYWdlOnN0cmluZyAtPlxuICAgICAgP3BvczpMb2MudCAtPlxuICAgICAgZXhuIC0+XG4gICAgICB1bml0IC0+XG4gICAgICBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB1bml0KSBwYXJhbWV0ZXIgZXJyb3IgZXJyb3InIHMgP3RvX3VpXG4gICAgP21lc3NhZ2UgP3BvcyBleG4gPVxuICBpZiBlcnJvciA9PSBlcnJvcicgdGhlblxuICAgIGVycm9yXG4gIGVsc2UgKFxuICAgIGxldCBlcnJvciwgKCkgPSB3YXJuIHBhcmFtZXRlciBlcnJvcicgP3RvX3VpIHMgP21lc3NhZ2UgP3BvcyBleG4gKCkgaW5cbiAgICBlcnJvclxuICApXG4iLCIoKiogVGltZS1zdGFtcDogPEp1bCAwMiAyMDE2PiAqKVxuXG5sZXQgZm9yX0thU2ltIGYgPSBmIChmdW4gXyBfIF8gXyBfIC0+ICgpKSAoKSAoKVxubGV0IGxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGYgYSBiID0gc25kIChmb3JfS2FTaW0gZiBhIGIpXG5cbmxldCBsaWZ0X2dlbmVyaWNfYmluYXJ5X2JpbmFyeV9mb3JfS2FTaW0gZiBhIGIgPVxuICBsZXQgXywgYiwgYyA9IGZvcl9LYVNpbSBmIGEgYiBpblxuICBiLCBjXG5cbmxldCBsaWZ0X2dlbmVyaWNfdGVybmFyeV9mb3JfS2FTaW0gZiBhIGIgYyA9IHNuZCAoZm9yX0thU2ltIGYgYSBiIGMpXG5cbmxldCBsaWZ0X2dlbl91bmFyeSBkdW1wIGYgYSA9XG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmR1bW15X3BhcmFtZXRlcnNcbiAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhICgpXG4gIGluXG4gIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5lbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPSBmIHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfZ2VuX2JpbmFyeSBkdW1wIGYgYSBiID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGIgaW5cbiAgbGV0IF8gPSBkdW1wIHBhcmFtZXRlcnMgZXJyb3IgaW5cbiAgb3V0cHV0XG5cbmxldCBsaWZ0X2dlbl90ZXJuYXJ5IGR1bXAgZiBhIGIgYyA9XG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmR1bW15X3BhcmFtZXRlcnNcbiAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhICgpXG4gIGluXG4gIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5lbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPSBmIHBhcmFtZXRlcnMgZXJyb3IgYSBiIGMgaW5cbiAgbGV0IF8gPSBkdW1wIHBhcmFtZXRlcnMgZXJyb3IgaW5cbiAgb3V0cHV0XG5cbmxldCBsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3VuYXJ5IGYgYSA9IGxpZnRfZ2VuX3VuYXJ5IEV4Y2VwdGlvbi5wcmludCBmIGFcblxubGV0IGxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfYmluYXJ5IGYgYSBiID1cbiAgbGlmdF9nZW5fYmluYXJ5IEV4Y2VwdGlvbi5wcmludCBmIGEgYlxuXG5sZXQgbGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ190ZXJuYXJ5IGYgYSBiIGMgPVxuICBsaWZ0X2dlbl9iaW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYSBiIGNcblxubGV0IGxpZnRfd2l0aG91dF9sb2dnaW5nX3VuYXJ5IGYgYSA9IGxpZnRfZ2VuX3VuYXJ5IChmdW4gXyBfIC0+ICgpKSBmIGFcbmxldCBsaWZ0X3dpdGhvdXRfbG9nZ2luZ19iaW5hcnkgZiBhIGIgPSBsaWZ0X2dlbl9iaW5hcnkgKGZ1biBfIF8gXyAtPiAoKSkgZiBhIGJcblxubGV0IGxpZnRfd2l0aG91dF9sb2dnaW5nX3Rlcm5hcnkgZiBhIGIgYyA9XG4gIGxpZnRfZ2VuX3Rlcm5hcnkgKGZ1biBfIF8gXyBfIC0+ICgpKSBmIGEgYiBjXG4iLCIoKipcbiAgKiBzdG9yeVByb2ZpbGluZy5tbFxuICAqXG4gICogR2VuZXJhdGUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGZvciBzdG9yaWVzIGluIEthU2ltXG4gICpcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMDkvMDQvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxNS8wNi8yMDEyXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHN0ZXBfa2luZCA9XG4gIHwgRHVtbXlcbiAgfCBCZWdpbm5pbmdcbiAgfCBDb2xsZWN0X3RyYWNlc1xuICB8IENhdXNhbF9jb21wcmVzc2lvblxuICB8IFdlYWtfY29tcHJlc3Npb25cbiAgfCBTdHJvbmdfY29tcHJlc3Npb25cbiAgfCBJdGVyYXRpb24gb2YgaW50XG4gIHwgU3Rvcnkgb2YgaW50XG4gIHwgUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb25cbiAgfCBTaXBob25fZGV0ZWN0aW9uXG4gIHwgRGVjb21wb3NlX2luaXRpYWxfc3RhdGVcbiAgfCBBZ2VudF9pZHNfZGlzYW1iaWd1YXRpb25cbiAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvblxuICB8IFJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlXG4gIHwgQ29tcHJlc3Npb25cbiAgfCBCdWlsZF9ncmlkXG4gIHwgQnVpbGRfY29uZmlndXJhdGlvblxuICB8IFRyYW5zaXRpdmVfY2xvc3VyZVxuICB8IEdyYXBoX3JlZHVjdGlvblxuICB8IEdyYXBoX2NvbnZlcnNpb25cbiAgfCBDYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uXG4gIHwgU3RvcmVfdHJhY2VcbiAgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHNcbiAgfCBCbGFja2xpc3RpbmdfZXZlbnRzXG4gIHwgR2xvYmFsX2luaXRpYWxpemF0aW9uXG4gIHwgRG9tYWluc19pbml0aWFsaXphdGlvblxuICB8IERvbWFpbl9pbml0aWFsaXphdGlvbiBvZiBzdHJpbmdcbiAgfCBBcHBseV9ydWxlIG9mIGludFxuICB8IEluaXRpYWxfc3RhdGUgb2YgaW50XG4gIHwgU2Nhbl9ydWxlX3N0YXRpYyBvZiBpbnRcbiAgfCBTY2FuX3J1bGVfZHluYW1pYyBvZiBpbnRcbiAgfCBSZWd1bGFyX2luZmx1ZW5jZXNcbiAgfCBTaWRlX2VmZmVjdHNfaW5mbHVlbmNlc1xuICB8IE1lcmdlX2luZmx1ZW5jZXNcbiAgfCBLYVNpbV9jb21waWxhdGlvblxuICB8IEthU2FfcHJlY29tcGlsYXRpb25cbiAgfCBLYVNhX2xleGluZ1xuICB8IEthU2FfbGlua2luZ1xuICB8IEluZmx1ZW5jZV9tYXAgb2Ygc3RyaW5nXG4gIHwgSW50ZXJuYWxfaW5mbHVlbmNlX21hcCBvZiBzdHJpbmdcbiAgfCBMS2FwcGFfc2lnbmF0dXJlXG5cbmxldCBzdHJpbmdfb2Zfc3RlcF9raW5kIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBEdW1teSB8IEJlZ2lubmluZyAtPiBcIlwiXG4gIHwgQnVpbGRfY29uZmlndXJhdGlvbiAtPiBcIkJ1aWxkIGNvbmZpZ3VyYXRpb25cIlxuICB8IENvbGxlY3RfdHJhY2VzIC0+IFwiQ29sbGVjdCB0cmFjZXNcIlxuICB8IENhdXNhbF9jb21wcmVzc2lvbiAtPiBcIkNhdXNhbCBjb21wcmVzc2lvblwiXG4gIHwgV2Vha19jb21wcmVzc2lvbiAtPiBcIldlYWsgY29tcHJlc3Npb25cIlxuICB8IFN0cm9uZ19jb21wcmVzc2lvbiAtPiBcIlN0cm9uZyBjb21wcmVzc2lvblwiXG4gIHwgSXRlcmF0aW9uIGludCAtPiBQcmludGYuc3ByaW50ZiBcIkl0ZXJhdGlvbiAlaVwiIGludFxuICB8IFN0b3J5IGludCAtPiBQcmludGYuc3ByaW50ZiBcIlN0b3J5ICVpXCIgaW50XG4gIHwgUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24gLT4gXCJQYXJ0aWFsIG9yZGVyIHJlZHVjdGlvblwiXG4gIHwgU2lwaG9uX2RldGVjdGlvbiAtPiBcIkRldGVjdGlvbiBvZiBzaXBob25zXCJcbiAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSAtPiBcIlNwbGl0dGluZyBpbml0aWFsIHN0YXRlc1wiXG4gIHwgQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uIC0+IFwiUmVuYW1pbmcgYWdlbnRzIHRvIGF2b2lkIGNvbmZsaWN0c1wiXG4gIHwgUHNldWRvX2ludmVyc2VfZGVsZXRpb24gLT4gXCJEZWxldGlvbiBvZiBwc2V1ZG8gaW52ZXJzZSBldmVudHNcIlxuICB8IFJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlIC0+XG4gICAgXCJSZW1vdmluZyBldmVudHMgYWZ0ZXIgdGhlIGxhc3Qgb2JzZXJ2YWJsZXNcIlxuICB8IENvbXByZXNzaW9uIC0+IFwiQ29tcHJlc3Npb25cIlxuICB8IFRyYW5zaXRpdmVfY2xvc3VyZSAtPiBcIlRyYW5zaXRpdmUgY2xvc3VyZVwiXG4gIHwgQnVpbGRfZ3JpZCAtPiBcIkdyaWQgY29tcHV0YXRpb25cIlxuICB8IEdyYXBoX3JlZHVjdGlvbiAtPiBcIlRyYW5zaXRpdmUgcmVkdWN0aW9uXCJcbiAgfCBHcmFwaF9jb252ZXJzaW9uIC0+IFwiR3JhcGggY29udmVyc2lvblwiXG4gIHwgQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvbiAtPiBcIkNvbXB1dGluZyB0aGUgY2Fubm9uaWMgZm9ybVwiXG4gIHwgU3RvcmVfdHJhY2UgLT4gXCJTdG9yZSB0cmFjZVwiXG4gIHwgUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzIC0+IFwiUmVtb3ZpbmcgYmxhY2stbGlzdGVkIGV2ZW50c1wiXG4gIHwgQmxhY2tsaXN0aW5nX2V2ZW50cyAtPiBcIkJsYWtsaXN0aW5nIGV2ZW50c1wiXG4gIHwgR2xvYmFsX2luaXRpYWxpemF0aW9uIC0+IFwiR2xvYmFsIGluaXRpYWxpemF0aW9uXCJcbiAgfCBEb21haW5zX2luaXRpYWxpemF0aW9uIC0+IFwiRG9tYWlucyBpbml0aWFsaXphdGlvblwiXG4gIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIHN0cmluZyAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiRG9tYWluIGluaXRpYWxpemF0aW9uICglcylcIiBzdHJpbmdcbiAgfCBBcHBseV9ydWxlIGludCAtPiBQcmludGYuc3ByaW50ZiBcIkFwcGx5IHJ1bGUgJWlcIiBpbnRcbiAgfCBJbml0aWFsX3N0YXRlIGludCAtPiBQcmludGYuc3ByaW50ZiBcIkluaXRpYWwgc3RhdGUgJWlcIiBpbnRcbiAgfCBTY2FuX3J1bGVfc3RhdGljIGludCAtPiBQcmludGYuc3ByaW50ZiBcIlNjYW4gcnVsZSAlaSAoc3RhdGljKVwiIGludFxuICB8IFNjYW5fcnVsZV9keW5hbWljIGludCAtPiBQcmludGYuc3ByaW50ZiBcIlNjYW4gcnVsZSAlaSAoZHluYW1pYylcIiBpbnRcbiAgfCBSZWd1bGFyX2luZmx1ZW5jZXMgLT4gUHJpbnRmLnNwcmludGYgXCJSZWd1bGFyIGluZmx1ZW5jZXMgY29tcHV0YXRpb25cIlxuICB8IFNpZGVfZWZmZWN0c19pbmZsdWVuY2VzIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJTaWRlLWVmZmVjdHMgaW5mbHVlbmNlcyBjb21wdXRhdGlvblwiXG4gIHwgTWVyZ2VfaW5mbHVlbmNlcyAtPiBQcmludGYuc3ByaW50ZiBcIk1lcmdpbmcgaW5mbHVlbmNlc1wiXG4gIHwgS2FTaW1fY29tcGlsYXRpb24gLT4gUHJpbnRmLnNwcmludGYgXCJLYVNpbSBmcm9udGVuZFwiXG4gIHwgS2FTYV9wcmVjb21waWxhdGlvbiAtPiBQcmludGYuc3ByaW50ZiBcIkthU2EgcHJlY29tcGlsYXRpb25cIlxuICB8IEthU2FfbGV4aW5nIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBMZXhpbmdcIlxuICB8IEthU2FfbGlua2luZyAtPiBQcmludGYuc3ByaW50ZiBcIkthU2EgTGlua2luZ1wiXG4gIHwgSW5mbHVlbmNlX21hcCBzdHJpbmcgLT4gUHJpbnRmLnNwcmludGYgXCJJbmZsdWVuY2UgbWFwICglcylcIiBzdHJpbmdcbiAgfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIHN0cmluZyAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiSW5mbHVlbmNlIG1hcCAoaW50ZXJuYWwgJXMpXCIgc3RyaW5nXG4gIHwgTEthcHBhX3NpZ25hdHVyZSAtPiBQcmludGYuc3ByaW50ZiBcIkxLYXBwYSBzaWduYXR1cmVcIlxuXG5sZXQgcHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlcnMgeCA9XG4gIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXJzKVxuICAgIChzdHJpbmdfb2Zfc3RlcF9raW5kIHgpXG5cbm1vZHVsZSB0eXBlIFN0b3J5U3RhdHMgPSBzaWdcbiAgdHlwZSBsb2dfaW5mb1xuXG4gIHZhbCBpbmNfcmVtb3ZlZF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX3NlbGVjdGVkX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBsb2dfaW5mb190b19qc29uIDogbG9nX2luZm8gLT4gWW9qc29uLkJhc2ljLnRcbiAgdmFsIGxvZ19pbmZvX29mX2pzb24gOiBZb2pzb24uQmFzaWMudCAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2N1dF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2tfY3V0X2V2ZW50cyA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgcmVzZXRfY3V0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9rYXNpbV9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX25faW5pdF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX25fc2lkZV9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX25fb2JzX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfYnJhbmNoIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19jdXQgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgcmVzZXRfbG9nIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGR1bXBfY29tcGxldGVfbG9nIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBsb2dfaW5mbyAtPiB1bml0XG4gIHZhbCBkdW1wX3Nob3J0X2xvZyA6IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gbG9nX2luZm8gLT4gdW5pdFxuICB2YWwgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGFkZF9sb29rX3VwX2Nhc2UgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGFkZF9sb29rX2Rvd25fY2FzZSA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgY29weSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpc19kdW1teSA6IHN0ZXBfa2luZCAtPiBib29sXG5cbiAgdmFsIGFkZF9ldmVudCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBzdGVwX2tpbmQgLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIGxvZ19pbmZvXG5cbiAgdmFsIGNsb3NlX2V2ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHN0ZXBfa2luZCAtPlxuICAgICh1bml0IC0+IGludCkgb3B0aW9uIC0+XG4gICAgbG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogbG9nX2luZm9cblxuICB2YWwgYWRkX2V2ZW50X29wdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBzdGVwX2tpbmQgb3B0aW9uIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBsb2dfaW5mb1xuXG4gIHZhbCBjbG9zZV9ldmVudF9vcHQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgc3RlcF9raW5kIG9wdGlvbiAtPlxuICAgICh1bml0IC0+IGludCkgb3B0aW9uIC0+XG4gICAgbG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogbG9nX2luZm9cblxuICB2YWwgc2V0X3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0ZXBfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfZ2xvYmFsX2N1dCA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3BzZXVkb19pbnYgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9zdGFydF9jb21wcmVzc2lvbiA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfZ3JpZF9nZW5lcmF0aW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jYW5vbmljYWxpc2F0aW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jb25jdXJyZW50X2V2ZW50X2RldGVjdGlvbl90aW1lIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgZWxsYXBzZWRfZ2xvYmFsX3RpbWUgOiBsb2dfaW5mbyAtPiBmbG9hdFxuICB2YWwgZWxsYXBzZWRfdGltZSA6IGxvZ19pbmZvIC0+IGZsb2F0XG4gIHZhbCBpbml0X2xvZ19pbmZvIDogdW5pdCAtPiBsb2dfaW5mb1xuICB2YWwgdGljayA6IGxvZ19pbmZvIC0+IGJvb2wgKiBsb2dfaW5mb1xuICB2YWwgY2xvc2VfbG9nZ2VyIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiB1bml0XG4gIHZhbCBmbHVzaF9sb2dnZXIgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgU3RvcnlTdGF0cyA6IFN0b3J5U3RhdHMgPSBzdHJ1Y3RcbiAgdHlwZSBzdGFja19oZWFkID0ge1xuICAgIGN1cnJlbnRfYnJhbmNoOiBpbnQ7XG4gICAgc2VsZWN0ZWRfZXZlbnRzOiBpbnQ7XG4gICAgcmVtYWluaW5nX2V2ZW50czogaW50O1xuICAgIHJlbW92ZWRfZXZlbnRzOiBpbnQ7XG4gICAgc3RhY2tfc2l6ZTogaW50O1xuICB9XG5cbiAgdHlwZSBzdGVwID0ge1xuICAgIHRhZzogc3RlcF9raW5kO1xuICAgIHNpemVfYmVmb3JlOiBpbnQgb3B0aW9uO1xuICAgIHNpemVfYWZ0ZXI6IGludCBvcHRpb247XG4gICAgdGltZV9zdGFydDogZmxvYXQ7XG4gICAgZHVyYXRpb246IGZsb2F0IG9wdGlvbjtcbiAgICBkZXB0aDogaW50O1xuICB9XG5cbiAgbGV0IGtfZmlyc3QgX3BhcmFtZXRlciBrIGwgPVxuICAgIGxldCByZWMgYXV4IGsgbCBvdXRwdXQgPVxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICBbXSwgTGlzdC5yZXYgb3V0cHV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAoIChsZXQgcmVjIGF1eCBrIG91dHB1dCA9XG4gICAgICAgICAgICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG91dHB1dFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBhdXggKGsgLSAxKSAoXCJcIiA6OiBvdXRwdXQpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBhdXggayBbXSksXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXQgKVxuICAgICAgICB8IHQgOjogcSAtPiBhdXggKGsgLSAxKSBxICh0IDo6IG91dHB1dClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBrIGwgW11cblxuICBsZXQgcHJpbnRfdGFzayBwYXJhbWV0ZXIgKGEsIGIpID1cbiAgICBsZXQgXyA9IHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXIgYS50YWcgaW5cbiAgICBsZXQgdGFiLCBiID0ga19maXJzdCBwYXJhbWV0ZXIgNCBiIGluXG4gICAgbGV0IF8gPSBMaXN0Lml0ZXIgKHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXIpIGIgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKExvZ2dlcnMucHJpbnRfY2VsbCAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKSlcbiAgICAgICAgdGFiXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgKG1hdGNoIGEuc2l6ZV9iZWZvcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgaSAtPiBzdHJpbmdfb2ZfaW50IGkpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgKG1hdGNoIGEuc2l6ZV9hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpIC0+IHN0cmluZ19vZl9pbnQgaSlcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5kdXJhdGlvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSB0aW1lIC0+IHN0cmluZ19vZl9mbG9hdCB0aW1lKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgY2xvc2VfbG9nZ2VyIHBhcmFtZXRlciA9XG4gICAgTG9nZ2Vycy5jbG9zZV9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcblxuICBsZXQgZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciA9XG4gICAgTG9nZ2Vycy5mbHVzaF9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcblxuICB0eXBlIGxvZ19pbmZvID0ge1xuICAgIGdsb2JhbF90aW1lOiBmbG9hdDtcbiAgICBzdG9yeV90aW1lOiBmbG9hdDtcbiAgICBzdGVwX3RpbWU6IGZsb2F0O1xuICAgIGN1cnJlbnRfdGFzazogc3RlcCBsaXN0O1xuICAgIG5leHRfZGVwdGg6IGludDtcbiAgICBicmFuY2g6IGludDtcbiAgICBjdXQ6IGludDtcbiAgICBzdGFjazogc3RhY2tfaGVhZCBsaXN0O1xuICAgIGN1cnJlbnRfc3RhY2s6IHN0YWNrX2hlYWQ7XG4gICAgcHJvcGFnYXRpb246IGludCBhcnJheTtcbiAgICBsYXN0X3RpY2s6IGZsb2F0O1xuICB9XG5cbiAgbGV0IGlzX2R1bW15IHN0ZXBfa2luZCA9XG4gICAgbWF0Y2ggc3RlcF9raW5kIHdpdGhcbiAgICB8IER1bW15IC0+IHRydWVcbiAgICB8IEJlZ2lubmluZyB8IENvbGxlY3RfdHJhY2VzIHwgQ2F1c2FsX2NvbXByZXNzaW9uIHwgV2Vha19jb21wcmVzc2lvblxuICAgIHwgU3Ryb25nX2NvbXByZXNzaW9uIHwgUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24gfCBTaXBob25fZGV0ZWN0aW9uXG4gICAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuICAgIHwgUHNldWRvX2ludmVyc2VfZGVsZXRpb24gfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZVxuICAgIHwgQ29tcHJlc3Npb24gfCBCdWlsZF9ncmlkIHwgQnVpbGRfY29uZmlndXJhdGlvbiB8IFRyYW5zaXRpdmVfY2xvc3VyZVxuICAgIHwgR3JhcGhfcmVkdWN0aW9uIHwgR3JhcGhfY29udmVyc2lvbiB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb25cbiAgICB8IFN0b3JlX3RyYWNlIHwgUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzIHwgQmxhY2tsaXN0aW5nX2V2ZW50c1xuICAgIHwgR2xvYmFsX2luaXRpYWxpemF0aW9uIHwgRG9tYWluc19pbml0aWFsaXphdGlvbiB8IFJlZ3VsYXJfaW5mbHVlbmNlc1xuICAgIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXMgfCBNZXJnZV9pbmZsdWVuY2VzIHwgS2FTaW1fY29tcGlsYXRpb25cbiAgICB8IEthU2FfcHJlY29tcGlsYXRpb24gfCBLYVNhX2xleGluZyB8IEthU2FfbGlua2luZyB8IExLYXBwYV9zaWduYXR1cmVcbiAgICB8IEl0ZXJhdGlvbiBfIHwgU3RvcnkgXyB8IERvbWFpbl9pbml0aWFsaXphdGlvbiBfIHwgQXBwbHlfcnVsZSBfXG4gICAgfCBJbml0aWFsX3N0YXRlIF8gfCBTY2FuX3J1bGVfc3RhdGljIF8gfCBTY2FuX3J1bGVfZHluYW1pYyBfXG4gICAgfCBJbmZsdWVuY2VfbWFwIF8gfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IGFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3Igc3RlcF9raW5kIGYgbG9nX2luZm8gPVxuICAgIGlmIGlzX2R1bW15IHN0ZXBfa2luZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBhZGRfZXZlbnQgc2hvdWxkIG5vdCBiZSBcXFxuICAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgZHVtbXkgZXZlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiRHVtbXkgZXZlbnQgaW4gYWRkX2V2ZW50XCIpICgpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBuZXh0X2RlcHRoID0gbG9nX2luZm8ubmV4dF9kZXB0aCBpblxuICAgICAgbGV0IHRhc2sgPVxuICAgICAgICB7XG4gICAgICAgICAgdGFnID0gc3RlcF9raW5kO1xuICAgICAgICAgIHNpemVfYmVmb3JlID1cbiAgICAgICAgICAgIChtYXRjaCBmIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiBTb21lIChmICgpKSk7XG4gICAgICAgICAgc2l6ZV9hZnRlciA9IE5vbmU7XG4gICAgICAgICAgdGltZV9zdGFydCA9IFN5cy50aW1lICgpO1xuICAgICAgICAgIGR1cmF0aW9uID0gTm9uZTtcbiAgICAgICAgICBkZXB0aCA9IG5leHRfZGVwdGg7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IExvZ2dlcnMub3Blbl9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9jZWxsIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpIFwiU3RhcnRcIlxuICAgICAgaW5cbiAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICB0YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgbG9nX2luZm8uY3VycmVudF90YXNrKVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICBsZXQgXyA9IExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpIGluXG4gICAgICBsZXQgXyA9IGZsdXNoX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlclxuICAgICAgICAgIChzdHJpbmdfb2Zfc3RlcF9raW5kIHN0ZXBfa2luZClcbiAgICAgIGluXG4gICAgICBsZXQgY3VycmVudF90YXNrID0gdGFzayA6OiBsb2dfaW5mby5jdXJyZW50X3Rhc2sgaW5cbiAgICAgIGVycm9yLCB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggKyAxOyBjdXJyZW50X3Rhc2sgfVxuICAgIClcblxuICBsZXQgY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yIHN0ZXBfa2luZCBmIGxvZ19pbmZvID1cbiAgICBpZiBpc19kdW1teSBzdGVwX2tpbmQgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgIFwiSW5jb25zaXN0ZW50IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwgY2xvc2VfZXZlbnQgc2hvdWxkIG5vdCBiZSBcXFxuICAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgZHVtbXkgZXZlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiRHVtbXkgZXZlbnQgaW4gY2xvc2VfZXZlbnRcIikgKClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgaW50ZXJydXB0ZWQgPVxuICAgICAgICBsZXQgbmV4dF9kZXB0aCA9IGxvZ19pbmZvLm5leHRfZGVwdGggaW5cbiAgICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgICAgaWYgbmV4dF9kZXB0aCA9IDEgdGhlblxuICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBkZXB0aCBzaG91bGQgbm90IGJlIGVxdWFsIFxcXG4gICAgICAgICAgICAgICAgIHRvIDEgd2hlbiBjbG9zaW5nIGFuIGV2ZW50XCJcbiAgICAgICAgICAgICAgKEZhaWx1cmUgXCJEZXB0aD0xIGluIGNsb3NlX2V2ZW50XCIpICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsICgpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGxvZ19pbmZvLmN1cnJlbnRfdGFzayB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgIFwiSW5jb25zaXN0ZW50IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwgbm8gY3VycmVudCB0YXNrIHdoZW4gXFxcbiAgICAgICAgICAgICAgIGNsb3NpbmcgYW4gZXZlbnRcIlxuICAgICAgICAgICAgKEZhaWx1cmUgXCJObyBjdXJyZW50IHRhc2tzIGluIGNsb3NlX2V2ZW50XCIpIGxvZ19pbmZvXG4gICAgICAgIHwgY3VycmVudF90YXNrIDo6IHRhaWwgd2hlbiBjdXJyZW50X3Rhc2sudGFnID0gc3RlcF9raW5kIC0+XG4gICAgICAgICAgbGV0IHNpemVfYWZ0ZXIgPVxuICAgICAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiBTb21lIChmICgpKVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgLS4gY3VycmVudF90YXNrLnRpbWVfc3RhcnQgaW5cbiAgICAgICAgICBsZXQgdGFzayA9IHsgY3VycmVudF90YXNrIHdpdGggc2l6ZV9hZnRlcjsgZHVyYXRpb24gPSBTb21lIHRpbWUgfSBpblxuICAgICAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICAgICAgdGFzaywgTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LnRhZykgKExpc3QucmV2IHRhaWwpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAoaWYgaW50ZXJydXB0ZWQgdGhlblxuICAgICAgICAgICAgICAgICBcIkludGVycnVwdGVkXCJcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgXCJFbmRcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHByaW50X3Rhc2sgcGFyYW1ldGVyIHRlcm1pbmF0ZWRfdGFzayBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmNsb3NlX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggLSAxOyBjdXJyZW50X3Rhc2sgPSB0YWlsIH0gKVxuICAgICAgICB8IGN1cnJlbnRfdGFzayA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMub3Blbl9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICAgICAgY3VycmVudF90YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgdGFpbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiSW50ZXJydXB0ZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gICAgICAgICAgYXV4XG4gICAgICAgICAgICB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggLSAxOyBjdXJyZW50X3Rhc2sgPSB0YWlsIH1cbiAgICAgICAgICAgIGVycm9yIHRydWVcbiAgICAgIGluXG4gICAgICBhdXggbG9nX2luZm8gZXJyb3IgZmFsc2VcbiAgICApXG5cbiAgbGV0IGdlbl9vcHQgZ2VuIHBhcmFtZXRlciBlcnJvciBzdGVwX2tpbmQgZiBsb2dfaW5mbyA9XG4gICAgbWF0Y2ggc3RlcF9raW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgfCBTb21lIGUgLT4gZ2VuIHBhcmFtZXRlciBlcnJvciBlIGYgbG9nX2luZm9cblxuICBsZXQgYWRkX2V2ZW50X29wdCA9IGdlbl9vcHQgYWRkX2V2ZW50XG4gIGxldCBjbG9zZV9ldmVudF9vcHQgPSBnZW5fb3B0IGNsb3NlX2V2ZW50XG5cbiAgbGV0IHByb3BhZ2F0aW9uX2xhYmVscyA9XG4gICAgW3xcbiAgICAgIFwiTm9uZVwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMSBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDIgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAzIFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNCBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDUgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA2IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNyBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDggXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA5IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDExXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxMlwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTNcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDE0XCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxNVwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTZcIjtcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEgXCI7XG4gICAgICAoKjE3KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDIgXCI7XG4gICAgICAoKjE4KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDMgXCI7XG4gICAgICAoKjE5KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDQgXCI7XG4gICAgICAoKjIwKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDUgXCI7XG4gICAgICAoKjIxKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDYgXCI7XG4gICAgICAoKjIyKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDcgXCI7XG4gICAgICAoKjIzKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDggXCI7XG4gICAgICAoKjI0KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDkgXCI7XG4gICAgICAoKjI1KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEwXCI7XG4gICAgICAoKjI2KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDExXCI7XG4gICAgICAoKjI3KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEyXCI7XG4gICAgICAoKjI4KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEzXCI7XG4gICAgICAoKjI5KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE0XCI7XG4gICAgICAoKjMwKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE1XCI7XG4gICAgICAoKjMxKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE2XCI7XG4gICAgICAoKjMyKilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAxXCI7XG4gICAgICAoKjMzKilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAyXCI7XG4gICAgICAoKjM0KilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAzXCI7XG4gICAgICAoKjM1KilcbiAgICAgIFwiTG9va191cDogICBjYXNlICA0XCI7XG4gICAgICAoKjM2KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAxXCI7XG4gICAgICAoKjM3KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAyXCI7XG4gICAgICAoKjM4KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAzXCI7XG4gICAgICAoKjM5KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICA0XCI7XG4gICAgICAoKjQwKilcbiAgICB8XVxuXG4gIGxldCBwcm9wYWdhdGlvbl9jYXNlcyA9IEFycmF5Lmxlbmd0aCBwcm9wYWdhdGlvbl9sYWJlbHNcblxuICBsZXQgY29weSBsb2dfaW5mbyA9XG4gICAgeyBsb2dfaW5mbyB3aXRoIHByb3BhZ2F0aW9uID0gQXJyYXkuY29weSBsb2dfaW5mby5wcm9wYWdhdGlvbiB9XG5cbiAgbGV0IGluaXRfbG9nX2luZm8gKCkgPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICB7XG4gICAgICBuZXh0X2RlcHRoID0gMTtcbiAgICAgIGdsb2JhbF90aW1lID0gdGltZTtcbiAgICAgIHN0b3J5X3RpbWUgPSB0aW1lO1xuICAgICAgc3RlcF90aW1lID0gdGltZTtcbiAgICAgIGN1cnJlbnRfdGFzayA9IFtdO1xuICAgICAgcHJvcGFnYXRpb24gPSBBcnJheS5tYWtlIHByb3BhZ2F0aW9uX2Nhc2VzIDA7XG4gICAgICBicmFuY2ggPSAwO1xuICAgICAgY3V0ID0gMDtcbiAgICAgIGN1cnJlbnRfc3RhY2sgPVxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudF9icmFuY2ggPSAwO1xuICAgICAgICAgIHNlbGVjdGVkX2V2ZW50cyA9IDA7XG4gICAgICAgICAgcmVtYWluaW5nX2V2ZW50cyA9IDA7XG4gICAgICAgICAgcmVtb3ZlZF9ldmVudHMgPSAwO1xuICAgICAgICAgIHN0YWNrX3NpemUgPSAwO1xuICAgICAgICB9O1xuICAgICAgc3RhY2sgPSBbXTtcbiAgICAgIGxhc3RfdGljayA9IDAuO1xuICAgIH1cblxuICBsZXQgbG9nX2luZm9fdG9fanNvbiBsb2dfaW5mbyA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiZ2xvYmFsX3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLmdsb2JhbF90aW1lO1xuICAgICAgICBcInN0b3J5X3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIFwic3RlcF90aW1lXCIsIGBGbG9hdCBsb2dfaW5mby5zdGVwX3RpbWU7XG4gICAgICAgIFwibmV4dF9kZXB0aFwiLCBgSW50IGxvZ19pbmZvLm5leHRfZGVwdGg7XG4gICAgICAgIFwiYnJhbmNoXCIsIGBJbnQgbG9nX2luZm8uYnJhbmNoO1xuICAgICAgICBcImN1dFwiLCBgSW50IGxvZ19pbmZvLmN1dDtcbiAgICAgIF1cblxuICBsZXQgZmxvYXRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgRmxvYXQgZiAtPiBmXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZmxvYXRcIiwgeCkpXG5cbiAgbGV0IGludF9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBJbnQgZiAtPiBmXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZmxvYXRcIiwgeCkpXG5cbiAgbGV0IGxvZ19pbmZvX29mX2pzb24geCA9XG4gICAgbGV0IGluaXQgPSBpbml0X2xvZ19pbmZvICgpIGluXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgQXNzb2MgbCB3aGVuIExpc3QubGVuZ3RoIGwgPSA2IC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGluaXQgd2l0aFxuICAgICAgICAgICBnbG9iYWxfdGltZSA9IGZsb2F0X29mX2pzb24gKExpc3QuYXNzb2MgXCJnbG9iYWxfdGltZVwiIGwpO1xuICAgICAgICAgICBzdG9yeV90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0b3J5X3RpbWVcIiBsKTtcbiAgICAgICAgICAgc3RlcF90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0ZXBfdGltZVwiIGwpO1xuICAgICAgICAgICBuZXh0X2RlcHRoID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJuZXh0X2RlcHRoXCIgbCk7XG4gICAgICAgICAgIGJyYW5jaCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiYnJhbmNoXCIgbCk7XG4gICAgICAgICAgIGN1dCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiY3V0XCIgbCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgbG9nX2luZm9cIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGxvZ19pbmZvXCIsIHgpKVxuXG4gIGxldCBkdW1wX3Nob3J0X2xvZyBwYXJhbWV0ZXIgbG9nX2luZm8gPVxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiUmVtYWluaW5nIGV2ZW50czogJWkgOyBTdGFjayBzaXplOiAlaSA7IFwiXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2sucmVtYWluaW5nX2V2ZW50c1xuICAgICAgICBsb2dfaW5mby5jdXJyZW50X3N0YWNrLnN0YWNrX3NpemVcbiAgICBpblxuICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgXCJUb3RhbCBicmFuY2g6ICVpIDsgVG90YWwgY3V0OiAlaSA7IEN1cnJlbnQgZGVwdGg6ICVpIEAuXCIgbG9nX2luZm8uYnJhbmNoXG4gICAgICBsb2dfaW5mby5jdXQgbG9nX2luZm8uY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaFxuXG4gIGxldCByZXNldF9sb2cgbG9nID1cbiAgICBsZXQgdCA9IGxvZy5wcm9wYWdhdGlvbiBpblxuICAgIGxldCBfID0gQXJyYXkuZmlsbCB0IDAgKEFycmF5Lmxlbmd0aCB0KSAwIGluXG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHsgbG9nIHdpdGggc3RlcF90aW1lID0gdGltZTsgc3RvcnlfdGltZSA9IHRpbWUgfVxuXG4gIGxldCBwcm9wYWdhdGVfdXAgaSA9IGlcbiAgbGV0IHByb3BhZ2F0ZV9kb3duIGkgPSBpICsgMTZcbiAgbGV0IGxvb2tfdXAgaSA9IGkgKyAzMlxuICBsZXQgbG9va19kb3duIGkgPSBpICsgMzZcblxuICBsZXQgZWxsYXBzZWRfdGltZSBsb2cgPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICB0aW1lIC0uIGxvZy5zdG9yeV90aW1lXG5cbiAgbGV0IGVsbGFwc2VkX2dsb2JhbF90aW1lIGxvZyA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHRpbWUgLS4gbG9nLmdsb2JhbF90aW1lXG5cbiAgbGV0IHNldF90aW1lIGxvZyA9XG4gICAgeyBsb2cgd2l0aCBzdG9yeV90aW1lID0gU3lzLnRpbWUgKCk7IHN0ZXBfdGltZSA9IFN5cy50aW1lICgpIH1cblxuICBsZXQgc2V0X3N0ZXBfdGltZSBsb2cgPSB7IGxvZyB3aXRoIHN0ZXBfdGltZSA9IFN5cy50aW1lICgpIH1cbiAgbGV0IHNldF9zdGFydF9jb21wcmVzc2lvbiA9IHNldF90aW1lXG5cbiAgbGV0IHNldF9zdG9yeV9yZXNlYXJjaF90aW1lIGxvZyA9XG4gICAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICAgIGxldCBzdCA9IGxvZy5zdGVwX3RpbWUgaW5cbiAgICB7IGxvZyB3aXRoIHN0b3J5X3RpbWUgPSB0IC0uIHN0OyBzdGVwX3RpbWUgPSB0IH1cblxuICBsZXQgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgbG9nID0gbG9nXG4gIGxldCBzZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZyA9IGxvZ1xuICBsZXQgc2V0X2dyaWRfZ2VuZXJhdGlvbiBsb2cgPSBsb2dcbiAgbGV0IHNldF9jYW5vbmljYWxpc2F0aW9uIGxvZyA9IGxvZ1xuXG4gIGxldCBhZGRfY2FzZSBpIGxvZyA9XG4gICAgbGV0IHQgPSBsb2cucHJvcGFnYXRpb24gaW5cbiAgICBsZXQgXyA9IHQuKGkpIDwtIHQuKGkpICsgMSBpblxuICAgIGxvZ1xuXG4gIGxldCBhZGRfbG9va19kb3duX2Nhc2UgaSA9IGFkZF9jYXNlIChsb29rX2Rvd24gaSlcbiAgbGV0IGFkZF9sb29rX3VwX2Nhc2UgaSA9IGFkZF9jYXNlIChsb29rX3VwIGkpXG4gIGxldCBhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIGkgPSBhZGRfY2FzZSAocHJvcGFnYXRlX2Rvd24gaSlcbiAgbGV0IGFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIGkgPSBhZGRfY2FzZSAocHJvcGFnYXRlX3VwIGkpXG5cbiAgbGV0IGluY19jdXQgbG9nID1cbiAgICBtYXRjaCBsb2cuc3RhY2sgd2l0aFxuICAgIHwgW10gLT4gbG9nXG4gICAgfCB0IDo6IHEgLT4geyBsb2cgd2l0aCBjdXJyZW50X3N0YWNrID0gdDsgc3RhY2sgPSBxOyBjdXQgPSBsb2cuY3V0ICsgMSB9XG5cbiAgbGV0IGluY19icmFuY2ggbG9nID1cbiAgICB7XG4gICAgICBsb2cgd2l0aFxuICAgICAgc3RhY2sgPSBsb2cuY3VycmVudF9zdGFjayA6OiBsb2cuc3RhY2s7XG4gICAgICBicmFuY2ggPSBsb2cuYnJhbmNoICsgMTtcbiAgICAgIGN1cnJlbnRfc3RhY2sgPVxuICAgICAgICB7XG4gICAgICAgICAgbG9nLmN1cnJlbnRfc3RhY2sgd2l0aFxuICAgICAgICAgIGN1cnJlbnRfYnJhbmNoID0gbG9nLmN1cnJlbnRfc3RhY2suY3VycmVudF9icmFuY2ggKyAxO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgaW5jX25fa2FzaW1fZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25fb2JzX2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19uX3NpZGVfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25faW5pdF9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfY3V0X2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19rX2N1dF9ldmVudHMgX2sgbG9nID0gbG9nXG4gIGxldCByZXNldF9jdXRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX3NlbGVjdGVkX2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19yZW1vdmVkX2V2ZW50cyBsb2cgPSBsb2dcblxuICBsZXQgZHVtcF9jb21wbGV0ZV9sb2cgcGFyYW1ldGVyIGxvZ19pbmZvID1cbiAgICBsZXQgbG9nZ2VyID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiLypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiU3RvcnkgcHJvZmlsaW5nXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJFbGxhcHNlZF90aW1lOiAgICAgICAgICAgICAgICAgICVmXCJcbiAgICAgICAgKGVsbGFwc2VkX3RpbWUgbG9nX2luZm8pXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJTdG9yeSByZXNlYXJjaCB0aW1lOiAgICAgICAgICAgICVmXCJcbiAgICAgICAgbG9nX2luZm8uc3RvcnlfdGltZVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiRXhwbG9yYXRpb24gZGVwdGg6ICAgICAgICAgICAgICAlaVwiXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2suY3VycmVudF9icmFuY2hcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkV4cGxvcmF0aW9uIGN1dHM6ICAgICAgICAgICAgICAgJWlcIiBsb2dfaW5mby5jdXRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiKioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIlByb3BhZ2F0aW9uIEhpdHM6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID49IHByb3BhZ2F0aW9uX2Nhc2VzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiICAgICAgICAlcyAlaVwiIHByb3BhZ2F0aW9uX2xhYmVscy4oaylcbiAgICAgICAgICAgICAgbG9nX2luZm8ucHJvcGFnYXRpb24uKGspXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChrICsgMSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBfID0gYXV4IDEgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiKi9cIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAoKVxuXG4gIGxldCB0aWNrIGxvZ19pbmZvID1cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgaWYgdGltZSAtLiBsb2dfaW5mby5sYXN0X3RpY2sgPiA2MDAuIHRoZW5cbiAgICAgIHRydWUsIHsgbG9nX2luZm8gd2l0aCBsYXN0X3RpY2sgPSB0aW1lIH1cbiAgICBlbHNlXG4gICAgICBmYWxzZSwgbG9nX2luZm9cblxuICBsZXQgc2V0X2dsb2JhbF9jdXQgX24gbG9nX2luZm8gPSBsb2dfaW5mb1xuICBsZXQgc2V0X3BzZXVkb19pbnYgX24gbG9nX2luZm8gPSBsb2dfaW5mb1xuZW5kXG4iLCIoKipcbiAgIFRpbWUtc3RhbXA6IDxGZWIgMjIgMjAxOD5cbiopXG5cbm1vZHVsZSB0eXBlIFNldF93aXRoX2xvZ3MgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCBpc19zaW5nbGV0b24gOiB0IC0+IGJvb2xcblxuICB2YWwgYWRkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCBhZGRfd2hlbl9ub3RfaW4gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB0XG5cbiAgdmFsIHJlbW92ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHRcblxuICB2YWwgbWludXMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCB1bmlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB0XG5cbiAgdmFsIGRpc2pvaW50X3VuaW9uIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHRcblxuICB2YWwgaW50ZXIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCBkaWZmIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHRcblxuICB2YWwgY2FyZGluYWwgOiB0IC0+IGludFxuICB2YWwgbWVtIDogZWx0IC0+IHQgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIHBhcnRpdGlvbiA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIHN1YnNldCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBmb2xkX2ludiA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGVsZW1lbnRzIDogdCAtPiBlbHQgbGlzdFxuICB2YWwgY2hvb3NlIDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwX3dpdGhfbG9ncyA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHNldFxuICB0eXBlICsnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IChlbHQgKiAnYSkgb3B0aW9uXG4gIHZhbCBtZW0gOiBlbHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgdmFsIGZpbmRfb3B0aW9uIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2Egb3B0aW9uXG5cbiAgdmFsIGZpbmRfZGVmYXVsdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2FcblxuICB2YWwgZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2FcblxuICB2YWwgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2Egb3B0aW9uXG5cbiAgdmFsIGFkZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgdFxuXG4gIHZhbCBvdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIHRcblxuICB2YWwgYWRkX29yX292ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgdFxuXG4gIHZhbCByZW1vdmUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSB0XG5cbiAgdmFsIHJlbW92ZV9vcl9ub3QgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSB0XG5cbiAgdmFsIHVwZGF0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSB0XG5cbiAgdmFsIG1hcDIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYyB0XG5cbiAgdmFsIG1hcDJ6IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgdFxuXG4gIHZhbCBmb2xkMnogOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2NcblxuICB2YWwgZm9sZDIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjXG5cbiAgdmFsIGZvbGQyX3NwYXJzZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnY1xuXG4gIHZhbCBpdGVyMl9zcGFyc2UgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG5cbiAgdmFsIGRpZmYgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgdCAqICdhIHRcblxuICB2YWwgZGlmZl9wcmVkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICgnYSAtPiAnYSAtPiBib29sKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIHQgKiAnYSB0XG5cbiAgdmFsIG1lcmdlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIHRcblxuICB2YWwgdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgdFxuXG4gIHZhbCBmb2xkX3Jlc3RyaWN0aW9uIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIChlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYikgLT5cbiAgICBzZXQgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2JcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIChlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYikgLT5cbiAgICAoZWx0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYlxuXG4gIHZhbCBpdGVyIDogKGVsdCAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcblxuICB2YWwgaXRlcjIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0KSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCkgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCkgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgdmFsIG1hcGkgOiAoZWx0IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlcl9vbmUgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgYmluZGluZ3MgOiAnYSB0IC0+IChlbHQgKiAnYSkgbGlzdFxuXG4gIHZhbCBvZl9qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgID9lcnJvcl9tc2c6c3RyaW5nIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+IGVsdCkgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gJ3ZhbHVlKSAtPlxuICAgIFlvanNvbi5CYXNpYy50IC0+XG4gICAgJ3ZhbHVlIHRcblxuICB2YWwgdG9fanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICAoZWx0IC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICgndmFsdWUgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgJ3ZhbHVlIHQgLT5cbiAgICBZb2pzb24uQmFzaWMudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aF9sb2dzID0gc2lnXG4gIHR5cGUgZWx0XG5cbiAgbW9kdWxlIFNldCA6IFNldF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IGVsdFxuICBtb2R1bGUgTWFwIDogTWFwX3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gZWx0IGFuZCB0eXBlIHNldCA9IFNldC50XG5lbmRcblxubGV0IGxpZnQgZiA9IGYgRXhjZXB0aW9uLndyYXBcblxubW9kdWxlIE1ha2UgKFNfYm90aCA6IFNldE1hcC5TKSA6XG4gIFNfd2l0aF9sb2dzXG4gICAgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICAgYW5kIHR5cGUgJ2EgTWFwLnQgPSAnYSBTX2JvdGguTWFwLnRcbiAgICAgYW5kIHR5cGUgU2V0LnQgPSBTX2JvdGguU2V0LnQgPSBzdHJ1Y3RcbiAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG5cbiAgbW9kdWxlIFNldCA6XG4gICAgU2V0X3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdCBhbmQgdHlwZSB0ID0gU19ib3RoLlNldC50ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgdHlwZSB0ID0gU19ib3RoLlNldC50XG5cbiAgICBsZXQgZW1wdHkgPSBTX2JvdGguU2V0LmVtcHR5XG4gICAgbGV0IGlzX2VtcHR5ID0gU19ib3RoLlNldC5pc19lbXB0eVxuICAgIGxldCBzaW5nbGV0b24gPSBTX2JvdGguU2V0LnNpbmdsZXRvblxuICAgIGxldCBpc19zaW5nbGV0b24gPSBTX2JvdGguU2V0LmlzX3NpbmdsZXRvblxuICAgIGxldCBhZGQgPSBsaWZ0IFNfYm90aC5TZXQuYWRkX3dpdGhfbG9nc1xuXG4gICAgbGV0IGFkZF93aGVuX25vdF9pbiBwIGUgeCBzID1cbiAgICAgIGxldCBlLCBfLCBzID0gKGxpZnQgU19ib3RoLlNldC5hZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MpIHAgZSB4IHMgaW5cbiAgICAgIGUsIHNcblxuICAgIGxldCByZW1vdmUgPSBsaWZ0IFNfYm90aC5TZXQucmVtb3ZlX3dpdGhfbG9nc1xuICAgIGxldCB1bmlvbiA9IGxpZnQgU19ib3RoLlNldC51bmlvbl93aXRoX2xvZ3NcbiAgICBsZXQgZGlzam9pbnRfdW5pb24gPSBsaWZ0IFNfYm90aC5TZXQuZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzXG4gICAgbGV0IGludGVyID0gbGlmdCBTX2JvdGguU2V0LmludGVyX3dpdGhfbG9nc1xuICAgIGxldCBkaWZmID0gbGlmdCBTX2JvdGguU2V0LmRpZmZfd2l0aF9sb2dzXG4gICAgbGV0IG1pbnVzID0gbGlmdCBTX2JvdGguU2V0Lm1pbnVzX3dpdGhfbG9nc1xuICAgIGxldCBjYXJkaW5hbCA9IFNfYm90aC5TZXQuc2l6ZVxuICAgIGxldCBtZW0gPSBTX2JvdGguU2V0Lm1lbVxuICAgIGxldCBleGlzdHMgPSBTX2JvdGguU2V0LmV4aXN0c1xuICAgIGxldCBmaWx0ZXIgPSBTX2JvdGguU2V0LmZpbHRlclxuICAgIGxldCBmb3JfYWxsID0gU19ib3RoLlNldC5mb3JfYWxsXG4gICAgbGV0IHBhcnRpdGlvbiA9IFNfYm90aC5TZXQucGFydGl0aW9uXG4gICAgbGV0IGNvbXBhcmUgPSBTX2JvdGguU2V0LmNvbXBhcmVcbiAgICBsZXQgZXF1YWwgPSBTX2JvdGguU2V0LmVxdWFsXG4gICAgbGV0IHN1YnNldCA9IFNfYm90aC5TZXQuc3Vic2V0XG4gICAgbGV0IGl0ZXIgPSBTX2JvdGguU2V0Lml0ZXJcbiAgICBsZXQgZm9sZCA9IFNfYm90aC5TZXQuZm9sZFxuICAgIGxldCBmb2xkX2ludiA9IFNfYm90aC5TZXQuZm9sZF9pbnZcbiAgICBsZXQgZWxlbWVudHMgPSBTX2JvdGguU2V0LmVsZW1lbnRzXG4gICAgbGV0IGNob29zZSA9IFNfYm90aC5TZXQuY2hvb3NlXG4gICAgbGV0IG1pbl9lbHQgPSBTX2JvdGguU2V0Lm1pbl9lbHRcbiAgICBsZXQgbWF4X2VsdCA9IFNfYm90aC5TZXQubWF4X2VsdFxuICBlbmRcblxuICBtb2R1bGUgTWFwIDpcbiAgICBNYXBfd2l0aF9sb2dzXG4gICAgICB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgICAgIGFuZCB0eXBlICdhIHQgPSAnYSBTX2JvdGguTWFwLnRcbiAgICAgICBhbmQgdHlwZSBzZXQgPSBTX2JvdGguU2V0LnRcbiAgICAgICBhbmQgdHlwZSBzZXQgPSBTZXQudCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgIHR5cGUgc2V0ID0gU19ib3RoLlNldC50XG4gICAgdHlwZSArJ2RhdGEgdCA9ICdkYXRhIFNfYm90aC5NYXAudFxuXG4gICAgbGV0IGVtcHR5ID0gU19ib3RoLk1hcC5lbXB0eVxuICAgIGxldCBpc19lbXB0eSA9IFNfYm90aC5NYXAuaXNfZW1wdHlcbiAgICBsZXQgbWluX2VsdCA9IFNfYm90aC5NYXAubWluX2VsdFxuICAgIGxldCBtZW0gPSBTX2JvdGguTWFwLm1lbVxuICAgIGxldCBmaW5kX29wdGlvbiBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmZpbmRfb3B0aW9uX3dpdGhfbG9ncyBhIGIgYyBkXG4gICAgbGV0IGZpbmRfZGVmYXVsdCBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmZpbmRfZGVmYXVsdF93aXRoX2xvZ3MgYSBiIGMgZFxuICAgIGxldCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgX2EgYiBjIGQgPSBiLCBTX2JvdGguTWFwLmZpbmRfb3B0aW9uIGMgZFxuICAgIGxldCBmaW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIF9hIGIgYyBkIGUgPSBiLCBTX2JvdGguTWFwLmZpbmRfZGVmYXVsdCBjIGQgZVxuICAgIGxldCBhZGQgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5hZGRfd2l0aF9sb2dzIGEgYiBjIGRcblxuICAgIGxldCBvdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGMgZCBlID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLmFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyBwYXJhbWV0ZXIgZXJyb3IgYyBkIGVcbiAgICAgIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcImF0dGVtcHQgdG8gb3ZlcndyaXRlIGFuIGFzc29jaWF0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3RcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQXR0ZW1wdCB0byBvdmVyd3JpdGUgYW4gYXNzb2NpYXRpb24gdGhhdCBkb2VzIG5vdCBleGlzdFwiKVxuICAgICAgICAgIG1hcFxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgYWRkX29yX292ZXJ3cml0ZSBhIGIgYyBkIGUgPVxuICAgICAgbGV0IGVycm9yLCBfLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAuYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIGEgYiBjIGQgZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBtYXBcblxuICAgIGxldCByZW1vdmUgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5yZW1vdmVfd2l0aF9sb2dzIGEgYiBjIGRcblxuICAgIGxldCByZW1vdmVfb3Jfbm90IGEgYiBjIGQgPVxuICAgICAgbGV0IGVycm9yLCBfLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAucmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIGEgYiBjIGRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgdXBkYXRlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLnVwZGF0ZV93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWFwMiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tYXAyX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBtYXAyeiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tYXAyel93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZm9sZDJ6IGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmZvbGQyel93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZm9sZDIgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZm9sZDJfd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgaXRlcjIgcGFyYW1ldGVyIGVycm9yIGYgZyBoIG1hcGYgbWFwZyA9XG4gICAgICBmc3RcbiAgICAgICAgKFNfYm90aC5NYXAuZm9sZDJfd2l0aF9sb2dzIEV4Y2VwdGlvbi53cmFwIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAoZnVuIGEgYiBjIGQgKCkgLT4gZiBhIGIgYyBkLCAoKSlcbiAgICAgICAgICAgKGZ1biBhIGIgYyBkICgpIC0+IGcgYSBiIGMgZCwgKCkpXG4gICAgICAgICAgIChmdW4gYSBiIGMgZCBlICgpIC0+IGggYSBiIGMgZCBlLCAoKSlcbiAgICAgICAgICAgbWFwZiBtYXBnICgpKVxuXG4gICAgbGV0IGZvbGQyX3NwYXJzZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5mb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGl0ZXIyX3NwYXJzZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5pdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGRpZmYgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZGlmZl93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZGlmZl9wcmVkIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmRpZmZfcHJlZF93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWVyZ2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWVyZ2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IHVuaW9uIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLnVuaW9uX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGZvbGRfcmVzdHJpY3Rpb24gYSBiIGMgPVxuICAgICAgbGlmdCBTX2JvdGguTWFwLmZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zIGEgYiBjID1cbiAgICAgIGxpZnQgU19ib3RoLk1hcC5mb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgaXRlciA9IFNfYm90aC5NYXAuaXRlclxuICAgIGxldCBmb2xkID0gU19ib3RoLk1hcC5mb2xkXG4gICAgbGV0IG1hcGkgPSBTX2JvdGguTWFwLm1hcGlcbiAgICBsZXQgbWFwID0gU19ib3RoLk1hcC5tYXBcbiAgICBsZXQgZm9yX2FsbCA9IFNfYm90aC5NYXAuZm9yX2FsbFxuICAgIGxldCBmaWx0ZXJfb25lID0gU19ib3RoLk1hcC5maWx0ZXJfb25lXG4gICAgbGV0IGNvbXBhcmUgPSBTX2JvdGguTWFwLmNvbXBhcmVcbiAgICBsZXQgZXF1YWwgPSBTX2JvdGguTWFwLmVxdWFsXG4gICAgbGV0IGJpbmRpbmdzID0gU19ib3RoLk1hcC5iaW5kaW5nc1xuICAgIGxldCB0b19qc29uID0gU19ib3RoLk1hcC50b19qc29uXG4gICAgbGV0IG9mX2pzb24gPSBTX2JvdGguTWFwLm9mX2pzb25cbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgc2V0X2FcbiAgdHlwZSBzZXRfYlxuXG4gIHZhbCBwcm9qX21hcCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2IgLT5cbiAgICAoJ2IgLT4gJ2EgLT4gJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IgbWFwX2JcblxuICB2YWwgbW9uYWRpY19wcm9qX21hcCA6XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IgbWFwX2JcblxuICB2YWwgbW9uYWRpY19wcm9qX21hcF9pIDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdiIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2IgLT5cbiAgICBlbHRfYSAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiIG1hcF9iXG5cbiAgdmFsIHByb2pfc2V0IDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBzZXRfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfc2V0IDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHNldF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXQgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHNldF9hIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcGFydGl0aW9uX3NldCA6XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBzZXRfYSBtYXBfYlxuZW5kXG5cbm1vZHVsZSBQcm9qIChBIDogU193aXRoX2xvZ3MpIChCIDogU193aXRoX2xvZ3MpIDpcbiAgUHJvamVjdGlvblxuICAgIHdpdGggdHlwZSBlbHRfYSA9IEEuZWx0XG4gICAgIGFuZCB0eXBlIGVsdF9iID0gQi5lbHRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2EgPSAnYSBBLk1hcC50XG4gICAgIGFuZCB0eXBlICdhIG1hcF9iID0gJ2EgQi5NYXAudFxuICAgICBhbmQgdHlwZSBzZXRfYSA9IEEuU2V0LnRcbiAgICAgYW5kIHR5cGUgc2V0X2IgPSBCLlNldC50ID0gc3RydWN0XG4gIG1vZHVsZSBNQSA9IEEuTWFwXG4gIG1vZHVsZSBNQiA9IEIuTWFwXG4gIG1vZHVsZSBTQSA9IEEuU2V0XG4gIG1vZHVsZSBTQiA9IEIuU2V0XG5cbiAgdHlwZSBlbHRfYSA9IE1BLmVsdFxuICB0eXBlIGVsdF9iID0gTUIuZWx0XG4gIHR5cGUgc2V0X2EgPSBTQS50XG4gIHR5cGUgc2V0X2IgPSBTQi50XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG5cbiAgbGV0IHByb2pfbWFwIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYlxuICAgICAgICAgICAgKG1lcmdlIGlkZW50aXR5X2VsdCBkYXRhX2EpXG4gICAgICAgICAgICBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIChtZXJnZSBvbGQgZGF0YV9hKSBtYXBfYilcbiAgICAgIG1hcCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3Byb2pfbWFwX2kgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXlfYiA9IGYgcGFyYW1ldGVyIGVycm9yIGtleV9hIGluXG4gICAgICAgIG1hdGNoIE1CLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgbWFwX2Igd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IG1lcmdlIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQga2V5X2EgZGF0YV9hIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2JcbiAgICAgICAgfCBlcnJvciwgU29tZSBvbGQgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gbWVyZ2UgcGFyYW1ldGVyIGVycm9yIG9sZCBrZXlfYSBkYXRhX2EgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYilcbiAgICAgIG1hcCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3Byb2pfbWFwIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIG1vbmFkaWNfcHJval9tYXBfaSBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHRcbiAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIG9sZCBfIGRhdGFfYSAtPiBtZXJnZSBwYXJhbWV0ZXIgZXJyb3Igb2xkIGRhdGFfYSlcbiAgICAgIG1hcFxuXG4gIGxldCBwYXJ0aXRpb25fc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldCA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIG1hdGNoIE1CLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgbWFwX2Igd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgKFNBLnNpbmdsZXRvbiBrZXlfYSkgbWFwX2JcbiAgICAgICAgfCBlcnJvciwgU29tZSBvbGQgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG5ld3NldCA9IFNBLmFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Egb2xkIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgbmV3c2V0IG1hcF9iKVxuICAgICAgc2V0IChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcGFydGl0aW9uX3NldCBmIHBhcmFtZXRlciBlcnJvciBzZXQgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXlfYiA9IGYgcGFyYW1ldGVyIGVycm9yIGtleV9hIGluXG4gICAgICAgIG1hdGNoIE1CLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgbWFwX2Igd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IGVycm9yLCBTQS5zaW5nbGV0b24ga2V5X2EgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBTQS5hZGRfd2hlbl9ub3RfaW4gcGFyYW1ldGVyIGVycm9yIGtleV9hIG9sZCBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iKVxuICAgICAgc2V0IChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IHByb2pfc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgc2V0X2IpIC0+XG4gICAgICAgIFNCLmFkZF93aGVuX25vdF9pbiBwYXJhbWV0ZXIgZXJyb3IgKGYga2V5X2EpIHNldF9iKVxuICAgICAgc2V0X2EgKGVycm9yLCBTQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wcm9qX3NldCBmIHBhcmFtZXRlciBlcnJvciBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIHNldF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgU0IuYWRkX3doZW5fbm90X2luIHBhcmFtZXRlciBlcnJvciBrZXlfYiBzZXRfYilcbiAgICAgIHNldF9hIChlcnJvciwgU0IuZW1wdHkpXG5lbmRcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbjIgPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgZWx0X2NcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgJ2EgbWFwX2NcblxuICB2YWwgcHJvajIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYiBtYXBfYyBtYXBfYlxuXG4gIHZhbCBwcm9qMl9tb25hZGljIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdtdmJkdV9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdtdmJkdV9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnbXZiZHVfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdtdmJkdV9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvajIgKEEgOiBTX3dpdGhfbG9ncykgKEIgOiBTX3dpdGhfbG9ncykgKEMgOiBTX3dpdGhfbG9ncykgOlxuICBQcm9qZWN0aW9uMlxuICAgIHdpdGggdHlwZSBlbHRfYSA9IEEuZWx0XG4gICAgIGFuZCB0eXBlIGVsdF9iID0gQi5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2MgPSBDLmVsdFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYSA9ICdhIEEuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2IgPSAnYSBCLk1hcC50XG4gICAgIGFuZCB0eXBlICdhIG1hcF9jID0gJ2EgQy5NYXAudCA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgTUMgPSBDLk1hcFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIGVsdF9jID0gTUMuZWx0XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG4gIHR5cGUgJ2EgbWFwX2MgPSAnYSBNQy50XG5cbiAgbGV0IHByb2oyIHBhcmFtZXRlciBlcnJvciBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBlcnJvciwgc3VibWFwID1cbiAgICAgICAgICBNQi5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBNQy5lbXB0eSBrZXlfYiBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGZpbmRfZGVmYXVsdCA9XG4gICAgICAgICAgTUMuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIHN1Ym1hcCA9XG4gICAgICAgICAgTUMuYWRkIHBhcmFtZXRlciBlcnJvciBrZXlfY1xuICAgICAgICAgICAgKG1lcmdlIHBhcmFtZXRlciBlcnJvciBmaW5kX2RlZmF1bHQgZGF0YV9hKVxuICAgICAgICAgICAgc3VibWFwXG4gICAgICAgIGluXG4gICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBwcm9qMl9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIG12YmR1X2hhbmRsZXIgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBzdWJtYXAgPVxuICAgICAgICAgIE1CLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGhhbmRsZXIgTUMuZW1wdHkga2V5X2IgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGZpbmRfZGVmYXVsdCA9XG4gICAgICAgICAgTUMuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgaGFuZGxlciBpZGVudGl0eV9lbHQga2V5X2NcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1lcmdlIHBhcmFtZXRlciBoYW5kbGVyIG12YmR1X2hhbmRsZXIgZmluZF9kZWZhdWx0IGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgc3VibWFwID0gTUMuYWRkIHBhcmFtZXRlciBoYW5kbGVyIGtleV9jIGRhdGEnIHN1Ym1hcCBpblxuICAgICAgICBsZXQgaGFuZGxlciwgYWRkID1cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGtleV9iIHN1Ym1hcCBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBhZGQpXG4gICAgICBtYXBcbiAgICAgIChoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuIiwiKCoqXG4gICogZmlmby5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDIwMTUsIHRoZSAyN3RoIG9mIEp1bHlcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEF1ZyAwNiAyMDE2PlxuICAqXG4gICogV29yayBsaXN0IC0gRklGT1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm9wZW4gU2V0TWFwXG5cbmxldCBsb2NhbF90cmFjZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIFdvcmtfbGlzdCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuXG4gIHZhbCBwdXNoIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCBwb3AgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAoZWx0IG9wdGlvbiAqIHQpXG5cbiAgdmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBlbHQgLT4gJ2EpIC0+ICdhIC0+IHQgLT4gJ2FcbiAgdmFsIHByaW50X3dsIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgV2xNYWtlIChPcmQgOiBPcmRlcmVkVHlwZSB3aXRoIHR5cGUgdCA9IGludCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdTZXRNYXAgPSBNYXBfd3JhcHBlci5NYWtlIChTZXRNYXAuTWFrZSAoT3JkKSlcbiAgbW9kdWxlIFdTZXQgPSBXU2V0TWFwLlNldFxuXG4gIHR5cGUgZWx0ID0gT3JkLnRcbiAgdHlwZSB0ID0gZWx0IGxpc3QgKiBlbHQgbGlzdCAqIFdTZXQudFxuXG4gIGxldCBlbXB0eSA9IFtdLCBbXSwgV1NldC5lbXB0eVxuXG4gIGxldCBpc19lbXB0eSB4ID1cbiAgICBsZXQgXywgXywgcG9vbCA9IHggaW5cbiAgICBXU2V0LmlzX2VtcHR5IHBvb2xcblxuICBsZXQgcHVzaCBwYXJhbWV0ZXIgZXJyb3IgZSB4ID1cbiAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgaWYgV1NldC5tZW0gZSBwb29sIHRoZW5cbiAgICAgIGVycm9yLCB4XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3InLCBhZGRfZWx0ID0gV1NldC5hZGQgcGFyYW1ldGVyIGVycm9yIGUgcG9vbCBpblxuICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgRXhjZXB0aW9uLmNoZWNrX3BvaW50IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgX19QT1NfXyBFeGl0XG4gICAgICBpblxuICAgICAgZXJyb3IsIChlIDo6IGluX2xpc3QsIG91dF9saXN0LCBhZGRfZWx0KVxuICAgIClcblxuICBsZXQgZm9sZF9sZWZ0IGYgYWNjIHggPVxuICAgIGxldCBpbl9saXN0LCBvdXRfbGlzdCwgXyA9IHggaW5cbiAgICBMaXN0LmZvbGRfbGVmdCBmIChMaXN0LmZvbGRfbGVmdCBmIGFjYyBvdXRfbGlzdCkgKExpc3QucmV2IGluX2xpc3QpXG5cbiAgbGV0IHByaW50X3dsIHBhcmFtZXRlcnMgd2wgPVxuICAgICgqbGV0IF8gPSBmb2xkX2xlZnRcbiAgICAgIChmdW4gICgpIGEgLT4gUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXJzKSBcIiVpIFwiIGEpXG4gICAgICAoKSB3bFxuICAgICAgaW5cbiAgICAgICgqcHJpbnRfbmV3bGluZSgpKilcbiAgICAgIGxldCBfID0gcHJpbnRfbmV3bGluZSAoKSBpbiopXG4gICAgbGV0IF8sIF8sIHNldCA9IHdsIGluXG4gICAgV1NldC5pdGVyXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlaSBcIiBpKVxuICAgICAgc2V0O1xuICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiXFxuXCJcblxuICBsZXQgcmVjIHBvcCBwYXJhbWV0ZXIgZXJyb3IgeCA9XG4gICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBwb29sID0geCBpblxuICAgIGlmIGlzX2VtcHR5IHggdGhlblxuICAgICAgZXJyb3IsIChOb25lLCB4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggb3V0X2xpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBwb3AgcGFyYW1ldGVyIGVycm9yIChbXSwgTGlzdC5yZXYgaW5fbGlzdCwgcG9vbClcbiAgICAgIHwgaCA6OiB0bCAtPlxuICAgICAgICBsZXQgZXJyb3IsIHJlbW92ZV9lbHQgPSBXU2V0LnJlbW92ZSBwYXJhbWV0ZXIgZXJyb3IgaCBwb29sIGluXG4gICAgICAgIGVycm9yLCAoU29tZSBoLCAoaW5fbGlzdCwgdGwsIHJlbW92ZV9lbHQpKVxuICAgIClcblxuICAoKmZvciBkZWJ1ZyopXG4gICgqIGxldCByZWMgcG9wIHBhcmFtZXRlciBlcnJvciB4ID1cbiAgICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBwb29sID0geCBpblxuICAgICBpZiBpc19lbXB0eSB4XG4gICAgIHRoZW5cbiAgICAgZXJyb3IsIChOb25lLCB4KVxuICAgICBlbHNlXG4gICAgIGJlZ2luXG4gICAgIG1hdGNoIG91dF9saXN0IHdpdGhcbiAgICAgfCBbXSAtPiBwb3AgcGFyYW1ldGVyIGVycm9yIChbXSwgKExpc3QucmV2IGluX2xpc3QpLCBwb29sKVxuICAgICB8IGggOjogdGwgLT5cbiAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXIpXG4gICAgIFwiQkVGT1JFIFJFTU9WRSAlaSBcIiBoIGluXG4gICAgIGxldCBfID0gIFdTZXQuaXRlciAoZnVuIGkgLT5cbiAgICAgUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXIpIFwiJWkgXCIgaSkgcG9vbCBpblxuICAgICBsZXQgZXJyb3IscmVtb3ZlX2VsdCA9IFdTZXQucmVtb3ZlIHBhcmFtZXRlciBlcnJvciBoIHBvb2wgaW5cbiAgICAgbGV0IF8gPSAgV1NldC5pdGVyIChmdW4gaSAtPlxuICAgICBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcikgXCIlaSBcIiBpKSByZW1vdmVfZWx0XG4gICAgIGluXG4gICAgIGVycm9yLCAoKFNvbWUgaCksIChpbl9saXN0LCB0bCwgcmVtb3ZlX2VsdCkpXG4gICAgIGVuZCopXG5cbiAgKCpmb3IgZGVidWcqKVxuICAoKmxldCBwdXNoIHAgZSBmIHggPVxuICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJCRUZPUkUgUFVVU0ggJWlcXG4gXCIgZiBpblxuICAgIGxldCBfID0gcHJpbnRfd2wgcCB4IGluXG4gICAgbGV0IGVycm9yLHdsID0gcHVzaCBwIGUgZiB4IGluXG4gICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHApIFwiT1VUUFVUXFxuXCIgaW5cbiAgICBsZXQgXyA9IHByaW50X3dsIHAgd2wgaW5cbiAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJcXG5cIiBpblxuICAgIGVycm9yLHdsICopXG5lbmRcblxubW9kdWxlIEludFdMID0gTW9kcy5JbnRNYXBcbiIsIigqKlxuICAgKiBpbnRfc3RvcmFnZS5tbFxuICAgKlxuICAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTAtMDctMjcgZmVyZXQ+XG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXByIDEzIDIwMTg+XG4gICAqXG4gICAqIG9wZW5rYXBwYVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICpcbiAgICpcbiAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCB3aXRoIHN0b3JhZ2UgZnVuY3Rpb25zXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSBJbnN0aXR1dCBOYXRpb25hbFxuICAgKiBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0IGVuIEF1dG9tYXRpcXVlLlxuICAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICdhIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYlxuXG50eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnZFxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgJ2MgLT5cbiAgJ2QgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdlXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsICdnKSBzZXh0ZXJuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gICdkIC0+XG4gICdlIC0+XG4gICdmIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnZ1xuXG50eXBlICdhIHVuYXJ5X25vX291dHB1dCA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAnYSAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG5cbnR5cGUgKCdhLCAnYikgYmluYXJ5X25vX291dHB1dCA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAnYSAtPlxuICAnYiAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG5cbm1vZHVsZSB0eXBlIFN0b3JhZ2UgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUga2V5XG4gIHR5cGUgZGltZW5zaW9uXG5cbiAgdmFsIGNyZWF0ZSA6IChkaW1lbnNpb24sICdhIHQpIHVuYXJ5XG4gIHZhbCBjcmVhdGVfYmlnZ2VzdF9rZXkgOiAoa2V5LCAnYSB0KSB1bmFyeVxuICB2YWwgZXhwYW5kX2FuZF9jb3B5IDogKCdhIHQsIGRpbWVuc2lvbiwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBpbml0IDogKGRpbWVuc2lvbiwgKGtleSwgJ2EpIHVuYXJ5LCAnYSB0KSBiaW5hcnlcbiAgdmFsIHNldCA6IChrZXksICdhLCAnYSB0LCAnYSB0KSB0ZXJuYXJ5XG4gIHZhbCBmcmVlIDogKGtleSwgJ2EgdCwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBnZXQgOiAoa2V5LCAnYSB0LCAnYSBvcHRpb24pIGJpbmFyeVxuICB2YWwgdW5zYWZlX2dldCA6IChrZXksICdhIHQsICdhIG9wdGlvbikgYmluYXJ5XG4gIHZhbCBkaW1lbnNpb24gOiAoJ2EgdCwgZGltZW5zaW9uKSB1bmFyeVxuICB2YWwgcHJpbnQgOiAoJ2EgdW5hcnlfbm9fb3V0cHV0LCAnYSB0KSBiaW5hcnlfbm9fb3V0cHV0XG4gIHZhbCBrZXlfbGlzdCA6ICgnYSB0LCBrZXkgbGlzdCkgdW5hcnlcbiAgdmFsIGl0ZXIgOiAoKGtleSwgJ2EpIGJpbmFyeV9ub19vdXRwdXQsICdhIHQpIGJpbmFyeV9ub19vdXRwdXRcbiAgdmFsIGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gOiAoKGtleSwgJ2EsICdiLCAnYikgdGVybmFyeSwgJ2EgdCwgJ2IsICdiKSB0ZXJuYXJ5XG4gIHZhbCBmb2xkIDogKChrZXksICdhLCAnYiwgJ2IpIHRlcm5hcnksICdhIHQsICdiLCAnYikgdGVybmFyeVxuXG4gIHZhbCBmb2xkMiA6XG4gICAgKCAoa2V5LCAnYSwgJ2MsICdjKSB0ZXJuYXJ5LFxuICAgICAgKGtleSwgJ2IsICdjLCAnYykgdGVybmFyeSxcbiAgICAgIChrZXksICdhLCAnYiwgJ2MsICdjKSBxdWF0ZXJuYXJ5LFxuICAgICAgJ2EgdCxcbiAgICAgICdiIHQsXG4gICAgICAnYyxcbiAgICAgICdjIClcbiAgICBzZXh0ZXJuYXJ5XG5cbiAgdmFsIGZvbGQyX2NvbW1vbiA6XG4gICAgKChrZXksICdhLCAnYiwgJ2MsICdjKSBxdWF0ZXJuYXJ5LCAnYSB0LCAnYiB0LCAnYywgJ2MpIHF1YXRlcm5hcnlcblxuICB2YWwgZm9yX2FsbCA6ICgoa2V5LCAnYSwgYm9vbCkgYmluYXJ5LCAnYSB0LCBib29sKSBiaW5hcnlcbiAgdmFsIGZyZWVfYWxsIDogKCdhIHQsICdhIHQpIHVuYXJ5XG5lbmRcblxubGV0IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgbWggcG9zIGV4biB2YWx1ZSA9XG4gIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgbWggcG9zIGV4biB2YWx1ZVxuXG5tb2R1bGUgSW50X3N0b3JhZ2VfaW1wZXJhdGlmIDpcbiAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9IHN0cnVjdFxuICB0eXBlIGtleSA9IGludFxuICB0eXBlIGRpbWVuc2lvbiA9IGludFxuICB0eXBlICdhIHQgPSB7IGFycmF5OiAnYSBvcHRpb24gYXJyYXk7IHNpemU6IGludCB9XG5cbiAgbGV0IGRpbWVuc2lvbiBfIGVycm9yIGEgPSBlcnJvciwgYS5zaXplXG5cbiAgbGV0IGtleV9saXN0IF9wYXJlbWV0ZXJzIGVycm9yIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgc29sID1cbiAgICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgICAgZXJyb3IsIHNvbFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgLSAxKSBzb2xcbiAgICAgICAgfCBTb21lIF8gLT4gYXV4IChrIC0gMSkgKGsgOjogc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IHNpemUgW11cblxuICBsZXQgcmVjIGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgeyBhcnJheSA9IEFycmF5Lm1ha2UgKHNpemUgKyAxKSBOb25lOyBzaXplIH1cblxuICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3IgeCA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHhcblxuICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgc2l6ZSA9XG4gICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgIGlmIGRpbWVuc2lvbiA8IHNpemUgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5JyA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgaW5cbiAgICAgIGxldCBfID0gQXJyYXkuYmxpdCBhcnJheS5hcnJheSAwIGFycmF5Jy5hcnJheSAwIGRpbWVuc2lvbiBpblxuICAgICAgZXJyb3IsIGFycmF5J1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIHsgYXJyYXkgPSBBcnJheS5zdWIgYXJyYXkuYXJyYXkgMCBzaXplOyBzaXplIH1cblxuICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBQcmludGYuZnByaW50ZiBzdGRvdXQgXCIlaSAlaVwiIGtleSBhcnJheS5zaXplIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgXyA9IGFycmF5LmFycmF5LihrZXkpIDwtIFNvbWUgdmFsdWUgaW5cbiAgICAgIGVycm9yLCBhcnJheVxuICAgIClcblxuICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIHNpemUgZiA9XG4gICAgaWYgc2l6ZSA8IDAgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMCBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgZXJyb3IgYXJyYXkgPVxuICAgICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgdmFsdWUgPSBmIHBhcmFtZXRlcnMgZXJyb3IgayBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBzZXQgcGFyYW1ldGVycyBlcnJvciBrIHZhbHVlIGFycmF5IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgZXJyb3IgYXJyYXlcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwIGVycm9yIGFycmF5XG4gICAgKVxuXG4gIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBcIjEzMDolaVxcblwiIGtleVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGtleSkgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjEzMzolaVxcblwiIGtleVxuICAgICAgICBpblxuICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG4gICAgICB8IGEgLT4gZXJyb3IsIGFcbiAgICApXG5cbiAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmUgaW5cbiAgICAgIGVycm9yLCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBtYXRjaCBhcnJheS5hcnJheS4oa2V5KSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZSBpblxuICAgICAgICBlcnJvciwgYXJyYXlcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgKCkgPSBhcnJheS5hcnJheS4oa2V5KSA8LSBOb25lIGluXG4gICAgICAgIGVycm9yLCBhcnJheVxuICAgIClcblxuICBsZXQgdW5zYWZlX2dldCBfcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuXG4gICAgICBlcnJvciwgTm9uZVxuICAgIGVsc2VcbiAgICAgIGVycm9yLCBhcnJheS5hcnJheS4oa2V5KVxuXG4gIGxldCBwcmludCBwYXJhbWV0ZXJzIGVycm9yIHByaW50X2VsdCBhcnJheSA9XG4gICAgbGV0IHJlYyBhdXggaSBlcnJvciA9XG4gICAgICBpZiBpID4gYXJyYXkuc2l6ZSB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBtYXRjaCBhcnJheS5hcnJheS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvclxuICAgICAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVzJWQ6XCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPVxuICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXggcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfaW50IGkgXiBcIjpcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBwcmludF9lbHQgcGFyYW1ldGVycyBlcnJvciBlbHQgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoaSArIDEpIGVycm9yXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBpdGVyIHBhcmFtZXRlciBlcnJvciBmIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgZXJyb3IgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSBlcnJvclxuICAgICAgICB8IFNvbWUgeCAtPiBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4KVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiB0IGluaXQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4IHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3IgZiB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGVycm9yID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgZXJyb3IsIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgZXJyb3JcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wgPSBmIHBhcmFtZXRlciBlcnJvciBrIHggaW5cbiAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgIGF1eCAoayArIDEpIGVycm9yXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGZhbHNlXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIHQgaW5pdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgIHRyeSBTb21lIChmIHBhcmFtZXRlciBlcnJvciBrIHggc29sKSB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJlbWFuZW50XG4gICAgICAgICAgfCBTb21lIGEgLT4gYXV4IChrICsgMSkgYSlcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIHQxIHQyIGluaXQgPVxuICAgIGxldCBzaXplID0gbWluIHQxLnNpemUgdDIuc2l6ZSBpblxuICAgIGxldCBhcnJheTEgPSB0MS5hcnJheSBpblxuICAgIGxldCBhcnJheTIgPSB0Mi5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5MS4oayksIGFycmF5Mi4oaykgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4MSwgU29tZSB4MiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4MSB4MiBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCB0MSB0MiBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IG1pbiB0MS5zaXplIHQyLnNpemUgaW5cbiAgICBsZXQgYXJyYXkxID0gdDEuYXJyYXkgaW5cbiAgICBsZXQgYXJyYXkyID0gdDIuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgIG1hdGNoIGFycmF5MS4oayksIGFycmF5Mi4oaykgd2l0aFxuICAgICAgICB8IFNvbWUgeDEsIE5vbmUgLT4gYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeDEgc29sKVxuICAgICAgICB8IE5vbmUsIFNvbWUgeDIgLT4gYXV4IChrICsgMSkgKGcgcGFyYW1ldGVyIGVycm9yIGsgeDIgc29sKVxuICAgICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT4gYXV4IChrICsgMSkgKGggcGFyYW1ldGVyIGVycm9yIGsgeDEgeDIgc29sKVxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gYXV4IChrICsgMSkgKGVycm9yLCBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgdCB0XG5lbmRcblxubW9kdWxlIE5lYXJseV9pbmZpbml0ZV9hcnJheXMgPVxuZnVuY3RvclxuICAoQmFzaWMgOiBTdG9yYWdlIHdpdGggdHlwZSBkaW1lbnNpb24gPSBpbnQgYW5kIHR5cGUga2V5ID0gaW50KVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBCYXNpYy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2ljLnRcblxuICAgICAgbGV0IGNyZWF0ZSA9IEJhc2ljLmNyZWF0ZVxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSA9IEJhc2ljLmNyZWF0ZV9iaWdnZXN0X2tleVxuICAgICAgbGV0IGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgbGV0IGtleV9saXN0ID0gQmFzaWMua2V5X2xpc3RcblxuICAgICAgbGV0IGV4cGFuZCBwYXJhbWV0ZXJzIGVycm9yIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgaWYgb2xkX2RpbWVuc2lvbiA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQmFzaWMuZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXlcbiAgICAgICAgICAgIChtYXggMSAobWluIFN5cy5tYXhfYXJyYXlfbGVuZ3RoICgyICogb2xkX2RpbWVuc2lvbikpKVxuXG4gICAgICBsZXQgZ2V0ID0gQmFzaWMuZ2V0XG4gICAgICBsZXQgdW5zYWZlX2dldCA9IEJhc2ljLnVuc2FmZV9nZXRcbiAgICAgIGxldCBleHBhbmRfYW5kX2NvcHkgPSBCYXNpYy5leHBhbmRfYW5kX2NvcHlcbiAgICAgIGxldCBpbml0ID0gQmFzaWMuaW5pdFxuICAgICAgbGV0IGZyZWUgPSBCYXNpYy5mcmVlXG5cbiAgICAgIGxldCByZWMgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgICAgICBpZiBrZXkgPj0gZGltZW5zaW9uIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYXJyYXknID0gZXhwYW5kIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgICBpZiBhcnJheSA9PSBhcnJheScgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXknXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEJhc2ljLnNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheVxuXG4gICAgICBsZXQgcHJpbnQgPSBCYXNpYy5wcmludFxuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgPSBCYXNpYy5wcmludF92YXJfZlxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiA9IEJhc2ljLnByaW50X3NpdGVfZiopXG4gICAgICBsZXQgaXRlciA9IEJhc2ljLml0ZXJcbiAgICAgIGxldCBmb2xkID0gQmFzaWMuZm9sZFxuICAgICAgbGV0IGZvbGQyID0gQmFzaWMuZm9sZDJcbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uID0gQmFzaWMuZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgbGV0IGZvbGQyX2NvbW1vbiA9IEJhc2ljLmZvbGQyX2NvbW1vblxuICAgICAgbGV0IGZvcl9hbGwgPSBCYXNpYy5mb3JfYWxsXG4gICAgICBsZXQgZnJlZV9hbGwgPSBCYXNpYy5mcmVlX2FsbFxuICAgIGVuZCA6XG4gICAgICBTdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgZGltZW5zaW9uID0gaW50KVxuXG5tb2R1bGUgRXh0ZW5kID1cbmZ1bmN0b3JcbiAgKEV4dGVuc2lvbiA6IFN0b3JhZ2UpXG4gIChVbmRlcmx5aW5nIDogU3RvcmFnZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBFeHRlbnNpb24uZGltZW5zaW9uICogVW5kZXJseWluZy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gRXh0ZW5zaW9uLmtleSAqIFVuZGVybHlpbmcua2V5XG4gICAgICB0eXBlICdhIHQgPSB7IG1hdHJpeDogJ2EgVW5kZXJseWluZy50IEV4dGVuc2lvbi50OyBkaW1lbnNpb246IGRpbWVuc2lvbiB9XG5cbiAgICAgIGxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBkaW1lbnNpb24gPVxuICAgICAgICBsZXQgZXJyb3IsIG1hdHJpeCA9IEV4dGVuc2lvbi5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAoZnN0IGRpbWVuc2lvbikgaW5cbiAgICAgICAgZXJyb3IsIHsgbWF0cml4OyBkaW1lbnNpb24gfVxuXG4gICAgICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3Iga2V5ID1cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXggPVxuICAgICAgICAgIEV4dGVuc2lvbi5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciAoZnN0IGtleSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXgnID1cbiAgICAgICAgICBVbmRlcmx5aW5nLmNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIChzbmQga2V5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGRpbWVuc2lvbiA9IEV4dGVuc2lvbi5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBtYXRyaXggaW5cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24nID0gVW5kZXJseWluZy5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBtYXRyaXgnIGluXG4gICAgICAgIGVycm9yLCB7IG1hdHJpeDsgZGltZW5zaW9uID0gZGltZW5zaW9uLCBkaW1lbnNpb24nIH1cblxuICAgICAgbGV0IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdCA9XG4gICAgICAgIGxldCBlcnJvciwgZXh0X2xpc3QgPSBFeHRlbnNpb24ua2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciB0Lm1hdHJpeCBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBsaXN0KSBrZXkgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgdDIgPSBFeHRlbnNpb24uZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHQubWF0cml4IGluXG4gICAgICAgICAgICBtYXRjaCB0MiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgbGlzdFxuICAgICAgICAgICAgfCBTb21lIHQyIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbDIgPSBVbmRlcmx5aW5nLmtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdDIgaW5cbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGtleTIgLT4gKGtleSwga2V5MikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGxpc3QgKExpc3QucmV2IGwyKSApKVxuICAgICAgICAgIChlcnJvciwgW10pIChMaXN0LnJldiBleHRfbGlzdClcblxuICAgICAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IF9kaW1lbnNpb24gPVxuICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuXG4gICAgICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIGRpbSBmID1cbiAgICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmluaXQgcGFyYW1ldGVycyBlcnJvciAoZnN0IGRpbSkgKGZ1biBwIGUgaSAtPlxuICAgICAgICAgICAgICBVbmRlcmx5aW5nLmluaXQgcCBlIChzbmQgZGltKSAoZnVuIHAnIGUnIGogLT4gZiBwJyBlJyAoaSwgaikpKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBtYXRyaXggPSBhcnJheTsgZGltZW5zaW9uID0gZGltIH1cblxuICAgICAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkX3VuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfdW5kZXJseWluZyA9XG4gICAgICAgICAgbWF0Y2ggb2xkX3VuZGVybHlpbmcgd2l0aFxuICAgICAgICAgIHwgU29tZSBvbGRfdW5kZXJseWluZyAtPiBlcnJvciwgb2xkX3VuZGVybHlpbmdcbiAgICAgICAgICB8IE5vbmUgLT4gVW5kZXJseWluZy5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAoc25kIGFycmF5LmRpbWVuc2lvbilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBuZXdfdW5kZXJseWluZyA9XG4gICAgICAgICAgVW5kZXJseWluZy5zZXQgcGFyYW1ldGVycyBlcnJvciBqIHZhbHVlIG9sZF91bmRlcmx5aW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X21hdHJpeCA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnNldCBwYXJhbWV0ZXJzIGVycm9yIGkgbmV3X3VuZGVybHlpbmcgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgICgqIGxldCBvcmRlcmVkID0gb3JkZXJlZCAmJiBFeHRlbnNpb24ub3JkZXJlZCBuZXdfbWF0cml4IGluKilcbiAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBtYXRyaXggPSBuZXdfbWF0cml4IH1cblxuICAgICAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgdW5kZXJseWluZyA9IEV4dGVuc2lvbi5nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeCBpblxuICAgICAgICBtYXRjaCB1bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgfCBTb21lIHVuZGVybHlpbmcgLT4gVW5kZXJseWluZy5nZXQgcGFyYW1ldGVycyBlcnJvciBqIHVuZGVybHlpbmdcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcblxuICAgICAgbGV0IHVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIHVuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggdW5kZXJseWluZyB3aXRoXG4gICAgICAgIHwgU29tZSB1bmRlcmx5aW5nIC0+IFVuZGVybHlpbmcudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGogdW5kZXJseWluZ1xuICAgICAgICB8IF8gLT4gZXJyb3IsIE5vbmVcblxuICAgICAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZF91bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG5cbiAgICAgICAgbWF0Y2ggb2xkX3VuZGVybHlpbmcgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lIGluXG4gICAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICAgIHwgU29tZSBvbGRfdW5kZXJseWluZyAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbmV3X3VuZGVybHlpbmcgPVxuICAgICAgICAgICAgVW5kZXJseWluZy5mcmVlIHBhcmFtZXRlcnMgZXJyb3IgaiBvbGRfdW5kZXJseWluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBuZXdfbWF0cml4ID1cbiAgICAgICAgICAgIEV4dGVuc2lvbi5zZXQgcGFyYW1ldGVycyBlcnJvciBpIG5ld191bmRlcmx5aW5nIGFycmF5Lm1hdHJpeFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBtYXRyaXggPSBuZXdfbWF0cml4IH1cblxuICAgICAgbGV0IGRpbWVuc2lvbiBfIGVycm9yIGEgPSBlcnJvciwgYS5kaW1lbnNpb25cblxuICAgICAgbGV0IHByaW50IHBhcmFtZXRlcnMgZXJyb3IgcHJpbnRfb2YgYSA9XG4gICAgICAgIEV4dGVuc2lvbi5wcmludCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgcCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgZXJyb3IgcHJpbnRfb2YgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEV4dGVuc2lvbi5wcmludCBlcnJvclxuICAgICAgICAgICAoZnVuIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgIHBhcmFtZXRlcnNcbiAgICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiBlcnJvciBwcmludF9vZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgRXh0ZW5zaW9uLnByaW50IGVycm9yXG4gICAgICAgICAgIChmdW4gZXJyb3IgLT4gVW5kZXJseWluZy5wcmludCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICAgcGFyYW1ldGVyc1xuICAgICAgICAgICBhLm1hdHJpeCopXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlciBlcnJvciBmIGEgPVxuICAgICAgICBFeHRlbnNpb24uaXRlciBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgLT5cbiAgICAgICAgICAgIFVuZGVybHlpbmcuaXRlciBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgKGssIGsnKSBhJylcbiAgICAgICAgICAgICAgYSlcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3IgZiBhID1cbiAgICAgICAgRXh0ZW5zaW9uLmZvcl9hbGwgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIC0+XG4gICAgICAgICAgICBVbmRlcmx5aW5nLmZvcl9hbGwgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIC0+IGYgcGFyYW1ldGVyIGVycm9yIChrLCBrJykgYScpXG4gICAgICAgICAgICAgIGEpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgbGV0IGZvbGRfZ2VuIGZvbGQxIGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGQxIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBiIC0+XG4gICAgICAgICAgICBmb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgYiAtPiBmIHBhcmFtZXRlciBlcnJvciAoaywgaycpIGEnIGIpXG4gICAgICAgICAgICAgIGEgYilcbiAgICAgICAgICBhLm1hdHJpeCBiXG5cbiAgICAgIGxldCBmb2xkIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGRfZ2VuIEV4dGVuc2lvbi5mb2xkIFVuZGVybHlpbmcuZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiBhIGJcblxuICAgICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiID1cbiAgICAgICAgZm9sZF9nZW4gRXh0ZW5zaW9uLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgICAgICBVbmRlcmx5aW5nLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiXG5cbiAgICAgIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiIGMgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgY1xuICAgICAgICAgICAgfCBTb21lIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICBhIGNcblxuICAgICAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBhIGIgYyA9XG4gICAgICAgIGxldCBlcnJvciwgYyA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgY1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBoIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgICAgYSBjXG4gICAgICAgIGluXG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBiIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGcgcGFyYW1ldGVyIGVycm9yIGsgYiBjXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBlcnJvciwgYylcbiAgICAgICAgICBiIGNcblxuICAgICAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICAgICAgdCB0XG4gICAgZW5kIDpcbiAgICAgIFN0b3JhZ2VcbiAgICAgICAgd2l0aCB0eXBlIGtleSA9IEV4dGVuc2lvbi5rZXkgKiBVbmRlcmx5aW5nLmtleVxuICAgICAgICAgYW5kIHR5cGUgZGltZW5zaW9uID0gRXh0ZW5zaW9uLmRpbWVuc2lvbiAqIFVuZGVybHlpbmcuZGltZW5zaW9uKVxuXG5tb2R1bGUgUXVpY2tfa2V5X2xpc3QgPVxuZnVuY3RvclxuICAoQmFzaWMgOiBTdG9yYWdlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBCYXNpYy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9IHsgYmFzaWM6ICdhIEJhc2ljLnQ7IGtleXM6IGtleSBsaXN0IH1cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIGkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgaSBpblxuICAgICAgICBlcnJvciwgeyBiYXNpYzsga2V5cyA9IFtdIH1cblxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIGtleSA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPSBCYXNpYy5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciBrZXkgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBrZXlfbGlzdCBfcGFyYW1ldGVycyBlcnJvciB0ID0gZXJyb3IsIHQua2V5c1xuXG4gICAgICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaiA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPVxuICAgICAgICAgIEJhc2ljLmV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5LmJhc2ljIGpcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBhcnJheS5rZXlzIH1cblxuICAgICAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBuIGYgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gZiBpblxuICAgICAgICBsZXQgZXJyb3IsIGtleXMgPVxuICAgICAgICAgIEJhc2ljLmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgICAgKGZ1biBfIGUgayBfIGxpc3QgLT4gZSwgayA6OiBsaXN0KVxuICAgICAgICAgICAgYmFzaWMgW11cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgfVxuXG4gICAgICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGQgPSBCYXNpYy51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljIGluXG4gICAgICAgIGxldCBuZXdfYXJyYXkgPVxuICAgICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gYXJyYXlcbiAgICAgICAgICB8IE5vbmUgLT4geyBhcnJheSB3aXRoIGtleXMgPSBrZXkgOjogYXJyYXkua2V5cyB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X2Jhc2ljID1cbiAgICAgICAgICBCYXNpYy5zZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgbmV3X2FycmF5LmJhc2ljXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IG5ld19hcnJheSB3aXRoIGJhc2ljID0gbmV3X2Jhc2ljIH1cblxuICAgICAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpYyBpblxuICAgICAgICBlcnJvciwgeyBhcnJheSB3aXRoIGJhc2ljIH1cblxuICAgICAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIEJhc2ljLmdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpY1xuXG4gICAgICBsZXQgdW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIEJhc2ljLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWNcblxuICAgICAgbGV0IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGEgPVxuICAgICAgICBCYXNpYy5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhLmJhc2ljXG5cbiAgICAgIGxldCBwcmludCBlcnJvciBmIHBhcmFtZXRlcnMgYSA9IEJhc2ljLnByaW50IGVycm9yIGYgcGFyYW1ldGVycyBhLmJhc2ljXG5cbiAgICAgICgqIGxldCBwcmludF92YXJfZiBlcnJvciBmIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBCYXNpYy5wcmludF92YXJfZiBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpY1xuXG4gICAgICAgICBsZXQgcHJpbnRfc2l0ZV9mIGVycm9yIGYgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEJhc2ljLnByaW50X3NpdGVfZiBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpYyopXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlcnMgZXJyb3IgZiBhID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBlcnJvciBrIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKCkgaW5cbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIHwgU29tZSBpbSAtPiBmIHBhcmFtZXRlcnMgZXJyb3IgayBpbSlcbiAgICAgICAgICBlcnJvciAoTGlzdC5yZXYgbGlzdClcblxuICAgICAgbGV0IGZvbGQgcGFyYW1ldGVycyBlcnJvciBmIGEgYiA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBiKSBrIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYlxuICAgICAgICAgICAgfCBTb21lIGltIC0+IGYgcGFyYW1ldGVycyBlcnJvciBrIGltIGIpXG4gICAgICAgICAgKGVycm9yLCBiKSAoTGlzdC5yZXYgbGlzdClcblxuICAgICAgbGV0IGZvcl9hbGwgcGFyYW1ldGVycyBlcnJvciBmIGEgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBlcnJvciwgdHJ1ZVxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICAobWF0Y2ggZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaCBhIHdpdGhcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCAoKSA9IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgpIGluXG4gICAgICAgICAgICAgIGF1eCB0IGVycm9yXG4gICAgICAgICAgICB8IGVycm9yLCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBib29sID0gZiBwYXJhbWV0ZXJzIGVycm9yIGggZGF0YSBpblxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICBhdXggdCBlcnJvclxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGZhbHNlKVxuICAgICAgICBpblxuICAgICAgICBhdXggbGlzdCBlcnJvclxuXG4gICAgICBsZXQgZnJlZV9hbGwgcGFyYW1ldGVyIGVycm9yIHQgPVxuICAgICAgICBsZXQgZXJyb3IsIHQgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICAgICAgICB0IHRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgdCB3aXRoIGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlcnMgZXJyb3IgZiBhIGIgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggbGlzdCBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgIHwgW10gLT4gb3V0cHV0XG4gICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGhlYWQgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc25kIG91dHB1dCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGltIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSAoaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYilcbiAgICAgICAgICAgICAgICB8IFNvbWUgaW0gLT4gU29tZSAoZiBwYXJhbWV0ZXJzIGVycm9yIGhlYWQgaW0gYilcbiAgICAgICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvdXRwdXRcbiAgICAgICAgICAgIHwgU29tZSBvdXRwdXQgLT4gYXV4IHRhaWwgb3V0cHV0KVxuICAgICAgICBpblxuICAgICAgICBhdXggbGlzdCAoZXJyb3IsIGIpXG5cbiAgICAgIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiIGMgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgY1xuICAgICAgICAgICAgfCBTb21lIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICBhIGNcblxuICAgICAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBhIGIgYyA9XG4gICAgICAgIGxldCBlcnJvciwgYyA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgY1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBoIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgICAgYSBjXG4gICAgICAgIGluXG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBiIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGcgcGFyYW1ldGVyIGVycm9yIGsgYiBjXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBlcnJvciwgYylcbiAgICAgICAgICBiIGNcbiAgICBlbmQgOlxuICAgICAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gQmFzaWMua2V5IGFuZCB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvbilcblxubW9kdWxlIE5lYXJseV9pbmZfSW1wZXJhdGlmID0gTmVhcmx5X2luZmluaXRlX2FycmF5cyAoSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxubW9kdWxlIFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmID0gUXVpY2tfa2V5X2xpc3QgKE5lYXJseV9pbmZfSW1wZXJhdGlmKVxuXG5tb2R1bGUgSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmQgKEludF9zdG9yYWdlX2ltcGVyYXRpZikgKEludF9zdG9yYWdlX2ltcGVyYXRpZilcblxubW9kdWxlIE5lYXJseV9JbmZfSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmQgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKSAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpXG5cbm1vZHVsZSBOZWFybHlfSW5mX0ludF9JbnRfSW50X3N0b3JhZ2VfSW1wZXJhdGlmX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmRcbiAgICAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpXG4gICAgKEV4dGVuZCAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZikpXG4iLCIoKipcbiAgICAqIHVuaW9uX2ZpbmQubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQgJiBMeSBLaW0gUXV5ZW4sIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDIwMTUsIHRoZSAxMXRoIG9mIE1hcmNoXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEFwciAxOCAyMDE4PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCB3aXRoIHVuaW9uIGZpbmQgYWxnb3JpdGhtIHdpdGhcbiAgICAqIHBhdGggY29tcHJlc3Npb25cbiAgICAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCwyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBVbmlvbl9maW5kID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgZGltZW5zaW9uXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZGltZW5zaW9uIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHRcblxuICB2YWwgdW5pb25fbGlzdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICB0IC0+XG4gICAga2V5IGxpc3QgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCBpdGVyaSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBrZXkgLT5cbiAgICBrZXkgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0KSAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG5cbiAgdmFsIGdldF9yZXByZXNlbnRlbnQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAga2V5IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB0ICoga2V5XG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoU3RvcmFnZSA6IEludF9zdG9yYWdlLlN0b3JhZ2UpXG4gIC0+XG4gICgqICAgIGZ1bmN0b3IgKE1hcDogTWFwX3dyYXBwZXIuTWFwX3dpdGhfbG9ncykgLT4qKVxuICAgIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gU3RvcmFnZS5rZXlcbiAgICAgIHR5cGUgdCA9IGtleSBTdG9yYWdlLnRcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gU3RvcmFnZS5kaW1lbnNpb25cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG4gPVxuICAgICAgICBTdG9yYWdlLmluaXQgcGFyYW1ldGVycyBlcnJvciBuIChmdW4gXyBlIHggLT4gZSwgeClcblxuICAgICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICgqIGZpbmRTZXQoZSk6IHdoaWNoIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlcHJlc2VudGF0aXZlIG9mIHRoZSBzZXRcbiAgICAgICAgIGNvbnRhaW5pbmcgZS4gU2luY2UgdGhlIHNldCBhcmUgZGlzam9pbnQsIGUgY29udGFpbnRlZCBpbiBvbmUgc2V0XG4gICAgICAgICBvbmx5LiBUaGVyZWZvcmUsIHRoZSByZXR1cm5lZCByZXByZXNlbnRhdGl2ZSBjYW4gYmUgdW5pcXVlbHkgZGV0ZXJtaW5lZC5cbiAgICAgICopXG5cbiAgICAgIGxldCBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciBlIHQgPVxuICAgICAgICBsZXQgcG9pbnRUb1Jvb3QgcGFyYW1ldGVyIGVycm9yIHJvb3QgbCB0ID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIHQpIGkgLT4gU3RvcmFnZS5zZXQgcGFyYW1ldGVyIGVycm9yIGkgcm9vdCB0KVxuICAgICAgICAgICAgKGVycm9yLCB0KSBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgaGVscGVyIHBhcmFtZXRlciBlcnJvciBlIGwgdCA9XG4gICAgICAgICAgbGV0IGVycm9yLCBwYXJlbnQgPSBTdG9yYWdlLnVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGUgdCBpblxuICAgICAgICAgIG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCAodCwgZSlcbiAgICAgICAgICB8IFNvbWUgcCB3aGVuIHAgPD4gZSAtPiBoZWxwZXIgcGFyYW1ldGVyIGVycm9yIHAgKGUgOjogbCkgdFxuICAgICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICAgICAoKiBiYXNlIGNhc2U6IHdlIGhpdCB0aGUgcm9vdCBub2RlIG1ha2UgYWxsIGNvbGxlY3RlZCBub2RlcyBvbiB0aGVcbiAgICAgICAgICAgICAgIHBhdGggcG9pbnQgdG8gdGhlIHJvb3QuIEFuZCByZXR1cm4gdGhlIHJvb3QgYWZ0ZXJ3YXJkcyAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCB0ID0gcG9pbnRUb1Jvb3QgcGFyYW1ldGVyIGVycm9yIHAgbCB0IGluXG4gICAgICAgICAgICBlcnJvciwgKHQsIHApXG4gICAgICAgIGluXG4gICAgICAgIGhlbHBlciBwYXJhbWV0ZXIgZXJyb3IgZSBbXSB0XG5cbiAgICAgIGxldCBnZXRfcmVwcmVzZW50ZW50IHBhcmFtZXRlcnMgZXJyb3IgZSB0ID1cbiAgICAgICAgbGV0IGVycm9yLCAodW5pb24sIGVsdCkgPSBmaW5kU2V0IHBhcmFtZXRlcnMgZXJyb3IgZSB0IGluXG4gICAgICAgIGVycm9yLCB1bmlvbiwgZWx0XG4gICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgKCpVTklPTiopXG5cbiAgICAgIGxldCB1bmlvbiBwYXJhbWV0ZXIgZXJyb3IgeCB5IHQgPVxuICAgICAgICBsZXQgZXJyb3IsICh0LCByb290X3gpID0gZmluZFNldCBwYXJhbWV0ZXIgZXJyb3IgeCB0IGluXG4gICAgICAgIGxldCBlcnJvciwgKHQsIHJvb3RfeSkgPSBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciB5IHQgaW5cbiAgICAgICAgU3RvcmFnZS5zZXQgcGFyYW1ldGVyIGVycm9yIHJvb3RfeCByb290X3kgdFxuXG4gICAgICAoKmxldCBlcV9jbGFzc2VzX21hcCBwYXJhbWV0ZXIgZXJyb3IgYSA9XG4gICAgICAgICgqICBsZXQgY2xhc3NlcyA9IENja2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmVtcHR5IGluKilcbiAgICAgICAgPT09PT09PVxuICAgICAgICBsZXQgdW5pb24geCB5IGEgPVxuICAgICAgICBsZXQgcm9vdF94ID0gZmluZFNldCB4IGEgaW5cbiAgICAgICAgbGV0IHJvb3RfeSA9IGZpbmRTZXQgeSBhIGluXG4gICAgICAgIGxldCBfID0gYS4ocm9vdF94KSA8LSByb290X3kgaW5cbiAgICAgICAgKCpsZXQgXyA9IHByaW50X3N0cmluZyBcImR1bXA6IFwiOyBkdW1wIGE7IHByaW50X3N0cmluZyBcIlxcblwiIGluKilcbiAgICAgICAgYVxuXG4gICAgICAgIGxldCBlcV9jbGFzc2VzX21hcCBwYXJhbWV0ZXIgZXJyb3IgYSA9XG4gICAgICAgIGxldCBjbGFzc2VzID0gQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5lbXB0eSBpblxuICAgICAgICA+Pj4+Pj4+IHJlbW92ZSBkb3VibGljYXRlIG1vZHVsZSwgdG9kbzogaGlkZGVuIHR5cGUgc2l0ZV9uYW1lXG4gICAgICAgIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggayAoY2xhc3Nlcyx1bmlvbl9saXN0KSA9XG4gICAgICAgICAgaWYgIGsgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgY2xhc3NlcywgdW5pb25fbGlzdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqZmluZCB0aGUgcGFyZW50IG9mIHRoZSB1bmlvbiopXG4gICAgICAgICAgICBsZXQgcmVwID0gZmluZFNldCBrIGEgaW5cbiAgICAgICAgICAgICgqY2hlY2sgaWYgaW5zaWRlIGNsYXNzZXMgaGFzIGFscmVhZHkgaGFzIHRoaXMgcGFyZW50KilcbiAgICAgICAgPDw8PDw8PCBIRUFEXG4gICAgICAgICAgICBsZXQgZXJyb3InLGdldF9yZXAgPVxuICAgICAgICAoKiAgICAgICAgQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuZmluZF9kZWZhdWx0IHBhcmFtZXRlciBlcnJvciBbXSByZXAgY2xhc3NlcyBpbiopXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uY2hlY2sgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZXJyb3InIChTb21lIFwibGluZSA3M1wiKSBFeGl0IGluXG4gICAgICAgICAgICAoKnN0b3JlIHRoZSByZXN1bHQgaW5zaWRlIGNsYXNzZXMqKVxuICAgICAgICAoKiAgICAgIGxldCBlcnJvcixjbGFzc2VzID1cbiAgICAgICAgQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuYWRkX29yX292ZXJ3cml0ZVxuICAgICAgICA9PT09PT09XG4gICAgICAgICAgICBsZXQgZXJyb3InLCBnZXRfcmVwID1cbiAgICAgICAgICAgICAgQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5maW5kX2RlZmF1bHRcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgcmVwXG4gICAgICAgICAgICAgICAgY2xhc3Nlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5jaGVjayB3YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgKFNvbWUgXCJsaW5lIDczXCIpIEV4aXQgaW5cbiAgICAgICAgICAgICgqc3RvcmUgdGhlIHJlc3VsdCBpbnNpZGUgY2xhc3NlcyopXG4gICAgICAgICAgICBsZXQgZXJyb3IsY2xhc3NlcyA9XG4gICAgICAgIENrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuYWRkX29yX292ZXJ3cml0ZVxuICAgICAgICA+Pj4+Pj4+IHJlbW92ZSBkb3VibGljYXRlIG1vZHVsZSwgdG9kbzogaGlkZGVuIHR5cGUgc2l0ZV9uYW1lXG4gICAgICAgIHBhcmFtZXRlclxuICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIHJlcFxuICAgICAgICAoayA6OiBnZXRfcmVwKVxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgICBpbiopXG4gICAgICAgICAgICBhdXggKGsgLSAxKSAoY2xhc3NlcywgdW5pb25fbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNsYXNzZXMsIGEgPSBhdXggKHNpemUgLSAxKSAoY2xhc3NlcywgYSkgaW5cbiAgICAgICAgY2xhc3NlcywgYSopXG5cbiAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAoKiBjb21wdXRlIHVuaW9uLWZpbmQgaW4gYSBsaXN0KilcblxuICAgICAgbGV0IHVuaW9uX2xpc3QgcGFyYW1ldGVyIGVycm9yIGEgKGxpc3QgOiBrZXkgbGlzdCkgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgYVxuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCByZWMgYXV4IHBhcmFtZXRlciB0b192aXNpdCBlcnJvciBhID1cbiAgICAgICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGFcbiAgICAgICAgICAgIHwgdCcgOjogcScgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCB1bmlvbl9hcnJheSA9IHVuaW9uIHBhcmFtZXRlciBlcnJvciB0IHQnIGEgaW5cbiAgICAgICAgICAgICAgYXV4IHBhcmFtZXRlciBxJyBlcnJvciB1bmlvbl9hcnJheVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IHBhcmFtZXRlciBxIGVycm9yIGFcblxuICAgICAgbGV0IGl0ZXJpID0gU3RvcmFnZS5pdGVyXG4gICAgZW5kIDpcbiAgICAgIFVuaW9uX2ZpbmRcbiAgICAgICAgd2l0aCB0eXBlIGtleSA9IFN0b3JhZ2Uua2V5XG4gICAgICAgICBhbmQgdHlwZSB0ID0gU3RvcmFnZS5rZXkgU3RvcmFnZS50XG4gICAgICAgICBhbmQgdHlwZSBkaW1lbnNpb24gPSBTdG9yYWdlLmRpbWVuc2lvbilcbiIsImxldCBmc3Rfb3B0aW9uIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lICh4LCBfKSAtPiBTb21lIHhcbiAgfCBfIC0+IE5vbmVcblxubGV0IHNuZF9vcHRpb24geCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgKF8sIHgpIC0+IFNvbWUgeFxuICB8IF8gLT4gTm9uZVxuXG4oKiBPQ2FtbCBtYW51YWw6IEluIHBhcnRpY3VsYXIsIGlmIHlvdSB3YW50IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXRcbiAgIG1hdGNoZXMgYSBzaW5nbGUgYmFja3NsYXNoIGNoYXJhY3RlciwgeW91IG5lZWQgdG8gcXVvdGUgaXQgaW4gdGhlXG4gICBhcmd1bWVudCB0byByZWdleHAgKGFjY29yZGluZyB0byB0aGUgbGFzdCBpdGVtIG9mIHRoZSBsaXN0IGFib3ZlKSBieVxuICAgYWRkaW5nIGEgc2Vjb25kIGJhY2tzbGFzaC4gVGhlbiB5b3UgbmVlZCB0byBxdW90ZSBib3RoIGJhY2tzbGFzaGVzXG4gICAoYWNjb3JkaW5nIHRvIHRoZSBzeW50YXggb2Ygc3RyaW5nIGNvbnN0YW50cyBpbiBPQ2FtbCkgYnkgZG91YmxpbmdcbiAgIHRoZW0gYWdhaW4sIHNvIHlvdSBuZWVkIHRvIHdyaXRlIGZvdXIgYmFja3NsYXNoIGNoYXJhY3RlcnM6IFN0ci5yZWdleHBcbiAgIFwiXFxcXFxcXFxcIi4gKilcblxuKCoqIGRvdCBvdXRwdXQqKVxubGV0IGVzY2FwZV9sYWJlbF9pbl9kb3QgcyA9XG4gIFN0ci5nbG9iYWxfc3Vic3RpdHV0ZSAoU3RyLnJlZ2V4cCBcIltcXFxcXFxcIlxcXFxcXFxcXVwiKVxuICAgIChmdW4geCAtPlxuICAgICAgbWF0Y2ggU3RyLm1hdGNoZWRfc3RyaW5nIHggd2l0aFxuICAgICAgfCBcIlxcXCJcIiAtPiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgXCJcXFxcXCIgLT4gXCJcXFxcXFxcXFwiXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHNcblxubGV0IG1ha2VfaWRfY29tcGF0aWJsZV93aXRoX2RvdF9mb3JtYXQgcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgPVxuICBsZXQgdGFiID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90IHBhcmFtZXRlcnNcbiAgaW5cbiAgbGV0IHJlYyBhdXggcG9zIGwgPVxuICAgIGlmIHBvcyA8IDAgdGhlblxuICAgICAgbFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXIgPSBTdHJpbmcuZ2V0IHN0cmluZyBwb3MgaW5cbiAgICAgIG1hdGNoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkNoYXJNYXAuZmluZF9vcHRpb24gY2hhciB0YWIgd2l0aFxuICAgICAgfCBTb21lIGxpc3RlX2NoYXIgLT5cbiAgICAgICAgYXV4IChwb3MgLSAxKVxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBjaGFyIC0+IGNoYXIgOjogbGlzdClcbiAgICAgICAgICAgICBsIChMaXN0LnJldiBsaXN0ZV9jaGFyKSlcbiAgICAgIHwgTm9uZSAtPiBhdXggKHBvcyAtIDEpIChjaGFyIDo6IGwpXG4gICAgKVxuICBpblxuICBsZXQgbCA9IGF1eCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSAxKSBbXSBpblxuICBlcnJvciwgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKFN0cmluZy5tYWtlIDEpIChMaXN0LnJldiBsKSlcblxubGV0IHNvcnRlZF9wYXJ0c19vZl9saXN0IG4gbGlzdCA9XG4gIGxldCBsaXN0ID0gTGlzdC5zb3J0IChmdW4gYSBiIC0+IGNvbXBhcmUgYiBhKSBsaXN0IGluXG4gIGxldCByZWMgYXV4IGsgbGlzdCBzdWZmaXggb3V0cHV0ID1cbiAgICBpZiBrID0gMCB0aGVuXG4gICAgICBzdWZmaXggOjogb3V0cHV0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaCA6OiB0IC0+IGF1eCBrIHQgc3VmZml4IChhdXggKGsgLSAxKSB0IChoIDo6IHN1ZmZpeCkgb3V0cHV0KVxuICAgICAgfCBbXSAtPiBvdXRwdXRcbiAgICApXG4gIGluXG4gIGF1eCBuIGxpc3QgW10gW11cblxubGV0IHNvcnRfbGlzdCBrZXkgcGFyYW1ldGVyIGVycm9yIGxpc3QgPVxuICBsZXQgZXJyb3IsIHJlZmluZWRfbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCByZWZpbmVkX2xpc3QpIGEgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXkgPSBrZXkgcGFyYW1ldGVyIGVycm9yIGEgaW5cbiAgICAgICAgZXJyb3IsIChrZXksIGEpIDo6IHJlZmluZWRfbGlzdClcbiAgICAgIChlcnJvciwgW10pIGxpc3RcbiAgaW5cbiAgbGV0IHJlZmluZWRfc29ydGVkX2xpc3QgPVxuICAgIExpc3Quc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gY29tcGFyZSBiIGEpIHJlZmluZWRfbGlzdFxuICBpblxuICBlcnJvciwgTGlzdC5yZXZfbWFwIHNuZCByZWZpbmVkX3NvcnRlZF9saXN0XG4iLCIoKipcbiAgKiBtaXNjX3NhLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMTYvMTIvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDAyIDIwMTY+XG4gICogKlxuICAqIFZhcmlvdXMgZnVuY3Rpb25zXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBjb25zdF91bml0IF8gPSAoKVxuXG5sZXQgYXJyYXlfb2ZfbGlzdCBjcmVhdGUgc2V0IHBhcmFtZXRlcnMgZXJyb3IgbGlzdCA9XG4gIGxldCBuID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICBsZXQgYSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG4gaW5cbiAgbGV0IHJlYyBhdXggbCBrIGEgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYVxuICAgIHwgdCA6OiBxIC0+IGF1eCBxIChrICsgMSkgKHNldCBwYXJhbWV0ZXJzIChmc3QgYSkgayB0IChzbmQgYSkpXG4gIGluXG4gIGF1eCBsaXN0IDAgYVxuXG5sZXQgdW5zb21lIChlcnJvciwgeCkgZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gZiBlcnJvclxuICB8IFNvbWUgeCAtPiBlcnJvciwgeFxuXG5sZXQgcmV2X2ludGVyX2xpc3QgY29tcGFyZSBsMSBsMiA9XG4gIGxldCByZWMgYXV4IGwxIGwyIHJlcCA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gTGlzdC5yZXYgcmVwXG4gICAgfCBhIDo6IGIsIGMgOjogZCAtPlxuICAgICAgaWYgY29tcGFyZSBhIGMgPSAwIHRoZW5cbiAgICAgICAgYXV4IGIgZCAoYSA6OiByZXApXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgYSBjIDwgMCB0aGVuXG4gICAgICAgIGF1eCBiIGwyIHJlcFxuICAgICAgZWxzZVxuICAgICAgICBhdXggbDEgZCByZXBcbiAgaW5cbiAgYXV4IGwxIGwyIFtdXG5cbmxldCB0cmFjZSBwYXJhbWV0ZXJzIHN0cmluZyA9XG4gIGlmXG4gICAgcGFyYW1ldGVycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZVxuICB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICBcIiVzJXNcIlxuICAgICAgcGFyYW1ldGVycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAgICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCAoc3RyaW5nICgpKVxuXG5sZXQgaW50ZXJfbGlzdCBjb21wYXJlIGwxIGwyID0gTGlzdC5yZXYgKHJldl9pbnRlcl9saXN0IGNvbXBhcmUgbDEgbDIpXG5cbmxldCBsaXN0XzBfbiBrID1cbiAgbGV0IHJlYyBhdXggayBzb2wgPVxuICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgIHNvbFxuICAgIGVsc2VcbiAgICAgIGF1eCAoayAtIDEpIChrIDo6IHNvbClcbiAgaW5cbiAgYXV4IGsgW11cblxubGV0IGxpc3RfbWludXMgbDEgbDIgPVxuICBsZXQgcmVjIGF1eCBsMSBsMiByZXAgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCB0MSA6OiBxMSwgdDIgOjogcTIgd2hlbiB0MSA9IHQyIC0+IGF1eCBxMSBxMiByZXBcbiAgICB8IHQxIDo6IHExLCBfIC0+IGF1eCBxMSBsMiAodDEgOjogcmVwKVxuICAgIHwgW10sIF8gLT4gcmVwXG4gIGluXG4gIExpc3QucmV2IChhdXggbDEgbDIgW10pXG5cbmxldCBwcmludF9jb21tYSBwYXJhbWV0ZXIgYm9vbCBjb21tYSA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCIlc1wiIGNvbW1hXG5cbmxldCBmZXRjaF9hcnJheSBpIGFycmF5IGRlZiA9XG4gIHRyeVxuICAgIG1hdGNoIGFycmF5LihpKSB3aXRoXG4gICAgfCBOb25lIC0+IGRlZlxuICAgIHwgU29tZSBpIC0+IGlcbiAgd2l0aCBfIC0+IGRlZlxuIiwiKCoqXG4gICAgKiBoYXNoLm1sXG4gICAgKiBvcGVua2FwcGFcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAxOC8xMC8yMDEwXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNCAyMDE3PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHNpZ25hdHVyZSBmb3IgaGFzaCB0YWJsZXMgYW5kIHNldmVyYWwgaW1wbGVtZW50YXRpb25zXG4gICAgKiAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgJ2EgaGFzaFxuXG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgaGFzaFxuXG4gIHZhbCBhZGQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIGhhc2hcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSBoYXNoXG5cbiAgdmFsIGFkZF9vcl9vdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIGhhc2hcblxuICB2YWwgZmluZF9vcHRpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAga2V5IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAoaW50ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAga2V5IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAoaW50ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBmaW5kX29wdGlvbl9sb2dfb25fdGhlX2ZseSA6IGtleSAtPiAnYSBoYXNoIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiBpbnQgLT4gdW5pdCkgLT4gJ2EgaGFzaCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGtleSAtPiAnYiAtPiBpbnQgLT4gJ2EgLT4gJ2EpIC0+ICdiIGhhc2ggLT4gJ2EgLT4gJ2FcbmVuZFxuXG5tb2R1bGUgSGFzaCA9XG5mdW5jdG9yXG4gIChNYXAgOiBNYXBfd3JhcHBlci5TX3dpdGhfbG9ncylcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBrZXkgPSBNYXAuZWx0XG4gICAgICB0eXBlICdhIGhhc2ggPSAoaW50ICogJ2EpIE1hcC5NYXAudFxuXG4gICAgICBsZXQgY3JlYXRlIF8gPSBNYXAuTWFwLmVtcHR5XG5cbiAgICAgIGxldCBhZGQgcGFyYW1ldGVyIGVycm9yIGtleSBhc3NvIGludCA9XG4gICAgICAgIE1hcC5NYXAuYWRkIHBhcmFtZXRlciBlcnJvciBrZXkgKGludCwgYXNzbylcblxuICAgICAgbGV0IG92ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IGFzc28gaW50ID1cbiAgICAgICAgTWFwLk1hcC5vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IGFzc28gaW50ID1cbiAgICAgICAgTWFwLk1hcC5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgKGludCwgYXNzbylcblxuICAgICAgbGV0IGZpbmRfb3B0aW9uIHBhcmFtZXRlciBlcnJvciBhIGIgPVxuICAgICAgICBsZXQgZXJyb3InLCBvdXRwdXQgPSBNYXAuTWFwLmZpbmRfb3B0aW9uIHBhcmFtZXRlciBlcnJvciBhIGIgaW5cbiAgICAgICAgaWYgZXJyb3IgPT0gZXJyb3InIHRoZW5cbiAgICAgICAgICBlcnJvcicsIG91dHB1dFxuICAgICAgICBlbHNlXG4gICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yJyBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcImF0dGVtcHQgdG8gcmVhZCBhbiB1bmV4aXN0aW5nIGFzc29jaWF0aW9uXCIgTm90X2ZvdW5kXG4gICAgICAgICAgICBvdXRwdXRcblxuICAgICAgbGV0IGZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyA9IE1hcC5NYXAuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzXG5cbiAgICAgIGxldCBmaW5kX29wdGlvbl9sb2dfb25fdGhlX2ZseSBhIGIgPVxuICAgICAgICBMaWZ0X2Vycm9yX2xvZ3MubGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iaW5hcnkgZmluZF9vcHRpb24gYSBiXG5cbiAgICAgIGxldCBpdGVyIGYgPSBNYXAuTWFwLml0ZXIgKGZ1biAoYSA6IGtleSkgKGIsIGMpIC0+IGYgYSBjIGIpXG4gICAgICBsZXQgZm9sZCBmID0gTWFwLk1hcC5mb2xkIChmdW4gYSAoYiwgYykgZCAtPiBmIGEgYyBiIGQpXG4gICAgZW5kIDpcbiAgICAgIEhhc2ggd2l0aCB0eXBlIGtleSA9IE1hcC5lbHQpXG5cbm1vZHVsZSBIYXNoX29mX09yZCA9XG5mdW5jdG9yIChPIDogU2V0TWFwLk9yZGVyZWRUeXBlKSAtPiBIYXNoIChNYXBfd3JhcHBlci5NYWtlIChTZXRNYXAuTWFrZSAoTykpKVxuIiwibGV0IGxvY2FsX3RyYWNlID0gZmFsc2VcblxudHlwZSBub2RlID0gaW50XG5cbmxldCBub2RlX29mX2ludCB4ID0geFxubGV0IGludF9vZl9ub2RlICh4IDogbm9kZSkgOiBpbnQgPSB4XG5cbm1vZHVsZSBOb2RlU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBub2RlXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IEZvcm1hdC5wcF9wcmludF9pbnRcbmVuZClcblxubW9kdWxlIE5vZGVNYXAgPSBOb2RlU2V0TWFwLk1hcFxuXG5tb2R1bGUgRml4ZWRfc2l6ZV9hcnJheSA6XG4gIEludF9zdG9yYWdlLlN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IG5vZGUgYW5kIHR5cGUgZGltZW5zaW9uID0gaW50ID1cbiAgSW50X3N0b3JhZ2UuUXVpY2tfa2V5X2xpc3QgKEludF9zdG9yYWdlLkludF9zdG9yYWdlX2ltcGVyYXRpZilcblxubW9kdWxlIE5vZGVhcnJheSA6XG4gIEludF9zdG9yYWdlLlN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IG5vZGUgYW5kIHR5cGUgZGltZW5zaW9uID0gaW50ID1cbiAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWZcblxudHlwZSAoJ25vZGVfbGFiZWxzLCAnZWRnZV9sYWJlbHMpIGdyYXBoID0ge1xuICBub2RlX2xhYmVsczogJ25vZGVfbGFiZWxzIEZpeGVkX3NpemVfYXJyYXkudDtcbiAgZWRnZXM6IChub2RlICogJ2VkZ2VfbGFiZWxzKSBsaXN0IEZpeGVkX3NpemVfYXJyYXkudDtcbn1cblxubGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG5vZGVfb2Zfbm9kZV9sYWJlbCBub2RlX2xpc3QgZWRnZV9saXN0ID1cbiAgbGV0IG1heF9ub2RlID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG0gaSAtPiBtYXggbSAoaW50X29mX25vZGUgaSkpIDAgbm9kZV9saXN0XG4gIGluXG4gIGxldCBlcnJvciwgbm9kZXMgPSBGaXhlZF9zaXplX2FycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG1heF9ub2RlIGluXG4gIGxldCBlcnJvciwgbm9kZXMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChlcnJvciwgbm9kZXMpIGkgLT5cbiAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChpIDogbm9kZSlcbiAgICAgICAgICAobm9kZV9vZl9ub2RlX2xhYmVsIGkpIG5vZGVzKVxuICAgICAgKGVycm9yLCBub2RlcykgKExpc3QucmV2IG5vZGVfbGlzdClcbiAgaW5cbiAgbGV0IGVycm9yLCBlZGdlcyA9IEZpeGVkX3NpemVfYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbWF4X25vZGUgaW5cbiAgbGV0IGFkZF9lZGdlIHBhcmFtZXRlcnMgZXJyb3IgKG4xLCBsYWJlbCwgbjIpIGVkZ2VzID1cbiAgICBsZXQgZXJyb3IsIG9sZCA9XG4gICAgICBtYXRjaCBGaXhlZF9zaXplX2FycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBuMSBlZGdlcyB3aXRoXG4gICAgICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCBbXVxuICAgICAgfCBlcnJvciwgU29tZSBhIC0+IGVycm9yLCBhXG4gICAgaW5cbiAgICBGaXhlZF9zaXplX2FycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIG4xICgobjIsIGxhYmVsKSA6OiBvbGQpIGVkZ2VzXG4gIGluXG4gIGxldCBlcnJvciwgZWRnZXMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChlcnJvciwgZWRnZXMpIGVkZ2UgLT4gYWRkX2VkZ2UgcGFyYW1ldGVycyBlcnJvciBlZGdlIGVkZ2VzKVxuICAgICAgKGVycm9yLCBlZGdlcykgZWRnZV9saXN0XG4gIGluXG4gIGVycm9yLCB7IG5vZGVfbGFiZWxzID0gbm9kZXM7IGVkZ2VzIH1cblxubGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIGkgdCA9XG4gIG1hdGNoIE5vZGVhcnJheS51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSB0IHdpdGhcbiAgfCBlcnJvciwgU29tZSBpIC0+IGVycm9yLCBpXG4gIHwgZXJyb3IsIE5vbmUgLT4gZXJyb3IsIC0xXG5cbmxldCBnZXRfYiBwYXJhbWV0ZXJzIGVycm9yIGkgdCA9XG4gIG1hdGNoIE5vZGVhcnJheS51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSB0IHdpdGhcbiAgfCBlcnJvciwgU29tZSBpIC0+IGVycm9yLCBpXG4gIHwgZXJyb3IsIE5vbmUgLT4gZXJyb3IsIGZhbHNlXG5cbmxldCBjb21wdXRlX3NjYyA/bG93ID9wcmUgP29uX3N0YWNrIHBhcmFtZXRlcnMgZXJyb3Igbl90b19zdHJpbmcgZ3JhcGggPVxuICBsZXQgZXJyb3IgPVxuICAgIGlmIGxvY2FsX3RyYWNlIHx8IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgXCJDT01QVVRFIEJSSURHRTogXFxuIEdyYXBoOiBcXG4gTm9kZXM6IFxcblwiXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5pdGVyIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgaSBqIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgXCIlaSAlcztcXG5cIiBpIChuX3RvX3N0cmluZyBqKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yKVxuICAgICAgICAgIGdyYXBoLm5vZGVfbGFiZWxzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5pdGVyIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgaSBsIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgXCIlaTpcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGVycm9yIChqLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgICAgIFwiJWksXCIgalxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yKVxuICAgICAgICAgICAgICAgIGVycm9yIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yKVxuICAgICAgICAgIGdyYXBoLmVkZ2VzXG4gICAgICBpblxuICAgICAgZXJyb3JcbiAgICApIGVsc2VcbiAgICAgIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrID1cbiAgICBtYXRjaCBsb3csIHByZSwgb25fc3RhY2sgd2l0aFxuICAgIHwgU29tZSBsb3csIFNvbWUgcHJlLCBTb21lIG9uX3N0YWNrIC0+IGVycm9yLCBsb3csIHByZSwgb25fc3RhY2tcbiAgICB8IE5vbmUsIF8sIF8gfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yLCBfbWF4X25vZGUgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5LmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gX3BhcmFtZXRlciBlcnJvciBpIF8gaiAtPiBlcnJvciwgbWF4IChpbnRfb2Zfbm9kZSBpKSBqKVxuICAgICAgICAgIGdyYXBoLm5vZGVfbGFiZWxzIDBcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvdyA9XG4gICAgICAgIG1hdGNoIGxvdyB3aXRoXG4gICAgICAgIHwgU29tZSBsb3cgLT4gZXJyb3IsIGxvd1xuICAgICAgICB8IE5vbmUgLT4gTm9kZWFycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDFcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIHByZSA9XG4gICAgICAgIG1hdGNoIHByZSB3aXRoXG4gICAgICAgIHwgU29tZSBwcmUgLT4gZXJyb3IsIHByZVxuICAgICAgICB8IE5vbmUgLT4gTm9kZWFycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDFcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIG9uX3N0YWNrID1cbiAgICAgICAgbWF0Y2ggb25fc3RhY2sgd2l0aFxuICAgICAgICB8IFNvbWUgb25fc3RhY2sgLT4gZXJyb3IsIG9uX3N0YWNrXG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb3csIHByZSwgb25fc3RhY2tcbiAgaW5cbiAgbGV0IHJlYyBhdXggcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgdiA9XG4gICAgbGV0IGVycm9yLCBwcmUgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBjb3VudGVyIHByZSBpblxuICAgIGxldCBlcnJvciwgbG93ID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgY291bnRlciBsb3cgaW5cbiAgICBsZXQgc3RhY2sgPSB2IDo6IHN0YWNrIGluXG4gICAgbGV0IGVycm9yLCBvbl9zdGFjayA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IHRydWUgb25fc3RhY2sgaW5cbiAgICBsZXQgY291bnRlciA9IHN1Y2MgY291bnRlciBpblxuICAgIGxldCBlcnJvciwgZWRnZXNfdiA9XG4gICAgICBtYXRjaCBGaXhlZF9zaXplX2FycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciB2IGdyYXBoLmVkZ2VzIHdpdGhcbiAgICAgIHwgZXJyb3IsIE5vbmUgLT4gZXJyb3IsIFtdXG4gICAgICB8IGVycm9yLCBTb21lIGEgLT4gZXJyb3IsIGFcbiAgICBpblxuICAgIGxldCBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSkgKHcsIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBwcmVfdyA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHcgcHJlIGluXG4gICAgICAgICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgICAgICAgIGlmIHByZV93ID0gLTEgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSA9XG4gICAgICAgICAgICAgICAgYXV4IHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIHdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3dfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgbG93IGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG93X3cgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB3IGxvdyBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvdyA9XG4gICAgICAgICAgICAgICAgTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgKG1pbiBsb3dfdiBsb3dfdykgbG93XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGIgPSBnZXRfYiBwYXJhbWV0ZXJzIGVycm9yIHcgb25fc3RhY2sgaW5cbiAgICAgICAgICAgICAgaWYgYiB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvd192ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBsb3cgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIHByZV93ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdyBwcmUgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvdyA9XG4gICAgICAgICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiAobWluIGxvd192IHByZV93KSBsb3dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSlcbiAgICAgICAgKGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgICBlZGdlc192XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvd192ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBsb3cgaW5cbiAgICBsZXQgZXJyb3IsIHByZV92ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBwcmUgaW5cbiAgICBpZiBsb3dfdiA9IHByZV92IHRoZW4gKFxuICAgICAgbGV0IHJlYyBhdXgyIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIGNjIHZcbiAgICAgICAgICA9XG4gICAgICAgIG1hdGNoIHN0YWNrIHdpdGhcbiAgICAgICAgfCB3JyA6OiBzdGFjayAtPlxuICAgICAgICAgIGxldCBlcnJvciwgb25fc3RhY2sgPVxuICAgICAgICAgICAgTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHcnIGZhbHNlIG9uX3N0YWNrXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgY2MgPSB3JyA6OiBjYyBpblxuICAgICAgICAgIGlmIHYgPSB3JyB0aGVuXG4gICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgY2MgOjogc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGF1eDIgcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgY2MgdlxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgaW5cbiAgICAgIGF1eDIgcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgW10gdlxuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgaW5cbiAgbGV0IGVycm9yLCAocHJlLCBsb3csIF9jb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIF9zdGFjaykgPVxuICAgIEZpeGVkX3NpemVfYXJyYXkuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgdiBfIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgLT5cbiAgICAgICAgbGV0IGVycm9yLCBwcmVfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgcHJlIGluXG4gICAgICAgIGlmIHByZV92ID0gLTEgdGhlblxuICAgICAgICAgIGF1eCBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciB2XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSlcbiAgICAgIGdyYXBoLm5vZGVfbGFiZWxzXG4gICAgICAocHJlLCBsb3csIDEsIG9uX3N0YWNrLCBbXSwgW10pXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgbG9jYWxfdHJhY2UgfHwgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2UgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiU0NDXCJcbiAgICAgIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gbGlzdCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgKExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgICBcIiVpO1wiKVxuICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIlxcblwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCkpXG4gICAgICAgICAgc2NjX2xpc3RcbiAgICAgIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgIClcbiAgaW5cbiAgbGV0IGVycm9yLCBwcmUgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBwcmUgaW5cbiAgbGV0IGVycm9yLCBsb3cgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBsb3cgaW5cbiAgbGV0IGVycm9yLCBvbl9zdGFjayA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIG9uX3N0YWNrIGluXG4gIGVycm9yLCBwcmUsIGxvdywgb25fc3RhY2ssIHNjY19saXN0XG5cbmxldCBkZXRlY3RfYnJpZGdlcyBwYXJhbWV0ZXJzIGVycm9yIGFkZCBncmFwaCBzdHJpbmdfb2ZfbiBzdHJpbmdfb2ZfZSBzY2NcbiAgICBicmlkZ2VzID1cbiAgRml4ZWRfc2l6ZV9hcnJheS5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgbmkgbCBicmlkZ2VzIC0+XG4gICAgICBsZXQgZXJyb3IsIHNjY2kgPVxuICAgICAgICBtYXRjaCBOb2RlYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3Igbmkgc2NjIHdpdGhcbiAgICAgICAgfCBlcnJvciwgU29tZSBzY2NpIC0+IGVycm9yLCBzY2NpXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT4gRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKC0xKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBicmlkZ2VzKSAobmosIGxhYmVsKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc2NjaiA9XG4gICAgICAgICAgICBtYXRjaCBOb2RlYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3Igbmogc2NjIHdpdGhcbiAgICAgICAgICAgIHwgZXJyb3IsIFNvbWUgc2NjaiAtPiBlcnJvciwgc2NjalxuICAgICAgICAgICAgfCBlcnJvciwgTm9uZSAtPiBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoLTIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBzY2NpID0gc2NjaiB0aGVuXG4gICAgICAgICAgICBlcnJvciwgYnJpZGdlc1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaSBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBicmlkZ2VzXG4gICAgICAgICAgICB8IGVycm9yLCBTb21lIG5zdHJpbmdpIC0+XG4gICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICBGaXhlZF9zaXplX2FycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5qIGdyYXBoLm5vZGVfbGFiZWxzXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBicmlkZ2VzXG4gICAgICAgICAgICAgIHwgZXJyb3IsIFNvbWUgbnN0cmluZ2ogLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgaWYgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2UgcGFyYW1ldGVycyB8fCBsb2NhbF90cmFjZVxuICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiVzICVzICVzXCIgKHN0cmluZ19vZl9uIG5zdHJpbmdpKSAoc3RyaW5nX29mX2UgbGFiZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX29mX24gbnN0cmluZ2opXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBhZGQgKG5zdHJpbmdpLCBsYWJlbCwgbnN0cmluZ2opIGJyaWRnZXMpXG4gICAgICAgICAgKSlcbiAgICAgICAgKGVycm9yLCBicmlkZ2VzKSBsKVxuICAgIGdyYXBoLmVkZ2VzIGJyaWRnZXNcblxubGV0IGFkZF9icmlkZ2VzID9sb3cgP3ByZSA/b25fc3RhY2sgP3NjYyBhZGQgcGFyYW1ldGVycyBlcnJvciBzdHJpbmdfb2ZfblxuICAgIHN0cmluZ19vZl9lIGdyYXBoIGJyaWRnZXMgPVxuICBsZXQgZXJyb3IsIHNjYyA9XG4gICAgbWF0Y2ggc2NjIHdpdGhcbiAgICB8IFNvbWUgc2NjIC0+IGVycm9yLCBzY2NcbiAgICB8IE5vbmUgLT4gTm9kZWFycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDFcbiAgaW5cbiAgbGV0IGVycm9yLCBwcmUsIGxvdywgb25fc3RhY2ssIHNjY19saXN0ID1cbiAgICBjb21wdXRlX3NjYyA/bG93ID9wcmUgP29uX3N0YWNrIHBhcmFtZXRlcnMgZXJyb3Igc3RyaW5nX29mX24gZ3JhcGhcbiAgaW5cbiAgbGV0IGVycm9yLCBfLCBzY2MgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChlcnJvciwgbiwgc2NjKSBjYyAtPlxuICAgICAgICBsZXQgZXJyb3IsIG4sIHNjYyA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBuLCBzY2MpIG5vZGUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBzY2MgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3Igbm9kZSBuIHNjYyBpblxuICAgICAgICAgICAgICBlcnJvciwgbiwgc2NjKVxuICAgICAgICAgICAgKGVycm9yLCBuLCBzY2MpIGNjXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBuICsgMSwgc2NjKVxuICAgICAgKGVycm9yLCAxLCBzY2MpIHNjY19saXN0XG4gIGluXG4gIGxldCBlcnJvciwgYnJpZGdlcyA9XG4gICAgZGV0ZWN0X2JyaWRnZXMgcGFyYW1ldGVycyBlcnJvciBhZGQgZ3JhcGggc3RyaW5nX29mX24gc3RyaW5nX29mX2Ugc2NjXG4gICAgICBicmlkZ2VzXG4gIGluXG4gIGxldCBlcnJvciwgc2NjID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3Igc2NjIGluXG4gIGVycm9yLCBsb3csIHByZSwgb25fc3RhY2ssIHNjYywgYnJpZGdlc1xuIiwiKCoqXG4gKiBkaWN0aW9uYXJ5Lm1sXG4gKiBvcGVua2FwcGFcbiAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICpcbiAqIENyZWF0aW9uOiAyMDEwLCB0aGUgMTh0aCBvZiBPY3RvYmVyXG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNSAyMDE3PlxuICogKlxuICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCBpbmRleGVkIHNldCBvZiB2YWx1ZXNcbiAqIER1cmluZyB0aGUgY29uc3RydWN0aW9uIG1lbWJlcnNoaXAsIHRyYW5kdWN0aW9uLCBhbmQgbmV3IGtleSBjYW5cbiAqIGJlIGhhbmRsZWQgaW4gTyhsb2cgbilcbiAqIEFmdGVyIHRoZSBjb25zdHJ1Y3Rpb24ga2V5IGNhbiBiZSB0cmFuc2xhdGVkIGluIE8oMSlcbiAqICpcbiAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIERpY3Rpb25hcnkgPSBzaWdcbiAgdHlwZSBrZXlcbiAgdHlwZSB2YWx1ZVxuICB0eXBlICgnYSwgJ2IpIGRpY3Rpb25hcnlcblxuICB2YWwgaW5pdCA6IHVuaXQgLT4gKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBtZW1iZXIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgdmFsdWUgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIGJvb2xcblxuICB2YWwgYWxsb2NhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogKGtleSAqICdhICogJ2IgKiAoJ2EsICdiKSBkaWN0aW9uYXJ5KSBvcHRpb25cblxuICB2YWwgYWxsb2NhdGVfdW5pcXVlbHkgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogKGtleSAqICdhICogJ2IgKiAoJ2EsICdiKSBkaWN0aW9uYXJ5KSBvcHRpb25cblxuICAoKiAgdmFsIGFsbG9jYXRlX2ZfaWQ6IEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT4gKCdhIC0+ICdhIC0+IGludCkgLT4gdmFsdWUgLT4gKGludCAtPiAnYSkgLT4gJ2EgZGljdGlvbmFyeSAtPiBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogKGludCAqICdhICogJ2EgZGljdGlvbmFyeSkgb3B0aW9uKilcbiAgdmFsIGFsbG9jYXRlX2Jvb2wgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogKGJvb2wgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvbilcblxuICB2YWwgdW5zYWZlX2FsbG9jYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHZhbHVlIC0+XG4gICAgJ2EgLT5cbiAgICAoa2V5IC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpXG5cbiAgdmFsIHRyYW5zbGF0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBrZXkgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICh2YWx1ZSAqICdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBzdGFiaWxpemUgOiAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnlcblxuICB2YWwgaXRlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBrZXkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0KSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG5cbiAgdmFsIGxhc3RfZW50cnkgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBrZXlcblxuICB2YWwgZm9sZCA6XG4gICAgKHZhbHVlIC0+ICdhICogJ2IgLT4ga2V5IC0+ICdjIC0+ICdjKSAtPiAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+ICdjIC0+ICdjXG5lbmRcblxuZXhjZXB0aW9uXG4gIEFzc29jaWF0aW9uX2lzX2V4aXN0aW5nX3dpdGhfdGhlX3NhbWVfdmFsdWVfaW5fYV9kaWZmZXJlbnRfbG9jYXRpb25fbWVtb3J5XG5cbmV4Y2VwdGlvbiBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuXG5tb2R1bGUgRGljdGlvbmFyeSA9XG5mdW5jdG9yXG4gIChIYXNoIDogSGFzaC5IYXNoKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGtleSA9IGludFxuICAgICAgdHlwZSB2YWx1ZSA9IEhhc2gua2V5XG5cbiAgICAgIHR5cGUgKCdhLCAnYikgaW5fY29uc3RydWN0aW9uID0ge1xuICAgICAgICBoYXNoX3RhYmxlOiAoJ2EgKiAnYikgSGFzaC5oYXNoO1xuICAgICAgICBmcmVzaDogaW50O1xuICAgICAgfVxuXG4gICAgICB0eXBlICgnYSwgJ2IpIHN0YWJpbGl6ZWQgPSAodmFsdWUgKiAnYSAqICdiKSBvcHRpb24gYXJyYXlcblxuICAgICAgdHlwZSAoJ2EsICdiKSBkaWN0aW9uYXJ5ID0ge1xuICAgICAgICBpc19zdGFiaWxpemVkOiBib29sO1xuICAgICAgICBzdGFiaWxpemVkOiAoJ2EsICdiKSBzdGFiaWxpemVkO1xuICAgICAgICBpbl9jb25zdHJ1Y3Rpb246ICgnYSwgJ2IpIGluX2NvbnN0cnVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgbGV0IGludmFsaWQgeCBwYXJhbWV0ZXJzIG1oIF9fUE9TX18gbWVzc2FnZSBleG4gPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIG1oIF9fUE9TX18gfm1lc3NhZ2UgZXhuIHhcblxuICAgICAgbGV0IGludmFsaWRfYXJnID0gaW52YWxpZCBOb25lXG4gICAgICBsZXQgaW52YWxpZF9hcmdfYm9vbCA9IGludmFsaWQgKGZhbHNlLCBOb25lKVxuICAgICAgbGV0IHByZWluaXQgKCkgPSB7IGhhc2hfdGFibGUgPSBIYXNoLmNyZWF0ZSAxOyBmcmVzaCA9IDAgfVxuXG4gICAgICBsZXQgcHJlbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uID1cbiAgICAgICAgbGV0IGVycm9yLCBvdXRwdXQgPVxuICAgICAgICAgIEhhc2guZmluZF9vcHRpb25fd2l0aG91dF9sb2dzXG4gICAgICAgICAgICAoKiBpbmRlZWQsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0ZXN0IHdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIGFuIGFzc29jaWF0aW9uICopXG4gICAgICAgICAgICBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBvdXRwdXQgIT0gTm9uZVxuXG4gICAgICBsZXQgcHJldHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHN0YWJpbGl6ZWQgPVxuICAgICAgICBpZiBrZXkgPj0gMCAmJiBrZXkgPCBBcnJheS5sZW5ndGggc3RhYmlsaXplZCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBzdGFiaWxpemVkLihrZXkpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBlcnJvciwgU29tZSBhXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gXCJtaXNzaW5nIGVudHJ5XCJcbiAgICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcbiAgICAgICAgKSBlbHNlIGlmIGtleSA8IDAgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm5lZ2F0aXZlIGtleSBhcmUgbm90IGFsbG93ZWRcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm1pc3NpbmcgZW50cnlcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcblxuICAgICAgbGV0IHByZXN0YWJpbGl6ZSBpbl9jb25zdHJ1Y3Rpb24gPVxuICAgICAgICBsZXQgYXJyYXkgPSBBcnJheS5tYWtlIGluX2NvbnN0cnVjdGlvbi5mcmVzaCBOb25lIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgSGFzaC5pdGVyXG4gICAgICAgICAgICAoZnVuIGEgKGFzc28sIGFzc28nKSBpIC0+IGFycmF5LihpKSA8LSBTb21lIChhLCBhc3NvLCBhc3NvJykpXG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICBpblxuICAgICAgICBhcnJheVxuXG4gICAgICBsZXQgaW5pdCAoKSA9XG4gICAgICAgIHtcbiAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24gPSBwcmVpbml0ICgpO1xuICAgICAgICAgIHN0YWJpbGl6ZWQgPSBBcnJheS5tYWtlIDAgTm9uZTtcbiAgICAgICAgICBpc19zdGFiaWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgZGljdGlvbmFyeSA9XG4gICAgICAgIHByZW1lbWJlciBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uXG5cbiAgICAgIGxldCBzdGFiaWxpemUgZGljdGlvbmFyeSA9XG4gICAgICAgIGlmIGRpY3Rpb25hcnkuaXNfc3RhYmlsaXplZCB0aGVuXG4gICAgICAgICAgZGljdGlvbmFyeVxuICAgICAgICBlbHNlXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb247XG4gICAgICAgICAgICBpc19zdGFiaWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YWJpbGl6ZWQgPSBwcmVzdGFiaWxpemUgZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb247XG4gICAgICAgICAgfVxuXG4gICAgICBsZXQgdHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHN0YWJpbGl6ZSBkaWN0aW9uYXJ5IGluXG4gICAgICAgIHByZXRyYW5zbGF0ZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBkaWN0aW9uYXJ5LnN0YWJpbGl6ZWRcblxuICAgICAgbGV0IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCB1bmlxdWVseSBwYXJhbWV0ZXJzIGVycm9yIGNvbXBhcmVcbiAgICAgICAgICAodmFsdWUgOiB2YWx1ZSkgYXNzbyBidWlsZCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcbiAgICAgICAgICAgICgqIGluZGVlZCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIHRoYXQgZWl0aGVyIHRoZXJlIGlzIG5vIGFzc29jaWF0aW9uLCBvciB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXNzb2NpYXRpb24gKilcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uLmhhc2hfdGFibGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgbGV0IGZyZXNoID0gaW5fY29uc3RydWN0aW9uLmZyZXNoIGluXG4gICAgICAgICAgbGV0IGFzc29faWQgPSBidWlsZCBmcmVzaCBpblxuICAgICAgICAgIGxldCBlcnJvciwgaGFzaF90YWJsZSA9XG4gICAgICAgICAgICBIYXNoLmFkZCBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIChhc3NvLCBhc3NvX2lkKSBmcmVzaFxuICAgICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGhhc2ggPSB7IGhhc2hfdGFibGU7IGZyZXNoID0gZnJlc2ggKyAxIH0gaW5cbiAgICAgICAgICBsZXQgZGljdGlvbmFyeSA9XG4gICAgICAgICAgICBpZiBkaWN0aW9uYXJ5LmlzX3N0YWJpbGl6ZWQgdGhlblxuICAgICAgICAgICAgICB7IGRpY3Rpb25hcnkgd2l0aCBpc19zdGFiaWxpemVkID0gZmFsc2UgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBkaWN0aW9uYXJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHsgZGljdGlvbmFyeSB3aXRoIGluX2NvbnN0cnVjdGlvbiA9IGhhc2ggfSBpblxuICAgICAgICAgIGVycm9yLCAodHJ1ZSwgU29tZSAoZnJlc2gsIGFzc28sIGFzc29faWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIChpLCAoYXNzbycsIGFzc28nX2lkKSkgd2hlbiBhc3NvJyA9PSBhc3NvIC0+XG4gICAgICAgICAgZXJyb3IsIChmYWxzZSwgU29tZSAoaSwgYXNzbycsIGFzc28nX2lkLCBkaWN0aW9uYXJ5KSlcbiAgICAgICAgfCBlcnJvciwgU29tZSAoaSwgKGFzc28nLCBhc3NvJ19pZCkpIHdoZW4gY29tcGFyZSBhc3NvIGFzc28nID0gMCAtPlxuICAgICAgICAgIGlmIHVuaXF1ZWx5IHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnX2Jvb2wgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgIFwid3JvbmcgYXNzb2NpYXRpb24gKHRoZSBpbWFnZSBpcyBub3QgdW5pcXVlbHkgZGVzY3JpYmVkIGluIFxcXG4gICAgICAgICAgICAgICBtZW1vcnkpXCJcbiAgICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKGZhbHNlLCBTb21lIChpLCBhc3NvJywgYXNzbydfaWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIF8gLT5cbiAgICAgICAgICBpbnZhbGlkX2FyZ19ib29sIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgXCJ3cm9uZyBhc3NvY2lhdGlvbiAoc2V2ZXJhbCBpbWFnZXMgZm9yIHRoZSBzYW1lIGtleSlcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcblxuICAgICAgbGV0IGFsbG9jYXRlIGFhIGUgeCB2IGEgZCBmID1cbiAgICAgICAgbGV0IGEsIChfLCBjKSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCBmYWxzZSBhYSBlIHggdiBhIGQgZiBpblxuICAgICAgICBhLCBjXG5cbiAgICAgIGxldCBhbGxvY2F0ZV91bmlxdWVseSBhYSBlIHggdiBhIGQgZiA9XG4gICAgICAgIGxldCBhLCAoXywgYykgPSBhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QgdHJ1ZSBhYSBlIHggdiBhIGQgZiBpblxuICAgICAgICBhLCBjXG5cbiAgICAgIGxldCBhbGxvY2F0ZV9ib29sIGFhIGUgPSBhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QgZmFsc2UgYWEgZVxuXG4gICAgICBsZXQgdW5zYWZlX2FsbG9jYXRlIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgYXNzbyBidWlsZCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIGxldCBmcmVzaCA9IGluX2NvbnN0cnVjdGlvbi5mcmVzaCBpblxuICAgICAgICBsZXQgYXNzb19pZCA9IGJ1aWxkIGZyZXNoIGluXG4gICAgICAgIGxldCBlcnJvciwgaGFzaF90YWJsZSA9XG4gICAgICAgICAgSGFzaC5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgKGFzc28sIGFzc29faWQpIGZyZXNoXG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFzaCA9IHsgaGFzaF90YWJsZTsgZnJlc2ggPSBmcmVzaCArIDEgfSBpblxuICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHsgZGljdGlvbmFyeSB3aXRoIGluX2NvbnN0cnVjdGlvbiA9IGhhc2ggfSBpblxuICAgICAgICBlcnJvciwgKGZyZXNoLCBhc3NvLCBhc3NvX2lkLCBkaWN0aW9uYXJ5KVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXJzIGVycm9yIGYgZGljID1cbiAgICAgICAgbGV0IGRpYycgPSBzdGFiaWxpemUgZGljIGluXG4gICAgICAgIGxldCBnIGtleSBlcnJvciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lICh2YWx1ZSwgYSwgYikgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhIGJcbiAgICAgICAgaW5cbiAgICAgICAgKCogaWYgZGljLmlzX3N0YWJpbGl6ZWRcbiAgICAgICAgICAgdGhlbiopXG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgZyBlcnJvciBkaWMnLnN0YWJpbGl6ZWRcbiAgICAgICgqZWxzZSBIYXNoLmZvbGRcbiAgICAgICAgKGZ1biB2YWx1ZSAoYSxiKSBrZXkgZXJyb3IgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhIGIpXG4gICAgICAgIGRpYy5pbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZSBlcnJvciopXG5cbiAgICAgIGxldCBmb2xkIGYgZGljdGlvbmFyeSA9XG4gICAgICAgIGxldCBpbl9jb25zdHJ1Y3Rpb24gPSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbiBpblxuICAgICAgICBIYXNoLmZvbGQgZiBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuXG4gICAgICBsZXQgbGFzdF9lbnRyeSBfcGFyYW1ldGVycyBlcnJvciBkaWMgPVxuICAgICAgICBlcnJvciwgZGljLmluX2NvbnN0cnVjdGlvbi5mcmVzaCAtIDFcbiAgICBlbmQgOlxuICAgICAgRGljdGlvbmFyeSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIHZhbHVlID0gSGFzaC5rZXkpXG5cbm1vZHVsZSBEaWN0aW9uYXJ5X29mX09yZCA9XG5mdW5jdG9yIChPIDogU2V0TWFwLk9yZGVyZWRUeXBlKSAtPiBEaWN0aW9uYXJ5IChIYXNoLkhhc2hfb2ZfT3JkIChPKSlcbiIsIigqKlxuICAgKiB0aWNrX3N0b3JpZXMubWxcbiAgICpcbiAgICogUHJvZ3Jlc3MgYmFyIChjb21pbmcgZnJvbSBNb2RzLm1sKVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDUvMjAxNlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTcvMDUvMjAxNlxuICAgKiAqXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IHRpY2tfc3RvcmllcyBmIGNvbmYgc2F2ZV9wcm9ncmVzc19iYXIgKGluaXQsIGxhc3QsIGNvdW50ZXIsIG5fc3RvcmllcykgPVxuICBsZXQgKCkgPVxuICAgIGlmIG5vdCBpbml0IHRoZW4gKFxuICAgICAgbGV0IGMgPSByZWYgY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZSBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGYgaW5cbiAgICAgIHdoaWxlICFjID4gMCBkb1xuICAgICAgICBMb2dnZXJzLmZwcmludGYgZiBcIl9cIjtcbiAgICAgICAgYyA6PSAhYyAtIDFcbiAgICAgIGRvbmU7XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgZlxuICAgIClcbiAgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG5fc3RvcmllcyA8PSAwICYmIGNvdW50ZXIgPSAwIHRoZW5cbiAgICAgIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemVcbiAgICBlbHNlIGlmIGNvdW50ZXIgPiBuX3N0b3JpZXMgdGhlblxuICAgICAgMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5jID0gY291bnRlciAqIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemUgLyBuX3N0b3JpZXMgaW5cbiAgICAgIGxldCBubCA9IGxhc3QgKiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NTaXplIC8gbl9zdG9yaWVzIGluXG4gICAgICBuYyAtIG5sXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGF1eCBuID1cbiAgICBpZiBuIDw9IDAgdGhlblxuICAgICAgKClcbiAgICBlbHNlIChcbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBmIFwiJWNcIiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NDaGFyIGluXG4gICAgICBhdXggKG4gLSAxKVxuICAgIClcbiAgaW5cbiAgbGV0ICgpID0gYXV4IG4gaW5cbiAgbGV0ICgpID0gTG9nZ2Vycy5mbHVzaF9sb2dnZXIgZiBpblxuICBsZXQgKCkgPSBpZiBjb3VudGVyID0gbl9zdG9yaWVzIHRoZW4gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGYgaW5cbiAgbGV0IGJhciA9IHRydWUsIGNvdW50ZXIsIGNvdW50ZXIgKyAxLCBuX3N0b3JpZXMgaW5cbiAgbGV0ICgpID0gc2F2ZV9wcm9ncmVzc19iYXIgYmFyIGluXG4gIGJhclxuIiwiKCoqXG4gICAqIGdyYXBoX2Nsb3N1cmUubWxcbiAgICpcbiAgICogQWxnb3JpdGhtcyB0byBjb21wdXRlIHRyYW5zaXRpdmUgY2xvc3VyZSBvZiBvYmVydmFibGVzIGluIHRyYWNlc1xuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDgvMjAxM1xuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTAvMDkvMjAxM1xuICAgKiAqXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIEEgPSBBcnJheVxubW9kdWxlIFMgPSBNb2RzLkludFNldFxubW9kdWxlIE0gPSBNb2RzLkludE1hcFxuXG5sZXQgaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBob24gPSB0cnVlXG5sZXQgY2hlY2tfbW9kZSA9IGZhbHNlXG5cbnR5cGUgYWxnb190eXBlID0gVG9wX2Rvd24gfCBCb3R0b21fdXAgfCBDaGVja1xudHlwZSBvcmRlciA9IEluY3JlYXNpbmdfd2l0aF9sYXN0X2V2ZW50IHwgRGVjcmVhc2luZ193aXRob3V0X2xhc3RfZXZlbnRcblxudHlwZSBjb25maWcgPSB7XG4gIGRvX3RpY2s6IGJvb2w7XG4gIGtlZXBfYWxsX25vZGVzOiBib29sO1xuICBjdXRfdHJhbnNpdGl2ZV9wYXRoOiBib29sO1xuICBzdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHM6IGJvb2w7XG4gIG1heF9pbmRleDogaW50O1xuICBhbGdvOiBhbGdvX3R5cGU7XG59XG5cbmxldCBjb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyID1cbiAge1xuICAgIGRvX3RpY2sgPSB0cnVlO1xuICAgIGtlZXBfYWxsX25vZGVzID0gZmFsc2U7XG4gICAgY3V0X3RyYW5zaXRpdmVfcGF0aCA9IHRydWU7XG4gICAgc3RhdF90cmFuc19jbG9zdXJlX2Zvcl9iaWdfZ3JhcGhzID0gdHJ1ZTtcbiAgICBtYXhfaW5kZXggPSAzMDA7XG4gICAgYWxnbyA9IEJvdHRvbV91cCAoKmlmIGNoZWNrX21vZGUgdGhlbiBDaGVjayBlbHNlIFRvcF9kb3duKik7XG4gIH1cblxubGV0IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXIgPVxuICB7IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgd2l0aCBkb190aWNrID0gZmFsc2UgfVxuXG5sZXQgY29uZmlnX3NtYWxsX2dyYXBoID1cbiAge1xuICAgIGRvX3RpY2sgPSBmYWxzZTtcbiAgICBrZWVwX2FsbF9ub2RlcyA9IHRydWU7XG4gICAgY3V0X3RyYW5zaXRpdmVfcGF0aCA9IGZhbHNlO1xuICAgIHN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBocyA9IHRydWU7XG4gICAgYWxnbyA9IEJvdHRvbV91cDtcbiAgICBtYXhfaW5kZXggPSAzMDA7XG4gIH1cblxubGV0IHN3YXAgZiBhIGIgPSBmIGIgYVxubGV0IGlnbm9yZV9mc3QgZiBfID0gZlxuXG5sZXQgcmVjIGNvbXBhcmVfc3VjYyBwIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgfCBhIDo6IHEgLT5cbiAgICAobWF0Y2ggcSB3aXRoXG4gICAgfCBiIDo6IF8gd2hlbiBwIGEgYiAtPiBjb21wYXJlX3N1Y2MgcCBxXG4gICAgfCBfIC0+IGZhbHNlKVxuXG5sZXQgc3RyaWN0bHlfaW5jcmVhc2luZyA9IGNvbXBhcmVfc3VjYyAoZnVuIChhIDogaW50KSBiIC0+IGEgPCBiKVxubGV0IHN0cmljdGx5X2RlY3JlYXNpbmcgPSBjb21wYXJlX3N1Y2MgKGZ1biAoYSA6IGludCkgYiAtPiBhID4gYilcbmxldCBjb25jYXQgYSA9IExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgYSlcblxubGV0IHByaW50X2xpc3QgZiBsID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXUAuXCIgKFBwLmxpc3QgUHAuY29tbWEgRm9ybWF0LnBwX3ByaW50X3N0cmluZykgbFxuXG5sZXQgY2hlY2sgZm9ybSBwIGYgc3RyaW5nIGEgYiA9XG4gIG1hdGNoIHAgYSwgcCBiIHdpdGhcbiAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYSBpblxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSBiIGluXG4gICAgZmFpbHdpdGggKHN0cmluZyBeIFwiX2FyZzFfMlwiKVxuICB8IHRydWUsIGZhbHNlIC0+XG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGIgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMlwiKVxuICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGEgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMVwiKVxuICB8IHRydWUsIHRydWUgLT5cbiAgICBsZXQgcmVwID0gZiBhIGIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gcmVwIGluXG4gICAgaWYgcCByZXAgdGhlblxuICAgICAgcmVwXG4gICAgZWxzZSAoXG4gICAgICBwcmludF9saXN0IGZvcm0gYTtcbiAgICAgIHByaW50X2xpc3QgZm9ybSBiO1xuICAgICAgcHJpbnRfbGlzdCBmb3JtIHJlcDtcbiAgICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9vdXRwdXRcIilcbiAgICApXG5cbmxldCBpc19zdHJpY3Rfc3VibGlzdCBwIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgW10sIF8gOjogXyAtPiB0cnVlXG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IHQnXG4gICAgfCBoIDo6IF8sIGgnIDo6IF8gd2hlbiBwIGggaCcgLT4gZmFsc2VcbiAgICB8IF8sIF8gOjogdCcgLT4gYXV4IGEgdCdcbiAgaW5cbiAgYXV4IGEgYlxuXG5sZXQgaW5zZXJ0X2VsdCBwIGUgPSBMaXN0X3V0aWwubWVyZ2VfdW5pcSBwIFsgZSBdXG5cbmxldCBkaWZmX2xpc3QgcCBhIGIgPVxuICBsZXQgcmVjIGF1eCBhIGIgYWNjdSA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBiLCBbXSAtPiBMaXN0LnJldiAoTGlzdC5yZXZfYXBwZW5kIGIgYWNjdSlcbiAgICB8IFtdLCBfIDo6IF8gLT4gTGlzdC5yZXYgYWNjdVxuICAgIHwgaCA6OiB0LCBoJyA6OiB0JyB3aGVuIGggPSBoJyAtPiBhdXggdCB0JyBhY2N1XG4gICAgfCBoIDo6IHQsIGgnIDo6IF8gd2hlbiBwIGggaCcgLT4gYXV4IHQgYiAoaCA6OiBhY2N1KVxuICAgIHwgXywgXyA6OiB0JyAtPiBhdXggYSB0JyBhY2N1XG4gIGluXG4gIGF1eCBhIGIgW11cblxubGV0IGNvbXBhcmVfYm9vbCBhIGIgPSBjb21wYXJlIGEgYiA8IDBcbmxldCBkaWZmX2xpc3RfZGVjcmVhc2luZyA9IGRpZmZfbGlzdCAoc3dhcCBjb21wYXJlX2Jvb2wpXG5sZXQgbWVyZ2VfbGlzdF9kZWNyZWFzaW5nID0gTGlzdF91dGlsLm1lcmdlX3VuaXEgKGZ1biB4IHkgLT4gU3RkbGliLmNvbXBhcmUgeSB4KVxuXG5sZXQgY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50IGNvbmZpZ1xuICAgIHByZWMgaXNfb2JzIGYgYSA9XG4gIGxldCBlcnJfbG9nZ2VyID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlciBpblxuICBsZXQgaXNfb2JzID1cbiAgICBpZiBjb25maWcua2VlcF9hbGxfbm9kZXMgdGhlblxuICAgICAgZnVuIF8gLT5cbiAgICB0cnVlXG4gICAgZWxzZVxuICAgICAgaXNfb2JzXG4gIGluXG4gIGxldCBtYXhfaW5kZXggPSBNLmZvbGQgKGZ1biBpIF8gLT4gbWF4IGkpIHByZWMgMCBpblxuICBsZXQgKCkgPVxuICAgIGlmIGNvbmZpZy5zdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHMgJiYgY29uZmlnLm1heF9pbmRleCA+IDMwMCB0aGVuIChcbiAgICAgIGxldCBuX2VkZ2VzID0gTS5mb2xkIChpZ25vcmVfZnN0IChTLmZvbGQgKGlnbm9yZV9mc3Qgc3VjYykpKSBwcmVjIDAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgZXJyX2xvZ2dlciBcIlxcdFxcdFRyYW5zaXRpdmUgY2xvc3VyZSAoJWkgbm9kZXMsICVpIGVkZ2VzKVwiXG4gICAgICAgICAgbWF4X2luZGV4IG5fZWRnZXNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZXJyX2xvZ2dlciBpblxuICAgICAgKClcbiAgICApXG4gIGluXG4gIGxldCBkb190aWNrLCB0aWNrLCBjbG9zZV90aWNrID1cbiAgICBpZiBtYXhfaW5kZXggPiAzMDAgJiYgY29uZmlnLmRvX3RpY2sgdGhlbiAoXG4gICAgICBsZXQgdGljayA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbWF4X2luZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBmID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgbGV0IGNsb3NlICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGYsIHRpY2ssIGNsb3NlXG4gICAgKSBlbHNlXG4gICAgICAoZnVuIHggLT4geCksIChmYWxzZSwgMCwgMCwgMCksIGZ1biAoKSAtPiAoKVxuICBpblxuICBsZXQgc19wcmVkX3N0YXIgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBjbGVhbiwgX21heF9zdWNjID1cbiAgICBsZXQgbWF4X3N1Y2MgPSBBLmluaXQgKG1heF9pbmRleCArIDEpIChmdW4gaSAtPiBpKSBpblxuICAgIGxldCBfID1cbiAgICAgIE0uaXRlclxuICAgICAgICAoZnVuIHN1Y2MgLT5cbiAgICAgICAgICBTLml0ZXIgKGZ1biBwcmVkIC0+XG4gICAgICAgICAgICAgIEEuc2V0IG1heF9zdWNjIHByZWQgKG1heCBzdWNjIChBLmdldCBtYXhfc3VjYyBwcmVkKSkpKVxuICAgICAgICBwcmVjXG4gICAgaW5cbiAgICBsZXQgaXNfbGFzdF9zdWNjX29mID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICAgIGxldCBhZGQgbm9kZSBtYXhfc3VjYyA9XG4gICAgICBsZXQgb2xkX2wgPSBBLmdldCBpc19sYXN0X3N1Y2Nfb2YgbWF4X3N1Y2MgaW5cbiAgICAgIGxldCBsJyA9IG5vZGUgOjogb2xkX2wgaW5cbiAgICAgIEEuc2V0IGlzX2xhc3Rfc3VjY19vZiBtYXhfc3VjYyBsJ1xuICAgIGluXG4gICAgbGV0IF8gPSBBLml0ZXJpIGFkZCBtYXhfc3VjYyBpblxuICAgIGxldCBfID0gQS5zZXQgaXNfbGFzdF9zdWNjX29mIDAgW10gaW5cbiAgICBsZXQgZ2Nfd2hlbl92aXNpdCBub2RlID1cbiAgICAgIExpc3QuaXRlciAoZnVuIGsgLT4gQS5zZXQgc19wcmVkX3N0YXIgayBbXSkgKEEuZ2V0IGlzX2xhc3Rfc3VjY19vZiBub2RlKVxuICAgIGluXG4gICAgZ2Nfd2hlbl92aXNpdCwgZnVuIGkgLT4gQS5nZXQgbWF4X3N1Y2MgaVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICAgIHwgU29tZSBlIC0+XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3IgZSBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIE0uZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgKGZ1biBzdWNjIHNfcHJlZCAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyLCBhKSAtPlxuICAgICAgICBsZXQgcmVjIGF1eCAobCA6IGludCBsaXN0KSAoYWNjdSA6IGludCBsaXN0KSA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhY2N1XG4gICAgICAgICAgfCBwcmVkIDo6IHQgLT5cbiAgICAgICAgICAgIGxldCBuZXdfbCA9IEEuZ2V0IHNfcHJlZF9zdGFyIHByZWQgaW5cbiAgICAgICAgICAgIGxldCBkaWZmID1cbiAgICAgICAgICAgICAgaWYgY29uZmlnLmN1dF90cmFuc2l0aXZlX3BhdGggdGhlblxuICAgICAgICAgICAgICAgIGRpZmZfbGlzdF9kZWNyZWFzaW5nIHQgbmV3X2xcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhdXggZGlmZiAobWVyZ2VfbGlzdF9kZWNyZWFzaW5nIChwcmVkIDo6IG5ld19sKSBhY2N1KVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJlZF9zdGFyID1cbiAgICAgICAgICBsZXQgbF9wcmVkID0gUy5mb2xkIChmdW4gaSBqIC0+IGkgOjogaikgc19wcmVkIFtdIGluXG4gICAgICAgICAgbGV0IHMgPSBBLmdldCBzX3ByZWRfc3RhciBzdWNjIGluXG4gICAgICAgICAgYXV4IGxfcHJlZCBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID0gQS5zZXQgc19wcmVkX3N0YXIgc3VjYyBwcmVkX3N0YXIgaW5cbiAgICAgICAgbGV0IF8gPSBjbGVhbiBzdWNjIGluXG4gICAgICAgIGxldCB0aWNrID0gZG9fdGljayB0aWNrIGluXG4gICAgICAgIGlmIGlzX29icyBzdWNjIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGEgPVxuICAgICAgICAgICAgZiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdWNjIHByZWRfc3RhciBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgICAgICAgICAgKGZ1biBhIC0+IFN0b3Auc3VjY2VzcyAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyICsgMSwgYSkpXG4gICAgICAgICAgICAoZnVuIGIgLT4gU3RvcC5zdG9wIChlcnJvciwgbG9nX2luZm8sIGIpKVxuICAgICAgICAgICAgYVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBTdG9wLnN1Y2Nlc3MgKHRpY2ssIGVycm9yLCBsb2dfaW5mbywgY291bnRlciwgYSkpXG4gICAgICBwcmVjXG4gICAgICAodGljaywgZXJyb3IsIGxvZ19pbmZvLCAxLCBhKVxuICBpblxuICBsZXQgXyA9IGNsb3NlX3RpY2sgKCkgaW5cbiAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAoZnVuIChfLCBlcnJvciwgbG9nX2luZm8sIF8sIGEpIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3IgZSBOb25lIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgU3RvcC5zdWNjZXNzIChlcnJvciwgbG9nX2luZm8sIGEpKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYikgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBTdG9wLnN0b3AgKGVycm9yLCBsb2dfaW5mbywgYikpXG4gICAgb3V0cHV0XG5cbmxldCBjbG9zdXJlX2JvdHRvbV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWNcbiAgICBpc19vYnMgPVxuICBsZXQgbWF4X2luZGV4ID0gTS5mb2xkIChmdW4gaSBfIC0+IG1heCBpKSBwcmVjIDAgaW5cbiAgbGV0IHNfcHJlZF9zdGFyID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgZiBfcCBfaCBjIGUgaSBzIGEgPVxuICAgIGxldCBfID0gQS5zZXQgYSBpIHMgaW5cbiAgICBlLCBjLCBTdG9wLnN1Y2Nlc3MgYVxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0XG4gICAgICBjb25maWcgcHJlYyBpc19vYnMgZiBzX3ByZWRfc3RhclxuICBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgZ3JhcGgpIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIChncmFwaCwgRGVjcmVhc2luZ193aXRob3V0X2xhc3RfZXZlbnQpKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgXykgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKHNfcHJlZF9zdGFyLCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCkpXG4gICAgb3V0cHV0XG5cbmxldCBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBfZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgaXNfb2JzIGRlbHRhID1cbiAgbGV0IGVycl9sb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gIGxldCBpc19vYnMgPVxuICAgIGlmIGNvbmZpZy5rZWVwX2FsbF9ub2RlcyB0aGVuXG4gICAgICBmdW4gXyAtPlxuICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBpc19vYnNcbiAgaW5cbiAgbGV0IG1heF9pbmRleCA9IE0uZm9sZCAoZnVuIGkgXyAtPiBtYXggaSkgcHJlYyAwIGluXG4gIGxldCBwcmVjID0gTS5mb2xkIChmdW4gaSBzX3ByZWQgbCAtPiAoaSwgc19wcmVkKSA6OiBsKSBwcmVjIFtdIGluXG4gIGxldCBjcmVhdGVfdGFpbnRzIGkgPVxuICAgIGxldCByZWMgYXV4IGRlbHRhIG91dHB1dCA9XG4gICAgICBpZiBkZWx0YSA9IDAgdGhlblxuICAgICAgICBvdXRwdXRcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4IChkZWx0YSAtIDEpIChTLmVtcHR5IDo6IG91dHB1dClcbiAgICBpblxuICAgIGF1eCBkZWx0YSBbIFMuc2luZ2xldG9uIGkgXVxuICBpblxuICBsZXQgc2hpZnRfdGFpbnRzIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgdCA6OiB0JyA6OiBxIC0+IFMudW5pb24gdCB0JyA6OiBxXG4gICAgfCBfIC0+IGxcbiAgaW5cbiAgbGV0IHJlYyBtZXJnZV90YWludHMgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBfLCBbXSAtPiBsMVxuICAgIHwgW10sIF8gLT4gbDJcbiAgICB8IHQgOjogcSwgdCcgOjogcScgLT4gUy51bmlvbiB0IHQnIDo6IG1lcmdlX3RhaW50cyBxIHEnXG4gIGluXG4gIGxldCBzX3ByZWRfc3RhciA9IEEubWFrZSAobWF4X2luZGV4ICsgMSkgW10gaW5cbiAgbGV0IHRhaW50IGkgdGFpbnRzID1cbiAgICBtYXRjaCB0YWludHMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHQgOjogX3EgLT5cbiAgICAgIFMuaXRlclxuICAgICAgICAoZnVuIHRhaW50IC0+IEEuc2V0IHNfcHJlZF9zdGFyIHRhaW50IChpIDo6IEEuZ2V0IHNfcHJlZF9zdGFyIHRhaW50KSlcbiAgICAgICAgdFxuICBpblxuICBsZXQgZG9fdGljaywgdGljaywgY2xvc2VfdGljayA9XG4gICAgaWYgbWF4X2luZGV4ID4gMzAwICYmIGNvbmZpZy5kb190aWNrIHRoZW4gKFxuICAgICAgbGV0IHRpY2sgPVxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGVycl9sb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICAoZmFsc2UsIDAsIDAsIG1heF9pbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgZiA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgIGxldCBjbG9zZSAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICBmLCB0aWNrLCBjbG9zZVxuICAgICkgZWxzZVxuICAgICAgKGZ1biB4IC0+IHgpLCAoZmFsc2UsIDAsIDAsIDApLCBmdW4gKCkgLT4gKClcbiAgaW5cbiAgbGV0IHRhaW50aW5nID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gdGljayAoaSwgc19wcmVkKSAtPlxuICAgICAgICBsZXQgbmV3X3RhaW50ID1cbiAgICAgICAgICBpZiBpc19vYnMgaSB0aGVuXG4gICAgICAgICAgICBjcmVhdGVfdGFpbnRzIGlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGFpbnRzID0gbWVyZ2VfdGFpbnRzIG5ld190YWludCAoQS5nZXQgdGFpbnRpbmcgaSkgaW5cbiAgICAgICAgbGV0ICgpID0gdGFpbnQgaSB0YWludHMgaW5cbiAgICAgICAgbGV0IHNoaWZ0ZWRfdGFpbnRzID0gc2hpZnRfdGFpbnRzIHRhaW50cyBpblxuICAgICAgICBsZXQgdGFpbnQgeCA9XG4gICAgICAgICAgQS5zZXQgdGFpbnRpbmcgeCAobWVyZ2VfdGFpbnRzIHNoaWZ0ZWRfdGFpbnRzIChBLmdldCB0YWludGluZyB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gUy5pdGVyIHRhaW50IHNfcHJlZCBpblxuICAgICAgICBsZXQgKCkgPSBBLnNldCB0YWludGluZyBpIFtdIGluXG4gICAgICAgIGRvX3RpY2sgdGljaylcbiAgICAgIHRpY2sgcHJlY1xuICBpblxuICBsZXQgKCkgPSBjbG9zZV90aWNrICgpIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKHNfcHJlZF9zdGFyLCBJbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudClcblxubGV0IGdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50IGkgKG0sIG1vZGUpID1cbiAgbWF0Y2ggbW9kZSB3aXRoXG4gIHwgSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgLT4gbS4oaSlcbiAgfCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCAtPlxuICAgIChtYXRjaCBtLihpKSB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgbCAtPiBMaXN0LnJldiAoaSA6OiBsKSlcblxubGV0IGNsb3N1cmVfY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29ic1xuICAgID1cbiAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYSwgYScpID1cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzIDBcbiAgaW5cbiAgbGV0IHQnID0gU3lzLnRpbWUgKCkgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGIsIGInKSA9XG4gICAgY2xvc3VyZV9ib3R0b21fdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0XG4gICAgICB7IGNvbmZpZyB3aXRoIGRvX3RpY2sgPSBmYWxzZSB9XG4gICAgICBwcmVjIGlzX29ic1xuICBpblxuICBsZXQgdCcnID0gU3lzLnRpbWUgKCkgaW5cbiAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJORVc6ICVmIE9MRDogJWYgXFxuXCIgKHQnIC0uIHQpICh0JycgLS4gdCcpIGluXG4gIGxldCBfID1cbiAgICBBLml0ZXJpXG4gICAgICAoZnVuIGkgX3MgLT5cbiAgICAgICAgbGV0IHMgPSBnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudCBpIChhLCBhJykgaW5cbiAgICAgICAgbGV0IHMnID0gZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnQgaSAoYiwgYicpIGluXG4gICAgICAgIGlmIHMgPSBzJyB0aGVuXG4gICAgICAgICAgKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJESUZGRVIgJWlcXG5cIiBpIGluXG4gICAgICAgICAgbGV0IF8gPSBMaXN0Lml0ZXIgKFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVpLCBcIikgcyBpblxuICAgICAgICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW5cbiAgICAgICAgICBsZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksIFwiKSBzJyBpblxuICAgICAgICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApKVxuICAgICAgYVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIChhLCBhJylcblxubGV0IGNsb3N1cmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29icyA9XG4gIG1hdGNoIGNvbmZpZy5hbGdvIHdpdGhcbiAgfCBDaGVjayAtPlxuICAgIGNsb3N1cmVfY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29ic1xuICB8IEJvdHRvbV91cCAtPlxuICAgIGNsb3N1cmVfYm90dG9tX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzXG4gIHwgVG9wX2Rvd24gLT5cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzIDBcblxubGV0IHJlZHVjdGlvbl90b3BfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVjID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5HcmFwaF9yZWR1Y3Rpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAocHJlY19zdGFyLCBfKSA9XG4gICAgY2xvc3VyZV90b3BfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuVHJhbnNpdGl2ZV9jbG9zdXJlIGNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcbiAgICAgIHByZWNcbiAgICAgIChmdW4gXyAtPiB0cnVlKVxuICAgICAgMlxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBNLmZvbGRcbiAgICAgIChmdW4gZWlkIG5laWdoIG91dCAtPlxuICAgICAgICBsZXQgdG9fcmVtb3ZlID0gQS5nZXQgcHJlY19zdGFyIGVpZCBpblxuICAgICAgICBsZXQgcyA9IFMuZm9sZCAoZnVuIGkgbCAtPiBpIDo6IGwpIG5laWdoIFtdIGluXG4gICAgICAgIGxldCBzID0gTGlzdC5yZXYgcyBpblxuICAgICAgICBsZXQgcmVjIGF1eCBsMSBsMiBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgICAgfCBfLCBbXSAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBzZXQgaSAtPiBTLmFkZCBpIHNldCkgb3V0cHV0IGwxXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHF1aXRlIGFubm95aW5nLCB3aHkgcHJlYyBpcyBub3QgZGVzY3JpYmVkIHdpdGggb3JkZXJlZCBsaXN0ICopXG4gICAgICAgICAgfCBbXSwgXyAtPiBvdXRwdXRcbiAgICAgICAgICB8IGggOjogcSwgaCcgOjogcScgLT5cbiAgICAgICAgICAgIGxldCBjbXAgPSBjb21wYXJlIGggaCcgaW5cbiAgICAgICAgICAgIGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICBhdXggcSBsMiAoUy5hZGQgaCBvdXRwdXQpXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgICAgICBhdXggcSBxJyBvdXRwdXRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IChoIDo6IHEpIHEnIG91dHB1dFxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IGF1eCBzIHRvX3JlbW92ZSBTLmVtcHR5IGluXG4gICAgICAgIE0uYWRkIGVpZCBzIG91dClcbiAgICAgIHByZWMgcHJlY1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuR3JhcGhfcmVkdWN0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubGV0IHJlZHVjdGlvbiA9IHJlZHVjdGlvbl90b3BfZG93blxuIiwidHlwZSBxdWFya19saXN0cyA9IHtcbiAgc2l0ZV90ZXN0ZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG4gIHNpdGVfbW9kaWZpZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG4gIGludGVybmFsX3N0YXRlX3Rlc3RlZDogKGludCAqIGludCkgbGlzdDtcbiAgaW50ZXJuYWxfc3RhdGVfbW9kaWZpZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG59XG5cbnR5cGUgZXZlbnRfa2luZCA9IE9CUyBvZiBzdHJpbmcgfCBFVkVOVCBvZiBUcmFjZS5ldmVudF9raW5kXG5cbmxldCBhdG9tX3Rlc3RlZCA9IDFcbmxldCBhdG9tX21vZGlmaWVkID0gMlxubGV0IGF0b21fdGVzdGVkbW9kaWZpZWQgPSAzXG5cbnR5cGUgYXRvbSA9IHtcbiAgY2F1c2FsX2ltcGFjdDogaW50OyAoKigxKSB0ZXN0ZWQgKDIpIG1vZGlmaWVkLCAoMykgdGVzdGVkICsgbW9kaWZpZWQqKVxuICBlaWQ6IGludDsgKCpldmVudCBpZGVudGlmaWVyKilcbiAga2luZDogZXZlbnRfa2luZDsgKCpvYnNlcnZhdGlvbjogc3RyaW5nIGxpc3QqKVxufVxuXG50eXBlIGF0dHJpYnV0ZSA9IGF0b20gbGlzdCAoKnZlcnRpY2FsIHNlcXVlbmNlIG9mIGF0b21zKilcblxudHlwZSBncmlkID0ge1xuICBmbG93OiAoaW50ICogaW50ICogaW50LCBhdHRyaWJ1dGUpIEhhc2h0YmwudDtcbiAgKCoobl9pLHNfaSxxX2kpIC0+IGF0dF9pIHdpdGggbl9pOiBub2RlX2lkLCBzX2k6IHNpdGVfaWQsIHFfaTpcbiAgICBsaW5rICgxKSBvciBpbnRlcm5hbCBzdGF0ZSAoMCkgKilcbiAgcGlkX3RvX2luaXQ6IChpbnQgKiBpbnQgKiBpbnQsIGludCkgSGFzaHRibC50O1xuICBvYnM6IGludCBsaXN0O1xuICBpbml0X3RibDogKGludCwgTW9kcy5JbnRTZXQudCkgSGFzaHRibC50OyAoKmRlY3JlYXNpbmcqKVxuICBpbml0X3RvX2VpZG1heDogKGludCwgaW50KSBIYXNodGJsLnQ7XG59XG5cbnR5cGUgY29uZmlnID0ge1xuICBldmVudHNfa2luZDogZXZlbnRfa2luZCBNb2RzLkludE1hcC50O1xuICBwcmVjXzE6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudDtcbiAgY29uZmxpY3Q6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudDtcbn1cblxudHlwZSBlbnJpY2hlZF9ncmlkID0ge1xuICBjb25maWc6IGNvbmZpZztcbiAgZGVwdGg6IGludDtcbiAgcHJlY19zdGFyOiBpbnQgbGlzdCBhcnJheSAqIEdyYXBoX2Nsb3N1cmUub3JkZXI7ICgqZGVjcmVhc2luZyopXG4gIGRlcHRoX29mX2V2ZW50OiBpbnQgTW9kcy5JbnRNYXAudDtcbiAgc2l6ZTogaW50O1xufVxuXG50eXBlIGZvcm1hdENmbG93ID0gRG90IHwgSHRtbCB8IEpzb25cblxubGV0IGVtcHR5X2NvbmZpZyA9XG4gIHtcbiAgICBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIGNvbmZsaWN0ID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgcHJlY18xID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gIH1cblxubGV0IHByaW50X2V2ZW50X2tpbmQgP2VudiBmID0gZnVuY3Rpb25cbiAgfCBFVkVOVCBlIC0+IFRyYWNlLnByaW50X2V2ZW50X2tpbmQgP2VudiBmIGVcbiAgfCBPQlMgaSAtPlxuICAgIChtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiT0JTKCVzKVwiIGlcbiAgICB8IFNvbWUgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgaSlcblxubGV0IGRlYnVnX3ByaW50X2NhdXNhbCBmIGkgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgaSA9IGF0b21fdGVzdGVkIHRoZW5cbiAgICAgICBcInRlc3RlZFwiXG4gICAgIGVsc2UgaWYgaSA9IGF0b21fbW9kaWZpZWQgdGhlblxuICAgICAgIFwibW9kaWZpZWRcIlxuICAgICBlbHNlIGlmIGkgPSBhdG9tX3Rlc3RlZCBsb3IgYXRvbV9tb2RpZmllZCB0aGVuXG4gICAgICAgXCJ0ZXN0ZWQmbW9kaWZpZWRcIlxuICAgICBlbHNlXG4gICAgICAgXCJDQVVTQUwgSU1QQUNUIFVOREVGSU5FRFwiKVxuXG5sZXQgZGVidWdfcHJpbnRfYXRvbSBmIGEgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwieyMlaTogJWEgJWF9XCIgYS5laWQgZGVidWdfcHJpbnRfY2F1c2FsIGEuY2F1c2FsX2ltcGFjdFxuICAgIChwcmludF9ldmVudF9raW5kID9lbnY6Tm9uZSlcbiAgICBhLmtpbmRcblxubGV0IGRlYnVnX3ByaW50X2dyaWQgZiBnID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+RmxvdzpALFwiIGluXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5pdGVyXG4gICAgICAoZnVuIChub2RlX2lkLCBzaXRlX2lkLCBxKSBsIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzwyPiVpLiVpJXM6QCwlYUBdQCxcIiBub2RlX2lkIHNpdGVfaWRcbiAgICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAgIFwiflwiXG4gICAgICAgICAgIGVsc2UgaWYgcSA9IDEgdGhlblxuICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiVU5ERUZJTkVEXCIpXG4gICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgZGVidWdfcHJpbnRfYXRvbSlcbiAgICAgICAgICBsKVxuICAgICAgZy5mbG93XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAuXCJcblxubGV0IGVtcHR5X2dyaWQgKCkgPVxuICB7XG4gICAgZmxvdyA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBwaWRfdG9faW5pdCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBvYnMgPSBbXTtcbiAgICBpbml0X3RibCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBpbml0X3RvX2VpZG1heCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgfVxuXG5sZXQgYnVpbGRfc3VicyBsID1cbiAgc25kXG4gICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biAobiwgbWFwKSBhIC0+IHN1Y2MgbiwgTW9kcy5JbnRNYXAuYWRkIGEgbiBtYXApXG4gICAgICAgKDEsIE1vZHMuSW50TWFwLmVtcHR5KSBsKVxuXG5sZXQgc3VibWFwIHN1YnMgbCBtIGRlZmF1bHQgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gbScgYSAtPlxuICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBzdWJzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgU29tZSBuZXdfYSAtPlxuICAgICAgICBNb2RzLkludE1hcC5hZGQgbmV3X2FcbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAobWF0Y2ggZGVmYXVsdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICB8IFNvbWUgYSAtPiBhKSlcbiAgICAgICAgICBtJylcbiAgICBNb2RzLkludE1hcC5lbXB0eSBsXG5cbmxldCBhZGRfaW5pdF9waWQgZWlkIHBpZCBncmlkID1cbiAgbGV0IGVpZF9pbml0ID0gSGFzaHRibC5maW5kIGdyaWQucGlkX3RvX2luaXQgcGlkIGluXG4gIGxldCBvbGQgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQgZ3JpZC5pbml0X3RibCBlaWQgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRTZXQuZW1wdHlcbiAgaW5cbiAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGdyaWQuaW5pdF90YmwgZWlkIChNb2RzLkludFNldC5hZGQgZWlkX2luaXQgb2xkKSBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgZ3JpZC5pbml0X3RvX2VpZG1heCBlaWRfaW5pdCBlaWQgaW5cbiAgZ3JpZFxuXG5sZXQgX3N1YnNldCBzdWJzIGwgcyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBzJyBhIC0+XG4gICAgICBpZiBNb2RzLkludFNldC5tZW0gYSBzIHRoZW5cbiAgICAgICAgTW9kcy5JbnRTZXQuYWRkXG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGEgc3VicyB3aXRoXG4gICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgcydcbiAgICAgIGVsc2VcbiAgICAgICAgcycpXG4gICAgTW9kcy5JbnRTZXQuZW1wdHkgbFxuXG5sZXQgc3ViY29uZmlnX3dpdGhfc3VicyBzdWJzIGNvbmZpZyBsID1cbiAge1xuICAgIGV2ZW50c19raW5kID0gc3VibWFwIHN1YnMgbCBjb25maWcuZXZlbnRzX2tpbmQgTm9uZTtcbiAgICBwcmVjXzEgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5wcmVjXzEgKFNvbWUgTW9kcy5JbnRTZXQuZW1wdHkpO1xuICAgIGNvbmZsaWN0ID0gc3VibWFwIHN1YnMgbCBjb25maWcuY29uZmxpY3QgKFNvbWUgTW9kcy5JbnRTZXQuZW1wdHkpO1xuICB9XG5cbmxldCBzdWJlbnJpY2hlZF9ncmlkX3dpdGhfc3VicyBzdWJzIGdyaWQgbCA9XG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IHN1Ym1hcCBzdWJzIGwgZ3JpZC5kZXB0aF9vZl9ldmVudCAoU29tZSAwKSBpblxuICBsZXQgZGVwdGggPSBNb2RzLkludE1hcC5mb2xkIChmdW4gXyAtPiBtYXgpIGRlcHRoX29mX2V2ZW50IDAgaW5cbiAge1xuICAgIHByZWNfc3RhciA9IGdyaWQucHJlY19zdGFyO1xuICAgIGNvbmZpZyA9IHN1YmNvbmZpZ193aXRoX3N1YnMgc3VicyBncmlkLmNvbmZpZyBsO1xuICAgIGRlcHRoX29mX2V2ZW50O1xuICAgIGRlcHRoO1xuICAgIHNpemUgPSBMaXN0Lmxlbmd0aCBsO1xuICB9XG5cbmxldCBfc3ViY29uZmlnIGNvbmZpZyBsID0gc3ViY29uZmlnX3dpdGhfc3VicyAoYnVpbGRfc3VicyBsKSBjb25maWcgbFxubGV0IF9zdWJlbnJpY2hlZF9ncmlkIGdyaWQgbCA9IHN1YmVucmljaGVkX2dyaWRfd2l0aF9zdWJzIChidWlsZF9zdWJzIGwpIGdyaWQgbFxubGV0IGFkZF9vYnNfZWlkIGVpZCBncmlkID0geyBncmlkIHdpdGggb2JzID0gZWlkIDo6IGdyaWQub2JzIH1cblxubGV0IGdyaWRfZmluZCAobm9kZV9pZCwgc2l0ZV9pZCwgcXVhcmspIGdyaWQgPVxuICBIYXNodGJsLmZpbmQgZ3JpZC5mbG93IChub2RlX2lkLCBzaXRlX2lkLCBxdWFyaylcblxubGV0IF9pc19lbXB0eV9ncmlkIGdyaWQgPSBIYXNodGJsLmxlbmd0aCBncmlkLmZsb3cgPSAwXG5cbmxldCBncmlkX2FkZCBxdWFyayBlaWQgKGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSkgZ3JpZCA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChIYXNodGJsLm1lbSBncmlkLmZsb3cgcXVhcmspIHRoZW5cbiAgICAgIEhhc2h0YmwuYWRkIGdyaWQucGlkX3RvX2luaXQgcXVhcmsgZWlkXG4gIGluXG4gIEhhc2h0YmwucmVwbGFjZSBncmlkLmZsb3cgcXVhcmsgYXR0cmlidXRlO1xuICBncmlkXG5cbmxldCBfbGFzdF9ldmVudCBhdHRyaWJ1dGUgPVxuICBtYXRjaCBhdHRyaWJ1dGUgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhIDo6IF8gLT4gU29tZSBhLmVpZFxuXG4oKmFkZHMgYXRvbSBhIHRvIGF0dHJpYnV0ZSBhdHQuXG4gIENvbGxhcHNlcyBsYXN0IGF0b20gaWYgaWYgYmVhcnMgdGhlIHNhbWUgaWQgYXMgYSAtLWluIHRoZSBjYXNlIG9mIGEgbm9uIGF0b21pYyBhY3Rpb24qKVxubGV0IHB1c2ggKGEgOiBhdG9tKSAoYXR0IDogYXRvbSBsaXN0KSA9XG4gIG1hdGNoIGF0dCB3aXRoXG4gIHwgW10gLT4gWyBhIF1cbiAgfCBhJyA6OiBhdHQnIC0+XG4gICAgaWYgYScuZWlkID0gYS5laWQgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKGEnLmtpbmQgPSBhLmtpbmQpIGluXG4gICAgICB7IGEnIHdpdGggY2F1c2FsX2ltcGFjdCA9IGEuY2F1c2FsX2ltcGFjdCBsb3IgYScuY2F1c2FsX2ltcGFjdCB9IDo6IGF0dCdcbiAgICApIGVsc2VcbiAgICAgIGEgOjogYXR0XG5cbigqKnNpZGVfZWZmZWN0IEludDJTZXQudDogcGFpcnMgKGFnZW50cyxwb3J0cykgdGhhdCBoYXZlIGJlZW4gZnJlZWQgYXMgYSBzaWRlIGVmZmVjdCAtLXZpYSBhIERFTCBvciBhIEZSRUUgYWN0aW9uKilcbigqTkIgbm8gaW50ZXJuYWwgc3RhdGUgbW9kaWYgYXMgc2lkZSBlZmZlY3QqKVxuXG4oKmxldCBpbXBhY3QgaXNfbGluayBjID1cbiAgaWYgaXNfbGluayB0aGVuXG4gICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfbGlua19tb2RpZiBjIHRoZW5cbiAgICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2xpbmtfdGVzdGVkIGMgdGhlbiBhdG9tX3Rlc3RlZG1vZGlmaWVkIGVsc2UgYXRvbV9tb2RpZmllZFxuICAgIGVsc2UgYXRvbV90ZXN0ZWRcbiAgZWxzZSAoKmludGVybmFsIHN0YXRlKilcbiAgICBpZiBQcmltaXRpdmVzLkNhdXNhbGl0eS5pc19pbnRlcm5hbF9tb2RpZiBjIHRoZW5cbiAgICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2ludGVybmFsX3Rlc3RlZCBjIHRoZW4gYXRvbV90ZXN0ZWRtb2RpZmllZCBlbHNlIGF0b21fbW9kaWZpZWRcbiAgICBlbHNlIGF0b21fdGVzdGVkXG4qKVxubGV0IGFkZCAoKG5vZGVfaWQsIF8pLCBzaXRlX2lkKSBpc19saW5rIHZhIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgPVxuICBsZXQgcSA9XG4gICAgaWYgaXNfbGluayB0aGVuXG4gICAgICBhdG9tX3Rlc3RlZFxuICAgIGVsc2VcbiAgICAgIDBcbiAgaW5cbiAgbGV0IGF0dCA9IHRyeSBncmlkX2ZpbmQgKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGdyaWQgd2l0aCBOb3RfZm91bmQgLT4gW10gaW5cbiAgbGV0IGF0dCA9XG4gICAgcHVzaFxuICAgICAgeyBjYXVzYWxfaW1wYWN0ID0gdmE7IGVpZCA9IGV2ZW50X251bWJlcjsga2luZCAoKjsgb2JzZXJ2YXRpb24gPSBvYnMqKSB9XG4gICAgICBhdHRcbiAgaW5cbiAgbGV0IGdyaWQgPSBncmlkX2FkZCAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZXZlbnRfbnVtYmVyIGF0dCBncmlkIGluXG4gIGFkZF9pbml0X3BpZCBldmVudF9udW1iZXIgKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGdyaWRcblxubGV0IGFkZF9hY3Rpb25zIGVudiBncmlkIGV2ZW50X251bWJlciBraW5kIGFjdGlvbnMgPVxuICBsZXQgcmVjIGF1eCBncmlkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGdyaWRcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlIGZhbHNlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzaXRlMSwgc2l0ZTIpIDo6IHEgLT5cbiAgICAgIGxldCBncmlkJyA9IGFkZCBzaXRlMiB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCBpblxuICAgICAgYXV4IChhZGQgc2l0ZTEgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQnIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHNpdGUxLCBfKSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlMSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHNpdGUgOjogcSAtPlxuICAgICAgYXV4IChhZGQgc2l0ZSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgKCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChfLCBuYSkgYXMgYWcpLCBfKVxuICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKF8sIG5hKSBhcyBhZykgKVxuICAgICAgOjogcSAtPlxuICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgICAgbGV0IGFnX2ludGYgPSBTaWduYXR1cmUuZ2V0IHNpZ3MgbmEgaW5cbiAgICAgIGxldCBncmlkID0gYWRkIChhZywgLTEpIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICBsZXQgZ3JpZCA9XG4gICAgICAgIFNpZ25hdHVyZS5mb2xkXG4gICAgICAgICAgKGZ1biBzaXRlIF8gZ3JpZCAtPlxuICAgICAgICAgICAgbGV0IGdyaWQnID1cbiAgICAgICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgbmEgc2l0ZSBzaWdzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGdyaWRcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICBhZGQgKGFnLCBzaXRlKSBmYWxzZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhZGQgKGFnLCBzaXRlKSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpXG4gICAgICAgICAgZ3JpZCBhZ19pbnRmXG4gICAgICBpblxuICAgICAgYXV4IGdyaWQgcVxuICBpblxuICBhdXggZ3JpZCBhY3Rpb25zXG5cbmxldCBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIga2luZCB0ZXN0cyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gZ3JpZCAtPiBmdW5jdGlvblxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+XG4gICAgICAgICBhZGQgKGFnLCAtMSkgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgIGFkZCBzaXRlIGZhbHNlIGF0b21fdGVzdGVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBzaXRlXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIHNpdGVcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgXykgLT5cbiAgICAgICAgIGFkZCBzaXRlIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgbGV0IGdyaWQnID0gYWRkIHNpdGUyIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCBpblxuICAgICAgICAgYWRkIHNpdGUxIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpKVxuICAgIGdyaWQgdGVzdHNcblxubGV0IHJlY29yZCAoa2luZCwgZXZlbnQsIF8pIGV2ZW50X251bWJlciBlbnYgZ3JpZCA9XG4gIGxldCBncmlkID1cbiAgICBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIGtpbmQpIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgaW5cbiAgbGV0IGdyaWQgPVxuICAgIGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZClcbiAgICAgIFsgZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgXVxuICBpblxuICBsZXQgZ3JpZCA9XG4gICAgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGdyaWQgc2l0ZSAtPlxuICAgICAgYWRkXG4gICAgICAgIChmc3Qgc2l0ZSwgLTEpXG4gICAgICAgIHRydWUgYXRvbV90ZXN0ZWRcbiAgICAgICAgKGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkpXG4gICAgICAgIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkpXG4gICAgZ3JpZCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcblxubGV0IHJlY29yZF9vYnMgKGtpbmQsIHRlc3RzLCBfKSBzaWRlX2VmZmVjdHMgZXZlbnRfbnVtYmVyIGdyaWQgPVxuICBsZXQgZ3JpZCA9IGFkZF9vYnNfZWlkIGV2ZW50X251bWJlciBncmlkIGluXG4gIGxldCBncmlkID0gYWRkX3Rlc3RzIGdyaWQgZXZlbnRfbnVtYmVyIChPQlMga2luZCkgdGVzdHMgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGdyaWQgc2l0ZSAtPiBhZGQgc2l0ZSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIgKE9CUyBraW5kKSlcbiAgICBncmlkIHNpZGVfZWZmZWN0c1xuXG5sZXQgcmVjb3JkX2luaXQgKGxibCwgYWN0aW9ucykgZXZlbnRfbnVtYmVyIGVudiBncmlkID1cbiAgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCAoVHJhY2UuSU5JVCBsYmwpKSBhY3Rpb25zXG5cbmxldCBhZGRfcHJlZCBlaWQgYXRvbSBjb25maWcgPVxuICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICBsZXQgcHJlZF9zZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZWlkIGNvbmZpZy5wcmVjXzEgaW5cbiAgbGV0IHByZWNfMSA9XG4gICAgTW9kcy5JbnRNYXAuYWRkIGVpZCAoTW9kcy5JbnRTZXQuYWRkIGF0b20uZWlkIHByZWRfc2V0KSBjb25maWcucHJlY18xXG4gIGluXG4gIHsgY29uZmlnIHdpdGggcHJlY18xOyBldmVudHNfa2luZCB9XG5cbmxldCBhZGRfY29uZmxpY3QgZWlkIGF0b20gY29uZmlnID1cbiAgbGV0IGV2ZW50c19raW5kID0gTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIGF0b20ua2luZCBjb25maWcuZXZlbnRzX2tpbmQgaW5cbiAgbGV0IGNmbGN0X3NldCA9XG4gICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGVpZCBjb25maWcuY29uZmxpY3RcbiAgaW5cbiAgbGV0IGNmbGN0ID1cbiAgICBNb2RzLkludE1hcC5hZGQgZWlkIChNb2RzLkludFNldC5hZGQgYXRvbS5laWQgY2ZsY3Rfc2V0KSBjb25maWcuY29uZmxpY3RcbiAgaW5cbiAgeyBjb25maWcgd2l0aCBjb25mbGljdCA9IGNmbGN0OyBldmVudHNfa2luZCB9XG5cbmxldCByZWMgcGFyc2VfYXR0cmlidXRlIGxhc3RfbW9kaWYgbGFzdF90ZXN0ZWQgYXR0cmlidXRlIGNvbmZpZyA9XG4gIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gIHwgW10gLT4gY29uZmlnXG4gIHwgYXRvbSA6OiBhdHQgLT5cbiAgICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICAgIGxldCBwcmVjXzEgPVxuICAgICAgbGV0IHByZWRzID1cbiAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGF0b20uZWlkIGNvbmZpZy5wcmVjXzFcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgcHJlZHMgY29uZmlnLnByZWNfMVxuICAgIGluXG4gICAgbGV0IGNvbmZpZyA9IHsgY29uZmlnIHdpdGggZXZlbnRzX2tpbmQ7IHByZWNfMSB9IGluXG4gICAgKCphdG9tIGhhcyBhIG1vZGlmaWNhdGlvbiopXG4gICAgaWZcbiAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fbW9kaWZpZWRcbiAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkbW9kaWZpZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjb25maWcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gY29uZmlnIHByZWRfaWQgLT4gYWRkX3ByZWQgcHJlZF9pZCBhdG9tIGNvbmZpZylcbiAgICAgICAgICBjb25maWcgbGFzdF90ZXN0ZWRcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdGVkID1cbiAgICAgICAgaWZcbiAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZFxuICAgICAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkIGxvciBhdG9tX21vZGlmaWVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBbIGF0b20uZWlkIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIFtdXG4gICAgICBpblxuICAgICAgcGFyc2VfYXR0cmlidXRlIChTb21lIGF0b20uZWlkKSB0ZXN0ZWQgYXR0IGNvbmZpZ1xuICAgICkgZWxzZSAoXG4gICAgICAoKiBhdG9tIGlzIGEgcHVyZSB0ZXN0KilcbiAgICAgIGxldCBjb25maWcgPVxuICAgICAgICBtYXRjaCBsYXN0X21vZGlmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNvbmZpZ1xuICAgICAgICB8IFNvbWUgZWlkIC0+XG4gICAgICAgICAgYWRkX2NvbmZsaWN0IGVpZCBhdG9tXG4gICAgICAgICAgICBjb25maWcgKCphZGRpbmcgY29uZmxpY3Qgd2l0aCBsYXN0IG1vZGlmaWNhdGlvbiopXG4gICAgICBpblxuICAgICAgcGFyc2VfYXR0cmlidXRlIGxhc3RfbW9kaWYgKGF0b20uZWlkIDo6IGxhc3RfdGVzdGVkKSBhdHQgY29uZmlnXG4gICAgKVxuXG5sZXQgY3V0ID8od2l0aF9yZWR1Y3Rpb24gPSB0cnVlKSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhdHRyaWJ1dGVfaWRzXG4gICAgZ3JpZCA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCByZWMgYnVpbGRfY29uZmlnIGF0dHJpYnV0ZV9pZHMgY2ZnID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVfaWRzIHdpdGhcbiAgICB8IFtdIC0+IGNmZ1xuICAgIHwgKG5vZGVfaSwgc2l0ZV9pLCB0eXBlX2kpIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cmlidXRlID1cbiAgICAgICAgdHJ5IGdyaWRfZmluZCAobm9kZV9pLCBzaXRlX2ksIHR5cGVfaSkgZ3JpZFxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBpbnZhbGlkX2FyZyBcIkNhdXNhbC5jdXRcIlxuICAgICAgaW5cbiAgICAgIGxldCBjZmcgPVxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGUgd2l0aFxuICAgICAgICB8IFtdIC0+IGNmZ1xuICAgICAgICB8IGF0b20gOjogYXR0IC0+XG4gICAgICAgICAgbGV0IGV2ZW50c19raW5kID1cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY2ZnLmV2ZW50c19raW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlY18xID1cbiAgICAgICAgICAgIGxldCBwcmVkcyA9XG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBhdG9tLmVpZCBjZmcucHJlY18xXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIHByZWRzIGNmZy5wcmVjXzFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXN0ZWQgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRcbiAgICAgICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBbIGF0b20uZWlkIF1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgW11cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb2RpZiA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX21vZGlmaWVkXG4gICAgICAgICAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkbW9kaWZpZWRcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgU29tZSBhdG9tLmVpZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9hdHRyaWJ1dGUgbW9kaWYgdGVzdGVkIGF0dCB7IGNmZyB3aXRoIHByZWNfMTsgZXZlbnRzX2tpbmQgfVxuICAgICAgaW5cbiAgICAgIGJ1aWxkX2NvbmZpZyB0bCBjZmdcbiAgaW5cbiAgbGV0IGNmZyA9IGJ1aWxkX2NvbmZpZyBhdHRyaWJ1dGVfaWRzIGVtcHR5X2NvbmZpZyBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHJlZHVjdGlvbiA9XG4gICAgaWYgd2l0aF9yZWR1Y3Rpb24gdGhlblxuICAgICAgR3JhcGhfY2xvc3VyZS5yZWR1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2ZnLnByZWNfMVxuICAgIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgY2ZnLnByZWNfMVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIHsgY2ZnIHdpdGggcHJlY18xID0gcmVkdWN0aW9uIH1cblxubGV0IHBwX2F0b20gZiBhdG9tID1cbiAgbGV0IGltcF9zdHIgPVxuICAgIG1hdGNoIGF0b20uY2F1c2FsX2ltcGFjdCB3aXRoXG4gICAgfCAxIC0+IFwib1wiXG4gICAgfCAyIC0+IFwieFwiXG4gICAgfCAzIC0+IFwiJVwiXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiQ2F1c2FsLnN0cmluZ19vZl9hdG9tXCJcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzXyVkXCIgaW1wX3N0ciBhdG9tLmVpZFxuXG5sZXQgX2R1bXAgZ3JpZCBmaWMgPVxuICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgKEZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uIGZpYyBeIFwiLnR4dFwiKSBpblxuICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX3Zib3ggZCAwIGluXG4gIEhhc2h0YmwuZm9sZFxuICAgIChmdW4gKG5faWQsIHNfaWQsIHEpIGF0dCBfIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBkIFwiIyVpLiVpJWM6JWFALFwiIG5faWQgc19pZFxuICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAnfidcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgJyEnKVxuICAgICAgICAoUHAubGlzdCBQcC5lbXB0eSBwcF9hdG9tKSBhdHQpXG4gICAgZ3JpZC5mbG93ICgpO1xuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBkIFwiQF1ALlwiIGluXG4gIGNsb3NlX291dCBkX2NoYW5cblxubGV0IGlkc19vZl9ncmlkIGdyaWQgPSBIYXNodGJsLmZvbGQgKGZ1biBrZXkgXyBsIC0+IGtleSA6OiBsKSBncmlkLmZsb3cgW11cbmxldCBjb25maWdfb2ZfZ3JpZCA9IGN1dFxuXG4oKmxldCBwcmVjX3N0YXJfb2ZfY29uZmlnX29sZCAgY29uZmlnID1cbiAgbGV0IHJlYyBwcmVjX2Nsb3N1cmUgY29uZmlnIHRvZG8gYWxyZWFkeV9kb25lIGNsb3N1cmUgPVxuICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHRvZG8gdGhlbiBjbG9zdXJlXG4gICAgZWxzZVxuICAgICAgbGV0IGVpZCA9IE1vZHMuSW50U2V0LmNob29zZSB0b2RvIGluXG4gICAgICBsZXQgdG9kbycgPSBNb2RzLkludFNldC5yZW1vdmUgZWlkIHRvZG8gaW5cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBlaWQgYWxyZWFkeV9kb25lXG4gICAgICB0aGVuXG4gICAgICAgIHByZWNfY2xvc3VyZSBjb25maWcgdG9kbycgYWxyZWFkeV9kb25lIGNsb3N1cmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHByZWMgPSB0cnkgSW50TWFwLmZpbmQgZWlkIGNvbmZpZy5wcmVjXzEgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRTZXQuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgIHByZWNfY2xvc3VyZSBjb25maWcgKEludFNldC51bmlvbiB0b2RvJyBwcmVjKSAoSW50U2V0LmFkZCBlaWQgYWxyZWFkeV9kb25lKSAoSW50U2V0LnVuaW9uIHByZWMgY2xvc3VyZSlcbiAgaW5cbiAgSW50TWFwLmZvbGRcbiAgICAoZnVuIGVpZCBraW5kIHByZWNfc3RhciAtPlxuICAgICAgbGV0IHNldCA9IHByZWNfY2xvc3VyZSBjb25maWcgKEludFNldC5zaW5nbGV0b24gZWlkKSBNb2RzLkludFNldC5lbXB0eSBNb2RzLkludFNldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIEludE1hcC5hZGQgZWlkIHNldCBwcmVjX3N0YXJcbiAgICApIGNvbmZpZy5ldmVudHMgSW50TWFwLmVtcHR5ICopXG5cbmxldCBwcmVjX3N0YXJfb2ZfY29uZmlnID0gR3JhcGhfY2xvc3VyZS5jbG9zdXJlXG5cbmxldCBkZXB0aF9hbmRfc2l6ZV9vZl9ldmVudCBjb25maWcgPVxuICBNb2RzLkludE1hcC5mb2xkXG4gICAgKGZ1biBlaWQgcHJlY19laWRzIChlbWFwLCBfKSAtPlxuICAgICAgbGV0IGQgPVxuICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgKGZ1biBlaWQnIGQgLT5cbiAgICAgICAgICAgIGxldCBkJyA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCAwIGVpZCcgZW1hcCBpblxuICAgICAgICAgICAgbWF4IChkJyArIDEpIGQpXG4gICAgICAgICAgcHJlY19laWRzIDBcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgZWlkIGQgZW1hcCwgZClcbiAgICBjb25maWcucHJlY18xIChNb2RzLkludE1hcC5lbXB0eSwgMClcblxubGV0IGVucmljaF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlIGdyaWQgPVxuICBsZXQga2VlcF9sID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhKSBNb2RzLkludFNldC5lbXB0eSBncmlkLm9ic1xuICBpblxuICBsZXQgdG9fa2VlcCBpID0gTW9kcy5JbnRTZXQubWVtIGkga2VlcF9sIGluXG4gIGxldCBpZHMgPSBpZHNfb2ZfZ3JpZCBncmlkIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmZpZyA9XG4gICAgY29uZmlnX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWRzIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlY19zdGFyID1cbiAgICBwcmVjX3N0YXJfb2ZfY29uZmlnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAoU29tZSBTdG9yeVByb2ZpbGluZy5UcmFuc2l0aXZlX2Nsb3N1cmUpIGNvbmZpZ19jbG9zdXJlIGNvbmZpZy5wcmVjXzFcbiAgICAgIHRvX2tlZXBcbiAgaW5cbiAgbGV0IGRlcHRoX29mX2V2ZW50LCBkZXB0aCA9IGRlcHRoX2FuZF9zaXplX29mX2V2ZW50IGNvbmZpZyBpblxuICAoIGVycm9yLFxuICAgIGxvZ19pbmZvLFxuICAgIHtcbiAgICAgIGNvbmZpZztcbiAgICAgIHByZWNfc3RhcjtcbiAgICAgIGRlcHRoO1xuICAgICAgZGVwdGhfb2ZfZXZlbnQ7XG4gICAgICBzaXplID0gTW9kcy5JbnRNYXAuc2l6ZSBjb25maWcucHJlY18xO1xuICAgIH0gKVxuXG5sZXQgZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWdfY2xvc3VyZVxuICAgIGdyaWQgZiBhID1cbiAgbGV0IGtlZXBfbCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhIGIgLT4gTW9kcy5JbnRTZXQuYWRkIGIgYSkgTW9kcy5JbnRTZXQuZW1wdHkgZ3JpZC5vYnNcbiAgaW5cbiAgbGV0IHRvX2tlZXAgaSA9IE1vZHMuSW50U2V0Lm1lbSBpIGtlZXBfbCBpblxuICBsZXQgaWRzID0gaWRzX29mX2dyaWQgZ3JpZCBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2NvbmZpZ3VyYXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25maWcgPVxuICAgIGNvbmZpZ19vZl9ncmlkIH53aXRoX3JlZHVjdGlvbjpmYWxzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHNcbiAgICAgIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2NvbmZpZ3VyYXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBHcmFwaF9jbG9zdXJlLmNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIChTb21lIFN0b3J5UHJvZmlsaW5nLkNvbGxlY3RfdHJhY2VzKSBjb25maWdfY2xvc3VyZSBjb25maWcucHJlY18xIHRvX2tlZXAgZlxuICAgIGFcblxubGV0IHByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudiBmID0gZnVuY3Rpb25cbiAgfCBPQlMgbmFtZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVzXFxcIiwgc3R5bGU9ZmlsbGVkLCBmaWxsY29sb3I9cmVkXVwiIG5hbWVcbiAgfCBFVkVOVCBlIC0+IFRyYWNlLnByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudiBmIGVcblxubGV0IGRvdF9vZl9ncmlkIHByb2ZpbGluZyBlbnYgZW5yaWNoZWRfZ3JpZCBmb3JtID1cbiAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICBsZXQgY29uZmlnID0gZW5yaWNoZWRfZ3JpZC5jb25maWcgaW5cbiAgbGV0IHByZWNfc3RhciA9IGVucmljaGVkX2dyaWQucHJlY19zdGFyIGluXG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IGVucmljaGVkX2dyaWQuZGVwdGhfb2ZfZXZlbnQgaW5cbiAgbGV0IHNvcnRlZF9ldmVudHMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gZWlkIGQgZG1hcCAtPlxuICAgICAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGQgZG1hcCBpblxuICAgICAgICBNb2RzLkludE1hcC5hZGQgZCAoTW9kcy5JbnRTZXQuYWRkIGVpZCBzZXQpIGRtYXApXG4gICAgICBkZXB0aF9vZl9ldmVudCBNb2RzLkludE1hcC5lbXB0eVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj4ldEAsZGlncmFwaCBHe0AsIHJhbmtzZXA9LjUgO0AsXCIgcHJvZmlsaW5nO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBkIGVpZHNfYXRfZCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIkBbPGh2PnsgcmFuayA9IHNhbWUgOyBcXFwiJWRcXFwiIFtzaGFwZT1wbGFpbnRleHRdIDtALFwiIGQ7XG4gICAgICBNb2RzLkludFNldC5pdGVyXG4gICAgICAgIChmdW4gZWlkIC0+XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gZWlkIGNvbmZpZy5ldmVudHNfa2luZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgU29tZSBhdG9tX2tpbmQgLT5cbiAgICAgICAgICAgIGlmIGVpZCA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIm5vZGVfJWQgJWEgO0AsXCIgZWlkXG4gICAgICAgICAgICAgICAgKHByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudilcbiAgICAgICAgICAgICAgICBhdG9tX2tpbmRcbiAgICAgICAgICAoKiBMaXN0Lml0ZXIgKGZ1biBvYnMgLT4gZnByaW50ZiBkZXNjIFwib2JzXyVkIFtsYWJlbCA9XFxcIiVzXFxcIiwgc3R5bGU9ZmlsbGVkLCBmaWxsY29sb3I9cmVkXSA7XFxuIG5vZGVfJWQgLT4gb2JzXyVkIFthcnJvd2hlYWQ9dmVlXTtcXG5cIiBlaWQgb2JzIGVpZCBlaWQpIGF0b20ub2JzZXJ2YXRpb24gOyopKVxuICAgICAgICBlaWRzX2F0X2Q7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwifUBdQCxcIilcbiAgICBzb3J0ZWRfZXZlbnRzO1xuICBsZXQgY3B0ID0gcmVmIDAgaW5cbiAgd2hpbGUgIWNwdCArIDEgPCBNb2RzLkludE1hcC5zaXplIHNvcnRlZF9ldmVudHMgZG9cbiAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiXFxcIiVkXFxcIiAtPiBcXFwiJWRcXFwiIFtzdHlsZT1cXFwiaW52aXNcXFwiXTtALFwiICFjcHQgKCFjcHQgKyAxKTtcbiAgICBjcHQgOj0gIWNwdCArIDFcbiAgZG9uZTtcbiAgTW9kcy5JbnRNYXAuaXRlclxuICAgIChmdW4gZWlkIHByZWRfc2V0IC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuXG4gICAgICAgIE1vZHMuSW50U2V0Lml0ZXJcbiAgICAgICAgICAoZnVuIGVpZCcgLT5cbiAgICAgICAgICAgIGlmIGVpZCcgPSAwIHRoZW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIm5vZGVfJWQgLT4gbm9kZV8lZEAsXCIgZWlkJyBlaWQpXG4gICAgICAgICAgcHJlZF9zZXQpXG4gICAgY29uZmlnLnByZWNfMTtcbiAgTW9kcy5JbnRNYXAuaXRlclxuICAgIChmdW4gZWlkIGNmbGN0X3NldCAtPlxuICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgIGxldCBwcmVjID0gdHJ5IChmc3QgcHJlY19zdGFyKS4oZWlkKSB3aXRoIF8gLT4gW10gaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRfaW52XG4gICAgICAgICAgICAoZnVuIGVpZCcgcHJlYyAtPlxuICAgICAgICAgICAgICBsZXQgYm9vbCwgcHJlYyA9XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBhdXggcHJlYyA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgaCA9IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgaCA+IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGF1eCB0XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhdXggcHJlY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybVxuICAgICAgICAgICAgICAgICAgICBcIm5vZGVfJWQgLT4gbm9kZV8lZCBbc3R5bGU9ZG90dGVkLCBhcnJvd2hlYWQgPSB0ZWVdQCBcIiBlaWRcbiAgICAgICAgICAgICAgICAgICAgZWlkJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwcmVjKVxuICAgICAgICAgICAgY2ZsY3Rfc2V0IHByZWNcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgICkpXG4gICAgY29uZmlnLmNvbmZsaWN0O1xuICBGb3JtYXQuZnByaW50ZiBmb3JtIFwifUAsXCI7XG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCIvKkAsIERvdCBnZW5lcmF0aW9uIHRpbWU6ICVmQCwqL0BdQC5cIiAoU3lzLnRpbWUgKCkgLS4gdClcblxubGV0IGpzX29mX2dyaWQgZW52IGVucmljaGVkX2dyaWQgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDcmVhdGUgYSBuZXcgZGlyZWN0ZWQgZ3JhcGhALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBnID0gbmV3IGRhZ3JlRDMuZ3JhcGhsaWIuR3JhcGgoKS5zZXRHcmFwaCh7fSk7QCxcIlxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgUHAuc2V0IH50cmFpbGluZzpQcC5zcGFjZSBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgKGZ1biBmIChlaWQsIGF0b21fa2luZCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiZy5zZXROb2RlKCVpLCB7IGxhYmVsOiBcXFwiJWFcXFwiLCBzdHlsZTogXFxcImZpbGw6ICVzXFxcIiB9KTtcIiBlaWRcbiAgICAgICAgICAocHJpbnRfZXZlbnRfa2luZCB+ZW52KSBhdG9tX2tpbmRcbiAgICAgICAgICAobWF0Y2ggYXRvbV9raW5kIHdpdGhcbiAgICAgICAgICB8IE9CUyBfIC0+IFwiI2Y3N1wiXG4gICAgICAgICAgfCBFVkVOVCAoVHJhY2UuSU5JVCBfIHwgVHJhY2UuUEVSVCBfKSAtPiBcIiM3ZjdcIlxuICAgICAgICAgIHwgRVZFTlQgKFRyYWNlLlJVTEUgXykgLT4gXCIjNzdmXCIpKVxuICAgICAgZiBlbnJpY2hlZF9ncmlkLmNvbmZpZy5ldmVudHNfa2luZFxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLnNldCBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5lbXB0eVxuICAgICAgKGZ1biBmIChlaWQsIHNldCkgLT5cbiAgICAgICAgUHAuc2V0IE1vZHMuSW50U2V0LmVsZW1lbnRzIH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZVxuICAgICAgICAgIChmdW4gZiBlaWQnIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJnLnNldEVkZ2UoJWksJWkse30pO1wiIGVpZCcgZWlkKVxuICAgICAgICAgIGYgc2V0KVxuICAgICAgZiBlbnJpY2hlZF9ncmlkLmNvbmZpZy5wcmVjXzFcbiAgaW5cblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgc3ZnID0gZDMuc2VsZWN0KFxcXCJzdmdcXFwiKSxpbm5lciA9IHN2Zy5zZWxlY3QoXFxcImdcXFwiKTtALFwiXG4gIGluXG5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIFNldCB1cCB6b29tIHN1cHBvcnRALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciB6b29tID0gZDMuYmVoYXZpb3Iuem9vbSgpLm9uKFxcXCJ6b29tXFxcIiwgZnVuY3Rpb24oKSB7QCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiaW5uZXIuYXR0cihcXFwidHJhbnNmb3JtXFxcIiwgXFxcInRyYW5zbGF0ZShcXFwiICsgZDMuZXZlbnQudHJhbnNsYXRlICsgXFxcIilcXFwiICtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJcXFwic2NhbGUoXFxcIiArIGQzLmV2ZW50LnNjYWxlICsgXFxcIilcXFwiKTtALH0pO0Asc3ZnLmNhbGwoem9vbSk7XCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIi8vIENyZWF0ZSB0aGUgcmVuZGVyZXJALCB2YXIgcmVuZGVyID0gbmV3IGRhZ3JlRDMucmVuZGVyKCk7QCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLy8gUnVuIHRoZSByZW5kZXJlci4gVGhpcyBpcyB3aGF0IGRyYXdzIHRoZSBmaW5hbCBncmFwaC5ALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJyZW5kZXIoaW5uZXIsIGcpO0AsXCIgaW5cblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ2VudGVyIHRoZSBncmFwaEAsdmFyIGluaXRpYWxTY2FsZSA9IDAuNzU7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiem9vbUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIi50cmFuc2xhdGUoWyhzdmcuYXR0cihcXFwid2lkdGhcXFwiKSAtIGcuZ3JhcGgoKS53aWR0aCAqIGluaXRpYWxTY2FsZSkgLyAyLCBcXFxuICAgICAgIDIwXSlALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIuc2NhbGUoaW5pdGlhbFNjYWxlKUAsLmV2ZW50KHN2Zyk7QCxcIiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwic3ZnLmF0dHIoJ2hlaWdodCcsIGcuZ3JhcGgoKS5oZWlnaHQgKiBpbml0aWFsU2NhbGUgKyA0MCk7XCJcblxubGV0IGh0bWxfb2ZfZ3JpZCBwcm9maWxpbmcgY29tcHJlc3Npb25fdHlwZSBjcHQgZW52IGVucmljaGVkX2dyaWQgPVxuICBsZXQgdGl0bGUgZiA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzIGNvbXByZXNzZWQgc3RvcnkgbnVtYmVyICVpXCIgY29tcHJlc3Npb25fdHlwZSBjcHRcbiAgaW5cbiAgUHBfaHRtbC5ncmFwaF9wYWdlIHRpdGxlXG4gICAgW1xuICAgICAgXCJodHRwOi8vZDNqcy5vcmcvZDMudjMubWluLmpzXCI7XG4gICAgICBcImh0dHA6Ly9jcGV0dGl0dC5naXRodWIuaW8vcHJvamVjdC9kYWdyZS1kMy9sYXRlc3QvZGFncmUtZDMubWluLmpzXCI7XG4gICAgXVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImR0IHtmbG9hdDogbGVmdDsgY2xlYXI6IGxlZnQ7IHdpZHRoOiAyMGVtO31ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImRkIHtmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiAwIDAgMCAyMWVtO31ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5ub2RlIHJlY3Qge3N0cm9rZTogIzMzMzsgZmlsbDogI2ZmZjt9QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiLmVkZ2VQYXRoIHBhdGgge3N0cm9rZTogIzMzMzsgZmlsbDogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDt9XCJcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc3R5bGU+XCIpXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN2ZyB3aWR0aD1cXFwiOTYwXFxcIj48Zz48L2c+PC9zdmc+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxwPkBbJXRAXTwvcD5ALFwiIHByb2ZpbGluZyBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c2NyaXB0PkAsJXRAXUAsPC9zY3JpcHQ+XCJcbiAgICAgICAgKGpzX29mX2dyaWQgZW52IGVucmljaGVkX2dyaWQpKVxuXG5sZXQgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1biAoc2l0ZSwgaW50ZXJuYWwpIC0+XG4gICAgICBtYXRjaCBpbnRlcm5hbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBMaXN0Lm1lbSAoYXRvbV9tb2RpZmllZCwgKGFpZCwgc2l0ZSwgMCkpIHF1YXJrc1xuICAgICAgICAmJiBMaXN0Lm1lbSAoYXRvbV9tb2RpZmllZCwgKGFpZCwgc2l0ZSwgMSkpIHF1YXJrc1xuICAgICAgfCBOb25lIC0+IExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAxKSkgcXVhcmtzKVxuICAgIHNpdGVzXG5cbmxldCBjaGVja19tb2RpZmllZF9xdWFya3MgKChhaWQsIF8pLCBzaXRlKSBtb2RpZiBxdWFya3MgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW4gKGMsIChuLCBzLCBtKSkgLT5cbiAgICAgIChjID0gYXRvbV9tb2RpZmllZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZClcbiAgICAgICYmIG4gPSBhaWQgJiYgcyA9IHNpdGUgJiYgbSA9IG1vZGlmKVxuICAgIHF1YXJrc1xuXG5sZXQgY2hlY2tfdGVzdGVkX3F1YXJrcyAoKGFpZCwgXyksIHNpdGUpIG1vZGlmIHF1YXJrcyA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoYywgKG4sIHMsIG0pKSAtPlxuICAgICAgKGMgPSBhdG9tX3Rlc3RlZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZClcbiAgICAgICYmIG4gPSBhaWQgJiYgcyA9IHNpdGUgJiYgbSA9IG1vZGlmKVxuICAgIHF1YXJrc1xuXG5sZXQgY2hlY2tfZXZlbnRfcXVhcmtzIGFjdGlvbnMgdGVzdHMgcXVhcmtzID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWlkLCBfKSwgc2l0ZXMpIC0+XG4gICAgICAgIGNoZWNrX2NyZWF0ZV9xdWFya3MgYWlkIHNpdGVzIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgYXNpdGUgLT4gY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlIDEgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoYXNpdGUxLCBhc2l0ZTIpXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoYXNpdGUxLCBhc2l0ZTIpIC0+XG4gICAgICAgIGNoZWNrX21vZGlmaWVkX3F1YXJrcyBhc2l0ZTEgMSBxdWFya3NcbiAgICAgICAgJiYgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlMiAxIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoYXNpdGUsIF8pIC0+XG4gICAgICAgIGNoZWNrX21vZGlmaWVkX3F1YXJrcyBhc2l0ZSAwIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoYWlkLCBfKSAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKGMsIChuLCBfLCBfKSkgLT5cbiAgICAgICAgICAgIChjID0gYXRvbV9tb2RpZmllZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZCkgJiYgbiA9IGFpZClcbiAgICAgICAgICBxdWFya3MpXG4gICAgYWN0aW9uc1xuICAmJiBMaXN0LmZvcl9hbGxcbiAgICAgICAoTGlzdC5mb3JfYWxsIChmdW5jdGlvblxuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgKGFpZCwgXykgLT5cbiAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAoZnVuIChjLCAobiwgXywgXykpIC0+XG4gICAgICAgICAgICAgICAoYyA9IGF0b21fdGVzdGVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKSAmJiBuID0gYWlkKVxuICAgICAgICAgICAgIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoYXNpdGUsIF8pIC0+XG4gICAgICAgICAgIGNoZWNrX3Rlc3RlZF9xdWFya3MgYXNpdGUgMCBxdWFya3NcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIGFzaXRlXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgYXNpdGVcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChhc2l0ZSwgXykgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZSAxIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChhc2l0ZTEsIGFzaXRlMikgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZTEgMSBxdWFya3NcbiAgICAgICAgICAgJiYgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZTIgMSBxdWFya3MpKVxuICAgICAgIHRlc3RzXG5cbmxldCBsb2dfZXZlbnQgaWQgcXVhcmtzIGV2ZW50X2tpbmQgc3RlcHMgPVxuICBtYXRjaCBldmVudF9raW5kIHdpdGhcbiAgfCBFVkVOVCAoVHJhY2UuSU5JVCBfKSAtPlxuICAgIGxldCBzdHAgPVxuICAgICAgTGlzdC5maW5kXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKGFpZCwgXyksIHNpdGVzKSAtPlxuICAgICAgICAgICAgICAgICAgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImluaXQgZXZlbnQgaGFzIGFjdGlvbnMgbm90IGFsbG93ZWRcIikpKVxuICAgICAgICAgICAgICBhY3Rpb25zXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgX1xuICAgICAgICAgIHwgVHJhY2UuRHVtbXkgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgRVZFTlQgKFRyYWNlLlJVTEUgcmlkKSAtPlxuICAgIGxldCBzdHAgPVxuICAgICAgTGlzdC5maW5kXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAocmlkJywgZSwgXykgLT5cbiAgICAgICAgICAgIHJpZCA9IHJpZCdcbiAgICAgICAgICAgICYmIGNoZWNrX2V2ZW50X3F1YXJrcyBlLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgICAgICAoZS5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA6OiBlLkluc3RhbnRpYXRpb24udGVzdHMpXG4gICAgICAgICAgICAgICAgIHF1YXJrc1xuICAgICAgICAgIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5EdW1teSBfXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IF8gLT5cbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICBzdGVwc1xuICAgIGluXG4gICAgYExpc3QgWyBgSW50IGlkOyBUcmFjZS5zdGVwX3RvX3lvanNvbiBzdHAgXVxuICB8IE9CUyBfIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5PYnMgXyAtPiB0cnVlXG4gICAgICAgICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuUnVsZSBfXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICBzdGVwc1xuICAgIGluXG4gICAgYExpc3QgWyBgSW50IGlkOyBUcmFjZS5zdGVwX3RvX3lvanNvbiBzdHAgXVxuICB8IEVWRU5UIChUcmFjZS5QRVJUIHBlcnQpIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IChwZXJ0JywgZSwgXykgLT5cbiAgICAgICAgICAgIHBlcnQgPSBwZXJ0J1xuICAgICAgICAgICAgJiYgY2hlY2tfZXZlbnRfcXVhcmtzIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICAgICAgIChlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzIDo6IGUuSW5zdGFudGlhdGlvbi50ZXN0cylcbiAgICAgICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF9cbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG5cbmxldCBqc29uX29mX2dyaWQgZW5yaWNoZWRfZ3JpZCBncmlkX3N0b3J5IHN0ZXBzID1cbiAgbGV0IGNvbmZpZyA9IGVucmljaGVkX2dyaWQuY29uZmlnIGluXG4gIGxldCBwcmVjX3N0YXIgPSBlbnJpY2hlZF9ncmlkLnByZWNfc3RhciBpblxuICBsZXQgZGVwdGhfb2ZfZXZlbnQgPSBlbnJpY2hlZF9ncmlkLmRlcHRoX29mX2V2ZW50IGluXG4gIGxldCB0YmwgPSBIYXNodGJsLmNyZWF0ZSAhUGFyYW1ldGVyLmRlZmF1bHRFeHRBcnJheVNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gcXVhcmsgYXR0X2xzIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gYXRvbSAtPiBIYXNodGJsLmFkZCB0YmwgYXRvbS5laWQgKGF0b20uY2F1c2FsX2ltcGFjdCwgcXVhcmspKVxuICAgICAgICAgIGF0dF9scylcbiAgICAgIGdyaWRfc3RvcnkuZmxvd1xuICBpblxuICBsZXQgc29ydGVkX2V2ZW50cyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgZCBkbWFwIC0+XG4gICAgICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZCBkbWFwIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBkIChNb2RzLkludFNldC5hZGQgZWlkIHNldCkgZG1hcClcbiAgICAgIGRlcHRoX29mX2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIGxldCBub2RlX3RvX2pzb24gZWlkID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgY29uZmlnLmV2ZW50c19raW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCBTb21lIGF0b21fa2luZCAtPlxuICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgIGxldCBxdWFya3MgPSBIYXNodGJsLmZpbmRfYWxsIHRibCBlaWQgaW5cbiAgICAgICAgbG9nX2V2ZW50IGVpZCBxdWFya3MgYXRvbV9raW5kIHN0ZXBzXG4gICAgICApIGVsc2VcbiAgICAgICAgYE51bGxcbiAgaW5cbiAgbGV0IG5vZGVzX3RvX2xpc3QgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gXyBlaWRzX2F0X2QgbHMgLT5cbiAgICAgICAgbGV0IGxzJycgPSBNb2RzLkludFNldC5mb2xkIChmdW4gZWlkIGxzJyAtPiBlaWQgOjogbHMnKSBlaWRzX2F0X2QgW10gaW5cbiAgICAgICAgbHMnJyBAIGxzKVxuICAgICAgc29ydGVkX2V2ZW50cyBbXVxuICBpblxuICBsZXQgbm9kZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3Qgbm9kZV90b19qc29uIG5vZGVzX3RvX2xpc3QgaW5cbiAgbGV0IGVkZ2VfdG9fanNvbiAoZWlkLCBlaWQnKSA9IGBBc3NvYyBbIFwiZnJvbVwiLCBgSW50IGVpZCc7IFwidG9cIiwgYEludCBlaWQgXSBpblxuICBsZXQgcHJlY19lZGdlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgcHJlZF9zZXQgbHMgLT5cbiAgICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxzJycgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGVpZCcgbHMnIC0+XG4gICAgICAgICAgICAgICAgaWYgZWlkJyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgbHMnXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgKGVpZCwgZWlkJykgOjogbHMnKVxuICAgICAgICAgICAgICBwcmVkX3NldCBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbHMnJyBAIGxzXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGxzKVxuICAgICAgY29uZmlnLnByZWNfMSBbXVxuICBpblxuICBsZXQgcHJlY19lZGdlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBlZGdlX3RvX2pzb24gcHJlY19lZGdlcyBpblxuICBsZXQgY29uZmxfZWRnZXMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gZWlkIGNmbGN0X3NldCBscyAtPlxuICAgICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgICBsZXQgcHJlYyA9IHRyeSAoZnN0IHByZWNfc3RhcikuKGVpZCkgd2l0aCBfIC0+IFtdIGluXG4gICAgICAgICAgbGV0IF8sIGxzJyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5mb2xkX2ludlxuICAgICAgICAgICAgICAoZnVuIGVpZCcgKHByZWMsIGxzJykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYm9vbCwgcHJlYyA9XG4gICAgICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBwcmVjID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGggPSBlaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBoID4gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXggdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHByZWNcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBhdXggcHJlY1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxzJycgPVxuICAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChlaWQsIGVpZCcpIDo6IGxzJ1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBscydcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHByZWMsIGxzJycpXG4gICAgICAgICAgICAgIGNmbGN0X3NldCAocHJlYywgbHMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBscydcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbHMpXG4gICAgICBjb25maWcuY29uZmxpY3QgW11cbiAgaW5cbiAgbGV0IGNvbmZsX2VkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvbiBjb25mbF9lZGdlcyBpblxuICAoYEFzc29jXG4gICAgIFtcbiAgICAgICBcIm5vZGVzXCIsIG5vZGVzX3RvX2pzb247XG4gICAgICAgXCJjYXVzZVwiLCBwcmVjX2VkZ2VzX3RvX2pzb247XG4gICAgICAgXCJpbmhpYml0XCIsIGNvbmZsX2VkZ2VzX3RvX2pzb247XG4gICAgIF1cbiAgICA6IFlvanNvbi5CYXNpYy50KVxuXG4oKnN0b3J5X2xpc3Q6WyhrZXlfaSxsaXN0X2kpXSBldCBsaXN0X2k6WyhncmlkLF8sc2ltX2luZm8gb3B0aW9uKS4uLl1cbiAgZXQgc2ltX2luZm86e3dpdGggc3RvcnlfaWQ6aW50IHN0b3J5X3RpbWU6IGZsb2F0IDsgc3RvcnlfZXZlbnQ6IGludH0qKVxubGV0IHByZXR0eV9wcmludCB+ZG90Rm9ybWF0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBjb25maWdfY2xvc3VyZVxuICAgIGNvbXByZXNzaW9uX3R5cGUgbGFiZWwgZ3JpZF9saXN0ID1cbiAgbWF0Y2hcbiAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICB8IFNvbWUgZXJyX2ZtdCAtPlxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggZ3JpZF9saXN0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGNvbXByZXNzaW9uX3R5cGUgPSBcIlwiIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZXJyX2ZtdCBcIisgUHJldHR5IHByaW50aW5nICVkIGZsb3clc0AuXCIgblxuICAgICAgICAgIChpZiBuID4gMSB0aGVuXG4gICAgICAgICAgICAgXCJzXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGVycl9mbXQgXCIrIFByZXR0eSBwcmludGluZyAlZCAlc2NvbXByZXNzZWQgZmxvdyVzQC5cIiBuXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgICAoaWYgbiA+IDEgdGhlblxuICAgICAgICAgICAgIFwic1wiXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBcIlwiKVxuICAgIGluXG4gICAgbGV0IGNvbXByZXNzaW9uX3R5cGUgPVxuICAgICAgaWYgY29tcHJlc3Npb25fdHlwZSA9IFwiXCIgdGhlblxuICAgICAgICBcIm5vbmVcIlxuICAgICAgZWxzZVxuICAgICAgICBjb21wcmVzc2lvbl90eXBlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdG9yeV9saXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgbGlzdCkgKHosIHgsIHkpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgeCA9XG4gICAgICAgICAgICBlbnJpY2hfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWdfY2xvc3VyZSB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sICh6LCB4LCB5KSA6OiBsaXN0KVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBbXSkgZ3JpZF9saXN0XG4gICAgaW5cbiAgICBsZXQgc3RvcnlfbGlzdCA9IExpc3QucmV2IHN0b3J5X2xpc3QgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGNwdCAoc3RlcHMsIGVucmljaGVkX2NvbmZpZywgc3RvcmllcykgLT5cbiAgICAgICAgICBsZXQgYXZfdCwgaWRzLCBuID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGF2X3QsIGlkcywgbikgaW5mbyAtPlxuICAgICAgICAgICAgICAgICggYXZfdCArLiBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lLFxuICAgICAgICAgICAgICAgICAgaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgOjogaWRzLFxuICAgICAgICAgICAgICAgICAgbiArIDEgKSlcbiAgICAgICAgICAgICAgKDAuLCBbXSwgMCkgKExpc3QucmV2IHN0b3JpZXMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgKCpkdW1wIGdyaWQgZmljIHN0YXRlIGVudiA7ICopXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBkb3RGb3JtYXQgPSBKc29uIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBfLCBncmlkX3N0b3J5LCBfID0gTGlzdC5udGggZ3JpZF9saXN0IGNwdCBpblxuICAgICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgICAgWyBjb21wcmVzc2lvbl90eXBlOyBzdHJpbmdfb2ZfaW50IGNwdCBdXG4gICAgICAgICAgICAgICAgICBcIi5qc29uXCJcbiAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXNALlwiXG4gICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAoanNvbl9vZl9ncmlkIGVucmljaGVkX2NvbmZpZyBncmlkX3N0b3J5IHN0ZXBzKSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBkb3RGb3JtYXQgd2l0aFxuICAgICAgICAgICAgfCBEb3QgfCBKc29uIC0+XG4gICAgICAgICAgICAgIGxldCBwcm9maWxpbmcgZGVzYyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIi8qIEBbQ29tcHJlc3Npb24gb2YgJWQgY2F1c2FsIGZsb3dzXCIgbjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQCBvYnRhaW5lZCBpbiBhdmVyYWdlIGF0ICVFIHQudUBdICovQCxcIlxuICAgICAgICAgICAgICAgICAgKGF2X3QgLy4gZmxvYXRfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgICAgICAgICAgICAgIFwiQFsvKiBDb21wcmVzc2VkIGNhdXNhbCBmbG93cyB3ZXJlOkAgWyVhXSAqL0BdXCJcbiAgICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIjtALFwiKVxuICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgICAgICAgICAgICAgIGlkc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBLYXBwYV9maWxlcy53aXRoX2NmbG93X2ZpbGVcbiAgICAgICAgICAgICAgICBbIGNvbXByZXNzaW9uX3R5cGU7IHN0cmluZ19vZl9pbnQgY3B0IF1cbiAgICAgICAgICAgICAgICBcIi5kb3RcIlxuICAgICAgICAgICAgICAgIChkb3Rfb2ZfZ3JpZCBwcm9maWxpbmcgZW52IGVucmljaGVkX2NvbmZpZylcbiAgICAgICAgICAgIHwgSHRtbCAtPlxuICAgICAgICAgICAgICBsZXQgcHJvZmlsaW5nIGRlc2MgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgICAgICAgICAgICAgIFwiQFs8diAyPjxkbD5ALDxkdD5Db21wcmVzc2lvbiBvZjwvZHQ+PGRkPiVkIGNhdXNhbCBmbG93czwvZGQ+XCJcbiAgICAgICAgICAgICAgICAgIG47XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJALDxkdD5vYnRhaW5lZCBpbiBhdmVyYWdlIGF0PC9kdD48ZGQ+JUUgdC51PC9kZD5ALFwiXG4gICAgICAgICAgICAgICAgICAoYXZfdCAvLiBmbG9hdF9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIjxkdD5Db21wcmVzc2VkIGNhdXNhbCBmbG93cyB3ZXJlOjwvZHQ+XCI7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIkAgPGRkPltAWyVhQF1dPC9kZD5AXUAsPC9kbD5cIlxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiO0AsXCIpXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgICAgICAgICAgICAgaWRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgIFsgY29tcHJlc3Npb25fdHlwZTsgc3RyaW5nX29mX2ludCBjcHQgXVxuICAgICAgICAgICAgICAgIFwiLmh0bWxcIlxuICAgICAgICAgICAgICAgIChodG1sX29mX2dyaWQgcHJvZmlsaW5nIGNvbXByZXNzaW9uX3R5cGUgY3B0IGVudiBlbnJpY2hlZF9jb25maWcpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjcHQgKyAxKVxuICAgICAgICAwIHN0b3J5X2xpc3RcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBkb3RGb3JtYXQgd2l0aFxuICAgICAgfCBKc29uIC0+XG4gICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZSBbIGNvbXByZXNzaW9uX3R5cGU7IFwiZW52XCIgXSBcIi5qc29uXCJcbiAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCJcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKE1vZGVsLnRvX3lvanNvbiBlbnYpKSlcbiAgICAgIHwgRG90IHwgSHRtbCAtPiAoKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlIFsgY29tcHJlc3Npb25fdHlwZTsgXCJTdW1tYXJ5XCIgXSBcIi5kYXRcIlxuICAgICAgICAoZnVuIGZvcm0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj4jaWRcXHRFXFx0VFxcdFxcdGRlcHRoXFx0c2l6ZVxcdEAsXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgUHAubGlzdGkgUHAuZW1wdHlcbiAgICAgICAgICAgICAgKGZ1biBjcHQgZiAoXywgZW5yaWNoZWRfY29uZmlnLCBzdG9yeSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGVwdGggPSBlbnJpY2hlZF9jb25maWcuZGVwdGggaW5cbiAgICAgICAgICAgICAgICBsZXQgc2l6ZSA9IGVucmljaGVkX2NvbmZpZy5zaXplIGluXG4gICAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGluZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaVxcdCVpXFx0JUVcXHQlaVxcdCVpXFx0QCxcIiBjcHQgZXZlbnQgdGltZVxuICAgICAgICAgICAgICAgICAgICAgIGRlcHRoIHNpemUpXG4gICAgICAgICAgICAgICAgICBzdG9yeSlcbiAgICAgICAgICAgICAgZm9ybSBzdG9yeV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQF1AP1wiKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvXG5cbmxldCBwcmludF9zdGF0IGYgX3BhcmFtZXRlciBfaGFuZGxlciBlbnJpY2hlZF9ncmlkID1cbiAgbGV0IGNvdW50X29icyA9XG4gICAgbWF0Y2ggc25kIGVucmljaGVkX2dyaWQucHJlY19zdGFyIHdpdGhcbiAgICB8IEdyYXBoX2Nsb3N1cmUuSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgLT4gZnVuIHggLT4geFxuICAgIHwgR3JhcGhfY2xvc3VyZS5EZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCAtPiBzdWNjXG4gIGluXG4gIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIChmc3QgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIpIGluXG4gIGxldCByZWMgYXV4IGsgbl9zdGVwIGxvbmdlc3Rfc3Rvcnkgbl9ub25lbXB0eSBsZW5ndGhfc3VtIGxlbmd0aF9zcXVhcmVfc3VtID1cbiAgICBpZiBrID49IHNpemUgdGhlblxuICAgICAgbl9zdGVwLCBsb25nZXN0X3N0b3J5LCBuX25vbmVtcHR5LCBsZW5ndGhfc3VtLCBsZW5ndGhfc3F1YXJlX3N1bVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNjID0gTGlzdC5sZW5ndGggKEFycmF5LmdldCAoZnN0IGVucmljaGVkX2dyaWQucHJlY19zdGFyKSBrKSBpblxuICAgICAgbGV0IGNjJyA9XG4gICAgICAgIGlmIGNjID4gMCB0aGVuXG4gICAgICAgICAgY291bnRfb2JzIGNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjY1xuICAgICAgaW5cbiAgICAgIGF1eCAoayArIDEpIChuX3N0ZXAgKyAxKSAobWF4IGxvbmdlc3Rfc3RvcnkgY2MnKVxuICAgICAgICAoaWYgY2MgPiAwIHRoZW5cbiAgICAgICAgICAgbl9ub25lbXB0eSArIDFcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbl9ub25lbXB0eSlcbiAgICAgICAgKGxlbmd0aF9zdW0gKyBjYycpXG4gICAgICAgIChsZW5ndGhfc3F1YXJlX3N1bSArIChjYycgKiBjYycpKVxuICAgIClcbiAgaW5cbiAgbGV0IG5fc3RlcCwgbG9uZ2VzdF9zdG9yeSwgbl9ub25lbXB0eSwgbGVuZ3RoX3N1bSwgbGVuZ3RoX3NxdWFyZV9zdW0gPVxuICAgIGF1eCAwIDAgMCAwIDAgMFxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj5TdGF0czpALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgbnVtYmVyIG9mIHN0ZXAgICA6ICVpQCxcIiBuX3N0ZXAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBsb25nZXN0IHN0b3J5ICAgIDogJWlALFwiIGxvbmdlc3Rfc3RvcnkgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGF2ZXJhZ2UgbGVuZ3RoICAgOiAlLjRnQCxcIlxuICAgICAgKGZsb2F0IGxlbmd0aF9zdW0gLy4gZmxvYXQgbl9ub25lbXB0eSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGdlb21ldHJpYyBtZWFuICAgOiAlLjRnQCxcIlxuICAgICAgKHNxcnQgKGZsb2F0IGxlbmd0aF9zcXVhcmVfc3VtIC8uIGZsb2F0IG5fbm9uZW1wdHkpKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALlwiXG4iLCJ0eXBlIHByZWRpY2F0ZV92YWx1ZSA9XG4gIHwgSW50ZXJuYWxfc3RhdGVfaXMgb2YgaW50XG4gIHwgVW5kZWZpbmVkICAoKiogdGhlIHdpcmUgZG9lcyBub3QgZXhpc3QgeWV0ICopXG4gIHwgUHJlc2VudCAgKCoqIGZvciBhZ2VudCBwcmVzZW5jZSAqKVxuICB8IEZyZWUgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuICB8IEJvdW5kX3RvIG9mIGludCAqIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAoKiogZm9yIGJpbmRpbmcgc2l0ZXMgKilcblxubW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG5cbnR5cGUgcHJlZGljYXRlX2luZm8gPVxuICB8IEhlcmUgb2YgaW50XG4gIHwgQm91bmRfc2l0ZSBvZiBpbnQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICB8IEludGVybmFsX3N0YXRlIG9mIGludCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG5cbmxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gcGkgPVxuICBtYXRjaCBwaSB3aXRoXG4gIHwgSGVyZSBhZyAtPiBcIkhlcmUgXCIgXiBzdHJpbmdfb2ZfaW50IGFnXG4gIHwgQm91bmRfc2l0ZSAoYWcsIHMpIC0+XG4gICAgXCJCb3VuZF9zdGF0ZSBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBcIiBeIHN0cmluZ19vZl9pbnQgc1xuICB8IEludGVybmFsX3N0YXRlIChhZywgcykgLT5cbiAgICBcIkludGVybmFsX3N0YXRlIFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIFwiIF4gc3RyaW5nX29mX2ludCBzXG5cbm1vZHVsZSBQcmVkaWNhdGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHByZWRpY2F0ZV9pbmZvXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCBmIHggPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyB4KVxuZW5kKVxuXG5tb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlU2V0TWFwLk1hcFxuXG5tb2R1bGUgUVByZWRpY2F0ZU1hcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmVkaWNhdGVNYXAudCBBLnRcblxuICBsZXQgZW1wdHkgbiA9IEEubWFrZSBuIFByZWRpY2F0ZU1hcC5lbXB0eVxuICBsZXQgaXRlciBmIHQgPSBBLml0ZXIgKFByZWRpY2F0ZU1hcC5pdGVyIGYpIHRcblxuICBsZXQgaGFzaCBwcmVkaWNhdGUgPVxuICAgIG1hdGNoIHByZWRpY2F0ZSB3aXRoXG4gICAgfCBIZXJlIGFnIHwgQm91bmRfc2l0ZSAoYWcsIF8pIHwgSW50ZXJuYWxfc3RhdGUgKGFnLCBfKSAtPiBhZ1xuXG4gIGxldCBsaWZ0IGYgcHJlZGljYXRlX2lkIHRhYiA9IGYgcHJlZGljYXRlX2lkIChBLmdldCB0YWIgKGhhc2ggcHJlZGljYXRlX2lkKSlcbiAgbGV0IGZpbmRfZGVmYXVsdCBkZWYgcCB0ID0gbGlmdCAoUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBkZWYpIHAgdFxuICBsZXQgZmluZF9vcHRpb24gcCB0ID0gbGlmdCBQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcCB0XG4gIGxldCBtZW0gcCB0ID0gbGlmdCBQcmVkaWNhdGVNYXAubWVtIHAgdFxuXG4gIGxldCBhZGQgcHJlZGljYXRlX2lkIHggdGFiID1cbiAgICBsZXQgaGFzaCA9IGhhc2ggcHJlZGljYXRlX2lkIGluXG4gICAgbGV0IG9sZCA9IEEuZ2V0IHRhYiBoYXNoIGluXG4gICAgbGV0IF8gPSBBLnNldCB0YWIgaGFzaCAoUHJlZGljYXRlTWFwLmFkZCBwcmVkaWNhdGVfaWQgeCBvbGQpIGluXG4gICAgdGFiXG5cbiAgbGV0IHJlY3ljbGUgdGFiIGkgPSBBLnNldCB0YWIgaSBQcmVkaWNhdGVNYXAuZW1wdHlcbmVuZFxuXG5tb2R1bGUgTVByZWRpY2F0ZU1hcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmVkaWNhdGVNYXAudFxuXG4gIGxldCBwcmVkaWNhdGVfbWF4IF9wYXJhbWV0ZXIgX2hhbmRsZXIgaW5mbyBlcnJvciBfbGlzdCA9IGVycm9yLCBpbmZvLCAwXG4gIGxldCBlbXB0eSBfbiA9IFByZWRpY2F0ZU1hcC5lbXB0eVxuICBsZXQgaXRlciA9IFByZWRpY2F0ZU1hcC5pdGVyXG4gIGxldCBmaW5kX2RlZmF1bHQgPSBQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0XG4gIGxldCBmaW5kX29wdGlvbiA9IFByZWRpY2F0ZU1hcC5maW5kX29wdGlvblxuICBsZXQgbWVtID0gUHJlZGljYXRlTWFwLm1lbVxuICBsZXQgYWRkID0gUHJlZGljYXRlTWFwLmFkZFxuZW5kXG5cbm1vZHVsZSBDUHJlZGljYXRlTWFwID0gTVByZWRpY2F0ZU1hcFxuIiwiKCoqXG4gICogcHJpb3JpdHkubWxcbiAgKlxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDEzLTA3LTMwIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxNDoyMToxOSBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBzZWxlY3Rpb25fc3RyYXRlZ3kgPVxuICB8IEFsbF9yZW1haW5pbmdfZXZlbnRzXG4gIHwgV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzXG4gIHwgV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcblxudHlwZSB0cnlfdG9fcmVtb3ZlX2ZpcnN0ID0gTGF0ZV9ldmVudHMgfCBFYXJseV9ldmVudHNcblxudHlwZSBsZXZlbCA9XG4gIHwgSGlnaGVzdFxuICB8IEhpZ2hcbiAgfCBBYm92ZV9hdmVyYWdlXG4gIHwgQXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlXG4gIHwgTG93XG4gIHwgTG93ZXN0XG5cbmxldCB3ZWlnaHQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEhpZ2hlc3QgLT4gMFxuICB8IEhpZ2ggLT4gMVxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gMlxuICB8IEF2ZXJhZ2UgLT4gM1xuICB8IEJlbGxvd19hdmVyYWdlIC0+IDRcbiAgfCBMb3cgLT4gNVxuICB8IExvd2VzdCAtPiA2XG5cbmxldCBfY29tcGFyZV9sZXZlbCBsdmwxIGx2bDIgPSBjb21wYXJlICh3ZWlnaHQgbHZsMSkgKHdlaWdodCBsdmwyKVxuXG5sZXQgbWluX2xldmVsIGEgYiA9XG4gIGlmIGNvbXBhcmUgYSBiIDw9IDAgdGhlblxuICAgIGFcbiAgZWxzZVxuICAgIGJcblxubGV0IF9tYXhfbGV2ZWwgYSBiID1cbiAgaWYgY29tcGFyZSBhIGIgPD0gMCB0aGVuXG4gICAgYlxuICBlbHNlXG4gICAgYVxuXG5sZXQgaGlnaGVzdCA9IEhpZ2hlc3RcbmxldCBoaWdoID0gSGlnaFxubGV0IGFib3ZlX2F2ZXJhZ2UgPSBBYm92ZV9hdmVyYWdlXG5sZXQgYXZlcmFnZSA9IEF2ZXJhZ2VcbmxldCBiZWxsb3dfYXZlcmFnZSA9IEJlbGxvd19hdmVyYWdlXG5sZXQgbG93ID0gTG93XG5sZXQgbG93ZXN0ID0gTG93ZXN0XG5cbmxldCBzdHJpbmdfb2ZfbGV2ZWwgbGV2ZWwgPVxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgSGlnaGVzdCAtPiBcImhpZ2hlc3RcIlxuICB8IEhpZ2ggLT4gXCJoaWdoXCJcbiAgfCBBYm92ZV9hdmVyYWdlIC0+IFwiYWJvdmUgYXZlcmFnZVwiXG4gIHwgQXZlcmFnZSAtPiBcImF2ZXJhZ2VcIlxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFwiYmVsbG93IGF2ZXJhZ2VcIlxuICB8IExvdyAtPiBcImxvd1wiXG4gIHwgTG93ZXN0IC0+IFwibG93ZXN0XCJcblxubGV0IGxvd2VyIGxldmVsID1cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IEhpZ2hlc3QgLT4gU29tZSBIaWdoXG4gIHwgSGlnaCAtPiBTb21lIEFib3ZlX2F2ZXJhZ2VcbiAgfCBBYm92ZV9hdmVyYWdlIC0+IFNvbWUgQXZlcmFnZVxuICB8IEF2ZXJhZ2UgLT4gU29tZSBCZWxsb3dfYXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFNvbWUgTG93XG4gIHwgTG93IC0+IFNvbWUgTG93ZXN0XG4gIHwgTG93ZXN0IC0+IE5vbmVcblxubGV0IGhpZ2hlciBsZXZlbCA9XG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCBIaWdoZXN0IC0+IE5vbmVcbiAgfCBIaWdoIC0+IFNvbWUgSGlnaGVzdFxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gU29tZSBIaWdoXG4gIHwgQXZlcmFnZSAtPiBTb21lIEFib3ZlX2F2ZXJhZ2VcbiAgfCBCZWxsb3dfYXZlcmFnZSAtPiBTb21lIEF2ZXJhZ2VcbiAgfCBMb3cgLT4gU29tZSBCZWxsb3dfYXZlcmFnZVxuICB8IExvd2VzdCAtPiBTb21lIExvd1xuXG5tb2R1bGUgTGV2ZWxTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGxldmVsXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCBmIHggPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0cmluZ19vZl9sZXZlbCB4KVxuZW5kKVxuXG5tb2R1bGUgTGV2ZWxNYXAgPSBMZXZlbFNldE1hcC5NYXBcblxudHlwZSBwcmlvcml0aWVzID0ge1xuICBjcmVhdGlvbjogbGV2ZWw7XG4gIHVuYmluZGluZzogbGV2ZWw7XG4gIHJlbW92YWw6IGxldmVsO1xuICBvdGhlcl9ldmVudHM6IGxldmVsO1xuICBzdWJzdGl0dXRpb246IGxldmVsO1xuICBzaWRlX2VmZmVjdHM6IGxldmVsO1xuICBjYW5kaWRhdGVfc2V0X29mX2V2ZW50czogc2VsZWN0aW9uX3N0cmF0ZWd5O1xuICB0cnlfdG9fcmVtb3ZlX2ZpcnN0OiB0cnlfdG9fcmVtb3ZlX2ZpcnN0O1xufVxuKCoqIGVhY2ggZXZlbnQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgbGV2ZWwgY29ycmVzcG9uZGluZyBvZiBpdHMgYWN0aW9ucyAoaWYgbXVsdGlwbGUgYWN0aW9uLCB0aGVuLCB0aGUgbGVhc3QgY29ycmVzcG9uZGluZyBsZXZlbCBpcyBzZWxlY3RlZFxuIEV2ZW50cyB3aXRoIHRoZSBsZWFzdCBsZXZlbCBvZiBwcmlvcml0eSBhcmUgcmVtb3ZlZCBmaXJzdFxuIEFtb25nIHRoZW0sIHRoZSBjaG9pY2UgaXMgZHJpdmVuIGJ5IHRoZSBmaWVsZHMgJ2NhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzJyBhbmQgJ3RyeV90b19yZW1vdmVfZmlyc3QnICopXG5cbmxldCBjYXVzYWwgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2hlc3Q7XG4gICAgcmVtb3ZhbCA9IEhpZ2hlc3Q7XG4gICAgb3RoZXJfZXZlbnRzID0gSGlnaGVzdDtcbiAgICBzdWJzdGl0dXRpb24gPSBIaWdoZXN0O1xuICAgIHNpZGVfZWZmZWN0cyA9IEhpZ2hlc3Q7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCB3ZWFrID1cbiAge1xuICAgIGNyZWF0aW9uID0gSGlnaGVzdDtcbiAgICB1bmJpbmRpbmcgPSBIaWdoZXN0O1xuICAgIHJlbW92YWwgPSBIaWdoZXN0O1xuICAgIG90aGVyX2V2ZW50cyA9IEhpZ2hlc3Q7XG4gICAgc3Vic3RpdHV0aW9uID0gSGlnaDtcbiAgICBzaWRlX2VmZmVjdHMgPSBIaWdoO1xuICAgIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzID0gV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzO1xuICAgIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cztcbiAgfVxuXG5sZXQgc3Ryb25nID1cbiAge1xuICAgIGNyZWF0aW9uID0gSGlnaGVzdDtcbiAgICB1bmJpbmRpbmcgPSBIaWdoO1xuICAgIHJlbW92YWwgPSBBYm92ZV9hdmVyYWdlO1xuICAgIG90aGVyX2V2ZW50cyA9IEF2ZXJhZ2U7XG4gICAgc3Vic3RpdHV0aW9uID0gQmVsbG93X2F2ZXJhZ2U7XG4gICAgc2lkZV9lZmZlY3RzID0gTG93O1xuICAgIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzID0gV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzO1xuICAgIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cztcbiAgfVxuXG5sZXQgbl9zdG9yeSA9IHJlZiAxXG5sZXQgbl9icmFuY2ggPSByZWYgMVxuIiwidHlwZSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBXZWFrIHwgU3Ryb25nIHwgQ2F1c2FsXG50eXBlIG5ld19zdG9yeSA9IHsgaWQ6IGludDsgZ3JhcGg6IEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoIH1cbnR5cGUgc3RvcnkgPSBOZXcgb2YgbmV3X3N0b3J5IHwgU2FtZV9hcyBvZiBpbnRcblxudHlwZSAnYSBvbmVfY29tcHJlc3Npb24gPSB7XG4gIGxvZ19pbmZvOiAnYSBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0O1xuICBzdG9yeV9tb2RlOiBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU7XG4gIHN0b3J5OiBzdG9yeTtcbn1cblxubGV0IHN0cmluZ19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdHJpbmdcIiwgeCkpXG5cbmxldCBpbnRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBzIC0+IHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaW50XCIsIHgpKVxuXG5sZXQgbmV3X3N0b3J5X3RvX2pzb24gbmV3X3N0b3J5ID1cbiAgYEFzc29jXG4gICAgWyBcImlkXCIsIGBJbnQgbmV3X3N0b3J5LmlkOyBcImdyYXBoXCIsIEdyYXBoX2pzb24udG9fanNvbiBuZXdfc3RvcnkuZ3JhcGggXVxuXG5sZXQgbmV3X3N0b3J5X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBpZCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiaWRcIiBsKTtcbiAgICAgICAgIGdyYXBoID0gR3JhcGhfanNvbi5vZl9qc29uIChMaXN0LmFzc29jIFwiZ3JhcGhcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBuZXcgc3RvcnlcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBuZXcgc3RvcnlcIiwgeCkpXG5cbmxldCBzdG9yeV90b19qc29uIHN0b3J5ID1cbiAgbWF0Y2ggc3Rvcnkgd2l0aFxuICB8IE5ldyBuZXdfc3RvcnkgLT4gYEFzc29jIFsgXCJuZXdcIiwgbmV3X3N0b3J5X3RvX2pzb24gbmV3X3N0b3J5IF1cbiAgfCBTYW1lX2FzIGludCAtPiBgQXNzb2MgWyBcInNhbWVfYXNcIiwgYEludCBpbnQgXVxuXG5sZXQgc3Rvcnlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwibmV3XCIsIG5ld19zdG9yeSkgXSAtPiBOZXcgKG5ld19zdG9yeV9vZl9qc29uIG5ld19zdG9yeSlcbiAgfCBgQXNzb2MgWyAoXCJzYW1lX2FzXCIsIGBJbnQgaW50KSBdIC0+IFNhbWVfYXMgaW50XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5XCIsIHgpKVxuXG5sZXQgc3RvcnlfbW9kZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBDYXVzYWwgLT4gYFN0cmluZyBcIkNhdXNhbFwiXG4gIHwgV2VhayAtPiBgU3RyaW5nIFwiV2Vha1wiXG4gIHwgU3Ryb25nIC0+IGBTdHJpbmcgXCJTdHJvbmdcIlxuXG5sZXQgc3RvcnlfbW9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQ2F1c2FsXCIgLT4gQ2F1c2FsXG4gIHwgYFN0cmluZyBcIldlYWtcIiAtPiBXZWFrXG4gIHwgYFN0cmluZyBcIlN0cm9uZ1wiIC0+IFN0cm9uZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBtb2RlXCIsIHgpKVxuXG5sZXQgdG9fanNvbiBsb2dfaW5mb190b19qc29uIG9uZV9jb21wcmVzc2lvbiA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJsb2dfaW5mb1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAoVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gbG9nX2luZm9fdG9fanNvbilcbiAgICAgICAgICAgICAoTGlzdC5yZXYgb25lX2NvbXByZXNzaW9uLmxvZ19pbmZvKSkgKTtcbiAgICAgIFwic3RvcnlfbW9kZVwiLCBzdG9yeV9tb2RlX3RvX2pzb24gb25lX2NvbXByZXNzaW9uLnN0b3J5X21vZGU7XG4gICAgICBcInN0b3J5XCIsIHN0b3J5X3RvX2pzb24gb25lX2NvbXByZXNzaW9uLnN0b3J5O1xuICAgIF1cblxubGV0IG9mX2pzb24gbG9nX2luZm9fb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGxvZ19pbmZvID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJsb2dfaW5mb1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8ub2ZfanNvbiBsb2dfaW5mb19vZl9qc29uKVxuICAgICAgICAgICAgICAgKExpc3QucmV2IGwpXG4gICAgICAgICAgIHwgX3kgLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnkgY29tcHV0YXRpb25cIiwgeCkpKTtcbiAgICAgICAgIHN0b3J5ID0gc3Rvcnlfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0b3J5XCIgbCk7XG4gICAgICAgICBzdG9yeV9tb2RlID0gc3RvcnlfbW9kZV9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlfbW9kZVwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnkgY29tcHV0YXRpb25cIiwgeCkpXG5cbnR5cGUgcGhhc2UgPSBTdGFydCB8IElucHJvZ3Jlc3MgfCBTdWNjZXNzIHwgRmFpbGx1cmVcblxubGV0IHN0YXJ0ID0gXCJzdGFydGluZyBjb21wdXRhdGlvblwiXG5sZXQgaW5wcm9ncmVzcyA9IFwiY29tcHV0YXRpb24gaW4gcHJvZ3Jlc3NcIlxubGV0IHN1Y2Nlc3MgPSBcImNvbXB1dGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIlxubGV0IGZhaWxsdXJlID0gXCJjb21wdXRhdGlvbiAocGFydGlhbGx5KSBmYWlsZWRcIlxuXG5sZXQgcGhhc2VfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgU3RhcnQgLT4gYFN0cmluZyBzdGFydFxuICB8IElucHJvZ3Jlc3MgLT4gYFN0cmluZyBpbnByb2dyZXNzXG4gIHwgU3VjY2VzcyAtPiBgU3RyaW5nIHN1Y2Nlc3NcbiAgfCBGYWlsbHVyZSAtPiBgU3RyaW5nIGZhaWxsdXJlXG5cbmxldCBwaGFzZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gc3RhcnQgLT4gU3RhcnRcbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gaW5wcm9ncmVzcyAtPiBJbnByb2dyZXNzXG4gIHwgYFN0cmluZyBzIHdoZW4gcyA9IHN1Y2Nlc3MgLT4gU3VjY2Vzc1xuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBmYWlsbHVyZSAtPiBGYWlsbHVyZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwaGFzZVwiLCB4KSlcblxudHlwZSBwcm9ncmVzc19iYXIgPSB7IGJvb2w6IHN0cmluZzsgY3VycmVudDogaW50OyB0b3RhbDogaW50IH1cblxubGV0IHByb2dyZXNzX2Jhcl90b19qc29uIHByb2dyZXNzX2JhciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJwcm9ncmVzc19iYXJcIixcbiAgICAgICAgYEFzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJib29sXCIsIGBTdHJpbmcgcHJvZ3Jlc3NfYmFyLmJvb2w7XG4gICAgICAgICAgICBcImN1cnJlbnRcIiwgYEludCBwcm9ncmVzc19iYXIuY3VycmVudDtcbiAgICAgICAgICAgIFwidG90YWxcIiwgYEludCBwcm9ncmVzc19iYXIudG90YWw7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IHByb2dyZXNzX2Jhcl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDEgLT5cbiAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInByb2dyZXNzX2JhclwiIGwgd2l0aFxuICAgIHwgYEFzc29jIGwgd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgKHRyeVxuICAgICAgICAge1xuICAgICAgICAgICBib29sID0gc3RyaW5nX29mX2pzb24gKExpc3QuYXNzb2MgXCJib29sXCIgbCk7XG4gICAgICAgICAgIGN1cnJlbnQgPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImN1cnJlbnRcIiBsKTtcbiAgICAgICAgICAgdG90YWwgPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInRvdGFsXCIgbCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKSlcbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKVxuXG50eXBlICdhIG1lc3NhZ2UgPVxuICB8IFBoYXNlIG9mIHBoYXNlICogc3RyaW5nXG4gIHwgUHJvZ3Jlc3Mgb2YgcHJvZ3Jlc3NfYmFyXG4gIHwgU3Rvcnkgb2YgJ2Egb25lX2NvbXByZXNzaW9uXG5cbmxldCBtZXNzYWdlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IFBoYXNlIChwLCBtKSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJQSEFTRVwiOyBwaGFzZV90b19qc29uIHA7IGBTdHJpbmcgbSBdXG4gIHwgUHJvZ3Jlc3MgcCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJQUk9HUkVTU1wiOyBwcm9ncmVzc19iYXJfdG9fanNvbiBwIF1cbiAgfCBTdG9yeSBzIC0+IGBMaXN0IFsgYFN0cmluZyBcIlNUT1JZXCI7IHRvX2pzb24gKGZ1biBfIC0+IGBOdWxsKSBzIF1cblxubGV0IG1lc3NhZ2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUEhBU0VcIjsgcDsgYFN0cmluZyBtIF0gLT4gUGhhc2UgKHBoYXNlX29mX2pzb24gcCwgbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQUk9HUkVTU1wiOyBwIF0gLT4gUHJvZ3Jlc3MgKHByb2dyZXNzX2Jhcl9vZl9qc29uIHApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiU1RPUllcIjsgcyBdIC0+IFN0b3J5IChvZl9qc29uIChmdW4gXyAtPiAoKSkgcylcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc3RvcnkgbWVzc2FnZVwiLCB4KSlcbiIsIigqKlxuICAqIGNmbG93X2hhbmRsZXIubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMy0wOC0wMiBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMTkgMTQ6MzA6NDAgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ2Zsb3dfaGFuZGxlciA9IHNpZ1xuICB0eXBlIHNvcnRfYWxnb19mb3Jfc3Rvcmllc1xuICB0eXBlIGNvbXByZXNzaW9uX21vZGVcblxuICB2YWwgZ2V0X2NhdXNhbF90cmFjZSA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuICB2YWwgZ2V0X2NhdXNhbF90cmFjZV9vbmx5IDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfd2Vha19jb21wcmVzc2lvbiA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuICB2YWwgZ2V0X3N0cm9uZ19jb21wcmVzc2lvbiA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuXG4gIHR5cGUgcGFyYW1ldGVyID0ge1xuICAgIGNhY2hlX3NpemU6IGludCBvcHRpb247XG4gICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlOiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb247XG4gICAgY29tcHJlc3Npb25fbW9kZTogY29tcHJlc3Npb25fbW9kZTtcbiAgICBwcmlvcml0aWVzX3dlYWs6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19zdHJvbmc6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19jYXVzYWw6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgY29tcHV0ZV9hbGxfc3RvcmllczogYm9vbDtcbiAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXM6IHNvcnRfYWxnb19mb3Jfc3RvcmllcztcbiAgICBsb2dnZXJfZXJyOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX3Byb2ZpbGluZzogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9vdXQ6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfc2VydmVyOiBMb2dnZXJzLnQ7XG4gICAganNvbl9idWZmZXI6XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSBGaWZvLnQgcmVmIG9wdGlvbjtcbiAgICBsb2dfc3RlcDogYm9vbDtcbiAgICBkZWJ1Z19tb2RlOiBib29sO1xuICAgIGxvZ2dlcl9zdGVwOiBMb2dnZXJzLnQ7XG4gICAga2FzYTogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycztcbiAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzOiBib29sO1xuICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyOiBpbnQgb3B0aW9uO1xuICAgIHRpbWVfaW5kZXBlbmRlbnQ6IGJvb2w7XG4gICAgYmxhY2tsaXN0X2V2ZW50czogYm9vbDtcbiAgICBzZXJ2ZXI6IGJvb2w7XG4gICAgaXNfc2VydmVyX2NoYW5uZWxfb246IGJvb2w7XG4gICAgZHVtcDogc3RyaW5nIC0+IHVuaXQ7XG4gIH1cbiAgKCoqIGEgc3RydWN0IHdoaWNoIGNvbnRhaW5zIHBhcmFtZXRlcml6YWJsZSBvcHRpb25zICopXG5cbiAgdmFsIGdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgOlxuICAgIHBhcmFtZXRlciAtPiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb25cblxuICB0eXBlIGhhbmRsZXIgPSB7XG4gICAgKCpoYW5kbGVyIHRvIGludGVycHJldCBhYnN0cmFjdCB2YWx1ZXMqKVxuICAgIGVudjogTW9kZWwudDtcbiAgICBydWxlX25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBhZ2VudF9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgc3RlcHNfYnlfY29sdW1uOlxuICAgICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudDtcbiAgfVxuXG4gIHR5cGUgJ2EgemVyb2FyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2FcblxuICB0eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcbiAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgICAqICdiXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2NcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2RcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdkIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2VcblxuICB2YWwgZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2l0dGVyYXRpb25fYm91bmQgOiBwYXJhbWV0ZXIgLT4gaW50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIDogcGFyYW1ldGVyIC0+IGludCBvcHRpb25cbiAgdmFsIHNldF9maXJzdF9zdG9yeV9wZXJfb2JzIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIGJ1aWxkX3BhcmFtZXRlciA6XG4gICAgY2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbGVkX2Zyb20gLT5cbiAgICA/c2VuZF9tZXNzYWdlOihzdHJpbmcgLT4gdW5pdCkgLT5cbiAgICBub25lOmJvb2wgLT5cbiAgICB3ZWFrOmJvb2wgLT5cbiAgICBzdHJvbmc6Ym9vbCAtPlxuICAgIHVuaXQgLT5cbiAgICBwYXJhbWV0ZXJcblxuICB2YWwgc3RyaW5nX29mX2V4biA6IGV4biAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCBpc19zZXJ2ZXJfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfY29tcHJlc3Npb25fd2VhayA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9jb21wcmVzc2lvbl9zdHJvbmcgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfY29tcHJlc3Npb25fbm9uZSA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9wcmlvcml0aWVzIDogcGFyYW1ldGVyIC0+IFByaW9yaXR5LnByaW9yaXRpZXMgb3B0aW9uXG4gIHZhbCBnZXRfYWxsX3N0b3JpZXNfcGVyX29icyA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfbG9nX3N0ZXAgOiBwYXJhbWV0ZXIgLT4gYm9vbCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9sb2dfc3RlcCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfZGVidWdnaW5nX21vZGUgOiBwYXJhbWV0ZXIgLT4gYm9vbCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9kZWJ1Z2dpbmdfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBnZXRfcHJvZmlsaW5nX2xvZ2dlciA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIGdldF9zZXJ2ZXJfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIGlzX3NlcnZlcl9jaGFubmVsX29uIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIGdldF9sb2dnZXIgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50XG4gIHZhbCBzZXRfbG9nZ2VyIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9vdXRfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9vdXRfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfZGVidWdnaW5nX2NoYW5uZWwgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50XG4gIHZhbCBzZXRfZGVidWdnaW5nX2NoYW5uZWwgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2thc2FfcGFyYW1ldGVycyA6IHBhcmFtZXRlciAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzXG5cbiAgdmFsIHNldF9rYXNhX3BhcmFtZXRlcnMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBkb193ZV91c2VfYnVja2V0X3NvcnQgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgdXNlX2J1Y2tldF9zb3J0IDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgdXNlX2Z1c2lvbl9zb3J0IDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgYWx3YXlzX2Rpc2FtYmlndWF0ZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgaW5pdF9oYW5kbGVyIDogTW9kZWwudCAtPiBoYW5kbGVyXG4gIHZhbCBzdHJpbmdfb2ZfcnVsZV9pZCA6IGhhbmRsZXIgLT4gaW50IC0+IHN0cmluZ1xuICB2YWwgc3RyaW5nX29mX2FnZW50X2lkIDogaGFuZGxlciAtPiBpbnQgLT4gc3RyaW5nXG5cbiAgdmFsIGdldF9wcmVkaWNhdGVfbWFwIDpcbiAgICBoYW5kbGVyIC0+XG4gICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLnRcblxuICB2YWwgZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2JsYWNrbGlzdF9ldmVudHMgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+IHN0cmluZyAtPiB1bml0XG4gIHZhbCByZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+IHVuaXRcbiAgdmFsIHNhdmVfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+IGJvb2wgKiBpbnQgKiBpbnQgKiBpbnQgLT4gdW5pdFxuICB2YWwgcmVzZXRfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+IHVuaXRcbiAgdmFsIHNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gKHN0cmluZyAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+ICh1bml0IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzZXRfc2F2ZV9wcm9ncmVzc19iYXIgOlxuICAgIHBhcmFtZXRlciAtPiAoYm9vbCAqIGludCAqIGludCAqIGludCAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcblxuICB2YWwgc2V0X3Jlc2V0X3Byb2dyZXNzX2JhciA6IHBhcmFtZXRlciAtPiAodW5pdCAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcblxuICB2YWwgc2F2ZV9lcnJvcl9sb2cgOlxuICAgIHBhcmFtZXRlciAtPlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICB1bml0XG5cbiAgdmFsIHNldF9zYXZlX2Vycm9yX2xvZyA6XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT4gdW5pdCkgLT5cbiAgICBwYXJhbWV0ZXJcblxuICB2YWwgcHVzaF9qc29uIDpcbiAgICBwYXJhbWV0ZXIgLT4gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBTdG9yeV9qc29uLm1lc3NhZ2UgLT4gdW5pdFxuXG4gIHZhbCBwb3BfanNvbiA6XG4gICAgcGFyYW1ldGVyIC0+IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIG9wdGlvblxuZW5kXG5cbm1vZHVsZSBDZmxvd19oYW5kbGVyIDogQ2Zsb3dfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldCB8IEZ1c2lvblxuXG4gIHR5cGUgY29tcHJlc3Npb25fbW9kZSA9IHtcbiAgICBjYXVzYWxfdHJhY2U6IGJvb2w7XG4gICAgd2Vha19jb21wcmVzc2lvbjogYm9vbDtcbiAgICBzdHJvbmdfY29tcHJlc3Npb246IGJvb2w7XG4gIH1cblxuICBsZXQgZ2V0X2NhdXNhbF90cmFjZSB4ID0geC5jYXVzYWxfdHJhY2VcbiAgbGV0IGdldF9jYXVzYWxfdHJhY2Vfb25seSB4ID0gbm90ICh4LndlYWtfY29tcHJlc3Npb24gfHwgeC5zdHJvbmdfY29tcHJlc3Npb24pXG4gIGxldCBnZXRfd2Vha19jb21wcmVzc2lvbiB4ID0geC53ZWFrX2NvbXByZXNzaW9uXG4gIGxldCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uIHggPSB4LnN0cm9uZ19jb21wcmVzc2lvblxuXG4gIHR5cGUgcGFyYW1ldGVyID0ge1xuICAgIGNhY2hlX3NpemU6IGludCBvcHRpb247XG4gICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlOiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb247XG4gICAgY29tcHJlc3Npb25fbW9kZTogY29tcHJlc3Npb25fbW9kZTtcbiAgICBwcmlvcml0aWVzX3dlYWs6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19zdHJvbmc6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19jYXVzYWw6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgY29tcHV0ZV9hbGxfc3RvcmllczogYm9vbDtcbiAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXM6IHNvcnRfYWxnb19mb3Jfc3RvcmllcztcbiAgICBsb2dnZXJfZXJyOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX3Byb2ZpbGluZzogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9vdXQ6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfc2VydmVyOiBMb2dnZXJzLnQ7XG4gICAganNvbl9idWZmZXI6XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSBGaWZvLnQgcmVmIG9wdGlvbjtcbiAgICBsb2dfc3RlcDogYm9vbDtcbiAgICBkZWJ1Z19tb2RlOiBib29sO1xuICAgIGxvZ2dlcl9zdGVwOiBMb2dnZXJzLnQ7XG4gICAga2FzYTogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycztcbiAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzOiBib29sO1xuICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyOiBpbnQgb3B0aW9uO1xuICAgIHRpbWVfaW5kZXBlbmRlbnQ6IGJvb2w7XG4gICAgYmxhY2tsaXN0X2V2ZW50czogYm9vbDtcbiAgICBzZXJ2ZXI6IGJvb2w7XG4gICAgaXNfc2VydmVyX2NoYW5uZWxfb246IGJvb2w7XG4gICAgZHVtcDogc3RyaW5nIC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5jdXJyZW50X2NvbXByZXNzaW9uX21vZGVcblxuICBsZXQgYnVpbGRfcGFyYW1ldGVyIH5jYWxsZWRfZnJvbVxuICAgICAgPyhzZW5kX21lc3NhZ2UgPVxuICAgICAgICBmdW4geCAtPlxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIgXCIlc1wiIHg7XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlcikgfm5vbmUgfndlYWsgfnN0cm9uZyAoKVxuICAgICAgPVxuICAgIGxldCAoIHNlcnZlcixcbiAgICAgICAgICBvdXRfc2VydmVyLFxuICAgICAgICAgIG91dF9jaGFubmVsLFxuICAgICAgICAgIG91dF9jaGFubmVsX2VycixcbiAgICAgICAgICBvdXRfY2hhbm5lbF9wcm9maWxpbmcsXG4gICAgICAgICAgbG9nX3N0ZXBfY2hhbm5lbCApID1cbiAgICAgIG1hdGNoIGNhbGxlZF9mcm9tIHdpdGhcbiAgICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIC0+XG4gICAgICAgICggdHJ1ZSxcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCB+bW9kZTpMb2dnZXJzLkpzb24gc3Rkb3V0LFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9pbmZpbml0ZV9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9pbmZpbml0ZV9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9jaXJjdWxhcl9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9jaXJjdWxhcl9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MX1RhYnVsYXIgKCkgKVxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTaW1cbiAgICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSW50ZXJuYWxpc2VkIC0+XG4gICAgICAgIGxldCBjaGFubmVsID0gS2FwcGFfZmlsZXMub3Blbl9icmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nICgpIGluXG4gICAgICAgICggZmFsc2UsXG4gICAgICAgICAgTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyXG4gICAgICAgICAgICAoRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFubmVsKSxcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIEZvcm1hdC5zdGRfZm9ybWF0dGVyIClcbiAgICBpblxuICAgIHtcbiAgICAgIHNlcnZlcjtcbiAgICAgIGlzX3NlcnZlcl9jaGFubmVsX29uID0gc2VydmVyO1xuICAgICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gTm9uZTtcbiAgICAgIHByaW9yaXRpZXNfd2VhayA9IFByaW9yaXR5LndlYWs7XG4gICAgICBwcmlvcml0aWVzX3N0cm9uZyA9IFByaW9yaXR5LnN0cm9uZztcbiAgICAgIHByaW9yaXRpZXNfY2F1c2FsID0gUHJpb3JpdHkuY2F1c2FsO1xuICAgICAgY29tcHV0ZV9hbGxfc3RvcmllcyA9IGZhbHNlO1xuICAgICAgc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gQnVja2V0O1xuICAgICAgbG9nZ2VyX3NlcnZlciA9IG91dF9zZXJ2ZXI7XG4gICAgICBsb2dnZXJfb3V0ID0gb3V0X2NoYW5uZWw7XG4gICAgICBsb2dnZXJfZXJyID0gb3V0X2NoYW5uZWxfZXJyO1xuICAgICAgbG9nZ2VyX3Byb2ZpbGluZyA9IG91dF9jaGFubmVsX3Byb2ZpbGluZztcbiAgICAgIGpzb25fYnVmZmVyID0gTm9uZTtcbiAgICAgIGNvbXByZXNzaW9uX21vZGUgPVxuICAgICAgICB7XG4gICAgICAgICAgY2F1c2FsX3RyYWNlID0gbm9uZTtcbiAgICAgICAgICB3ZWFrX2NvbXByZXNzaW9uID0gd2VhaztcbiAgICAgICAgICBzdHJvbmdfY29tcHJlc3Npb24gPSBzdHJvbmc7XG4gICAgICAgIH07XG4gICAgICBjYWNoZV9zaXplID0gUGFyYW1ldGVyLmdldF9jYWNoZV9zaXplICgpO1xuICAgICAgZGVidWdfbW9kZSA9IGZhbHNlO1xuICAgICAgbG9nX3N0ZXAgPSB0cnVlO1xuICAgICAgbG9nZ2VyX3N0ZXAgPSBsb2dfc3RlcF9jaGFubmVsO1xuICAgICAga2FzYSA9IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpO1xuICAgICAgYWx3YXlzX2Rpc2FtYmlndWF0ZV9pbml0aWFsX3N0YXRlcyA9IHRydWU7XG4gICAgICBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IE5vbmU7XG4gICAgICB0aW1lX2luZGVwZW5kZW50ID0gIVBhcmFtZXRlci50aW1lX2luZGVwZW5kZW50O1xuICAgICAgYmxhY2tsaXN0X2V2ZW50cyA9ICFQYXJhbWV0ZXIuYmxhY2tsaXN0X2V2ZW50cztcbiAgICAgIGR1bXAgPSBzZW5kX21lc3NhZ2U7XG4gICAgfVxuXG4gIGxldCBzZXRfY29tcHJlc3Npb25fd2VhayBwID1cbiAgICB7IHAgd2l0aCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBTb21lIFN0b3J5X2pzb24uV2VhayB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl9zdHJvbmcgcCA9XG4gICAgeyBwIHdpdGggY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gU29tZSBTdG9yeV9qc29uLlN0cm9uZyB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl9ub25lIHAgPVxuICAgIHsgcCB3aXRoIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgfVxuXG4gIHR5cGUgaGFuZGxlciA9IHtcbiAgICBlbnY6IE1vZGVsLnQ7XG4gICAgcnVsZV9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgYWdlbnRfbmFtZV9jYWNoZTogc3RyaW5nIGFycmF5O1xuICAgIHN0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChpbnQgKiBQcmVkaWNhdGVfbWFwcy5wcmVkaWNhdGVfdmFsdWUgKiBib29sKSBsaXN0XG4gICAgICBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLnQ7XG4gIH1cblxuICB0eXBlICdhIHplcm9hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcbiAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgICAqICdhXG5cbiAgdHlwZSAoJ2EsICdiKSB1bmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICAgKiAnYlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcbiAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgICAqICdjXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcbiAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgICAqICdkXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBxdWF0ZXJuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnZCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcbiAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgICAqICdlXG5cbiAgbGV0IGluaXRfaGFuZGxlciBlbnYgPVxuICAgIGxldCBuX3J1bGVzID0gTW9kZWwubmJfcnVsZXMgZW52IGluXG4gICAgbGV0IHJ1bGVfbmFtZV9jYWNoZSA9IEFycmF5Lm1ha2Ugbl9ydWxlcyBcIlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgICAgKGZ1biB4ICgpIHIgLT5cbiAgICAgICAgICBydWxlX25hbWVfY2FjaGUuKHgpIDwtXG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KVxuICAgICAgICAgICAgICByLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUpXG4gICAgICAgICgpIGVudlxuICAgIGluXG4gICAgbGV0IG5fYWdlbnRzID0gU2lnbmF0dXJlLnNpemUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSBpblxuICAgIGxldCBhZ2VudF9uYW1lX2NhY2hlID1cbiAgICAgIEFycmF5LmluaXQgbl9hZ2VudHMgKGZ1biB4IC0+XG4gICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikgeClcbiAgICBpblxuICAgIGxldCBzdGVwc19ieV9jb2x1bW4gPSBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLmVtcHR5IDAgaW5cbiAgICB7IGVudjsgcnVsZV9uYW1lX2NhY2hlOyBhZ2VudF9uYW1lX2NhY2hlOyBzdGVwc19ieV9jb2x1bW4gfVxuXG4gIGxldCBzdHJpbmdfb2ZfZXhuIF94ID0gU29tZSBcIlwiXG5cbiAgbGV0IGdldF9wcmlvcml0aWVzIHBhcmFtZXRlciA9XG4gICAgbWF0Y2ggcGFyYW1ldGVyLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgU3RvcnlfanNvbi5XZWFrIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfd2Vha1xuICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPiBTb21lIHBhcmFtZXRlci5wcmlvcml0aWVzX3N0cm9uZ1xuICAgIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPiBTb21lIHBhcmFtZXRlci5wcmlvcml0aWVzX2NhdXNhbFxuXG4gIGxldCBzZXRfZmlyc3Rfc3RvcnlfcGVyX29icyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggY29tcHV0ZV9hbGxfc3RvcmllcyA9IGZhbHNlIH1cblxuICBsZXQgc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGNvbXB1dGVfYWxsX3N0b3JpZXMgPSB0cnVlIH1cblxuICBsZXQgZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmNvbXB1dGVfYWxsX3N0b3JpZXNcbiAgbGV0IGdldF9kZWJ1Z2dpbmdfbW9kZSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuZGVidWdfbW9kZVxuICBsZXQgc2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciBib29sID0geyBwYXJhbWV0ZXIgd2l0aCBkZWJ1Z19tb2RlID0gYm9vbCB9XG4gIGxldCBnZXRfbG9nX3N0ZXAgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ19zdGVwXG4gIGxldCBzZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGJvb2wgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ19zdGVwID0gYm9vbCB9XG4gIGxldCBnZXRfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfc3RlcFxuICBsZXQgc2V0X2xvZ2dlciBwYXJhbWV0ZXIgZm10ID0geyBwYXJhbWV0ZXIgd2l0aCBsb2dnZXJfc3RlcCA9IGZtdCB9XG4gIGxldCBnZXRfb3V0X2NoYW5uZWwgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9vdXRcbiAgbGV0IHNldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIgZm10ID0geyBwYXJhbWV0ZXIgd2l0aCBsb2dnZXJfb3V0ID0gZm10IH1cbiAgbGV0IGdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nZ2VyX2VyclxuICBsZXQgc2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9lcnIgPSBmbXQgfVxuICBsZXQgZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIua2FzYVxuXG4gIGxldCBzZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlciBwYXJhbWV0ZXInID1cbiAgICB7IHBhcmFtZXRlcicgd2l0aCBrYXNhID0gcGFyYW1ldGVyIH1cblxuICBsZXQgZG9fd2VfdXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlciA9IHBhcmFtZXRlci5zb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXRcblxuICBsZXQgdXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBzb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXQgfVxuXG4gIGxldCB1c2VfZnVzaW9uX3NvcnQgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEZ1c2lvbiB9XG5cbiAgbGV0IGFsd2F5c19kaXNhbWJpZ3VhdGUgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIuYWx3YXlzX2Rpc2FtYmlndWF0ZV9pbml0aWFsX3N0YXRlc1xuXG4gIGxldCBzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXIgYm9vbCA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzID0gYm9vbCB9XG5cbiAgbGV0IGRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgPSBOb25lIH1cblxuICBsZXQgc2V0X2l0dGVyYXRpb25fYm91bmQgcGFyYW1ldGVyIGludCA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IFNvbWUgaW50IH1cblxuICBsZXQgZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyXG5cbiAgbGV0IGdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfcHJvZmlsaW5nXG4gIGxldCBzdHJpbmdfb2ZfcnVsZV9pZCBoYW5kbGVyIGkgPSBoYW5kbGVyLnJ1bGVfbmFtZV9jYWNoZS4oaSlcbiAgbGV0IHN0cmluZ19vZl9hZ2VudF9pZCBoYW5kbGVyIGkgPSBoYW5kbGVyLmFnZW50X25hbWVfY2FjaGUuKGkpXG4gIGxldCBnZXRfcHJlZGljYXRlX21hcCBoYW5kbGVyID0gaGFuZGxlci5zdGVwc19ieV9jb2x1bW5cbiAgbGV0IGdldF9pc190aW1lX2luZGVwZW5kZW50IHBhcmFtZXRlciA9IHBhcmFtZXRlci50aW1lX2luZGVwZW5kZW50XG4gIGxldCBnZXRfYmxhY2tsaXN0X2V2ZW50cyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuYmxhY2tsaXN0X2V2ZW50c1xuICBsZXQgaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnNlcnZlclxuICBsZXQgZ2V0X3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfc2VydmVyXG5cbiAgbGV0IHNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXIgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBsb2dnZXJfc2VydmVyID0gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyO1xuICAgICAgaXNfc2VydmVyX2NoYW5uZWxfb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgbGV0IGlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlciA9IHBhcmFtZXRlci5pc19zZXJ2ZXJfY2hhbm5lbF9vblxuXG4gIGxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIHggPVxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSB4XG5cbiAgbGV0IGR1bXBfanNvbiBwYXJhbWV0ZXIgbWVzc2FnZSA9XG4gICAgaWYgaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgIHBhcmFtZXRlci5kdW1wXG4gICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChTdG9yeV9qc29uLm1lc3NhZ2VfdG9fanNvbiBtZXNzYWdlKSlcblxuICBsZXQgc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIHggPVxuICAgIGxldCBiLCBpLCBfaiwgbl9zdG9yaWVzID0geCBpblxuICAgIGxldCAoKSA9XG4gICAgICBkdW1wX2pzb24gcGFyYW1ldGVyXG4gICAgICAgIChTdG9yeV9qc29uLlByb2dyZXNzXG4gICAgICAgICAgIHtcbiAgICAgICAgICAgICBTdG9yeV9qc29uLmJvb2wgPVxuICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgXCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBcImZhbHNlXCIpO1xuICAgICAgICAgICAgIFN0b3J5X2pzb24uY3VycmVudCA9IGk7XG4gICAgICAgICAgICAgU3RvcnlfanNvbi50b3RhbCA9IG5fc3RvcmllcztcbiAgICAgICAgICAgfSlcbiAgICBpblxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfcHJvZ3Jlc3NfYmFyIHhcblxuICBsZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyICgpXG5cbiAgbGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlICgpXG5cbiAgbGV0IHNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtZXRlci5rYXNhIHdpdGhcbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBmO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtZXRlci5rYXNhIHdpdGhcbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlID0gZjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgbGV0IHNldF9zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7IHBhcmFtZXRlci5rYXNhIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgPSBmIH07XG4gICAgfVxuXG4gIGxldCBzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9XG4gICAgICAgIHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgPSBmIH07XG4gICAgfVxuXG4gIGxldCBzYXZlX2Vycm9yX2xvZyBwYXJhbWV0ZXIgeCA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0IHhcblxuICBsZXQgc2V0X3NhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9IHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgPSBmIH07XG4gICAgfVxuXG4gIGxldCBwdXNoX2pzb24gcGFyYW1ldGVyIGpzb24gPVxuICAgIG1hdGNoIHBhcmFtZXRlci5qc29uX2J1ZmZlciB3aXRoXG4gICAgfCBOb25lIC0+IGR1bXBfanNvbiBwYXJhbWV0ZXIganNvblxuICAgIHwgU29tZSByZWYgLT4gcmVmIDo9IEZpZm8ucHVzaCBqc29uICFyZWZcblxuICBsZXQgcG9wX2pzb24gcGFyYW1ldGVyID1cbiAgICBtYXRjaCBwYXJhbWV0ZXIuanNvbl9idWZmZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJlZiAtPlxuICAgICAgbGV0IGZpZm8sIGVsdF9vcHQgPSBGaWZvLnBvcCAhcmVmIGluXG4gICAgICBsZXQgKCkgPSByZWYgOj0gZmlmbyBpblxuICAgICAgZWx0X29wdFxuZW5kXG4iLCIoKipcbiAgKiBrYXBwYV9pbnN0YW50aWF0aW9uLm1sXG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI5LzA4LzIwMTFcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMDIvMDgvMjAxNVxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbmxldCBjb21wb3NlX3dpdGhfaGFuZGxlciBmIGcgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeCA9XG4gIGxldCBlcnJvciwgeSA9IGcgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeCBpblxuICBmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHlcblxubW9kdWxlIFAgPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzXG5cbm1vZHVsZSB0eXBlIENmbG93X3NpZ25hdHVyZSA9IHNpZ1xuICBtb2R1bGUgSCA6IENmbG93X2hhbmRsZXIuQ2Zsb3dfaGFuZGxlclxuXG4gIHR5cGUgYWdlbnRfaWQgPSBpbnRcblxuICBtb2R1bGUgQWdlbnRJZFNldCA6IFNldE1hcC5TZXQgd2l0aCB0eXBlIGVsdCA9IGFnZW50X2lkXG5cbiAgdHlwZSBpbnRlcm5hbF9zdGF0ZSA9IGludFxuICB0eXBlIHNpZGVfZWZmZWN0ID0gSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgbGlzdFxuXG4gIHZhbCBlbXB0eV9zaWRlX2VmZmVjdCA6IHNpZGVfZWZmZWN0XG5cbiAgdmFsIGFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlIDpcbiAgICBJbnN0YW50aWF0aW9uLmJpbmRpbmdfdHlwZSAtPiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcblxuICB2YWwgc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSA6XG4gICAgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3R5cGUgLT4gSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICB2YWwgYWdlbnRfaWRfb2ZfYWdlbnQgOiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIC0+IGludFxuICB2YWwgYWdlbnRfbmFtZV9vZl9hZ2VudCA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgLT4gSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG5cbiAgdmFsIGFnZW50X29mX3NpdGUgOlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IEluc3RhbnRpYXRpb24uY29uY3JldGVcblxuICB2YWwgYWdlbnRfaWRfb2Zfc2l0ZSA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IGludFxuXG4gIHZhbCBhZ2VudF9uYW1lX29mX3NpdGUgOlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuXG4gIHZhbCBzaXRlX25hbWVfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICB2YWwgYnVpbGRfZ3JpZCA6XG4gICAgKFRyYWNlLnN0ZXAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0KSBsaXN0IC0+XG4gICAgYm9vbCAtPlxuICAgIEguaGFuZGxlciAtPlxuICAgIENhdXNhbC5ncmlkXG5cbiAgdmFsIHByaW50X3NpZGVfZWZmZWN0IDogTG9nZ2Vycy50IC0+IHNpZGVfZWZmZWN0IC0+IHVuaXRcblxuICB2YWwgc2lkZV9lZmZlY3Rfb2ZfbGlzdCA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgbGlzdCAtPiBzaWRlX2VmZmVjdFxuXG4gIHZhbCBnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIDogVHJhY2Uuc3RlcCAtPiBpbnQgb3B0aW9uXG4gIHZhbCBnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAgOiBUcmFjZS5zdGVwIC0+IGZsb2F0IG9wdGlvblxuXG4gIHZhbCBsZXZlbF9vZl9ldmVudCA6XG4gICAgUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb24gLT5cbiAgICAoVHJhY2Uuc3RlcCwgYWdlbnRfaWQgLT4gYm9vbCwgUHJpb3JpdHkubGV2ZWwpIEguYmluYXJ5XG5cbiAgdmFsIGRpc2FtYmlndWF0ZSA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgY2xlYW5fZXZlbnRzIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBmaWxsX3NpcGhvbiA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgc3BsaXRfaW5pdCA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgYWdlbnRfaWRfaW5fb2JzIDogKFRyYWNlLnN0ZXAsIEFnZW50SWRTZXQudCkgSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBDZmxvd19saW5rZXIgOiBDZmxvd19zaWduYXR1cmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEggPSBDZmxvd19oYW5kbGVyLkNmbG93X2hhbmRsZXJcbiAgbW9kdWxlIFBJID0gSW5zdGFudGlhdGlvblxuXG4gIHR5cGUgYWdlbnRfaWQgPSBpbnRcbiAgdHlwZSBzaWRlX2VmZmVjdCA9IFBJLmNvbmNyZXRlIFBJLnNpdGUgbGlzdFxuXG4gIG1vZHVsZSBBZ2VudElkTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIEFnZW50SWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgU2l0ZU1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBTaXRlU2V0ID0gTW9kcy5JbnRTZXRcblxuICB0eXBlIGludGVybmFsX3N0YXRlID0gaW50XG5cbiAgbGV0IGVtcHR5X3NpZGVfZWZmZWN0ID0gW11cbiAgbGV0IHNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUgPSBzbmRcbiAgbGV0IGFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlID0gZnN0XG4gIGxldCBhZ2VudF9pZF9vZl9hZ2VudCA9IGZzdFxuICBsZXQgYWdlbnRfbmFtZV9vZl9hZ2VudCA9IHNuZFxuICBsZXQgYWdlbnRfb2Zfc2l0ZSA9IGZzdFxuICBsZXQgYWdlbnRfaWRfb2Zfc2l0ZSB4ID0gYWdlbnRfaWRfb2ZfYWdlbnQgQEAgYWdlbnRfb2Zfc2l0ZSB4XG4gIGxldCBhZ2VudF9uYW1lX29mX3NpdGUgeCA9IGFnZW50X25hbWVfb2ZfYWdlbnQgQEAgYWdlbnRfb2Zfc2l0ZSB4XG4gIGxldCBzaXRlX25hbWVfb2Zfc2l0ZSA9IHNuZFxuXG4gIGxldCBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCBmIHggPVxuICAgIG1hdGNoIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuXG4gIGxldCBnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAgeCA9XG4gICAgZ2V0X2dlbl9vZl9yZWZpbmVkX3N0ZXAgKGZ1biB4IC0+IHguVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUpIHhcblxuICBsZXQgZ2V0X2lkX29mX3JlZmluZWRfc3RlcCB4ID1cbiAgICBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCAoZnVuIHggLT4geC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQpIHhcblxuICBsZXQgYnVpbGRfZ3JpZCBsaXN0IGJvb2wgaGFuZGxlciA9XG4gICAgbGV0IGVudiA9IGhhbmRsZXIuSC5lbnYgaW5cbiAgICBsZXQgZW1wdHlfc2V0ID0gW10gaW5cbiAgICBsZXQgZ3JpZCA9IENhdXNhbC5lbXB0eV9ncmlkICgpIGluXG4gICAgbGV0IGdyaWQsIF8sIF8sIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZ3JpZCwgc2lkZV9lZmZlY3QsIGNvdW50ZXIsIHN1YnMpIChrLCBzaWRlKSAtPlxuICAgICAgICAgIGxldCBtYXliZV9zaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgZnVuIHNlIC0+XG4gICAgICAgICAgICBzZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBmdW4gXyAtPlxuICAgICAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHNpZGVfZWZmZWN0IHNpZGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2xhdGUgeSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCB5IHkgc3VicyBpblxuICAgICAgICAgIG1hdGNoIGsgd2l0aFxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoaWQsIGV2ZW50LCBpbmZvKSAtPlxuICAgICAgICAgICAgbGV0IGV2ZW50JyA9IFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCB0cmFuc2xhdGUgZXZlbnQgaW5cbiAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgICAgICAgbWF5YmVfc2lkZV9lZmZlY3QgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQ2F1c2FsLnJlY29yZFxuICAgICAgICAgICAgICAgICggVHJhY2UuUlVMRSBpZCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBldmVudCcuSW5zdGFudGlhdGlvbi5hY3Rpb25zO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Jy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Jy5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBpbmZvIClcbiAgICAgICAgICAgICAgICBjb3VudGVyIGVudiBncmlkLFxuICAgICAgICAgICAgICBlbXB0eV9zZXQsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IChpZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgZXZlbnQnID0gUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IHRyYW5zbGF0ZSBldmVudCBpblxuICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkXG4gICAgICAgICAgICAgICAgKCBUcmFjZS5QRVJUIGlkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQnLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluZm8gKVxuICAgICAgICAgICAgICAgIGNvdW50ZXIgZW52IGdyaWQsXG4gICAgICAgICAgICAgIGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLk9icyAoaWQsIHRlc3RzLCBpbmZvKSAtPlxuICAgICAgICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCB0cmFuc2xhdGUpKVxuICAgICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkX29icyAoaWQsIHRlc3RzJywgaW5mbykgc2lkZV9lZmZlY3QgY291bnRlciBncmlkLFxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBlbXB0eV9zZXQsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5TdWJzIChhLCBiKSAtPlxuICAgICAgICAgICAgZ3JpZCwgc2lkZV9lZmZlY3QsIGNvdW50ZXIsIE1vZHMuSW50TWFwLmFkZCBhIGIgc3Vic1xuICAgICAgICAgIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgICAgICAgICBsZXQgYWN0aW9ucycgPVxuICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRfaW5pdFxuICAgICAgICAgICAgICAgIChUcmFjZS5jcmVhdGlvbl9vZl9hY3Rpb25zIHNuZCBhY3Rpb25zJywgYWN0aW9ucycpXG4gICAgICAgICAgICAgICAgY291bnRlciBlbnYgZ3JpZCxcbiAgICAgICAgICAgICAgc2lkZV9lZmZlY3QsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5EdW1teSBfIC0+IGdyaWQsIG1heWJlX3NpZGVfZWZmZWN0IGVtcHR5X3NldCwgY291bnRlciwgc3VicylcbiAgICAgICAgKGdyaWQsIGVtcHR5X3NldCwgMSwgTW9kcy5JbnRNYXAuZW1wdHkpXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGdyaWRcblxuICBsZXQgY2xlYW5fZXZlbnRzID1cbiAgICBMaXN0LmZpbHRlciAoZnVuY3Rpb25cbiAgICAgIHwgVHJhY2UuUnVsZSBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5Jbml0IF8gLT4gdHJ1ZVxuICAgICAgfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuU3VicyBfIC0+IGZhbHNlKVxuXG4gIGxldCBwcmludF9zaWRlX2VmZmVjdCBsb2cgPVxuICAgIExpc3QuaXRlciAoZnVuICgoYSwgXyksIGIpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIoJWksJWkpLFwiIGEgYilcblxuICBsZXQgc2lkZV9lZmZlY3Rfb2ZfbGlzdCBsID0gbFxuXG4gIGxldCBsZXZlbF9vZl9ldmVudCBwcmlvcml0eV9vcHQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGUgc2V0ID1cbiAgICBtYXRjaCBwcmlvcml0eV9vcHQsIEguZ2V0X3ByaW9yaXRpZXMgcGFyYW1ldGVyIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBQcmlvcml0eS5oaWdoZXN0XG4gICAgfCBTb21lIHByaW9yaXRpZXMsIF8gfCBOb25lLCBTb21lIHByaW9yaXRpZXMgLT5cbiAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgIHwgVHJhY2UuT2JzIF8gLT4gZXJyb3IsIGxvZ19pbmZvLCBwcmlvcml0aWVzLlByaW9yaXR5Lm90aGVyX2V2ZW50c1xuICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgbGV0IGFjdGlvbnMgPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZSBpblxuICAgICAgICBsZXQgcHJpb3JpdHkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIHByaW9yaXR5IC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIChhZywgXykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWdfaWQgPSBhZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgICAgICAgICAgIGlmIHNldCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgICAgICBwcmlvcml0eVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LmNyZWF0aW9uXG4gICAgICAgICAgICAgIHwgUEkuUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICBQcmlvcml0eS5taW5fbGV2ZWwgcHJpb3JpdHkgcHJpb3JpdGllcy5Qcmlvcml0eS5yZW1vdmFsXG4gICAgICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsIF8gLT4gcHJpb3JpdHlcbiAgICAgICAgICAgICAgfCBQSS5GcmVlIF8gLT5cbiAgICAgICAgICAgICAgICBQcmlvcml0eS5taW5fbGV2ZWwgcHJpb3JpdHkgcHJpb3JpdGllcy5Qcmlvcml0eS51bmJpbmRpbmdcbiAgICAgICAgICAgICAgfCBQSS5CaW5kIChfLCBfKSB8IFBJLkJpbmRfdG8gKF8sIF8pIC0+IHByaW9yaXR5KVxuICAgICAgICAgICAgcHJpb3JpdGllcy5Qcmlvcml0eS5vdGhlcl9ldmVudHMgKGZzdCBhY3Rpb25zKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHByaW9yaXR5XG4gICAgICB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5Jbml0IF8gLT5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBwcmlvcml0aWVzLlByaW9yaXR5LnN1YnN0aXR1dGlvbilcblxuICBsZXQgc3Vic19hZ2VudF9pbl9ldmVudCBtYXBwaW5nIG1hcHBpbmcnID0gZnVuY3Rpb25cbiAgICAoKiBtYXBwaW5nIC0+IGJlZm9yZSB0aGUgZXZlbnQsIGluY2x1ZGluZyBhZ2VudHMgdG8gYmUgcmVtb3ZlZCAqKVxuICAgICgqIG1hcHBpbmcnIC0+IGFmdGVyIHRoZSBldmVudCwgaW5jbHVkaW5nIGFnZW50cyB0byBiZSBjcmVhdGVkICopXG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBvbmUgYWdlbnQgaXMgcmVtb3ZlZCwgYW5kIG9uZSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUgaWQgaW4gYSBzaW5nbGUgZXZlbnQgKilcbiAgICB8IFRyYWNlLlJ1bGUgKGEsIGV2ZW50LCBpbmZvKSAtPlxuICAgICAgVHJhY2UuUnVsZVxuICAgICAgICAoIGEsXG4gICAgICAgICAgUEkuc3Vic3RfbWFwMl9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudFxuICAgICAgICAgICAgKGZ1biB4IC0+IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nKVxuICAgICAgICAgICAgKGZ1biB4IC0+IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nJylcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIGluZm8gKVxuICAgIHwgVHJhY2UuUGVydCAoYSwgZXZlbnQsIGluZm8pIC0+XG4gICAgICBUcmFjZS5QZXJ0XG4gICAgICAgICggYSxcbiAgICAgICAgICBQSS5zdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpXG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKVxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgaW5mbyApXG4gICAgfCBUcmFjZS5PYnMgKGEsIGIsIGMpIC0+XG4gICAgICBUcmFjZS5PYnNcbiAgICAgICAgKCBhLFxuICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAoUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nKSkpXG4gICAgICAgICAgICBiLFxuICAgICAgICAgIGMgKVxuICAgIHwgVHJhY2UuSW5pdCBiIC0+XG4gICAgICBUcmFjZS5Jbml0XG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIChmdW4geCAtPlxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nJykpXG4gICAgICAgICAgIGIpXG4gICAgfCAoVHJhY2UuRHVtbXkgXyB8IFRyYWNlLlN1YnMgXykgYXMgZXZlbnQgLT4gZXZlbnRcblxuICBsZXQgZGlzYW1iaWd1YXRlIGV2ZW50X2xpc3QgPVxuICAgIGxldCBfLCBfLCBfLCBldmVudF9saXN0X3JldiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcsIGV2ZW50X2xpc3QpIGV2ZW50IC0+XG4gICAgICAgICAgbGV0IG1heF9pZCwgdXNlZCwgbWFwcGluZycgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAobWF4X2lkLCB1c2VkLCBtYXBwaW5nKSB4IC0+XG4gICAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0geCB1c2VkIHRoZW5cbiAgICAgICAgICAgICAgICAgICggbWF4X2lkICsgMSxcbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGQgKG1heF9pZCArIDEpIHVzZWQsXG4gICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHggKG1heF9pZCArIDEpIG1hcHBpbmcgKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1heCB4IG1heF9pZCwgQWdlbnRJZFNldC5hZGQgeCB1c2VkLCBtYXBwaW5nKVxuICAgICAgICAgICAgICAobWF4X2lkLCB1c2VkLCBtYXBwaW5nKVxuICAgICAgICAgICAgICAoVHJhY2UuY3JlYXRpb25fb2Zfc3RlcCBldmVudClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIG1hcHBpbmcgY2FuIGJlIHNhZmVseSBhcHBsaWVkIHRvIGFsbCBhZ2VudHMgZXhjZXB0IHRoZSBuZXdseSBjcmVhdGVkIG9uZXMgKilcbiAgICAgICAgICAoKiBtYXBwaW5nJyBjYW4gYmUgc2FmZWx5IGFwcGxpZWQgdG8gYWxsIGFnZW50cyBleGNlcHQgdGhlIG9uZXMgdGhhdCBoYXZlIGJlZW4ganVzdCByZW1vdmVzICopXG4gICAgICAgICAgbGV0IGxpc3QgPSBzdWJzX2FnZW50X2luX2V2ZW50IG1hcHBpbmcgbWFwcGluZycgZXZlbnQgOjogZXZlbnRfbGlzdCBpblxuICAgICAgICAgIG1heF9pZCwgdXNlZCwgbWFwcGluZycsIGxpc3QpXG4gICAgICAgICgwLCBBZ2VudElkU2V0LmVtcHR5LCBBZ2VudElkTWFwLmVtcHR5LCBbXSlcbiAgICAgICAgZXZlbnRfbGlzdFxuICAgIGluXG4gICAgTGlzdC5yZXYgZXZlbnRfbGlzdF9yZXZcblxuICB0eXBlIGFnZW50X2luZm8gPSB7XG4gICAgaW5pdGlhbF9zdGVwOiBUcmFjZS5zdGVwO1xuICAgIGludGVybmFsX3N0YXRlczogaW50ZXJuYWxfc3RhdGUgU2l0ZU1hcC50O1xuICAgIGJvdW5kX3NpdGVzOiBTaXRlU2V0LnQ7XG4gICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTogU2l0ZVNldC50O1xuICB9XG5cbiAgbGV0IGNvbnZlcnRfaW5pdCByZW1hbmVudCBzdGVwX2xpc3QgYWN0aW9uX2xpc3QgPVxuICAgIGxldCBleHRyYWN0X2FnZW50IGlkIHNvdXAgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBQSS5DcmVhdGUgKChpZCcsIF8pLCBfKVxuICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsICgoKGlkJywgXyksIF8pLCBfKVxuICAgICAgICAgIHwgUEkuRnJlZSAoKGlkJywgXyksIF8pXG4gICAgICAgICAgfCBQSS5CaW5kX3RvICgoKGlkJywgXyksIF8pLCBfKSAtPlxuICAgICAgICAgICAgaWQgPSBpZCdcbiAgICAgICAgICB8IFBJLkJpbmQgXyB8IFBJLlJlbW92ZSBfIC0+IGZhaWx3aXRoIFwiUHJvYmxlbWF0aWMgaW5pdGlhbCBldmVudFwiKVxuICAgICAgICBzb3VwXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCByZWN1ciBhY2Mgc291cCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgICggKGlmIHNvdXAgPD4gW10gdGhlblxuICAgICAgICAgICAgIFRyYWNlLkluaXQgc291cCA6OiBhY2NcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGFjYyksXG4gICAgICAgICAgcmVjdXIgKVxuICAgICAgfCBQSS5GcmVlIF8gOjogdCAtPiBhdXggcmVjdXIgYWNjIHNvdXAgdFxuICAgICAgfCAoUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gfCBQSS5CaW5kX3RvIF8gfCBQSS5Nb2RfaW50ZXJuYWwgXykgOjogdCAtPlxuICAgICAgICBhdXggcmVjdXIgYWNjIHNvdXAgdFxuICAgICAgfCBQSS5DcmVhdGUgKChpZCwgXyksIHNpdGVfbGlzdCkgOjogdCAtPlxuICAgICAgICBsZXQgdGhpcywgc291cCcgPSBleHRyYWN0X2FnZW50IGlkIHNvdXAgaW5cbiAgICAgICAgbGV0IHN0YW5kYWxvbmUgPVxuICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIF8gfCBQSS5GcmVlIF8gfCBQSS5Nb2RfaW50ZXJuYWwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgIHwgUEkuQmluZF90byBfIHwgUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB0aGlzXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0aGlzID0gVHJhY2UuSW5pdCB0aGlzIGluXG4gICAgICAgIGlmIHN0YW5kYWxvbmUgdGhlbiAoXG4gICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIG1hcCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgcywgU29tZSB1IC0+IFNpdGVNYXAuYWRkIHMgdSBtYXBcbiAgICAgICAgICAgICAgICB8IF8sIE5vbmUgLT4gbWFwKVxuICAgICAgICAgICAgICBTaXRlTWFwLmVtcHR5IHNpdGVfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFnZW50X2luZm8gPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbml0aWFsX3N0ZXAgPSB0aGlzO1xuICAgICAgICAgICAgICBpbnRlcm5hbF9zdGF0ZXMgPSBtYXA7XG4gICAgICAgICAgICAgIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5lbXB0eTtcbiAgICAgICAgICAgICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSA9IFNpdGVTZXQuZW1wdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKEFnZW50SWRNYXAuYWRkIGlkIGFnZW50X2luZm8gcmVjdXIpICh0aGlzIDo6IGFjYykgc291cCcgdFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBhdXggcmVjdXIgKHRoaXMgOjogYWNjKSBzb3VwJyB0XG4gICAgaW5cbiAgICBhdXggcmVtYW5lbnQgc3RlcF9saXN0IGFjdGlvbl9saXN0IGFjdGlvbl9saXN0XG5cbiAgbGV0IGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdlbnRfaW5mbyA9XG4gICAgbGV0IHJlc3RyaWN0aW9uID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFNpdGVTZXQuZW1wdHkgYWdpZCByZXN0cmljdGlvbl9tYXBcbiAgICBpblxuICAgIFNpdGVTZXQuaXNfZW1wdHkgKFNpdGVTZXQuaW50ZXIgYWdlbnRfaW5mby5ib3VuZF9zaXRlcyByZXN0cmljdGlvbilcbiAgICAmJiBTaXRlU2V0LmlzX2VtcHR5XG4gICAgICAgICAoU2l0ZVNldC5pbnRlciBhZ2VudF9pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgcmVzdHJpY3Rpb24pXG5cbiAgbGV0IG1vZF9zaXRlIHJlc3RyaWN0aW9uX21hcCBzaXRlIHN0YXRlIChyZW1hbmVudCwgc2V0KSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgKG1hdGNoIFNpdGVNYXAuZmluZF9vcHRpb24gc19uYW1lIGFnX2luZm8uaW50ZXJuYWxfc3RhdGVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZW1hbmVudCwgc2V0XG4gICAgICB8IFNvbWUgc3RhdGVfcmVmIC0+XG4gICAgICAgIGlmIHN0YXRlX3JlZiA9IHN0YXRlICgqIEJhY2sgdG8gdGhlIG9yaWdpbmFsIGludGVybmFsIHN0YXRlKikgdGhlblxuICAgICAgICAgIGlmIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgICAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgIFNpdGVTZXQucmVtb3ZlIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LmFkZCBhZ2lkIHNldFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2UgaWZcbiAgICAgICAgICAoKiBObyBsb25nZXIgdGhlIGRlZmF1bHQgc3RhdGUgKilcbiAgICAgICAgICBTaXRlU2V0Lm1lbSBzX25hbWUgYWdfaW5mby5zaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWdfaW5mbyB3aXRoXG4gICAgICAgICAgICAgIHNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgIFNpdGVTZXQuYWRkIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgICBpZiBhc19pbml0IHJlc3RyaWN0aW9uX21hcCBhZ2lkIGFnX2luZm8gdGhlblxuICAgICAgICAgICAgcmVtYW5lbnQsIHNldFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LnJlbW92ZSBhZ2lkIHNldFxuICAgICAgICApKVxuXG4gIGxldCB1bmJpbmRfc2lkZSByZXN0cmljdGlvbl9tYXAgKGFnaWQsIHNfbmFtZSkgKHJlbWFuZW50LCBzZXQpID1cbiAgICBtYXRjaCBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIGFnaWQgcmVtYW5lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1hbmVudCwgc2V0XG4gICAgfCBTb21lIGFnX2luZm8gLT5cbiAgICAgIGlmIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLmJvdW5kX3NpdGVzIHRoZW4gKFxuICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYWdfaW5mbyB3aXRoXG4gICAgICAgICAgICBib3VuZF9zaXRlcyA9IFNpdGVTZXQucmVtb3ZlIHNfbmFtZSBhZ19pbmZvLmJvdW5kX3NpdGVzO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5hZGQgYWdpZCBhZ19pbmZvIHJlbWFuZW50IGluXG4gICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQuYWRkIGFnaWQgc2V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICApIGVsc2VcbiAgICAgICAgcmVtYW5lbnQsIHNldFxuXG4gIGxldCB1bmJpbmQgcmVzdHJpY3Rpb25fbWFwIHNpdGUgcmVtID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgdW5iaW5kX3NpZGUgcmVzdHJpY3Rpb25fbWFwIChhZ2lkLCBzX25hbWUpIHJlbVxuXG4gIGxldCBiaW5kIHJlc3RyaWN0aW9uX21hcCBzaXRlIChyZW1hbmVudCwgc2V0KSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgdGhlblxuICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFnX2luZm8gPVxuICAgICAgICAgIHsgYWdfaW5mbyB3aXRoIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5hZGQgc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZW1hbmVudCwgQWdlbnRJZFNldC5yZW1vdmUgYWdpZCBzZXRcbiAgICAgIClcblxuICBsZXQgc3BsaXRfaW5pdCByZWZpbmVkX3N0ZXBfbGlzdCA9XG4gICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGZzdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIChzdGVwX2xpc3QsIHJlbWFuZW50KSByZWZpbmVkX3N0ZXAgLT5cbiAgICAgICAgICAgbWF0Y2ggcmVmaW5lZF9zdGVwIHdpdGhcbiAgICAgICAgICAgfCBUcmFjZS5Jbml0IGluaXQgLT4gY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBpbml0XG4gICAgICAgICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuUnVsZSBfXG4gICAgICAgICAgIHwgVHJhY2UuUGVydCBfIC0+XG4gICAgICAgICAgICAgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCwgcmVtYW5lbnQpXG4gICAgICAgICAoW10sIHJlbWFuZW50KVxuICAgICAgICAgKExpc3QucmV2IHJlZmluZWRfc3RlcF9saXN0KSlcblxuICBsZXQgYWRkX2luX3Njb3BlIHNpdGUgc2NvcGUgPVxuICAgIGxldCBhZ2lkID0gYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNfbmFtZSA9IHNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgb2xkX3NldCA9IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFNpdGVTZXQuZW1wdHkgYWdpZCBzY29wZSBpblxuICAgIGxldCBuZXdfc2V0ID0gU2l0ZVNldC5hZGQgc19uYW1lIG9sZF9zZXQgaW5cbiAgICBpZiBvbGRfc2V0ID09IG5ld19zZXQgdGhlblxuICAgICAgc2NvcGVcbiAgICBlbHNlXG4gICAgICBBZ2VudElkTWFwLmFkZCBhZ2lkIG5ld19zZXQgc2NvcGVcblxuICBsZXQgZGVhbF93aXRoX3Rlc3RzIHRlc3RzIHNjb3BlID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gc2NvcGUgeCAtPlxuICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgfCBQSS5Jc19IZXJlIF8gLT4gc2NvcGVcbiAgICAgICAgICAgfCBQSS5Jc19Cb3VuZCBzaXRlXG4gICAgICAgICAgIHwgUEkuSXNfRnJlZSBzaXRlXG4gICAgICAgICAgIHwgUEkuSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgXylcbiAgICAgICAgICAgfCBQSS5IYXNfSW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICAgYWRkX2luX3Njb3BlIHNpdGUgc2NvcGVcbiAgICAgICAgICAgfCBQSS5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgIGFkZF9pbl9zY29wZSBzaXRlMSAoYWRkX2luX3Njb3BlIHNpdGUyIHNjb3BlKSkpXG4gICAgICBzY29wZSB0ZXN0c1xuXG4gIGxldCBmaWxsX3NpcGhvbiByZWZpbmVkX3N0ZXBfbGlzdCA9XG4gICAgbGV0IHJldl90cmFjZSA9IExpc3QucmV2IHJlZmluZWRfc3RlcF9saXN0IGluXG4gICAgbGV0IHNjb3BlID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGxldCByZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0LCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgc2NvcGUpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgIG1hdGNoIHJlZmluZWRfc3RlcCB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IF8gLT4gKHJlZmluZWRfc3RlcCwgc2NvcGUpIDo6IHN0ZXBfbGlzdCwgc2NvcGVcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgKF8sIGV2ZW50LCBfKSB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBfKSAtPlxuICAgICAgICAgICAgbGV0IHNjb3BlJyA9IGRlYWxfd2l0aF90ZXN0cyBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzIHNjb3BlIGluXG4gICAgICAgICAgICAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZSdcbiAgICAgICAgICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+XG4gICAgICAgICAgICBsZXQgc2NvcGUnID0gZGVhbF93aXRoX3Rlc3RzIHRlc3RzIHNjb3BlIGluXG4gICAgICAgICAgICAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZSdcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoW10sIHNjb3BlKSByZXZfdHJhY2VcbiAgICBpblxuICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuZW1wdHkgaW5cbiAgICBsZXQgYSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChzdGVwX2xpc3QsIHJlbWFuZW50KSByZWZpbmVkX3N0ZXAgLT5cbiAgICAgICAgICBtYXRjaCByZWZpbmVkX3N0ZXAgd2l0aFxuICAgICAgICAgIHwgVHJhY2UuSW5pdCBpbml0LCBfIC0+IGNvbnZlcnRfaW5pdCByZW1hbmVudCBzdGVwX2xpc3QgaW5pdFxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoXywgZXZlbnQsIF8pLCBzY29wZSB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBfKSwgc2NvcGUgLT5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCwgc2V0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIHJlY3VyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IFBJLkNyZWF0ZSBfIC0+IHJlY3VyXG4gICAgICAgICAgICAgICAgICB8IFBJLk1vZF9pbnRlcm5hbCAoc2l0ZSwgc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1vZF9zaXRlIHNjb3BlIHNpdGUgc3RhdGUgcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuQmluZCAoc2l0ZTEsIHNpdGUyKSB8IFBJLkJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgICAgICAgICAgYmluZCBzY29wZSBzaXRlMSAoYmluZCBzY29wZSBzaXRlMiByZWN1cilcbiAgICAgICAgICAgICAgICAgIHwgUEkuRnJlZSBzaXRlIC0+IHVuYmluZCBzY29wZSBzaXRlIHJlY3VyXG4gICAgICAgICAgICAgICAgICB8IFBJLlJlbW92ZSBfIC0+IHJlY3VyKVxuICAgICAgICAgICAgICAgIChyZW1hbmVudCwgQWdlbnRJZFNldC5lbXB0eSlcbiAgICAgICAgICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmVtYW5lbnQsIHNldCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCAodW5iaW5kIHNjb3BlKVxuICAgICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCAocmVtYW5lbnQsIHNldClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIEFnZW50SWRTZXQuZm9sZFxuICAgICAgICAgICAgICAgIChmdW4gaWQgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBpZCByZW1hbmVudCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LmluaXRpYWxfc3RlcCA6OiBsaXN0XG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdClcbiAgICAgICAgICAgICAgICBzZXRcbiAgICAgICAgICAgICAgICAoZnN0IHJlZmluZWRfc3RlcCA6OiBzdGVwX2xpc3QpLFxuICAgICAgICAgICAgICByZW1hbmVudCApXG4gICAgICAgICAgfCBUcmFjZS5PYnMgXywgXyAtPiBmc3QgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCwgcmVtYW5lbnRcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXywgXyB8IFRyYWNlLkR1bW15IF8sIF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoW10sIHJlbWFuZW50KSByZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0XG4gICAgaW5cbiAgICBMaXN0LnJldiBhXG5cbiAgbGV0IGFnZW50X2lkX2luX29icyBfcGFyYW1ldGVyIF9oYW5kbGVyIGluZm8gZXJyb3IgPSBmdW5jdGlvblxuICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuUnVsZSBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuRHVtbXkgX1xuICAgICAgLT5cbiAgICAgIGVycm9yLCBpbmZvLCBBZ2VudElkU2V0LmVtcHR5XG4gICAgfCBUcmFjZS5PYnMgKF8sIHRlc3RzLCBfKSAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgaW5mbyxcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBsIHggLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBQSS5Jc19IZXJlIHggLT4gQWdlbnRJZFNldC5hZGQgKGFnZW50X2lkX29mX2FnZW50IHgpIGxcbiAgICAgICAgICAgICAgIHwgUEkuSXNfQm91bmQgXyB8IFBJLklzX0ZyZWUgXyB8IFBJLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICAgICAgfCBQSS5Jc19Cb3VuZF90byBfIHwgUEkuSGFzX0ludGVybmFsIF8gLT5cbiAgICAgICAgICAgICAgICAgbCkpXG4gICAgICAgICAgQWdlbnRJZFNldC5lbXB0eSB0ZXN0cyApXG5lbmRcbiIsIigqKlxuICAqIHBvX2N1dC5tbFxuICAqXG4gICogQ3V0IGNvbmN1cnJlbnQgZXZlbnRzOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMTYvMDQvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAwMi8wOC8yMDEzXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIFBvX2N1dCA9IHNpZ1xuICBtb2R1bGUgSyA6IEthcHBhX2luc3RhbnRpYXRpb24uQ2Zsb3dfc2lnbmF0dXJlXG5cbiAgdmFsIGN1dCA6IChUcmFjZS50LCBUcmFjZS50ICogaW50KSBLLkgudW5hcnlcblxuICB0eXBlIG9uX3RoZV9mbHlfc3RhdGVcblxuICB2YWwgaW5pdF9jdXQgOiBvbl90aGVfZmx5X3N0YXRlXG4gIHZhbCBjdXRfc3RlcCA6IG9uX3RoZV9mbHlfc3RhdGUgLT4gVHJhY2Uuc3RlcCAtPiBvbl90aGVfZmx5X3N0YXRlXG4gIHZhbCBmaW5hbGl6ZV9jdXQgOiBvbl90aGVfZmx5X3N0YXRlIC0+IFRyYWNlLnN0ZXAgbGlzdCAqIGludFxuXG4gIHZhbCBjdXRfcmV2X3RyYWNlIDpcbiAgICBUcmFjZS5zdGVwIGxpc3QgKCpyZXZlcnNlIG9yZGVyKikgLT5cbiAgICBUcmFjZS5zdGVwIGxpc3QgKCogY29ycmVjdCBvcmRlciAqKSAqIGludFxuZW5kXG5cbm1vZHVsZSBQb19jdXQgOiBQb19jdXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEsgPSBLYXBwYV9pbnN0YW50aWF0aW9uLkNmbG93X2xpbmtlclxuXG4gIHR5cGUgcHJlZGljYXRlX2luZm8gPVxuICAgIHwgSGVyZSBvZiBLLmFnZW50X2lkXG4gICAgfCBCb3VuZF9zaXRlIG9mIEsuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgSW50ZXJuYWxfc3RhdGUgb2YgSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG5cbiAgbW9kdWxlIFBTTSA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfaW5mb1xuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUFMgPSBQU00uU2V0XG5cbiAgbGV0IGNyZWF0ZWRfcHJlZGljYXRlc19vZl9hY3Rpb24gYWN0aW9uID1cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBpbnRlcmZhY2UpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBLLmFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKHNfaWQsIG9wdCkgLT5cbiAgICAgICAgICBsZXQgbGlzdCA9IEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0IGluXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgIHwgU29tZSBfIC0+IEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkgOjogbGlzdClcbiAgICAgICAgWyBIZXJlIGFnX2lkIF0gaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgX1xuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICBbXVxuXG4gIGxldCBwcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBsaXN0ID0gQm91bmRfc2l0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIF8gLT4gSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0KVxuICAgICAgICBbIEhlcmUgYWdfaWQgXSBpbnRlcmZhY2VcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgWyBJbnRlcm5hbF9zdGF0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIEsuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChzMSwgczIpIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSk7XG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMiwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMik7XG4gICAgICBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgWyBCb3VuZF9zaXRlIChLLmFnZW50X2lkX29mX3NpdGUgcywgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+IFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfdGVzdCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPiBbIEhlcmUgKEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgWyBJbnRlcm5hbF9zdGF0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIEsuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc1xuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzLCBfKSAtPlxuICAgICAgWyBCb3VuZF9zaXRlIChLLmFnZW50X2lkX29mX3NpdGUgcywgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSk7XG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMiwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMik7XG4gICAgICBdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIHNpZGVzID1cbiAgICBMaXN0Lm1hcCAoZnVuICgoYWdfaWQsIF8pLCBzX2lkKSAtPiBCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpIHNpZGVzXG5cbiAgdHlwZSBvbl90aGVfZmx5X3N0YXRlID0gUFMudCAqIFRyYWNlLnN0ZXAgbGlzdCAqIGludFxuXG4gIGxldCBpbml0X2N1dCA9IFBTLmVtcHR5LCBbXSwgMFxuICBsZXQgZmluYWxpemVfY3V0IChfYSwgYiwgYykgPSBiLCBjXG5cbiAgbGV0IGN1dF9zdGVwIChzZWVuLCBrZXB0LCBuX2N1dCkgZXZlbnQgPVxuICAgIGxldCByZWMga2VlcCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgfCB0MCA6OiBxMCAtPlxuICAgICAgICBsZXQgcmVjIGF1eDEgbCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBrZWVwIHEwXG4gICAgICAgICAgfCB0MSA6OiBxMSAtPlxuICAgICAgICAgICAgaWYgUFMubWVtIHQxIHNlZW4gdGhlblxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eDEgcTFcbiAgICAgICAgaW5cbiAgICAgICAgYXV4MSAocHJlZGljYXRlc19vZl9hY3Rpb24gdDApXG4gICAgaW5cbiAgICBsZXQgcmVjIGtlZXAyIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBpZiBQUy5tZW0gdCBzZWVuIHRoZW5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBrZWVwMiBxXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZXZlbnQgaW5cbiAgICBsZXQgc2VlbiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlZW4gYWN0aW9uIC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gc2VlbiBlbHQgLT4gUFMucmVtb3ZlIGVsdCBzZWVuKVxuICAgICAgICAgICAgc2VlblxuICAgICAgICAgICAgKGNyZWF0ZWRfcHJlZGljYXRlc19vZl9hY3Rpb24gYWN0aW9uKSlcbiAgICAgICAgc2VlbiBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjdGlvbnMsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZXZlbnQgaW5cbiAgICBpZlxuICAgICAgVHJhY2Uuc3RlcF9pc19vYnMgZXZlbnQgfHwga2VlcCBhY3Rpb25zXG4gICAgICB8fCBrZWVwMiAocHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgKFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIGV2ZW50KSlcbiAgICB0aGVuIChcbiAgICAgIGxldCBrZXB0ID0gZXZlbnQgOjoga2VwdCBpblxuICAgICAgbGV0IHRlc3RzID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBldmVudCBpblxuICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgIHByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIChUcmFjZS5zaWRlX2VmZmVjdHNfb2Zfc3RlcCBldmVudClcbiAgICAgIGluXG4gICAgICBsZXQgc2VlbiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBzZWVuIHRlc3QgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gc2VlbiBwcmVkaWNhdGVfaW5mbyAtPiBQUy5hZGQgcHJlZGljYXRlX2luZm8gc2VlbilcbiAgICAgICAgICAgICAgc2VlbiAocHJlZGljYXRlc19vZl90ZXN0IHRlc3QpKVxuICAgICAgICAgIHNlZW4gdGVzdHNcbiAgICAgIGluXG4gICAgICBsZXQgc2VlbiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBzZWVuIHByZWRpY2F0ZV9pbmZvIC0+IFBTLmFkZCBwcmVkaWNhdGVfaW5mbyBzZWVuKVxuICAgICAgICAgIHNlZW4gdGVzdHMnXG4gICAgICBpblxuICAgICAgc2Vlbiwga2VwdCwgbl9jdXRcbiAgICApIGVsc2VcbiAgICAgIHNlZW4sIGtlcHQsIG5fY3V0ICsgMVxuXG4gIGxldCBjdXRfcmV2X3RyYWNlIHJldl9ldmVudF9saXN0ID1cbiAgICBsZXQgXywgZXZlbnRfbGlzdCwgbiA9IExpc3QuZm9sZF9sZWZ0IGN1dF9zdGVwIGluaXRfY3V0IHJldl9ldmVudF9saXN0IGluXG4gICAgZXZlbnRfbGlzdCwgblxuXG4gIGxldCBjdXQgX3BhcmFtZXRlciBfaGFuZGxlciBpbmZvIGVycm9yIGV2ZW50X2xpc3QgPVxuICAgIGxldCB0cmFjZSA9IGN1dF9yZXZfdHJhY2UgKExpc3QucmV2IGV2ZW50X2xpc3QpIGluXG4gICAgZXJyb3IsIGluZm8sIHRyYWNlXG5lbmRcbiIsIigqKlxuICAgKiBwc2V1ZG9faW52ZXJzZS5tbFxuICAgKlxuICAgKiBDdXQgcHNldWRvIGludmVyc2UgZXZlbnRzOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBLYVNpbVxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgICpcbiAgICogQ3JlYXRpb246IDE3LzA0LzIwMTJcbiAgICogTGFzdCBtb2RpZmljYXRpb246IDIxLzExLzIwMTNcbiAgICogKlxuICAgKiBTb21lIHBhcmFtZXRlciByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsIDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEN1dF9wc2V1ZG9faW52ZXJzZSA9IHNpZ1xuICBtb2R1bGUgUG8gOiBQb19jdXQuUG9fY3V0XG4gIG1vZHVsZSBBIDogR2VuQXJyYXkuR2VuQXJyYXlcblxuICB2YWwgY3V0IDogKFRyYWNlLnQsIFRyYWNlLnQgKiBpbnQpIFBvLksuSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBQc2V1ZG9faW52IDogQ3V0X3BzZXVkb19pbnZlcnNlID0gc3RydWN0XG4gIG1vZHVsZSBQbyA9IFBvX2N1dC5Qb19jdXRcbiAgbW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG4gIG1vZHVsZSBDUHJlZGljYXRlTWFwID0gUHJlZGljYXRlX21hcHMuUVByZWRpY2F0ZU1hcFxuICBtb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlX21hcHMuUHJlZGljYXRlTWFwXG5cbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9IFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV9pbmZvXG4gIHR5cGUgc3RlcF9pZCA9IGludFxuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gPSBQcmVkaWNhdGVfbWFwcy5zdHJpbmdfb2ZfcHJlZGljYXRlX2luZm9cblxuICBsZXQgc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBwaSA9XG4gICAgbWF0Y2ggcGkgd2l0aFxuICAgIHwgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVfaXMgcyAtPiBzdHJpbmdfb2ZfaW50IHNcbiAgICB8IFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZCAtPiBcIiNVbmRlZlwiXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5QcmVzZW50IC0+IFwiI0hlcmVcIlxuICAgIHwgUHJlZGljYXRlX21hcHMuRnJlZSAtPiBcIiNGcmVlXCJcbiAgICB8IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZywgYWdlbnRfbmFtZSwgcykgLT5cbiAgICAgIFwiQm91bmRfdG8gXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50X25hbWUgXiBcIiBcIlxuICAgICAgXiBzdHJpbmdfb2ZfaW50IHNcblxuICB0eXBlIHBzZXVkb19pbnZfYmxhY2tib2FyZCA9IHtcbiAgICBzdGVwc19ieV9jb2x1bW46XG4gICAgICAoc3RlcF9pZCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3QgQ1ByZWRpY2F0ZU1hcC50O1xuICAgIG5zdGVwczogc3RlcF9pZDtcbiAgICBwcmVkaWNhdGVzX29mX2V2ZW50OiBwcmVkaWNhdGVfaW5mbyBsaXN0IEEudDtcbiAgICBpc19yZW1vdmVfYWN0aW9uOiBib29sIEEudDtcbiAgICBtb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50OiBpbnQgQS50O1xuICAgIGhhc19tb2Rfd2l0aG91dF90ZXN0OiBib29sIEEudDtcbiAgICBldmVudDogVHJhY2Uuc3RlcCBvcHRpb24gQS50O1xuICAgIGFnZW50X2xpc3Q6IGludCBsaXN0O1xuICB9XG5cbiAgbGV0IGluaXRfYmxhY2tib2FyZCBuX3N0ZXBzIGhhbmRsZXIgPVxuICAgIHtcbiAgICAgIHN0ZXBzX2J5X2NvbHVtbiA9IFBvLksuSC5nZXRfcHJlZGljYXRlX21hcCBoYW5kbGVyO1xuICAgICAgbnN0ZXBzID0gLTE7XG4gICAgICBwcmVkaWNhdGVzX29mX2V2ZW50ID0gQS5tYWtlIG5fc3RlcHMgW107XG4gICAgICBpc19yZW1vdmVfYWN0aW9uID0gQS5tYWtlIG5fc3RlcHMgZmFsc2U7XG4gICAgICBoYXNfbW9kX3dpdGhvdXRfdGVzdCA9IEEubWFrZSBuX3N0ZXBzIGZhbHNlO1xuICAgICAgbW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCA9IEEuY3JlYXRlIG5fc3RlcHMgMDtcbiAgICAgIGV2ZW50ID0gQS5tYWtlIG5fc3RlcHMgTm9uZTtcbiAgICAgIGFnZW50X2xpc3QgPSBbXTtcbiAgICB9XG5cbiAgbGV0IF9wcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIkJsYWNrYm9hcmQgZm9yIHJlbW92aW5nIHBzZXVkbyBpbnZlcnNlIGVsZW1lbnRcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJuX2V2ZW50czogJWlcIiBibGFja2JvYXJkLm5zdGVwc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJTdGVwc19ieV9jb2x1bW46XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBDUHJlZGljYXRlTWFwLml0ZXJcbiAgICAgICAgKGZ1biBwcmVkIGxpc3QgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIlczogXCJcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyBwcmVkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVpZCwgdmFsdWUsIGJvb2wpIC0+XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiglaSwlcyVzKSxcIiBlaWRcbiAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgKGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgXCIoTW9kKVwiXG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgXCJcIikpXG4gICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKVxuICAgICAgICBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCJFdmVudHM6XCJcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID0gYmxhY2tib2FyZC5uc3RlcHMgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBldmVudCA9XG4gICAgICAgICAgdHJ5IEEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQga1xuICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJFUlJFVVIgJWkgMTIzXCIga1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmFpc2UgRXhpdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvclxuICAgICAgICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiRXZlbnQgJWklYVwiIGtcbiAgICAgICAgICAgICAgICAgICAoVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDpmYWxzZSB+ZW52OmhhbmRsZXIuUG8uSy5ILmVudilcbiAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiUHJlZGljYXRlczogXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbGlzdCA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlc19vZl9ldmVudCBrIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgICAoZnVuIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgXCIlcyxcIlxuICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHBpZCkpXG4gICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGJvb2wgPSBBLmdldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gayBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgXCJjb250YWluIGEgZGVsZXRpb25cIlxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgaW50ID0gQS5nZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IGsgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICBcIiVpIG1vZGlmaWVkIHByZWRpY2F0ZXNcIiBpbnRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGVycm9yKVxuICAgICAgICBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yID0gYXV4IDAgaW5cbiAgICBlcnJvclxuXG4gIGxldCBwcmVkaWNhdGVzX29mX2FjdGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIGxldCBsaXN0MSwgbGlzdDIgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGxpc3QxLCBsaXN0MikgKHNfaWQsIG9wdCkgLT5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc19pZCkgaW5cbiAgICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgICBsZXQgbGlzdDIgPSBwcmVkaWNhdGVfaWQgOjogbGlzdDIgaW5cbiAgICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbGlzdDEsIGxpc3QyXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSBpblxuICAgICAgICAgICAgICAoIChwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBsaXN0MiApKVxuICAgICAgICAgIChbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuUHJlc2VudCBdLCBbIHByZWRpY2F0ZV9pZCBdKVxuICAgICAgICAgIGludGVyZmFjZVxuICAgICAgaW5cbiAgICAgICggeyBibGFja2JvYXJkIHdpdGggYWdlbnRfbGlzdCA9IGFnX2lkIDo6IGJsYWNrYm9hcmQuYWdlbnRfbGlzdCB9LFxuICAgICAgICBsaXN0MSxcbiAgICAgICAgbGlzdDIsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlIClcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBpbnQpIC0+XG4gICAgICBsZXQgcHJlZGljYXRlX2lkID1cbiAgICAgICAgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAoUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSlcbiAgICAgIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSxcbiAgICAgICAgW10sXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IFBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMSA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBQcmVkaWNhdGVfbWFwcy5Cb3VuZF90byAoYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICBdLFxuICAgICAgICBbXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IFBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMSA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMiA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBQcmVkaWNhdGVfbWFwcy5Cb3VuZF90byAoYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDIsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDEsIGFnZW50X25hbWUxLCBzaXRlX2lkMSk7XG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkZyZWUgXSwgW10sIGZhbHNlLCBmYWxzZVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5IZXJlIGFnX2lkIGluXG4gICAgICBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuVW5kZWZpbmVkIF0sIFtdLCB0cnVlLCBmYWxzZVxuXG4gIGxldCBub19yZW1vdmUgX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgYmxhY2tib2FyZCBlaWQgPVxuICAgIG5vdCAoQS5nZXQgYmxhY2tib2FyZC5pc19yZW1vdmVfYWN0aW9uIGVpZClcblxuICBsZXQgc2FtZV9sZW5ndGggX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgYmxhY2tib2FyZCBlaWQxIGVpZDIgPVxuICAgIEEuZ2V0IGJsYWNrYm9hcmQuaGFzX21vZF93aXRob3V0X3Rlc3QgZWlkMVxuICAgIHx8IEEuZ2V0IGJsYWNrYm9hcmQuaGFzX21vZF93aXRob3V0X3Rlc3QgZWlkMlxuICAgIHx8IEEuZ2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBlaWQxXG4gICAgICAgPSBBLmdldCBibGFja2JvYXJkLm1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkMlxuXG4gIGxldCBjbGVhbiB0IGNvbHVtbiBibGFja2JvYXJkID1cbiAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgIHwgW10gLT4gY29sdW1uLCBibGFja2JvYXJkXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIGxldCByZWMgYXV4IGxpc3QgYm9vbCA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IChlaWQsIF8sIGZhbHNlKSA6OiBxIC0+XG4gICAgICAgICAgaWYgZWlkID0gLTEgdGhlblxuICAgICAgICAgICAgbGlzdCwgYm9vbFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGF1eCBxIHRydWVcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0LCBib29sXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gLT4gbGlzdCwgYm9vbFxuICAgICAgaW5cbiAgICAgIGxldCBsaXN0LCBib29sID0gYXV4IHRhaWwgZmFsc2UgaW5cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBjb2x1bW4gPSBoZWFkIDo6IGxpc3QgaW5cbiAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgdCBjb2x1bW4gYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBjb2x1bW4sIGJsYWNrYm9hcmRcbiAgICAgICkgZWxzZVxuICAgICAgICBjb2x1bW4sIGJsYWNrYm9hcmRcblxuICBsZXQgY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVpZCA9IGJsYWNrYm9hcmQubnN0ZXBzIGluXG4gICAgbGV0IHByZWRpY2F0ZV9saXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZCBpblxuICAgIGxldCByZWMgc2NhbiBwcmVkaWNhdGVfbGlzdCA9XG4gICAgICBtYXRjaCBwcmVkaWNhdGVfbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBOb25lLCBibGFja2JvYXJkLCBbXVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0IGNvbHVtbiA9XG4gICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gdCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgICAgICBpblxuICAgICAgICBsZXQgY29sdW1uLCBibGFja2JvYXJkID0gY2xlYW4gdCBjb2x1bW4gYmxhY2tib2FyZCBpblxuICAgICAgICAobWF0Y2ggY29sdW1uIHdpdGhcbiAgICAgICAgfCAoXywgXywgZmFsc2UpIDo6IF8gLT4gc2NhbiBxICgqIG5vIG1vZGlmIG9uIGEgKilcbiAgICAgICAgfCAoXywgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiB4ID0geSAtPlxuICAgICAgICAgIHNjYW4gcSAoKiBtdXRlIG1vZGlmIG9uIGEgKilcbiAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKGIsIF8sIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIC0+XG4gICAgICAgICAgaWYgYSA9IGVpZCAmJiB4ID0geSB0aGVuXG4gICAgICAgICAgICBlcnJvciwgU29tZSAoYSwgYiksIGJsYWNrYm9hcmQsIHEgKCogYSBjYW5jZWxzIGIgbW9kaWYgKilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgTm9uZSwgYmxhY2tib2FyZCwgcVxuICAgICAgICB8IF8gLT4gZXJyb3IsIE5vbmUsIGJsYWNrYm9hcmQsIHEpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGNhbmRpZGF0ZXMsIGJsYWNrYm9hcmQsIHEgPSBzY2FuIHByZWRpY2F0ZV9saXN0IGluXG4gICAgbWF0Y2ggY2FuZGlkYXRlcyB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yLCBOb25lXG4gICAgfCBTb21lIChlaWRhLCBlaWRiKSAtPlxuICAgICAgaWZcbiAgICAgICAgbm9fcmVtb3ZlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkYlxuICAgICAgICAmJiBzYW1lX2xlbmd0aCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGVpZGEgZWlkYlxuICAgICAgICAmJiBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAoZnVuIHBpZCAtPlxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9XG4gICAgICAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IFtdIHBpZCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBjb2x1bW4sIF9ibGFja2JvYXJkID0gY2xlYW4gcGlkIGNvbHVtbiBibGFja2JvYXJkIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICAgICAgICAgfCAoXywgXywgZmFsc2UpIDo6IF8gLT4gdHJ1ZSAoKiBubyBtb2RpZiBvbiBhICopXG4gICAgICAgICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF9cbiAgICAgICAgICAgICAgICAgd2hlbiBiID0gZWlkYiAmJiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBpZiB5ZXMsIGEgY2FuY2VscyBiIG1vZGlmKilcbiAgICAgICAgICAgICAgIHwgKGEsIHgsIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIHdoZW4gYSA9IGVpZGEgLT5cbiAgICAgICAgICAgICAgICAgeCA9IHkgKCogaXMgYSBtb2RpZiBpcyBtdXRlID8gKilcbiAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICBxXG4gICAgICAgICYmIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiwgX2JsYWNrYm9hcmQgPSBjbGVhbiBwaWQgY29sdW1uIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfYXV4IGNvbHVtbiA9XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICAgIHwgKGIsIHgsIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIHdoZW4gYiA9IGVpZGIgLT5cbiAgICAgICAgICAgICAgICAgICB4ID0geSAoKiBpcyBiIG1vZGlmIGlzIG11dGUgPyAqKVxuICAgICAgICAgICAgICAgICB8IChiLCBfLCBib29sKSA6OiBfIHdoZW4gYiA9IGVpZGIgLT5cbiAgICAgICAgICAgICAgICAgICBub3QgYm9vbCAoKiBpZiB5ZXMsIGIgZG9lcyBub3QgZG8gbW9kaWYgKilcbiAgICAgICAgICAgICAgICAgfCAoXywgXywgXykgOjogdGFpbCAtPiBjaGVja19hdXggdGFpbFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKGIsIF8sIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfXG4gICAgICAgICAgICAgICAgIHdoZW4gYiA9IGVpZGIgJiYgYSA9IGVpZGEgLT5cbiAgICAgICAgICAgICAgICAgeCA9IHkgKCogYSBjYW5jZWxzIGIgbW9kaWYqKVxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGNoZWNrX2F1eCBjb2x1bW4gKCogb3RoZXJ3aXNlIGNoZWNrIHRoYXQgYiBoYXMgbm8gZWZmZWN0ICAqKSlcbiAgICAgICAgICAgICAoQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZGIpXG4gICAgICB0aGVuXG4gICAgICAgIGVycm9yLCBTb21lIChlaWRhLCBlaWRiKVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgTm9uZVxuXG4gIGxldCBwb3AgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgbGV0IHByZWRpY2F0ZV9saXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZCBpblxuICAgIGxldCByZWMgYXV4IGwgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGJsYWNrYm9hcmRcbiAgICAgIHwgcGlkIDo6IHRhaWwgLT5cbiAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgIG1hdGNoIENQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgIHwgKGEsIF8sIF8pIDo6IHEgd2hlbiBhID0gZWlkIC0+IHFcbiAgICAgICAgICB8IF8gLT4gbGlzdFxuICAgICAgICBpblxuICAgICAgICBhdXggdGFpbCBlcnJvclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgcGlkIGxpc3QgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBibGFja2JvYXJkID0gYXV4IHByZWRpY2F0ZV9saXN0IGVycm9yIGJsYWNrYm9hcmQgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkIE5vbmUgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBwcmVkaWNhdGVzX29mX3Rlc3QgX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgX2JsYWNrYm9hcmQgdGVzdCA9XG4gICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5IZXJlIGFnX2lkIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgX2ludCkgLT5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgIChQby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBzIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQyID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkMTsgcHJlZGljYXRlX2lkMiBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzLCBfKSAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG5cbiAgbGV0IGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkID1cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5ldmVudCBpblxuICAgIGxldCB0ZXN0X2xpc3QgPSBUcmFjZS50ZXN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9IFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZV9tYXBzLlByZWRpY2F0ZU1hcC5hZGQgaWQgdmFsdWUgbWFwKVxuICAgICAgICBtYXAgbGlzdFxuICAgIGluXG4gICAgbGV0IGJ1aWxkX21hcF90ZXN0IGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbWFwIGlkIC0+IFByZWRpY2F0ZU1hcC5hZGQgaWQgdHJ1ZSBtYXApIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID0gUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCAoZmFsc2UsIE5vbmUpIHBpZCBtYXAgaW5cbiAgICAgIGxldCB0ZXN0ID0gdGVzdCB8fCB0ZXN0JyBpblxuICAgICAgbGV0IGFjdGlvbiA9XG4gICAgICAgIG1hdGNoIGFjdGlvbicgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICAgIHwgXyAtPiBhY3Rpb24nXG4gICAgICBpblxuICAgICAgbGV0IG1hcCA9IFByZWRpY2F0ZU1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzID0gc2lkZV9lZmZlY3QgaW5cbiAgICBsZXQgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgdGVzdCAtPlxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgYnVpbGRfbWFwX3Rlc3QgdGVzdF9saXN0IG1hcClcbiAgICAgICAgUHJlZGljYXRlTWFwLmVtcHR5IHRlc3RfbGlzdFxuICAgIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBhY3Rpb25fbWFwLFxuICAgICAgICAgIHRlc3RfbWFwLFxuICAgICAgICAgIGlzX3JlbW92ZV9hY3Rpb24sXG4gICAgICAgICAgX2lzX2NyZWF0ZV9hY3Rpb24gKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAsIGJvb2wsIGJvb2xfY3JlYXRpb24pXG4gICAgICAgICAgICAgYWN0aW9uIC0+XG4gICAgICAgICAgbGV0IGJsYWNrYm9hcmQsIGFjdGlvbl9saXN0LCB0ZXN0X2xpc3QsIGJvb2wnLCBib29sX2NyZWF0aW9uJyA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcF90ZXN0IHRlc3RfbGlzdCB0ZXN0X21hcCxcbiAgICAgICAgICAgIGJvb2wgfHwgYm9vbCcsXG4gICAgICAgICAgICBib29sX2NyZWF0aW9uIHx8IGJvb2xfY3JlYXRpb24nICkpXG4gICAgICAgIChlcnJvciwgYmxhY2tib2FyZCwgUHJlZGljYXRlTWFwLmVtcHR5LCB0ZXN0X21hcCwgZmFsc2UsIGZhbHNlKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZU1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgZSwgUHJlZGljYXRlTWFwLmFkZCBrZXkgKHRlc3QsIFNvbWUgYWN0aW9uKSBhY2MpXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPiBlLCBQcmVkaWNhdGVNYXAuYWRkIGtleSAodGVzdCwgTm9uZSkgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZU1hcC5hZGQga2V5IChmYWxzZSwgU29tZSBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVNYXAuZW1wdHlcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAoZnVuICgoYSwgXyksIGIpIG1hcCAtPlxuICAgICAgICAgIGxldCBwaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhLCBiKSBpblxuICAgICAgICAgIGFkZF9zdGF0ZSBwaWQgKGZhbHNlLCBTb21lIFByZWRpY2F0ZV9tYXBzLkZyZWUpIG1hcClcbiAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIG1lcmdlZF9tYXBcbiAgICBpblxuICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5uc3RlcHMgKyAxIGluXG4gICAgbGV0IF8gPSBBLnNldCBibGFja2JvYXJkLmV2ZW50IG5zaWQgKFNvbWUgc3RlcCkgaW5cbiAgICBsZXQgbl9tb2RpZmljYXRpb25zLCBwcmVfc3RlcHNfYnlfY29sdW1uLCBsaXN0LCBtb2Rfd2l0aG91dF90ZXN0ID1cbiAgICAgIFByZWRpY2F0ZU1hcC5mb2xkXG4gICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgKG5fbW9kaWZpY2F0aW9ucywgbWFwLCBsaXN0LCBtb2Rfd2l0aG91dF90ZXN0KSAtPlxuICAgICAgICAgIGxldCBvbGRfbGlzdCA9XG4gICAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICBbIC0xLCBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWQsIGZhbHNlIF1cbiAgICAgICAgICAgICAgaWQgbWFwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2xkX3ZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIG9sZF9saXN0IHdpdGhcbiAgICAgICAgICAgIHwgKF8sIHYsIF8pIDo6IF8gLT4gdlxuICAgICAgICAgICAgfCBbXSAtPiBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuX21vZGlmaWNhdGlvbnMsIGJvb2xfYWN0aW9uLCBtb2Rfd2l0aG91dF90ZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbl9tb2RpZmljYXRpb25zLCBmYWxzZSwgbW9kX3dpdGhvdXRfdGVzdFxuICAgICAgICAgICAgfCBTb21lIF8gLT4gbl9tb2RpZmljYXRpb25zICsgMSwgdHJ1ZSwgbW9kX3dpdGhvdXRfdGVzdCB8fCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIG5fbW9kaWZpY2F0aW9ucyxcbiAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuYWRkIGlkXG4gICAgICAgICAgICAgICgobnNpZCwgbmV3X3ZhbHVlLCBib29sX2FjdGlvbikgOjogb2xkX2xpc3QpXG4gICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgIChpZCwgbmV3X3ZhbHVlKSA6OiBsaXN0LFxuICAgICAgICAgICAgbW9kX3dpdGhvdXRfdGVzdCApKVxuICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICgwLCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbiwgW10sIGZhbHNlKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgaXNfcmVtb3ZlX2FjdGlvbiB0aGVuIChcbiAgICAgICAgbGV0IF8gPSBBLnNldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gbnNpZCB0cnVlIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IG5zaWRcbiAgICAgICAgKExpc3QucmV2X21hcCBmc3QgKExpc3QucmV2IGxpc3QpKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBuc2lkIG5fbW9kaWZpY2F0aW9uc1xuICAgIGluXG4gICAgbGV0ICgpID0gQS5zZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBuc2lkIG1vZF93aXRob3V0X3Rlc3QgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICB7XG4gICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICBldmVudCA9IHByZV9ldmVudDtcbiAgICAgICAgc3RlcHNfYnlfY29sdW1uID0gcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgbnN0ZXBzID0gbnNpZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGVycm9yLCBpbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGN1dCBwYXJhbWV0ZXIgaGFuZGxlciBpbmZvIGVycm9yIGxpc3QgPVxuICAgIGxldCBuX3N0ZXBzID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBibGFja2JvYXJkID0gaW5pdF9ibGFja2JvYXJkIG5fc3RlcHMgaGFuZGxlciBpblxuICAgIGxldCBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIG5fY3V0KSBzdGVwIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBpbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHRvX3BvcCA9IGNoZWNrIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICBtYXRjaCB0b19wb3Agd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXRcbiAgICAgICAgICB8IFNvbWUgKGUxLCBlMikgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9IHBvcCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGUxIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPSBwb3AgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBlMiBpblxuICAgICAgICAgICAgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIG5fY3V0ICsgMilcbiAgICAgICAgKGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCAwKVxuICAgICAgICBsaXN0XG4gICAgaW5cbiAgICBsZXQgbGlzdCA9XG4gICAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgICBpZiBrID0gLTEgdGhlblxuICAgICAgICAgIGxpc3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5ldmVudCBrIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhdXggKGsgLSAxKSAoYSA6OiBsaXN0KVxuICAgICAgICAgIHwgTm9uZSAtPiBhdXggKGsgLSAxKSBsaXN0XG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggYmxhY2tib2FyZC5uc3RlcHMgW11cbiAgICBpblxuICAgIGxldCB0YWIgPSBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbiBpblxuICAgIGxldCBfID0gTGlzdC5pdGVyIChDUHJlZGljYXRlTWFwLnJlY3ljbGUgdGFiKSBibGFja2JvYXJkLmFnZW50X2xpc3QgaW5cbiAgICBlcnJvciwgaW5mbywgKGxpc3QsIG5fY3V0KVxuXG4gICgqICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3IgbGlzdCA9IGVycm9yLCBpbmZvLCAobGlzdCwwKSopXG5lbmRcbiIsIigqKlxuICAqIGNmbG93X2hhbmRsZXIubWxcbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjkvMDgvMjAxMVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyOS8wMS8yMDE2XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBQcmVCbGFja2JvYXJkID0gc2lnXG4gIG1vZHVsZSBBIDogR2VuQXJyYXkuR2VuQXJyYXlcbiAgbW9kdWxlIENJIDogUHNldWRvX2ludmVyc2UuQ3V0X3BzZXVkb19pbnZlcnNlXG5cbiAgdHlwZSBzdGVwX2lkXG5cbiAgdmFsIHplcm9fc3RlcF9pZCA6IHN0ZXBfaWRcbiAgdmFsIGR1bW15X3N0ZXBfaWQgOiBzdGVwX2lkXG4gIHZhbCBpbnRfb2Zfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gaW50XG4gIHZhbCBzdGVwX2lkX29mX2ludCA6IGludCAtPiBzdGVwX2lkXG4gIHZhbCBkZWNfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gc3RlcF9pZFxuICB2YWwgaW5jX3N0ZXBfaWQgOiBzdGVwX2lkIC0+IHN0ZXBfaWRcblxuICB0eXBlIHN0ZXBfc2hvcnRfaWRcblxuICB2YWwgemVyb19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZFxuICB2YWwgZHVtbXlfc3RlcF9zaG9ydF9pZCA6IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGludF9vZl9zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBpbnRcbiAgdmFsIHN0ZXBfc2hvcnRfaWRfb2ZfaW50IDogaW50IC0+IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGluY19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBzdGVwX3Nob3J0X2lkXG4gIHZhbCBkZWNfc3RlcF9zaG9ydF9pZCA6IHN0ZXBfc2hvcnRfaWQgLT4gc3RlcF9zaG9ydF9pZFxuXG4gICgqKiBibGFja2JvYXJkIHByZWRpY2F0ZXMqKVxuXG4gIHR5cGUgcHJlZGljYXRlX2lkID0gaW50XG4gIHR5cGUgcHJlZGljYXRlX2luZm9cbiAgdHlwZSBwcmVkaWNhdGVfdmFsdWVcblxuICBtb2R1bGUgQyA6IENhY2hlLkNhY2hlIHdpdGggdHlwZSBPLnQgPSBwcmVkaWNhdGVfdmFsdWVcblxuICB0eXBlIHByZV9ibGFja2JvYXJkICgqYmxhY2tib2FyZCBkdXJpbmcgaXRzIGNvbnN0cnVjdGlvbiopXG5cbiAgdmFsIHdlYWtlbmluZyA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgbGlzdFxuXG4gIHZhbCBjb25qIDpcbiAgICAocHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkaXNqdW5jdGlvbiA6XG4gICAgKHByZWRpY2F0ZV92YWx1ZSwgcHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUpIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgZGVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZVxuICB2YWwgdW5kZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCB1bmtub3duIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCBpc191bmtub3duIDogcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIGlzX3VuZGVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBib29sXG4gIHZhbCBtb3JlX3JlZmluZWQgOiBwcmVkaWNhdGVfdmFsdWUgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIGNvbXBhdGlibGUgOiBwcmVkaWNhdGVfdmFsdWUgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIHN0cmljdGx5X21vcmVfcmVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiA6IHByZV9ibGFja2JvYXJkIC0+IHByZWRpY2F0ZV9pbmZvIEEudFxuXG4gICgqKiBnZW5lcmF0aW9uKilcblxuICB2YWwgaW5pdCA6IHByZV9ibGFja2JvYXJkIENJLlBvLksuSC56ZXJvYXJ5XG5cbiAgdmFsIGFkZF9zdGVwIDpcbiAgICAoIFRyYWNlLnN0ZXAsXG4gICAgICBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHN0ZXBfaWQsXG4gICAgICBwcmVfYmxhY2tib2FyZCAqIHN0ZXBfaWQgKVxuICAgIENJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGFkZF9zdGVwX3VwX3RvX2lzbyA6XG4gICAgKCBUcmFjZS5zdGVwLFxuICAgICAgcHJlX2JsYWNrYm9hcmQsXG4gICAgICBzdGVwX2lkLFxuICAgICAgcHJlX2JsYWNrYm9hcmQgKiBzdGVwX2lkIClcbiAgICBDSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCBmaW5hbGl6ZSA6XG4gICAgUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb24gLT5cbiAgICAocHJlX2JsYWNrYm9hcmQsIHByZV9ibGFja2JvYXJkKSBDSS5Qby5LLkgudW5hcnlcblxuICAoKipwcmV0dHkgcHJpbnRpbmcqKVxuXG4gIHZhbCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIDogcHJlZGljYXRlX3ZhbHVlIC0+IHN0cmluZ1xuICB2YWwgcHJpbnRfcHJlZGljYXRlX3ZhbHVlIDogTG9nZ2Vycy50IC0+IHByZWRpY2F0ZV92YWx1ZSAtPiB1bml0XG4gIHZhbCBwcmludF9wcmVibGFja2JvYXJkIDogKHByZV9ibGFja2JvYXJkLCB1bml0KSBDSS5Qby5LLkgudW5hcnlcblxuICAoKippbnRlcmZhY2UqKVxuXG4gIHZhbCBuX2V2ZW50cyA6IChwcmVfYmxhY2tib2FyZCwgaW50KSBDSS5Qby5LLkgudW5hcnlcbiAgdmFsIG5fcHJlZGljYXRlcyA6IChwcmVfYmxhY2tib2FyZCwgaW50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgbl9ldmVudHNfcGVyX3ByZWRpY2F0ZSA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBpbnQsIHByZWRpY2F0ZV9pZCkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBldmVudF9saXN0X29mX3ByZWRpY2F0ZSA6XG4gICAgKCBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHByZWRpY2F0ZV9pZCxcbiAgICAgIChzdGVwX2lkICogaW50ICogcHJlZGljYXRlX3ZhbHVlICogcHJlZGljYXRlX3ZhbHVlKSBsaXN0IClcbiAgICBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIG1hbmRhdG9yeV9ldmVudHMgOlxuICAgICggcHJlX2JsYWNrYm9hcmQsXG4gICAgICAoc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3QgKVxuICAgIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBnZXRfcHJlX2V2ZW50IDogKHByZV9ibGFja2JvYXJkLCBUcmFjZS5zdGVwIEEudCkgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9zaWRlX2VmZmVjdCA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBDSS5Qby5LLnNpZGVfZWZmZWN0IEEudCkgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9maWN0aXRpb3VzX29ic2VydmFibGUgOlxuICAgIChwcmVfYmxhY2tib2FyZCwgc3RlcF9pZCBvcHRpb24pIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBnZXRfbGV2ZWxfb2ZfZXZlbnQgOlxuICAgIChwcmVfYmxhY2tib2FyZCwgc3RlcF9pZCwgUHJpb3JpdHkubGV2ZWwpIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgbGV2ZWxzIDogcHJlX2JsYWNrYm9hcmQgLT4gUHJpb3JpdHkubGV2ZWwgQS50XG4gIHZhbCBwcmludF9wcmVkaWNhdGVfaW5mbyA6IExvZ2dlcnMudCAtPiBwcmVkaWNhdGVfaW5mbyAtPiB1bml0XG5lbmRcblxubW9kdWxlIFByZWJsYWNrYm9hcmQgOiBQcmVCbGFja2JvYXJkID0gc3RydWN0XG4gICgqKiBVc2VmdWwgbW9kdWxlcyAqKVxuXG4gIG1vZHVsZSBBID0gTW9kcy5EeW5BcnJheVxuICBtb2R1bGUgQ0kgPSBQc2V1ZG9faW52ZXJzZS5Qc2V1ZG9faW52XG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgbGV0IGVycm9yLCB4ID1cbiAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB4XG5cbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4KilcblxuICB0eXBlIHN0ZXBfaWQgPSBpbnRcbiAgKCoqIGdsb2JhbCBpZCBvZiBhbiBldmVudCAqKVxuXG4gIGxldCB6ZXJvX3N0ZXBfaWQgPSAwXG4gIGxldCBkdW1teV9zdGVwX2lkID0gLTFcbiAgbGV0IGludF9vZl9zdGVwX2lkIGkgPSBpXG4gIGxldCBzdGVwX2lkX29mX2ludCBpID0gaVxuICBsZXQgZGVjX3N0ZXBfaWQgaSA9IGkgLSAxXG4gIGxldCBpbmNfc3RlcF9pZCBpID0gaSArIDFcblxuICB0eXBlIHN0ZXBfc2hvcnRfaWQgPSBpbnRcbiAgKCoqIHBvc2l0aW9uIG9mIGFuIGV2ZW50IG9uIGEgd2lyZSAqKVxuXG4gIGxldCB6ZXJvX3N0ZXBfc2hvcnRfaWQgPSAwXG4gIGxldCBkdW1teV9zdGVwX3Nob3J0X2lkID0gLTFcbiAgbGV0IGludF9vZl9zdGVwX3Nob3J0X2lkIGkgPSBpXG4gIGxldCBzdGVwX3Nob3J0X2lkX29mX2ludCBpID0gaVxuICBsZXQgaW5jX3N0ZXBfc2hvcnRfaWQgaSA9IGkgKyAxXG4gIGxldCBkZWNfc3RlcF9zaG9ydF9pZCBpID0gaSAtIDFcblxuICAoKiogYmxhY2tib2FyZCBwcmVkaWNhdGVzKilcblxuICAoKioga2luZCBvZiBldmVudHMqKVxuICB0eXBlIHJ1bGVfdHlwZSA9XG4gICAgfCBTdWJzXG4gICAgfCBEdW1teVxuICAgIHwgSW5pdFxuICAgIHwgT2JzZXJ2YWJsZVxuICAgIHwgUnVsZVxuICAgIHwgU2lkZV9lZmZlY3Rfb2Ygb2ZcbiAgICAgICAgKHN0ZXBfaWQgKiAoQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lKSBsaXN0KVxuXG4gIHR5cGUgcHJlZGljYXRlX2lkID0gaW50XG4gICgqKiB3aXJlIGlkZW50aWZpZXJzICopXG5cbiAgdHlwZSBtdXRleCA9XG4gICAgfCBMb2NrX3NpZGVfZWZmZWN0IG9mXG4gICAgICAgIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkICogQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBMb2NrX2FnZW50IG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBMb2NrX3JlY3Rhbmd1bGFyIG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBMb2NrX2xpbmtzIG9mIHN0ZXBfaWQgKiAoQ0kuUG8uSy5hZ2VudF9pZCAqIENJLlBvLksuYWdlbnRfaWQpXG5cbiAgKCoqIHdpcmUgbGFiZWxzICopXG4gIHR5cGUgcHJlZGljYXRlX2luZm8gPVxuICAgIHwgRmljdGl0aW91cyAoKnRvIGhhbmRsZSB3aXRoIGFtYmlndW91cyBzaXRlIGVmZmVjdHMgKilcbiAgICB8IEhlcmUgb2YgQ0kuUG8uSy5hZ2VudF9pZFxuICAgIHwgQm91bmRfc2l0ZSBvZiBDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICB8IEludGVybmFsX3N0YXRlIG9mIENJLlBvLksuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgUG9pbnRlciBvZiBzdGVwX2lkICogQ0kuUG8uSy5hZ2VudF9pZFxuICAgIHwgTXV0ZXggb2YgbXV0ZXhcbiAgICB8IExpbmsgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG5cbiAgbGV0IF8gPSBMaW5rICgwLCAwLCAwKVxuICAoKiBkbyBub3QgcmVtb3ZlLCBpdCB3aWxsIGJlIG5lY2Vzc2FyeSBmb3IgZGVhbGluZyBlZmZlY3RpdmVseSB3aXRoIHVuYXJ5L2JpbmFyeSBydWxlICopXG5cbiAgdHlwZSBwcmVkaWNhdGVfdmFsdWUgPVxuICAgIHwgQ291bnRlciBvZiBpbnRcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgb2YgSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG4gICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBvZiBDSS5Qby5LLmludGVybmFsX3N0YXRlXG4gICAgfCBEZWZpbmVkICAoKiogdGhlIHdpcmUgZG9lcyBleGlzdCwgYnV0IHdlIGRvIG5vdCBrbm93IHdoYXQgdGhlIHZhbHVlIGlzICopXG4gICAgfCBVbmRlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIG5vdCBleGlzdCB5ZXQgKilcbiAgICB8IFByZXNlbnQgICgqKiBmb3IgYWdlbnQgcHJlc2VuY2UgKilcbiAgICB8IEZyZWUgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuICAgIHwgQm91bmQgICgqKiBmb3IgYmluZGluZyBzaXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbikgKilcbiAgICB8IEJvdW5kX3RvIG9mXG4gICAgICAgIHByZWRpY2F0ZV9pZFxuICAgICAgICAqIENJLlBvLksuYWdlbnRfaWRcbiAgICAgICAgKiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcbiAgICAgICAgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgICAgICAoKiogZm9yIGJpbmRpbmYgc2l0ZXMgKGNvbXBsZXRlIGluZm9ybWF0aW9uKSAqKVxuICAgIHwgQm91bmRfdG9fdHlwZSBvZiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWUgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgICAgICAoKiogZm9yIGJpbmRpbmcgc2l0ZXMgKHBhcnRpYWwgaW5mb3JtYXRpb24gKilcbiAgICB8IFVua25vd25cbiAgICAgICAgKCoqICBmb3IgYWdlbnQgcHJlc2VuY2UsIGludGVybmFsIHN0YXRlcywgYmluZGluZyBzdGF0ZXMgKHBhcnRpYWwgaW5mb3JtYXRpb24gKilcblxuICBtb2R1bGUgQyA6IENhY2hlLkNhY2hlIHdpdGggdHlwZSBPLnQgPSBwcmVkaWNhdGVfdmFsdWUgPSBDYWNoZS5DYWNoZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX3ZhbHVlXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIGxldCB3ZWFrZW5pbmcgcCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudCB8IEZyZWVcbiAgICB8IEJvdW5kIC0+XG4gICAgICBbIHA7IERlZmluZWQgXVxuICAgIHwgQm91bmRfdG8gKF8sIF8sIGFnLCBzaXRlKSAtPlxuICAgICAgWyBwOyBCb3VuZF90b190eXBlIChhZywgc2l0ZSk7IEJvdW5kOyBEZWZpbmVkIF1cbiAgICB8IEJvdW5kX3RvX3R5cGUgXyAtPiBbIHA7IEJvdW5kOyBEZWZpbmVkIF1cbiAgICB8IERlZmluZWQgfCBVbmRlZmluZWQgLT4gWyBwIF1cbiAgICB8IFVua25vd24gLT4gW11cblxuICBsZXQgZGVmaW5lZCA9IERlZmluZWRcbiAgbGV0IHVuZGVmaW5lZCA9IFVuZGVmaW5lZFxuICBsZXQgdW5rbm93biA9IFVua25vd25cbiAgbGV0IGlzX3Vua25vd24geCA9IHggPSBVbmtub3duXG4gIGxldCBpc191bmRlZmluZWQgeCA9IHggPSBVbmRlZmluZWRcblxuICAoKiogbWFwcyBhbmQgc2V0cyAqKVxuXG4gIG1vZHVsZSBQcmVkaWNhdGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX2luZm9cblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbW9kdWxlIFByZWRpY2F0ZVNldCA9IFByZWRpY2F0ZVNldE1hcC5TZXRcbiAgbW9kdWxlIFByZWRpY2F0ZU1hcCA9IFByZWRpY2F0ZVNldE1hcC5NYXBcblxuICBtb2R1bGUgQ2FzZVZhbHVlU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWRpY2F0ZV92YWx1ZVxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgQ2FzZVZhbHVlU2V0ID0gQ2FzZVZhbHVlU2V0TWFwLlNldFxuICBtb2R1bGUgUHJlZGljYXRlaWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgUHJlZGljYXRlaWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgU2lkTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIEFnZW50SWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZDJNYXAgPSBNb2RzLkludDJNYXBcbiAgbW9kdWxlIEFnZW50SWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgQWdlbnRJZDJTZXQgPSBNb2RzLkludDJTZXRcbiAgbW9kdWxlIFNpdGVJZFNldCA9IE1vZHMuSW50MlNldFxuICBtb2R1bGUgU2l0ZUlkTWFwID0gTW9kcy5JbnQyTWFwXG5cbiAgdHlwZSBwcmVfYmxhY2tib2FyZCA9IHtcbiAgICBwcmVfZmljdGl0aW91c19saXN0OiBwcmVkaWNhdGVfaWQgbGlzdDtcbiAgICAgICAgKCoqIGxpc3Qgb2Ygd2lyZSBmb3IgbXV0dWFsIGV4Y2x1c2lvbnMsIHRoZSBzdGF0ZSBtdXN0IGJlIHVuZGVmaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSB0cmFjZSAqKVxuICAgIHByZV9zdGVwc19ieV9jb2x1bW46XG4gICAgICAoc3RlcF9zaG9ydF9pZFxuICAgICAgKiAoc3RlcF9pZCAqIHN0ZXBfc2hvcnRfaWQgKiBwcmVkaWNhdGVfdmFsdWUgKiBwcmVkaWNhdGVfdmFsdWUpIGxpc3QpXG4gICAgICBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSB0byB0aGUgbGFzdCBrbm93biB2YWx1ZSBhbmQgdGhlIGxpc3Qgb2Ygc3RlcCAoc3RlcCBpZCx0ZXN0LGFjdGlvbikqKVxuICAgIHByZV9raW5kX29mX2V2ZW50OiBydWxlX3R5cGUgQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIGV2ZW50IGlkIHRvIHRoZSBraW5kIG9mIGV2ZW50ICopXG4gICAgcHJlX2V2ZW50OiBUcmFjZS5zdGVwIEEudDsgICgqKiBtYXBzIGVhY2ggZXZlbnQgdG8gdGhlIHN0ZXAgKilcbiAgICBwcmVfbnN0ZXBzOiBzdGVwX2lkOyAgKCoqaWQgb2YgdGhlIGxhc3QgZXZlbnQgKilcbiAgICBwcmVfbmNvbHVtbjogcHJlZGljYXRlX2lkOyAgKCoqaWQgb2YgdGhlIGxhc3Qgd2lyZSAqKVxuICAgIHByZV9jb2x1bW5fbWFwOiBwcmVkaWNhdGVfaWQgUHJlZGljYXRlTWFwLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBsYWJlbCB0byBpdHMgd2lyZSBpZCAqKVxuICAgIHByZV9jb2x1bW5fbWFwX2ludjogcHJlZGljYXRlX2luZm8gQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIHdpcmUgaWQgdG8gaXRzIHdpcmUgbGFiZWwgKilcbiAgICBwcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZDogUHJlZGljYXRlaWRTZXQudCBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCBmb3IgdGhlIHByZXNlbmNlIG9mIGFuIGFnZW50IHRvIHRoZSBzZXQgb2Ygd2lyZXMgZm9yIGl0cyBhdHRpYnV0ZSAodXNlZnVsLCB3aGVuIGFuIGFnZW50IGdldCByZW1vdmVkLCBhbGwgaXRzIGF0dHJpYnV0ZXMgZ2V0IHVuZGVmaW5lZCAqKVxuICAgIGhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWQ6IEMudCBBLnQ7XG4gICAgICAgICgqIG1hcHMgZWFjaCB3aXJlIHRvIHRoZSBzZXQgb2YgaXRzIHByZXZpb3VzIHN0YXRlcywgdGhpcyBzdW1tYXJpemUgdGhlIHBvdGVudGlhbCBzdGF0ZSBvZiBhIHNpdGUgdGhhdCBpcyBmcmVlZCwgc28gYXMgdG8gb3ZlcmFwcHJveGltYXRlIHRoZSBzZXQgb2YgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyopXG4gICAgaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZTogQ0kuUG8uSy5hZ2VudF9pZCBsaXN0IEEudDtcbiAgICBwcmVfb2JzZXJ2YWJsZV9saXN0OlxuICAgICAgKHN0ZXBfaWQgbGlzdCAqIHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgb3B0aW9uKSBsaXN0O1xuICAgIHByZV9zaWRlX2VmZmVjdF9vZl9ldmVudDogQ0kuUG8uSy5zaWRlX2VmZmVjdCBBLnQ7XG4gICAgcHJlX2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZTogc3RlcF9pZCBvcHRpb247XG4gICAgICAgICgqaWQgb2YgdGhlIHN0ZXAgdGhhdCBjbG9zZXMgYWxsIHRoZSBzaWRlLWVmZmVjdCBtdXRleCAqKVxuICAgIHByZV9sZXZlbF9vZl9ldmVudDogUHJpb3JpdHkubGV2ZWwgQS50O1xuICB9XG5cbiAgbGV0IGxldmVscyBiID0gYi5wcmVfbGV2ZWxfb2ZfZXZlbnRcbiAgbGV0IGdldF9wcmVfY29sdW1uX21hcF9pbnYgeCA9IHgucHJlX2NvbHVtbl9tYXBfaW52XG5cbiAgbGV0IGdldF9wcmVfZXZlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4ID1cbiAgICBlcnJvciwgbG9nX2luZm8sIHgucHJlX2V2ZW50XG5cbiAgKCoqIHByZXR0eSBwcmludGluZyAqKVxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfaW5mbyBsb2cgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBIZXJlIGkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkFnZW50X0hlcmUgJWlcIiBpXG4gICAgfCBCb3VuZF9zaXRlIChpLCBzKSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiQmluZGluZ19zdGF0ZSAoJWksJWkpXCIgaSBzXG4gICAgfCBJbnRlcm5hbF9zdGF0ZSAoaSwgcykgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkludGVybmFsX3N0YXRlICglaSwlaSlcIiBpIHNcbiAgICB8IFBvaW50ZXIgKGVpZCwgaWQpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQb2ludGVyKGVpZDolaSxhZ19pZDolaSlcIiBlaWQgaWRcbiAgICB8IExpbmsgKGVpZCwgaWQxLCBpZDIpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTGluayhlaWQ6JWksJWktJWkpXCIgZWlkIGlkMSBpZDJcbiAgICB8IE11dGV4IChMb2NrX2FnZW50IChpbnQsIGludDIpKSAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk11dGV4IChTdGVwLWlkOiVpLEFnZW50X2lkOiVpKVwiIGludCBpbnQyXG4gICAgfCBNdXRleCAoTG9ja19yZWN0YW5ndWxhciAoaW50LCBpbnQyKSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9pbnYgKFN0ZXAtaWQ6JWksQWdlbnRfaWQ6JWkpXCIgaW50IGludDJcbiAgICB8IE11dGV4IChMb2NrX2xpbmtzIChpbnQsIChpbnQyLCBpbnQzKSkpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXhfbGlua3MgKFN0ZXAtaWQ6JWksJWktJWkpXCIgaW50IGludDIgaW50M1xuICAgIHwgTXV0ZXggKExvY2tfc2lkZV9lZmZlY3QgKGludCwgaW50MiwgaW50MywgaW50NCkpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXhfc2lkZV9lZmZlY3QgKFN0ZXAtaWQ6JWksJWkvJWkuJWkpXCIgaW50IGludDJcbiAgICAgICAgaW50MyBpbnQ0XG4gICAgfCBGaWN0aXRpb3VzIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJGaWN0aXRpb3VzXCJcblxuICBsZXQgcHJpbnRfa25vd24gbG9nIHQgeCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVbmtub3duIC0+ICgpXG4gICAgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudCB8IEZyZWVcbiAgICB8IEJvdW5kIHwgQm91bmRfdG8gXyB8IEJvdW5kX3RvX3R5cGUgXyB8IERlZmluZWQgfCBVbmRlZmluZWQgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIHhcblxuICBsZXQgc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IENvdW50ZXIgaW50IC0+IFwiQ291bnRlciBcIiBeIHN0cmluZ19vZl9pbnQgaW50XG4gICAgfCBEZWZpbmVkIC0+IFwiRGVmaW5lZFwiXG4gICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnRlcm5hbF9zdGF0ZSAtPiBzdHJpbmdfb2ZfaW50IGludGVybmFsX3N0YXRlXG4gICAgfCBVbmRlZmluZWQgLT4gXCJVbmRlZmluZWRcIlxuICAgIHwgUHJlc2VudCAtPiBcIlByZXNlbnRcIlxuICAgIHwgRnJlZSAtPiBcIkZyZWVcIlxuICAgIHwgQm91bmQgLT4gXCJCb3VuZFwiXG4gICAgfCBCb3VuZF90byAoaWQsIGFnZW50X2lkLCBhZ2VudF9uYW1lLCBzaXRlKSAtPlxuICAgICAgXCJCb3VuZChcIiBeIHN0cmluZ19vZl9pbnQgaWQgXiBcIixcIiBeIHN0cmluZ19vZl9pbnQgYWdlbnRfaWQgXiBcIihcIlxuICAgICAgXiBzdHJpbmdfb2ZfaW50IGFnZW50X25hbWUgXiBcIilAXCIgXiBzdHJpbmdfb2ZfaW50IHNpdGUgXiBcIilcIlxuICAgIHwgQm91bmRfdG9fdHlwZSAoYWdlbnQsIHNpdGUpIC0+XG4gICAgICBcIkJvdW5kKFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudCBeIFwiQFwiIF4gc3RyaW5nX29mX2ludCBzaXRlIF4gXCIpXCJcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgYWdlbnRfaWQgLT4gXCJQb2ludGVyKFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudF9pZCBeIFwiKVwiXG4gICAgfCBVbmtub3duIC0+IFwiXCJcblxuICBsZXQgcHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyB4ID1cbiAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiAoc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSB4KVxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSA9XG4gICAgbGV0IHByZWRpY2F0ZV9pbmZvID0gQS5nZXQgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgaSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQcmVkaWNhdGU6ICVpIFwiIGkgaW5cbiAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaW5mbyBsb2cgcHJlZGljYXRlX2luZm8gaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgKClcblxuICBsZXQgcHJpbnRfcHJlYmxhY2tib2FyZCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGxvZyA9IENJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIioqUFJFQkxBQ0tCT0FSRCoqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogIGFnZW50IHR5cGVzICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIG5hbWUgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQWdlbnQgbmFtZTogJWkgXCIgbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgaWQ6ICVpIFwiIHggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAoKSkpXG4gICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqIHN0ZXBzIGJ5IGNvbHVtbiAqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpZCAobmV2ZW50cywgbGlzdCkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaWQgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwibmV2ZW50czogJWkgXCIgbmV2ZW50cyBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVpZCwgc2VpZCwgdGVzdCwgYWN0aW9uKSAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVudCBpZDogJWkgXCIgZWlkIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJTaG9ydCBpZDogJWkgXCIgc2VpZCBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9rbm93biBsb2cgdGVzdCBcIlRFU1Q6ICAgXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHRlc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfa25vd24gbG9nIGFjdGlvbiBcIkFDVElPTjogXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGFjdGlvbiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgICAgKExpc3QucmV2IGxpc3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiLS0tXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogU2lkZSBlZmZlY3RzICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIGkgbGlzdCAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJldmVudCAlaTosIFwiIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDSS5Qby5LLnByaW50X3NpZGVfZWZmZWN0IGxvZyBsaXN0IGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKlByZWRpY2F0ZV9pZCByZWxhdGVkIHRvIHRoZSBwcmVkaWNhdGUgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlZGljYXRlX2lkIGxvZyBibGFja2JvYXJkIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgUHJlZGljYXRlaWRTZXQuaXRlclxuICAgICAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWlcIiBzIGluXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIi0tLVwiIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKlBhc3QgdmFsdWVzIG9mIGEgcHJlZGljYXRlKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlZGljYXRlX2lkIGxvZyBibGFja2JvYXJkIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDLml0ZXIgKGZ1biBzIC0+IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgcykgcyBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCItLS1cIiBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKk9ic2VydmFibGVzKlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChsLCBfKSAtPlxuICAgICAgICAgIGxldCBfID0gTGlzdC5pdGVyIChMb2dnZXJzLmZwcmludGYgbG9nIFwiJWksXCIpIGwgaW5cbiAgICAgICAgICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgKCoqIGluZm9ybWF0aW9uIGxhdHRpY2UgKilcblxuICBsZXQgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeSA9XG4gICAgbWF0Y2ggeSB3aXRoXG4gICAgfCBVbmRlZmluZWQgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudFxuICAgIHwgRnJlZSB8IEJvdW5kX3RvIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBCb3VuZF90b190eXBlIChhZywgcykgLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgQm91bmRfdG8gKF8sIF8sIGFnJywgcycpIHdoZW4gYWcgPSBhZycgJiYgcyA9IHMnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IEJvdW5kIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IEJvdW5kX3RvIF8gfCBCb3VuZF90b190eXBlIF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgRGVmaW5lZCAtPlxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgfCBVbmtub3duIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpXG4gICAgfCBVbmtub3duIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKVxuXG4gIGxldCBtb3JlX3JlZmluZWQgeCB5ID0geCA9IHkgfHwgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeVxuXG4gIGxldCBjb25qIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgPVxuICAgIGlmIG1vcmVfcmVmaW5lZCB4IHkgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB4XG4gICAgZWxzZSBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgeSB4IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgeVxuICAgIGVsc2VcbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJjb25qLCAgQXJndW1lbnRzIGhhdmUgbm8gZ3JlYXRlc3QgbG93ZXIgYm91bmRcIlxuICAgICAgICAoRmFpbHVyZSBcIkFyZ3VtZW50cyBoYXZlIG5vIGdyZWF0ZXN0IGxvd2VyIGJvdW5kXCIpIFVuZGVmaW5lZFxuXG4gIGxldCBjb21wYXRpYmxlIHggeSA9IHggPSB5IHx8IG1vcmVfcmVmaW5lZCB4IHkgfHwgbW9yZV9yZWZpbmVkIHkgeFxuXG4gIGxldCBkaXNqdW5jdGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgaWYgeCA9IHkgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgICAgIHwgVW5rbm93biwgXyB8IF8sIFVua25vd24gfCBVbmRlZmluZWQsIF8gfCBfLCBVbmRlZmluZWQgLT4gVW5rbm93blxuICAgICAgICB8IERlZmluZWQsIF8gfCBfLCBEZWZpbmVkIC0+IERlZmluZWRcbiAgICAgICAgfCBDb3VudGVyIF8sIF9cbiAgICAgICAgfCBfLCBDb3VudGVyIF9cbiAgICAgICAgfCBGcmVlLCBfXG4gICAgICAgIHwgXywgRnJlZVxuICAgICAgICB8IFByZXNlbnQsIF9cbiAgICAgICAgfCBfLCBQcmVzZW50XG4gICAgICAgIHwgSW50ZXJuYWxfc3RhdGVfaXMgXywgX1xuICAgICAgICB8IF8sIEludGVybmFsX3N0YXRlX2lzIF8gLT5cbiAgICAgICAgICBEZWZpbmVkXG4gICAgICAgIHwgQm91bmQsIF8gfCBfLCBCb3VuZCAtPiBCb3VuZFxuICAgICAgICB8IEJvdW5kX3RvX3R5cGUgKGEsIGIpLCBCb3VuZF90byAoXywgXywgYywgZClcbiAgICAgICAgfCBCb3VuZF90byAoXywgXywgYSwgYiksIEJvdW5kX3RvIChfLCBfLCBjLCBkKVxuICAgICAgICB8IEJvdW5kX3RvIChfLCBfLCBhLCBiKSwgQm91bmRfdG9fdHlwZSAoYywgZClcbiAgICAgICAgICB3aGVuIGEgPSBjICYmIGIgPSBkIC0+XG4gICAgICAgICAgQm91bmRfdG9fdHlwZSAoYSwgYilcbiAgICAgICAgfCBfIC0+IEJvdW5kXG4gICAgICApIClcblxuICAoKiogcHJlZGljYXRlIGlkIGFsbG9jYXRpb24gKilcblxuICAoKiogaWYgYSB3aXJlIGNvbmNlcm5zIGFuIGFnZW50LCB3aGljaCBvbmUgaXQgaXMgKilcbiAgbGV0IGFnZW50X2lkX29mX3ByZWRpY2F0ZSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEhlcmUgeCAtPiBTb21lIHhcbiAgICB8IEJvdW5kX3NpdGUgKHgsIF8pIC0+IFNvbWUgeFxuICAgIHwgSW50ZXJuYWxfc3RhdGUgKHgsIF8pIC0+IFNvbWUgeFxuICAgIHwgUG9pbnRlciBfIHwgTXV0ZXggXyB8IExpbmsgXyB8IEZpY3RpdGlvdXMgLT4gTm9uZVxuXG4gIGxldCByZWMgYmluZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIF9wcmVkaWNhdGVcbiAgICAgIHByZWRpY2F0ZV9pZCBhZ19pZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkID1cbiAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgaW5cbiAgICBsZXQgb2xkX3NldCA9XG4gICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCBzaWRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFByZWRpY2F0ZWlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbmV3X3NldCA9IFByZWRpY2F0ZWlkU2V0LmFkZCBwcmVkaWNhdGVfaWQgb2xkX3NldCBpblxuICAgIHRyeVxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHNpZCBuZXdfc2V0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJiaW5kLCBPdXQgb2YgYm91bmQgYWNjZXNzXCJcbiAgICAgICAgKEZhaWx1cmUgXCJiaW5kXCIpIGJsYWNrYm9hcmRcblxuICBhbmQgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGUgPVxuICAgIGxldCBhZ19pZCA9IGFnZW50X2lkX29mX3ByZWRpY2F0ZSBwcmVkaWNhdGUgaW5cbiAgICBsZXQgbWFwID0gYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcCBpblxuICAgIGxldCBtYXBfaW52ID0gYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgaW5cbiAgICBtYXRjaCBQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcHJlZGljYXRlIG1hcCB3aXRoXG4gICAgfCBTb21lIHNpZCAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHNpZFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHNpZCcgPSBibGFja2JvYXJkLnByZV9uY29sdW1uICsgMSBpblxuICAgICAgbGV0IG1hcCcgPSBQcmVkaWNhdGVNYXAuYWRkIHByZWRpY2F0ZSBzaWQnIG1hcCBpblxuICAgICAgbGV0IF8gPSBBLnNldCBtYXBfaW52IHNpZCcgcHJlZGljYXRlIGluXG4gICAgICBsZXQgbWFwX2ludicgPSBtYXBfaW52IGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZCBzaWQnXG4gICAgICAgICAgKEMuY3JlYXRlIHBhcmFtZXRlci5DSS5Qby5LLkguY2FjaGVfc2l6ZSlcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfbmNvbHVtbiA9IHNpZCc7XG4gICAgICAgICAgcHJlX2NvbHVtbl9tYXAgPSBtYXAnO1xuICAgICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IG1hcF9pbnYnO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIG1hdGNoIGFnX2lkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICB8IFNvbWUgYWdfaWQgLT5cbiAgICAgICAgICBiaW5kIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlIHNpZCcgYWdfaWRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHNpZCdcblxuICBsZXQgY3JlYXRlX2FnZW50IF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnZW50X2lkID1cbiAgICBsZXQgb2xkX2xpc3QgPVxuICAgICAgdHJ5IEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSBhZ2VudF9uYW1lXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuICAgIGluXG4gICAgbGV0IG5ld19saXN0ID0gYWdlbnRfaWQgOjogb2xkX2xpc3QgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSBhZ2VudF9uYW1lIG5ld19saXN0IGluXG4gICAgZXJyb3IsIGJsYWNrYm9hcmRcblxuICBsZXQgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnZW50X2lkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ2VudF9pZClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNldCA9XG4gICAgICB0cnlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICBwcmVkaWNhdGVfaWQgKVxuICAgICAgd2l0aCBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcImZyZWVfYWdlbnQsIFRyeSB0byBmcmVlIGFuIHVuZXhpc3RpbmcgYWdlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiZnJlZV9hZ2VudFwiKSBQcmVkaWNhdGVpZFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBQcmVkaWNhdGVpZFNldC5mb2xkXG4gICAgICAgIChmdW4gcHJlZGljYXRlX2lkIG1hcCAtPlxuICAgICAgICAgIGxldCBwcmVkaWNhdGUgPSBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBwcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBQcmVkaWNhdGVNYXAucmVtb3ZlIHByZWRpY2F0ZSBtYXApXG4gICAgICAgIHNldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIHByZV9jb2x1bW5fbWFwID0gbWFwIH1cblxuICBsZXQgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgYWdlbnRfaWQgPVxuICAgIGlmIFByZWRpY2F0ZU1hcC5tZW0gKEhlcmUgYWdlbnRfaWQpIGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXAgdGhlblxuICAgICAgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnZW50X2lkXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgaW5pdCBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBjcmVhdGVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGlmIGluaXQgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnX2lkKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlzdDEgPSAocHJlZGljYXRlX2lkLCBGcmVlKSA6OiBsaXN0MSBpblxuICAgICAgICAgIGxldCBsaXN0MiA9IChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QxLCBsaXN0MlxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgKEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAocHJlZGljYXRlX2lkLCBVbmRlZmluZWQpIDo6IGxpc3QyICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSApXG4gICAgICAgIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgaW50IF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDEsIGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdLCBbXVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGZyZWVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBzZXQgPVxuICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHByZWRpY2F0ZV9pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCwgbGlzdCA9XG4gICAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHByZWRpY2F0ZWlkIChlcnJvciwgYmxhY2tib2FyZCwgbGlzdCkgLT5cbiAgICAgICAgICAgIGVycm9yLCBibGFja2JvYXJkLCAocHJlZGljYXRlaWQsIFVuZGVmaW5lZCkgOjogbGlzdClcbiAgICAgICAgICBzZXRcbiAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QsIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uX3N1YnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpbml0XG4gICAgICBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBjcmVhdGVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGlmIGluaXQgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnX2lkKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlzdDEgPSAocHJlZGljYXRlX2lkLCBGcmVlKSA6OiBsaXN0MSBpblxuICAgICAgICAgIGxldCBsaXN0MiA9IChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QxLCBsaXN0MlxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgKEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAocHJlZGljYXRlX2lkLCBVbmRlZmluZWQpIDo6IGxpc3QyICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSApXG4gICAgICAgIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgaW50IF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDEsIGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdLCBbXVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgKCogICAgICAgICAgICAgICBsZXQgZXJyb3IsYmxhY2tib2FyZCA9IGZyZWVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ19pZCBpbiAqKVxuICAgICAgbGV0IHNldCA9XG4gICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgcHJlZGljYXRlX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCA9XG4gICAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHByZWRpY2F0ZWlkIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QpIC0+XG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIChwcmVkaWNhdGVpZCwgVW5kZWZpbmVkKSA6OiBsaXN0KVxuICAgICAgICAgIHNldFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QsIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGJvb2wgPVxuICAgIGlmIGJvb2wgdGhlblxuICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb25fc3Vic1xuICAgIGVsc2VcbiAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnNcblxuICBsZXQgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdGVzdCA9XG4gICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdIClcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBCb3VuZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgWyBwcmVkaWNhdGVfaWQsIEJvdW5kX3RvX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkgXSApXG5cbiAgbGV0IHR5cGVfb2Zfc3RlcCB4ID1cbiAgICBpZiBUcmFjZS5zdGVwX2lzX29icyB4IHRoZW5cbiAgICAgIE9ic2VydmFibGVcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfaW5pdCB4IHRoZW5cbiAgICAgIEluaXRcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfcnVsZSB4IHRoZW5cbiAgICAgIFJ1bGVcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfc3VicyB4IHRoZW5cbiAgICAgIFN1YnNcbiAgICBlbHNlXG4gICAgICBEdW1teVxuXG4gICgqKiBpbml0aWFsaXNhdGlvbiopXG4gIGxldCBpbml0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHtcbiAgICAgICAgcHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50ID0gQS5tYWtlIDEgQ0kuUG8uSy5lbXB0eV9zaWRlX2VmZmVjdDtcbiAgICAgICAgcHJlX2V2ZW50ID0gQS5tYWtlIDEgKFRyYWNlLmR1bW15X3N0ZXAgXCJcIik7XG4gICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBbXTtcbiAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbiA9IEEubWFrZSAxICgxLCBbXSk7XG4gICAgICAgIHByZV9uc3RlcHMgPSAtMTtcbiAgICAgICAgcHJlX25jb2x1bW4gPSAtMTtcbiAgICAgICAgcHJlX2NvbHVtbl9tYXAgPSBQcmVkaWNhdGVNYXAuZW1wdHk7XG4gICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IEEubWFrZSAxIEZpY3RpdGlvdXM7XG4gICAgICAgIHByZV9raW5kX29mX2V2ZW50ID0gQS5tYWtlIDEgKFNpZGVfZWZmZWN0X29mICgtMSwgW10pKTtcbiAgICAgICAgaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZCA9IEEubWFrZSAxIChDLmNyZWF0ZSBOb25lKTtcbiAgICAgICAgaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSA9IEEubWFrZSAxIFtdO1xuICAgICAgICBwcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgQS5tYWtlIDEgUHJlZGljYXRlaWRTZXQuZW1wdHk7XG4gICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBbXTtcbiAgICAgICAgcHJlX2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA9IE5vbmU7XG4gICAgICAgIHByZV9sZXZlbF9vZl9ldmVudCA9IEEubWFrZSAxIFByaW9yaXR5LmhpZ2hlc3Q7XG4gICAgICB9IClcblxuICBsZXQgZ2V0X2xldmVsX29mX2V2ZW50IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5IGVycm9yLCBsb2dfaW5mbywgQS5nZXQgYmxhY2tib2FyZC5wcmVfbGV2ZWxfb2ZfZXZlbnQgZWlkXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gKEZhaWx1cmUgXCJVTmtub3duIGV2ZW50XCIpXG4gICAgICAgIFByaW9yaXR5LmhpZ2hlc3RcblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZCA9XG4gICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mbyBpblxuICAgIGxldCB0ZXN0ID0gVW5kZWZpbmVkIGluXG4gICAgbGV0IGFjdGlvbiA9IENvdW50ZXIgMCBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgKDIsIFsgbnNpZCwgMSwgdGVzdCwgYWN0aW9uIF0pXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBuc2lkIH1cblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbl9hdF9uc2lkIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkIG5zaWRcbiAgICAgID1cbiAgICBsZXQgdGVzdCA9IFVuZGVmaW5lZCBpblxuICAgIGxldCBhY3Rpb24gPSBDb3VudGVyIDAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gcHJlZGljYXRlX2lkXG4gICAgICAgICgyLCBbIG5zaWQsIDEsIHRlc3QsIGFjdGlvbiBdKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgaW5pdF9zdGVwID1cbiAgICBtYXRjaCBpbml0X3N0ZXAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFNvbWUgYmxhY2tib2FyZC5wcmVfbnN0ZXBzXG4gICAgfCBTb21lIG5zaWQgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uX2F0X25zaWQgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICBuc2lkXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXBcblxuICBsZXQgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkID1cbiAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyBpblxuICAgIGxldCBtYXAgPSBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gaW5cbiAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgcHJlZGljYXRlX2lkIGluXG4gICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IG1hcCBwcmVkaWNhdGVfaWQgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3RhcmdldF9pZCBzIHNpdGUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRGVmaW5lZCB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBQb2ludGVyX3RvX2FnZW50IF9cbiAgICB8IFByZXNlbnQgfCBCb3VuZCB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJJbGxlZ2FsIHN0YXRlIGZvciBhIHNpZGUtZWZmZWN0c1wiXG4gICAgICAgIChGYWlsdXJlIFwiQmxhY2tib2FyZF9nZW5lcmF0aW9uLnNpZGVfZWZmZWN0XCIpIFtdXG4gICAgfCBGcmVlIC0+IGVycm9yLCBsb2dfaW5mbywgWyBwcmVkaWNhdGVfdGFyZ2V0X2lkLCBOb25lLCAoRnJlZSwgVW5rbm93bikgXVxuICAgIHwgQm91bmRfdG8gKHBpZCwgYWcsIGFnZW50X25hbWUsIHNuYW1lKSAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfdGFyZ2V0X2lkLCBOb25lLCAocywgVW5rbm93bik7XG4gICAgICAgICAgKCBwaWQsXG4gICAgICAgICAgICBTb21lICgoYWcsIGFnZW50X25hbWUpLCBzbmFtZSksXG4gICAgICAgICAgICAoIEJvdW5kX3RvXG4gICAgICAgICAgICAgICAgKCBwcmVkaWNhdGVfdGFyZ2V0X2lkLFxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzaXRlLFxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICksXG4gICAgICAgICAgICAgIEZyZWUgKSApO1xuICAgICAgICBdIClcblxuICBsZXQgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBmdW5jdGlvblxuICAgIHwgSW5zdGFudGlhdGlvbi5BTlkgLT4gZXJyb3IsIGxvZ19pbmZvLCBVbmtub3duXG4gICAgfCBJbnN0YW50aWF0aW9uLkZSRUUgLT4gZXJyb3IsIGxvZ19pbmZvLCBGcmVlXG4gICAgfCBJbnN0YW50aWF0aW9uLkJPVU5EIC0+IGVycm9yLCBsb2dfaW5mbywgQm91bmRcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkRfVFlQRSBidCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIEJvdW5kX3RvX3R5cGVcbiAgICAgICAgICAoIENJLlBvLksuYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgYnQsXG4gICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUgYnQgKSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkJPVU5EX3RvIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJJbGxlZ2FsIGJpbmRpbmcgc3RhdGUgaW4gcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGVcIlxuICAgICAgICAoRmFpbHVyZSBcInByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YXRlXCIpIFVua25vd25cblxuICBsZXQgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHNpdGVcbiAgICAgIGJpbmRpbmdfc3RhdGUgPVxuICAgIGxldCBhZ2VudF9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNpdGVfbmFtZSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV90YXJnZXRfaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAoQm91bmRfc2l0ZSAoYWdlbnRfaWQsIHNpdGVfbmFtZSkpXG4gICAgaW5cbiAgICBsZXQgZm9ybWVyX3N0YXRlcyA9XG4gICAgICBBLmdldCBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgcHJlZGljYXRlX3RhcmdldF9pZFxuICAgIGluXG4gICAgbWF0Y2ggcGFyYW1ldGVyLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICAgIGxldCBzID0gQy5sYXN0IGZvcm1lcl9zdGF0ZXMgaW5cbiAgICAgIChtYXRjaCBzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdXG4gICAgICB8IFNvbWUgcyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBidCA9XG4gICAgICAgICAgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbW9yZV9yZWZpbmVkIHMgYnQgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbCA9XG4gICAgICAgICAgICBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkIHNcbiAgICAgICAgICAgICAgc2l0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIGwgXVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdKVxuICAgIHwgU29tZSAoU3RvcnlfanNvbi5TdHJvbmcgfCBTdG9yeV9qc29uLldlYWspIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBidCA9XG4gICAgICAgIHByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICBDLmZvbGRcbiAgICAgICAgICAoZnVuIHMgKGVycm9yLCBsb2dfaW5mbywgbGlzdCkgLT5cbiAgICAgICAgICAgIGlmIG1vcmVfcmVmaW5lZCBzIGJ0IHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsID1cbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkXG4gICAgICAgICAgICAgICAgICBzIHNpdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBsIDo6IGxpc3RcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGxpc3QpXG4gICAgICAgICAgZm9ybWVyX3N0YXRlcyAoZXJyb3IsIGxvZ19pbmZvLCBbXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3RcblxuICB0eXBlIGRhdGFfc3RydWN0dXJlX3N0cm9uZyA9IHtcbiAgICBuZXdfYWdlbnRzOiBBZ2VudElkU2V0LnQ7XG4gICAgb2xkX2FnZW50czogSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lIEFnZW50SWRNYXAudDtcbiAgICBvbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb246IENJLlBvLksuYWdlbnRfaWQgbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgc3VyZV9hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICBzdXJlX2xpbmtzOiBBZ2VudElkMlNldC50O1xuICAgIG90aGVyX2xpbmtzOiBBZ2VudElkMlNldC50O1xuICAgIHNpdGVzX2luX290aGVyX2xpbmtzOiBTaXRlSWRTZXQudDtcbiAgICBzaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3M6IFNpdGVJZFNldC50O1xuICAgIG90aGVyX2xpbmtzX3Rlc3Rfc2l0ZXM6IENJLlBvLksuYWdlbnRfaWQgU2l0ZUlkTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzOiBDSS5Qby5LLmFnZW50X2lkIFNpdGVJZE1hcC50O1xuICAgIHN1cmVfdGVzdHM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3Q7XG4gICAgc3VyZV9hY3Rpb25zOiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3Q7XG4gICAgY3JlYXRlX2FjdGlvbnM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdDtcbiAgICBzdXJlX3NpZGVfZWZmZWN0czpcbiAgICAgIChJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYmluZGluZ19zdGF0ZSlcbiAgICAgIGxpc3Q7XG4gICAgb3RoZXJfYWdlbnRzX3Rlc3RzOlxuICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgb3RoZXJfYWdlbnRzX2FjdGlvbnM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgQWdlbnRJZE1hcC50O1xuICAgIG90aGVyX2xpbmtzX3Rlc3RzOlxuICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBBZ2VudElkMk1hcC50O1xuICAgIG90aGVyX2xpbmtzX2FjdGlvbnM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgQWdlbnRJZDJNYXAudDtcbiAgICBvdGhlcl9saW5rc19wcmlvcml0eTogQWdlbnRJZDJTZXQudDtcbiAgICBvdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzOlxuICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3N0YXRlKVxuICAgICAgbGlzdFxuICAgICAgQWdlbnRJZE1hcC50O1xuICAgIHN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzOiBBZ2VudElkU2V0LnQ7XG4gICAgcnVsZV9hZ2VudF9pZF9tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBydWxlX2FnZW50X2lkX3N1YnM6IHByZWRpY2F0ZV9pZCBBZ2VudElkTWFwLnQ7XG4gICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBsaW5rc19tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWQyTWFwLnQ7XG4gICAgcmVtb3ZlZF9hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzOiBTaXRlSWRTZXQudDtcbiAgfVxuXG4gIGxldCBpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyA9XG4gICAge1xuICAgICAgbmV3X2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBvbGRfYWdlbnRzID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbiA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBzdXJlX2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBzdXJlX2xpbmtzID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlcyA9IFNpdGVJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyA9IFNpdGVJZE1hcC5lbXB0eTtcbiAgICAgIHNpdGVzX2luX290aGVyX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgICAgc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgICAgc3VyZV90ZXN0cyA9IFtdO1xuICAgICAgc3VyZV9hY3Rpb25zID0gW107XG4gICAgICBjcmVhdGVfYWN0aW9ucyA9IFtdO1xuICAgICAgc3VyZV9zaWRlX2VmZmVjdHMgPSBbXTtcbiAgICAgIG90aGVyX2FnZW50c190ZXN0cyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBvdGhlcl9hZ2VudHNfYWN0aW9ucyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc19wcmlvcml0eSA9IEFnZW50SWQyU2V0LmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfdGVzdHMgPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX2FjdGlvbnMgPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3MgPSBBZ2VudElkU2V0LmVtcHR5O1xuICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBydWxlX2FnZW50X2lkX3N1YnMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXggPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgcmVtb3ZlZF9hZ2VudHMgPSBBZ2VudElkU2V0LmVtcHR5O1xuICAgICAgcmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcyA9IFNpdGVJZFNldC5lbXB0eTtcbiAgICB9XG5cbiAgbGV0IHByaW50X2RhdGFfc3RydWN0dXJlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgX2RhdGEgPVxuICAgICgqIGxldCBzdGRlcnIgPSBwYXJhbWV0ZXIuQ0kuUG8uSy5ILm91dF9jaGFubmVsX2VyciBpblxuICAgICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBoYW5kbGVyLkNJLlBvLksuSC5lbnYgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk5ldyBhZ2VudHM6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZFNldC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWkgQC5cIikgZGF0YS5uZXdfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk9sZCBhZ2VudHM6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgaWQ6JWk6IHR5cGU6JWkgQC5cIikgZGF0YS5vbGRfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk9sZCBhZ2VudHMgaW1wbGllZCBpbiBsaW5rczogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkU2V0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaSBALlwiKSBkYXRhLnN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlRlc3RlZF9saW5rc19tYXA6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgU2l0ZUlkTWFwLml0ZXIgKGZ1biAoYSxiKSAtPiBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWkuJWkgLT4gJWkgQC5cIiBhIGIgKSBkYXRhLm90aGVyX2xpbmtzX3Rlc3Rfc2l0ZXMgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk1vZGlmaWVkX2xpbmtzX21hcDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBTaXRlSWRNYXAuaXRlciAoZnVuIChhLGIpIC0+IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaS4laSAtPiAlaSBALlwiIGEgYiApIGRhdGEub3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlBvdGVudGlhbCBzdWJzdGl0dXRpb246IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyXG4gICAgICAgICAoZnVuIGlkIGwgLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiBpZDolaUAuXCIgaWRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTGlzdC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgICAlaUAuXCIpIGwpXG4gICAgICAgICBkYXRhLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIGFnZW50czpALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIEFnZW50SWRTZXQuaXRlciAoRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpQC5cIikgZGF0YS5zdXJlX2FnZW50c1xuICAgICAgIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIHRlc3RzOkBbPHYgMT4lYUBdQC5cIlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgfnNpZ3MpKVxuICAgICAgIGRhdGEuc3VyZV90ZXN0cyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiVGVzdHMgdG8gYmUgc3Vic3RpdHV0ZWQ6QFs8diAxPkAsJWElYUBdQC5cIlxuICAgICAgIChQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIEFnZW50SWRNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKGlkLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmXCIlaUAsJWFcIiBpZFxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgfnNpZ3MpKVxuICAgICAgIGxcbiAgICAgICApKVxuICAgICAgIGRhdGEub3RoZXJfYWdlbnRzX3Rlc3RzXG4gICAgICAgKFBwLnNldCBBZ2VudElkMk1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoKGlkMSxpZDIpLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmIFwiKCVpLCVpKUAsJWFcIiBpZDEgaWQyXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgbCkpXG4gICAgICAgZGF0YS5vdGhlcl9saW5rc190ZXN0cyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiU3VyZSBhY3Rpb25zOkBbPHYgMT4lYUBdQC5cIlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgZGF0YS5zdXJlX2FjdGlvbnMgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIkFjdGlvbnMgdG8gYmUgc3Vic3RpdHV0ZWQ6QFs8diAxPkAsJWElYUBdQC5cIlxuICAgICAgIChQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIEFnZW50SWRNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKGlkLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmXCIlaUAsJWFcIiBpZFxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgbFxuICAgICAgICkpXG4gICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfYWN0aW9uc1xuICAgICAgIChQcC5zZXQgQWdlbnRJZDJNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKChpZDEsaWQyKSxsKSAtPlxuICAgICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAgZiBcIiglaSwlaSlALCVhXCIgaWQxIGlkMlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgbCkpXG4gICAgICAgZGF0YS5vdGhlcl9saW5rc19hY3Rpb25zIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIHNpZGVfZWZmZWN0cyBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIExpc3QuaXRlclxuICAgICAgICAgKENJLlBvLksucHJpbnRfc2lkZSBzdGRlcnIgaGFuZGxlciBcIiBcIilcbiAgICAgICAgIGRhdGEuc3VyZV9zaWRlX2VmZmVjdHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiU2lkZSBlZmZlY3QgdG8gYmUgc3Vic3RpdHV0ZWQ6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyXG4gICAgICAgICAoZnVuIGlkIGwgLT5cbiAgICAgICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWlALlwiIGlkIGluXG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgIChDSS5Qby5LLnByaW50X3NpZGUgc3RkZXJyIGhhbmRsZXIgXCIgIFwiKVxuICAgICAgICAgICAgICAgbFxuICAgICAgICAgICBpbiAoKSlcbiAgICAgICAgIGRhdGEub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0c1xuICAgICAgIGluKilcbiAgICBlcnJvclxuXG4gIGxldCBhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIHNpdGUgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHNpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2xpbmtzO1xuICAgIH1cblxuICBsZXQgYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIHNpdGUgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9IGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSBpblxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rcyA9XG4gICAgICAgIFNpdGVJZFNldC5hZGQgc2l0ZSBkYXRhX3N0cnVjdHVyZS5zaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3M7XG4gICAgfVxuXG4gIGxldCBtZW1fc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAgU2l0ZUlkU2V0Lm1lbSBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rc1xuXG4gIGxldCBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHsgZGF0YV9zdHJ1Y3R1cmUgd2l0aCBzdXJlX3Rlc3RzID0gdGVzdCA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX3Rlc3RzIH1cblxuICBsZXQgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnX2lkIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c190ZXN0c1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX3Rlc3RzID1cbiAgICAgICAgQWdlbnRJZE1hcC5hZGQgYWdfaWQgKHRlc3QgOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfdGVzdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic190ZXN0X2xpbmsgdGVzdCBsaW5rIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgYSwgYiA9IGZzdCBsaW5rLCBzbmQgbGluayBpblxuICAgIGxldCBsaW5rID1cbiAgICAgIGlmIGEgPCBiIHRoZW5cbiAgICAgICAgbGlua1xuICAgICAgZWxzZVxuICAgICAgICBiLCBhXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUsIG9sZCA9XG4gICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IGRhdGFfc3RydWN0dXJlLCB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmFkZCBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10gKVxuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfbGlua3NfdGVzdHMgPVxuICAgICAgICBBZ2VudElkMk1hcC5hZGQgbGluayAodGVzdCA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzO1xuICAgIH1cblxuICBsZXQgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZSA9XG4gICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfYWN0aW9ucyA9IGFjdGlvbiA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX2FjdGlvbnMgfVxuXG4gIGxldCBhZGRfY3JlYXRlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIGNyZWF0ZV9hY3Rpb25zID0gYWN0aW9uIDo6IGRhdGFfc3RydWN0dXJlLmNyZWF0ZV9hY3Rpb25zO1xuICAgIH1cblxuICBsZXQgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IG9sZCA9XG4gICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBhZ19pZCBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9uc1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX2FjdGlvbnMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAoYWN0aW9uIDo6IG9sZCkgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gbGluayBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IGEsIGIgPSBmc3QgbGluaywgc25kIGxpbmsgaW5cbiAgICBsZXQgbGluayA9XG4gICAgICBpZiBhIDwgYiB0aGVuXG4gICAgICAgIGxpbmtcbiAgICAgIGVsc2VcbiAgICAgICAgYiwgYVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlLCBvbGQgPVxuICAgICAgbWF0Y2ggQWdlbnRJZDJNYXAuZmluZF9vcHRpb24gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IGRhdGFfc3RydWN0dXJlLCB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmFkZCBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10gKVxuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfbGlua3NfYWN0aW9ucyA9XG4gICAgICAgIEFnZW50SWQyTWFwLmFkZCBsaW5rIChhY3Rpb24gOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zO1xuICAgIH1cblxuICBsZXQgYWRkX3N1cmVfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHN1cmVfc2lkZV9lZmZlY3RzID0gc2lkZV9lZmZlY3QgOjogZGF0YV9zdHJ1Y3R1cmUuc3VyZV9zaWRlX2VmZmVjdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBhZ19pZCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IHNpdGUgPSBmc3Qgc2lkZV9lZmZlY3QgaW5cbiAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBhZ2VudF9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnZW50X2lkXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAoc2lkZV9lZmZlY3QgOjogb2xkKVxuICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3RlcF9zdHJvbmcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkIHN0ZXBfaWQgPVxuICAgIGxldCBpbml0ID0gVHJhY2Uuc3RlcF9pc19pbml0IHN0ZXAgaW5cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5wcmVfZXZlbnQgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID0gaW5pdF9kYXRhX3N0cnVjdHVyZV9zdHJvbmcgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSBhY3Rpb24gLT5cbiAgICAgICAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBfKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIG5ld19hZ2VudHMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRTZXQuYWRkXG4gICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm5ld19hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZzFfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZzJfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlMV9pZCA9IGFnMV9pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IHNpdGUyX2lkID0gYWcyX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzID1cbiAgICAgICAgICAgICAgICBTaXRlSWRNYXAuYWRkIHNpdGUxX2lkIGFnMl9pZFxuICAgICAgICAgICAgICAgICAgKFNpdGVJZE1hcC5hZGQgc2l0ZTJfaWQgYWcxX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWdlbnQgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICByZW1vdmVkX2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50KVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uX2xpc3RcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIG9sZF9hZ2VudHMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkXG4gICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcpXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnMV9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnMl9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHNpdGUxX2lkID0gYWcxX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTJfaWQgPSBhZzJfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICAgICAgICAgIGlmIEFnZW50SWRTZXQubWVtIGFnMV9pZCBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX2FnZW50cyB0aGVuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICAgICAgcmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcyA9XG4gICAgICAgICAgICAgICAgICAgIFNpdGVJZFNldC5hZGQgc2l0ZTFfaWRcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0gYWcyX2lkIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlMl9pZFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlcyA9XG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmFkZCBzaXRlMV9pZCBhZzJfaWRcbiAgICAgICAgICAgICAgICAgIChTaXRlSWRNYXAuYWRkIHNpdGUyX2lkIGFnMV9pZFxuICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgdGVzdGVkX3NpdGVzID1cbiAgICAgIFNpdGVJZE1hcC5mb2xkXG4gICAgICAgIChmdW4gYSBfIC0+IFNpdGVJZFNldC5hZGQgYSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlcyBTaXRlSWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBtb2Rfc2l0ZXMgPVxuICAgICAgU2l0ZUlkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBhIF8gLT4gU2l0ZUlkU2V0LmFkZCBhKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMgU2l0ZUlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgcHJpb3JpdHlfc2l0ZXMgPSBTaXRlSWRTZXQuaW50ZXIgdGVzdGVkX3NpdGVzIG1vZF9zaXRlcyBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID1cbiAgICAgICAgICBBZ2VudElkTWFwLm1hcFxuICAgICAgICAgICAgKEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSlcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHM7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfYWdlbnRzID0gZGF0YV9zdHJ1Y3R1cmUubmV3X2FnZW50cyB9XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIHN1cmVfYWdlbnRzID1cbiAgICAgICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgICAgIChmdW4gaWQgbCBzdXJlX2FnZW50cyAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIF8gXSAtPiBBZ2VudElkU2V0LmFkZCBpZCBzdXJlX2FnZW50c1xuICAgICAgICAgICAgICB8IF8gLT4gc3VyZV9hZ2VudHMpXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzO1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHN1cmVfYWdlbnQgPVxuICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgIGZ1biBfIC0+XG4gICAgICB0cnVlXG4gICAgICBlbHNlXG4gICAgICAgIGZ1biB4IC0+XG4gICAgICBBZ2VudElkU2V0Lm1lbSB4IGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbiA9XG4gICAgICAgICAgQWdlbnRJZFNldC5mb2xkIEFnZW50SWRNYXAucmVtb3ZlIGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb247XG4gICAgICB9XG4gICAgaW5cblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHN1cmVfYWdlbnQgYWdfaWQxXG4gICAgICAgICAgICAgICYmIChub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMSwgc2l0ZV9pZDEpIHByaW9yaXR5X3NpdGVzKSlcbiAgICAgICAgICAgICAgJiYgc3VyZV9hZ2VudCBhZ19pZDJcbiAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDIsIHNpdGVfaWQyKSBwcmlvcml0eV9zaXRlcylcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbWl4X3NpdGUxID0gYWdfaWQxLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICAgIGxldCBtaXhfc2l0ZTIgPSBhZ19pZDIsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgICBhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIG1peF9zaXRlMVxuICAgICAgICAgICAgICAgICAgKGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MgbWl4X3NpdGUyIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBTaXRlSWRTZXQubWVtIG1peF9zaXRlMSBwcmlvcml0eV9zaXRlc1xuICAgICAgICAgICAgICAgICAgfHwgU2l0ZUlkU2V0Lm1lbSBtaXhfc2l0ZTIgcHJpb3JpdHlfc2l0ZXNcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCBhZ19pZDEsIGFnX2lkMiA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGFnX2lkMSA8IGFnX2lkMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgYWdfaWQxLCBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGFnX2lkMiwgYWdfaWQxXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5ID1cbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkMlNldC5hZGQgKGFnX2lkMSwgYWdfaWQyKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfcHJpb3JpdHk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IHRlc3RfbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSBfIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzaXRlMSwgc2l0ZTIpXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudDEgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IGFnZW50MiA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkMSAmJiBzdXJlX2FnZW50IGFnX2lkMiB0aGVuXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rc1xuICAgICAgICAgICAgICAgIChhZ19pZDEsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEpXG4gICAgICAgICAgICAgICAgKGFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rc1xuICAgICAgICAgICAgICAgICAgIChhZ19pZDIsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIpXG4gICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSB0ZXN0IC0+XG4gICAgICAgICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50IGluXG4gICAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3QgdGVzdCBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNpdGVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc2l0ZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHN1cmVfYWdlbnQgYWdfaWRcbiAgICAgICAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgICAgICAgKFNpdGVJZFNldC5tZW1cbiAgICAgICAgICAgICAgICAgICAgICAoYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5zaXRlc19pbl9vdGhlcl9saW5rcylcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5maW5kX29wdGlvbiBzaXRlX2lkMVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGFnX2lkMiAtPlxuICAgICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZCwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lMSA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX25hbWUxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnZW50MiA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBsZXQgYWdlbnRfbmFtZTIgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBsZXQgc2l0ZV9uYW1lMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCB3ZWFrMSA9XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZTEsIChhZ2VudF9uYW1lMiwgc2l0ZV9uYW1lMikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHdlYWsyID1cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlMiwgKGFnZW50X25hbWUxLCBzaXRlX25hbWUxKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICggc3VyZV9hZ2VudCBhZ19pZDFcbiAgICAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDEsIHNpdGVfbmFtZTEpIHByaW9yaXR5X3NpdGVzKSxcbiAgICAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZDJcbiAgICAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDIsIHNpdGVfbmFtZTIpIHByaW9yaXR5X3NpdGVzKSApXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHdlYWsxXG4gICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3Qgd2VhazIgYWdfaWQyXG4gICAgICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZDEsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHdlYWsxIGFnX2lkMVxuICAgICAgICAgICAgICAgIChhZGRfc3VyZV90ZXN0IHdlYWsyXG4gICAgICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZDEsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB3ZWFrMSBhZ19pZDFcbiAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdCB3ZWFrMiBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IHRlc3RfbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSBfIC0+IGFkZF9jcmVhdGVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWdlbnQgLT5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBzaXRlIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgaWYgbWVtX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIHNpdGVfaWQxIGRhdGFfc3RydWN0dXJlIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5maW5kX29wdGlvbiBzaXRlX2lkMVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlc1xuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBhZ19pZDIgLT5cbiAgICAgICAgICAgICAgICBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gKGFnX2lkLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhZGRfc3Vic19hY3Rpb24gYWN0aW9uIGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMilcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQxICYmIHN1cmVfYWdlbnQgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IGFjdGlvbl9saXN0KVxuICAgIGluXG5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSBzaWRlX2VmZmVjdCAtPlxuICAgICAgICAgIGxldCBzaXRlLCBfID0gc2lkZV9lZmZlY3QgaW5cbiAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgIGFkZF9zdXJlX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX3N1YnNfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmUpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIHN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzID1cbiAgICAgICAgICAobGV0IGYgeCBzZXQgPVxuICAgICAgICAgICAgIEFnZW50SWQyTWFwLmZvbGRcbiAgICAgICAgICAgICAgIChmdW4gKGExLCBhMikgXyBzZXQgLT4gQWdlbnRJZFNldC5hZGQgYTEgKEFnZW50SWRTZXQuYWRkIGEyIHNldCkpXG4gICAgICAgICAgICAgICB4IHNldFxuICAgICAgICAgICBpblxuICAgICAgICAgICBmIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzXG4gICAgICAgICAgICAgKGYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfYWN0aW9ucyBBZ2VudElkU2V0LmVtcHR5KSk7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgaW5pdF9zdGVwID0gTm9uZSBpblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICBydWxlX2FnZW50X2lkX3N1YnMsXG4gICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIF8sXG4gICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgQWdlbnRJZE1hcC5mb2xkXG4gICAgICAgIChmdW4geCBsXG4gICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICBydWxlX2FnZW50X2lkX3N1YnMsXG4gICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgLT5cbiAgICAgICAgICAoKiB0aGUgZm9sbG93aW5nIG11dGV4IGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBmYWN0IHRoYXQgdGhlIGFnZW50IHggaW4gdGhlIGxocyBvZiB0aGUgcnVsZSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBleGFjdGVseSBvbmUgYWdlbnQgaW4gdGhlIG1peHR1cmUgKilcbiAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBNdXRleCAoTG9ja19hZ2VudCAoc3RlcF9pZCwgeCkpIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJ1bGVfYWdlbnRfaWRfbXV0ZXggPVxuICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgcnVsZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbGlzdCBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGlmIEFnZW50SWRTZXQubWVtIHggZGF0YV9zdHJ1Y3R1cmUuc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3NcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBQb2ludGVyIChzdGVwX2lkLCB4KSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBydWxlX2FnZW50X2lkX3N1YnMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHggcHJlZGljYXRlX2lkIHJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBydWxlX2FnZW50X2lkX3N1YnMsIGluaXRfc3RlcFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHx8IGRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIklEIG9mIGFnZW50IGluIHRoZSBydWxlOiAlaSwgSUQgb2YgdGhlIGFnZW50IGluIHRoZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmU6ICVpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHggaWRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHNldCcgPSBBZ2VudElkU2V0LmFkZCBpZCBzZXQgaW5cbiAgICAgICAgICAgICAgICBpZiBzZXQgPT0gc2V0JyB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBBZ2VudElkTWFwLm1lbSBpZCBtaXh0dXJlX2FnZW50X2lkX211dGV4IHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAoKiBUaGUgbXV0ZXggaXMgYWxyZWFkeSBkZWNsYXJlZCwgbm90aGluZyB0byBkbyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTXV0ZXggYWxyZWFkeSBleGlzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAoKiBUaGUgbXV0ZXggaGFzIHRvIGJlIGFsbG9jYXRlZCAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ3JlYXRlIE11dGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgTXV0ZXggKExvY2tfcmVjdGFuZ3VsYXIgKHN0ZXBfaWQsIGlkKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgaWQgcHJlZGljYXRlX2lkIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXhcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgKCogVGhlIGFnZW50IGluIHRoZSBtaXh0dXJlIGlzIHNlZW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBubyBuZWVkIGZvciBhIG11dGV4IGZvciB0aGUgbW9tZW50ICopXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHx8IGRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgYWdlbnQgaXMgc2VlbiBmb3IgdGhlIGZpcnN0IHRpbWUsIG5vIG5lZWQgZm9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRleCB5ZXRcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgICAgICBzZXQnLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICBsXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBBZ2VudElkTWFwLmVtcHR5LFxuICAgICAgICAgIEFnZW50SWRNYXAuZW1wdHksXG4gICAgICAgICAgQWdlbnRJZE1hcC5lbXB0eSxcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgQWdlbnRJZFNldC5lbXB0eSxcbiAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgIGluXG4gICAgbGV0IGxpbmtzX211dGV4ID0gQWdlbnRJZDJNYXAuZW1wdHkgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgQWdlbnRJZDJTZXQuZm9sZFxuICAgICAgICAoZnVuIHhcbiAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAtPlxuICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IE11dGV4IChMb2NrX2xpbmtzIChzdGVwX2lkLCB4KSkgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgbGlua3NfbXV0ZXggaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBsaW5rc19tdXRleCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIGxpbmtzX211dGV4O1xuICAgICAgICBydWxlX2FnZW50X2lkX211dGV4O1xuICAgICAgICBydWxlX2FnZW50X2lkX3N1YnM7XG4gICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXg7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICB7IGJsYWNrYm9hcmQgd2l0aCBwcmVfZmljdGl0aW91c19saXN0ID0gZmljdGl0aW91c19saXN0IH1cbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCBfID0gcHJpbnRfZGF0YV9zdHJ1Y3R1cmUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZGF0YV9zdHJ1Y3R1cmUgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZmluZF9kZWZhdWx0IChVbmtub3duLCBVbmtub3duKSBwaWQgbWFwXG4gICAgICBpblxuICAgICAgbGV0IHRlc3QgPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgdGVzdCB0ZXN0JyB0aGVuXG4gICAgICAgICAgdGVzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGVzdCdcbiAgICAgIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgaWYgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGFjdGlvbiBhY3Rpb24nIHRoZW5cbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgaW5cbiAgICAgIG1hcFxuICAgIGluXG4gICAgbGV0IGZhZGQgcGlkIHAgbWFwID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgVW5kZWZpbmVkIHwgRGVmaW5lZCB8IFByZXNlbnQgfCBCb3VuZFxuICAgICAgfCBCb3VuZF90b190eXBlIF8gfCBVbmtub3duIC0+XG4gICAgICAgICgpXG4gICAgICB8IEZyZWUgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBCb3VuZF90byBfIC0+XG4gICAgICAgIGxldCBvbGQgPSBBLmdldCBtYXAgcGlkIGluXG4gICAgICAgIEEuc2V0IG1hcCBwaWQgKEMuYWRkIHAgb2xkKVxuICAgIGluXG5cbiAgICAoKiBkZWFsIHdpdGggY3JlYXRlZCBhZ2VudHMgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzdGVwX2lkID1cbiAgICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzdGVwX2lkXG4gICAgICB8IFNvbWUgbnNpZCAtPlxuICAgICAgICBsZXQgbnNpZCA9IG5zaWQgaW5cbiAgICAgICAgbGV0IG5zaWRfdm9pZCA9IG5zaWQgKyAxIGluXG4gICAgICAgIGxldCBuc2lkX25leHQgPSBuc2lkICsgMSBpblxuICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPSBbXSBpblxuICAgICAgICBsZXQgYWN0aW9uX2xpc3QgPSBkYXRhX3N0cnVjdHVyZS5jcmVhdGVfYWN0aW9ucyBpblxuICAgICAgICBsZXQgdGVzdF9saXN0ID0gW10gaW5cbiAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IFtdIGluXG5cbiAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIF9maWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgX2luaXRfc3RlcCApID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgKHNpdGUsIGJpbmRpbmdfc3RhdGUpIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHBvdGVudGlhbF90YXJnZXQgPVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgc2l0ZSBiaW5kaW5nX3N0YXRlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IFsgbCBdIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IHQgLT4gdCA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IChDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIF9zdGVwX2lkID1cbiAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgIHNpZGVfZWZmZWN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gdHJ1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgYnVpbGRfbWFwIGFjdGlvbl9saXN0IGFjdGlvbl9tYXAsXG4gICAgICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT5cbiAgICAgICAgICAgICAgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgICAgICBtZXJnZWRfbWFwIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICAgICAgaW5cbiAgICAgICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG5zaWRfdm9pZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgICAgIChDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlX3N0ZXBzX2J5X2NvbHVtbiA9XG4gICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlLCBsaXN0ID0gQS5nZXQgbWFwIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIGZhZGQgaWQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWFwKVxuICAgICAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9ic2VydmFibGVfbGlzdCA9XG4gICAgICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICA6OiBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBuc2lkX25leHRcbiAgICAgICAgKVxuICAgIGluXG5cbiAgICAoKioqIGRlYWwgd2l0aCBzdWJzdGl0dXRhYmxlIGFnZW50cyAqKiopXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCA9XG4gICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBydWxlX2FnX2lkIGwgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCkgLT5cbiAgICAgICAgICBsZXQgdGVzdF9saXN0LCBhY3Rpb25fbGlzdCwgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgKCBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3Rlc3RzLFxuICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX2FjdGlvbnMsXG4gICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzIClcbiAgICAgICAgICBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgbmxpc3QpIG1peHR1cmVfYWdfaWQgLT5cbiAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBUcmFjZS5zdWJzX3N0ZXAgcnVsZV9hZ19pZCBtaXh0dXJlX2FnX2lkIGluXG4gICAgICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ19pZClcbiAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYWN0aW9uX2xpc3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5zdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2VmZmVjdCBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IFtdIGluXG4gICAgICAgICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBzaXRlIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdF9zdGVwXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBpZF9ydWxlX2FnZW50X211dGV4ID1cbiAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfbXV0ZXhcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHggLT4gZXJyb3IsIGxvZ19pbmZvLCB4XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgICAgICAgIChGYWlsdXJlIFwiVW5rbm93biBhZ2VudCBpZFwiKSAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkX3J1bGVfYWdlbnRfbXV0ZXggKENvdW50ZXIgMCkgdGVzdF9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gdHJ1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgYnVpbGRfbWFwIGFjdGlvbl9saXN0IGFjdGlvbl9tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGFjdGlvbl9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWRfcnVsZV9hZ2VudF9tdXRleCAoQ291bnRlciAxKSBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0ZXN0X21hcCwgYWN0aW9uX21hcCA9XG4gICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5ydWxlX2FnZW50X2lkX3N1YnNcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIG1faWQgLT5cbiAgICAgICAgICAgICAgICAgICggUHJlZGljYXRlaWRNYXAuYWRkIG1faWQgKENvdW50ZXIgMCkgdGVzdF9tYXAsXG4gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBtX2lkIChQb2ludGVyX3RvX2FnZW50IG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX21hcCApXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IHRlc3RfbWFwLCBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIFRoZSBmb2xsb3dpbmcgYmxvY2sgc2hvdWxkIGJlIGxvZ2dlZCBhbmQgY29ycmVjdGVkICopXG4gICAgICAgICAgICAgICgqIGxldCB0ZXN0X21hcCxhY3Rpb25fbWFwID1cbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUubWl4dHVyZV9hZ2VudF9pZF9tdXRleCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlciAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICBtX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0ZXN0X21hcCxhY3Rpb25fbWFwXG4gICAgICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAsIG5saXN0ID1cbiAgICAgICAgICAgICAgICAoKiBlbnVtZXJhdGlvbiBvZiBwb3RlbnRpYWwgYmluZGluZyBzdGF0ZSwgYWNjb3JkaW5nIHRvIGEgc3Vic3RpdHV0aW9uICopXG4gICAgICAgICAgICAgICAgKCogSWYgdGhlIGV2ZW50IGlzIHNlbGVjdGVkLCBjaGVjayB0aGF0IHRoZSB3aXJlIGVuZCBpbiB0aGUgc3RhdGUgMCopXG4gICAgICAgICAgICAgICAgKCogVW5kZWYtPkNvdW50ZXIgMCA6IG9wZW5pbmcgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiBDb3VudGVyIDAgLT4gQ291bnRlciAxIDogcG90ZW50aWFsIGJpbmRpbmcgdHlwZSAqKVxuICAgICAgICAgICAgICAgICgqID0+IENvdW50ZXIgMSAtPiBDb3VudGVyIDAgOiB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gaXMgYXBwbGllZCAqKVxuICAgICAgICAgICAgICAgICgqIENvdW50ZXIgMCAtPiBVbmRlZiA6IGNsb3NpbmcgZXZlbnQsIGNoZWNrIHRoYXQgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIChvcGVuIGFuZCBjbG9zZWQpLCB0aGVuIGV4YWN0ZWx5IG9uZSBiaW5kaW5nIHN0YXRlIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gKilcbiAgICAgICAgICAgICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQgJiB0aGUgYWNjb3JkaW5nIHN1YnN0aXR1dGlvbiB0YWtlbiwgdGhlbiBtdXR1YWwgZXhjbHVzaW9uIGFtb25nIHRoZSBwb3RlbnRpYWwgYmluZGluZyBzdGF0ZSopXG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hcCwgbmxpc3QpIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICAoIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgQ291bnRlciAwKSBtYXAsXG4gICAgICAgICAgICAgICAgICAgICAgcGlkIDo6IG5saXN0ICkpXG4gICAgICAgICAgICAgICAgICAobWVyZ2VkX21hcCwgbmxpc3QpIGZpY3RpdGlvdXNfbG9jYWxfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAubWFwaVxuICAgICAgICAgICAgICAgICAgKGZ1biBwaWQgKHRlc3QsIGFjdGlvbikgLT5cbiAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBVbmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHBpZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFnX2lkID0gbWl4dHVyZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2l0ZUlkU2V0Lm1lbSAocnVsZV9hZ19pZCwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rc1xuICAgICAgICAgICAgICAgICAgICAgIHwgSGVyZSBfIHwgUG9pbnRlciBfIHwgTXV0ZXggXyB8IExpbmsgXyB8IEludGVybmFsX3N0YXRlIF9cbiAgICAgICAgICAgICAgICAgICAgICB8IEZpY3RpdGlvdXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBVbmtub3duXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBhY3Rpb24pXG4gICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0XG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9raW5kX29mX2V2ZW50IG5zaWQgKHR5cGVfb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgICAgICAgICAgICBwcmVfZmljdGl0aW91c19saXN0ID0gZmljdGl0aW91c19saXN0O1xuICAgICAgICAgICAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdFxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdClcbiAgICAgICAgICAgIGwpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIFtdKVxuICAgIGluXG5cbiAgICAoKiBkZWFsIHdpdGggc3Vic3RpdHV0YWJsZSBhZ2VudCBpbiBsaW5rcyopXG4gICAgbGV0IGYgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZCBzZXQgPVxuICAgICAgQWdlbnRJZDJTZXQuZm9sZFxuICAgICAgICAoZnVuIGxpbmsgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgLT5cbiAgICAgICAgICBsZXQgbGlua19tdXRleCA9XG4gICAgICAgICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLmxpbmtzX211dGV4IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBydWxlX2FnX2lkMSwgcnVsZV9hZ19pZDIgPSBsaW5rIGluXG4gICAgICAgICAgbGV0IGxfYWdfMSA9XG4gICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbIHJ1bGVfYWdfaWQxIF0gcnVsZV9hZ19pZDFcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbF9hZ18yID1cbiAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFsgcnVsZV9hZ19pZDIgXSBydWxlX2FnX2lkMlxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgQWdlbnRJZDJNYXAuZmluZF9kZWZhdWx0IFtdIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICBBZ2VudElkMk1hcC5maW5kX2RlZmF1bHQgW10gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBtaXh0dXJlX2FnXzEgLT5cbiAgICAgICAgICAgICAgbGV0IHN1YnMgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgICAgICAoKiBpZiBydWxlX2FnX2lkMSA9IG1peHR1cmVfYWdfMVxuICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICBzdWJzXG4gICAgICAgICAgICAgICAgICAgZWxzZSopXG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgcnVsZV9hZ19pZDEgbWl4dHVyZV9hZ18xIHN1YnNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIG1peHR1cmVfYWdfMiAtPlxuICAgICAgICAgICAgICAgICAgaWYgcnVsZV9hZ19pZDEgPSBydWxlX2FnX2lkMiA9IChtaXh0dXJlX2FnXzEgPSBtaXh0dXJlX2FnXzIpXG4gICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLmR1bW15X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgICAgIChcIkxJTksgXCIgXiBzdHJpbmdfb2ZfaW50IG1peHR1cmVfYWdfMSBeIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBydWxlX2FnX2lkMSBeIFwiLFwiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBtaXh0dXJlX2FnXzIgXiBcIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgcnVsZV9hZ19pZDIgXiBcIilcIilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgICAgICAgICAgICgqIGlmIHJ1bGVfYWdfaWQyID0gbWl4dHVyZV9hZ18yXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlKilcbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBydWxlX2FnX2lkMiBtaXh0dXJlX2FnXzIgc3Vic1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdF9saXN0LCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgc3VicyA9IEFnZW50SWRNYXAuZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LCBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGYgeCA9IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBzdWJzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdCApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbWFwKSB0ZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBidWlsZF9tYXAgdGVzdF9saXN0IG1hcClcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFByZWRpY2F0ZWlkTWFwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdCApID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwaWQsIHgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBwaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ19pZCA9IG1peHR1cmVfYWdfMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkMSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYWdfaWQgPSBtaXh0dXJlX2FnXzJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2l0ZUlkU2V0Lm1lbSAocnVsZV9hZ19pZDIsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgVW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBwaWQsIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBwaWQsIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZW1wdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgYWN0aW9uKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAoVW5rbm93biwgYWN0aW9uKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbGlua19tdXRleCAoQ291bnRlciAwLCBDb3VudGVyIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIFBvaW50ZXIgLT4gKilcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWQxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ18xLCBVbmtub3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWQyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ18yLCBVbmtub3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgaWYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9raW5kX29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVfb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgbF9hZ18yKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgIGxfYWdfMSlcbiAgICAgICAgc2V0XG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIG90aGVyX2xpbmtzID1cbiAgICAgICAgICBBZ2VudElkMlNldC5kaWZmIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eTtcbiAgICAgIH1cbiAgICBpblxuXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBmIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfcHJpb3JpdHlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgZiBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCByaWdpZCBlbGVtZW50cyAqKVxuICAgIGxldCBzaWRlX2VmZmVjdCA9IGRhdGFfc3RydWN0dXJlLnN1cmVfc2lkZV9lZmZlY3RzIGluXG4gICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGF0YV9zdHJ1Y3R1cmUuY3JlYXRlX2FjdGlvbnMgQCBkYXRhX3N0cnVjdHVyZS5zdXJlX2FjdGlvbnNcbiAgICAgIHwgU29tZSBfIC0+IGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IGRhdGFfc3RydWN0dXJlLnN1cmVfdGVzdHMgaW5cbiAgICBsZXQgZmljdGl0aW91c19saXN0ID0gYmxhY2tib2FyZC5wcmVfZmljdGl0aW91c19saXN0IGluXG5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgIF9pbml0X3N0ZXAgKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzaXRlXG4gICAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgKExvY2tfc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIF9zdGVwX2lkID1cbiAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICB7IGJsYWNrYm9hcmQgd2l0aCBwcmVfbnN0ZXBzID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSB9XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPSBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3QgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLnByZV9uc3RlcHMgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKSAocHJlZGljYXRlX2lkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICBzaWRlX2VmZmVjdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBidWlsZF9tYXAgdGVzdF9saXN0IG1hcClcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgIHRlc3RfbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCkgYWN0aW9uIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT4gYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQsIGNoZWNrIHRoYXQgdGhlIHdpcmUgZW5kIGluIHRoZSBzdGF0ZSAwKilcbiAgICAgICgqIFVuZGVmLT5Db3VudGVyIDAgOiBvcGVuaW5nIGV2ZW50ICopXG4gICAgICAoKiBDb3VudGVyIDAgLT4gQ291bnRlciAxIDogcG90ZW50aWFsIGJpbmRpbmcgdHlwZSAqKVxuICAgICAgKCogQ291bnRlciAxIC0+IENvdW50ZXIgMCA6IHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiBpcyBhcHBsaWVkICopXG4gICAgICAoKiA9PiBDb3VudGVyIDAgLT4gVW5kZWYgOiBjbG9zaW5nIGV2ZW50LCBjaGVjayB0aGF0IGlmIHRoZSBldmVudCBoYXMgYmVlbiBzZWxlY3RlZCAob3BlbiBhbmQgY2xvc2VkKSwgdGhlbiBleGFjdGVseSBvbmUgYmluZGluZyBzdGF0ZSBoYXMgYmVlbiBzZWxlY3RlZCxcbiAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gKilcbiAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCAmIHRoZSBhY2NvcmRpbmcgc3Vic3RpdHV0aW9uIHRha2VuLCB0aGVuIG11dHVhbCBleGNsdXNpb24gYW1vbmcgdGhlIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlKilcbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIHBpZCAtPiBhZGRfc3RhdGUgcGlkIChDb3VudGVyIDAsIFVuZGVmaW5lZCkgbWFwKVxuICAgICAgICBtZXJnZWRfbWFwIG5saXN0XG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IHByZV9ldmVudCBuc2lkIHN0ZXAgaW5cbiAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIEEuc2V0IG1hcCBpZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXApXG4gICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgc3RlcCB0aGVuXG4gICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RlcF9pZCArIDEpXG4gICAgKVxuXG4gIGxldCBhZGRfc3RlcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgc3RlcF9pZCA9XG4gICAgbGV0IGluaXQgPSBUcmFjZS5zdGVwX2lzX2luaXQgc3RlcCBpblxuICAgIGxldCBpbml0X3N0ZXAgPSBOb25lIGluXG4gICAgbGV0IHByZV9ldmVudCA9IGJsYWNrYm9hcmQucHJlX2V2ZW50IGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IFRyYWNlLnRlc3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgc2lkZV9lZmZlY3QgPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgPSBbXSBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZmluZF9kZWZhdWx0IChVbmtub3duLCBVbmtub3duKSBwaWQgbWFwXG4gICAgICBpblxuICAgICAgbGV0IHRlc3QgPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgdGVzdCB0ZXN0JyB0aGVuXG4gICAgICAgICAgdGVzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGVzdCdcbiAgICAgIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgaWYgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGFjdGlvbiBhY3Rpb24nIHRoZW5cbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgaW5cbiAgICAgIG1hcFxuICAgIGluXG4gICAgbGV0IGZhZGQgcGlkIHAgbWFwID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgVW5kZWZpbmVkIHwgRGVmaW5lZCB8IFByZXNlbnQgfCBCb3VuZFxuICAgICAgfCBCb3VuZF90b190eXBlIF8gfCBVbmtub3duIC0+XG4gICAgICAgICgpXG4gICAgICB8IEZyZWUgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBCb3VuZF90byBfIC0+XG4gICAgICAgIGxldCBvbGQgPSBBLmdldCBtYXAgcGlkIGluXG4gICAgICAgIEEuc2V0IG1hcCBwaWQgKEMuYWRkIHAgb2xkKVxuICAgIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICBfaW5pdF9zdGVwICkgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgKHNpdGUsIGJpbmRpbmdfc3RhdGUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc2l0ZVxuICAgICAgICAgICAgICBiaW5kaW5nX3N0YXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBwb3RlbnRpYWxfdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IFsgbCBdIC0+XG4gICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBsaXN0IHQgLT4gdCA6OiBsaXN0KVxuICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IHJ1bGVfYWdfaWQgPVxuICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IChDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPVxuICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgKCBzdGVwX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGZhbHNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT4gYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IHByZV9ldmVudCBuc2lkIHN0ZXAgaW5cbiAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIEEuc2V0IG1hcCBpZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXApXG4gICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgc3RlcCB0aGVuXG4gICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RlcF9pZCArIDEpXG4gICAgKVxuXG4gIGxldCBmaW5hbGl6ZSBoZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGwgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIHwgXyAtPlxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgKGZ1biAoeCwgaW5mbykgLT4gbnNpZCA6OiB4LCBpbmZvKVxuICAgICAgICAgIChMaXN0LnJldiBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3QpXG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX25zdGVwcyA9IG5zaWQ7XG4gICAgICAgICAgcHJlX29ic2VydmFibGVfbGlzdCA9IG9ic2VydmFibGVfbGlzdDtcbiAgICAgICAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlID0gU29tZSBuc2lkO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCkgcHJlZGljYXRlX2lkIC0+XG4gICAgICAgICAgICBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgVW5kZWZpbmVkIFVua25vd24gcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKSBsXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2V0ID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNldCAoc3RlcHMsIF8pIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIHNldCkgZWlkIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBBLmdldCBibGFja2JvYXJkLnByZV9ldmVudCBlaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBhZ2VudHNfaW5fb2JzID1cbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfaW5fb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgQ0kuUG8uSy5BZ2VudElkU2V0LnVuaW9uIHNldCBhZ2VudHNfaW5fb2JzKVxuICAgICAgICAgICAgICBzZXQgc3RlcHMpXG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgQ0kuUG8uSy5BZ2VudElkU2V0LmVtcHR5KVxuICAgICAgICAgIG9ic2VydmFibGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBzZXQgeCA9IENJLlBvLksuQWdlbnRJZFNldC5tZW0geCBzZXQgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgQS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBzdGVwIC0+XG4gICAgICAgICAgICBsZXQgXywgXywgbGV2ZWwgPVxuICAgICAgICAgICAgICBDSS5Qby5LLmxldmVsX29mX2V2ZW50IGhldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIHN0ZXAgc2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfbGV2ZWxfb2ZfZXZlbnQgaSBsZXZlbClcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9ldmVudFxuICAgICAgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBwcmludF9wcmVibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgYWRkX3N0ZXBfdXBfdG9faXNvID0gYWRkX3N0ZXBfc3Ryb25nXG5cbiAgKCoqIGludGVyZmFjZSAqKVxuXG4gIGxldCBuX3ByZWRpY2F0ZXMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQucHJlX25jb2x1bW4gKyAxXG5cbiAgbGV0IGV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfaWQgPVxuICAgIHRyeSBlcnJvciwgbG9nX2luZm8sIHNuZCAoQS5nZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHByZWRpY2F0ZSBpZFwiXG4gICAgICAgIChGYWlsdXJlIFwiZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGVcIikgW11cblxuICBsZXQgbl9ldmVudHNfcGVyX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcHJlZGljYXRlX2lkID1cbiAgICB0cnkgZXJyb3IsIGxvZ19pbmZvLCBmc3QgKEEuZ2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWQpXG4gICAgd2l0aCBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiVW5rbm93biBwcmVkaWNhdGUgaWRcIlxuICAgICAgICAoRmFpbHVyZSBcIm5fZXZlbnRzX3Blcl9wcmVkaWNhdGVcIikgMFxuXG4gIGxldCBuX2V2ZW50cyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMVxuXG4gIGxldCBtYW5kYXRvcnlfZXZlbnRzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcblxuICBsZXQgZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfZmljdGl0aW91c19vYnNlcnZhYmxlXG5cbiAgbGV0IGdldF9zaWRlX2VmZmVjdCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbmVuZFxuIiwiKCoqXG4gICogYmxhY2tib2FyZC5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDExLTA5LTA1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDo0ODozNCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBCbGFja2JvYXJkID0gc2lnXG4gIG1vZHVsZSBQQiA6IEJsYWNrYm9hcmRfZ2VuZXJhdGlvbi5QcmVCbGFja2JvYXJkXG5cbiAgdHlwZSBldmVudF9jYXNlX2FkZHJlc3NcbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4ICopXG5cbiAgdHlwZSBjYXNlX2luZm9cbiAgdHlwZSBjYXNlX3ZhbHVlXG4gIHR5cGUgY2FzZV9hZGRyZXNzXG4gIHR5cGUgcG9pbnRlclxuXG4gICgqKiBibGFja2JvYXJkKilcblxuICB0eXBlIGJsYWNrYm9hcmQgKCpibGFja2JvYXJkLCBvbmNlIGZpbmFsaXplZCopXG4gIHR5cGUgYXNzaWduX3Jlc3VsdFxuXG4gIHZhbCBpc19mYWlsZWQgOiBhc3NpZ25fcmVzdWx0IC0+IGJvb2xcbiAgdmFsIGlzX3N1Y2NlZWRlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgaXNfaWdub3JlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgc3VjY2VzcyA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIGlnbm9yZSA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIGZhaWwgOiBhc3NpZ25fcmVzdWx0XG4gIHZhbCBwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IFBCLnByZWRpY2F0ZV9pZFxuICB2YWwgYnVpbGRfcG9pbnRlciA6IFBCLnN0ZXBfc2hvcnRfaWQgLT4gcG9pbnRlclxuICB2YWwgaXNfYmVmb3JlX2JsYWNrYm9hcmQgOiBwb2ludGVyIC0+IGJvb2xcbiAgdmFsIGdldF9ldmVudCA6IGJsYWNrYm9hcmQgLT4gUEIuc3RlcF9pZCAtPiBUcmFjZS5zdGVwXG4gIHZhbCBnZXRfbl9laWQgOiBibGFja2JvYXJkIC0+IGludFxuICB2YWwgZ2V0X25wcmVkaWNhdGVfaWQgOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWRfYnlfbGV2ZWwgOlxuICAgIGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IFByaW9yaXR5LmxldmVsIC0+IGludFxuXG4gIHZhbCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQgOiBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBpbnRcbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIDogYmxhY2tib2FyZCAtPiBpbnRcblxuICB2YWwgZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCA6XG4gICAgYmxhY2tib2FyZCAtPiBQQi5wcmVkaWNhdGVfaWQgLT4gUEIuc3RlcF9zaG9ydF9pZCBvcHRpb25cblxuICB2YWwgZ2V0X2xhc3RfbGlua2VkX2V2ZW50IDpcbiAgICBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBQQi5zdGVwX3Nob3J0X2lkIG9wdGlvblxuXG4gIHZhbCBnZXRfc3RhY2tfZGVwdGggOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBpc19zZWxlY3RlZF9ldmVudCA6XG4gICAgKFBCLnN0ZXBfaWQsIGJsYWNrYm9hcmQsIGJvb2wgb3B0aW9uKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIDpcbiAgICAoY2FzZV92YWx1ZSwgUEIucHJlZGljYXRlX3ZhbHVlKSBQQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZm9sbG93X3BvaW50ZXJfdXAgOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGV2ZW50X2Nhc2VfYWRkcmVzcykgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBmb2xsb3dfcG9pbnRlcl9kb3duIDpcbiAgICAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCBldmVudF9jYXNlX2FkZHJlc3MpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgaXNfYm91bmRhcnkgOiAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCBib29sKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyA6XG4gICAgUEIucHJlZGljYXRlX2lkIC0+IHBvaW50ZXIgLT4gZXZlbnRfY2FzZV9hZGRyZXNzXG5cbiAgdmFsIGV4aXN0X2Nhc2UgOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGJvb2wgb3B0aW9uKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGdldF9zdGF0aWMgOlxuICAgICggYmxhY2tib2FyZCxcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyxcbiAgICAgIFBCLnN0ZXBfc2hvcnRfaWQgKiBQQi5zdGVwX2lkICogUEIucHJlZGljYXRlX3ZhbHVlICogUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgKVxuICAgIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgc2V0IDpcbiAgICAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCBnZXQgOiAoY2FzZV9hZGRyZXNzLCBibGFja2JvYXJkLCBjYXNlX3ZhbHVlKSBQQi5DSS5Qby5LLkguYmluYXJ5XG4gIHZhbCBkZWMgOiAoY2FzZV9hZGRyZXNzLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIG92ZXJ3cml0ZSA6XG4gICAgKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSwgYmxhY2tib2FyZCwgYmxhY2tib2FyZCkgUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgcmVmaW5lIDpcbiAgICAoIGNhc2VfYWRkcmVzcyxcbiAgICAgIGNhc2VfdmFsdWUsXG4gICAgICBibGFja2JvYXJkLFxuICAgICAgYmxhY2tib2FyZCAqIGFzc2lnbl9yZXN1bHQgKVxuICAgIFBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGJyYW5jaCA6IChibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgdmFsIHJlc2V0X2xhc3RfYnJhbmNoaW5nIDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgcmVzZXRfaW5pdCA6IChibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgaW1wb3J0IDpcbiAgICA/aGV1cmlzdGljOlByaW9yaXR5LnByaW9yaXRpZXMgLT5cbiAgICAoVHJhY2Uuc3RlcCBsaXN0LCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqIGluaXRpYWxpc2F0aW9uKilcblxuICB0eXBlIHJlc3VsdCA9IChUcmFjZS5zdGVwICogUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdCkgbGlzdFxuICAoKiogb3V0cHV0IHJlc3VsdCopXG5cbiAgdmFsIGlzX21heGltYWxfc29sdXRpb24gOiAoYmxhY2tib2FyZCwgYm9vbCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKiBpdGVyYXRpb24qKVxuXG4gIHZhbCB0cmFuc2xhdGVfYmxhY2tib2FyZCA6IChibGFja2JvYXJkLCByZXN1bHQpIFBCLkNJLlBvLksuSC51bmFyeVxuICAoKiogZXhwb3J0aW5nIHJlc3VsdCopXG5cbiAgdmFsIHByaW50X2JsYWNrYm9hcmQgOiAoYmxhY2tib2FyZCwgdW5pdCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKnByZXR0eSBwcmludGluZyopXG5cbiAgdmFsIGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyA6XG4gICAgKHN0cmluZywgaW50LCBpbnQsIGJsYWNrYm9hcmQsIHVuaXQpIFBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5cbiAgdmFsIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgdW5pdCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBwcmludF9zdGFjayA6IChibGFja2JvYXJkLCB1bml0KSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgdmFsIGV4aXN0IDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgYm9vbGVhbiA6IGJvb2wgb3B0aW9uIC0+IGNhc2VfdmFsdWVcbiAgdmFsIHBvaW50ZXJfdG9fcHJldmlvdXMgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBwb2ludGVyX3RvX25leHQgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBwb2ludGVyIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfdmFsdWVcbiAgdmFsIHZhbHVlX2FmdGVyIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBjYXNlX2xpc3Rfb2ZfZWlkIDpcbiAgICAoYmxhY2tib2FyZCwgUEIuc3RlcF9pZCwgZXZlbnRfY2FzZV9hZGRyZXNzIGxpc3QpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgc3RhdGUgOiBQQi5wcmVkaWNhdGVfdmFsdWUgLT4gY2FzZV92YWx1ZVxuICB2YWwgaXNfZXhpc3RfZXZlbnQgOiBQQi5zdGVwX2lkIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgbl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCA6IFByaW9yaXR5LmxldmVsIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgbl91bnJlc29sdmVkX2V2ZW50cyA6IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCA6XG4gICAgZXZlbnRfY2FzZV9hZGRyZXNzIC0+IFByaW9yaXR5LmxldmVsIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcblxuICB2YWwgZm9yY2VkX2V2ZW50cyA6XG4gICAgYmxhY2tib2FyZCAtPiAoUEIuc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3RcblxuICB2YWwgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgOiBibGFja2JvYXJkIC0+IFBCLnN0ZXBfaWQgLT4gUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdFxuXG4gIHZhbCBjdXQgOlxuICAgICggYmxhY2tib2FyZCxcbiAgICAgIFBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIGJsYWNrYm9hcmQgKiBQQi5zdGVwX2lkIGxpc3QgKVxuICAgIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgdGljayA6XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIGJvb2wgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICgqIHRvIGRvOiBtb3ZlIHRvIHRoZSBtb2R1bGUgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cyopXG5cbiAgdmFsIGxldmVsX29mX2V2ZW50IDpcbiAgICAoYmxhY2tib2FyZCwgUEIuc3RlcF9pZCwgUHJpb3JpdHkubGV2ZWwpIFBCLkNJLlBvLksuSC5iaW5hcnlcbmVuZFxuXG5tb2R1bGUgQmxhY2tib2FyZCA6IEJsYWNrYm9hcmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBCID0gQmxhY2tib2FyZF9nZW5lcmF0aW9uLlByZWJsYWNrYm9hcmRcbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4KilcblxuICB0eXBlIGFzc2lnbl9yZXN1bHQgPSBGYWlsIHwgU3VjY2VzcyB8IElnbm9yZVxuICB0eXBlIHBvaW50ZXIgPSBQQi5zdGVwX3Nob3J0X2lkXG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgbGV0IGVycm9yLCBhID1cbiAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBhXG5cbiAgbGV0IHN1Y2Nlc3MgPSBTdWNjZXNzXG4gIGxldCBpZ25vcmUgPSBJZ25vcmVcbiAgbGV0IGZhaWwgPSBGYWlsXG5cbiAgbGV0IGlzX2lnbm9yZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBJZ25vcmUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19mYWlsZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBGYWlsIC0+IHRydWVcbiAgICB8IFN1Y2Nlc3MgfCBJZ25vcmUgLT4gZmFsc2VcblxuICBsZXQgaXNfc3VjY2VlZGVkIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgU3VjY2VzcyAtPiB0cnVlXG4gICAgfCBGYWlsIHwgSWdub3JlIC0+IGZhbHNlXG5cbiAgbGV0IG51bGxfcG9pbnRlciA9IFBCLmR1bW15X3N0ZXBfc2hvcnRfaWRcbiAgbGV0IGlzX251bGxfcG9pbnRlciB4ID0geCA9IG51bGxfcG9pbnRlclxuICBsZXQgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCA9IFBCLnplcm9fc3RlcF9zaG9ydF9pZFxuICBsZXQgaXNfbnVsbF9wb2ludGVyX3N0ZXBfaWQgeCA9IHggPSBQQi5kdW1teV9zdGVwX2lkXG4gIGxldCBpc19iZWZvcmVfYmxhY2tib2FyZCB4ID0geCA9IHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmRcbiAgbGV0IGJ1aWxkX3BvaW50ZXIgaSA9IGlcblxuICB0eXBlIGV2ZW50X2Nhc2VfYWRkcmVzcyA9IHtcbiAgICBjb2x1bW5fcHJlZGljYXRlX2lkOiBQQi5wcmVkaWNhdGVfaWQ7XG4gICAgcm93X3Nob3J0X2V2ZW50X2lkOiBwb2ludGVyO1xuICB9XG5cbiAgbGV0IHByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgeCA9IHguY29sdW1uX3ByZWRpY2F0ZV9pZFxuXG4gIGxldCBpc19ib3VuZGFyeSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIF9ibGFja2JvYXJkIGV2ZW50X2FkZHJlc3MgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgaXNfYmVmb3JlX2JsYWNrYm9hcmQgZXZlbnRfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWRcblxuICBsZXQgYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIHBpZCBzZWlkID1cbiAgICB7IGNvbHVtbl9wcmVkaWNhdGVfaWQgPSBwaWQ7IHJvd19zaG9ydF9ldmVudF9pZCA9IHNlaWQgfVxuXG4gIHR5cGUgY2FzZV9hZGRyZXNzID1cbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIG9mIGludCAqIFByaW9yaXR5LmxldmVsXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBvZiBpbnRcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBvZiBldmVudF9jYXNlX2FkZHJlc3NcbiAgICB8IFZhbHVlX2FmdGVyIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgVmFsdWVfYmVmb3JlIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgUG9pbnRlcl90b19wcmV2aW91cyBvZiBldmVudF9jYXNlX2FkZHJlc3NcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgb2YgUHJpb3JpdHkubGV2ZWxcbiAgICB8IEV4aXN0IG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgS2VlcF9ldmVudCBvZiBQQi5zdGVwX2lkXG5cbiAgbGV0IGlzX2V4aXN0X2V2ZW50IGkgPSBLZWVwX2V2ZW50IGlcblxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaSA9XG4gICAgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaS5jb2x1bW5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIGkgaiA9XG4gICAgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGkuY29sdW1uX3ByZWRpY2F0ZV9pZCwgailcblxuICBsZXQgcG9pbnRlcl90b19uZXh0IGUgPSBQb2ludGVyX3RvX25leHQgZVxuICBsZXQgdmFsdWVfYWZ0ZXIgZSA9IFZhbHVlX2FmdGVyIGVcbiAgbGV0IHZhbHVlX2JlZm9yZSBlID0gVmFsdWVfYmVmb3JlIGVcbiAgbGV0IHBvaW50ZXJfdG9fcHJldmlvdXMgZSA9IFBvaW50ZXJfdG9fcHJldmlvdXMgZVxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50cyA9IE5fdW5yZXNvbHZlZF9ldmVudHNcbiAgbGV0IG5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaSA9IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaVxuICBsZXQgZXhpc3QgZSA9IEV4aXN0IGVcblxuICB0eXBlIGNhc2VfdmFsdWUgPVxuICAgIHwgU3RhdGUgb2YgUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBDb3VudGVyIG9mIGludFxuICAgIHwgUG9pbnRlciBvZiBwb2ludGVyXG4gICAgfCBCb29sZWFuIG9mIGJvb2wgb3B0aW9uXG5cbiAgbGV0IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgU3RhdGUgeCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCJTdGF0ZSEgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgeFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IENvdW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiQ291bnRlciAlaVwiIGlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgICgpXG4gICAgfCBQb2ludGVyIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBcIlBvaW50ZXIgJWlcIlxuICAgICAgICAgIChQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBpKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IEJvb2xlYW4gYiAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiQm9vbGVhbiAlc1wiXG4gICAgICAgICAgKG1hdGNoIGIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgICAgIHwgU29tZSB0cnVlIC0+IFwidHJ1ZVwiXG4gICAgICAgICAgfCBfIC0+IFwiZmFsc2VcIilcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgICgpXG5cbiAgbGV0IHN0cmluZ19vZl9wb2ludGVyIHNlaWQgPVxuICAgIFwiZXZlbnQgc2VpZCBcIiBeIHN0cmluZ19vZl9pbnQgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQpXG5cbiAgbGV0IHByaW50X3BvaW50ZXIgbG9nIHNlaWQgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiAoc3RyaW5nX29mX3BvaW50ZXIgc2VpZClcbiAgbGV0IHN0YXRlIHByZWRpY2F0ZV92YWx1ZSA9IFN0YXRlIHByZWRpY2F0ZV92YWx1ZVxuICBsZXQgcG9pbnRlciBwID0gUG9pbnRlciBwLnJvd19zaG9ydF9ldmVudF9pZFxuICBsZXQgYm9vbGVhbiBiID0gQm9vbGVhbiBiXG5cbiAgbGV0IGNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfYWRkcmVzcyA9XG4gICAgVmFsdWVfYWZ0ZXIgZXZlbnRfYWRkcmVzc1xuXG4gIGxldCBwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV92YWx1ZVxuICAgICAgPVxuICAgIG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgIHwgU3RhdGUgeCAtPiBlcnJvciwgbG9nX2luZm8sIHhcbiAgICB8IENvdW50ZXIgXyB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyAtPlxuICAgICAgbGV0IF8gPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwid3Jvbmcga2luZCBvZiBjYXNlX3ZhbHVlIGluIHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZVwiKSBQQi51bmtub3duXG5cbiAgdHlwZSBhc3NpZ25tZW50ID0gY2FzZV9hZGRyZXNzICogY2FzZV92YWx1ZVxuXG4gIGxldCBib29sX3N0cmljdGx5X21vcmVfcmVmaW5lZCB4IHkgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgU29tZSBfLCBOb25lIC0+IHRydWVcbiAgICB8IF8sIF8gLT4gZmFsc2VcblxuICBsZXQgZyBwIHAyIHBvcyBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5ID1cbiAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IFN0YXRlIHgsIFN0YXRlIHkgLT4gZXJyb3IsIGxvZ19pbmZvLCBwIHggeVxuICAgIHwgQm9vbGVhbiB4LCBCb29sZWFuIHkgLT4gZXJyb3IsIGxvZ19pbmZvLCBwMiB4IHlcbiAgICB8IFN0YXRlIF8sIF8gfCBCb29sZWFuIF8sIF8gfCBDb3VudGVyIF8sIF8gfCBQb2ludGVyIF8sIF8gLT5cbiAgICAgIGxldCBmaWxlLCBsaW5lLCBfLCBfID0gcG9zIGluXG4gICAgICBsZXQgc3RyaW5nID0gZmlsZSBeIFwiLCBsaW5lOiBcIiBeIHN0cmluZ19vZl9pbnQgbGluZSBpblxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zXG4gICAgICAgIH5tZXNzYWdlOlwiQ291bnRlcnMgYW5kL29yIFBvaW50ZXJzIHNob3VsZCBub3QgYmUgY29tcGFyZWRcIlxuICAgICAgICAoRmFpbHVyZSAoc3RyaW5nIF4gXCIgQ29tcGFyaXNvbiBiZXR3ZWVuIHBvaW50ZXJzIGFuZCBjb3VudGVyc1wiKSlcbiAgICAgICAgZmFsc2VcblxuICBsZXQgc3RyaWN0bHlfbW9yZV9yZWZpbmVkID1cbiAgICBnIFBCLnN0cmljdGx5X21vcmVfcmVmaW5lZCBib29sX3N0cmljdGx5X21vcmVfcmVmaW5lZCBfX1BPU19fXG5cbiAgdHlwZSBjYXNlX2luZm9fc3RhdGljID0ge1xuICAgIHJvd19zaG9ydF9pZDogUEIuc3RlcF9zaG9ydF9pZDtcbiAgICBldmVudF9pZDogUEIuc3RlcF9pZDtcbiAgICB0ZXN0OiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gICAgYWN0aW9uOiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gIH1cblxuICB0eXBlIGNhc2VfaW5mb19keW5hbWljID0ge1xuICAgIHBvaW50ZXJfcHJldmlvdXM6IHBvaW50ZXI7XG4gICAgcG9pbnRlcl9uZXh0OiBwb2ludGVyO1xuICAgIHN0YXRlX2FmdGVyOiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gICAgc2VsZWN0ZWQ6IGJvb2wgb3B0aW9uO1xuICB9XG5cbiAgdHlwZSBjYXNlX2luZm8gPSB7IHN0YXRpYzogY2FzZV9pbmZvX3N0YXRpYzsgZHluYW1pYzogY2FzZV9pbmZvX2R5bmFtaWMgfVxuXG4gIGxldCBkdW1teV9jYXNlX2luZm9fc3RhdGljID1cbiAgICB7XG4gICAgICByb3dfc2hvcnRfaWQgPSBQQi5kdW1teV9zdGVwX3Nob3J0X2lkO1xuICAgICAgZXZlbnRfaWQgPSBQQi5kdW1teV9zdGVwX2lkO1xuICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICBhY3Rpb24gPSBQQi51bmtub3duO1xuICAgIH1cblxuICBsZXQgZHVtbXlfY2FzZV9pbmZvX2R5bmFtaWMgPVxuICAgIHtcbiAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBudWxsX3BvaW50ZXI7XG4gICAgICBwb2ludGVyX25leHQgPSBudWxsX3BvaW50ZXI7XG4gICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICBzZWxlY3RlZCA9IE5vbmU7XG4gICAgfVxuXG4gIGxldCBjb3JyZWN0X3BvaW50ZXIgc2VpZCBzaXplID1cbiAgICBsZXQgaW50X3NlaWQgPSBQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBzZWlkIGluXG4gICAgaWYgaW50X3NlaWQgPCAwIHRoZW5cbiAgICAgIHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmRcbiAgICBlbHNlIGlmIGludF9zZWlkID49IHNpemUgdGhlblxuICAgICAgUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgc2l6ZVxuICAgIGVsc2VcbiAgICAgIHNlaWRcblxuICBsZXQgaW5pdF9pbmZvX2R5bmFtaWMgc2VpZCBzaXplID1cbiAgICB7XG4gICAgICBwb2ludGVyX3ByZXZpb3VzID0gY29ycmVjdF9wb2ludGVyIChQQi5kZWNfc3RlcF9zaG9ydF9pZCBzZWlkKSBzaXplO1xuICAgICAgcG9pbnRlcl9uZXh0ID0gY29ycmVjdF9wb2ludGVyIChQQi5pbmNfc3RlcF9zaG9ydF9pZCBzZWlkKSBzaXplO1xuICAgICAgc3RhdGVfYWZ0ZXIgPSBQQi51bmtub3duO1xuICAgICAgc2VsZWN0ZWQgPSBOb25lO1xuICAgIH1cblxuICBsZXQgaW5pdF9pbmZvX3N0YXRpYyBfcF9pZCBzZWlkIChlaWQsIF8sIHRlc3QsIGFjdGlvbikgPVxuICAgIHsgcm93X3Nob3J0X2lkID0gc2VpZDsgZXZlbnRfaWQgPSBlaWQ7IHRlc3Q7IGFjdGlvbiB9XG5cbiAgbGV0IGdldF9laWRfb2ZfdHJpcGxlICh4LCBfLCBfLCBfKSA9IHhcblxuICBsZXQgZHVtbXlfY2FzZV9pbmZvID1cbiAgICB7IHN0YXRpYyA9IGR1bW15X2Nhc2VfaW5mb19zdGF0aWM7IGR5bmFtaWMgPSBkdW1teV9jYXNlX2luZm9fZHluYW1pYyB9XG5cbiAgbGV0IGluaXRfaW5mbyBwX2lkIHNlaWQgc2l6ZSB0cmlwbGUgPVxuICAgIHtcbiAgICAgIHN0YXRpYyA9IGluaXRfaW5mb19zdGF0aWMgcF9pZCBzZWlkIHRyaXBsZTtcbiAgICAgIGR5bmFtaWMgPSBpbml0X2luZm9fZHluYW1pYyBzZWlkIHNpemU7XG4gICAgfVxuXG4gIHR5cGUgc3RhY2sgPSBhc3NpZ25tZW50IGxpc3RcbiAgKCoqIGJsYWNrYm9hcmQgKilcblxuICB0eXBlIGJsYWNrYm9hcmQgPSB7XG4gICAgZXZlbnQ6IFRyYWNlLnN0ZXAgUEIuQS50O1xuICAgIHByZV9jb2x1bW5fbWFwX2ludjogUEIucHJlZGljYXRlX2luZm8gUEIuQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIHdpcmUgaWQgdG8gaXRzIHdpcmUgbGFiZWwgKilcbiAgICBmb3JjZWRfZXZlbnRzOiAoUEIuc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3Q7XG4gICAgbl9wcmVkaWNhdGVfaWQ6IGludDtcbiAgICBuX2VpZDogaW50O1xuICAgIG5fc2VpZDogaW50IFBCLkEudDtcbiAgICBjdXJyZW50X3N0YWNrOiBzdGFjaztcbiAgICBzdGFjazogc3RhY2sgbGlzdDtcbiAgICBibGFja2JvYXJkOiBjYXNlX2luZm8gUEIuQS50IFBCLkEudDtcbiAgICBzZWxlY3RlZF9ldmVudHM6IGJvb2wgb3B0aW9uIFBCLkEudDtcbiAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkOiBpbnQgUEIuQS50O1xuICAgIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWw6IGludCBQQi5BLnQgUHJpb3JpdHkuTGV2ZWxNYXAudDtcbiAgICB1c2VkX3ByZWRpY2F0ZV9pZDogYm9vbCBQQi5BLnQ7XG4gICAgbl91bnJlc29sdmVkX2V2ZW50czogaW50O1xuICAgIG5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWw6IGludCBQcmlvcml0eS5MZXZlbE1hcC50O1xuICAgIGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZDogUEIuc3RlcF9zaG9ydF9pZCBQQi5BLnQ7XG4gICAgZXZlbnRfY2FzZV9saXN0OiBldmVudF9jYXNlX2FkZHJlc3MgbGlzdCBQQi5BLnQ7XG4gICAgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQ6IFBCLkNJLlBvLksuc2lkZV9lZmZlY3QgUEIuQS50O1xuICAgIGZpY3RpdGlvdXNfb2JzZXJ2YWJsZTogUEIuc3RlcF9pZCBvcHRpb247XG4gICAgbGV2ZWxfb2ZfZXZlbnQ6IFByaW9yaXR5LmxldmVsIFBCLkEudDtcbiAgfVxuXG4gIGxldCB0aWNrIHByb2ZpbGluZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy50aWNrIHByb2ZpbGluZ19pbmZvXG5cbiAgbGV0IGxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5sZXZlbF9vZl9ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSApXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIGV2ZW50IGlkXCJcbiAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIGV2ZW50IGlkXCIpIFByaW9yaXR5LmhpZ2hlc3RcblxuICBsZXQgZ2V0X2V2ZW50IGJsYWNrYm9hcmQgayA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgKFBCLmludF9vZl9zdGVwX2lkIGspXG4gIGxldCBnZXRfbl9laWQgYmxhY2tib2FyZCA9IGJsYWNrYm9hcmQubl9laWRcbiAgbGV0IGdldF9zdGFja19kZXB0aCBibGFja2JvYXJkID0gTGlzdC5sZW5ndGggYmxhY2tib2FyZC5zdGFja1xuICBsZXQgZm9yY2VkX2V2ZW50cyBibGFja2JvYXJkID0gYmxhY2tib2FyZC5mb3JjZWRfZXZlbnRzXG5cbiAgbGV0IHNpZGVfZWZmZWN0X29mX2V2ZW50IGJsYWNrYm9hcmQgaSA9XG4gICAgUEIuQS5nZXQgYmxhY2tib2FyZC5zaWRlX2VmZmVjdF9vZl9ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgaSlcblxuICBsZXQgY2FzZV9saXN0X29mX2VpZCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlaWQgPVxuICAgIHRyeVxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnRfY2FzZV9saXN0IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJEZXJlZmVyZW5jaW5nIE51bGwgcG9pbnRlclwiXG4gICAgICAgIChGYWlsdXJlIFwiRGVyZWZlcmVuY2luZyBudWxsIHBvaW50ZXJcIikgW11cblxuICBsZXQgZ2V0X2Nhc2UgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkID1cbiAgICB0cnlcbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBQQi5BLmdldFxuICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzLmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGNhc2VfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWQpIClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJEZXJlZmVyZW5jaW5nIE51bGwgcG9pbnRlclwiXG4gICAgICAgIChGYWlsdXJlIFwiRGVyZWZlcmVuY2luZyBudWxsIHBvaW50ZXJcIikgZHVtbXlfY2FzZV9pbmZvXG5cbiAgbGV0IGdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IHN0YXRpYyA9IGNhc2Uuc3RhdGljIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgKHN0YXRpYy5yb3dfc2hvcnRfaWQsIHN0YXRpYy5ldmVudF9pZCwgc3RhdGljLnRlc3QsIHN0YXRpYy5hY3Rpb24pIClcblxuICBsZXQgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBlaWQsIF8sIF8pID1cbiAgICAgIGdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiRXZlbnQ6ICVpLCBQcmVkaWNhdGU6ICVpQC5cIiAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAocHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyBjYXNlKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIChpLCBqKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBcIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fcHJlZCAlaSAlc0AuXCIgaVxuICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgailcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIFwibl91bnJlc29sdmVkX2V2ZW50c19pbl9wcmVkICVpIEAuXCIgaVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBlIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJQb2ludGVyXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFZhbHVlX2FmdGVyIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlZhbHVlX2FmdGVyICBcIlxuICAgICAgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFZhbHVlX2JlZm9yZSBlIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJWYWx1ZV9iZWZvcmUgXCJcbiAgICAgIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlBvaW50ZXJfYmVmb3JlIFwiXG4gICAgICBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJVbnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCAlc1wiXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiVW5yZXNvbHZlZF9ldmVudHNcIlxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IEV4aXN0IGUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIkV4aXN0IFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBLZWVwX2V2ZW50IGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJLZWVwICVpXCIgKFBCLmludF9vZl9zdGVwX2lkIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBnZXRfbnByZWRpY2F0ZV9pZCBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX3ByZWRpY2F0ZV9pZFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWRfYnlfbGV2ZWwgYmxhY2tib2FyZCBwaWQgbGV2ZWwgPVxuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICB3aXRoXG4gICAgfCBTb21lIHggLT4gUEIuQS5nZXQgeCBwaWRcbiAgICB8IE5vbmUgLT4gMFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQgYmxhY2tib2FyZCBwaWQgPVxuICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCBwaWRcblxuICBsZXQgZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZCA9IGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50c1xuICBsZXQgZ2V0X3BvaW50ZXJfbmV4dCBjYXNlID0gY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dFxuXG4gIGxldCBmb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHsgYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IGNhc2UuZHluYW1pYy5wb2ludGVyX25leHQgfSApXG5cbiAgbGV0IGZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHsgYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIH0gKVxuXG4gIGxldCBnZXRfZmlyc3RfbGlua2VkX2V2ZW50IGJsYWNrYm9hcmQgcGlkID1cbiAgICBpZiBwaWQgPCAwIHx8IHBpZCA+PSBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIFBCLnplcm9fc3RlcF9zaG9ydF9pZFxuXG4gIGxldCBnZXRfbGFzdF9saW5rZWRfZXZlbnQgYmxhY2tib2FyZCBwaWQgPVxuICAgIGlmIHBpZCA8IDAgfHwgcGlkID49IGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWQgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgKFBCLkEuZ2V0IGJsYWNrYm9hcmQubGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkIHBpZClcblxuICAoKipwcmV0dHkgcHJpbnRpbmcqKVxuICBsZXQgcHJpbnRfa25vd25fY2FzZSBsb2cgcHJlZiBpbmYgc3VmIGNhc2UgPVxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzdGVzdDpcIiBwcmVmIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2Uuc3RhdGljLnRlc3QgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiL2VpZDolaS9hY3Rpb246XCJcbiAgICAgICAgKFBCLmludF9vZl9zdGVwX2lkIGNhc2Uuc3RhdGljLmV2ZW50X2lkKVxuICAgIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2Uuc3RhdGljLmFjdGlvbiBpblxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgaW5mIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2UuZHluYW1pYy5zdGF0ZV9hZnRlciBpblxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgc3VmIGluXG4gICAgKClcblxuICBsZXQgcHJpbnRfY2FzZSBsb2cgY2FzZSA9XG4gICAgbGV0IHN0YXR1cyA9IGNhc2UuZHluYW1pYy5zZWxlY3RlZCBpblxuICAgIG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+ICgpXG4gICAgfCBTb21lIHRydWUgLT4gcHJpbnRfa25vd25fY2FzZSBsb2cgXCJcIiBcIiBcIiBcIiBcIiBjYXNlXG4gICAgfCBOb25lIC0+IHByaW50X2tub3duX2Nhc2UgbG9nIFwiPyhcIiBcIikgXCIgXCIgXCIgY2FzZVxuXG4gIGxldCBwcmludF9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGxvZyA9IFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG4gICAgbWF0Y2ggYWRkcmVzcyB3aXRoXG4gICAgfCBLZWVwX2V2ZW50IGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJcyB0aGUgZXZlbnQgJWkgc2VsZWN0ZWQgPyBcIiAoUEIuaW50X29mX3N0ZXBfaWQgaSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBFeGlzdCBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiSXMgdGhlIGNhc2UgXCIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJzZWxlY3RlZCA/IFwiIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaSwgaikgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dcbiAgICAgICAgICBcIk51bWJlciBvZiB1bnJlc29sdmVkIGV2ZW50cyBmb3IgdGhlIHByZWRpY2F0ZSAlaSBhdCBsZXZlbCAlc1wiIGlcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGopXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk51bWJlciBvZiB1bnJlc29sdmVkIGV2ZW50cyBmb3IgdGhlIHByZWRpY2F0ZSAlaVwiIGlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBQb2ludGVyX3RvX25leHQgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlByb2NoYWluIMOpdsOpbmVtZW50IGFnaXNzYW50IHN1ciBcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgIHwgVmFsdWVfYWZ0ZXIgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlZhbGV1ciBhcHLDqHMgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IFZhbHVlX2JlZm9yZSBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiVmFsZXVyIGF2YW50IFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVuZW1lbnQgcHLDqWPDqXNlbnQgYWdpc3NhbnQgc3VyIFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiTm9tYnJlIGQnw6l2w6luZW1lbnRzIG5vbiByw6lzb2x1XCIgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk5vbWJyZSBkJ8OpdsOpbmVtZW50cyBub24gcsOpc29sdSBhdCBsZXZlbCAlc1wiXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgc3RyaW5nX29mX3ZhbHVlIHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSBwYiAtPiBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHBiXG4gICAgfCBDb3VudGVyIGkgLT4gXCJDb3VudGVyIFwiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgfCBQb2ludGVyIGkgLT4gc3RyaW5nX29mX3BvaW50ZXIgaVxuICAgIHwgQm9vbGVhbiBib29sIC0+XG4gICAgICAobWF0Y2ggYm9vbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCI/XCJcbiAgICAgIHwgU29tZSB0cnVlIC0+IFwiWWVzXCJcbiAgICAgIHwgU29tZSBmYWxzZSAtPiBcIk5vXCIpXG5cbiAgbGV0IHByaW50X3ZhbHVlIGxvZyB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgU3RhdGUgcGIgLT4gUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyBwYlxuICAgIHwgQ291bnRlciBpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDb3VudGVyICVpXCIgaVxuICAgIHwgUG9pbnRlciBpIC0+IHByaW50X3BvaW50ZXIgbG9nIGlcbiAgICB8IEJvb2xlYW4gYm9vbCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCJcbiAgICAgICAgKG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCI/XCJcbiAgICAgICAgfCBTb21lIHRydWUgLT4gXCJZZXNcIlxuICAgICAgICB8IFNvbWUgZmFsc2UgLT4gXCJOb1wiKVxuXG4gIGxldCBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIChhZGRyZXNzLCB2YWx1ZSkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgIHByaW50X2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgaW5cbiAgICBsZXQgXyA9IHByaW50X3ZhbHVlIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgdmFsdWUgaW5cbiAgICBlcnJvciwgbG9nX2luZm9cblxuICBsZXQgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipCTEFDS0JPQVJEKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVpIHdpcmVzLCAlaSBldmVudHNcIiBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkXG4gICAgICAgIGJsYWNrYm9hcmQubl9laWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndpcmVzOipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgZXJyID0gcmVmIGVycm9yIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBCLkEuaXRlcmlcbiAgICAgICAgKGZ1biBpIGFycmF5IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVpXCIgaSBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgUEIuQS5nZXQgYmxhY2tib2FyZC51c2VkX3ByZWRpY2F0ZV9pZCBpIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndpcmVzICVpOiBcIiBpIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYyBhdXggaiBlcnJvciA9XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogJWk6XCIgaiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2FzZSA9IFBCLkEuZ2V0IGFycmF5IGogaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlIGxvZyBjYXNlIGluXG4gICAgICAgICAgICAgICAgbGV0IGonID0gZ2V0X3BvaW50ZXJfbmV4dCBjYXNlIGluXG4gICAgICAgICAgICAgICAgbGV0IGonID0gUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgaicgaW5cbiAgICAgICAgICAgICAgICBpZiBqID0gaicgdGhlblxuICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhdXggaicgZXJyb3JcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgICBhdXggKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmQpICFlcnJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF8gPSBlcnIgOj0gZXJyb3IgaW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC5ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPSAhZXJyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIipzdGFja3MqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIC0+XG4gICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoTGlzdC5yZXYgYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrKVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgc3RhY2sgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8pIHN0YWNrXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKSBibGFja2JvYXJkLnN0YWNrXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKnNlbGVjdGVkX2V2ZW50cypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIGkgYm9vbCAtPlxuICAgICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiICBFdmVudDolaSAoJXMpXCIgaVxuICAgICAgICAgICAgICAgIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICBcIktFUFRcIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgXCJSRU1PVkVEXCIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqdW5zb2x2ZWRfZXZlbnRzKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgJWlcIiBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHMgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip3ZWlnaHQgb2YgcHJlZGljYXRlX2lkKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gYSBiIC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiAlaTolaVwiIGEgYiBpblxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cpXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip3ZWlnaHQgb2YgcHJlZGljYXRlX2lkX2J5X2xldmVsKlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLml0ZXJcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgTGV2ZWw6JXNcIiAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGwpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgUEIuQS5pdGVyaSAoZnVuIGEgYiAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiICVpOiVpXCIgYSBiIGluXG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cpKVxuICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICAoKiogcHJvcGFnYXRpb24gcmVxdWVzdCAqKVxuXG4gIGxldCBhZGRfZXZlbnQgZWlkIChwaWQsIHNlaWQpIGFycmF5IGxldmVsIHVuc29sdmVkID1cbiAgICBsZXQgZXZlbnRfY2FzZV9hZGRyZXNzID0gYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIHBpZCBzZWlkIGluXG4gICAgbGV0IG9sZCA9IFBCLkEuZ2V0IGFycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIGluXG4gICAgbGV0IHVuc29sdmVkID1cbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLmFkZCBsZXZlbFxuICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbGV2ZWwgdW5zb2x2ZWQgKyAxKVxuICAgICAgICB1bnNvbHZlZFxuICAgIGluXG4gICAgUEIuQS5zZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgKGV2ZW50X2Nhc2VfYWRkcmVzcyA6OiBvbGQpLCB1bnNvbHZlZFxuXG4gIGxldCBlbXB0eV9zdGFjayA9IFtdXG5cbiAgbGV0IGltcG9ydCA/aGV1cmlzdGljOl8gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5fcHJlZGljYXRlcyA9XG4gICAgICBQQi5uX3ByZWRpY2F0ZXMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5fZXZlbnRzID1cbiAgICAgIFBCLm5fZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSBbXSBpblxuICAgIGxldCBjdXJyZW50X3N0YWNrID0gZW1wdHlfc3RhY2sgaW5cbiAgICBsZXQgZXZlbnRfY2FzZV9saXN0ID0gUEIuQS5tYWtlIG5fZXZlbnRzIFtdIGluXG4gICAgbGV0IG5fc2VpZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgMCBpblxuICAgIGxldCB1bnNvbHZlZF9ieV9sZXZlbCA9IFByaW9yaXR5LkxldmVsTWFwLmVtcHR5IGluXG4gICAgbGV0IGJsYWNrYm9hcmQgPSBQQi5BLm1ha2Ugbl9wcmVkaWNhdGVzIChQQi5BLm1ha2UgMSBkdW1teV9jYXNlX2luZm8pIGluXG4gICAgbGV0IHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWwgPVxuICAgICAgbGV0IHJlYyBhdXggbGV2ZWxfb3B0IG1hcCA9XG4gICAgICAgIG1hdGNoIGxldmVsX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYXBcbiAgICAgICAgfCBTb21lIGxldmVsIC0+XG4gICAgICAgICAgYXV4IChQcmlvcml0eS5oaWdoZXIgbGV2ZWwpXG4gICAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsIChQQi5BLm1ha2UgMCAwKSBtYXApXG4gICAgICBpblxuICAgICAgYXV4IChTb21lIFByaW9yaXR5Lmxvd2VzdCkgUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHlcbiAgICBpblxuICAgIGxldCBpbmNfZGVwdGggbGV2ZWwgcF9pZCA9XG4gICAgICBtYXRjaFxuICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsXG4gICAgICB3aXRoXG4gICAgICB8IFNvbWUgYSAtPlxuICAgICAgICBsZXQgb2xkID0gdHJ5IFBCLkEuZ2V0IGEgcF9pZCB3aXRoIE5vdF9mb3VuZCAtPiAwIGluXG4gICAgICAgIFBCLkEuc2V0IGEgcF9pZCAob2xkICsgMSlcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG5cbiAgICBsZXQgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCA9IFBCLkEubWFrZSAwIDAgaW5cbiAgICBsZXQgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkID1cbiAgICAgIFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgUEIuemVyb19zdGVwX3Nob3J0X2lkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGxldCByZWMgYXV4MSBwX2lkIGxvZ19pbmZvIGVycm9yID1cbiAgICAgICAgaWYgcF9pZCA8IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzaXplID1cbiAgICAgICAgICAgIFBCLm5fZXZlbnRzX3Blcl9wcmVkaWNhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgcF9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHNpemUgPSBzaXplICsgMSBpblxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIFBCLkEuc2V0IGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZCBwX2lkXG4gICAgICAgICAgICAgIChQQi5zdGVwX3Nob3J0X2lkX29mX2ludCAoc2l6ZSAtIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkIHBfaWQgKHNpemUgLSAyKSBpblxuICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgbl9zZWlkIHBfaWQgc2l6ZSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgUEIuZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgcF9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFycmF5ID0gUEIuQS5tYWtlIHNpemUgZHVtbXlfY2FzZV9pbmZvIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBibGFja2JvYXJkIHBfaWQgYXJyYXkgaW5cbiAgICAgICAgICBsZXQgcmVjIGF1eDIgc2VpZCBsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZHluYW1pYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3ByZXZpb3VzID0gUEIuemVyb19zdGVwX3Nob3J0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfbmV4dCA9IFBCLmluY19zdGVwX3Nob3J0X2lkIFBCLnplcm9fc3RlcF9zaG9ydF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9hZnRlciA9IFBCLnVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IFNvbWUgdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHN0YXRpYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICByb3dfc2hvcnRfaWQgPSBQQi56ZXJvX3N0ZXBfc2hvcnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfaWQgPSBQQi5kdW1teV9zdGVwX2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHRlc3QgPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGFycmF5IDAgaW5mbyBpblxuICAgICAgICAgICAgICBsZXQgcHJlZF9zaXplID1cbiAgICAgICAgICAgICAgICBQQi5kZWNfc3RlcF9zaG9ydF9pZCAoUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgc2l6ZSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGR5bmFtaWMgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9wcmV2aW91cyA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX25leHQgPSBwcmVkX3NpemU7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGVfYWZ0ZXIgPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gU29tZSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc3RhdGljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd19zaG9ydF9pZCA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgYXJyYXkgKHNpemUgLSAxKSBpbmZvIGluXG4gICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICB8IHRyaXBsZSA6OiBxIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID0gaW5pdF9pbmZvIHBfaWQgc2VpZCAoc2l6ZSAtIDEpIHRyaXBsZSBpblxuICAgICAgICAgICAgICBsZXQgZWlkID0gZ2V0X2VpZF9vZl90cmlwbGUgdHJpcGxlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIF9ldmVudHMgPVxuICAgICAgICAgICAgICAgIFBCLmdldF9wcmVfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF9lcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICAgICAgICBQQi5nZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIHByZV9ibGFja2JvYXJkIGVpZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBpbmNfZGVwdGggbGV2ZWwgcF9pZCBpblxuICAgICAgICAgICAgICBsZXQgKCksIF8gPVxuICAgICAgICAgICAgICAgIGFkZF9ldmVudCBlaWQgKHBfaWQsIHNlaWQpIGV2ZW50X2Nhc2VfbGlzdCBsZXZlbFxuICAgICAgICAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gUEIuQS5zZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQpIGluZm8gaW5cbiAgICAgICAgICAgICAgYXV4MiAoUEIuZGVjX3N0ZXBfc2hvcnRfaWQgc2VpZCkgcSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIGF1eDIgKFBCLnN0ZXBfc2hvcnRfaWRfb2ZfaW50IChzaXplIC0gMikpIGxpc3QgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eDEgKHBfaWQgLSAxKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4MSAobl9wcmVkaWNhdGVzIC0gMSkgbG9nX2luZm8gZXJyb3JcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZvcmNlZF9ldmVudHMgPVxuICAgICAgUEIubWFuZGF0b3J5X2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnQgPVxuICAgICAgUEIuZ2V0X3ByZV9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdW5zb2x2ZWRfYnlfbGV2ZWwgPVxuICAgICAgbGV0IHJlYyBhdXggayBlcnJvciBsb2dfaW5mbyBtYXAgPVxuICAgICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBtYXBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgICAgUEIuZ2V0X2xldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIHByZV9ibGFja2JvYXJkIChQQi5zdGVwX2lkX29mX2ludCBrKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWxcbiAgICAgICAgICAgICAgKFByaW9yaXR5LkxldmVsTWFwLmZpbmRfZGVmYXVsdCAwIGxldmVsIG1hcCArIDEpXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChrIC0gMSkgZXJyb3IgbG9nX2luZm8gbWFwXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggbl9ldmVudHMgZXJyb3IgbG9nX2luZm8gdW5zb2x2ZWRfYnlfbGV2ZWxcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNpZGVfZWZmZWN0cyA9XG4gICAgICBQQi5nZXRfc2lkZV9lZmZlY3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZpY3RpdGlvdXNfb2JzID1cbiAgICAgIFBCLmdldF9maWN0aXRpb3VzX29ic2VydmFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBiID1cbiAgICAgIHtcbiAgICAgICAgZXZlbnQ7XG4gICAgICAgIHNpZGVfZWZmZWN0X29mX2V2ZW50ID0gc2lkZV9lZmZlY3RzO1xuICAgICAgICBwcmVfY29sdW1uX21hcF9pbnYgPSBQQi5nZXRfcHJlX2NvbHVtbl9tYXBfaW52IHByZV9ibGFja2JvYXJkO1xuICAgICAgICBsZXZlbF9vZl9ldmVudCA9IFBCLmxldmVscyBwcmVfYmxhY2tib2FyZDtcbiAgICAgICAgZm9yY2VkX2V2ZW50cztcbiAgICAgICAgbl9laWQgPSBuX2V2ZW50cztcbiAgICAgICAgbl9zZWlkO1xuICAgICAgICBldmVudF9jYXNlX2xpc3Q7XG4gICAgICAgIGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZDtcbiAgICAgICAgbl9wcmVkaWNhdGVfaWQgPSBuX3ByZWRpY2F0ZXM7XG4gICAgICAgIGN1cnJlbnRfc3RhY2s7XG4gICAgICAgIHN0YWNrO1xuICAgICAgICBibGFja2JvYXJkO1xuICAgICAgICBzZWxlY3RlZF9ldmVudHMgPSBQQi5BLm1ha2Ugbl9ldmVudHMgTm9uZTtcbiAgICAgICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZDtcbiAgICAgICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbDtcbiAgICAgICAgdXNlZF9wcmVkaWNhdGVfaWQgPSBQQi5BLm1ha2Ugbl9wcmVkaWNhdGVzIHRydWU7XG4gICAgICAgIG5fdW5yZXNvbHZlZF9ldmVudHMgPSBuX2V2ZW50cztcbiAgICAgICAgbl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbCA9IHVuc29sdmVkX2J5X2xldmVsO1xuICAgICAgICBmaWN0aXRpb3VzX29ic2VydmFibGUgPSBmaWN0aXRpb3VzX29icztcbiAgICAgIH1cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYlxuXG4gIGxldCBleGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpbmZvID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGluZm8uZHluYW1pYy5zZWxlY3RlZFxuXG4gIGxldCBzZXRfY2FzZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgIGJsYWNrYm9hcmQgPVxuICAgIHRyeVxuICAgICAgbGV0IF8gPVxuICAgICAgICBQQi5BLnNldFxuICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzLmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGNhc2VfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBibGFja2JvYXJkXG5cbiAgbGV0IHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkID1cbiAgICBtYXRjaCBjYXNlX2FkZHJlc3Mgd2l0aFxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGludCwgbGV2ZWwpIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50MiAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9vcHRpb24gbGV2ZWxcbiAgICAgICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICBsZXQgKCkgPSBQQi5BLnNldCBhIGludCBpbnQyIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgIHwgUG9pbnRlciBfIHwgU3RhdGUgXyB8IEJvb2xlYW4gXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpbnQgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBfID0gUEIuQS5zZXQgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkIGludCBpbnQyIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgUG9pbnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBwb2ludGVyX25leHQgPSBpbnQyIH0gfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgQ291bnRlciBfIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBWYWx1ZV9hZnRlciBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgU3RhdGUgc3RhdGUgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHN0YXRlX2FmdGVyID0gc3RhdGUgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBCb29sZWFuIF8gfCBDb3VudGVyIF8gfCBQb2ludGVyIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwic2V0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdmFsdWVfYWZ0ZXJcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFZhbHVlX2JlZm9yZSBfY2FzZV9hZGRyZXNzIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwic2V0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdmFsdWVfYmVmb3JlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgYmxhY2tib2FyZFxuICAgIHwgUG9pbnRlcl90b19wcmV2aW91cyBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgUG9pbnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBwb2ludGVyX3ByZXZpb3VzID0gaW50MiB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gfCBDb3VudGVyIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJzZXQsIGxpbmUgODk2LCBJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50IC0+XG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggbl91bnJlc29sdmVkX2V2ZW50cyA9IGludCB9XG4gICAgICB8IEJvb2xlYW4gXyB8IFBvaW50ZXIgXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJzZXQsIGxpbmUgOTA1LCBJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGxldmVsIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50IC0+XG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBuX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsID1cbiAgICAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsIGludFxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbDtcbiAgICAgICAgICB9IClcbiAgICAgIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyB8IFBvaW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBLZWVwX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBQQi5BLnNldCBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyAoUEIuaW50X29mX3N0ZXBfaWQgc3RlcF9pZCkgYlxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgUG9pbnRlciBfIHwgU3RhdGUgXyB8IENvdW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBFeGlzdCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBzZWxlY3RlZCA9IGIgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBDb3VudGVyIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcblxuICBsZXQgaXNfc2VsZWN0ZWRfZXZlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2lkIGJsYWNrYm9hcmQgPVxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSApXG5cbiAgbGV0IHJlYyBnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNhc2VfYWRkcmVzcyB3aXRoXG4gICAgfCBLZWVwX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBCb29sZWFuXG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSkgKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGludCwgbGV2ZWwpIC0+XG4gICAgICBsZXQgbiA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9vcHRpb24gbGV2ZWxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IFBCLkEuZ2V0IGEgaW50XG4gICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDb3VudGVyIG5cbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGludCAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDb3VudGVyIChQQi5BLmdldCBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWQgaW50KVxuICAgIHwgRXhpc3QgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEJvb2xlYW4gY2FzZS5keW5hbWljLnNlbGVjdGVkXG4gICAgfCBQb2ludGVyX3RvX25leHQgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFBvaW50ZXIgY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dFxuICAgIHwgVmFsdWVfYWZ0ZXIgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0YXRlIGNhc2UuZHluYW1pYy5zdGF0ZV9hZnRlclxuICAgIHwgVmFsdWVfYmVmb3JlIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IHBvaW50ZXIgPSBjYXNlLmR5bmFtaWMucG9pbnRlcl9wcmV2aW91cyBpblxuICAgICAgaWYgaXNfbnVsbF9wb2ludGVyIHBvaW50ZXIgdGhlblxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJWYWx1ZSBiZWZvcmUgYW4gdW5leGlzdGluZyBlbGVtZW50IHJlcXVlc3RlZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJWYWx1ZSBiZWZvcmUgYW4gdW5leGlzdGluZyBlbGVtZW50IHJlcXVlc3RlZFwiKVxuICAgICAgICAgIChTdGF0ZSBQQi51bmRlZmluZWQpXG4gICAgICBlbHNlXG4gICAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChWYWx1ZV9hZnRlciB7IGNhc2VfYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IHBvaW50ZXIgfSlcbiAgICAgICAgICBibGFja2JvYXJkXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBQb2ludGVyIGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGx2bCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIENvdW50ZXJcbiAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbHZsXG4gICAgICAgICAgICAgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsKSApXG5cbiAgbGV0IGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVmaXggaW50IGludDJcbiAgICAgIGJsYWNrYm9hcmQgPVxuICAgIGxldCBmaWxlX25hbWUgPVxuICAgICAgcHJlZml4IF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGludCBeIFwiX1wiIF4gc3RyaW5nX29mX2ludCBpbnQyIF4gXCIuc3h3XCJcbiAgICBpblxuICAgIGxldCBkZXNjX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBmaWxlX25hbWUgaW5cbiAgICBsZXQgZGVzYyA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuWExTIGRlc2NfY2hhbiBpblxuICAgIGxldCBwYXJhbWV0ZXIgPSBQQi5DSS5Qby5LLkguc2V0X2xvZ2dlciBwYXJhbWV0ZXIgZGVzYyBpblxuICAgIGxldCBuY29sdW1uc19sZWZ0ID0gMyBpblxuICAgIGxldCBucm93c19oZWFkID0gMiBpblxuICAgIGxldCByb3dfb2ZfcHJlY29uZGl0aW9uIGVpZCA9IG5yb3dzX2hlYWQgKyAoMyAqIGVpZCkgaW5cbiAgICBsZXQgcm93X29mX3Bvc3Rjb25kaXRpb24gZWlkID0gMSArIHJvd19vZl9wcmVjb25kaXRpb24gZWlkIGluXG4gICAgbGV0IGNvbHVtbl9vZl9waWQgcGlkID0gcGlkICsgbmNvbHVtbnNfbGVmdCBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiUkVNICAqKioqKiAgQkFTSUMgICoqKioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCBjb2xvcnMgPSBQQi5BLm1ha2UgYmxhY2tib2FyZC5uX2VpZCBOb25lIGluXG4gICAgbGV0IGJhY2tjb2xvciBsb2cgY29sb3IgPVxuICAgICAgbWF0Y2ggY29sb3Igd2l0aFxuICAgICAgfCBTb21lIGNvbG9yIC0+XG4gICAgICAgIGxldCByLCBnLCBiID0gQ29sb3IudHJpcGxlX29mX2NvbG9yIGNvbG9yIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLkNlbGxCYWNrQ29sb3IgPSBSR0IoJWksJWksJWkpXCIgciBnIGIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAoKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgdGV4dGNvbG9yIGxvZyBjb2xvciA9XG4gICAgICBtYXRjaCBjb2xvciB3aXRoXG4gICAgICB8IFNvbWUgY29sb3IgLT5cbiAgICAgICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgY29sb3IgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuQ2hhckNvbG9yID0gUkdCKCVpLCVpLCVpKVwiIHIgZyBiIGluXG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IGdldGNlbGwgbG9nIHJvdyBjb2wgPVxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMgPSBTLmdldENlbGxCeVBvc2l0aW9uKCVpLCVpKVwiIGNvbCByb3cgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgICBpblxuICAgIGxldCBvdmVybGluZV9jYXNlIGxvZyByb3cgX2NvbCBfY29sb3IgPVxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlI9Uy5Sb3dzKCVpKVwiIHJvdyBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlIuVG9wQm9yZGVyID0gd2l0aEJvcmRcIiBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgIGluXG4gICAgbGV0IHByaW50X2Nhc2UgbG9nIHJvdyBjb2wgY29sb3JfZm9udCBjb2xvcl9iYWNrIHN0cmluZyA9XG4gICAgICBpZiBzdHJpbmcgPD4gXCJcIiB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gZ2V0Y2VsbCBsb2cgcm93IGNvbCBpblxuICAgICAgICBsZXQgKCkgPSB0ZXh0Y29sb3IgbG9nIGNvbG9yX2ZvbnQgaW5cbiAgICAgICAgbGV0ICgpID0gYmFja2NvbG9yIGxvZyBjb2xvcl9iYWNrIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLnNldEZvcm11bGEoXFxcIiVzXFxcIilcIiBzdHJpbmcgaW5cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgICAgKVxuICAgIGluXG4gICAgbGV0IHByaW50X2Nhc2VfZnVuIGxvZyByb3cgY29sIGNvbG9yX2ZvbnQgY29sb3JfYmFjayBmIGVycm9yID1cbiAgICAgIGxldCAoKSA9IGdldGNlbGwgbG9nIHJvdyBjb2wgaW5cbiAgICAgIGxldCAoKSA9IHRleHRjb2xvciBsb2cgY29sb3JfZm9udCBpblxuICAgICAgbGV0ICgpID0gYmFja2NvbG9yIGxvZyBjb2xvcl9iYWNrIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQy5zZXRGb3JtdWxhKFxcXCJcIiBpblxuICAgICAgbGV0IGVycm9yID0gZiBlcnJvciBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlxcXCIpXCIgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgIGVycm9yXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIlN1YiBNYWluXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgQ29sb3IuQmxhY2sgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJEaW0gd2l0aEJvcmQgQXMgTmV3IGNvbS5zdW4uc3Rhci50YWJsZS5Cb3JkZXJMaW5lXCJcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiV2l0aCB3aXRoQm9yZCB3aXRoQm9yZC5Db2xvciA9IFJHQiglaSwlaSwlaSlcIiByIGcgYlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIndpdGhCb3JkLk91dGVyTGluZVdpZHRoID0gNjBcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJFbmQgV2l0aFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIlMgPSBUaGlzQ29tcG9uZW50LlNoZWV0cygwKVwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgXyA9XG4gICAgICBtYXRjaCBmb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgfCBbIChsaXN0LCBfKSBdIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gZWlkIC0+IFBCLkEuc2V0IGNvbG9ycyAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSAoU29tZSBDb2xvci5SZWQpKVxuICAgICAgICAgIGxpc3RcbiAgICAgIHwgXyAtPiAoKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIHBpZCBwX2luZm8gLT5cbiAgICAgICAgICBwcmludF9jYXNlX2Z1biBkZXNjIDAgKGNvbHVtbl9vZl9waWQgcGlkKSBOb25lIE5vbmVcbiAgICAgICAgICAgIChmdW4gX2Vycm9yIC0+IFBCLnByaW50X3ByZWRpY2F0ZV9pbmZvIGRlc2MgcF9pbmZvKVxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52XG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBlaWQgZXJyb3IgbG9nX2luZm8gc3RhY2sgPVxuICAgICAgaWYgZWlkID49IGJsYWNrYm9hcmQubl9laWQgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICBjYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIChQQi5zdGVwX2lkX29mX2ludCBlaWQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByb3dfcHJlY29uZGl0aW9uID0gcm93X29mX3ByZWNvbmRpdGlvbiBlaWQgaW5cbiAgICAgICAgbGV0IHJvd19wb3N0Y29uZGl0aW9uID0gcm93X29mX3Bvc3Rjb25kaXRpb24gZWlkIGluXG4gICAgICAgIGxldCBjb2xvciwgbWF5YmVrZXB0ID1cbiAgICAgICAgICBtYXRjaCBQQi5BLmdldCBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyBlaWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBQQi5BLmdldCBjb2xvcnMgZWlkLCB0cnVlXG4gICAgICAgICAgfCBTb21lIHRydWUgLT4gU29tZSBDb2xvci5SZWQsIHRydWVcbiAgICAgICAgICB8IFNvbWUgZmFsc2UgLT4gU29tZSBDb2xvci5HcmV5LCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGF1eDIgZiBnIGwgZXJyb3IgbG9nX2luZm8gPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgb3ZlcmxpbmVfY2FzZSBkZXNjIHJvd19wb3N0Y29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcHJlY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmUgY29sb3IgKGYgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcG9zdGNvbmRpdGlvblxuICAgICAgICAgICAgICAgIChjb2x1bW5fb2ZfcGlkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAgICAgICBOb25lIGNvbG9yIChnIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIG1heWJla2VwdCB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB2YWx1ZV9iZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAodmFsdWVfYmVmb3JlIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3RyaW5nX29mX3ZhbHVlIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGVycm9yLCBsb2dfaW5mbywgXCJVbmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIChyb3dfcHJlY29uZGl0aW9uIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAoU29tZSBDb2xvci5MaWdodGJsdWUpIE5vbmUgdmFsdWVfYmVmb3JlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB2YWx1ZV9hZnRlciA9XG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yICh2YWx1ZV9hZnRlciB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHN0cmluZ19vZl92YWx1ZSBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBlcnJvciwgbG9nX2luZm8sIFwiVW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyAocm93X3Bvc3Rjb25kaXRpb24gKyAxKVxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgIChTb21lIENvbG9yLkxpZ2h0Ymx1ZSkgTm9uZSB2YWx1ZV9hZnRlclxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eDIgZiBnIHEgZXJyb3IgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByaW50X3Rlc3QgdCA9XG4gICAgICAgICAgbGV0IGNvbHVtbiA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBsZXQgY2FzZSA9XG4gICAgICAgICAgICBQQi5BLmdldCBjb2x1bW4gKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHQucm93X3Nob3J0X2V2ZW50X2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUEIuc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBjYXNlLnN0YXRpYy50ZXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmludF9hY3Rpb24gdCA9XG4gICAgICAgICAgbGV0IGNvbHVtbiA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBsZXQgY2FzZSA9XG4gICAgICAgICAgICBQQi5BLmdldCBjb2x1bW4gKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHQucm93X3Nob3J0X2V2ZW50X2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUEIuc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBjYXNlLnN0YXRpYy5hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0cmluZ19laWQgZXJyb3IgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9hc19sb2dnZXIgZGVzYyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgIFRyYWNlLnByaW50X3N0ZXAgfmNvbXBhY3Q6dHJ1ZSB+ZW52OmhhbmRsZXIuUEIuQ0kuUG8uSy5ILmVudiBmXG4gICAgICAgICAgICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmV2ZW50IGVpZCkpXG4gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkV2ZW50OiVpXCIgZWlkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93X3ByZWNvbmRpdGlvbiAxIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb24gMSBOb25lIGNvbG9yIHN0cmluZ19laWQgZXJyb3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZSBkZXNjIHJvd19wcmVjb25kaXRpb24gMiBOb25lIGNvbG9yIFwiUFJFQ09ORElUSU9OXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9jYXNlIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb24gMiBOb25lIGNvbG9yIFwiUE9TVENPTkRJVElPTlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGF1eDIgcHJpbnRfdGVzdCBwcmludF9hY3Rpb24gbGlzdCBlcnJvciBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgY2FuZCA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkIGluXG4gICAgICAgICAgICBUcmFjZS5zdGVwX2lzX3J1bGUgY2FuZCB8fCBUcmFjZS5zdGVwX2lzX3BlcnQgY2FuZFxuICAgICAgICAgICAgfHwgVHJhY2Uuc3RlcF9pc19vYnMgY2FuZCB8fCBUcmFjZS5zdGVwX2lzX2luaXQgY2FuZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgc3RhY2sgPVxuICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gZXJyb3Igcm93IC0+XG4gICAgICAgICAgICAgICAgICBwcmludF9jYXNlX2Z1biBkZXNjIHJvdyAwIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvcilcbiAgICAgICAgICAgICAgICBlcnJvciAoTGlzdC5yZXYgc3RhY2spXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIFtdXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgcm93X3ByZWNvbmRpdGlvbiA6OiByb3dfcG9zdGNvbmRpdGlvbiA6OiBzdGFja1xuICAgICAgICBpblxuICAgICAgICBhdXggKGVpZCArIDEpIGVycm9yIGxvZ19pbmZvIHN0YWNrXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID0gYXV4IDAgZXJyb3IgbG9nX2luZm8gW10gaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkVuZCBTdWJcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gY2xvc2Vfb3V0IGRlc2NfY2hhbiBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgcmVjb3JkX21vZGlmIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWUgYmxhY2tib2FyZFxuICAgICAgPVxuICAgICggZXJyb3IsXG4gICAgICB7XG4gICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICBjdXJyZW50X3N0YWNrID0gKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSkgOjogYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrO1xuICAgICAgfSApXG5cbiAgbGV0IHJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgY2FzZV92YWx1ZSA9IG9sZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC5JR05PUkVEKioqQC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIElnbm9yZSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgIHN0cmljdGx5X21vcmVfcmVmaW5lZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBvbGQgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALioqKkAuUkVGSU5FX1ZBTFVFQC5WYWx1ZSBiZWZvcmU6IFwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIG9sZCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgY2FzZV92YWx1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQC5JR05PUkVEKioqQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIElnbm9yZSlcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgICAgIHN0cmljdGx5X21vcmVfcmVmaW5lZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX3ZhbHVlIG9sZFxuICAgICAgICBpblxuICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICByZWNvcmRfbW9kaWYgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgY2FzZV9hZGRyZXNzIG9sZCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICBjYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuTmV3IHZhbHVlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuU1VDQ0VTUyoqKkAuXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBTdWNjZXNzKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5GQUlMKioqQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIEZhaWwpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG5cbiAgbGV0IG92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgY2FzZV92YWx1ZSA9IG9sZCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWUgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICApXG5cbiAgbGV0IGRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbWF0Y2ggb2xkIHdpdGhcbiAgICB8IENvdW50ZXIgayAtPlxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAoQ291bnRlciAoayAtIDEpKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICApXG4gICAgfCBQb2ludGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiV3JvbmcgdHlwZSBvZiBjYXNlIHZhbHVlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJXcm9uZyB0eXBlIG9mIGNhc2UgdmFsdWVcIikgYmxhY2tib2FyZFxuXG4gIGxldCBicmFuY2ggcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIqKioqKioqQC4gKiBCUkFOQ0ggKkAuKioqKioqKkAuXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIHByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2JyYW5jaCBsb2dfaW5mbyBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIHN0YWNrID0gYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIDo6IGJsYWNrYm9hcmQuc3RhY2s7XG4gICAgICAgIGN1cnJlbnRfc3RhY2sgPSBbXTtcbiAgICAgIH0gKVxuXG4gIGxldCByZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiogQ3V0ICpALioqKioqKipcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IHN0YWNrID0gYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIChjYXNlX2FkZHJlc3MsIGNhc2VfdmFsdWUpIC0+XG4gICAgICAgICAgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICBzdGFja1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIqKioqKioqQC4qIEFmdGVyX0N1dCAqQC4qKioqKioqXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIHByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2N1dCBsb2dfaW5mbyBpblxuICAgIG1hdGNoIGJsYWNrYm9hcmQuc3RhY2sgd2l0aFxuICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCB7IGJsYWNrYm9hcmQgd2l0aCBjdXJyZW50X3N0YWNrID0gW10gfVxuICAgIHwgdCA6OiBxIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIGN1cnJlbnRfc3RhY2sgPSB0OyBzdGFjayA9IHEgfVxuXG4gIGxldCByZXNldF9pbml0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCByZWMgYXV4IChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpID1cbiAgICAgIG1hdGNoIGJsYWNrYm9hcmQuY3VycmVudF9zdGFjayB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBfIC0+XG4gICAgICAgIGF1eCAocmVzZXRfbGFzdF9icmFuY2hpbmcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPSBhdXggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnJlc2V0X2xvZyBsb2dfaW5mbyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIHR5cGUgcmVzdWx0ID0gKFRyYWNlLnN0ZXAgKiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0KSBsaXN0XG4gICgqKiBvdXRwdXQgcmVzdWx0KilcblxuICAoKiogaXRlcmF0aW9uKilcbiAgbGV0IGlzX21heGltYWxfc29sdXRpb24gX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50cyA9IDBcblxuICAoKiogZXhwb3J0aW5nIHJlc3VsdCopXG5cbiAgbGV0IHRyYW5zbGF0ZV9ibGFja2JvYXJkIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGFycmF5ID0gYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgaW5cbiAgICBsZXQgc3RlcF9hcnJheSA9IGJsYWNrYm9hcmQuZXZlbnQgaW5cbiAgICBsZXQgc2lkZV9hcnJheSA9IGJsYWNrYm9hcmQuc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgaW5cbiAgICBsZXQgc2l6ZSA9IFBCLkEubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBsaXN0ID1cbiAgICAgIGlmIGsgPSBzaXplIHRoZW5cbiAgICAgICAgTGlzdC5yZXYgbGlzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBib29sID0gUEIuQS5nZXQgYXJyYXkgayBpblxuICAgICAgICBtYXRjaCBib29sIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIGxpc3RcbiAgICAgICAgfCBTb21lIGZhbHNlIC0+IGF1eCAoayArIDEpIGxpc3RcbiAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICBsZXQgc3RlcCA9IFBCLkEuZ2V0IHN0ZXBfYXJyYXkgayBpblxuICAgICAgICAgIGxldCBzaWRlID0gUEIuQS5nZXQgc2lkZV9hcnJheSBrIGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKChzdGVwLCBzaWRlKSA6OiBsaXN0KVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSBhdXggMCBbXSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG4gIGxldCBwcmludF9zdGFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgaW5cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkN1cnJlbnRfc3RhY2tfbGV2ZWwgJWkgXCIgKExpc3QubGVuZ3RoIHN0YWNrKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIGkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJALlwiIGluXG4gICAgICAgICAgZXJyb3IpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pIChMaXN0LnJldiBzdGFjaylcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSB4IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk90aGVyIGxldmVsICVpIFwiIChMaXN0Lmxlbmd0aCB4KSBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIC0+XG4gICAgICAgICAgICAgIHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8pIChMaXN0LnJldiB4KSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbylcbiAgICAgICAgKExpc3QucmV2IGJsYWNrYm9hcmQuc3RhY2spXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IGlzX2ZpY3RpdGlvdXNfb2JzIGJsYWNrYm9hcmQgZWlkID1cbiAgICBTb21lIGVpZCA9IGJsYWNrYm9hcmQuZmljdGl0aW91c19vYnNlcnZhYmxlXG5cbiAgbGV0IHVzZWxlc3NfcHJlZGljYXRlX2lkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IG5fZXZlbnRzID0gYmxhY2tib2FyZC5uX2VpZCBpblxuICAgIGlmIFBhcmFtZXRlci5kb19sb2NhbF9jdXQgdGhlbiAoXG4gICAgICBsZXQgZXZlbnRfYXJyYXkgPSBQQi5BLm1ha2Ugbl9ldmVudHMgZmFsc2UgaW5cbiAgICAgIGxldCBrZXB0X2V2ZW50cyA9IFtdIGluXG4gICAgICBsZXQga2VwdF9ldmVudHMgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4ga2VwdF9ldmVudHMgaSAtPlxuICAgICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBldmVudF9hcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgaSkgdHJ1ZSBpblxuICAgICAgICAgICAgaSA6OiBrZXB0X2V2ZW50cylcbiAgICAgICAgICBrZXB0X2V2ZW50cyBsaXN0XG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdCBrZXB0X2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIGV2ZW50X2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywga2VwdF9ldmVudHNcbiAgICAgICAgfCBlaWQgOjogcSAtPlxuICAgICAgICAgIGlmIGlzX2ZpY3RpdGlvdXNfb2JzIGJsYWNrYm9hcmQgZWlkIHRoZW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBxIGtlcHRfZXZlbnRzXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnRfY2FzZV9saXN0IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMpIGV2ZW50X2Nhc2VfYWRkcmVzcyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgICAgICAgICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBQQi5pc191bmRlZmluZWQgY2FzZS5zdGF0aWMudGVzdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9pbnRlciA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlaWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZWMgc2Nhbl9kb3duIHBvaW50ZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93X3Nob3J0X2V2ZW50X2lkID0gcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfZXJyb3IsIF9sb2dfaW5mbywgcHJldl9jYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2V2ZW50X2Nhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfZWlkID0gcHJldl9jYXNlLnN0YXRpYy5ldmVudF9pZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfbnVsbF9wb2ludGVyX3N0ZXBfaWQgcHJldl9laWQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIFBCLmlzX3Vua25vd24gcHJldl9jYXNlLnN0YXRpYy5hY3Rpb24gdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb2ludGVyID0gcHJldl9jYXNlLmR5bmFtaWMucG9pbnRlcl9wcmV2aW91cyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuX2Rvd24gcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcHJldl9laWRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHNjYW5fZG93biBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGVpZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHEsIGtlcHRfZXZlbnRzXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2VpZCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBib29sID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBQQi5BLmdldCBldmVudF9hcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgcHJldl9laWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBxLCBrZXB0X2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUEIuQS5zZXQgZXZlbnRfYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQQi5pbnRfb2Zfc3RlcF9pZCBwcmV2X2VpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldl9laWQgOjogcSwgcHJldl9laWQgOjoga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMpXG4gICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBxIGtlcHRfZXZlbnRzXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHJlcCA9IGF1eCBsb2dfaW5mbyBlcnJvciBsaXN0IGtlcHRfZXZlbnRzIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIExpc3Quc29ydCBjb21wYXJlIHJlcCwgbl9ldmVudHMgLSBMaXN0Lmxlbmd0aCByZXBcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGV2ZW50c190b19rZWVwID1cbiAgICAgICAgbGV0IHJlYyBhdXggayBsaXN0ID1cbiAgICAgICAgICBpZiBrIDwgMCB0aGVuXG4gICAgICAgICAgICBsaXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4IChrIC0gMSkgKFBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChuX2V2ZW50cyAtIDEpIFtdXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudHNfdG9fa2VlcCwgMFxuICAgIClcblxuICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY3V0X2NhdXNhbF9mbG93LCBuX2V2ZW50c19yZW1vdmVkID1cbiAgICAgIHVzZWxlc3NfcHJlZGljYXRlX2lkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19rX2N1dF9ldmVudHMgbl9ldmVudHNfcmVtb3ZlZCBsb2dfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgY3V0X2NhdXNhbF9mbG93KVxuXG4gIGxldCBpbXBvcnQgP2hldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVibGFja2JvYXJkID1cbiAgICAgIFBCLmluaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBfc3RlcF9pZCwgc3RyaW5nLCB0b194bHMpID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJDb21wcmVzc2lvbiBtb2RlIGhhcyBub3QgYmVlbiBzZXQgdXBcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQ29tcHJlc3Npb24gbW9kZSBoYXMgbm90IGJlZW4gc2V0IHVwLlwiKVxuICAgICAgICAgIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQsIFwiTm9uZVwiLCBmYWxzZSlcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIGludCkpIHJlZmluZWRfZXZlbnQgLT5cbiAgICAgICAgICAgICAgUEIuYWRkX3N0ZXBfdXBfdG9faXNvIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgcmVmaW5lZF9ldmVudCBwcmVibGFja2JvYXJkIGludClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQpKVxuICAgICAgICAgICAgbGlzdFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICggcHJlYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGludCxcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHNzdHJvbmdGaWxlTmFtZSxcbiAgICAgICAgICAgIFBhcmFtZXRlci5kdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmVzc2lvbiApIClcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSkgcmVmaW5lZF9ldmVudCAtPlxuICAgICAgICAgICAgICBQQi5hZGRfc3RlcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciByZWZpbmVkX2V2ZW50XG4gICAgICAgICAgICAgICAgcHJlYmxhY2tib2FyZCBpbnQpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgUEIuemVyb19zdGVwX2lkKSlcbiAgICAgICAgICAgIGxpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAoIHByZWJsYWNrYm9hcmQsXG4gICAgICAgICAgICBpbnQsXG4gICAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lLFxuICAgICAgICAgICAgUGFyYW1ldGVyLmR1bXBfZ3JpZF9iZWZvcmVfd2Vha19jb21wcmVzc2lvbiApIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWJsYWNrYm9hcmQgPVxuICAgICAgUEIuZmluYWxpemUgaGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgaW1wb3J0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBfID0gUHJpb3JpdHkubl9zdG9yeSA6PSAhUHJpb3JpdHkubl9zdG9yeSArIDEgaW5cbiAgICBsZXQgXyA9IFByaW9yaXR5Lm5fYnJhbmNoIDo9IDEgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICBpZiB0b194bHMgdGhlblxuICAgICAgICBleHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RyaW5nXG4gICAgICAgICAgIVByaW9yaXR5Lm5fc3RvcnkgMCBibGFja2JvYXJkXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuZW5kXG4iLCIoKipcbiAgKiBwcm9wYWdhdGlvbl9oZXVyaXN0aWMubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNi0wOS0wNSBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMDMgMjA6MDM6MTEgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5sZXQgbG9va191cF9mb3JfYmV0dGVyX2N1dCA9IFBhcmFtZXRlci5sb29rX3VwX2Zvcl9iZXR0ZXJfY3V0XG5sZXQgbG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0ID0gUGFyYW1ldGVyLmxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dFxuXG5tb2R1bGUgdHlwZSBCbGFja2JvYXJkX3dpdGhfaGV1cmlzdGljID0gc2lnXG4gIG1vZHVsZSBCIDogQmxhY2tib2FyZC5CbGFja2JvYXJkXG5cbiAgdHlwZSB1cGRhdGVfb3JkZXJcbiAgdHlwZSBwcm9wYWdhdGlvbl9jaGVja1xuXG4gIHZhbCBkdW1teV91cGRhdGVfb3JkZXIgOiB1cGRhdGVfb3JkZXJcblxuICB2YWwgZm9yY2VkX2V2ZW50cyA6XG4gICAgKCBCLmJsYWNrYm9hcmQsXG4gICAgICAodXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogQi5QQi5zdGVwX2lkIGxpc3RcbiAgICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pXG4gICAgICBsaXN0IClcbiAgICBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBmb3JiaWRkZW5fZXZlbnRzIDpcbiAgICAoQi5QQi5zdGVwX2lkIGxpc3QsIHVwZGF0ZV9vcmRlciBsaXN0KSBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBuZXh0X2Nob2ljZSA6IChCLmJsYWNrYm9hcmQsIHVwZGF0ZV9vcmRlciBsaXN0KSBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBhcHBseV9pbnN0cnVjdGlvbiA6XG4gICAgKCBCLmJsYWNrYm9hcmQsXG4gICAgICB1cGRhdGVfb3JkZXIsXG4gICAgICB1cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3QsXG4gICAgICBCLmJsYWNrYm9hcmRcbiAgICAgICogdXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogcHJvcGFnYXRpb25fY2hlY2sgbGlzdFxuICAgICAgKiBCLmFzc2lnbl9yZXN1bHQgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcblxuICB2YWwgcHJvcGFnYXRlIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrLFxuICAgICAgdXBkYXRlX29yZGVyIGxpc3QsXG4gICAgICBwcm9wYWdhdGlvbl9jaGVjayBsaXN0LFxuICAgICAgQi5ibGFja2JvYXJkXG4gICAgICAqIHVwZGF0ZV9vcmRlciBsaXN0XG4gICAgICAqIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3RcbiAgICAgICogQi5hc3NpZ25fcmVzdWx0IClcbiAgICBCLlBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5lbmRcblxubW9kdWxlIFByb3BhZ2F0aW9uX2hldXJpc3RpYyA6IEJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgOiBCbGFja2JvYXJkLkJsYWNrYm9hcmQgPSBCbGFja2JvYXJkLkJsYWNrYm9hcmRcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBFeGNlcHRpb24ud2FyblxuICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG5cbiAgdHlwZSB1cGRhdGVfb3JkZXIgPVxuICAgIHwgS2VlcF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IERpc2NhcmRfZXZlbnQgb2YgQi5QQi5zdGVwX2lkXG4gICAgfCBDdXRfZXZlbnQgb2YgQi5QQi5zdGVwX2lkXG4gICAgfCBSZWZpbmVfdmFsdWVfYWZ0ZXIgb2YgQi5ldmVudF9jYXNlX2FkZHJlc3MgKiBCLlBCLnByZWRpY2F0ZV92YWx1ZVxuICAgIHwgUmVmaW5lX3ZhbHVlX2JlZm9yZSBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzcyAqIEIuUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBTa2lwXG5cbiAgbGV0IGR1bW15X3VwZGF0ZV9vcmRlciA9IFNraXBcblxuICB0eXBlIHByb3BhZ2F0aW9uX2NoZWNrID1cbiAgICB8IFByb3BhZ2F0ZV91cCBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgUHJvcGFnYXRlX2Rvd24gb2YgQi5ldmVudF9jYXNlX2FkZHJlc3NcblxuICBsZXQgX3ByaW50X291dHB1dCBsb2cgeCA9XG4gICAgaWYgQi5pc19mYWlsZWQgeCB0aGVuXG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiRkFJTEVEXCJcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCB4IHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJR05PUkVEXCJcbiAgICBlbHNlXG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiU1VDQ0VTU1wiXG5cbiAgbGV0IGZvcmNlZF9ldmVudHMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbGlzdCA9IEIuZm9yY2VkX2V2ZW50cyBibGFja2JvYXJkIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKGwsIGluZm8pIC0+XG4gICAgICAgICAgTGlzdC5yZXZfbWFwIChmdW4geCAtPiBLZWVwX2V2ZW50IHgpIChMaXN0LnJldiBsKSwgbCwgaW5mbylcbiAgICAgICAgKExpc3QucmV2IGxpc3QpIClcblxuICBsZXQgZm9yYmlkZGVuX2V2ZW50cyBfcGFyYW10ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IEN1dF9ldmVudCB4KSAoTGlzdC5yZXYgbGlzdClcblxuICBsZXQgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBmaXJzdCBsYXN0IHN1Y2Mgc3RvcCBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsID1cbiAgICBsZXQga19pbml0ID0gZmlyc3QgYmxhY2tib2FyZCBwX2lkIGluXG4gICAgbGV0IGtfZW5kID0gbGFzdCBibGFja2JvYXJkIHBfaWQgaW5cbiAgICBtYXRjaCBrX2luaXQsIGtfZW5kIHdpdGhcbiAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgTm9uZVxuICAgIHwgU29tZSBpLCBTb21lIGogLT5cbiAgICAgIGxldCByZWMgYXV4IGkgbG9nX2luZm8gZXJyb3IgPVxuICAgICAgICBpZiBzdG9wIGkgaiB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgICAgQi5idWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcF9pZCAoQi5idWlsZF9wb2ludGVyIGkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleGlzdCA9XG4gICAgICAgICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgZWlkLCBfdGVzdCwgX2FjdGlvbikgPVxuICAgICAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsX29mX2V2ZW50ID1cbiAgICAgICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGxldmVsX29mX2V2ZW50ID0gbGV2ZWwgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIFNvbWUgZWlkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIHwgU29tZSB0cnVlIHwgU29tZSBmYWxzZSAtPiBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBpIGxvZ19pbmZvIGVycm9yXG5cbiAgbGV0IGdldF9sYXN0X3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBibGFja2JvYXJkIHBfaWQgbGV2ZWwgPVxuICAgIGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgQi5nZXRfbGFzdF9saW5rZWRfZXZlbnRcbiAgICAgIEIuZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCBCLlBCLmRlY19zdGVwX3Nob3J0X2lkXG4gICAgICAoZnVuIGkgaiAtPiBpIDwgailcbiAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcF9pZCBsZXZlbFxuXG4gIGxldCBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBCLmdldF9maXJzdF9saW5rZWRfZXZlbnRcbiAgICAgIEIuZ2V0X2xhc3RfbGlua2VkX2V2ZW50IEIuUEIuaW5jX3N0ZXBfc2hvcnRfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPiBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsXG5cbiAgbGV0IGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudCBmaXJzdCBsYXN0IHN1Y2Mgc3RvcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgZXJyb3IgYmxhY2tib2FyZCBsZXZlbCA9XG4gICAgbGV0IHJlYyBhdXggaSBsb2dfaW5mbyBlcnJvciA9XG4gICAgICBpZiBzdG9wIGkgbGFzdCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4aXN0ID1cbiAgICAgICAgICBCLmlzX3NlbGVjdGVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGkgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBleGlzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsX29mX2V2ZW50ID1cbiAgICAgICAgICAgIEIubGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZXZlbF9vZl9ldmVudCA9IGxldmVsIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgU29tZSBpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4IChzdWNjIGkpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIHwgU29tZSB0cnVlIHwgU29tZSBmYWxzZSAtPiBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBmaXJzdCBsb2dfaW5mbyBlcnJvclxuXG4gIGxldCBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRcbiAgICAgIChCLlBCLnN0ZXBfaWRfb2ZfaW50IChCLmdldF9uX2VpZCBibGFja2JvYXJkKSlcbiAgICAgIEIuUEIuemVyb19zdGVwX2lkIEIuUEIuZGVjX3N0ZXBfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPCBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsZXZlbFxuXG4gIGxldCBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IEIuUEIuemVyb19zdGVwX2lkXG4gICAgICAoQi5QQi5zdGVwX2lkX29mX2ludCAoQi5nZXRfbl9laWQgYmxhY2tib2FyZCkpXG4gICAgICBCLlBCLmluY19zdGVwX2lkXG4gICAgICAoZnVuIGkgaiAtPiBpID4gailcbiAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGV2ZWxcblxuICBsZXQgbmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGJvb2wsIHN0cmluZyA9XG4gICAgICBtYXRjaCBwYXJhbWV0ZXIuQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT4gZmFsc2UsIFwiXCJcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgKCBQYXJhbWV0ZXIuZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfd2Vha19jb21wcmVzc2lvbixcbiAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lIClcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ19zdHJvbmdfY29tcHJlc3Npb24sXG4gICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lIClcbiAgICBpblxuICAgIGxldCAoKSA9IFByaW9yaXR5Lm5fYnJhbmNoIDo9ICFQcmlvcml0eS5uX2JyYW5jaCArIDEgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICBCLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJpbmdcbiAgICAgICAgICAgICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmlvcml0eSA9XG4gICAgICBtYXRjaCBCLlBCLkNJLlBvLksuSC5nZXRfcHJpb3JpdGllcyBwYXJhbWV0ZXIgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZXJyb3IsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJDb21wcmVzc2lvbiBtb2RlIGhhcyB0byBiZWVuIHNlbGVjdGVkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkNvbXByZXNzaW9uIG1vZGUgaGFzIG5vdCBiZWVuIHNlbGVjdGVkXCIpIFByaW9yaXR5LmNhdXNhbFxuICAgIGluXG4gICAgbGV0IG5fcF9pZCA9IEIuZ2V0X25wcmVkaWNhdGVfaWQgYmxhY2tib2FyZCBpblxuICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgbWF0Y2ggcHJpb3JpdHkuUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgfCBQcmlvcml0eS5BbGxfcmVtYWluaW5nX2V2ZW50cyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJBbGxfcmVtYWluaW5nX2V2ZW50cyBzdHJhdGVneSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkFsbCByZW1haW5pbmcgZXZlbnRzIHN0cmF0ZWd5IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIikgKClcbiAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzIC0+IGVycm9yLCAoKVxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50cyAtPiBlcnJvciwgKClcbiAgICBpblxuICAgIGxldCBiZXN0X3BhaXIgeCBhIGIgPVxuICAgICAgbWF0Y2ggeC5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzIC0+XG4gICAgICAgIFRvb2xzLm1heF9wb3NfaW50X25vdF96ZXJvIGEgYlxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgVG9vbHMubWluX3Bvc19pbnRfbm90X3plcm8gYSBiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3VucmVzb2x2ZWRfZXZlbnQgeCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWRcbiAgICAgICAgbGV2ZWwgPVxuICAgICAgbWF0Y2ggeC5Qcmlvcml0eS50cnlfdG9fcmVtb3ZlX2ZpcnN0IHdpdGhcbiAgICAgIHwgUHJpb3JpdHkuTGF0ZV9ldmVudHMgLT5cbiAgICAgICAgKG1hdGNoIHguUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbClcbiAgICAgIHwgUHJpb3JpdHkuRWFybHlfZXZlbnRzIC0+XG4gICAgICAgIChtYXRjaCB4LlByaW9yaXR5LmNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzIHdpdGhcbiAgICAgICAgfCBQcmlvcml0eS5BbGxfcmVtYWluaW5nX2V2ZW50cyAtPlxuICAgICAgICAgIGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgICBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbGlzdCA9XG4gICAgICBpZiBuX3BfaWQgPSAwIHRoZW5cbiAgICAgICAgZXJyb3IsIFtdXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyB0cnlfbGV2ZWwgbGV2ZWxfb3B0IGVycm9yID1cbiAgICAgICAgICBtYXRjaCBsZXZlbF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgICAgICB8IFNvbWUgbGV2ZWwgLT5cbiAgICAgICAgICAgIGxldCByZWMgYXV4IGxldmVsIG5fcF9pZCBzdGVwIGJlc3QgPVxuICAgICAgICAgICAgICBpZiBzdGVwID0gbl9wX2lkIHRoZW5cbiAgICAgICAgICAgICAgICBiZXN0XG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBncmFkZSA9XG4gICAgICAgICAgICAgICAgICBCLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIHN0ZXBcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGF1eCBsZXZlbCBuX3BfaWQgKHN0ZXAgKyAxKVxuICAgICAgICAgICAgICAgICAgKGJlc3RfcGFpciBwcmlvcml0eSBiZXN0IChncmFkZSwgc3RlcCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbiwgcF9pZCA9XG4gICAgICAgICAgICAgIGF1eCBsZXZlbCBuX3BfaWQgMVxuICAgICAgICAgICAgICAgIChCLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIDAgbGV2ZWwsIDApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICB0cnlfbGV2ZWwgKFByaW9yaXR5Lmxvd2VyIGxldmVsKSBlcnJvclxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCBldmVudF9pZCA9XG4gICAgICAgICAgICAgICAgZ2V0X3VucmVzb2x2ZWRfZXZlbnQgcHJpb3JpdHkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBldmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGxldCBsb2cgPSBCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICAgKFwiQW4gZW1wdHkgd2lyZSBoYXMgYmVlbiBzZWxlY3RlZFwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgICAgICAgICAgICAgICAoRmFpbHVyZSBcIkFuIGVtcHR5IHdpcmUgaGFzIGJlZW4gc2VsZWN0ZWRcIikgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiRVJST1IgMjQ5OiAlc1xcblwiXG4gICAgICAgICAgICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgbGV2ZWwpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB0cnlfbGV2ZWwgKFByaW9yaXR5Lmxvd2VyIGxldmVsKSBlcnJvclxuICAgICAgICAgICAgICB8IFNvbWUgZXZlbnRfaWQgLT5cbiAgICAgICAgICAgICAgICBlcnJvciwgWyBEaXNjYXJkX2V2ZW50IGV2ZW50X2lkOyBLZWVwX2V2ZW50IGV2ZW50X2lkIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgdHJ5X2xldmVsIChTb21lIFByaW9yaXR5LmhpZ2hlc3QpIGVycm9yXG4gICAgICApXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxuICBsZXQgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBlaWQsIF8sIF8pID1cbiAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgIFwiRXZlbnQ6ICVpLCBQcmVkaWNhdGU6ICVpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAoQi5wcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIGNhc2UpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBwcm9wYWdhdGVfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBldmVudF9jYXNlX2FkZHJlc3MgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPlxuICAgICAgKCogdGhlIGNhc2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBibGFja2JvYXJkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpXG4gICAgfCBTb21lIHRydWUgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBrbm93IHRoYXQgdGhlIHBhaXIgKHRlc3QvYWN0aW9uKSBjYW4gYmVlbiBleGVjdXRlZCAqKVxuICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sMiA9XG4gICAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYm9vbDIgd2l0aFxuICAgICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAgICgqIFRoZSBibGFja2JvYXJkIGlzIGluY29uc2lzdGVudDogKilcbiAgICAgICAgKCogUG9pbnRlcnMgc2hvdWxkIG5vdCBwb2ludCB0byByZW1vdmVkIGV2ZW50cy4qKVxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcImluY29uc2lzdGVudCBwb2ludGVycyBpbiBibGFja2JvYXJkXCJcbiAgICAgICAgICAgIChGYWlsdXJlIFwiaW5jb25zaXN0ZW50IHBvaW50ZXJzIGluIGJsYWNrYm9hcmRcIikgKClcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcykgKVxuICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX25leHRfc2VpZCwgX25leHRfZWlkLCBuZXh0X3Rlc3QsIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF90ZXN0LCBCLlBCLmlzX3Vua25vd24gbmV4dF9hY3Rpb24gd2l0aFxuICAgICAgICB8IHRydWUsIHRydWUgLT5cbiAgICAgICAgICAoKiBubyB0ZXN0LCBubyBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duIChjYXNlIDEpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQgYnV0IGhhcyBubyB0ZXN0IGFuZCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVmFsdWUgaXMgcHJvcGFnYXRlZCBhZnRlciB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICgqIG5vIHRlc3QsIG5vIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSB2YWx1ZSBhZnRlciB0aGUgbmV4dCBldmVudCopXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlciAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICgqIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAyKTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBubyB0ZXN0LCBidXQgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIk5vdGhpbmcgdG8gYmUgZG9uZVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICgqIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICgqIG5vdGhpbmcgdG8gcHJvcGFnYXRlIGRvd253YXJkKilcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDIgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgICAoKiBubyBhY3Rpb24sIGJ1dCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmVkaWNhdGVfdmFsdWUgbmV4dF90ZXN0IHRoZW4gKFxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uaiA9XG4gICAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMyk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QgYnV0IG5vIGFjdGlvbiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlIG5ldyBwcmVkaWNhdGVfdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29ualxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgYmVmb3JlIGFuZCBhZnRlciBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIG1lZXQgb2YgdGhlIHRlc3QgYW5kIHRoZSB2YWx1ZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMyBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIGNvbmopXG4gICAgICAgICAgICAgICAgOjogUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgKCogdGhlIHRlc3QgYW5kIHRoZSB2YWx1ZSBhcmUgaW5jb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNCk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDQgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgICAoKiBubyBhY3Rpb24sIGJ1dCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIGN1dCB0aGUgZXhwbG9yYXRpb24gKilcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFtdLCBbXSwgQi5mYWlsKVxuICAgICAgICAgIClcbiAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAoKnRoZXJlIGlzIGEgdGVzdCBhbmQgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZWRpY2F0ZV92YWx1ZSBuZXh0X3Rlc3QgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGFyZSBjb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25qID1cbiAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA1KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZSBuZXcgcHJlZGljYXRlX3ZhbHVlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGNvbmpcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIGJlZm9yZSB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIGFuIGFjdGlvbiBhbmQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgbWVldCBvZiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGJlZm9yZSB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgKCogdGVzdCBhbmQgdmFsdWUgYXJlIGluY29tcGF0aWJsZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDYpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCwgYSB0ZXN0LCBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDYgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgICAoKiBhbiBhY3Rpb24gYW5kIGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgY3V0IHRoZSBleHBsb3JhdGlvbiAqKVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICAgKSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfbmV4dF9zZWlkLCBuZXh0X2VpZCwgbmV4dF90ZXN0LCBuZXh0X2FjdGlvbikgPVxuICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfYWN0aW9uIHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBuZXh0X3Rlc3Qgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgKCp0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNyk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBubyB0ZXN0LCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgYW5kIGJlZm9yZSB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcXG5cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNyBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICgqdGhlcmUgaXMgbm8gdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIG5leHRfdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICgqIHRlc3QgYW5kIHByZWRpY2F0ZV92YWx1ZSBhcmUgY29tcGF0aWJsZSAqKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgOCk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgaXMgcHJvcGFnYXRlZCBhZnRlciBhbmQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgOSk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKCVpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgbmV4dF9laWQpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDkgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICgqIHdlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBEaXNjYXJkX2V2ZW50IG5leHRfZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkpXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiB0aGVyZSBpcyBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICBpZiBub3QgKEIuUEIuY29tcGF0aWJsZSBuZXh0X2FjdGlvbiBwcmVkaWNhdGVfdmFsdWUpIHRoZW4gKFxuICAgICAgICAgICAgKCogdGhlIGFjdGlvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEwKTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIGFjdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIGNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKnRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfdGVzdCB3aXRoXG4gICAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTEpOlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBubyB0ZXN0LCBidXQgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMTEgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSBqb2luIG9mIHRoZSB2YWx1ZSBhbmQgdGhlIGFjdGlvbiBhZnRlciB0aGUgbmV4dCBldmVudCopXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBuZXh0X3Rlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAxMik6XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgaXMgcHJvcGFnYXRlZCBhZnRlciB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMlxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlclxuICAgICAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEzKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50ICglaSkgaXMgZGlzY2FyZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIG5leHRfZWlkKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMTNcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHdlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgbmV4dF9laWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkpKVxuXG4gIGxldCByZWMgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcHJlZGljYXRlX3ZhbHVlIGV2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPiBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgfCBTb21lIHRydWUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgX3Rlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJldmlld19jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2Nhc2VfdmFsdWUgPVxuICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZXZpZXdfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIHByZXZpZXdfY2FzZV92YWx1ZVxuICAgICAgICBpblxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgICAgICAgQi5pc19ib3VuZGFyeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSAxIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIG5vdCAoQi5QQi5pc191bmRlZmluZWQgcHJlZGljYXRlX3ZhbHVlKSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSAyIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgKVxuICAgICAgKSBlbHNlIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDMgbG9nX2luZm8gaW5cbiAgICAgICAgZXJyb3IsIHRydWUsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICApXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIF9laWQsIF90ZXN0LCBhY3Rpb24pID1cbiAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgZXJyb3IsIGZhbHNlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJldmlld19jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2Nhc2VfdmFsdWUgPVxuICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZXZpZXdfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIHByZXZpZXdfY2FzZV92YWx1ZVxuICAgICAgICBpblxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWUgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSA0IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgKVxuICAgICAgKVxuXG4gIGxldCBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgYWRkcmVzcyA9XG4gICAgaWYgQi5QQi5pc191bmtub3duIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgZWxzZVxuICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgYWRkcmVzc1xuXG4gIGxldCBsYXN0X2NoYW5jZV91cCA9XG4gICAgaWYgbG9va191cF9mb3JfYmV0dGVyX2N1dCB0aGVuXG4gICAgICBsYXN0X2NoYW5jZV91cFxuICAgIGVsc2VcbiAgICAgIGZ1biBfIF8gbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBfIF8gLT5cbiAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IHByb3BhZ2F0ZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBldmVudF9jYXNlX2FkZHJlc3MgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPlxuICAgICAgKCogdGhlIGNhc2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBibGFja2JvYXJkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpXG4gICAgfCBTb21lIHRydWUgLT5cbiAgICAgICgqIHdlIGtub3cgdGhhdCB0aGUgcGFpciAodGVzdC9hY3Rpb24pIGhhcyBiZWVuIGV4ZWN1dGVkICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIF9laWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICBpZiBCLlBCLmlzX3Vua25vd24gYWN0aW9uIHRoZW5cbiAgICAgICAgKCogbm8gYWN0aW9uLCB3ZSBrZWVwIG9uIHByb3BhZ2F0aW5nIHdpdGggdGhlIGNvbmpvbmN0aW9uIG9mIHRoZSB0ZXN0IG9mIHRoZSB2YWx1ZSAqKVxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ZhbHVlID1cbiAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0ZXN0IHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxKTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgbmV3X3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld192YWx1ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDIpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgIClcbiAgICAgIGVsc2UgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgIGlmIEIuUEIuaXNfdW5kZWZpbmVkIHRlc3QgdGhlbiAoXG4gICAgICAgICAgKCp0aGUgd2lyZSBoYXMganVzdCBiZSBjcmVhdGVkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDMpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiTm90aGluZyB0byBiZSBkb25lXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAzIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcykgKVxuICAgICAgICApIGVsc2UgaWZcbiAgICAgICAgICAgICgqd2Uga25vdyB0aGF0IHRoZSB3aXJlIHdhcyBkZWZpbmVkIGJlZm9yZSopXG4gICAgICAgICAgICBCLlBCLmNvbXBhdGlibGUgdGVzdCBCLlBCLmRlZmluZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGF0ZSA9XG4gICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdCBCLlBCLmRlZmluZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNCk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA0IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgc3RhdGUpXG4gICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA1KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgNSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKlRoZSBldmVudCBoYXMgdG8gYmUgZGlzY2FyZGVkIHdoaWNoIGlzIGFic3VyZCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDYpOlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDYgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICApXG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBwYWlyICh0ZXN0L2FjdGlvbikgaGFzIGJlZW4gZXhlY3V0ZWQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgZWlkLCB0ZXN0LCBhY3Rpb24pID1cbiAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gdGVzdCB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgbmVpdGhlciBhIHRlc3QsIG5vciAgYWN0aW9uIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA3IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA4KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSAgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgOSk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhICB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkV2ZW50IGJlZm9yZSAoJWkpIGlzIGRpc2NhcmRlZFwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSlcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTApOlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgaXMgdGhlIG9ubHkgb3Bwb3J0dW5pdHkgdG8gc2V0IHVwIHRoZSB3aXJlLCB3ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBrZWVwIHRoZSBldmVudFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIEtlZXBfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIEIuUEIuaXNfdW5rbm93biB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDExKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvbiwgYnV0IG5vIHRlc3RcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTEgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBuZXdfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSB0ZXN0IHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5ld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbmV3X3Rlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEyKTpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRfY2FzZV9hZGRyZXNzLCBuZXdfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxMyk6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzY2FyZCB0aGUgZXZlbnQgYmVmb3JlICglaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDEzXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXYnID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5kaXNqdW5jdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSB0ZXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNCk6XCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldidcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTRcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmV2JylcbiAgICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTUpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgbWF5YmUgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJEaXNjYXJkIHRoZSBldmVudCBiZWZvcmUgKCVpKVwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTUgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTYpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJldmlvdXMgd2lyZSBzdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiU2VsZWN0IHRoZSBldmVudCBiZWZvcmUgKCVpKVwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBLZWVwX2V2ZW50IGVpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTcpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNyBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICkpXG5cbiAgbGV0IHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNoZWNrXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBtYXRjaCBjaGVjayB3aXRoXG4gICAgfCBQcm9wYWdhdGVfdXAgeCAtPlxuICAgICAgcHJvcGFnYXRlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgeFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBQcm9wYWdhdGVfZG93biB4IC0+XG4gICAgICBwcm9wYWdhdGVfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHhcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuXG4gIGxldCBjdXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBjYXNlXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICAoKiB3ZSByZW1vdmUgdGhlIGNhc2UgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgcmVzdWx0KSA9XG4gICAgICBCLnJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoQi5leGlzdCBjYXNlKVxuICAgICAgICAoQi5ib29sZWFuIChTb21lIGZhbHNlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gY2FzZSlcbiAgICAgICAgICBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIG5leHQgb2YgdGhlIHByZXZpb3VzIGV2ZW50ICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5wb2ludGVyX3RvX25leHQgcG9pbnRlcl9wcmV2aW91cylcbiAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfbmV4dCkgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBwcmV2aW91cyBvZiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIub3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKEIucG9pbnRlcl90b19wcmV2aW91cyBwb2ludGVyX25leHQpXG4gICAgICAgICAgKEIucG9pbnRlciBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIClcblxuICBsZXQgbG9va19kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJvcGFnYXRlX2xpc3QgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBfLCBfLCBhY3Rpb24pID1cbiAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcm9wYWdhdGVfbGlzdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxpc3RfdmFsdWVzID0gQi5QQi53ZWFrZW5pbmcgYWN0aW9uIGluXG4gICAgICBsZXQgcHJvcGFnYXRlX2xpc3QsIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAocHJvcGFnYXRlX2xpc3QsIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgdmFsdWUgLT5cbiAgICAgICAgICAgIGxldCByZWMgYXV4IGNhc2UgYm9vbCBlcnJvciBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGxldCBjYSA9IEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBjYXNlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIHByZWRpY2F0ZV92YWx1ZSB2YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX25leHQgPVxuICAgICAgICAgICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDEgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggUHJvcGFnYXRlX3VwIHBvaW50ZXJfbmV4dCA6OiBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIClcbiAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXh0X2Nhc2UgPVxuICAgICAgICAgICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhpc3QgPVxuICAgICAgICAgICAgICAgICAgQi5leGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9jYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgfCBTb21lIGZhbHNlIC0+IGF1eCBuZXh0X2Nhc2UgYm9vbCBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIF8sIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dF9jYXNlXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgbmV4dF9hY3Rpb24gdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9sb29rX2Rvd25fY2FzZSAzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGF1eCBuZXh0X2Nhc2UgdHJ1ZSBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhdXggbmV4dF9jYXNlIGJvb2wgZXJyb3IgbG9nX2luZm9cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBjYXNlIGZhbHNlIGVycm9yIGxvZ19pbmZvKVxuICAgICAgICAgIChwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgIGxpc3RfdmFsdWVzXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcm9wYWdhdGVfbGlzdFxuICAgIClcblxuICBsZXQgbG9va19kb3duID1cbiAgICBpZiBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgdGhlblxuICAgICAgbG9va19kb3duXG4gICAgZWxzZVxuICAgICAgZnVuIF8gXyBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3QgXyAtPlxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdFxuXG4gIGxldCByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgY2FzZV9hZGRyZXNzID0gQi52YWx1ZV9hZnRlciBhZGRyZXNzIGluXG4gICAgbGV0IHN0YXRlID0gQi5zdGF0ZSB2YWx1ZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBzdGF0ZSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCByZXN1bHQpXG4gICAgZWxzZSBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCByZXN1bHQpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICBQcm9wYWdhdGVfdXAgYWRkcmVzcyA6OiBQcm9wYWdhdGVfZG93biBhZGRyZXNzIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHJlc3VsdClcbiAgICApXG5cbiAgbGV0IHJlZmluZV92YWx1ZV9iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgaW5cbiAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcG9pbnRlcl9wcmV2aW91cyB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG5cbiAgbGV0IGRpc2NhcmRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBjYXNlXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICAoKiB3ZSByZW1vdmUgdGhlIGNhc2UgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgcmVzdWx0KSA9XG4gICAgICBCLnJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoQi5leGlzdCBjYXNlKVxuICAgICAgICAoQi5ib29sZWFuIChTb21lIGZhbHNlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNhID0gQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGNhc2UgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIHBvaW50ZXJfcHJldmlvdXMgcHJlZGljYXRlX3ZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQnIHRoZW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0J1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoXywgZXZlbnQsIF8sIF8pID1cbiAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZXZlbnRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIGNhc2UgbGV2ZWwpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBuZXh0IG9mIHRoZSBwcmV2aW91cyBldmVudCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIucG9pbnRlcl90b19uZXh0IHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfbmV4dCkgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICAoKiB3ZSBwbHVnIHBvaW50ZXIgcHJldmlvdXMgb2YgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLnBvaW50ZXJfdG9fcHJldmlvdXMgcG9pbnRlcl9uZXh0KVxuICAgICAgICAgICAgKEIucG9pbnRlciBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIFByb3BhZ2F0ZV91cCBwb2ludGVyX25leHQgOjogUHJvcGFnYXRlX2Rvd24gcG9pbnRlcl9wcmV2aW91c1xuICAgICAgICAgIDo6IFByb3BhZ2F0ZV91cCBwb2ludGVyX3ByZXZpb3VzIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0ID1cbiAgICAgICAgICBsb29rX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcm9wYWdhdGVfbGlzdFxuICAgICAgICAgICAgY2FzZVxuICAgICAgICBpblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgICAgKVxuICAgIClcblxuICBsZXQga2VlcF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgKCogd2Uga2VlcCB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgdHJ1ZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbXSwgW10pLCByZXN1bHRcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLCByZXN1bHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIF9wb2ludGVyX25leHQgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIF8sIHJlc3VsdCcpID1cbiAgICAgICAgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgICAgICB0ZXN0IGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JycpID1cbiAgICAgICAgcmVmaW5lX3ZhbHVlX2FmdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgIGFjdGlvbiBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgICBpblxuICAgICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0JyB8fCBCLmlzX2ZhaWxlZCByZXN1bHQnJyB0aGVuXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIEIuZmFpbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsZXZlbCA9XG4gICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgY2FzZSBsZXZlbClcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICAgICAgICBQcm9wYWdhdGVfdXAgY2FzZSA6OiBQcm9wYWdhdGVfZG93biBjYXNlXG4gICAgICAgICAgOjogUHJvcGFnYXRlX2Rvd24gcG9pbnRlcl9wcmV2aW91cyA6OiBQcm9wYWdhdGVfdXAgcG9pbnRlcl9wcmV2aW91c1xuICAgICAgICAgIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgICApXG4gICAgKVxuXG4gIGxldCBrZWVwX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN1Y2Nlc3MpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmlzX2V4aXN0X2V2ZW50IHN0ZXBfaWQpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgdHJ1ZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBzdWNjZXNzKVxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19zZWxlY3RlZF9ldmVudHMgbG9nX2luZm8gaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIldlIGtlZXAgZXZlbnQgJWlcIlxuICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEIubl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIEIuY2FzZV9saXN0X29mX2VpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBsIHggc3VjY2VzcyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHgsIHN1Y2Nlc3NcbiAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICBsZXQgeSwgc3VjY2VzczIgPSBrZWVwX2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgdCB4IGluXG4gICAgICAgICAgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MyIHRoZW5cbiAgICAgICAgICAgIGF1eCBxIHkgc3VjY2Vzc1xuICAgICAgICAgIGVsc2UgaWYgQi5pc19zdWNjZWVkZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzMlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHksIHN1Y2Nlc3MyXG4gICAgICBpblxuICAgICAgbGV0ICggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLFxuICAgICAgICAgICAgc3VjY2VzcyApID1cbiAgICAgICAgYXV4IGxpc3RcbiAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdClcbiAgICAgICAgICBCLmlnbm9yZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBzdWNjZXNzKVxuICAgIClcblxuICBsZXQgZ2VuX2V2ZW50IGZfY2FzZSBnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN1Y2Nlc3MpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmlzX2V4aXN0X2V2ZW50IHN0ZXBfaWQpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCBzdWNjZXNzIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFtdLCBbXSwgc3VjY2VzcylcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCBzdWNjZXNzIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBzdWNjZXNzKVxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiV2UgcmVtb3ZlIGV2ZW50ICVpXCJcbiAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgc3RlcF9pZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2dfaW5mbyA9IGcgbG9nX2luZm8gaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBCLm5fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGxldmVsKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgQi5jYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGwgeCBzdWNjZXNzID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4geCwgc3VjY2Vzc1xuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCB5LCBzdWNjZXNzMiA9IGZfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciB0IHggaW5cbiAgICAgICAgICBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzXG4gICAgICAgICAgZWxzZSBpZiBCLmlzX3N1Y2NlZWRlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3MyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeSwgc3VjY2VzczJcbiAgICAgIGluXG4gICAgICBsZXQgKCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksXG4gICAgICAgICAgICBzdWNjZXNzICkgPVxuICAgICAgICBhdXggbGlzdFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KVxuICAgICAgICAgIEIuaWdub3JlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgKVxuXG4gIGxldCBjdXRfZXZlbnQgPSBnZW5fZXZlbnQgY3V0X2Nhc2UgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfY3V0X2V2ZW50c1xuXG4gIGxldCBkaXNjYXJkX2V2ZW50ID1cbiAgICBnZW5fZXZlbnQgZGlzY2FyZF9jYXNlIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX3JlbW92ZWRfZXZlbnRzXG5cbiAgbGV0IGFwcGx5X2luc3RydWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaW5zdHJ1Y3Rpb25cbiAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIG1hdGNoIGluc3RydWN0aW9uIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAga2VlcF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgQ3V0X2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIGN1dF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgRGlzY2FyZF9ldmVudCBzdGVwX2lkIC0+XG4gICAgICBkaXNjYXJkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBSZWZpbmVfdmFsdWVfYWZ0ZXIgKGFkZHJlc3MsIHZhbHVlKSAtPlxuICAgICAgcmVmaW5lX3ZhbHVlX2FmdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzc1xuICAgICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBSZWZpbmVfdmFsdWVfYmVmb3JlIChhZGRyZXNzLCB2YWx1ZSkgLT5cbiAgICAgIHJlZmluZV92YWx1ZV9iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFNraXAgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLmlnbm9yZSlcblxuICBsZXQgX2tlZXAgeCA9IEtlZXBfZXZlbnQgeFxuZW5kXG4iLCIoKipcbiAgKiBnZW5lcmljX2JyYW5jaF9hbmRfY3VwX3NvbHZlci5tbFxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyOS8wOC8yMDExXG4gICogTGFzdCBtb2RpZmljYXRpb246IDE5LzA3LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgbG9nX3N0ZXBzID0gZmFsc2VcblxubW9kdWxlIHR5cGUgU29sdmVyID0gc2lnXG4gIG1vZHVsZSBQSCA6IFByb3BhZ2F0aW9uX2hldXJpc3RpY3MuQmxhY2tib2FyZF93aXRoX2hldXJpc3RpY1xuXG4gIHZhbCBjb21wcmVzcyA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC51cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIFBILkIuYmxhY2tib2FyZCAqIFBILkIuYXNzaWduX3Jlc3VsdCAqIFBILkIucmVzdWx0IGxpc3QgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILkIuUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBmaWx0ZXIgOlxuICAgICggUEguQi5ibGFja2JvYXJkLFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QsXG4gICAgICBQSC5CLmJsYWNrYm9hcmQgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzdWIgOiAoVHJhY2UudCwgUEguQi5ibGFja2JvYXJkKSBQSC5CLlBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgY2xlYW4gOiAoUEguQi5ibGFja2JvYXJkLCBQSC5CLmJsYWNrYm9hcmQpIFBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIHRyYW5zbGF0ZSA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIFRyYWNlLnQgKiBQSC5CLnJlc3VsdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHRyYW5zbGF0ZV9yZXN1bHQgOiBQSC5CLnJlc3VsdCAtPiBUcmFjZS50XG5lbmRcblxubW9kdWxlIFNvbHZlciA9IHN0cnVjdFxuICBtb2R1bGUgUEggPSBQcm9wYWdhdGlvbl9oZXVyaXN0aWNzLlByb3BhZ2F0aW9uX2hldXJpc3RpY1xuICAoKkJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMqKVxuXG4gIGxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBwb3Mgfm1lc3NhZ2UgZXhuIGRlZmF1bHRcblxuICBsZXQgX2NvbWJpbmVfb3V0cHV0IG8xIG8yID1cbiAgICBpZiBQSC5CLmlzX2lnbm9yZWQgbzIgdGhlblxuICAgICAgbzFcbiAgICBlbHNlXG4gICAgICBvMlxuXG4gIGxldCByZWMgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmQgPVxuICAgIGxldCBib29sLCBsb2dfaW5mbyA9IFBILkIudGljayBsb2dfaW5mbyBpblxuICAgIGxldCBfID1cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmR1bXBfY29tcGxldGVfbG9nXG4gICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGxvZ19pbmZvXG4gICAgaW5cbiAgICBtYXRjaCBpbnN0cnVjdGlvbl9saXN0IHdpdGhcbiAgICB8IHQgOjogcSAtPlxuICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgYXNzaWduX3Jlc3VsdCkgKSA9XG4gICAgICAgIFBILmFwcGx5X2luc3RydWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdCBxXG4gICAgICAgICAgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBhc3NpZ25fcmVzdWx0IHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgYXNzaWduX3Jlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgICAgICBwcm9wYWdhdGVfbGlzdCBibGFja2JvYXJkXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIHByb3BhZ2F0ZV9saXN0IHdpdGhcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBhc3NpZ25fcmVzdWx0KSApID1cbiAgICAgICAgICBQSC5wcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0XG4gICAgICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHFcbiAgICAgICAgaW5cbiAgICAgICAgaWYgUEguQi5pc19mYWlsZWQgYXNzaWduX3Jlc3VsdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgYXNzaWduX3Jlc3VsdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpbnN0cnVjdGlvbl9saXN0XG4gICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCBibGFja2JvYXJkXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFBILkIuc3VjY2VzcykpXG5cbiAgdHlwZSBjaG9pY2VzID0ge1xuICAgIGN1cnJlbnQ6IFBILnVwZGF0ZV9vcmRlciBsaXN0O1xuICAgIHN0YWNrOiBQSC51cGRhdGVfb3JkZXIgbGlzdCBsaXN0O1xuICB9XG5cbiAgbGV0IGJyYW5jaF9jaG9pY2VfbGlzdCBjaG9pY2VfbGlzdCA9XG4gICAgeyBjdXJyZW50ID0gW107IHN0YWNrID0gY2hvaWNlX2xpc3QuY3VycmVudCA6OiBjaG9pY2VfbGlzdC5zdGFjayB9XG5cbiAgbGV0IHVwZGF0ZV9jdXJyZW50IGNob2ljZV9saXN0IGxpc3QgPSB7IGNob2ljZV9saXN0IHdpdGggY3VycmVudCA9IGxpc3QgfVxuXG4gIGxldCBwb3BfbmV4dF9jaG9pY2UgcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIHN0YWNrID1cbiAgICBtYXRjaCBzdGFjay5jdXJyZW50IHdpdGhcbiAgICB8IHQgOjogcSAtPiBlcnJvciwgKHQsIHsgc3RhY2sgd2l0aCBjdXJyZW50ID0gcSB9KVxuICAgIHwgW10gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJFbXB0eSBjaG9pY2Ugc3RhY2tcIlxuICAgICAgICAoRmFpbHVyZSBcIkVtcHR5IGNob2ljZSBsaXN0IGluIHBvcF9uZXh0X2Nob2ljZVwiKVxuICAgICAgICAoUEguZHVtbXlfdXBkYXRlX29yZGVyLCBzdGFjaylcblxuICBsZXQgbm9fbW9yZV9jaG9pY2Ugc3RhY2sgPVxuICAgIG1hdGNoIHN0YWNrLmN1cnJlbnQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBiYWNrdHJhY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdCA9XG4gICAgbGV0IHJlYyBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3QgPVxuICAgICAgbWF0Y2ggY2hvaWNlX2xpc3QuY3VycmVudCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBjaG9pY2VfbGlzdC5zdGFjayB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgTm9uZSlcbiAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICBsZXQgY2hvaWNlX2xpc3QgPSB7IGN1cnJlbnQgPSB0OyBzdGFjayA9IHEgfSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgUEguQi5yZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3QpXG4gICAgICB8IF8gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgU29tZSBjaG9pY2VfbGlzdClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUEguQi5yZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcblxuICBsZXQgZW1wdHlfY2hvaWNlX2xpc3QgPSB7IHN0YWNrID0gW107IGN1cnJlbnQgPSBbXSB9XG5cbiAgbGV0IHJlYyBzdWJsaXN0IGwgbCcgPVxuICAgIG1hdGNoIGwsIGwnIHdpdGhcbiAgICB8IFtdLCBfIC0+IHRydWVcbiAgICB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IHN1Ymxpc3QgdCB0J1xuICAgIHwgXywgX2gnIDo6IHQnIC0+IHN1Ymxpc3QgbCB0J1xuXG4gIGxldCBzb3J0X3N0b3JpZXNfYWNjb3JkaW5nX3RvX2xlbmd0aCBsID1cbiAgICBMaXN0LnJldl9tYXAgZnN0XG4gICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAoZnVuIChfLCBhKSAoXywgYikgLT4gY29tcGFyZSBiIGEpXG4gICAgICAgICAoTGlzdC5yZXZfbWFwIChmdW4gYSAtPiBhLCBMaXN0Lmxlbmd0aCBhKSBsKSlcblxuICBsZXQgZmlsdGVyX291dF9ub25fbWluaW1hbF9zdG9yeSBsID1cbiAgICBsZXQgcmVjIGF1eCB0b192aXNpdCBnb29kb25lcyA9XG4gICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGdvb2RvbmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBhdXhcbiAgICAgICAgICAoTGlzdC5maWx0ZXIgKGZ1biBzdG9yeSAtPiBub3QgKHN1Ymxpc3QgaCBzdG9yeSkpIHQpXG4gICAgICAgICAgKGggOjogTGlzdC5maWx0ZXIgKGZ1biBzdG9yeSAtPiBub3QgKHN1Ymxpc3QgaCBzdG9yeSkpIGdvb2RvbmVzKVxuICAgIGluXG4gICAgYXV4IChzb3J0X3N0b3JpZXNfYWNjb3JkaW5nX3RvX2xlbmd0aCBsKSBbXVxuXG4gIGxldCByZWMgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICBzdG9yeV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIFBILkIuaXNfbWF4aW1hbF9zb2x1dGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBib29sIHRoZW4gKFxuICAgICAgKCogU1VDQ0VTUyAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIFBILkIudHJhbnNsYXRlX2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuUEIuQ0kuUG8uSy5ILmdldF9hbGxfc3Rvcmllc19wZXJfb2JzIHBhcmFtZXRlciB0aGVuIChcbiAgICAgICAgbGV0IHN0b3J5X2xpc3QgPSBsaXN0IDo6IHN0b3J5X2xpc3QgaW5cbiAgICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgICAgaWYgY2hvaWNlX2xpc3QuY3VycmVudCA8PiBbXSB0aGVuXG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgIFwiSW4gY2FzZSBvZiBzdWNjZXNzLCB0aGUgY3VycmVudCBsaXN0IG9mIGNob2ljZXMgc2hvdWxkIGJlIFxcXG4gICAgICAgICAgICAgICAgIGVtcHR5XCJcbiAgICAgICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICAgICAgXCJJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyBzaG91bGQgYmUgXFxcbiAgICAgICAgICAgICAgICAgIGVtcHR5XCIpICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VfbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggY2hvaWNlX2xpc3Quc3RhY2sgd2l0aFxuICAgICAgICAgIHwgW10gLT4gY2hvaWNlX2xpc3RcbiAgICAgICAgICB8IHQgOjogcSAtPiB7IGN1cnJlbnQgPSB0OyBzdGFjayA9IHEgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgY2hvaWNlX2xpc3QpID1cbiAgICAgICAgICBiYWNrdHJhY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjaG9pY2VfbGlzdCB3aXRoXG4gICAgICAgIHwgU29tZSBjaG9pY2VfbGlzdCAtPlxuICAgICAgICAgIGl0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuICAgICAgICAgICAgc3RvcnlfbGlzdCAoKih1cGRhdGVfZmlyc3Rfc3RvcnkgZmlyc3Rfc3RvcnkgbGlzdCkqKVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBQSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBcIkZBSUxcIiAhUHJpb3JpdHkubl9zdG9yeSAhUHJpb3JpdHkubl9icmFuY2ggYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RvcnlfbGlzdClcbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbIGxpc3QgXSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBjaG9pY2VfbGlzdCA9XG4gICAgICAgIGlmIG5vX21vcmVfY2hvaWNlIGNob2ljZV9saXN0IHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgIFBILm5leHRfY2hvaWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB1cGRhdGVfY3VycmVudCBjaG9pY2VfbGlzdCBsaXN0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBjaG9pY2VfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCAoY2hvaWNlLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICBwb3BfbmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgY2hvaWNlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0KSA9XG4gICAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBbIGNob2ljZSBdIFtdIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICAgIGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNob2ljZV9saXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGNob2ljZV9saXN0IC0+XG4gICAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgICAgICBzdG9yeV9saXN0XG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdG9yeV9saXN0KVxuICAgICAgKSBlbHNlXG4gICAgICAgIGl0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChicmFuY2hfY2hvaWNlX2xpc3QgY2hvaWNlX2xpc3QpXG4gICAgICAgICAgc3RvcnlfbGlzdFxuICAgIClcblxuICBsZXQgZGV0ZWN0X2luZGVwZW5kZW50X2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBsaXN0X2VpZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9ibGFja2JvYXJkLCBldmVudHNfdG9fa2VlcCkgPVxuICAgICAgUEguQi5jdXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X2VpZFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudHNfdG9fa2VlcFxuXG4gIGxldCB0cmFuc2xhdGUgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3QgPVxuICAgIGxldCBsaXN0JyA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biBrIC0+XG4gICAgICAgICAgKCBQSC5CLmdldF9ldmVudCBibGFja2JvYXJkIChQSC5CLlBCLmRlY19zdGVwX2lkIGspLFxuICAgICAgICAgICAgUEguQi5zaWRlX2VmZmVjdF9vZl9ldmVudCBibGFja2JvYXJkIChQSC5CLlBCLmRlY19zdGVwX2lkIGspICkpXG4gICAgICAgIChMaXN0LnJldiBsaXN0KVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSBMaXN0LnJldl9tYXAgZnN0IChMaXN0LnJldiBsaXN0JykgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChsaXN0LCBsaXN0JylcblxuICBsZXQgdHJhbnNsYXRlX3Jlc3VsdCByZXN1bHQgPSBMaXN0LnJldl9tYXAgZnN0IEBAIExpc3QucmV2IHJlc3VsdFxuXG4gIGxldCBjbGVhbiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkID1cbiAgICBQSC5CLnJlc2V0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZFxuXG4gIGxldCBmaWx0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBldmVudHNfdG9fa2VlcCA9XG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXZlbnRzX3RvX3JlbW92ZSA9XG4gICAgICBsZXQgbl9ldmVudHMgPSBQSC5CLmdldF9uX2VpZCBibGFja2JvYXJkIGluXG4gICAgICBsZXQgcmVjIGF1eCBrIGxpc3Qgc29sID1cbiAgICAgICAgaWYgayA9IG5fZXZlbnRzIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBzb2xcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGlmIFBILkIuUEIuaW50X29mX3N0ZXBfaWQgdCA9IGsgdGhlblxuICAgICAgICAgICAgICBhdXggKGsgKyAxKSBxIHNvbFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggKGsgKyAxKSBsaXN0IChQSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogc29sKVxuICAgICAgICAgIHwgW10gLT4gYXV4IChrICsgMSkgbGlzdCAoUEguQi5QQi5zdGVwX2lkX29mX2ludCBrIDo6IHNvbClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwIGV2ZW50c190b19rZWVwIFtdXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBmb3JiaWRkZW5fZXZlbnRzID1cbiAgICAgIFBILmZvcmJpZGRlbl9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRzX3RvX3JlbW92ZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiU3RhcnQgY3V0dGluZ1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBfb3V0cHV0KSA9XG4gICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZm9yYmlkZGVuX2V2ZW50cyBbXSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgc3ViIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRvX2tlZXAgPVxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUEguQi5pbXBvcnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdG9fa2VlcFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fdGltZSBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGNvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdF9vcmRlciA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbG9nX3N0ZXBzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCJBZnRlciBDYXVzYWwgQ3V0ICAlaVwiXG4gICAgICAgICAgICAoUEguQi5nZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0KSA9XG4gICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdF9vcmRlciBbXSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBQSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQWZ0ZXIgb2JzZXJ2YWJsZSBwcm9wYWdhdGlvbiAgRkFJTCAlaSBALlwiXG4gICAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQsIFtdKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQWZ0ZXIgb2JzZXJ2YWJsZSBwcm9wYWdhdGlvbiAgJWkgQC5cIlxuICAgICAgICAgICAgICAoUEguQi5nZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGJvb2wsIHN0cmluZyA9XG4gICAgICAgIG1hdGNoIHBhcmFtZXRlci5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+IGZhbHNlLCBcIlwiXG4gICAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3dlYWtGaWxlTmFtZSApXG4gICAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbixcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHNzdHJvbmdGaWxlTmFtZSApXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gUHJpb3JpdHkubl9icmFuY2ggOj0gMSArICghUHJpb3JpdHkubl9icmFuY2ggKyAxKSBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgUEguQi5leHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgc3RyaW5nICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0b3J5X2xpc3QpID1cbiAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVtcHR5X2Nob2ljZV9saXN0IFtdXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgIG1hdGNoIHN0b3J5X2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IFBILkIuZmFpbFxuICAgICAgICB8IF8gLT4gUEguQi5zdWNjZXNzXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIChibGFja2JvYXJkLCBvdXRwdXQsIGZpbHRlcl9vdXRfbm9uX21pbmltYWxfc3RvcnkgKExpc3QucmV2IHN0b3J5X2xpc3QpKVxuICAgICAgKVxuICAgIClcbmVuZFxuIiwiKCoqXG4gICogYmxhY2tfbGlzdC5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTAyLTE0IDEwOjI5OjQyIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xNCAxMDo1MDo1NyBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNlxuICAqICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW5cbiAgKiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5XG4gICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBFdmVudCA9IHNpZ1xuICB0eXBlIGV2ZW50XG4gIHR5cGUgZWlkXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBrZXlfb2ZfZXZlbnQgOiBldmVudCAtPiBlaWQgb3B0aW9uXG4gIHZhbCBpbml0IDogaW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNldCA6ICdhIHQgLT4gZWlkIC0+ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gZWlkIC0+ICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQmxhY2tsaXN0ID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBFdmVudCA6IEV2ZW50XG5cbiAgdmFsIGluaXQgOiBpbnQgLT4gdFxuICB2YWwgYmxhY2tfbGlzdCA6IEV2ZW50LmV2ZW50IC0+IHQgLT4gdFxuICB2YWwgaXNfYmxhY2tfbGlzdGVkIDogRXZlbnQuZXZlbnQgLT4gdCAtPiBib29sXG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoRXZlbnQgOiBFdmVudClcbiAgLT5cbiAgc3RydWN0XG4gICAgbW9kdWxlIEV2ZW50ID0gRXZlbnRcblxuICAgIHR5cGUgdCA9IGJvb2wgRXZlbnQudFxuXG4gICAgbGV0IGluaXQgbiA9IEV2ZW50LmluaXQgbiBmYWxzZVxuXG4gICAgbGV0IGJsYWNrX2xpc3QgZXZlbnQgdCA9XG4gICAgICBtYXRjaCBFdmVudC5rZXlfb2ZfZXZlbnQgZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlaWQgLT5cbiAgICAgICAgbGV0IHQgPSBFdmVudC5zZXQgdCBlaWQgdHJ1ZSBpblxuICAgICAgICB0XG5cbiAgICBsZXQgaXNfYmxhY2tfbGlzdGVkIGV2ZW50IHQgPVxuICAgICAgbWF0Y2ggRXZlbnQua2V5X29mX2V2ZW50IGV2ZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGVpZCAtPiBFdmVudC5nZXQgdCBlaWRcbiAgZW5kXG4iLCIoKipcbiAgKiBkYWcubWxcbiAgKlxuICAqIERhZyBjb21wdXRhdGlvbiBhbmQgY2Fub25pY2FsIGZvcm1cbiAgKlxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMi8wMy8yMDEyXG4gICogTGFzdCBtb2R4aWZpY2F0aW9uOiAxOC8wNi8yMDEzXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSBTID0gR2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIuU29sdmVyXG5cbmxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICBFeGNlcHRpb24ud2FyblxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuXG5tb2R1bGUgdHlwZSBTdG9yeVRhYmxlID0gc2lnXG4gIHR5cGUgdGFibGVcblxuICB2YWwgZm9sZF90YWJsZSA6XG4gICAgKCAoIFRyYWNlLnQsXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCxcbiAgICAgICAgJ2EsXG4gICAgICAgICdhIClcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudGVybmFyeSxcbiAgICAgIHRhYmxlLFxuICAgICAgJ2EsXG4gICAgICAnYSApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGluaXRfdGFibGUgOiB0YWJsZSBTLlBILkIuUEIuQ0kuUG8uSy5ILnplcm9hcnlcbiAgdmFsIGNvdW50X3N0b3JpZXMgOiB0YWJsZSAtPiBpbnRcblxuICB2YWwgYWRkX3N0b3J5IDpcbiAgICAoIENhdXNhbC5ncmlkLFxuICAgICAgVHJhY2UudCxcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCxcbiAgICAgIHRhYmxlLFxuICAgICAgdGFibGUgKVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucXVhdGVybmFyeVxuXG4gIHZhbCBoYXNoX2xpc3QgOiAodGFibGUsIHRhYmxlKSBTLlBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIHNvcnRfbGlzdCA6XG4gICAgKCB0YWJsZSxcbiAgICAgIChUcmFjZS50XG4gICAgICAqIENhdXNhbC5ncmlkXG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIGxpc3QgKVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcbmVuZFxuXG5tb2R1bGUgSCA9IFMuUEguQi5QQi5DSS5Qby5LLkhcbm1vZHVsZSBBID0gTW9kcy5EeW5BcnJheVxuXG50eXBlIGxhYmVsID0gc3RyaW5nXG50eXBlIG5vZGVfa2luZCA9IE9CUyB8IFBFUlQgfCBSVUxFIHwgSU5JVCB8IEZJQ1RJVElPVVNcbnR5cGUgbm9kZSA9IG5vZGVfa2luZCAqIGxhYmVsXG5cbnR5cGUgZ3JhcGggPSB7XG4gIHJvb3Q6IGludDtcbiAgbGFiZWxzOiBub2RlIEEudDtcbiAgcHJlZDogaW50IGxpc3QgQS50O1xuICBjb25mbGljdF9wcmVkOiBpbnQgbGlzdCBBLnQ7XG59XG5cbmxldCBkdW1teV9ncmFwaCA9XG4gIHtcbiAgICByb290ID0gMDtcbiAgICBsYWJlbHMgPSBBLm1ha2UgMSAoRklDVElUSU9VUywgXCJcIik7XG4gICAgcHJlZCA9IEEubWFrZSAxIFtdO1xuICAgIGNvbmZsaWN0X3ByZWQgPSBBLm1ha2UgMSBbXTtcbiAgfVxuXG50eXBlIHBvc2l0aW9uID0gaW50XG50eXBlIGtleSA9IEZyZXNoIG9mIG5vZGUgfCBGb3JtZXIgb2YgcG9zaXRpb24gfCBTdG9wXG50eXBlIGNhbm9uaWNhbF9mb3JtID0ga2V5IGxpc3RcbnR5cGUgcHJlaGFzaCA9IChub2RlICogaW50KSBsaXN0XG5cbmxldCBfZHVtbXlfY2Fubm9uaWNhbF9mb3JtID0gW11cbmxldCBfZHVtbXlfcHJlaGFzaCA9IFtdXG5cbmxldCBfcHJpbnRfc3RvcnlfaW5mbyBsb2dnZXIgX3BhcmFtZXRlciBqc29uID1cbiAgKCpMaXN0Lml0ZXJcbiAgICAoZnVuXG4gICAgICBzdG9yeV9pbmZvIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICBsb2dnZXJcbiAgICAgICAgICBcImlkOiVpLCB0aW1lOiVmLCBldmVudDolaVwiXG4gICAgICAgICAgc3RvcnlfaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWRcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lXG4gICAgICAgICAgc3RvcnlfaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnRcbiAgICAgIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyXG4gICAgKVxuICAgIHN0b3J5X2luZm9fbGlzdFxuICAqKVxuICBsZXQgY2hhbm5lbF9vcHQgPSBMb2dnZXJzLmNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNoYW5uZWxfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2hhbm5lbCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgY2hhbm5lbCBqc29uIGluXG4gICAgICAoKVxuICBpblxuICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICgpXG5cbmxldCBwcmludF9ncmFwaCBsb2dnZXIgcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGlkIHN0b3J5X2luZm8gZ3JhcGggPVxuICBsZXQgbG9nZ2VyID0gR3JhcGhfbG9nZ2Vyc19zaWcuZXh0ZW5kX2xvZ2dlciBsb2dnZXIgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vyc19zaWcucmVmcmVzaF9pZCBsb2dnZXIgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgXCJzdG9yeVwiIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIChub2RlX2tpbmQsIGopIC0+XG4gICAgICAgIGlmIGkgPSAwICYmIGogPSBcIlwiIHRoZW5cbiAgICAgICAgICAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgICAgICAgICBtYXRjaCBub2RlX2tpbmQgd2l0aFxuICAgICAgICAgICAgfCBPQlMgLT4gWyBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgXVxuICAgICAgICAgICAgfCBQRVJUIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbjtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBSVUxFIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWU7XG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2U7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHwgSU5JVCAtPlxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW47XG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2U7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHwgRklDVElUSU9VUyAtPlxuICAgICAgICAgICAgICBbIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X25vZGUgbG9nZ2VyXG4gICAgICAgICAgICB+ZGlyZWN0aXZlczooR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgaiA6OiBkaXJlY3RpdmVzKVxuICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSlcbiAgICAgICAgKSlcbiAgICAgIGdyYXBoLmxhYmVsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gaiAtPlxuICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlciAoc3RyaW5nX29mX2ludCBqKSAoc3RyaW5nX29mX2ludCBpKSlcbiAgICAgICAgICBsKVxuICAgICAgZ3JhcGgucHJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gaiAtPlxuICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlclxuICAgICAgICAgICAgICB+ZGlyZWN0aXZlczpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkO1xuICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIEdyYXBoX2xvZ2dlcnNfc2lnLlRlZTtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfaW50IGkpIChzdHJpbmdfb2ZfaW50IGopKVxuICAgICAgICAgIGwpXG4gICAgICBncmFwaC5jb25mbGljdF9wcmVkXG4gIGluXG4gIGxldCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBILmdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RvcnlfanNvbi5DYXVzYWxcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGxldCByZXN1bHQgPVxuICAgIHtcbiAgICAgIFN0b3J5X2pzb24ubG9nX2luZm8gPSBzdG9yeV9pbmZvO1xuICAgICAgU3RvcnlfanNvbi5zdG9yeV9tb2RlID0gY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlcjtcbiAgICAgIFN0b3J5X2pzb24uc3RvcnkgPVxuICAgICAgICBTdG9yeV9qc29uLk5ld1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFN0b3J5X2pzb24uZ3JhcGggPSBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaF9vZl9sb2dnZXIgbG9nZ2VyO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5pZDtcbiAgICAgICAgICB9O1xuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gSC5wdXNoX2pzb24gcGFyYW1ldGVyIChTdG9yeV9qc29uLlN0b3J5IHJlc3VsdCkgaW5cbiAgZXJyb3JcblxubGV0IHByaW50X2VsdCBsb2cgZWx0ID1cbiAgbWF0Y2ggZWx0IHdpdGhcbiAgfCBTdG9wIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlNUT1BcIiBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgfCBGb3JtZXIgaSAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQb2ludGVyICVpXCIgaSBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgfCBGcmVzaCAoXywgcykgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiRXZlbnQgJXNcIiBzIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuXG5sZXQgX3ByaW50X2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciBfaGFuZGxlciBlcnJvciBkYWcgPVxuICBsZXQgXyA9IExpc3QuaXRlciAocHJpbnRfZWx0IChILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKSBkYWcgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgZXJyb3JcblxubGV0IF9wcmludF9wcmVoYXNoIHBhcmFtZXRlciBfaGFuZGxlciBlcnJvciByZXByZXNlbnRhdGlvbiA9XG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKChfLCBiKSwgaSkgLT5cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpIFwiJXM6JWksXCIgYiBpKVxuICAgICAgcmVwcmVzZW50YXRpb25cbiAgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgZXJyb3JcblxubGV0IGxhYmVsIGhhbmRsZXIgPSBmdW5jdGlvblxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuUlVMRSBpKSAtPiBILnN0cmluZ19vZl9ydWxlX2lkIGhhbmRsZXIgaVxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuSU5JVCBbIGkgXSkgLT4gSC5zdHJpbmdfb2ZfYWdlbnRfaWQgaGFuZGxlciBpXG4gIHwgQ2F1c2FsLkVWRU5UICgoVHJhY2UuSU5JVCBfIHwgVHJhY2UuUEVSVCBfKSBhcyB4KSAtPlxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFRyYWNlLnByaW50X2V2ZW50X2tpbmQgfmVudjpoYW5kbGVyLkguZW52KSB4XG4gIHwgQ2F1c2FsLk9CUyBuYW1lIC0+IG5hbWVcblxubGV0IGtpbmQgbm9kZSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuSU5JVCBfKSAtPiBJTklUXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5SVUxFIF8pIC0+IFJVTEVcbiAgfCBDYXVzYWwuRVZFTlQgKFRyYWNlLlBFUlQgXykgLT4gUEVSVFxuICB8IENhdXNhbC5PQlMgXyAtPiBPQlNcblxubGV0IGNvbXBhcmVfZWx0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IFN0b3AsIFN0b3AgLT4gMFxuICB8IFN0b3AsIF8gLT4gLTFcbiAgfCBfLCBTdG9wIC0+IDFcbiAgfCBGb3JtZXIgaSwgRm9ybWVyIGogLT4gY29tcGFyZSBpIGpcbiAgfCBGb3JtZXIgXywgXyAtPiAtMVxuICB8IF8sIEZvcm1lciBfIC0+IDFcbiAgfCBGcmVzaCBzLCBGcmVzaCBzJyAtPiBjb21wYXJlIHMgcydcblxubGV0IHF1aWNrX2NvbXBhcmUgZyB0MSB0MiA9IGNvbXBhcmVfZWx0IChnIHQxKSAoZyB0MilcblxubGV0IHJlYyBhdXggY29tcGFyZV9lbHQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgIGxldCBjbXAgPSBjb21wYXJlX2VsdCB0IHQnIGluXG4gICAgaWYgY21wID0gMCB0aGVuXG4gICAgICBhdXggY29tcGFyZV9lbHQgcSBxJ1xuICAgIGVsc2VcbiAgICAgIGNtcFxuXG5sZXQgY29tcGFyZV9jYW5vbmljID0gYXV4IGNvbXBhcmVfZWx0XG5cbmxldCBjb21wYXJlX2Nhbm9uaWNfb3B0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBjb21wYXJlX2Nhbm9uaWMgeCB5XG5cbmxldCBjb21wYXJlX3ByZWhhc2ggPSBhdXggY29tcGFyZVxuXG5sZXQgZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuR3JhcGhfY29udmVyc2lvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBpZHMgPSBIYXNodGJsLmZvbGQgKGZ1biBrZXkgXyBsIC0+IGtleSA6OiBsKSBncmlkLkNhdXNhbC5mbG93IFtdIGluXG4gIGxldCBsYWJlbCA9IGxhYmVsIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uZmlnID1cbiAgICBDYXVzYWwuY3V0XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWRzIGdyaWRcbiAgaW5cbiAgbWF0Y2ggTW9kcy5JbnRNYXAubWF4X2tleSBjb25maWcuQ2F1c2FsLnByZWNfMSB3aXRoXG4gIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGR1bW15X2dyYXBoXG4gIHwgU29tZSBzaXplIC0+XG4gICAgbGV0IHN1Y2Nfc2l6ZSA9IHN1Y2Mgc2l6ZSBpblxuICAgIGxldCBsYWJlbHMgPSBBLm1ha2Ugc3VjY19zaXplIChGSUNUSVRJT1VTLCBcIlwiKSBpblxuICAgIGxldCBwcmVkID0gQS5tYWtlIHN1Y2Nfc2l6ZSBbXSBpblxuICAgIGxldCBjb25mbGljdF9wcmVkID0gQS5tYWtlIHN1Y2Nfc2l6ZSBbXSBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gaSBhdG9tX2tpbmQgLT4gQS5zZXQgbGFiZWxzIGkgKGtpbmQgYXRvbV9raW5kLCBsYWJlbCBhdG9tX2tpbmQpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLmV2ZW50c19raW5kXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIGkgcyAtPlxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBLnNldCBwcmVkIGkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIHMpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLnByZWNfMVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBpZiBNb2RzLkludFNldC5pc19lbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQS5zZXQgY29uZmxpY3RfcHJlZCBpIChNb2RzLkludFNldC5lbGVtZW50cyBzKSlcbiAgICAgICAgY29uZmlnLkNhdXNhbC5jb25mbGljdFxuICAgIGluXG4gICAgbGV0IHJvb3QgPSBzaXplIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5HcmFwaF9jb252ZXJzaW9uIE5vbmUgbG9nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyByb290OyBsYWJlbHM7IHByZWQ7IGNvbmZsaWN0X3ByZWQgfVxuXG5sZXQgY29uY2F0IGxpc3QxIGxpc3QyID1cbiAgbGV0IHJlYyBhdXggbGlzdDEgbGlzdDIgPVxuICAgIG1hdGNoIGxpc3QyIHdpdGhcbiAgICB8IFtdIC0+IGxpc3QxXG4gICAgfCB0IDo6IHEgLT4gYXV4ICh0IDo6IGxpc3QxKSBxXG4gIGluXG4gIGF1eCBsaXN0MiAoTGlzdC5yZXYgbGlzdDEpXG5cbmxldCBjb21wYXJlX25vZGUgKGEsIF8pIChiLCBfKSA9IGNvbXBhcmUgYSBiXG5cbmxldCBzbWFzaCBsID1cbiAgbGV0IHJlYyBhdXggbCBmb3JtZXIgd2VpZ2h0IG91dHB1dCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBMaXN0LnJldiAoKGZvcm1lciwgd2VpZ2h0KSA6OiBvdXRwdXQpXG4gICAgfCAodCwgd3QpIDo6IHEgd2hlbiB0ID0gZm9ybWVyIC0+IGF1eCBxIGZvcm1lciAod3QgKyB3ZWlnaHQpIG91dHB1dFxuICAgIHwgKHQsIHd0KSA6OiBxIC0+IGF1eCBxIHQgd3QgKChmb3JtZXIsIHdlaWdodCkgOjogb3V0cHV0KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8ICh0LCB3dCkgOjogcSAtPiBhdXggcSB0IHd0IFtdXG5cbmxldCBwcmVoYXNoIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgZ3JhcGggPVxuICAoIGVycm9yLFxuICAgIHNtYXNoXG4gICAgICAoTGlzdC5zb3J0IGNvbXBhcmVfbm9kZVxuICAgICAgICAgKGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgQS5pdGVyXG4gICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRklDVElUSU9VUywgXyAtPiAoKVxuICAgICAgICAgICAgICAgIHwgKChPQlMgfCBQRVJUIHwgUlVMRSB8IElOSVQpLCBfKSBhcyBhIC0+IGwgOj0gKGEsIDEpIDo6ICFsKVxuICAgICAgICAgICAgICBncmFwaC5sYWJlbHNcbiAgICAgICAgICBpblxuICAgICAgICAgICFsKSkgKVxuXG5sZXQgY2Fub25pY2FsaXplIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaCA9XG4gIGxldCBhc3NvID0gTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgbGV0IGxhYmVsIGkgPSB0cnkgQS5nZXQgZ3JhcGgubGFiZWxzIGkgd2l0aCBfIC0+IEZJQ1RJVElPVVMsIFwiXCIgaW5cbiAgbGV0IHJlYyBwb3AgKGNhbmRpZGF0ZSA6IGtleSBsaXN0KSAodG9fYmVhdCA6IGtleSBsaXN0IG9wdGlvbikgPVxuICAgIG1hdGNoIGNhbmRpZGF0ZSwgdG9fYmVhdCB3aXRoXG4gICAgfCBbXSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgIFNvbWUgdG9fYmVhdCAoKiBjYW5kaWRhdGUgaXMgYSBwcmVmaXggb2YgdG9fYmVhdCwgd2Ugb3V0cHV0IHRoZSBzdWZmaXggKilcbiAgICB8IF8gOjogXywgU29tZSBbXSAtPiBOb25lICgqIHRoZSBjYW5kaWRhdGUgaXMgd29yc2UgKilcbiAgICB8IHQgOjogcSwgU29tZSAodHIgOjogcXIpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9lbHQgdCB0ciBpblxuICAgICAgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgIFNvbWUgTm9uZSAoKiB0aGUgY2FuZGlkYXRlIGlzIGJldHRlciAqKVxuICAgICAgZWxzZSBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgcG9wIHEgKFNvbWUgcXIpXG4gICAgICAoKiB3ZSBkbyBub3Qga25vdywgd2UgbG9vayBmdXJ0aGVyICopXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICAoKiB0aGUgY2FuZGlkYXRlIGlzIHdvcnNlICopXG4gIGluXG4gIGxldCByZWMgdmlzaXQgKGkgOiBpbnQpIChtYXAgOiBpbnQgTW9kcy5JbnRNYXAudCkgKGZyZXNoX3BvcyA6IGludClcbiAgICAgICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBtYXAgd2l0aFxuICAgIHwgU29tZSBpIC0+XG4gICAgICAoKiB0aGUgbm9kZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4sIHdlIHB1dCBhIHBvaW50ZXIgKilcbiAgICAgICgqMCopXG4gICAgICAobWF0Y2ggcG9wIFsgRm9ybWVyIGkgXSB0b19iZWF0IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiB0byBiZWF0IGlzIGJldHRlciwgd2UgY3V0IHRoZSBjb25zdHJ1Y3Rpb24gKilcbiAgICAgICAgTm9uZVxuICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgKCogdG8gYmVhdCBtYXkgYmUgaW1wcm92ZWQsIHdlIGdvIG9uICopXG4gICAgICAgIFNvbWUgKFsgRm9ybWVyIGkgXSwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXQpKVxuICAgICgqMCopXG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB0aGUgbm9kZSBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZSAqKVxuICAgICAgbGV0IG1hcCA9IE1vZHMuSW50TWFwLmFkZCBpIGZyZXNoX3BvcyBtYXAgaW5cbiAgICAgIGxldCBmcmVzaF9wb3MgPSBmcmVzaF9wb3MgKyAxIGluXG4gICAgICAoKjAqKVxuICAgICAgKG1hdGNoIHBvcCBbIEZyZXNoIChsYWJlbCBpKSBdIHRvX2JlYXQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAodG9fYmVhdCA6IGtleSBsaXN0IG9wdGlvbikgLT5cbiAgICAgICAgKCoxKilcbiAgICAgICAgbGV0IHNpYmJsaW5nMSA9IHRyeSBBLmdldCBncmFwaC5wcmVkIGkgd2l0aCBOb3RfZm91bmQgLT4gW10gaW5cbiAgICAgICAgbGV0IHNpYmJsaW5nMiA9XG4gICAgICAgICAgdHJ5IEEuZ2V0IGdyYXBoLmNvbmZsaWN0X3ByZWQgaSB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGJlc3Rfc2liYmxpbmcgKG0gOiBpbnQgTW9kcy5JbnRNYXAudCkgKGYgOiBpbnQpXG4gICAgICAgICAgICAoY2FuZGlkYXRlcyA6IGludCBsaXN0KSAobm90X2Jlc3QgOiBpbnQgbGlzdClcbiAgICAgICAgICAgICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKVxuICAgICAgICAgICAgKHJlY29yZCA6XG4gICAgICAgICAgICAgIChpbnQgKiAoa2V5IGxpc3QgKiBpbnQgTW9kcy5JbnRNYXAudCAqIGludCAqIGtleSBsaXN0IG9wdGlvbikpXG4gICAgICAgICAgICAgIG9wdGlvbikgPVxuICAgICAgICAgIG1hdGNoIGNhbmRpZGF0ZXMgd2l0aFxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggcmVjb3JkIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgcmVjb3JkIC0+IFNvbWUgKG5vdF9iZXN0LCByZWNvcmQpKVxuICAgICAgICAgICgqMiopXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGxldCByZXAgPSB2aXNpdCB0IG0gZiB0b19iZWF0IGluXG4gICAgICAgICAgICAoKjIqKVxuICAgICAgICAgICAgKG1hdGNoIHJlcCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYmVzdF9zaWJibGluZyBtIGYgcSAodCA6OiBub3RfYmVzdCkgdG9fYmVhdCByZWNvcmRcbiAgICAgICAgICAgIHwgU29tZSAoKGVuY29kaW5nIDoga2V5IGxpc3QpLCBtYXAsIGZyZXNoLCByZXNpZHVlKSAtPlxuICAgICAgICAgICAgICAoKjMqKVxuICAgICAgICAgICAgICBsZXQgKHRvX2JlYXRfYWZ0ZXIgOiBrZXkgbGlzdCBvcHRpb24pID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXNpZHVlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBlbmNvZGluZ1xuICAgICAgICAgICAgICAgIHwgXyAtPiB0b19iZWF0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAobm90X2Jlc3QgOiBpbnQgbGlzdCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlY29yZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IG5vdF9iZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIChiZXN0LCBfKSAtPiBiZXN0IDo6IG5vdF9iZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGJlc3Rfc2liYmxpbmcgbSBmIHEgbm90X2Jlc3QgdG9fYmVhdF9hZnRlclxuICAgICAgICAgICAgICAgIChTb21lICh0LCAoZW5jb2RpbmcsIG1hcCwgZnJlc2gsIHJlc2lkdWUpKSkpXG4gICAgICAgICAgKCozKilcbiAgICAgICAgICAoKjIqKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGF1eCBtIGYgbCBzb2wgdG9fYmVhdCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBTb21lIChtLCBmLCBzb2wsIHRvX2JlYXQpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAoKjIqKVxuICAgICAgICAgICAgKG1hdGNoIGJlc3Rfc2liYmxpbmcgbSBmIGwgW10gdG9fYmVhdCBOb25lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgKG5vdF9iZXN0LCByZWNvcmQpIC0+XG4gICAgICAgICAgICAgIGxldCBfLCAoYmVzdCwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXRfYWZ0ZXIpID0gcmVjb3JkIGluXG4gICAgICAgICAgICAgIGF1eCBtYXAgZnJlc2hfcG9zIG5vdF9iZXN0IChjb25jYXQgc29sIGJlc3QpIHRvX2JlYXRfYWZ0ZXIpXG4gICAgICAgICAgKCoyKilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxpc3QgPSBbIEZyZXNoIChsYWJlbCBpKSBdIGluXG4gICAgICAgICgqMiopXG4gICAgICAgIGxldCBnIHggPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHggbWFwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiBGb3JtZXIgeFxuICAgICAgICAgIHwgTm9uZSAtPiBGcmVzaCAobGFiZWwgeClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNpYmJsaW5nMSA9IExpc3Quc29ydCAocXVpY2tfY29tcGFyZSBnKSBzaWJibGluZzEgaW5cbiAgICAgICAgKG1hdGNoIGF1eCBtYXAgZnJlc2hfcG9zIHNpYmJsaW5nMSBsaXN0IHRvX2JlYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgKG1hcCwgZnJlc2hfcG9zLCBsaXN0LCB0b19iZWF0KSAtPlxuICAgICAgICAgICgqMyopXG4gICAgICAgICAgKG1hdGNoIHBvcCBbIFN0b3AgXSB0b19iZWF0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSB0b19iZWF0IC0+XG4gICAgICAgICAgICAoKjQqKVxuICAgICAgICAgICAgbGV0IGxpc3QgPSBjb25jYXQgbGlzdCBbIFN0b3AgXSBpblxuICAgICAgICAgICAgKCo1KilcbiAgICAgICAgICAgIGxldCBnIHggPVxuICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiB4IG1hcCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IEZvcm1lciB4XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBGcmVzaCAobGFiZWwgeClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc2liYmxpbmcyID0gTGlzdC5zb3J0IChxdWlja19jb21wYXJlIGcpIHNpYmJsaW5nMiBpblxuICAgICAgICAgICAgKG1hdGNoIGF1eCBtYXAgZnJlc2hfcG9zIHNpYmJsaW5nMiBsaXN0IHRvX2JlYXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAobWFwLCBmcmVzaF9wb3MsIGxpc3QsIHRvX2JlYXQpIC0+XG4gICAgICAgICAgICAgICgqNiopXG4gICAgICAgICAgICAgIChtYXRjaCBwb3AgWyBTdG9wIF0gdG9fYmVhdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSB0b19iZWF0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBjb25jYXQgbGlzdCBbIFN0b3AgXSBpblxuICAgICAgICAgICAgICAgIFNvbWUgKGxpc3QsIG1hcCwgZnJlc2hfcG9zLCB0b19iZWF0KSkpXG4gICAgICAgICAgICAoKjYqKVxuICAgICAgICAgICAgKCo1KikpXG4gICAgICAgICAgKCo0KikpXG4gICAgICAgICgqMyopXG4gICAgICAgICgqMiopKVxuICAgICgqMSopXG4gICAgKCowKilcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgb3V0cHV0ID1cbiAgICBtYXRjaCB2aXNpdCBncmFwaC5yb290IGFzc28gMCBOb25lIHdpdGhcbiAgICB8IFNvbWUgKHJlcCwgXywgXywgXykgLT4gZXJyb3IsIHJlcFxuICAgIHwgTm9uZSAtPiBlcnJvciwgW11cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5DYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubW9kdWxlIExpc3RUYWJsZSA6IFN0b3J5VGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0YWJsZSA9XG4gICAgKHByZWhhc2hcbiAgICAqIChDYXVzYWwuZ3JpZFxuICAgICAgKiBncmFwaFxuICAgICAgKiBjYW5vbmljYWxfZm9ybSBvcHRpb25cbiAgICAgICogVHJhY2UudFxuICAgICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QpXG4gICAgICBsaXN0KVxuICAgIGxpc3RcblxuICBsZXQgaW5pdF90YWJsZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID0gZXJyb3IsIGxvZ19pbmZvLCBbXVxuXG4gIGxldCBhZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgICBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJlaGFzaCA9IHByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZ3JhcGggaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChwcmVoYXNoLCBbIGdyaWQsIGdyYXBoLCBOb25lLCBwcmV0cmFjZSwgaW5mbyBdKSA6OiB0YWJsZVxuXG4gIGxldCBzb3J0X291dGVyID1cbiAgICBsZXQgY29tcGFyZSAoYSwgXykgKGIsIF8pID0gY29tcGFyZV9wcmVoYXNoIGEgYiBpblxuICAgIExpc3Quc29ydCBjb21wYXJlXG5cbiAgbGV0IHNvcnRfaW5uZXIgPVxuICAgIGxldCBjb21wYXJlIChfLCBfLCBhLCBfLCBfKSAoXywgXywgYiwgXywgXykgPSBjb21wYXJlX2Nhbm9uaWNfb3B0IGEgYiBpblxuICAgIExpc3Quc29ydCBjb21wYXJlXG5cbiAgbGV0IGhhc2hfaW5uZXIgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBjbXAgbGlzdCA9XG4gICAgbGV0IGxpc3QgPSBzb3J0X2lubmVyIGxpc3QgaW5cbiAgICBsZXQgcmVjIHZpc2l0IGVsZW1lbnRzX3RvX3N0b3JlIHN0b3JlZF9lbGVtZW50cyBsYXN0X2VsZW1lbnRcbiAgICAgICAgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzID1cbiAgICAgIG1hdGNoIGVsZW1lbnRzX3RvX3N0b3JlLCBsYXN0X2VsZW1lbnQgd2l0aFxuICAgICAgfCAoXywgXywgdCwgXywgbGlzdCkgOjogcSwgU29tZSAoXywgXywgb2xkLCBfKSB3aGVuIGNvbXBhcmUgdCBvbGQgPSAwIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICBsaXN0IGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgIHwgKGdyaWQsIGdyYXBoLCB0LCBldmVudCwgbGlzdCkgOjogcSwgU29tZSAoZ3JpZCcsIGdyYXBoJywgYSwgZXZlbnQnKSAtPlxuICAgICAgICB2aXNpdCBxXG4gICAgICAgICAgKChncmlkJywgZ3JhcGgnLCBhLCBldmVudCcsIExpc3Quc29ydCBjbXAgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgICAgIDo6IHN0b3JlZF9lbGVtZW50cylcbiAgICAgICAgICAoU29tZSAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50KSlcbiAgICAgICAgICAoKkxpc3QucmV2KikgbGlzdFxuICAgICAgfCAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50LCBsaXN0KSA6OiBxLCBOb25lIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIChTb21lIChncmlkLCBncmFwaCwgdCwgZXZlbnQpKSAoTGlzdC5yZXYgbGlzdClcbiAgICAgIHwgW10sIE5vbmUgLT4gW11cbiAgICAgIHwgW10sIFNvbWUgKGdyaWQsIGdyYXBoLCBhLCBldmVudCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoKGdyaWQsIGdyYXBoLCBhLCBldmVudCwgTGlzdC5zb3J0IGNtcCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpXG4gICAgICAgICAgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSB2aXNpdCBsaXN0IFtdIE5vbmUgW10gaW5cbiAgICBlcnJvciwgbGlzdFxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IGxpc3QgPSBzb3J0X291dGVyIChMaXN0LnJldiBsaXN0KSBpblxuICAgIGxldCByZWMgdmlzaXQgZWxlbWVudHNfdG9fc3RvcmUgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggZWxlbWVudHNfdG9fc3RvcmUsIGxhc3RfZWxlbWVudCB3aXRoXG4gICAgICB8ICgodCA6IHByZWhhc2gpLCBsaXN0KSA6OiBxLCBTb21lIG9sZCB3aGVuIGNvbXBhcmUgdCBvbGQgPSAwIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICBsaXN0IGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEsIFNvbWUgYSAtPlxuICAgICAgICB2aXNpdCBxICgoYSwgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKSA6OiBzdG9yZWRfZWxlbWVudHMpIChTb21lIHQpIGxpc3RcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEsIE5vbmUgLT4gdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgKFNvbWUgdCkgKExpc3QucmV2IGxpc3QpXG4gICAgICB8IFtdLCBOb25lIC0+IFtdXG4gICAgICB8IFtdLCBTb21lIGEgLT4gTGlzdC5yZXYgKChhLCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpIDo6IHN0b3JlZF9lbGVtZW50cylcbiAgICBpblxuICAgIGxldCBsaXN0ID0gdmlzaXQgbGlzdCBbXSBOb25lIFtdIGluXG4gICAgbGV0IHJlYyB2aXNpdDIgbCBsb2dfaW5mbyBlcnJvciBhY2MgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYWNjXG4gICAgICB8ICh0LCBsaXN0KSA6OiBxIC0+XG4gICAgICAgIGlmIExpc3QubGVuZ3RoIGxpc3QgPSAxIHRoZW5cbiAgICAgICAgICB2aXNpdDIgcSBsb2dfaW5mbyBlcnJvciAoKHQsIGxpc3QpIDo6IGFjYylcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCcgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0JykgKGdyaWQsIGdyYXBoLCBkYWcsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZGFnJyA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkYWcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICAgICAgICAgICAgfCBTb21lIGRhZyAtPiBlcnJvciwgbG9nX2luZm8sIGRhZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoZ3JpZCwgZ3JhcGgsIFNvbWUgZGFnJywgYiwgYykgOjogbGlzdCcpXG4gICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIFtdKSBsaXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxpc3QnID1cbiAgICAgICAgICAgIGhhc2hfaW5uZXIgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3JcbiAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgbGlzdCdcbiAgICAgICAgICBpblxuICAgICAgICAgIHZpc2l0MiBxIGxvZ19pbmZvIGVycm9yICgodCwgbGlzdCcpIDo6IGFjYylcbiAgICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9IHZpc2l0MiBsaXN0IGxvZ19pbmZvIGVycm9yIFtdIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbiAgbGV0IHByb2plY3RfdHVwbGUgKGdyaWQsIF8sIF8sIHRyYWNlLCBsaXN0KSA9IExpc3QuaGQgbGlzdCwgdHJhY2UsIGdyaWQsIGxpc3RcblxuICBsZXQgc29ydF9saXN0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IGZsYXRfbGlzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3Rfb3V0IChfcHJlaGFzaCwgbGlzdCkgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBsaXN0X291dCB0dXBsZSAtPiBwcm9qZWN0X3R1cGxlIHR1cGxlIDo6IGxpc3Rfb3V0KVxuICAgICAgICAgICAgbGlzdF9vdXQgbGlzdClcbiAgICAgICAgW10gbGlzdFxuICAgIGluXG4gICAgbGV0IGNvbXBhcmVfcGFpciAoYSwgXywgXywgXykgKGMsIF8sIF8sIF8pID1cbiAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5jb21wYXJlX2J5X3N0b3J5X2lkIGEgY1xuICAgIGluXG4gICAgbGV0IGZsYXRfbGlzdCA9IExpc3Quc29ydCBjb21wYXJlX3BhaXIgZmxhdF9saXN0IGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgTGlzdC5yZXZfbWFwIChmdW4gKF9hLCBiLCBjLCBkKSAtPiBiLCBjLCBkKSAoTGlzdC5yZXYgZmxhdF9saXN0KSApXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBuIGwgLT4gbiArIExpc3QubGVuZ3RoIChzbmQgbCkpIDAgbGlzdFxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAoZXJyb3IgOiBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0KSBnIGxpc3QgYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYSAoXywgbCkgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGEpIChfLCBfLCBfLCB4LCB5KSAtPlxuICAgICAgICAgICAgZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgYSlcbiAgICAgICAgICBhIGwpXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBhKSAoTGlzdC5yZXYgbGlzdClcbmVuZFxuXG5tb2R1bGUgQnVja2V0VGFibGUgOiBTdG9yeVRhYmxlID0gc3RydWN0XG4gIHR5cGUgc3RvcnlfaWQgPSBpbnRcblxuICBsZXQgc3VjY19zdG9yeV9pZCA9IHN1Y2NcblxuICB0eXBlIHByZWhhc2hfZWx0ID0gbm9kZSAqIGludFxuXG4gIG1vZHVsZSBLZXlTID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGtleVxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUHJlSGFzaFMgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlaGFzaF9lbHRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbW9kdWxlIEtleU1hcCA9IEtleVMuTWFwXG4gIG1vZHVsZSBQcmVIYXNoTWFwID0gUHJlSGFzaFMuTWFwXG5cbiAgdHlwZSBpbm5lcl90cmVlID1cbiAgICB8IElubmVyX25vZGUgb2YgKGlubmVyX3RyZWUgS2V5TWFwLnQgKiBzdG9yeV9pZCBvcHRpb24pXG4gICAgfCBJbm5lcl9sZWF2ZSBvZiAoa2V5IGxpc3QgKiBzdG9yeV9pZClcblxuICB0eXBlIG91dGVyX3RyZWUgPVxuICAgIHwgRW1wdHlcbiAgICB8IE91dGVyX25vZGUgb2YgKG91dGVyX3RyZWUgUHJlSGFzaE1hcC50ICogc3RvcnlfaWQgb3B0aW9uKVxuICAgIHwgT3V0ZXJfbGVhdmUgb2YgKHByZWhhc2hfZWx0IGxpc3QgKiBzdG9yeV9pZClcbiAgICB8IFRvX2lubmVyIG9mIChvdXRlcl90cmVlIFByZUhhc2hNYXAudCAqIGlubmVyX3RyZWUpXG5cbiAgdHlwZSB0YWJsZSA9IHtcbiAgICB0cmVlOiBvdXRlcl90cmVlO1xuICAgIGFycmF5OlxuICAgICAgKENhdXNhbC5ncmlkXG4gICAgICAqIGdyYXBoXG4gICAgICAqIGNhbm9uaWNhbF9mb3JtIG9wdGlvblxuICAgICAgKiBUcmFjZS50XG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnQ7XG4gICAgZnJlc2hfaWQ6IHN0b3J5X2lkO1xuICB9XG5cbiAgbGV0IGluaXRfdGFibGUgcGFyYW1ldGVycyBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciA9XG4gICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5jcmVhdGVcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKVxuICAgICAgICBlcnJvciAwXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgdHJlZSA9IEVtcHR5OyBhcnJheTsgZnJlc2hfaWQgPSAwIH1cblxuICBsZXQgZ2V0X2Nhbm5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZCB0YWJsZSA9XG4gICAgbGV0IGVycm9yLCBhc3NvYyA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5nZXRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGlkIHRhYmxlLmFycmF5XG4gICAgaW5cbiAgICBtYXRjaCBhc3NvYyB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGEgPVxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwidW5rbm93biBzdG9yeSBpZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbnNpc3RlbnQgc3RvcnkgaWRcIikgKHRhYmxlLCBbXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGFcbiAgICB8IFNvbWUgKF8sIF8sIFNvbWUgY2Fubm9uaWMsIF8sIF8pIC0+IGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pYylcbiAgICB8IFNvbWUgKGdyaWQsIGdyYXBoLCBOb25lLCB0cmFjZSwgaW5mbykgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljID1cbiAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBhcnJheScgPVxuICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5zZXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBpZFxuICAgICAgICAgIChncmlkLCBncmFwaCwgU29tZSBjYW5ub25pYywgdHJhY2UsIGluZm8pXG4gICAgICAgICAgdGFibGUuYXJyYXlcbiAgICAgIGluXG4gICAgICBsZXQgdGFibGUgPSB7IHRhYmxlIHdpdGggYXJyYXkgPSBhcnJheScgfSBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljKVxuXG4gIGxldCBhZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBzdG9yeV9pbmZvIHRhYmxlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZ3JhcGggPVxuICAgICAgZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByZWhhc2ggPSBwcmVoYXNoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGdyYXBoIGluXG4gICAgbGV0IGFzc29jID0gZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBzdG9yeV9pbmZvIGluXG4gICAgbGV0IGFkZF9zdG9yeSBlcnJvciB4IHRhYmxlID1cbiAgICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5zZXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciB0YWJsZS5mcmVzaF9pZCB4IHRhYmxlLmFycmF5XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgaWZcbiAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICBwcmludF9ncmFwaFxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB0YWJsZS5mcmVzaF9pZCBzdG9yeV9pbmZvIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvclxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICB0YWJsZS5mcmVzaF9pZCxcbiAgICAgICAgeyB0YWJsZSB3aXRoIGFycmF5OyBmcmVzaF9pZCA9IHN1Y2Nfc3RvcnlfaWQgdGFibGUuZnJlc2hfaWQgfSApXG4gICAgaW5cbiAgICBsZXQgYWRkX3N0b3J5X2luZm8gZXJyb3Igc3RvcnlfaW5mbyBpZCB0YWJsZSA9XG4gICAgICBsZXQgZXJyb3IsIGFzc29fb3B0ID1cbiAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZ2V0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgaWQgdGFibGUuYXJyYXlcbiAgICAgIGluXG4gICAgICBtYXRjaCBhc3NvX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gc3RvcnkgaWRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiVW5rbm93biBzdG9yeSBpZFwiKSB0YWJsZVxuICAgICAgfCBTb21lIChncmlkLCBncmFwaCwgY2Fub25pYywgdHJhY2UsIGluZm8pIC0+XG4gICAgICAgIGxldCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyID1cbiAgICAgICAgICBtYXRjaCBILmdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gU3RvcnlfanNvbi5DYXVzYWxcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFN0b3J5X2pzb24uc3RvcnlfbW9kZSA9IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXI7XG4gICAgICAgICAgICBTdG9yeV9qc29uLmxvZ19pbmZvID0gc3RvcnlfaW5mbztcbiAgICAgICAgICAgIFN0b3J5X2pzb24uc3RvcnkgPSBTdG9yeV9qc29uLlNhbWVfYXMgaWQ7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXIgKFN0b3J5X2pzb24uU3RvcnkgcmVzdWx0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5zZXRcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgZXJyb3IgaWRcbiAgICAgICAgICAgIChncmlkLCBncmFwaCwgY2Fub25pYywgdHJhY2UsIHN0b3J5X2luZm8gQCBpbmZvKVxuICAgICAgICAgICAgdGFibGUuYXJyYXlcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgdGFibGUgd2l0aCBhcnJheSB9XG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2Fzc29jIGVycm9yIGNhbm9uaWNfZm9ybSBhc3NvYyA9XG4gICAgICBtYXRjaCBhc3NvYyB3aXRoXG4gICAgICB8IGdyaWQsIGdyYXBoLCBOb25lLCB0cmFjZSwgaW5mbyAtPlxuICAgICAgICBlcnJvciwgKGdyaWQsIGdyYXBoLCBTb21lIGNhbm9uaWNfZm9ybSwgdHJhY2UsIGluZm8pXG4gICAgICB8IF8sIF8sIFNvbWUgXywgXywgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiB0aGlzIHN0b3J5IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiXG4gICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiBzdG9yaWVzICBzaG91bGQgbm90IGhhdmUgYmVlbiBjb21wdXRlZCB5ZXRcIilcbiAgICAgICAgICBhc3NvY1xuICAgIGluXG4gICAgbGV0IHJlYyBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIGNhbm9uaWNfZm9ybSBjYW5vbmljX2Zvcm0nIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICA9XG4gICAgICBtYXRjaCBjYW5vbmljX2Zvcm0sIGNhbm9uaWNfZm9ybScgd2l0aFxuICAgICAgfCBbXSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0YWJsZSA9IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQnIHRhYmxlIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIElubmVyX2xlYXZlIChbXSwgaWQnKVxuICAgICAgfCB0IDo6IHEsIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCAoSW5uZXJfbGVhdmUgKHEsIGlkKSkgS2V5TWFwLmVtcHR5LCBTb21lIGlkJylcbiAgICAgICAgKVxuICAgICAgfCBbXSwgdCcgOjogcScgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZVxuICAgICAgICAgICAgKEtleU1hcC5hZGQgdCcgKElubmVyX2xlYXZlIChxJywgaWQnKSkgS2V5TWFwLmVtcHR5LCBTb21lIGlkKSApXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgd2hlbiB0ID0gdCcgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIHRyZWUgPVxuICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgcSBxJyBpZCcgYXNzb2MgdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IHRyZWUgS2V5TWFwLmVtcHR5LCBOb25lKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIElubmVyX25vZGVcbiAgICAgICAgICAgICggS2V5TWFwLmFkZCB0XG4gICAgICAgICAgICAgICAgKElubmVyX2xlYXZlIChxLCBpZCkpXG4gICAgICAgICAgICAgICAgKEtleU1hcC5hZGQgdCcgKElubmVyX2xlYXZlIChxJywgaWQnKSkgS2V5TWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgTm9uZSApIClcbiAgICBpblxuICAgIGxldCByZWMgYXV4X291dGVyMiBsb2dfaW5mbyBlcnJvciBwcmVoYXNoIHByZWhhc2gnIGlkJyB0YWJsZSA9XG4gICAgICBtYXRjaCBwcmVoYXNoLCBwcmVoYXNoJyB3aXRoXG4gICAgICB8IFtdLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYW5ub25pY19mb3JtID1cbiAgICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBhc3NvYyA9IHVwZGF0ZV9hc3NvYyBlcnJvciBjYW5ub25pY19mb3JtIGFzc29jIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWNfZm9ybScpID1cbiAgICAgICAgICBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkJyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXIgPVxuICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fubm9uaWNfZm9ybSBjYW5ub25pY19mb3JtJyBpZCcgYXNzb2MgdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgVG9faW5uZXIgKFByZUhhc2hNYXAuZW1wdHksIGlubmVyKVxuICAgICAgfCB0IDo6IHEsIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0IChPdXRlcl9sZWF2ZSAocSwgaWQpKSBQcmVIYXNoTWFwLmVtcHR5LCBTb21lIGlkJylcbiAgICAgICAgKVxuICAgICAgfCBbXSwgdCcgOjogcScgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQnIChPdXRlcl9sZWF2ZSAocScsIGlkJykpIFByZUhhc2hNYXAuZW1wdHksIFNvbWUgaWQpXG4gICAgICAgIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyB3aGVuIHQgPSB0JyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgdHJlZSA9XG4gICAgICAgICAgYXV4X291dGVyMiBsb2dfaW5mbyBlcnJvciBxIHEnIGlkJyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIE91dGVyX25vZGUgKFByZUhhc2hNYXAuYWRkIHQgdHJlZSBQcmVIYXNoTWFwLmVtcHR5LCBOb25lKSApXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgKCBQcmVIYXNoTWFwLmFkZCB0XG4gICAgICAgICAgICAgICAgKE91dGVyX2xlYXZlIChxLCBpZCkpXG4gICAgICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQnIChPdXRlcl9sZWF2ZSAocScsIGlkJykpIFByZUhhc2hNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICBOb25lICkgKVxuICAgIGluXG4gICAgbGV0IHJlYyBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBzdWZmaXggaW5uZXJfdHJlZSB0YWJsZSA9XG4gICAgICBtYXRjaCBzdWZmaXggd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAobWF0Y2ggaW5uZXJfdHJlZSB3aXRoXG4gICAgICAgIHwgSW5uZXJfbm9kZSAobWFwLCBOb25lKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIElubmVyX25vZGUgKG1hcCwgU29tZSBpZClcbiAgICAgICAgfCBJbm5lcl9ub2RlIChfLCBTb21lIGlkJykgfCBJbm5lcl9sZWF2ZSAoW10sIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHRhYmxlID0gYWRkX3N0b3J5X2luZm8gZXJyb3Igc3RvcnlfaW5mbyBpZCcgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lcl90cmVlXG4gICAgICAgIHwgSW5uZXJfbGVhdmUgKHQnIDo6IHEnLCBpZCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICBJbm5lcl9ub2RlXG4gICAgICAgICAgICAgIChLZXlNYXAuYWRkIHQnIChJbm5lcl9sZWF2ZSAocScsIGlkJykpIEtleU1hcC5lbXB0eSwgU29tZSBpZCkgKSlcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIChtYXRjaCBpbm5lcl90cmVlIHdpdGhcbiAgICAgICAgfCBJbm5lcl9ub2RlIChtYXAsIGFzc29jJykgLT5cbiAgICAgICAgICAobWF0Y2ggS2V5TWFwLmZpbmRfb3B0aW9uIHQgbWFwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICAgbGV0IGlubmVyX3RyZWUgPVxuICAgICAgICAgICAgICBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgKElubmVyX2xlYXZlIChxLCBpZCkpIG1hcCwgYXNzb2MnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyX3RyZWVcbiAgICAgICAgICB8IFNvbWUgaW5uZXJfdHJlZScgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgaW5uZXJfdHJlZScnID1cbiAgICAgICAgICAgICAgYXV4X2lubmVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gcSBpbm5lcl90cmVlJyB0YWJsZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGlubmVyX3RyZWUnJyA9PSBpbm5lcl90cmVlJyB0aGVuXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBpbm5lcl90cmVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgdGFibGUnLFxuICAgICAgICAgICAgICAgIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCBpbm5lcl90cmVlJycgbWFwLCBhc3NvYycpICkpXG4gICAgICAgIHwgSW5uZXJfbGVhdmUgKGwnLCBpZCcpIC0+XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBzdWZmaXggbCcgaWQnIGFzc29jIHRhYmxlKVxuICAgIGluXG4gICAgbGV0IHJlYyBhdXhfb3V0ZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBzdWZmaXggb3V0ZXJfdHJlZSB0YWJsZSA9XG4gICAgICBtYXRjaCBzdWZmaXggd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAobWF0Y2ggb3V0ZXJfdHJlZSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBPdXRlcl9sZWF2ZSAoc3VmZml4LCBpZClcbiAgICAgICAgfCBPdXRlcl9ub2RlIChtYXAsIE5vbmUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgT3V0ZXJfbm9kZSAobWFwLCBTb21lIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgU29tZSBpZCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBncmFwaCA9XG4gICAgICAgICAgICBtYXRjaCBhc3NvYyB3aXRoXG4gICAgICAgICAgICB8IF8sIGdyYXBoLCBOb25lLCBfLCBfIC0+IGVycm9yLCBncmFwaFxuICAgICAgICAgICAgfCBfLCBncmFwaCwgU29tZSBfLCBfLCBfIC0+XG4gICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHN0b3JpZXMgaW4gdGhlIG91dGVyIHRyZWUgc2hvdWxkIG5vdCBcXFxuICAgICAgICAgICAgICAgICAgIGhhdmUgYmVlbiBjb21wdXRlZCB5ZXRcIlxuICAgICAgICAgICAgICAgIChGYWlsdXJlXG4gICAgICAgICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2Ygc3RvcmllcyBpbiB0aGUgb3V0ZXIgdHJlZSBzaG91bGQgbm90IFxcXG4gICAgICAgICAgICAgICAgICAgIGhhdmUgYmVlbiBjb21wdXRlIHlldFwiKVxuICAgICAgICAgICAgICAgIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYW5ub25pY19mb3JtID1cbiAgICAgICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBhc3NvYyA9IHVwZGF0ZV9hc3NvYyBlcnJvciBjYW5ub25pY19mb3JtIGFzc29jIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pY19mb3JtJykgPVxuICAgICAgICAgICAgZ2V0X2Nhbm5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZCcgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIGNhbm5vbmljX2Zvcm0gY2Fubm9uaWNfZm9ybScgaWQnIGFzc29jXG4gICAgICAgICAgICAgIHRhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBUb19pbm5lciAobWFwLCBpbm5lcilcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAoX3EsIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHRhYmxlID0gYWRkX3N0b3J5X2luZm8gZXJyb3Igc3RvcnlfaW5mbyBpZCcgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBvdXRlcl90cmVlXG4gICAgICAgIHwgVG9faW5uZXIgKG1hcCwgaW5uZXIpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3VmZml4ID1cbiAgICAgICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBhc3NvYyA9IHVwZGF0ZV9hc3NvYyBlcnJvciBzdWZmaXggYXNzb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXIgPVxuICAgICAgICAgICAgYXV4X2lubmVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gc3VmZml4IGlubmVyIHRhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBUb19pbm5lciAobWFwLCBpbm5lcikpXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICAobWF0Y2ggb3V0ZXJfdHJlZSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBPdXRlcl9sZWF2ZSAoc3VmZml4LCBpZClcbiAgICAgICAgfCBPdXRlcl9ub2RlIChtYXAsIGFzc29jJykgLT5cbiAgICAgICAgICAobWF0Y2ggUHJlSGFzaE1hcC5maW5kX29wdGlvbiB0IG1hcCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAgIGxldCBpbm5lcl90cmVlID1cbiAgICAgICAgICAgICAgT3V0ZXJfbm9kZSAoUHJlSGFzaE1hcC5hZGQgdCAoT3V0ZXJfbGVhdmUgKHEsIGlkKSkgbWFwLCBhc3NvYycpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXJfdHJlZVxuICAgICAgICAgIHwgU29tZSBvdXRlcl90cmVlJyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBvdXRlcl90cmVlJycgPVxuICAgICAgICAgICAgICBhdXhfb3V0ZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBxIG91dGVyX3RyZWUnIHRhYmxlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgb3V0ZXJfdHJlZScnID09IG91dGVyX3RyZWUnIHRoZW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIG91dGVyX3RyZWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICB0YWJsZScsXG4gICAgICAgICAgICAgICAgT3V0ZXJfbm9kZSAoUHJlSGFzaE1hcC5hZGQgdCBvdXRlcl90cmVlJycgbWFwLCBhc3NvYycpICkpXG4gICAgICAgIHwgT3V0ZXJfbGVhdmUgKHQnIDo6IHEnLCBpZCcpIHdoZW4gbm90ICh0ID0gdCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAgICggUHJlSGFzaE1hcC5hZGQgdFxuICAgICAgICAgICAgICAgICAgKE91dGVyX2xlYXZlIChxLCBpZCkpXG4gICAgICAgICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSksXG4gICAgICAgICAgICAgICAgTm9uZSApIClcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAobCcsIGlkJykgLT4gYXV4X291dGVyMiBsb2dfaW5mbyBlcnJvciBzdWZmaXggbCcgaWQnIHRhYmxlXG4gICAgICAgIHwgVG9faW5uZXIgKF9tYXAsIGlubmVyKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgVG9faW5uZXJcbiAgICAgICAgICAgICAgKCBQcmVIYXNoTWFwLmFkZCB0XG4gICAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0IChPdXRlcl9sZWF2ZSAocSwgaWQpKSBQcmVIYXNoTWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgICBpbm5lciApICkpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgdHJlZSA9XG4gICAgICBhdXhfb3V0ZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgKGdyaWQsIGdyYXBoLCBOb25lLCBwcmV0cmFjZSwgc3RvcnlfaW5mbylcbiAgICAgICAgc3RvcnlfaW5mbyBwcmVoYXNoIHRhYmxlLnRyZWUgdGFibGVcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyB0YWJsZSB3aXRoIHRyZWUgfVxuXG4gICgqIGxldCByZWMgcHJpbnRfaW5uZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXggaW5uZXJfdHJlZSA9XG4gICAgIG1hdGNoXG4gICAgIGlubmVyX3RyZWVcbiAgICAgd2l0aFxuICAgICB8IElubmVyX25vZGUgKG1hcCxhc3NvYycpIC0+XG4gICAgIGxldCAoKSA9XG4gICAgIG1hdGNoXG4gICAgIGFzc29jJ1xuICAgICB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVW5maWxsZWQgTm9kZVxcblwiIHByZWZpeFxuICAgICB8IFNvbWUgKGlkKSAgLT5cbiAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0ZpbGxlZCBOb2RlOiAlaVxcblwiIHByZWZpeCBpZFxuICAgICBpblxuICAgICBsZXQgcHJlZml4JyA9IHByZWZpeF5cIiBcIiBpblxuICAgICBLZXlNYXAuaXRlclxuICAgICAoZnVuIGVsdCBtYXAgLT5cbiAgICAgcHJpbnRfZWx0IHBhcmFtZXRlci5ILm91dF9jaGFubmVsIGVsdDtcbiAgICAgcHJpbnRfaW5uZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIG1hcClcbiAgICAgbWFwXG4gICAgIHwgSW5uZXJfbGVhdmUgKGwsaWQpICAtPlxuICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzTEVBVkU6XFxuXCIgcHJlZml4IGluXG4gICAgIGxldCBfID0gcHJpbnRfY2Fub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgbCBpblxuICAgICAoKSopXG5cbiAgKCpcbmxldCByZWMgcHJpbnRfb3V0ZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXggb3V0ZXJfdHJlZSA9XG4gICAgICBtYXRjaFxuICAgICAgICBvdXRlcl90cmVlXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzRU1QVFlcXG5cIiBwcmVmaXhcbiAgICAgICAgfCBPdXRlcl9ub2RlIChtYXAsYXNzb2MnKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaFxuICAgICAgICBhc3NvYydcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc1VuZmlsbGVkIE5vZGVcXG5cIiBwcmVmaXhcbiAgICAgICAgfCBTb21lIChpZCkgIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNGaWxsZWQgTm9kZTogJWlcXG5cIiBwcmVmaXggaWRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByZWZpeCcgPSBwcmVmaXheXCIgXCIgaW5cbiAgICAgICAgUHJlSGFzaE1hcC5pdGVyXG4gICAgICAgIChmdW4gKChfLGIpLGkpICBtYXAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlcyVzOiVpLT5cXG5cIiBwcmVmaXggYiBpIDtcbiAgICAgICAgcHJpbnRfb3V0ZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIG1hcClcbiAgICAgICAgbWFwXG4gICAgICAgIHwgT3V0ZXJfbGVhdmUgKGwsaWQpICAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzTEVBVkU6XFxuXCIgcHJlZml4IGluXG4gICAgICAgIGxldCBfID0gcHJpbnRfcHJlaGFzaCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsIGluXG4gICAgICAgICgpXG4gICAgICAgIHwgVG9faW5uZXIgKG1hcCxpbm5lcikgLT5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc1RPIElOTkVSIFRSRUU6XFxuXCIgcHJlZml4IGluXG4gICAgICAgIGxldCBwcmVmaXgnID0gcHJlZml4XlwiIFwiIGluXG4gICAgICAgIGxldCAoKSA9IFByZUhhc2hNYXAuaXRlclxuICAgICAgICAoZnVuICgoXyxiKSxpKSAgbWFwIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXMlczolaS0+XFxuXCIgcHJlZml4IGIgaSA7XG4gICAgICAgIHByaW50X291dGVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBtYXApXG4gICAgICAgIG1hcFxuICAgICAgICBpblxuICAgICAgICBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgaW5uZXIgKilcblxuICBsZXQgaGFzaF9saXN0IHBhcmFtZXRlciBfIGxvZ19pbmZvIGVycm9yIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmZvbGRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yXG4gICAgICAgIChmdW4gcGFyYW1ldGVyJyBlcnJvciBpIChhLCBiLCBjLCBkLCBlKSBhcnJheSAtPlxuICAgICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldCBwYXJhbWV0ZXInIGVycm9yIGlcbiAgICAgICAgICAgIChhLCBiLCBjLCBkLCBMaXN0LnNvcnQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgZSlcbiAgICAgICAgICAgIGFycmF5KVxuICAgICAgICB0YWJsZS5hcnJheSB0YWJsZS5hcnJheVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHRhYmxlIHdpdGggYXJyYXkgfVxuXG4gIGxldCBzb3J0X2xpc3QgcGFyYW1ldGVyIF8gbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIGxldCBlcnJvciwgbCA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5mb2xkXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvclxuICAgICAgICAoZnVuIF9wYXJhbWV0ZXIgZXJyb3IgXyAoYSwgX2IsIF9jLCBkLCBlKSBsIC0+IGVycm9yLCAoZCwgYSwgZSkgOjogbClcbiAgICAgICAgdGFibGUuYXJyYXkgW11cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbFxuXG4gIGxldCBjb3VudF9zdG9yaWVzIHRhYmxlID0gdGFibGUuZnJlc2hfaWRcblxuICBsZXQgZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBmIHRhYmxlIGEgPVxuICAgIGxldCBhLCAoYiwgYykgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXInIGVycm9yIF8gKF8sIF8sIF8sIGQsIGUpIChsb2dfaW5mbywgYSkgLT5cbiAgICAgICAgICBsZXQgYSwgYiwgYyA9XG4gICAgICAgICAgICBmXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyJyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZCBlIGFcbiAgICAgICAgICBpblxuICAgICAgICAgIGEsIChiLCBjKSlcbiAgICAgICAgdGFibGUuYXJyYXkgKGxvZ19pbmZvLCBhKVxuICAgIGluXG4gICAgYSwgYiwgY1xuZW5kXG5cbm1vZHVsZSB0eXBlIFNlbGVjdG9yID0gc2lnXG4gIHZhbCBjaG9vc2VfZnN0IDogSC5wYXJhbWV0ZXIgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSBDaG9pY2UgKFMgOiBTZWxlY3RvcikgKEEgOiBTdG9yeVRhYmxlKSAoQiA6IFN0b3J5VGFibGUpIDogU3RvcnlUYWJsZSA9XG5zdHJ1Y3RcbiAgdHlwZSB0YWJsZSA9IEEgb2YgQS50YWJsZSB8IEIgb2YgQi50YWJsZVxuXG4gIGxldCBpbml0X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBpZiBTLmNob29zZV9mc3QgcGFyYW1ldGVyIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmluaXRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEEgdGFibGVcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBCLmluaXRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEIgdGFibGVcbiAgICApXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGUgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQS5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBBIHRhYmxlXG4gICAgfCBCIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEIuYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2UgaW5mbyB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQS5oYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEEgdGFibGVcbiAgICB8IEIgdGFibGUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQi5oYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEIgdGFibGVcblxuICBsZXQgc29ydF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+IEEuc29ydF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlXG4gICAgfCBCIHRhYmxlIC0+IEIuc29ydF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgdGFibGUgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT4gQS5jb3VudF9zdG9yaWVzIHRhYmxlXG4gICAgfCBCIHRhYmxlIC0+IEIuY291bnRfc3RvcmllcyB0YWJsZVxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGcgdGFibGUgYSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPiBBLmZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZyB0YWJsZSBhXG4gICAgfCBCIHRhYmxlIC0+IEIuZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBnIHRhYmxlIGFcbmVuZFxuXG4oKiBtb2R1bGUgU3RvcnlUYWJsZSA9IExpc3RUYWJsZSopXG4oKiBtb2R1bGUgU3RvcnlUYWJsZSA9IEJ1Y2tldFRhYmxlKilcbm1vZHVsZSBTdG9yeVRhYmxlID1cbiAgQ2hvaWNlXG4gICAgKHN0cnVjdFxuICAgICAgbGV0IGNob29zZV9mc3QgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmRvX3dlX3VzZV9idWNrZXRfc29ydFxuICAgIGVuZClcbiAgICAoQnVja2V0VGFibGUpXG4gICAgKExpc3RUYWJsZSlcbiIsIigqKlxuICogdXRpbGl0aWVzLm1sXG4gKlxuICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE1LTAzLTI4IGZlcmV0PlxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTAzIDIwOjUzOjE0IGZlcmV0PlxuICpcbiAqIEFQSSBmb3IgY2F1c2FsIGNvbXByZXNzaW9uXG4gKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAqXG4gKiBDb3B5cmlnaHQgMjAxNSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlXG4gKiBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcblxubW9kdWxlIEQgPSBEYWcuU3RvcnlUYWJsZVxubW9kdWxlIFMgPSBHZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5Tb2x2ZXJcbm1vZHVsZSBQID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0c1xuXG50eXBlIGVycm9yX2xvZyA9IEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcbnR5cGUgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXJcbnR5cGUga2FwcGFfaGFuZGxlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguaGFuZGxlclxudHlwZSBwcm9maWxpbmdfaW5mbyA9IFAubG9nX2luZm9cbnR5cGUgc2hhbGxfd2UgPSBwYXJhbWV0ZXIgLT4gYm9vbFxudHlwZSBzdGVwID0gVHJhY2Uuc3RlcFxudHlwZSBzdGVwX3dpdGhfc2lkZV9lZmZlY3RzID0gc3RlcCAqIFMuUEguQi5QQi5DSS5Qby5LLnNpZGVfZWZmZWN0XG50eXBlIHN0ZXBfaWQgPSBTLlBILkIuUEIuc3RlcF9pZFxuXG50eXBlIHRyYWNlID0ge1xuICBjb21wcmVzc2VkX3RyYWNlOiBzdGVwX3dpdGhfc2lkZV9lZmZlY3RzIGxpc3Qgb3B0aW9uO1xuICBwcmV0cmFjZTogc3RlcCBsaXN0O1xuICB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHk6IGJvb2w7XG59XG5cbnR5cGUgdHJhY2VfcnVudGltZV9pbmZvID0gcHJvZmlsaW5nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnRcblxudHlwZSAnYSB3aXRoX2hhbmRsZXJzID1cbiAgcGFyYW1ldGVyIC0+XG4gID9zaGFsbF93ZV9jb21wdXRlOnNoYWxsX3dlIC0+XG4gID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpzaGFsbF93ZSAtPlxuICA/cHJpbnRfaWZfemVybzpzaGFsbF93ZSAtPlxuICBrYXBwYV9oYW5kbGVyIC0+XG4gIHByb2ZpbGluZ19pbmZvIC0+XG4gIGVycm9yX2xvZyAtPlxuICAnYVxuXG50eXBlICdhIHplcm9hcnkgPSAoZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYSkgd2l0aF9oYW5kbGVyc1xudHlwZSAoJ2EsICdiKSB1bmFyeSA9ICgnYSAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdiKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gICgnYSAtPiAnYiAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdjKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2QpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBxdWF0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2UpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcXVpbnRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZikgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLCAnZykgc2V4dGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnZiAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdnKVxuICB3aXRoX2hhbmRsZXJzXG5cbmxldCAod2Vfc2hhbGwgOiBzaGFsbF93ZSkgPSBmdW4gXyAtPiB0cnVlXG5sZXQgKHdlX3NoYWxsX25vdCA6IHNoYWxsX3dlKSA9IGZ1biBfIC0+IGZhbHNlXG5sZXQgZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlID0gdHJhY2UucHJldHJhY2VcbmxldCBzaXplX29mX3ByZXRyYWNlIHRyYWNlID0gTGlzdC5sZW5ndGggKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSlcbmxldCBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgPSB0cmFjZS53aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHlcbmxldCBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0geCB9XG5sZXQgX3NldF9wcmV0cmFjZSB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIHByZXRyYWNlID0geCB9XG5sZXQgX3NldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggY29tcHJlc3NlZF90cmFjZSA9IHggfVxuXG5sZXQgZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgPVxuICBtYXRjaCB0cmFjZS5jb21wcmVzc2VkX3RyYWNlIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIFtdKSAoTGlzdC5yZXYgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSkpXG5cbmxldCBpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlID0gdHJhY2UuY29tcHJlc3NlZF90cmFjZSAhPSBOb25lXG5cbmxldCB0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSB3aXRoX2FtYmlndWl0eSBwcmV0cmFjZSA9XG4gIHtcbiAgICBwcmV0cmFjZTtcbiAgICBjb21wcmVzc2VkX3RyYWNlID0gTm9uZTtcbiAgICB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSB3aXRoX2FtYmlndWl0eTtcbiAgfVxuXG5sZXQgdHJhY2Vfb2ZfcHJldHJhY2UgPSB0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSB0cnVlXG5cbmxldCBidWlsZF9jb21wcmVzc2VkX3RyYWNlIHggeSA9XG4gIHsgY29tcHJlc3NlZF90cmFjZSA9IFNvbWUgeTsgcHJldHJhY2UgPSB4OyB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSBmYWxzZSB9XG5cbigqbGV0IGdldF9sb2dfc3RlcCA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ19zdGVwXG4gIGxldCBnZXRfZGVidWdnaW5nX21vZGUgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfbW9kZVxuICBsZXQgZ2V0X2xvZ2dlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciopXG5sZXQgZ2V0X2lkX29mX2V2ZW50ID0gUy5QSC5CLlBCLkNJLlBvLksuZ2V0X2lkX29mX3JlZmluZWRfc3RlcFxubGV0IGdldF9zaW11bGF0aW9uX3RpbWVfb2ZfZXZlbnQgPSBTLlBILkIuUEIuQ0kuUG8uSy5nZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXBcblxubGV0IF9leHRlbmRfdHJhY2Vfd2l0aF9kdW1teV9zaWRlX2VmZmVjdHMgbCA9XG4gIExpc3QucmV2X21hcCAoZnVuIGEgLT4gYSwgW10pIChMaXN0LnJldiBsKVxuXG5sZXQgcHJpbnRfcHJldHJhY2UgcGFyYW1ldGVyIF9oYW5kbGVyID1cbiAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X291dF9jaGFubmVsIHBhcmFtZXRlcilcbiAgICBcIkBbPHY+JWFAXUAuXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDp0cnVlID9lbnY6Tm9uZSkpXG5cbmxldCBwcmludF90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciB0cmFjZSA9XG4gIHByaW50X3ByZXRyYWNlIHBhcmFtZXRlciBoYW5kbGVyIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5cbmxldCB0cmFuc2Zvcm1fdHJhY2VfZ2VuIGYgbG9nX21lc3NhZ2UgZGVidWdfbWVzc2FnZSBwcm9maWxpbmdfZXZlbnQgcGFyYW1ldGVyc1xuICAgID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKSA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKVxuICAgICAgICBlcnJvciBwcm9maWxpbmdfZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGxldCBib29sID1cbiAgICAgIGlmIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ19zdGVwIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxvZ19tZXNzYWdlIHdpdGhcbiAgICAgICAgfCBTb21lIGxvZ19tZXNzYWdlIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgIFwiJXMlc1wiXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKSlcbiAgICAgICAgICAgICAgbG9nX21lc3NhZ2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZsdXNoX2xvZ2dlciAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgKSBlbHNlXG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgcHJldHJhY2UgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAocHJldHJhY2UnLCBuKSA9XG4gICAgICBmIHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBwcmV0cmFjZVxuICAgIGluXG4gICAgbGV0IHRyYWNlJyA9IHRyYWNlX29mX3ByZXRyYWNlIHByZXRyYWNlJyBpblxuICAgIGxldCB0cmFjZSA9XG4gICAgICBpZiB0cmFjZSA9PSB0cmFjZScgdGhlblxuICAgICAgICB0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlJyAobWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgaWYgcHJpbnRfaWZfemVybyBwYXJhbWV0ZXJzIHRoZW5cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgIFwiOiBub3RoaW5nIGhhcyBjaGFuZ2VkIEAuXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIkAuXCJcbiAgICAgICAgZWxzZSBpZiBuID4gMCB0aGVuXG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjogLSVpIGV2ZW50cyBALlwiIG5cbiAgICAgICAgZWxzZVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCI6ICslaSBldmVudHMgQC5cIiAoLW4pXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXJcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcnMpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZSBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IGRlYnVnX21lc3NhZ2VcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcHJpbnRfdHJhY2UgcGFyYW1ldGVycyBrYXBwYV9oYW5kbGVyIHRyYWNlXG4gICAgICApXG4gICAgaW5cblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIHByb2ZpbGluZ19ldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuICApIGVsc2VcbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG5cbnR5cGUga2luZCA9ICgqICB8IFNvbHZlX2FtYmlndWl0aWVzKilcbiAgfCBNYXlfYWRkX2FtYmlndWl0aWVzIHwgTmV1dHJhbFxuXG5sZXQgaGFuZGxlX2FtYmlndWl0aWVzIGtpbmQgYiA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICAoKiAgfCBTb2x2ZV9hbWJpZ3VpdGllcyAtPiBmYWxzZSopXG4gIHwgTmV1dHJhbCAtPiBiXG4gIHwgTWF5X2FkZF9hbWJpZ3VpdGllcyAtPiB0cnVlXG5cbnR5cGUgYW1iaXF1aXRpZXNfcHJlY29uZGl0aW9uID1cbiAgfCBEb19ub3RfY2FyZVxuICB8IFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSAoKnwgQmV0dGVyX3doZW5fbm9fYW1iaWd1aXR5KilcblxubGV0IG11c3Rfd2Vfc29sdmVfYW1iaWd1aXR5IF9wYXJhbWV0ZXJzIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBEb19ub3RfY2FyZSAtPiBmYWxzZVxuICB8IFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSAtPiB0cnVlXG4oKiAgfCBCZXR0ZXJfd2hlbl9ub19hbWJpZ3VpdHkgLT4gUy5QSC5CLlBCLkNJLlBvLksuSC5hbHdheXNfZGlzYW1iaWd1YXRlIHBhcmFtZXRlcnMqKVxuXG5sZXQgbW9uYWRpY19saWZ0IGYgXyBfIGxvZ19pbmZvIGVycm9yIHQgPVxuICBsZXQgdCcgPSBmIHQgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAodCcsIExpc3QubGVuZ3RoIHQgLSBMaXN0Lmxlbmd0aCB0JylcblxubGV0IF9kdW1teV9wcm9maWxpbmcgXyBwID0gcFxuXG5sZXQgZGlzYW1iaWd1YXRlID1cbiAgdHJhbnNmb3JtX3RyYWNlX2dlblxuICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuZGlzYW1iaWd1YXRlKVxuICAgIChTb21lIFwiXFx0LSBhbHBoYS1jb252ZXJzaW9uXCIpIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbmFtZXMgYWdlbnRzOlxcblwiXG4gICAgU3RvcnlQcm9maWxpbmcuQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG5cbmxldCBtYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlcnMgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsX25vdClcbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbF9ub3QpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2UnID1cbiAgICAgIGRpc2FtYmlndWF0ZSBwYXJhbWV0ZXJzXG4gICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOihmdW4gcGFyYW1ldGVycyAtPlxuICAgICAgICAgIG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSAmJiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMpXG4gICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiB+cHJpbnRfaWZfemVybyBrYXBwYV9oYW5kbGVyXG4gICAgICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICAoIGVycm9yLFxuICAgICAgcHJvZmlsaW5nX2luZm8sXG4gICAgICBpZiB0cmFjZScgPT0gdHJhY2UgdGhlblxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UnIGZhbHNlIClcbiAgKSBlbHNlXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuXG5sZXQgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzIGYgcmVxdWlyZW1lbnQgZWZmZWN0IHBhcmFtZXRlcnNcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGwpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGwpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2UgPVxuICAgICAgaWYgbXVzdF93ZV9zb2x2ZV9hbWJpZ3VpdHkgcGFyYW1ldGVycyByZXF1aXJlbWVudCB0aGVuXG4gICAgICAgIG1ha2VfdW5hbWJpZ3VvdXMgcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZSBrYXBwYV9oYW5kbGVyXG4gICAgICAgICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgKGZcbiAgICAgICAgOiBTLlBILkIuUEIuQ0kuUG8uSy5ILnBhcmFtZXRlciAtPlxuICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlOnNoYWxsX3dlIC0+XG4gICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOnNoYWxsX3dlIC0+XG4gICAgICAgICAgP3ByaW50X2lmX3plcm86c2hhbGxfd2UgLT5cbiAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmhhbmRsZXIgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgICAgICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICAgICAgIHRyYWNlIC0+XG4gICAgICAgICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICAgICAgICogdHJhY2UpXG4gICAgICAgIHBhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGUgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgIH5wcmludF9pZl96ZXJvIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICBpblxuICAgIGxldCB0cmFjZSA9IHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UgKGhhbmRsZV9hbWJpZ3VpdGllcyBlZmZlY3QgdHJ1ZSkgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHRyYWNlXG4gICkgZWxzZVxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcblxubGV0IHNwbGl0X2luaXQgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuc3BsaXRfaW5pdClcbiAgICAgICAoU29tZSBcIlxcdC0gc3BsaXR0aW5nIGluaXRpYWwgZXZlbnRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgc3BsaXQgaW5pdGlhbCBldmVudHM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5EZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSlcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsXG5cbmxldCBjdXQgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlbiBTLlBILkIuUEIuQ0kuUG8uY3V0XG4gICAgICAgKFNvbWUgXCJcXHQtIGN1dHRpbmcgY29uY3VycmVudCBldmVudHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIGNvbmN1cnJlbnQgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24pXG4gICAgUmVxdWlyZV90aGVfYWJzY2VuY2Vfb2ZfYW1iaWd1aXR5IE5ldXRyYWxcblxudHlwZSBvbl90aGVfZmx5X2N1dF9zdGF0ZSA9IFMuUEguQi5QQi5DSS5Qby5vbl90aGVfZmx5X3N0YXRlXG5cbmxldCBvbl90aGVfZmx5X2N1dF9pbml0ID0gUy5QSC5CLlBCLkNJLlBvLmluaXRfY3V0XG5sZXQgb25fdGhlX2ZseV9jdXRfc3RlcCA9IFMuUEguQi5QQi5DSS5Qby5jdXRfc3RlcFxuXG5sZXQgb25fdGhlX2ZseV9jdXRfZmluYWxpemUgY3V0X3N0YXRlID1cbiAgZnN0IChTLlBILkIuUEIuQ0kuUG8uZmluYWxpemVfY3V0IGN1dF9zdGF0ZSlcblxubGV0IGN1dF9yZXZfdHJhY2UgcmV2X3RyYWNlID1cbiAgb25fdGhlX2ZseV9jdXRfZmluYWxpemVcbiAgICAoTGlzdC5mb2xkX2xlZnQgb25fdGhlX2ZseV9jdXRfc3RlcCBvbl90aGVfZmx5X2N1dF9pbml0IHJldl90cmFjZSlcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9laWQgdHJhY2UgPVxuICAoIGVycm9yLFxuICAgIGxvZ19pbmZvLFxuICAgIGxldCByZWMgYXV4IGwgc2NvcmUgb3V0cHV0ID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBvdXRwdXQsIHNjb3JlXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyB0IHRoZW4gKFxuICAgICAgICAgIG1hdGNoIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhdXggcSBzY29yZSAodCA6OiBvdXRwdXQpXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGlmIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCB4ID49IGxhc3RfZWlkIHRoZW5cbiAgICAgICAgICAgICAgKCBMaXN0LnJldiAoTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KSBvdXRwdXQgbCksXG4gICAgICAgICAgICAgICAgc2NvcmUgKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggcSAoc3VjYyBzY29yZSkgb3V0cHV0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eCBxIHNjb3JlICh0IDo6IG91dHB1dClcbiAgICBpblxuICAgIGF1eCB0cmFjZSAwIFtdIClcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfaW5mbyB0cmFjZSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKGZ1biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAtPlxuICAgICAgICAgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9pbmZvKVxuICAgICAgIChTb21lIFwiXFx0LSBSZW1vdmluZyBhbHJlYWR5IHZpc2l0ZWQgb2JzZXJ2YWJsZSBoaXRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCBzZWVuIG9ic2VydmFibGUgaGl0c1xcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24pXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuXG5sZXQgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBsYXN0X2luZm8gdHJhY2UgPVxuICBtYXRjaCBsYXN0X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCB0cmFjZVxuICB8IFNvbWUgbCAtPlxuICAgIGxldCBsYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gcmVzdWx0IHggLT5cbiAgICAgICAgICBsZXQgbGFzdF9laWQgPSBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgeCBpblxuICAgICAgICAgIG1heCByZXN1bHQgbGFzdF9laWQpXG4gICAgICAgIDAgbFxuICAgIGluXG4gICAgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdCB0cmFjZVxuXG5sZXQgZmlsbF9zaXBob24gPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuZmlsbF9zaXBob24pXG4gICAgICAgKFNvbWUgXCJcXHQtIGRldGVjdGluZyBzaXBob25zXCIpIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIGRldGVjdGVkIHNpcGhvbnM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5TaXBob25fZGV0ZWN0aW9uKVxuICAgIFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSBNYXlfYWRkX2FtYmlndWl0aWVzXG5cbmxldCAocmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29icyA6ICh0cmFjZSwgdHJhY2UpIHVuYXJ5KSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKG1vbmFkaWNfbGlmdFxuICAgICAgICAgIChMaXN0X3V0aWwucmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VycmVuY2UgVHJhY2Uuc3RlcF9pc19vYnMpKVxuICAgICAgIChTb21lIFwiXFx0LSByZW1vdmluZyBldmVudHMgb2NjdXJyaW5nIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIHRoZSBldmVudHMgYWZ0ZXIgdGhlIGxhc3Qgb2JzZXJ2YWJsZVwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGUpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG5sZXQgcmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuIFMuUEguQi5QQi5DSS5jdXRcbiAgICAgICAoU29tZSBcIlxcdC0gZGV0ZWN0aW5nIHBzZXVkbyBpbnZlcnNlIGV2ZW50c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgcHNldWRvIGludmVyc2UgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUHNldWRvX2ludmVyc2VfZGVsZXRpb24pXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG50eXBlIGNmbG93X2dyaWQgPSBDYXVzYWwuZ3JpZFxudHlwZSBlbnJpY2hlZF9jZmxvd19ncmlkID0gQ2F1c2FsLmVucmljaGVkX2dyaWRcbnR5cGUgbXVzaWNhbF9ncmlkID0gUy5QSC5CLmJsYWNrYm9hcmRcbnR5cGUgc3RvcnlfdGFibGUgPSB7IHN0b3J5X2NvdW50ZXI6IGludDsgc3RvcnlfbGlzdDogRC50YWJsZSB9XG5cbmxldCBjb3VudF9zdG9yaWVzIHN0b3J5X3RhYmxlID0gRC5jb3VudF9zdG9yaWVzIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcblxudHlwZSBvYnNlcnZhYmxlX2hpdCA9IHtcbiAgbGlzdF9vZl9hY3Rpb25zOiBTLlBILnVwZGF0ZV9vcmRlciBsaXN0O1xuICBsaXN0X29mX2V2ZW50czogc3RlcF9pZCBsaXN0O1xuICBydW50aW1lX2luZm86IHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgb3B0aW9uO1xufVxuXG5sZXQgZ2V0X2V2ZW50X2xpc3RfZnJvbV9vYnNlcnZhYmxlX2hpdCBhID0gYS5saXN0X29mX2V2ZW50c1xubGV0IGdldF9ydW50aW1lX2luZm9fZnJvbV9vYnNlcnZhYmxlX2hpdCBhID0gYS5ydW50aW1lX2luZm9cbmxldCBfZ2V0X2xpc3Rfb3JkZXIgYSA9IGEubGlzdF9vZl9hY3Rpb25zXG5sZXQgZXJyb3JfaW5pdCA9IEV4Y2VwdGlvbi5lbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxubGV0IGV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRzX2Zyb21fbXVzaWNhbF9ub3RhdGlvbiBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcHJvZmlsaW5nX2luZm9cbiAgICBjIGQgPVxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBsID0gUy5QSC5mb3JjZWRfZXZlbnRzIGEgYiBwcm9maWxpbmdfaW5mbyBjIGQgaW5cbiAgKCBlcnJvcixcbiAgICBwcm9maWxpbmdfaW5mbyxcbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgIHsgbGlzdF9vZl9hY3Rpb25zID0gYTsgbGlzdF9vZl9ldmVudHMgPSBiOyBydW50aW1lX2luZm8gPSBjIH0pXG4gICAgICAoTGlzdC5yZXYgbCkgKVxuXG5sZXQgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdF9mcm9tX211c2ljYWxfbm90YXRpb24gYSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBiIHByb2ZpbGluZ19pbmZvXG4gICAgYyBzdHJpbmcgZCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGwgPSBTLlBILmZvcmNlZF9ldmVudHMgYSBiIHByb2ZpbGluZ19pbmZvIGMgZCBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbIChhLCBiLCBjKSBdIC0+XG4gICAgKCBlcnJvcixcbiAgICAgIHByb2ZpbGluZ19pbmZvLFxuICAgICAgeyBsaXN0X29mX2FjdGlvbnMgPSBhOyBsaXN0X29mX2V2ZW50cyA9IGI7IHJ1bnRpbWVfaW5mbyA9IGMgfSApXG4gIHwgW10gLT4gZmFpbHdpdGggKHN0cmluZyBeIFwiIG5vIHN0b3J5XCIpXG4gIHwgXyA6OiBfIC0+IGZhaWx3aXRoIChzdHJpbmcgXiBcIiBzZXZlcmFsIHN0b3JpZXNcIilcblxubGV0IHRyYW5zbGF0ZSBwIGggcHJvZmlsaW5nX2luZm8gZSBiIGxpc3QgPVxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAobGlzdCwgXykgPVxuICAgIFMudHJhbnNsYXRlIHAgaCBwcm9maWxpbmdfaW5mbyBlIGIgbGlzdFxuICBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlX29mX3ByZXRyYWNlIGxpc3RcblxubGV0IGNhdXNhbF9wcmVmaXhfb2ZfYW5fb2JzZXJ2YWJsZV9oaXQgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciBzdHJpbmcgYmxhY2tib2FyZCAoZW5yaWNoZWRfZ3JpZCA6IGVucmljaGVkX2NmbG93X2dyaWQpXG4gICAgb2JzZXJ2YWJsZV9pZCA9XG4gIGxldCBlaWQgPVxuICAgIG1hdGNoIGdldF9ldmVudF9saXN0X2Zyb21fb2JzZXJ2YWJsZV9oaXQgb2JzZXJ2YWJsZV9pZCB3aXRoXG4gICAgfCBbIGEgXSAtPiBhXG4gICAgfCBbXSAtPiBmYWlsd2l0aCAoXCJubyBvYnNlcnZhYmxlIGluIHRoYXQgc3RvcnlcIiBeIHN0cmluZylcbiAgICB8IF8gLT4gZmFpbHdpdGggKFwic2V2ZXJhbCBvYnNlcnZhYmxlcyBpbiB0aGF0IHN0b3J5XCIgXiBzdHJpbmcpXG4gIGluXG4gIGxldCBldmVudF9pZF9saXN0ID1cbiAgICBHcmFwaF9jbG9zdXJlLmdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLmludF9vZl9zdGVwX2lkIChTLlBILkIuUEIuaW5jX3N0ZXBfaWQgZWlkKSlcbiAgICAgIGVucmljaGVkX2dyaWQuQ2F1c2FsLnByZWNfc3RhclxuICBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBvdXRwdXQgPVxuICAgIHRyYW5zbGF0ZSBwYXJhbWV0ZXIgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAoTGlzdC5yZXZfbWFwIFMuUEguQi5QQi5zdGVwX2lkX29mX2ludCAoTGlzdC5yZXYgZXZlbnRfaWRfbGlzdCkpXG4gIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mbywgb3V0cHV0XG5cbmxldCBleHBvcnRfbXVzaWNhbF9ncmlkX3RvX3hscyBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGJcbiAgICAocCA6IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8pIGMgZCBlIGYgZyA9XG4gIFMuUEguQi5leHBvcnRfYmxhY2tib2FyZF90b194bHMgYSBiIHAgYyBkIGUgZiBnXG5cbmxldCBwcmludF9tdXNpY2FsX2dyaWQgYSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBiIHAgYyBkID1cbiAgUy5QSC5CLnByaW50X2JsYWNrYm9hcmQgYSBiIHAgYyBkXG5cbmxldCBjcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVycyA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgPVxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBpbml0ID1cbiAgICBELmluaXRfdGFibGUgcGFyYW1ldGVycyBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yXG4gIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mbywgeyBzdG9yeV9jb3VudGVyID0gMTsgc3RvcnlfbGlzdCA9IGluaXQgfVxuXG5sZXQgX2dldF90cmFjZV9vZl9zdG9yeSAoXywgXywgXywgeSwgXykgPSB0cmFjZV9vZl9wcmV0cmFjZSB5XG5sZXQgX2dldF9pbmZvX29mX3N0b3J5IChfLCBfLCBfLCBfLCB0KSA9IHRcblxubGV0IHRpY2tfb3B0IHBhcmFtZXRlciBiYXIgPVxuICBtYXRjaCBiYXIgd2l0aFxuICB8IE5vbmUgLT4gYmFyXG4gIHwgU29tZSAobG9nZ2VyLCBiYXIpIC0+XG4gICAgU29tZVxuICAgICAgKCBsb2dnZXIsXG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgYmFyIClcblxubGV0IGNsb3NlX3Byb2dyZXNzX2Jhcl9vcHQgbG9nZ2VyID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlclxuXG5sZXQgcHJpbnRfZmFpbHMgbG9nZ2VyIHMgbiA9XG4gIG1hdGNoIG4gd2l0aFxuICB8IDAgLT4gKClcbiAgfCAxIC0+IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJALlxcdCAxICVzIGhhcyBmYWlsZWRALlwiIHNcbiAgfCBfIC0+IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJALlxcdCAlaSAlc3MgaGF2ZSBmYWlsZWRALlwiIG4gc1xuXG5sZXQgaW5jX2ZhaWxzIGEgYScgYiA9XG4gIGlmIGEgPT0gYScgdGhlblxuICAgIHN1Y2MgYlxuICBlbHNlXG4gICAgYlxuXG5sZXQgZm9sZF9zdG9yeV90YWJsZV9nZW4gbG9nZ2VyIHBhcmFtZXRlciA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGwpXG4gICAgKGhhbmRsZXIgOiBrYXBwYV9oYW5kbGVyKSAocHJvZmlsaW5nX2luZm8gOiBwcm9maWxpbmdfaW5mbykgZXJyb3Igc1xuICAgIChmIDogKHRyYWNlLCB0cmFjZV9ydW50aW1lX2luZm8gbGlzdCwgJ2EsICdhKSB0ZXJuYXJ5KSBsIGEgPVxuICBsZXQgbl9zdG9yaWVzX2lucHV0ID0gY291bnRfc3RvcmllcyBsIGluXG4gIGxldCBwcm9ncmVzc19iYXIgPVxuICAgIFNvbWVcbiAgICAgICggbG9nZ2VyLFxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGxvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbl9zdG9yaWVzX2lucHV0KSApXG4gIGluXG4gIGxldCBnIHBhcmFtZXRlciBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHN0b3J5IGluZm9cbiAgICAgIChrLCBwcm9ncmVzc19iYXIsIGEsIG5fZmFpbHMpID1cbiAgICBsZXQgZXZlbnQgPSBTdG9yeVByb2ZpbGluZy5TdG9yeSBrIGluXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbyA9XG4gICAgICBQLmFkZF9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgYScgPVxuICAgICAgZiBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGUgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3JcbiAgICAgICAgKHRyYWNlX29mX3ByZXRyYWNlX3dpdGhfYW1iaWd1aXR5IGZhbHNlIHN0b3J5KVxuICAgICAgICBpbmZvIGFcbiAgICBpblxuICAgIGxldCBwcm9ncmVzc19iYXIgPSB0aWNrX29wdCBwYXJhbWV0ZXIgcHJvZ3Jlc3NfYmFyIGluXG4gICAgbGV0IG5fZmFpbHMgPSBpbmNfZmFpbHMgYSBhJyBuX2ZhaWxzIGluXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbyA9XG4gICAgICBQLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIChzdWNjIGssIHByb2dyZXNzX2JhciwgYScsIG5fZmFpbHMpXG4gIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIChfLCBfLCBhLCBuX2ZhaWxzKSA9XG4gICAgRC5mb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIGcgbC5zdG9yeV9saXN0XG4gICAgICAoMSwgcHJvZ3Jlc3NfYmFyLCBhLCAwKVxuICBpblxuICBsZXQgKCkgPSBjbG9zZV9wcm9ncmVzc19iYXJfb3B0IGxvZ2dlciBpblxuICBsZXQgKCkgPSBwcmludF9mYWlscyBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyIHMgbl9mYWlscyBpblxuICBlcnJvciwgKHByb2ZpbGluZ19pbmZvIDogcHJvZmlsaW5nX2luZm8pLCBhXG5cbmxldCBmb2xkX3N0b3J5X3RhYmxlX3dpdGhfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZVxuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciBzIGYgbCBhID1cbiAgZm9sZF9zdG9yeV90YWJsZV9nZW5cbiAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGUgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uIGhhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciBzIGYgbCBhXG5cbmxldCBmb2xkX3N0b3J5X3RhYmxlX3dpdGhvdXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZVxuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciBzIGYgbCBhID1cbiAgZm9sZF9zdG9yeV90YWJsZV9nZW4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZVxuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGFcblxubGV0IGdldF9jb3VudGVyIHN0b3J5X2xpc3QgPSBzdG9yeV9saXN0LnN0b3J5X2NvdW50ZXJcbmxldCBnZXRfc3RvcmllcyBzdG9yeV9saXN0ID0gc3RvcnlfbGlzdC5zdG9yeV9saXN0XG5cbmxldCBfaW5jX2NvdW50ZXIgc3RvcnlfbGlzdCA9XG4gIHsgc3RvcnlfbGlzdCB3aXRoIHN0b3J5X2NvdW50ZXIgPSBzdWNjIHN0b3J5X2xpc3Quc3RvcnlfY291bnRlciB9XG5cbmxldCBidWlsZF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGNvbXB1dGF0aW9uX2luZm8gZXJyb3IgdHJhY2UgYm9vbCA9XG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuQnVpbGRfZ3JpZCBOb25lIGNvbXB1dGF0aW9uX2luZm9cbiAgaW5cbiAgbGV0IGdyaWQgPSBTLlBILkIuUEIuQ0kuUG8uSy5idWlsZF9ncmlkIHRyYWNlIGJvb2wgaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuQnVpbGRfZ3JpZCBOb25lIGNvbXB1dGF0aW9uX2luZm9cbiAgaW5cbiAgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8sIGdyaWRcblxubGV0IHN0b3JlX3RyYWNlIChwYXJhbWV0ZXIgOiBwYXJhbWV0ZXIpID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICBjb21wdXRhdGlvbl9pbmZvIGVycm9yIHRyYWNlIG9ic19pbmZvIHN0b3J5X3RhYmxlID1cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5TdG9yZV90cmFjZSBOb25lIGNvbXB1dGF0aW9uX2luZm9cbiAgaW5cbiAgbGV0IHByZXRyYWNlID0gZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlIGluXG4gIGxldCB0cmFjZTIgPSBnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSBpblxuICBsZXQgYm9vbCA9IG5vdCAoaXNfY29tcHJlc3NlZF90cmFjZSB0cmFjZSkgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBncmlkID1cbiAgICBidWlsZF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGNvbXB1dGF0aW9uX2luZm8gZXJyb3IgdHJhY2UyIGJvb2xcbiAgaW5cbiAgbGV0IGNvbXB1dGF0aW9uX2luZm8gPSBQLnNldF9ncmlkX2dlbmVyYXRpb24gY29tcHV0YXRpb25faW5mbyBpblxuICBsZXQgc3RvcnlfaW5mbyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnVwZGF0ZV9wcm9maWxpbmdfaW5mbyAoUC5jb3B5IGNvbXB1dGF0aW9uX2luZm8pKVxuICAgICAgKExpc3QucmV2IG9ic19pbmZvKVxuICBpblxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8sIHN0b3J5X2xpc3QgPVxuICAgIEQuYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGNvbXB1dGF0aW9uX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZVxuICAgICAgc3RvcnlfaW5mbyBzdG9yeV90YWJsZS5zdG9yeV9saXN0XG4gIGluXG4gIGxldCBzdG9yeV90YWJsZSA9XG4gICAgeyBzdG9yeV9saXN0OyBzdG9yeV9jb3VudGVyID0gc3RvcnlfdGFibGUuc3RvcnlfY291bnRlciArIDEgfVxuICBpblxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuU3RvcmVfdHJhY2UgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG5cbiAgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8sIHN0b3J5X3RhYmxlXG5cbmxldCBmbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3Igc3RvcnlfdGFibGUgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICBELmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdG9yeV90YWJsZS5zdG9yeV9saXN0XG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgeyBzdG9yeV90YWJsZSB3aXRoIHN0b3J5X2xpc3QgPSBsaXN0IH1cblxubGV0IGNvbXByZXNzID9oZXVyaXN0aWMgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB0cmFjZSA9XG4gIG1hdGNoIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIFsgdHJhY2UgXVxuICB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgaWZcbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgIHRoZW5cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAoU3RvcnlfanNvbi5JbnByb2dyZXNzLCBcIlN0YXJ0IG9uZSBjYXVzYWwgY29tcHJlc3Npb25cIikpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICBjdXQgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgWyB0cmFjZSBdXG4gIHwgU29tZSAoU3RvcnlfanNvbi5XZWFrIHwgU3RvcnlfanNvbi5TdHJvbmcpIC0+XG4gICAgbGV0IGV2ZW50LCBzID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgICB8IFNvbWUgU3RvcnlfanNvbi5XZWFrIC0+XG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLldlYWtfY29tcHJlc3Npb24sIFwiU3RhcnQgb25lIHdlYWsgY29tcHJlc3Npb25cIlxuICAgICAgfCBfIC0+IFN0b3J5UHJvZmlsaW5nLlN0cm9uZ19jb21wcmVzc2lvbiwgXCJTdGFydCBvbmUgc3Ryb25nIGNvbXByZXNzaW9uXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZlxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgdGhlblxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5JbnByb2dyZXNzLCBzKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgUC5hZGRfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50XG4gICAgICAgIChTb21lIChmdW4gKCkgLT4gc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSkpXG4gICAgICAgIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXZlbnRfbGlzdCA9IGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUy5QSC5CLmltcG9ydCA/aGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X2xpc3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgUy5QSC5mb3JjZWRfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsaXN0X29yZGVyID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCAobGlzdF9vcmRlciwgXywgXykgOjogXyAtPiBsaXN0X29yZGVyXG4gICAgICB8IF8gLT4gW11cbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQsIGxpc3QpID1cbiAgICAgIFMuY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X29yZGVyXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biBwcmV0cmFjZSAtPlxuICAgICAgICAgIGxldCBldmVudF9saXN0ID0gUy50cmFuc2xhdGVfcmVzdWx0IHByZXRyYWNlIGluXG4gICAgICAgICAgbGV0IGV2ZW50X2xpc3QgPSBTLlBILkIuUEIuQ0kuUG8uSy5jbGVhbl9ldmVudHMgZXZlbnRfbGlzdCBpblxuICAgICAgICAgIGJ1aWxkX2NvbXByZXNzZWRfdHJhY2UgZXZlbnRfbGlzdCBwcmV0cmFjZSlcbiAgICAgICAgbGlzdFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gUC5zZXRfc3RvcnlfcmVzZWFyY2hfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgaWYgUy5QSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlblxuICAgICAgICBFeGNlcHRpb24ud2FyblxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJPbmUgY29tcHJlc3Npb24gaGFzIGZhaWxlZFwiIEV4aXQgKClcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsICgpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGYgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyclxuICAgICAgICAgICAgXCJcXHRcXHQgKiByZXN1bHRcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIGlmIFMuUEguQi5pc19mYWlsZWQgb3V0cHV0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgUy5QSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIFwiRkFJTFwiIDAgMCBibGFja2JvYXJkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnJcbiAgICAgICAgICAgICAgICBcIkZhaWxfdG9fY29tcHJlc3NcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyXG4gICAgICAgICAgICAgICAgXCJTdWNjZWVkX3RvX2NvbXByZXNzXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3JcbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvclxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbmxldCBzdHJvbmdseV9jb21wcmVzcyA/aGV1cmlzdGljIHBhcmFtZXRlciA9XG4gIGNvbXByZXNzID9oZXVyaXN0aWMgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwYXJhbWV0ZXIpXG5cbmxldCB3ZWFrbHlfY29tcHJlc3MgP2hldXJpc3RpYyBwYXJhbWV0ZXIgPVxuICBjb21wcmVzcyA/aGV1cmlzdGljIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl93ZWFrIHBhcmFtZXRlcilcblxubGV0IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHRyYWNlIGhhbmRsZXIgPVxuICBsZXQgZXZlbnRfbGlzdCA9IGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIGluXG4gIFMuUEguQi5QQi5DSS5Qby5LLmJ1aWxkX2dyaWQgZXZlbnRfbGlzdFxuICAgIChub3QgKGlzX2NvbXByZXNzZWRfdHJhY2UgdHJhY2UpKVxuICAgIGhhbmRsZXJcblxubGV0IGNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlcnMgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8ga2FwcGFfaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgUy5QSC5CLmltcG9ydCBwYXJhbWV0ZXJzIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3JcbiAgICAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlKVxuXG5sZXQgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmUgY29uZmlnIGxvZ2dlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgZ3JpZCA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8sIG91dHB1dCA9XG4gICAgQ2F1c2FsLmVucmljaF9ncmlkXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIGxvZ2dlcilcbiAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY29uZmlnIGdyaWRcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXIgPVxuICBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZVxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhclxuXG5sZXQgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3Jlc3NfYmFyXG5cbmxldCBfZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2ZfZWFjaF9ub2RlX3dpdGhvdXRfYV9wcm9ncmVzc19iYXIgPVxuICBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZVxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhclxuXG5sZXQgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2ZfZWFjaF9ub2RlX3dpdGhvdXRfYV9wcm9ncmVzc19iYXIgPVxuICBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZSBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaFxuXG5sZXQgc29ydF9zdG9yeV9saXN0ID0gRC5zb3J0X2xpc3RcblxubGV0IGV4cG9ydF9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHggPVxuICBsZXQgYSwgbG9nX2luZm8sIGIgPVxuICAgIHNvcnRfc3RvcnlfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoZ2V0X3N0b3JpZXMgeClcbiAgaW5cbiAgYSwgbG9nX2luZm8sIGJcblxubGV0IGhhc19vYnMgeCA9IExpc3QuZXhpc3RzIFRyYWNlLnN0ZXBfaXNfb2JzIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgeClcblxubGV0IGZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciA/KGV2ZW50ID0gU3RvcnlQcm9maWxpbmcuRHVtbXkpIHBhcmFtZXRlclxuICAgID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbClcbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbCkgaGFuZGxlciBwcm9maWxpbmdfaW5mb3JtYXRpb24gZXJyb3JcbiAgICAoZiA6ICgnYSwgJ2IsICdhKSBiaW5hcnkpIGEgbGlzdCA9XG4gIGxldCBuID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICBsZXQgc3RyaW5nLCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbikgPVxuICAgIGlmIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaXNfZHVtbXkgZXZlbnQgdGhlblxuICAgICAgXCJcIiwgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24pXG4gICAgZWxzZVxuICAgICAgKCBTdG9yeVByb2ZpbGluZy5zdHJpbmdfb2Zfc3RlcF9raW5kIGV2ZW50LFxuICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIGV2ZW50XG4gICAgICAgICAgKFNvbWUgKGZ1biBfIC0+IExpc3QubGVuZ3RoIGxpc3QpKVxuICAgICAgICAgIHByb2ZpbGluZ19pbmZvcm1hdGlvbiApXG4gIGluXG4gIGxldCBwcm9ncmVzc19iYXIgPVxuICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXNcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXJcbiAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgIChmYWxzZSwgMCwgMCwgbilcbiAgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIF8sIF8sIGEsIG5fZmFpbCA9XG4gICAgbGV0IHJlYyBhdXggbGlzdCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYmFyLCBrLCBhLCBuX2ZhaWwpID1cbiAgICAgIGxldCBldmVudCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5IGsgaW5cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGssIGEsIG5fZmFpbFxuICAgICAgfCB4IDo6IHRhaWwgLT5cbiAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgICAgICAgIFAuYWRkX2V2ZW50XG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBhJyA9XG4gICAgICAgICAgICAgIGYgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uIH5wcmludF9pZl96ZXJvIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBwcm9maWxpbmdfaW5mb3JtYXRpb24gZXJyb3IgYSB4XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGJhciA9XG4gICAgICAgICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXNcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXJcbiAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgYmFyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG5fZmFpbCA9IGluY19mYWlscyBhIGEnIG5fZmFpbCBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICAgICBQLmNsb3NlX2V2ZW50XG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lIChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGsgKyAxLCBhJywgbl9mYWlsKVxuICAgICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICBQLmNsb3NlX2V2ZW50XG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYmFyLCBrICsgMSwgYSwgbl9mYWlsXG4gICAgICAgIHwgU29tZSByZW1hbmVudCAtPiBhdXggdGFpbCByZW1hbmVudClcbiAgICBpblxuICAgIGF1eCBsaXN0IChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBwcm9ncmVzc19iYXIsIDEsIGEsIDApXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3Byb2dyZXNzX2Jhcl9vcHQgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICBpZiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmlzX2R1bW15IGV2ZW50IHRoZW5cbiAgICAgIGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICBlbHNlXG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICBpblxuICBsZXQgKCkgPSBwcmludF9mYWlscyBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyIHN0cmluZyBuX2ZhaWwgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYVxuXG5sZXQgX2ZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfdGhyb3VnaF9hX2dyaWRfd2l0aF9hX3Byb2dyZXNzX2JhclxuICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGYgdCBhID1cbiAgbGV0IGdyaWQgPSBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0IGhhbmRsZXIgaW5cbiAgQ2F1c2FsLmZvbGRfb3Zlcl9jYXVzYWxfcGFzdF9vZl9vYnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgZ3JpZCBmIChlcnJvciwgbG9nX2luZm8sIGEpXG5cbmxldCBmb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyXG4gICAgP3NoYWxsX3dlX2NvbXB1dGU6XyA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsb2dfc3RlcCBkZWJ1Z19tb2RlIGNvdW50ZXIgZiB0IGEgPVxuICBsZXQgKCkgPVxuICAgIGlmIGxvZ19zdGVwIHBhcmFtZXRlciB0aGVuXG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiJXNcXHQtIGJsYWNrYm9hcmQgZ2VuZXJhdGlvbiBALlwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICBjb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0XG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgIGV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRzX2Zyb21fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgZXJyb3IgYmxhY2tib2FyZFxuICBpblxuICBsZXQgbl9zdG9yaWVzID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICBsZXQgKCkgPVxuICAgIGlmIGxvZ19zdGVwIHBhcmFtZXRlciB0aGVuXG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiJXNcXHQtIGNvbXB1dGluZyBjYXVzYWwgcGFzdCBvZiBlYWNoIG9ic2VydmVkIGV2ZW50cyAoJWkpQC5cIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgbl9zdG9yaWVzXG4gIGluXG4gICgqIGdlbmVyYXRpb24gb2YgdW5jb21wcmVzc2VkIHN0b3JpZXMgKilcbiAgbGV0ICgpID1cbiAgICBpZiBkZWJ1Z19tb2RlIHBhcmFtZXRlciB0aGVuXG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiJXNcXHRcXHQqIGNhdXNhbCBjb21wcmVzc2lvbiBcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0IGxvZ19pbmZvID0gUC5zZXRfc3RhcnRfY29tcHJlc3Npb24gbG9nX2luZm8gaW5cbiAgbGV0IGdyaWQgPSBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0IGhhbmRsZXIgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgQ2F1c2FsLmZvbGRfb3Zlcl9jYXVzYWxfcGFzdF9vZl9vYnNcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXJcbiAgICAgIGdyaWRcbiAgICAgIChmdW4gcGFyYW1ldGVyJyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG9ic2VydmFibGVfaGl0IGNhdXNhbF9wYXN0XG4gICAgICAgICAgIChjb3VudGVyLCBsaXN0LCBhKSAtPlxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3VjY2VzcyAoY291bnRlciwgbGlzdCwgYSlcbiAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlcicgZXJyb3JcbiAgICAgICAgICAgICAgKFN0b3J5UHJvZmlsaW5nLlN0b3J5IGNvdW50ZXIpIE5vbmUgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvYnNlcnZhYmxlX2lkID0gaGVhZCBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9IFAucmVzZXRfbG9nIGxvZ19pbmZvIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCIlc1xcdFxcdCogY2F1c2FsIGNvbXByZXNzaW9uIFwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHdlIHRyYW5zbGF0ZSB0aGUgbGlzdCBvZiBldmVudCBpZHMgaW50byBhIHRyYWNlIHRoYW5rcyB0byB0aGUgYmxhY2tib2FkICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgdHJhbnNsYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKExpc3QucmV2X21hcCBTLlBILkIuUEIuc3RlcF9pZF9vZl9pbnRcbiAgICAgICAgICAgICAgICAgKG9ic2VydmFibGVfaGl0IDo6IGNhdXNhbF9wYXN0KSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHdlIGNvbGxlY3QgcnVuIHRpbWUgaW5mbyBhYm91dCB0aGUgb2JzZXJ2YWJsZSAqKVxuICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgIG1hdGNoIGdldF9ydW50aW1lX2luZm9fZnJvbV9vYnNlcnZhYmxlX2hpdCBvYnNlcnZhYmxlX2lkIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgfCBTb21lIGluZm8gLT5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgIHsgaW5mbyB3aXRoIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGNvdW50ZXIgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnVwZGF0ZV9wcm9maWxpbmdfaW5mbyBsb2dfaW5mbyBpbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFsgaW5mbyBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBhID1cbiAgICAgICAgICAgIChmIDogKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5KVxuICAgICAgICAgICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvIGFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXInIGVycm9yXG4gICAgICAgICAgICAgIChTdG9yeVByb2ZpbGluZy5TdG9yeSBjb3VudGVyKSBOb25lIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgICAgICAgICAgICAoZnVuIGEgLT4gU3RvcC5zdWNjZXNzIChjb3VudGVyICsgMSwgdGFpbCwgYSkpXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBTdG9wLnN0b3AgKGIsIGNvdW50ZXIpKVxuICAgICAgICAgICAgICBhICkpXG4gICAgICAoY291bnRlciwgTGlzdC5yZXYgbGlzdCwgYSlcbiAgaW5cbiAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIChfLCBfLCBhKSkgLT4gZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN1Y2Nlc3MgYSlcbiAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIChhLCBjb3VudGVyKSkgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdG9wIChhLCBjb3VudGVyKSlcbiAgICBvdXRwdXRcblxubGV0IGNvcHlfbG9nX2luZm8gPSBQLmNvcHlcblxudHlwZSBjYW5vbmljYWxfZm9ybSA9IERhZy5jYW5vbmljYWxfZm9ybVxuXG5sZXQgY29tcGFyZV9jYW5vbmljYWxfZm9ybSA9IERhZy5jb21wYXJlX2Nhbm9uaWNcblxubGV0IGNvbXB1dGVfY2Fub25pY2FsX2Zvcm0gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB0cmFjZSA9XG4gIGxldCBncmlkID0gY29udmVydF90cmFjZV9pbnRvX2dyaWQgdHJhY2UgaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgRGFnLmdyYXBoX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYW5vbmljID1cbiAgICBEYWcuY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gIGluXG4gIChlcnJvciA6IGVycm9yX2xvZyksIChsb2dfaW5mbyA6IHByb2ZpbGluZ19pbmZvKSwgKGNhbm9uaWMgOiBjYW5vbmljYWxfZm9ybSlcblxubW9kdWxlIEV2ZW50IDogQmxhY2tfbGlzdC5FdmVudCB3aXRoIHR5cGUgZXZlbnQgPSBzdGVwID0gc3RydWN0XG4gIHR5cGUgZXZlbnQgPSBzdGVwXG4gIHR5cGUgZWlkID0gaW50XG4gIHR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbiAgbGV0IGtleV9vZl9ldmVudCBldmVudCA9XG4gICAgaWZcbiAgICAgIChUcmFjZS5zdGVwX2lzX3J1bGUgZXZlbnQgfHwgVHJhY2Uuc3RlcF9pc19wZXJ0IGV2ZW50KVxuICAgICAgJiYgbm90IChUcmFjZS5oYXNfY3JlYXRpb25fb2Zfc3RlcCBldmVudClcbiAgICB0aGVuXG4gICAgICBnZXRfaWRfb2ZfZXZlbnQgZXZlbnRcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IGluaXQgZWlkIGRlZmF1bHQgPSBBcnJheS5tYWtlIGVpZCBkZWZhdWx0XG5cbiAgbGV0IHNldCB0IGVpZCB2YWx1ZSA9XG4gICAgbGV0ICgpID0gQXJyYXkuc2V0IHQgZWlkIHZhbHVlIGluXG4gICAgdFxuXG4gIGxldCBnZXQgdCBlaWQgPSBBcnJheS5nZXQgdCBlaWRcbmVuZFxuXG5tb2R1bGUgQmxhY2tMaXN0IDogQmxhY2tfbGlzdC5CbGFja2xpc3Qgd2l0aCB0eXBlIEV2ZW50LmV2ZW50ID0gc3RlcCA9XG5CbGFja19saXN0Lk1ha2UgKChFdmVudCA6IEJsYWNrX2xpc3QuRXZlbnQgd2l0aCB0eXBlIGV2ZW50ID0gc3RlcCkpXG5cbnR5cGUgYmxhY2tfbGlzdCA9IEJsYWNrTGlzdC50XG5cbmxldCBjcmVhdGVfYmxhY2tfbGlzdCBuID0gQmxhY2tMaXN0LmluaXQgblxuXG5sZXQgYmxhY2tfbGlzdCBfcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIF9oYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgdHJhY2UgYmxhY2tsaXN0ID1cbiAgbGV0IGJsYWNrbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYmxhY2tsaXN0IChldmVudCwgXykgLT4gQmxhY2tMaXN0LmJsYWNrX2xpc3QgZXZlbnQgYmxhY2tsaXN0KVxuICAgICAgYmxhY2tsaXN0XG4gICAgICAoZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UpXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0XG5cbmxldCByZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tsaXN0IHRyYWNlID1cbiAgbGV0IGxpc3QsIGludCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHRyYWNlLCBpbnQpIGV2ZW50IC0+XG4gICAgICAgIGlmIEJsYWNrTGlzdC5pc19ibGFja19saXN0ZWQgZXZlbnQgYmxhY2tsaXN0IHRoZW5cbiAgICAgICAgICB0cmFjZSwgc3VjYyBpbnRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGV2ZW50IDo6IHRyYWNlLCBpbnQpXG4gICAgICAoW10sIDApIHRyYWNlXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKExpc3QucmV2IGxpc3QsIGludClcblxubGV0IHJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIGJsYWNrbGlzdCB0cmFjZSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKGZ1biBfcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgLT5cbiAgICAgICAgIHJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrbGlzdClcbiAgICAgICBOb25lIFwiXCIgU3RvcnlQcm9maWxpbmcuUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWwgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcblxubGV0IGxhc3RfZWlkX2luX3ByZXRyYWNlIHRyYWNlID1cbiAgbGV0IGwgPSBMaXN0LnJldiAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlKSBpblxuICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAwXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIChtYXRjaCBnZXRfaWRfb2ZfZXZlbnQgaCB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXV4IHRcbiAgICAgIHwgU29tZSBlaWQgLT4gZWlkKVxuICBpblxuICBhdXggbFxuXG5sZXQgcG9wX2pzb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnBvcF9qc29uXG5cbmxldCBwcm9maWxpbmdfc3RhdGVfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcInByb2ZpbGluZyBpbmZvcm1hdGlvblwiLFxuICAgICAgICBMb2dnZXJzLnRvX2pzb24gKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3Byb2ZpbGluZ19sb2dnZXIgcGFyYW1ldGVycykgKTtcbiAgICBdXG5cbmxldCBlcnJvcl9saXN0X3RvX2pzb24gcGFyYW1ldGVycyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJlcnJvcnNcIixcbiAgICAgICAgTG9nZ2Vycy50b19qc29uIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXJzKSApO1xuICAgIF1cblxubGV0IGNvbXB1dGF0aW9uX3N0ZXBzX3RvX2pzb24gcGFyYW1ldGVycyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJjb21wdXRhdGlvbiBzdGVwc1wiLFxuICAgICAgICBMb2dnZXJzLnRvX2pzb24gKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSApO1xuICAgIF1cbiIsIigqKlxuICogdXRpbGl0aWVzLm1sXG4gKlxuICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE1LTAzLTI4IGZlcmV0PlxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE5IDExOjI4OjA1IGZlcmV0PlxuICpcbiAqIEFQSSBmb3IgY2F1c2FsIGNvbXByZXNzaW9uIChmb3IgZXhwZXJ0KVxuICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gKlxuICogQ29weXJpZ2h0IDIwMTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZVxuICogR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5sZXQgXyA9IGRlYnVnX21vZGVcblxudHlwZSBwYXJhbWV0ZXJzID0ge1xuICBpdGVyYXRpb25fYmVmb3JlX2NhbGlicmF0aW5nOiBpbnQ7XG4gIGdsb2JhbF90aW1lX2ZhY3Rvcl9taW46IGZsb2F0IG9wdGlvbjtcbiAgZ2xvYmFsX3RpbWVfZmFjdG9yX21heDogZmxvYXQgb3B0aW9uO1xuICB0cmFjZV9iZWZvcmVfZmFjdG9yX21pbjogaW50IG9wdGlvbjtcbiAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21pbjogaW50IG9wdGlvbjtcbiAgdHJhY2VfYmVmb3JlX2ZhY3Rvcl9tYXg6IGludCBvcHRpb247XG4gIHRyYWNlX2FmdGVyX2ZhY3Rvcl9tYXg6IGludCBvcHRpb247XG4gIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21pbjogZmxvYXQgb3B0aW9uO1xuICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXg6IGZsb2F0IG9wdGlvbjtcbn1cblxubGV0IHBhcmFtZXRlcnMgPVxuICB7XG4gICAgaXRlcmF0aW9uX2JlZm9yZV9jYWxpYnJhdGluZyA9IDEwO1xuICAgIGdsb2JhbF90aW1lX2ZhY3Rvcl9taW4gPSBTb21lIDUuO1xuICAgIGdsb2JhbF90aW1lX2ZhY3Rvcl9tYXggPSBTb21lIDIwLjtcbiAgICB0cmFjZV9iZWZvcmVfZmFjdG9yX21pbiA9IFNvbWUgMTA7XG4gICAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21pbiA9IFNvbWUgMTA7XG4gICAgdHJhY2VfYmVmb3JlX2ZhY3Rvcl9tYXggPSBTb21lIDUwMDtcbiAgICB0cmFjZV9hZnRlcl9mYWN0b3JfbWF4ID0gU29tZSA1MDA7XG4gICAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWluID0gU29tZSAxMC47XG4gICAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWF4ID0gU29tZSA1MDAuO1xuICB9XG5cbnR5cGUgc3RhdHVzX2dsb2JhbCA9IHtcbiAgY291bnRlcl9taW46IGludDtcbiAgZ2xvYmFsX3RpbWVfbWluOiBmbG9hdCBvcHRpb247XG4gIGdsb2JhbF90aW1lX21heDogZmxvYXQgb3B0aW9uO1xuICBjcHVfdGltZV9taW46IGZsb2F0IG9wdGlvbjtcbiAgY3B1X3RpbWVfbWF4OiBmbG9hdCBvcHRpb247XG4gIGNwdV90aW1lX3JlZjogZmxvYXQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlX21pbjogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyX21pbjogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9tYXg6IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9hZnRlcl9tYXg6IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmOiBpbnQgb3B0aW9uO1xufVxuXG50eXBlIHN0YXR1cyA9IHtcbiAgY291bnRlcjogaW50O1xuICBnbG9iYWxfdGltZTogZmxvYXQ7XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmU6IGludDtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyOiBpbnQ7XG4gIGNwdV90aW1lOiBmbG9hdDtcbn1cblxubGV0IGdldF9zdGF0dXNfYmVmb3JlIGNvdW50ZXIgdHJhY2UgPVxuICB7XG4gICAgY291bnRlcjtcbiAgICBnbG9iYWxfdGltZSA9IFN5cy50aW1lICgpO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmUgPSBVdGlsaXRpZXMuc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXIgPSAwO1xuICAgIGNwdV90aW1lID0gMC47XG4gIH1cblxubGV0IGdldF9zdGF0dXNfYWZ0ZXIgc3RhdHVzX2JlZm9yZSB0cmFjZSA9XG4gIHtcbiAgICBzdGF0dXNfYmVmb3JlIHdpdGhcbiAgICBjcHVfdGltZSA9IFN5cy50aW1lICgpIC0uIHN0YXR1c19iZWZvcmUuZ2xvYmFsX3RpbWU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyID0gVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgdHJhY2U7XG4gIH1cblxubGV0IGNtcF9vcHQgY21wIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IDBcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBjbXAgYSBiXG5cbmxldCBjbXBfZmxvYXRfb3B0ID0gY21wX29wdCAoY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludClcbmxldCBjbXBfaW50X29wdCA9IGNtcF9vcHQgKGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludClcblxubGV0IGdlbl9iaW5fb3B0IG9wIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBTb21lIChvcCBhIGIpXG5cbmxldCBhZGRfZmxvYXRfb3B0ID0gZ2VuX2Jpbl9vcHQgKCArLiApXG5sZXQgbXVsdF9mbG9hdF9vcHQgPSBnZW5fYmluX29wdCAoICouIClcbmxldCBtdWx0X2ludF9vcHQgPSBnZW5fYmluX29wdCAoICogKVxuXG5sZXQgbWF4X29wdCBjbXAgYSBiID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgTm9uZSAtPiBTb21lIGJcbiAgfCBTb21lIGEgLT5cbiAgICBTb21lXG4gICAgICAoaWYgY21wIGEgYiA+IDAgdGhlblxuICAgICAgICAgYVxuICAgICAgIGVsc2VcbiAgICAgICAgIGIpXG5cbmxldCBzdG9wX2JlZm9yZSBnbG9iYWwgc3RhdHVzID1cbiAgc3RhdHVzLmNvdW50ZXIgPiBnbG9iYWwuY291bnRlcl9taW5cbiAgJiYgKGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmdsb2JhbF90aW1lKSBnbG9iYWwuZ2xvYmFsX3RpbWVfbWF4ID4gMFxuICAgICB8fCBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZSlcbiAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2JlZm9yZV9tYXhcbiAgICAgICAgPiAwXG4gICAgIHx8IGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmdsb2JhbF90aW1lKSBnbG9iYWwuZ2xvYmFsX3RpbWVfbWluID49IDBcbiAgICAgICAgJiYgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWluXG4gICAgICAgICAgID49IDApXG5cbmxldCBzdG9wX2FmdGVyIGdsb2JhbCBzdGF0dXMgPVxuICBzdGF0dXMuY291bnRlciA+IGdsb2JhbC5jb3VudGVyX21pblxuICAmJiAoY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmNwdV90aW1lKSBnbG9iYWwuY3B1X3RpbWVfbWF4ID4gMFxuICAgICB8fCBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZSlcbiAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2JlZm9yZV9tYXhcbiAgICAgICAgPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXIpXG4gICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9hZnRlcl9tYXhcbiAgICAgICAgPiAwXG4gICAgIHx8IGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmdsb2JhbF90aW1lKSBnbG9iYWwuZ2xvYmFsX3RpbWVfbWluID49IDBcbiAgICAgICAgJiYgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuY3B1X3RpbWUpIGdsb2JhbC5jcHVfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZSlcbiAgICAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2JlZm9yZV9taW5cbiAgICAgICAgICAgPj0gMFxuICAgICAgICAmJiBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyKVxuICAgICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYWZ0ZXJfbWluXG4gICAgICAgICAgID49IDApXG5cbmxldCBzZXRfc3RhdHVzX2luaXQgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXJzIGZsb2F0MSBmbG9hdDIgY291bnRlciA9XG4gIHtcbiAgICBjb3VudGVyX21pbiA9IGNvdW50ZXIgKyBwYXJhbWV0ZXJzLml0ZXJhdGlvbl9iZWZvcmVfY2FsaWJyYXRpbmc7XG4gICAgZ2xvYmFsX3RpbWVfbWluID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIGFkZF9mbG9hdF9vcHQgKFNvbWUgZmxvYXQyKVxuICAgICAgICAgICAobXVsdF9mbG9hdF9vcHRcbiAgICAgICAgICAgICAgKFNvbWUgKGZsb2F0MiAtLiBmbG9hdDEpKVxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmdsb2JhbF90aW1lX2ZhY3Rvcl9taW4pKTtcbiAgICBnbG9iYWxfdGltZV9tYXggPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgYWRkX2Zsb2F0X29wdCAoU29tZSBmbG9hdDIpXG4gICAgICAgICAgIChtdWx0X2Zsb2F0X29wdFxuICAgICAgICAgICAgICAoU29tZSAoZmxvYXQyIC0uIGZsb2F0MSkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMuZ2xvYmFsX3RpbWVfZmFjdG9yX21heCkpO1xuICAgIGNwdV90aW1lX21pbiA9IE5vbmU7XG4gICAgY3B1X3RpbWVfbWF4ID0gTm9uZTtcbiAgICBjcHVfdGltZV9yZWYgPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWluID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heCA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21heCA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWYgPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9yZWYgPSBOb25lO1xuICB9XG5cbmxldCB1cGRhdGVfc3RhdHVzX2JlZm9yZSBnbG9iYWwgc3RhdHVzID1cbiAgaWYgc3RhdHVzLmNvdW50ZXIgPCBnbG9iYWwuY291bnRlcl9taW4gdGhlblxuICAgIHtcbiAgICAgIGdsb2JhbCB3aXRoXG4gICAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX3JlZiA9XG4gICAgICAgIG1heF9vcHQgY29tcGFyZSBnbG9iYWwudHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWZcbiAgICAgICAgICBzdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZTtcbiAgICB9XG4gIGVsc2VcbiAgICBnbG9iYWxcblxubGV0IHVwZGF0ZV9zdGF0dXNfYWZ0ZXIgZ2xvYmFsIHN0YXR1cyA9XG4gIGlmIHN0YXR1cy5jb3VudGVyIDwgZ2xvYmFsLmNvdW50ZXJfbWluIHRoZW5cbiAgICB7XG4gICAgICBnbG9iYWwgd2l0aFxuICAgICAgdHJhY2VfbGVuZ3RoX2FmdGVyX3JlZiA9XG4gICAgICAgIG1heF9vcHQgY29tcGFyZSBnbG9iYWwudHJhY2VfbGVuZ3RoX2FmdGVyX3JlZiBzdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyO1xuICAgICAgY3B1X3RpbWVfcmVmID0gbWF4X29wdCBjb21wYXJlIGdsb2JhbC5jcHVfdGltZV9yZWYgc3RhdHVzLmNwdV90aW1lO1xuICAgIH1cbiAgZWxzZVxuICAgIGdsb2JhbFxuXG5sZXQgY29tcHV0ZV9zdGF0dXNfcmFuZ2VzIGNmbG93X3BhcmFtZXRlcnMgcGFyYW1ldGVyIGdsb2JhbF9zdGF0dXMgPVxuICB7XG4gICAgZ2xvYmFsX3N0YXR1cyB3aXRoXG4gICAgY3B1X3RpbWVfbWluID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIG11bHRfZmxvYXRfb3B0IGdsb2JhbF9zdGF0dXMuY3B1X3RpbWVfcmVmXG4gICAgICAgICAgIHBhcmFtZXRlci5jb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9taW4pO1xuICAgIGNwdV90aW1lX21heCA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBtdWx0X2Zsb2F0X29wdCBnbG9iYWxfc3RhdHVzLmNwdV90aW1lX3JlZlxuICAgICAgICAgICBwYXJhbWV0ZXIuY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWF4KTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21pbiA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYmVmb3JlX2ZhY3Rvcl9taW47XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9tYXggPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWZcbiAgICAgICAgcGFyYW1ldGVyLnRyYWNlX2JlZm9yZV9mYWN0b3JfbWF4O1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9taW4gPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYWZ0ZXJfZmFjdG9yX21pbjtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4ID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcl9yZWZcbiAgICAgICAgcGFyYW1ldGVyLnRyYWNlX2FmdGVyX2ZhY3Rvcl9tYXg7XG4gIH1cblxubGV0IGZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2Jhcl93aGlsZV9yZXNoYWtpbmdfdGhlX3RyYWNlXG4gICAgY2Zsb3dfcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciB3ZV9zaGFsbFxuICAgIG5ldmVyIHBhcmFtZXRlcnMgZ2xvYmFsX3RyYWNlX3NpbXBsaWZpY2F0aW9uIGZcbiAgICAoc3RvcmVfcmVzdWx0IDpcbiAgICAgICggVXRpbGl0aWVzLnRyYWNlLFxuICAgICAgICBVdGlsaXRpZXMudHJhY2VfcnVudGltZV9pbmZvIGxpc3QsXG4gICAgICAgICdhLFxuICAgICAgICAnYSApXG4gICAgICBVdGlsaXRpZXMudGVybmFyeSkgdHJhY2UgKHRhYmxlIDogJ2EpID1cbiAgbGV0IGYgY2Zsb3dfcGFyYW1ldGVycyA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm9cbiAgICAgIChsYXN0X2luZm8sIHN0b3BfbmV4dCwgZ2xvYmFsX3N0YXR1cywgY291bnRlciwgdGFibGUpID1cbiAgICBpZiBzdG9wX25leHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGxhc3RfaW5mbywgdGFibGUpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc3RhdHVzX2JlZm9yZSA9IGdldF9zdGF0dXNfYmVmb3JlIGNvdW50ZXIgdHJhY2UgaW5cbiAgICAgIGxldCBzdG9wID0gc3RvcF9iZWZvcmUgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYmVmb3JlIGluXG4gICAgICBsZXQgZ2xvYmFsX3N0YXR1cyA9IHVwZGF0ZV9zdGF0dXNfYmVmb3JlIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2JlZm9yZSBpblxuICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdG9wIChsYXN0X2luZm8sIHRhYmxlKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICBmIGNmbG93X3BhcmFtZXRlcnMgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RhdHVzX2FmdGVyID0gZ2V0X3N0YXR1c19hZnRlciBzdGF0dXNfYmVmb3JlIHRyYWNlIGluXG4gICAgICAgIGxldCBzdG9wID0gc3RvcF9hZnRlciBnbG9iYWxfc3RhdHVzIHN0YXR1c19hZnRlciBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgICAgc3RvcmVfcmVzdWx0IGNmbG93X3BhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICBlcnJvciB0cmFjZSBpbmZvIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsYXN0X2luZm8gPSBTb21lIGluZm8gaW5cbiAgICAgICAgbGV0IGdsb2JhbF9zdGF0dXMgPSB1cGRhdGVfc3RhdHVzX2FmdGVyIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2FmdGVyIGluXG4gICAgICAgIGxldCBnbG9iYWxfc3RhdHVzID1cbiAgICAgICAgICBpZiBjb3VudGVyID0gZ2xvYmFsX3N0YXR1cy5jb3VudGVyX21pbiB0aGVuXG4gICAgICAgICAgICBjb21wdXRlX3N0YXR1c19yYW5nZXMgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXJzIGdsb2JhbF9zdGF0dXNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBnbG9iYWxfc3RhdHVzXG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgU3RvcC5zdWNjZXNzIChsYXN0X2luZm8sIHN0b3AsIGdsb2JhbF9zdGF0dXMsIHN1Y2MgY291bnRlciwgdGFibGUpIClcbiAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCByZWMgYXV4IGxvZ19pbmZvIGVycm9yIGNvdW50ZXIgdHJhY2UgdGFibGUgPVxuICAgIGlmIFV0aWxpdGllcy5oYXNfb2JzIHRyYWNlIHRoZW4gKFxuICAgICAgbGV0IHN0YXJ0X2l0ZXJhdGlvbiA9IFN5cy50aW1lICgpIGluXG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgdHJ5IFNvbWUgKGdsb2JhbF90cmFjZV9zaW1wbGlmaWNhdGlvbiAwIChlcnJvciwgbG9nX2luZm8sIHRyYWNlKSlcbiAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIG91dHB1dCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCB0YWJsZVxuICAgICAgfCBTb21lIChlcnJvciwgbG9nX2luZm8sIHRyYWNlKSAtPlxuICAgICAgICBsZXQgZW5kX3NpbXBsaWZpY2F0aW9uID0gU3lzLnRpbWUgKCkgaW5cbiAgICAgICAgbGV0IHN0YXR1cyA9XG4gICAgICAgICAgc2V0X3N0YXR1c19pbml0IGNmbG93X3BhcmFtZXRlcnMgcGFyYW1ldGVycyBzdGFydF9pdGVyYXRpb25cbiAgICAgICAgICAgIGVuZF9zaW1wbGlmaWNhdGlvbiBjb3VudGVyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG91dHB1dCA9XG4gICAgICAgICAgVXRpbGl0aWVzLmZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhclxuICAgICAgICAgICAgY2Zsb3dfcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgIGVycm9yIHdlX3NoYWxsIG5ldmVyIGNvdW50ZXIgZiB0cmFjZVxuICAgICAgICAgICAgKE5vbmUsIGZhbHNlLCBzdGF0dXMsIGNvdW50ZXIsIHRhYmxlKVxuICAgICAgICBpblxuICAgICAgICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgICAgICAgIChmdW4gKF8sIF8sIF8sIF8sIG91dHB1dCkgLT4gZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXQpXG4gICAgICAgICAgKGZ1biAoKGxhc3RfaW5mbywgdGFibGUpLCBjb3VudGVyKSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICBVdGlsaXRpZXMucmVtb3ZlX29ic19iZWZvcmUgY2Zsb3dfcGFyYW1ldGVycyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgZXJyb3IgbGFzdF9pbmZvIHRyYWNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIGNvdW50ZXIgdHJhY2UgdGFibGUpXG4gICAgICAgICAgb3V0cHV0XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlXG4gIGluXG4gIGF1eCBsb2dfaW5mbyBlcnJvciAxIHRyYWNlIHRhYmxlXG4iLCIoKlxuICAqIGNmbG93X2pzX2ludGVyZmFjZS5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTA0LTMwIDE4OjM0OjAwIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wNC0zMCAxODoyNDowMCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0ZSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogVGhpcyBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgSmF2YS1zY3JpcHQgc2VydmVyXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1LDIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuXG4gICogSW5mb3JtYXRpcXVlIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpc1xuICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIGNmbG93X3N0YXRlID0ge1xuICBzdGRfbG9nZ2VyOiBMb2dnZXJzLnQgb3B0aW9uO1xuICBlcnJfbG9nZ2VyOiBMb2dnZXJzLnQgb3B0aW9uO1xuICBwcm9maWxpbmdfbG9nZ2VyOiBMb2dnZXJzLnQgb3B0aW9uO1xuICBzdGF0dXNfbG9nZ2VyOiBMb2dnZXJzLnQgb3B0aW9uO1xuICBjdXJyZW50X3BoYXNlOiBzdHJpbmcgb3B0aW9uO1xuICBwcm9ncmVzc19iYXI6IChib29sICogaW50ICogaW50ICogaW50KSBvcHRpb247XG4gIGNhdXNhbF9mbG93czogVXRpbGl0aWVzLnN0b3J5X3RhYmxlIG9wdGlvbjtcbiAgdHJpdmlhbF9jb21wcmVzc2lvbjogVXRpbGl0aWVzLnN0b3J5X3RhYmxlIG9wdGlvbjtcbiAgd2Vha19jb21wcmVzc2lvbjogVXRpbGl0aWVzLnN0b3J5X3RhYmxlIG9wdGlvbjtcbiAgc3Ryb25nX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICBlcnJvcl9saXN0OiBVdGlsaXRpZXMuZXJyb3JfbG9nIG9wdGlvbjtcbn1cblxubGV0IGluaXQgKCkgPVxuICByZWZcbiAgICB7XG4gICAgICBzdGRfbG9nZ2VyID0gTm9uZTtcbiAgICAgIGVycl9sb2dnZXIgPSBOb25lO1xuICAgICAgcHJvZmlsaW5nX2xvZ2dlciA9IE5vbmU7XG4gICAgICBzdGF0dXNfbG9nZ2VyID0gTm9uZTtcbiAgICAgIGN1cnJlbnRfcGhhc2UgPSBOb25lO1xuICAgICAgcHJvZ3Jlc3NfYmFyID0gTm9uZTtcbiAgICAgIGNhdXNhbF9mbG93cyA9IE5vbmU7XG4gICAgICB0cml2aWFsX2NvbXByZXNzaW9uID0gTm9uZTtcbiAgICAgIHdlYWtfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgc3Ryb25nX2NvbXByZXNzaW9uID0gTm9uZTtcbiAgICAgIGVycm9yX2xpc3QgPSBOb25lO1xuICAgIH1cblxubGV0IGdldF9zdGRfYnVmZmVyIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuc3RkX2xvZ2dlclxubGV0IGdldF9lcnJfYnVmZmVyIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuZXJyX2xvZ2dlclxubGV0IGdldF9wcm9maWxpbmdfYnVmZmVyIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUucHJvZmlsaW5nX2xvZ2dlclxubGV0IGdldF9icmFuY2hfYW5kX2N1dF9zdGF0dXMgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5zdGF0dXNfbG9nZ2VyXG5sZXQgZ2V0X3Byb2dyZXNzX2JhciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnByb2dyZXNzX2JhclxubGV0IGdldF9jdXJyZW50X3BoYXNlX3RpdGxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuY3VycmVudF9waGFzZVxubGV0IGdldF9jYXVzYWxfZmxvd190YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLmNhdXNhbF9mbG93c1xubGV0IGdldF90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUudHJpdmlhbF9jb21wcmVzc2lvblxubGV0IGdldF93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUud2Vha19jb21wcmVzc2lvblxubGV0IGdldF9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5zdHJvbmdfY29tcHJlc3Npb25cbmxldCBnZXRfZXJyb3JfbGlzdCBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLmVycm9yX2xpc3RcblxubGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHN0cmluZyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGN1cnJlbnRfcGhhc2UgPSBTb21lIHN0cmluZyB9XG5cbmxldCByZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBjdXJyZW50X3BoYXNlID0gTm9uZSB9XG5cbmxldCBzYXZlX3Byb2dyZXNzX2Jhcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGJhciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHByb2dyZXNzX2JhciA9IFNvbWUgYmFyIH1cblxubGV0IHJlc2V0X3Byb2dyZXNzX2Jhcl9hdXggY2Zsb3dfc3RhdGVfcHRyID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggcHJvZ3Jlc3NfYmFyID0gTm9uZSB9XG5cbmxldCBzYXZlX2NhdXNhbF9mbG93X3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBjYXVzYWxfZmxvd3MgPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHRhYmxlID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggdHJpdmlhbF9jb21wcmVzc2lvbiA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCB3ZWFrX2NvbXByZXNzaW9uID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHRhYmxlID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggc3Ryb25nX2NvbXByZXNzaW9uID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX2Vycm9yX2xvZ19hdXggY2Zsb3dfc3RhdGVfcHRyIGVycm9yID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggZXJyb3JfbGlzdCA9IFNvbWUgZXJyb3IgfVxuXG5sZXQgcmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBzdGRfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCByZWRpcmVjdF9lcnJfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGVycl9sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggcHJvZmlsaW5nX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgcmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHN0YXR1c19sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IGxpZnQgZiBjZmxvd19zdGF0ZV9wdHJfb3B0IGRhdGEgPVxuICBtYXRjaCBjZmxvd19zdGF0ZV9wdHJfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjZmxvd19zdGF0ZV9wdHIgLT4gY2Zsb3dfc3RhdGVfcHRyIDo9IGYgY2Zsb3dfc3RhdGVfcHRyIGRhdGFcblxubGV0IGxpZnRfcmVzZXQgZiBjZmxvd19zdGF0ZV9wdHJfb3B0ID1cbiAgbGlmdCAoZnVuIHggKCkgLT4gZiB4KSBjZmxvd19zdGF0ZV9wdHJfb3B0ICgpXG5cbmxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBsaWZ0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZV9hdXhcbmxldCByZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlID0gbGlmdF9yZXNldCByZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eFxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyID0gbGlmdCBzYXZlX3Byb2dyZXNzX2Jhcl9hdXhcbmxldCByZXNldF9wcm9ncmVzc19iYXIgPSBsaWZ0X3Jlc2V0IHJlc2V0X3Byb2dyZXNzX2Jhcl9hdXhcbmxldCBzYXZlX2NhdXNhbF9mbG93X3RhYmxlID0gbGlmdCBzYXZlX2NhdXNhbF9mbG93X3RhYmxlX2F1eFxubGV0IHNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSA9IGxpZnQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlX2F1eFxubGV0IHNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSA9IGxpZnQgc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlX2F1eFxubGV0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZV9hdXhcbmxldCBzYXZlX2Vycm9yX2xpc3QgPSBsaWZ0IHNhdmVfZXJyb3JfbG9nX2F1eFxubGV0IHJlZGlyZWN0X3N0ZF9idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X3N0ZF9idWZmZXJfYXV4XG5sZXQgcmVkaXJlY3RfZXJyX2J1ZmZlciA9IGxpZnQgcmVkaXJlY3RfZXJyX2J1ZmZlcl9hdXhcbmxldCByZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyX2F1eFxubGV0IHJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciA9IGxpZnQgcmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyX2F1eFxuIiwiKCoqXG4gICogY29tcHJlc3Npb25fbWFpbi5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDExLTEwLTE5IDE2OjUyOjU1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wNi0xMCAxMToxMDozNCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSBVID0gVXRpbGl0aWVzXG5tb2R1bGUgUyA9IFUuU1xuXG50eXBlIHNlY3JldF9sb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cblxubGV0IGluaXRfc2VjcmV0X2xvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbml0X2xvZ19pbmZvXG5cbnR5cGUgc2VjcmV0X3BhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkgucGFyYW1ldGVyXG5cbmxldCBidWlsZF9wYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmJ1aWxkX3BhcmFtZXRlclxubGV0IGdldF9sb2dnZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXJcbmxldCBsb2dfc3RlcCA9IHRydWVcbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBkdW1wX3Byb2ZpbGluZ19pbmZvID0gdHJ1ZVxubGV0IF8gPSBkdW1wX3Byb2ZpbGluZ19pbmZvXG5sZXQgYnVja2V0X3NvcnQgPSB0cnVlXG5cbigqKiBmYWxzZSAtPiBvbmx5IHRoZSBmaXJzdCBzdG9yeSBwZXIgb2JzZXJ2YWJsZSBoaXQ7IHRydWUgLT4gYWxsIHN0b3JpZXMgcGVyIG9icyBoaXQgKilcbmxldCBnZXRfYWxsX3N0b3JpZXMgPSBmYWxzZVxuXG5sZXQgbWF4X251bWJlcl9vZl9pdHRlcmF0aW9ucyA9IE5vbmVcbmxldCB3ZV9zaGFsbF9ub3QgXyA9IGZhbHNlXG5sZXQgd2Vfc2hhbGwgXyA9IHRydWVcbmxldCBkb19ub3RfbG9nIHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2xvZ19zdGVwIHBhcmFtZXRlciBmYWxzZVxuXG5sZXQgY29tcHJlc3NfYW5kX3ByaW50IHBhcmFtZXRlciB+ZG90Rm9ybWF0ID9qc19pbnRlcmZhY2UgZW52IGxvZ19pbmZvIHN0ZXBfbGlzdFxuICAgID1cbiAgKCpsZXQgY2FsbGVkX2Zyb20gPSBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgaW4qKVxuICBsZXQgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGxvZ19zdGVwIGluXG4gIGxldCBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9kZWJ1Z2dpbmdfbW9kZSBwYXJhbWV0ZXIgZGVidWdfbW9kZSBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBtYXhfbnVtYmVyX29mX2l0dGVyYXRpb25zIHdpdGhcbiAgICB8IE5vbmUgLT4gUy5QSC5CLlBCLkNJLlBvLksuSC5kb19ub3RfYm91bmRfaXR0ZXJhdGlvbnMgcGFyYW1ldGVyXG4gICAgfCBTb21lIGkgLT4gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfaXR0ZXJhdGlvbl9ib3VuZCBwYXJhbWV0ZXIgaVxuICBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBpZiBnZXRfYWxsX3N0b3JpZXMgdGhlblxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgaWYgYnVja2V0X3NvcnQgdGhlblxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC51c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC51c2VfZnVzaW9uX3NvcnQgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBtb2RlID0gcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY29tcHJlc3Npb25fbW9kZSBpblxuICBsZXQgY2F1c2FsX3RyYWNlX29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfY2F1c2FsX3RyYWNlIG1vZGUgaW5cbiAgbGV0IHdlYWtfY29tcHJlc3Npb25fb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF93ZWFrX2NvbXByZXNzaW9uIG1vZGUgaW5cbiAgbGV0IHN0cm9uZ19jb21wcmVzc2lvbl9vbiA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3N0cm9uZ19jb21wcmVzc2lvbiBtb2RlIGluXG4gIGxldCBlcnJvciA9IFUuZXJyb3JfaW5pdCBpblxuICBsZXQgaGFuZGxlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguaW5pdF9oYW5kbGVyIGVudiBpblxuICBsZXQgKCkgPVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgKFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uU3RhcnQsIFwiU3RhcnRpbmcgQ29tcHJlc3Npb25cIikpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMSA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUyID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTMgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlNCA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0ICgpID0gQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfY2F1c2FsX2Zsb3dfdGFibGUganNfaW50ZXJmYWNlIHRhYmxlMSBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlIHRhYmxlMlxuICBpblxuICBsZXQgKCkgPSBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTMgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlIHRhYmxlNFxuICBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5yZWRpcmVjdF9zdGRfYnVmZmVyIGpzX2ludGVyZmFjZVxuICAgICAgKFNvbWUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5yZWRpcmVjdF9lcnJfYnVmZmVyIGpzX2ludGVyZmFjZVxuICAgICAgKFNvbWUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfcHJvZmlsaW5nX2xvZ2dlciBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5yZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZVxuICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXJcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSkpXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIGpzX2ludGVyZmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IHBhcmFtZXRlclxuICAgIHwgU29tZSBfanNfaW50ZXJmYWNlX3B0ciAtPlxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgKGZ1biBzIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIGpzX2ludGVyZmFjZSBzKVxuICAgICAgaW5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2UucmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3NhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlclxuICAgICAgICAgIChDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9wcm9ncmVzc19iYXIganNfaW50ZXJmYWNlKVxuICAgICAgaW5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9yZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5yZXNldF9wcm9ncmVzc19iYXIganNfaW50ZXJmYWNlKVxuICAgICAgaW5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9zYXZlX2Vycm9yX2xvZyBwYXJhbWV0ZXIgKGZ1biBlcnJvciAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfZXJyb3JfbGlzdCBqc19pbnRlcmZhY2UgZXJyb3IpXG4gICAgICBpblxuICAgICAgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl9ub25lIHBhcmFtZXRlciBpblxuICBsZXQgcGFyYW1ldGVyX2NhdXNhbCA9XG4gICAgaWYgY2F1c2FsX3RyYWNlX29uIHRoZW5cbiAgICAgIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyX3dlYWsgPVxuICAgIGlmIHdlYWtfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zaHV0X2Rvd25fc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXJfc3Ryb25nID1cbiAgICBpZiBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zaHV0X2Rvd25fc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyXG4gIGluXG5cbiAgbGV0IGVtcHR5X2NvbXByZXNzaW9uID0gZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTEsIHRhYmxlMiwgdGFibGUzLCB0YWJsZTQgaW5cbiAgbGV0IHN0ZXBfbGlzdCA9IFUudHJhY2Vfb2ZfcHJldHJhY2Ugc3RlcF9saXN0IGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbCwgX3RyaXZpYWwsIHdlYWssIHN0cm9uZyA9XG4gICAgaWZcbiAgICAgIChub3QgY2F1c2FsX3RyYWNlX29uKSAmJiAobm90IHdlYWtfY29tcHJlc3Npb25fb24pXG4gICAgICAmJiBub3Qgc3Ryb25nX2NvbXByZXNzaW9uX29uXG4gICAgdGhlblxuICAgICAgZW1wdHlfY29tcHJlc3Npb25cbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0ZXBfbGlzdCA9XG4gICAgICAgIFUucmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIHN0ZXBfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIG5vdCAoVS5oYXNfb2JzIHN0ZXBfbGlzdCkgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiKyBObyBjYXVzYWwgZmxvdyBmb3VuZEAuXCJcbiAgICAgICAgaW5cbiAgICAgICAgZW1wdHlfY29tcHJlc3Npb25cbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgIChpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHx8IHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICAgICAgICAgICBcIisgUHJvZHVjaW5nIGNhdXNhbCBjb21wcmVzc2lvbnNALlwiXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgXCIrIFByb2R1Y2luZyBjYXVzYWwgdHJhY2VzQC5cIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxhc3RfZWlkID0gVS5sYXN0X2VpZF9pbl9wcmV0cmFjZSBzdGVwX2xpc3QgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RlcF9saXN0ID1cbiAgICAgICAgICBVLnNwbGl0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcF9saXN0XG4gICAgICAgIGluXG4gICAgICAgICgqIGNhdXNhbCBjb21wcmVzc2lvbiB3aXRob3V0IGFueSBzaW1wbGlmaWNhdGlvbiAoanVzdCBwYXJ0aWFsIG9yZGVyIGNvbXByZXNzaW9uKSopXG4gICAgICAgICgqIHRoaXMgaXMgdmVyeSBjb3N0bHksIGFuZCBtYWlubHkgZm9yIHRlYWNoaW5nIHB1cnBvc2UgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3RhYmxlID1cbiAgICAgICAgICBpZiBjYXVzYWxfdHJhY2Vfb24gdGhlbiAoXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX2NhdXNhbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgbG9nX3N0ZXAgdGhlblxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlxcdCAtIGJsYWNrYm9hcmQgZ2VuZXJhdGlvbkAuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGVwX2xpc3QgPVxuICAgICAgICAgICAgICBVLm1ha2VfdW5hbWJpZ3VvdXMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcF9saXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIFUuY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlICYmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcXHQgLSBwcmV0dHkgcHJpbnRpbmcgdGhlIGdyaWRALlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvLCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgVS5leHBvcnRfbXVzaWNhbF9ncmlkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBcImFcIiAwIDAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgVS5wcmludF9tdXNpY2FsX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sIGVycm9yXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLCBlcnJvclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICBVLmV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRzX2Zyb21fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbl9zdG9yaWVzID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgbG9nX3N0ZXAgdGhlblxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlxcdCAtIGNvbXB1dGluZyBjYXVzYWwgcGFzdCBvZiBlYWNoIG9ic2VydmVkIGV2ZW50cyAoJWkpQC5cIlxuICAgICAgICAgICAgICAgICAgbl9zdG9yaWVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X2xpc3QgPVxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlxcdFxcdCAqIGNhdXNhbCBjb21wcmVzc2lvbiBALlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqXHRcdGxldCBsb2dfaW5mbyA9IFUuUy5QSC5CLlBCLkNJLlBvLksuUC5zZXRfc3RhcnRfY29tcHJlc3Npb24gbG9nX2luZm8gaW4gKilcbiAgICAgICAgICAgICAgKCogV2UgdXNlIHRoZSBncmlkIHRvIGdldCB0aGUgY2F1c2FsIHByZWNlZGVuY2UgKHByZWQqICkgb2YgZWFjaCBvYnNlcnZhYmxlICopXG4gICAgICAgICAgICAgIGxldCBncmlkID0gVS5jb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCBzdGVwX2xpc3QgaGFuZGxlciBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBlbnJpY2hlZF9ncmlkID1cbiAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgLmVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX2VhY2hfbm9kZV93aXRob3V0X2FfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgUGFyYW1ldGVyLmxvZ19udW1iZXJfb2ZfY2F1c2FsX2Zsb3dzIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBsb2dnZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgQ2F1c2FsLnByaW50X3N0YXQgbG9nZ2VyIHBhcmFtZXRlciBoYW5kbGVyIGVucmljaGVkX2dyaWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgbG9nX3N0ZXAgdGhlblxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlxcdCAtIGNhdXNhbCBmbG93IGNvbXByZXNzaW9uICglaSlALlwiIG5fc3Rvcmllc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBmb2xkIHRoZSBsaXN0IG9mIG9iZXJ2YWJsZSBoaXQsIGFuZCBmb3IgZWFjaCBvbmUgY29sbGVjdCB0aGUgY2F1c2FsIHBhc3QgKilcbiAgICAgICAgICAgICAgVS5mb2xkX2xlZnRfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICB+ZXZlbnQ6U3RvcnlQcm9maWxpbmcuQ29sbGVjdF90cmFjZXNcbiAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfXG4gICAgICAgICAgICAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0b3J5X2xpc3Qgb2JzZXJ2YWJsZV9pZCAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFx0XFx0ICogY2F1c2FsIGNvbXByZXNzaW9uIEAuXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggU3RvcnlfanNvbi5JbnByb2dyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN0YXJ0IG9uZSBjYXVzYWwgY29tcHJlc3Npb25cIiApKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlX2JlZm9yZV9jb21wcmVzc2lvbiA9XG4gICAgICAgICAgICAgICAgICAgIFUuY2F1c2FsX3ByZWZpeF9vZl9hbl9vYnNlcnZhYmxlX2hpdCBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIFwiY29tcHJlc3Npb25fbWFpbiwgbGluZSAyMDE0XCIgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgIGVucmljaGVkX2dyaWQgb2JzZXJ2YWJsZV9pZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICBVLmdldF9ydW50aW1lX2luZm9fZnJvbV9vYnNlcnZhYmxlX2hpdCBvYnNlcnZhYmxlX2lkXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBpbmZvIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLmdldF9jb3VudGVyIHN0b3J5X2xpc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIFsgaW5mbyBdXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X2FycmF5ID1cbiAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHRyYWNlX2JlZm9yZV9jb21wcmVzc2lvbiBpbmZvIHN0b3J5X2xpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9hcnJheSlcbiAgICAgICAgICAgICAgICB0YWJsZTEgKExpc3QucmV2IGxpc3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X2xpc3QgPVxuICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X2xpc3RcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUxXG4gICAgICAgIGluXG4gICAgICAgICgqIE5vdyBjYXVzYWwgY29tcHJlc3Npb24sIHdpdGggZGV0ZWN0aW9uIG9mIHNpcGhvbnMgJiBkZXRlY3Rpb24gb2YgcHNldWRvIGludmVyc2UgZXZlbnRzICopXG4gICAgICAgIGxldCBwYXJhbWV0ZXJfZGVlcGVyID1cbiAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9rYXNhX3BhcmFtZXRlcnNcbiAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXhcbiAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgXCJcXHRcXHRcXHRcIilcbiAgICAgICAgICAgIHBhcmFtZXRlcl9jYXVzYWxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9uZV9pdGVyYXRpb25fb2ZfY29tcHJlc3Npb24gKGxvZ19pbmZvLCBlcnJvciwgZXZlbnRfbGlzdCkgPVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QgPVxuICAgICAgICAgICAgaWYgR3JhcGhfY2xvc3VyZS5pZ25vcmVfZmxvd19mcm9tX291dGdvaW5nX3NpcGhvbiB0aGVuXG4gICAgICAgICAgICAgIFUuZmlsbF9zaXBob24gcGFyYW1ldGVyX2RlZXBlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gVS5wcmludF90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBldmVudF9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0ID1cbiAgICAgICAgICAgIGlmIFBhcmFtZXRlci5kb19nbG9iYWxfY3V0IHRoZW5cbiAgICAgICAgICAgICAgVS5jdXQgcGFyYW1ldGVyX2RlZXBlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIFBhcmFtZXRlci5jdXRfcHNldWRvX2ludmVyc2VfZXZlbnQgdGhlblxuICAgICAgICAgICAgVS5yZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIHBhcmFtZXRlcl9kZWVwZXJcbiAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgZXJyb3IgZXZlbnRfbGlzdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICBpblxuICAgICAgICAoKiBUaGlzIGZvbmN0aW9uIGl0ZXIgdGhlIGNhdXNhbCBjb21wcmVzc2lvbiB1bnRpbCBhIGZpeHBvaW50IGlzIHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0IHNpemUgPSBVdGlsaXRpZXMuc2l6ZV9vZl9wcmV0cmFjZSBldmVudF9saXN0IGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIHBhcmFtZXRlclxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaycgd2hlbiBrID49IGsnIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIiVzXFx0LSBtYXggbnVtYmVyIG9mIGl0ZXJhdGlvbnMgcmVhY2hlZCwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIiVzXFx0XFx0LSBzdGFydCBpdGVyYXRpb24gJWksICVpIGV2ZW50cyByZW1haW5pbmcgQC5cIlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgKGsgKyAxKSBzaXplXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG91dHB1dF9vcHQgPVxuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAob25lX2l0ZXJhdGlvbl9vZl9jb21wcmVzc2lvbiAobG9nX2luZm8sIGVycm9yLCBldmVudF9saXN0KSlcbiAgICAgICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiVzXFx0LSBpdGVyYXRpb25zIHN0b3BwZWQgYnkgdGhlIGVuZC11c2VyLCAlaSBldmVudHMgXFxcbiAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgQC5cIlxuICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgc2l6ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgICAgIHwgU29tZSAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0JykgLT5cbiAgICAgICAgICAgICAgaWYgVS5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QnIDwgVS5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3RcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGF1eCAoayArIDEpIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnKVxuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiVzXFx0LSBhIGZpeHBvaW50IGhhcyBiZWVuIHJlYWNoZWQsICVpIGV2ZW50cyByZW1haW5pbmcgQC5cIlxuICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgc2l6ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0J1xuICAgICAgICAgICAgICApKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXV4IGsgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCkgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiJXNcXHQtIHNpbXBsaWZ5IHRoZSB0cmFjZSwgJWkgZXZlbnRzIEAuXCJcbiAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgIChVdGlsaXRpZXMuc2l6ZV9vZl9wcmV0cmFjZSBldmVudF9saXN0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IGsgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgIGlmIHdlYWtfY29tcHJlc3Npb25fb24gfHwgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgICAgICAgIGlmIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2JsYWNrbGlzdF9ldmVudHMgcGFyYW1ldGVyIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3dlYWsgaW5cbiAgICAgICAgICAgICAgbGV0IGJsYWNrbGlzdCA9IFUuY3JlYXRlX2JsYWNrX2xpc3QgKGxhc3RfZWlkICsgMSkgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9ibCwgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrX3N0b3J5X3RhYmxlKSA9XG4gICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydFxuICAgICAgICAgICAgICAgIC5mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJfd2hpbGVfcmVzaGFraW5nX3RoZV90cmFjZVxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3Igd2Vfc2hhbGwgd2Vfc2hhbGxfbm90XG4gICAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0LnBhcmFtZXRlcnMgYXV4XG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIHdlIHJlbW92ZSBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU3RvcnlfanNvbi5JbnByb2dyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgY29sbGVjdGluZyBvbmUgbmV3IHRyYWNlXCIgKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICAgICAgICAgIFUucmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIHdlIGNvbXB1dGUgY2F1c2FsIGNvbXByZXNzaW9uICopXG4gICAgICAgICAgICAgICAgICAgIFUuY3V0IChkb19ub3RfbG9nIHBhcmFtZXRlcikgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAoYmxhY2tsaXN0LCB0YWJsZTIsIHRhYmxlMykgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUyID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlMlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5yZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrbGlzdCB0cmFjZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBVLndlYWtseV9jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMyA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMpIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyB0YWJsZTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLmJsYWNrX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlMlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzX2ludGVyZmFjZSB0YWJsZTNcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tsaXN0LCB0YWJsZTIsIHRhYmxlMykpXG4gICAgICAgICAgICAgICAgICBzdGVwX2xpc3RcbiAgICAgICAgICAgICAgICAgIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHdlYWtfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgd2Vha19zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgd2Vha19zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha19zdG9yeV90YWJsZVxuICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX2NhdXNhbCBpblxuICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnRcbiAgICAgICAgICAgICAgICAuZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyX3doaWxlX3Jlc2hha2luZ190aGVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHdlX3NoYWxsIHdlX3NoYWxsX25vdFxuICAgICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydC5wYXJhbWV0ZXJzIGF1eFxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiB3ZSByZW1vdmUgcHNldWRvIGludmVyc2UgZXZlbnRzICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFN0b3J5X2pzb24uSW5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN0YXJ0IGNvbGxlY3Rpbmcgb25lIG5ldyB0cmFjZVwiICkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgKGRvX25vdF9sb2cgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoKiB3ZSBjb21wdXRlIGNhdXNhbCBjb21wcmVzc2lvbiAqKVxuICAgICAgICAgICAgICAgICAgICBVLmN1dCAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZSlcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICAgICAgICAgICAgICAgICAgICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluZm8gdHJhY2UgdGFibGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBpbmZvLCB0YWJsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpbmZvIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzX2ludGVyZmFjZSB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgaW5mbywgdGFibGUpXG4gICAgICAgICAgICAgICAgICBzdGVwX2xpc3QgdGFibGUyXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5fY2F1c2FsX3N0b3JpZXMgPSBVLmNvdW50X3N0b3JpZXMgY2F1c2FsX3N0b3J5X3RhYmxlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHdlYWtseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl93ZWFrIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJcXHQgLSB3ZWFrIGZsb3cgY29tcHJlc3Npb24gKCVpKUAuXCIgbl9jYXVzYWxfc3Rvcmllc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGJsYWNrbGlzdCA9IFUuY3JlYXRlX2JsYWNrX2xpc3QgKGxhc3RfZWlkICsgMSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3dlYWsgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsYWNrbGlzdCwgd2Vha2x5X3N0b3J5X3RhYmxlKSA9XG4gICAgICAgICAgICAgICAgICBVLmZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgXCJ3ZWFrIGNvbXByZXNzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgICAgICAgICAgICAgICAgICAgICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGxpc3RfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgIChibGFja2xpc3QsIHN0b3J5X2xpc3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBVLndlYWtseV9jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCBzdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCBzdG9yeV9saXN0KSB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0b3J5X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZSBsaXN0X2luZm8gc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHN0b3J5X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCBzdG9yeV9saXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrbGlzdCwgc3RvcnlfbGlzdCkpXG4gICAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZSAoYmxhY2tsaXN0LCB0YWJsZTMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUyLCB0YWJsZTNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5fd2Vha19zdG9yaWVzID0gVS5jb3VudF9zdG9yaWVzIHdlYWtseV9zdG9yeV90YWJsZSBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgaWYgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl9zdHJvbmcgaW5cbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl9zdHJvbmcgcGFyYW1ldGVyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJcXHQgLSBzdHJvbmcgZmxvdyBjb21wcmVzc2lvbiAoJWkpQC5cIiBuX3dlYWtfc3Rvcmllc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgVS5mb2xkX3N0b3J5X3RhYmxlX3dpdGhfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgZXJyb3IgXCJzdHJvbmdfY29tcHJlc3Npb25cIlxuICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl9cbiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcmVmaW5lZF9ldmVudF9saXN0IGxpc3RfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgc3Ryb25nbHlfc3RvcnlfdGFibGUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICBVLmNvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgcmVmaW5lZF9ldmVudF9saXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfaW5mbyBzdHJvbmdseV9zdG9yeV90YWJsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpXG4gICAgICAgICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlIHRhYmxlNFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBzdHJvbmdseV9zdG9yeV90YWJsZVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTRcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBjYXVzYWxfdGFibGUsXG4gICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlLFxuICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZSxcbiAgICAgICAgICBzdHJvbmdseV9zdG9yeV90YWJsZSApXG4gICAgICApXG4gICAgKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBpZiBjYXVzYWxfdHJhY2Vfb24gdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleHBvcnQgPVxuICAgICAgICBVLmV4cG9ydF9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXVzYWxcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgQ2F1c2FsLnByZXR0eV9wcmludCB+ZG90Rm9ybWF0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBlbnYgR3JhcGhfY2xvc3VyZS5jb25maWdfc21hbGxfZ3JhcGggXCJcIiBcIlwiXG4gICAgICAgICAgZXhwb3J0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHdlYWtcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgQ2F1c2FsLnByZXR0eV9wcmludCB+ZG90Rm9ybWF0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBlbnYgR3JhcGhfY2xvc3VyZS5jb25maWdfc21hbGxfZ3JhcGggXCJXZWFrbHlcIlxuICAgICAgICAgIFwid2Vha2x5IFwiIGV4cG9ydFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgX2xvZ19pbmZvID1cbiAgICBpZiBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleHBvcnQgPVxuICAgICAgICBVLmV4cG9ydF9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJvbmdcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgQ2F1c2FsLnByZXR0eV9wcmludCB+ZG90Rm9ybWF0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBlbnYgR3JhcGhfY2xvc3VyZS5jb25maWdfc21hbGxfZ3JhcGggXCJTdHJvbmdseVwiXG4gICAgICAgICAgXCJzdHJvbmdseSBcIiBleHBvcnRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICBpblxuICBsZXQgKCkgPVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgKFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uU3VjY2VzcywgXCJDb21wcmVzc2lvbiBjb21wbGV0ZWRcIikpXG4gIGluXG4gIGxldCBfID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2xvZ2dlclxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gIGluXG4gIGxldCBfID1cbiAgICBFeGNlcHRpb24ucHJpbnRfZm9yX0thU2ltXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yXG4gIGluXG4gICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb25fbWVzc2FnZSB+bm9uZSB+d2VhayB+c3Ryb25nIH5zZW5kX21lc3NhZ2UgPVxuICBsZXQgcGFyYW1ldGVyID1cbiAgICByZWZcbiAgICAgIChDb21wcmVzc2lvbl9tYWluLmJ1aWxkX3BhcmFtZXRlclxuICAgICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciB+c2VuZF9tZXNzYWdlIH5ub25lIH53ZWFrXG4gICAgICAgICB+c3Ryb25nICgpKVxuICBpblxuICBmdW4gdGV4dCAtPlxuICAgIHRyeVxuICAgICAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZ1xuICAgICAgICAoZnVuIHN0IGIgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFwiQ09ORklHXCIgLT5cbiAgICAgICAgICAgIGxldCBjb25mID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfanNvbiBzdCBiIGluXG4gICAgICAgICAgICBsZXQgbm9uZSA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJub25lXCIgY29uZilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHdlYWsgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwid2Vha1wiIGNvbmYpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHdlYWtcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzdHJvbmcgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwic3Ryb25nXCIgY29uZilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gc3Ryb25nXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwYXJhbWV0ZXIgOj1cbiAgICAgICAgICAgICAgICBDb21wcmVzc2lvbl9tYWluLmJ1aWxkX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciB+c2VuZF9tZXNzYWdlXG4gICAgICAgICAgICAgICAgICB+bm9uZSB+d2VhayB+c3Ryb25nICgpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8IFwiUlVOXCIgLT5cbiAgICAgICAgICAgIGxldCBlbnYsIHN0ZXBzID1cbiAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgICAgICAoVHJhY2UuZm9sZF90cmFjZVxuICAgICAgICAgICAgICAgICAgIChmdW4gX2VudiBzdGVwcyBzdGVwIC0+IHN0ZXAgOjogc3RlcHMpXG4gICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IFtdKSlcbiAgICAgICAgICAgICAgICBzdCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgQ29tcHJlc3Npb25fbWFpbi5jb21wcmVzc19hbmRfcHJpbnQgIXBhcmFtZXRlclxuICAgICAgICAgICAgICAgIH5kb3RGb3JtYXQ6Q2F1c2FsLkh0bWwgZW52XG4gICAgICAgICAgICAgICAgKENvbXByZXNzaW9uX21haW4uaW5pdF9zZWNyZXRfbG9nX2luZm8gKCkpXG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHN0ZXBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uanNvbl9lcnJvciAoXCJJbnZhbGlkIEthU3RvciBtZXNzYWdlOiBcIiBeIHgpKSlcbiAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgdGV4dClcbiAgICB3aXRoIGUgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5lcHJpbnRmIFwiJXNALlwiIChQcmludGV4Yy50b19zdHJpbmcgZSkgaW5cbiAgICAgICgpICgqVE9ETyopXG4iLCJ0eXBlICdhIHN1cGVybGlzdCA9IEVsdCBvZiAnYSB8IFN1cGVyX2xpc3Qgb2YgJ2Egc3VwZXJsaXN0IGxpc3QgbGlzdFxuXG5sZXQgcmVjIGZvbGQgZiBhIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBFbHQgZWx0IC0+IGYgYSBlbHRcbiAgfCBTdXBlcl9saXN0IGwgLT4gTGlzdC5mb2xkX2xlZnQgKExpc3QuZm9sZF9sZWZ0IChmb2xkIGYpKSBhIGxcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgY29tcGFyZSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCBsMiB3aXRoXG4gICAgfCBbXSAtPiAwXG4gICAgfCBfIC0+IC0xKVxuICB8IGgxIDo6IHQxIC0+XG4gICAgKG1hdGNoIGwyIHdpdGhcbiAgICB8IFtdIC0+IDFcbiAgICB8IGgyIDo6IHQyIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZSBoMSBoMiBpblxuICAgICAgKG1hdGNoIGNtcCB3aXRoXG4gICAgICB8IDAgLT4gY29tcGFyZV9saXN0IGNvbXBhcmUgdDEgdDJcbiAgICAgIHwgXyAtPiBjbXApKVxuXG5sZXQgcmVjIGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmUgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgRWx0IGEsIEVsdCBiIC0+IGNvbXBhcmUgYSBiXG4gIHwgU3VwZXJfbGlzdCBhLCBTdXBlcl9saXN0IGIgLT5cbiAgICBjb21wYXJlX2xpc3QgKGNvbXBhcmVfbGlzdCAoY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSkpIGEgYlxuICB8IEVsdCBfLCBTdXBlcl9saXN0IF8gLT4gLTFcbiAgfCBTdXBlcl9saXN0IF8sIEVsdCBfIC0+IDFcblxubGV0IHJlYyBzb3J0IGNvbXBhcmUgc3VwZXJsaXN0ID1cbiAgbWF0Y2ggc3VwZXJsaXN0IHdpdGhcbiAgfCBFbHQgYSAtPiBFbHQgYVxuICB8IFN1cGVyX2xpc3QgYSAtPlxuICAgIFN1cGVyX2xpc3RcbiAgICAgIChMaXN0LnJldl9tYXBcbiAgICAgICAgIChmdW4gbCAtPlxuICAgICAgICAgICBsZXQgbCcgPSBMaXN0LnJldl9tYXAgKHNvcnQgY29tcGFyZSkgbCBpblxuICAgICAgICAgICBsZXQgbCcgPSBMaXN0LnNvcnQgKGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmUpIGwnIGluXG4gICAgICAgICAgIGwnKVxuICAgICAgICAgKExpc3QucmV2IGEpKVxuXG5sZXQgZHVtcF9zdXBlcl9saXN0IGYgcyBsID1cbiAgbGV0IHJlYyBhdXggZGVwdGggZiBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IEVsdCBhIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVhQCxcIiBkZXB0aCBzIGFcbiAgICB8IFN1cGVyX2xpc3QgbCAtPlxuICAgICAgUHAubGlzdCBQcC5jdXRcbiAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXNALCVhXCIgZGVwdGhcbiAgICAgICAgICAgIChQcC5saXN0IFBwLmN1dCAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVzQCwlYVwiIGRlcHRoIChhdXggKFwiLS1cIiBeIGRlcHRoKSkgbCkpXG4gICAgICAgICAgICBsKVxuICAgICAgICBmIGxcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXUAuXCIgKGF1eCBcIi0+XCIpIGxcblxudHlwZSAnYSBpbmZvID0geyBwcmVkXzE6IGludCBsaXN0OyBjb25mbGljdF8xOiBpbnQgbGlzdDsgbGFiZWw6ICdhOyBkZXB0aDogaW50IH1cblxubGV0IGNvbXBhcmVfZnN0X3RyaXBsZSAoYSwgXywgXykgKGIsIF8sIF8pID0gY29tcGFyZSBhIGJcblxubGV0IHNtYXNoIGNvbXBhcmUgbCA9XG4gIGxldCByZWMgYXV4IHRvX2RvIG9sZCBjdXJyZW50IGFjY3UgPVxuICAgIG1hdGNoIHRvX2RvIHdpdGhcbiAgICB8IFtdIC0+IGN1cnJlbnQgOjogYWNjdVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZiBjb21wYXJlIGggb2xkID0gMCB0aGVuXG4gICAgICAgIGF1eCB0IG9sZCAoaCA6OiBjdXJyZW50KSBhY2N1XG4gICAgICBlbHNlXG4gICAgICAgIGF1eCB0IGggWyBoIF0gKGN1cnJlbnQgOjogYWNjdSlcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgRWx0IGEgLT4gRWx0IGFcbiAgfCBTdXBlcl9saXN0IGwgLT5cbiAgICBTdXBlcl9saXN0XG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhY2N1IGwgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gYWNjdVxuICAgICAgICAgICAgICB8IGggOjogdCAtPiBhdXggdCBoIFsgaCBdIGFjY3UpXG4gICAgICAgICAgICBbXSBsKSlcblxuKCpsZXQgbCA9XG4gICAgU3VwZXJfbGlzdFxuICAgICAgW1xuICAgICAgICBbXG4gICAgICAgICAgU3VwZXJfbGlzdFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBbRWx0ICgyLDAsMCk7RWx0ICgzLDAsMCk7RWx0ICg0LDAsMCldO1xuICAgICAgICAgICAgICBbRWx0ICgxLDEsMSk7RWx0ICgyLDEsMSk7RWx0ICgzLDEsMSldO1xuICAgICAgICAgICAgICBbRWx0ICgyLDIsMik7RWx0ICg0LDIsMik7RWx0ICg1LDMsMyldO1xuICAgICAgICAgICAgICBbRWx0ICgxLDQsNCk7RWx0ICgyLDQsNCk7RWx0ICgzLDQsNCldXTtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbW0VsdCAoMSw1LDUpO0VsdCAoMiw1LDUpXV07XG4gICAgICAgICAgU3VwZXJfbGlzdFxuICAgICAgICAgICAgW1tFbHQgKDEsNiw2KTtFbHQgKDIsNiw2KV1dXV07O1xuXG4gIGxldCBkdW1wX3RyaXBsZSAoYSxiLGMpID0gICAoXCIoXCJeKHN0cmluZ19vZl9pbnQgYSleXCIsXCJeKHN0cmluZ19vZl9pbnQgYileXCIsXCJeKHN0cmluZ19vZl9pbnQgYyleXCIpXCIpXG5cbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbFxuICBsZXQgbDEgPSBzb3J0IGNvbXBhcmVfZnN0X3RyaXBsZSBsXG4gIGxldCBfID0gZHVtcF9zdXBlcl9saXN0IGR1bXBfdHJpcGxlIGwxXG4gIGxldCBsMiA9IHNtYXNoIChjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlX2ZzdF90cmlwbGUpIGwxXG4gIGxldCBfID0gZHVtcF9zdXBlcl9saXN0IGR1bXBfdHJpcGxlIGwyICopXG4oKlxubGV0IG5vcm1hbF9mb3JtIHJvb3QgY29tcGFyZSBmID0gXG4gIGxldCBkZWFsX3dpdGhfZWx0IGVsdCA9IFxuICAgIGxldCBpbmZvID0gZiB4IGluIFxuICAgIGxldCBub2RlID0gKGluZm8ubGFiZWwsaW5mby5kZXB0aCxMaXN0Lmxlbmd0aCBpbmZvLnByZWRfMSxMaXN0Lmxlbmd0aCBpbmZvLmNvbmZsaWN0XzEpIGluIFxuICAgIG5vZGUsaW5mby5wcmVkXzEsaW5mby5jb25mbGljdF8xIFxuICBpbiBcblxuICBcbiAgbGV0IHJlYyBhdXggY3VycmVudF9sYXllciBuZXh0X2xheWVyIGFjY3UgPSBcbiAgICBtYXRjaCBcbiAgICAgIGN1cnJlbnRfbGF5ZXIgXG4gICAgd2l0aCBcbiAgICB8IExpc3QgbCAgLT4gXG5cbiAgICB8IFN1cGVyX2xpc3QgbCAtPiBcbiAgICAgICAgbGV0IGV4dGVuZGVkX2xpc3QgPSBMaXN0LnJldl9tYXAgZGVhbF93aXRoX2VsdCBsIGluIFxuICAgICAgICBsZXQgc29ydGVkX2xpc3QgPSBMaXN0LnNvcnQgY29tcGFyZV9mc3RfdHJpcGxlIGV4dGVuZGVkX2xpc3QgaW4gXG4gICAgICAgIGxldCBzbWFzaF9saXN0ID0gc21hc2ggY29tcGFyZV9mc3RfdHJpcGxlIGV4dGVuZGVkX2xpc3QgaW4gXG4gICAgICAgIGxldCBpbmZvX29mIHggPSBcbiAgICAgICAgICBsZXQgaW5mbyA9IGYgeCBpbiBcbiAgICAgICAgICAoaW5mby5sYWJlbCxpbmZvLmRlcHRoLExpc3QubGVuZ3RoIGluZm8ucHJlZF8xLExpc3QubGVuZ3RoIGluZm8uY29uZmxpY3RfMSlcbiAgICAgICAgaW4gXG4gICAgICAgIFxuICAgICAgICAgIFxuICAgICAgZW5kXG4gICAgfCBIdWIgbCAtPiBcbiAgICAgIGJlZ2luIFxuICAgICAgZW5kIFxuICAgICAgICBcbiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG4oKiBIZWxwZXIgZnVuY3Rpb25zIGZvciByZXN1bHQgKilcbmxldCBlcnJvcl9tc2cgPyhzZXZlcml0eSA9IExvZ3MuRXJyb3IpID9yYW5nZSB0ZXh0IDogUmVzdWx0X3V0aWwubWVzc2FnZSA9XG4gIHsgUmVzdWx0X3V0aWwuc2V2ZXJpdHk7IFJlc3VsdF91dGlsLnRleHQ7IFJlc3VsdF91dGlsLnJhbmdlIH1cblxubGV0IGVycl9yZXN1bHRfb2Zfc3RyaW5nID9zZXZlcml0eSA/cmFuZ2UgP3Jlc3VsdF9jb2RlIChtZXNzYWdlIDogc3RyaW5nKSA6XG4gICAgJ29rIEFwaS5yZXN1bHQgPVxuICBSZXN1bHRfdXRpbC5lcnJvciA/c3RhdHVzOnJlc3VsdF9jb2RlIFsgZXJyb3JfbXNnID9zZXZlcml0eSA/cmFuZ2UgbWVzc2FnZSBdXG5cbmxldCBlcnJfcmVzdWx0X29mX21zZ3MgP3Jlc3VsdF9jb2RlIG1lc3NhZ2VzIDogJ29rIEFwaS5yZXN1bHQgPVxuICBSZXN1bHRfdXRpbC5lcnJvciA/c3RhdHVzOnJlc3VsdF9jb2RlIG1lc3NhZ2VzXG5cbmxldCBlcnJfcmVzdWx0X29mX21zZyA/cmVzdWx0X2NvZGUgbWVzc2FnZSA6ICdvayBBcGkucmVzdWx0ID1cbiAgZXJyX3Jlc3VsdF9vZl9tc2dzID9yZXN1bHRfY29kZSBbIG1lc3NhZ2UgXVxuXG5sZXQgZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gP3NldmVyaXR5ID9yZXN1bHRfY29kZSAoZSA6IGV4bikgOiAnb2sgQXBpLnJlc3VsdCA9XG4gIGxldCBtZXNzYWdlID1cbiAgICB0cnkgUHJpbnRleGMudG9fc3RyaW5nIGUgd2l0aCBfIC0+IFwidW5zcGVjaWZpZWQgZXhjZXB0aW9uIHRocm93blwiXG4gIGluXG4gIGVycl9yZXN1bHRfb2Zfc3RyaW5nID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgbWVzc2FnZVxuXG5sZXQgbWVzc2FnZV9vZl9jYXVnaHRfZXhjZXB0aW9uID9zZXZlcml0eSBjYXVnaHRfZXhjZXB0aW9uID1cbiAgZXJyb3JfbXNnID9zZXZlcml0eVxuICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF9jYXVnaHQgY2F1Z2h0X2V4Y2VwdGlvbilcblxubGV0IG1lc3NhZ2Vfb2ZfdW5jYXVnaHRfZXhjZXB0aW9uID9zZXZlcml0eSB1bmNhdWdodF9leGNlcHRpb24gPVxuICBlcnJvcl9tc2cgP3NldmVyaXR5XG4gICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX3VuY2F1Z2h0XG4gICAgICAgdW5jYXVnaHRfZXhjZXB0aW9uKVxuXG5sZXQgbWVzc2FnZXNfb2ZfZXhjZXB0aW9ucyA/KHNldmVyaXR5IDogTG9ncy5sZXZlbCBvcHRpb24pXG4gICAgKGV4Y3MgOiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0KSA6XG4gICAgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0ID1cbiAgbGV0IHVuY2F1Z2h0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIGV4Y3NcbiAgaW5cbiAgbGV0IGNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXhjc1xuICBpblxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIHggbCAtPiBtZXNzYWdlX29mX2NhdWdodF9leGNlcHRpb24gP3NldmVyaXR5IHggOjogbClcbiAgICBjYXVnaHRcbiAgICAoTGlzdC5tYXAgKG1lc3NhZ2Vfb2ZfdW5jYXVnaHRfZXhjZXB0aW9uID9zZXZlcml0eSkgdW5jYXVnaHQpXG5cbmxldCBlcnJfcmVzdWx0X29mX2V4Y2VwdGlvbnMgPyhzZXZlcml0eSA6IExvZ3MubGV2ZWwgb3B0aW9uKVxuICAgID8ocmVzdWx0X2NvZGUgOiBSZXN1bHRfdXRpbC5zdGF0dXMgb3B0aW9uKVxuICAgIChleGNzIDogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCkgOlxuICAgICdhIEFwaS5yZXN1bHQgPVxuICBlcnJfcmVzdWx0X29mX21zZ3MgP3Jlc3VsdF9jb2RlIChtZXNzYWdlc19vZl9leGNlcHRpb25zID9zZXZlcml0eSBleGNzKVxuXG5sZXQgcmVzdWx0X2JpbmRfd2l0aF9sd3QgOlxuICAgIG9rOignb2sgLT4gJ2Ffb2sgQXBpLmx3dF9yZXN1bHQpIC0+ICdvayBBcGkucmVzdWx0IC0+ICdhX29rIEFwaS5sd3RfcmVzdWx0ID1cbiBmdW4gfihvayA6ICdvayAtPiAnYV9vayBBcGkubHd0X3Jlc3VsdCkgeyBSZXN1bHRfdXRpbC52YWx1ZTsgc3RhdHVzIH0gLT5cbiAgbWF0Y2ggdmFsdWUgd2l0aFxuICB8IFJlc3VsdC5PayBkYXRhIC0+IG9rIGRhdGFcbiAgfCBSZXN1bHQuRXJyb3IgZSAtPiBMd3QucmV0dXJuIHsgUmVzdWx0X3V0aWwudmFsdWUgPSBSZXN1bHQuRXJyb3IgZTsgc3RhdHVzIH1cblxubGV0IHJlYyByZXN1bHRfZm9sZF93aXRoX2x3dCA6XG4gICAgZjooJ29rIEFwaS5yZXN1bHQgLT4gJ3ZhbHVlIC0+ICdvayBBcGkubHd0X3Jlc3VsdCkgLT5cbiAgICBpZDonb2sgQXBpLnJlc3VsdCAtPlxuICAgICd2YWx1ZSBsaXN0IC0+XG4gICAgJ2Ffb2sgQXBpLmx3dF9yZXN1bHQgPVxuIGZ1biB+KGYgOiAnb2sgQXBpLnJlc3VsdCAtPiAndmFsdWUgLT4gJ29rIEFwaS5sd3RfcmVzdWx0KVxuICAgICB+KGlkIDogJ29rIEFwaS5yZXN1bHQpIChsIDogJ3ZhbHVlIGxpc3QpIC0+XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IEx3dC5yZXR1cm4gaWRcbiAgfCBoIDo6IHQgLT4gZiBpZCBoID4+PSBmdW4gcmVzdWx0IC0+IHJlc3VsdF9mb2xkX3dpdGhfbHd0IH5mIH5pZDpyZXN1bHQgdFxuXG5sZXQgcmVzdWx0X2JpbmRfbHd0IDpcbiAgICBvazooJ29rIC0+ICdhX29rIEFwaS5sd3RfcmVzdWx0KSAtPlxuICAgICdvayBBcGkubHd0X3Jlc3VsdCAtPlxuICAgICdhX29rIEFwaS5sd3RfcmVzdWx0ID1cbiBmdW4gfihvayA6ICdvayAtPiAnYV9vayBBcGkubHd0X3Jlc3VsdCkgbHd0X3Jlc3VsdCAtPlxuICBsd3RfcmVzdWx0ID4+PSByZXN1bHRfYmluZF93aXRoX2x3dCB+b2tcblxubGV0IHJlYyByZXN1bHRfY29tYmluZSA6IHVuaXQgQXBpLnJlc3VsdCBsaXN0IC0+IHVuaXQgQXBpLnJlc3VsdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gUmVzdWx0X3V0aWwub2sgKClcbiAgfCBsIDo6IHQgLT5cbiAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICB+b2s6KGZ1biAoKSAtPiByZXN1bHRfY29tYmluZSB0KVxuICAgICAgfmVycm9yOihmdW4gZGF0YV8xIC0+XG4gICAgICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBsKVxuICAgICAgICAgIH5lcnJvcjooZnVuIGRhdGFfciAtPlxuICAgICAgICAgICAgUmVzdWx0X3V0aWwuZXJyb3IgfnN0YXR1czpsLlJlc3VsdF91dGlsLnN0YXR1cyAoZGF0YV8xIEAgZGF0YV9yKSlcbiAgICAgICAgICAocmVzdWx0X2NvbWJpbmUgdCkpXG4gICAgICBsXG5cbmxldCBtZDVzdW0gdGV4dCA9IERpZ2VzdC50b19oZXggKERpZ2VzdC5zdHJpbmcgdGV4dClcbiIsIigqIEF1dG8tZ2VuZXJhdGVkIGZyb20gXCJhcGlfdHlwZXMuYXRkXCIgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTI3LTMyLTMzLTM1LTM5XCJdXG5cbnR5cGUgc25hcHNob3RfaWQgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZFxuXG50eXBlIHNuYXBzaG90ID0gRGF0YS5zbmFwc2hvdFxuXG50eXBlIHNuYXBzaG90X2RldGFpbCA9IEFwaV90eXBlc190LnNuYXBzaG90X2RldGFpbFxuXG50eXBlIHNuYXBzaG90X2NhdGFsb2cgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nXG5cbnR5cGUgc2l0ZV9ncmFwaCA9IFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudFxuXG50eXBlIHNpbXVsYXRpb25fc3RhdGUgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3N0YXRlXG5cbnR5cGUgc2ltdWxhdGlvbl9zZWVkID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkXG5cbnR5cGUgc2ltdWxhdGlvbl9wcm9ncmVzcyA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3MgPSB7XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZTogZmxvYXQ7XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50OiBpbnQ7XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZTogaW50IG9wdGlvbjtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50czogaW50IG9wdGlvbjtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nOiBib29sXG59XG5cbnR5cGUgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciA9IHtcbiAgc2ltdWxhdGlvbl9wbG90X3BlcmlvZCAoKmF0ZCBwbG90X3BlcmlvZCAqKTogZmxvYXQ7XG4gIHNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uICgqYXRkIHBhdXNlX2NvbmRpdGlvbiAqKTogc3RyaW5nO1xuICBzaW11bGF0aW9uX3NlZWQgKCphdGQgc2VlZCAqKTogc2ltdWxhdGlvbl9zZWVkIG9wdGlvbjtcbiAgc2ltdWxhdGlvbl9zdG9yZV90cmFjZSAoKmF0ZCBzdG9yZV90cmFjZSAqKTogYm9vbFxufVxuXG50eXBlICgncGxvdCwgJ2RpbnMsICdmaWxlX2xpbmVzLCAnc25hcHNob3RzLCAnaW5wdXRzLCAnbG9nX21lc3NhZ2VzKSBzaW11bGF0aW9uX291dHB1dCA9XG4gICgncGxvdCwgJ2RpbnMsICdmaWxlX2xpbmVzLCAnc25hcHNob3RzLCAnaW5wdXRzLCAnbG9nX21lc3NhZ2VzKSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dCA9IHtcbiAgc2ltdWxhdGlvbl9vdXRwdXRfcGxvdDogJ3Bsb3Q7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2RpbnM6ICdkaW5zO1xuICBzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzOiAnZmlsZV9saW5lcztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzOiAnc25hcHNob3RzO1xuICBzaW11bGF0aW9uX291dHB1dF9pbnB1dHM6ICdpbnB1dHM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlczogJ2xvZ19tZXNzYWdlc1xufVxuXG50eXBlIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cblxudHlwZSBzaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuXG50eXBlIHNpbXVsYXRpb25faW5mbyA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyA9IHtcbiAgc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzOiBzaW11bGF0aW9uX3Byb2dyZXNzO1xuICBzaW11bGF0aW9uX2luZm9fb3V0cHV0OiBzaW11bGF0aW9uX2luZm9fb3V0cHV0XG59XG5cbnR5cGUgc2ltdWxhdGlvbl9pZCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faWRcblxudHlwZSBzaW11bGF0aW9uX2FydGlmYWN0ID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9hcnRpZmFjdCA9IHtcbiAgc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQ6IHNpbXVsYXRpb25fc2VlZFxufVxuXG50eXBlIHNoYXJpbmdfbGV2ZWwgPSBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWxcblxudHlwZSAoJ29rLCAnZXJyb3IpIHJlc3VsdCA9ICgnb2ssICdlcnJvcikgUmVzdWx0X3V0aWwudFxuXG50eXBlIHBhcnNpbmdfY29tcGlsID0gQXN0LnBhcnNpbmdfY29tcGlsXG5cbnR5cGUgbmJyID0gTmJyLnRcblxudHlwZSBwcm9qZWN0X3BhcnNlID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJzZSA9IHtcbiAgcGF0dGVybl9zaGFyaW5nOiBzaGFyaW5nX2xldmVsO1xuICBhc3Q6IHBhcnNpbmdfY29tcGlsO1xuICB2YXJpYWJsZV9vdmVyd3JpdHRlbjogKHN0cmluZyAqIG5icikgbGlzdFxufVxuXG50eXBlIHByb2plY3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJhbWV0ZXIgPSB7XG4gIHByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQ6IHN0cmluZ1xufVxuXG50eXBlIHBsb3RfbGltaXQgPSBBcGlfdHlwZXNfdC5wbG90X2xpbWl0ID0ge1xuICBwbG90X2xpbWl0X29mZnNldDogaW50IG9wdGlvbjtcbiAgcGxvdF9saW1pdF9wb2ludHM6IGludCBvcHRpb25cbn1cblxudHlwZSBwbG90X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnBsb3RfcGFyYW1ldGVyXG5cbnR5cGUgcGxvdCA9IERhdGEucGxvdFxuXG50eXBlIG1lc3NhZ2UgPSBSZXN1bHRfdXRpbC5tZXNzYWdlXG5cbnR5cGUgbG9nX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZVxuXG50eXBlIGthcHBhX2NvZGUgPSBBcGlfdHlwZXNfdC5rYXBwYV9jb2RlXG5cbnR5cGUgZmlsZV9saW5lID0gRGF0YS5maWxlX2xpbmUgPSB7XG4gIGZpbGVfbGluZV9uYW1lICgqYXRkIG5hbWUgKik6IHN0cmluZyBvcHRpb247XG4gIGZpbGVfbGluZV90ZXh0ICgqYXRkIHRleHQgKik6IHN0cmluZ1xufVxuXG50eXBlIGZpbGVfbGluZV9kZXRhaWwgPSBBcGlfdHlwZXNfdC5maWxlX2xpbmVfZGV0YWlsXG5cbnR5cGUgZmlsZV9saW5lX2NhdGFsb2cgPSBBcGlfdHlwZXNfdC5maWxlX2xpbmVfY2F0YWxvZ1xuXG50eXBlIGVudmlyb25tZW50X2luZm8gPSBBcGlfdHlwZXNfdC5lbnZpcm9ubWVudF9pbmZvID0ge1xuICBlbnZpcm9ubWVudF9wcm9qZWN0cyAoKmF0ZCBwcm9qZWN0cyAqKTogaW50O1xuICBlbnZpcm9ubWVudF9idWlsZCAoKmF0ZCBidWlsZCAqKTogc3RyaW5nXG59XG5cbnR5cGUgZGluX2lkID0gQXBpX3R5cGVzX3QuZGluX2lkXG5cbnR5cGUgZGluX2NhdGFsb2cgPSBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZ1xuXG50eXBlIGRpbiA9IERhdGEuZGluXG5cbmxldCB3cml0ZV9zbmFwc2hvdF9pZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfaWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IHNuYXBzaG90X2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NuYXBzaG90ID0gKFxuICBEYXRhLndyaXRlX3NuYXBzaG90XG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3QgPSAoXG4gIERhdGEucmVhZF9zbmFwc2hvdFxuKVxubGV0IHNuYXBzaG90X29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NuYXBzaG90X2RldGFpbCA9IChcbiAgd3JpdGVfc25hcHNob3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2RldGFpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2RldGFpbCA9IChcbiAgcmVhZF9zbmFwc2hvdFxuKVxubGV0IHNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICApXG4pXG5sZXQgc3RyaW5nX29mX19zbmFwc2hvdF9pZF9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zbmFwc2hvdF9pZF9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3NuYXBzaG90X2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfc25hcHNob3RfaWRcbiAgKVxuKVxubGV0IF9zbmFwc2hvdF9pZF9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fc25hcHNob3RfaWRfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NuYXBzaG90X2NhdGFsb2cgPSAoXG4gIHdyaXRlX19zbmFwc2hvdF9pZF9saXN0XG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2NhdGFsb2cgPSAoXG4gIHJlYWRfX3NuYXBzaG90X2lkX2xpc3RcbilcbmxldCBzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2l0ZV9ncmFwaCA9IChcbiAgVXNlcl9ncmFwaC53cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50XG4pXG5sZXQgc3RyaW5nX29mX3NpdGVfZ3JhcGggPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2l0ZV9ncmFwaCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpdGVfZ3JhcGggPSAoXG4gIFVzZXJfZ3JhcGgucmVhZF9jb25uZWN0ZWRfY29tcG9uZW50XG4pXG5sZXQgc2l0ZV9ncmFwaF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2l0ZV9ncmFwaCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fc3RhdGUgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBSdW5uaW5nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlJ1bm5pbmdcXFwiXCJcbiAgICAgIHwgYFBhdXNlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQYXVzZWRcXFwiXCJcbiAgICAgIHwgYFN0b3BwZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU3RvcHBlZFxcXCJcIlxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3N0YXRlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fc3RhdGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3N0YXRlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJSdW5uaW5nXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBSdW5uaW5nXG4gICAgICAgICAgICB8IFwiUGF1c2VkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQYXVzZWRcbiAgICAgICAgICAgIHwgXCJTdG9wcGVkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTdG9wcGVkXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJSdW5uaW5nXCIgLT5cbiAgICAgICAgICAgICAgYFJ1bm5pbmdcbiAgICAgICAgICAgIHwgXCJQYXVzZWRcIiAtPlxuICAgICAgICAgICAgICBgUGF1c2VkXG4gICAgICAgICAgICB8IFwiU3RvcHBlZFwiIC0+XG4gICAgICAgICAgICAgIGBTdG9wcGVkXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX3N0YXRlX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3N0YXRlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9zZWVkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zZWVkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fc2VlZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fc2VlZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4pXG5sZXQgc2ltdWxhdGlvbl9zZWVkX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3NlZWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9faW50X251bGxhYmxlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbnVsbGFibGUgKFxuICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICApXG4pXG5sZXQgc3RyaW5nX29mX19pbnRfbnVsbGFibGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX2ludF9udWxsYWJsZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19pbnRfbnVsbGFibGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIChpZiBZb2pzb24uU2FmZS5yZWFkX251bGxfaWZfcG9zc2libGUgcCBsYiB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKChcbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICkgcCBsYikgOiBfIG9wdGlvbilcbilcbmxldCBfaW50X251bGxhYmxlX29mX3N0cmluZyBzID1cbiAgcmVhZF9faW50X251bGxhYmxlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9wcm9ncmVzcyA6IF8gLT4gc2ltdWxhdGlvbl9wcm9ncmVzcyAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX3Byb2dyZXNzKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc190aW1lXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdGRfZmxvYXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2VcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50XFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQ7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmdcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2Jvb2xcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3Byb2dyZXNzID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3Mgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdrJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAzNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAzNiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzUpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9ib29sXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdrJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzNiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNSkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9ib29sXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc190aW1lXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZVwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmdcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX3Byb2dyZXNzKVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fcHJvZ3Jlc3Nfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3MgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbnVsbGFibGUgKFxuICAgIHdyaXRlX3NpbXVsYXRpb25fc2VlZFxuICApXG4pXG5sZXQgc3RyaW5nX29mX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIChpZiBZb2pzb24uU2FmZS5yZWFkX251bGxfaWZfcG9zc2libGUgcCBsYiB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKChcbiAgICAgIHJlYWRfc2ltdWxhdGlvbl9zZWVkXG4gICAgKSBwIGxiKSA6IF8gb3B0aW9uKVxuKVxubGV0IF9zaW11bGF0aW9uX3NlZWRfbnVsbGFibGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciA6IF8gLT4gc2ltdWxhdGlvbl9wYXJhbWV0ZXIgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJwbG90X3BlcmlvZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RkX2Zsb2F0XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Bsb3RfcGVyaW9kO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJwYXVzZV9jb25kaXRpb25cXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb247XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNlZWRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fc2VlZDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic3RvcmVfdHJhY2VcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2Jvb2xcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fc3RvcmVfdHJhY2U7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9zZWVkID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAxMSAtPiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHwgJ3MnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAxNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fc2VlZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMTEgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3MnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAxNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fc2VlZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9ib29sXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Bsb3RfcGVyaW9kID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Bsb3RfcGVyaW9kXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvblwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fc2VlZCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9zZWVkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3NlZWRcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3N0b3JlX3RyYWNlID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3N0b3JlX3RyYWNlXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgOiBfIC0+ICgncGxvdCwgJ2RpbnMsICdmaWxlX2xpbmVzLCAnc25hcHNob3RzLCAnaW5wdXRzLCAnbG9nX21lc3NhZ2VzKSBzaW11bGF0aW9uX291dHB1dCAtPiBfID0gKFxuICBmdW4gb2IgKHggOiAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9wbG90XFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fcGxvdFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfcGxvdDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2RpbnNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19maWxlX2xpbmVzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19zbmFwc2hvdHNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW5wdXRzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9pbnB1dHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2xvZ19tZXNzYWdlc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fb3V0cHV0IHdyaXRlX19wbG90IHdyaXRlX19kaW5zIHdyaXRlX19maWxlX2xpbmVzIHdyaXRlX19zbmFwc2hvdHMgd3JpdGVfX2lucHV0cyB3cml0ZV9fbG9nX21lc3NhZ2VzID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fb3V0cHV0IHdyaXRlX19wbG90IHdyaXRlX19kaW5zIHdyaXRlX19maWxlX2xpbmVzIHdyaXRlX19zbmFwc2hvdHMgd3JpdGVfX2lucHV0cyB3cml0ZV9fbG9nX21lc3NhZ2VzIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9vdXRwdXQgcmVhZF9fcGxvdCByZWFkX19kaW5zIHJlYWRfX2ZpbGVfbGluZXMgcmVhZF9fc25hcHNob3RzIHJlYWRfX2lucHV0cyByZWFkX19sb2dfbWVzc2FnZXMgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNyAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI4IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3Bsb3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19kaW5zXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fZmlsZV9saW5lc1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc25hcHNob3RzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnB1dHNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2xvZ19tZXNzYWdlc1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI4IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fcGxvdFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19kaW5zXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ZpbGVfbGluZXNcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19zbmFwc2hvdHNcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnB1dHNcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19sb2dfbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9kaW5zID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6ICgncGxvdCwgJ2RpbnMsICdmaWxlX2xpbmVzLCAnc25hcHNob3RzLCAnaW5wdXRzLCAnbG9nX21lc3NhZ2VzKSBzaW11bGF0aW9uX291dHB1dClcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX291dHB1dF9vZl9zdHJpbmcgcmVhZF9fcGxvdCByZWFkX19kaW5zIHJlYWRfX2ZpbGVfbGluZXMgcmVhZF9fc25hcHNob3RzIHJlYWRfX2lucHV0cyByZWFkX19sb2dfbWVzc2FnZXMgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9vdXRwdXQgcmVhZF9fcGxvdCByZWFkX19kaW5zIHJlYWRfX2ZpbGVfbGluZXMgcmVhZF9fc25hcHNob3RzIHJlYWRfX2lucHV0cyByZWFkX19sb2dfbWVzc2FnZXMgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19vdXRwdXRfOTM0MGFkNiA6IF8gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIHNpbXVsYXRpb25fb3V0cHV0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IChfLCBfLCBfLCBfLCBfLCBfKSBzaW11bGF0aW9uX291dHB1dCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfcGxvdDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9kaW5zO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfbnVsbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX19vdXRwdXRfOTM0MGFkNiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fb3V0cHV0XzkzNDBhZDYgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fb3V0cHV0XzkzNDBhZDYgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNyAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI4IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udWxsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVsbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogKF8sIF8sIF8sIF8sIF8sIF8pIHNpbXVsYXRpb25fb3V0cHV0KVxuICAgICAgKVxuKVxubGV0IF9vdXRwdXRfOTM0MGFkNl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX291dHB1dF85MzQwYWQ2IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IChcbiAgd3JpdGVfX291dHB1dF85MzQwYWQ2XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvX291dHB1dCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPSAoXG4gIHJlYWRfX291dHB1dF85MzQwYWQ2XG4pXG5sZXQgc2ltdWxhdGlvbl9pbmZvX291dHB1dF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW5mbyA6IF8gLT4gc2ltdWxhdGlvbl9pbmZvIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25faW5mbykgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2ltdWxhdGlvbl9wcm9ncmVzc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX2luZm9fb3V0cHV0XFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2luZm9fb3V0cHV0O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2luZm8gPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzc1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9pbmZvX291dHB1dFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25faW5mbylcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW5mbyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBzaW11bGF0aW9uX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCA6IF8gLT4gc2ltdWxhdGlvbl9hcnRpZmFjdCAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX2FydGlmYWN0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NpbXVsYXRpb25fc2VlZFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgaWYgbGVuID0gMzUgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAtMVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fc2VlZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBpZiBsZW4gPSAzNSAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9zZWVkXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9hcnRpZmFjdClcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2hhcmluZ19sZXZlbCA9IChcbiAgUGF0dGVybi53cml0ZV9zaGFyaW5nX2xldmVsXG4pXG5sZXQgc3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2hhcmluZ19sZXZlbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NoYXJpbmdfbGV2ZWwgPSAoXG4gIFBhdHRlcm4ucmVhZF9zaGFyaW5nX2xldmVsXG4pXG5sZXQgc2hhcmluZ19sZXZlbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2hhcmluZ19sZXZlbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID0gKFxuICBSZXN1bHRfdXRpbC53cml0ZV90IHdyaXRlX19vayB3cml0ZV9fZXJyb3JcbilcbmxldCBzdHJpbmdfb2ZfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3Igb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgPSAoXG4gIFJlc3VsdF91dGlsLnJlYWRfdCByZWFkX19vayByZWFkX19lcnJvclxuKVxubGV0IHJlc3VsdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGFyc2luZ19jb21waWwgPSAoXG4gIEFzdC53cml0ZV9wYXJzaW5nX2NvbXBpbFxuKVxubGV0IHN0cmluZ19vZl9wYXJzaW5nX2NvbXBpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wYXJzaW5nX2NvbXBpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3BhcnNpbmdfY29tcGlsID0gKFxuICBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbFxuKVxubGV0IHBhcnNpbmdfY29tcGlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9wYXJzaW5nX2NvbXBpbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX25iciA9IChcbiAgTmJyLndyaXRlX3RcbilcbmxldCBzdHJpbmdfb2ZfbmJyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX25iciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX25iciA9IChcbiAgTmJyLnJlYWRfdFxuKVxubGV0IG5icl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbmJyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3N0cmluZ19uYnJfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIGZ1biBvYiB4IC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgKGxldCB4LCBfID0geCBpblxuICAgICAgKFxuICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICkgb2IgeFxuICAgICAgKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAobGV0IF8sIHggPSB4IGluXG4gICAgICAoXG4gICAgICAgIHdyaXRlX25iclxuICAgICAgKSBvYiB4XG4gICAgICApO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJztcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX25icl9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zdHJpbmdfbmJyX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc3RyaW5nX25icl9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBmdW4gcCBsYiAtPlxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IHN0ZF90dXBsZSA9IFlvanNvbi5TYWZlLnN0YXJ0X2FueV90dXBsZSBwIGxiIGluXG4gICAgICBsZXQgbGVuID0gcmVmIDAgaW5cbiAgICAgIGxldCBlbmRfb2ZfdHVwbGUgPSByZWYgZmFsc2UgaW5cbiAgICAgICh0cnlcbiAgICAgICAgbGV0IHgwID1cbiAgICAgICAgICBsZXQgeCA9XG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbmNyIGxlbjtcbiAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgIHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHgxID1cbiAgICAgICAgICBsZXQgeCA9XG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHJlYWRfbmJyXG4gICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICBpblxuICAgICAgICAgIGluY3IgbGVuO1xuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfdHVwbGVfc2VwMiBwIHN0ZF90dXBsZSBsYjtcbiAgICAgICAgICB3aXRoIFlvanNvbi5FbmRfb2ZfdHVwbGUgLT4gZW5kX29mX3R1cGxlIDo9IHRydWUpO1xuICAgICAgICAgIHhcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90ICFlbmRfb2ZfdHVwbGUgdGhlbiAoXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfdHVwbGVfc2VwMiBwIHN0ZF90dXBsZSBsYjtcbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICB3aXRoIFlvanNvbi5FbmRfb2ZfdHVwbGUgLT4gKClcbiAgICAgICAgKTtcbiAgICAgICAgKHgwLCB4MSlcbiAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ190dXBsZV9maWVsZHMgcCAhbGVuIFsgMDsgMSBdKTtcbiAgKVxuKVxubGV0IF9zdHJpbmdfbmJyX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbmJyX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcnNlIDogXyAtPiBwcm9qZWN0X3BhcnNlIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHByb2plY3RfcGFyc2UpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJwYXR0ZXJuX3NoYXJpbmdcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NoYXJpbmdfbGV2ZWxcbiAgICApXG4gICAgICBvYiB4LnBhdHRlcm5fc2hhcmluZztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiYXN0XFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9wYXJzaW5nX2NvbXBpbFxuICAgIClcbiAgICAgIG9iIHguYXN0O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJ2YXJpYWJsZV9vdmVyd3JpdHRlblxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3N0cmluZ19uYnJfbGlzdFxuICAgIClcbiAgICAgIG9iIHgudmFyaWFibGVfb3ZlcndyaXR0ZW47XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfcHJvamVjdF9wYXJzZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wcm9qZWN0X3BhcnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJzZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2FzdCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4gPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDMgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyMCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd3JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3BhdHRlcm5fc2hhcmluZyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2hhcmluZ19sZXZlbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfYXN0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wYXJzaW5nX2NvbXBpbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4gOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbmJyX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAzIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAxNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NoYXJpbmdfbGV2ZWxcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9hc3QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3BhcnNpbmdfY29tcGlsXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4gOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbmJyX2xpc3RcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdHRlcm5fc2hhcmluZyA9IChtYXRjaCAhZmllbGRfcGF0dGVybl9zaGFyaW5nIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJwYXR0ZXJuX3NoYXJpbmdcIik7XG4gICAgICAgICAgICBhc3QgPSAobWF0Y2ggIWZpZWxkX2FzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiYXN0XCIpO1xuICAgICAgICAgICAgdmFyaWFibGVfb3ZlcndyaXR0ZW4gPSAobWF0Y2ggIWZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJ2YXJpYWJsZV9vdmVyd3JpdHRlblwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHByb2plY3RfcGFyc2UpXG4gICAgICApXG4pXG5sZXQgcHJvamVjdF9wYXJzZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJzZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIDogXyAtPiBwcm9qZWN0X3BhcmFtZXRlciAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBwcm9qZWN0X3BhcmFtZXRlcikgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInByb2plY3RfaWRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgIClcbiAgICAgIG9iIHgucHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Byb2plY3RfcGFyYW1ldGVyID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIGlmIGxlbiA9IDEwICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIC0xXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDEwICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkID0gKG1hdGNoICFmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJwcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcHJvamVjdF9wYXJhbWV0ZXIpXG4gICAgICApXG4pXG5sZXQgcHJvamVjdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Byb2plY3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdF9saW1pdCA6IF8gLT4gcGxvdF9saW1pdCAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBwbG90X2xpbWl0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwib2Zmc2V0XFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5wbG90X2xpbWl0X29mZnNldDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwibmJfcG9pbnRzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5wbG90X2xpbWl0X3BvaW50cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9wbG90X2xpbWl0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Bsb3RfbGltaXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X2xpbWl0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9wbG90X2xpbWl0X3BvaW50cyA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgNiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCA5IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgNiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgOSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X29mZnNldCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbG90X2xpbWl0X29mZnNldCA9IChtYXRjaCAhZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBsb3RfbGltaXRfb2Zmc2V0XCIpO1xuICAgICAgICAgICAgcGxvdF9saW1pdF9wb2ludHMgPSAobWF0Y2ggIWZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJwbG90X2xpbWl0X3BvaW50c1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHBsb3RfbGltaXQpXG4gICAgICApXG4pXG5sZXQgcGxvdF9saW1pdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdF9saW1pdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3RfcGFyYW1ldGVyID0gKFxuICB3cml0ZV9wbG90X2xpbWl0XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Bsb3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdF9wYXJhbWV0ZXIgPSAoXG4gIHJlYWRfcGxvdF9saW1pdFxuKVxubGV0IHBsb3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3QgPSAoXG4gIERhdGEud3JpdGVfcGxvdFxuKVxubGV0IHN0cmluZ19vZl9wbG90ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Bsb3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90ID0gKFxuICBEYXRhLnJlYWRfcGxvdFxuKVxubGV0IHBsb3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9tZXNzYWdlID0gKFxuICBSZXN1bHRfdXRpbC53cml0ZV9tZXNzYWdlXG4pXG5sZXQgc3RyaW5nX29mX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbWVzc2FnZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX21lc3NhZ2UgPSAoXG4gIFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZVxuKVxubGV0IG1lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX21lc3NhZ2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9sb2dfbWVzc2FnZSA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX2xvZ19tZXNzYWdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2xvZ19tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbG9nX21lc3NhZ2UgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IGxvZ19tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9sb2dfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2thcHBhX2NvZGUgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9rYXBwYV9jb2RlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2thcHBhX2NvZGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9rYXBwYV9jb2RlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBrYXBwYV9jb2RlX29mX3N0cmluZyBzID1cbiAgcmVhZF9rYXBwYV9jb2RlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3N0cmluZ19udWxsYWJsZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX251bGxhYmxlIChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX251bGxhYmxlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zdHJpbmdfbnVsbGFibGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc3RyaW5nX251bGxhYmxlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAoaWYgWW9qc29uLlNhZmUucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lICgoXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICApIHAgbGIpIDogXyBvcHRpb24pXG4pXG5sZXQgX3N0cmluZ19udWxsYWJsZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19udWxsYWJsZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZSA6IF8gLT4gZmlsZV9saW5lIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IGZpbGVfbGluZSkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIm5hbWVcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19zdHJpbmdfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LmZpbGVfbGluZV9uYW1lO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJ0ZXh0XFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LmZpbGVfbGluZV90ZXh0O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfZmlsZV9saW5lX25hbWUgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2ZpbGVfbGluZV90ZXh0ID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBpZiBsZW4gPSA0IHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3Mgd2l0aFxuICAgICAgICAgICAgICB8ICduJyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8ICd0JyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgLTFcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV9uYW1lIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfdGV4dCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBpZiBsZW4gPSA0IHRoZW4gKFxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgfCAnbicgLT4gKFxuICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgJ3QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd4JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX25hbWUgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfdGV4dCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmlsZV9saW5lX25hbWUgPSAobWF0Y2ggIWZpZWxkX2ZpbGVfbGluZV9uYW1lIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJmaWxlX2xpbmVfbmFtZVwiKTtcbiAgICAgICAgICAgIGZpbGVfbGluZV90ZXh0ID0gKG1hdGNoICFmaWVsZF9maWxlX2xpbmVfdGV4dCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZmlsZV9saW5lX3RleHRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBmaWxlX2xpbmUpXG4gICAgICApXG4pXG5sZXQgZmlsZV9saW5lX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fZmlsZV9saW5lX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9maWxlX2xpbmVcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fZmlsZV9saW5lX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX2ZpbGVfbGluZV9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2ZpbGVfbGluZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2ZpbGVfbGluZVxuICApXG4pXG5sZXQgX2ZpbGVfbGluZV9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fZmlsZV9saW5lX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmVfZGV0YWlsID0gKFxuICB3cml0ZV9fZmlsZV9saW5lX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lX2RldGFpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lX2RldGFpbCA9IChcbiAgcmVhZF9fZmlsZV9saW5lX2xpc3RcbilcbmxldCBmaWxlX2xpbmVfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zdHJpbmdfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gIClcbilcbmxldCBfc3RyaW5nX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICB3cml0ZV9fc3RyaW5nX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lX2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfY2F0YWxvZyA9IChcbiAgcmVhZF9fc3RyaW5nX2xpc3RcbilcbmxldCBmaWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9lbnZpcm9ubWVudF9pbmZvIDogXyAtPiBlbnZpcm9ubWVudF9pbmZvIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IGVudmlyb25tZW50X2luZm8pIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJwcm9qZWN0c1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5lbnZpcm9ubWVudF9wcm9qZWN0cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiYnVpbGRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgIClcbiAgICAgIG9iIHguZW52aXJvbm1lbnRfYnVpbGQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfZW52aXJvbm1lbnRfaW5mbyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9lbnZpcm9ubWVudF9pbmZvIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZW52aXJvbm1lbnRfaW5mbyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCA4IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCA1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDggLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X2J1aWxkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbnZpcm9ubWVudF9wcm9qZWN0cyA9IChtYXRjaCAhZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImVudmlyb25tZW50X3Byb2plY3RzXCIpO1xuICAgICAgICAgICAgZW52aXJvbm1lbnRfYnVpbGQgPSAobWF0Y2ggIWZpZWxkX2Vudmlyb25tZW50X2J1aWxkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJlbnZpcm9ubWVudF9idWlsZFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IGVudmlyb25tZW50X2luZm8pXG4gICAgICApXG4pXG5sZXQgZW52aXJvbm1lbnRfaW5mb19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZW52aXJvbm1lbnRfaW5mbyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Rpbl9pZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5faWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5faWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IGRpbl9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2Rpbl9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfZGluX2lkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX2Rpbl9pZF9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19kaW5faWRfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19kaW5faWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgcmVhZF9kaW5faWRcbiAgKVxuKVxubGV0IF9kaW5faWRfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2Rpbl9pZF9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2NhdGFsb2cgPSAoXG4gIHdyaXRlX19kaW5faWRfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9kaW5fY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5fY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9jYXRhbG9nID0gKFxuICByZWFkX19kaW5faWRfbGlzdFxuKVxubGV0IGRpbl9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5fY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2RpbiA9IChcbiAgRGF0YS53cml0ZV9kaW5cbilcbmxldCBzdHJpbmdfb2ZfZGluID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2RpbiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2RpbiA9IChcbiAgRGF0YS5yZWFkX2RpblxuKVxubGV0IGRpbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIF8gaGFuZGxlID1cbiAgfCBOb3RoaW5nIDogdW5pdCBoYW5kbGVcbiAgfCBCaWdTdHJpbmcgOiBCaWdidWZmZXIuYmlnc3RyaW5nIGhhbmRsZVxuICB8IFN0cmluZyA6IHN0cmluZyBoYW5kbGVcbiAgfCBTdHJpbmdzIDogc3RyaW5nIGxpc3QgaGFuZGxlXG4gIHwgQ2F0YWxvZyA6IEtmaWxlcy5jYXRhbG9nX2l0ZW0gbGlzdCBoYW5kbGVcbiAgfCBJbmZvIDogKHN0cmluZyAqIGludCkgaGFuZGxlXG4gICgqICB8IEFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCBoYW5kbGUqKVxuICB8IEpTT04gOiBZb2pzb24uQmFzaWMudCBoYW5kbGVcbiAgfCBJbmZsdWVuY2VfbWFwXG4gICAgICA6IChQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbFxuICAgICAgICAqIGludFxuICAgICAgICAqIGludCBvcHRpb25cbiAgICAgICAgKiBpbnQgb3B0aW9uXG4gICAgICAgICogKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uXG4gICAgICAgICogUHVibGljX2RhdGEuaW5mbHVlbmNlX21hcClcbiAgICAgICAgaGFuZGxlXG4gICgqIENvbW1lbnRlZCBhcyB1bnVzZWQgYXQgdGhlIG1vbWVudC4gU2VlIHdhcm5pbmcgMzcgKilcbiAgKCogICB8IFNob3J0X2luZmx1ZW5jZV9ub2RlIDogKGludCwgaW50KSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb24gaGFuZGxlICopXG4gIHwgSW5mbHVlbmNlX25vZGVcbiAgICAgIDogKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uXG4gICAgICAgIGhhbmRsZVxuICB8IEluZmx1ZW5jZV9ub2Rlc1xuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBsaXN0KVxuICAgICAgICBoYW5kbGVcbiAgfCBSdWxlc19rYXNhIDogUHVibGljX2RhdGEucnVsZSBsaXN0IGhhbmRsZVxuICB8IEFnZW50c19rYXNhIDogUHVibGljX2RhdGEuZGVhZF9hZ2VudHMgaGFuZGxlXG4gIHwgVHJhbnNpdGlvbnNfa2FzYSA6IChQdWJsaWNfZGF0YS5ydWxlICogKHN0cmluZyAqIHN0cmluZykgbGlzdCkgbGlzdCBoYW5kbGVcbiAgfCBDb25zdHJhaW50c19rYXNhXG4gICAgICA6IChzdHJpbmcgKiBQdWJsaWNfZGF0YS5hZ2VudCBsaXN0IFB1YmxpY19kYXRhLmxlbW1hIGxpc3QpIGxpc3QgaGFuZGxlXG4gIHwgUG9seW1lcnNfa2FzYVxuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbFxuICAgICAgICAqIFB1YmxpY19kYXRhLnNjYylcbiAgICAgICAgaGFuZGxlXG4gIHwgRElOIDogRGF0YS5kaW4gaGFuZGxlXG4gIHwgUGxvdCA6IERhdGEucGxvdCBoYW5kbGVcbiAgfCBTbmFwc2hvdCA6IERhdGEuc25hcHNob3QgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9lZmZpY2llbmN5IDogQ291bnRlci5FZmZpY2llbmN5LnQgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvIGhhbmRsZVxuICB8IFNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9hcnRpZmFjdCA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnUgLT4gYm94XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIGJveCkgSGFzaHRibC50XG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHJlYWRfcmVzdWx0IGYgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgKFJlc3VsdF91dGlsLnJlYWRfdCBmIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZSkpXG4gICAgcCBsYlxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gcCBsYiBpZCAtPlxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIG1haWxib3ggaWQgd2l0aFxuICAgICAgICAgICB8IEIgKE5vdGhpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfbnVsbCBwIGxiKVxuICAgICAgICAgICB8IEIgKEJpZ1N0cmluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBvdXQgPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIChCYXNlNjQuZGVjb2RlID9hbHBoYWJldDpOb25lKSBvdXQpXG4gICAgICAgICAgIHwgQiAoU3RyaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiKVxuICAgICAgICAgICB8IEIgKFN0cmluZ3MsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKENhdGFsb2csIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZm8sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICAgICgqIHwgQiAoQXN0LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiKSopXG4gICAgICAgICAgIHwgQiAoSlNPTiwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIpXG4gICAgICAgICAgIHwgQiAoSW5mbHVlbmNlX21hcCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgICgqXG4gICAgICAgICAgIHwgQiAoU2hvcnRfaW5mbHVlbmNlX25vZGUsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICBqc29uKVxuKilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2Vfbm9kZSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAganNvbilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2Vfbm9kZXMsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFJ1bGVzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmRlYWRfcnVsZXNfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKEFnZW50c19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIGpzb24pXG4gICAgICAgICAgIHwgQiAoVHJhbnNpdGlvbnNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoQ29uc3RyYWludHNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubGVtbWFzX2xpc3Rfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFBvbHltZXJzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuc2NjX29mX2pzb24ganNvbilcbiAgICAgICAgICAgfCBCIChESU4sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgRGF0YS5yZWFkX2RpbiBwIGxiKVxuICAgICAgICAgICB8IEIgKFBsb3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgRGF0YS5yZWFkX3Bsb3QgcCBsYilcbiAgICAgICAgICAgfCBCIChTbmFwc2hvdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfc25hcHNob3QgcCBsYilcbiAgICAgICAgICAgfCBCIChTaW11bGF0aW9uX2VmZmljaWVuY3ksIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgQ291bnRlci5FZmZpY2llbmN5LnJlYWRfdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25faW5mbywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2luZm8gcCBsYilcbiAgICAgICAgICAgfCBCIChTaW11bGF0aW9uX3BhcmFtZXRlciwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fYXJ0aWZhY3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0IEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCBwIGxiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQpKVxuICAgIHhcblxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+aXNfcnVubmluZyB+cG9zdCBtYWlsYm94ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIGlkID0gMFxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSA6IHR5cGUgYS5cbiAgICAgICAgYSBoYW5kbGUgLT5cbiAgICAgICAgKEJ1ZmZlci50IC0+IHVuaXQpIC0+XG4gICAgICAgIChhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICAgICAgZnVuIGhhbmRsZSByZXF1ZXN0IC0+XG4gICAgICAgIGlmIGlzX3J1bm5pbmcgKCkgdGhlbiAoXG4gICAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgICAgICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTsgcmVxdWVzdCBdKVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9zdCBtZXNzYWdlIGluXG4gICAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgKEIgKGhhbmRsZSwgZmVlZGVyKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZCA8LSBzdWNjIGlkIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0ID0gXCJrYW1vaGEgYWdlbnQgaGFzIGRpZWRcIjtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYU1vSGEgKilcbiAgICBtZXRob2QgZmlsZV9kZWxldGUgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlRGVsZXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlVXBkYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZU1vdmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUdldFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ3JlYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ2F0YWxvZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ2F0YWxvZ1wiKSBdKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlIDogQXN0LnBhcnNpbmdfY29tcGlsIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmdcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgcHJvamVjdF9wYXJzZSBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFyc1xuICAgICAgICA6IFB1YmxpY19kYXRhLnBvc19vZl9ydWxlc19hbmRfdmFycyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nXG4gICAgICAgICAgIFwibG93IGxldmVsIGdldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgbXVzdG4ndCBiZSB1c2VkXCIpXG5cbiAgICBtZXRob2QgcHJvamVjdF9vdmVyd3JpdGUgZmlsZV9pZCBhc3QgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdE92ZXJ3cml0ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFzdC53cml0ZV9wYXJzaW5nX2NvbXBpbCBiIGFzdCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgKCogS2FTYSAqKVxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgY29tcGlsID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklOSVRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgY29tcGlsKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXIgY29tcGlsID1cbiAgICAgIHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3XG4gICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gY29tcGlsKSlcblxuICAgIG1ldGhvZCBnZXRfY29udGFjdF9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEpTT04gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiQ09OVEFDVF9NQVBcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2VfbWFwIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkxPQ0FMX0lORkxVRU5DRV9NQVBcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gSnNvblV0aWwud3JpdGVfb3B0aW9uIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmd2QpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gSnNvblV0aWwud3JpdGVfb3B0aW9uIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBid2QpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIHRvdGFsKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICBvcmlnaW4pKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGUgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX09SSUdJTkFMX05PREVcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9uZXh0X25vZGUganNvbiA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGUgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9ORVhUX05PREVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAganNvbikpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBqc29uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfUFJFVklPVVNfTk9ERVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICBqc29uKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIHBvcyA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGUgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9OT0RFX0FUXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IExvYy53cml0ZV9wb3NpdGlvbiBiIHBvcyk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZXMgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9BTExfTk9ERVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX3J1bGVzID1cbiAgICAgIHNlbGYjbWVzc2FnZSBSdWxlc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkRFQURfUlVMRVNcIikgXSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9hZ2VudHMgPVxuICAgICAgc2VsZiNtZXNzYWdlIEFnZW50c19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkRFQURfQUdFTlRTXCIpIF0pXG5cbiAgICBtZXRob2QgZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICBzZWxmI21lc3NhZ2UgVHJhbnNpdGlvbnNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIk5PTl9XRUFLTFlfUkVWRVJTSUJMRV9UUkFOU0lUSU9OU1wiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgc2VsZiNtZXNzYWdlIENvbnN0cmFpbnRzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiQ09OU1RSQUlOVFNcIikgXSlcblxuICAgIG1ldGhvZCBnZXRfcG90ZW50aWFsX3BvbHltZXJzIGFjY3VyYWN5X2NtIGFjY3VyYWN5X3NjYyA9XG4gICAgICBzZWxmI21lc3NhZ2UgUG9seW1lcnNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQT0xZTUVSU1wiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X2NtKSk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeV9zY2MpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYVNpbSAqKVxuICAgIG1ldGhvZCBzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIChfIDogUGF0dGVybi5zaGFyaW5nX2xldmVsKVxuICAgICAgICAoXyA6IEFzdC5wYXJzaW5nX2NvbXBpbCkgKF8gOiAoc3RyaW5nICogTmJyLnQpIGxpc3QpXG4gICAgICAgIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nXG4gICAgICAgICAgIFwibG93IGxldmVsIHNpbXVsYXRpb25fbG9hZCBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RQYXJzZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFBhdHRlcm4ud3JpdGVfc2hhcmluZ19sZXZlbCBiIHBhdHRlcm5TaGFyaW5nKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBOYnIud3JpdGVfdClcbiAgICAgICAgICAgICAgICAgIGIgb3ZlcndyaXRlcyk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY29udGludWUgcGF1c2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIHBhdXNlKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRlbGV0ZVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgRElOIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxESU5cIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGlkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3QgaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNuYXBzaG90IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCBwYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFBsb3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBcGlfdHlwZXNfai53cml0ZV9wbG90X3BhcmFtZXRlciBiIHBhcmFtZXRlcik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmdzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fZWZmaWNpZW5jeSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9pbmZvIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25JbmZvXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gaW50ZXJ2ZW50aW9uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpbnRlcnZlbnRpb24pO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIHNlbGYjbWVzc2FnZSBCaWdTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25QYXVzZVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaW11bGF0aW9uX3BhcmFtZXRlciAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydCBwYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fYXJ0aWZhY3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblN0YXJ0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgYiBwYXJhbWV0ZXIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25UcmFjZVwiKSBdKVxuXG4gICAgKCogbWV0aG9kIHByb2plY3RfcGFyc2Ugb3ZlcndyaXRlID0gKClcblxuICAgICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uID0gKClcbiAgICAgICBtZXRob2QgY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIG1vZGVzID0gTHd0X3Jlc3VsdC5yZXR1cm4gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gZmFsc2VcbiAgICAgICBtZXRob2Qgc3RvcnlfbGlzdCA9ICgpXG4gICAgICAgbWV0aG9kIHN0b3J5X2xvZyA9ICgpXG4gICAgICAgbWV0aG9kIHN0b3J5X3Byb2dyZXNzID0gKClcblxuICAgICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSB0cnVlXG4gICAgICAgICBtZXRob2QgdGVybWluYXRlID0gKCkqKVxuICBlbmRcbiIsIigqIEF1dG8tZ2VuZXJhdGVkIGZyb20gXCJtcGlfbWVzc2FnZS5hdGRcIiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItMjctMzItMzMtMzUtMzlcIl1cblxudHlwZSBzbmFwc2hvdF9pZCA9IEFwaV90eXBlc190LnNuYXBzaG90X2lkXG5cbnR5cGUgc25hcHNob3RfZGV0YWlsID0gQXBpX3R5cGVzX3Quc25hcHNob3RfZGV0YWlsXG5cbnR5cGUgc25hcHNob3RfY2F0YWxvZyA9IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2dcblxudHlwZSBzaW11bGF0aW9uX3BhcmFtZXRlciA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyXG5cbnR5cGUgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvblxuXG50eXBlIHNpbXVsYXRpb25faW5mbyA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb1xuXG50eXBlIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA9IENvdW50ZXIuRWZmaWNpZW5jeS50XG5cbnR5cGUgc2ltdWxhdGlvbl9hcnRpZmFjdCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3RcblxudHlwZSAoJ29rLCAnZXJyb3IpIGFwaV9yZXN1bHQgPSAoJ29rLCAnZXJyb3IpIEFwaV90eXBlc190LnJlc3VsdFxuXG50eXBlIGFwaV9tZXNzYWdlID0gQXBpX3R5cGVzX3QubWVzc2FnZVxuXG50eXBlICdvayByZXN1bHQgPSAnb2sgTXBpX21lc3NhZ2VfdC5yZXN1bHRcblxudHlwZSBwbG90ID0gQXBpX3R5cGVzX3QucGxvdFxuXG50eXBlIGxvZ19tZXNzYWdlID0gQXBpX3R5cGVzX3QubG9nX21lc3NhZ2VcblxudHlwZSBmaWxlX2xpbmVfY2F0YWxvZyA9IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nXG5cbnR5cGUgZW52aXJvbm1lbnRfaW5mbyA9IEFwaV90eXBlc190LmVudmlyb25tZW50X2luZm9cblxudHlwZSBkaW5fY2F0YWxvZyA9IEFwaV90eXBlc190LmRpbl9jYXRhbG9nXG5cbnR5cGUgZGluID0gQXBpX3R5cGVzX3QuZGluXG5cbnR5cGUgcmVzdF9yZXNwb25zZV9jb250ZW50ID0gTXBpX21lc3NhZ2VfdC5yZXN0X3Jlc3BvbnNlX2NvbnRlbnRcblxudHlwZSByZXN0X3Jlc3BvbnNlID0gTXBpX21lc3NhZ2VfdC5yZXN0X3Jlc3BvbnNlXG5cbnR5cGUgcHJvamVjdF9wYXJzZSA9IEFwaV90eXBlc190LnByb2plY3RfcGFyc2VcblxudHlwZSBwcm9qZWN0X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnByb2plY3RfcGFyYW1ldGVyXG5cbnR5cGUgcGxvdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlclxuXG50eXBlIGRpbl9pZCA9IEFwaV90eXBlc190LmRpbl9pZFxuXG50eXBlIHJlc3RfcmVxdWVzdCA9IE1waV9tZXNzYWdlX3QucmVzdF9yZXF1ZXN0XG5cbnR5cGUgcmVzcG9uc2VfY29udGVudCA9IE1waV9tZXNzYWdlX3QucmVzcG9uc2VfY29udGVudFxuXG50eXBlIHJlc3BvbnNlID0gTXBpX21lc3NhZ2VfdC5yZXNwb25zZVxuXG50eXBlIHJlcXVlc3QgPSBNcGlfbWVzc2FnZV90LnJlcXVlc3RcblxudHlwZSBpZCA9IE1waV9tZXNzYWdlX3QuaWRcblxudHlwZSAnZGF0YSBtZXNzYWdlID0gJ2RhdGEgTXBpX21lc3NhZ2VfdC5tZXNzYWdlID0geyBpZDogaWQ7IGRhdGE6ICdkYXRhIH1cblxudHlwZSBmaWxlX2xpbmVfZGV0YWlsID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2RldGFpbFxuXG50eXBlIGZpbGVfbGluZSA9IEFwaV90eXBlc190LmZpbGVfbGluZVxuXG5sZXQgd3JpdGVfc25hcHNob3RfaWQgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NuYXBzaG90X2lkXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfaWQgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfaWRcbilcbmxldCBzbmFwc2hvdF9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NuYXBzaG90X2RldGFpbFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NuYXBzaG90X2RldGFpbFxuKVxubGV0IHNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfY2F0YWxvZ1xuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NuYXBzaG90X2NhdGFsb2dcbilcbmxldCBzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbilcbmxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuKVxubGV0IHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW5mbyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9pbmZvXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2luZm8gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9pbmZvXG4pXG5sZXQgc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kgPSAoXG4gIENvdW50ZXIuRWZmaWNpZW5jeS53cml0ZV90XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3kgPSAoXG4gIENvdW50ZXIuRWZmaWNpZW5jeS5yZWFkX3RcbilcbmxldCBzaW11bGF0aW9uX2VmZmljaWVuY3lfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3RcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4pXG5sZXQgc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3JcbilcbmxldCBzdHJpbmdfb2ZfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2FwaV9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yXG4pXG5sZXQgYXBpX3Jlc3VsdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2FwaV9tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9tZXNzYWdlXG4pXG5sZXQgc3RyaW5nX29mX2FwaV9tZXNzYWdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2FwaV9tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfYXBpX21lc3NhZ2UgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfbWVzc2FnZVxuKVxubGV0IGFwaV9tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9hcGlfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19hcGlfbWVzc2FnZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfYXBpX21lc3NhZ2VcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fYXBpX21lc3NhZ2VfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19hcGlfbWVzc2FnZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2FwaV9tZXNzYWdlXG4gIClcbilcbmxldCBfYXBpX21lc3NhZ2VfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2FwaV9tZXNzYWdlX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX2EgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX2Egd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19hID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN1bHRfZDFmOTgyNCB3cml0ZV9fYSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN1bHRfZDFmOTgyNCByZWFkX19hID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9fYSByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF9kMWY5ODI0X29mX3N0cmluZyByZWFkX19hIHMgPVxuICByZWFkX19yZXN1bHRfZDFmOTgyNCByZWFkX19hIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdWx0IHdyaXRlX19vayA9IChcbiAgd3JpdGVfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19va1xuKVxubGV0IHN0cmluZ19vZl9yZXN1bHQgd3JpdGVfX29rID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3VsdCB3cml0ZV9fb2sgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN1bHQgcmVhZF9fb2sgPSAoXG4gIHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX29rXG4pXG5sZXQgcmVzdWx0X29mX3N0cmluZyByZWFkX19vayBzID1cbiAgcmVhZF9yZXN1bHQgcmVhZF9fb2sgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90ID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wbG90XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3QgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcGxvdFxuKVxubGV0IHBsb3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9sb2dfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfbG9nX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfbG9nX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbG9nX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9sb2dfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9sb2dfbWVzc2FnZVxuKVxubGV0IGxvZ19tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9sb2dfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZV9jYXRhbG9nXG4pXG5sZXQgZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZW52aXJvbm1lbnRfaW5mb1xuKVxubGV0IHN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Vudmlyb25tZW50X2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2Vudmlyb25tZW50X2luZm9cbilcbmxldCBlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9lbnZpcm9ubWVudF9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2Rpbl9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluX2NhdGFsb2dcbilcbmxldCBkaW5fY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW4gPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2RpblxuKVxubGV0IHN0cmluZ19vZl9kaW4gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2RpblxuKVxubGV0IGRpbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zdHJpbmdfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gIClcbilcbmxldCBfc3RyaW5nX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFNpbXVsYXRpb25Mb2FkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25Mb2FkXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbERJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9sb2dfbWVzc2FnZVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2RldGFpbFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbmZvXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25FZmZpY2llbmN5XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblRyYWNlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25PdXRwdXRzWmlwXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ29udGludWVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uU3RhcnRcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJFbnZpcm9ubWVudEluZm9cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZW52aXJvbm1lbnRfaW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdENyZWF0ZVxcXCJcIlxuICAgICAgfCBgUHJvamVjdERlbGV0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0RGVsZXRlXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0Q2F0YWxvZyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0Q2F0YWxvZ1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9fc3RyaW5nX2xpc3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVzcG9uc2VfY29udGVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Mb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uTG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Vudmlyb25tZW50X2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm8geFxuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDcmVhdGVcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlXG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkxvYWRcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkxvYWRcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZVxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZVxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2RpblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2RldGFpbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCBcIkVudmlyb25tZW50SW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9lbnZpcm9ubWVudF9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDYXRhbG9nIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3RfcmVzcG9uc2VfY29udGVudF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVzdF9yZXNwb25zZV9jb250ZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmID0gKFxuICB3cml0ZV9hcGlfcmVzdWx0IHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0XzRjYTZiOGYgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF80Y2E2YjhmID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgcmVhZF9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IF9yZXN1bHRfNGNhNmI4Zl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3Jlc3VsdF80Y2E2YjhmIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHdyaXRlX19yZXN1bHRfNGNhNmI4ZlxuKVxubGV0IHN0cmluZ19vZl9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID0gKFxuICByZWFkX19yZXN1bHRfNGNhNmI4ZlxuKVxubGV0IF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVzcG9uc2UgPSAoXG4gIHdyaXRlX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVzcG9uc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdF9yZXNwb25zZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3RfcmVzcG9uc2UgPSAoXG4gIHJlYWRfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRcbilcbmxldCByZXN0X3Jlc3BvbnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXN0X3Jlc3BvbnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJzZSA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcHJvamVjdF9wYXJzZVxuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyc2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcnNlID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3Byb2plY3RfcGFyc2VcbilcbmxldCBwcm9qZWN0X3BhcnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3Byb2plY3RfcGFyYW1ldGVyXG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcHJvamVjdF9wYXJhbWV0ZXJcbilcbmxldCBwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcGxvdF9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wbG90X3BhcmFtZXRlclxuKVxubGV0IHBsb3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Rpbl9pZCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluX2lkXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5faWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5faWQgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluX2lkXG4pXG5sZXQgZGluX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN0X3JlcXVlc3QgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBTaW11bGF0aW9uTG9hZCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uTG9hZFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcnNlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfaWRcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uSW5mb1xcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25UcmFjZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJFbnZpcm9ubWVudEluZm9cXFwiXCJcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RDYXRhbG9nXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0Q3JlYXRlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RDcmVhdGVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXJcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3REZWxldGVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuKVxubGV0IHN0cmluZ19vZl9yZXN0X3JlcXVlc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdF9yZXF1ZXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdF9yZXF1ZXN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uTG9hZFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkxvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm9cbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2dcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZSB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdERlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZSB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvXG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2dcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uTG9hZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Mb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZSB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXN0X3JlcXVlc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3RfcmVxdWVzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBTaW11bGF0aW9uTG9hZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uTG9hZFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9fc3RyaW5nX2xpc3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfbG9nX21lc3NhZ2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW5mb1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5fY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25UcmFjZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25QYXJhbWV0ZXJcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGF1c2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkludGVydmVudGlvblxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3BvbnNlX2NvbnRlbnQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzcG9uc2VfY29udGVudCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Mb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uTG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uTG9hZFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uTG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2xvZ19tZXNzYWdlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXNwb25zZV9jb250ZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXNwb25zZV9jb250ZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3VsdF84OTBkOWZlID0gKFxuICB3cml0ZV9hcGlfcmVzdWx0IHdyaXRlX3Jlc3BvbnNlX2NvbnRlbnQgd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfX3Jlc3VsdF84OTBkOWZlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN1bHRfODkwZDlmZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN1bHRfODkwZDlmZSA9IChcbiAgcmVhZF9hcGlfcmVzdWx0IHJlYWRfcmVzcG9uc2VfY29udGVudCByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF84OTBkOWZlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdWx0Xzg5MGQ5ZmUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHdyaXRlX19yZXN1bHRfODkwZDlmZVxuKVxubGV0IHN0cmluZ19vZl9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID0gKFxuICByZWFkX19yZXN1bHRfODkwZDlmZVxuKVxubGV0IF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzcG9uc2UgPSAoXG4gIHdyaXRlX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHN0cmluZ19vZl9yZXNwb25zZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXNwb25zZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3BvbnNlID0gKFxuICByZWFkX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHJlc3BvbnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXNwb25zZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3JlcXVlc3QgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBTaW11bGF0aW9uTG9hZCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uTG9hZFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcnNlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfaWRcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uSW5mb1xcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25UcmFjZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVxdWVzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXF1ZXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVxdWVzdCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkxvYWRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJzZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Mb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mb1xuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkxvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJzZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uTG9hZCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgcmVxdWVzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVxdWVzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbilcbmxldCBzdHJpbmdfb2ZfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4pXG5sZXQgaWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbWVzc2FnZSB3cml0ZV9fZGF0YSA6IF8gLT4gJ2RhdGEgbWVzc2FnZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiAnZGF0YSBtZXNzYWdlKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiaWRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX2lkXG4gICAgKVxuICAgICAgb2IgeC5pZDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiZGF0YVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2RhdGFcbiAgICApXG4gICAgICBvYiB4LmRhdGE7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfbWVzc2FnZSB3cml0ZV9fZGF0YSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9tZXNzYWdlIHdyaXRlX19kYXRhIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbWVzc2FnZSByZWFkX19kYXRhID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2lkID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9kYXRhID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnYScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9pZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2RhdGEgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19kYXRhXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2EnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9pZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfaWRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9kYXRhIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZGF0YVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQgPSAobWF0Y2ggIWZpZWxkX2lkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJpZFwiKTtcbiAgICAgICAgICAgIGRhdGEgPSAobWF0Y2ggIWZpZWxkX2RhdGEgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImRhdGFcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAnZGF0YSBtZXNzYWdlKVxuICAgICAgKVxuKVxubGV0IG1lc3NhZ2Vfb2Zfc3RyaW5nIHJlYWRfX2RhdGEgcyA9XG4gIHJlYWRfbWVzc2FnZSByZWFkX19kYXRhIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2RldGFpbCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZmlsZV9saW5lX2RldGFpbFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZV9kZXRhaWxcbilcbmxldCBmaWxlX2xpbmVfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9maWxlX2xpbmVcbilcbmxldCBmaWxlX2xpbmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGluaXRfY29tcHJlc3Npb25fbW9kZSA9IGZ1bmN0aW9uXG4gIHwgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICB7IEFwaS5jYXVzYWwgPSB0cnVlOyBBcGkud2VhayA9IGZhbHNlOyBBcGkuc3Ryb25nID0gZmFsc2UgfVxuICB8IFN0b3J5X2pzb24uV2VhayAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IGZhbHNlOyBBcGkud2VhayA9IHRydWU7IEFwaS5zdHJvbmcgPSBmYWxzZSB9XG4gIHwgU3RvcnlfanNvbi5TdHJvbmcgLT5cbiAgICB7IEFwaS5jYXVzYWwgPSBmYWxzZTsgQXBpLndlYWsgPSBmYWxzZTsgQXBpLnN0cm9uZyA9IHRydWUgfVxuXG5sZXQgYWRkX2NvbXByZXNzaW9uX21vZGUgeyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID0gZnVuY3Rpb25cbiAgfCBTdG9yeV9qc29uLkNhdXNhbCAtPiB7IEFwaS5jYXVzYWwgPSB0cnVlOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9XG4gIHwgU3RvcnlfanNvbi5XZWFrIC0+IHsgQXBpLmNhdXNhbDsgQXBpLndlYWsgPSB0cnVlOyBBcGkuc3Ryb25nIH1cbiAgfCBTdG9yeV9qc29uLlN0cm9uZyAtPiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nID0gdHJ1ZSB9XG5cbmxldCBwcmludF9jb21wcmVzc2lvbl9tb2RlcyBmIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfSA9XG4gIGxldCAoKSA9IGlmIGNhdXNhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkNBVVNBTFwiIGluXG4gIGxldCAoKSA9XG4gICAgaWYgd2VhayB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgKGlmIGNhdXNhbCB0aGVuXG4gICAgICAgICAgIFwiLCBXRUFLXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCJXRUFLXCIpXG4gIGluXG4gIGlmIHN0cm9uZyB0aGVuXG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAoaWYgY2F1c2FsIHx8IHdlYWsgdGhlblxuICAgICAgICAgXCIsIFNUUk9OR1wiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJTVFJPTkdcIilcblxudHlwZSBzdGF0ZV90ID0ge1xuICBydW5uaW5nOiBib29sO1xuICBwcm9ncmVzczogU3RvcnlfanNvbi5wcm9ncmVzc19iYXIgb3B0aW9uO1xuICBsb2c6IHN0cmluZyBsaXN0O1xuICBzdG9yaWVzOlxuICAgIChBcGkuY29tcHJlc3Npb25fbW9kZXNcbiAgICAqIHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCBsaXN0XG4gICAgKiBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaClcbiAgICBNb2RzLkludE1hcC50O1xufVxuXG50eXBlIHN0YXRlID0gc3RhdGVfdCByZWZcblxuKCpsZXQgc3RhdGVfZXEgYSBiID1cbiAgYS5ydW5uaW5nID0gYi5ydW5uaW5nICYmXG4gIE9wdGlvbl91dGlsLmVxdWFsICg9KSBhLnByb2dyZXNzIGIucHJvZ3Jlc3MgJiZcbiAgKHRyeSBMaXN0LmZvcl9hbGwyIChmdW4geCB5IC0+IFN0cmluZy5jb21wYXJlIHggeSA9IDApIGEubG9nIGIubG9nXG4gICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZSlcbiAgJiYgTW9kcy5JbnRNYXAuZXF1YWwgKD0pIGEuc3RvcmllcyBiLnN0b3JpZXMqKVxuXG5sZXQgaW5pdGlhbF9zdGF0ZSA9XG4gIHsgcnVubmluZyA9IGZhbHNlOyBwcm9ncmVzcyA9IE5vbmU7IGxvZyA9IFtdOyBzdG9yaWVzID0gTW9kcy5JbnRNYXAuZW1wdHkgfVxuXG5sZXQgY29udHJvbGxlciBzID0gZnVuY3Rpb25cbiAgfCBTdG9yeV9qc29uLlByb2dyZXNzIHAgLT5cbiAgICB7IHJ1bm5pbmcgPSBzLnJ1bm5pbmc7IHByb2dyZXNzID0gU29tZSBwOyBsb2cgPSBzLmxvZzsgc3RvcmllcyA9IHMuc3RvcmllcyB9XG4gIHwgU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdGFydCwgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gdHJ1ZTtcbiAgICAgIHByb2dyZXNzID0gTm9uZTtcbiAgICAgIGxvZyA9IFsgbSBdO1xuICAgICAgc3RvcmllcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgIGxvZyA9IG0gOjogcy5sb2c7XG4gICAgICBzdG9yaWVzID0gcy5zdG9yaWVzO1xuICAgIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLkZhaWxsdXJlLCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSBzLnJ1bm5pbmc7XG4gICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICBsb2cgPSBtIDo6IHMubG9nO1xuICAgICAgc3RvcmllcyA9IHMuc3RvcmllcztcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdWNjZXNzLCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgIGxvZyA9IG0gOjogcy5sb2c7XG4gICAgICBzdG9yaWVzID0gcy5zdG9yaWVzO1xuICAgIH1cbiAgfCBTdG9yeV9qc29uLlN0b3J5IGMgLT5cbiAgICAobWF0Y2ggYy5TdG9yeV9qc29uLnN0b3J5IHdpdGhcbiAgICB8IFN0b3J5X2pzb24uTmV3IGUgLT5cbiAgICAgIHtcbiAgICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgICBsb2cgPSBzLmxvZztcbiAgICAgICAgc3RvcmllcyA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGUuU3RvcnlfanNvbi5pZFxuICAgICAgICAgICAgKCBpbml0X2NvbXByZXNzaW9uX21vZGUgYy5TdG9yeV9qc29uLnN0b3J5X21vZGUsXG4gICAgICAgICAgICAgIFsgYy5TdG9yeV9qc29uLmxvZ19pbmZvIF0sXG4gICAgICAgICAgICAgIGUuU3RvcnlfanNvbi5ncmFwaCApXG4gICAgICAgICAgICBzLnN0b3JpZXM7XG4gICAgICB9XG4gICAgfCBTdG9yeV9qc29uLlNhbWVfYXMgaSAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgcy5zdG9yaWVzIHdpdGhcbiAgICAgIHwgU29tZSAoY20sIGluZm9zLCBncmFwaCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIHJ1bm5pbmcgPSBzLnJ1bm5pbmc7XG4gICAgICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgICAgIGxvZyA9IHMubG9nO1xuICAgICAgICAgIHN0b3JpZXMgPVxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgKCBhZGRfY29tcHJlc3Npb25fbW9kZSBjbSBjLlN0b3J5X2pzb24uc3RvcnlfbW9kZSxcbiAgICAgICAgICAgICAgICBjLlN0b3J5X2pzb24ubG9nX2luZm8gOjogaW5mb3MsXG4gICAgICAgICAgICAgICAgZ3JhcGggKVxuICAgICAgICAgICAgICBzLnN0b3JpZXM7XG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgcmVjZWl2ZSB1cGRhdGVfc3RhdGUgeCA9XG4gIHVwZGF0ZV9zdGF0ZSAoU3RvcnlfanNvbi5tZXNzYWdlX29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxubGV0IGluaXRfc3RhdGUgKCkgPVxuICBsZXQgY3VycmVudF9zdGF0ZSA9IHJlZiBpbml0aWFsX3N0YXRlIGluXG4gIGN1cnJlbnRfc3RhdGUsIGZ1biB4IC0+IGN1cnJlbnRfc3RhdGUgOj0gY29udHJvbGxlciAhY3VycmVudF9zdGF0ZSB4XG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+cG9zdCBjdXJyZW50X3N0YXRlID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5cbiAgICBtZXRob2QgY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfSA9XG4gICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcG9zdFxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmdcbiAgICAgICAgICAgICAgIChgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgYFN0cmluZyBcIkNPTkZJR1wiO1xuICAgICAgICAgICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICBcIm5vbmVcIiwgYEJvb2wgY2F1c2FsO1xuICAgICAgICAgICAgICAgICAgICAgICBcIndlYWtcIiwgYEJvb2wgd2VhaztcbiAgICAgICAgICAgICAgICAgICAgICAgXCJzdHJvbmdcIiwgYEJvb2wgc3Ryb25nO1xuICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgIGluXG4gICAgICAgIEx3dC5yZXR1cm5fb2sgKClcbiAgICAgICkgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX2Vycm9yIFwiS2FTdG9yIGFnZW50IGlzIGRlYWRcIlxuXG4gICAgbWV0aG9kIHJhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gdHJhY2VfdGV4dCA9XG4gICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IGN1cnJlbnRfc3RhdGUgOj0geyBpbml0aWFsX3N0YXRlIHdpdGggcnVubmluZyA9IHRydWUgfSBpblxuICAgICAgICBsZXQgKCkgPSBwb3N0IChcIltcXFwiUlVOXFxcIiwgXCIgXiB0cmFjZV90ZXh0IF4gXCJdXCIpIGluXG4gICAgICAgIEx3dC5yZXR1cm5fb2sgKClcbiAgICAgICkgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX2Vycm9yIFwiS2FTdG9yIGFnZW50IGlzIGRlYWRcIlxuXG4gICAgbWV0aG9kIHN0b3J5X2xvZyA9ICFjdXJyZW50X3N0YXRlLmxvZ1xuICAgIG1ldGhvZCBzdG9yeV9pc19jb21wdXRpbmcgPSAhY3VycmVudF9zdGF0ZS5ydW5uaW5nXG4gICAgbWV0aG9kIHN0b3J5X3Byb2dyZXNzID0gIWN1cnJlbnRfc3RhdGUucHJvZ3Jlc3NcbiAgICBtZXRob2Qgc3RvcnlfbGlzdCA9ICFjdXJyZW50X3N0YXRlLnN0b3JpZXNcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNpbXVsYXRpb25fZGV0YWlsX291dHB1dCA9XG4gICggQXBpX3R5cGVzX3QucGxvdCBvcHRpb24sXG4gICAgKHN0cmluZyAqIEFwaV90eXBlc190LmRpbikgbGlzdCxcbiAgICBzdHJpbmcgbGlzdCBNb2RzLlN0cmluZ01hcC50LFxuICAgIEFwaV90eXBlc190LnNuYXBzaG90IE1vZHMuU3RyaW5nTWFwLnQsXG4gICAgc3RyaW5nLFxuICAgIHN0cmluZyApXG4gIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0XG5cbmxldCBhcGlfc25hcHNob3RfZG90IChzbmFwc2hvdCA6IEFwaV90eXBlc190LnNuYXBzaG90KSA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9kb3Rfc25hcHNob3QgP3V1aWQ6Tm9uZSkgc25hcHNob3RcblxubGV0IGFwaV9zbmFwc2hvdF9rYXBwYSAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSA6IHN0cmluZyA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdFxuXG5sZXQgYXBpX3NpbXVsYXRpb25fc3RhdHVzIChwcm9ncmVzcyA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3MpXG4gICAgKGRldGFpbCA6IHNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gPVxuICBsZXQgb3V0cHV0IDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9XG4gICAge1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9XG4gICAgICAgIChtYXRjaCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgIHwgU29tZSBwbG90IC0+IExpc3QubGVuZ3RoIHBsb3QuRGF0YS5wbG90X3Nlcmllcyk7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zID1cbiAgICAgICAgTGlzdC5sZW5ndGggZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuc2l6ZSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9XG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLnNpemUgZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9ICgpO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID1cbiAgICAgICAgU3RyaW5nLmxlbmd0aCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzO1xuICAgIH1cbiAgaW5cbiAge1xuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXQgPSBvdXRwdXQ7XG4gIH1cblxuKCogcmV0dXJuIHRoZSBhZ2VudCBjb3VudCAqKVxubGV0IGFnZW50X2NvdW50IChzcGVjaWVzIDogQXBpX3R5cGVzX3Quc2l0ZV9ncmFwaCkgOiBpbnQgPSBBcnJheS5sZW5ndGggc3BlY2llc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogRXJyb3IgbWVzc2FnZXMgKilcblxuKCoqIEludGVyZmFjZSB0byBrYXBwYSBydW50aW1lICopXG5sZXQgbXNnX3Byb2Nlc3Nfbm90X3BhdXNlZCA9IFwicHJvY2VzcyBub3QgcGF1c2VkXCJcblxuKCoqICBTeXN0ZW0gcHJvY2Vzc1xuXG4gICAgIFRoZXNlIGFyZSBzeXN0ZW0gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXRcbiAgICAgdmFyeS5cbiopXG5jbGFzcyB0eXBlIHN5c3RlbV9wcm9jZXNzID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiA/ZXhuOmV4biAtPiBzdHJpbmcgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgeWllbGQgOiB1bml0IC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gOiB1bml0IC0+IGZsb2F0XG5lbmRcblxuKCoqIFRyaXZpYWwgaW1wbGVtZW50YXRpb24gcHJpbWFyaWx5IGZvciB1bml0IHRlc3RpbmcuICopXG5jbGFzcyBudWxsX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2VzcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb2cgP2V4biAoXyA6IHN0cmluZykgPVxuICAgICAgaWdub3JlIGV4bjtcbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG4gICAgbWV0aG9kIHlpZWxkICgpID0gTHd0LnJldHVybl91bml0XG4gICAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gKCkgPSAwLjBcbiAgZW5kXG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpc19ydW5uaW5nOiBib29sO1xuICBtdXRhYmxlIHJ1bl9maW5hbGl6ZTogYm9vbDtcbiAgbXV0YWJsZSBwYXVzZV9jb25kaXRpb246IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbDtcbiAgcGFyc2VkX3NlZWQ6IGludCBvcHRpb247XG4gIGR1bXBJZkRlYWRsb2NrZWQ6IGJvb2w7XG4gIG1heENvbnNlY3V0aXZlQ2xhc2g6IGludDtcbiAgcGF0dGVyblNoYXJpbmc6IFBhdHRlcm4uc2hhcmluZ19sZXZlbDtcbiAgY291bnRlcjogQ291bnRlci50O1xuICBsb2dfYnVmZmVyOiBCdWZmZXIudDtcbiAgbG9nX2Zvcm06IEZvcm1hdC5mb3JtYXR0ZXI7XG4gIG11dGFibGUgcGxvdDogRGF0YS5wbG90O1xuICBtdXRhYmxlIHNuYXBzaG90czogRGF0YS5zbmFwc2hvdCBNb2RzLlN0cmluZ01hcC50O1xuICBtdXRhYmxlIGRpbnM6IChzdHJpbmcgKiBEYXRhLmRpbikgbGlzdDtcbiAgbXV0YWJsZSBzcGVjaWVzOlxuICAgIChmbG9hdCAqIFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudCkgbGlzdCBNb2RzLlN0cmluZ01hcC50O1xuICBtdXRhYmxlIGZpbGVzOiBzdHJpbmcgbGlzdCBNb2RzLlN0cmluZ01hcC50O1xuICBtdXRhYmxlIGVycm9yX21lc3NhZ2VzOiBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3Q7XG4gICgqbXV0YWJsZSopIHRyYWNlOiBCdWZmZXIudDtcbiAgaW5wdXRzX2J1ZmZlcjogQnVmZmVyLnQ7XG4gIGlucHV0c19mb3JtOiBGb3JtYXQuZm9ybWF0dGVyO1xuICBwYXJzaW5nX2NvbXBpbDogQXN0LnBhcnNpbmdfY29tcGlsO1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgbXV0YWJsZSBlbnY6IE1vZGVsLnQ7XG4gIG11dGFibGUgZ3JhcGg6IFJ1bGVfaW50ZXJwcmV0ZXIudCBvcHRpb247XG4gIG11dGFibGUgc3RhdGU6IFN0YXRlX2ludGVycHJldGVyLnQ7XG4gIGluaXRfbDogKFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSkgbGlzdDtcbiAgbXV0YWJsZSBsYXN0eWllbGQ6IGZsb2F0O1xufVxuKCoqIFN0YXRlIG9mIHRoZSBydW5uaW5nIHNpbXVsYXRpb24uICopXG5cbmxldCBjcmVhdGVfdCB+bG9nX2Zvcm0gfmxvZ19idWZmZXIgfmNvbnRhY3RfbWFwIH5pbnB1dHNfYnVmZmVyIH5pbnB1dHNfZm9ybVxuICAgIH5kdW1wSWZEZWFkbG9ja2VkIH5tYXhDb25zZWN1dGl2ZUNsYXNoIH5wYXR0ZXJuU2hhcmluZyB+ZW52IH5jb3VudGVyIH5ncmFwaFxuICAgIH5zdGF0ZSB+aW5pdF9sIH5sYXN0eWllbGQgfnBhcnNpbmdfY29tcGlsIH5wYXJzZWRfc2VlZCA6IHQgPVxuICB7XG4gICAgaXNfcnVubmluZyA9IGZhbHNlO1xuICAgIHJ1bl9maW5hbGl6ZSA9IGZhbHNlO1xuICAgIHBhdXNlX2NvbmRpdGlvbiA9IEFsZ19leHByLkZBTFNFO1xuICAgIHBhcnNlZF9zZWVkO1xuICAgIGNvdW50ZXI7XG4gICAgbG9nX2J1ZmZlcjtcbiAgICBsb2dfZm9ybTtcbiAgICBkdW1wSWZEZWFkbG9ja2VkO1xuICAgIG1heENvbnNlY3V0aXZlQ2xhc2g7XG4gICAgcGF0dGVyblNoYXJpbmc7XG4gICAgcGxvdCA9IERhdGEuaW5pdF9wbG90IGVudjtcbiAgICBzbmFwc2hvdHMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBkaW5zID0gW107XG4gICAgc3BlY2llcyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGZpbGVzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZXJyb3JfbWVzc2FnZXMgPSBbXTtcbiAgICB0cmFjZSA9IEJ1ZmZlci5jcmVhdGUgMTAyNDtcbiAgICBpbnB1dHNfYnVmZmVyO1xuICAgIGlucHV0c19mb3JtO1xuICAgIHBhcnNpbmdfY29tcGlsO1xuICAgIGNvbnRhY3RfbWFwO1xuICAgIGVudjtcbiAgICBncmFwaDtcbiAgICBzdGF0ZTtcbiAgICBpbml0X2w7XG4gICAgbGFzdHlpZWxkO1xuICB9XG5cbmxldCByZWluaXRpYWxpemUgfm91dHB1dHMgcmFuZG9tX3N0YXRlIHQgPVxuICBDb3VudGVyLnJlaW5pdGlhbGl6ZSB0LmNvdW50ZXI7XG4gICgqIEZvcm1hdC5wcF9wcmludF9mbHVzaCB0LmxvZ19mb3JtICgpO1xuICAgICBCdWZmZXIucmVzZXQgdC5sb2dfYnVmZmVyOyopXG4gIHQuaXNfcnVubmluZyA8LSBmYWxzZTtcbiAgdC5ydW5fZmluYWxpemUgPC0gZmFsc2U7XG4gIHQucGF1c2VfY29uZGl0aW9uIDwtIEFsZ19leHByLkZBTFNFO1xuICB0LnBsb3QgPC0gRGF0YS5pbml0X3Bsb3QgdC5lbnY7XG4gIHQuc25hcHNob3RzIDwtIE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICB0LmRpbnMgPC0gW107XG4gIHQuZmlsZXMgPC0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIHQuZXJyb3JfbWVzc2FnZXMgPC0gW107XG4gIHQuZ3JhcGggPC1cbiAgICBTb21lXG4gICAgICAoUnVsZV9pbnRlcnByZXRlci5lbXB0eSB+b3V0cHV0cyB+d2l0aF90cmFjZTpmYWxzZSByYW5kb21fc3RhdGUgdC5lbnZcbiAgICAgICAgIHQuY291bnRlcik7XG4gIHQuc3RhdGUgPC1cbiAgICBTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIHQuY291bnRlciB0LmVudlxuXG5sZXQgZ2V0X2dyYXBoICh0IDogdCkgOiBSdWxlX2ludGVycHJldGVyLnQgPVxuICBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICB+ZXhjZXA6XG4gICAgICAoRmFpbHVyZSBcIk5vIHJ1bGUgaW50ZXJwcmV0ZXIgaW5mbyByZWFkeTogc2ltdWxhdGlvbiBub3Qgc3RhcnRlZCBwcm9wZXJseVwiKVxuICAgIHQuZ3JhcGhcblxubGV0IHNldF9ncmFwaCAodCA6IHQpIChncmFwaCA6IFJ1bGVfaW50ZXJwcmV0ZXIudCkgPSB0LmdyYXBoIDwtIFNvbWUgZ3JhcGhcblxubGV0IGNhdGNoX2Vycm9yIGhhbmRsZXIgPSBmdW5jdGlvblxuICB8IEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yICgobWVzc2FnZSwgcmFuZ2UpIDogc3RyaW5nIExvYy5hbm5vdGVkKSAtPlxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICB8IEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKChtZXNzYWdlLCByYW5nZSkgOiBzdHJpbmcgTG9jLmFubm90ZWQpIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gIHwgRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoKG1lc3NhZ2UsIHJhbmdlKSA6IHN0cmluZyBMb2MuYW5ub3RlZCkgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgKFwiUnVudGltZSBlcnJvciBcIiBeIGVycm9yKSlcbiAgfCBleG4gLT5cbiAgICBsZXQgbWVzc2FnZSA9XG4gICAgICB0cnkgUHJpbnRleGMudG9fc3RyaW5nIGV4biB3aXRoIF8gLT4gXCJ1bnNwZWNpZmllZCBleGNlcHRpb24gdGhyb3duXCJcbiAgICBpblxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIG1lc3NhZ2UpXG5cbmxldCBwYXJzZSB+cGF0dGVyblNoYXJpbmcgKHBhcnNpbmdfY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKSB2YXJfb3ZlcndyaXRlXG4gICAgc3lzdGVtX3Byb2Nlc3MgPVxuICBsZXQgeWllbGQgPSBzeXN0ZW1fcHJvY2VzcyN5aWVsZCBpblxuICBsZXQgbG9nX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gIGxldCBsb2dfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGxvZ19idWZmZXIgaW5cbiAgbGV0IGlucHV0c19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgaW5wdXRzX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBpbnB1dHNfYnVmZmVyIGluXG4gIGxldCBjb25mLCBfLCBfLCBfID0gQ29uZmlndXJhdGlvbi5wYXJzZSBwYXJzaW5nX2NvbXBpbC5Bc3QuY29uZmlndXJhdGlvbnMgaW5cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBEYXRhLnByaW50X3dhcm5pbmcgfnBvcyBsb2dfZm9ybSBtc2cgaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgTHd0LndyYXAyXG4gICAgICAgIChmdW4gdmFyX292ZXJ3cml0ZSAtPlxuICAgICAgICAgIExLYXBwYV9jb21waWxlci5jb21waWxfb2ZfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlOmZhbHNlXG4gICAgICAgICAgICB+c3ludGF4X3ZlcnNpb246QXN0LlY0IH52YXJfb3ZlcndyaXRlKVxuICAgICAgICB2YXJfb3ZlcndyaXRlIHBhcnNpbmdfY29tcGlsXG4gICAgICA+Pj0gZnVuIChhc3RfY29tcGlsZWRfZGF0YSA6IExLYXBwYV9jb21waWxlci5hc3RfY29tcGlsZWRfZGF0YSkgLT5cbiAgICAgIHlpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICgqIFRoZSBsYXN0IHlpZWxkIGlzIHVwZGF0ZWQgYWZ0ZXIgdGhlIGxhc3QgeWllbGQuXG4gICAgICAgICBJdCBpcyBnb3R0ZW4gaGVyZSBmb3IgdGhlIGluaXRpYWwgbGFzdCB5aWVsZCB2YWx1ZS4gKilcbiAgICAgIGxldCBsYXN0eWllbGQgPSBTeXMudGltZSAoKSBpblxuICAgICAgdHJ5XG4gICAgICAgICgqIGV4Y2VwdGlvbiByYWlzZWQgYnkgY29tcGlsZSBtdXN0IGhhdmUgdXNlZCBMd3QuZmFpbC5cbiAgICAgICAgICAgU29tZXRoaW5nIGlzIHdyb25nIGZvciBub3cgKilcbiAgICAgICAgbGV0IG91dHB1dHMgPSBmdW5jdGlvblxuICAgICAgICAgIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQuZnByaW50ZiBsb2dfZm9ybSBcIiVzQC5cIiBzXG4gICAgICAgICAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBsb2dfZm9ybSBtc2dcbiAgICAgICAgICB8IERhdGEuU25hcHNob3QgXyB8IERhdGEuRElOIF8gfCBEYXRhLlNwZWNpZXMgX1xuICAgICAgICAgIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyB8IERhdGEuUGxvdCBfIHwgRGF0YS5UcmFjZVN0ZXAgX1xuICAgICAgICAgIHwgRGF0YS5QcmludCBfIC0+XG4gICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgRXZhbC5jb21waWxlIH5kZWJ1Z19tb2RlOmZhbHNlXG4gICAgICAgICAgfnBhdXNlOihmdW4gZiAtPiBMd3QuYmluZCAoeWllbGQgKCkpIGYpXG4gICAgICAgICAgfnJldHVybjpMd3QucmV0dXJuID9yZXNjYWxlX2luaXQ6Tm9uZSA/b3ZlcndyaXRlX3QwOk5vbmVcbiAgICAgICAgICB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIH5vdXRwdXRzIH5zaGFyaW5nOnBhdHRlcm5TaGFyaW5nXG4gICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuYWdlbnRzX3NpZyBhc3RfY29tcGlsZWRfZGF0YS5jb3VudGVyc19pbmZvXG4gICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXMgYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXBcbiAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5yZXN1bHRcbiAgICAgICAgPj49IGZ1biAoZW52LCBfd2l0aF90cmFjZSwgaW5pdF9sKSAtPlxuICAgICAgICBsZXQgY291bnRlciA9XG4gICAgICAgICAgQ291bnRlci5jcmVhdGVcbiAgICAgICAgICAgIH5pbml0X3Q6KDAuIDogZmxvYXQpXG4gICAgICAgICAgICB+aW5pdF9lOigwIDogaW50KVxuICAgICAgICAgICAgP21heF90aW1lOk5vbmUgP21heF9ldmVudDpOb25lIH5wbG90X3BlcmlvZDooQ29uZmlndXJhdGlvbi5EVCAxLilcbiAgICAgICAgICAgIH5uYl9ydWxlczooTW9kZWwubmJfcnVsZXMgZW52KSAoKVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBwYXJzZWRfc2VlZCA9IGNvbmYuQ29uZmlndXJhdGlvbi5zZWVkIGluXG4gICAgICAgIERhdGEucHJpbnRfaW5pdGlhbF9pbnB1dHMgP3V1aWQ6Tm9uZVxuICAgICAgICAgIHsgY29uZiB3aXRoIENvbmZpZ3VyYXRpb24uc2VlZCA9IHBhcnNlZF9zZWVkIH1cbiAgICAgICAgICBlbnYgaW5wdXRzX2Zvcm0gaW5pdF9sO1xuICAgICAgICBsZXQgc2ltdWxhdGlvbiA6IHQgPVxuICAgICAgICAgIGNyZWF0ZV90IH5jb250YWN0X21hcDphc3RfY29tcGlsZWRfZGF0YS5jb250YWN0X21hcCB+bG9nX2Zvcm1cbiAgICAgICAgICAgIH5sb2dfYnVmZmVyIH5pbnB1dHNfYnVmZmVyIH5pbnB1dHNfZm9ybSB+cGFyc2luZ19jb21waWwgfmVudlxuICAgICAgICAgICAgfmNvdW50ZXIgfmR1bXBJZkRlYWRsb2NrZWQ6Y29uZi5Db25maWd1cmF0aW9uLmR1bXBJZkRlYWRsb2NrZWRcbiAgICAgICAgICAgIH5tYXhDb25zZWN1dGl2ZUNsYXNoOmNvbmYuQ29uZmlndXJhdGlvbi5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICAgICAgICB+cGF0dGVyblNoYXJpbmcgfmdyYXBoOk5vbmVcbiAgICAgICAgICAgIH5zdGF0ZTpcbiAgICAgICAgICAgICAgKFN0YXRlX2ludGVycHJldGVyLmVtcHR5IH53aXRoX2RlbHRhX2FjdGl2aXRpZXM6ZmFsc2UgY291bnRlciBlbnYpXG4gICAgICAgICAgICB+aW5pdF9sIH5sYXN0eWllbGQgfnBhcnNlZF9zZWVkXG4gICAgICAgIGluXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNpbXVsYXRpb24pXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgKGNhdGNoX2Vycm9yIChmdW4geCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIHggXSkpKSBlKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IG91dHB1dHMgKHNpbXVsYXRpb24gOiB0KSA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5ESU4gKGZsdXhfbmFtZSwgZmx1eF9tYXApIC0+XG4gICAgc2ltdWxhdGlvbi5kaW5zIDwtIChmbHV4X25hbWUsIGZsdXhfbWFwKSA6OiBzaW11bGF0aW9uLmRpbnNcbiAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIC0+IGFzc2VydCBmYWxzZVxuICB8IERhdGEuUGxvdCBuZXdfb2JzZXJ2YWJsZXMgLT5cbiAgICBzaW11bGF0aW9uLnBsb3QgPC0gRGF0YS5hZGRfcGxvdF9saW5lIG5ld19vYnNlcnZhYmxlcyBzaW11bGF0aW9uLnBsb3RcbiAgfCBEYXRhLlNwZWNpZXMgKGZpbGUsIHRpbWUsIG1peCkgLT5cbiAgICBsZXQgcCA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBbXSBmaWxlIHNpbXVsYXRpb24uc3BlY2llcyBpblxuICAgIHNpbXVsYXRpb24uc3BlY2llcyA8LVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIGZpbGUgKCh0aW1lLCBtaXgpIDo6IHApIHNpbXVsYXRpb24uc3BlY2llc1xuICB8IERhdGEuUHJpbnQgZmlsZV9saW5lIC0+XG4gICAgKG1hdGNoIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV9uYW1lIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHNpbXVsYXRpb24ubG9nX2Zvcm0gXCIlc0AuXCIgZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHRcbiAgICB8IFNvbWUgbmEgLT5cbiAgICAgIGxldCBsaW5lcyA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBbXSBuYSBzaW11bGF0aW9uLmZpbGVzIGluXG4gICAgICBzaW11bGF0aW9uLmZpbGVzIDwtXG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBuYVxuICAgICAgICAgIChmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfdGV4dCA6OiBsaW5lcylcbiAgICAgICAgICBzaW11bGF0aW9uLmZpbGVzKVxuICB8IERhdGEuU25hcHNob3QgKGZpbGVuYW1lLCBzbmFwc2hvdCkgLT5cbiAgICBsZXQgYWxyZWFkeV90aGVyZSB4ID0gTW9kcy5TdHJpbmdNYXAubWVtIHggc2ltdWxhdGlvbi5zbmFwc2hvdHMgaW5cbiAgICBsZXQgc25hcHNob3RfZmlsZSA9XG4gICAgICBUb29scy5maW5kX2F2YWlsYWJsZV9uYW1lIH5hbHJlYWR5X3RoZXJlIGZpbGVuYW1lXG4gICAgICAgIH5mYWN1bHRhdGl2ZTooc3RyaW5nX29mX2ludCBzbmFwc2hvdC5EYXRhLnNuYXBzaG90X2V2ZW50KVxuICAgICAgICB+ZXh0Ok5vbmVcbiAgICBpblxuICAgIHNpbXVsYXRpb24uc25hcHNob3RzIDwtXG4gICAgICBNb2RzLlN0cmluZ01hcC5hZGQgc25hcHNob3RfZmlsZSBzbmFwc2hvdCBzaW11bGF0aW9uLnNuYXBzaG90c1xuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LmZwcmludGYgc2ltdWxhdGlvbi5sb2dfZm9ybSBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3Mgc2ltdWxhdGlvbi5sb2dfZm9ybSBtc2dcbiAgfCBEYXRhLlRyYWNlU3RlcCBzdCAtPlxuICAgIGlmIEJ1ZmZlci5sZW5ndGggc2ltdWxhdGlvbi50cmFjZSA8PiAwIHRoZW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzaW11bGF0aW9uLnRyYWNlICcsJztcbiAgICBUcmFjZS53cml0ZV9zdGVwIHNpbXVsYXRpb24udHJhY2Ugc3RcblxubGV0IGludGVyYWN0aXZlX291dHB1dHMgZm9ybWF0dGVyIHQgPSBmdW5jdGlvblxuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiJXNALlwiIHNcbiAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBmb3JtYXR0ZXIgbXNnXG4gIHwgRGF0YS5QcmludCBmaWxlX2xpbmUgd2hlbiBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfbmFtZSA9IE5vbmUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlc0AuXCIgZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHRcbiAgfCAoIERhdGEuRElOIF8gfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIHwgRGF0YS5QbG90IF8gfCBEYXRhLlNwZWNpZXMgX1xuICAgIHwgRGF0YS5QcmludCBfIHwgRGF0YS5TbmFwc2hvdCBfIHwgRGF0YS5UcmFjZVN0ZXAgXyApIGFzIHYgLT5cbiAgICBvdXRwdXRzIHQgdlxuXG5sZXQgdGltZV95aWVsZCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDogdW5pdCBMd3QudCA9XG4gIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgaWYgdGltZSAtLiB0Lmxhc3R5aWVsZCA+IHN5c3RlbV9wcm9jZXNzI21pbl9ydW5fZHVyYXRpb24gKCkgdGhlbiAoXG4gICAgdC5sYXN0eWllbGQgPC0gdGltZTtcbiAgICBzeXN0ZW1fcHJvY2VzcyN5aWVsZCAoKVxuICApIGVsc2VcbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGZpbmFsaXplX3NpbXVsYXRpb24gfih0IDogdCkgOiB1bml0ID1cbiAgU3RhdGVfaW50ZXJwcmV0ZXIuZW5kX29mX3NpbXVsYXRpb24gfm91dHB1dHM6KG91dHB1dHMgdCkgdC5lbnYgdC5jb3VudGVyXG4gICAgKGdldF9ncmFwaCB0KSB0LnN0YXRlXG5cbmxldCBydW5fc2ltdWxhdGlvbiB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIHN0b3BwZWQgOlxuICAgIHVuaXQgTHd0LnQgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcnN0b3AgPSByZWYgc3RvcHBlZCBpblxuICAgICAgdC5pc19ydW5uaW5nIDwtIHRydWU7XG4gICAgICBsZXQgcmVjIGl0ZXIgKCkgPVxuICAgICAgICAodHJ5XG4gICAgICAgICAgIHdoaWxlXG4gICAgICAgICAgICAgKG5vdCAhcnN0b3ApXG4gICAgICAgICAgICAgJiYgU3lzLnRpbWUgKCkgLS4gdC5sYXN0eWllbGQgPCBzeXN0ZW1fcHJvY2VzcyNtaW5fcnVuX2R1cmF0aW9uICgpXG4gICAgICAgICAgIGRvXG4gICAgICAgICAgICAgbGV0IHN0b3AsIGdyYXBoJywgc3RhdGUnID1cbiAgICAgICAgICAgICAgIFN0YXRlX2ludGVycHJldGVyLmFfbG9vcCB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgICB+ZHVtcElmRGVhZGxvY2tlZDp0LmR1bXBJZkRlYWRsb2NrZWRcbiAgICAgICAgICAgICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2g6dC5tYXhDb25zZWN1dGl2ZUNsYXNoIHQuZW52IHQuY291bnRlclxuICAgICAgICAgICAgICAgICAoZ2V0X2dyYXBoIHQpIHQuc3RhdGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHJzdG9wIDo9XG4gICAgICAgICAgICAgICBzdG9wXG4gICAgICAgICAgICAgICB8fCBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgdC5jb3VudGVyIGdyYXBoJyB0LnBhdXNlX2NvbmRpdGlvbjtcbiAgICAgICAgICAgICBzZXRfZ3JhcGggdCBncmFwaCc7XG4gICAgICAgICAgICAgdC5zdGF0ZSA8LSBzdGF0ZSdcbiAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICAgICB3aXRoIGUgLT4gTHd0LmZhaWwgZSlcbiAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICBpZiAhcnN0b3AgdGhlbiAoXG4gICAgICAgICAgdC5pc19ydW5uaW5nIDwtIGZhbHNlO1xuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICApIGVsc2UgaWYgdC5pc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICAgIHN5c3RlbV9wcm9jZXNzI3lpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICB0Lmxhc3R5aWVsZCA8LSBTeXMudGltZSAoKTtcbiAgICAgICAgICBpdGVyICgpXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgaW5cbiAgICAgIGl0ZXIgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgaWYgdC5ydW5fZmluYWxpemUgdGhlbiBmaW5hbGl6ZV9zaW11bGF0aW9uIH50O1xuICAgICAgTHd0LnJldHVybl91bml0KVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT5cbiAgICAgICAgIHQuaXNfcnVubmluZyA8LSBmYWxzZTtcbiAgICAgICAgIHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF07XG4gICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuXG4oKiogU3RhcnQgdGhlIHNpbXVsYXRpb24gZnJvbSB0aGUgcGFyYW1ldGVycyBhbmQgdXNpbmcgdGhlIHBhcnNlZCBzdGF0ZS5cblxuICAgICAgICBSZXR1cm5zIHRoZSBzZWVkIHVzZWQsIGFzIGl0IGlzIGRlZmluZWQgaGVyZSBpZiBub24gc3BlY2lmaWVkICopXG5sZXQgc3RhcnQgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKVxuICAgIH4ocGFyYW1ldGVyIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIH4odCA6IHQpIDpcbiAgICAoaW50LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgbGV4YnVmID1cbiAgICBMZXhpbmcuZnJvbV9zdHJpbmcgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uXG4gIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgICgqbGV0ICgpID1cbiAgICAgICAgICBDb3VudGVyLnNldF9tYXhfdGltZVxuICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc19qLnNpbXVsYXRpb25fbWF4X3RpbWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ291bnRlci5zZXRfbWF4X2V2ZW50c1xuICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc19qLnNpbXVsYXRpb25fbWF4X2V2ZW50c1xuICAgICAgICAgICAgICAgaW4gKilcbiAgICAgIGxldCBzaW11bGF0aW9uX3NlZWQgOiBpbnQgPVxuICAgICAgICBtYXRjaCBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkIHdpdGhcbiAgICAgICAgfCBTb21lIHVzZXJfc2VlZCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQubG9nX2Zvcm0gXCJVc2VyLXNldCBzZWVkIHVzZWQgZm9yIHNpbXVsYXRpb246ICVpQC5cIlxuICAgICAgICAgICAgdXNlcl9zZWVkO1xuICAgICAgICAgIChtYXRjaCB0LnBhcnNlZF9zZWVkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgcGFyc2VkX3NlZWQgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQubG9nX2Zvcm0gXCJXQVJOSU5HOiBpZ25vcmVkIHNlZWQgZnJvbSBwYXJzaW5nOiAlaUAuXCJcbiAgICAgICAgICAgICAgcGFyc2VkX3NlZWRcbiAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICAgIHVzZXJfc2VlZFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggdC5wYXJzZWRfc2VlZCB3aXRoXG4gICAgICAgICAgfCBTb21lIHBhcnNlZF9zZWVkIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiB0LmxvZ19mb3JtIFwiUGFyc2VkIHNlZWQgc2V0IGZvciBzaW11bGF0aW9uOiAlaUAuXCJcbiAgICAgICAgICAgICAgcGFyc2VkX3NlZWQ7XG4gICAgICAgICAgICBwYXJzZWRfc2VlZFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgKCogaW5pdCByYW5kb20gdG8gZ2VuZXJhdGUgc2VlZCAqKVxuICAgICAgICAgICAgUmFuZG9tLnNlbGZfaW5pdCAoKTtcbiAgICAgICAgICAgIGxldCByYW5kb21fc2VlZCA9IFJhbmRvbS5iaXRzICgpIGluXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiB0LmxvZ19mb3JtIFwiUmFuZG9tIHNlZWQgdXNlZCBmb3Igc2ltdWxhdGlvbjogJWlALlwiXG4gICAgICAgICAgICAgIHJhbmRvbV9zZWVkO1xuICAgICAgICAgICAgcmFuZG9tX3NlZWQpXG4gICAgICBpblxuICAgICAgbGV0IHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5tYWtlIFt8IHNpbXVsYXRpb25fc2VlZCB8XSBpblxuICAgICAgcmVpbml0aWFsaXplIHJhbmRvbV9zdGF0ZSB+b3V0cHV0czoob3V0cHV0cyB0KSB0O1xuICAgICAgdHJ5XG4gICAgICAgIGxldCBwYXVzZSA9IEtwYXJzZXI0LnN0YW5kYWxvbmVfYm9vbF9leHByIEtsZXhlcjQudG9rZW4gbGV4YnVmIGluXG4gICAgICAgIEx3dC53cmFwNFxuICAgICAgICAgIChFdmFsdWF0b3IuZ2V0X3BhdXNlX2NyaXRlcmlhIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgfnNoYXJpbmc6dC5wYXR0ZXJuU2hhcmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0KVxuICAgICAgICAgIHQuY29udGFjdF9tYXAgdC5lbnYgKGdldF9ncmFwaCB0KSBwYXVzZVxuICAgICAgICA+Pj0gZnVuIChlbnYnLCBncmFwaCcsIGInJykgLT5cbiAgICAgICAgdC5lbnYgPC0gZW52JztcbiAgICAgICAgc2V0X2dyYXBoIHQgZ3JhcGgnO1xuICAgICAgICB0LnBhdXNlX2NvbmRpdGlvbiA8LSBiJyc7XG4gICAgICAgIENvdW50ZXIuc2V0X3Bsb3RfcGVyaW9kIHQuY291bnRlclxuICAgICAgICAgIChDb25maWd1cmF0aW9uLkRUIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Bsb3RfcGVyaW9kKTtcbiAgICAgICAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoKiBleGNlcHRpb24gcmFpc2VkIGJ5IGJ1aWxkX2luaXRpYWxfc3RhdGUgbXVzdCBoYXZlIGJlZW5cbiAgICAgICAgICAgICAgICAgcmFpc2VkIHdpdGggTHd0LmZhaWwuIFNvbWV0aGluZyBpcyB3cm9uZyBmb3Igbm93Li4uICopXG4gICAgICAgICAgICAgIEV2YWwuYnVpbGRfaW5pdGlhbF9zdGF0ZVxuICAgICAgICAgICAgICAgIH5iaW5kOihmdW4geCBmIC0+XG4gICAgICAgICAgICAgICAgICB0aW1lX3lpZWxkIH5zeXN0ZW1fcHJvY2VzcyB+dCA+Pj0gZnVuICgpIC0+IHggPj49IGYpXG4gICAgICAgICAgICAgICAgfnJldHVybjpMd3QucmV0dXJuIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgICAgfndpdGhfdHJhY2U6cGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fc3RvcmVfdHJhY2VcbiAgICAgICAgICAgICAgICB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIHQuY291bnRlciB0LmVudiByYW5kb21fc3RhdGVcbiAgICAgICAgICAgICAgICB0LmluaXRfbFxuICAgICAgICAgICAgICA+Pj0gZnVuIChzdG9wLCBncmFwaCwgc3RhdGUpIC0+XG4gICAgICAgICAgICAgIHNldF9ncmFwaCB0IGdyYXBoO1xuICAgICAgICAgICAgICB0LnN0YXRlIDwtIHN0YXRlO1xuICAgICAgICAgICAgICBsZXQgZmlyc3Rfb2JzID1cbiAgICAgICAgICAgICAgICBTdGF0ZV9pbnRlcnByZXRlci5vYnNlcnZhYmxlc192YWx1ZXMgdC5lbnYgKGdldF9ncmFwaCB0KVxuICAgICAgICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHQucGxvdCA8LSBEYXRhLmFkZF9wbG90X2xpbmUgZmlyc3Rfb2JzIHQucGxvdDtcbiAgICAgICAgICAgICAgcnVuX3NpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzIH50IHN0b3BcbiAgICAgICAgICAgIHdpdGggZSAtPlxuICAgICAgICAgICAgICBjYXRjaF9lcnJvclxuICAgICAgICAgICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgdC5lcnJvcl9tZXNzYWdlcyA8LSBbIGUgXTtcbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgICAgICAgICBlKTtcbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9zZWVkKVxuICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgfnJhbmdlIG1lc3NhZ2UpKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT5cbiAgICAgICAgIHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF07XG4gICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgcGF1c2UgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGlnbm9yZSBzeXN0ZW1fcHJvY2VzcztcbiAgaWdub3JlIHQ7XG4gIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgdC5pc19ydW5uaW5nIDwtIGZhbHNlXG4gIGVsc2VcbiAgICAoKTtcbiAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG5cbmxldCBzdG9wIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBpZ25vcmUgc3lzdGVtX3Byb2Nlc3M7XG4gIGlnbm9yZSB0O1xuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICB0LnJ1bl9maW5hbGl6ZSA8LSB0cnVlO1xuICAgICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgcGF1c2UgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICBlbHNlIChcbiAgICAgICAgZmluYWxpemVfc2ltdWxhdGlvbiB+dDtcbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICApKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IHBlcnR1cmJhdGlvbiB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpXG4gICAgfihwZXJ0dXJiYXRpb24gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvbikgOlxuICAgIChzdHJpbmcsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGlnbm9yZSBzeXN0ZW1fcHJvY2VzcztcbiAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBwZXJ0dXJiYXRpb24gaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBtc2dfcHJvY2Vzc19ub3RfcGF1c2VkKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBlID0gS3BhcnNlcjQuc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCBLbGV4ZXI0LnRva2VuIGxleGJ1ZiBpblxuICAgICAgICAgIGxldCBsb2dfYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgICAgICAgICBsZXQgbG9nX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBsb2dfYnVmZmVyIGluXG4gICAgICAgICAgTHd0LndyYXA2XG4gICAgICAgICAgICAoRXZhbHVhdG9yLmRvX2ludGVyYWN0aXZlX2RpcmVjdGl2ZXMgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICAgICAgIH5vdXRwdXRzOihpbnRlcmFjdGl2ZV9vdXRwdXRzIGxvZ19mb3JtIHQpXG4gICAgICAgICAgICAgICB+c2hhcmluZzp0LnBhdHRlcm5TaGFyaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQpXG4gICAgICAgICAgICB0LmNvbnRhY3RfbWFwIHQuZW52IHQuY291bnRlciAoZ2V0X2dyYXBoIHQpIHQuc3RhdGUgZVxuICAgICAgICAgID4+PSBmdW4gKGUnLCAoZW52JywgKF8sIGdyYXBoJycsIHN0YXRlJykpKSAtPlxuICAgICAgICAgIHQuZW52IDwtIGVudic7XG4gICAgICAgICAgc2V0X2dyYXBoIHQgZ3JhcGgnJztcbiAgICAgICAgICB0LnN0YXRlIDwtIHN0YXRlJztcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiB0LmxvZ19mb3JtIFwiJSVtb2Q6IFtFXSA9ICVpIGRvICVhQC5cIlxuICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXIpXG4gICAgICAgICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLm1vZGlmaWNhdGlvbiB+bm9Db3VudGVyczpmYWxzZSB+ZW52OnQuZW52KSlcbiAgICAgICAgICAgIGUnO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQuaW5wdXRzX2Zvcm0gXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiXG4gICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IHQuY291bnRlcilcbiAgICAgICAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnY6dC5lbnYpKVxuICAgICAgICAgICAgZSc7XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEJ1ZmZlci5jb250ZW50cyBsb2dfYnVmZmVyKSlcbiAgICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyB+cmFuZ2UgbWVzc2FnZSlcbiAgICAgICkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgY29udGludWUgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KVxuICAgIH4ocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcGF1c2VfY29uZGl0aW9uIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBwYXVzZSA9IEtwYXJzZXI0LnN0YW5kYWxvbmVfYm9vbF9leHByIEtsZXhlcjQudG9rZW4gbGV4YnVmIGluXG4gICAgICAgICAgTHd0LndyYXA0XG4gICAgICAgICAgICAoRXZhbHVhdG9yLmdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgfnNoYXJpbmc6dC5wYXR0ZXJuU2hhcmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0KVxuICAgICAgICAgICAgdC5jb250YWN0X21hcCB0LmVudiAoZ2V0X2dyYXBoIHQpIHBhdXNlXG4gICAgICAgICAgPj49IGZ1biAoZW52JywgZ3JhcGgnLCBiJycpIC0+XG4gICAgICAgICAgdC5lbnYgPC0gZW52JztcbiAgICAgICAgICBzZXRfZ3JhcGggdCBncmFwaCc7XG4gICAgICAgICAgdC5wYXVzZV9jb25kaXRpb24gPC0gYicnO1xuICAgICAgICAgICgqbGV0ICgpID1cbiAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF90aW1lXG4gICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX21heF90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF9ldmVudHNcbiAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fbWF4X2V2ZW50c1xuICAgICAgICAgICAgaW4qKVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPiBydW5fc2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnQgZmFsc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyB+cmFuZ2UgbWVzc2FnZSlcbiAgICAgICkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgcHJvZ3Jlc3MgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3MsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudFxuICAgIEx3dC50ID1cbiAgaWdub3JlIHN5c3RlbV9wcm9jZXNzO1xuICBpZ25vcmUgdDtcbiAgbWF0Y2ggdC5lcnJvcl9tZXNzYWdlcyB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QuY2F0Y2hcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9XG4gICAgICAgICAgICAgICAgIENvdW50ZXIuY3VycmVudF90aW1lIHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID1cbiAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgKGZ1biB4IC0+IGludF9vZl9mbG9hdCAoeCAqLiAxMDAuKSlcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci50aW1lX3JhdGlvIHQuY291bnRlcik7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID1cbiAgICAgICAgICAgICAgICAgQ291bnRlci5jdXJyZW50X2V2ZW50IHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9XG4gICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgIChmdW4geCAtPiBpbnRfb2ZfZmxvYXQgKHggKi4gMTAwLikpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuZXZlbnRfcmF0aW8gdC5jb3VudGVyKTtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPVxuICAgICAgICAgICAgICAgICBDb3VudGVyLnRyYWNrZWRfZXZlbnRzIHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA9IHQuaXNfcnVubmluZztcbiAgICAgICAgICAgICB9KSlcbiAgICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcbiAgfCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIHQuZXJyb3JfbWVzc2FnZXMpXG5cbmxldCBvdXRwdXRzIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOlxuICAgIChBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudFxuICAgIEx3dC50ID1cbiAgaWdub3JlIHN5c3RlbV9wcm9jZXNzO1xuICBpZ25vcmUgdDtcbiAgbWF0Y2ggdC5lcnJvcl9tZXNzYWdlcyB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QuY2F0Y2hcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSBTb21lIHQucGxvdDtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSB0LmRpbnM7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gdC5maWxlcztcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IHQuc25hcHNob3RzO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID1cbiAgICAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIHQuaW5wdXRzX2J1ZmZlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9XG4gICAgICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyB0LmxvZ19idWZmZXI7XG4gICAgICAgICAgICAgfSkpXG4gICAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG4gIHwgXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciB0LmVycm9yX21lc3NhZ2VzKVxuXG5sZXQgZWZmaWNpZW5jeSB0ID0gQ291bnRlci5nZXRfZWZmaWNpZW5jeSB0LmNvdW50ZXJcblxubGV0IGdldF9yYXdfdHJhY2UgKHQgOiB0KSA6IHN0cmluZyA9XG4gIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgIChmdW4gb2IgdCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGljdFwiXG4gICAgICAgIChmdW4gb2IgKCkgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIEFnZW50Lmpzb25fZGljdGlvbm5hcnk7XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfY29tbWEgb2I7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgSW5zdGFudGlhdGlvbi5qc29uX2RpY3Rpb25uYXJ5O1xuICAgICAgICAgIEpzb25VdGlsLndyaXRlX2NvbW1hIG9iO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFRyYWNlLlNpbXVsYXRpb25faW5mby5qc29uX2RpY3Rpb25uYXJ5O1xuICAgICAgICAgIEpzb25VdGlsLndyaXRlX2NvbW1hIG9iO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFRyYWNlLmpzb25fZGljdGlvbm5hcnk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JylcbiAgICAgICAgb2IgKCk7XG4gICAgICBKc29uVXRpbC53cml0ZV9jb21tYSBvYjtcbiAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibW9kZWxcIiBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBvYlxuICAgICAgICAoTW9kZWwudG9feW9qc29uIHQuZW52KTtcbiAgICAgIEpzb25VdGlsLndyaXRlX2NvbW1hIG9iO1xuICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJ0cmFjZVwiIEJ1ZmZlci5hZGRfc3RyaW5nIG9iXG4gICAgICAgIChcIltcIiBeIEJ1ZmZlci5jb250ZW50cyB0LnRyYWNlKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXX1cIilcbiAgICB0XG5cbmxldCBnZXRfcmF3X2FzdCB0ID0gWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIHQucGFyc2luZ19jb21waWwpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5jbGFzcyBzaW11bGF0aW9uIChydW50aW1lX3N0YXRlIDogS2FwcGFfZmFjYWRlLnQpXG4gIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6XG4gIEFwaV9lbnZpcm9ubWVudC5zaW11bGF0aW9uID1cbiAgb2JqZWN0XG4gICAgdmFsIG11dGFibGUgX3J1bnRpbWVfc3RhdGUgPSBydW50aW1lX3N0YXRlXG4gICAgdmFsIG11dGFibGUgX3NpbXVsYXRpb25fcGFyYW1ldGVyID0gc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICBtZXRob2QgZ2V0X3J1bnRpbWVfc3RhdGUgKCkgPSBfcnVudGltZV9zdGF0ZVxuXG4gICAgbWV0aG9kIHNldF9ydW50aW1lX3N0YXRlIChydW50aW1lX3N0YXRlIDogS2FwcGFfZmFjYWRlLnQpID1cbiAgICAgIF9ydW50aW1lX3N0YXRlIDwtIHJ1bnRpbWVfc3RhdGVcblxuICAgIG1ldGhvZCBnZXRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKCkgPSBfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcblxuICAgIG1ldGhvZCBzZXRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgKHNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIDogdW5pdCA9XG4gICAgICBfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPC0gc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgZW5kXG5cbmNsYXNzIHByb2plY3QgOiBBcGlfZW52aXJvbm1lbnQucHJvamVjdCA9XG4gIG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIF9zaW11bGF0aW9uID0gTm9uZVxuXG4gICAgdmFsIG11dGFibGUgX3N0YXRlIDogQXBpX2Vudmlyb25tZW50LnBhcnNlX3N0YXRlIG9wdGlvbiBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxuICAgIG1ldGhvZCBnZXRfc2ltdWxhdGlvbiAoKSA9IF9zaW11bGF0aW9uXG4gICAgbWV0aG9kIHVuc2V0X3NpbXVsYXRpb24gKCkgPSBfc2ltdWxhdGlvbiA8LSBOb25lXG5cbiAgICBtZXRob2Qgc2V0X3NpbXVsYXRpb25cbiAgICAgICAgKHNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICAgIChydW50aW1lX3N0YXRlIDogS2FwcGFfZmFjYWRlLnQpID1cbiAgICAgIF9zaW11bGF0aW9uIDwtXG4gICAgICAgIFNvbWVcbiAgICAgICAgICAobmV3IHNpbXVsYXRpb24gcnVudGltZV9zdGF0ZSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgOj4gQXBpX2Vudmlyb25tZW50LnNpbXVsYXRpb24pXG5cbiAgICBtZXRob2Qgc2V0X3BhcnNlX3N0YXRlIChzdGF0ZSA6IEFwaV9lbnZpcm9ubWVudC5wYXJzZV9zdGF0ZSBMd3QudCkgPVxuICAgICAgbGV0ICgpID0gTHd0LmNhbmNlbCBfc3RhdGUgaW5cbiAgICAgIF9zdGF0ZSA8LSAoc3RhdGUgPj49IGZ1biB4IC0+IEx3dC5yZXR1cm4gKFNvbWUgeCkpXG5cbiAgICBtZXRob2QgZ2V0X3BhcnNlX3N0YXRlICgpIDogQXBpX2Vudmlyb25tZW50LnBhcnNlX3N0YXRlIG9wdGlvbiBMd3QudCA9XG4gICAgICBfc3RhdGVcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgIChGcm9tKSBUaGUgQ2FtbFppcCBsaWJyYXJ5ICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDIwMDEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICopXG4oKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFdyaXRlIHVuZWZmaWNpZW50bHkgYnV0IGluIHB1cmUgT0NhbWwgdW5jb21wcmVzc2VkIFpJUCBhcmNoaXZlcyAqKVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nXG5cbmxldCB3cml0ZTEgb2MgbiA9IEJpZ2J1ZmZlci5hZGRfY2hhciBvYyAoQ2hhci51bnNhZmVfY2hyIG4pXG5cbmxldCB3cml0ZTIgb2MgbiA9XG4gIHdyaXRlMSBvYyBuO1xuICB3cml0ZTEgb2MgKG4gbHNyIDgpXG5cbmxldCB3cml0ZTQgb2MgbiA9XG4gIHdyaXRlMiBvYyAoSW50MzIudG9faW50IG4pO1xuICB3cml0ZTIgb2MgKEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCBuIDE2KSlcblxubGV0IHdyaXRlNF9pbnQgb2MgbiA9XG4gIHdyaXRlMiBvYyBuO1xuICB3cml0ZTIgb2MgKG4gbHNyIDE2KVxuXG5sZXQgd3JpdGVzdHJpbmcgb2MgcyA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nIG9jIHNcblxudHlwZSBjb21wcmVzc2lvbl9tZXRob2QgPSBTdG9yZWRcblxudHlwZSBlbnRyeSA9IHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgZXh0cmE6IHN0cmluZztcbiAgY29tbWVudDogc3RyaW5nO1xuICBtZXRoZDogY29tcHJlc3Npb25fbWV0aG9kO1xuICBtdGltZTogZmxvYXQ7XG4gIGNyYzogaW50MzI7XG4gIHVuY29tcHJlc3NlZF9zaXplOiBpbnQ7XG4gIGNvbXByZXNzZWRfc2l6ZTogaW50O1xuICAoKmlzX2RpcmVjdG9yeTogYm9vbDsqKVxuICBmaWxlX29mZnNldDogaW50MzI7XG59XG5cbnR5cGUgb3V0X2ZpbGUgPSB7XG4gIG9mX2ZpbGVuYW1lOiBzdHJpbmc7XG4gIG9mX2NoYW5uZWw6IEJpZ2J1ZmZlci50O1xuICBtdXRhYmxlIG9mX2VudHJpZXM6IGVudHJ5IGxpc3Q7XG4gIG9mX2NvbW1lbnQ6IHN0cmluZztcbn1cblxuKCpsZXQgZmlsZW5hbWVfaXNfZGlyZWN0b3J5IG5hbWUgPVxuICBTdHJpbmcubGVuZ3RoIG5hbWUgPiAwICYmIG5hbWUuW1N0cmluZy5sZW5ndGggbmFtZSAtIDFdID0gJy8nKilcblxuKCogQ29udmVydCBiZXR3ZWVuIFVuaXggZGF0ZXMgYW5kIERPUyBkYXRlcyAqKVxuXG5sZXQgZG9zdGltZV9vZl91bml4dGltZSB0ID1cbiAgbGV0IHRtID0gVW5peC5sb2NhbHRpbWUgdCBpblxuICAoICh0bS5Vbml4LnRtX3NlYyBsc3IgMSkgKyAodG0uVW5peC50bV9taW4gbHNsIDUpICsgKHRtLlVuaXgudG1faG91ciBsc2wgMTEpLFxuICAgIHRtLlVuaXgudG1fbWRheVxuICAgICsgKCh0bS5Vbml4LnRtX21vbiArIDEpIGxzbCA1KVxuICAgICsgKCh0bS5Vbml4LnRtX3llYXIgLSA4MCkgbHNsIDkpIClcblxuKCogT3BlbiBhIFpJUCBmaWxlIGZvciB3cml0aW5nICopXG5cbmxldCBvcGVuX291dCA/KGNvbW1lbnQgPSBcIlwiKSBmaWxlbmFtZSA9XG4gIGlmIFN0cmluZy5sZW5ndGggY29tbWVudCA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKGZpbGVuYW1lLCBcIlwiLCBcImNvbW1lbnQgdG9vIGxvbmdcIikpO1xuICB7XG4gICAgb2ZfZmlsZW5hbWUgPSBmaWxlbmFtZTtcbiAgICBvZl9jaGFubmVsID0gQmlnYnVmZmVyLmNyZWF0ZSA4MTkyO1xuICAgIG9mX2VudHJpZXMgPSBbXTtcbiAgICBvZl9jb21tZW50ID0gY29tbWVudDtcbiAgfVxuXG4oKiBDbG9zZSBhIFpJUCBmaWxlIGZvciB3cml0aW5nLiAgQWRkIGNlbnRyYWwgZGlyZWN0b3J5LiAqKVxuXG5sZXQgd3JpdGVfZGlyZWN0b3J5X2VudHJ5IG9jIGUgPVxuICB3cml0ZTQgb2MgKEludDMyLm9mX2ludCAweDAyMDE0YjUwKTtcbiAgKCogc2lnbmF0dXJlICopXG4gIGxldCB2ZXJzaW9uID1cbiAgICBtYXRjaCBlLm1ldGhkIHdpdGhcbiAgICB8IFN0b3JlZCAtPiAxMFxuICBpblxuICB3cml0ZTIgb2MgdmVyc2lvbjtcbiAgKCogdmVyc2lvbiBtYWRlIGJ5ICopXG4gIHdyaXRlMiBvYyB2ZXJzaW9uO1xuICAoKiB2ZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0ICopXG4gIHdyaXRlMiBvYyA4O1xuICAoKiBmbGFncyAqKVxuICB3cml0ZTIgb2NcbiAgICAobWF0Y2ggZS5tZXRoZCB3aXRoXG4gICAgfCBTdG9yZWQgLT4gMCk7XG4gICgqIG1ldGhvZCAqKVxuICBsZXQgdGltZSwgZGF0ZSA9IGRvc3RpbWVfb2ZfdW5peHRpbWUgZS5tdGltZSBpblxuICB3cml0ZTIgb2MgdGltZTtcbiAgKCogbGFzdCBtb2QgdGltZSAqKVxuICB3cml0ZTIgb2MgZGF0ZTtcbiAgKCogbGFzdCBtb2QgZGF0ZSAqKVxuICB3cml0ZTQgb2MgZS5jcmM7XG4gICgqIENSQzMyICopXG4gIHdyaXRlNF9pbnQgb2MgZS5jb21wcmVzc2VkX3NpemU7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAqKVxuICB3cml0ZTRfaW50IG9jIGUudW5jb21wcmVzc2VkX3NpemU7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmZpbGVuYW1lKTtcbiAgKCogZmlsZW5hbWUgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmV4dHJhKTtcbiAgKCogZXh0cmEgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmNvbW1lbnQpO1xuICAoKiBjb21tZW50IGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogZGlzayBudW1iZXIgc3RhcnQgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGludGVybmFsIGF0dHJpYnV0ZXMgKilcbiAgd3JpdGU0X2ludCBvYyAwO1xuICAoKiBleHRlcm5hbCBhdHRyaWJ1dGVzICopXG4gIHdyaXRlNCBvYyBlLmZpbGVfb2Zmc2V0O1xuICAoKiBvZmZzZXQgb2YgbG9jYWwgaGVhZGVyICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuZmlsZW5hbWU7XG4gICgqIGZpbGVuYW1lICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuZXh0cmE7XG4gICgqIGV4dHJhIGluZm8gKilcbiAgd3JpdGVzdHJpbmcgb2MgZS5jb21tZW50ICgqIGZpbGUgY29tbWVudCAqKVxuXG5sZXQgY2xvc2Vfb3V0IG9maWxlID1cbiAgbGV0IG9jID0gb2ZpbGUub2ZfY2hhbm5lbCBpblxuICBsZXQgc3RhcnRfY2QgPSBCaWdidWZmZXIubGVuZ3RoIG9jIGluXG4gIExpc3QuaXRlciAod3JpdGVfZGlyZWN0b3J5X2VudHJ5IG9jKSAoTGlzdC5yZXYgb2ZpbGUub2ZfZW50cmllcyk7XG4gIGxldCBjZF9zaXplID0gQmlnYnVmZmVyLmxlbmd0aCBvYyAtIHN0YXJ0X2NkIGluXG4gIGxldCBudW1fZW50cmllcyA9IExpc3QubGVuZ3RoIG9maWxlLm9mX2VudHJpZXMgaW5cbiAgaWYgbnVtX2VudHJpZXMgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgXCJcIiwgXCJ0b28gbWFueSBlbnRyaWVzXCIpKTtcbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwNjA1NGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogZGlzayBudW1iZXIgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIG51bWJlciBvZiBkaXNrIHdpdGggY2VudHJhbCBkaXIgKilcbiAgd3JpdGUyIG9jIG51bV9lbnRyaWVzO1xuICAoKiAjIGVudHJpZXMgaW4gdGhpcyBkaXNrICopXG4gIHdyaXRlMiBvYyBudW1fZW50cmllcztcbiAgKCogIyBlbnRyaWVzIGluIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlNF9pbnQgb2MgY2Rfc2l6ZTtcbiAgKCogc2l6ZSBvZiBjZW50cmFsIGRpciAqKVxuICB3cml0ZTRfaW50IG9jIHN0YXJ0X2NkO1xuICAoKiBvZmZzZXQgb2YgY2VudHJhbCBkaXIgKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIG9maWxlLm9mX2NvbW1lbnQpO1xuICAoKiBsZW5ndGggb2YgY29tbWVudCAqKVxuICB3cml0ZXN0cmluZyBvYyBvZmlsZS5vZl9jb21tZW50O1xuICAoKiBjb21tZW50ICopXG4gIEJpZ2J1ZmZlci5jb250ZW50cyBvY1xuXG4oKiBXcml0ZSBhIGxvY2FsIGZpbGUgaGVhZGVyIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgKilcblxubGV0IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBmaWxlbmFtZSA9XG4gIGlmIGxldmVsIDw+IDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImZha2VfemlwIGNhbm5vdCBjb21wcmVzc1wiKSk7XG4gIGlmIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiZmlsZW5hbWUgdG9vIGxvbmdcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGV4dHJhID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImV4dHJhIGRhdGEgdG9vIGxvbmdcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGNvbW1lbnQgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiY29tbWVudCB0b28gbG9uZ1wiKSk7XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgbGV0IHBvcyA9IEJpZ2J1ZmZlci5sZW5ndGggb2MgaW5cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwNDAzNGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICBsZXQgdmVyc2lvbiA9XG4gICAgaWYgbGV2ZWwgPSAwIHRoZW5cbiAgICAgIDEwXG4gICAgZWxzZVxuICAgICAgMjBcbiAgaW5cbiAgd3JpdGUyIG9jIHZlcnNpb247XG4gICgqIHZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgKilcbiAgd3JpdGUyIG9jIDg7XG4gICgqIGZsYWdzICopXG4gIHdyaXRlMiBvY1xuICAgIChpZiBsZXZlbCA9IDAgdGhlblxuICAgICAgIDBcbiAgICAgZWxzZVxuICAgICAgIDgpO1xuICAoKiBtZXRob2QgKilcbiAgbGV0IHRpbWUsIGRhdGUgPSBkb3N0aW1lX29mX3VuaXh0aW1lIG10aW1lIGluXG4gIHdyaXRlMiBvYyB0aW1lO1xuICAoKiBsYXN0IG1vZCB0aW1lICopXG4gIHdyaXRlMiBvYyBkYXRlO1xuICAoKiBsYXN0IG1vZCBkYXRlICopXG4gIHdyaXRlNCBvYyBJbnQzMi56ZXJvO1xuICAoKiBDUkMzMiAtIHRvIGJlIGZpbGxlZCBsYXRlciAqKVxuICB3cml0ZTRfaW50IG9jIDA7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAtIGxhdGVyICopXG4gIHdyaXRlNF9pbnQgb2MgMDtcbiAgKCogdW5jb21wcmVzc2VkIHNpemUgLSBsYXRlciAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpO1xuICAoKiBmaWxlbmFtZSBsZW5ndGggKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGV4dHJhKTtcbiAgKCogZXh0cmEgbGVuZ3RoICopXG4gIHdyaXRlc3RyaW5nIG9jIGZpbGVuYW1lO1xuICAoKiBmaWxlbmFtZSAqKVxuICB3cml0ZXN0cmluZyBvYyBleHRyYTtcbiAgKCogZXh0cmEgaW5mbyAqKVxuICB7XG4gICAgZmlsZW5hbWU7XG4gICAgZXh0cmE7XG4gICAgY29tbWVudDtcbiAgICBtZXRoZCA9IFN0b3JlZDtcbiAgICBtdGltZTtcbiAgICBjcmMgPSBJbnQzMi56ZXJvO1xuICAgIHVuY29tcHJlc3NlZF9zaXplID0gMDtcbiAgICBjb21wcmVzc2VkX3NpemUgPSAwO1xuICAgICgqaXNfZGlyZWN0b3J5ID0gZmlsZW5hbWVfaXNfZGlyZWN0b3J5IGZpbGVuYW1lOyopXG4gICAgZmlsZV9vZmZzZXQgPSBJbnQzMi5vZl9pbnQgcG9zO1xuICB9XG5cbigqIFdyaXRlIGEgZGF0YSBkZXNjcmlwdG9yIGFuZCB1cGRhdGUgdGhlIGVudHJ5ICopXG5cbmxldCBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlIGNyYyBjb21wcl9zaXplIHVuY29tcHJfc2l6ZSBlbnRyeSA9XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwODA3NGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICB3cml0ZTQgb2MgY3JjO1xuICAoKiBDUkMgKilcbiAgd3JpdGU0X2ludCBvYyBjb21wcl9zaXplO1xuICAoKiBjb21wcmVzc2VkIHNpemUgKilcbiAgd3JpdGU0X2ludCBvYyB1bmNvbXByX3NpemU7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplICopXG4gIHtcbiAgICBlbnRyeSB3aXRoXG4gICAgY3JjO1xuICAgIHVuY29tcHJlc3NlZF9zaXplID0gdW5jb21wcl9zaXplO1xuICAgIGNvbXByZXNzZWRfc2l6ZSA9IGNvbXByX3NpemU7XG4gIH1cblxubGV0IHVwZGF0ZV9jcmMgY3JjIGJ1ZiBzdGFydCBsZW4gPSBDcmMzMi5zdHJpbmcgfmNyYyBidWYgc3RhcnQgbGVuXG5cbigqIEFkZCBhbiBlbnRyeSB3aXRoIHRoZSBjb250ZW50cyBvZiBhIHN0cmluZyAqKVxuXG5sZXQgYWRkX2VudHJ5IGRhdGEgb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpID8obGV2ZWwgPSAwKVxuICAgID8obXRpbWUgPSBVbml4LnRpbWUgKCkpIG5hbWUgPVxuICBsZXQgZSA9IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBuYW1lIGluXG4gIGxldCBjcmMgPSB1cGRhdGVfY3JjIEludDMyLnplcm8gZGF0YSAwIChTdHJpbmcubGVuZ3RoIGRhdGEpIGluXG4gIGxldCBjb21wcl9zaXplID1cbiAgICBtYXRjaCBsZXZlbCB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBCaWdidWZmZXIuYWRkX3N1YnN0cmluZyBvZmlsZS5vZl9jaGFubmVsIGRhdGEgMCAoU3RyaW5nLmxlbmd0aCBkYXRhKTtcbiAgICAgIFN0cmluZy5sZW5ndGggZGF0YVxuICAgIHwgXyAtPiByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKVxuICBpblxuICBsZXQgZScgPSBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlIGNyYyBjb21wcl9zaXplIChTdHJpbmcubGVuZ3RoIGRhdGEpIGUgaW5cbiAgb2ZpbGUub2ZfZW50cmllcyA8LSBlJyA6OiBvZmlsZS5vZl9lbnRyaWVzXG5cbigqXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYW4gaW4gY2hhbm5lbCAqKVxuXG5sZXQgY29weV9jaGFubmVsX3RvX2VudHJ5IGljIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/KGxldmVsID0gMCkgPyhtdGltZSA9IFVuaXgudGltZSgpKSBuYW1lID1cbiAgbGV0IGUgPSBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgbmFtZSBpblxuICBsZXQgY3JjID0gcmVmIEludDMyLnplcm8gaW5cbiAgbGV0IChjb21wcl9zaXplLCB1bmNvbXByX3NpemUpID1cbiAgICBtYXRjaCBsZXZlbCB3aXRoXG4gICAgICAwIC0+XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNDA5NiBpblxuICAgICAgICBsZXQgcmVjIGNvcHkgc3ogPVxuICAgICAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIDAgKEJ5dGVzLmxlbmd0aCBidWYpIGluXG4gICAgICAgICAgaWYgciA9IDAgdGhlbiBzeiBlbHNlIGJlZ2luXG4gICAgICAgICAgICBjcmMgOj0gdXBkYXRlX2NyYyAhY3JjIGJ1ZiAwIHI7XG4gICAgICAgICAgICBCaXRCdWZmZXIuYWRkX3N1YnN0cmluZyBvZmlsZS5vZl9jaGFubmVsIGJ1ZiAwIHI7XG4gICAgICAgICAgICBjb3B5IChzeiArIHIpXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgIGxldCBzaXplID0gY29weSAwIGluXG4gICAgICAgIChzaXplLCBzaXplKVxuICAgIHwgXyAtPiByYWlzZSAoRXJyb3Iob2ZpbGUub2ZfZmlsZW5hbWUsIG5hbWUsIFwiY29tcHJlc3Npb24gZXJyb3JcIikpIGluXG4gIGxldCBlJyA9IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgIWNyYyBjb21wcl9zaXplIHVuY29tcHJfc2l6ZSBlIGluXG4gIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYSBmaWxlICopXG5cbmxldCBjb3B5X2ZpbGVfdG9fZW50cnkgaW5maWxlbmFtZSBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/KGxldmVsID0gMCkgP210aW1lIG5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBpbmZpbGVuYW1lIGluXG4gIGxldCBtdGltZScgPVxuICAgIG1hdGNoIG10aW1lIHdpdGhcbiAgICAgIFNvbWUgdCAtPiBtdGltZVxuICAgIHwgTm9uZSAtPlxuICAgICAgICB0cnkgU29tZSgoVW5peC5zdGF0IGluZmlsZW5hbWUpLlVuaXguc3RfbXRpbWUpXG4gICAgICAgIHdpdGggVW5peC5Vbml4X2Vycm9yKF8sXyxfKSAtPiBOb25lIGluXG4gIHRyeVxuICAgIGNvcHlfY2hhbm5lbF90b19lbnRyeSBpYyBvZmlsZSB+ZXh0cmEgfmNvbW1lbnQgfmxldmVsID9tdGltZTptdGltZScgbmFtZTtcbiAgICBQZXJ2YXNpdmVzLmNsb3NlX2luIGljXG4gIHdpdGggeCAtPlxuICAgIFBlcnZhc2l2ZXMuY2xvc2VfaW4gaWM7IHJhaXNlIHhcbiopXG5cbigqIEFkZCBhbiBlbnRyeSB3aG9zZSBjb250ZW50IHdpbGwgYmUgcHJvZHVjZWQgYnkgdGhlIGNhbGxlciAqKVxuXG5sZXQgYWRkX2VudHJ5X2dlbmVyYXRvciBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIikgPyhsZXZlbCA9IDApXG4gICAgPyhtdGltZSA9IFVuaXgudGltZSAoKSkgbmFtZSA9XG4gIGxldCBlID0gYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIG5hbWUgaW5cbiAgbGV0IGNyYyA9IHJlZiBJbnQzMi56ZXJvIGluXG4gIGxldCBjb21wcl9zaXplID0gcmVmIDAgaW5cbiAgbGV0IHVuY29tcHJfc2l6ZSA9IHJlZiAwIGluXG4gIGxldCBmaW5pc2hlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY2hlY2sgKCkgPVxuICAgIGlmICFmaW5pc2hlZCB0aGVuXG4gICAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImVudHJ5IGFscmVhZHkgZmluaXNoZWRcIikpXG4gIGluXG4gIGxldCBmaW5pc2ggKCkgPVxuICAgIGZpbmlzaGVkIDo9IHRydWU7XG4gICAgbGV0IGUnID0gYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSAhY3JjICFjb21wcl9zaXplICF1bmNvbXByX3NpemUgZSBpblxuICAgIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuICBpblxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgMCAtPlxuICAgICggKGZ1biBidWYgcG9zIGxlbiAtPlxuICAgICAgICBjaGVjayAoKTtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9zdWJieXRlcyBvZmlsZS5vZl9jaGFubmVsIGJ1ZiBwb3MgbGVuO1xuICAgICAgICBjb21wcl9zaXplIDo9ICFjb21wcl9zaXplICsgbGVuO1xuICAgICAgICB1bmNvbXByX3NpemUgOj0gIXVuY29tcHJfc2l6ZSArIGxlbiksXG4gICAgICBmdW4gKCkgLT5cbiAgICAgICAgY2hlY2sgKCk7XG4gICAgICAgIGZpbmlzaCAoKSApXG4gIHwgXyAtPiByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIGhhbmRsZXIgPVxuICBtYXRjaCBzaW11bGF0aW9uIHdpdGhcbiAgfCBTb21lIChfLCBzaW11bGF0aW9uKSAtPiBoYW5kbGVyIHNpbXVsYXRpb25cbiAgfCBOb25lIC0+XG4gICAgbGV0IG0gPSBcIk5vIHNpbXVsYXRpb24gYXZhaWxhYmxlXCIgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG0pXG5cbmxldCBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvblxuICAgIH4oc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpXG4gICAgfihwcm9qZWN0aW9uIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0IC0+ICdhIEFwaS5yZXN1bHQpIDpcbiAgICAnYSBBcGkubHd0X3Jlc3VsdCA9XG4gIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgS2FwcGFfZmFjYWRlLm91dHB1dHMgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOlxuICAgICAgICAgICAgICAoZnVuIChzaW11bGF0aW9uX2RldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAocHJvamVjdGlvbiBzaW11bGF0aW9uX2RldGFpbClcbiAgICAgICAgICAgICAgICA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCAtPiAnYSBBcGkubHd0X3Jlc3VsdClcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcnMpKSlcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX2ZpbGVfbGluZSAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fZmlsZV9saW5lIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmlsZV9saW5lcyA6IHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQgPVxuICAgICAgICBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX2xpbmVfY2F0YWxvZyA6IHN0cmluZyBsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgZnN0IChNb2RzLlN0cmluZ01hcC5iaW5kaW5ncyBmaWxlX2xpbmVzKVxuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIGZpbGVfbGluZV9jYXRhbG9nXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBnZXRfZmlsZV9saW5lIH5maWxlX2xpbmVfaWRcbiAgICAgICAgKHN0YXR1cyA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmaWxlX2xpbmVfbGlzdCA9IHN0YXR1cy5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIGluXG4gICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBmaWxlX2xpbmVfaWQgZmlsZV9saW5lX2xpc3Qgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCJpZCAlcyBub3QgZm91bmRcIiBmaWxlX2xpbmVfaWQgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG4gICAgICB8IFNvbWUgbGluZXMgLT4gUmVzdWx0X3V0aWwub2sgKExpc3QucmV2IGxpbmVzKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5maWxlX2xpbmVfY2F0YWxvZyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX2ZpbGVfbGluZVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSAoZmlsZV9saW5lX2lkIDogc3RyaW5nKVxuICAgICAgICA6IHN0cmluZyBsaXN0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfZmlsZV9saW5lIH5maWxlX2xpbmVfaWQpXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfZmx1eF9tYXAgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBpbmZvX2ZsdXhfbWFwIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluX2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmx1eF9tYXBfY2F0YWxvZyA9XG4gICAgICAgIExpc3QubWFwIGZzdCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGluc1xuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIGZsdXhfbWFwX2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9mbHV4X21hcCAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IGZsdXhfbWFwc19saXN0ID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgaW5cbiAgICAgIHRyeSBSZXN1bHRfdXRpbC5vayAoTGlzdC5hc3NvYyBmbHV4X21hcF9pZCBmbHV4X21hcHNfbGlzdClcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCJpZCAlcyBub3QgZm91bmRcIiBmbHV4X21hcF9pZCBpblxuICAgICAgICBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZGluIDogQXBpX3R5cGVzX3QuZGluX2NhdGFsb2cgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19mbHV4X21hcFxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfZmx1eF9tYXAgZmx1eF9tYXBfaWQpXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfbG9nX21lc3NhZ2UgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuICA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBsb2dfbWVzc2FnZSAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LmxvZ19tZXNzYWdlIEFwaS5yZXN1bHQgPVxuICAgICAgUmVzdWx0X3V0aWwub2sgZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgICAgIDogQXBpX3R5cGVzX3QubG9nX21lc3NhZ2UgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzIH5wcm9qZWN0aW9uOnNlbGYjbG9nX21lc3NhZ2VcbiAgZW5kXG5cbmxldCBzZWxlY3Rfb2JzZXJ2YWJsZXMgKHBsb3RfbGltaXQgOiBBcGlfdHlwZXNfdC5wbG90X2xpbWl0KVxuICAgIChwbG90IDogQXBpX3R5cGVzX3QucGxvdCkgOiBBcGlfdHlwZXNfdC5wbG90ID1cbiAgbGV0IHBsb3RfdGltZV9zZXJpZXMgPSBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCBwbG90LkRhdGEucGxvdF9zZXJpZXMgaW5cbiAgbGV0IHBsb3RfZGV0YWlsX3NpemUgPSBBcnJheS5sZW5ndGggcGxvdF90aW1lX3NlcmllcyBpblxuICBsZXQgcGxvdF9saW1pdF9vZmZzZXQgPSBwbG90X2xpbWl0LkFwaV90eXBlc190LnBsb3RfbGltaXRfb2Zmc2V0IGluXG4gIGxldCBwbG90X2xpbWl0X3BvaW50cyA9IHBsb3RfbGltaXQuQXBpX3R5cGVzX3QucGxvdF9saW1pdF9wb2ludHMgaW5cbiAgbGV0IHN0YXJ0LCBsZW4gPVxuICAgIG1hdGNoIHBsb3RfbGltaXRfb2Zmc2V0LCBwbG90X2xpbWl0X3BvaW50cyB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IDAsIHBsb3RfZGV0YWlsX3NpemVcbiAgICB8IFNvbWUgb2Zmc2V0LCBOb25lIC0+IG9mZnNldCwgbWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBvZmZzZXQpXG4gICAgfCBOb25lLCBTb21lIG5iIC0+IG1heCAwIChwbG90X2RldGFpbF9zaXplIC0gbmIpLCBtaW4gbmIgcGxvdF9kZXRhaWxfc2l6ZVxuICAgIHwgU29tZSBvZmZzZXQsIFNvbWUgbmIgLT4gb2Zmc2V0LCBtaW4gbmIgKG1heCAwIChwbG90X2RldGFpbF9zaXplIC0gb2Zmc2V0KSlcbiAgaW5cbiAgbGV0IG5ld19wbG90X3RpbWVfc2VyaWVzID1cbiAgICBMaXN0LnJldiAoQXJyYXkudG9fbGlzdCAoQXJyYXkuc3ViIHBsb3RfdGltZV9zZXJpZXMgc3RhcnQgbGVuKSlcbiAgaW5cbiAgeyBwbG90IHdpdGggRGF0YS5wbG90X3NlcmllcyA9IG5ld19wbG90X3RpbWVfc2VyaWVzIH1cblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX3Bsb3QgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBnZXRfcGxvdCAocGxvdF9saW1pdCA6IEFwaV90eXBlc190LnBsb3RfcGFyYW1ldGVyKVxuICAgICAgICAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnBsb3QgQXBpLnJlc3VsdCA9XG4gICAgICBtYXRjaCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICB8IFNvbWUgcGxvdCAtPiBSZXN1bHRfdXRpbC5vayAoc2VsZWN0X29ic2VydmFibGVzIHBsb3RfbGltaXQgcGxvdClcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA6IHN0cmluZyA9IFwicGxvdCBub3QgYXZhaWxhYmxlXCIgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5wbG90IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfcGxvdCBwbG90X3BhcmFtZXRlcilcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9zbmFwc2hvdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fc25hcHNob3QgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nIEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IHNuYXBzaG90cyA9IGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgaW5cbiAgICAgIGxldCBzbmFwc2hvdF9jYXRhbG9nID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuZm9sZCAoZnVuIHggXyBhY2MgLT4geCA6OiBhY2MpIHNuYXBzaG90cyBbXVxuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIHNuYXBzaG90X2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZClcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBzbmFwc2hvdF9saXN0ID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyBpblxuICAgICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gc25hcHNob3RfaWQgc25hcHNob3RfbGlzdCB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiBSZXN1bHRfdXRpbC5vayB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIHNuYXBzaG90X2lkIGluXG4gICAgICAgIEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2cgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgKGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZyBBcGkubHd0X3Jlc3VsdClcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICAoZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfc25hcHNob3Qgc25hcHNob3RfaWQpXG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3QgQXBpLmx3dF9yZXN1bHQpXG4gIGVuZFxuXG5jbGFzcyBtYW5hZ2VyX3NpbXVsYXRpb24gKHByb2plY3QgOiBBcGlfZW52aXJvbm1lbnQucHJvamVjdClcbiAgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA6XG4gIEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24gPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgc2ltdWxhdGlvbiA9IE5vbmVcblxuICAgIG1ldGhvZCBzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIHBhcnNpbmdfY29tcGlsIG92ZXJ3cml0ZXMgPVxuICAgICAgKCogVE9ETzogdW5kZXJzdGFuZCB3aHkgdGhpcyBsb2dpYyA6IHdoZXJlIGlzIHRoZSBjYWxsIHRvIGNoZWNrIGZvciBtb2RpZmllZCBmaWxlcz8gKilcbiAgICAgIGxldCBoYXJha2lyaSwgXyA9IEx3dC50YXNrICgpIGluXG4gICAgICBMd3QucGlja1xuICAgICAgICBbXG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBhcnNlIH5wYXR0ZXJuU2hhcmluZyBwYXJzaW5nX2NvbXBpbCBvdmVyd3JpdGVzXG4gICAgICAgICAgICBzeXN0ZW1fcHJvY2VzcztcbiAgICAgICAgICAoIGhhcmFraXJpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgXCJQYXJzZSBjYW5jZWxsZWQgYnkgbW9kaWZpZWQgZmlsZXNcIiBdXG4gICAgICAgICAgICB8PiBMd3QucmV0dXJuICk7XG4gICAgICAgIF1cbiAgICAgIHw+IHByb2plY3Qjc2V0X3BhcnNlX3N0YXRlO1xuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjc2ltdWxhdGlvbl9zdG9wID4+PSBmdW4gXyAtPlxuICAgICAgc2ltdWxhdGlvbiA8LSBOb25lO1xuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydFxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIH5yZXN1bHRfY29kZTpgQ29uZmxpY3RcbiAgICAgICAgICAgICBcIkEgc2ltdWxhdGlvbiBhbHJlYWR5IGV4aXN0c1wiKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIGZyb20gQXBpX2Vudmlyb25tZW50ICopXG4gICAgICAgIHByb2plY3QjZ2V0X3BhcnNlX3N0YXRlICgpID4+PSAoIGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICBcIkNhbm5vdCBzdGFydCBzaW11bGF0aW9uOiBQYXJzZSBub3QgZG9uZVwiKVxuICAgICAgICB8IFNvbWUgKHBhcnNlIDogQXBpX2Vudmlyb25tZW50LnBhcnNlX3N0YXRlKSAtPlxuICAgICAgICAgIHBhcnNlXG4gICAgICAgICAgfD4gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgfm9rOihmdW4gKGZhY2FkZSA6IEthcHBhX2ZhY2FkZS50KSAtPlxuICAgICAgICAgICAgICAgICBLYXBwYV9mYWNhZGUuc3RhcnQgfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgfnBhcmFtZXRlcjpzaW11bGF0aW9uX3BhcmFtZXRlciB+dDpmYWNhZGVcbiAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKHNpbXVsYXRpb25fc2VlZCA6IGludCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBzZXQgc2ltdWxhdGlvbiBzdGF0ZSAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl93aXRoX3NlZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uX3BhcmFtZXRlciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25fc2VlZCA9IFNvbWUgc2ltdWxhdGlvbl9zZWVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbiA8LVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAoc2ltdWxhdGlvbl9wYXJhbWV0ZXJfd2l0aF9zZWVkLCBmYWNhZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICgqIHJldHVybiBzaW11bGF0aW9uIGFydGlmYWN0IHdpdGggc2VlZCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICB8PiBSZXN1bHRfdXRpbC5vayB8PiBMd3QucmV0dXJuKVxuICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcnMpKSlcbiAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcnMpKSApXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBtYXRjaCBzaW11bGF0aW9uIHdpdGhcbiAgICAgIHwgU29tZSAocGFyYW1ldGVyLCBfKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBwYXJhbWV0ZXIpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gPSBcIk5vIHNpbXVsYXRpb24gYXZhaWxhYmxlXCIgaW5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcmF3X3RyYWNlIDogc3RyaW5nIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChLYXBwYV9mYWNhZGUuZ2V0X3Jhd190cmFjZSB0KSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9vdXRwdXRzX3ppcCA9XG4gICAgICBsZXQgYWRkX3NuYXBzaG90IGZpbGUgZmlsZW5hbWUgbmFtZSBzbmFwc2hvdCA9XG4gICAgICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIFwiLmRvdFwiIHRoZW5cbiAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIlxuICAgICAgICAgICAgICAgKERhdGEucHJpbnRfZG90X3NuYXBzaG90ID91dWlkOk5vbmUpXG4gICAgICAgICAgICAgICBzbmFwc2hvdClcbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gbmFtZSlcbiAgICAgICAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAoRGF0YS5zdHJpbmdfb2Zfc25hcHNob3QgP2xlbjpOb25lIHNuYXBzaG90KVxuICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmFtZScgPSBUb29scy5jaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBcIi5rYVwiIGluXG4gICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgKERhdGEucHJpbnRfc25hcHNob3QgP3V1aWQ6Tm9uZSkgc25hcHNob3QpXG4gICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUnKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGFkZF9kaW4gZmlsZSBmaWxlbmFtZSAoZGluX25hbWUsIGZsdXgpID1cbiAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAoaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmh0bWxcIiB0aGVuXG4gICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIERhdGEucHJpbnRfaHRtbF9kaW4gZmx1eFxuICAgICAgICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgICAgICAgIERhdGEuc3RyaW5nX29mX2RpbiBmbHV4XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgKERhdGEucHJpbnRfZG90X2RpbiA/dXVpZDpOb25lKSBmbHV4KVxuICAgICAgICAgIGZpbGVcbiAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIGRpbl9uYW1lKVxuICAgICAgaW5cbiAgICAgIGxldCBwcm9qZWN0aW9uIHQgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBcInNpbXVsYXRpb25fb3V0cHV0c1wiIGluXG4gICAgICAgICAgbGV0IGZpbGUgPSBGYWtlemlwLm9wZW5fb3V0IChmaWxlbmFtZSBeIFwiLnppcFwiKSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeSB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyBmaWxlXG4gICAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL2lucHV0cy5rYVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5IHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIGZpbGVcbiAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvbG9nLnR4dFwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIG1hdGNoIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBwbG90IC0+XG4gICAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAgICAgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjpmYWxzZSBwbG90KVxuICAgICAgICAgICAgICAgIGZpbGUgKGZpbGVuYW1lIF4gXCIvZGF0YS5jc3ZcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gbmFtZSBjb250ZW50IC0+XG4gICAgICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiXFxuXCIgKExpc3QucmV2IGNvbnRlbnQpKVxuICAgICAgICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKSlcbiAgICAgICAgICAgICAgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTGlzdC5pdGVyIChhZGRfZGluIGZpbGUgZmlsZW5hbWUpXG4gICAgICAgICAgICAgIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGluc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgKGFkZF9zbmFwc2hvdCBmaWxlIGZpbGVuYW1lKVxuICAgICAgICAgICAgICB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IEZha2V6aXAuY2xvc2Vfb3V0IGZpbGUgaW5cbiAgICAgICAgICBSZXN1bHRfdXRpbC5vayBvdXRcbiAgICAgICAgd2l0aCBGYWtlemlwLkVycm9yIChfLCBmLCBlKSAtPlxuICAgICAgICAgIEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgKFwiWmlwIGVycm9yIGluIFwiIF4gZiBeIFwiOiBcIiBeIGUpXG4gICAgICBpblxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzIH5wcm9qZWN0aW9uXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXVzZSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBhdXNlIH5zeXN0ZW1fcHJvY2VzcyB+dCA+Pj0gZnVuIF8gLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzaW11bGF0aW9uX3N0b3AgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5zdG9wIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX21zZ3MgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKHNpbXVsYXRpb25fcGVydHVyYmF0aW9uIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pXG4gICAgICAgIDogc3RyaW5nIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5wZXJ0dXJiYXRpb24gfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgICB+cGVydHVyYmF0aW9uOnNpbXVsYXRpb25fcGVydHVyYmF0aW9uXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBzIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHMpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX21zZ3MgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jb250aW51ZSAocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHRcbiAgICAgICAgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLmNvbnRpbnVlIH5zeXN0ZW1fcHJvY2VzcyB+dCB+cGF1c2VfY29uZGl0aW9uXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnByb2dyZXNzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcHJvZ3Jlc3MgLT5cbiAgICAgICAgICAgICAgICAgIEthcHBhX2ZhY2FkZS5vdXRwdXRzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIG91dHB1dHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcGlfZGF0YS5hcGlfc2ltdWxhdGlvbl9zdGF0dXMgcHJvZ3Jlc3Mgb3V0cHV0cykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2dzIGVycm9ycykpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX21zZ3MgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9lZmZpY2llbmN5ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChLYXBwYV9mYWNhZGUuZWZmaWNpZW5jeSB0KSkpXG5cbiAgICBpbmhlcml0IG1hbmFnZXJfZmlsZV9saW5lIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2ZsdXhfbWFwIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2xvZ19tZXNzYWdlIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX3Bsb3Qgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfc25hcHNob3Qgc3lzdGVtX3Byb2Nlc3NcbiAgZW5kXG5cbmNsYXNzIG1hbmFnZXIgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA6XG4gICgqIGdvb2Qgb2xkIGNha2UgcGF0dGVybiAqKVxuICBBcGkubWFuYWdlcl9zaW11bGF0aW9uID1cbiAgbGV0IHByb2plY3QgPSBuZXcgRW52aXJvbm1lbnRfbWVtb3J5LnByb2plY3QgaW5cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBtYW5hZ2VyX3NpbXVsYXRpb24gcHJvamVjdCBzeXN0ZW1fcHJvY2Vzc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCBvbl9tZXNzYWdlIChtYW5hZ2VyIDogQXBpLm1hbmFnZXJfc2ltdWxhdGlvbilcbiAgICAocG9zdF9tZXNzYWdlIDogc3RyaW5nIC0+IHVuaXQgTHd0LnQpICh0ZXh0X21lc3NhZ2UgOiBzdHJpbmcpIDogdW5pdCBMd3QudCA9XG4gIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgTXBpX21lc3NhZ2Vfai5tZXNzYWdlX29mX3N0cmluZyBNcGlfbWVzc2FnZV9qLnJlYWRfcmVxdWVzdCB0ZXh0X21lc3NhZ2VcbiAgaW5cbiAgbGV0IGhhbmRsZXIgOlxuICAgICAgICAnYS5cbiAgICAgICAgKCdhIC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2VfY29udGVudCkgLT4gJ2EgQXBpLnJlc3VsdCAtPiB1bml0IEx3dC50ID1cbiAgIGZ1biBwYWNrIHJlc3VsdCAtPlxuICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAge1xuICAgICAgICBNcGlfbWVzc2FnZV9qLmlkID0gbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmlkO1xuICAgICAgICBNcGlfbWVzc2FnZV9qLmRhdGEgPSBSZXN1bHRfdXRpbC5tYXAgcGFjayByZXN1bHQ7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdGV4dCA6IHN0cmluZyA9XG4gICAgICBNcGlfbWVzc2FnZV9qLnN0cmluZ19vZl9tZXNzYWdlIE1waV9tZXNzYWdlX2oud3JpdGVfcmVzcG9uc2UgbWVzc2FnZVxuICAgIGluXG4gICAgcG9zdF9tZXNzYWdlIHRleHRcbiAgaW5cbiAgbWF0Y2ggbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmRhdGEgd2l0aFxuICB8IGBTaW11bGF0aW9uTG9hZCBBcGlfdHlwZXNfdC57IHBhdHRlcm5fc2hhcmluZzsgYXN0OyB2YXJpYWJsZV9vdmVyd3JpdHRlbiB9XG4gICAgLT5cbiAgICBtYW5hZ2VyI3NlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVybl9zaGFyaW5nIGFzdCB2YXJpYWJsZV9vdmVyd3JpdHRlblxuICAgID4+PSBoYW5kbGVyIChmdW4gKCkgLT4gYFNpbXVsYXRpb25Mb2FkKVxuICB8IGBTaW11bGF0aW9uQ29udGludWUgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY29udGludWUgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBTaW11bGF0aW9uQ29udGludWUpXG4gIHwgYFNpbXVsYXRpb25EZWxldGUgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGVsZXRlID4+PSBoYW5kbGVyIChmdW4gKCkgLT4gYFNpbXVsYXRpb25EZWxldGUpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfaWQgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSBmaWxlX2xpbmVfaWRcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiBkaW5faWQgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2RpbiBkaW5faWRcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbERJTiByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9sb2dfbWVzc2FnZVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3RfcGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90IHBsb3RfcGFyYW1ldGVyXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxQbG90IHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHNuYXBzaG90X2lkIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCBzbmFwc2hvdF9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uSW5mbyAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uSW5mbyByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkVmZmljaWVuY3kgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2RpblxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvblBhcmFtZXRlciByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25UcmFjZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9yYXdfdHJhY2VcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvblRyYWNlIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fb3V0cHV0c196aXBcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbk91dHB1dHNaaXAgKEJhc2U2NC5lbmNvZGUgcmVzdWx0KSlcbiAgfCBgU2ltdWxhdGlvblBhdXNlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3BhdXNlID4+PSBoYW5kbGVyIChmdW4gKCkgLT4gYFNpbXVsYXRpb25QYXVzZSlcbiAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvbiAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICA+Pj0gaGFuZGxlciAoZnVuIHMgLT4gYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gcylcbiAgfCBgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3N0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25TdGFydCByZXN1bHQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5leGNlcHRpb24gQmFkUmVzcG9uc2Ugb2YgTXBpX21lc3NhZ2Vfai5yZXNwb25zZV9jb250ZW50XG5cbmNsYXNzIHR5cGUgdmlydHVhbCBtYW5hZ2VyX3NpbXVsYXRpb25fbXNnX3R5cGUgPSBvYmplY3RcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBtZXNzYWdlIDpcbiAgICBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuXG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc2ltdWxhdGlvblxuZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9zaW11bGF0aW9uX21zZyAoKSA6IG1hbmFnZXJfc2ltdWxhdGlvbl9tc2dfdHlwZSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIG1lc3NhZ2VcbiAgICAgICAgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVybl9zaGFyaW5nIGFzdCB2YXJpYWJsZV9vdmVyd3JpdHRlblxuICAgICAgICA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlXG4gICAgICAgIChgU2ltdWxhdGlvbkxvYWRcbiAgICAgICAgICBBcGlfdHlwZXNfdC57IHBhdHRlcm5fc2hhcmluZzsgYXN0OyB2YXJpYWJsZV9vdmVyd3JpdHRlbiB9KVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkxvYWQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NvbnRpbnVlIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpIDogdW5pdCBBcGkubHd0X3Jlc3VsdFxuICAgICAgICA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uQ29udGludWUgcGF1c2VfY29uZGl0aW9uKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSAoZmlsZV9saW5lX2lkIDogc3RyaW5nKVxuICAgICAgICA6IHN0cmluZyBsaXN0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2xpc3QgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmlsZV9saW5lX2xpc3QpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9kaW4gKGZsdXhfbWFwX2lkIDogQXBpX3R5cGVzX3QuZGluX2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LmRpbiBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsRElOIGZsdXhfbWFwX2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiBmbHV4X21hcCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmbHV4X21hcClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgICAgIDogQXBpX3R5cGVzX2oubG9nX21lc3NhZ2UgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgbG9nX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgbG9nX21lc3NhZ2UpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9wbG90IChwbG90X3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnBsb3RfcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc19qLnBsb3QgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCBwbG90IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHBsb3QpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfai5zbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zbmFwc2hvdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc25hcHNob3QpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uSW5mb1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkluZm8gc2ltdWxhdGlvbl9zdGF0dXMgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9zdGF0dXMpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgOiBDb3VudGVyLkVmZmljaWVuY3kudCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSBlZmZpY2llbmN5IC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGVmZmljaWVuY3kpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgICAgIDogQXBpX3R5cGVzX2ouZmlsZV9saW5lX2NhdGFsb2cgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIGluZm8gLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gOiBBcGlfdHlwZXNfai5kaW5fY2F0YWxvZyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiBpbmZvIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGluZm8pXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zbmFwc2hvdF9jYXRhbG9nIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCBpbmZvIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGluZm8pXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9yYXdfdHJhY2UgOiBzdHJpbmcgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9vdXRwdXRzX3ppcCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCByZXN1bHQgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEJhc2U2NC5kZWNvZGUgcmVzdWx0KSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIHJlc3VsdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgICAgOiBzdHJpbmcgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gcyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydFxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2FydGlmYWN0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX2lkIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNpbXVsYXRpb25faWQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcbiAgZW5kXG5cbm1vZHVsZSBJbnRNYXAgPSBNb2RzLkludE1hcFxuXG50eXBlIGNvbnRleHQgPSB7IG1haWxib3hlczogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudSBJbnRNYXAudDsgaWQ6IGludCB9XG5cbmNsYXNzIHR5cGUgdmlydHVhbCBtYW5hZ2VyX3NpbXVsYXRpb25fbXBpID0gb2JqZWN0XG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc2ltdWxhdGlvblxuICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHNsZWVwIDogZmxvYXQgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcbiAgbWV0aG9kIHByaXZhdGUgcmVjZWl2ZSA6IHN0cmluZyAtPiB1bml0XG4gIG1ldGhvZCBwcml2YXRlIHNpbV9pc19jb21wdXRpbmcgOiBib29sXG4gIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5lbmRcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5wb3N0ICgpIDogbWFuYWdlcl9zaW11bGF0aW9uX21waSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IG1hbmFnZXJfc2ltdWxhdGlvbl9tc2cgKClcbiAgICB2YWwgbXV0YWJsZSBjb250ZXh0ID0geyBtYWlsYm94ZXMgPSBJbnRNYXAuZW1wdHk7IGlkID0gMCB9XG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBzbGVlcCA6IGZsb2F0IC0+IHVuaXQgTHd0LnRcbiAgICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuXG4gICAgbWV0aG9kIHByaXZhdGUgcmVjZWl2ZSAocmVzcG9uc2VfdGV4dCA6IHN0cmluZykgPVxuICAgICAgbGV0IG1lc3NhZ2UgOiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgICAgIE1waV9tZXNzYWdlX2oubWVzc2FnZV9vZl9zdHJpbmcgTXBpX21lc3NhZ2Vfai5yZWFkX3Jlc3BvbnNlXG4gICAgICAgICAgcmVzcG9uc2VfdGV4dFxuICAgICAgaW5cbiAgICAgIG1hdGNoIEludE1hcC5wb3AgbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmlkIGNvbnRleHQubWFpbGJveGVzIHdpdGhcbiAgICAgIHwgU29tZSB2YWx1ZSwgbWFpbGJveGVzIC0+XG4gICAgICAgIGxldCAoKSA9IGNvbnRleHQgPC0geyBjb250ZXh0IHdpdGggbWFpbGJveGVzIH0gaW5cbiAgICAgICAgTHd0Lndha2V1cCB2YWx1ZSBtZXNzYWdlLk1waV9tZXNzYWdlX2ouZGF0YVxuICAgICAgfCBOb25lLCBtYWlsYm94ZXMgLT4gY29udGV4dCA8LSB7IGNvbnRleHQgd2l0aCBtYWlsYm94ZXMgfVxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSAocmVxdWVzdCA6IE1waV9tZXNzYWdlX2oucmVxdWVzdClcbiAgICAgICAgOiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC50ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgbGV0ICgpID0gY29udGV4dCA8LSB7IGNvbnRleHQgd2l0aCBpZCA9IGNvbnRleHQuaWQgKyAxIH0gaW5cbiAgICAgICAgbGV0IG1lc3NhZ2UgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICAgICAgICB7IE1waV9tZXNzYWdlX2ouaWQgPSBjb250ZXh0LmlkOyBNcGlfbWVzc2FnZV9qLmRhdGEgPSByZXF1ZXN0IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1lc3NhZ2VfdGV4dCA6IHN0cmluZyA9XG4gICAgICAgICAgTXBpX21lc3NhZ2Vfai5zdHJpbmdfb2ZfbWVzc2FnZSBNcGlfbWVzc2FnZV9qLndyaXRlX3JlcXVlc3QgbWVzc2FnZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3N0IG1lc3NhZ2VfdGV4dCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGNvbnRleHQgPC1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29udGV4dCB3aXRoXG4gICAgICAgICAgICAgIG1haWxib3hlcyA9IEludE1hcC5hZGQgY29udGV4dC5pZCBmZWVkZXIgY29udGV4dC5tYWlsYm94ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIHJlc3VsdFxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgXCJLYXNpbSBoYXMgZGllZFwiKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgc2ltX2lzX2NvbXB1dGluZyA9IG5vdCAoSW50TWFwLmlzX2VtcHR5IGNvbnRleHQubWFpbGJveGVzKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIFlvanNvbi5CYXNpYy50IEFwaS5yZXN1bHQgTHd0LnUpIEhhc2h0YmwudFxuXG5sZXQgcmVwbHlfb2Zfc3RyaW5nICh4IDogc3RyaW5nKSA6IGludCBvcHRpb24gKiBZb2pzb24uQmFzaWMudCBBcGkucmVzdWx0ID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHggd2l0aFxuICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJjb2RlXCIsIGBTdHJpbmcgXCJFUlJPUlwiKTsgKFwiZGF0YVwiLCBlcnIpIF0gLT5cbiAgICAoIFNvbWUgaWQsXG4gICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIub2ZfanNvbiBlcnJcbiAgICAgIHw+IEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb25zIClcbiAgfCBgQXNzb2MgWyAoXCJpZFwiLCBgSW50IGlkKTsgKFwiY29kZVwiLCBgU3RyaW5nIFwiU1VDQ0VTU1wiKTsgKFwiZGF0YVwiLCBkYXRhKSBdIC0+XG4gICAgU29tZSBpZCwgUmVzdWx0X3V0aWwub2sgZGF0YVxuICB8IHggLT5cbiAgICAoIE5vbmUsXG4gICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiXG4gICAgICAgIH5tZXNzYWdlOihcIkludmFsaWQgcmVzcG9uc2UgZnJvbSBLYVNhOiBcIiBeIFlvanNvbi5CYXNpYy50b19zdHJpbmcgeClcbiAgICAgICAgRXhpdFxuICAgICAgfD4gQXBpX2NvbW1vbi5tZXNzYWdlX29mX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgfD4gQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX21zZyApXG5cbmxldCByZWNlaXZlIChtYWlsYm94IDogbWFpbGJveCkgKHggOiBzdHJpbmcpIDogdW5pdCA9XG4gIG1hdGNoIHJlcGx5X29mX3N0cmluZyB4IHdpdGhcbiAgfCBTb21lIGlkLCBvdXQgLT5cbiAgICBsZXQgdGhyZWFkID0gSGFzaHRibC5maW5kIG1haWxib3ggaWQgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlbW92ZSBtYWlsYm94IGlkIGluXG4gICAgTHd0Lndha2V1cCB0aHJlYWQgb3V0XG4gIHwgTm9uZSwgXyAtPiAoKVxuXG5sZXQgbmV3X21haWxib3ggKCkgPSBIYXNodGJsLmNyZWF0ZSAyXG5sZXQgaXNfY29tcHV0aW5nIG1haWxib3ggPSBIYXNodGJsLmxlbmd0aCBtYWlsYm94IDw+IDBcblxuY2xhc3MgbmV3X2NsaWVudCB+aXNfcnVubmluZyB+cG9zdCAobWFpbGJveCA6IG1haWxib3gpIDpcbiAgQXBpLm1hbmFnZXJfc3RhdGljX2FuYWx5c2lzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIGlkID0gMFxuXG4gICAgbWV0aG9kIHByaXZhdGUgcmF3X21lc3NhZ2UgKHBvc3QgOiBzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgKHJlcXVlc3QgOiBCdWZmZXIudCAtPiB1bml0KSA6ICdhIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIGlmIGlzX3J1bm5pbmcgKCkgdGhlbiAoXG4gICAgICAgIGxldCByZXN1bHQsIGZlZWRlciA9IEx3dC50YXNrICgpIGluXG4gICAgICAgIGxldCBvdXRidWYgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwie2lkOlwiIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiAoc3RyaW5nX29mX2ludCBpZCkgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiLGRhdGE6XCIgaW5cbiAgICAgICAgbGV0ICgpID0gcmVxdWVzdCBvdXRidWYgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwifVwiIGluXG4gICAgICAgIGxldCAoKSA9IHBvc3QgKEJ1ZmZlci5jb250ZW50cyBvdXRidWYpIGluXG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBtYWlsYm94IGlkIGZlZWRlciBpblxuICAgICAgICBsZXQgKCkgPSBpZCA8LSBpZCArIDEgaW5cbiAgICAgICAgKCogVE9ETzogY2hhbmdlIG1haWxib3ggdG8gaGF2ZSBBcGkucmVzdWx0IHR5cGUgaW5zaWRlICopXG4gICAgICAgIHJlc3VsdFxuICAgICAgKSBlbHNlXG4gICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgICB+ZmlsZV9uYW1lOlwia2FzYV9jbGllbnRcIiB+bWVzc2FnZTpcIkthU2EgYWdlbnQgaXMgZGVhZFwiIEV4aXRcbiAgICAgICAgfD4gQXBpX2NvbW1vbi5tZXNzYWdlX29mX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICB8PiBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNnIHw+IEx3dC5yZXR1cm5cblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgcmVxdWVzdCA9XG4gICAgICBzZWxmI3Jhd19tZXNzYWdlIHBvc3QgKGZ1biBvdXRiIC0+IFlvanNvbi5CYXNpYy50b19idWZmZXIgb3V0YiByZXF1ZXN0KVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgbGV0IHJlcXVlc3Qgb3V0YnVmID1cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiWyBcXFwiSU5JVFxcXCIsIFwiIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBjb21waWwgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiXVwiXG4gICAgICBpblxuICAgICAgc2VsZiNyYXdfbWVzc2FnZSBwb3N0IHJlcXVlc3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYE51bGwgLT4gUmVzdWx0X3V0aWwub2sgKCkgfD4gTHd0LnJldHVyblxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgICAgICAgICB+ZmlsZV9uYW1lOlwia2FzYV9jbGllbnRcIlxuICAgICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgKFwiTm90IGEgS2FTYSBJTklUIHJlc3BvbnNlOiBcIiBeIFlvanNvbi5CYXNpYy50b19zdHJpbmcgeClcbiAgICAgICAgICAgICAgICBFeGl0XG4gICAgICAgICAgICAgIHw+IEFwaV9jb21tb24ubWVzc2FnZV9vZl91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgICAgICAgfD4gQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX21zZyB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIkNPTlRBQ1RfTUFQXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgc2VsZiNtZXNzYWdlIHJlcXVlc3RcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfTk9ERVNfTE9DQVRJT05cIiBdIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4geCAtPlxuICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5vayAoUHVibGljX2RhdGEucG9zX29mX3J1bGVzX2FuZF92YXJzX29mX2pzb24geClcbiAgICAgICAgICAgICAgfD4gTHd0LnJldHVybilcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUFwiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIFJlc3VsdF91dGlsLm9rIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIHgpIHw+IEx3dC5yZXR1cm4pXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIklORkxVRU5DRV9NQVBcIlxuICAgICAgICAgIDo6IChmdW4gYWNjdXJhY3kgbCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGxcbiAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSA6OiBsKVxuICAgICAgICAgICAgICAgYWNjdXJhY3lcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBmd2Q7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgYndkO1xuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQgdG90YWw7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgb3JpZ2luO1xuICAgICAgICAgICAgICAgXSlcbiAgICAgIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4geCAtPlxuICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5vayAoUHVibGljX2RhdGEubG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIHgpXG4gICAgICAgICAgICAgIHw+IEx3dC5yZXR1cm4pXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfT1JJR0lOQUxfTk9ERVwiIF0gaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgICAgICB8PiBSZXN1bHRfdXRpbC5vayB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGdldF9uZXh0X25vZGUganNvbiA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfTkVYVF9OT0RFXCI7XG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBqc29uO1xuICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4geCAtPlxuICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIHhcbiAgICAgICAgICAgICAgfD4gUmVzdWx0X3V0aWwub2sgfD4gTHd0LnJldHVybilcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBqc29uID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9QUkVWSU9VU19OT0RFXCI7XG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBqc29uO1xuICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4geCAtPlxuICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIHhcbiAgICAgICAgICAgICAgfD4gUmVzdWx0X3V0aWwub2sgfD4gTHd0LnJldHVybilcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX0FMTF9OT0RFU1wiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiB4XG4gICAgICAgICAgICAgIHw+IFJlc3VsdF91dGlsLm9rIHw+IEx3dC5yZXR1cm4pXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJERUFEX1JVTEVTXCIgXSBpblxuICAgICAgc2VsZiNtZXNzYWdlIHJlcXVlc3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIHggLT5cbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIHggfD4gUmVzdWx0X3V0aWwub2sgfD4gTHd0LnJldHVybilcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9hZ2VudHMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJERUFEX0FHRU5UU1wiIF0gaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLmpzb25fdG9fZGVhZF9hZ2VudHMgeCB8PiBSZXN1bHRfdXRpbC5vayB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJOT05fV0VBS0xZX1JFVkVSU0lCTEVfVFJBTlNJVElPTlNcIiBdIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4geCAtPlxuICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24geFxuICAgICAgICAgICAgICB8PiBSZXN1bHRfdXRpbC5vayB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiQ09OU1RSQUlOVFNcIiBdIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4geCAtPlxuICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIHggfD4gUmVzdWx0X3V0aWwub2sgfD4gTHd0LnJldHVybilcblxuICAgIG1ldGhvZCBnZXRfcG90ZW50aWFsX3BvbHltZXJzIGFjY3VyYWN5X2NtIGFjY3VyYWN5X3NjYyA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJQT0xZTUVSU1wiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3lfY20sIGFjY3VyYWN5X3NjYyB3aXRoXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEsIE5vbmUgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXVxuICAgICAgICAgIHwgU29tZSBhLCBTb21lIGIgLT5cbiAgICAgICAgICAgIFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhOyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGIgXVxuICAgICAgICAgIHwgTm9uZSwgU29tZSBiIC0+XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gUHVibGljX2RhdGEuTG93O1xuICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGI7XG4gICAgICAgICAgICBdKSlcbiAgICAgIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4geCAtPlxuICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5zY2Nfb2ZfanNvbiB4IHw+IFJlc3VsdF91dGlsLm9rIHw+IEx3dC5yZXR1cm4pXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBfIGhhbmRsZSA9XG4gIHwgTm90aGluZyA6IHVuaXQgaGFuZGxlXG4gIHwgQ2F0YWxvZyA6IEtmaWxlcy5jYXRhbG9nX2l0ZW0gbGlzdCBoYW5kbGVcbiAgfCBJbmZvIDogKHN0cmluZyAqIGludCkgaGFuZGxlXG4gIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZVxuXG50eXBlIGJveCA9XG4gIHwgQiA6ICdhIGhhbmRsZSAqICgnYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC51IC0+IGJveFxuXG50eXBlIG1haWxib3ggPSAoaW50LCBib3gpIEhhc2h0YmwudFxuXG5sZXQgbmV3X21haWxib3ggKCkgPSBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCByZWFkX3Jlc3VsdCBmIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgIChSZXN1bHRfdXRpbC5yZWFkX3QgZiAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2UpKVxuICAgIHAgbGJcblxubGV0IHJlY2VpdmUgbWFpbGJveCB4ID1cbiAgSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCAoZnVuIHAgbGIgaWQgLT5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCBtYWlsYm94IGlkIHdpdGhcbiAgICAgICAgICAgfCBCIChOb3RoaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX251bGwgcCBsYilcbiAgICAgICAgICAgfCBCIChDYXRhbG9nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgS2ZpbGVzLnJlYWRfY2F0YWxvZ19pdGVtKVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgfCBCIChJbmZvLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50KVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgfCBCIChBc3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgQXN0LnJlYWRfcGFyc2luZ19jb21waWwgcCBsYilcbiAgICAgICAgIGluXG4gICAgICAgICBIYXNodGJsLnJlbW92ZSBtYWlsYm94IGlkKSlcbiAgICB4XG5cbmxldCBpc19jb21wdXRpbmcgbWFpbGJveCA9IEhhc2h0YmwubGVuZ3RoIG1haWxib3ggPD4gMFxuXG5jbGFzcyB2aXJ0dWFsIG5ld19jbGllbnQgfnBvc3QgbWFpbGJveCA6IEFwaS5tYW5hZ2VyX21vZGVsID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIGlkID0gMFxuICAgIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogdHlwZSBhLlxuICAgICAgICBhIGhhbmRsZSAtPlxuICAgICAgICAoQnVmZmVyLnQgLT4gdW5pdCkgLT5cbiAgICAgICAgKGEsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gICAgICBmdW4gaGFuZGxlIHJlcXVlc3QgLT5cbiAgICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICAgIGxldCByZXN1bHQsIGZlZWRlciA9IEx3dC50YXNrICgpIGluXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICAgICAgSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlXG4gICAgICAgICAgICAgIChmdW4gYiAoKSAtPlxuICAgICAgICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBpZCk7IHJlcXVlc3QgXSlcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvc3QgbWVzc2FnZSBpblxuICAgICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBtYWlsYm94IGlkIChCIChoYW5kbGUsIGZlZWRlcikpIGluXG4gICAgICAgICAgbGV0ICgpID0gaWQgPC0gc3VjYyBpZCBpblxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAoUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dCA9IFwia2Ftb2hhIGFnZW50IGhhcyBkaWVkXCI7XG4gICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZGVsZXRlIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZURlbGV0ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV91cGRhdGUgZmlsZV9pZCBmaWxlX2NvbnRlbnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZVVwZGF0ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2NvbnRlbnQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX21vdmUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVNb3ZlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2dldCBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZvIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVHZXRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY3JlYXRlIGZpbGVfcG9zaXRpb24gZmlsZV9pZCBmaWxlX2NvbnRlbnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUNyZWF0ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmaWxlX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2NvbnRlbnQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2NhdGFsb2cgPVxuICAgICAgc2VsZiNtZXNzYWdlIENhdGFsb2cgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUNhdGFsb2dcIikgXSlcblxuICAgIG1ldGhvZCBzZWNyZXRfcHJvamVjdF9wYXJzZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgQXN0IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RQYXJzZVwiKSBdKVxuXG4gICAgbWV0aG9kIHByb2plY3Rfb3ZlcndyaXRlIGZpbGVfaWQgYXN0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RPdmVyd3JpdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBc3Qud3JpdGVfcGFyc2luZ19jb21waWwgYiBhc3QpO1xuICAgICAgICAgICAgXSlcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdXJsX2FyZ3MgPyhkZWZhdWx0ID0gW10pIGtleSA6IHN0cmluZyBsaXN0ID1cbiAgKCogSG9zdHMgdGhlIHVzZXIgc3BlY2lmaWVkIG9uIHRoZSB1cmwgaW4gdGhlIGZvcm1cbiAgICAga2V5PS4uLiZrZXk9Li4mLi4uXG4gICopXG4gIGxldCBhcmdzID0gVXJsLkN1cnJlbnQuYXJndW1lbnRzIGluXG4gIG1hdGNoIExpc3QubWFwIHNuZCAoTGlzdC5maWx0ZXIgKGZ1biAoaywgXykgLT4gayA9IGtleSkgYXJncykgd2l0aFxuICB8IFtdIC0+IGRlZmF1bHRcbiAgfCBzb21lIC0+IHNvbWVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgcHJvY2Vzc19jb25maWd1cmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb21tYW5kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBtZXRob2QgYXJncyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICBtZXRob2Qgb25TdGRvdXQgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMucHJvcFxuICBtZXRob2Qgb25TdGRlcnIgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMucHJvcFxuICBtZXRob2Qgb25DbG9zZSA6ICh1bml0IC0+IHVuaXQpIEpzLnByb3BcbiAgbWV0aG9kIG9uRXJyb3IgOiAodW5pdCAtPiB1bml0KSBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX3Byb2Nlc3NfY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50IEpzLmNvbnN0ciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX3Byb2Nlc3NfY29uZmlndXJhdGlvblxuICAgID8ob25TdGRvdXQgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgb3B0aW9uKVxuICAgID8ob25TdGRlcnIgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgb3B0aW9uKVxuICAgID8ob25DbG9zZSA6ICh1bml0IC0+IHVuaXQpIG9wdGlvbikgPyhvbkVycm9yIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uKVxuICAgIChjb21tYW5kIDogc3RyaW5nKSAoYXJncyA6IHN0cmluZyBsaXN0KSA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgbGV0IGNvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gICAgbmV3JWpzIGNvbnN0cnVjdG9yX3Byb2Nlc3NfY29uZmlndXJhdGlvblxuICBpblxuICBsZXQgKCkgPVxuICAgIGNvbmZpZ3VyYXRpb24jIy5jb21tYW5kIDo9IEpzLnN0cmluZyBjb21tYW5kO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5hcmdzIDo9IEpzLmFycmF5IChBcnJheS5vZl9saXN0IChMaXN0Lm1hcCBKcy5zdHJpbmcgYXJncykpO1xuICAgIChtYXRjaCBvblN0ZG91dCB3aXRoXG4gICAgfCBTb21lIG9uU3Rkb3V0IC0+IGNvbmZpZ3VyYXRpb24jIy5vblN0ZG91dCA6PSBvblN0ZG91dFxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKG1hdGNoIG9uU3RkZXJyIHdpdGhcbiAgICB8IFNvbWUgb25TdGRlcnIgLT4gY29uZmlndXJhdGlvbiMjLm9uU3RkZXJyIDo9IG9uU3RkZXJyXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAobWF0Y2ggb25DbG9zZSB3aXRoXG4gICAgfCBTb21lIG9uQ2xvc2UgLT4gY29uZmlndXJhdGlvbiMjLm9uQ2xvc2UgOj0gb25DbG9zZVxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKG1hdGNoIG9uRXJyb3Igd2l0aFxuICAgIHwgU29tZSBvbkVycm9yIC0+IGNvbmZpZ3VyYXRpb24jIy5vbkVycm9yIDo9IG9uRXJyb3JcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgICgpXG4gIGluXG4gIGNvbmZpZ3VyYXRpb25cblxuY2xhc3MgdHlwZSBwcm9jZXNzID0gb2JqZWN0XG4gIG1ldGhvZCB3cml0ZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qga2lsbCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBzcGF3bl9wcm9jZXNzIChjb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQpIDpcbiAgICBwcm9jZXNzIEpzLnQgSnMub3B0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwic3Bhd25Qcm9jZXNzXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCBjb25maWd1cmF0aW9uIHxdXG5cbmxldCBsYXVuY2hfYWdlbnQgKG9uQ2xvc2UgOiB1bml0IC0+IHVuaXQpIChtZXNzYWdlX2RlbGltaXRlciA6IGNoYXIpXG4gICAgKGNvbW1hbmQgOiBzdHJpbmcpIChhcmdzIDogc3RyaW5nIGxpc3QpIChoYW5kbGVyIDogc3RyaW5nIC0+IHVuaXQpIDpcbiAgICA8IGtpbGwgOiB1bml0IEpzLm1ldGggOyB3cml0ZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aCA+IEpzLnQgPVxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgbGV0IHJlYyBvblN0ZG91dCBtc2cgPVxuICAgIG1hdGNoIFRvb2xzLnN0cmluZ19zcGxpdF9vbl9jaGFyIG1lc3NhZ2VfZGVsaW1pdGVyIChKcy50b19zdHJpbmcgbXNnKSB3aXRoXG4gICAgfCBwcmVmaXgsIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIHByZWZpeFxuICAgIHwgcHJlZml4LCBTb21lIHN1ZmZpeCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIHByZWZpeDtcbiAgICAgIGhhbmRsZXIgKEJ1ZmZlci5jb250ZW50cyBidWZmZXIpO1xuICAgICAgQnVmZmVyLnJlc2V0IGJ1ZmZlcjtcbiAgICAgIG9uU3Rkb3V0IChKcy5zdHJpbmcgc3VmZml4KVxuICBpblxuICBsZXQgY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgICBjcmVhdGVfcHJvY2Vzc19jb25maWd1cmF0aW9uIH5vblN0ZG91dCB+b25DbG9zZSBjb21tYW5kIGFyZ3NcbiAgaW5cbiAgSnMuT3B0LmNhc2VcbiAgICAoc3Bhd25fcHJvY2VzcyBjb25maWd1cmF0aW9uKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIG9uQ2xvc2UgKCk7XG4gICAgICBmYWlsd2l0aCAoXCJMYXVuY2hpbmcgJ1wiIF4gY29tbWFuZCBeIFwiJyBmYWlsZWRcIikpXG4gICAgKGZ1biB4IC0+IHgpXG5cbigqKiBNYW5hZ2VyIGhlcmUgaXMgY29tbXVuaWNhdGluZyB3aXRoIHByb2Nlc3NlcyBvZiBga2FzdG9yYCBhbmQgYHN3aXRjaG1hbmAsIHdoaWNoIGl0c2VsZiBjYWxscyB0aGUgb3RoZXIgY2xpIGFnZW50cyBcbiAgICBLYXN0b3IgaXMgbm90IGluY2x1ZGVkIHdpdGggdGhlIG90aGVycyBhcyBpdCBjYW4gYmUgY29tbXVuaWNhdGVkIHRvIGluIHJhdywgYW5kIGl0IGRvZXNuJ3QgaGF2ZSBhbiBpbnRlcm5hbCBzdGF0ZS5cbiAqKVxuY2xhc3MgbWFuYWdlciA/KG1lc3NhZ2VfZGVsaW1pdGVyIDogY2hhciA9IFRvb2xzLmRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlcilcbiAgKGNvbW1hbmQgOiBzdHJpbmcpIChhcmdzIDogc3RyaW5nIGxpc3QpIDpcbiAgQXBpLmNvbmNyZXRlX21hbmFnZXIgPVxuICBsZXQgc3dpdGNoX3JlID0gUmUuY29tcGlsZSAoUmUuc3RyIFwiS2FwcGFTd2l0Y2htYW5cIikgaW5cbiAgbGV0IHN0b3JfY29tbWFuZCA9IFJlLnJlcGxhY2Vfc3RyaW5nIHN3aXRjaF9yZSB+Ynk6XCJLYVN0b3JcIiBjb21tYW5kIGluXG4gIGxldCBzd2l0Y2hfbWFpbGJveCA9IFN3aXRjaG1hbl9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IHN0b3Jfc3RhdGUsIHVwZGF0ZV9zdG9yX3N0YXRlID0gS2FzdG9yX2NsaWVudC5pbml0X3N0YXRlICgpIGluXG4gIGxldCBydW5uaW5nX3JlZiA9IHJlZiB0cnVlIGluXG4gIGxldCBvbkNsb3NlICgpID0gcnVubmluZ19yZWYgOj0gZmFsc2UgaW5cbiAgbGV0IHN0b3JfcHJvY2VzcyA9XG4gICAgbGF1bmNoX2FnZW50IG9uQ2xvc2UgbWVzc2FnZV9kZWxpbWl0ZXIgc3Rvcl9jb21tYW5kIGFyZ3NcbiAgICAgIChLYXN0b3JfY2xpZW50LnJlY2VpdmUgdXBkYXRlX3N0b3Jfc3RhdGUpXG4gIGluXG4gIGxldCBzd2l0Y2hfcHJvY2VzcyA9XG4gICAgbGF1bmNoX2FnZW50IG9uQ2xvc2UgbWVzc2FnZV9kZWxpbWl0ZXIgY29tbWFuZCBhcmdzXG4gICAgICAoU3dpdGNobWFuX2NsaWVudC5yZWNlaXZlIHN3aXRjaF9tYWlsYm94KVxuICBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHByaXZhdGUgc2xlZXAgdGltZW91dCA9IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdGltZW91dFxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gIXJ1bm5pbmdfcmVmXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIHN3aXRjaF9wcm9jZXNzIyNraWxsO1xuICAgICAgc3Rvcl9wcm9jZXNzIyNraWxsXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID1cbiAgICAgIFN3aXRjaG1hbl9jbGllbnQuaXNfY29tcHV0aW5nIHN3aXRjaF9tYWlsYm94IHx8IHNlbGYjc3RvcnlfaXNfY29tcHV0aW5nXG5cbiAgICBpbmhlcml0XG4gICAgICBLYXN0b3JfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBzdG9yX3Byb2Nlc3MjI3dyaXRlXG4gICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIiVzJWNcIiBtZXNzYWdlX3RleHQgbWVzc2FnZV9kZWxpbWl0ZXIpKSlcbiAgICAgICAgc3Rvcl9zdGF0ZVxuXG4gICAgaW5oZXJpdFxuICAgICAgU3dpdGNobWFuX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5pc19ydW5uaW5nOihmdW4gKCkgLT4gdHJ1ZSlcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBzd2l0Y2hfcHJvY2VzcyMjd3JpdGVcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiJXMlY1wiIG1lc3NhZ2VfdGV4dCBtZXNzYWdlX2RlbGltaXRlcikpKVxuICAgICAgICBzd2l0Y2hfbWFpbGJveFxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbigqKiBNYW5hZ2VzIHdvcmtlciBtZXNzYWdlIHJlY2VwdGlvbi5cblxuICAgIE1hbmFnZXMgdGhlIG1lc3NhZ2UgcmVjZXB0aW9uLCBhbmQgb3BlbnMgYW4gZXJyb3IgbW9kYWwgdG8gYXZlcnQgdGhlIHVzZXIgYnkgZGVmYXVsdC5cbiAgICBUaGUgbW9kYWwgY2FuIGJlIGRpc2FibGVkIHRvIGtlZXAgb3JpZ2luYWwgZXhjZXB0aW9uIGluIGRldmVsb3BlciB0b29scyBieSBwcm92aWRpbmcgdG8gdGhlIGFwcCB0aGUgYD9ub19leGNfbW9kYWw9dHJ1ZWAgYXJndW1lbnQgKilcbmxldCB3b3JrZXJfb25tZXNzYWdlIH4oZGVidWdfcHJpbnRpbmcgOiBib29sKSB+KHdvcmtlcl9uYW1lIDogc3RyaW5nKVxuICAgIH4oZXhjZXB0aW9uX2NyZWF0ZXNfbW9kYWwgOiBib29sKSB+KHdvcmtlcl9yZWNlaXZlX2YgOiBzdHJpbmcgLT4gdW5pdCkgOlxuICAgICggKHN0cmluZywgc3RyaW5nKSBXb3JrZXIud29ya2VyIEpzLnQsXG4gICAgICBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50IClcbiAgICBEb20uZXZlbnRfbGlzdGVuZXIgPVxuICBsZXQgcHJvY2Vzc19tZXNzYWdlXG4gICAgICAocmVzcG9uc2VfbWVzc2FnZSA6XG4gICAgICAgIDwgZGF0YSA6IDwgZ2V0IDogc3RyaW5nIDsgLi4gPiBKcy5nZW5fcHJvcCA7IC4uID4gSnMudCkgOiBib29sIEpzLnQgPVxuICAgIGxldCByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICBpZiBkZWJ1Z19wcmludGluZyB0aGVuIChcbiAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgKFwiTWVzc2FnZSByZWNlaXZlZCBmcm9tIFwiIF4gd29ya2VyX25hbWUpIGluXG4gICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgIENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpXG4gICAgKTtcbiAgICBsZXQgKCkgPSB3b3JrZXJfcmVjZWl2ZV9mIHJlc3BvbnNlX3RleHQgaW5cbiAgICBKcy5fdHJ1ZVxuICBpblxuICBsZXQgaGFuZGxlcl9mIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCAtPiBib29sIEpzLnQgPVxuICAgIGlmIGV4Y2VwdGlvbl9jcmVhdGVzX21vZGFsIHRoZW4gKFxuICAgICAgZnVuIHJlc3BvbnNlX21lc3NhZ2UgLT5cbiAgICB0cnkgcHJvY2Vzc19tZXNzYWdlIHJlc3BvbnNlX21lc3NhZ2VcbiAgICB3aXRoIF8gYXMgZSAtPlxuICAgICAgS2FwcGFfd2ViYXBwX2xpYi5VaV9jb21tb24ub3Blbl9tb2RhbF9lcnJvciB+aXNfY3JpdGljYWw6ZmFsc2VcbiAgICAgICAgfmVycm9yX2NvbnRlbnQ6XG4gICAgICAgICAgKFwiV29ya2VyIGBcIiBeIHdvcmtlcl9uYW1lIF4gXCJgIHJhaXNlZCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjogXFxyXCJcbiAgICAgICAgIF4gUHJpbnRleGMudG9fc3RyaW5nIGUpO1xuICAgICAgcmFpc2UgZVxuICAgICkgZWxzZVxuICAgICAgcHJvY2Vzc19tZXNzYWdlXG4gIGluXG4gIERvbS5oYW5kbGVyIGhhbmRsZXJfZlxuXG5sZXQgbm9fZXhjX21vZGFsX2FyZyA6IHN0cmluZyBsaXN0ID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwibm9fZXhjX21vZGFsXCJcblxubGV0IHNlbmRfd29ya2VyX2V4Y2VwdGlvbnNfdG9fbW9kYWwgPVxuICBub3RcbiAgICAobWF0Y2ggbm9fZXhjX21vZGFsX2FyZyB3aXRoXG4gICAgfCBzIDo6IF8gd2hlbiBTdHJpbmcuZXF1YWwgcyBcInRydWVcIiAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlKVxuXG5sZXQgb25lcnJvciB+d29ya2VyX25hbWUgfmFwcGx5X29uZXJyb3IgPVxuICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9zdHJpbmcgOiBzdHJpbmcgPSBcIkVycm9yIGluIGBcIiBeIHdvcmtlcl9uYW1lIF4gXCJgOlwiIGluXG4gICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGVycm9yX3N0cmluZyBpblxuICAgICAgVWlfY29tbW9uLm9wZW5fbW9kYWxfZXJyb3IgfmlzX2NyaXRpY2FsOmZhbHNlIH5lcnJvcl9jb250ZW50OmVycm9yX3N0cmluZztcbiAgICAgIGFwcGx5X29uZXJyb3IgKCk7XG4gICAgICBKcy5fdHJ1ZSlcblxuY2xhc3MgdHlwZSBjb25jcmV0ZV9tYW5hZ2VyX3dpdGhvdXRfa2FzaW0gPSBvYmplY3RcbiAgaW5oZXJpdCBBcGkubWFuYWdlcl9tb2RlbFxuICBpbmhlcml0IEFwaS5tYW5hZ2VyX3N0YXRpY19hbmFseXNpc1xuICBpbmhlcml0IEFwaS5tYW5hZ2VyX3N0b3JpZXNcblxuICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCA6XG4gICAgZmlsZW5hbWU6c3RyaW5nIC0+XG4gICAgTG9jLnBvc2l0aW9uIC0+XG4gICAgUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSBvcHRpb24gQXBpLmx3dF9yZXN1bHRcblxuICBtZXRob2QgaXNfcnVubmluZyA6IGJvb2xcbiAgbWV0aG9kIHRlcm1pbmF0ZSA6IHVuaXRcbiAgbWV0aG9kIGlzX2NvbXB1dGluZyA6IGJvb2xcblxuICAoKiBwcm90ZWN0ZWQ6IHVzZWQgaW4gaW5oZXJpdGFuY2UsIHNvIGNhbm5vdCBiZSBwcml2YXRlLCAgKilcbiAgbWV0aG9kIHByaXZhdGUgYXBwbHlfb25lcnJvciA6IHVuaXRcblxuICBtZXRob2QgcHJpdmF0ZSBwcm9qZWN0X3BhcnNlX3dpdGhvdXRfa2FzaW0gOlxuICAgIHNpbXVsYXRpb25fbG9hZDpcbiAgICAgIChQYXR0ZXJuLnNoYXJpbmdfbGV2ZWwgLT5cbiAgICAgIEFzdC5wYXJzaW5nX2NvbXBpbCAtPlxuICAgICAgKHN0cmluZyAqIE5ici50KSBsaXN0IC0+XG4gICAgICB1bml0IEFwaS5sd3RfcmVzdWx0KSAtPlxuICAgIHBhdHRlcm5TaGFyaW5nOlBhdHRlcm4uc2hhcmluZ19sZXZlbCAtPlxuICAgIChzdHJpbmcgKiBOYnIudCkgbGlzdCAtPlxuICAgIHVuaXQgQXBpLmx3dF9yZXN1bHRcbmVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfd2l0aG91dF9rYXNpbSAoKSA6IGNvbmNyZXRlX21hbmFnZXJfd2l0aG91dF9rYXNpbSA9XG4gIGxldCBrYXNhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVNhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthc2FfbWFpbGJveCA9IEthc2FfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYW1vaGFfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthTW9IYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYW1vaGFfbWFpbGJveCA9IEthbW9oYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthc3Rvcl93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTdG9yV29ya2VyLmpzXCIgaW5cbiAgbGV0IHN0b3Jfc3RhdGUsIHVwZGF0ZV9zdG9yX3N0YXRlID0gS2FzdG9yX2NsaWVudC5pbml0X3N0YXRlICgpIGluXG5cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIGlzX3J1bm5pbmcgPSB0cnVlXG4gICAgbWV0aG9kIHByaXZhdGUgYXBwbHlfb25lcnJvciA9IGlzX3J1bm5pbmcgPC0gZmFsc2VcblxuICAgIGluaXRpYWxpemVyXG4gICAgICAoKiBUaGUgdXJsIGFyZ3VtZW50IGBub19leGNfbW9kYWw9dHJ1ZWAgZGlzYWJsZXMgZXhjZXB0aW9uIG1vZGFscyB0byBrZWVwIGV4Y2VwdGlvbiBpbmZvIGNsZWFyIGluIGNvbnNvbGUuICopXG4gICAgICBrYXNhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICB3b3JrZXJfb25tZXNzYWdlIH5kZWJ1Z19wcmludGluZzp0cnVlIH53b3JrZXJfbmFtZTpcImthc2Ffd29ya2VyXCJcbiAgICAgICAgICB+ZXhjZXB0aW9uX2NyZWF0ZXNfbW9kYWw6c2VuZF93b3JrZXJfZXhjZXB0aW9uc190b19tb2RhbFxuICAgICAgICAgIH53b3JrZXJfcmVjZWl2ZV9mOihLYXNhX2NsaWVudC5yZWNlaXZlIGthc2FfbWFpbGJveCk7XG4gICAgICBrYW1vaGFfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgIHdvcmtlcl9vbm1lc3NhZ2UgfmRlYnVnX3ByaW50aW5nOnRydWUgfndvcmtlcl9uYW1lOlwia2Ftb2hhX3dvcmtlclwiXG4gICAgICAgICAgfmV4Y2VwdGlvbl9jcmVhdGVzX21vZGFsOnNlbmRfd29ya2VyX2V4Y2VwdGlvbnNfdG9fbW9kYWxcbiAgICAgICAgICB+d29ya2VyX3JlY2VpdmVfZjooS2Ftb2hhX2NsaWVudC5yZWNlaXZlIGthbW9oYV9tYWlsYm94KTtcbiAgICAgIGthc3Rvcl93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgd29ya2VyX29ubWVzc2FnZSB+ZGVidWdfcHJpbnRpbmc6dHJ1ZSB+d29ya2VyX25hbWU6XCJrYXN0b3Jfd29ya2VyXCJcbiAgICAgICAgICB+ZXhjZXB0aW9uX2NyZWF0ZXNfbW9kYWw6c2VuZF93b3JrZXJfZXhjZXB0aW9uc190b19tb2RhbFxuICAgICAgICAgIH53b3JrZXJfcmVjZWl2ZV9mOihLYXN0b3JfY2xpZW50LnJlY2VpdmUgdXBkYXRlX3N0b3Jfc3RhdGUpO1xuXG4gICAgICBsZXQgYXBwbHlfb25lcnJvciAoKSA9IHNlbGYjYXBwbHlfb25lcnJvciBpblxuICAgICAga2FzYV93b3JrZXIjIy5vbmVycm9yIDo9IG9uZXJyb3Igfndvcmtlcl9uYW1lOlwia2FzYV93b3JrZXJcIiB+YXBwbHlfb25lcnJvcjtcbiAgICAgIGthbW9oYV93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgIG9uZXJyb3Igfndvcmtlcl9uYW1lOlwia2Ftb2hhX3dvcmtlclwiIH5hcHBseV9vbmVycm9yO1xuICAgICAga2FzdG9yX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgb25lcnJvciB+d29ya2VyX25hbWU6XCJrYXN0b3Jfd29ya2VyXCIgfmFwcGx5X29uZXJyb3JcblxuICAgIGluaGVyaXRcbiAgICAgIEthc2FfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfmlzX3J1bm5pbmc6KGZ1biAoKSAtPiB0cnVlKVxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJNZXNzYWdlIHBvc3RlZCB0byBrYXNhX3dvcmtlclwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24ubG9nX2dyb3VwX2VuZCAoKSBpblxuICAgICAgICAgIGthc2Ffd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthc2FfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2Ftb2hhX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cCBcIk1lc3NhZ2UgcG9zdGVkIHRvIGthbW9oYV93b3JrZXJcIiBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX18gKEpzLnN0cmluZyBtZXNzYWdlX3RleHQpIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cbiAgICAgICAgICBrYW1vaGFfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthbW9oYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYXN0b3JfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24ubG9nX2dyb3VwIFwiTWVzc2FnZSBwb3N0ZWQgdG8ga2FzdG9yX3dvcmtlclwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24ubG9nX2dyb3VwX2VuZCAoKSBpblxuICAgICAgICAgIGthc3Rvcl93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAgc3Rvcl9zdGF0ZVxuXG4gICAgdmFsIG11dGFibGUga2FzYV9sb2NhdG9yID0gW11cblxuICAgIG1ldGhvZCBwcml2YXRlIHByb2plY3RfcGFyc2Vfd2l0aG91dF9rYXNpbSB+c2ltdWxhdGlvbl9sb2FkIH5wYXR0ZXJuU2hhcmluZ1xuICAgICAgICBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjc2VjcmV0X3Byb2plY3RfcGFyc2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0XG4gICAgICAgICAgICB+b2s6KGZ1biAocGFyc2luZ19jb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpIC0+XG4gICAgICAgICAgICAgICgqIGxvYWQgdGhlIHNpbSBzbyB0aGF0IGthc2EgY2FuIHJ1biBvbiBpdCAqKVxuICAgICAgICAgICAgICBsZXQgbG9hZCA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgICAgICAgICAgIHNpbXVsYXRpb25fbG9hZCBwYXR0ZXJuU2hhcmluZyBwYXJzaW5nX2NvbXBpbCBvdmVyd3JpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbml0X2thc2EgPSBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyIHBhcnNpbmdfY29tcGlsIGluXG4gICAgICAgICAgICAgIGxldCBsb2NhdG9ycyA9XG4gICAgICAgICAgICAgICAgaW5pdF9rYXNhXG4gICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIGluZm9zIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGUpKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9hZCA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoKSAtPiBsb2NhdG9ycykpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zIDogXyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBMaXN0LmZpbmRfb3B0XG4gICAgICAgIChmdW4gKF8sIHgpIC0+IExvYy5pc19pbmNsdWRlZF9pbiBmaWxlbmFtZSBwb3MgeClcbiAgICAgICAga2FzYV9sb2NhdG9yXG4gICAgICB8PiBPcHRpb25fdXRpbC5tYXAgZnN0XG4gICAgICB8PiBSZXN1bHRfdXRpbC5vayA/c3RhdHVzOk5vbmVcbiAgICAgIHw+IEx3dC5yZXR1cm5cblxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gaXNfcnVubmluZ1xuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPSBrYXNhX3dvcmtlciMjdGVybWluYXRlXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID1cbiAgICAgIEthc2FfY2xpZW50LmlzX2NvbXB1dGluZyBrYXNhX21haWxib3ggfHwgc2VsZiNzdG9yeV9pc19jb21wdXRpbmdcbiAgZW5kXG5cbmNsYXNzIHJ1bnRpbWVfa2FzaW1fYXNfd2ViX3dvcmtlciAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyID1cbiAgbGV0IGthc2ltX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVNpbVdvcmtlci5qc1wiIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IG1hbmFnZXJfd2l0aG91dF9rYXNpbSAoKSBhcyB3aXRob3V0X2thc2ltXG5cbiAgICBpbml0aWFsaXplclxuICAgICAga2FzaW1fd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgIHdvcmtlcl9vbm1lc3NhZ2UgfmRlYnVnX3ByaW50aW5nOmZhbHNlIH53b3JrZXJfbmFtZTpcImthc2ltX3dvcmtlclwiXG4gICAgICAgICAgfmV4Y2VwdGlvbl9jcmVhdGVzX21vZGFsOnNlbmRfd29ya2VyX2V4Y2VwdGlvbnNfdG9fbW9kYWxcbiAgICAgICAgICB+d29ya2VyX3JlY2VpdmVfZjpzZWxmI3JlY2VpdmU7XG4gICAgICBsZXQgYXBwbHlfb25lcnJvciAoKSA9IHdpdGhvdXRfa2FzaW0jYXBwbHlfb25lcnJvciBpblxuICAgICAga2FzaW1fd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICBvbmVycm9yIH53b3JrZXJfbmFtZTpcImthc2ltX3dvcmtlclwiIH5hcHBseV9vbmVycm9yXG5cbiAgICBpbmhlcml0XG4gICAgICBLYXNpbV9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJNZXNzYWdlIHBvc3RlZCB0byBrYXNpbV93b3JrZXJcIiBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX18gKEpzLnN0cmluZyBtZXNzYWdlX3RleHQpIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cbiAgICAgICAgICBrYXNpbV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAgKClcblxuICAgIG1ldGhvZCBwcml2YXRlIHNsZWVwIHRpbWVvdXQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIHRpbWVvdXRcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPVxuICAgICAgd2l0aG91dF9rYXNpbSN0ZXJtaW5hdGU7XG4gICAgICBrYXNpbV93b3JrZXIjI3Rlcm1pbmF0ZVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IHdpdGhvdXRfa2FzaW0jaXNfY29tcHV0aW5nIHx8IHNlbGYjc2ltX2lzX2NvbXB1dGluZ1xuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgbGV0IHNpbXVsYXRpb25fbG9hZCAocGF0dGVyblNoYXJpbmcgOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWwpXG4gICAgICAgICAgKHBhcnNpbmdfY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKVxuICAgICAgICAgIChvdmVyd3JpdGVzIDogKHN0cmluZyAqIE5ici50KSBsaXN0KSA9XG4gICAgICAgIHNlbGYjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuU2hhcmluZyBwYXJzaW5nX2NvbXBpbCBvdmVyd3JpdGVzXG4gICAgICBpblxuICAgICAgd2l0aG91dF9rYXNpbSNwcm9qZWN0X3BhcnNlX3dpdGhvdXRfa2FzaW0gfnNpbXVsYXRpb25fbG9hZCB+cGF0dGVyblNoYXJpbmdcbiAgICAgICAgb3ZlcndyaXRlc1xuICBlbmRcblxuY2xhc3MgcnVudGltZV9rYXNpbV9lbWJlZGRlZF9pbl9tYWluX3RocmVhZCAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyID1cbiAgbGV0IHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzID1cbiAgICBvYmplY3RcbiAgICAgIG1ldGhvZCBtaW5fcnVuX2R1cmF0aW9uICgpID0gMC4xXG4gICAgICBtZXRob2QgeWllbGQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnlpZWxkXG5cbiAgICAgIG1ldGhvZCBsb2cgP2V4biAobXNnIDogc3RyaW5nKSA9XG4gICAgICAgIGlnbm9yZSBleG47XG4gICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiW1N0YXRlX3J1bnRpbWUuZW1iZWRkZWRdIGVtYmVkZGVkX21hbmFnZXIjbG9nOiAlc1wiXG4gICAgICAgICAgICAgICAgbXNnKSk7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVuZFxuICBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBtYW5hZ2VyX3dpdGhvdXRfa2FzaW0gKCkgYXMgd2l0aG91dF9rYXNpbVxuXG4gICAgKCogVXNlIGVtYmVkZGVkIGthc2ltIHJ1bnRpbWUgaGVyZSAqKVxuICAgIGluaGVyaXQgS2FzaW1fcnVudGltZS5tYW5hZ2VyIHN5c3RlbV9wcm9jZXNzXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSB0cnVlXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIHdpdGhvdXRfa2FzaW0jdGVybWluYXRlO1xuICAgICAgKCkgKCpUT0RPKilcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSB0cnVlICgqVE9ETyopXG5cbiAgICBtZXRob2QgcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmcgb3ZlcndyaXRlcyA9XG4gICAgICBsZXQgc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIHBhcnNpbmdfY29tcGlsIG92ZXJ3cml0ZXMgPVxuICAgICAgICBzZWxmI3NlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgcGFyc2luZ19jb21waWwgb3ZlcndyaXRlc1xuICAgICAgaW5cbiAgICAgIHdpdGhvdXRfa2FzaW0jcHJvamVjdF9wYXJzZV93aXRob3V0X2thc2ltIH5zaW11bGF0aW9uX2xvYWQgfnBhdHRlcm5TaGFyaW5nXG4gICAgICAgIG92ZXJ3cml0ZXNcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNsaSA9IHsgdXJsOiBzdHJpbmc7IGNvbW1hbmQ6IHN0cmluZzsgYXJnczogc3RyaW5nIGxpc3QgfVxudHlwZSBwcm90b2NvbCA9IEhUVFAgb2Ygc3RyaW5nIHwgQ0xJIG9mIGNsaVxudHlwZSByZW1vdGUgPSB7IGxhYmVsOiBzdHJpbmc7IHByb3RvY29sOiBwcm90b2NvbCB9XG50eXBlIHNwZWMgPSBLYXNpbUFzV2ViV29ya2VyIHwgS2FTaW1Bc0VtYmVkZGVkIHwgUmVtb3RlIG9mIHJlbW90ZVxudHlwZSBzdGF0ZSA9IHsgc3RhdGVfY3VycmVudDogc3BlYzsgc3RhdGVfcnVudGltZXM6IHNwZWMgbGlzdCB9XG50eXBlIG1vZGVsID0geyBtb2RlbF9jdXJyZW50OiBzcGVjOyBtb2RlbF9ydW50aW1lczogc3BlYyBsaXN0IH1cblxubGV0IHNwZWNfbGFiZWwgOiBzcGVjIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgS2FzaW1Bc1dlYldvcmtlciAtPiBcIkthc2ltQXNXZWJXb3JrZXJcIlxuICB8IEthU2ltQXNFbWJlZGRlZCAtPiBcIkthU2ltQXNFbWJlZGRlZFwiXG4gIHwgUmVtb3RlIHJlbW90ZSAtPiByZW1vdGUubGFiZWxcblxubGV0IHNwZWNfaWQgOiBzcGVjIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgS2FzaW1Bc1dlYldvcmtlciAtPiBcIkthc2ltQXNXZWJXb3JrZXJcIlxuICB8IEthU2ltQXNFbWJlZGRlZCAtPiBcIkthU2ltQXNFbWJlZGRlZFwiXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IEhUVFAgaHR0cCB9IC0+IGh0dHBcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gQ0xJIGNsaSB9IC0+IGNsaS51cmxcblxubGV0IHJlYWRfc3BlYyA6IHN0cmluZyAtPiBzcGVjIG9wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgXCJLYXNpbUFzV2ViV29ya2VyXCIgLT4gU29tZSBLYXNpbUFzV2ViV29ya2VyXG4gIHwgXCJLYVNpbUFzRW1iZWRkZWRcIiAtPiBTb21lIEthU2ltQXNFbWJlZGRlZFxuICB8IHVybCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBDb21tb24ubG9nX2dyb3VwXG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIltTdGF0ZV9ydW50aW1lLnJlYWRfc3BlY10gcGFyc2VfcmVtb3RlOiAlc1wiIHVybClcbiAgICBpblxuICAgIGxldCBmb3JtYXRfdXJsIHVybCA9XG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCB1cmwgaW5cbiAgICAgIGlmIGxlbmd0aCA+IDAgJiYgU3RyaW5nLmdldCB1cmwgKGxlbmd0aCAtIDEpID09ICcvJyB0aGVuXG4gICAgICAgIFN0cmluZy5zdWIgdXJsIDAgKGxlbmd0aCAtIDEpXG4gICAgICBlbHNlXG4gICAgICAgIHVybFxuICAgIGluXG4gICAgbGV0IGNsZWFuZWRfdXJsIGh0dHAgPVxuICAgICAgbGV0IGNsZWFuZWQgPVxuICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzOiVkLyVzXCIgaHR0cC5VcmwuaHVfaG9zdCBodHRwLlVybC5odV9wb3J0XG4gICAgICAgICAgaHR0cC5VcmwuaHVfcGF0aF9zdHJpbmdcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJjbGVhbmVkIDogJXNcIiBjbGVhbmVkKSlcbiAgICAgIGluXG4gICAgICBmb3JtYXRfdXJsIGNsZWFuZWRcbiAgICBpblxuICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG5cbiAgICAobWF0Y2ggVXJsLnVybF9vZl9zdHJpbmcgdXJsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSByYXdfcGFyc2VkIC0+XG4gICAgICAoKiBPbiB3aW5kb3dzLCByZW1vdmVzIHRoZSBsZWFkaW5nIGAvYCBsZWZ0IGJ5IGpzX29mX29jYW1sIHVybCBwYXJzaW5nIG9uIGZpbGU6Ly8vQzovcGF0aGAgd2luZG93cyBVUkxzICopXG4gICAgICBsZXQgY2xlYW5fcGFyc2VkX3doZW5fb25fd2luZG93cyByYXdfcGFyc2VkID1cbiAgICAgICAgbWF0Y2ggcmF3X3BhcnNlZCB3aXRoXG4gICAgICAgIHwgVXJsLkh0dHAgXyB8IFVybC5IdHRwcyBfIC0+IHJhd19wYXJzZWRcbiAgICAgICAgfCBVcmwuRmlsZSBmaWxlX3VybCAtPlxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBmaWxlX3VybC5VcmwuZnVfcGF0aF9zdHJpbmcuWzBdID09ICcvJ1xuICAgICAgICAgICAgJiYgZmlsZV91cmwuVXJsLmZ1X3BhdGhfc3RyaW5nLlsyXSA9PSAnOidcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAgICAgICBcIldpbmRvd3MgZmlsZSBhZGRyZXNzIHRyYW5zbGF0ZWQgZnJvbSBqc19vZl9vY2FtbCBlcnJvclwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVXJsLkZpbGVcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpbGVfdXJsIHdpdGhcbiAgICAgICAgICAgICAgICBVcmwuZnVfcGF0aF9zdHJpbmcgPVxuICAgICAgICAgICAgICAgICAgU3RyaW5nLnN1YiBmaWxlX3VybC5VcmwuZnVfcGF0aF9zdHJpbmcgMVxuICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBmaWxlX3VybC5VcmwuZnVfcGF0aF9zdHJpbmcgLSAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgcmF3X3BhcnNlZFxuICAgICAgaW5cbiAgICAgIGxldCBwYXJzZWQgPSBjbGVhbl9wYXJzZWRfd2hlbl9vbl93aW5kb3dzIHJhd19wYXJzZWQgaW5cbiAgICAgIGxldCBwcm90b2NvbCA6IHByb3RvY29sID1cbiAgICAgICAgbWF0Y2ggcGFyc2VkIHdpdGhcbiAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+IEhUVFAgKFwiaHR0cDovL1wiIF4gY2xlYW5lZF91cmwgaHR0cClcbiAgICAgICAgfCBVcmwuSHR0cHMgaHR0cHMgLT4gSFRUUCAoXCJodHRwczovL1wiIF4gY2xlYW5lZF91cmwgaHR0cHMpXG4gICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPlxuICAgICAgICAgIENMSVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1cmwgPSBcImZpbGU6Ly9cIiBeIGZpbGUuVXJsLmZ1X3BhdGhfc3RyaW5nO1xuICAgICAgICAgICAgICBjb21tYW5kID0gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmc7XG4gICAgICAgICAgICAgIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbGFiZWwgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBMaXN0LmFzc29jIFwibGFiZWxcIlxuICAgICAgICAgICAgKG1hdGNoIHBhcnNlZCB3aXRoXG4gICAgICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT4gaHR0cC5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBodHRwcy5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT4gZmlsZS5VcmwuZnVfYXJndW1lbnRzKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIChtYXRjaCBwYXJzZWQgd2l0aFxuICAgICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPiBodHRwLlVybC5odV9ob3N0XG4gICAgICAgICAgfCBVcmwuSHR0cHMgaHR0cHMgLT4gaHR0cHMuVXJsLmh1X2hvc3RcbiAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT4gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmcpXG4gICAgICBpblxuICAgICAgU29tZSAoUmVtb3RlIHsgbGFiZWw7IHByb3RvY29sIH0pKVxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9XG4gIFJlYWN0LlMuY3JlYXRlXG4gICAge1xuICAgICAgc3RhdGVfY3VycmVudCA9IEthc2ltQXNXZWJXb3JrZXI7XG4gICAgICBzdGF0ZV9ydW50aW1lcyA9IFsgS2FzaW1Bc1dlYldvcmtlcjsgS2FTaW1Bc0VtYmVkZGVkIF07XG4gICAgfVxuXG5sZXQgY3JlYXRlX21hbmFnZXIgfmlzX25ldyBfcHJvamVjdF9pZCA9XG4gICgqIExpbmUgYmVsb3cgdG8gc3BlY2lmeSB1bnVzZWQgdmFyLCBhcyBqZSBjYW5ub3QgY2hhbmdlIHRoZSBuYW1lZCBhcmd1bWVudCB0byBfaXNfbmV3ICopXG4gIGxldCBfdW51c2VkID0gaXNfbmV3IGluXG5cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnN0YXRlX2N1cnJlbnQgd2l0aFxuICB8IEthc2ltQXNXZWJXb3JrZXIgLT5cbiAgICBMd3QucmV0dXJuXG4gICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgIChuZXcgUnVudGltZV93ZWJfd29ya2Vycy5ydW50aW1lX2thc2ltX2FzX3dlYl93b3JrZXIgKClcbiAgICAgICAgICAgOiBBcGkuY29uY3JldGVfbWFuYWdlcikpXG4gIHwgS2FTaW1Bc0VtYmVkZGVkIC0+XG4gICAgTHd0LnJldHVyblxuICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAobmV3IFJ1bnRpbWVfd2ViX3dvcmtlcnMucnVudGltZV9rYXNpbV9lbWJlZGRlZF9pbl9tYWluX3RocmVhZCAoKVxuICAgICAgICAgICA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSlcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCB1cmwgfSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGZcbiAgICAgICAgXCJSRVNUIHNlcnZlciBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUgYW5kIHVybCBcXFwiJXNcXFwiIHdhcyBwcm92aWRlZC5cIiB1cmxcbiAgICBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKVxuICB8IFJlbW90ZSB7IGxhYmVsOyBwcm90b2NvbCA9IENMSSBjbGkgfSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fXG4gICAgICAgIChKcy5zdHJpbmdcbiAgICAgICAgICAgKFwiW1N0YXRlX3J1bnRpbWUuY3JlYXRlX21hbmFnZXJdIHNldF9ydW50aW1lX3VybCBDTEk6IFwiIF4gY2xpLnVybCkpXG4gICAgaW5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzX25vZGVfcnVudGltZSA9XG4gICAgICAgICBuZXcgUnVudGltZV9wcm9jZXNzZXMubWFuYWdlciBjbGkuY29tbWFuZCBjbGkuYXJnc1xuICAgICAgIGluXG4gICAgICAgaWYganNfbm9kZV9ydW50aW1lI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgIFwiW1N0YXRlX3J1bnRpbWUuY3JlYXRlX21hbmFnZXJdIHNldF9ydW50aW1lX3VybDogc3VjY2Vzc1wiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChqc19ub2RlX3J1bnRpbWUgOj4gQXBpLmNvbmNyZXRlX21hbmFnZXIpKVxuICAgICAgICkgZWxzZSAoXG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgIFwiW1N0YXRlX3J1bnRpbWUuY3JlYXRlX21hbmFnZXJdIHNldF9ydW50aW1lX3VybDogZmFpbHVyZVwiKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIkNvdWxkIG5vdCBzdGFydCBjbGkgcnVudGltZSAlcyBcIiBsYWJlbFxuICAgICAgICAgaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKVxuICAgICAgIClcbiAgICAgd2l0aCBGYWlsdXJlIHggLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyB4KSlcblxubGV0IHNldF9zcGVjIHJ1bnRpbWUgPVxuICBsZXQgY3VycmVudF9zdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgc2V0X3N0YXRlXG4gICAgeyBzdGF0ZV9jdXJyZW50ID0gcnVudGltZTsgc3RhdGVfcnVudGltZXMgPSBjdXJyZW50X3N0YXRlLnN0YXRlX3J1bnRpbWVzIH1cblxubGV0IGNyZWF0ZV9zcGVjIH5sb2FkIChpZCA6IHN0cmluZykgOiB1bml0IEFwaS5yZXN1bHQgPVxuICBtYXRjaCByZWFkX3NwZWMgaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgIEZvcm1hdC5zcHJpbnRmIFwiRmFpbGVkIHRvIGNyZWF0ZSBzcGVjOiBjb3VsZCBub3QgcGFyc2UgaWRlbnRpZmllciAlc1wiIGlkXG4gICAgaW5cbiAgICBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZ1xuICB8IFNvbWUgcnVudGltZSAtPlxuICAgIGxldCBjdXJyZW50X3N0YXRlID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBub3QgKExpc3QubWVtIHJ1bnRpbWUgY3VycmVudF9zdGF0ZS5zdGF0ZV9ydW50aW1lcykgdGhlblxuICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0ZV9jdXJyZW50ID0gY3VycmVudF9zdGF0ZS5zdGF0ZV9jdXJyZW50O1xuICAgICAgICAgICAgc3RhdGVfcnVudGltZXMgPSBydW50aW1lIDo6IGN1cnJlbnRfc3RhdGUuc3RhdGVfcnVudGltZXM7XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gaWYgbG9hZCB0aGVuIHNldF9zcGVjIHJ1bnRpbWUgaW5cbiAgICBSZXN1bHRfdXRpbC5vayAoKVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gc3RhdGUgLT5cbiAgICAgIHtcbiAgICAgICAgbW9kZWxfY3VycmVudCA9IHN0YXRlLnN0YXRlX2N1cnJlbnQ7XG4gICAgICAgIG1vZGVsX3J1bnRpbWVzID0gc3RhdGUuc3RhdGVfcnVudGltZXM7XG4gICAgICB9KVxuICAgIHN0YXRlXG5cbigqIHJ1biBvbiBhcHBsaWNhdGlvbiBpbml0ICopXG5sZXQgaW5pdCAoKSA9XG4gICgqIGdldCB1cmwgb2YgaG9zdCAqKVxuICBsZXQgaG9zdHMgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJob3N0XCIgaW5cbiAgbGV0IHJlYyBhZGRfdXJscyB1cmxzIGxvYWQgPVxuICAgIG1hdGNoIHVybHMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHVybCA6OiB1cmxzIC0+XG4gICAgICAobWF0Y2ggY3JlYXRlX3NwZWMgfmxvYWQgdXJsIHdpdGhcbiAgICAgIHwgeyBSZXN1bHRfdXRpbC52YWx1ZSA9IFJlc3VsdC5PayAoKTsgXyB9IC0+IGFkZF91cmxzIHVybHMgZmFsc2VcbiAgICAgIHwgeyBSZXN1bHRfdXRpbC52YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gLT4gYWRkX3VybHMgdXJscyBsb2FkKVxuICBpblxuICBsZXQgKCkgPSBhZGRfdXJscyBob3N0cyB0cnVlIGluXG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zdGF0ZV9jdXJyZW50IHdpdGhcbiAgfCBSZW1vdGUgeyBwcm90b2NvbCA9IENMSSBfOyBfIH0gfCBLYXNpbUFzV2ViV29ya2VyIHwgS2FTaW1Bc0VtYmVkZGVkIC0+XG4gICAgTHd0LnJldHVybl9uaWxcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCB1cmwgfSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGZcbiAgICAgICAgXCJSRVNUIHNlcnZlciBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUgYW5kIHVybCBcXFwiJXNcXFwiIHdhcyBwcm92aWRlZC5cIiB1cmxcbiAgICBpblxuICAgIGxldCAoKSA9IENvbW1vbi5lcnJvciB+bG9jOl9fTE9DX18gKEpzLnN0cmluZyBlcnJvcl9tc2cpIGluXG4gICAgTHd0LnJldHVybl9uaWxcblxuKCogdG8gc3luYyBzdGF0ZSBvZiBhcHBsaWNhdGlvbiB3aXRoIHJ1bnRpbWUgKilcbmxldCBzeW5jICgpID0gTHd0LnJldHVybl91bml0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcGxvdFBlcmlvZFBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwUGxvdFBlcmlvZFwiXG5sZXQgcGF1c2VDb25kaXRpb25QYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFBhdXNlQ29uZGl0aW9uXCJcbmxldCBzZWVkUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBEZWZhdWx0U2VlZFwiXG5sZXQgc3RvcmVUcmFjZVBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU3RvcmVUcmFjZVwiXG5sZXQgc2hvd0RlYWRSdWxlc1BhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0RlYWRSdWxlc1wiXG5sZXQgc2hvd0RlYWRBZ2VudHNQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFNob3dEZWFkQWdlbnRzXCJcblxubGV0IHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWQgPVxuICBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25cIlxuXG50eXBlIHBhcmFtZXRlcnMgPSB7XG4gIHBsb3RfcGVyaW9kOiBmbG9hdDtcbiAgcGF1c2VfY29uZGl0aW9uOiBzdHJpbmc7XG4gIHNlZWQ6IGludCBvcHRpb247XG4gIHN0b3JlX3RyYWNlOiBib29sO1xuICBzaG93X2RlYWRfcnVsZXM6IGJvb2w7XG4gIHNob3dfZGVhZF9hZ2VudHM6IGJvb2w7XG4gIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zOiBib29sO1xufVxuXG50eXBlIGFfcHJvamVjdCA9IHtcbiAgcHJvamVjdF9pZDogc3RyaW5nO1xuICBwcm9qZWN0X2lzX2NvbXB1dGluZzogYm9vbCBSZWFjdC5TLnQ7XG4gIHByb2plY3Rfd2F0Y2hlcl9jYW5jZWw6IGJvb2wgcmVmO1xuICBwcm9qZWN0X21hbmFnZXI6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyO1xufVxuXG50eXBlIHN0YXRlID0ge1xuICBwcm9qZWN0X2N1cnJlbnQ6IGFfcHJvamVjdCBvcHRpb247XG4gIHByb2plY3RfY2F0YWxvZzogYV9wcm9qZWN0IGxpc3Q7XG4gIHByb2plY3RfdmVyc2lvbjogaW50O1xuICBkZWZhdWx0X3BhcmFtZXRlcnM6IHBhcmFtZXRlcnM7XG4gIHByb2plY3RfcGFyYW1ldGVyczogcGFyYW1ldGVycyBNb2RzLlN0cmluZ01hcC50O1xufVxuXG50eXBlIHByb2plY3RfbW9kZWwgPSB7XG4gIG1vZGVsX3Byb2plY3RfaWQ6IHN0cmluZztcbiAgbW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmc6IGJvb2wgUmVhY3QuUy50O1xufVxuXG50eXBlIG1vZGVsID0ge1xuICBtb2RlbF9jdXJyZW50X2lkOiBzdHJpbmcgb3B0aW9uO1xuICBtb2RlbF9jYXRhbG9nOiBwcm9qZWN0X21vZGVsIGxpc3Q7XG4gIG1vZGVsX3Byb2plY3RfdmVyc2lvbjogaW50O1xuICBtb2RlbF9wYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzO1xufVxuXG5sZXQgcHJvamVjdF9lcXVhbCBhIGIgPSBhLnByb2plY3RfaWQgPSBiLnByb2plY3RfaWRcblxubGV0IGNhdGFsb2dfZXF1YWwgeCB5ID1cbiAgdHJ5IExpc3QuZm9yX2FsbDIgcHJvamVjdF9lcXVhbCB4IHkgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2VcblxubGV0IHN0YXRlX2VxdWFsIGEgYiA9XG4gIE9wdGlvbl91dGlsLmVxdWFsIHByb2plY3RfZXF1YWwgYS5wcm9qZWN0X2N1cnJlbnQgYi5wcm9qZWN0X2N1cnJlbnRcbiAgJiYgYS5wcm9qZWN0X3ZlcnNpb24gPSBiLnByb2plY3RfdmVyc2lvblxuICAmJiBhLmRlZmF1bHRfcGFyYW1ldGVycyA9IGIuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICYmIE1vZHMuU3RyaW5nTWFwLmVxdWFsXG4gICAgICAgKGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPSAwKVxuICAgICAgIGEucHJvamVjdF9wYXJhbWV0ZXJzIGIucHJvamVjdF9wYXJhbWV0ZXJzXG4gICYmIGNhdGFsb2dfZXF1YWwgYS5wcm9qZWN0X2NhdGFsb2cgYi5wcm9qZWN0X2NhdGFsb2dcblxubGV0IG1vZGVsX2VxdWFsIGEgYiA9XG4gIE9wdGlvbl91dGlsLmVxdWFsXG4gICAgKGZ1biB4IHkgLT4gU3RyaW5nLmNvbXBhcmUgeCB5ID0gMClcbiAgICBhLm1vZGVsX2N1cnJlbnRfaWQgYi5tb2RlbF9jdXJyZW50X2lkXG4gICYmICh0cnlcbiAgICAgICAgTGlzdC5mb3JfYWxsMlxuICAgICAgICAgIChmdW4geCB5IC0+IHgubW9kZWxfcHJvamVjdF9pZCA9IHkubW9kZWxfcHJvamVjdF9pZClcbiAgICAgICAgICBhLm1vZGVsX2NhdGFsb2cgYi5tb2RlbF9jYXRhbG9nXG4gICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZSlcbiAgJiYgYS5tb2RlbF9wcm9qZWN0X3ZlcnNpb24gPSBiLm1vZGVsX3Byb2plY3RfdmVyc2lvblxuICAmJiBhLm1vZGVsX3BhcmFtZXRlcnMgPSBiLm1vZGVsX3BhcmFtZXRlcnNcblxubGV0IGluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzID1cbiAge1xuICAgIHBsb3RfcGVyaW9kID0gMS47XG4gICAgcGF1c2VfY29uZGl0aW9uID0gXCJbZmFsc2VdXCI7XG4gICAgc2VlZCA9IE5vbmU7XG4gICAgc3RvcmVfdHJhY2UgPSBmYWxzZTtcbiAgICBzaG93X2RlYWRfcnVsZXMgPSB0cnVlO1xuICAgIHNob3dfZGVhZF9hZ2VudHMgPSB0cnVlO1xuICAgIHNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gZmFsc2U7XG4gIH1cblxubGV0IGluaXRfc3RhdGUgPVxuICB7XG4gICAgcHJvamVjdF9jdXJyZW50ID0gTm9uZTtcbiAgICBwcm9qZWN0X2NhdGFsb2cgPSBbXTtcbiAgICBwcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBpbml0X2RlZmF1bHRfcGFyYW1ldGVycztcbiAgICBwcm9qZWN0X3BhcmFtZXRlcnMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgfVxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIH5lcTpzdGF0ZV9lcXVhbCBpbml0X3N0YXRlXG5cbmxldCB1cGRhdGVfcGFyYW1ldGVycyBoYW5kbGVyID1cbiAgbGV0IHN0ID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICBsZXQgZGVmYXVsdF9wYXJhbWV0ZXJzLCBwcm9qZWN0X3BhcmFtZXRlcnMgPVxuICAgIG1hdGNoIHN0LnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGhhbmRsZXIgc3QuZGVmYXVsdF9wYXJhbWV0ZXJzLCBzdC5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgICB8IFNvbWUgcHJvaiAtPlxuICAgICAgKCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMsXG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAoaGFuZGxlclxuICAgICAgICAgICAgIChNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgc3QuZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2oucHJvamVjdF9pZFxuICAgICAgICAgICAgICAgIHN0LnByb2plY3RfcGFyYW1ldGVycykpXG4gICAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzIClcbiAgaW5cbiAgc2V0X3N0YXRlXG4gICAge1xuICAgICAgcHJvamVjdF9jdXJyZW50ID0gc3QucHJvamVjdF9jdXJyZW50O1xuICAgICAgcHJvamVjdF9jYXRhbG9nID0gc3QucHJvamVjdF9jYXRhbG9nO1xuICAgICAgcHJvamVjdF92ZXJzaW9uID0gc3QucHJvamVjdF92ZXJzaW9uO1xuICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgIH1cblxubGV0IHNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgPVxuICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIGxldCBwYSA9XG4gICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3QuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgfCBTb21lIHByb2ogLT5cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgIHN0LnByb2plY3RfcGFyYW1ldGVyc1xuICBpblxuICBsZXQgKCkgPVxuICAgIEpzLk9wdGRlZi5pdGVyIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSAoZnVuIGxzIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbHMjI3NldEl0ZW0gcGxvdFBlcmlvZFBhcmFtSWRcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKHN0cmluZ19vZl9mbG9hdCBwYS5wbG90X3BlcmlvZCkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbHMjI3NldEl0ZW0gcGF1c2VDb25kaXRpb25QYXJhbUlkIChKcy5zdHJpbmcgcGEucGF1c2VfY29uZGl0aW9uKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHBhLnNlZWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBscyMjcmVtb3ZlSXRlbSBzZWVkUGFyYW1JZFxuICAgICAgICAgIHwgU29tZSB2YSAtPiBscyMjc2V0SXRlbSBzZWVkUGFyYW1JZCAoSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IHZhKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zdG9yZV90cmFjZSB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzdG9yZVRyYWNlUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNyZW1vdmVJdGVtIHN0b3JlVHJhY2VQYXJhbUlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19kZWFkX3J1bGVzIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRSdWxlc1BhcmFtSWQgKEpzLnN0cmluZyBcImZhbHNlXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19kZWFkX2FnZW50cyB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZEFnZW50c1BhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZEFnZW50c1BhcmFtSWQgKEpzLnN0cmluZyBcImZhbHNlXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNyZW1vdmVJdGVtIHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWRcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gIHNldF9zdGF0ZVxuICAgIHtcbiAgICAgIHByb2plY3RfY3VycmVudCA9IHN0LnByb2plY3RfY3VycmVudDtcbiAgICAgIHByb2plY3RfY2F0YWxvZyA9IHN0LnByb2plY3RfY2F0YWxvZztcbiAgICAgIHByb2plY3RfdmVyc2lvbiA9IHN0LnByb2plY3RfdmVyc2lvbjtcbiAgICAgIHByb2plY3RfcGFyYW1ldGVycyA9IHN0LnByb2plY3RfcGFyYW1ldGVycztcbiAgICAgIGRlZmF1bHRfcGFyYW1ldGVycyA9IHBhO1xuICAgIH1cblxubGV0IHNldF9wbG90X3BlcmlvZCBwbG90X3BlcmlvZCA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHBsb3RfcGVyaW9kIH0pXG5cbmxldCBzZXRfcGF1c2VfY29uZGl0aW9uIHBhdXNlX2NvbmRpdGlvbiA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT4geyBwYXJhbSB3aXRoIHBhdXNlX2NvbmRpdGlvbiB9KVxuXG5sZXQgc2V0X3NlZWQgc2VlZCA9XG4gIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAoSnMuc3RyaW5nXG4gICAgICAgKFwiW3N0YXRlX3Byb2plY3Quc2V0X3NlZWRdIHNldCBzZWVkIHRvIFwiXG4gICAgICAgXiBDb21tb24uc3RyaW5nX29mX29wdGlvbiBzdHJpbmdfb2ZfaW50IHNlZWQpKTtcbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2VlZCB9KVxuXG5sZXQgc2V0X3N0b3JlX3RyYWNlIHN0b3JlX3RyYWNlID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc3RvcmVfdHJhY2UgfSlcblxubGV0IHNldF9zaG93X2RlYWRfcnVsZXMgc2hvd19kZWFkX3J1bGVzID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2hvd19kZWFkX3J1bGVzIH0pXG5cbmxldCBzZXRfc2hvd19kZWFkX2FnZW50cyBzaG93X2RlYWRfYWdlbnRzID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2hvd19kZWFkX2FnZW50cyB9KVxuXG5sZXQgc2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+XG4gICAgICB7IHBhcmFtIHdpdGggc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgfSlcblxubGV0IHVwZGF0ZV9zdGF0ZSBtZSBwcm9qZWN0X2NhdGFsb2cgZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2plY3RfcGFyYW1ldGVycyA9XG4gIG1lLnByb2plY3RfbWFuYWdlciNwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZzpQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnNcbiAgICBbXVxuICA+Pj0gZnVuIChvdXQgOiB1bml0IEFwaS5yZXN1bHQpIC0+XG4gIHNldF9zdGF0ZVxuICAgIHtcbiAgICAgIHByb2plY3RfY3VycmVudCA9IFNvbWUgbWU7XG4gICAgICBwcm9qZWN0X2NhdGFsb2c7XG4gICAgICBkZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICBwcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgICBwcm9qZWN0X3ZlcnNpb24gPSAxO1xuICAgIH07XG4gIEx3dC5yZXR1cm4gb3V0XG5cbmxldCBjb21wdXRpbmdfd2F0Y2hlciBtYW5hZ2VyIHNldHRlciA9XG4gIGxldCBkZWxheSA9IDEuIGluXG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBzZXR0ZXIgbWFuYWdlciNpc19jb21wdXRpbmc7XG4gICAgaWYgIWNhbmNlbGxlZCB0aGVuXG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICBlbHNlXG4gICAgICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIGRlbGF5ID4+PSBsb29wXG4gIGluXG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIGxvb3A7XG4gIGNhbmNlbGxlZFxuXG5sZXQgYWRkX3Byb2plY3QgaXNfbmV3IHByb2plY3RfaWQgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgbGV0IHN0YXRlX3ZhID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAoKiBUT0RPOiBJcyBpdCBvayB0byBnZXQgdGhlIHZhbHVlIGxpa2UgdGhpcyA/ICopXG4gIGxldCBjYXRhbG9nID0gc3RhdGVfdmEucHJvamVjdF9jYXRhbG9nIGluXG4gICh0cnlcbiAgICAgTHd0LnJldHVyblxuICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICggTGlzdC5maW5kIChmdW4geCAtPiB4LnByb2plY3RfaWQgPSBwcm9qZWN0X2lkKSBjYXRhbG9nLFxuICAgICAgICAgICAgY2F0YWxvZyxcbiAgICAgICAgICAgIHN0YXRlX3ZhLnByb2plY3RfcGFyYW1ldGVycyApKVxuICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgU3RhdGVfcnVudGltZS5jcmVhdGVfbWFuYWdlciB+aXNfbmV3IHByb2plY3RfaWRcbiAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gcHJvamVjdF9tYW5hZ2VyIC0+XG4gICAgICAgICAgICAgbGV0IHByb2plY3RfaXNfY29tcHV0aW5nLCBzZXRfY29tcHV0ZXMgPSBSZWFjdC5TLmNyZWF0ZSB0cnVlIGluXG4gICAgICAgICAgICAgbGV0IHByb2plY3Rfd2F0Y2hlcl9jYW5jZWwgPVxuICAgICAgICAgICAgICAgY29tcHV0aW5nX3dhdGNoZXIgcHJvamVjdF9tYW5hZ2VyIChzZXRfY29tcHV0ZXMgP3N0ZXA6Tm9uZSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBtZSA9XG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfaWQ7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfbWFuYWdlcjtcbiAgICAgICAgICAgICAgICAgcHJvamVjdF9pc19jb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgIHByb2plY3Rfd2F0Y2hlcl9jYW5jZWw7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgZGVmYXVsdF9wYXJhbWV0ZXJzID0gc3RhdGVfdmEuZGVmYXVsdF9wYXJhbWV0ZXJzIGluXG4gICAgICAgICAgICAgbGV0IHBhcmFtcyA9XG4gICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgcHJvamVjdF9pZCBkZWZhdWx0X3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgc3RhdGVfdmEucHJvamVjdF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAobWUsIG1lIDo6IGNhdGFsb2csIHBhcmFtcykpKSlcbiAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKG1lLCBjYXRhbG9nLCBwYXJhbXMpIC0+XG4gICAgICAgICAgdXBkYXRlX3N0YXRlIG1lIGNhdGFsb2cgc3RhdGVfdmEuZGVmYXVsdF9wYXJhbWV0ZXJzIHBhcmFtcylcblxubGV0IGNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPSBhZGRfcHJvamVjdCB0cnVlIHByb2plY3RfaWRcbmxldCBzZXRfcHJvamVjdCBwcm9qZWN0X2lkID0gYWRkX3Byb2plY3QgZmFsc2UgcHJvamVjdF9pZFxuXG5sZXQgZHVtbXlfbW9kZWwgPVxuICB7XG4gICAgbW9kZWxfY3VycmVudF9pZCA9IE5vbmU7XG4gICAgbW9kZWxfY2F0YWxvZyA9IFtdO1xuICAgIG1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgIG1vZGVsX3BhcmFtZXRlcnMgPSBpbml0X2RlZmF1bHRfcGFyYW1ldGVycztcbiAgfVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcCB+ZXE6bW9kZWxfZXF1YWxcbiAgICAoZnVuIHN0YXRlIC0+XG4gICAgICBsZXQgbW9kZWxfY2F0YWxvZyA9XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBwIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaWQgPSBwLnByb2plY3RfaWQ7XG4gICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nID0gcC5wcm9qZWN0X2lzX2NvbXB1dGluZztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgc3RhdGUucHJvamVjdF9jYXRhbG9nXG4gICAgICBpblxuICAgICAgbGV0IG1vZGVsX3BhcmFtZXRlcnMgPVxuICAgICAgICBtYXRjaCBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3RhdGUuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0YXRlLmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAgIHN0YXRlLnByb2plY3RfcGFyYW1ldGVyc1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgbW9kZWxfY3VycmVudF9pZCA9XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4geCAtPiB4LnByb2plY3RfaWQpIHN0YXRlLnByb2plY3RfY3VycmVudDtcbiAgICAgICAgbW9kZWxfY2F0YWxvZztcbiAgICAgICAgbW9kZWxfcHJvamVjdF92ZXJzaW9uID0gc3RhdGUucHJvamVjdF92ZXJzaW9uO1xuICAgICAgICBtb2RlbF9wYXJhbWV0ZXJzO1xuICAgICAgfSlcbiAgICBzdGF0ZVxuXG5sZXQgc3luYyAoKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgY3VycmVudCAtPlxuICAgIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyI3Byb2plY3RfcGFyc2VcbiAgICAgIH5wYXR0ZXJuU2hhcmluZzpQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnMgW11cbiAgICA+Pj0gZnVuIG91dCAtPlxuICAgIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBzZXRfc3RhdGUgeyBzdCB3aXRoIHByb2plY3RfdmVyc2lvbiA9IHN1Y2Mgc3QucHJvamVjdF92ZXJzaW9uIH0gaW5cbiAgICBMd3QucmV0dXJuIG91dFxuXG5sZXQgcmVtb3ZlX2ZpbGVzIG1hbmFnZXIgPVxuICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgTHd0X2xpc3QuaXRlcl9wXG4gICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBtLktmaWxlcy5pZCA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgID4+PSBmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgcmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgdHJ5XG4gICAgbGV0IGN1cnJlbnQgPVxuICAgICAgTGlzdC5maW5kIChmdW4geCAtPiB4LnByb2plY3RfaWQgPSBwcm9qZWN0X2lkKSBzdGF0ZS5wcm9qZWN0X2NhdGFsb2dcbiAgICBpblxuICAgIHJlbW92ZV9maWxlcyBjdXJyZW50LnByb2plY3RfbWFuYWdlciA+Pj0gZnVuIG91dCcgLT5cbiAgICBsZXQgKCkgPSBjdXJyZW50LnByb2plY3Rfd2F0Y2hlcl9jYW5jZWwgOj0gdHJ1ZSBpblxuICAgIGxldCBwcm9qZWN0X2NhdGFsb2cgPVxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA8PiBjdXJyZW50LnByb2plY3RfaWQpXG4gICAgICAgIHN0YXRlLnByb2plY3RfY2F0YWxvZ1xuICAgIGluXG4gICAgbGV0IHByb2plY3RfY3VycmVudCA9XG4gICAgICBpZlxuICAgICAgICBtYXRjaCBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHYgLT4gdi5wcm9qZWN0X2lkID0gY3VycmVudC5wcm9qZWN0X2lkXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcHJvamVjdF9jYXRhbG9nIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgaCA6OiBfIC0+IFNvbWUgaFxuICAgICAgKSBlbHNlXG4gICAgICAgIHN0YXRlLnByb2plY3RfY3VycmVudFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNldF9zdGF0ZVxuICAgICAgICB7XG4gICAgICAgICAgcHJvamVjdF9jdXJyZW50O1xuICAgICAgICAgIHByb2plY3RfY2F0YWxvZztcbiAgICAgICAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBzdGF0ZS5kZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLnJlbW92ZSBwcm9qZWN0X2lkIHN0YXRlLnByb2plY3RfcGFyYW1ldGVycztcbiAgICAgICAgICBwcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gY3VycmVudC5wcm9qZWN0X21hbmFnZXIjdGVybWluYXRlIGluXG4gICAgc3luYyAoKSA+Pj0gZnVuIG91dCcnIC0+XG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIG91dCc7IG91dCcnIF0pXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgTHd0LnJldHVyblxuICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmdcbiAgICAgICAgIChcIlByb2plY3QgXCIgXiBwcm9qZWN0X2lkIF4gXCIgZG9lcyBub3QgZXhpc3RzXCIpKVxuXG5sZXQgcmVjIGluaXRfcGxvdF9wZXJpb2QgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiB0IC0+XG4gICAgKHRyeSBzZXRfcGxvdF9wZXJpb2QgKGZsb2F0X29mX3N0cmluZyBoKVxuICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCJbU3RhdGVfcHJvamVjdC5pbml0X3Bsb3RfcGVyaW9kXSBmYWlsZWQgdG8gcGFyc2UgaW5pdF9wbG90X3BlcmlvZCBcXFxuICAgICAgICAgICAgJyVzJ1wiXG4gICAgICAgICAgIGhcbiAgICAgICBpblxuICAgICAgIGxldCAoKSA9IENvbW1vbi5lcnJvciB+bG9jOl9fTE9DX18gKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgaW5pdF9wbG90X3BlcmlvZCB0KVxuXG5sZXQgaW5pdF9wYXVzZV9jb25kaXRpb24gKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9wYXVzZV9jb25kaXRpb24gaFxuXG5sZXQgcmVjIGluaXRfbW9kZWxfc2VlZCAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IHQgLT5cbiAgICAodHJ5IHNldF9wbG90X3BlcmlvZCAoZmxvYXRfb2Zfc3RyaW5nIGgpXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgbGV0IG1zZyA9XG4gICAgICAgICBGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIltTdGF0ZV9wcm9qZWN0LmluaXRfbW9kZWxfc2VlZF0gZmFpbGVkIHRvIHBhcnNlIG1vZGVsX3NlZWQgJyVzJ1wiIGhcbiAgICAgICBpblxuICAgICAgIGxldCAoKSA9IENvbW1vbi5lcnJvciB+bG9jOl9fTE9DX18gKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgaW5pdF9tb2RlbF9zZWVkIHQpXG5cbmxldCBpbml0X3N0b3JlX3RyYWNlIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc3RvcmVfdHJhY2UgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X2RlYWRfcnVsZXMgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zaG93X2RlYWRfcnVsZXMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X2RlYWRfYWdlbnRzIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19kZWFkX2FnZW50cyAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdCBleGlzdGluZ19wcm9qZWN0cyA6IHVuaXQgTHd0LnQgPVxuICBsZXQgYXJnX3Bsb3RfcGVyaW9kID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gcGxvdFBlcmlvZFBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJwbG90X3BlcmlvZFwiXG4gIGluXG4gIGxldCBhcmdfcGF1c2VfY29uZGl0aW9uID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gcGF1c2VDb25kaXRpb25QYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwicGF1c2VfY29uZGl0aW9uXCJcbiAgaW5cbiAgbGV0IGFyZ19tb2RlbF9zZWVkID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2VlZFBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJtb2RlbF9zZWVkXCJcbiAgaW5cbiAgbGV0IGFyZ19zdG9yZV90cmFjZSA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHN0b3JlVHJhY2VQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic3RvcmVfdHJhY2VcIlxuICBpblxuICBsZXQgYXJnX3Nob3dfZGVhZF9ydWxlcyA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19kZWFkX3J1bGVzXCJcbiAgaW5cbiAgbGV0IGFyZ19zaG93X2RlYWRfYWdlbnRzID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2hvd0RlYWRBZ2VudHNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19kZWFkX2FnZW50c1wiXG4gIGluXG4gIGxldCBhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcIlxuICBpblxuICBsZXQgKCkgPSBpbml0X3Bsb3RfcGVyaW9kIGFyZ19wbG90X3BlcmlvZCBpblxuICBsZXQgKCkgPSBpbml0X3BhdXNlX2NvbmRpdGlvbiBhcmdfcGF1c2VfY29uZGl0aW9uIGluXG4gIGxldCAoKSA9IGluaXRfbW9kZWxfc2VlZCBhcmdfbW9kZWxfc2VlZCBpblxuICBsZXQgKCkgPSBpbml0X3N0b3JlX3RyYWNlIGFyZ19zdG9yZV90cmFjZSBpblxuICBsZXQgKCkgPSBpbml0X3Nob3dfZGVhZF9ydWxlcyBhcmdfc2hvd19kZWFkX3J1bGVzIGluXG4gIGxldCAoKSA9IGluaXRfc2hvd19kZWFkX2FnZW50cyBhcmdfc2hvd19kZWFkX2FnZW50cyBpblxuICBsZXQgKCkgPVxuICAgIGluaXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgIGFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICBpblxuXG4gIGxldCBwcm9qZWN0cyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdDpbIFwiZGVmYXVsdFwiIF0gXCJwcm9qZWN0XCIgaW5cbiAgbGV0IHJlYyBhZGRfcHJvamVjdHMgcHJvamVjdHMgOiB1bml0IEx3dC50ID1cbiAgICBtYXRjaCBwcm9qZWN0cyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgQ29tbW9uLmxvZ19ncm91cF9lbmQgKCk7XG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICB8IHByb2plY3QgOjogcHJvamVjdHMgLT5cbiAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX18gKFwiYWRkIHByb2plY3QgYFwiIF4gcHJvamVjdCBeIFwiYFwiKSBpblxuICAgICAgYWRkX3Byb2plY3RcbiAgICAgICAgKExpc3QuZm9yX2FsbCAoZnVuIHggLT4geCA8PiBwcm9qZWN0KSBleGlzdGluZ19wcm9qZWN0cylcbiAgICAgICAgcHJvamVjdFxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuICgpIC0+IGFkZF9wcm9qZWN0cyBwcm9qZWN0cylcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJjcmVhdGluZyBwcm9qZWN0ICVzIGVycm9yIEBbJWFAXVwiIHByb2plY3RcbiAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uZXJyb3IgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIltTdGF0ZV9wcm9qZWN0LmluaXRdIDIgOiAlc1wiIG1zZykpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF9wcm9qZWN0cyBwcm9qZWN0cylcbiAgaW5cbiAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cCBcIltTdGF0ZV9wcm9qZWN0LmluaXRdIGFkZCBwcm9qZWN0c1wiIGluXG4gIGFkZF9wcm9qZWN0cyBleGlzdGluZ19wcm9qZWN0cyA+Pj0gZnVuICgpIC0+IGFkZF9wcm9qZWN0cyBwcm9qZWN0c1xuXG5sZXQgZXZhbF93aXRoX3Byb2plY3QgOlxuICAgICAgJ2EuXG4gICAgICBsYWJlbDpzdHJpbmcgLT5cbiAgICAgIChBcGkuY29uY3JldGVfbWFuYWdlciAtPiAnYSBBcGkubHd0X3Jlc3VsdCkgLT5cbiAgICAgICdhIEFwaS5sd3RfcmVzdWx0ID1cbiBmdW4gfmxhYmVsIGhhbmRsZXIgLT5cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnByb2plY3RfY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgJXMgZHVlIHRvIHVuYXZhaWxhYmxlIHByb2plY3QuXCIgbGFiZWxcbiAgICBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKVxuICB8IFNvbWUgY3VycmVudCAtPiBoYW5kbGVyIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyXG5cbmxldCBvbl9wcm9qZWN0X2NoYW5nZV9hc3luYyA/ZXEgfm9uID8ob3RoZXJzX2VxID0gKCA9ICkpIGluaXRfb3RoZXJzIG90aGVyc1xuICAgIGRlZmF1bHQgaGFuZGxlciA9XG4gIGxldCBlcV9wYWlyID0gTW9kcy5wYWlyX2VxdWFsIHN0YXRlX2VxdWFsIG90aGVyc19lcSBpblxuICBSZWFjdC5TLmhvbGQgP2VxIGRlZmF1bHRcbiAgICAoTHd0X3JlYWN0LkUubWFwX3BcbiAgICAgICAoZnVuIChzdCwgb3RoKSAtPlxuICAgICAgICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMd3QucmV0dXJuIGRlZmF1bHRcbiAgICAgICAgIHwgU29tZSBjdXJyZW50IC0+IGhhbmRsZXIgY3VycmVudC5wcm9qZWN0X21hbmFnZXIgb3RoKVxuICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAoUmVhY3QuUy5vbiB+ZXE6ZXFfcGFpciBvbiAoaW5pdF9zdGF0ZSwgaW5pdF9vdGhlcnMpXG4gICAgICAgICAgICAgKFJlYWN0LlMuUGFpci5wYWlyIH5lcTplcV9wYWlyIHN0YXRlIG90aGVycykpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgc2xvdCA9IHsgbG9jYWw6IHN0cmluZyBvcHRpb247IG5hbWU6IHN0cmluZyB9XG50eXBlIGFjdGl2ZSA9IHsgcmFuazogaW50OyBjdXJzb3JfcG9zOiBMb2MucG9zaXRpb247IG91dF9vZl9zeW5jOiBib29sIH1cbnR5cGUgbW9kZWwgPSB7IGN1cnJlbnQ6IGFjdGl2ZSBvcHRpb247IGRpcmVjdG9yeTogc2xvdCBNb2RzLkludE1hcC50IH1cblxubGV0IGR1bW15X2N1cnNvcl9wb3MgPSB7IExvYy5saW5lID0gLTE7IExvYy5jaHIgPSAwIH1cbmxldCBibGFua19zdGF0ZSA9IHsgY3VycmVudCA9IE5vbmU7IGRpcmVjdG9yeSA9IE1vZHMuSW50TWFwLmVtcHR5IH1cbmxldCBtb2RlbF9ob29rZWQsIHNldF9kaXJlY3Rvcnlfc3RhdGUgPSBIb29rZWQuUy5jcmVhdGUgYmxhbmtfc3RhdGVcbmxldCBtb2RlbCA9IEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBtb2RlbF9ob29rZWRcblxudHlwZSByZWZyZXNoID0geyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IGxpbmU6IGludCBvcHRpb24gfVxuXG5sZXQgcmVmcmVzaF9maWxlX2hvb2ssIHJlZnJlc2hfZmlsZV9ob29rX3NlbmQgPVxuICBIb29rZWQuRS5jcmVhdGUgfmRlYnVnOlwicmVmcmVzaF9maWxlX2hvb2tcIiAoKVxuXG5sZXQgY3VycmVudF9maWxlbmFtZSA9XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBtIC0+XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgKGZ1biB7IG5hbWU7IF8gfSAtPiBuYW1lKVxuICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgICAgIG0uY3VycmVudClcbiAgICBtb2RlbFxuXG5sZXQgYXBwbHlfb25fY3VycmVudF9wb3Nfb2ZfbW9kZWwgZiBtID1cbiAgT3B0aW9uX3V0aWwuYmluZFxuICAgIChmdW4geCAtPlxuICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgIChmdW4geyBuYW1lOyBfIH0gLT4gZiBuYW1lIHguY3Vyc29yX3BvcylcbiAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgbS5jdXJyZW50XG5cbmxldCB3aXRoX2N1cnJlbnRfcG9zID9lcSA/KG9uID0gSG9va2VkLlMuY29uc3QgdHJ1ZSkgZiBkZWZhdWx0ID1cbiAgSG9va2VkLlMuZm1hcCA/ZXFcbiAgICAoYXBwbHlfb25fY3VycmVudF9wb3Nfb2ZfbW9kZWwgZilcbiAgICBkZWZhdWx0XG4gICAgKEhvb2tlZC5TLm9uIG9uIGJsYW5rX3N0YXRlIG1vZGVsX2hvb2tlZClcblxubGV0IHdpdGhfY3VycmVudF9maWxlIGYgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHN0YXRlLmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID0gXCJBdHRlbXB0IHRvIGZldGNoIGZpbGUgd2l0aCBub25lIHNlbGVjdGVkLlwiIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gIHwgU29tZSBhY3RpdmUgLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYWN0aXZlLnJhbmsgc3RhdGUuZGlyZWN0b3J5IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkludGVybmFsIGluY29uc2lzdGVudGN5OiBObyBmaWxlIGF0IHNlbGVjdGVkIHJhbmsuXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZylcbiAgICB8IFNvbWUgeCAtPiBmIHN0YXRlIGFjdGl2ZSB4KVxuXG5sZXQgZ2V0X2ZpbGUgKCkgOiAoc3RyaW5nICogc3RyaW5nKSBBcGkubHd0X3Jlc3VsdCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gX3N0YXRlIGFjdGl2ZSAtPiBmdW5jdGlvblxuICAgIHwgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSAtPlxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJnZXRfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9nZXQgbmFtZVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuICh0ZXh0LCByYW5rJykgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGFjdGl2ZS5yYW5rID0gcmFuaycgdGhlblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAodGV4dCwgbmFtZSkpXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yX21zZyA9IFwiSW5jb25zaXN0ZW5jeSBpbiByYW5rIHdoaWxlIGdldF9maWxlLlwiIGluXG4gICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKVxuICAgICAgICAgICAgICAgICAgKSkpXG4gICAgfCB7IGxvY2FsID0gU29tZSB0ZXh0OyBuYW1lIH0gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHRleHQsIG5hbWUpKSlcblxubGV0IHNlbmRfcmVmcmVzaCAobGluZSA6IGludCBvcHRpb24pIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICgqIG9ubHkgc2VuZCByZWZyZXNoIGlmIHRoZXJlIGlzIGEgY3VycmVudCBmaWxlICopXG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIG1vZGVsKS5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgeyBvdXRfb2Zfc3luYzsgXyB9IC0+XG4gICAgaWYgb3V0X29mX3N5bmMgdGhlblxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZ1xuICAgICAgICAgICBcIkZpbGUgd2FzIG5vdCBpbiBzeW5jLiBTd2l0Y2hpbmcgbWF5IGxlYWQgdG8gZGF0YSBsb3N0LlwiKVxuICAgIGVsc2VcbiAgICAgIGdldF9maWxlICgpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoY29udGVudCwgZmlsZW5hbWUpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJSZWZyZXNoIGZpbGVcIiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcmVmcmVzaF9maWxlX2hvb2tfc2VuZCB7IGZpbGVuYW1lOyBjb250ZW50OyBsaW5lIH0gaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQgY3VycmVudCBjYXRhbG9nID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBsZXQgZGlyZWN0b3J5ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeyBLZmlsZXMucG9zaXRpb247IGlkIH0gLT5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHBvc2l0aW9uIHsgbmFtZSA9IGlkOyBsb2NhbCA9IE5vbmUgfSBhY2MpXG4gICAgICAoaWYgcmVzZXQgdGhlblxuICAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHlcbiAgICAgICBlbHNlXG4gICAgICAgICBzdGF0ZS5kaXJlY3RvcnkpXG4gICAgICBjYXRhbG9nXG4gIGluXG4gIHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50OyBkaXJlY3RvcnkgfVxuXG5sZXQgY3JlYXRlX2ZpbGUgfihmaWxlbmFtZSA6IHN0cmluZykgfihjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcImNyZWF0ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gY2F0YWxvZyAtPlxuICAgICAgICAgICAgICBsZXQgbWF0Y2hpbmdfZmlsZSA9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gZmlsZV9tZXRhZGF0YSAtPiBmaWxlbmFtZSA9IGZpbGVfbWV0YWRhdGEuS2ZpbGVzLmlkKVxuICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggbWF0Y2hpbmdfZmlsZSB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICBsZXQgbWF4X3BvcyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IC0+IG1heCBhY2MgcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2NyZWF0ZSAoc3VjYyBtYXhfcG9zKSBmaWxlbmFtZSBjb250ZW50XG4gICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBjYXRhbG9nJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rIChjYXRhbG9nJywgc3VjYyBtYXhfcG9zKSkpKVxuICAgICAgICAgICAgICB8IG1ldGFkYXRhIDo6IF8gLT5cbiAgICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfdXBkYXRlIGZpbGVuYW1lIGNvbnRlbnRcbiAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwub2sgKGNhdGFsb2csIG1ldGFkYXRhLktmaWxlcy5wb3NpdGlvbikpKSlcbiAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKGNhdGFsb2csIGN1cnJlbnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0OmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5rID0gY3VycmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luYyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBzZW5kX3JlZnJlc2ggTm9uZSkpKVxuXG5sZXQgcmVjIGNob29zZV9maWxlIGNob2ljZSA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgIEZvcm1hdC5zcHJpbnRmIFwiRmFpbGVkIHRvIHN3aXRjaCBmaWxlICVzLlwiIGNob2ljZVxuICAgIGluXG4gICAgQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2dcbiAgfCB7IEtmaWxlcy5pZDsgcG9zaXRpb24gfSA6OiB0IC0+XG4gICAgaWYgY2hvaWNlID0gaWQgdGhlblxuICAgICAgUmVzdWx0X3V0aWwub2sgcG9zaXRpb25cbiAgICBlbHNlXG4gICAgICBjaG9vc2VfZmlsZSBjaG9pY2UgdFxuXG5sZXQgc2VsZWN0X2ZpbGUgKGZpbGVuYW1lIDogc3RyaW5nKSAobGluZSA6IGludCBvcHRpb24pIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2VsZWN0X2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3RcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biByYW5rIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldDpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBzZW5kX3JlZnJlc2ggbGluZSlcbiAgICAgICAgICAgICAgICAoY2hvb3NlX2ZpbGUgZmlsZW5hbWUgY2F0YWxvZykpKVxuXG5sZXQgc2V0X2NvbnRlbnQgKGNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIC0+IGZ1bmN0aW9uXG4gICAgfCB7IGxvY2FsID0gU29tZSBfOyBuYW1lIH0gLT5cbiAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgYWN0aXZlLnJhbmtcbiAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJhbmsgPSBhY3RpdmUucmFuaztcbiAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBhY3RpdmUuY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IHN0YXRlLmRpcmVjdG9yeTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29udGVudFwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV91cGRhdGUgbmFtZSBjb250ZW50KSlcblxubGV0IHNldF9jb21waWxlIGZpbGVfaWQgKGNvbXBpbGUgOiBib29sKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gIHwgU29tZSAocmFuaywgeyBsb2NhbCA9IFNvbWUgY29udGVudDsgbmFtZSB9KSAtPlxuICAgIGlmIGNvbXBpbGUgdGhlbiAoXG4gICAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJhbmsgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb21waWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX2NyZWF0ZSByYW5rIG5hbWUgY29udGVudClcbiAgICApIGVsc2VcbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgKHJhbmssIHsgbG9jYWwgPSBOb25lOyBuYW1lIH0pIC0+XG4gICAgaWYgY29tcGlsZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICBlbHNlXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb21waWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX2dldCBuYW1lXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKGNvbnRlbnQsIHJhbmsnKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgcmFuayA9IHJhbmsnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgcmFua1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBsb2NhbCA9IFNvbWUgY29udGVudDsgbmFtZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2V0X2NvbXBpbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIG1hbmFnZXIgLT4gbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lKVxuICAgICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgICAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbmN5IGluIHJhbmsgd2hpbGUgc2V0X2NvbXBpbGUuXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gICAgICAgICAgICAgICAgICApKSlcblxubGV0IHJlbW92ZV9maWxlICgpIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIHsgbG9jYWw7IG5hbWUgfSAtPlxuICAgICAgbGV0IGRpcmVjdG9yeSA9IE1vZHMuSW50TWFwLnJlbW92ZSBhY3RpdmUucmFuayBzdGF0ZS5kaXJlY3RvcnkgaW5cbiAgICAgIGxldCBjdXJyZW50ID1cbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGZ1biAocmFuaywgXykgLT5cbiAgICAgICAgICAgIHsgcmFuazsgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7IG91dF9vZl9zeW5jID0gZmFsc2UgfSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAucm9vdCBkaXJlY3RvcnkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBsZXQgeCA9IHNlbmRfcmVmcmVzaCBOb25lIGluXG4gICAgICBtYXRjaCBsb2NhbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJyZW1vdmVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lID4+PSBmdW4geSAtPlxuICAgICAgICAgICAgeCA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHg7IHkgXSkpKVxuXG5sZXQgZG9fYV9tb3ZlIHN0YXRlIGZpbGVfaWQgcmFuayA9XG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gIHwgU29tZSAocmFuaycsICh7IGxvY2FsOyBfIH0gYXMgeCkpIC0+XG4gICAgbGV0IGRpcmVjdG9yeSA9XG4gICAgICBNb2RzLkludE1hcC5hZGQgcmFuayB4IChNb2RzLkludE1hcC5yZW1vdmUgcmFuaycgc3RhdGUuZGlyZWN0b3J5KVxuICAgIGluXG4gICAgbGV0IGN1cnJlbnQgPVxuICAgICAgbWF0Y2ggc3RhdGUuY3VycmVudCB3aXRoXG4gICAgICB8IFNvbWUgeyByYW5rID0gcG9zOyBjdXJzb3JfcG9zOyBvdXRfb2Zfc3luYyB9IHdoZW4gcG9zID0gcmFuaycgLT5cbiAgICAgICAgU29tZSB7IHJhbms7IGN1cnNvcl9wb3M7IG91dF9vZl9zeW5jIH1cbiAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBpZiBsb2NhbCA9IE5vbmUgdGhlblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJyZW1vdmVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9tb3ZlIHJhbmsgZmlsZV9pZFxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9KSkpXG4gICAgZWxzZVxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSlcblxubGV0IHJlYyBzZXRfcG9zaXRpb24gc3RhdGUgZmlsZV9pZCByYW5rID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gcmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICB8IFNvbWUgeyBuYW1lOyBfIH0gLT5cbiAgICBpZiBmaWxlX2lkID0gbmFtZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzdGF0ZSlcbiAgICBlbHNlXG4gICAgICBzZXRfcG9zaXRpb24gc3RhdGUgbmFtZSAoc3VjYyByYW5rKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gc3RhdGUnIC0+XG4gICAgICAgICAgICAgIGRvX2FfbW92ZSBzdGF0ZScgZmlsZV9pZCByYW5rKVxuICB8IE5vbmUgLT4gZG9fYV9tb3ZlIHN0YXRlIGZpbGVfaWQgcmFua1xuXG5sZXQgb3JkZXJfZmlsZXMgKGZpbGVuYW1lcyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBsZXQgcmVjIF9vcmRlcl9maWxlIGZpbGVuYW1lcyBzdGF0ZSBpbmRleCA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICAgIG1hdGNoIGZpbGVuYW1lcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSBzdGF0ZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgfCBmaWxlX2lkIDo6IHRhaWwgLT5cbiAgICAgIHNldF9wb3NpdGlvbiBzdGF0ZSBmaWxlX2lkIGluZGV4XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBzdGF0ZScgLT5cbiAgICAgICAgICAgICAgX29yZGVyX2ZpbGUgdGFpbCBzdGF0ZScgKGluZGV4ICsgMSkpXG4gIGluXG4gIF9vcmRlcl9maWxlIGZpbGVuYW1lcyAoUmVhY3QuUy52YWx1ZSBtb2RlbCkgMFxuXG5sZXQgY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaCA9XG4gIGxldCB2ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCB2LmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgcmFuazsgb3V0X29mX3N5bmM7IF8gfSAtPlxuICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgIHtcbiAgICAgICAgY3VycmVudCA9XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByYW5rO1xuICAgICAgICAgICAgICBjdXJzb3JfcG9zID0geyBMb2MubGluZSA9IHN1Y2MgbGluZTsgY2hyID0gY2ggfTtcbiAgICAgICAgICAgICAgb3V0X29mX3N5bmM7XG4gICAgICAgICAgICB9O1xuICAgICAgICBkaXJlY3RvcnkgPSB2LmRpcmVjdG9yeTtcbiAgICAgIH1cblxubGV0IG91dF9vZl9zeW5jIG91dF9vZl9zeW5jID1cbiAgbGV0IHYgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHYuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBfIH0gLT5cbiAgICBzZXRfZGlyZWN0b3J5X3N0YXRlXG4gICAgICB7XG4gICAgICAgIGN1cnJlbnQgPSBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfTtcbiAgICAgICAgZGlyZWN0b3J5ID0gdi5kaXJlY3Rvcnk7XG4gICAgICB9XG5cbmxldCBzeW5jID8ocmVzZXQgPSBmYWxzZSkgKCkgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZWxlY3RfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgbGV0IGNhbmQgPSAoUmVhY3QuUy52YWx1ZSBtb2RlbCkuY3VycmVudCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgcmVzZXRcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYW5kIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgIChmdW4geyBLZmlsZXMucG9zaXRpb247IF8gfSAtPiB4LnJhbmsgPSBwb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYXRhbG9nIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBjYW5kXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0IHBvcyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBOb25lKSlcblxubGV0IGxvYWRfZGVmYXVsdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWU6XCJtb2RlbC5rYVwiIH5jb250ZW50OlwiXCJcbiAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICBcIltTdGF0ZV9maWxlLmxvYWRfZGVmYXVsdF06IGNyZWF0aW5nIGRlZmF1bHQgZmlsZSBlcnJvckAgXFxcbiAgICAgICAgICAgICAgIEBbPHY+JWFAXVwiXG4gICAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICAgIGVycm9yc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmVycm9yIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBsb2FkX21vZGVscyAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgbW9kZWxzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwibW9kZWxcIiBpblxuICBsZXQgcmVjIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSA6IHVuaXQgTHd0LnQgPVxuICAgIG1hdGNoIG1vZGVscyB3aXRoXG4gICAgfCBbXSAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IG1vZGVsIDo6IG1vZGVscyAtPlxuICAgICAgKCogZmV0Y2ggbW9kZWwgKilcbiAgICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5nZXQgbW9kZWxcbiAgICAgID4+PSAoZnVuIGNvbnRlbnQgLT5cbiAgICAgICAgICAgIGlmIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPD4gMjAwIHRoZW5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiYmFkIHJlc3BvbnNlIGNvZGUgJWQgZmV0Y2hpbmcgdXJsICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlIG1vZGVsKSlcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFVybC51cmxfb2Zfc3RyaW5nIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LnVybFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcmV0cmlldmUgdXJsICVzXCIgbW9kZWwpKVxuICAgICAgICAgICAgICB8IFNvbWUgdSAtPlxuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBMaXN0X3V0aWwubGFzdFxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgVXJsLkh0dHAgaCB8IFVybC5IdHRwcyBoIC0+IGguVXJsLmh1X3BhdGhcbiAgICAgICAgICAgICAgICAgICAgfCBVcmwuRmlsZSBmIC0+IGYuVXJsLmZ1X3BhdGgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZWNvbnRlbnQgOiBzdHJpbmcgPVxuICAgICAgICAgICAgICAgICAgY29udGVudC5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29udGVudFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKGZpbGVuYW1lLCBmaWxlY29udGVudCkpXG4gICAgICAgICAgICApKVxuICAgICAgPj49ICgqIGFkZCBjb250ZW50ICopXG4gICAgICBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIChmaWxlbmFtZSwgY29udGVudCkgLT5cbiAgICAgICAgICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWUgfmNvbnRlbnRcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmlsZW5hbWUpKSlcbiAgICAgID4+PSAoKiBzZWxlY3QgbW9kZWwgaWYgbmVlZGVkICopXG4gICAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgICAgaWYgbG9hZF9maWxlIHRoZW5cbiAgICAgICAgICAgIHNlbGVjdF9maWxlIGZpbGVuYW1lIE5vbmVcbiAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IGFkZF9tb2RlbHMgbW9kZWxzIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcImNyZWF0aW5nIGxvYWRpbmcgdXJsICVzIGVycm9yQCBAWzx2PiVhQF1cIiBtb2RlbFxuICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDb21tb24uZXJyb3IgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiW1N0YXRlX2ZpbGUubG9hZF9tb2RlbF0gJXNcIiBtc2cpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICBpblxuICBtYXRjaCBtb2RlbHMgd2l0aFxuICB8IFtdIC0+IGxvYWRfZGVmYXVsdCAoKVxuICB8IF8gOjogXyAtPiBhZGRfbW9kZWxzIG1vZGVscyB0cnVlXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdCA+Pj0gbG9hZF9tb2RlbHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBmb250U2l6ZVBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwRm9udFNpemVcIlxubGV0IGRlZmF1bHRGb250U2l6ZSA9IDEuNFxubGV0IG1pbkZvbnRTaXplID0gMC4yXG5sZXQgbWF4Rm9udFNpemUgPSAzLlxubGV0IGN1cnJlbnRGb250U2l6ZSA9IHJlZiBkZWZhdWx0Rm9udFNpemVcblxubGV0IGluaXRGcm9tU3RvcmFnZSAoKSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgKGZ1biAoKSAtPiBjdXJyZW50Rm9udFNpemUgOj0gZGVmYXVsdEZvbnRTaXplKVxuICAgIChmdW4gc3QgLT5cbiAgICAgIGN1cnJlbnRGb250U2l6ZSA6PVxuICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgIChzdCMjZ2V0SXRlbSBmb250U2l6ZVBhcmFtSWQpXG4gICAgICAgICAgKGZ1biAoKSAtPiBkZWZhdWx0Rm9udFNpemUpXG4gICAgICAgICAgSnMucGFyc2VGbG9hdClcblxubGV0IHNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgPVxuICBsZXQgdicgPSBzdHJpbmdfb2ZfZmxvYXQgIWN1cnJlbnRGb250U2l6ZSBpblxuICBKcy5PcHRkZWYuaXRlciBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UgKGZ1biBzdCAtPlxuICAgICAgc3QjI3NldEl0ZW0gZm9udFNpemVQYXJhbUlkIChKcy5zdHJpbmcgdicpKVxuXG5sZXQgdXBkYXRlRm9udFNpemUgfmRlbHRhID1cbiAgbGV0ICgpID1cbiAgICBjdXJyZW50Rm9udFNpemUgOj1cbiAgICAgIG1heCBtaW5Gb250U2l6ZSAobWluICghY3VycmVudEZvbnRTaXplICsuIGRlbHRhKSBtYXhGb250U2l6ZSlcbiAgaW5cbiAgbGV0IHYnID0gc3RyaW5nX29mX2Zsb2F0ICFjdXJyZW50Rm9udFNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkjIy5zdHlsZSMjLmZvbnRTaXplIDo9IEpzLnN0cmluZyAodicgXiBcImVtXCIpXG4gIGluXG4gICgpXG5cbmxldCBhZ2VudF9jb2xvcmluZyA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgKCkgPSBpbml0RnJvbVN0b3JhZ2UgKCkgaW5cbiAgTHd0LnJldHVybl91bml0XG5cbmxldCBzeW5jICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogcHJpdmF0ZSBzaW11bGF0aW9uIHN0YXRlICopXG50eXBlIHNpbXVsYXRpb25fc3RhdGUgPVxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAoKiBzaW11bGF0aW9uIGlzIHVuYXZhaWxhYmxlICopXG4gIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAoKiBzaW11bGF0aW9uIGlzIGJsb2NrZWQgb24gYW4gb3BlcmF0aW9uICopXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBvZiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9cbigqIHRoZSBzaW11bGF0aW9uIGlzIHJlYWR5ICopXG5cbnR5cGUgdCA9IHsgc2ltdWxhdGlvbl9zdGF0ZTogc2ltdWxhdGlvbl9zdGF0ZSB9XG5cbmxldCBnZXRfc2ltdWxhdGlvbl9pbmZvIHNpbXVsYXRpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgbWF0Y2ggc2ltdWxhdGlvbi5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgLT4gTm9uZVxuICB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgLT4gTm9uZVxuICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IFNvbWUgc2ltdWxhdGlvbl9pbmZvXG5cbigqIHB1YmxpYyBzaW11bGF0aW9uIHN0YXR1cyAqKVxudHlwZSBzaW11bGF0aW9uX3N0YXR1cyA9IFNUT1BQRUQgfCBJTklUQUxJWklORyB8IFJVTk5JTkcgfCBQQVVTRURcblxubGV0IHNpbXVsYXRpb25fc3RhdHVzX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgU1RPUFBFRCAtPiBcIlN0b3BwZWRcIlxuICB8IElOSVRBTElaSU5HIC0+IFwiSW5pdGFsaXppbmdcIlxuICB8IFJVTk5JTkcgLT4gXCJSdW5uaW5nXCJcbiAgfCBQQVVTRUQgLT4gXCJQYXVzZWRcIlxuXG5sZXQgZHVtbXlfbW9kZWwgPSB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfVxuXG5sZXQgbW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbCA6IHNpbXVsYXRpb25fc3RhdHVzID1cbiAgbWF0Y2ggbW9kZWwuc2ltdWxhdGlvbl9zdGF0ZSB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IFNUT1BQRURcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IElOSVRBTElaSU5HXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gLT5cbiAgICBpZlxuICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgdGhlblxuICAgICAgUlVOTklOR1xuICAgIGVsc2VcbiAgICAgIFBBVVNFRFxuXG4oKiBwcml2YXRlIHN0YXRlICopXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIGR1bW15X21vZGVsXG5cbigqIHB1YmxpYyBtb2RlbCAqKVxubGV0IG1vZGVsID0gc3RhdGVcblxubGV0IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIChzaW11bGF0aW9uX3N0YXRlIDogc2ltdWxhdGlvbl9zdGF0ZSkgOiB1bml0ID1cbiAgbGV0ICgpID0gc2V0X3N0YXRlIHsgc2ltdWxhdGlvbl9zdGF0ZSB9IGluXG4gICgpXG5cbmxldCBldmFsX3dpdGhfc2ltX21hbmFnZXIgOlxuICAgICAgJ2EuXG4gICAgICBsYWJlbDpzdHJpbmcgLT5cbiAgICAgIChBcGkuY29uY3JldGVfbWFuYWdlciAtPiB0IC0+ICdhIEFwaS5sd3RfcmVzdWx0KSAtPlxuICAgICAgJ2EgQXBpLmx3dF9yZXN1bHQgPVxuIGZ1biB+bGFiZWwgaGFuZGxlciAtPlxuICBsZXQgcHJvamVjdF9oYW5kbGVyIG1hbmFnZXIgPSBoYW5kbGVyIG1hbmFnZXIgKFJlYWN0LlMudmFsdWUgc3RhdGUpIGluXG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsIHByb2plY3RfaGFuZGxlclxuXG5sZXQgZmFpbF9sd3QgZXJyb3JfbXNnID0gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG5cbmxldCBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfihsYWJlbCA6IHN0cmluZylcbiAgICA/KHN0b3BwZWQgOiBBcGkuY29uY3JldGVfbWFuYWdlciAtPiAnYSBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBmdW4gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gc3RvcHBlZFwiKVxuICAgID8oaW5pdGlhbGl6aW5nIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgZnVuIF8gLT4gZmFpbF9sd3QgXCJTaW11bGF0aW9uIGluaXRhbGl6aW5nXCIpXG4gICAgPyhyZWFkeSA6XG4gICAgICAgIEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyAtPiAnYSBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBmdW4gXyBfIC0+IGZhaWxfbHd0IFwiU2ltdWxhdGlvbiByZWFkeVwiKSAoKSA6ICdhIEFwaS5sd3RfcmVzdWx0ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyIH5sYWJlbCAoZnVuIG1hbmFnZXIgcyAtPlxuICAgICAgbWF0Y2ggcy5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgICAgIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IHN0b3BwZWQgbWFuYWdlclxuICAgICAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IGluaXRpYWxpemluZyBtYW5hZ2VyXG4gICAgICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IHJlYWR5IG1hbmFnZXIgc2ltdWxhdGlvbl9pbmZvKVxuXG5sZXQgZXZhbF93aGVuX3JlYWR5IH4obGFiZWwgOiBzdHJpbmcpXG4gICAgPyhoYW5kbGVyIDogdW5pdCBBcGkucmVzdWx0IC0+IHVuaXQgTHd0LnQgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4gICAgKG9wZXJhdGlvbiA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IHVuaXQgQXBpLmx3dF9yZXN1bHQpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWxcbiAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gOiB1bml0IEFwaS5sd3RfcmVzdWx0IC0+IG9wZXJhdGlvbiBtYW5hZ2VyKVxuICAgICAgICAoKVxuICAgICAgPj49IGhhbmRsZXIpXG5cbigqIHRvIHN5bmNoIHN0YXRlIG9mIGFwcGxpY2F0aW9uIHdpdGggcnVudGltZSAqKVxubGV0IHNsZWVwX3RpbWUgPSAxLjBcblxubGV0IHJlYyBzeW5jICgpID1cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnNpbXVsYXRpb25fc3RhdGUgd2l0aFxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgLT5cbiAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIF8gLT5cbiAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInN5bmNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgKCogZ2V0IGN1cnJlbnQgZGlyZWN0b3J5ICopXG4gICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIHNpbXVsYXRpb25faW5mbyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgc2xlZXBfdGltZSA+Pj0gc3luY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCByZWZyZXNoICgpID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzeW5jXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAoKiBnZXQgY3VycmVudCBkaXJlY3RvcnkgKilcbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc2V0X3N0YXRlXG4gICAgICAgICAgICAgICAgICB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbyB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHN5bmMgKCkpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc2V0X3N0YXRlIHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgY29udGludWVfc2ltdWxhdGlvbiAocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwiY29udGludWVfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gY29udGludWUgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBjb250aW51ZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NvbnRpbnVlIHBhdXNlX2NvbmRpdGlvblxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOnN5bmMpXG4gICAgKClcblxubGV0IHBhdXNlX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInBhdXNlX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gc3RvcHBlZFwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIChfIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3BhdXNlKVxuICAgICgpXG5cbmxldCBzdG9wX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInN0b3Bfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdG9wIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciAoXyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICAgICgpXG5cbmxldCBzdGFydF9zaW11bGF0aW9uIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6XG4gICAgdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJzdGFydF9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBvbl9lcnJvciBlcnJvcl9tc2dzIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICAgIHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRDtcbiAgICAgICAgKCogdHVybiB0aGUgbGlnaHRzIG9mZiAqKVxuICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGVsZXRlID4+PSBmdW4gXyAtPlxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcl9tc2dzKVxuICAgICAgaW5cbiAgICAgIEx3dC5jYXRjaFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgKCogc2V0IHN0YXRlIHRvIGluaXRhbGl6ZSAqKVxuICAgICAgICAgIHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkc7XG4gICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3N0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm8pXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gc2ltdWxhdGlvbl9zdGF0dXMgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzaW11bGF0aW9uX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX3N0YXR1c1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIHNpbXVsYXRpb25fc3RhdGU7XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcl9tc2cgLT5cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRDtcbiAgICAgICAgICAgICAgICAgIG9uX2Vycm9yIGVycm9yX21zZylcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6c3luYylcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJSdW50aW1lIGVycm9yICVzXCIgZXJyb3IgaW5cbiAgICAgICAgICAgIG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbXNnIF1cbiAgICAgICAgICB8IFN5c19lcnJvciBtZXNzYWdlIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSBdXG4gICAgICAgICAgfCBfIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgXCJJbml0aWFsaXphdGlvbiBlcnJvclwiIF0pKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBfIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHJ1bm5pbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKSlcbiAgICAoKVxuXG5sZXQgaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKGNvZGUgOiBzdHJpbmcpIDogc3RyaW5nIEFwaS5sd3RfcmVzdWx0ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInBlcnR1cmJfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBydW5uaW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2ludGVydmVudGlvbiBjb2RlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgc3luYyAoKVxuICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIG91dCkpKSlcbiAgICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHN5bmMgKCkgOiB1bml0IEx3dC50ID1cbiAgU3RhdGVfcHJlZmVyZW5jZXMuc3luYyAoKSA+Pj0gU3RhdGVfcnVudGltZS5zeW5jID4+PSBTdGF0ZV9wcm9qZWN0LnN5bmNcbiAgPj49IGZ1biBfIC0+XG4gIFN0YXRlX2ZpbGUuc3luYyAoKSA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0XG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9XG4gIEx3dC5yZXR1cm5fdW5pdCA+Pj0gU3RhdGVfcHJlZmVyZW5jZXMuaW5pdCA+Pj0gU3RhdGVfcnVudGltZS5pbml0XG4gID4+PSBTdGF0ZV9wcm9qZWN0LmluaXQgPj49IFN0YXRlX2ZpbGUuaW5pdCA+Pj0gU3RhdGVfc2ltdWxhdGlvbi5pbml0ID4+PSBzeW5jXG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID0gQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPiBMd3QucmV0dXJuX3VuaXQgPj49IGluaXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbW9kZWxfaW50ZXJ2ZW50aW9uLCBzZXRfbW9kZWxfaW50ZXJ2ZW50aW9uID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSB0ID0ge1xuICBzdGF0ZV9lcnJvcl9lcnJvcnM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgX3N0YXRlX2Vycm9yX2xvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmxldCBzdGF0ZV9lcnJvciwgc3RhdGVfZXJyb3Jfc2V0ID0gSG9va2VkLlMuY3JlYXRlIH5kZWJ1ZzpcInN0YXRlX2Vycm9yXCIgW11cblxubGV0IGNsZWFyX2Vycm9ycyBsb2NhdGlvbiA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJDbGVhcl9lcnJvcnMgJXMgXCIgbG9jYXRpb24pKVxuICBpblxuICBzdGF0ZV9lcnJvcl9zZXQgfmRlYnVnOlwiW1N0YXRlX2Vycm9yLmNsZWFyX2Vycm9yc11cIiBbXVxuXG5sZXQgaGFzX2Vycm9ycyAoKSA9XG4gIG1hdGNoIEhvb2tlZC5TLnZhbHVlIHN0YXRlX2Vycm9yIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IF8gOjogXyAtPiB0cnVlXG5cbmxldCBhZGRfZXJyb3IgKGxvY2F0aW9uIDogc3RyaW5nKSAoZXJyb3JzIDogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSA9XG4gICgqIGxvZyBsb2NhdGlvbiBhbmQgZXJyb3JzIGlmIGRlYnVnZ2luZyBpcyBlbmFibGVkICopXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgXCJbU3RhdGVfZXJyb3IuYWRkX2Vycm9yXSB7IGxvY2F0aW9uIDogXFxcIiVzXFxcIiAsIGVycm9ycyA6IFtAWyVhQF1dIH1cIlxuICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICBlcnJvcnMpKVxuICBpblxuICBsZXQgY3VycmVudF9zdGF0ZV9lcnJvciA6IHQgbGlzdCA9IEhvb2tlZC5TLnZhbHVlIHN0YXRlX2Vycm9yIGluXG4gIGxldCBuZXdfc3RhdGVfZXJyb3IgOiB0IGxpc3QgPVxuICAgIHsgc3RhdGVfZXJyb3JfZXJyb3JzID0gZXJyb3JzOyBfc3RhdGVfZXJyb3JfbG9jYXRpb24gPSBsb2NhdGlvbiB9XG4gICAgOjogY3VycmVudF9zdGF0ZV9lcnJvclxuICBpblxuICBzdGF0ZV9lcnJvcl9zZXQgfmRlYnVnOlwiYWRkX2Vycm9yXCIgbmV3X3N0YXRlX2Vycm9yXG5cbmxldCBlcnJvcnMgPVxuICBIb29rZWQuUy5tYXAgfmRlYnVnOlwiZXJyb3JzXCJcbiAgICAoZnVuIHN0YXRlX2Vycm9yIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyB2YWx1ZSAtPiB2YWx1ZS5zdGF0ZV9lcnJvcl9lcnJvcnMgQCBhY2MpXG4gICAgICAgIFtdIHN0YXRlX2Vycm9yKVxuICAgIHN0YXRlX2Vycm9yXG5cbmxldCB3cmFwIDogJ2EuID9hcHBlbmQ6Ym9vbCAtPiBzdHJpbmcgLT4gJ2EgQXBpLmx3dF9yZXN1bHQgLT4gJ2EgQXBpLmx3dF9yZXN1bHRcbiAgICA9XG4gZnVuID8oYXBwZW5kID0gZmFsc2UpIGxvYyByIC0+XG4gIHJcbiAgPj49XG4gIGxldCAoKSA9IGlmIG5vdCBhcHBlbmQgdGhlbiBjbGVhcl9lcnJvcnMgbG9jIGluXG4gIFJlc3VsdF91dGlsLmZvbGRcbiAgICB+b2s6KGZ1biByIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHIpKVxuICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgbGV0ICgpID0gYWRkX2Vycm9yIGxvYyBlcnJvcnMgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2dzIGVycm9ycykpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0b2dnbGVfZWxlbWVudCAocHJvamVjdGlvbiA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24gLT4gYm9vbClcbiAgICAoY29udGVudCA6IFs8IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIF0gSHRtbC5lbHQgSHRtbC5saXN0X3dyYXApID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAoaWYgcHJvamVjdGlvbiAoU3RhdGVfc2ltdWxhdGlvbi5nZXRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsKVxuICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBbIFwic2hvd1wiIF1cbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgWyBcImhpZGRlblwiIF0pKSk7XG4gICAgICBdXG4gICAgY29udGVudFxuXG5sZXQgbGFiZWxfbmV3cyB0YWJfaXNfYWN0aXZlIGNvdW50ZXIgPVxuICBsZXQgbGFzdF92YWx1ZSA9XG4gICAgcmVmXG4gICAgICAobGV0IHNpbXVsYXRpb25faW5mbyA9XG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcbiAgICAgICBpblxuICAgICAgIGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvKVxuICBpblxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5sMlxuICAgICAgIChmdW4gdGFiX2FjdGl2ZSBtb2RlbCAtPlxuICAgICAgICAgaWYgdGFiX2FjdGl2ZSB0aGVuXG4gICAgICAgICAgIFtdXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdiA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICAgIGlmIHYgPD4gIWxhc3RfdmFsdWUgJiYgdiA+IDAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0ICgpID0gbGFzdF92YWx1ZSA6PSB2IGluXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImxhYmVsXCI7IFwibGFiZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmV3XCIgXTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgIFtdXG4gICAgICAgICApKVxuICAgICAgIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGJhZGdlIChjb3VudGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiAtPiBpbnQpID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgbGV0IGNvdW50ID0gY291bnRlciBzaW11bGF0aW9uX2luZm8gaW5cbiAgICAgICAgIGlmIGNvdW50ID4gMCB0aGVuXG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBIdG1sLnR4dCBcIiBcIjtcbiAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJiYWRnZVwiIF0gXVxuICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoc3RyaW5nX29mX2ludCBjb3VudCkgXTtcbiAgICAgICAgICAgXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbXSlcbiAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgbm9uZV9jaGVja2JveCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgd2Vha19jaGVja2JveCA9XG4gIEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7IEh0bWwuYV9jaGVja2VkICgpIF0gKClcblxubGV0IHN0cm9uZ19jaGVja2JveCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG5vbmVfYm94ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG5vbmVfY2hlY2tib3hcbmxldCB3ZWFrX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCB3ZWFrX2NoZWNrYm94XG5sZXQgc3Ryb25nX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBzdHJvbmdfY2hlY2tib3hcblxubGV0IGxhdW5jaF9idXR0b24gPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07IEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0IF1cbiAgICBbIEh0bWwudHh0IFwiTGF1bmNoXCIgXVxuXG5sZXQgc3RvcnlfbGlzdCwgbGlzdF9jb250cm9sID0gUmVhY3QuUy5jcmVhdGUgW11cblxubGV0IHN0b3J5X2xpc3RfaHRtbCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5tYXBcbiAgICAoZnVuIChpZCwgY20pIC0+XG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpbIEh0bWwuYV92YWx1ZSAoc3RyaW5nX29mX2ludCBpZCkgXVxuICAgICAgICAoSHRtbC50eHRcbiAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWkgKCVhKUBdXCIgaWRcbiAgICAgICAgICAgICAgS2FzdG9yX2NsaWVudC5wcmludF9jb21wcmVzc2lvbl9tb2RlcyBjbSkpKVxuICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc3RvcnlfbGlzdClcblxubGV0IHNlbGVjdF9zdG9yaWVzID0gVHl4bWxfanMuUi5IdG1sNS5zZWxlY3Qgc3RvcnlfbGlzdF9odG1sXG5sZXQgc2VsZWN0X3N0b3JpZXNfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBzZWxlY3Rfc3Rvcmllc1xuXG5sZXQlaHRtbCBzZXR1cF9mb3JtID1cbiAge3w8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWw+Q29tcHJlc3Npb24gbGV2ZWw8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgbm9uZV9jaGVja2JveCBdXG4gICAge3wgQ2F1c2FsPC9sYWJlbD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIHdlYWtfY2hlY2tib3ggXVxuICAgIHt8IFdlYWtseTwvbGFiZWw+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBzdHJvbmdfY2hlY2tib3ggXVxuICAgIHt8IFN0cm9uZ2x5PC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPnx9XG4gICAgWyBsYXVuY2hfYnV0dG9uIF1cbiAgICB7fDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsPlNlbGVjdGVkIHN0b3J5PC9sYWJlbD58fVxuICAgIFsgc2VsZWN0X3N0b3JpZXMgXVxuICAgIHt8XG4gICAgPC9kaXY+XG4gICAgPC9mb3JtPnx9XG5cbmxldCBzdG9yeV9sb2csIGxvZ19jb250cm9sID0gUmVhY3QuUy5jcmVhdGUgW11cbmxldCBjdXJyZW50X2luZm8sIHNldF9pbmZvID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuXG5sZXQgc3RvcnlfbG9nX2h0bWwgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QubWFwXG4gICAgKGZ1biBsaW5lIC0+IEh0bWwudHh0IChsaW5lIF4gXCJcXG5cIikpXG4gICAgKFJlYWN0aXZlRGF0YS5STGlzdC5yZXYgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBzdG9yeV9sb2cpKVxuXG5sZXQgbG9nX2RpdiA9XG4gIFR5eG1sX2pzLlIuSHRtbDUuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIiBdIF0gc3RvcnlfbG9nX2h0bWxcblxubGV0IGxvZ19wYW5lbCA9XG4gIFtcbiAgICBVaV9jb21tb24ubmF2dGFicyBcInN0b3J5bG9nbmF2dGFiXCJcbiAgICAgIFtcbiAgICAgICAgXCJzdG9yaWVzX2NvbXB1dGF0aW9uX2xvZ1wiLCBOb25lLCBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHk7XG4gICAgICAgIFwic3RvcnlfaW5mb19sb2dcIiwgTm9uZSwgUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5O1xuICAgICAgXTtcbiAgICBVaV9jb21tb24ubmF2Y29udGVudCBbIFwicGFuZWwtc2Nyb2xsXCIgXVxuICAgICAgW1xuICAgICAgICBcInN0b3JpZXNfY29tcHV0YXRpb25fbG9nXCIsIFtdLCBbIGxvZ19kaXYgXTtcbiAgICAgICAgXCJzdG9yeV9pbmZvX2xvZ1wiLCBbIFwicGFuZWwtcHJlXCIgXSwgWyBUeXhtbF9qcy5SLkh0bWw1LnR4dCBjdXJyZW50X2luZm8gXTtcbiAgICAgIF07XG4gIF1cblxubGV0IGdyYXBoX2Rpc3BsYXlfaWQgPSBcInN0b3J5X2dyYXBoX2Rpc3BsYXlcIlxubGV0IHN0b3J5X2dyYXBoID0gSnNfc3RvcnkuY3JlYXRlX3N0b3J5X3JlbmRlcmluZyBncmFwaF9kaXNwbGF5X2lkXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTVcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgIChzZXR1cF9mb3JtIDo6IGxvZ19wYW5lbCk7XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGdyYXBoX2Rpc3BsYXlfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtN1wiOyBcImZsZXgtY29udGVudFwiIF07XG4gICAgICAgIF1cbiAgICAgIFtdO1xuICBdXG5cbmxldCBsaWZ0X3Jlc3VsdCA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZVxuXG5sZXQgZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJDb25maWcgY29tcHJlc3Npb25cIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBjYXVzYWwgPSBKcy50b19ib29sIG5vbmVfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbGV0IHdlYWsgPSBKcy50b19ib29sIHdlYWtfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbGV0IHN0cm9uZyA9IEpzLnRvX2Jvb2wgc3Ryb25nX2JveCMjLmNoZWNrZWQgaW5cbiAgICAgIG1hbmFnZXIjY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICAgICAgPnw9IGxpZnRfcmVzdWx0KVxuXG5sZXQgdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsID1cbiAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgIGxldCBfID0gZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpIGluXG4gICAgICBKcy5fZmFsc2UpXG5cbmxldCBzZXRfYV9zdG9yeSA9XG4gIGxldCBwcmVkX2lkID0gcmVmIG1heF9pbnQgaW5cbiAgZnVuICgpIC0+XG4gICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHNlbGVjdF9zdG9yaWVzX2RvbSMjLnZhbHVlIGluXG4gICAgaWYgdmEgPSBcIlwiIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJlZF9pZCA6PSBtYXhfaW50IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGlkID0gaW50X29mX3N0cmluZyB2YSBpblxuICAgICAgaWYgIXByZWRfaWQgPD4gaWQgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHByZWRfaWQgOj0gaWQgaW5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJMYXVuY2ggc3Rvcmllc1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWFuYWdlciNzdG9yeV9saXN0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgU29tZSAoX2NtLCBkLCB2KSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHNldF9pbmZvXG4gICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFtpZHM6IEBbJWFAXUAgdD1AWyVhQF1AIGV2ZW50PUBbJWFAXUBdXCJcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCkpKVxuICAgICAgICAgICAgICAgICAgICAgZFxuICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWFcbiAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbG9hdCBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSkpKVxuICAgICAgICAgICAgICAgICAgICAgZFxuICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWFcbiAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50KSkpXG4gICAgICAgICAgICAgICAgICAgICBkKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHN0b3J5X2dyYXBoIyNzZXREYXRhXG4gICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChHcmFwaF9qc29uLnRvX2pzb24gdikpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgKVxuXG5sZXQgcmVjIGluc3BlY3Rfc3RvcmllcyAoKSA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiU3RvcmllcyBsaXN0XCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgc3RvcnlfbGlzdF9mcm9tX21hbmFnZXIgPVxuICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAoY20sIF8sIF8pIGFjYyAtPiAoaWQsIGNtKSA6OiBhY2MpXG4gICAgICAgICAgbWFuYWdlciNzdG9yeV9saXN0IFtdXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gbGlzdF9jb250cm9sIHN0b3J5X2xpc3RfZnJvbV9tYW5hZ2VyIGluXG4gICAgICBsZXQgbWFuYWdlcl9pc19jb21wdXRpbmcgPSBtYW5hZ2VyI2lzX2NvbXB1dGluZyBpblxuICAgICAgbGV0IGxvZ19saW5lcyA9XG4gICAgICAgIGlmIG1hbmFnZXJfaXNfY29tcHV0aW5nIHRoZW5cbiAgICAgICAgICBcIkNvbXB1dGluZyBzdG9yaWVz4oCmXCIgOjogbWFuYWdlciNzdG9yeV9sb2dcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIFRPRE86IGNoZWNrIGlmIHN0b3J5X2xvZyBiZWxvdyBzaG91bGQgYmUgbGl2ZSBhbmQgaXNuJ3Q/ICopXG4gICAgICAgICAgKHN0cmluZ19vZl9pbnQgKExpc3QubGVuZ3RoIHN0b3J5X2xpc3RfZnJvbV9tYW5hZ2VyKSBeIFwiIHN0b3JpZXNcIilcbiAgICAgICAgICA6OiBtYW5hZ2VyI3N0b3J5X2xvZ1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IGxvZ19jb250cm9sIGxvZ19saW5lcyBpblxuICAgICAgc2V0X2Ffc3RvcnkgKCkgPj49IGZ1biBfIC0+XG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBtYW5hZ2VyX2lzX2NvbXB1dGluZykpXG4gID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGlzX2NvbXB1dGluZyAtPlxuICAgICAgICAgIGlmIGlzX2NvbXB1dGluZyAmJiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlblxuICAgICAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCAzLiA+Pj0gaW5zcGVjdF9zdG9yaWVzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzdG9yaWVzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnN0b3JpZXNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIGxldCAoKSA9IHNldF90YWJfaXNfYWN0aXZlIHRydWUgaW5cbiAgICAgICAgbGV0IF8gPSBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgaW5cbiAgICAgICAgTHd0LmFzeW5jIGluc3BlY3Rfc3RvcmllcylcbiAgaW5cbiAgbGV0ICgpID0gbm9uZV9ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID0gd2Vha19ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID0gc3Ryb25nX2JveCMjLm9uY2hhbmdlIDo9IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCBpblxuICBsZXQgKCkgPVxuICAgIHNlbGVjdF9zdG9yaWVzX2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPSBzZXRfYV9zdG9yeSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gbGF1bmNoX2J1dHRvbikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiTGF1bmNoIHN0b3JpZXNcIlxuICAgICAgICAgICAgICAgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICAgICAgIGlmIG1hbmFnZXIjc3RvcnlfaXNfY29tcHV0aW5nIHRoZW5cbiAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9yYXdfdHJhY2VcbiAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNyYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA+fD0gbGlmdF9yZXN1bHQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSBMd3QuYXN5bmMgaW5zcGVjdF9zdG9yaWVzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZGlzcGxheV9pZCA9IFwiY29udGFjdC1tYXAtZGlzcGxheVwiXG5sZXQgZXhwb3J0X2lkID0gXCJjb250YWN0LWV4cG9ydFwiXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIHRydWVcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiB0cnVlXG5sZXQgYWNjdXJhY3ksIHNldF9hY2N1cmFjeSA9IFJlYWN0LlMuY3JlYXRlIChTb21lIFB1YmxpY19kYXRhLkxvdylcblxubGV0IGV4dHJhY3RfY29udGFjdF9tYXAgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvbnRhY3QgbWFwXCIsIGBBc3NvYyBbIChcImFjY3VyYWN5XCIsIGFjYyk7IChcIm1hcFwiLCBjb250YWN0KSBdKSBdXG4gICAgLT5cbiAgICBhY2MsIGNvbnRhY3RcbiAgfCBgQXNzb2MgWyAoXCJjb250YWN0IG1hcFwiLCBgQXNzb2MgWyAoXCJtYXBcIiwgY29udGFjdCk7IChcImFjY3VyYWN5XCIsIGFjYykgXSkgXVxuICAgIC0+XG4gICAgYWNjLCBjb250YWN0XG4gIHwgXyAtPiBmYWlsd2l0aCBcIldyb25nIHVnbHkgY29udGFjdF9tYXAgZXh0cmFjdG9yXCJcblxubGV0IGNvbnRhY3RfbWFwX2pzIDogSnNfY29udGFjdC5jb250YWN0X21hcCBKcy50ID1cbiAgSnNfY29udGFjdC5jcmVhdGVfY29udGFjdF9tYXAgZGlzcGxheV9pZCBTdGF0ZV9wcmVmZXJlbmNlcy5hZ2VudF9jb2xvcmluZ1xuXG5sZXQgY29udGFjdF9tYXBfdGV4dCA6IHN0cmluZyBSZWFjdC5zaWduYWwgPVxuICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlIE5vbmUgYWNjdXJhY3kgXCJudWxsXCJcbiAgICAoZnVuXG4gICAgICAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKVxuICAgICAgKGFjYyA6IFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsIG9wdGlvbilcbiAgICAtPlxuICAgICAgbWFuYWdlciNnZXRfY29udGFjdF9tYXAgYWNjXG4gICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gU3RhdGVfZXJyb3IuYWRkX2Vycm9yIFwidGFiX2NvbnRhY3RfbWFwXCIgbWggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdF9tYXBfanMjI2NsZWFyRGF0YSBpblxuICAgICAgICAgICAgICBcIm51bGxcIilcbiAgICAgICAgICAgIH5vazooZnVuIGNvbnRhY3RfanNvbiAtPlxuICAgICAgICAgICAgICBsZXQgXywgbWFwX2pzb24gPSBleHRyYWN0X2NvbnRhY3RfbWFwIGNvbnRhY3RfanNvbiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IFlvanNvbi5CYXNpYy50b19zdHJpbmcgbWFwX2pzb24gaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdF9tYXBfanMjI3NldERhdGEgKEpzLnN0cmluZyBkYXRhKSBpblxuICAgICAgICAgICAgICBkYXRhKSlcblxubGV0IGNvbmZpZ3VyYXRpb24gOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IGV4cG9ydF9pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfc3ZnIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9qc29uIH5zZXJpYWxpemVfanNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICBSZWFjdC5TLnZhbHVlIGNvbnRhY3RfbWFwX3RleHQpO1xuICAgICAgXTtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gIH1cblxubGV0IGFjY3VyYWN5X2Nob29zZXJfaWQgPSBcImNvbnRhY3RfbWFwLWFjY3VyYWN5XCJcblxubGV0IGFjY3VyYWN5X2Nob29zZXIgPVxuICBsZXQgb3B0aW9uX2dlbiB4ID1cbiAgICBIdG1sLm9wdGlvblxuICAgICAgfmE6XG4gICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgaWYgUmVhY3QuUy52YWx1ZSBhY2N1cmFjeSA9IFNvbWUgeCB0aGVuXG4gICAgICAgICAgICAgSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkgXSlcbiAgICAgIChIdG1sLnR4dCAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpKVxuICBpblxuICBIdG1sLnNlbGVjdFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgYWNjdXJhY3lfY2hvb3Nlcl9pZCBdXG4gICAgKExpc3QubWFwIG9wdGlvbl9nZW4gUHVibGljX2RhdGEuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBhY2N1cmFjeV9mb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWhvcml6b250YWxcIiBdO1xuICAgICAgICAgIEh0bWwuYV9pZCBcImNvbnRhY3RfbWFwX2FjY3VyYWN5X2Zvcm1cIjtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgYWNjdXJhY3lfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJBY2N1cmFjeVwiIF07XG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTEwXCIgXSBdIFsgYWNjdXJhY3lfY2hvb3NlciBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG4gIGluXG4gIFtcbiAgICBhY2N1cmFjeV9mb3JtO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9pZCBkaXNwbGF5X2lkOyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiIF0gXVxuICAgICAgWyBIdG1sLmVudGl0eSBcIm5ic3BcIiBdO1xuICAgIFdpZGdldF9leHBvcnQuY29udGVudCBjb25maWd1cmF0aW9uO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCBjb25maWd1cmF0aW9uIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYWNjdXJhY3lfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FjY3VyYWN5IChQdWJsaWNfZGF0YS5hY2N1cmFjeV9vZl9zdHJpbmcgdmEpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29udGFjdF9tYXBcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29udGFjdF9tYXBcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPVxuICBpZiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlbiBjb250YWN0X21hcF9qcyMjcmVkcmF3XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxuXG5sZXQgY3VycmVudF9zbmFwc2hvdCwgc2V0X2N1cnJlbnRfc25hcHNob3QgPVxuICBSZWFjdC5TLmNyZWF0ZSAoTm9uZSA6IChzdHJpbmcgKiBEYXRhLnNuYXBzaG90KSBvcHRpb24pXG5cbnR5cGUgZGlzcGxheV9mb3JtYXQgPSBLYXBwYSB8IEdyYXBoXG5cbmxldCBzdHJpbmdfdG9fZGlzcGxheV9mb3JtYXQgPSBmdW5jdGlvblxuICB8IFwiS2FwcGFcIiAtPiBTb21lIEthcHBhXG4gIHwgXCJHcmFwaFwiIC0+IFNvbWUgR3JhcGhcbiAgfCBfIC0+IE5vbmVcblxubGV0IGRpc3BsYXlfZm9ybWF0LCBzZXRfZGlzcGxheV9mb3JtYXQgPSBSZWFjdC5TLmNyZWF0ZSBLYXBwYVxuXG5sZXQgc25hcHNob3RfY291bnQgKHN0YXRlIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbikgOiBpbnQgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcblxubGV0IG5hdmxpICgpID0gVWlfdHJhY2tfc2ltX3N0YXR1cy5iYWRnZSAoZnVuIHN0YXRlIC0+IHNuYXBzaG90X2NvdW50IHN0YXRlKVxubGV0IHNlbGVjdF9pZCA9IFwic25hcHNob3Qtc2VsZWN0LWlkXCJcbmxldCBkaXNwbGF5X2lkID0gXCJzbmFwc2hvdC1tYXAtZGlzcGxheVwiXG5cbmxldCBjb25maWd1cmF0aW9uX3RlbXBsYXRlIGlkIGFkZGl0aW9uYWxfaGFuZGxlcnMgOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb25cbiAgICA9XG4gIGxldCBqc29uX2hhbmRsZXIgPVxuICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X2pzb24gfnNlcmlhbGl6ZV9qc29uOihmdW4gKCkgLT5cbiAgICAgICAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwibnVsbFwiXG4gICAgICAgIHwgU29tZSAoXywgcykgLT4gRGF0YS5zdHJpbmdfb2Zfc25hcHNob3QgcylcbiAgaW5cbiAgbGV0IGthcHBhX2hhbmRsZXIgPVxuICAgIHtcbiAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJrYVwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwia2FwcGFcIjtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgKGZ1biAoZmlsZW5hbWUgOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9rYXBwYSBzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZSk7XG4gICAgfVxuICBpblxuICBsZXQgZG90X2hhbmRsZXIgPVxuICAgIHtcbiAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJkb3RcIjtcbiAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImRvdFwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAoZnVuIChmaWxlbmFtZSA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSAoXywgcykgLT4gQXBpX2RhdGEuYXBpX3NuYXBzaG90X2RvdCBzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwidGV4dC92bmQuZ3JhcGh2aXpcIiB+ZmlsZW5hbWUpO1xuICAgIH1cbiAgaW5cbiAgbGV0IGRlZmF1bHRfaGFuZGxlcnMgPSBbIGpzb25faGFuZGxlcjsga2FwcGFfaGFuZGxlcjsgZG90X2hhbmRsZXIgXSBpblxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID0gZGVmYXVsdF9oYW5kbGVycyBAIGFkZGl0aW9uYWxfaGFuZGxlcnM7XG4gICAgV2lkZ2V0X2V4cG9ydC5zaG93ID1cbiAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5nZXRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgc25hcHNob3RfY291bnQgc2ltdWxhdGlvbl9pbmZvID4gMClcbiAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpO1xuICB9XG5cbigqIE9ubHkgYWxsb3cgdGhlIGV4cG9ydCBvZiBub24tZ3JhcGhpY2FsIGRhdGEuICopXG5sZXQgY29uZmlndXJhdGlvbl9rYXBwYSAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIGNvbmZpZ3VyYXRpb25fdGVtcGxhdGUgXCJzbmFwc2hvdF9rYXBwYVwiIFtdXG5cbigqIFRoZSBtYXBzIGFyZSByZW5kZXJlZCBzbyBhbGxvdyB0aGUgZXhwb3J0IG9mXG4gICBncmFwaGljYWwgZGF0YS4gKilcbmxldCBjb25maWd1cmF0aW9uX2dyYXBoICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBcInNuYXBzaG90X2dyYXBoXCJcbiAgICBbXG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgIF1cblxubGV0IGZvcm1hdF9zZWxlY3RfaWQgPSBcImZvcm1hdF9zZWxlY3RfaWRcIlxuXG5sZXQgcmVuZGVyX3NuYXBzaG90X2dyYXBoIChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpXG4gICAgKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkgOiB1bml0ID1cbiAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cCBcIlJlbmRlciBzbmFwc2hvdFwiIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIChEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCBzbmFwc2hvdCkpXG4gIGluXG4gIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG4gIG1hdGNoIFJlYWN0LlMudmFsdWUgZGlzcGxheV9mb3JtYXQgd2l0aFxuICB8IEdyYXBoIC0+XG4gICAgbGV0IGpzb24gOiBzdHJpbmcgPSBEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCBzbmFwc2hvdCBpblxuICAgIGxldCBjb250YWN0X21hcCA9IFJlYWN0LlMudmFsdWUgU3VidGFiX2NvbnRhY3RfbWFwLmNvbnRhY3RfbWFwX3RleHQgaW5cbiAgICBzbmFwc2hvdF9qcyMjc2V0RGF0YSB+Y29udGFjdF9tYXA6KEpzLnN0cmluZyBjb250YWN0X21hcCkgKEpzLnN0cmluZyBqc29uKVxuICB8IEthcHBhIC0+ICgpXG5cbmxldCBzZWxlY3Rfc25hcHNob3QgKHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudCkgOiB1bml0ID1cbiAgbGV0IGluZGV4IDogaW50IEpzLm9wdCA9XG4gICAgSnMuT3B0LmJpbmRcbiAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgc2VsZWN0X2lkKSlcbiAgICAgIChmdW4gZG9tIC0+XG4gICAgICAgIGxldCBzbmFwc2hvdF9zZWxlY3RfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZG9tXG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWxlaW5kZXggOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgc25hcHNob3Rfc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gICAgICAgIHRyeSBKcy5zb21lIChpbnRfb2Zfc3RyaW5nIGZpbGVpbmRleCkgd2l0aCBfIC0+IEpzLm51bGwpXG4gIGluXG4gIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJTZWxlY3Qgc25hcHNob3RcIiBpblxuICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGluZGV4IGluXG4gIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG4gIGxldCBtb2RlbCA6IFN0YXRlX3NpbXVsYXRpb24udCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICBsZXQgc2ltdWxhdGlvbl9vdXRwdXQgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgICBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWxcbiAgaW5cbiAgbWF0Y2ggc2ltdWxhdGlvbl9vdXRwdXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IGluZGV4IDogaW50ID0gSnMuT3B0LmdldCBpbmRleCAoZnVuIF8gLT4gMCkgaW5cbiAgICBpZiBzbmFwc2hvdF9jb3VudCAoU29tZSBzdGF0ZSkgPiAwIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gc25hcHNob3RfaWRzIC0+XG4gICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzbmFwc2hvdF9pZCA6IHN0cmluZyA9IExpc3QubnRoIHNuYXBzaG90X2lkcyBpbmRleCBpblxuICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3Qgc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfY3VycmVudF9zbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTb21lIChzbmFwc2hvdF9pZCwgc25hcHNob3QpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9zbmFwc2hvdF9ncmFwaCBzbmFwc2hvdF9qcyBzbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZilcbiAgICAgICAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGYpKSlcbiAgICAgIGluXG4gICAgICAoKVxuICAgIClcblxubGV0IHNlbGVjdCAoc25hcHNob3RzIDogQXBpX3R5cGVzX2ouc25hcHNob3RfaWQgbGlzdCkgOlxuICAgIFs+IEh0bWxfdHlwZXMuc2VsZWN0b3B0aW9uIF0gSHRtbC5lbHQgbGlzdCA9XG4gIExpc3QubWFwaVxuICAgIChmdW4gaSBzbmFwc2hvdF9pZCAtPlxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIChzdHJpbmdfb2ZfaW50IGkpIF1cbiAgICAgICAgICBAXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoZmlsZW5hbWUsIF8pIC0+IGZpbGVuYW1lID0gc25hcHNob3RfaWRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgW10pXG4gICAgICAgIChIdG1sLnR4dCBzbmFwc2hvdF9pZCkpXG4gICAgc25hcHNob3RzXG5cbmxldCBzbmFwc2hvdF9jbGFzcyA6XG4gICAgZW1wdHk6KHVuaXQgLT4gJ2EpIC0+XG4gICAgc2luZ2xlOih1bml0IC0+ICdhKSAtPlxuICAgIG11bHRpcGxlOih1bml0IC0+ICdhKSAtPlxuICAgICdhIFJlYWN0LnNpZ25hbCA9XG4gZnVuIH5lbXB0eSB+c2luZ2xlIH5tdWx0aXBsZSAtPlxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgIG1hdGNoIHNuYXBzaG90X2NvdW50IHNpbXVsYXRpb25faW5mbyB3aXRoXG4gICAgICB8IDAgLT4gZW1wdHkgKClcbiAgICAgIHwgMSAtPiBzaW5nbGUgKClcbiAgICAgIHwgXyAtPiBtdWx0aXBsZSAoKSlcbiAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG5sZXQgc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50ID1cbiAgSnNfc25hcHNob3QuY3JlYXRlX3NuYXBzaG90IGRpc3BsYXlfaWQgU3RhdGVfcHJlZmVyZW5jZXMuYWdlbnRfY29sb3JpbmdcblxubGV0IHhtbCAoKSA9XG4gIGxldCBsaXN0ID1cbiAgICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2VsZWN0X3NuYXBzaG90IHNuYXBzaG90X2pzIGluXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gc25hcHNob3RfaWRzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChzZWxlY3Qgc25hcHNob3RfaWRzKSkpKVxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgIH5vazooZnVuIHggLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCB4KVxuICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpXG4gIGluXG4gIGxldCBzbmFwc2hvdF9sYWJlbCA9XG4gICAgSHRtbC5oNFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHNuYXBzaG90X2NsYXNzXG4gICAgICAgICAgICAgICB+ZW1wdHk6KGZ1biAoKSAtPiBbIFwiaGlkZGVuXCIgXSlcbiAgICAgICAgICAgICAgIH5zaW5nbGU6KGZ1biBfIC0+IFsgXCJvbmVsaW5lclwiOyBcInZpc2libGVcIiBdKVxuICAgICAgICAgICAgICAgfm11bHRpcGxlOihmdW4gXyAtPiBbIFwiaGlkZGVuXCIgXSkpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAoZnVuIHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICAgfCBTb21lIChzbmFwc2hvdF9maWxlLCBfKSAtPiBzbmFwc2hvdF9maWxlKVxuICAgICAgICAgICAgIGN1cnJlbnRfc25hcHNob3QpO1xuICAgICAgXVxuICBpblxuICBsZXQgc25hcHNob3Rfc2VsZWN0ID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuc2VsZWN0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoc25hcHNob3RfY2xhc3NcbiAgICAgICAgICAgICAgIH5lbXB0eTooZnVuICgpIC0+IFsgXCJoaWRkZW5cIiBdKVxuICAgICAgICAgICAgICAgfnNpbmdsZTooZnVuIF8gLT4gWyBcImhpZGRlblwiIF0pXG4gICAgICAgICAgICAgICB+bXVsdGlwbGU6KGZ1biBfIC0+IFsgXCJ2aXNpYmxlXCI7IFwiZm9ybS1jb250cm9sXCIgXSkpO1xuICAgICAgICAgIEh0bWwuYV9pZCBzZWxlY3RfaWQ7XG4gICAgICAgIF1cbiAgICAgIGxpc3RcbiAgaW5cbiAgbGV0IHNuYXBzaG90X2Nob29zZXIgPSBIdG1sLmRpdiBbIHNuYXBzaG90X2xhYmVsOyBzbmFwc2hvdF9zZWxlY3QgXSBpblxuICBsZXQgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYSB+Z3JhcGggPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IEthcHBhIC0+IGthcHBhXG4gICAgICAgICAgIHwgR3JhcGggLT4gZ3JhcGgpXG4gICAgICAgICBkaXNwbGF5X2Zvcm1hdClcbiAgaW5cbiAgbGV0IGV4cG9ydF9jb250cm9scyA9XG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6WyB0b2dnbGVfY29udHJvbHMgfmthcHBhOlsgXCJ2aXNpYmxlXCIgXSB+Z3JhcGg6WyBcImhpZGRlblwiIF0gXVxuICAgICAgICBbIFdpZGdldF9leHBvcnQuY29udGVudCAoY29uZmlndXJhdGlvbl9rYXBwYSAoKSkgXTtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlsgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYTpbIFwiaGlkZGVuXCIgXSB+Z3JhcGg6WyBcInZpc2libGVcIiBdIF1cbiAgICAgICAgWyBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgKGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkpIF07XG4gICAgXVxuICBpblxuICBsZXQga2FwcGFfc25hcHNob3RfZGlzcGxheSA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBkaXNwbGF5X2Zvcm1hdCAtPlxuICAgICAgICAgICAgICAgICBcInBhbmVsLXNjcm9sbFwiIDo6IFwia2FwcGEtY29kZVwiIDo6IFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHNuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICB8IFNvbWUgKF8sIHNuYXBzaG90KSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3Rfa2FwcGEgc25hcHNob3QpXG4gICAgICAgICAgICAgY3VycmVudF9zbmFwc2hvdCk7XG4gICAgICBdXG4gIGluXG4gIGxldCBrYXBwYV9ncmFwaF9kaXNwbGF5ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIGRpc3BsYXlfZm9ybWF0IC0+XG4gICAgICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICA8Zm9ybSAgY2xhc3M9XCJmb3JtLWlubGluZVwiIGlkPVwic25hcC1mb3JtXCI+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5TWFzc1wiIGNoZWNrZWQ+IE1hc3M8L2xhYmVsPlxuICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJzdW1CeUNvdW50XCIgPiBDb3VudDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5U2l6ZVwiID4gU2l6ZTwvbGFiZWw+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyZWNlbnRlclNuYXBCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPlJlc2V0IFpvb208L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInJvb3RCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPkJhY2sgdG8gcm9vdDwvYnV0dG9uPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRlbnRcIiBpZD1cInx9XG4gICAgICAgICAgZGlzcGxheV9pZCB7fFwiPjwvZGl2Pnx9XVxuICBpblxuICBsZXQgZm9ybWF0X2Nob29zZXIgPVxuICAgIFslaHRtbFxuICAgICAge3wgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwifH0gZm9ybWF0X3NlbGVjdF9pZFxuICAgICAgICB7fFwiPjxvcHRpb24gdmFsdWU9XCJLYXBwYVwiIHNlbGVjdGVkPmthcHBhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkdyYXBoXCI+Z3JhcGg8L29wdGlvbj48L3NlbGVjdD4gfH1dXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlldyBmbGV4LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4gOiA1cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIGNvbC14cy00XCI+XG4gICAgICAgICB8fVxuICAgICAgWyBmb3JtYXRfY2hvb3NlciBdXG4gICAgICB7fFxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwIGNvbC14cy04XCI+IHx9XG4gICAgICBbIHNuYXBzaG90X2Nob29zZXIgXVxuICAgICAge3wgPC9kaXY+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfH1cbiAgICAgIFsga2FwcGFfc25hcHNob3RfZGlzcGxheTsga2FwcGFfZ3JhcGhfZGlzcGxheSBdXG4gICAgICB7fFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LWNvbnRyb2xzXCI+XG4gICAgICAgICAgfH1cbiAgICAgIGV4cG9ydF9jb250cm9sc1xuICAgICAge3xcbiAgICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIFVpX3RyYWNrX3NpbV9zdGF0dXMudG9nZ2xlX2VsZW1lbnRcbiAgICAgIChmdW4gc3RhdGUgLT4gc25hcHNob3RfY291bnQgc3RhdGUgPiAwKVxuICAgICAgKHhtbCAoKSk7XG4gIF1cblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgc25hcHNob3Rfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIHNlbGVjdF9pZFxuICBpblxuICBsZXQgZm9ybWF0X3NlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSBmb3JtYXRfc2VsZWN0X2lkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgc25hcHNob3Rfc2VsZWN0X2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIFwiVHJpZ2dlciBvZiBzbmFwc2hvdF9zZWxlY3RfZG9tXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2VsZWN0X3NuYXBzaG90IHNuYXBzaG90X2pzIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgdXBkYXRlX2Zvcm1hdCAoKSA9XG4gICAgbGV0IGZvcm1hdF90ZXh0IDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGZvcm1hdF9zZWxlY3RfZG9tIyMudmFsdWUgaW5cbiAgICBtYXRjaCBzdHJpbmdfdG9fZGlzcGxheV9mb3JtYXQgZm9ybWF0X3RleHQgd2l0aFxuICAgIHwgU29tZSBmb3JtYXQgLT5cbiAgICAgIGxldCAoKSA9IHNldF9kaXNwbGF5X2Zvcm1hdCBmb3JtYXQgaW5cbiAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKF8sIHNuYXBzaG90KSAtPlxuICAgICAgICByZW5kZXJfc25hcHNob3RfZ3JhcGhcbiAgICAgICAgICAoc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50KVxuICAgICAgICAgIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpKVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgKCogZ2V0IGluaXRpYWwgdmFsdWUgZm9yIGRpc3BsYXkgZm9ybWF0ICopXG4gIGxldCAoKSA9IHVwZGF0ZV9mb3JtYXQgKCkgaW5cbiAgKCogdXBkYXRlIHZhbHVlIGZvciBkaXNwbGF5IGZvcm1hdCAqKVxuICBsZXQgKCkgPVxuICAgIGZvcm1hdF9zZWxlY3RfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfZm9ybWF0ICgpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c25hcHNob3RcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c25hcHNob3RcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgICgpKVxuICBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbl9rYXBwYSAoKSkgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgKGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkpIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSBpZiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlbiBzbmFwc2hvdF9qcyMjcmVkcmF3XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgZGl2X2Rpc3BsYXlfaWQgPSBcInBsb3QtbWFpbl9kaXZcIlxubGV0IGV4cG9ydF9pZCA9IFwicGxvdC1leHBvcnRcIlxuXG50eXBlIG9mZnNldCA9IHsgb2Zmc2V0X2N1cnJlbnQ6IGludDsgb2Zmc2V0X21heDogaW50IH1cblxubGV0IG9mZnNldCwgc2V0X29mZnNldCA9IFJlYWN0LlMuY3JlYXRlIChOb25lIDogb2Zmc2V0IG9wdGlvbilcbmxldCBkZWZhdWx0X3BvaW50ID0gMTAwMFxubGV0IHBvaW50LCBzZXRfcG9pbnRzID0gUmVhY3QuUy5jcmVhdGUgZGVmYXVsdF9wb2ludFxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBwbG90X3JlZiA9IHJlZiBOb25lXG5cbmxldCBoYXNfcGxvdCAoc3RhdGUgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uKSA6IGJvb2wgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBzdGF0ZS5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0LkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcbiAgICA+IDBcblxubGV0IGV4cG9ydF9qc29uIGZpbGVuYW1lID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3RcbiAgICAgICAge1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID0gTm9uZTtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IE5vbmU7XG4gICAgICAgIH1cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIChwbG90IDogQXBpX3R5cGVzX3QucGxvdCkgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKERhdGEuc3RyaW5nX29mX3Bsb3QgcGxvdCkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBleHBvcnQgbWltZSBmaWxlbmFtZSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90XG4gICAgICAgIHtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9IE5vbmU7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBOb25lO1xuICAgICAgICB9XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBKcy5zdHJpbmcgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjoobWltZSA9IFwidGV4dC90c3ZcIikgcGxvdClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lIH5maWxlbmFtZSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgcGxvdF9wb2ludHNfaW5wdXRfaWQgPSBcInBsb3RfcG9pbnRzX2lucHV0XCJcblxubGV0IHBsb3RfcG9pbnRzX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9wb2ludHNfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgNTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgcGxvdF9vZmZzZXRfaW5wdXRfaWQgPSBcInBsb3Rfb2Zmc2V0X2lucHV0XCJcblxubGV0IHBsb3Rfb2Zmc2V0X2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgWyBcImhpZGVcIiBdXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBSZWFjdC5TLmNvbnN0IFtdKSk7XG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2lucHV0X21heFxuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgMClcbiAgICAgICAgICAgIHwgU29tZSBtYXhfb2Zmc2V0IC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgbWF4X29mZnNldC5vZmZzZXRfbWF4KSkpO1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9vZmZzZXRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBSYW5nZTtcbiAgICAgICAgSHRtbC5hX2lucHV0X21pbiAoYE51bWJlciAwKTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwib2Zmc2V0XCI7XG4gICAgICBdXG4gICAgKClcblxubGV0IHNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4IChzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIDpcbiAgICBpbnQgPVxuICBsZXQgcGxvdF9zaXplID1cbiAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcbiAgaW5cbiAgbWF4IDAgKHBsb3Rfc2l6ZSAtIFJlYWN0LlMudmFsdWUgcG9pbnQpXG5cbmxldCB1cGRhdGVfb2Zmc2V0ICh1cGRhdGVfb2Zmc2V0X2lucHV0IDogYm9vbCkgOiB1bml0ID1cbiAgbGV0IHNpbXVsYXRpb25fbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uX21vZGVsIGluXG4gIG1hdGNoIHNpbXVsYXRpb25faW5mbyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgaWZcbiAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgIHRoZW5cbiAgICAgICgqIElmIGl0IGlzIHJ1bm5pbmcgbm8gc2xpZGVyIGJlY2F1c2UgdXBkYXRlIGNhdXNlcyBqaXR0ZXJzLiAqKVxuICAgICAgc2V0X29mZnNldCBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgb2Zmc2V0X21heCA9IHNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4IHNpbXVsYXRpb25faW5mbyBpblxuICAgICAgbGV0IG9sZF9vZmZzZXQgPSBSZWFjdC5TLnZhbHVlIG9mZnNldCBpblxuICAgICAgbGV0IG9mZnNldF9jdXJyZW50ID1cbiAgICAgICAgbWF0Y2ggb2xkX29mZnNldCB3aXRoXG4gICAgICAgIHwgU29tZSBvZmZzZXQgLT4gb2Zmc2V0Lm9mZnNldF9jdXJyZW50XG4gICAgICAgIHwgTm9uZSAtPiBvZmZzZXRfbWF4XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgdXBkYXRlX29mZnNldF9pbnB1dCB0aGVuIChcbiAgICAgICAgICBsZXQgcGxvdF9vZmZzZXRfaW5wdXRfZG9tID1cbiAgICAgICAgICAgIFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwbG90X29mZnNldF9pbnB1dFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAoXCJbVGFiX3Bsb3QudXBkYXRlX29mZnNldF0gXCIgXiBzdHJpbmdfb2ZfaW50IG9mZnNldF9jdXJyZW50KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwbG90X29mZnNldF9pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICAgOj0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IG9mZnNldF9jdXJyZW50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgKClcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X29mZnNldCA9XG4gICAgICAgIGlmIG9mZnNldF9tYXggPiAwIHRoZW5cbiAgICAgICAgICBTb21lIHsgb2Zmc2V0X2N1cnJlbnQ7IG9mZnNldF9tYXggfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgaW5cbiAgICAgIHNldF9vZmZzZXQgbmV3X29mZnNldFxuICAgIClcblxubGV0IHBsb3RfcGFyYW1ldGVyICgpIDogQXBpX3R5cGVzX2oucGxvdF9wYXJhbWV0ZXIgPVxuICBsZXQgcG9pbnQgPSBSZWFjdC5TLnZhbHVlIHBvaW50IGluXG4gIHtcbiAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9XG4gICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biB4IC0+IHgub2Zmc2V0X2N1cnJlbnQpIChSZWFjdC5TLnZhbHVlIG9mZnNldCk7XG4gICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBTb21lIHBvaW50O1xuICB9XG5cbmxldCB1cGRhdGVfcGxvdCAoanNfcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQpIDogdW5pdCA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbGV0ICgpID0gdXBkYXRlX29mZnNldCB0cnVlIGluXG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyICgpKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2ZfcGxvdCBwbG90KSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBqc19wbG90IyNzZXREYXRhIGRhdGEgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IG9ubG9hZF9wbG90X3BvaW50c19pbnB1dCAoanNfcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQpIDogdW5pdCA9XG4gIGxldCBwbG90X3BvaW50c19pbnB1dF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHBsb3RfcG9pbnRzX2lucHV0XG4gIGluXG4gIGxldCBqc19wb2ludCA6IEpzLmpzX3N0cmluZyBKcy50ID1cbiAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgKFJlYWN0LlMudmFsdWUgcG9pbnQpKVxuICBpblxuICBsZXQgKCkgPSBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZSA6PSBqc19wb2ludCBpblxuICBsZXQgKCkgPVxuICAgIHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLm9ua2V5cHJlc3NcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlblxuICAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgcGxvdF9wb2ludHNfc3RyaW5nIDogc3RyaW5nID1cbiAgICAgICAgICAgICBKcy50b19zdHJpbmcgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHBsb3RfcG9pbnRzX29wdGlvbiA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgbGV0IHBsb3RfcG9pbnQgPSBpbnRfb2Zfc3RyaW5nIHBsb3RfcG9pbnRzX3N0cmluZyBpblxuICAgICAgICAgICAgICAgaWYgcGxvdF9wb2ludCA+IDAgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIHBsb3RfcG9pbnRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBtYXRjaCBwbG90X3BvaW50c19vcHRpb24gd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBwbG90X3BvaW50cyAtPiBzZXRfcG9pbnRzIHBsb3RfcG9pbnRzXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgcGxvdF9wb2ludCA6IGludCA9IFJlYWN0LlMudmFsdWUgcG9pbnQgaW5cbiAgICAgICAgICAgICAgIGxldCBwbG90X3BvaW50X3N0cmluZyA9IHN0cmluZ19vZl9pbnQgcGxvdF9wb2ludCBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIHBsb3RfcG9pbnRfc3RyaW5nXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0X3BvaW50cyBkZWZhdWx0X3BvaW50IGluXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfcGxvdCBqc19wbG90IGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuXG5sZXQgY29uZmlndXJhdGlvbiAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gZXhwb3J0X2lkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGl2X2Rpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXZfZGlzcGxheV9pZCAoKTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0X2pzb247XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnQgXCJ0ZXh0L2NzdlwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0IFwidGV4dC90c3ZcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgc2hvdyA9XG4gICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgbGV0IG91dCA9IGhhc19wbG90IChTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwpIGluXG4gICAgICAgICAgbGV0ICgpID0gaWYgb3V0IHRoZW4gT3B0aW9uLml0ZXIgdXBkYXRlX3Bsb3QgIXBsb3RfcmVmIGluXG4gICAgICAgICAgb3V0KVxuICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCk7XG4gIH1cblxubGV0IHhtbCAoKSA9XG4gIGxldCBleHBvcnRfY29udHJvbHMgPSBXaWRnZXRfZXhwb3J0LmlubGluZV9jb250ZW50IChjb25maWd1cmF0aW9uICgpKSBpblxuICBbJWh0bWxcbiAgICB7fFxuICA8ZGl2IGNsYXNzPVwibmF2Y29udGVudC12aWV3IGZsZXgtY29udGVudFwiIGlkPVwifH0gZGl2X2Rpc3BsYXlfaWRcbiAgICAgIHt8XCI+PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtY29udHJvbHNcIj5cbiAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCIgaWQ9fH1cbiAgICAgIGV4cG9ydF9pZFxuICAgICAge3w+XG4gICAgICB8fVxuICAgICAgZXhwb3J0X2NvbnRyb2xzXG4gICAgICB7fFxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj18fVxuICAgICAgcGxvdF9wb2ludHNfaW5wdXRfaWRcbiAgICAgIHt8PlJvdyB0byBwbG90PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlBvaW50czwvc3Bhbj5cbiAgICAgICAgICB8fVxuICAgICAgWyBwbG90X3BvaW50c19pbnB1dCBdXG4gICAgICB7fFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj18fVxuICAgICAgcGxvdF9vZmZzZXRfaW5wdXRfaWRcbiAgICAgIHt8PlNlbGVjdGVkIHdpbmRvdzwvbGFiZWw+XG4gICAgICAgIHx9XG4gICAgICBbIHBsb3Rfb2Zmc2V0X2lucHV0IF1cbiAgICAgIHt8XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gICAgPC9kaXY+IHx9XVxuXG5sZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgbGlzdCA9XG4gIFsgVWlfdHJhY2tfc2ltX3N0YXR1cy50b2dnbGVfZWxlbWVudCAoZnVuIHMgLT4gaGFzX3Bsb3QgcykgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwbG90X29mZnNldF9pbnB1dCBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbiAoKSkgaW5cbiAgbGV0IHBsb3QgOiBKc19wbG90Lm9ic2VydmFibGVfcGxvdCBKcy50ID1cbiAgICBKc19wbG90LmNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QgZGl2X2Rpc3BsYXlfaWRcbiAgaW5cbiAgKCogVGhlIGVsZW1lbnRzIHNpemUgdGhlbXNlbHZlcyB1c2luZyB0aGUgZGl2J3MgaWYgdGhleSBhcmUgaGlkZGVuXG4gICAgIGl0IHdpbGwgZGVmYXVsdCB0byBzaXplIHplcm8uICBzbyB0aGV5IG5lZWQgdG8gYmUgc2l6ZWQgd2hlbiBzaG93bi5cbiAgKilcbiAgbGV0ICgpID0gb25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IHBsb3QgaW5cbiAgbGV0ICgpID0gcGxvdF9yZWYgOj0gU29tZSBwbG90IGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwbG90XCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBsb3RcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uX21vZGVsID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPVxuICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uX21vZGVsXG4gICAgICAgIGluXG4gICAgICAgIGlmIGhhc19wbG90IHNpbXVsYXRpb25faW5mbyB0aGVuXG4gICAgICAgICAgdXBkYXRlX3Bsb3QgcGxvdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVWlfY29tbW9uLmlucHV0X2NoYW5nZSBwbG90X29mZnNldF9pbnB1dF9kb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgc2V0X29mZnNldFxuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBvZmZzZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgb2Zmc2V0IC0+XG4gICAgICAgICAgICAgICAgU29tZSB7IG9mZnNldCB3aXRoIG9mZnNldF9jdXJyZW50ID0gaW50X29mX3N0cmluZyB2YWx1ZSB9KVxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHVwZGF0ZV9wbG90IHBsb3QgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gICgpXG5cbmxldCBwbG90X2NvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IG9wZW4gQXBpX3R5cGVzX3QgaW5cbiAgICBzdGF0ZS5zaW11bGF0aW9uX2luZm9fb3V0cHV0LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcblxubGV0IG5hdmxpICgpID1cbiAgVWlfdHJhY2tfc2ltX3N0YXR1cy5sYWJlbF9uZXdzIHRhYl9pc19hY3RpdmUgKGZ1biBzdGF0ZSAtPiBwbG90X2NvdW50IHN0YXRlKVxuXG5sZXQgb25yZXNpemUgKCkgPVxuICAoKiByZWNhbGN1YXRlIHNpemUgKilcbiAgbGV0ICgpID1cbiAgICBtYXRjaCAhcGxvdF9yZWYgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBwbG90IC0+XG4gICAgICBsZXQgbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgICAgIChtYXRjaCBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiB1cGRhdGVfcGxvdCBwbG90KVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IHNlbGVjdF9pZCA9IFwib3V0cHV0LXNlbGVjdC1pZFwiXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IGN1cnJlbnRfZmlsZSwgc2V0X2N1cnJlbnRfZmlsZSA9IFJlYWN0LlMuY3JlYXRlIE5vbmVcblxubGV0IHVwZGF0ZV9vdXRwdXRzIChrZXkgOiBzdHJpbmcpIDogdW5pdCA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUga2V5XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBsaW5lcyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBzZXRfY3VycmVudF9maWxlIChTb21lIChrZXksIGxpbmVzKSkgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGZpbGVfY291bnQgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgIC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG5cbmxldCBuYXZsaSAoKSA9IFVpX3RyYWNrX3NpbV9zdGF0dXMuYmFkZ2UgKGZ1biBzdGF0ZSAtPiBmaWxlX2NvdW50IHN0YXRlKVxuXG5sZXQgeG1sICgpID1cbiAgbGV0IHNlbGVjdCAoZmlsZV9saW5lX2lkcyA6IHN0cmluZyBsaXN0KSA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0IF0gSHRtbC5lbHQgPVxuICAgIGxldCBsaW5lcyA6IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgb3B0aW9uID0gUmVhY3QuUy52YWx1ZSBjdXJyZW50X2ZpbGUgaW5cbiAgICBsZXQgY3VycmVudF9maWxlX2lkIDogc3RyaW5nID1cbiAgICAgIG1hdGNoIGZpbGVfbGluZV9pZHMsIGxpbmVzIHdpdGhcbiAgICAgIHwgW10sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGZpbGUgOjogXywgTm9uZSB8IF8gOjogXywgU29tZSAoZmlsZSwgXykgLT4gZmlsZVxuICAgIGluXG4gICAgbGV0IGZpbGVfb3B0aW9ucyA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0b3B0aW9uIF0gSHRtbC5lbHQgbGlzdCA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIGtleSAtPlxuICAgICAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIGtleSBdXG4gICAgICAgICAgICAgIEBcbiAgICAgICAgICAgICAgaWYga2V5ID0gY3VycmVudF9maWxlX2lkIHRoZW5cbiAgICAgICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBbXSlcbiAgICAgICAgICAgIChIdG1sLnR4dCAoVWlfY29tbW9uLm9wdGlvbl9sYWJlbCBrZXkpKSlcbiAgICAgICAgZmlsZV9saW5lX2lkc1xuICAgIGluXG4gICAgbGV0ICgpID0gdXBkYXRlX291dHB1dHMgY3VycmVudF9maWxlX2lkIGluXG4gICAgVHl4bWxfanMuSHRtbC5zZWxlY3RcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgc2VsZWN0X2lkIF1cbiAgICAgIGZpbGVfb3B0aW9uc1xuICBpblxuICBsZXQgZmlsZV9zZWxlY3QgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJsaXN0LWdyb3VwLWl0ZW1cIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgICAgICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3RcbiAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVfbGluZV9pZHMgOiBBcGlfdHlwZXNfai5maWxlX2xpbmVfY2F0YWxvZykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdF9maWxlIDogWz4gYEg0IHwgYFNlbGVjdCBdIEh0bWwuZWx0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRPRE86IG5hbWUgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmaWxlX2xpbmVfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXkgOjogW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9vdXRwdXRzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmg0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoVWlfY29tbW9uLm9wdGlvbl9sYWJlbCBrZXkpIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiBbIHNlbGVjdCBmaWxlX2xpbmVfaWRzIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2VsZWN0X2ZpbGUpKSlcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biB4IC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgeClcbiAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IFtdKSlcbiAgICAgICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCkpKSlcbiAgaW5cbiAgbGV0IGZpbGVfY29udGVudCA9XG4gICAgW1xuICAgICAgVHl4bWxfanMuUi5IdG1sLmRpdlxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCI7IFwiZmxleC1jb250ZW50XCIgXSBdXG4gICAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgIHwgU29tZSAoXywgbGluZXMpIC0+XG4gICAgICAgICAgICAgICAgICBMaXN0Lm1hcCAoZnVuIGxpbmUgLT4gSHRtbC5wIFsgSHRtbC50eHQgbGluZSBdKSBsaW5lcylcbiAgICAgICAgICAgICAgY3VycmVudF9maWxlKSk7XG4gICAgXVxuICBpblxuICBbXG4gICAgWyVodG1sXG4gICAgICB7fDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LXZpZXdcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlci1ibG9jayBkaXNwbGF5LWhlYWRlclwiPlxuICAgICAgICAgICB8fVxuICAgICAgICBbIGZpbGVfc2VsZWN0IF1cbiAgICAgICAge3xcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICB8fVxuICAgICAgICBmaWxlX2NvbnRlbnRcbiAgICAgICAge3xcbiAgICAgICAgICAgICA8L2Rpdj4gfH1dO1xuICBdXG5cbmxldCBzZWxlY3Rfb3V0cHV0cyAoKSA6IHVuaXQgPVxuICBsZXQgc2VsZWN0X2RvbSA9IFVpX2NvbW1vbi5pZF9kb20gc2VsZWN0X2lkIGluXG4gIGxldCBmaWxlaW5kZXggPSBKcy50b19zdHJpbmcgc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gIHVwZGF0ZV9vdXRwdXRzIGZpbGVpbmRleFxuXG5sZXQgY29udGVudCAoKSA9XG4gIFsgVWlfdHJhY2tfc2ltX3N0YXR1cy50b2dnbGVfZWxlbWVudCAoZnVuIHQgLT4gZmlsZV9jb3VudCB0ID4gMCkgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdm91dHB1dHNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2b3V0cHV0c1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoRm9ybWF0LnNwcmludGYgXCIjJXNcIiBzZWxlY3RfaWQpIFwiY2hhbmdlXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNlbGVjdF9vdXRwdXRzICgpIGluXG4gICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuKCogVE9ET1xuICAgICBsZXQgc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAoKEpzLk9wdC5nZXRcbiAgICAgICAgICAgICAoVWlfY29tbW9uLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZFxuICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgc2VsZWN0X2lkKSlcbiAgICAgICAgICAgICAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICAgICAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIGluXG4gICAgIGxldCAoKSA9IHNlbGVjdF9kb20jIy5vbmNoYW5nZSA6PSBEb21faHRtbC5oYW5kbGVyXG4gICAoZnVuIF8gLT5cbiAgICAgIGxldCAoKSA9IHNlbGVjdF9vdXRwdXRzIHRcbiAgICAgaW4gSnMuX3RydWUpXG4gICAgIGluXG4qKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IEhvb2tlZC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5cbmxldCBsaW5lX2NvdW50IHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBsZXQgb3BlbiBBcGlfdHlwZXNfdCBpblxuICAgIHN0YXRlLnNpbXVsYXRpb25faW5mb19vdXRwdXQuc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXG5cbmxldCBuYXZsaSAoKSA9XG4gIFVpX3RyYWNrX3NpbV9zdGF0dXMubGFiZWxfbmV3cyAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIHRhYl9pc19hY3RpdmUpXG4gICAgKGZ1biBzdGF0ZSAtPiBsaW5lX2NvdW50IHN0YXRlKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBjb250ZW50X2xvZ19pZCA9IFwiY29udGVudF9sb2dfaWRcIiBpblxuICBsZXQgdXBkYXRlX2xvZ19jb250ZW50IChsb2cgOiBzdHJpbmcpID1cbiAgICBsZXQgZG9tX2VsdCA6ICdhIEpzLnQgPSBVaV9jb21tb24uaWRfZG9tIGNvbnRlbnRfbG9nX2lkIGluXG4gICAgZG9tX2VsdCMjLmlubmVyVGV4dCA6PSBKcy5zdHJpbmcgbG9nXG4gIGluXG4gIEhvb2tlZC5TLnJlZ2lzdGVyX2x3dFxuICAgIChIb29rZWQuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAoSG9va2VkLlMub2ZfcmVhY3Rfc2lnbmFsIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKVxuICAgIChmdW4gXyAtPlxuICAgICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyBcIlt0YWJfbG9nXSBVcGRhdGluZyBsb2dcIjtcbiAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPiBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlKVxuICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgXCJcIikpXG4gICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFwiXCIpKVxuICAgICAgICAoKVxuICAgICAgPnw9IGZ1biAoeCA6IHN0cmluZyBBcGkucmVzdWx0KSAtPlxuICAgICAgKG1hdGNoIHguUmVzdWx0X3V0aWwudmFsdWUgd2l0aFxuICAgICAgfCBPayB4IC0+IHhcbiAgICAgIHwgRXJyb3IgbGlzdCAtPlxuICAgICAgICBTdHJpbmcuY29uY2F0IFwiXFxuXCIgKExpc3QubWFwIChmdW4gUmVzdWx0X3V0aWwueyB0ZXh0OyBfIH0gLT4gdGV4dCkgbGlzdCkpXG4gICAgICB8PiB1cGRhdGVfbG9nX2NvbnRlbnQpO1xuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGNvbnRlbnRfbG9nX2lkOyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXByZVwiOyBcInBhbmVsLXNjcm9sbFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC50eHQgXCJObyBsb2cgeWV0LlwiIF07XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZsb2dcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2bG9nXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCB3aXRoX2ZpbGUgKGhhbmRsZXIgOiAoc3RyaW5nICogc3RyaW5nKSBBcGkucmVzdWx0IC0+IHVuaXQgQXBpLmx3dF9yZXN1bHQpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpID4+PSBoYW5kbGVyKSA+Pj0gZnVuIF8gLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9jb250ZW50IH4oZmlsZW5hbWUgOiBzdHJpbmcpIH4oZmlsZWNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIHdpdGhfZmlsZVxuICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIChfLCBjdXJyZW50X2ZpbGVuYW1lKSAtPlxuICAgICAgICAgaWYgZmlsZW5hbWUgPSBjdXJyZW50X2ZpbGVuYW1lIHRoZW5cbiAgICAgICAgICAgU3RhdGVfZmlsZS5zZXRfY29udGVudCBmaWxlY29udGVudCA+Pj0gZnVuIHIgLT5cbiAgICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgRm9ybWF0LnNwcmludGYgXCJmaWxlIG5hbWUgbWlzbWF0Y2ggJXMgJXNcIiBmaWxlbmFtZSBjdXJyZW50X2ZpbGVuYW1lXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgbXNnKVxuICAgICAgICAgKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgY3JlYXRlX2ZpbGUgPyh0ZXh0ID0gTHd0LnJldHVybiAoSnMuc3RyaW5nIFwiXCIpKSAoZmlsZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggdGV4dCA+Pj0gZnVuIHR4dCAtPlxuICAgICAgICAgIGxldCBjb250ZW50ID0gSnMudG9fc3RyaW5nIHR4dCBpblxuICAgICAgICAgIFN0YXRlX2ZpbGUuY3JlYXRlX2ZpbGUgfmZpbGVuYW1lOmZpbGVfaWQgfmNvbnRlbnRcbiAgICAgICAgICA+Pj0gKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgICAgIGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlIChmaWxlX2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgIChKcy5zdHJpbmdcbiAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIltFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGVdIGZpbGUgYCVzYFwiXG4gICAgICAgICAgICBmaWxlX2lkKSlcbiAgaW5cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCBOb25lID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBjbG9zZV9maWxlICgpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUucmVtb3ZlX2ZpbGUgKCkgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlX2NvbXBpbGUgcmFuayAoY29tcGlsZSA6IGJvb2wpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2V0X2NvbXBpbGUgcmFuayBjb21waWxlID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvcmRlcl9maWxlcyAoZmlsZW5hbWVzIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUub3JkZXJfZmlsZXMgZmlsZW5hbWVzID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBleHBvcnRfY3VycmVudF9maWxlICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpKVxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIChkYXRhLCBmaWxlbmFtZSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGE6KEpzLnN0cmluZyBkYXRhKVxuICAgICAgICAgICAgICAgICAgfm1pbWU6XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZmlsZV9uZXdfbW9kYWxfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtbmV3LW1vZGFsXCJcbmxldCBmaWxlX25ld19pbnB1dF9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctaW5wdXRcIlxubGV0IGZpbGVfZHJvcGRvd25fbWVudV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1kcm9wZG93bi1tZW51XCJcbmxldCBmaWxlX25ld19saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctbGlcIlxubGV0IGZpbGVfb3Blbl9saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1vcGVuLWxpXCJcbmxldCBmaWxlX29wZW5fc2VsZWN0b3JfaWQgPSBcIm1lbnUtZWRpdG9yLW9wZW4tc2VsZWN0b3ItaWRcIlxubGV0IGZpbGVfY2xvc2VfbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtY2xvc2UtbGlcIlxubGV0IGZpbGVfZXhwb3J0X2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLWV4cG9ydC1saVwiXG5sZXQgZmlsZV9jb21waWxlX2NoZWNrYm94ID0gXCJtZW51LWVkaXRvci1maWxlLWNvbXBpbGUtY2hlY2tib3hcIlxuXG4oKiBsaXN0IGZpbGVuYW1lIGFubm90YXRpb24gKilcbmxldCBlbGVtZW50X2dldF9maWxlbmFtZSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIENvbW1vbi5lbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIFwiZmlsZS1pZFwiXG5cbmxldCBlbGVtZW50X3NldF9maWxlbmFtZSAobmFtZSA6IHN0cmluZykgPVxuICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1maWxlLWlkXCIgbmFtZVxuXG5sZXQgZmlsZV9uZXdfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBmaWxlX25ld19pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBmaWxlX25ld19pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgZmlsZV9uZXdfaW5wdXRcblxubGV0IGZpbGVfY2hlY2tib3ggZmlsZV9pZCBpc19jaGVja2VkID1cbiAgbGV0IGNoZWNrZWRfYXR0cmlidXRlID1cbiAgICBpZiBpc19jaGVja2VkIHRoZW5cbiAgICAgIFsgSHRtbC5hX2NoZWNrZWQgKCkgXVxuICAgIGVsc2VcbiAgICAgIFtdXG4gIGluXG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIChbXG4gICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7XG4gICAgICAgICBIdG1sLmFfY2xhc3MgWyBmaWxlX2NvbXBpbGVfY2hlY2tib3ggXTtcbiAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIGZpbGVfaWQ7XG4gICAgICAgXVxuICAgICAgQCBjaGVja2VkX2F0dHJpYnV0ZSlcbiAgICAoKVxuXG5sZXQgb3Blbl9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZpbGVfb3Blbl9zZWxlY3Rvcl9pZDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJoaWRkZW5cIiBdO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiZmlsZVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYWNjZXB0XCIgXCIua2FcIjtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZHJvcGRvd24gKG1vZGVsIDogU3RhdGVfZmlsZS5tb2RlbCkgPVxuICAoKiBkaXJlY3RvcmllcyAqKVxuICBsZXQgaGlkZV9vbl9lbXB0eSBsID1cbiAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2VcbiAgICAgIGxcbiAgaW5cbiAgbGV0IGZpbGVfbGkgPVxuICAgIGxldCBjdXJyZW50X2ZpbGVfcG9zID1cbiAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAoZnVuIHsgU3RhdGVfZmlsZS5yYW5rOyBfIH0gLT4gcmFuaylcbiAgICAgICAgbW9kZWwuU3RhdGVfZmlsZS5jdXJyZW50XG4gICAgaW5cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAocmFuaywgeyBTdGF0ZV9maWxlLm5hbWU7IFN0YXRlX2ZpbGUubG9jYWwgfSkgLT5cbiAgICAgICAgbGV0IGNvbXBpbGUgPSBsb2NhbCA9IE5vbmUgaW5cbiAgICAgICAgbGV0IGxpX2NsYXNzID1cbiAgICAgICAgICAoaWYgY3VycmVudF9maWxlX3BvcyA9IFNvbWUgcmFuayB0aGVuXG4gICAgICAgICAgICAgWyBcImFjdGl2ZVwiIF1cbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFtdKVxuICAgICAgICAgIEAgWyBcInVpLXN0YXRlLXNvcnRhYmxlXCIgXVxuICAgICAgICBpblxuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3M7IGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYVxuICAgICAgICAgICAgICB+YTpbIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjaGVja2JveC1jb250cm9sLWRpdlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBmaWxlX2NoZWNrYm94IG5hbWUgY29tcGlsZTtcbiAgICAgICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2hlY2tib3gtY29udHJvbC1sYWJlbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIG5hbWUgXTtcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXSlcbiAgICAgIChNb2RzLkludE1hcC5iaW5kaW5ncyBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSlcbiAgaW5cbiAgbGV0IHNlcGFyYXRvcl9saSA9XG4gICAgaGlkZV9vbl9lbXB0eVxuICAgICAgW1xuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJzZXBhcmF0b3JcIjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgWyBcImRpdmlkZXJcIjsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IG5ld19saSA9XG4gICAgW1xuICAgICAgSHRtbC5saVxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICBbIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX25ld19saV9pZCBdIFsgSHRtbC5jZGF0YSBcIk5ld1wiIF0gXTtcbiAgICBdXG4gIGluXG5cbiAgbGV0IG9wZW5fbGkgPVxuICAgIFtcbiAgICAgIEh0bWwubGlcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX29wZW5fbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJPcGVuXCIgXTtcbiAgICAgICAgICBvcGVuX2lucHV0O1xuICAgICAgICBdO1xuICAgIF1cbiAgaW5cblxuICBsZXQgY2xvc2VfbGkgPVxuICAgIGhpZGVfb25fZW1wdHlcbiAgICAgIFtcbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgICAgWyBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9jbG9zZV9saV9pZCBdIFsgSHRtbC5jZGF0YSBcIkNsb3NlXCIgXSBdO1xuICAgICAgXVxuICBpblxuICBsZXQgZXhwb3J0X2xpID1cbiAgICBoaWRlX29uX2VtcHR5XG4gICAgICBbXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICAgIFsgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfZXhwb3J0X2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiRXhwb3J0XCIgXSBdO1xuICAgICAgXVxuICBpblxuICBbXSBAIGZpbGVfbGkgQCBzZXBhcmF0b3JfbGkgQCBuZXdfbGkgQCBvcGVuX2xpIEAgY2xvc2VfbGkgQCBleHBvcnRfbGlcblxubGV0IGNvbnRlbnQgPVxuICBsZXQgbGlfbGlzdCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAoUmVhY3QuUy5tYXAgKGZ1biBtb2RlbCAtPiBkcm9wZG93biBtb2RlbCkgU3RhdGVfZmlsZS5tb2RlbClcbiAgaW5cbiAgW1xuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0biBidG4tZGVmYXVsdFwiOyBcImRyb3Bkb3duLXRvZ2dsZVwiIF07XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJkcm9wZG93blwiO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWhhc3BvcHVwXCIgXCJ0cnVlXCI7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtZXhwYW5kZWRcIiBcImZhbHNlXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5sMlxuICAgICAgICAgICAgICAgKGZ1biBtb2RlbCBmaWxlIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY3VycmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGZpbGUuU3RhdGVfZmlsZS5jdXJyZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgeyBTdGF0ZV9maWxlLm91dF9vZl9zeW5jOyBfIH0gLT4gb3V0X29mX3N5bmMpKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCBTdGF0ZV9maWxlLm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLnR4dCBcIkZpbGVcIjsgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjYXJldFwiIF0gXSBbXSBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbC51bFxuICAgICAgfmE6WyBIdG1sLmFfaWQgZmlsZV9kcm9wZG93bl9tZW51X2lkOyBIdG1sLmFfY2xhc3MgWyBcImRyb3Bkb3duLW1lbnVcIiBdIF1cbiAgICAgIGxpX2xpc3Q7XG4gICAgVWlfY29tbW9uLmNyZWF0ZV9tb2RhbF90ZXh0X2lucHV0IH5pZDpmaWxlX25ld19tb2RhbF9pZFxuICAgICAgfnRpdGxlX2xhYmVsOlwiTmV3IEZpbGVcIlxuICAgICAgfmJvZHk6XG4gICAgICAgIFsgWyVodG1sIHt8PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+fH0gWyBmaWxlX25ld19pbnB1dCBdIHt8PC9kaXY+fH1dIF1cbiAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgRmlsZVwiXG4gICAgICB+c3VibWl0OlxuICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZmlsZV9uZXdfaW5wdXRfZG9tIyMudmFsdWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSBFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuY3JlYXRlX2ZpbGUgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcImhpZGVcIlxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSnMuX2ZhbHNlKSk7XG4gIF1cblxubGV0IG9yZGVyX2ZpbGVzIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCBmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCA9XG4gICAgQ29tbW9uLmNoaWxkcmVuX3ZhbHVlIGVsZW1lbnQgXCJsaVtkYXRhLWZpbGUtaWRdXCIgKGZ1biBlbGVtZW50IC0+XG4gICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJbRWRpdG9yX21lbnVfZmlsZS5vcmRlcl9maWxlc11cIiBpblxuICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGVsZW1lbnQgaW5cbiAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cbiAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAoZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAoZnVuICgpIC0+IGZhaWx3aXRoIFwibWlzc2luZyBmaWxlbmFtZVwiKVxuICAgICAgICAgIEpzLnRvX3N0cmluZylcbiAgaW5cbiAgbGV0ICgpID0gRWRpdG9yX21lbnVfZmlsZV9jb250cm9sbGVyLm9yZGVyX2ZpbGVzIGZpbGVuYW1lcyBpblxuICAoKVxuXG5sZXQgZmlsZV9zZWxlY3RfaGFuZGxlciBfIF8gOiB1bml0IEx3dC50ID1cbiAgbGV0IG9wZW5faW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQgaW5cbiAgbGV0IGZpbGVzID0gSnMuT3B0ZGVmLmdldCBvcGVuX2lucHV0X2RvbSMjLmZpbGVzIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSBpblxuICBsZXQgZmlsZSA9IEpzLk9wdC5nZXQgKGZpbGVzIyNpdGVtIDApIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSBpblxuICBsZXQgZmlsZV9pZCA9IEpzLnRvX3N0cmluZyBmaWxlIyMubmFtZSBpblxuICBsZXQgKCkgPVxuICAgIEVkaXRvcl9tZW51X2ZpbGVfY29udHJvbGxlci5jcmVhdGVfZmlsZVxuICAgICAgfnRleHQ6KEpzX29mX29jYW1sX2x3dC5GaWxlLnJlYWRBc1RleHQgZmlsZSlcbiAgICAgIGZpbGVfaWRcbiAgaW5cbiAgbGV0ICgpID0gb3Blbl9pbnB1dF9kb20jIy52YWx1ZSA6PSBKcy5zdHJpbmcgXCJcIiBpblxuICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCBvcGVuX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcGVuX2lucHV0IGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX25ld19saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcInNob3dcIiBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9vcGVuX2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAoKiBjbGljayA6IHVuaXQgSnMubWV0aDsgKilcbiAgICAgICAgICAgbGV0ICgpID0gb3Blbl9pbnB1dF9kb20jI2NsaWNrIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX2Nsb3NlX2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuY2xvc2VfZmlsZSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9leHBvcnRfbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IEVkaXRvcl9tZW51X2ZpbGVfY29udHJvbGxlci5leHBvcnRfY3VycmVudF9maWxlICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcInNwYW5bZGF0YS1maWxlLWlkXVwiIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biAoZXZlbnQgOiBEb21faHRtbC5ldmVudCBKcy50KSAtPlxuICAgICAgICAgICAoKlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIENvbW1vbi5sb2dfZ3JvdXAgXCJbRWRpdG9yX21lbnVfZmlsZV0gY2xpY2tlZCBzcGFuW2RhdGEtZmlsZS1pZF1cIlxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGV2ZW50IGluXG4gICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG4qKVxuICAgICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgICAgIGxldCBmaWxlX2lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgICAgICAgICAgICBKcy5PcHQuYmluZCB0YXJnZXQgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBKcy5PcHQuY2FzZSBmaWxlX2lkXG4gICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAgICAoZnVuIGZpbGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgRWRpdG9yX21lbnVfZmlsZV9jb250cm9sbGVyLnNldF9maWxlIChKcy50b19zdHJpbmcgZmlsZV9pZCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmNyZWF0ZV9zb3J0IGZpbGVfZHJvcGRvd25fbWVudV9pZCAoZnVuIGV2ZW50IF8gKCogdWkgKikgLT5cbiAgICAgICAgbGV0IHRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgPSBldmVudCMjLnRhcmdldCBpblxuICAgICAgICBKcy5PcHQuY2FzZSB0YXJnZXRcbiAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgIGxldCBpZCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBlbGVtZW50IyMuaWQgaW5cbiAgICAgICAgICAgIGlmIGZpbGVfZHJvcGRvd25fbWVudV9pZCA9IGlkIHRoZW5cbiAgICAgICAgICAgICAgb3JkZXJfZmlsZXMgZWxlbWVudFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJbRWRpdG9yX21lbnVfZmlsZV0gZmlsZSBkcm9wZG93biA6IHVuZXhwZWN0ZWQgaWQgJXNcIiBpZCkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb25cbiAgICAgIChGb3JtYXQuc3ByaW50ZiBcImlucHV0LiVzXCIgZmlsZV9jb21waWxlX2NoZWNrYm94KVxuICAgICAgXCJjaGFuZ2VcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgICAgIGxldCBmaWxlX2lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgICAgICAgICAgICBKcy5PcHQuYmluZCB0YXJnZXQgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGlzX2NoZWNrZWQgOiBib29sID1cbiAgICAgICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgICAgICAoSnMuT3B0LmNhc2UgdGFyZ2V0XG4gICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKEpzLlVuc2FmZS5jb2VyY2UgZWxlbWVudCA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50KSMjLmNoZWNrZWQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEpzLk9wdC5jYXNlIGZpbGVfaWRcbiAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgICAgIChmdW4gZmlsZV9pZCAtPlxuICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5sb2dfZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgIFwiW0VkaXRvcl9tZW51X2ZpbGVdIHRyaWdnZXJlZCBcXFxuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmZpbGVfY29tcGlsZV9jaGVja2JveCwgZmlsZV9pZDpcIlxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGZpbGVfaWQgaW5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICBFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGVfY29tcGlsZVxuICAgICAgICAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBmaWxlX2lkKSBpc19jaGVja2VkXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEx3dC5hc3luYyAoZnVuICgpIC0+XG4gICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmNoYW5nZXNcbiAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQpXG4gICAgICAgICAgZmlsZV9zZWxlY3RfaGFuZGxlcilcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ29kZW1pcnJvclxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZWRpdG9yX2Z1bGwsIHNldF9lZGl0b3JfZnVsbCA9IFJlYWN0LlMuY3JlYXRlIChmYWxzZSA6IGJvb2wpXG5sZXQgZmlsZW5hbWUsIHNldF9maWxlbmFtZSA9IFJlYWN0LlMuY3JlYXRlIChOb25lIDogc3RyaW5nIG9wdGlvbilcblxubGV0IG1vdmVfY3Vyc29yX2hvb2ssIG1vdmVfY3Vyc29yX2hvb2tfc2VuZCA9XG4gIEhvb2tlZC5FLmNyZWF0ZSB+ZGVidWc6XCJtb3ZlX2N1cnNvcl9ob29rXCIgKClcblxubGV0IGZpbGVfbGFiZWwgPVxuICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgKFJlYWN0LlMubWFwIChPcHRpb25fdXRpbC51bnNvbWUgXCJcIikgU3RhdGVfZmlsZS5jdXJyZW50X2ZpbGVuYW1lKVxuXG5sZXQgdG9nZ2xlX2J1dHRvbl9pZCA9IFwidG9nZ2xlX2J1dHRvblwiXG5cbmxldCB0b2dnbGVfYnV0dG9uID1cbiAgSHRtbC5hXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0b2dnbGVfYnV0dG9uX2lkO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJwdWxsLXJpZ2h0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwuY2RhdGEgXCJ0b2dnbGVcIiBdXG5cbmxldCBwYW5lbF9oZWFkaW5nX2dyb3VwX2lkID0gXCJwYW5lbF9oZWFkaW5nX2dyb3VwXCJcblxubGV0IHBhbmVsX2hlYWRpbmcgPVxuICBsZXQgbWVudV9lZGl0b3JfZmlsZV9jb250ZW50IDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuLWdyb3VwXCIgXTsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImdyb3VwXCI7XG4gICAgICAgIF1cbiAgICAgIEVkaXRvcl9tZW51X2ZpbGUuY29udGVudFxuICBpblxuICBsZXQgYnV0dG9ucyA9IG1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCA6OiBbIHRvZ2dsZV9idXR0b24gXSBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICA8ZGl2IGlkPVwifH1cbiAgICAgIHBhbmVsX2hlYWRpbmdfZ3JvdXBfaWQge3xcIiBjbGFzcz1cImNvbC1tZC0xMCBidG4tZ3JvdXBcIj58fSBidXR0b25zXG4gICAgICB7fDwvZGl2PlxuICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIG9uZWxpbmVyIGZpbGVuYW1lXCI+fH1cbiAgICAgIFsgZmlsZV9sYWJlbCBdXG4gICAgICB7fDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj58fV1cblxubGV0IGNvZGVtaXJyb3JfaWQgPSBcImNvZGUtbWlycm9yXCJcbmxldCBlZGl0b3JfcGFuZWxfaWQgPSBcImVkaXRvci1wYW5lbFwiXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHRleHRhcmVhID0gSHRtbC50ZXh0YXJlYSB+YTpbIEh0bWwuYV9pZCBjb2RlbWlycm9yX2lkIF0gKEh0bWwudHh0IFwiXCIpIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiOyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgIFtcbiAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdIFsgcGFuZWxfaGVhZGluZyBdO1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9maWxlLmN1cnJlbnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmhpZGVfY29kZW1pcnJvciAoKSBpblxuICAgICAgICAgICAgICAgICAgICAgWyBcIm5vLXBhbmVsLWJvZHlcIjsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zaG93X2NvZGVtaXJyb3IgKCkgaW5cbiAgICAgICAgICAgICAgICAgICAgIFsgXCJwYW5lbC1ib2R5XCI7IFwiZmxleC1jb250ZW50XCIgXSlcbiAgICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgICAgICBIdG1sLmFfaWQgZWRpdG9yX3BhbmVsX2lkO1xuICAgICAgICAgIF1cbiAgICAgICAgWyB0ZXh0YXJlYSBdO1xuICAgIF1cblxubGV0IGVycm9yX2xpbnQgKGVycm9ycyA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgOlxuICAgIENvZGVtaXJyb3IubGludCBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICBsZXQgcG9zaXRpb24gcCA9IG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChwLkxvYy5saW5lIC0gMSkgcC5Mb2MuY2hyIGluXG4gIGxldCBoeWRyYXRlIChlcnJvciA6IEFwaV90eXBlc19qLm1lc3NhZ2UpIDogbGludCBKcy50IG9wdGlvbiA9XG4gICAgbWF0Y2ggZXJyb3IuUmVzdWx0X3V0aWwucmFuZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJhbmdlIC0+XG4gICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBTdGF0ZV9maWxlLmN1cnJlbnRfZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBmaWxlX2lkIC0+XG4gICAgICAgIGlmIHJhbmdlLkxvYy5maWxlID0gZmlsZV9pZCB0aGVuXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKENvZGVtaXJyb3IuY3JlYXRlX2xpbnRcbiAgICAgICAgICAgICAgIH5tZXNzYWdlOmVycm9yLlJlc3VsdF91dGlsLnRleHRcbiAgICAgICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgLi4uIGkgYW0gdHJ5aW5nIHRvIGtlZXBcbiAgICAgICAgICAgICAgICAgICAgICB0aGUgY29kZSBtaXJyb3IgY29kZSBpbmRlcGVuZGVudCBvZiB0aGUgYXBpIGNvZGUuXG4gICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICB+c2V2ZXJpdHk6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBlcnJvci5SZXN1bHRfdXRpbC5zZXZlcml0eSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5BcHAgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuRXJyb3IgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuV2FybmluZyAtPiBDb2RlbWlycm9yLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkluZm8gLT4gQ29kZW1pcnJvci5XYXJuaW5nXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5EZWJ1ZyAtPiBDb2RlbWlycm9yLldhcm5pbmcpXG4gICAgICAgICAgICAgICB+ZnJvbToocG9zaXRpb24gcmFuZ2UuTG9jLmZyb21fcG9zaXRpb24pXG4gICAgICAgICAgICAgICB+dG9fOihwb3NpdGlvbiByYW5nZS5Mb2MudG9fcG9zaXRpb24pKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZSlcbiAgaW5cbiAgSnMuYXJyYXlcbiAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIHZhbHVlIC0+XG4gICAgICAgICAgICBtYXRjaCBoeWRyYXRlIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZSA6OiBhY2MpXG4gICAgICAgICAgW10gZXJyb3JzKSlcblxuKCogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDU3NTM0My9jb2RlbWlycm9yLWlzLWl0LXBvc3NpYmxlLXRvLXNjcm9sbC10by1hLWxpbmUtc28tdGhhdC1pdC1pcy1pbi10aGUtbWlkZGxlLW9mLXcgKilcbmxldCBqdW1wX3RvX2xpbmUgKGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQpIChsaW5lIDogaW50KSA6IHVuaXQgPVxuICBsZXQgcG9zaXRpb24gOiBwb3NpdGlvbiBKcy50ID0gbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gbGluZSAwIGluXG4gIGxldCBtb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID0gSnMuc29tZSAoSnMuc3RyaW5nIFwibG9jYWxcIikgaW5cbiAgbGV0IGNvb3JkcyA6IENvZGVtaXJyb3IuZGltZW5zaW9uIEpzLnQgPVxuICAgIGNvZGVtaXJyb3IjI2NoYXJDb29yZHMgcG9zaXRpb24gbW9kZVxuICBpblxuICBsZXQgdG9wIDogaW50ID0gY29vcmRzIyMudG9wIGluXG4gIGxldCBlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50ID0gY29kZW1pcnJvciMjZ2V0U2Nyb2xsZXJFbGVtZW50IGluXG4gIGxldCBtaWRkbGVIZWlnaHQgOiBpbnQgPSBlbGVtZW50IyMub2Zmc2V0SGVpZ2h0IC8gMiBpblxuICBsZXQgc2Nyb2xsTGluZSA6IGludCA9IHRvcCAtIG1pZGRsZUhlaWdodCAtIDUgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2Nyb2xsVG8gSnMubnVsbCAoSnMuc29tZSBzY3JvbGxMaW5lKSBpblxuICAoKVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IEVkaXRvcl9tZW51X2ZpbGUub25sb2FkICgpIGluXG4gIGxldCBsaW50X2NvbmZpZyA9IENvZGVtaXJyb3IuY3JlYXRlX2xpbnRfY29uZmlndXJhdGlvbiAoKSBpblxuXG4gIGxldCAoKSA9XG4gICAgbGludF9jb25maWcjIy5nZXRBbm5vdGF0aW9ucyA6PSBmdW4gXyBfIF8gLT5cbiAgICBlcnJvcl9saW50IChIb29rZWQuUy52YWx1ZSBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gIGluXG4gIGxldCAoKSA9IGxpbnRfY29uZmlnIyMubGludE9uQ2hhbmdlIDo9IEpzLl9mYWxzZSBpblxuICBsZXQgY29uZmlndXJhdGlvbiA9IENvZGVtaXJyb3IuZGVmYXVsdF9jb25maWd1cmF0aW9uIGluXG4gIGxldCBndXR0ZXJfb3B0aW9ucyA9XG4gICAgSnMuc3RyaW5nIFwiYnJlYWtwb2ludHMsQ29kZU1pcnJvci1saW50LW1hcmtlcnMsQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXG4gIGluXG4gIGxldCBndXR0ZXJfb3B0aW9uIDogSnMuc3RyaW5nX2FycmF5IEpzLnQgPVxuICAgIGd1dHRlcl9vcHRpb25zIyNzcGxpdCAoSnMuc3RyaW5nIFwiLFwiKVxuICBpblxuICBsZXQgdGV4dGFyZWEgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgPSBVaV9jb21tb24uaWRfZG9tIFwiY29kZS1taXJyb3JcIiBpblxuICBsZXQgKCkgPVxuICAgIGNvbmZpZ3VyYXRpb24jIy5saW5lTnVtYmVycyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMubGluZVdyYXBwaW5nIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5zdHlsZUFjdGl2ZUxpbmUgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLm1hdGNoQnJhY2tldHMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmF1dG9mb2N1cyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMuZ3V0dGVycyA6PSBndXR0ZXJfb3B0aW9uO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5saW50IDo9IGxpbnRfY29uZmlnO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5tb2RlIDo9IEpzLnN0cmluZyBcIkthcHBhXCJcbiAgaW5cbiAgbGV0IGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAgIENvZGVtaXJyb3IuZnJvbVRleHRBcmVhIHRleHRhcmVhIGNvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgKEpzLnN0cmluZyBcIlwiKSBpblxuICBsZXQgKCkgPVxuICAgIEVkaXRvcl9jb250cm9sbGVyLndpdGhfZmlsZVxuICAgICAgKFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgIH5vazooZnVuIChjb250ZW50LCBpZCkgLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIGlkKSBpblxuICAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSAoSnMuc3RyaW5nIGNvbnRlbnQpIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgIH5lcnJvcjooZnVuIF8gLT5cbiAgICAgICAgICAgKCogaWdub3JlIGlmIG1pc3NpbmcgZmlsZSAqKVxuICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvZGVtaXJyb3IuY29tbWFuZHMjIy5zYXZlIDo9XG4gICAgICBmdW4gXyAtPiBFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuZXhwb3J0X2N1cnJlbnRfZmlsZSAoKVxuICBpblxuICBsZXQgdGltZW91dCA6IERvbV9odG1sLnRpbWVvdXRfaWQgb3B0aW9uIHJlZiA9IHJlZiBOb25lIGluXG4gIGxldCBoYW5kbGVyIGNvZGVtaXJyb3IgY2hhbmdlID1cbiAgICBsZXQgKCkgPSBTdGF0ZV9maWxlLm91dF9vZl9zeW5jIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggIXRpbWVvdXQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgdGltZW91dCAtPiBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCB0aW1lb3V0XG4gICAgaW5cbiAgICBsZXQgZGVsYXkgOiBmbG9hdCA9XG4gICAgICBpZiAoSnMuc3RyX2FycmF5IGNoYW5nZSMjLnRleHQpIyMubGVuZ3RoID4gMSB8fCBTdGF0ZV9lcnJvci5oYXNfZXJyb3JzICgpXG4gICAgICB0aGVuXG4gICAgICAgIDEuMCAqLiAxMDAwLjBcbiAgICAgIGVsc2VcbiAgICAgICAgNS4wICouIDEwMDAuMFxuICAgIGluXG4gICAgbGV0IGhhbmRsZV90aW1lb3V0ICgpID1cbiAgICAgIGxldCAoKSA9IFN0YXRlX2ZpbGUub3V0X29mX3N5bmMgZmFsc2UgaW5cbiAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlsZW5hbWUgLT5cbiAgICAgICAgRWRpdG9yX2NvbnRyb2xsZXIuc2V0X2NvbnRlbnQgfmZpbGVuYW1lXG4gICAgICAgICAgfmZpbGVjb250ZW50OihKcy50b19zdHJpbmcgY29kZW1pcnJvciMjZ2V0VmFsdWUpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgdGltZW91dCA6PVxuICAgICAgICBTb21lXG4gICAgICAgICAgKERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dFxuICAgICAgICAgICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBoYW5kbGVfdGltZW91dCAoKSkpXG4gICAgICAgICAgICAgZGVsYXkpXG4gICAgaW5cbiAgICAoKVxuICBpblxuICBsZXQgKCkgPSBjb2RlbWlycm9yIyNvbkNoYW5nZSBoYW5kbGVyIGluXG4gIGxldCAoKSA9XG4gICAgY29kZW1pcnJvciMjb25DdXJzb3JBY3Rpdml0eSAoZnVuIF9jb2RlbWlycm9yIC0+XG4gICAgICAgIGxldCBwb3MgPSBjb2RlbWlycm9yIyNnZXRDdXJzb3IgaW5cbiAgICAgICAgbGV0IGxpbmUgPSBwb3MjIy5saW5lIGluXG4gICAgICAgIGxldCBjaCA9IHBvcyMjLmNoIGluXG4gICAgICAgIFN0YXRlX2ZpbGUuY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaClcbiAgaW5cbiAgbGV0IHRvZ2dsZV9idXR0b25fZG9tIDogRG9tX2h0bWwubGlua0VsZW1lbnQgSnMudCA9XG4gICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgKEpzLk9wdC5nZXRcbiAgICAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgdG9nZ2xlX2J1dHRvbl9pZCkpXG4gICAgICAgICAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgdG9nZ2xlX2J1dHRvbl9kb20jIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBlZGl0b3JfZnVsbCA9IFJlYWN0LlMudmFsdWUgZWRpdG9yX2Z1bGwgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2VkaXRvcl9mdWxsIChub3QgZWRpdG9yX2Z1bGwpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEhvb2tlZC5TLnJlZ2lzdGVyIFN0YXRlX2Vycm9yLmVycm9ycyAoZnVuIF9lcnJvcnMgLT5cbiAgICAgICAgY29kZW1pcnJvciMjcGVyZm9ybUxpbnQpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSG9va2VkLkUucmVnaXN0ZXIgU3RhdGVfZmlsZS5yZWZyZXNoX2ZpbGVfaG9vayAoZnVuIHJlZnJlc2ggLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIHJlZnJlc2guU3RhdGVfZmlsZS5maWxlbmFtZSkgaW5cbiAgICAgICAgbGV0IGNhbmQgPSBKcy5zdHJpbmcgcmVmcmVzaC5TdGF0ZV9maWxlLmNvbnRlbnQgaW5cbiAgICAgICAgaWYgY2FuZCA8PiBjb2RlbWlycm9yIyNnZXRWYWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSBjYW5kIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIG1hdGNoIHJlZnJlc2guU3RhdGVfZmlsZS5saW5lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGxpbmUgLT4ganVtcF90b19saW5lIGNvZGVtaXJyb3IgbGluZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBIb29rZWQuRS5yZWdpc3RlciBtb3ZlX2N1cnNvcl9ob29rIChmdW4gcG9zIC0+XG4gICAgICAgIGlmIFNvbWUgcG9zLkxvYy5maWxlID0gUmVhY3QuUy52YWx1ZSBmaWxlbmFtZSB0aGVuIChcbiAgICAgICAgICBsZXQgYmVnID0gcG9zLkxvYy5mcm9tX3Bvc2l0aW9uIGluXG4gICAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICAgIG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChiZWcuTG9jLmxpbmUgLSAxKSBiZWcuTG9jLmNoclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVuID0gcG9zLkxvYy5mcm9tX3Bvc2l0aW9uIGluXG4gICAgICAgICAgbGV0IGxhc3QgPSBuZXclanMgQ29kZW1pcnJvci5wb3NpdGlvbiAoZW4uTG9jLmxpbmUgLSAxKSBlbi5Mb2MuY2hyIGluXG4gICAgICAgICAgY29kZW1pcnJvciMjc2V0U2VsZWN0aW9uIGZpcnN0IGxhc3RcbiAgICAgICAgKSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxuXG4oKiB0b2RvIGFkZCBidXR0b24gdG8gc3dpdGNoIG9uL29mZiB0aGUgZGlzcGxheSBvZiB0aGUgaW5mb3JtYXRpb24gb2YgZWFjaCBhYnN0cmFjdCBkb21haW5cbiAgIGxldCBub25fcmVsYXRpb25hbCA9IHJlZiB0cnVlXG4gICBsZXQgcmVsYXRpb25hbCA9IHJlZiB0cnVlXG4gICBsZXQgc2l0ZV9hY2Nyb3NzID0gcmVmIHRydWVcbiAgIGxldCBwYXJhbGxlbF9ib25kID0gcmVmIHRydWVcbiopXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IGNvbnN0cmFpbnRzX2RpdiA9XG4gICAgU3RhdGVfcHJvamVjdC5vbl9wcm9qZWN0X2NoYW5nZV9hc3luYyB+b246dGFiX2lzX2FjdGl2ZSAoKVxuICAgICAgKFJlYWN0LlMuY29uc3QgKCkpIFtdIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgKCkgLT5cbiAgICAgICAgbWFuYWdlciNnZXRfY29uc3RyYWludHNfbGlzdFxuICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICB+b2s6KGZ1biBjb25zdHJhaW50cyAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIHBhbmVscyAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgICAgKCptYXRjaCBiIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBwYW5lbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPiopXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCBsZW1tYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHlwID0gUHVibGljX2RhdGEuZ2V0X2h5cCBsZW1tYSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uY2x1c2lvbiA9IFB1YmxpY19kYXRhLmdldF9yZWZpbmVtZW50IGxlbW1hIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb25jbHVzaW9uIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsgc2l0ZV9ncmFwaCBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sX3V0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBzaXRlX2dyYXBoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChIdG1sX3V0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gSHRtbF91dGlsaXR5LnByaW50X25ld2xpbmUgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBIdG1sX3V0aWxpdHkucHJpbnRfc3RyaW5nIFwiIF1cIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGJvb2wsIGxpc3QpIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbF91dGlsaXR5LnByaW50X3N0cmluZyBcIiB2IFwiIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWxfdXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIGEgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhbHNlLCBsaXN0KSAoTGlzdC5yZXYgY29uY2x1c2lvbikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBIdG1sX3V0aWxpdHkucHJpbnRfc3RyaW5nIFwiWyBcIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gSHRtbF91dGlsaXR5LnByaW50X3N0cmluZyBcIiAgPT4gIFwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBIdG1sX3V0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBoeXAgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgW10gKExpc3QucmV2IGIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IGEgXVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtcHJlXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0c1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbFwiOyBcInBhbmVsLWRlZmF1bHRcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICBbIHRpdGxlOyBjb250ZW50IF1cbiAgICAgICAgICAgICAgICAgICAgOjogcGFuZWxzKVxuICAgICAgICAgICAgICAgICAgW10gY29uc3RyYWludHMpXG4gICAgICAgICAgICAgIH5lcnJvcjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPVxuICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWhlYWRpbmdcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkthU2EgaGFzIGZhaWxlZFwiIF1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtcHJlXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlIG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsXCI7IFwicGFuZWwtZGFuZ2VyXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgIFsgdGl0bGU7IGNvbnRlbnQgXVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgWyBvdXQgXSkpXG4gIGluXG4gIFtcbiAgICBUeXhtbF9qcy5SLkh0bWw1LmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBjb25zdHJhaW50c19kaXYpO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29uc3RyYWludHNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29uc3RyYWludHNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxudHlwZSBtb2RlbF9ncmFwaCA9IHsgZndkOiBpbnQgb3B0aW9uOyBid2Q6IGludCBvcHRpb247IHRvdGFsOiBpbnQgfVxuXG50eXBlIGluZmx1ZW5jZV9zcGhlcmUgPSB7XG4gIHBvc2l0aXZlX29uOlxuICAgIChQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbiAgbmVnYXRpdmVfb246XG4gICAgKFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xuICBwb3NpdGl2ZV9ieTpcbiAgICAoUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG4gIG5lZ2F0aXZlX2J5OlxuICAgIChQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbn1cblxubGV0IGVtcHR5X3NwaGVyZSA9XG4gIHsgcG9zaXRpdmVfb24gPSBbXTsgcG9zaXRpdmVfYnkgPSBbXTsgbmVnYXRpdmVfb24gPSBbXTsgbmVnYXRpdmVfYnkgPSBbXSB9XG5cbnR5cGUgbW9kZWxfcmVuZGVyaW5nID0gRHJhd0dyYXBoIG9mIG1vZGVsX2dyYXBoIHwgRHJhd1RhYnVsYXIgb2YgdW5pdFxuXG50eXBlIG1vZGVsID0ge1xuICByZW5kZXJpbmc6IG1vZGVsX3JlbmRlcmluZztcbiAgYWNjdXJhY3k6IFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsIG9wdGlvbjtcbiAgb3JpZ2luOiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZSBvcHRpb247XG4gIG9yaWdpbl9sYWJlbDogc3RyaW5nIG9wdGlvbjtcbn1cblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9XG4gIEhvb2tlZC5TLmNyZWF0ZSB+ZGVidWc6XCJ0YWJfaXNfYWN0aXZlXCIgZmFsc2VcblxubGV0IHRhYl9pc19hY3RpdmVfc2lnbmFsID0gSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIHRhYl9pc19hY3RpdmVcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IHRyYWNrX2N1cnNvciwgdHJhY2tfY3Vyc29yX3NldCA9IEhvb2tlZC5TLmNyZWF0ZSB+ZGVidWc6XCJ0cmFja19jdXJzb3JcIiBmYWxzZVxubGV0IHRyYWNrX2N1cnNvcl9zaWduYWwgPSBIb29rZWQuUy50b19yZWFjdF9zaWduYWwgdHJhY2tfY3Vyc29yXG5cbmxldCBkdW1teV9tb2RlbCA9XG4gIHtcbiAgICByZW5kZXJpbmcgPSBEcmF3VGFidWxhciAoKTtcbiAgICBhY2N1cmFjeSA9IFNvbWUgUHVibGljX2RhdGEuTG93O1xuICAgIG9yaWdpbiA9IE5vbmU7XG4gICAgb3JpZ2luX2xhYmVsID0gTm9uZTtcbiAgfVxuXG5sZXQgbW9kZWwsIHNldF9tb2RlbCA9IEhvb2tlZC5TLmNyZWF0ZSB+ZGVidWc6XCJtb2RlbFwiIGR1bW15X21vZGVsXG5sZXQgbW9kZWxfc2lnbmFsID0gSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIG1vZGVsXG5sZXQgdG90YWxfaW5wdXRfaWQgPSBcInRvdGFsX2lucHV0XCJcbmxldCBmd2RfaW5wdXRfaWQgPSBcImZ3ZF9pbnB1dFwiXG5sZXQgYndkX2lucHV0X2lkID0gXCJid2RfaW5wdXRcIlxuXG5sZXQgaW5mbHVlbmNlX25vZGVfbGFiZWwgPSBmdW5jdGlvblxuICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPlxuICAgIGlmIHIuUHVibGljX2RhdGEucnVsZV9sYWJlbCA9IFwiXCIgdGhlblxuICAgICAgci5QdWJsaWNfZGF0YS5ydWxlX2FzdFxuICAgIGVsc2VcbiAgICAgIHIuUHVibGljX2RhdGEucnVsZV9sYWJlbFxuICB8IFB1YmxpY19kYXRhLlZhciByIC0+XG4gICAgaWYgci5QdWJsaWNfZGF0YS52YXJfbGFiZWwgPSBcIlwiIHRoZW5cbiAgICAgIHIuUHVibGljX2RhdGEudmFyX2FzdFxuICAgIGVsc2VcbiAgICAgIHIuUHVibGljX2RhdGEudmFyX2xhYmVsXG5cbmxldCB1cGRhdGVfbW9kZWxfZ3JhcGggZiA9XG4gIGxldCBtID0gSG9va2VkLlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2ggbS5yZW5kZXJpbmcgd2l0aFxuICB8IERyYXdUYWJ1bGFyIF8gLT4gKClcbiAgfCBEcmF3R3JhcGggZyAtPiBzZXRfbW9kZWwgeyBtIHdpdGggcmVuZGVyaW5nID0gRHJhd0dyYXBoIChmIGcpIH1cblxubGV0IHVwZGF0ZV9tb2RlbCBmID0gc2V0X21vZGVsIChmIChIb29rZWQuUy52YWx1ZSBtb2RlbCkpXG5sZXQgZGlzcGxheV9pZCA9IFwiaW5mbHVlbmNlX21hcF9kaXNwbGF5XCJcblxubGV0IGluZmx1ZW5jZW1hcCA9XG4gIEpzX2dyYXBobG9nZ2VyLmNyZWF0ZV9ncmFwaF9sb2dnZXIgZGlzcGxheV9pZCAoZnVuIHggLT5cbiAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyAoSnMudG9fc3RyaW5nIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEVkaXRvci5tb3ZlX2N1cnNvcl9ob29rX3NlbmRcbiAgICAgICAgICAgICAgKFB1YmxpY19kYXRhLnBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgbm9kZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcmlnaW4gPSBTb21lIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKSBpblxuICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPSBTb21lIChpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlKSBpblxuICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKVxuXG5sZXQgdG90YWxfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0b3RhbF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX3ZhbHVlIFwiMVwiO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDE7XG4gICAgICBdXG4gICAgKClcblxubGV0IGZ3ZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZ3ZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSAxO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBid2RfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBid2RfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgMTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgbmV4dF9ub2RlID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJOZXh0XCIgXVxuXG5sZXQgcHJldl9ub2RlID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJQcmV2aW91c1wiIF1cblxubGV0IHJlY2VudGVyID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJGaXJzdCBub2RlXCIgXVxuXG5sZXQgdHJhY2tfY3Vyc29yX3N3aXRjaCA9XG4gIGxldCB0cmFja19jdXJzb3Jfc3dpdGNoX2lkID0gXCJ0cmFja19jdXJzb3Jfc3dpdGNoX2lkXCIgaW5cbiAgSG9va2VkLlMucmVnaXN0ZXIgdHJhY2tfY3Vyc29yIChmdW4gdHJhY2tfZW5hYmxlZCAtPlxuICAgICAgbGV0IGFkZF9saXN0LCByZW1vdmVfbGlzdCA9XG4gICAgICAgIGlmIHRyYWNrX2VuYWJsZWQgdGhlblxuICAgICAgICAgIFsgXCJidG4tbGlnaHRcIjsgXCJhY3RpdmVcIiBdLCBbIFwiYnRuLWRlZmF1bHRcIiBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBbIFwiYnRuLWRlZmF1bHRcIiBdLCBbIFwiYnRuLWxpZ2h0XCI7IFwiYWN0aXZlXCIgXVxuICAgICAgaW5cbiAgICAgIFVpX2NvbW1vbi5zd2l0Y2hfY2xhc3MgdHJhY2tfY3Vyc29yX3N3aXRjaF9pZCBhZGRfbGlzdCByZW1vdmVfbGlzdCk7XG4gIGxldCBvbl9jbGljayBfID1cbiAgICBsZXQgKCkgPSB0cmFja19jdXJzb3Jfc2V0IChub3QgKEhvb2tlZC5TLnZhbHVlIHRyYWNrX2N1cnNvcikpIGluXG4gICAgaWYgSG9va2VkLlMudmFsdWUgdHJhY2tfY3Vyc29yIHRoZW5cbiAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT4geyBtIHdpdGggb3JpZ2luID0gTm9uZTsgb3JpZ2luX2xhYmVsID0gTm9uZSB9KTtcbiAgICB0cnVlXG4gIGluXG4gICgqIGh0bWwqKVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgdHJhY2tfY3Vyc29yX3N3aXRjaF9pZDtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBIdG1sLmFfb25jbGljayBvbl9jbGljaztcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiVHJhY2sgY3Vyc29yXCIgXVxuXG5sZXQgZXhwb3J0X2NvbmZpZyA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gXCJpbmZsdWVuY2UtZXhwb3J0XCI7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgICAgICAgIEx3dC5pZ25vcmVfcmVzdWx0XG4gICAgICAgICAgICAgICAgKCBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9leHBvcnRcIlxuICAgICAgICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeyBhY2N1cmFjeTsgXyB9ID0gSG9va2VkLlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeVxuICAgICAgICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBpbmZsdWVuY2VzX3N0cmluZyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgaW5mbHVlbmNlc19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpXG4gICAgICAgICAgICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCApKTtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgV2lkZ2V0X2V4cG9ydC5zaG93ID0gUmVhY3QuUy5jb25zdCB0cnVlO1xuICB9XG5cbmxldCByZW5kZXJpbmdfY2hvb3Nlcl9pZCA9IFwiaW5mbHVlbmNlLXJlbmRlcmluZ1wiXG5cbmxldCByZW5kZXJpbmdfY2hvb3NlciA9XG4gIGxldCB7IHJlbmRlcmluZzsgXyB9ID0gSG9va2VkLlMudmFsdWUgbW9kZWwgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIHJlbmRlcmluZ19jaG9vc2VyX2lkIF1cbiAgICBbXG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IGwpXG4gICAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgXCJ0YWJ1bGFyXCIgXSlcbiAgICAgICAgKEh0bWwudHh0IFwiVGFidWxhclwiKTtcbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gbClcbiAgICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSBcImdyYXBoXCIgXSlcbiAgICAgICAgKEh0bWwudHh0IFwiR3JhcGhcIik7XG4gICAgXVxuXG5sZXQgYWNjdXJhY3lfY2hvb3Nlcl9pZCA9IFwiaW5mbHVlbmNlLWFjY3VyYWN5XCJcblxubGV0IGFjY3VyYWN5X2Nob29zZXIgPVxuICBsZXQgeyBhY2N1cmFjeTsgXyB9ID0gSG9va2VkLlMudmFsdWUgbW9kZWwgaW5cbiAgbGV0IG9wdGlvbl9nZW4geCA9XG4gICAgSHRtbC5vcHRpb25cbiAgICAgIH5hOlxuICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgIGlmIGFjY3VyYWN5ID0gU29tZSB4IHRoZW5cbiAgICAgICAgICAgICBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSBdKVxuICAgICAgKEh0bWwudHh0IChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkpXG4gIGluXG4gIEh0bWwuc2VsZWN0XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCBhY2N1cmFjeV9jaG9vc2VyX2lkIF1cbiAgICAoTGlzdC5tYXAgb3B0aW9uX2dlbiBQdWJsaWNfZGF0YS5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVscylcblxubGV0IGlzX2NlbnRlciBvcmlnaW5fc2hvcnRfb3B0IG5vZGUgPVxuICBtYXRjaCBvcmlnaW5fc2hvcnRfb3B0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIG5vZGUgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSByIC0+IHIuUHVibGljX2RhdGEucnVsZV9pZCA9IDBcbiAgICB8IFB1YmxpY19kYXRhLlZhciBfIC0+IGZhbHNlKVxuICB8IFNvbWUgb3JpZ2luIC0+XG4gICAgKG1hdGNoIG9yaWdpbiwgbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIGlkLCBQdWJsaWNfZGF0YS5SdWxlIGEgLT4gYS5QdWJsaWNfZGF0YS5ydWxlX2lkID0gaWRcbiAgICB8IFB1YmxpY19kYXRhLlZhciBpZCwgUHVibGljX2RhdGEuVmFyIGEgLT4gYS5QdWJsaWNfZGF0YS52YXJfaWQgPSBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIF8sIFB1YmxpY19kYXRhLlJ1bGUgX1xuICAgIHwgUHVibGljX2RhdGEuUnVsZSBfLCBQdWJsaWNfZGF0YS5WYXIgXyAtPlxuICAgICAgZmFsc2UpXG5cbmxldCBqc29uX3RvX2dyYXBoIGxvZ2dlciAoXywgXywgXywgXywgb3JpZ2luLCBpbmZsdWVuY2VfbWFwKSA9XG4gIGxldCBvcmlnaW5fc2hvcnRfb3B0ID1cbiAgICBPcHRpb25fdXRpbC5tYXAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgb3JpZ2luXG4gIGluXG4gIGxldCAoKSA9IEdyYXBoX2xvZ2dlcnMucHJpbnRfZ3JhcGhfcHJlYW1ibGUgbG9nZ2VyIFwiXCIgaW5cbiAgbGV0IG5vZGVzID0gaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5ub2RlcyBpblxuICBsZXQgZGlyZWN0aXZlc19vZl9ub2RlIG5vZGUgPVxuICAgIGxldCBqc29uID0gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIG5vZGUgaW5cbiAgICBsZXQgbGFiZWwgPSBpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlIGluXG4gICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT5cbiAgICAgIGxldCBwb3MgPSByLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb24gaW5cbiAgICAgIGxldCBjb250ZXh0dWFsX2hlbHAgPSBMb2MudG9fc3RyaW5nIHBvcyBeIFwiIFwiIF4gci5QdWJsaWNfZGF0YS5ydWxlX2FzdCBpblxuICAgICAgbGV0IGZpbGxjb2xvciA9XG4gICAgICAgIGlmIGlzX2NlbnRlciBvcmlnaW5fc2hvcnRfb3B0IG5vZGUgdGhlblxuICAgICAgICAgICFDb25maWcuY2VudGVyX2NvbG9yXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAhQ29uZmlnLnJ1bGVfY29sb3JcbiAgICAgIGluXG4gICAgICBbXG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAhQ29uZmlnLnJ1bGVfc2hhcGU7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gWyBwb3MgXTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgY29udGV4dHVhbF9oZWxwO1xuICAgICAgXVxuICAgIHwgUHVibGljX2RhdGEuVmFyIHIgLT5cbiAgICAgIGxldCBwb3MgPSByLlB1YmxpY19kYXRhLnZhcl9wb3NpdGlvbiBpblxuICAgICAgbGV0IGNvbnRleHR1YWxfaGVscCA9IExvYy50b19zdHJpbmcgcG9zIF4gci5QdWJsaWNfZGF0YS52YXJfYXN0IGluXG4gICAgICBsZXQgZmlsbGNvbG9yID1cbiAgICAgICAgaWYgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSB0aGVuXG4gICAgICAgICAgIUNvbmZpZy5jZW50ZXJfY29sb3JcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFDb25maWcudmFyaWFibGVfY29sb3JcbiAgICAgIGluXG4gICAgICBbXG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAhQ29uZmlnLnZhcmlhYmxlX3NoYXBlO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIFsgcG9zIF07XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIGNvbnRleHR1YWxfaGVscDtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IG1heF9ydWxlX2lkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBiaWdnZXN0X2lkIG4gLT5cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgUHVibGljX2RhdGEuUnVsZSByIC0+IG1heCBiaWdnZXN0X2lkICgxICsgci5QdWJsaWNfZGF0YS5ydWxlX2lkKVxuICAgICAgICB8IFB1YmxpY19kYXRhLlZhciBfIC0+IGJpZ2dlc3RfaWQpXG4gICAgICAoLTEpIG5vZGVzXG4gIGluXG4gIGxldCBnZXRfaWRfb2Zfbm9kZV9pZCBub2RlX2lkID1cbiAgICBtYXRjaCBub2RlX2lkIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgaWQgLT4gaWRcbiAgICB8IFB1YmxpY19kYXRhLlZhciBpZCAtPiBpZCArIG1heF9ydWxlX2lkXG4gIGluXG4gIGxldCBnZXRfaWRfb2Zfbm9kZSBub2RlID1cbiAgICBnZXRfaWRfb2Zfbm9kZV9pZCAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgbm9kZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gbm9kZSAtPlxuICAgICAgICBsZXQgZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXNfb2Zfbm9kZSBub2RlIGluXG4gICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfbm9kZSBsb2dnZXIgfmRpcmVjdGl2ZXNcbiAgICAgICAgICAoc3RyaW5nX29mX2ludCAoZ2V0X2lkX29mX25vZGUgbm9kZSkpKVxuICAgICAgbm9kZXNcbiAgaW5cbiAgbGV0IHByaW50X21hcHMgPyhkaXJlY3RpdmVzID0gW10pIGxvZ2dlciBtYXAgPVxuICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuaXRlclxuICAgICAgKGZ1biBzb3VyY2UgbWFwIC0+XG4gICAgICAgIGxldCBzb3VyY2VfaWQgPSBzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZV9pZCBzb3VyY2UpIGluXG4gICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuaXRlclxuICAgICAgICAgIChmdW4gdGFyZ2V0IGxhYmVsX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCB0YXJnZXRfaWQgPSBzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZV9pZCB0YXJnZXQpIGluXG4gICAgICAgICAgICAoKmxldCBsYWJlbF9zdHJpbmcgPSBcInRvZG9cIlxuICAgICAgICAgICAgICBpbiopXG4gICAgICAgICAgICBsZXQgbGFiZWxfc3RyaW5nID0gUHVibGljX2RhdGEuc3RyaW5nX29mX2xhYmVsX2xpc3QgbGFiZWxfbGlzdCBpblxuICAgICAgICAgICAgbGV0IGRpcmVjdGl2ZXMgPVxuICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBsYWJlbF9zdHJpbmcgOjogZGlyZWN0aXZlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXMgc291cmNlX2lkIHRhcmdldF9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpKVxuICAgICAgICAgIG1hcClcbiAgICAgIG1hcFxuICBpblxuICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgW1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgIUNvbmZpZy53YWtlX3VwX2NvbG9yO1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkICFDb25maWcud2FrZV91cF9hcnJvdztcbiAgICBdXG4gIGluXG4gIGxldCAoKSA9IHByaW50X21hcHMgfmRpcmVjdGl2ZXMgbG9nZ2VyIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEucG9zaXRpdmUgaW5cbiAgbGV0IGRpcmVjdGl2ZXMgPVxuICAgIFtcbiAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yICFDb25maWcuaW5oaWJpdGlvbl9jb2xvcjtcbiAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCAhQ29uZmlnLmluaGliaXRpb25fYXJyb3c7XG4gICAgXVxuICBpblxuICBsZXQgKCkgPSBwcmludF9tYXBzIH5kaXJlY3RpdmVzIGxvZ2dlciBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5lZ2F0aXZlIGluXG4gIGxldCAoKSA9IEdyYXBoX2xvZ2dlcnMucHJpbnRfZ3JhcGhfZm9vdCBsb2dnZXIgaW5cbiAgKClcblxubGV0IHRhYmxlX29mX2luZmx1ZW5jZXNfanNvbiAoXywgXywgXywgXywgb3JpZ2luLCBpbmZsdWVuY2VfbWFwKSA9XG4gIGxldCBuYW1lciA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGUgLT5cbiAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5hZGRcbiAgICAgICAgICAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgZSlcbiAgICAgICAgICBlIGFjYylcbiAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZW1wdHkgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5ub2Rlc1xuICBpblxuICBsZXQgb3JpZ2luX2lkX29wdCA9XG4gICAgT3B0aW9uX3V0aWwubWFwIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG9yaWdpblxuICBpblxuICBtYXRjaCBvcmlnaW5faWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5X3NwaGVyZVxuICB8IFNvbWUgb3JpZ2luX2lkIC0+XG4gICAgbGV0IHBvc2l0aXZlX29uLCBwb3NpdGl2ZV9ieSA9XG4gICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGQgKGZ1biBkc3QgZGF0YSAoKG9uLCBieSkgYXMgYWNjKSAtPlxuICAgICAgICAgICAgICBpZiBzcmMgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBkc3QgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodiwgZGF0YSkgOjogb24sIGJ5XG4gICAgICAgICAgICAgICkgZWxzZSBpZiBkc3QgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBzcmMgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBvbiwgKHYsIGRhdGEpIDo6IGJ5XG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEucG9zaXRpdmUgKFtdLCBbXSlcbiAgICBpblxuICAgIGxldCBuZWdhdGl2ZV9vbiwgbmVnYXRpdmVfYnkgPVxuICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5mb2xkXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5mb2xkIChmdW4gZHN0IGRhdGEgKChvbiwgYnkpIGFzIGFjYykgLT5cbiAgICAgICAgICAgICAgaWYgc3JjID0gb3JpZ2luX2lkIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZmluZF9vcHRpb24gZHN0IG5hbWVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gKHYsIGRhdGEpIDo6IG9uLCBieVxuICAgICAgICAgICAgICApIGVsc2UgaWYgZHN0ID0gb3JpZ2luX2lkIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZmluZF9vcHRpb24gc3JjIG5hbWVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gb24sICh2LCBkYXRhKSA6OiBieVxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MpKVxuICAgICAgICBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5lZ2F0aXZlIChbXSwgW10pXG4gICAgaW5cbiAgICB7IHBvc2l0aXZlX29uOyBwb3NpdGl2ZV9ieTsgbmVnYXRpdmVfb247IG5lZ2F0aXZlX2J5IH1cblxubGV0IHBvcF9jZWxsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBIdG1sLnRkIFtdLCBbXVxuICB8ICgobm9kZSwgX21hcHBpbmdzKSwgcG9zaXRpdmUpIDo6IHQgLT5cbiAgICAoIEh0bWwudGRcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX29uY2xpY2sgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEVkaXRvci5tb3ZlX2N1cnNvcl9ob29rX3NlbmRcbiAgICAgICAgICAgICAgICAgICAgKFB1YmxpY19kYXRhLnBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgbm9kZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgU29tZSAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgbm9kZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPSBTb21lIChpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlKSBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+IHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB0cnVlKTtcbiAgICAgICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKGlmIHBvc2l0aXZlIHRoZW5cbiAgICAgICAgICAgICAgICAgICBcInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgXCJkYW5nZXJcIik7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXVxuICAgICAgICBbIEh0bWwuY2RhdGEgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIF0sXG4gICAgICB0IClcblxubGV0IHJlYyBmaWxsX3RhYmxlIGFjYyBieSBvbiA9XG4gIGlmIG9uID0gW10gJiYgYnkgPSBbXSB0aGVuXG4gICAgTGlzdC5yZXYgYWNjXG4gIGVsc2UgKFxuICAgIGxldCBiLCBieScgPSBwb3BfY2VsbCBieSBpblxuICAgIGxldCBvLCBvbicgPSBwb3BfY2VsbCBvbiBpblxuICAgIGxldCBsaW5lID0gSHRtbC50ciBbIGI7IG8gXSBpblxuICAgIGZpbGxfdGFibGUgKGxpbmUgOjogYWNjKSBieScgb24nXG4gIClcblxubGV0IGRyYXdfdGFibGUgb3JpZ2luX2xhYmVsX29wdFxuICAgIHsgcG9zaXRpdmVfb247IHBvc2l0aXZlX2J5OyBuZWdhdGl2ZV9vbjsgbmVnYXRpdmVfYnkgfSA9XG4gIGxldCBvcmlnaW5fbGFiZWwsIG91dHMgPVxuICAgIG1hdGNoIG9yaWdpbl9sYWJlbF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgbm90ICh0cmFja19jdXJzb3IgfD4gSG9va2VkLlMudmFsdWUpIHRoZW5cbiAgICAgICAgXCJOYXZpZ2F0ZSB0aHJvdWdoIHRoZSBub2RlcyB1c2luZyB0aGUgY29udHJvbHMgYWJvdmUuXCIsIFtdXG4gICAgICBlbHNlXG4gICAgICAgIFwiQ2xpY2sgb24gYSBydWxlIG9yIHZhcmlhYmxlIGluIHRoZSBlZGl0b3IuXCIsIFtdXG4gICAgfCBTb21lIGxhYmVsIC0+XG4gICAgICBsZXQgYnkgPVxuICAgICAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgICAoZnVuIHggLT4geCwgZmFsc2UpXG4gICAgICAgICAgbmVnYXRpdmVfYnlcbiAgICAgICAgICAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCB0cnVlKSBwb3NpdGl2ZV9ieSlcbiAgICAgIGluXG4gICAgICBsZXQgb24gPVxuICAgICAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgICAoZnVuIHggLT4geCwgZmFsc2UpXG4gICAgICAgICAgbmVnYXRpdmVfb25cbiAgICAgICAgICAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCB0cnVlKSBwb3NpdGl2ZV9vbilcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cyA9IGZpbGxfdGFibGUgW10gYnkgb24gaW5cbiAgICAgIGxhYmVsLCBvdXRzXG4gIGluXG4gIEh0bWwudGFibGV4XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInRhYmxlXCIgXSBdXG4gICAgfnRoZWFkOlxuICAgICAgKEh0bWwudGhlYWRcbiAgICAgICAgIFtcbiAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgIFsgSHRtbC50aCB+YTpbIEh0bWwuYV9jb2xzcGFuIDIgXSBbIEh0bWwuY2RhdGEgb3JpZ2luX2xhYmVsIF0gXTtcbiAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEh0bWwudGggWyBIdG1sLmNkYXRhIFwiaXMgaW5mbHVlbmNlZCBieVwiIF07XG4gICAgICAgICAgICAgICBIdG1sLnRoIFsgSHRtbC5jZGF0YSBcImluZmx1ZW5jZXNcIiBdO1xuICAgICAgICAgICAgIF07XG4gICAgICAgICBdKVxuICAgIFsgSHRtbC50Ym9keSBvdXRzIF1cblxubGV0IGluZmx1ZW5jZV9zcGhlcmUgOlxuICAgIChpbmZsdWVuY2Vfc3BoZXJlLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgUmVhY3Quc2lnbmFsID1cbiAgU3RhdGVfcHJvamVjdC5vbl9wcm9qZWN0X2NoYW5nZV9hc3luYyB+b246dGFiX2lzX2FjdGl2ZV9zaWduYWwgZHVtbXlfbW9kZWxcbiAgICBtb2RlbF9zaWduYWwgKFJlc3VsdF91dGlsLm9rIGVtcHR5X3NwaGVyZSlcbiAgICAoZnVuIG1hbmFnZXIgeyByZW5kZXJpbmc7IGFjY3VyYWN5OyBvcmlnaW47IG9yaWdpbl9sYWJlbCA9IF8gfSAtPlxuICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2Q6Tm9uZSA/YndkOk5vbmUgP29yaWdpbiB+dG90YWw6MVxuICAgICAgICAgIGFjY3VyYWN5XG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgdGFibGVfb2ZfaW5mbHVlbmNlc19qc29uXG4gICAgICB8IERyYXdHcmFwaCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGVtcHR5X3NwaGVyZSkpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IGFjY3VyYWN5X2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgcmVuZGVyaW5nX2Nob29zZXJfaWQ7XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiUmVuZGVyaW5nXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTRcIiBdIF0gWyByZW5kZXJpbmdfY2hvb3NlciBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgYWNjdXJhY3lfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJBY2N1cmFjeVwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgYWNjdXJhY3lfY2hvb3NlciBdO1xuICAgICAgICAgIF07XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtM1wiIF07IEh0bWwuYV9sYWJlbF9mb3IgdG90YWxfaW5wdXRfaWQgXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmF2aWdhdGVcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIHByZXZfbm9kZSBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIG5leHRfbm9kZSBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIHJlY2VudGVyIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgdHJhY2tfY3Vyc29yX3N3aXRjaCBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG4gIGluXG4gIGxldCBncmFwaF9mb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWhvcml6b250YWxcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0zXCIgXSBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJTaXplIFJhZGl1c1wiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgdG90YWxfaW5wdXQgXTtcbiAgICAgICAgICAgIEh0bWwubGFiZWwgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0xXCIgXSBdIFsgSHRtbC50eHQgXCJmd2RcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIGZ3ZF9pbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBIdG1sLnR4dCBcImJ3ZFwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgYndkX2lucHV0IF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGluZmx1ZW5jZV9zdHlsZV9pZCA9IFwiaW5mbHVlbmNlX3N0eWxlX2lkXCIgaW5cbiAgW1xuICAgIGFjY3VyYWN5X2Zvcm07XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGluZmx1ZW5jZV9zdHlsZV9pZDtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gWyBcImZsZXgtY29udGVudFwiIF1cbiAgICAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IFtdKVxuICAgICAgICAgICAgICAgbW9kZWxfc2lnbmFsKTtcbiAgICAgICAgICAoKiBIaWRkZW4gaWYgdGFidWxhciAqKVxuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2hpZGRlbiAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICBtb2RlbF9zaWduYWwpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIGdyYXBoX2Zvcm07XG4gICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2lkIGRpc3BsYXlfaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZmxleC1jb250ZW50XCIgXSBdIFtdO1xuICAgICAgXTtcbiAgICBUeXhtbF9qcy5SLkh0bWw1LmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgXCJUT0RPVE9ET1RPRE9UT0RPVE9ET1RPRE9UT0RPVE9ET1RPRE9UT0RPVE9ET1RPRE9UT0RPXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1zY3JvbGxcIiBdO1xuICAgICAgICBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAoUmVhY3QuUy5sM1xuICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgb3JpZ2luX2xhYmVsOyBfIH0gc3BoZXJlIF8gLT5cbiAgICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBbXVxuICAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyICgpIC0+XG4gICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuZm9sZCBzcGhlcmVcbiAgICAgICAgICAgICAgICAgIH5vazooZnVuIHNwaGVyZSAtPiBbIGRyYXdfdGFibGUgb3JpZ2luX2xhYmVsIHNwaGVyZSBdKVxuICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSBtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcikpXG4gICAgICAgICAgICBtb2RlbF9zaWduYWwgaW5mbHVlbmNlX3NwaGVyZSB0cmFja19jdXJzb3Jfc2lnbmFsKSk7XG4gICAgV2lkZ2V0X2V4cG9ydC5jb250ZW50IGV4cG9ydF9jb25maWc7XG4gIF1cblxuKCogVE9ETzogZ3JhcGggc3R1ZmYgdGhhdCBtaWdodCBiZSBCUk9LRU4gKilcbmxldCBuZWl0aGVyX2djX21lID1cbiAgSG9va2VkLlMubDJcbiAgICAoZnVuIF8geyByZW5kZXJpbmc7IGFjY3VyYWN5OyBvcmlnaW47IG9yaWdpbl9sYWJlbCA9IF8gfSAtPlxuICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIHwgRHJhd0dyYXBoIHsgZndkOyBid2Q7IHRvdGFsIH0gLT5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5XG4gICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mbHVlbmNlcyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMDAwIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlciA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciB+bW9kZTpMb2dnZXJzLkpzX0dyYXBoXG4gICAgICAgICAgICAgICAgICAgICAgICBmbXRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlcl9ncmFwaCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmV4dGVuZF9sb2dnZXIgbG9nZ2VyIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGpzb25fdG9fZ3JhcGggbG9nZ2VyX2dyYXBoIGluZmx1ZW5jZXMgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGdyYXBoID1cbiAgICAgICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaF9vZl9sb2dnZXIgbG9nZ2VyX2dyYXBoXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBncmFwaF9qc29uID0gR3JhcGhfanNvbi50b19qc29uIGdyYXBoIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZmx1c2hfbG9nZ2VyIGxvZ2dlciBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX2xvZ2dlciBsb2dnZXIgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBpbmZsdWVuY2VtYXAjI3NldERhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgZ3JhcGhfanNvbikpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBpbmZsdWVuY2VtYXAjI2NsZWFyRGF0YSBpblxuICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5lcnJvciBlKSlcbiAgICAgICAgfD4gU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJpbmZsdWVuY2VfbWFwXCIpXG4gICAgKEhvb2tlZC5TLm9uIH5lcTpTdGF0ZV9wcm9qZWN0Lm1vZGVsX2VxdWFsIHRhYl9pc19hY3RpdmVcbiAgICAgICBTdGF0ZV9wcm9qZWN0LmR1bW15X21vZGVsXG4gICAgICAgKEhvb2tlZC5TLm9mX3JlYWN0X3NpZ25hbCB+ZXE6U3RhdGVfcHJvamVjdC5tb2RlbF9lcXVhbFxuICAgICAgICAgIH5kZWJ1ZzpcIlN0YXRlX3Byb2plY3QubW9kZWwgaW4gc3RhdGVfcHJvamVjdFwiIFN0YXRlX3Byb2plY3QubW9kZWwpKVxuICAgIG1vZGVsXG5cbmxldCB1cGRhdGVfbW9kZWxfd2l0aF9vcmlnaW5fcmVmaW5lZCBvcmlnaW5fcmVmaW5lZCA9XG4gIGxldCBvcmlnaW4gPVxuICAgIE9wdGlvbl91dGlsLm1hcCBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBvcmlnaW5fcmVmaW5lZFxuICBpblxuICBsZXQgb3JpZ2luX2xhYmVsID0gT3B0aW9uX3V0aWwubWFwIGluZmx1ZW5jZV9ub2RlX2xhYmVsIG9yaWdpbl9yZWZpbmVkIGluXG4gIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT4geyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSlcblxuKCogVXBkYXRlIGluZmx1ZW5jZSBtYXAgbm9kZSBhY2NvcmRpbmcgdG8gY3Vyc29yX3BvcyAqKVxubGV0IF8gPVxuICBTdGF0ZV9maWxlLndpdGhfY3VycmVudF9wb3NcbiAgICB+b246KEhvb2tlZC5TLmwyICggJiYgKSB0YWJfaXNfYWN0aXZlIHRyYWNrX2N1cnNvcilcbiAgICAoZnVuIGZpbGVuYW1lIGN1cnNvcl9wb3MgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX25vZGVfYXRcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgbWFuYWdlciNnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBjdXJzb3JfcG9zXG4gICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCB1cGRhdGVfbW9kZWxfd2l0aF9vcmlnaW5fcmVmaW5lZCkpKVxuICAgIChMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gIHw+IEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbFxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxubGV0IGRvbnRfZ2NfbWUgPSByZWYgW11cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IGRvbnRfZ2NfbWUgOj0gWyBuZWl0aGVyX2djX21lIF0gaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgZXhwb3J0X2NvbmZpZyBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IHJlbmRlcmluZ19jaG9vc2VyKSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG0gd2l0aFxuICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZyA9XG4gICAgICAgICAgICAgICAgICAgICAoaWYgSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgPSBcImdyYXBoXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0dyYXBoIHsgZndkID0gTm9uZTsgYndkID0gTm9uZTsgdG90YWwgPSAxIH1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBEcmF3VGFidWxhciAoKSk7XG4gICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGFjY3VyYWN5X2Nob29zZXIpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCBhY2N1cmFjeSA9XG4gICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfb2Zfc3RyaW5nIChKcy50b19zdHJpbmcgdmEjIy52YWx1ZSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsIChmdW4gbSAtPiB7IG0gd2l0aCBhY2N1cmFjeSB9KSBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHRvdGFsX2lucHV0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCB0b3RhbCA9IGludF9vZl9zdHJpbmcgdmEgfSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEpzLl90cnVlXG4gICAgICAgICAgIHdpdGggXyAtPiBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBmd2RfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCBmd2QgPVxuICAgICAgICAgICAgICAgaWYgdmEgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBTb21lIChpbnRfb2Zfc3RyaW5nIHZhKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCBmd2QgfSkgaW5cbiAgICAgICAgICAgICBKcy5fdHJ1ZVxuICAgICAgICAgICB3aXRoIF8gLT4gSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgYndkX2lucHV0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgYndkID1cbiAgICAgICAgICAgICAgIGlmIHZhID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgU29tZSAoaW50X29mX3N0cmluZyB2YSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9tb2RlbF9ncmFwaCAoZnVuIG0gLT4geyBtIHdpdGggYndkIH0pIGluXG4gICAgICAgICAgICAgSnMuX3RydWVcbiAgICAgICAgICAgd2l0aCBfIC0+IEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiByZWNlbnRlcikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9yZWNlbnRlclwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbml0aWFsX25vZGVcbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCB1cGRhdGVfbW9kZWxfd2l0aF9vcmlnaW5fcmVmaW5lZCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIG5leHRfbm9kZSkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCB7IG9yaWdpbjsgXyB9ID0gSG9va2VkLlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX25leHRfbm9kZVwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9uZXh0X25vZGUgb3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgdXBkYXRlX21vZGVsX3dpdGhfb3JpZ2luX3JlZmluZWQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBwcmV2X25vZGUpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIF8gXyAtPlxuICAgICAgICAgICBsZXQgeyBvcmlnaW47IF8gfSA9IEhvb2tlZC5TLnZhbHVlIG1vZGVsIGluXG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9wcmV2X25vZGVcIlxuICAgICAgICAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfcHJldmlvdXNfbm9kZSBvcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCB1cGRhdGVfbW9kZWxfd2l0aF9vcmlnaW5fcmVmaW5lZCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2aW5mbHVlbmNlc1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZpbmZsdWVuY2VzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IHNpdGUgYSA9IFsgYSwgTm9uZSwgU29tZSAoUHVibGljX2RhdGEuQm91bmRfdG8gMSksIE5vbmUgXVxuXG5sZXQgcHJpbnRfZWRnZSAoKGEsIGIpLCAoYywgZCkpIGxpc3QgPVxuICBIdG1sX3V0aWxpdHkucHJpbnRfbmV3bGluZVxuICAgIChIdG1sX3V0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBbIGEsIHNpdGUgYjsgYywgc2l0ZSBkIF0gbGlzdClcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgc2NjID1cbiAgICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlICgpXG4gICAgICAoUmVhY3QuUy5jb25zdCAoKSkgW10gKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAoKSAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9wb3RlbnRpYWxfcG9seW1lcnMgKFNvbWUgUHVibGljX2RhdGEuSGlnaClcbiAgICAgICAgICAoU29tZSBQdWJsaWNfZGF0YS5IaWdoKVxuICAgICAgICAoKlRPRE86IG1ha2UgdGhlc2Ugb3B0aW9ucyB0dW5hYmxlICopXG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIChfLCBfLCBzY2MpIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNjYyA9IExpc3QucmV2X21hcCBMaXN0LnJldiBzY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgIGlmIHNjYyA9IFtdIHx8IHNjYyA9IFsgW10gXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfdXRpbGl0eS5wcmludF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSBzaXplIG9mIGJpb21vbGVjdWxhciBjb21wb3VuZHMgaXMgdW5pZm9ybWx5IGJvdW5kZWQuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGxpc3RfZWRnZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBIdG1sX3V0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0ICgoYSwgYiksIChjLCBkKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2VkZ2UgKChhLCBiKSwgKGMsIGQpKSBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgbGlzdF9lZGdlcylcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdIHNjY1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IEh0bWxfdXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIEh0bWxfdXRpbGl0eS5wcmludF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIGZvbGxvd2luZyBib25kcyBtYXkgZm9ybSBhcmJpdHJhcnkgbG9uZyBjaGFpbnMgb2YgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHM6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgWyBIdG1sLnAgb3V0cHV0IF0pXG4gICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSBtKTtcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgbWgpKVxuICBpblxuICBbXG4gICAgVHl4bWxfanMuUi5IdG1sNS5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIjsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc2NjKTtcbiAgXVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBvbHltZXJzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBvbHltZXJzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHJpZ2h0c3VicGFuZWxfaWQgOiBzdHJpbmcgPSBcInJpZ2h0c3VicGFuZWxcIlxuXG5sZXQgcmlnaHRzdWJwYW5lbCAoKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBFZGl0b3IuZWRpdG9yX2Z1bGwgKGZ1biBlZGl0b3JfZnVsbCAtPlxuICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAoaWYgZWRpdG9yX2Z1bGwgdGhlblxuICAgICAgICAgICAgICAgICAgICBbIFwiaGlkZGVuXCIgXVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTZcIjsgXCJoaWRkZW4teHNcIjsgXCJoaWRkZW4tc21cIjsgXCJmbGV4LWNvbnRlbnRcIiBdKSkpO1xuICAgICAgXVxuICAgIFtcbiAgICAgIFVpX2NvbW1vbi5uYXZ0YWJzIFwic3VibmF2dGFiXCJcbiAgICAgICAgW1xuICAgICAgICAgIFwiY29udGFjdF9tYXBcIiwgTm9uZSwgU3VidGFiX2NvbnRhY3RfbWFwLm5hdmxpICgpO1xuICAgICAgICAgIFwiaW5mbHVlbmNlc1wiLCBOb25lLCBTdWJ0YWJfaW5mbHVlbmNlcy5uYXZsaSAoKTtcbiAgICAgICAgICBcImNvbnN0cmFpbnRzXCIsIE5vbmUsIFN1YnRhYl9jb25zdHJhaW50cy5uYXZsaSAoKTtcbiAgICAgICAgICBcInBvbHltZXJzXCIsIE5vbmUsIFN1YnRhYl9wb2x5bWVycy5uYXZsaSAoKTtcbiAgICAgICAgXTtcbiAgICAgIFVpX2NvbW1vbi5uYXZjb250ZW50IH5pZDpyaWdodHN1YnBhbmVsX2lkIFtdXG4gICAgICAgIFtcbiAgICAgICAgICBcImNvbnRhY3RfbWFwXCIsIFtdLCBTdWJ0YWJfY29udGFjdF9tYXAuY29udGVudCAoKTtcbiAgICAgICAgICBcImluZmx1ZW5jZXNcIiwgW10sIFN1YnRhYl9pbmZsdWVuY2VzLmNvbnRlbnQgKCk7XG4gICAgICAgICAgXCJjb25zdHJhaW50c1wiLCBbXSwgU3VidGFiX2NvbnN0cmFpbnRzLmNvbnRlbnQgKCk7XG4gICAgICAgICAgXCJwb2x5bWVyc1wiLCBbXSwgU3VidGFiX3BvbHltZXJzLmNvbnRlbnQgKCk7XG4gICAgICAgIF07XG4gICAgXVxuXG4oKiogW2NoaWxkc19oaWRlIGJdIHRyaWdnZXJzIGNoYW5nZSB0aGUgc3RhdGUgb2YgY2hpbGQgdGFicyB0byBoaWRlIGlmIGIgaXMgVHJ1ZSwgb3IgZWxzZSB0byBzaG93ICopXG5sZXQgY2hpbGRzX2hpZGUgKGIgOiBib29sKSA6IHVuaXQgPVxuICBpZiBiIHRoZW4gKFxuICAgIGxldCAoKSA9IFN1YnRhYl9jb250YWN0X21hcC5wYXJlbnRfaGlkZSAoKSBpblxuICAgIGxldCAoKSA9IFN1YnRhYl9pbmZsdWVuY2VzLnBhcmVudF9oaWRlICgpIGluXG4gICAgbGV0ICgpID0gU3VidGFiX2NvbnN0cmFpbnRzLnBhcmVudF9oaWRlICgpIGluXG4gICAgU3VidGFiX3BvbHltZXJzLnBhcmVudF9oaWRlICgpXG4gICkgZWxzZSAoXG4gICAgbGV0ICgpID0gU3VidGFiX2NvbnRhY3RfbWFwLnBhcmVudF9zaG93biAoKSBpblxuICAgIGxldCAoKSA9IFN1YnRhYl9pbmZsdWVuY2VzLnBhcmVudF9zaG93biAoKSBpblxuICAgIGxldCAoKSA9IFN1YnRhYl9jb25zdHJhaW50cy5wYXJlbnRfc2hvd24gKCkgaW5cbiAgICBTdWJ0YWJfcG9seW1lcnMucGFyZW50X3Nob3duICgpXG4gIClcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgRWRpdG9yLmVkaXRvcl9mdWxsIChmdW4gZWRpdG9yX2Z1bGwgLT5cbiAgICAgICAgICAgICAgICAgKCogY2hpbGQgaGlkaW5nIHNldCBoZXJlIHRvIGF2b2lkIFwiZ2NcIiAqKVxuICAgICAgICAgICAgICAgICBsZXQgKCkgPSBjaGlsZHNfaGlkZSBlZGl0b3JfZnVsbCBpblxuICAgICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgICAgKGlmIGVkaXRvcl9mdWxsIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTEyXCI7IFwiZmxleC1jb250ZW50XCIgXVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImNvbC1tZC02XCI7IFwiZmxleC1jb250ZW50XCIgXSkpKTtcbiAgICAgICAgXVxuICAgICAgWyBFZGl0b3IuY29udGVudCAoKSBdO1xuICAgIHJpZ2h0c3VicGFuZWwgKCk7XG4gIF1cblxubGV0IGluaXRfZGVhZF9ydWxlcyAoKSA9XG4gIFJlYWN0LlMubDFcbiAgICAoZnVuIG1vZGVsIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcInRhYl9lZGl0b3JfZGVhZF9ydWxlXCJcbiAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX3J1bGVzXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfZGVhZF9ydWxlc1xuICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgcnVsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaGlkZGVuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZWFkIHJ1bGUgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgJ1wiIF4gcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIF4gXCInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50IHJ1bGUuUHVibGljX2RhdGEucnVsZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLldhcm5pbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX3Bvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHdhcm5pbmdzKVxuICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT4gbWgpXG4gICAgICAgICAgICAgICA+fD0gQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX21zZ3MgP3Jlc3VsdF9jb2RlOk5vbmVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKSlcbiAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsXG5cbmxldCBpbml0X2RlYWRfYWdlbnRzICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX2FnZW50XCJcbiAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50c1xuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2RlYWRfYWdlbnRzXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBhZ2VudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZWFkIGFnZW50IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyByYW5nZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBTb21lIHJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9wb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGluaXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX3J1bGVcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgKHJ1bGUsIGNvbnRleHRfbGlzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2hpZGRlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGhpbnQ6IHJldmVyc2libGUgcnVsZSBhcmUgYWx3YXlzIHdlYWtseSByZXZlcnNpYmxlICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwbHVyYWwsIHNraXAsIHRhYiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb250ZXh0X2xpc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IFwiXCIsIFwiXCIsIFwiIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPiBcInNcIiwgXCJcXG5cIiwgXCJcXHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUnVsZSAlcyBtYXkgaW5kdWNlIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dCVzOiVzJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAnXCIgXiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgXiBcIidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWwgc2tpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGZtdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiIHNraXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZm10IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzJXMgLT4gJXMgXCIgdGFiIGEgYikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogdG8gZG8sIGFkZCB0aGUgcG90ZW50aWFsIGNvbnRleHRzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLldhcm5pbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX3Bvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHdhcm5pbmdzKVxuICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT4gbWgpXG4gICAgICAgICAgICAgICA+fD0gQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX21zZ3MgP3Jlc3VsdF9jb2RlOk5vbmVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKSlcbiAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsXG5cbmxldCBkb250X2djX21lID0gcmVmIFtdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBFZGl0b3Iub25sb2FkICgpIGluXG4gIGRvbnRfZ2NfbWUgOj0gaW5pdF9kZWFkX3J1bGVzICgpIDo6ICFkb250X2djX21lO1xuICBkb250X2djX21lIDo9IGluaXRfZGVhZF9hZ2VudHMgKCkgOjogIWRvbnRfZ2NfbWU7XG4gIGRvbnRfZ2NfbWUgOj0gaW5pdF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKCkgOjogIWRvbnRfZ2NfbWU7XG4gIGxldCAoKSA9IFN1YnRhYl9jb250YWN0X21hcC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gU3VidGFiX2luZmx1ZW5jZXMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFN1YnRhYl9jb25zdHJhaW50cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gU3VidGFiX3BvbHltZXJzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2ZWRpdG9yXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBjaGlsZHNfaGlkZSB0cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2ZWRpdG9yXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT4gY2hpbGRzX2hpZGUgZmFsc2UpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBFZGl0b3Iub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gU3VidGFiX2NvbnRhY3RfbWFwLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFN1YnRhYl9pbmZsdWVuY2VzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFN1YnRhYl9jb25zdHJhaW50cy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBTdWJ0YWJfcG9seW1lcnMub25yZXNpemUgKCkgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgZGluX2lkLCBzZXRfZGluX2lkID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuXG5sZXQgZGluX2xpc3QgOlxuICAgIFs8IEh0bWxfdHlwZXMuc2VsZWN0X2NvbnRlbnRfZnVuID4gYE9wdGlvbiBdIEh0bWwuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50ID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fZXZlbnQgW11cbiAgICAoTHd0X3JlYWN0LkUubWFwX3NcbiAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgKFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgfm9rOihmdW4gZGluX2lkcyAtPlxuICAgICAgICAgICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gaWQgLT4gSHRtbC5vcHRpb24gfmE6WyBIdG1sLmFfdmFsdWUgaWQgXSAoSHRtbC50eHQgaWQpKVxuICAgICAgICAgICAgICAgICAgICBkaW5faWRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IG91dClcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IFtdKSlcbiAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+IG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2RpbilcbiAgICAgICAgICAgICAgKCkpKVxuICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpXG5cbmxldCBkaW5fc2VsZWN0IDogWz4gSHRtbF90eXBlcy5zZWxlY3QgXSBIdG1sLmVsdCA9XG4gIFR5eG1sX2pzLlIuSHRtbDUuc2VsZWN0IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdIF0gZGluX2xpc3RcblxubGV0IGRpbl9kYXRhIDogRGF0YS5kaW4gb3B0aW9uIFJlYWN0LnNpZ25hbCA9XG4gIFJlYWN0LlMuYmluZCAoUmVhY3RpdmVEYXRhLlJMaXN0LnNpZ25hbCBkaW5fbGlzdCkgKGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBSZWFjdC5TLmNvbnN0IE5vbmVcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2V0X2Rpbl9pZCAoSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUpXG4gICAgICBpblxuICAgICAgUmVhY3QuUy5iaW5kIGRpbl9pZCAoZnVuIGRpbl9pZCAtPlxuICAgICAgICAgIFJlYWN0LlMuaG9sZCBOb25lXG4gICAgICAgICAgICAoTHd0X3JlYWN0LkUuZnJvbSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwuZm9sZCB+b2s6KGZ1biB4IC0+IHgpIH5lcnJvcjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBMd3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgT3B0aW9uLnNvbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2RpbiBkaW5faWQpKVxuICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSlcblxubGV0IGRpbl9oZWFkZXIgOiBIdG1sX3R5cGVzLnRyIEh0bWwuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50ID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgIHwgU29tZSBkaW4gLT5cbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIEh0bWwudHJcbiAgICAgICAgICAgICAgIChIdG1sLnRoIFsgSHRtbC50eHQgXCJhZmZlY3RzXCIgXVxuICAgICAgICAgICAgICAgOjogQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAoZnVuIHIgYWNjIC0+IEh0bWwudGggWyBIdG1sLnR4dCByIF0gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICBkaW4uRGF0YS5kaW5fcnVsZXMgW10pO1xuICAgICAgICAgICBdKVxuICAgICAgIGRpbl9kYXRhKVxuXG5sZXQgZGluX3RhYmxlIDogSHRtbF90eXBlcy50Ym9keSBIdG1sLmVsdCBSZWFjdGl2ZURhdGEuUkxpc3QudCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICB8IFNvbWUgZGluIC0+XG4gICAgICAgICAgIGxldCBvcGVuIERhdGEgaW5cbiAgICAgICAgICAgbGV0IGFsbCA9IGRpbi5kaW5fZGF0YS5kaW5fa2luZCA9IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgaW5cbiAgICAgICAgICAgbGV0IGJvZHkgPVxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfcmlnaHRpXG4gICAgICAgICAgICAgICAoZnVuIGkgZGF0YSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgaWYgYWxsIHx8IGRpbi5kaW5fZGF0YS5kaW5faGl0cy4oaSkgPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgICAgICAgICAoSHRtbC50aFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaW4uZGluX3J1bGVzLihpKSBeIFwiIChcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBkaW4uZGluX2RhdGEuZGluX2hpdHMuKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBcIiBoaXRzKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgIDo6IEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biB2IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdiA+IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJzdWNjZXNzXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgdiA8IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJpbmZvXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoc3RyaW5nX29mX2Zsb2F0IHYpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgW10pXG4gICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICBkaW4uZGluX2RhdGEuZGluX2ZsdXhzIFtdXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIFsgSHRtbC50Ym9keSBib2R5IF0pXG4gICAgICAgZGluX2RhdGEpXG5cbmxldCBkaW4gOiBbPiBIdG1sX3R5cGVzLnRhYmxleCBdIEh0bWwuZWx0ID1cbiAgbGV0IHRoZWFkID0gUmVhY3QuUy5jb25zdCAoVHl4bWxfanMuUi5IdG1sNS50aGVhZCBkaW5faGVhZGVyKSBpblxuICBUeXhtbF9qcy5SLkh0bWw1LnRhYmxleFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ0YWJsZVwiOyBcInRhYmxlLWNvbmRlbnNlZFwiOyBcInRhYmxlLWJvcmRlcmVkXCIgXSBdXG4gICAgfnRoZWFkIGRpbl90YWJsZVxuXG5sZXQgZXhwb3J0X2N1cnJlbnRfZGluICh0b19zdHJpbmcgOiBEYXRhLmRpbiAtPiBzdHJpbmcpIChtaW1lIDogc3RyaW5nKVxuICAgIChmaWxlbmFtZSA6IHN0cmluZykgOiB1bml0ID1cbiAgbGV0IGRpbl9pZCA9IEpzLnRvX3N0cmluZyAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLnZhbHVlIGluXG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9kaW4gZGluX2lkXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBkaW4gLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKHRvX3N0cmluZyBkaW4pIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZSB+ZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGV4cG9ydF9jb25maWd1cmF0aW9uIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBcImRpbi1leHBvcnRcIjtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICBleHBvcnRfY3VycmVudF9kaW4gKERhdGEuc3RyaW5nX29mX2RpbiA/bGVuOk5vbmUpIFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImRvdFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImRvdFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIGV4cG9ydF9jdXJyZW50X2RpblxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgKERhdGEucHJpbnRfZG90X2RpbiA/dXVpZDpOb25lKSlcbiAgICAgICAgICAgICAgXCJ0ZXh0L3ZuZC5ncmFwaHZpelwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImh0bWxcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJodG1sXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgZXhwb3J0X2N1cnJlbnRfZGluXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiBEYXRhLnByaW50X2h0bWxfZGluKVxuICAgICAgICAgICAgICBcInRleHQvaHRtbFwiO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgfVxuXG5sZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgbGlzdCA9XG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXhfY29udGVudFwiOyBcInRhYmxlLXJlc3BvbnNpdmVcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5mb3JtIFsgZGluX3NlbGVjdCBdO1xuICAgICAgICBkaW47XG4gICAgICAgIFdpZGdldF9leHBvcnQuY29udGVudCBleHBvcnRfY29uZmlndXJhdGlvbjtcbiAgICAgIF07XG4gIF1cblxubGV0IG5hdmxpICgpIDogWz4gYFBDREFUQSB8IGBTcGFuIF0gSHRtbC5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnQgPVxuICBVaV90cmFja19zaW1fc3RhdHVzLmJhZGdlIChmdW4gc3RhdGUgLT5cbiAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgc3RhdGUgLT5cbiAgICAgICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9kaW5zKVxuXG5sZXQgb25sb2FkICgpIDogJ2EgPVxuICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLm9uY2hhbmdlXG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgc2V0X2Rpbl9pZFxuICAgICAgICAgICAoKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy52YWx1ZSB8PiBKcy50b19zdHJpbmcpO1xuICAgICAgICAgSnMuX2ZhbHNlKTtcbiAgV2lkZ2V0X2V4cG9ydC5vbmxvYWQgZXhwb3J0X2NvbmZpZ3VyYXRpb247XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZESU5cIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICBDb21tb24uanF1ZXJ5X29uIFwiI25hdkRJTlwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDI0IENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbJWh0bWxcbiAgICB7fFxuPGgyPlRoZSBLYXBwYSBMYW5ndWFnZTwvaDI+XG48cD5Db3B5cmlnaHQgMjAxMC0yMDI0IENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGPHA+XG48cD5LYXBwYSBMYW5ndWFnZSBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWxcIj5HTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzPC9hPi5cbiBTb3VyY2UgY29kZSBpcyBwdWJsaXNoZWQgb24gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9LYXBwYS1EZXYvS2FTaW1cIj5odHRwczovL2dpdGh1Yi5jb20vS2FwcGEtRGV2L0thU2ltPC9hPi48L3A+XG5cbjxwPlRoaXMgdXNlciBpbnRlcmZhY2Ugd2FzIGRldmVsb3BlZCBpbiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZm9udGFuYS5obXMuaGFydmFyZC5lZHVcIj5Gb250YW5hIExhYjwvYT4gdW5kZXIgREFSUEEgZ3JhbnQgVzkxMU5GLTE0LTEtMDM2Ny4gVmlzdWFsaXphdGlvbnMgd2VyZSBkZXZlbG9wZWQgaW4gdGhlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2NyZWF0aXZlY29kaW5nLnNvZS51Y3NjLmVkdS9uZXdzLnBocFwiPkNyZWF0aXZlIENvZGluZyBMYWI8L2E+IG9mIEFuZ3VzIEZvcmJlczwvcD5cblxuPHA+UmVmZXJlbmNlIG1hbnVhbCBpcyBvbmxpbmUgYXQgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3LmthcHBhbGFuZ3VhZ2Uub3JnXCI+aHR0cHM6Ly93d3cua2FwcGFsYW5ndWFnZS5vcmc8L2E+LjwvcD5cblxuPHVsPlxuPGxpPldyaXR0ZW4gaW4gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9vY2FtbC5vcmdcIj5cbiAgPCEtLTxpbWcgc3JjPVwiaHR0cDovL29jYW1sLm9yZy9sb2dvL0NvbG91ci9TVkcvY29sb3VyLWxvZ28uc3ZnXCJcbiAgICAgICBhbHQ9XCItLT5PQ2FtbDwhLS1cIlxuICAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lOyB3aWR0aDogMTUwcHg7XCIgLz4gLS0+XG48L2E+LiBDb21waWxlZCBieSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL29jc2lnZW4ub3JnL2pzX29mX29jYW1sL1wiPmpzX29mX29jYW1sPC9hPi48L2xpPlxuPGxpPlRleHQgZWRpdG9yIHVzZWQgaXMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9jb2RlbWlycm9yLm5ldFwiPkNvZGVNaXJyb3I8L2E+LiBJdCBjb21lcyB3aXRoIGEgbG90IG9mIGZlYXR1cmVzLiBDaGVjayBvdXQgaXRzIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vY29kZW1pcnJvci5uZXQvZG9jL21hbnVhbC5odG1sI2NvbW1hbmRzXCI+bWFudWFsPC9hPi48L2xpPlxuPGxpPlZpc3VhbGl6YXRpb24gcmVsaWVzIG9uIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2QzanMub3JnXCI+ZDM8L2E+LjwvbGk+XG48bGk+TGF5b3V0IHVzZXMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9nZXRib290c3RyYXAuY29tXCI+Ym9vdHN0cmFwPC9hPiBhbmQgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vanF1ZXJ5dWkuY29tXCI+alF1ZXJ5PC9hPi48L2xpPlxuPC91bD5cblxuPGgzPk5vbWluYWwgY29udHJpYnV0aW9uPC9oMz5cbjxkbCBjbGFzcz1cImRsLWhvcml6b250YWxcIj48ZHQ+UGllcnJlIEJvdXRpbGxpZXI8L2R0PjxkZD5HZW5lcmFsIGRlc2lnbiBhbmQgbWFpbnRlbmFuY2UsIHByb3RvY29sczwvZGQ+PGR0PlhpbmcgTGk8L2R0PjxkZD5PdXRwdXRzIHZpc3VhbGl6YXRpb25zLCBHZW5lcmFsIGxheW91dDwvZGQ+PGR0Pk11dGFhbWJhIE1hYXNoYTwvZHQ+PGRkPlRyYW5zcGFyZW50IG11bHRpIGJhY2tlbmQgYXJjaGl0ZWN0dXJlLCBwcm90b2NvbHMsIE91dHB1dCB2aXN1YWxpemF0aW9ucywgR2VuZXJhbCBsYXlvdXQ8L2RkPjxkdD5BbnRvaW5lIFBvdWlsbGU8L2R0PjxkZD5NYWludGVuYW5jZSBhbmQgaW1wcm92ZW1lbnRzPC9kZD48L2RsPlxufH1dXG5cbmxldCBvbmxvYWQgKCkgPSAoKVxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBuYXZ0YWJzX2lkID0gXCJuYXZ0YWJzXCJcblxubGV0IG5hdnRhYnMgKCkgPVxuICBsZXQgc3RvcnlfY2xhc3MgPVxuICAgIFNvbWVcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgIGlmIHMuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2UgdGhlblxuICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBbIFwiZGlzYWJsZWRcIiBdKVxuICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbClcbiAgaW5cbiAgVHl4bWxfanMuVG9fZG9tLm9mX3VsXG4gIEBAIFVpX2NvbW1vbi5uYXZ0YWJzIG5hdnRhYnNfaWRcbiAgICAgICBbXG4gICAgICAgICBcImVkaXRvclwiLCBOb25lLCBUYWJfZWRpdG9yLm5hdmxpICgpO1xuICAgICAgICAgXCJsb2dcIiwgTm9uZSwgVGFiX2xvZy5uYXZsaSAoKTtcbiAgICAgICAgIFwicGxvdFwiLCBOb25lLCBUYWJfcGxvdC5uYXZsaSAoKTtcbiAgICAgICAgIFwiRElOXCIsIE5vbmUsIFRhYl9kaW4ubmF2bGkgKCk7XG4gICAgICAgICBcInNuYXBzaG90XCIsIE5vbmUsIFRhYl9zbmFwc2hvdC5uYXZsaSAoKTtcbiAgICAgICAgIFwib3V0cHV0c1wiLCBOb25lLCBUYWJfb3V0cHV0cy5uYXZsaSAoKTtcbiAgICAgICAgIFwic3Rvcmllc1wiLCBzdG9yeV9jbGFzcywgVGFiX3N0b3JpZXMubmF2bGkgKCk7XG4gICAgICAgICBcImFib3V0XCIsIE5vbmUsIFRhYl9hYm91dC5uYXZsaSAoKTtcbiAgICAgICBdXG5cbmxldCBuYXZjb250ZW50c19pZCA6IHN0cmluZyA9IFwibmF2Y29udGVudHNcIlxuXG5sZXQgbmF2Y29udGVudHMgKCkgPVxuICBUeXhtbF9qcy5Ub19kb20ub2ZfZGl2XG4gIEBAIFVpX2NvbW1vbi5uYXZjb250ZW50IH5pZDpuYXZjb250ZW50c19pZCBbXVxuICAgICAgIFtcbiAgICAgICAgIFwiZWRpdG9yXCIsIFsgXCJyb3dcIiBdLCBUYWJfZWRpdG9yLmNvbnRlbnQgKCk7XG4gICAgICAgICBcImxvZ1wiLCBbXSwgVGFiX2xvZy5jb250ZW50ICgpO1xuICAgICAgICAgXCJwbG90XCIsIFtdLCBUYWJfcGxvdC5jb250ZW50ICgpO1xuICAgICAgICAgXCJESU5cIiwgW10sIFRhYl9kaW4uY29udGVudCAoKTtcbiAgICAgICAgIFwic25hcHNob3RcIiwgW10sIFRhYl9zbmFwc2hvdC5jb250ZW50ICgpO1xuICAgICAgICAgXCJvdXRwdXRzXCIsIFtdLCBUYWJfb3V0cHV0cy5jb250ZW50ICgpO1xuICAgICAgICAgXCJzdG9yaWVzXCIsIFsgXCJyb3dcIiBdLCBUYWJfc3Rvcmllcy5jb250ZW50ICgpO1xuICAgICAgICAgXCJhYm91dFwiLCBbIFwicGFuZWwtc2Nyb2xsXCIgXSwgVGFiX2Fib3V0LmNvbnRlbnQgKCk7XG4gICAgICAgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gVGFiX2VkaXRvci5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3Bsb3Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9kaW4ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9zbmFwc2hvdC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX291dHB1dHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9zdG9yaWVzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfYWJvdXQub25sb2FkICgpIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA9XG4gIGxldCAoKSA9IFRhYl9lZGl0b3Iub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfcGxvdC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfZGluLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9zbmFwc2hvdC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfb3V0cHV0cy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfc3Rvcmllcy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfYWJvdXQub25yZXNpemUgKCkgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCByZWZyZXNoIHIgPVxuICBsZXQgcicgPSBTdGF0ZV9maWxlLnN5bmMgfnJlc2V0OnRydWUgKCkgaW5cbiAgbGV0IHInJyA9IFN0YXRlX3NpbXVsYXRpb24ucmVmcmVzaCAoKSBpblxuICByJyA+Pj0gZnVuIHInIC0+XG4gIHInJyA+Pj0gZnVuIHInJyAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcic7IHInJyBdKVxuXG5sZXQgY3JlYXRlX3Byb2plY3QgKHByb2plY3RfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfcHJvamVjdC5jcmVhdGVfcHJvamVjdCBwcm9qZWN0X2lkID4+PSByZWZyZXNoKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9wcm9qZWN0IChwcm9qZWN0X2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX3Byb2plY3Quc2V0X3Byb2plY3QgcHJvamVjdF9pZCA+Pj0gcmVmcmVzaClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBjbG9zZV9wcm9qZWN0IHByb2plY3RfaWQgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LnJlbW92ZV9wcm9qZWN0IHByb2plY3RfaWQgPj49IHJlZnJlc2gpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X21hbmFnZXIgKHJ1bnRpbWVfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dFxuICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgIChTdGF0ZV9ydW50aW1lLmNyZWF0ZV9zcGVjIH5sb2FkOnRydWUgcnVudGltZV9pZCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkID0gXCJzaW11bGF0aW9uX3NlZWRfaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX21vZGFsX2lkID0gXCJwcmVmZXJlbmNlc19tb2RhbFwiXG5sZXQgcHJlZmVyZW5jZXNfYnV0dG9uID0gSHRtbC5hIFsgSHRtbC50eHQgXCJQcmVmZXJlbmNlc1wiIF1cblxubGV0IG9wdGlvbl9zZWVkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICBdXG4gICAgKClcblxubGV0IG9wdGlvbl93aXRodHJhY2UgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGRlYWRydWxlcyA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG9wdGlvbl93aXRoZGVhZGFnZW50cyA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5cbmxldCBkZWNyZWFzZV9mb250ID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJidG5cIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCItXCIgXVxuXG5sZXQgaW5jcmVhc2VfZm9udCA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwiYnRuLWxnXCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiK1wiIF1cblxubGV0IGRyb3Bkb3duIChtb2RlbCA6IFN0YXRlX3J1bnRpbWUubW9kZWwpID1cbiAgbGV0IGN1cnJlbnRfaWQgPSBTdGF0ZV9ydW50aW1lLnNwZWNfaWQgbW9kZWwuU3RhdGVfcnVudGltZS5tb2RlbF9jdXJyZW50IGluXG4gIExpc3QubWFwXG4gICAgKGZ1biAoc3BlYyA6IFN0YXRlX3J1bnRpbWUuc3BlYykgLT5cbiAgICAgIGxldCBzcGVjX2lkID0gU3RhdGVfcnVudGltZS5zcGVjX2lkIHNwZWMgaW5cbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgIChIdG1sLmFfdmFsdWUgc3BlY19pZFxuICAgICAgICAgIDo6XG4gICAgICAgICAgKGlmIGN1cnJlbnRfaWQgPSBzcGVjX2lkIHRoZW5cbiAgICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBbXSkpXG4gICAgICAgIChIdG1sLnR4dCAoU3RhdGVfcnVudGltZS5zcGVjX2xhYmVsIHNwZWMpKSlcbiAgICBtb2RlbC5TdGF0ZV9ydW50aW1lLm1vZGVsX3J1bnRpbWVzXG5cbmxldCBiYWNrZW5kX29wdGlvbnMgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5tYXAgKGZ1biBsaXN0X3QgLT4gZHJvcGRvd24gbGlzdF90KSBTdGF0ZV9ydW50aW1lLm1vZGVsKVxuXG5sZXQgYmFja2VuZF9zZWxlY3QgPVxuICBUeXhtbF9qcy5SLkh0bWwuc2VsZWN0IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdIF0gYmFja2VuZF9vcHRpb25zXG5cbmxldCVodG1sIGJvZGllcyA9XG4gIHt8XG4gICAgPGg0PkFwcGxpY2F0aW9uPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCI+Rm9udCBzaXplPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj58fVxuICAgIFsgZGVjcmVhc2VfZm9udDsgSHRtbC50eHQgXCIgIFwiOyBpbmNyZWFzZV9mb250IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTJcIj5CYWNrZW5kIGZvciBuZXcgcHJvamVjdHM8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBiYWNrZW5kX3NlbGVjdCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8aDQ+UHJvamVjdDwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiIGZvcj1cInx9XG4gICAgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkXG4gICAge3xcIj5TZWVkPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj58fVxuICAgIFsgb3B0aW9uX3NlZWRfaW5wdXQgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGg0PlN0b3JpZXM8L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGh0cmFjZSBdXG4gICAge3xTdG9yZSB0cmFjZVxuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGg0PlN0YXRpYyBhbmFseXNlczwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25fd2l0aGRlYWRydWxlcyBdXG4gICAge3xTaG93IGRlYWQgcnVsZXNcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGhkZWFkYWdlbnRzIF1cbiAgICB7fFNob3cgZGVhZCBhZ2VudHNcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGhpcnJldmVyc2libGUgXVxuICAgIHt8U2hvdyBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxufH1cblxubGV0IHNldF9idXR0b24gPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQ7IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLXByaW1hcnlcIiBdIF1cbiAgICBbIEh0bWwudHh0IFwiU2V0XCIgXVxuXG5sZXQgc2F2ZV9idXR0b24gPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdIF1cbiAgICBbIEh0bWwudHh0IFwiU2F2ZSBhcyBkZWZhdWx0XCIgXVxuXG5sZXQgbW9kYWwgPVxuICBsZXQgaGVhZCA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1oZWFkZXJcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdO1xuICAgICAgICAgICAgICBIdG1sLmFfdXNlcl9kYXRhIFwiZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbIEh0bWwuZW50aXR5IFwidGltZXNcIiBdO1xuICAgICAgICBIdG1sLmg0IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC10aXRsZVwiIF0gXSBbIEh0bWwudHh0IFwiUHJlZmVyZW5jZXNcIiBdO1xuICAgICAgXVxuICBpblxuICBsZXQgYm9keSA9IEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1ib2R5XCIgXSBdIGJvZGllcyBpblxuICBsZXQgZm9vdCA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1mb290ZXJcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgc2V0X2J1dHRvbjtcbiAgICAgICAgc2F2ZV9idXR0b247XG4gICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICAgICAgSHRtbC5hX3VzZXJfZGF0YSBcImRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgWyBIdG1sLnR4dCBcIkNsb3NlXCIgXTtcbiAgICAgIF1cbiAgaW5cbiAgSHRtbC5mb3JtXG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWNvbnRlbnRcIjsgXCJmb3JtLWhvcml6b250YWxcIiBdIF1cbiAgICBbIGhlYWQ7IGJvZHk7IGZvb3QgXVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFtcbiAgICBwcmVmZXJlbmNlc19idXR0b247XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbFwiOyBcImZhZGVcIiBdO1xuICAgICAgICAgIEh0bWwuYV9pZCBwcmVmZXJlbmNlc19tb2RhbF9pZDtcbiAgICAgICAgICBIdG1sLmFfcm9sZSBbIFwiZGlhbG9nXCIgXTtcbiAgICAgICAgICBIdG1sLmFfdGFiaW5kZXggKC0xKTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1kaWFsb2dcIiBdOyBIdG1sLmFfcm9sZSBbIFwiZG9jdW1lbnRcIiBdIF1cbiAgICAgICAgICBbIG1vZGFsIF07XG4gICAgICBdO1xuICBdXG5cbmxldCBzZXRfYWN0aW9uICgpID1cbiAgbGV0IGlucHV0ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl9zZWVkX2lucHV0IGluXG4gIGxldCBpbnB1dF92YWx1ZSA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBpbnB1dCMjLnZhbHVlIGluXG4gIGxldCBtb2RlbF9zZWVkID1cbiAgICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBpbnB1dF92YWx1ZSkgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuICBpblxuICBTdGF0ZV9wcm9qZWN0LnNldF9zZWVkIG1vZGVsX3NlZWQ7XG4gIFN0YXRlX3Byb2plY3Quc2V0X3N0b3JlX3RyYWNlXG4gICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aHRyYWNlKSMjLmNoZWNrZWQpO1xuICBTdGF0ZV9wcm9qZWN0LnNldF9zaG93X2RlYWRfcnVsZXNcbiAgICAoSnMudG9fYm9vbCAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoZGVhZHJ1bGVzKSMjLmNoZWNrZWQpO1xuICBTdGF0ZV9wcm9qZWN0LnNldF9zaG93X2RlYWRfYWdlbnRzXG4gICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRhZ2VudHMpIyMuY2hlY2tlZCk7XG4gIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSkjIy5jaGVja2VkKTtcblxuICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLnNldF9tYW5hZ2VyXG4gICAgKEpzLnRvX3N0cmluZyAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBiYWNrZW5kX3NlbGVjdCkjIy52YWx1ZSlcblxubGV0IHNldF9hbmRfc2F2ZV9hY3Rpb24gKCkgPVxuICBzZXRfYWN0aW9uICgpO1xuICBTdGF0ZV9wcmVmZXJlbmNlcy5zZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpO1xuICBTdGF0ZV9wcm9qZWN0LnNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKClcblxubGV0IG9ubG9hZCAoKSA9XG4gIChUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBtb2RhbCkjIy5vbnN1Ym1pdFxuICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gKF8gOiBfIEpzLnQpIC0+XG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByZWZlcmVuY2VzX21vZGFsX2lkKSB+YWN0aW9uOlwiaGlkZVwiXG4gICAgICAgICBpblxuICAgICAgICAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuICAgICAgICAgSnMuX2ZhbHNlKTtcbiAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gc2F2ZV9idXR0b24pIyMub25jbGlja1xuICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgbGV0ICgpID0gc2V0X2FuZF9zYXZlX2FjdGlvbiAoKSBpblxuICAgICAgICAgSnMuX2ZhbHNlKTtcbiAgKFR5eG1sX2pzLlRvX2RvbS5vZl9hIHByZWZlcmVuY2VzX2J1dHRvbikjIy5vbmNsaWNrXG4gIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICBsZXQgc3AgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3Byb2plY3QubW9kZWwgaW5cbiAgICAgICAgIGxldCBpbnB1dCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fc2VlZF9pbnB1dCBpblxuICAgICAgICAgaW5wdXQjIy52YWx1ZSA6PVxuICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAobWF0Y2ggc3AuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3Quc2VlZCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICB8IFNvbWUgbW9kZWxfc2VlZCAtPiBzdHJpbmdfb2ZfaW50IG1vZGVsX3NlZWQpO1xuXG4gICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRodHJhY2UpIyMuY2hlY2tlZFxuICAgICAgICAgOj0gSnMuYm9vbCBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZTtcbiAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWRcbiAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgc3AuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50cztcbiAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMpIyMuY2hlY2tlZFxuICAgICAgICAgOj0gSnMuYm9vbFxuICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXM7XG4gICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlKSMjLmNoZWNrZWRcbiAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgc3AuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM7XG5cbiAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGJhY2tlbmRfc2VsZWN0KSMjLnZhbHVlXG4gICAgICAgICA6PSBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgKFN0YXRlX3J1bnRpbWUuc3BlY19pZFxuICAgICAgICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9ydW50aW1lLm1vZGVsKS5TdGF0ZV9ydW50aW1lLm1vZGVsX2N1cnJlbnQpO1xuXG4gICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByZWZlcmVuY2VzX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiO1xuXG4gICAgICAgICBKcy5fZmFsc2UpO1xuXG4gIGxldCAoKSA9IFN0YXRlX3ByZWZlcmVuY2VzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLiBpblxuICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBpbmNyZWFzZV9mb250KSMjLm9uY2xpY2tcbiAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgIGxldCAoKSA9IFN0YXRlX3ByZWZlcmVuY2VzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLjIgaW5cbiAgICAgICAgIEpzLl9mYWxzZSk7XG4gIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGRlY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgbGV0ICgpID0gU3RhdGVfcHJlZmVyZW5jZXMudXBkYXRlRm9udFNpemUgfmRlbHRhOigtMC4yKSBpblxuICAgICAgICAgSnMuX2ZhbHNlKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgcHJvamVjdF9pZF9tb2RhbF9pZCA9IFwibWVudS1lZGl0b3ItcHJvamVjdC1pZC1tb2RhbFwiXG5cbmxldCBwcm9qZWN0X2lkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJwcm9qZWN0IG5ld1wiO1xuICAgICAgICBIdG1sLmFfc2l6ZSA0MDtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgbGlfbmV3ID0gSHRtbC5saSBbIEh0bWwuYSBbIEh0bWwuY2RhdGEgXCJOZXcgcHJvamVjdFwiIF0gXVxubGV0IGxpX3ByZWZzID0gSHRtbC5saSAoUGFuZWxfcHJlZmVyZW5jZXNfbW9kYWwuY29udGVudCAoKSlcbmxldCBwcm9qZWN0X2lkX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwcm9qZWN0X2lkX2lucHV0XG5cbmxldCBjb250ZW50ICgpID1cbiAgSHRtbC5kaXZcbiAgICBbXG4gICAgICBUeXhtbF9qcy5SLkh0bWw1LnVsXG4gICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJuYXZcIjsgXCJuYXYtdGFic1wiOyBcIm5hdi1qdXN0aWZpZWRcIiBdIF1cbiAgICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbF9wcm9qZWN0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxpX2NsYXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY3VycmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBjdXJyZW50X3Byb2plY3RfaWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3Byb2plY3RfaWQgPSBtb2RlbF9wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiYWN0aXZlXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNwYW5fY2xvc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC5lbnRpdHkgXCJ0aW1lc1wiIF1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBzcGFuX2Nsb3NlKSMjLm9uY2xpY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5jbG9zZV9wcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IERvbV9odG1sLnN0b3BQcm9wYWdhdGlvbiBldmVudCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLl9mYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wdXRpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJnbHlwaGljb25cIjsgXCJnbHlwaGljb24tcmVmcmVzaFwiIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImdseXBoaWNvblwiOyBcImdseXBoaWNvbi1va1wiIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3MgY2xhc3NlcyBdIFtdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYV9wcm9qZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuY2RhdGEgKFwiIFwiIF4gbW9kZWxfcHJvamVjdF9pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbl9jbG9zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYSBhX3Byb2plY3QpIyMub25jbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuc2V0X3Byb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmxpIH5hOlsgSHRtbC5hX2NsYXNzIGxpX2NsYXNzIF0gWyBhX3Byb2plY3QgXSlcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jYXRhbG9nXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgYWNjIFsgbGlfbmV3OyBsaV9wcmVmcyBdKVxuICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKSk7XG4gICAgICBVaV9jb21tb24uY3JlYXRlX21vZGFsX3RleHRfaW5wdXQgfmlkOnByb2plY3RfaWRfbW9kYWxfaWRcbiAgICAgICAgfnRpdGxlX2xhYmVsOlwiTmV3IFByb2plY3RcIlxuICAgICAgICB+Ym9keTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBbJWh0bWxcbiAgICAgICAgICAgICAge3w8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj58fSBbIHByb2plY3RfaWRfaW5wdXQgXSB7fDwvZGl2Pnx9XTtcbiAgICAgICAgICBdXG4gICAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgUHJvamVjdFwiXG4gICAgICAgIH5zdWJtaXQ6XG4gICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzX2NsaWVudF9pZCA6IHN0cmluZyA9XG4gICAgICAgICAgICAgICAgIEpzLnRvX3N0cmluZyBwcm9qZWN0X2lkX2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5jcmVhdGVfcHJvamVjdCBzZXR0aW5nc19jbGllbnRfaWRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5fZmFsc2UpKTtcbiAgICBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlc19tb2RhbC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uXG4gICAgICAoXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKVxuICAgICAgXCJzaG93bi5icy5tb2RhbFwiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gcHJvamVjdF9pZF9pbnB1dF9kb20jI2ZvY3VzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIGxpX25ldykjIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCBjcmVhdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgcGFyYW0gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlciA9XG4gIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAoSnMuc3RyaW5nXG4gICAgICAgKFwiW3BhbmVsX3ByZWZlcmVuY2VzX2NvbnRyb2xsZXIuY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXSBzZWVkID0gXCJcbiAgICAgICBeIENvbW1vbi5zdHJpbmdfb2Zfb3B0aW9uIHN0cmluZ19vZl9pbnQgcGFyYW0uU3RhdGVfcHJvamVjdC5zZWVkKSk7XG4gIHtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3Bsb3RfcGVyaW9kID0gcGFyYW0uU3RhdGVfcHJvamVjdC5wbG90X3BlcmlvZDtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA9IHBhcmFtLlN0YXRlX3Byb2plY3QucGF1c2VfY29uZGl0aW9uO1xuICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25fc2VlZCA9IHBhcmFtLlN0YXRlX3Byb2plY3Quc2VlZDtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3N0b3JlX3RyYWNlID0gcGFyYW0uU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZTtcbiAgfVxuXG5sZXQgY29udGludWVfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGxldCBwYXVzZV9jb25kaXRpb24gPVxuICAgICAgICBsZXQgb3BlbiBTdGF0ZV9wcm9qZWN0IGluXG4gICAgICAgIChSZWFjdC5TLnZhbHVlIG1vZGVsKS5tb2RlbF9wYXJhbWV0ZXJzLnBhdXNlX2NvbmRpdGlvblxuICAgICAgaW5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5jb250aW51ZV9zaW11bGF0aW9uIHBhdXNlX2NvbmRpdGlvbilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBwYXVzZV9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9zaW11bGF0aW9uLnBhdXNlX3NpbXVsYXRpb24gKCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc3RvcF9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgICAoSnMuc3RyaW5nIFwiW3N1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLnN0b3Bfc2ltdWxhdGlvbl1cIik7XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX3NpbXVsYXRpb24uc3RvcF9zaW11bGF0aW9uICgpKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHN0YXJ0X3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fXG4gICAgICAgIChKcy5zdHJpbmcgXCJbcGFuZWxfcHJlZmVyZW5jZXNfY29udHJvbGxlci5zdGFydF9zaW11bGF0aW9uXVwiKTtcbiAgICAgIGxldCBzaW11bGF0aW9uX3BhcmFtZXRlciA9XG4gICAgICAgIGNyZWF0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3Byb2plY3QubW9kZWwpLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgaW5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5zdGFydF9zaW11bGF0aW9uIHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGludGVydmVuZV9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0IG1vZGVsX3BlcnR1cmJhdGlvbiA9XG4gICAgICAgIFJlYWN0LlMudmFsdWUgU3RhdGVfcGVydHVyYmF0aW9uLm1vZGVsX2ludGVydmVudGlvblxuICAgICAgaW5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5pbnRlcnZlbmVfc2ltdWxhdGlvbiBtb2RlbF9wZXJ0dXJiYXRpb24pXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gdGV4dCAtPlxuICAgICAgICAgICAgICBTdGF0ZV9lcnJvci5hZGRfZXJyb3IgX19MT0NfX1xuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkluZm87XG4gICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpKVxuXG5sZXQgZm9jdXNfcmFuZ2UgKHJhbmdlIDogTG9jLnQpIDogdW5pdCA9XG4gIGxldCBmaWxlX2lkID0gcmFuZ2UuTG9jLmZpbGUgaW5cbiAgbGV0IGxpbmUgPSByYW5nZS5Mb2MuZnJvbV9wb3NpdGlvbi5Mb2MubGluZSBpblxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9maWxlLnNlbGVjdF9maWxlIGZpbGVfaWQgKFNvbWUgbGluZSkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2ltdWxhdGlvbl90cmFjZSAoKSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIG1hbmFnZXIjc2ltdWxhdGlvbl9yYXdfdHJhY2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIGRhdGFfc3RyaW5nIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIGRhdGFfc3RyaW5nIGluXG4gICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG4gICAgICAgICAgICAgICAgfmZpbGVuYW1lOlwidHJhY2UuanNvblwiO1xuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgc2ltdWxhdGlvbl9vdXRwdXRzICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gbWFuYWdlciNzaW11bGF0aW9uX291dHB1dHNfemlwXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBkYXRhX2JpZ3N0cmluZyAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciBkYXRhX2JpZ3N0cmluZyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL3ppcFwiXG4gICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6XCJzaW11bGF0aW9uX291dHB1dHMuemlwXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5vcGVuIExpc3RfdXRpbC5JbmZpeFxuXG5sZXQgdmlzaWJsZV9vbl9zdGF0ZXMgPyhhX2NsYXNzID0gW10pXG4gICAgKHN0YXRlIDogU3RhdGVfc2ltdWxhdGlvbi5zaW11bGF0aW9uX3N0YXR1cyBsaXN0KSA6IHN0cmluZyBsaXN0IFJlYWN0LnNpZ25hbFxuICAgID1cbiAgbGV0IGhpZGRlbl9jbGFzcyA9IFsgXCJoaWRkZW5cIiBdIGluXG4gIGxldCB2aXNpYmxlX2NsYXNzID0gWyBcInZpc2libGVcIiBdIGluXG4gIFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgIGxldCBjdXJyZW50X3N0YXRlID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX3N0YXRlIG1vZGVsIGluXG4gICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgIChpZiBMaXN0Lm1lbSBjdXJyZW50X3N0YXRlIHN0YXRlIHRoZW5cbiAgICAgICAgICAgYV9jbGFzcyBAIHZpc2libGVfY2xhc3NcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgYV9jbGFzcyBAIGhpZGRlbl9jbGFzcykpXG5cbm1vZHVsZSBGb3JtUGVydHVyYmF0aW9uIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX3BlcnR1cmJhdGlvblwiXG5cbiAgbGV0IGlucHV0ID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJTaW11bGF0aW9uIFBlcnR1cmJhdGlvblwiO1xuICAgICAgICBdXG4gICAgICAoKVxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0OyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJpbnRlcnZlbnRpb25cIiBdXG5cbiAgbGV0IGZvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJmb3JtLWhvcml6b250YWxcIiBdXG4gICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTEwXCI7IFwiY29sLXhzLTlcIiBdIF0gWyBpbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdIF0gWyBidXR0b24gXTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuXG4gIGxldCBjb250ZW50ICgpID0gWyBmb3JtIF1cblxuICBsZXQgb25sb2FkICgpIDogdW5pdCA9XG4gICAgbGV0IGZvcm1fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2Zvcm0gZm9ybSBpblxuICAgIGxldCBpbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgaW5wdXQgaW5cbiAgICBsZXQgaGFuZGxlciBfID1cbiAgICAgIGxldCBtb2RlbF9wZXJ0dXJiYXRpb24gOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgaW5wdXRfZG9tIyMudmFsdWUgaW5cbiAgICAgIGxldCAoKSA9IFN0YXRlX3BlcnR1cmJhdGlvbi5zZXRfbW9kZWxfaW50ZXJ2ZW50aW9uIG1vZGVsX3BlcnR1cmJhdGlvbiBpblxuICAgICAgSnMuX3RydWVcbiAgICBpblxuXG4gICAgbGV0ICgpID1cbiAgICAgIGZvcm1fZG9tIyMub25zdWJtaXQgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLmludGVydmVuZV9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBpbnB1dF9kb20jIy5vbmNoYW5nZSA6PSBEb20uaGFuZGxlciBoYW5kbGVyIGluXG4gICAgKClcbmVuZFxuXG5sZXQgc2lnbmFsX2NoYW5nZSBpbnB1dF9kb20gc2lnbmFsX2hhbmRsZXIgPVxuICBpbnB1dF9kb20jIy5vbmNoYW5nZSA6PVxuICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNpZ25hbF9oYW5kbGVyIChKcy50b19zdHJpbmcgaW5wdXRfZG9tIyMudmFsdWUpIGluXG4gICAgICAgIEpzLl90cnVlKVxuXG5tb2R1bGUgSW5wdXRQYXVzZUNvbmRpdGlvbiA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9wcmVmZXJlbmNlc19wYXVzZV9jb25kaXRpb25cIlxuXG4gIGxldCBpbnB1dCA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcIltUXSA+IDEwMFwiO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX3ZhbHVlXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICBtLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnBhdXNlX2NvbmRpdGlvbilcbiAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpO1xuICAgICAgICBdXG4gICAgICAoKVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBpbnB1dCBdXG4gIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgaW5wdXRcblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgKCkgPVxuICAgICAgc2lnbmFsX2NoYW5nZSBkb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICAgIGxldCB2JyA9XG4gICAgICAgICAgICBpZiB2YWx1ZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICBcIltmYWxzZV1cIlxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zZXRfcGF1c2VfY29uZGl0aW9uIHYnKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgSW5wdXRQbG90UGVyaW9kIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX3Bsb3RfcGVyaW9kXCJcblxuICBsZXQgZm9ybWF0X2Zsb2F0X3N0cmluZyB2YWx1ZSA9XG4gICAgbGV0IG4gPSBzdHJpbmdfb2ZfZmxvYXQgdmFsdWUgaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBuIGluXG4gICAgaWYgbGVuZ3RoID4gMCAmJiBTdHJpbmcuZ2V0IG4gKGxlbmd0aCAtIDEpID0gJy4nIHRoZW5cbiAgICAgIG4gXiBcIjBcIlxuICAgIGVsc2VcbiAgICAgIG5cblxuICBsZXQgaW5wdXQgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcInRpbWUgdW5pdHNcIjtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfbWluIChgTnVtYmVyIDApO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX3ZhbHVlXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICBmb3JtYXRfZmxvYXRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgbS5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5wbG90X3BlcmlvZClcbiAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpO1xuICAgICAgICBdXG4gICAgICAoKVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBpbnB1dCBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGlucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dCBpblxuICAgIGxldCAoKSA9XG4gICAgICBzaWduYWxfY2hhbmdlIGlucHV0X2RvbSAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgbGV0IHJlc2V0X3ZhbHVlICgpID1cbiAgICAgICAgICAgIGxldCBvbGRfdmFsdWUgPVxuICAgICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9wcm9qZWN0Lm1vZGVsKS5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5wbG90X3BlcmlvZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlucHV0X2RvbSMjLnZhbHVlIDo9IEpzLnN0cmluZyAoc3RyaW5nX29mX2Zsb2F0IG9sZF92YWx1ZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IG5ld192YWx1ZSA9IGZsb2F0X29mX3N0cmluZyB2YWx1ZSBpblxuICAgICAgICAgICAgaWYgbmV3X3ZhbHVlIDwgMC4gdGhlblxuICAgICAgICAgICAgICByZXNldF92YWx1ZSAoKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnNldF9wbG90X3BlcmlvZCBuZXdfdmFsdWVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPiByZXNldF92YWx1ZSAoKSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIERpdkVycm9yTWVzc2FnZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJjb25maWd1cmF0aW9uX2Vycm9yX2RpdlwiXG4gIGxldCBtZXNzYWdlX25hdl9pbmNfaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX21lc3NhZ2VfbmF2X2luY19pZFwiXG4gIGxldCBtZXNzYWdlX25hdl9kZWNfaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX21lc3NhZ2VfbmF2X2RlY19pZFwiXG4gIGxldCBtZXNzYWdlX2ZpbGVfbGFiZWxfaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX21lc3NhZ2VfZmlsZV9sYWJlbFwiXG4gIGxldCBlcnJvcl9pbmRleCwgZXJyb3JfaW5kZXhfc2V0ID0gSG9va2VkLlMuY3JlYXRlIH5kZWJ1ZzpcImVycm9yX2luZGV4XCIgTm9uZVxuXG4gIGxldCAoKSA9XG4gICAgSG9va2VkLlMucmVnaXN0ZXIgU3RhdGVfZXJyb3IuZXJyb3JzIChmdW4gZXJyb3JzIC0+XG4gICAgICAgIG1hdGNoIGVycm9ycyB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAobWF0Y2ggSG9va2VkLlMudmFsdWUgZXJyb3JfaW5kZXggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvcl9pbmRleF9zZXQgKFNvbWUgMClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKSkpXG5cbiAgKCogaWYgdGhlcmUgYXJlIGxlc3Mgb3Igbm8gZXJyb3JzIHRoZSBpbmRleCBuZWVkcyB0byBiZSB1cGRhdGVkICopXG4gIGxldCBzYW5pdGl6ZV9pbmRleCAoaW5kZXggOiBpbnQgb3B0aW9uKSBlcnJvcnMgOiBpbnQgb3B0aW9uID1cbiAgICBtYXRjaCBpbmRleCwgZXJyb3JzIHdpdGhcbiAgICB8IE5vbmUsIFtdIC0+IE5vbmVcbiAgICB8IE5vbmUsIF8gOjogXyAtPiBTb21lIDBcbiAgICB8IFNvbWUgXywgW10gLT4gTm9uZVxuICAgIHwgU29tZSBpbmRleCwgZXJyb3IgLT5cbiAgICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBlcnJvciBpblxuICAgICAgaWYgaW5kZXggPiBsZW5ndGggdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IGVycm9yX2luZGV4X3NldCAoU29tZSAwKSBpblxuICAgICAgICBTb21lIDBcbiAgICAgICkgZWxzZSBpZiAwID4gaW5kZXggdGhlbiAoXG4gICAgICAgIGxldCBpbmRleCA9IFNvbWUgKExpc3QubGVuZ3RoIGVycm9yIC0gMSkgaW5cbiAgICAgICAgbGV0ICgpID0gZXJyb3JfaW5kZXhfc2V0IGluZGV4IGluXG4gICAgICAgIGluZGV4XG4gICAgICApIGVsc2VcbiAgICAgICAgU29tZSBpbmRleFxuXG4gIGxldCBnZXRfbWVzc2FnZSAoaW5kZXggOiBpbnQgb3B0aW9uKSBlcnJvcnMgOiBBcGlfdHlwZXNfdC5tZXNzYWdlIG9wdGlvbiA9XG4gICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgKGZ1biBuIC0+IFNvbWUgKExpc3QubnRoIGVycm9ycyBuKSlcbiAgICAgIChzYW5pdGl6ZV9pbmRleCBpbmRleCBlcnJvcnMpXG5cbiAgbGV0IG1lc3NhZ2VfbmF2X3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbWF0Y2ggaW5kZXgsIGVycm9yIHdpdGhcbiAgICAgICAgfCBOb25lLCBbXSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBfLCBbXSAtPiBcIlwiXG4gICAgICAgIHwgTm9uZSwgXyA6OiBfIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGluZGV4LCAoXyA6OiBfIGFzIGVycm9ycykgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVkLyVkXCIgKGluZGV4ICsgMSkgKExpc3QubGVuZ3RoIGVycm9ycykpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIGVycm9yX2luZGV4KVxuICAgICAgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpXG5cbiAgbGV0IGFfY2xhc3MgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAoUmVhY3QuUy5iaW5kIChIb29rZWQuUy50b19yZWFjdF9zaWduYWwgU3RhdGVfZXJyb3IuZXJyb3JzKSAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAobWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBbIFwiaGlkZVwiIF1cbiAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IFsgXCJlcnJvci1zcGFuXCI7IFwiY2xpY2thYmxlXCIgXSkpKVxuXG4gIGxldCBtZXNzYWdlX25hdl9kZWMgPVxuICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9pZCBtZXNzYWdlX25hdl9kZWNfaWQ7IGFfY2xhc3MgXSBbIEh0bWwudHh0IFwiIMKrIFwiIF1cblxuICBsZXQgbWVzc2FnZV9uYXZfaW5jID1cbiAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfaWQgbWVzc2FnZV9uYXZfaW5jX2lkOyBhX2NsYXNzIF0gWyBIdG1sLnR4dCBcIiDCuyBcIiBdXG5cbiAgbGV0IG1lc3NhZ2VfbmF2ID1cbiAgICBbIG1lc3NhZ2VfbmF2X2RlYzsgVHl4bWxfanMuUi5IdG1sLnR4dCBtZXNzYWdlX25hdl90ZXh0OyBtZXNzYWdlX25hdl9pbmMgXVxuXG4gIGxldCBmaWxlX2xhYmVsX3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAoZnVuIG1lc3NhZ2UgLT4gbWVzc2FnZS5SZXN1bHRfdXRpbC5yYW5nZSlcbiAgICAgICAgICAgIChnZXRfbWVzc2FnZSBpbmRleCBlcnJvcilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgcmFuZ2UgLT4gRm9ybWF0LnNwcmludGYgXCJbJXNdXCIgcmFuZ2UuTG9jLmZpbGUpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIGVycm9yX2luZGV4KVxuICAgICAgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpXG5cbiAgbGV0IGZpbGVfbGFiZWwgPVxuICAgIEh0bWwuc3BhblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgbWVzc2FnZV9maWxlX2xhYmVsX2lkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZXJyb3Itc3BhblwiOyBcImNsaWNrYWJsZVwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgVHl4bWxfanMuUi5IdG1sLnR4dCBmaWxlX2xhYmVsX3RleHQgXVxuXG4gIGxldCBlcnJvcl9tZXNzYWdlX3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbWF0Y2ggZ2V0X21lc3NhZ2UgaW5kZXggZXJyb3Igd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgbWVzc2FnZSAtPiBGb3JtYXQuc3ByaW50ZiBcIiAlcyBcIiBtZXNzYWdlLlJlc3VsdF91dGlsLnRleHQpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIGVycm9yX2luZGV4KVxuICAgICAgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpXG5cbiAgbGV0IGVycm9yX21lc3NhZ2UgPVxuICAgIEh0bWwuc3BhblxuICAgICAgfmE6WyBIdG1sLmFfaWQgaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZXJyb3Itc3BhblwiIF0gXVxuICAgICAgWyBUeXhtbF9qcy5SLkh0bWwudHh0IGVycm9yX21lc3NhZ2VfdGV4dCBdXG5cbiAgbGV0IGFsZXJ0X21lc3NhZ2VzID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICAgICAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgW10gLT4gWyBcImFsZXJ0LXNtXCI7IFwiYWxlcnRcIiBdXG4gICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT4gWyBcImFsZXJ0LXNtXCI7IFwiYWxlcnRcIjsgXCJhbGVydC1kYW5nZXJcIiBdKSkpO1xuICAgICAgICBdXG4gICAgICAobWVzc2FnZV9uYXYgQCBbIGZpbGVfbGFiZWw7IGVycm9yX21lc3NhZ2UgXSlcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9XG4gICAgWyBhbGVydF9tZXNzYWdlcyBdXG5cbiAgbGV0IGZpbGVfY2xpY2tfaGFuZGxlciAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIGZpbGVfbGFiZWwgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIFwiW1BhbmVsX3ByZWZlcmVuY2VzXSBjbGlja2VkIGZpbGVfY2xpY2tfaGFuZGxlclwiKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBtZXNzYWdlIDogQXBpX3R5cGVzX3QubWVzc2FnZSBvcHRpb24gPVxuICAgICAgICAgICAgICBnZXRfbWVzc2FnZVxuICAgICAgICAgICAgICAgIChIb29rZWQuUy52YWx1ZSBlcnJvcl9pbmRleClcbiAgICAgICAgICAgICAgICAoSG9va2VkLlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByYW5nZSA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgICAoZnVuIG1lc3NhZ2UgLT4gbWVzc2FnZS5SZXN1bHRfdXRpbC5yYW5nZSlcbiAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgcmFuZ2UgLT4gUGFuZWxfcHJlZmVyZW5jZXNfY29udHJvbGxlci5mb2N1c19yYW5nZSByYW5nZVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5cbiAgbGV0IGluZGV4X2NsaWNrX2hhbmRsZXIgZG9tIGRlbHRhID1cbiAgICBsZXQgKCkgPVxuICAgICAgZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIFwiW1BhbmVsX3ByZWZlcmVuY2VzXSBjbGlja2VkIGluZGV4X2NsaWNrX2hhbmRsZXJcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaW5kZXggOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICAgc2FuaXRpemVfaW5kZXhcbiAgICAgICAgICAgICAgICAoSG9va2VkLlMudmFsdWUgZXJyb3JfaW5kZXgpXG4gICAgICAgICAgICAgICAgKEhvb2tlZC5TLnZhbHVlIFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBPcHRpb25fdXRpbC5tYXAgZGVsdGEgaW5kZXggaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgICBzYW5pdGl6ZV9pbmRleCBpbmRleCAoSG9va2VkLlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGVycm9yX2luZGV4X3NldCBpbmRleCBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBpbmNfY2xpY2tfaGFuZGxlciAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIG1lc3NhZ2VfbmF2X2RlYyBpblxuICAgIGxldCAoKSA9IGluZGV4X2NsaWNrX2hhbmRsZXIgZG9tIChmdW4gaW5kZXggLT4gaW5kZXggKyAxKSBpblxuICAgICgpXG5cbiAgbGV0IGRlY19jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gbWVzc2FnZV9uYXZfaW5jIGluXG4gICAgbGV0ICgpID0gaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gKGZ1biBpbmRleCAtPiBpbmRleCAtIDEpIGluXG4gICAgKClcblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgKCkgPSBmaWxlX2NsaWNrX2hhbmRsZXIgKCkgaW5cbiAgICBsZXQgKCkgPSBpbmNfY2xpY2tfaGFuZGxlciAoKSBpblxuICAgIGxldCAoKSA9IGRlY19jbGlja19oYW5kbGVyICgpIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uU3RhcnQgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfc3RhcnRfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2Rpc2FibGVkICgpKVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgICBTdGF0ZV9maWxlLmN1cnJlbnQgPSBTb21lIHsgU3RhdGVfZmlsZS5vdXRfb2Zfc3luYzsgXyB9O1xuICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmNcbiAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcInN0YXJ0XCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBzdGFydF9idXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc3RhcnRfYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLnN0YXJ0X3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25DbGVhciA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9wcmVmZXJlbmNlc19jbGVhcl9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImNsZWFyXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJlZmVyZW5jZXNfY29udHJvbGxlci5zdG9wX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uUGF1c2UgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfcGF1c2VfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJwYXVzZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJlZmVyZW5jZXNfY29udHJvbGxlci5wYXVzZV9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvblRyYWNlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX2dldF90cmFjZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlXG4gICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJkaXNhYmxlZFwiIF0pXG4gICAgICAgICAgICAgICAgIEAgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSlcbiAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJnZXQgdHJhY2VcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3ByZWZlcmVuY2VzX2NvbnRyb2xsZXIuc2ltdWxhdGlvbl90cmFjZSAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25PdXRwdXRzIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX291dHB1dHNfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJBbGwgb3V0cHV0c1wiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJlZmVyZW5jZXNfY29udHJvbGxlci5zaW11bGF0aW9uX291dHB1dHMgKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uQ29udGludWUgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfY29udGludWVfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJjb250aW51ZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJlZmVyZW5jZXNfY29udHJvbGxlci5jb250aW51ZV9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIERpdlN0YXR1c0luZGljYXRvciA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJzZXR0aW5nX3N0YXR1c19pbmRpY2F0b3JcIlxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBsZXQgZGVidWcgPVxuICAgICAgSHRtbC5kaXZcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgIGxldCBsYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5zaW11bGF0aW9uX3N0YXR1c190b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3QgbGFiZWwpKTtcbiAgICAgICAgXVxuICAgIGluXG4gICAgWyBIdG1sLmRpdiB+YTpbIEh0bWwuYV9pZCBpZCBdIChVaV9jb21tb24ubGV2ZWwgfmRlYnVnICgpKSBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9ICgpXG5lbmRcblxubW9kdWxlIFJ1bm5pbmdQYW5lbExheW91dCA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJzZXR0aW5nc19ydW5ldGltZV9sYXlvdXRcIlxuXG4gIGxldCBwcm9ncmVzc19iYXIgKHBlcmNlbnRfc2lnbmFsIDogaW50IFR5eG1sX2pzLlIuSHRtbC53cmFwKVxuICAgICAgKHZhbHVlX3NpZ25hbCA6IHN0cmluZyBSZWFjdC5zaWduYWwpID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwicHJvZ3Jlc3NiYXJcIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuVW5zYWZlLmludF9hdHRyaWIgXCJhcmlhLXZhbHVlbm93XCIgcGVyY2VudF9zaWduYWw7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVtaW5cIiAwO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLmludF9hdHRyaWIgXCJhcmlhLXZhbHVlbWF4XCIgMTAwO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInN0eWxlXCJcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBzIC0+IEZvcm1hdC5zcHJpbnRmIFwid2lkdGg6ICVkJSU7XCIgcylcbiAgICAgICAgICAgICAgIHBlcmNlbnRfc2lnbmFsKTtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcInByb2dyZXNzLWJhclwiIF07XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLmJpbmQgdmFsdWVfc2lnbmFsIChmdW4gdmFsdWUgLT4gUmVhY3QuUy5jb25zdCB2YWx1ZSkpO1xuICAgICAgXVxuXG4gIGxldCB0aW1lX3Byb2dyZXNzX2JhciAoKSA9XG4gICAgcHJvZ3Jlc3NfYmFyXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdGltZV9wZXJjZW50IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCB0aW1lX3BlcmNlbnQgOiBpbnQgPSBPcHRpb25fdXRpbC51bnNvbWUgMTAwIHRpbWVfcGVyY2VudCBpblxuICAgICAgICAgICB0aW1lX3BlcmNlbnQpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IHRpbWUgOiBmbG9hdCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSlcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgdGltZSA6IGZsb2F0ID0gT3B0aW9uX3V0aWwudW5zb21lIDAuMCB0aW1lIGluXG4gICAgICAgICAgIHN0cmluZ19vZl9mbG9hdCB0aW1lKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgZXZlbnRfcHJvZ3Jlc3NfYmFyICgpID1cbiAgICBwcm9ncmVzc19iYXJcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5nZXRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCBldmVudF9wZXJjZW50YWdlIDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSlcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZXZlbnRfcGVyY2VudGFnZSA6IGludCA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwudW5zb21lIDEwMCBldmVudF9wZXJjZW50YWdlXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGV2ZW50X3BlcmNlbnRhZ2UpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudClcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZXZlbnQgOiBpbnQgPSBPcHRpb25fdXRpbC51bnNvbWUgMCBldmVudCBpblxuICAgICAgICAgICBzdHJpbmdfb2ZfaW50IGV2ZW50KVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgdHJhY2tlZF9ldmVudHMgc3RhdGUgPVxuICAgIGxldCB0cmFja2VkX2V2ZW50cyA6IGludCBvcHRpb24gPVxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMpXG4gICAgICAgIHN0YXRlXG4gICAgaW5cbiAgICBtYXRjaCB0cmFja2VkX2V2ZW50cyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgdHJhY2tlZF9ldmVudHMgLT5cbiAgICAgIGlmIHRyYWNrZWRfZXZlbnRzID4gMCB0aGVuXG4gICAgICAgIFNvbWUgdHJhY2tlZF9ldmVudHNcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuXG4gIGxldCB0cmFja2VkX2V2ZW50c19jb3VudCAoKSA9XG4gICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbWF0Y2ggdHJhY2tlZF9ldmVudHMgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHRyYWNrZWRfZXZlbnRzIC0+IHN0cmluZ19vZl9pbnQgdHJhY2tlZF9ldmVudHNcbiAgICAgICAgICAgfCBOb25lIC0+IFwiIFwiKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgdHJhY2tlZF9ldmVudHNfbGFiZWwgKCkgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5nZXRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIG1hdGNoIHRyYWNrZWRfZXZlbnRzIHNpbXVsYXRpb25faW5mbyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBfIC0+IFwidHJhY2tlZCBldmVudHNcIlxuICAgICAgICAgICB8IE5vbmUgLT4gXCIgXCIpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCBlZmZpY2llbmN5X2RldGFpbCB+Y3VycmVudF9ldmVudCB0ID1cbiAgICBsZXQgYWxsID1cbiAgICAgIGZsb2F0X29mX2ludFxuICAgICAgICAodC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnlcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfdW5hcnlcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlXG4gICAgICAgKyB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb24pXG4gICAgaW5cbiAgICBsZXQgZXZlbnRzID0gZmxvYXRfb2ZfaW50IGN1cnJlbnRfZXZlbnQgaW5cbiAgICBIdG1sLnBcbiAgICAgIFtcbiAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslLjJmJSUgb2YgZXZlbnQgbG9vcHMgd2VyZSBwcm9kdWN0aXZlLiV0QF1cIlxuICAgICAgICAgICAgICgxMDAuICouIGV2ZW50cyAvLiAoYWxsICsuIGV2ZW50cykpXG4gICAgICAgICAgICAgKGZ1biBmIC0+IGlmIGFsbCA+IDAuIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAgTnVsbCBldmVudCBjYXVzZTpcIikpO1xuICAgICAgXVxuICAgIDo6ICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeSA+IDAgdGhlblxuICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgXCJWYWxpZCBlbWJlZGRpbmcgYnV0IG5vIGxvbmdlciB1bmFyeSB3aGVuIHJlcXVpcmVkOiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50IHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfdW5hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAkJCAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfYmluYXJ5ID4gMCB0aGVuXG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlZhbGlkIGVtYmVkZGluZyBidXQgbm90IGJpbmFyeSB3aGVuIHJlcXVpcmVkOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnQgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAkJCAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkNsYXNoaW5nIGluc3RhbmNlOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LkNvdW50ZXIuRWZmaWNpZW5jeS5jbGFzaGluZ19pbnN0YW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kudGltZV9jb3JyZWN0aW9uID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBlcnR1cmJhdGlvbiBpbnRlcnJ1cHRpbmcgdGltZSBhZHZhbmNlOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAgICAkJCBbXSkpKSlcblxuICBsZXQgZG9udF9nY19tZSA9IHJlZiBbXVxuXG4gIGxldCBjb250ZW50ICgpIDogSHRtbF90eXBlcy5kaXZfY29udGVudCBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBsZXQgc3RhdGVfbG9nLCBzZXRfc3RhdGVfbG9nID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNyZWF0ZSBbXSBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb250X2djX21lIDo9XG4gICAgICAgIFtcbiAgICAgICAgICBMd3RfcmVhY3QuUy5tYXBfc1xuICAgICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBzdGF0dXMgLT5cbiAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBlZmYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfZXZlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3RpdmVEYXRhLlJMaXN0LnNldCBzZXRfc3RhdGVfbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWZmaWNpZW5jeV9kZXRhaWwgfmN1cnJlbnRfZXZlbnQgZWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LnNldCBzZXRfc3RhdGVfbG9nIFtdIGluXG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsO1xuICAgICAgICBdXG4gICAgaW5cblxuICAgIFtcbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICA8ZGl2IGNsYXNzPVwicm93XCIgaWQ9XCJ8fVxuICAgICAgICAgIGlkXG4gICAgICAgICAge3xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIHx9XG4gICAgICAgICAgWyBldmVudF9wcm9ncmVzc19iYXIgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPmV2ZW50czwvZGl2PlxuICAgICA8L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRpbWVfcHJvZ3Jlc3NfYmFyICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj50aW1lPC9kaXY+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdHJhY2tlZF9ldmVudHNfY291bnQgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj5cbiAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRyYWNrZWRfZXZlbnRzX2xhYmVsICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ2aXNpYmxlLW1kLWJsb2NrIHZpc2libGUtbGctYmxvY2tcIj5cbnx9XG4gICAgICAgICAgWyBUeXhtbF9qcy5SLkh0bWwuZGl2IHN0YXRlX2xvZyBdXG4gICAgICAgICAge3xcbjwvZGl2PlxuPC9kaXY+XG4gICB8fV07XG4gICAgXVxuXG4gIGxldCBvbmxvYWQgKCkgPSAoKVxuZW5kXG5cbmxldCBzdG9wcGVkX2JvZHkgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWw1LmVsdCA9XG4gIGxldCBzdG9wcGVkX3JvdyA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgICAgfmFfY2xhc3M6WyBcImZvcm0tZ3JvdXBcIjsgXCJmb3JtLWdyb3VwLXNtXCIgXVxuICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQgXSk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTEgY29sLW1kLTIgY29sLXhzLTIgY29udHJvbC1sYWJlbFwiIGZvcj1cInx9XG4gICAgICAgICAgSW5wdXRQbG90UGVyaW9kLmlkXG4gICAgICAgICAge3xcIj5QbG90IHBlcmlvZDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLXhzLTNcIj58fVxuICAgICAgICAgIChJbnB1dFBsb3RQZXJpb2QuY29udGVudCAoKSlcbiAgICAgICAgICB7fDwvZGl2Pnx9XVxuICBpblxuICBsZXQgcGF1c2VkX3JvdyA9IEZvcm1QZXJ0dXJiYXRpb24uY29udGVudCAoKSBpblxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtY29udHJvbHNcIiBdXG4gICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQ7IFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgXVxuICAgIChbJWh0bWxcbiAgICAgICB7fFxuICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTEgY29sLXNtLTIgaGlkZGVuLXhzIGNvbnRyb2wtbGFiZWxcIiBmb3I9XCJ8fVxuICAgICAgICAgSW5wdXRQYXVzZUNvbmRpdGlvbi5pZFxuICAgICAgICAge3xcIj5QYXVzZSBpZjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLXNtLTMgY29sLXhzLTVcIj58fVxuICAgICAgICAgKElucHV0UGF1c2VDb25kaXRpb24uY29udGVudCAoKSlcbiAgICAgICAgIHt8PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgY29sLW1kLTggY29sLXhzLTdcIj58fVxuICAgICAgICAgKERpdkVycm9yTWVzc2FnZS5jb250ZW50ICgpKVxuICAgICAgICAge3w8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj58fVxuICAgICAgICAgWyBzdG9wcGVkX3JvdyBdIHt8PC9mb3JtPnx9XVxuICAgIDo6IHBhdXNlZF9yb3cpXG5cbmxldCBpbml0aWFsaXppbmdfYm9keSAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICB+YV9jbGFzczpbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLWNvbnRyb2xzXCIgXVxuICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5JTklUQUxJWklORyBdKTtcbiAgICAgIF1cbiAgICBbIEh0bWwuZW50aXR5IFwibmJzcFwiIF1cblxubGV0IHJ1bm5pbmdfYm9keSAoKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgfmFfY2xhc3M6WyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1jb250cm9sc1wiIF1cbiAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUlVOTklORyBdKTtcbiAgICAgIF1cbiAgICAoUnVubmluZ1BhbmVsTGF5b3V0LmNvbnRlbnQgKCkpXG5cbmxldCBmb290ZXIgKCkgPVxuICBbJWh0bWxcbiAgICB7fFxuICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgfH1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTRcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvblN0YXJ0LmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25Db250aW51ZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uT3V0cHV0cy5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uVHJhY2UuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy00XCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25QYXVzZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC14cy0yXCI7IFwiY29sLXNtLTFcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRDsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25DbGVhci5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTFcIjsgXCJjb2wteHMtM1wiIF0gXVxuICAgICAgICAgIChEaXZTdGF0dXNJbmRpY2F0b3IuY29udGVudCAoKSBAIFsgSHRtbC5lbnRpdHkgXCJuYnNwXCIgXSk7XG4gICAgICBdXG4gICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3Byb2plY3QubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSZWFjdC5TLmNvbnN0IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gUmVhY3QuUy5jb25zdCBbIFwicGFuZWxcIjsgXCJwYW5lbC1kZWZhdWx0XCIgXSkpO1xuICAgICAgXVxuICAgIFsgc3RvcHBlZF9ib2R5ICgpOyBpbml0aWFsaXppbmdfYm9keSAoKTsgcnVubmluZ19ib2R5ICgpOyBmb290ZXIgKCkgXVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IEZvcm1QZXJ0dXJiYXRpb24ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IElucHV0UGF1c2VDb25kaXRpb24ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IElucHV0UGxvdFBlcmlvZC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gRGl2RXJyb3JNZXNzYWdlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25TdGFydC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uUGF1c2Uub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvbkNvbnRpbnVlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25UcmFjZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uT3V0cHV0cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uQ2xlYXIub25sb2FkICgpIGluXG4gIGxldCAoKSA9IERpdlN0YXR1c0luZGljYXRvci5vbmxvYWQgKCkgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb25sb2FkIChfIDogJ2EpIDogYm9vbCBKcy50ID1cbiAgbGV0ICgpID0gU3RhdGVfdWkub25sb2FkICgpIGluXG4gIGxldCBtYWluID0gVWlfY29tbW9uLmlkX2RvbSBcIm1haW5cIiBpblxuICBsZXQgKCkgPVxuICAgIERvbS5hcHBlbmRDaGlsZCBtYWluIChUeXhtbF9qcy5Ub19kb20ub2ZfZGl2IChQYW5lbF9wcm9qZWN0cy5jb250ZW50ICgpKSlcbiAgaW5cbiAgbGV0ICgpID0gRG9tLmFwcGVuZENoaWxkIG1haW4gKFBhbmVsX3RhYnMubmF2dGFicyAoKSkgaW5cbiAgbGV0ICgpID0gRG9tLmFwcGVuZENoaWxkIG1haW4gKFBhbmVsX3RhYnMubmF2Y29udGVudHMgKCkpIGluXG4gIGxldCAoKSA9XG4gICAgRG9tLmFwcGVuZENoaWxkIG1haW4gKFR5eG1sX2pzLlRvX2RvbS5vZl9kaXYgKFBhbmVsX3ByZWZlcmVuY2VzLmNvbnRlbnQgKCkpKVxuICBpblxuXG4gIGxldCAoKSA9IFBhbmVsX3Byb2plY3RzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBQYW5lbF90YWJzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlcy5vbmxvYWQgKCkgaW5cblxuICBsZXQgXyA9XG4gICAgRG9tX2h0bWwud2luZG93IyMub25yZXNpemUgOj1cbiAgICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJvamVjdHMub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF90YWJzLm9ucmVzaXplICgpIGluXG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJlZmVyZW5jZXMub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgSnMuX3RydWVcblxubGV0IF8gPSBEb21faHRtbC53aW5kb3cjIy5vbmxvYWQgOj0gRG9tX2h0bWwuaGFuZGxlciBvbmxvYWRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJKc1NpbS5iYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJuYW1lcyI6WyJjYW1sX2ludDY0X2lzX3plcm8iLCJ4IiwiY2FtbF9zdHJfcmVwZWF0IiwibiIsInMiLCJyIiwibCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiTWF0aCIsImNhbWxfcmFpc2VfY29uc3RhbnQiLCJ0YWciLCJjYW1sX2dsb2JhbF9kYXRhIiwiY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSIsIk1sSW50NjQiLCJsbyIsIm1pIiwiaGkiLCJ0aGlzIiwieGhpIiwiaCIsInNpZ24iLCJvZmZzZXQiLCJtb2R1bHVzIiwiZGl2aXNvciIsInF1b3RpZW50IiwieSIsInEiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50NjRfaXNfbmVnYXRpdmUiLCJjYW1sX2ludDY0X25lZyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInVuZGVmaW5lZCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiaSIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImZtdCIsImxlbiIsImYiLCJjIiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwidCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJiIiwiYzEiLCJjMiIsInYiLCJqIiwiU3RyaW5nIiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsInVuaXhfZXJyb3IiLCJtYWtlX3VuaXhfZXJyX2FyZ3MiLCJjb2RlIiwic3lzY2FsbCIsImVycm5vIiwidmFyaWFudCIsIm51bGwiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImEiLCJjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIiwiTWxCeXRlcyIsImNvbnRlbnRzIiwibGVuZ3RoIiwiY29udGVudCIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9qc2J5dGVzIiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52Iiwic2hpZnRfcmlnaHRfbmF0IiwibmF0MSIsIm9mczEiLCJsZW4xIiwibmF0MiIsIm9mczIiLCJuYml0cyIsIndyYXAiLCJjYW1sX2dyX3N0YXRlIiwiY2FtbF9ncl9zdGF0ZV9nZXQiLCJjYW1sX2dyX3BvaW50X2NvbG9yIiwiaW0iLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9ydW50aW1lX3dhcm5pbmdzIiwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyIsImJvb2wiLCJjYW1sX2NsYXNzaWZ5X2Zsb2F0IiwiaXNGaW5pdGUiLCJpc05hTiIsImNhbWxfbWxfY2hhbm5lbHMiLCJjYW1sX3JlZmlsbCIsImNoYW4iLCJzdHIiLCJzdHJfYSIsIm5yZWFkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2hhbmlkIiwicHJldl9tYXgiLCJjYW1sX2djX21pbm9yIiwidW5pdCIsImNhbWxfbWxfY29uZGl0aW9uX25ldyIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJiYSIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX2ludDY0X29mX2J5dGVzIiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiZSIsImNhbWxfY3JlYXRlX2ZpbGUiLCJqc29vX2NyZWF0ZV9maWxlIiwiY2FtbF9mc19pbml0IiwidG1wIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsInciLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwiZyIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImFyZ3VtZW50cyIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX29ial91cGRhdGVfdGFnIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nIiwiY2FtbF9nY19jb3VudGVycyIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX3VuaXhfY2xvc2VkaXIiLCJkaXJfaGFuZGxlIiwiY2FtbF91bml4X29wZW5kaXIiLCJjYW1sX3VuaXhfcmV3aW5kZGlyIiwibmV3X2Rpcl9oYW5kbGUiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsIkluZmluaXR5IiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJleHAiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsImNhbWxfaW50MzJfdW5tYXJzaGFsIiwiY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJudW0iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJOdW1iZXIiLCJjYW1sX2ludF9jb21wYXJlIiwiY2FtbF9zdHJpbmdfY29tcGFyZSIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfY29tcGFyZV92YWwiLCJzdGFjayIsInRhZ19hIiwidGFnX2IiLCJjYW1sX2dyZWF0ZXJ0aGFuIiwiZGl2X2hlbHBlciIsInoiLCJkaXZfZGlnaXRfbmF0IiwibmF0cSIsIm9mc3EiLCJuYXRyIiwib2ZzciIsInJlbSIsIm51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCIsInNoaWZ0X2xlZnRfbmF0IiwiTWxOYXQiLCJjcmVhdGVfbmF0IiwiYXJyIiwic2V0X3RvX3plcm9fbmF0IiwiaW5jcl9uYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsImxlbjIiLCJuYXRfb2ZfYXJyYXkiLCJtdWx0X2RpZ2l0X25hdCIsIm5hdDMiLCJvZnMzIiwieDEiLCJ4MiIsIngzIiwiZGVjcl9uYXQiLCJib3Jyb3ciLCJzdWJfbmF0IiwiY29tcGFyZV9uYXQiLCJkaXZfbmF0IiwicXVvIiwiY2FtbF9iYV9ibGl0Iiwic3JjIiwiZHN0IiwiaXNfZGlnaXRfaW50IiwiY2FtbF9pbnQ2NF9kaXYiLCJjYW1sX2pzX2h0bWxfZW50aXRpZXMiLCJlbnRpdHkiLCJ0ZW1wIiwiZG9jdW1lbnQiLCJjYW1sX3N0cmluZ191bnNhZmVfc2V0IiwiY2FtbF9pbnQ2NF9vZl9mbG9hdCIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYXJndiIsIm1haW4iLCJhcmd2IiwiYXJnczIiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfanNfZXZhbF9zdHJpbmciLCJldmFsIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9vb19sYXN0X2lkIiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX2dyX2ZpbGxfcmVjdCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsInBvczEiLCJiYTIiLCJwb3MyIiwic2xpY2UiLCJjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUiLCJqc25hbWUiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQiLCJjYW1sX2JhX3VpbnQ4X2dldDE2IiwiY2FtbF9jb21wYXJlIiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJoaCIsImlpIiwiY2FtbF9NRDVVcGRhdGUiLCJjdHgiLCJpbnB1dCIsImlucHV0X2xlbiIsImluX2J1ZiIsImlucHV0X3BvcyIsIm1pc3NpbmciLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImN1cnNvciIsImNhbGxiYWNrcyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iYV9nZXRfMSIsImNhbWxfYmlnc3RyaW5nX21lbWNtcCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfZXJmX2Zsb2F0IiwiYTEiLCJhMiIsImEzIiwiYTQiLCJhNSIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoIiwiY2FtbF9zdHJfaW5pdGlhbGl6ZSIsImNhbWxfb2JqX2Jsb2NrIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImJpZ3N0cmluZ190b19hcnJheV9idWZmZXIiLCJicyIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX2dyX3Bsb3QiLCJjb2xvciIsImNhbWxfYnl0ZXNfc2V0NjQiLCJpNjQiLCJjYW1sX3N0cmluZ19zZXQxNiIsImkxNiIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX2djX21ham9yIiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJzdGF0ZSIsImJhc2UiLCJiYWNrdHJrIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9sZXNzZXF1YWwiLCJjYW1sX2Fjb3NoX2Zsb2F0IiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJVaW50MzJBcnJheSIsImNhbWxfbWxfZmx1c2giLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dF82NCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjYW1sX2djX3NldCIsImNhbWxfanNfZ2V0IiwiY2FtbF91bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9tbF9zZXRfYnVmZmVyZWQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfbWxfYnl0ZXNfY29udGVudCIsImNhbWxfaGFzaF9taXhfYnl0ZXMiLCJjYW1sX2hhc2giLCJjb3VudCIsImxpbWl0Iiwic2VlZCIsIm9iaiIsInF1ZXVlIiwicmQiLCJ3ciIsIkJhc2VfaGFzaF9zdHJpbmciLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2VwaGVfZ2V0X2tleSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJEYXRlIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJjYW1sX3N5c19mZHMiLCJjYW1sX3N5c19jbG9zZSIsImNhbWxfbWxfY2xvc2VfY2hhbm5lbCIsIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViIiwiZXhwb25lbnQiLCJvbmUiLCJtdWwiLCJjYW1sX2F0b21pY19leGNoYW5nZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfanNfc2V0IiwiY2FtbF9hcnJheV9nZXQiLCJhcnJheSIsImluZGV4IiwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjIiwiY29udCIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwibXV0ZXgiLCJpZCIsImNhbWxfdW5peF9ta2RpciIsInBlcm0iLCJjYW1sX2ludDY0X3NoaWZ0X2xlZnQiLCJjYW1sX25vdGVxdWFsIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIiwiY2FtbF9pc19qcyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXQiLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQiLCJjYW1sX2JhX2RpbSIsImNhbWxfYmFfZGltXzEiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX2J5dGVzX3Vuc2FmZV9nZXQiLCJjYW1sX2J5dGVzX2dldDY0IiwiY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIiLCJldmVudF9uYW1lIiwiZXZlbnRfdGFnIiwiZXZlbnRfdHlwZSIsImNhbWxfdW5peF9oYXNfc3ltbGluayIsImNhbWxfZXBoZV9zZXRfa2V5IiwiT2JqZWN0IiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIiwiQmFzZV9hbV90ZXN0aW5nIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsInBhcnNlSW50IiwiY2FtbF9zeXNfZ2V0Y3dkIiwiY2FtbF9pbnQ2NF9hZGQiLCJjYW1sX2ludDY0X211bCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIiwiY2FtbF9wYXJzZV9kaWdpdCIsImNhbWxfaW50NjRfb2Zfc3RyaW5nIiwiYmFzZTY0IiwidGhyZXNob2xkIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnQ2NF9vciIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsImdldCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsInN0IiwieDAiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9vdXRwdXRfdmFsIiwiV3JpdGVyIiwidmFsdWUiLCJub19zaGFyaW5nIiwiY2xvc3VyZXMiLCJjb25zb2xlIiwiaW50ZXJuX29ial90YWJsZSIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwib3BzIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwib2xkX3BvcyIsInR5cGVfb2ZfdiIsImNhbWxfc3RyaW5nX29mX2FycmF5IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9yYWlzZV9ub3RfYV9kaXIiLCJjYW1sX3N5c19zeXN0ZW1fY29tbWFuZCIsImNtZCIsImNoaWxkX3Byb2Nlc3MiLCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbiIsImNhbWxfdW5peF9nZXR1aWQiLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsImNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmciLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiVUludDhBcnJheVJlYWRlciIsImNhbWxfbWFyc2hhbF9kYXRhX3NpemUiLCJyZWFkdmxxIiwib3ZlcmZsb3ciLCJuNyIsImhlYWRlcl9sZW4iLCJkYXRhX2xlbiIsIk1sU3RyaW5nUmVhZGVyIiwiY2FtbF9kZWNvbXByZXNzX2lucHV0IiwiY2FtbF9mbG9hdF9vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIiLCJtYWdpYyIsImNvbXByZXNzZWQiLCJ1bmNvbXByZXNzZWRfZGF0YV9sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlIiwiYmxvY2siLCJjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcCIsImNhbWxfYXRvbWljX2NhcyIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX2F0b21pY19sb2FkIiwiY2FtbF9NRDVGaW5hbCIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9iYV9zZXRfZ2VuZXJpYyIsImNhbWxfbWxfY29uZGl0aW9uX3dhaXQiLCJtdXRleHQiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImJpdHMiLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW4iLCJjYW1sX2ludDY0X2FuZCIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZnMiLCJmZDIiLCJNbEZha2VGZF9vdXQiLCJjYW1sX3N5c19vcGVuX2ludGVybmFsIiwiaWR4IiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsIkVycm9yIiwicmVfc2VhcmNoX2JhY2t3YXJkIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfbWxfb3V0cHV0X3RhIiwiY2FtbF9iYV9zdWIiLCJjaGFuZ2VkX2RpbSIsIm5ld19kaW1zIiwibmV3X2RhdGEiLCJjYW1sX2djX2Z1bGxfbWFqb3IiLCJjYW1sX21sX211dGV4X3RyeV9sb2NrIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF91bml4X2dtdGltZSIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfZ3JfY3VycmVudF94IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IiwidGEiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfZnVuY3Rpb25fYXJpdHkiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2RpbV8zIiwiY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbiIsImNhbWxfZm9ybWF0X2V4Y2VwdGlvbiIsImJ1Y2tldCIsInN0YXJ0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50IiwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4IiwiY2FtbF9jcmVhdGVfc3RyaW5nIiwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IiwiY2FtbF9tZDVfY2hhbiIsInRvcmVhZCIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwiLCJjYW1sX3VuaXhfZmluZG5leHQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9tbF9kb21haW5faWQiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSIsImNhbWxfdHJhbXBvbGluZV9yZXR1cm4iLCJjYW1sX21sX2lzX2J1ZmZlcmVkIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHoiLCJjYW1sX2FycmF5X2FwcGVuZCIsImwxIiwibDIiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfanNfZXhwciIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwibGVuZ3RoX25hdCIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQiLCJjYW1sX2lzX3ByaW50YWJsZSIsImNhbWxfYnl0ZXNfbGVzc2VxdWFsIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfZXF1YWwiLCJyZV9wYXJ0aWFsX21hdGNoIiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJhbGxfZmluYWxpemVycyIsImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUiLCJjYiIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsInByZXYiLCJjYW1sX21hcnNoYWxfY29uc3RhbnRzIiwiY2FtbF9vYmpfcmF3X2ZpZWxkIiwiY2FtbF9qc19lcXVhbHMiLCJjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ncl9hcmNfYXV4IiwiY3giLCJjeSIsInJ5IiwicngiLCJyb3QiLCJ4UG9zIiwieVBvcyIsInhQb3NfcHJldiIsInlQb3NfcHJldiIsInNwYWNlIiwiZGVsdGEiLCJjYW1sX2dyX2ZpbGxfYXJjIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9hbGxvY19kdW1teV9pbmZpeCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2djX21ham9yX3NsaWNlIiwid29yayIsImNhbWxfanNfcHVyZV9leHByIiwiY29tcGFyZV9kaWdpdHNfbmF0IiwiY2FtbF9tbF9pbnB1dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3NpZ2lvX2hhbmRsZXIiLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwiY2FtbF9yZWNvcmRfYmFja3RyYWNlIiwiY2FtbF91bml4X2NsZWFudXAiLCJjYW1sX3N5c19nZXRfY29uZmlnIiwiY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIiwiY2FtbF9vYmpfaXNfc2hhcmVkIiwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCIsImNhbWxfYXNpbmhfZmxvYXQiLCJjYW1sX3Bvc19vdXQiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJjYW1sX21vZCIsImNhbWxfYmFfaW5pdCIsImNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQiLCJyZV9zdHJpbmdfbWF0Y2giLCJCaWdTdHJpbmdSZWFkZXIiLCJjYW1sX2dyX2R1bXBfaW1hZ2UiLCJjYW1sX2JhX2dldF9nZW5lcmljIiwiY2FtbF91bml4X3N0YXJ0dXAiLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9mb3JtYXRfZmxvYXQiLCJ0b0ZpeGVkIiwiZHAiLCJwcmVjIiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsImNhbWxfc3RyaW5nX2xlc3N0aGFuIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4iLCJjYW1sX2RpdiIsImNhbWxfb2JqX2R1cCIsImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5IiwiY2FtbF9tZW1wcm9mX3N0YXJ0IiwicmF0ZSIsInN0YWNrX3NpemUiLCJ0cmFja2VyIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX21sX2RvbWFpbl9zZXRfbmFtZSIsIl9uYW1lIiwiY2FtbF9qc190b19ib29sIiwiY2FtbF9ncl9jcmVhdGVfaW1hZ2UiLCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5IiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX2J1aWxkX3N5bWJvbHMiLCJzeW1iIiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm5pZCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJjaGFubmVsIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfb2pzX25ld19hcnIiLCJGIiwiY29tcGxlbWVudF9uYXQiLCJjYW1sX2RvbWFpbl9kbHMiLCJjYW1sX2RvbWFpbl9kbHNfc2V0IiwiY2FtbF9vYmpfdGFnIiwiY2FtbF9sYXp5X3JlYWRfcmVzdWx0IiwiY2FtbF9qc19yZWdleHBzIiwiY2FtbF9qc19odG1sX2VzY2FwZSIsImNhbWxfYmFfZGltXzIiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3NpbmhfZmxvYXQiLCJjYW1sX2xkZXhwX2Zsb2F0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJsYW5kX2RpZ2l0X25hdCIsImNhbWxfaW50NjRfbW9kIiwiY2FtbF9vYmpfc2V0X3RhZyIsImNhbWxfaW50MzJfYnN3YXAiLCJjYW1sX2JhX3NldF8zIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwibnRoX2RpZ2l0X25hdF9uYXRpdmUiLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsImRpZ2l0IiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9jcmVhdGVfZnJvbSIsImRhdGExIiwiZGF0YTIiLCJqc3R5cCIsImNhbWxfdGFuaF9mbG9hdCIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsImNhbWxfZ3JfZHJhd19zdHIiLCJkeCIsImNhbWxfZ3JfZHJhd19zdHJpbmciLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJpbWFnZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3N0cmluZ19zZXQiLCJjYW1sX3N5c19ybWRpciIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfbWxfcG9zX291dCIsIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9iYV9jcmVhdGUiLCJkaW1zX21sIiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwidSIsImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5IiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2UiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2luaXRpYWxfdGltZSIsImNhbWxfc3lzX3RpbWUiLCJjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4iLCJCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3BvcyIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX3VuaXhfZ2V0cHd1aWQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJuZWciLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsImNhbWxfdW5peF9maW5kY2xvc2UiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJCYXNlX2hhc2hfZG91YmxlIiwiY2FtbF9qc19uZXciLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZm9ybWF0X2ludCIsImpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQiLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuIiwiY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4YyIsImh2YWwiLCJoZXhuIiwiaGVmZiIsImNhbWxfb2JqX3RydW5jYXRlIiwiY2FtbF9qc190b19zdHJpbmciLCJpc19kaWdpdF9vZGQiLCJjYW1sX3J1bnRpbWVfdmFyaWFudCIsImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCIsImJ1ZmZlcmVkIiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJkb2MiLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2xvZzFwX2Zsb2F0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvciIsImNhbWxfbGF6eV9tYWtlX2ZvcndhcmQiLCJsb3JfZGlnaXRfbmF0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl93aW5kb3dfaWQiLCJjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwiLCJzZXRfZGlnaXRfbmF0IiwiY2FtbF9ieXRlc19zZXQxNiIsImNhbWxfZ3JfZG9jX29mX3N0YXRlIiwiY2FtbF9tbF9vdXRwdXRfaW50IiwiY2FtbF9vYmpfd2l0aF90YWciLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZSIsImV2ZW50IiwiZXZlbnRfY29udGVudCIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfc3lzX2FyZ3YiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX21vZGZfZmxvYXQiLCJjYW1sX2djX2dldCIsImNhbWxfZmxvYXRfY29tcGFyZSIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCIsImNhbWxfanNvb19mbGFnc19lZmZlY3RzIiwiY2FtbF91cGRhdGVfZHVtbXkiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX3N5c19ta2RpciIsImNhbWxfc3RyaW5nX25vdGVxdWFsIiwiY2FtbF9ieXRlc19ncmVhdGVydGhhbiIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX3JlYWRfZmlsZV9jb250ZW50IiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJvcmlnaW4iLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJtYWtlIiwidiIsImdldCIsInIiLCJzZXQiLCJleGNoYW5nZSIsImN1ciIsImNvbXBhcmVfYW5kX3NldCIsInNlZW4iLCJmZXRjaF9hbmRfYWRkIiwibiIsImluY3IiLCJkZWNyIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb25fZmxvYXQiLCJtYXhfaW50IiwibWluX2ludCIsInN5bWJvbCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkiLCJpJDAiLCJzdHJpbmdfb2ZfZmxvYXQiLCJmbG9hdF9vZl9zdHJpbmdfb3B0Iiwic3ltYm9sJDAiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX291dF9nZW4iLCJtb2RlIiwicGVybSIsIm5hbWUiLCJjIiwib3Blbl9vdXQiLCJvcGVuX291dF9iaW4iLCJmbHVzaF9hbGwiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiYWNjdSIsImJlZyIsImFjY3UkMCIsInJlcyIsImNsb3NlX2luX25vZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wkMSIsInN0cjIiLCJzdHIxIiwiZXhpdF9mdW5jdGlvbiIsImF0X2V4aXQiLCJmX3lldF90b19ydW4iLCJvbGRfZXhpdCIsImZfeWV0X3RvX3J1biQwIiwib2xkX2V4aXQkMCIsIm5ld19leGl0Iiwic3VjY2VzcyIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaW5hcnlfaW50Iiwic2Vla19vdXQiLCJwb3Nfb3V0Iiwib3V0X2NoYW5uZWxfbGVuZ3RoIiwic2V0X2JpbmFyeV9tb2RlX291dCIsImlucHV0X2NoYXIiLCJpbnB1dF9ieXRlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X3ZhbHVlIiwic2Vla19pbiIsInBvc19pbiIsImluX2NoYW5uZWxfbGVuZ3RoIiwiY2xvc2VfaW4iLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQiLCJzZXExIiwic2VxMiIsIm1hcCIsInNlcSIsImZpbHRlcl9tYXAiLCJzZXEkMCIsImZpbHRlciIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsIml0ZXIiLCJ1bmZvbGQiLCJ1IiwidSQwIiwibm9uZSIsInNvbWUiLCJ2YWx1ZSIsIm8iLCJkZWZhdWx0JDAiLCJiaW5kIiwiam9pbiIsImZvbGQiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsIiwiZXEiLCJvMCIsIm8xIiwidjEiLCJ2MCIsImNvbXBhcmUiLCJjbXAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwibGVmdCIsInJpZ2h0IiwiaXNfbGVmdCIsImlzX3JpZ2h0IiwiZmluZF9sZWZ0IiwiZmluZF9yaWdodCIsIm1hcF9sZWZ0IiwiZSIsIm1hcF9yaWdodCIsInYkMCIsImUxIiwiZTIiLCJ2MiIsInYxJDAiLCJ2MiQwIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJlc2NhcGVkIiwicyQwIiwibG93ZXJjYXNlIiwidXBwZXJjYXNlIiwibG93ZXJjYXNlX2FzY2lpIiwidXBwZXJjYXNlX2FzY2lpIiwiYzEiLCJjMiIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJsb19ib3VuZCIsImhpX2JvdW5kIiwiYm9tIiwicmVwIiwic3VjYyIsInByZWQiLCJpc192YWxpZCIsIm9mX2ludCIsImlzX2NoYXIiLCJvZl9jaGFyIiwidG9fY2hhciIsInVuc2FmZV90b19jaGFyIiwiaGFzaCIsImxlbmd0aCIsImwkMCIsIm50aCIsIm4kMCIsImwkMSIsIm4kMSIsIm50aF9vcHQiLCJyZXZfYXBwZW5kIiwibDEkMCIsImwyJDAiLCJsMSQxIiwibDIkMSIsInJldiIsImluaXRfYXV4IiwicmV2X2luaXRfdGhyZXNob2xkIiwiaW5pdCIsImZsYXR0ZW4iLCJtYXBpIiwicmV2X21hcCIsIml0ZXJpIiwiYWNjdSQxIiwiZm9sZF9yaWdodCIsIm1hcDIiLCJhMiIsImExIiwicmV2X21hcDIiLCJpdGVyMiIsImZvbGRfbGVmdDIiLCJmb2xkX3JpZ2h0MiIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwibWVtIiwibWVtcSIsImFzc29jIiwiYXNzb2Nfb3B0IiwiYXNzcSIsImFzc3Ffb3B0IiwibWVtX2Fzc29jIiwibWVtX2Fzc3EiLCJyZW1vdmVfYXNzb2MiLCJwYWlyIiwicmVtb3ZlX2Fzc3EiLCJmaW5kIiwiZmluZF9vcHQiLCJmaW5kX21hcCIsInJlc3VsdCIsImZpbmRfYWxsIiwiZmlsdGVyaSIsImNvbmNhdF9tYXAiLCJ4cyIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJwYXJ0aXRpb24iLCJ5ZXMiLCJubyIsInBhcnRpdGlvbl9tYXAiLCJzcGxpdCIsInJ5IiwicngiLCJjb21iaW5lIiwibWVyZ2UiLCJ0MiIsImgyIiwidDEiLCJoMSIsInN0YWJsZV9zb3J0Iiwic29ydCIsIngyIiwieDEiLCJ0bCQxIiwieDMiLCJ4MiQwIiwieDEkMCIsIm4xIiwibjIiLCJyZXZfc29ydCIsInRsJDAiLCJzb3J0X3VuaXEiLCJjJDAiLCJjJDEiLCJjJDIiLCJjJDMiLCJjJDQiLCJjJDUiLCJjJDYiLCJhY2N1JDIiLCJjb21wYXJlX2xlbmd0aHMiLCJjb21wYXJlX2xlbmd0aF93aXRoIiwiYXV4IiwidGFpbCIsIm9mX3NlcSIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsImoiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImkkMSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsImNhcGl0YWxpemUiLCJ1bmNhcGl0YWxpemUiLCJ0b19zZXFpIiwibmV3X2xlbiIsIm5ld19idWYiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDY0X2xlIiwic2V0X2ludDY0X2JlIiwic2V0X3VpbnQ4Iiwic2V0X3VpbnQxNl9uZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiaGVhZGVyX3NpemUiLCJkYXRhX3NpemUiLCJ0b3RhbF9zaXplIiwiZnJvbV9ieXRlcyIsImZyb21fc3RyaW5nIiwiaXNfYmxvY2siLCJkb3VibGVfZmllbGQiLCJzZXRfZG91YmxlX2ZpZWxkIiwibWFyc2hhbCIsIm9iaiIsInVubWFyc2hhbCIsImN1c3RvbV90YWciLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJpbnRfdGFnIiwib3V0X29mX2hlYXBfdGFnIiwidW5hbGlnbmVkX3RhZyIsImluZm8iLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJleHRlbnNpb25fY29uc3RydWN0b3IiLCJleHRlbnNpb25fbmFtZSIsImV4dGVuc2lvbl9pZCIsIm1heF9lcGhlX2xlbmd0aCIsImNyZWF0ZSIsInJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IiwibXNnIiwiZ2V0X2tleSIsImdldF9rZXlfY29weSIsInNldF9rZXkiLCJ1bnNldF9rZXkiLCJjaGVja19rZXkiLCJibGl0X2tleSIsIm8yIiwibWFrZV9mbG9hdCIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImxhIiwibGIiLCJyZXMkMCIsImxpc3RfbGVuZ3RoIiwidCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJiMCIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJpJDYiLCJlJDEiLCJpJDQiLCJlJDAiLCJpJDUiLCJqJDAiLCJpJDIiLCJpJDMiLCJmYXRoZXIiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJkIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwicGkiLCJpc19pbnRlZ2VyIiwibWluX21heCIsIm1pbl9udW0iLCJtYXhfbnVtIiwibWluX21heF9udW0iLCJ1bnNhZmVfZmlsbCIsImNoZWNrIiwiaGxlbiIsInNyYyIsInNvZnMiLCJkb2ZzIiwiaCIsIm1lbV9pZWVlIiwibWFwX3RvX2FycmF5IiwibWFwX2Zyb21fYXJyYXkiLCJtYXhfaW50JDAiLCJ1bnNpZ25lZF90b19pbnQiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwib3B0IiwicmVhZF9mdW4iLCJzdGgiLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhY3Rpb24iLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwiaXNfZW1wdHkiLCJyZW1vdmUiLCJ1bmlvbiIsInIyIiwicjIkMCIsInIxJDAiLCJpbnRlciIsInNwbGl0X2JpcyIsImRpc2pvaW50IiwiY29uc19lbnVtIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwic3Vic2V0IiwicHYiLCJsZiIsImx0IiwicmYiLCJydCIsImNhcmRpbmFsIiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJmaW5kX2ZpcnN0IiwidjAkMSIsInYwJDAiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJ0cnlfam9pbiIsInYkMSIsIngwIiwibCQzIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJkMCQxIiwiZDAiLCJkMCQwIiwibWluX2JpbmRpbmciLCJtaW5fYmluZGluZ19vcHQiLCJtYXhfYmluZGluZyIsIm1heF9iaW5kaW5nX29wdCIsInJlbW92ZV9taW5fYmluZGluZyIsInVwZGF0ZSIsImRhdGEkMCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiY2xlYXIiLCJwdXNoIiwicG9wIiwicG9wX29wdCIsInRvcCIsInRvcF9vcHQiLCJjZWxsIiwibWF0Y2giLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSIsInRha2Vfb3B0IiwiY2VsbCQwIiwicV9yZXMiLCJwcmV2IiwicHJldiQwIiwidHJhbnNmZXIiLCJxMSIsInEyIiwicmFpc2VfdW5kZWZpbmVkIiwiZm9yY2VfbGF6eV9ibG9jayIsImJsayIsImNsb3N1cmUiLCJmb3JjZV92YWxfbGF6eV9ibG9jayIsImZvcmNlIiwibHp2IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcF92YWwiLCJjb3VudCIsImZpbGxfYnVmZiIsImdldF9kYXRhIiwiZDExIiwiYSQwIiwiYSQxIiwicGVla19kYXRhIiwianVua19kYXRhIiwianVuayIsIm5nZXRfZGF0YSIsImFsIiwibnBlZWsiLCJzdHJtIiwiZnJvbSIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wIiwiZHVtcF9kYXRhIiwiY29udGVudHMiLCJyZXNldCIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsImFkZF91dGZfOF91Y2hhciIsInBvcyQxIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaGkiLCJsbyIsImFkZF91dGZfMTZsZV91Y2hhciIsImFkZF9zdWJzdHJpbmciLCJvZmZzZXQiLCJuZXdfcG9zaXRpb24iLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2J1ZmZlciIsImJzIiwiYWRkX2NoYW5uZWwiLCJ0b19yZWFkJDEiLCJhbHJlYWR5X3JlYWQiLCJ0b19yZWFkIiwiYWxyZWFkeV9yZWFkJDAiLCJ0b19yZWFkJDAiLCJvdXRwdXRfYnVmZmVyIiwiYWRkX3N1YnN0aXR1dGUiLCJsaW0kMSIsInByZXZpb3VzIiwicHJldmlvdXMkMCIsInN0YXJ0JDAiLCJvcGVuaW5nIiwibGltJDAiLCJzdG9wJDAiLCJrJDIiLCJjbG9zaW5nIiwic3RvcCIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwiaSQ3IiwiaSQ4IiwidHJ1bmNhdGUiLCJhZGRfaW50OCIsImFkZF9pbnQxNl9uZSIsImFkZF9pbnQzMl9uZSIsImFkZF9pbnQ2NF9uZSIsImFkZF9pbnQxNl9sZSIsImFkZF9pbnQxNl9iZSIsImFkZF9pbnQzMl9sZSIsImFkZF9pbnQzMl9iZSIsImFkZF9pbnQ2NF9sZSIsImFkZF9pbnQ2NF9iZSIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImNyZWF0ZV9jaGFyX3NldCIsImFkZF9pbl9jaGFyX3NldCIsInN0cl9pbmQiLCJtYXNrIiwiZnJlZXplX2NoYXJfc2V0IiwicmV2X2NoYXJfc2V0IiwiY2hhcl9zZXQkMCIsImlzX2luX2NoYXJfc2V0IiwicGFkX29mX3BhZF9vcHQiLCJwYWRfb3B0Iiwid2lkdGgiLCJwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQiLCJmbXQiLCJwYWRfb3B0JDAiLCJwYWRfb3B0JDEiLCJwYWRfb3B0JDIiLCJwYWRfb3B0JDMiLCJwYWRfb3B0JDQiLCJwcmVjX29wdCIsInBhZF9vcHQkNSIsIm5kZWMiLCJwYWRfb3B0JDYiLCJwYWRfb3B0JDciLCJwYWRfb3B0JDgiLCJkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiIsImJ1ZmZlcl9jcmVhdGUiLCJpbml0X3NpemUiLCJidWZmZXJfY2hlY2tfc2l6ZSIsIm92ZXJoZWFkIiwibWluX2xlbiIsIm5ld19zdHIiLCJidWZmZXJfYWRkX2NoYXIiLCJidWZmZXJfYWRkX3N0cmluZyIsInN0cl9sZW4iLCJidWZmZXJfY29udGVudHMiLCJjaGFyX29mX2ljb252IiwiY2hhcl9vZl9mY29udiIsImNGIiwiYnByaW50X3BhZHR5IiwicGFkdHkiLCJicHJpbnRfaWdub3JlZF9mbGFnIiwiaWduX2ZsYWciLCJicHJpbnRfcGFkX29wdCIsImJwcmludF9wYWRkaW5nIiwicGFkdHkkMCIsImJwcmludF9wcmVjaXNpb24iLCJicHJpbnRfaWNvbnZfZmxhZyIsImJwcmludF9hbHRpbnRfZm10IiwiYnByaW50X2Zjb252X2ZsYWciLCJzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQiLCJzdHIkMCIsImJwcmludF9jaGFyX2xpdGVyYWwiLCJicHJpbnRfc3RyaW5nX2xpdGVyYWwiLCJicHJpbnRfZm10dHkiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJmbXR0eSQ0IiwiZm10dHkkNSIsImZtdHR5JDYiLCJmbXR0eSQ3IiwiZm10dHkkOCIsImZtdHR5JDkiLCJzdWJfZm10dHkiLCJmbXR0eSQxMCIsInN1Yl9mbXR0eSQwIiwiZm10dHkkMTEiLCJmbXR0eSQxMiIsImZtdHR5JDEzIiwiZm10dHkkMTQiLCJmbXR0eSQxNSIsImludF9vZl9jdXN0b21fYXJpdHkiLCJzdHJpbmdfb2ZfZm10IiwiZm10aXRlciIsImZtdCQwIiwiaWduX2ZsYWckMCIsInN0ciQxIiwic2V0JDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwiZm10dHlfcmVsX2RldCIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwidHJhbnMiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsInJlc3QxIiwicmVzdDIiLCJyZXN0MSQwIiwicmVzdDIkMCIsInJlc3QxJDEiLCJyZXN0MiQxIiwicmVzdDEkMiIsInJlc3QyJDIiLCJyZXN0MSQzIiwicmVzdDIkMyIsInJlc3QxJDQiLCJyZXN0MiQ0IiwicmVzdDEkNSIsInJlc3QyJDUiLCJyZXN0MSQ2IiwicmVzdDIkNiIsInJlc3QxJDciLCJ0eTEkMCIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QxJDgiLCJ0eTEyIiwidHkxMSIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImY0IiwiZjIiLCJyZXN0MSQ5IiwicmVzdDIkOSIsInJlc3QxJDEwIiwicmVzdDIkMTAiLCJyZXN0MSQxMSIsInJlc3QyJDExIiwicmVzdDEkMTIiLCJyZXN0MiQxMiIsInJlc3QxJDEzIiwicmVzdDIkMTMiLCJmbXR0eV9vZl9mbXQiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJ0eSQwIiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfZm9ybWF0IiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHkwIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXQkNiIsImZtdF9yZXN0JDYiLCJwcmVjJDUiLCJwYWQkOSIsInBhZCQxMCIsImZtdHR5X3Jlc3QkNiIsInByZWMkNiIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsInBhZCQxMSIsInBhZCQxMiIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdCQ4IiwiZm10X3Jlc3QkOCIsInBhZCQxMyIsInBhZCQxNCIsImZtdHR5X3Jlc3QkOCIsImZtdCQ5IiwiZm10X3Jlc3QkOSIsImZtdCQxMCIsImZtdF9yZXN0JDEwIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXQkMTIiLCJmbXR0eV9yZXN0JDkiLCJmbXRfcmVzdCQxMiIsImZtdCQxMyIsImZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdCQxNSIsImZtdHR5X3Jlc3QkMTIiLCJmbXRfcmVzdCQxNSIsImZtdCQxNiIsImZtdF9yZXN0JDE2IiwiZm10dHkkMTYiLCJmbXQkMTciLCJmbXRfcmVzdCQxNyIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTciLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOCIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDE5IiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJ0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGkiLCJmbXR0eSQyMSIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIwIiwiZm10JDIxIiwic3ViX2ZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCQwIiwic3ViX2ZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkNyIsInN1Yl9mbXR0eV9yZXN0JDgiLCJzdWJfZm10dHlfcmVzdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHlfcmVzdCQxMSIsInN1Yl9mbXR0eV9yZXN0JDEyIiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJzdWJfZm10dHlfcmVzdCQxNCIsInN1YjJfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNSIsInN1YjJfZm10dHkkMCIsInN1Yl9mbXR0eV9yZXN0JDE2Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJzdWJfZm10dHlfcmVzdCQxOSIsInN1Yl9mbXR0eV9yZXN0JDIwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJzdWJfZm10dHlfcmVzdCQyMiIsInN1Yl9mbXR0eV9yZXN0JDIzIiwic3ViX2ZtdHR5X3Jlc3QkMjQiLCJzdWJfZm10dHlfcmVzdCQyNSIsInN1Yl9mbXR0eV9yZXN0JDI2IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrYWNjIiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9pZ25vcmVkX3BhcmFtIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJyZXN0JDI2IiwicmVzdCQyNyIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJwYXJzZSIsImxpdF9zdGFydCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJ4JDEiLCJyJDMiLCJhcmckNCIsIngkMiIsInNwZWNzIiwiZiQ0IiwiYXJnJDUiLCJmJDUiLCJmJDYiLCJmJDciLCJhcmckNiIsIm5ld2FyZyIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIiwicGFyc2VfYXJndl9keW5hbWljIiwiY3VycmVudCQwIiwicGFyc2VfYXJndiIsIm1zZyQwIiwibXNnJDEiLCJwYXJzZV9keW5hbWljIiwicGFyc2VfZXhwYW5kIiwic2Vjb25kX3dvcmQiLCJsb29wIiwibWF4X2FyZ19sZW4iLCJrd2QiLCJyZXBsYWNlX2xlYWRpbmdfdGFiIiwiYWxpZ24iLCJsaW1pdCIsImNvbXBsZXRlZCIsImtzZCIsImN1dGNvbCQwIiwic3BhY2VzJDAiLCJzcGVjJDAiLCJjdXRjb2wiLCJrd2RfbGVuIiwic3BhY2VzIiwicmVhZF9hdXgiLCJmaWxlIiwid29yZHMiLCJzdGFzaCIsIndvcmQiLCJ3b3JkJDAiLCJyZWFkX2FyZyIsInJlYWRfYXJnMCIsIndyaXRlX2F1eCIsImFyZ3MiLCJ3cml0ZV9hcmciLCJ3cml0ZV9hcmcwIiwibG9jZm10IiwicHJpbnRlcnMiLCJmaWVsZCIsIm90aGVyX2ZpZWxkcyIsInVzZV9wcmludGVycyIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJwYXJhbSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDEiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biQwIiwid29ya19leG4iLCJ3b3JrX2J0IiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJjcmVhdGVfYWxhcm0iLCJkZWxldGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImZpbGVuYW1lIiwiZGlnZXN0IiwiY2hhcl9oZXgiLCJ0b19oZXgiLCJmcm9tX2hleCIsImRpZ2l0IiwibmV3X3N0YXRlIiwiYXNzaWduIiwic3QxIiwic3QyIiwiZnVsbF9pbml0Iiwic2VlZCIsInNlZWQkMCIsIm1ha2Vfc2VsZl9pbml0IiwiYml0cyIsImN1cnZhbCIsIm5ld3ZhbCIsIm5ld3ZhbDMwIiwiaW50YXV4IiwiaW50JDAiLCJib3VuZCIsImZ1bGxfaW50IiwiYjEiLCJiMiIsIm1heF9pbnRfMzIiLCJicG9zIiwiYjMiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsImJvb2wiLCJiaXRzJDAiLCJpbnQkMSIsImZ1bGxfaW50JDAiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsInNjYWxlIiwiYm9vbCQwIiwiZnVsbF9pbml0JDAiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiaW5pdGlhbF9zaXplIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsImZpbmRfaW5fYnVja2V0IiwicmVwbGFjZSIsInJlcGxhY2Vfc2VxIiwic3oiLCJoYXNoX3BhcmFtIiwic2VlZGVkX2hhc2giLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4IiwiY3JlYXRlJDAiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsInVua25vd24iLCJwcF9lbnF1ZXVlIiwidG9rZW4iLCJwcF9pbmZpbml0eSIsInBwX291dHB1dF9zdHJpbmciLCJwcF9vdXRwdXRfbmV3bGluZSIsImZvcm1hdF9wcF90ZXh0IiwidGV4dCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInJlYWxfaW5kZW50IiwiYnJlYWtfbGluZSIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwicHBfY2xvc2VfYm94IiwicHBfb3Blbl9zdGFnIiwicHBfY2xvc2Vfc3RhZyIsInBwX29wZW5fdGFnIiwicHBfY2xvc2VfdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwicHBfcHJpbnRfYXNfc2l6ZSIsInBwX3ByaW50X2FzIiwiaXNpemUiLCJwcF9wcmludF9zdHJpbmciLCJwcF9wcmludF9ieXRlcyIsInBwX3ByaW50X2ludCIsInBwX3ByaW50X2Zsb2F0IiwicHBfcHJpbnRfYm9vbCIsInBwX3ByaW50X2NoYXIiLCJwcF9vcGVuX2hib3giLCJwcF9vcGVuX3Zib3giLCJwcF9vcGVuX2h2Ym94IiwicHBfb3Blbl9ob3Zib3giLCJwcF9vcGVuX2JveCIsInBwX3ByaW50X25ld2xpbmUiLCJwcF9wcmludF9mbHVzaCIsInBwX2ZvcmNlX25ld2xpbmUiLCJwcF9wcmludF9pZl9uZXdsaW5lIiwicHBfcHJpbnRfY3VzdG9tX2JyZWFrIiwicHBfcHJpbnRfYnJlYWsiLCJwcF9wcmludF9zcGFjZSIsInBwX3ByaW50X2N1dCIsInBwX29wZW5fdGJveCIsInBwX2Nsb3NlX3Rib3giLCJwcF9wcmludF90YnJlYWsiLCJwcF9wcmludF90YWIiLCJwcF9zZXRfdGFiIiwicHBfc2V0X21heF9ib3hlcyIsInBwX2dldF9tYXhfYm94ZXMiLCJwcF9vdmVyX21heF9ib3hlcyIsInBwX3NldF9lbGxpcHNpc190ZXh0IiwicHBfZ2V0X2VsbGlwc2lzX3RleHQiLCJwcF9saW1pdCIsInBwX3NldF9tYXhfaW5kZW50IiwicHBfZ2V0X21heF9pbmRlbnQiLCJwcF9zZXRfbWFyZ2luIiwibmV3X21heF9pbmRlbnQiLCJ2YWxpZGF0ZV9nZW9tZXRyeSIsIm1hcmdpbiIsIm1heF9pbmRlbnQiLCJjaGVja19nZW9tZXRyeSIsImdlb21ldHJ5IiwicHBfZ2V0X21hcmdpbiIsInBwX3NldF9mdWxsX2dlb21ldHJ5IiwicHBfc2V0X2dlb21ldHJ5IiwicHBfc2FmZV9zZXRfZ2VvbWV0cnkiLCJwcF9nZXRfZ2VvbWV0cnkiLCJwcF91cGRhdGVfZ2VvbWV0cnkiLCJwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGkiLCJwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGkiLCJkaXNwbGF5X25ld2xpbmUiLCJibGFua19saW5lIiwiZGlzcGxheV9ibGFua3MiLCJwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwiZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnIiwiZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWciLCJkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyIsInBwX21ha2VfZm9ybWF0dGVyIiwicHBfcXVldWUiLCJzeXNfdG9rIiwic2Nhbl9zdGFjayIsInBwX21hcmdpbiIsImZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIiwib3V0X2Z1bnMiLCJtYWtlX2Zvcm1hdHRlciIsInBwZiIsImZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCIsImZvcm1hdHRlcl9vZl9idWZmZXIiLCJwcF9idWZmZXJfc2l6ZSIsInBwX21ha2VfYnVmZmVyIiwic3RkYnVmIiwic3RkX2Zvcm1hdHRlciIsImVycl9mb3JtYXR0ZXIiLCJzdHJfZm9ybWF0dGVyIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3RhZyIsImNsb3NlX3RhZyIsIm9wZW5fc3RhZyIsImNsb3NlX3N0YWciLCJwcmludF9hcyIsInByaW50X2Jvb2wiLCJwcmludF9icmVhayIsInByaW50X2N1dCIsInByaW50X3NwYWNlIiwiZm9yY2VfbmV3bGluZSIsInByaW50X2ZsdXNoIiwicHJpbnRfaWZfbmV3bGluZSIsIm9wZW5fdGJveCIsImNsb3NlX3Rib3giLCJwcmludF90YnJlYWsiLCJzZXRfdGFiIiwicHJpbnRfdGFiIiwic2V0X21hcmdpbiIsImdldF9tYXJnaW4iLCJzZXRfbWF4X2luZGVudCIsImdldF9tYXhfaW5kZW50Iiwic2V0X2dlb21ldHJ5Iiwic2FmZV9zZXRfZ2VvbWV0cnkiLCJnZXRfZ2VvbWV0cnkiLCJ1cGRhdGVfZ2VvbWV0cnkiLCJzZXRfbWF4X2JveGVzIiwiZ2V0X21heF9ib3hlcyIsIm92ZXJfbWF4X2JveGVzIiwic2V0X2VsbGlwc2lzX3RleHQiLCJnZXRfZWxsaXBzaXNfdGV4dCIsInNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMiLCJzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsInNldF9wcmludF90YWdzIiwiZ2V0X3ByaW50X3RhZ3MiLCJzZXRfbWFya190YWdzIiwiZ2V0X21hcmtfdGFncyIsInNldF90YWdzIiwicHBfcHJpbnRfbGlzdCIsInBwX3YiLCJvcHQkMCIsInBwX3NlcCIsIm9wdCQxIiwicHBfcHJpbnRfc2VxIiwic2VxJDEiLCJzZXEkMiIsInBwX3ByaW50X3RleHQiLCJwcF9wcmludF9vcHRpb24iLCJwcF9wcmludF9yZXN1bHQiLCJwcF9wcmludF9laXRoZXIiLCJjb21wdXRlX3RhZyIsInRhZ19hY2MiLCJvdXRwdXRfZm9ybWF0dGluZ19saXQiLCJidHkiLCJwJDYiLCJwJDciLCJzaXplJDEiLCJwJDgiLCJrZHByaW50ZiIsImRwcmludGYiLCJrYXNwcmludGYiLCJhc3ByaW50ZiIsImZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMiLCJwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnUiLCJwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnUiLCJzZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3QiLCJnZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3QiLCJwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMiLCJzdHJpbmdpZnkiLCJwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMiLCJmdW5zIiwibWFya19vcGVuX3RhZyIsIm1hcmtfY2xvc2VfdGFnIiwicHJpbnRfb3Blbl90YWciLCJwcmludF9jbG9zZV90YWciLCJzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMiLCJudWxsX2NoYXIiLCJuZXh0X2NoYXIiLCJpYiIsInBlZWtfY2hhciIsImNoZWNrZWRfcGVla19jaGFyIiwiZW5kX29mX2lucHV0IiwiYmVnaW5uaW5nX29mX2lucHV0IiwibmFtZV9vZl9pbnB1dCIsImNoYXJfY291bnQiLCJpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciIsInRva2VuX3N0cmluZyIsInRva2VuX2J1ZmZlciIsInNraXBfY2hhciIsImlnbm9yZV9jaGFyIiwic3RvcmVfY2hhciIsImRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUiLCJpbmFtZSIsInNjYW5fY2xvc2VfYXRfZW5kIiwic2Nhbl9yYWlzZV9hdF9lbmQiLCJmcm9tX2ljIiwic2Nhbl9jbG9zZV9pYyIsImVvZiIsIm9wZW5faW5fZmlsZSIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsInNjYW5fYmluYXJ5X2ludCIsImlzX29jdGFsX2RpZ2l0Iiwic2Nhbl9vY3RhbF9pbnQiLCJpc19oZXhhX2RpZ2l0Iiwic2Nhbl9oZXhhZGVjaW1hbF9pbnQiLCJzY2FuX3NpZ24iLCJzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWwiLCJzY2FuX2ludF9jb252ZXJzaW9uIiwic2Nhbl9mcmFjdGlvbmFsX3BhcnQiLCJzY2FuX2V4cG9uZW50X3BhcnQiLCJzY2FuX2Zsb2F0IiwicHJlY2lzaW9uIiwicHJlY2lzaW9uJDAiLCJjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyIsInNjYW5faGV4X2Zsb2F0Iiwid2lkdGgkNCIsIndpZHRoJDUiLCJ3aWR0aCQ2Iiwid2lkdGgkMTAiLCJ3aWR0aCQ3Iiwid2lkdGgkOCIsIndpZHRoJDkiLCJzY2FuX2NhbWxfZmxvYXRfcmVzdCIsIndpZHRoX3ByZWNpc2lvbiIsImZyYWNfd2lkdGgiLCJzY2FuX2NhbWxfZmxvYXQiLCJzY2FuX3N0cmluZyIsInN0cCIsImhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIiLCJjaGVja19uZXh0X2NoYXIiLCJjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIiLCJjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4iLCJzY2FuJDMiLCJzY2FuJDQiLCJjb252JDAiLCJzY2FuJDUiLCJjb252JDEiLCJzY2FuJDYiLCJjb252JDIiLCJzY2FuJDciLCJzY2FuJDgiLCJmbXRpbmdfbGl0JDAiLCJzdHAkMCIsInMkMiIsInN0cl9yZXN0JDAiLCJhcmdfcmVzdCIsImtzY2FuZiIsImVmIiwiZXhjJDAiLCJleGMiLCJhcmdzJDEiLCJhcmdzJDAiLCJic2NhbmYiLCJrc3NjYW5mIiwic3NjYW5mIiwic2NhbmYiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsImtmc2NhbmYiLCJmc2NhbmYiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJkdW1teV9pdGVtIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJhcnIiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiYnVpbGRfcGF0aCIsImtleXMiLCJsb29rdXBfdGFibGVzIiwicm9vdCIsInJvb3RfZGF0YSIsInRhYmxlcyQwIiwidGFibGVzJDEiLCJ0YWJsZXNfZGF0YSIsIm5ld19jYWNoZSIsInNldF9tZXRob2RzIiwiY2xvIiwieCQyMCIsImNsbyQwIiwibiQzOCIsImUkMTAiLCJuJDM3IiwibiQzNiIsIm4kMiIsIm4kMzUiLCJmJDIwIiwieCQxOSIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ4JDE4IiwieSQwIiwibiQ2IiwiZiQxNSIsIngkMTciLCJuJDMxIiwieCQzIiwibiQ3IiwiZiQxNCIsIngkMTYiLCJlJDgiLCJuJDMwIiwieCQ0IiwibiQ4IiwiZiQxMyIsIngkMTUiLCJuJDI5IiwibiQ5IiwieCQ1IiwiZiQxMiIsIm4kMjgiLCJ4JDE0IiwiZiQ4IiwiZSQyIiwibiQxMCIsIngkNiIsImYkMTEiLCJlJDciLCJuJDI3IiwieCQxMyIsImYkOSIsIm4kMTEiLCJ4JDciLCJmJDEwIiwibiQyNiIsIngkMTIiLCJuJDEyIiwieCQ4IiwibiQyNSIsIngkMTEiLCJuJDEzIiwibiQyNCIsIm0kMTIiLCJuJDE0IiwiZSQzIiwibiQyMyIsImUkNiIsIm0kMTEiLCJuJDE1IiwibSQxIiwibiQyMiIsIm0kMTAiLCJtJDIiLCJ4JDkiLCJtJDkiLCJ4JDEwIiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwiaW5pdGlhbF9idWZmZXIiLCJidWZmZXIiLCJidWZwb3MiLCJyZXNldF9idWZmZXIiLCJzdG9yZSIsIm5ld2J1ZmZlciIsImdldF9zdHJpbmciLCJtYWtlX2xleGVyIiwia2V5d29yZHMiLCJrd2RfdGFibGUiLCJpZGVudF9vcl9rZXl3b3JkIiwia2V5d29yZF9vcl9lcnJvciIsIm5leHRfdG9rZW4iLCJlc2NhcGUiLCJjb21tZW50IiwibnVtYmVyIiwiaWRlbnQyIiwiZXhwb25lbnRfcGFydCIsImVuZF9leHBvbmVudF9wYXJ0IiwiYzMiLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwibmV3X2QiLCJidWNrZXRfbGVuZ3RoX2FsaXZlIiwic3RhdHNfYWxpdmUiLCJnZXRfZGF0YV9jb3B5Iiwic2V0X2RhdGEiLCJ1bnNldF9kYXRhIiwiY2hlY2tfZGF0YSIsImJsaXRfZGF0YSIsInNldF9rZXlfZGF0YSIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDAiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJjcmVhdGUkMSIsImdldF9rZXkkMCIsImdldF9rZXlfY29weSQwIiwic2V0X2tleSQwIiwidW5zZXRfa2V5JDAiLCJjaGVja19rZXkkMCIsImJsaXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwiZ2V0X2RhdGFfY29weSQxIiwic2V0X2RhdGEkMSIsInVuc2V0X2RhdGEkMSIsImNoZWNrX2RhdGEkMSIsImJsaXRfZGF0YSQxIiwia2kiLCJrMCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUiLCJxdW90ZV9jb21tYW5kIiwiYmFzZW5hbWUiLCJkaXJuYW1lIiwiaXNfZGlyX3NlcCQwIiwiaXNfcmVsYXRpdmUkMCIsImlzX2ltcGxpY2l0JDAiLCJjaGVja19zdWZmaXgkMCIsImNob3Bfc3VmZml4X29wdCQwIiwidGVtcF9kaXJfbmFtZSQwIiwicXVvdGUkMCIsImxvb3AkMCIsImxvb3BfYnMiLCJhZGRfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDEiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNob3Bfc3VmZml4IiwiZXh0ZW5zaW9uX2xlbiIsImkwIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJvcGVuX3RlbXBfZmlsZSIsInN0aCQwIiwicGVybXMiLCJzdGgkMSIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwic2l6ZV9pbl9ieXRlcyIsInNpemVfaW5fYnl0ZXMkMCIsIm9mX3ZhbHVlIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJvZl9hcnJheSIsImJhIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwidmVyc2lvbiIsImdpdF92ZXJzaW9uIiwicmFpc2UiLCJtYXgiLCJ4IiwieSIsIm1pbiIsImVxdWFsIiwiZXF1YWwkMCIsIm1heCQwIiwibWluJDAiLCJnbG9iYWwiLCJudWxsJDAiLCJ1bmRlZmluZWQkMCIsInJldHVybiQwIiwibWFwIiwiZiIsImJpbmQiLCJ0ZXN0IiwiaXRlciIsImNhc2UkMCIsImciLCJnZXQiLCJvcHRpb24iLCJ4JDAiLCJ0b19vcHRpb24iLCJyZXR1cm4kMSIsIm1hcCQwIiwiYmluZCQwIiwidGVzdCQwIiwiaXRlciQwIiwiY2FzZSQxIiwiZ2V0JDAiLCJvcHRpb24kMCIsInRvX29wdGlvbiQwIiwiY29lcmNlIiwiY29lcmNlX29wdCIsInRydWUkMCIsImZhbHNlJDAiLCJuZmMiLCJuZmQiLCJuZmtjIiwibmZrZCIsInN0cmluZ19jb25zdHIiLCJyZWdFeHAiLCJvYmplY3RfY29uc3RydWN0b3IiLCJvYmplY3Rfa2V5cyIsIm8iLCJhcnJheV9jb25zdHJ1Y3RvciIsImFycmF5X2dldCIsImFycmF5X3NldCIsImFycmF5X21hcCIsImEiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsImUiLCJyYWlzZV9qc19lcnJvciIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsIm9iaiIsImtleXMiLCJrZXkiLCJsaXN0X29mX25vZGVMaXN0IiwibGVuZ3RoIiwiYWNjIiwiaSQwIiwiYWNjJDAiLCJpJDEiLCJkaXNjb25uZWN0ZWQiLCJwcmVjZWRpbmciLCJmb2xsb3dpbmciLCJjb250YWlucyIsImNvbnRhaW5lZF9ieSIsImltcGxlbWVudGF0aW9uX3NwZWNpZmljIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInAiLCJuIiwicmVtb3ZlQ2hpbGQiLCJyZXBsYWNlQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJub2RlVHlwZSIsInQxMyIsImNhc3QiLCJ0MTQiLCJlbGVtZW50IiwidGV4dCIsImF0dHIiLCJub19oYW5kbGVyIiwiaGFuZGxlciIsInJlcyIsImZ1bGxfaGFuZGxlciIsInRoaXMkMCIsImludm9rZV9oYW5kbGVyIiwiZXZlbnQiLCJldmVudFRhcmdldCIsIm1ha2UiLCJhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMiLCJ0MjgiLCJ0eXAiLCJjYXB0dXJlIiwib25jZSIsInBhc3NpdmUiLCJoIiwiYiIsImV2IiwiY2FsbGJhY2siLCJhZGRFdmVudExpc3RlbmVyIiwiY2FwdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpZCIsInByZXZlbnREZWZhdWx0IiwiY3JlYXRlQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImRldGFpbCIsIm9wdF9pdGVyIiwiY29uc3RyIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJ1aW50OEFycmF5IiwiaW50MTZBcnJheSIsInVpbnQxNkFycmF5IiwiaW50MzJBcnJheSIsInVpbnQzMkFycmF5IiwiZmxvYXQzMkFycmF5IiwiZmxvYXQ2NEFycmF5Iiwic2V0IiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwiYWIiLCJ1aW50OCIsImJsb2JfY29uc3RyIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJvcHRpb25zJDAiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJhJDAiLCJsJDAiLCJmaWxlbmFtZSIsIm5hbWUkMCIsImRvY19jb25zdHIiLCJkb2N1bWVudCIsImJsb2IiLCJzdHJpbmciLCJsb2Fkc3RhcnQiLCJwcm9ncmVzcyIsImFib3J0IiwiZXJyb3IiLCJsb2FkIiwibG9hZGVuZCIsImZpbGVSZWFkZXIiLCJvbklFIiwiY2xpY2siLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwibW91c2V3aGVlbCIsIndoZWVsIiwiRE9NTW91c2VTY3JvbGwiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCIsImRyYWdzdGFydCIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsImRyYWciLCJkcm9wIiwiaGFzaGNoYW5nZSIsImNoYW5nZSIsImlucHV0IiwidGltZXVwZGF0ZSIsInN1Ym1pdCIsInNjcm9sbCIsImZvY3VzIiwiYmx1ciIsInVubG9hZCIsImJlZm9yZXVubG9hZCIsInJlc2l6ZSIsIm9yaWVudGF0aW9uY2hhbmdlIiwicG9wc3RhdGUiLCJzZWxlY3QiLCJvbmxpbmUiLCJvZmZsaW5lIiwiY2hlY2tpbmciLCJub3VwZGF0ZSIsImRvd25sb2FkaW5nIiwidXBkYXRlcmVhZHkiLCJjYWNoZWQiLCJvYnNvbGV0ZSIsImRvbUNvbnRlbnRMb2FkZWQiLCJhbmltYXRpb25zdGFydCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImFuaW1hdGlvbmNhbmNlbCIsInRyYW5zaXRpb25ydW4iLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9uZW5kIiwidHJhbnNpdGlvbmNhbmNlbCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmNhbmNlbCIsInBvaW50ZXJkb3duIiwicG9pbnRlcmxlYXZlIiwicG9pbnRlcm1vdmUiLCJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiLCJwb2ludGVydXAiLCJyYXRlY2hhbmdlIiwic2Vla2VkIiwic2Vla2luZyIsInN0YWxsZWQiLCJzdXNwZW5kIiwidm9sdW1lY2hhbmdlIiwid2FpdGluZyIsImQiLCJsb2NhdGlvbl9vcmlnaW4iLCJvcmlnaW4iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImRvYyIsInVuc2FmZUNyZWF0ZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50U3ludGF4IiwidW5zYWZlQ3JlYXRlRWxlbWVudEV4IiwidHlwZSIsImVsdCIsImNyZWF0ZUh0bWwiLCJjcmVhdGVIZWFkIiwiY3JlYXRlTGluayIsImNyZWF0ZVRpdGxlIiwiY3JlYXRlTWV0YSIsImNyZWF0ZUJhc2UiLCJjcmVhdGVTdHlsZSIsImNyZWF0ZUJvZHkiLCJjcmVhdGVGb3JtIiwiY3JlYXRlT3B0Z3JvdXAiLCJjcmVhdGVPcHRpb24iLCJjcmVhdGVTZWxlY3QiLCJjcmVhdGVJbnB1dCIsImNyZWF0ZVRleHRhcmVhIiwiY3JlYXRlQnV0dG9uIiwiY3JlYXRlTGFiZWwiLCJjcmVhdGVGaWVsZHNldCIsImNyZWF0ZUxlZ2VuZCIsImNyZWF0ZVVsIiwiY3JlYXRlT2wiLCJjcmVhdGVEbCIsImNyZWF0ZUxpIiwiY3JlYXRlRGl2IiwiY3JlYXRlRW1iZWQiLCJjcmVhdGVQIiwiY3JlYXRlSDEiLCJjcmVhdGVIMiIsImNyZWF0ZUgzIiwiY3JlYXRlSDQiLCJjcmVhdGVINSIsImNyZWF0ZUg2IiwiY3JlYXRlUSIsImNyZWF0ZUJsb2NrcXVvdGUiLCJjcmVhdGVQcmUiLCJjcmVhdGVCciIsImNyZWF0ZUhyIiwiY3JlYXRlSW5zIiwiY3JlYXRlRGVsIiwiY3JlYXRlQSIsImNyZWF0ZUltZyIsImNyZWF0ZU9iamVjdCIsImNyZWF0ZVBhcmFtIiwiY3JlYXRlTWFwIiwiY3JlYXRlQXJlYSIsImNyZWF0ZVNjcmlwdCIsImNyZWF0ZVRhYmxlIiwiY3JlYXRlQ2FwdGlvbiIsImNyZWF0ZUNvbCIsImNyZWF0ZUNvbGdyb3VwIiwiY3JlYXRlVGhlYWQiLCJjcmVhdGVUZm9vdCIsImNyZWF0ZVRib2R5IiwiY3JlYXRlVHIiLCJjcmVhdGVUaCIsImNyZWF0ZVRkIiwiY3JlYXRlU3ViIiwiY3JlYXRlU3VwIiwiY3JlYXRlU3BhbiIsImNyZWF0ZVR0IiwiY3JlYXRlSSIsImNyZWF0ZUIiLCJjcmVhdGVCaWciLCJjcmVhdGVTbWFsbCIsImNyZWF0ZUVtIiwiY3JlYXRlU3Ryb25nIiwiY3JlYXRlQ2l0ZSIsImNyZWF0ZURmbiIsImNyZWF0ZUNvZGUiLCJjcmVhdGVTYW1wIiwiY3JlYXRlS2JkIiwiY3JlYXRlVmFyIiwiY3JlYXRlQWJiciIsImNyZWF0ZURkIiwiY3JlYXRlRHQiLCJjcmVhdGVOb3NjcmlwdCIsImNyZWF0ZUFkZHJlc3MiLCJjcmVhdGVGcmFtZXNldCIsImNyZWF0ZUZyYW1lIiwiY3JlYXRlSWZyYW1lIiwiY3JlYXRlQXVkaW8iLCJjcmVhdGVWaWRlbyIsImNyZWF0ZUNhbnZhcyIsImh0bWxfZWxlbWVudCIsInQ1NCIsInVuc2FmZUNvZXJjZSIsInRhZyIsInQ1NSIsImFyZWEiLCJiYXNlIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjb2wiLCJjb2xncm91cCIsImRlbCIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJlbWJlZCIsImZvcm0iLCJmcmFtZXNldCIsImZyYW1lIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhyIiwiaHRtbCIsImlmcmFtZSIsImltZyIsImlucHV0JDAiLCJpbnMiLCJsYWJlbCIsImxlZ2VuZCIsImxpIiwibGluayIsIm1ldGEiLCJvYmplY3QiLCJvbCIsIm9wdGdyb3VwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwibW91c2VFdmVudCIsImtleWJvYXJkRXZlbnQiLCJ3aGVlbEV2ZW50IiwibW91c2VTY3JvbGxFdmVudCIsInBvcFN0YXRlRXZlbnQiLCJtZXNzYWdlRXZlbnQiLCJwYXJhbSIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbGVmdCIsInRyeV9rZXlfY29kZV9yaWdodCIsInRyeV9rZXlfY29kZV9udW1wYWQiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJydW5fbmV4dCIsInZhbHVlIiwic3ltYm9sIiwib2ZfZXZlbnQiLCJjaGFyX29mX2ludCIsImVtcHR5X3N0cmluZyIsIm5vbmUiLCJvZl9ldmVudCQwIiwiZWxlbWVudCQwIiwidGFnZ2VkIiwidDEwNSIsIm9wdF90YWdnZWQiLCJ0YWdnZWRFdmVudCIsIm9wdF90YWdnZWRFdmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImMiLCJyZXEiLCJub3ciLCJsYXN0IiwiZHQiLCJkdCQwIiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZm9ybV9lbGVtZW50cyIsImkkMiIsInN0aCIsIm5hbWUkMSIsImxpc3QiLCJmaWxlIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwiZW1wdHlfZm9ybV9jb250ZW50cyIsInBvc3RfZm9ybV9jb250ZW50cyIsImNvbnRlbnRzIiwiZ2V0X2Zvcm1fY29udGVudHMiLCJyZWFkeXN0YXRlY2hhbmdlIiwidGltZW91dCIsIndvcmtlciIsImNyZWF0ZSIsImltcG9ydF9zY3JpcHRzIiwic2NyaXB0cyIsInNldF9vbm1lc3NhZ2UiLCJqc19oYW5kbGVyIiwicG9zdF9tZXNzYWdlIiwibXNnIiwid2ViU29ja2V0IiwiaXNfc3VwcG9ydGVkIiwiZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzIiwid2ViZ2xjb250ZXh0bG9zdCIsIndlYmdsY29udGV4dHJlc3RvcmVkIiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciIsImdldENvbnRleHQiLCJjdHgiLCJnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMiLCJhdHRyaWJzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsX3JlIiwicXVvdGVfcmVwbCIsImdsb2JhbF9yZXBsYWNlIiwic19ieSIsInJlcGxhY2VfZmlyc3QiLCJ0MjkiLCJmbGFncyIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlX3JlIiwicXVvdGUiLCJyZWdleHBfc3RyaW5nIiwicmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQiLCJpbnRlcnJ1cHQiLCJwbHVzX3JlIiwidXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmciLCJ1cmxkZWNvZGUiLCJ1cmxlbmNvZGUiLCJvcHQiLCJ3aXRoX3BsdXMiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInBhdGhfb2ZfcGF0aF9zdHJpbmciLCJhdXgiLCJqIiwid29yZCIsImVuY29kZV9hcmd1bWVudHMiLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsImluZGV4IiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9yZSIsImZpbGVfcmUiLCJ1cmxfb2ZfanNfc3RyaW5nIiwiaGFuZGxlIiwicHJvdF9zdHJpbmciLCJzc2wiLCJwYXRoX3N0ciIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJwcm90b2NvbCIsInBhdGhfc3RyaW5nIiwiYXJndW1lbnRzJDAiLCJnZXRfZnJhZ21lbnQiLCJzZXRfZnJhZ21lbnQiLCJ1IiwiYXNfc3RyaW5nIiwidXBkYXRlX2ZpbGUiLCJjb250ZW50Iiwib2MiLCJzZXRfY2hhbm5lbF9mbHVzaGVyIiwib3V0X2NoYW5uZWwiLCJmJDAiLCJzZXRfY2hhbm5lbF9maWxsZXIiLCJpbl9jaGFubmVsIiwibW91bnQiLCJwcmVmaXgiLCJ1bm1vdW50IiwianNfb2Zfb2NhbWxfdmVyc2lvbiIsImVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zIiwicmVzaXplT2JzZXJ2ZXIiLCJvYnNlcnZlIiwibm9kZSIsImJveCIsIm9icyIsInBlcmZvcm1hbmNlT2JzZXJ2ZXIiLCJlbnRyeV90eXBlcyIsImVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQiLCJtdXRhdGlvbk9ic2VydmVyIiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsImsiLCJyZW1vdmUiLCJmaW5kIiwianNvbiIsInJldml2ZXIiLCJpbnB1dF9yZXZpdmVyIiwidW5zYWZlX2lucHV0IiwibWxJbnQ2NF9jb25zdHIiLCJvdXRwdXRfcmV2aXZlciIsIm91dHB1dCIsInN0cmluZ19vZl9uYW1lIiwibmFtZV9vZl9zdHJpbmciLCJyZ2Jfb2ZfbmFtZSIsInJnYiIsImhzbCIsInN0cmluZ19vZl90IiwiYiQwIiwiZyQwIiwiciQwIiwiYiQxIiwiZyQxIiwiciQxIiwiYiQyIiwiZyQyIiwiciQyIiwiYSQxIiwiaCQwIiwiaGV4X29mX3JnYiIsImJsdWUiLCJncmVlbiIsInJlZCIsImluX3JhbmdlIiwianNfdF9vZl9qc19zdHJpbmciLCJyZ2JfcmUiLCJyZ2JfcGN0X3JlIiwicmdiYV9yZSIsInJnYmFfcGN0X3JlIiwiaHNsX3JlIiwiaHNsYV9yZSIsImpzIiwiY24iLCJtbCIsImZhaWwiLCJyZV9yZ2IiLCJyZV9yZ2JfcGN0IiwicmVfaHNsIiwiaV9vZl9zX28iLCJmX29mX3MiLCJhbHBoYSIsInJlZCQwIiwiZ3JlZW4kMCIsImJsdWUkMCIsImFscGhhJDAiLCJyZWQkMSIsImdyZWVuJDEiLCJibHVlJDEiLCJhbHBoYSQxIiwic3RyaW5nX29mX3QkMCIsImYkMSIsImYkMiIsImYkMyIsImYkNCIsImYkNSIsImYkNiIsImYkNyIsImYkOCIsImYkOSIsImYkMTAiLCJmJDExIiwiZiQxMiIsImpzJDAiLCJtbCQwIiwicmUiLCJzdHJpbmdfb2ZfdCQxIiwianMkMSIsIm1sJDEiLCJsaXN0ZW4iLCJ0YXJnZXQiLCJzdG9wX2xpc3RlbiIsInhtbG5zIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsImVxdWFsIiwieCIsInkiLCJjb21wYXJlIiwidG9faW50IiwicHAiLCJpbnRlcnNlY3QiLCJzeW1ib2wiLCJsZXR0ZXIiLCJub3RfbGV0dGVyIiwiZHVtbXkiLCJpbmV4aXN0YW50IiwibmV3bGluZSIsImxhc3RuZXdsaW5lIiwic2VhcmNoX2JvdW5kYXJ5IiwiZnJvbV9jaGFyIiwic2V4cCIsImZtdCIsInMiLCJwYWlyIiwicHAxIiwicHAyIiwidjIiLCJ2MSIsInRyaXBsZSIsInBwMyIsInYzIiwib3B0aW50IiwiaSIsInF1b3RlIiwicHBfb2xpc3QiLCJwcF9lbGVtIiwicHBfc3RyX2xpc3QiLCJ0b190b19zdHJpbmciLCJiIiwiY2FueSIsInVuaW9uIiwibCQwIiwibCIsImwkMiIsImwkMSIsInIiLCJjMiIsImMxIiwiciQwIiwiYzIkMCIsImMxJDAiLCJsJDMiLCJsJDQiLCJpbnRlciIsImRpZmYiLCJyJDEiLCJzaW5nbGUiLCJjIiwiYWRkIiwic2VxIiwiYyQwIiwib2Zmc2V0IiwibyIsImVtcHR5IiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwibWVyZ2VfbWFya3Nfb2Zmc2V0Iiwib2xkIiwibnciLCJtZXJnZSIsIm0iLCJhY2N1JDEiLCJhY2N1JDIiLCJhIiwiYWNjdSQwIiwiaWR4IiwibWFya3MiLCJtYXJrc19zZXRfaWR4IiwicHBfbWFya3MiLCJwcF9zZW0iLCJrIiwicHBfcmVwX2tpbmQiLCJlIiwiZSQwIiwiZSQxIiwiZSQyIiwiayQwIiwiZSQzIiwiaSQwIiwiZmlyc3QiLCJyZXMiLCJjcmVhdGVfaWRzIiwibWtfZXhwciIsImlkcyIsImRlZiIsImVtcHR5JDAiLCJjc3QiLCJhbHQiLCJraW5kIiwiaXNfZXBzIiwiZXhwciIsImVwcyIsInJlcCIsInNlbSIsIm1hcmsiLCJwbWFyayIsImVyYXNlIiwibSQwIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZW5hbWUiLCJ6IiwieSQwIiwiZyIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsInIxIiwiZTEiLCJsMSQxIiwicjIiLCJlMiIsImwyJDEiLCJyMSQwIiwiZTEkMCIsIm1hcmtzMSIsInIyJDAiLCJlMiQwIiwibWFya3MyIiwicjEkMSIsIm1hcmtzMSQwIiwicjIkMSIsIm1hcmtzMiQwIiwiaGFzaCQwIiwibWFya3MkMCIsImFjY3UkMyIsInRzZXEiLCJwcmludF9zdGF0ZV9yZWMiLCJwcmludF9zdGF0ZV9sc3QiLCJwcCQwIiwibWsiLCJjYXQiLCJkZXNjIiwiY3JlYXRlIiwiZXF1YWwkMCIsImhhc2gkMSIsImNyZWF0ZV93b3JraW5nX2FyZWEiLCJpbmRleF9jb3VudCIsInciLCJtYXJrX3VzZWRfaW5kaWNlcyIsInRibCIsImZyZWVfaW5kZXgiLCJ0YmxfcmVmIiwibGVuIiwiaWR4JDAiLCJyZW1vdmVfbWF0Y2hlcyIsInNwbGl0X2F0X21hdGNoIiwicmVtb3ZlX2R1cGxpY2F0ZXMiLCJwcmV2IiwicHJldiQwIiwicHJldiQxIiwicHJldiQyIiwiciQyIiwiciQzIiwieCQxIiwicHJldiQzIiwiciQ0Iiwic2V0X2lkeCIsImZpbHRlcl9tYXJrcyIsImRlbHRhXzEkMCIsIm5leHRfY2F0IiwicHJldl9jYXQiLCJkZWx0YV8yJDAiLCJkZWx0YV8xIiwiZGVsdGFfc2VxJDAiLCJ5JDEiLCJraW5kJDAiLCJyZXBfa2luZCIsInkkMiIsIm1hcmtzJDEiLCJ5JDMiLCJtYXJrcyQyIiwiY2F0JDAiLCJtYXJrcyQzIiwiZGVsdGFfMiIsImRlbHRhX3NlcSIsImRlbHRhXzQiLCJyZW0kMCIsImRlbHRhIiwiY2hhciQwIiwic3QiLCJleHByJDAiLCJyZWRfdHIiLCJ0cjIiLCJzdDIiLCJzMiIsInRyMSIsInN0MSIsInMxIiwicHJlcGVuZF9kZXJpdiIsInJlc3RyaWN0IiwicyQxIiwicHJlcGVuZF9tYXJrc19leHByX2xzdCIsIm0kMSIsImRlcml2XzEkMCIsImFsbF9jaGFycyIsImNhdGVnb3JpZXMiLCJyZW0kMSIsImRlcml2XzIkMCIsImRlcml2XzEiLCJkZXJpdl9zZXEiLCJ6JDAiLCJyZW0kMiIsImNhdCQxIiwiZGVyaXZfMiIsInhsIiwieiQxIiwiZGVyaXZfNCIsImRlcml2IiwiZGVyIiwiZXhwciQxIiwic3RhdHVzIiwibWEiLCJzdCQwIiwibWFrZSIsImZsYXR0ZW4iLCJjbSIsImNvbG9yX3JlcHIiLCJzcGxpdCIsImR1bW15X29mZnNldCIsIm0xIiwicDEiLCJwMiIsImdldCIsInN0YXJ0Iiwic3VicyIsInN0b3AiLCJ0ZXN0IiwiZ2V0X29wdCIsImFsbF9vZmZzZXQiLCJhbGwiLCJvZmZzZXRzIiwic3RycyIsIm1hdGNoZXMiLCJwcF9tYXRjaCIsInN0ciIsIm5iX2dyb3VwcyIsIm4iLCJuJDAiLCJ2JDAiLCJ2JDEiLCJuJDEiLCJ1bmtub3duIiwiYnJlYWskMCIsInBwX3JlIiwicmUiLCJncm91cF9jb3VudCIsImdyb3VwX25hbWVzIiwiY2F0ZWdvcnkiLCJjb2xvciIsImR1bW15X25leHQiLCJ1bmtub3duX3N0YXRlIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvdyIsImVvdyIsImJvbCIsImVvbCIsIndvcmQiLCJib3MiLCJlb3MiLCJub3RfYm91bmRhcnkiLCJ3aG9sZV9zdHJpbmciLCJsZW9sIiwibG9uZ2VzdCIsInNob3J0ZXN0Iiwibm9uX2dyZWVkeSIsImdyb3VwIiwibm9fZ3JvdXAiLCJuZXN0Iiwic2V0IiwicmciLCJjb21wbCIsImFueSIsIm5vdG5sIiwibG93ZXIiLCJ1cHBlciIsImFscGhhIiwiZGlnaXQiLCJhbG51bSIsIndvcmRjIiwiYXNjaWkiLCJibGFuayIsImNudHJsIiwiZ3JhcGgiLCJwcmludCIsInB1bmN0Iiwic3BhY2UiLCJ4ZGlnaXQiLCJjYXNlJDAiLCJub19jYXNlIiwiY29tcGlsZSIsInJlZ2V4cCQwIiwicmVnZXhwIiwibG5sIiwiY29sb3JpemUiLCJyZWdleHAkMSIsInJlZ2V4cCQyIiwibmVlZF9sbmwiLCJuY29sb3IiLCJjb2xvcnMiLCJsbmwkMCIsIm5jb2xvciQwIiwiaW5pdGlhbCIsImV4ZWNfaW50ZXJuYWwiLCJzdGgiLCJzdGgkMCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwic3RoJDEiLCJtYXRjaF9iYWNrc2xhc2hlcyIsInN0aCQyIiwicGVyaW9kIiwic3RoJDMiLCJleHBhbmRfYnJhY2VzIiwic3RoJDQiLCJkb3VibGVfYXN0ZXJpc2siLCJ0b19yZSIsInJlYWQiLCJwaWVjZXMiLCJmb3VuZCIsInBpZWNlcyQwIiwic3RhdGUkOCIsInN0YXRlJDkiLCJleHBsaWNpdF9zbGFzaCQwIiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsIm5vdF9lbXB0eSIsIm1heWJlX2VtcHR5Iiwibm90X2VtcHR5JDEiLCJlbmNsb3NlZF9zZXQkMCIsInN0YXRlJDIiLCJzdGF0ZSQ0Iiwibm90X2VtcHR5JDAiLCJzdGF0ZSQ1Iiwic3RhdGUkNiIsImVuY2xvc2VkJDAiLCJzdGF0ZSQ3IiwiZW5jbG9zZWQkMSIsInN0YXRlJDMiLCJzdGF0ZSQxIiwiZW5jbG9zZWQkMiIsImVuY2xvc2VkJDMiLCJleHBsIiwiaW5uZXIiLCJhY2MiLCJiZWckMCIsImFjYyQwIiwiYmVnJDEiLCJhY2MkMSIsImkkMyIsImJlZyQyIiwiaSQ0IiwiaSQyIiwiZ2xvYiQwIiwiZ2xvYngiLCJnbG9ieCQwIiwicG9zaXhfY2xhc3Nfc3RyaW5ncyIsIm9wdHMiLCJ1bmdyZWVkeSIsImRvdGFsbCIsImRvbGxhcl9lbmRvbmx5IiwibXVsdGlsaW5lIiwiYWNjZXB0X3MiLCJ1bmdldCIsImdyZWVkeV9tb2QiLCJnciIsImdyJDAiLCJhdG9tIiwiaW50ZWdlciIsImhleGRpZ2l0IiwiY29kZSIsInMkMyIsInMkNCIsImNsYXNzJDAiLCJwb3NpeF9jbGFzcyIsInBhdCIsImZsYWdzIiwiZXh0cmFjdCIsInJleCIsImdldF9zdWJzdHJpbmciLCJnZXRfbmFtZWRfc3Vic3RyaW5nIiwiZ2V0X3N1YnN0cmluZ19vZnMiLCJwbWF0Y2giLCJzdWJzdGl0dXRlIiwic3Vic3QiLCJzcyIsImZpbiIsIm1heCIsInJlc3VsdHMiLCJkZWxpbSIsImZtYXAiLCJmIiwibmlsIiwic2luZ2xldG9uIiwieCIsImNvbnMiLCJ4cyIsImFwcGVuZCIsInkiLCJtYXAiLCJvZl9saXN0IiwibCIsImEiLCJiIiwibWsiLCJjaGlsZHJlbiIsInNlcSIsImNoaWxkcmVuJDAiLCJzZXEkMCIsInJlc3QiLCJxIiwiYXR0cnMiLCJuYW1lIiwidiIsInJlc3QkMCIsInN1Yl9jaGlsZHJlbiIsImNoaWxkcmVuJDEiLCJzZXEkMSIsInMiLCJjaGlsZHJlbiQyIiwic2VxJDIiLCJzJDAiLCJjaGlsZHJlbiQzIiwib2Zfc2VxIiwiYWRkX3Vuc2FmZV9jaGFyIiwiYyIsImVuY29kZV91bnNhZmVfY2hhciIsImVuY29kZV91bnNhZmVfY2hhcl9hbmRfYXQiLCJjb21wb3NlX2RlY2wiLCJvcHQiLCJzdGgiLCJ2ZXJzaW9uIiwic3RoJDAiLCJlbmNvZGluZyIsImNvbXBvc2VfZG9jdHlwZSIsImR0IiwiYXJncyIsInBwX2FyZ3MiLCJmbXQiLCJyZV9lbmRfY29tbWVudCIsInBwX251bWJlciIsInZpbnQiLCJzMSIsInMyIiwibiIsImkiLCJpJDAiLCJuJDAiLCJzdHJpbmdfb2ZfbnVtYmVyIiwibm9ybWFsaXplIiwic3JjIiwid2FybiIsImJ1ZmZlciIsImQiLCJjb2RlIiwibm9ybWFsaXplX2h0bWwiLCJ1IiwidSQwIiwicHBfbm9vcCIsIm9wZW5fYm94IiwiaW5kZW50IiwiY2xvc2VfYm94Iiwic3AiLCJjdXQiLCJzZXQiLCJpc19lbXB0eXRhZyIsInBwX2VuY29kZSIsImVuY29kZSIsInBwX3NlcCIsInBwX2F0dHJpYl92YWx1ZSIsInNsaXN0Iiwic2VwIiwicHBfYXR0cmliIiwicHBfYXR0cmlicyIsInBwX3RhZ19hbmRfYXR0cmlicyIsInRhZyIsInBwX2Nsb3NlZHRhZyIsInBwX3RhZyIsInBwX2VsdHMiLCJwcF9lbHQiLCJlbHQiLCJ0ZXh0ZSIsImciLCJ0ZXh0ZSQwIiwidGV4dGUkMSIsImUiLCJ4aF9hdHRycyIsInhoX3RhZ2xpc3QiLCJ4aF9hdHRycyQwIiwibmFtZSQwIiwicHAiLCJzeW1ib2wiLCJzZXBhcmF0b3JfdG9fc3RyaW5nIiwiYXR0cmliX3ZhbHVlX3RvX3N0cmluZyIsImF0dHJpYl90b19zdHJpbmciLCJ4aF9wcmludF9hdHRycyIsInF1ZXVlIiwiYXR0ciIsInhoX3ByaW50X2Nsb3NlZHRhZyIsInhoX3ByaW50X3RhZyIsInRhZ2xpc3QiLCJ4aF9wcmludF90YWdsaXN0IiwicHJpbnRfbm9kZXMiLCJ0YWdsaXN0JDAiLCJ0YWdsaXN0JDEiLCJwcmludF9saXN0IiwiZm9yZXQiLCJwcmludCIsImRvYyIsImFkdmVydCIsImRvYyQwIiwiYSQwIiwiZG9jJDEiLCJlbXB0eSIsImNvbmNhdCIsImYxIiwiZjIiLCJwdXQiLCJtYWtlIiwib3V0cHV0IiwiYW1hcDEiLCJhdHRyaWJzIiwiZWx0cyIsImF0dHJpYnMkMCIsImFtYXAiLCJhZGRfZmxvYXRfYXR0cmliIiwidmFsdWUiLCJoZWFkIiwidGFpbCIsInRhaWwkMCIsIm1hcF9mbG9hdF9hdHRyaWIiLCJpc19hdHRyaWIiLCJhdXgiLCJhZGRfaW50X2F0dHJpYiIsInJtX2F0dHJpYiIsIm1hcF9pbnRfYXR0cmliIiwiYWRkX3N0cmluZ19hdHRyaWIiLCJtYXBfc3RyaW5nX2F0dHJpYiIsImFkZF9zcGFjZV9zZXBfYXR0cmliIiwidmFsdWVzIiwiYWRkX2NvbW1hX3NlcF9hdHRyaWIiLCJybV9hdHRyaWJfZnJvbV9saXN0IiwiaXNfdmFsdWUiLCJ2YWx1ZXMkMCIsIm1hcF9zdHJpbmdfYXR0cmliX2luX2xpc3QiLCJmb2xkIiwib2ZfZW1wdHkiLCJvZl9jb21tZW50Iiwib2ZfdHh0Iiwib2ZfZW5jb2RlZHBjZGF0YSIsIm9mX2VudGl0eSIsIm9mX2xlYWYiLCJvZl9ub2RlIiwicyQxIiwicyQyIiwiYWxsX2VudGl0aWVzIiwiZW5hbWUiLCJmbGF0bWFwIiwidHJhbnNsYXRlIiwicm9vdF9sZWFmIiwicm9vdF9ub2RlIiwic3ViX2xlYWYiLCJzdWJfbm9kZSIsInVwZGF0ZV9zdGF0ZSIsInN0YXRlIiwiY29udGVudF90eXBlIiwic3RhbmRhcmQiLCJuYW1lc3BhY2UiLCJjc3QkMSIsInN0cmluZ19vZl9pcmkiLCJ0b19zdHJpbmciLCJ1bml0IiwidW5pdCQwIiwiYW5nbGVfbmFtZXMiLCJzdHJpbmdfb2ZfYW5nbGUiLCJsZW5ndGhfbmFtZXMiLCJzdHJpbmdfb2ZfbGVuZ3RoIiwibGlzdCIsInN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyIsInN0cmluZ19vZl9wYWludCIsImlyaSIsInN0cmluZ19vZl9maWxsX3J1bGUiLCJkb2N0eXBlIiwic3RyaW5nX29mX3VyaSIsInVyaV9vZl9zdHJpbmciLCJ0b3QiLCJ0b3RsIiwidG9lbHQiLCJ0b2VsdGwiLCJ0b19hdHRyaWIiLCJudWxsYXJ5IiwidW5hcnkiLCJzdGFyIiwidG9feG1sYXR0cmlicyIsImZsb2F0X2F0dHJpYiIsInN0cmluZ19hdHRyaWIiLCJzdHJpbmdfb2ZfY29vcmQiLCJzdHJpbmdfb2ZfbGVuZ3RocyIsInVzZXJfYXR0cmliIiwiY29sb3JfYXR0cmliIiwibWV0YWRhdGEiLCJmb3JlaWduT2JqZWN0IiwidHh0IiwiYV92ZXJzaW9uIiwiYV9iYXNlUHJvZmlsZSIsImFfeCIsImFfeSIsImFfd2lkdGgiLCJhX2hlaWdodCIsImFfcHJlc2VydmVBc3BlY3RSYXRpbyIsImFfY29udGVudFNjcmlwdFR5cGUiLCJhX2NvbnRlbnRTdHlsZVR5cGUiLCJhX3pvb21BbmRQYW4iLCJhX2hyZWYiLCJhX3hsaW5rX2hyZWYiLCJhX3JlcXVpcmVkRmVhdHVyZXMiLCJhX3JlcXVpcmVkRXh0ZW5zaW9ucyIsImFfc3lzdGVtTGFuZ3VhZ2UiLCJhX2V4dGVybmFsUmVzc291cmNlc1JlcXVpcmVkIiwiYV9pZCIsImFfdXNlcl9kYXRhIiwiYV94bWxfYmFzZSIsImFfeG1sX2xhbmciLCJhX3htbF9zcGFjZSIsImFfdHlwZSIsImFfbWVkaWEiLCJhX3hsaW5rX3RpdGxlIiwiYV9jbGFzcyIsImFfc3R5bGUiLCJhX3RyYW5zZm9ybSIsImFfdmlld0JveCIsImFfZCIsImFfcGF0aExlbmd0aCIsImFfcngiLCJhX3J5IiwiYV9jeCIsImFfY3kiLCJhX3IiLCJhX3gxIiwiYV95MSIsImFfeDIiLCJhX3kyIiwiYV9wb2ludHMiLCJhX3hfbGlzdCIsImFfeV9saXN0IiwiYV9keCIsImFfZHkiLCJhX2R4X2xpc3QiLCJhX2R5X2xpc3QiLCJhX2xlbmd0aEFkanVzdCIsImFfdGV4dExlbmd0aCIsImFfdGV4dF9hbmNob3IiLCJhX3RleHRfZGVjb3JhdGlvbiIsImFfdGV4dF9yZW5kZXJpbmciLCJhX3JvdGF0ZSIsImFfc3RhcnRPZmZzZXQiLCJhX21ldGhvZCIsImFfc3BhY2luZyIsImFfZ2x5cGhSZWYiLCJhX2Zvcm1hdCIsImFfbWFya2VyVW5pdHMiLCJhX3JlZlgiLCJhX3JlZlkiLCJhX21hcmtlcldpZHRoIiwiYV9tYXJrZXJIZWlnaHQiLCJhX29yaWVudCIsImFfbG9jYWwiLCJhX3JlbmRlcmluZ19pbnRlbnQiLCJhX2dyYWRpZW50VW5pdHMiLCJhX2dyYWRpZW50VHJhbnNmb3JtIiwiYV9zcHJlYWRNZXRob2QiLCJhX2Z4IiwiYV9meSIsImFfb2Zmc2V0IiwiYV9wYXR0ZXJuVW5pdHMiLCJhX3BhdHRlcm5Db250ZW50VW5pdHMiLCJhX3BhdHRlcm5UcmFuc2Zvcm0iLCJhX2NsaXBQYXRoVW5pdHMiLCJhX21hc2tVbml0cyIsImFfbWFza0NvbnRlbnRVbml0cyIsImFfcHJpbWl0aXZlVW5pdHMiLCJhX2ZpbHRlclJlcyIsImFfcmVzdWx0IiwiYV9pbiIsImFfaW4yIiwiYV9hemltdXRoIiwiYV9lbGV2YXRpb24iLCJhX3BvaW50c0F0WCIsImFfcG9pbnRzQXRZIiwiYV9wb2ludHNBdFoiLCJhX3NwZWN1bGFyRXhwb25lbnQiLCJhX3NwZWN1bGFyQ29uc3RhbnQiLCJhX2xpbWl0aW5nQ29uZUFuZ2xlIiwiYV9tb2RlIiwiYV9mZUNvbG9yTWF0cml4X3R5cGUiLCJhX3ZhbHVlcyIsImFfdHJhbnNmZXJfdHlwZSIsImFfdGFibGVWYWx1ZXMiLCJhX2ludGVyY2VwdCIsImFfYW1wbGl0dWRlIiwiYV9leHBvbmVudCIsImFfdHJhbnNmZXJfb2Zmc2V0IiwiYV9mZUNvbXBvc2l0ZV9vcGVyYXRvciIsImFfazEiLCJhX2syIiwiYV9rMyIsImFfazQiLCJhX29yZGVyIiwiYV9rZXJuZWxNYXRyaXgiLCJhX2Rpdmlzb3IiLCJhX2JpYXMiLCJhX2tlcm5lbFVuaXRMZW5ndGgiLCJhX3RhcmdldFgiLCJhX3RhcmdldFkiLCJhX2VkZ2VNb2RlIiwiYV9wcmVzZXJ2ZUFscGhhIiwiYV9zdXJmYWNlU2NhbGUiLCJhX2RpZmZ1c2VDb25zdGFudCIsImFfc2NhbGUiLCJhX3hDaGFubmVsU2VsZWN0b3IiLCJhX3lDaGFubmVsU2VsZWN0b3IiLCJhX3N0ZERldmlhdGlvbiIsImFfZmVNb3JwaG9sb2d5X29wZXJhdG9yIiwiYV9yYWRpdXMiLCJhX2Jhc2VGcmVucXVlbmN5IiwiYV9udW1PY3RhdmVzIiwiYV9zZWVkIiwiYV9zdGl0Y2hUaWxlcyIsImFfZmVUdXJidWxlbmNlX3R5cGUiLCJhX3hsaW5rX3Nob3ciLCJhX3hsaW5rX2FjdHVhdGUiLCJhX3RhcmdldCIsImFfdmlld1RhcmdldCIsImFfYXR0cmlidXRlTmFtZSIsImFfYXR0cmlidXRlVHlwZSIsImFfYmVnaW4iLCJhX2R1ciIsImFfbWluIiwiYV9tYXgiLCJhX3Jlc3RhcnQiLCJhX3JlcGVhdENvdW50IiwiYV9yZXBlYXREdXIiLCJhX2ZpbGwiLCJhX2FuaW1hdGlvbl9maWxsIiwiYV9maWxsX3J1bGUiLCJhX2NhbGNNb2RlIiwiYV9hbmltYXRpb25fdmFsdWVzIiwiYV9rZXlUaW1lcyIsImFfa2V5U3BsaW5lcyIsImFfZnJvbSIsImFfdG8iLCJhX2J5IiwiYV9hZGRpdGl2ZSIsImFfYWNjdW11bGF0ZSIsImFfa2V5UG9pbnRzIiwiYV9wYXRoIiwiYV9hbmltYXRlVHJhbnNmb3JtX3R5cGUiLCJhX2hvcml6X29yaWdpbl94IiwiYV9ob3Jpel9vcmlnaW5feSIsImFfaG9yaXpfYWR2X3giLCJhX3ZlcnRfb3JpZ2luX3giLCJhX3ZlcnRfb3JpZ2luX3kiLCJhX3ZlcnRfYWR2X3kiLCJhX3VuaWNvZGUiLCJhX2dseXBoX25hbWUiLCJhX29yaWVudGF0aW9uIiwiYV9hcmFiaWNfZm9ybSIsImFfbGFuZyIsImFfdTEiLCJhX3UyIiwiYV9nMSIsImFfZzIiLCJhX2siLCJhX2ZvbnRfZmFtaWx5IiwiYV9mb250X3N0eWxlIiwiYV9mb250X3ZhcmlhbnQiLCJhX2ZvbnRfd2VpZ2h0IiwiYV9mb250X3N0cmV0Y2giLCJhX2ZvbnRfc2l6ZSIsImFfdW5pY29kZV9yYW5nZSIsImFfdW5pdHNfcGVyX2VtIiwiYV9zdGVtdiIsImFfc3RlbWgiLCJhX3Nsb3BlIiwiYV9jYXBfaGVpZ2h0IiwiYV94X2hlaWdodCIsImFfYWNjZW50X2hlaWdodCIsImFfYXNjZW50IiwiYV93aWR0aHMiLCJhX2Jib3giLCJhX2lkZW9ncmFwaGljIiwiYV9hbHBoYWJldGljIiwiYV9tYXRoZW1hdGljYWwiLCJhX2hhbmdpbmciLCJhX3ZpZGVvZ3JhcGhpYyIsImFfdl9hbHBoYWJldGljIiwiYV92X21hdGhlbWF0aWNhbCIsImFfdl9oYW5naW5nIiwiYV91bmRlcmxpbmVfcG9zaXRpb24iLCJhX3VuZGVybGluZV90aGlja25lc3MiLCJhX3N0cmlrZXRocm91Z2hfcG9zaXRpb24iLCJhX3N0cmlrZXRocm91Z2hfdGhpY2tuZXNzIiwiYV9vdmVybGluZV9wb3NpdGlvbiIsImFfb3ZlcmxpbmVfdGhpY2tuZXNzIiwiYV9zdHJpbmciLCJhX25hbWUiLCJhX2FsaWdubWVudF9iYXNlbGluZSIsImFfZG9taW5hbnRfYmFzZWxpbmUiLCJhX29uYWJvcnQiLCJhX29uYWN0aXZhdGUiLCJhX29uYmVnaW4iLCJhX29uZW5kIiwiYV9vbmVycm9yIiwiYV9vbmZvY3VzaW4iLCJhX29uZm9jdXNvdXQiLCJhX29ubG9hZCIsImFfb25yZXBlYXQiLCJhX29ucmVzaXplIiwiYV9vbnNjcm9sbCIsImFfb251bmxvYWQiLCJhX29uem9vbSIsImFfb25jbGljayIsImFfb25tb3VzZWRvd24iLCJhX29ubW91c2V1cCIsImFfb25tb3VzZW92ZXIiLCJhX29ubW91c2VvdXQiLCJhX29ubW91c2Vtb3ZlIiwiYV9vbnRvdWNoc3RhcnQiLCJhX29udG91Y2hlbmQiLCJhX29udG91Y2htb3ZlIiwiYV9vbnRvdWNoY2FuY2VsIiwiYV9zdG9wX2NvbG9yIiwiYV9zdG9wX29wYWNpdHkiLCJhX3N0cm9rZSIsImFfc3Ryb2tlX3dpZHRoIiwiYV9zdHJva2VfbGluZWNhcCIsImFfc3Ryb2tlX2xpbmVqb2luIiwiYV9zdHJva2VfbWl0ZXJsaW1pdCIsImFfc3Ryb2tlX2Rhc2hhcnJheSIsImFfc3Ryb2tlX2Rhc2hvZmZzZXQiLCJhX3N0cm9rZV9vcGFjaXR5Iiwic3ZnIiwiZGVmcyIsImRlc2MiLCJ0aXRsZSIsInVzZSIsImltYWdlIiwic3dpdGNoJDAiLCJzdHlsZSIsInBhdGgiLCJyZWN0IiwiY2lyY2xlIiwiZWxsaXBzZSIsImxpbmUiLCJwb2x5bGluZSIsInBvbHlnb24iLCJ0ZXh0IiwidHNwYW4iLCJ0cmVmIiwidGV4dFBhdGgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiZ2x5cGhSZWYiLCJtYXJrZXIiLCJjb2xvcl9wcm9maWxlIiwibGluZWFyR3JhZGllbnQiLCJyYWRpYWxHcmFkaWVudCIsInN0b3AiLCJwYXR0ZXJuIiwiY2xpcFBhdGgiLCJmaWx0ZXIiLCJmZURpc3RhbnRMaWdodCIsImZlUG9pbnRMaWdodCIsImZlU3BvdExpZ2h0IiwiZmVCbGVuZCIsImZlQ29sb3JNYXRyaXgiLCJmZUNvbXBvbmVudFRyYW5zZmVyIiwiZmVGdW5jQSIsImZlRnVuY0ciLCJmZUZ1bmNCIiwiZmVGdW5jUiIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2h0aW5nIiwiZmVEaXNwbGFjZW1lbnRNYXAiLCJmZUZsb29kIiwiZmVHYXVzc2lhbkJsdXIiLCJmZUltYWdlIiwiZmVNZXJnZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVUaWxlIiwiZmVUdXJidWxlbmNlIiwiY3Vyc29yIiwidmlldyIsInNjcmlwdCIsImFuaW1hdGUiLCJhbmltYXRlTW90aW9uIiwibXBhdGgiLCJhbmltYXRlQ29sb3IiLCJhbmltYXRlVHJhbnNmb3JtIiwiZm9udCIsImdseXBoIiwibWlzc2luZ19nbHlwaCIsImhrZXJuIiwidmtlcm4iLCJmb250X2ZhY2UiLCJmb250X2ZhY2Vfc3JjIiwiZm9udF9mYWNlX3VyaSIsImZvbnRfZmFjZV9mb3JtYXQiLCJmb250X2ZhY2VfbmFtZSIsImRvY190b2VsdCIsImRhdGEiLCJsZWFmIiwibm9kZSIsImNvZXJjZV9lbHQiLCJmbG9hdF9hdHRyaWIkMCIsImludF9hdHRyaWIiLCJzdHJpbmdfYXR0cmliJDAiLCJ1cmlfYXR0cmliIiwic3BhY2Vfc2VwX2F0dHJpYiIsImNvbW1hX3NlcF9hdHRyaWIiLCJzdHJpbmdfb2ZfYWxpZ25tZW50X2Jhc2VsaW5lIiwic3RyaW5nX29mX2JpZ192YXJpYW50Iiwic3RyaW5nX29mX2Jvb2wiLCJzdHJpbmdfb2ZfY29vcmRzIiwic3RyaW5nX29mX2RvbWluYW50X2Jhc2VsaW5lIiwic3RyaW5nX29mX2luX3ZhbHVlIiwic3RyaW5nX29mX2ludCIsInN0cmluZ19vZl9wZXJjZW50YWdlIiwic3RyaW5nX29mX2ZvdXJmbG9hdHMiLCJzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWIiLCJzdHJpbmdfb2ZfbnVtYmVycyIsInN0cmluZ19vZl9udW1iZXJzX3NlbWljb2xvbiIsInN0cmluZ19vZl9vZmZzZXQiLCJ4JDAiLCJzdHJpbmdfb2Zfb3JpZW50Iiwic3RyaW5nX29mX3N0cm9rZWRhc2hhcnJheSIsInN0cmluZ19vZl90cmFuc2Zvcm0iLCJ4JDIiLCJhbmdsZSIsImFuZ2xlJDAiLCJhbmdsZSQxIiwieCQxIiwic3RyaW5nX29mX3RyYW5zZm9ybXMiLCJhbHRlcm5hdGl2ZV9jb250ZW50X3R5cGVzIiwiZW1wdHl0YWdzIiwiYm9vbF9hdHRyaWIiLCJjb25zdGFudF9hdHRyaWIiLCJsaW5rdHlwZXNfYXR0cmliIiwibWVkaWFkZXNjX2F0dHJpYiIsInNyY3NldF9hdHRyaWIiLCJhX3RpdGxlIiwiYV9wcm9wZXJ0eSIsImFfb25hZnRlcnByaW50IiwiYV9vbmJlZm9yZXByaW50IiwiYV9vbmJlZm9yZXVubG9hZCIsImFfb25ibHVyIiwiYV9vbmNhbnBsYXkiLCJhX29uY2FucGxheXRocm91Z2giLCJhX29uY2hhbmdlIiwiYV9vbmNsb3NlIiwiYV9vbmR1cmF0aW9uY2hhbmdlIiwiYV9vbmVtcHRpZWQiLCJhX29uZW5kZWQiLCJhX29uZm9jdXMiLCJhX29uZm9ybWNoYW5nZSIsImFfb25mb3JtaW5wdXQiLCJhX29uaGFzaGNoYW5nZSIsImFfb25pbnB1dCIsImFfb25pbnZhbGlkIiwiYV9vbm9mZmxpbmUiLCJhX29ub25saW5lIiwiYV9vbnBhdXNlIiwiYV9vbnBsYXkiLCJhX29ucGxheWluZyIsImFfb25wYWdlaGlkZSIsImFfb25wYWdlc2hvdyIsImFfb25wb3BzdGF0ZSIsImFfb25wcm9ncmVzcyIsImFfb25yYXRlY2hhbmdlIiwiYV9vbnJlYWR5c3RhdGVjaGFuZ2UiLCJhX29ucmVkbyIsImFfb25zZWVrZWQiLCJhX29uc2Vla2luZyIsImFfb25zZWxlY3QiLCJhX29uc2hvdyIsImFfb25zdGFsbGVkIiwiYV9vbnN0b3JhZ2UiLCJhX29uc3VibWl0IiwiYV9vbnN1c3BlbmQiLCJhX29udGltZXVwZGF0ZSIsImFfb251bmRvIiwiYV9vbnZvbHVtZWNoYW5nZSIsImFfb253YWl0aW5nIiwiYV9vbmxvYWRlZGRhdGEiLCJhX29ubG9hZGVkbWV0YWRhdGEiLCJhX29ubG9hZHN0YXJ0IiwiYV9vbm1lc3NhZ2UiLCJhX29ubW91c2V3aGVlbCIsImFfb25jb250ZXh0bWVudSIsImFfb25kYmxjbGljayIsImFfb25kcmFnIiwiYV9vbmRyYWdlbmQiLCJhX29uZHJhZ2VudGVyIiwiYV9vbmRyYWdsZWF2ZSIsImFfb25kcmFnb3ZlciIsImFfb25kcmFnc3RhcnQiLCJhX29uZHJvcCIsImFfb25rZXlwcmVzcyIsImFfb25rZXlkb3duIiwiYV9vbmtleXVwIiwiYV94bWxucyIsImFfbWFuaWZlc3QiLCJhX2NpdGUiLCJhX2FjY2Vzc2tleSIsImFfY2hhcnNldCIsImFfYWNjZXB0X2NoYXJzZXQiLCJhX2FjY2VwdCIsImFfaHJlZmxhbmciLCJhX2Rvd25sb2FkIiwiZmlsZSIsImFfcmVsIiwiYV90YWJpbmRleCIsImFfbWltZV90eXBlIiwiYV9hbHQiLCJwIiwiYV9zcmMiLCJhX2xhYmVsX2ZvciIsImFfb3V0cHV0X2ZvciIsImFfc2VsZWN0ZWQiLCJhX3RleHRfdmFsdWUiLCJhX2ludF92YWx1ZSIsImFfdmFsdWUiLCJhX2Zsb2F0X3ZhbHVlIiwiYV9hY3Rpb24iLCJhX2Zvcm1tZXRob2QiLCJhX2VuY3R5cGUiLCJhX2NoZWNrZWQiLCJhX2Rpc2FibGVkIiwiYV9yZWFkb25seSIsImFfbWF4bGVuZ3RoIiwiYV9taW5sZW5ndGgiLCJhX2FsbG93ZnVsbHNjcmVlbiIsImFfYWxsb3dwYXltZW50cmVxdWVzdCIsImFfcmVmZXJyZXJwb2xpY3kiLCJhX2F1dG9jb21wbGV0ZSIsImFfYXN5bmMiLCJhX2F1dG9mb2N1cyIsImFfYXV0b3BsYXkiLCJhX211dGVkIiwiYV9jcm9zc29yaWdpbiIsImFfaW50ZWdyaXR5IiwiYV9tZWRpYWdyb3VwIiwiYV9jaGFsbGVuZ2UiLCJhX2NvbnRlbnRlZGl0YWJsZSIsImNlIiwiYV9jb250ZXh0bWVudSIsImFfY29udHJvbHMiLCJhX2RpciIsImFfZHJhZ2dhYmxlIiwiYV9mb3JtIiwiYV9mb3JtYWN0aW9uIiwiYV9mb3JtZW5jdHlwZSIsImFfZm9ybW5vdmFsaWRhdGUiLCJhX2Zvcm10YXJnZXQiLCJhX2hpZGRlbiIsImFfaGlnaCIsImFfaWNvbiIsImFfaXNtYXAiLCJhX2tleXR5cGUiLCJhX2xpc3QiLCJhX2xvb3AiLCJhX2xvdyIsImFfaW5wdXRfbWF4IiwiYV9pbnB1dF9taW4iLCJhX2lucHV0bW9kZSIsImFfbm92YWxpZGF0ZSIsImFfb3BlbiIsImFfb3B0aW11bSIsImFfcGF0dGVybiIsImFfcGxhY2Vob2xkZXIiLCJhX3Bvc3RlciIsImFfcHJlbG9hZCIsImFfcHViZGF0ZSIsImFfcmFkaW9ncm91cCIsImFfcmVxdWlyZWQiLCJhX3JldmVyc2VkIiwiYV9zYW5kYm94IiwiYV9zcGVsbGNoZWNrIiwic2MiLCJhX3Njb3BlZCIsImFfc2VhbWxlc3MiLCJhX3NpemVzIiwic2l6ZXMiLCJhX3NwYW4iLCJhX3NyY2xhbmciLCJhX3NyY3NldCIsImFfaW1nX3NpemVzIiwiYV9zdGFydCIsImFfc3RlcCIsInN0ZXAiLCJhX3RyYW5zbGF0ZSIsImFfd3JhcCIsImFfc2l6ZSIsImFfaW5wdXRfdHlwZSIsIml0IiwiYV9tZW51X3R5cGUiLCJhX2NvbW1hbmRfdHlwZSIsImFfYnV0dG9uX3R5cGUiLCJidCIsImFfc2NyaXB0X3R5cGUiLCJhX211bHRpcGxlIiwiYV9jb2xzIiwiYV9yb3dzIiwiYV9zdW1tYXJ5IiwiYV9hbGlnbiIsImFfYXhpcyIsImFfY29sc3BhbiIsImFfaGVhZGVycyIsImFfcm93c3BhbiIsImFfc2NvcGUiLCJhX2JvcmRlciIsImFfcnVsZXMiLCJhX2NoYXIiLCJhX2RhdGEiLCJhX2NvZGV0eXBlIiwiYV9mcmFtZWJvcmRlciIsImFfbWFyZ2luaGVpZ2h0IiwiYV9tYXJnaW53aWR0aCIsImFfc2Nyb2xsaW5nIiwiYV9jb250ZW50IiwiYV9odHRwX2VxdWl2IiwiYV9yb2xlIiwiYV9hcmlhIiwidGVybWluYWwiLCJwbHVzIiwib3B0aW9uX2NvbnMiLCJib2R5IiwiaHRtbCIsImNvbnRlbnQiLCJmb290ZXIiLCJoZWFkZXIiLCJzZWN0aW9uIiwibmF2IiwiZW50aXR5Iiwic3BhY2UiLCJjZGF0YSIsImNkYXRhX3NjcmlwdCIsImNkYXRhX3N0eWxlIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGdyb3VwIiwiYWRkcmVzcyIsImJsb2NrcXVvdGUiLCJkaWFsb2ciLCJkaXYiLCJwcmUiLCJhYmJyIiwiYnIiLCJjaXRlIiwiZGZuIiwiZW0iLCJrYmQiLCJzYW1wIiwic3BhbiIsInN0cm9uZyIsInRpbWUiLCJ2YXIkMCIsImRsIiwib2wiLCJ1bCIsImRkIiwibGkiLCJociIsInNtYWxsIiwic3ViIiwic3VwIiwibWFyayIsInJwIiwicnQiLCJydWJ5Iiwid2JyIiwiYmRvIiwiZGlyIiwiYV9kYXRldGltZSIsImFfc2hhcGUiLCJhX2Nvb3JkcyIsImNvb3JkcyIsImFfdXNlbWFwIiwiYV9kZWZlciIsImFfbGFiZWwiLCJhcmVhIiwiYWx0IiwiZGVsIiwiaW5zIiwibm9zY3JpcHQiLCJ0ZW1wbGF0ZSIsImFydGljbGUiLCJhc2lkZSIsIm1haW4iLCJ2aWRlb19hdWRpbyIsInNyY3MiLCJ1cmkiLCJzcmNzJDAiLCJhdWRpbyIsInZpZGVvIiwiY2FudmFzIiwiY29tbWFuZCIsImxhYmVsIiwibWVudSIsImVtYmVkIiwic291cmNlIiwibWV0ZXIiLCJvdXRwdXRfZWx0IiwiZm9ybSIsImlucHV0Iiwia2V5Z2VuIiwib3B0aW9uIiwic2VsZWN0IiwidGV4dGFyZWEiLCJidXR0b24iLCJkYXRhbGlzdCIsInByb2dyZXNzIiwibGVnZW5kIiwiZGV0YWlscyIsInN1bW1hcnkiLCJmaWVsZHNldCIsIm9wdGdyb3VwIiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImMkMCIsImNhcHRpb24iLCJ0YWJsZXgiLCJjb2x1bW5zIiwidGhlYWQiLCJ0Zm9vdCIsImNvbHVtbnMkMCIsImNvbnRlbnQkMCIsImNvbnRlbnQkMSIsInRkIiwidGgiLCJ0ciIsImNvbGdyb3VwIiwiY29sIiwidGJvZHkiLCJpZnJhbWUiLCJvYmplY3QiLCJwYXJhbXMiLCJlbHRzJDAiLCJpbWciLCJwaWN0dXJlIiwidGFpbF9ub2RlIiwibWV0YSIsImxpbmsiLCJyZWwiLCJocmVmIiwiYmFzZSIsInBhcmFtIiwiaW50X2F0dHJpYiQwIiwidXJpX2F0dHJpYiQwIiwic3BhY2Vfc2VwX2F0dHJpYiQwIiwiY29tbWFfc2VwX2F0dHJpYiQwIiwic3RyaW5nX29mX3NhbmRib3hfdG9rZW4iLCJzdHJpbmdfb2ZfbGlua3R5cGUiLCJzdHJpbmdfb2ZfbWVkaWFkZXNjX3Rva2VuIiwic3RyaW5nX29mX3JlZmVycmVycG9saWN5Iiwic3RyaW5nX29mX2lucHV0X3R5cGUiLCJzdHJpbmdfb2Zfc2NyaXB0X3R5cGUiLCJzdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lIiwidCIsInN0cmluZ19vZl9jaGFyYWN0ZXIiLCJvbm9mZl9vZl9ib29sIiwidW5vcHRpb25fc3RyaW5nIiwic3RyaW5nX29mX3N0ZXAiLCJzdHJpbmdfb2Zfc2l6ZXMiLCJzdHJpbmdfb2Zfc2FuZGJveCIsInN0cmluZ19vZl9tZWRpYWRlc2MiLCJzdHJpbmdfb2ZfbGlua3R5cGVzIiwic3RyaW5nX29mX3NyY3NldCIsInVybCIsInVybCQwIiwidiQwIiwidXJsJDEiLCJzdHJpbmdfb2ZfYXV0b2NvbXBsZXRlIiwic3RycyIsInVyaV9vZl9zdHJpbmciLCJzIiwic3RyaW5nX29mX3VyaSIsImFjb250ZW50IiwiYSIsImFuYW1lIiwibmFtZSIsImZsb2F0X2F0dHJpYiIsInZhbHVlIiwiaW50X2F0dHJpYiIsInN0cmluZ19hdHRyaWIiLCJzcGFjZV9zZXBfYXR0cmliIiwidmFsdWVzIiwiY29tbWFfc2VwX2F0dHJpYiIsImV2ZW50X2hhbmRsZXJfYXR0cmliIiwibW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidXJpX2F0dHJpYiIsInVyaXNfYXR0cmliIiwiY29udGVudCIsImVsdCIsImVtcHR5IiwiY29tbWVudCIsImMiLCJwY2RhdGEiLCJkIiwiZW5jb2RlZHBjZGF0YSIsImVudGl0eSIsImUiLCJyZV9lbmRfY2RhdGEiLCJlbmNvZGVkX2NkYXRhIiwiczEiLCJzMiIsImNkYXRhIiwiY2RhdGFfc2NyaXB0IiwiY2RhdGFfc3R5bGUiLCJsZWFmIiwib3B0Iiwic3RoIiwibm9kZSIsImNoaWxkcmVuIiwicHJpbnQiLCJmbXQiLCJ4IiwicHAkMCIsInBwX2VsdCQwIiwibWVyZ2UiLCJtYXBfcGF0Y2giLCJtYXBfZGF0YSIsImVtcHR5IiwiY3JlYXRlIiwibCIsInNlbmQiLCJpbml0aWFsX2V2ZW50IiwiY3VycmVudCIsIm1zZyIsInAiLCJldmVudCIsImZyb21fZXZlbnQiLCJjb25zdCQwIiwieCIsIm1hcF9tc2ciLCJmIiwibWFwIiwicyIsInMkMCIsIm1zZyQwIiwidmFsdWUiLCJjIiwicGF0Y2giLCJzZXQiLCJmb2xkIiwiYWNjIiwiYWNjJDAiLCJzaWduYWwiLCJvcHQiLCJzdGgiLCJlcSIsImwkMCIsImZyb21fc2lnbmFsIiwiZCQwIiwiZCIsImkiLCJpJDAiLCJ4JDAiLCJpJDEiLCJqIiwiaSQyIiwicCQ1IiwibCQ3IiwibiIsInAkMyIsImkkMyIsInAkNCIsImwkMiIsIm9wIiwieHMiLCJuJDAiLCJhY2MkMSIsIm4kMSIsImwkMSIsInhzJDAiLCJ4JDEiLCJuJDIiLCJhY2MkMiIsIngkMiIsImkkNCIsImEiLCJvZmZzZXQiLCJpJDUiLCJhJDAiLCJsZW4iLCJpJDYiLCJ2IiwiaiQwIiwiaTAiLCJoIiwicCQwIiwiaTAkMCIsImwkMyIsInAkMSIsImkwJDEiLCJsJDQiLCJwJDIiLCJpMCQyIiwibCQ1IiwibCQ2IiwiZXF1YWwiLCJsMSIsImwyIiwibDEkMCIsImwyJDAiLCJ4MiIsImwxJDEiLCJ4MSIsImwyJDEiLCJtZW0iLCJoYXNoIiwiZGlmZiIsInN0aCQwIiwibHgkMSIsImx5JDMiLCJhZGQiLCJyZW1vdmUiLCJtZW14IiwibWVteSIsImxlZnQiLCJseCIsImx5IiwibHgkMCIsInkiLCJseSQwIiwibHkkMSIsImFjYyQzIiwiYWNjJDQiLCJseSQyIiwieSQwIiwiYWNjJDUiLCJuJDMiLCJhY2MkNiIsImFjYyQ3Iiwib3B0JDAiLCJlbXB0eSQwIiwiY29ucyIsInNub2MiLCJpbnNlcnQiLCJ1cGRhdGUiLCJtb3ZlIiwiaW5kZXgiLCJoZCIsInRsIiwidXBkYXRlX2VxIiwiaGFuZGxlIiwiZGF0YSIsInJlbW92ZV9sYXN0IiwicmVtb3ZlX2VxIiwic2luZ2xldG9uIiwic2luZ2xldG9uX3MiLCJmaXJzdCIsImUiLCJyZXN1bHQiLCJjb25jYXQiLCJ2MSIsInYyIiwic2l6ZTEiLCJzaXplMiIsInNpemVfd2l0aF9wYXRjaCIsInNpemV4Iiwic2l6ZV93aXRoX3NldCIsInBvcyIsIm0iLCJwb3MkMCIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInVwZGF0ZV9wYXRjaDEiLCJ1cGRhdGVfcGF0Y2gyIiwicDEiLCJwMiIsInR1cGxlX2V2IiwicDIkMiIsInAyJDMiLCJwMSQwIiwicDIkMCIsInMyIiwiczEiLCJwMSQxIiwiczIkMCIsInAyJDEiLCJtZXJnZWRfZXYiLCJpbnZlcnNlIiwicmV2IiwidCIsImZpbHRlciIsInByZWQiLCJzaXplIiwiZmlsdGVyX2xpc3QiLCJyZXMiLCJ0aGVpcl9pIiwibXlfaSIsIm15X2kkMCIsInRoZWlyX2kkMCIsInJlcyQwIiwidGhlaXJfaSQxIiwibm9ybWFsaXNlIiwidXBkYXRlX2luZGV4X2luc2VydCIsImluc2VydF9wb3NfZnVsbF9saXN0IiwidmlzaWJsZSIsImluc2VydF9wb3NfZnVsbF9saXN0JDAiLCJ1cGRhdGFibGVzIiwiZGlzcGxhY2VkIiwibGVmdF9hbG9uZSIsImRpc3BsYWNlZF9pbl9maWx0ZXJlZCIsInVwZGF0YWJsZXMkMCIsInVwZGF0ZV9qIiwial9mdWxsX2xpc3QiLCJqX2ZpbHRlcmVkX2xpc3QiLCJuZXdfal9maWx0ZXJlZCIsImluc2VydF9wb3NfZmlsdGVyZWQiLCJ1cGRhdGVfaW5kZXhfbW92ZSIsImZyb21fZnVsbF9saXN0IiwidG9fZnVsbF9saXN0IiwidG9fZmlsdGVyZWQiLCJ3YXNfdmlzaWJsZSIsImZvcndhcmQiLCJpX2Z1bGwiLCJkZWx0YSIsImlfZmlsdGVyZWQiLCJuZXdfdmFsIiwiaV9mdWxsJDAiLCJkZWx0YSQwIiwiaV9maWx0ZXJlZCQwIiwibmV3X3ZhbCQwIiwidG9fZmlsdGVyZWQkMCIsImNvbnZlcnRfcCIsInJlbW92ZV9wb3NfZnVsbF9saXN0IiwicmV0IiwibmV3X2oiLCJsYXN0X2kiLCJ1cGRhdGVfcG9zX2Z1bGxfbGlzdCIsIm9sZF9qIiwidXBkYXRlX2okMCIsInVwZGF0YWJsZXMkMSIsIm5vbmUiLCJ1cGRhdGVfaiQxIiwicHJldmlvdXNfcG9zX2ZpbHRlcmVkIiwibmV3X3Bvc19maWx0ZXJlZF9saXN0Iiwib2Zmc2V0X2Z1bGwiLCJvcmlnaW5fZnVsbCIsIm9yaWdpbl9mdWxsJDAiLCJkZXN0X2Z1bGwiLCJvcmlnaW5fZmlsdGVyZWQiLCJkZXN0X2ZpbHRlcmVkIiwic21hbGxfb25lcyIsImZpbHRlcl9lIiwiZm9yX2FsbCIsImZuIiwibWF5YmVfdXBkYXRlIiwiaW5pdCIsInVwZGF0ZV9pZHhfYWZ0ZXIiLCJ1cGRhdGVzIiwidiQwIiwiayIsImskMCIsImciLCJrZXkiLCJ3IiwidyQwIiwidiQxIiwiZyQwIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJyZWJ1aWxkX25vZGUiLCJvZl9lbGVtZW50IiwiZWx0Iiwib2Zfbm9kZSIsIm9mX3BjZGF0YSIsIm9mX2h0bWwiLCJvZl9oZWFkIiwib2ZfbGluayIsIm9mX3RpdGxlIiwib2ZfbWV0YSIsIm9mX2Jhc2UiLCJvZl9zdHlsZSIsIm9mX2JvZHkiLCJvZl9mb3JtIiwib2Zfb3B0Z3JvdXAiLCJvZl9vcHRpb24iLCJvZl9zZWxlY3QiLCJvZl9pbnB1dCIsIm9mX3RleHRhcmVhIiwib2ZfYnV0dG9uIiwib2ZfbGFiZWwiLCJvZl9maWVsZHNldCIsIm9mX2xlZ2VuZCIsIm9mX3VsIiwib2Zfb2wiLCJvZl9kbCIsIm9mX2xpIiwib2ZfZGl2Iiwib2ZfcCIsIm9mX2hlYWRpbmciLCJvZl9ibG9ja3F1b3RlIiwib2ZfcHJlIiwib2ZfYnIiLCJvZl9ociIsIm9mX2lucyIsIm9mX2RlbCIsIm9mX2EiLCJvZl9pbWciLCJvZl9vYmplY3QiLCJvZl9wYXJhbSIsIm9mX2FyZWEiLCJvZl9tYXAiLCJvZl9zY3JpcHQiLCJvZl90ZCIsIm9mX3RyIiwib2ZfY29sIiwib2ZfdGZvb3QiLCJvZl90aGVhZCIsIm9mX3Rib2R5Iiwib2ZfY2FwdGlvbiIsIm9mX3RhYmxlIiwib2ZfY2FudmFzIiwib2ZfaWZyYW1lIiwib2ZfYXVkaW8iLCJvZl92aWRlbyIsIm9mX2gxIiwib2ZfaDIiLCJvZl9oMyIsIm9mX2g0Iiwib2ZfaDUiLCJvZl9oNiIsIm9mX2FiYnIiLCJvZl9hZGRyZXNzIiwib2ZfYXJ0aWNsZSIsIm9mX2FzaWRlIiwib2ZfYiIsIm9mX2JkbyIsIm9mX2NpdGUiLCJvZl9jb2RlIiwib2ZfY29sZ3JvdXAiLCJvZl9jb21tYW5kIiwib2ZfZGF0YWxpc3QiLCJvZl9kZCIsIm9mX2RldGFpbHMiLCJvZl9kZm4iLCJvZl9kdCIsIm9mX2VtIiwib2ZfZW1iZWQiLCJvZl9maWdjYXB0aW9uIiwib2ZfZmlndXJlIiwib2ZfZm9vdGVyIiwib2ZfaGVhZGVyIiwib2ZfaGdyb3VwIiwib2ZfaSIsIm9mX2tiZCIsIm9mX2tleWdlbiIsIm9mX21haW4iLCJvZl9tYXJrIiwib2ZfbWVudSIsIm9mX21ldGVyIiwib2ZfbmF2Iiwib2Zfbm9zY3JpcHQiLCJvZl9vdXRwdXQiLCJvZl9wcm9ncmVzcyIsIm9mX3EiLCJvZl9ycCIsIm9mX3J0Iiwib2ZfcnVieSIsIm9mX3NhbXAiLCJvZl9zZWN0aW9uIiwib2Zfc21hbGwiLCJvZl9zb3VyY2UiLCJvZl9zcGFuIiwib2Zfc3Ryb25nIiwib2Zfc3ViIiwib2Zfc3VtbWFyeSIsIm9mX3N1cCIsIm9mX3RoIiwib2ZfdGltZSIsIm9mX3UiLCJvZl92YXIiLCJvZl93YnIiLCJvZl9vcHRHcm91cCIsIm9mX3RleHRBcmVhIiwib2ZfZmllbGRTZXQiLCJvZl91TGlzdCIsIm9mX29MaXN0Iiwib2ZfZExpc3QiLCJvZl9wYXJhZ3JhcGgiLCJvZl9xdW90ZSIsIm9mX21vZCIsIm9mX2FuY2hvciIsIm9mX2ltYWdlIiwib2ZfdGFibGVDZWxsIiwib2ZfdGFibGVSb3ciLCJvZl90YWJsZUNvbCIsIm9mX3RhYmxlU2VjdGlvbiIsIm9mX3RhYmxlQ2FwdGlvbiIsIm9mX2lGcmFtZSIsIndlYWtNYXAiLCJtYXAiLCJyZXRhaW4iLCJub2RlIiwia2VlcG1lIiwicHJldiIsInVyaV9vZl9zdHJpbmciLCJzIiwic3RyaW5nX29mX3VyaSIsImF0dHIiLCJuYW1lIiwidiIsImZsb2F0X2F0dHJpYiIsInZhbHVlIiwiaW50X2F0dHJpYiIsInN0cmluZ19hdHRyaWIiLCJzcGFjZV9zZXBfYXR0cmliIiwidmFsdWVzIiwiY29tbWFfc2VwX2F0dHJpYiIsImV2ZW50X2hhbmRsZXJfYXR0cmliIiwibW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidXJpX2F0dHJpYiIsInVyaXNfYXR0cmliIiwiZW1wdHkiLCJjb21tZW50IiwiYyIsInBjZGF0YSIsImVuY29kZWRwY2RhdGEiLCJzdHJpbmdfZm9sZCIsInBvcyIsImluaXQiLCJmIiwiciIsImkiLCJpbnZhbGlkX2VudGl0eSIsImUiLCJwYXJzZV9pbnQiLCJiYXNlIiwiYWNjIiwiZCIsImVudGl0eSIsImxlbiIsInN0ciIsIml0ZXJfcHJvcF9wcm90ZWN0ZWQiLCJuIiwiYXR0YWNoX2F0dHJpYnMiLCJsIiwiYXR0IiwibiQwIiwiaCIsImV2IiwiaCQwIiwiaCQxIiwiaCQyIiwiYSIsImxlYWYiLCJvcHQiLCJzdGgiLCJjaGlsZHJlbiIsImNkYXRhIiwiY2RhdGFfc2NyaXB0IiwiY2RhdGFfc3R5bGUiLCJsZWFmJDAiLCJub2RlJDAiLCJlbHQkMCIsImFkZF90byIsImNvbnRlbnQiLCJrZWVwIiwiaWQiLCJib2R5IiwiaGVhZCIsImh0bWwiLCJyZXR1cm4kMCIsImZtYXAiLCJuaWwiLCJzaW5nbGV0b24iLCJjb25zIiwieHMiLCJtYXAkMCIsImFwcGVuZCIsImluc2VydEF0IiwiZG9tIiwicmVtb3ZlQ2hpbGRyZW4iLCJ1cGRhdGVfY2hpbGRyZW4iLCJub2RlcyIsIm1zZyIsInAiLCJpJDAiLCJpJDEiLCJpJDIiLCJ4JDAiLCJpJDMiLCJpJDQiLCJvbGQiLCJtb3ZlIiwiaSQ1IiwiaSQ2IiwiaSQ3IiwiZmlsdGVyX2F0dHJpYiIsIm9uIiwiYSQwIiwiYXR0ciQwIiwiZmxvYXRfYXR0cmliJDAiLCJpbnRfYXR0cmliJDAiLCJzdHJpbmdfYXR0cmliJDAiLCJzcGFjZV9zZXBfYXR0cmliJDAiLCJjb21tYV9zZXBfYXR0cmliJDAiLCJldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwibW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIkMCIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJ0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwidXJpX2F0dHJpYiQwIiwidXJpc19hdHRyaWIkMCIsInBjZGF0YSQwIiwiZW5jb2RlZHBjZGF0YSQwIiwiZW50aXR5JDAiLCJub2RlJDEiLCJub2RlJDIiLCJnZXQiLCJub2RlIiwic2V0IiwiZGF0YSIsInJlbW92ZSIsImNyZWF0ZSIsInNlcSIsImNsZWFyIiwiaXNfZW1wdHkiLCJsZW5ndGgiLCJjdXJyJDEiLCJjdXJyIiwibGVuIiwibGVuJDAiLCJjdXJyJDAiLCJhZGRfbCIsImFkZF9yIiwidGFrZV9sIiwidGFrZV9yIiwidGFrZV9vcHRfbCIsInRha2Vfb3B0X3IiLCJ0cmFuc2Zlcl9sIiwiczEiLCJzMiIsInRyYW5zZmVyX3IiLCJpdGVyX2wiLCJmIiwiaXRlcl9yIiwiaXRlcl9ub2RlX2wiLCJpdGVyX25vZGVfciIsImZvbGRfbCIsImFjYyIsImN1cnIkMiIsImFjYyQwIiwiYWNjJDEiLCJmb2xkX3IiLCJmaW5kX25vZGVfbCIsImZpbmRfbm9kZV9yIiwiZmluZF9ub2RlX29wdF9sIiwiZmluZF9ub2RlX29wdF9yIiwiY29tcGFyZSIsInN0YXRlX29mX3Jlc3VsdCIsIngiLCJleG4iLCJ1bmRlcmx5aW5nIiwicCIsInAkMCIsInAkMSIsInNldF9wcm9taXNlX3N0YXRlIiwic3RhdGUiLCJoYW5kbGVfYWxsIiwiaGFuZGxlX2FsbF9leGNlcHRfcnVudGltZSIsInYiLCJydW4iLCJlIiwibmV4dF9rZXlfaWQiLCJuZXdfa2V5IiwiaWQiLCJjdXJyZW50X3N0b3JhZ2UiLCJrZXkiLCJyZWZyZXNoIiwidmFsdWUiLCJ3aXRoX3ZhbHVlIiwibmV3X3N0b3JhZ2UiLCJzYXZlZF9zdG9yYWdlIiwicmVzdWx0IiwiZXhuJDAiLCJjb25jYXRfcmVndWxhcl9jYWxsYmFja3MiLCJsMSIsImwyIiwiY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMiLCJjYWxsYmFja3MiLCJsMSQwIiwibDIkMCIsImNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbCIsImNlbGwiLCJwcyIsImNsZWFudXBzX2RlZmVycmVkIiwiYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlIiwiZXhpc3RpbmciLCJub2RlJDAiLCJhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWMiLCJhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGIiLCJzZWxmX3JlbW92aW5nX2NhbGxiYWNrX3dyYXBwZXIiLCJhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGIkMCIsImFkZF9jYW5jZWxfY2FsbGJhY2siLCJhc3luY19leGNlcHRpb25faG9vayIsImhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9obyIsInJ1bl9jYWxsYmFja3MiLCJpc19jYW5jZWxlZCIsImZzIiwiaXRlcl9jYWxsYmFja19saXN0JDIiLCJyZXN0IiwiZnMkMCIsInJlc3QkMCIsIml0ZXJfbGlzdCQwIiwiZnMkMSIsImZzJDIiLCJyZXN0JDEiLCJzdG9yYWdlIiwiaXRlcl9jYWxsYmFja19saXN0IiwiaXRlcl9jYWxsYmFja19saXN0JDEiLCJpdGVyX2xpc3QiLCJmJDAiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMCIsImN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCIsImRlZmVycmVkX2NhbGxiYWNrcyIsImRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aSIsImxlYXZlX3Jlc29sdXRpb25fbG9vcCIsInN0b3JhZ2Vfc25hcHNob3QiLCJydW5faW5fcmVzb2x1dGlvbl9sb29wIiwiYWJhbmRvbl93YWtldXBzIiwicnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtIiwib3B0Iiwic3RoIiwiYWxsb3dfZGVmZXJyaW5nIiwic3RoJDAiLCJtYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGgiLCJzaG91bGRfZGVmZXIiLCJyZXNvbHZlIiwicnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0IiwiaWZfZGVmZXJyZWQiLCJydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWkiLCJkZWZlcnJlZF9yZXN1bHQiLCJkZWZlcnJlZF9jYWxsYmFjayIsImltbWVkaWF0ZV9yZXN1bHQiLCJkZWZlcnJlZF9yZWNvcmQiLCJ3YWtldXBfZ2VuZXJhbCIsImFwaV9mdW5jdGlvbl9uYW1lIiwiciIsInJlc3VsdCQwIiwid2FrZXVwX3Jlc3VsdCIsIndha2V1cCIsIndha2V1cF9leG4iLCJ3YWtldXBfbGF0ZXJfZ2VuZXJhbCIsIndha2V1cF9sYXRlcl9yZXN1bHQiLCJ3YWtldXBfbGF0ZXIiLCJ3YWtldXBfbGF0ZXJfZXhuIiwiY2FuY2VsIiwiY2FuY2VsZWRfcmVzdWx0IiwiY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyIsImNhbGxiYWNrc19hY2N1bXVsYXRvciIsInAkMiIsInBhcmFtIiwicmV0dXJuJDAiLCJvZl9yZXN1bHQiLCJmYWlsIiwicmV0dXJuX3VuaXQiLCJyZXR1cm5fbm9uZSIsInJldHVybl9zb21lIiwicmV0dXJuX25pbCIsInJldHVybl90cnVlIiwicmV0dXJuX2ZhbHNlIiwicmV0dXJuX29rIiwicmV0dXJuX2Vycm9yIiwiZmFpbF93aXRoIiwibXNnIiwiZmFpbF9pbnZhbGlkX2FyZyIsIm5ld19wZW5kaW5nIiwiaG93X3RvX2NhbmNlbCIsIndhaXQiLCJ0YXNrIiwiYWRkX3Rhc2tfciIsInNlcXVlbmNlIiwiYWRkX3Rhc2tfbCIsInByb3RlY3RlZCQwIiwicF9pbnRlcm5hbCIsImNhbGxiYWNrIiwicF9yZXN1bHQiLCJyZW1vdmVfdGhlX2NhbGxiYWNrIiwicF9jYWxsYmFja3MiLCJub19jYW5jZWwiLCJtYWtlX2ludG9fcHJveHkiLCJvdXRlcl9wcm9taXNlIiwidXNlcl9wcm92aWRlZF9wcm9taXNlIiwib3V0ZXJfY2FsbGJhY2tzIiwicmVndWxhcl9jYWxsYmFja3MiLCJjbGVhbnVwc19kZWZlcnJlZCQwIiwicmVndWxhcl9jYWxsYmFja3MkMCIsImNhbmNlbF9jYWxsYmFja3MiLCJzeW1ib2xfYmluZCIsImNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbCIsImJhY2t0cmFjZV9iaW5kIiwiYWRkX2xvYyIsInN5bWJvbCIsInBfcmVzdWx0JDAiLCJjYXRjaCQwIiwiaCIsImJhY2t0cmFjZV9jYXRjaCIsInRyeV9iaW5kIiwiZXhuJDEiLCJwJDMiLCJiYWNrdHJhY2VfdHJ5X2JpbmQiLCJmaW5hbGl6ZSIsImJhY2t0cmFjZV9maW5hbGl6ZSIsIm9uX2NhbmNlbCIsIm9uX3N1Y2Nlc3MiLCJjYWxsYmFja19pZl9kZWZlcnJlZCIsIm9uX2ZhaWx1cmUiLCJvbl90ZXJtaW5hdGlvbiIsIm9uX2FueSIsImciLCJ3cmFwX2luX2NhbmNlbGFibGUiLCJwX3VuZGVybHlpbmciLCJkb250X3dhaXQiLCJhc3luYyIsImlnbm9yZV9yZXN1bHQiLCJqb2luIiwibnVtYmVyX3BlbmRpbmdfaW5fcHMiLCJqb2luX3Jlc3VsdCIsIm5ld19yZXN1bHQiLCJwcyQwIiwicHMkMSIsImJvdGgiLCJwMSIsInAyIiwicGFpciIsInAxJDAiLCJwMiQwIiwidjIiLCJ2MSIsImFsbCIsInkiLCJ2cyIsImluZGV4IiwiaSQxIiwiaSIsImkkMCIsImNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIiwidG90YWwkMSIsInBzJDIiLCJwcyQzIiwidG90YWwkMiIsInJlamVjdGVkJDEiLCJ0b3RhbCIsInJlamVjdGVkIiwicmVqZWN0ZWQkMCIsInRvdGFsJDAiLCJudGhfcmVzb2x2ZWQiLCJuIiwibiQwIiwibiQyIiwibiQxIiwibnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluIiwicHJuZyIsImNob29zZSIsInBpY2siLCJxcyIsImNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdCIsInJlc3VsdHMiLCJyZXN1bHRzJDAiLCJyZXN1bHRzJDEiLCJuY2hvb3NlIiwidiQwIiwibnBpY2siLCJuY2hvb3NlX3NwbGl0IiwicGVuZGluZ19hY2MiLCJwX2ludGVybmFsJDAiLCJwZW5kaW5nX2FjYyQwIiwidG9fcmVzb2x2ZSIsImZ1bGZpbGxlZCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJmdWxmaWxsZWQkMCIsImRlYnVnX3N0YXRlX2lzIiwiZXhwZWN0ZWRfc3RhdGUiLCJpc19zbGVlcGluZyIsInBvbGwiLCJhcHBseSIsIndyYXAiLCJ3cmFwMSIsIngxIiwid3JhcDIiLCJ4MiIsIndyYXAzIiwieDMiLCJ3cmFwNCIsIng0Iiwid3JhcDUiLCJ4NSIsIndyYXA2IiwieDYiLCJ3cmFwNyIsIng3IiwicGF1c2VfaG9vayIsInBhdXNlZCIsInBhdXNlIiwid2FrZXVwX3BhdXNlZCIsInRtcCIsInJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIiwiYWJhbmRvbl9wYXVzZWQiLCJwYXVzZWRfY291bnQiLCJtYXAiLCJ0IiwiYmluZCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibGV0JDAiLCJpc19vbiIsInN3aXRjaCQwIiwiY2hlY2siLCJhZGRfaG9vayIsImhvb2siLCJvcyIsImFkZF9ob29rX29yX2V4ZWMiLCJ0dXJuX29mZiIsImhvb2tzIiwid2l0aF9zd2l0Y2giLCJmbiIsImVtcHR5IiwicmV0dXJuX2x3dCIsImNvbnMiLCJjb25zX2x3dCIsInNlcTEiLCJzZXEyIiwibmV4dCIsImFwcGVuZCIsIngkMCIsIm1hcF9zIiwiZmlsdGVyX21hcCIsImZpbHRlcl9tYXBfcyIsIm9rIiwiZmlsdGVyIiwiZmlsdGVyX3MiLCJmbGF0X21hcF9hcHAiLCJ0YWlsIiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhdXgiLCJmb2xkX2xlZnRfcyIsIml0ZXIiLCJpdGVyX3MiLCJpdGVyX3AiLCJpdGVyX24iLCJtYXhfY29uY3VycmVuY3kiLCJtZXNzYWdlIiwibG9vcCIsInJ1bm5pbmciLCJhdmFpbGFibGUiLCJlbHQiLCJjb21wbGV0ZSIsInVuZm9sZCIsInUiLCJleGMkMCIsImV4YyIsInUkMCIsInVuZm9sZF9sd3QiLCJvZl9saXN0IiwibCIsInRvX2xpc3QkMCIsIm9mX3NlcSIsIm5leHQkMCIsIm9mX3NlcV9sd3QiLCJuZXdfbm9kZSIsImNsb25lIiwicyIsImZyb21fc291cmNlIiwic291cmNlIiwiY2xvc2UiLCJjbG9zZWQiLCJmcm9tIiwiZnJvbV9kaXJlY3QiLCJpc19jbG9zZWQiLCJlbnF1ZXVlIiwibGFzdCIsIm5ld19sYXN0IiwiZW5xdWV1ZSQwIiwiY3JlYXRlX3dpdGhfcmVmZXJlbmNlIiwicHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJwdXNoX3NpZ25hbCIsInB1c2hfc2lnbmFsX3Jlc29sdmVyJDAiLCJwdXNoIiwib2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyIiwibmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyIiwibmV3X3dhaXRlciIsImEiLCJzdHJlYW0iLCJzJDAiLCJvZl9sd3Rfc2VxIiwib2ZfaXRlciIsIm9mX2FycmF5Iiwib2Zfc3RyaW5nIiwibm90aWZ5X3B1c2hlciIsImluZm8iLCJvbGRfd2FrZW5lciIsIndha2VuZXIiLCJ3YWl0ZXIiLCJzZWxmXzEiLCJzaXplIiwibmV3X3dha2VuZXIiLCJjcmVhdGVfYm91bmRlZCIsInB1c2hfd2FrZW5lciIsInB1c2hfd2FpdGVyIiwid2FrZW5lcl9jZWxsIiwiZmVlZCIsInRocmVhZCIsInB1c2gkMCIsImNvbnN1bWUiLCJwZWVrX3JlYyIsInBlZWsiLCJucGVla19yZWMiLCJub2RlJDEiLCJucGVlayIsImdldF9yZWMiLCJnZXRfZXhuX3JlYyIsIndyYXBfZXhuIiwibmdldF9yZWMiLCJuZ2V0IiwiZ2V0X3doaWxlX3JlYyIsInRlc3QiLCJnZXRfd2hpbGUiLCJnZXRfd2hpbGVfc19yZWMiLCJnZXRfd2hpbGVfcyIsIm5leHRfcmVjIiwibGFzdF9uZXdfcmVjIiwieCQxIiwibGFzdF9uZXciLCJ0b19saXN0X3JlYyIsInRvX2xpc3QiLCJ0b19zdHJpbmdfcmVjIiwiYnVmIiwidG9fc3RyaW5nIiwianVuayIsIm5qdW5rX3JlYyIsIm5qdW5rIiwianVua193aGlsZV9yZWMiLCJqdW5rX3doaWxlIiwianVua193aGlsZV9zX3JlYyIsImp1bmtfd2hpbGVfcyIsImp1bmtfb2xkIiwiZ2V0X2F2YWlsYWJsZSIsImdldF9hdmFpbGFibGVfdXBfdG8iLCJtYXBfbGlzdCIsInBlbmRpbmdzIiwibWFwX2xpc3RfcyIsImZsYXR0ZW4iLCJmb2xkX3JlYyIsImZvbGQiLCJmb2xkX3NfcmVjIiwiZm9sZF9zIiwiaXRlcl9yZWMiLCJpdGVyX3NfcmVjIiwiaXRlcl9wX3JlYyIsInJlcyIsImZpbmRfcmVjIiwiZmluZCIsImZpbmRfc19yZWMiLCJmaW5kX3MiLCJmaW5kX21hcF9yZWMiLCJmaW5kX21hcCIsImZpbmRfbWFwX3NfcmVjIiwiZmluZF9tYXBfcyIsImNvbWJpbmUiLCJ0MSIsInQyIiwibjEiLCJuMiIsImN1cnJlbnRfcyIsImNvbmNhdCIsInNfdG9wIiwic3RyZWFtcyIsInN0cmVhbXMkMCIsImwkMCIsInBhcnNlIiwiaGV4ZHVtcCIsIm51bSIsInBvcyIsInBvcyQxIiwicG9zJDIiLCJjaCIsImxpZnQiLCJlcnJvciIsIm1hcF9lcnJvciIsIm1hcF9lcnIiLCJnZXRfZXhuIiwiYmluZF9lcnJvciIsImJpbmRfbHd0IiwiYmluZF9yZXN1bHQiLCJiaW5kX2x3dF9lcnJvciIsImJpbmRfbHd0X2VyciIsImIiLCJzZXRfb25jZSIsImIkMCIsImEkMCIsIml0ZXJfZXJyb3IiLCJtYXAkMCIsImxpbmsiLCJjMiIsInIyIiwiYzEiLCJyMSIsImMiLCJpbnMiLCJ0JDAiLCJ0cyQwIiwidCQxIiwidHMkMSIsInRzIiwiYWRkIiwidW5pb24iLCJ0czIiLCJ0czEiLCJmaW5kX21pbiIsImxvb2t1cF9taW4iLCJnZXRfbWluIiwicmVtb3ZlX21pbiIsInRsIiwidGFpbF9yZWN1cnNpdmVfbWFwIiwidGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYiLCJoZCIsIml0ZXJpX3MiLCJpdGVyaV9wIiwiaW5uZXIiLCJjb2xsZWN0X3JldiIsIm1hcF9wIiwiZmlsdGVyX21hcF9wIiwiY29sbGVjdF9vcHRpb25hbF9yZXYiLCJtYXBpX3MiLCJtYXBpX3AiLCJyZXZfbWFwX2FwcGVuZF9zIiwicmV2X21hcF9zIiwicmV2X21hcF9wIiwibCQxIiwiZm9sZF9yaWdodF9zIiwiZm9yX2FsbF9zIiwiZm9yX2FsbF9wIiwiYmwiLCJleGlzdHNfcyIsImV4aXN0c19wIiwib3B0aW9uYWxpemUiLCJmaWx0ZXJfcCIsInBhcnRpdGlvbl9zIiwiYWNjMSIsImFjYzIiLCJwYXJ0aXRpb25fcCIsImdyb3VwMSIsImdyb3VwMiIsIm0iLCJ2YWxpZGF0ZSIsInN0aCQxIiwiZGlzcG9zZSIsImNyZWF0ZV9tZW1iZXIiLCJyZWxlYXNlIiwidmFsaWRhdGVfYW5kX3JldHVybiIsInVzZSIsImNsZWFyZWQiLCJjbGVhcmVkJDAiLCJwcm9taXNlIiwiZWxlbWVudCIsImVsZW1lbnRzIiwib2xkX2NsZWFyZWQiLCJ3YWl0X3F1ZXVlX2xlbmd0aCIsImNyZWF0ZV9lbXB0eSIsInB1dCIsIm12YXIiLCJ3IiwidyQwIiwidGFrZV9hdmFpbGFibGUiLCJ0YWtlIiwibG9jayIsInVubG9jayIsIndpdGhfbG9jayIsImlzX2xvY2tlZCIsIm11dGV4IiwiY3ZhciIsInNpZ25hbCIsImFyZyIsImJyb2FkY2FzdCIsIndha2VuZXJzIiwiYnJvYWRjYXN0X2V4biIsIndpdGhfZmluYWxpc2VyIiwiZiIsImV2ZW50IiwiciIsIngiLCJuZXh0IiwiZXYiLCJ3YWtlbmVyIiwid2FpdGVyIiwiZXYkMCIsImxpbWl0IiwiZSIsImxpbWl0ZXIiLCJkZWxheWVkIiwicHVzaCIsIml0ZXIiLCJjZWxsIiwiY2VsbCQwIiwiY2FuY2VsX3RocmVhZCIsInQiLCJmcm9tIiwibG9vcCIsInRvX3N0cmVhbSIsInNldF9yZWYiLCJzdHJlYW0iLCJvZl9zdHJlYW0iLCJ2IiwiZXhuJDAiLCJleG4iLCJkZWxheSIsInRocmVhZCIsInNlbmQiLCJrZWVwIiwicnVuX3AiLCJydW5fcyIsIm11dGV4IiwibWFwX3AiLCJtYXBfcyIsImFwcF9wIiwiZWYiLCJhcHBfcyIsImZpbHRlcl9wIiwiZmlsdGVyX3MiLCJmbWFwX3AiLCJmbWFwX3MiLCJkaWZmX3MiLCJwcmV2aW91cyIsInkiLCJhY2N1bV9zIiwiYWNjIiwiYWNjJDAiLCJmb2xkX3MiLCJyZXZfZm9sZCIsImwiLCJtZXJnZV9zIiwiZWwiLCJ3aXRoX2ZpbmFsaXNlciQwIiwic2lnbmFsIiwibGltaXQkMCIsImVxIiwicyIsImtlZXAkMCIsInJ1bl9zJDAiLCJtYXBfcyQwIiwiYXBwX3MkMCIsInNmIiwiZmlsdGVyX3MkMCIsImkiLCJmbWFwX3MkMCIsImRpZmZfcyQwIiwic2FtcGxlX3MiLCJhY2N1bV9zJDAiLCJmb2xkX3MkMCIsInJldl9mb2xkJDAiLCJtZXJnZV9zJDAiLCJzbCIsImwxX3MiLCJzMSIsImwyX3MiLCJzMiIsIngxIiwieDIiLCJsM19zIiwiczMiLCJ4MyIsImw0X3MiLCJzNCIsIng0IiwibDVfcyIsInM1IiwieDUiLCJsNl9zIiwiczYiLCJ4NiIsImJpbmRfcyIsInN5bWJvbCIsIngiLCJ5Iiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCIsIm1pbiIsImVxdWFsJDAiLCJlcXVhbCQxIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkMCIsIm1pbiQwIiwiYyIsInBlcmZvcm1fcmF3Iiwib3B0IiwiY29udGVudF90eXBlIiwicHJvZ3Jlc3MiLCJ1cGxvYWRfcHJvZ3Jlc3MiLCJjb250ZW50cyIsIm92ZXJyaWRlX21pbWVfdHlwZSIsIm92ZXJyaWRlX21ldGhvZCIsIndpdGhfY3JlZGVudGlhbHMiLCJzdGgiLCJoZWFkZXJzIiwic3RoJDAiLCJnZXRfYXJncyIsInN0aCQxIiwiY2hlY2tfaGVhZGVycyIsInVybCIsImMkMCIsImFyZ3MiLCJvbmx5X3N0cmluZ3MiLCJmb3JtX2NvbnRlbnRzIiwidmFsdWUiLCJuYW1lIiwiYiIsImNvbnRlbnRzJDAiLCJvdmVycmlkZV9tZXRob2QkMCIsIm0iLCJ2IiwiZm9ybSIsImNvbnRlbnRfdHlwZSQxIiwibWV0aG9kIiwibWV0aG9kJDAiLCJ1cmwkMCIsInciLCJyZXMiLCJtaW1lX3R5cGUiLCJjJDEiLCJjb250ZW50X3R5cGUkMiIsIm4iLCJoZWFkZXJzJDAiLCJzIiwic3QiLCJkb19jaGVja19oZWFkZXJzIiwiY29kZSIsInJlc3BvbnNlIiwiY29kZSQwIiwiY29kZSQxIiwiY29kZSQyIiwiY29kZSQzIiwiY29kZSQ0IiwiZG9jIiwicHJvZ3Jlc3MkMCIsInVwbG9hZF9wcm9ncmVzcyQwIiwibCIsImwkMCIsImYiLCJiJDAiLCJwZXJmb3JtX3Jhd191cmwiLCJwZXJmb3JtIiwiZ2V0Iiwic2xlZXAiLCJkIiwidCIsImlkIiwieWllbGQkMCIsIndha2V1cCIsInByZXJyX3N0cmluZyIsImV4biIsImNhbGxfY3VzdG9tX3VybCIsInRpbWVvdXQiLCJtYWtlX3VyaSIsInByZWZpeCIsInVzZXJfY2IiLCJlcnJvcl9jYiIsInNpemUiLCJpIiwidXJpIiwiZmluYWxpemUiLCJwYXJlbnQiLCJleGVjdXRlZCIsImRlbGF5Iiwid2FpdCIsIm5ld190IiwiYWRkX3BhcmFtIiwiY2FsbCIsInBhcmFtIiwiY2JuYW1lIiwiaHR0cCIsIm5ld191cmwiLCJodHRwJDAiLCJmaWxlIiwic3ltYm9sX2JpbmQiLCJhc3luYyIsIm9wdF9tYXAiLCJtYWtlX2V2ZW50IiwiZXZlbnRfa2luZCIsInVzZV9jYXB0dXJlIiwicGFzc2l2ZSIsInRhcmdldCIsImVsIiwiY2FuY2VsIiwiZXYiLCJjYXRjaF9jYW5jZWwiLCJlIiwid2l0aF9lcnJvcl9sb2ciLCJzZXFfbG9vcCIsImV2aCIsImhhbmRsZXIiLCJjYW5jZWxfaGFuZGxlciIsImNhbmNlbGxlZCIsImN1ciIsImN1cl9oYW5kbGVyIiwibHQiLCJhdXgiLCJhc3luY19sb29wIiwiYnVmZmVyZWRfbG9vcCIsImNhbmNlbF9xdWV1ZSIsInF1ZXVlIiwic3Bhd24iLCJzcGF3bmVyIiwicnVubmVyIiwidGwiLCJmdW5jX2xpbWl0ZWRfbG9vcCIsImV2ZW50IiwibGltaXRlZF9mdW5jIiwiY291bnQiLCJuYiIsImxpbWl0ZWRfbG9vcCIsImVsYXBzZWRfdGltZSIsImNsaWNrIiwiY29weSIsImN1dCIsInBhc3RlIiwiZGJsY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZXVwIiwibW91c2VvdmVyIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJrZXlwcmVzcyIsImtleWRvd24iLCJrZXl1cCIsImNoYW5nZSIsImlucHV0IiwidGltZXVwZGF0ZSIsImRyYWdzdGFydCIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsImRyYWciLCJkcm9wIiwiZm9jdXMiLCJibHVyIiwic2Nyb2xsIiwic3VibWl0Iiwic2VsZWN0IiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJjYW5wbGF5IiwiY2FucGxheXRocm91Z2giLCJkdXJhdGlvbmNoYW5nZSIsImVtcHRpZWQiLCJlbmRlZCIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvYWRzdGFydCIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJyYXRlY2hhbmdlIiwic2Vla2VkIiwic2Vla2luZyIsInN0YWxsZWQiLCJzdXNwZW5kIiwidm9sdW1lY2hhbmdlIiwid2FpdGluZyIsIm1vdXNld2hlZWwiLCJkeCIsImR5Iiwid2hlZWwiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCIsImxvc3Rwb2ludGVyY2FwdHVyZSIsImdvdHBvaW50ZXJjYXB0dXJlIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmNhbmNlbCIsInBvaW50ZXJkb3duIiwicG9pbnRlcmxlYXZlIiwicG9pbnRlcm1vdmUiLCJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiLCJwb2ludGVydXAiLCJ0cmFuc2l0aW9uZW5kIiwiZWx0IiwidHJhbnNpdGlvbnN0YXJ0IiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25jYW5jZWwiLCJjbGlja3MiLCJjb3BpZXMiLCJjdXRzIiwicGFzdGVzIiwiZGJsY2xpY2tzIiwibW91c2Vkb3ducyIsIm1vdXNldXBzIiwibW91c2VvdmVycyIsIm1vdXNlbW92ZXMiLCJtb3VzZW91dHMiLCJrZXlwcmVzc2VzIiwia2V5ZG93bnMiLCJrZXl1cHMiLCJjaGFuZ2VzIiwiaW5wdXRzIiwidGltZXVwZGF0ZXMiLCJkcmFnc3RhcnRzIiwiZHJhZ2VuZHMiLCJkcmFnZW50ZXJzIiwiZHJhZ292ZXJzIiwiZHJhZ2xlYXZlcyIsImRyYWdzIiwiZHJvcHMiLCJtb3VzZXdoZWVscyIsIndoZWVscyIsInRvdWNoc3RhcnRzIiwidG91Y2htb3ZlcyIsInRvdWNoZW5kcyIsInRvdWNoY2FuY2VscyIsImZvY3VzZXMiLCJibHVycyIsInNjcm9sbHMiLCJzdWJtaXRzIiwic2VsZWN0cyIsImFib3J0cyIsImVycm9ycyIsImxvYWRzIiwiY2FucGxheXMiLCJjYW5wbGF5dGhyb3VnaHMiLCJkdXJhdGlvbmNoYW5nZXMiLCJlbXB0aWVkcyIsImVuZGVkcyIsImxvYWRlZGRhdGFzIiwibG9hZGVkbWV0YWRhdGFzIiwibG9hZHN0YXJ0cyIsInBhdXNlcyIsInBsYXlzIiwicGxheWluZ3MiLCJyYXRlY2hhbmdlcyIsInNlZWtlZHMiLCJzZWVraW5ncyIsInN0YWxsZWRzIiwic3VzcGVuZHMiLCJ2b2x1bWVjaGFuZ2VzIiwid2FpdGluZ3MiLCJsb3N0cG9pbnRlcmNhcHR1cmVzIiwiZ290cG9pbnRlcmNhcHR1cmVzIiwicG9pbnRlcmVudGVycyIsInBvaW50ZXJjYW5jZWxzIiwicG9pbnRlcmRvd25zIiwicG9pbnRlcmxlYXZlcyIsInBvaW50ZXJtb3ZlcyIsInBvaW50ZXJvdXRzIiwicG9pbnRlcm92ZXJzIiwicG9pbnRlcnVwcyIsInRyYW5zaXRpb25lbmRzIiwidHJhbnNpdGlvbnN0YXJ0cyIsInRyYW5zaXRpb25ydW5zIiwidHJhbnNpdGlvbmNhbmNlbHMiLCJyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSIsIm9ubG9hZCIsImRvbUNvbnRlbnRMb2FkZWQiLCJ3YWtldXBfZXhuIiwicmVndWxhciIsInJlYWR5c3RhdGVjaGFuZ2UiLCJpbml0Iiwib251bmxvYWQiLCJvbmJlZm9yZXVubG9hZCIsIm9ucmVzaXplIiwib25vcmllbnRhdGlvbmNoYW5nZSIsIm9ucG9wc3RhdGUiLCJvbmhhc2hjaGFuZ2UiLCJvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXoiLCJvbnJlc2l6ZXMiLCJvbm9yaWVudGF0aW9uY2hhbmdlcyIsIm9ucG9wc3RhdGVzIiwib25oYXNoY2hhbmdlcyIsIm9ub3JpZW50YXRpb25jaGFuZ2VzX29yX29ucmVzaSIsImxpbWl0ZWRfb25yZXNpemVzIiwibGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlcyIsImxpbWl0ZWRfb25vcmllbnRhdGlvbmNoYW5nZXNfbyIsInJlYWRlciIsImtpbmQiLCJmaWxlUmVhZGVyIiwicmVhZEFzQmluYXJ5U3RyaW5nIiwicmVhZEFzVGV4dCIsInJlYWRBc1RleHRfd2l0aEVuY29kaW5nIiwicmVhZEFzRGF0YVVSTCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJvcHQiLCJzdGgiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJjb2VyY2UiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfdF9zZXhwX2dyYW1tYXIiLCJlbXB0eV9zZXhwX2dyYW1tYXIiLCJib29sX3NleHBfZ3JhbW1hciIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsImludF9zZXhwX2dyYW1tYXIiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwicmVmX3NleHBfZ3JhbW1hciIsImdyYW1tYXIiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInBhcmFtIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJhcmciLCJoYW5kbGVyIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJkZXNjZW5kaW5nIiwieCIsInkiLCJtYXgiLCJtaW4iLCJkb19hdF9leGl0IiwidW5zYWZlX3JlYWxseV9pbnB1dCIsInZhbGlkX2Zsb2F0X2xleGVtIiwiYXRfZXhpdCIsImV4aXQiLCJzeW1ib2wiLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic2V0X2JpbmFyeV9tb2RlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJjbG9zZV9pbiIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwicmVhbGx5X2lucHV0IiwiaW5wdXQiLCJpbnB1dF9saW5lIiwiaW5wdXRfY2hhciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luIiwic2V0X2JpbmFyeV9tb2RlX291dCIsImNsb3NlX291dF9ub2VyciIsImNsb3NlX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsInBvc19vdXQiLCJzZWVrX291dCIsIm91dHB1dF92YWx1ZSIsIm91dHB1dF9iaW5hcnlfaW50Iiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0Iiwib3V0cHV0X2J5dGVzIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dF9jaGFyIiwiZmx1c2hfYWxsIiwiZmx1c2giLCJvcGVuX291dF9nZW4iLCJvcGVuX291dF9iaW4iLCJvcGVuX291dCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9saW5lIiwicHJlcnJfbmV3bGluZSIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9mbG9hdCIsInByZXJyX2ludCIsInByZXJyX2J5dGVzIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfY2hhciIsInByaW50X25ld2xpbmUiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfZmxvYXQiLCJwcmludF9pbnQiLCJwcmludF9ieXRlcyIsInByaW50X3N0cmluZyIsInByaW50X2NoYXIiLCJzdGRlcnIiLCJzdGRvdXQiLCJzdGRpbiIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzdHJpbmdfb2ZfZmxvYXQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9ib29sIiwiY2hhcl9vZl9pbnQiLCJlcHNpbG9uX2Zsb2F0IiwibWluX2Zsb2F0IiwibWF4X2Zsb2F0IiwibmFuIiwibmVnX2luZmluaXR5IiwiaW5maW5pdHkiLCJtaW5faW50IiwibWF4X2ludCIsImJvb2xfdG9faW50Iiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJzeW1ib2wkMTIiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwic3ltYm9sJDI0IiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsInN5bWJvbCQzMCIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsInN5bWJvbCQ0MiIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJzeW1ib2wkNDgiLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwic3ltYm9sJDU0IiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsInN5bWJvbCQ2MCIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsInN5bWJvbCQ2MyIsInN5bWJvbCQ2NCIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJkZWNyIiwiaW5jciIsImZsb2F0X29mX3N0cmluZyIsImFtX3Rlc3RpbmciLCJmYWlsd2l0aGYiLCJmbXQiLCJzIiwiaW52YWxpZF9hcmdmIiwiYmFja2VuZF90eXBlIiwiaW50ZXJhY3RpdmUiLCJvc190eXBlIiwidW5peCIsIndpbjMyIiwiY3lnd2luIiwid29yZF9zaXplX2luX2JpdHMiLCJpbnRfc2l6ZV9pbl9iaXRzIiwiYmlnX2VuZGlhbiIsIm1heF9zdHJpbmdfbGVuZ3RoIiwibWF4X2FycmF5X2xlbmd0aCIsInJ1bnRpbWVfdmFyaWFudCIsInJ1bnRpbWVfcGFyYW1ldGVycyIsImFyZ3YiLCJnZXRfYXJndiIsIm9jYW1sX3ZlcnNpb24iLCJlbmFibGVfcnVudGltZV93YXJuaW5ncyIsInJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsImdldGVudl9leG4iLCJ2YXIkMCIsImdldGVudiIsIm1heF9sZW5ndGgiLCJjcmVhdGUiLCJsZW4iLCJjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCIsImFwcGVuZCIsImJsaXQiLCJjb25jYXQiLCJjb3B5IiwiZmlsbCIsImluaXQiLCJtYWtlX21hdHJpeCIsIm9mX2xpc3QiLCJzdWIiLCJ0b19saXN0IiwiZm9sZCIsInQiLCJmIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmciLCJ0b19mbG9hdCIsIm9mX2Zsb2F0Iiwic3VjYyIsImhkX2V4biIsImxlbmd0aCIsInJldl9hcHBlbmQiLCJ0bF9leG4iLCJ1bnppcCIsImV4aXN0cyIsImV4aXN0czJfb2siLCJsMSIsImwyIiwiZm9sZDJfb2siLCJmb3JfYWxsIiwiZm9yX2FsbDJfb2siLCJpdGVyMl9vayIsIm5vbnRhaWxfbWFwIiwibm9udGFpbF9tYXBpIiwicGFydGl0aW9uIiwicmV2X21hcCIsInJldl9tYXAyX29rIiwic29ydCIsImwiLCJyZXYiLCJyZXMiLCJyZXN0IiwiYSIsImIiLCJoYXNoX2ZvbGRfdW5pdCIsImhhc2hfZm9sZF9pbnQiLCJoYXNoX2ZvbGRfaW50NjQiLCJoYXNoX2ZvbGRfZmxvYXQiLCJoYXNoX2ZvbGRfc3RyaW5nIiwiYXNfaW50IiwiaGFzaF9mb2xkX2ludDMyIiwiaGFzaF9mb2xkX2NoYXIiLCJoYXNoX2ZvbGRfYm9vbCIsImhhc2hfZm9sZF9uYXRpdmVpbnQiLCJoYXNoX2ZvbGRfb3B0aW9uIiwiaGFzaF9mb2xkX2VsZW0iLCJoYXNoX2ZvbGRfbGlzdCIsInMkMSIsImxpc3QkMSIsInMkMiIsImxpc3QiLCJsaXN0JDAiLCJzJDAiLCJoYXNoX2ZvbGRfbGF6eV90IiwiaGFzaF9mb2xkX3JlZl9mcm96ZW4iLCJoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIiwiYXJyYXkiLCJlIiwiaSQwIiwiaGFzaF9uYXRpdmVpbnQiLCJoYXNoX2ludDY0IiwiaGFzaF9pbnQzMiIsImhhc2hfY2hhciIsImhhc2hfaW50IiwiaGFzaF9ib29sIiwiaGFzaF9zdHJpbmciLCJoYXNoX2Zsb2F0IiwiaGFzaF91bml0Iiwic2VlZCIsIm9mX2ZvbGQiLCJoYXNoX2ZvbGRfdCIsInJ1biIsImZvbGRlciIsIm9wdCIsInN0aCIsImNvbXBhcmVfc3RhdGUiLCJzdGF0ZV90b19zdHJpbmciLCJzdGF0ZSIsInQkMCIsInQkMSIsInQkMiIsInQkMyIsInQkNCIsInQkNSIsImNvbXBhcmVfYWJzdHJhY3QiLCJ0eXBlX25hbWUiLCJlcXVhbF9hYnN0cmFjdCIsImNvbXBhcmVfYm9vbCIsImNvbXBhcmVfY2hhciIsImNvbXBhcmVfZmxvYXQiLCJjb21wYXJlX2ludCIsImNvbXBhcmVfaW50MzIiLCJjb21wYXJlX2ludDY0IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJjb21wYXJlX3N0cmluZyIsImNvbXBhcmVfdW5pdCIsImNvbXBhcmVfYXJyYXkiLCJjb21wYXJlX2VsdCIsImxlbl9hIiwibGVuX2IiLCJyZXQiLCJyIiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJ4cyIsImNvbXBhcmVfb3B0aW9uIiwiY29tcGFyZV9yZWYiLCJlcXVhbF9ib29sIiwiZXF1YWxfY2hhciIsImVxdWFsX2ludCIsImVxdWFsX2ludDMyIiwiZXF1YWxfaW50NjQiLCJlcXVhbF9uYXRpdmVpbnQiLCJlcXVhbF9zdHJpbmciLCJlcXVhbF91bml0IiwiZXF1YWxfZmxvYXQiLCJlcXVhbF9hcnJheSIsImVxdWFsX2VsdCIsImVxdWFsX2xpc3QiLCJlcXVhbF9vcHRpb24iLCJlcXVhbF9yZWYiLCJhXzAwMSIsImJfMDAyIiwiYV8wMDMiLCJiXzAwNCIsImFfMDA1IiwiYl8wMDYiLCJoYXNoIiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsInRfc2V4cF9ncmFtbWFyIiwiaW52YXJpYW50Iiwic2V4cF9vZl90IiwibnVtX2JpdHMiLCJ3b3JkX3NpemUiLCJhbGwiLCJyZWdpc3RlciIsInAiLCJwcCIsIm1vZHVsZV9uYW1lIiwiZm9ybWF0dGVyIiwiYXJnMV8wMDIiLCJhcmcwXzAwMSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJhcmcxXzAwNiIsImFyZzBfMDA1IiwicmVzMF8wMDciLCJyZXMxXzAwOCIsImNyZWF0ZV9zIiwic2V4cCIsInJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicmVyYWlzZSIsImV4biIsInN0ciIsImV4biQwIiwiYnQiLCJyZXJhaXNlZiIsImV4YyIsImZvcm1hdCIsInRvX3N0cmluZ19tYWNoIiwic2V4cF9vZl90JDAiLCJwcm90ZWN0eCIsImZpbmFsbHkkMCIsImZpbmFsX2V4biQwIiwiZmluYWxfZXhuIiwicHJvdGVjdCIsImRvZXNfcmFpc2UiLCJwcGYiLCJwcmludF93aXRoX2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfYXV4IiwiZXhjJDAiLCJoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQiLCJoYW5kbGVfdW5jYXVnaHQiLCJtdXN0X2V4aXQiLCJleGl0JDAiLCJyZXJhaXNlX3VuY2F1Z2h0IiwiZnVuYyIsInJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIiwiaW5pdGlhbGl6ZV9tb2R1bGUiLCJjbGVhcl9iYWNrdHJhY2UiLCJ3aXRoX3JldHVybiIsImlzX2FsaXZlIiwicmV0dXJuJDAiLCJ3aXRoX3JldHVybl9vcHRpb24iLCJwcmVwZW5kIiwicGFyYW0iLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJtYXBfdmlhX2JpbmQiLCJtYSIsInN5bWJvbF9iaW5kJDAiLCJzeW1ib2xfbWFwJDAiLCJzeW1ib2xfYmluZCQxIiwic3ltYm9sX21hcCQxIiwiYm90aCIsImxvb3AiLCJ2cyIsInRzIiwidiIsImJpbmQkMCIsInJldHVybiQxIiwibWFwJDAiLCJ0b19tb25hZCIsIm9mX21vbmFkIiwiZGVyaXZlZF9tYXAiLCJtYXAyIiwidGEiLCJ0YiIsIm1hcDMiLCJ0YyIsInN5bWJvbCQwIiwidSIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJjIiwiYXBwbHkiLCJtZiIsIm14IiwidHgiLCJjdXN0b21fbWFwIiwiYXBwbHkkMCIsImJsaXRfc3RyaW5nIiwibWFrZSIsInVuc2FmZV9ibGl0IiwidW5zYWZlX3RvX3N0cmluZyIsInVuc2FmZV9vZl9zdHJpbmdfcHJvbWlzZV9ub19tdSIsImNvbXBhcmF0b3IiLCJlcnJvcl9zb3VyY2VfMDExIiwiY21wX2YiLCJjbXBfcyIsImhhc2hfZm9sZF9mIiwiaGFzaF9mb2xkX3MiLCJ0X29mX3NleHAiLCJvZl9mXzAwNyIsIm9mX3NfMDA4Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsIm9mX2ZfMDI1Iiwib2Zfc18wMjYiLCJhcmcwXzAyNyIsInJlczBfMDI4IiwiYXJnMF8wMjkiLCJyZXMwXzAzMCIsImZfc2V4cF9ncmFtbWFyIiwic19zZXhwX2dyYW1tYXIiLCJvcGFxdWVfaWRlbnRpdHkiLCJuYW1lIiwiZ2V0IiwiZnNldCIsInNldHRlciIsInVwZGF0ZXIiLCJmaWVsZCIsImNhcGl0YWxpemUiLCJ1bmNhcGl0YWxpemUiLCJzZXAiLCJuIiwibiQwIiwibiQxIiwiaHN2JDIiLCJwb3NfY251bV8wMTAiLCJwb3NfYm9sXzAwOCIsInBvc19sbnVtXzAwNiIsInBvc19mbmFtZV8wMDQiLCJhcmdfMDExIiwiYm5kc18wMDMiLCJhcmdfMDA5IiwiYm5kc18wMDMkMCIsImFyZ18wMDciLCJibmRzXzAwMyQxIiwiYXJnXzAwNSIsImJuZHNfMDAzJDIiLCJoYXNoX2ZvbGRfdCQwIiwiaGFzaCQwIiwibWFrZV9sb2NhdGlvbl9zdHJpbmciLCJwb3NfZm5hbWUiLCJwb3NfbG51bSIsInBvc19jbnVtIiwicG9zX2JvbCIsImlzX2VtcHR5IiwicGFydGl0aW9uX21hcCIsImZzdCQwIiwieSQwIiwic25kJDAiLCJlcnJvcl9zb3VyY2VfMDA1Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA3IiwidGFnXzAwOCIsInNleHBfYXJnc18wMDkiLCJhcmcwXzAxMCIsInJlczBfMDExIiwic2V4cF9hcmdzXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJvZl9hXzAxOSIsIm9mX2JfMDIwIiwiYXJnMF8wMjMiLCJyZXMwXzAyNCIsImFfc2V4cF9ncmFtbWFyIiwiYl9zZXhwX2dyYW1tYXIiLCJjbXBfYSIsImNtcF9iIiwiYV8wMjciLCJiXzAyOCIsImFfMDI5IiwiYl8wMzAiLCJhXzAzMSIsImJfMDMyIiwiYV8wMzMiLCJiXzAzNCIsImFfMDM1IiwiYl8wMzYiLCJhXzAzNyIsImJfMDM4IiwiaGFzaF9mb2xkX2EiLCJoYXNoX2ZvbGRfYiIsIngkMCIsImNoZWNrX29rIiwiY2hlY2tfZXJyb3IiLCJvayIsImVycm9yIiwiZmFpbCIsImZhaWxmIiwibWFwX2Vycm9yIiwiYmluZCQxIiwibWFwJDEiLCJyZXR1cm4kMiIsImlzX29rIiwiaXNfZXJyb3IiLCJvZl9vcHRpb24iLCJpdGVyX2Vycm9yIiwidG9fZWl0aGVyIiwib2ZfZWl0aGVyIiwib2tfaWZfdHJ1ZSIsImJvb2wiLCJ0cnlfd2l0aCIsIm9rX2V4biIsIm9rX29yX2ZhaWx3aXRoIiwiY29tYmluZSIsImVyciIsIm9rMSIsIm9rMiIsImVycjEiLCJlcnIyIiwiY29tYmluZV9lcnJvcnMiLCJlcnJzIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImNvdW50Iiwic3VtIiwiTSIsImZvbGRfcmVzdWx0IiwiYWNjIiwiaXRlbSIsImZvbGRfdW50aWwiLCJmaW5pc2giLCJtaW5fZWx0IiwiZWx0IiwibWF4X2VsdCIsImZpbmRfbWFwIiwiZmluZCIsInRvX2FycmF5IiwiaXRlciQwIiwiaXRlciQxIiwibGVuZ3RoJDAiLCJsZW5ndGgkMSIsImlzX2VtcHR5JDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkJDAiLCJtZW0iLCJjb21wYXJlX2EiLCJlcXVhbF9hIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJ0MSQwIiwidDIkMCIsIm1ha2VfZGVmYXVsdCIsImRlZmF1bHQkMCIsImdldF9zdGF0ZSIsImZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyIsImFsbG93X2luX3Rlc3RzIiwiYml0cyIsImludCQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImNoYXIkMCIsImFzY2lpIiwibWFrZV9zZWxmX2luaXQiLCJpbnRfb25fNjRiaXRzIiwiYm91bmQiLCJpbnRfb25fMzJiaXRzIiwiaW50JDEiLCJiaXRzJDAiLCJmdWxsX3JhbmdlX2ludDY0IiwiYml0cyQxIiwiZnVsbF9yYW5nZV9pbnQzMiIsImZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyIsImZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyIsImZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyQwIiwiZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9uYXRpdmVpbnQiLCJyYWlzZV9jcm9zc2VkX2JvdW5kcyIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQiLCJzdHJpbmdfb2ZfYm91bmQiLCJpbnRfaW5jbCIsImxvIiwiaGkiLCJkaWZmIiwiaW50MzJfaW5jbCIsIm5hdGl2ZWludF9pbmNsIiwiaW50NjRfaW5jbCIsImZsb2F0JDAiLCJzY2FsZSIsInIxIiwicjIiLCJyZXN1bHQiLCJmbG9hdF9yYW5nZSIsImRlZmF1bHQkMSIsImJpdHMkMiIsImludCQyIiwiaW50MzIkMCIsIm5hdGl2ZWludCQwIiwiaW50NjQkMCIsImZsb2F0JDEiLCJpbnRfaW5jbCQwIiwiaW50MzJfaW5jbCQwIiwibmF0aXZlaW50X2luY2wkMCIsImludDY0X2luY2wkMCIsImZsb2F0X3JhbmdlJDAiLCJib29sJDAiLCJjaGFyJDEiLCJhc2NpaSQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic2V0X3N0YXRlIiwicGVybXV0ZSIsInJhbmRvbV9zdGF0ZSIsInN0aCQwIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJjb25zdCQwIiwibm9uIiwiZm9yZXZlciIsImUkMCIsImNvbXBvc2UiLCJnIiwiZmxpcCIsImFwcGx5X25fdGltZXMiLCJ4JDEiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMjIiLCJmb2xkX2xlZnQiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDgiLCJiXzAwOSIsIm9mX2FfMDEwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsInJhbmdlIiwic3RyaWRlIiwic3RhcnRfaSIsInN0b3BfaSIsInN0YXJ0IiwibmV4dF9pIiwib3JkZXIiLCJyYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW0iLCJpbml0aWFsX3N0cmlkZV9vcmRlciIsInN0YXJ0X2kkMCIsImFjY3VtIiwiaV90b19zdG9wX29yZGVyIiwibmV4dF9pJDAiLCJhY2N1bSQwIiwicmFuZ2UkMCIsInN0aCQxIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9yX2FsbDIiLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyIiwiZXhpc3RzMl9leG4iLCJicyIsInJldl9maWx0ZXIiLCJhY2N1IiwiZmlsdGVyIiwibm90X2ZvdW5kIiwiZmluZF9tYXBfZXhuIiwibm90X2ZvdW5kJDAiLCJmaW5kX2V4biIsImZpbmRpIiwibm90X2ZvdW5kJDEiLCJmaW5kaV9leG4iLCJmaW5kX21hcGkiLCJub3RfZm91bmQkMiIsImZpbmRfbWFwaV9leG4iLCJmb3JfYWxsaSIsImV4aXN0c2kiLCJtYXhfbm9uX3RhaWxjYWxsIiwiY291bnRfYXBwZW5kIiwieDEiLCJ4MiIsIngzIiwieDQiLCJ4NSIsImNvdW50X21hcCIsImN0ciIsIngxJDAiLCJmMSQzIiwieDIkMCIsImYxJDIiLCJmMiQyIiwieDMkMCIsImYxJDEiLCJmMiQxIiwiZjMkMSIsIng0JDAiLCJmMSQwIiwiZjIkMCIsImYzJDAiLCJmNCQwIiwieDUkMCIsImYxIiwiZjIiLCJmMyIsImY0IiwiZjUiLCJicyQwIiwieHMkMCIsIng4IiwieDciLCJ4NiIsIngwIiwieTAkMCIsInkxJDAiLCJ5MiQwIiwieTMkMCIsInk0JDAiLCJ5NSQwIiwieTYkMCIsInk3JDAiLCJ5OCQwIiwieTgiLCJ5NyIsInk2IiwieTUiLCJ5NCIsInkzIiwieTIiLCJ5MSIsInkwIiwiZm9sZGluZ19tYXAiLCJuZXdfYWNjIiwiZm9sZF9tYXAiLCJtYXAyX29rIiwibWFwMl9leG4iLCJyZXZfbWFwM19vayIsImwxJDAiLCJsMiQwIiwibDMkMCIsImFjIiwibDMkMSIsImwyJDEiLCJsMSQxIiwiYWMkMCIsInJldl9tYXAzIiwicmV2X21hcDNfZXhuIiwibWFwM19vayIsIm1hcDNfZXhuIiwicmV2X21hcF9hcHBlbmQiLCJoIiwibGlzdCQyIiwidW56aXAzIiwieiIsInppcF9leG4iLCJ6aXAiLCJyZXZfbWFwaSIsImZvbGRpbmdfbWFwaSIsImZvbGRfbWFwaSIsImZvbGRpIiwiZmlsdGVyaSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJyZWR1Y2VfYmFsYW5jZWQiLCJzdGVwX2FjY3VtIiwibnVtIiwibnVtJDAiLCJhY2MkMCIsImFjYyQxIiwibnVtJDEiLCJyZWR1Y2VfYmFsYW5jZWRfZXhuIiwiZ3JvdXBpIiwiYnJlYWskMCIsImdyb3VwcyIsImN1cnJlbnRfZ3JvdXAiLCJncm91cCIsInNvcnRfYW5kX2dyb3VwIiwiY29uY2F0X21hcCIsImNvbmNhdF9tYXBpIiwiY29udCIsIm1lcmdlIiwiaDIiLCJoMSIsIm1hcDIkMCIsIm1hcDMkMCIsInN5bWJvbCQyIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExIiwiYTEkMCIsImEyIiwicmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMiLCJ3aGljaF90b19rZWVwIiwidGwkMCIsInRvX2tlZXAkMiIsInRvX2tlZXAiLCJ0b19rZWVwJDAiLCJ0b19rZWVwJDEiLCJkZWR1cF9hbmRfc29ydCIsInNvcnRlZCIsImZpbmRfYV9kdXAiLCJsJDAiLCJoZDIiLCJoZDEiLCJjb250YWluc19kdXAiLCJsc3QiLCJmaW5kX2FsbF9kdXBzIiwic29ydGVkJDIiLCJwcmV2JDEiLCJzb3J0ZWQkMCIsInByZXYiLCJhbHJlYWR5X3JlY29yZGVkIiwic29ydGVkJDEiLCJwcmV2JDAiLCJhbGxfZXF1YWwiLCJjb3VudGkiLCJpZHgiLCJyZXZfZmlsdGVyX21hcCIsImZpbHRlcl9tYXAiLCJyZXZfZmlsdGVyX21hcGkiLCJpJDEiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9vcHQiLCJwYXJ0aXRpb24zX21hcCIsInRyZCIsInRyZCQwIiwieSQxIiwicGFydGl0aW9uX3RmIiwiZiQwIiwicGFydGl0aW9uX3Jlc3VsdCIsInRfb2Zfc2V4cCQwIiwib2ZfYV8wMTQiLCJvZl9iXzAxNSIsInhfMDIzIiwic2V4cF8wMjEiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMF8wMTkiLCJyZXMxXzAyMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMjQiLCJvZl9iXzAyNSIsInhfMDMwIiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczFfMDI5IiwidF9zZXhwX2dyYW1tYXIkMCIsInBhaXJfb2ZfZ3JvdXAiLCJrIiwiZ3JvdXAkMCIsImFsaXN0Iiwic29ydF9hbmRfZ3JvdXAkMCIsImtleSIsImtleSQwIiwibm90X2ZvdW5kJDMiLCJmaW5kX2V4biQwIiwidmFsdWUiLCJtZW0kMCIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwidDIkMSIsInQxJDEiLCJ0cmFuc3Bvc2UiLCJyb3dzJDAiLCJyb3dzIiwiY29sdW1ucyIsImRvX3JldiIsImNvbHVtbl9hY2MiLCJ0cmltbWVkX3Jvd3MiLCJmb3VuZF9lbXB0eSIsInRyaW1tZWQiLCJjb2x1bW5fYWNjJDAiLCJjb2x1bW4iLCJkb19yZXYkMCIsImNvbHVtbnMkMCIsImFyZzBfMDMxIiwicmVzMF8wMzIiLCJ0cmFuc3Bvc2VfZXhuIiwiaW50ZXJzcGVyc2UiLCJpc19zdWZmaXgiLCJzdWZmaXgiLCJsaXN0X2xlbiIsInN1ZmZpeF9sZW4iLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwicmVzMF8wMDQiLCJyZXMwXzAwNiIsImFyZzBfMDA3IiwicmVzMF8wMDgiLCJhcmcyXzAxMSIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsImhlcmUiLCJoZXJlJDAiLCJ0b19zZXhwX2h1bSIsInNleHBzIiwidG9fbWVzc2FnZSIsImluZm8iLCJvZl9tZXNzYWdlIiwidG9fc3RyaW5nX2h1bSIsIm1lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQiLCJvZl9sYXp5Iiwib2ZfbGF6eV9zZXhwIiwib2ZfbGF6eV90IiwibGF6eV90IiwiY3JlYXRlZiIsIm9mX3RodW5rIiwic3RyaWN0Iiwic2V4cF9vZl94IiwidGFnX3NfbGF6eSIsInRhZ19zIiwidGFnX2FyZyIsInRvX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJiYWNrdHJhY2UkMiIsInJhaXNlIiwicmFpc2VfcyIsInRvX2luZm8iLCJvZl9pbmZvIiwiY2hlY2tfZmllbGQiLCJhXzAwNyIsImJfMDA4Iiwib2ZfYV8wMTMiLCJ4XzAxNSIsIm9mX2FfMDE2IiwieF8wMTciLCJpbnZhcmlhbnRfYSIsImUxIiwiZTIiLCJ0cnlfd2l0aF9qb2luIiwib2ZfZXhuX3Jlc3VsdCIsImVycm9yX3MiLCJlcnJvcl9zdHJpbmciLCJlcnJvcmYiLCJ1bmltcGxlbWVudGVkIiwiZmlsdGVyX29rX2F0X2xlYXN0X29uZSIsImZpbmRfb2siLCJmaW5kX21hcF9vayIsImVycm9yX3NvdXJjZV8wMDMiLCJzZXhwXzAwNCIsImdlcSIsImxlcSIsImJldHdlZW4iLCJsb3ciLCJoaWdoIiwiY2xhbXBfdW5jaGVja2VkIiwiY2xhbXBfZXhuIiwiY2xhbXAiLCJsZXhpY29ncmFwaGljIiwiY21wcyIsImNtcHMkMCIsImxpZnQiLCJyZXZlcnNlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJoYXNoX3BhcmFtIiwicG9seSIsIm9mX2tleSIsIktleSIsInRvX2tleSIsImhhc2hfcGFyYW0kMCIsInBvbHkkMCIsIm9mX2tleSQwIiwidG9fa2V5JDAiLCJoYXNoYWJsZSIsImdldF9wb3NfbGVuIiwiZmluZF9maXJzdF9zYXRpc2Z5aW5nIiwicHJlZCIsInBvcyQwIiwiaGkkMCIsImxvJDEiLCJtaWQiLCJsbyQyIiwibG8kMCIsImZpbmRfbGFzdF9zYXRpc2Z5aW5nIiwiYmluYXJ5X3NlYXJjaCIsImhvdyIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwic2VnbWVudF9vZiIsImlzX2xlZnQiLCJpc19yaWdodCIsImFsbCQwIiwic3JjIiwic3JjX3BvcyIsImRzdCIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJ2YWx1ZV9tYXAiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJhX29mX3NleHAiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJpc19maXJzdCIsImlzX3NlY29uZCIsImZpcnN0Iiwic2Vjb25kIiwiZXExIiwiZXEyIiwib3RoZXIiLCJlaXRoZXIiLCJvdGhlcl9sb29wIiwicmV0dXJuX2xvb3AiLCJjb21iaW5lX2FsbCIsIm90aGVyX2xvb3AkMCIsInJldHVybl9sb29wJDAiLCJjb21iaW5lX2FsbF91bml0IiwidG9fb3B0aW9uIiwiZWl0aGVyJDAiLCJjb21iaW5lJDAiLCJpdGVyaSQwIiwiaXRlcmkkMSIsImZvbGRpJDAiLCJmb2xkaSQxIiwiY291bnRpJDAiLCJleGlzdHNpJDAiLCJmb3JfYWxsaSQwIiwiZmluZF9tYXBpJDAiLCJmaW5kaSQwIiwiZXJyb3Jfc291cmNlXzAyNSIsIm9mX3NfMDAyIiwibmV4dF9zdGVwIiwiZGVsYXllZF9mb2xkX3N0ZXAiLCJuZXh0IiwidW5mb2xkX3N0ZXAiLCJ1bmZvbGQiLCJ1bmZvbGRfd2l0aCIsInNlZWQkMCIsInNlZWQkMSIsInVuZm9sZF93aXRoX2FuZF9maW5pc2giLCJydW5uaW5nX3N0ZXAiLCJpbm5lcl9maW5pc2hlZCIsImZpbmlzaGluZ19zdGVwIiwic3RhdGUkMCIsInN0YXRlJDEiLCJzdGF0ZSQyIiwiaW5uZXJfc3RhdGUiLCJzdGF0ZSQzIiwiaW5uZXJfc3RhdGUkMCIsImlubmVyX3N0YXRlJDEiLCJzdGF0ZSQ0Iiwic3RhdGUkNSIsInNlZWQkMiIsInYkMCIsInRvX2xpc3RfcmV2Iiwic3RhcnRfdiIsInN0b3BfdiIsInN0ZXAiLCJ0X2xhenkiLCJsJDIiLCJzb21lX2IiLCJlbXB0eSIsIm5leHQkMCIsInMkMyIsImFfMDExIiwiYl8wMTIiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE5IiwiYV8wMTciLCJiXzAyMCIsImJfMDE4IiwiYTAkMSIsImhzdiQzIiwib2ZfYV8wMjEiLCJvZl9iXzAyMiIsInNleHBfMDI3IiwidGFnXzAyOCIsInNleHBfYXJnc18wMzQiLCJhcmcwXzAzNSIsInJlczBfMDM2Iiwic2V4cF9hcmdzXzAyOSIsImFyZzBfMDMwIiwic2V4cF9hcmdzXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwib2ZfYV8wNDYiLCJvZl9iXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMV8wNTMiLCJhcmcwXzA1MiIsInJlczBfMDU0IiwicmVzMV8wNTUiLCJtZXJnZV93aXRoX2R1cGxpY2F0ZXMiLCJuZXh0MiIsInMyIiwibmV4dDEiLCJzMSIsInMyJDAiLCJzMiQxIiwiczEkMCIsInMyJDIiLCJzMSQxIiwiczIkMyIsImNvbXBhcmlzb24iLCJtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWQiLCJtZXJnZV9zb3J0ZWQiLCJ0bF9lYWdlcmx5X2V4biIsImxpZnRfaWRlbnRpdHkiLCJjaHVua3NfZXhuIiwiemlwX2Z1bGwiLCJib3VuZGVkX2xlbmd0aCIsImF0X21vc3QiLCJsZW5ndGhfaXNfYm91bmRlZF9ieSIsImN1ciIsImN1ciQwIiwibGFzdF9lbHQiLCJsYXN0X2VsdCQwIiwic2hpZnRfcmlnaHQiLCJzaGlmdF9yaWdodF93aXRoX2xpc3QiLCJzJDUiLCJhJDEiLCJzJDQiLCJyZXBlYXQiLCJjeWNsZV9saXN0X2V4biIsInNhIiwic2IiLCJzaW5nbGV0b24iLCJkZWxheWVkX2ZvbGQiLCJvcHRpb24iLCJmb2xkX20iLCJpdGVyX20iLCJmb3JjZV9lYWdlcmx5IiwibWVtb2l6ZSIsImRyb3BfZWFnZXJseSIsImRyb3Bfd2hpbGVfb3B0aW9uIiwidjIiLCJ2MSIsInJvdW5kX3JvYmluIiwiZG9uZV9zdGFjayIsInRvZG9fc3RhY2siLCJ0b2RvX3N0YWNrJDAiLCJpbnRlcmxlYXZlIiwiaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QiLCJvZl9zZXEiLCJzZXEiLCJ0b19zZXEiLCJ5aWVsZCQwIiwib2Zfc2VxdWVuY2UiLCJzZXF1ZW5jZSIsInRodW5rIiwic2V0Iiwic3dhcCQwIiwidG1wIiwibGVmdCIsInJpZ2h0IiwiZmluYWxfcG9zIiwiaV9uZXh0IiwiaGVhcGlmeSIsInJvb3QiLCJyb290JDAiLCJyZWxhdGl2ZV9yb290IiwibGVmdF9jaGlsZCIsInJpZ2h0X2NoaWxkIiwibGFyZ2VzdCIsImxhcmdlc3QkMCIsInNvcnQkMCIsImZpdmVfZWxlbWVudF9zb3J0IiwibTEiLCJtMiIsIm0zIiwibTQiLCJtNSIsImNvbXBhcmVfYW5kX3N3YXAiLCJpbnRyb19zb3J0IiwibWF4X2RlcHRoIiwibWF4X2RlcHRoJDAiLCJsZWZ0JDAiLCJtYXhfZGVwdGgkMSIsInNpeHRoIiwibTJfdmFsIiwibTNfdmFsIiwibTRfdmFsIiwibWlkZGxlX3NvcnRlZCIsInBpdm90MiIsInBpdm90MSIsInAkMSIsInIkMiIsInB2IiwiciQwIiwiciQxIiwicCQwIiwibGVmdCQxIiwic29ydCQxIiwic29ydCQyIiwiZWx0X2lfbWludXNfMSIsIm1lcmdlZCIsImExX2luZGV4IiwiYTJfaW5kZXgiLCJ1c2VfYTEiLCJjb3B5X21hdHJpeCIsInJldl9pbnBsYWNlIiwib2ZfbGlzdF9yZXYiLCJvZl9saXN0X21hcCIsIm9mX2xpc3RfbWFwaSIsIm9mX2xpc3RfcmV2X21hcCIsIm9mX2xpc3RfcmV2X21hcGkiLCJtYXBfaW5wbGFjZSIsImZpbmRpX2ludGVybmFsIiwiaWZfZm91bmQiLCJpZl9ub3RfZm91bmQiLCJmb3VuZCIsInZhbHVlX2ZvdW5kIiwicmVzMSIsInJlczIiLCJzb3J0ZWRfY29weSIsInBhcnRpdGlvbmlfdGYiLCJ0cnVlcyIsImZhbHNlcyIsInRvX3NlcXVlbmNlX211dGFibGUiLCJ0b19zZXF1ZW5jZSIsImkxIiwiaTIiLCJ0dCIsIndpZHRoIiwiZGVwdGgiLCJkIiwidyIsInR0JDAiLCJnZXQkMCIsInplcm9fb2JqIiwiY3JlYXRlX3plcm8iLCJ1bnNhZmVfZ2V0IiwidW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5Iiwib2JqIiwic2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJ1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW4iLCJvbGRfb2JqIiwidW5zYWZlX3NldCIsInVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZSIsInVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5XyIsInVuc2FmZV9zZXRfaW50IiwidW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIiLCJ1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQiLCJjcmVhdGVfb2JqX2FycmF5Iiwib2ZfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImkkMiIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJjb250YWlucyIsInBvcyQxIiwiZW5kIiwiaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJpbmRleF9leG5faW50ZXJuYWwiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tX2V4biIsInJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCIsInJpbmRleF9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb21fZXhuIiwicmluZGV4IiwiaW5kZXhfZnJvbSIsInJpbmRleF9mcm9tIiwiY2FzZV9zZW5zaXRpdmUiLCJwYXR0ZXJuIiwia21wX2ludGVybmFsX2xvb3AiLCJtYXRjaGVkX2NoYXJzIiwibmV4dF90ZXh0X2NoYXIiLCJrbXBfYXJyYXkiLCJjaGFyX2VxdWFsIiwibWF0Y2hlZF9jaGFycyQwIiwiZ2V0X2NoYXJfZXF1YWwiLCJpbmRleF9pbnRlcm5hbCIsInRleHQiLCJtYXRjaGVzIiwiaW4kMCIsImluZGV4X2V4biQwIiwiaW5kZXhfYWxsIiwibWF5X292ZXJsYXAiLCJyZXBsYWNlX2ZpcnN0Iiwid2l0aCQwIiwibGVuX3MiLCJsZW5fdCIsImxlbl93aXRoIiwicmVwbGFjZV9hbGwiLCJudW1fbWF0Y2hlcyIsIm5leHRfZHN0X3BvcyIsIm5leHRfc3JjX3BvcyIsInNwbGl0X29uIiwicGF0dGVybl9sZW4iLCJhXzAwMiIsImJfMDAzIiwia21wX2FycmF5XzAxMSIsImNhc2Vfc2Vuc2l0aXZlXzAwOSIsInBhdHRlcm5fMDA3IiwiYXJnXzAxMiIsImJuZHNfMDA2IiwiYXJnXzAxMCIsImJuZHNfMDA2JDAiLCJhcmdfMDA4IiwiYm5kc18wMDYkMSIsInJlcHJlc2VudGF0aW9uIiwic3Vic3RyX2luZGV4X2dlbiIsInN1YnN0cl9pbmRleF9leG5fZ2VuIiwic3Vic3RyX2luZGV4X2FsbF9nZW4iLCJzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4iLCJzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIiwiaXNfc3Vic3RyaW5nX2dlbiIsInN1YnN0cmluZyIsInN1YnN0cl9pbmRleCIsInN1YnN0cl9pbmRleF9leG4iLCJzdWJzdHJfaW5kZXhfYWxsIiwic3Vic3RyX3JlcGxhY2VfZmlyc3QiLCJzdWJzdHJfcmVwbGFjZV9hbGwiLCJpc19zdWJzdHJpbmciLCJpc19zdWJzdHJpbmdfYXRfZ2VuIiwic3RyX3BvcyQxIiwic3RyX2xlbiIsInN1Yl9sZW4iLCJzdHJfcG9zIiwic3ViX3BvcyIsInN1Yl9wb3MkMCIsInN0cl9wb3MkMCIsImlzX3N1ZmZpeF9nZW4iLCJzdHJpbmdfbGVuIiwiaXNfcHJlZml4X2dlbiIsInByZWZpeF9sZW4iLCJzZXhwX29mX3QkMiIsInN0cmluZzEiLCJzdHJpbmcyIiwibGVuMiIsImxlbjEiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0IiwibHNwbGl0Ml9leG4iLCJsaW5lIiwiZGVsaW0iLCJub3RfZm91bmQkNCIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsIm9uIiwicnNwbGl0MiIsImNoYXJfbGlzdF9tZW0iLCJzcGxpdF9nZW4iLCJpc19kZWxpbSIsImxhc3RfcG9zIiwibGFzdF9wb3MkMSIsImxhc3RfcG9zJDAiLCJwb3MxIiwic3ViX3N0ciIsInNwbGl0Iiwic3BsaXRfb25fY2hhcnMiLCJjaGFycyIsImJhY2tfdXBfYXRfbmV3bGluZSIsImVvbCIsInNwbGl0X2xpbmVzIiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZ19hdCQwIiwid3JhcF9zdWJfbiIsIm9uX2Vycm9yIiwiZHJvcF9wcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImxmaW5kaSIsInJmaW5kaSIsImxhc3Rfbm9uX2Ryb3AiLCJyc3RyaXAiLCJmaXJzdF9ub25fZHJvcCIsImxzdHJpcCIsInN0cmlwIiwidHIiLCJ0cl9tdWx0aSIsImNvbmNhdF9hcnJheSIsImFyIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwiYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoIiwiZXNjYXBld29ydGh5X21hcCIsImVzY2FwZV9jaGFyIiwiZXNjYXBld29ydGh5X21hcCQwIiwidmFscyIsImNfdG8iLCJjX2Zyb20iLCJrJDAiLCJlc2NhcGVfZ2VuIiwiZXNjYXBld29ydGh5IiwidG9fZXNjYXBlX2xlbiIsInRvX2VzY2FwZSIsImxhc3RfaWR4IiwibGFzdF9kc3RfcG9zIiwibGFzdF9pZHgkMCIsImxhc3RfZHN0X3BvcyQwIiwidG9fZXNjYXBlJDAiLCJlc2NhcGVkX2NoYXIiLCJsYXN0X2lkeCQxIiwibGFzdF9kc3RfcG9zJDEiLCJlc2NhcGVfZ2VuX2V4biIsImVzY2FwZSIsInVuZXNjYXBlX2dlbiIsInN0YXR1cyIsInRvX3VuZXNjYXBlIiwic3RhdHVzJDAiLCJ0b191bmVzY2FwZSQwIiwidW5lc2NhcGVfZ2VuX2V4biIsInVuZXNjYXBlIiwicHJlY2VkaW5nX2VzY2FwZV9jaGFycyIsImNudCIsImNudCQwIiwidXBkYXRlX2VzY2FwZV9zdGF0dXMiLCJlc2NhcGVfc3RhdHVzIiwib2RkIiwiY2hlY2tfYm91bmQiLCJmdW5jdGlvbl9uYW1lIiwiaXNfY2hhcl9lc2NhcGluZyIsImlzX2NoYXJfZXNjYXBlZCIsImlzX2NoYXJfbGl0ZXJhbCIsImluZGV4X2Zyb20kMCIsInN0YXR1cyQxIiwiaW5kZXhfZnJvbV9leG4kMCIsImluZGV4JDEiLCJpbmRleF9leG4kMSIsInJpbmRleF9mcm9tJDAiLCJlc2NhcGVfY2hhcnMiLCJyaW5kZXhfZnJvbV9leG4kMCIsInJpbmRleCQwIiwicmluZGV4X2V4biQwIiwic3BsaXRfZ2VuJDAiLCJzcGxpdCQwIiwic3BsaXRfb25fY2hhcnMkMCIsInNwbGl0X2F0IiwibHNwbGl0MiQwIiwicnNwbGl0MiQwIiwibHNwbGl0Ml9leG4kMCIsInJzcGxpdDJfZXhuJDAiLCJsYXN0X25vbl9kcm9wX2xpdGVyYWwiLCJmaXJzdF9ub25fZHJvcF9saXRlcmFsIiwicnN0cmlwX2xpdGVyYWwiLCJsc3RyaXBfbGl0ZXJhbCIsInN0cmlwX2xpdGVyYWwiLCJiZXR3ZWVuJDAiLCJjbGFtcF9leG4kMCIsImNsYW1wJDAiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwidW5zYWZlX2JsaXQkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibWludXNfb25lIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJtYXhfdmFsdWVfMzBfYml0cyIsImFicyIsInJlbSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJyZWZsIiwic3ltIiwidHJhbnMiLCJjb252IiwiZGV0dXBsZTIiLCJ0dXBsZTIiLCJ3aXRuZXNzIiwidl8wMDUiLCJ0b19zZXhwIiwidWlkIiwic2FtZV93aXRuZXNzIiwic2FtZSIsInNhbWVfd2l0bmVzc19leG4iLCJub25lX3N1YnN0aXR1dGUiLCJub25lIiwidmFsdWVfdW5zYWZlIiwib2Zfc2V4cGFibGUiLCJ0b19zZXhwYWJsZSIsInhfMDAzIiwib2ZfYV8wMDQiLCJ4XzAwNSIsImluaXRfc29tZSIsImdldF9zb21lX2V4biIsImlzX25vbmUkMCIsImlzX3NvbWUkMCIsInNldF9zb21lIiwic2V0X25vbmUiLCJ1bnNhZmVfZ2V0X3NvbWVfZXhuIiwidW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUiLCJ1bnNhZmVfaXNfc29tZSIsInVuc2FmZV9zZXRfc29tZSIsInVuc2FmZV9zZXRfbm9uZSIsImNsZWFyIiwiZWxlbSIsIm1hcF9zb21lIiwib2ZfYXJyYXlfc29tZSIsImNhcGFjaXR5IiwiZWx0cyIsImxlbmd0aF8wMDMiLCJlbHRzXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwMiIsImFyZ18wMDQiLCJibmRzXzAwMiQwIiwicmVzaXplIiwic2l6ZSIsInNldF9jYXBhY2l0eSIsIm5ld19jYXBhY2l0eSIsIm5ld19jYXBhY2l0eSQwIiwicHVzaCIsInBvcF9ub25lbXB0eSIsInBvcF9lcnJvciIsInBvcCIsInBvcF9leG4iLCJ0b3Bfbm9uZW1wdHkiLCJ0b3BfZXJyb3IiLCJ0b3AiLCJ0b3BfZXhuIiwidW50aWxfZW1wdHkiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDI3IiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9zZXhwX2dyYW1tIiwiYWxsX29mX2EiLCJlbnVtZXJhdGVfMDAyIiwiZW51bWVyYXRlXzAwMSIsImFjYyQyIiwib2ZfYV8wMDMiLCJzZXhwXzAwOCIsInRhZ18wMDkiLCJzZXhwX2FyZ3NfMDEwIiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJpbnRlcnZhbF9jb21wYXJpc29uX29mX3NleHAiLCJzZXhwXzAyOCIsInNleHBfb2ZfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImNvbXBhcmVfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIiwiaGFzaF9pbnRlcnZhbF9jb21wYXJpc29uIiwiaW5jbCIsImV4Y2wiLCJpc19sb3dlcl9ib3VuZCIsImlzX3VwcGVyX2JvdW5kIiwiYm91bmRzX2Nyb3NzZWQiLCJsb3dlciIsInVwcGVyIiwibG93ZXIkMCIsInVwcGVyJDAiLCJjb21wYXJlX3RvX2ludGVydmFsX2V4biIsImludGVydmFsX2NvbnRhaW5zX2V4biIsImVycm9yX3NvdXJjZV8wNTciLCJyaWdodF8wMDQiLCJsZWZ0XzAwMyIsInJpZ2h0XzAwOCIsImxlZnRfMDA3Iiwib2ZfYV8wMDkiLCJ2XzAxMCIsImNtcF9rIiwiY21wX3YiLCJ0XzAxNCIsInRfMDEzIiwidF8wMTYiLCJ0XzAxNSIsInJpZ2h0XzAxOCIsImxlZnRfMDE3IiwicmlnaHRfMDIyIiwibGVmdF8wMjEiLCJ0XzAyNCIsInRfMDIzIiwidF8wMjYiLCJ0XzAyNSIsInJpZ2h0XzAyMCIsImxlZnRfMDE5IiwidF8wMzAiLCJ0XzAyOSIsInRfMDMyIiwidF8wMzEiLCJyaWdodF8wMzQiLCJsZWZ0XzAzMyIsInJpZ2h0XzAzOCIsImxlZnRfMDM3IiwidF8wNDAiLCJ0XzAzOSIsInRfMDQyIiwidF8wNDEiLCJyaWdodF8wMzYiLCJsZWZ0XzAzNSIsIm9mX2tfMDQzIiwib2Zfdl8wNDQiLCJzZXhwXzA3MSIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsImF0b21fMDQ3Iiwic2V4cF9hcmdzXzA1MCIsImF0b21fMDQ3JDAiLCJhcmcwXzA1OCIsInJlczBfMDU5IiwiYXJnMF8wNjEiLCJyZXMwXzA2MiIsImFyZzBfMDY0IiwicmVzMF8wNjUiLCJyZXMxXzA3MCIsIm9mX2tfMDcyIiwib2Zfdl8wNzMiLCJhcmcxXzA4MiIsImFyZzBfMDgxIiwicmVzMF8wODMiLCJ2XzA3NCIsInJlczFfMDg0Iiwidl8wNzYiLCJhcmcxXzA3OCIsImFyZzBfMDc3IiwicmVzMF8wNzkiLCJyZXMxXzA4MCIsInZfMDc1Iiwia19zZXhwX2dyYW1tYXIiLCJ2X3NleHBfZ3JhbW1hciIsImNtcF9sZWZ0IiwiY21wX3JpZ2h0IiwiYV8wODUiLCJiXzA4NiIsInJpZ2h0XzA5MiIsImxlZnRfMDkxIiwidF8wOTQiLCJ0XzA5MyIsInRfMDk2IiwidF8wOTUiLCJyaWdodF8wODgiLCJsZWZ0XzA4NyIsInJpZ2h0XzA5MCIsImxlZnRfMDg5IiwiYV8wOTciLCJiXzA5OCIsInJpZ2h0XzEwNCIsImxlZnRfMTAzIiwidF8xMDYiLCJ0XzEwNSIsInRfMTA4IiwidF8xMDciLCJyaWdodF8xMDAiLCJsZWZ0XzA5OSIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwib2ZfbGVmdF8xMDkiLCJvZl9yaWdodF8xMTAiLCJ2XzExMyIsImFyZzFfMTE1IiwiYXJnMF8xMTQiLCJyZXMwXzExNiIsInJlczFfMTE3Iiwidl8xMTEiLCJ2XzExMiIsInNleHBfb2ZfdCQzIiwiaGVpZ2h0IiwiaW5fcmFuZ2UiLCJobCIsImhyIiwibG93ZXIkMSIsImludmFyaWFudHMiLCJoJDEiLCJoJDAiLCJzbCIsInNyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwia2wiLCJrJDEiLCJrbCQwIiwiayQyIiwia3IiLCJsZWZ0X2xlbmd0aCIsInJpZ2h0X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQiLCJhcnJheV9sZW5ndGgiLCJvZl9zb3J0ZWRfYXJyYXkiLCJpbmNyZWFzaW5nIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2JDAiLCJscmwiLCJscnYiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYkMCIsInJsbCIsInJsdiIsImF1eCIsImxoIiwibHYkMCIsInJoIiwicnYkMCIsIm1pbl9lbHRfZXhuIiwiZm9sZF91bnRpbF9oZWxwZXIiLCJ2YWx1ZSQwIiwibWF4X2VsdF9leG4iLCJyZW1vdmVfbWluX2VsdCIsIm1heWJlX2VsdCIsIm1heWJlX2VsdCQwIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwicmVtb3ZlX2luZGV4IiwibF9zaXplIiwidW5pb24iLCJ2MSQwIiwidjIkMCIsInIyJDAiLCJyMSQwIiwidW5pb25fbGlzdCIsInRvX3RyZWUiLCJpbnRlciIsIm90aGVyX3NldCIsImUkMSIsImNvbnNfcmlnaHQiLCJvZl9zZXQiLCJlbnVtJDAiLCJ0cmVlIiwic3ltbWV0cmljX2RpZmYiLCJlbHQkMCIsImVudW0xIiwidHJlZTEiLCJlbnVtMiIsInRyZWUyIiwiY29tcGFyZV9yZXN1bHQiLCJuZXh0X3N0YXRlIiwiZ3JlYXRlcl9vcl9lcXVhbF90byIsImxlc3Nfb3JfZXF1YWxfdG8iLCJpbmNsdXNpdmVfYm91bmQiLCJzaWRlIiwibWF5YmUiLCJ2JDEiLCJpbml0JDAiLCJ2JDIiLCJ2JDMiLCJ2JDQiLCJlJDIiLCJtZXJnZV90b19zZXF1ZW5jZSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInQyJDIiLCJ0MSQyIiwiaXNfc3Vic2V0IiwiYXJlX2Rpc2pvaW50IiwiYWNjdSQwIiwiYWNjdSQxIiwiZmlsdCIsInBhcnQiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImNob29zZSIsImNob29zZV9leG4iLCJwb3NfcmVmIiwiZ3JvdXBfYnkiLCJlcXVpdiIsInNldCQwIiwiZXF1aXZfY2xhc3NlcyIsIm5vdF9lcXVpdl94IiwiZXF1aXZfeCIsImVxdWl2X2NsYXNzZXMkMCIsInN0YWJsZV9kZWR1cF9saXN0IiwibGVmdG92ZXJzIiwiYWxyZWFkeV9zZWVuIiwiYWxyZWFkeV9zZWVuJDAiLCJsZWZ0b3ZlcnMkMCIsInRfb2Zfc2V4cF9kaXJlY3QiLCJlbHRfbHN0IiwiZWxfc2V4cCIsImlzX3N1YnNldCQwIiwic3Vic2V0Iiwic3VwZXJzZXQiLCJzZXhwX29mX2VsdCIsImludmFsaWRfZWxlbWVudHMiLCJpbnZhbGlkX2VsZW1lbnRzX3NleHAiLCJsaWtlIiwiaW52YXJpYW50cyQwIiwiZWxlbWVudHMkMCIsIm1pbl9lbHRfZXhuJDAiLCJtYXhfZWx0X2V4biQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJmb2xkX3JpZ2h0JDAiLCJpdGVyMiQwIiwiZmlsdGVyJDAiLCJhZGQkMCIsInJlbW92ZSQwIiwidW5pb24kMCIsImludGVyJDAiLCJkaWZmJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiY29tcGFyZV9kaXJlY3QiLCJpc19zdWJzZXQkMSIsIm9mIiwiYXJlX2Rpc2pvaW50JDAiLCJ0b19uYW1lZF90cmVlIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsImdyb3VwX2J5JDAiLCJudGgkMCIsInJlbW92ZV9pbmRleCQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJtZXJnZV90b19zZXF1ZW5jZSQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsInRfb2Zfc2V4cF9kaXJlY3QkMCIsImludmFyaWFudHMkMSIsImlzX2VtcHR5JDEiLCJlbGVtZW50cyQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJjaG9vc2UkMSIsImNob29zZV9leG4kMSIsInRvX2xpc3QkMSIsInRvX2FycmF5JDEiLCJpdGVyJDIiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImNvdW50JDEiLCJzdW0kMSIsImZpbmQkMSIsImZpbmRfZXhuJDEiLCJmaW5kX21hcCQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZmlsdGVyJDEiLCJmaWx0ZXJfbWFwJDAiLCJwYXJ0aXRpb25fdGYkMSIsIml0ZXIyJDEiLCJtZW0kMSIsImFkZCQxIiwicmVtb3ZlJDEiLCJ1bmlvbiQxIiwiaW50ZXIkMSIsImRpZmYkMSIsInN5bW1ldHJpY19kaWZmJDEiLCJjb21wYXJlX2RpcmVjdCQwIiwiaXNfc3Vic2V0JDMiLCJhcmVfZGlzam9pbnQkMSIsIm9mX2xpc3QkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9hcnJheSQwIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQwIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDAiLCJvZl9zb3J0ZWRfYXJyYXkkMCIsInVuaW9uX2xpc3QkMCIsInN0YWJsZV9kZWR1cF9saXN0JDAiLCJncm91cF9ieSQxIiwic3BsaXQkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiY29tcGFyYXRvcl9zIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDEiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJibmRzXzAwMiQxIiwiYm5kc18wMDIkMiIsImJuZHNfMDAyJDMiLCJtdXQyIiwibXV0MSIsImZyb250IiwiY2FwYWNpdHkkMCIsImNhcGFjaXR5JDEiLCJibGl0X3RvX2FycmF5IiwiZnJvbnRfbGVuIiwicmVzdF9sZW4iLCJkZXNpcmVkX2NhcGFjaXR5IiwiZW5xdWV1ZSIsImRlcXVldWVfbm9uZW1wdHkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWUiLCJmcm9udF9ub25lbXB0eSIsImxhc3Rfbm9uZW1wdHkiLCJwZWVrIiwicGVla19leG4iLCJibGl0X3RyYW5zZmVyIiwibGVuJDEiLCJkc3Rfc3RhcnQiLCJzcmNfaSIsImRzdF9pIiwiZW5xdWV1ZV9hbGwiLCJ0X3Jlc3VsdCIsImZpbHRlcl9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsImQkMCIsImFkZF9leG4iLCJhZGRfZXhuX2ludGVybmFsIiwic2luZ2xldG9uX3RvX3RyZWVfZXhuIiwiY29sbGFwc2UiLCJnbyIsImFkZF91bmNoZWNrZWQiLCJnbyQwIiwidG9fdHJlZV91bmNoZWNrZWQiLCJtYXhfa2V5Iiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsImJ1aWxkZXIiLCJwcmV2X2tleSIsImpvaW4kMCIsImxkJDAiLCJsayQwIiwicmsiLCJyZCQwIiwicmskMCIsImxrIiwiY21wJDAiLCJtYXliZSQwIiwic3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IiwiaW50byIsImJvdW5kYXJ5X29wdCIsImluc2VydF9pbnRvIiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJpbml0JDEiLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwicmVtb3ZlX2xvb3AiLCJjaGFuZ2UiLCJjaGFuZ2VfY29yZSIsImQkMSIsImxlbmd0aCQyIiwibGVuZ3RoJDMiLCJ1cGRhdGUiLCJ1cGRhdGVfY29yZSIsInJlbW92ZV9tdWx0aSIsIm5vbl9lbXB0eV90YWlsIiwiaXRlcl9rZXlzIiwiaXRlcmlfdW50aWxfbG9vcCIsIml0ZXJpX3VudGlsIiwiZm9sZF91bnRpbF9sb29wIiwiZmluYWwkMSIsImZpbmFsJDAiLCJmaWx0ZXJfa2V5cyIsInBhcnRpdGlvbl9tYXBpIiwicGFpcjIiLCJwYWlyMSIsImN1cnIiLCJrMiIsIm5leHQkMSIsImRhdGFfZXF1YWwiLCJrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8iLCJrZXlzX2xlc3Nfb3JfZXF1YWxfdG8iLCJkJDIiLCJjb21wYXJlX2RhdGEiLCJkMiIsImQxIiwiZm9sZDIkMCIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJkZWx0YSIsImFjYyQzIiwiYWNjJDQiLCJhY2MkNSIsImFjYyQ2IiwiYWNjJDciLCJyaWdodCQyIiwibGVmdCQyIiwicmlnaHQkMSIsImtleXMiLCJvZl9mb2xkYWJsZV9mb2xkIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9yZWR1Y2UiLCJuZXdfZGF0YSIsIm9mX2ZvbGRhYmxlIiwib2ZfZm9sZGFibGVfb3JfZXJyb3IiLCJvZl9mb2xkYWJsZV9leG4iLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2ZvbGRhYmxlX211bHRpIiwib2ZfYWxpc3RfbXVsdGkiLCJmb2xkJDIiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IiLCJvZl9zZXF1ZW5jZV9leG4iLCJvZl9zZXF1ZW5jZV9tdWx0aSIsInRvX2FsaXN0Iiwia2V5X29yZGVyIiwibWVyZ2VfbGFyZ2VfZmlyc3QiLCJsZW5ndGhfbGFyZ2UiLCJ0X2xhcmdlIiwidF9zbWFsbCIsIm1lcmdlX3NrZXdlZCIsImxlbmd0aDEiLCJsZW5ndGgyIiwicmVwYWNrYWdlIiwibWFya2VyIiwiY2xvc2VzdF9rZXkiLCJmb3VuZF9tYXJrZXIiLCJmb3VuZF9rZXkiLCJmb3VuZF92YWx1ZSIsImZvdW5kX3ZhbHVlJDAiLCJmb3VuZF9rZXkkMCIsInJhbmsiLCJudW1fdG9fc2VhcmNoIiwicGFpciIsInBhaXIkMCIsImJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIiwibWF5YmVfYm91bmQiLCJpZl9leGNsdXNpdmUiLCJpZl9pbmNsdXNpdmUiLCJmaW5kX2JvdW5kIiwiYm91bmQkMCIsImJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyIsImxvd2VyX2JvdW5kJDAiLCJ1cHBlcl9ib3VuZCQwIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJrZXlfb2Zfc2V4cCIsInZhbHVlX29mX3NleHAiLCJhbGlzdF9zZXhwcyIsImZvdW5kX2ZpcnN0X2siLCJrMl9zZXhwIiwic2V4cF9vZl92YWx1ZSIsImVycm9yX3RyZWUiLCJva3MiLCJtYXBfa2V5cyIsIm1hcF9rZXlzX2V4biIsImxpa2UyIiwibGlrZV9tYXliZV9ub19vcCIsIm9sZF90Iiwib2xkX3RyZWUiLCJ3aXRoX3NhbWVfbGVuZ3RoIiwic2V0JDEiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsIml0ZXJfa2V5cyQwIiwiaXRlcmlfdW50aWwkMCIsImZvbGQkMyIsImZvbGQyJDEiLCJmaWx0ZXJfa2V5cyQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJjb21iaW5lX2Vycm9ycyQwIiwia2V5cyQwIiwidG9fYWxpc3QkMCIsImZvbGRfc3ltbWV0cmljX2RpZmYkMCIsIm1lcmdlJDAiLCJtZXJnZV9za2V3ZWQkMCIsImJvdGhfbGVuIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm9mX2FsaXN0JDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwib2ZfYWxpc3RfZm9sZCQwIiwib2ZfYWxpc3RfcmVkdWNlJDAiLCJvZl9pdGVyaSQwIiwib2ZfaXRlcmlfZXhuJDAiLCJyZXF1aXJlZF9ieV9pbnRmIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQwIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMCIsIm9mX3NlcXVlbmNlX2V4biQwIiwib2Zfc2VxdWVuY2VfbXVsdGkkMCIsIm9mX3NlcXVlbmNlX2ZvbGQkMCIsIm9mX3NlcXVlbmNlX3JlZHVjZSQwIiwic2V0JDIiLCJhZGRfZXhuJDEiLCJhZGRfbXVsdGkkMSIsInJlbW92ZV9tdWx0aSQxIiwiZmluZF9tdWx0aSQxIiwiY2hhbmdlJDEiLCJ1cGRhdGUkMSIsIml0ZXJfa2V5cyQxIiwiaXRlcmlfdW50aWwkMSIsIm1hcGkkMSIsImZvbGQkNCIsImZvbGQyJDIiLCJmaWx0ZXJfa2V5cyQxIiwiZmlsdGVyaSQxIiwiZmlsdGVyX21hcGkkMSIsInBhcnRpdGlvbl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwJDEiLCJwYXJ0aXRpb25pX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwia2V5cyQxIiwiZGF0YSQxIiwidG9fYWxpc3QkMSIsImZvbGRfc3ltbWV0cmljX2RpZmYkMSIsIm1lcmdlJDEiLCJtZXJnZV9za2V3ZWQkMSIsImZvcl9hbGxpJDEiLCJleGlzdHNpJDEiLCJjb3VudGkkMSIsImFwcGVuZCQxIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDEiLCJyYW5nZV90b19hbGlzdCQxIiwiY2xvc2VzdF9rZXkkMSIsIm50aCQyIiwibnRoX2V4biQwIiwicmFuayQxIiwia19vZl9zZXhwIiwidl9vZl9zZXhwIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQwIiwibWFwX2tleXMkMCIsImR1cCIsIm1hcF9rZXlzX2V4biQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl90cmVlJDIiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJtYXBfa2V5cyQxIiwibWFwX2tleXNfZXhuJDEiLCJvZl90cmVlJDMiLCJvZl9hbGlzdCQyIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMiIsIm9mX2FsaXN0X2V4biQyIiwib2ZfYWxpc3RfbXVsdGkkMiIsIm9mX2FsaXN0X2ZvbGQkMiIsIm9mX2FsaXN0X3JlZHVjZSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwiSyIsInZfZ3JhbW1hciIsImNvbXBhcmVfdiIsImVxdWFsX3YiLCJoYXNoX2ZvbGRfdiIsIm9mX3RyZWUkNCIsImVtcHR5JDMiLCJvZl9hbGlzdCQzIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMyIsIm9mX2FsaXN0X2V4biQzIiwib2ZfYWxpc3RfbXVsdGkkMyIsIm9mX2FsaXN0X2ZvbGQkMyIsIm9mX2FsaXN0X3JlZHVjZSQzIiwib2ZfaXRlcmkkMyIsIm9mX2l0ZXJpX2V4biQzIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQzIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMyIsIm9mX3NlcXVlbmNlX2V4biQzIiwib2Zfc2VxdWVuY2VfbXVsdGkkMyIsIm9mX3NlcXVlbmNlX2ZvbGQkMyIsIm9mX3NlcXVlbmNlX3JlZHVjZSQzIiwibWFwX2tleXMkMyIsIm1hcF9rZXlzX2V4biQzIiwidHJhbnNmZXIiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ3cmFwX21vZHVsbyIsInVud3JhcCIsImNseiIsImN0eiIsImludmFsaWRfc3RyIiwic2lnbmVkbmVzcyIsInBvc19zdHIiLCJpbnQ2MyIsImludDYzJDAiLCJvbmUkMCIsIm9mX25hdGl2ZWludF90cnVuYyIsInRvX25hdGl2ZWludF90cnVuYyIsInRvX3N0cmluZyQxIiwicmVwciIsIm9mX2ludF90cnVuYyIsInJlcHIkMCIsImluY2x1ZGUiLCJvZl9mbG9hdCQwIiwidG9fZmxvYXQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludF9leG4kMCIsInBwJDAiLCJoYXNoYWJsZSQwIiwiaXNfcG9zaXRpdmUkMCIsImlzX25vbl9uZWdhdGl2ZSQwIiwiaXNfbmVnYXRpdmUkMCIsImlzX25vbl9wb3NpdGl2ZSQwIiwic2lnbiQwIiwiaW52YXJpYW50JDAiLCJ0b19zdHJpbmdfaHVtJDAiLCJtaW51c19vbmUkMCIsInJlbSQwIiwicm91bmQkMCIsInJvdW5kX3Rvd2FyZHNfemVybyQwIiwicm91bmRfZG93biQwIiwicm91bmRfdXAkMCIsInJvdW5kX25lYXJlc3QkMCIsInN1Y2MkMCIsInByZWQkMCIsInBvdyQwIiwiYml0X2FuZCQwIiwiYml0X29yJDAiLCJiaXRfeG9yJDAiLCJiaXRfbm90JDAiLCJwb3Bjb3VudCQwIiwic2hpZnRfbGVmdCQwIiwic2hpZnRfcmlnaHQkMCIsImRlY3IkMCIsImluY3IkMCIsIm9mX2ludDMyX2V4biQwIiwidG9faW50MzJfZXhuJDAiLCJvZl9pbnQ2NF9leG4kMCIsInRvX2ludDY0JDAiLCJvZl9uYXRpdmVpbnRfZXhuJDAiLCJ0b19uYXRpdmVpbnRfZXhuJDAiLCJudW1fYml0cyQwIiwibWF4X3ZhbHVlJDAiLCJtaW5fdmFsdWUkMCIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMCIsImNlaWxfcG93MiQwIiwiZmxvb3JfcG93MiQwIiwiY2VpbF9sb2cyJDAiLCJpc19wb3cyJDAiLCJjbHokMCIsImN0eiQwIiwib2ZfaW50JDAiLCJ0b19pbnQkMCIsInRvX2ludF90cnVuYyQwIiwidG9faW50MzIkMCIsIm9mX2ludDY0JDAiLCJvZl9uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludCQwIiwidG9fbmF0aXZlaW50X3RydW5jJDAiLCJvZl9mbG9hdF91bmNoZWNrZWQkMCIsInJlcHIkMSIsImJzd2FwMzIkMCIsImJzd2FwNDgkMCIsInBvc19kaWZmIiwibmVnYXRpdmVfb25lIiwiZGl2X3dvdWxkX292ZXJmbG93IiwicHJvZHVjdCIsImFicyQxIiwibmVnJDAiLCJyYW5kb21fb2ZfaW50IiwicmFuZG9tX29mX2ludDY0IiwicmFuZG9tX29mX2ludCQwIiwicmFuZG9tX2luY2xfb2ZfaW50IiwicmFuZG9tX2luY2xfb2ZfaW50NjQiLCJyYW5kb21faW5jbCIsImludiIsImxlZnRfa2V5IiwicmlnaHRfa2V5IiwidXBkYXRlX2hlaWdodCIsIm9sZF9oZWlnaHQiLCJuZXdfaGVpZ2h0IiwiYmFsYW5jZSIsInJvb3Rfbm9kZSIsImxlZnRfbm9kZSIsInJpZ2h0X25vZGUiLCJsZWZ0X25vZGVfbGVmdCIsImxlZnRfbm9kZV9yaWdodCIsImxyX2xlZnQiLCJscl9yaWdodCIsInJpZ2h0X25vZGVfbGVmdCIsInJpZ2h0X25vZGVfcmlnaHQiLCJybF9sZWZ0IiwicmxfcmlnaHQiLCJzZXRfbGVmdCIsIm5vZGUiLCJ0cmVlJDAiLCJzZXRfcmlnaHQiLCJhZGRlZCIsImZpbmRpX2FuZF9jYWxsX2ltcGwiLCJhcmcxIiwiYXJnMiIsImNhbGxfaWZfZm91bmQiLCJjYWxsX2lmX25vdF9mb3VuZCIsImZpbmRfYW5kX2NhbGwiLCJjYWxsX2lmX2ZvdW5kJDAiLCJjYWxsX2lmX25vdF9mb3VuZCQwIiwiZmluZGlfYW5kX2NhbGwiLCJjYWxsX2lmX2ZvdW5kJDEiLCJjYWxsX2lmX25vdF9mb3VuZCQxIiwiZmluZF9hbmRfY2FsbDEiLCJjYWxsX2lmX2ZvdW5kJDIiLCJjYWxsX2lmX25vdF9mb3VuZCQyIiwiZmluZGlfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQzIiwiY2FsbF9pZl9ub3RfZm91bmQkMyIsImZpbmRfYW5kX2NhbGwyIiwiY2FsbF9pZl9mb3VuZCQ0IiwiY2FsbF9pZl9ub3RfZm91bmQkNCIsImZpbmRpX2FuZF9jYWxsMiIsImlmX2ZvdW5kJDAiLCJpZl9ub3RfZm91bmQkMCIsInJlbW92ZWQiLCJrZXkkNCIsImRhdGEkNCIsInJrZXkiLCJyZGF0YSIsImtleSQxIiwicmtleSQwIiwicmRhdGEkMCIsImxrZXkkMCIsImxkYXRhJDAiLCJrZXkkMyIsImRhdGEkMyIsInJrZXkkMSIsInJkYXRhJDEiLCJsa2V5IiwibGRhdGEiLCJrZXkkMiIsImRhdGEkMiIsIm1hcGlfaW5wbGFjZSIsImVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIiwid2l0aG91dF9tdXRhdGluZyIsIm1heF90YWJsZV9sZW5ndGgiLCJncm93dGhfYWxsb3dlZCIsInNpemUkMCIsInNpemUkMSIsInNsb3QiLCJhZGRfd29ya2VyIiwibmV3X3Jvb3QiLCJtYXliZV9yZXNpemVfdGFibGUiLCJzaG91bGRfZ3JvdyIsIm5ld19hcnJheV9sZW5ndGgiLCJuZXdfdGFibGUiLCJvbGRfdGFibGUiLCJzZXhwX29mX2tleSQwIiwiYWRkZWRfb3JfcmVtb3ZlZCIsImJ1Y2tldCIsImNob29zZV9ub25lbXB0eSIsInRhYmxlIiwiYXZsdHJlZSIsImludmFyaWFudF9rZXkiLCJpbnZhcmlhbnRfZGF0YSIsInJlYWxfbGVuIiwibmV3X3QiLCJ0MCIsIm5ld19kYXRhJDAiLCJmaW5kX29yX2FkZCIsImlkIiwiZmluZGlfb3JfYWRkIiwiZmluZF9hbmRfcmVtb3ZlIiwidXBkYXRlX2FuZF9yZXR1cm4iLCJpbmNyX2J5IiwicmVtb3ZlX2lmX3plcm8iLCJieSIsImNyZWF0ZV9tYXBwZWQiLCJnZXRfa2V5IiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhIiwiYWN0aW9uIiwiZHN0X2RhdGEkMCIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwibWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSIsIm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUiLCJwaSIsInNxcnRfcGkiLCJzcXJ0XzJwaSIsImV1bGVyIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsImlyb3VuZF9uZWFyZXN0XzY0JDAiLCJpcm91bmRfbmVhcmVzdF9leG5fMzIiLCJpcm91bmRfbmVhcmVzdF9leG5fNjQiLCJpcm91bmRfbmVhcmVzdF9leG4iLCJpcm91bmRfZXhuIiwiaXJvdW5kIiwiaXNfaW5mIiwiaXNfZmluaXRlIiwibWluX2luYW4iLCJtYXhfaW5hbiIsInNxdWFyZSIsImZyYWN0aW9uYWwiLCJpbnRlZ3JhbCIsInJvdW5kX25lYXJlc3RfaW5saW5lIiwicm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4iLCJjZWlsX29yX3N1Y2MiLCJkaWZmX2Zsb29yIiwiZGlmZl9jZWlsIiwiaW50NjNfcm91bmRfbGJvdW5kIiwiaW50NjNfcm91bmRfdWJvdW5kIiwiaW50NjNfcm91bmRfdXBfZXhuIiwiaW50NjNfcm91bmRfZG93bl9leG4iLCJpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biIsImNsYXNzaWZ5Iiwic3RyaXBfemVybyIsImRlY2ltYWxzIiwiZXhwbGljaXRfcGx1cyIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0byIsImtpbG8iLCJtZWdhIiwiZ2lnYSIsInRlcmEiLCJwZXRhIiwibWFnIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJoaWdoZXIiLCJkaWZmX3JpZ2h0IiwiZGlmZl9sZWZ0IiwicGV0YSQwIiwidG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIiwicm91bmRfZ2VuIiwic2QiLCJkZCIsImRkJDAiLCJzZCQwIiwiZGQkMSIsInNkJDEiLCJhYnNfZGQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWwiLCJkZWNpbWFsX2RpZ2l0cyIsInNpZ25fZXhuIiwic2lnbl9vcl9uYW4iLCJpZWVlX25lZ2F0aXZlIiwibWFudGlzc2FfYml0cyIsImV4cG9uZW50X21hc2s2NCIsImV4cG9uZW50X21hc2siLCJtYW50aXNzYV9tYXNrIiwibWFudGlzc2FfbWFzazY0IiwiaWVlZV9leHBvbmVudCIsImllZWVfbWFudGlzc2EiLCJjcmVhdGVfaWVlZV9leG4iLCJuZWdhdGl2ZSIsIm1hbnRpc3NhIiwic2lnbl9iaXRzIiwiZXhwdF9iaXRzIiwibWFudF9iaXRzIiwiY3JlYXRlX2llZWUiLCJzcGVjaWFsaXplZF9oYXNoIiwiYWRkX3N1YnN0cmluZyIsImFkZF9zdWJieXRlcyIsImVsaWRlZF9tZXNzYWdlIiwiZWxpZGUiLCJhdF9tb3N0X251bV9mcmFtZXMiLCJ0b19zdHJpbmdfbGlzdCIsInNldF9yZWNvcmRpbmciLCJhbV9yZWNvcmRpbmciLCJtb3N0X3JlY2VudCIsIm1vc3RfcmVjZW50X2Zvcl9leG4iLCJ3aXRoX3JlY29yZGluZyIsInNhdmVkIiwib2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhIiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJib29sX29mX3NleHAiLCJzZXhwX29mX2Jvb2wiLCJib29sX3NleHBfZ3JhbW1hciIsImNoYXJfb2Zfc2V4cCIsInNleHBfb2ZfY2hhciIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJmdW5jJDEiLCJmbG9hdF9vZl9zZXhwIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X3NleHBfZ3JhbW1hciIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZnVuYyQ1IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fb2Zfc2V4cCIsInNleHBfb2Zfb3B0aW9uIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInJlZl9vZl9zZXhwIiwic2V4cF9vZl9yZWYiLCJyZWZfc2V4cF9ncmFtbWFyIiwic3RyaW5nX29mX3NleHAiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJjb21wYXJlX2J5dGVzIiwiZXF1YWxfYnl0ZXMiLCJieXRlc19vZl9zZXhwIiwic2V4cF9vZl9ieXRlcyIsImJ5dGVzX3NleHBfZ3JhbW1hciIsImZ1bmMkNiIsInVuaXRfb2Zfc2V4cCIsInNleHBfb2ZfdW5pdCIsInVuaXRfc2V4cF9ncmFtbWFyIiwiZmFpbHdpdGgiLCJpbnZhbGlkX2FyZyIsImNvbXBhcmVfYXJyYXkkMCIsImVxdWFsX2FycmF5JDAiLCJhcnJheV9vZl9zZXhwJDAiLCJzZXhwX29mX2FycmF5JDAiLCJhcnJheV9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYm9vbCQwIiwiZXF1YWxfYm9vbCQwIiwiaGFzaF9mb2xkX2Jvb2wkMCIsImhhc2hfYm9vbCQwIiwiYm9vbF9vZl9zZXhwJDAiLCJzZXhwX29mX2Jvb2wkMCIsImJvb2xfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2NoYXIkMCIsImVxdWFsX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJoYXNoX2ZvbGRfZmxvYXQkMCIsImhhc2hfZmxvYXQkMCIsImZsb2F0X29mX3NleHAkMCIsInNleHBfb2ZfZmxvYXQkMCIsImZsb2F0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQkMCIsImVxdWFsX2ludCQwIiwiaGFzaF9mb2xkX2ludCQwIiwiaGFzaF9pbnQkMCIsImludF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludCQwIiwiaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQzMiQwIiwiZXF1YWxfaW50MzIkMCIsImhhc2hfZm9sZF9pbnQzMiQwIiwiaGFzaF9pbnQzMiQwIiwiaW50MzJfb2Zfc2V4cCQwIiwic2V4cF9vZl9pbnQzMiQwIiwiaW50MzJfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDY0JDAiLCJlcXVhbF9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiaGFzaF9mb2xkX2xpc3QkMCIsImxpc3Rfb2Zfc2V4cCQwIiwic2V4cF9vZl9saXN0JDAiLCJsaXN0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9uYXRpdmVpbnQkMCIsImVxdWFsX25hdGl2ZWludCQwIiwiaGFzaF9mb2xkX25hdGl2ZWludCQwIiwiaGFzaF9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9vZl9zZXhwJDAiLCJzZXhwX29mX25hdGl2ZWludCQwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9vcHRpb24kMCIsImVxdWFsX29wdGlvbiQwIiwiaGFzaF9mb2xkX29wdGlvbiQwIiwib3B0aW9uX29mX3NleHAkMCIsInNleHBfb2Zfb3B0aW9uJDAiLCJvcHRpb25fc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3JlZiQwIiwiZXF1YWxfcmVmJDAiLCJyZWZfb2Zfc2V4cCQwIiwic2V4cF9vZl9yZWYkMCIsInJlZl9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfc3RyaW5nJDAiLCJlcXVhbF9zdHJpbmckMCIsImhhc2hfZm9sZF9zdHJpbmckMCIsImhhc2hfc3RyaW5nJDAiLCJzdHJpbmdfb2Zfc2V4cCQwIiwic2V4cF9vZl9zdHJpbmckMCIsInN0cmluZ19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYnl0ZXMkMCIsImVxdWFsX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiaGFzaF9mb2xkX3VuaXQkMCIsImhhc2hfdW5pdCQwIiwidW5pdF9vZl9zZXhwJDAiLCJzZXhwX29mX3VuaXQkMCIsInVuaXRfc2V4cF9ncmFtbWFyJDAiLCJyYWlzZV9zJDAiLCJwaHlzX2VxdWFsJDAiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJzZXRfaW5wdXRfbmFtZSIsIm5hbWUiLCJzZXRfaW5wdXRfbGV4YnVmIiwibGV4YnVmX29wdCIsInZlcnNpb25fc3BlY2lmaWNfdF9vZl90IiwieCIsImlzX3dlbGxfZm9ybWVkIiwiZXJyb3IiLCJzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIiwibXNnIiwibWFpbl9tc2ciLCJtYWluIiwibG9jIiwic3ViX21zZ3MiLCJzdWIiLCJlcnIiLCJzdWIkMCIsImFjYyIsInRhaWwiLCJzdWIkMSIsIm9mX2V4biIsImV4biIsImUiLCJzZXRfbWFpbl9tc2ciLCJ0eHQiLCJwcGYiLCJtYWtlIiwibWsiLCJzZXRfbWFpbl9sb2MiLCJyYWlzZV9lcnJvcmYkMCIsInBhcnNlIiwicyIsImFzdF9pbXBsX21hZ2ljX251bWJlciIsImFzdF9pbnRmX21hZ2ljX251bWJlciIsInJpZ2h0IiwiZm10IiwiZm10JDAiLCJmbXQkMSIsIm9wdCIsInByZWZpeF9zeW1ib2xzIiwiaW5maXhfc3ltYm9scyIsInNwZWNpYWxfaW5maXhfc3RyaW5ncyIsInJlc2V0X2N0eHQiLCJ2YWx1ZSIsInQiLCJkZWZhdWx0JDAiLCJmaXhpdHlfb2Zfc3RyaW5nIiwiZmlyc3RfaXMiLCJjIiwic3RyIiwibGFzdF9pcyIsIm5lZWRzX3BhcmVucyIsImZpeCIsIm5lZWRzX3NwYWNlcyIsInN0cmluZ19sb2MiLCJwcm90ZWN0X2lkZW50IiwiZm9ybWF0Iiwib3ZlcnJpZGUiLCJ2aWV3X2V4cHIiLCJleHAiLCJleHAkMCIsImV4cCQxIiwiZTEiLCJhY2MkMCIsImIiLCJscyIsImlzX3NpbXBsZV9jb25zdHJ1Y3QiLCJwcCIsInVuZGVyX3NlbWkiLCJjdHh0IiwibGlzdCIsInNlcCIsImZpcnN0IiwibGFzdCIsImZ1IiwieHMiLCJmaXJzdCQwIiwieCQwIiwibGFzdCQwIiwieCQxIiwic2VwJDAiLCJ4JDMiLCJ4JDIiLCJ4cyQwIiwib3B0aW9uIiwiYSIsInBhcmVuIiwic3RoIiwic3RoJDAiLCJwcmludF9sb25naWRlbnQiLCJsb25ncHJlZml4IiwicyQwIiwieSIsImxvbmdpZGVudF9sb2MiLCJjb25zdGFudCIsImkiLCJtIiwiaSQwIiwiaSQxIiwiZGVsaW0iLCJpJDIiLCJtJDAiLCJtdXRhYmxlX2ZsYWciLCJ2aXJ0dWFsX2ZsYWciLCJyZWNfZmxhZyIsInJmIiwibm9ucmVjX2ZsYWciLCJkaXJlY3Rpb25fZmxhZyIsInByaXZhdGVfZmxhZyIsImNvbnN0YW50X3N0cmluZyIsInR5dmFyIiwidHl2YXJfbG9jIiwic3RyaW5nX3F1b3QiLCJjbGFzc19wYXJhbXNfZGVmIiwibCIsInR5cGVfcGFyYW0iLCJ0eXBlX3dpdGhfbGFiZWwiLCJsYWJlbCIsImNvcmVfdHlwZTEiLCJjb3JlX3R5cGUiLCJhdHRyaWJ1dGVzIiwiY3QyIiwiY3QxIiwiY3QiLCJzbCIsImN0JDAiLCJjdCQxIiwibCQwIiwibGkiLCJsJDEiLCJjb3JlX2ZpZWxkX3R5cGUiLCJmaWVsZF92YXIiLCJsJDIiLCJsaSQwIiwibG93IiwiY2xvc2VkIiwibCQzIiwiZmlyc3RfaXNfaW5oZXJpdCIsInR5cGVfdmFyaWFudF9oZWxwZXIiLCJjdGwiLCJjc3RycyIsImxpZCIsImF1eCIsImV4dGVuc2lvbiIsInBhdHRlcm4kMSIsInBhdHRlcm4iLCJwIiwicDIiLCJwMSIsIm9ycGF0cyIsInBhdHRlcm4xIiwicGF0dGVybjEkMCIsInBhdHRlcm5fbGlzdF9oZWxwZXIiLCJwYXQyIiwicGF0MSIsInNpbXBsZV9wYXR0ZXJuIiwic2ltcGxlX3BhdHRlcm4kMCIsInBvIiwidmwiLCJjMiIsImMxIiwibG9uZ2lkZW50X3hfcGF0dGVybiIsInAkMCIsInAkMSIsInAkMiIsIndpdGhfcGFyZW4iLCJsYWJlbF9leHAiLCJyZXN0IiwidHh0JDAiLCJvJDAiLCJzdWdhcl9leHByIiwiYXJncyIsImlkIiwibGFiIiwicHJpbnRfaW5kZXhvcCIsInBhdGhfcHJlZml4IiwiYXNzaWduIiwibGVmdCIsInByaW50X2luZGV4IiwiaW5kaWNlcyIsInJlbV9hcmdzIiwicHJpbnRfcGF0aCIsInNpbXBsZV9leHByIiwiZSQwIiwicGF0aCIsImZ1bmMiLCJvdGhlcl9hcmdzIiwiYSQwIiwiYXNzaWduJDAiLCJwcmludCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJvcHQkMCIsInRsIiwicG1kJDAiLCJhdHRycyIsIm1kIiwiYXR0cnMkMCIsIm1kJDAiLCJvZCIsImluY2wiLCJjbGFzc19kZXNjcmlwdGlvbiIsInN0cnVjdHVyZV9pdGVtIiwibWUkMCIsIm1lMiIsIm1lMSIsIm10JDAiLCJtZSQxIiwic3RydWN0dXJlIiwicHBfcHJpbnRfcGV4cF9mdW5jdGlvbiIsInR5dmFyc19zdHIiLCJ0eXZhcnMiLCJwYXQkMCIsInR5cCIsInBhdCIsInJ0IiwiYXJnc190eXZhcnMiLCJnYWR0X3BhdHRlcm4iLCJ0eXZhcnMkMCIsImdhZHRfZXhwIiwiZV9jdCIsInZhcl9uYW1lcyQwIiwicHRfY3QiLCJwdF90eXZhcnMiLCJjaGVja192YXJpYWJsZSIsInZhcl9uYW1lcyIsImxvb3AiLCJkZXNjIiwiY29yZV90eXBlJDAiLCJsb25naWRlbnQiLCJsc3QkMCIsImxzdCQxIiwibG9vcF9vYmplY3RfZmllbGQiLCJsc3QkMiIsImxvbmdpZGVudCQwIiwic3RyaW5nIiwiY29yZV90eXBlJDEiLCJsYmxfbHN0X29wdGlvbiIsImZsYWciLCJyb3dfZmllbGRfbGlzdCIsImxvb3Bfcm93X2ZpZWxkIiwiY29yZV90eXBlJDIiLCJzdHJpbmdfbHN0IiwibHN0JDMiLCJsb25naWRlbnQkMSIsImFyZyIsImZpZWxkIiwicHJmX2Rlc2MiLCJwb2ZfZGVzYyIsInQkMCIsImV0eSIsInR5dmFycyQxIiwidHkiLCJiaW5kaW5nJDAiLCJtYXRjaCIsInB2YXIiLCJldmFyIiwicmYkMCIsImYkMCIsImFyZ19vcHQiLCJtZSQyIiwicG1iIiwiZXhwciIsImwyJDAiLCJsMiIsImNsYXNzX2NvbnN0cmFpbnQiLCJjbGFzc19kZWNsYXJhdGlvbiIsImNsJDMiLCJjbCQwIiwiY2wkMiIsImNsJDEiLCJjb25zdHIiLCJleHBvcnRlZCIsInR5cGVfZGVjbCIsImVxIiwicmVjb3JkX2RlY2xhcmF0aW9uIiwibGJscyIsInR5cGVfcmVjb3JkX2ZpZWxkIiwicGxkIiwicHJpdiIsIm1hbmlmZXN0IiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBjZCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwicmVwciIsInZhcmlhbnRzIiwiY29uc3RyYWludHMiLCJleHRlbnNpb25fY29uc3RydWN0b3IkMCIsInJlcyIsInZhcnMiLCJuYW1lJDAiLCJwcF92YXJzIiwidnMiLCJyIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJzaW1wbGVfbmFtZSIsImxibCIsImRpcmVjdGl2ZV9hcmd1bWVudCIsInRvcGxldmVsX3BocmFzZSIsInBkaXJfbmFtZSIsInBkaXJfYXJnIiwic3RyaW5nX29mX2V4cHJlc3Npb24iLCJzdHJpbmdfb2Zfc3RydWN0dXJlIiwidG9wX3BocmFzZSIsInBhdHRlcm4kMCIsInNpZ25hdHVyZSQwIiwic3RydWN0dXJlJDAiLCJjbGFzc19leHByJDAiLCJjbGFzc19maWVsZCQwIiwiY2xhc3NfdHlwZSQwIiwiY2xhc3Nfc2lnbmF0dXJlJDAiLCJjbGFzc190eXBlX2ZpZWxkJDAiLCJtb2R1bGVfZXhwciQwIiwibW9kdWxlX3R5cGUkMCIsInNpZ25hdHVyZV9pdGVtJDAiLCJzdHJ1Y3R1cmVfaXRlbSQwIiwidHlwZV9kZWNsYXJhdGlvbiQwIiwibWlncmF0aW9uX2Vycm9yIiwibWlzc2luZ19mZWF0dXJlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwiZnVuX2JvZHkiLCJ0eXBfY29uc3RyYWludCIsInBhcmFtcyIsInBhcmFtcyQwIiwiY29weV9mdW5jdGlvbl9wYXJhbSIsInR5cF9jb25zdHJhaW50JDAiLCJjb3B5X3R5cGVfY29uc3RyYWludCIsImZ1bl9ib2R5JDAiLCJjb3B5X2Z1bmN0aW9uX2JvZHkiLCJ4MSQwIiwiY29weV9hcmdfbGFiZWwiLCJ4MSQxIiwieDAkMyIsImNvcHlfY2FzZSIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwiY29weV9wYXR0ZXJuIiwieDEkMTIiLCJ4MCQxNiIsImNvcHlfY29yZV90eXBlIiwieDIkMyIsIngxJDEzIiwieDAkMTciLCJ4MSQxNCIsIngwJDE4IiwiY29weV9sYWJlbCIsIngwJDE5IiwieDEkMTUiLCJ4MCQyMCIsIngwJDIxIiwieDIkNCIsIngxJDE2IiwieDAkMjIiLCJjb3B5X21vZHVsZV9leHByIiwieDEkMTciLCJ4MCQyMyIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwieDAkMjQiLCJ4MCQyNSIsIngxJDE4IiwieDAkMjYiLCJ4MCQyNyIsImNvcHlfY2xhc3Nfc3RydWN0dXJlIiwieDEkMTkiLCJ4MCQyOCIsIngwJDI5IiwieDEkMjAiLCJ4MCQzMCIsImNvcHlfb3Blbl9kZWNsYXJhdGlvbiIsIngwJDMxIiwiY29weV9sZXRvcCIsIngwJDMyIiwiY29weV9leHRlbnNpb24iLCJjb3B5X2JpbmRpbmdfb3AiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwiY29weV9mdW5jdGlvbl9wYXJhbV9kZXNjIiwicHBhcmFtX2Rlc2MiLCJwcGFyYW1fbG9jIiwiY2FzZXMiLCJ0MiIsInQxIiwicHZiX2xvYyIsInB2Yl9hdHRyaWJ1dGVzIiwicHZiX2NvbnN0cmFpbnQiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJjb3B5X3ZhbHVlX2NvbnN0cmFpbnQiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwcGF0X2xvY19zdGFjayIsInBwYXRfbG9jIiwicHBhdF9kZXNjIiwiY29weV9wYXR0ZXJuX2Rlc2MiLCJjb3B5X2Nsb3NlZF9mbGFnIiwibG9jYWxseV9hYnN0cmFjdF91bml2YXJzIiwiY29lcmNpb24iLCJncm91bmQiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwiY29weV9jb3JlX3R5cGVfZGVzYyIsImNvcHlfbG9jYXRpb24iLCJjb3B5X29iamVjdF9maWVsZCIsImNvcHlfcm93X2ZpZWxkIiwiY29weV9wYWNrYWdlX3R5cGUiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJjb3B5X3Jvd19maWVsZF9kZXNjIiwicG9mX2F0dHJpYnV0ZXMiLCJwb2ZfbG9jIiwiY29weV9vYmplY3RfZmllbGRfZGVzYyIsImNvcHlfYXR0cmlidXRlIiwiYXR0cl9sb2MiLCJhdHRyX3BheWxvYWQiLCJhdHRyX25hbWUiLCJjb3B5X3BheWxvYWQiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsImNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyIsImNvcHlfdmFsdWVfZGVzY3JpcHRpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2V4Y2VwdGlvbiIsImNvcHlfbW9kdWxlX2JpbmRpbmciLCJjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jbGFzc19kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9pbmZvcyIsImNvcHlfY2xhc3NfaW5mb3MiLCJjb3B5X2NsYXNzX2V4cHIiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsImNvcHlfY2xhc3NfZXhwcl9kZXNjIiwiY29weV9jbGFzc190eXBlIiwiY29weV9vcGVuX2Rlc2NyaXB0aW9uIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImNvcHlfY2xhc3NfZmllbGQiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsImNvcHlfY2xhc3NfZmllbGRfZGVzYyIsImNvcHlfb3ZlcnJpZGVfZmxhZyIsImNvcHlfY2xhc3NfZmllbGRfa2luZCIsImNvcHlfbXV0YWJsZV9mbGFnIiwiY29weV9wcml2YXRlX2ZsYWciLCJjb3B5X29wZW5faW5mb3MiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1vZF9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2Rlc2MiLCJjb3B5X21vZHVsZV9leHByX2Rlc2MiLCJjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIiwiY29weV9tb2R1bGVfdHlwZSIsInBtdHlfYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9kZXNjIiwiY29weV9tb2R1bGVfdHlwZV9kZXNjIiwiY29weV93aXRoX2NvbnN0cmFpbnQiLCJjb3B5X3NpZ25hdHVyZV9pdGVtIiwicHNpZ19sb2MiLCJwc2lnX2Rlc2MiLCJjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiIsImNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsImNvcHlfY2xhc3NfZGVzY3JpcHRpb24iLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3R5X2xvYyIsInBjdHlfZGVzYyIsImNvcHlfY2xhc3NfdHlwZV9kZXNjIiwiY29weV9jbGFzc19zaWduYXR1cmUiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwiY29weV9jbGFzc190eXBlX2ZpZWxkIiwicGN0Zl9hdHRyaWJ1dGVzIiwicGN0Zl9sb2MiLCJwY3RmX2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyIsImNvcHlfdmlydHVhbF9mbGFnIiwieDMkMCIsImYwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsImNvcHlfaW5qZWN0aXZpdHkiLCJjb3B5X3ZhcmlhbmNlIiwicGluY2xfYXR0cmlidXRlcyIsInBpbmNsX2xvYyIsInBpbmNsX21vZCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwbXRkX2xvYyIsInBtdGRfYXR0cmlidXRlcyIsInBtdGRfdHlwZSIsInBtdGRfbmFtZSIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luIiwiY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMiLCJwdHlwZV9sb2MiLCJwdHlwZV9hdHRyaWJ1dGVzIiwicHR5cGVfbWFuaWZlc3QiLCJwdHlwZV9wcml2YXRlIiwicHR5cGVfa2luZCIsInB0eXBlX2NzdHJzIiwicHR5cGVfcGFyYW1zIiwicHR5cGVfbmFtZSIsImNvcHlfdHlwZV9raW5kIiwiY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsImNvcHlfbGFiZWxfZGVjbGFyYXRpb24iLCJwY2RfYXR0cmlidXRlcyIsInBjZF9sb2MiLCJwY2RfcmVzIiwicGNkX2FyZ3MiLCJwY2RfdmFycyIsInBjZF9uYW1lIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwY29uc3RfZGVzYyIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwidGNvbnN0cmFpbnQiLCJhdHRyIiwiZXhwciQzIiwiYzEkMCIsImV4cHIkMSIsInBhcmFtIiwiZXhwMCIsInBleHBfZGVzYyQwIiwiZXhwciQyIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsImFjYyQxIiwiYXJnX2xpc3QiLCJjMiQwIiwidHlwZV9jb25zdHJhaW50Iiwib3B0X2RlZmF1bHQkMCIsImFyZ19sYWJlbCQwIiwieDAkMzMiLCJ4MiQ1IiwieDEkMjEiLCJ4MCQzNCIsIm1lcmdlX2xvYyIsImdob3N0X2xvYyIsImdob3N0X2NvbnN0cmFpbnQiLCJwdmJfcGF0JDAiLCJwdmJfZXhwciQwIiwiY29uc3RyYWluX3BhdCIsInR5cCQwIiwiY29lcmNpb24kMCIsInB0eXBfbG9jJDAiLCJ0eXAkMyIsInB2Yl9wYXQkMyIsImdyb3VuZCQwIiwicGV4cF9sb2MkMCIsInB2Yl9leHByJDMiLCJwdmJfZXhwciQxIiwicHZiX3BhdCQxIiwidHlwJDIiLCJ0eXAkMSIsInR5cF9wb2x5IiwicHZiX3BhdCQyIiwidmFyJDAiLCJwdmJfZXhwciQyIiwibG9jJDAiLCJlbXB0eV9zdHJ1Y3QiLCJsb2NfZ2hvc3QiLCJsb2NfZW5kIiwibG9jX3N0YXJ0IiwiY29weV9wb3NpdGlvbiIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyIsInR5X2V4dCIsInJ0JDAiLCJ2YWx1ZV9wYXR0ZXJuIiwidmFsdWVfZXhwIiwiaW5uZXJfZSIsImV4dGVybl9jdCIsImV4dGVybl9jdCQwIiwicHRfdHl2YXJzJDAiLCJ3aXRoX2NvbnN0cmFpbnQiLCJ0eV92YXJzIiwicHZiX2NvbnN0cmFpbnQkMCIsImNvZXJjZSIsImdyIiwicHZiX2NvbnN0cmFpbnQkMSIsImlzX3VuaXQiLCJjb3B5X2V4cHIiLCJjb3B5X2Nhc2VzIiwiY29weV9wYXQiLCJjb3B5X3R5cCIsIm1hcF9vcHRpb24iLCJjb3B5X29wdGlvbiIsImNvcHlfYm9vbCIsImNvcHlfbG9uZ2lkZW50IiwieDBfbG9jIiwid3JhcCIsIngyJDYiLCJhdCIsImF0YXQiLCJwb3Blbl9saWQiLCJjdHkiLCJsb2MkMSIsIm5vbG9jIiwiZnJvbV9sb2MiLCJwb3MiLCJpbmplY3RfcHJlZGVmX29wdGlvbiIsImQiLCJpZGVudCIsInR5cGVfZGVjbGFyYXRpb25zIiwicmVjZmxhZyIsInR5cGVzIiwiZXh0cmFjdF9wcmVkZWZfb3B0aW9uIiwiaXNfbm9ucmVjIiwidHlwZXMkMCIsImlzX2tleXdvcmQiLCJpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2kiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJkZWZhdWx0X2xvYyIsInNldF9yZWYiLCJyIiwid2l0aF9kZWZhdWx0X2xvYyIsImwiLCJyZWYiLCJiYWNrdXAiLCJ4IiwiZSQwIiwiZSIsImludGVnZXIiLCJzdWZmaXgiLCJpIiwiaW50JDAiLCJpbnQzMiIsIm9wdCIsInN0aCIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsImNoYXIkMCIsImMiLCJzdHJpbmciLCJxdW90YXRpb25fZGVsaW1pdGVyIiwicyIsImxvYyIsIm1rIiwibmFtZSIsInBheWxvYWQiLCJtayQwIiwiZCIsInN0aCQwIiwiYXR0cnMiLCJhdHRyIiwiYSIsImFueSIsInZhciQwIiwiYXJyb3ciLCJiIiwidHVwbGUiLCJjb25zdHIiLCJvYmplY3QiLCJjbGFzcyQwIiwiYWxpYXMiLCJ2YXJpYW50IiwicG9seSIsInBhY2thZ2UkMCIsImV4dGVuc2lvbiIsImZvcmNlX3BvbHkiLCJ0IiwidmFyaWZ5X2NvbnN0cnVjdG9ycyIsInZhcl9uYW1lcyIsImNoZWNrX3ZhcmlhYmxlIiwidmwiLCJ2YXJfbmFtZXMkMCIsImxvb3AiLCJkZXNjIiwiY29yZV90eXBlIiwiY29yZV90eXBlJDAiLCJsYWJlbCIsImxzdCIsImxvbmdpZGVudCIsImxzdCQwIiwibHN0JDEiLCJsb29wX29iamVjdF9maWVsZCIsImxzdCQyIiwibG9uZ2lkZW50JDAiLCJjb3JlX3R5cGUkMSIsImxibF9sc3Rfb3B0aW9uIiwiZmxhZyIsInJvd19maWVsZF9saXN0IiwibG9vcF9yb3dfZmllbGQiLCJjb3JlX3R5cGUkMiIsInN0cmluZ19sc3QiLCJsc3QkMyIsImxvbmdpZGVudCQxIiwidHlwIiwibiIsImFyZyIsInMkMCIsImZpZWxkIiwicHJmX2Rlc2MiLCJwb2ZfZGVzYyIsInQkMCIsIm1rJDEiLCJhdHRyJDAiLCJhbnkkMCIsInZhciQxIiwiYWxpYXMkMCIsImNvbnN0YW50IiwiaW50ZXJ2YWwiLCJ0dXBsZSQwIiwiY29uc3RydWN0IiwidmFyaWFudCQwIiwicmVjb3JkIiwiYXJyYXkiLCJvciIsImNvbnN0cmFpbnQiLCJ0eXBlIiwibGF6eSIsInVucGFjayIsIm9wZW4iLCJleGNlcHRpb24iLCJleHRlbnNpb24kMCIsIm1rJDIiLCJhdHRyJDEiLCJpZGVudCIsImNvbnN0YW50JDAiLCJsZXQkMCIsImZ1biIsImZ1bmN0aW9uJDAiLCJhcHBseSIsInRyeSQwIiwidHVwbGUkMSIsImNvbnN0cnVjdCQwIiwidmFyaWFudCQxIiwicmVjb3JkJDAiLCJzZXRmaWVsZCIsImFycmF5JDAiLCJpZnRoZW5lbHNlIiwic2VxdWVuY2UiLCJ3aGlsZSQwIiwiZm9yJDAiLCJjb25zdHJhaW50JDAiLCJjb2VyY2UiLCJzZW5kIiwibmV3JDAiLCJzZXRpbnN0dmFyIiwib3ZlcnJpZGUiLCJsZXRtb2R1bGUiLCJsZXRleGNlcHRpb24iLCJhc3NlcnQiLCJsYXp5JDAiLCJwb2x5JDAiLCJvYmplY3QkMCIsIm5ld3R5cGUiLCJwYWNrIiwib3BlbiQwIiwibGV0b3AiLCJhbmRzIiwiYm9keSIsImV4dGVuc2lvbiQxIiwidW5yZWFjaGFibGUiLCJjYXNlJDAiLCJsaHMiLCJndWFyZCIsInJocyIsImJpbmRpbmdfb3AiLCJvcCIsInBhdCIsImV4cCIsIm1rJDMiLCJhdHRyJDIiLCJpZGVudCQwIiwiYWxpYXMkMSIsInNpZ25hdHVyZSIsImZ1bmN0b3IiLCJ3aXRoJDAiLCJ0eXBlb2YkMCIsImV4dGVuc2lvbiQyIiwibWF0Y2giLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInN0aCQxIiwicHJpbSIsIm1rJDEyIiwibWskMTMiLCJzeW4iLCJtayQxNCIsIm1rJDE1IiwiZXhwciIsIm1rJDE2IiwibWskMTciLCJtZXhwciIsIm1rJDE4IiwibWskMTkiLCJ2aXJ0Iiwic3RoJDIiLCJwYXJhbXMiLCJtayQyMCIsIm1hbmlmZXN0IiwiY3N0cnMiLCJzdGgkMyIsImtpbmQiLCJzdGgkNCIsInByaXYiLCJjb25zdHJ1Y3RvciIsInJlcyIsInZhcnMiLCJhcmdzIiwiZmllbGQkMCIsIm11dCIsIm1rJDIxIiwicGF0aCIsImNvbnN0cnVjdG9ycyIsIm1rX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yJDAiLCJkZWNsIiwicmViaW5kIiwibGlkIiwibWskMjIiLCJzZWxmIiwiZmllbGRzIiwibWskMjMiLCJtayQyNCIsInRhZyIsImNvbnN0JDAiLCJ0eXMiLCJpbmhlcml0JDEiLCJ0eSIsIm1rJDI1IiwidGFnJDAiLCJpbmhlcml0JDIiLCJzdHJpbmdfdmVyc2lvbiIsInN0cmluZ192ZXJzaW9uJDAiLCJzdHJpbmdfdmVyc2lvbiQxIiwic3RyaW5nX3ZlcnNpb24kMiIsInN0cmluZ192ZXJzaW9uJDMiLCJzdHJpbmdfdmVyc2lvbiQ0Iiwic3RyaW5nX3ZlcnNpb24kNSIsInN0cmluZ192ZXJzaW9uJDYiLCJzdHJpbmdfdmVyc2lvbiQ3Iiwic3RyaW5nX3ZlcnNpb24kOCIsInN0cmluZ192ZXJzaW9uJDkiLCJzdHJpbmdfdmVyc2lvbiQxMCIsInN0cmluZ192ZXJzaW9uJDExIiwic3RyaW5nX3ZlcnNpb24kMTIiLCJzdHJpbmdfdmVyc2lvbiQxMyIsInN0cmluZ192ZXJzaW9uJDE0Iiwic3RyaW5nX3ZlcnNpb24kMTUiLCJtaWdyYXRpb25faW5mbyIsImlkIiwibWlncmF0aW9uX2lkZW50aXR5IiwiY29tcG9zZSIsImciLCJtaWdyYXRpb25fZnVuY3Rpb25zIiwiaXNfdW5kZWZpbmVkIiwiaW1tZWRpYXRlX21pZ3JhdGlvbiIsIkEiLCJkaXJlY3Rpb24iLCJ2ZXJzaW9uIiwidG8iLCJmdW5zIiwiQiIsIm0kMSIsIlRvIiwiYWIiLCJ0bzIiLCJiYyIsIm0kMCIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJjb3B5X3NpZ25hdHVyZV9pdGVtIiwiY29weV9tb2R1bGVfdHlwZSIsImNvcHlfbW9kdWxlX2V4cHIiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGQiLCJjb3B5X2NsYXNzX3NpZ25hdHVyZSIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfY2xhc3NfZmllbGQiLCJjb3B5X2NsYXNzX2V4cHIiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImNvcHlfdHlwZV9leHRlbnNpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2Nhc2UiLCJjb3B5X3BhdHRlcm4iLCJjb3B5X2V4cHJlc3Npb24iLCJjb3B5X2NvcmVfdHlwZSIsImNvcHlfdG9wbGV2ZWxfcGhyYXNlIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZSIsIm1pZ3JhdGlvbl9pbmZvJDAiLCJ2ZXJzaW9uJDAiLCJtaWdyYXRpb25faW5mbyQxIiwidmVyc2lvbiQxIiwibWlncmF0aW9uX2luZm8kMiIsInZlcnNpb24kMiIsIm1pZ3JhdGlvbl9pbmZvJDMiLCJ2ZXJzaW9uJDMiLCJtaWdyYXRpb25faW5mbyQ0IiwidmVyc2lvbiQ0IiwibWlncmF0aW9uX2luZm8kNSIsInZlcnNpb24kNSIsIm1pZ3JhdGlvbl9pbmZvJDYiLCJ2ZXJzaW9uJDYiLCJtaWdyYXRpb25faW5mbyQ3IiwidmVyc2lvbiQ3IiwibWlncmF0aW9uX2luZm8kOCIsInZlcnNpb24kOCIsIm1pZ3JhdGlvbl9pbmZvJDkiLCJ2ZXJzaW9uJDkiLCJtaWdyYXRpb25faW5mbyQxMCIsInZlcnNpb24kMTAiLCJtaWdyYXRpb25faW5mbyQxMSIsInZlcnNpb24kMTEiLCJtaWdyYXRpb25faW5mbyQxMiIsInZlcnNpb24kMTIiLCJtaWdyYXRpb25faW5mbyQxMyIsInZlcnNpb24kMTMiLCJtaWdyYXRpb25faW5mbyQxNCIsInZlcnNpb24kMTQiLCJtaWdyYXRpb25faW5mbyQxNSIsInZlcnNpb24kMTUiLCJhbGxfdmVyc2lvbnMiLCJmcm9tX21hZ2ljIiwibWFnaWMiLCJhbGxfdmVyc2lvbnNfdG9wX2Rvd24iLCJ0YWlsIiwiVmVyc2lvbiIsIm9mX29jYW1sIiwibm9kZSIsInkiLCJ0b19vY2FtbCIsIm9mX29jYW1sX21hcHBlciIsIml0ZW0iLCJjdHh0IiwidG9fb2NhbWxfbWFwcGVyIiwiaW1wbGVtZW50YXRpb24iLCJsZXhidWYiLCJpbnRlcmZhY2UkMCIsInRvcGxldmVsX3BocmFzZSIsInVzZV9maWxlIiwiZXhwcmVzc2lvbiIsInBhdHRlcm4iLCJkZWZhdWx0X3ByaW50X3dhcm5pbmciLCJhYm91dF9pdGVfYnJhbmNoX3JlZiIsImNhcmVfYWJvdXRfaXRlX2JyYW5jaCIsImFib3V0X2l0ZV9icmFuY2giLCJzZWxmXzEiLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19mbmFtZSQwIiwicG9zX2xudW0kMCIsInBvc19ib2wkMCIsInBvc19jbnVtJDAiLCJsb2NfZ2hvc3QiLCJsb2NfZW5kIiwibG9jX3N0YXJ0IiwibG9jX3N0YXJ0JDAiLCJsb2NfZW5kJDAiLCJsb2NfZ2hvc3QkMCIsInR4dCIsInR4dCQwIiwibG9jJDAiLCJhJDAiLCJhJDEiLCJhJDIiLCJiJDAiLCJiJDEiLCJhJDMiLCJhJDQiLCJiJDIiLCJjJDAiLCJiJDMiLCJhJDUiLCJhJDYiLCJiJDQiLCJhdHRyX2xvYyIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImF0dHJfbmFtZSQwIiwiYXR0cl9wYXlsb2FkJDAiLCJhdHRyX2xvYyQwIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsInB0eXBfZGVzYyQwIiwicHR5cF9sb2MkMCIsInB0eXBfbG9jX3N0YWNrJDAiLCJwdHlwX2F0dHJpYnV0ZXMkMCIsImEkNyIsImEkOCIsImIkNSIsImEkOSIsImEkMTAiLCJiJDYiLCJiJDciLCJhJDExIiwiYSQxMiIsImIkOCIsImMkMSIsImIkOSIsImEkMTMiLCJhJDE0IiwiYiQxMCIsImMkMiIsImIkMTEiLCJhJDE1IiwiYSQxNiIsImIkMTIiLCJhJDE3IiwiYSQxOCIsImEkMTkiLCJhJDIwIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwicHJmX2Rlc2MkMCIsInByZl9sb2MkMCIsInByZl9hdHRyaWJ1dGVzJDAiLCJwb2ZfYXR0cmlidXRlcyIsInBvZl9sb2MiLCJwb2ZfZGVzYyQwIiwicG9mX2xvYyQwIiwicG9mX2F0dHJpYnV0ZXMkMCIsInBwYXRfYXR0cmlidXRlcyIsInBwYXRfbG9jX3N0YWNrIiwicHBhdF9sb2MiLCJwcGF0X2Rlc2MiLCJwcGF0X2Rlc2MkMCIsInBwYXRfbG9jJDAiLCJwcGF0X2xvY19zdGFjayQwIiwicHBhdF9hdHRyaWJ1dGVzJDAiLCJhJDIxIiwiYSQyMiIsImEkMjMiLCJhJDI0IiwiYSQyNSIsImEkMjYiLCJhJDI3IiwiYSQyOCIsImEkMjkiLCJhJDMwIiwiYiQxMyIsImEkMzEiLCJhJDMyIiwiYiQxNCIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJwZXhwX2Rlc2MkMCIsInBleHBfbG9jJDAiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJkJDAiLCJiJDE1IiwiYiQxNiIsImMkMyIsImIkMTciLCJiJDE4IiwiYyQ0IiwiYyQ1IiwiYiQxOSIsImIkMjAiLCJjJDYiLCJiJDIxIiwiYiQyMiIsImIkMjMiLCJhJDMzIiwiYSQzNCIsImIkMjQiLCJkJDEiLCJjJDciLCJiJDI1IiwiYSQzNSIsImEkMzYiLCJiJDI2IiwiYyQ4IiwiZCQyIiwiYiQyNyIsImEkMzciLCJhJDM4IiwiYiQyOCIsImMkOSIsImIkMjkiLCJhJDM5IiwiYSQ0MCIsImIkMzAiLCJjJDEwIiwiYiQzMSIsImEkNDEiLCJhJDQyIiwiYiQzMiIsImEkNDMiLCJhJDQ0IiwiYiQzMyIsImEkNDUiLCJhJDQ2IiwiYiQzNCIsImEkNDciLCJhJDQ4IiwiYyQxMSIsImIkMzUiLCJhJDQ5IiwiYSQ1MCIsImIkMzYiLCJjJDEyIiwiYiQzNyIsImEkNTEiLCJhJDUyIiwiYiQzOCIsImEkNTMiLCJhJDU0IiwiYSQ1NSIsImEkNTYiLCJiJDM5IiwiYSQ1NyIsImEkNTgiLCJiJDQwIiwiYSQ1OSIsImEkNjAiLCJiJDQxIiwiYSQ2MSIsImEkNjIiLCJiJDQyIiwiYSQ2MyIsImEkNjQiLCJiJDQzIiwiYSQ2NSIsImEkNjYiLCJiJDQ0IiwiYSQ2NyIsImEkNjgiLCJhJDY5IiwiYSQ3MCIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwicGNfbGhzJDAiLCJwY19ndWFyZCQwIiwicGNfcmhzJDAiLCJhbmRzJDAiLCJib2R5JDAiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwicGJvcF9vcCQwIiwicGJvcF9wYXQkMCIsInBib3BfZXhwJDAiLCJwYm9wX2xvYyQwIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwdmFsX25hbWUkMCIsInB2YWxfdHlwZSQwIiwicHZhbF9wcmltJDAiLCJwdmFsX2F0dHJpYnV0ZXMkMCIsInB2YWxfbG9jJDAiLCJwdHlwZV9sb2MiLCJwdHlwZV9hdHRyaWJ1dGVzIiwicHR5cGVfbWFuaWZlc3QiLCJwdHlwZV9wcml2YXRlIiwicHR5cGVfa2luZCIsInB0eXBlX2NzdHJzIiwicHR5cGVfcGFyYW1zIiwicHR5cGVfbmFtZSIsInB0eXBlX25hbWUkMCIsInB0eXBlX3BhcmFtcyQwIiwicHR5cGVfY3N0cnMkMCIsInB0eXBlX2tpbmQkMCIsInB0eXBlX3ByaXZhdGUkMCIsInB0eXBlX21hbmlmZXN0JDAiLCJwdHlwZV9hdHRyaWJ1dGVzJDAiLCJwdHlwZV9sb2MkMCIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInBsZF9uYW1lJDAiLCJwbGRfbXV0YWJsZSQwIiwicGxkX3R5cGUkMCIsInBsZF9sb2MkMCIsInBsZF9hdHRyaWJ1dGVzJDAiLCJwY2RfYXR0cmlidXRlcyIsInBjZF9sb2MiLCJwY2RfcmVzIiwicGNkX2FyZ3MiLCJwY2RfdmFycyIsInBjZF9uYW1lIiwicGNkX25hbWUkMCIsInBjZF92YXJzJDAiLCJwY2RfYXJncyQwIiwicGNkX3JlcyQwIiwicGNkX2xvYyQwIiwicGNkX2F0dHJpYnV0ZXMkMCIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInB0eWV4dF9wYXRoJDAiLCJwdHlleHRfcGFyYW1zJDAiLCJwdHlleHRfY29uc3RydWN0b3JzJDAiLCJwdHlleHRfcHJpdmF0ZSQwIiwicHR5ZXh0X2xvYyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMkMCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwicGV4dF9uYW1lJDAiLCJwZXh0X2tpbmQkMCIsInBleHRfbG9jJDAiLCJwZXh0X2F0dHJpYnV0ZXMkMCIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4bl9jb25zdHJ1Y3RvciQwIiwicHR5ZXhuX2xvYyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMkMCIsInBjdHlfYXR0cmlidXRlcyIsInBjdHlfbG9jIiwicGN0eV9kZXNjIiwicGN0eV9kZXNjJDAiLCJwY3R5X2xvYyQwIiwicGN0eV9hdHRyaWJ1dGVzJDAiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwicGNzaWdfc2VsZiQwIiwicGNzaWdfZmllbGRzJDAiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsInBjdGZfZGVzYyQwIiwicGN0Zl9sb2MkMCIsInBjdGZfYXR0cmlidXRlcyQwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsInBjaV92aXJ0JDAiLCJwY2lfcGFyYW1zJDAiLCJwY2lfbmFtZSQwIiwicGNpX2V4cHIkMCIsInBjaV9sb2MkMCIsInBjaV9hdHRyaWJ1dGVzJDAiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsInBjbF9kZXNjJDAiLCJwY2xfbG9jJDAiLCJwY2xfYXR0cmlidXRlcyQwIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc3RyX3NlbGYkMCIsInBjc3RyX2ZpZWxkcyQwIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJwY2ZfZGVzYyQwIiwicGNmX2xvYyQwIiwicGNmX2F0dHJpYnV0ZXMkMCIsInBtdHlfYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9kZXNjIiwicG10eV9kZXNjJDAiLCJwbXR5X2xvYyQwIiwicG10eV9hdHRyaWJ1dGVzJDAiLCJwc2lnX2xvYyIsInBzaWdfZGVzYyIsInBzaWdfZGVzYyQwIiwicHNpZ19sb2MkMCIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwbWRfbmFtZSQwIiwicG1kX3R5cGUkMCIsInBtZF9hdHRyaWJ1dGVzJDAiLCJwbWRfbG9jJDAiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtc19uYW1lJDAiLCJwbXNfbWFuaWZlc3QkMCIsInBtc19hdHRyaWJ1dGVzJDAiLCJwbXNfbG9jJDAiLCJwbXRkX2xvYyIsInBtdGRfYXR0cmlidXRlcyIsInBtdGRfdHlwZSIsInBtdGRfbmFtZSIsInBtdGRfbmFtZSQwIiwicG10ZF90eXBlJDAiLCJwbXRkX2F0dHJpYnV0ZXMkMCIsInBtdGRfbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG9wZW5fZXhwciQwIiwicG9wZW5fb3ZlcnJpZGUkMCIsInBvcGVuX2xvYyQwIiwicG9wZW5fYXR0cmlidXRlcyQwIiwicGluY2xfYXR0cmlidXRlcyIsInBpbmNsX2xvYyIsInBpbmNsX21vZCIsInBpbmNsX21vZCQwIiwicGluY2xfbG9jJDAiLCJwaW5jbF9hdHRyaWJ1dGVzJDAiLCJwbW9kX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfZGVzYyIsInBtb2RfZGVzYyQwIiwicG1vZF9sb2MkMCIsInBtb2RfYXR0cmlidXRlcyQwIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJwc3RyX2Rlc2MkMCIsInBzdHJfbG9jJDAiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJwdmJfcGF0JDAiLCJwdmJfZXhwciQwIiwicHZiX2F0dHJpYnV0ZXMkMCIsInB2Yl9sb2MkMCIsInBtYl9sb2MiLCJwbWJfYXR0cmlidXRlcyIsInBtYl9leHByIiwicG1iX25hbWUiLCJwbWJfbmFtZSQwIiwicG1iX2V4cHIkMCIsInBtYl9hdHRyaWJ1dGVzJDAiLCJwbWJfbG9jJDAiLCJwZGlyX2xvYyIsInBkaXJfYXJnIiwicGRpcl9uYW1lIiwicGRpcl9uYW1lJDAiLCJwZGlyX2FyZyQwIiwicGRpcl9sb2MkMCIsInBkaXJhX2xvYyIsInBkaXJhX2Rlc2MiLCJwZGlyYV9kZXNjJDAiLCJwZGlyYV9sb2MkMCIsInNlbGZfMiIsInNlbGZfMyIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJhY2MkMiIsImFjYyQzIiwiYWNjJDQiLCJhY2MkNSIsImFjYyQ2IiwiYWNjJDciLCJhY2MkOCIsImFjYyQ5IiwiYWNjJDEwIiwiYWNjJDExIiwiYWNjJDEyIiwiYWNjJDEzIiwiYWNjJDE0IiwiYWNjJDE1IiwiYWNjJDE2IiwiYWNjJDE3IiwiYWNjJDE4IiwiYWNjJDE5IiwiYWNjJDIwIiwiYWNjJDIxIiwiYWNjJDIyIiwiYWNjJDIzIiwiYWNjJDI0IiwiYWNjJDI1IiwiYWNjJDI2IiwiYWNjJDI3IiwiYWNjJDI4IiwiYWNjJDI5IiwiYWNjJDMwIiwiYWNjJDMxIiwiYWNjJDMyIiwiYWNjJDMzIiwiYWNjJDM0IiwiYWNjJDM1IiwiYWNjJDM2IiwiYWNjJDM3IiwiYWNjJDM4IiwiYWNjJDM5IiwiYWNjJDQwIiwiYWNjJDQxIiwiYWNjJDQyIiwiYWNjJDQzIiwiYWNjJDQ0IiwiYWNjJDQ1IiwiYWNjJDQ2IiwiYWNjJDQ3IiwiYWNjJDQ4IiwiYWNjJDQ5IiwiYWNjJDUwIiwiYWNjJDUxIiwiYWNjJDUyIiwiYWNjJDUzIiwiYWNjJDU0IiwiYWNjJDU1Iiwic2VsZl80IiwiYWNjJDU2IiwiYWNjJDU3IiwiYWNjJDU4IiwiYWNjJDU5IiwiYWNjJDYwIiwiYWNjJDYxIiwiYWNjJDYyIiwiYWNjJDYzIiwiYWNjJDY0IiwiYWNjJDY1IiwiYWNjJDY2IiwiYWNjJDY3IiwiYWNjJDY4Iiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwidG9fZXh0ZW5zaW9uIiwiZXJyb3IiLCJzdWJfbXNncyIsIm1haW5fbXNnIiwiZXJyX2V4dGVuc2lvbl9uYW1lIiwibWtfc3RyaW5nX2NvbnN0YW50IiwiZXh0ZW5zaW9uX29mX3N1Yl9tc2ciLCJzdWJfbXNnIiwicmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuIiwibWVzc2FnZSIsInNldF9tZXNzYWdlIiwibWFrZSIsInN1YiIsInN1YiQwIiwidXBkYXRlX2xvYyIsImdldF9sb2NhdGlvbiIsIm9mX2V4biIsInJhaXNlIiwicHJpbnQiLCJkaWZmX2NvbW1hbmQiLCJvcHQiLCJmaWxlMSIsImZpbGUyIiwic3RoIiwiZXh0cmFfcGF0ZGlmZl9hcmdzIiwic3RoJDAiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwib3B0IiwiZmlsZSIsInN0aCIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsIm1lcmdlIiwicmVtb3ZlX2Fzc29jIiwicmVtb3ZlX2Fzc3EiLCJyZXZfbWFwaSIsImxpc3QiLCJsaXN0JDAiLCJpIiwiYWNjIiwidGFpbCIsImhlYWQiLCJhY2MkMCIsImkkMCIsImZvbGRfcmlnaHQyIiwibGlzdDEiLCJsaXN0MiIsImluaXQiLCJtYXAkMCIsIm1hcGkkMCIsImZvbGRfcmlnaHQkMCIsImFwcGVuZCIsImNvbmNhdCQwIiwicmV2X2NvbWJpbmUiLCJjb21iaW5lIiwic3BsaXQiLCJ5cyIsInhzIiwibWFwMiIsInBhcnRpdGlvbl9tYXAiLCJwIiwibCIsImxlZnQiLCJyaWdodCIsImwkMCIsInYiLCJ2JDAiLCJpbml0JDAiLCJwb3MkMCIsImlzX2VtcHR5IiwicmV2X2ZpbHRlcl9vcHQiLCJvcHRpb24iLCJmaWx0ZXJfb3B0IiwiZmlsdGVyX21hcCIsImNvbmNhdF9tYXAiLCJmaW5kX21hcCIsInNvbWUiLCJmaW5kX21hcF9leG4iLCJsYXN0IiwicmVzdCIsInNwbGl0X3doaWxlIiwiZmluZF9hX2R1cCIsInNldCQxIiwic2V0JDAiLCJhc3NvY19vcHQiLCJpdGVyJDIiLCJpc19zb21lIiwiaXRlciQzIiwibWFwJDEiLCJ2YWx1ZSIsInRvX2xpc3QiLCJiaW5kIiwiYSIsImUiLCJtYXAkMiIsIm1hcF9lcnJvciIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImhhbmRsZV9lcnJvciIsInN5bWJvbCQzNSIsInEyIiwidDIiLCJxMSIsInQxIiwiaGQkMCIsInRvX2xpc3QkMCIsInEiLCJtYXAkMyIsImNyZWF0ZSQxIiwic3RoJDAiLCJzdGgkMSIsImZhaWxfaWZfZXhpc3RzIiwic3RoJDIiLCJwZXJtIiwiZmxhZ3MkMSIsImZsYWdzJDIiLCJ3aXRoX2ZpbGUkMCIsIndyaXRlX2FsbCIsImlzX2VtcHR5JDAiLCJwcmVmaXgiLCJzdWZmaXgiLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwiaXNfcHJlZml4IiwiaXNfc3VmZml4Iiwic3VmZml4X29mZnNldCIsInBvcyQxIiwiZXhpc3RzJDEiLCJmb3JfYWxsJDEiLCJpbmRleF9vcHQkMCIsInJpbmRleF9vcHQkMCIsImluZGV4X2Zyb21fb3B0JDAiLCJyaW5kZXhfZnJvbV9vcHQkMCIsImxzcGxpdDIiLCJvbiIsImNhcGl0YWxpemVfYXNjaWkkMCIsImxvd2VyY2FzZV9hc2NpaSQxIiwidW5jYXBpdGFsaXplX2FzY2lpJDAiLCJzcGxpdF9vbl9jaGFyJDAiLCJzZXAiLCJjb21wYXJlJDciLCJlcXVhbCQ3Iiwic3ltYm9sJDM2Iiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5Iiwic3ltYm9sJDQwIiwic3ltYm9sJDQxIiwibWluJDUiLCJtYXgkNSIsImZpbmRfb3B0JDEiLCJzeW1ib2wkNDIiLCJvdXRwdXQiLCJvYyIsImJ5dGVzIiwib3V0cHV0X3N1YnN0cmluZyIsInN0cmluZyIsImluX2ZpbGUiLCJuYW1lIiwibG9jIiwic2V0X2ZpbGVuYW1lIiwiZm4iLCJsb2Nfc3RhcnQiLCJsb2NfZW5kIiwibm9uZSIsImluaXQiLCJsZXhidWYiLCJmbmFtZSIsInJhaXNlX2Vycm9yZiIsImZtdCIsInJlcG9ydF9leGNlcHRpb24iLCJvZl9sZXhidWYiLCJwcmludCIsInBwZiIsInQiLCJjb21wYXJlX3BvcyIsInAxIiwicDIiLCJjb2x1bW4iLCJwIiwibiIsIm1pbl9wb3MiLCJtYXhfcG9zIiwiY29tcGFyZSIsImxvYzEiLCJsb2MyIiwiY3JlYXRlZiIsInN0ciIsImVycm9yX2V4dGVuc2lvbmYiLCJlIiwiZmFpbCIsImV4cGVjdGVkIiwiYXR0cmlidXRlIiwicGF5bG9hZCIsImJpbmRpbmdfb3AiLCJvcCIsInBhdCIsImV4cCIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwicGNsX2NvbnN0ciIsIngwIiwieDEiLCJwY2xfc3RydWN0dXJlIiwicGNsX2Z1biIsIngyIiwieDMiLCJwY2xfYXBwbHkiLCJwY2xfbGV0IiwicGNsX2NvbnN0cmFpbnQiLCJwY2xfZXh0ZW5zaW9uIiwicGNsX29wZW4iLCJwY2ZfaW5oZXJpdCIsInBjZl92YWwiLCJwY2ZfbWV0aG9kIiwicGNmX2NvbnN0cmFpbnQiLCJwY2ZfaW5pdGlhbGl6ZXIiLCJwY2ZfYXR0cmlidXRlIiwicGNmX2V4dGVuc2lvbiIsImNsYXNzX2luZm9zIiwidmlydCIsInBhcmFtcyIsImV4cHIiLCJjbGFzc19zaWduYXR1cmUiLCJzZWxmIiwiZmllbGRzIiwiY2xhc3Nfc3RydWN0dXJlIiwicGN0eV9jb25zdHIiLCJwY3R5X3NpZ25hdHVyZSIsInBjdHlfYXJyb3ciLCJwY3R5X2V4dGVuc2lvbiIsInBjdHlfb3BlbiIsInBjdGZfaW5oZXJpdCIsInBjdGZfdmFsIiwicGN0Zl9tZXRob2QiLCJwY3RmX2NvbnN0cmFpbnQiLCJwY3RmX2F0dHJpYnV0ZSIsInBjdGZfZXh0ZW5zaW9uIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJ2YXJzIiwiYXJncyIsInJlcyIsInB0eXBfYW55IiwicHR5cF92YXIiLCJwdHlwX2Fycm93IiwicHR5cF90dXBsZSIsInB0eXBfY29uc3RyIiwicHR5cF9vYmplY3QiLCJwdHlwX2NsYXNzIiwicHR5cF9hbGlhcyIsInB0eXBfdmFyaWFudCIsInB0eXBfcG9seSIsInB0eXBfcGFja2FnZSIsInB0eXBfZXh0ZW5zaW9uIiwicGRpcl9zdHJpbmciLCJwZGlyX2ludCIsInBkaXJfaWRlbnQiLCJwZGlyX2Jvb2wiLCJwZXhwX2lkZW50IiwicGV4cF9jb25zdGFudCIsInBleHBfbGV0IiwicGV4cF9mdW5jdGlvbiIsInBleHBfZnVuIiwicGV4cF9hcHBseSIsInBleHBfbWF0Y2giLCJwZXhwX3RyeSIsInBleHBfdHVwbGUiLCJwZXhwX2NvbnN0cnVjdCIsInBleHBfdmFyaWFudCIsInBleHBfcmVjb3JkIiwicGV4cF9maWVsZCIsInBleHBfc2V0ZmllbGQiLCJwZXhwX2FycmF5IiwicGV4cF9pZnRoZW5lbHNlIiwicGV4cF9zZXF1ZW5jZSIsInBleHBfd2hpbGUiLCJwZXhwX2ZvciIsIng0IiwicGV4cF9jb25zdHJhaW50IiwicGV4cF9jb2VyY2UiLCJwZXhwX3NlbmQiLCJwZXhwX25ldyIsInBleHBfc2V0aW5zdHZhciIsInBleHBfb3ZlcnJpZGUiLCJwZXhwX2xldG1vZHVsZSIsInBleHBfbGV0ZXhjZXB0aW9uIiwicGV4cF9hc3NlcnQiLCJwZXhwX2xhenkiLCJwZXhwX3BvbHkiLCJwZXhwX29iamVjdCIsInBleHBfbmV3dHlwZSIsInBleHBfcGFjayIsInBleHBfb3BlbiIsInBleHBfbGV0b3AiLCJwZXhwX2V4dGVuc2lvbiIsInBleHBfdW5yZWFjaGFibGUiLCJleHRlbnNpb25fY29uc3RydWN0b3IiLCJraW5kIiwiaW5jbHVkZV9pbmZvcyIsIm1vZCIsImxhYmVsX2RlY2xhcmF0aW9uIiwibXV0YWJsZSIsInR5cGUiLCJsZXRvcCIsImxldCQwIiwiYW5kcyIsImJvZHkiLCJsb2NhdGlvbiIsInN0YXJ0IiwiZW5kIiwiZ2hvc3QiLCJtb2R1bGVfYmluZGluZyIsIm1vZHVsZV9kZWNsYXJhdGlvbiIsInBtb2RfaWRlbnQiLCJwbW9kX3N0cnVjdHVyZSIsInBtb2RfZnVuY3RvciIsInBtb2RfYXBwbHkiLCJwbW9kX2NvbnN0cmFpbnQiLCJwbW9kX3VucGFjayIsInBtb2RfZXh0ZW5zaW9uIiwibW9kdWxlX3N1YnN0aXR1dGlvbiIsIm1hbmlmZXN0IiwicG10eV9pZGVudCIsInBtdHlfc2lnbmF0dXJlIiwicG10eV9mdW5jdG9yIiwicG10eV93aXRoIiwicG10eV90eXBlb2YiLCJwbXR5X2V4dGVuc2lvbiIsInBtdHlfYWxpYXMiLCJtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsIm90YWciLCJvaW5oZXJpdCIsIm9wZW5faW5mb3MiLCJvdmVycmlkZSIsInBwYXRfYW55IiwicHBhdF92YXIiLCJwcGF0X2FsaWFzIiwicHBhdF9jb25zdGFudCIsInBwYXRfaW50ZXJ2YWwiLCJwcGF0X3R1cGxlIiwicHBhdF9jb25zdHJ1Y3QiLCJwcGF0X3ZhcmlhbnQiLCJwcGF0X3JlY29yZCIsInBwYXRfYXJyYXkiLCJwcGF0X29yIiwicHBhdF9jb25zdHJhaW50IiwicHBhdF90eXBlIiwicHBhdF9sYXp5IiwicHBhdF91bnBhY2siLCJwcGF0X2V4Y2VwdGlvbiIsInBwYXRfZXh0ZW5zaW9uIiwicHBhdF9vcGVuIiwicG9zaXRpb24iLCJsbnVtIiwiYm9sIiwiY251bSIsInJ0YWciLCJyaW5oZXJpdCIsInBzaWdfdmFsdWUiLCJwc2lnX3R5cGUiLCJwc2lnX3R5cGVzdWJzdCIsInBzaWdfdHlwZXh0IiwicHNpZ19leGNlcHRpb24iLCJwc2lnX21vZHVsZSIsInBzaWdfbW9kc3Vic3QiLCJwc2lnX3JlY21vZHVsZSIsInBzaWdfbW9kdHlwZSIsInBzaWdfbW9kdHlwZXN1YnN0IiwicHNpZ19vcGVuIiwicHNpZ19pbmNsdWRlIiwicHNpZ19jbGFzcyIsInBzaWdfY2xhc3NfdHlwZSIsInBzaWdfYXR0cmlidXRlIiwicHNpZ19leHRlbnNpb24iLCJwc3RyX2V2YWwiLCJwc3RyX3ZhbHVlIiwicHN0cl9wcmltaXRpdmUiLCJwc3RyX3R5cGUiLCJwc3RyX3R5cGV4dCIsInBzdHJfZXhjZXB0aW9uIiwicHN0cl9tb2R1bGUiLCJwc3RyX3JlY21vZHVsZSIsInBzdHJfbW9kdHlwZSIsInBzdHJfb3BlbiIsInBzdHJfY2xhc3MiLCJwc3RyX2NsYXNzX3R5cGUiLCJwc3RyX2luY2x1ZGUiLCJwc3RyX2F0dHJpYnV0ZSIsInBzdHJfZXh0ZW5zaW9uIiwidG9wbGV2ZWxfZGlyZWN0aXZlIiwiYXJnIiwidHlwZV9kZWNsYXJhdGlvbiIsImNzdHJzIiwicHJpdmF0ZSQwIiwidHlwZV9leGNlcHRpb24iLCJjb25zdHJ1Y3RvciIsInR5cGVfZXh0ZW5zaW9uIiwicGF0aCIsImNvbnN0cnVjdG9ycyIsInZhbHVlX2JpbmRpbmciLCJ2YWx1ZV9kZXNjcmlwdGlvbiIsInByaW0iLCJ0eHQiLCJtYWtlIiwibWFwIiwiZiIsImlzX25vcm1hbF9pZGVudF9jaGFyIiwic2hvcnRfbmFtZSIsInN0cmluZyIsInMiLCJiIiwiYSIsImIkMCIsImEkMCIsInNleHBfb2ZfdCIsImZsYXR0ZW5fZXhuIiwibGlkJDAiLCJhY2N1IiwicyQwIiwibGlkIiwibGFzdF9leG4iLCJ1bmZsYXR0ZW4iLCJsIiwiYWNjIiwicGFyc2UiLCJpbnZhbGlkIiwidmFyaWFudCIsImxlbiIsImxwb3MiLCJvcGVuZWQiLCJwb3MiLCJscG9zJDAiLCJwb3MkMCIsIm9wZW5lZCQwIiwib3BlbmVkJDEiLCJwb3MkMSIsInBvcyQyIiwicGFyIiwiciIsImwkMCIsImluc2lkZSIsImdyb3VwIiwiYmVmb3JlIiwibCQxIiwicyQxIiwieCIsIm1rIiwibWFwX2xpZGVudCIsImxpZGVudCIsInBwYXRfY29uc3RydWN0JDAiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiQwIiwicHN0cl92YWx1ZV9saXN0IiwicmVjX2ZsYWciLCJ2YnMiLCJub25yZWNfdHlwZV9kZWNsYXJhdGlvbiIsImVpbnQiLCJlY2hhciIsImVzdHJpbmciLCJlZmxvYXQiLCJlaW50MzIiLCJlaW50NjQiLCJlbmF0aXZlaW50IiwicGludCIsInBjaGFyIiwicHN0cmluZyIsInBmbG9hdCIsInBpbnQzMiIsInBpbnQ2NCIsInBuYXRpdmVpbnQiLCJlYm9vbCIsInBib29sIiwiZXZhciIsInYiLCJwdmFyIiwiZXVuaXQiLCJwdW5pdCIsInBleHBfdHVwbGUkMCIsInBwYXRfdHVwbGUkMCIsInB0eXBfdHVwbGUkMCIsInBleHBfdHVwbGVfb3B0IiwicHBhdF90dXBsZV9vcHQiLCJwdHlwX3BvbHkkMCIsInR5IiwicGV4cF9hcHBseSQwIiwiZWwiLCJlJDAiLCJlYXBwbHkiLCJlYWJzdHJhY3QiLCJwcyIsImVzZXF1ZW5jZSIsInRsIiwiaGQiLCJwY29uc3RydWN0IiwiY2QiLCJlY29uc3RydWN0IiwiZWxpc3RfdGFpbCIsInRhaWwiLCJlbGlzdCIsInBsaXN0X3RhaWwiLCJwbGlzdCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdCIsImlkZW50IiwibiQwIiwidHlwZV9jb25zdHJfY29udiIsImFwcGx5X2xvYyIsImxvbmdpZGVudCIsImxvYyQwIiwibW9kdWxlX3BhdGgiLCJzdWZmaXhfbiIsImZ1bmN0b3IiLCJmdW5jdG9yX2FyZ3MiLCJyZXN0IiwiZnVuY3RvciQwIiwiZnVuY3Rvcl9wYXRoIiwiaWRlbnQkMCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IiwiZ2F0aGVyX2FyZ3MiLCJhcmdzJDAiLCJib2R5JDAiLCJldGFfcmVkdWNlIiwiZXhwciQwIiwic3VicGF0IiwibGFiZWwiLCJhY2MkMCIsIm5hbWUkMCIsImFjYyQxIiwiZl9pZGVudCIsInBhcmFtX2xhYmVsIiwiYXJnX2xhYmVsIiwicGFyYW0kMCIsInR5X29wdCIsInR5JDAiLCJldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9uIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24kMCIsInBleHBfdHVwbGVfb3B0JDAiLCJwcGF0X3R1cGxlX29wdCQwIiwiZWludCQwIiwiZWNoYXIkMCIsImVzdHJpbmckMCIsImVmbG9hdCQwIiwiZWludDMyJDAiLCJlaW50NjQkMCIsImVuYXRpdmVpbnQkMCIsImVib29sJDAiLCJldmFyJDAiLCJwaW50JDAiLCJwY2hhciQwIiwicHN0cmluZyQwIiwicGZsb2F0JDAiLCJwaW50MzIkMCIsInBpbnQ2NCQwIiwicG5hdGl2ZWludCQwIiwicGJvb2wkMCIsInB2YXIkMCIsImV1bml0JDAiLCJwdW5pdCQwIiwiZWFwcGx5JDAiLCJlYWJzdHJhY3QkMCIsImVzZXF1ZW5jZSQwIiwiZWxpc3RfdGFpbCQwIiwicGxpc3RfdGFpbCQwIiwiZWxpc3QkMCIsInBsaXN0JDAiLCJ0eXBlX2NvbnN0cl9jb252JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiQwIiwiZ2V0Iiwic2tpcCIsInNraXAkMCIsInN0YWNrIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwicmVnaXN0ZXJlZF9uYW1lIiwibmFtZXNfYXRfYmVzdF9kaXN0YW5jZSIsImJlc3RfZGlzdGFuY2UiLCJkaXN0Iiwic3VnZ2VzdGlvbnMiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJvcHQiLCJzdGgiLCJhbGxvd2xpc3QiLCJrZXkiLCJjdHgiLCJhbGxfZnJvbV9jb250ZXh0Iiwib3RoZXJfY29udGV4dHMiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQwIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHJpYnV0ZXNfZXJyb3JzIiwiYXR0ciIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJwYXR0ZXJuIiwiY29yZV90eXBlIiwiZXhwcmVzc2lvbiIsImNsYXNzX3R5cGUiLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwibW9kdWxlX3R5cGUiLCJvcGVuX2Rlc2NyaXB0aW9uIiwibW9kdWxlX2V4cHIiLCJvYmplY3RfdHlwZV9maWVsZCIsImdldF9wc3RyX2V2YWwiLCJzdCIsImdldF9wc3RyX2V4dGVuc2lvbiIsImdldF9wc2lnX2V4dGVuc2lvbiIsImdldF9hdHRyaWJ1dGVzIiwic2V0X2F0dHJpYnV0ZXMiLCJhdHRycyIsInN0cnVjdHVyZV9pdGVtIiwic2lnbmF0dXJlX2l0ZW0iLCJjbGFzc19maWVsZCQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwiZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19uIiwiYSQxIiwiYSQyIiwiZHVtbXlfZXh0IiwicmVnaXN0cmFyIiwiZGVjbGFyZV93aXRoX2FsbF9hcmdzIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRyJDAiLCJhdHRycyQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJiYXNlbmFtZSIsIm1haW5fbW9kdWxlX25hbWUiLCJlbmNsb3NpbmdfbW9kdWxlIiwiZW5jbG9zaW5nX3ZhbHVlIiwic3VibW9kdWxlX3BhdGgiLCJsb2NhdGVkIiwiZnVsbHlfcXVhbGlmaWVkX3BhdGgiLCJ2YWx1ZSQwIiwiZW50ZXJfZXhwciIsImVudGVyX21vZHVsZSIsIm1vZHVsZV9uYW1lIiwiZW50ZXJfdmFsdWUiLCJ2YWx1ZV9uYW1lIiwidG9fc3RyaW5nX3BhdGgiLCJ3aXRoX3N0cmluZ19wYXRoIiwidG9vbF9uYW1lIiwiaW5wdXRfbmFtZSIsImNvZGVfcGF0aCIsImV4dGVuc2lvbl9wb2ludF9sb2MiLCJiYXNlIiwiY29kZV9wYXRoJDAiLCJpbnB1dF9uYW1lJDAiLCJ0b29sX25hbWUkMCIsIndpdGhfbG9jX2FuZF9wYXRoIiwiY3R4dCIsIm1ha2UkMCIsImRlcml2ZWRfaXRlbV9sb2MiLCJpbmxpbmUiLCJjb2RlX3BhdGgkMSIsImlucHV0X25hbWUkMSIsInRvb2xfbmFtZSQxIiwid2l0aF9sb2NfYW5kX3BhdGgkMCIsImVudGVyIiwiZW50ZXJfb3B0IiwibmFtZV9vcHQiLCJtYiIsIm1kIiwibXRkIiwidmFyX25hbWVzX29mIiwiZWNfZW50ZXJfbW9kdWxlX29wdCIsImRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIiwiZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvIiwiZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhIiwiZG9fbm90X2VudGVyX2xldF9tb2R1bGUiLCJ0YWciLCJwZXhwX2xvY19zdGFjayIsInBleHBfZGVzYyIsIndpdGhfdmFsdWUiLCJjdHh0JDAiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJzaGlmdCIsImFyZyQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJzcGVjaWFsX2Z1bmN0aW9uJDAiLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyQwIiwidmFscyIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwib3B0aW9uIiwid2l0aF9jb250ZXh0IiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJsYXN0X2lzX3RleHQkMSIsImxvb3BfY29uc2VjdXRpdmVfcmVwbHMiLCJ0bXBfZm4iLCJzYW5pdGl6ZSIsImJpbmRpbmdzIiwiQXN0IiwicXVvdGUiLCJxdW90ZWRfZXhwciQwIiwiYmluZGluZ19leHByJDAiLCJiaW5kaW5nX2V4cHIiLCJxdW90ZWRfZXhwciIsImJpbmRpbmciLCJta19hdHRyX25vbG9jIiwiaGlkZV9hdHRyaWJ1dGUiLCJmb2N1c19hdHRyaWJ1dGUiLCJoaWRlX3BhdHRlcm4iLCJmb2N1c19wYXR0ZXJuIiwiaGlkZV9leHByZXNzaW9uIiwiZm9jdXNfZXhwcmVzc2lvbiIsImVtcHR5IiwicmFuZ2VzIiwibm9kZV9sb2MiLCJub2RlX25hbWUiLCJ4X2xvYyIsInhfbmFtZSIsInAyJDAiLCJwMSQwIiwiaW5zZXJ0IiwiYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQiLCJmaWxlIiwic2FtZV9maWxlX3NvX2ZhciIsInNob3VsZF9pZ25vcmUiLCJvcmlnX2ZuYW1lIiwiZXh0cmFjdF9jb25zdHJhaW50IiwiZG9fY2hlY2siLCJjaGlsZHJlbnNfbG9jcyIsInNpYmxpbmdzX2xvY3MiLCJtYXhfcG9zJDAiLCJtaW5fcG9zJDAiLCJjaGlsZF9sb2MiLCJjaGlsZF9uYW1lIiwibDIiLCJsMSIsInlzIiwieXMkMCIsInhzJDAiLCJlbmZvcmNlX2ludmFyaWFudHMiLCJzaWJsaW5ncyIsImN0ZSIsImN0cCIsIm91dG1vc3RfbG9jIiwiaW5pdGlhbF9yZXMkMCIsInJlcyQxIiwiaW5pdGlhbF9yZXMiLCJyZXMkMCIsImNoaWxkc19sb2NzIiwiYXR0cnNfbG9jcyIsInNpYmxpbmdzX2xvYyIsInRkZWNsIiwiZXhwcl9vIiwibGFiZWxzIiwiYWNjJDIiLCJvcG4iLCJlX2xvYyIsImNlIiwib2QiLCJhY2MkMyIsImFjYyQ0IiwiZmxhZyIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50Iiwic3RoJDEiLCJhbGlhc2VzIiwicnVsZXMkMCIsImltcGwkMCIsImludGYkMCIsInByZXByb2Nlc3NfaW1wbCQwIiwicHJlcHJvY2Vzc19pbnRmJDAiLCJjdCQwIiwibG9jX29mX2xpc3QiLCJsJDIiLCJmaXJzdCIsIm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIiLCJnZW5faGVhZGVyX2FuZF9mb290ZXIiLCJ3aG9sZV9sb2MiLCJmb290ZXIiLCJoZWFkZXIiLCJsb2NfaGVhZGVyIiwibG9jX2Zvb3RlciIsIm1hcF9pbXBsIiwic3Rfd2l0aF9hdHRycyIsIm1hcF9pbnRmIiwic2dfd2l0aF9hdHRycyIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nXyIsImFkZF9jdHh0X2FyZyIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uJDAiLCJsaW50X2ltcGwkMCIsImxpbnRfaW50ZiQwIiwiZW5jbG9zZV9pbXBsJDAiLCJlbmNsb3NlX2ludGYkMCIsInJlZ2lzdGVyX2NvZGVfdHJhbnNmb3JtYXRpb24iLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18kMCIsImdldF93aG9sZV9hc3RfcGFzc2VzIiwiY3RzIiwiYWZ0X2kiLCJiZWZfaSIsInJlZHVjZWRfdCIsImluc3RyIiwidHJhbnNmIiwidHJhbnNmJDAiLCJ0cmFuc2Zvcm1zIiwiYWZ0ZXJfaW5zdHJzIiwiYmVmb3JlX2luc3RycyIsInByZXByb2Nlc3MiLCJsaW50ZXJzIiwiZ2V0X2VuY2xvc2VycyIsImltcGxfZW5jbG9zZXJzIiwiaW50Zl9lbmNsb3NlcnMiLCJtZXJnZV9lbmNsb3NlciIsImVuY2xvc2VycyIsImZvb3RlcnMiLCJoZWFkZXJzIiwiaGVhZGVycyQwIiwiZm9vdGVycyQwIiwiYXBwbHlfdHJhbnNmb3JtcyIsImxpbnRfZmllbGQiLCJkcm9wcGVkX3NvX2ZhciIsImxpbnRfZXJyb3JzIiwib2xkX2Ryb3BwZWQiLCJsaW50X2Vycm9ycyQwIiwiZXJyb3JzJDEiLCJtb3JlX2Vycm9ycyIsIm5ld19kcm9wcGVkIiwicHJpbnRfZGlmZiIsIndoYXQiLCJkaWZmIiwiZHJvcHBlZCIsImVycm9yX3RvX2V4dGVuc2lvbiIsImV4dCQwIiwic29ydF9lcnJvcnNfYnlfbG9jIiwiZXJyb3IkMCIsIm1hcF9zdHJ1Y3R1cmVfZ2VuIiwid2l0aF9lcnJvcnMiLCJzb3J0ZWQiLCJzdCQxIiwidW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIiwidW51c2VkX2V4dGVuc2lvbl9lcnJvcnMiLCJub3Rfc2Vlbl9lcnJvcnMiLCJtYXBfc2lnbmF0dXJlX2dlbiIsInNnJDEiLCJtYXBfc2lnbmF0dXJlIiwidmVyc2lvbmVkX2Vycm9yZiIsImlucHV0X2ZpbGVfbmFtZSIsInJlbW92ZV9ub19lcnJvciIsIm5ld19mbiIsIm9sZF9mbiIsInJlbG9jYXRlX21hcHBlciIsInNldF9pbnB1dF9uYW1lIiwiZXh0cmFjdF9jb29raWVzIiwicHJlZml4JDEiLCJwcmVmaXgkMiIsImNvcnJlY3Rpb25zIiwiYWRkX3RvX2xpc3QiLCJyZWdpc3Rlcl9jb3JyZWN0aW9uIiwicHJvY2Vzc19maWxlX2hvb2tzIiwicmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2siLCJhbGwkMCIsInByb2Nlc3NfYXN0Iiwib3V0cHV0X21vZGUiLCJzZXRfaW5wdXQiLCJzZXRfa2luZCIsInNldF9vdXRwdXRfbW9kZSIsIm1vZGUiLCJtYXRjaCIsImFyZ19vZl9vdXRwdXRfbW9kZSIsInBhcnNlX2FwcGx5X2xpc3QiLCJtYXNrIiwiaGFuZGxlX2FwcGx5IiwiaGFuZGxlX2RvbnRfYXBwbHkiLCJpbnRlcnByZXRfbWFzayIsInNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIiwiaXNfY2FuZGlkYXRlIiwibmFtZXMkMCIsImlzX3NlbGVjdGVkIiwic2V0X2Nvb2tpZSIsInNoYXJlZF9hcmdzIiwiYXNfcHAiLCJzdGFuZGFsb25lX2FyZ3MiLCJnZXRfYXJncyIsInN0YW5kYWxvbmVfYXJncyQwIiwic3RhbmRhbG9uZV9tYWluIiwidXNhZ2UiLCJyZWxvY2F0ZSIsIm91dHB1dCQwIiwiZW1iZWRfZXJyb3JzJDAiLCJvdXRwdXRfbW9kZSQwIiwicmVwbGFjZW1lbnRzIiwiaG9vayQwIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIkMCIsImFzdF9pbnB1dF9uYW1lIiwiYXN0X2tpbmQiLCJmYWxsX2JhY2tfdmVyc2lvbiIsInVua25vd25fbWFnaWMiLCJmYWxsX2JhY2tfdmVyc2lvbiQwIiwidG1wZmlsZSIsImZhaWxlZF9jb21tYW5kIiwicHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQiLCJpbnB1dF9mbmFtZSIsImlucHV0X3ZlcnNpb24kMCIsImlucHV0X3ZlcnNpb24kMSIsImlucHV0X3ZlcnNpb24kMiIsIm1ldGFkYXRhIiwiaW5wdXRfY29udGVudHMiLCJ0ZXN0IiwibWFnaWNfbnVtYmVyIiwiY29ycmVjdGVkIiwiY29ycmVjdGlvbnMkMCIsIm1pc21hdGNoZXNfZm91bmQiLCJudWxsX2FzdCIsInBhcnNlX2lucHV0IiwicGFzc2VkX2luX2FyZ3MiLCJ2YWxpZF9hcmdzIiwiaW5jb3JyZWN0X2lucHV0X21zZyIsIm1zZyQwIiwicnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIiwiZmxhZ3NfYW5kX3Byb2dfbmFtZSIsImlucHV0X2ZuIiwib3V0cHV0X2ZuIiwicHJvZ19uYW1lX2FuZF9mbGFncyIsImFzdCQ0IiwiYXN0JDMiLCJzdGFuZGFsb25lIiwiYXJndiIsInJ1bl9hc19wcHhfcmV3cml0ZXIiLCJwcmV0dHkkMCIsImVuYWJsZV9jaGVja3MiLCJlbmFibGVfbG9jYXRpb25fY2hlY2siLCJkaXNhYmxlX2xvY2F0aW9uX2NoZWNrIiwibWFwX3N0cnVjdHVyZSIsInZhciQwIiwidmFyc19vZiIsImlnbiIsImFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMiLCJtcyIsImZwIiwiYmluZHNfbW9kdWxlX25hbWVzIiwid2FybmluZ3MiLCJkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmkiLCJrZWVwX3czMl9pbXBsIiwia2VlcF93MzJfaW50ZiIsImtlZXBfdzMyX3NwZWMiLCJjb252X3czMl9zcGVjIiwia2VlcF93MzJfaW1wbCQwIiwia2VlcF93NjBfaW1wbCIsImtlZXBfdzYwX2ludGYiLCJrZWVwX3c2MF9zcGVjIiwiYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MiLCJhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyQwIiwicHB4X2FsbG93c191bnVzZWRfY29kZV93YXJuaW5nIiwiYWxsb3dfdW51c2VkX3R5cGVfd2FybmluZ3MiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJpZ25vcmUiLCJnZW4iLCJkZXBzIiwidW51c2VkX2NvZGVfd2FybmluZ3MiLCJhcmdfbmFtZXMiLCJtYWtlX25vYXJnIiwibWFrZV9ub2FyZyQwIiwiYXBwbHkkMCIsInBhcmFtIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJzcGVsbGNoZWNrX21zZyIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJsZXJyIiwibGVyciQwIiwic3RyX3R5cGVfZGVjbCIsInN0cl90eXBlX2V4dCIsInN0cl9leGNlcHRpb24iLCJzdHJfbW9kdWxlX3R5cGVfZGVjbCIsInNpZ190eXBlX2RlY2wiLCJzaWdfdHlwZV9leHQiLCJzaWdfZXhjZXB0aW9uIiwic2lnX21vZHVsZV90eXBlX2RlY2wiLCJyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyIsImNvbGxlY3RlZCIsImRydiIsImFsaWFzIiwicmVzb2x2ZV9pbnRlcm5hbCIsImciLCJub3Rfc3VwcG9ydGVkIiwicmVzb2x2ZV9hbGwiLCJkZXJpdmVycyIsImRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyIsImRlcml2ZXJzX2FuZF9hcmdzIiwic2VlbiIsIm5hbWVkX2dlbmVyYXRvcnMiLCJhY3R1YWxfZGVyaXZlcl9uYW1lIiwiZHVwX2Vycm9yIiwiZGVwIiwiZGVwX25hbWUiLCJsX2VyciIsImRlcF9lcnJvcnMiLCJhZGQiLCJhY3R1YWxfZGVyaXZlciIsImV4dGVuc2lvbiQwIiwiYWRkX2FsaWFzIiwic2V0JDAiLCJwYXJzZV9hcmd1bWVudHMiLCJta19kZXJpdmluZ19hdHRyIiwiZ2VuZXJhdG9yX25hbWUiLCJnZW5lcmF0b3IiLCJkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSIsIndhcm5pbmciLCJpbmxpbmVfZG9jX2F0dHIiLCJ3cmFwX3N0ciIsImhpZGUiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyQwIiwid2FybmluZ3MkMCIsIndhcm5pbmdzJDIiLCJ3YXJuaW5ncyQxIiwid3JhcCIsInBpbmNsX2F0dHJpYnV0ZXMiLCJ3cmFwX3NpZyIsIm1lcmdlX2dlbmVyYXRvcnMiLCJtZXJnZV9kZXJpdmVkIiwibGlzdHMiLCJkZXJpdmVkIiwib3RoZXIiLCJleHBhbmRfc3RyX3R5cGVfZGVjbHMiLCJsX2VyciQwIiwidW51c2VkX3R5cGVfd2FybmluZ3MiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJsaWJuYW1lIiwicyIsImxpYiIsImdldCIsImkiLCJuYW1lIiwiYWxsX3RhZ3MiLCJuYW1lX29mX3BweF9yZXdyaXRlciIsIm1heWJlX2Ryb3BfbW9kZSIsInNldF9kZWZhdWx0X21heWJlX2Ryb3AiLCJ4IiwiaWQiLCJzIiwibWF5YmVfZHJvcCIsImxvYyIsImNvZGUiLCJhcHBseV90b19kZXNjciIsImxpZCIsImlubmVyX2xvYyQwIiwiZV9vcHQiLCJpZF9vcHQiLCJ0YWdzIiwibW9yZV9hcmciLCJzdGgiLCJpbm5lcl9sb2MiLCJmaWxlbmFtZSIsImxpbmUiLCJzdGFydF9wb3MiLCJlbmRfcG9zIiwiZSQxIiwiZSIsImUkMCIsInNfc2hvcnQiLCJyZXMiLCJjIiwiZGVzY3IiLCJlJDIiLCJlJDMiLCJlbmRfcG9zJDAiLCJzdGFydF9wb3MkMCIsImxpbmUkMCIsImZpbGVuYW1lJDAiLCJkZXNjciQwIiwiZXhwciIsInZhbGlkYXRlX2V4dGVuc2lvbl9wb2ludF9leG4iLCJ0YWciLCJoaW50IiwiaGludCQwIiwiaGludCQxIiwiZXhwYW5kX3Rlc3QiLCJsb2MkMCIsImV4cGFuZF90ZXN0X3VuaXQiLCJleHBhbmRfdGVzdF9tb2R1bGUiLCJtIiwiZiIsIm9wdF9uYW1lX2FuZF9leHByIiwiYXR0cmlidXRlcyIsIm5hbWVfb3B0IiwidGVzdCIsInRlc3RfdW5pdCIsInRlc3RfbW9kdWxlIiwiYWxsIiwicGFydGl0aW9uIiwibGlibmFtZSIsImxvYyQxIiwiaGVhZGVyIiwibG9jJDIiLCJmb290ZXIiLCJwcmVfdGVzdF9ob29rIiwidF9zZXhwX2dyYW1tYXIiLCJuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoIiwidCIsImVuYWJsZV9ldmVyeXRoaW5nIiwiYW1fcnVubmluZ19pbmxpbmVfdGVzdF9lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImFsbG93X291dHB1dF9wYXR0ZXJucyIsImRpc3BsYXllZF9kZXNjciIsImRlc2NyIiwiZmlsZW5hbWUiLCJsaW5lIiwic3RhcnRfcG9zIiwiZW5kX3BvcyIsIm5hbWUiLCJyZXN0IiwibGliIiwidGVzdHMiLCJsaXN0X3BhcnRpdGlvbnMiLCJwYXJ0aXRpb24iLCJ0YWdfcHJlZGljYXRlIiwibmFtZV9maWx0ZXIiLCJtc2ckMSIsImYiLCJhbm9uIiwicyIsInN0ciIsImZpbGUiLCJpbmRleCIsImluZGV4JDAiLCJpIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJ0YWciLCJsIiwiYXJndiIsIm1zZyIsIm1zZyQwIiwidiIsImFtX3Rlc3RfcnVubmVyIiwiYW1fcnVubmluZ19pbmxpbmVfdGVzdCIsInRlc3RpbmciLCJ3YWxsX3RpbWVfY2xvY2tfbnMiLCJ3aGVyZV90b19jdXRfYmFja3RyYWNlIiwidGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fIiwiYmVmb3JlX25zIiwicmVzIiwiZXhuJDAiLCJleG4iLCJzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSIsInNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlIiwic3RyaW5nX29mX21vZHVsZV9kZXNjciIsInByaW50X2RlbGF5ZWRfZXJyb3JzIiwiZGVsYXllZF9lcnJvcnMkMCIsIm1lc3NhZ2UiLCJlcHJpbnRmX29yX2RlbGF5IiwiZm10IiwiYWRkX2hvb2tzIiwiQyIsImh1bV9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJ0ZXN0X2lubmVyIiwiY29uZmlnIiwidGFncyIsImRlZl9maWxlbmFtZSIsImRlZl9saW5lX251bWJlciIsImJvb2xfb2ZfZiIsIndoYXRfdG9fZG8iLCJ3aGljaF90YWdzIiwib25seV90ZXN0X2xvY2F0aW9uIiwibGlibmFtZSIsImYkMCIsImRlc2NyJDAiLCJjb21wbGV0ZV90YWdzIiwidXNlZCIsImxpbmVfbnVtYmVyX29wdCIsInBvc2l0aW9uX3N0YXJ0IiwiZW5kX29mX2RlZl9maWxlbmFtZSIsImxpbmVfbnVtYmVyIiwiZm91bmQiLCJyZXEiLCJkcm9wcGVkIiwiZGVzY3IkMSIsInN1YnN0cmluZyIsInNob3VsZF9ydW4iLCJkZXNjciQyIiwiY2giLCJyZXN1bHQkMCIsImNhbWxfcmFuZG9tX3N0YXRlIiwiYmFzZV9yYW5kb21fc3RhdGUiLCJyZXN1bHQiLCJiYWNrdHJhY2UkMCIsImV4bl9zdHIiLCJzZXAiLCJzZXRfbGliX2FuZF9wYXJ0aXRpb24iLCJzdGF0aWNfbGliIiwid2hpY2hfdGVzdHMiLCJyZXF1aXJlc19wYXJ0aXRpb24iLCJ1bnNldF9saWIiLCJ0ZXN0IiwiYiIsInRlc3RfdW5pdCIsInRlc3RfbW9kdWxlIiwicGFydGlhbF90YWdzIiwicHJldiIsIngiLCJlJDAiLCJlIiwic3VtbWFyaXplIiwiayIsImFjYyIsImNvdW50IiwiY291bnRfdGVzdF9tb2R1bGVzIiwidW51c2VkX3Rlc3RzIiwiZXJyb3JzIiwidXNlX2NvbG9yJDAiLCJpbl9wbGFjZSQwIiwiZGlmZl9jb21tYW5kJDAiLCJzb3VyY2VfdHJlZV9yb290JDAiLCJhbGxvd19vdXRwdXRfcGF0dGVybnMkMCIsImV2YWx1YXRvcnMiLCJhZGRfZXZhbHVhdG9yIiwiZXhpdCIsImRlYnVnX3ByaW50aW5nIiwiY3JlYXRlX25vX3NldCIsIm9wdCIsInN0aCIsImRlYnVnIiwic3RoJDAiLCJlcSIsInNldF9zaWduYWwiLCJzaWduYWwiLCJob29rZWQiLCJyZWdpc3RlciIsImYiLCJyZWdpc3Rlcl9sd3QiLCJ2YWx1ZSIsInNldCIsInZhbHVlX2NoYW5nZWQiLCJjcmVhdGUiLCJzZXRfaG9va2VkIiwibWFwIiwibmV3X2hvb2tlZCIsImZtYXAiLCJkZWZhdWx0JDAiLCJ4IiwidiIsIm9uIiwiY29uZF9ob29rZWQiLCJpbml0aWFsX3ZhbHVlIiwiYiIsIm5ld192YWx1ZSIsImwyIiwiaG9va2VkMSIsImhvb2tlZDIiLCJuZXdfdmFsdWUxIiwibmV3X3ZhbHVlMiIsIm9mX3JlYWN0X3NpZ25hbCIsImxpbmtfdG9fb3JpZ2luYWxfc2lnbmFsIiwidG9fcmVhY3Rfc2lnbmFsIiwiY29uc3QkMCIsImNyZWF0ZV9ub19zZW5kIiwic2VuZF9ldmVudCIsImV2ZW50Iiwic2VuZCIsInNlbmRfaG9va2VkIiwidG9fcmVhY3RfZXZlbnQiLCJkZWJ1Z19wcmludCIsInNldF9hIiwiYSIsInIiLCJpIiwic2V0X3MiLCJzIiwiaCIsInNldF9jb25kIiwiY29uZCIsIm91dCIsInN0cmVhbSQxIiwic3RyZWFtJDAiLCJzdHJlYW0iLCJ2ZXJzaW9uIiwib2NhbWxfbGV4X3RhYmxlcyIsIm9jYW1sX2xleF90YWJsZXMkMCIsIm9jYW1sX2xleF90YWJsZXMkMSIsImpzb25fZXJyb3IiLCJzIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJ3cml0ZV9mbG9hdF9wcmVjIiwid3JpdGVfc3RkX2Zsb2F0Iiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMiLCJ3cml0ZV9pbnRsaXQiLCJ3cml0ZV9mbG9hdGxpdCIsIndyaXRlX3N0cmluZ2xpdCIsIml0ZXIyIiwiZl9lbHQiLCJmX3NlcCIsImwkMCIsInkkMCIsImwiLCJ5Iiwid3JpdGVfanNvbiIsImwkMSIsIndyaXRlX3R1cGxlIiwibyIsInMkMCIsIndyaXRlX3ZhcmlhbnQiLCJ3cml0ZV9hc3NvYyIsIndyaXRlX2xpc3QiLCJiIiwicyQxIiwiZiIsInMkMiIsInMkMyIsIndyaXRlX3N0ZF9qc29uIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ0b19idWZmZXIiLCJzdWYiLCJzdGgkMCIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJhIiwidiQwIiwibCQyIiwicHAiLCJmbXQiLCJ0dXAiLCJzZXAiLCJ2YWx1ZSIsIm5hbWUiLCJ4JDEiLCJ4cyIsImtleSIsInhzJDAiLCJ4JDAiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJ4JDUiLCJ4JDYiLCJzaG93IiwiZXF1YWwiLCJhJDAiLCJiJDAiLCJiJDEiLCJhJDEiLCJ5cyIsImNvbXBhcmVfa2V5cyIsImtleSQwIiwieXMkMCIsInZhbHVlJDAiLCJyZXN1bHQiLCJ5cyQxIiwieHMkMSIsImIkMiIsImEkMiIsIm5hbWUkMCIsInJlc3VsdCQwIiwiYiQzIiwiYSQzIiwiYiQ0IiwiYSQ0IiwiYiQ1IiwiYSQ1IiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicHBfbGlzdCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwicyQ0Iiwib3AiLCJyZXByZXNlbnRhdGlvbiIsInJlcHJlc2VudGF0aW9uJDAiLCJwcCQwIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwiaGV4JDAiLCJ3cml0ZV9zcGVjaWFsJDAiLCJ3cml0ZV9zdHJpbmckMCIsImpzb25fc3RyaW5nX29mX3N0cmluZyQwIiwid3JpdGVfbnVsbCQwIiwid3JpdGVfYm9vbCQwIiwid3JpdGVfZGlnaXRzJDAiLCJ3cml0ZV9pbnQkMCIsImZsb2F0X25lZWRzX3BlcmlvZCQwIiwid3JpdGVfZmxvYXQkMCIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjJDAiLCJ3cml0ZV9mbG9hdF9wcmVjJDAiLCJ3cml0ZV9zdGRfZmxvYXQkMCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjJDAiLCJpdGVyMiQwIiwiZl9zZXAkMCIsIndyaXRlX2pzb24kMCIsIndyaXRlX2Fzc29jJDAiLCJ3cml0ZV9saXN0JDAiLCJ3cml0ZV9zdGRfanNvbiQwIiwidG9fYnVmZmVyJDAiLCJ0b19zdHJpbmckMCIsInRvX2NoYW5uZWwkMCIsInRvX291dHB1dCQwIiwidG9fZmlsZSQwIiwic2VxX3RvX2J1ZmZlciQwIiwic2VxX3RvX3N0cmluZyQwIiwic2VxX3RvX2NoYW5uZWwkMCIsInNlcV90b19maWxlJDAiLCJzb3J0JDAiLCJwcF9saXN0JDAiLCJpc19hdG9tJDAiLCJmb3JtYXQkMCIsInBwJDEiLCJwcCQyIiwic2hvdyQwIiwiZXF1YWwkMCIsInByZXR0eV9wcmludCQwIiwicHJldHR5X3RvX3N0cmluZyQwIiwicHJldHR5X3RvX2NoYW5uZWwkMCIsImhleCQxIiwiY3VzdG9tX2Vycm9yIiwiZGVzY3IiLCJsZXhidWYiLCJvZmZzIiwiYm9sIiwicG9zMSIsInBvczIiLCJmaWxlX2xpbmUiLCJieXRlcyIsIm1zZyIsImxleGVyX2Vycm9yIiwicmVhZF9qdW5rIiwibG9uZ19lcnJvciIsImp1bmsiLCJleHRyYV9qdW5rIiwibWluMTAiLCJtYXgxMCIsImV4dHJhY3RfcG9zaXRpdmVfaW50IiwiZXh0cmFjdF9uZWdhdGl2ZV9pbnQiLCJuZXdsaW5lIiwiYWRkX2xleGVtZSIsInJlYWRfanNvbiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwiZmluaXNoX3N0cmluZyIsImFjYyIsInJlYWRfc3BhY2UiLCJyZWFkX29iamVjdF9lbmQiLCJmaWVsZF9uYW1lIiwicmVhZF9pZGVudCIsInJlYWRfY29sb24iLCJyZWFkX29iamVjdF9zZXAiLCJmaWVsZF9uYW1lJDAiLCJhY2MkMCIsInJlYWRfYXJyYXlfZW5kIiwicmVhZF9hcnJheV9zZXAiLCJmaW5pc2hfY29tbWVudCIsImZpbmlzaF9lc2NhcGVkX2NoYXIiLCJtYXBfc3RyaW5nIiwiYyQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsImMkMSIsImQkMCIsImZpbmlzaF9zdHJpbmdsaXQiLCJmaW5pc2hfdmFyaWFudCIsInJlYWRfZ3QiLCJyZWFkX2x0IiwicmVhZF9jb21tYSIsInN0YXJ0X2FueV92YXJpYW50IiwicmVhZF9lb2YiLCJyZWFkX251bGwiLCJyZWFkX251bGxfaWZfcG9zc2libGUiLCJyZWFkX2Jvb2wiLCJyZWFkX2ludCIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsIm1hcF9pZGVudCIsInJlYWRfc2VxdWVuY2UiLCJyZWFkX2NlbGwiLCJpbml0X2FjYyIsInJlYWRfbGlzdF9yZXYiLCJyZWFkX3R1cGxlIiwicmVhZF90dXBsZV9lbmQiLCJyZWFkX3R1cGxlX2VuZDIiLCJyZWFkX3R1cGxlX3NlcCIsInJlYWRfdHVwbGVfc2VwMiIsInJlYWRfYWJzdHJhY3RfZmllbGRzIiwicmVhZF9rZXkiLCJyZWFkX2ZpZWxkIiwicmVhZF9sY3VybCIsInN0YXJ0X2FueV90dXBsZSIsInJlYWRfbHBhciIsInJlYWRfcnBhciIsInJlYWRfbGJyIiwicmVhZF9yYnIiLCJza2lwX2pzb24iLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQiLCJza2lwX2lkZW50IiwiZmluaXNoX3NraXBfdmFyaWFudCIsImJ1ZmZlcl9qc29uIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQiLCJidWZmZXJfc3BhY2UiLCJidWZmZXJfaWRlbnQiLCJidWZmZXJfY29sb24iLCJvY2FtbF9sZXhfc3RhdGUkMyIsIm9jYW1sX2xleF9zdGF0ZSQ0Iiwib2NhbWxfbGV4X3N0YXRlJDUiLCJvY2FtbF9sZXhfc3RhdGUkNiIsIm9jYW1sX2xleF9zdGF0ZSQ3Iiwib2NhbWxfbGV4X3N0YXRlJDgiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQiLCJyZWFkX2ludDgiLCJyZWFkX2xpc3QiLCJyZWFkX2FycmF5IiwidGwiLCJyIiwicmVhZF9maWVsZHMiLCJmcm9tX2xleGJ1ZiIsImZyb21fc3RyaW5nJDAiLCJmcm9tX2NoYW5uZWwkMCIsImljIiwiZnJvbV9maWxlIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwiZmluX2UkMCIsImZpbl9lIiwic2VxX2Zyb21fc3RyaW5nIiwic2VxX2Zyb21fY2hhbm5lbCIsInNlcV9mcm9tX2ZpbGUiLCJmbmFtZSQwIiwibGluZXNlcV9mcm9tX2NoYW5uZWwiLCJsbnVtMCIsImxpbmUiLCJsaW5lc2VxX2Zyb21fZmlsZSIsInByZXR0aWZ5IiwiY29tcGFjdCIsInR5cGVyciIsImpzIiwibWVtYmVyIiwib2JqIiwicGF0aCIsIm9iaiQwIiwiYXNzb2MiLCJvYmokMSIsImluZGV4Iiwid3JhcHBlZF9pbmRleCIsIm1hcCIsInRvX2Fzc29jIiwidG9fb3B0aW9uIiwidG9fYm9vbCIsInRvX2Jvb2xfb3B0aW9uIiwidG9fbnVtYmVyIiwidG9fbnVtYmVyX29wdGlvbiIsInRvX2Zsb2F0IiwidG9fZmxvYXRfb3B0aW9uIiwidG9faW50IiwidG9faW50X29wdGlvbiIsInRvX2xpc3QiLCJ0b19zdHJpbmckMSIsInRvX3N0cmluZ19vcHRpb24iLCJjb252ZXJ0X2VhY2giLCJmaWx0ZXJfbWFwIiwiZmxhdHRlbiIsImwyIiwiZmlsdGVyX2luZGV4IiwiZmlsdGVyX2xpc3QiLCJmaWx0ZXJfbWVtYmVyIiwiZmlsdGVyX2Fzc29jIiwiZmlsdGVyX2Jvb2wiLCJmaWx0ZXJfaW50IiwiZmlsdGVyX2Zsb2F0IiwiZmlsdGVyX251bWJlciIsImZpbHRlcl9zdHJpbmciLCJrZXlzIiwidmFsdWVzIiwiY29tYmluZSIsImZpcnN0Iiwic2Vjb25kIiwidG9fYmFzaWMiLCJoZXgkMiIsIndyaXRlX3NwZWNpYWwkMSIsIndyaXRlX3N0cmluZyQxIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDEiLCJ3cml0ZV9udWxsJDEiLCJ3cml0ZV9ib29sJDEiLCJ3cml0ZV9kaWdpdHMkMSIsIndyaXRlX2ludCQxIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDEiLCJ3cml0ZV9mbG9hdCQxIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2Zsb2F0X3ByZWMkMSIsIndyaXRlX3N0ZF9mbG9hdCQxIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2ludGxpdCQwIiwiaXRlcjIkMSIsImZfc2VwJDEiLCJ3cml0ZV9qc29uJDEiLCJ3cml0ZV90dXBsZSQwIiwid3JpdGVfYXNzb2MkMSIsIndyaXRlX2xpc3QkMSIsIndyaXRlX3ZhcmlhbnQkMCIsIndyaXRlX3N0ZF9qc29uJDEiLCJ3cml0ZV9zdGRfdHVwbGUkMCIsIndyaXRlX3N0ZF92YXJpYW50JDAiLCJ0b19idWZmZXIkMSIsInRvX3N0cmluZyQyIiwidG9fY2hhbm5lbCQxIiwidG9fb3V0cHV0JDEiLCJ0b19maWxlJDEiLCJzZXFfdG9fYnVmZmVyJDEiLCJzZXFfdG9fc3RyaW5nJDEiLCJzZXFfdG9fY2hhbm5lbCQxIiwic2VxX3RvX2ZpbGUkMSIsInNvcnQkMSIsInBwX2xpc3QkMSIsImlzX2F0b20kMSIsImZvcm1hdCQxIiwicHAkMyIsInBwJDQiLCJzaG93JDEiLCJlcXVhbCQxIiwicHJldHR5X3ByaW50JDEiLCJwcmV0dHlfdG9fc3RyaW5nJDEiLCJwcmV0dHlfdG9fY2hhbm5lbCQxIiwiaGV4JDMiLCJjdXN0b21fZXJyb3IkMCIsImxleGVyX2Vycm9yJDAiLCJyZWFkX2p1bmskMCIsImxvbmdfZXJyb3IkMCIsIm1pbjEwJDAiLCJtYXgxMCQwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQkMCIsImV4dHJhY3RfbmVnYXRpdmVfaW50JDAiLCJuZXdsaW5lJDAiLCJhZGRfbGV4ZW1lJDAiLCJyZWFkX2pzb24kMCIsImZpbmlzaF9zdHJpbmckMCIsInJlYWRfc3BhY2UkMCIsInJlYWRfb2JqZWN0X2VuZCQwIiwicmVhZF9pZGVudCQwIiwicmVhZF9jb2xvbiQwIiwicmVhZF9vYmplY3Rfc2VwJDAiLCJyZWFkX2FycmF5X2VuZCQwIiwicmVhZF9hcnJheV9zZXAkMCIsImFjYyQxIiwicmVhZF90dXBsZV9lbmQkMCIsInJlYWRfdHVwbGVfc2VwJDAiLCJjb25zIiwiZmluaXNoX3ZhcmlhbnQkMCIsImZpbmlzaF9jb21tZW50JDAiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDAiLCJtYXBfc3RyaW5nJDAiLCJmaW5pc2hfc3RyaW5nbGl0JDAiLCJyZWFkX2d0JDAiLCJyZWFkX2x0JDAiLCJyZWFkX2NvbW1hJDAiLCJzdGFydF9hbnlfdmFyaWFudCQwIiwicmVhZF9lb2YkMCIsInJlYWRfbnVsbCQwIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDAiLCJyZWFkX2Jvb2wkMCIsInJlYWRfaW50JDAiLCJyZWFkX2ludDMyJDAiLCJyZWFkX2ludDY0JDAiLCJyZWFkX251bWJlciQwIiwicmVhZF9zdHJpbmckMCIsIm1hcF9pZGVudCQwIiwicmVhZF9zZXF1ZW5jZSQwIiwicmVhZF9saXN0X3JldiQwIiwicmVhZF90dXBsZSQwIiwicG9zIiwicmVhZF90dXBsZV9lbmQyJDAiLCJyZWFkX3R1cGxlX3NlcDIkMCIsInJlYWRfYWJzdHJhY3RfZmllbGRzJDAiLCJyZWFkX2xjdXJsJDAiLCJzdGFydF9hbnlfdHVwbGUkMCIsInJlYWRfbHBhciQwIiwicmVhZF9ycGFyJDAiLCJyZWFkX2xiciQwIiwicmVhZF9yYnIkMCIsInNraXBfanNvbiQwIiwiZmluaXNoX3NraXBfc3RyaW5nbGl0JDAiLCJza2lwX2lkZW50JDAiLCJmaW5pc2hfc2tpcF92YXJpYW50JDAiLCJidWZmZXJfanNvbiQwIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQkMCIsImJ1ZmZlcl9zcGFjZSQwIiwiYnVmZmVyX2lkZW50JDAiLCJidWZmZXJfY29sb24kMCIsIm9jYW1sX2xleF9zdGF0ZSQ5Iiwib2NhbWxfbGV4X3N0YXRlJDEwIiwib2NhbWxfbGV4X3N0YXRlJDExIiwib2NhbWxfbGV4X3N0YXRlJDEyIiwib2NhbWxfbGV4X3N0YXRlJDEzIiwib2NhbWxfbGV4X3N0YXRlJDE0Iiwib2NhbWxfbGV4X3N0YXRlJDE1Iiwib2NhbWxfbGV4X3N0YXRlJDE2IiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDAiLCJqdW5rJDAiLCJyZWFkX2ludDgkMCIsInJlYWRfbGlzdCQwIiwicmVhZF9hcnJheSQwIiwicmVhZF9maWVsZHMkMCIsImZyb21fbGV4YnVmJDAiLCJmcm9tX3N0cmluZyQyIiwiZnJvbV9jaGFubmVsJDIiLCJmcm9tX2ZpbGUkMCIsInNlcV9mcm9tX2xleGJ1ZiQwIiwic2VxX2Zyb21fc3RyaW5nJDAiLCJzZXFfZnJvbV9jaGFubmVsJDAiLCJzZXFfZnJvbV9maWxlJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQwIiwibGluZXNlcV9mcm9tX2ZpbGUkMCIsInByZXR0aWZ5JDAiLCJjb21wYWN0JDAiLCJ0eXBlcnIkMCIsIm1lbWJlciQwIiwicGF0aCQwIiwiaW5kZXgkMCIsIm1hcCQwIiwidG9fYXNzb2MkMCIsInRvX29wdGlvbiQwIiwidG9fYm9vbCQwIiwidG9fYm9vbF9vcHRpb24kMCIsInRvX251bWJlciQwIiwidG9fbnVtYmVyX29wdGlvbiQwIiwidG9fZmxvYXQkMCIsInRvX2Zsb2F0X29wdGlvbiQwIiwidG9faW50JDAiLCJ0b19pbnRfb3B0aW9uJDAiLCJ0b19saXN0JDAiLCJ0b19zdHJpbmckMyIsInRvX3N0cmluZ19vcHRpb24kMCIsImNvbnZlcnRfZWFjaCQwIiwiZmlsdGVyX21hcCQwIiwiZmxhdHRlbiQwIiwiZmlsdGVyX2luZGV4JDAiLCJmaWx0ZXJfbGlzdCQwIiwiZmlsdGVyX21lbWJlciQwIiwiZmlsdGVyX2Fzc29jJDAiLCJmaWx0ZXJfYm9vbCQwIiwiZmlsdGVyX2ludCQwIiwiZmlsdGVyX2Zsb2F0JDAiLCJmaWx0ZXJfbnVtYmVyJDAiLCJmaWx0ZXJfc3RyaW5nJDAiLCJrZXlzJDAiLCJ2YWx1ZXMkMCIsImNvbWJpbmUkMCIsImhleCQ0Iiwid3JpdGVfc3BlY2lhbCQyIiwid3JpdGVfc3RyaW5nJDIiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMiIsIndyaXRlX251bGwkMiIsIndyaXRlX2Jvb2wkMiIsIndyaXRlX2ludGxpdCQxIiwid3JpdGVfZmxvYXRsaXQkMCIsIndyaXRlX3N0cmluZ2xpdCQwIiwiaXRlcjIkMiIsImZfc2VwJDIiLCJ3cml0ZV9qc29uJDIiLCJ3cml0ZV9hc3NvYyQyIiwid3JpdGVfbGlzdCQyIiwid3JpdGVfdHVwbGUkMSIsIndyaXRlX3ZhcmlhbnQkMSIsIndyaXRlX3N0ZF9qc29uJDIiLCJ3cml0ZV9zdGRfdHVwbGUkMSIsIndyaXRlX3N0ZF92YXJpYW50JDEiLCJ0b19idWZmZXIkMiIsInRvX3N0cmluZyQ0IiwidG9fY2hhbm5lbCQyIiwidG9fb3V0cHV0JDIiLCJ0b19maWxlJDIiLCJzZXFfdG9fYnVmZmVyJDIiLCJzZXFfdG9fc3RyaW5nJDIiLCJzZXFfdG9fY2hhbm5lbCQyIiwic2VxX3RvX2ZpbGUkMiIsInNvcnQkMiIsInBwX2xpc3QkMiIsImlzX2F0b20kMiIsImZvcm1hdCQyIiwicHAkNSIsInBwJDYiLCJzaG93JDIiLCJlcXVhbCQyIiwicHJldHR5X3ByaW50JDIiLCJwcmV0dHlfdG9fc3RyaW5nJDIiLCJwcmV0dHlfdG9fY2hhbm5lbCQyIiwiaGV4JDUiLCJjdXN0b21fZXJyb3IkMSIsImxleGVyX2Vycm9yJDEiLCJyZWFkX2p1bmskMSIsImxvbmdfZXJyb3IkMSIsIm1pbjEwJDEiLCJtYXgxMCQxIiwibmV3bGluZSQxIiwiYWRkX2xleGVtZSQxIiwicmVhZF9qc29uJDEiLCJmaW5pc2hfc3RyaW5nbGl0JDEiLCJyZWFkX3NwYWNlJDEiLCJyZWFkX29iamVjdF9lbmQkMSIsInJlYWRfaWRlbnQkMSIsInJlYWRfY29sb24kMSIsInJlYWRfb2JqZWN0X3NlcCQxIiwicmVhZF9hcnJheV9lbmQkMSIsInJlYWRfYXJyYXlfc2VwJDEiLCJyZWFkX3R1cGxlX2VuZCQxIiwicmVhZF90dXBsZV9zZXAkMSIsImZpbmlzaF92YXJpYW50JDEiLCJmaW5pc2hfY29tbWVudCQxIiwiZmluaXNoX3N0cmluZyQxIiwiZmluaXNoX2VzY2FwZWRfY2hhciQxIiwibWFwX3N0cmluZyQxIiwicmVhZF9ndCQxIiwicmVhZF9sdCQxIiwicmVhZF9jb21tYSQxIiwic3RhcnRfYW55X3ZhcmlhbnQkMSIsInJlYWRfZW9mJDEiLCJyZWFkX251bGwkMSIsInJlYWRfbnVsbF9pZl9wb3NzaWJsZSQxIiwicmVhZF9ib29sJDEiLCJyZWFkX2ludCQxIiwic3RhcnQkMCIsInN0b3AkMCIsIm4kMCIsImkkMCIsInJlYWRfaW50MzIkMSIsInJlYWRfaW50NjQkMSIsInJlYWRfbnVtYmVyJDEiLCJyZWFkX3N0cmluZyQxIiwibWFwX2lkZW50JDEiLCJyZWFkX3NlcXVlbmNlJDEiLCJyZWFkX2xpc3RfcmV2JDEiLCJyZWFkX3R1cGxlJDEiLCJyZWFkX3R1cGxlX2VuZDIkMSIsInJlYWRfdHVwbGVfc2VwMiQxIiwicmVhZF9hYnN0cmFjdF9maWVsZHMkMSIsInJlYWRfbGN1cmwkMSIsInN0YXJ0X2FueV90dXBsZSQxIiwicmVhZF9scGFyJDEiLCJyZWFkX3JwYXIkMSIsInJlYWRfbGJyJDEiLCJyZWFkX3JiciQxIiwic2tpcF9qc29uJDEiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQkMSIsInNraXBfaWRlbnQkMSIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMSIsImJ1ZmZlcl9qc29uJDEiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCQxIiwiYnVmZmVyX3NwYWNlJDEiLCJidWZmZXJfaWRlbnQkMSIsImJ1ZmZlcl9jb2xvbiQxIiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDEiLCJqdW5rJDEiLCJyZWFkX2ludDgkMSIsInJlYWRfbGlzdCQxIiwicmVhZF9hcnJheSQxIiwicmVhZF9maWVsZHMkMSIsImZyb21fbGV4YnVmJDEiLCJmcm9tX3N0cmluZyQ0IiwiZnJvbV9jaGFubmVsJDQiLCJmcm9tX2ZpbGUkMSIsInNlcV9mcm9tX2xleGJ1ZiQxIiwic2VxX2Zyb21fc3RyaW5nJDEiLCJzZXFfZnJvbV9jaGFubmVsJDEiLCJzZXFfZnJvbV9maWxlJDEiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQxIiwibGluZXNlcV9mcm9tX2ZpbGUkMSIsInByZXR0aWZ5JDEiLCJjb21wYWN0JDEiLCJ0eXBlcnIkMSIsIm1lbWJlciQxIiwicGF0aCQxIiwiaW5kZXgkMSIsIm1hcCQxIiwidG9fYXNzb2MkMSIsInRvX29wdGlvbiQxIiwidG9fYm9vbCQxIiwidG9fYm9vbF9vcHRpb24kMSIsInRvX251bWJlciQxIiwidG9fbnVtYmVyX29wdGlvbiQxIiwidG9fZmxvYXQkMSIsInRvX2Zsb2F0X29wdGlvbiQxIiwidG9faW50JDEiLCJ0b19pbnRfb3B0aW9uJDEiLCJ0b19saXN0JDEiLCJ0b19zdHJpbmckNSIsInRvX3N0cmluZ19vcHRpb24kMSIsImNvbnZlcnRfZWFjaCQxIiwiZmlsdGVyX21hcCQxIiwiZmxhdHRlbiQxIiwiZmlsdGVyX2luZGV4JDEiLCJmaWx0ZXJfbGlzdCQxIiwiZmlsdGVyX21lbWJlciQxIiwiZmlsdGVyX2Fzc29jJDEiLCJmaWx0ZXJfYm9vbCQxIiwiZmlsdGVyX2ludCQxIiwiZmlsdGVyX2Zsb2F0JDEiLCJmaWx0ZXJfbnVtYmVyJDEiLCJmaWx0ZXJfc3RyaW5nJDEiLCJrZXlzJDEiLCJ2YWx1ZXMkMSIsImNvbWJpbmUkMSIsInJhd192ZXJzaW9uX3N0cmluZyIsImV4dHJhY3RfdGFnX3JlIiwiZ3IiLCJ2ZXJzaW9uX3N0cmluZyIsInZlcnNpb25fbXNnIiwidmVyc2lvbl9rYXNhX2Z1bGxfbmFtZSIsInZlcnNpb25fa2FkZV9mdWxsX25hbWUiLCJ0a19pc19pbml0aWFsaXplZCIsInBwX2V4Y2VwdGlvbiIsImYiLCJleGMiLCJ4IiwieCQwIiwieCQxIiwieCQyIiwieSIsIngkMyIsImVyIiwieSQwIiwieCQ0IiwiZXIkMCIsIngkNSIsImNzdCIsImZsb2F0X2lzX3plcm8iLCJ4IiwicG93IiwiaSIsImoiLCJhdXgiLCJrIiwiYWNjdSIsImskMCIsImFjY3UkMCIsImFjY3UkMSIsImskMSIsImZhY3QiLCJpJDAiLCJpJDEiLCJnZXRfcHJvZHVjdF9pbWFnZV9vY2MiLCJzdGFydCIsImNvbWJpbmUiLCJmIiwibCIsImwkMCIsInQkMSIsIm9sZCQxIiwibCQxIiwib2xkIiwib2NjIiwidCIsImgiLCJvY2MkMCIsInQkMCIsIm9sZCQwIiwiZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjXzIiLCJsMSIsImwyIiwibDEkMCIsImwyJDAiLCJjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCIsImgkMCIsImwxJDEiLCJsMiQxIiwiaDIiLCJoMSIsIm9jYzEiLCJsMSQyIiwib2NjMiIsImwyJDIiLCJvY2MyJDAiLCJsMiQzIiwib2NjMSQwIiwibDEkMyIsImFjY3UkMiIsImRpdjIiLCJwb3c2NCIsIm4iLCJjYW50b3JfcGFpcmluZyIsInkiLCJzIiwicmVhZF9pbnB1dCIsInVzZXJfaW5wdXQiLCJhY2MiLCJjIiwiYWNjJDAiLCJub3RfYW5faWQiLCJhcnJheV9mb2xkX2xlZnRfbWFwaSIsImEiLCJvdXQiLCJ5JDAiLCJvIiwiYXJyYXlfbWFwX29mX2xpc3QiLCJ4JDAiLCJsZW4iLCJhbnMiLCJhcnJheV9yZXZfb2ZfbGlzdCIsImFycmF5X3Jldl9tYXBfb2ZfbGlzdCIsImFycmF5X2ZvbGRfbGVmdGkiLCJlIiwiYXJyYXlfZm9sZF9yaWdodGkiLCJ4JDEiLCJhcnJheV9mb2xkX2xlZnQyaSIsImExIiwiYTIiLCJhcnJheV9maWx0ZXIiLCJhcnJheV9taW5fZXF1YWxfbm90X251bGwiLCJhZzEiLCJuYjEiLCJhZzIiLCJuYjIiLCJqJDAiLCJvdXQkMSIsImkkMiIsInZhIiwiYWcxJDAiLCJuYjEkMCIsImFnMiQwIiwibmIyJDAiLCJvdXQkMCIsImFycmF5X2NvbXBhcmUiLCJjb21wYXJlIiwiYiIsImQiLCJpdGVyaSIsInJlY3RpIiwibWluX3Bvc19pbnRfbm90X3plcm8iLCJkYXRhYiIsImtleWIiLCJkYXRhYSIsImtleWEiLCJtYXhfcG9zX2ludF9ub3RfemVybyIsImZvbGRfb3Zlcl9wZXJtdXRhdGlvbnMiLCJ0b19kbyIsImRpc2NhcmRlZCIsInBlcm11dGF0aW9uIiwidG9fZG8kMCIsImRpc2NhcmRlZCQwIiwidG9fZG8kMSIsImxpc3QiLCJ0b19kbzEiLCJkaXNjYXJkZWQkMSIsImdjZF8yIiwiYSQwIiwiYiQwIiwiYiQxIiwibGNtXzIiLCJsY20iLCJnZXRfaW50ZXJ2YWxfbGlzdCIsInAiLCJhZGQiLCJjdXJyZW50Iiwib3V0cHV0IiwiY3VycmVudCQwIiwib3V0cHV0JDAiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwic3RyaW5nX3NwbGl0X29uX2NoYXIiLCJkZWxpbWl0ZXIiLCJpbmRleCIsImxlbmd0aCIsInNtYXNoX2R1cGxpY2F0ZV9pbl9vcmRlcmVkX2xpcyIsInRhaWwkMiIsIm5vY2MkMiIsImN1cnJlbnQkMSIsInRhaWwiLCJub2NjIiwidGFpbCQwIiwibm9jYyQwIiwidGFpbCQxIiwibm9jYyQxIiwiY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIiwibmFtZSIsImV4dCIsImZpbmRfYXZhaWxhYmxlX25hbWUiLCJhbHJlYWR5X3RoZXJlIiwiZmFjdWx0YXRpdmUiLCJleHQkMCIsImJhc2UiLCJiYXNlJDAiLCJ2IiwiZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIiwiZ2V0X3JlZiIsInJlZiIsInJlbW92ZV9kb3VibGVfZWxlbWVudHMiLCJzb3J0X2J5X3ByaW9yaXR5Iiwia2V5cyIsInNvcnQiLCJrZXkiLCJlbHQiLCJtYXBfb3B0Iiwib3B0IiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsIndyaXRlX3RvX2NoYW5uZWwiLCJzdHJpbmdfb2Zfd3JpdGUiLCJzdGgiLCJvYiIsInJlYWRfb2Zfc3RyaW5nIiwibGV4X3N0IiwibGV4X2J1ZiIsInJlYWRfYmV0d2Vlbl9zcGFjZXMiLCJyZWFkX25leHRfaXRlbSIsInN0IiwiZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24iLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcnJvcl9tc2ciLCJvZl9pbnQiLCJ0b19pbnQiLCJvZl9ib29sIiwidG9fYm9vbCIsIm9mX3VuaXQiLCJ0b191bml0Iiwib2Zfb3B0aW9uIiwidG9fanNvbiIsInRvX29wdGlvbiIsIndyaXRlX29wdGlvbiIsInJlYWRfb3B0aW9uIiwibGIiLCJvZl9saXN0IiwidG9fbGlzdCIsIm9mX2pzb24iLCJ3cml0ZV9jb21tYSIsIndyaXRlX2xpc3QiLCJmX2VsdCIsIm9mX2FycmF5IiwidG9fYXJyYXkiLCJ3cml0ZV9hcnJheSIsIndyaXRlX3NlcXVlbmNlIiwicSQwIiwiZiQwIiwicSIsInJlYWRfdmFyaWFudCIsInJlYWRfaWQiLCJyZWFkIiwic21hcnRfYXNzb2MiLCJvZl9hc3NvYyIsInRvX2Fzc29jIiwianNvbiIsIndyaXRlX2ZpZWxkIiwibmEiLCJvZl9wYWlyIiwidG9fanNvbjEiLCJ0b19qc29uMiIsImxhYjEiLCJzdGgkMCIsImxhYjIiLCJ0b190cmlwbGUiLCJvZl9qc29uMSIsIm9mX2pzb24yIiwib2ZfanNvbjMiLCJzdGgkMSIsImxhYjMiLCJzdGgkMiIsIm9mX3RyaXBsZSIsInRvX2pzb24zIiwidG9fcGFpciIsIndyaXRlX2NvbXBhY3RfcGFpciIsImciLCJyZWFkX2NvbXBhY3RfcGFpciIsImNvbXBhY3RfdG9fcGFpciIsIm9mX21hcCIsImZvbGQiLCJrZXlfdG9fanNvbiIsInZhbHVlX3RvX2pzb24iLCJtYXAiLCJsYWJfa2V5IiwibGFiX3ZhbHVlIiwidmFsdWUiLCJ0b19tYXAiLCJlbXB0eSIsImpzb25fdG9fa2V5IiwianNvbl90b192YWx1ZSIsIm9mX3VuaXhfbGFiZWwiLCJpbnQkMCIsInRvX3VuaXhfbGFiZWwiLCJvZl91bml4X2Vycm9yIiwidG9fdW5peF9lcnJvciIsInN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCIsImNyZWF0ZSIsImdldCIsInNldCIsIm4kMSIsIm4kMCIsImFycmF5IiwiaW5pdCIsImFwcGVuZCIsImxhIiwiY29uY2F0Iiwic29sIiwibSIsIm9mZnNldCIsIm9mZnNldCQwIiwic3ViIiwic2l6ZSIsImNvcHkiLCJmaWxsIiwiZGVmYXVsdCQwIiwiaXRlciIsImZvbGRfbGVmdGkiLCJmb2xkX3JpZ2h0aSIsImJsaXQiLCJvZnMxIiwib2ZzMiIsInByaW50IiwidHJhaWxpbmciLCJwcl9zIiwicHJfYSIsIm1heF9hcnJheV9zaXplMSIsIm1heF9hcnJheV9zaXplMiIsImV1Y2xpZGVlbiIsInAkMCIsIm0kMCIsImEkMSIsImcyIiwiZzEiLCJpbml0JDAiLCJwcl9zZXAiLCJwcl9lbCIsInN1Y2Nlc3MiLCJzdG9wIiwic3VjY2Vzc19vcl9zdG9wIiwiaGVpZ2h0Iiwibm9kZSIsImxlZnQiLCJyaWdodCIsImhsIiwiaHIiLCJobCQwIiwiaXNfZW1wdHkiLCJzaW5nbGV0b24iLCJpc19zaW5nbGV0b24iLCJzZXQyIiwic2V0MSIsImJhbGFuY2UiLCJoZWlnaHRfbGVmdCIsImhlaWdodF9yaWdodCIsImxlZnRyaWdodCIsImxlZnR2YWx1ZSIsImxlZnRsZWZ0IiwibGVmdHJpZ2h0cmlnaHQiLCJsZWZ0cmlnaHR2YWx1ZSIsImxlZnRyaWdodGxlZnQiLCJyaWdodHJpZ2h0IiwicmlnaHR2YWx1ZSIsInJpZ2h0bGVmdCIsInJpZ2h0bGVmdHJpZ2h0IiwicmlnaHRsZWZ0dmFsdWUiLCJyaWdodGxlZnRsZWZ0IiwiYmFsYW5jZV93aXRoX2xvZ3MiLCJ3YXJuIiwicGFyYW1ldGVycyIsImVycm9yIiwibG9jIiwiZXJyb3IkMCIsInIiLCJvJDAiLCJhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MiLCJuZXdfdmFsIiwidmFsdWVfc2V0IiwicmlnaHQkMCIsImJvb2wiLCJzZXQkMCIsImVycm9yJDEiLCJsZWZ0JDAiLCJib29sJDAiLCJlcnJvciQyIiwic2V0JDEiLCJlcnJvciQzIiwiYWRkX3dpdGhfbG9ncyIsIm5ld192YWx1ZSIsImFkZF9ldmVuX2lmX2l0X2V4aXN0cyIsImpvaW4iLCJyaWdodGhlaWdodCIsImxlZnRoZWlnaHQiLCJzYWZlX2V4dHJhY3RfbWluX2VsdCIsIm1pbiIsIm1pbl9lbHRfd2l0aF9sb2dzIiwicmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIiwiam9pbl93aXRoX2xvZ3MiLCJyaWdodDIiLCJ2YWx1ZTIiLCJsZWZ0MiIsInNldDIkMCIsIm1pbjIiLCJjb25jYXRfd2l0aF9sb2dzIiwiZWx0X29wdCIsInNwbGl0X3dpdGhfbG9ncyIsInNwbGl0X3ZhbCIsInNldF92YWwiLCJsZWZ0bGVmdCQwIiwicmlnaHRyaWdodCQwIiwicmVtb3ZlIiwicmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIiwiZXJyb3IkNCIsImVycm9yJDUiLCJlcnJvciQ2IiwiZXJyb3IkNyIsImVycm9yJDgiLCJzZXQkMiIsImVycm9yJDkiLCJyZW1vdmVfd2l0aF9sb2dzIiwic3BsaXQiLCJzcGxpdF92YWx1ZSIsInNldF92YWx1ZSIsInVuaW9uIiwiaGVpZ2h0MiIsImhlaWdodDEiLCJyaWdodDEiLCJ2YWx1ZTEiLCJsZWZ0MSIsInJpZ2h0MiQwIiwibGVmdDIkMCIsInJpZ2h0MSQwIiwibGVmdDEkMCIsImRpc2pvaW50X3VuaW9uIiwidW5pb25fZ2VuIiwiYWRkX2dlbiIsInVuaW9uX3dpdGhfbG9ncyIsInciLCJzJDAiLCJkaXNqb2ludF91bmlvbl93aXRoX2xvZ3MiLCJzdXR1cmVfbm90IiwiaW50ZXIiLCJ0cmlwbGUyIiwic3V0dXJlX25vdF93aXRoX2xvZ3MiLCJpbnRlcl93aXRoX2xvZ3MiLCJkaWZmIiwiZGlmZl93aXRoX2xvZ3MiLCJtaW51cyIsIm1pbnVzX3dpdGhfbG9ncyIsIm1lbSIsInNlYXJjaGVkX3ZhbHVlIiwiZmlsdGVyIiwiZmlsdCIsImZpbHRlcl93aXRoX2xvZ3MiLCJwYXJ0aXRpb24iLCJwYXJ0IiwicGFydGl0aW9uX3dpdGhfbG9ncyIsInJoIiwiY29uc19lbnVtIiwiZW51bSQxIiwiZTIkMiIsImUxJDIiLCJlMSIsImUyIiwiZTIkMCIsInIyIiwidjIiLCJlMSQwIiwicjEiLCJ2MSIsImUyJDEiLCJlMSQxIiwiZXF1YWwiLCJzdWJzZXQiLCJzZXQxJDAiLCJmb2xkX2ludiIsImZvcl9hbGwiLCJleGlzdHMiLCJlbGVtZW50cyIsImVsZW1lbnRzX2F1eCIsImF1eF9wcmludCIsImtleSQxIiwia2V5JDAiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNob29zZSIsInJhbmRvbSIsInJzIiwiYWltX2FjYyIsImFjY19sIiwiYWNjX3IiLCJlbXB0eSQwIiwiaGVpZ2h0JDAiLCJzaXplJDAiLCJub2RlJDAiLCJrZXkwIiwiZGF0YSIsImlzX2VtcHR5JDAiLCJyb290IiwibWF4X2tleSIsImJhbGFuY2UkMCIsInJpZ2h0MCIsImRhdGEwIiwibGVmdDAiLCJkYXRhMSIsImtleTEiLCJyaWdodDAkMCIsImRhdGEwJDAiLCJrZXkwJDAiLCJsZWZ0MCQwIiwiZGF0YTEkMCIsImtleTEkMCIsImJhbGFuY2Vfd2l0aF9sb2dzJDAiLCJhZGQkMCIsImRhdGFfbWFwIiwia2V5X21hcCIsImNtcCIsImFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyQwIiwicGFyYW1ldGVyIiwibWFwJDAiLCJhZGRfd2l0aF9sb2dzJDAiLCJleHRyYWN0X21pbl9iaW5kaW5nIiwiZGF0YTIiLCJrZXkyIiwiZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3MiLCJtZXJnZSIsIm1hcDEiLCJtYXAyIiwiZGF0YTMiLCJrZXkzIiwibWVyZ2Vfd2l0aF9sb2dzIiwicmVtb3ZlJDAiLCJyZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UkMCIsIm1hcCQxIiwibWFwJDIiLCJyZW1vdmVfd2l0aF9sb2dzJDAiLCJwb3AiLCJqb2luJDAiLCJ2YWx1ZSQwIiwiam9pbl93aXRoX2xvZ3MkMCIsInNwbGl0JDAiLCJkYXRhMiQwIiwibGVmdDIkMSIsInJpZ2h0MiQxIiwic3BsaXRfd2l0aF9sb2dzJDAiLCJkaWZmJDAiLCJvbGVmdDIiLCJvbGVmdDEiLCJvcmlnaHQyIiwib3JpZ2h0MSIsInVuaW9uJDAiLCJvcF9kYXRhMiIsImQyIiwiZDIkMCIsIm9wX2RhdGExIiwiZDEiLCJkMSQwIiwidW5pb25fd2l0aF9sb2dzJDAiLCJ1cGRhdGUiLCJ1cGRhdGVfd2l0aF9sb2dzIiwiZGlmZl9wcmVkIiwicHJlZCIsIm1pbl9lbHQkMCIsImZpbmRfb3B0aW9uIiwiZmluZF9kZWZhdWx0IiwiZmluZF9vcHRpb25fd2l0aF9sb2dzIiwiZmluZF9kZWZhdWx0X3dpdGhfbG9ncyIsIm1lbSQwIiwiZmlsdGVyX29uZSIsIml0ZXIkMCIsImZvbGQkMCIsInZhbHVlJDEiLCJvdXRwdXRsIiwiaW50ZXJydXB0ZWQiLCJ2YWxfb3B0IiwiZm9sZF93aXRoX2ludGVycnVwdGlvbiIsIm1vbmFkaWNfZm9sZCIsInBhcmFtIiwiZXJyIiwiZXJyJDAiLCJlcnIkMSIsInZhbHVlJDIiLCJlcnIkMiIsIm1vbmFkaWNfZm9sZDIiLCJyZXMiLCJyaCQwIiwibWFwMSQwIiwibWFwMiQwIiwicmVzJDAiLCJyZXMkMSIsInJoJDEiLCJyZXMkMiIsInJoJDIiLCJyZXMkMyIsInJoJDMiLCJyZXMkNCIsInJoJDQiLCJtb25hZGljX2ZvbGQyX3NwYXJzZSIsImlkIiwibW9uYWRpY19pdGVyMl9zcGFyc2UiLCJtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24iLCJtYXBpIiwibWFwX3dpdGhfbG9ncyIsImVycm9ycyIsImVycm9ycyQwIiwiZGF0YSQwIiwiZXJyb3JzJDEiLCJtYXAyX3dpdGhfbG9ncyIsIm1hcDJ6X3dpdGhfbG9ncyIsImZvbGQyX3dpdGhfbG9ncyIsImZvbGQyel93aXRoX2xvZ3MiLCJmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIiwiaXRlcjJfc3BhcnNlX3dpdGhfbG9ncyIsInBhciIsImZvcl9hbGwkMCIsImNvbnNfZW51bSQwIiwiZSQwIiwiZSQxIiwiY29tcGFyZSQwIiwibTEiLCJtMiIsImMkMCIsImVxdWFsJDAiLCJiaW5kaW5nc19hdXgiLCJiaW5kaW5ncyIsImF1eF9wcmludCQwIiwicHIiLCJkYXRhJDEiLCJkYXRhJDIiLCJwcmludCQwIiwiZGlmZl93aXRoX2xvZ3MkMCIsIm8xJDEiLCJvMiQxIiwibzEiLCJvMiIsIm8xJDAiLCJvMiQwIiwiZGlmZl9wcmVkX3dpdGhfbG9ncyIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nXyIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIiwicHJval9tYXAiLCJpZGVudGl0eV9lbHQiLCJrZXlfYSIsImRhdGFfYSIsIm1hcF9iIiwia2V5X2IiLCJwcm9qX21hcF9tb25hZGljIiwiaGFuZGxlciIsIm1vbmFkaWNfbWVyZ2UiLCJoYW5kbGVyJDAiLCJwcm9qX3NldCIsInNldF9hIiwicHJval9zZXRfbW9uYWRpYyIsInNldF9iIiwicGFydGl0aW9uX3NldCIsInBhcnRpdGlvbl9zZXRfbW9uYWRpYyIsInByb2oyIiwia2V5X2MiLCJzdWJtYXAiLCJzdWJtYXAkMCIsInByb2oyX21vbmFkaWMiLCJpbnRfY29tcGFyZSIsImludF9wYWlyX2NvbXBhcmUiLCJzdHJpbmdfcGFpcl9jb21wYXJlIiwicGFpcl9lcXVhbCIsImVxYSIsImVxYiIsInliIiwieWEiLCJ4YiIsInhhIiwicHJpbnQkMSIsInByaW50JDIiLCJwcmludCQzIiwidW5zb21lIiwidW5zb21lX29yX3JhaXNlIiwiZXhjZXAiLCJiaW5kIiwiZXEiLCJnZXRfYW5ub3QiLCJhbm5vdCIsImNvcHlfYW5ub3QiLCJtYXBfYW5ub3QiLCJvZl9wb3MiLCJzdGFydF9sb2NhdGlvbiIsImVuZF9sb2NhdGlvbiIsImR1bW15X3Bvc2l0aW9uIiwiZHVtbXkiLCJhbm5vdF93aXRoX2R1bW15IiwiaXNfZHVtbXkiLCJpc19hbm5vdGVkX3dpdGhfZHVtbXkiLCJwcl9mIiwicHJfbCIsInByaW50X2Fubm90ZWQiLCJyZWFkX3Bvc2l0aW9uIiwiY2hyIiwibGluZSIsIndyaXRlX3Bvc2l0aW9uIiwidG9fY29tcGFjdF95b2pzb24iLCJkZWNscyIsIm9mX2NvbXBhY3RfeW9qc29uIiwiZmlsZW5hbWVzIiwiZmlsZSIsIngkMiIsIm9mX2xpbmUiLCJ4JDMiLCJvZl9jaHIiLCJ4JDQiLCJ0b19jaHIiLCJ4JDUiLCJ0b19saW5lIiwieW9qc29uX29mX2Fubm90ZWQiLCJqcCIsImFubm90ZWRfb2ZfeW9qc29uIiwid3JpdGVfcmFuZ2UiLCJzdHJpbmdfb2ZfcmFuZ2UiLCJyZWFkX3JhbmdlIiwicmFuZ2Vfb2Zfc3RyaW5nIiwiaXNfaW5jbHVkZWRfaW4iLCJyYW5nZSIsInN0cmluZ19hbm5vdGVkX3RvX2pzb24iLCJzdHJpbmdfYW5ub3RlZF9vZl9qc29uIiwic3RyaW5nX29wdGlvbl9hbm5vdGVkX3RvX2pzb24iLCJzdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiIsImxpc3RpIiwiZWwiLCJoYXNodGJsIiwidGJsIiwiYm90dG9tIiwibnUiLCJlbXB0eV9zZXQiLCJjb21tYSIsImRvdCIsImNvbXBhY3RfY29tbWEiLCJjb2xvbiIsInNwYWNlIiwiY3V0IiwidW5pdCIsInBhaXIiLCJwcGEiLCJwcGIiLCJvcHRpb24iLCJ3aXRoX3NwYWNlIiwicGxhaW5fYXJyYXkiLCJsaXN0X3RvX3N0cmluZyIsInNldF90b19zdHJpbmciLCJhY2N2YWwiLCJyJDAiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJhY2NfbHJyIiwiYWNjX2wkMSIsImFjY19yJDEiLCJhY2NfciQwIiwicnIiLCJydiIsInJsIiwiYWNjX2wkMCIsInJsciIsInJsdiIsInJsbCIsImFjY19ybGwiLCJ3ZWlnaHQiLCJ3ZWlnaHQkMCIsInJlbW92ZV9taW5fYmluZGluZyIsInQyIiwidDEiLCJzdGF0ZSIsImFpbV9hY2MkMSIsIndyaXRlX3NldmVyaXR5Iiwid3JpdGVfc3RhdHVzIiwid3JpdGVfbWVzc2FnZSIsInRleHQiLCJzZXZlcml0eSIsInJlYWRfbWVzc2FnZSIsInByaW50X21lc3NhZ2UiLCJyYW5nZSQwIiwid3JpdGVfdCIsIndyaXRlX29rIiwid3JpdGVfZXJyb3IiLCJzdGF0dXMiLCJzdGF0dXMkMCIsInN0cmluZ19vZl90IiwicmVhZF90X2NvbnRlbnQiLCJyZWFkX3QiLCJyZWFkX29rIiwicmVhZF9lcnJvciIsImF1eF9yZWFkX3QiLCJjbG9zaW5nIiwicG9zIiwidiQwIiwidF9vZl9zdHJpbmciLCJsaWZ0Iiwib2tfc3RhdHVzIiwiZXJyb3Jfc3RhdHVzIiwib2siLCJvdmVyd3JpdGVfc3RhdHVzIiwic3BlY2lhbF92YWwiLCJpZGVudGl0eSIsIm1heCIsImltbWVkaWF0ZSIsImlzX2lkZW50aXR5IiwiY29tcHV0ZSIsInYkMSIsImZvcmNlIiwiaW1hZ2UiLCJkZWJ1Z19tb2RlIiwibm90X29rIiwidW5zYWZlX2ltcGVyYXRpdmVfYWRkIiwiaW1wZXJhdGl2ZV9hZGQiLCJvcmlnaW4iLCJjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0Iiwic3RvcF9hdCIsInByZSQxIiwic3Vic3QiLCJwcmUiLCJwcmUkMCIsImFwcGx5IiwiY29tcG9zZSIsImV4dGVuc2libGUiLCJpbnZlcnNlIiwic3JjIiwiZHN0IiwicHJpbnRfZnVsbCIsInRvX3lvanNvbiIsIm9mX3lvanNvbiIsIm1hc2siLCJ1bm1hc2siLCJpc19pbmZpbml0ZSIsImZpbmQiLCJjb3B5X3ZlY3RfaW4iLCJjb3B5X2luIiwiZGVjbGFyZV91bmJhbGFuY2VkIiwidXBkYXRlX3N0cnVjdHVyZSIsIm5fbGF5ZXIiLCJ1cGRhdGVfc3RydWN0dXJlX2F1eCIsImZhdGhlciIsInRfbm9kZSIsInRfc3VidHJlZSIsImxheWVyIiwiY3VycmVudF9sYXllciIsImxheWVyX2VuZCIsInVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyIiwidW5iYWxhbmNlZF9ldmVudHMiLCJsYXllcl9lbmQkMCIsImN1cnJlbnRfbGF5ZXIkMCIsInckMCIsInRvdGFsIiwicmVwIiwiciQxIiwibHNvbiIsInJzb24iLCJyJDIiLCJkZWJ1Z19wcmludCIsImludiIsImluZiIsImdyYXBoX3BhZ2UiLCJ0aXRsZSIsInN1YnRpdGxlIiwiZGVwcyIsImhlYWRlciIsImNvcmUiLCJkZXBlbmRlbmN5IiwiYmluX2FsZ19vcF90b19zdHJpbmciLCJiaW5fYWxnX29wX2lzX3ByZWZpeCIsInByaW50X2Jpbl9hbGdfb3AiLCJmeCIsImZ5Iiwib3AiLCJiaW5fYWxnX29wX3RvX2pzb24iLCJiaW5fYWxnX29wX29mX2pzb24iLCJ1bl9hbGdfb3BfdG9fc3RyaW5nIiwicHJpbnRfdW5fYWxnX29wIiwidW5fYWxnX29wX3RvX2pzb24iLCJ1bl9hbGdfb3Bfb2ZfanNvbiIsInN0YXRlX2FsZ19vcF90b19zdHJpbmciLCJwcmludF9zdGF0ZV9hbGdfb3AiLCJzdGF0ZV9hbGdfb3BfdG9fanNvbiIsInN0YXRlX2FsZ19vcF9vZl9qc29uIiwiYmluX2Jvb2xfb3BfdG9fc3RyaW5nIiwicHJpbnRfYmluX2Jvb2xfb3AiLCJiaW5fYm9vbF9vcF90b19qc29uIiwiYmluX2Jvb2xfb3Bfb2ZfanNvbiIsInVuX2Jvb2xfb3BfdG9fc3RyaW5nIiwicHJpbnRfdW5fYm9vbF9vcCIsInVuX2Jvb2xfb3BfdG9fanNvbiIsInVuX2Jvb2xfb3Bfb2ZfanNvbiIsImNvbXBhcmVfb3BfdG9fc3RyaW5nIiwicHJpbnRfY29tcGFyZV9vcCIsImNvbXBhcmVfb3BfdG9fanNvbiIsImNvbXBhcmVfb3Bfb2ZfanNvbiIsInByaW50X3Jldl9kZXAiLCJpZCQwIiwiaWQkMSIsInJldl9kZXBfdG9feW9qc29uIiwicmV2X2RlcF9vZl95b2pzb24iLCJkZXBzZXRfdG9feW9qc29uIiwiZGVwc2V0X29mX3lvanNvbiIsInplcm8iLCJvbmUiLCJjYXN0X2Jpbl9vcCIsIm9wX2YiLCJvcF9pIiwib3BfaTY0IiwieSQxIiwieSQyIiwieSQzIiwieSQ0Iiwib3BfaSQwIiwieSQ1Iiwib3BfaTY0JDAiLCJ5JDYiLCJ5JDciLCJvcF9pNjQkMSIsInkkOCIsIm9wX2k2NCQyIiwiY2FzdF91bl9vcCIsIm9wX2YkMCIsIm9wX2kkMSIsIm9wX2YkMSIsIm9wX2YkMiIsIm4xIiwibjIiLCJpc19ncmVhdGVyIiwiaXNfc21hbGxlciIsImlzX2VxdWFsIiwibXVsdCIsInJlbSIsImludGVybmFsX2RpdiIsInN1Y2MiLCJuZWciLCJ0b19mbG9hdCIsImlzX3plcm8iLCJpc19zdHJpY3RseV9wb3NpdGl2ZSIsInBvc19wb3ciLCJwcmV0dHlfcHJpbnQiLCJwcmludF9vcHRpb24iLCJtYXliZV9pdGVyaSIsIm9mX2Jpbl9hbGdfb3AiLCJvZl91bl9hbGdfb3AiLCJvZl9jb21wYXJlX29wIiwid2FybmluZ19idWZmZXIiLCJmb3JiaWRkZW4iLCJiYWQiLCJjcmVhdGVfZnJvbV9saXN0IiwiY3JlYXRlX25vX2xvYyIsIm5kIiwiZWx0X25hbWUiLCJlbHRfaWQiLCJraW5kIiwic2VwIiwicHAiLCJlbHRfdmFsIiwicmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VyIiwibGlzdCQwIiwiYnVmZmVyIiwibGlzdCQxIiwibGlzdCQyIiwiYnVmZmVyJDAiLCJsYXN0IiwicG9wX2xhc3QiLCJjb25zX29wdGlvbiIsInNtYXJ0X2ZpbHRlciIsInNtYXJ0X21hcCIsInJldl9tYXBpIiwibWFwX29wdGlvbiIsImV4aXN0c191bmlxIiwibWVyZ2VfdW5pcSIsInQyJDAiLCJoMiQwIiwidDEkMCIsImgxJDAiLCJyZXZfbWFwX2FwcGVuZCIsImFjYyQxIiwibWFwX2ZsYXR0ZW4iLCJyZW1vdmVfY29uc2VjdXRpdmVfZG91YmxlIiwicSQxIiwibGFzdCQxIiwibGFzdCQwIiwiZm9sZF9yaWdodF9tYXAiLCJmb2xkX2xlZnQyIiwiY2xlYW4iLCJpbnRfb2ZfaGFzaGVkX2xpc3QiLCJmc3RfZWx0X2lkIiwiZnN0X2xpc3RfaWQiLCJjb25zIiwiY2FjaGUkMCIsImhlYWQiLCJoYXNoX2hlYWQiLCJjYWNoZSQxIiwic3VidGFiIiwic3VidGFiJDAiLCJzdWJ0YWIkMSIsImhhc2gkMCIsImhhc2giLCJjYWNoZSIsImZvcm1hdHRlciIsInByaW50X2NhY2hlIiwib3B0JDAiLCJzaW1wbGlmeSIsImdjZCIsImRpdiIsImJfaW52IiwicHVzaCIsImNyY190YWJsZSIsInN0cmluZyIsInN0ciIsImNyYyIsInRyaXBsZV9vZl9jb2xvciIsImNyZWF0ZV9pbmZpbml0ZSIsInQkMiIsInQkNCIsInQkMyIsIm92ZXJ3cml0dGVuX3ZhbHVlIiwib3ZlcndyaXR0ZW5fdmFsdWUkMCIsImNvbnRlbnRzIiwibnRoIiwib2ZzIiwiY2xlYXIiLCJyZXNldCIsInJlc2l6ZSIsIm1vcmUiLCJuZXdfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJkZWZhdWx0X2FscGhhYmV0IiwidXJpX3NhZmVfYWxwaGFiZXQiLCJwYWRkaW5nIiwib2ZfY2hhciIsImFscGhhYmV0IiwidG9fY2hhciIsImRlY29kZSIsImlucHV0IiwiaW5wdXQkMCIsImxlbmd0aCQwIiwid29yZHMiLCJwYWRkaW5nJDAiLCJ6IiwiZW5jb2RlIiwicGFkIiwicGFkZGluZ19sZW4iLCJwcmludCIsImNvbXBhcmUiLCJ5IiwieCIsInkkMCIsIngkMCIsImMiLCJwcmludF9hZ2VudCIsIndpdGhfaWQiLCJ3aXRoX2xpbmsiLCJub2RlIiwiZiIsImFnIiwiaWQiLCJzaSIsImkiLCJwJDAiLCJwYWNrIiwicCIsImZyZWVfaWQiLCJkYW5nbGluZyIsInR5IiwibCIsIm15c2VsZiIsInZhIiwidmEkMCIsInByaW50X2NjIiwibWl4IiwibGluayIsImFsIiwiYXIiLCJzdG9yZSIsInByaW50X2RvdF9jYyIsIm5iX2NjIiwiaWwiLCJpciIsInYiLCJzIiwibGlua3MiLCJzJDAiLCJhciQwIiwiYWwkMCIsIndyaXRlX3NpdGUiLCJvYiIsIndyaXRlX2NjX3NpdGUiLCJsaW5rc19vZl95b2pzb24iLCJiIiwiZXJyb3JfbXNnIiwicmVhZF9jY19zaXRlIiwibGIiLCJrZXkkMCIsIm4iLCJrZXkiLCJwb3J0X3N0YXRlcyIsInBvcnRfbGlua3MiLCJvdXQiLCJzaXRlX3R5cGUiLCJzaXRlX25hbWUiLCJ3cml0ZV9jY19ub2RlIiwibm9kZV9pZCIsInJlYWRfY2Nfbm9kZSIsIm5vZGVfc2l0ZXMiLCJub2RlX3R5cGUiLCJ3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IiwicmVhZF9jb25uZWN0ZWRfY29tcG9uZW50Iiwic3RyaW5nX29mX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJvcHQiLCJzdGgiLCJsZW4iLCJjb25uZWN0ZWRfY29tcG9uZW50X29mX3N0cmluZyIsImludmVydGVkX2NvdW50ZXJfc3VmZml4IiwiZm9sZCIsIm8iLCJudW1fb2Zfc2l0ZSIsImFnZW50X25hbWUiLCJzaWduYXR1cmUiLCJhZ2VudF9uYW1lJDAiLCJraW5kIiwic2l0ZV9vZl9udW0iLCJhZGRyIiwibnVtX29mX2ludGVybmFsX3N0YXRlIiwic2l0ZV9pZCIsInN0YXRlIiwic2l0ZV9zaWciLCJpbnRlcm5hbF9zdGF0ZV9vZl9zaXRlX2lkIiwidmFsX2lkIiwiY291bnRlcl9vZl9zaXRlX2lkIiwiaGFzX2NvdW50ZXIiLCJwX2lkIiwib2siLCJvayQwIiwiYSIsImFjYyIsIm9uZV90b19qc29uIiwiYzFfb3B0IiwiYzJfb3B0IiwiYzMiLCJvbmVfb2ZfanNvbiIsInNpemUiLCJzaWdzIiwiZ2V0IiwiYWdlbnRfaWQiLCJhcml0eSIsIm1heF9hcml0eSIsImFnZW50X29mX251bSIsIm51bV9vZl9hZ2VudCIsIm5hbWUiLCJpZF9vZl9zaXRlIiwiYWdlbnRfdHkiLCJzaXRlX29mX2lkIiwiaWRfb2ZfaW50ZXJuYWxfc3RhdGUiLCJpbnRlcm5hbF9zdGF0ZV9vZl9pZCIsImlkX3NpdGUiLCJpZF9zdGF0ZSIsImludGVybmFsX3N0YXRlc19udW1iZXIiLCJkZWZhdWx0X2ludGVybmFsX3N0YXRlIiwiYWxsb3dlZF9saW5rIiwiYWcxIiwiczEiLCJhZzIiLCJzMiIsImFnMSQwIiwiczEkMCIsImFnMiQwIiwiczIkMCIsImNyZWF0ZSIsImNvdW50ZXJzX3Blcl9hZ2VudCIsImFnZW50X3NpZ3MiLCJpc19jb3VudGVyX2FnZW50IiwiYWdlbnRfaW5mbyIsInBvcnRzX2lmX2NvdW50ZXJfYWdlbnQiLCJzaXRlX2lzX2NvdW50ZXIiLCJhZ190eSIsImdldF9jb3VudGVyX2FnZW50X2luZm8iLCJjb3VudGVyX2FnZW50X2luZm8iLCJpc19pbnZlcnRlZF9jb3VudGVyIiwiY291bnRlcl9uYW1lIiwicHJpbnRfc2l0ZSIsInByaW50X2ludGVybmFsX3N0YXRlIiwic2l0ZSIsInByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUiLCJwcmludF9jb3VudGVyX2luZm8iLCJpX29wdCIsImpfb3B0IiwiaiIsImkkMCIsImkkMSIsInByaW50X2NvdW50ZXIiLCJwcF9pbnQiLCJuYSIsInRvX2pzb24iLCJvZl9qc29uIiwiYWdlbnRfc2lnbmF0dXJlIiwicG9ydHMiLCJlbXB0eSIsImluY3JlbWVudF9pbl9zbmFwc2hvdCIsInJhdyIsImNidF9hIiwiY2xhc3NpZnkiLCJhZ3MiLCJuYiIsImhzIiwiYXV4X2luY3JlbWVudCIsInQiLCJoIiwiY2J0X3kiLCJoMSIsImJvb2wiLCJkb24iLCJxIiwiYiQwIiwiaV9vayIsImRvbiQxIiwidG9kbyIsImEkMCIsImFncyQwIiwiY291bnRlcl92YWx1ZSIsImNjIiwiY291bnQiLCJzaWQiLCJuaWQiLCJjY190b191c2VyX2NjIiwiZGVidWdfbW9kZSIsImtlZXBfaW52ZXJ0ZWRfY291bnRlcnMiLCJyIiwicG9zIiwiaW5kZXhlcyIsImluZGV4ZXMkMCIsImNjX2xpc3Rfd2l0aG91dF9jb3VudGVycyIsImNjX3dpdGhvdXRfY291bnRlcnMiLCJkbl9pZCIsImRuX2lkJDAiLCJub2RlX3NpdGVzX2FsbCIsImV4cG9ydCQwIiwianNvbl9kaWN0aW9ubmFyeSIsIm1ha2UiLCJzb3J0Iiwic2lncyQwIiwiYWdlbnQiLCJwcmludF9pbnRlcm5hbCIsInByaW50X3Jhd19pbnRlcm5hbCIsInJlbmFtZSIsImluaiIsIm5fdHkiLCJuX2lkIiwiaWQyIiwiaWQxIiwid3JpdGVfanNvbiIsInJlYWRfanNvbiIsInByaW50JDAiLCJsb29waW5nIiwiaW50X2wiLCJtYXJrIiwib2xkIiwidGVzdCIsInJlc2V0IiwiaXRlcmlfcmVzZXQiLCJrIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImNvcHkiLCJncmFwaCIsInRhYmxlcyIsImNjcyIsInN0YXRzIiwiZnJlZV9pZHMiLCJ0b3BfaWQiLCJhZGRfYWdlbnQiLCJhaSIsImlkJDAiLCJuZXdfaWQiLCJuZXdfaWQkMCIsInQkMCIsImgkMCIsImZyZWVfaWQkMCIsIm1pc3NpbmdzIiwiYWRkX2ZyZWUiLCJhZGRfaW50ZXJuYWwiLCJhZGRfbGluayIsIm5vZGUyIiwidHkkMCIsIm5vZGUxIiwiY2FjaGUiLCJjY19pZF9vcCIsIm5leHQkMSIsInRvZG9zIiwic2l0ZSQzIiwibmV4dCIsIm5leHQkMCIsInNpdGUkMSIsInNpdGUkMCIsInNpdGUkMiIsInJlbW92ZV9hZ2VudCIsImlkcyIsImFnJDAiLCJyZW1vdmVfZnJlZSIsImdldF9pbnRlcm5hbCIsImdldF9zaXRlcyIsImFyciIsImdldF9zb3J0IiwicmVtb3ZlX2ludGVybmFsIiwicmVtb3ZlX2xpbmsiLCJvdGhlcl9vcmlnJDEiLCJ0aGlzX29yaWciLCJ0aGlzX2NhY2hlIiwib3RoZXJfY2FjaGUiLCJvbGRfY2NfaWQiLCJpbnNwZWN0X3NpdGUiLCJkc3RfY2FjaGUiLCJkYyIsIm90aGVyX29yaWckMCIsIm90aGVyX2NhY2hlJDEiLCJvdGhlcl9uZXh0JDAiLCJvdGhlcl9vcmlnIiwib3RoZXJfY2FjaGUkMCIsIm90aGVyX25leHQiLCJ0b2RvcyQwIiwidGhpc19uZXh0IiwiaXNfYWdlbnQiLCJpc19hZ2VudF9pZCIsImlzX2ZyZWUiLCJpc19pbnRlcm5hbCIsImxpbmtfZXhpc3RzIiwicyQxIiwiYWckMSIsImV4aXN0c19mcmVzaCIsImxpbmtfZGVzdGluYXRpb24iLCJpdGVyX25laWdoYm9ycyIsImFnX3RhYmxlIiwiYWxsX2FnZW50c193aGVyZSIsImluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCIsImdldF9jb25uZWN0ZWRfY29tcG9uZW50Iiwib25lX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJrbm93biIsIm5vZGUkMCIsImtub3duJDAiLCJrbm93biQxIiwidG9kb3MkMSIsInNpdGVzIiwibm9kZV9pZF9pbl93aXRuZXNzIiwic2l0ZV9zdGF0ZSIsInNwZWNpZXMiLCJyb290Iiwic3BlY2llIiwiYnVpbGRfc25hcHNob3QiLCJjY3MkMSIsIm5vZGUkMSIsImNjcyQwIiwibm9kZSQyIiwiYnVpbGRfdXNlcl9zbmFwc2hvdCIsImRlYnVnX3ByaW50IiwicHJpbnRfc2l0ZXMiLCJpbnQkMCIsInByaW50X3BhdGgiLCJlbXB0eV9wYXRoIiwic2luZ2xldG9uX3BhdGgiLCJuJDAiLCJyZXZfcGF0aCIsImlzX3ZhbGlkX3BhdGgiLCJhcmVfY29ubmVjdGVkIiwibWF4X2Rpc3RhbmNlIiwibm9kZXNfeCIsIm5vZGVzX3kiLCJwcmVwYXJlIiwiZGVwdGgiLCJvdXQkMSIsImlkJDEiLCJhY2MkMSIsInNpdGUkNCIsInBhdGgiLCJwYXRoJDAiLCJvdXQkMCIsImFjYyQwIiwibmV4dCQyIiwib3V0JDIiLCJzdG9wIiwiZCIsInByaW50X2lkIiwicHJpbnRfaWRfc2l0ZSIsInNvdXJjZSIsImZpbmRfdHkiLCJ0eSQxIiwicG9ydF90b195b2pzb24iLCJwb3J0X29mX3lvanNvbiIsInN0ZXBfdG9feW9qc29uIiwic3RlcF9vZl95b2pzb24iLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJleHRlbmQiLCJwb3J0IiwidCQxIiwiY29tcGF0aWJsZV9mcmVzaF9wb2ludCIsImUiLCJzc2l0ZSIsImFycm93Iiwic3R5IiwiaW5qJDAiLCJpbmokMyIsInNzaXRlJDEiLCJzdHkkMSIsInNpZCQxIiwiaWQkMiIsImluaiQxIiwiaW5qJDIiLCJzc2l0ZSQwIiwic3R5JDAiLCJzaWQkMCIsImNvbXBhdGlibGVfcG9pbnQiLCJlJDAiLCJpZCQzIiwidHkkMiIsImlkJDQiLCJzaXRlJDUiLCJ0eSQzIiwiaWQkNSIsInNzaXRlJDIiLCJzaWQkMiIsImluaiQ0Iiwic2l0ZSQ2IiwidHkkNCIsImlkJDYiLCJpc19zdWJuYXZpZ2F0aW9uIiwibmF2JDAiLCJnb2FsIiwibmF2JDEiLCJyZW5hbWVfaWQiLCJpbmoyY2MiLCJpbWciLCJ4JDEiLCJ0JDIiLCJjaGVja19lZGdlIiwiZHN0X2lzX29rYXkiLCJpbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UiLCJkc3QiLCJkc3QkMCIsInJ0eSIsInJ0eSQwIiwicm9vdCQwIiwiaW1wZXJhdGl2ZV9kc3RfaXNfb2theSIsImltcGVyYXRpdmVfZWRnZV9pc192YWxpZCIsImNvbmNyZXRpemVfcG9ydCIsImNvbmNyZXRpemUiLCJuYXYiLCJzdGVwIiwic3QiLCJmcm9tX29yaWdpbmFsX2FzdF95b2pzb25fc3RyIiwiZnJvbV9jbHRlX2VsaW1pbmF0aW9uX3lvanNvbl9zIiwiZnJvbV9zaWdfbmFtZV9zdHIiLCJjb252ZXJ0X3ZhbHVlX3N0ciIsImNvbnZlcnRfZGVsdGFfc3RyIiwiY291bnRlcl9zaWdfbmFtZV9zdHIiLCJjb3VudGVyX3NpZ19taW5fc3RyIiwiY291bnRlcl9zaWdfbWF4X3N0ciIsImNvdW50ZXJfc2lnX3Zpc2libGVfc3RyIiwiY291bnRlcl9zaWdfZGVmYXVsdF9zdHIiLCJhcHBseV9pbnQiLCJhcHBseV9vcmlnaW5fdG9fdmFsdWUiLCJhcHBseV9vcmlnaW5fdG9fZGVsdGEiLCJyZW9yZGVyX2JvdW5kcyIsInByaW50X2JvdW5kIiwid2hlcmUiLCJzaWduIiwicHJpbnRfbG93ZXJfYm91bmQiLCJwcmludF91cHBlcl9ib3VuZCIsInByaW50X2dlbiIsIm9yaWdpbmFsX25hbWUiLCJjb252ZXJ0IiwicHJpbnRfc2lnX3Zpc2libGUiLCJwcmludF9jb3VudGVyX3NpZyIsImNvdW50ZXJzX2luZm8iLCJwcmludF9rYXBwYSIsIm5vQ291bnRlcnMiLCJpbnRmIiwiY291bnRlcl9zaWdfb3B0IiwiY291bnRlcl9zaWciLCJpbnRfb3B0X2Fubm90ZWRfb3B0X3RvX3lvanNvbiIsImZpbGVuYW1lcyIsImludF9vcHRfYW5ub3RlZF9vcHRfb2ZfeW9qc29uIiwidHJhbnNsYXRlX2ludF90b195b2pzb24iLCJ0cmFuc2xhdGVfaW50X29mX3lvanNvbiIsInRyYW5zbGF0ZV9pbnRfanNvbiIsIm9yaWdpbiIsImNvbnZlcnNpb25faW5mbyIsImpzb24iLCJsJDAiLCJjb3VudGVyX3NpZ19uYW1lIiwiY291bnRlcl9zaWdfbWluIiwiY291bnRlcl9zaWdfbWF4Iiwib3JpZ2luX2pzb24iLCJjb252ZXJzaW9uX2luZm9fanNvbiIsImNvdW50ZXJfc2lnX3Zpc2libGUiLCJmcm9tX3NpZ19uYW1lIiwiY29udmVydF92YWx1ZSIsImNvbnZlcnRfZGVsdGEiLCJjb3VudGVyX3NpZ19kZWZhdWx0IiwicmFpc2VfZXJyb3IiLCJleGNlcHQkMCIsImV4Y2VwdCIsImV4Y2VwdCQxIiwiZ2V0X2NvdW50ZXJfc2lnIiwiZXJyb3IiLCJnZXRfY29udmVyc2lvbl9pbmZvIiwiY291bnRlcl9jb252ZXJzaW9uIiwiY29weV9hZ2VudCIsImFnZW50IiwiY3JlYXRlIiwibiIsImkiLCJmaW5kX2F1eCIsImEiLCJhaSIsInJvb3QiLCJmaW5kIiwiaCIsIngiLCJjb21iaW5lX3JhbmtzIiwiYnkiLCJpeSIsImJ4IiwiaXgiLCJieSQwIiwidW5pb24iLCJ5Iiwicm9vdF94Iiwicm9vdF95IiwicmFua194IiwicmFua195IiwidW5pb25fZmluZF9jb3VudGVycyIsInNpZ3MiLCJtaXgiLCJ0Iiwic2lncyQwIiwiYWciLCJhZnRlciIsImJlZm9yZSIsImIiLCJsbmtfYiIsImxua19hIiwicyIsInByaW50Iiwibm9Db3VudGVycyIsImNyZWF0ZWQiLCJpbml0aWFsX2NvbW1hIiwiY291bnRlcnNfaW5mbyIsImYiLCJjb3VudGVyX2FnZW50cyIsInNvbWUiLCJhZ190eSIsImFnX3R5JDAiLCJpbnRzIiwicG9ydHMiLCJlbXB0eSIsIm1pbl92YWx1ZSIsImNvdW50ZXJzX2luZm8kMCIsImNvdW50ZXJfc2lnIiwiaSQxIiwibWluX3ZhbHVlJDAiLCJpc19jb3VudGVyIiwiY291bnRlciIsIm0iLCJpJDIiLCJpJDAiLCJhZ2VudF90b19qc29uIiwiYWNjIiwiYWdlbnRfb2ZfanNvbiIsInAiLCJ0b19qc29uIiwib2ZfanNvbiIsImwiLCJlX3RvX3lvanNvbiIsImZpbGVuYW1lcyIsImZfbWl4IiwiZl9pZCIsIm9wIiwiYSQwIiwib3AkMCIsIm9wJDEiLCJjYyIsIm5vIiwieWVzIiwiY29uZCIsImJvb2xfdG9feW9qc29uIiwidG9rZW4iLCJleHByIiwibWl4dHVyZSIsImV4cHIkMCIsImIkMCIsImEkMSIsImVfb2ZfeW9qc29uIiwiYm9vbF9vZl95b2pzb24iLCJ0b2siLCJwcl9taXgiLCJwcl90b2siLCJwcl92YXIiLCJsYWIiLCJhc3QiLCJ0ayIsInByaW50X2Jvb2wiLCJjb25zdCQwIiwiaW50JDAiLCJmbG9hdCQwIiwiYWRkIiwiZTEiLCJlMiIsIm1pbnVzIiwibXVsdCIsImRpdiIsInBvdyIsImxvZyIsImxuIiwic2luIiwiY29zIiwidW1pbnVzIiwic3FydCIsImFkZF9kZXAiLCJkIiwieCQwIiwib3V0IiwidG9rc19kIiwiaW5fZSIsImluX3QiLCJqIiwiYWRkX2RlcF9ib29sIiwiaGFzX21peCQwIiwidmFyX2RlY2xzIiwiaGFzX21peCIsImJvb2xfaGFzX21peCQwIiwiYm9vbF9oYXNfbWl4IiwiaXNfY29uc3RhbnQiLCJjIiwiYm9vbF9pc19jb25zdGFudCIsImlzX3RpbWVfaG9tb2dlbmVvdXMiLCJib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMiLCJhdXhfZXh0cmFjdF9jYyIsImFjYyQwIiwiZXh0cmFjdF9jY19ib29sIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYiIsInNldHVwX2FsZ192YXJzX3Jldl9kZXAiLCJ0b2tzIiwidmFycyIsInByb3BhZ2F0ZV9jb25zdGFudCIsIndhcm5pbmciLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJ1cGRhdGVkX3ZhcnMiLCJwb3MiLCJjMSIsImMyIiwicG9zJDAiLCJhJDIiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsImNvbmQkMCIsInByb3BhZ2F0ZV9jb25zdGFudF9ib29sIiwicG9zJDUiLCJ0JDAiLCJhJDMiLCJhJDQiLCJwb3MkNiIsImEkNSIsImEkNiIsImIkMSIsImIkMiIsIm4xIiwibjIiLCJoYXNfcHJvZ3Jlc3NfZGVwIiwib25seV90aW1lIiwidmFyc19kZXBzIiwiZGVwcyIsImF1eCIsImsiLCJib29sX2hhc19wcm9ncmVzc19kZXAiLCJpc19lcXVhbGl0eV90ZXN0X3RpbWUiLCJtYXBfb25fbWl4dHVyZSIsIm8iLCJwJDAiLCJ4JDEiLCJvJDAiLCJwJDEiLCJwJDIiLCJ5JDAiLCJ4JDIiLCJtYXBfYm9vbF9vbl9taXh0dXJlIiwicCQzIiwibyQxIiwiZm9sZF9vbl9taXh0dXJlJDAiLCJmb2xkX29uX21peHR1cmUiLCJ2IiwidSIsImZvbGRfYm9vbF9vbl9taXh0dXJlJDAiLCJmb2xkX2Jvb2xfb25fbWl4dHVyZSIsImVxdWFsIiwiYTIiLCJhMSIsIm9wYSIsImIyIiwiYjEiLCJvcGIiLCJhMSQwIiwib3BhJDAiLCJiMSQwIiwib3BiJDAiLCJvcGEkMSIsIm9wYiQxIiwiaWQxIiwiaWQyIiwibWl4MSIsIm1peDIiLCJpZDEkMCIsImlkMiQwIiwiYTIkMCIsImExJDEiLCJjb25kYSIsImIyJDAiLCJiMSQxIiwiY29uZGIiLCJlcXVhbF9ib29sIiwidG9feW9qc29uIiwib2ZfeW9qc29uIiwiYXJyYXlfb2ZfanNvbiIsImxzIiwiYXJyYXkxIiwiYXJyYXkyIiwicHJpbnRfa2FwcGEiLCJpbnRmIiwiaXMiLCJzZCIsImFkIiwicHJpbnRfY3ljbGVzIiwiZm9ybSIsImNvbnRhY3RfbWFwIiwiZGZzIiwicGF0aCIsImxhc3RfcyIsImtub3duIiwia25vd24kMCIsInMkMCIsInR5IiwiYWNjJDEiLCJhZyQwIiwid3JpdGVfc2hhcmluZ19sZXZlbCIsIm9iIiwic3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwiLCJvcHQiLCJyZWFkX3NoYXJpbmdfbGV2ZWwiLCJsYiIsInNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIiwiZGVidWdfcHJpbnRfaWQiLCJmbXQiLCJpZCIsInNpemVfb2ZfY2MiLCJjb21wYXJlX2Nhbm9uaWNhbHMiLCJjYyQwIiwiaXNfZXF1YWxfY2Fub25pY2FscyIsImNvYXJzZV9oYXNoIiwicGx1c19pbnRlcm5hbCIsImUiLCJuJDAiLCJleHRyYSIsIm5vZGVfc2hhcGUiLCJpZF90b195b2pzb24iLCJpZF9vZl95b2pzb24iLCJkdW1teSIsImVtcHR5X2NjIiwibmJ0IiwicmF3X2ZpbmRfdHkiLCJ0eXMiLCJmaW5kX3R5IiwiYWRkX29yaWdpbiIsInJlY29uc3RydWN0aW9uX25hdmlnYXRpb24iLCJhbHJlYWR5X3NwZWNpZmllZCIsInJhd19maW5kX3Jvb3QiLCJub2Rlc19ieV90eXBlIiwidHkkMCIsImZpbmRfcm9vdCIsIndlaWdodCIsImwkMCIsImQkMCIsImwkMSIsImRvdWJsZSQwIiwibGlua3MiLCJhcmVfY29tcGF0aWJsZSIsImRlYnVnX21vZGUiLCJwb3NzaWJpbGl0aWVzIiwic3RyaWN0Iiwicm9vdDEiLCJjYzEiLCJyb290MiIsImNjMiIsInJlbmFtZSQxIiwiYXRfbGVhc3Rfb25lX2VkZ2UkMSIsImF0X2xlYXN0X29uZV9lZGdlIiwicmVuYW1lIiwidG9kb3MiLCJwYWlyIiwibHkiLCJseCIsInJlbiIsInRvZG8iLCJvbmVfZWRnZSIsIm9uZV9lZGdlJDEiLCJzMSIsInMyIiwiciIsIm9uZV9lZGdlJDAiLCJjb25mbGljdCIsInJlbmFtZSQwIiwidG9kb3MkMCIsImF0X2xlYXN0X29uZV9lZGdlJDAiLCJhZ3MiLCJoMSIsImJvb2wiLCJhZ3MkMCIsImF1dG9tb3JwaGlzbXMiLCJwb3RlbnRpYWxfcGFpcmluZyIsImxhIiwibWF0Y2hpbmdzIiwicmF3X3RvX25hdmlnYXRpb24iLCJmdWxsIiwibm9kZXMiLCJkb24iLCJmaXJzdCIsImRvbiQxIiwiaCQwIiwicmUiLCJhbnMiLCJhbnMkMCIsImZpcnN0JDAiLCJvdXQkMCIsImluZnMiLCJjYW5kX25vZGVzIiwibG5rMSIsImxuazEkMCIsIml5JDAiLCJpeSQ2IiwiaXkkMiIsIml5JDUiLCJpeSQzIiwiaXkkNCIsIml5JDEiLCJvdXRsIiwiY2FuZF9ub2RlcyQwIiwibm9kZXNfYnlfdHlwZSQwIiwicmVmX25idCIsInJlZl9uYnQkMCIsInIkMiIsImlkcyIsInEiLCJxJDAiLCJyJDAiLCJsc3QiLCJmc3RzIiwiciQxIiwicmUkMCIsInJlX2ltZyIsInJlX2ltZyQwIiwicmUkMSIsInNpdGVzIiwic2l0ZXMkMCIsImNvdW50ZXJfdmFsdWUiLCJzaWQkMCIsIm5pZCQwIiwiY291bnQiLCJzaWQiLCJuaWQiLCJvdGhlciIsImVsIiwiZGkiLCJkbiIsImNvdW50JDAiLCJjb3VudGVyX3ZhbHVlX2NjIiwiZXh0cmVtaXR5IiwiZG90Y29tbWEiLCJkb3RuZXQiLCJwcmludF9jYyIsImNjX2lkIiwid2l0aF9pZCIsInN0aCIsInN0aCQwIiwiZnVsbF9zcGVjaWVzIiwiY2NfaWQkMCIsIm5laWdoIiwibGlua19pZHMiLCJub3RfZW1wdHkiLCJhZ194IiwiYWdfdCIsImFnX2kiLCJzdCIsImZyZWUiLCJkc3RfcCIsImRzdF9hIiwiZHN0X3R5Iiwib3V0JDEiLCJzaWdzJDEiLCJraW5kIiwicHJpbnRfY2NfYXNfaWQiLCJub3RfZW1wdHkkMCIsIm1lcmdlX2NvbXBhdGlibGUiLCJyZXNlcnZlZF9pZHMiLCJmcmVlX2lkIiwiaW5qMV90b18yIiwiaW1nIiwiYXZhaWxhYmxlX2lkcyIsInVzZWRfaWRzIiwiYXZhaWxhYmxlX2luX2NjMSIsImZyZWVfaWRfZm9yX2NjMSIsImdldF9jYzIiLCJwYWNrIiwidG9kb3MyIiwidG9kb3MxIiwiaW5qMiIsImluajEiLCJmcmVlX2lkJDAiLCJmcmVlX2lkJDEiLCJnZXRfY2MxIiwibm9kZXNpIiwibm9kZXNvIiwibm9kZXNqIiwibm9kZXNvJDAiLCJub2Rlc2okMCIsInN0aSQxIiwibiQxIiwic3RqJDMiLCJzdG8kMCIsIm4kMiIsInN0aiIsInN0aSIsInN0aiQyIiwic3RvIiwic3RqJDAiLCJzdGkkMCIsInN0aiQxIiwiaW5qMiQwIiwicGFjayQwIiwidG9kb3MyJDAiLCJqJDAiLCJub2Rlc2kkMCIsImluajIkMSIsInBhY2skMSIsImNvbnRlbnQiLCJyb290cyIsInNvbnMiLCJzaWduYXR1cmVzIiwiZW52IiwicHJpbnQkMCIsInBwX3BvaW50IiwicF9pZCIsImdldF9zaW5nbGVfYWdlbnQiLCJnZXQkMCIsInRvX25hdmlnYXRpb24iLCJ0cmFuc2l0aW9uX3RvX3lvanNvbiIsInRyYW5zaXRpb25fb2ZfeW9qc29uIiwiZHN0Iiwic29ydHMiLCJzaWdfZGVjbCIsImwkMiIsInMkMSIsImwkMyIsIm5ld19vYnNfbWFwIiwiZ2V0X2VsZW1lbnRhcnkiLCJkb21haW4iLCJub2RlIiwiYXJyb3ciLCJzYSIsInRhaWwiLCJpbmoiLCJwcmludCQxIiwiZW1iZWRkaW5nc190b19mdWxseV9zcGVjaWZpZWQiLCJhX2lkIiwicHJlZW52IiwiZnJlc2giLCJpZF9ieV90eXBlIiwibmJfaWQiLCJpbnNlcnRfbmF2aWdhdGlvbiIsImRzdF9pZCIsImNjX2QiLCJpbmoyZHN0IiwiaW5qMmRzdCQwIiwicF9pZCQwIiwicG9pbnQiLCJ0JDMiLCJuYXYkMCIsInNpIiwic2kkMCIsInQkMSIsInNpJDEiLCJhZyQxIiwibiQzIiwic2lsIiwiYWdsIiwiaW5qJDAiLCJ0JDIiLCJuJDQiLCJzdXAiLCJpbmpfZTJzdXAiLCJpbmpfc3VwMmRzdCIsImlual9kX3RvX28iLCJjY19vIiwiaW50ZXIiLCJkaXNjIiwibm9kZXNkIiwiZGlzYyQwIiwibm9kZXNvJDEiLCJkcyIsImRsIiwib3MiLCJvbCIsImxpIiwiZGlzIiwiaW50JDEiLCJpbnRlcm4kMSIsImFsbF9saW5rcyIsImRpc2NvdmVyZWQkMiIsImRpc2NvdmVyZWQiLCJuZXh0X3JvdW5kIiwicmVjb2duIiwiaW50ZXJuIiwiaW50ZXJuJDAiLCJyZWNvZ24kMCIsInJlY29nbiQxIiwibmF2IiwiaW5qX3BfMmRzdCIsInBfaWQkMSIsImluajJkc3QkMSIsImFkZF9jYyIsInRvcGxldmVsIiwib3JpZ2luIiwiZWxlbWVudCIsInciLCJoYXNoIiwicnR5JDAiLCJyaWQkMCIsInJvb3RzJDAiLCJydHkiLCJyaWQiLCJlbnZfdyIsIm91dF9pZCIsImVudl93X2giLCJvZl9lbnYiLCJhY2NfdyIsImRlYnVnX3ByaW50IiwiY2hlY2tfZGFuZ2xpbmciLCJ3ayIsImJlZ2luX25ldyIsImZyZXNoX2NjX2lkIiwicmF3X2ZpbmlzaF9uZXciLCJjY19jYW5kaWRhdGUiLCJmaW5pc2hfbmV3IiwibmV3X2xpbmsiLCJ4X24iLCJ5X24iLCJzdHkiLCJzdHgiLCJuZXdfZnJlZSIsIm5ld19pbnRlcm5hbF9zdGF0ZSIsInZhIiwibmV3X25vZGUiLCJ0eXBlX2lkIiwiYXJpdHkiLCJub2RlJDAiLCJmb2xkX2J5X3R5cGUiLCJhZ2VudF90eXBlIiwibGlzdF9wb3MiLCJmb2xkIiwiZmluYWxpemUiLCJzaGFyaW5nIiwiZW52JDAiLCJ3JDAiLCJ3JDEiLCJ3JDIiLCJ3JDMiLCJ3JDQiLCJ3JDUiLCJkb21haW4kMSIsImxldmVsJDQiLCJhY2MkMyIsImxldmVsJDEiLCJkb21haW4kMCIsImxpc3QiLCJhY2MkMiIsInRoaXMkMCIsImxldmVsIiwidGhpcyQxIiwicmVuYW1pbmciLCJhY2NuIiwibm9kZXMxIiwibm9kZXMyIiwiaTIiLCJsMiIsImkxIiwibDEiLCJpbWFnZSIsIm5ld3MiLCJtaWQiLCJpZCQwIiwiaWQkMSIsImxldmVsJDIiLCJsZXZlbCQzIiwiY29tcGxldGVfZG9tYWluIiwiZG9tYWluJDIiLCJzaW5nbGVzIiwiZWxlbWVudGFyaWVzIiwic3RlcCIsImFyciIsInR5MSIsInNhMSIsInMyJDAiLCJ0eTIiLCJzYTIiLCJkb21haW5fbGV2ZWwiLCJhY2NfbGV2ZWwiLCJsbCIsImFjY2wiLCJpbmpzIiwiaW5qX2VfeCIsInN0YXRfbmF2X3N0ZXBzIiwibGV2ZWwwIiwic2luZ2xlX2FnZW50X3BvaW50cyIsIm1lcmdlX29uX2luZiIsImcxIiwiZzIiLCJtX2xpc3QiLCJwYWlyaW5nIiwibSQwIiwicHVzaG91dCIsImxlbmd0aCIsImNvIiwiY28kMCIsIm5tIiwiY2NpZCIsInJlY29uc3RydWN0X3JlbmFtaW5nIiwiZ3JhcGgiLCJyaWRzIiwiaW5qZWN0aXZlIiwicmVjb25zdHJ1Y3QiLCJpc19yb290X29mIiwicm9vdCQwIiwicm9vdHNfb2YiLCJnZXQiLCJlbGVtZW50c193aXRoX3R5cGVzIiwiY2NzIiwibWFwIiwiY29tcGFyZSIsImVtcHR5X2NhY2hlIiwiZnJvbV9lZGdlIiwic2l0ZSIsImNhY2hlIiwiY2FjaGUkMCIsInJldl9kZXBzIiwib2JzIiwicmVtYWlucyIsImlual9wb2ludDJncmFwaCIsInBpZCIsImlual9wb2ludDJncmFwaCQwIiwicGlkJDAiLCJzb24iLCJjYSIsImNhJDAiLCJuZXh0IiwiY2FjaGUkMSIsInJlbWFpbnMkMCIsIm9ic2VydmFibGVzX2Zyb21fYWdlbnQiLCJyZGVwcyIsIm9ic2VydmFibGVzX2Zyb21fZnJlZSIsIm9ic2VydmFibGVzX2Zyb21faW50ZXJuYWwiLCJvYnNlcnZhYmxlc19mcm9tX2xpbmsiLCJzaXRlJDAiLCJwcmludF9zaXRlIiwicGxhY2UiLCJwcmludF9pbnRlcm5hbCIsImdldF90eXBlIiwiZ2V0X2lkIiwiaXNfZnJlc2giLCJjb25jcmV0aXplIiwiaW5qX2ZyZXNoIiwiaW5qX25vZGVzIiwiZW1wdHlfZXZlbnQiLCJqc29uX2RpY3Rpb25uYXJ5IiwiYWN0aW9uIiwid2VpZ2h0X3JldmVyc2UiLCJzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0Iiwic29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdF9yZXZlIiwic29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdCIsInNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3RfcmV2ZSIsImNvbmNyZXRpemVfdGVzdCIsImluajJncmFwaCIsInBsIiwicGwkMCIsInBsJDEiLCJwbCQyIiwicyQyIiwicGwkMyIsInMkMyIsInBsJDQiLCJzJDQiLCJwbCQ1IiwiY29uY3JldGl6ZV9hY3Rpb24iLCJwbCQ2IiwidHJ5X2NvbmNyZXRpemVfYWN0aW9uIiwiYWN0aW9ucyIsImNvbmNyZXRpemVfZXZlbnQiLCJidCIsIm1hcF90ZXN0IiwibWFwX2FjdGlvbiIsIm1hdGNoX3Rlc3RzIiwiYiQzIiwiYyQwIiwibWF0Y2hfYWN0aW9ucyIsImJscyIsImFscyIsIm9rIiwiZ2V0X2lkcyIsIm1hdGNoX3F1YXJrcyIsImFfcXVhcmtzIiwiY19xdWFya3MiLCJmbWF0Y2giLCJhX3F1YXJrcyQwIiwiY19xdWFya3MkMCIsImFfcXVhcmtzJDEiLCJhcSIsImFxJDAiLCJjcSIsImNfcXVhcmtzJDEiLCJjcXMiLCJtYXRjaGluZ19hYnN0cmFjdF9jb25jcmV0ZSIsImFlIiwiY2UiLCJhZV90ZXN0cyIsImNlX3Rlc3RzIiwiYWJzdHJhY3RfaWRzIiwiY29uY3JldGVfaWRzIiwicGFydGl0aW9uIiwiZm1hcCIsIm1hdGNoaW5nIiwidGVzdHMiLCJjYWN0aW9ucyQwIiwidGwiLCJjaWQiLCJjaWQkMCIsInRlc3QiLCJjdGVzdHMiLCJjaWQkMSIsImFjdCIsImNhY3Rpb25zIiwic3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IiwibmEiLCJhZ2VudCQwIiwic3Vic3RfbWFwX3NpdGUiLCJzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCIsImludGVybmFsX3N0YXRlIiwic2l0ZSQxIiwic2l0ZSQyIiwic2l0ZSQzIiwic2l0ZSQ0IiwiYmluZGluZ190eXBlIiwic2l0ZSQ1Iiwic2l0ZSQ2Iiwic2l0ZTIiLCJzaXRlMSIsInNpdGUxJDAiLCJzaXRlMiQwIiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3RlIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCIsInJlbmFtZV9hYnN0cmFjdF90ZXN0Iiwic3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24iLCJmJDAiLCJzMSQwIiwiczIkMSIsInMxJDEiLCJzMSQyIiwiczIkMiIsImFnZW50JDEiLCJhZ2VudCQyIiwic3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hYyIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiIsInJlbmFtZV9hYnN0cmFjdF9hY3Rpb24iLCJzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QiLCJic3RhdGUiLCJic3RhdGUkMCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9zaSIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZSIsInJlbmFtZV9hYnN0cmFjdF9zaWRlX2VmZmVjdCIsInN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldiIsInN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZSIsImYkMSIsImYkMiIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IiwicmVuYW1lX2Fic3RyYWN0X2V2ZW50IiwicHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSIsInByaW50X2NvbmNyZXRlX3Rlc3QiLCJwcmludF9jb25jcmV0ZV9hY3Rpb24iLCJwcmludF9jb25jcmV0ZV9iaW5kaW5nX3N0YXRlIiwiYWdfaWQiLCJzaWdzJDIiLCJzaWdzJDMiLCJ3cml0ZV9iaW5kaW5nX3R5cGUiLCJyZWFkX2JpbmRpbmdfdHlwZSIsImJpbmRpbmdfdHlwZV90b19qc29uIiwid3JpdGVfcXVhcmsiLCJyZWFkX3F1YXJrIiwicXVhcmtfdG9fanNvbiIsInF1YXJrX29mX2pzb24iLCJ3cml0ZV90ZXN0IiwicmVhZF90ZXN0IiwiYmkiLCJ0ZXN0X3RvX2pzb24iLCJ0ZXN0X29mX2pzb24iLCJ3cml0ZV9hY3Rpb24iLCJpbmZvIiwicmVhZF9hY3Rpb24iLCJhY3Rpb25fdG9fanNvbiIsImFjdGlvbl9vZl9qc29uIiwid3JpdGVfZXZlbnQiLCJiZiIsInJlYWRfZXZlbnQiLCJzaWRlX2VmZmVjdHNfc3JjIiwic2lkZV9lZmZlY3RzX2RzdCIsImNvbm5lY3Rpdml0eV90ZXN0cyIsImV2ZW50X3RvX2pzb24iLCJjY3QiLCJldmVudF9vZl9qc29uIiwiY190Iiwic19lX2RzdCIsInNfZV9zcmMiLCJjY2wiLCJwMiIsInAxIiwicDEkMCIsInAyJDAiLCJwJDQiLCJwJDUiLCJwJDYiLCJwJDciLCJwJDgiLCJuJDUiLCJtYXBfZm9sZF9hZ2VudCIsImFjYyQ0IiwiYWNjJDUiLCJhJDciLCJhY2MkNiIsImEkOCIsIm1hcF9hZ2VudCIsImZvbGRfYWdlbnQiLCJzJDUiLCJzJDYiLCJhJDkiLCJnZXRfbmVnYXRpdmVfcGFydCIsImNyZWF0ZWRfYWdlbnRzIiwibG5rX2RzdCIsImFnZW50c19jcmVhdGVkX2J5X2FjdGlvbiIsIm5lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hYyIsInBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hYyIsInNpZGVfZWZmZWN0X2RzdHMiLCJyZW0iLCJyZXYiLCJleHRyYWN0X2NjX2lkcyIsImV4dHJhY3RfYWJzdHJhY3RfZXZlbnQiLCJhbGdfZXhwcl90b195b2pzb24iLCJhbGdfZXhwcl9vZl95b2pzb24iLCJydWxlX3RvX3lvanNvbiIsInJ1bGVfb2ZfeW9qc29uIiwiZnVsbHlfc3BlY2lmaWVkX3BhdHRlcm5fdG9fcG9zIiwiZyIsImVtYiIsImckMCIsImVtYiQwIiwidHIiLCJwcmludF9leHByX3RvX3lvanNvbiIsImZfdmFyIiwicHJpbnRfZXhwcl9vZl95b2pzb24iLCJtYXBfZXhwcl9wcmludCIsImZvbGRfZXhwcl9wcmludCIsImRpbl9raW5kX3RvX3lvanNvbiIsImRpbl9raW5kX29mX3lvanNvbiIsIndyaXRlX2Rpbl9raW5kIiwic3RyaW5nX29mX2Rpbl9raW5kIiwibGVuIiwicmVhZF9kaW5fa2luZCIsImRpbl9raW5kX29mX3N0cmluZyIsInByaW50X3RfZXhwcl90b195b2pzb24iLCJwcmludF90X2V4cHJfb2ZfeW9qc29uIiwibW9kaWZpY2F0aW9uX3RvX3lvanNvbiIsInJhdyIsIm5hbWUiLCJpZHMkMCIsIm5hbWUkMCIsImYkMyIsInRlc3RzJDAiLCJpZHMkMSIsImYkNCIsImYkNSIsIm1vZGlmaWNhdGlvbl9vZl95b2pzb24iLCJyYXckMCIsImJvb2xfZXhwcl90b195b2pzb24iLCJib29sX2V4cHJfb2ZfeW9qc29uIiwicGVydHVyYmF0aW9uX3RvX3lvanNvbiIsInBlcnR1cmJhdGlvbl9vZl95b2pzb24iLCJleGlzdHNfbW9kaWZpY2F0aW9uIiwiY2hlY2siLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2UiLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3AiLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX20iLCJlJDAiLCJmbiIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbSQwIiwibWFwX2V4cHJfcnVsZSIsImZvbGRfZXhwcl9ydWxlIiwibWFwX2V4cHJfcGVydHVyYmF0aW9uIiwiZl9hbGciLCJmX2Jvb2wiLCJmb2xkX2V4cHJfcGVydHVyYmF0aW9uIiwicHJpbnRfbGluayIsInByX3BvcnQiLCJwcl90eXBlIiwicHJfYW5ub3QiLCJsaW5rX3RvX2pzb24iLCJwb3J0X3RvX2pzb24iLCJ0eXBlX3RvX2pzb24iLCJhbm5vdF90b19qc29uIiwibGlua19vZl9qc29uIiwicG9ydF9vZl9qc29uIiwidHlwZV9vZl9qc29uIiwiYW5ub3RlZF9vZl9qc29uIiwicHJpbnRfbGlua19hbm5vdCIsImx0eXBlcyIsInJ1bGVfaW50ZXJuYWxfb2ZfanNvbiIsInByaW50X2NvdW50ZXJfdGVzdCIsImNvbnZlcnQiLCJwcmludF9ydWxlX21peHR1cmUiLCJjcmVhdGVkX2NvdW50ZXJzIiwic2hvd19lcmFzZWQiLCJzaG93X2VyYXNlZCQwIiwiY291bnRlcnMiLCJzd2l0Y2gkMCIsImlzX2NvdW50ZXIkMCIsImVxIiwiZGVsdGEiLCJtc2ciLCJwcmludF9yYXRlcyIsIm1heF9kaXN0IiwicmEiLCJtZCIsInByaW50X3J1bGUiLCJuYiIsImx0eXBlcyQwIiwicnVsZV9taXh0dXJlX3RvX2pzb24iLCJydWxlX21peHR1cmVfb2ZfanNvbiIsImxhbGdfZXhwcl90b19qc29uIiwibGFsZ19leHByX29mX2pzb24iLCJydWxlX3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJyYWlzZV9pZl9tb2RpZmljYXRpb24iLCJyYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyIsInJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIiwic3RhdHVzIiwic2lkZSIsImFnZW50X25hbWUiLCJyYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXQiLCJyYWlzZV9jb3VudGVyX21pc3VzZWQiLCJyYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSIsInJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQiLCJjb3B5X3J1bGVfYWdlbnQiLCJhZ2VudF90b19lcmFzZWQiLCJyYV9wb3J0cyIsInJhX2ludHMiLCJ0b19lcmFzZWQiLCJ0b19tYWludGFpbmVkIiwidG9fcmF3X21peHR1cmUiLCJpbnRlcm5hbHMiLCJwb3J0X25hbWUiLCJtYXhfbGlua19pZCIsIm1heF9zIiwibWF4X2xpbmtfaWRfc2l0ZXMiLCJtYXhfaWQiLCJsaW5rX29jY3VyZW5jZV9mYWlsdXJlIiwia2V5IiwicG9ydHNfZnJvbV9jb250YWN0X21hcCIsInR5X2lkIiwiYWRkX29uZV9pbXBsaWNpdF9pbmZvIiwibGluayIsInByZXZzIiwiZnJlc2hfb25seV9hY2MiLCJwX3N3aXRjaCIsImRzdF9pbmZvIiwiYWdfdGFpbCIsIm91dF90YWlsIiwicG9ydCIsInBvcnRzJDAiLCJzdyIsInRvZG8kMCIsInBvcnRzJDEiLCJpc19saW5rZWRfb25fcG9ydCIsIm1lIiwiaXNfbGlua2VkX29uIiwiZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24iLCJ0cmFuc2YiLCJsaW5rc190cmFuc2YiLCJjYW5kIiwiYWRkZWQiLCJyZW1vdmVkIiwibGlua3NfdHJhbnNmJDAiLCJsaW5rc190cmFuc2YkMSIsImRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiIsImFkZF9pbnN0YW50aWF0aW9uX2ZyZWUiLCJhZGRfc2lkZV9zaXRlIiwic2lkZV9zaXRlcyIsImFkZF9mcmVlZF9zaWRlX2VmZmVjdCIsInNpZGVfZWZmZWN0cyIsImFkZF9hZ2VudHNfaW5fY2MiLCJyZWdpc3RlcmVkX2xpbmtzIiwiaW5zdGFudGlhdGlvbnMiLCJhZ19sIiwid2skMCIsInRyYW5zZiQwIiwiaGFuZGxlX3BvcnRzIiwicl9sIiwiY19sIiwibF90Iiwic2l0ZV9pZCQ0Iiwicl9sJDAiLCJsaW5rcyQyIiwibF90JDAiLCJzaXRlX2lkJDUiLCJpc19lcmFzZWQiLCJyZWZfcG9ydHMiLCJvX2NjX3Rlc3RzIiwidGhpc19jY190ZXN0cyIsInNpZGVfZWZmZWN0c19kc3QkMSIsInNpZGVfZWZmZWN0c19zcmMkMSIsImFjdGlvbnMkMyIsInRlc3RzJDIiLCJzaXRlX2lkJDIiLCJpbnN0YW50aWF0aW9ucyQwIiwiYWN0aW9ucyQwIiwibGlua3MkMCIsInNpZGVfZWZmZWN0c19kc3QkMCIsInNpZGVfZWZmZWN0c19zcmMkMCIsImFjdGlvbnMkMiIsInRlc3RzJDEiLCJzaWRlX2VmZmVjdHMkMSIsImFjdGlvbnMkMSIsInNpdGVfaWQkMyIsInNpZGVfZWZmZWN0cyQyIiwic2l0ZV9pZCQxIiwic2l0ZV9pZCIsInNpdGVfaWQkMCIsInNpZGVfZWZmZWN0cyQwIiwid2skMSIsImokMSIsImokMiIsImkkMyIsImkkNCIsIndrJDYiLCJ0cmFuc2YkNyIsIndrJDIiLCJsX3QkMiIsInRyYW5zZiQxIiwic2l0ZV9pZCQ3IiwibF90JDEiLCJzaXRlX2lkJDYiLCJkc3RfcGxhY2UiLCJ3ayQzIiwiY19sJDAiLCJsX3QkMyIsInRyYW5zZiQyIiwic2l0ZV9pZCQ4Iiwicl9sJDEiLCJyX2wkMiIsImxfdCQ3IiwidHJhbnNmJDYiLCJyZSQyIiwic2l0ZV9pZCQxMiIsInNpdGVfaWQkMTEiLCJzaXRlX2lkJDkiLCJsX3QkNSIsInRyYW5zZiQ0Iiwid2skNCIsImxfdCQ2IiwidHJhbnNmJDUiLCJjX2wkMSIsInNpdGVfaWQkMTAiLCJpbmNyX29yaWdpbiIsImNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbSIsImNvbXBpbGVfbW9kZV9vbiIsInByZWNvbXBfbWl4cyIsIm5ld19zd2l0Y2giLCJhdXhfb25lJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJjdXJyZW50JDAiLCJhdXhfYWdzJDAiLCJpJDUiLCJvcl90eSIsInByZXYiLCJhdXhfb25lIiwiaSQ2Iiwib3JfdHkkMCIsImkkNyIsInRvZG9zJDEiLCJhdXhfYWdzIiwiYWxsX21peHMiLCJvbmx5X2ZyZXNoIiwib25seV9mcmVzaCQwIiwidHJhbnNmb3JtYXRpb25zJDAiLCJldmVudCIsImFkZGVkJDUiLCJ3a19vdXQiLCJlbnYkMSIsImFkZGVkJDYiLCJyZW1vdmVkJDAiLCJpbnN0YW50aWF0aW9ucyQxIiwibGlua3NfdHJhbnNmJDIiLCJhZGRlZCQ3IiwicmVtb3ZlZCQxIiwiYWNzIiwiYXkiLCJheCIsImFjdGlvbnMkNCIsInJlbW92ZWQkMiIsInRyYW5zZm9ybWF0aW9ucyQyIiwiY3JlYXRlX2FjdGlvbnMiLCJhZGRlZCQ0IiwiYWRkZWQkMCIsImFkZGVkJDEiLCJwb2ludCQwIiwiYWRkZWQkMiIsImFkZGVkJDMiLCJpbnRmJDAiLCJjcmVhdGVfYWN0aW9ucyQwIiwidHJhbnNmb3JtYXRpb25zJDMiLCJhY3Rpb25zJDUiLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0kMCIsImNjX2VudiIsInJ1bGVzIiwibGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSIsIm5iX2NjIiwibWl4cyIsImxua19wYWNrIiwia25vd25fc3JjIiwiZHN0X3MiLCJzcmNfaW5mbyIsImxua19wYWNrJDAiLCJ0cmFuc2ZzIiwiZnIiLCJmaWQiLCJhX3R5cGUiLCJlZGl0IiwiY2NfaWQxIiwiY2NfaWQyIiwiZWRpdCQwIiwidGVzdCQwIiwiZWRpdCQxIiwidGVzdCQxIiwiZWlkIiwiZWRpdCQyIiwidGVzdCQyIiwiaWQkMyIsImNjX2lkJDEiLCJpZCQyIiwidHJhbnNmcyQwIiwicl9taXgiLCJyX2NyZWF0ZWQiLCJwYXR0ZXJuc19vZl9taXh0dXJlIiwicHJlX2VudiIsInNuYXAiLCJjY19jYWNoZSIsInJhX3R5cGUiLCJhciIsImRhbmdsaW5nIiwiZGFuZ2xpbmckMCIsImRhbmdsaW5nJDEiLCJjY19jYWNoZSQwIiwicHJlX2VudiQwIiwiaW5pdCIsInRva2VucyIsImFsZ3MiLCJvYnNlcnZhYmxlcyIsImludGVydmVudGlvbnMiLCJhc3RfcnVsZXMiLCJhbGdfcmQiLCJ0b2tfcmQiLCJkZXBzX2luX2UiLCJkZXBzX2luX3QiLCJkZWNvbnN0cnVjdCIsImdldF9vYnMiLCJnZXRfcnVsZXMiLCJuZXdfZG9tYWluIiwidG9rZW5zX2ZpbmRlciIsImFsZ3NfZmluZGVyIiwibnVtX29mX2FnZW50Iiwibm1lIiwiY291bnRlcl9pbmZvIiwiZm9sZF9ydWxlcyIsInJ1bGUiLCJmb2xkX3BlcnR1cmJhdGlvbnMiLCJnZXRfcnVsZSIsImdldF9hc3RfcnVsZV93aXRoX2xhYmVsIiwiZ2V0X2FzdF9ydWxlIiwiZm9sZF9hc3RfcnVsZXMiLCJsa2FwcGFfcnVsZSIsImdldF9hc3RfcnVsZV9yYXRlX3BvcyIsInVuYXJ5IiwibmJfcnVsZXMiLCJudW1zX29mX3J1bGUiLCJuYl9zeW50YWN0aWNfcnVsZXMiLCJudW1fb2ZfYWxnIiwiZ2V0X2FsZyIsImdldF9hbGdzIiwibmJfYWxncyIsIm51bV9vZl90b2tlbiIsInN0ciIsIm5iX3Rva2VucyIsImdldF9wZXJ0dXJiYXRpb24iLCJuYl9wZXJ0dXJiYXRpb25zIiwiZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyIsImdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyIsImFsbF9kZXBlbmRlbmNpZXMiLCJwcmludF9hZ2VudCIsInByaW50X2FsZyIsInNwZWNpYWwiLCJwcmludF90b2tlbiIsInByaW50X2FzdF9ydWxlIiwibWFwX29ic2VydmFibGVzIiwicHJfYWxnIiwicHJfcnVsZSIsInByX3BlcnQiLCJwcl9ydWxlJDAiLCJjaGVja19pZl9jb3VudGVyX2lzX2ZpbGxlZF9lbm8iLCJvdmVyd3JpdGVfdmFycyIsImFsZ19vdmVyd3JpdGUiLCJmb2xkX21peHR1cmVfaW5fZXhwciIsIngxIiwieDIiLCJ4MyIsImthcHBhX2luc3RhbmNlX3RvX3lvanNvbiIsImZpbGVzIiwia2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uIiwidW5hcnlfcGF0dGVybnMiLCJjY19taXgiLCJhbGdfZXhwciIsImJvb2xfZXhwciIsInByaW50X2V4cHIiLCJhbGciLCJwcmludF9leHByX3ZhbCIsImFsZ192YWwiLCJkZWNvbXBpbGVkX3J1bGUiLCJkaXN0IiwicmF0ZSIsImVsZW1lbnRhcnlfcnVsZSIsInByX3RyYW5zIiwiYm94ZWRfY2MiLCJtb2RpZmljYXRpb24iLCJmbiQwIiwiZm4kMSIsImZuJDIiLCJ2YSQwIiwiY2MkMSIsImZuJDMiLCJmbiQ0IiwicGVydHVyYmF0aW9uIiwicGVydCIsImF1eF9hbGFybSIsImVudl9rYXBwYSIsImRlY29tcGlsZWRfZW52IiwicGFyc2UiLCJyZXN1bHQiLCJnZXRfdmFsdWUiLCJwb3NfcCIsInBhcmFtIiwidmFsdWVfbGlzdCIsInBhcmFtJDAiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwiY29uZiIsInNwIiwidXAiLCJmb3JtYXRDZmxvdyQwIiwidmFsdWUiLCJwb3NfdiIsImVycm9yIiwidGwkMCIsInRsJDEiLCJkaXZpZGVfZXhwcl9ieV9pbnQiLCJvcHQkMCIsInJvb3Rfb25seSIsImxvYyIsImIkMjAiLCJhJDEzIiwicm9vdF9vbmx5JDAiLCJiJDciLCJiJDYiLCJsb2NfY3N0JDAiLCJsb2NfY3N0JDEiLCJjJDEiLCJjJDIiLCJiJDQiLCJsb2NfY3N0JDIiLCJiJDUiLCJsb2NfY3N0IiwiZXhwciQzIiwib3B0JDMiLCJleHByJDIiLCJvcHQkMiIsImV4cHIkMSIsIm9wdCQxIiwiYiQ5IiwiYiQ4IiwibG9jZGl2IiwiYyQ1IiwiYiQxMyIsImV4cHIkNiIsIm9wdCQ2IiwiYiQxNCIsImIkMTAiLCJjJDQiLCJsb2NfYmluJDAiLCJiJDExIiwiZXhwciQ1Iiwib3B0JDUiLCJjJDMiLCJsb2NfYmluIiwiZXhwciQ0Iiwib3B0JDQiLCJhJDEwIiwiYiQxMiIsImIkMTYiLCJhJDExIiwiYiQxNSIsImIkMTgiLCJhJDEyIiwiYiQxNyIsImIkMTkiLCJsb2MkMCIsImEkMTQiLCJhJDE1IiwiYSQxOCIsImEkMTYiLCJhJDE3IiwibG9jJDEiLCJubyQwIiwieWVzJDAiLCJzaW1wbGlmeV9ib29sIiwibG9jJDIiLCJleHByJDciLCJleHByJDgiLCJsb2MkMyIsImV4cHIkOSIsImV4cHIkMTAiLCJleHByX2Jvb2wiLCJzaW1wbGlmeSIsImNsZWFuIiwiY2xlYW5fYm9vbCIsImR0IiwiZHQkMCIsImNzdCIsImNvcnJlY3RlZF9yYXRlIiwiY29ycmVjdGVkX3JhdGUxIiwiY29ycmVjdGVkX3JhdGUyIiwiZSQxIiwiY3N0JDAiLCJjb3JyZWN0ZWRfcmF0ZSQwIiwiY3N0JDEiLCJnZXRfY29ycmVjdGVkX3JhdGUkMCIsImNvcnJlY3RlZF9yYXRlX2NvbnN0IiwibmVjZXNzYXJpbHlfZXF1YWwiLCJhX29wdCIsImJfb3B0IiwiZGVwIiwiYWRkX21peHR1cmUiLCJhZGRfdG9rZW4iLCJkZXBfZW52IiwidGltZV92YXIiLCJhY2N1IiwiYWNjdSQwIiwiYWNjdSQxIiwiZGlmZl9nZW4iLCJmX3Rva2VuIiwiZl9zeW1iIiwiZl90aW1lIiwiZTIkMCIsImRpZmZfdG9rZW4iLCJkaWZmX21peHR1cmUiLCJmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIiwiYXJyYXlfaWQiLCJmb2xkX292ZXJfbWl4dHVyZXNfaW5fYWxnX2V4cHIiLCJtb2RlbCIsImFsZ3NfZXhwciIsInVuYXJ5X3JhdGUiLCJkZWx0YV90b2tlbnMiLCJhY2N1JDIiLCJqc29uX2RpY3Rpb25uYXJ5IiwianNvbl9kaWN0aW9ubmFyeSQwIiwidXBkYXRlX3Byb2ZpbGluZ19pbmZvIiwiYSIsImluZm8iLCJldmVudCIsInN0b3J5X2lkIiwiY29tcGFyZV9ieV9zdG9yeV9pZCIsIngiLCJ5IiwidG9fanNvbiIsImYiLCJvZl9qc29uIiwic3RvcnlfZXZlbnQiLCJzdG9yeV90aW1lIiwid3JpdGVfanNvbiIsIm9iIiwibyIsInJlYWRfanNvbiIsInN0IiwiYiIsInByb2ZpbGluZ19pbmZvIiwicHJpbnRfZXZlbnRfa2luZCIsImVudiIsImkiLCJsIiwicyQxIiwiZW52JDAiLCJyX2lkIiwicyIsInMkMCIsInByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90Iiwic3Vic19zdGVwIiwiZHVtbXlfc3RlcCIsInByaW50X2V2ZW50IiwiY29tcGFjdCIsImxvZyIsImUiLCJldl9raW5kIiwic2lncyIsInN0YXRlIiwic2l0ZSIsImFnIiwiYWdfaWQiLCJwcmludF9zdGVwIiwib3B0IiwiZW52JDEiLCJzdGgiLCJ5JDAiLCJ4JDAiLCJhY3Rpb25zIiwidGVzdHMiLCJzaWdzJDAiLCJnZXRfdHlwZXNfZnJvbV9pbml0IiwiYWNjIiwiYWN0aW9uIiwiYXR5cGUiLCJwcmludF9sYWJlbF9vZl9zdGVwIiwieCQzIiwieCQ0IiwiYSQwIiwibCQwIiwieCQ1IiwieCQxIiwieCQyIiwid3JpdGVfc3RlcCIsInoiLCJ6JDAiLCJ6JDEiLCJ5JDEiLCJyZWFkX3N0ZXAiLCJiJDAiLCJzdGVwX3RvX3lvanNvbiIsInJldl9hY3Rpb25zIiwid3JpdGVfanNvbiQwIiwicmVhZF9qc29uJDAiLCJzdHJpbmdfb2Zfc3RlcCIsImxlbiIsInN0ZXBfb2Zfc3RyaW5nIiwic3RlcF9pc19vYnMiLCJzdGVwX2lzX2luaXQiLCJzdGVwX2lzX3N1YnMiLCJzdGVwX2lzX3J1bGUiLCJzdGVwX2lzX3BlcnQiLCJzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCIsImNyZWF0aW9uX29mX2FjdGlvbnMiLCJvcCIsImNyZWF0aW9uX29mX3N0ZXAiLCJhYyIsImhhc19jcmVhdGlvbl9vZl9zdGVwIiwidGVzdHNfb2Zfc3RlcCIsImFjdGlvbnNfb2Zfc3RlcCIsInNpZGVfZWZmZWN0c19vZl9zdGVwIiwiaW5pdF90cmFjZV9maWxlIiwidXVpZCIsImRlc2MiLCJhc3NlcnRfZmllbGQiLCJpZGVudCIsInJlYWRfdHJhY2VfaGVhZGVycyIsImxleF9zdCIsImxleF9idWYiLCJ1dWlkJDAiLCJ1dWlkJDEiLCJpZGVudCQwIiwiZm9sZF90cmFjZSIsImluaXQiLCJvdXQiLCJmb2xkX3RyYWNlX2ZpbGUiLCJmbmFtZSIsImdldF9oZWFkZXJzX2Zyb21fZmlsZSIsInNpemUiLCJuYiIsInQiLCJ3cml0ZV90Iiwic3RyaW5nX29mX3QiLCJyZWFkX3QiLCJwIiwibGIiLCJ0X29mX3N0cmluZyIsImN1cnJlbnRfc3RvcnkiLCJjIiwiY3VycmVudF90aW1lIiwiY3VycmVudF9ldmVudCIsIm5iX251bGxfZXZlbnQiLCJjb25zZWN1dGl2ZV9udWxsX2V2ZW50IiwicnVsZV9pZCIsImNvbnNlY3V0aXZlX2Jsb2NrZWQiLCJpbmNfc3RvcmllcyIsImNoZWNrX3RpbWUiLCJtYXgiLCJjaGVja19ldmVudHMiLCJvbmVfdGltZV9hZHZhbmNlIiwiZHQiLCJvbmVfY29uc3RydWN0aXZlX2V2ZW50IiwidCQwIiwib25lX25vX21vcmVfYmluYXJ5X2V2ZW50Iiwib25lX25vX21vcmVfdW5hcnlfZXZlbnQiLCJvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQiLCJvbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IiwidGkiLCJ0aSQwIiwib25lX2Jsb2NrZWRfZXZlbnQiLCJnZXRfZWZmaWNpZW5jeSIsInByaW50X2VmZmljaWVuY3kiLCJhbGwiLCJpbml0X3RpbWUiLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJwbG90X3BlcmlvZCIsInRpbWVfcmF0aW8iLCJ0bWF4IiwiZXZlbnRfcmF0aW8iLCJlbWF4Iiwic2V0X21heF90aW1lIiwic2V0X21heF9ldmVudHMiLCJ0cmFja2VkX2V2ZW50cyIsImNvdW50ZXIiLCJzZXRfcGxvdF9wZXJpb2QiLCJjcmVhdGUiLCJtYXhfZXZlbnQiLCJuYl9ydWxlcyIsImluaXRfdCIsInN0aCQwIiwiaW5pdF9lIiwicmVpbml0aWFsaXplIiwibmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyIsImN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIiwibmV4dF9zdG9yeSIsInBvc2l0aXZlX3Bsb3RfcGVyaW9kIiwiZmlsbCIsIm91dHB1dHMiLCJkRSIsIm5leHQiLCJkVCIsImxhc3QiLCJuIiwiZFQkMCIsInRpbWUiLCJjb3VudGVyJDAiLCJwb2ludHMiLCJmYWtlX3RpbWUiLCJhcnJvd2hlYWQiLCJjb2xvciIsInByaW50X2luaXRpYWxfaW5wdXRzIiwiY29uZiIsImlucHV0c19mb3JtIiwibm9Db3VudGVycyIsImNvdW50ZXJzX2luZm8iLCJyIiwiaW5zX2ZyZXNoIiwidGsiLCJwcmludF9zbmFwc2hvdCIsImVsIiwibmEiLCJtaXgiLCJwcmludF9kb3Rfc25hcHNob3QiLCJ3cml0ZV9zbmFwc2hvdCIsInJlYWRfc25hcHNob3QiLCJrZXkiLCJzbmFwc2hvdF90b2tlbnMiLCJzbmFwc2hvdF9hZ2VudHMiLCJzbmFwc2hvdF90aW1lIiwic25hcHNob3RfZXZlbnQiLCJzdHJpbmdfb2Zfc25hcHNob3QiLCJzbmFwc2hvdF9vZl9zdHJpbmciLCJ3cml0ZV9kaW4iLCJyZWFkX2RpbiIsImgiLCJrIiwiZGluX2VuZCIsImRpbl9ydWxlcyIsImRpbl9mbHV4cyIsImRpbl9oaXRzIiwiZGluX3N0YXJ0IiwiZGluX2tpbmQiLCJzdHJpbmdfb2ZfZGluIiwiZGluX29mX3N0cmluZyIsInByaW50X2RvdF9kaW4iLCJmbHV4IiwiZCIsInYiLCJhcnJvd2hlYWQkMCIsImNvbG9yJDAiLCJwcmludF9odG1sX2RpbiIsImFkZF9wbG90X2xpbmUiLCJuZXdfb2JzZXJ2YWJsZXMiLCJwbG90IiwibmJyIiwibmV3X3ZhbHVlcyIsImluaXRfcGxvdCIsInBsb3RfbGVnZW5kIiwid3JpdGVfcGxvdCIsInJlYWRfcGxvdCIsInBsb3Rfc2VyaWVzIiwic3RyaW5nX29mX3Bsb3QiLCJwbG90X29mX3N0cmluZyIsInByaW50X3Bsb3Rfc2VwIiwiaXNfdHN2IiwicHJpbnRfcGxvdF9sZWdlbmQiLCJwcmludF9wbG90X2xpbmUiLCJwcCIsImV4cG9ydF9wbG90IiwicHJpbnRfd2FybmluZyIsInBvcyIsIm1zZyIsInByIiwicG9zJDAiLCJjcmVhdGVfZmx1eCIsImluY3JfZmx1eF9mbHV4Iiwib2ZfcnVsZSIsIm9uX3J1bGUiLCJpbmNyX2ZsdXhfaGl0Iiwic3RvcF9mbHV4IiwiZGluX2RhdGEiLCJqIiwiZW1wdHkiLCJpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIiwicGF0dGVybiIsIm1hdGNoaW5ncyIsImFkZF9pbnRzZXRfaW5faW50bWFwIiwiaWQiLCJzZXQiLCJtYXAiLCJicmVha19hcGFydF9jYyIsImVkZ2VzIiwibW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSIsIm5ld19jYyIsIm9yaWdpbl9jYyIsIm1vZF9jb25uIiwiY2NfaWQiLCJjY19tYXAiLCJvc2V0Iiwib3NldCQwIiwibnNldCIsIm1lcmdlX2NjIiwiY2MyIiwiY2MxIiwibW9kX2Nvbm5lY3Rpdml0eSIsImNjX21hcCQwIiwic2V0MiIsInNldDEiLCJ1cGRhdGVfcm9vdHMiLCJpc19hZGQiLCJ1bmFyeV9jY3MiLCJyb290IiwidmEiLCJzZXQkMCIsIm51bWJlciIsInBhdCIsImRlYnVnX3ByaW50IiwiZG9tYWluIiwicm9vdHNfb2ZfcGF0dGVybnMiLCJyb290cyIsInJvb3RzX29mX3BhdHRlcm5zJDAiLCJyb290X21hcHMiLCJvZl9wYXR0ZXJuIiwicGF0X2lkIiwib2ZfdW5hcnlfcGF0dGVybiIsInJlY2VpdmVfbWVzc2FnZSIsImNjcyIsImlzX3ZhbGlkIiwibnVtYmVyX29mX2luc3RhbmNlcyIsInBhdHMiLCJudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2MiLCJwYXQyIiwicGF0MSIsIm1hcDEiLCJtYXAyIiwiY2MiLCJwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIiwicmFuZG9tX3N0YXRlIiwicm9vdDEiLCJyb290MiIsImZvbGRfcGlja2VkX2luc3RhbmNlIiwiYWNjJDIiLCJhY2MkMCIsInJvb3Rfb3B0IiwiYWNjJDEiLCJpJDAiLCJub19ub19ubyIsImZvbGRfaW5zdGFuY2VzIiwiZXhjcCIsInNlbnRfdG9fZml4ZWRfcm9vdCIsImV4Y3Bfcm9vdCIsInNlbnRfdG9fZXhjcF9yb290IiwidGFiIiwiYXV4IiwiaXRoX3Jvb3RzIiwiaSQxIiwiZm9sZF91bmFyeV9pbnN0YW5jZXMiLCJleGVjX2FsZyQwIiwidGltZSQwIiwiZ2V0X2FsZyIsImdldF9taXgiLCJnZXRfdG9rIiwiYWxnIiwic2siLCJhbGckMCIsInNrJDAiLCJhbGckMSIsInNrJDEiLCJhbGckMiIsIm9wJDAiLCJzayQyIiwid2l0aF92YWx1ZSIsImFsZyQzIiwibiQwIiwibm8iLCJ5ZXMiLCJjb25kIiwiZXhlY19ib29sJDAiLCJleGVjX2FsZyIsImV4cHIiLCJleHByJDAiLCJleHByJDEiLCJleHByJDIiLCJvcCQxIiwiZXhlY19ib29sIiwieWVzJDAiLCJzayQ0Iiwic2skMyIsInNrJDUiLCJuMSIsInNrJDYiLCJuMSQwIiwib3AkMiIsInNrJDciLCJvcCQzIiwic2skOCIsInZhbHVlX2Jvb2wiLCJ2YWx1ZV9hbGciLCJnZXRfZWRnZXMiLCJzdW1faW5zdGFuY2VzX251bWJlcnMiLCJpbnN0cyIsInBhdHRlcm5zIiwicmVjb21wdXRlIiwib3ZlcndyIiwiYWN0aXZpdHkiLCJzZXRfYWN0aXZpdHkiLCJydWxlIiwid2l0aF90cmFjZSIsImFjdGl2aXR5X3RyZWUiLCJ1bmFyeV9wYXR0ZXJucyIsImRlcHNfaW5fZSIsImRlcHNfaW5fdCIsImFsd2F5c19vdXRkYXRlZCIsIndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMiLCJ2YXJpYWJsZXNfb3ZlcndyaXRlIiwidmFyaWFibGVzX2NhY2hlIiwicmF0ZSIsImlzX2Jsb2NrZWQiLCJkZWJ1Z19tb2RlIiwibWF0Y2hpbmciLCJ0b19ibG9jayIsImFic3RyYWN0X2FjdGlvbnMiLCJpbmoiLCJhYnN0cmFjdF90ZXN0cyIsImluaiQwIiwic2V0X2V2ZW50c190b19ibG9jayIsInByZWRpY2F0ZSIsImFsbF9pbmplY3Rpb25zIiwidW5hcnlfcmF0ZSIsInN0YXRlX2luc3RzIiwicGF0dGVybmEiLCJpbnN0YW5jZSIsIm1hdGNoaW5nJDAiLCJyZXZfcm9vdHMiLCJtYXhfZGlzdGFuY2UiLCJub2RlcyIsInIyIiwicjEiLCJwaWNrX2FfcnVsZV9pbnN0YW5jZSIsImZyb21fcGF0dGVybnMiLCJwcmludCIsInN0YXRzIiwicHJpbnRfc3RhdHMiLCJhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiIsImluc3RhbmNlcyIsInNpZGVfZWZmZWN0cyIsImVkZ2VzJDAiLCJpZCQwIiwiZWRnZXMkMSIsImlkJDEiLCJpZCQyIiwiY2NfbW9kaWYiLCJlZGdlcyQyIiwicyQyIiwiaWQkMyIsInNpZGVfZWZmZWN0cyQwIiwicyQzIiwibmMiLCJpZCQ0IiwiY2NfbW9kaWYkMCIsImVkZ2VzJDMiLCJzJDQiLCJpZCQ1IiwiZWRnZXMkNCIsImFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIiwiaW5qMmdyYXBoIiwidHkiLCJmcmVlX2lkIiwiaW5qX2ZyZXNoIiwiaW5qX25vZGVzIiwiaW5qMmdyYXBoJDAiLCJuYyQwIiwibiQxIiwibiQyIiwibmMkMSIsIm5jJDIiLCJtb2RpZl9jYyIsInNpZGVfZWZmZWN0cyQxIiwibiQzIiwibmMkMyIsImFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZiIsIm9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIiwibmMkNCIsIm5jJDUiLCJzJDUiLCJuYyQ2Iiwib2JzX2Zyb21fdHJhbnNmb3JtYXRpb25zIiwidHJhbnMiLCJnZXRfc3BlY2llc19vYnMiLCJvYnMiLCJ0cmFja2VkIiwiZm4iLCJvayIsInBpZCIsInNwZWMiLCJ1cGRhdGVfZWRnZXNfZnJvbV9hY3Rpb25zIiwic2lkZV9lZmZlY3RfZHN0IiwibG5rX2RzdCIsImNvbmNyZXRlX3JlbW92ZWQiLCJkZWxfZGVwcyIsImRlbF9vYnMiLCJlZGdlc19hZnRlcl9uZWciLCJjb25jcmV0ZV9pbnNlcnRlZCIsIm5ld19kZXBzIiwibmV3X29icyIsInNwZWNpZXMiLCJtaXh0dXJlIiwiZmlsZSIsInJldl9kZXBzIiwibWF4X2Rpc3RfdG9faW50Iiwic3RvcmVfYWN0aXZpdHkiLCJzdG9yZSIsInN5bnRheF9pZCIsImNjX3ZhIiwicmF0ZSQwIiwiYWN0IiwidW5hcnkiLCJvbGRfYWN0IiwidXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMiLCJrbm93bl9wZXJ0cyIsImRlcCIsInBlcnRzIiwibWF0Y2hpbmdzX29mX3J1bGUiLCJydWxlJDAiLCJwYXR0ZXJuX3ZhIiwidW5hcnlfY2FuZGlkYXRlcyIsIm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyIsIm1vZGlmaWVkX2NjcyIsInBhY2skMCIsInVucmF0ZSIsIm9sZF9wYWNrIiwiaV9pbnN0IiwibmV3X3YiLCJuZXdfcGFjayIsIm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyQwIiwidW5hcnlfY2FuZGlkYXRlcyQwIiwicGFjayIsIm92ZXJ3cml0ZV92YXIiLCJ0cmFuc2Zvcm1fYnlfYV9ydWxlIiwic3RhdGUkMSIsImV2ZW50X2tpbmQiLCJwYXRoJDAiLCJpbmplY3RlZCQwIiwiaW5qZWN0ZWQiLCJyZGVwcyIsImRlcHMiLCJzdGF0ZSQwIiwiaCQwIiwicmVtYWluaW5nX3NpZGVfZWZmZWN0cyIsImZpbmFsX2luajJncmFwaCIsImNvbmNyZXRlX2luc2VydGVkJDAiLCJldiIsInRlc3RzJDAiLCJuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzIiwiY2V2ZW50IiwicGF0aCIsImtub3duX2FnZW50cyIsInByZXRlc3RzIiwidGUiLCJ0ZSQwIiwiYWckMCIsInRlJDEiLCJhZyQxIiwicGF0aF90ZXN0cyIsImZ1bGxfY29uY3JldGVfZXZlbnQiLCJhcHBseV9naXZlbl9pbnN0YW5jZSIsImRpc3QiLCJkaXN0JDAiLCJyb290MCIsImFwcGx5X2dpdmVuX3J1bGUiLCJpbnN0IiwiZm9yY2VfcnVsZSIsIm91dCQxIiwiZGlzdF9vcHQiLCJsb2MiLCJvdXQkMCIsInNuYXBzaG90IiwicmF3IiwicGlja19hbl9pbnN0YW5jZSIsInJ0IiwiY2hvaWNlIiwicGF0dGVybjEiLCJwYXR0ZXJuMiIsImluajEiLCJpbmpfb3V0IiwiaXNfY29ycmVjdF9pbnN0YW5jZSIsImdyYXBoIiwiaXNfdW5hcnkiLCJpbnZfcm9vdHMiLCJhcHBseV9pbnN0YW5jZSIsIm1heENvbnNlY3V0aXZlQmxvY2tlZCIsIm1heENvbnNlY3V0aXZlQ2xhc2giLCJncmFwaCQwIiwiY2F1c2UiLCJhcHBseV9naXZlbiIsImdyYXBoJDEiLCJmaW5hbF9zdGVwIiwiY29udGludWUkMCIsImRvbWFpbiQwIiwibGlzdCIsImNhbmRzIiwibWF0Y2hlcyIsIm1hdGNoZXMkMCIsImF1eF9hZGRfdHJhY2tlZCIsIm5hbWUiLCJ0cGF0dGVybiIsImFkZF90cmFja2VkIiwicmVtb3ZlX3RyYWNrZWQiLCJuYW1lJDAiLCJ0ZXN0ZXIiLCJwbGlzdCIsInRlc3RlciQwIiwiYWRkX3RyYWNrZWRfc3BlY2llcyIsInJlbW92ZV90cmFja2VkX3NwZWNpZXMiLCJnZXRfcmFuZG9tX3N0YXRlIiwic2VuZF9pbnN0YW5jZXNfbWVzc2FnZSIsImFkZF9vdXRkYXRlZF9kZXBlbmRlbmNpZXMiLCJvdXRkYXRlZF9lbGVtZW50cyIsImRlYnVnX3ByaW50X2luc3RhbmNlcyIsImNvbXBhcmVfc3RvcHMiLCJwMiIsInQyIiwicDEiLCJ0MSIsIndpdGhfZGVsdGFfYWN0aXZpdGllcyIsInQwIiwiYWxnc19kZXBzIiwic3RvcHBpbmdfdGltZXMiLCJzdG9wcyIsInRpbWVfZGVwZW5kZW50X3BlcnRzIiwib2JzZXJ2YWJsZXNfdmFsdWVzIiwiZG9fbW9kaWZpY2F0aW9uIiwiZXh0cmEiLCJtb2RpZmljYXRpb24iLCJwcmludF9leHByX3ZhbCIsInRleHQiLCJnIiwiZXh0cmEkMCIsImdyYXBoJDIiLCJleHRyYSQxIiwiZ3JhcGgkMyIsInBleHByIiwicGV4cHIkMCIsImZpbGUkMCIsInJlbCIsImZpbGUkMSIsImZpbGUkMiIsIm90aGVycyIsInRoZXNlIiwiY2MkMCIsIm5hbWUkMSIsInBlX2V4cHIiLCJwZV9maWxlIiwiZmlsZV9vcHQiLCJsaW5lIiwiY2MkMSIsImZpbGUkMyIsImZpbGUkNCIsInBlcnR1cmJhdGUiLCJpc19hbGFybSQwIiwibWl4X2NoYW5nZWQkMCIsInRhaWwiLCJwZXJ0IiwibW9kX2FsYXJtIiwibWl4X2NoYW5nZWQkMSIsImVmZmVjdCIsInN0b3AiLCJ0YWlsJDAiLCJhbGl2ZSIsIm1peF9jaGFuZ2VkJDIiLCJkb19tb2RpZmljYXRpb25zIiwiaW5pdGlhbGl6ZSIsImJpbmQiLCJyZXR1cm4kMCIsImdyYXBoMCIsInN0YXRlMCIsImluaXRfbCIsIm1zdGF0ZSIsImNvbXBpbGVkX3J1bGUiLCJ2YWx1ZSIsImNyZWF0aW9uc19zb3J0IiwibWdyYXBoIiwibWlkX2dyYXBoIiwibWl4X2NoYW5nZWQiLCJwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIiwicGUiLCJvdXRwdXRzJDAiLCJjYW5kIiwicmVndWxhcl9sb29wX2JvZHkiLCJwaWNrZWRfaW5zdGFuY2UiLCJzdG9wJDAiLCJwcmV2X2FjdGl2aXR5IiwiYWN0X3N0YWNrIiwiYXBwbGllZF9yaWRfc3ludGF4IiwibXlfc3ludGF4X3JkX2lkIiwicmVnaXN0ZXJfbmV3X2FjdGl2aXR5Iiwic3ludGF4X3JkX2lkIiwibmV3X2FjdCIsImZsIiwiY3QiLCJmb3JjZV90ZXN0ZWQiLCJleHRyYV9wZXJ0Iiwibl9hY3Rpdml0eSIsImZpbmFsX3N0ZXAkMCIsImFfbG9vcCIsImR1bXBJZkRlYWRsb2NrZWQiLCJzdGF0ZSQyIiwicmQiLCJkdCQyIiwiZHRpIiwiZHQkMCIsImR0JDEiLCJzdG9wJDEiLCJuZWVkc19iYWNrdHJhY2siLCJlbmRfb2Zfc2ltdWxhdGlvbiIsImluaXRfc3RhdGUiLCJjY19vZl9zdGF0ZSIsImNjX21hcHMiLCJhZ2VudCIsImUkMCIsIndvcmskNSIsImZvbGRfYXJpdHlfbGlzdCIsImFyaXR5IiwiYWRkX2FnZW50IiwidG9kb3MiLCJtb3JwaGlzbSIsIndvcmsiLCJhaWQiLCJ3b3JrJDAiLCJ3X2FnZW50IiwidG9kb3MkMCIsIndvcmskMSIsInciLCJpbnRlcm5hbCIsIm0iLCJ0b2RvcyQzIiwibW9ycGhpc20kMCIsIndvcmskMyIsInBvcnQiLCJhaWQkMCIsImFpZCQxIiwibm90X2FnZW50IiwiYmlkIiwibm90X2FnZW50JDAiLCJub3RfYWdlbnRzIiwiYmlkJDAiLCJ3Yl9hZ2VudCQwIiwidG9kb3MkMSIsIndiX2FnZW50Iiwid29yayQyIiwidG9kb3MkMiIsInRvZG8iLCJtb3JwaGlzbSQxIiwid29yayQ0IiwiZW4iLCJjaWQiLCJkb19uZWdhdGl2ZV9wYXJ0IiwiY2NfY2hhbmdlIiwiY2NzJDAiLCJpbnZvbHZlZF9hZ2VudHMiLCJ0ZXN0c19wYXNzX29uIiwiYWckMiIsImFnX3R5IiwiYWckMyIsImRzdF9zIiwiZHN0X2FnX3R5IiwiYWckNCIsImFnJDUiLCJpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIiwiaXNfc3RlcF90cmlnZ2VyYWJsZSIsImRvX2FjdGlvbnMiLCJpc19yZW1vdmFsIiwicmVtb3ZhbHMiLCJkb19pbl9vcmRlciIsImNjcyQzIiwiYSQxIiwidHkkMCIsImNjcyQ0IiwiY2NzJDUiLCJjY3MkNiIsIngyIiwiczIiLCJhMiIsIngxIiwiczEiLCJhMSIsImNjcyQxIiwiY2NzJDIiLCJkb19zdGVwIiwia2luZCIsInVuYXJ5X2Rpc3RhbmNlcyIsImNjMV9hZ3MiLCJjYzJfYWdzIiwiY29ubmVjdGVkX2NvbXBvbmVudHMiLCJwcmVncmFwaCIsImluZm8kMCIsImV2ZW50JDAiLCJjb25uZWN0ZWRfY29tcG9uZW50cyQwIiwicHJlZ3JhcGgkMCIsImNvbm5lY3RlZF9jb21wb25lbnRzJDEiLCJpbmZvJDEiLCJlbXB0eV9jb21waWwiLCJtZXJnZV92ZXJzaW9uIiwiYSIsImIiLCJjb3VudGVyX3NpZ19vZl9jb3VudGVyIiwiYyIsImxvYyIsImkiLCJjb3VudGVyX3NpZ19kZWZhdWx0IiwiY291bnRlcl9zaWdfbWluIiwibG9jJDAiLCJpJDAiLCJjb3VudGVyX3NpZ19tYXgiLCJmbGlwX2xhYmVsIiwic3RyIiwibm9fbW9yZV9zaXRlX29uX3JpZ2h0IiwiZXJyb3IiLCJsZWZ0IiwicmlnaHQiLCJwIiwicCQwIiwicHJpbnRfY291bnRlcl90ZXN0IiwiZiIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJwcmludF9jb3VudGVyX21pbiIsInByaW50X2NvdW50ZXJfbWF4IiwicHJpbnRfY291bnRlciIsInRlc3QiLCJkZWx0YSIsInByaW50X2NvdW50ZXJfc2lnIiwibWluIiwiY291bnRlcl90ZXN0X3RvX2pzb24iLCJjb3VudGVyX3Rlc3Rfb2ZfanNvbiIsIngkMyIsImJ1aWxkX3BvcnRfb2ZfanNvbiIsImZpbGVuYW1lcyIsIm4iLCJsIiwibW9kX2wiLCJtb2RfaSIsInBvcnRfaW50X21vZCIsInBvcnRfaW50IiwibSQxIiwiaSQxIiwibSQyIiwicG9ydF9pbnRfbW9kJDAiLCJwb3J0X2ludCQwIiwibCQwIiwicG9ydF9saW5rX21vZCIsInBvcnRfbGluayIsIm0iLCJsJDEiLCJtJDAiLCJwb3J0X2xpbmtfbW9kJDAiLCJwb3J0X2xpbmskMCIsInNpdGVfc2lnX29mX2pzb24iLCJuJDIiLCJuJDAiLCJuJDEiLCJkZWZhdWx0JDAiLCJtYXgiLCJuJDMiLCJzaXRlX29mX2pzb24iLCJkIiwidCIsImNvdW50ZXJfdG9fanNvbiIsImNvdW50ZXJfc2lnX3RvX2pzb24iLCJwcmludF9hZ2VudF9tb2QiLCJwcmludF9hc3RfYWdlbnQiLCJhZ2VudF9uYW1lIiwiYWdlbnRfbW9kX29mX3lvanNvbiIsImFnZW50X3RvX2pzb24iLCJuYSIsImFnZW50X29mX2pzb24iLCJzIiwicyQwIiwiYWdlbnRfb2ZfanNvbiQwIiwiYWdlbnRfdG9fanNvbiQwIiwicHJpbnRfYXN0X21peCIsInBvcyIsInRvX2VyYXNlZF9taXh0dXJlIiwidG9fY3JlYXRlZF9taXh0dXJlIiwidG9fZHVtbXlfdXNlcl9zaXRlIiwiY291bnRlcl9uYW1lIiwicG9ydF9uYW1lIiwic3QiLCJzaSIsInR5IiwidG9fZHVtbXlfdXNlcl9hZ2VudCIsInNldHVwX2xpbmsiLCJ2YSIsInNpdGUiLCJyb3ciLCJsaW5lIiwibm9kZV9zaXRlcyIsIm1peHR1cmVfdG9fdXNlcl9ncmFwaCIsIm91dCIsImFjYyIsImlkIiwiYWNjJDAiLCJ2YSQwIiwiYWNjJDEiLCJwcmludF9vbmVfc2l6ZSIsInRrIiwibWl4IiwicHJfdmFyIiwicHJfdG9rIiwicHJfbWl4IiwibmIiLCJwcmludF9hcnJvdyIsImJpZGlyIiwicHJpbnRfYXN0X2FsZ19leHByIiwicHJpbnRfcmF0ZXNfb25lX2RpciIsInVuIiwiZGVmIiwibWF4X2Rpc3QiLCJtZCIsInByaW50X3J1bGVfY29udGVudCIsImJpZGlyZWN0aW9uYWwiLCJyIiwiciQwIiwicHJpbnRfYXN0X3J1bGUiLCJwcmludF9jb25maWd1cmF0aW9uIiwicHJpbnRfaW5pdCIsInByaW50X2FzdF9ib29sX2V4cHIiLCJwcmludF9wcmludF9leHByIiwiYXV4IiwiYWxnIiwiZSIsInByaW50X21vZGlmIiwicmF3IiwiZmlsZSIsIm9uIiwicCQxIiwib24kMCIsInAkMiIsImsiLCJwJDMiLCJwJDQiLCJvbiQxIiwicHJpbnRfcGVydHVyYmF0aW9uIiwicmVwIiwibW9kaWYiLCJjb25kIiwiYWxhcm0iLCJwcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSIsInJ1bGVfdG9fanNvbiIsImZfbWl4IiwiZl92YXIiLCJyJDEiLCJtaXhfdG9fanNvbiIsInJ1bGVfb2ZfanNvbiIsIm1peF9vZl9qc29uIiwibW9kaWZfb2ZfanNvbiIsImV4cHIiLCJmaWxlJDAiLCJmaWxlJDEiLCJmaWxlJDIiLCJiJDAiLCJpZCQwIiwiYiQxIiwiYiQyIiwiYWxnJDAiLCJ5IiwibWVyZ2VfaW50ZXJuYWxzIiwibWVyZ2Vfc2l0ZXNfY291bnRlciIsImgiLCJjJDAiLCJtZXJnZV9zaXRlc19wb3J0IiwiaCQwIiwieF9vcCIsInQkMCIsIm1lcmdlX3NpdGVzIiwiY28iLCJuYSQwIiwibWVyZ2VfYWdlbnRzIiwidG9rIiwibyIsIm1lcmdlX3Rva2VucyIsInRva3MiLCJhZ3MiLCJzaWdfZnJvbV9pbml0cyIsInNpZ19mcm9tX3J1bGUiLCJ0b2tzJDEiLCJhZ3MkMCIsInNpZ19mcm9tX3J1bGVzIiwic2lnX2Zyb21fcGVydHMiLCJpbmZlcl9hZ2VudF9zaWduYXR1cmVzIiwic3BsaXRfbWl4dHVyZSIsInJocyIsImxocyIsImFnIiwicGFjayIsImludGYiLCJwb3MkMCIsImludGZyIiwiaW50ZmwiLCJyciIsImxsIiwiY29tcGlsX3RvX2pzb24iLCJmaWxlcyIsIm1hcCIsInZhcl90b19qc29uIiwicG9zdCIsInByZSIsImNvbXBpbF9vZl9qc29uIiwidmFyX29mX2pzb24iLCJ3cml0ZV9wYXJzaW5nX2NvbXBpbCIsImFzdCIsInJlYWRfcGFyc2luZ19jb21waWwiLCJsYiIsInByaW50X2FzdF9taXgkMCIsImNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXAiLCJsczEiLCJsczIiLCJjcyIsImRzIiwidXBkYXRlX3JhdGUiLCJjb3VudGVyX3Zhcl92YWx1ZXMiLCJ1cGRhdGVfYm9vbF9leHByIiwiYTIiLCJrMiIsImExIiwiazEiLCJvcCIsImskMCIsIm9wJDAiLCJhMiQwIiwiazIkMCIsImExJDAiLCJrMSQwIiwib3AkMSIsInVwZGF0ZV9leHByIiwiYTMiLCJrMyIsImExJDEiLCJrMSQxIiwiazIkMSIsImExJDIiLCJrMSQyIiwidmFyX3ZhbHVlIiwiY291bnRlcnNfbWF0Y2hpbmdfcyIsIm5hbWVfbWF0Y2giLCJoYXNfY291bnRlcnMiLCJjb21waWwiLCJzaXRlcyIsInNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fcyIsIndhcm5pbmciLCJkZWJ1Z19tb2RlIiwic2lnbmF0dXJlcyIsInJ1bGVzJDEiLCJzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwiLCJpZHMiLCJjb3VudGVyX2RlZnMiLCJjb3VudGVyIiwiY291bnRlcl9kZWYiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJ2YWx1ZSIsImFubm90IiwidmFsdWUkMCIsInZhcl9uYW1lIiwiYW5ub3QkMCIsImNvdW50ZXJfZGVsdGEiLCJtYXhfbG9jIiwibWluX2xvYyIsIm1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbCIsInZhbHVlJDEiLCJjb3VudGVyX2RlbHRhJDAiLCJzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwkMCIsInNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbCQxIiwiYXN0X2FnZW50Iiwic2l0ZXMkMCIsInNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbCIsInZhcl92YWx1ZXMiLCJ1cGRhdGVfb3B0X3JhdGUiLCJ1cGRhdGVfcGFpcl9yYXRlIiwicjIiLCJyMSIsImNoZWNrX3N5bnRheCIsInByZXBhcmVfbGhzX3J1bGUiLCJyc2l0ZXMiLCJybmEiLCJsc2l0ZXMkMCIsImxuYSIsInByZXBhcmVfc2l0ZSIsInRsIiwiaGQiLCJyc2l0ZSIsImNvdW50ZXJzIiwibHNpdGVzIiwibGFnZW50JDAiLCJsc2l0ZXMkMSIsImxhZ2VudCIsInJ1bGUiLCJjb250ZW50IiwicnVsZXMiLCJydWxlX2Fubm90ZWQiLCJydWxlX25hbWUiLCJtaXhfbGhzIiwiY29udGVudCQwIiwicl9rX29wX3VuX3JhdGVzIiwicl9rdW5fcmF0ZXMiLCJleHByc19mcm9tX3JhdGVzIiwiYXV4X2V4cHIiLCJleHByJDAiLCJleHByJDEiLCJleHByJDIiLCJleHByJDMiLCJhY2MkMiIsImF1eF9ib29sIiwiZXhwcl9vcHQiLCJtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3YiLCJrX2RlZiIsImtfdW4iLCJrX29wIiwia19vcF91biIsImxocyQwIiwibmV3X3J1bGVfbmFtZSIsImNvdW50ZXJzX2lkc19hc19zdHJpbmciLCJsb2NhbGl0eSIsInJ1bGVfbmFtZV9zdHJpbmciLCJydWxlcyQwIiwibGFiZWwiLCJhZGRfaW5jciIsImZpcnN0X2xpbmsiLCJsYXN0X2xpbmsiLCJlcXVhbCIsInNpZ3MiLCJpc19maXJzdCIsImlzX2xhc3QiLCJqIiwiY291bnRlcl9hZ2VudF9pbmZvIiwicG9ydF9hIiwicG9ydF9iIiwicG9ydHMiLCJpbnRlcm5hbHMiLCJiZWZvcmUiLCJhZnRlciIsInJhd19pbmNyIiwibGlua19pbmNyIiwiYWdfaW5mbyIsImxpbmsiLCJjcmVhdGVkIiwicmFfZXJhc2VkIiwiZHN0IiwicmFfdHlwZSIsInJhX3BvcnRzIiwiYmVmb3JlX3N3aXRjaCIsInJhX2ludHMiLCJyYV9hZ2VudCIsImVyYXNlX2luY3IiLCJpbmNycyIsImluY3JfcyIsImluY3IiLCJydWxlX2FnZW50IiwiY29tcGlsZV9jb3VudGVyX2luX3J1bGUiLCJjb3VudGVyc19pbmZvIiwicnVsZV9hZ2VudCQwIiwicmF3X2FnZW50Iiwib2siLCJsbmtfbmIiLCJsbmtfbmIkMCIsImNyZWF0ZWRfaW5jciIsIm1peF9pbmNyIiwiY291bnRlcnNfZGVmcyIsInBvcnRfaWQiLCJzdGFydF9saW5rX25iIiwiYWNjX2luY3JzIiwiY291bnRlcl9zaWciLCJyYSIsImxvY19kZWx0YSIsImNvdW50ZXJfdGVzdCIsImokMCIsInN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQiLCJsaW5rX2Zvcl9lcmFzZWQiLCJ0ZXN0X2luY3IiLCJhZGp1c3RfZGVsdGEiLCJzd2l0Y2gkMCIsIm5ld19saW5rX25iIiwibmV3X2luY3JzIiwiYmxzIiwiYWxzIiwiY3JlYXRlZF9pbmNyX25ldyIsIm1peF9pbmNyX25ldyIsImluY3JzX2NyZWF0ZWQiLCJyYXdfYWdlbnQkMCIsImFnZW50X25hbWUkMCIsImNvcnJlY3RlZF9qIiwiZmluYWxfbG5rX25iIiwiaW5jcnNfY3JlYXRlZCQwIiwicnVsZV9hZ2VudF9taXgiLCJyYXdfbWl4IiwiY291bnRlcnNfcGVydHVyYmF0aW9ucyIsImFzdF9zaWdzIiwiYWdlbnRfdHlwZSIsImZpbGVuYW1lIiwic3RvcF9tZXNzYWdlIiwibW9kcyIsImxvY19hZyIsImFnX2lkIiwic2lnbiIsImFyaXR5IiwiY19uYSIsImNfaWQiLCJtYXhfdmFsIiwidmFsX29mX2NvdW50ZXIiLCJtYWtlX2NvdW50ZXIiLCJuYW1lIiwiYWRkX2NvdW50ZXJfdG9fY29udGFjdF9tYXAiLCJhZGRfbGlua19jb250YWN0X21hcCIsImFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMiLCJhc3RfY291bnRlcnMiLCJyYV9jb3VudGVycyIsInBzZXQiLCJwc2V0JDAiLCJhbm5vdGF0ZV9lZGl0X2NvdW50ZXJzIiwiYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIiwibGMiLCJyYyIsImNzZXQiLCJjc2V0JDAiLCJyYyQwIiwiYyQxIiwicmNfciIsImFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMiLCJjb3VudGVyX2xpc3QiLCJhZ2VudF9pZCIsImFnZW50X3NpZ25hdHVyZSIsImNvdW50ZXJfaW5mbyIsImNvbnZlcnRfdmFsdWUiLCJjb252ZXJ0X2RlbHRhIiwibWFwX29wdCIsIm9wdCIsInJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCIsImJ1aWxkX2xfdHlwZSIsImRzdF90eSIsImRzdF9wIiwidHlfaWQiLCJwX2lkIiwiY29udGFjdF9tYXAiLCJzdHkiLCJzcCIsImR0eSIsImRwIiwiY29udGFjdF9tYXAkMCIsInNsIiwiZGwiLCJkaSIsInJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIiwic29ydCIsIndhcm5pbmdfZm9yX2NvdW50ZXJzIiwic2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIiwiYWdfdHkiLCJidWlsZF9saW5rIiwid2Fybl9vbl9zd2FwIiwibGlua3NfdHdvIiwibGlua3Nfb25lIiwib25lJDAiLCJuZXdfbGluayIsIm9uZSIsInN3aXRjaCQxIiwiZHN0X2lkIiwibWFpbnRhaW5lZCIsImxpbmtfc3dhcCIsImFubm90YXRlX2Ryb3BwZWRfYWdlbnQiLCJzeW50YXhfdmVyc2lvbiIsInJfZWRpdF9zdHlsZSIsImxpbmtzX2Fubm90Iiwic2ltcGxlX3BvcnRfbGlzdCIsImxhbm5vdCIsInBfcG9zIiwicG9zJDUiLCJwb3MkMSIsInBvc19saW5rIiwicG9zJDIiLCJwb3J0X25hbWUkMCIsInBvcyQzIiwibGFubm90JDAiLCJwb3NfbGluayQwIiwicG9zJDQiLCJwb3J0X25hbWUkMSIsImFubm90YXRlX2NyZWF0ZWRfYWdlbnQiLCJyYW5ub3QiLCJyYW5ub3QkMCIsInRyYW5zbGF0ZV9tb2RpZmljYXRpb24iLCJ3YXJuX2luZm8iLCJyaHNfbGlua3MiLCJsaHNfbGlua3MiLCJzaXRlX25hbWUiLCJwb3NfaiIsInJoc19saW5rcyQwIiwiYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIiwibHAiLCJycCIsInJlZ2lzdGVyX3BvcnRfbW9kaWYiLCJsbmsxIiwicmhzX2xpbmtzJDEiLCJwb3MkNiIsIm5hJDEiLCJyaHNfbGlua3MkMiIsInBvcyQ3IiwiaSQyIiwibGhzX2xpbmtzJDIiLCJ2YSQxIiwibGhzX2xpbmtzJDAiLCJsaHNfbGlua3MkMSIsInJoc19saW5rcyQzIiwicG9zX2xpbmskMSIsImRzdF90eSQwIiwiZHN0X3AkMCIsInBvcyQxMSIsIm5hJDQiLCJwb3MkOCIsIm5hJDIiLCJwb3MkOSIsImkkMyIsInBvcyQxMCIsIm5hJDMiLCJyaHNfbGlua3MkNCIsImRzdF90eSQxIiwiZHN0X3AkMSIsInBvcyQxMiIsImkkNCIsInJoc19saW5rcyQ1IiwicmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYiLCJpbnQxIiwidmFwb3MiLCJ2YXBvcyQwIiwidmEkMiIsImFubm90ZWQiLCJycCQwIiwiYW5ub3RlZCQwIiwicnBfciIsInNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdSIsImxzIiwicHMiLCJmaW5hbF9ydWxlX3Nhbml0eSIsInJoc19saW5rc19vbmUiLCJsaHNfbGlua3NfdHdvIiwibGhzX2xpbmtzX29uZSIsInJhJDAiLCJtb2RzJDAiLCJ3YXJuaW5nJDAiLCJhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIiwic3ludGF4X3ZlcnNpb24kMSIsImxocyQ3IiwicmhzJDkiLCJyaHMkMCIsImxpbmtzX2Fubm90JDEiLCJlcmFzZWQiLCJhZGRlZCIsImxtb2QiLCJsYWdfcyIsImxwb3MiLCJsYWdlbnRfbmFtZSIsInJtb2QiLCJyYWdfcyIsInJwb3MiLCJyYWdlbnRfbmFtZSIsImxhZ19jIiwibGFnX3AiLCJyYWdfYyIsInJhZ19wIiwibGlua3NfYW5ub3QkMCIsImxhZyIsInJhZyIsImxsaW5rcyIsInJsaW5rcyIsImNtaXgiLCJzeW50YXhfdmVyc2lvbiQwIiwibGlua3NfYW5ub3QkNyIsImxpbmtzX2Fubm90JDYiLCJtaXgkMyIsImNtaXgkMiIsImxocyQ0IiwicmhzJDYiLCJsaHMkNSIsInJocyQ3IiwicmhzJDgiLCJsaHMkNiIsImxpbmtzX2Fubm90JDIiLCJtaXgkMCIsImNtaXgkMCIsImxocyQxIiwicmhzJDEiLCJsYWdlbnRfbmFtZSQwIiwibGhzJDIiLCJsbW9kJDAiLCJscG9zJDAiLCJyaHMkMyIsInJhJDEiLCJtaXgkMiIsImxpbmtzX2Fubm90JDQiLCJyaHMkMiIsInJtb2QkMCIsInJhZ19zJDAiLCJycG9zJDAiLCJyYWdlbnRfbmFtZSQwIiwibGFnX2MkMCIsImxhZ19wJDAiLCJyYWdfYyQwIiwicmFnX3AkMCIsImxpbmtzX2Fubm90JDMiLCJtaXgkMSIsImxocyQzIiwicmhzJDQiLCJybW9kJDEiLCJhZ2VudF90eXBlJDAiLCJjb3VudGVyX2xpc3QkMCIsInNpbXBsZV9wb3J0X2xpc3QkMCIsImNtaXgkMSIsImxpbmtzX2Fubm90JDUiLCJyaHMkNSIsImFubm90YXRlX2VkaXRfbWl4dHVyZSIsImlzX3J1bGUiLCJuZXdzIiwic2Nhbl9wb3J0IiwibW9kaWYkMCIsIm1vZGlmJDEiLCJtb2RpZiQyIiwibW9kaWYkMyIsInZhJDMiLCJtb2RpZiQ0IiwiaV9pZCIsIm1peHR1cmVfb2ZfYXN0IiwiY29udmVydF90b2tlbl9uYW1lIiwidGtfbmFtZSIsImFsZ19leHByX29mX2FzdCIsImFsZ3MiLCJtYXhfYWxsb3dlZF92YXIiLCJhJDAiLCJsYWIiLCJubyIsInllcyIsImJvb2xfZXhwcl9vZl9hc3QiLCJ0a19uYW1lJDAiLCJhc3QkMCIsInkkMCIsInByaW50X2V4cHJfb2ZfYXN0IiwiYXNzZW1ibGVfcnVsZSIsInJfY3JlYXRlZCIsInJfbWl4IiwiYWwiLCJyX2RlbHRhX3Rva2VucyIsInJfcmF0ZSIsImRpc3QiLCJ1bl9yYXRlIiwidW5fcmF0ZSQwIiwicl91bl9yYXRlIiwibW9kaWZfZXhwcl9vZl9hc3QiLCJhc3RfcnVsZSIsInJ1bGVfY29udGVudCIsImNyZWF0ZWRfbWl4IiwibWl4dHVyZSIsInJ1bGVfY29udGVudCQwIiwiY3JlYXRlZF9taXgkMCIsIm1peHR1cmUkMCIsImhvdyIsInJlbCIsInAkNSIsImFkZF91bl92YXJpYWJsZSIsInJhdGVfdmFyIiwiayQxIiwiYWNjX3VuIiwiYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfIiwiYnVpbGRfY29udGFjdF9tYXAiLCJhZ2VudF9zaWdzX3ByZSIsInNpemVfc2lncyIsImFnX25hbWUiLCJzaXRlX25hbWVfYWcxIiwic2l0ZV9zaWciLCJzaXRlX2xpbmtzIiwiYWcyX25hbWUiLCJzaXRlX25hbWVfYWcyIiwiYWcyX2lkIiwic2l0ZV9pZCIsInNob3VsZF9yYWlzZV9mb3JfbWlzc2luZ19saW5rIiwiaW5pdF9vZl9hc3QiLCJpbml0cyIsImluaSIsIndobyIsImludmVydGVkX2NvdW50ZXJfbmFtZSIsImNvbXBpbF9vZl9hc3QiLCJ2YXJfb3ZlcndyaXRlIiwiYXN0X2NvbXBpbCQwIiwiY291bnRlcl9mb2xkX2luX21peHR1cmUiLCJhY2MyIiwiYWdlbnRfbGlzdCIsImFjYzMiLCJhZ2VudCIsInNpdGVfbGlzdCIsImFjYzQiLCJjb3VudGVyX2ZvbGRfaW5fZXhwciQwIiwiZTEiLCJjb3VudGVyX2ZvbGRfaW5fZXhwciIsImUyIiwiZTEkMCIsImViIiwiY291bnRlcl9mb2xkX2luX2JleHByJDAiLCJiZXhwciIsImJleHByJDAiLCJiZXhwciQxIiwiYmUxIiwiY291bnRlcl9mb2xkX2luX2JleHByIiwiYmV4cHIkMiIsImNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQiLCJjb3VudGVyX2ZvbGRfaW5fcnVsZSIsInJ1bGUkMCIsImUkMCIsImUkMSIsImUkMiIsImFjYyQzIiwiZSQzIiwiYWNjJDQiLCJjb3VudGVyX2ZvbGRfaW5fcHJpbnQiLCJpbml0IiwibDEiLCJ2YXJpYWJsZV9kZWYiLCJsMiIsIm9ic19kZWYiLCJsMyIsImw0IiwicGVydHVyYmF0aW9uIiwiYjJfb3B0IiwibW9kX2xpc3QiLCJiMV9vcHQiLCJtb2RfZGVmIiwibCQyIiwiY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzIiwiYWdlbnRfbW9kIiwiY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fIiwiY291bnRlcl9vcmlnIiwiY291bnRlcl9zaWdfbmFtZSIsInVwZGF0ZSIsInJlZl9tYXgiLCJyZWZfbWluIiwiY29udmVydF9pbmZvIiwiY291bnRlcl9zaWdfdmlzaWJsZSIsIm1hcCQwIiwibmV3X2NvdW50ZXJfc2l0ZXMiLCJjb3VudGVyX2NvbnZlcnNpb25faW5mb19tYXAiLCJyZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IiwiY29udmVyc2lvbl9pbmZvIiwiY2x0ZV92YWx1ZV9vcl9ub25lIiwibmV3X3NpdGUiLCJvcmlnaW5hbF9jb3VudGVyX3NpdGUiLCJpbnZlcnRlZF9jb3VudGVyX3NpdGUiLCJzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMiLCJhZGRlZF9zaXRlcyIsIm5ld19zaXRlX2xpc3QiLCJhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X20iLCJtYXBfZXhwciIsIm1hcF9iZXhwciIsIm1hcF9ydWxlIiwicmV3cml0ZSIsInJ1bGVfZGVmIiwiaW5pdF9raW5kIiwicXVhbnRpdHlfYWxnX2V4cHIiLCJpbml0JDAiLCJ2YXJpYWJsZXMiLCJvYnNlcnZhYmxlcyIsIm1hcF9wcmludCIsIm1hcF9tb2RpZiIsImwkMyIsImEkMSIsImwkNCIsImwkNSIsImV4dCIsInBlcnR1cmJhdGlvbnMiLCJhc3RfY29tcGlsIiwiYWdlbnRfc2lnX2lzX2ltcGxpY2l0IiwiYXN0X2NvbXBpbCQxIiwiYXN0X2NvbXBpbCQyIiwiYWNjMCIsImFjYzEiLCJhY2NfY291bnRlcnNfcGVyX2FnZW50IiwiYWNjX3NpZ3MiLCJhY2NfY291bnRlcl9uYW1lcyIsImFjY19zaXRlX3NpZ3MiLCJhY2NfbGlua3MiLCJjb3VudGVyc19hZ2VudCIsInNpdGVfc2lnc19wcmVfbmFtZWRkZWNscyIsInNpdGVfc2lnc19uZCIsImNvdW50ZXJzX3Blcl9hZ2VudCIsInNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyIsInNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyQwIiwiY291bnRlcl9hZ2VudF9uYW1lIiwiYV9wb3J0X25hbWUiLCJiX3BvcnRfbmFtZSIsImFfcG9ydF9zaWciLCJjb3VudGVyc19mcm9tX2FnZW50IiwiYWdlbnRfY291bnRlcl9wb3J0X25hbWUiLCJiX2xpbmtzIiwiYl9wb3J0X3NpZyIsInNpdGVfc2lnc19jb3VudGVyX2FnZW50IiwiYWdlbnRfc2lncyIsImFnZW50c19zaWciLCJzaXplIiwiaW50ZXJmYWNlJDAiLCJyX3BvcyIsImxhYmVsX29wdCIsInByaW50ZXIiLCJzZXQiLCJzZXQkMCIsInNldCQxIiwicnVsZV9sYWJlbCIsInJ1bGVfbmFtZXMiLCJrX2RlZiQwIiwia19kZWYkMSIsInJhdGVfdmFyJDAiLCJyYXRlX3Zhcl91biIsImNyZWF0ZWRfbWl4JDEiLCJtaXh0dXJlJDEiLCJyYXRlX3Zhcl91biQwIiwia19vcF91biQwIiwiYWNjX3VuJDAiLCJjcmVhdGVkX21peCQyIiwibWl4dHVyZSQyIiwiY2xlYW5lZF9ydWxlcyIsImV4dHJhX3ZhcnMiLCJ2YXJzIiwidmFyJDAiLCJhY2NfdmFycyIsIm92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZyIsIm90aGVyX292ZXJ3cml0ZV92YXJzIiwibWF0Y2hzIiwidiIsImFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcCIsInJldl9hbGdfdmFycyIsInZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQiLCJhbGdfdmFyc193aXRoX3Jld3JpdHRlbl92YXJzIiwiYWxnX3ZhcnNfYXJyYXkiLCJhbGdfdmFyc19maW5kZXIiLCJ0b2tlbl9uYW1lcyIsInRva2Vuc19maW5kZXIiLCJ1cF92YXJzJDAiLCJ1cF92YXJzIiwidXBkYXRlZF9hbGdfdmFycyIsInBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzIiwicGVydHVyYmF0aW9ucyQwIiwidmFyaWFibGVzJDAiLCJvYnNlcnZhYmxlcyQwIiwiaW5pdCQxIiwieXlsaHMiLCJ5eWxlbiIsInl5ZGVmcmVkIiwieXlkZ290byIsInl5c2luZGV4IiwieXlyaW5kZXgiLCJ5eWdpbmRleCIsInl5dGFibGUiLCJ5eWNoZWNrIiwieXluYW1lc19jb25zdCIsInl5bmFtZXNfYmxvY2siLCJhZGRfcG9zIiwicmhzX3BvcyIsImVuZF9wb3MiLCJzdGFydF9wb3MiLCJpbnRlcm5hbF9tZW1vcnkiLCJhZGQiLCJ5eXRyYW5zbF9jb25zdCIsInl5dHJhbnNsX2Jsb2NrIiwieXl0YWJsZXNpemUiLCJ5eWFjdCIsImNhbWxfcGFyc2VyX2VudiIsIl8yIiwiXzEiLCJfNSIsIl8zIiwiXzciLCJfNCIsIl84IiwiYW4iLCJwZW5kIiwiXzkiLCJfMTEiLCJ6Iiwicm1fdG9rZW4iLCJhZGRfdG9rZW4iLCJkZWx0YV90b2tlbiIsIl82Iiwia2JhY2sxIiwia2JhY2siLCJwb3NfZW5kIiwiZXBhdCIsInBhdCIsInBlbmRwIiwicGF1c2UiLCJlZmYiLCJ5eXRhYmxlcyIsIm1vZGVsIiwibGV4ZnVuIiwibGV4YnVmIiwiaW50ZXJhY3RpdmVfY29tbWFuZCIsInN0YW5kYWxvbmVfZWZmZWN0X2xpc3QiLCJzdGFuZGFsb25lX2Jvb2xfZXhwciIsImFwcGVuZF90b19hc3RfY29tcGlsIiwicmV2X2luc3RyIiwic3RyX3BvcyIsInZvbF9wYXJhbSIsInZvbCIsInZvbF90eXBlIiwiaW5pdF90IiwidmFyJDEiLCJsYmwiLCJlZmZlY3QiLCJ2YWx1ZV9saXN0IiwicGFyYW1fbmFtZSIsInJ1Iiwib2NhbWxfbGV4X3RhYmxlcyIsImtleXdvcmRzIiwidG9rZW4iLCJvY2FtbF9sZXhfdG9rZW5fcmVjIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsImlubGluZV9jb21tZW50IiwicyQxIiwibGFiJDAiLCJzJDIiLCJhY2MkNSIsImFjYyQ2IiwieCQ0IiwiYWNjJDciLCJ4JDUiLCJhY2MkOCIsImFjYyQ5IiwiZXJyIiwiZXJyJDAiLCJjb21waWxlIiwibG9nZ2VyIiwiZmljIiwiY29tcGlsJDAiLCJtc2ciLCJ3cml0ZV9jYXRhbG9nX2l0ZW0iLCJvYiIsInBvc2l0aW9uIiwicmVhZF9jYXRhbG9nX2l0ZW0iLCJrZXkiLCJjb3VudCIsImNyZWF0ZSIsInB1dCIsInJhbmsiLCJjYXRhbG9nIiwiYWllIiwiZmlsZV9jcmVhdGUiLCJmaWxlX21vdmUiLCJmaWxlX3BhdGNoIiwiZmlsZV9kZWxldGUiLCJmaWxlX2dldCIsInBhcnNlIiwieWllbGQkMCIsInRleHQiLCJyYW5nZSIsImNvbXBpbGUkMCIsImV4biIsIm1lc3NhZ2UiLCJtZXNzYWdlJDAiLCJpbnN0cyIsIm92ZXJ3cml0ZSIsIml0Iiwic3RhcnRfcnVsZSIsInNwYWNlX2NoYXJzIiwicmVzZXRfZW9mIiwidG9rZW4kMCIsInJlYWRfbGFiZWwiLCJvY2FtbF9sZXhfc3RhdGUkMiIsIm9jYW1sX2xleF9zdGF0ZSQzIiwic3RyJDAiLCJjaGFyX2xpc3QiLCJyZXBseSIsIndyaXRlX3YiLCJ3cml0ZV9jYXRhbG9nX2l0ZW1zIiwibGlmdF9hbnN3ZXIiLCJvbl9tZXNzYWdlIiwiY3VycmVudF9pZCIsImFuc3dlciIsIm1zZ19pZCIsIm1zZ19pZCQwIiwibXNnX2lkJDEiLCJtc2dfaWQkMiIsIm91dCQ0IiwicG9zaXRpb24kMCIsImlkJDQiLCJjb250ZW50JDEiLCJvdXQkMyIsImlkJDMiLCJvdXQkMiIsImlkJDIiLCJvdXQkMSIsImlkJDEiLCJvdXQkMCIsImNvbXBpbGVfbW9kZV9vbiIsImRvbWFpbiIsImRvbWFpbiQwIiwiZG9tYWluJDEiLCJhJDIiLCJkb21haW4kMiIsImRvbWFpbiQzIiwib3JpZ2luIiwiY2NzIiwiZG9tYWluJDQiLCJvdXRfY2NzIiwiY29uZCQwIiwiZG9tYWluJDUiLCJ5ZXMkMCIsImRvbWFpbiQ2Iiwibm8kMCIsImRvbWFpbiQ3IiwiYSQzIiwiYSQ0IiwiY29tcGlsZV9wdXJlX2FsZyIsImNvbXBpbGVfYWxnIiwiY29tcGlsZV9ib29sIiwicnVsZXNfb2ZfYXN0IiwiZGVwc19tYWNoaW5lcnkiLCJzeW50YXhfcmVmIiwiYWxnX2V4cHIiLCJkZWx0YV90b2tzIiwiZGVwcyIsImNycCIsInJhdGUiLCJkJDAiLCJkJDEiLCJkaXN0JDAiLCJ1bnJhdGUiLCJ1bmFyeV9pbmZvcyIsImJvb2wiLCJvcmlnaW4kMCIsInJ1bGVfbWl4dHVyZXMiLCJkZXBzX2FsZ3MkMCIsIm5lZyIsInN5bnRheCIsImNjcyQwIiwidXIiLCJkZXBzX2FsZ3MiLCJydWxlc19sIiwibyQwIiwiZCQyIiwiZCQzIiwiY29tcGlsZV9wcmludF9leHByIiwiZXgiLCJlbCIsImFzdF9hbGciLCJlZmZlY3RzX29mX21vZGlmcyIsImFzdF9hbGdzIiwiYXN0X3J1bGVzIiwicmV2X2VmZmVjdHMiLCJhbGdfcG9zIiwiZWxlbV9ydWxlcyIsImVsZW1fcnVsZSIsImFsZ19leHByJDAiLCJhbGdfcG9zJDAiLCJwZXhwciIsInBleHByJDAiLCJwZXhwciQxIiwicGV4cHIkMiIsInByaW50IiwicGV4cHIkMyIsInBleHByJDQiLCJwcmludCQwIiwidGVzdHMiLCJkb21haW4kOCIsInBleHByJDUiLCJwZXhwciQ2IiwiZG9tYWluJDkiLCJwZXhwciQ3IiwicGV4cHIkOCIsImRvbWFpbiQxMCIsInBleHByJDkiLCJwZXhwciQxMCIsImRvbWFpbiQxMSIsImNjcyQxIiwiZG9tYWluJDEyIiwiYXJyIiwiY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIiwiY29tcGlsZV9pbml0cyIsInJlc2NhbGUiLCJlbnYiLCJwcmVlbnYiLCJtaXhfcG9zIiwiYWxnJDEiLCJwcmVlbnYkMCIsImZha2VfcnVsZSIsImNvbXBpbGVkX3J1bGUiLCJwcmVlbnYkMSIsInRrX2wiLCJ0a19pZCIsImZha2VfcnVsZSQwIiwiY29tcGlsZWRfcnVsZSQwIiwiaW5pdF9sIiwib3V0cHV0cyIsInJldHVybiQwIiwic2hhcmluZyIsIm92ZXJ3cml0ZV9pbml0Iiwib3ZlcndyaXRlX3QwIiwicmVzY2FsZV9pbml0Iiwic2lnc19uZCIsInRrX25kIiwicmVzdWx0IiwibGJsX3BvcyIsImFsZ19hIiwiYWxnX25kIiwiYWxnX2RlcHMiLCJjciIsImZkb21haW4iLCJmcnVsZXMiLCJmYWxnX2RlcHMiLCJjb21waWxlZF9ydWxlcyIsImFsZ19kZXBzJDAiLCJydWxlX25kIiwib3B0X3Bvc3QiLCJtb2RpZl9leHByX2xpc3QiLCJwcmVfZXhwciIsInRyYWNraW5nX2VuYWJsZWQiLCJscGVydCIsInByZV9leHByJDAiLCJ0X3ZhciIsInQwIiwiZWZmZWN0cyIsInBvc3RfZXhwciIsInBvc3RfcG9zIiwiaGFzX3RyYWNraW5nIiwibmVlZHNfYmFja3RyYWNrIiwicmVwZWF0IiwicGVydCIsIm91dF9hbGdfZGVwcyIsImNvbnQiLCJvYnMiLCJkb21fc3RhdHMiLCJidWlsZF9pbml0aWFsX3N0YXRlIiwiYmluZCIsIndpdGhfdHJhY2UiLCJ3aXRoX2RlbHRhX2FjdGl2aXRpZXMiLCJyYW5kb21fc3RhdGUiLCJncmFwaDAiLCJzdGF0ZTAiLCJkb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIiwiZ3JhcGgiLCJzdGF0ZSIsImNjX3ByZWVudiIsImNjX3ByZWVudiQwIiwiZ3JhcGgkMCIsImVudiQwIiwiZmVudiIsImdyYXBoJDEiLCJlbnYkMSIsIm9zdGF0ZSIsIm9ncmFwaCIsIm9zdG9wIiwiZ2V0X3BhdXNlX2NyaXRlcmlhIiwiYnBvcyIsInBvc19iIiwiZmluZF9hbGxfZW1iZWRkaW5ncyIsInRyIiwiZHVtbXlfaW5zdGFuY2VzIiwicm9vdCIsImV4cGVydF9tb2RlIiwiY29tcGFyZSIsImQiLCJjIiwiYiIsImEiLCJjbXAiLCJwcmludCIsImZtdCIsIm1heF9sZXZlbF9vcHQiLCJiJDAiLCJzaG93X2xldmVsIiwibHZsIiwiYWNjZXB0X2xldmVsX2Rpc3BsYXkiLCJhY2NlcHRfbGV2ZWxfdXNlIiwibm9rZXkiLCJrIiwiY3V0X2xpc3QiLCJzIiwiZG9pdCIsImFjY3VtIiwicG9zIiwiaSIsInAiLCJsIiwibCQwIiwiaSQwIiwib3JkZXIiLCJvcmRlcmVkIiwiY2F0Iiwib2xkX2x2bCIsImFzc28iLCJjaGVjayIsIm9wdHMiLCJrZXkiLCJ0IiwiZiIsInByaW50X21zZyIsInByaW50X29wdGlvbiIsInZlcmJvc2UiLCJtc2ciLCJzcGVjIiwia2V5MiIsInIiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJzJDAiLCJyJDQiLCJyJDUiLCJsaXN0IiwibGlzdCQwIiwidGFpbCIsImgyIiwiaDEiLCJyJDYiLCJyJDciLCJ2IiwiciQ4IiwiciQ5IiwibCQxIiwicHJpbnRfaGVscCIsImhlYWRlciIsIm5iIiwiaGVhZGVyJDAiLCJsdmwkMCIsImx2bF9vcHQiLCJ4IiwidmVyYm9zZSQwIiwidmVyYm9zZSQxIiwicGFyc2VfbGlzdCIsIndpdGhfdGsiLCJ0aXRsZSIsImxvbmdfaGVscCIsInNob3J0X2hlbHAiLCJzaG93X3ZlcnNpb24iLCJhY2N1bSQwIiwicmVtIiwib3B0Iiwib3B0JDAiLCJhYSIsInJlbSQzIiwicmVtJDIiLCJyZW0kMSIsInYkMCIsInJlbSQ3IiwicmVtJDUiLCJyZW0kNCIsInJlbSQ2IiwicmVtJDgiLCJ2JDEiLCJyZW0kOSIsInYkMiIsInJlbSQxMyIsInJlbSQxMSIsInJlbSQxMCIsInJlbSQxMiIsInYkMyIsInJlbSQxNyIsInJlbSQxNSIsInJlbSQxNCIsInJlbSQxNiIsInYkNCIsInJlbSQyMiIsInJlbSQyMCIsInJlbSQxOCIsInYkNSIsInJlbSQxOSIsInJlbSQyMSIsInYkNiIsInJlbSQyNSIsInJlbSQyNCIsInJlbSQyMyIsInYkNyIsInJlbSQyOSIsInJlbSQyNyIsInJlbSQyNiIsInJlbSQyOCIsInJlbSQzMCIsInYkOCIsInJlbSQzMSIsInYkOSIsInJlbSQzMiIsInIkMTAiLCJ5IiwicmVtJDMzIiwidiQxMCIsInJlbSQzNCIsImwkMiIsInJlbSQzNSIsInYkMTEiLCJyZW0kMzYiLCJyZW0kMCIsImZpbGVuYW1lcyIsIngkMCIsInBhcnNlIiwiZGVmIiwiYXJncyIsImRhdGFfc2V0Iiwib3V0cHV0Iiwic2VtYW50aWNzIiwiaW50ZWdyYXRpb25fc2V0dGluZ3MiLCJtb2RlbF9yZWR1Y3Rpb24iLCJzdGF0aWNfYW5hbHlzaXMiLCJkZWJ1Z19tb2RlIiwiZGVmYXVsdCQwIiwiZGVmYXVsdF9ndWkiLCJkb192ZXJzaW9uIiwiZG9fZ2x1dHRvbnkiLCJjb3B5X2Zyb21fZ3VpIiwidF9ndWkiLCJvcHRpb25zX2dlbiIsIm9wdGlvbnMiLCJvcHRpb25zX2d1aSIsImUiLCJhdXgiLCJhY2N1IiwiYWNjdSQwIiwidmFyX3ZhbCIsImFjY3UkMSIsIm0iLCJvdXRwdXREaXJlY3RvcnkiLCJvdXRwdXREYXRhRmlsZSIsInBvaW50TnVtYmVyVmFsdWUiLCJ0aW1lIiwiZmljIiwiY3JlYXRlIiwiYmFyX3NpemUiLCJiYXJfY2hhciIsImZvciQwIiwicHBfbm90X251bGwiLCJwcF90ZXh0IiwiZGVsdGFfdCIsInRfciIsImV2ZW50IiwiZV9yIiwiZHQiLCJzdHJpbmciLCJhdXhfdGljayIsInNvbWV0aGluZyIsIm4iLCJzb21ldGhpbmckMCIsIm4kMCIsIm4kMSIsInRpY2siLCJlZmZpY2llbmN5Iiwibl90Iiwibl9lIiwicnVuIiwiY29tcGxldGVfcHJvZ3Jlc3NfYmFyIiwidCQwIiwib3V0cHV0RGlyTmFtZSIsIm1hcnNoYWxpemVkT3V0RmlsZSIsImNmbG93RmlsZU5hbWUiLCJmbHV4RmlsZU5hbWUiLCJta19kaXJfciIsIm92ZXJ3cml0ZV9wZXJtaXNzaW9uIiwicGF0aCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfZnJlc2giLCJuYW1lIiwiY29uY2F0X2xpc3QiLCJmYWN1bHRhdGl2ZSIsImV4dCIsIm5hbWUkMCIsInRtcF9uYW1lIiwiYmFzZSIsIm92ZXJfZmxhZyIsImZsYWdzIiwiYmFzZSQwIiwic2V0IiwiZXh0X29wdCIsImZuYW1lIiwiY2hlY2tfbm90X2V4aXN0cyIsImZpbGUiLCJmaWxlJDAiLCJhbnN3ZXIiLCJzZXRDaGVja0ZpbGVFeGlzdHMiLCJiYXRjaG1vZGUiLCJvdXRwdXRGaWxlIiwid2l0aF9jaGFubmVsIiwic3RyIiwiZGVzYyIsIndyYXBfZm9ybWF0dGVyIiwiZnIiLCJzZXRfZGlyIiwiZ2V0X2RpciIsInNldF9tYXJzaGFsaXplZCIsIndpdGhfbWFyc2hhbGl6ZWQiLCJzZXRfY2Zsb3ciLCJ3aXRoX2NmbG93X2ZpbGUiLCJvcGVuX3Rhc2tzX3Byb2ZpbGluZyIsIm9wZW5fYnJhbmNoX2FuZF9jdXRfZW5naW5lX3BybyIsInNldF9mbHV4Iiwibm1lIiwid2l0aF9mbHV4Iiwic3RyJDAiLCJ3aXRoX3NuYXBzaG90Iiwic2l6ZSIsImJvcmRlciQwIiwiYm9yZGVyIiwiZHVtbXlfdmFsdWVzIiwiY29sb3JzIiwic3R5bGVzIiwiZ3JhZHVhdGlvbl9zdGVwIiwiZHJhd19sIiwibWluX2dyYWRfbCIsInZhX21pbiIsInZhX21heCIsIm5icl9kZWx0YSIsImRlbHRhX3ZhIiwibmJfZ3JhZCIsImV4YWN0X3N0ZXAiLCJkZWx0YV9ncmFkIiwidmFfbWluJDAiLCJ2YV9tYXgkMCIsImRyYXciLCJoJDAiLCJ3JDAiLCJiX2giLCJ6ZXJvX3ciLCJiX29wIiwiaCIsInciLCJ2YSQwIiwidF9tYXgiLCJxIiwidmEiLCJ2YV9tYXgkMSIsInZhX21pbiQyIiwidF9tYXgkMSIsImRhdGFfdyIsImRhdGFfaCIsInRfbWF4JDIiLCJncmFkX3ciLCJuYl93IiwidmFfbWF4JDIiLCJncmFkX2giLCJuYl9oIiwidmFfbWluJDMiLCJ6ZXJvX2giLCJkcmF3X2Z1biIsInkkMCIsInBwX2xpbmUiLCJ0b19zdHJpbmciLCJzdGgiLCJ3aWR0aCIsInRvX2ZpbGUiLCJjaGFuIiwiZm9ybSIsInhsc3dlYWtGaWxlTmFtZSIsInhsc3N0cm9uZ0ZpbGVOYW1lIiwiZGVmYXVsdEV4dEFycmF5U2l6ZSIsImRlZmF1bHRHcmFwaFNpemUiLCJkZWZhdWx0TGlmdFNldFNpemUiLCJkZWZhdWx0SGVhcFNpemUiLCJkZWJ1Z19tb2RlT24iLCJ0aW1lX2luZGVwZW5kZW50IiwiYmxhY2tsaXN0X2V2ZW50cyIsImRvX2dsb2JhbF9jdXQiLCJjdXRfcHNldWRvX2ludmVyc2VfZXZlbnQiLCJkb19sb2NhbF9jdXQiLCJkb19kZXRlY3Rfc2VwYXJhYmxlX2NvbXBvbmVudHMiLCJsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IiwibG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0IiwibG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MiLCJkdW1wX2dyaWRfYmVmb3JlX3dlYWtfY29tcHJlc3MiLCJkdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmUiLCJkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmkiLCJkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmkkMCIsImdldF9jYWNoZV9zaXplIiwicHJpbnRfZGVzYyIsInNwZWNpZXNfZGVzYyIsInV1aWQiLCJnZXRfZGVzYyIsInRibCIsImRfY2hhbiIsImFjdHNEZXNjciIsImVtcHR5QWN0cyIsInBsb3REZXNjciIsInRyYWNlRGVzY3IiLCJ0cmFjZU5vdEVtcHR5IiwiaW5pdGlhbGl6ZSIsImFjdGl2aXRpZXNfZmlsZSIsInRyYWNlX2ZpbGUiLCJwbG90UGFjayIsImVudiIsImRlc2MkMCIsIm5vQ291bnRlcnMiLCJuYl9yIiwicGFjayIsIndhcm5pbmdfYnVmZmVyIiwiZ28iLCJmbHV4IiwiZGluX25hbWUiLCJmbHV4JDAiLCJsYXN0IiwiayQwIiwiaGVhZCIsImZpbGVuYW1lIiwiZm9ybWF0IiwiaXNfdHN2IiwiZmQiLCJwJDAiLCJzdGVwIiwiZCQwIiwicyQxIiwibWl4dHVyZSIsImZpbGUkMSIsImlucHV0c0Rlc2MiLCJmbHVzaF93YXJuaW5nIiwiY2xvc2UiLCJldmVudCQwIiwicGxvdCIsImlucHV0cyIsImluaXRpYWxfaW5wdXRzIiwiY29uZiIsImluaXQiLCJpbnB1dHNfZm9ybSIsImlucHV0X21vZGlmaWNhdGlvbnMiLCJtb2RzIiwibG9nRmlsZSIsInRyYWNlRmlsZSIsImRvbWFpbk91dHB1dEZpbGUiLCJtYXJzaGFsaXplT3V0RmlsZSIsInRtcF92YXJfbmFtZSIsInByZXByb2Nlc3NfYXN0Iiwid2FybmluZyIsImthc2ltX2FyZ3MiLCJjbGlfYXJncyIsImFzdCIsImNmbG93RmlsZSIsImZvcm1hdENmbG93Iiwic3RvcnlfY29tcHJlc3Npb24iLCJzeW50YXhfdmVyc2lvbiIsImthc2ltX2FyZ3MkMCIsImluaXRpYWxNaXgiLCJ2YXJfb3ZlcndyaXRlIiwiYXN0X2NvbXBpbGVkX2RhdGEiLCJjb21waWwiLCJjb25mJDAiLCJvdmVyd3JpdGVfdDAkMCIsIm92ZXJ3cml0ZV9pbml0IiwiZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMiLCJmaWxlX2xpc3QiLCJjb21waWxpbmdfZnVuY3Rpb24iLCJnZXRfYXN0X2Zyb21fY2xpX2FyZ3MiLCJnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV8iLCJnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3QiLCJjb21waWxlX21vZGVfb24iLCJwcmVwcm9jZXNzZWRfYXN0IiwiaW5pdF9sIiwiaGFzX3RyYWNraW5nIiwiZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayIsImluaXRfdF9mcm9tX2ZpbGVzIiwicGxvdF9wZXJpb2QkMCIsIm1heF9ldmVudCQwIiwiaW5pdF9lIiwibWF4X3RpbWUiLCJpbml0X3QiLCJhJDAiLCJwbG90X3BlcmlvZCQxIiwibWF4X3RpbWUkMCIsImluaXRfdCQwIiwiY291bnRlciIsImdldF9jb21waWxhdGlvbl9mcm9tX3ByZXByb2NlcyIsInN0aCQwIiwiZ2V0X2NvbXBpbGF0aW9uIiwibWFyc2hhbGl6ZWRfZmlsZSIsImNvbXBpbGF0aW9uX3Jlc3VsdCIsImFsZ19vdmVyd3JpdGUiLCJvdmVyd3JpdGVfdDAiLCJyYXdfaW5pdHMiLCJlJDAiLCJkJDEiLCJlcnJvcl9tc2ciLCJhZ2VudCIsImNvbnRhY3RtYXAiLCJhY2N1cmFjeV9zdHJpbmciLCJkZWFkX3J1bGVzIiwiZGVhZF9hZ2VudHMiLCJtYXAiLCJpbnRlcmZhY2UkMCIsInNpdGUiLCJzdGF0ZXNsaXN0Iiwic2l0ZW5hbWUiLCJzaXRldHlwZSIsInNpdGVsaW5rcyIsInNpdGVzdGF0ZXMiLCJzaXRlbm9kZW5hbWUiLCJzaXRlbm9kZWlkIiwic2l0ZW5vZGVzaXRlcyIsImh5cCIsInJlZmluZW1lbnQiLCJkb21haW5fbmFtZSIsInJlZmluZW1lbnRzX2xpc3QiLCJyZWZpbmVtZW50X2xlbW1hcyIsInJ1bGVfaWQiLCJhZ2VudF9pZCIsImxhYmVsIiwiYXN0IiwicG9zaXRpb24iLCJwb3NpdGlvbl9saXN0IiwidmFyaWFibGUiLCJydWxlIiwiZGlyZWN0Iiwic2lkZV9lZmZlY3QiLCJzb3VyY2UiLCJ0YXJnZXRfbWFwIiwidGFyZ2V0IiwibG9jYXRpb25fcGFpcl9saXN0IiwicmhzIiwibGhzIiwiaW5mbHVlbmNlbWFwIiwibm9kZXNvZmluZmx1ZW5jZW1hcCIsIndha2V1cCIsImluaGliaXRpb24iLCJub2RlcyIsInRvdGFsX3N0cmluZyIsImZ3ZF9zdHJpbmciLCJid2Rfc3RyaW5nIiwib3JpZ2luIiwiZGlyZWN0aW9uIiwicnVsZV9oaWRkZW4iLCJzY2MiLCJhY2N1cmFjeV9jbSIsImFjY3VyYWN5X3NjYyIsImNvbnRhY3RtYXBzY2MiLCJjb3VudGVyIiwiaW5mIiwic3VwIiwia2V5IiwibG9jYWxpdHkiLCJhY2N1cmFjeV9sZXZlbHMiLCJjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbHMiLCJpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVscyIsInJlZHVjdGlvbl9hY2N1cmFjeV9sZXZlbHMiLCJmcmVlIiwid2lsZGNhcmQiLCJib3VuZCIsImJvbmRfaWQiLCJib3VuZF90byIsImJpbmRpbmdfdHlwZSIsInByb3AiLCJiaW5kIiwiYmluZGluZ190eXBlX2JhY2tlbmRfc3ltYm9sIiwiZnJlZV9iYWNrZW5kX3N5bWJvbCIsIm1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfcyIsIndpbGRjYXJkX2JhY2tlbmRfc3ltYm9sIiwiYm91bmRfdG9fdW5rbm93bl9iYWNrZW5kX3N5bWJvIiwiaW50ZXJuYWxfc3RhdGVfaW50cm9kdWN0aW9uX2JhIiwiaW50ZXJuYWxfc3RhdGVfZGVsaW1pdGVyX2JhY2tlIiwiYmluZGluZ19zdGF0ZV9kZWxpbWl0ZXJfYmFja2VuIiwiYmluZGluZ19zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfIiwiYmluZGluZ19zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfIiwiaW50ZXJuYWxfc3RhdGVfb3BlbmluZ19iYWNrZW5kIiwiaW50ZXJuYWxfc3RhdGVfY2xvc2luZ19iYWNrZW5kIiwiY291bnRlcl9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfIiwiY291bnRlcl9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfIiwiY291bnRlcl9zdGF0ZV9yYW5nZV9iYWNrZW5kX3N5Iiwib3Blbl9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sIiwiY2xvc2VfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvIiwib3Blbl9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sIiwiY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvIiwicGx1c19pbmZpbml0eV9zeW1ib2wiLCJtaW51c19pbmZpbml0eV9zeW1ib2wiLCJhY2N1cmFjeV90b19zdHJpbmciLCJhY2N1cmFjeV90b19qc29uIiwieCIsImFjY3VyYWN5X29mX3N0cmluZyIsImFjY3VyYWN5X29mX2pzb24iLCJqc29uIiwiY29tcGFyZSIsImEiLCJiIiwicHJpbnQiLCJmIiwic2l0ZV90b19qc29uIiwicCIsImwiLCJ5IiwieHIiLCJ4bCIsInR5Iiwic2kiLCJpIiwic2l0ZV9vZl9qc29uIiwibCQwIiwianNvbiQxIiwic2l0ZV9uYW1lIiwianNvbiQyIiwicG9ydF9saW5rcyIsImpzb24kMCIsInBvcnRfc3RhdGVzIiwic2l0ZV90eXBlIiwic2l0ZV9ub2RlX3NpdGVzX29mX2pzb24iLCJzaXRlX25vZGVfdG9fanNvbiIsIm5vZGUiLCJsaXN0Iiwic2l0ZV9ub2RlX29mX2pzb24iLCJub2RlX2lkIiwibm9kZV90eXBlIiwibm9kZV9zaXRlcyIsImNvbnRhY3RfbWFwX3RvX2pzb24iLCJjb250YWN0X21hcCIsImNvbnRhY3RfbWFwX29mX2pzb24iLCJzdHJpbmdfcGFpcl90b19qc29uIiwic3RyaW5nX3BhaXJfb2ZfanNvbiIsInN0cmluZ19wYWlyX3BhaXJfdG9fanNvbiIsInN0cmluZ19wYWlyX3BhaXJfb2ZfanNvbiIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF90b19qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF90b18iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF9vZl8iLCJzY2NfdG9fanNvbiIsInNjY19hY2MiLCJjbV9hY2MiLCJzY2Nfb2ZfanNvbiIsInJ1bGVfdG9fanNvbiIsImQiLCJqc29uX3RvX3J1bGUiLCJzIiwidmFyX3RvX2pzb24iLCJ2YXIkMCIsImpzb25fdG9fdmFyIiwiaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsImkkMCIsImluZmx1ZW5jZV9ub2RlX29mX2pzb24iLCJzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIiwic2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsImxvYyIsInBvc19vZl9ydWxlc19hbmRfdmFyc190b19qc29uIiwicG9zX29mX3J1bGVzX2FuZF92YXJzX29mX2pzb24iLCJzaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSIsInBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlXyIsInIiLCJ2IiwiY29tcGFyZSQwIiwicHJpbnQkMCIsInIkMCIsImR1bXBfbG9jYXRpb24iLCJmbXQiLCJpbnQkMCIsImludCQxIiwiZHVtcF9sb2NhdGlvbl9wYWlyIiwiZHVtcF9sb2NhdGlvbl9wYWlyX2xpc3QiLCJzdHJpbmdfb2ZfbGFiZWxfbGlzdCIsImxvY2F0aW9uX3RvX2pzb24iLCJsb2NhdGlvbl9vZl9qc29uIiwib3B0Iiwic3RoIiwiaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiIsIm5vZGVzX2xpc3RfdG9fanNvbiIsIm5vZGVzX2xpc3Rfb2ZfanNvbiIsImluZmx1ZW5jZV9tYXBfdG9fanNvbiIsImluZmx1ZW5jZV9tYXAiLCJub2Rlc19vZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJub2Rlc19saXN0Iiwibm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uIiwibG9jYWxfaW5mbHVlbmNlX21hcF90b19qc29uIiwiaW5mbHVlbmNlX21hcCQwIiwib3JpZ2luX29wdCIsImZ3ZCIsImJ3ZCIsInRvdGFsIiwiYWNjdXJhY3kiLCJpbmZsdWVuY2VfbWFwX29mX2pzb24iLCJsb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24iLCJlcnJvcl9tc2ckMCIsIm9yaWdpbiQwIiwieCQwIiwibCQxIiwiZGVhZF9ydWxlc190b19qc29uIiwiZGVhZF9ydWxlc19vZl9qc29uIiwianNvbl90b19hZ2VudF9raW5kIiwiYWdlbnRfa2luZF90b19qc29uIiwiYWdlbnRfa2luZCIsImpzb25fb2ZfZGVhZF9hZ2VudHMiLCJqc29uX3RvX2RlYWRfYWdlbnRzIiwic2VwYXJhdGluZ190cmFuc2l0aW9uc190b19qc29uIiwic2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIiwibGVtbWFfdG9fanNvbiIsInNpdGVfZ3JhcGhfdG9fanNvbiIsImxlbW1hX29mX2pzb24iLCJzaXRlX2dyYXBoX29mX2pzb24iLCJnZXRfaHlwIiwiaCIsImdldF9yZWZpbmVtZW50Iiwic3RyaW5nX29mX2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWUiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiYmluZGluZ19zdGF0ZV9saWdodF9vZl9qc29uIiwiaiIsImJpbmRpbmdfc3RhdGVfbGlnaHRfdG9fanNvbiIsImJvbmRfaW5kZXgiLCJjb3VudGVyX3N0YXRlX2xpZ2h0X29mX2pzb24iLCJjb3VudGVyX3N0YXRlX2xpZ2h0X3RvX2pzb24iLCJpbnRlcmZhY2VfbGlnaHRfdG9fanNvbiIsImludGYiLCJjIiwiayIsImludGVyZmFjZV9saWdodF9vZl9qc29uIiwibGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4iLCJpbnRlcmZhY2Vfb2ZfanNvbiIsImxlbW1hc19saXN0X29mX2pzb24iLCJsZW1tYXNfbGlzdF90b19qc29uX2dlbiIsImludGVyZmFjZV90b19qc29uIiwiY29uc3RyYWludHMiLCJsZW1tYXNfbGlzdF90b19qc29uIiwiY2xvc2VfY2VsbF9zeW1ib2wiLCJvcGVuX2NlbGxfc3ltYm9sIiwiY29tcGFyZSIsImJyZWFrYWJsZSIsIngiLCJnZXRfZW5jb2RpbmdfZm9ybWF0IiwidCIsImR1bW15X2h0bWxfbG9nZ2VyIiwiZHVtbXlfdHh0X2xvZ2dlciIsImR1bXBfY2xlYW5fc3RyaW5nIiwiZm10IiwiYSIsIm9wdCIsImxvZ2dlciIsInN0aCIsImZwcmludG5ld2xpbmUiLCJmcHJpbnRuZXdsaW5lJDAiLCJiIiwiZm10X2J1ZmZlciQwIiwic3RyIiwic3RyJDAiLCJidWZmZXIiLCJmbXRfYnVmZmVyIiwicyIsInByaW50X2JyZWFrYWJsZV9zcGFjZSIsInByaW50X2JyZWFrYWJsZV9oaW50IiwiZHVtcF90b2tlbiIsImYiLCJwcmludF9uZXdsaW5lIiwiYmYiLCJiZiQwIiwiYmYkMSIsImJmJDIiLCJwcmludF9jZWxsIiwiY2xvc2VfY2VsbF9zeW1ib2wkMCIsIm9wZW5fY2VsbF9zeW1ib2wkMCIsImZsdXNoX2xvZ2dlciIsImNsb3NlX2xvZ2dlciIsInByaW50X3ByZWFtYmxlIiwib3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIiwiY2hhbm5lbCIsIm1vZGUiLCJmb3JtYXR0ZXIiLCJvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciIsIm9wZW5fY2lyY3VsYXJfYnVmZmVyIiwic3RoJDAiLCJzaXplIiwib3Blbl9pbmZpbml0ZV9idWZmZXIiLCJvcGVuX3JvdyIsImNsb3NlX3JvdyIsImZvcm1hdHRlcl9vZl9sb2dnZXIiLCJyZWRpcmVjdCIsInByaW50X2FzX2xvZ2dlciIsImZsdXNoX2J1ZmZlciIsImZsdXNoX2FuZF9jbGVhbiIsImZwcmludGYiLCJjaGFubmVsX29mX2xvZ2dlciIsInByaW50X2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWUiLCJzaXRlX25hbWUiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiZHVtcF9qc29uIiwianNvbiIsImNoYW5uZWxfb3B0IiwibGluZV90b19qc29uIiwibGluZSIsImxpbmVfb2ZfanNvbiIsImdlbl9pdGVyIiwiaXRlciIsImxpc3QiLCJvdXRwdXQiLCJvZl9qc29uIiwidG9fanNvbiIsInN0cmluZ19vZl91bl9vcCIsIm9wIiwiZm9ybWF0Iiwic3RyaW5nX29mX2NvbXBhcmVfb3AiLCJzdHJpbmdfb2ZfYmluX29wIiwic3RyaW5nX29mX2Jpbl9ib29sX29wIiwic3RyaW5nX29mX3VuX2Jvb2xfb3AiLCJsaWZ0IiwidCIsImV4dGVuZF9sb2dnZXIiLCJsb2dnZXIiLCJyZWZyZXNoX2lkIiwiYWRkX25vZGUiLCJzIiwiZCIsImFkZF9lZGdlIiwiczEiLCJzMiIsIm1hcCIsImwiLCJvbGRfbGlzdCIsImdyYXBoX29mX2xvZ2dlciIsImdldF9lZGdlX21hcCIsImdldF9ub2RlcyIsImludF9vZl9zdHJpbmdfaWQiLCJzdHJpbmciLCJhIiwiaSIsImR1bW15X25vZGUiLCJkdW1teV9lZGdlIiwiaHRtbF9kZXBzIiwiZG90X2NvbG9yX2VuY29kaW5nIiwieCIsInN2Z19jb2xvcl9lbmNvZGluZyIsImlzX25vX25vZGVfYXR0cmlidXRlcyIsIm5vZGVfYXR0cmlidXRlIiwiYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCIsImJvb2wiLCJiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCIsInNoYWxsX0lfZG9faXQiLCJmb3JtYXQiLCJmaWx0ZXJfaW4iLCJmaWx0ZXJfb3V0IiwiYjEiLCJwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyIsImYiLCJ0aXRsZSIsInByaW50X2dyYXBoX3ByZWFtYmxlIiwib3B0Iiwic3RoIiwic3RoJDAiLCJzdGgkMSIsImhlYWRlciIsImZfb3B0IiwiZGVwZW5kZW5jeSIsImZfb3B0JDAiLCJmJDAiLCJzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCIsInN0eWxlIiwibWVyZ2UiLCJzJDAiLCJwcmludF9mb290X3NoYXJlZF9odG1sX2pzIiwibGlzdCIsImlkMiIsImlkMSIsImxpc3QkMCIsImlkMV9pbnQiLCJpZDJfaW50IiwiYXR0cmlidXRlcyIsIm9wdGlvbl9saXN0Iiwib3B0aW9uIiwicyQxIiwicyQyIiwicyQzIiwicyQ0IiwicyQ1IiwicyQ2IiwianNvbiIsInMkNyIsInMkOCIsInAiLCJhdHRyaWJ1dGVzJDAiLCJzdHJpbmdfbGlzdCIsImZtdCIsInNfb3B0Iiwic19vcHQkMCIsImJvb2wkMCIsImNvbG9yIiwiYm9vbCQxIiwiYm9vbCQyIiwiYm9vbCQzIiwicHJpbnRfZ3JhcGhfZm9vdCIsIm5vZGVzIiwiZWRnZXMiLCJzZXAiLCJiIiwib3B0aW9ucyIsImNvbG9yX3ZhbHVlIiwicHJpbnRfY29tbWVudCIsIm9wZW5fYXNzbyIsImNsb3NlX2Fzc28iLCJwcmludF9hc3NvIiwic3RyaW5nMSIsInN0cmluZzIiLCJzaGFwZV9pbl9kb3QiLCJzaGFwZSIsInN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCIsInByaW50X25vZGUiLCJpZCIsImRpcmVjdGl2ZXMiLCJpJDAiLCJpZF9pbnQiLCJzdHJpbmckMCIsInN0cmluZyQxIiwic2hhcGUkMCIsInN0cmluZyQyIiwic2hhcGUkMSIsImkkMSIsImkkMiIsImJvb2wkNCIsImJvb2wkNSIsImxhYmVsIiwicHJpbnRfZWRnZSIsInByZWZpeCIsImVkZ2VfYXR0cmlidXRlIiwiZGlyZWN0aW9uIiwiYXJyb3ciLCJwcmludF9vbmVfdG9fbl9yZWxhdGlvbiIsImlkbGlzdCIsInN0eWxlX29uZSIsInN0eWxlX24iLCJmaWN0aXRpb3VzIiwiZGlyZWN0aXZlc19maWN0IiwiZGlyZWN0aXZlc19vbmUiLCJkaXJlY3RpdmVzX24iLCJoZWFka2luZF90b19qc29uIiwiaGVhZGtpbmQiLCJjb2xvcl90b19qc29uIiwiZGlyZWN0aXZlX3RvX2pzb24iLCJjb2xvciQwIiwiaW50JDAiLCJpbnQkMSIsImhlYWRraW5kJDAiLCJsaW5lc3R5bGUiLCJkaXJlY3RpdmVzX3RvX2pzb24iLCJub2RlX3RvX2pzb24iLCJlZGdlX3RvX2pzb24iLCJub2Rlc190b19qc29uIiwiZWRnZXNfdG9fanNvbiIsInRvX2pzb24iLCJncmFwaCIsImhlYWRraW5kX29mX2pzb24iLCJjb2xvcl9vZl9qc29uIiwiZGlyZWN0aXZlX29mX2pzb24iLCJwb3NfbGlzdCIsImNvbnRleHR1YWxfaGVscCIsImRpcmVjdGl2ZXNfb2ZfanNvbiIsImlkX29mX2pzb24iLCJub2RlX29mX2pzb24iLCJlZGdlX29mX2pzb24iLCJub2Rlc19vZl9qc29uIiwiZWRnZXNfb2ZfanNvbiIsIm9mX2pzb24iLCJzeW1ib2xfdGFibGVfVjMiLCJzeW1ib2xfdGFibGVfVjQiLCJub3RfYnJlYWthYmxlIiwic3ltYm9sX3RhYmxlIiwic3ltYm9sX3RhYmxlX1YzX2xpZ2h0Iiwic3ltYm9sX3RhYmxlX2RvdG5ldCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WM19saSIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZSIsIndpdGhfZG90X2FuZF9wbHVzIiwiZW1wdHlfZW5naW5lX3N0YXRlIiwid2FrZV91cF9tYXAiLCJlcnJvciIsImVuZ2luZV9zdGF0ZSIsImVtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91biIsImV4bl90b19qc29uIiwieCIsIngkMCIsIngkMSIsIngkMiIsImMiLCJiIiwiYSIsImMkMCIsImIkMCIsImEkMCIsIngkMyIsIngkNCIsImNhdWdodF9leGNlcHRpb25fdG9fanNvbiIsIngkNSIsInVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJleG5fb2ZfanNvbiIsImpzb24iLCJsIiwibCQwIiwidW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24iLCJjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24iLCJidWlsZF91bmNhdWdodF9leGNlcHRpb24iLCJmaWxlX25hbWUiLCJtZXNzYWdlIiwiZXhuIiwiYnVpbGRfY2F1Z2h0X2V4Y2VwdGlvbiIsInN0YWNrIiwicmFpc2VfZXhjZXB0aW9uIiwia2V5IiwicHBfZXhjZXB0aW9uIiwiZiIsImV4YyIsInBwX3VuY2F1Z2h0IiwicHBfY2F1Z2h0Iiwid2l0aF9zcGFjZSIsInN0cmluZ2xpc3Rfb2ZfZXhjZXB0aW9uIiwic3RyaW5nbGlzdF9vZl9jYXVnaHQiLCJ4JDYiLCJzdHJpbmdsaXN0X29mX3VuY2F1Z2h0Iiwic29sIiwic3RyaW5nIiwic3RyaW5nbGlzdF9vZl9jYXVnaHRfbGlnaHQiLCJzdGFjayQwIiwidG9fanNvbiIsImV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCIsIm9mX2pzb24iLCJjYXVnaHRfdG9fdWkiLCJ1bmNhdWdodF90b191aSIsImFkZF91bmNhdWdodF9lcnJvciIsInRvX3VpIiwiZXJyb3IkMCIsImdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QiLCJnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3UiLCJnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QiLCJnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG8iLCJpc19lbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmQiLCJkYXRlIiwidmVyc2lvbiIsIm91dHB1dF9kaXJlY3RvcnkiLCJvdXRwdXRfY21fZGlyZWN0b3J5Iiwib3V0cHV0X2ltX2RpcmVjdG9yeSIsIm91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3RvcnkiLCJ1bnNhZmUiLCJ0cmFjZSIsInN5bnRheF92ZXJzaW9uIiwiZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjIiwibG9nIiwiZm9ybWF0dGVyIiwiZmlsZSIsImxpbmtfbW9kZSIsImRvX2luZmx1ZW5jZV9tYXAiLCJydWxlX3NoYXBlIiwicnVsZV9jb2xvciIsInZhcmlhYmxlX3NoYXBlIiwidmFyaWFibGVfY29sb3IiLCJjZW50ZXJfY29sb3IiLCJ3YWtlX3VwX2NvbG9yIiwiaW5oaWJpdGlvbl9jb2xvciIsIndha2VfdXBfYXJyb3ciLCJpbmhpYml0aW9uX2Fycm93IiwiaW5mbHVlbmNlX21hcF9maWxlIiwiaW5mbHVlbmNlX21hcF9mb3JtYXQiLCJwcm9tcHRfZnVsbF92YXJfZGVmIiwicHJvbXB0X2Z1bGxfcnVsZV9kZWYiLCJtYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG8iLCJkb19jb250YWN0X21hcCIsImRvX3NjYyIsInB1cmVfY29udGFjdCIsImNvbnRhY3RfbWFwX2ZpbGUiLCJjb250YWN0X21hcF9mb3JtYXQiLCJiaW5kaW5nX3NpdGVfc2hhcGUiLCJiaW5kaW5nX3NpdGVfY29sb3IiLCJpbnRlcm5hbF9zaXRlX3NoYXBlIiwiaW50ZXJuYWxfc2l0ZV9jb2xvciIsImNvdW50ZXJfc2l0ZV9zaGFwZSIsImNvdW50ZXJfc2l0ZV9jb2xvciIsImFnZW50X3NoYXBlX2FycmF5IiwiYWdlbnRfY29sb3JfYXJyYXkiLCJhZ2VudF9zaGFwZV9kZWYiLCJhZ2VudF9jb2xvcl9kZWYiLCJsaW5rX2NvbG9yIiwiaW5mbHVlbmNlX2NvbG9yIiwiaW5mbHVlbmNlX2Fycm93IiwiZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24iLCJkb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXQiLCJkb19zaXRlX2RlcGVuZGVuY2llcyIsImR1bXBfc2l0ZV9kZXBlbmRlbmNpZXMiLCJkb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMiLCJ2ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGkiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXMiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19jb3YiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGUiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGEiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW4iLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWYiLCJkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCIsImhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZSIsImhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydCIsInNtYXNoX3JlbGF0aW9ucyIsInVzZV9uYXR1cmFsX2xhbmd1YWdlIiwiY29tcHV0ZV9sb2NhbF90cmFjZXMiLCJzaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2UiLCJ1c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF8iLCJhZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMiLCJhZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMiLCJkb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmciLCJsb2NhbF90cmFjZV9wcmVmaXgiLCJsb2NhbF90cmFjZV9mb3JtYXQiLCJjb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMiLCJ3aXRoX3ZpZXdzX2FuYWx5c2lzIiwid2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpIiwid2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyIsIndpdGhfZHluYW1pY19jb250YWN0X21hcCIsIndpdGhfY291bnRlcnNfYW5hbHlzaXMiLCJjb3VudGVyX2FuYWx5c2lzX2RvbWFpbiIsInZpZXdfYWNjdXJhY3lfbGV2ZWwiLCJpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsIiwiY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwiLCJzY2NfYWNjdXJhY3lfbGV2ZWwiLCJkb19zeW1tZXRyaWVzIiwicmF0ZV9jb252ZW50aW9uIiwicHJpbnRfZWZmaWNpZW5jeSIsImJhY2tkb29yX25icl9vZl9zY2MiLCJiYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjIiwiYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzIiwiYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzIiwiYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMiLCJiYWNrZG9vcl9uYnJfb2ZfcnVsZXMiLCJiYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyIsImJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbiIsImJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldiIsImJhY2tkb29yX3RpbWluZyIsImJhY2tkb29yX2ZpbGUiLCJiYWNrZG9vcl9kaXJlY3RvcnkiLCJjc3RfdGV4IiwiY3N0X2h0bWwkMCIsImFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbSIsImV4dCIsInNpemVfYSIsInNpemVfZXh0Iiwib3Blbl9vdXQiLCJkIiwib3Blbl9hcHBlbmQiLCJjb21wb3NlIiwiZyIsImV4dF9mb3JtYXQiLCJmZXRjaF9sZXZlbF9nZW4iLCJzIiwiciIsImZldGNoX2dyYXBoX2Zvcm1hdCIsImZldGNoX2FjY3VyYWN5X2xldmVsIiwiZ2V0X3N5bnRheF92ZXJzaW9uIiwicmVhY2hhYmlsaXR5X21hcF8wIiwicmVhY2hhYmlsaXR5X21hcF8xIiwicmVhY2hhYmlsaXR5X21hcF8yIiwicmVhY2hhYmlsaXR5X21hcF8zIiwicmVhY2hhYmlsaXR5X21hcF80IiwiZ2V0X3JlYWNoYWJpbGl0eV9wYXJhbWV0ZXJzIiwiY2FjaGUiLCJnZXRfcGFyYW1ldGVycyIsIm9wdCIsImNhbGxlZF9mcm9tIiwic3RoIiwiaHRtbF9tb2RlIiwiY29tbWFuZCQwIiwiY2hhbm5lbF9iYWNrZG9vciQwIiwiY2hhbm5lbF9lcnIkMCIsImNoYW5uZWwkMSIsImNoYW5uZWwiLCJjaGFubmVsJDAiLCJjb21tYW5kJDIiLCJyZWFjaGFiaWxpdHkkMCIsInJlYWNoYWJpbGl0eSIsIm1hcCIsImEkMSIsImZtdCIsImNoYW5uZWwkMiIsImR1bW15X3BhcmFtZXRlcnMiLCJwIiwicCQwIiwiZ2V0X2JvdW5kX3N5bWJvbF8xIiwic3ltYm9sIiwiZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGVfMSIsImdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGVfMSIsImdldF9saW5rX3RvX2FueV8xIiwiZ2V0X2xpbmtfdG9fc29tZV8xIiwiZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbF8xIiwiZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMSIsImdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZV8xIiwiZ2V0X2ZyZWVfMSIsImdldF9hdF9zeW1ib2xfMSIsImdldF9hZ2VudF9vcGVuX3N5bWJvbF8xIiwiZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2xfMSIsImdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2xfMSIsImdldF9hZ2VudF9zZXBfZG90X3N5bWJvbF8xIiwiZ2V0X2J0eXBlX3NlcF9zeW1ib2xfMSIsImdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2xfMSIsImdldF9naG9zdF9hZ2VudF9zeW1ib2xfMSIsImdldF9kb193ZV9zaG93X2dob3N0XzEiLCJnZXRfdW5pX2Fycm93X3N5bWJvbF8xIiwiZ2V0X3Jldl9hcnJvd19zeW1ib2xfMSIsImdldF9iaV9hcnJvd19zeW1ib2xfMSIsImdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIiwiZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIiwiZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbF8xIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2IiwiZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2IiwiZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5IiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0IiwiZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sXzEiLCJnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sXzEiLCJnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW0iLCJnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzEiLCJnZXRfb3Blbl9jb3VudGVyY2VxXzEiLCJnZXRfb3Blbl9jb3VudGVyY3Zhcl8xIiwiZ2V0X29wZW5fY291bnRlcmNndGVfMSIsImdldF9vcGVuX2NvdW50ZXJkZWx0YV8xIiwiZ2V0X29wZW5fY291bnRlcnZhbF8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGVfMSIsImdldF9jbG9zZV9jb3VudGVyY2VxXzEiLCJnZXRfY2xvc2VfY291bnRlcmN2YXJfMSIsImdldF9jbG9zZV9jb3VudGVyY2d0ZV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJ2YWxfMSIsImdldF9jb3VudGVyY2VxX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbF8xIiwiZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzEiLCJnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sXzEiLCJnZXRfY291bnRlcnZhbF9zeW1ib2xfMSIsImdldF9pbV9mb3JtYXRfMSIsImluZmx1ZW5jZSIsImdldF9pbV9maWxlXzEiLCJnZXRfaW1fZGlyZWN0b3J5XzEiLCJnZXRfcnVsZV9zaGFwZV8xIiwiZ2V0X3J1bGVfY29sb3JfMSIsImdldF92YXJpYWJsZV9zaGFwZV8xIiwiZ2V0X3ZhcmlhYmxlX2NvbG9yXzEiLCJnZXRfd2FrZV91cF9jb2xvcl8xIiwiZ2V0X2luaGliaXRpb25fY29sb3JfMSIsImdldF93YWtlX3VwX2Fycm93XzEiLCJnZXRfaW5oaWJpdGlvbl9hcnJvd18xIiwiZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWZfMSIsImdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xIiwiZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfMSIsImdldF9wdXJlX2NvbnRhY3RfMSIsImNtIiwiZ2V0X2NtX2Zvcm1hdF8xIiwiZ2V0X2NtX2ZpbGVfMSIsImdldF9jbV9kaXJlY3RvcnlfMSIsImdldF9iaW5kaW5nX3NpdGVfc2hhcGVfMSIsImdldF9iaW5kaW5nX3NpdGVfY29sb3JfMSIsImdldF9pbnRlcm5hbF9zaXRlX3NoYXBlXzEiLCJnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvcl8xIiwiZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZV8xIiwiZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xIiwiZ2V0X2FnZW50X3NoYXBlX2FycmF5XzEiLCJnZXRfYWdlbnRfY29sb3JfYXJyYXlfMSIsImdldF9hZ2VudF9zaGFwZV9kZWZfMSIsImdldF9hZ2VudF9jb2xvcl9kZWZfMSIsImdldF9saW5rX2NvbG9yXzEiLCJnZXRfaW5mbHVlbmNlX2NvbG9yXzEiLCJnZXRfaW5mbHVlbmNlX2Fycm93XzEiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMCIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQxIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDIiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ0IiwiZ2V0X3NtYXNoX3JlbGF0aW9uc18xIiwiZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fIiwiZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfIiwiZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xIiwiZ2V0X2JhY2tlbmRfbW9kZV8xIiwiZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdF8xIiwiZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzEiLCJnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXQiLCJnZXRfaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNfMSIsImdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdCIsImdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sbyIsImdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXNfMSIsImdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXNfMSIsImdldF9sb2NhbF90cmFjZV9wcmVmaXhfMSIsImdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnlfMSIsImdldF92aWV3X2FuYWx5c2lzXzEiLCJnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMiLCJnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMSIsImdldF9keW5hbWljX2NvbnRhY3RfbWFwXzEiLCJnZXRfY291bnRlcnNfYW5hbHlzaXNfMSIsImdldF9jb3VudGVyc19kb21haW5fMSIsImdldF9jb21wdXRlX3N5bW1ldHJpZXNfMSIsIm1hcnNoYWxpc2FibGUiLCJnZXRfcmF0ZV9jb252ZW50aW9uXzEiLCJnZXRfZW1wdHlfaGFzaHRibF9zaXplXzEiLCJnZXRfc3ltYm9sc18xIiwiZ2V0X2ZpbGVfMSIsImdldF9pbmZsdWVuY2VfbWFwXzEiLCJnZXRfY29udGFjdF9tYXBfMSIsImdldF9yZWFjaGFiaWxpdHlfbWFwXzEiLCJnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmEiLCJnZXRfdW5zYWZlXzEiLCJnZXRfdHJhY2VfMSIsImdldF9kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleSIsImdldF9wcmVmaXhfMSIsImdldF9jYWxsX3N0YWNrXzEiLCJnZXRfbGlua19tb2RlXzEiLCJnZXRfa2FzYV9zdGF0ZV8xIiwiZ2V0X2RvX2NvbnRhY3RfbWFwXzEiLCJnZXRfc3ludGF4X3ZlcnNpb25fMSIsImdldF9kb19zY2NfMSIsImdldF9kb19pbmZsdWVuY2VfbWFwXzEiLCJnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24iLCJnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm8iLCJnZXRfZG9fc2l0ZV9kZXBlbmRlbmNpZXNfMSIsImdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzEiLCJnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXzEiLCJnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXYiLCJnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfc2NjX2FjY3VyYWN5X2xldmVsXzEiLCJnZXRfdmlld19hY2N1cmFjeV9sZXZlbF8xIiwiZ2V0X2xhdW5jaGluZ19kYXRlXzEiLCJ0IiwiZ210IiwiZ2V0X3Nob3J0X3ZlcnNpb25fMSIsImdldF9mdWxsX3ZlcnNpb25fMSIsImdldF9sYXVuY2hlZF93aGVyZV8xIiwiZ2V0X2NvbW1hbmRfbGluZV8xIiwiZ2V0X21hcnNoYWxpc2FibGUiLCJwYXJhbWV0ZXIiLCJnZXRfbG9nZ2VyIiwiZ2V0X2xvZ2dlcl9lcnIiLCJnZXRfbG9nZ2VyX2JhY2tkb29yIiwidXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQiLCJnZXRfY29tbWFuZF9saW5lIiwiZ2V0X3Nob3J0X3ZlcnNpb24iLCJnZXRfbGF1bmNoZWRfd2hlcmUiLCJnZXRfZnVsbF92ZXJzaW9uIiwiZ2V0X2xhdW5jaGluZ19kYXRlIiwiZ2V0X2xhdW5jaGVkX3doZW5fYW5kX3doZXJlIiwicGFyYW1ldGVycyIsImdldF9kb19jb250YWN0X21hcCIsImdldF9zeW50YXhfdmVyc2lvbiQwIiwiZ2V0X2RvX3NjYyIsImdldF9kb19pbmZsdWVuY2VfbWFwIiwiZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uJDAiLCJnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm8kMCIsImdldF9kb19zaXRlX2RlcGVuZGVuY2llcyIsImdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzIiwiZ2V0X3N5bWJvbHMiLCJnZXRfZmlsZSIsImdldF9jb21wdXRlX3N5bW1ldHJpZXMiLCJnZXRfcmF0ZV9jb252ZW50aW9uIiwiZ2V0X2luZmx1ZW5jZV9tYXAiLCJnZXRfY29udGFjdF9tYXAiLCJnZXRfcmVhY2hhYmlsaXR5X21hcCIsImdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYSQwIiwiZ2V0X3Vuc2FmZSIsImdldF90cmFjZSIsImdldF9kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleSQwIiwiZ2V0X3ByZWZpeCIsImdldF9jYWxsX3N0YWNrIiwiZ2V0X2xpbmtfbW9kZSIsImdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCQwIiwiZ2V0X3NjY19hY2N1cmFjeV9sZXZlbCIsImdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldiQwIiwiZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfZW1wdHlfaGFzaHRibF9zaXplIiwidXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllIiwidXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIiwidXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQiLCJ1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF8iLCJ1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWwiLCJnZXRfYm91bmRfc3ltYm9sIiwiZ2V0X29wZW5fYmluZGluZ19zdGF0ZSIsImdldF9jbG9zZV9iaW5kaW5nX3N0YXRlIiwiZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZSIsImdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2wiLCJnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZSIsImdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZSIsImdldF9saW5rX3RvX2FueSIsImdldF9saW5rX3RvX3NvbWUiLCJnZXRfZnJlZV9zeW1ib2wiLCJnZXRfYXRfc3ltYm9sIiwiZ2V0X2FnZW50X29wZW5fc3ltYm9sIiwiZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbCIsImdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbCIsImdldF9hZ2VudF9zZXBfZG90X3N5bWJvbCIsImdldF9idHlwZV9zZXBfc3ltYm9sIiwiZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbCIsImdldF9naG9zdF9hZ2VudF9zeW1ib2wiLCJnZXRfZG9fd2Vfc2hvd19naG9zdCIsImdldF91bmlfYXJyb3dfc3ltYm9sIiwiZ2V0X3Jldl9hcnJvd19zeW1ib2wiLCJnZXRfYmlfYXJyb3dfc3ltYm9sIiwiZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sIiwiZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbCIsImdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2wiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXYkMCIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdiQwIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5JDAiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2kkMCIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaSQwIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0JDAiLCJnZXRfcGx1c19pbmZpbml0eV9zeW1ib2wiLCJnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sIiwiZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltJDAiLCJnZXRfb3Blbl9jb3VudGVyX3N0YXRlIiwiZ2V0X29wZW5fY291bnRlcmNlcSIsImdldF9vcGVuX2NvdW50ZXJjZ3RlIiwiZ2V0X29wZW5fY291bnRlcmN2YXIiLCJnZXRfb3Blbl9jb3VudGVyZGVsdGEiLCJnZXRfb3Blbl9jb3VudGVydmFsIiwiZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGUiLCJnZXRfY2xvc2VfY291bnRlcmNlcSIsImdldF9jbG9zZV9jb3VudGVyY2d0ZSIsImdldF9jbG9zZV9jb3VudGVyY3ZhciIsImdldF9jbG9zZV9jb3VudGVyZGVsdGEiLCJnZXRfY2xvc2VfY291bnRlcnZhbCIsImdldF9jb3VudGVyY2VxX3N5bWJvbCIsImdldF9jb3VudGVyY2d0ZV9zeW1ib2wiLCJnZXRfY291bnRlcmN2YXJfc3ltYm9sIiwiZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sIiwiZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCIsImdldF9jb3VudGVydmFsX3N5bWJvbCIsImdldF9pbV9mb3JtYXQiLCJnZXRfaW1fZmlsZSIsImdldF9pbV9kaXJlY3RvcnkiLCJnZXRfcnVsZV9zaGFwZSIsImdldF9ydWxlX2NvbG9yIiwiZ2V0X3ZhcmlhYmxlX3NoYXBlIiwiZ2V0X3ZhcmlhYmxlX2NvbG9yIiwiZ2V0X3dha2VfdXBfY29sb3IiLCJnZXRfaW5oaWJpdGlvbl9jb2xvciIsImdldF93YWtlX3VwX2Fycm93IiwiZ2V0X2luaGliaXRpb25fYXJyb3ciLCJnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZiIsImdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZiIsImdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdCIsImdldF9wdXJlX2NvbnRhY3QiLCJnZXRfY21fZm9ybWF0IiwiZ2V0X2NtX2ZpbGUiLCJnZXRfY21fZGlyZWN0b3J5IiwiZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZSIsImdldF9iaW5kaW5nX3NpdGVfY29sb3IiLCJnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZSIsImdldF9pbnRlcm5hbF9zaXRlX2NvbG9yIiwiZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZSIsImdldF9jb3VudGVyX3NpdGVfY29sb3IiLCJnZXRfYWdlbnRfc2hhcGVfYXJyYXkiLCJnZXRfYWdlbnRfY29sb3JfYXJyYXkiLCJnZXRfYWdlbnRfc2hhcGVfZGVmIiwiZ2V0X2FnZW50X2NvbG9yX2RlZiIsImdldF9saW5rX2NvbG9yIiwiZ2V0X2luZmx1ZW5jZV9jb2xvciIsImdldF9pbmZsdWVuY2VfYXJyb3ciLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ2IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDciLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkOCIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ5IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDEwIiwiZ2V0X3Bvc3RfcHJvY2Vzc2luZyIsImdldF9iYWNrZW5kX21vZGUiLCJnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV8kMCIsImdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0XyQwIiwiZ2V0X3NtYXNoX3JlbGF0aW9ucyIsImdldF9sb2NhbF90cmFjZV9mb3JtYXQiLCJnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXMiLCJnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXQkMCIsInNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCIsInIkMCIsInIkMSIsInNldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sbyIsImdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdCQwIiwiZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvJDAiLCJnZXRfaWdub3JlX2xvY2FsX2xvc2FuZ2VzIiwiZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyIsImdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMiLCJnZXRfbG9jYWxfdHJhY2VfcHJlZml4IiwiZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSIsImdldF92aWV3X2FuYWx5c2lzIiwiZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIiwiZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzJDAiLCJnZXRfZHluYW1pY19jb250YWN0X21hcCIsImdldF9jb3VudGVyc19hbmFseXNpcyIsImdldF9jb3VudGVyc19kb21haW4iLCJnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIiwic2V0X3ByZWZpeF8xIiwicHJlZml4Iiwic2V0X2NhbGxfc3RhY2tfMSIsImNhbGxfc3RhY2siLCJzZXRfdHJhY2VfMSIsImJvb2wiLCJ1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUiLCJzZXRfcHJlZml4Iiwic2V0X2NhbGxfc3RhY2siLCJzZXRfdHJhY2UiLCJ1cGRhdGVfcHJlZml4Iiwic3VmZml4IiwidXBkYXRlX2NhbGxfc3RhY2siLCJuYW1lIiwicmVwX2Jvb2wiLCJvcGVuX2luZmx1ZW5jZV9tYXBfZmlsZSIsIm1hdGNoJDEiLCJmb3JtYXQiLCJsb2dnZXIiLCJvcGVuX2NvbnRhY3RfbWFwX2ZpbGUiLCJsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmwiLCJnZXRfY2FsbGVkX2Zyb20iLCJnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIiwiYmFja2Rvb3JzIiwiZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zIiwiZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzIiwiZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50IiwiZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhIiwiZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5IiwiZ2V0X2JhY2tkb29yX3RpbWluZ18xIiwiZ2V0X2JhY2tkb29yX2ZpbGVfMSIsImdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMSIsImdldF9iYWNrZG9vcnMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yIiwiZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYSQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiIsImdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseSQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoJDAiLCJnZXRfYmFja2Rvb3JfdGltaW5nXzIiLCJnZXRfYmFja2Rvb3JfZmlsZV8yIiwiZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yIiwiZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50JDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmEkMSIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjIiwiZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aCQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5JDEiLCJnZXRfYmFja2Rvb3JfdGltaW5nIiwiZ2V0X2JhY2tkb29yX2ZpbGUiLCJnZXRfYmFja2Rvb3JfZGlyZWN0b3J5IiwiZ2V0X3Byb2ZpbGVyIiwiZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIiLCJnZXRfa2FzYV9zdGF0ZSIsInNldF9wcmludF9lZmZpY2llbmN5IiwiZ2V0X3ByaW50X2VmZmljaWVuY3kiLCJzZXRfbG9nZ2VyIiwic2F2ZV9lcnJvcl9saXN0Iiwic2F2ZV9wcm9ncmVzc19iYXIiLCJiYXIiLCJyZXNldF9wcm9ncmVzc19iYXIiLCJzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJyZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIiwiZGVmYXVsdCQwIiwiY29tYmluZSIsImwxIiwibDIiLCJsaXN0IiwiYTEiLCJhMiIsIm9wdGlvbnMiLCJnZXRfb3B0aW9uIiwidGl0bGUiLCJpbnB1dCIsImJ1aWxkX2thc2FfcGFyYW1ldGVycyIsInRfY29tbW9uIiwiZG90X2NvbW1lbnQiLCJkb3RfdG9fcGRmIiwiaGVhZCIsInEiLCJoZWFkX2luZmx1ZW5jZV9tYXBfaW5fZG90IiwiaGVhZF9jb250YWN0X21hcF9pbl9kb3QiLCJvdXRwdXQiLCJhY3Rpb25zIiwic3ludGF4IiwidHJhY2VzIiwiY29udGFjdF9tYXAiLCJpbmZsdWVuY2VfbWFwIiwiZmxvdyIsImRlYnVnIiwidG9zcyQwIiwiZSIsImlkJDAiLCJ2YWx1ZSIsImRlYnVnJDAiLCJsb2MiLCJsb2ckMCIsImluZm8kMCIsIndhcm4kMCIsImVycm9yJDAiLCJsb2dfZ3JvdXAkMCIsImxhYmVsIiwibG9nX2dyb3VwX2VuZCQwIiwianF1ZXJ5X29uIiwic2VsZWN0b3IiLCJldmVudCIsImhhbmRsZXIiLCJvcHRpb25fc3RyaW5nIiwiaWQiLCJwbG90UE5HJDAiLCJwbG90U3R5bGVJZCIsInBsb3REaXZJZCIsInRpdGxlIiwicGxvdE5hbWUiLCJwbG90U1ZHJDAiLCJzYXZlRmlsZSQwIiwiZGF0YSIsIm1pbWUiLCJmaWxlbmFtZSIsIm1ldGhvZF90b19zdHJpbmciLCJhamF4X3JlcXVlc3QiLCJ0aW1lb3V0IiwidXJsIiwibWV0aCIsInRpbWVvdXQkMCIsInN0YXR1cyIsInJlc3BvbnNlIiwiZGF0YSQwIiwiYXN5bmMiLCJ0YXNrIiwiZXhuIiwidHJhY2UiLCJsb2dfdHJhY2UiLCJndWlkJDAiLCJtb2RhbCQwIiwiYWN0aW9uIiwiZWxlbWVudF9kYXRhIiwiZWxlbWVudCIsImNyZWF0ZV9zb3J0IiwiY2hpbGRyZW5fdmFsdWUiLCJtYXAiLCJoaWRlX2NvZGVtaXJyb3IiLCJzaG93X2NvZGVtaXJyb3IiLCJzdHJpbmdfb2Zfb3B0aW9uIiwic3RyaW5nX29mX3ZhbHVlIiwiaV9vcHQiLCJpIiwib3B0aW9uX2xhYmVsIiwib3B0Iiwic3RoIiwibWF4X3NpemUiLCJleHBvcnRfY29udHJvbHMiLCJleHBvcnRfc2VsZWN0X2lkIiwiZXhwb3J0X2ZpbGVuYW1lX2lkIiwiZXhwb3J0X2J1dHRvbl9pZCIsImV4cG9ydF9kYXRhX2xhYmVsIiwiZXhwb3J0X2Zvcm1hdHMiLCJleHBvcnRfZmlsZW5hbWUiLCJleHBvcnRfYnV0dG9uIiwiZm9ybWF0IiwiZXhwb3J0X2Zvcm1hdHNfc2VsZWN0IiwiZG9jdW1lbnQiLCJhcmd1bWVudHMkMCIsImtleSIsImsiLCJ2ZXJzaW9uIiwidGVzdCIsImRldiIsInRlc3QkMCIsIm5hdmxpIiwiZm9yY2VfY2xhc3MiLCJkZWNvcmF0aW9ucyIsImRlZmF1bHRfYXR0cmlidXRlcyIsImwiLCJhdHRyaWJ1dGVzIiwidGV4dCIsIm5hdnRhYnMiLCJuYXZ0YWJzX2lkIiwidCIsInRpIiwibGkiLCJhX2NsYXNzIiwib25lbmF2Y29udGVudCIsImFjdGl2ZSIsImNsYXNzZXMiLCJjb250ZW50IiwibmF2Y29udGVudCIsImMiLCJjbCIsImlkJDEiLCJsZXZlbCIsImRlYnVnIiwiaW5mbyIsImxvZyIsIndhcm5pbmciLCJlcnJvciIsImV4dHJhY3QiLCJ2YWx1ZSQwIiwiZmVhdHVyZXMiLCJkZWZhdWx0JDAiLCJmZWF0dXJlIiwibWF0Y2hlcyIsImlucHV0X2NoYW5nZSIsInNpZ25hbF9oYW5kbGVyIiwiaWRfZG9tIiwic3dpdGNoX2NsYXNzIiwiZWx0X2lkIiwiYWRkX2xpc3QiLCJyZW1vdmVfbGlzdCIsImNsYXNzX3N0ciIsImNyZWF0ZV9tb2RhbF90ZXh0X2lucHV0IiwidGl0bGVfbGFiZWwiLCJib2R5Iiwic3VibWl0X2xhYmVsIiwiYnV0dG9uIiwiZm9ybSIsImNyZWF0ZV9tb2RhbF9lcnJvciIsImlzX2NyaXRpY2FsIiwiZXJyb3JfY29udGVudCIsImJ1dHRvbl90eXBlIiwiYmFja2Ryb3BfYXR0cmliIiwiaW5kZXhfbW9kYWwiLCJvcGVuX21vZGFsX2Vycm9yIiwibW9kYWwiLCJtYWluIiwiZXhwb3J0X2Zvcm1hdF9pZCIsImNvbmZpZ3VyYXRpb24iLCJpbmxpbmVfY29udGVudCIsIm9ubG9hZCIsImV4cG9ydF9idXR0b25fdG9nZ2xlIiwicm9vdCIsImV4cG9ydF9zdmciLCJzdmdfc3R5bGVfaWQiLCJzdmdfZGl2X2lkIiwiZXhwb3J0X3BuZyIsImV4cG9ydF9qc29uIiwic2VyaWFsaXplX2pzb24iLCJjcmVhdGVfc3RvcnlfcmVuZGVyaW5nIiwiY3JlYXRlX3NuYXBzaG90IiwiY29sb3JpbmciLCJjcmVhdGVfb2JzZXJ2YWJsZV9wbG90IiwibWFpbl9kaXZfaWQiLCJjcmVhdGVfZ3JhcGhfbG9nZ2VyIiwib25fY2xpY2siLCJjb25zdHJ1Y3Rvcl9jb25maWd1cmF0aW9uIiwiY3JlYXRlX2NvbmZpZ3VyYXRpb24iLCJiZWdpbl90aW1lX2lkIiwiZW5kX3RpbWVfaWQiLCJzZWxlY3RfY29ycmVjdGlvbl9pZCIsInRvZ2dsZV9ydWxlc19pZCIsImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlX2lkIiwibmJfZXZlbnRzX2lkIiwic3ZnX2lkIiwicnVsZXNfY2hlY2tib3hlc19pZCIsImNvbnN0cnVjdG9yX2RhdGEiLCJjcmVhdGVfZGF0YSIsImZsdXhfcnVsZXMiLCJmbHV4X2hpdHMiLCJmbHV4X2ZsdXhzIiwiY3JlYXRlX2ZsdXhfbWFwIiwiY3JlYXRlX2NvbnRhY3RfbWFwIiwicHJpbnRfc3RyaW5nIiwicyIsImxpc3QiLCJwcmludF9uZXdsaW5lIiwicHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUiLCJhIiwicHJpbnRfc2l0ZV9ncmFwaCIsImFnZW50X2xpc3QiLCJhZ2VudCIsImxpc3QkMyIsImIiLCJsaXN0JDQiLCJpbnRlcmZhY2UkMCIsImFnZW50X25hbWUiLCJzaXRlIiwiYiQxIiwibGlzdCQ1IiwiY291bnRlcl9vcHQiLCJiaW5kaW5nX29wdCIsInByb3Bfb3B0Iiwic2l0ZV9uYW1lIiwic2l0ZV9uYW1lJDAiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwibGlzdCQwIiwiYSQxIiwiYiQwIiwiYSQwIiwiaW5mIiwib3Blbl9yYW5nZSIsImluZiQwIiwib3Blbl9yYW5nZSQwIiwic3VwIiwiY2xvc2VfcmFuZ2UiLCJzdXAkMCIsImNsb3NlX3JhbmdlJDAiLCJsaXN0JDEiLCJhJDIiLCJsaXN0JDIiLCJwcmludF9leGNlcHRpb25zX2NhdWdodF9hbmRfdW4iLCJtaCIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwieCIsImRlYnVnX3ByaW50IiwicHJvdG90eXBlIiwiY3JlYXRlX2hhbmRsZXIiLCJoZWFkIiwidGFpbCIsIm9uX2xhYmVsIiwid3JhcHBlciIsInBvc2l0aW9uIiwiY29uc3RydWN0b3JfbGludCIsImNyZWF0ZV9saW50IiwibWVzc2FnZSIsInNldmVyaXR5IiwiZnJvbSIsInQxMSIsImNvbnN0cnVjdG9yX2NoYW5nZSIsImNyZWF0ZV9jaGFuZ2UiLCJjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb24iLCJjcmVhdGVfbGludF9jb25maWd1cmF0aW9uIiwiZGVmYXVsdF9jb25maWd1cmF0aW9uIiwiZnJvbVRleHRBcmVhIiwiZG9tIiwic2V0TGludENvbmZpZyIsImNtIiwiY29tbWFuZHMiLCJhdG9tIiwibGlzdCIsImxhYmVsIiwibGlzdF90cnVlIiwibGlzdF9mYWxzZSIsImxhYmVsX3RydWUiLCJsYWJlbF9mYWxzZSIsInNldF9lc2NhcGUiLCJmbXQiLCJlc2NhcGUiLCJmbHVzaDAiLCJwcmludDAiLCJ0YWdmMCIsImlzX3RhZyIsIm1vdCIsInRhZyIsIm1jdCIsInByaW50IiwicyIsInAiLCJuIiwidGFnZiIsImRlZmluZV9zdHlsZXMiLCJlc2NhcGUkMCIsImwiLCJ0YmwxIiwidGJsMiIsInN0eWxlIiwic3R5bGVfbmFtZSIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsImVzYyIsImVzYyQwIiwiczAiLCJzMSIsInBwX29wZW5feGJveCIsImluZGVudCIsImV4dHJhX2JveCIsIndyYXAiLCJvcGVuX3RhZyIsImNsb3NlX3RhZyIsInRhZ19zdHJpbmciLCJvIiwiZnByaW50X3QiLCJwYXJhbSQwIiwicCQwIiwiZnByaW50X2xpc3QiLCJwJDEiLCJjbCIsInNlcCIsIm9wIiwidGwiLCJoZCIsImZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCIsIngiLCJscCIsImxhYiIsImwkMCIsInAkMiIsImNsJDAiLCJzZXAkMCIsIm9wJDAiLCJpbmRlbnQkMCIsImYiLCJmcHJpbnRfb3B0X2xhYmVsIiwicGFyYW0iLCJjbCQxIiwib3AkMSIsImJhc2VfaW5kZW50Iiwic2VwX2luZGVudCIsImNsb3NlX2V4dHJhJDAiLCJvcGVuX2V4dHJhJDAiLCJjbG9zZV9leHRyYSIsIm9wZW5fZXh0cmEiLCJ0b19mb3JtYXR0ZXIiLCJpbml0X2FjYyIsIm1lcmdlX2FjYyIsImZvcmNlX2JyZWFrczEiLCJmb3JjZV9icmVha3MyIiwiZm9yY2VfYnJlYWtzMSQwIiwibWFwX25vZGUiLCJmb3JjZV9icmVha3MiLCJjaGlsZHJlbiIsImEiLCJiIiwibHAkMCIsImF1eCIsIngkMCIsImFjYyIsIm5ld19jaGlsZHJlbiIsImFjY3MiLCJhY2MkMCIsInh5cyIsInkiLCJ4MiIsIngxIiwicGFyYW0kMSIsImFjYzAiLCJhY2MxIiwibmV3X3gxIiwiYWNjMiIsIm5ld194MiIsImFjYyQxIiwiYWNjJDIiLCJuZXdfeCIsInRvX2J1ZmZlciIsIm9wdCIsImJ1ZiIsInN0aCIsInN0aCQwIiwic3R5bGVzIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCIsIm9jIiwidG9fc3Rkb3V0IiwidG9fc3RkZXJyIiwiZnByaW50X3QkMCIsImxhYmVsJDAiLCJ0b19idWZmZXIkMCIsInRvX3N0cmluZyQwIiwidG9fZm9ybWF0dGVyJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19zdGRvdXQkMCIsInRvX3N0ZGVyciQwIiwiZXJyb3IiLCJzIiwic3RyaW5nOF9vZl9pbnQiLCJ4IiwiaSIsInN0cmluZzRfb2ZfaW50IiwicHJpbnRfYml0cyIsIm9wdCIsImxlbiIsInN0aCIsInBvcyIsInNsZW4iLCJsZW4kMCIsImxlbiQxIiwiciIsImsiLCJqIiwiYyIsImludF9zaXplIiwiZHVtbXlfdHlwZV9pZCIsIm4iLCJjcmVhdGVfdHlwZV9pZCIsImVxdWFsIiwidDIiLCJ4MiIsInQxIiwieDEiLCJoYXNoIiwiY3JlYXRlIiwiY2xlYXIiLCJ0YmwiLCJwdXQiLCJwb3MwIiwiY3JlYXRlJDAiLCJjbGVhciQwIiwicHV0JDAiLCJnZXQiLCJ0cnlfcHJlcmVhZCIsImliIiwicmVhZCIsInBvcyQwIiwicmVhZF9jaGFyIiwiYyQwIiwicGVlayIsImZyb21fYnl0ZXMiLCJzdGgkMCIsInNocmxlbiIsImZyb21fc3RyaW5nIiwiZnJvbV9jaGFubmVsIiwiaWMiLCJuJDAiLCJyZW1fbGVuIiwidG9fcmVhZCIsImFjY3UiLCJhY2N1JDAiLCJyZWFsbHlfcmVhZCIsInJlYWxseV9leHRlbmQiLCJiIiwic2xlbjAiLCJyZXFsZW4iLCJmbHVzaF90b19vdXRwdXQiLCJhYnN0cmFjdF9vdXRwdXQiLCJmbHVzaF90b19jaGFubmVsIiwib2MiLCJtYWtlX3Jvb20iLCJjcmVhdGVfY2hhbm5lbF93cml0ZXIiLCJmbHVzaF9jaGFubmVsX3dyaXRlciIsImNyZWF0ZV9vdXRwdXRfd3JpdGVyIiwib3V0IiwiZXh0ZW5kIiwiYWxsb2MiLCJhZGRfc3ViIiwiYmxpdCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2NoYXIiLCJ1bnNhZmVfYWRkX2NoYXIiLCJhZGRfY2hhcjIiLCJjMSIsImMyIiwiYWRkX2NoYXI0IiwiYzMiLCJjNCIsInJlc2V0IiwiY29udGVudHMiLCJtIiwibWF4X2hpZ2hlc3RfYnl0ZSIsIm1heF92aW50X2J5dGVzIiwibSQwIiwiaCIsInVuc2lnbmVkX29mX3NpZ25lZCIsIndyaXRlX3V2aW50IiwiYnVmIiwiYnl0ZSQwIiwid3JpdGVfc3ZpbnQiLCJ1dmludF9vZl91aW50IiwiYnVmZmVyIiwic3ZpbnRfb2ZfaW50IiwicmVhZF91dmludCIsImF2YWlsIiwicmVhZF9zdmludCIsImNoZWNrX2VuZF9vZl9pbnB1dCIsInVpbnRfb2ZfdXZpbnQiLCJpbnRfb2Zfc3ZpbnQiLCJyZWFkX3N0cmVhbSIsIm9mX3N0cmluZyIsImkkMiIsImkkMCIsIm4kMSIsImkkMSIsInN0IiwiYSIsIm5leHQiLCJhJDAiLCJ3cml0ZV9zdHJlYW0iLCJ0b19zdHJpbmciLCJjaHVua19sZW4iLCJhY2MiLCJmbHVzaF9jaHVuayIsImwiLCJ0bCIsInRsJDAiLCJoZCIsIm4kMyIsIm4kMiIsInRlc3QiLCJzdCQwIiwibCQwIiwiYm9vbF90YWciLCJpbnQ4X3RhZyIsImludDE2X3RhZyIsImludDMyX3RhZyIsImludDY0X3RhZyIsImZsb2F0MzJfdGFnIiwiZmxvYXQ2NF90YWciLCJ1dmludF90YWciLCJzdmludF90YWciLCJzdHJpbmdfdGFnIiwiYXJyYXlfdGFnIiwidHVwbGVfdGFnIiwicmVjb3JkX3RhZyIsIm51bV92YXJpYW50X3RhZyIsInZhcmlhbnRfdGFnIiwidW5pdF90YWciLCJ0YWJsZV90YWciLCJzaGFyZWRfdGFnIiwibWFrZV9zaWduZWQiLCJoYXNoX25hbWUiLCJ3cml0ZV9oYXNodGFnIiwib2IiLCJoJDAiLCJoYXNfYXJnIiwiaCQxIiwiaCQyIiwiaCQzIiwic3RyaW5nX29mX2hhc2h0YWciLCJyZWFkX2hhc2h0YWciLCJjb250IiwieDAiLCJ4MyIsIng0IiwicmVhZF9maWVsZF9oYXNodGFnIiwid3JpdGVfbnVtdGFnIiwicmVhZF9udW10YWciLCJtYWtlX3VuaGFzaCIsInMkMCIsIndyaXRlX3RhZyIsIndyaXRlX3VudGFnZ2VkX3VuaXQiLCJ3cml0ZV91bnRhZ2dlZF9ib29sIiwid3JpdGVfdW50YWdnZWRfY2hhciIsIndyaXRlX3VudGFnZ2VkX2ludDgiLCJ3cml0ZV91bnRhZ2dlZF9pbnQxNiIsIndyaXRlX3VudGFnZ2VkX2ludDMyIiwiaGlnaCIsIndyaXRlX3VudGFnZ2VkX2Zsb2F0MzIiLCJmbG9hdF9lbmRpYW5uZXNzIiwicmVhZF91bnRhZ2dlZF9mbG9hdDY0IiwiaiQwIiwid3JpdGVfdW50YWdnZWRfZmxvYXQ2NCIsIndyaXRlX3VudGFnZ2VkX2ludDY0Iiwic2FmZXR5X3Rlc3QiLCJ5Iiwid3JpdGVfdW50YWdnZWRfc3RyaW5nIiwid3JpdGVfdW50YWdnZWRfdXZpbnQiLCJ3cml0ZV91bnRhZ2dlZF9zdmludCIsIndyaXRlX3VuaXQiLCJ3cml0ZV9ib29sIiwid3JpdGVfY2hhciIsIndyaXRlX2ludDgiLCJ3cml0ZV9pbnQxNiIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50NjQiLCJ3cml0ZV9mbG9hdDMyIiwid3JpdGVfZmxvYXQ2NCIsIndyaXRlX3N0cmluZyIsIndyaXRlX3QiLCJ0YWdnZWQiLCJ0YWdnZWQkMCIsIngkMCIsIngkMSIsIngkMiIsIm8iLCJub2RlX3RhZyIsIngkMyIsIngkNCIsIngkNSIsImEkMSIsIngkNiIsInYiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDciLCJvJDAiLCJhJDIiLCJmaWVsZHMiLCJyb3dfbnVtIiwiY29sX251bSIsInRhZyIsImFpIiwieCQ4IiwidiQwIiwieCQ5Iiwib2Zmc2V0Iiwid3JpdGVfdHJlZSIsInN0cmluZ19vZl90cmVlIiwidGFnX29mX3RyZWUiLCJyZWFkX3RhZyIsInJlYWRfdW50YWdnZWRfdW5pdCIsInJlYWRfdW50YWdnZWRfYm9vbCIsInJlYWRfdW50YWdnZWRfY2hhciIsInJlYWRfdW50YWdnZWRfaW50OCIsInJlYWRfdW50YWdnZWRfaW50MTYiLCJyZWFkX3VudGFnZ2VkX2ludDMyIiwicmVhZF91bnRhZ2dlZF9mbG9hdDMyIiwicmVhZF91bnRhZ2dlZF9pbnQ2NCIsInJlYWRfdW50YWdnZWRfc3RyaW5nIiwic3RyIiwicmVtIiwiYnl0ZXNfcmVhZCIsInJlYWRfdW50YWdnZWRfdXZpbnQiLCJyZWFkX3VudGFnZ2VkX3N2aW50IiwicmVhZF91bml0IiwicmVhZF9ib29sIiwicmVhZF9pbnQ4IiwicmVhZF9pbnQxNiIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9mbG9hdDMyIiwicmVhZF9mbG9hdDY0IiwicmVhZF9zdHJpbmciLCJyZWFkX3RyZWUiLCJ1bmhhc2giLCJyZWFkX2FycmF5IiwicmVhZGVyX29mX3RhZyIsInJlYWRfdHVwbGUiLCJyZWFkX3JlY29yZCIsIm5hbWUiLCJyZWFkX251bV92YXJpYW50X2NvbnQiLCJyZWFkX251bV92YXJpYW50IiwicmVhZF92YXJpYW50X2NvbnQiLCJyZWFkX3ZhcmlhbnQiLCJyZWFkX3RhYmxlIiwicmVhZGVycyIsInJlYWRfc2hhcmVkIiwidHJlZV9vZl9zdHJpbmciLCJza2lwX2J5dGVzIiwic2tpcF91bml0Iiwic2tpcF9ib29sIiwic2tpcF9pbnQ4Iiwic2tpcF9pbnQxNiIsInNraXBfaW50MzIiLCJza2lwX2ludDY0Iiwic2tpcF9mbG9hdDMyIiwic2tpcF9mbG9hdDY0Iiwic2tpcF91dmludCIsInNraXBfc3ZpbnQiLCJza2lwX3N0cmluZyIsInNraXBfYXJyYXkiLCJza2lwcGVyX29mX3RhZyIsInNraXBfdHVwbGUiLCJza2lwIiwic2tpcF9yZWNvcmQiLCJza2lwX251bV92YXJpYW50X2NvbnQiLCJza2lwX251bV92YXJpYW50Iiwic2tpcF92YXJpYW50X2NvbnQiLCJza2lwX3ZhcmlhbnQiLCJza2lwX3RhYmxlIiwiYXJyYXkiLCJyZWNvcmQiLCJ0dXBsZSIsIm1hcCIsImYiLCJmb3JtYXQiLCJzaGFyZWQiLCJvcHRfbmFtZSIsInN1ZmZpeCIsImNvbnMiLCJwIiwiYWEiLCJoZWFkZXIiLCJoZWFkZXIkMCIsInJlY29yZF9hcnJheSIsImluaXQiLCJ2aWV3X29mX3RyZWUiLCJ0IiwicHJpbnRfdmlld19vZl90cmVlIiwib3V0cHV0X3ZpZXdfb2ZfdHJlZSIsInZpZXciLCJwcmludF92aWV3Iiwib3V0cHV0X3ZpZXciLCJzcGxpdCIsInN0b3AiLCJzdGFydCIsImxvYWRfbGluZXMiLCJsb2FkIiwic3ltYm9sIiwiZGVmYXVsdF9kaWN0X3BhdGgiLCJsb2FkX2RpY3Rpb25hcnkiLCJkaWNfZmlsZSIsImZuIiwiZSQwIiwiZSIsIndyaXRlX3VuaXEiLCJsYXN0Iiwic2F2ZV9kaWN0aW9uYXJ5IiwiZmluYWxseSQwIiwiaW5wdXRfZmlsZSIsImZuYW1lIiwicmVhZCIsImljIiwieCIsImUkMCIsImUiLCJvdXRwdXRfZmlsZSIsIndyaXRlIiwib2MiLCJmcm9tX2NoYW5uZWwiLCJsZW4iLCJvcHQiLCJzdGgiLCJzaHJsZW4iLCJpYiIsImZyb21fZmlsZSIsInRvX2NoYW5uZWwiLCJvYiIsInRvX2ZpbGUiLCJmcm9tX2xleGJ1ZiIsImxzIiwibGV4YnVmIiwic3RyZWFtIiwiZnJvbV9zdHJpbmciLCJidWYiLCJsbnVtIiwicyIsImZyb21fY2hhbm5lbCQwIiwiZnJvbV9maWxlJDAiLCJzcmMiLCJmbmFtZTAiLCJzZXFfdW5mb2xkIiwiZiIsInUiLCJ1JDAiLCJzZXFfZnJvbV9sZXhidWYiLCJmaW4iLCJ2Iiwic2VxX2Zyb21fc3RyaW5nIiwic2VxX2Zyb21fY2hhbm5lbCIsInNlcV9mcm9tX2ZpbGUiLCJmaW4kMCIsImxpc3RfZnJvbV9zdHJpbmciLCJzZXEiLCJsaXN0X2Zyb21fY2hhbm5lbCIsImxpc3RfZnJvbV9maWxlIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCQwIiwidG9fZmlsZSQwIiwic2VxX3RvX3N0cmluZyIsInN0aCQwIiwibGYiLCJzZXFfdG9fY2hhbm5lbCIsInNlcV90b19maWxlIiwibGlzdF90b19zdHJpbmciLCJsIiwibGlzdF90b19jaGFubmVsIiwibGlzdF90b19maWxlIiwicHJlc2V0X3Vua25vd25fZmllbGRfaGFuZGxlciIsImxvYyIsIm5hbWUiLCJtc2ciLCJ1bmtub3duX2ZpZWxkX2hhbmRsZXIiLCJzdHJpbmdfb2ZfcGF0aCIsIm4iLCJlcnJvciIsInBhdGgiLCJzdHJpbmdfb2ZfZXJyb3IiLCJ2YWxpZGF0ZV9saXN0IiwiaSIsImwkMCIsInN1YnBhdGgiLCJlcnIiLCJ2YWxpZGF0ZV9hcnJheSIsImEiLCJpJDAiLCJ2YWxpZGF0ZV9vcHRpb24iLCJlcnJvcl93aXRoX2xpbmUiLCJwIiwiczIiLCJsaXN0X2l0ZXIiLCJzZXAiLCJsJDEiLCJ5JDAiLCJ5IiwiYXJyYXlfaXRlciIsIndyaXRlX2NvbW1hIiwid3JpdGVfbGlzdCIsIndyaXRlX2l0ZW0iLCJ3cml0ZV9hcnJheSIsIndyaXRlX2Fzc29jX2xpc3QiLCJ3cml0ZV9rZXkiLCJrIiwid3JpdGVfYXNzb2NfYXJyYXkiLCJ3cml0ZV9vcHRpb24iLCJ3cml0ZV9zdGRfb3B0aW9uIiwid3JpdGVfbnVsbGFibGUiLCJ3cml0ZV9pbnRfYXNfc3RyaW5nIiwid3JpdGVfaW50OCIsIndyaXRlX2ludDhfYXNfc3RyaW5nIiwid3JpdGVfaW50MzIiLCJ3cml0ZV9pbnQzMl9hc19zdHJpbmciLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X2FzX3N0cmluZyIsIm1pbl9mbG9hdCIsIm1heF9mbG9hdCIsIndyaXRlX2Zsb2F0X2FzX2ludCIsIndyaXRlX2Zsb2F0X2FzX2ludF9zdHJpbmciLCJyZWFkX251bGwiLCJsYiIsInJlYWRfYm9vbCIsInJlYWRfaW50IiwicmVhZF9pbnQ4IiwicmVhZF9pbnQzMiIsInJlYWRfaW50NjQiLCJyZWFkX251bWJlciIsInJlYWRfc3RyaW5nIiwicmVhZF9qc29uIiwicmVhZF9saXN0IiwicmVhZF9pdGVtIiwicmVhZF9hcnJheSIsInJlYWRfYXNzb2NfbGlzdF9yZXYiLCJyZWFkX2tleSIsImFjYyIsInJlYWRfYXNzb2NfbGlzdCIsInJlYWRfYXNzb2NfYXJyYXkiLCJ0bCIsInIiLCJyZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIiwibWlzc2luZ190dXBsZV9maWVsZHMiLCJyZXFfZmllbGRzIiwibWlzc2luZyIsIm1pc3NpbmdfZmllbGQiLCJmaWVsZF9uYW1lIiwibWlzc2luZ19maWVsZHMiLCJiaXRfZmllbGRzIiwiZmllbGRfbmFtZXMiLCJ6IiwiaiIsImludmFsaWRfdmFyaWFudF90YWciLCJyZWFkX3dpdGhfYWRhcHRlciIsIm5vcm1hbGl6ZSIsInJlYWRlciIsImFzdCIsImFzdCQwIiwibGIkMCIsIndyaXRlX3dpdGhfYWRhcHRlciIsInJlc3RvcmUiLCJ3cml0ZXIiLCJvYl90bXAiLCJzX3RtcCIsInJlYWRfZXJyb3IiLCJyZWFkX2Vycm9yX2F0IiwidGFnX2Vycm9yIiwidGFnIiwidW5zdXBwb3J0ZWRfdmFyaWFudCIsImgiLCJoYXNfYXJnIiwiZ2V0X3VuaXRfcmVhZGVyIiwicmVhZF91bml0IiwiZ2V0X2Jvb2xfcmVhZGVyIiwiZ2V0X2ludF9yZWFkZXIiLCJnZXRfY2hhcl9yZWFkZXIiLCJyZWFkX2NoYXIiLCJnZXRfaW50MzJfcmVhZGVyIiwiZ2V0X2ludDY0X3JlYWRlciIsImdldF9mbG9hdDMyX3JlYWRlciIsImdldF9mbG9hdDY0X3JlYWRlciIsInJlYWRfZmxvYXQzMiIsInJlYWRfZmxvYXQ2NCIsImdldF9zdHJpbmdfcmVhZGVyIiwicmVhZF9hcnJheV92YWx1ZSIsImdldF9yZWFkZXIiLCJnZXRfYXJyYXlfcmVhZGVyIiwiZ2V0X2xpc3RfcmVhZGVyIiwid3JpdGVfdW50YWdnZWRfb3B0aW9uIiwieCQwIiwiYXJyYXlfaW5pdDIiLCJhcnJheV9pdGVyMiIsIndyaXRlX3VudGFnZ2VkX2FycmF5IiwiY2VsbF90YWciLCJ3cml0ZV91bnRhZ2dlZF9saXN0Iiwic2FmZV9yIiwidHlwZV9maWVsZF9uYW1lIiwibm9ybWFsaXplX3R5cGVfZmllbGQiLCJmaWVsZHMiLCJ0eXBlIiwicmVzdG9yZV90eXBlX2ZpZWxkIiwiZmllbGRzJDAiLCJub3JtYWxpemUkMCIsInZhbHVlIiwicmVzdG9yZSQwIiwidGJsIiwiaXNfa25vd25fdGFnIiwiaXNfY2F0Y2hfYWxsX3RhZyIsImNhdGNoX2FsbF90YWciLCJmb3VuZCIsImZpZWxkIiwidmFyaWFudCIsImZpZWxkcyQxIiwidGFnZ2VkIiwidGFnJDAiLCJyZWFsX3YiLCJyZWFsX3RhZyIsIm9wdF92YWx1ZSIsInRhZyQxIiwidiQwIiwiZW1wdHlfZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuIiwiaXNfZW1wdHlfZXhjZXB0aW9uc19jYXVnaHRfYW5kIiwid2Fybl9hdXgiLCJwYXJhbWV0ZXJzIiwiZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IiwidG9fdWkiLCJmaWxlX25hbWUiLCJtZXNzYWdlIiwiZXhuIiwiZGVmYXVsdCQwIiwidW5jYXVnaHQkMCIsImRmdCIsImVycm9yIiwidW5jYXVnaHQiLCJzdHJpbmdsaXN0Iiwid2Fybl93aXRoX2V4biIsIm9wdCIsImxpbmUiLCJmaWxlIiwic3RoIiwic3RoJDAiLCJwb3MiLCJsaWFpc29uIiwicyIsInBvcyQwIiwid2FybiIsImZpbGVfbGluZSIsInByaW50X2Zvcl9LYVNpbSIsImhhbmRsZXJzIiwicGFyYW1ldGVycyQwIiwiY2F1Z2h0IiwicHJpbnQiLCJwcmludF9lcnJvcnNfbGlnaHRfZm9yX2thc2ltIiwid3JhcCIsInN0cmluZyIsInN0cmluZ19vcHQiLCJjaGVja19wb2ludCIsInBhcmFtZXRlciIsImVycm9yJDAiLCJlcnJvciQxIiwiZm9yX0thU2ltIiwiZiIsImxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIiwiYSIsImIiLCJsaWZ0X2dlbmVyaWNfYmluYXJ5X2JpbmFyeV9mb3IiLCJjIiwiYiQwIiwibGlmdF9nZW5lcmljX3Rlcm5hcnlfZm9yX0thU2ltIiwibGlmdF9nZW5fdW5hcnkiLCJkdW1wIiwib3V0cHV0IiwibGlmdF9nZW5fYmluYXJ5IiwibGlmdF9nZW5fdGVybmFyeSIsImxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdSIsImxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfYiIsImxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdCIsImxpZnRfd2l0aG91dF9sb2dnaW5nX3VuYXJ5IiwibGlmdF93aXRob3V0X2xvZ2dpbmdfYmluYXJ5IiwibGlmdF93aXRob3V0X2xvZ2dpbmdfdGVybmFyeSIsInN0cmluZ19vZl9zdGVwX2tpbmQiLCJ4IiwiaW50JDAiLCJpbnQkMSIsInN0cmluZyIsImludCQyIiwiaW50JDMiLCJpbnQkNCIsImludCQ1Iiwic3RyaW5nJDAiLCJzdHJpbmckMSIsInByaW50X3N0ZXBfa2luZCIsInBhcmFtZXRlcnMiLCJwcmludF90YXNrIiwicGFyYW1ldGVyIiwiYiIsImEiLCJrIiwibCIsIm91dHB1dCIsInEiLCJ0Iiwib3V0cHV0JDAiLCJrJDAiLCJrJDEiLCJvdXRwdXQkMSIsIm91dHB1dCQyIiwiayQyIiwiYiQwIiwidGFiIiwiaSIsImkkMCIsInRpbWUiLCJjbG9zZV9sb2dnZXIiLCJmbHVzaF9sb2dnZXIiLCJpc19kdW1teSIsInN0ZXBfa2luZCIsImFkZF9ldmVudCIsImVycm9yIiwiZiIsImxvZ19pbmZvIiwiZXJyb3IkMCIsIm5leHRfZGVwdGgiLCJmJDAiLCJ0YXNrIiwidGVybWluYXRlZF90YXNrIiwiY3VycmVudF90YXNrIiwiY2xvc2VfZXZlbnQiLCJsb2dfaW5mbyQwIiwiZXJyb3IkMSIsImludGVycnVwdGVkIiwiZXJyb3IkMiIsInRhaWwiLCJ0YWlsJDAiLCJ0ZXJtaW5hdGVkX3Rhc2skMCIsImxvZ19pbmZvJDEiLCJzaXplX2FmdGVyIiwiZ2VuX29wdCIsImdlbiIsImUiLCJhZGRfZXZlbnRfb3B0IiwiY2xvc2VfZXZlbnRfb3B0IiwicHJvcGFnYXRpb25fbGFiZWxzIiwicHJvcGFnYXRpb25fY2FzZXMiLCJjb3B5IiwiaW5pdF9sb2dfaW5mbyIsImxvZ19pbmZvX3RvX2pzb24iLCJmbG9hdF9vZl9qc29uIiwiaW50X29mX2pzb24iLCJsb2dfaW5mb19vZl9qc29uIiwiaW5pdCIsImR1bXBfc2hvcnRfbG9nIiwicmVzZXRfbG9nIiwibG9nIiwiZWxsYXBzZWRfdGltZSIsImVsbGFwc2VkX2dsb2JhbF90aW1lIiwic2V0X3RpbWUiLCJzZXRfc3RlcF90aW1lIiwic2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUiLCJzdCIsInNldF9jb25jdXJyZW50X2V2ZW50X2RldGVjdGlvbiIsInNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uXyIsInNldF9ncmlkX2dlbmVyYXRpb24iLCJzZXRfY2Fub25pY2FsaXNhdGlvbiIsImFkZF9jYXNlIiwiYWRkX2xvb2tfZG93bl9jYXNlIiwiYWRkX2xvb2tfdXBfY2FzZSIsImFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24iLCJhZGRfcHJvcGFnYXRpb25fY2FzZV91cCIsImluY19jdXQiLCJpbmNfYnJhbmNoIiwiaW5jX25fa2FzaW1fZXZlbnRzIiwiaW5jX25fb2JzX2V2ZW50cyIsImluY19uX3NpZGVfZXZlbnRzIiwiaW5jX25faW5pdF9ldmVudHMiLCJpbmNfY3V0X2V2ZW50cyIsImluY19rX2N1dF9ldmVudHMiLCJyZXNldF9jdXRfZXZlbnRzIiwiaW5jX3NlbGVjdGVkX2V2ZW50cyIsImluY19yZW1vdmVkX2V2ZW50cyIsImR1bXBfY29tcGxldGVfbG9nIiwibG9nZ2VyIiwidGljayIsInNldF9nbG9iYWxfY3V0IiwibiIsInNldF9wc2V1ZG9faW52IiwibGlmdCIsImYiLCJlbXB0eSIsImlzX2VtcHR5Iiwic2luZ2xldG9uIiwiaXNfc2luZ2xldG9uIiwiYWRkIiwiYWRkX3doZW5fbm90X2luIiwicCIsImUiLCJ4IiwicyIsInMkMCIsImUkMCIsInJlbW92ZSIsInVuaW9uIiwiZGlzam9pbnRfdW5pb24iLCJpbnRlciIsImRpZmYiLCJtaW51cyIsImNhcmRpbmFsIiwibWVtIiwiZXhpc3RzIiwiZmlsdGVyIiwiZm9yX2FsbCIsInBhcnRpdGlvbiIsImNvbXBhcmUiLCJlcXVhbCIsInN1YnNldCIsIml0ZXIiLCJmb2xkIiwiZm9sZF9pbnYiLCJlbGVtZW50cyIsImNob29zZSIsIm1pbl9lbHQiLCJtYXhfZWx0IiwiZW1wdHkkMCIsImlzX2VtcHR5JDAiLCJtaW5fZWx0JDAiLCJtZW0kMCIsImZpbmRfb3B0aW9uIiwiYSIsImIiLCJjIiwiZCIsImZpbmRfZGVmYXVsdCIsImZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyIsImZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MiLCJhZGQkMCIsIm92ZXJ3cml0ZSIsInBhcmFtZXRlciIsImVycm9yIiwibWFwIiwiYm9vbCIsImVycm9yJDAiLCJhZGRfb3Jfb3ZlcndyaXRlIiwicmVtb3ZlJDAiLCJyZW1vdmVfb3Jfbm90IiwidXBkYXRlIiwibWFwMiIsIm1hcDJ6IiwiZm9sZDJ6IiwiZm9sZDIiLCJpdGVyMiIsImciLCJoIiwibWFwZiIsIm1hcGciLCJmb2xkMl9zcGFyc2UiLCJpdGVyMl9zcGFyc2UiLCJkaWZmJDAiLCJkaWZmX3ByZWQiLCJtZXJnZSIsInVuaW9uJDAiLCJmb2xkX3Jlc3RyaWN0aW9uIiwiZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfIiwiaXRlciQwIiwiZm9sZCQwIiwibWFwaSIsImZvcl9hbGwkMCIsImZpbHRlcl9vbmUiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwiYmluZGluZ3MiLCJ0b19qc29uIiwib2ZfanNvbiIsInByb2pfbWFwIiwiaWRlbnRpdHlfZWx0Iiwia2V5X2EiLCJkYXRhX2EiLCJtYXBfYiIsImtleV9iIiwib2xkIiwibW9uYWRpY19wcm9qX21hcF9pIiwiZXJyb3IkMSIsImRhdGEiLCJlcnJvciQyIiwiZGF0YSQwIiwiZXJyb3IkMyIsIm1vbmFkaWNfcHJval9tYXAiLCJwYXJ0aXRpb25fc2V0Iiwic2V0IiwibmV3c2V0IiwibW9uYWRpY19wYXJ0aXRpb25fc2V0IiwicHJval9zZXQiLCJzZXRfYSIsInNldF9iIiwibW9uYWRpY19wcm9qX3NldCIsInByb2oyIiwia2V5X2MiLCJzdWJtYXAiLCJzdWJtYXAkMCIsInByb2oyX21vbmFkaWMiLCJoYW5kbGVyIiwibXZiZHVfaGFuZGxlciIsImhhbmRsZXIkMCIsImhhbmRsZXIkMSIsIm12YmR1X2hhbmRsZXIkMCIsImhhbmRsZXIkMiIsImhhbmRsZXIkMyIsImhhbmRsZXIkNCIsImxvY2FsX3RyYWNlIiwicG9vbCIsInB1c2giLCJvdXRfbGlzdCIsImluX2xpc3QiLCJhZGRfZWx0IiwiZm9sZF9sZWZ0IiwiYWNjIiwicHJpbnRfd2wiLCJwYXJhbWV0ZXJzIiwid2wiLCJpIiwicG9wIiwieCQwIiwidGwiLCJyZW1vdmVfZWx0IiwieCQxIiwiaW52YWxpZF9hcmciLCJtaCIsInBvcyIsImV4biIsInZhbHVlIiwiZGltZW5zaW9uIiwia2V5X2xpc3QiLCJwYXJlbWV0ZXJzIiwidCIsInNpemUiLCJhcnJheSIsImsiLCJzb2wiLCJzb2wkMCIsImskMCIsImskMSIsImNyZWF0ZSIsImNyZWF0ZV9iaWdnZXN0X2tleSIsImV4cGFuZF9hbmRfY29weSIsImRpbWVuc2lvbiQwIiwiYXJyYXkkMCIsImtleSIsImluaXQiLCJhcnJheSQyIiwiZXJyb3IkNCIsImFycmF5JDEiLCJnZXQiLCJmcmVlIiwidW5zYWZlX2dldCIsInByaW50IiwicHJpbnRfZWx0IiwiZWx0IiwicGFyYW1ldGVycyQwIiwiaSQwIiwicmVtYW5lbnQkMSIsInJlbWFuZW50IiwicmVtYW5lbnQkMCIsImZvbGRfd2l0aF9pbnRlcnJ1cHRpb24iLCJvdXRwdXRfb3B0IiwiZm9sZDJfY29tbW9uIiwidDEiLCJ0MiIsImFycmF5MSIsImFycmF5MiIsIngyIiwieDEiLCJyZW1hbmVudCQ0IiwieDIkMCIsInJlbWFuZW50JDIiLCJrJDIiLCJyZW1hbmVudCQzIiwiayQzIiwiZnJlZV9hbGwiLCJvbGRfZGltZW5zaW9uIiwibWF0cml4IiwibWF0cml4JDAiLCJleHRfbGlzdCIsImxpc3QiLCJ0MiQwIiwibDIiLCJrZXkyIiwiZGltIiwiaiIsIm9sZF91bmRlcmx5aW5nIiwib2xkX3VuZGVybHlpbmckMCIsIm9sZF91bmRlcmx5aW5nJDEiLCJvbGRfdW5kZXJseWluZyQyIiwibmV3X3VuZGVybHlpbmciLCJuZXdfbWF0cml4IiwidW5kZXJseWluZyIsInVuZGVybHlpbmckMCIsInByaW50X29mIiwiZm9sZF9nZW4iLCJmb2xkMSIsImIkMCIsImMkMCIsImJhc2ljIiwibiIsImtleXMiLCJuZXdfYXJyYXkiLCJuZXdfYmFzaWMiLCJpbSIsImltJDAiLCJsIiwidCQwIiwib3V0cHV0JDEiLCJsaXN0JDAiLCJvdXRwdXQiLCJ0YWlsIiwiaGVhZCIsIm91dHB1dCQwIiwiZmluZFNldCIsInBhcmVudCIsInJvb3QiLCJsJDAiLCJnZXRfcmVwcmVzZW50ZW50IiwidW5pb25fbGlzdCIsInRvX3Zpc2l0IiwidCQxIiwidG9fdmlzaXQkMCIsImEkMCIsInRvX3Zpc2l0JDEiLCJ0JDIiLCJyb290X3giLCJyb290X3kiLCJ1bmlvbl9hcnJheSIsIml0ZXJpIiwiZnN0X29wdGlvbiIsInNuZF9vcHRpb24iLCJlc2NhcGVfbGFiZWxfaW5fZG90IiwibWFrZV9pZF9jb21wYXRpYmxlX3dpdGhfZG90X2ZvIiwic3RyaW5nIiwidGFiIiwicG9zJDIiLCJjaGFyJDAiLCJsaXN0ZV9jaGFyIiwicG9zJDAiLCJsJDEiLCJwb3MkMSIsInNvcnRlZF9wYXJ0c19vZl9saXN0IiwiYXV4Iiwic3VmZml4IiwibGlzdCQxIiwic29ydF9saXN0IiwicmVmaW5lZF9saXN0Iiwia2V5JDAiLCJyZWZpbmVkX3NvcnRlZF9saXN0IiwiY29uc3RfdW5pdCIsImFycmF5X29mX2xpc3QiLCJxIiwiYSQxIiwidW5zb21lIiwidHJhY2UiLCJpbnRlcl9saXN0IiwibDEkMSIsImwyJDEiLCJsMSIsInJlcCIsImwyJDAiLCJsMSQwIiwicmVwJDAiLCJsaXN0XzBfbiIsImxpc3RfbWludXMiLCJxMiIsInExIiwicTEkMCIsInByaW50X2NvbW1hIiwiY29tbWEiLCJmZXRjaF9hcnJheSIsImRlZiIsImkkMSIsImFzc28iLCJpbnQkMCIsImZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5Iiwibm9kZV9vZl9pbnQiLCJpbnRfb2Zfbm9kZSIsIm5vZGVfb2Zfbm9kZV9sYWJlbCIsIm5vZGVfbGlzdCIsImVkZ2VfbGlzdCIsIm0iLCJtYXhfbm9kZSIsIm5vZGVzIiwibm9kZXMkMCIsImVkZ2VzIiwiZWRnZSIsIm4yIiwibGFiZWwiLCJuMSIsImVkZ2VzJDAiLCJjb21wdXRlX3NjYyIsImxvdyIsInByZSIsIm9uX3N0YWNrIiwibl90b19zdHJpbmciLCJncmFwaCIsIm9uX3N0YWNrJDAiLCJwcmUkMCIsImxvdyQwIiwib25fc3RhY2skMSIsInByZSQxIiwibG93JDEiLCJlcnJvciQ4IiwibG93JDQiLCJsb3ckNSIsImVycm9yJDkiLCJsb3ckNiIsImVycm9yJDE0IiwicHJlJDQiLCJwcmUkNSIsImVycm9yJDEwIiwicHJlJDYiLCJlcnJvciQxMyIsIm9uX3N0YWNrJDQiLCJvbl9zdGFjayQ1IiwiZXJyb3IkMTEiLCJvbl9zdGFjayQ2IiwiZXJyb3IkMTIiLCJzY2NfbGlzdCIsInN0YWNrIiwiY291bnRlciIsInYiLCJzdGFjayQwIiwiY291bnRlciQwIiwiZWRnZXNfdiIsInciLCJwcmVfdyIsInNjY19saXN0JDAiLCJsb3dfdiIsImxvd193IiwiZXJyb3IkNSIsInN0YWNrJDEiLCJzY2NfbGlzdCQxIiwiY291bnRlciQxIiwibG93JDIiLCJlcnJvciQ2IiwibG93X3YkMCIsImVycm9yJDciLCJwcmVfdyQwIiwibG93JDMiLCJwcmVfdiIsIm9uX3N0YWNrJDIiLCJzdGFjayQyIiwiY2MiLCJzdGFjayQzIiwib25fc3RhY2skMyIsImNjJDAiLCJwcmUkMiIsInByZSQzIiwiYWRkX2JyaWRnZXMiLCJzY2MiLCJzdHJpbmdfb2ZfbiIsInN0cmluZ19vZl9lIiwiYnJpZGdlcyIsInNjYyQwIiwic2NjJDEiLCJzY2MkNCIsIm5vZGUiLCJuJDAiLCJzY2MkMiIsIm5pIiwic2NjaSIsInNjY2kkMCIsInNjY2kkMSIsIm5qIiwic2NjaiIsInNjY2okMCIsInNjY2okMSIsIm5zdHJpbmdpIiwibnN0cmluZ2oiLCJicmlkZ2VzJDAiLCJzY2MkMyIsImludmFsaWQiLCJQT1MiLCJtZXNzYWdlIiwiaW52YWxpZF9hcmdfYm9vbCIsIm1lbWJlciIsImRpY3Rpb25hcnkiLCJpbl9jb25zdHJ1Y3Rpb24iLCJzdGFiaWxpemUiLCJhc3NvJDAiLCJ0cmFuc2xhdGUiLCJkaWN0aW9uYXJ5JDAiLCJzdGFiaWxpemVkIiwiYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IiwidW5pcXVlbHkiLCJidWlsZCIsImZyZXNoIiwiYXNzb19pZCQxIiwiaGFzaF90YWJsZSIsImhhc2giLCJkaWN0aW9uYXJ5JDEiLCJhc3NvX2lkIiwiYXNzb19pZCQwIiwiYWxsb2NhdGUiLCJhYSIsImFsbG9jYXRlX3VuaXF1ZWx5IiwiYWxsb2NhdGVfYm9vbCIsInVuc2FmZV9hbGxvY2F0ZSIsImRpYyIsImRpYyQwIiwibGFzdF9lbnRyeSIsInRpY2tfc3RvcmllcyIsImYiLCJjb25mIiwic2F2ZV9wcm9ncmVzc19iYXIiLCJuX3N0b3JpZXMiLCJjb3VudGVyIiwibGFzdCIsImluaXQiLCJjIiwibiIsIm5jIiwibmwiLCJuJDAiLCJiYXIiLCJuJDEiLCJ0aWNrJDAiLCJ0aWNrIiwiY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzIiwiY29uZmlnX3NtYWxsX2dyYXBoIiwiY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyIiwiaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBoIiwiY2hlY2tfbW9kZSIsInN3YXAiLCJhIiwiYiIsImlnbm9yZV9mc3QiLCJjb21wYXJlX3N1Y2MiLCJwIiwibCIsImwkMCIsInEiLCJzdHJpY3RseV9pbmNyZWFzaW5nIiwic3RyaWN0bHlfZGVjcmVhc2luZyIsImNvbmNhdCIsInByaW50X2xpc3QiLCJjaGVjayIsImZvcm0iLCJzdHJpbmciLCJyZXAiLCJpc19zdHJpY3Rfc3VibGlzdCIsImEkMCIsImIkMCIsImgiLCJ0IiwiaCQwIiwidCQwIiwidCQxIiwiaW5zZXJ0X2VsdCIsImUiLCJkaWZmX2xpc3QiLCJhY2N1IiwiYWNjdSQwIiwiY29tcGFyZV9ib29sIiwiZGlmZl9saXN0X2RlY3JlYXNpbmciLCJ4IiwieSIsIm1lcmdlX2xpc3RfZGVjcmVhc2luZyIsImNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCIsInBhcmFtZXRlciIsImhhbmRsZXIiLCJsb2dfaW5mbyIsImVycm9yIiwiZXZlbnQiLCJjb25maWciLCJwcmVjIiwiaXNfb2JzIiwiZXJyX2xvZ2dlciIsImlzX29icyQwIiwiaSIsIm1heF9pbmRleCIsIm5fZWRnZXMiLCJmJDAiLCJjbG9zZSIsImNsb3NlX3RpY2siLCJ0aWNrJDEiLCJkb190aWNrIiwiY2xvc2VfdGljayQwIiwiZG9fdGljayQwIiwic19wcmVkX3N0YXIiLCJtYXhfc3VjYyIsInN1Y2MiLCJwcmVkIiwiaXNfbGFzdF9zdWNjX29mIiwiYWRkIiwibm9kZSIsIm9sZF9sIiwibG9nX2luZm8kMCIsImVycm9yJDAiLCJzX3ByZWQiLCJqIiwibF9wcmVkIiwicHJlZF9zdGFyIiwibmV3X2wiLCJkaWZmIiwiayIsIm91dHB1dCIsImNsb3N1cmVfYm90dG9tX3VwIiwiZXZlbnRfb3B0IiwicyIsImdyYXBoIiwiY2xvc3VyZV90b3BfZG93biIsImRlbHRhIiwicHJlYyQwIiwibWVyZ2VfdGFpbnRzIiwibDEiLCJsMiIsInEkMCIsInRhaW50aW5nIiwib3V0cHV0JDEiLCJkZWx0YSQwIiwib3V0cHV0JDAiLCJkZWx0YSQxIiwibmV3X3RhaW50IiwidGFpbnRzIiwidGFpbnQiLCJzaGlmdGVkX3RhaW50cyIsImdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfdyIsIm1vZGUiLCJtIiwiY2xvc3VyZV9jaGVjayIsImxvZ19pbmZvJDEiLCJlcnJvciQxIiwicyQwIiwicyQxIiwiY2xvc3VyZSIsInJlZHVjdGlvbl90b3BfZG93biIsInByZWNfc3RhciIsImVpZCIsIm5laWdoIiwib3V0IiwidG9fcmVtb3ZlIiwibDEkMCIsImwyJDAiLCJsMSQxIiwiY21wIiwibDEkMiIsInNldCIsImxvZ19pbmZvJDIiLCJlcnJvciQyIiwiYXRvbV90ZXN0ZWQiLCJhdG9tX21vZGlmaWVkIiwiZW1wdHlfY29uZmlnIiwicHJpbnRfZXZlbnRfa2luZCIsImVudiIsImRlYnVnX3ByaW50X2NhdXNhbCIsImRlYnVnX3ByaW50X2F0b20iLCJkZWJ1Z19wcmludF9ncmlkIiwiZyIsInNpdGVfaWQiLCJub2RlX2lkIiwiZW1wdHlfZ3JpZCIsImdyaWRfZmluZCIsImdyaWQiLCJxdWFyayIsImlzX2xpbmsiLCJ2YSIsImV2ZW50X251bWJlciIsImtpbmQiLCJhdHQkMCIsImF0dCIsImF0dHJpYnV0ZSIsInBpZCIsImVpZF9pbml0Iiwib2xkIiwiYWRkX2FjdGlvbnMiLCJhY3Rpb25zIiwiZ3JpZCQwIiwic2l0ZSIsInEkMSIsInNpdGUyIiwic2l0ZTEiLCJncmlkJDQiLCJxJDIiLCJzaXRlMSQwIiwicSQzIiwic2l0ZSQwIiwiYWciLCJuYSIsInNpZ3MiLCJhZ19pbnRmIiwiZ3JpZCQxIiwiYWckMCIsIm5hJDAiLCJzaWdzJDAiLCJncmlkJDIiLCJhZGRfdGVzdHMiLCJ0ZXN0cyIsInJlY29yZCIsInJlY29yZF9vYnMiLCJzaWRlX2VmZmVjdHMiLCJyZWNvcmRfaW5pdCIsImxibCIsImN1dCIsIm9wdCIsImF0dHJpYnV0ZV9pZHMiLCJzdGgiLCJ3aXRoX3JlZHVjdGlvbiIsImF0dHJpYnV0ZV9pZHMkMCIsImNmZyIsImF0dHJpYnV0ZV9pZHMkMSIsInR5cGVfaSIsInNpdGVfaSIsIm5vZGVfaSIsImF0dHJpYnV0ZSQxIiwiYXR0cmlidXRlJDIiLCJhdG9tJDAiLCJldmVudHNfa2luZCQxIiwicHJlZHMkMCIsInByZWNfMSQwIiwibGFzdF90ZXN0ZWQkMiIsImxhc3RfbW9kaWYkMSIsImNvbmZpZyQzIiwibGFzdF9tb2RpZiIsImxhc3RfdGVzdGVkIiwiYXR0cmlidXRlJDAiLCJhdG9tIiwiZXZlbnRzX2tpbmQkMCIsInByZWRzIiwicHJlY18xIiwiY29uZmlnJDAiLCJldmVudHNfa2luZCIsImNmbGN0X3NldCIsImNmbGN0IiwiY29uZmlnJDIiLCJsYXN0X3Rlc3RlZCQxIiwicHJlZF9pZCIsInByZWRfc2V0IiwiY29uZmlnJDEiLCJsYXN0X3Rlc3RlZCQwIiwibGFzdF9tb2RpZiQwIiwiY2ZnJDAiLCJyZWR1Y3Rpb24iLCJyZWR1Y3Rpb24kMCIsImlkc19vZl9ncmlkIiwia2V5IiwicHJlY19zdGFyX29mX2NvbmZpZyIsImVucmljaF9ncmlkIiwiY29uZmlnX2Nsb3N1cmUiLCJrZWVwX2wiLCJ0b19rZWVwIiwiaWRzIiwicHJlY19laWRzIiwiZW1hcCIsImQiLCJkJDAiLCJkZXB0aCIsImRlcHRoX29mX2V2ZW50IiwiZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyIsImNoZWNrX2NyZWF0ZV9xdWFya3MiLCJhaWQiLCJzaXRlcyIsInF1YXJrcyIsImludGVybmFsIiwiY2hlY2tfbW9kaWZpZWRfcXVhcmtzIiwibW9kaWYiLCJjaGVja190ZXN0ZWRfcXVhcmtzIiwiY2hlY2tfZXZlbnRfcXVhcmtzIiwiYXNpdGUiLCJhc2l0ZSQwIiwiYWlkJDAiLCJhc2l0ZTIiLCJhc2l0ZTEiLCJwcmV0dHlfcHJpbnQiLCJkb3RGb3JtYXQiLCJjb21wcmVzc2lvbl90eXBlIiwibGFiZWwiLCJncmlkX2xpc3QiLCJlcnJfZm10IiwiY29tcHJlc3Npb25fdHlwZSQwIiwieiIsImxpc3QiLCJ4JDAiLCJzdG9yeV9saXN0Iiwic3RvcnlfbGlzdCQwIiwiY3B0Iiwic3RvcmllcyIsImVucmljaGVkX2NvbmZpZyIsInN0ZXBzIiwiaW5mbyIsImF2X3QiLCJncmlkX3N0b3J5IiwidGJsIiwiYXR0X2xzIiwiZG1hcCIsInNvcnRlZF9ldmVudHMiLCJub2RlX3RvX2pzb24iLCJldmVudF9raW5kIiwic3RwIiwicmlkIiwicmlkJDAiLCJzdHAkMCIsInN0cCQxIiwicGVydCIsInBlcnQkMCIsInN0cCQyIiwiZWlkc19hdF9kIiwibHMiLCJscyQwIiwibm9kZXNfdG9fbGlzdCIsIm5vZGVzX3RvX2pzb24iLCJlZGdlX3RvX2pzb24iLCJlaWQkMCIsInByZWNfZWRnZXMiLCJwcmVjX2VkZ2VzX3RvX2pzb24iLCJwcmVjJDEiLCJwcmVjJDIiLCJib29sIiwiY29uZmxfZWRnZXMiLCJjb25mbF9lZGdlc190b19qc29uIiwicHJvZmlsaW5nIiwiZGVzYyIsInRpdGxlIiwiYXRvbV9raW5kIiwicHJvZmlsaW5nJDAiLCJuYW1lIiwic3RvcnkiLCJzaXplIiwidGltZSIsInByaW50X3N0YXQiLCJlbnJpY2hlZF9ncmlkIiwiY291bnRfb2JzIiwibl9zdGVwIiwibG9uZ2VzdF9zdG9yeSIsIm5fbm9uZW1wdHkiLCJsZW5ndGhfc3VtIiwibGVuZ3RoX3NxdWFyZV9zdW0iLCJjYyIsImNjJDAiLCJsZW5ndGhfc3F1YXJlX3N1bSQwIiwibGVuZ3RoX3N1bSQwIiwibl9ub25lbXB0eSQwIiwibG9uZ2VzdF9zdG9yeSQwIiwibl9zdGVwJDAiLCJrJDAiLCJzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8iLCJwaSIsImFnJDEiLCJjb21wYXJlIiwicHJpbnQiLCJlbXB0eSIsIml0ZXIiLCJoYXNoIiwicHJlZGljYXRlIiwibGlmdCIsInByZWRpY2F0ZV9pZCIsInRhYiIsImZpbmRfZGVmYXVsdCIsImRlZiIsImZpbmRfb3B0aW9uIiwibWVtIiwicmVjeWNsZSIsInByZWRpY2F0ZV9tYXgiLCJlbXB0eSQwIiwiaXRlciQwIiwiZmluZF9kZWZhdWx0JDAiLCJmaW5kX29wdGlvbiQwIiwibWVtJDAiLCJhZGQkMCIsImNhdXNhbCIsIndlYWsiLCJzdHJvbmciLCJtaW5fbGV2ZWwiLCJoaWdoZXN0IiwiaGlnaCIsImFib3ZlX2F2ZXJhZ2UiLCJhdmVyYWdlIiwiYmVsbG93X2F2ZXJhZ2UiLCJsb3ciLCJsb3dlc3QiLCJzdHJpbmdfb2ZfbGV2ZWwiLCJsZXZlbCIsImxvd2VyIiwiaGlnaGVyIiwibl9zdG9yeSIsIm5fYnJhbmNoIiwic3RhcnQiLCJpbnByb2dyZXNzIiwic3VjY2VzcyIsImZhaWxsdXJlIiwiaW50X29mX2pzb24iLCJtZXNzYWdlX3RvX2pzb24iLCJwcm9ncmVzc19iYXIiLCJvbmVfY29tcHJlc3Npb24iLCJsb2dfaW5mb190b19qc29uIiwibmV3X3N0b3J5IiwiaW50JDAiLCJtZXNzYWdlX29mX2pzb24iLCJ4JDMiLCJsb2dfaW5mb19vZl9qc29uIiwibCQxIiwibCQyIiwieCQxIiwibCQzIiwieCQyIiwicCQwIiwiZ2V0X2NhdXNhbF90cmFjZSIsImdldF9jYXVzYWxfdHJhY2Vfb25seSIsImdldF93ZWFrX2NvbXByZXNzaW9uIiwiZ2V0X3N0cm9uZ19jb21wcmVzc2lvbiIsImdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUiLCJidWlsZF9wYXJhbWV0ZXIiLCJjYWxsZWRfZnJvbSIsIm5vbmUiLCJzZW5kX21lc3NhZ2UiLCJsb2dfc3RlcF9jaGFubmVsJDAiLCJvdXRfY2hhbm5lbF9wcm9maWxpbmckMCIsIm91dF9jaGFubmVsX2VyciQwIiwib3V0X2NoYW5uZWwkMCIsIm91dF9zZXJ2ZXIiLCJzZXJ2ZXIiLCJjaGFubmVsIiwibG9nX3N0ZXBfY2hhbm5lbCQxIiwib3V0X2NoYW5uZWxfcHJvZmlsaW5nJDEiLCJvdXRfY2hhbm5lbF9lcnIkMSIsIm91dF9jaGFubmVsJDEiLCJvdXRfc2VydmVyJDAiLCJzZXRfY29tcHJlc3Npb25fd2VhayIsInNldF9jb21wcmVzc2lvbl9zdHJvbmciLCJzZXRfY29tcHJlc3Npb25fbm9uZSIsImluaXRfaGFuZGxlciIsIm5fcnVsZXMiLCJydWxlX25hbWVfY2FjaGUiLCJyIiwibl9hZ2VudHMiLCJhZ2VudF9uYW1lX2NhY2hlIiwic3RlcHNfYnlfY29sdW1uIiwic3RyaW5nX29mX2V4biIsImdldF9wcmlvcml0aWVzIiwic2V0X2ZpcnN0X3N0b3J5X3Blcl9vYnMiLCJzZXRfYWxsX3N0b3JpZXNfcGVyX29icyIsImdldF9hbGxfc3Rvcmllc19wZXJfb2JzIiwiZ2V0X2RlYnVnZ2luZ19tb2RlIiwic2V0X2RlYnVnZ2luZ19tb2RlIiwiZ2V0X2xvZ19zdGVwIiwic2V0X2xvZ19zdGVwIiwiZ2V0X2xvZ2dlciIsInNldF9sb2dnZXIiLCJmbXQiLCJnZXRfb3V0X2NoYW5uZWwiLCJzZXRfb3V0X2NoYW5uZWwiLCJnZXRfZGVidWdnaW5nX2NoYW5uZWwiLCJzZXRfZGVidWdnaW5nX2NoYW5uZWwiLCJnZXRfa2FzYV9wYXJhbWV0ZXJzIiwic2V0X2thc2FfcGFyYW1ldGVycyIsInBhcmFtZXRlciQwIiwiZG9fd2VfdXNlX2J1Y2tldF9zb3J0IiwidXNlX2J1Y2tldF9zb3J0IiwidXNlX2Z1c2lvbl9zb3J0IiwiYWx3YXlzX2Rpc2FtYmlndWF0ZSIsInNldF9hbHdheXNfZGlzYW1iaWd1YXRlIiwiZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIiwic2V0X2l0dGVyYXRpb25fYm91bmQiLCJnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIiLCJnZXRfcHJvZmlsaW5nX2xvZ2dlciIsInN0cmluZ19vZl9ydWxlX2lkIiwic3RyaW5nX29mX2FnZW50X2lkIiwiZ2V0X3ByZWRpY2F0ZV9tYXAiLCJnZXRfaXNfdGltZV9pbmRlcGVuZGVudCIsImdldF9ibGFja2xpc3RfZXZlbnRzIiwiaXNfc2VydmVyX21vZGUiLCJnZXRfc2VydmVyX2NoYW5uZWwiLCJzaHV0X2Rvd25fc2VydmVyX2NoYW5uZWwiLCJpc19zZXJ2ZXJfY2hhbm5lbF9vbiIsInNhdmVfY3VycmVudF9waGFzZV90aXRsZSIsImR1bXBfanNvbiIsIm1lc3NhZ2UiLCJyZXNldF9wcm9ncmVzc19iYXIiLCJyZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIiwic2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIiwic2V0X3NhdmVfcHJvZ3Jlc3NfYmFyIiwic2V0X3Jlc2V0X3Byb2dyZXNzX2JhciIsInNhdmVfZXJyb3JfbG9nIiwic2V0X3NhdmVfZXJyb3JfbG9nIiwicHVzaF9qc29uIiwianNvbiIsInJlZiIsInBvcF9qc29uIiwiZWx0X29wdCIsImZpZm8iLCJkZWJ1Z19tb2RlIiwiY29tcG9zZV93aXRoX2hhbmRsZXIiLCJlbXB0eV9zaWRlX2VmZmVjdCIsInNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUiLCJhZ2VudF9uYW1lX29mX2JpbmRpbmdfdHlwZSIsImFnZW50X2lkX29mX2FnZW50IiwiYWdlbnRfbmFtZV9vZl9hZ2VudCIsImFnZW50X29mX3NpdGUiLCJhZ2VudF9pZF9vZl9zaXRlIiwiYWdlbnRfbmFtZV9vZl9zaXRlIiwic2l0ZV9uYW1lX29mX3NpdGUiLCJnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCIsImdldF90aW1lX29mX3JlZmluZWRfc3RlcCIsImdldF9pZF9vZl9yZWZpbmVkX3N0ZXAiLCJidWlsZF9ncmlkIiwiZW1wdHlfc2V0Iiwic2lkZSIsInN1YnMiLCJzaWRlX2VmZmVjdCIsIm1heWJlX3NpZGVfZWZmZWN0Iiwic2UiLCJ0cmFuc2xhdGUiLCJpZCIsImV2ZW50JDAiLCJzaWRlX2VmZmVjdHNfZHN0IiwiaW5mbyQwIiwiZXZlbnQkMSIsImlkJDAiLCJldmVudCQyIiwic2lkZV9lZmZlY3RzX2RzdCQwIiwiYWN0aW9ucyQwIiwiaW5mbyQxIiwiaWQkMSIsInRlc3RzJDAiLCJjbGVhbl9ldmVudHMiLCJwcmludF9zaWRlX2VmZmVjdCIsImxvZyIsInNpZGVfZWZmZWN0X29mX2xpc3QiLCJsZXZlbF9vZl9ldmVudCIsInByaW9yaXR5X29wdCIsInByaW9yaXRpZXMiLCJwcmlvcml0eSIsImFnX2lkIiwiZGlzYW1iaWd1YXRlIiwiZXZlbnRfbGlzdCIsIm1hcHBpbmciLCJ1c2VkIiwibWF4X2lkIiwibWFwcGluZyQwIiwidXNlZCQwIiwibWF4X2lkJDAiLCJhJDEiLCJldmVudF9saXN0X3JldiIsImNvbnZlcnRfaW5pdCIsInJlbWFuZW50Iiwic3RlcF9saXN0IiwiYWN0aW9uX2xpc3QiLCJyZWN1ciIsImFjYyIsInNvdXAiLCJhY2MkMiIsInNpdGVfbGlzdCIsInNvdXAkMCIsInRoaXMkMCIsInN0YW5kYWxvbmUiLCJ0aGlzJDEiLCJtYXAiLCJ1IiwiYWdlbnRfaW5mbyIsImFzX2luaXQiLCJyZXN0cmljdGlvbl9tYXAiLCJhZ2lkIiwicmVzdHJpY3Rpb24iLCJ1bmJpbmQiLCJyZW0iLCJzX25hbWUiLCJhZ19pbmZvIiwiYWdfaW5mbyQwIiwicmVtYW5lbnQkMCIsImJpbmQiLCJzcGxpdF9pbml0IiwicmVmaW5lZF9zdGVwX2xpc3QiLCJyZWZpbmVkX3N0ZXAiLCJhZGRfaW5fc2NvcGUiLCJzY29wZSIsIm9sZF9zZXQiLCJuZXdfc2V0IiwiZGVhbF93aXRoX3Rlc3RzIiwiZmlsbF9zaXBob24iLCJyZXZfdHJhY2UiLCJzY29wZSQxIiwic2NvcGUkMCIsInJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3QiLCJzdGF0ZSIsInN0YXRlX3JlZiIsImFnX2luZm8kMSIsInJlbWFuZW50JDEiLCJzZXQkMCIsImFnZW50X2lkX2luX29icyIsInByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIiwic2lkZXMiLCJzX2lkIiwiaW5pdF9jdXQiLCJmaW5hbGl6ZV9jdXQiLCJjdXRfc3RlcCIsIm5fY3V0Iiwia2VwdCIsInNlZW4iLCJhY3Rpb24iLCJpbnRlcmZhY2UkMCIsImxpc3QkMCIsImVsdCIsInNlZW4kMCIsInEwIiwiYWdfaWQkMCIsInMyIiwiczEiLCJxMSIsInQxIiwia2VwdCQwIiwidGVzdCIsImFnZW50IiwicHJlZGljYXRlX2luZm8iLCJzZWVuJDEiLCJzZWVuJDIiLCJjdXRfcmV2X3RyYWNlIiwicmV2X2V2ZW50X2xpc3QiLCJ0cmFjZSIsImNsZWFuIiwiY29sdW1uIiwiYmxhY2tib2FyZCIsInRhaWwiLCJoZWFkIiwiY29sdW1uJDAiLCJibGFja2JvYXJkJDAiLCJwb3AiLCJwcmVkaWNhdGVfbGlzdCIsImJsYWNrYm9hcmQkMSIsIm5fc3RlcHMiLCJzdGVwIiwiYmxhY2tib2FyZCQzIiwicHJlX2V2ZW50IiwidGVzdF9saXN0IiwidW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIiwiYnVpbGRfbWFwX3Rlc3QiLCJwcmVkaWNhdGVfaWQkMCIsInByZWRpY2F0ZV9pZCQxIiwiYWdfaWQkMSIsInNpdGVfaWQkMCIsInByZWRpY2F0ZV9pZCQyIiwiYWdfaWQkMiIsInNpdGVfaWQkMSIsInByZWRpY2F0ZV9pZCQzIiwiYWdfaWQxIiwiYWdfaWQyIiwic2l0ZV9pZDEiLCJzaXRlX2lkMiIsInByZWRpY2F0ZV9pZDEiLCJwcmVkaWNhdGVfaWQyIiwidGVzdF9tYXAiLCJib29sX2NyZWF0aW9uIiwiYWN0aW9uX21hcCIsImxpc3QyIiwibGlzdDEiLCJsaXN0MSQwIiwibGlzdDIkMCIsImFnZW50X25hbWUxIiwiYWdlbnRfbmFtZTIiLCJzMiQwIiwiczEkMCIsImFnX2lkMSQwIiwiYWdfaWQyJDAiLCJhZ2VudF9uYW1lMiQwIiwic2l0ZV9pZDEkMCIsInNpdGVfaWQyJDAiLCJwcmVkaWNhdGVfaWQxJDAiLCJib29sX2NyZWF0aW9uJDAiLCJib29sJDAiLCJib29sX2NyZWF0aW9uJDEiLCJib29sJDEiLCJ2YWx1ZSIsImlzX3JlbW92ZV9hY3Rpb24iLCJ0ZXN0X21hcCQwIiwibWVyZ2VkX21hcCIsIm1hcCQwIiwiYWN0aW9uJDAiLCJ0ZXN0JDAiLCJ0ZXN0JDEiLCJhY3Rpb24kMSIsIm1lcmdlZF9tYXAkMCIsIm5zaWQiLCJtb2Rfd2l0aG91dF90ZXN0Iiwibl9tb2RpZmljYXRpb25zIiwib2xkX2xpc3QiLCJ2Iiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwibW9kX3dpdGhvdXRfdGVzdCQwIiwibW9kX3dpdGhvdXRfdGVzdCQxIiwiYm9vbF9hY3Rpb24iLCJuX21vZGlmaWNhdGlvbnMkMCIsInByZV9zdGVwc19ieV9jb2x1bW4iLCJibGFja2JvYXJkJDIiLCJwcmVkaWNhdGVfbGlzdCQwIiwicHJlZGljYXRlX2xpc3QkMSIsInkkMCIsImNhbmRpZGF0ZXMiLCJlaWRiIiwiZWlkYSIsImNvbHVtbiQxIiwiY29sdW1uJDIiLCJ0b19wb3AiLCJlMiIsImUxIiwiYmxhY2tib2FyZCQ0IiwiYmxhY2tib2FyZCQ1IiwiZXJyb3IkMyIsImskMiIsImxpc3QkMSIsImskMSIsIndhcm4iLCJwb3MiLCJleG4iLCJkZWZhdWx0JDAiLCJ6ZXJvX3N0ZXBfaWQiLCJkdW1teV9zdGVwX2lkIiwiaW50X29mX3N0ZXBfaWQiLCJzdGVwX2lkX29mX2ludCIsImRlY19zdGVwX2lkIiwiaW5jX3N0ZXBfaWQiLCJ6ZXJvX3N0ZXBfc2hvcnRfaWQiLCJkdW1teV9zdGVwX3Nob3J0X2lkIiwiaW50X29mX3N0ZXBfc2hvcnRfaWQiLCJzdGVwX3Nob3J0X2lkX29mX2ludCIsImluY19zdGVwX3Nob3J0X2lkIiwiZGVjX3N0ZXBfc2hvcnRfaWQiLCJ3ZWFrZW5pbmciLCJkZWZpbmVkIiwidW5kZWZpbmVkJDAiLCJ1bmtub3duIiwiaXNfdW5rbm93biIsImlzX3VuZGVmaW5lZCIsImNvbXBhcmUkMCIsInByaW50JDAiLCJjb21wYXJlJDEiLCJwcmludCQxIiwibGV2ZWxzIiwiZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiIsImdldF9wcmVfZXZlbnQiLCJwcmludF9wcmVkaWNhdGVfaW5mbyIsImkkMCIsImkkMSIsImludDQiLCJpbnQzIiwiaW50MiIsImludDIkMCIsImludCQxIiwiaW50MiQxIiwiaW50JDIiLCJpbnQzJDAiLCJpbnQyJDIiLCJpbnQkMyIsImlkMiIsImlkMSIsInByaW50X2tub3duIiwic3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSIsImFnZW50X2lkIiwiaW50ZXJuYWxfc3RhdGUiLCJhZ2VudF9uYW1lIiwiYWdlbnRfaWQkMCIsInByaW50X3ByZWRpY2F0ZV92YWx1ZSIsInByaW50X3ByZWRpY2F0ZV9pZCIsInByaW50X3ByZWJsYWNrYm9hcmQiLCJuZXZlbnRzIiwic2VpZCIsInN0cmljdGx5X21vcmVfcmVmaW5lZCIsIm1vcmVfcmVmaW5lZCIsImNvbmoiLCJjb21wYXRpYmxlIiwiZGlzanVuY3Rpb24iLCJhbGxvY2F0ZSIsIm1hcF9pbnYiLCJzaWQkMCIsInNpZCIsImNyZWF0ZV9hZ2VudCIsIm5ld19saXN0IiwiZnJlZV9hZ2VudCIsImZyZWVfYWdlbnRfaWZfaXRfZXhpc3RzIiwicHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3VicyIsImxvZ19pbmZvJDMiLCJlcnJvciQ0IiwibG9nX2luZm8kNCIsImVycm9yJDUiLCJibGFja2JvYXJkJDYiLCJsb2dfaW5mbyQ1IiwiZXJyb3IkNiIsImJsYWNrYm9hcmQkNyIsImxvZ19pbmZvJDYiLCJlcnJvciQ3IiwicHJlZGljYXRlX2lkMiQwIiwiYmxhY2tib2FyZCQ4IiwibG9nX2luZm8kNyIsImVycm9yJDgiLCJibGFja2JvYXJkJDkiLCJsb2dfaW5mbyQ4IiwiZXJyb3IkOSIsImJsYWNrYm9hcmQkMTAiLCJsb2dfaW5mbyQ5IiwiZXJyb3IkMTAiLCJibGFja2JvYXJkJDExIiwibG9nX2luZm8kMTAiLCJlcnJvciQxMSIsInByZWRpY2F0ZWlkIiwiYmxhY2tib2FyZCQxMiIsImVycm9yJDEyIiwicHJlZGljYXRlc19vZl9hY3Rpb25fc3VicyIsInByZWRpY2F0ZXNfb2ZfYWN0aW9uIiwicHJlZGljYXRlc19vZl90ZXN0Iiwic2l0ZV9uYW1lIiwidHlwZV9vZl9zdGVwIiwiZ2V0X2xldmVsX29mX2V2ZW50IiwiaW5pdF9maWN0aXRpb3VzX2FjdGlvbiIsImluaXRfc3RlcCIsIm5zaWQkMCIsImFkZF9maWN0aXRpb3VzX2FjdGlvbiIsInZhbHVlJDAiLCJwcmVkaWNhdGVfdGFyZ2V0X2lkIiwic25hbWUiLCJwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGEiLCJidCIsInBvdGVudGlhbF90YXJnZXQiLCJiaW5kaW5nX3N0YXRlIiwiZm9ybWVyX3N0YXRlcyIsImJ0JDAiLCJpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyIsImFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MiLCJkYXRhX3N0cnVjdHVyZSIsImFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rcyIsImRhdGFfc3RydWN0dXJlJDAiLCJhZGRfc3VyZV90ZXN0IiwiYWRkX3N1YnNfdGVzdCIsImFkZF9zdWJzX3Rlc3RfbGluayIsImxpbmsiLCJsaW5rJDAiLCJkYXRhX3N0cnVjdHVyZSQxIiwiYWRkX3N1cmVfYWN0aW9uIiwiYWRkX3N1YnNfYWN0aW9uIiwiYWRkX3N1YnNfYWN0aW9uX2xpbmsiLCJhZGRfc3RlcF9zdHJvbmciLCJzdGVwX2lkIiwiYWcxX2lkIiwiYWcyX2lkIiwic2l0ZTFfaWQiLCJzaXRlMl9pZCIsInRlc3RlZF9zaXRlcyIsIm1vZF9zaXRlcyIsInByaW9yaXR5X3NpdGVzIiwic3VyZV9hZ2VudHMiLCJzdXJlX2FnZW50IiwiYWdlbnQxIiwiYWdlbnQyIiwibWl4X3NpdGUxIiwibWl4X3NpdGUyIiwiZGF0YV9zdHJ1Y3R1cmUkMiIsImRhdGFfc3RydWN0dXJlJDMiLCJhZ2VudCQwIiwic2l0ZV9uYW1lMSIsInNpdGVfbmFtZTIiLCJ3ZWFrMSIsIndlYWsyIiwiYWdlbnQkMSIsImRhdGFfc3RydWN0dXJlJDQiLCJkYXRhX3N0cnVjdHVyZSQ1IiwiZGF0YV9zdHJ1Y3R1cmUkNiIsImEyIiwiYTEiLCJzaWRlX2VmZmVjdCQwIiwiYWN0aW9uX2xpc3QkMCIsInRlc3RfbGlzdCQwIiwiZmljdGl0aW91c19sb2NhbF9saXN0IiwiZmljdGl0aW91c19saXN0IiwibWl4dHVyZV9hZ2VudF9pZF9tdXRleCIsInJ1bGVfYWdlbnRfaWRfc3VicyIsInJ1bGVfYWdlbnRfaWRfbXV0ZXgiLCJpbml0X3N0ZXAkMCIsInJ1bGVfYWdlbnRfaWRfbXV0ZXgkMCIsImZpY3RpdGlvdXNfbG9jYWxfbGlzdCQwIiwiZmljdGl0aW91c19saXN0JDAiLCJwcmVkaWNhdGVfaW5mbyQwIiwicnVsZV9hZ2VudF9pZF9zdWJzJDAiLCJpbml0X3N0ZXAkMSIsImluaXRfc3RlcCQyIiwicnVsZV9hZ2VudF9pZF9zdWJzJDEiLCJtaXh0dXJlX2FnZW50X2lkX211dGV4JDAiLCJpbml0X3N0ZXAkMyIsImxpbmtzX211dGV4IiwibGlua3NfbXV0ZXgkMCIsImZpY3RpdGlvdXNfbGlzdCQxIiwiYnVpbGRfbWFwIiwiYWRkX3N0YXRlIiwiZmFkZCIsIm5zaWRfdm9pZCIsIm5zaWRfbmV4dCIsInNpZGVfZWZmZWN0JDEiLCJ0ZXN0X2xpc3QkMSIsInBvdGVudGlhbF90YXJnZXQkMCIsInJ1bGVfYWdfaWQiLCJmaWN0aXRpb3VzX2xpc3QkMiIsInNpZGVfZWZmZWN0JDIiLCJzdGVwX2lkJDAiLCJwcmVfc3RlcHNfYnlfY29sdW1uJDAiLCJvYnNlcnZhYmxlX2xpc3QkMCIsImJsYWNrYm9hcmQkMTQiLCJubGlzdCIsIm1peHR1cmVfYWdfaWQiLCJwaWRfcnVsZV9hZ2VudF9tdXRleCIsInBpZF9ydWxlX2FnZW50X211dGV4JDAiLCJ0ZXN0X21hcCQxIiwiYWN0aW9uX21hcCQwIiwibV9pZCIsImFjdGlvbl9tYXAkMiIsInRlc3RfbWFwJDIiLCJubGlzdCQwIiwibWVyZ2VkX21hcCQxIiwibWVyZ2VkX21hcCQyIiwibGlua19tdXRleCIsInJ1bGVfYWdfaWQyIiwicnVsZV9hZ19pZDEiLCJsX2FnXzEiLCJsX2FnXzIiLCJtaXh0dXJlX2FnXzEiLCJzdWJzJDAiLCJtaXh0dXJlX2FnXzIiLCJhY3Rpb25fbGlzdCQxIiwibV9pZCQwIiwiZmljdGl0aW91c19saXN0JDMiLCJ1bmFtYmlndW91c19zaWRlX2VmZmVjdHMkMCIsImZpY3RpdGlvdXNfbG9jYWxfbGlzdCQxIiwiZmljdGl0aW91c19saXN0JDQiLCJsb2dfaW5mbyQxMSIsImVycm9yJDEzIiwibWVyZ2VkX21hcCQzIiwibWVyZ2VkX21hcCQ0Iiwic2lkZV9lZmZlY3QkMyIsIm9ic2VydmFibGVfbGlzdCIsImJsYWNrYm9hcmQkMTMiLCJhZGRfc3RlcCIsImZpbmFsaXplIiwiaGV1cmlzdGljIiwiYWdlbnRzX2luX29icyIsIm5fcHJlZGljYXRlcyIsImV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIiwibl9ldmVudHNfcGVyX3ByZWRpY2F0ZSIsIm5fZXZlbnRzIiwibWFuZGF0b3J5X2V2ZW50cyIsImdldF9maWN0aXRpb3VzX29ic2VydmFibGUiLCJnZXRfc2lkZV9lZmZlY3QiLCJpZ25vcmUiLCJmYWlsIiwiaXNfaWdub3JlZCIsImlzX2ZhaWxlZCIsImlzX3N1Y2NlZWRlZCIsIm51bGxfcG9pbnRlciIsInBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmQiLCJpc19iZWZvcmVfYmxhY2tib2FyZCIsImJ1aWxkX3BvaW50ZXIiLCJwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIiwiaXNfYm91bmRhcnkiLCJldmVudF9hZGRyZXNzIiwiYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIiwiaXNfZXhpc3RfZXZlbnQiLCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiIsIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uXyIsInBvaW50ZXJfdG9fbmV4dCIsInZhbHVlX2FmdGVyIiwicG9pbnRlcl90b19wcmV2aW91cyIsIm5fdW5yZXNvbHZlZF9ldmVudHMiLCJuX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIiwiZXhpc3QiLCJzdHJpbmdfb2ZfcG9pbnRlciIsInByZWRpY2F0ZV92YWx1ZSIsInBvaW50ZXIiLCJib29sZWFuJDAiLCJjYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGQiLCJwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSIsImNhc2VfdmFsdWUiLCJ5JDEiLCJsaW5lIiwiZmlsZSIsImR1bW15X2Nhc2VfaW5mb19zdGF0aWMiLCJkdW1teV9jYXNlX2luZm9fZHluYW1pYyIsImNvcnJlY3RfcG9pbnRlciIsImludF9zZWlkIiwiZHVtbXlfY2FzZV9pbmZvIiwicHJvZmlsaW5nX2luZm8iLCJnZXRfZXZlbnQiLCJnZXRfbl9laWQiLCJnZXRfc3RhY2tfZGVwdGgiLCJmb3JjZWRfZXZlbnRzIiwic2lkZV9lZmZlY3Rfb2ZfZXZlbnQiLCJjYXNlX2xpc3Rfb2ZfZWlkIiwiZ2V0X2Nhc2UiLCJjYXNlX2FkZHJlc3MiLCJnZXRfc3RhdGljIiwiYWRkcmVzcyIsImNhc2UkMCIsInN0YXRpYyQwIiwicHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIiwiZ2V0X25wcmVkaWNhdGVfaWQiLCJnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQiLCJnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQkMCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIiwiZm9sbG93X3BvaW50ZXJfZG93biIsImZvbGxvd19wb2ludGVyX3VwIiwiZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCIsImdldF9sYXN0X2xpbmtlZF9ldmVudCIsInByaW50X2tub3duX2Nhc2UiLCJwcmVmIiwiaW5mIiwic3VmIiwic3RyaW5nX29mX3ZhbHVlIiwicGIiLCJwcmludF9hc3NpZ25tZW50IiwiaSQyIiwiaSQzIiwiaSQ0IiwiaSQ1IiwiaSQ2IiwiaSQ3IiwibG9nJDAiLCJpJDgiLCJwcmludF9ibGFja2JvYXJkIiwiZXJyIiwiYXJyYXkiLCJqJDIiLCJqJDAiLCJzdGF0dXMiLCJqJDEiLCJzdGFjayIsImVtcHR5X3N0YWNrIiwiZXhpc3RfY2FzZSIsInNldF9jYXNlIiwiY2FzZV9hZGRyZXNzJDAiLCJjYXNlX3ZhbHVlJDAiLCJjYXNlX2FkZHJlc3MkMSIsIm9sZCQwIiwiY2FzZV92YWx1ZSQxIiwiY2FzZV9hZGRyZXNzJDIiLCJvbGQkMSIsImNhc2VfdmFsdWUkMiIsImxldmVsJDAiLCJjYXNlX2FkZHJlc3MkMyIsIm9sZCQyIiwiY2FzZV92YWx1ZSQzIiwiaXNfc2VsZWN0ZWRfZXZlbnQiLCJnZXQiLCJjYXNlJDEiLCJjYXNlJDIiLCJjYXNlX2FkZHJlc3MkNCIsImNhc2VfYWRkcmVzcyQ1IiwiY2FzZSQzIiwibHZsIiwiY2FzZV9hZGRyZXNzJDYiLCJjYXNlJDQiLCJleHBvcnRfYmxhY2tib2FyZF90b194bHMiLCJwcmVmaXgiLCJmaWxlX25hbWUiLCJkZXNjX2NoYW4iLCJyb3dfb2ZfcHJlY29uZGl0aW9uIiwiY29sb3JzIiwiYmFja2NvbG9yIiwiY29sb3IiLCJjb2xvciQwIiwidGV4dGNvbG9yIiwiZ2V0Y2VsbCIsInJvdyIsImNvbCIsInByaW50X2Nhc2UiLCJjb2xvcl9mb250IiwiY29sb3JfYmFjayIsInByaW50X2Nhc2VfZnVuIiwicF9pbmZvIiwicm93X3ByZWNvbmRpdGlvbiIsInJvd19wb3N0Y29uZGl0aW9uIiwibWF5YmVrZXB0IiwiZWlkJDEiLCJzdHJpbmdfZWlkIiwidmFsdWVfYmVmb3JlIiwiY2FuZCIsInN0cmluZ19laWQkMCIsInN0YWNrJDAiLCJzdGFjayQxIiwicmVjb3JkX21vZGlmIiwicmVmaW5lIiwib3ZlcndyaXRlIiwiZGVjIiwiYnJhbmNoIiwicmVzZXRfbGFzdF9icmFuY2hpbmciLCJyZXNldF9pbml0IiwiaXNfbWF4aW1hbF9zb2x1dGlvbiIsInRyYW5zbGF0ZV9ibGFja2JvYXJkIiwic3RlcF9hcnJheSIsInNpZGVfYXJyYXkiLCJwcmludF9zdGFjayIsImV2ZW50X2xpc3QkMiIsImV2ZW50X2FycmF5Iiwia2VwdF9ldmVudHMiLCJrZXB0X2V2ZW50cyQwIiwia2VwdF9ldmVudHMkMSIsImV2ZW50X2xpc3QkMCIsImV2ZW50X2Nhc2VfYWRkcmVzcyIsInBvaW50ZXIkMCIsInByZXZfZXZlbnRfY2FzZV9hZGRyZXNzIiwicHJldl9jYXNlIiwicHJldl9laWQiLCJwb2ludGVyJDEiLCJwcmV2X2VpZCQwIiwia2VwdF9ldmVudHMkMiIsImV2ZW50X2xpc3QkMSIsImV2ZW50c190b19rZWVwIiwibl9ldmVudHNfcmVtb3ZlZCIsImN1dF9jYXVzYWxfZmxvdyIsImltcG9ydCQwIiwicHJlYmxhY2tib2FyZCIsInJlZmluZWRfZXZlbnQiLCJwcmVibGFja2JvYXJkJDAiLCJ0b194bHMiLCJwcmVibGFja2JvYXJkJDEiLCJwcmVibGFja2JvYXJkJDMiLCJ0b194bHMkMCIsInN0cmluZyQwIiwicHJlYmxhY2tib2FyZCQ0IiwicHJlYmxhY2tib2FyZCQyIiwicHJlX2JsYWNrYm9hcmQiLCJldmVudF9jYXNlX2xpc3QiLCJuX3NlaWQiLCJ1bnNvbHZlZF9ieV9sZXZlbCIsImxldmVsX29wdCQxIiwibGV2ZWxfb3B0Iiwid2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlIiwibGV2ZWxfb3B0JDAiLCJ3ZWlndGhfb2ZfcHJlZGljYXRlX2lkIiwibGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlIiwicF9pZCQxIiwicF9pZCIsInNpemUkMCIsInNlaWQkMSIsInRyaXBsZSIsInNpemUkMSIsInVuc29sdmVkIiwic2VpZCQwIiwicHJlZF9zaXplIiwicF9pZCQwIiwidW5zb2x2ZWRfYnlfbGV2ZWwkMCIsImxldmVsJDEiLCJtYXAkMSIsImxvZ19pbmZvJDEyIiwiZmljdGl0aW91c19vYnMiLCJsb2dfaW5mbyQxMyIsImxvb2tfdXBfZm9yX2JldHRlcl9jdXQiLCJsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQiLCJkdW1teV91cGRhdGVfb3JkZXIiLCJmb3JiaWRkZW5fZXZlbnRzIiwicGFyYW10ZXIiLCJnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGkiLCJmaXJzdCIsInN0b3AiLCJrX2luaXQiLCJrX2VuZCIsImdldF9nZW5fdW5yZXNvbHZlZF9ldmVudCIsIm5leHRfY2hvaWNlIiwicHJpb3JpdHkkMCIsIm5fcF9pZCIsImxldmVsX29wdCQyIiwiYmVzdCQxIiwiYmVzdCIsImdyYWRlIiwiYmVzdCQwIiwic3RlcCQwIiwiZXZlbnRfaWQiLCJldmVudF9pZCQwIiwicHJvcGFnYXRlX2Rvd24iLCJpbnN0cnVjdGlvbl9saXN0IiwicHJvcGFnYXRlX2xpc3QiLCJuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcyIsImJvb2wyIiwibmV4dF9hY3Rpb24iLCJuZXh0X3Rlc3QiLCJwcmVkaWNhdGVfdmFsdWUkMCIsImNvbmokMCIsImxvZ19pbmZvJDE0IiwibG9nX2luZm8kMTUiLCJuZXh0X2FjdGlvbiQwIiwibmV4dF90ZXN0JDAiLCJuZXh0X2VpZCIsImxvZ19pbmZvJDE2IiwibG9nX2luZm8kMTciLCJsb2dfaW5mbyQxOCIsImxvZ19pbmZvJDE5IiwiY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUkMCIsImxvZ19pbmZvJDI0IiwibG9nX2luZm8kMjUiLCJjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSIsImxvZ19pbmZvJDIwIiwibG9nX2luZm8kMjEiLCJsb2dfaW5mbyQyMiIsImxvZ19pbmZvJDIzIiwibGFzdF9jaGFuY2VfdXAiLCJldmVudF9jYXNlX2FkZHJlc3MkMCIsInByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzIiwicHJldmlld19jYXNlX2FkZHJlc3MiLCJwcmV2aWV3X2Nhc2VfdmFsdWUiLCJwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSIsInByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzJDAiLCJwcmV2aWV3X2Nhc2VfYWRkcmVzcyQwIiwicHJldmlld19jYXNlX3ZhbHVlJDAiLCJwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSQwIiwibGFzdF9jaGFuY2VfdXAkMCIsInByb3BhZ2F0ZV91cCIsImxvZ19pbmZvJDMxIiwibmV3X3ByZWRpY2F0ZV92YWx1ZSIsInByZXYiLCJsb2dfaW5mbyQyOSIsImVycm9yJDE2IiwibG9nX2luZm8kMzAiLCJuZXdfdGVzdCIsImVycm9yJDE0IiwibmV3X3ByZWRpY2F0ZV92YWx1ZSQwIiwibG9nX2luZm8kMjYiLCJlcnJvciQxNSIsImxvZ19pbmZvJDI3IiwibG9nX2luZm8kMjgiLCJsb2dfaW5mbyQzMiIsImxvZ19pbmZvJDMzIiwicHJvcGFnYXRlIiwiY3V0X2Nhc2UiLCJwb2ludGVyX25leHQiLCJwb2ludGVyX3ByZXZpb3VzIiwicmVzdWx0IiwibG9va19kb3duIiwibGlzdF92YWx1ZXMiLCJjYSIsIm5leHRfY2FzZSIsInByb3BhZ2F0ZV9saXN0JDAiLCJsb29rX2Rvd24kMCIsInJlZmluZV92YWx1ZV9hZnRlciIsInJlZmluZV92YWx1ZV9iZWZvcmUiLCJkaXNjYXJkX2Nhc2UiLCJyZXN1bHQkMCIsImluc3RydWN0aW9uX2xpc3QkMCIsInByb3BhZ2F0ZV9saXN0JDEiLCJnZW5fZXZlbnQiLCJmX2Nhc2UiLCJzdWNjZXNzJDEiLCJzdWNjZXNzJDAiLCJzdWNjZXNzMiIsInN1Y2Nlc3MkMiIsImFwcGx5X2luc3RydWN0aW9uIiwiaW5zdHJ1Y3Rpb24iLCJpbnN0cnVjdGlvbl9saXN0JDMiLCJwcm9wYWdhdGVfbGlzdCQyIiwicmVzdWx0JDEiLCJpbnN0cnVjdGlvbl9saXN0JDEiLCJpbnN0cnVjdGlvbl9saXN0JDIiLCJzdGVwX2lkJDEiLCJhZGRyZXNzJDAiLCJlbXB0eV9jaG9pY2VfbGlzdCIsImFzc2lnbl9yZXN1bHQiLCJhc3NpZ25fcmVzdWx0JDAiLCJiYWNrdHJhY2siLCJjaG9pY2VfbGlzdCIsImNob2ljZV9saXN0JDAiLCJjaG9pY2VfbGlzdCQxIiwic3VibGlzdCIsImRldGVjdF9pbmRlcGVuZGVudF9ldmVudHMiLCJsaXN0X2VpZCIsInRyYW5zbGF0ZV9yZXN1bHQiLCJmaWx0ZXIiLCJzb2wiLCJzb2wkMCIsInNvbCQxIiwiZXZlbnRzX3RvX3JlbW92ZSIsInN1YiIsImNvbXByZXNzIiwibGlzdF9vcmRlciIsImNob2ljZV9saXN0JDIiLCJjaG9pY2VfbGlzdCQzIiwiY2hvaWNlX2xpc3QkNCIsImNob2ljZV9saXN0JDUiLCJjaG9pY2UiLCJjaG9pY2VfbGlzdCQ2IiwiY2hvaWNlX2xpc3QkNyIsInN0b3J5X2xpc3QkMSIsImdvb2RvbmVzJDEiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJnb29kb25lcyIsImdvb2RvbmVzJDAiLCJoJDEiLCJ0b192aXNpdCQxIiwiYmxhY2tfbGlzdCIsImlzX2JsYWNrX2xpc3RlZCIsImR1bW15X2dyYXBoIiwiY29tcGFyZV9lbHQiLCJxdWlja19jb21wYXJlIiwidDIiLCJhdXgiLCJsMiQxIiwiY29tcGFyZV9jYW5vbmljIiwiZ3JhcGhfb2ZfZ3JpZCIsInN1Y2Nfc2l6ZSIsImxhYmVscyIsImNvbmZsaWN0X3ByZWQiLCJsaXN0MiQyIiwibGlzdDIkMSIsImxpc3QxJDEiLCJjb21wYXJlX25vZGUiLCJwcmVoYXNoIiwid2VpZ2h0JDIiLCJmb3JtZXIkMSIsImZvcm1lciIsIndlaWdodCIsImZvcm1lciQwIiwid3QiLCJ3ZWlnaHQkMCIsIndlaWdodCQxIiwiY2Fub25pY2FsaXplIiwiYXNzbyIsImNhbmRpZGF0ZSIsInRvX2JlYXQiLCJjYW5kaWRhdGUkMCIsInRvX2JlYXQkMCIsImNhbmRpZGF0ZSQxIiwicXIiLCJ0ciIsInRvX2JlYXQkMSIsInZpc2l0IiwiZnJlc2hfcG9zIiwiZnJlc2hfcG9zJDAiLCJzaWJibGluZzEiLCJzaWJibGluZzIiLCJtJDAiLCJjYW5kaWRhdGVzJDEiLCJub3RfYmVzdCIsImNhbmRpZGF0ZXMkMCIsInJlc2lkdWUiLCJmcmVzaCIsImVuY29kaW5nIiwidG9fYmVhdF9hZnRlciIsIm5vdF9iZXN0JDAiLCJyZWNvcmQkMCIsIm5vdF9iZXN0JDEiLCJyZWNvcmQkMSIsInJlY29yZCQyIiwibm90X2Jlc3QkMiIsInRvX2JlYXRfYWZ0ZXIkMCIsInNpYmJsaW5nMSQwIiwidG9fYmVhdCQyIiwiZnJlc2hfcG9zJDEiLCJ0b19iZWF0JDMiLCJnJDAiLCJzaWJibGluZzIkMCIsInRvX2JlYXQkNCIsImxpc3QkMiIsImZyZXNoX3BvcyQyIiwibWFwJDIiLCJ0b19iZWF0JDUiLCJsaXN0JDMiLCJzb3J0X291dGVyIiwic29ydF9pbm5lciIsImNvbXBhcmUkMiIsImdldF9jYW5ub25pY2FsX2Zvcm0iLCJ0YWJsZSIsImFzc29jIiwiY2Fubm9uaWMiLCJjYW5ub25pYyQwIiwidGFibGUkMCIsImNob29zZV9mc3QiLCJpbml0X3RhYmxlIiwicGFyYW1ldGVycyIsImFkZF9zdG9yeSIsInByZXRyYWNlIiwic3RvcnlfaW5mbyIsInRhYmxlJDIiLCJ0YWJsZSQzIiwiZ3JhcGgkMCIsInByZWhhc2gkMSIsImxvZ2dlciQwIiwibG9nZ2VyIiwibm9kZV9raW5kIiwiZGlyZWN0aXZlcyIsImFkZF9zdG9yeV9pbmZvIiwiYXNzb19vcHQiLCJjYW5vbmljIiwidXBkYXRlX2Fzc29jIiwiY2Fub25pY19mb3JtIiwiYXV4X2lubmVyMiIsImNhbm9uaWNfZm9ybSQwIiwidHJlZSIsInRhYmxlJDEiLCJpZCQyIiwidGFibGUkNCIsImF1eF9vdXRlcjIiLCJwcmVoYXNoJDAiLCJjYW5ub25pY19mb3JtIiwiYXNzb2MkMCIsImNhbm5vbmljX2Zvcm0kMCIsImlubmVyIiwidGFibGUkNSIsImF1eF9pbm5lciIsInN1ZmZpeCIsImlubmVyX3RyZWUiLCJpbm5lcl90cmVlJDAiLCJpbm5lcl90cmVlJDEiLCJpbm5lcl90cmVlJDIiLCJpZCQzIiwiaWQkNCIsImF1eF9vdXRlciIsIm91dGVyX3RyZWUiLCJpZCQ1IiwidGFibGUkOCIsImlkJDciLCJpZCQ2IiwiZ3JhcGgkMSIsImFzc29jJDEiLCJ0YWJsZSQ2IiwiaW5uZXIkMCIsInRhYmxlJDciLCJpZCQ4IiwidGFibGUkOSIsImlubmVyJDEiLCJzdWZmaXgkMCIsImFzc29jJDIiLCJpbm5lciQyIiwidGFibGUkMTAiLCJvdXRlcl90cmVlJDAiLCJvdXRlcl90cmVlJDEiLCJoYXNoX2xpc3QiLCJlbGVtZW50c190b19zdG9yZSQyIiwiZWxlbWVudHNfdG9fc3RvcmUkMyIsInN0b3JlZF9lbGVtZW50cyQxIiwibGFzdF9lbGVtZW50JDIiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMyIsImVsZW1lbnRzX3RvX3N0b3JlJDQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkNCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ1IiwibGFzdF9lbGVtZW50JDMiLCJzdG9yZWRfZWxlbWVudHMkMiIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ2IiwibGFzdF9lbGVtZW50JDQiLCJkYWciLCJkYWckMCIsImRhZyQxIiwiZGFnJDIiLCJlbGVtZW50c190b19zdG9yZSIsImVsZW1lbnRzX3RvX3N0b3JlJDAiLCJzdG9yZWRfZWxlbWVudHMiLCJsYXN0X2VsZW1lbnQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMiLCJlbGVtZW50c190b19zdG9yZSQxIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDAiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMSIsImxhc3RfZWxlbWVudCQwIiwic3RvcmVkX2VsZW1lbnRzJDAiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMiIsImxhc3RfZWxlbWVudCQxIiwiYWNjJDAiLCJzb3J0X2xpc3QiLCJsaXN0X291dCIsInR1cGxlIiwiZmxhdF9saXN0IiwiY29tcGFyZV9wYWlyIiwiZmxhdF9saXN0JDAiLCJjb3VudF9zdG9yaWVzIiwiZm9sZF90YWJsZSIsIndlX3NoYWxsIiwid2Vfc2hhbGxfbm90IiwiZ2V0X3ByZXRyYWNlX29mX3RyYWNlIiwic2l6ZV9vZl9wcmV0cmFjZSIsInNldF9hbWJpZ3VpdHlfbGV2ZWwiLCJnZXRfY29tcHJlc3NlZF90cmFjZSIsImlzX2NvbXByZXNzZWRfdHJhY2UiLCJ0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWkiLCJ3aXRoX2FtYmlndWl0eSIsInRyYWNlX29mX3ByZXRyYWNlIiwiZ2V0X2lkX29mX2V2ZW50IiwiZ2V0X3NpbXVsYXRpb25fdGltZV9vZl9ldmVudCIsInByaW50X3RyYWNlIiwidHJhbnNmb3JtX3RyYWNlX2dlbiIsImxvZ19tZXNzYWdlIiwiZGVidWdfbWVzc2FnZSIsInByb2ZpbGluZ19ldmVudCIsImthcHBhX2hhbmRsZXIiLCJzaGFsbF93ZV9jb21wdXRlIiwic3RoJDAiLCJwcmludF9pZl96ZXJvIiwicHJvZmlsaW5nX2luZm8kMCIsImxvZ19tZXNzYWdlJDAiLCJwcmV0cmFjZSQwIiwicHJvZmlsaW5nX2luZm8kMSIsInRyYWNlJDAiLCJ0cmFjZSQxIiwicHJvZmlsaW5nX2luZm8kMiIsIm1vbmFkaWNfbGlmdCIsIm1ha2VfdW5hbWJpZ3VvdXMiLCJzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmYiLCJzdGgkMSIsImxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllcyIsInJlcXVpcmVtZW50IiwiZWZmZWN0IiwidHJhY2UkMiIsIm9uX3RoZV9mbHlfY3V0X2luaXQiLCJvbl90aGVfZmx5X2N1dF9zdGVwIiwib25fdGhlX2ZseV9jdXRfZmluYWxpemUiLCJjdXRfc3RhdGUiLCJyZW1vdmVfb2JzX2JlZm9yZSIsImxhc3RfaW5mbyIsImxhc3RfZWlkIiwibGFzdF9pbmZvJDAiLCJzY29yZSIsInNjb3JlJDAiLCJyZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIiwicmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyIsInN0b3J5X3RhYmxlIiwiZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFiIiwiZXJyb3JfaW5pdCIsImV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRzX2Zyb21fbSIsImV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRfZnJvbV9tdSIsImMkMCIsImNhdXNhbF9wcmVmaXhfb2ZfYW5fb2JzZXJ2YWJsZSIsIm9ic2VydmFibGVfaWQiLCJldmVudF9pZF9saXN0IiwiZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMiLCJwcmludF9tdXNpY2FsX2dyaWQiLCJjcmVhdGVfc3RvcnlfdGFibGUiLCJjbG9zZV9wcm9ncmVzc19iYXJfb3B0IiwicHJpbnRfZmFpbHMiLCJpbmNfZmFpbHMiLCJmb2xkX3N0b3J5X3RhYmxlX2dlbiIsIm5fc3Rvcmllc19pbnB1dCIsIm5fZmFpbHMiLCJwcm9ncmVzc19iYXIkMCIsIm5fZmFpbHMkMCIsImZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzcyIsImZvbGRfc3RvcnlfdGFibGVfd2l0aG91dF9wcm9nciIsImdldF9jb3VudGVyIiwic3RvcmVfdHJhY2UiLCJjb21wdXRhdGlvbl9pbmZvJDEiLCJvYnNfaW5mbyIsImNvbXB1dGF0aW9uX2luZm8kMiIsInRyYWNlMiIsImNvbXB1dGF0aW9uX2luZm8iLCJjb21wdXRhdGlvbl9pbmZvJDAiLCJjb21wdXRhdGlvbl9pbmZvJDMiLCJjb21wdXRhdGlvbl9pbmZvJDQiLCJzdG9yeV90YWJsZSQwIiwiY29tcHV0YXRpb25faW5mbyQ1IiwiZmxhdHRlbl9zdG9yeV90YWJsZSIsImxpc3Rfb3JkZXIkMCIsInN0cm9uZ2x5X2NvbXByZXNzIiwid2Vha2x5X2NvbXByZXNzIiwiY29udmVydF90cmFjZV9pbnRvX2dyaWQiLCJjb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3QiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2wiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEkMCIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYSQxIiwic29ydF9zdG9yeV9saXN0IiwiZXhwb3J0X3N0b3J5X3RhYmxlIiwiaGFzX29icyIsImZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiIsInN0aCQyIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDAiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kOSIsIm5fZmFpbCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQxIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDIiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNCIsImJhciQwIiwibl9mYWlsJDAiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNSIsIm91dHB1dF9vcHQiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMyIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ2IiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDciLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kOCIsImZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2ZfbyIsImxvZ19zdGVwIiwib2JzZXJ2YWJsZV9oaXQiLCJjYXVzYWxfcGFzdCIsImluZm8kMiIsImNvcHlfbG9nX2luZm8iLCJjb21wYXJlX2Nhbm9uaWNhbF9mb3JtIiwiY29tcHV0ZV9jYW5vbmljYWxfZm9ybSIsImtleV9vZl9ldmVudCIsImNyZWF0ZV9ibGFja19saXN0IiwiYmxhY2tsaXN0IiwiYmxhY2tsaXN0JDAiLCJyZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQiLCJsYXN0X2VpZF9pbl9wcmV0cmFjZSIsInByb2ZpbGluZ19zdGF0ZV90b19qc29uIiwiZXJyb3JfbGlzdF90b19qc29uIiwiY29tcHV0YXRpb25fc3RlcHNfdG9fanNvbiIsImNtcF9vcHQiLCJjbXBfZmxvYXRfb3B0IiwiY21wX2ludF9vcHQiLCJnZW5fYmluX29wdCIsIm9wIiwiYWRkX2Zsb2F0X29wdCIsIm11bHRfZmxvYXRfb3B0IiwibXVsdF9pbnRfb3B0IiwibWF4X29wdCIsImNmbG93X3BhcmFtZXRlcnMiLCJuZXZlciIsImdsb2JhbF90cmFjZV9zaW1wbGlmaWNhdGlvbiIsInN0b3JlX3Jlc3VsdCIsImdsb2JhbF9zdGF0dXMiLCJzdG9wX25leHQiLCJnbG9iYWxfc3RhdHVzJDAiLCJzdG9wJDAiLCJnbG9iYWxfc3RhdHVzJDEiLCJnbG9iYWxfc3RhdHVzJDIiLCJzdGFydF9pdGVyYXRpb24iLCJlbmRfc2ltcGxpZmljYXRpb24iLCJnZXRfc3RkX2J1ZmZlciIsImNmbG93X3N0YXRlIiwiZ2V0X2Vycl9idWZmZXIiLCJnZXRfcHJvZmlsaW5nX2J1ZmZlciIsImdldF9icmFuY2hfYW5kX2N1dF9zdGF0dXMiLCJnZXRfcHJvZ3Jlc3NfYmFyIiwiZ2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJnZXRfY2F1c2FsX2Zsb3dfdGFibGUiLCJnZXRfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSIsImdldF93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIiwiZ2V0X3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSIsImdldF9lcnJvcl9saXN0Iiwic2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCIsImNmbG93X3N0YXRlX3B0ciIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4Iiwic2F2ZV9wcm9ncmVzc19iYXJfYXV4IiwicmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eCIsInNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4Iiwic2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlX2F1Iiwic2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfIiwic2F2ZV9lcnJvcl9sb2dfYXV4IiwicmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXgiLCJsb2dnZXJzIiwicmVkaXJlY3RfZXJyX2J1ZmZlcl9hdXgiLCJyZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyX2F1eCIsInJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciIsImNmbG93X3N0YXRlX3B0cl9vcHQiLCJkYXRhIiwibGlmdF9yZXNldCIsInNhdmVfY2F1c2FsX2Zsb3dfdGFibGUiLCJzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUkMCIsInNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSIsInNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV9lcnJvcl9saXN0IiwicmVkaXJlY3Rfc3RkX2J1ZmZlciIsInJlZGlyZWN0X2Vycl9idWZmZXIiLCJyZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyIiwicmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyJDAiLCJpbml0X3NlY3JldF9sb2dfaW5mbyIsImRvX25vdF9sb2ciLCJjb21wcmVzc19hbmRfcHJpbnQiLCJqc19pbnRlcmZhY2UiLCJwYXJhbWV0ZXIkMSIsInBhcmFtZXRlciQxMiIsInBhcmFtZXRlciQyIiwiY2F1c2FsX3RyYWNlX29uIiwid2Vha19jb21wcmVzc2lvbl9vbiIsInN0cm9uZ19jb21wcmVzc2lvbl9vbiIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInBhcmFtZXRlciQzIiwicGFyYW1ldGVyJDQiLCJwYXJhbWV0ZXIkNSIsInBhcmFtZXRlciQ2IiwicGFyYW1ldGVyJDciLCJwYXJhbWV0ZXIkOCIsInBhcmFtZXRlciQ5IiwicGFyYW1ldGVyX2NhdXNhbCIsInBhcmFtZXRlcl93ZWFrIiwicGFyYW1ldGVyX3N0cm9uZyIsInN0ZXBfbGlzdCQwIiwic3Ryb25nJDAiLCJlcnJvciQxOSIsInN0ZXBfbGlzdCQxIiwic3RlcF9saXN0JDIiLCJzdGVwX2xpc3QkMyIsInRyYWNlX2JlZm9yZV9jb21wcmVzc2lvbiIsImNhdXNhbF9zdG9yeV9hcnJheSIsImNhdXNhbF9zdG9yeV9saXN0IiwiY2F1c2FsX3N0b3J5X2xpc3QkMCIsImNhdXNhbF90YWJsZSIsInBhcmFtZXRlcl9kZWVwZXIiLCJldmVudF9saXN0JDMiLCJ3ZWFrbHlfc3RvcnlfdGFibGUiLCJ0YWJsZTIkMCIsInRhYmxlMyQwIiwid2Vha19zdG9yeV90YWJsZSIsImNhdXNhbF9zdG9yeV90YWJsZSIsImNhdXNhbF9zdG9yeV90YWJsZSQwIiwid2Vha19zdG9yeV90YWJsZSQwIiwiY2F1c2FsX3N0b3J5X3RhYmxlJDEiLCJlcnJvciQyOSIsImNhdXNhbF9zdG9yeV90YWJsZSQyIiwiZXJyb3IkMzAiLCJuX2NhdXNhbF9zdG9yaWVzIiwicGFyYW1ldGVyJDExIiwibGlzdF9pbmZvIiwid2Vha2x5X3N0b3J5X3RhYmxlJDAiLCJlcnJvciQzMSIsIndlYWtseV9zdG9yeV90YWJsZSQxIiwiZXJyb3IkMzIiLCJuX3dlYWtfc3RvcmllcyIsInBhcmFtZXRlciQxMCIsInJlZmluZWRfZXZlbnRfbGlzdCIsInN0cm9uZ2x5X3N0b3J5X3RhYmxlIiwic3Ryb25nbHlfc3RvcnlfdGFibGUkMCIsImVycm9yJDE3IiwiZXJyb3IkMTgiLCJleHBvcnQkMCIsImVycm9yJDIwIiwiZXJyb3IkMjEiLCJlcnJvciQyMiIsImV4cG9ydCQxIiwiZXJyb3IkMjMiLCJlcnJvciQyNCIsImVycm9yJDI1IiwiZXhwb3J0JDIiLCJlcnJvciQyNiIsImVycm9yJDI3IiwiZXJyb3IkMjgiLCJvbl9tZXNzYWdlIiwidGV4dCIsInN0Iiwibm9uZSQwIiwiYiQxIiwid2VhayQwIiwiYiQyIiwiZSQwIiwiZm9sZCIsImNvbXBhcmVfbGlzdCIsImgxIiwiaDIiLCJjb21wYXJlX3N1cGVybGlzdCIsInNvcnQiLCJzdXBlcmxpc3QiLCJkdW1wX3N1cGVyX2xpc3QiLCJjb21wYXJlX2ZzdF90cmlwbGUiLCJzbWFzaCIsImFjY3UkMSIsInRvX2RvJDEiLCJjdXJyZW50JDIiLCJ0b19kbyIsImN1cnJlbnQiLCJ0b19kbyQwIiwiY3VycmVudCQwIiwiY3VycmVudCQxIiwiZXJyb3JfbXNnIiwib3B0IiwicmFuZ2UiLCJ0ZXh0Iiwic3RoIiwic2V2ZXJpdHkiLCJlcnJfcmVzdWx0X29mX3N0cmluZyIsInJlc3VsdF9jb2RlIiwibWVzc2FnZSIsImVycl9yZXN1bHRfb2ZfbXNncyIsIm1lc3NhZ2VzIiwiZXJyX3Jlc3VsdF9vZl9tc2ciLCJlcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiIsImUiLCJtZXNzYWdlX29mX2NhdWdodF9leGNlcHRpb24iLCJjYXVnaHRfZXhjZXB0aW9uIiwibWVzc2FnZV9vZl91bmNhdWdodF9leGNlcHRpb24iLCJ1bmNhdWdodF9leGNlcHRpb24iLCJlcnJfcmVzdWx0X29mX2V4Y2VwdGlvbnMiLCJleGNzIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJ4IiwibCIsInJlc3VsdF9iaW5kX3dpdGhfbHd0Iiwib2siLCJzdGF0dXMiLCJ2YWx1ZSIsImRhdGEiLCJyZXN1bHRfZm9sZF93aXRoX2x3dCIsImYiLCJpZCIsInQiLCJoIiwicmVzdWx0IiwicmVzdWx0X2JpbmRfbHd0IiwibHd0X3Jlc3VsdCIsInJlc3VsdF9jb21iaW5lIiwiZGF0YV8xIiwiZGF0YV9yIiwibWQ1c3VtIiwid3JpdGVfc25hcHNob3RfaWQiLCJzdHJpbmdfb2Zfc25hcHNob3RfaWQiLCJsZW4iLCJvYiIsInJlYWRfc25hcHNob3RfaWQiLCJzbmFwc2hvdF9pZF9vZl9zdHJpbmciLCJzIiwid3JpdGVfc25hcHNob3QiLCJzdHJpbmdfb2Zfc25hcHNob3QiLCJyZWFkX3NuYXBzaG90Iiwic25hcHNob3Rfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCIsInNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmciLCJ3cml0ZV9zbmFwc2hvdF9pZF9saXN0IiwicmVhZF9zbmFwc2hvdF9pZF9saXN0Iiwic3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2ciLCJzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX3NpdGVfZ3JhcGgiLCJzdHJpbmdfb2Zfc2l0ZV9ncmFwaCIsInJlYWRfc2l0ZV9ncmFwaCIsInNpdGVfZ3JhcGhfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSIsInN0cmluZ19vZl9zaW11bGF0aW9uX3N0YXRlIiwicmVhZF9zaW11bGF0aW9uX3N0YXRlIiwicCIsImxiIiwieCQwIiwieCQxIiwic2ltdWxhdGlvbl9zdGF0ZV9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX3NlZWQiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zZWVkIiwicmVhZF9zaW11bGF0aW9uX3NlZWQiLCJzaW11bGF0aW9uX3NlZWRfb2Zfc3RyaW5nIiwid3JpdGVfaW50X251bGxhYmxlIiwicmVhZF9pbnRfbnVsbGFibGUiLCJ3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIiwiaXNfZmlyc3QiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wcm9ncmVzcyIsInJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSQwIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVuIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVuJDAiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWMiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3IiLCJwb3MiLCJpIiwiZiQwIiwiaSQwIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwieCQ5IiwieCQxMCIsInNpbXVsYXRpb25fcHJvZ3Jlc3Nfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIiwicmVhZF9zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUiLCJ3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciIsInN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciIsInJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIiwiZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpIiwiZmllbGRfc2ltdWxhdGlvbl9zZWVkIiwiZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSIsInNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fb3V0cHV0Iiwid3JpdGVfcGxvdCIsIndyaXRlX2RpbnMiLCJ3cml0ZV9maWxlX2xpbmVzIiwid3JpdGVfc25hcHNob3RzIiwid3JpdGVfaW5wdXRzIiwid3JpdGVfbG9nX21lc3NhZ2VzIiwic3RyaW5nX29mX3NpbXVsYXRpb25fb3V0cHV0IiwicmVhZF9zaW11bGF0aW9uX291dHB1dCIsInJlYWRfcGxvdCIsInJlYWRfZGlucyIsInJlYWRfZmlsZV9saW5lcyIsInJlYWRfc25hcHNob3RzIiwicmVhZF9pbnB1dHMiLCJyZWFkX2xvZ19tZXNzYWdlcyIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9sIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNoIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lIiwic2ltdWxhdGlvbl9vdXRwdXRfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnQiLCJyZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyIiwid3JpdGVfb3V0cHV0XzkzNDBhZDYiLCJyZWFkX291dHB1dF85MzQwYWQ2Iiwic3RyaW5nX29mX3NpbXVsYXRpb25faW5mb19vdXRwIiwic2ltdWxhdGlvbl9pbmZvX291dHB1dF9vZl9zdHJpIiwid3JpdGVfc2ltdWxhdGlvbl9pbmZvIiwic3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyIsInJlYWRfc2ltdWxhdGlvbl9pbmZvIiwiZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIiwiZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCIsInNpbXVsYXRpb25faW5mb19vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX2lkIiwic3RyaW5nX29mX3NpbXVsYXRpb25faWQiLCJyZWFkX3NpbXVsYXRpb25faWQiLCJzaW11bGF0aW9uX2lkX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCIsInJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCIsImZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdSIsInNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIiwid3JpdGVfc2hhcmluZ19sZXZlbCIsInN0cmluZ19vZl9zaGFyaW5nX2xldmVsIiwicmVhZF9zaGFyaW5nX2xldmVsIiwic2hhcmluZ19sZXZlbF9vZl9zdHJpbmciLCJ3cml0ZV9yZXN1bHQiLCJ3cml0ZV9vayIsIndyaXRlX2Vycm9yIiwic3RyaW5nX29mX3Jlc3VsdCIsInJlYWRfcmVzdWx0IiwicmVhZF9vayIsInJlYWRfZXJyb3IiLCJyZXN1bHRfb2Zfc3RyaW5nIiwid3JpdGVfcGFyc2luZ19jb21waWwiLCJzdHJpbmdfb2ZfcGFyc2luZ19jb21waWwiLCJyZWFkX3BhcnNpbmdfY29tcGlsIiwicGFyc2luZ19jb21waWxfb2Zfc3RyaW5nIiwid3JpdGVfbmJyIiwic3RyaW5nX29mX25iciIsInJlYWRfbmJyIiwibmJyX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19uYnJfbGlzdCIsInN0ZF90dXBsZSIsImVuZF9vZl90dXBsZSIsIngwIiwieDEiLCJyZWFkX3N0cmluZ19uYnJfbGlzdCIsIndyaXRlX3Byb2plY3RfcGFyc2UiLCJzdHJpbmdfb2ZfcHJvamVjdF9wYXJzZSIsInJlYWRfcHJvamVjdF9wYXJzZSIsImZpZWxkX3BhdHRlcm5fc2hhcmluZyIsImZpZWxkX2FzdCIsImZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIiwicHJvamVjdF9wYXJzZV9vZl9zdHJpbmciLCJ3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciIsInN0cmluZ19vZl9wcm9qZWN0X3BhcmFtZXRlciIsInJlYWRfcHJvamVjdF9wYXJhbWV0ZXIiLCJmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWMiLCJwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmciLCJ3cml0ZV9wbG90X2xpbWl0Iiwic3RyaW5nX29mX3Bsb3RfbGltaXQiLCJyZWFkX3Bsb3RfbGltaXQiLCJmaWVsZF9wbG90X2xpbWl0X29mZnNldCIsImZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzIiwicGxvdF9saW1pdF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIiLCJwbG90X3BhcmFtZXRlcl9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfcGxvdCIsInBsb3Rfb2Zfc3RyaW5nIiwid3JpdGVfbWVzc2FnZSIsInN0cmluZ19vZl9tZXNzYWdlIiwicmVhZF9tZXNzYWdlIiwibWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9sb2dfbWVzc2FnZSIsInN0cmluZ19vZl9sb2dfbWVzc2FnZSIsInJlYWRfbG9nX21lc3NhZ2UiLCJsb2dfbWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9rYXBwYV9jb2RlIiwic3RyaW5nX29mX2thcHBhX2NvZGUiLCJyZWFkX2thcHBhX2NvZGUiLCJrYXBwYV9jb2RlX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19udWxsYWJsZSIsInJlYWRfc3RyaW5nX251bGxhYmxlIiwid3JpdGVfZmlsZV9saW5lIiwic3RyaW5nX29mX2ZpbGVfbGluZSIsInJlYWRfZmlsZV9saW5lIiwiZmllbGRfZmlsZV9saW5lX25hbWUiLCJmaWVsZF9maWxlX2xpbmVfdGV4dCIsImZpbGVfbGluZV9vZl9zdHJpbmciLCJ3cml0ZV9maWxlX2xpbmVfbGlzdCIsInJlYWRfZmlsZV9saW5lX2xpc3QiLCJzdHJpbmdfb2ZfZmlsZV9saW5lX2RldGFpbCIsImZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIiwid3JpdGVfc3RyaW5nX2xpc3QiLCJyZWFkX3N0cmluZ19saXN0Iiwic3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nIiwiZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIiwid3JpdGVfZW52aXJvbm1lbnRfaW5mbyIsInN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvIiwicmVhZF9lbnZpcm9ubWVudF9pbmZvIiwiZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMiLCJmaWVsZF9lbnZpcm9ubWVudF9idWlsZCIsImVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIiwid3JpdGVfZGluX2lkIiwic3RyaW5nX29mX2Rpbl9pZCIsInJlYWRfZGluX2lkIiwiZGluX2lkX29mX3N0cmluZyIsIndyaXRlX2Rpbl9pZF9saXN0IiwicmVhZF9kaW5faWRfbGlzdCIsInN0cmluZ19vZl9kaW5fY2F0YWxvZyIsImRpbl9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX2RpbiIsInN0cmluZ19vZl9kaW4iLCJyZWFkX2RpbiIsImRpbl9vZl9zdHJpbmciLCJuZXdfbWFpbGJveCIsInJlY2VpdmUiLCJtYWlsYm94IiwidGhyZWFkIiwidGhyZWFkJDAiLCJvdXQiLCJ0aHJlYWQkMSIsInRocmVhZCQyIiwidGhyZWFkJDMiLCJ0aHJlYWQkNCIsInRocmVhZCQ1IiwidGhyZWFkJDYiLCJqc29uIiwidGhyZWFkJDciLCJqc29uJDAiLCJ0aHJlYWQkOCIsImpzb24kMSIsInRocmVhZCQ5IiwianNvbiQyIiwidGhyZWFkJDEwIiwianNvbiQzIiwidGhyZWFkJDExIiwianNvbiQ0IiwidGhyZWFkJDEyIiwianNvbiQ1IiwidGhyZWFkJDEzIiwianNvbiQ2IiwidGhyZWFkJDE0IiwidGhyZWFkJDE1IiwidGhyZWFkJDE2IiwidGhyZWFkJDE3IiwidGhyZWFkJDE4IiwidGhyZWFkJDE5IiwidGhyZWFkJDIwIiwiaXNfY29tcHV0aW5nIiwic2VsZl8xIiwiaGFuZGxlIiwicmVxdWVzdCIsImZlZWRlciIsImIiLCJmaWxlX2lkIiwiZmlsZV9jb250ZW50IiwiZmlsZV9wb3NpdGlvbiIsImFzdCIsImNvbXBpbCIsImFjY3VyYWN5IiwiZndkIiwiYndkIiwib3JpZ2luIiwidG90YWwiLCJmaWxlbmFtZSIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwicGF1c2UiLCJwYXJhbWV0ZXIiLCJpbnRlcnZlbnRpb24iLCJ3cml0ZV9zbmFwc2hvdF9kZXRhaWwiLCJyZWFkX3NuYXBzaG90X2RldGFpbCIsIndyaXRlX3NuYXBzaG90X2NhdGFsb2ciLCJyZWFkX3NuYXBzaG90X2NhdGFsb2ciLCJ3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9lZmZpY2llbmMiLCJyZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSIsInNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbiIsIndyaXRlX2FwaV9yZXN1bHQiLCJzdHJpbmdfb2ZfYXBpX3Jlc3VsdCIsInJlYWRfYXBpX3Jlc3VsdCIsImFwaV9yZXN1bHRfb2Zfc3RyaW5nIiwid3JpdGVfYXBpX21lc3NhZ2UiLCJzdHJpbmdfb2ZfYXBpX21lc3NhZ2UiLCJyZWFkX2FwaV9tZXNzYWdlIiwiYXBpX21lc3NhZ2Vfb2Zfc3RyaW5nIiwid3JpdGVfYXBpX21lc3NhZ2VfbGlzdCIsInJlYWRfYXBpX21lc3NhZ2VfbGlzdCIsIndyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIiwicmVhZF9maWxlX2xpbmVfY2F0YWxvZyIsIndyaXRlX2Rpbl9jYXRhbG9nIiwicmVhZF9kaW5fY2F0YWxvZyIsIndyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCIsIngkMTEiLCJ4JDEyIiwieCQxMyIsIngkMTQiLCJ4JDE1IiwieCQxNiIsInN0cmluZ19vZl9yZXN0X3Jlc3BvbnNlX2NvbnRlbiIsInJlYWRfcmVzdF9yZXNwb25zZV9jb250ZW50IiwieCQzNSIsIngkMTciLCJ4JDI2IiwieCQyNSIsIngkMjQiLCJ4JDIzIiwieCQyMiIsIngkMjEiLCJ4JDIwIiwieCQxOSIsIngkMTgiLCJ4JDM0IiwieCQzMyIsIngkMzIiLCJ4JDMxIiwieCQzMCIsIngkMjkiLCJ4JDI4IiwieCQyNyIsInJlc3RfcmVzcG9uc2VfY29udGVudF9vZl9zdHJpbiIsIndyaXRlX3Jlc3VsdF80Y2E2YjhmIiwicmVhZF9yZXN1bHRfNGNhNmI4ZiIsInN0cmluZ19vZl9yZXN0X3Jlc3BvbnNlIiwicmVzdF9yZXNwb25zZV9vZl9zdHJpbmciLCJ3cml0ZV9wbG90X3BhcmFtZXRlciIsInJlYWRfcGxvdF9wYXJhbWV0ZXIiLCJ3cml0ZV9yZXN0X3JlcXVlc3QiLCJzdHJpbmdfb2ZfcmVzdF9yZXF1ZXN0IiwicmVhZF9yZXN0X3JlcXVlc3QiLCJyZXN0X3JlcXVlc3Rfb2Zfc3RyaW5nIiwid3JpdGVfcmVzcG9uc2VfY29udGVudCIsInN0cmluZ19vZl9yZXNwb25zZV9jb250ZW50IiwicmVhZF9yZXNwb25zZV9jb250ZW50IiwicmVzcG9uc2VfY29udGVudF9vZl9zdHJpbmciLCJ3cml0ZV9yZXN1bHRfODkwZDlmZSIsInJlYWRfcmVzdWx0Xzg5MGQ5ZmUiLCJzdHJpbmdfb2ZfcmVzcG9uc2UiLCJyZXNwb25zZV9vZl9zdHJpbmciLCJ3cml0ZV9yZXF1ZXN0Iiwic3RyaW5nX29mX3JlcXVlc3QiLCJyZWFkX3JlcXVlc3QiLCJyZXF1ZXN0X29mX3N0cmluZyIsIndyaXRlX2lkIiwic3RyaW5nX29mX2lkIiwicmVhZF9pZCIsImlkX29mX3N0cmluZyIsIndyaXRlX2RhdGEiLCJyZWFkX2RhdGEiLCJmaWVsZF9pZCIsImZpZWxkX2RhdGEiLCJ3cml0ZV9maWxlX2xpbmVfZGV0YWlsIiwicmVhZF9maWxlX2xpbmVfZGV0YWlsIiwicHJpbnRfY29tcHJlc3Npb25fbW9kZXMiLCJzdHJvbmciLCJ3ZWFrIiwiY2F1c2FsIiwiaW5pdGlhbF9zdGF0ZSIsInVwZGF0ZV9zdGF0ZSIsImluaXRfc3RhdGUiLCJjdXJyZW50X3N0YXRlIiwibSIsIm0kMCIsIm0kMSIsIm0kMiIsImMiLCJncmFwaCIsImluZm9zIiwiY20iLCJ0cmFjZV90ZXh0IiwiYXBpX3NuYXBzaG90X2RvdCIsInNuYXBzaG90IiwiYXBpX3NuYXBzaG90X2thcHBhIiwiYXBpX3NpbXVsYXRpb25fc3RhdHVzIiwicHJvZ3Jlc3MiLCJkZXRhaWwiLCJwbG90Iiwib3V0cHV0IiwiYWdlbnRfY291bnQiLCJzcGVjaWVzIiwibXNnX3Byb2Nlc3Nfbm90X3BhdXNlZCIsImV4biIsImdldF9ncmFwaCIsInNldF9ncmFwaCIsImNhdGNoX2Vycm9yIiwiaGFuZGxlciIsInJhbmdlJDAiLCJtZXNzYWdlJDAiLCJyYW5nZSQxIiwibWVzc2FnZSQxIiwiZXJyb3IiLCJtZXNzYWdlJDIiLCJwYXJzZSIsInBhcnNpbmdfY29tcGlsIiwidmFyX292ZXJ3cml0ZSIsInN5c3RlbV9wcm9jZXNzIiwieWllbGQkMCIsImxvZ19idWZmZXIiLCJsb2dfZm9ybSIsImlucHV0c19idWZmZXIiLCJpbnB1dHNfZm9ybSIsImNvbmYiLCJ3YXJuaW5nIiwibXNnIiwiYXN0X2NvbXBpbGVkX2RhdGEiLCJsYXN0eWllbGQiLCJvdXRwdXRzIiwiaW5pdF9sIiwiZW52IiwiY291bnRlciIsInBhcnNlZF9zZWVkIiwic3RhdGUiLCJtYXhDb25zZWN1dGl2ZUNsYXNoIiwiZHVtcElmRGVhZGxvY2tlZCIsImNvbnRhY3RfbWFwIiwic2ltdWxhdGlvbiIsImUkMCIsImZsdXhfbWFwIiwiZmx1eF9uYW1lIiwibmV3X29ic2VydmFibGVzIiwiZmlsZV9saW5lIiwibmEiLCJsaW5lcyIsInN0IiwiYWxyZWFkeV90aGVyZSIsInNuYXBzaG90X2ZpbGUiLCJtaXgiLCJ0aW1lIiwiZmlsZSIsImZpbmFsaXplX3NpbXVsYXRpb24iLCJydW5fc2ltdWxhdGlvbiIsInN0b3BwZWQiLCJyc3RvcCIsIml0ZXIiLCJzdG9wIiwic3RvcCQwIiwic3RhcnQiLCJsZXhidWYiLCJ1c2VyX3NlZWQiLCJzaW11bGF0aW9uX3NlZWQiLCJwYXJzZWRfc2VlZCQwIiwicGFyc2VkX3NlZWQkMSIsInJhbmRvbV9zZWVkIiwicmFuZG9tX3N0YXRlIiwiZmlyc3Rfb2JzIiwicGVydHVyYmF0aW9uIiwiZm9ybWF0dGVyIiwidiIsImNvbnRpbnVlJDAiLCJwYXVzZV9jb25kaXRpb24iLCJlZmZpY2llbmN5IiwiZ2V0X3Jhd190cmFjZSIsImdldF9yYXdfYXN0IiwicnVudGltZV9zdGF0ZSIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwic2VsZl8yIiwid3JpdGUxIiwib2MiLCJuIiwid3JpdGUyIiwid3JpdGU0Iiwid3JpdGU0X2ludCIsIndyaXRlc3RyaW5nIiwiZG9zdGltZV9vZl91bml4dGltZSIsInRtIiwib3Blbl9vdXQiLCJjb21tZW50IiwiY2xvc2Vfb3V0Iiwib2ZpbGUiLCJzdGFydF9jZCIsInZlcnNpb24iLCJkYXRlIiwiY2Rfc2l6ZSIsIm51bV9lbnRyaWVzIiwiYWRkX2VudHJ5X2hlYWRlciIsImV4dHJhIiwibGV2ZWwiLCJtdGltZSIsImFkZF9kYXRhX2Rlc2NyaXB0b3IiLCJjcmMiLCJjb21wcl9zaXplIiwidW5jb21wcl9zaXplIiwiZW50cnkiLCJhZGRfZW50cnkiLCJuYW1lIiwic3RoJDAiLCJzdGgkMSIsInN0aCQyIiwiY3JjJDAiLCJhZGRfZW50cnlfZ2VuZXJhdG9yIiwiZmluaXNoZWQiLCJjaGVjayIsImJ1ZiIsImJpbmRfc2ltdWxhdGlvbiIsInNpbXVsYXRpb24kMCIsImRldGFpbF9wcm9qZWN0aW9uIiwicHJvamVjdGlvbiIsImVycm9ycyIsInNpbXVsYXRpb25fZGV0YWlsIiwiZmlsZV9saW5lcyIsImZpbGVfbGluZV9jYXRhbG9nIiwiZmlsZV9saW5lX2lkIiwiZmlsZV9saW5lX2xpc3QiLCJmbHV4X21hcF9jYXRhbG9nIiwiZmx1eF9tYXBfaWQiLCJmbHV4X21hcHNfbGlzdCIsInNlbGZfMyIsInNlbGZfNCIsInBsb3RfbGltaXQiLCJwbG90X3RpbWVfc2VyaWVzIiwicGxvdF9kZXRhaWxfc2l6ZSIsInBsb3RfbGltaXRfb2Zmc2V0IiwicGxvdF9saW1pdF9wb2ludHMiLCJvZmZzZXQiLCJuYiIsIm5iJDAiLCJuZXdfcGxvdF90aW1lX3NlcmllcyIsInBsb3RfcGFyYW1ldGVyIiwic2VsZl81Iiwic25hcHNob3RzIiwiYWNjIiwic25hcHNob3RfY2F0YWxvZyIsInNuYXBzaG90X2lkIiwic25hcHNob3RfbGlzdCIsInNlbGZfNiIsImhhcmFraXJpIiwiZmFjYWRlIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXJfd2l0aF9zZWVkIiwiY29udGVudCIsImZsdXgiLCJkaW5fbmFtZSIsIm5hbWUkMCIsInNpbXVsYXRpb25fcGVydHVyYmF0aW9uIiwib25fbWVzc2FnZSIsIm1hbmFnZXIiLCJwb3N0X21lc3NhZ2UiLCJ0ZXh0X21lc3NhZ2UiLCJwYWNrIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJkaW5faWQiLCJ2YXJpYWJsZV9vdmVyd3JpdHRlbiIsInBhdHRlcm5fc2hhcmluZyIsInNpbXVsYXRpb25fcGFyYW1ldGVyJDAiLCJyZXNwb25zZSIsImxvZ19tZXNzYWdlIiwic2ltdWxhdGlvbl9zdGF0dXMiLCJpbmZvIiwic2ltdWxhdGlvbl9pZCIsInJlc3BvbnNlX3RleHQiLCJtYWlsYm94ZXMiLCJtYWlsYm94ZXMkMCIsIm1lc3NhZ2VfdGV4dCIsInJlcXVlc3QkNCIsInJlcXVlc3QkMyIsInJlcXVlc3QkMiIsInJlcXVlc3QkMSIsInJlcXVlc3QkMCIsImVyciIsImlkJDAiLCJwb3N0Iiwib3V0YnVmIiwib3V0YiIsImEiLCJiJDAiLCJ1cmxfYXJncyIsIm9wdCIsImtleSIsInN0aCIsImRlZmF1bHQkMCIsImFyZ3MiLCJrIiwic29tZSIsImNvbnN0cnVjdG9yX3Byb2Nlc3NfY29uZmlndXJhdCIsImxhdW5jaF9hZ2VudCIsIm9uQ2xvc2UiLCJtZXNzYWdlX2RlbGltaXRlciIsImNvbW1hbmQiLCJoYW5kbGVyIiwiYnVmZmVyIiwibXNnIiwibXNnJDAiLCJwcmVmaXgiLCJzdWZmaXgiLCJtc2ckMSIsImNvbmZpZ3VyYXRpb24iLCJ4Iiwic2VsZl8xIiwidGltZW91dCIsInN0aCQwIiwic3dpdGNoX3JlIiwic3Rvcl9jb21tYW5kIiwic3dpdGNoX21haWxib3giLCJ1cGRhdGVfc3Rvcl9zdGF0ZSIsInN0b3Jfc3RhdGUiLCJydW5uaW5nX3JlZiIsInN0b3JfcHJvY2VzcyIsIm1lc3NhZ2VfdGV4dCIsIndvcmtlcl9vbm1lc3NhZ2UiLCJkZWJ1Z19wcmludGluZyIsIndvcmtlcl9uYW1lIiwiZXhjZXB0aW9uX2NyZWF0ZXNfbW9kYWwiLCJ3b3JrZXJfcmVjZWl2ZV9mIiwicHJvY2Vzc19tZXNzYWdlIiwicmVzcG9uc2VfdGV4dCIsImhhbmRsZXJfZiIsInJlc3BvbnNlX21lc3NhZ2UiLCJlJDAiLCJlIiwibm9fZXhjX21vZGFsX2FyZyIsInMiLCJzZW5kX3dvcmtlcl9leGNlcHRpb25zX3RvX21vZGEiLCJvbmVycm9yIiwiYXBwbHlfb25lcnJvciIsImVycm9yX3N0cmluZyIsInNpbXVsYXRpb25fbG9hZCIsInBhdHRlcm5TaGFyaW5nIiwib3ZlcndyaXRlcyIsInBhcnNpbmdfY29tcGlsIiwibG9hZCIsImluaXRfa2FzYSIsImluZm9zIiwibG9jYXRvcnMiLCJmaWxlbmFtZSIsInBvcyIsImthc2Ffd29ya2VyIiwia2FzYV9tYWlsYm94Iiwia2Ftb2hhX3dvcmtlciIsImthbW9oYV9tYWlsYm94Iiwia2FzdG9yX3dvcmtlciIsInNlbGZfMiIsInNlbGZfMyIsInNlbGZfNCIsImV4biIsInNwZWNfbGFiZWwiLCJyZW1vdGUiLCJzcGVjX2lkIiwiaHR0cCIsImNsaSIsInJlYWRfc3BlYyIsInVybCIsImNsZWFuZWRfdXJsIiwiY2xlYW5lZCIsImxlbmd0aCIsInJhd19wYXJzZWQiLCJmaWxlX3VybCIsInBhcnNlZCIsInByb3RvY29sIiwiaHR0cHMkMSIsImZpbGUkMSIsImh0dHAkMSIsImh0dHBzJDAiLCJmaWxlJDAiLCJsYWJlbCIsImh0dHAkMCIsImh0dHBzIiwiZmlsZSIsInNldF9zdGF0ZSIsInN0YXRlIiwiY3JlYXRlX21hbmFnZXIiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwiZXJyb3JfbXNnIiwianNfbm9kZV9ydW50aW1lIiwiZXJyb3JfbXNnJDAiLCJjcmVhdGVfc3BlYyIsImlkIiwicnVudGltZSIsImN1cnJlbnRfc3RhdGUkMCIsImN1cnJlbnRfc3RhdGUiLCJtb2RlbCIsImluaXQiLCJob3N0cyIsInVybHMiLCJ1cmwkMCIsInVybHMkMCIsInN5bmMiLCJpbml0X2RlZmF1bHRfcGFyYW1ldGVycyIsInByb2plY3RfZXF1YWwiLCJhIiwiYiIsInN0YXRlX2VxdWFsIiwieSIsIm1vZGVsX2VxdWFsIiwiaW5pdF9zdGF0ZSIsInVwZGF0ZV9wYXJhbWV0ZXJzIiwic3QiLCJwcm9qIiwicHJvamVjdF9wYXJhbWV0ZXJzIiwiZGVmYXVsdF9wYXJhbWV0ZXJzIiwicHJvamVjdF9wYXJhbWV0ZXJzJDAiLCJkZWZhdWx0X3BhcmFtZXRlcnMkMCIsInNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQiLCJwYSIsImxzIiwidmEiLCJzZXRfcGxvdF9wZXJpb2QiLCJwbG90X3BlcmlvZCIsInBhcmFtIiwic2V0X3BhdXNlX2NvbmRpdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInNldF9zZWVkIiwic2VlZCIsInNldF9zdG9yZV90cmFjZSIsInN0b3JlX3RyYWNlIiwic2V0X3Nob3dfZGVhZF9ydWxlcyIsInNob3dfZGVhZF9ydWxlcyIsInNldF9zaG93X2RlYWRfYWdlbnRzIiwic2hvd19kZWFkX2FnZW50cyIsInNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZSIsInNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYSIsImFkZF9wcm9qZWN0Iiwic3RhdGVfdmEiLCJjYXRhbG9nIiwicHJvamVjdF9jYXRhbG9nIiwicHJvamVjdCIsIm91dCIsInByb2plY3RfbWFuYWdlciIsInNldF9jb21wdXRlcyIsInByb2plY3RfaXNfY29tcHV0aW5nIiwic2V0dGVyIiwicHJvamVjdF93YXRjaGVyX2NhbmNlbCIsImRlbGF5IiwibG9vcCIsInBhcmFtcyIsImNyZWF0ZV9wcm9qZWN0Iiwic2V0X3Byb2plY3QiLCJkdW1teV9tb2RlbCIsInAiLCJtb2RlbF9jYXRhbG9nIiwibW9kZWxfcGFyYW1ldGVycyIsImN1cnJlbnQiLCJyZW1vdmVfcHJvamVjdCIsInN0YXRlJDAiLCJ2IiwiaCIsInByb2plY3RfY3VycmVudCIsIm91dCQwIiwibWFuYWdlciIsIm0iLCJleGlzdGluZ19wcm9qZWN0cyIsImFyZ19wbG90X3BlcmlvZCIsImRlZmF1bHQkMSIsImFyZ19wYXVzZV9jb25kaXRpb24iLCJkZWZhdWx0JDIiLCJhcmdfbW9kZWxfc2VlZCIsImRlZmF1bHQkMyIsImFyZ19zdG9yZV90cmFjZSIsImRlZmF1bHQkNCIsImFyZ19zaG93X2RlYWRfcnVsZXMiLCJkZWZhdWx0JDUiLCJhcmdfc2hvd19kZWFkX2FnZW50cyIsImRlZmF1bHQkNiIsImFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aSIsImFyZyIsImFyZyQwIiwiaCQwIiwiYXJnJDEiLCJhcmckMiIsImgkMSIsImgkMiIsImgkMyIsImgkNCIsImgkNSIsInByb2plY3RzIiwiYWRkX3Byb2plY3RzIiwicHJvamVjdHMkMCIsImVycm9ycyIsImV2YWxfd2l0aF9wcm9qZWN0Iiwib25fcHJvamVjdF9jaGFuZ2VfYXN5bmMiLCJlcSIsIm9uIiwiaW5pdF9vdGhlcnMiLCJvdGhlcnMiLCJvdGhlcnNfZXEiLCJlcV9wYWlyIiwib3RoIiwiZXJyb3JfbXNnJDIiLCJlcnJvcl9tc2ckMSIsImR1bW15X2N1cnNvcl9wb3MiLCJibGFua19zdGF0ZSIsInNldF9kaXJlY3Rvcnlfc3RhdGUiLCJtb2RlbF9ob29rZWQiLCJyZWZyZXNoX2ZpbGVfaG9va19zZW5kIiwicmVmcmVzaF9maWxlX2hvb2siLCJuYW1lIiwiY3VycmVudF9maWxlbmFtZSIsImFwcGx5X29uX2N1cnJlbnRfcG9zX29mX21vZGVsIiwiZiIsIndpdGhfY3VycmVudF9wb3MiLCJ3aXRoX2N1cnJlbnRfZmlsZSIsImFjdGl2ZSIsImdldF9maWxlIiwidGV4dCIsIm5hbWUkMCIsInJhbmsiLCJzZW5kX3JlZnJlc2giLCJsaW5lIiwib3V0X29mX3N5bmMiLCJjb250ZW50IiwidXBkYXRlX2RpcmVjdG9yeSIsInJlc2V0IiwiYWNjIiwicG9zaXRpb24iLCJkaXJlY3RvcnkiLCJjcmVhdGVfZmlsZSIsImZpbGVfbWV0YWRhdGEiLCJtYXRjaGluZ19maWxlIiwibWV0YWRhdGEiLCJtYXhfcG9zIiwic2VsZWN0X2ZpbGUiLCJ0Iiwic2V0X2NvbnRlbnQiLCJzZXRfY29tcGlsZSIsImZpbGVfaWQiLCJjb21waWxlIiwicmFuayQwIiwicmVtb3ZlX2ZpbGUiLCJsb2NhbCIsImRvX2FfbW92ZSIsIngkMCIsImN1cnNvcl9wb3MiLCJzZXRfcG9zaXRpb24iLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsIm9yZGVyX2ZpbGUiLCJpbmRleCIsInRhaWwiLCJjdXJzb3JfYWN0aXZpdHkiLCJjaCIsImNhbmQiLCJsb2FkX21vZGVscyIsIm1vZGVscyIsImFkZF9tb2RlbHMiLCJsb2FkX2ZpbGUiLCJtb2RlbHMkMCIsInUiLCJmaWxlY29udGVudCIsImRlZmF1bHRGb250U2l6ZSIsImN1cnJlbnRGb250U2l6ZSIsIm1pbkZvbnRTaXplIiwibWF4Rm9udFNpemUiLCJ1cGRhdGVGb250U2l6ZSIsImRlbHRhIiwiYWdlbnRfY29sb3JpbmciLCJlcnJvcl9tc2ckOCIsImVycm9yX21zZyQ3IiwiZXJyb3JfbXNnJDYiLCJlcnJvcl9tc2ckNSIsImVycm9yX21zZyQ0IiwiZXJyb3JfbXNnJDMiLCJnZXRfc2ltdWxhdGlvbl9pbmZvIiwic2ltdWxhdGlvbiIsInNpbXVsYXRpb25faW5mbyIsInNpbXVsYXRpb25fc3RhdHVzX3RvX3N0cmluZyIsIm1vZGVsX3NpbXVsYXRpb25fc3RhdGUiLCJ1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSIsInNpbXVsYXRpb25fc3RhdGUiLCJldmFsX3dpdGhfc2ltX21hbmFnZXIiLCJwcm9qZWN0X2hhbmRsZXIiLCJmYWlsX2x3dCIsImV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyIsInN0b3BwZWQiLCJpbml0aWFsaXppbmciLCJzdGgkMSIsInJlYWR5IiwiZXZhbF93aGVuX3JlYWR5Iiwic2xlZXBfdGltZSIsInJlZnJlc2giLCJjb250aW51ZV9zaW11bGF0aW9uIiwicGF1c2Vfc2ltdWxhdGlvbiIsInN0b3Bfc2ltdWxhdGlvbiIsInN0YXJ0X3NpbXVsYXRpb24iLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsIm9uX2Vycm9yIiwiZXJyb3JfbXNncyIsImVycm9yIiwibWVzc2FnZSIsInNpbXVsYXRpb25fc3RhdHVzIiwiaW50ZXJ2ZW5lX3NpbXVsYXRpb24iLCJjb2RlIiwib25sb2FkIiwic2V0X21vZGVsX2ludGVydmVudGlvbiIsIm1vZGVsX2ludGVydmVudGlvbiIsInN0YXRlX2Vycm9yX3NldCIsInN0YXRlX2Vycm9yIiwiaGFzX2Vycm9ycyIsImFkZF9lcnJvciIsImxvY2F0aW9uIiwiY3VycmVudF9zdGF0ZV9lcnJvciIsIm5ld19zdGF0ZV9lcnJvciIsInZhbHVlIiwid3JhcCIsInIiLCJhcHBlbmQiLCJ0b2dnbGVfZWxlbWVudCIsInByb2plY3Rpb24iLCJjb250ZW50IiwibW9kZWwiLCJsYWJlbF9uZXdzIiwidGFiX2lzX2FjdGl2ZSIsImNvdW50ZXIiLCJzaW11bGF0aW9uX2luZm8iLCJsYXN0X3ZhbHVlIiwidGFiX2FjdGl2ZSIsInYiLCJiYWRnZSIsImNvdW50IiwiZ3JhcGhfZGlzcGxheV9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJuYXZsaSIsIm5vbmVfY2hlY2tib3giLCJ3ZWFrX2NoZWNrYm94Iiwic3Ryb25nX2NoZWNrYm94IiwibGF1bmNoX2J1dHRvbiIsImxpc3RfY29udHJvbCIsInN0b3J5X2xpc3QiLCJjbSIsImlkIiwic3RvcnlfbGlzdF9odG1sIiwic2VsZWN0X3N0b3JpZXMiLCJzZXR1cF9mb3JtIiwibG9nX2NvbnRyb2wiLCJzdG9yeV9sb2ciLCJzZXRfaW5mbyIsImN1cnJlbnRfaW5mbyIsImxpbmUiLCJzdG9yeV9sb2dfaHRtbCIsImxvZ19kaXYiLCJsb2dfcGFuZWwiLCJzdG9yeV9ncmFwaCIsImxpZnRfcmVzdWx0IiwieCIsImUiLCJkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwiLCJtYW5hZ2VyIiwiY2F1c2FsIiwid2VhayIsInN0cm9uZyIsInByZWRfaWQiLCJzZXRfYV9zdG9yeSIsInZhIiwiZCIsImYiLCJpbnNwZWN0X3N0b3JpZXMiLCJpc19jb21wdXRpbmciLCJhY2MiLCJzdG9yeV9saXN0X2Zyb21fbWFuYWdlciIsIm1hbmFnZXJfaXNfY29tcHV0aW5nIiwibG9nX2xpbmVzIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ0cmFjZSIsIm9ucmVzaXplIiwiZGlzcGxheV9pZCIsImV4cG9ydF9pZCIsImFjY3VyYWN5X2Nob29zZXJfaWQiLCJzZXRfYWNjdXJhY3kiLCJhY2N1cmFjeSIsImNvbnRhY3RfbWFwX2pzIiwibWgiLCJjb250YWN0X2pzb24iLCJjb250YWN0IiwiY29udGFjdCQwIiwibWFwX2pzb24iLCJkYXRhIiwiY29udGFjdF9tYXBfdGV4dCIsImNvbmZpZ3VyYXRpb24iLCJvcHRpb25fZ2VuIiwibCIsImFjY3VyYWN5X2Nob29zZXIiLCJhY2N1cmFjeV9mb3JtIiwidmEkMCIsInNlbGVjdF9pZCIsImZvcm1hdF9zZWxlY3RfaWQiLCJzZXRfY3VycmVudF9zbmFwc2hvdCIsImN1cnJlbnRfc25hcHNob3QiLCJzZXRfZGlzcGxheV9mb3JtYXQiLCJkaXNwbGF5X2Zvcm1hdCIsInNuYXBzaG90X2NvdW50Iiwic3RhdGUiLCJzdGF0ZSQwIiwiY29uZmlndXJhdGlvbl90ZW1wbGF0ZSIsImFkZGl0aW9uYWxfaGFuZGxlcnMiLCJzIiwianNvbl9oYW5kbGVyIiwia2FwcGFfaGFuZGxlciIsImZpbGVuYW1lIiwiZG90X2hhbmRsZXIiLCJkZWZhdWx0X2hhbmRsZXJzIiwiY29uZmlndXJhdGlvbl9rYXBwYSIsImNvbmZpZ3VyYXRpb25fZ3JhcGgiLCJyZW5kZXJfc25hcHNob3RfZ3JhcGgiLCJzbmFwc2hvdF9qcyIsInNuYXBzaG90IiwianNvbiIsImNvbnRhY3RfbWFwIiwic2VsZWN0X3NuYXBzaG90IiwiZmlsZWluZGV4IiwiaW5kZXgiLCJzaW11bGF0aW9uX291dHB1dCIsImluZGV4JDAiLCJzbmFwc2hvdF9pZHMiLCJzbmFwc2hvdF9pZCIsImYkMCIsInNuYXBzaG90X2NsYXNzIiwiZW1wdHkiLCJzaW5nbGUiLCJtdWx0aXBsZSIsInhtbCIsImkiLCJsaXN0Iiwic25hcHNob3RfZmlsZSIsInNuYXBzaG90X2xhYmVsIiwic25hcHNob3Rfc2VsZWN0Iiwic25hcHNob3RfY2hvb3NlciIsInRvZ2dsZV9jb250cm9scyIsImthcHBhIiwiZ3JhcGgiLCJleHBvcnRfY29udHJvbHMiLCJzbmFwc2hvdCQwIiwia2FwcGFfc25hcHNob3RfZGlzcGxheSIsImthcHBhX2dyYXBoX2Rpc3BsYXkiLCJmb3JtYXRfY2hvb3NlciIsInVwZGF0ZV9mb3JtYXQiLCJmb3JtYXRfdGV4dCIsImZvcm1hdCIsImRpdl9kaXNwbGF5X2lkIiwicGxvdF9wb2ludHNfaW5wdXRfaWQiLCJwbG90X29mZnNldF9pbnB1dF9pZCIsInNldF9vZmZzZXQiLCJvZmZzZXQiLCJkZWZhdWx0X3BvaW50Iiwic2V0X3BvaW50cyIsInBvaW50IiwicGxvdF9yZWYiLCJoYXNfcGxvdCIsImV4cG9ydF9qc29uIiwicGxvdCIsImV4cG9ydCQwIiwibWltZSIsInBsb3RfcG9pbnRzX2lucHV0IiwibWF4X29mZnNldCIsInBsb3Rfb2Zmc2V0X2lucHV0IiwidXBkYXRlX3Bsb3QiLCJqc19wbG90Iiwic2ltdWxhdGlvbl9tb2RlbCIsInNpbXVsYXRpb25faW5mbyQwIiwicGxvdF9zaXplIiwib2Zmc2V0X21heCIsIm9sZF9vZmZzZXQiLCJvZmZzZXQkMCIsIm9mZnNldF9jdXJyZW50IiwibmV3X29mZnNldCIsInBvaW50JDAiLCJvdXQiLCJwbG90X29mZnNldF9pbnB1dF9kb20iLCJwbG90X3BvaW50c19zdHJpbmciLCJwbG90X3BvaW50JDAiLCJwbG90X3BvaW50c19vcHRpb24iLCJwbG90X3BvaW50cyIsInBsb3RfcG9pbnQiLCJwbG90X3BvaW50X3N0cmluZyIsInZhbHVlIiwic2V0X2N1cnJlbnRfZmlsZSIsImN1cnJlbnRfZmlsZSIsInVwZGF0ZV9vdXRwdXRzIiwia2V5IiwibGluZXMiLCJmaWxlX2NvdW50IiwiZmlsZV9saW5lX2lkcyIsImN1cnJlbnRfZmlsZV9pZCIsImZpbGVfb3B0aW9ucyIsInNlbGVjdF9maWxlIiwiZmlsZV9zZWxlY3QiLCJmaWxlX2NvbnRlbnQiLCJ0IiwiY29udGVudF9sb2dfaWQiLCJ4JDAiLCJsb2ciLCJ0ZXh0Iiwid2l0aF9maWxlIiwiaGFuZGxlciIsInNldF9jb250ZW50IiwiZmlsZWNvbnRlbnQiLCJjdXJyZW50X2ZpbGVuYW1lIiwiciIsInIkMCIsIm1zZyIsImNyZWF0ZV9maWxlIiwib3B0Iiwic3RoIiwidHh0Iiwic2V0X2ZpbGUiLCJmaWxlX2lkIiwiY2xvc2VfZmlsZSIsInNldF9maWxlX2NvbXBpbGUiLCJyYW5rIiwiY29tcGlsZSIsIm9yZGVyX2ZpbGVzIiwiZmlsZW5hbWVzIiwiZXhwb3J0X2N1cnJlbnRfZmlsZSIsImZpbGVfbmV3X21vZGFsX2lkIiwiZmlsZV9uZXdfaW5wdXRfaWQiLCJmaWxlX2Ryb3Bkb3duX21lbnVfaWQiLCJmaWxlX25ld19saV9pZCIsImZpbGVfb3Blbl9saV9pZCIsImZpbGVfb3Blbl9zZWxlY3Rvcl9pZCIsImZpbGVfY2xvc2VfbGlfaWQiLCJmaWxlX2V4cG9ydF9saV9pZCIsImZpbGVfY29tcGlsZV9jaGVja2JveCIsImVsZW1lbnRfZ2V0X2ZpbGVuYW1lIiwiZWxlbWVudCIsImVsZW1lbnRfc2V0X2ZpbGVuYW1lIiwibmFtZSIsImZpbGVfbmV3X2lucHV0Iiwib3Blbl9pbnB1dCIsImhpZGVfb25fZW1wdHkiLCJjdXJyZW50X2ZpbGVfcG9zIiwibG9jYWwiLCJpc19jaGVja2VkIiwibGlfY2xhc3MiLCJjaGVja2VkX2F0dHJpYnV0ZSIsImZpbGVfbGkiLCJzZXBhcmF0b3JfbGkiLCJuZXdfbGkiLCJvcGVuX2xpIiwiY2xvc2VfbGkiLCJleHBvcnRfbGkiLCJsaV9saXN0IiwiZmlsZSIsIm91dF9vZl9zeW5jIiwiZmlsZV9zZWxlY3RfaGFuZGxlciIsImZpbGVzIiwib3Blbl9pbnB1dF9kb20iLCJ0YXJnZXQiLCJ0b2dnbGVfYnV0dG9uX2lkIiwicGFuZWxfaGVhZGluZ19ncm91cF9pZCIsImNvZGVtaXJyb3JfaWQiLCJlZGl0b3JfcGFuZWxfaWQiLCJzZXRfZWRpdG9yX2Z1bGwiLCJlZGl0b3JfZnVsbCIsInNldF9maWxlbmFtZSIsIm1vdmVfY3Vyc29yX2hvb2tfc2VuZCIsIm1vdmVfY3Vyc29yX2hvb2siLCJmaWxlX2xhYmVsIiwidG9nZ2xlX2J1dHRvbiIsIm1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCIsImJ1dHRvbnMiLCJwYW5lbF9oZWFkaW5nIiwidGV4dGFyZWEiLCJlcnJvcnMiLCJwb3NpdGlvbiIsInAiLCJyYW5nZSIsInZhbHVlJDAiLCJjb2RlbWlycm9yIiwidGltZW91dCIsImNoYW5nZSIsInRpbWVvdXQkMCIsImRlbGF5IiwiZmlsZW5hbWUkMCIsImNvZGVtaXJyb3IkMCIsImNoIiwiZWRpdG9yX2Z1bGwkMCIsInJlZnJlc2giLCJjYW5kIiwibW9kZSIsInRvcCIsIm1pZGRsZUhlaWdodCIsInNjcm9sbExpbmUiLCJwb3MiLCJiZWciLCJmaXJzdCIsImVuIiwibGFzdCIsInRpdGxlIiwibSIsImNvbnN0cmFpbnRzIiwicGFuZWxzIiwiYiIsImEiLCJsZW1tYSIsImh5cCIsImNvbmNsdXNpb24iLCJzaXRlX2dyYXBoIiwibGlzdCQ0IiwibGlzdCQwIiwibGlzdCQxIiwiYm9vbCIsImxpc3QkMiIsImxpc3QkMyIsImxpc3QkNSIsImxpc3QkNiIsInRleHRzIiwiY29uc3RyYWludHNfZGl2IiwiaW5mbHVlbmNlX3N0eWxlX2lkIiwib3JpZ2luX2xhYmVsIiwicmVtb3ZlX2xpc3QiLCJhZGRfbGlzdCIsImVtcHR5X3NwaGVyZSIsImR1bW15X21vZGVsIiwidG90YWxfaW5wdXRfaWQiLCJmd2RfaW5wdXRfaWQiLCJid2RfaW5wdXRfaWQiLCJ0cmFja19jdXJzb3Jfc3dpdGNoX2lkIiwicmVuZGVyaW5nX2Nob29zZXJfaWQiLCJ0YWJfaXNfYWN0aXZlX3NpZ25hbCIsInRyYWNrX2N1cnNvcl9zZXQiLCJ0cmFja19jdXJzb3IiLCJ0cmFja19jdXJzb3Jfc2lnbmFsIiwic2V0X21vZGVsIiwibW9kZWxfc2lnbmFsIiwiaW5mbHVlbmNlX25vZGVfbGFiZWwiLCJ1cGRhdGVfbW9kZWxfZ3JhcGgiLCJnIiwidXBkYXRlX21vZGVsIiwibm9kZSIsIm9yaWdpbiIsImluZmx1ZW5jZW1hcCIsInRvdGFsX2lucHV0IiwiZndkX2lucHV0IiwiYndkX2lucHV0IiwibmV4dF9ub2RlIiwicHJldl9ub2RlIiwicmVjZW50ZXIiLCJ0cmFja19lbmFibGVkIiwicmVtb3ZlX2xpc3QkMCIsImFkZF9saXN0JDAiLCJvbl9jbGljayIsInRyYWNrX2N1cnNvcl9zd2l0Y2giLCJleHBvcnRfY29uZmlnIiwiaW5mbHVlbmNlc19zdHJpbmciLCJyZW5kZXJpbmciLCJsJDAiLCJyZW5kZXJpbmdfY2hvb3NlciIsImlzX2NlbnRlciIsIm9yaWdpbl9zaG9ydF9vcHQiLCJpZCQwIiwiYSQwIiwidGFibGVfb2ZfaW5mbHVlbmNlc19qc29uIiwiaW5mbHVlbmNlX21hcCIsIm5hbWVyIiwib3JpZ2luX2lkX29wdCIsIm9yaWdpbl9pZCIsInNyYyIsImRzdCIsImJ5Iiwib24iLCJ2JDAiLCJwb3NpdGl2ZV9ieSIsInBvc2l0aXZlX29uIiwibmVnYXRpdmVfYnkiLCJuZWdhdGl2ZV9vbiIsInBvcF9jZWxsIiwicG9zaXRpdmUiLCJpbmZsdWVuY2Vfc3BoZXJlIiwiZ3JhcGhfZm9ybSIsInNwaGVyZSIsIm9yaWdpbl9sYWJlbF9vcHQiLCJlcnJvciIsImxhYmVsIiwiYnkkMSIsIm9uJDEiLCJieSQwIiwib24kMCIsIm8iLCJhY2MkMCIsIm91dHMiLCJvdXRzJDAiLCJvcmlnaW5fbGFiZWwkMCIsInRvdGFsIiwiYndkIiwiZndkIiwiaW5mbHVlbmNlcyIsImJ1ZiIsImZtdCIsImxvZ2dlciIsImxvZ2dlcl9ncmFwaCIsIm5vZGVzIiwiYmlnZ2VzdF9pZCIsIm4iLCJtYXhfcnVsZV9pZCIsImdldF9pZF9vZl9ub2RlX2lkIiwibm9kZV9pZCIsImNvbnRleHR1YWxfaGVscCIsImZpbGxjb2xvciIsImRpcmVjdGl2ZXMiLCJwb3MkMCIsImNvbnRleHR1YWxfaGVscCQwIiwiZmlsbGNvbG9yJDAiLCJwcmludF9tYXBzIiwibWFwIiwic291cmNlIiwic291cmNlX2lkIiwibGFiZWxfbGlzdCIsInRhcmdldF9pZCIsImxhYmVsX3N0cmluZyIsImRpcmVjdGl2ZXMkMCIsImdyYXBoX2pzb24iLCJ1cGRhdGVfbW9kZWxfd2l0aF9vcmlnaW5fcmVmaW4iLCJvcmlnaW5fcmVmaW5lZCIsImN1cnNvcl9wb3MiLCJzaXRlIiwic2NjIiwic2NjJDAiLCJsaXN0X2VkZ2VzIiwiYyIsIm91dHB1dCIsInRhYiIsInNraXAiLCJwbHVyYWwiLCJyaWdodHN1YnBhbmVsX2lkIiwiY2hpbGRzX2hpZGUiLCJkb250X2djX21lIiwicnVsZSIsIndhcm5pbmdzIiwiYWdlbnQiLCJjb250ZXh0X2xpc3QiLCJ0YWIkMCIsInNraXAkMCIsInBsdXJhbCQwIiwiZGluX3RhYmxlX2lkIiwic2V0X2Rpbl9pZCIsImRpbl9pZCIsImRpbl9pZHMiLCJkaW5fbGlzdCIsImRpbl9zZWxlY3QiLCJkaW5fZGF0YSIsImRpbiIsImRpbl9oZWFkZXIiLCJhbGwiLCJib2R5IiwiZGluX3RhYmxlIiwidGhlYWQiLCJleHBvcnRfY3VycmVudF9kaW4iLCJ0b19zdHJpbmciLCJleHBvcnRfY29uZmlndXJhdGlvbiIsIm5hdnRhYnNfaWQiLCJuYXZjb250ZW50c19pZCIsIm5hdnRhYnMiLCJzdG9yeV9jbGFzcyIsIm5hdmNvbnRlbnRzIiwicmVzdWx0X2JlZm9yZSIsImx3dF9yZXN1bHRfc3RhdGVfZmlsZV9zeW5jIiwibHd0X3Jlc3VsdF9zaW11bGF0aW9uX3JlZnJlc2giLCJyZXN1bHRfc3RhdGVfZmlsZV9zeW5jIiwicmVzdWx0X3NpbXVsYXRpb25fcmVmcmVzaCIsImNyZWF0ZV9wcm9qZWN0IiwicHJvamVjdF9pZCIsInNldF9wcm9qZWN0IiwiY2xvc2VfcHJvamVjdCIsInNldF9tYW5hZ2VyIiwicnVudGltZV9pZCIsImNvbmZpZ3VyYXRpb25fc2VlZF9pbnB1dF9pZCIsInByZWZlcmVuY2VzX21vZGFsX2lkIiwicHJlZmVyZW5jZXNfYnV0dG9uIiwib3B0aW9uX3NlZWRfaW5wdXQiLCJvcHRpb25fd2l0aHRyYWNlIiwib3B0aW9uX3dpdGhkZWFkcnVsZXMiLCJvcHRpb25fd2l0aGRlYWRhZ2VudHMiLCJvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSIsImRlY3JlYXNlX2ZvbnQiLCJpbmNyZWFzZV9mb250IiwibGlzdF90IiwiY3VycmVudF9pZCIsInNwZWMiLCJzcGVjX2lkIiwiYmFja2VuZF9vcHRpb25zIiwiYmFja2VuZF9zZWxlY3QiLCJib2RpZXMiLCJzZXRfYnV0dG9uIiwic2F2ZV9idXR0b24iLCJoZWFkIiwiZm9vdCIsIm1vZGFsIiwic2V0X2FjdGlvbiIsImlucHV0X3ZhbHVlIiwibW9kZWxfc2VlZCIsInNwIiwicHJvamVjdF9pZF9tb2RhbF9pZCIsInByb2plY3RzX3RhYnNfaWQiLCJwcm9qZWN0X2lkX2lucHV0IiwibGlfbmV3IiwibGlfcHJlZnMiLCJzZXR0aW5nc19jbGllbnRfaWQiLCJtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZyIsIm1vZGVsX3Byb2plY3RfaWQiLCJjdXJyZW50X3Byb2plY3RfaWQiLCJzcGFuX2Nsb3NlIiwiZXZlbnQiLCJjbGFzc2VzIiwiY29tcHV0aW5nIiwiYV9wcm9qZWN0IiwiY29udGludWVfc2ltdWxhdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInBhdXNlX3NpbXVsYXRpb24iLCJzdG9wX3NpbXVsYXRpb24iLCJzdGFydF9zaW11bGF0aW9uIiwicGFyYW0kMCIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwiaW50ZXJ2ZW5lX3NpbXVsYXRpb24iLCJtb2RlbF9wZXJ0dXJiYXRpb24iLCJmb2N1c19yYW5nZSIsInNpbXVsYXRpb25fdHJhY2UiLCJkYXRhX3N0cmluZyIsInNpbXVsYXRpb25fb3V0cHV0cyIsImRhdGFfYmlnc3RyaW5nIiwiaGlkZGVuX2NsYXNzIiwidmlzaWJsZV9jbGFzcyIsImlkX2Vycm9yIiwiaWRfYWxlcnQiLCJtZXNzYWdlX25hdl9pbmNfaWQiLCJtZXNzYWdlX25hdl9kZWNfaWQiLCJtZXNzYWdlX2ZpbGVfbGFiZWxfaWQiLCJpZCQxIiwiaWQkMiIsImlkJDMiLCJpZCQ0IiwiaWQkNSIsImlkJDYiLCJpZCQ3IiwiaWQkOCIsInZpc2libGVfb25fc3RhdGVzIiwiYV9jbGFzcyIsImN1cnJlbnRfc3RhdGUiLCJpbnB1dCIsImJ1dHRvbiIsImZvcm0iLCJzaWduYWxfY2hhbmdlIiwic2lnbmFsX2hhbmRsZXIiLCJpbnB1dCQwIiwiZG9tIiwibGVuZ3RoIiwiaW5wdXQkMSIsImVycm9yX2luZGV4X3NldCIsImVycm9yX2luZGV4Iiwic2FuaXRpemVfaW5kZXgiLCJpbmRleCQxIiwiZ2V0X21lc3NhZ2UiLCJtZXNzYWdlX25hdl90ZXh0IiwibWVzc2FnZV9uYXZfZGVjIiwibWVzc2FnZV9uYXZfaW5jIiwibWVzc2FnZV9uYXYiLCJtZXNzYWdlIiwicmFuZ2UkMCIsImZpbGVfbGFiZWxfdGV4dCIsImVycm9yX21lc3NhZ2VfdGV4dCIsImVycm9yX21lc3NhZ2UiLCJhbGVydF9tZXNzYWdlcyIsImluZGV4X2NsaWNrX2hhbmRsZXIiLCJkZWx0YSIsImJ1dHRvbiQwIiwiYnV0dG9uJDEiLCJidXR0b24kMiIsImJ1dHRvbiQzIiwiYnV0dG9uJDQiLCJidXR0b24kNSIsInByb2dyZXNzX2JhciIsInBlcmNlbnRfc2lnbmFsIiwidmFsdWVfc2lnbmFsIiwidHJhY2tlZF9ldmVudHMiLCJzdGF0dXMiLCJ0cmFja2VkX2V2ZW50cyQwIiwic2V0X3N0YXRlX2xvZyIsInN0YXRlX2xvZyIsImVmZiIsImN1cnJlbnRfZXZlbnQiLCJ0aW1lIiwidGltZSQwIiwidGltZV9wZXJjZW50IiwidGltZV9wZXJjZW50JDAiLCJldmVudCQwIiwiZXZlbnRfcGVyY2VudGFnZSIsImV2ZW50X3BlcmNlbnRhZ2UkMCIsInN0b3BwZWRfYm9keSIsInN0b3BwZWRfcm93IiwicGF1c2VkX3JvdyIsImZvb3RlciIsImRlYnVnIiwiY29udGVudCQwIiwicmVzZXRfdmFsdWUiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJkb20kMSIsImRvbSQyIiwib25sb2FkIiwibWFpbiIsIngiXSwic291cmNlcyI6WyIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK3J1bnRpbWVfZXZlbnRzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2Jhc2VfaW50ZXJuYWxoYXNoX3R5cGVzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8rY29tcGFyZS5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytiaWdzdHJpbmcuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcnVudGltZS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8rc3luYy5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK3BybmcuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxBdG9taWMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0ZGxpYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcGVydmFzaXZlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC91Y2hhci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2xleGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcGFyc2luZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9hcmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3ByaW50ZXhjLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2djLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zY2FuZi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxNb2QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2dlbmxleC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZXBoZW1lcm9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY29tcGxleC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lX18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc19vZl9vY2FtbF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9kb20ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3R5cGVkX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9kb21faHRtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZm9ybS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3dvcmtlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd2ViU29ja2V0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3JlZ2V4cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvdXJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3Jlc2l6ZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9wZXJmb3JtYW5jZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9ldmVudHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9zdmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9maXJlYnVnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9nZW9sb2NhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ludGwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9mbXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2NzZXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9hdXRvbWF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY29sb3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvZW1hY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvZ2xvYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcGVybC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcG9zaXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX3dyYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfcHJpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX2l0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3Ivc3ZnX2YubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IvaHRtbF9mLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC90eXhtbF94bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL3R5eG1sX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvdHl4bWxfaHRtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmVhY3RpdmVEYXRhL3JlYWN0aXZlRGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtdHl4bWwvanNfb2Zfb2NhbWxfdHl4bWxfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtdHl4bWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC90eXhtbF9jYXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC90eXhtbF9qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zd2l0Y2gubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc2VxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfcHF1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfcG9vbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9tdmFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X211dGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X2NvbmRpdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0X3JlYWN0L2x3dF9yZWFjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2pzX29mX29jYW1sX2x3dF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X3htbEh0dHBSZXF1ZXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzb25wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2pzX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2x3dF9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvanNfb2Zfb2NhbWxfbHd0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2NhbWwvY2FtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvc2V4cGxpYjAvc2V4cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvc2V4cGxpYjAvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvc2V4cGxpYjAvc2V4cF9jb252Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcG9seTAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaW1wb3J0MC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9hcnJheTAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvY2hhcjAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaW50MC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9saXN0MC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3BweF9jb21wYXJlX2xpYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9wcHhfaGFzaF9saWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS93b3JkX3NpemUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcHJldHR5X3ByaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3dpdGhfcmV0dXJuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvbW9uYWQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYXBwbGljYXRpdmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYnl0ZXMwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvZWl0aGVyMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9zdHJpbmcwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvY29udGFpbmVyX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2xhenkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcmFuZG9tX3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvZm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvb3JkZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9zaWduMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9jb21wYXJhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9iaW5hcnlfc2VhcmNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYmxpdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvc2V4cGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2luZGV4ZWRfY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL29ial9hcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS91bmlmb3JtX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9jaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2J5dGVzX3RyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludF9jb252ZXJzaW9ucy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9wb3dfb3ZlcmZsb3dfYm91bmRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3BvcGNvdW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3R5cGVfZXF1YWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL21heWJlX2JvdW5kLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL21hcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL3NldC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9yZWYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2Uvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZTAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2ludDYzX2VtdWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9pbnQ2My5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYXZsdHJlZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iYXNlL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Jhc2UvYmFzZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDE0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDNfNTAyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAyXzUwMy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAyXzUwMS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMV81MDIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMV81MDAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDBfNTAxLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF81MDAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDE0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDExLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDExLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQxMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA1Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDA1Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwMl80MDMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RsaWIva2V5d29yZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3Qvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdC9hc3RfaGVscGVyX2xpdGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3QvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0L3dhcm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0L2xvY2F0aW9uX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC1jb21waWxlci1saWJzL3NoYWRvdy9vY2FtbF9zaGFkb3cubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhfZGVyaXZlcnMvcHB4X2Rlcml2ZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvdHJhdmVyc2VfYnVpbHRpbnMvcHB4bGliX3RyYXZlcnNlX2J1aWx0aW5zLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0X3BhdHRlcm4wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvbG9jLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9jYWxsZXJfaWQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9zcGVsbGNoZWNrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdF9wYXR0ZXJuX2dlbmVyYXRlZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvYXR0cmlidXRlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvY29kZV9wYXRoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9hc3RfdHJhdmVyc2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9za2lwX2hhc2hfYmFuZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvY29kZV9tYXRjaGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvZXh0ZW5zaW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvcmVjb25jaWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvcXVvdGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9sb2NhdGlvbl9jaGVjay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL29wdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9pZ25vcmVfdW51c2VkX3dhcm5pbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweGxpYi9kZXJpdmluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhsaWIvcHB4bGliLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhfaW5saW5lX3Rlc3QvbGlibmFtZS9wcHhfaW5saW5lX3Rlc3RfbGlibmFtZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4X2lubGluZV90ZXN0L3BweF9pbmxpbmVfdGVzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcHB4X2lubGluZV90ZXN0L2NvbmZpZy9pbmxpbmVfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweF9zZXhwX2NvbnYvcnVudGltZS1saWIvcHB4X3NleHBfY29udl9saWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3BweF9lbnVtZXJhdGUvcnVudGltZS1saWIvcHB4X2VudW1lcmF0ZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliX25vX2pzb28vaG9va2VkLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi95b2pzb24veW9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdmVyc2lvbi92ZXJzaW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdXRpbHMvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy90b29scy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2pzb25VdGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvZHluYW1pY0FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbGFyZ2VBcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3N0b3AubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9zZXRNYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9tb2RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvb3B0aW9uX3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9sb2MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9wcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3ZhbE1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3Jlc3VsdF91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcmVuYW1pbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9yYW5kb21fdHJlZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3BwX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9vcGVyYXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL25ici5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL0V4Y2VwdGlvbkRlZm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9uYW1lZERlY2xzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbGlzdF91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvaW50Q29sbGVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2luZmluaXRlX2J1ZmZlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9oYXNoZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ZyYWN0aW9ucy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ZpZm8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jcmMzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NvbG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY2lyY3VsYXJfYnVmZmVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NhY2hlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvYmlnYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvYmFzZTY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy91c2VyX2dyYXBoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9zaWduYXR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9hZ2VudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvZWRnZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL25hdmlnYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL2NvdW50ZXJzX2luZm8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3Jhd19taXh0dXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9hbGdfZXhwci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vY29udGFjdF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL21hdGNoaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9pbnN0YW50aWF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wcmltaXRpdmVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9sS2FwcGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm5fY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm5fZGVjb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vbW9kZWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2thcHBhX3ByaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2NvbmZpZ3VyYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2FsZ19leHByX2V4dHJhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi90cmFjZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vY291bnRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZmx1eG1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vcm9vdHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2luc3RhbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZXhwcl9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZ2VuZXJpY19ydWxlX2ludGVycHJldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9zdGF0ZV9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vcmVwbGF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9hc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2NvdW50ZXJzX2NvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9sS2FwcGFfY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHkiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2NzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2xleGVyNC5tbGwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tsZXhlcjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tmaWxlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seSIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thbW9oYV9tcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2V2YWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2V2YWx1YXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9zdXBlcmFyZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9zdXBlcmFyZ1RrLm5vdGsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvY29tbW9uX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcnVuX2NsaV9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3Byb2dyZXNzX3JlcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9rYXBwYV9maWxlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9wcF9zdmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcGFyYW1ldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL291dHB1dHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkva2FzaW1fYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9jbGlfaW5pdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9hZ2VudF9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvdHlwZV9pbnRlcmZhY2UvcHVibGljX2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9sb2dnaW5nL2xvZ2dlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9sb2dnaW5nL2xvZ2dlcnNfc3RyaW5nX29mX29wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xhc3NpY2FsX2dyYXBocy9ncmFwaF9sb2dnZXJzX3NpZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfbG9nZ2Vycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvc3ltYm9sX3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9yZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2V4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9yZW1hbmVudF9wYXJhbWV0ZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9vZGVfYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvaGVhZGVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvZmlsZU5hbWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9nZXRfb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvdWlfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvd2lkZ2V0X2V4cG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliL2pzX3N0b3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvanNfc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2xpYi9qc19wbG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvanNfZ3JhcGhsb2dnZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2xpYi9qc19mbHV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9saWIvanNfY29udGFjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliL2h0bWxfdXRpbGl0eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliL2hvb2tlZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbGliL2NvZGVtaXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2Vhc3ktZm9ybWF0L2Vhc3lfZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3NoYXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfaW5idWYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9vdXRidWYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV92aW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfaW8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9kdW1wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9vdl9ydW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL29qX3J1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvb2JfcnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9qc29uX2FkYXB0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9lcnJvcl9oYW5kbGVycy9leGNlcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9lcnJvcl9oYW5kbGVycy9saWZ0X2Vycm9yX2xvZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wcm9maWxpbmcvc3RvcnlQcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL21hcF93cmFwcGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy93b3JraW5nX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2ludF9zdG9yYWdlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy90b29sc19rYXNhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9taXNjX3NhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9oYXNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9ncmFwaHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2RpY3Rpb25hcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy90aWNrX3N0b3JpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ncmFwaF9jbG9zdXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2F1c2FsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHJlZGljYXRlX21hcHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wcmlvcml0eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3N0b3J5X2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jZmxvd19oYW5kbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cva2FwcGFfaW5zdGFudGlhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3BvX2N1dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3BzZXVkb19pbnZlcnNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tib2FyZF9nZW5lcmF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tib2FyZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3Byb3BhZ2F0aW9uX2hldXJpc3RpY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9nZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2JsYWNrX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9kYWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy91dGlsaXRpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy91dGlsaXRpZXNfZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2Zsb3dfanNfaW50ZXJmYWNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY29tcHJlc3Npb25fbWFpbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2thc3Rvcl9tcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9kYWcyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX3R5cGVzX2oubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvc3dpdGNobWFuX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9tcGlfbWVzc2FnZV9qLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc3Rvcl9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FwcGFfZmFjYWRlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2Vudmlyb25tZW50X21lbW9yeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9mYWtlemlwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc2ltX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FzaW1fbXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc2ltX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYXNhX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYW1vaGFfY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9jb21tb25fc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlL3J1bnRpbWVfcHJvY2Vzc2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9ydW50aW1lX3dlYl93b3JrZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9zdGF0ZV9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9zdGF0ZV9wcm9qZWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9zdGF0ZV9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZS9zdGF0ZV9wcmVmZXJlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGUvc3RhdGVfc2ltdWxhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGUvc3RhdGVfdWkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlL3N0YXRlX3BlcnR1cmJhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGUvc3RhdGVfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3VpX3RyYWNrX3NpbV9zdGF0dXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX3N0b3JpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9zdWJ0YWJfY29udGFjdF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF90YWJzL3RhYl9wbG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF90YWJzL3RhYl9vdXRwdXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF90YWJzL3RhYl9sb2cubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9lZGl0b3JfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfZWRpdG9yL2VkaXRvcl9tZW51X2ZpbGVfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfZWRpdG9yL2VkaXRvcl9tZW51X2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9lZGl0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9zdWJ0YWJfY29uc3RyYWludHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2VkaXRvci9zdWJ0YWJfaW5mbHVlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfZWRpdG9yL3N1YnRhYl9wb2x5bWVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfZWRpdG9yL3RhYl9lZGl0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvdGFiX2Rpbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfdGFicy90YWJfYWJvdXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3RhYnMvcGFuZWxfdGFicy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWkvcGFuZWxfcHJlZmVyZW5jZXNfbW9kYWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpL3BhbmVsX3Byb2plY3RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aS9wYW5lbF9wcmVmZXJlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvSnNTaW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0EwT0EsU0FBU0EsbUJBQW1CQyxHQUFLLFNBQVFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksVztJLE87Rzs7STs7RztHO0ksUTtJLFE7O0k7SyxROzs7Ozs7Ozs7Ozs7d0Q7MEQ7MEQ7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0k7Rzs7STs7Ozs7O0c7O0ksc0I7Rzs7STtLLE07SyxNOztJO0k7SSxXO0ksc0I7Rzs7O0ksa0Isc0IsZ0M7OztLLE07OztPLGE7O087USxLO1EsSzs7Ozs7TztRLE87USxPO1EsSzs7Z0M7O3VDO1E7Ozs7c0M7Tzs7TztRLE87USxPO1EsTztRLEs7Ozs7O3dDO1M7Ozs7dUM7UTs7Tzs7Rzs7STtLLEs7SyxLOzs7OzRCOztJLHNCO0c7O0k7SyxLO0ssSzs7O0s7O2E7O0k7cUM7Rzs7O0ssbUI7STtJLEksaUIsbUI7OztNLE07O00sTTtLOzs7Ozs7Ozs4Qjs7Ozs4Qjs7Ozs7O00sWTs7Ozs7OzhCOzs7OztNOztJLGdEO2dCOztLLE07STtHOztJOztlO2U7OztLLE8seUI7O0ksbUIsSTtJO2MseUI7SSxJLGtCOzs7O00seUI7TTs7Ozs7SSxPOztxQixpQzs7STs7OztHOztJOzs7O0k7Rzs7STs2Qzs7Szs7TSxLO0s7SyxPOztJO0ksTztHOzRCLCtCOzs7Szs7OztJO0k7SSxZLE87Ozs7O29DOzhCO0c7O0k7O0ksTztHOztJO0k7OztJOztLLEs7O0s7Ozt5QjtJO0c7O0k7STs7OztJOzs7O2MsNEI7OztHOztJOztLOzs7STtHOztJO0k7SSx5QjttQixpQjs7STs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw2QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw2QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozt3Qzs7O0k7O0s7O007TSxzQjtLOzZCOzs7Ozs7SyxjO0s7NkI7Ozs7O0k7OztLOzZCOzs7OzhCOztJOzs7OztHOzs7SyxJOzs7OztNOzs7Ozs7TTs7Ozs7eUI7O007O007TyxLO087Ozs7Ozs7OztLOztNO08sSzs7TztrQjtrQjs7TTs7O08seUI7Ozs7TTtLO0s7TSxLOztNOztNLE07OztROztROzs7Ozs7Ozs7c0I7O1E7O2lDOztROztJO0k7STtHO3FCLHlDO29CLDhCO3NCLDhCO3FCLGtCOztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7Uzs7Ozs7aUIsVSxXLFU7Ozs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxROzs7Ozs7OztPO087TztPOzs7Ozs7O1M7O21COzs7OztpQixVLFcsVTs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJOzs7Ozs7Rzs7STs7Ozs7Ozs7OztLO00sTzs7Ozs7Ozs7OzttQzs7Szs7TSxVO00sTTs7Ozs7STs7Ozs7Ozs7WTs7Ozs7Ozs7OzthOzs7YyxPOzthLGMsUTs7Ozs7YyxPOzs7Ozs7O2MsTzs7OzthLE87OztHO3NCLE8scUI7NEIsYTsyQixhO2tDLGE7NkIsYTttQyxhOzJCLFk7MkIsWTtnQyxZOztJOzs7RztxQixpQzs7STs7Ozs7OztZOzs7OztHOztJOzs7O087USxPO08sTzs7Szs7OztLOztLLE87O0ksa0IsSTtJOztJLE87Rzs0Qiw2Qjs7O0s7Ozs7STtJLEk7O2lEOzZCO0c7O2tCLHFCLGE7O0ksYyxNLGlDO0k7OztpQywwQjs7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7SztLOzs7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7SztLO0s7Szs7Ozs7Ozs7SztLO00sb0I7Ozs7O0k7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNO007TyxvQjs7Ozs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNO007TyxvQjs7Ozs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7Rzs7STs7O0ssSSxNOzs7Ozs7STs7Ozs7O1k7Ozs7Rzt5QixPLHVCO2dDLFk7MkIsWTtHOztJO0ssTTtLOztpQjs7OztLOzs7O0s7OztJO0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7Syx5QjtLO007O08sUTs7Ozs7cUIsTztNOztPLFE7Ozs7O0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7O0ssWSxPO0s7O007O08sUTs7Ozs7TSxZLE87TTs7TztTOzs7OztHOztJOzs7OztJOztLLE07OztJO2tCOztLLFksTztLOztNOztPLFE7Ozs7O00sWSxPO007O087Uzs7Ozs7RztHOztJLFU7dUIsTyx5QztJOzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksVTt1QixPLHlDO0k7SztNOzs7SztLO0s7OztJOztHOztJLFU7dUIsTyx5QztJO0s7TTs7O0s7SztLOzs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztZSTdIQWEsTUFBT0MsR0FBVUMsR0FBVyxPQUFyQkQsTUFBVUMsVUFBZ0I7T0FDakNDO1lBQ0FDLE9BQU9ILEdBQUksT0FBSkEsRUFBSztPQUNaSTtZQUVBQyxVQUFVTCxHQUFFQyxHQUFJLGNBQU5ELElBQUVDLFdBQWlCO1lBQzdCSyxPQUFLTixHQUFFQyxHQUFJLE9BQU5ELElBQUVDLEVBQVc7O0lBSWxCTTtJQUNBQztJQUhBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztZQUVBQztJQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUxaTjs7V0FEQUQ7R0FjVTs7OztPQWxCVkQ7T0FVQVE7T0FSQUw7T0FDQUM7T0FDQUg7T0FDQUM7T0FDQUc7T0FDQUM7T0FDQUM7T0FaQVY7T0FGQUo7T0FDQUc7T0FJQUc7T0FGQUQ7OztFOzs7Ozs7OztH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RUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBS0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBSUFDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBR0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBT0FDO1lBU0F2VztZQUVBd1c7WUFFQUM7WUFFQUM7WUFFQWpXO1lBRUFrVztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBN2U7WUFFQThlO1lBRUFDO1lBRUFDO1lBQUFBO1lBSUFsYjtZQUVBbWI7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7O1lBR0ExZTs7OzthQWtDQXFmO0tBQStCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFhVjthQUVyQkM7S0FBd0I7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsbENFN1g7SUFDQThYOztJQUNBcGdCO0lBQ0F1STtJQUNBQztJQUdBNlg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLFcscUM7O0ksTzs7O0c7c0IsTyxvQzs7SSxRO0k7SSxPO0c7O0ksVzs7SyxVO0s7OztJOzs7Rzs7STs7SSxPO0c7O0ksSSx1Qzs7OztNLFk7NkM7TTs7Ozs7O0c7O0ksSSxxQjs7O2tCOzs7Rzs7STtJO0s7TTs7TTtNO2tCOzs7OztLOzs7RztHLCtCOzRCLG9CLHVCOztJLGlCOzs7STtJLEk7STs7Syw2QixtQjtpQjs7Ozs7O007OztVOztHOztJLG1DOzs7O00sWTs7TTs7Ozs7O0c7MkIsK0I7Z0MsbUI7O0k7Ozs7TTtNOzs7Ozs7Rzs7STs7STtLO007O1M7MkIsTyxrQjtTOzs7UTtNOztTOzJCLE8sa0I7Uzs7O1E7TSxxQixxQztLOzs7Ozs7UTtTO1M7UztTO1U7VSxXO1U7VTs7O1U7Ozs7Ozs7O2tCLFMsUzs7O007O0s7Szs7O0s7TSxvQyxtQjt5QixPLHNCO0s7SztLOzs7Rzs7STs7Ozs7Ozs7OztRO1MsYTs7Ozs7Ozs7OztHOzt1QixTO2dDLFM7O0k7Rzs7STtJOzs7OztPLFk7Ozs7UztTLE07Ozs7Ozs7Ozs7Ozs0Qjs7O0c7O0k7STs7Ozs7WTtRO1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJO0ksNkIsbUI7RzswQiw2Qjs7STtJOzs7OztJLGdCOzs7STs7Ozs7TTs7O087Ozs7O1UsRztXLE07Ozs7OztRLEk7Ozs7Ozs7TztRLFk7OztRO1EsSTs7Ozs7OztpQjs7Ozs7Ozs7OztHO0c7eUIsK0I7O0k7Ozs7Ozs7Rzs7SSxJLGdCOztHOztJLGM7OztJO2lCOzs7O00sMkQ7TTtLOzs7Rzs7STs7SyxNOztJO0c7dUIsbUM7MkIsa0IsYzs7STs7SSxrQjs7O0c7O0k7O0ssTTs7STtHOzJCLGtDOztJOztJLHdCO2tCLCtCO0k7Rzs7STs7O0ksRywwQjs7OztHOztJOzs7Rzs7O0k7STs7O2E7Yzs7YztjOzs7O2M7Ozs7YzthOztHOztJOzs7STtHOztJLFk7O0k7OztJOzs7aUI7STtHOztJO0k7a0I7YTtLOztNOzBCLG9COzs7UztTO1M7UTtLO0s7OztJLFE7SSxnQjt3QixrQzs7SztpQjs7SyxhO0s7STtJO0k7STtHOztJLFk7SSxrQjtzQixvQjs7SztLOztJO0k7STtHOztJLFk7SSxrQjtzQixvQjs7bUIsa0M7SztJO0k7STtHOztJLFk7O0ksUztJLGdCO3NCLGdDOztLOzs7TSxlOztLO0k7STtJO0k7OztJLFk7SSxrQjtzQixvQjtrQixlLGtDO0k7STs7O0ksUTtJLGM7c0Isb0I7a0IsMEI7STtJO0c7O0ksWTtJLGtCO3NCLG9COztLO0ssTztJO0k7STs7O0ksWTtJLGtCO3NCLG9COztLLFk7aUI7O0s7STtJO0k7OztJLFk7SSxrQix5QjtzQixvQjs7SyxJLGU7Ozs7TSxlOzs7O0k7STtJOzs7STtJLFk7SSxrQix5QjtzQixvQjs7SyxJLGU7Ozs7TSxPOzs7SztJO0k7STs7O0ksUTs7STtJLGU7c0IsZ0M7O0s7STtJO0k7STs7O0ksUTs7SSxRO0ksZTtzQixnQztrQixpRDtJO0k7STs7O0ksUTs7SSxRO0ksZTtzQixnQzs7Szs7Ozs7O0k7STtJO0k7OztJLFM7SSxlLHlCO3NCLG9COztLO2M7SztJO0k7STtHOztJLFk7SSxrQix5QjtzQixvQjs7SztjO0s7STtJO0k7O3NCLDZCOztJOzs7TTtNLFc7Ozs7TTs7O087Tzs7Ozs7OztHOztJO0s7OztLOztzQixZO0ssTztJOztLO007O3dCO007Ozs7O08sTTs7O0k7dUIsNEI7STtJO0c7O0k7Szs7O0s7O3NCLFk7SyxPO0k7O0s7O2tCOztNO087USxROzs7Ozs7STt1Qiw0QjtJO0k7Rzs7SSxZOztJO0ksSSxlOztLO2lCOztLO0k7O0s7Ozs7TyxNOztNOztLLGtCO3FDOzthLHlCLDJCOztLO0s7SztNO007OzttQjs7SztJOzBCO0k7STs7O0k7SztLOzs7eUIsUzs7VSxNO1M7SyxPOzttQzs7bUM7c0IsUzs7Szs7O0ssMEI7O0k7STtJO0k7Rzs7SSxTO2E7SSw0QiwwQjtzQixpQzs7Szs7O00sZTs7SztJO0k7STtJO0c7O0ksUzthO2E7STs7OztLO0s7SztzQiw2Qzs7Szs7O00sZTs7SztJO0k7STtJO0k7Rzs7SSxTO2E7YTthO0k7Ozs7O0s7SztLOztLO0k7O0s7OztNLGU7O0s7STtJO0k7STtJO0k7Rzs7SSxTO2E7YTthO2E7STs7Ozs7O0s7SztLO0s7O0s7STs7Szs7Ozs7Ozs7Ozs7OztNLGU7O0s7STtJO0k7STtJO0k7STtHOztJLFM7YTthO2E7YTthO0k7Ozs7Ozs7SztLO0s7Szs7Szs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7OztNLGU7O0s7STtJO0k7STtJO0k7STtJO0c7b0IsdUIsYyxNOztJLGdCLHdCLFM7Ozs7Szs7ZSxZOztlO2M7Ozs7SSxRO0ksYztzQixnQzs7SztnQjs7aUI7O0s7STtJO0k7STtHO0c7O0k7Ozt1QyxTO0ksd0I7a0IsdUIsTzs7Szs7SztLO0s7SyxPO0k7STtHO3VCLGM7O0k7STs7STs7O2E7YSxHLDJCOztjOzs7YztjOzs7O2M7Ozs7Yzs7OztHOztJOzs7STtHOztJLG1COztJO0c7O0k7Ozs7Z0IsTzs7O0k7Rzs7SSxtQjs7O0ksd0I7O0ssTTsyQiwwQjtJOzs7STtJOztvQyxPOzs7Ozs7STtHOztJO0k7a0I7a0Msa0I7Szs7TTtNO00sb0Isb0I7OztTO1M7UztRO0s7Szs7O0k7Szs7TTs0QixxQjs7O1MsYTtTOztRO0s7Szs7SSxnQixlO3dCLGtDOztLLEksZTttQyxHLDRCO0ssYTtLO0k7STtJO0k7Rzs7STtJLFk7SSxrQjtzQixvQjs7SztpQjs7SztJO0k7STs7O0k7SSxxQyxXO0ksa0I7c0Isb0I7a0IsZSxnQztJO0k7OztJO0k7O3FCOztLLFc7Ozs7Szs7TTswQixxQjtzQixlLGlDO0s7Szs7SSxnQjt3QixpQzs7SztLLGU7STtJO0k7STtHOztJO0ksNkIsTztJLGM7c0Isb0I7O0s7SyxPO0k7STtJO0c7O0k7STtLOztNOzBCLG9COzs7UyxZO3FCOztTO1E7SztLOztJLGtCLFE7Z0I7O0k7OztJLG1CO0ksa0IseUI7c0Isb0I7O0ssSSxhOztNLE07OztLLGU7STtnQyxpQztJO0k7OztJLG1CO0ksa0I7c0Isb0I7a0IsZ0M7STtJO0c7O0k7O0ssd0IsTyxxQjs7O0ksUTtJLGU7c0IsaUM7O0s7aUI7O0ssZTtJO0k7STtJOzs7STtJOztJO0s7O007MEIscUI7c0IsdUM7SztLOztJLGU7d0IsaUM7b0IsZ0Q7STtJO0k7Rzs7STtJLFE7O0k7Szs7TTswQixxQjtzQix1QztLO0s7O0ksZTt3QixpQztvQixnRDtJO0k7STtHOztJO0ksUztJLGU7c0Isb0I7O0s7aUI7O0ssZTtJO0k7STtHOztJO0ksWTtJLGtCO3NCLG9COztLO2lCOztLLGU7STtJO0k7OztJO0k7SyxtQjs7Szs7STtLLG1COztLOztJLG1CO3NCLGlEOztLO00scUMsTzs7TSxPOztLLGU7STs7SyxtQjs7SztJO0k7STtHOztJO0kscUM7STs7SztLO0s7O0s7d0I7O0s7STs7Szs7O3lCOztNOzs7Z0Q7Szs7O00sb0I7TTtNOzs7Szs7TTtNO007OztLO0s7OztJO0k7STtJOzs7STs7O3dDOzs7Rzs7STs7SztLO21CO0s7SztLO0k7STtLO0s7O29DLFMsbUIsUztLLE87OztLOzs7MEIsUztzQix3QjtNO0s7Szs7O21DO3dCLFM7b0IsZ0M7STtJO0k7STtHOztJO0k7O29DLFc7Szs7TTswQixvQjtzQixlLG1DO0s7Szs7OztLOztNOzRCLHFCO3dCLGUsc0M7SztLOztJLGU7d0IsaUM7O0s7SyxlO0k7STtJO0k7Rzs7STtJOzs7O3NDLFc7Ozs7Ozs7O087O1E7UTtROzRCLDZDOzs7VyxJLGlCO1csZTtVO087TztPO087Ozs7STs7O3dDOzs7OztHOztJO0k7Ozs7Ozs7O1EsVzs7Ozs7Ozs7Ozs7O1E7O1M7UztTOzs7WTtXOzs7WSxJLGlCLGlCO1ksZTtXO1E7UTtRO1E7UTs7Ozs7STs7O3dDOzs7Ozs7Rzs7STtJOzs7Ozs7Ozs7O1MsVzs7Ozs7Ozs7Ozs7Ozs7O1M7O1U7VTtVO1U7OzthOzs7WTs7O2E7YztjO2M7YztjLEk7YTtZO1M7UztTO1M7UztTOzs7Ozs7STs7O3dDOzs7Ozs7O0c7O0k7STs7Ozs7Ozs7Ozs7O1UsVzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7O1c7VztXO1c7Vzs7O2M7Ozs7O2E7OztjO2U7ZTtlO2U7ZTtlLEk7YzthO1U7VTtVO1U7VTtVO1U7Ozs7Ozs7STs7O3dDOzs7Ozs7OztHOzZCO2dDO21CLDBDOztJOzs7OztHOztJOzs7OztHO29CLG9COztJLG1CO0ksa0I7c0Isb0I7O0ssVztLO0k7STtJOztvQix5QjtvQix5Qjs7SSxZOztJLDBCO0k7c0Isb0I7a0Isb0Q7STtJOztnQzs7SSwwQztHOztJLDBDO0c7O0ksMEM7Rzs7STs7a0M7OztHOztJOztrQzs7O0c7O0k7Rzt3QixvRDttQiwwQztHLEksMkI7O0k7Z0Q7Rzs7STtnRDtHOztJO2dEO0c7b0IsMEM7O0k7Z0Q7Rzs7STs7a0M7OztHOztJO2dEO0c7Z0M7O0ksMEM7Rzs7STtnRDtHOztJO2dEO0c7O0k7Z0Q7Rzs7STtnRDtHOztJOztnQzs7O0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7cUIsd0Q7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0k7O2dDOzs7RztvQix1RDtvQix1RDtvQix1RDs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSw2QztHOztJO0c7O0k7Rzs7STtHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7RztJO0k7STtJO0k7STs7STtJLG9DO0c7O0ksK0IsaUI7Rzt1QiwrQixvQjt1QiwrQixvQjtHOztJOztLOztNOztTOztVLE87O1MsTTtROzs7O0ksK0IsYztHOztJO0k7O2lDOzBEOztLLCtCO0ssZTttQjtLO007MEIscUI7OztTO1M7O1E7SztLOzs7Ozs7O00sbUMsUzs7Syx1Qjs7TTtPOzZCLHNCOzs7VTtzQjs7VTtTO007TTs7SztNO00sc0Isc0I7OztTO3FCOztTO1E7Z0Msb0M7OztTO1M7OztVOzs7VTtTO1E7SztLO0s7Ozs7O0s7OztlLFk7O2U7Yzs7O0ksdUI7d0Isb0M7O0s7aUI7O0s7STtJO0k7STtHO0c7OEIsOEM7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O2dDOzs7Rzs7STs7Z0M7OztHOzs7dUIsNEI7MkIsZ0M7MEIsMkI7eUIsOEI7dUIsNEI7O0s7SyxxQjtJOztLO0sscUI7STsyQiw4Qjs7SztLLHFCO0k7MEIsK0I7O0s7SyxxQjtJOzZCLGtDO3lCLDRCO3lCLDhCOztLO0sscUI7STsyQixnQzsrQixvQzttQyx3Qzs7SztJOztLO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJSS9oQ1EsSUFuQlJpRCxjQUNBQyxrQkFDQUMsaUJBaUJBQzthQUVBQyxPQUFPQztLQUNUO01BQXlCLFFBQUE7TUFBUEM7TUFBZEM7TUFDQUMsY0FGS0g7bUJBR29CSTtNQUN6QixTQUR5QkE7V0FH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QUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7Ozs7T0EwSkU2b0c7T0FDQUM7T0FFQUM7T0FJQUM7T0FJQ0M7T0FVREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FNQUM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FHQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQUM7T0FVQUM7T0FJQUM7T0FJQ0M7T0FTREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FFQ0M7T0FTREM7T0FJQUM7T0FJQUM7T0FVQUM7T0FJQUM7T0FJQ0M7T0FVREM7T0FDQUM7T0FFQUM7T0FJQUM7T0FJQ0M7T0FRREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQ0M7T0FNREM7T0FDQUM7T0FFQ0M7T0FLQUM7T0FLREM7T0FDQUM7T0FDQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMENENWxHO09BWUEyYjtPQUNBRTtPQU9Bblg7T0FDQUU7T0FDQWloRztPQUlBQzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLEksTzs7OztJO0ssSSxPOzs7Ozs7Ozs7RztJLE07SSxNO0ksTTtJLHNCO0ksTTtJLE07SSxNO0ksb0I7Ozs7Ozs7Ozs7OztJO0s7TSxXO007O1MsUTt1QztTO1E7TTtROztNLGE7TSxjO00sVTtNLE87Ozs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0k7Ozs7OztJOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0Isc0I7RyxxQixzQjtHLHNCLHNCO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7O3lCLE87O3lCLE87O3lCLE87Ozs7OztLLE87O0k7SSxPO0c7O0ksWTtnQjs7STs7OzsyQjttQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0IsZ0I7SSxPO0c7O0ksVTtJO0s7ZTs7O2lCOzs7bUI7bUI7STtJO0ksTztHOztJLFU7O0s7Szs7TyxXO00sSSxJLDJCOzs7Ozs7WTtZO1c7NkI7UyxPO1E7UyxNO1M7Ozs7WTs7WTs7WTs7USxPOzs7c0MsTztNO00sSTs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssZ0Q7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7OztLLFk7Ozs7eUM7O0s7O1E7SyxPO0k7STtLO00sTTtNLE07Ozs7MkI7OztjO0k7Ozs7SztPOzs7O3VDO0ksVztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7eUIsTSw0QztJLE87Rzs2QixPLG1DOztJOzs7a0MsTztJOzs7eUMsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07O0c7O0ksUztJOztJLE07Rzs7eUIsbUQ7SSxPO0c7Rzt5QixrQixvQjtJLGE7STt5Qix3QjtJLE87Rzs7SSxTO0ksNEI7SSxXO0c7O0ksWTtJLGtDLE07STs7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7Rzs7SSxZOztJLE87OztJO0ssTTs7bUI7STs7Szs7O0k7Rzs7STtJOzs7Z0I7SyxnQyxJO0ssWTs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7STtnQixXOzs7TSxNO0s7OztNLEk7TTs7Ozs7Rzs7STtJO2UsVzs7aUI7Syw4Qjs7Rzs7STtJO21CLFc7O00sTTtLOzs7TTtNOzs7OztHOztJO0k7OztnQjtLLGtDLE87SyxXOzs7Rzs7STtJOzs7TSxHO087UTs7Ozs7OztLLFc7O0c7O0ksUSxPOztJLE87RztHOztJOztLOztJO2lCO0ssRyxxQztLLEk7O0c7O0k7STtpQjtLLEssNEI7SyxJOztHOztJO0s7OztTLFk7O1M7UTtNLFc7Szs7Ozs0Qjs7O0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxHLDZCO00sSztPO08sTzs7OztJOztJO2lCLE07Szs7O00sb0I7SyxHLGdDOzs7Rzs7SSxJLFE7STtpQixNO0s7OztNLFc7TSxZO0ssRyxpQztLLEcsZ0M7OztHOztJO0s7TSxPO00sYztLOzs7O2dDOzs7Rzs7SSwwQztLOztRO0ssTzs7STtHOzs7O0k7O2M7O0c7O0ksVTs7SztLLE87STtJO0k7Rzs7SSxXO0k7SyxRO0ssWTtLOztHOztJLEksTztJO2dCO0s7TSxPO00sSTtLLFksTTtLOzs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7STtLLE87SyxXO0s7Tzs7O0ksSSxVOzs7SztLO0ssTTs7STtJLEksa0Q7OztLO0ssTTs7Rzs7SSxjO3lCLE8sdUI7SSwrQiw2QjtJO2lDLE8sZ0M7OztHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSw4QztLLE87bUIsc0I7SSxPO0c7O0k7SSxxQztHOztJO0kscUM7Rzs7STs7Rzs7STtJLHFDO0c7O0k7SyxVO0ssVztJO0s7TSxNO00sYTs7O007UTtXO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1E7TSxJOzs7O0c7O0k7STtLLEk7Ozs7TTtPO1M7Ozs7O08sTztNLE87O0s7TSxTO3NCO007Ozs7Rzs7STtJO3VDO0ssVzs7Ozs7OztNOzs7OztPOztTLFc7USxXOzs7OztRLEk7Ozs7TTtPO08sWTs7Ozs7SyxJOztHO3VCLHdCLFM7O0ksWTtnQjs7OztHOzBDOzBDOzBDOzBDOzBDOzBDOzBDOztJOztLLE07SztLOzs7O00sVztNO007Ozs7O0k7SztLLE87STtJO0c7O0k7O0s7SyxPOztHOztJOzs7SSxPO0c7O0k7OztJLE87Rzs7SSx3Qjs7OztNO007Ozs7OztHOztJLHdCOzs7O00seUI7TTs7Ozs7O0c7O0k7Ozs7TTtNO007Ozs7OztHOztJOztLO2M7Szs7O0k7SSxPO0c7O0k7STtJO0c7Rzs7Ozs7Ozs7Ozs7OztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7MEIsTyxxQztJO0ssUTtLO0k7SztpQjtLLHFCOzs7OztJLE87Rzs7STtJLGM7a0I7STtLOzs7O0ssTztJLE87Rzs7STtLLE07SztPOzs7OztJLFc7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7OEIscUI7MEIsNEI7O0k7Ozs7Ozt1QixNOztJO0c7Rzs7STtLLFk7Ozs7STtLO007O007Ozs7NkIsTzs7OztJOztLOzs7UztVO1c7O1U7Ozs7aUMsTzs7Ozs7OztJO0k7STtHO0c7O0k7STs7OztHO0k7O08sSSxJLE87Ozs7OztPLFc7TztRO1MsTztTLGM7OztPOztPO2U7O0c7O0k7O0s7Szs7Ozs7OztJO0c7Rzs7STtLLEk7O0s7Ozs7Z0I7TyxXO087O007Ozs7O0ksTztHOztJOztLLE07OztJOzs7TSxROztPO087UTs7Ozs7Ozs7OztPOztRLGU7Ozs7Ozs7Ozs7O087TztROzs7Ozs7TTs7OztROzs7VTtROzs7Ozs7Ozs7Ozs7SyxPOztHOztJO0k7O0s7SyxPLGdDO0k7STtLLG1CO0ssVzs7Ozs7O087UTs7Ozs7Ozs7OztJOztLOzhCO21EO0ssTzs7Ozs7Ozs7STtJO0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7OztLLGU7Szs7OztNLE87TSxPO0ssVztJO0ksTztHOztJLFk7STtHO0c7c0IsaUI7RztJLE07SSxNO3NCLGlCO0c7SSxNO0ksTTtJLFk7O0k7Ozs7Ozt5QjswRDswRDswRDswRDs7Ozs7OzswRDs7MkQ7MkQ7MkQ7MkQ7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTztrQjtRO0ssTzs7OztJO0ssYTtLO087SztnQjs7SSxJLGM7Z0I7STtHOztJLGE7SSxJOzs7OztJLGE7Rzs7SSx5QztJLE87OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztLLEcsdUM7SztNO00sTTtNO1E7Ozs7O0ssTzs7O0ksRyx5QztJO0s7SyxRO0s7Tzs7Ozs7SSxPO0c7O0k7STtLOztRO1U7Szs7ZSxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7TSxJO0ssaUI7Ozs7SyxPOzs7Szs7O00sTTtNLFU7SyxPOzs7Szs7Ozs7TSxNO0s7Ozs7SyxPOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sTztLO0ssTztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVOztNO00sVztLO0ssZTtJOzs7TSxPOzs7Z0IsTzs7ZTs7SztLLE87STs7O0s7SyxPOztzQyxPLDZCOzs7STs7SyxVO3VCO0ssTztJOzswQixPLG1CLHVCO0ssTztJOztLLE87O2dDLE8seUI7OztJOztLLE87OztlOztnQixJLFk7Ozs7OzJCOzs7MEI7O2UsTztjOzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7dUIsTywrQzs7UyxPO1E7OztVLE87OztvQixPO21COztTO1MsTztROztTLE87UTs7Uzs7b0IsTztTLGMsTTs4QixPLHdCO1MsTztROztTLFU7UyxlO1E7UTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UyxPOzs7bUI7a0I7OztROztTLFE7O1U7VSxPO1M7UztTO1E7MkIsaUQ7O1MsUSxtQjs0QixPLDJCO1M7UztROztTLEksVSw0Qjs7OztVLFE7VTtVOztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsaUI7MEIsTyx5QztvQixTO3dCLHVCOzs7Ozs7Ozs7Ozs7Ozs7STtJO0ksTztHO3lCLE8sOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7O0ksMEI7SSxPO0c7c0IsUztHOztJLDhCO0ksTztHO0c7STtNLHVCO0k7TTtROztJO1c7Yzs7SSxPO0c7d0IsUzs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTLFU7UyxrQjtTO1UsUyxXOzs7VSxJLGE7Ozs7VyxJLFk7OztZLE07O1c7O1UsYTs7O1ksTTs7Ozs7VyxVO1csSSxZOzs7WSxNOztXOztjOzs7OztXLEksYzs7O1ksTTs7Vzs7VSxNO1M7UyxhOzs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNCO0ksVTtJLE87Rzs7STtHO0c7STtJOztJO0k7STtJO0k7O0k7STtJO0k7STtJO0k7O0k7OztJO0c7Rzs7STs7Ozs7Ozs7OztJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7STtJO0k7STtJOztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtLOzs7O0s7O2U7OztLLFU7Yzs7O0k7STtJO0k7STtJO0k7STtJO0k7STs7OztHO0c7STtJOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7STtJOztJLEc7O0ksTTtHOztJLFU7STtLOztNLG9CO00sbUI7TTs7Ozs7OztHO0c7STtJO0k7OztROzs7Ozs7Tzs7UTs7Vzs7VzttQjs7Tzs7O0k7STs7O1E7OztPO3VCLDBDOzs7STt5QixPLHNDOztJOztPOztPOztPO2U7O0c7O0k7Ozs7Ozs7OztHOztJOztPOztPOztPO2U7O0c7dUMsUztxQywyQjs7STtLOztNO007Szs7STtLLE0sVztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztlO21COztTO1E7TSxLO0s7TTs7TztPLFE7Ozs7O1c7Ozs7Ozs7RztHOztJO3lDOztnQjtJLHFCO0k7RztHOztJO0c7O0k7SSxrQjtJO0ssZTtLOzs7RztHLEksbUI7O0k7OztHOzs7SztLO00sVztNO007TSxVO007Ozs7O29COztPOzs7STtJLE87Rzs7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHLEksOEI7O0k7OztHOztJO0ksSSwrQjs7OztLLEksVTs7OztNO08sYTs7Ozs7O0s7Ozs7SztNLGU7TTs7OztJOztLOzs7UztTO1U7VTs7UyxPOzs7OztRO0ksTztHOztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7O0ksSSwrQjs7Z0M7SyxvQjtLLFc7O0c7OztLO007Ozt3QjtNO0ssTztJOztLOztNO1E7Ozs7O08scUI7TyxPOzs7Ozs7O0s7STtJO0c7O0k7MEIseUI7SSxROztLOztJO0ksVzs7OztLO007TTtNOzs7UyxtQjs7O1E7Szs7O1E7O0k7O0s7Ozs7OztNOzs7O2tCO00sUTs7O007O0s7STtJLE87Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjs7TTs7K0I7Ozs7K0I7OztNO007OzZCO0s7SyxXO0k7STs7Ozs7MEM7OztJLFc7STs7O007TSxPOzs7ZSw2QjtLO0s7SyxPOztJO0k7Szs7TSxlLGlCO007O1csaUI7VztLOztJLGE7Ozs7TTs7TztNO08sZ0M7TTtLO0s7SyxPOztJOzs7O007SztLO00sTSxXO00sUTs7O3FCLFM7SyxHO00sVTtNOztLLFU7dUI7SyxPOztzQjtJLE87RztxQjtHO0ksZTtJLE07SSxjO3FCO0c7SSxjOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztJOzs7Ozs0QiwwQjs7STtLLE07OztLOztlOzs7Ozs7STtJLE87Rzs7eUIsTyx5QjtJO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Szs7TSxnQjs7O0s7STtJLFk7O0k7Rzs7STtLLE07OztLOzs7STtJOzt5QixpQztLOzs7STtJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJLFE7SSxjOzs7Ozs7O29CLFk7dUIsWTs7STtLO00sTTtNLE07Ozs7Ozs7O0ksaUI7RztHLFc7O0ksbUI7SyxNO0k7STs7O0c7dUIsMkM7O0k7Rzs7STs7SyxTO0s7SyxVO0ssTztJO0ksTztHOztJO2M7O0c7O0ksbUI7SyxNOztvQixPLHdDO0k7SyxXO2lCOzs7OztVOzs7OztHOztJLG1CO0ssTTs7O0ssUztZO007SztNLFE7TSxVOztlOztJO0k7OztHO3lCLHdCOztJLG1CO0ssTTtJO2M7O0c7O0ksTyxrQjtHOztJLG1CO0ssTTs7SyxPO0k7SSxPO0c7O0ksbUI7SyxNOztLLFU7SyxPOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksSSxJLE07Ozs7OztJO007UyxzQztLO0k7Rzs7SSxXO0k7Rzs7STtpQjtHOztJO2lCO0c7O0k7STtJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SztLO0s7O0ksVTs7SyxNO0k7RztpQyxrQixTOztvQixPLGdDO0k7SyxRO0ssUztLLEk7O2U7Szs7VTs7Szs7STtLLFE7OztvQixPLHlDO0k7STt3QixPLG1DO0k7SSxPO0c7O29CLE8sZ0M7SSxZO29CLE8sOEI7SSxZO0k7Rzs7SSxZOztJLE87Rzs7STs7O1E7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssOEI7SyxNO0ssTTs7O0sscUI7Ozs7OEI7Ozs7Ozs7OztROzs7O0k7OztTOzs7Ozs7Ozs7Ozs7O0ksRztLLFE7SztNLFk7TSxHLDRCO087TTtPLFU7Tzs7O2dCLDJCOztJO0c7O0k7SSxxQjtJLG9COztLO0ssZTs7O0ssTTtJO0s7Szs7Uzs7SyxVO0ssZTs7STtHOzs7Szs7Ozs7OztXLEssNkM7VztZO1k7Yzs7Ozs7WSxNO1ksVTtXLEksVSxtQzs7O2tDOzs7VTttQixXOztNOzs7VTs7O2E7dUI7VztZO2M7Ozs7OzhCLHlCO1csTzs7VTtTO087cUIsVztPLCtCO08sTTs7Uzs7O007TztPLE07TyxNO08sOEI7TyxNOzs7Ozs7Ozs7Ozs7O1UsTTs7OztTOzs7SztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO0k7SSxJOztJO3dCLE8sNEM7SSxPO0c7Rzs4QixPLG9DOztJOztLLE07OztPLHVCLDZDO087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO0k7OztRO1E7OztJOztJLE87RzswQixrQjt1Qix5Qjs7STs7SztNOzs7O0k7Rzs7STs7SztNOzs7O0k7Rzs7STtJOzthO2E7YSxJLFEsa0IsZTs7O2M7YyxNOzs7Rzs7STtLO007Ozs7Z0I7OztJOzs7Ozs7OztHOztJOztLLFk7O00sTTs7SztNLFE7TSxVOzs7TztROzJCLG9CLDBCO08sa0IsTzs7Tzs7Ozs7OztVO1c7OztXLHNCO1U7VyxPOztVOztTO1U7OztVLHNCO1Msa0IsTzs7Uzs7OztVO1c7OztXLHNCO1U7VyxPOztVOztTO1U7OztVLHNCO1Msa0IsTzs7Uzs7SyxNOztJO3FCOztLO0s7O08sWTs7Ozs7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7TyxTLEk7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TztPLHNCO00sTzs7Szs7OztNLE87Ozs7TztPOzs7Ozs7STs7SztNLE07O0s7SztNO007MkM7YyxvQztPO1E7Z0M7Ozs7Szs7TTtNOztRLE87TyxZOzs7Ozs7OztTO1U7VSxtQjs7Ozs7OztVLEk7VTtXLE87OztVOzs7Ozs7WSxJO1k7YSxPOzs7WTs7O1ksSTtZO2EsTzs7O1k7OztPOztLOzhCOztNLG9DO00sVzs7O1EsSTs7O1M7eUI7O21CO3NCO1U7Vzs7O3NCOzs7Ozs7UTs7O1M7UTtTLE87O1E7Ozs7TztRO1EsZTtPO1EsTzs7Tzs7TTtLO0s7SztLO007O1MsTzs7UyxPO2lCLE87OztLO00sc0IsVztNOztLOzs7O087O007O0s7TTtROzs7TTtLLDBCO0s7OztNO007SztNOztPLFc7TyxPO007TTs7UztNLDBCO0s7O007Tzs7O2tCOztrQjs7Ozs7O1EsTzs7TztRLFk7O08sTzs7TSxPO0s7Szs7TSwyQixzQixXO00sTztNO1E7O0s7STtJOzs7O0s7OztZOzs7SztNO1E7TSxVO007Ozs7Tzs7Ozs7Ozs7OztVOzs7Ozs7Ozs7VTs7Ozs7OztJOztJO0c7RztHOztJLE87Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7TyxXO08sTzs7OztRLE07O1E7UyxPO1MsTztRLE87O087O1EsTztPLE87Ozs7USxNOzs7O1EsTzs7Ozs7OztPLFc7TyxPOzs7O2lCOzs7Tzs7USxPO08sTzs7OztRLE07OztROztTO1c7Ozs7OztRLE87O087UTtVOztRLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7MkI7O087O1EsTztPLE87OztPLE87OztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87Ozs7O1UsVztVLE87O1U7a0I7VSxPOztVOzthO1UsTzs7O087Ozs7UTtRLE87USxPO087O1UsTzs7VSxPOzs7VSxPOzs7Ozs7UTs7UyxPO1MsTztRLE87OztRLE07TztRLE87USxPO1EsTztRLE87TyxPOzs7O1E7Ozs7UztXOztTLE87UyxPO1MsTztRLE87Ozs7USxNO087O1E7VTtRLE87USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxPO1EsYTtPLE87Ozs7USxPOztPLE87OztPOzs7O08sa0I7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOztRLFM7TztRLE07OztRO1MsTztpQjs7b0I7TyxPOzs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7Rzs7SSxtQjtJO0ksSSxvQixtQixlO3lCLHlDO0ksWTs7Ozs7O2tDOzs7O2dCOztJO0c7O0k7Ozs7OztnQjs7O2tCOzs7Ozs7OztROzs7STtJLGM7Ozs7Ozs7Ozs7Ozs7STtHO0c7K0IseUI7O0k7OztJLE07Rzs7O0s7SztNOztPLE87Yzs7O0ssTztJO0k7STs7O0ssSSxJLCtCOzs7TztRLE87USxPO1EsTztPOzs7TyxjLE87Tzs7SzttQixPOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OzsrQixPLGtDO1E7O1M7O1M7OztTO1UsUTs7O1UsTTtTO1UsTTs7UztROztTLEkseUM7Ozs7VyxPOzs7UTs7UyxJLHlDOzs7O1csTTs7O1E7O1MsTztROztTLE87UTs7UyxJLE0sZ0Q7O1U7VztrQjtZO1c7Ozs7aUM7OztTO1MsTztROztTOztVO1c7a0I7WSxNO1c7Ozs7O1ksTzs7O1M7UyxPO1E7O1M7O1U7VyxVOzs7UztTOzs7VTtXLEs7Vzs7UztTLE87UTs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztVLFM7VSxXO1UsSTsyQjtTO1UsUTtVO1U7VTs7OztXLG1CO3FCO1c7Ozs7Ozs7VTs7VyxJLEksTTs7OztvQjs7VztVO1UsTztTO1M7VSxnQjs7VSxTO1UsUTtVOztVO29CO1U7VTtVOztVOzs7UztTLDBCOzs7O1c7Vzs7Ozs7Uzs7O1UsYTs7O1c7O1c7VTtVLE87UztTO1M7VSxXO1UsYTtVOztVO29CO1U7O1U7VTtVLE87UztTOzs7O1c7O1k7OztXOzs7OztTOztVLDhCO1Usa0I7O1U7Ozs7O1U7VztXOztXO1csTztVO1U7VztVO1M7UztTOztZOztVO1csTTs7O1c7WTs7NkIsK0M7VyxlOztVO1c7VztXO2E7OztVO1M7UyxPO1E7O1M7MkI7UyxPO1E7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DOzs7SyxNOzs7O1Esa0Q7USxPO087O3dCLFM7d0IsUzs7b0IsYzswQixPLDRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsUzswQixTO3NCLGM7O0ksTztHOzs7O3lCO3lCO3lCO3lCOzhCOzhCOzhCOzhCOzhCOzhCOzs7Ozs7Ozs7c0I7MkI7MkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7O0c7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7O087Ozs7VyxRO1csTztVO1E7VTs7USxNO08sTzs7O08sTzs7MkIsTzs7RztHOztJOzs7O0ssTTs0Qjs7Ozs7UTs7OztJO0ssMEIsMEIsSTtLLE87O0c7O0k7STsyQjtLLFE7VztLLEk7O0c7O0k7eUIsTyw4QjtHOztJLFU7STtJO0c7O0ksTyx1QjtHOzZCLHdCOzs7STtjO2M7Ozs7STtjO2M7OztJLEksNkIsUTs7SyxNOytCOztJO0c7OztJO2M7Yzs7O0k7OztHOztJLFk7Z0IsTTs7STtHOztJO0k7Rzs7O0k7Ozs7Ozs7O2tCO0s7O0k7Rzs7O0s7aUM7STtJO0c7Ozs7OzBCLDRCO3lCLE8sdUM7Ozs7Ozs7a0I7Szs7STtHOzs7STs7YztjLE87YTs7Rzs7STtJO0ssVTtLLFU7SyxVO0ssVTtLLFc7Ozs7Ozs7Ozs7Ozs7O007TTtPO08sVTs7Ozs7Ozs7Ozs7TyxNOzhCOztNLEk7Ozs7Ozs7MEM7Uzs7Ozs7OztNO087TztPO087Tzt5QjtPOzs7VTtXO1c7Ozs7VztZO1k7WTtZOzs7VTtTO08sZ0I7Tzs7O1ksWTs7WTtXOzs7Tzs7Ozs7O1E7O1E7UTs7O1c7O1k7O1ksUztZO1c7VTtvQjs7O007Tzs7VTtXO1c7c0I7O1U7O087O1U7VztXO1UsTzs7TTs7OztPO087UTtRLDRCO087TztRO1EsVTtPLEc7USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0IsTztpQjs7d0I7O1k7b0I7O3NCO2lDO1c7OzhCO087Ozs7WTtZLE87VztXLE87O087Ozs7O007TTtPO08sSTs7Ozs7Ozs7OztPLFU7Ozs7Ozs7Ozs7UTtTO1M7UztTO1M7UztTO1EsRzs7O1M7VTtnQztVO1M7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7O1M7VTtVOzs7YTs7YztjOzs7YztjOztjOzs7OztjOzs7OzthOzs7Ozs7OztZO1UsVztTOzs7VTtXOzs7OztjO2M7Ozs7Ozs7O2E7d0I7O1E7Ozs7VSxNO1M7O1U7O1c7VztXOzs7Yzs7ZTs7ZTs7ZTtjO2E7O3FCOzs7Ozs7UTtTOztZO3dCO1k7Ozs7YTtlOzs7WSxXOztTOztZO1ksTzs7UTs7TyxNOzJDOztNLE07MkM7OztJLE07Rzs7STtLO00sSzs0QixhOzRCLE8sMkI7TSxJOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7RztzQixtQjs2QixtQjs2QixtQjt1QixjOztJOzs7MkI7O3lCLE07OztPLEksVTs7OztRLE07Ozs7OztHOztJO0k7aUI7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOzt5QixXOzsyQixXOztPOzs7O1EsTztPLFc7O087Ozs7USxPO08sVzs7OzBCLDRDOztzQix5QjtJLE87Ozs7Rzs7cUIseUI7SSxPOzs7O0c7O0k7Rzs7STtHOztJO0c7cUIsdUI7O0k7STtJO0k7Rzs7STtLO0s7STtJOzs7Rzs7STs7O0ssTTtLO087O0s7O1E7Ozs7O0k7O0k7SztNO007TTs7TTs7OztPLG9COzs7Ozs7OzthOzs7Ozs7WTtTO1M7Ozs7O087Ozs7OzswRDs7Ozs7UTtTOztPO08sTztNO00sTztLO0s7TTtNO007TTs7OztPOzs7O1M7Ozs7Ozs7O2lCO2tCO2tCLE07a0I7aUI7Ozs7OzBCOztnQjtnQjtlO1k7Ozs7Ozs7OztnQjtpQjtpQixNO2lCO2dCOzs7Ozt5Qjs7ZTtlO2M7Vzs7Ozs7WSxPOzs7Ozt1Qjt1QjsrQjs7c0I7c0I7cUI7VztXO1ksa0IsYztZO1k7WSxrQixjO1k7WTs7Vzs7Ozs7aUIsWTs7O2tCOzs7aUI7Z0I7Z0IsTzs7ZTtlLE87O2M7WTtjO1k7O1c7WTs7O2U7Ozs7O2dCLFE7ZTtjO1k7O2U7O2lCOzs7Ozs7O2tCO29COzs7aUI7Ozs7OztlO2M7VyxNOztTOzs7OztPOzs7Ozs7O0c7O0k7SztLOztLOzs7O00sc0I7Ozs7UTs7Ozs7Ozs7O1E7Uzs7Ozs7VTs7Ozs7UTs7Ozs7TTs7Ozs7OztLLE07Ozs7Z0M7Szs7TSxNOztLOzs7Ozs7O0ssSTs7Rzs7O0ssVTtLO0k7STtJO0c7O0k7O2tCOztJOzs7Ozs7VyxZO1c7VTs7Ozs7OztXO1ksUTs7OztXO1U7Ozs7Ozs7VztZLFE7OztZO1c7VTs7STtJO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSx5QjtJO0c7Rzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STt5QiwrQjs7STs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxHO0s7TSxPO2tDOzs7STtLO0s7TTtPLE87TyxNO00sRyw2QjtNLEs7TyxHO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7SyxPOzs7OztLO0k7SyxpQztJOztLLGE7SyxPO0k7STs7Ozs7Ozs7Ozs7O0k7SztLOztJO0k7SztLOztLO0s7OztLO0s7Ozs7O0k7SztLO0s7O0ksTztHOztJOzs7NkIsTyx5QztJLE87Rzs7O0s7OztNLE87TSxjO0s7STtJLE87Rzs7STtLOztrQixNO0ssSTs7OztpQjtPOzs7OztLLFc7MEIsTTtLO0s7SztLO0ssdUM7Ozs7a0I7O2dDLG1DO08sRztROztnQyxtQztPLEc7UTtPLFE7Tzs7Tzs7Ozs7SztLO0ssVztLOzs7OzRCOzs7Rzs7STtJO0s7SztLO0ssSTs7SztNLFc7TTs7Ozs7STtJOztNLFk7OztPO29COztPOzs7TTs7OztHOztJO3VCLHFCO0ksTztHOztJOzs7Szs7SztNLE87TSxjOzs7STtHOztJOzs7Ozs7Ozs7Ozs7Szs7Ozs7aUI7SztLLFc7SyxJLG9COztNOztPO007SztLLGdCOztNOzs7Ozs7O00sTzs7O0s7SztNLE87TSxPOztNO00sbUIsMkI7TTtNLE87SztLLFUsVzs7TTtNOztROztPOzs7TyxNOzt3Qjs7TTtLO0s7TSxROzs7SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7O007Ozs7Ozs7Ozs7TSxXOztNO087USxNO1E7O1csSSxlLDhCOzs7b0M7OztVO1E7O2tDO087Tzs7OztrQzs7O0s7SyxJOzs7Ozs7O1E7UztTLHFCLHVCOzs7WSxXO2lDO1ksUTtZO1k7VztTOzs7Ozs7OzJDLHFCO087UTtTOzRCLDRCOzs7WSxzQjtZLFE7WTtZO1c7Ozs7Ozs7Ozs7TTs7OzhCOztPOzs7Ozs7O08sRyxnQztRO08sRyxnQztRO087TTtNLFk7Ozs7O007SztLLFksVzs7TTs7Ozs7TSxXOzttQjtNOztPO007SztLO00sVTs7Ozs7Ozs7OztXO1c7VTtlOzs7Ozs7TTs7Ozs7TTs7Yzs7SztLLGMsVztLOzs7Ozs7OztRO1E7Ozs7Ozs7Ozs7YztjLE87YTttQjtXO1U7Vzs7Vzs7Ozs7YztjLE87YTttQjtXO1U7Ozs7O1E7Ozs7O007OztVOztXO1U7VSxhO1U7UztPLE87TSxXOzs7SyxPO0k7SSxPOztHO0c7SSxPO0c7O0k7SSxvQjs7SztLOzs7TyxPOztNLFU7TyxJOzs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt3QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7Rzs7SyxXO0ssTztJO0ksTztHO0c7STs7O0ssTztLLE87SSxPOztHO0k7O0c7Ryw4Qyx3QjtHOzs7Ozs7Ozs7Ozs7O0s7OzBCLG9CLFc7SztNLFc7TTtNO1E7SztLLE87STtJLDhDLFM7STtLOztlOztJO0k7Ozs7Ozs7OztHOztJLGdDOzs7O0s7O0k7Rzs7SSxPOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7O0k7O0ksa0I7SSxPOzs7STtJO0k7Ozs7YyxPO2E7Rzs7STtJO0ksdUMsTyx1QjtHOztJO0c7O0ksWTtrQzs7Ozs7OztJO0ssTztJO0k7SyxPO0sseUI7O0s7Syx5QjtJO0ksVTtJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHOztJLE87Rzs7STtnQjs7STtHOztJO0c7O0k7STtJO0c7O0k7RztHO3FDLGtDOzs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O00sVztLOztJO0k7SyxJOzs7TTs7OztlLE07O21DOztLOztHO0c7Rzs7TSx1Qjs7TTtLOztJOzs7SyxNO0k7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJOzs7OzBCOztROzs7Uzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxRO0ksMEI7dUIsaUI7SSxXO0c7O0k7Z0I7O0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7OztJLFc7SSxXO0ksVzs7Szs7USxPOztRO29DOztJO0ksTztHO2lDLCtCLFU7eUIsaUQ7K0IsYTs4QixhO0c7O0k7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0k7Ozs7OztPO1E7a0I7Ozs7OztJO0c7OztJOzs7TTtNLE87OztJO0c7RztJOzs7O0k7O0s7SztLO0k7Rzs7d0IsbUQ7STtLLE87SyxNO0ksTztHOztJO0k7aUI7OzBEOzs7Rzs7STs7aUIsTzs7Ozs7OztNLEk7OztHOztxQiwrQztJLE87RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7OztJLE87RzsrQixzQjs7SSxXO0c7O0k7SSxXO0c7O0k7SSxXO0c7O0k7SSxXO0c7K0Isc0I7c0IsYzs7STtJO0c7O0k7STtHO0c7O0k7STtJO0c7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO2tEO0k7Rzs7STtLLFc7SztNLE07SztJO3FCLFk7SSxrQjs7Szs7Ozs7OztTOzs7O1M7Ozs7VTs7Ozs7O3FCOzs7Ozs7OztXLEc7Ozs7aUM7Ozs7Ozs7O3FCOzs7Ozs7a0M7Ozs7Uzs7Ozs7Ozs7OzthOzs7Ozs7Ozs2QiwrQztTOzs7Ozs7Ozs7O2E7YTtZOztpQzs7Ozs7Ozs7O0s7STs7Szs7Ozs7O21DOzs7SztJOztLOzs7OztLO0k7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7cUMsMkI7aUMsZ0M7c0MsbUM7b0MsZ0M7dUMsbUM7bUMsZ0M7d0MsbUM7d0MsbUM7cUMsbUM7aUMsZ0M7aUMsbUM7eUMsb0M7Z0MsaUM7Z0MsaUM7a0MsaUM7bUMsb0M7cUMsaUM7dUMsaUM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7aUMsZ0M7c0MsZ0M7dUMsc0M7O0k7RztzQyxnQztvQyxtQztvQyxtQzttQyxnQzswQyxtQzt3QyxvQzt1QyxvQztvQyxvQzs7STtHO21DLGlDOzRDO0c7dUMsb0M7c0Msb0M7O0k7RzsyQztHOztJO0c7bUMsb0M7aUMsaUM7eUMsb0M7b0MsaUM7O0k7RzsyQztHO2tDLGlDO2tDLGlDO3FDLG9DO29DLGlDO3NDLG9DO2dDLGlDO3FDLG9DOztJO0c7dUMsaUM7MkMsMkI7b0MsNEI7MEMsOEI7O0k7STtJO0c7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7O29DLG1DOztJO0k7STtHOztJLFc7STtHO21DLGdDO3FDLGdDOzZDO0c7d0MscUM7NkM7RztvQyxnQzt1QyxnQztHOzs7Ozs7Ozs7Ozs7O0k7STtHOzBCLHlCO3FDLG1DOytCLHlCO21DLHlCO2dDLHlCOzJCLHlCOzhCLHlCOytCLHlCOzRCLHlCO2tDLHlCOzJCLDBCOzRCLDBCOzRCLDBCOytCLDBCOztJO0k7Rzs4QiwwQjs7O0ssTyxxQjtJO0ksWTs7SyxXO0sscUI7STtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJO0k7RzsrQiw0Qjs4Qix5QjtxQyxtQztxQyx5QjtnQyx5Qjs2Qix5QjtpQyx5Qjs4Qix5QjsyQix5Qjs0QiwwQjtpQywwQjs4QiwwQjs7STtJO0c7Z0MsMEI7OztLLE8scUI7STtJLFk7O0ssVztLLHVCO0k7SSxPO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7RztzQyxtQzt1QyxzQzsyQztHO3VDLGdDO3FDLG1DO0c7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7O0k7STtJOzs7O0ksbUI7RzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87Rzs7SSxXO0k7Rzs7STtJO0k7Ozs7SSxtQjtHOztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7OztLLE8scUI7STtJLFk7O0ssVztLLHVCO0k7SSxPO0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7STtJO0k7Ozs7STtJLDRCO0c7Rzs7STtJO0k7Ozs7STtJLFc7SSxzQjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksc0I7RztHOztJO0k7STs7OztJO0ksVztJLHNCO0c7Rzs7STtJO0k7STtJLFc7SSx1QjtHO0c7O0k7STtJO0k7SSxnQztHO0c7O0k7STtJO0ksdUI7RztHOztJO0k7STtJO0ksVTtJLHNCO0c7Rzs7STtJO0k7STtJO0k7SSxVO0k7Ozs7OztZO0c7Rzs7STtJO0k7STtJO0k7STtJO0ksVTtJOzs7Ozs7O1k7O0c7O0k7STtJO0k7SSxpQztHOztJO0k7STtJO0ksZ0M7RztHOztJO0k7STtJO0k7STs7Ozs7O1k7Rzs7STtJO0k7SSw2QjtHOztJO0k7STtJO0ksVTtJLDRCO0c7O0k7STtJO0k7STtJLFU7STs7OztZO0c7O0k7STtJO0k7SSxVO0ksZ0M7RztHO2dDLHlCO0c7Z0MseUI7Rzs7STtJO0k7Rzs7STtHOytCLDhCO0c7O0k7STtJO0c7O0k7RzsrQiw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0M7SSxHO0s7SSxXO0ksRztLO0ksVztJLEc7SztJLFUsdUI7Ozs7O3lCOzswQjs7MkI7O1M7VSxPO2lCOzs7Ozs7Ozs7Ozs7Ozs7SSxTOzs7Ozt3Qjs7MEI7OzJCOztTO1UsTzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7SyxPO0ssYztJO0c7O0k7SyxPO0s7O1U7Ozs7OztJO0c7O0k7Ozs7OztJOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7OztNO08sVztPLFc7TyxXO08sTzs7Ozs7STtHOztJO0k7Rzs7STtHOztJO0ksTztHOzRCLDJCOztJOzs7OzsrQzs7Z0Q7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7YTs7Ozs7Ozs7OzswQjs7Ozt3Qjs7O087OzttQjs7STtHOztJOzs7Ozs7Szs7STtHO0c7NkIsZ0M7O0k7OzthO2lDLE87STs7OztNLE07O29CLHdCLE87O0s7Szs7O0c7O0k7O0ksUTs7STtJO0ksTztHOztJO0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7O087OztRO08sTzs7Ozs7Ozs7O08sTzs7Ozs7SSxPO0c7O0k7Ozs7UTs7Uzs7O1k7WSxPO1c7UTs7OEIsTyx1QjtPOzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7O1M7OztZO1ksTztXO1E7OzhCLE8sdUI7Tzs7O21DLGU7bUMsbUI7NEIsWSwyQjsrQixnQix1Qjs7SSxlLHlCOzttQyxtQjtrQyxPLDBCOztJLDJDO0ssTztJLE87Rzs4Qix3Qjs4QixPLDBCOztJLFE7SSwwQjtJLEk7SSxPOzs7OztjOzs7Ozs7SSw4QjtJOztLLE87Ozs7O21DOzs7O0ksTzs7Ozs7a0M7Ozs7STtJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7Uzs7OztVLDRCO1U7UyxPOzs7OzttQjs7Ozs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsTzs7Ozs7OEIsUTs7OEIsTzs7Ozs7d0M7Ozs2Qjs7bUI7O3dDOzs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7TyxPOzs7OztpQixROztrQjs7OztnRDs7OztpQixPOzs7OytDOztnQjs7Ozs7Ozs7OztXOztZOzs7YTthLDRCO2EsNEI7WSxPOzs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOztZLGtDO1ksTzs7Ozs7O3NCOzs7O3NCLFE7c0I7dUI7O3NCLEk7c0IsTzs7Ozs7Z0M7OztxQjs7MEM7Ozs7VztVO08sTzs7Ozs7aUIsd0I7O2lCO2tCOzs7Ozs7OztpQixPO2dCOzs7aUI7Ozs7bUIsTzs7Ozs7NkI7Ozs7O2lCO2dCOzs7Ozs7Ozs7O1csTzs7Ozs7O3lDOzs7TyxZLE87O08sTzs7Ozs7OztpQjs7Ozt5Qjs7Tzs7OztxQzs7OztHOztJO0s7O00sNEI7TTtLLE87Ozs7bUM7Ozs7Ozs7SyxnQztLLE87Ozs7bUM7Ozs7Ozs7Ozs7Szs7Ozs7TTs7O087Ozs7OztJOztLO00sNEI7TTs7SyxPOzs7OztlOzs7OztJO0ssTzs7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7cUM7Ozs7Ozs7Szs7O0s7TSxPOztLOzs7Ozs7Ozs7Ozs7OztTO1UsTzs7Uzs7O1EsRztTLE87aUIsTzs7O1M7O1U7aUM7OztTLE87Ozs7Ozs7bUI7Ozs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7O21COzs7Ozs7STtLLE87O0k7Rzs7STs7O0k7SztNLE87O0s7OztrQyxPOzs7OEI7O3lCLE87OztPLE87O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxHO2MsTzs7OztXLE87Ozs7Ozt5Qzs7O087O1EsTzs7Ozs7a0I7Ozs7OztPLE87Ozs7O2lCOzs7OztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087USw0Qjs7O08sTzs7Ozs7OztpQjs7OztJOzs7O2tDOzs7Rzs7STs7OztJO0ssTzs7OzttQzs7STtLLGdCOzs7OztNLEcsNkIsTzs7O0ssTzs7Ozs7bUM7OztJLGlCOzs7OztLLEs7ZSxPOztLLE87Ozs7O21DOzs7O0ssTzs7Ozs7bUM7OztJLE87Ozs7O2tDOztrQzs7OztJLGU7Ozs7Ozs7Ozs7OEIsNkM7TSxLO007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O1k7O2E7b0M7OzthO1k7Ozs7bUM7Ozs7OztlOzs7Ozs7WTs7OztXLHdCO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7Uzs2QjtPLFE7Ozs7Ozs7O1c7Ozs7a0M7O1c7Ozs7Ozs7Ozs7Ozs7WTs7O2EsVzthO2E7O2dCOzs7WTs7Ozs7aUI7OztrQjtpQjs7OzsrQzs7Ozs7O2dCOzs7aUI7Z0I7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OzttRDs7Ozs7Ozs7Ozs7cUI7Ozs7O3NCO3FCOzs7O21EOzs7Ozs7Ozs7O21COzs7O29CO21COzs7O2lEOzs7Ozs7O2lCOzs7a0I7aUI7Ozs7K0M7Ozs7Ozs7WTs7Ozs7Ozs7Ozs7UztVO1csZ0I7Vzs7Ozs7WTs7OztVO1c7VyxJO1c7O2dCO2dCOzs7Ozs7O1ksTTs7Ozs7OztVO3NCO1csUzs7O3FDO3FDO1U7Ozs7Ozs7Ozs7Ozs7O007OztJO0c7O0k7O007O08sNEI7TztNLE87Ozs7b0M7Ozs7OzttQyxPOzs7OztTOzs7VTtvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7ZSxPOzs7Ozt5Qjs7Ozs7eUI7Ozs7OztXO1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7Ozs7WSxHOzs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7O1c7Ozs7YSxPOzs7OzsyQzs7OztXO1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UztTLE87Ozs7O21CO21CO29COzttQixJO21CLE87Ozs7aUQ7Ozs2Qjs7O2tCOzs7Ozs7UztTOzs7VyxPOzs7Ozs7eUM7Ozs7O1U7Ozs7d0M7Ozs7UyxNOzs7OztTLE87Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87O1M7OztVLDRCO1MsTzs7Ozs7OzthLDBCO2EsTzs7OztTLE87Ozs7O21COzs7Ozs7UyxPOzs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozs7VSxPOzs7O3dDOzs7UyxPOzs7O3VDOzt1Qzs7OzhCOzs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7OztTOzs7O3VDOzs7Ozs7Ozs7VSxPOzs7O3dDOzs7VTs7Ozs7Vyw0QjtXO1UsTzs7Ozt3Qzs7Ozs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O3dDOzt3Qzs7O1U7Ozs7Vyw0QjtXO2tDO1UsTzs7OzttQjs7Ozs7OztVLE87Ozs7O29COzs7d0M7OztVOzs7Vyw0QjtVLE87O1U7OztXLDRCOztXLDRCO1UsTzs7O1U7Ozs7O1csNEI7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7Ozs7Ozs7Vzs7Ozt5Qzs7Ozs7O2E7Ozs7YztjO3FDO2EsTzs7Ozs7Ozs7O3VCLFM7dUIsZTt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlOzs7Z0I7Ozs7OzthO2MsTTtjO2MsNEI7Yzs7YSxPOzs7Ozt1Qjs7Ozs7O007Ozs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O08sTzs7Ozs7aUI7Ozs7TTtPLE87O007OztHOzRCOztJOzs7Ozs7UyxPOzs7O3VDOzs7OztTLGtDO1MsTzs7Ozt1Qzs7OztLO00sTzs7Szs7SSxrQixPOztJO0c7O0k7OztJO0ssa0IsTzs7Szs7Ozs7OzJCOzswQjs7UTs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7a0MsTztvQyxPOzs7OztXOztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7UTs7Ozs7WSxpQzs7Ozs7YSxHO2MsTzs7O1ksTzs7Ozs7OzBDOzs7OztTOztZOztTLDRCOztRLE87Ozs7O2tCOzs7Ozs7UTs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJOztLLDBCO0ssTzs7SSxPO0c7O0k7O0ssMEI7SyxPOztJLE87Rzs7STtJLDBCO0ksTztHOzs7Szs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7OztrQzs7OztHOzs7SSwwQjtJLE87Ozs7SSwwQjtJLE87OztJO0ksMEI7O0ksTzs7Ozs7Yzs7Ozs7Rzs7STs7O08sbUM7TyxPOzs7OztpQixRO2lCO2tCOztpQixJO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7cUM7Ozs7Ozs7OztXOzs7YyxtQjtjLE87Ozs7NEM7Ozt3Qjs7OztjOzs7Ozs7ZTtlOztrQjs7ZTtzQztjLE87Ozs7Ozs7Ozs7Ozs7O2M7Ozs7OztlO2U7O2tCOztlO3NDO2MsTzs7Ozs7Ozs7Ozs7Ozs7Yzs7OztlO2MsTzs7Ozs0Qzs7NEM7Ozt3Qjs7OztnQzs7O2M7Yzs7VTs7O087Ozs7O1UseUM7VSxPOzs7O3dDOztTOzs7VTs7Ozs7Tzs7OztRLDRCO1E7TyxPOzs7OztpQjs7Ozs7OztPOzs7Tzs7O1EsNEI7O08sTzs7O0c7OztLLDhCO0ssMEI7O0ssMEI7SywwQjtLLE87Ozs7Ozs7Ozs7Ozs7O0k7SSxROztlOztJO0s7O0ksSTtJLE87Ozs7O2M7Ozs7Yzs7O0c7OztJOzs7O1E7Ozs7UztTO2dDOzs7WSxTOztZLE87VztTLDRCO1EsTzs7Ozs7Uzs7VTtVO2lDO1UsNEI7UyxPOzs7UTs7O1M7UztnQztTLDRCOztRLE87Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7aUM7VSw0QjtTLE87Ozs7Ozs7Ozs7OztROzs7OztZOzs7O1c7UztTO2dDOzs7WTs7Ozs7O2M7O2UsNEI7ZTtzQztjLE87OzthOzs7VztRLE87Ozs7Ozs7Ozs7OztROzs7O1M7USxPOzs7O3NDOztzQzs7O2tCOzs7O1Esb0I7USxPOzs7O3NDOzs7a0I7Ozs7MEI7OztROzs7O0ksSTtJLE87Ozs7O2M7Ozs7OzBCOzs7O2dEOzswQjs7OztnRDs7YTs7O2M7Ozs7O0k7Ozs7O1EsTzs7Ozs7a0I7O2tCO21COztrQixJO2tCLE87Ozs7OzRCOzs7aUI7Ozs7OzJCOztROzs7OztTLDRCO1M7USxPOzs7O3NDOzs7OztROzs7Uzs7WTs7Uzs7O1EsTzs7OztzQzs7O2tCOzs7O1E7Ozs7Uyw0QjtTO1EsTzs7OztzQzs7Ozs7O1EsTzs7OztzQzs7c0M7Ozs0Qjs7UTs7O1MsNEI7O1EsTzs7Ozs7SSwwQjtJO0ksTzs7OztrQzs7OztHOztJO0k7O007O08sNEI7TztNLE87Ozs7b0M7Ozs7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7Uzs7VTs7YTs7Z0I7Ozs7dUM7aUIsTztpQjt3QztnQixPOzs7OzswQjs7Ozs7OzBCOzs7OztnQixPOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7Ozs7OEM7OztnQjs7Ozt1QztpQixPO2lCO3dDO2dCLE87Ozs7OzBCOzs7Ozs7MEI7Ozs7O2dCLE87Ozs7VTs7UyxPOzs7O3VDOzs7bUI7Ozs7Ozs7UTtTLE87O1E7OztHOztJOzs7STs7OzsyQixPOztROztTLDRCO1M7OztRLE87Ozs7O2tCOzs7OztRLE87Ozs7c0M7OzswQjs7O1EsTzs7UTs7OztzQzs7Ozs7STtLLE87O0k7Rzs7STs7O0k7Ozs7a0M7OztHOztJOzs7Tzs7O1E7USw0QjtROytCO08sTzs7Ozs7Ozs7Ozs7OztPOzsyQjs7MEI7OzBCOzs7O1E7O1M7UztnQztRLE87Ozs7aUI7Ozs7OztPO1E7USw0Qjs7USw0QjtPLE87Ozs7Z0I7Ozs7OztPOztRO1EsNEI7TyxPOzs7O087O1EsVTs7UTtTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7OztTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7Ozs7OztPOzs7OztRLDRCOzs7VyxTOztXO1csTzs7Ozt5Qzs7VTtPLE87Ozs7Ozs7TztRLE07Tzs7USw0QjtRLDRCO08sTzs7Tzs7UTtRLDRCOztPLE87OztPOztRO1EsNEI7O08sTzs7OztxQzs7Ozs7Ozs7O1csOEI7VztZOzs7VywwQjtXO1k7O1csTzs7Ozs7Ozs7Ozs7Ozs7O08sVTs7b0I7Tzs7UTs7Vzs7UTs7TyxPOzs7OztpQjs7OztpQjs7OzsyQjs7eUI7OztPO087O0c7O0k7Szs7TSw0QjtNO0ssTzs7OzttQzs7Ozs7Ozs7MEIsTzs7Tzs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7UTs7OztTLDRCO1MsNEI7USxPOzs7O2lCOzs7Ozs7O08sTzs7OztxQzs7OztPLE87Ozs7cUM7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7VSxPOzs7OztvQjs7Ozs7UztTLE87Ozs7dUM7Ozs7OztTLE87O0ssTzs7OzttQzs7STtJO3NCLFk7SyxPO0k7Ozs7Ozs7Ozs7USxPOzs7OztrQjs7O3NDOztzQzs7Ozs7OztLLE87Ozs7bUM7O21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztXOzs7WTs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7TTs7Ozs7Ozs7O087TSxHO08sVTtPLEc7Ozs7Ozs7Ozs7Ozs7TTs7OztPLDRCO08sNEI7Tzs7OztNLE87Ozs7b0M7OztnQjs7Ozs7Ozs7O0ssTzs7OzttQzs7bUM7O21DOzs7Ozs7Ozs7USxPOzs7OztrQjs7Ozs7OztRLGlDOzs7O1MsTzs7Ozs7bUI7Ozt1Qzs7dUM7OztRLE87Ozs7O2tCOzs7c0M7O3NDOzs7SSxPOzs7O2tDOztrQzs7Ozs7O0s7SyxPOzs7Ozs7O21DOzttQzs7STtJLFE7O2U7O0ksMEI7SSxJO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxHO08sTzs7Ozs7SSwwQjtJLDBCO0ksTztHOztJOzs7O08sTzs7OztxQzs7O2lCOzs7O08saUM7TyxPOzs7O3FDOzs7Tzs7UTtRLDRCO1E7K0I7TyxPOzs7OztRLE07O087OzBCOzswQjs7Tzs7O1EsNEI7Ozs7Vzs7OztZOzs7OzthO2M7OztlO3NDO2M7Ozs7Z0I7Ozs7O2M7Ozs7O1c7Ozs7YSxPOzs7OzJDOzsyQzs7O1csTzs7Ozt5Qzs7VTtPLE87Ozs7Z0I7Ozs7Ozs7Ozs7OztZOzs7YTthO29DO2E7b0M7YTtvQztZLE87Ozs7cUI7Ozs7Ozs7O1c7VztZOzs7VywwQjtXLE87Ozs7b0I7Ozs7OztPO1EsTTs7O1E7Ozs7OztZLG9CO1ksTztXOztTO2dDO1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7Ozs7Tzs7OztXLG9CO1csTztVOztRLDRCOztRLDRCO08sTzs7OztnQjs7Ozs7Ozs7Tzs7Ozs7USw0Qjs7O1csUzs7VztXLE87Ozs7eUM7O1U7TyxPOztPOztRO1EsNEI7O1EsNEI7TyxPOzs7Ozs7VyxPOzs7O3lDOztVOzs7Vyw4Qjs7Ozs7Ozs7O2E7Ozs7O2M7Ozs7OztXLEksTzs7Ozs7Ozs7O1c7VztZOztXLDBCOztXO1k7O1csMEI7VyxJO1c7WTs7VztZOztXLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxVOztvQjtPOztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOztPOztRO1EsNEI7O08sTzs7OztxQzs7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7OztLOzs7OztLO0ssMEI7SywwQjs7SyxPOzs7Ozs7OztlLFE7ZSwwQjtlLE87Ozs7O3lCOzs7Ozs7Ozs7OztJO0ksUSxNOztlOztJLDBCO0ksSTtJLE87Ozs7a0M7OztjOzs7Ozs7SztLLDBCOztLLDBCO0ssTzs7Ozs7Ozs7Ozs7STs7SSxPOzs7OztjOzs7Rzs7cUIsa0Isd0I7O0s7aUI7OztlOzs7OztxQzs7ZTs7OztxQzs7STs7SztLOztJOzt1Qix3Qix3QjtLOzsrQjs7Ozs7O1UsYSxPOztVLE87Ozs7O29COzs7O1M7TSxPOzs7SyxPOzs7Ozs7O2U7OztJOztLOztNO00sTzs7OztvQzs7b0M7O0s7SyxPO0k7SSxPO0c7OztLLE87Ozs7O2U7OztJO0k7SSwwQjs7STtLOzs7SSxPOzs7OztjLFE7YywwQjtjLE87Ozs7O3dCOzs7YTs7Ozs7Ozs7OztHOzs7Ozs7OztJO0ssTzs7Ozs7O2U7O2dCLE87Ozs7OzBCOzs7Ozt1QjtlLDBCO2UsSTtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7OztjOztlLE87Ozs7O3lCOzs7NkM7Ozs7O2MsMEI7YywwQjtjLEk7YyxPOzs7Ozt3Qjs7Ozs7YTs7a0M7Ozs7STs7O0s7O0ksbUI7SSwwQjtJLE87Rzs7O0s7Ozs7TTtLLDBCO0ssMEI7SztLLE87Ozs7bUM7OztlOzs7Ozs7STtHOztJLGdDOzs7Ozs7Ozs7Ozs7O0ksMEI7STs7SyxPO2U7ZTs7Ozs7cUM7Ozs7SSxPO2M7Yzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7Szs7TTs2QjtNOzs7SyxPOzs7OztlOzs7OztnQixPOztJLE87Rzs7SSxPOzs7O2tDOztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7O0k7STtJO0ksTztHO0csaUM7RywrQjtHLGlDO0csaUM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLGlDOzs7STtHOztJO0k7bUI7Z0I7SyxvQjs7Rzs7STtJO2dCOztLLFMsdUI7OztHOztJLFM7O0k7Rzs7SSxpQjtHOztJOzs7Ozs7Z0I7OztHOztJOzs7Ozs7Z0I7O0ksTztHOzs7SSxhOztLLFk7a0I7a0I7SyxPO0k7SSxPO0c7OztLLFk7SyxPO0k7SSxPO0c7O3lCLHFCLFk7eUIsdUIsYzt5QixzQixhO0k7SztHOzt1QyxnQztJO0s7RztHO0k7STtJO0k7O0k7Ozs7Ozs7Rzs7STs7SyxNOztLLHdCLE87SyxPOztJOzs7SyxPO0ssTztJLE87Rzs7STs7SyxNOztJO0c7O0k7STs7O2EsWTthO2E7WTtHOztJO0k7OzthO2MsUzs7O2E7YTtZO0c7O0k7OztLOzs7STtLLFc7Szs7OzsrQjs7Ozs7cUIsd0I7SSxPO0c7O0k7SyxJO0ssSTs7OztJO2dCLE87SyxJLGlCLEksOEI7Ozs7Ozs7TTtNLEk7OztLO00sc0I7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHOzs7STs7SyxJOztJO2dCLE87SyxJLGlCLEk7SzttQixNO007OztPO1EsTTs7O087Ozt1QixNO007TztTO1c7TyxPO007Ozs7OztNOzs7OztHOztJO0k7Rzs7STtLLEk7SyxPO0ssTztJO0ksYTtJO0c7O0k7OztHOzs7Ozs7Ozs7SSxTLE87STs7Szs7O0ksTzs7b0IsYyw2Qjs7SSxVLE07SSxrQjs7O0s7O08sYztPOzs7Ozs7OztHO3NCLGMsbUI7O0k7STs7O0c7c0IsWTtzQixrRDs7SSxzQjs7Szs7TTs7Ozs7Ozs7Ozs7SyxPO0k7SSxRO0k7O00sTTtLOzs7TSxJO007TTs7OztPLEksd0M7Ozs7Uzs7O1c7O1M7Ozs7O087Ozs7O0ssYzs7O0ssTTtJOzs7O0ssTTtLO0s7Ozs7O00sSSxZOzs7Ozs7OztTOzs7OztROzs7OztNLHVCO007Ozs7O0ksYztHOztJO0ssSTtrQjs7STtHOztJLGdDOzs7O1E7O1E7UyxJOzJCOztROztRO1MsTTs2Qjs7UTs7USxPOzs7Z0I7aUI7Ozs7SyxNOztnQjthOzs7YTs7O2E7Ozs7Ozs7O0k7OztHOztJO0ssTTtJLHNCOzs7OztPLE07TTs7Ozs7O0ssSTtLO2dCO007TSxHOzs7TztROzs7Ozs7O0k7SSxXOztLOztJO0k7SSxJLGUsc0I7O0s7OztNO087Ozs7Ozs7O1U7Ozs7WSxNOztXO1csSyxrQzs7Ozs7Ozs7Ozs7O087TyxJOzs7Ozs7Ozs7Ozs7OztPO087Ozs7Ozs7TTs7O0k7STtJO0c7Ozs7Szs7O007O0ssTTs7SSxNOzs7STs7O0ssVzs7OztJLHNCOztLOztLO0k7SSxJLFEsOEM7O0ssTTtJLEksWTs7SztNLGlCOztPOzs7UTs7OztPOzs7OztJO0ksVztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7OzsyQixTOzs7Ozs7O1M7UztzQjtVO1csUzs7Ozs7UTs7UztTLE07UTtxQyx5QixTO29DLHlCLFM7O1M7UzttQjttQjtRO2dDLDJCOztTO1E7O1M7O1U7Vzs7O1UsZSxPOztVLE87OztxQixPO1MsTTtROztTO1M7UTs7UztROztTO1M7UyxNO1E7OztTO1M7UTs7UztTOzswQywrQjs7bUI7bUI7OzZCLFM7Ozs7Ozs4RSxTOzhELCtCO3NELFM7OzRCOztrQjs7UTs7O1M7bUI7O1E7O1M7b0I7Uzs7VTtTLE87UTs7UztvQjtTOztVO1MsTztROztTO29CO1M7O1U7O1U7UyxPOztROztTLGU7UTs7UyxlO1E7O1M7bUI7O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO2lDO2lDOzs7O1M7VSxNOztTO21CO21CO1E7O1M7UyxHLFc7VTtTLE07UTs7UyxHLFc7VTtTLE07UTs7UztTO1E7O1M7UztROztTOzs7NkI7O1U7Ozs4Qjs7UztRO21ELHlCOztTOzs7OztVO1M7OztTO1U7VTtVO1M7UTs7UztTLE87UTs7UztTLE87UTs2Qix1Qzs7UztVO1U7UyxPO1E7O1M7VSxNOztROztTO1M7UTs7UyxJLGU7UztROztTOzs7Ozs7UztROztTO1M7d0I7VTtXLFM7Ozs7O1E7O1M7Uzs7OzttQixPLGM7a0I7O1E7O1M7Uzs7OzttQjs7NkIsYztrQjs7UTs7UyxPO1E7bUMsdUI7K0IsdUI7O1M7VTs7Vzs7OztjO2M7YTtVLE87Ozs7Ozs7Ozs7Uzs7VTs7VSxRO3FCO1M7O1U7UztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOztXO1c7Ozs7MkI7O1c7Vzs7O1E7O1Msb0IsVztTLE87UTs7Ozs7OztTLEksUSx3QixVOzs7VTtVO1UsTzs7UztROztTOztROztTLG1DLE87UztTO1MsaUI7OzswQyxrQzt3QyxpQzs7UztTLFk7O1U7O1csTztXLE87VTtVO1UsVztVLE87O1M7O1E7O1M7Uzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxROztTOztVLE87O1M7O1U7Vzs7WSxPO1ksTztXLE87Ozs7Ozs7Ozs7a0I7VTtTOztVLFE7VTs7OztXO1c7VTtTOztVLEsseUI7a0I7O1U7Uzs7VSxRO1UsSSxZOzs7OEI7OztVO1csVTtXO1U7Uzs7VSxRO1U7VTtTOztVOzs7VTtVO1M7O1U7O1c7WTthOzs7O2MsTzthOztZO1k7O1UsTztTOztVOzs7O1U7Vzs7O2M7OztjOzs7O2UsTTtjO2U7O2tCLDJCO2tCLHFCO29DO2tCO2tCOztlOztrQixROzs7OztlOztrQixHLDhCOzJCOzs7O21COztrQixNOzs7YyxPOzs7VSxPO1M7O1U7VyxRO1c7O1U7Uzs7VTtVOzs7OztXO1ksTTtXOztjO2UsUztlLGU7ZTs7Ozs7dUM7O2M7ZTtlOzs7OztTOztVLDBCO1U7OztvQjs7O1M7O1U7VTs7OztlO2dCLFM7Z0IsZTs7Ozt3QyxPOzs7ZTtnQjs7OztXLE87O1M7O1U7Ozs7OztXLE07Ozs7VztZOztlO2dCLFM7Z0IsYTs7Ozt1QyxPOzs7ZTtnQjs7OztXLE87O1M7O1U7VTs7OzswQzs7ZTtnQjs7OztlOztXLE07O1M7O1U7VztXLGU7O1M7O1U7OztxQzttQjttQjs7Uzs2QiwyQjs7VSxtQjs7OztTOztVOztXO1ksTTtrQjs7O1U7Uzs7VTtTOzs7VTs7O1U7NEIsUztrQyxTO1UsTztTOztVO1M7O1UsbUI7O1M7O1UsSztXLE87VSxHO1csTTtVO1csUTtXLFU7VTtTO29DLGdCOztVO1U7eUI7Vzt1QjtXLHNCOztTOztVO3NCOztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0k7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7STs7OztJOzs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7NEIsTyxzQzs0QixPLHVDOzZCLGdDOztJLGlCLDZCO0k7Rzs7STtHO2dDLHlDOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzBCLDhCOztJO0ksTztHOztJO0c7O0ksMEM7OztJLE87Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7O0k7K0I7OztLLE07O0k7OztJLFk7O0k7OztJLFk7O0k7OztJLE07Rzs7STtLO0s7SSxNO0c7O0k7SSxNO0c7O0k7SSxNO0c7O0k7Ozt3QjtJOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0kscUI7Ozs7Ozs7Ozs7OztnQjs7Z0I7OztNOzs7STtHO0c7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7O0k7Ozs7OztLO0ssUTs7O0ssSztJOzs7O0ksVztJOzs7SSxJO0k7Rzs7STtJLFc7Rzs7STtJO0c7eUIsaUM7O0k7Ozs4QixXLDhCO0k7Rzs7SSwwQyxjO0c7O0k7SSxPO0c7O2dDLHNDO0ksTztHOztJOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO3VCLHdCO0ksTztHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7aUMsd0I7YyxPO2E7O0c7O0k7SyxPO0ssTztJO0c7O0k7Ozs7SztxQztJOzs7OztZOzs7OztJO2E7STtHOztJO0k7Rzs7STtLLE07STs7SyxtQjtLLHFDO3VCO3VCO3VCOztNLE07O00sTTs7O00sTTs7SztJO0k7OzsyQjs7OztRLDBDO1Esa0I7Ozs7STtHO3FDLDZCOztJO0c7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7Rzs7STs7O3dCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7bUM7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHOztJOzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7Uzs7UztTOztTLDRCO1E7Ozs7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1MsTTtTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UyxLO1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTLEk7UTtPOztROzs7Ozs7Ozs7UyxPO1MsTztTO1MsSTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTLE87UztRO087O1E7Ozs7Ozs7OztTOzs7Uzs7Ozs7Ozs7UTtRLGU7O1MsTTtRO1MsTztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztRO087O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7OztPOztROztTOzs7Ozs7OztTO1M7O1MsTztTOzs7aUI7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTtPOztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztRO087O1E7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOztTO1M7UyxPO1M7OztpQjs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7O087O1E7O1M7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTtPOztROztTOzs7Ozs7O1M7UyxPO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7OztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7OztPOztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7OztPOztROzs7Ozs7Ozs7UztTO1M7UTs7Ozs7O087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UyxNO1M7UTtPOztROzs7Ozs7Ozs7UztTLE07UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTO1M7Vzs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTLEs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UTtPOztROzs7Ozs7O1M7UztTOztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztRO087O1E7O1M7Ozs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7O1EsSSxrQztRO087O1E7O1M7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7USxJLGtDO1E7Tzs7UTs7Ozs7Ozs7O1M7OztTOzs7Ozs7OztRO1E7UyxXO1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTtPOztROztTOzs7Ozs7Ozs7UztRO1E7UztTLEk7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7OztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7Uzs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOztTLE87UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTO1M7Uzs7O1MsTztTLFE7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxPO1M7UztXOzs7Ozs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLG1COzs7YztTLFc7UztTO1c7O1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7Ozs7OztVLE07OztRO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTLFE7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTOzs7Uzs7UztTO1M7UTs7Ozs7O087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1MsTztTO1MsTztTO1c7Ozs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsSTtTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UyxJO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTO1MsSztRO1E7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7UztTLEk7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UyxPO1MsTztTLEk7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UyxPO1MsTztTLEk7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTLEk7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UyxJO1M7UTtPOztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7OztTO1U7OztRO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7Uzs7OztTO1U7OztRO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7O1M7VTs7O1E7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7O1M7VTs7O1E7UztTOztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSTtRO087O1E7Ozs7Ozs7Ozs7O1MsSTtRO087O1E7Ozs7Ozs7OztTO1M7UyxPO1MsSTtRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTOztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTO1c7UztRO087O1E7O1M7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Uzs7UztTOztRO1EsTTtPOztROzs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1M7UTs7Ozs7O087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1E7UTtTLE87UyxPO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UTtRO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7O1M7UztRO1E7UyxPO1MsTztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsZTtTO1M7UTtPOztROzs7Ozs7Ozs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87Uzs7WTs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxXO1M7UztRO087O1E7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsTztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7UztXOzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7Ozs7O1M7Vzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Ozs7O1M7Vzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7Ozs7OztTO1c7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7Ozs7OztTO1c7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7UztXOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7Ozs7OztTO1c7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7UztXOzs7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1E7Ozs7OztPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTs7OztRLEkscUI7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1E7Ozs7USxJLHFCO1E7Tzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztROzs7O1EsSSxxQjtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7O1E7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1E7Ozs7UTtTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7OztRO1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7O1M7UyxPO1MsVztTO1c7Ozs7Ozs7OztTO2U7UTtPOztROztTOzs7OztTLFE7UztRO087O1E7O1M7Ozs7Ozs7UztTLE87Uyx5QjtRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UTtTLE07UTtTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTLE87UyxRO1M7O1k7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UTtRO1M7UyxPO1MsUTtTOztZOzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLE87UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztTOztTLFE7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UyxXO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7O1M7O1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UyxLO1MsSztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxLO1MsSztTOztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsTztTLFc7UztXOztTO2U7UTtPOztROztTOzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7Uzs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1MsSztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTLEs7UTtRO1MsTztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7Ozs7Ozs7Ozs7O1U7Ozs7Ozs7Ozs7Ozs7UTtRO1MsVztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztRO1E7UztTLE87UyxRO1M7O1k7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLE87UztTLFE7UztXOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTtPOztROztTOzs7Ozs7OztTO1M7UztTLE87UyxRO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTOztTO1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1c7O2M7Ozs7UTtPOztROztTOzs7OztTO1M7Vzs7Yzs7OztRO087O1E7O1M7Ozs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsSztTLE87UztRO087O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzt3RCxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHOztJO0c7O0k7OztLO0s7Ozs7OztJOzs7STtJOzs7MEI7SSxjOzs7STtJO0c7O0ksZ0I7O0k7SSxJLFUsNkI7STtJO0c7O0ksTTswQjtHOztJLE07Rzs7STs7OztNLFU7Ozs7Ozs7Ozs7TyxNOzs7TyxNOztNOzs7Ozs7Rzs7STs7OztTOztTOztTOzs7c0I7STtHOztJLGdCO0ksTTs4QjtHOztJOzJCLE87STs7cUM7Rzs7STsyQixPO0k7O3FDO0c7O0k7SSxPO0c7O0ksVztJO0c7O0k7STs7Ozs7OztHO0csSSx1Qjs7SSxXO0ksTzs7RztHLEksNEI7O0k7O0c7O0k7Rzs7SSx1Qjs7OztpQjs7TTtPLFU7Yzs7OztROztTLE87Z0I7OztROzs7Uzs7WSxrQjs7WSxPO1c7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7OzttQjs7UTs7UyxlO2dCOzs7OztnQjs7Ozs7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7O0k7RztHOztJLGE7STtJO0ssTzs7STtHOzBCOztJO0k7Szs7UTs7Ozs7OztVOztVOzthOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7O1UsbUI7VTs7OztTLFM7cUM7UztTO1UsTzs7Uzs7UyxnQzs7UztVLE87O1M7O1M7O1M7O1M7O1M7O1k7O1M7Uzs7Uzs7WTs7UztTOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7UzttQjtTO1UsVztVOzs7O2lDOzs7O1M7bUI7UztTOztTO21CO1M7O1M7bUI7UztTOztTO2dCO1M7O1M7VTtZOztVLFE7Uzs7UztrQjtTOztTO1U7WTs7VSxVO1M7O1M7O1k7Uzs7UztVOzs7Uzs7UztVO1k7O1U7OzZCOzs7Uzs7UztVO1k7O1UsVztVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTO1U7WTs7VSxhO1U7OzZCOzs7VTtTOztTO1U7VTtZOztVO1UsVTtVLGE7VTs7NkI7OztVO1M7O1MsZ0M7O1MsUTtTOztTLFU7Uzs7Uzs7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7UztVOzs7Uzs7UztVOzs7O3dCOzRCOztTO1U7WTs7VTs7O2UsYTtlO2M7Ozs7Uzs7O1UsVztVOztTO1U7OztTOztTOztZOztTLDJCO1UsVztVLFk7O1MseUI7O1MsWTtTOzs7O1M7O1M7UyxzQjtTO3VCOztVOztVO1c7O2M7Ozs7OztXOzs7VTtXO1c7VyxNO1c7VztXLFM7VztXLFk7OztXLEksZTs7Ozs7OztrQjs7OztXOzs7VTs7OztvQzs7OztTOztTOztTOztTOztTOztTOztTOztTOztTO2lCOzs7Szs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7OzttQztROzs7OztTLE07OztTLE87Ozs7UTs7OzhCO1E7OztZOzs7Ozs7Vyx3Qjs7WSxNO1c7O1ksTztZLFE7O1c7Ozs7Ozs7UTs7O1E7O1M7UyxROzhCO1E7OztZOzs7Ozs7Vyw0Qjs7WSxNO1c7O1ksTztZLFU7O1c7Ozs7Ozs7UTtRO1E7OztROztRLGdDOztROztROztROztROztROzs7O1MsTTtROztTLE87UyxVOztROztRLGdDOztRO2dCOzs7Rzs7STtrQjs7SztNOztTOzs7TTs7Ozs7OztROztTO1MsUTtRO1Esa0I7OztRLFE7UTs7O1E7O1E7O1E7OztRO1MsTTtTLE07Uzs7Ozs7O1M7VTtVO1k7ZTtzQztRO1M7O1M7Ozs7UyxVO1M7O1E7Ozs7UyxVO1M7O1E7UTs7OzZCOztRLFU7UTs7O0c7O0k7O0s7TTs7Uzs7O007Ozs7O1EsZ0M7OzZCOztROztXOztRLEc7UTs7O1EsUTtROzs7Rzs7STtJO0s7O1E7Ozs7O1M7O1M7aUI7O0s7OztHOztJO2M7O0ksTztHOztJLGU7O0s7SztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtVO1csTTtXLE07VyxVO1U7VSxHLGtCOzs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7O1U7Ozs7Ozs7Ozs7O00sYzs7Ozs7UyxVO1M7UyxVO1M7OztTLFU7UztTOzs7Ozs7UyxVO1M7UztVLE07VSxNO1M7UztVLE07VSxNO1M7UyxVO1M7OztTLFU7UztTO1UsTTtVLE07UztTLFU7UztTLFU7UztTOzs7TTs7STtJO0c7O0k7Ozs7Yzs7SSxPO0c7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TyxLO087TyxNOzs7Ozs7TyxVO08sRztRO08sTTs7TSxHO087TyxNOzs7OztHOztHLDZCO0c7RywwQjtHO0csOEI7RztHLHVCO0c7Ryx3QjtHO0cseUI7RztHLHNCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7RztHLHlCOztJLDhCOzs7O087Ozs7O1E7O2U7Yzs7Ozs7O2M7Ozs7OztjOzs7aUM7Ozs7Ozs7VTs7OztpQzs7Ozs7O2M7Ozs7OztjOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztHOztJLHFCO0k7SyxhOztJLDBCOztJLDBCO0k7O2tCO0c7O0k7O3FCLE87OztPLE87Ozs7TyxPOzs7Ozs7Ozs7Rzs7SSxPO0c7O0k7Ozs7Ozs7O0c7O0k7Rzs7SSxpQixPOztHOztJLFksTzs7SSxPOzs7STs7O08sTzs7cUIsTzs7OztRLE87O08sTzs7OztPLE87OztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJLFc7STtJLE87Rzs7SSxRO0k7SSxXO0k7STtHOztJLFE7O0k7SSxPO0c7O0ksTztHOzhCLE8saUM7O0ksTztHOztJLE87Rzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7UTtROzs7UTtROzs7UTtRO1M7OztZOzs7YTthO2E7OztZO1k7VztRLE87OztRO1E7OztROzs7OztRO1E7UTs7O2tCO21CO2lCOzs7Ozs7Ozs7O2E7O1k7WSxPO1c7UTs7Ozs7UTtROzs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7OztRLE87OztRLE87Ozs7UTtROzs7UTtROzs7a0I7a0I7a0I7aUI7Ozs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7Ozs7UTtRO1E7UyxPOztROzs7UTtROzs7UTs7Ozs7USxPOzs7UTs7Ozs7Ozs7O1E7UTtTLE87O1E7OztROzs7O0c7O0k7OztJO0k7O0s7SztLLEksbUI7bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7O1EsTzs7O1E7Ozs7O1E7UTs7O1E7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1E7Ozs7Ozs7OztRO1E7UTs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7STtJO0k7STs7Rzs7O0k7OztJO0k7STtJO0k7STtJO0k7STtJLGdCOzttQiwyQjs7O0s7Szs7OztLO0s7OztJO0k7O0c7O0k7STs7Rzs7STs7SztLO0s7STtJLE87Rzs7STs7eUI7OzJCOzs7TztRLE87O087Ozs7O1E7UTs7UTtTLE87O1E7O087USxPOztPOzs7O0k7OztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SztLOzs7STtJLE87Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTtROzs7O1E7UTtROzs7OztRO1E7OztROzs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7O2lDLHVDOztJO0k7SSxJLGlCOzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7Tzs7Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOzs7Ozs7Tzs7O087TztPOzs7TztPOzs7TztPOzt5Qjs7Ozs7Ozs7TztPO087O0c7O0ksWTs7STs7O0k7OztPO087OztPLE87Ozs7Ozs7O087Tzs7O087Tzs7O087Tzs7O08sTzs7Ozs7OztHOztJO0k7O0s7SztLLEksbUI7Ozs7USxPOzswQixzQjs7Ozs7UztTOzs7OztTOzs7Ozs7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztHOztJOztpQyx1Qzs7STtJO0ksSSxpQjs7OztPO087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPO087OztPO087OztPO087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJO0k7O0c7O0k7STs7Rzs7O0k7STtJOzs7Ozs7Ozs7STtJO0k7STtJOzs7SSxxQzs7STs7Ozs7Ozs7O0k7STtJO0k7STs7OztJO0k7Ozs7STtJOzs7SztLOztJOzs7STtJO0k7O0c7O0k7STtJOztHOzs7STtJOzs7O0k7STs7OztJO0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLHVDO21DLHVDOztJOzs7SztLOzs7Ozs7O0k7bUI7Ozs7NkIsTzs7O3FCLE87O08sTzs7O08sTzs7TyxvQixPO08sTzs7Rzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7O1c7Ozs7WSxNO1ksUTtXO1k7OzthLE87Ozs4QztXLE87O1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7TyxnQyxPO08sTzs7O087Ozs7UTs7Vzs7OztZLE07WSxRO1c7WTs7OzthLE87YSxPOzs7NEM7VyxPOztRLE87TyxPOzs7Tzs7O1EsTztRLHNCO1EsTztPLE87OztPOzs7O1EsTztRLHNCO1Esc0I7USxPO1E7TyxPOzs7TyxpQixPO08sTzs7OztJOzs7Ozs7Ozs7SyxNO0ssUTtLO0ssZTtLLFc7SyxLO0ssSztLLEs7SztJO0s7Ozs7TSxPO00sTztLLFc7O0k7SyxXO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0s7SyxPO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7STs7OztLLE07SyxRO0ssTztJLE87OztJOzs7OztLLE07SyxROztLOzs7TSxlOzs7O0k7SSxPOzs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7USxPO1EsTztPLE87OztPLG1CLE87TyxPOztPOzs7USxPO1EsTztPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPLGtCLE87TyxPOztPOzs7Ozs7USxPO1E7TyxPOzs7Tzs7Ozs7O1EsTztRO08sTzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLE87SyxPO0ssTztJLE87OztJLFk7SSxpQyxPO0k7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sa0IsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxpQixPO08sTzs7TyxtQjtPLE87Ozs7STs7TyxrQyxPO087O08sdUM7Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O087OztRLE87Tzs7TyxvQztPOzs7O0k7OztLLFE7STs7TyxrQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssUTtJOztPOzs7USxVO1EsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPLGtCLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOzs7USxVO1EsTztPLE87Ozs7STs7OztLLFE7SyxVO0k7SyxPO0k7O08saUI7TyxPOztPLG1CLE87TyxPOztPOzs7O1EsTztRLE87USxPO08sTzs7O08sbUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87USxzQjtRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxlO1E7TyxPOzs7Tzs7O1EsZTtPLE87OztPOzs7USxlO1EsTztRLHNCO1Esc0I7USxPO08sTzs7O087OztRO1EsTztPLE87OztPOzs7O1EsTztRO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7OztRLGU7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7Ozs7USxPO1EsTztRLE87USxPO08sTzs7Ozs7Ozs7OztPOzs7USxPO1EsTztPLE87OztPOzs7O1EsTztRLGU7USxPO08sTzs7O087OztRO1EsTztPLE87OztPLHFCO08sTzs7Tzs7O1EsTztRO08sTzs7O087O1EsTztRLHNCO1Esc0I7USxPO08sTzs7Tzs7OztRLE87USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7Tzs7O1EsZTtRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRO08sTzs7O08sb0IsTztPLE87O087OztRLE87USxPO08sTzs7O087Ozs7O1EsTztRLE87USxPO1EsTztPLE87OztPLG1CLE87TyxPOzs7O0k7Ozs7O0s7SyxNO0ssTTtLLE07SSxPOzs7STs7OztLLFE7SyxVO0k7SyxPO0k7O08saUI7TyxPOztPOzs7UTtRLE87TyxPOzs7TyxpQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztROzs7YTs7O2MsTzthLG9CO2EsVztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1Esc0I7USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87USxzQjtRLE87USxPO08sTzs7O087Ozs7USxPO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOztLLFc7OztJLGM7OztJOzs7O0ssUTtLLFU7STs7Tzs7OztRLDhCO1EsTztPLE87OztPOzs7OztRO1E7TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLE87SyxPO0ksVzs7O0k7Ozs7Ozs7SyxNO0ssUTtLLE87SztLLE87SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7OztHOzs7O1E7UyxPO1MsTztRO087O1EsVztRLE87Tzs7O1E7Ozs7UyxPO1MsZTtRLFc7Tzs7USxXO1EsTztPOztRLFc7USxzQjtPOztRLFc7USxzQjtPOzs7Ozs7O1EsVztRLHNCO087Ozs7UTs7Ozs7O1M7UyxlO1M7UyxXO1MsVztRLE87Tzs7O1E7OztTLE87UTtPOzs7UTs7OztTLE87UyxXO1MsVztRLE87Tzs7UTs7OztTLE87UyxXO1MsVztRLE87Tzs7UTs7Ozs7O1MsTztTO1MsVztTLFc7USxPOzs7Ozs7OztPOzJCLFM7O1E7Ozs7O1MsTztTO1MsVztTLFc7USxPO087O1E7Ozs7O1MsTztTO1MsVztTLFc7USxPO087O1E7Ozs7O1M7UztTLFc7UyxXO1EsTztPOzs7O1E7Ozs7O1M7UyxlO1MsVztTLFc7USxPO087O1E7Ozs7O1MsTztTLFc7UyxXO1EsTzs7Tzs7UTs7Ozs7UztTLFc7UyxXO1EsTzs7Tzs7O1E7OzZCLFc7OztXLFc7OztXLFc7O1c7OztZLGU7VyxXOztPOztRLFc7USxPO087OztRLFc7USxPO087Ozs7Ozs7O1E7Ozs7O1MsTztTLE87UyxXO1MsVztRLE87Tzs7UTs7Ozs7O1MsTztTO1MsVztTLFc7USxPOztPOzs7OztLLE07O0k7SyxPO0k7O0s7O007TSxPO00sZTtLLE87Ozs7O0k7STtLLE87O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7NkIsd0I7c0IsbUM7O0ksVztJLE87Rzs7STtLO0ssTzs7STtJLE87Rzs7STtLOzs7O00sVztNLFc7TTtLLE87O0k7SSxPO0c7O0k7SyxPO0s7OztVOzs7VztVLE87OztJO0c7O0k7SztLLE87SyxlO0k7Rzs7STs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7OztLOztNO007YTs7SztNO2E7STs7Szs7Syw4Qjs7Szs7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O1E7Ozs7O0ksTztHOzs7SzswQjs7O007Ozs7Ozs7Tzs7TSxPO0s7O007Ozs7Ozs7OztROzs7Tzs7TSxPO0s7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7O1EsbUM7USxXOzs7O00sTzs7Ozs7Tzs7Ozs7Ozs7O087Ozs7O087Ozs7O087Ozs7O087Ozs7O087TyxhOzs7OztPO1E7Ozs7Ozs7Ozs7OztjOzthLE87Ozs7OztXO1csTztVO29COzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQjs7Ozs7O087Ozs7O087TyxPOzs7Tzs7Ozs7Tzs7Ozs7SztJO0ksTztHOzs7Szs7TTtLO0k7STtLLFc7SztJLE87Rzs7SSxZO2dCLE07OztLOztJO0c7OztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SztNO08sVztPLE07Ozs7TTs7Tzs7O0ssSSxtQztLLFc7STtJO0ssSztLO08sMkI7O0ssVTs7SyxVO0s7SztNLFE7TSxLO0s7SztLO0ssTztJO0ksTzs7Yzs7O2lCOztnQjtHOztJOzs7Ozs7TyxjO087Ozs7STs7O0k7Ozs7OztPLGM7Tzs7OztJOzs7STtJLFc7Rzs7STtJLFc7Rzs7SSxrRCxjO0c7O0k7SyxrQztLO007OztVO1c7WSxNO1ksTSxtQjtXOzs7Vzs7WTttQyxNLG9DO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O2lELE87aUQsTzs7O0k7SSxPOzs7SSxZOztJLE87Ozs7SSxPOzs7O0k7STs7SyxzQixPO0ssTzs7O0ksTzs7OztJO0k7OztLLE87OztJLE87Ozs7STtJOzs7OztRO1EsTzs7USxtQixPO1EsTzs7O1E7USxXO1EsTzs7UTs7UyxzQjtRLE87OztRO1EsVztRLE87O3lCLE87O1Esa0Isc0I7USxPOzsyQixPOzs7UTtRO1MsTztTLHNCO1Msc0I7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJLG9CO0k7STtLLEs7SyxLO0ssSztJOztLO0s7SyxPOztJO0k7SSxTO0k7SSxPOzs7STs7SyxrQixPO0ssTzs7SSxvQixPO0ksTzs7O0k7SyxrQixPO0ssTzs7SSxvQixPO0ksTzs7Ozs7Ozs7O0k7SSxXO0k7SSxXO0ksb0I7STtJO0ksTzs7Ozs7OztJO0k7SSxPOzs7Ozs7OztJOzs7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVztPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFc7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFc7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGdDLE07TztPLE87OzBCLE87OztPLFM7TztPLE87OztPO087USxNO1Esb0I7TyxPOzs7TztPLE87OztPO08sTzs7TyxrQixNO08sTzs7O087TyxnQjs7eUIsZ0I7O087OztRLE07USxvQjtRLG9CO087TyxnQjs7O087Tzs7O087TztPLE87O08sb0IsTTtPLE87OztPO087TyxnQjs7O087TyxPOzs7TztPLE87OztPO087TztPLE87OztPO08sTzs7O087TyxTO08sTzs7MEIsTzs7NEI7OztPO08sTzs7Tzs7USxNO1Esb0I7USxvQjtPLE87OztPO087TyxPOzs7TztPLE87OzJCLE87OzJCLE87OztPO08sZ0I7OzBCLE87OzJCLE87OzJCLE87OztPO08sTzs7Ozs7OztPO08sVTtPO08sTztrQyxPOzs7Ozs7Ozs7STtJO0k7SSxPOzs7O0k7STtpQzs7O3dCOzs7TztPOztPOztPOztPLGtCLE07TyxPOzs7TztPOztpQjtpQixrQjtpQjtpQixPO2dCOzs7MEIsZ0I7O087O1EsTTtRLG9CO1Esb0I7TyxPOztPLG9CLE07TyxPOzs7TztPLE87OztPO08sTzs7MEI7OzBCLE87OzBCOzswQixPOzt3QixPOzs7TztPLE87Ozs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPLFM7TztPLE87OztPO087USxNO1Esb0I7TyxPOztPLG1DLE07TztPLE87OztPO08sTzs7d0IsTzs7O087TyxPOzs7O0kscUMsTzs7SSxPOzs7O0k7STs7O3lCLE87OztPO087OztPO087OztPO08sTzs7d0IsTzs7d0IsTztrQyxPOzs7OztJO0ksVTtJLE87OztJOzs7Ozs7SyxNO0ksa0I7STtJO0k7STtJLE87O0c7STs7O1E7UTs7Tzs7USxVO1EsTztPOzs7UTtRO1EsUztRLE87Tzs7USxVO1EsTztPOztRLFU7USxxQjtPOztRLFU7USxxQjtPOzs7Ozs7O1EsVTtRLHFCO087OztROzs7Ozs7UTtRO1EsUztRO1EsTztPOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7Ozs7Ozs7OztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STs7Ozs7Ozs7OztvQix1RDtJLFk7Z0I7OytDOzs7SyxNOztJLE07O0c7O0k7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7dUI7O1E7Ozs7O0k7Rzs7STtnQjs7STtHOztJLEk7Ozs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7Ozs7WTs7cUIsTztvQjs7Ozs7OztZOztxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7O2U7O3dCLE87dUI7Ozs7OztXOztvQixPO21COzs7USxNO08sTzs7Ozs7Ozs7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7STtHOztJLEcsc0M7SSxXO0ksTztHOztJOzs7Ozt5RDs7Szs7STtnQjs7STtHOzJCLE8sMkM7O0ksSTs7Szs7TTs7MEM7O007SztLLE87STtJLE87Rzs7STs7SztLLE87STtJLE87Rzs7SSxJLDhCOztLLGM7ZTtLO0ssTztJO0ksTztHOztJO0k7bUI7Ozs7OztLOztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7STs7SztLLE87STtJLE87Rzs7SSxPO0c7O0k7O0s7O007O0s7TTtPLE07TyxNO08sTTtNOzs7Ozs7TTs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7O1E7Ozs7Ozs7Ozs7Ozs7O1csYyxPOzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztTLEksVSw0Qjs7Ozs7O1U7Ozs7OztLOzs7Ozs7a0U7OztJLFc7STtLO00sTTtNO0s7SyxVO0s7Szs7OztLO0ssTTs7Rzs7STs7OztLO0k7RztHLDhCOztJOzs7O0s7STtHO0cscUI7O0k7Ozs7SztJO0c7RyxnQjs7STs7OztLO0k7RztHLGtCO3dCLE8sd0M7O0ksa0I7SSxPO0c7O0ksa0I7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJO0k7Ozs7Ozs7O0s7ZTs7SyxPOztHOzs7STtJLGlCOztLO0k7Rzs7STtJLGlCOzs7O21EOzs7OzsyQixtQiw0QjtRLE87O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7UTs7MkI7OztxQjs7OzJCLG1CLDRCO1EsTzs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OzRCOzs0Qjs7OztROzs7cUI7OzsyQixtQiw0QjtRLE87Ozs7Ozs7Ozs7Szs7STtHOztJOzt1Qjs7STtHOztJO0ksaUI7OzswQjs7c0I7O0k7Rzs7STs7dUI7O0k7RztHO0ksTztHOztJO2tCOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7O29COztvQjs7STtHOztJO0ksaUI7OztvQjs7O1EsTzs7O0k7Rzs7STs7Ozs7OztnQjtHOztJOzs7Ozs7O2dCO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0k7STs7STtJLFc7Rzt5QixrQzs7O0ksb0I7SSxXO0ksVzs7Ozs7SztLLE87STtJLE87OztJLFEsTTtJOzs7SyxROzs7SSxJLGtDOzs7NEI7OztHOztJOzt1QixPOztPLDhCO08sTztlLE07O0c7Rzs7STtLOztHOzs7O0s7Szs7O1EsSSxJOzs7O29COztROztROzs7Uzs7Ozs7O1E7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJOzs7O0s7SSxXO0ksTTtHOztJO0k7O21DOzs7UTs7O1E7Ozs7USxtQixzQjtRLE87OztRO1EsMEI7USxPOzs7Ozs7WTtZOzthOzs7WTtXO1EsTzs7O1E7USwwQjtRLE87Ozs7Ozs7O1k7WTthOztjLHNCO2EsTzs7O1k7VztRLE87Ozs7O1E7UTtnQyxrQixTO1MsTztTLHNCO1EsTztrQzs7O0c7O0ksWTs7SSxPOzs7STtLLGtCLHNCO0ssTzs7O3FCLDBCO0ksTzs7O0k7O0s7SztLO0k7STtJO0k7OztLOztNOztTOztTLG9CO1MsTzs7SyxPOzs7dUIsNEI7SSxPO0c7O0k7OztLO0ssMEI7SyxPOzs7STtHOztJOztJLG9CO0ksTztHOztJO0c7Rzs7STtJOzttQzs7O1E7Ozs7USxtQixzQjtRLE87OztRO1E7cUMsa0Isa0I7Ozs7MkI7Ozs7OztZO1k7WTtXO1EsTzs7USxxQixzQjtRLE87OztROzs7OztRO1E7OzJCOzs7O1E7O1M7OztZO2E7O1c7USxPOzs7OzBCOztROzs7Uzs7OztnQjs7O0c7O0k7STs7Rzs7STtJOzttQzs7OzBCOztROztROzs7O1M7Ozs7OzhCOzs7UTtRLEk7Ozs7UTs7K0Isa0IseUI7USxPOzs7UTtROzs7UTtROztROztTLHFCO1EsTzs7O1E7UTs7K0I7Ozs7Ozs7WTtZO1k7VztRO1E7OztRO1E7OztRO1E7Ozs7UTs7UyxxQjtRLE87OztRO1E7UTs7O1E7Ozs7O1E7Ozs7O1E7UTs7Ozs7UTtROzs7UTtRO1E7Ozs7MkI7Ozs7OzsrQixrQix5QjtRLE87O1E7Ozs7UztTOzs7O2lCOzs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1MscUI7USxPOzs7OztRO1MsTzs7UTs7UTs7O1M7Ozs7O1E7Ozs7O1M7O1E7UywwQjtTLE87Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjs7Ozs7OzthOzs7Vzs7OztROzs7Rzs4Qjs7STtLOzs7O007SztLOztJLE87Rzs7d0IsNkI7STtLLE87SztvQiw0QjtJO0k7Rzs7STs7Rzs7STtJOzs7OzBCOzswQjs7O1E7O1M7Ozs7O2lCOzs7Ozs7Ozs7OztROzs7O1k7O2tDOzttQzs7bUM7O3FDOztvQzs7cUM7O1c7USxPOzs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087Ozs7Vzt1Qjs7VyxPO1U7USxRO1EsTztRLE07NEIsaUM7TztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7Tzs7USxvQjtPO087O087O1Esb0I7TztPOztPOzt5QixxQjs7TyxrQjt5QztPOztJLGtCO0k7STs7O0ksSTtJO0ksTztHOztJLEk7STtJLE87Rzs7STs7O3lCOzt5QjtlLDJCOztHOztJO0k7Ozs7MEI7OzBCLHdCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1MsTzs7UTtvQzs7O0c7O0k7OztJO0k7Ozs7O1E7USx3QjtRLE87OztRO1E7Ozs7OzttQzs7cUM7O3VDOzs7ZTtlOztlO3lDOzs7USxPOzs7UTs7OzswQjs7UTs7O1M7Ozs7O0c7NkM7RztrRDtHOztJO0s7OztJO0k7Rzs7SSxPOzs7OztHOztJLGlDOzs7eUIsaUI7O08sbUM7Tzs7MEIscUI7O087O1Esb0I7TztPOzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087Ozs7Vzt1Qjs7VyxPO1U7USxRO1EsTztRLE07MEIsbUM7TztPOztPLG9CO3lDO087OzBCOztPOztRLHFCO087Tzs7Tzs7USxvQjtPO087O087O1E7OzswQixtQjtPO1EsUTtRLE07TyxXOztPO21DLHVCOzs7O0k7STtHO3NDLDhCLFM7OEM7Rzs7SSxtQjs7STs7O0k7STs7Ozs7UTtRLHdCO1EsTzs7UTs7OztTO1Msb0I7USxPOzs7UTtRLEk7Ozs7UTs7K0Isa0IseUI7USxPOztROzs7O1M7Ozs7OztRO1E7OzBCOztROzs7Uzs7Ozs7Rzs7STs7Ozs7MkI7Ozs7Ozs7Ozs7Ozs7UTtROzs0Qjs7UTtvQzs7Szs7STtHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxlO0ksYzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7STtJO0c7NkIsa0IsOEI7aUMsYzt3QixxQixZOztJLGMsTzs7STtJO0c7O0k7OzhCLE87OzhCOztPOzs7USxNO1EsTTtPLE87O0c7O0ksd0M7STs7O0ssTTtLLE07SSxPO0c7OEIsOEI7O0k7Ozs7Ozs7Ozs7OztLOztJLE87Rzs7STs7Ozs7Ozs7OztTLE87Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7Rzs7STs7O0c7MEIsNEI7NkIsOEI7O0k7Szs7Ozs7Z0M7USxPOztROzs7O1MsbUI7OzRCO1EsTzs7O1EsTzs7Ozs7OzRCO1EsTztNO0c7c0MsdUI7MkIsdUI7OztJOzs7STtHOztJOzs7OztNOztxQjs7TywyQztPOzs7SyxNOzsyQjs7O0s7O29COztNOzs7Ozs7TztNOzs7SSxNO0c7O0ksWTtJOzs7OztLLEk7STs7Ozs7Ozs7SSxZLE87Ozs7Szs7O0k7Rzs7SSxRO0k7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7O00sSTtLO007OzttQixNOztPOzs7Ozs7Ozs7OzttQixNO0s7Ozs7TSxJO0ssWTs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7TSxJO0ssWSx5Qjs7Ozs7Ozs7TTs7OztPLFM7Tzs7Ozs7b0I7Ozs7Ozs7OztJO0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STtJOztjO2MscUI7YTs7OztHOzs7O21COztLO0s7Ozs7O0k7STtLLHFCLE87O0s7Syw0QjtHOztJOzs7O3VCOztRLGlCOzs7OztXLG1COzs7bUI7Ozs7Ozs7OzsyQixPO21COzs7Ozs7Ozs7O1c7Ozs7Szs7STtHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7Ozs7OztVLE87Ozs7OztVOzs7VyxNO1UsVTs7Ozs7Ozs7VSxvQztVLFU7Ozs7Ozs7OztHOztJO0k7dUI7Ozs7Ozs7O1UsTzs7Ozs7O1Usa0M7VSxpQjs7Ozs7O1Msb0M7UyxjOzs7O3dCOztLOztHOzs7Ozs7USxxQixNO1EsTzs7OztRLHNDO2dCOzs7O2dDLHFDOztJO0k7Ozs2QixPOzs7O1E7OztTO1M7USxPOztHOzBCLFM7O0k7STs7MEIsTzs7O08sRztRO1MsTTtlOztrQjtPO08sTzs7Tzs7O1E7USxNO1EsTTtRO08sTzs7OztJOzswQixPOzs7TyxPOzs7TyxPOzs7O0k7STs7OzZCOzs7O1EsTTs7Rzs7STs7OzsyQjs7UTs7O1M7Ozs7Z0I7O0c7O0k7SztLOzs7MEI7Ozs7Uzs7O1U7Ozs7STtJO0c7O0k7STs7OzZCLE87OzRCOzs7Rzs7SSxHO2lCO0ksTTtHOztJOzs7TyxhLDRCOzs7O087UTs7O0k7Rzs7STtHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0ksVTtJO0s7TSxNO007Ozs7WSxNO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7Ozs7TTs7Ozs7O087TTs7OztNOzs7OytDOzs7b0IsdUI7SSxHLHlDO0ksTTtHOztJOztPOzs7STtLLFU7SyxhO0k7STtLO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOztJLE87Rzt5QixZOztJOzs7Ozs7Ozs7Szs7STtHOztJOzs7NkMsVTs7aUQsVTt3RCxVOzs7Z0M7O0k7Rzs7STtLO0ssTTtLLG1COztHOztJOztPLE87O08sTztlLE87O0c7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7O0k7Ozs7O0k7Ozs7Ozs0Qjs7Ozs7O2dCOztJO0c7O0k7SyxRO0ssVTs7Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0Qix5QjtvQixZOzBCLHlCOzJDO0c7NEIsb0I7OEIscUI7OEIscUI7RztJOzs7c0IsTyxrQzs7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7O0ksVTtJO0c7Rzs7Ozs7Ozs7Ozs7OztJOzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzBCLGU7MEIsZTsyQixnQzt1Qix5Qjs7STtJO2U7Rzs7STtJLHFCO0c7Rzs7STtJOzs7OztJO0k7Rzt5QixpQzt5QixxQiwyQjs7SSxJLGlCLGlCO0k7Rzs7STtJLE87Rzt5Qix5Qjs7SSxzQixpQixrQjs7Rzs7STtJLE87Rzt3QixxRDs7STs7TyxPOztPLE87ZSxPOzs7O0k7SyxPO0k7SSxVO0ksTztHOztJO0ksTztHOztJO2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7OztVLE07VTs7OztJO0c7O0k7Ozs7OztLO0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7O0c7cUMsbUIsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7OztJLFM7O0k7O0c7MkIsbUM7bUMsMkI7O0k7a0Q7STtHOztJO2tEO0k7Rzs7STtrRDtJO0c7O3NCO0csWTs7STs7OztHOztJO0k7Ozs7O0s7O0c7Ozs7Ozs7Ozs7Uzs7Ozs7OztNO007O0s7Ozs7STs7Ozs7USw2Qjs7O3dCOztJO0c7O0k7STs7Ozs7Szs7Rzs7STs7Ozs7O1E7O1MsTzs7Ozs7O08sYzs7NEIsZTs7Szs7Rzs7STs7O0s7TTs7O007O087Ozs7OzttQjs7Ozs7Ozs7OztJO2M7Szs7O00sTTs7OztHOztJO0k7O0s7OztNLEcsK0I7Ozs7O0s7O0c7O0k7STtLLEk7OztLOztHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxJLHVCO1U7SSxJLHVCOzs7OzBCOztROzs7USxNOztJO0c7MEIsc0I7MkIsNEM7O0ksSSx1QjtlOzs7SyxrQjtxRDtLO0k7SSxPO0c7O0ksSSx3RDs7OztNLFc7O007Ozs7Ozs7Rzs7SSxJLGdCOzs7OztROztzQzs7Ozs7Ozs7O1k7O1ksTTs7Ozs7OzRCLHNCOztJO0c7O0k7Ozs7O1E7UyxJLGlCOztTOzs7NEI7O0k7Rzs7STs7Rzs7STs7Ozs7VTtXOztJO0c7O0k7Ozs7OztRLGdCLG1COzs7MEI7OztJO0c7O0k7Z0I7SSxtQixpQjs7O0s7TTtPO087Ozs7Ozs7O00sTzs7O0k7Rzs7STtJO0s7Ozs7UyxtQjs7OztXLE87OzsyQyxPOztTO1E7TSxTO007Ozs7Ozs7Ozs7UyxNOztLOzs7O1M7UyxPO1E7TSxVO21COztLOztHOztJO0ksbUMsTyxpQjtHOztJO0k7O21DOzs7UTs7USxvQyxTO1EsTzs7MEIsTzs7NEIsTzs7O21CLE87USxvQixXO1EsTzs7UTs7O1MsVztRLE87Ozs7USxNOztRLG9CO1EsTzs7UTs7UTs7O1MsVztRLE87Ozs7OztZO1ksTztXO1EsTzs7O0c7O0k7STtnQyxPLGlCO0c7Ozs7cUM7OztNO007Ozs7Ozs7O0k7O0ssTzs7O3FCLE8sb0I7SSxPOzs7STs7SyxXOzs7O0ssMkMsTztLO0k7SSxXOzs7STs7NkMsTyxvQjtLLE87Ozs7SztLLE87STtJLE87OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksa0IsTztJO0k7SSxrQixPO0k7O0c7O0ksbUIsTztJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxXO087TyxPOzs7Tzs7Ozs7VztXLE87VTtPOzs7OztXO1c7VyxXO1csTztVO08sTzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlOzs7Ozs7OztROztTOzsyQixrQixPLHNCO1EsTzs7Ozs7O0ssTzs7STtHO3VCLFM7O0k7O0ssaUM7Ozs7O1E7Ozs7O1M7UztTLE87Ozs7Ozs0Qzs7Ozs7O0s7STtJLEksUyx1Qzs7Ozs7OzJCOzs7STtJO0c7O0k7STs7O08sTTtNOzs7aUI7OztHOztJO0k7O0ssNkI7Szs7OztROzs7OztTO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1E7O1Esb0I7O1EsTTs7USxNOztROztROzs7UyxRO1EsWTs7Ozs7OztZO1ksYztXO1EsaUI7OztHOztJOztHOztJLEs7SyxNO0ksYzs7O0s7Ozs7Ozs7O0c7O0k7SztLLE07Ozs7SztLLE87STtJO29CLG1CO0k7STtHO0c7Ozs7cUM7Ozs7O00sVSw2Qjs7Ozs7OztHLFc7O0k7dUIsc0I7STs7O0c7O0k7OztHOztJLDRCOzs7O0ssTTs7O0ksRyxtQzs7STtHOztJOzs7MkI7OztHOztJLGdEO0k7Rzs7SSw4Qjs7STtHOztJLDhCOzs7SyxPOzs7SSxPO0c7O0k7O2lCOztLLEc7TTswQztLLEk7O0c7O0k7OztPLE87OztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7O0c7RyxvQjs7STs7Rzs7STs7STs7Ozs7O0s7Ozs7K0I7OztLO0ssTzs7STtHOztJO2dDO0c7O0k7O2tDO0ksTztHOztJOztrQztJLE87Rzs7STs7O0c7NEIsZ0Q7O0k7OztHOztJOzs7Rzs2QixnRDs7STs7STtHOztJLDRDOzs7ZTs7STs7Ozs7TyxNO007Ozs7OztLLG9DOztLLEk7Ozs7O3VDOztJOzs7O00scUI7Ozs7O0s7Ozs7OztROzs7Ozs7SztJO0ksTzs7Z0MscUM7O0k7Rzs7STtHOztJLEksMkI7STtHOztJO0s7SztJO0c7O0ksSSxpQjtJO0c7aUMscUM7O0ksSSxpQjtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEk7Ozs7RzttQyx1QjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJOzsyQixrQixzQjtJLE87Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLFcseUI7OzsyQixPOzs7Rzs7STtjO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7Rzs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUyxJOzs7Ozs7Ozs7STtHOztJO2M7YztHOztJLGM7O3FCO0ksUztZOzs7SztNLEs7O2E7O1c7OztJO2dCLE87SyxZOzs7O007O0ssSTs7Rzs7SSxVO0k7bUI7Rzs7O0s7Ozs7Ozs7VyxPOzs7Ozs7OztVOzs7Yzs7VSxPOzs7Ozs7Ozs7Ozs7OztVLE87Ozs7Ozs7Ozs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07OztROztTOztZOztRLE87OztRLE87OzBDOzs7USxtQjtRLE87OztRLE87OztRLE87OztRLE87OztRLE87O1E7O1M7O1k7O1EsTzs7MkIsTzs7UTs7UztTOzs7O3lCOzs7Ozs7NkI7YTs7O2lCOzthOzs7OztTLDRCO1EsTzs7O1E7Ozs7MkI7UztVOztVLGM7O1csb0IsVTs7Ozs7O1U7VztZOztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7O1ksUTs7WSwrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZSxXOzs7ZTs7a0I7OztlLFc7Ozs7Yzs7Ozs7dUI7O1c7OztXOzs7O3dCO1M7Ozs7O1UsTzs7OzsyQixPOztROztTOztZOztRLE87Ozs7UyxPOzs7SywwQjtLLE87OztLO0s7Ozs7NEI7O2dDO2dCOzs7Ozs7STtJO0c7Rzs7OzttQjs7c0IsTzs7SztLOzs7O0csZ0M7cUIsTyx5Qzt3QixPLDRDO0c7Ryw2Qjs7STs7OztRLE87Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SyxHO007TTs7SztLO0s7SztLLE87O0k7OztJO0s7O007O1M7O0ssTzs7STs7O0k7Ozs7USxPOzs7Ozs7Ozs7OztRO1E7UTtRLE87O1E7OztTLDRCO1EsTzs7MEI7O3VCLE87O1E7OztTLGM7USxPOztROzs7OztTOztZOzs7YyxPOztZOzs7O1k7O2E7Ozt1QixPO3NCOzs7OztZOzs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1E7UTtTOzs7WTs7OztZLE87O1c7UTtRLE87OztRLE87Ozs7O1E7UTtRO1E7USxPOztJOzs7STs7O2tCOztNO007Ozs7SSxPO0c7Ozs7O2lCO00sdUI7TSxPOzs7O007OztPLDRCO00sTzs7OztLO2M7Ozs7Ozs7SztlOzs7aUI7aUI7STtJO0s7O0ksTzs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7RyxJLGtDO3FCLE8seUM7O0ksTztjO2M7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7Ozs7OztJLFU7dUIsTywwQztJO0s7O0ksTzs7O0k7Ozs7Ozs7VyxVOztXO1k7O1csTzs7TyxPOzs7Tzs7OztRO1U7YTs7TyxPOzs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7UTs7Vzs7TyxPOzs7OztJOzs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sTzs7OztHO0k7STs7O1EsTztPO0k7O3VCLE8sK0M7STs7O1EsTztPO0k7OztRLE87TztJOzs7USxPO087O0k7OztNOztPOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7OztRLE87Ozs7OztPOzs7Vzs7OztZOzs7OztnQixPO2U7YTs7Z0I7Ozs7O1csTzs7Ozs7OztVO1E7O08sTzs7Ozs7Ozs7Ozs7USxPOztPLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztPOzs7Vzs7WTtZLE87Ozs7Ozs7O1c7VyxPO1U7OztXOzs7WSxPOzs7Ozs7Ozs7WSxPO1c7VztZOzs7VTtROztXOztZLE87O1c7Ozs7Vzs7Ozs7Ozs7VTtROzs7Ozs7TztROztXLG1COztROztXOztjOztjLE87c0IsTzs7VTtROztXLGU7VTs7O1c7Ozs7Ozs7O2MsTzs7Ozs7Ozs7Ozs7OztrQjttQixPOzttQixPO2tCO2tCO21COztrQixPOztpQjtjLE87Ozs7Ozs7OztjLE87Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztPOzs7UTs7VyxZOztXOztZLE87VztXLE87O1E7Ozs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SztNLE87Ozs7Ozs7Szs7O1M7O0ssTzs7Ozs7Ozs7OztjLE87STtLOztJLE87Ozs7Szs7O00sTzs7Ozs7Ozs7d0IsTywwQztLO007OztJO0k7dUIsTywwQztJO0s7OztJLE87Ozs7Ozs7O0c7Rzs7Ozs7OztJLFk7OztLOzs7TTs7O0s7Ozs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO007OztnQjs7Ozs7O0k7O0s7Ozs7Szs7O2M7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O1EsTzs2QixPOztRLE87TyxZOztRLE87O08sTzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJO0k7WTs7Ozs7RzsrQixvQzs7STtJO1k7Ozs7O0c7O0k7Ozs7SyxPO0k7RztpQyxzQzs7SSw4QixPO0k7RzttQyx3QzswQixzQztnQyw2Qzs7STtnQztrQztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsbUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7Uzs7OztHOztJLEksVTs7Ozs7O1M7O3VDO2lCLE87Ozs7cUIsTzs7STtHOztJLEksVTs7Ozs7O1M7O3VDO2lCLE87Ozs7O0ssTTs7STtHOztJLFk7OzsyQjs7O087O087OztPOztHOztJLEksVTs7OzRCOzs7O0c7RyxhO29DLHlCOztJOztHOztJOzs7Ozs7O0k7RztHOzs7O1EsTTtPOztJLEksTywyQjs7Ozs7UTs7OztXO29COztZLHVDOzs7OzRCOzs7bUM7OzswQztRO1E7UTs7O0k7STtLLEs7SyxXOzRCO29DO0k7STs7Ozs7Ozs7UTs7OztTO1c7Ozs7YTs7Ozs7TSxNOzs7OztTOzs7VSxzQjtVLFM7OztVLEksVTs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7OztTOzs7VTtVOzs7VTs7O1c7WSxzQjtZLE87Ozs7Ozs7Ozs7UyxTOzs7Ozs7Uzs7VSxRO1UsTztVOzs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7WSxXO1k7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7OztlOztlLFU7NkI7Ozs7OztZLE07Ozs7VTtVOzs7VyxzQjtXLE87Vzs7Vzs7OztZOzs7Ozs7Ozs7Ozs7Uzs7Ozs7YTthO1k7VSxPOzs7O0s7TSxzQjthOztJO0k7Rzs7OEIsaUM7SSxPO0c7O0k7O0s7SztLO0k7Rzs7STtLOztNLHNCO0ssVzs7O0ksb0I7SSxXOzs7STs7OztLO0s7O0s7Ozs7Ozs7Ozs7OztLOzs7TSxzQjtpQjs7Szs7O007O1M7O1U7VTs7UyxvQjtTO1UsTztVO1M7O2lCOztJLG9CO0k7WTs7Ozs7Ozs7Ozs7Ozs7Rzs7OEIsNkM7SSxPO0c7O0k7O087Ozs7UTtRLHNCO1EsUTtRO087O087Ozs7O1c7VyxvQjtXLFc7VztVO1EsTzs7Ozs7VztXO1U7USxPO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJO0s7Szs7SSxvQjtJO1k7Ozs7Ozs7O0c7OzhCLDhDO0ksTztHOztJOztLO0s7O0s7Szs7SSxvQjtJO1k7Ozs7Ozs7Rzs7OEIsK0M7SSxPO0c7OzhCLCtCO0ksTztHOztJOztLO0s7O0k7Rzs7OEIsK0M7SSxPO0c7O0k7O0s7Ozs7SSxvQjtJO0ssTztLOztJLG9CO0ksVztJO0c7OztLO0k7SSxPO0c7O0k7OztPLEksWSxtQzs7Ozs7O1k7O3NDO29CLE87Ozs7O3dCOzs7OztROzs7O1E7Ozs7UyxPO1M7UTs7TyxxQztPO2lDOzs7O0k7Ozs7Ozs7VztZLE87WSxPO1csTztVOzs7Ozs7UyxXO1MsTztROzs7Ozs7O1E7Ozs7O1MsTztTOzs7OztROzs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLE87Uzs7Ozs7UTs7Ozs7OztTLE87UztTOzs7Ozs7UTs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7UTs7Ozs7O1MsUTtTO1M7Ozs7Ozs7SyxvQjtLLE87STtJLE87Rzs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7Ozs7Ozs7Tzs7O087OztPOztHOzs7SztJO0ksTztHOztJLG9CLHdCO0k7Rzs7STs7SztLOztJLG9CO0ksVztHOzs7SyxVO0ssTztJO0ksTztHOztJOzs7Ozs7Ozs7SztxQzs7O0s7cUM7OztJOzs7ZTs7Z0I7Ozs7Z0Isa0I7Z0I7aUIsVztpQjtnQjtlO2UsTzs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOztJO0k7STtLLE07Szs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtLOzs7Szs7O2lDLFM7SztNLFE7TSxNOzs7TTs7OztTOzs7Ozs7Ozs7Ozs7SyxPO0k7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7OztLOzs7Ozs7OztLO0s7OztTOztTO1E7SztLOzs7UztTO1E7SztLOzs7Ozs7Ozs7Ozs7Ozs7OztLO087Ozs7WTs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0ssTTtLLE07SyxNO0s7Tzs7SyxNO0ssTTtLO087Ozs7WTs7Ozs7STtLOztJO0s7SztJO0c7b0IsVywrQjtHO0ksaUI7SSxtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztLO0s7TTtPLE87TyxNO00sVTs7Ozs7bUI7O1Usb0IsUTtVO1UsYztvQjs7O29COzs7Ozs7TSxPOztJO0k7STs7Rzs7SSxPO0c7O0k7Ozs7O3dCLFk7WTtJO0s7O00sNEI7TTtNLE07cUI7OztJO0c7O0k7Szs7O0kseUM7STs7Syw4QjtLLGM7SyxRO0ssTTs7O0ssTTtLOzs7Ozs7O1E7Ozs7Ozs7OztJOzs7O0c7O0k7Ozs7O0k7Szs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7OztHO0c7SSxPO0k7O0k7OztJOztpQixNOzs7O00sRyxpQzs7Ozs7Ozs7VTs7Ozs7OztLOztHOztJOztLOzs7TTtNO007TTs7O1M7UyxHOzs7Ozs7OztRO0s7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O2E7Ozs7Ozs7Ozs7O1M7O0s7O0k7Rzs7STs7Szs7O007TTtNO1E7VTs7O1MsWTtTOzs7VTs7Ozs7VTs7YTs7Ozs7Ozs7Ozs7UztTO1M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0ssSztNO007TTs7SztLOztNLE07Szs7TztTO00sTTtLOztROzs7SyxNOzs7Ozs7O007TSxNOztLO0ssTTs7Rzs7STtJO0k7STtLLE07SztJO0k7STtHOztJOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7OztJLHVCOztJLFc7RztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7dUIsTSxnRDtHO0k7OztRO1M7VSxPO1UsVzs7OztnQzs7O1EseUI7TztJOztJO0ssTTtLO0s7SSxXO0c7O0k7Ozs7OztJOzs7STs7STtHOzs7K0Isc0M7STtLO087SyxNO0ksTzs7Ozt3Qjs7Ozs7O0s7Ozs7O0ksSSxVOzs7MkI7OztjOztJOzs7STs7O0ssVzs7SztLLE87O0ksTztHO2dDLGtCOzZDLCtCOztJLFU7d0IsTyxpQjtJLFU7STtJO0c7Ozs7SyxVOztLLE87STtJLE87OztJOzs7SztLO0s7SztJLEc7Szs7O0s7Ozs7OztpQjs7SztJO0k7O0ssSTs7Ozs7O007OztJO0k7Rzs7STtJLEc7SyxNO0ksSSxVOzs7OzZCLE07SyxZOzs7TTtNO08sSztPO007O0s7SyxNOztjLE07O0k7Rzs7STtJO0ssTTtLO0ssSztJO0k7RztnQyw2Qzs7STs7SyxVOztLO0ssVTtLOzs7O1UsSSxvQyxhOzs7O1k7WSxPOzs7WTs7YSxNO2E7WSxPOzs7O1c7Ozs7Ozs7aUI7Ozs7Ozs7OztjLE07Ozs7dUI7Ozs7O3VCOztXO1csTzs7UztNLE87Ozs7OztJO0c7O0k7SSxJLFc7Ozs7TSxNOzs7SSxXLE07O0k7Rzs7STs7O0ssTTtJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87OztJOzs7Ozs7O0ssUTtLO0k7Rzs7STs7SztLO00sTztLO0s7TSxNO007Ozs7TTtLOzs7O007OztVOztVO2tCOztNO0s7SztLO0s7STtJLDhCLE8sK0I7SSxPO0c7O0k7Szs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7USxPOzs7Ozs7TTtHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0kscUI7SSxvQjtJLHNCOztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07OztHOzJCLFM7O0k7O0s7Ozs7O007TTs7O00sSSxhOzs7Ozs7O007OztVOzs7OztlLFcsTzs7ZSxPO2M7OztVO1M7TyxPO2dCOzs7Ozs7SSxXO3lCLHFCLDBCO0ksVztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7Rzs7STtJO0s7TTtPLFU7OztPO007Ozs7OztvQyxNOztPOzs7UTs7O08sYzs7Ozs7OztNO087UTtVLGlCO1E7Ozs7O1MsSTs7OztVOzs7O1M7OztPOzs7Ozs7OztHOztJOzs7OztLO007TztTLGlCO087Ozs7Ozs7Ozs7O0s7OztNOzs7UztTLGM7UTthO0ksVzs7SztLO0k7SSxXO0ksTztHOztJO0k7O0s7Ozs7UyxPLGM7UTtNLFE7TTttQzs7OztNOzs7VSxPO21EO1M7TztTLFc7Ozs7Ozs7O087TyxPLGdDO007Ozs7Rzs7STtJOzs7O2dDLE8sc0M7Szs7bUM7Ozs7Ozs7VTtXLGE7VywyQjtVLE8sYztTO007Ozs7Ozs7TztPLE8sOEI7TTs7OztHOztJO0k7Szs7c0Msb0I7TSxRO007Ozs7O0ssSSx1QixjOzs7NkI7OztJO0ksTztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQztHO0k7OztRLE07TztJOzs7USxNO087Ozs7Ozs7OztJLFc7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0s7TSxPOztJOzs7Ozs7Ozs7Ozs7O0c7aUMsbUM7O0ksVztHOztJO2tEO0k7Rzs7STtLO0s7SyxPOzs7OztJO0s7O3NDLG9CO00sUTtNOzs7OztLLEk7Ozs7Ozs7Ozs7O0ssVztTLHFCLGM7Ozs2Qjs7O0k7STtLLE87SyxPO0s7SSxPO0c7NkIsUzs0QixnQjs2QixnQjtHO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07Tzt3QixpRDs7STtLLG1CLE87SyxPOzs7SSxPOztHO2lDLHVCO2dDLGlDO3FCLE8seUM7O0ksVztJLGlCO0c7O0ksTztLO0ksaUI7Ozs7O007Tzs7USxnQzs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7O1k7Rzs7STs7SztLO0s7SyxLO0s7OztLLDhCOztLO0k7STtLLFM7SyxPO0s7SyxjO0ssa0I7SztLOzs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjtJOztJLE87Rzs7STtHOztJLE87Rzs7SSxPOztHOztJLE87O0c7O0ksTztHOztJLE87Rzs7STtJO0k7STtJO0k7Rzs7STtJO0k7STtHOztJO0k7STtHOztJLFk7Ozs7SSxPOztHOztJO3VCOztJO0c7O0k7cUI7SSxJLFcsNkM7Ozs7SyxJLFEsa0M7Ozs7OztvQjs7Ozs7O0ssWTtLO0s7O0c7O0k7O1EsSTs7O0ssd0I7Ozs7SyxxQjt1QixNOztJO0c7O0k7O3lCOztPLDhCO08sTzs7Tzs7O1E7USxNO08sTzs7O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7Tzs7Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7O0k7O3lCOztPLDhCO08sTztlLE07O0c7O0k7O3lCOztPLDhCO08sTztlLE07O0c7O0k7O3lCOztPLDhCO08sTztlLE07O0c7O0k7O3lCOztPLDhCO08sTztlLE07O0c7a0MscUM7a0MscUM7NEMsZ0M7c0MsNkI7Ozs7SyxNO0kscUIsTzt3QjtJLEksUyx5Qzs7O0s7O0ksTTs7O0ksWTs7OztPLEksVzs7OytCOzs7Tzs7O08sSTs7OztTLE07OztPLEksWTs7OztTLE07OztPLFc7OztROztPLE07OztPLEk7Ozs7UyxNOzs7Tzs7O08sSTs7OztTLE07OztPOzs7UTtTO2dDLE8sZ0M7VSxTOzs7OztVLE07OztROztPLE07O0c7OEIsaUM7cUMsaUM7O0k7O3lCOztPLDhCO08sbUI7ZSxNOztHOztJOztLOzs7STtHOztJLE87Rzs7STtHOztJO0c7O0k7O08sa0IsK0I7cUIsTTs7Tzs7Tzs7O1E7Z0I7TztvQixNO1EscUM7b0M7Ozs7ZSxNOztHOztJOztPOztRLE87USxPOztPOztPOzs7UTtRLFM7USxRO087ZSxNOztHO0csdUI7MEMsa0M7d0MsMkI7O0ksVztJOzs7TTs7TyxPO2tCOzs7Ozs7Ozs7O0c7O0k7OztPLFUsMkI7Tzs7Tyw4Qjs7Ozs7Tzs7O1E7UTs7UTtPOzs7O0k7OztNLHNCOzs7TztRLE87USxPO087UTtTLE87b0I7OztnQjs7Ozs7OztLOzs7Ozs7TTs7cUM7Ozs7O007Ozs7Rzs7SSxJLCtDOzs7OztNLE07O0s7O0c7O0k7O087O08sOEI7O2UsTTs7Rzs7STs7Tzs7Ozs7USxHO1MsVztTLEs7Ozs7Ozs7O2UsTTs7Rzs7STtJO0s7OztNLEk7Ozs7Ozs7Ozs7O0s7O0c7cUMsaUM7O0ksSSw2Qjs7OztLLHVDOztLOztJLE07Rzs7SSxJLDZCO2dCLE07O0k7Rzs7STtnQixNOztJO0c7O0k7STs7OztRLEksbUMsYzs7O2dDOzs7OztnQjs7Rzs7SSxXO0k7SyxtQjtLOztNOzs7Ozs7SyxJLEksTzs7OztNLFM7TTs7O0s7SztJO0ksSSxnQjtJO0s7Ozs7Ozs7Ozs7OztzQjtHOztJLFU7O0ksTztHO0c7O0ksaUI7SSxtQjs7O0ssRztNLFc7TSxLLHlEOzs7STtLOztLOzs7OzRCOzs7Rzs7STtxQixPLGlCO0k7SSxXOztJO0c7OztLO0ssTztJO0k7SztLLG9DLHVCOzs7TyxZOzs7Ozs7Ozs7TyxZO087NEI7Tyx3QjsyQixpRDtPOzs7UTtPO08sTztNOzs7Szs7Szs7O2U7ZTtnQjtpQixVO2lCO21COzRCOztnQjs7ZSxtQjs7ZTtjOztHOztJOzs7O0c7O0k7MkIsTyw4QjtJLE87Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7OztXO1csK0Q7VztVO08sTzs7Tzs7O1E7K0IsZ0I7UTt5QjtRLE07TyxPO2U7O0c7OzBCLGdCOzs7Tzs7UTt5Qzs7O087OztRO1E7O1c7O1EsTTtlOzs7O3dCO0ksTztHOztJOztPLHNCOztRLE07O087UTtROzs7OytCOzs7O08scUI7TztRO1E7Ozs7K0I7Ozs7a0I7O08sTzs7Rzs7SSxJLEksTzs7Ozs7O0ksTztHOztJOztLLE87SSxPO0c7MkQsTztHO3VELE87Rzs7STs7Ozs7OztLOzs7Tzs7Tzs7UTs7Ozs7Ozs7OztROztXLFk7VyxvQixPO1cscUI7Ozs7Ozs7Ozs7O1c7OztZLGlCO1k7Ozs7O1c7Ozs7OztZLG1CO1k7OztZLGtCO1k7Ozs7Ozs7O1c7Ozs7OztZLG1CO1k7OztZLGtCO1k7Ozs7Ozs7O1c7Ozs7Ozs7WSxtQjtZOzs7WSxrQjtZOzs7Ozs7OztXOzs7OztZLG1CO1k7OztrQyxPLG1DOzs7O1k7YztZOzs7Ozs7OztXOzs7Ozs7WSxtQjtZOzs7WSxrQjtZOzs7Ozs7OztXOzs7Ozs7WSxtQjtZOzs7WSxrQjtZOzs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO1E7OztXO1c7O2M7OztlLFM7ZTs7OzsyQjs7Ozs7YztlO2U7ZSxPO3FCOzs7Yzs7O2U7ZSxhO2UsTztjOzs7OztlOztnQixPO3NDO2dCLE87OzttQjs7a0I7ZTs7OztlOztnQjtnQixPO3NDO2dCLFE7OzttQjs7O2tCO2U7OztjO2U7ZTtlLE87cUI7Yzs7ZTs7O2U7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxRO2U7ZSxRO2U7ZTtlO2dDOzs7Yzs7OztlLG9CO2UsTztjOzs7Z0IsTTtlOztnQjt5Qjs7OztjO2UsUztlOzs7Ozs7Ozs7O2U7ZTtlLE87cUI7Ozs7O2M7OztlOzJCO2UsVztlO2lCO2U7ZSxPO3FCOzs7O2M7OztlLFM7ZTtlO2U7ZSxPO3FCOzs7Yzs7O2UsUztlO2UsTztxQjs7O1U7TztPOztPOzs7UTtRLGM7USxPO1EsTztRLE87Ozs7OzZCOzs7TztxQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0ssSSxlLHVCLHNCO0s7SyxXO0s7Ozs7cUI7OEI7Ozs7OztVOztVLFc7VSxPO1M7TSxPOzs7Ozs7O0c7O0k7O0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssZ0Q7Ozs7aUIsMEI7Tzs7Ozs7Ozs7OztHOztJO0ksaUI7O0s7STtJO0k7Szs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STt5RCxlO0s7O0ksSSxxQjs7Ozs7OztLOztNLFM7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO1c7aUI7VztZO1k7O2U7Ozs7Ozs7Ozs7OztXO1csVztXOzs7OzJCO29DOzs7OztnQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MkI7O2dCO2dCLE87ZTtZOzs7O1M7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCOzttQjs7Szs7TTtNLGU7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO2lCO1c7WTtZLHNCO1c7VztZLE87WSx1Qjs7Ozs7Z0I7O2lCOzsyQjs7Z0I7Z0IsTztlO1k7Ozs7Uzs7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCO00sZTs7O0k7Szs7O0s7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SztLLE87SztJOzBDOzs7STtLOztNLGU7TTtNO1k7TTtPO08sc0I7TTs7OztVOztXOztxQjs7O1U7VSxPO1M7TTs7O0k7OztLOzs7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SztJO0k7SSxhO0k7Szs7TSxrQjt5Qjs7NEI7STtLOzs7Szs7O0s7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOzs7Szs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLOzs7Szs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7bUMsMkI7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLOzs7O0s7Szs7Rzs7OztJOzs7SztLLE87STs7Ozs7Ozs7Ozs7OztHOztJO0k7Rzs7STtHOztJO0k7Rzs7STs7O0s7b0MsZTs7O21DLGU7Ozs7Ozs7TSxNOzs7YTs7O2dCO0k7STtHO3VDLG9DOztJO0k7RztvQyxpQzs7STtHOztJLG9CLE87STs7Ozs7Ozs7Ozs7OztHOztJO0ssSztLO0s7STtHOztJO0ssSztLO0k7Rzs7STtLLEs7SztLO0k7Rzs7SSxTO0k7Rzs7STtLLEs7SztJO0c7O0k7SyxLO0s7SztJO0c7O0k7SyxLO0s7STtHOztJO0c7O0k7O3lDOzs7Tzs7O087OztPOzs7Tzs7O087OztPOztHOztJO0k7Z0I7Szs7O007Ozs7Rzs7SSxXO0k7Rzs7STtLLEs7OztLOzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJO0ssSzs7O0s7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLEk7Ozs0Qjs7O3FCOzt1Qjs7O0s7Ozs7NEIsTyxpQixxQjs7O0s7STs7Szs7Ozs0QixPLGlCLHFCOzs7SztJO0k7Szs7Syw0Qix5QjtLOztLLDJCLHdCO0s7O0sseUIsMEI7Szs7Syx3Qix5QjtLOztLLDJCLHlCO0s7O0ssMEIsMEI7Szs7SywwQix5QjtLOztLLDBCLDBCO0k7Ozs7Ozs7Ozs7Ozs7O0c7OztLO00sTTswQjs7SyxHLDhCO0ssTTtJO0ksSTs7OzRCOzs7O0s7OztNLEc7O08sVzs7O0ssTTtJOztLOzs7TSxHOztPLFc7OztLLE07STtJOzs7O0s7SztLO0s7SztLO0s7STs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxxQjs7SyxNO0k7Rzs7STtJO0k7STtLOztlO2U7SyxjO0ssaUI7SyxpQjs7OztLOzs7O1U7O3VDOztTO007O0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7VTs7aUI7Ozs7Ozs7OztXOzs7Ozs7UTtLOztJO0c7O0k7SztPOzs7Ozs7SyxLO0s7O0ssTTs7STtHOztJOzs7Ozs7Ozs7Ozs7OztLOztJO0c7O0ksd0I7SztJO0ssTztLLE87SSxPOzs7Rzs7STtLLE87SyxPO0ssTyxXO0ksTztHOzs7STtJO0k7SyxPO0ssTztLO087O1M7OztJO0k7Rzs7STsyQixXO0c7OzsrQiw0QztJOztHOztHO0k7O0c7RyxnQztHO0ksUTs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOzt5QixPLDBCO0ksTztHOztJLGtCO0ksTTtHOztJLFU7O0k7OztLO007UTs7VztNLE87TSxPO0ssTztJO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7SSxXO0ksTztHOztJLFU7SSxvQjs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJLFU7Ozs7SyxJLFc7Ozs7OztLOztJLFc7SSxPO0c7O0ksVTtnQjs7O0s7OztNLEksVzs7Ozs7O007Ozs7SSxNO0c7O0ksVTtnQjs7O0s7OztNO08sVzs7Ozs7OztNOzs7O0ksTTtHOztJO0c7O0k7OztTLEk7OztNO08sSSxXOzs7Ozs7Ozs7Ozs7O0k7SyxrQjs7Szs7OztLOztLOztJLEk7Ozs7TTs7O0k7STtHOztJO2dCOztLOztNO00sTztLO0s7STtJLE87Rzs7STs7Tzs7UTs7O087O087OztROzs7Tzs7TztROzs7O1E7VTs7Tzs7Rzs7STtLOzs7Szs7OztNOztLOzs7a0I7O0k7Rzs7STs7O0s7OztNOzs7TTs7Ozs7SztLO0k7STtLLGtCO0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVzs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVzs7OztTOzs7TztPO087O08sTTs7Rzs7STs7TyxnQjtrQjs7OztXOztZO1ksTztXO1c7VTtPLE87Ozs7Ozs7O1EsSSxhOzs7Ozs7Ozs7OztjO2E7YTtZO1MsTzs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7Ozs7OztRLEksWTs7Ozs7Ozs7Ozs7YzthO2E7WTtTLE87OztPOztPLE07O0c7O0k7O0ssTTs7STtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0k7Ozs7OztRO087OztPOztPO1E7OztPOztHOztJO0k7Rzs7STtJLGlCO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7SSxJOzs7Ozs7O087Ozs7O0k7Rzs7STs7SSxzQjtHOztJO0ksSTs7OzRCOzs7Ozs7Ozs7VTtTO1M7UTtLLE87O0k7Rzs7STtJLEk7Ozs7Ozs7Tzs7Ozs7STtHOztJOztJLHNCO0c7O0k7SSxJOzs7NEI7Ozs7Ozs7O2lDLDRDO1M7UTtLLE87O0k7Rzs7STtJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STtHOztJLEk7Ozs7SyxhO0ssSTs7OzZCOzs7Szs7STtHOztJLEkseUI7Ozs0Qjs7O0k7Rzs7SSx1QyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJO0ssVztLOzs7ZTtlLE87Yzs7OztJOztLOzs7Szt5QjtJLG9CLE87O0ssTyw0QjtJO0ksTztHOztJO0s7OztNOzBCO0s7O00sTzs7O1MsWTs7UyxPO1E7SyxPOztJLFk7NEIsTyx5Qjs7STtLOzs2QixzQixzQjtNLFE7TTtnQjtLOzs7OzRCLHdDO007USxXOzs7O0c7O0k7O0s7OztlO2U7Z0I7O21COzRCO2dCOztpQjttQjtnQixPOztlLG1CO2U7O2dCO2tCO2UsTztjOzs7O0k7O0s7OztLO3lCOzs7SyxTO0ssTztJO0ksTztHOzs7SyxnQjs7SyxPO0k7c0IsYTt1QixjO0k7SztHOzs0QixPLDJCO3NCLGE7dUIsYztJO0s7Rzs7c0IsYTt1QixjO0k7SztHOztrQyxPLGlDO3NCLGE7dUIsYztJO0s7Rzs7c0IsYTt1QixjO0k7SztHOzttQyxPLGtDO3NCLGE7dUIsYztJO0s7Rzs7c0IsYTt1QixjO0k7SztHOztJOzs7Szs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsdUM7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7Ozs7SyxJLEs7SyxXO0k7SSxXO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7STtJOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0ksYztJOzs7Ozs7Ozs7Ozs7O0c7RztJOzs7USxNO087STs7O1EsTTtPOzs7SyxXO0ssTztJO0k7OzhDLHFCO08sTzs7Ozs7K0IsNEI7TyxPO2U7O0c7OztLLFc7SyxPO0k7SSxPO0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJO0k7OEMsc0I7Ozs7Rzs7STtJLDZDLHlCOztHOztJO0ksdUMseUI7O0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJO0k7K0Msc0I7O0c7O0ksSTtJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7O087TztrQjtxQztPLE87Ozs7Ozs7OztPO087OztPO087OztPO087OztPO08sSTs7OztTOzs7TyxPOzs7Ozs7Ozs7O087TyxJOzs7O1M7OztPLE87Ozs7Ozs7Ozs7TztPLEk7Ozs7Uzs7O08sTzs7Ozs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7OztPO08sTzs7Ozs7Ozs7Ozs7O0k7OztPO08sRztRLFc7UTs7O1E7UyxPO1MsTztROztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7TyxPOzs7Tzs7OztJLHVCO0k7O0s7SztPOztVO0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztpQyxxQjs7STtjO2M7O3VCLGlCOztJLEksTSxxQixXO0k7Rzs7STs7O0ksTztHO3lCLHVCOztJLFk7STtpQjs7ZSxPO0ssbUIsSTtXOzs7Rzs7STtHOztJO0s7O3dCOzs7OztTLG1COzs7O0s7O0ksTztHOztJLGtCO0kscUI7RztxRDtHOztJOzt1Qjs7Ozs7OztXOzs7Vzs7Ozs7Ozs7Uzs7O1E7Ozs7cUM7O0k7RzswQixPLHlDOztJO0c7O0ksc0M7SSxPO0c7O0ksMkI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJO0c7O0ksOEI7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPLGtDO087OztHO2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7Ozs7MkIsb0IsTyxzQjtRLE87OztRLE87OzRCLE87OzRCLE87OzRCLE87OztRO1EsTzs7STtHOztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7Ozs7OztZO1ksbUI7VztRLFc7OztRLFc7O3lCLFc7O3NCLFc7O3dCLFk7O1EseUMsTTtRLFk7O0k7Rzs7STs7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7a0MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O3dCLG1CLFU7SSxPO0c7O0k7SSxPO0c7O0k7Rzs7STtJO0s7O0k7cUIscUM7STs7Rzs7STtJLE87Rzs7STtHOytCLE8scUM7O0k7Ozs7Ozs7Ozs7OztZLEk7Ozs7OztROztRLHdDO1E7Uzs7Ozs7O1U7Ozs7Ozs7O1M7Ozs7K0I7Ozs7STs7O3lCLHlCO0k7Rzs7O0k7Szs7K0IsVzs7O21CO0s7STtJO0s7STs7Szs7Ozs2Qjs7Uzs7O1U7OztVOzs7VTs7aUM7Uzs7c0M7Ozs7OztLO0k7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O3VCLHVCOztJLHFDOztJO0c7O0ksWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxNOzs7Ozs7Ozs7Ozs7OztPLE07OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TSxJOzs7TSxJO007TztxQjtPOzs7O1E7O1EsSTs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0s7aUI7Szs7OztNOzs7O0s7OztPLFU7TyxPO007TTtPO1E7Ozs7O007OztPLFU7O087Ozs7OztRLE07USxRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7TyxTO087O007TztTOzs7OztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0c7O0kscUI7STs7O2tCO0c7O0k7O3FCLE87OztPLE87Ozs7TyxPOzs7Ozs7Ozs7Rzs7STtHOzs7SSxZLE87O0ksTzs7O0k7OztPLE87OztPLE87OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7cUIsTzs7cUIsTzs7OztRLE87O08sTzs7O3VCLE87O3VCLE87O3VCLE87O3VCLE87O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0k7STs7Rzs7STs7SztLO0ssTztJO0ksTztHOztJO0k7O0s7SztLLEksbUI7bUM7OzswQixPOzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTs7O1E7UTtTOzs7WTtZOzthO2E7YTs7O1k7WTtXO1EsTzs7O1E7UTs7O1E7Ozs7O1E7UTtROzs7a0I7bUI7aUI7Ozs7Ozs7Ozs7YSxPO1k7WSxPO1c7UTs7Ozs7UTtROzs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7Ozs7OztNO087Tzs7O087OztVO1U7VTs7OztVO1U7Ozs7VTtVOztNLEk7Ozs7c0M7Ozs7UyxPOzs7Uzs7Ozs7UyxPOzs7UztTOzs7UztTO1M7OzttQjs7b0I7O3FCLE87cUIsTztvQixPO21CO21CO29CLFE7b0IsTzttQjttQjtrQjs7Ozs7UztTOzs7UztTOzs7UztTOzs7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7UztTOzs7OztHOztJO0k7O0s7SztLOzs7OztTOzs7O1k7WTtZOzs7O1k7WTtZO1k7Ozs7WTtZO1k7Ozs7WTtZOztTO1E7TSxNO007bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7Ozs7O1E7UTtRO1E7O1M7O1M7Uzs7VTs7O2dDOzthO2E7O1M7Uzs7UTtROzs7VTs7VTs7Ozs7WTs7OztZOzs7O1k7O1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTs7Ozs7OztTO1M7Uzs7O1E7UTtROzs7USxPOzs7USxPOzs7UTs7Ozs7UTtROzs7UTtROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7O1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1EsTzs7O1E7UTtROzs7O0c7O0k7OztJO0k7STtJOztHOztJO0k7O0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SztLOzs7STtJLE87Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7O1E7Ozs7O0c7O0k7STtJO0k7Ozs7O087Tzs7Ozs7Ozs7Tzs7Tzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOztHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7Ozs7OztTO1M7Uzs7Ozs7O1E7Ozs7O0c7OztJO0k7STs7O0k7STtJO0k7Ozs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087O3lCOztHOztJOztLO0s7OztJO0k7OztJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7O0s7SztLLEksbUI7Ozs7USxPOzs7UTs7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTtROzs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7O0c7O0k7STtJOztHOztJO0k7STs7Rzs7SSxZOztJOzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7Ozs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7Ozs7Ozs7UztTO1M7VSxPOztTOzs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087a0MsbUIsVTtPOzs7O2dCOzs7TztrQyxtQixVO087Ozs7Z0I7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7STtJO0k7STtJOzs7SSxxQzs7STs7Ozs7Ozs7O0k7STtJO0k7STs7OztJO0k7OztJO0k7STs7O0s7Szs7O0k7SyxPOztJO0c7O0k7OztJO0k7STs7Rzs7O0k7STs7OztJO0k7WTs7STs7OztJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQywwQzttQywwQzs7O0k7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxNOztPLE07ZSxNOztHOzBDLGtDO2lDLDBDO0c7Ozt5QixvQjs2QixpQzs7SSxNO0c7O0ksTTsyQjtHO0c7O0ksc0I7STs7O0ssVztJLFc7RztHO0c7STtJO0k7STs7STtJO0ksZ0I7SSxlO0ksZTtJLGM7O0k7Ozs7O0c7O0k7Ozs7O0c7cUMsd0I7O0k7OztHOztJOzs7OztHOztJOzs7O0c7O0k7Ozs7Rzs7STtLLFE7OztxQjs7OztHOztJOztHOztJOztHOztJOztJO0c7cUMsK0I7O0k7O2dDOzs7ZSxNOztrQjtHO0c7O0k7O0s7TSxPO007O3lDOzs7O0k7Rzs7STs7Rzs7SSxJLHFDLEk7STtJO0c7Rzs7STs7OztLO0k7Rzs7d0IsTywyQzs7SSxPO0c7aUMsTyxxQzs7SSxPO0c7MkIsa0M7aUMscUM7RyxJLG1COzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7STtHOztJLE87Ozs7Ozs7Ozs7RztxQyw4Qjs7STsyQztJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxJLE8sd0I7OztNOzs7OztPOzs7Ozs7SztLLE87STtJLFc7Rzs7O0s7SyxPO0k7SSxPO0c7O0k7Ozs7TTtPLE87TyxPO08sTztNLFc7OztNOztPLE87TyxPO08sTztNLFc7Ozs7Ozs7Ozs7Ozs7O0ssRztNO087OzthO00sSTs7TTs7OztPOzs7O0c7O0k7STtLLEksTyx3Qjs7Ozs7Ozs7Szs7Rzs7STs7MkM7STtHOztJO2tEO0k7Rzs7SSxjOzs7SztNLEksTyx3Qjs7OztVLFc7VTtVOzs7VSxHLG1DOzs7O00sTTs7O0ksTTtHOztJLGM7OztLO00sSSxPLHdCOzs7O1U7Ozs7TSxNOzs7SSxNO0c7O0ksWTs7O0ssTzs7SSxNO0c7O0ksWTs7OztROzsyQixPOztJLE87Rzs7SSxZOzs7Ozs7OztTLGtCLFE7dUM7O1MsTztRO0ssTzs7SSxNO0c7O0k7STs7Ozs7K0I7OztHOztJLE87Rzs7STtJOzs7OztROzs7O0c7O0k7SSxPO0c7RyxzQjs7STs7O00sSztPOzs7O00sSztPOztLO00sUTtNLFE7Ozs7OztLOztPLFc7TyxXOzs7TyxXO08sVzs7Ozs7Ozs7Ozs7TSxHO087UTs7OztjO08sSTs7TyxJOzs7STtHOztJLFk7STs7OztLO0ssUTtrQzs7O0ssVSw2Qjs7STs7RztJO0k7STs7STtJO0ssSSxPLHdCLE87SyxXOzs7Ozs7Ozs7VTtzQjtjOzs7Ozs7O1U7O1csc0I7VSxPOzs7Ozs7O1M7Ozs7UyxtQixROztTLDBCO1M7UyxlO29COzs7O0ssYyxzQjtLLE87O0c7O0k7O0k7Ozs7STtHOztJO3dCO0ksUztJO0k7Rzs7STtnQjs7SSxNO0c7O0k7Szs7Ozs7MkMseUI7TTs7Ozs7OztVO1UsVzs7O1csTzs7OzJCLHlCO1UsTztTO007Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7O0k7SyxtQjtLOzs7STtJOztLOzs7TSxPO0ssYztJO0k7STtLLFc7Szs7OztTOzs7O3VCOztTLEksNEI7Ozs7O1UsTTs7O1E7SztLLFc7SztLO0s7SztLOzs7OztLLHFCLE87SztLO0s7Szs7RzsrQixPLG9DOztJO0ssTzs7OztJOzs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxPOztRO00sTzs7Ozs7OztROzs7Uzs7Ozs7Ozs7Ozs7O007TSxPOzs7Ozs7STtHOztJO0k7Rzs7STtJO0ssVzs7Ozs7OztVO1U7Ozs7O1U7VSxPOzs7VTtXOztXLE87Ozs7O1U7Ozs7O1U7Ozs2QixtQiw0QjtVLE87O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7SyxJOztHOztJO0k7SztNLE87TTtNLE87SyxXO3lCOzs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1U7VyxPOzs7Ozs7SywwQjtLLE87O0c7O0ksVztJO0s7SyxXO0s7Ozs7OztLO0ssTTs7Rzs7SSxJLE87O3lCO0s7OztNLDBCO00sTzs7Ozs7OztHOztJLEksb0M7Ozs7O0s7O0c7O0k7STtLLEksTzs7eUI7Ozs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7OzttQyxtQjt1Qjs7VTs7Ozs7O2U7Z0IsTztnQixzQjs7YzsyQjtVOztZLE07VyxXO1c7VztXOzs7Ozs7VztXLDBCO1csTzs7Ozs7Ozs7cUI7Vzs7Ozs7Ozs7O1c7c0I7VTs7O1M7O1UsUTtVOzs7O3FCO1c7Ozs7Ozs7UztTLDBCO1MsTzs7O29CO1U7VSxHLCtCO1U7Ozs7OztLO0ssMEI7SyxPOztHOztJLEksTzs7SSxXO0ksSSwwQjs7OztLO0s7O0c7O0ksSSw4Qjs7Ozs7Szs7Rzs7SSxJLE87OztTLGtCOzs7Ozs7O0ssSTs7OztJLGlCO0k7STtLOztJOzs7O3dCOzs7UTtROzs7dUI7OztTO1UsTTs7Ozs7Ozs7O1M7VTtpQyxtQjs7cUI7O1E7O1Msc0I7USxHLDZDOzs7OzthLE87O3VCOzs7O1k7WSxPO1c7USxxQjtRLEksVzs7O29DOzs7UTs7OztnQyxtQix3QjtRLE87O0ksb0I7SSxPO0c7O0k7SSxXO0k7RzsrQiwwQjs7STtLLFE7SyxRO0s7Szs7SyxXOzs7O3FCO29COzs7Ozs7OztLOzs7OztLO0s7SyxvQjtLLE87STs7Szs7TTtpQjtNOzs7Tzs7USxPO1E7Ozs7cUI7Ozs7OztLO0k7STs7SyxjLHNCO0s7O0k7O0s7O0k7SSxPO0c7O0ksVztJO0ssWTtnQjs7Ozs7OztLO0s7SztNO00sc0I7SyxPOztHOztJLGU7STtJLG1COztLOztNLG1CLE87TSxHLHlDOztLO007TyxRO08sVzs7a0I7Tzs7USxzQjtlOzs7O007Ozs7O00sZTtNO007O08sc0I7TSxPOztJOztLLFc7SztJO0k7STtLLEksVyw4Qzs7Ozs7O007Rzs7O0ssSSxPLHNCLE87SyxXOzhCLE07SztLLE87STtJLEksUyxJOzs7Ozs7STtJO0c7Rzs7SSxzQjtJLEksTyx3Qjt5RTs4Qzs7Ozs7TSxNO0s7Ozs7TSxPO007UTs7Ozs7NEIsTzs7STtJO0k7STs7Ozs7O1M7OztVOzs7Ozs7Ozs7OztjLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7OztxQjs7Ozs7O1M7OztTLGdDLFU7Ozs7OztnQjs7O1U7cUI7Ozs7O1M7O1UsTTtVLE87VTs7Ozs7OztZOzs7OztVOzs7Vzs7Ozs7Ozs7Ozs7OztlOzs7OztZLE07O1c7Ozt3Qjs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7O2E7OztjOztpQixrQixRO2lFO2lCOzthLGlCO2MsVztjO2dCO3FCOzs7O21COzs7Ozs7Ozs7Ozs7Ozs7O1U7O3NCOzs7OztnQjs7STtJO0c7O0k7Ozs7eUIsc0M7SSxPO0c7O0k7O0k7O0k7Rzs7O3NCLDRCO0ssTztJO0ksTztHO0c7O0k7O0c7O0k7SztNLE87Ozs7Ozs7OztLO0k7OztPO2lCO0s7SSxPO0c7O0k7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTtHOztJLFc7Ozs7O0s7O00sTztNLE87SyxPOzs7Rzs7O0s7Ozs7Ozs7VTtXO1c7O1c7VyxROzs7O1U7VztXO1UsRztXLE87VSxNO1M7TTs7SztNO007OztLLG9CO0s7TSxVO007OztLLG9CO0ssWTtLO0k7SSxPO0c7OztzQixxQztLO00sVTtNO0s7STtJLE87Rzs7O0s7SyxvQjtLO00sVTs7O0ssb0I7SztNLFM7TTtLO0k7SSxPO0c7O0k7Ozs7Ozs7Uzs7OztVLE87UztRO0ssVzs7OztLOzs7O00sTztNLE87SztJO0ksVzs7OztLOzs7Ozs7Ozs7Ozs7O0ssb0I7SztNLE87Ozs7O007Z0M7Ozs7O0ssb0I7SzthOzs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOztJOztJO0c7OztLOztROzs7Ozs7UyxzQjtTLFE7UztROztROztTOzs7WTtZLG9CO1ksYztXO1MsTzs7Ozs7WTtZO1c7UyxPO1E7O1E7Ozs7UztROzs7O0s7SyxvQjtLO00sVztNO0s7STtJLE87Rzs7SSxjO2EsTzs7STtHO0c7O0ksSSxPLHNCLFU7SSxHOzhCO0ssSSxrQjs7Ozs7UztTLE87OztLOztJO0s7TSxVOzs7TSxVOzs7TTtPLFE7OztVLFc7VSxPO1M7Yzs7O0ssUyxNO0s7Ozs7O0ssSSxvQjs7Ozs7OztVLE07Ozs7Ozs7Ozs7SztNOztTOztNOzs7Ozs7VTs7VyxNO1csTztXLE87VztXO1U7VztZLE87WSxrQjs7O1U7VyxROzs7O1U7OztXLE87OEIsbUI7VyxPO1csVTtrQyxnQztXLE87VyxZOzs7Ozs7O2lCOztLO0s7O0c7O0ksZ0I7O0s7OztNOztLLE07STtJLFc7d0IseUI7SSxZOztJO0s7Szs7Ozs7OztJOztJO0c7O0k7O0s7STtJLE87Rzs7O0ssWTs7Ozs7Ozs7Ozs7O00sSTs7SztLO0k7SSxPO0c7Rzs7OztRLE07Tzs7SSxXO087SyxNOzs7STs7O0s7OztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0s7SyxXO0s7O0s7Ozs7OztLO0ssTTs7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0csK0I7O0c7O0k7Szs7Ozs7Szs7Ozs7O007TSxVOztNLEksVTs7OztPLGE7TyxHO1EsTTtPLE87OztNO087UTs7Ozs7Ozs7TSxjO007TTtNOzs7O00sSTs7Ozs7SyxJOzs7OztLLFc7Szs7SSxNO0c7O0k7Rzs7SSxJLDhCLHVCOzs7OztLLE07O0c7O0ksVztJLEksd0IsYzs7O2dDLDZCOztLO0s7Szs7Rzs7SSxJLE8sc0I7O0ssTztJLE07Rzs7SSxXO0ksSSxxQzs7OztLO0s7SyxNOztHOztJLFc7SSxJLGlEOzs7Z0M7OztHOztJLEksc0Q7OzsrQixPOzs7Szs7Rzs7SSxJLHNEOzs7Z0MsTzs7O0c7OztJLEksTyxzQjs7SyxrQixPO3VCO0ssSTs7OztPLE07OztLO007OztLOztJLE07Rzs7STtHOztJLEksTyxzQjs7SyxPO0ksTTtHOztJLFc7SSxJLHlDOzs7O0s7SyxNOztHOztJLEksMEQ7Ozs7Z0MsTzs7O0c7O0k7SyxXO0ssSSxJOzs7O007TTtNO087UTs7Ozs7O2tCOztNOzs7Ozs7O0ksSSxPLHdCOzs7Ozs7TyxrQixPO08sRztRLE87Ozs7STtHOztJOzthOzthOzs7Ozs0Qjs7O0c7O0k7SyxJLE8sNkI7SztVLGdDLEk7Ozs7Ozs7O0s7TTs7Ozs7OzRCOzs7RztHOzs7Ozs7c0IsTTs7Ozs7O1MsOEM7UztVLEc7VyxNO1U7VyxZO1c7O2M7O1csTztVOzs7OztVO1c7WTtZO1c7Ozs7O1ksTTs7Ozs7O1M7O0ssMEI7TTtPLFk7Tzs7VTs7TSxPOztLOzs7Rzt3Qix1Qjs7STs7Ozs7OztJO0k7OztNOzRCLDBCOzs7OztLO0ssTTs7Rzs7SSxJLG9COzs7d0I7OztHOztJLEksb0IsYzs7O3dCOzs7Rzs7STtLLE87SyxXOzs7Ozs7O1MsRztVLE07UyxzRDtTO1M7VTs7Ozs7Ozs7O1U7Ozs7OztVLEksSSxPOzs7Ozs7Ozs7Yzs7O2U7Z0IsTzsrQjtjO2E7VSxPOzs7O1MsYTs7Szs7TTtPOztPO3dCO00sTzs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1M7VTs7O2M7MkI7YTtlO1c7VTs7OztpQzs7O1E7TTtNOzs7Ozs7a0IsdUI7Ozs7OztRO1EsTzs7Ozs7SyxNOzs7O0ksSSwrQzs7OztNOzs7Rzs7STtJOztLLEksTyxzQixPO0ssVztLLEc7TTtNO08sTzs7TTs7SztNO08sVTtPLFc7O08sdUIsTztvQjs7Ozs7TTs7Ozs7bUI7TTtPLE87O007O0k7O0s7OztLOzs7Ozt3Qjs7UztVO1csSztXOzs7Yzs7O29CO3dCOzthO1csTztVOzs7Ozs7O1UsMEI7VSxPOzs7UyxlOzs7Uzs7O1UsTztVLFU7UztVLE87O1M7O0ssb0I7SyxPO0k7O0s7O3lCLGtDO0k7SztLLDJCLGlDO0ksTztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDRCLGM7Ozs0Qjs7O0c7O0ksSSwwQjs7Ozs7Szs7Rzs7SSxrQixPO0ksTztHO0csa0I7O0k7OztLOzs7O21COzs7VSxtQixPO1UsTztTO1MsTzttQjs7O00sSTtlO0k7O0s7SztNLFU7TSxHLDBDO21COzs7Ozs7eUI7O1U7VztZLEs7WTs7O2UsZTs7YztZLE87Vzs7Ozs7WSxPOzs7O1UsVztVOzs7Ozs7O2MsVztjLE87YTtVLEcseUM7Ozs7TSxPOztJO0k7Rzs7STs7SztLLE87STtJO0ssZ0I7SyxRO0ssUTtxQixPLDBDO0ksRztLO3FCLE8sMEM7SSxHO0s7cUIsc0I7SSxVO3FCLHNCO0ksVTs7eUIsTyxzQjtJO0s7SywyQix3QztJLE87Rzs7STtLO0s7Ozs7OztLOztHO0c7O0ksb0I7SSxhO0ksb0I7SSxhOztLO00sSSxLLHdCOzs7O1E7UTtRO1E7OztNOztLO00sTztNO00sWTtNLE87TSxPO00sVztLO0k7SSxPO0c7O0ksSTtJO0c7O0k7STtzQzs7TTs7O08sTztNLFM7Ozs7TSx1Qjs7Rzs7O0ssUztLO0ssVztJO0ksTztHOztJO0c7O0k7Rzs7O0s7TSxPOztvQjtLLFc7cUIsTTtLLE87STtJLEksZSwyQixjOzs7O0s7Szs7RztHOztJOztLLE07O0k7Rzs7STs7SztnQzs7O0s7TTs7TTtNLFE7OztNO00sSTs7SztJO0k7O0ssVztLLEcsMkM7a0I7Ozs7O1M7O1U7OztTOzs7OztTO1U7VSxPOzs7O1Msa0IsTTs7Z0I7VSxLO1csZ0I7O1k7O2E7OzthO2E7YSxPO1k7O2E7OztXLE07O1UsUzs7UyxPOztLLE87STtJO0c7O0k7SztNLE87Ozs7Ozs7Ozs7Ozs0Qjs7O0c7O0ksSSw2Qjs7Rzs7STtLLEksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs0Qjs7O0c7O0ksSSxPLHNCOzs7SztNO08sbUI7TztNOzs7Ozs7TTs7O0k7Rzs7STtJO3VCO0ssSSxPLHdCLE87dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsRyxpQzs7Ozs7Ozs7Ozs7TTs7SztNO007TSxPO00sTzt1QjtLO00sVztNOzs7OztNOzs7Ozs7Ozs7Ozs7OzBDOzs7Ozs7Ozs7Ozs7Ozs7O3dCO29CO3dCLCtCOzs7O21COzs7Ozs7Ozs7Ozs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7bUI7b0I7cUIsUztxQixTO3FCLE87OztxQjs7O3NCO3VCLE87dUIsYztzQjs7O3VCLFc7dUI7Ozs7Ozs7OztvQjtxQjtzQjt1QixPO3VCLE87dUIsTzs7Ozs7Ozs7OEMsUzs2Qjs7cUI7c0IsTzs7O3lCO3lCO3dCOzZCOzs7cUI7c0IsTTs7Ozs7Ozs7Ozs7Ozs7MkIsSzsyQjs7Ozs7Ozs7Ozs7OzBCOzswQjs7Ozs7Ozs7Ozs7Ozs7O2dDOzs7Ozs4QixNOzs7Ozs7Ozs7Z0M7Ozs7Ozs7O2dDOzs7OzhCLE07OzZCLFc7NkIsSyxrQjs4QixNOzs7Ozs7MkIsTTs7Ozs7Ozt5Qjs7Ozs7Ozs7Ozt1Qjs7OztzQixNOzs7O29COzs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7bUI7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7O29CLFM7b0IsUztvQjs7OztvQjs7dUIsa0IsUTt1RTt1Qjs7b0I7OzZCO21COzs7Ozs7OEI7bUIsUyxNOzs7O3VCOzs7d0IsUTt3QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7OzZCOzs4QjsrQzs2QixPOzs7Ozs7Ozs7Ozs7OzZCOzs4QjsrQzs2QixPOzs7Ozs7Ozs7Ozs7Ozs7d0IsTTs7dUI7c0I7bUIsTzs7Ozs7OztrQjttQjttQjs7Ozs7b0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtvQjs7Ozs7Ozs7OzswQjs7b0I7Ozs7O3FCLE07Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O1U7Ozs7UztVLE07O1E7OztTLE07Ozs7Ozs7OztPO1E7UyxPO1M7UztRLFMsTTtROzs7OytCOzs7O00sTTs7O0c7O0ksVztPO0ssTTtJLDBCO0ksTztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0k7SztrQjtJO0ksa0I7STtJO0ssTztLOzs7O0s7TSxPO007YSxNOztLOzs7OztNLE87TSxPOzs7O087OztNLE07O0s7STtJLE87Rzs7O0s7Szs7OztRO1EsVzs7VSxrQjs7Ozs7USxNOzs7cUI7TSxNOztJO0k7Rzs7SSxXO0c7O0ksSSxvQjs7OytCOzs7Rzs7STs7SyxJLE8sc0IsTztLLFc7O0s7SyxPO0k7STtJOztHOztJLE87Rzs7STtLOzs7Ozs7OztJOztLOztzQjs7SyxJOzs7Ozs7O0ksVztJO0s7SztLLE87SyxrQjtLO2E7SSxPO0c7RyxtQjs7STtHOztJLFc7SSxTO0k7SztLO0ksTztHO0c7STs7O1EsTTtPO0k7OztRLE07TztJOzs7STtLOzswQjs7O1E7OztRO007Rzs7STtJO0ssTTtLLFE7O0s7SztrQjs7OztPLEc7USxXO1E7OztNLHNCO00sSSxVOzs7Ozs7Ozs7Ozs7O1M7VSxTOzs7Ozs7Vzs7Ozs7Ozs7OzZCLE07Ozs7Uzs7Ozs7TSxNOztJO0ksSSw4Qjs7OzRCLE07OztHOztJO0s7Szt3QjtJLFc7d0I7SSx1Qjs7O0s7TztVOztLLE07O0k7RztHOztJOzs7OztNO087TztPO087Ozs7OEI7Ozs7OztHOztJLEs7SyxNO0k7SSxJOzs7NEM7OztJLEksOEI7Ozs7O0s7O0k7STtHOztJOztLLE07O0ksTztHOztJO0ksSTs7OztNO007TTtNOzs7Ozs7SSxPO0c7O0ksYztJLEksTyxzQixPO0kseUI7STtJOzs7Ozs7Ozs7OztXOzt5RDtXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7Ozs7O2lCO21COzs7OztrQjtrQjtrQjs7O2lCO21COztrQjttQjs7b0I7O29COzs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YztjO2M7Ozs7Ozs7O1E7UTs7OztNOztLO0s7Ozs7OztLO0ssTTs0Qjs7Rzs7STtJO0k7SztLO0ssSztLLFE7STtJO0k7STtJLHlCO0ksSSxPLHNCLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSSxxQzs7Ozs7TSwwQjs7STtHOztJOzs7Ozs7O0s7TTs7Uzs7Ozs7WTs7Ozs7Ozs7O1k7WSxPOzs7Ozs7O007OztLO0s7OztLOzs7Ozs7Ozs7UTtxQjs7O1M7OztVLE87Uzs7Ozs7Ozs7Ozs7SztNOztNOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7a0I7c0IsK0I7Ozs7O2dCO2dCO2dCO2lCLE87aUIsVTs7OztrQjs7O3dDOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O3FDLHFDO2tCOzs7Ozs7O2lCO2tCO21COzttQjtvQztrQixLO21CO29CO3FCLE87cUIsTztxQixPOzs7Ozs7Ozs0QyxTOzJCOzttQjtvQixPOzs7dUI7dUIsTTs7d0IsVzt3QixJLDZCOzs7Ozt5Qjt5Qjt5Qjs7dUI7dUI7O3NCO21COzs7O2lCOzs7Z0I7Ozs7Ozs7O2M7Ozs7ZSxXO3lCOzs7O2U7ZTs7OzthO2M7YztjOzs7Ozs7Ozs7Ozs7OztnQjtnQixjOzs7Ozs7O21CLHFCLE87Ozs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7O2lCLFc7aUIsSTs7Ozs7a0I7a0I7a0I7a0I7bUI7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7O2lCOzs7a0IsNEI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQjtpQjs7O2tCO3lDO2lCOzs7Ozs7b0M7aUI7a0IsTzs7b0MsbUIsc0I7aUI7Ozs7Ozs7Ozs7VTs7OztXO1c7Vzs7Ozs7Ozs7O1E7UTtRO1E7UTs7O08sYzs7Ozs7UyxHO1U7O1c7O1csUzs7OztRLEc7Uzs7Uzs7Uzs7Ozs7O1EsTTs7O08sTTtNOzs7Ozs7OztPO087TztPLEksbUIsSTs7Ozs7O087Tzs7USxJLE8sc0IsTztROzs7OztLOzs7Ozs7SztLOztHOztJLFc7TywwQztJLDBCO0ksTztHOztJO0s7OztLOzs7Szs7OztLLEs7SyxLOzs7SyxRO0k7Szs7TSxPO0s7STtJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsUzs7Ozs7Ozs7OztnQjs7Ozs7OztJO0s7Szs7STtLLFM7SyxnQjs7OztTOzs7Ozs7UztTOztXO1c7O1U7VTs7Ozs7O1UsTTtpQzs7O1E7SztLOzs7O0s7SztLLE07O0c7O0ksSSxPLDJCLE87c0I7Ozs7OztNLE87O0s7OztPLE87O00sVzs7O0ksTTtHOztJO0ssUztLLFM7SyxNO0ssTTtJLHVCO0k7Szs7Ozs7OztLO00sTztNLEs7OztTLGtCLE87UyxPO1E7Szs7OztTO1M7VSxXO1UsTTsrQjs7OztpQzs7O1E7Szs7STtLLFM7SyxTO0s7Ozs7O1k7cUI7SyxROzs7STs7TTs7O08sUTs7O29COzZCOztLO0ssTztJO0k7O007bUI7SztLLE87STtJO0ssSSxrQjs7TSxJLGtCOzs7OztXOzs7eUI7a0M7O1U7ZTs7Ozs7Ozs7O0ksUzs7Ozs7TTtNOztvQyxtQjs7Ozs7OztNO007O29DLG1COzs7Ozs7Ozs7Szs7TSxROzs7Ozs7UTs7OztROytCO1MsYTtROzs7Ozs7OztPOzs7SyxTOztNLFc7TTs7SyxLO007O1M7O007TTtNLE87O3FCO0ssTztlOztJO0ksSTtJO0s7Szs7OztTO1M7VTs7VTs7Ozs7O1U7O1E7SztLLEc7TSxTO00sRztPLFc7Tzs7O0s7Ozs7SztLO0ssTTs7Rzs7STtJO0s7TSxPO00sTzs7OztTLFksTztTLG9CO1M7O007TTs7Ozs7O3VCOzttQzs7O087O2dDLE8sZ0M7Ozs7Ozs7Ozs7c0M7Ozs7Uzs7O21CO21CLFM7bUI7bUI7bUI7b0I7cUIsc0I7cUIsTztvQjs7Ozs7b0IsTTs7a0I7Ozs7Ozt1Qjs7OztTOztrQyxPLGtDOzs7Ozs7OztROztpQyxPLGtDOzs7Ozs7d0I7O1MsVztZO1U7VztXOzs7VztVO1U7VSxnQztVLE87OztROzs7Ozs7Ozs7O3dCO2lDOzs7OztTLGM7O1UsMEM7bUI7O1UsMEI7VTs7Ozs7Ozs7Ozs7O1E7UTtTLFE7UyxRO1M7Ozs7MkI7O2EsSztjOzs7O1M7Uzs7UyxzQjtTLFU7Ozs7UyxzQjtTLFU7Ozs7O1M7OztXOztZLE87WSxzQjtXOzs7Ozs7Uzs7Ozs7WSxTO1k7WTtXO1E7Ozs7WSxTO1k7WTtXO1E7UTtTO1M7O1M7OztTO1E7USxPOzs7OztTOztrQyxPLGtDOzs7Ozs7O1M7OzttQjttQixTO21CO21CO21CO29CO3lDLDBCO3FCLE87b0I7Ozs7O29CLE07O2tCOzs7OztLOztHOztJLFc7SSxJLCtCOzs7OztLO0ssTTs7O0c7O0k7OztLLG9CO0s7Ozs7dUIsMEI7O0s7Szs7Ozs7SztLLE07O0c7O0ksSSxPLHNCLE87c0I7OztLO007SztLO007TTtNO007TTtNOzs7Ozs7TTs7OytCO007OztJO0c7OztJO0k7RzttQywwQzs7STtLO0s7STtJO0c7O0ksSSxpQzs7OztROztTO1M7UyxNO1E7UTs7OzthO1Msa0M7Ozs7UTs7STtHOztJO0k7SyxJLHFDOzs7O1M7O1U7VTs7VSxPO1M7Uzs7Uzs7Ozs7VSxTO1k7eUI7VTs7Ozs7Szs7Rzs7SSxJLG1DOzs7O1EsSSxvQjtRO1E7UTtROzswQjs7STtHO3FELG9DO0c7O0k7SSxJLFcseUM7Ozs7SyxlO2dCO0s7O0c7OztLLFc7MEI7UTtNLE07SyxXO0ssYztJO0ksSSxXOzs7O0s7Szs7STtJO0c7O0k7OztHOztJLGM7SSxJLE8sc0IsTztzQjtJOzs7Ozs7O1U7VztXO1c7c0I7Ozs7Ozs7O1csSzs7Ozs7O007TztPO08sTztPLE87Ozs7TztRO1MsTzs7Ozs7O1E7Ozs7Ozs7Ozs7O2E7YztjO3lCOzs7Ozs7Ozs7Ozs7OzttQjtlOztzQiwrQjs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YyxLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7O2UsUztlLFM7ZSxNO2UsTTs7OztlO2dCLE87Z0I7Z0I7Z0I7Ozs7O2dCO2lCOzs7Ozs4Qjs7OzBCOzs7aUI7Ozs7Ozs7OztrQjs7OztpQixHOztrQjs7cUI7Ozs7a0I7a0I7a0I7Ozs7Ozs7O2tCOzs7aUI7OztnQjs7Ozs7bUI7bUI7b0I7cUIsTztxQixPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQzs7Ozs7Ozs7Ozs7MEI7MEI7Ozs7OEI7NkI7a0M7Ozs7Ozt5QjtvQzs7Ozs7Ozs7Ozs7O21DOzBCOzBCLFc7NkI7MkI7NEI7OytCOzttQzs7Ozs7OytCOzhCO21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7O29CLE07OztrQjt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7OztnQjs7OztxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7SyxNOzhCOzs7Rzs7SSxXO08sMEM7STtLOztJLE87Rzs7STtLOzs7Szs7O0s7Ozs7SSwrQjtJOzs7OztNLHdCOztLOzs7Ozs7SztLLEksc0Q7Ozs7O00sTTsrQjs7O0k7SSxPO0c7O0ksSSxPLDJCLE87c0I7Ozs7OztNLE87O0s7O08sTTtNLFc7OztJLE07Rzs7STtJO0c7O0k7O0k7O0k7O0s7MkI7STtJO0s7SywyQix1QztJLE87Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLEksTyx3QixPO0ssVzs7Ozs7UztVLFc7Ozs7Uzs7VSxRO1UsTztVLE87VSxrQjs7VTtXLFM7VztXLE87VTs7UywwQjtTO1MsZTtvQjtTLEksTzs7O0ssMEI7SyxPOztHOztJO0k7STs7Rzs7STs7SztLLE87OzRDO0k7SSxPO0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJO0ksTTs7OztpQjs7Rzs7SSxJOzs7cUM7OztJO0c7O0k7O0k7O0k7Rzs7STs7Szs7Ozs7O007O0s7STtJLEc7Ozs7O1Msa0MsTztTLFc7UTtnQjs7O0c7O0ksYztJLEksTyxzQixPO3NCO0k7Ozs7Ozs7O1c7WTtZO2E7ZTs7Ozs7Ozs7Ozs7K0IsNEM7WSxHO2E7Ozs7Ozs7Ozs7VyxLOzs7Ozs7TTtPO087TyxPO08sTzs7OztPO1E7UyxPOzs7Ozs7UTs7Ozs7Ozs7Ozs7O2M7ZTtlO2dCO2tCOzs7Ozs7Ozs7Ozs7O21COztrQjtlLEc7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7MEM7Ozs7OztjO2UsUztlLFM7ZTs7Ozs7O2U7Ozs7Z0I7MkI7Yzt1QjtjO3VCO3FCO2U7Ozs7a0I7a0I7bUI7b0IsUTtvQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjt5QixXOzRCOzBCOzJCOzs4Qjs7a0M7OzBCOzs7OEI7OzBCOzs7OzhCOzZCO2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21COzs7Ozs7O21CLE07OztpQjtzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlOzs7Z0I7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7SyxNOytCOzs7Rzs7SSxXO08sMEM7STtLOztJLE87Rzs7STtJO0s7TTs7O007Ozs7Ozs7TTtPLE87Tzs7OztjOztLLGE7OztLO007Ozs7SztvQztzQzs7OztTOzs7Ozs7VSxPO1UsTzs7Ozs7Vzs7O1U7OztTO1U7VTs7Ozs7O1UsTTs7O3VCOzs7UTtLLE87O0c7O0k7SSxXOztLO0k7STtLO0ssMkIsTyw0QjtJLE87Rzs7STtHOztJO3FCO0c7O0ksSTs7OzhCOzs7STtHOztJO0k7SztNLFc7TSxnQjs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7YTs7YyxvQjtjLG9COzs7Ozs7aUI7aUI7a0I7a0I7Ozs7Ozs7a0IsTTs7Ozs7O2dCO2E7Ozs7O2lCOzt5QjtpQjtrQjtrQjs7Ozs7OztrQixNOzs7Ozs7Z0I7YTs7Ozs7Ozs7Ozs7O2EsRztjLEk7Ozs7OztlLE07Ozs7Yzs7Ozs7TyxNOzs7TTs7Szs7Ozs7Ozs7TSxNOzs7OztHOztJO0k7SyxhO0s7O0k7O0ssTzs7STs7SztLO0ssSztLLEs7STtJO0s7OztLOzs7Szs7Ozs7O0ssa0MsTTs7OzBCO0s7O087WTtNO0s7STtJLFk7eUIsa0IsUztJLHFCO3FCLGM7STtLLE87SyxVO0k7O0s7SyxJLHNCOzs7a0Q7OztJO0k7SyxVOzs7SztLO007TyxROzs7Ozs7Ozs7TTs7Ozs2Qjs7O0k7STtLLFU7OztLO0ssaUI7TTtLO0k7STtLLFU7SyxPO0ssTzs7SyxPOzs7STtJLGM7STs7O0s7TTtNLEk7Ozs7Ozs7O0k7Rzs7O0k7SyxhO0s7SztLO0ssSztLLEs7STtJO0s7OztLOzs7Szs7Ozs7O0s7OztNLE07O0ssTzs7O0k7SSxZO3lCLGtCLFM7SSxxQjtxQixjO0k7SyxPO0ssVTtJOztLOzs7O00sTztNLE87Ozs7TztxQztROzs7OztPLFc7O00sTTs7SztJO0k7SyxVOzs7SztLO007TyxROzs7Ozs7Ozs7TTs7Ozs2Qjs7O0k7STtLLFU7OztLO0ssaUI7TTtLO0k7STtLLFU7SyxPO0ssTzs7SyxPOzs7STtJLGM7SSxZO0k7SztNLEs7TSxLOztNLE07Ozs7UyxJLG9EOzs7OztVLE07OztRO0s7SztNO08sb0I7TyxvQjs7Ozs7O1U7VTtXO1c7Ozs7OztXLE07Ozs7OztTO007Ozs7O1U7O2tCO1U7VztXOzs7Ozs7VyxNOzs7Ozs7UztNOzs7Ozs7O0s7TSx5QiwwQjtNLGM7TSxPO007O3FCO0s7Ozs7OztLOztHO0c7NEIseUM7O0k7O2lDOztLOztJO0c7O0k7NkIsbUIsMEI7SSxPO0c7O0k7STtlOztpRTs7O0c7O0ksTztHOztJLEksVSw2Qjs7SyxNO0ksbUIsTzs7Ozs7TSxHLDZCOzs7SSxNO0c7O0k7SSxPO0c7O0ksSSxNLHFCOztjLHNCOztLOzs7O2tCO087USxVOztRO1E7Ozs7K0I7Ozs7O08sNEI7TztRO1E7OztROzs7UTtPOzs7Tyw0QjtPO1E7UTs7Vzs7USxVO1E7TyxhO2lDO08scUI7OztPOzs7OztRLFU7Ozs7Ozs7UTs7Uzs7O1U7Vzs7O1U7Vzs7Ozs7OztZLE07OztVLEksTyxzQjs7Ozs7WSxHO2EsMEI7YSxHO2MsTTthO2E7YztjO2M7Ozs7O2EsSztjLE07OztjOzs7YTthLEk7Ozs7ZSxNOzs7YTthOzs7O1UsTTs7UyxNOzs7OztTO1U7OztTOzs7O08sNEI7TztPO1EsSSxPOztTO1M7VTtXO1c7Ozs7Ozs7UTs7OztZO2EsUTs7O1k7Ozs7Ozs7VztTLE87UztROztnQzs7NkI7OztROzs7OytCOzs7OztPO1E7Uzs7UztTOzs7UTs7Tzs7Tzs7OztROzs7UTs7O1E7Tzs7TyxvQixRO08sZ0M7UTtTOztTO1M7OztZLDhCLFE7Ozs7Ozs7YTs7Yzs7Ozs7Ozs7Ozs7YTs7WSxNO1c7UyxXO1M7Uzs7O1M7K0I7Uzs7WTs7Ozs7O1E7O087O087OztROzs7Tzs7O08sTTtlOztHOztJOztJO0c7RyxlOztJO0k7SyxJLE8sd0IsTzt1QjtLLEkscUQ7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QjttQjs7O3dCLCtCOzs7O2tCO21COzs7MkI7Ozs7bUI7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO3FCO21CLE07Ozs7bUM7Ozs7OztzQjs7bUM7Ozs7cUI7a0IsTzs7Ozs7Ozs7Ozs7Ozs7OzttQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7a0Isc0I7a0IsRzttQjttQixHO29COzs7O2tCO21COzs7bUI7OzttQjs7Ozs7Ozs7Ozs7NEI7Ozs7Ozs7Ozs7O3dCO3VDOzs7O2tCOzs7bUI7O29COzs7Ozs7d0I7dUM7Ozs7OztzQjtzQjs7bUM7Ozs7cUI7a0IsTzs7Ozs7Ozs7Ozs7OztrQjttQjtvQixTO29CLFM7b0I7Ozs7OztvQixRO29CLFE7b0I7Ozs7Ozs7Ozs7OzswQixHOzs7OztvQzs7Ozs7Ozs7Ozs7Ozs7eUI7MEI7OztrQzs7Ozs7OzZCOzs7OEIsUTs4QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDOzs2Qzs7Ozs7Ozs4Qjs7NkIsTTs0QjtpQzs7Ozs7Ozs7Ozs7MEI7OzsyQixROzJCLFU7d0Q7Ozs7Ozs7Ozs7OzhCOzsyQzs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7MEM7Ozs7Ozs7Ozs7NEI7OzBCLE07eUI7OEI7Ozs7b0IsTTs7bUI7Ozs7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCO3dCO21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7bUI7b0I7O29COzs7O3VCLGtDO3VCOzsrQjs7O3NCO29CLFU7OztvQjtxQixhOzs7c0I7Ozs7MkI7MkI7MEI7dUI7Ozs7Ozs7c0I7d0I7dUI7a0M7Ozs7cUI7cUIsTTs7K0I7O21COzs7OztvQjs7Ozs7Ozs7Ozs7O1M7Ozs7UztVLEk7Ozs7Ozs7UTtTLEk7Ozs7Ozs7O1MsRztVO1c7WSxPO1ksTzs7OztlOzs7Z0IsUTs7O2U7Ozs7K0I7Ozs7OztnQjs7NkI7Ozs7ZTs7Z0IsTztlOzs7d0I7Ozs7YztZLE87Vzs7Ozs7WTs7OztRO1MsSSxROzs7Ozs7Ozs7b0I7Ozs7Ozs7Ozs7Ozs7UTtTLFc7UyxJLDhCLEk7Ozs7O1U7OztTO1UsSTs7Ozs7O007OztHOztJOztJOzs7a0I7STtJO0ssVzs7TTtNLEksaUQ7Ozs7TyxvQixPO08sTTs7OzBDOzs7O0s7SyxPLHdDO0c7O0ksSSxPLHNCOzs7Ozs7UTs7Ozs7UztRLE87O1E7OztRLE07OztHOztJLEksTyxzQjs7OztROzs7UztRLE87O1E7O1MsUTtTOzs7OztTLE87USxPOzs7Ozs7UTs7O0c7O0ksWTs7STtHO0c7STtJOztJO0k7SyxXO0ssRywyQztrQjs7Ozs7O1UsTTs7OztTO1U7VyxzQjtXLE87VTs7Ozs7VTs7Vzs7OztXOzs7OztZLE07Ozs7OztrQiw2Qjs7OztTOztVLFE7VSxzQjtTO1MsZTtvQjs7OztLLDBCO0ssTzs7Rzs7STtJO0s7O0s7Szs7Ozs7O0s7O0c7O0k7SyxPO0ssVztlO2lCO0ksUzs7O0ssSywrQjs7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07Ozs7Ozs7UyxrQzs7Ozs7VyxvQjtZOztZLEksTSxxQjs7YTs7Ozs7O2lCOzt3Qjs7Ozs7Vzs7UyxXOztVO1c7OztXLE87VTs7OztTOztVLFE7VTs7O2EsaUMsSTs7O2M7Ozs7O2lCOzs7OztrQjs7OztzQixJOzs7Z0Q7OztzQjtxQjtxQixPOzs7b0I7a0IsUTs7OzttQixXO3NCOztvQzs7Ozs7Ozs7O2E7WTtVLFc7aUMsMkM7VSxPOzs7YTthLE87WTtVLFc7Uzs7Ozs7Ozs7SSxvQjtJLE87Rzs7STtHO0c7SSxjO0ksa0I7O0k7SSxPO0c7O0k7STs7Ozs7Szs7Ozs7OztTOztLLEksVyw0Qzs7OztNLFc7TTs7Ozs7Ozs7VztZLGM7OzthLE07OztZO2E7O2E7OEI7YSxjOzs7Ozs7O1k7YTtjLEk7Ozs7O2M7Ozs7OztjLE07Ozs7Ozs7Vyx3Qzs7O1ksRzs7O2E7O2M7K0I7a0M7Ozs7Ozs7O1c7O1ksUTtZLE87VztZLFU7WTtZLEk7Ozs7O1k7WTthLFc7YTs7a0I7Ozs7O2E7OEI7YSxRO2E7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEc7WTthO2EsVTs7O2EsTTs7Ozs7OztnQjs7O3lCOzs7OztPOzs7USxzQjtlOztNO007OztHOztJO0s7SztLOzs7Ozs7SztLLE07O0c7OztJO0s7OztNLHNCO00sUzs7O007OztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOztHOztJO0ssWTs7OztPOztRLEs7UTtRLFU7Ozs7O08sTTs7TTs7O08sc0I7TyxnQjs7OztLOzs7TSxzQjtNLE87TTs7TSxzQjtNLFc7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7OztVOztVLHNCO1MsYzs7Ozs7UTs7Ozs7WTtZLG9CO1ksYztXO1MsTzs7Ozs7WTtZO1c7UyxPO1E7OztROzs7O1M7UTs7OztJLEc7SyxNOzs7Ozs7Ozs7OztJOztLOzs7SSxvQjtJOzs7UTs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7O0s7OztJLG9CO0k7OztROzs7Ozs7O0k7STtHOztJLFc7SSxHLDRDO0ksSSxnQzs7Szs7TSxRO007OztTLG1CLFE7Ozs7OztZOzs7OzthLHNCO1k7WSxPOzs7O1M7UTtLO0ssMEI7SyxPOztJLG9CO0ksTztHOztJO0ksb0I7SSxPO0c7O0k7SztLO0s7Ozs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7O1Esb0IsUTs7Ozs7O2E7Ozs7Ozs7Yzs7YTtZO1MsSyx5Qzs7UTs7STtHOztJOzs7Ozs7Ozs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsTzs7O08sTzs7O08sTzs7Ozs7c0IsYztxQixZOzZCLHdCO0c7O0k7Rzs7SSxXO0ksTztHOztJOztPOztPOztPOztPOztPO2U7O0c7OztJOztPOztPOztPOztPOztPO2U7O0c7O0k7SSxPO0c7O0ksdUI7Rzs7STtJOzs7bUM7O21DOzttQzs7bUM7O21DOzs7SztLOzs7OzRCOzs7RztHOztJO0s7SyxZO0ssVzs7Szs7TTs7Tzs7Tzs7Ozs7OztJO0c7O0ksaUI7OztHOztJLFc7SSxPO0c7eUIsK0M7O0k7STtJLFc7d0I7SSxXLFc7SSxPLFc7Rzs7STtLLE87STtJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtxQix1QjtJO0ssYTtLLG9CO0ssVTs7Szs7TTtNO007SztLO0k7STtJO0ssWTs7O00sTzs7eUI7SztNLE87TSxPO0ssTzs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVztHO0c7c0IseUI7Ozt5QixzQjtxQjtJLG1CO0c7O0ksSSxlLHlDOzs7NEI7OztHOzZCLE8seUM7RyxVOztJO0k7Rzs7STtJO0k7RztHLEksdUM7O0k7SyxXO0ssTztJO0k7Ozs7O1M7O0ksTztHOztJOzs7TTs7TyxPO2M7OztLO00sVztNO087UTtRLE07Ozs7O08sSSxlOztvQjtPOzs7O1M7O1U7OztTO1M7MEI7Uzs7O1MsRyxpQztTOztVOzs7VTs7O1M7UztVOzs7YTthO1k7UztTOztzQjtTOzs7UyxTO1M7VTs7O1U7O3NCO1M7Ozs7SSxXO0c7O0ksVzs7Tzs7O0s7OztTO1U7Z0M7OztTO1U7Z0M7OztTO1U7Z0M7OztTO1U7Z0M7OztTO1U7Z0M7Ozs7OzRCLE0sMEM7O007Ozs7Ozs7Ozs7bUM7STtHOzs7SztLO0s7STs7Rzs7STtJLE87RztHLG1COztJO0k7NEI7SyxVLGdDO007SyxJOztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7RzttRDtHOztJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2MsNEI7Ozs7Ozs7c0M7Ozs7OztPOzs7UztVO1c7VyxNOzs7OztVLEksZTsyQjs7Ozs7Ozs7WTs7O2E7OztZO1k7WTs7eUI7Ozs7Ozs7O1E7Ozs7UTtTLFc7UyxLO1U7Ozs7Tzs7TyxvQztPOzs7O0k7Rzs7STtJLE87Rzs7SSxPO0c7O0k7SSxvQjtJO0ssUTtLLE87SSxPO0c7OztJLHNCLGlCLGtCOztHOztJLFksTzs7O3NCLE8sZ0Q7SyxPO0k7SSxPOztHLEksb0I7O0k7STtxQzs7O007Ozs7Rzs7SSxZLE87O0ksTzs7O0ksOEI7eUM7O0ksTztHO0c7O0k7Ozs7OztNLEc7TSxJOzs7SyxPOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxzQjtHOztJO0ssTzs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1MsSztVLEk7Ozs7O1E7USxPOzs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztRO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7O1c7c0IsTzs7VyxPOztVO08sTzs7Ozs7Ozs7Ozs7Ozs7OztVLEs7VyxJOzs7Ozs7VTtXO1ksTzs7Ozs7Ozs7Ozs7cUI7OztRLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztXO3NCLE87O1csTzs7VTs7Ozs7OztXO1csTztVO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7O08sTzs7Ozs7Ozs7O087Ozs4QjtRLE87TyxPOzs7OztJLFksTzs7OztlO2U7OztLLE87OztJLE87OztJO0ssTzs7Ozs7Ozs7O1M7cUIsTzs7UyxPO1E7SyxPOzs7O2dCLE87O0ksTzs7O0k7OztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7O0ksVztJLE87Rzs7SSxRLE07OztHOztJO0k7SztNLFE7OztNLFc7TSxPOzs7OztPOzs7USxRO1EsTzs7O1c7eUM7UyxHOzs7OztRO1MsVztTLEc7Ozs7OztZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1ksc0I7WSxLO1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7O0c7O0k7O087O1EsUztRLEk7OztRLEcseUM7OztPOztPLGtCO087O087OztROzs7Tzs7Rzs7STtLLFk7SyxPO0ksYztHOztJO0k7Ozs7O3dCOzs7Szs7O1M7O1U7Ozs7O1M7VTtXLEk7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1E7TSxPOzs7O0k7Rzs7STtJO0k7O0ssMkIsZ0M7SSxPO0c7O0ksWTtJLG9CO0ksTztHOztJOzswQixXOzt3Qzs7TyxvQztPOztHOztJLCtCO3VCO0k7Szs7OztLLFE7Szs7MkM7O2MsTTs7Ozs7VTs7VyxvQjtXLEcsa0Q7O1U7O1csSTtXLE87VyxPOzs7Vzs7OzthOzs7OzRCLDRDO2M7OztpQjtpQixPO2dCO2MsTzthOzs7YztlO2tDLE8sK0I7ZSxPO2M7ZTtnQixPO3VCOzs7Ozs7Ozs7Ozs7VTs7UztNOztJOzs7Ozs7Ozs7Ozs7OztNO087USxPOzhCOzBCOzs7OztLLEksSTs7Ozs7O0s7O0c7RztJO0k7STtJO0k7STs7STs7OztHOztJOzs7Ozs7OztTLE87Ozs7OztJO0c7O0ksVztJOzs7Szs7OztTO1MsTztRO00sTztLOzs7O0k7Rzs7STs7TTtPLE87TyxPO08sTztjOztNO08sTztjO0s7SyxpQzs7Rzs7STtLO00sTztNLE87SztLOztPO3dCO007OztHOztJLEksVywwQzs7OztLLEksVyw4Qzs7Ozs7Ozs7Ozs7Ozs7WSx1Qiw0Qjs7Ozs7O2lCO2lCLE87Z0I7YSxLO2EsVzsrQjs7Ozs7O2tCOztNLEc7O007OztHO2tDLDJCLFM7O0ksSSxRLDZDOztLO0ssVztJO2U7O0c7RyxJLDBCLGtCOztJO0ssVzs7O0c7O0ksdUIsTztJLE87Rzs7SSxJLEssMkI7O0c7O0k7Ozs7MEI7Ozs7UTs7STtHOztJOzs7O0ssa0IsUTs7TSxnQzs7O3dCOzs7Ozs7SztJO0ksTztHOztJO0k7SyxJLE8sNkIsSztLLEc7TTtLLEksZ0M7bUM7OztROzs7UTs7OztROztTLHNCO1EsTzs7UTs7OztTO1Msc0I7USxPOzs7USxHO1M7USxHOzs7O1M7O1UsTztVLHNCO1MsTzs7O2tCOzs7WTs7OzBCOztXO1EsTzs7O1EsUztTOzs7Ozs7O1EsTzs7UTs7O1EsRztTO1EsWTtlOzs7OztTO1UsMEI7VSxPOzs7USwwQjtRLE87O1E7Ozs7OzRCLG9CO1E7Ozs7Ozs7O1k7WTtXO1EsTzs7O0c7O0k7STtHOztJOzs7OztHOztJO0k7STtHOztJO0k7Rzs7STtJLE87RztHOztJLEksTywyQixLO0k7TTtXO0s7TTs7OEI7TTtLOzs7Szs7OztTO1U7VTs7OEI7O1M7Ozs7O1UsMEI7OztTLEc7VSxXOzs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7O1M7OzZCOztTOzs7VTs7O1U7O1UsMkI7UztTOzs7Uzs7UyxPOztTOztTLG9CLFE7Ozs7OztjOzJCO2E7b0I7OztTOzs7YSxrQixROzZEO2E7WTtVLFU7VSxPO1UsYztVOzs7VTtXO1k7OztZO1k7WTs0Qjt1QztXO1c7Ozs7bUM7d0I7Vzs7O1M7Ozs7O1U7O2EsZ0MsUTsyQzs7Ozs7OztlOzs7Ozs7O2U7OzthOztVLFc7Uzs7OztpQzt3QjtTOztTOzs7d0I7Uzs7VSxRO1MsZ0I7O1M7UztVLHNCO1UsSztVO1M7O1M7O1M7Ozs7O2E7OztjO2MsTzthLFc7WTtVLE87Uzs7SztJO0ksRztLOztNLHNCO2tCOztJO0s7SztLOztJO0c7O0ksb0I7SSxPO0c7O0k7SztNLFU7Ozs7OztTOzs7O1UsUTtTLHlDO1M7UTtNLGlCOzs7UztTLE87UTtNLGdCO007OztLOzs7Z0IsTztJOzs7O0ssMEI7SztLOzs7SSxZO0ksTTtHOztJO0s7TSxPO007Ozs7Rzs7STtLOzs7OztNO007OztLOzs7Ozs7Ozs7Ozs7NkI7O0k7OztJO0ksTztHO3NDLDBCOztJO0k7Rzs4QiwwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJLGtCO0k7Rzs7STtJO0c7O0k7O0s7TSxPO00sTztRLG9DO0s7SztJO0ksTztHOztJOztLLFc7SyxPO21COztJO0ksYTtJLE87Rzs7STs7SyxPOzs7cUIsd0I7SSxPO0c7O0kscUM7O0ksZTtHOztJLFc7d0IsNEM7STtnQjtJLG9COztJLEksOEI7O0k7Rzs7SSxJO0ksVztHOztJO0k7SSxPO0c7O0k7STtJLE87Rzs7STtJO0ksSSxpQzs7Szs7TSxPOzs7Uzs7Ozs7O1UsVztVLGM7O1M7UTtLOztJO0k7SSxXO0k7OztzQzs7OztPOztRLFE7UTs7Ozs7OztVLEc7OztjOzs7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7OzRDLHdCO0s7Ozs7Ozs7Uzs7UTtLOzs7SyxrQjs7SztJOzs7Ozs7Ozs7Ozs7Ozs7OzsyQiwyQjtjOzs7SSxJOztLO00sTztNLFM7SyxzQjs7O00sVztNOzs7OztTO1UsTztpQjs7Ozs7Ozs7Ozs7Ozs7SztNLFU7OztNOztLO0k7SSxXOztLOzs7Ozs7SztJO0k7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Yzs7O0s7Ozs7O007O2M7Ozs7STs7Ozs7O2E7Ozs7Rzs7STtJLE87Rzs7STtJLE87Rzs7SSxtQjtJLDJCOztJO0s7Szs7STtHOztJO0k7SyxVO0s7STtJO0ksVztJO0k7STs7Szt5RTtLO0k7STtLLGM7SyxPO0s7OztLO0k7Ozs7Ozs7STtHOztJO0ksTztHOztJO0k7SyxPO0s7OztJLE87Ozs7OztHOztJO0ssTztLO0s7Szs7OzsrQjs7Ozs7STtHOztJO0ksTztHOztJOzs7SyxRO0ssVTtJOzs7O007OztJOzs7Ozs7O1E7OztTLE07UztTLE87UTs7VTthO1MsVztTLEs7VSxPOzs7OztROztTLFE7UyxLO1EsRztTOzs7UTtTLE87a0I7OEIsdUM7UTs7OztpQyxrQixzQjtRLE87OztROzs7Ozs7Ozs7UTs7OztTLE07UztTLE87UTs7VTthOzs7OztTO1M7Ozs7O1E7O1MsUTtTOzs7NkM7O1MsTztrQjs7Uzs7O1k7WTtXO1MsUztTOzs7O1k7WTtXO1MsVztTLGE7OztZO1k7Ozs7Ozs7VztTLFM7O1M7OztZLEssc0M7WTthLFM7O2EsVzthOzs7YTtZO1k7O1MsUztRLG9COzs7OztTLDBCOzs7USxHO1MsVzs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssTztLLE87Szs7Ozs7O0k7Rzs7STtLO0s7TztVOztJO0c7RyxxQjs7STtJO0k7STtJLFU7STtJLFc7STtJLG9CLG1CO0k7O0s7SztLLE87SyxPO0kscUI7Rzs7STtJLE87Rzs7SSxhO0k7STtJO0ksVTtJO0ksVztJO0ksb0IsbUI7STtLLE87SyxPO2M7O0s7O00sTztNLGU7SztJO0ksVztJOzs7Ozs7OztTOztRO2E7STtLO0s7SyxPO0ssTztJLGlCO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O2lCLGM7a0IsVztrQixPOztpQjtnQjtnQixPOzs4Qjs7Rzs7SSxXO0ksTztHOztJO0k7O3lCOztPLG1CO087Ozs7OztTOztVLFE7O3FCOztTLEksc0IsVzs7Ozt1QyxTO087OztRO1E7O2dDO087bUM7Ozs7STsyQixXOztjOztlO21DO2UsTztjO2MsTzthOztHOztJO0ssTztLLGE7O0s7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOzs7O1c7OztjOzs4Qzs7YzthO1csVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztNO007TyxRO087O08sa0I7Tzs7OztPO2tEOztPO007TTtPLE07Tzs7OztZLE87VztNLFc7SztLO00sTTtNO007OztVO1M7TSxROzs7SztLO0k7STtJLE87Rzs7STs7Ozs7SSxXO0c7O0ksSSx3QjtJLFc7Rzs7SSxZLHNCOzs7Szs7O007TSxPO0ssTzs7STs7SztLLE87SSxPOzs7SSxTOztzQixrRDtJOztLLE87SyxzQjtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7OztLLG1CLDJCO0ssVztLLFc7O0k7SztPOzs7Ozs7Ozs7STtJO0k7O0s7O00sb0I7O0ssTzs7STtJLE8sVztHOztJLE87Rzs7STtJLE87Rzs7STtJO0k7SztLLE87SztJO0s7TSxZO00sTztLO0s7O0ksTztHOztJO0ssTTtLLE07Ozs7Ozs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7OztHOzs7STtLLFk7Szs7STtLLE87VyxzQztLO0s7SSxPOzs7STs7SyxPOzs7SSxPOzs7Ozs7Ozs7RztJLE87SSxpQjs7O0ksRywrQjtJO0k7OztJOztLLE87OztJLE87Ozs7Ozs7Ozs7SSxZOztnQjs7SSwwQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSyxrQyw4QiwrQyxVO0k7OztJOzt5Qjs7OzRDOzs7STtHOzs7SyxPOztROztvQjs7SztJO0ksUzs7SSxnQjtHOztJOzhCO0c7Ozs7bUI7Ozs7TTs7O007Ozs7O0c7STs7NEIsTyx5QztJLGlCOztJLEksTTs7OztjO0s7TSxPOzs7O00sTztNLE87SyxPOzs7STtHOztJLGtDO0k7Z0M7STs7MkIsTywwQzs7SSxPO0c7RyxpQjs7SSxZOzs7SyxPOztJO0c7O0ksVztJLEksc0MsSTs7Ozs7O0k7STtHOztJLFksTzs7SSxPOzs7O0s7Ozs7Ozs7Ozs7UztVOzttQixPO2tCOzs7O1M7VTs7bUIsTztrQjs7UTs7OztTLFc7Ozt5QixXOztXOzs7a0M7WSxPO1c7bUI7Ozs7Ozs7OztnRDs7Ozs7a0I7aUM7Ozs7O2U7OztZOzthO2EsTzs7ZTs7VzttQjs7O1csa0IsTztXO21COzs7Ozs7Ozs7OztTLFc7OztTO2lCOzs7USxXOzs7Ozs7O2dCOzs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7a0M7Ozs7dUI7Ozs7O1csVzs7O1csVzs7O1csVzs7O1c7bUI7Ozs7Ozs7Ozs7USxXOzs7UTs7Ozs7O1k7b0I7OztRLDBCOztJO0ksTztHOztJLFU7O0ksTztHOztJOzs7SyxJLDZCOzs7O08sTzs7OztJO0c7O0k7OztxRCxTO0k7Ozs7YztjO2U7O29DLHNDOztlO2M7ZSxNOztjOztlO2dCOzs7Z0I7O2lCOztvQjs7O3FCLE87Ozs7O3FDLGlCOztvQjs7NEI7OztlO2dCLE87Z0IsTzs7Z0I7O2lCLE07O21COzs7Ozs7Ozs7O2dEO2U7Z0IsTztnQixzQjs7Ozs7Ozs7ZTtnQjtnQjt1QztlOzs7Ozs7Ozs7a0I7O2dCO2dCOztlOzs7Ozs7OztlLE07O2E7Rzs7RyxzRTs7Rzs7STtLOzs7Tzs7Rzs7STtLOzs7Tzs7O0k7STtHOztJO0k7O007OztPLGE7TyxPO08sTztPO1M7O1csVzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7Ryw4Qzs7O0ksWTs7STs7O0k7OztJLG1COztJLFc7Rzs7STtJLFc7Rzs7STs7OztjO2lDLHNDO2M7ZTs7c0M7ZTs7b0Msc0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztjO2U7Ozs7Ozs7OztjOztlLE87Yzs7MEI7YyxvQjs7YztlOzs7Ozs7Ozs7YyxPOzs7Ozs7OzthO0c7O0k7Ozs7YztjO2M7ZSxNOztlOztrQjs7ZSxPOzs7Ozs7Ozs7OztjLGlCO2MsTzs7Ozs7Ozs7OzthO0c7O0csOEI7RyxpQzs7STtHOztJOzs2QiwrQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtHOztJO0ssTzs7O08sTzs7Tzs7O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7VTtPLE87O087OztRLG9CLE8seUM7NEIsTyx5QztPLE87O087Ozs7O1Esb0IsTyx5Qzs7d0IsTyw4QztPLE87OztPOzs7OztRLG9CLE8seUM7OztXLE87VTtPLE87Ozs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O0ksWTs7STs7TSxPO0s7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0ksSSx1Qiw4Qjs7OzRCOzs7Rzs7SSxPO0c7O0k7OzswQjs7Ozs7Ozs7VTs7Ozs7OztVO1csTztXLFU7VTs7Ozs7Ozs7STtHOztJO0k7Z0I7Ozs7O1E7Ozs7UyxxQixPO1MsRzs7Ozs7Ozs7Ozs7Uzs7VSxrQjtVLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UTs7OztrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCOzs7O1E7Ozs2Qjs7O1E7OztROzs7Rzs7STtxQjtrQjs7STtHOzs7STs7Tzs7d0I7OztPO2U7O0c7O0ksUzs7O0s7Ozs7Ozs7TTs7O007Szs7Ozs7STtHOztJO0k7OztRLGtCLFE7b0I7O1EsSSxnQjs7OztVLE07Ozs7OztROztTLFE7UyxVOzs7UyxzQjtTLFk7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztRLEk7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7O1Msc0I7Uzs7O2dCOztROzs7OztlLE07UTs7OztPLGlCOzs7TyxpQjs7OztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTtJLEksZ0I7Ozs0Qjs7O2lDO0k7SyxPO0ssVTtLLE87SyxTO0ssUTtJLEk7Ozs0Qjs7O0ksZ0I7STs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksaUI7O0k7Szs7O1E7Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7K0I7Ozs7OztnQjs7O0ksVztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRO1MsUTs7Ozs7O1E7Ozs7RztxQyx1Qzs7Ozs7OztRO1MsWTtxQixNO1Msb0I7Uzs7Ozs7VSxNOzs7O1E7O1M7O1k7Ozs7Ozs7Ozs7O3VDOzs7O2EsTTs7WTs7USxPLFc7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7OztROzs7UztTO1MsTTtTO1MsTTtRLE87O0c7O0k7STtLLEksYyx1Qzs7Ozt1QjtNLDZCO00sRywrQjtNLEk7O0c7O0k7OztJO0s7TSxtQzs7Ozs7Ozs7SSxPO0c7O0k7SztLLFE7Ozs7Ozs7O087USxRO1E7VTs7Ozs7Ozs7Rzs7SSxTOzs7Ozs7Ozs7Ozs7Ozs7O1MsRzs7Ozs7Ozs7Ozs7O087OztZO087Ozs7O087OztpQjs7d0I7O0c7OztLLEksNkIsYTs7OzRCOzs7STs7STtHOztJO0s7TTtNO007OztTLG9CO29COztROzs7Uzs7Ozs7Ozs7O2lCLG1CO2lCOztrQjtrQixtQjs0Qjs7Z0I7YSxPOzs7MkI7Ozs7UztROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7O1M7UyxPO1E7TSxPO00sMEIsTyxrQztNLDhCLFc7O0s7Ozs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxJLE8sMkI7Ozs7OzttQjs7SyxPO0k7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7O2E7YyxNO2MsTTthLE87WTtnQjs7O1M7O1U7Z0I7OztTOzs7VTtnQjs7O1M7Ozs7VTtnQjs7O1M7Ozs7VTtnQjs7SztLOztHOztJLE87Rzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SSxJOzs7OztLLE07O0ksSTs7Ozs7O1M7TyxHOzs7USxHO1MsRzs7Ozs7OztVOzs7YSxNOzs7Ozs7WSxNOztXLEs7VyxJOzs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7STs7Z0I7aUU7Szs7STtHO3VDLDRCOztJO0c7O3FCLE8seUM7STs7Tzs7OztROzs0QixPLHlDO1csaUI7Vzs7WTtZO1ksTztXLE87Ozs7TyxPOztPOzs7O1EsTztRLE87TyxPOztPOzs7UTtRLE87TyxPOztPLG9CO08sTzs7Rzs7cUIsTyx5QztJLDRCO0k7O087OztPOztPOztRO1E7USxPO08sTzs7Tzs7UTtRO1EsTztPLE87O0c7O3FCLE8seUM7SSxVOztJO0s7O0k7SyxPO0ssTztJLE87Rzs7STs0QixpQixpQjtJO3dCLE8seUM7SztNOztTOztTOztTO2lCOztLOztROztROztROztROzs7UTs7Ozs0QixPLHlDO1E7O1c7Ozs7WTs7ZTs7Ozs7VyxPOztXOzs7O1ksTztZLE87VyxPOztXOzs7WTtZLE87VyxPOzs7USxzQjtRLE87OztROztTLFU7UTtrQjtrQjs7O0ksTztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzJCLG9CO0ksTztHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7Rzs7STs7Ozs7O0k7O3NCOztNOzs7cUI7Szs7O00sTztLLEcscUI7TTtLLFc7Szs7Ozs7O007TyxNO08sTTtNLEk7Ozs7Ozs7OztpQztLOztNO007Ozs7Ozs7Rzs7STtLLFE7SyxRO0s7Ozs7Ozs7UyxrQjtVO1csVTs7O3FCO1U7O1k7O1csTTtVO1csVTs7O1U7Ozs7OztXOzs7ZTtlO2M7WSxPO1ksVTs7O1c7WTthLE87YSxPO1k7Ozs7Ozs7Ozs7Ozs7d0I7O1U7Ozs7Ozs7UyxrQjtVO1csUztXLFM7VTs7WTs7VyxNO1U7VyxROzs7Ozs7O1cseUIsVTs7Ozs7Ozs7Ozs7OztXOzs7ZSxrQixROytEO2U7YztZLFU7Vzs7OztXOztZOzthOzs7Ozs7YyxVO2MsVTs7Ozs7Ozs7Ozs7Z0IsVzttQjtpQjtrQixRO2tCLFE7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7O2lCOzs7a0I7a0I7Ozs7Ozs7Ozs7OztjOztnQjs7O2lCO2lCOzs7Ozs7Ozs7Ozs7OztZLEk7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7STs7TTtPLE87TyxPO007OztNOzs7Ozs7Szs7STtHOztJO0k7Ozs7Ozs7OzhCOzs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7O087UTtTOztZLFc7WSxPO1c7O1E7cUI7O087OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLE07Ozs7Ozs7Ozs7Ozs7Ozs7OztPO1E7Uzs7WSxXO1ksTztXOztRO3FCOzs7Ozs7Ozs7Ozs7Vzs7OztZOzs7YSxPO1ksRyxxQjs7WSxXO1k7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQjs7OztJO0ssYzs7Ozs7Ozs7O0ksZ0I7STs7Ozs7O0ksb0I7STtLOzs7SyxPOzs7SztLLG1CLGdEO0s7TSxROzs7TSxVOzs7OztNLEksc0I7OztPLFc7TyxVOzs7Ozs7Z0I7SztNLFU7Ozs7O00sVTs7Ozs7TTtLO007TTtPLEksb0I7Ozs7OztLO0k7SSxPO0c7O0k7O0s7O0k7SyxNO0ssTTtLO0s7SSxJOzs7OztLOztJOzs7O0ksc0I7O3lCO0k7Rzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SyxPO0k7SSxPOzs7STs7SztLLE87STtJOztHOztJLHlCLE87SSxPOzs7O0ksTzs7NkMsUzs7O0ksTzs7O0ksd0I7Rzs7SSx3QjtHOzs7STs7OzhCLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTztPLE87OzRCLE87OzZCLE87Ozs7OztXO1csTztVO08sTzs7Ozs7O1c7VyxPO1U7TyxPOzs7TyxxQjtlOzs7c0Msc0M7OztJLE87OztJO0ssa0IsTztLLE87OztJLG9CO0ksTzs7O0k7O0s7O007OztTO1MsVztTLE87O0ssTzs7O0ksb0I7SSxPOzs7Ozs7Ozs7SztLO0ssTztJO0k7STtJLFc7STs7SztLLE87STtJLE87OztJLHFCLE07SSxPOzs7O3dCLGtCLE8sNEI7STtJLFU7SSxPOzs7O0ksTzs7OztJLHNCOztJO0ksVTtJLE87OztJO0k7STs7SywwQjtLOzt1QixPOztRO2dDLE87OztJO3FDOzs7Tzs7NEIsTzs7Tzs7TyxxQixNO08sTzs7Tzs7O1EsTTtPOzs7O1c7VyxPO1U7TyxPOztPLHNCLE07TyxPOzs7Ozs7VztXLE87VTtPLE87O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7Rzs7OztLOzs7d0IsTzs7USw4QixNO1E7USxPOztRLGdCLE07USxPO2dCOztJO0k7STtxQzs7O087O087OztPO08sTzs7Tyx5QixNO08sTzs7O087Ozs7VyxrQixNO1csTztVO08sTzs7O087TyxVO08sTzs7O087TyxVO08sTzs7TywwQixNO08sTzs7Tyx3QixNO08sTzs7Tyx3QixNO08sTzs7Ozs7OztXOzhCOztXLE87VTtPO08sVTtPLE87O2dDLE87OztPO08sTzs7TywwQixNO08sTzs7O087TztPLFU7TyxPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sVTtPLE87O087O087O2dDLE87Ozs7OztXO1csTztVO08sTzs7O087TyxPOzs7TztPLE87O2dDLE87O2dDLE87OzZCLE87O2tDLE87OztPO08sVTtPO08sTzs7Tzs7O087TyxPOzs7Ozt3QixrQixPLDRCO0ksTzs7OztJLE87Ozs7STtJLFU7SSxPOzs7O0k7Ozs0QixPOzs7TyxPOzsrQixPOzs2QixPOzs4QixPOzs0QixPOzs4QixPOztPLDBCLE07TyxPOzs4QixPOzs4QixPOzs2QixPOzs7TyxxQjs7TywwQixNO08sTzs7TywwQixNO08sTztlOzs7O0ksd0I7Rzs7SSxZOztJLE87Ozs7STs7O087OzZCLE87OztPO08sTzs7O087Ozs7VztXLE87VTtPLE87O2dDLE87ZTs7OztJOzs0QixPOztPOztPOzs4QixPOztPO2U7Ozs7O0ksTzs7OztJO0ksTzs7O0ksOEI7Ozs7Ozs7O1c7VyxPO1U7Tzs7OztXO1csTztVO08sTzs7O087TyxPOztpQyxPOzs7TztPLE87Ozs7O0k7OztPOzs2QixPOzs7TztPLE87OztPO087TyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7SSxPOzs7O0k7OztPLHNCLE07TyxPOzsrQixPOzs7Tzs7OztXO1csTztVO087TyxPOzs7Tzs7OztXLGtCLE07VyxPO1U7TyxPOzs7Ozs7O087Ozs7VztXLE87VTtPO08sTzs7O087TyxVO08sTzs7O087TyxPOzs7OztJOzs7TywwQixNO08sTzs7Z0MsTzs7O087TyxPOzs7TztPLE87Ozs7O0k7SSxVO0ksTzs7OztJOzs2QixPOztrQyxPOztrQyxPOzs7TztPLE87ZTs7Ozs7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7TywyQixNO08sTzs7TywyQixNO08sTzs7TywyQixNO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzt3QyxPOzs7OztJO0ksVTtJLE87Ozs7STtLLHVCLE07SyxPOzs7SSxPOzs7O0k7O0ssTzs7O0ksTzs7O0k7O0ssTzs7O0ksTzs7OztJOzs0QixPOzsyQjs7NkI7OztPO08sTzs7NkIsTztlOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7STtJLE87OzRCLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O2tCLFM7O0ksZ0MsTztJLFc7OztJOzs7O0ssTztLLE87SSxXOzs7STs7OztLLE87SyxPO0ksVzs7O0k7Ozs7O0ssTzs7Ozs7OztLLE87SSxvQjtJLFc7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SyxXO0k7Rzs7SSxjO0k7RzswQyxTOztJO0ksVztHOztJLHdCO0c7O0ksd0I7Rzs7STs7OztLLFk7STs7Ozs7eUI7OztPOzs7USxROzs7Ozs7NkM7OztPOzs7USxVOzs7Ozs7OEM7OzsrQzs7OzhDOzs7Tzs7USxPO3lCOzs7NkM7Ozs4Qzs7O087O1EsTztRLHNCOzBCOzs7Tzs7USxPO1Esc0I7MEI7Ozs7O3dDOzs7O0k7OztJLGU7STtHOztJLGM7STtHOztJO0ssa0IsTztLLFc7OztJLG9CO0ksVzs7O0k7O0s7O007O1M7VTtVO1UsTztVLFM7Uzs7SyxXOzs7SSxvQjtJLFc7OztJOztLLE87SyxPO0ksb0I7STtLLFk7SyxXO0s7SyxPO0ssZTtLO0ssTztJLG9CO0ksaUI7STs7Ozs7Ozs7Ozs7Rzs7SSwwQyxPO0kscUI7OztJLGlCLE87SSxvQjtJO0ssZTtLO0ssTztLLHFCO0k7Rzs7SSx3QjtJO0c7O0k7O0s7OztNLE87TSxPOzs7O0k7Rzs7SSxJLFUsZ0M7STtLOzs7d0IsVzs7O1Msc0I7O0s7O0ksb0I7SSxJLFkseUM7Ozs7Ozs7Ozs7eUI7OztTOztVLE87eUI7OztTOzs7Ozs7O2E7YSxlO1k7VSxRO1UsTzs7eUI7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjt5Qjs7O1M7O1UsTzt5Qjs7OzRDOzs7Uzs7VSxPO3FCOzs7NkM7OztTOzs7O1UsTzswQjs7Ozs7STtHOzs7Szs7d0IsVzs7UTs7O1MsTztTLE87USxXOztRLGdCLE87USxXO2dCOztJO0k7SSxvQjtJO0ssWTtLLFU7Szs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7OztTLE87UyxVOzs7O1E7OztTLE87UyxPO1Msc0I7UyxPO3dCOzs7UTs7OztTLE87UyxPO3dCOzs7UTs7O1MsTztTLE87d0I7OztROztTLE87d0I7OztROzs7O1MsTztpQzs7O1E7OztTLE87MkI7OztROzs7Ozs7WTtpRDs7WSwyQjtXO1MsVztTLE87Ozs7O1k7Ozs7Ozs7eUI7OztROzs7OztTLE87eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7UTs7OztTLE87UyxPO3lCOzs7Ozs7Ozs2Qzs7O1E7OztTLE87UyxzQjsrQjs7O1E7Ozs7OztTLE87d0M7OztROzs7UyxPO3lCOzs7MEM7OzswQzs7Ozs7O3lCOzs7Ozt5Qjs7O1E7Ozs7OztTLE87UyxPO1MsTzs7O1k7Ozs7Ozs7OztROzs7UyxPO3lCOzs7Ozs7O0k7Rzs7SSxpQixPO0ksb0I7SSxrQjtJO0c7O0ksaUIsTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJLEksVSxnQzs7O29DOztPOzs7USxROzs7Ozs7OztpQjs7OztxQzs7c0M7O3NDOztzQzs7Tzs7USxPO3VCOzs7c0M7O3NDOztzQzs7OztzQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OztJO0c7O0ksd0I7Rzs7SSxZOztJLGtCOzs7SSxJLFUsZ0M7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1Esc0I7USxPO3VCOzs7d0M7Ozs7STtHOztJOzt3QixXOzswQixXO2U7Ozs7SSxnQyxPO0k7Rzs7STs7O0ssTTs7O0ksVztHOztJLDhCOzs7Tzs7Ozs7VztXLGM7VTtRLE87OztXO1csa0I7VTtRLE87Tzs7TyxrQyxNO08sVzs7TyxnQyxNO087O087Ozs7USxNO08sVzs7OztJLEksVSxnQzs7Ozs7cUM7O087OztRLE07Ozs7Tzs7OztRLE07USxNO3VCOzs7OztROzs7UyxNO1MsVTttQjs7UTs7UyxNO21COzs7Ozs7O3VCOztJO0c7O0ksYztJO0c7O0ksSSxTLGdDOzs7Tzs7OztRLE07aUM7OzsyQzs7O087Ozs7OztRLE07USxNO1Esb0I7USxNOzZCOzs7Tzs7O1EsTTtRLE07USxvQjtRLE07c0I7OztPOzs7OztRLFU7OztRLE07USxNO1Esb0I7Ozs7O1c7Ozs7Tzs7Ozs7O1EsTTtRLE07c0I7OztPOzs7USxNO3NCOztJO0c7O0ksSSxZLGdDOzs7Tzs7OztRLE07b0M7Ozs0Qzs7O087Ozs7USxNO2dDOzs7Tzs7O1EsTTt5Qjs7STtHOztJO0ssWTtLO0ssTTtLLGM7STtHOztJOzs7cUM7Ozs7Ozs7O3lDOzs7Ozs7Ozs7OEM7OztPOzs7O1EsTTsyQjs7OztJO0c7O0ksSSxXLGdDOzs7Ozs7Uzs7OztVLE07aUM7OztTOztVLE07MEI7OztTOzs7O1UsTTtxQzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTs7K0I7Ozs7OzswQjs7O1M7Ozs7VSxNOztnQjs7Ozs7OzhCOzs7MEM7Ozs7O0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7STs7Szs7OztNLE07OEI7O3NDO0k7Rzs7STs7Ozs7MkI7O3dDO0k7Rzs7STs7SyxXOzs7SSxnQjs7O0k7Ozs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7USxNO3NCOzs7cUM7OztJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7Rzs7STtLLFM7SyxVO0k7Rzt3QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RyxJLHNCOztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLLEk7d0IsaUM7SztNLEs7Ozs7O0s7Ozs7TSxJOzs7O0s7TTs7Ozs7OztTLEc7VTtVOztTOzs7Ozs7OztTO1M7Uzs7O1MsRztVO1U7O1M7O1U7VTtVOzs7O1U7VTtVO1U7VTs7OztVO1U7VTtVO1U7O1M7UztpQjs7TSxHO087Tzs7TTs7Ozs7OztPOzs7TTtNOztPLE87TTtNO007TSxRO007TTtNOztLO0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLE8sbUM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3lCLFc7OzJCLFc7O3lCLFc7OztPLHFCOzswQixXOzsyQixXOzsyQixXOzsyQixXOztHO0c7MEIsTywyQjs7SSxTOztLO0ssRzs7O00sSztPLE07TSxZO007TztPLEc7USxJOzs7Ozs7OztLO0k7STtLO0ssMEIsTywyQjtJLE87Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7O0k7Ozs7O1M7Ozs7aUI7OztTO1U7WTtVLE07VSxNOzs7ZTs7VSxNO1UsTTtVLE07O1UsTTs7Ozs7Ozs7O3dCOzs7Ozt3Qjs7Ozs7d0I7Ozs7O3dCOzs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTLE87UTtLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ksbUIsTyw4QjtHOztJO29CLGU7SSxPO0c7OztLO0s7TSxvQjs7O0s7STtJLE87Rzs7SSxVO0ksTztHOztJO0k7SztLLE87STs7SztLO0ssTztJOztLOzs7Ozs7Uzs7VSxZO1Usb0I7UztVO1csTztXOzs7Ozs7Ozs7Uzs7Ozs7VTs7OztVOzs7Ozs7NEI7Ozs7Uzs7O1U7VSxNO1M7Ozs7TTs7O0s7SyxPO0k7O0ssYztLO0ssTztJOztLLGtCOzs7Ozs7OztZO1c7UTtTOzJDLHFCOzs7O1E7OztROztTO1Msb0I7UTs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0k7O3VCLE87O3VCLE87O3VCLE87O3VCLE87O3VCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STtvQzs7O0k7STs7O087TyxPOztPOztRLG9CO087TyxPO2U7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVO1c7O0k7Rzs7STs7MEIsVzs7dUM7O08sa0M7Tzs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7VztXLE87VTtvQjs7Ozs7OztXO1csTztVO29COzs7d0M7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7OztJLFc7OztJO0ssTTtLLFE7Szs7SyxPO0ssTztLO0ssVzs7O0s7Ozs7TSxPO00sTztLLFc7STtJLEksVztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7OztHOztJOztLLGtCLE87SyxXOztJLG9CLE87SSxXO0c7O0k7SyxrQixPO0ssVzs7SSxvQixPO0ksVzs7O0k7SyxNO0ssUTtLOztLLE87SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLOztJLG9CO0ksZTtJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7OztNLE87TSxPOzs7O0k7SSxPOztHOztJO0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1ksTzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLHdCOzs7Ozs7Ozs7OztXLEc7Ozs7c0I7Ozs7Ozs7Uzs7VSxPO3FCOzs7O1M7VTs7Ozs7O2M7YyxXO2E7VyxPOytCOzs7Uzs7VztZLE87WSxPO3VCOzsyQzs7Ozs7OztVOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7Ozs7OztTOzs7VSxPOzRCOzs7Ozs7OzthOzs7YyxPO2E7WTtxQjs7O1M7O1UsTztxQjs7O3VDOztvQzs7eUM7OztTOzs7VSxPO3FCOzs7O0ksTztHOztJOzs7O0ssTztLLE87SyxPO0ksVztHOztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7O1c7OztZLE87cUM7Ozs7O1U7O1csTztzQjs7VSwwQztVO1c7WSxPO1ksTztXLEs7VyxJOztVO1csTztXLE87VzthO1csTzs7Ozs7Yzs7Ozs7OztROzs7Ozs7WTtZLFc7O1ksc0I7VztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7OztTLE87UyxPO29COzs7UTs7UyxPO29COzs7O1E7O1U7VyxPO1csTztzQjs7d0M7Ozs7Ozs7O1E7OztTLE87NEI7OztROzs7Uzs7O1k7K0I7O1ksb0I7VztTLFM7UyxPOzs7O1k7OztROzs7UztxQjs7O1E7Ozs7UyxPO1M7cUI7OztROztTLE87cUI7OztROzs7O1MsTztTLE87UyxPO3FCOzs7UTs7O1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7Ozs7UyxPO1MsTzs7d0I7Ozs7UTtzQzs7Uzs7VSxPO2lCO3dCOzs7OztROzs7UyxPOzs7O1E7OztTLE87Ozs7Ozs7O1k7OzthLE87WTtXO3FCOzs7UTs7OztTLE87NkI7OztROzs7UyxPO3FCOzs7MEM7OzsyQzs7O3VDOzs7O3FCOzs7UTs7OztTO1M7a0M7OztTLFE7UyxPO1MsUztTLFM7Ozs7UTs7UztTLE87Ozs7O3FCOzs7UTs7O1MsTztxQjs7STtLLE87O0k7Szs7OztNLFE7TSxVO0s7OzhDOzs7UTs7O1MsTztTLE87MkI7OztROztTLE87MkI7Ozs7O3FCOztLLE87O0ksTztHOztJOztLLFc7SyxXO0s7STtHOztJOztLO0ssYztJO0ksVztJO0c7O0k7SyxNO0ssUTtLOztLLE87SyxPO0ksTzs7Rzs7SSxrQixPO0ksTztHOztJLEksTSxtQzs7O29DOztPOzs7USxPOzZCOzs7Tzs7USxPO21COzs7d0M7OztzQzs7cUM7O3FDOztPOztRLE87bUI7OztzQzs7d0M7OztzQzs7d0M7OztPOztRLE87b0I7OztPOztRLE87b0I7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7O0k7SyxNO0ssUTtLO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0ksTztHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0k7SyxNO0ssUTtLLE87Szs7SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7O0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTs7SSxpQjs7O0k7SyxNO0ssUTtLOzs7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1EsTzttQjs7O3dDOzs7O0ksTztHOzs7STs7TyxvQixPO087O08sb0I7Tzs7TyxtQixRO087O08sc0IsTztPOztPLHNCO087O08scUIsUTtPOzs7O0k7SyxNO0ssUTtLOzs7SyxPOzs7Ozs7O3FDOztPOzs7USxNOzs7O087OztRLE07bUI7Ozs7O1EsTTtPOztRLE07bUI7OzhDOztJLE87Rzs7STtLLE07SyxRO0s7OztPLE07O3dDOzs7Tzs7OztRLE07NkI7OztPOzs7Ozs7VztXLFc7O1csc0I7VTtRLE07bUI7OztPOzs7O1EsTTtRLE07NkI7Ozs7Ozs7Uzs7O1UsTTtVLE07Ozs7OztTLE07UTs7UyxNO21COzs7OztPOzs7USxNO21COztJLE87Rzs7STtLLE07SyxRO0s7OztPOzs7USxNO1EsTTs7OztzQzs7Tzs7OztRLE07MEI7OztPOzs7USxNO21COztJLE87Rzs7STs7SyxNO0ssTTtJLFc7Rzs7STtLLE07SyxRO0s7OztxQzs7Tzs7Ozs7O1EsTTt1Qjs7O087Ozs7OztRLE07O2tCOzs7Tzs7OztRLE07dUI7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7Ozs7OztROzs7O1MsTTsyQjs7O1E7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7O1E7OztTLE07b0I7OztROzs7UyxNO1MsTTs7Ozs7OztvQjs7O1E7Ozs7UyxNO29COzs7UTs7OzJCLE8sa0M7UyxTOzRCOzs7d0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7O0ssa0M7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7OzBCLE8sa0M7USxNO3dCOzs7Ozs7O3FDOzs7Ozt3Qzs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUM7Ozs7O087OztRLE07dUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQjs7OztJLE87Rzs2QixTO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0Isb0I7O0k7O087O087O087ZTs7RztpQywwQjs7STtJLFc7STtLLFU7SyxPO0s7Tzs7Z0I7O0k7Rzs7SSxJLFE7Ozs0Qjs7O0k7Rzs7SSxJLFE7Ozs0Qjs7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO2lDLFcsaUM7Ozs7O0k7O08saUM7Tzs7TyxxQztPOztPOzs7USxPO1E7Tzs7TyxxQztPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7STs7O2tCOztxQixPOztNO007Ozs7SSxPO0c7O3FCLE8seUM7SSwwQjtJOztPOzs7UTs7Vzs7UTs7Vzs7TyxPOzs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7O1EsVzs7UTs7O1M7Ozs7O1Esa0I7O1MsVzs7O0c7O0k7b0I7SSxvQixTO0k7Rzs7STtJOzs7Ozs7O1U7VyxPO1c7d0I7Ozs7Uzs7VSxPO1UsTztVLE87UyxHLGlDO1M7VTtVOzs7Ozs7Ozs7Uzs7Ozs7WTs7YTs0Qjs7WTs7WTs7Ozs7Ozs7WTs7O2E7Ozs7OzthOzs7Ozs7Z0Q7Ozs7Yzs7Ozs7Ozs7ZTs7Z0I7OztnQjs7O2dCOzs7O2U7Ozs7OzthOztZO2E7OzthOzs7YTs7OztZOzs7Ozs7OztVLEcsZ0M7VSxXO1U7OztXO1ksTztZLE87WSxPO21CO1U7O1MsSSxXOzs7Ozs7O1k7Ozs7O1M7c0Q7Uzs7VTs7O3dCOztTOzs7Tzs7USxPO1EsTztROzsyQjtPO1E7UTtPOzs7SztNO007TTtLOztHOztJOztNOzs7OztPLFM7Tzs7Ozs7Ozs7UTs7UyxVOztpQjs7OztpQjs7Ozs7O2dCOzs7TTs7O3NCO0k7Rzs7O0k7O0ssNEM7O0ksYTtJO0c7O0k7SyxPO0ssVTs7Szs7O007O0s7SztJOzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O087OztNOzs7O007TyxNOzs7Ozs7Szs7TTs7OztJO3dCLCtDO0ksVzs7Ozs7TztROzs7Ozs7O1k7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7WSxJOzs7Ozs7Ozs7OztTO1M7OztPOztNOzs7Tzs7Ozs7OztRLEc7Ozs7O2E7Ozs7Ozs7Ozs7O007TztRLFU7Ozs7Tzs7MEI7OzBCOzswQjs7OztPOzs7Ozs7O087Ozs7Ozs7Ozs7OztJO0c7O0ksYTs7Ozs7Ozs7Ozs7OztTO1MsMEI7UyxVO1M7VTtXLE87VztpQjs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7Ozs7Ozs7Ozs7O1M7Ozs7VTtVLE87VTtZOzs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1M7Ozs7Ozs7O1M7UywwQjtTOzs7O2dDLGlCO1UsUzs7Ozs7OzthLE07OztnQyx1QjtzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7Ozs7Ozs7OztTOzs7O1UsUTtVLFM7Ozs7Ozs7O0ssTTs7STtLOzs7STs7Szs7Ozs7STtHOztJO0s7O0s7Ozs7OztNOzBCOztLOzs7eUI7O0k7Rzs7STtJOzs7Ozs7OztLLHNCO0s7O0c7RztJO0k7O0k7STs7Rzs7STt1Qjs7STtHOzs7Ozs7Ozs7OztJOzs7O0s7aUIsTTs7Szs7O007TSxNO0s7O0k7SyxRO0ssUztLO0ksTTs7Rzs7O0k7O0s7O1M7Ozs7Ozt5QztJLHdCO0ksTTtHOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLFk7TTttQjtPOztRLFE7Tzs7OztPOztRLFE7USxRO087O00sWTtNOztLOztJO0ssUTtLLE07STtHOztJLGlEO0k7SztNOztLO0k7STtLLFM7SyxTO0s7SztJLE87Ozs7STs7Tzs7Tzs7Tzs7O1E7UTtxQyxZOzs7O1M7OztVLE07VSxNO1MsRyx3Qzs7a0I7O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7TTs7Tzs7O1U7VyxRO1csUTtVLE87UztPLFE7TyxRO007O3NCO0s7O00sUTtNLE07TTtNLE07TSxNO0s7O0k7Rzs7STtLOzs7SztJOzs7Ozs7O1E7Ozs7O1E7Ozs7Ozs7O0s7O0k7SyxTO0ssVztLO0s7SSxPOztHOztJO3lDOztJLE07Rzs7STt5Qzs7SSxNO0c7O0k7O3VCOzs7SyxNOztJLE07O0c7OztJOzs7OztNOztLO00sTTs7OzZDOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztNOzs7Tzs7OztxQjs7O1EsTTtPOzs7USxtQjs7Ozs7O0ksTTtHOztJLFksTzs7Ozs7TyxPOzs7O08sTzs7Ozs7Ozs7O08sb0M7TyxPOzs7TyxzQztPLE87Ozs7O0k7SyxPO0k7OztJOzs7O1EsZ0M7USxPOzs7USxvQztRLE87OztJLE87OztJLFk7O2dCOztJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxRO21CO0c7O0ksOEI7OztPOztRO1Esc0I7O087Ozs7OEI7OzttQixlOzs7Ozs7OztPOzs7UTtRLHNCO1E7TzsrQjs7OztlLE07O0c7Ozs7bUI7OztNOzs7TztPLHNCO087TTs4Qjs7Ozs7SyxvQjs7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7STtJLE87Rzs7STs7O0ssTztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7OztTLGUsVTt1QixNOzs7O00sTTs7Ozs7NEIsTzs7OztHOztJO0ksTzs7YztHOzs7STtJOzs7SSxXO0ksTztHOztJLE87RztpQyxtQjs7STs7Ozs7Szs7STtHOztJO2dCOztJO0c7O0kscUMsTzs7SSxPOzs7STtnQixPOztJLCtDO0k7Ozs7SztJLE87Rzs7STtnQixPOztJO0c7O0k7Z0IsTzs7O0s7OztNO00sTztLLE87Ozs7OztNLE87O0k7Rzs7STs7Szs7TTs7TTtLLE87O1ksTztJO0ksaUQ7STs7OztLO0ksTztHOztJOzs7SyxxQixPLGdDOztZLE87STtJO0c7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7STt3QztJO0c7OztLOzs7TTtNO00sTztLLE87Ozs7Ozs7Ozt3QjtJO0ssTztLLFMsVztJLE87Rzs7O0s7O1E7Ozs7O0s7STtJO0c7O0k7SyxhOzs7O007Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7SyxPO0ksTztHOztJLCtDO3lCLG1EO0ksVztJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7Ozs7d0IsTyw0QztNLE87SzthOzs7OztpQjs7O0s7O007Ozs7STs7SzswQix5QztJLE87Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7Szs7Ozs7OzttQjtNO087TyxJOzs7Ozs7Ozs7STtjO3NDO0c7O0ksUTtJLFc7MEIsTyxzQjtJLFc7SSxPO0c7O0k7O087O1EsSztRLEs7TyxPOzs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztJO0s7O0ksd0IsTztJLE87O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJO0c7O0k7SyxPOztJLFc7Rzs7O0k7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7STs7SztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLFU7Tzs7O087USxPOzs7O087Ozs7OztJOzs7Ozs7Ozs7O2U7O0ssZTs7SztJO0k7SztLO0ssTztLO0s7O0ksTzs7OztLOzs7TTtNO08sTztPLE87TztNLE87OztNLE07O0s7OztROztROztTOzs7OztjOzs7ZSxPOztlLE87YyxPOzs7O1M7Uzs7Ozs7WSxNO1csc0I7Vzs7OzswQzs7OztXOztZLGU7Vzs7Ozs7Ozs7Vzs7WSxlO1c7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7UTs7O0k7SSxPO0c7O0k7O08sc0I7TyxPOzsrQjs7TyxvQyxpQjtPLE87Ozs7OztrQjtrQjs7Tzs7UTtRO1E7USxzQjtPLE87Ozs7STs7TyxzQjtPLE87OzZCOztPLGdDOzs7Ozs7VTs7VzswQjs7OzswQzs7TztPLE87OztnRDtPOztRO1E7UTtRLHNCO08sTzs7Ozs7STs7Szs7UTs7UyxROzs7Ozs7Ozs7Ozs7Vzs7WTtZO1k7Ozs7cUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTO29COzs7USxtQjs7UyxNOzs7b0I7O0ssYTtrQixzQjs7NEIsTyxzQjtNLE87SztLO0k7SSxPOzs7O0s7TTs7TztPLFc7TSxXOztxQzs7Ozs7Ozs7TTtPLGM7O08sTztNOzs7NkI7TTs7Ozs7O1UsaUI7VSxPOzs7O1MsdUM7Ozs7a0I7UztVO1Usc0I7VTtVLE87UyxPOzs7O007TyxlOztPO007TTtPO087TztPLE07TSxPOzs7Ozs7OztLO0ssVztJO0ksTztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087STs7O1EsTTtPOzs7O0s7SyxHO00sTTtLLE87STtJO0ssTTtLLE87O0s7OztNOzs7TSxPO007O1M7Ozs7Ozs7O0ssTzs7Ozs7STtJLGdCOztHO0k7STtJO0k7O0k7STs7O0c7O0k7SSxXO0c7OztJOzs7OztJLFE7O0ksRztLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLLFc7Szs7Ozs7SyxlO0ssTTs7Rzs7STtLLE87SyxxQjs7Rzs7O0ssbUI7O007TTs7O00sTTs7Szs7TyxnQjtPLE07O007TSxNOzs7OztNOztPO007O0k7SSxPO0c7O0k7O0k7Rzs7eUIsMEM7SSxPO0c7O0k7O0s7STtJOzs7Ozs7TyxNOzs7Szs7Ozs7O1EsZ0I7USxNOztPO1E7UyxPO1MsTzs7Ozs7O1E7UztVLE87VSxPOzs7Ozs7Ozs7O1U7Ozs7OztPOztPOzs7O1E7UTtRO1E7VTthOztRLE87Tzs7O08sTztRLE07TztRLHNCO1EsTzs4QixlO1EsVztRLE87Tzs7Tzs7O1EsVTs7Ozs7UTs7Ozs7a0MsUzttQjs7Ozs7O087VTtRLFc7USxNOzs7TztRLHNCO1EsTztRLFM7UTs7Ozs7O1c7Ozs7TztRLE87OztXO1c7WSxXO1k7Ozs7O1ksb0IsVTtZLE07OztVO087Tzs4QixlO1EsTztRLFM7Tzs7Tzs7O1EsWTs7O1c7WSxXO1ksSzthLEk7Ozs7ZSxNOzs7O1k7Ozs7O2EsTzs7O1U7Ozs7Ozs7OztZO2E7O2M7c0I7Ozs7OzthLEksSSxvQzs7Ozs7OztpQixNOzs7OztpQixHO2tCLE07OztpQjs7Ozs7O21CLE07OztrQjs7Ozs7YSxNOzs7WTs7Ozs7Z0I7c0M7ZTthO2U7YTtZOzs7Vzs7USxnQjtRO2tDLDBCO1EsVztROzs7YTs7O1c7VyxPO1U7USxRO08sbUM7Ozs7O1E7UyxVOzs7Ozs7O1M7O3dCLE07VSx1QixVOzs7O2E7O2MsUzs7Ozs7Ozs7O1MsRztVOztVOzs7OztRLE07Ozs7O1E7Ozs7MkM7Ozs7OzsyQjs7K0I7O1M7VSxVOzs7Uzs7Ozs7O1M7UyxNOzs7O1U7USxXO1EsTTs7O087USxzQjtRLFM7USxXO1EsTzs7O1c7VyxJLFcsd0M7Ozs7O1ksb0IsVTtZLE07OztVO087Tzs4QixlO1EsVTtPO1E7UyxPO1MsTzs7Ozs7O1EsTTs7O087Ozs7O3FDOzs7OztXOztZLFE7WTs7O2U7OztnQixROzs7Ozs7Ozs7Ozs7OztlO2M7WSxXO1k7O1ksVztXO1k7Ozs7O2EsTzs7O1k7Ozs7O2E7Ozs7c0I7Ozs7UTs7TyxNOzs7Tzs7UztVLE87Ozs7OztTO1UsTztnQjs7UTtRLEk7Ozs7O1M7O1UsVTtTLE07Ozs7Ozs7OzJCO1E7O1M7O1E7USxJOzs7OztTOztVLFU7UyxNOzs7O1M7Uzs7UTtTLE07UyxLO1M7Ozs7OzthOzs7Ozs7YTs7Ozs7OztPOztPOzs7O1E7UTs7VztXLE87VTtRLFU7OztXLFE7VztZO2EsUTs7O1ksRzthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7O1csdUIsMEI7Ozs7YTs7YztjO3dCOzs7Ozs7Ozs7Ozs7YTsyQjs7MkI7Ozs7Ozs7aUIsTTs7OztpQixLO2lCO2tCLFE7a0I7OztxQjs7O3NCOzt1QixLOzs7Ozs7Ozs7O3dCLE07Ozs7OztxQjtvQjtpQjs7OzthLE07Ozs7O1k7OztnQixvQjtnQixPO2U7YSxLOzs7YTs7YyxLO2U7cUMsYztnQixROzs7Ozs7eUI7OztjLE07Ozs7WTs7O1c7VTtRLFU7UTtxQyxpQjtRLFc7Tzs7Ozs7WSxlOzthLE07O1k7VztROztPOztRO1E7O1c7Ozs7OztRLFc7TztROzs7OztTLE87OztROzs7OztTOzs7O08sVztPOztPOzs7MkIsWTtRLFM7TztPOzhCLHVDO1EsYztRO29CO08sSSx3Qzs7TztPO087Ozs7Vzs7O1ksSTtXLEssaUM7Ozs7O2E7YTs7O1csTTs7VTtRLFU7USxtQjtRLFE7UTtPO087O087Ozs7UTs7O1E7USxRO087Tzs7O1c7VztVO1EsTztRLFM7OztXO1c7VTtRLG9CO1EsUTtPOzs7TyxNO2tDOztHOztJLEksTywyQixPO0ksVzs7O0s7O00sUTtNLE87SyxHO007O087Ozs7Ozs7VSx3QixROzs7Vzs7VTtTO087OztXOzs7Ozs7TTs7SyxPOztJLE87Rzs7STtJLE87Rzs7RztJOzs7SSxJLFk7O0s7OztNO00sTztLLEksbUMsSTtpQjtnQjtLOzs7O29COzs7Ozs7Ozs7TztRLE87ZTs7O007TyxNO3dDOztNOzs7Tzs7O0k7STs7STtLOztNO00sSSxXLG9DOzs7OztPLE07O0s7SyxPLHdDO0c7O0k7O0ksMEI7STtJO0k7Rzs7STs7O0k7SSxJLGlDOzs7SztNLE87TTs7OzthOzs7O0k7STtJO0k7STs7O0ssSSxNLDBCOzs7O087Tzs7O0s7STtJLFk7STtJOzs7O0ssTztLLE87STtHOztJOztJO0k7STtJO0k7STtJLGdCO0c7O0k7STtJO0k7STtJO0c7O0k7SyxPOzs7Tzs7UTs7VyxPOzt5QjtVO1E7VTs4QixPLGtDO08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OztPLE87O087O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7Tzs7USxvQixPLHlDOzRCLE8seUM7TyxPOzt5QixPOzs7TyxPOzs7Ozs7O1c7VztZLE07O1ksTztXLE87Ozs7Ozs7Ozs7VTtPLE87OztPOzs7OztTOztVOzRCLFcscUM7UyxPOzs7Tzs7O08sTzs7Ozs7Ozs7O08sTzs7O087TyxHO1E7ZTtROztRO08sTzs7O08sTzs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7VTtPLE87Ozs7OztXLFksTzs7VyxPO1U7TyxPOzs7TyxPOzs7O0k7Szs7OztNLHlCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztxQixPOzt1QixPOztxQixPOztxQixPOzt1QixPOzt1QixPOytCLE87O0c7O0k7O0s7OztNOztLO00sTztLOztRLE87O1EsTzs7USxPOzs7OztLLE87OztPLG9CLE87TyxPOzs7TyxPOzs7TyxvQjtPLE87O087O1EsNEI7TyxPOzs7Ozs7USxPOzs7Tzs7OztROzs7OztTLE87Ozs7Ozs7Ozs7O1E7cUM7USxPOzs7O1E7NEIsbUM7UyxPO1MsNEI7UyxPO1EsTzs7O087b0M7TyxPOzs7cUIsTzs7TyxPOztPOzs7MEIsK0M7USxlO08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7OztPOztRLDRCO08sTzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksdUI7SSxPOzs7O0ksWTs7OztLLE87Ozs7Ozs7Ozs7O0ksTzs7OztJLE87Rzs7STtJLFU7SSxPO0c7OztLO0s7SyxPO0k7SSxPO0c7O0k7O0s7SyxPO0k7STtJLE87Rzs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0k7Ozs7c0IsaUQ7O3dCLGE7SSxPO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7Szs7Rzs7STs7Ozs7Ozs7OzsyQjs7OztPOzs4QixvQixXO1EsTzs4QixvQixXO1EsTzs7Ozs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7VSxZOzs7VyxPOztVLE07Uzs7Ozs7Ozs7Ozs7STtHOztJOzs7O3lCOztPOzt5QixPOzsrQjtpQzs7Rzs7c0IseUM7STs7Ozs7O1E7O1M7Ozs7Ozs7O1E7Ozs7WTtZO1c7UyxNOzs7O1E7Ozs7Uzs7Ozs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHO0c7Ozs7OztJLE07SSx5Qjs7STtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7O1k7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7STtJO0s7OztTO2dEO1M7UTtNLFk7Ozs7NEI7OztJLG9CO0ksTztHOzt5Qix3QixZO0ksTztHOztJLGE7Rzs7STs7O0s7O0k7Rzs7STs7Ozs7USxPOzs7Ozs7USxlLE87USxPLDJCOzs7O0ksTztHOztJO0k7Ozs7OztRO1M7Uzs7Ozs7UTtTO1M7Ozs7O1E7UztTOzs7Ozs7O087UTtROzs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0IsTztpQixXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCOzs7aUI7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO2tCLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7OztTLGdDO1MsUzs7Ozs7O1Esa0M7USxTOzs7OztNOztJOzBCOztLOzs7TyxrQixPOztPOzs7bUI7SztJOztLO0s7OztROzs7OztTO1EsVzs7Ozs7c0I7TTs7STtJOzswQiwwQztHOzs7O0k7O0ksaUM7Rzs7STtLO0ssTztLLE87Szt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7Ozs7O1csTzs7Ozs7Ozs7Ozs7OztpQjs7OzhDOztJO0c7O0k7a0Q7aUQ7SSxPO0c7O0k7Ozs7Ozs7Ozs7a0MsTzs7a0MsTzs7Ozt5QyxPOztPOztNOzs7Ozs7UTs7UTs7UyxNO1M7OztZO1k7YTs7O2lCOztnQjtjLE07Ozs7Ozs7O1k7VztRLE87O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7Vzs7OytCLCtCO2MsTzthO1csUztXOzs7Ozs7a0I7O007OztJO0c7O0ksUztZLE87STs7OztLOzs7STtHOztJOzs7O1E7O1M7OztROztROzs7O1M7OztROzs7OztVLE07Ozs7O1E7O1E7OztTOzs7Ozs7O1k7WTs7c0I7O1k7VztROzs7bUI7Ozs7OztROztTOzs7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7Ozs7TTtNO0s7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7TTtLO007Tzs7Ozs7SztNOzs7O0k7SyxZO0s7Tzs7SztLLGtCO0k7SSxjLFc7STtHO0c7O0ksbUI7SSx1Qzs7SztNLE07O29CLFc7O0s7STs7Z0IsVzs7STtHO0csbUI7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7Ozs7YSxrQjtpRjthLE07WTtVLFM7VSxNO1MsZ0I7Ozs7O2M7OztlLFE7Ozs7ZSxPOztjO2E7VSxPOzs7Ozs7OzthOzs7MkI7a0M7WTtTLE87Ozs7TTs7O00sTTs7STtHOztJOzs7Ozs7SyxPO0k7Z0I7Ozs7OztHOztJO0ssTTs7bUI7SSxtQjtJO0c7O0ksWTs7O0s7TTtPLFU7TyxVOzs7OztRO1M7O3lDOzttQjs7O007Ozs7O08sTzs7OztJLE87Rzs7STtHOzs7STs7SztLLGlCOztLLFc7STtJLGE7eUIsOEI7STtLLFE7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7OztTOzJFO1MsTztRO00sZTtNO00sUztLLGdCLE07SywwQjtLLGtCOztJO0c7O3lCLGtCLE8sdUI7SSxJLE07STtLLEs7O00sZ0I7O0ssSSxNOztHOztJO0k7Ozs7Ozs7Ozs7Ozs7VSxvQjs7Ozs7OztrQyxrQixTO1UscUI7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTs7OztXLGtDO3NCO1c7Vyx3QjtVO08sTzs7Ozs7OztPOzs7O1E7TyxTO08sSTs7Ozs7USxvQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTs7Ozs7O0c7O0ksVTthO0k7OztLLE87SyxPOztLO0ssd0M7SztNOzs7UzsyQixrQjtTLE87UTtNOzs7Ozs7Ozs7VTtVLHFCO1U7VztXOzBDO1csTTtVLG9CO1UsTztTO1MsVztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksb0I7SSxPO0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNO087Ozs7Uzs7O087TTtNLEk7OztNOzs7O087TSxTO00sSTs7O007TztPLFU7OztPO08sTztPOzs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPOztLO007O087NEIscUI7TSxPOztLOztNLFc7TSxPO0s7SyxPO0k7SSxPLFc7Rzs7STtJLHdDO0k7SztLOzs7Szs7a0MsdUI7TSxPO00sTztNLE87OztTOzs7OztVLHVCO1U7VztXOzRCO1csTTtXLHNCO1UsTzs7Uzs7OztXO1ksTTtXLHVCOzs7YSxNOzs7OztZO2E7b0I7Ozs7Ozs7VSxXOztTO1M7OztXLHVCOzs7Ozs7Z0I7aUI7O2lCOzs7eUI7Ozs7OztlOztnQjtlLEc7Ozs7OztrQjt5QzttQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COzs7Ozs7O2tCOzs7c0Isa0I7Ozs0RDs7c0IsTTs7cUI7bUIsWTttQixPOzs7Ozs7Ozs7OzswQzttQjs7Ozs7OztvQjs7cUI7O3VCLE07c0IsUztzQixLOzs7cUIsSTs7Ozs7Ozs7Ozs7Ozs7O2tCO3lDO21COzs7O3dCOzs7OzBCLE87Ozt3QixNOzt1Qjs7d0I7d0I7b0M7dUI7Ozs7Ozs7a0I7c0MsYzttQjs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7bUMsZSw0Qjs7Ozs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COzs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COzs7Ozs7OztlOzs7OzttQixrQjt1RjttQixNOztrQjtnQixPOzs7bUI7bUI7a0I7Z0IsTTtnQjs7OzttQjttQixHLHdDO21CLFk7aUQ7OztvQjs7O21CO2tCO2dCLFU7Ozs7Ozs7b0I7bUI7dUI7OztlLEc7Ozs7Z0I7aUIsSztpQjtrQixROzs7Ozs7OztlOzs7bUIsa0I7dUY7bUIsTTs7a0I7Z0IsYzs7ZTtnQixLO2dCLEk7Ozs7O21DOzs7Ozs7Ozs7OzZCLE87Ozs2QixzQjtTLE87UTtLLE8sVzs7STtLO0ssTzt1QixzQjtJLE87Rzs7STs7SywwQztLLE07STtJLE8sVztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7O08sWTtPOzs7UTtRO1E7TztNO007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7Uyx5QixROztjO1U7VyxNO1c7Ozs7YyxrQixROzhGLDZCO2M7YTtXLEs7Ozs7Vzs7O1ksa0I7WSxPO1c7Ozs7Ozs7O087Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix3Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OzsyQixpQjtRLEk7OEIsaUI7USxPO2U7Ozs7OytCLFM7ZTs7OztVLGlDOzs7OztXOzs7Ozs7Ozs7WSxNOztXOzs7WTtZO1k7WTtZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7OzswQjs7Ozs7Ozs7O2MsVzs7eUI7OztZOztXOztVLE07UztNLE87O0s7OztNLE87TSxPOzs7OztVOztXLE07VSxrQixPOzZCO1M7TSxHO087UTtRLE07Ozs7TztRO1E7Ozs7Ozs7OztRO1M7Uzs7Ozs7TztRO1EsUTs7Ozs7OztRLHNCOztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztRO1E7OzthLFc7YTtZOzs7Ozs7OztHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQzs7Ozs7Ozs7OztjOzs7ZSxPO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7OztpQixPO2dCLFc7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7O1U7Ozs7Ozs7O2M7O2U7OztjOzs7Ozs7Ozs7O2M7O2UsTztlLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7STtJOztNOzs7OztPO00sVzs7OztLOztHOzs7OztvQjs7OzhCLE8sd0I7TSxHOzs7TyxJOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsSztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEcsNkI7Ozs7Ozs7Ozs7Ozs7OztnQjs7OztvQixTOzZCOzs7Ozs7Ozs7Ozs7O3FCOztxQjtvQjtvQjttQjtpQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0IscUIsTzttQjtnQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0Isb0I7Z0I7Ozs7Ozs7OztROzs7Ozs7UTtTLE87O1E7O087Ozs7TztRLE87O087OztLLE07O0c7c0I7O0k7SztLO007Ozs7OztPOzs7Ozs7OztLOzs7OztLLGtCLE87O0s7O0c7O0k7Szs7Ozs7TTtLOztJO0c7O3FCLDZCO0ksZ0I7STtHOztJO0ssWTs7SztJOztLOzs7TSxROzs7TTtLO0k7STtLLFE7OztJO0k7Rzs7STtJO21COzs7O007Ozs7Rzs7STtJO21COzs7O007Ozs7Rzt3QixPLHlDO0c7O0k7O0k7SyxPO0ssTztJLE87Rzs7STtLLFU7SyxTOztLO0s7Ozs7Ozs7Vzs7Ozs7NEIsaUI7OztVLGlCOztVOzs7O1c7VztVO1UsWTs7Ozs7Ozs7OztVOztVOzs7VyxRO1U7O1U7Ozs7YyxrQztjO2M7YyxXO2E7VyxTO1U7OztVLGlCOzs4Qjs7VSxrQztVOztNOztJO0k7STtHOztJLEksSyxrQzs7Ozs7Ozs7Ozs7bUIsbUI7Ozs7Ozs7UyxJLFU7Ozs7Ozs7Ozs7Vzs7OztlLFc7YztZLFM7Ozs7O1UsTzttQyxjO1csSzs7VTtXO1csc0I7a0I7Ozs7Ozs7O2U7O2lEOztLO007Ozs7Szs7STtLOzs7O0k7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7Ozs7YztjO2E7VSxPOzs7O1U7OztXOzs7Ozs7Ozs7TyxPOzs7OztLOztHOztJLFc7STs7Ozt5Qiw2QjthO0ksVzs7O2lCO0s7Ozs7OztNO0s7O007TyxPO087OztvQixXO087Tzs0Qjs7Ozs7Ozs7Ozs7Ozs7K0I7OztPOzs7UTtROzs7Uzs7O2EsMEM7YSxNO1k7VSxRO1U7VTs7OztVOzs7VTtjLGtFOzs7Ozs7OztnQjs7Ozs7NEIsTyxrQztROzs7Ozs7OztNLE07OztNLEk7Ozs7Rzs2QiwwQjs7SSxjO0k7SztLOzs7Ozs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7ZTs7YztXLE87O1csb0M7VyxXOzs7OztXOzs7K0IsZTtRLE87Ozs7O007O0k7STtHOztJLEksNkI7O0s7O00seUI7TTs7UztVOzs7O1MsTzs7TSxtQixXO00sUTs7O00sRztPO1E7UyxNO1MsTTtRO1E7Uzs7OztZOzs7O2E7O1k7VztRLEc7UztRLEksTzs7O087Ozs7Ozs7O0ssWTtNOzs7OzttQjtJO0s7OzRCLHVDO00sTzs7Ozs7O1U7O3NDO2EsMEI7VSxlO1UsTztTO007OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O3dCO0k7SyxjO0s7O0s7TztJLE87Rzs7SSxVO0k7Ozs7Uzt1QjtTLHNCOztVOzs7O1k7O2EsTzs7O2dCLFM7O2U7WTs7O1c7Ozs7VyxPO1U7VSxXO1UsVzs7Ozs7Ozs7Ozs7YSxLO2MsTTs7O2MsSzt3Qjs7OzthOzs7O1UsTTtTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOztVLE87VSxPO1UsTTtnQjtVO1c7aUMsc0I7VztnQzs7Vzs7WSxZO2tCO1k7YSxPO2EsTSxXO2E7WTs7OztTO1E7Szs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztLO0ssTztJO0ksSSxRO0k7Szs7O1M7UyxlO1E7TSxZOzs7Uzs7VSxPO1M7UyxPO1E7TSxVOztLO00sTTs7O1M7Ozs7VSxXO1MsTztRO00sWTtLLEc7Ozs7SztLLE87STtJO0k7Rzs7d0IsUztJLFU7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7OztJLEksVywwQzs7Ozs7O0c7OztLO00sTztNO0ssRyx1QztLLGE7a0I7Syw0QjtLOzs7O1M7OztVLEk7OztVOztZO2lCO21COztTO1M7OztTLE87OztTLGU7UztVO1csTztXLG9CLE8sb0M7Vzs7OzZCLE8sK0I7YyxJLGlCO2M7OztlO2dCO2dCO2dCO2MsVztjO2UsSztlLE87ZSxLO2UsTztlLE87ZSxPO2UsTztlLE87ZSxPO2UsTztlLEs7ZTtjO2UsSSxjOzs7Yzs7O2U7Z0I7Z0I7Z0I7YyxTO2M7YTtXLE87VTs7Ozs7VTs7VyxzQjtVLE87Ozs4Qjs7O1M7Uzs7UyxNOztTOztVLFE7VTs7O2Esa0IsUTs7O2U7Ozs7aUMsTyxpQztnQixRO2dCLEk7Z0Isc0I7ZSxPOzs7K0M7O2E7WTtTO1M7OzhCOzs7OztVOztZO2lCOzs7Ozs7YTthO1k7UyxPOztLO0k7STtHOztJO0ssTztLLE87SyxPO0ksTztHO0csZ0I7Ozs7Ozs7Szs7OztNO29CO0s7STtJO0ssYTtLLFM7Szs7SztLO0k7STs7Ozs7UyxLO1U7VSxLO1c7WTs7O2U7ZTtnQixXO2dCLEcsMkM7NkI7Z0I7Z0IsRyxtQzs7Ozs7b0IsTTs7O29CO3FCLFc7cUI7Ozs7Ozs7cUIsVzs7c0IsTTs7Ozs7Z0IsTzs7YztXO1k7WTtZOzs7O21DOzs7OztTO1E7Szs7O0s7TTs7O1M7UztTO1U7VSxROzs7VSxLO1UsTztTOzs7Ozs7Ozs7VSxNOzs7Ozs7O1E7SztLO00sTztNLE07d0IsVyx1QztNLFE7SztNO087OztVO1UsRywwQjs7Ozs7Z0I7VTtTO007TTtPOzs7VSxXO1UsRywyQztVLGdCOztVO1c7VyxPO1c7OztXLE87cUI7O1U7VSxTO1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1UsSztXLE87Ozs7Ozs7O1UsTTs7O1M7OEIsbUIsbUI7TTs7OztLOzs7O007TTs7OztNLGU7OztLOztNO00sTTs7O00sRyxvQztNLEc7Ozs7Ozs7YTtjOzs7O21DO0ssVztLLE87STtJLE87O29CLGtCO0csZ0I7O0kscUMsTzs7O0s7SztJO0ksTztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOztLOztNLFE7TSxNO00sTTtNOzs7UztTO1UsTTtTLGlDOztVLEksTzs7Ozs7Z0MsTyxvQzttQjs7Ozs7Ozs7O1MsUSxNO1M7UTtLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs7Ozs7Ozs7Ozs7VTs7Ozs7OztTO00sTzs7Ozs7STs7Szs7Szs7OztTO1M7UTtNLE07SztzQzs7O29CLDBCO0ksRztLO3dCLHdCO00sTTtNLE07SztzQzs7d0IsbUIsK0I7SSxXO29CLHVCO0k7SyxNO0ssUTtJO0s7O0ksYzs7SyxNO0k7OztLLE07SyxPOztLLEcsa0M7O0s7STtJLE87OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtHOztJO0ssVTtLOztlO0c7RztJLE87RztHO0k7d0IsbUI7SSxPO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7OztHO0c7Ozs7Ozs7Ozs7O0k7OztzQjtJLFU7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7O0s7Ozs7OztLOzs7STtJO0ssUTs7O0s7Tzs7Szs7Ozs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE07TSxPO007OztNLEksVTs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOzs7Ozs7VTtXO1csTzs7Ozs7Uzs7UztpQjs7O0s7O0c7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsTyxpQztPLE87O00sYztzQzs7O08sTzs7TSw0QixJOzs7Ozs7TSxPOzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs0Qiw4Qzs7K0IsVyw4QjtHLEksUzs7STtJO0ssWTttQzt3QjtLOzs7TTs7OztHOztJO0ssTTtLLE87O0s7SyxrRTtLLE07STtJLE8sVztHO0c7O0k7O0k7O0k7Rzs7O0ssSSxtQjtLLFc7STtJLE87Rzs7Ozs7OztJOzs7SSxJLFUsbUM7Ozs7OztHOzs7SztLO007TyxPO087TyxVOztPOztRLE07cUI7OztNOzs7O087TyxPO007TSxHO087OzhCLE8scUM7UTtPLE87O007TyxNO08sUTs7TztPO087Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7OztZLE87O1k7OzthLE87Ozs7Z0I7Ozs7OzttQjs7OztvQjs7Ozs7Ozs7OztnQixPOzs7YSxNO1ksTzs7Ozs7Ozs7TyxZOzs7Ozs7Ozs7Ozs7O1kseUM7Ozs7Ozs7Ozs7OzthO2M7Ozs7Ozs7cUI7OztzQixRO3NCO21DOzs7OztpRDs7bUI7OztlO2lCO2UsUTtlOzs7Ozs7Ozs7Ozt1Qzs7Ozs7WSxNOzs7Ozs7OztXLE87VTtPLE87Ozs7STtJO0c7O0k7d0IsUztJLE87Rzs7O0s7OztNLG1CO0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLOztNOztPO087TTs7SztLLG9CO0ssTzs7OztlOztJO0s7Tzs7OztLLGlCOztLO00sTTtNLFk7O00sTTtLO0k7STtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Ozs7OzsyQzs7OztxQjs7O1UsTTs7Ozs7Ozs7Ozs7O3VCO2tCOzhDLFM7SyxPOzs7Syw4Qjs7O0ksOEI7O0c7O0ksZTtJLEksZ0M7OzswQjs7O0c7O0k7SyxNO0ssTTs7RztHLGtDLGdCO0cseUIsdUI7RyxtQywrQjtHO0k7Ozs7Ozs7Ozs7Ozs7OztHO0cscUMsUztHOztJLE87Rzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QixPLDBDO0ksTztHOztJLFk7c0U7STtHOztJO2tCOzs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7UTs7Tzs7Ozs7Ozs7Rzs7STs7SyxNO0ksa0IsSywrQjs7Ozs7USxxQixJO2U7UyxNOzs7O1Esc0IsUTtROzs7O1EsRztTLE07Ozs7O0ssTzs7SSxNO0c7Ozs7SyxJLGUsdUM7Ozs7TyxNOzs7O0ksTztHOztJO0ssTTtJOztLO0ssRztNLE07cUI7O0k7STs7Ozs7Ozs7O007TyxRO08sTTtNLFc7SztLLE87O0ksYTs7SyxtQjs7Ozs7O0ssSSxPLHlCLE87SztJO0ksYTtJO0c7O0k7Szs7TSxPO00sTTtNO3lCLFk7SyxlOztJOztLOzs7STs7O0k7SztNOzs7Szs7SSxnQyxJO0k7STtLOzs7SyxZO0s7SyxVOzs7SyxHO007TTs7O0k7SyxPO0ssb0I7SSxNO0c7OztJO0k7STt5QixvQixjO0ksSSxTLDRDOztLOzs7O00sTztLLFc7STtJO0ssUTtLLFU7SyxRO0k7O00sTTs7Ozs7OztLOzs7UyxNO1E7TTs7O087O087OztNOzs7UTs7Ozs7O3NCOzs7VTs7Ozs7OztXOzJCOzs7VTs7Ozs7Tzs7OztNOzs7UTt3Qjs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TyxvQjtPLFU7Ozs7Ozs7Ozs7Ozs7NEIsNkI7UTs7TTs7SztNOzs7UztTLEc7VSxNOzswQjs7UTtLO0s7TTswQixPLGtDO00sTztlO00sTTtLO007OztVO1csTztXOzs7OztXO1csTztXLE87VztVO1M7UyxPO1E7TTtNLE87TSxVOzs7Ozs7O0s7O007OztLOzs7TTs7O1UsZTs7Ozs7WSxPOzs7VTtTO08sUTtLO007TTs7Ozs7O0s7O007TSxNOzs7OztJO0ssUTs7OztLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7TTtNO0ssSSxXLHNDOzs7OztNLE07O0k7STtJO0k7SztNO08sTztPLFc7TyxVOzs7OztPLE07Ozs7Szs7STs7Ozs7Ozs7Ozs7OztJO0k7O2dCOztJLE87Rzs7STtJO0ssVztLLEcsMkM7a0I7Ozs7OztTLEksVzs7OztXLE07OztTO1UsTztVLE87UyxJOzs7OztVLE07OztTOzs7YTs7UyxPOzs7OztpQjs7OztLOzt1QjtLLE87O0c7OztLOzs7TSxTOzs7O08sTTs7TSxHO087OztJO0ksTztHOztJOzs7Ozs7TSxtQixVOzs7TztRO1MsUztTLE87O1c7OztTLEk7Ozs7Ozs7UztVLE87VSxPO1UsTzs7WTs7Ozs7UyxNOzs7Ozs7UyxNOzs7O00sTTs7O0k7Rzs7STs7SyxXO0ssRzs7Ozs7aUM7Ozs7OztPLE07bUM7TSxNO2tDOzs7TSxXO00sRzs7O087USxPO1E7Ozs7Ozs7OztjOzs7Ozs7O1U7O1c7eUI7Ozs7Ozs7OztLLGdCO0s7O007O2dDO08sc0I7TTtNLEk7Ozs7Ozs7Szs7OztNLHNCO00sRztpQztPOzs7Tzs7USxzQjtPOztNO087USxPO1EsUTtRLG9CO087Ozs7O2lDO08sTzs7O3lCO0ssTztJO0ksVztJO0s7O00sc0I7TSxPO0s7Ozs7OEIsTzs7O0c7O0ksSTs7SztNO0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0ksTztHOztJLGtCO0k7O0s7SztNO08sTztPLFc7aUI7Ozs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VTs7O2M7OztVLE87Ozs7O2tCOzs7O007OztVOztNLE87O0k7OztLO00sUTs7Ozs7SyxvQjtLO0s7STtJLE87Rzs7STs7Ozs7TTtPO1EsTztRLE87TyxLLG1DO087UTtRLE87TztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLEc7TSxPOzs7STtHOzs7SztLO0k7SSxPO0c7O0k7SSxrQjs7Szs7TTtNLE87TSxhO007TTtLOzs7Ozs7Ozs7STtJO0ssTztLLGU7SyxROztLLEksTyx5QixPO0ssVztJO0ksZTtJO0k7O0s7Ozs7Ozs7Ozs7Vzs7WSxNOztVO087OztNO08sTztnQjs7SyxZO0ssYTtLOzs7O00sTztNLE87Ozs7NEI7Ozs7MEIsTywyQjtLOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Szs7STtLO087SztLLGM7Ozs7TTtPO08sSzs7O1U7Ozs7OztVLFc7VTtVLE87UztNO007O0s7Ozs7OztNO0s7SyxPOztJO0ssTztLO087eUIsK0I7SSxZOztJO0ssUztLLFU7O0s7Ozs7Ozs7VTtXO1ksTztZO2M7Ozs7Vzs7Ozs7WSxPOzs7O1M7TSxPOzs7O007TTtPO1EsTztRO1U7O087Ozs7O1EsTzs7O0s7SyxPO0k7STtJO0k7Ozs7Uzs7VTtVO1UsTztVO3FCO1MsbUI7OEIsTyw0QjtTLGE7UztVO1csTztXLE87VTs7Ozs7O1UsTTs7O1E7Szs7STt5QixxQiw2QjtJO2dDLG1CLHlCO0k7bUI7O0s7OztNO00sTTt1Qjs7MEIsTyw0QjtLO00sTztNLE87SztrQztJO0k7O0ssbUI7O0ssTztJOztLO0s7O2M7Ozs7STtJO0k7SyxxQjtLOzs7Yzs7Ozs7STs7SyxxQixRO2lCOztLLE07STtJO0k7Szs7TTtNOzs7TTtNO0s7Szs7Ozs7O1Esa0I7OztTOzs7USxNOztPLG9COztROztTOztZLE87VztTO1c7OztZO1k7YTtjLE87YyxROzs7OztjLE07Ozs7OzthOzs7Ozs7O21CO2tCO2U7Ozs7Ozs7O2U7Ozs7YSxNOzs7O2E7O1k7VztROzs7TyxNOzs7OzttQjtLLHFCOztNLE07O0s7O0k7STtLOzs7UztTO1E7TSxPO007UTtVO00sTyxXO007USxXOzs7Ozs7TSxNOzs7O00sTTs7Ozs7SyxNOztJO0k7O0s7O0k7O0s7Szs7Ozs7Ozs7Ozs7STtJLGtCO0k7Rzs7OztLO0k7SSxPO0c7MkIsK0I7OztLLFk7SztLO0s7O00sUTs7O007Ozs7TztROztnQyxpQztTLE07Ozs7Ozs7O08sTTs7O007Ozs7VTtXLFE7OztVO1M7TyxnQjtPLE87Ozs7TztRLE87OztXOzs7OztZO1k7Ozs7OztVO1EsTTtNOztPLE07OztNO087OEIsb0IsYztPLGM7TyxPO08sTztNO007Ozs7Tzs7VTs7O08sZTtNO007Ozs7VTs7UztNOzs7O1UsWTtzQjs7VSxNOztTO007Ozs7VTtXOztjOzs7Ozs7Vzs7Ozs7OztXLE07O1M7TTtNOzs7VTtVLE87UztPLFM7Tzs7Ozs7Ozs7O007O0ssTTtJO0ksTztHOztJLFk7STtJO0k7O0k7STtJO0ksWTs7O0ssTTs7O0k7SztLLFM7STtHOztJO3lCLG1DO0k7SyxROzs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7Szs7Ozs7Ozs7Ozs7SztpQixPOztLLE07O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7a0I7SSx1QixROzs7Ozs7TyxHOzs7OztNLEc7TSxHO00sRztNLEc7Ozs7O0ssTTs7O0k7Rzs7STs7SyxVO0s7Ozs7Ozs7OztPLE07OztNOzs7TztPOzs7TTs7O0s7O0ksTTtHOzs7SyxJLE0sMEM7O007Ozs7O007Tzs7OztPO1M7OztPO1EsTztRLHVCOzs7O08sTTs7Ozs7c0I7OztNO08sTTtNOzs7VTtXLE87VyxPO1U7Ozs7O2E7O2MsUztrQzs7Ozs7O1c7Ozs7a0M7OztTO087UztPOzs7VSxnQjtVLE87UztNO007TyxPO08sTzs7OztNLEs7TyxNO007TyxPO08sTzs7O0s7O00sdUIsZTtNLFU7OztNO0s7STtJLE87Rzs7O0k7STtJO0ksSSxnQjt5QixvQixjO0k7SyxTO0ssUTtLOztLOzs7O00sTTtNLFE7SztJO0k7SyxjO0s7OztLOztNLE07Ozs7O0k7SyxhOztJOzs7OztTO1M7VSxXO1U7Ozs7OztVLE07OztRO0s7OztLO0s7TSxXO007Ozs7OztNLE07O0k7STs7Ozs7Ozs7STs7Ozs7O2E7Ozs7Ozs7OztJO0ssTztLLE87OztLOzs7Ozs7OztROzs7Ozs7Ozs7SztJO0k7SSxjOzs7SyxNOzs7STtLO0ssVztJO0s7O1E7Ozs7Ozs7SyxNOztJOztPO0k7Szs7UTs7Ozs7OztLLE07O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOzs7Ozs7Ozs7OztHOztJO0ssVztLO0ssVztJO0k7STs7OztLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxZOztLOztNO3NDO0ssVztJO0ksTztHOzs0QixPLHNDO0k7STtJO0c7O0k7Szs7O1MsVztTLE87UTtNLEs7TSxNO00sVztLO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O3FCLFk7SSxPO0c7O0k7OztRLE87O1EsTzs7Ozs7OztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7O3lCLE87OztPLE87OztPLE87OztPLE87Ozs7USxPOzs7Ozs7OztPOztRO1U7O08sTzs7Ozs7Ozs7Ozs7O087Ozt3QixPLDBDOzt3QixPLDBDO087TyxPOzs7Tzs7O3dCLE8sMEM7O3dCLE8sMEM7TztPLE87O087OztRO3dCLE8sMEM7O3dCLE8sMEM7TyxPOztPOzs7OztROzs7VyxPOzs7Ozs7Ozs7UTs7VyxPO1U7OztXLE87b0I7OztVO087TztPOztRO1MsTzs7UyxPOztTLE87USxPOzs7Ozs7Ozs7Ozs7TztRLE87O1EsTzs7USxPO08sTzs7OztPO087USxPO1E7Ozs7O1M7Ozs7YTs7OztrQyxTOztzQyxXO1k7VSxROzs7Ozs7Yzs7ZSxVOzs7OEI7Yzs7OztnQyxrQixTOzs7aUI7aUIsTztnQjs7O2Msb0IsUTtvQztjO2U7O2tCOzttQixPO2tCLE87aUI7OztrQixrQixROzs7OzZEOztvQixPOzs7bUQ7O2tCLE87aUI7Yzs7O1U7Ozs7Ozs7UTs7OztzQixZOzs7VyxXO1csTztVOzs7O1E7Ozs7O1c7VyxPO1U7OztXOzs7Ozs7OztVOztPLE87OztPLE87Ozs7Ozs7OztPLE87Ozs7Ozs7OztPOzs7UTtVOzs7OztRLE87TyxPOzs7Ozs7Ozs7O087Ozs7UTt3QixPLDBDOzs7VyxPO1U7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7OztPOzs7O1E7O1c7Ozs7WTtXOzt1Qjt1Qjs7dUI7dUI7Ozs7O1c7Ozs7Ozs7O1c7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7O2E7cUI7Ozs7UTs7Ozs7Ozs7O3dDO08sSSxxQjtPLE87OztPLE87OztPO087Tzs7OztxQixTOzt5QixhO08sTzs7O2lCO2lCOztPLHFCO08sTzs7Tzs7UTs7OztPLE87OztPOztROztXLFksTzs7VyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztJLEksSzs7OztNOztPO08sUztPLFU7Ozs7TztRLFM7USxNO1EsaUI7Ozs7TztRLFE7OztNLEk7Ozs7O08sTTs7OztPO1EsTztRLE87OztXOzs7Ozs7WSxHO2EsTzs7O1c7VTtPOzs7O087O1EsTztRO1E7O1c7O1E7O1c7O2M7USxNOzs7O1EsTTs7O1EsdUI7Ozs7Ozs7Ozs7O1k7YSxTO2EsTztlO2EsTTtZLHNCLE87WTs7Ozs7Ozs7O1ksTTs7O1UsTTs7Ozs7OztPLE07O00sTTs7Szs7O007Ozs7Ozs7Ozs7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7STtHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE87Szs7O0ssSSxVOzs7NEI7Ozs7Ozs7Ozs7Ozs7OztNLGM7b0I7O007O0s7O0k7Rzs0Qiw2Qjs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJO0ksTztHOytCLDBDOztJO0ksd0M7Ozs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Vzs7O1U7Ozs7Z0M7OztROzs7UTs7Ozs7USxNOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLEcsc0M7OztLLEc7OztTOzs7OztpQjs7OztJO0c7NEIsdUM7b0MsdUM7O0k7Ozs7Ozs7TztTO1c7USxJLFUsNkM7Ozs7K0I7Ozs7OztJO0c7O0k7Ozs7Ozs7O1E7OztTO1E7Ozs7O0k7Rzs7STs7O0ssRyxvQztLLEcsb0M7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Z0I7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7Szs7STtHOztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7STs7Ozs7dUI7OztJO0c7cUMsd0I7O0k7STs7Ozs7OzsyQjs7UyxJLFcsaUM7OztpQzs7Ozs7OztVOztXLG1CO1csTzs7VTtTO1M7VTtZOzs7Ozs7a0YsZTs7UyxPOzs7Ozs7Uzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7O0s7O0c7Rzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHOztJLFU7O0ksSSxXLDRCOzs7NEI7OztHOzs7O0ssSSxxQjtLLE87STtJLE87Rzs7SSxPO0c7O0ksb0I7SSxPO0c7OztLO0s7STtJLE87Rzs7OzJCLE8sMEI7SSxPO0c7O0ksbUI7Rzs7SSxPO0c7O0k7O0ksTztHOzs2QixtQix3QjtJLE87Rzs7cUIsd0I7SSxpQjtHOzJCLGE7O0ksTztHOztJLE8seUI7Rzs7STtrQzs7OzJCOztPOztPOzs7O1E7UTs7Vzs7TyxzQjs7Tzs7USwwQix1Qjs7USxzQjtPLHNCOzs7Ozs7Ozs7OztRO1EsSSxVO1Esc0I7O087Ozs7O1csc0I7O1E7VTtRO2tDO1E7USxzQjtPLHNCOzs7Tzt5Qix1QjtRO1MsTztTLFE7OztTLE87UztRLHVDOztPOzs7USw0Qix1Qjs7OzZCO1E7TyxzQjs7Tzs7O1Esc0I7TyxzQjs7Tyx5Qzs7OztTOzs7VTs7MkI7Ozs7O087OztRLHNCO1E7Ozs4QjtPLHNCOztPOzs7USxzQjtPLHNCOzs7OztRO1M7Ozs7O087O1E7USxzQjtrQztROzs7WTtZOzs7O1k7VztXLE87O1E7NkI7TyxzQjs7Tyw4QjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O087O1EsVTs7USxzQjtPLHNCOztPOzs7Ozs7NkI7OztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRO2tDOztRO2tDOztRO1EsMEI7TyxzQjs7Tzs7OztRO1Esc0I7a0M7O1E7USwwQjtPLHNCOztPLGdDO08sc0I7O087Ozs7O1E7USwwQjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O087OztRLDRDOztRO1Esc0I7a0M7O1E7USwwQjtPLHNCOztPOzs7O1E7UTtRLDRCO08sc0I7O08sMEM7TyxtQixPOztPLDhCO08sc0I7O08sb0IsVTs7Ozs7O087TyxzQjs7Z0M7OztPLGtCLE87O087O087Ozs7O1E7USxtQjtrQzs7UTtRLHNCO1EsMEI7TyxzQjs7TyxnQztPLHNCOztPOzs7UTtRLDRCO08sc0I7O0c7NEI7O0ksdUM7SSxzQjtHOztJO0ksc0I7Rzs7STs7O08sNkI7TyxzQjs7MkI7OzZCOztPOztPLDRCO08sc0I7ZTs7Rzs7SSxpQjtJLDBCO0ksc0I7Rzs7STs7OzJCOzs7Tzs7O1M7Ozs4Qjs7O1k7O1k7O1k7O1k7O29DLG1CLFU7YSxVO2E7WTs7WSx1QixPO1k7OztZOztZOzs7O2dCO2dCO2U7YSxhO21DO2EsTzs7OztnQjtpQjs7a0I7a0I7a0I7MEM7O2lCO2tCO2tCOzBDO2dCOzthO1k7OytCOztZOzthLGlEO2EsWTs7OztnQjs7YTtZOztZOzs7O2EsZTthO1k7b0I7O1E7USxPOztPLDRCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Ozs7OztXO1csc0I7VTs7O087c0M7OztXOzs7OztZO1ksc0I7Vzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7OztPLHNCOztPLHlCO08sc0I7O087Ozs7UTtRO2lDOztRO1EsMEI7TyxzQjs7Rzs7STs7Szs7TSxNO007TTtNO00sdUI7Ozs7Szs7TTtNLHlCOzs7STtHOztJOzs7SztLLFk7SztJO0c7O0k7STs7OztRLDZCO1EscUI7OzJCOztROzs7NkI7UyxNO1M7UztRLG1COztROzs7Ozs7WSxxQjs7O1M7UyxvQjtpQzs7UztTLHdCO1EscUI7O1E7Ozs7UztTOztZOztRLHFCOzs7Ozs7Rzs7STt1Qjs7STtHOztxQixhO0k7SyxpQjtLO0k7Szs7O1M7OztVO1U7VTs7O1U7O1M7VSxlO1U7Uzs7TSxNO00sUTs7OztLOzs7Tzs7MEI7TTtNLFk7TSxHOzs7Ozs7OztTOzs7VTtTOzs7STtHOztJOzs7Ozs7SSxrQjtJLDRCO0k7SywwQjtLLHdDO0c7O0k7SztLLE07cUIscUI7STtLLE0sVztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7SSxJLDJCOztLO0s7STtJO0ssUTs7O2tCLDhCO0k7Rzs7O0s7Szs7Ozs7Ozs7Ozs7OztTOzs7Ozs7O0k7O0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHO0k7STtJO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJLFc7Ozs7Ozs7SyxHLHVDOzs7SSxNO0c7O0ksSSxROzs7Szs7SSxNO0c7O0k7SyxROzs7Ozt1Qjs7OEI7SSxNO0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7Rzs7STs7SyxNOztJO0c7RyxzQjs7STtJOztNOztPO2M7VTs7Szs7Ozs7O00sTTs7Ozs7SyxNOzs7Rzs7STtJO0c7O0k7SztLOzs7Ozs7Ozs7O08sTTs7Ozs7O0c7O0k7Ozs7Uzt1RDtTO1E7SSxPO0c7O0k7Ozs7Uzs7Ozs7O21COzs7O1c7WSxRO1ksVTsyQzs7Ozs7O2MsZSxPOzs7Ozs7O2M7ZTs7Z0IsTTtlOztnQjtnQjs7Z0Isc0I7ZSxPOzs7Ozs7YSxLO2MsTzs7O1c7O1UsTTs7UztRO0ksTztHO0c7STtJO0k7STs7STs7Ozs7Rzs7STtJOzs7O0k7O0ssc0I7SyxPLGtCO0k7SSxHO0ssTTs7SSxTOzs7OztNLE07OztJO0c7OztLLCtCLE87SyxPLDRCO0k7SSxPO0c7O0k7Ozs7Ozs7O1M7O1Usc0I7VSxNO2tCOzs7Ozs7Ozs7Ozs7OztTO1M7VSxzQjtVLFE7VSxVOzs7VSxPOzs7YTs7O2M7O2Esc0I7WTtTOzs7O1M7OztVLHNCO1UsSztVOzs7O2M7Ozs7O2tCOzs7Uzs7VSxPO1UsTTs7UztVLE87OzthO2E7WTtVLE07OzthO2MsUTs7O2E7Ozs7YyxXO2M7ZSxXOzs7Ozs7Ozs7Ozs7O2E7YztlLE07OztlO2M7Ozs7OzthO2MsVTs7O2E7YTtZO1M7Ozs7O1M7VTs7VyxROzs7O1csTzs7YTs7OztTLEksZ0M7Uzs7Ozs7O0k7O0s7Szs7TTtNLFM7TTtNO007TyxPO08sTztNO007O0s7STtJLE87Rzs7STtJO0ssSSxJLFc7Ozs7OztLOzs7b0M7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7Rzs7OztJLFk7c0U7SSxNO0c7OztLLDRCO0k7O0s7TSxTO007d0IsTTs7SztNOzs7VTtVLE8sa0I7UztPLE07Ozs7O007O3lCLG1CLE8sd0I7TyxjO00sTTs7Ozs7Ozs7SztLO0k7Ozs7b0IsTztNLHNDLE87TSxHOzs7TyxJOzs7O0s7MEIsb0IsMEI7SztNLFc7TTtNOzsrQjs7OytCOztNO00sTztLO0ssTztJOztLLGtCLE07OztNLG9CO007O0ssTztJOztLO0s7TTtNLFk7OztLOztpQjtLLE87STs7SztNLE87TSxPO00sVztLLE87STs7MEIsTywrQjtLO00sUztNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7OztLO0s7Ozs7Szs7Ozs7Ozs7TyxJOzs7O1EsSTs7OztTO2lCO1U7OzthOztjO2M7YTtZO1UsTTtTLE07OztRLEcsMEI7MEI7Ozs7O087OztTOztVLFU7Ozs7VyxNO1U7OztXO1U7Vzs7Vzs7O1U7OztTOzs7Ozs7TSxjOzs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztPLE07Ozs7SyxHO007SztJO0k7OztJLEksVyxrQjs7Ozs7O0ssTTs7O0c7OzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7OztJO3NCLE8sYyxnQzs7SyxPLDZCLE8sMEI7STtJLE87Rzs7O0k7Ozs7OztPLEc7Ozs7WSxrQzs7YSxNOztZLGdCO1c7d0I7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs7OztVLGtDOzZCOztVO1M7c0I7OztLOzs7UztTLE87UTtNLE07TTtNO007TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPO1E7OztTOzs7VSxRO1M7O1c7O1ksTztZOztZLE87VztXO1csVztXLE87OztXLG9CO1c7Ozs7O29CO1c7O1UsYTt1QjtVLGU7OztTOzs7Ozs7Ozs7Ozs7UTtNLGE7O007O00sVTs7Tzs7Ozs7O1c7VztVO1EsUTtRLE87USx5QztRLE87USxzQjtPLEc7USxnQjtROzs7Ozs7WTtZLE87VztROzs7OztNLFc7TTs7Ozs7Szs7STtJLG1CO0k7Rzs7NkIsZTs2QixlOztJLFE7VTtJLFc7O0s7OztTOytDOztRO0ssTzs7STtHOzRCLFM7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7NEIsa0IsOEI7UyxPOztTLGtDO1MsUzs7Ozs7Ozs7UyxPOzs7Uzs7Ozs7Ozs7Ozs7Szs7Rzs7SSxJLFcsdUM7Ozs7O0ssTTs7O0c7RztJO0k7O0ksbUIsTztJLFc7Rzs7STtJOzs7Rzs7STtJOzs7O00sSSwwQzs7Ozs7Ozs7O0ssTzs7Rzs7SSxZOztJO0c7O0ksa0I7Rzs7SSx3QjtHOzs7Szs7STtJLE87Rzs7OztLOztLO007O0ksSSxhOztLLCtCO0s7STs7Szs7a0I7OztJO0ksb0IsTyx1Qjt1QixPLHVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7UztTOzs7Ozs7bUI7OztRO0ssVzs7Syx3QjtLLGU7O21CO00sTTs7Ozs7OztLOztPLE07Ozs7O0s7Szs7OztPOztRLE87UTtVO2E7O087OztPO1EsTTs7OztXO1c7VztXO1c7Vzs7O1U7Tzs7Tzs7UTtROzs7Ozs7Ozs7OztTOzs7VTtVOzthO2MsTzthO2MsWTtjLE87YSxPO1k7O1U7Uzs7OztPLE07OztPLE87USxNO087K0IsTywyQjtRLGU7USxPO1EsYztPO08sYztPOztpQixnQztpQjs7O2dCOzs7aUI7a0MsWTtpQixlO2lCOzs7Ozs7MkI7OztnQjs7O087UTtTOzs7O2dCOztTOzs7Ozs7OztPOzs7OztTLEs7VSxNO3NCOzs7UTtTLGE7Ozs7Ozs7Ozs7Ozs7Ozs7TztROzs7USxNOzs7UTs7UyxPO1MsTTtTO1EsTTs7Ozs7Ozs7Ozs7Ozs7O1MsTTs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7Ozs7UTtTLE87UyxROztTOztVLE87VSxPO1UsSztTOzs7USxNOztPO087USxnQjs7O1c7Ozs7O1c7O1U7UTs7UTs7OztTO1MsVTs7OztTO1M7OztZO2EsTzthO2U7Ozs7WTtXO1MsTTtRO1E7UyxVOzs7O1E7UTs7UTtTLE07UyxNO1E7UyxNOzs7O1UsVztVO1U7VyxPO3FCOztVLE07OztTOzs7O1M7NkIsWTtVLFE7OzthLFc7Ozs7Ozs7YyxHO2UsTzs7O2EsTTs7WTtVLE07O1UsTTs7O1E7Uzs7Ozs7OztRO1M7Vzs7O1M7Ozs7O087TztPO087O1E7Ozs7O2E7YTthO2E7YyxPO2MsYztjO3dCO2E7O2dCOzthO2EsTTtZO1M7Ozs7Ozs7Ozs7O1c7Vzs7Ozs7Ozs7Z0I7Ozs7Z0IsTTs7O1k7O1U7O1E7Ozs7WTtZO1c7UTs7Tzs7O1c7Vzs7Ozs7O3FCOzs7VTtRLE87Tzs7aUIsZ0M7aUI7OztnQjs7Ozs7TyxHOzs7UyxNOztPOztzQztROzs7Vzs7Ozs7USxnQjtPLEc7UTs7OztVOztPO1EsVzs7O1c7Ozs7Ozs7WSxPO1c7Ozs7Ozs7Ozs7OztVOztROzs7UyxtQixtQjtROztPOzs7TztRLE07O1E7Uzs7O1MsUTtTO2dCOztTOzs7Ozs7O3dCOzs7Ozs7VztXO1ksUTs7O1c7WTs7Ozs7Yzs7Ozs7Ozs7YyxNOzs7Ozs7O1c7VztXOztZLE87VztXOzs7O1c7O1k7O2E7YSxVOzs7Z0Isc0I7Z0I7aUIsTTs7O2dCO2dCOztZOzs7MkI7WTthO2M7O2M7Ozs7Ozs7O2U7Ozs7OztjO2UsTztlLEk7Yzs7Ozs7O1c7Ozs7bUI7OztVOzRCLG1DO087Ozs7a0MsMEM7UTs7Ozs7Ozs7Ozs7O087Ozs7O21COzs7Ozs7Ozs7Ozs7O087O1EsUztRLGdCO087Z0M7Tzs7aUI7aUI7OztnQjs7O2lCO2lCOzs7Ozs7MkI7OztnQjs7O087UTs7UztTO1MsYTtRO1EsVTs7UTs7O1ksaUIsUztZO1c7UztTO1M7Uzs7O1EsSSxvQjtROzs7Ozs7WTtZO1c7UTs7OztZO1k7VztRO1E7O1M7Uzs7O1k7WTthOzs7c0Msc0IsYTtpQixPO2dCO2E7Ozs7Ozs7Ozs7ZSxLO2dCO2lCLE87aUI7bUI7c0I7OztnQixNOzs7Ozs7O2U7Z0IsVztnQjtnQjs7Ozs7OztnQixNOzs7ZTs7OztnQzthLE07OztXO1M7UyxPOzs7O1E7Ozs7OztrQjs7OztPOztRO1E7OztXOztxQjtxQjtvQjs7VTtPLGU7Tzs7O1c7OzthLE07Ozs7O1c7WTtnQyxTO2E7Ozs7Ozt3QztzQzs7O1c7VTtRO1E7OztROzs7OztZLE07Ozs7Ozs7Ozs7O1M7VSxNO1M7Ozs7UyxrQjtTOzs7Ozs7bUI7Ozs7OztPOzs7Ozs7OztTO1UsTTtTO1UsVTs7OztTOzs7OztXOzs7OztVO1U7cUI7VTtVO1U7Ozs7Ozs7Ozs7UyxNOzs7OztPO1EsTTtPO087USxVOzs7O087O087TyxXO087c0M7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxPO1U7Tzs7O087USxNO087O1EsVTs7O1E7K0IsTyw0QjtRLFE7USxPO1EsTztROzs7USxHO1M7VSxPOzs7YTs7Ozs7YyxROzs7O2U7Ozs7Yzs7OzthO1k7VSxXOzs7VSxPO1U7O2E7Ozs7OztVLE87VTs7Ozs7VSxPO1U7OzthO2E7WTtVLFM7UztVLE07O1M7Ozs7O2E7WTtVLEk7VTtTLE87Ozs7Ozs7Ozs7Ozs7O08sTTs7O087O1EsSztRLE87TztnQzs7OztXO1c7Ozs7OztxQjs7O1U7Tzs7O087USxNO08sSSxJLHlDOztROzs7Tzs7UTtRO087Ozs7Ozs7Ozs7Tzs7OztXO3dCLE87VyxNO1U7UTtPOzs7TyxNO2tDOzs7TztRLE07TztRLFc7Ozs7Ozs7VyxzQixROztZLE07OztXLE87Ozs7Ozs7OztVO087O0c7OztJO0k7OztlOztLOzs7Ozs7OzBCLFM7STtJLE87O0c7OztJO0k7SztLO0s7STtLO0s7SztLO0s7Ozs7OztLO0s7O0c7O0k7OztlOzs7STtJO0s7OztJLE87Rzs7STs7O2U7O0s7Ozs7TTtPLE07OztLO0k7SSxPO0c7OztLO0ssTztJO0ksTztHOzs7Szs7Ozs7O007TSxPO007K0M7SyxPO0k7SSxPO0c7O0k7STtLLEs7SztJO0s7Szs7SSxXO3FCLE8saUI7STtJLEc7Syw0QztJLEk7O0s7Ozs7Ozs7OztLLGtCLHFDO0s7TSxLO00sTztNLFU7TTtROzs7Ozs7TTtROzs7Ozs7SztJO0k7SyxROzs7O0k7Rzs7STtLLE87SyxPO0ssaUI7SyxXO0ssUztJO0k7SyxLO0s7SyxPO3FCLE8saUI7STtJO0s7SztLOztJOztLOzs7Ozs7Ozs7TSxPO00sTztNLE87TTs7Ozs7O1M7TSx1QixxQztNLE87SyxXO0k7STtLLFE7Ozs7STtHO0c7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87O0s7SztLLE87STtJO0k7STtJLE87Rzs7STtJOzs7Ozs7OztVOzs7K0IsOEI7VyxPO1UsVzs7Ozs7Ozs7WSxrQjtZLFc7WTttQzthLE87WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxzQztVLFc7Ozs7Yzs7OztlO2M7ZTtlO2dCO2lCOzs7cUI7b0U7cUI7b0I7NEI7Ozs7OztjO2E7VSxPOzs7VSxPOzs7VSxPOzs7VTtXLE87O1U7O1U7Ozs7O2M7Yyx3Qjs7O2E7VyxPO1UsVzs7Ozs7Ozs7Ozs7VSx1QztVLFc7Ozs7Ozs7OztxQjs7Ozs7Ozs7VTs7OztXOzs7Yzs7O2lCOzs7a0Q7O2lCO2lCOztpQjs7aUI7O3FDO3lCOzthO1csTztVO1c7Ozs7ZTtlOzs7YztZLE87WTs7Ozs7O1U7VyxPOztVOzs7Ozs7Ozs7TztPLFc7Ozs7TTs7Szs7Rzs7STs7O0k7STs7OztROztTOzs7WTs7Ozs7b0MsOEI7ZSxPOztlOztnQjt1QyxpQztlLE87Ozs7Ozs7Ozs7bUI7bUI7a0I7ZSxPOztlOztlOzs7O3VCOztZO1c7USxPOztROzs7OztRO1MsTzs7UTtnQjs7O0c7O0k7OztJLFk7O0k7SyxPOztJO0c7O0k7OytCLDhCOztJLFU7O0s7O00sVzs7TSxNO0s7STtJLE87Rzs7O0ssZTs7TSxNO0s7STtJLE87Rzs7STs7Ozs7TSxPOzs7STtHOztJO0k7Ozs7O1M7OztVO1k7MkI7ZTtVO1MsTzs7Uzs7VSxzQjtVLFc7UyxPOztTOzs7VSxVOzs7VTtZO1UsTztTO1Usc0I7VSxNO1MsTzs7OztLLE87O0c7O0k7STs7Ozs7Ozs7O1U7O1c7VyxjO1UsTzs7OztTOzs7VTtZOzJCO2U7VTtTLE87Ozs7Ozs7O1M7O1Usc0I7VSxXO1MsTzs7Ozs7O1M7OztVO1U7UyxJLHVDOzs7OztVLE07Ozs7Uzs7OztVOzs7O3NCO1M7UyxJLHlDOzs7Ozs7VSxNOzs7O0ssTzs7Rzs7STtJOztLO00sUztNLEc7TyxXOzs7Tzs7O1E7UTs7Ozs7O00sVztNLFc7OztJLE87Rzs7O0k7STtJO0ksVTtJOzs7Szs7O1c7TSxVOzs7SztLO0s7SztLO00sVTs7O007Z0I7SztNLGM7TSxzQjtLLE07O0ksTTtHOzs7SyxTOztNOztPLEcsb0M7Ozs7Ozs7Ozs7O1E7UTs7Ozs7Ozs7Ozs7OzsyQixpQztNLFk7O00sTztLOzs7OztxRCxZOzs7Ozs7Ozs7Ozs7c0MsaUM7YyxHO2U7Ozs7Ozs7Ozs7cUMsc0Isb0I7a0IsTzs7O2tCOzs7cUMsc0Isb0I7a0IsTzs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7a0IsTzs7Ozs7O2M7OztTOztLO0k7STtHOzs7SyxJLE8sMkIsTztLLFc7MEIsTTtLO0ssTztJO0ksSSxXLDJCLGM7Ozs7SztLOztHO0c7O0k7O0ssRyxvQixNOzs7Ozs7NkIsTzs7Ozs2QixPOzs7O2lDLGtCLGU7UyxPOzs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7Ozs7bUIsTztLLHNDOzs7OzRCOzs4Qjs7Ozs7O3FCLFk7SSwrQjtHOztJO0k7Ozs7Ozs7O0s7TTtNOzs7Ozs7Ozs7O1EsTTs7Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFc7OztLLDhCLE87Ozs7OztNO08sUTtPLE07TyxNO087Ozs7Tzs7O1EsTztRLE87USxPO087USxXO1E7UyxXO1M7VSxXO1U7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0k7Rzs7SSxrQixPOztJLEksa0I7Ozs7Ozs7OztPO087TyxNOzs7OztHOztJO3VDO0c7O0ksMkI7O0s7O0k7SSxVO0k7STtHOztJO0k7Szs7SztJO0s7OztLOztRLFc7UTtPO0s7STtJOzs7Szs2Qjs7OztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7USxTO1E7O2U7O1E7Ozs7O1MsRzs7OzttQjs7Ozs7OztPOztROzs7OztrQjs7OztPO087UTswQyxtQztvQyx1Qjs7O1k7WTs7Ozs7OztZO1c7Uyx1Qiw0QjtTO3VCLGtCLG1DO21DLGtDO2lDLHdCOzs7WTtZO1c7OztZOztlOztlO3VCOztXOzs7WTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7dUI7O1c7OztZO2Esa0I7YTs7WTtZO1c7OztZO2E7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7Ozs7OztlOzs7Ozs7Ozs7ZTs7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O1c7OztZLDRCOzs7YTs7O1k7Vzs7O1k7Ozs7O1k7Vzs7O1k7YTs7OztlOzs7ZTs7Ozs7O2U7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7OztlOzs7ZTs7Ozs7O2U7Ozs7OztlOzs7Ozs7OztlOzs7Ozs7Ozs7ZTs7OztlOzs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7OztlOzs7Ozs7OztlOzs7Ozs7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOztlLE07O1c7OztXOztTOzs7Ozs7O1EsTTs7O087Tzs7Ozs7Ozs7OztVOztXOzs7Ozs7OzBCOzs7Ozs7Ozs7Tzs7O1E7OztpQjtROzs7OztROzBCO087Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7UTs7O1MsVztROzs7Ozs7Ozs7O08sSztRLE07Tzs7USxPO1EsTzttQjtRLE87USxPO1EsTztRO3FCO1EsTztRLE87USxhO1E7USxPO1EsTztRLFM7USxPO1EsTTtRO2M7USxPO1EsZTtRO1U7USxXO087Ozs7Ozs7Ozs7TztRLE07Tzs7O1c7OEI7Vzs7WTtZOztXLFM7Vzs7Vzs7WTthLFM7YSxHLHlDOzs7O2M7ZSxXO2U7Ozs7O2dCLE07Ozs7YztlOzs7OzthOzs7VztXO1U7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7VztXO1k7Ozs7Ozs7Ozs7Ozs7OztVO1c7WTs7Ozs7Ozs7OztPO087UTs7O1k7WSxPO1c7VyxPO1U7UTtROzs7Vzs7Ozs7WSxXO1k7Ozs7O2U7Z0IsSztnQixLOzs7d0I7ZTt1QjtlOzs7Ozs7b0I7Z0Isb0M7Ozs7Ozs7Ozs7O2dCO2dCLEc7aUIsZ0M7Z0I7ZTtZOzs7Ozs0Qjs7Ozs7VztZOztnQjs7Ozs7WTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXLGU7VyxNOzs7UTtPOzs7UTtTOzs7Uzs7Uzs2QixXLHlCO1UsUztVLE87VSxPOztVO2tDLHlDO1csTztVO1c7K0IsdUI7WSxPO1c7WTthLHNCO2EsTzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7O1E7OztVLHVCO1U7O1ksVztZO1ksSTs7Ozs7Ozs7OztVO1c7WSxPO1ksVzs7O1k7Vzs7Ozs7O1E7O1MsWTs7Ozs7Ozs7Ozs7OztVO1c7WSxXO1ksVzs7Ozs7Ozs7Ozs7Ozs7VztXLFM7OztZOzs7Ozs7OztzQzs7VztXO1ksUztZLFc7Ozs7Ozs7OztZOzthLG1CO2M7Ozs7a0I7a0I7Ozs7aUI7Ozs7OztpQjtnQjs7WTtXOztZOzs7WTs7cUI7cUIsd0I7b0I7Vzs7OzthLE07Ozs7Ozs7aUIsMEI7Ozs7Ozs7a0I7a0IsTyx3QjtpQjtjLEs7Ozs7bUI7a0I7ZSxHOzs7Ozs7OzthLE07Ozs7Ozs7OztZLGU7Ozs7Ozs7O2EsYTs7OzRCO2E7YyxnQjtjOzs7Ozs7Ozs7YyxlO2M7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztRO1M7Vzs7OztTLE87OztZO3dCOztZLGtCO1c7UyxTO1M7UyxZOzs7O087Tyx1QixPO087TztPLEkscUI7Ozs7Ozs7a0MseUM7VSxPOzs7Ozs7O087TztPO08seUI7TztPO1E7Ozs7O1E7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087K0IsTywyQjtRLFc7USxXO087O1U7dUM7UztPOzs2QixnRDtRLE87UTsyQixZO1EsVztPO3VDOzs7Tzs7O087OztRLGU7TztRLGM7OztTLGM7Ozs7OztZOzthLFE7YSxTO2EsTzthLFc7YSxPO2EsVzs7Ozs7Ozs7O2U7O2dCO2dCOzs7Ozs7Ozs7ZTs7OztZLE07Ozs7OztRLE07Ozs7O1E7O1Msc0I7UyxROzhCLGM7UyxXO1M7Uzs7OzthOzs7OztROzs7OztrQjs7Ozs7O087USxNOzs7MkI7UTs7UztTOzs7Ozs7Tzs7O1c7WTthOzs7O29COzthO1k7Ozs7bUM7OztVO1E7Ozs7Ozs7OztpQztRO1Msd0I7O1UscUIsTztVO1U7VyxPO1csTztVO1U7Ozs7Ozs7OztPOzsyQixTOzs7VyxPO1U7UTs7UTs7Ozs7YTs7Ozs7Ozs7Ozs7O087O1UsVztVOzZCO1M7O087Ozs7OztVLE07Ozs7O087YztROzs7WTs7VztXLE87VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTthOztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7Ozs7WSxJOzs7OzthO3FDLG9CLGM7YztnQjthO2M7O2tDLFk7ZSxjOzs7OztlLE07OzthO2M7Ozs7Z0M7O2tCLEs7bUI7a0IsSTs7O2M7YSxNOzs7O1k7VztTLHNCOzs7O1EsTTs7Ozs7OzthOztnQjtPO21COzs7b0MsdUI7UTtVO1E7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztRLFc7OztPO087OztPOzs7O1E7Ozs7UTtrQztROzs7Ozs7Tzs7USxNOzs7Tzs7Ozs7aUI7Ozs7Tzs7USxPO1EsYTtPOztVO3lDO1M7Tzs7eUIsa0Q7USxPO1E7Tzs7Ozs7aUI7Ozs7Tzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087Tzs7Tzs7O1E7UTtPOztPOzs7UTtRO1E7Tzs7Ozs7aUI7Ozs7Tzs7Ozs7O1E7UTs7O2tDOzs7UyxNO1E7O1MsTztTLE87UyxXO1MsdUIsZTs7Ozs7OztPLEksbUQ7Tzs7Ozs7aUI7Ozs7O087TyxJLE0sc0M7TztPO087USxPO1E7O3FDO087Ozs7Ozs7Ozs7OztRO1E7UyxXOzs7O1MsVzs7OztRO1MsYztTO1M7Uzs7Ozs7O1MsTTs7O1E7UTtRO1E7UztTLE87Ozs7OztzQzs7O1E7UyxXOzs7O1E7UTtRO1E7UyxLO1M7UTtROzs7UyxPOzs7Ozs7Ozs7Ozs7OztZLEs7O1k7Ozs7OztTO2lCO29CO1U7VztZLE87bUI7VztZO1k7WSxJOzs7Ozs7WTs7Ozs7VTtXLGM7VztXOztvQjs7Ozs7Ozs7VyxNOzs7O1M7VSxXOzs7UztTLEk7Ozs7O1U7O1csVztVLE07Ozs7Ozs7Tzs7Ozs7Ozs7OzswQjtPLEksMkI7Tzs7Ozs7Ozs7Ozs7YztlLFc7OztlLE87YyxHO2U7Ozs7O2MsSSxnQjs7Ozs7ZTtzQztnQixrQjtlLE07OztjO2UsVztlLFc7ZSxXO2UsVzs7Ozs7Ozs7O2U7O2tCO2dCLGM7Z0IsVzs7O2U7ZSxXO2U7ZTtnQjtnQixVO2dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Z0I7Ozs7O1M7Uzs7USxJLFE7Ozs7O1k7YSxRO2EsTzthLE87WTs7Ozs7O2E7OztjOztzQjt3Qjs7O3dCOzs7OztTOztTOztRLE07Ozs7Ozs7Ozs7OzZDLHFCOzhCOztTLGU7Ozs7Vzs7dUI7WTs7O2U7OztrQjs7Ozs7OztRLE07Ozs7Tzs7USxXOzs7UTs7USxNOztPLHlCO087Ozs7O2lCOzs7O087OztRLFc7Ozs7O087USxNOztPO1E7O3NDO1EsVztvQjtRO087Ozs7O2lCOzs7Ozs7Ozs7Vzs0QixPLGdDO1csRztZLE07O1c7VTtPO087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7WTthO2MsUTs7O2M7Ozs7OzJDO2E7Ozs7OzthO2M7O2dELHNCO2MsUzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxRO087TztRLFU7USxPO087Tzs7USxRO1EsTztRLE87UTs7O1E7O1MsVzs7Ozs7OztPO087O087TztPOzs7Ozs7Ozs7Tzs7O1EsVzs7O1E7Tzs7Tzs7UTtROzs7Ozs7d0I7Ozt1Qjs7Tzs7Tzs7USxRO1EsYTtPOztVO3lDO1M7TyxJLG9EO087Ozs7O2lCOzs7OzswQjs7UTs7UyxRO1MsUTtTOztpQjs7UTtTLFE7Ozs7UTtROzs7UTs7VyxXO1c7OEI7VTtPLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7Ozs7WTsrQjtZO2EsVzs7OzthO2E7O1k7WTtZOztZOzs7YSxPOzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7OztPOztPOzs7UTtVO2E7YTtPO087USxTO1EsVTtRLFc7OztRO1EsTzs7O1csRywyQztXOzs7Ozs7NkIsTzs7O1csTztVO1EsTTtPO087Tzs7Ozs7Ozs7O087O1EsTzttQjs7OztXLE07O1cseUM7Ozs7b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsTztRLFc7OztRO087Tzs7Ozs7OzswQjtPOztROzs7USxVO1EsVzs7Ozs7Tzs7UTs7O1MsUTs7UztTO1c7Ozs7O1MsUzs7Ozs7TztRLGlCO1EsVTtRLFk7USxjO1E7Ozs7Vzs7USxRO08sSTs7Ozs7USxNOzs7O1E7UTtRO1E7UTs7Tzs7OztXO1k7Ozs7Ozs7Ozs4QjtXO1k7OztZLFU7WSxTO1ksVTtZLFk7WSxjO1ksUTtXLEk7Ozs7O1ksTTs7OztZO1k7WTtZOztXO1k7OztZO1c7WTthLE87YSxPO1k7Ozs7Ozs7WSxNOzs7VztXO1U7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7Ozs7Ozs7OztROztTO1M7UztTO1MsTztROztPLE07Ozs7OztRLE07bUM7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7Rzs7STtJO0ssUTs7O0ssVTs7OztzQzs7Ozs7SSxXOzs7Ozs7Ozs7Ozs7O0ssTTs7STtHOztJOztLLE07Szs7O0s7Ozs7OztzQjs7O1M7O1UsVzttQjs7Ozs7O0k7Rzs7O0k7Ozs7OztLO00sVzs7O2tEO0ksYTtJO0s7TSxPO00sUTs7Ozs7SyxJLEs7O00sTTs7SyxNOzs7Ozs7Ozs7SSxHO0ssUztLLEksNEI7Ozs7O08sTTs7Ozs7OztJO0s7SztLOztJO0s7Ozs7Ozs7Ozs7OztLLE87STtLO007OztNLHNCO00sTztNOzs7O0k7Z0I7Szs7STtLO0ssTztJOzs7OztjOzs7Rzs7SSxtQjtJOztLO0s7OztJO0s7TTs7OzthOztNOzs7Ozs7OztJO0ssUzs7OztLOzs7Ozs7Ozs7STtHOzs7STtrRDtJLGEsMEI7STtLLFE7Ozs7STtLO0s7Szs7STtLO00sTztNLE87Szs7Ozs7O0ssTTs7O0ksZTtJLGEsMEI7OztNLE07O0ssTTs7O0k7aUM7Szs7b0M7STtJOzs7O00seUI7TTs7TTs7O08sTzs7Ozs7OztLO0s7TTtNO007TTtNO007TTs7O08sTztPO00sc0I7TTtNOztNOzs7TyxPO087Ozs7Ozs7O1EsTTs7TSxNOzs7STs7Ozs7SztNOzs7TTtnQjs7SyxvQjtLLE87STtJOzs7O1M7VSxROzs7Ozs7VTs7UztRO0ssRztNO08sTztPO08sMkIsTyw0QjtjOzs7Ozs7O0k7Szs7O0s7Szs7O3VCO0k7O0s7Szs7Ozs7Ozs7Ozs7O087USxjOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztZOzs7OztLOzs7O3NCO0s7OztTO1UsSztVLE87VSxPO1U7VSxVOztVOzswQjs7Ozs7OztTOzswQjs7Ozs7OztRO007Ozs7d0Isa0IsTyw0QjtNLFk7SztjO0s7TTs7Ozs7Ozs7Ozs7TTs7OztVOzs7Ozs7TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07Rzs7STs7O0k7SztNOzs7O2E7O007Ozs7Ozs7O0k7SyxVOzs7OztLOzs7Ozs7Ozs7STs7Ozs7OztPLHVCOzs7Ozs7Ozs7OztJO087SyxXO0ssTTs7O2tEO0ksYSwwQjtJO0ssVTs7O0s7STtLO0s7Szs7O1E7UyxPOzs7UyxPO1E7O087SztLO0s7O0ksYzs7SyxNO0k7OztLOztLLHVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0ksVzs7SztLO0k7SSxXOztLOzs7Ozs7Ozs7SyxNOztJLE07Rzs7STtJO0k7STtLLEs7SyxLO0ssTztLOzs7OztNLGlCOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7SyxrQjtLOzt1QiwwQztLOztJO0k7STtHOztJLEksSyw2Qjs7SztLO0s7TSxVO00sTztNLE87TSxPO00sTztLO0s7O00sUTtNO00sUTs7O0s7SztJO0k7SyxROzs7SztLO0s7SyxPO0sscUI7O0s7SztLO0s7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7STt5QixrQixTO0k7SyxXO0s7TztJO0s7OztTO1UsTztVLE87UyxXOzs7VSxvQixRO2lCOzs7OztlLGtCLFE7O2dCLE07ZTtjO1c7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7O087Ozs7Ozs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O0ksa0I7SSx3QjtJO0ssTTtLO0k7STs7Szt3QjtLO0ssa0I7SztLO0s7SztNO007TSxNO00sVTtNLFE7OzBCOztNO007TTs7O08sTzs7Ozs7SztLO007TTs7O1U7d0Y7VTtTO0s7Ozs7Ozs7YTtJO0ksdUI7eUIsMEIsaUI7SSxXO3lCLDhCLHFCO0k7eUI7Ozs7TTtPLGtCOztrQjs7O0s7TSw4QixXOzs7O0ksZTs7O007TTtLO0ssTztJO0k7SSxHO0s7TSxzQjtNLE87SztLOzs7cUIsTyxpQjtJOztLLFc7O0s7SyxPOzs7aUIsVztpQixPO2dCOztJO0k7STtJOztLO0ssTztJO0k7STs7YTs7Szs7Ozs7Ozs7O007d0I7TSx1QixlO007OzBCLGU7O00scUMsTztNLHNCO0s7SyxnQjs7TTtNLFM7TTtNOzs7O21DO0s7Ozs7Ozs7O0s7TTs7Ozs7Ozs7O00sTztLO0k7STtLLFE7SztLOztLO00sVzt5QixzQztLOztJO0k7SztNLE87cUI7Ozs7SztNOztTLFk7O1M7Ozs7Uzs7Ozs7VSxROzs7VSxNO1MsbUI7UztRO00sTzs7Ozs7Ozs7YSxNOzs7Ozs7OztNOzs7TztPOzs7Vzs7WTs7OzthLFE7YTs7O2dCOzs7aUIsTztpQixvQjs7ZTs7aUI7YTs7ZTtvQjs7OzJDOzs7YTtjOzs7aUI7Ozs7O2MsTzs7O2MsTzthOzs7Ozs7WTs7VztVO00sTyxXO0s7SztpQiwwQjtLO0s7aUI7SztLLE87STtJO0ssa0MsdUI7O0s7O0s7SyxXO0ssMEI7O0k7Rzs7O0k7Ozs2QixlO0k7OztvQyxlO0k7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7O007Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7O0s7STtJLFk7eUIsTyw0QjtJLG1CO0k7SSxJOzs7O007O0s7SyxPOztJO0ssVztLLE07SyxPOztLLHFDLE87SyxzQjtJO0k7SyxVO0s7SyxRO3dCO0k7SyxhOztJOzs7O1M7Ozs7Vzs7Ozs7WSxPOzs7Ozs7UztRO0s7OztLO0s7Z0I7Ozs7STtJOztLO0s7Ozs7UztTOzs7VSxPO1M7UTttQjs7OztxQixPLGlCO0k7STtLLHFCO2lFO0s7O0k7O1k7O00sTTs7Ozs7UyxzQixPO1MsTzs7bUI7UTtnQjs7OztJLEksdUI7OztNO08sTztPLE87TTs7O087USxPO1EsTztPOzs7Ozs7O007SztLLE87STtJOztPOzs7TSxpQztNO087TztPLE87O087USxLO1EsTztRO1EsTztPOzs7O3VCO2dDOztROztXOztXOztZLE87VyxPO1U7O1E7Ozs7Ozs7USxXO1E7Ozs7TztPLE87TTtNO007SztLLE87STtJO3FCOztLOzs7OztLOzs7O3lCO007TyxVOzs7O087Tzs7TTs7O1U7OztTO08sUTtNOzs7TTs7O0s7SyxVO0s7STtJOztPOzs7O0s7TSxROzs7TSx1QixPLHlDO0s7OztLO0s7STtJLFc7O0s7O007TTtNO0s7SyxPO0k7STs7Szs7OztNLE87SztJO0ksWTtJOztLLG9CO0s7STtJO0k7O0s7Szs7Syx5QjtLOztJO0k7SSxROztLO0s7STtJLFU7STs7OztTLG9COzs7O2E7O2dEOztTLE07UTtLOzs7SztxQzs7O007b0Q7TTtLO0ssZTs7STtJO0k7Rzs7STtJOzs7Syx1QixlO0s7O3lCLGU7Ozs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtJO0k7STtJLHlCO0k7OztLOztNO2E7Szs7STtHOzs7SyxPO0k7SSxPO0c7OztJO0ssa0I7O0s7STtJLE87Rzs7STs7Ozs7Ozs7NkM7Ozs7OzBCOzs7OzswQjs7Ozs7MEI7Ozs7TTs7Uzs7WTs7O2M7OztnQjs7O08sVzs7TTs7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJOztLOzs7Ozs7OztJO0ksTztHOzt5QiwyQjtJLE87Rzs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7O087OztROzs7Ozs7Ozs7Ozs7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Ozs7Ozs7VyxXO1c7VyxXO1csdUI7VTtPLE87O087Ozs7UTs7Ozs7Ozs7Ozs7Ozs7TztRO3dCLE8sMEM7O3dCLE8sMEM7Tzs7Ozs7OztrQjs7Ozs7TyxvQixPOztRLE87Ozs7Ozs7O08sTzs7Ozs7Ozs7O087Ozs7UTs7VztZLE87VyxXO1csTzs7UTsyQjtPLE87Ozs7Ozs7Ozs7O08sTzs7Tzs7UTs7O1ksVztZLE87VztXLE87VTtPLE87Ozs7TyxPOzs7Ozs7Ozs7Ozs7OztZO1ksRzthOzs7Ozs7OzthOzs7YyxPO2M7O2lCOzthOzs7Ozs7Ozs7Ozs7O1k7VztXLE87VTtPLE87O087Ozs7O1EsWTtRLFM7UTs7OztZLE87O1c7O1ksTzs7Ozs7Ozs7Vzs7WSxPOzs7Ozs7OztXO1csTzs7VTtPLE87OztPLE87Ozs7Ozs7Ozs7WTtnQzs7WTtXO1csTztVO08sTzs7Ozs7Ozs7VztXO1U7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7OztXO1c7VTtPLE87OztPLE87Ozs7Ozs7O1csTzs7Ozs7OztVO08sTzs7O08sTzs7Ozs7Ozs7Ozs7WSxPO1c7O1k7YSxROzs7YSxPO1ksTztXO1c7O3FCOzs7Ozs7OztVO08sTzs7O087UTs7O1k7O1EsTzs7O087OztXOztPLE87Ozs7Ozs7UTtTLE87Z0I7Tzs7O1c7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7O08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O087Ozs7Ozs7Ozs7Ozs7OztPO1E7OztZLE87eUI7VztTLFU7Ozs7O1MsTzs7OztPLE87OztPLE87Ozs7Ozs7Ozs7O08sTzs7O08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7USxPO1EsTztPLE87Ozs7Ozs7Ozs7OztJOztLOzttQzs7STtHO0c7Ozs7STtHOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPOztJLG9COztJO0k7Ozs7Ozs7Uzs7Ozs7OztTOzs7O0s7Z0Msa0IsTyxvQjtLOztNO00sTztLO0ssTztHOztJO0ssTztjO0s7O0s7SyxPOztlO0k7SSxPO0c7O0k7STs7Ozs7UTs7UTs7OztTO1EsTzs7Rzs7STtJOzs7UTs7UTs7O0c7O0k7SyxPO0s7SyxPO2M7Szs7SztLLE87STtJO0ssTzs7O29DLHNCO0ksVztHOztJLGlCOztJO0c7Ozs7OztROzs7UyxPO1E7Ozs7O1E7Ozs7O1k7WSxPO1c7UTs7Ozs7WSxtQixPO1ksTztXO1EsTzs7O1E7Ozs7cUIsc0MsWTs7STs7OztLLFk7SyxZO0ssTztLLDZCO0ssUTs7O0s7STtHOztJOztLO00sUTs7Ozs7O00sTTs7SztNLE87TSxPO0s7Ozs7Ozs7Ozs7O00sTTs7Ozs7Ozs7Ozs7Ozs7O0s7STtHOzs7STtJOztLLE07O0ksSTs7Ozs7Ozs7Ozs7USxNOzs7OztLLE07O0k7SyxhO0s7OztLO0ssc0I7STtJO0ssYTtLLFk7Ozs7O2tDOzs7YTtPLDBCO087O2E7TywwQjtPOzs7O0s7TztVO00sTTs7STtLLGdCO0ssYztJO0c7Rzs7STtLLE07SztLLFE7SztJLEk7Ozs7O0ssTTs7O0k7Rzs7cUIsTyxrQztJO0ssWTtLO0ssTztLLE87SSxPO0c7OztJO0s7ZTtNOzs7Ozs7OztJLE87Ozs7O007SztLOzs7UTs7O1MsVTs7O1EsRztTLE07O1E7UyxVOzs7UyxPO1c7UztVLE87VSxPO1MsTTs7O1E7OztZLEksTSwwQztZLEksMEM7Ozs7OzthLE07OztXO1MsTztTO1E7O1E7Ozs7UztTLFc7Ozs7UyxPO1M7UztTLFk7UyxPO1MsTztRO1EsSTs7OztVLE07Ozs7UTs7O1k7WTs7Yzs7Ozs7ZTttQyw4QjtjOzs7aUI7O2tCO2tCOzs7Ozs7OztpQjtrQjs7Ozs7Ozs7Ozs7a0I7b0I7aUI7Ozs7OztpQjs7Ozs7O2tCLFE7a0I7a0I7aUI7Ozs7OztpQjs7Ozs7Ozs7b0I7Ozs7O3FCLEksMEM7Ozs7OztzQixNOzs7O29CO2tCLE07a0I7Ozs7OzttQjs7b0IsTTtvQjtvQjs7O3VCO3dCLE07d0I7dUI7Ozs7c0I7O3dCOzs7O2tCO21CLE07bUI7a0I7OztpQjs7O3VCOztpQjs7Ozs7O2lCOzs7O2tCOzs7aUI7Ozs7Ozs7aUI7aUI7Ozs7Ozs7aUIsTTs0Qzs7O2E7YSxPOztZLE87VztTLFE7Ozs7O1M7Uyx3QjtTO1E7O1E7Ozs7UyxRO1M7UztXO2M7O1M7UztROzs7USxNO21DOztROzs7UyxVOzs7UztROztJO0ksTztHOztJO0k7SztLLE87Ozs7Ozs7STs7STtHOzs7STs7Ozs7Ozs7Szt3Qiw2QjtJO0s7OztLOzs7Tzs7OztRO1E7Ozs7O087UTs7Ozs7Ozs7Ozs7O1E7Ozs7Vzs7O1k7OztZOzs7OztXO1U7USxVOzs7Ozs7O1csb0I7VTtRLFk7O1E7OztTOzs7OzhCLGU7Ozs7Ozs7Ozs7OztPOzs7OztrQjs7Ozs7Ozs7Ozs7OzJCO1E7UyxRO1M7O1M7Uzs7UTtTOzs7O1E7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7O08sRztRLE07Ozs7Ozs7TyxHO3dCOzs7USxNOzs7Ozs7OzBCO08sVTs7UTtROztPO1E7Ozs7USxPO1EsTztPOzs7OztrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztjO1MsTTtTLE07UztRLEk7Ozs7O1MsTTs7O1E7Ozs7aUM7Ozs7Ozs7O08sMkM7Ozs7cUI7O08sRztRLE07O08sRzt3Qjs7O1EsTTs7OztVOzs7Ozs7UztVOztXLFE7VyxRO1c7VTs7UyxjOzs7OzthO2MsTztjLE87YTthLFc7YTs7O2E7OztzQjtjLE07YTs7Ozs7O1MsTTs7USxNOzs7Ozs7USxNOzs7O087UTtROzs7VztpQjtZLE87WSxZO1c7O1c7bUI7VztXO1U7USxRO1EsTztPOzs7ZTs7Ozs7O087Ozs7UTs7O087OztxQzs7Ozs7Ozs7Tzs7UTtRO1E7OztZO1k7YSx5QjthLE87YSxZOztZO29CO1k7WTs7Tzs7Ozs7Ozs7OztPO087O3dDOzs7Ozs7OztPLE07a0M7Ozs7STs7O0s7SztLLE87SyxZOztLO00sTztNLE87Szs7STs4QjtLO087Ozs7Ozs7O0s7STtLLEksTyxrQzs7O0ksSTs7OztNLE07Ozs7O0s7TSxPO00sTztLLE87STtJO0s7TTs7O1M7Ozs7VSxVO1M7VTtXLE87VyxPO1U7OztVLE07O1E7Szs7STs7Szs7Ozs7Ozs7OztLOztPOztNO00sTzs7SyxPO0k7STtLLFU7Ozs7SyxPO0k7OztLO0s7STtJO0s7OztROzs7Szs7SztrQjtJO0ksaUI7O0s7SyxPOztnQjtJO0k7O1k7TSxNOztLO007TTs7OztTO1M7UTtNLE87Ozs7TSxNOztLO00sTzs7O1M7Ozs7VSxnQjtTLE87UTtNLGU7SztNLFc7TTtNOzs7Ozs7TSxNOzs7Ozs7SztLLE87STtJOztLO0ssZTtJO2U7O0ssa0IsTztLLE87STtJO0ksVzs7Ozs7OztJLEksVyx5Qzt5QixtQixVO0k7SyxVO0s7O0s7a0I7STtJLGdCO0kscUIsa0IsUztJO0ssUTtLLEs7SyxLO3FCLE8sbUM7SSxZO29COzs7Ozs7Ozs7WTtJOzs7O0s7STtJLE87Rzs7STs7O087OztRLFU7OztPLEc7USxNOztPOzZCLE8seUM7USxNO1EsVTs7O1E7USxPO1U7UTtTLE87UyxPO1EsTTs7Ozs7O1c7VztZLFc7WTs7Ozs7O1ksTTs7O1U7TztPO1E7UTs7OztPOzs7Ozs7OztPOztROzs7Tzs7OztROzs7O1M7UyxPO1MsTztvQjtTLE87UyxPO1MsTztTLGtCO1MsTztTLE87UyxhO1MsTztTLE87UyxTO1M7ZTtTLE87UyxPO1MsTztTO1c7UTs7OzBCO087USxVOzs7Ozs7UTtROzs7O1ksTzs7UTs7Tzs7O1c7OztZO1ksSztZLE87O1ksVztXOzs7OEI7Ozs7OztVO1EsTztRLE87USxRO1E7VTs7Ozs7OztPO087TztPLFc7Tzs7Ozs7O1U7Ozs7Ozs7Ozs7Ozs7O08sUztPOzs7USxjO087Ozs7Ozs7OztPO1EsTTswQjtPOztROztROzs7Ozs7O1E7OztTLEc7OztVLEk7O1E7UyxPO1MsTzs7UztpQyx5QztVLE87UztVOzhCLHVCO1csTztVO1c7WSxzQjtZLE87WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7O1U7O1csbUI7WTthLE87YSxNO2EsTTtvQjs7O3NCOztVO1M7O1UsVztTOzs7O1csTTs7Ozs7OztlLHdCOzs7Ozs7O2dCO2dCLE8sMEI7ZTtZLEs7Ozs7O1csTTs7Ozs7O1UsYzs7Vzs7Ozs7WTswQjtXO1ksZ0I7WTs7Ozs7Ozs7O1k7YztpQjs7Ozs7Ozs7O1M7O1U7Ozs7Ozs7Ozs7UTs7O1k7WTtXO1MsUTtTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVzs7O1E7USxPOzs7Vzs7OztZO1ksSztXO1c7WSxPOztZLFc7WTs7eUI7Ozs7OztXO1c7VztZO1ksTztZLE87Vzs7bUI7VTtRLFc7OztROzBCO087Ozs7Ozs7OztPO087USxVO1E7TztPO1EsWTtRO087TztPLG9CLE87TyxtQjtPLHNCLE87TyxtQjtPLFk7O1EsTTs7TztROzs7O1E7USxPO087Ozs7Ozs7OztPLE07a0M7O087OztRO1E7VTs7OztVO1E7Tzs7RztHO0ksTTtJLGE7O0k7STs7OztROzs7UztXO2M7YztTO1EsTzs7Ozs7Z0IsTzs7O0c7O0k7dUIsTztJOzs7SztPO1U7VTtLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7Ozs7Ozs7O0k7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTztNLE87TSxPO00sTztNLE87TSxPO0s7O2E7Ozs7O0k7SSxZO0k7STtJO0s7Ozs7Ozs7OztNLFE7TTs7OztNOzs7O00sYzt3QjtLOzs7TSxvQjtNOzs7O007O007dUI7TTtROzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7OztJO0ssUTs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPOztJO0ssVTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7OztLLEk7Ozs7O00sTTs7O0s7TSxZO00sTztNLE87Z0I7O007OztPLE87TSxXO00sWTtvQzs7TSxPO0s7SztLOztLO0s7SztLO0s7SztLOztNLE87TSxPOzs7Ozs7Ozs7UTs7Ozs7OztZOzs7YSxPO1k7Ozs7OztPLHFCLE87Tzs7Ozs7O1k7O2EsTzthOztXO2dCOzs7Ozs7TTs7TyxPO2M7Ozs7O00sTTs7SztNLE87TSxROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztNOzt5QixPLHdDO3lCLE8sMkM7SyxNOzs7STtLLFE7SyxRO0ksSSxjOzs7Ozs7SyxNOztJLFk7STs7Ozs7Ozs7Ozs7TTtPLE87Yzs7O0s7TSxPO00sTztNLE87TSxPO00sTztLLE87O0ksWTtJOzs7Ozs7Ozs7Ozs7Ozs7OztNLGtCOztPOzs7USxVOzs7USxVOzs7USxPO087TyxJOzs7OztRLE07OztjO1EsTTs7OztNLE07O0s7Ozs7Ozs7Ozs7Ozs7O0ksWTtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztJO0k7OztLLEksZSx1Qzs7OztPLE07Ozs7SSxnQjt5QixvQixjO0k7SyxTO0s7STs7SztNLFE7TSxPOzs7Ozs7SyxNOzs7STtJO0ssTTtLLE87Yzs7Szs7O00sTztLLGM7STtJO0ksSSxLLDRCLE87STtJO0k7SyxROzs7SyxTO0ssSztJO1c7SyxNO0k7SyxXO0s7Ozs7O0s7OzZCO0ssTTs7SSxJOzs7O0ssMkI7SyxNOztJO0ssVTs7O0ssTztJO0ksVztJO0k7SyxXO0s7Ozs7O0s7TSxPO00sbUI7SyxNOztJLEk7Ozs7SyxlO0ssTTs7O0k7SztNLE87TTtLOzs7Ozs7SyxNOzs7STtLLE87SyxlO0s7OztLOzs7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTs7SztNLE87TTtNOzs7O1M7UztRO00sTzs7OztNLE07OztJO0ssUTtLLE87SyxPO2dCO3lCLG9CLFc7STtLLFk7SyxVOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJLFc7STtJO0ssVTtLOzs7SyxPO0s7Ozs7Ozs7UTs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7OztjOzs7Ozs7STtJOztrQjtJO0c7O0k7STtHOztJO0s7OztzQiw2QjtJO0ssTztLLFU7OztJO0k7Rzs7STtHOztJO0s7Ozs7Szs7Ozs7Ozs7O0k7SSxXO0c7O0k7O0s7MEI7O0s7Ozs7O1M7VTtXLE87a0I7VyxPO1csTztVOzs7O2lDO1UsTTs7OzRCOzs7Ozs7Ozs7O0k7SSxPO0c7O0k7STtLOztTOzs7SyxNO0k7STtLLE87Yzt5QixrQixTO0ksWTtJO0k7Rzs7O0k7SyxPO0ssTztLLE87STtHOztJO21COztHOzt5QiwwQjtJLE87Rzs7STtLLE87Ozs7Tzs7NkIsTyx5Qzs2QixPLHlDO087TyxPOztPOzs7O1EscUIsTyx5Qzs7O1csTztVO08sTzs7O08sTzs7TyxPOzs7Ozs7UTtTLE87Z0I7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7TyxPOzs7TztPO1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7USxxQixPLHlDOzt3QixPLDRDO08sTzs7Tzs7Ozs7UTs7O1ksTztXO1csTztVO1E7Ozs7OztXO3FCOzt1Qjt1QjtVO1EsTztPLE87Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7TztPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7NkIsTzs7O08sTzs7Tzs7O1E7O1csdUI7VztXO1ksTzs7WSxPO1csTzs7Ozs7Ozs7OztVO1E7O1c7Ozs7OztZOzs7Ozs7O1c7OztPO08sTzs7O087OztRLE87TyxPOzs7TyxPOztPOzs7Ozs7VztZLE87Vzs7WSxPO1c7VyxPO1U7USxPO08sTzs7Tzs7UTt3QixPLDBDOzt3QixPLDBDO08sTzs7Ozs7OztPLE87Ozs7USxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O0k7Szs7OztNLDRCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087O087O087O087ZTs7RztHO0k7STs7STs7d0Isc0I7O2lDO2UsTTs7Rzs7SSxZOzs7MEI7OztPLE07ZSxNOztHOztJLFk7OzswQjs7O08sTTs7TyxNOztHOztJO0ssTztLO087NkM7SSxTO0k7SSxNO0c7OztJOztLO00sUztNLE87SztLLFU7SztJO0k7O00sVztNLE87SztLLE87STtJO0ssTztLLFE7OztLOzs7TyxLO1E7Uzs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7SSxPOztHOzs7SztJO0k7SyxROzs7SztJO0c7Rzs7OztRLE07Tzs7d0I7SSxpQjs7Szs7O00sTzs7TSxXO00sTztLO0ssTztJO0ksTztHOztJLFk7STs7O2M7OztJO0ssTztJO0ksWTtJO0ksTztHOztJO0k7OztROzs7OztRO1E7USxPOztHOztJO0ssUTtLLFU7Ozs7Szs7Ozs7OztNLE87SyxXOztLOzs7bUI7TTs7O08sTztNLFc7Ozs7STtHOztJO0s7Szs7Ozs7OztLLGlCLE87Syx1QztLOztNOzs7Ozs7Ozs7Ozs7Ozs7VSxPOzs7O0s7OztJOzs7Ozs7Ozs7OztJOzs7O2M7Ozs7Ozs7Ozs7Ozs7aUIsTzs7Yzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7OzRCLFM7STs7Ozs7Ozs7Ozs7Ozs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXO1k7O2E7Ozs7O1k7Ozs7OztZOzs7YTs7Ozs7WSxNOzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7OztJO0k7bUI7Szs7O00sTzs7TSxXO00sUzs7OztLOztHOztJOzs7Ozs7O0ksSSxtQjtJO0s7TSxPOzs7O2tCOzs7O08sRyxrQjtROztNOztPOzs7O0k7OztNO007SztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0Isa0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjOzs7Ozs7O2lCOzs7Ozs7OztpQjs7OztrQixPO2tCLE87a0IsTztpQixPO2dCO2MsTztjOzs7O3FDLE8sMkI7Yzs7aUI7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjO2dCOzs7Ozs7OztjO2M7Ozs7YTs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7O2M7YztnQjs7OzthOzs7Ozs7Ozs7OztTLEcsa0I7VTtXO2E7O1c7O1c7Ozs7VyxXO1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHLGtCO2M7O2UsUTtlO2UsVTtjO2M7Ozs7Ozs7O2EsRyxrQjtjLG9CO2M7OztjOzs7OztTLEcsa0I7VTtXO1c7Ozs7O1c7Ozs7OztXO1k7OztVOzs7Ozs7Ozs7Ozs7O1UsRyxrQjs7OztZOzs7VztZO2EsTzthLE87YTtZOzs7OztXOzs7O1c7Ozs7OztLO0k7O0ssYztLO007O0ssWTs7TSxNOzs7SztJO0k7SztNLFE7TTs7O0s7Ozs7O087UTs7O1EsVTs7USxNO087OztROztRLE07Ozs7O1k7Ozs7dUI7c0I7c0IsVzs7O3VCO3dCOzs7Ozs7Ozs7O3lCLGM7eUIsVTt5QixROzs7OzBCOzsyQjs2Qjs7OzsyQixNOzs7Ozs7Ozs7Ozs7d0IsTTs7Ozs7c0I7cUI7Vzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7OztrQjtpQjtjLEc7ZTtnQjs7Ozs7Ozs7OztlLE07Ozs7WSxPO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPO1E7O1Msb0Isb0I7Ozs7O087TyxXOzs7Ozs7O1E7UyxNOzs7Ozs7OztXOzs7WSxPO2M7Vzs7Ozs7Z0Isa0I7Ozs7OztrQixHLDJCOzs7OztnQixNO2U7WTs7Ozs7Ozs7Ozs7Ozs7OztTLEksYzs7OztXLE07Ozs7Ozs7YSxPO1k7OztTO1UsTzs7UztVLE07Ozs7O2EsTztZOztRO1MsTTtTO1c7Z0I7OztROztTLFE7Uzs7NkIsTyx5QztTLFE7Z0I7OztROztTLHFCLE8sb0M7UyxRO1MsUTtnQjs7OztLOztLO0s7Ozs7OztLLE07OztHOztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7Ozs7ZTtPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O087OztROzs7Vzs7O2M7Yzs7O2M7YztzQjs7VTtPO087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7O1E7O1MsVTs7O1k7O2E7YSxXO1k7WSxPO1c7UyxVOzs7WTtZLE87VztTLFc7UztROztrQjtrQjtpQjs7OztROztTO1MsVTtTLFU7OztROztROztTO1MsVTtvQjs7Ozs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTtTO1M7Uzs7O2M7Ozs7O2E7OztRLE87Ozs7Rzs7STtJLG9CO0ksVztHOztJO0s7SyxPO0ssTztLLE87SyxPO0ssTztLLE87STs7YTs7Ozs7Ozs7Rzs7STs7OztPOzs7Ozs7Ozt5Qjs7Ozs7eUI7eUI7Ozs7STs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7Z0IsTzs7O0ssTTs7O0k7SSxJLHVCOztLO007Ozs7OztJO0ksTztHOztJOzs7O0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STs7MEI7OzRCOzs0Qjs7NEI7OzRCOzs0QjtvQzs7Rzs7SSxXO0k7SztNLE87TSxNO3lCO0ssWTs7TTs7Ozs7TTtLO0ssTzs7SSxPO0c7O0k7O0s7OztLO0k7SSxvQjs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7O1M7Ozs7O0ssRyxnRDs7OzthO087USxvQixlO1EsTzs0QixlO1EsUTtROzs7TztPLFc7O3dCOztLO007TztRLE87Ozs7OztPOztRLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxNOzs7OztLO0k7SSxPO0c7O0kscUI7STtHOztJLFc7STtHOztJO0k7STtHOztJO0k7STtHOzs7SyxtQjs7O1E7O1M7UTs7USxvQjtROzs7O1M7OztVOzs7VTs7VyxRO1csTztXLE87VztXLFU7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7O1M7UztTOztTO1M7Ozs7Ozs7Ozs7OztlOzs7Z0IsVTs7Ozs7OztlOzs7Z0I7Ozs7O2U7OztnQjs7Ozs7Ozs7Ozs7O2U7OztnQixVOzs7Z0I7Ozs7WTthOzs7WTs7UyxVOzs7UyxVO1M7UyxPO1E7MkI7Ozs7OztROztTLFE7UyxVOzs7UTs7O1EsTTttQzs7UTs7UztTLE87UTs7STtJLE87Rzs7STtLOzs7O0ssTztJO0c7O0k7O0ssUztLLGdDLGU7OztROztTLFU7OztRO1E7Uzs7OztTO1E7O1E7OztTLFU7Ozs2QiwwQztRO1E7Uzs7OztTOzs7OEIsZ0M7OztROzs7OztROztTLFU7Ozs7O1k7Ozs7Ozs7O2EsTTs7WTthLE07WTs7YSxPO2EsUTthO1k7VztRO1E7Uzs7OztROzs7OztROztTLFU7OztTOzhCLDhDO1E7UTtTOzs7O1M7OytCLGtDOzs7UTs7Ozs7UTs7UyxVOzs7UztRO1E7Uzs7OztTO1E7O1E7O1MsUTtnQyxtQztTLE87O1MsTztTLE87Uzs7O1M7O1UsVzs7O1M7Ozs7O1E7Uzs7Ozs7Ozs7UTs7Ozs7Ozs7OztROztTLFU7UyxXOzs7UyxnQjtRO1M7VSxPO1UsTzs7OztROztTO1c7OztTLHVCO1E7UTtTOzs7O1E7Ozs7Ozs7Ozs7UTs7Uzs7Ozs7WSxtQzt3Qjs7WTtXO1MsVTs7O1k7WTtXO1E7UTtTOzs7O1M7OztjOzs7O2U7YzthOzs7K0I7UTs7O3VCOzs7OztROztTOzs7O1E7UTtTOzs7O1E7Ozs7O1E7O1M7OztTOztTLE07UTs7UztTLFE7Uzs7OztRO1E7Uzs7OztROzs7OztROztTOzs7Uzs7OztROztROztTO2dDLGlDO1MsUztTO1MsVTtTO1MsVzs7Ozs7UzswQjtRO1E7UztTOzs7O1MsTztROzs7OztROztTLFc7Ozs7O1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7OzthOzs7UyxPOytCLGdCO1M7O3VCOztROztROztTLFc7Ozs7O1k7WTtZOztXO1E7UTtTOzs7O1M7Uzs7O2M7Ozs7O2E7OztTLE87K0IsZTtTOzs7bUI7O1E7OztRO1E7Uzs7OztROzs7Ozs7USxNO21DOzs7STtJLDJCOztLO00sbUI7Ozs7TTtNO0s7SztJO0ksTztHOzs7Szs7Ozs7TSxPO0ssb0I7SztNLE87TSxPO00sTztzQixZO0s7TTs7Uzs7OztNLFE7TSxROzs7TTtLO0k7SSxPO0c7Ozs7TTt3QixtRDtNLE87SztLLE87STs7O007MkIscUM7TTtPLE87TztNO0s7SyxPO0k7STs7TTt3QixtQjtNLE87SztLLE87STtJLFk7O0ssb0IsTztLLE87STtJLFU7OztNLFc7TSxPO0s7SyxPO0k7SSxpQjs7SztNLE87TSxPOzs7OzBCLDZCO0ssYTtLO0k7STtLLE87Szt5Qiw4QjtJLEksTywrQjtJO0ksSSwrQjtJOztLOzs7OztNO0s7STtJLGE7STtHO0c7O0k7STs7OzswQjs7OztTO1M7Ozs7OztLLE07O0c7O0ksSSxzQzs7OzZCOzs7Rzs7Ozs7O1E7O1E7O1MsUTtTOztZOzs7ZSxPOztrQzt1Qjs7O1EsTzs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7O2dCOzs7O0k7Szs7USxzQixXOztTLE07O1E7O1Esc0I7O1MsTTs7UTtnQjs7O0ksTztHO29CLGU7Ryx1Qjs7STs7SyxPOztJO0c7O0ksa0I7SSxZOzs7O08sTTs7Ozs7O1c7Ozs7ZTs7OztnQixXO2UsRztnQjtpQixXO2lCLEs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7OztlOztrQjtrQjtpQzs7Ozs7O3FCLEcscUI7c0I7Ozs7O2lCOzs7O2U7ZTs7Ozs7O2M7O1c7VTtPLFc7ZSxNOztHOzs7SztLLFc7STtJOytCO0c7Ozs7TTttQjtLO0ssVztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7OztJO0k7SztpQjs7Ozs7O0ssTTs7STtHOztJO29CO2dCOztJO0c7O0k7O0s7STtJLE87Rzs7STs7O087O1EsTztRO1EsZ0I7Ozs7UyxXO1M7Ozs7USxVOzs7OztVO1c7WSxPO1ksUTs7OzsyQjs7Ozs7Ozs7Ozs7Ozt5Qjs7Ozs7Tzs7Tzs7UTs7Ozs7UTtRO1EsTztjOzs7Ozs7UTs7O1M7UyxROzs7Uzs7VSxPO1UsTztVO1UsVTs7Ozs7Ozs7Ozs7Ozs7O087Tzs7Ozs7Ozs7Tzs7O1E7OztTO1M7Uzs7Ozs7WTs7O1M7Ozs7Tzs7OztZOztXO3dCOzs7TztRO1E7O1csa0I7Ozs7Ozs7Z0IsTTs7Ozs7cUI7O2U7Z0IsTTs7ZTs7Ozs7Ozs7Ozs7YztlOztrQjs7Ozs7Ozs7Ozs7O2U7Z0I7a0I7Z0I7ZSxNOzs7Yzs7ZSx1QixRO2U7Ozt5Qjs7OzsyQjs7OztnQjs7aUI7bUI7Z0I7Ozs7O2dCO2lCO2tCLE87Ozs7Ozs7O2lCO2lCLE07Ozs7Ozs7O2dCO2lCOztvQjs7Ozs7OztpQjs7OztpQjs7OztjOztjOzs7Ozs7OztjLE07OztjO2UsTztlO2MsTTs7OztPLE87O087OztRO1E7UTtPOzs7MEI7TyxVOztRO1E7O3FCOzs7O1csTTs7Ozs7Ozs7ZTs0QjtjO1csRztZLE07Ozs7OztxQjs7b0I7VztZO1ksb0I7VztZLE07Vzs7TyxNOzs7O08sTTtrQzs7Rzs7O0s7O007O087OztPO087TTs7SztNO00sUTtNO00sVTs7Ozs7Ozs7SyxvQjtLOztNOzsyQzs7O1M7OztTOzs7Uzs7O1M7OztTOzs7Uzs7SztLO00sTztNO0s7STtJLE87Rzs7STtJOzs7Szs7UTs7OzsyQixPLHVDO1MsTztROztROzs7UyxROzs7MkI7UTtTLE87OztZO1k7WSxlO1c7UTs7Z0I7OztROztTLFU7OztRO1E7Ozs7O1E7OztTLFU7Ozs2QiwwQztROzs7Ozs7YTs7O2MsYztjLFM7YSxPO1k7aUI7Ozs7UTs7OztxQyxvQzs7Ozs7UTs7UyxVOzs7Uzs4Qiw4QztROztROzs7b0Msa0M7Ozs7O1E7O1MsVTs7O1M7UTtROzs7OztROzs7Ozs7UyxjO1MsVTs7O1k7Ozs7Ozs7Ozs7OztZO1c7UyxPOztTLE87UyxTO1M7Ozs7OztROzs7Uzs7VSxVOzs7Uzs7Ozs7Ozs7Ozs7UTs7Ozs7UTs7OztZOzthLE07Ozs7Ozs7O1k7VztTLFU7OztZOzs7OztZO1c7Uzs7cUI7Ozs7O1ksbUI7WSxvQjtZLE87VztRO1E7OztZOzs7Ozs7Ozs7O2E7Ozs7c0I7OztZO1k7YSxPO2E7WTtXO1MsYzs7O1ksbUM7d0I7WSxtQjtZLE87VztTLFc7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7OzthOztjLFc7YyxlO2E7YSxVO2E7WTtVLFk7O1M7OzthO2EsVTthOzs7O2M7Ozs7O2EsTztZO1UsUTtVOzs7YTthLFU7O2EsTztZO1UsTTs7Ozs7OztROzs7WTs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7OzthLE07OztZO2E7Ozs7Ozs7YTtZOztTLFk7OztZLG1DOzhCLHdCO1ksTztXO1MsTTtTO1M7OztjO2M7YTs7OytCO1E7b0I7Ozs7UTs7Uzs7OztRO1E7O1E7O1M7Ozs7O1E7O1E7O1MsVzs7Ozs7WTtZO1k7WTs7VztRO1E7O1M7OztjOzs7Ozs7O2E7OztTLE87OEIsNkI7UTtxQjs7OztROztTLFc7Ozs7O1k7WTtZOztXO1E7UTs7Uzs7O2M7Ozs7O2E7OztTLE87NkIsZ0M7UTtxQjs7OztROztTOzs7WTtXO1MsUztTLFU7UztTLFc7Ozs7UyxzQjtRO1E7UTs7O1E7UTs7O1EsTTttQzs7OztJO0ssVztLOzs7TSx1QjtNOzs7O007SztLO007Ozs7Szs7YTs7STtJLDJCOztLO007Ozs7TTtLO0s7STtJLDJCO0c7O0k7STtLOzs7OztJO0c7O0c7STs7O0c7STs7RyxJO0c7STs7O0ksTztHOztJOzs4QixPOzs7Tzs7OzhCOzs7bUI7OztlOztHOztJO0s7Szs7Szs7TSxVOzs7Ozs7SSxVOztLLE07STtHOztJOzswQjs7O087ZSxNOztHOztJO0k7SyxVO0s7SyxRO0k7Ozs7Ozs7Ozs7Ozs7OztPO1E7USxVOzs7UTs7O1c7O2M7O2U7O2UsTztlLFU7Yzs7Yzs7ZTs7ZSxPO2U7aUI7YztzQjs7VTtRLFE7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNO08sMkI7Ozs7SztNOzs7UztTLEk7OztpQzs7O1MsSSxXOzs7aUM7Ozt5QjtTLFE7UztRO00sTzs7Ozs7O0k7OztLO0s7TTtPLE87TyxPO007Ozs7O08sTTs7OztJO0k7STtJO0c7O0k7Rzs7STtHOzs7Ozs7STtLOzs7Ozs7OztJLGU7SSxPO0c7OztJOztLO0s7d0I7SztNOzs7OztNOztNOzs7O1UsVztVLE87Ozs7OztTO007TTtNOztLOztNLE87TSxhO0ssRztNO087USxPO1EsWTs7Ozs7TztPLE07OztnQjs7Ozs7TTtPLFM7TztTOztNO007TztPLE87TTs7Ozs7Ozs7TTtNOztLLFc7SztLOztROzs7Ozs7OztLO0s7Szs7TTtPLFM7TyxPO08sTTtPO08sTztNOzs7Ozs7OztNOztLO0k7STs7OztTO1UsTztVLGE7VSxPO1M7Ozs7Ozs7O1M7UTtJLE87Rzs7O0ksVztJLE87Ozs7Ozs7O0c7cUMsa0M7OztLO00sTztNLE87TSxVO00sTztNLEs7TSxPO00sa0I7O00sTTs7SyxXO0ssb0I7STtJLFk7STs7Szs7O00sUTtNLFE7SztJO0k7SyxpQjtLOztLO0ssTztJO0ksWTs7Szs7O00sTztNLE87TSxPO007SztJO0k7SyxLO0ssUztLLFU7SSxHO1k7TTtNLE07OztlOzs7OztLO00sUztNLE87Szs7SyxPOzs7Ozs7Ozs7d0I7STtLLGE7SyxPOztLO0ssVztJO0ksYzs7SztNLE87TTtROztNO00sTztLOzs7STtHOzt5QiwwQjtJLE87Rzs7STs7O1EsTzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87Z0IsTzs7Ozs7TyxPOztPOztRLE87TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOzs7USxTO08sTzs7O087Ozs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7OztPLHNDO08sTzs7O08sTzs7Tzs7O1EsTztPLE87OztPLE87OztPLE87Ozs7TyxPOzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7TyxPOzs7OztROzs7Ozs7OztTO1M7UyxPO1M7OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7OztRO1E7USxPO1E7TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxvQixPO08sTzs7Tzs7O1E7USxPO08sTzs7OztJOztLOzttQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNCO0c7OztJOzs7SyxZOzs7Ozs7Ozs7OztNO08sTTthOzs7Ozs7O0ksYTtJLHFCLE07SSxPO0c7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzsyQixxQjs7SSxVOztLO0k7STtLLFE7SyxNO0ssTTtJLE87Rzs7SSxZOztJLEc7SyxNO0k7SyxlO0s7Ozs7OztJOzs7Ozs7Ozs7OztHOztJLFk7STs7SztLO0k7RzsrQixPLG1DOztJO0ssUTtLLFE7OztJOzs7ZTtLOzs7TSxJO0ssRyxxRDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDs7O0c7O0k7O0ssTztJO0ksTztHOztJO0k7Ozs7Uzs7UyxVO1M7OztRO0ssVTs7a0I7O0s7Szs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7eUM7OzZDO29EOzs7Ozs7TSxPOzs7STtHOztJOzs7Ozs7Ozs7Ozs7TTs7Ozs7STtHOztJOzs7Ozs7Ozs7Szs7STtHOztJOztlOzttQjswQjs7STtHO3lCLG1CO0c7STtJO0k7Ozs7Ozs7STs7SSxJLGdCLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVOzs7O2E7YTtZO1UsTzs7Ozs7YTthO1k7VSxPO1U7Uzs7Uzs7Ozs7VTs7O2E7YTtZO1UsTztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxvQjtLLE87STs7SyxZOztLOztJLEksc0M7Ozs2Qjs7O0c7O0ksa0MsTztJLFc7SSxpQztHOzs7Ozs7TyxPLGU7OztPLHdCLEs7Tzs7TTs7Tzs7Ozs7STtHOztJLFk7O0ksTzs7O0k7OztPO08sTzs7K0IsTzs7Ozs7OztPOzsrQixvQixPLG1CO08sTzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPOzs7OztXO1csTztVO087Ozs7O1c7VyxPO1U7Tzs7OztPOzs7MEIsb0IsTyxzQjtPO087OzhCLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOzt5QixPOzs7TyxPOzsyQixPOzsyQixPO2U7O0k7SSxPOzt3Qyw2Qjs7STtJOzs7Ozs7UTs7UTs7OzsrQjtTLE87UyxPO1M7USxPOzs7Ozs7UTs7OytCO1MsTztTOytCO1MsTztTLE87USxPOzs7UTs7UTs7O1M7K0I7UyxPOzsrQjtTLE87Uzs7O1M7c0I7USw2QjtRLE87O1E7Ozs7K0I7UyxPO1M7USxnQjtRLDhCO1EsTzs7O1E7O1E7Ozs7UzsrQjtTLE87UyxPO1M7UyxPO1EsTzs7UTs7OztTO1M7UyxPO1EsTzs7UTs7OztTO1M7UztTLE87USxPOztROzs7UztTO1EsTzs7UTs7O1M7UztRLE87O1E7Ozs7O1M7UztTLFE7UztTLE87USxPOztRLHVDO1EsTzs7UTs7OztTO1M7UTtpQjs7Ozs7cUMsTzs7SztNO00sTztNO0ssTzs7Rzs7O0s7SyxPO0k7SSxPO0c7RztvQyx3Qzs7STtJOzs7Ozs7eUQ7Ozs7O0s7O0c7O0k7Ozs7Ozs7O087Ozs7O1E7Ozs7O087O0ksTzs7O0k7O0ssTzs7O0k7OztJLEksVzs7OztLO00sTztNLE87SyxPOztJO0c7O0k7Rzs7STtHO2tEO0c7O0k7Rzs7STtLLE87SyxNO0s7SSxJLFU7Ozs7SztNLE87TSxPO0ssTzs7O0k7Rzs7STs7bUIsTztJLG9CLE07STs7O0k7Ozs7STtLLHFDO0ssaUI7STtJO0s7O007Ozs7O087OztNO0s7SyxPO0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O1E7O1M7Ozs7O1M7UTs7UTs7Ozs7O1M7OztTO1E7O1E7Ozs7O1M7OztTO1E7O1E7OztTOzs7UztTOzs7WTs7USxXOzs7UTs7UTs7OztTOztTLHNCO1MsTzs7O1Msc0I7UyxPO1M7UTs7UTs7Ozs7UztTOzs7WTs7UyxPO1E7OztROztROzs7Ozs7Uzs7O1M7UTs7UTs7OztTOzs7UztROztROzs7O1M7UztROztRLGtDO1E7O1Esa0M7UTs7UTs7Ozs7O1M7OztTO1M7UTs7O1EsRztTLE07USxJLEksTzs7Ozs7O1E7O1E7Ozs7OztTO1M7UTs7UTs7O1M7Uzt3QixPLHNDOzs7WTs7Ozt3QixJOzs7Z0Q7Ozt3QixPOzs7O1ksTzs7Ozt1QixJOzs7K0M7Ozt1QixPOztXO1MsYzswQyxPLHdCO1MsVTtTO1E7OztRLEksSSxPOzs7Ozs7UTs7STs7SyxrQjtLLE87STs7O0s7OztLLFk7O0s7O0k7Rzs7O0ssWTtLLE87STt5QixtQjtJLFE7STtHOztJO0ksdUMsVztHOztJOztPOzs7Ozs7OztRLE07Tzs7Z0I7Ozs7Ozs7Ozs7Ozs7OztPLHVDOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPOzs7USxNOzs7VztXLGM7VTtPLFc7OztPLGM7O087Ozs7USxNOzs7O1c7VyxjO1U7USxNOzs7OztXO1csYztVO1EsTTtRO08sVzs7Tzs7Ozs7USxNOzs7VztXLGM7VTtRLE07TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOzZCLHlDO3lCLDZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7TyxPOzs7O0k7O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1EsTztnQixPOztJLG1CO0ksTzs7O0k7OztROztRO2dCOzs7STtHOztJOztrQjs7a0I7MEI7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO0ksTztHOztJOztlO2U7Ozs7aUI7aUI7O3FCLE87OztPLE87O0c7O0k7OztNOztPLHNCO00sRyxzQzs7O08sYztPOzs7O1c7VyxPO1U7TztPLE87O007TSxPOzs7STtHOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Z0IsTzs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7NkI7OzZCOzs4Qjs7OEI7OzhCOzs4Qjs7Ozs7Vzs7Vzs7Vzs7Vzs7VzttQjs7OztROzs7UTs7O1EsTzs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O3lCLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7Ozs7Ozs7O0ksaUI7YTs7OztROztROztROzs0Qjs7O087O087Ozs7TyxPOztPLE87ZTs7OztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1k7YTthO2M7OztpQjs7OztrQjtpQjtpQjtnQjthO2EsTzs7O2E7YSxPOzs7Ozs7OztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7O1M7O1k7O2E7O2M7OzthLE87O1k7WSxPO1c7USxPOzs7Ozs7Ozs7UTs7O1M7OzthLE87WTtZLE87VztRLE87Ozs7Ozs7OztROzs7Uzs7WSxJLGM7O2E7O2M7OzthLE87WTtZOzs7YTs7Yzs7O2EsTztZO1k7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZOzthOztjOzs7YSxXO2EsTztZO1k7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7OzthLE87WTtZLE87VztRLE87Ozs7Ozs7Ozs7O2E7YSxPOztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7OzthLE87WTtZLE87VztTO1EsTzs7Ozs7Ozs7Ozs7O1Esa0M7Ozs7Ozs7Ozs7Ozs7O21CO1E7OztTLE87UTs7Ozs7Ozs7UyxPO1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O0s7TTs7Uzs7O1k7O2U7O2U7dUI7OztZOztZLE07O1E7TTtLOzs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7OztpQixPOztNO007Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQjs7SSxPOzs7cUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7SztLO007OztNO0s7O00sWTtrQjs7TTtPO1EsVTs7OzhCO087Ozs7O087ZTtPOztLOztNOzJCLG9CLFc7TSxXO00sTztLOztNOztPO087TTtNO08sTztPLE87Tzs7TztPO087MEI7O087TztNO007TTtLOztLLDBCO0s7Szs7O2tDOztJO0k7Ozs7OztzQjs7O2lDLFk7Ozs7OztTO1M7UTtROztTOzs7UTs7Ozs7Ozs7O1M7OztTOzs7UTs7Uzs7VTtZO1MsYztROztTOzs7O1U7WTs7VSxLOzs7Uzs7Ozs7VTs7Vzs7OztXOzs7O1UsRztXO1k7Yzs7WTtZOzs7O2E7YTthOzs7Ozs7WTthOzs7Ozs7Ozs7Ozs7O1c7VztXLHlCOzs7O2E7O2M7YTthOzs7Ozs7OztXO1ksTTtZO1k7Ozs7YTthO2E7Ozs7O1c7VztXLHlCOzs7O2E7O2M7YTthOzs7Ozs7OztXO1ksTTtZO1k7Ozs7YTthO2E7Ozs7O1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7c0I7O1M7OztpQjs7O1E7USxJLEksc0M7O1MsSSxlOzs7Ozs7O1k7WTs7Ozs7OztXLEcsdUI7Ozs7O1UsTzs7O1M7O1UsVTtVO1c7Ozs7O1c7Vzs7VTtVO1M7Uzs7VTs7OztVO1U7UyxJLFcsdUM7Ozs7O1U7VyxNO1U7O1c7Vzs7Ozs7O1k7O2EsSSx1QixPO2E7Ozs7Ozs7O1U7Ozs7O1c7O1k7Ozs7Ozs7O1ksRzthO2M7Ozs7Ozs7Ozs7OztjOztjO2E7YTthO2M7O2M7Ozs7Ozs7WTthOzs7VztZOzs7Ozs7VTtVOztROztTOzs7VTs7O1U7VTs7Ozs7OztTO1M7Uyx5Qix3QjtTO1E7O1M7O1U7VTtVO1U7Ozs7VztZOzs7WTtZOzs7Ozs7O1c7VztXLHlCLHdCO1c7b0I7Ozs7Vzs7Ozs7OztVO1c7VztXO1c7Vzs7Ozs7Ozs7YztlOzs7Ozs7Ozs7Ozs7ZTs7ZTtjO2M7YztlOztlO2M7Ozs7O2M7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7O1U7VztXO1c7VztXOzs7O1k7YTs7Ozs7O2E7Ozs7Ozs7YztjO2E7YTthO2M7O2M7YTs7Ozs7O1k7Ozs7Ozs7Ozs7UyxJLCtCO1M7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEkscUI7WSxxQjs7Vzs7O2U7Z0I7Z0I7Z0I7ZSxxQjtjO1ksTztXLE87OztxQyxzQztxQyx1Qzs7OztXLEksc0I7VyxzQjs7VTs7O2M7ZTtlO2U7YyxzQjthO1csTztVLE87O1M7O1U7Ozs7OztVO1U7Ozs7VyxJLDRCO1csTzs7O1M7VTtXO1c7Ozs7Ozs7UztVO1U7Ozs7Ozs7O1M7OztVO1UsTTtzQjs7b0M7Uzs7VSxlO1UsSTtTO1U7UztTLEk7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7OztpQjtnQjtZOzs7Vzs7O1c7Ozs7O1ksTTtZLE07WTs7OzthO2M7Ozs7YTtjO2UsTTs7Ozs7OztjO2M7Ozs7Ozs7ZTtlOzs7OzthOzs7OztXO1k7WSxPOzs7OztlO2U7ZTtjO1c7OztZO2EsTzs7YSxPO1k7WSxVO1ksTztXOztXOztXO1c7OztVLEksbUI7O1M7VSxNO1M7UyxhOztVO1U7VTtTO1M7UztTOzs7UywrQixTOztVO1c7O1ksUTs7O1k7OzBCLE8sYyxxQjtXLE87OztVO1M7UyxnQjtTO1E7O1M7VSxNO1M7VSxZO1U7OztTLE87UTs7UztVLE07UztVLFk7VTs7O1U7O29DO2tDLFc7UyxtQjtTLE87UTs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFcsTzs7O0s7SyxXO0k7SSxROztLO0s7SztJO0k7SSxPO0c7O0k7OztnQixPOzs7Ozs7OztLO2lCOzs7Ozs7O0k7Rzs7SSxRO0ksTztHOztJO0c7OztJLFc7OztJLG9CO0ksTztHOzs7STs7Ozs7Ozs7Ozs7OztROzs7Ozs7OztROzs7UztROztROzs7O1M7UztRLE87Ozs7Z0I7O0k7RztHOztvQixPLGlDOztzQiw0QjtJLE87Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHOztJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUztLLFE7Ozt3QixPLGtDO0ksbUIsTSx3QztzQiwwQjtJLEk7O29CO3FDO2lCOzs7Ozs7Ozs7UyxhOztROzs7Ozs7NEI7O1E7Ozs7Ozs7O1E7Ozs7O1Msc0IsTztTLGE7O1E7Ozs7O1M7OztVLE87VTs7O1E7Ozs7Ozs7O1E7O0ksTztHOztJLFk7O0ksTztHOztJLFc7STtHOzs7STtLLE07O0k7Ozs7STtLLE07O0k7Ozs7SSxXLE07O0k7Ozs7SSxXLE07O0ksZTs7O3FCLGtCLGdDOzRCLHFCOztJO087SyxPO0ksVztJLE87RzswQixPLHlDOztJO0s7OztNOzs7SyxtQjs7SSxPO0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxJOzs7Ozs7O00saUI7TTs7STtJO0c7OztLO0ssWSxPOztLO00sNkI7TTs7OzsrQjs7O0k7SSxPO0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJOztLLGlDO0ssTztJO0ksTztHOzs7STtHOzs7SztLO29COzs7O087O007OztPOztVO1csTTs7VTtTO08sUTs7TztPO3NCO1E7Ozs7O1MsTTtTOzs7Ozs7Vzs7WTtZLE87Ozs7Ozs7OztVLEksOEI7Ozs7OzthLG9DO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsTTs7WSxNOzs7Ozs7VTtVLE87Ozs7Ozs7Ozs7O1E7USxJLGtCOzs7Ozs7O1EsVztXO1M7USxNOztNO2lDLHNDO007Ozs7O0k7STtHOztJLDBCO0ksb0I7Rzs7SSxZOztJO0c7O0ksVTs7SSxHLGtCO0ksRyxxQjtJLEk7STs7O0ksWTs7SSxHLGtCOztJOzs7OEIscUI7OEIsK0M7O0ksVztlOzs7Ozs7Ozs7Ozs7OztJO0k7Rzs7STs7O00scUQ7TTs7O0k7Rzs7O0s7SyxjO0k7SSxPO0c7Rzs7STs7eUIsa0I7O0k7STs7Ozs7OzZDOztLOztHOztJO2dDLDRCLFc7SSxVO0k7OzthLG1COzs7WTtHOztJLFk7O3NDO0k7OztLLFc7bUI7OztLLE8sVzs7SSxPO0c7Ozs7Szs7Ozs7TSxRO00sVTs7OztzRDs7Ozs7Szs7O007TyxXO2tCLDRCO0s7STtJLE87OztJLG9COzs7Ozs7Ozs7OztPOzs7O007O087OztNO007cUM7Ozs7UTs7OztTOzJCOzs7OzttQjtROztTO1E7Ozs7O1E7UyxRLG1DO1M7O1M7UTs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHO0csYTs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7O0s7SyxXO0k7SSxXO0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7Ozs7Z0I7Z0I7ZTthOzs7O2lCOzs7O2E7OztnQixvQixPO2dCLE87ZTthLFE7YSxPOzs7Z0I7Z0IsTztlO2EsTyxXOzs7Z0I7Z0IsZTtlO2E7ZSxXO2EsUzthLFc7bUM7YTtlOzs7Z0I7Z0I7aUI7OztxQixlO29CO2tCOzs7OzttQjs7OzttQjs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCOzs7Ozs7d0I7MkMsTyxrQzs7Ozs7Ozs7MkI7OzRCOzZDO2tEOzs7Ozs7MEI7Ozs7MkI7Ozs4Qjs7Ozs7a0M7OzBCOzsyQjs0Qzs7NEM7Ozs7eUI7Ozs7OzBCOzJDOzs7Ozs7OEI7Ozt5Qjs7Ozs7MEI7MkM7Ozs7Ozs7OEI7Ozt1Qjt3Qjt3QixPOzJDLGM7d0I7dUM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjt3Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7O2lCOzs7O2U7YTs7O2dCO2dCO2U7YSxZLFc7YTs7YTs7O1k7b0I7OztXO1k7OztXOzs7Ozs7O1U7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7Ozs7O1ksSTtZLE07Ozs7Ozs7VztZO29CO3VCOztZO1ksSTs7O1csSTs7Ozs7Ozs7Ozs7UTs7O1k7Ozs7O2EsTTthOzthO2E7O1k7VztTLE87UTs7Ozs7YTthLHFCO1k7aUI7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7Ozs7TztROzs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7USxJOzs7OztNO08sSTs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TSxJOztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087OztVO1U7VyxNO1UsSTs7O1M7TyxVO08sMkMsVztPOzs7OztNLFk7TTs7O1U7O2dDOzthO3NDOztTOzs7VTs7O1c7VSxzQjtTO08sTztPOzs7VTtVO1M7TyxTO007OztJO0c7O0k7Rzs7STtLOzs7STtHOztJLFksTztJOzs7SztLLE87SztJOzs7STt5QixrQixPLDJCO0ksWTs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YztjO2MsTTs7Ozs7Rzs7STt5RTtJLE07Rzs7STs7O0ssTzs7SSxNO0c7O0k7O0c7O0k7a0M7O0ssTTs7STtHO0csbUI7O0k7O2E7YyxZO2MsTTtjLFE7O2M7ZSxPO2UsTztjLE87OzthLEksVTs7Ozs7YztlLE87ZSxPO2UsTztlLE87YyxPOzs7YSxPOztHO0c7STs7STs7STtLOztNOzs7TTs7Ozs7Ozs7Szs7O0s7TSxVO007Ozs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztLLE07Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksVzs7SztLO0s7STtJO0ksTztHOztJOzs7SyxPOztJLE07Rzs7STs7O0ssTzs7SSxNO0c7RztJO1U7STtVOztJLGlCLE87SSxTO0ksMEI7Rzs7SSxTLE07O0ksVztJO0s7Ozs7STtHOztJLFU7O0s7TTs7Ozs7O0s7OztlO2dCO2dCO2U7Ozs7Yzs7Ozs7O00sTTs7O0k7Ozs7ZTtlOzs7Ozs7O2M7YyxPO2E7Rzs7STtLOzs7ZTtjOztJOzs7O2U7Yzt3QztjLFU7YzthO0c7O0kseUIsUzs7SztNOztPOzs7Tzs0QixTLHNCO007OztLO0k7STtHOztJLFk7STsrQjs7OztLO0ssZ0I7STtJO0ssTztLLE87Szs7O0ssUztJOzs7OztLO0s7STtJLFc7STtHOztJO0k7Ozs7O08sUztRO08sSTs7OztLOztHOzs7SztLLE87STtJLFU7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsNkM7dUMsK0I7O0ksSSxZOzs7O00saUI7O007Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPLDZCO0k7SSxPO0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO1U7Ozs7O1c7VTtXOzs7Ozs7SztNLE07O007Ozs7O087Tzs7Ozs7Ozs7O29COzs7SztNLFU7Ozs7O3dCO1U7Ozs7O1csWTs7Vzs7Ozs7O2UsTTs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7O2UsaUM7SztNLE07SztNO2lCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0s7Ozs7O0ksTztHOztJLFksTzs7bUI7Ozs7Ozs7O0k7Rzs7SSxZO0k7Z0I7O0k7Rzs7STtLLFk7Szs7Ozs7TTs7O0s7TTtLOzs2Qjs7O1E7O1EsTTs7STtJO0s7OztLO0k7Rzs7SSxRO0k7Ozs7Ozs7Rzs7STs7Ozs7Ozs7O1E7O1E7OztRO1E7O1E7UTtTLE87UyxPO1EsTzs7STtHO0c7O0k7O2lCO0s7Ozs7Ozs7TTs7O007Tzs7O1E7OztPLEksWTs7O2lDOzs7TyxlOztNLE87SztLO00sTztNLE07SyxJLFU7Ozs7TSxJOzs7Szs7O00sUTs7Ozs7Ozs7O007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUIsSTs7Ozs7UTs7Ozs7Ozs7TTtPLEksVTs7Ozs7OztPOzs7UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7Ozs4Qiw4QjtRLE87Ozs7OEIsOEI7USxPOztLOzs7O0k7Ozs7UTtrQjs7Ozs7Ozs7O1M7VTs7OztXO1U7Ozs7Ozs7Ozs7OztTO1U7O1c7VTs7Ozs7O087Ozs7UTtRO1E7Tzs7O1EsVzs7TyxPOztJLE87Rzs7STtnQixPOztJO0c7OztJO0k7O00sTztLLEksWTs7OzswQixNOzs7Ozs7Ozs7Ozs7Ozs7a0I7TTs7Ozs7Tzs7O007Ozs7TyxJLFU7Ozs7UTtTOzs7Ozs7Tzs7O1E7UTs7Ozs7OztHOztJOzs7OztNLEs7TztNO087OztNO2lDOzs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO0ksb0I7STtLLFE7SztLOzs7STs7Ozs7Ozs7Rzs7O0k7Ozs7Szs7O1U7Ozs7Ozs7Ozs7VTs7OztZO0k7OztJOzs7Ozs7Ozs7Ozs7O1U7Ozs7VztXOzs7Ozs7Ozs7Ozs7Ozs7USxNOzs7Tzs7aUI7Ozs7Ozs7Tzs7UTs7OztPOztPLGlCOztRLE07Tzs7O1EsUztRO1E7Ozs7Ozs7O29COzRDOzs4QixvQjs4Qjs7Ozs7Ozs7Ozs7Ozs7O1U7O29COzs7O29COzs4QixvQjs7Ozs7O3VDOzs4Qjs7OztnQzs7Ozs7K0I7K0I7OEI7aUQ7Ozs7Ozs7Ozs7OEI7NkI7Ozs7Ozs7Ozs7O29COztxQjs7b0I7O3FCO3NCOzs7c0I7d0I7c0I7O3lCLFk7eUI7Ozs7OzBCOzs7eUI7Ozs7Ozt5QixNOzt3QjtzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCLE07Ozs7Ozs7Ozs7c0I7dUIsTTs7OzBCOzs7MkIsTTswQjs7Ozt5Qjt1Qjt5Qjs7Ozs7cUI7Ozt5Qjs7OzBCLE07eUI7Ozs7d0I7c0I7d0I7cUI7O29CO3FCLFM7Ozs7OztxQjs7O3lCO3lCO3dCO3NCO3dCOztzQixNOztxQjs7c0IsbUMsbUI7c0I7O3lCLE87Ozs7Ozs7Ozt3QjtzQixPO3NCLE87c0IsWTtzQjt3QjtzQjs0QywrQjt1QixZOzs7O3NCO3VCOzs7Ozs7Ozs7O3VCOzs7MkI7OzRCOzhDLE8sZ0M7NEIsTzsyQjsyQixPOzBCO3dCLFU7Ozt1Qjt3QjsrQzt5QjttQzs7Ozs7OztzQjt1Qjs7OzBCOzs7OzsyQjs7MkI7MEI7MEI7MkIsVTsyQjs7MkIsVTs7MkIsTzs7cUM7Ozs7MEI7MEI7MEI7eUI7dUIsVTs7Ozs7O3NCO3VCOzs7Ozs7Ozs7Ozs7b0I7cUI7dUI7cUI7O3lCOzs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQjs7Ozs7OzJCOzs7Ozs7Ozs7c0I7Ozs7Ozs7Ozs7dUI7Ozt3QixROzs7O3NDOzs7dUI7OzsyQjsyQixjOzBCO3dCLFM7OzsyQjsyQixjOzBCO3dCLFM7d0IsTzt3Qjs7O3dCLFM7dUI7Ozs7Ozt1Qjs7OzJCOzJCOzBCO3dCLE87OzsyQjsyQjswQjt3Qjs7OzJCOzs7Ozs7Ozt3Qjt5QixJOzs7NEIsa0I7d0M7OzRCOzZCLEksTzs7Ozs7Ozs7NEIsTzs7d0I7d0I7d0I7eUI7eUI7Ozs0Qjs7OzsyQjt3Qjs7eUI7Ozs7NkIsb0I7eUM7Ozs0QjswQixTOzBCOzBCLE87OzBCLE87Ozs7O2tDOzs7Ozs7b0I7Ozs7OztVOztvQjs7Ozs7b0I7OztxQjs7O29COzt1Qjs7OzJCOzs0QixNOzs7MkI7MEI7d0I7MEI7Ozs7Ozs7Ozs7O3VCOzs7MkI7OzRCLE07OzsyQjswQjt3QjswQjs7Ozs7O3VCO3dCOzs7MkI7MkI7NEIsTTs7OzJCOzBCO3dCLEs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0M7bUM7Z0M7Ozs4QixNOzs7Ozs7K0I7K0IsTzs7OytCLE07OzhCOzsrQjs4QixPOzs7Ozs7Ozs7Ozs7VTs7O1c7O2M7OztlLE07ZTs7Ozs7O21CLGtCLFE7Ozs7Ozs7bUI7a0I7ZTs7Ozs7ZTtjO2M7ZTtlO2lCO2U7OztlOzs7Ozs7Ozs7Ozs7OztjO2U7Ozs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs0Qjs7OztpQjs7OztpQjs7Ozs7Ozs7OztlO2dCOzs7Ozs7OztnQjs7Ozs7O2M7OztVOztvQjs7OztvQjs7OztxQixNOztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1QjtzQjt1Qjt3QixPO3FDOzs7Ozs7Ozs7K0I7c0IsVTtzQjt1Qjs7d0I7d0I7O3dCOzsyQixvQjsyQjs7dUI7O2lDOzs7Ozs7O3NCO3VCO3VCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7b0I7b0I7Ozs7OztVLFc7VTs7b0I7Ozs7b0I7OzhCLG9COzsrQjs7Z0M7OzttQzs7Ozs7OztrQzsrQjs7OEIsTTs7O2tEOzs7Ozs7O29COzs7cUI7OztxQixTO3FCOzs7cUI7dUI7Ozs7OztvQjs7Ozs7O0c7OztJO0ssUTs7O0s7OztJO0c7O0k7a0Q7STtHO3dCLE8seUM7O0k7Ozs7NkIsMEM7SyxPOztJO0c7O0ksTztHOztJLFk7Ozs7O1M7OztVLE87UztVLFc7VTs7Ozs7UztRO0ssSyxpRDs7STs7O0k7SztHOzs7STtLO007TSxVOzs7SyxzQjtLLE07O0k7SyxZO0s7Z0I7SztJLEksVTs7OztNLE07Ozs7SSx3Qjs7OztLO00sTztNLE87TSxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7OztJO0s7SztLO087bUMsbUI7STs7Ozs7Ozs7Yzs7YTtHOztJOztHOztJOztHOztJOztHOztJOzs7OztROzs7UTs7c0M7Ozs7OztROzs7Ozs7O2E7YTtZO1ksTztXOztTLHNCO1MsTztTOztTO1E7O1E7Ozs7O1Msc0I7UyxPOzs7WTtZO1c7UTs7Z0I7Ozs7USx3QztROztRLDJDO1E7O1E7Ozs7UztROztzQzs7bUM7Ozs7Szs7SSxPOzs7STtrQzs7SyxtQixJO0s7O0k7SztLLFM7SyxZOztLO0ssZTtJO0kscUI7eUIsbUIsVTtJO0ssYztLOzs7O1c7Ozs7Ozs7Ozs7OzBDLGtDO2dCLE87Ozs7Ozs7OztnQixPOzs7OztXLGM7NkIsZSwyQjtXLGdCO1c7OztvQjs7O1U7VTtXO1csYztVOztXLE87O1U7O1csTzs7VTtpQjtVLHVCLFcsZ0M7VTs7MEI7OztXOztVLE87Ozs7OztHOztJO0ssTzs7O1M7Ozs7c0IsdUI7SSxJLE87Ozs7Ozs7OztjOzs7OzZCOzthO0c7O0k7a0MsTzt1QixNOztJO0c7O0k7O0s7SztJO0ksSSxPOztLO2lCLE87OztvQjs7OztNLFc7TTs7TTtPLE07aUI7OztNLE07O0s7STtJLFc7Rzs7STs7Tzs7Ozs7UTs7O1c7O1EsTztPOztPLE07Z0M7O0c7O0k7SyxXOztJO0c7OztJLFM7O0ksTzs7O0ksZTt5QixrQixjO0k7SyxXO0s7SyxPO0s7SztLO08sbUMsaUI7Szs7Ozs7Ozs7Ozs7VTtVLG9CO1U7VyxlO1c7OztXLE87O1csbUIsTzs7VztVO1UsVTs0Qix1QjtVO1csTztXOztXO1c7VTtVO1csYTtXO1c7OztnQjtpQjs7OztrQjs7OztpQjs7MkI7Ozs7Ozs7O2dCOzs7Ozs7OztXLE87VTtrQjs7UztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztJLFU7SSxTOzs7Ozs7Ozs7STs7SztNLEksYywyQzs7Ozs7TyxTO087Tzs7O0k7RztHO0k7STtJO0k7O0k7STtJO0c7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHLHFCOztJLEksUTs4QixtQztJLGE7STtJO0c7O0k7SyxNOztLLE07O0ksVzs7OztLOztNOzs7Ozs7Ozs7OztNOzs7STtLO2lELDJCOzs7STtHOztJLHFCOztLLE07SSxzQjs7SSxJLFE7Ozs7Ozs7Ozs7Ozs7STs2Qix5QjtHO0c7STtJO0k7STs7STtJO0c7O0k7Ozs7Uzs7O1MsSSxTLGtCOztVOzs7Ozs7Ozs7UztTLGU7UztRO0ssTzs7OzBCLE87d0IsTyxpQjtJLE87Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztLO0k7Rzs7STs7Ozs7Ozs7OztxQjs7Szs7STtHOztJOzs7Ozs7O29COztJO0c7O0k7Ozs7Ozs7b0I7O0k7Rzs7STs7OztLO0k7Rzs7b0IsMkI7STtLLFE7OztJOzs7O007Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7O1EsTzs7OztLLFc7Rzs7STtLLGlDO0s7SyxPLG9EO0c7O0k7Ozs7OztLOztJO0c7O0k7Ozs7Ozs7SyxJLFE7OzsrQjs7O0s7O0k7Rzs7STtLOzs7STs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7OztLLFE7SyxnQixPO0s7TSxNLFc7TSxNLFc7TSxNLFc7Szs7STtJO3VCOztrQjtJLHFCLFU7a0I7O0k7Rzs7SSxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7OztJLFU7STs2QztJO0k7Rzs7SSxXOzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtHOztJO2U7Ozs7Ozs7STtHOztJOzs7O0ssTzs7STtHOztJO2tEOzs7O007Ozs7Tzs7TTtNO007Ozs7STtJO0c7O0k7d0I7Ozs7c0I7TTtNOzs7O0k7STtHOztJO21COzs7O3NCO007TTtNOzs7O0k7STtHOztJO0s7OztLO0k7Rzs7O0s7TTs7O007OztNOzs7OztPOzs7Ozs7OztNO087Ozs7OztLOzs7Ozs7OztJO0k7Rzs7STtLOzs7SztJO0c7O0k7Szs7OztNO0s7STtJO0ssUTs7O0k7Ozs7Ozs7O0s7O007O0s7Ozs7Ozs7VTs7Ozs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLE87OztpRDtLLE87O0k7Ozs7Ozs7O3VEOztLLE87OytCOzs7STtLO0s7SztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0k7b0Msc0I7SSxPO0c7Rzs7SSxnQjtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2tDLHlCO2EsUztZOzs7Ozs7Ozs7Ozs7bUI7Ozs7OztZOzs7O2EsK0I7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7OztZOzs7OzthLFU7OzsyQjtZOzs7OztZOzs7OzthLFU7OzsrQjtZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TyxHO1E7UyxPO3VCOzs7Tzs7TztnQjtPOztPOzs7Ozs7Ozs7TyxpQjtPOztHO0c7STtNO0ksVTs7SSxPO0c7O0ksTztHOztJOzs7Ozs7Ozs7Uzs7O1UsTzs7O1U7Ozs7Ozs7Ozs7O1csTTs7OztTOzs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7Ozs7O1M7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLFc7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7OztNOzs7OztxQjtTOzs7O1EsTzs7OzBCOzs7Ozs7OztVLG1CO1U7Ozs7Ozs7Ozs7OztXLEc7Ozs7OztVOzs7Ozs7VyxNOzs7O1M7Ozs7O21COztTLHFCO1M7Ozs7SSxNO3VCO0c7O0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Ozs7Ozs7STthLE07STtHOztJO0s7O1M7Szs7STtLLFc7SztLLGU7STtJO3lCLG1CLGU7STtLLE87SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOzs7STs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087STs7O1EsTTtPO0k7VTs7O0ssVztLLE87STtJO0ssUztLOzs7O007O08sTztjOztpQjs7OztnQjtJLEksTSw2Qzs7Ozs7dUM7O0s7Ozs7OztJLE87RztHOztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOzs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7STtJLE87Rzs7STs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YztjOzs7Ozs7Ozs7Ozs7Ozs7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthO2M7Yzs7Ozs7Ozs7Ozs7Ozs7O1E7UTs7OztNO087USxRO1E7USxNO1EsTztROzs7VyxXOztRLFU7Ozs7Ozs7O1E7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7O087Ozs0Qjs7Ozs7Ozs7Ozs7Szs7Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7SztNO00sUTs7O007Szs7OztrQjs7SSxPO0c7O0k7SyxPO0s7SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7SSxpQixPO0k7Ozs7Ozs7O0k7Szs0QjtLLE87O0k7SyxPOzs7STtHOztJOzs7STs7SyxNOzs7O087Z0I7Ozs7OzsyQjs7Tzs7OztRO087O087Ozs7USxtQztROzs7OzthOzs7YyxjO2E7O1k7Ozs7Ozs7USxRO1E7TyxPOzs7Ozs7O1M7Ozs7O1U7b0I7Ozs2Qiw2QztVLEc7VztZOzs7OztlOztnQixNOztlO2M7WSxXO1k7WTs7WSxPO1k7Yzs7Ozs7Ozs7OztXLHFCO1c7WSxVOzs7WSxVOzs7WSxVOzs7WTtXOzs7Ozs7Ozs7O3NCOzs7Ozs7O087O1EsVTs7O1EsVTs7O1EsVTs7O1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7OEIsZTtZLGlCO1c7VyxlO2dDLG1CLFU7VyxVOztZO1ksZTtXO1c7WSxZO1ksTztZLE87WSxPO1c7O1k7VztXO1k7WTtrQyx5QztZLE07WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7K0I7VztZLE87WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7OztjLFc7YyxXO2E7VyxVO2tDLG1CLGU7VyxRO1c7YTs7Ozs7VyxNO1U7Vzs7YTs7Ozs7O1M7Z0M7VSxPO1UsUztVLEk7VTtZOzs7Ozs7UztVLE07UztVOztZOzs7Ozs7O1c7Ozs7VztVO08sTzs7Tzs7O1EsSzsyQiw2QjtRLFU7USxzQjtRLE87USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztpQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVOzs7VztXO1k7O2EsZTtZOztXOztZLGE7OztZO2E7OzthOztnQixNOzs7Ozs7Vzs7OztvQjs7VTtRLEs7USxPO1EsVzs7OzswQixnRDtRLE07TztzQixNO1EsVztRO1M7Ozs7dUI7O1M7OztZLE07Ozs7b0IsTTs7Ozs7OztRLGE7UTtTOzs7Ozs7Uzs7O1ksTTs7Ozs7OztZOzthLE87Ozs7OztPLDBCOztPOztPOzs7UTtROzs7UyxXO1M7Ozs7OztXOztXLFc7Vzs7TyxXO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Ozs7UTtTLE87O1E7O087UTtRLFE7TztROztTLFc7OztTOzs7O087O087OztRLFE7UTtPOzs7O3FCOzs7Ozs7OztPOzs7USxRO1EsTztRLFE7Tzs7Tzs7OztRLFE7USxTO1EsUTtPOztPOzs7USxRO1EsUztRLE07UTs7O1c7OztZLFE7Vzs7O1U7USxPO087Ozs7OztpQjs7Ozs7Ozs7Ozs7Uzs7Ozs7VSxhO1U7VTs7YTs7OztVO2lCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7OztROzswQjtPLEksaUM7Tzs7TyxvQixXOzs7UztVLE87VSxPO1U7Uzs7Ozs7UTtTLE87O1E7OztRO1MsTzs7UTs7O1E7UyxPO1M7UTs7TztRLE87UTtRO1E7Ozs7b0I7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7Ozs7VyxZO1c7OztZLFU7WSxXOzs7O1k7O2dCOzs7OztZO1k7Ozs7O2dCOzs7O1ksTTtZO1csTzs7Ozs7UTs7WTs7Ozs7UTtRLGM7OztXOzs7Ozs7OztVO1E7Ozs7Ozs7USxTO1E7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7O1c7Vzs7Ozs7Ozs7cUI7OztVO2lCO087Ozs7ZTs7O0c7O0k7OztJO0k7Ozs7UTs7O2dCOzs7Rzs7SSxvQjtJLE87Rzs7O0ssWTtLO0k7SSxXO0ksTztHOztJO0ksWTs7STs7Rzs7O0k7Ozs7STs7SztJO0k7SztLLDJCLDRDO0ksTzs7O0k7STtJOzs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O2lDO08sbUI7Ozs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTsrQixvQixXO08sRzs7Ozs7Ozs7K0I7NkI7TztROzs7VztXLG9CO1csVztVO1EsTTtRLFM7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1c7VztVO08sTzs7TTs7OztPOzs7Ozs7SyxnQyxPO0ssb0I7SyxXO0k7SSwyQjtHOzs7SSxnQjs7Szs7Ozs7Ozs7Ozs7Ozs7OztRLEc7UztVLE87VSxjO1U7Ozs7Ozs7Ozs7Ozs7Uzs7aUI7Ozs7Ozs7OztvQjtROzs7OztLOztJO0k7Rzs7O0k7Ozs7OztPLFU7VTtRO1M7VSxPOzs7YTthLFc7WTtVLGlCO1M7VSxNO1M7Ozs4Qiw4QztVLG1COzs7YTs7YyxVO2MsTzthO2EsTztZO1UsUTs7O2EsVztZO1UsVTs4QjtVLFM7Z0MsNEM7VSxpQjs7O2E7YTtZO1UsTTtVOzs7YTtTOzs7OztVOzs7Ozs7OztJOztHOzs7STtLOzs7TSxNOzs7UyxvQixNO1MsTztRO2E7OztvQiw2QjtJLFk7SSxrQjtJLFU7STs7WTs7Rzs0QztHOztJOzs7Ozs7SSxZOzs7SztNLHlCOztJO0c7O0k7STtLOzs7UyxvQjs7OztnQzs7c0U7OztTLE07UTtNLFM7OztTOzs7OztVO1UsUTtTOztNO1E7SyxzQiwwQjs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STtHOztJO0ksZTtHOztJO2M7Yzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGlCOzs7O007Ozs7O08sTztPLE87VTtPOzs7Z0I7Ozs7Ozs7STtHOzs7STs7O0ksTztHO3lCLHNDOzRCLE8saUM7O0ksYyxXO3VCLGdCO0ksa0I7SSxPO0c7O0k7Ozs7eUI7SSxlO0c7OztLOzs7TTs7Szs7Ozt3Qjs7STtJLE87Rzs7OztLO0s7STtJOzs7OzthOzs7STs7OzsyQjs7NkI7O0ksTztHOzs7STtJOzs7O1E7O1MsYTtTOztROzs7Ozs7a0I7Ozs7OztRO1MsTTtTLFc7UTs7Ozs7bUI7O1E7O1MsTTtTLHFCOzs7O1k7Ozs7YTs7O2U7O2dCOzs7Ozs7O29DLGtCOzs7O2U7Ozs7O2dCOzs7Ozs7O2U7O1k7VztTLFU7Ozs7OztZO1k7O1c7UyxhO1EsRztTO1U7OztTOzs0Qjs7UTs7Ozs7Z0I7OztROzs7Ozs7OztvQjs7OztROzs7OztTOzs7OzthOzs7Ozs7OztZO2E7YSxPO2E7WTs7Ozs7cUI7Ozs7Ozs7Ozs7Vzs7O1M7Ozs7Ozs7OztROztROzs7Uzs7Ozs7UTs7Z0I7OztROzs7OztTOzs7OzthOzs7Ozs7UTs7Z0I7Ozs7Ozs7O0c7O0ksYzs7OztLOzs7aUI7Ozs7STs7O2dCOzs7Rzs7SSxZLE07O0ksTzs7cUQ7OztJO0k7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7Uzs7OztZOzs7OzthOzs7ZTs7OztnQjs7Z0I7OzttQjttQjtvQjtxQjs7O2dDO3FCOzs7OztvQzs7b0I7Ozs7MkM7OztrQjtnQjs7Ozs7OztxQjs7Ozs7Ozs7ZTs7ZTs7OztnQjtlOzs7O2dCOztpQixXO2lCO21CO2dDOzs7aUI7OzRCO2tCO21CLE87bUIsTTs7Ozs7Ozt1Qjs7Ozs7OztnQjs7O3dCOztnQjs7O3dCOzs7OztlOztnQjs7O21CO2dDO2U7Ozs7OEI7Ozs7O2U7O1k7VztTLFU7Ozs7O1M7O1M7c0MsNkI7UyxRO1MsTTtTLFE7Ozs7VTtXOztjO2M7Ozs7OzRCOzs7a0I7Ozs7Ozs7UyxJLE0sZ0M7Ozs7VTtXO2lDO1c7OytCOzs7O1M7VSxPOzs7YTthO2E7WTtVLE87O2dDO1U7Ozs7K0I7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7OztZLFc7VztTLGE7UyxnQjs7O1M7OztROzs7Ozs7Ozs7O1E7Ozs7Ozs7OztTLEs7VSxNO1M7VSxNO1UsTTs7Ozs7YTthOzs7Ozs7WTtVLFk7OzthO2E7Ozs7OztZO1UsWTtVO1U7O1UsK0I7VSxPO1M7Ozs7Ozs2Qjs7Ozs7O1k7Ozs7Ozs7Ozs7VztRLFM7UTtTOzs7O29COzs7O1E7Ozs7dUI7Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OztjO2MsTzs7YTs7SSxpQixTO0k7Rzs7STtJOzs7Ozs7UzttQjtXLE07Ozs7O1csTTs7O1E7UyxTO1MsVztROztRLE07O1E7Ozs7Uzs7Ozs7O1k7YTthLE87YTtZOzs7OztxQjs7Ozs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007OztTLFc7O1M7Ozs7VTs7VyxLOzhCLFcsK0I7VSxPOzs7OztNOzs7O1U7O1csSTtXLE87VTs7eUI7MEI7Ozs7Ozs7OztvQzs7Ozs7Ozs7OztPOzs7O00sa0I7Ozs7Ozs7Ozs7Ozs7O2EsRztjOzs2Qzs7Ozs7Ozs7Ozs7OzthLEc7Yzs7Ozs7Ozs7O1csRztZOzs7OztNLE07SztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjtxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VSxJOzs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0ksb0I7SSxPO0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztNOztPOzs2QixtQjtrQjs7Ozs7O0s7TSxPO00sTztNOztLO007Ozs7Ozs7YSxROztZO1MsTzs7Ozs7Ozs7OzthO3FCOztZO1MsTzs7Ozs7O2E7cUI7O1k7UyxPOzs7aUI7OzsrQjs7Ozs7O21COzs7O1M7aUI7O2M7O0s7SztLO00sTztNLE87O0s7TTtRO00sTztNLE87b0I7SyxJLHFCOztNO007TSxPO0s7SyxPO0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTs7SyxXO0ssTyx5QjtJO0k7SyxjO0ssTztLLFU7O0s7TSxTO00sTztLO00sTTs7SztJO0k7O0s7Szs7Ozt3Qjs7STs7SztLOzs7Ozs7Ozs7OztxQjs7Ozs7O0s7TTs7O00sSzt5QixXLGdDO0ssRztNO087d0I7O007O087Ozs7O087Ozs7YTs7Ozs7Ozs7Ozs7O0s7OztLO0s7Ozs7Ozs7Ozs7O0k7SyxTO0ssUzs7Ozs7Ozs7O0s7TTs7MEIsZTtzQjs7OztLO007OzBCLGU7OzJCO0ksVzs7SztLO0k7SSxnQjs7SztLOzs7O3dCOztJOztLLHFCLE87SyxPO0k7SSxnQjs7SztLO0k7SSxlOztLO0k7STtLO007TTs7OztZOzs7Ozs7O0s7TTs7OztNO21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Szs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7O2E7OztJO0c7O0k7Rzs7OztJLE87Ozs7SSx1Qjs7SSxXO0c7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7STs7SztNO00sTTtLO0k7SSxPO0c7O0ksOEI7Ozs7Ozs7OztZO1c7Vzs7WTs7Vzs7dUI7VztVO08sTzs7Tzs7O1EsUTtRO1E7UTs7OztROzs7Uzs7O1UsVTtVO1U7VTs7Ozs7Ozs7O1c7O1k7WTs7Ozs7Ozs7a0I7Ozs7O1c7OztvQjs7Ozs7VTtPLE87Ozs7Ozs7TyxPOztPOzs7O1EsTTsrQix1QztPLE87O0c7O0ksSSxLLDZCOztLOzs7Ozs7SyxLLGlDO0s7TSxPO00sTztNLE87Szs7Ozs7d0M7OztJO0k7SyxROzs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLOzs7Z0I7Ozs7aUI7OztnQjtlO2EsUzthLE87OztnQjs0RDtnQjs7aUI7OztnQjtlO1ksVzs7Ozs7Ozs7OztZOzs7YTtZOzs7OztnQzs7O007OztJLE87RztHOztJOzs7Szs7OztJO0c7RztJLFc7STs7OztLOzs7Ozs7VSxZOzs7O2E7O2EsTTs7O2EsTTs7O1M7OztVO1U7c0I7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7OztnQzs7O21CLEs7Z0M7Ozs7Z0I7O2U7ZSxNOzs7O2UsTTs7OztjOzs7O2UsUTs7Ozs7O2MsTTs7Ozs7ZTs7O2dCOztvQjtlOztjOzs7ZSxROzs7OztjOzs7O2UsUTs7Ozs7YyxxQjtjLFc7Ozs7UztNO087UTs7USxROzs7O21CO1E7Ozs7Ozs7O21COzs7Ozs7Ozs7Ozs7O007TyxRO087OztLLFc7SztJO0ksaUI7eUIsbUIsVTtJO0ssTztLLEs7eUIsb0IsVztJO0ssTztLLE07eUIscUIsWTtJO0ssTztLLE87eUIsb0IsVztJO0ssTztLLE07SyxLO0s7SyxTO0s7O0s7O007Ozs7VTs7VyxNO1Usa0I7O1csTTs7VTtTOzs7TTtPOzs7Ozs7VTtVLE07Ozs7Ozs7UyxJOzs7O08sTTs7O2lCOzs7O0s7TTtNLEksNkI7Ozs7UTs7O1M7O1U7UyxHO1U7Ozs7UTs7Ozs7O0s7O007TTs7Ozs7Ozs7Ozs7OztLO0s7STtJLEksNkI7Ozs7TTs7TyxNO2tCO007Ozs7Ozs7SztLOzs7Ozs7UTs7Ozs7O1M7UTs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7OztJOztLO0s7Ozs7OztROzs7OztPOzs7O0k7O0s7SztvQjs7Ozs7UTs7Ozs7UztROzs7a0I7Ozs7Ozs7Ozs7Ozs7O0k7STtHOzt5QixtQixhO0ksVTs7Szs7Ozs7O0s7O2E7STtJLGdCO0c7O0k7STtLLHNCLE87SztLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRO1M7OztZOzs7Ozs7WTthOzthOzs7YyxxQjs7Ozs7Ozs7Ozs7Ozs7YSxZOzs7Ozs7Ozs7ZTtnQixPOzs7Ozs0QjthOztnQjs7YyxNO2lDO2E7O2M7Ozs7Ozs7WSxPO2EsTTtZOzs7O2E7Ozs7OztjLFU7YztjO2M7YTtZO1k7YTtlOzs7WTs7Ozs7Ozs7VztRLE87O1E7Ozs7UyxVOzs7UztTOzs7Ozs7Ozs7O1M7MEI7USxPOztROzs7Uzs7Ozs7O1E7bUM7OztHOzs7STs7Ozs7Ozs7O087USxTO1EsTzs0QixlOzswQjs7Tzs7O1EsTztRLEk7UTs7Vzs7O1U7USxROzs7VztXO1k7Ozs7O2EsTztZLE87O1c7VTtRLGlCOzs7VztXLFc7VTtRLGdCO1EsVTtROzs7Ozs7Ozs7Ozs7Ozs7O007O0sseUM7OztROztTOzs7O1EsZ0I7O1E7OztTO1c7UyxPO1MsYTtTOzs7OztRLFc7OztROzs7Ozs7UTs7Uzs4QixjO1MsTTtTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VSxzQjtVOzs0QjtVO1k7Ozs7O1M7VTs7OztTO1U7Ozs7O29COzs7Uzs7O1U7Ozs7Yzs7OztTOztrQjs7Ozs7OztRLEksYyxPO1E7USxxQixPO1E7Ozs7UTs7NkIsYTtTLE87UyxlO1M7Ozs7O1M7Ozs7YyxTO2M7O2U7ZTs7bUI7ZTtjOzs7dUI7Ozs7YTs7O1E7O1EsbUIsTzs7UTtTLFE7UyxNOzs7WTs7O1k7OzthOzs7WTs7Ozs7Ozs7c0I7Ozs7Uzs7O1E7Ozs7UTs7Uzs7O1M7Ozs7YTs7Ozs7OztROztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJO0k7Szs7Ozs7b0I7Ozs7SztJO0k7OztLLGdCLHdDO0ssTztJO0k7SyxPOzs7SyxrQjtJO0k7SyxXO0ssTztLLGE7STtJO0k7Rzs7O0k7O0k7STtLLFk7SyxTOztLO0k7STtLLFE7OztJOzs7STs7O0s7SztJOzs7STtJO21CO0sseUM7Ozs7O1E7O1M7UyxPO1EsTzs7Ozs7O1E7O1M7OzhCLGM7UyxPO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTOzZCLGE7UyxPO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7Z0MsbUIsYTtTLE87USxPOzs7O1E7O1M7UyxPO1EsTzs7OztHOztJO0k7bUI7Syx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxJLHlCO1MsTzs7Ozs7Ozs7O1EsbUI7NkI7USx3QjtRLE87Ozs7Ozs7Ozs7VTs7VztXO1UsTzs7Ozs7Ozs7Rzs7STtJO21CO0sseUM7Ozs7O1E7O1M7UyxPO1EsTzs7Ozs7O1E7O1M7OzhCLGM7UyxPO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTOzZCLGE7UyxPO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO2dDLG1CLGE7UyxPO1EsTzs7Ozs7Ozs7VTs7O1c7VztXLE87VyxPO1UsTzs7O1EsSSx3QixPO1EsTzs7OztHO0c7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRO1MsTzs7OzJDLFc7USxPOzs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VztnQyxjO1csUTtXO1c7O1c7OztVO2tCOzs7VTs7O1c7VyxNO1csUTtXOzs7VztVOzs7OzttQjs7Ozs7Ozs7OztlOzs7O2dCLE87ZTtlO2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7b0MsZTtnQjsyQjtlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFE7Vzs7O1c7VTs7O29CO3FCOztzQjs7OzBCOzs7b0IsTzttQjs7Ozs7O1c7O1k7O1ksUTtZO1ksUTtZLE87WTs7O2U7OztlOzs7Z0I7Z0I7ZTs7Ozs7OztZO1c7O21COztVLFc7O1U7VyxRO1csTTtXLFE7OztjOzs7Yzs7O2U7Yzs7Ozs7OztXO1c7VTs7OztrQjs7O1U7O1c7OztXO1c7OztVO2tCOzs7Ozs7Ozs7YTs7Ozs7O2MsTzthO2E7YztjO2M7O2tCO2MsUzs7O2lCOzttQjs7Ozs7b0I7b0I7O21DOztvQjttQjs7OzsyQjs7Ozs7Ozs7Ozs7aUIsTTs7Z0I7YTs7OztVO1csUTtXO1csUTtXOzs7Yzs7O2M7OztlO2U7OzhCOztjOzs7Ozs7O3VCOzs7VztXO1U7Ozs7a0I7Ozs7Ozs7TTtPO1EsUTs7O1E7UTs7Ozs7Tzs7Ozs7TztRLE87USxPO08sTzs7Szs7TSxvQjtNLE87Szs7TTtPO1EsUTs7Ozs7O1c7Ozs7Ozs7UyxNOzs7Tzs7Ozs7USxNOzs7Szs7TSwwQjtNLE87Szs7O007Ozs7OztpQjs7Ozs7O007Ozs7O08sVztPO007Ozs7O0s7TSxVOztNO0ssTztJO0ksTzs7O0k7SyxPO0ssUztJO0c7O0ksc0M7O0k7SyxlO0ssUztLOzs7O0k7O0c7SSxnQjtJO0k7OztJLDhCLE87d0I7O0c7O0ksSSxXLDhDOzs7NEIsTzs7O0c7O0k7STs7Ozs7Ozs7Ozs7RztvQyxxQzs7STtJOztJOztNOzs7Tzs7Ozs7Ozs7Ozs7OztVOztXLFM7VyxNOzthOzs7OztVOzs7O1U7O1c7Z0MsYztXLFc7VTtVO1csTzs7Ozs7VTtVO1csTzs7Ozs7Ozs7WTtZO2E7O2lCOzs7Ozs7Ozs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFc7VyxPOzs7OztnQixTOztnQjt5Qjs7OztlOzs7OztVLG1CLE87O1U7VyxNO1csTTs7O2MsWTtjOzs7ZTtjOzs7O1c7Ozs7VTs7Vzs7O1U7Ozs7O2M7OztVOztXLFE7VztXLFE7OztjLFk7Yzs7O2U7Yzs7OztXOzs7OztrQjs7TTtLO0s7WTtNLE07O007TTs7Ozs7Ozs7Ozs7Ozs7OztLO0ssTzs7SSxPO0c7O0ksWTs7STtHOztJO2dCOzs7TSxNO2lDOztJOzs7Ozs7OztlOztHOztJOzs7O1E7O0k7Ozs7Rzs7STtLLFU7Syw4QjtLLFk7STs7Szs7TTs7O1c7Ozs7VTs7O0ssVzs7O0ssTTtJOztLOzs7UTs7SyxNO0s7Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTtNLE07TSxVO0ssTztJO0k7O087O087O087ZTs7OztJLFksTztJOztLLFU7SSxPOzs7O0ksdUI7O0k7RztHOztJOzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7O0k7OztPLEc7USxNO087O087Ozs7Ozs7USxzQjtRLE87Tzs7TyxXO08sRztRLE07Tzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOztPOzs7UTs7O1c7VztVO08sVzs7Ozs7Ozs7Ozs7O2MsRyxnQzs7Ozs7Ozs7Ozs7Ozs7ZSxHO2dCOzs7Ozs7Ozs7Ozs7YSxHO2M7Ozs7O087OztRLHNCO08sYzs7Tzs7Ozs7USxzQjtRLE87Ozs7VztXO1U7USxPOzs7OztXO1c7VTtRLE87UTtPOztPOzs7OztRLHNCO1EsTzs7O1c7VztVO1EsTztPOztPOzs7USxzQjtPLGU7O087Ozs7UTtPOztPOzs7O1E7Tzs7Tzs7OztRO1E7Tzs7TyxrQztPOztPLGtDO087O087Ozs7OztRO1E7Tzs7O087O087Ozs7OztRLHNCO1EsTztRO087O29DOzs7TztlOzs7OztJO0ssVztZOzs7Ozs7OztTOztVLE87WSw2QztrQyxnQjtTLFc7Ozs7Ozs7Uzs7VSxPO2dCOzs7Ozs7O0k7Ozs7SztLO0k7SSxPO0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7Ozs7Ozs7Ozs7Ozs7O1k7WTtXO1E7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7O1E7a0Q7OztRO2tEOztROztTLHNCO1EsTzs7O1E7Ozs7WTtZO1c7UTtRLDBCO1EsTzs7O1EsTzs7O1E7Ozs7O1E7Ozs7O1E7UTs7Ozs7UTs7Ozs7UTs7Ozs7UTtROzs7Ozs7OztRO1E7USxPOzs7OztLOzs7Rzs7cUIsZ0Msa0I7SSxPO0c7O0ksb0I7SSxPO0c7Ozs7Szs7Ozs7O1E7VSwwQjs7VztnQjtTO1U7OztTOzs7OzttQixNO0ssUzs7TSxtQixPO00sUyxNO007SztLO0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SzswQixrQix5QjtLO00sTztNO3lCO0s7TSxPO00sZTtNLFU7OztNLE87SztLO00sUTtNLFM7dUIsa0I7Szs7Ozs7VTs7Ozs7Szs7STtLO007Ozs7TTs7OztLOzs7OztNOzs7OztHOzhCO0c7STs7O0k7SyxRO0ssWTtLLFc7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7OztVO1c7Ozs7Vzs7Ozs7O1MsTzs7Ozs7UTtRLE87Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7Ozs7OztLLE87STsyQiw0Qjs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7O00sa0M7TTtLO0ssTztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1M7O1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7NEIsa0IsMkI7Uzs7OztTOztVLHNCO1MsTzs7Ozs7VTs7VyxVO1csVTs7VztXOzs7O1csTTtVOztTOzs7OzRCLGtCLDJCO1M7Ozs7NEIsa0IsMkI7UyxPOzs7Uzs7OzRCLGtCLDJCO1M7aUI7OztVOzs7Ozs7OztTO1MsMEI7UyxPOzs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7OztTOzs7O1U7VSxzQjtTLE87Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7OztVLHNCO1UsTztTOzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1U7Uzs7Uzs7Ozs7VTtTOztTOzs7VTs7O2E7YTtZO1MsVzs7Uzs7OztVLHNCO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTs7OzthO2E7WTtVLGE7Ozs7YTthO1k7VSxhOztVLHNCO1UsVztTOzs7OztTOzs7OztVLHNCO1UsTzs7O2E7YTtZO1UsTztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VSxzQjtVLE87UztVO1csVTs7Ozs7YztjLFc7YTtXLEs7Ozs7YztjLE87YTtXLE07VyxPOzs7YztjO2E7VyxPO1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1Usc0I7VSxPO1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7VTtVLG9CO1UsTztTO1M7O1U7Vzt5Qjs7Ozs7OztTOzs7Ozs7Ozs7Ozs7VTtXO1c7Ozs7Uzs7Ozs7Ozs7O1M7Ozs7Ozs7aUMsa0Isd0I7Uzs7OztTOztVLHNCO1MsTzs7Ozs7VTs7VyxVO1csVTs7VztXOzs7O1csTTtVOztTOzs7aUMsa0Isd0I7Uzs7O2lDLGtCLHdCO1MsTzs7O1M7O29DLGtCLHNCO1M7aUI7OzZCOzs7O1M7O1Usc0I7UyxPOzs7Uzs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7OztTOzs7O1U7VSxzQjtTLE87Ozs7Ozs7Ozs7OztJO0ksYztJO0s7O00sZSw2Qjs7SztJO0k7Szs7TSxlLDZCOztLO0k7O0s7Szs7OztTLEksVSwyQzs7O2dDOzs7Ozs7O1U7Ozs7O1csTTtVO1M7Uzs7VTtXO3VCO1c7O1k7Ozs7O1M7O1M7Ozs7Ozs7O1U7Ozs7Ozs7Ozs7O1k7YSxNO2EsTTtnQjthOzs7c0I7Ozs7Ozs7O1M7Ozs7O1U7VztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YztjLEksMkI7Yzs7Ozs7Ozs7O2lCLE07Ozs7O2U7OztlOzs7OztnQjs7Ozs7O1k7Ozs7O2E7WTs7WTs7Ozs7YTs7O2M7Yzs7OzthO2E7Ozs7Ozs7YTthOzs7Ozs7Uzs7Ozs7VTtTOztTOzs7VTs7O2E7YTtZO1MsVzs7O1MsYzs7Uzs7OztVOzs7O2E7YTtZO1UsYTs7OzthO2E7WTtVLGE7VSxXO1M7Ozs7O1M7Ozs7O1UsTTs7O2E7YTtZO1UsTTtTOzs7UyxlOztTOzs7Ozs7VTtTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7OztVLG1CO1U7OztTO1U7VTs7Ozs7UyxrQztTOztTOzs7Ozs7VTtVO1M7O3lDOztTOzs7Ozs7VSxNO1U7Uzs7d0M7OztTLHlCOzs7aUI7O0k7STtLO0s7SyxhO0ksUTtJO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztJO0k7OztJLHVCOzs7Rzs7SSxVOzs7OztHOztJLFU7O0s7SztLLE87STtJO0ksVTtJO0k7OztHO0c7Ozs7SSxrQjtJO0k7SyxlO0s7TywyQjtJLEc7SyxNO0k7O0k7Ozs7TTtPLE87TyxNOztNOzs7Ozs7Rzt1QixvRDs7STs7ZTttQjs7OztpQixNOztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7K0IsMkM7STtLLE07ZTthO0c7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OztJLG1COztJLE87RztHLEksc0I7O0ksaUI7O0c7O0k7b0IsVyxxQztxQjs7Rzs7SSxHO0ssTztJOzs7TztTO0s7O1E7O0ssTzs7STtHOztJO0ssVztLO007TyxhO087UztZOzs7Ozs7Ozs7SztnQjs7OztPLEksWTs7OztROztTLE07UyxNO2U7Ozs7OztPLFk7Ozs7UTs7UyxNO1MsTTtTLE07ZTs7Ozs7Ozs7Ozs7SSxPO0c7O0k7Ozs7Rzs7STs7aUI7Ozs7TSxHLHVDO00sSTs7O007OztPLE87TTs7bUM7Tzs7TSxJOzs7RztHOztJOztJLGlCOztJLE07Rzs7STtJO0s7TSxNO00sSztLOzs7cUI7Ozs7OztNOzs7Ozs7OztHOztJLEksUTs7OzJCOzs7SSxPO0c7O0k7O0s7cUI7O0c7O0k7SztLLE07SyxNO0s7cUI7STtLLE07SyxNO3NCLGdCO3FCOzs7O0c7O0k7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7MkIscUM7O0s7NEI7SztJOztLOztLO0k7STs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJO0c7O0ksSSx5RDs7OztNLE07NkI7OztHOztJO0c7Rzs7STtJO0c7O0ksSSx5RDs7Ozs7Ozs7O1E7O00sWTtrQixNOztvQjtNLHVCO007TTs7Szs7Rzs7STttQjs7STtHOztJO0ssTzs7O0s7SztJO0k7STtHOztJO0s7SyxJOztLOzs7O007TTtNO007Ozs7O0ksTztHOztJO0ksTztHOztJLEksMEQ7Ozs7TTtNO007Ozs7O0k7STtJLG9DOzs7O007TTtNOzs7OztJO0k7SSxvQzs7OztNO007TTs7Ozs7SSxPO0c7O0k7O0ssSSxJLE87Ozs7ZTs7SztNO007Ozs7Ozs7O0k7STs7SyxTOztNLEksUSxlOzs7K0I7OztLO0s7TTtNLDJCLE8sMkI7SyxPO0k7Ozs7SyxPO0ksZTs7Szs7O1E7VTtNLE07SztJO0k7SztLLDJCLE8sK0I7SSxPO0c7O0k7STtJOztHOzs7Szs7O1E7OztTOztROzs7UTs7O1E7OztROztJO0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCO1E7OztXO1c7OztVO087Tzs7Tzs7UTtVLCtCOzs7VyxPLCtCO1U7TztPO21DOztHOztJLEksTyx1Qzs7SyxxQztLO0s7STtJOztJO0c7O0k7RzttQyx1Qjs7STtPO0s7SSxJLE8seUI7O0sscUM7SztLO0k7STs7O0c7O0k7SztNO08sVztPOzt5QixPLDRDO3lCLE8sNEM7MEIsTzs7Ozs7O00sUztNO007NkIsTywyQjtPLE07a0I7O3VCO0ssWTs7Szs7O00sUTtNO1E7OztLLEksSSxNOzs7Ozs7SztLLEksSSxNOzs7Ozs7SztLOzs7Ozs7SyxPOztHO29DLDhCOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7STs7Szt3Qjs7SztJO0ksTztHOztJOztLO3dCOztLO0k7SSxPO0c7O0k7O0s7d0I7Szs7TSxVOzs7TSxNOzZCO0s7STtJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7SSxJLDJCOztLO00sTTtNOzt3Qjs7O0k7STtJO0c7O0k7Rzs7STtHOzs7STs7eUIsTzs7O08sTzs7O08sTzs7O08sTzs7OztJLHVCOztJLFc7RztHOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksa0I7SSxPO0c7O0ksd0I7RztpQyx1Qzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUzs7SztNO00sUywyQjtLLEs7TSxNO0ssVTs7SyxPO0k7STtLO0s7OztTOztRO0ksTztHOztJLFM7STtJLFU7STtLO007TSxTO00sTTtNLE07TSxPO2lCO0s7O007TSxNOztZO00sTTtLLFM7SztNO08sTTs7Ozs7Ozs7SztLLEssNkM7SztLLE07O0ksVztJO0c7O0k7STtlO0k7OztrQixXO0ssUSxXO0k7STtHOztJO0k7ZTtJOzs7a0IsVztLLFEsVztJO0k7Rzs7STs7O0c7Rzs7O0ksUztJO0s7ZTtLLEc7OztNLFU7TSxHLGtCO08sTTs7Ozs7Ozs7OztXOzs7O0k7Rzs7SSxjLCtCO0c7O0k7SztLOzs7STs7TSxVOzs7TyxVO087O00sVTsrQjs7OztNO00sYTtNOzs7NkIsTyw4QjtlOzs7OztLO0ssTTs7STt3QixvRDtJLE87Rzs7STs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7STtJOzs7TTtLO0ssTyxXO0k7STtLO0ssMEIsc0M7SSxPO0c7O0k7SSxrQjtJO0c7O0k7SSxrQjtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7OztJLE87Rzs7STtJO0k7STtJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJO0ksTTtHOztJO0ksTTtHOztJLFk7O0k7Rzs7SSxZOztJO0c7RztJO0k7STtJO0k7STtJO0k7STs7STtLLEc7TSxNO2E7TSxNO0ssZ0Q7Ozs7TyxZOzs7O1M7Ozs7Ozs7Ozs7O1E7Ozs7O08sTTs7O0s7Szs7Ozs0Qjs7O0c7O0k7ZTtJLFc7SSxPO0c7O0ksZTtJO0s7TSxNO00sTzs7Ozs7Ozs7SSxhO0k7STtHO0c7O0ksTzs7Rzs7STs7O08sTTs7Ozs7Szt5QixPLDhCO00sTztLOzs7OztLLDBCO0ssTzs7Rzs7SSxnQjs7SywwQjtLLE87O0c7O0kscUM7eUM7SSxvQjtJO0k7Rzs7STtLLFM7SyxPO0ssUTtrQyxPO0ksVztJLG9CO0k7STtHO0c7O0k7SyxPO0ssTztJLE8sVztHOzs7SywrQixTO0k7O0ssK0IsYTtJOzs7Ozs7Ozs7OzswQjs7OztVOztVOztVOztVOztTOzswQjs7Ozs7VTs7Uzs7UTs7Ozs7Uzs7Uzs7O1U7O1M7Ozs7Uzs7VTs7O1UsTzs7Ozs7O1E7OztRO1MseUIsUztTO1M7b0I7USxxQjs7OztRLDBCO1EsTzs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7OztTOztTOzs7USxvQjs7O1MsMEI7UyxPOzs7O007TyxRO087Ozs7Ozs7TyxjOzs7Ozs7Tzs7USxzQjtPLE87Ozs7O1EsTzs7Ozs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOztTLGM7dUI7Uzs7VSxPO1Usc0I7UyxPOzs7UyxPOzs7Ozs7OztTOztTOztTOztTLGM7Ozs7OztTOztVLHNCO1MsTzs7O1M7Ozs7Ozs7Ozs7OzswQztTOztVLE87VSxPOzs7Ozs7OztTOzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs7USxPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7O1E7Ozs7SSxlO2U7O0ksb0I7SSxPO0c7O0k7Ozs7STs7Tzs7SSxHO0ssSSxTOztNOztPLE87TyxXO08sTztNLFc7TSxNOztLO00sTTs7OztLO007TztROztXOztXO1U7USxPOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7d0IscUQ7aUI7O0s7O007OztTLGM7Uzs7VSxhO1UsWTtTLE87O2lCOztLO0s7STtJO0k7SyxRO0ssRzs7O087OztRLFE7Ozs7Ozs7OztxQjs7O1M7VSxPO2lCOzs7OztPOzs7Ozs7VSxJLGM7Ozs7WSxNOzs7cUI7Ozs7VTtXLEk7O1c7WTs7Ozs7O1U7VyxNOzs7Ozs7O087USxNOztPO1EsTztRLE87Ozs7Ozs7O087Ozs7Ozs7Ozs7O1U7VTtTO007Ozs7Ozs7SSxXOztJLFc7OztHOztJO0k7SyxNO0ssTTtJLE87RztHOztJO0s7SyxNO0ssTTtJLE87RztHOztJOztHOztJOztLOztPO1k7TSxHO00sRzs7Ozs7O0k7RzsyQiw0QjsyQiw0Qjs7STs7O0s7OzRCLDRCO00sTTtZO007Ozs7Ozs7O1MsbUI7O1MsTztRO1k7OztJLFE7SSxVO0k7Ozs7Ozs7O007TTtNO007O08sVTs7O0s7Szs7OEI7OztRO1E7UTs7O1M7O1UsVTs7Ozs7Ozs7O1E7Ozs7Ozs7aUI7UyxNOzs7OztROztVO2U7O1c7Uzs7VztnQjtVOzs7ZTs7OztVLGM7Ozs7Vzs7VTs7YTtVLE07Ozs7Ozs7OztROztTLE07Ozs7UTs7UyxNOzs7OztJOzs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7O0k7STtLO1k7Szs7Ozs7TTs7TyxZO08sTSxXO08sTTtPLFk7TTtNLE07OztLOztNLE0sVztNLFksVztNLFc7SztLLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzt5QixTO0ksaUI7STs7OztHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7Rzs7RztJOztHO0c7STs7RztHO0k7O0c7RztJOztHO0c7STs7O0k7OztZO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Ozs7STtLLE07O0k7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt5QixvRDs7STtHO3VCLGtEO3VCLGtEOztJO0c7dUIsa0Q7d0IsbUQ7eUIsb0Q7eUIsb0Q7O0k7Rzs7STtHO3lCLG9EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7a0IsMEQ7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O0ssYTs7Ozs7Ozs7Ozs7Ozs7OztLO007O1MsTTs7UTs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7O0ssc0Q7O007OztpQyxpQzs7bUM7TTtPO2tCOztNO2tDLFcsYztNOzs7Uyx1QixrQixpQjs7O1M7O2tCO2tCLHVCO2lCOzs7UywyQixZLGlCOzs7UywyQixZLGlCOzs7Uzs2QixvQiwwQjs7O1MsdUIsWSwwQjs7O1M7O2tCO2tCLHVCO2lCOzs7Uzs7a0I7a0IsdUI7aUI7OztTOztrQjtrQix1QjtpQjs7O1M7O2tCO2tCLHVCO2lCOzs7cUI7Uzs7O1U7VSxzQjtVLE87Uzs7O1M7OzZCLG9CLDBCOzs7Uzs7a0I7MkQ7a0I7aUI7OztTOztrQjtrQjtrQixPO2lCO29DOztLO0s7STtJLE87RzswQixtQjs0QixtQjs7Ryx1QjtHLEk7RywwQjtHO0cseUI7RztHLHNCO0c7Ryw2QjtHO0csNEI7RztHLDRCO0c7RywyQjtHO0csaUM7RztHLGtDO0c7RyxnQztHO0csd0I7RztHLHdCO0c7Ryx3QjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDJCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2QjtHO0csNkI7O0k7SyxPO0ssTztJLE8sVztHOzttQixvRDtHO0ksUTtJO0csdUI7RztHLDBCO0c7RywwQjtHO0csdUI7RztHLDBCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCO0c7Ryx3Qjs0QixPLGtDOztJLE87O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7RzttQyw2Qjs7RywwQjtHO0csNkI7RztHLHVCO0c7RyxtQztHO0csOEM7RztHLHlDOztJO0k7SSxPO0c7O0k7STtJO0ksTztHOztHLHVDO3NCLGtDOztHLDhCO3FDLDhCOztHLHVCOztHLGlCO0c7RyxxQjtHLEk7Ryx3QjtHO0csaUI7a0Isa0M7O0ksZTtJLE87RztxQixrRDs7NEIsdUM7NEIsaUM7O0csOEI7d0Isa0M7O0csaUI7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7RztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csd0I7RztHLDRCO3lCLFM7O0k7SSxNO0c7O0k7SSxNO0c7O0csc0I7OEIsOEI7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOztHLDBCOztJLE87RzswQixtRDtxQixPLGlEO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOztHLHdCOztJLE87Rzs7Ryx5QjtHOzJCO0csSTtHLHlCO0c7RyxzQjtHO0csMEI7RztHLHdCOztJLGU7SSxPO0c7O0ksVzs7O0c7O0k7Ozs7Rzs7Ryw4Qjs7STs7OztHOztJOzs7Rzs7STs7O0c7eUIsNkI7MkIsNkI7dUIsTyxxQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7O0ssTTtLLE07SyxTO0ssTTtLLFc7SyxNO0ssZTtJO0ksTztHOztJO0k7STs7SyxNOzs7SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJO0k7Rzs7STtLO00sTTtNLEs7TSxXOzs7UztTLE87UTs7OztLO00sb0I7Ozt3QixPLDBCO0ksTztHOzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixnQztHOytCLGdDOztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87MkIsTyxxQztNLFE7TSxRO00sTzsyQixPLG1DO00sUzs7SztrQixNOzs7Ozs7Ozs7OztROztTO1MsRztTLEc7UyxJOzs7Ozs7Ozs7O0s7O007UTs7VztNLFc7TSxXO00sVztNOzs7UyxPLHFCO1E7TSxhO007OztTLE8scUI7UTtNLFk7Szs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O087UTs7d0I7TTs7Ozs7TyxPO2tCOztLOzs7OzRCOzs7OztJO0ssRzs7OzswQix5QjtjOzs7OztJLEs7SyxPOztJOztLLFU7TSxJOztNLEk7O0k7SztPOzs7STs7TSxPO0ssVTtNO007TSxJOzs7TSwwQjtNLEk7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0ssaUI7SztNO087Uzs7TyxPOzs7O1U7VyxTO1csTztVO1UsVTtVLE87UztPLGE7TyxJO007TTs7OztNO00sTTs7Szs7OztLOztNO007OztLLFM7SztNOztNLGE7TTtNO087O1E7UyxZOzs7Ozs7Ozs7Ozs7Ozs7OzthO2MsYzs7Yzs7Ozs7Ozs7Ozs7Ozs7YTs7YyxPOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7TTtNOzs7Szs7Rzs7Ozs7Ozs7SztLOzs7O1M7O1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiw0Qjs7UTtLO0ssTzs7O0s7TSxhOztNLDRCOztRO00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXOzs7SyxPLHFCO0k7SSxHOzs7OztLOztNOzs7O0ksMEI7STtLO087Ozs7SyxXO0s7Tzs7OztLLFc7SztPOzs7TSxXO007ZTs7Ozs7Ozs7O0k7SyxjLGUsd0IsUztLO00sTztNLE87SyxPO0k7Ozs7Ozs7OztHOztJOzs7Ozs7Rzs7STs7STs7SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOzs7Szs7O00sSTtLLEc7TTtPLE87Tyw0QjtNLE87O0ssVztLLE87STtJLE87Rzs7RztJOzs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0s7TSxPO00sTztNLFU7SyxHO007YztNOztLLFM7O007TyxPO08sNEI7OztVLFc7VSxPO1M7TTs7SztNLE87TSxPOztNOzs7OztLOzs7O0s7TTs7O1M7OztLO007OztTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7STtLOzJCOztJOztJO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkI7Ozs7Ozs7MEIsa0M7Ozs7Ozs7MEIsNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7NkI7Ozs7Ozs7NkI7Ozt3QixjOzs7Ozs2Qjs7O3lCLG1COzs7Ozs2Qjs7O3lCLG1COzs7Ozs7OzhCOzs7Ozs7Ozs7OzhCOzs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7TTtNLFU7eUIsaUI7TSxzQjtLO0ssZTtLO0s7O007O08sSTtPOzs7VTs7Ozs7VyxPO1csTztXLFU7VztXO1U7O1U7UztPLFU7OztVOzs7OztVO1c7O1U7O1c7WSxHO2E7WSxXO1k7O1csRztZO1csVztXO1U7VTs7O1csVztXLFM7Ozs7O1U7UztNO007Ozs7Ozs7Ozs7VztZLFE7OztZOzs7WTthLE87YTs7VztXOzs7OztxQjtxQjs7VTtPOzs7TztjO08sVztPO1E7O3FDLHdDO087Tzs7OztXO1csTztVO1EsYzs7O1c7Vzs7O1k7OzthO1ksTzs7VztXO1c7VyxPO1U7TztPOztNOzs7TSxXO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7TTs7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQixPLHNDO21CLE8seUM7bUIsTyxzQztxQixPLHdDOzs7STtJLGtCO0k7STtLLE07SztPOztLLE87Ozs7Ozs7Ozs7STtJLE8sVztHOztJO0ssTTtLO08sVztJLE87YTtHOzs7SztNLE0sVztNO1E7VTtNOzs7OztVLFU7VSxPO21COzs7O1M7TTs7SztLO0s7SztJO0ksTyxXO0c7O0k7SyxTO0ssTTtLLEs7SSxPOztHOzs7SztLLEcsNkI7SyxJOztJO0ksTyxXO0c7O0k7SyxNO0s7TyxXO0ksTzthO0c7O0k7SyxNO0s7TztTLFc7SSxPO2E7Rzs7OztNOztPLFU7TyxPO007TSxPO0s7O007TSxLO087TyxLLDZCOztNLE87SztLLE87STtJLE8sVztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0dDampCTzs7O0lBQ1BDO0lBRE8sVUFDUEE7WUFJQUMsSUFBSUMsR0FBRUM7SUFBSSxLQUFKQSxHQUF5QjtRQUFZQyxJQUFyQ0Q7SUFBMEMsV0FBSyxXQUFqREQsR0FBdUNFO0dBQWU7R0FEaEQsSUFBQSxhQUNWSDs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDSEZJLGVBQWVDLE1BQU8sZ0JBQVBBLGVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWpNRUMsTUFBTUMsR0FBR0M7SUFBVSxLQUFiRCxHQUFrQyxPQUEvQkM7UUFBOEN4QyxJ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TUQsTUFBT2tKLE1BQVFtRyxNQUMxQyxXQUQyQnJQLE1BQU9rSixNQUFRbUcsU0FBckJwUDtHQU9wQjtHQTN4Qkw7OztPQUNNaUM7T0FFQUU7T0FFQUk7T0FFQUk7T0FHQUc7T0FFQUM7T0FNQUc7T0FFQUM7T0FHQUM7T0FNQUM7T0FFQUM7T0FFQUM7T0FNQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FTQUk7T0FFQUc7T0FFQUM7T0FNQUM7T0FHQUM7T0FNQUM7T0FHQUM7T0FNQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FNQUM7T0FHQUM7T0FHQUM7T0FTQUk7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FDQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUU7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUU7T0FFQUU7T0FRQUc7T0FDQUk7T0FFQUk7T0FHQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FNQUM7T0FNQUM7T0FNQUM7T0FFQUM7T0FHQUM7T0FPQUU7T0FFQUM7T0FHQUM7T0FNQUM7T0FNQUM7T0FFQUM7T0FHQUM7T0FFQUM7T0FPQUM7T0FFQUM7T0FFQUM7T0FPQUU7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FPQUM7T0FFQUk7T0FFQUM7T0FFQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FF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QUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFDQUM7WUFFQUM7WUFDQUM7WUFDQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUU7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUU7WUFFQUU7WUFRQUc7WUFDQUk7WUFFQUk7WUFHQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFNQUM7WUFNQUM7WUFNQUM7WUFFQUM7WUFHQUM7WUFPQUU7WUFFQUM7WUFHQUM7WUFNQUM7WUFNQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFPQUM7WUFFQUM7WUFFQUM7WUFPQUU7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFPQUM7WUFFQUk7WUFFQUM7WUFFQUM7WUFDQUM7WUFFQUM7WUFFQUM7WUFDQUM7WUFFQUM7WUFDQUM7WUFDQUM7WUFFQUM7WUFDQUM7WUFFQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFDQUM7WUFFQUM7WUFDQUM7WUFFQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFFQUM7WUFDQUM7WUFFQUM7WUFFQUM7WUFFQUU7WUFZQUc7WUFNQUU7WUFTQUc7WUFFQUM7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lFcmlERjNOOzs7Ozs7Ozs7Ozs7Ozs7OztZQUVBaU87SUFBdUI7Ozs7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O09BQUFBO09BU0FDO09BMERBcnNCO09BQ0EydEI7T0FDQUM7T0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BdEhBN0I7T0FUQUQ7T0FvSkFyWjtPQWpCQUM7T0FDQUM7T0FDQUM7T0FnQkFDO09BQ0FDO09BQ0FDO09BQ0FDO09BbEJBQztPQUNBQztPQUNBQztPQWlCQUM7T0FDQUM7T0FDQUM7T0FDQTRhO09BQ0FDOztPQUlBQztPQWtCQWpaO09BT0FSO09BWUE0WjtPQUNBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDalJBQyxXQUFXNWUsR0FBRUQ7SUFDZixPQUc2Qiw4QkFKaEJDLFFBQUVEO0dBSXdCOztJQW1DbkM5RztJQUNBOUQ7SUFDQXlKO0lBQ0FLO0lBQ0FGO0lBQ0FsRztJQUNBZ21CO0lBQ0FDO0lBQ0FDO0lBQ0ExZjtJQUNBMmY7SUFDQUM7SUFDQWpyQjtJQUNBa3JCO0lBQ0FDO0lBQ0FDO0lBQ0F2bEI7SUFDQWlCO0lBQ0F1a0I7SUFDQXRtQjtJQUNBdW1CO0lBQ0FsZ0I7SUFDQXhGO0lBQ0ErRDtJQUNBYztJQUNBZjtJQUNBakI7SUFDQThpQjtZQUVBQyxjQUFjQztJQUNoQixZQURnQkE7O0tBR1QsT0FBQTtRQURTOWUsY0FBSDNPO0lBQVMsV0FBVEEsR0FBRzJPO0dBQ2lDO1lBRS9DK2UsbUJBQW1CRDtJQUNyQixZQURxQkE7O0tBR2QsT0FBQTtRQURjOWUsY0FBSDNPO0lBQVMsV0FBVEEsR0FBRzJPO0dBQ2lDO1lBRXBEZ2YsbUJBQW1CRjtJQUNyQixZQURxQkE7O0tBR2QsT0FBQTtRQURjOWUsY0FBSDNPO0lBQVMsV0FBVEEsR0FBRzJPO0dBQ2lDO1lBRXBEaWYsZUFDQzN1QixHQUFFaVI7SUFDTCxPQURHalI7O2NBQUVpUjs7Y0FBQUE7O2NBQUFBOztjQUFBQTs7Y0FBQUE7O2NBQUFBOztjQUFBQTs7Y0FBQUE7O2NBQUFBOztjQUFBQTs7Y0FBQUE7O2NBQUFBOztjQUFBQTs7Y0FBQUE7O2NBQUFBOztjQUFBQTs7Y0FBQUE7O2NBQUFBOztjQUFBQTs7Y0FBQUE7O2NBQUFBOztjQUFBQTs7Y0FBQUE7O2NBQUFBOztjQUFBQTs7T0EyQmMsT0EzQ2pCc2QsY0FnQkd0ZDs7T0E0Qm1CLE9BdkN0QndkLG1CQVdHeGQ7O09BNkJtQixPQW5DdEJ5ZCxtQkFNR3pkOztjQUFBQTtzQkFBQUE7O0dBK0JrQztZQUVyQzJkLGVBQ0M1dUIsR0FBRWlSLEdBQUU0ZDtJQUNQLE9BREc3dUI7O09BRW9CLFdBRmxCaVIsTUFBQUEsTUFBQUEsTUFBQUEsTUFBRTRkOztPQUdzQixXQUh4QjVkLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUU0ZDs7T0FJZSxXQUpqQjVkLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUU0ZCxPQUFGNWQ7O09BTWUsV0FOZkEsTUFBQUEsTUFBRTRkOztPQUthLFdBTGY1ZCxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFFNGQ7O09BT29CLFdBUHRCNWQsTUFBQUEsTUFBQUEsTUFBRTRkOztPQVFNLFdBUlI1ZCxNQUFBQSxNQUFBQSxNQUFFNGQ7O09BU1EsV0FUVjVkLE1BQUFBLE1BQUFBLE1BQUU0ZDs7T0FVUyxXQVZYNWQsTUFBQUEsTUFBQUEsTUFBRTRkOztPQVdnQixXQVhsQjVkLE1BQUFBLE1BQUFBLE1BQUU0ZCxPQUFGNWQ7O09BWVcsV0FaWEEsTUFBQUEsTUFBRTRkOztPQWFlLFdBYmpCNWQsTUFBQUEsTUFBRTRkOztPQWNVLFdBZFo1ZCxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFFNGQ7O09BZVMsV0FmWDVkLE1BQUFBLE1BQUU0ZDs7T0FnQlUsV0FoQlo1ZCxNQUFBQSxNQUFFNGQ7O09BaUJVLFdBakJaNWQsTUFBQUEsTUFBRTRkOztPQWtCaUIsV0FsQm5CNWQsTUFBQUEsTUFBRTRkLE9BQUY1ZDs7T0FtQndCLFdBbkJ4QkEsTUFBQUEsTUFBRTRkLE9BQUY1ZDs7T0FvQm9CLFdBcEJwQkEsTUFBQUEsTUFBRTRkLE9BQUY1ZDs7T0FxQmlCLFdBckJqQkEsTUFBQUEsTUFBQUEsTUFBRTRkOztPQXNCZSxXQXRCakI1ZCxNQUFBQSxNQUFBQSxNQUFFNGQ7O09BdUJZLFdBdkJkNWQsTUFBQUEsTUFBRTRkOztPQXdCVSxXQXhCWjVkLE1BQUFBLE1BQUU0ZDs7T0F5QlksV0F6QmQ1ZCxNQUFBQSxNQUFFNGQsT0FBRjVkOztPQTBCZSxXQTFCZkEsTUFBQUEsTUFBRTRkLE9BQUY1ZDs7a0JBQUFBLE1BNEJELGVBOUVGc2QsY0FrREd0ZCxPQUFFNGQ7O2tCQUFGNWQ7T0E4QkQsZ0JBM0VGd2QsbUJBNkNHeGQsT0FBRTRkOztrQkFBRjVkO09BbUNELGdCQTNFRnlkLG1CQXdDR3pkLE9BQUU0ZDs7T0F1Q0csV0F2Q0w1ZCxNQUFBQSxNQUFFNGQ7ZUF3Q2dCLFdBeENsQjVkLE1BQUFBLE1BQUU0ZDs7R0F3Q2lEOztJQXdEdERDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBRUFDLCtCQUNDbHZCLEdBQUVpUjtJQUNMLE9BREdqUjs7bUJBQUVpUjsrQkFFMENsQyxjQUFVLFdBQVZBOzs7cUJBRjFDa0M7aUNBRzBDaEMsa0JBQVUsV0FBVkE7OztxQkFIMUNnQztnQ0FJcUNrZSxrQkFBVSxXQUFWQTs7O3FCQUpyQ2xlO2dDQUs0Q21lLGtCQUFVLFdBQVZBOztJQUMxQztHQUFJO0dBUUssSUFBWkM7WUFtQ0pyd0IsS0FBS2dCLEdBQUkscUNBQUpBLE1BQTRCO1lBQ2pDeWMsUUFBUXpjLEdBQUksT0FBSkEsS0FBYTs7SUFJRjtTQUNUQTtZQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQUFLOztRQUNKcWQ7V0FBQUE7Ozs7Ozs7OztJQUFLLFdBQUs7R0FBMEM7R0FIakU7SUFpWmtCaVM7TUFqWmxCO1lBS0VDLHNCQUFzQnZ3QixNQUFLeWQsU0FBUW1SLFNBQVF6SztJQUM3Qyx5Q0EyWWtCbU0sZUE1WVc3UyxVQUFMemQ7SUFFeEIsV0FDUyw4QkFIZUEsT0FBS3lkLGFBQVFtUixTQUFReks7R0FNNUM7WUFFQ3FNLFFBQVF4d0IsTUFBS3lkLFNBQVFtUixTQUFReks7SUFDL0IsT0FURW9NO2FBUVF2d0IsTUFBS3lkLFNBQVFtUiwrQkFDb0QsT0FENUN6SyxFQUM2QztHQUFDO1lBRTNFc00sc0JBQXNCendCLE1BQUt5ZCxTQUFRbVIsU0FBUXpLO0lBQzdDLE9BWkVvTTthQVdzQnZ3QjthQUFLeWQ7YUFBUW1SOzZCQUN3QjhCLFVBQ3pELE9BQUEsV0FGeUN2TSxHQUNnQnVNLFVBQzlDO0dBQUM7WUFFZEMsc0JBQXNCM3dCLE1BQUt5ZCxTQUFRbVIsU0FBUXpLO0lBQzdDLE9BaEJFb007YUFlc0J2d0I7YUFBS3lkO2FBQVFtUjtzQkFDWWdDLGlCQUM3QyxPQUFBLFdBRnlDek0sR0FDSXlNLFVBQ2xDO0dBQUM7WUFJZEMsYUFBYTd3QixNQUFLeWQ7SUFDZTtLQUEvQnFUO09BQStCO0lBQ25DLFNBQUlDLDBCQUF1QyxTQUFFO0lBQzdDLE9BeEJFUixzQkFxQmF2d0IsTUFBS3lkLFNBQ2hCcVQsaUJBQ0FDO0dBQzJEO1lBSzNEQyxVQUFVaHdCO0lBQUksV0FBSkE7SUFBSSxXQUFKQTtHQUFvRDtZQUM5RGl3QixLQUFLandCO0lBQWlCLFdBRHRCZ3dCLFVBQ0tod0I7SUFBaUIsT0FBQTtHQUFhO1lBQ25Dc3FCLE1BQU1yWixHQUFFK007SUFBSSxJQUF5QixPQUZyQ2dTLFVBRVFoUyxJQUFlLE9BRnZCZ1MsVUFFTS9lO0lBQStCLE9BQUE7R0FBYTtHQUd6Qzt5REFIVHFaLE9BREEyRjtJQUlGQyxXQUFXO1lBQ1hDO1FBQWV2UDtJQUFpQixPQUFBLCtCQURoQ3NQLFVBQ2V0UDs7Ozs7Ozs7O2dCQUlYVixRQUVnQixPQU5wQmlRLGFBTWdDOzs7OztPQUhoQ0M7WUFNQUMsYUFtQkVyd0IsR0FBRXN3QjtJQUFjLElBbEJNalYsYUFrQnBCaVYsY0FsQitCQztJQUNuQztVQUR3QmxWLFlBRWhCLFdBRjJCa1Y7U0FBWEMsZUFBQW5WLGVBR3RCZ0csT0FIc0JoRyxlQUdQcmMsT0FBZnFpQjtLQUNLLEdBQUEsOEJBY0xyaEIsTUFmZWhCO1NBSGtCdXhCOztRQU9SdmEsU0FQUXVhO1FBUXJCeGdCLDRCQUxHL1E7UUFNSHl4Qiw4QkFGYXphO09BR2QsR0FBQSw4QkFGQ2pHLEtBQ0EwZ0I7UUFDc0M7U0FWakJDLHNCQUdqQ3JQO1NBSHNCaEcsYUFBQW1WO1NBQVdELGdCQUFBRzs7UUFXakIsS0FBQSw4QkFISjNnQixLQUNBMGdCO1NBSUYsZUFDSSxtQ0FYQ3p4QjtZQUhPcWMsYUFBQW1WOzs7O09BTWU7UUFOSkcsc0JBR2pDdFA7UUFIc0JoRyxhQUFBbVY7UUFBV0QsZ0JBQUFJOztVQUFYdFYsYUFBQW1WOztHQWtCMkI7WUFFbkRJLFFBQVV0VCxLQUF3QnNRLFNBQVF2TTtJQUM1QyxHQURZL0Q7U0FBa0JDLE1BQWxCRCxRQUFBdVQsa0JBQWtCdFQ7O1NBQWxCc1Q7SUFDWixHQURZQSxpQkE5QlZWLGFBOEIwQzlPO0lBTTFDO0tBSjRCOEIsSUFGTXlLO0tBRWZrRCxZQUZlbEQ7S0FNbEMsT0FBQSxXQUo0QnpLLEdBRmM5QixTQUFBQTtZQUFBQTtLQUkxQyxPQUFBLDhCQUowQ0E7SUFNMUMsT0FBQSxrQ0FKbUJ5UDtHQUlxQztZQUV4REMsUUFBUS93QixHQUFnQjZ3QixpQkFBZ0I1ZjtJQUU5QixJQUFSNGQsUUE5UUFGLGVBNFFNM3VCLE1BQWdDaVI7a0JBR2I1TTtLQUM3QixLQUQ2QkEsS0FFbkI7U0FDSGdkLE9BSHNCaGQ7S0FJekIsY0FBZ0RrVixPQUFTLFdBQVRBLE9BQW1CO0tBQW5FLFdBZkZxWCxRQVF3QkMsaUJBQWhCN3dCLE1BTUhxaEI7S0FDeUMsT0FBQTtJQUF1QjtJQUp2RSxXQWhDRWdQLGFBNkJRcndCLEdBRU42dUI7SUFDcUIsT0FBQTtHQUk4QztZQUVyRW5XLElBQUkxWSxHQUFnQjZ3QixpQkFBZ0I1ZjtJQUN0QyxJQUFBLE9BVkU4ZixRQVNJL3dCLEdBQWdCNndCLGlCQUFnQjVmO0lBRVosT0FBQTs7OztjQUFBLElBQU13TztjQUFXLE9BQUEsbUNBQVhBO2FBQW9DO0dBQUE7WUFFbEV1UixhQUFhaHhCLEdBQUdtd0IsY0FBYWxmO0lBQ3pCLElBR0psUSxJQWpCQWd3QixRQWFhL3dCLEdBQUdtd0IsY0FBYWxmO2lCQUk3QmxRLE9BQUFBLG1CQUFBQTtHQUFpQjtZQUVqQmt3QixTQUFTanhCLEdBQUdtd0IsY0FBYWxmO0lBQzNCLElBQUEsT0FQRStmLGFBTVNoeEIsR0FBR213QixjQUFhbGY7SUFFRCxPQUFBOzs7O2NBQUEsSUFBTXdPO2NBQVcsT0FBQSxtQ0FBWEE7YUFBb0M7R0FBQTtZQUVsRXlSLFlBQVlseEIsR0FBRWlSO0lBRUosSUFBUjRkLFFBclNBRixlQW1TVTN1QixNQUFFaVI7a0JBR2E1TTtLQUM3QixLQUQ2QkEsS0FFbkI7U0FDSGdkLE9BSHNCaGQ7bUJBSWE4c0IsUUFBUyxZQUQ1QzlQLFNBQ21DOFAsZ0JBQTRCO0tBQXREO01BQVJDLFVBQVEsd0NBTFp2QztNQU1JdE8sTUF6UUpxTyxlQWlRVTV1QixNQUFFaVIsR0FPUm1nQjtLQUVKLGNBQStCN1gsT0FBUyxlQURwQ2dILEtBQzJCaEgsUUFBd0I7S0FBdkQsV0F4Q0ZxWCxXQStCWTV3QixNQU1QcWhCO0tBR3dCLE9BQUE7SUFBNEI7SUFOM0QsV0F2REVnUCxhQW9EWXJ3QixHQUVWNnVCO0lBQ3FCLE9BQUE7R0FNa0M7WUFFekR3QyxRQUFRcnhCLEdBQUVpUjtJQUNaLElBQUEsT0FaRWlnQixZQVdRbHhCLEdBQUVpUjtJQUVjLE9BQUE7Ozs7Y0FBQSxJQUFNd087Y0FBVyxPQUFBLG1DQUFYQTthQUFvQztHQUFBO1lBRWxFNlIsZ0JBQTBCN1UsU0FBdUI4VSxTQUFTdGdCO0lBRWhELElBQVI0ZCxRQXBUQUYsZUFrVHdCbFMsU0FBZ0N4TDthQUdwRGdRLEtBQUt0Ujs7O29CQUNILFdBREdBO1VBRUZ3RixtQkFBTG5WO01BQ0csR0EzWVAydEIsV0EwWUkzdEIsTUFMc0J5YztPQU9wQjs7bUJBQTZCcFk7V0FDN0IsS0FENkJBLEtBQTdCLE9BSkE0YyxLQUFLdFIsS0FFRndGO1dBTUMsSUFER2tNLE9BSHNCaGQsUUFJckJyRixPQUREcWlCO1dBRUEsT0FBQSxnQ0F6RmI2TyxVQXdGY2x4QjtxQkFSUmlpQixLQUFLdFIsS0FFRndGO3FCQUZIOEwsU0FPT0ksTUFQRjFSLE1BRUZ3RjtVQVE2QjtRQU5oQyxPQTFFTmtiLGFBd0VJcndCLEdBSEY2dUI7T0FLNkIsT0FBQTs7b0JBRnRCMVo7OztrQkFXYTRGO21CQUVJc0c7TUFBUyxXQUFJLGtDQUFiQSxNQUZKdEc7S0FFK0M7S0FBckUsSUFERXFXLFVBQ0Ysd0NBaEJFdkM7S0FrQkosT0FwU0lELGVBZ1J3Qm5TLFNBQWdDeEwsR0FpQnhEbWdCO0lBR2tDO0lBSnRDLFdBYlFuUSxRQUgyQ3NRO0lBZ0IvQixPQUFBO0dBSWtCO1lBRXBDQyxZQUFzQi9VLFNBQXVCOFUsU0FBU3RnQjtJQUN4RDtLQUFBLE9BdkJFcWdCLGdCQXNCc0I3VSxTQUF1QjhVLFNBQVN0Z0I7O0lBRTlCLE9BQUE7Ozs7Y0FBQSxJQUFNd087Y0FBVyxPQUFBLG1DQUFYQTthQUFvQztHQUFBO1lBRWxFZ1MsWUFBWXp4QixHQUFFSztJQUVSLElBQUpvTyxJQUFJLG9DQUZRcE87a0JBR1NxZCxLQUFJemUsS0FBSWdTLEdBQUVrUzttQkFDUDllO01BQ3hCLEtBRHdCQSxLQUVGLE9BQUEsV0FKdEJvSyxHQUNxQmlQLEtBQUl6ZSxLQUFJZ1MsR0FHUCxXQUhTa1M7a0JBQ1A5ZSxRQUdidU8sY0FBSDJOO01BQXFCLE9BQUEsV0FMN0I5UixHQUNxQmlQLEtBQUl6ZSxLQUlqQnNoQixLQUFxQixXQUpFNEMsT0FJcEJ2UTtLQUE4QjtLQUh6QyxXQTdDRnNlLFlBeUNZbHhCLEdBR21CaVI7S0FDVCxPQUFBO0lBR3FCO0lBSnpCLE9BQUE7R0FJMEI7WUFFNUM2ZixVQUFROXdCLEdBQUVLO0lBQ1o7S0FBQSxPQVZFb3hCLFlBU1F6eEIsR0FBRUs7S0FFSm9PLElBRFI7SUFBQSxjQUNVTSxHQUFFRCxHQUFFbVAsR0FBRWhGO0tBQ1gsSUFBQSxPQUFBLFdBREd4SyxHQUFFTSxHQUFFRCxHQUFFbVAsR0FBRWhGO0tBRWUsT0FBQTs7OztlQUFBLElBQU13RztlQUFXLE9BQUEsbUNBQVhBO2NBQW9DOztJQUh6RSxPQUFBO0dBSXNCO1lBV2xCekosT0FBS2hXLEdBQUkscUNBQUpBLE1BQTRCO1lBRWpDMHhCLFVBQVExeUIsTUFBS3lkLFNBQVFtUixTQUFReks7SUFDL0IseUNBdU9nQm1NLGVBeE9EN1MsVUFBTHpkO0lBS0UsZUFMVzR1QiwrQkFLNkMsT0FMckN6SyxFQUtzQztJQUhyRSxXQUNTLDhCQUhDbmtCLE9BQUt5ZDtHQU1kO1lBRUNrVixZQUFZQyxJQUFHM2dCO0lBQ2pCLEtBRGMyZ0IsSUFHTjtRQUNKblYsVUFKVW1WO2tCQUtzQjV4QixHQUFLLE9BdmN6QzJ0QixXQXVjb0MzdEIsTUFEaEN5YyxTQUNvRTtJQUE3RCxLQUFBLHdDQUxHbVY7S0FLVixNQUFBO0lBbE9FLFlBVkoxQywrQkEyT0V6UyxTQUpheEw7O1NBNU5WbEMsY0FrT0NzUyxPQWxPRHRTOztTQWtPQ3NTLE9Bak9FO0lBa09OLElBQUlyaUIsT0FEQXFpQjtrQkFHcUJyaEIsR0FBSyxxQ0FBTEEsTUFGckJoQixTQUU4RDtJQUFoRSxJQUlBMFEsSUFKQSx3Q0FUUWtpQjtTQWFSbGlCLEdBRk07T0FFTkE7S0FDRTtNQUFBO3NCQUk2QjFQLEdBQUsscUNBQUxBLE1BQTZCO01BQWpELE9BQUEsa0NBTFgwUDtNQUlRLE9BQUE7S0FITjtpQkFDSSxtQ0FSSjFROztRQUtBZ0IsSUFDRjBQO0lBRFMsY0FBK0I2SixPQUFTLFdBQVRBLE9BQW1CO0lBQWxELFdBdkhmcVgsV0F1SFE1d0IsTUFOQXFoQjtJQU1rQyxPQUFBO0dBT3pCO1lBRWZ3USxVQUFRRCxJQUFHM2dCO0lBQ2IsSUFBQSxPQXRCRTBnQixZQXFCUUMsSUFBRzNnQjtJQUVhLE9BQUE7Ozs7Y0FBQSxJQUFNd087Y0FBVyxPQUFBLG1DQUFYQTthQUFvQztHQUFBO1lBR3BFcVMseUJBQXlCeEMsV0FBVTdTLFNBQVF6ZDtJQUM3Qzs7TUFFTSx5Q0FIdUNBOzs7T0FJckMsMkJBSnFDQTtVQUt4QyxnQ0F6S0hreEIsVUFvSzJDbHhCO0tBTzNCLElBQVp3ZSxZQUFZO0tBQ2hCO2FBQ0U7O2VBVHVCOFI7ZUFBVTdTO21CQU8vQmU7O2VBUHVDeGU7OztJQVl4QztHQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFHQXNpQjtZQUcyQnRpQjtRQUM5QixXQUNFLG1DQUY0QkE7OztnQkFIM0JzaUIsUUFXQzdFLFNBQVFzVjtRQUNFLElBQVJsRCxRQXBhTkYsZUFtYUlsUyxTQUFRc1Y7UUFFVixLQURJbEQsT0FFSSxXQUhFa0Q7c0JBUUUxUTtTQUREO1VBQ3FDbGdCLFVBQXBDa2dCO1VBQWVyaUIsT0FBZnFpQjtVQUdFLE9BckNsQnlRLHlCQXNNZ0J4QyxlQTVLVjdTLFVBUXlCemQ7VUFFZixPQUFBLFdBckJYc2lCLG9CQUFBQSxRQW1CK0NuZ0I7VUFDbEM2d0IsbUJBQ0Y7U0F2TWhCN0IsYUFxTWdCOU87U0FNRixPQUxJMlE7UUFNYTtRQVRyQjtTQUFBLE9BQUEsa0NBTEZuRDtTQUlJeFAsU0FDRjtRQVlGLFdBblpOdVAsZUFpWUluUyxTQUFRc1YsVUFLRjFTO09BYTRDOztnQkE3Qm5EaUMsUUFpQ0M3RSxTQUFRc1Y7UUFFUixZQW5USjdDLCtCQWlUSXpTLFNBQVFzVjtvQkFJQSxXQUpBQTtRQVFGO1NBSEQxUTtTQUFvQ2xnQixVQUFwQ2tnQjtTQUFlcmlCLE9BQWZxaUI7U0FHQyxPQXhEWnlRLHlCQXNNZ0J4QyxlQXRKVjdTLFVBS29CemQ7U0FFaEIsT0FBQSxXQXhDTHNpQixvQkFBQUEsUUFzQzBDbmdCO1NBQ25DNndCLG1CQUNGO1FBMU5WN0IsYUF3Tlc5TztlQUxMNUU7OytCQWxTRjRTLGVBa1NVMEM7OytCQWxTVjFDLGVBa1NVMEM7OzhCQWxTVjFDLFlBa1NVMEMsU0FBQUE7c0NBbFNWMUMsWUFrU1UwQyxTQUFBQTs7UUFXTixpQkFMSUM7T0FLOEQ7O2dCQTVDckUxUSxRQThDcUJyUSxHQUFFdEI7UUFDMUI7U0FBa0IsUUFBQSxXQS9DZjJSLG9CQUFBQSxXQThDcUJyUTtTQUNmb087U0FBTGhiO1NBQ3dCLE9BQUEsOEJBRkZzTCxLQUNqQjBQO1FBQ21CLE9BQUEsV0FBNUIsaUJBaERHaUMsU0ErQ0NqZDtPQUNzQzs7Z0JBaER2Q2lkLFFBa0QyQnJRLEdBQUV0QjtRQUNoQztTQUFrQixRQUFBLFdBbkRmMlIsb0JBQUFBLFdBa0QyQnJRO1NBQ3JCb087U0FBTGhiO1NBQzhCLE9BQUEsOEJBRkZzTCxLQUN2QjBQO1FBQ3lCLE9BQUEsV0FBbEMsaUJBcERHaUMsU0FtRENqZDtPQUM0Qzs7Z0JBcEQ3Q2lkLFFBc0RvQnJRLEdBQUV0QjtRQUN6QjtTQUFrQixRQUFBLFdBdkRmMlIsb0JBQUFBLFdBc0RvQnJRO1NBQ2RvTztTQUFMaGI7U0FDdUIsT0FBQSw4QkFGRnNMLEtBQ2hCMFA7UUFDa0IsT0FBQSxXQUEzQixpQkF4REdpQyxTQXVEQ2pkO09BQ3FDOztnQkF4RHRDaWQsUUEwRGtCclEsR0FBRXRCO1FBQ3ZCO1NBQWtCLFFBQUEsV0EzRGYyUixvQkFBQUEsV0EwRGtCclE7U0FDWm9PO1NBQUxoYjtTQUNxQixPQUFBLDhCQUZGc0wsS0FDZDBQO1FBQ2dCLE9BQUEsV0FBekIsaUJBNURHaUMsU0EyRENqZDtPQUNtQzs7Z0JBNURwQ2lkLFFBOERrQnJRLEdBQUV0QjtRQUN2QjtTQUFrQixRQUFBLFdBL0RmMlIsb0JBQUFBLFdBOERrQnJRO1NBQ1pvTztTQUFMaGI7U0FDcUIsT0FBQSw4QkFGRnNMLEtBQ2QwUDtRQUNnQixPQUFBLFdBQXpCLGlCQWhFR2lDLFNBK0RDamQ7T0FDbUM7O2dCQWhFcENpZCxRQWtFeUJyUSxHQUFFdEI7UUFDOUI7U0FBa0IsUUFBQSxXQW5FZjJSLG9CQUFBQSxXQWtFeUJyUTtTQUNuQm9PO1NBQUxoYjtTQUM0QixPQUFBLDhCQUZGc0wsS0FDckIwUDtRQUN1QixPQUFBLFdBQWhDLGlCQXBFR2lDLFNBbUVDamQ7T0FDMEM7O2dCQXBFM0NpZCxRQXNFV3JRLEdBQUV0QjtRQUNoQjtTQUFrQixRQUFBLFdBdkVmMlIsb0JBQUFBLFdBc0VXclE7U0FDTG9PO1NBQUxoYjtTQUNjLE9BQUEsOEJBRkZzTCxLQUNQMFA7UUFDUyxPQUFBLFdBQWxCLGlCQXhFR2lDLFNBdUVDamQ7T0FDNEI7O2dCQXhFN0JpZCxRQTBFYXJRLEdBQUV0QjtRQUNsQjtTQUFrQixRQUFBLFdBM0VmMlIsb0JBQUFBLFdBMEVhclE7U0FDUG9PO1NBQUxoYjtTQUNnQixPQUFBLDhCQUZGc0wsS0FDVDBQO1FBQ1csT0FBQSxXQUFwQixpQkE1RUdpQyxTQTJFQ2pkO09BQzhCOztnQkE1RS9CaWQsUUE4RWNyUSxHQUFFdEI7UUFDbkI7U0FBa0IsUUFBQSxXQS9FZjJSLG9CQUFBQSxXQThFY3JRO1NBQ1JvTztTQUFMaGI7U0FDaUIsT0FBQSw4QkFGRnNMLEtBQ1YwUDtRQUNZLE9BQUEsV0FBckIsaUJBaEZHaUMsU0ErRUNqZDtPQUMrQjs7Z0JBaEZoQ2lkLFFBa0ZxQnJRLEdBQUV0QjtRQUMxQjtTQUFrQixRQUFBLFdBbkZmMlIsb0JBQUFBLFdBa0ZxQnJRO1NBQ2ZvTztTQUFMaGI7U0FDd0IsT0FBQSw4QkFGRnNMLEtBQ2pCMFA7UUFDbUIsT0FBQSxXQUE1QixpQkFwRkdpQyxTQW1GQ2pkO09BQ3NDOztnQkFwRnZDaWQsUUFzRmNyUSxHQUFFdEI7UUFDbkI7U0FBa0IsUUFBQSxXQXZGZjJSLG9CQUFBQSxZQXNGY3JRO1NBQ1JvTztTQUFMaGI7U0FDaUIsT0FBQSw4QkFGRnNMLEtBQ1YwUDtRQUNZLE9BQUEsV0FBckIsaUJBeEZHaUMsU0F1RkNqZDtPQUMrQjs7Z0JBeEZoQ2lkLFFBMEZlN1MsR0FBRXdDLEdBQUV0QjtRQUN0QjtTQUFrQixRQUFBLFdBM0ZmMlIsb0JBQUFBLFlBMEZpQnJRO1NBQ1hvTztTQUFMaGI7U0FDb0IsT0FBQSw4QkFGRnNMLEtBQ2IwUDtRQUNlLE9BQUEsV0FBeEIsaUJBNUZHaUMsU0EwRmU3UyxHQUNkcEs7T0FDa0M7O2dCQTVGbkNpZCxRQThGY3JRLEdBQUV0QjtRQUNuQjtTQUFrQixRQUFBLFdBL0ZmMlIsb0JBQUFBLFlBOEZjclE7U0FDUm9PO1NBQUxoYjtTQUNpQixPQUFBLDhCQUZGc0wsS0FDVjBQO1FBQ1ksT0FBQSxXQUFyQixpQkFoR0dpQyxTQStGQ2pkO09BQytCOztnQkFoR2hDaWQsUUFrR2VyUSxHQUFFdEI7UUFDcEI7U0FBa0IsUUFBQSxXQW5HZjJSLG9CQUFBQSxZQWtHZXJRO1NBQ1RvTztTQUFMaGI7U0FDa0IsT0FBQSw4QkFGRnNMLEtBQ1gwUDtRQUNhLE9BQUEsV0FBdEIsaUJBcEdHaUMsU0FtR0NqZDtPQUNnQzs7Z0JBcEdqQ2lkLFFBc0dzQnJRLEdBQUV0QjtRQUMzQjtTQUFrQixRQUFBLFdBdkdmMlIsb0JBQUFBLFlBc0dzQnJRO1NBQ2hCb087U0FBTGhiO1NBQ3lCLE9BQUEsOEJBRkZzTCxLQUNsQjBQO1FBQ29CLE9BQUEsV0FBN0IsaUJBeEdHaUMsU0F1R0NqZDtPQUN1Qzs7Z0JBeEd4Q2lkLFFBMEcyQnJRLEdBQUV0QjtRQUNoQztTQUFrQixRQUFBLFdBM0dmMlIsb0JBQUFBLFlBMEcyQnJRO1NBQ3JCb087U0FBTGhiO1NBQzhCLE9BQUEsOEJBRkZzTCxLQUN2QjBQO1FBQ3lCLE9BQUEsV0FBbEMsaUJBNUdHaUMsU0EyR0NqZDtPQUM0Qzs7Z0JBNUc3Q2lkLFFBOEdvQnJRLEdBQUV0QjtRQUN6QjtTQUFrQixRQUFBLFdBL0dmMlIsb0JBQUFBLFlBOEdvQnJRO1NBQ2RvTztTQUFMaGI7U0FDdUIsT0FBQSw4QkFGRnNMLEtBQ2hCMFA7UUFDa0IsT0FBQSxXQUEzQixpQkFoSEdpQyxTQStHQ2pkO09BQ3FDOztnQkFoSHRDaWQsUUFrSG9CclEsR0FBRXRCO1FBQ3pCO1NBQWtCLFFBQUEsV0FuSGYyUixvQkFBQUEsWUFrSG9CclE7U0FDZG9PO1NBQUxoYjtTQUN1QixPQUFBLDhCQUZGc0wsS0FDaEIwUDtRQUNrQixPQUFBLFdBQTNCLGlCQXBIR2lDLFNBbUhDamQ7T0FDcUM7O2dCQXBIdENpZCxRQXNIaUI3UyxHQUFFd0MsR0FBRXRCO1FBQ3hCO1NBQWtCLFFBQUEsV0F2SGYyUixvQkFBQUEsWUFzSG1CclE7U0FDYm9PO1NBQUxoYjtTQUNzQixPQUFBLDhCQUZGc0wsS0FDZjBQO1FBQ2lCLE9BQUEsV0FBMUIsaUJBeEhHaUMsU0FzSGlCN1MsR0FDaEJwSztPQUNvQzs7Z0JBeEhyQ2lkLFFBMEhlclEsR0FBRXRCO1FBQ3BCO1NBQWtCLFFBQUEsV0EzSGYyUixvQkFBQUEsWUEwSGVyUTtTQUNUb087U0FBTGhiO1NBQ2tCLE9BQUEsOEJBRkZzTCxLQUNYMFA7UUFDYSxPQUFBLFdBQXRCLGlCQTVIR2lDLFNBMkhDamQ7T0FDZ0M7O2dCQTVIakNpZCxRQThIaUJyUSxHQUFFdEI7UUFDdEI7U0FBa0IsUUFBQSxXQS9IZjJSLG9CQUFBQSxZQThIaUJyUTtTQUNYb087U0FBTGhiO1NBQ29CLE9BQUEsOEJBRkZzTCxLQUNiMFA7UUFDZSxPQUFBLFdBQXhCLGlCQWhJR2lDLFNBK0hDamQ7T0FDa0M7O2dCQWhJbkNpZCxRQWtJa0JyUSxHQUFFdEI7UUFDdkI7U0FBa0IsUUFBQSxXQW5JZjJSLG9CQUFBQSxZQWtJa0JyUTtTQUNab087U0FBTGhiO1NBQ3FCLE9BQUEsOEJBRkZzTCxLQUNkMFA7UUFDZ0IsT0FBQSxXQUF6QixpQkFwSUdpQyxTQW1JQ2pkO09BQ21DOztnQkFwSXBDaWQsUUFzSWVyUSxHQUFFdEI7UUFDcEI7U0FBaUIsUUFBQSxXQXZJZDJSLG9CQUFBQSxZQXNJZXJRO1NBQ1gwUjtTQUFIcEM7U0FDYSxVQUFBLFdBeElkZSxvQkFBQUEsV0F1SUNmO1NBQ0dxQztTQUFIcEM7U0FDdUIsT0FBQSw4QkFGcEJtQyxTQUNBQztTQUNhLE9BQUEsOEJBSEFqVDtRQUdBLE9BQUEsV0FBcEIsaUJBeklHMlIsU0F3SUNkO09BQ3lDOztnQkF6STFDYyxRQTJJb0JyUSxHQUFFdEI7UUFDekI7U0FBaUIsUUFBQSxXQTVJZDJSLG9CQUFBQSxZQTJJb0JyUTtTQUNoQjBSO1NBQUhwQztTQUNhLFVBQUEsV0E3SWRlLG9CQUFBQSxXQTRJQ2Y7U0FDR3FDO1NBQUhwQztTQUM0QixPQUFBLDhCQUZ6Qm1DLFNBQ0FDO1NBQ2tCLE9BQUEsOEJBSEFqVDtRQUdBLE9BQUEsV0FBekIsaUJBOUlHMlIsU0E2SUNkO09BQzhDOztnQkE5SS9DYyxRQWlKQ3JRLEdBRGN0QjtRQUNsQixTQUFJc0I7OzRCQWpKRHFRLG9CQUFBQSxZQWlKQ3JRO1VBQUdvTztVQUFIa0I7O2FBQUdsQixZQUFIa0IsTUFBQXRQO1FBR2MsV0FBQSw4QkFKQXRCLEtBQ1gwUDtRQUdXLE9BQUEsV0FBbEIsaUJBcEpHaUMsU0FpSkNmO09BRzRCOztnQkFwSjdCZSxRQXNKa0JyUSxHQUFFdEI7UUFDdkI7O21CQURxQnNCLHdCQUFBQTtVQUtNO1dBRkZnaEIsY0FISmhoQjtXQUdKNU4sU0FISTROO1dBS00sT0FBQSxXQTNKeEJxUSxvQkFBQUE7V0EySkssT0FBQSxrQ0FGU2plO1dBRVQsUUFBQTtXQURVNnVCO1dBQVJDO1dBSEg5UyxTQU9tQyxrQ0FKeEI2UztXQUhkM1IsVUFHTTRSLFVBRGVGOzs7YUFGbEI1UyxZQUFIa0IsTUFEaUJ0UDs7UUFXRSxXQUFBLDhCQVhBdEIsS0FDaEIwUDtRQVVnQixPQUFBLFdBQXZCLGlCQWpLR2lDLFNBdUpDZjtPQVVpQzs7Z0JBaktsQ2UsUUFtS2tCOFEsTUFBS3ppQjtRQUMxQjtTQUFtQixRQUFBLFdBcEtoQjJSLG9CQUFBQSxXQW1La0I4UTtTQUNYL1M7U0FBTmdUO2VBQUFBOzs7OEJBcEtEL1Esb0JBQUFBLFlBb0tDK1E7WUFDTXpQO1lBQU4wUDs7Ozs4QkFyS0RoUixvQkFBQUEsWUFvS0MrUTtZQUNNRTtZQUFOQztZQUFNNVAsVUFBQTJQO1lBQU5ELFNBQUFFOzt1QkFBTTVQLGFBQU4wUCxTQURBRDs7UUFPNkI7U0FBQSxPQUFBLDhCQVB2QmhULFFBQ0F1RDtTQU1nQixPQUFBLDhCQVJBalQ7UUFRQSxPQUFBLFdBQTFCLGlCQTNLRzJSLFNBcUtDZ1I7T0FNOEM7O2dCQTNLL0NoUixRQTZLa0I4USxNQUFLemlCO1FBQzFCO1NBQW1CLFFBQUEsV0E5S2hCMlIsb0JBQUFBLFdBNktrQjhRO1NBQ1gvUztTQUFOZ1Q7a0JBQUFBOzs0QkE5S0QvUSxvQkFBQUEsWUE4S0MrUTtVQUNNRTtVQUFOQztVQUFNNVAsVUFBQTJQO1VBQU5ELFNBQUFFOzthQUFNNVAsYUFBTjBQLFNBREFEO1FBTTZCO1NBQUEsT0FBQSw4QkFOdkJoVCxRQUNBdUQ7U0FLZ0IsT0FBQSw4QkFQQWpUO1FBT0EsT0FBQSxXQUExQixpQkFwTEcyUixTQStLQ2dSO09BSzhDOzs7Ozs7SUFyTHBERzs7WUE2TEFDO0lBQXFCLFlBQ2Y7UUFDTmpUO0lBQVksT0FBQSxtQ0FBWkE7R0FBb0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQUcvQmdDLFFBSUNoRixTQUFRc1Y7UUFDRSxJQUFSbEQsUUE5bEJORixlQTZsQklsUyxTQUFRc1Y7UUFFVixLQURJbEQsT0FFSSxPQUhFa0Q7c0JBT0ExUTtTQURELElBQ3FDbGdCLFVBQXBDa2dCLFNBckJvQnJpQixPQXFCcEJxaUI7U0FDRixXQVpQSSxxQkFBQUEsUUFXNkN0Z0I7U0FFWjtVQXZCWjJiLGdCQWNwQkw7VUFiRixRQXZNSnFWLHlCQXNNZ0J4QyxXQUFVeFMsV0FBUTlkOztjQUdsQ3lnQjtVQUFZLG1DQUFaQTs7U0FvQlksT0FoWVowUSxhQThYYzlPO1FBSWdCO1FBTnRCLGtDQUpBd047UUFJQSxPQWhrQk5ELGVBMmpCSW5TLFNBQVFzVjtPQVlnQzs7Z0JBaEJ6Q3RRO1lBa0IyQnppQjtRQUM5QixPQUFBLG1DQUQ4QkE7OztnQkFsQjNCeWlCLFFBc0JxQnhRO1FBQ3hCLE9BNUJGeWhCO2lCQTRCRTs7cUJBek5GRDttQkFBQUE7bUJBd04wQnhoQjs7T0FFSDs7Z0JBeEJsQndRLFFBMEIyQnhRO1FBQzlCLE9BaENGeWhCO2lCQWdDRTs7cUJBN05GRDttQkFBQUE7bUJBNE5nQ3hoQjs7T0FFVDs7Z0JBNUJsQndRLFFBOEJvQnhRO1FBQ3ZCLE9BcENGeWhCO2lCQW9DRTs7cUJBak9GRDttQkFBQUE7bUJBZ095QnhoQjs7T0FFRjs7Z0JBaENsQndRLFFBa0NrQnhRO1FBQ3JCLE9BeENGeWhCO2lCQXdDRTs7cUJBck9GRDttQkFBQUE7bUJBb091QnhoQjs7T0FDcUQ7O2dCQW5DdkV3USxRQXFDa0J4UTtRQUNyQixPQTNDRnloQjtpQkEyQ0U7O3FCQXhPRkQ7bUJBQUFBO21CQXVPdUJ4aEI7O09BQ3FEOztnQkF0Q3ZFd1EsUUF3Q3lCeFE7UUFDNUIsT0E5Q0Z5aEI7aUJBOENFOztxQkEzT0ZEO21CQUFBQTttQkEwTzhCeGhCOztPQUVQOztnQkExQ2xCd1EsUUE0Q1d4UTtRQUNkLE9BbERGeWhCO2lCQWtERTs7cUJBL09GRDttQkFBQUE7bUJBOE9nQnhoQjs7T0FDcUQ7O2dCQTdDaEV3USxRQStDYXhRO1FBQ2hCLE9BckRGeWhCO2lCQXFERTs7cUJBbFBGRDttQkFBQUE7bUJBaVBrQnhoQjs7T0FDcUQ7O2dCQWhEbEV3USxRQWtEY3hRO1FBQ2pCLE9BeERGeWhCO2lCQXdERTs7cUJBclBGRDttQkFBQUE7bUJBb1BtQnhoQjs7T0FDcUQ7O2dCQW5EbkV3USxRQXFEcUJ4UTtRQUN4QixPQTNERnloQjtpQkEyREU7O3FCQXhQRkQ7bUJBQUFBO21CQXVQMEJ4aEI7O09BRUg7O2dCQXZEbEJ3USxRQXlEY3hRO1FBQ2pCLE9BL0RGeWhCO2lCQStERTs7cUJBNVBGRDttQkFBQUE7bUJBMlBtQnhoQjs7T0FDcUQ7O2dCQTFEbkV3USxRQTREZWhULEdBQUV3QztRQUNBLFdBQUEsV0E3RGpCd1EscUJBQUFBLFlBNERpQnhRO1FBQ0EsT0FBQSxXQUFwQixpQkE3REd3USxTQTREZWhUO09BQ2lDOztnQkE3RGhEZ1QsUUErRGN4UTtRQUNqQixPQXJFRnloQjtpQkFxRUU7O3FCQWxRRkQ7bUJBQUFBO21CQWlRbUJ4aEI7O09BQ3FEOztnQkFoRW5Fd1EsUUFrRWV4UTtRQUNsQixPQXhFRnloQjtpQkF3RUU7O3FCQXJRRkQ7bUJBQUFBO21CQW9Rb0J4aEI7O09BQ3FEOztnQkFuRXBFd1EsUUFxRXNCeFE7UUFDekIsT0EzRUZ5aEI7aUJBMkVFOztxQkF4UUZEO21CQUFBQTttQkF1UTJCeGhCOztPQUVKOztnQkF2RWxCd1EsUUF5RTJCeFE7UUFDOUIsT0EvRUZ5aEI7aUJBK0VFOztxQkE1UUZEO21CQUFBQTttQkEyUWdDeGhCOztPQUVUOztnQkEzRWxCd1EsUUE2RW9CeFE7UUFDdkIsT0FuRkZ5aEI7aUJBbUZFOztxQkFoUkZEO21CQUFBQTttQkErUXlCeGhCOztPQUVGOztnQkEvRWxCd1EsUUFpRm9CeFE7UUFDdkIsT0F2RkZ5aEI7aUJBdUZFOztxQkFwUkZEO21CQUFBQTttQkFtUnlCeGhCOztPQUVGOztnQkFuRmxCd1EsUUFxRmlCaFQsR0FBRXdDO1FBQ0EsV0FBQSxXQXRGbkJ3USxxQkFBQUEsWUFxRm1CeFE7UUFDQSxPQUFBLFdBQXRCLGlCQXRGR3dRLFNBcUZpQmhUO09BQ21DOztnQkF0RnBEZ1QsUUF3RmV4UTtRQUNsQixPQTlGRnloQjtpQkE4RkU7O3FCQTNSRkQ7bUJBQUFBO21CQTBSb0J4aEI7O09BQ3FEOztnQkF6RnBFd1EsUUEyRmlCeFE7UUFDcEIsT0FqR0Z5aEI7aUJBaUdFOztxQkE5UkZEO21CQUFBQTttQkE2UnNCeGhCOztPQUNxRDs7Z0JBNUZ0RXdRLFFBOEZrQnhRO1FBQ3JCLE9BcEdGeWhCO2lCQW9HRTs7cUJBalNGRDttQkFBQUE7bUJBZ1N1QnhoQjs7T0FDcUQ7O2dCQS9GdkV3USxRQWlHZXhRO1FBQ2xCLE9BdkdGeWhCO2lCQXVHRTs7cUJBcFNGRDttQkFBQUE7bUJBbVNvQnhoQjs7T0FDcUQ7O2dCQWxHcEV3USxRQW9Hb0J4UTtRQUN2QixPQTFHRnloQjtpQkEwR0U7O3FCQXZTRkQ7bUJBQUFBO21CQXNTeUJ4aEI7O09BRUY7O2dCQXRHbEJ3USxRQXdHYXhRO1FBQ2hCLE9BOUdGeWhCO2lCQThHRTs7cUJBM1NGRDttQkFBQUE7bUJBMFNrQnhoQjs7T0FDcUQ7O2dCQXpHbEV3USxRQTJHa0J4UTtRQUNyQixPQWpIRnloQjtpQkFpSEU7O3FCQTlTRkQ7bUJBQUFBO21CQTZTdUJ4aEI7O09BQ3FEOztnQkE1R3ZFd1EsUUE4R2tCMlE7UUFDckIsT0FwSEZNO2lCQW9IRTs7cUJBalRGRDttQkFBQUE7bUJBZ1R1Qkw7O09BRUE7O2dCQWhIbEIzUSxRQWtIa0IyUTtRQUNyQixPQXhIRk07aUJBd0hFOztxQkFyVEZEO21CQUFBQTttQkFvVHVCTDs7T0FFQTs7Ozs7T0FySHZCTztZQXdIQUM7SUFBa0IsT0EzZVAsK0JBQVgxQztHQTJlZ0Q7Ozs7Ozs7OztpQkFHNUMyQyxRQUdjeFI7SUFFTjtLQUYwQ2xnQixVQUFwQ2tnQjtLQUFlcmlCLE9BQWZxaUI7S0FFWnBpQixNQUFNLDhCQUZNb2lCO0lBR2hCLFdBQUEsaUJBTkV3UixTQUdrRDF4QjtJQUdwRCxPQUFBLCtCQXBmRit1QixVQWlmaUNseEIsTUFFM0JDOzs7Ozs7T0FOTjZ6QjtZQVdBQztJQUNGLFNBQUkveEIsS0FBS2hDLE1BQUtDLEtBQUkwUTtLQUNoQixJQUFJckIsTUFER3RQO0tBRUEsT0FBQSwyQkFESHNQO2VBRFlxQjttQkFHZCxtQ0FIVTFRLFdBQ1JxUCxNQURZcUI7SUFLUjtJQUVWLE9BQUEsZ0NBUEkzTyxNQXpmRmt2QjtHQWdnQm1DO1lBRW5DOEM7SUFDSSxZQVhKRDtnQkFZTTtRQUNOdFQ7SUFBWSxPQUFBLG1DQUFaQTtHQUFvQzs7WUFFcEN3VCw2QkFBNkJDO0lBQy9COzs7Ozs7Ozs7OztpQkFBTUM7bUJBQUFBLGtCQUdpRGh5QixvQkFBckJuQztTQUM5QixXQUFBLGlCQUpFbTBCLFNBR2lEaHlCO1NBQ25ELE9BQUEsdUNBRDhCbkM7Ozs7Ozs7Ozs7Ozs7O3VDQUpIazBCO0dBTzVCO1lBRURFO0lBQ0Y7S0FBa0MsT0FBQSxnQ0FqaEJoQ2xEO0tBaWhCRW1ELE9BQU87S0FDVSxPQUFBLCtCQURqQkE7SUFDSixzQ0FsaEJFbkQ7SUFraEJGLE9BREltRDtHQUVBO1lBRUZDLHlCQUF5QjlFO0lBQzNCO0tBQUkwRSxRQU5GRTtLQU9GLE9BaEJFSCw2QkFlRUM7SUFDSixXQUFBLG9EQUYyQjFFO0lBRTNCO2tCQUVPeHZCLE1BQUtDLEtBQUkwUSxLQUFPLGVBQWhCM1EsU0FBS0MsTUFBSTBRLEtBQXFDO0lBRnJELE9BQUEsc0NBREl1akI7R0FJTTtZQUVSSyx5QkFBeUJDO0lBQzNCO0tBQUlOLFFBYkZFO0tBY0YsT0F2QkVILDZCQXNCRUM7SUFDSixXQUFBLG1EQUYyQk07SUFFM0I7a0JBRU94MEIsTUFBS0MsS0FBSTBRLEtBQU8sZUFBaEIzUSxTQUFLQyxNQUFJMFEsS0FBcUM7SUFGckQsT0FBQSxzQ0FESXVqQjtHQUlNOzs7OztRQWx6Qk5sckI7UUFDQTlEO1FBQ0F5SjtRQUNBSztRQUNBRjtRQUNBbEc7UUFDQWdtQjtRQUNBQztRQUNBQztRQUNBMWY7UUFDQTJmO1FBQ0FDO1FBQ0FqckI7UUFDQWtyQjtRQUNBQztRQUNBQztRQUNBdmxCO1FBQ0FpQjtRQUNBdWtCO1FBQ0F0bUI7UUFDQXVtQjtRQUNBbGdCO1FBQ0F4RjtRQUNBK0Q7UUFDQWM7UUFDQWY7UUFDQWpCO1FBQ0E4aUI7T0E0TkZrQjtPQUdBQztPQUlBRTtPQU1BRTtPQTlCQTd3QjtPQUNBeWQ7T0FpRkFzVTtPQVNBclk7T0FJQXNZO09BTUFDO09BSUFDO09BV0FHO09BSUFDO09Bc0JBRTs7WUFyTUUxQyxnQkFDQUMsZ0JBQ0FDLGVBQ0FDO1FBaU9BeUM7UUFGQTFiO1FBVUEyYjtRQXFCQUU7T0EzSkZ6QjtPQStXQXVDO09Bak1BRjtPQTJUQUs7T0FXQUM7T0FVQUM7T0FqZ0JBN0M7T0FvaEJBbUQ7T0FPQUM7T0FqREFYO09BM1hBOUI7T0FUQVc7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O1lDaFpBZ0MsVUFBV0M7SUFDYjtLQU53QkMsV0FPdEIsZ0NBRldEO0tBSlAsUUFBQSxrQ0FEa0JDOztLQUVoQixNQUFBO0lBS047S0FKQTMwQjtLQUdFNDBCLG1CQUNGLGtDQUpBNTBCO0lBT0YsV0FMYTAwQixXQUNURSxxQkFBQUE7R0FZSDtZQUVDRixVQUFVMXpCLEdBQUksT0FBSkEsS0FBZTtZQUN6QjR6QixpQkFBaUI1ekIsR0FBSSxPQUFKQSxLQUFzQjtZQUN2QzZ6QixpQkFBaUI3ekIsR0FBSSxPQUFKQSxLQUFzQjtZQUN2Qzh6QixnQkFBZ0I5ekIsR0FBSSxPQUFKQSxLQUFxQjtZQUVyQyt6QixlQUFlL3pCO0lBQ2pCLFVBRGlCQTtpQkFDSWcwQixTQUFXLE9BQVhBLFdBQXNCO0lBQTNCLE9BQUE7R0FBNkM7WUFFM0R6YSxNQUFNdlo7SUFBSSxhQUFtQmcwQixTQUFXLE9BQVhBLFdBQXNCO0lBQTNCLE9BQUEsaUNBQWxCaDBCO0dBQXNEO1lBRTVEaTBCLHFCQUFxQmowQjtJQUN2QixJQUFJazBCLFVBSEYzYSxNQUVxQnZaLElBRXZCLE1BRnVCQTtpQkFHQWcwQixTQUFXLFdBQVhBLFlBQTJCO0lBQWhEO0tBREVELGlCQUNGO0tBRUVyYTtPQUFRO29DQUxXMVosT0FFbkIrekIscUJBREFHO0tBS3NCLE1BQUEsa0NBRHRCeGE7SUFDc0IsT0FBQSxXQUExQjtHQUErQztZQUU3Q3lhLFdBQVduMEIsR0FBSSxXQUFKQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxTQUE2QjtZQUV4Q28wQixhQUFjbjFCLEtBQUlvMUIsYUFBWXIwQjtJQUNoQyxPQURnQ0E7a0JBQUFBLE1BQUFBLE1BQUFBLE1BQVpxMEIsYUFBWXIwQixNQUFBQSxNQUFBQTs7Y0FBQUE7Y0FBQUE7c0JBQVpxMEIsYUFBSnAxQixNQUFnQmU7Y0FBWnEwQjtjQUFZcjBCO2NBQUFBO2NBQUFBO0dBTzdCO1lBRURzMEIsWUFBYXIxQixLQUFJczFCLFlBQVd2MEI7SUFDOUIsT0FEOEJBO2tCQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxVQUFYdTBCLGFBQVd2MEIsTUFBQUE7O2NBQUFBO2NBQUFBO2NBQUFBO2NBQUFBO2tCQUFYdTBCO3NCQUFBQSxZQUFKdDFCO2NBQWVlO0dBTzNCO1lBRUR3MEIsZUFBZXgwQjtJQUEyQyxVQWpDMUQrekIsZUFpQ2UvekI7SUFBMkIsT0FBQSw0Q0FBM0JBO0dBQTREO1lBQzNFeTBCLGlCQUFpQmhtQixHQUFHeFAsS0FBS2dQO0lBQU8sT0FBYSxXQUE1QlEsR0FBR3hQLEtBRHBCdTFCLGVBQ3lCdm1CO0dBQXlDOzs7O09BdkNsRXlsQjtPQUNBRTtPQUlBRztPQUhBRjtPQU1BdGE7T0FMQXVhO09BT0FHO09BNEJBTztPQXJEQWY7T0FpQ0FVO09BRUFDO09BU0FFO09BVUFHOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7WUNwRUVoQixVQUFXaUIsV0FBV2hCLFdBQVdpQjtJQUNuQixJQUFaQyxZQUFZLGdDQURRbEI7SUFFeEIsV0FGYWdCLFdBQ1RFLFdBRCtCRDtHQUVDO1lBRWxDQyxVQUFVNTBCLEdBQUksT0FBSkEsS0FBZTtZQUN6QjIwQixXQUFXMzBCLEdBQUksT0FBSkEsS0FBZ0I7WUFDM0IwMEIsVUFBVTEwQixHQUFJLE9BQUpBLEtBQWU7WUFDekJtMEIsV0FBV24wQjtJQUFJLFVBQUpBLE1BQXlCLE1BQUEsaUNBQXpCQTtJQUFJLFdBQUpBO0dBQTJEO1lBRXRFbzBCLGFBQWNuMUIsS0FBSUQsTUFBS2dCO0lBQ3pCLFVBRHlCQSxNQUNKLE1BQUEsaUNBRExmLEtBQUlELE1BQUtnQjtJQUN6QixXQUR5QkE7R0FDMEM7WUFFakVzMEIsWUFBYXIxQixLQUFJRCxNQUFLZ0I7SUFDeEIsVUFEd0JBLE1BQ0gsTUFBQSxpQ0FETmYsS0FBSUQsTUFBS2dCO0lBQ3hCLFdBRHdCQTtHQUMwQztZQU1oRXVPLEtBQU1zbUIscUJBQXFCQyxhQUFVLFdBQS9CRCxxQkFBcUJDO0dBQXVDO1lBQ2xFRCxvQkFBb0I3MEIsR0FBSSxPQUFKQSxLQUF5QjtZQUM3QyswQixZQUFVLzBCLEdBQUksT0FBSkEsUUFBb0I7WUFDOUJnMUIsYUFBV2gxQixHQUFJLE9BQUpBLFFBQXFCO1lBQ2hDaTFCLFlBQVVqMUIsR0FBSSxPQUFKQSxRQUFvQjtZQUU5QmsxQixrQkFBa0J6bUIsR0FBRzBtQjtJQUVmLFVBQUEsZ0NBRmVBO0lBRWYsT0FBQSxXQUZZMW1CLEdBQUcwbUI7R0FFK0I7WUFNcERDLE9BQU1DLGtCQUFrQkMsUUFBUVIsYUFDbEMsV0FEUU8sa0JBQWtCQyxRQUFRUjtHQUNBO1lBRWhDTyxpQkFBaUJyMUIsR0FBSSxPQUFKQSxLQUFzQjtZQUN2Q3UxQixZQUFVdjFCLEdBQUksT0FBSkEsUUFBb0I7WUFDOUJ3MUIsYUFBV3gxQixHQUFJLE9BQUpBLFFBQXFCO1lBQ2hDeTFCLFlBQVV6MUIsR0FBSSxPQUFKQSxRQUFvQjtZQUM5QnMxQixPQUFPdDFCLEdBQUksT0FBSkEsS0FBWTtZQUVuQjAxQixvQkFBa0JqbkIsR0FBRzBtQjtJQUVmLFVBQUEsZ0NBRmVBO0lBRWYsT0FBQSxXQUZZMW1CLEdBQUcwbUI7R0FFK0I7Ozs7O1FBeENwRFA7UUFDQUQ7UUFDQUQ7UUFOQWpCO1FBT0FVO1FBRUFDO1FBR0FFOztRQVFBTztRQUNBRTtRQUNBQztRQUNBQztRQUVBQztRQU5BM21COztRQWlCQThtQjtRQUNBRTtRQUNBQztRQUNBQztRQUdBQztRQUZBSjtRQVBBRjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUMxQkZmO0lBQWMsWUFBaUI7UUFBV3IxQjtJQUFRLE9BQVJBO0dBQVk7WUFDdEQyMkIsTUFBTTMyQixNQUFLaVA7SUFBTyxHQUFHLGtDQUFWQSxPQUFvQyxPQUF6Q2pQO0lBQTBELFdBQUEsOEJBQTFEQTtJQUEwRCxPQUFBLHVCQUFyRGlQO0dBQStEO1lBQzFFMm5CLFVBQVVDLFVBQVM1bkI7SUFBTyxPQUQxQjBuQixNQURBdEIsWUFFVXdCLFdBQVM1bkI7R0FBd0M7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBR3ZEcVQsUUEyQm1CclQsTUFBSzZuQjtTQUNMLFdBL0J2QkYsVUE4QjRCRSxVQUFMN25CO1NBQ3JCLE9BQUEsV0FBQSxpQkE1QkVxVCxlQTJCd0J3VTtRQUM4Qjs7aUJBNUJ0RHhVLFFBOEJ1QnJULE1BQUs4bkI7U0FDTCxXQWxDM0JILFVBaUNnQ0csVUFBTDluQjtTQUN6QixPQUFBLFdBQUEsaUJBL0JFcVQsZUE4QjRCeVU7UUFDOEI7O2lCQS9CMUR6VSxRQWlDNEJyVCxNQUFLK25CO1NBQ0wsV0F0Q2hDTCxNQXFDcUNLLFdBQUwvbkI7U0FDOUIsT0FBQSxXQUFBLGlCQWxDRXFULGVBaUNpQzBVO1FBQzZCOzs7Ozs7Ozs7Ozs7OztnQkFJOUR2VSxRQUdZcGhCLEdBQUVzUDtJQUNoQixJQUFJb0csUUFBTSxXQUFBLGdCQUpSMEwsU0FHWXBoQixHQUFFc1AsTUFFaEIsT0FGY3RQOztTQUVvQmlPO0tBQVksV0FBWkEsS0FEOUJ5SDs7SUFDNEQsT0FENURBO0dBQytEOzs7OztPQU5yRWtnQjtZQVNBQyxvQkFBcUJqM0IsS0FBSTQyQixVQUFTVjtJQUNLLFdBcER2Q2QsWUFtRHlCd0I7SUFDM0IsT0FBQSwyQ0FEdUI1MkIsV0FBYWsyQjtHQUNnQztHQUlyQjs7SUFBQSxNQUFBO0lBQVosTUFBQTtJQUFwQixNQUFBO0lBRmJiO01BQ0Y7OztJQU1tRCxNQUFBO0lBQWhCLE1BQUE7SUFBcEIsTUFBQTtJQUZiRjtNQUNGO0lBTWUsTUFBQTtJQUZiK0I7TUFDRjs7SUFNZSxNQUFBO0lBRmJDO01BQ0Y7O0lBTWUsTUFBQTtJQUZiQztNQUNGOztJQU1lLE1BQUE7SUFGYkM7TUFDRjs7SUFNZSxNQUFBO0lBRmJDO01BQ0Y7O0lBTWUsTUFBQTtJQUZiQztNQUNGOztnQkFLVzlZLEtBQUt6TSxHQUFJLFdBQUpBLE1BQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBQ3BCNGhCLFFBSVEsT0FKUkEsaUJBSWM7O2lCQUpkQSxRQUtXLE9BTFhBLGlCQUtpQjs7aUJBTGpCQSxRQU1TLE9BTlRBLGlCQU1lOztpQkFOZkEsUUFPUyxPQVBUQSxpQkFPZTs7aUJBUGZBLFFBUVUsT0FSVkEsaUJBUWdCOztpQkFSaEJBLFFBU1UsT0FUVkEsaUJBU2dCOztpQkFUaEJBLFFBVVUsT0FWVkEsaUJBVWdCOztpQkFWaEJBLFFBV2MsT0FYZEEsaUJBV29COztpQkFYcEJBLFFBWVMsT0FaVEEsaUJBWWU7O2lCQVpmQSxRQW9CQ3BrQixHQUFFaVAsS0FBSTNPO1NBQ1I7VUFBbUMsT0FBQSxtQ0FEM0JBO1VBQ1csUUFBQSxXQXJCbEI4akIscUJBQUFBLFFBb0JDcGtCLEdBQUVpUDtVQUNNMkI7VUFBTm5DO1NBQ0osV0FBQyxtQ0FER0EsT0FBTW1DO1FBQ2tCOztpQkF0QjNCd1QscUJBeUJRLFNBQUU7O2lCQXpCVkEsUUEyQlNuVixLQUFLcmE7U0FBUyxvQjtTQUEwQixPQUFBLGtDQUFuQ0E7UUFBc0M7O2lCQTNCcER3dkIsUUE0QlNuVixLQUFLK1ksS0FBS3J5QjtTQUFPLE9BQUEsa0NBQVBBO1FBQXVCOztpQkE1QjFDeXVCLFFBNkJRblYsS0FBS2hPLEdBQUksT0FBQSxrQ0FBSkEsR0FBaUI7O2lCQTdCOUJtakIsUUErQmNzQyxNQUNmanlCOztVQUF3Q3NpQixrQkFBeEN0aUI7VUFBd0J3ekIsaUJBQXhCeHpCO1VBQWNxaUIsV0FBZHJpQjtVQUFHeXpCLFlBQUh6ekI7U0FDRjtVQUVNLFlBRk4sT0FGaUJpeUI7Z0NBTU5sMkIsZ0JBQUtxUDtVQUFTLE9BQUEsMkNBQWRyUCxLQUFLcVAsS0FOQzZtQjtTQU13RDtTQUh2RTtVQUFBLE9BQUEsZ0NBNUVKYixnQkEwRUlweEI7O1VBQ0UwekIsYUFDRjt1QkFLaUJ6QjtVQUNSLElBQVAwQixTQUFPLDJDQURRMUI7OztxQkFQZHdCLGlDQUFBQTtZQWF5QjthQUZTcnVCLE9BWGxDcXVCO2FBV3FCdEksY0FYckJzSTthQVdlMzNCLE9BWGYyM0I7YUFheUIsT0FBQSxXQTdDM0I5RCxxQkFBQUE7YUE2Q2MsT0FBQSxXQTdDZEEscUJBQUFBO2FBNkNLO2VBQUEsV0E3Q0xBLHFCQUFBQSxjQXdDQ2dFLFFBR2dCNzNCO2FBQ0o4M0I7YUFBTjlnQjs7O2dCQU9JOzBCQVhWNmdCOzBCQXJGTlgsb0JBd0Y0QjdILGdCQUNoQnJZLFdBSk42Z0I7ZUFjcUU7YUFML0Q7ZUFBQTtzQ0F4RFpMLDRCQXVDSXR6Qjs7YUFnQlU2ekIsa0JBQ0Y7O3dCQU9zQjVCO2dCQUFRLE9BQWhDO3lCQXhETHRDLHFCQUFBQSxRQXdENkJzQyxNQWJOOUc7ZUFhK0M7YUFBakUsVUFBQSxpQ0FSSTBJO2FBRFdDO2FBQWJDO2FBV29CLFVBQUEsV0ExRDNCcEUscUJBQUFBLFFBd0NDZ0UsUUFHbUN2dUI7YUFldkI0dUI7YUFBTnhoQjthQUNBMko7ZUFDRjtpQkE1REx3VDtpQkFBQUE7aUJBd0NDZ0U7OztrQkFJWUM7c0JBR09FLHdCQVdQRTthQWpCREMsZ0JBa0JMOVg7YUFsQk4rWCxtQkFHTXBoQixRQUdBaWhCLGVBV0F2aEI7Ozs7OEJBMURQbWQscUJBQUFBLFFBd0NDZ0UsUUFSQ0Y7WUFTVVU7WUFBWEM7WUFBV0gsZ0JBQUFFO1lBQVhELGNBQUFFOztVQXlCdUI7V0FBQSxRQUFBLFdBbEV4QnpFLHFCQUFBQSxRQXdDQ2dFLFFBUll0UjtXQWtDRmdTO1dBQVZDO1dBRVEsT0FBQSxXQXBFVDNFLHFCQUFBQTtXQW9FRDthQUFBO2VBcEVDQSxxQkFBQUEsY0F3Q0NnRSxRQVJzQkg7V0FtQ05lO1dBQWhCQztXQUlGO2FBQUEsV0F2RUM3RSxxQkFBQUEsUUF3Q0NnRSxRQVJzQ3JSO1dBc0NyQnBFO1dBQWpCdVc7VUFHSjs7bUJBaENJUDttQkF5QkFJO21CQUNBRTttQkFHQUM7a0JBSUY7b0JBMUVDOUU7b0JBQUFBO29CQXdDQ2dFOzt3Q0FDV007O3dDQXlCREk7OytDQUNNRTsrQ0FHQ3JXO1NBVWQ7U0F6Q1EsT0FBQSxpQ0FOWHdWOzs7aUJBakNEL0QsUUFrRmVzQyxNQUFLeUM7O1VBR2pCLFlBRk4sT0FEa0J6QztnQ0FLUGwyQixnQkFBS3FQO1VBQVMsT0FBQSwyQ0FBZHJQLEtBQUtxUCxLQUxFNm1CO1NBS3dEO1NBSHhFO1VBQUEsT0FBQSxnQ0F6SEpmLGlCQXVIeUJ3RDs7VUFDbkJDLG1CQUNGO3VCQUt1QjFDO1VBQVEsT0FBakMsV0FBaUMsaUJBekY5QnRDLFNBeUZzQnNDLE1BUEZ5QztTQU9tQztTQUFyQyxPQUFBLGlDQU5qQkM7UUFNc0Q7O2lCQXpGdkRoRixRQTJGa0JzQyxNQUFLVzs7VUFJcEIsZUFKZVgsT0F4SXZCZSxvQkF3STRCSixPQUFBQSxVQUFMWDtTQU0rQztTQUpsRTtVQUFBO1lBQUE7bUNBbkhKa0IsZ0NBaUg0QlA7O1VBQ3RCZ0Msc0JBQ0Y7dUJBTTBCM0M7VUFBUSxPQUFwQyxXQUFvQyxpQkFuR2pDdEMsU0FtR3lCc0MsTUFSRlc7U0FRc0M7U0FBeEMsT0FBQSxpQ0FQcEJnQztRQU80RDs7aUJBbkc3RGpGLFFBcUdzQnNDLE1BQUtZOztVQUl4QixlQUptQlosT0FsSjNCZSxvQkFrSmdDSCxPQUFBQSxVQUFMWjtTQU0yQztTQUpsRTtVQUFBO1lBQUE7bUNBeEhKbUIsbUNBc0hnQ1A7O1VBQzFCZ0M7WUFDRjt1QkFNOEI1QztVQUFRLE9BQXhDLFdBQXdDLGlCQTdHckN0QyxTQTZHNkJzQyxNQVJGWTtTQVEwQztTQUE1QyxPQUFBO3dDQVB4QmdDO1FBT29FOztpQkE3R3JFbEYsUUErRzJCc0MsTUFBS2E7O1VBSTdCO29CQUp3QmI7O3FEQUFLYSxRQUFBQSxXQUFMYjtTQVFBO1NBTjVCO1VBQUE7WUFBQTttQ0E3SEpvQixtQ0EySHFDUDs7VUFDL0JnQztZQUNGO3VCQVFtQzdDO1VBQ3JDLE9BREEsV0FDQSxpQkExSEd0QyxTQXlIa0NzQyxNQVZGYTtTQVdHO1NBREwsT0FBQTt3Q0FUN0JnQztRQVVrQzs7aUJBMUhuQ25GLFFBNEhxQnNDLE1BQUs4Qzs7VUFJdkI7b0JBSmtCOUM7O3FEQUFLOEMsT0FBQUEsVUFBTDlDO1NBUVo7U0FOVjtVQUFBO1lBQUE7bUNBekpKaUIsbUNBdUorQjZCOztVQUN6QkM7WUFDRjt1QkFRNkIvQztVQUFRLE9BQXZDLFdBQXVDLGlCQXRJcEN0QyxTQXNJNEJzQyxNQVZGOEM7U0FVeUM7U0FBM0MsT0FBQSxpQ0FUdkJDO1FBU2tFOztpQkF0SW5FckYsUUF3SWlCc0MsTUFDbEJnRDs7VUFBc0NDLFVBQXRDRDtVQUFzQkUsaUJBQXRCRjtVQUFZRyxXQUFaSDtVQUFHSSxVQUFISjs7VUFFRSxVQURKLE9BQUEsV0FFYSxpQkE1SVZ0RixTQXdJaUJzQyxNQUNsQmdEO1VBTVU7O2FBQUE7OENBck1kbEM7ZUFBQUE7ZUErTE9zQzs7Ozs7O2FBUUtDO2FBSEZDO2VBSUU7aURBVDhCTCxTQVE5QkksVUFUVXJEOzs7ZUFNWnNELGtCQU5ZdEQ7O1VBWVU7V0FBQSxVQUFBLFdBcEozQnRDLHFCQUFBQSxRQXdJaUJzQyxNQUNmb0Q7V0FXWUc7V0FBVEM7V0FFRjthQUFBO2VBdEpIOUYscUJBQUFBLFFBOElLNEYsaUJBTE1IO1dBWUlNO1dBQVZDO1dBSUY7YUFBQTtlQXpKSGhHLHFCQUFBQSxRQThJSzRGLGlCQUxnQko7V0FlQWpYO1dBQWhCMFg7V0FHc0IsVUFBQSxXQTNKM0JqRyxxQkFBQUEsUUF3SWlCc0MsTUFDb0JpRDtXQWtCdkJiO1dBQVR3QjtXQUNBMVo7YUFDRjtlQTdKSHdUO2VBQUFBO2VBd0lpQnNDOztpQ0FZSHVEOzttQ0FDQ0U7OzBDQUdNeFg7dUNBR1BtVztVQVViO3NCQWpCSW9CLFdBQ0FFLFlBR0FDLGtCQUdBQztrQkFDQTFaO1NBU29EO1NBM0I1RDtVQUFBO1lBQUEsZ0NBMUtGOFcsK0JBeUtJZ0M7O1NBRUUsT0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQThCRmhGLFFBRVMseUJBQVc7O2lCQUZwQkEsUUFHWSx3QkFBYzs7aUJBSDFCQSxRQUlVLHdCQUFZOztpQkFKdEJBLFFBS1Usd0JBQVk7O2lCQUx0QkEsUUFNVyx5QkFBYTs7aUJBTnhCQSxRQU9XLHlCQUFhOztpQkFQeEJBLFFBUVcseUJBQWE7O2lCQVJ4QkEsUUFTZSx5QkFBaUI7O2lCQVRoQ0EsUUFVVSx3QkFBWTs7aUJBVnRCQSxRQVdZLHlCQUFjOztpQkFYMUJBLFFBWVUseUJBQVk7O2lCQVp0QkEsUUFhc0QseUJBQWE7O2lCQWJuRUEsZUFjdUMsV0FBYTs7aUJBZHBEQSxRQWdCVTl2QjtTQUNaO1VBQ3NCLElBQWEyMUIsaUJBQVBsakI7VUFDckIsbUJBRHFCQSxZQUFPa2pCO1NBQ0c7U0FGdEMsV0FDRSxrQ0FGVTMxQjtRQUcyQjs7aUJBbkJyQzh2QixRQXFCVXNELEtBQUlyeUI7U0FDaEIsT0FEZ0JBLG1CQUFKcXlCLE1BQUlyeUIsYUFBSnF5QjtRQUNpRDs7aUJBdEIzRHRELFFBd0JTempCLEdBQUksV0FBSkEsR0FBVTs7Ozs7Ozs7O0lBR3ZCdXBCOzs7Ozs7Ozs7T0E5T0EzRTtPQUtBRjtPQUtBK0I7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7Ozs7O09BMk1BeUM7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ2xTQUM7Ozs7Ozs7Ozs7Ozs7OztJOzs7RztZQTRGSUMsZUFFMkIzNUI7SUFEaEMsSUFDdUM0NUI7SUFDeEM7S0FBTTtNQURrQ0M7UUFDbEM7NkJBL0ZKSCxrQkE4RnNDRSxpQkFBUDU1QjthQUFPNjVCO2FBQUFBOztTLGtCQUFQNzVCOztTLGtCQUFBQTtpQjs7S0FpQlYsV0FqQlVBLFdBQUFBO1NBQU80NUIsa0JBQUFDOztHQURBO21DQURsQ0Y7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN0R0pHLFlBQVluNkIsSUFBSW82QixRQUFROXFCO0lBQzFCLEdBRGN0UDtTQWNQcTZCLE9BZE9yNkI7cUNBY1BxNkI7TUFBTSxPQUFBLHFDQWRLRCxrQkFjWEMsTUFkbUIvcUI7O0lBWXRCLG1DQVpjOHFCO0lBWWQsT0FBQSxXQVpzQjlxQjtHQWNzQjtZQUs1Q2dyQixZQUFZdDZCO0lBQ2QsT0FBRywrQkFEV0E7O2NBRU4sK0JBRk1BO0dBR0w7WUFFUHU2QjtJQUFXO0dBQXVEO0dBUjFELElBU1JwUCw4QkFUUSxXQUdSbVAsYUFLQUMsVUFDQXBQO1lBTUE5YixJQUFJeE8sR0FBR3dPO0lBQ1QsU0FETXhPO1NBR0NpUixJQUhEalI7S0FHTTthQUFLLGtDQUhSd08scUJBQUFBLEtBR0Z5Qzs7UUFEQXNQLE1BRkR2Z0I7SUFFTTtZQUFLLGtDQUZSd08sc0JBQUFBLEtBRUYrUjtHQUMyQjtZQUVoQ29aLGlCQUFpQjM1QixHQUFHd08sS0FBdUNrUDtJQUM3RCxTQURtQjFkO1NBR1ppUixJQUhZalI7S0FHUDthQUFLO3NDQUhLd08scUJBQUFBLEtBQXVDa1AsS0FHdER6TTs7UUFEQXNQLE1BRll2Z0I7SUFFUDtZQUFLO3FDQUZLd08sc0JBQUFBLEtBQXVDa1AsS0FFdEQ2QztHQUMrQjtZQUVwQzFZLFlBQXFCLDhCQUF3QztHQWI3QztJQUFBLG1CQUdoQjJHLEtBS0FtckIsa0JBS0E5eEI7OztJQU1BK3hCOztJQTJEQUM7WUFRQUMsaUJBQWlCbkY7SUFDbkIsU0FBSW1GLGlCQUFpQkM7S0FFbkI7TUFBSUMsU0FBUyxpQ0FGTUQ7TUFHZnY2QixTQUFTLGdDQURUdzZCO0tBRUosbUNBREl4NkI7S0FDSixPQURJQTtJQUVFO0lBRVI7S0FBTSxzQ0FSYW0xQixZQUNmbUY7S0FRcUI7Ozs7K0JBQ0U7OztHQUFFO1lBRTNCRyxhQUFhQyxJQUFJQzthQUNmQyxrQkFBa0JDO0tBQ3BCLEtBRmlCRixZQUtPO0tBckRFO01BSlV4RixhQW9EbkJ3RjtNQXBER3R5QixPQW9ESHN5Qjs7O01BaERmRztLQUNKO01BVzZDO09BQUEsTUFBQSxpQ0FvQzlCSjtPQXBDVEssYUFBYSx1QkFxQ0dGO09BcENoQjc2QixTQUFTLGdDQURUKzZCO09BRUosTUFESS82QjtNQUFBQSxpQkFqQmdDbTFCO01BbUJwQyxtQ0FGSW4xQjtNQUdKLHFDQUhJQTtNQVNKO09BTElnN0I7U0FyQmdCM3lCO2dCQXdCSCxvQ0FQYnJJO2dCQU1hLG9DQU5iQTtPQVNKLGNBMUJvQ20xQixZQUlsQzJGLGVBaUJFRTtNQUtKOztXQUNHQztNQUNHO09BREhsWSwwQkFBQWtZO09BQ0csUUFBQSxtQ0FESGxZO2tCQUVPLE1BQUEsNEJBRlBBO1VBR0lDO01BQVMsZUFBVEEsT0ExQkw4WDs7SUFxRDRDO0lBS2hELHVCQVZlSjtJQWpCTDtLQUFObmEsTUFBTSwwQkFIUjhaO0tBSUU5cEIsTUFBTSx1QkFnQkttcUIsSUFqQlhuYSxRQUhGOFo7S0FLRWhyQixJQUFJLGtDQUZKa1IsUUFDQWhRO0tBRUQ7T0FBQSw4QkFGQ0EsS0FKRjhwQixvQkFLRWhyQixTQUFBQTsyQkEyQkltQyxnQkFBSyxPQVhUb3BCLGtCQVdJcHBCO0lBRUUsSUFETDFCLGdCQUNLLFVBQUEsdUNBRExBOzs7TUFlNkI7T0FEZm9yQjtPQUNQL0YsYUFBc0IsdUJBNUJuQnVGO09BNkJITSxNQUFNLHVCQTdCSE47T0E4QlA7O09BQXNEOzt3REFIM0NRO01BdkNqQlosaUJBd0NVbkY7TUFJTSxJQUFOZ0csWUFBd0IsK0JBSHhCSDtNQUlKLGVBTEk3RixZQURPK0YsZUFLUEM7O0tBaEJzQjtNQURmQztNQUNQNUYsZUFBc0IsdUJBaEJuQmtGO01BaUJIVyxRQUFNLHVCQWpCSFg7TUFrQlA7O01BQXNEOzt1REFIM0NVO0tBM0JqQmQsaUJBNEJVOUU7S0FJTSxJQUFOOEYsWUFBd0IsaUNBSHhCRDtLQUlKLGVBTEk3RixjQURPNEYsaUJBS1BFOztJQXVCQTtLQUFBLE1BQUE7S0FEQSxNQUFBLGtDQTdCUHhyQjtJQTRCSyxLQUFBO0tBS0s7TUFBQSxNQUFBO01BREEsTUFBQSxrQ0FoQ1ZBO0tBK0JRLEtBQUE7TUFJQSxPQS9DVDhxQixrQkFZQzlxQjs7SUFrQ1EsZUFsQ1JBLEtBNUZIc3FCO0dBK0grQjtZQUUvQm1CLEtBQUtDLGNBQWNiO0lBQ3JCO1FBRE9hOztPQU1FNzdCLEtBTkY2N0I7MkJBTVEsT0F4RGJmLGtCQWtEbUJFO2FBTU4sb0NBQU5oN0I7O01BRkg7Z0JBdERKODZCLHlCQWtEbUJFOztLQU1OOztVQUNWTTtLQUNHO01BREhsWSwwQkFBQWtZO01BQ0csUUFBQSxtQ0FESGxZO2lCQUVPLE1BQUEsNEJBRlBBO1NBR0lDO0tBQVMsZUFBVEEsT0EzSVBvWDs7R0EySXNFO1lBRXRFcUIsTUFBTUM7UUFBeURWLGdCQUF4QkUsMEJBQTVCL0Y7b0JBQ1Z3RztLQUNIOzs7Ozs7OztVQUZ5Q1Q7Ozs7Ozs7O1VBQUFBO2NBQXdCRjtVQUsxRGhILEtBTDBEZ0g7TUFNN0QsR0FMRFc7T0FPSztRQUFBLE1BQUEsdUNBSEQzSDtRQUdDO1VBQUEsV0FDRztRQUhINEgsT0FFQTs7V0FGQUEsT0FLRywrQkFOSjVIO01BUUgsdUJBYkkwSCxJQUFpQ1I7TUFjckMsdUJBZElRLElBQUt2RztNQWNULE9BQUEsdUJBZEl1RyxJQU1BRTs7U0FVRDVNLEtBaEIwRGdNO0tBaUI3RCxHQWhCRFc7TUFrQks7T0FBQSxNQUFBLHVDQUhEM007T0FHQztTQUFBLFdBQ0c7T0FISDZNLE9BRUE7O1VBRkFBLE9BS0csK0JBTko3TTtLQVFILHVCQXhCSTBNLElBQWlDUjtLQXlCckMsdUJBekJJUSxJQUFLdkc7S0F5QlQsT0FBQSx1QkF6Qkl1RyxJQWlCQUcsTUFTYzs7WUFNbEJDLFlBQVluOEI7c0IsT0E5RmQ4NkI7SUFnR0UsWUFBQSxvQ0FGWTk2Qjs7U0ExSlFxakI7ZUFBQUE7OzthQUFBQTs7O1VBR0wzVCxJQUhLMlQ7Z0JBR0ksa0RBQVQzVDs7O1NBRVM7VUFETjVQLE1BSkV1akI7VUFLSSxNQUFBLG1DQUROdmpCO2dCQUNNOzs7U0FDa0I7VUFBOUI2VixRQU5RME47VUFNc0IsTUFBQSxtQ0FBOUIxTjtnQkFBOEI7O0tBK0ovQjs7NEJBUE4wbEIsa0JBQUs3RjtJQUNSLFNBREc2RjtTQUlNZSxZQUpOZixRQUNDRyxZQUdLWTs7U0FEQUMsWUFITmhCLFFBQ0NHLFlBRUthO0lBR1QsZUFMSWIsT0FESWhHO0dBTytCO1lBRXpDOEcsUUFBUXo3QixHQUFJLE9BQUpBLEtBQVM7WUFDakIwN0IsZUFBZTE3QixHQUFJLE9BQUpBLEtBQWdCO0dBbEJuQixtQkFJWnM3QixhQWFBRyxTQUNBQztZQUtGQyxpQkFBa0JDLElBQUlDLE9BQU9DO0lBQy9CO0tBR0ksTUFBQSxnQ0FKMkJBO0tBR3ZCO09BQUEsa0NBSGdCRDs7VUFHb0IsZ0NBSHBCQTtLQUNwQkUsVUFDRixrQ0FGa0JIO0tBTWpCLE1BQUEsZ0NBTENHO0lBS0QsT0FBQTs7c0JBTENBLFNBak1GbkM7R0F1TWtEO0dBUnhDO0lBQUEsYUFDVitCOztVQS9PRnJDLHFDQWdMRXlCLE1BWUFFOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDdExXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxNQUFBO0lBRmJlO01BQ0Y7SUFNZSxNQUFBO0lBRmJDO01BQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBMkJJQyxlQUFnQmhzQixLQUFJUjtLQUN0QixJQUFhQyxpQkFEU0Q7OztPQUlkO1FBREV6USxVQUhRaVIsS0FBQUE7UUFRTixNQUFBO09BRk4sZUFDSSxtQ0FKQWpSOztVQU9EMFIsZ0JBQUxNO01BQVUsSUFDRixVQUFBLGtEQURSQTs7OztPQUtnQyxJQUFBLFlBTGhDQSxHQVRTdEIsTUFBQUEscUJBU0pnQjs7OzJCQUlLNVAsWUFBSyxXQUFMQTs7T0FENEIsVUFBQSxpQkFIdENrUTtPQUdvQixlQUFJLGlDQVpmdEI7O01BV1csSUFBQSxZQUZwQnNCLEdBVFN0QixNQUFBQSxxQkFTSmdCOztJQU9BOzs7Ozs7Ozs7Ozs7OztrQkFHSHVQLGVBRWlCLDBCQUFhOztrQkFGOUJBLGVBR3VCLFNBQUU7Ozs7Ozs7Ozs7Ozs7S0FKN0JpYzs7YUFXQUMsYUFBV25yQixHQUFJLE9BQUEscUJBWGZrckIsWUFXV2xyQixHQUE0QjthQUNuQ2dKO1NBQUtvaUI7O29CQUFzQixPQUF0QkE7VUFBa0Mzc0IsZ0JBQUw0c0IscUJBQTdCRCxTQUE2QkMsa0JBQUs1c0I7OzthQUUzQzZzQixVQUFXQyxXQUFXQztLQUN4QixTQUFJQyxlQUFlanVCO01BRWYsVUFBQTtNQUNTLE9BQUEsc0NBSE1BO0tBR2M7S0FFbEIsT0FMWGl1Qjt1QkFLZ0JDO2VBQ2hCLE9BTkFEO2lDQU1vQkU7eUJBQ2hCLE9BUEpGOzJDQU93Qkc7NENBQ1pDLEtBQUszOUIsSUFBR3E3QjtpREFDdUJVO3FDQUM3QjtzQ0FBSW43QixNQUFNLCtCQURtQm03QjtzQ0FFYixNQUFBLGlCQUhWVjtxQ0FHTiw2QkFESXo2QjtxQ0FDSixPQUFBLDhCQURJQTtvQ0FFd0I7b0NBSEosT0FBQSw2Q0FEckJaO21DQUkwQjttQ0FKL0IyOUIsS0FISUgsS0FOUEg7bUNBU0dNLEtBRlFGLEtBUEFIO21DQXNCUjtvQ0FBQSxNQUFBLGdDQWRZSTtvQ0FhUyxNQUFBLGdDQWRiRDtvQ0FjUixNQUFBLGdDQWZJRDtvQ0FXSkksTUFDRjtvQ0FPQSxNQUFBLHdCQVJFQTtvQ0FRRixNQUFBO21DQUFBO3dDQURFQzs7b0NBUUU7cUNBQUEsTUFBQSxnQ0F4QlVIO3FDQXVCVyxNQUFBLGdDQXhCZkQ7cUNBd0JOLE1BQUEsZ0NBekJFRDtxQ0FxQkZNLFFBQ0Y7cUNBTUYsTUFBQSx3QkFQSUE7cUNBSEZELEtBVUY7bUNBRUYsT0FaSUE7NkNBWU8saUNBNUJLSDs7a0NBNkJ3Qjt3QkFBQztjQUFDO0lBQUM7YUFFckRLLGFBQWFydUI7S0FDZjtNQUFjLE1BQUEsZ0NBRENBO01BQ1QsUUFBQTtpQ0FBc0NvQyxjQUFPLE9BQVBBO0tBQWdCLE1BQUE7SUFBWTthQUVsRWtzQixXQUFZQyxTQUFTQyxrQkFBa0JwOEIsVUFBVSs0QjtLQUN2RCxJQUQ2Q3NELGFBQUFyOEIsVUFBVXM4QixXQUFBdkQ7S0FDdkQ7V0FENkNzRDtZQUFVQyxVQUUzQztPQUdKO1FBRkc3dEIsSUFINEM2dEI7UUFHakQvYyxNQUhpRCtjO1FBSy9DLE9BQUEsaUJBRkYvYzs7UUFFMEMsTUFqRDFDdkcsS0ErQ0F1RyxLQUFLOVE7UUFFMEIsTUFBQTtRQUQ3Qjh0QjtPQUdKLE9BQUEsV0FQdUJILGtCQUluQkc7O1dBSitDRDtPQVVqRCxJQURFem9CLFlBVFVzb0IsU0FBQUE7T0FZZCxPQUFBLFdBWnVCQyxrQkFTbkJ2b0IsT0FUcUN3b0I7O01BYy9CO09BZHlDRyxXQUFBRjtPQWF0Q3ZmLElBYnNDdWY7T0FBVkcsYUFBQUo7T0FhM0Nyc0IsSUFiMkNxc0I7T0FjckNyK0IsTUFBTSxpQkFERytlO09BRVR1QyxNQTVETjZiLGFBMERBbnJCO09BR00wc0IsTUE3RE52QixhQTBEZXBlO01BSVYsR0FBQSxpQ0FGQ3VDLEtBQ0FvZDtPQUdBO1FBREVsQjtVQS9EUkw7WUEwQ0FjLGFBc0IrQiwwQ0FKekIzYztPQU1DLEdBQUEsaUNBTkRBLEtBR0VrYztRQVFBLFVBcEVSRixVQXlETWhjLEtBR0VrYztRQUlGLG1DQVJBeDlCOztPQWFGLFdBM0JxQm8rQixrQkFjbkJwK0IsU0FDQXNoQjs7VUFmcUMrYyxhQUFBSSxZQUFVSCxXQUFBRTs7SUE0Qkk7YUFFekRHLFNBQVUxdEIsS0FBS2pQLFVBQVVvOEIsa0JBQWlCckQ7O01BRWIsSUFBYW9ELG9CQUFScEQ7TUFDcEMsT0FqQ01tRCxXQWdDc0NDLFNBRmpCQyxrQkFBVnA4QixVQUVtQis0QjtLQUNtQjtLQUR2RCxVQTNHRWtDLGVBeUdVaHNCLEtBQWdDOHBCO0tBRWIsT0FBQTtJQUN3QjtJQTdHM0QseUJBMEdNNEQ7O1lBVUFDLFFBQVE1c0IsR0FBSSxPQUFKQSxLQUFjOzthQUlwQjZzQixNQUFNMWU7S0FBSSxPQUFBLGtDQUFKQSxtQkFBQUE7SUFBb0I7SUFESixXQUN0QjBlOztHQUtRO0lBRlZsdUI7SUFDQWdzQjs7SUFDQW1DLFVBQVU7bUJBVFZGLFNBL0lGNUIsMkJBc0pFcnNCLE9BQ0Fnc0IsSUFDQW1DO1lBT0FDLFVBQVEvc0IsR0FBSSxPQUFKQSxLQUFjOzthQUlwQjZzQixNQUFNMWU7S0FBSSxPQUFBLGtDQUFKQSxvQkFBQUE7SUFBb0I7SUFESixXQUN0QjBlOztHQUtRO0lBRlYvVDtJQUNBa1U7O0lBQ0FDLFlBQVU7OztZQVRWRixXQXBLRmhDLDZCQTJLRWpTLFNBQ0FrVSxNQUNBQztJQUtGQztZQUVBQyxnQkFBaUJsdUIsS0FBS2pQLFVBQVVvOEIsa0JBQWlCM3RCO0lBQ25EO0tBQUEsTUFIRXl1QixvQkFFaUJqdUIsS0FBS2pQLFVBQVVvOEIsa0JBQWlCM3RCOztJQUV6QixPQUFBOzs7O2NBQUEsSUFBTStQO2NBQVcsT0FBQSxtQ0FBWEE7YUFBb0M7R0FBQTtPQUVsRTRlO1lBRUFDLGdCQUFpQnB1QixLQUFLalAsVUFBVW84QixrQkFBaUIzdEI7SUFDbkQ7S0FBQSxNQUhFMnVCLG9CQUVpQm51QixLQUFLalAsVUFBVW84QixrQkFBaUIzdEI7O0lBRXpCLE9BQUE7Ozs7Y0FBQSxJQUFNK1A7Y0FBVyxPQUFBLG1DQUFYQTthQUFvQztHQUFBOzs7O09BVmxFMGU7T0FFQUM7T0FJQUM7T0FFQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDMUtFclE7SUFDQUM7SUFDQUg7SUFDQUM7SUFDQUg7SUFDQUM7SUFDQU87SUFDQUY7SUFDQVA7SUFDQW1CO0lBQ0FEO1lBRUF5UDtJQUFBOztPQUNjOztPQUNDOztPQUNEOztPQUNNOztPQUNQOztPQUNDOztPQUNDOztPQUNBOztPQUNKOztPQUNPOztPQUNBO2VBQ0o7O0dBQWtCO1lBRWhDQyxHQUNDenZCLEdBQUVEO0lBQ0wsT0FER0M7O1lBQUVELEdBRXVCOztnQkFGdkJBLEdBR3lCOztnQkFIekJBLEdBSXVCOztnQkFKdkJBLEdBS21DOztnQkFMbkNBLEdBTXFCOztnQkFOckJBLEdBT3VCOztnQkFQdkJBLEdBUXlCOztnQkFSekJBLEdBU3lCOztnQkFUekJBLEdBVWlCOztnQkFWakJBLEdBVytCOztpQkFYL0JBLEdBWStCO3dCQVovQkEsR0FhdUI7O0lBRWpCLEdBQUEscUNBZlJDLFFBQUVELEtBZ0JEO0lBREEsTUFBQTtHQUNFO1lBY0oydkIsY0FDQ3orQixHQUFFMCtCO0lBQ0wsT0FERzErQjs7bUJBQUUwK0I7O1lBRXdEM3ZCLElBRnhEMnZCLGNBRW9DMzlCO1FBQ3JDLGVBRHFDQSxHQUFvQmdPOzs7O3FCQUZ4RDJ2Qjs7WUFJeUR6dkIsTUFKekR5dkIsY0FJcUNqckI7UUFDdEMsZUFEc0NBLEtBQW9CeEU7Ozs7cUJBSnpEeXZCOztZQU0yRHZQLE1BTjNEdVAsY0FNc0NDO1FBQ3ZDLGVBRHVDQSxLQUFxQnhQOzs7O3FCQU4zRHVQOztZQVFpRXRQLE1BUmpFc1AsY0FRNENFO1FBRTdDLGVBRjZDQSxLQUFxQnhQOzs7O3FCQVJqRXNQOztZQVcwREcsTUFYMURILGNBV3FDSTtRQUN0QyxlQURzQ0EsS0FBcUJEOzs7O3FCQVgxREg7O1lBYTJESyxNQWIzREwsY0Fhc0NNO1FBQ3ZDLGVBRHVDQSxLQUFxQkQ7Ozs7cUJBYjNETDs7WUFlNERPLE1BZjVEUCxjQWV1Q1E7UUFDeEMsZUFEd0NBLEtBQXFCRDs7OztxQkFmNURQOztZQWlCNERTLE1BakI1RFQsY0FpQnVDVTtRQUN4QyxlQUR3Q0EsS0FBcUJEOzs7O3FCQWpCNURUOztZQW1Cd0RXLE1BbkJ4RFgsY0FtQm1DWTtRQUNwQyxlQURvQ0EsS0FBcUJEOzs7O3FCQW5CeERYOztZQXFCOENhLGtCQUFIQztRQUFjLGVBQWRBLEtBQUdEOzs7O3FCQXJCOUNiOztZQXNCOENlLGtCQUFIQztRQUFjLGVBQWRBLEtBQUdEOzs7O2tCQXRCOUNmOzs7O1NBUkM7VUFIa0QxL0I7VUFFaEQyZ0M7WUFDRjswQ0FRRGpCLHFCQUFBQTtTQUpELG1CQVBvRDEvQixjQUVoRDJnQzs7O09BTUQ7O0lBMkJBO0dBQUk7WUFFVEMscUJBR0M1L0IsR0FBRWlSLEdBQUU0ZDtJQUNQLE9BREc3dUI7O09BRTBDLFdBQUEsOEJBRnhDaVIsTUFBRTRkO09BRVMsZUFGWDVkLE1BQUFBOztPQUd5QyxXQUFBLDhCQUh6Q0EsTUFBRTRkO09BR1UsZUFIWjVkLE1BQUFBOztPQUl5QyxXQUFBLDhCQUp6Q0EsTUFBRTRkO09BSVMsZUFKWDVkLE1BQUFBOztPQU02QixXQUFBLDhCQU43QkEsTUFBRTRkO09BTUgsZUFOQzVkLE1BQUFBOztPQU93QyxXQUFBLDhCQVB4Q0EsTUFBRTRkO09BT1EsZUFQVjVkLE1BQUFBLE1BQUFBOztPQVF5QyxXQUFBLDhCQVJ6Q0EsTUFBRTRkO09BUVMsZUFSWDVkLE1BQUFBLE1BQUFBOztPQVMwQyxXQUFBLDhCQVQxQ0EsTUFBRTRkO09BU1UsZUFUWjVkLE1BQUFBOztPQVUwQyxXQUFBLDhCQVYxQ0EsTUFBRTRkO09BVVUsZUFWWjVkLE1BQUFBOztPQVdzQyxXQUFBLDhCQVh0Q0EsTUFBRTRkO09BV00sZUFYUjVkLE1BQUFBLE1BQUFBOztPQWFLLFlBQUEsOEJBYkg0ZDttQkFhc0MsV0FieEM1ZDtXQWFvRHNPLGNBQUxsQztPQUFVLGVBQVZBLEtBQUtrQzs7T0FFL0MsY0FBQSw4QkFmSHNQO3FCQWVzQyxXQWZ4QzVkO1dBZW9ENHVCLGtCQUFMQztPQUFVLGVBQVZBLEtBQUtEOztPQUUvQyxjQUFBLDhCQWpCSGhSO3FCQWlCc0MsV0FqQnhDNWQ7V0FpQm9EOHVCLGtCQUFMQztPQUFVLGVBQVZBLEtBQUtEOztHQUFrQjtZQUV6RUUsaUJBQ0NqZ0MsR0FBRWlSLEdBQUU0ZDtJQUNQLElBQUEsT0F4QkUrUSxxQkF1QkM1L0IsR0FBRWlSLEdBQUU0ZDtJQUVtQixPQUFBOzs7O2NBQUEsSUFBTXBQO2NBQVcsT0FBQSxtQ0FBWEE7YUFBb0M7R0FBQTt1QkFLakQsSUFBZ0IvQixnQkFBUSxXQXRHekM2Z0IsS0FzR2lDN2dCLE1BQWdDO0dBRHJFO0lBREU0UjtNQUNGOzthQW1CSUUsUUFRRTBRLFVBQVNsaEMsTUFBS3lkLFNBQVFtUixTQUFReks7S0FHbEMsU0FIa0IxRztNQU9kLDhCQW5DSjZTLGdCQTRCYXR3QjttQkFBS3lkO01BS2QsOEJBakNKNlMsZ0JBNEJhdHdCO0tBU2IseUNBckNBc3dCLGVBNEJrQjdTLFVBQUx6ZDtLQVViO2FBQ1MsOEJBWElBO2FBQUt5ZDtpQkFBUW1SLFNBQVF6SzthQUE5QitjO0lBZUg7YUFFQ0MsS0FBS3ZPLElBQUl3TztLQUNYO2NBRFdBO01BQ09uaEM7TUFBTkQ7TUFDSSxVQUFBLDJCQURKQTtNQUNGME87TUFBTnNJO21CQUN5QmhXLEdBQUssT0FBbEMsOEJBQTZCQSxNQUR6QmdXLFFBQzhEO0tBQTVELElBRUp0RyxJQUZJLHdDQUhDa2lCO1VBS0xsaUIsR0FETTtTQU9KMVAsSUFORjBQO1FBQUFBO01BQ0U7T0FBQTt1QkFHNkIxUCxHQUFLLHFDQUFMQSxNQUE2QjtPQUFqRCxPQUFBLGtDQUpYMFA7T0FHUSxPQUFBO01BRk47a0JBQ0ksbUNBTlV6UTs7S0FXUyxLQUR2QmUsUUFDdUIsaUNBVmpCME47TUFXSixlQUNJLG1DQWJRek8sVUFDZCtXO21CQWlCMkJuSDtNQUNuQjtPQUFJd3hCLHNDQWxCWnJxQjtPQW1CWXhOLFFBcEJFdko7T0F3QkY7O2NBSkF1SixVQUFBQSxVQUFBQSxVQUFBQSxXQURBNjNCO1VBbkJFcGhDO1VBQUFBO01BcUJOLFdBQ1EsZ0NBSlc0UDtLQVdsQjtLQVhMLElBREV5eEIsUUFDRixpQ0FqQkU1eUI7S0E4QkosbUJBckJGMU4sR0FPTXNnQztJQWNjO0lBdEU1QixXQWFNOVEsU0F5QkEyUTs7OENBQUFBO1lBd0NBSSxzQkFBc0J2aEMsTUFBSzBlLEtBQUk4aUIsTUFBSy94QixHQUN0QyxjQUR3QnpQLE1BQUswZSxLQUFJOGlCLE1BQUsveEI7R0FDQTtZQUVwQytnQixRQUFReHdCLE1BQUswZSxLQUFJOGlCLE1BQUsveEI7SUFDeEIsY0FEVXpQLE1BQUswZSxLQUFJOGlCLHNCQUNrQyxPQUQ3Qi94QixFQUM4QjtHQUFDO1lBRXJEa2pCLFlBQVlDLElBQUkzeUIsS0FBSW1oQztrQkFFRjF2QjtLQUNwQixLQURvQkEsR0FFVjs7YUFGVUE7TUFHa0NoRDs7TUFBVGU7TUFBVG1mO0tBQ2hDLGNBQTZEenNCLFNBQzdELFdBRDZEQSxTQUNqRDtLQURnQztNQUFBLE9BQUEsV0FESHNOLEdBQVNmO01BQ2xELE9BQUEsa0NBRGdDa2dCLFNBTGxCM3VCLFFBQUltaEM7S0FNdUMsT0FBQTtJQUM3QztJQUxoQixXQWhERUQsS0E4Q1l2TyxJQUFRd087SUFFTixPQUFBO0dBS0E7WUFFZHhQLFFBQVFnQixJQUFJM3lCLEtBQUltaEM7SUFDbEIsSUFBQSxPQVZFek8sWUFTUUMsSUFBSTN5QixLQUFJbWhDO0lBRVEsT0FBQTs7OztjQUFBLElBQU0zZ0I7Y0FBVyxPQUFBLG1DQUFYQTthQUFvQztHQUFBOztZQWFsRWdoQixjQUFZN08sSUFBSXVELE1BQUtpTDtJQUNiLElBQU5uaEMsTUFBTSwyQ0FEUWsyQjtrQkFHSXVMO0tBQ3RCLEtBRHNCQSxPQUVaOzthQUZZQTtNQUdrQ2h6Qjs7TUFBVGU7TUFBVG1mO0tBQTBCLGNBRXBEenNCO01BQ1IsU0FEUUE7T0FHTSxPQUFBO1VBREw4UCxJQUZEOVA7TUFFTSxXQUFMOFA7S0FDaUM7S0FKRTtNQUFBLE9BQUEsV0FERHhDLEdBTjdCMG1CLE1BTXNDem5CO01BQ3BELE9BQUEsa0NBRGtDa2dCLFNBTGxDM3VCLFFBRG1CbWhDO0tBUWYsT0FBQTtJQUd1QztJQVIvQywyQkFIY3hPLElBQVN3TztJQUdMLE9BQUE7R0FRNkI7WUFFN0N2TyxVQUFRRCxJQUFJdUQsTUFBS2lMO0lBQ25CLElBQUEsT0FkRUssY0FhUTdPLElBQUl1RCxNQUFLaUw7SUFFTyxPQUFBOzs7O2NBQUEsSUFBTTNnQjtjQUFXLE9BQUEsbUNBQVhBO2FBQW9DO0dBQUE7WUFFbEVraEIsbUJBQW1CL08sSUFBSXVELE1BQUtpTDtJQUNwQixJQUFObmhDLE1BQU0sMkNBRGVrMkI7a0JBR0h1TDtLQUN0QixLQURzQkEsT0FFWjs7YUFGWUE7TUFHa0NoekI7O01BQVRlO01BQVRtZjtLQUEwQixjQUVwRHpzQjtNQUNSLFNBRFFBLGdCQUNrQjhQLElBRGxCOVAsWUFDdUIsZUFBTDhQO1VBQXlCdkIsSUFEM0N2TztNQUNnRCxXQUFMdU87S0FBVztLQUZsQjtNQUFBLE9BQUEsV0FERGpCLEdBTnRCMG1CLE1BTStCem5CO01BQ3BELE9BQUEsa0NBRGtDa2dCLFNBTGxDM3VCLFFBRDBCbWhDO0tBUXRCLE9BQUE7SUFDMkQ7SUFObkUsMkJBSHFCeE8sSUFBU3dPO0lBR1osT0FBQTtHQU1pRDtZQUVqRVEsZUFBZWhQLElBQUl1RCxNQUFLaUw7SUFDMUIsSUFBQSxPQVpFTyxtQkFXZS9PLElBQUl1RCxNQUFLaUw7SUFFQSxPQUFBOzs7O2NBQUEsSUFBTTNnQjtjQUFXLE9BQUEsbUNBQVhBO2FBQW9DO0dBQUE7R0FqQ25EOztVQUdmZ2hCLGVBYUE1TyxXQUlBOE8sb0JBV0FDO1lBT0ZDLHlCQUNFOVYsTUFBS3JOO0lBQ1QsT0FEU0E7O09BRWdCOztPQUNLOztPQUNGOztPQUNBOztPQUd0QixXQW5RRjZnQixLQTJQSzdnQjtPQVFILE9BQUEsOENBUkZxTjs7R0FRd0I7WUFFdEIrVixrQkFFSHJrQixTQUFRc2tCO0lBQ1gsSUFEV0MsY0FBQUQ7SUFDWDtVQURXQyxhQUVIO1NBQ0NDLGNBSEVELGdCQUdQaGhDLElBSE9naEM7VUF6UFB4QyxHQXlQRC9oQixTQUdDemM7TUFFUSxXQUZSQSxHQUxFOGdDLGtCQUVIcmtCLFNBR013a0I7U0FIRUQsY0FHRkM7O0dBR2tDO1lBRXpDQywwQkFBMEJ4akI7UUFBSzFlO0lBSTFCOztNQURGLHlDQUg0QkE7V0FJMUIsMkJBSjBCQTtLQU0vQjthQUNFO3FDQWxMRnN3QixlQTJLMEI1UixjQUFLMWU7O0lBVTVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFHQ2toQixlQUd3QnZRO1FBRXhCO1NBRmUzUTtTQUVmLFdBQ0UsbUNBSGFBO1FBRWYsT0FBQSw4QkFGd0IyUTs7O2dCQUh4QnVRLFFBVW1CalAsR0FBRXRCO1FBQ3ZCLFVBRHFCc0IseUJBQUFBO1NBRVMsSUFBYm12QixNQUZJbnZCLE1BRVMsT0F6QmhDaXdCLDZCQXlCbUJkO1NBQWEsT0FBQSw4QkFGUHp3Qjs7UUFHaEIsT0FBQSxXQUFBLGdCQWJMdVEsU0FVbUJqUCxHQUFFdEI7T0FHVTs7Z0JBYi9CdVEsUUFlaUJqUCxHQUFFdEI7UUFDckIsVUFEbUJzQix5QkFBQUE7U0FFVyxJQUFibXZCLE1BRkVudkIsTUFFVyxPQTlCaENpd0IsNkJBOEJtQmQ7U0FBYSxPQUFBLDhCQUZUendCOztRQUdkLE9BQUEsV0FBQSxnQkFsQkx1USxTQWVpQmpQLEdBQUV0QjtPQUdVOztnQkFsQjdCdVEsUUFvQm9CalAsR0FBRXRCO1FBQ3hCLFVBRHNCc0IseUJBQUFBO1NBRVEsSUFBYm12QixNQUZLbnZCLE1BRVEsT0FuQ2hDaXdCLDZCQW1DbUJkO1NBQWEsT0FBQSw4QkFGTnp3Qjs7UUFHakIsT0FBQSxXQUFBLGdCQXZCTHVRLFNBb0JvQmpQLEdBQUV0QjtPQUdVOztnQkF2QmhDdVEsUUF5Qm9CalAsR0FBRXRCO1FBQ3hCLFNBRHNCc0IsTUFHZixPQUFBLFdBQUEsZ0JBNUJMaVAsU0F5Qm9CalAsR0FBRXRCO1FBRU0sSUFBYnl3QixNQUZLbnZCLE1BRVEsT0F4Q2hDaXdCLDZCQXdDbUJkO1FBQWEsT0FBQSw4QkFGTnp3QjtPQUdVOztnQkE1QmhDdVEsUUE4QjBCalAsR0FBRXRCO1FBQzlCLFNBRDRCc0IsTUFJckIsT0FBQSxXQUFBLGdCQWxDTGlQLFNBOEIwQmpQLEdBQUV0QjtRQUdwQixJQURPeXdCLE1BRldudkIsTUFHbEIsT0E5Q1ppd0IsNkJBNkNtQmQ7UUFDUCxPQUFBLDhCQUhvQnp3QjtPQUlVOztnQkFsQ3RDdVEsUUFvQ29CalAsR0FBRXRCO1FBQ3hCLFNBRHNCc0IsTUFHZixPQUFBLFdBQUEsZ0JBdkNMaVAsU0FvQ29CalAsR0FBRXRCO1FBRUssSUFBYnl3QixNQUZNbnZCLE1BRU8sT0FuRC9CaXdCLDZCQW1Ea0JkO1FBQWEsT0FBQSw4QkFGTHp3QjtPQUdVOztnQkF2Q2hDdVEsUUF5Q3FCalAsR0FBRXRCO1FBQ3pCLFNBRHVCc0IsTUFHaEIsT0FBQSxXQUFBLGdCQTVDTGlQLFNBeUNxQmpQLEdBQUV0QjtRQUVJLElBQWJ5d0IsTUFGT252QixNQUVNLE9BeEQvQml3Qiw2QkF3RGtCZDtRQUFhLE9BQUEsOEJBRkp6d0I7T0FHVTs7Z0JBNUNqQ3VRLFFBOENxQmpQLEdBQUV0QjtRQUN6QixTQUR1QnNCLE1BR2hCLE9BQUEsV0FBQSxnQkFqRExpUCxTQThDcUJqUCxHQUFFdEI7UUFFSyxJQUFieXdCLE1BRk1udkIsTUFFTyxPQTdEaENpd0IsNkJBNkRtQmQ7UUFBYSxPQUFBLDhCQUZMendCO09BR1U7O2dCQWpEakN1USxRQW1Ed0JqUCxHQUFFdEI7UUFDNUIsVUFEMEJzQixNQUluQixPQUFBLFdBQUEsZ0JBdkRMaVAsU0FtRHdCalAsR0FBRXRCO1FBR2xCLElBRFF5d0IsTUFGUW52QixNQUdoQixPQW5FWml3Qiw2QkFrRW9CZDtRQUNSLE9BQUEsOEJBSGtCendCO09BSVU7O2dCQXZEcEN1USxRQXlEcUJqUCxHQUFFdEI7UUFDekIsU0FEdUJzQixNQUdoQixPQUFBLFdBQUEsZ0JBNURMaVAsU0F5RHFCalAsR0FBRXRCO1FBRUssSUFBYnl3QixNQUZNbnZCLE1BRU8sT0F4RWhDaXdCLDZCQXdFbUJkO1FBQWEsT0FBQSw4QkFGTHp3QjtPQUdVOztnQkE1RGpDdVEsUUE4RHdCalAsR0FBRXRCO1FBQzVCLFVBRDBCc0IsTUFJbkIsT0FBQSxXQUFBLGdCQWxFTGlQLFNBOER3QmpQLEdBQUV0QjtRQUdsQixJQURReXdCLE1BRlFudkIsTUFHaEIsT0E5RVppd0IsOEJBNkVvQmQ7UUFDUixPQUFBLDhCQUhrQnp3QjtPQUlVOzs7Ozs7SUFuRXhDd3hCOztZQXNFQUM7SUFBMEIsWUFDcEI7UUFDTjNoQjtJQUFZLE9BQUEsbUNBQVpBO0dBQW9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFHaEM2QjtZQUdldGlCO1FBQ2pCLE9BQUEsbUNBRGlCQTs7O2dCQUhmc2lCLFFBT21CclE7UUFDckIsT0FiRm13QjtpQkFhRTs7cUJBbkZGRDttQkFBQUE7bUJBa0Z1Qmx3Qjs7T0FFSzs7Z0JBVHhCcVEsUUFXaUJyUTtRQUNuQixPQWpCRm13QjtpQkFpQkU7O3FCQXZGRkQ7bUJBQUFBO21CQXNGcUJsd0I7O09BRU87O2dCQWJ4QnFRLFFBZW9CclE7UUFDdEIsT0FyQkZtd0I7aUJBcUJFOztxQkEzRkZEO21CQUFBQTttQkEwRndCbHdCOztPQUVJOztnQkFqQnhCcVEsUUFtQm9CclE7UUFDdEIsT0F6QkZtd0I7aUJBeUJFOztxQkEvRkZEO21CQUFBQTttQkE4RndCbHdCOztPQUVJOztnQkFyQnhCcVEsUUF1QjBCclE7UUFDNUIsT0E3QkZtd0I7aUJBNkJFOztxQkFuR0ZEO21CQUFBQTttQkFrRzhCbHdCOztPQUVGOztnQkF6QnhCcVEsUUEyQm9CclE7UUFDdEIsT0FqQ0Ztd0I7aUJBaUNFOztxQkF2R0ZEO21CQUFBQTttQkFzR3dCbHdCOztPQUVJOztnQkE3QnhCcVEsUUErQnFCclE7UUFDdkIsT0FyQ0Ztd0I7aUJBcUNFOztxQkEzR0ZEO21CQUFBQTttQkEwR3lCbHdCOztPQUVHOztnQkFqQ3hCcVEsUUFtQ3FCclE7UUFDdkIsT0F6Q0Ztd0I7aUJBeUNFOztxQkEvR0ZEO21CQUFBQTttQkE4R3lCbHdCOztPQUVHOztnQkFyQ3hCcVEsUUF1Q3dCclE7UUFDMUIsT0E3Q0Ztd0I7aUJBNkNFOztxQkFuSEZEO21CQUFBQTttQkFrSDRCbHdCOztPQUVBOztnQkF6Q3hCcVEsUUEyQ3FCclE7UUFDdkIsT0FqREZtd0I7aUJBaURFOztxQkF2SEZEO21CQUFBQTttQkFzSHlCbHdCOztPQUVHOztnQkE3Q3hCcVEsUUErQ3dCclE7UUFDMUIsT0FyREZtd0I7aUJBcURFOztxQkEzSEZEO21CQUFBQTttQkEwSDRCbHdCOztPQUVBOzs7OztPQWxENUIwaEI7WUF3REVqQixVQUFRMXlCLE1BQUt5ZCxTQUFRbVIsU0FBUXpLO0lBQy9CLGNBQXFEbFMsR0FBSyxXQUFMQSxHQUFhO0lBQXBELElBQVY2ZixZQUFVLG1DQURTbEQ7a0JBR2lDdUgsYUFDakQsT0FBQSxXQUp3QmhTLEdBR3lCZ1MsTUFDMUM7SUFGZCw4QkFGVW4yQixNQUFLeWQsU0FDWHFVO0dBR1k7WUFFZHVRLGVBQWVyaUMsTUFBS3lkLFNBQVFtUixTQUFReks7SUF6S3RDMGQsdURBeUtzQnBrQjtJQUN0QixjQUNxRHhMLEdBQUssV0FBTEEsR0FBYTtJQUFwRCxJQUFWNmYsWUFBVSxtQ0FGZ0JsRDtrQkFJMEJ1SCxhQUNqRCxPQUFBLFdBTCtCaFMsR0FJa0JnUyxNQUMxQztJQUZkLDhCQUhpQm4yQixNQUFLeWQsU0FFbEJxVTtHQUdZO1lBRWR3USx3QkFBc0J0aUMsTUFBS3lkLFNBQVFtUixTQUFReks7SUFDN0MsY0FBcURsUyxHQUFLLFdBQUxBLEdBQWE7SUFBcEQsSUFBVjZmLFlBQVUsbUNBRHVCbEQ7SUFFckMsOEJBRndCNXVCLE1BQUt5ZCxTQUN6QnFVLFdBRHlDM047R0FFTTtZQUVqRG9lLDZCQUE2QnZpQyxNQUFLeWQsU0FBUW1SLFNBQVF6SztJQXBMcEQwZCx5REFvTG9DcGtCO0lBQ3BDLGNBRXFEeEwsR0FBSyxXQUFMQSxHQUFhO0lBQXBELElBQVY2ZixZQUFVLG1DQUg4QmxEO0lBSTVDLDhCQUorQjV1QixNQUFLeWQsU0FHaENxVSxXQUhnRDNOO0dBSUQ7R0F4QjNDOzs7T0FHTnVPO09BTUEyUDtPQU9BQztPQUlBQztZQU9GQyxVQUFReGlDLE1BQUt5ZCxTQUFRbVIsU0FBUW5mO0lBRTdCLFdBQUEsMkNBRjZCQTtJQUU3QixPQUFBLGtCQUZRelAsTUFBS3lkLFNBQVFtUjtHQUU0QjtZQUVqRDZULGlCQUFlemlDLE1BQUt5ZCxTQUFRbVIsU0FBUW5mO0lBRXBDLFdBQUEsMkNBRm9DQTtJQUVwQyxPQUFBLGtCQUZlelAsTUFBS3lkLFNBQVFtUjtHQUVxQjtZQUVqRDhULHdCQUFzQjFpQyxNQUFLeWQsU0FBUW1SLFNBQVF6SztJQUNwQyxJQUFMRyxNQUFLLDJDQURvQ0g7SUFFN0MsY0FBcURsUyxHQUFLLFdBQUxBLEdBQWE7SUFBcEQsSUFBVjZmLFlBQVUsbUNBRnVCbEQ7SUFHckMsOEJBSHdCNXVCLE1BQUt5ZCxTQUV6QnFVLFdBREF4TjtHQUVnRDtZQUVsRHFlLCtCQUE2QjNpQyxNQUFLeWQsU0FBUW1SLFNBQVF6SztJQUMzQyxJQUFMRyxNQUFLLDJDQUQyQ0g7SUF4TWxEMGQsMkRBd01rQ3BrQjtJQUVwQyxjQUVxRHhMLEdBQUssV0FBTEEsR0FBYTtJQUFwRCxJQUFWNmYsWUFBVSxtQ0FKOEJsRDtJQUs1Qyw4QkFMK0I1dUIsTUFBS3lkLFNBSWhDcVUsV0FIQXhOO0dBSWdEO1lBRWxEc2UsbUJBQXFCNWlDLE1BQUs2aUM7SUFHNUI7S0FBQTtLQUFxRDtPQUFBOzs7O0tBQXBCLE9BQUE7S0FBRCxPQUFBO0tBQTVCalUsVUFBdUI7SUFDM0IsT0FBQSxrQkFKdUI1dUIsVUFHbkI0dUIsU0FId0JpVTtHQUlxQjtHQUV2QztJQUFBLFNBMUJSTCxXQUlBQzs7OztRQXJjRXhUO1FBQ0FDO1FBQ0FIO1FBQ0FDO1FBQ0FIO1FBQ0FDO1FBQ0FPO1FBQ0FGO1FBQ0FQO1FBQ0FtQjtRQUNBRDtRQWdCQTBQO1FBK0JBQztRQWlEQXdCO1FBdEJBTDtPQTZXRjRCO09BUUFFO09BSkFEO09BU0FFOztPQTdMSWI7V0F6RUZ0UixTQUhBK1EsdUJBTUE1TyxhQVNBZjtPQTZKRitCO09BMUVBd087OztPQWpDQU47T0ErTUFlOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNuZEloaEI7UUFBYTVnQjtJQUFLLE9BQUEsZ0NBQUxBOztZQUViOGhDLHdCQUF3QnB5Qjt5QkFDTixJQUFRMVAseUJBQUFBLEtBQW1CO0lBQS9DLE9BQUEsd0NBRDBCMFA7R0FDcUI7WUFZN0NxeUI7UUFBYS9oQztJQUFLLE9BQUEsZ0NBQUxBOztZQUViZ2lDLDBCQUF3QnR5Qjt5QkFDTixJQUFRMVAseUJBQUFBLEtBQW1CO0lBQS9DLE9BQUEsd0NBRDBCMFA7R0FDcUI7R0FXNUI7WUFpRWZ1eUIsT0FDSEMsT0FBTXh5QjtJQUNULElBRFNpQixNQUFBakI7SUFDVDtVQURTaUIsS0FFRDtTQUNXSSxNQUhWSixnQkFBQUEsUUFHSU0sY0FwQ05reEI7OzthQWlDSkQ7O2NBakNJQzs7a0JBQUFBOztrQkFBQUE7O2tCQUFBQTs7a0JBQUFBOztrQkFBQUE7O2tCQUFBQTs7a0JBQUFBOztrQkFBQUE7O2tCQUFBQTswQkFBQUE7Ozs7bUJBc0NXLFdBRkxseEIsR0FKUGd4QixPQUNIQyxPQUdnQm54QjtTQUhWSixNQUdVSTs7R0FHYztZQUUvQnVjLFVBQVU4UyxLQUFNLGNBQU5BLEtBQXdCO1lBRWxDZ0MsaUJBQWlCaGlCLElBQUczUjtJQUN0QixrQkFEbUIyUixJQUN1QixnQ0FEdkJBLEtBQUczUjtHQUNxRDtZQUV6RTR6QixtQkFBa0I1dEIsT0FBTWhHO0lBQzFCLGtCQUE4QixnQ0FEVmdHLFFBQUFBLE9BQU1oRztHQUM4QztZQUV0RTZ6QixTQUFTejZCLE1BQUswNkIsUUFBT1Y7SUFBUyxrQkFBaEJVLFFBQUwxNkIsTUFBWWc2QjtHQUErQztZQUVwRVcsbUJBQW1CdGhDLFdBQVUyZ0M7SUFDL0Isc0JBRHFCM2dDLGNBQVUyZ0M7R0FDZ0M7WUFFN0RZLG1CQUFtQnZoQyxXQUFVMmdDO0lBQy9CLHNCQURxQjNnQyxjQUFVMmdDO0dBQ2dDO1lBRTdEYSwwQkFBMEJ4aEMsV0FBVTJnQyxRQUN0QyxzQkFENEIzZ0MsY0FBVTJnQztHQUNnQztZQUVwRWMsMEJBQTBCemhDLFdBQVUyZ0MsUUFDdEMsc0JBRDRCM2dDLGNBQVUyZ0M7R0FDZ0M7WUFFcEVlLGtCQUFrQjFoQyxXQUFVMmdDO0lBQzlCLHNCQURvQjNnQyxjQUFVMmdDO0dBQ2dDO1lBRTVEZ0Isa0JBQWtCM2hDLFdBQVUyZ0M7SUFDOUIsc0JBRG9CM2dDLGNBQVUyZ0M7R0FDZ0M7WUFFNURpQixtQkFBbUI1aEMsV0FBVTJnQztJQUMvQixzQkFEcUIzZ0MsY0FBVTJnQztHQUNnQztZQUU3RGtCLG1CQUFtQjdoQyxXQUFVMmdDO0lBQy9CLHVCQURxQjNnQyxjQUFVMmdDO0dBQ2dDO1lBRTdEbUIsMEJBQTBCOWhDLFdBQVUyZ0MsUUFDdEMsc0JBRDRCM2dDLGNBQVUyZ0M7R0FDd0I7WUFFNURvQiwwQkFBMEIvaEMsV0FBVTJnQyxRQUN0QyxzQkFENEIzZ0MsY0FBVTJnQztHQUN3QjtZQUU1RHFCLCtCQUFpQ2hpQyxXQUFVMmdDLFFBQzdDLHNCQURtQzNnQyxjQUFVMmdDO0dBQ3dCO1lBRW5Fc0IsK0JBQWlDamlDLFdBQVUyZ0MsUUFDN0Msc0JBRG1DM2dDLGNBQVUyZ0M7R0FDd0I7WUFFbkV1Qix5QkFBeUJsaUMsV0FBVTJnQyxRQUNyQyxzQkFEMkIzZ0MsY0FBVTJnQztHQUN3QjtZQUUzRHdCLHlCQUF5Qm5pQyxXQUFVMmdDLFFBQ3JDLHNCQUQyQjNnQyxjQUFVMmdDO0dBQ3dCO1lBRTNEeUIsMEJBQTBCcGlDLFdBQVUyZ0MsUUFDdEMsc0JBRDRCM2dDLGNBQVUyZ0M7R0FDd0I7WUFFNUQwQiwwQkFBMEJyaUMsV0FBVTJnQyxRQUN0Qyx1QkFENEIzZ0MsY0FBVTJnQztHQUN3QjtHQVV0RCxJQUFOMkIsc0NBQTBCLFNBQUU7WUFDNUJDLFFBQVF6akMsR0FBRXljLFNBQVF4ZCxLQUFJZ1M7SUFBSSxPQUFBLFdBQWxCalIsTUFBRXljLFNBQVF4ZCxLQUFJZ1M7R0FBcUI7WUFFM0N5eUIsYUFBYTFqQyxHQUFFeWMsU0FBU3hkLEtBQWtCZ1M7SUFDNUMsU0FENENBLFVBQUFBLE1BRS9CO0lBQ04sT0FBQSxXQUhRalIsTUFBRXljLGFBQVN4ZCxRQUFBQSxRQUFBQSxTQUFrQmdTO0dBR2E7WUEyQnpEMHlCLGlCQUFpQnBoQjtJQUNuQjtLQUFJQyxRQUFRLDhCQURPRDtLQUVmdGpCLE1BQU0sb0NBRE51akI7S0FFQThLLFlBQVksbUNBRlo5SztJQUdKLFdBREk4SyxXQURBcnVCO0dBRVk7WUFFZDJrQyx1QkFBdUJubkIsU0FBUW9uQixlQUFjdGhCO0lBQy9DLElBQXFCLFFBUG5Cb2hCLGlCQU02Q3BoQixNQTVCM0N0akIsZ0JBQW9CcXVCO1dBNEJDN1E7O09BeEJOLE9BQUEsc0NBSmZ4ZCxLQUFvQnF1Qjs7T0FLSixPQUFBLHNDQUxoQnJ1QixLQUFvQnF1Qjs7T0FNTCxPQUFBLHNDQU5mcnVCLEtBQW9CcXVCOztPQU9DLE9BQUEsc0NBUHJCcnVCLEtBQW9CcXVCOztPQVFOLE9BQUEsc0NBUmRydUIsS0FBb0JxdUI7O09BU0wsT0FBQSxzQ0FUZnJ1QixLQUFvQnF1Qjs7T0FVSixPQUFBLHVDQVZoQnJ1QixLQUFvQnF1Qjs7T0FXSixPQUFBLHVDQVhoQnJ1QixLQUFvQnF1Qjs7T0FZUixPQUFBLHVDQVpacnVCLEtBQW9CcXVCOztPQWFELE9BQUEsdUNBYm5CcnVCLEtBQW9CcXVCOztPQWNELE9BQUEsdUNBZG5CcnVCLEtBQW9CcXVCOztPQWtCbEI7UUFERXdXO2NBQ0csc0NBbEJQN2tDLEtBQW9CcXVCO09Bb0JwQjtlQVE2QnVXO2VBQUFBO2VBQUFBO2VBQUFBO2VBQUFBO2VBWHpCQztlQVd5QkQ7ZUFBQUE7O0dBRWtCO1lBZ2dCakNFLFlBOWZKeGhCO0lBQ2QsSUFBcUIsUUFYbkJvaEIsaUJBVVlwaEIsTUFDQ3RqQixnQkFBWHF1QjtJQUNKLE9BQUEsdUNBRGVydUIsS0FBWHF1QjtHQUNnRDtZQThsQmxDMFcsWUE1bEJKemhCO0lBQ2QsSUFBcUIsUUFmbkJvaEIsaUJBY1lwaEIsTUFDQ3RqQixnQkFBWHF1QjtJQUNKLE9BQUEsdUNBRGVydUIsS0FBWHF1QjtHQUNnRDtZQUU5QzJXO0lBQWF4bkIsU0FBUW1WLElBQUdzUyxZQUFXamxDLEtBQUlrbEMsV0FBVWx6QixHQUFHbXpCO0lBQzFEO0tBQUlqUCxPQUNGLDJDQUZ1Q2wyQixLQUFJa2xDO0tBSXZDLFFBQUEsb0NBSmExbkIsU0FBb0N4TDtnQkFLN0MsT0FBQSxXQUxvQml6QixZQUFlQyxXQUFVbHpCOzRCQU0xQzRkLG9CQUFMdVI7a0JBTUlpRTtLQUNSLEtBRFFBLDZCQVprQkgsWUFBZUMsV0FBVWx6QjtTQWU1Q3NQLE1BSEM4akI7bUJBTUlwekI7TUFDUixPQW5CRmd6QjtlQUFheG5CLFNBQVFtVixJQUFHc1MsWUFBV2psQyxLQUFJa2xDLFdBa0I3Qmx6QixHQWxCMENtekI7S0FtQmM7S0FIaEU7TUFBQSxPQUFBLG9DQWhCVzNuQixTQWVSOEQsS0FURXNPO29EQVNGdE87S0FHQyxPQUFBO0lBQzREOztLQVhqRTtNQUFBLE9BQUEsbUNBUm9CcVIsSUFDdkJ1RCxNQUtJaUw7Ozs7VUFJRTNGO1NBQUFsWSwwQkFBQWtZO0tBQVMsS0FWdUMySixnREFVaEQ3aEI7S0FDZ0I7TUFBQSxXQXZCeEJxaEIsdUJBWWlCbm5CLFNBQW9DeEwsR0FVN0NzUjthQUNIOztJQUNDLE9BQUE7R0FPaUU7WUF5Qm5FK2hCO0lBQVU3bkI7SUFBUW1WO0lBQUdzUztJQUFXckc7SUFBUXNHO0lBQVV6MEI7SUFBRzYwQjtJQUFNSDtJQUM5REk7SUFDSCxLQUZ3RDkwQixHQUdoRCxPQUFBO0lBRUU7S0FESGlCLE1BSmlEakI7S0FJdER1QixJQUpzRHZCO0tBSzlDLFFBQUEsb0NBTE0rTSxTQUlkeEw7O0tBS007O2lCQUErQkE7dUJBR3ZCdkIsR0FBSyxXQUhrQnVCLEdBR3ZCdkIsR0FBVztTQUZuQjs7WUFWRjQwQjtjQUFVN25CO2NBQVFtVjtjQUFHc1M7Y0FBV3JHO2NBQVFzRztjQUl2Q3h6QjtjQUpvRDR6QjtjQUFNSDtjQUM5REk7U0FXUyxPQUFBO1FBQWU7TUFIbkIsT0FBQSxXQVRtQk4sWUFBbUJDLFdBSTVDbHpCO0tBS2lDLE9BQUE7O0lBS0Q7O0tBRGpCNGQ7S0FBTHVSO0tBQ0F2TCxzQkFBc0IsV0FkSWdKLFNBSXBDNXNCO0tBV1Vra0I7T0FDRjt5Q0FGRU4scUJBZGtDc1A7O0tBd0JsQztNQU9BO09BREdFOzs7d0JBSUtJO1dBQ1IsT0FsQ1REO1lBL0ZDZixRQThGdURjLE1BQTNDOW5CLFNBY0pvWSx5QkFvQlE0UDt5QkFNQUM7WUFBUSxPQUFBLDhCQU5SRCxnQkFNQUM7V0FBNkI7V0FGckM7O2NBdENOSjtnQkFBVTduQjtnQkFBUW1WO2dCQUFHc1M7Z0JBQVdyRztnQkFBUXNHO2dCQUl2Q3h6QjtnQkFKb0Q0ekI7Z0JBQU1IO2dCQUM5REk7V0F1Q2EsT0FBQTtVQUFpQztVQVJyQzs7YUFoQ05GO2VBQVU3bkI7ZUFBUW1WO2VBQUdzUztlQUFXckc7ZUFBUXNHO2VBOEIvQkU7ZUE5QjRDRTtlQUFNSDs7VUFrQ2pELE9BQUE7U0FNaUM7T0FUckMsY0FBSyw4QkFsQkF2VjtNQWtCNkIsT0FBQTs7bUJBTEg1ZDtvQkFHdkJ2QixHQUFLLFdBSGtCdUIsR0FHdkJ2QixHQUFXO01BRm5COztTQTNCTjQwQjtXQUFVN25CO1dBQVFtVjtXQUFHc1M7V0FBV3JHO1dBQVFzRztXQUl2Q3h6QjtXQUpvRDR6QjtXQUFNSDtXQUM5REk7TUE0QmEsT0FBQTtLQUFlO0tBSG5CLFdBQUEsV0ExQmVOLFlBQW1CQyxXQUk1Q2x6QjtLQXNCcUMsT0FBQTtJQWNVOztLQXBCdEM7TUFBQSxPQUFBLG1DQXBCYTJnQixJQWVadUQsTUFGQWlMOzs7O1VBU0UzRjtTQUFBbFksMEJBQUFrWTtLQUFTLEtBdEIwQzJKLGdEQXNCbkQ3aEI7S0FDZ0I7TUFBQSxlQS9FNUJxaEIsdUJBd0Rjbm5CLFNBSWR4TCxHQWtCWXNSO2FBQ0g7O0lBQ0MsT0FBQTtHQWdCdUM7WUEyQjdDb2lCLFVBQVV0akIsTUFBSzNSO0lBQ3JCLEtBRHFCQSxHQUViLE9BQUE7UUFDRGlCLE1BSGNqQixNQUduQnVCLElBSG1CdkI7a0JBSVFtQjttQkFDbUMrekI7TUFDNUQsS0FENERBO1lBRG5DL3pCLE9BR1Q7V0FDSGcwQixTQUpZaDBCO09BSUosa0JBQVJnMEI7O1VBQ050ckIsUUFKcURxckI7U0FEbkMvekIsV0FNTmkwQixPQU5NajBCLFVBTUUsbUJBRHBCMEksUUFDWXVyQjtNQURHLHFCQUE0QyxTQUFJO01BQWhEO3NCQUFmdnJCLFFBQW1DLGtDQU52QzVJO0tBT2lEO0tBTHBEO01BQUEsT0FBQSxnQ0FMWTBRLFNBR2RwUTs7S0FFMEQsT0FBQTtJQUtKO0lBTnBELFdBSkUwekIsVUFBVXRqQixNQUdUMVE7SUFDa0IsT0FBQTtHQU1nQztZQUd2RG8wQixXQUlBcjFCO0lBSmEsS0FJYkEsR0FITTtlQUdOQSxNQUZFdUIsSUFFRnZCO2VBRlMsT0FBUHVCOztLQUVlLFdBQUEsaUNBQWpCdkI7S0FBaUIsT0FBQTs7UUFEWnNPO0lBQU8sT0FBQSw4QkFBUEEsR0FESC9NO0dBRTJCO1lBRTdCK3pCLHVCQUF1QnQxQjtrQkFDSFgsR0FBRUQ7S0FDcEIsSUFFRSxPQWxXQThSLFVBK1ZrQjlSLElBRWxCLE9BaldBOFIsVUErVmdCN1I7S0FHaEIsT0FBQTtJQUFvQztJQUgxQyxPQUFBLHdDQUR5Qlc7R0FJa0I7WUFFekN1MUIsaUJBQWlCdjFCO2tCQUNHWCxHQUFFRDtLQUNwQixJQUVFLE9BelZBaXpCLFlBc1ZrQmp6QixJQUVsQixPQXhWQWl6QixZQXNWZ0JoekI7S0FHaEIsT0FBQTtJQUE4QjtJQUhwQyxPQUFBLHdDQURtQlc7R0FJa0I7WUFFbkN3MUIsK0JBQXFDam1DO0lBQ3ZDLGVBQ0ksbUNBRm1DQTtHQUkvQjtHQTZERTtJQUFOa21DLHdDQUEwQixTQUFFO0lBTEQsOEJBSzNCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkF1RUdqbEIsZUFJY2pQO1NBQUksT0FBQSxpQ0FBSkE7UUFBWTs7aUJBSjFCaVAsUUFNYWlrQixXQUFVbHpCO1NBQzFCLFdBRDBCQSxNQUNNLE9BQUEsaUJBUDdCaVA7U0FPSCxPQUFBO2tCQVBHQTs7a0JBQUFBOzs7a0JBTWFpa0I7a0JBQVVsekI7UUFDNEM7O2lCQVBuRWlQLFFBU1dpa0IsV0FBVWx6QjtTQUN4QixXQUR3QkEsTUFDSSxPQUFBLGlCQVZ6QmlQO1NBVUgsT0FBQTtrQkFWR0E7O2tCQUFBQTs7O2tCQVNXaWtCO2tCQUFVbHpCO1FBQ3dDOztpQkFWN0RpUCxRQVljaWtCLFdBQVVwakM7dUJBSWpCcWtDO1VBQ1IsS0FEUUE7V0FFUyxPQUFBLHFDQU5GakIsV0FBVXBqQztzQkFJakJxa0MsV0FHQ25tQyxnQkFBS3FQO3dCQUtGdk47V0FDUjttQkFBQztxREFOSTlCLEtBQUtxUCxLQVBDNjFCO21CQVlIcGpDO1VBQ2tEO1VBTDFEO1dBQUE7YUFBQTs7OztlQVJxQkE7V0FDM0IsT0FBQSx1Q0FEMkJBO1VBWWpCLE9BQUE7U0FDc0Q7U0FWOUQ7VUFBQSxPQUFBLDJEQUh5QkE7O1VBQ3ZCc2tDLGVBRUY7O1VBWWUsSUFBZ0J0a0MsY0FBWG9qQyxzQkFDdEIsT0FEaUNwakM7Ozs7O29CQUFBQTs7K0JBS2xCQSxHQUFLLE9BQUEsaUNBQUxBLEdBQWE7YUFKeEJ1a0M7ZUFHRTtpQkEvQkhwbEI7O2lCQUFBQTs7O2lCQTJCbUJpa0I7aUJBQVdwakM7OztlQUM3QnVrQyxXQU1LLGlDQVB3QnZrQzs7d0JBU2hCQTtvQkFDYndrQyxnQkFBZ0IxOUIsTUFBSzJpQixRQUFLZ2I7WUFDdEI7O2VBQUE7d0NBdENMdGxCLHFCQXFDc0JzSyxRQUFMM2lCOzthQUFwQixPQUFBLFdBRVksaUJBdkNUcVksU0EyQm1CaWtCLFdBU0xwakM7WUFJNEIsSUFBcEM4Z0MsbUJBQW9DLE9BQUEsV0FBcENBLFFBSlE5Z0MsTUFDYXlrQztZQUdlLE9BQUEsV0F4QzFDdGxCLHFCQUFBQSxRQTJCbUJpa0I7V0FhK0M7V0FFckUsWUFOaUJwakM7Ozs7ZUF3QlA7Z0JBREdxZjtnQkFDSDtrQkFBQSxrQ0E1RFBGLGlCQTJEVUU7O2dCQUVDLE9BQUEsV0FBQSxpQkE3RFhGLFNBMkJtQmlrQixXQVNMcGpDO21CQTBCTjZzQjtlQUFXO2dCQUVEO2lCQUFBLE9BQUEsV0FGVkEsU0ExQk03c0I7aUJBNEJILE9BQUE7aUJBREYwakM7O3FCQUVHaEs7b0JBQUFsWSwwQkFBQWtZO3FCQWpFWnZhO21EQWlFWXFDO2dCQUNJO2lCQUFBO3VCQXBXckJxaEIsK0NBc1VtQjdpQyxHQTZCRndoQjtpQkFGSGtpQixpQkFHQTs7OzsyQkFFbUJ2aEM7bUJBQ3ZCLEtBRHVCQTtvQkFBdkIsT0FBQSxXQUVVLGlCQXRFZmdkLFNBMkJtQmlrQixXQVNMcGpDO3VCQW1DRjBTLE1BSGdCdlE7bUJBR1gsT0FBQTs0QkF2RWpCZ2QscUJBQUFBLFFBMkJtQmlrQixXQTRDUDF3QjtrQkFBZ0M7ZUFIcEIsT0FBQSxpQ0FMZmd4Qjs7Ozs7Ozt1QkFTNkJ4bUIsZ0JBQVJwUDttQkFBZSxJQUN4QyxXQXBDSjAyQixtQkFtQ3FDdG5CLEdBQVJwUCxJQUN6Qjt5QkFDQzBUO3dCQUFBa1ksNEJBQUFsWTt5QkExRU5yQzt1REEwRU11YTtvQkFDSTs7dUJBN1dmbUosK0NBc1VtQjdpQyxHQXNDUjA1QjtvQkFDSSxPQUFBOzs7Ozs7O3VCQUMwQmdMLGtCQUFSbjJCO21CQUFlLElBQ3RDLFdBeENKaTJCLG1CQXVDbUNFLEtBQVJuMkIsTUFDdkI7eUJBQ0NpVDt3QkFBQW1qQiw0QkFBQW5qQjt5QkE5RU5yQzt1REE4RU13bEI7b0JBQ0k7O3VCQWpYZjlCLCtDQXNVbUI3aUMsR0EwQ1Iya0M7b0JBQ0ksT0FBQTs7Ozs7OzttQkFwQ0MzYSwyQkFBQUE7O2dCQUNKO2lCQURnRDNtQjtpQkFBbEJ1aEM7aUJBQzlCO21CQUFBLGtDQTVDUHpsQixpQkEyQ3FDeWxCOztpQkFHaEMsT0FBQTswQkE5Q0x6bEIsb0JBQUFBLFFBMkJtQmlrQixXQVNMcGpDLEdBT0hncUIsTUFBNEMzbUI7b0JBSS9DMHNCO2dCQUFXO2lCQUVEO2tCQUFBLE9BQUEsV0FGVkEsV0FYTS92QjtrQkFhSCxPQUFBO2tCQURGNmtDOztzQkFFR3JqQjtxQkFBQXNqQiw0QkFBQXRqQjtzQkFsRFpyQztvREFrRFkybEI7aUJBQ0k7a0JBQUE7O3FCQXJWckJqQywrQ0FzVW1CN2lDLEdBY0Y4a0M7a0JBRkhELG1CQUdBOzs7OzRCQUVtQjFpQztvQkFDdkIsS0FEdUJBO3FCQUF2QixPQUFBOzhCQXJETGdkLG9CQUFBQSxRQTJCbUJpa0IsV0FTTHBqQyxHQU9IZ3FCLE1BQTRDM21CO3dCQWUzQ3FQLE1BTGdCdlE7b0JBS1gsT0FBQTs2QkExRGpCZ2QscUJBQUFBLFFBMkJtQmlrQixXQStCUDF3QjttQkFBZ0M7Z0JBTHBCLE9BQUE7K0NBTGZteUI7Ozs7V0FnQ0wsT0FBQSxXQUFBLGlCQWhGSjFsQixTQTJCbUJpa0IsV0FTTHBqQztVQTRDa0I7VUE1Q3RCLE9BQUEsaUNBUlR1a0M7U0FvRCtCO1NBckRsQixPQUFBLGlDQWRiRDtRQW1FK0I7O2lCQWhGaENubEIsUUFzRmlEaWtCLFdBQVVwakMsR0FBRWdxQixNQUFLM21CO1NBRXJFO1VBQStCb2hCLGtCQUYrQnprQjtVQUVkMjFCLGlCQUZjMzFCO1VBRXpDd2tCLFdBRnlDeGtCO1VBSWpDNDJCLG9CQUptQzVNO1VBSWxCMk0sbUJBSmtCM007VUFJN0N5TSxhQUo2Q3pNO1VBSXhENEwsWUFKd0Q1TDt1QkFLWnZGO1VBQ2xELFdBRk1tUixXQUFXYSxZQUEyQkUsa0JBQ01sUztTQU1qRDtTQU5EO1VBQUE7WUFBQTtjQTNGQ3RGLHFCQUFBQSxRQXNGaURpa0IsV0FJdkJ4TTtVQUR6Qm1PLFNBRUY7dUJBUVcvYTs7V0FFTSxJQUFXeHBCLGdCQUFMd2tDO1dBQ25CLGNBQXNDeGtDLEtBQU8sV0FEMUJ3a0MsS0FDbUJ4a0MsS0FBaUI7V0FBdkQsV0FBQSxXQXRHSDJlLHFCQUFBQSxRQXNGaURpa0IsV0FldEI1aUM7V0FDVSxPQUFBO1VBQXNCO1VBRDVEO1dBQUEsT0FBQSxrQ0FmbUU2QztXQWNqRXFSLFNBQ0Y7d0JBSVdyUjt5QkFDcUNvaEI7WUFDbEQ7d0JBUmF1RixNQU1BM21CO29CQWpCUW1oQjtvQkFBMkJtUjtvQkFrQkVsUjtXQU1qRDtXQU5EOztjQUFBO2dCQTFHR3RGLHFCQUFBQSxRQXNGaURpa0IsV0FFckIzZTtXQWtCZSxPQUFBO1VBTTdDO1VBUFEsT0FBQSxpQ0FMTC9QO1NBWUg7U0FiUSxPQUFBLGlDQVZMcXdCO1FBdUJIOztpQkFoSEU1bEIsUUFrSGNpa0IsV0FBVWx6QjtTQUMzQixXQUQyQkEsTUFDTyxPQUFBLGlCQW5IL0JpUDtTQW1ISCxPQUFBO2tCQW5IR0E7O2tCQUFBQTs7O2tCQWtIY2lrQjtrQkFBVWx6QjtRQUM4Qzs7aUJBbkh0RWlQLFFBcUhvQmlrQixXQUFVbHpCO1NBQ2pDLFdBRGlDQSxNQUNhLE9BQUEsaUJBdEgzQ2lQO1NBc0hILE9BQUE7a0JBdEhHQTs7a0JBQUFBOzs7a0JBcUhvQmlrQjtrQkFBVWx6QjtRQUVUOztpQkF2SHJCaVAsUUF5SGNpa0IsV0FBVWx6QjtTQUMzQixXQUQyQkEsTUFDTyxPQUFBLGlCQTFIL0JpUDtTQTBISCxPQUFBO2tCQTFIR0E7O2tCQUFBQTs7O2tCQXlIY2lrQjtrQkFBVWx6QjtRQUM2Qzs7aUJBMUhyRWlQLFFBNEhlaWtCLFdBQVVsekI7U0FDNUIsV0FENEJBLE1BQ1EsT0FBQSxpQkE3SGpDaVA7U0E2SEgsT0FBQTtrQkE3SEdBOztrQkFBQUE7OztrQkE0SGVpa0I7a0JBQVVsekI7UUFFekI7O2lCQTlIQWlQLFFBZ0llaWtCLFdBQVVsekI7U0FDNUIsV0FENEJBLE1BQ1EsT0FBQSxpQkFqSWpDaVA7U0FpSUgsT0FBQTtrQkFqSUdBOztrQkFBQUE7OztrQkFnSWVpa0I7a0JBQVVsekI7UUFFekI7O2lCQWxJQWlQLFFBb0llaWtCLFdBQVVsekI7O1VBWXhCO1dBQWdCQTtXQUFYa3pCO2tCQUFXbHpCO1dBQ2dCLE9BQUEsaUJBakpqQ2lQO1VBaUpILE9BQUE7bUJBakpHQTs7bUJBQUFBOzs7bUJBZ0pNaWtCO21CQUFXbHpCO1NBRWpCOztVQVhFO1dBQ2EsT0FBQSxxQ0FKQWt6QixXQUFVbHpCO2dDQUtsQmhTLGdCQUFLcVA7d0JBS0YyQztXQUNSO21CQUFDO3FEQU5JaFMsS0FBS3FQLEtBTEc2MUI7bUJBVUxsekI7VUFDbUQ7VUFMM0Q7V0FBQTthQUFBOzs7O2VBTnVCQTtXQVl4QixPQUFBLHVDQVp3QkE7VUFVbkIsT0FBQTtTQUN1RDtTQVQvRDtVQUFBLE9BQUEsMkRBRjJCQTs7VUFDNUIsT0FBQTtTQVdJLE9BQUE7UUFFRDs7aUJBbEpBaVAsUUFvSmtCaWtCLFdBQVVsekI7U0FDL0IsV0FEK0JBLE1BQ1csT0FBQSxpQkFySnZDaVA7U0FxSkgsT0FBQTtrQkFySkdBOztrQkFBQUE7OztrQkFvSmtCaWtCO2tCQUFVbHpCO1FBRWxCOztpQkF0SlZpUCxRQXdKa0Jpa0IsV0FBVWx6QjtTQUMvQixXQUQrQkEsTUFDVyxPQUFBLGlCQXpKdkNpUDtTQXlKSCxPQUFBO2tCQXpKR0E7O2tCQUFBQTs7O2tCQXdKa0Jpa0I7a0JBQVVsekI7UUFFbEI7O2lCQTFKVmlQLFFBNEptQmlrQjthQUF3QjZCLHlCQUFaQzt1QkFDUUE7d0JBSWxDRCxjQUFnQixXQUprQkMsWUFJbENELGNBQTRDO3dCQUY3Qy8wQixHQUFLLE9BQUxBLEtBQWM7VUFEZ0I7V0FBQSxPQUFBLGlCQTlKbENpUDtXQThKSDthQUFBO2VBOUpHQTs7ZUFBQUE7OztlQTRKbUJpa0I7ZUFBd0I2QjtVQUsxQyxPQUFBO1NBQWdEO1NBSnBEO2lCQUFBLFdBN0pHOWxCLG9CQUFBQSxRQTRKbUJpa0IsV0FBWThCO1NBQ0ksT0FBQTs7O2lCQTdKbkMvbEIsUUFtS29CaWtCLFdBQVVsekI7U0FDakMsV0FEaUNBLE1BQ0MsT0FBQSxpQkFwSy9CaVA7U0FvS0gsT0FBQTtrQkFwS0dBOztrQkFBQUE7OztrQkFtS29CaWtCO2tCQUFVbHpCO1FBRXBCOztpQkFyS1ZpUCxRQXVLbUJpa0I7YUFBd0IrQix5QkFBWkM7dUJBQ1VBO3dCQUlwQ0QsY0FBZ0IsV0FKb0JDLFlBSXBDRCxjQUE0Qzt3QkFGN0NqMUIsR0FBSyxPQUFMQSxLQUFlO1VBRHlCO1dBQUEsT0FBQSxpQkF6SzVDaVA7V0F5S0g7YUFBQTtlQXpLR0E7O2VBQUFBOzs7ZUF1S21CaWtCO2VBQXdCK0I7VUFLMUMsT0FBQTtTQUFnRDtTQUpwRDs7WUFBQSxXQXhLR2htQixxQkFBQUEsUUF1S21CaWtCLFdBQVlnQztTQUNNLE9BQUE7OztpQkF4S3JDam1CLFFBZ0xhaWtCLFdBQVUzVjtrQkFDbEI0WDtVQUFpQmhVLE1BQU1pVSxhQUFhQyxjQUFjbnhCLE1BQ3JEcXZCO3dCQUVLNkI7V0FDUixPQUhHN0I7WUF4ZkxkLGFBc1VHeGpCLHFCQWlMc0JrUyxhQUdmaVU7eUJBSzZCRTs7YUFVdkI7cUJBbEJTblU7cUJBa0JELDhCQWZkaVUsYUFLNkJFO1lBVUs7ZUFsQkFEO2FBWXZCO2NBQVhybEMsV0F2Vlo4akMsV0EyVThDdUI7Y0FhbENwMkIsTUFiZWtpQjs7eUJBZU1uekIsS0FBSXVuQztpQkFDekIsT0FBQSxXQWpNUHRtQix1QkFnTTRCamhCLEtBQUl1bkM7Z0JBQ3dCO2NBRnJEO2dCQUFBLG1DQURJdDJCLEtBREFqUCxnQkFaZ0RrVTs7O3dCQVVoRDtZQVFKLE9BQUE7V0FBc0M7V0FWMUMsV0FXRThMLEtBbkJzRDlMLE1BQ3JEcXZCO1dBTzhCLE9BQUE7VUFVUztVQWhCMUMsV0FpQkV2akIsS0E5Vk44akIsV0EyVWlDc0I7VUFHekIsT0FBQTtTQWVzQztrQkFDeENwbEIsS0FBS3VOLElBQUlnVztVQUNYLEtBRE9oVyxJQUVDLE9BQUE7VUFDVSxJQUFSclosT0FISHFaLE9BR0w0RCxPQUhLNUQsT0FJQ3Z2QixNQURObXpCLFNBRUUsUUFGRkE7O1dBR21DO1lBQVZ2RDtZQUFMdVI7WUFDVnZMLHNCQUpWekM7WUFLVStDO2NBQ0Y7O2dCQUZFTjtnQkEzQkVzUDs7OztlQWtDRjtnQkFLQTtpQkFER3NDOzs7a0NBR3dDQTtxQkFDM0MsT0F0QkRqQztzQkE1Z0JiZixRQXdVR3ZqQixxQkF1TUNrUyxhQWtCcURxVTttQ0FJTnR4QjtzQkFBUSxPQUFBLDhCQUpGc3hCLE9BSU50eEI7cUJBQW9CO3FCQUF6RCxXQXpCVjhMLEtBR1E5TCxNQUhDcXZCO3FCQXlCa0MsT0FBQTtvQkFBd0I7b0JBSnpELFdBckJWdmpCLEtBa0Jhd2xCO29CQUdvQyxPQUFBO21CQUlrQjtpQkFOekQsY0FBSyw4QkFiVTVYO2dCQWFtQixPQUFBOzs2QkFIVXVEOzhCQUNOamQsTUFBUSxXQURGaWQsTUFDTmpkLE1BQW9CO2dCQUExRDs7bUJBQUEsV0FyTlgrSyxvQkFBQUEsUUFnTGFpa0IsV0F1QkpodkI7Z0JBY29DLE9BQUE7ZUFBd0I7ZUFEMUQ7dUJBQUEsV0FBQSxpQkFwTlgrSyxTQWdMYWlrQixXQXVCWi9SO2VBYWtELE9BQUE7Y0FTaUI7WUFiN0Q7Y0FBQSxtQ0FoTlBsUyxpQkE0TVdpVixNQUZVaUw7O1dBUVYsT0FBQTs7d0JBYXdDc0c7V0FDNUMsSUFDQSxPQTFCTnRVLGlCQXdCa0RzVTs7Ozs7Z0JBR0ZDO2dCQUFSQztnQkFBakJ2bUI7Z0JBQUp3bUI7ZUFHSyxLQUFBLGlDQUhMQSxJQUFxQkQ7Z0JBRzlCLE1BQUE7ZUFDQTs7MkJBRVFQO2lDQUlBQztvQkFDUixPQTVETkY7NkJBOEM4Q007NkJBU2hDTDs2QkFJQUM7NkJBckNWbnhCOzZCQUhDcXZCO21CQTBDMkI7bUJBTDFCOztzQkFBQTt3QkF6T1h0a0I7d0JBQUFBO3dCQWtPb0IybUI7d0JBQUl4bUI7d0JBQXlCc21CO3dCQTFCMUMxbkM7d0JBeEJNa2xDO3dCQWdERko7bUJBWUksT0FBQTtrQkFFc0I7Z0JBUjFCO2tCQUFBO29CQXRPWDdqQjtvQkFBQUE7b0JBa09vQjJtQjtvQkFBSXhtQjtvQkFBeUJzbUI7b0JBMUIxQzFuQztvQkF4Qk1rbEM7b0JBZ0RGSjtlQVFJLE9BQUE7Ozs7O2VBa0JKO2dCQUQwQitDO2dCQUFoQkM7OzJCQUdGVjtpQ0FHQUM7b0JBQ1IsT0EvRU5GOzZCQThDOENNOzZCQTZCaENMOzZCQUdBQzs2QkF4RFZueEI7NkJBSENxdkI7bUJBNkQyQjttQkFKMUI7O3NCQUFBO3dCQTdQWHRrQjt3QkFBQUE7d0JBZ09XNmpCO3dCQXlCVWdEO3dCQUFnQkQ7d0JBakQ5QjduQzt3QkF4Qk1rbEM7bUJBK0VFLE9BQUE7a0JBRXNCO2dCQVAxQjtrQkFBQTtvQkExUFhqa0I7b0JBQUFBO29CQWdPVzZqQjtvQkF5QlVnRDtvQkFBZ0JEO29CQWpEOUI3bkM7b0JBeEJNa2xDO2VBNEVFLE9BQUE7Ozs7O2VBT0o7Z0JBRGdDNkM7Z0JBQW5CQzs7MkJBR0xaO2lDQUdBQztvQkFDUixPQXhGTkY7NkJBOEM4Q007NkJBc0NoQ0w7NkJBR0FDOzZCQWpFVm54Qjs2QkFIQ3F2QjttQkFzRTJCO21CQUoxQjs7c0JBQUE7d0JBdFFYdGtCO3dCQUFBQTt3QkFnT1c2akI7d0JBa0Nha0Q7d0JBQW1CRDt3QkExRHBDL25DO3dCQXhCTWtsQzttQkF3RkUsT0FBQTtrQkFFc0I7Z0JBUDFCO2tCQUFBO29CQW5RWGprQjtvQkFBQUE7b0JBZ09XNmpCO29CQWtDYWtEO29CQUFtQkQ7b0JBMURwQy9uQztvQkF4Qk1rbEM7ZUFxRkUsT0FBQTs7Ozs7ZUFyQko7Z0JBRDZCK0M7Z0JBQWxCbFI7OzJCQUdIcVE7aUNBSUFDO29CQUNSLE9BdEVORjs2QkE4QzhDTTs2QkFtQmhDTDs2QkFJQUM7NkJBL0NWbnhCOzZCQUhDcXZCO21CQW9EMkI7bUJBTDFCOztzQkFBQTt3QkFuUFh0a0I7d0JBQUFBO3dCQWdPVzZqQjt3QkFlVy9OO3dCQUFrQmtSO3dCQXZDakNqb0M7d0JBeEJNa2xDO21CQXNFRSxPQUFBO2tCQUVzQjtnQkFSMUI7a0JBQUE7b0JBaFBYamtCO29CQUFBQTtvQkFnT1c2akI7b0JBZVcvTjtvQkFBa0JrUjtvQkF2Q2pDam9DO29CQXhCTWtsQztlQWtFRSxPQUFBOzs7O3lCQTBCa0NodkIsTUFDdEMsV0E5Q3dDdXhCLGVBNkNGdnhCLE1BQ2pCO1dBRHJCLFdBQUEsV0E1UVgrSyxvQkFBQUEsUUFnTGFpa0IsV0F1QkpodkI7V0FxRW9DLE9BQUE7VUFDYjtVQTlDekIsV0FBQSxXQUFBLGlCQS9OUCtLLFNBZ0xhaWtCLFdBdUJaL1I7VUF3QjhDLE9BQUE7U0E4Q2I7U0FFckMsT0EzRUluUixLQXBCc0J1TjtRQStGTTs7aUJBL1E3QnRPLFFBa1JhaWtCLFdBQVUzUTtrQkFDbEI0UztVQUFpQmhVLE1BQU1pVSxhQUFhQyxjQUFjbnhCLE1BQ3JEcXZCO3dCQUVLNkI7V0FDUixPQUhHN0I7WUExbEJMZCxhQXNVR3hqQixvQkFtUnNCa1MsYUFHZmlVO3lCQUs2QkU7O2FBVXZCO3FCQWxCU25VO3FCQWtCRCw4QkFmZGlVLGFBSzZCRTtZQVVLO2VBbEJBRDthQVl2QjtjQUFYcmxDLFdBemJaOGpDLFdBNmE4Q3VCO2NBYWxDcDJCLE1BYmVraUI7O3lCQWVNbnpCLEtBQUl1bkM7aUJBQ3pCLE9BQUEsV0FuU1B0bUIsdUJBa1M0QmpoQixLQUFJdW5DO2dCQUN3QjtjQUZyRDtnQkFBQSxtQ0FESXQyQixLQURBalAsZ0JBWmdEa1U7Ozt3QkFVaEQ7WUFRSixPQUFBO1dBQXNDO1dBVjFDLFdBV0U4TCxLQW5Cc0Q5TCxNQUNyRHF2QjtXQU84QixPQUFBO1VBVVM7VUFoQjFDLFdBaUJFdmpCLEtBaGNOOGpCLFdBNmFpQ3NCO1VBR3pCLE9BQUE7U0Flc0M7a0JBQ3hDcGxCLEtBQUt1UyxJQUFJZ1I7VUFDWCxLQURPaFIsSUFFQyxPQUFBO1VBQ1UsSUFBUnJlLE9BSEhxZSxPQUdMcEIsT0FIS29CLE9BSUN2MEIsTUFETm16QixTQUVFLFFBRkZBOztXQUdtQztZQUFWdkQ7WUFBTHVSO1lBQ1Z2TCxzQkFKVnpDO1lBS1UrQztjQUNGOztnQkFGRU47Z0JBM0JFc1A7Ozs7ZUFrQ0Y7Z0JBS0E7aUJBREdzQzs7O2tDQUd3Q0E7cUJBQzNDLE9BdEJEakM7c0JBOW1CYmYsUUF3VUd2akIsb0JBeVNDa1MsYUFrQnFEcVU7bUNBSU50eEI7c0JBQVEsT0FBQSw4QkFKRnN4QixPQUlOdHhCO3FCQUFvQjtxQkFBekQsV0F6QlY4TCxLQUdROUwsTUFIQ3F2QjtxQkF5QmtDLE9BQUE7b0JBQXdCO29CQUp6RCxXQXJCVnZqQixLQWtCYXdsQjtvQkFHb0MsT0FBQTttQkFJa0I7aUJBTnpELGNBQUssOEJBYlU1WDtnQkFhbUIsT0FBQTs7NkJBSFV1RDs4QkFDTmpkLE1BQVEsV0FERmlkLE1BQ05qZCxNQUFvQjtnQkFBMUQ7O21CQUFBLFdBdlRYK0ssb0JBQUFBLFFBa1JhaWtCLFdBdUJKaHZCO2dCQWNvQyxPQUFBO2VBQXdCO2VBRDFEO3VCQUFBLFdBQUEsaUJBdFRYK0ssU0FrUmFpa0IsV0F1QlovUjtlQWFrRCxPQUFBO2NBU2lCO1lBYjdEO2NBQUEsbUNBbFRQbFMsaUJBOFNXaVYsTUFGVWlMOztXQVFWLE9BQUE7O3dCQWF3Q3NHO1dBQzVDLElBQ0EsT0ExQk50VSxpQkF3QmtEc1U7Ozs7O2dCQUdGQztnQkFBUkM7Z0JBQWpCdm1CO2dCQUFKd21CO2VBR0ssS0FBQSxpQ0FITEEsSUFBcUJEO2dCQUc5QixNQUFBO2VBQ0E7OzJCQUVRUDtpQ0FJQUM7b0JBQ1IsT0E1RE5GOzZCQThDOENNOzZCQVNoQ0w7NkJBSUFDOzZCQXJDVm54Qjs2QkFIQ3F2QjttQkEwQzJCO21CQUwxQjs7c0JBQUE7d0JBM1VYdGtCO3dCQUFBQTt3QkFvVW9CMm1CO3dCQUFJeG1CO3dCQUF5QnNtQjt3QkExQjFDMW5DO3dCQXhCTWtsQzt3QkFnREZIO21CQVlJLE9BQUE7a0JBRXNCO2dCQVIxQjtrQkFBQTtvQkF4VVg5akI7b0JBQUFBO29CQW9Vb0IybUI7b0JBQUl4bUI7b0JBQXlCc21CO29CQTFCMUMxbkM7b0JBeEJNa2xDO29CQWdERkg7ZUFRSSxPQUFBOzs7OztlQWtCSjtnQkFEMEI4QztnQkFBaEJDOzsyQkFHRlY7aUNBR0FDO29CQUNSLE9BL0VORjs2QkE4QzhDTTs2QkE2QmhDTDs2QkFHQUM7NkJBeERWbnhCOzZCQUhDcXZCO21CQTZEMkI7bUJBSjFCOztzQkFBQTt3QkEvVlh0a0I7d0JBQUFBO3dCQWtVVzhqQjt3QkF5QlUrQzt3QkFBZ0JEO3dCQWpEOUI3bkM7d0JBeEJNa2xDO21CQStFRSxPQUFBO2tCQUVzQjtnQkFQMUI7a0JBQUE7b0JBNVZYamtCO29CQUFBQTtvQkFrVVc4akI7b0JBeUJVK0M7b0JBQWdCRDtvQkFqRDlCN25DO29CQXhCTWtsQztlQTRFRSxPQUFBOzs7OztlQU9KO2dCQURnQzZDO2dCQUFuQkM7OzJCQUdMWjtpQ0FHQUM7b0JBQ1IsT0F4Rk5GOzZCQThDOENNOzZCQXNDaENMOzZCQUdBQzs2QkFqRVZueEI7NkJBSENxdkI7bUJBc0UyQjttQkFKMUI7O3NCQUFBO3dCQXhXWHRrQjt3QkFBQUE7d0JBa1VXOGpCO3dCQWtDYWlEO3dCQUFtQkQ7d0JBMURwQy9uQzt3QkF4Qk1rbEM7bUJBd0ZFLE9BQUE7a0JBRXNCO2dCQVAxQjtrQkFBQTtvQkFyV1hqa0I7b0JBQUFBO29CQWtVVzhqQjtvQkFrQ2FpRDtvQkFBbUJEO29CQTFEcEMvbkM7b0JBeEJNa2xDO2VBcUZFLE9BQUE7Ozs7O2VBckJKO2dCQUQ2QitDO2dCQUFsQmxSOzsyQkFHSHFRO2lDQUlBQztvQkFDUixPQXRFTkY7NkJBOEM4Q007NkJBbUJoQ0w7NkJBSUFDOzZCQS9DVm54Qjs2QkFIQ3F2QjttQkFvRDJCO21CQUwxQjs7c0JBQUE7d0JBclZYdGtCO3dCQUFBQTt3QkFrVVc4akI7d0JBZVdoTzt3QkFBa0JrUjt3QkF2Q2pDam9DO3dCQXhCTWtsQzttQkFzRUUsT0FBQTtrQkFFc0I7Z0JBUjFCO2tCQUFBO29CQWxWWGprQjtvQkFBQUE7b0JBa1VXOGpCO29CQWVXaE87b0JBQWtCa1I7b0JBdkNqQ2pvQztvQkF4Qk1rbEM7ZUFrRUUsT0FBQTs7Ozt5QkEwQmtDaHZCLE1BQ3RDLFdBOUN3Q3V4QixlQTZDRnZ4QixNQUNqQjtXQURyQixXQUFBLFdBOVdYK0ssb0JBQUFBLFFBa1JhaWtCLFdBdUJKaHZCO1dBcUVvQyxPQUFBO1VBQ2I7VUE5Q3pCLFdBQUEsV0FBQSxpQkFqVVArSyxTQWtSYWlrQixXQXVCWi9SO1VBd0I4QyxPQUFBO1NBOENiO1NBRXJDLE9BM0VJblIsS0FwQnNCdVM7UUErRk07O0lBcmJTLDRCQUFBbFc7SyxHQUFBQTtVQUFBQyxNQUFBRCxRQUFBNnBCLFFBQUE1cEI7O1VBQUE0cEI7S0FDckIsZ0JBQUE3cEI7TSxHQUFBQSxTQUFBQyxNQUFBRCxRQTlMMEJpbkIsT0E4TDFCaG5CLGNBOUwwQmduQixPQXhFOUNmO01Bc1E4RCxnQkFBQWxtQjtPLEdBQUFBO1lBQUFDLE1BQUFELFFBaEMvRDhtQixlQWdDK0Q3bUI7O1lBaEMvRDZtQjtPQWdDc0UsZ0JBQUFnRDtRQUt2RSxJQWhJMkJDLG9CQXROckJwRixVQWlWaUVtRjtRQTFIekU7U0FFTyxJQUFvQ3ZGLG1CQUE3QnB0QjtTQUE0QyxXQUE1Q0EsT0FBNkJvdEI7UUFBK0I7UUFEeEU7U0FBQSxPQUFBLGtDQUYyQndGO1NBTVUsT0FBQSxpQ0FOVkE7U0FNRCxXQUFBO1NBSjFCLFFBQUEsV0FJRzs7YUFFQW5VLGtCQXVIRG9VLHNCQXZIQ3BVOztTQUVEO1VBREl6ZTtVQUNKO3FCQUcrQy9EO2FBQ3hDLE9BQUcsaUNBRHFDQSxNQUozQytEOzJCQUkyQy9EOztZQUNjO1VBRDNELE9BQUEsa0NBYnVCMjJCO1VBK0h6QkM7WUFsSEU7UUFzSEo7U0FBQSxPQXpWTXJGLFVBaVZpRW1GOztTQVN4RDtXQUFBO2tDQUFNbnBCLEdBQXdCLGVBQXhCQSxNQUFBQSxPQUFBQSxNQUFzRDtTQUZ6RXNwQixZQUNGO1NBSUVqc0IsYUE3VkkybUIsVUFpVmlFbUY7U0FhckVuWjtXQUFhLHdEQURiM1M7U0FFQTRTO1dBQWMsd0RBRmQ1UztTQUdBeVM7V0FBYSx3REFIYnpTO1NBSUEwUztXQUFtQix3REFKbkIxUztTQUtBdVM7V0FBWSx3REFMWnZTO1NBTUF3UztXQUFhLHdEQU5ieFM7U0FPQStTO1dBQWMsd0RBUGQvUztTQVFBNlM7V0FBYyx3REFSZDdTO1NBU0FzUztXQUFVLHdEQVRWdFM7U0FVQXlUO1dBQWlCOzJEQVZqQnpUO1NBV0F3VDtXQUFpQjsyREFYakJ4VDtTQVlBa3NCLGFBQWEsb0NBWmJsc0I7U0FlRjtXQXhjSXdtQix3QkE0VkprRCx1QkFoUU0vQyxVQWlWaUVtRjtTQTBCaERLO1NBQXJCQztTQUtGO1dBNWNJNUYsd0JBNFZKa0QsdUJBaFFNL0MsVUFpVmlFbUY7U0E4QmhETztTQUFyQkM7U0FNRjtXQWxjSTVGLDBCQW1WSmlELGlCQXRRTWhELFVBaVZpRW1GO1NBbUN6Q1M7U0FBNUJDO1NBS0Y7V0F0Y0k5RiwwQkFtVkppRCxpQkF0UU1oRCxVQWlWaUVtRjtTQXVDekNXO1NBQTVCQztTQU1GO1dBM2NJaEcsMEJBbVZKaUQsaUJBdFFNaEQsVUFpVmlFbUY7U0E0Q2pEYTtTQUFwQkM7U0FLRjtXQS9jSWxHLDBCQW1WSmlELGlCQXRRTWhELFVBaVZpRW1GO1NBZ0RqRGU7U0FBcEJDO1NBTUY7V0FwZElwRywwQkFtVkppRCxpQkF0UU1oRCxVQWlWaUVtRjtTQXFEaERpQjtTQUFyQkM7U0FLRjtXQXhkSXRHLDBCQW1WSmlELGlCQXRRTWhELFdBaVZpRW1GO1NBeURoRG1CO1NBQXJCQztpQkFLQUMsU0E1UE9oc0I7U0E0UEksZ0JBNVBJbVY7VUE0UEosZ0JBNVBPc1M7V0E0UFAsZ0JBNVBrQmpsQztZQTRQbEIsZ0JBNVBzQmtsQzthQTRQdEIsZ0JBNVBnQ2x6QjtjQUU3QztlQURFa2tCO2lCQUNGLDJDQUYrQmwyQixLQUFJa2xDO2VBSS9CLFFBQUEsb0NBSksxbkIsU0FBb0N4TDswQkFLckMsT0FBQSxXQUxZaXpCLFlBQWVDLFdBQVVsekI7c0NBTWxDNGQsb0JBQUx1Ujs0QkFNSWlFO2VBQ1IsS0FEUUEsNkJBWlVILFlBQWVDLFdBQVVsekI7bUJBZXBDc1AsTUFIQzhqQjs2QkFPSUk7Z0JBMUZaaEIsUUF1RThDYyxNQUF2QzluQixTQUFzQnhkLFNBbUJqQndsQztnQkFDUixPQURRQTtlQUVNO2VBTGQ7O2tCQXJDRlI7b0JBcUJLeG5CO29CQUFRbVY7b0JBQUdzUztvQkFBV2psQztvQkFBSWtsQztvQkFpQjNCLG9DQWpCQzFuQixTQWVBOEQsS0FURXNPO29CQXdKVnVWO2VBM0lTLE9BQUE7Y0FFVTs7ZUFiZjtnQkFBQSxPQUFBLG1DQVJZeFMsSUFDZnVELE1BS0lpTDs7OztvQkFJRTNGO21CQUFBbFksMEJBQUFrWTtlQUFTLEtBb0poQjJKLGdEQXBKTzdoQjtlQUNnQjtnQkFBQSxXQTVDeEJxaEIsdUJBaUNTbm5CLFNBQW9DeEwsR0FVckNzUjt1QkFDSDs7Y0FDQyxPQUFBOztpQkFpUEptbUI7U0FBWTtVQUFBOztZQTVMRjthQUFBO2NBQUE7ZUFBQTtnQixPQTFDUnBFOzs7V0FzT1U7O1lBQUE7O2FBQUE7Y0FERCxPQUFBLHVCQTVQbUNDLE1BOEovQ0g7O2lCQWdHQ3VFLHlCQXhIdUI5WjtTQXdISSxnQkF4SEVnWTtVQXdIRixnQkF4SE1KO1dBd0hOLGdCQXhIYW1DO1lBd0hiLGdCQXhINkIzcEM7YUF3SDdCLGdCQXhIa0NrbEM7YyxnQkFDaEQwRTtlQUNVLFdBQUE7NkJBQ2pCbDVCO2dCQUFMLElBQW1Da0I7OEJBQ3hCbEI7K0JBQzRCbTVCO2dDQUNTQzttQkFDakQsR0FGd0NEO3VCQUNTQztxQkFPM0M7c0JBRkNDLFNBTmlDRjtzQkFPaEMzVDt3QkFDRjs7MEJBYmtEbDJCOzBCQUdwQjRSOzBCQUh5QnN6Qjs7cUJBZ0J6RDtzQkFDcUI7dUJBQWZtQzt5QkFBZSxXQWRXejFCLFVBUzVCc2tCLE1BWnFCMFIsSUFBVytCLGdCQVdqQ0k7dUJBT0Q7eUJBQUEscUNBREkxQyxjQWJFMzJCO3NCQWNOOzsyQkFDRzhxQjswQkFBQWxZLDBCQUFBa1k7c0JBQVMsS0FLbkIySjt5REFMVTdoQjtzQkFDYyxJQUFiMG1CLGlCQUFlLFdBbkJaSixhQWtCSnRtQjtzQkFFSSxPQUFBO3lEQURIMG1CLFlBaEJFdDVCOzs7OzZCQUVxQ281QixJQURqRCxPQUFBLGlDQURZcDVCO21CQU1SLFdBdkJOdTFCLCtCQWEwRGptQzttQkFLeEQsT0FBQSx1Q0FEWTBRO2tCQWlCcUI7a0JBZmpDLFdBbERFZzFCLFVBK0NrQzl6QixVQUhJKzNCO2tCQU1LLE9BQUE7aUJBZVo7aUJBaEJqQyxXQWpERWpFLFVBK0NrQzl6QixVQUhINDFCO2lCQUtHLE9BQUE7Z0JBZ0JIO2dCQWpCekIsT0FBQSxpQ0FERjkyQjtlQWtCNEI7ZUFuQnRDLE9BQUEsOENBRjJCa2Y7O3NCQXVCTkE7U0FrR0ksZ0JBbEdHZ2E7VUFrR0gsZ0JBbEdnQnpXO1dBa0doQixnQkFsR3NCc1U7WUFrR3RCLGdCQWxHcUN6bkM7YUFrR3JDLGdCQWxHMENrbEM7Y0FFeEMsV0FBQTs0QkFBb0J4MEI7ZUFBTCxJQUE2Qlo7NkJBQ3ZEWTs4QkFFSm01QjsrQkFFQUM7a0JBQ1IsR0FIUUQ7c0JBRUFDO29CQU9GO3FCQUZDeHZCLFFBUEN1dkI7cUJBUUEzVDt1QkFDRjt5REFkb0RsMkIsS0FFUzhQLE1BRkpvMUI7b0JBaUIzRDtxQkFDcUI7c0JBQWZtQyxlQUFlLFdBaEIwQ3YzQixNQVczRG9tQixNQWJtQ3VSLGVBWXBDbnRCO3NCQU9EO3dCQUFBLHFDQURJK3NCLGNBZkUzMkI7cUJBZ0JOOzswQkFDRzhxQjt5QkFBQWxZLDBCQUFBa1k7cUJBQVMsS0FuQm5CMko7d0RBbUJVN2hCO3FCQUNjLElBQWIwbUIsaUJBQWUsV0FyQkRKLGFBb0JmdG1CO3FCQUVJLE9BQUE7d0RBREgwbUIsWUFsQkV0NUI7Ozs7NEJBSUpvNUIsSUFIUixPQUFBLGlDQURZcDVCO2tCQVFSLFdBL0NOdTFCLCtCQW9DNERqbUM7a0JBSTFELE9BQUEsdUNBRFkwUTtpQkFtQnFCO2lCQWhCakM7a0JBQUE7b0JBQUEsZ0NBSm1FWixTQUZ4QjIzQjs7aUJBT3ZDLE9BQUE7Z0JBZTZCO2dCQWxCakM7aUJBQUEsT0FBQSxnQ0FGbUUzM0IsU0FGOUJxakI7O2dCQUtqQyxPQUFBO2VBaUI2QjtlQW5CekIsT0FBQSxpQ0FEbUN6aUI7Y0FvQlQ7Y0FwQnRDLE9BQUEsOENBRnFCa2Y7Ozs7d0JBaUdqQjhaO3dCQURBRDt3QkFEQUQ7d0JBTEFEO3dCQUFxQkQ7d0JBSnJCRDt3QkFBcUJEO3dCQUxyQkQ7d0JBQW9CRDt3QkFKcEJEO3dCQUFvQkQ7d0JBTHBCRDt3QkFBNEJEO3dCQUo1QkQ7d0JBQTRCRDt3QkFMNUJEO3dCQUFxQkQ7d0JBSnJCRDt3QkFBcUJEO3dCQWJyQnhaO3dCQUNBQzt3QkFDQUg7d0JBQ0FDO3dCQUNBSDt3QkFDQUM7d0JBQ0FPO3dCQUNBRjt3QkFDQVA7d0JBQ0FtQjt3QkFDQUQ7d0JBQ0EwWTt3QkFqQkFEO3dCQUhBRDt3QkFsTThDL0M7d0JBOEovQ0g7d0JBK0IwQytDOzs7Ozs7Ozs7UUF2VXpDN1o7UUFFQThVO1FBR0FDOztRQUdBQztRQUVBRTtRQUdBQztRQXFCQU87UUFHQUM7UUFyQkFQO1FBR0FDO1FBcUJBTztRQUdBQztRQXJCQVA7UUFHQUM7UUFxQkFPO1FBR0FDO1FBckJBUDtRQUdBQztRQXFCQU87UUFHQUM7V0FXQUM7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7SUNyREYwRjs7SUFHQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBdklFQyxNQUFNeE4sSUFBRzc3QixLQUFJa1I7SUFBSSxPQUFBLCtCQUFSbFIsVUFBSDY3QixJQUFPM3FCO0dBQXlDO1lBaUN0RDFDLEtBQU1rTyxTQUFTalUsT0FBTzZnQyxNQUFNN0MsYUFDOUIsV0FEaUJoK0IsT0FBTzZnQyxVQUFoQjVzQixTQUFzQitwQjtHQUNnQjtZQUU1QzhDLFVBQVc5Z0MsT0FBTzZnQyxNQUFNN0MsYUFBVSxXQUF2QmgrQixPQUFPNmdDLFVBQU03QztHQUEyQztZQUVuRWhCLEtBQUsrRDtJQUNQLFlBRE9BOzJCQUVBajZCLGdCQUFLLE9BQUxBO1FBQ1lrdEIsc0JBQVQvZjthQUFBQTtZQUFBQTs7WUFFQStzQjs7WUFBQUE7O1lBQUFBOztZQUFBQTs7UUFqQ2U7U0FBQTtTQWlDZkEsNkIsT0EzQ1JKOzs7UUFXd0I7U0FBQTtTQWdDaEJJLDZCLE9BM0NSSjs7O1lBMkNRSTs7WUFBQUE7O1FBN0JhO1NBQUE7U0E2QmJBLDZCLE9BM0NSSjs7O1lBMkNRSTs7WUFBQUE7b0JBQUFBOzs7WUFGQS9zQjs7WUFFQStzQjs7WUFBQUE7O1lBQUFBO29CQUFBQTs7SUFDSixTQUhhaE47O01BSUp2ckIsSUFKSXVyQjtNQUNYM3RCLElBR1ksb0NBRlYyNkIsU0FFS3Y0Qjs7O01BQ0Z2QixJQUxNOHNCOztpQkFPRno4QixLQUFJMlA7c0JBQ2F1QjtVQUNoQixXQVBSdTRCLFNBS096cEMsS0FDaUJrUjtVQUNoQixPQUFBLDhCQUZEbFI7U0FHc0M7U0FGMUIsT0FBQSxrQ0FEUjJQO1FBR21DO01BVGhEYixJQUtFLHlDQURHYTtJQWdCVCxTQUFRdVIsS0FBS3BTLEdBQUVxQjtLQUNiLEdBQUcsOEJBRFVBLDJCQUFGckI7TUFDb0I7S0FHckIsWUFBQSxrQ0FKQ0EsR0FBRXFCOztVQUtGb0osY0FGTG13QixNQUVLbndCOztVQUZMbXdCLDRCQUhLNTZCO0tBTkQ7TUFESzRoQixRQVVUZ1osTUFIT3Y1QjtNQU5USCxVQURXMGdCO01BZWlCLGVBUjFCeFAsS0FBS3BTLEdBR0w0NkI7O01BUkEsR0FBQSw4QkFERjE1QjtPQUZNLFVBR2MsZ0JBS2JsQixJQUFFcUIsTUFOVEg7Ozs7Ozs7Ozs7Ozs7O09BQ2MsUUFEZEEsU0FBQUE7O01BY0YsV0FmSixrQ0FPYWxCLEdBQUVxQixLQU5USDs7SUFjb0Q7SUFFcEMsVUFWZGtSLEtBcEJKcFM7SUE4QmtCLE9BQUE7R0FBVTtZQXVEcEM2NkIsZUFBZTc2QjtJQUNULElBQUp2Tzt3QkFDYSx1QkFEYkEsT0FBQUEscUJBQ3FEO0lBQXpELHVDQUZpQnVPO1dBQ2J2TztHQUVGO1lBV0FxcEMsZUFBZUMsVUFBVTE1QjtJQUMzQixJQUFhMjVCLFNBRGMzNUIsUUFDZDNFLE9BQUFzK0I7SUFDWDtLQUFHLEdBQUEsOEJBRFF0K0IsNEJBRElxK0I7TUFFdUIsV0FGYjE1QixRQUFBQSxRQUFBQSxRQUNkM0U7S0FHSCxZQUFBLGdCQUpPcStCLFVBQ0pyK0I7Ozs7Ozs7OztVQU1MLFdBUG1CMkUsUUFBQUEsZ0JBQ2QzRSxjQUFBQTs7Ozs7TUFBYixPQUQyQjJFOztLQUtBLElBSmQ0NUIsU0FBQXYrQixjQUFBQSxPQUFBdStCOztHQWNJO1lBMEJmQztJQUFXQztJQUFRQztJQUF5QnBpQztJQUFNK2hDO0lBQVVNO0lBQzNEcE87SUFBUW5IO0lBQVlqVztpQkFwR0c4bkI7S0FDcEI7TUFDRSxNQUFBLGtDQUZrQkEsWUFvR2Y3UjtNQWxHSCxhQUNHLGtDQUhlNlIsWUFvR2Y3UjtLQWpHQTtNQUdJO2FBTlc2UjthQUFBQTtPQU1YLFVBQUEsK0JBNkYrQzBEO01BOUZ0RCxtREErRkd2Vjs7S0F6RkUsR0FBQSw4QkFYYTZSLFlBQUFBO0tBV3BCLE1BQUE7SUFBa0Q7SUFYdEQsa0NBbUdtQnlEO2lCQXRGU2w3QixHQUFFRDtLQUNoQixJQUFKbUssSUFBSSw4QkFEY2xLLFNBQUVEO0tBRXJCLE9BQUEsOEJBRENtSzs2Q0FEb0JuSyxTQUFGQztlQUNsQmtLO0lBS0U7SUFOVixJQURFa3hCLFFBQ0YsdUNBc0ZpQkY7O09BdkZmRTtTQVNnQkMsVUFUaEJELFVBU1dFLFNBVFhGOzs7VUFTV0csT0FBQUQsUUFBS0UsVUFBQUgsU0FBT3o2QjtNQUN6QjtZQURrQjQ2QjtXQUFBQyxVQUFBRCxZQUFML0QsT0FBSytEO09BSVgsR0FBQSw4QkFKTUQsWUFBQTlEO1FBS0osS0FBQSw4QkFMSThELFlBQUE5RDtZQUFLK0QsVUFBQUM7OztRQWtCYztTQWxCUHowQixZQUFadTBCLE1BQVkzNkI7U0FBWjI2QixPQUFBOUQ7U0FBSytELFVBQUFDO1NBQU83NkIsTUFBQW9HOztVQWdGekIwMEIsVUE5RWlCLHFDQUZKSCxNQUFZMzZCOzs7O01BZ0Z6Qjg2QjtRQXZFUSx1Q0FUS2pFLFNBQUE4RDs7O1NBZ0ZiRztJQUNKLEdBRkczTztTQUUyRHRDLE9BRjNEc0MsV0FFQzRPLGNBQTBEbFI7O1NBQTFEa1I7YUEzQnVDajhCLEVBNEJGeXNCO2NBQ2pDeVAsV0FBV3o2QixLQUFLMDZCLE9BQU9DLE1BQU1DLGNBQWNDO01BQzdDLElBQUkzNkIsUUFEMkIwNkIsZUFBbEI1NkIsTUE5Q2pCeTVCLGVBeUNrREMsVUFLakMxNUI7TUFFVixLQUFBLDhCQURDRSxVQURjdzZCLFFBb0JiLE9BcEJvQkM7O1NBSlJuc0IsWUFBQUE7T0FTWDs7U0FONkJ3Yzs7U0FFL0I5cUI7U0FMQ3VrQjtTQUtEdmtCLFdBQUFBOzs7O01BUUY7NEJBVmlDOHFCLElBSlcwTyxVQU0xQ3g1QixVQURjdzZCLFFBQ2R4NkI7TUFVUyxJQUFQNDZCLGFBWG1CSCxlQVl2QixNQVhFejZCLGdCQURjdzZCOztXQVloQnR4Qjs7UUFDZ0IsVUFBQSxnQkFsQjRCc3dCLFVBaUI1Q3R3QjtRQUNLLEdBQUE7U0FGRDB4QixZQUFBQTtRQUNKLFVBQUExeEI7bUJBQUFBO1lBQUFBOzs7VUFHSTJ4QixTQUpBRDtNQUtKLEtBaEIyQ0Q7T0FnQlgsVUFBQSxnQkFyQlluQixVQUs1QmdCO09BZ0JJLEdBQUE7UUFDbEIsdUJBbEIrQjFQO1FBa0IvQixPQUZFK1A7OztNQUlDLE9BSkRBO0tBS0c7Y0FFSEMsZ0JBQUtMLE1BQU0zNkIsS0FBdUJpNkIsT0FBT1c7TUFDL0MsS0FEd0NYO09BdEJ0Q1EsV0FzQmV6NkIsMkJBM0I2QjA1QixXQTJCbkNpQixNQUFvQ0M7T0FJeEM7O01BUUQ7T0FMSVAsVUFQOEJKO09BT3RDM0QsT0FQc0MyRDtPQVFoQ1ksZ0JBRE52RTtPQUlNd0UsU0FqQ05MLFdBc0JlejZCLEtBT2ZzMkIsWUFQU3FFLE1BQW9DQyxjQVF2Q0M7T0FPQWw4QixJQTFMVjIyQixLQWtMSWdCO01BU0UsR0ExQ2E5bkI7OztVQUFBQTtjQWdEUDtpQ0E3Q3lCd2MsU0F0RHZDZ087YUF3Rlk4QjtjQVFFO2lDQTFDeUI5UCxTQWtDM0I4UCxnQkFuQ1ZOO2FBbUNVTTtRQUtBQzs7V0FBQUEsU0FMQUQ7TUFlSix1QkFqRCtCOVAsSUFzQzNCcnNCO1VBWUFzOEIsU0FYQUYsU0FsR1p2QixlQWlHWTc2QixjQVJOMjNCO01BcUJFO09BQUEsT0FBQTtnQkFDRjRFLDhCQUZNRCxhQXBCRVosU0FDRlE7O01Bb0JKLE9BQ0ZLOzBCQUZNRCxhQXBCRVosU0FDRlE7S0FvQjZEO2NBNUIvRDlwQixLQUFLNHBCLE1BQU0zNkIsS0FBdUJpNkIsT0FBT1c7TSx1QkFBekNJLFVBQUtMLE1BQU0zNkIsS0FBdUJpNkIsT0FBT1c7O2NBNkI3Q007ZUFBdUJQLE1BQU0zNkIsS0FBdUJpNkIsT0FDbkRXO01BQ0g7T0FGeUJFLFNBQUFIO09BQU16NkIsUUFBQUY7T0FBdUJxNkIsVUFBQUo7T0FDbkRrQixpQkFBQVA7TUFDSDtZQUZzRFA7UUFHOUM7U0FBQSxPQUFBO2tCQWVOZTtzQkFsQnVCTixRQUFNNTZCLE9BQXVCbTZCLFNBQ25EYzs7UUFFSyxPQWVOQzs0QkFsQnVCTixRQUFNNTZCLE9BQXVCbTZCLFNBQ25EYzs7T0FJQztRQURNYixVQUo0Q0Q7UUFJcEQvRCxPQUpvRCtEO1FBSzlDaDZCLFFBSkw4NkIsaUJBRDRCajdCLFFBakduQ3U1QixlQXlDa0RDLFVBd0RmeDVCO09BUXhCLEdBQUEsOEJBSENHLFVBRE5pMkI7UUFLSTtTQUFBLE9BQUE7a0JBU0o4RTtzQkFsQnVCTixRQUtqQno2QixPQUw4Q2c2QixTQUNuRGM7O1FBUUcsT0FTSkM7NEJBbEJ1Qk4sUUFLakJ6NkIsT0FMOENnNkIsU0FDbkRjOztPQVVXLElBQUp4OEIsSUFuTloyMkIsS0E0TUlnQjtPQVFJLHVCQWhFNkJ0TCxJQStEekJyc0I7O1FBRUFvOEIsU0FiZUQsU0EvRzdCdEIsZUEwSGM3NkI7UUFWUDA4Qix1QkFHRC9FO1FBSjZCaDJCLFFBSTdCZzJCO1FBSnVCd0UsU0FhZkM7UUFicUI3NkIsUUFBQUk7UUFBdUIrNUIsVUFJNUNDO1FBSFBhLGlCQUFBRTs7S0FnQjZEO2NBakI5REMsdUJBQXVCWCxNQUFNMzZCLEtBQXVCaTZCLE9BQ25EVztNO2VBRERNLDRCQUF1QlAsTUFBTTM2QixLQUF1Qmk2QixPQUNuRFc7O2NBaUJEUSwrQkFBc0JULE1BQUszNkIsS0FBSWk2QixPQUFPVztNQUN4QztTQTFFaUJwc0IsVUFBQUE7T0E2RWIsNkJBMUUrQndjLFNBbkR2Q2lPOzs7TUE4SEk7T0FBQSxPQUFBO2dCQXBETStCLFlBK0NrQkwsTUFBSzM2QixLQUFJaTZCLE9BQU9XOztNQUt4QyxPQXBETUksa0JBK0NrQkwsTUFBSzM2QixLQUFJaTZCLE9BQU9XO0tBS1A7S0FHakMsSUFERTU2QixVQWhGR3lrQjtRQUNQOFYsaUJBQUFBOztTQURtQi9yQixVQUFBQTtPQTZGWCw2QkExRjZCd2MsU0F0RHZDZ087OztNQWlKTSxPQXZDQXNDLDBCQXlCQXQ3QixLQS9FSnU2Qjs7S0E4Rk8sT0FyRUN4cEIsUUFzREovUSxLQS9FSnU2QjtJQThGMkM7U0FoR2xDVCxRQXRCSCxPQUFBLDRCQXVCUGxPLFdBekJ3Q3J0QjtJQUtyQztLQUZDc3VCLE1BcUJNaU47V0FBaUNuaUM7S0FuQnhDLFFBQUE7S0FEVXF6QjtLQUFSdVE7T0FxQkwzUDtLQVowQjtNQUFkMzhCLEtBWVoyOEI7TUFaMEIsTUFBQSxnQ0FBZDM4QjtZQUFNOzs7SUFIYjtLQUFBLE1BQUEsZ0NBTkFzc0M7S0FJQXhPLFFBQ0Ysa0NBTkNGO0tBWUg7O0tBRU0saUNBYk03QixJQUoyQnpzQjtLQWtCakMsT0FBQSxnQ0FWRnd1QjtJQVV3QjtJQUYxQjtLQURFMzhCLElBQ0YsaUNBWkVtckM7S0FnQkQsTUFBQSw4QkFMQ25yQztJQUtEO2VBQ0Q7dUNBTkVBLEdBUEEyOEI7Y0FhRjs7R0FtRzBDO3VDQXJQNUMxdUIsTUFHQSs2QixZQWtKRlM7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O1lFNUxBb0MsY0FBYzc5QjtJQUFNLE9BQTRCOzs7aUJBQWxDQTtHQUFxRDtHQUN0QztJQUE3Qjg5QixpQkFBNkIsV0FEN0JEO0lBRUFFLGtCQUE4QixXQUY5QkY7WUFJQUcsYUFBYWpzQztRQUFHK21CLGtCQUFIL21CO0lBQ2YsV0FEZUEsTUFBQUEsTUFBQUEsVUFIYityQyxnQkFHZ0JobEI7O1lBR2hCbWxCLGNBQWNsc0M7UUFBRyttQixrQkFBSC9tQjtJQUNoQixXQURnQkEsTUFBQUEsTUFBQUEsVUFMZGdzQyxpQkFLaUJqbEI7O1lBR2pCb2xCLGdCQUFnQnpyQztRQUFHeWtCLGtCQUFIemtCO0lBQ2xCLFdBRGtCQSxNQUFBQSxNQUFBQSxVQVRoQnFyQyxnQkFTbUI1bUI7O1lBR25CaW5CLGlCQUFpQjFyQztRQUFHeWtCLGtCQUFIemtCO0lBQ25CLFdBRG1CQSxNQUFBQSxNQUFBQSxVQVhqQnNyQyxpQkFXb0I3bUI7Ozs7O09BWnBCNG1CO09BQ0FDO09BRUFDO09BR0FDO09BR0FDO09BR0FDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDMlljQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQXBZREMsUUFBTzVhO1FBQWE2YSxXQUFiN2EsU0FBRThhLFlBQUY5YTtJQUNwQixLQURhNGEsUUFFTCxXQUZZNWE7SUFLYjtLQUZxQnBGLEtBSGZnZ0I7S0FHWDE3QixJQUhXMDdCO0tBR0RHLFFBQVY3N0I7S0FBRTg3QixTQUFGOTdCO0tBRUssT0FBQSwrQkFMMEIyN0IsYUFHckJFO0lBRUwsR0FBQSx3Q0FDRCxXQU5jL2EsVUFHbEI5Z0IsR0FBMEIwYjtJQUloQixXQUFBLCtCQUpBbWdCLFVBSHFCRjtJQU9yQixPQUFBO2tCQUpWMzdCLE9BQTBCMGIsSUFIUm9GO2NBVWQ7O21CQVYyQjZhOztlQUFYQztlQUdsQkU7O2VBQVFEOztZQVdWdnNDLFFBQVFMLElBQUdDO0lBQ2IsR0FEVUQ7UUFBR0M7VUFJRzZzQyxPQUpIN3NDLE9BSU44c0MsT0FKRy9zQztNQUlZLFdBQUssZ0NBQXBCK3NDLE1BQVNEOztTQURkM3NDLElBSFFIOztjQUFHQyxJQUVHLGNBQ2RFLElBSFdGO0lBR2tDLE9BQTdDRTtHQUNpRDtZQUVqREcsUUFBUU4sSUFBR0M7SUFDYixHQURVRDtRQUFHQztVQUlHNnNDLE9BSkg3c0MsT0FJTjhzQyxPQUpHL3NDO01BSVksV0FBSyxnQ0FBcEIrc0MsTUFBU0Q7O1NBRGQzc0MsSUFIUUg7O2NBQUdDLElBRUcsY0FDZEUsSUFIV0Y7SUFHa0MsT0FBN0NFO0dBQ2lEO1lBb0JqRDZzQyxPQUFRTCxXQUFVNXRDLEtBQUllO0lBQ3hCO0tBR1csV0FKYUEsVUFBZDZzQyxXQUFVNXRDO0tBR1IsT0EzQlZ1QixZQXdCa0J2QixTQUFJZTtJQUN4QixXQS9CRU8sWUE4QmtCdEIsU0FBSWU7R0FLdkI7WUEwRERtdEMsMkJBQTRCbHVDO2tCQUNUb2lCO0tBQ2pCLFdBQUEsK0JBRjBCcGlCLFFBQ1RvaUI7S0FDakIsT0FBQTtJQUEyRDtJQUQvQyxPQUFBO0dBQ2dEO0dBRW5DLElBQTNCK3JCLGVBQ0FDO1lBZ0JBQyxjQUFjcnVDLEtBQUk0dkI7SUFHcEIsSUFqQjBCcHZCLFFBY1ZSO0lBWmIsR0FBQSxrQ0FGdUJROzs7aUJBSHhCMnRDOztNQVlJO09BREdHO09BQ0gsT0FBQSxrQ0FER0EsWUFSaUI5dEM7T0FTcEIsZ0JBWEo0dEM7O1VBREFELGNBR3dCM3RDOztJQWlCckI7SUFBQSxTQUFBO2tCQUdLNGhCO0tBQ047O2NBRE1BOztJQUV1QztJQUY1QyxPQUFBLHdDQU5ld047R0FTYjtZQUVEMmUsbUJBQW1CenNDO0lBQ3pCLFlBRHlCQTs7Ozs7WUFFSCtlLGVBQUhyTTs7WUFBR3FNLGVBQUhyTTs7UUFFSjtTQURPbFM7U0FBTnZDOzs7WUFDMkIsSUFBVzhnQixlQUFMdmUsdUJBSnhCUjtZQUtqQjs2QkFGUS9CLE1BQ2lDdUMsZ0NBSnhCUixNQUFBQTtvQkFJNkIrZTtXQU12QztTQU5BLE9BSlQwdEIsbUJBR2dCanNDO1FBQ3FCLE9BQUE7OztLQUZXLGVBQW5Da1MsS0FBR3FNOztJQVNmO0dBQUk7WUFFVDJ0QixTQUFVWixXQUFVRCxVQUFTYyxnQkFBZUM7SUFDOUMsS0F6Q0VOLDRCQW9SY1g7U0E1T01FO2dCQUFTYyw2QkFBQUE7Ozs7O1FBakd6QjtTQURpQkU7U0FBZEM7U0FDSCxPQUFBLCtCQURHQSxXQWtHYWpCO1NBakdoQixPQUFBO1FBQUE7U0FDRztVQUFBLE9BQUEsK0JBRmNnQixXQWtHRGhCO2lCQWhHYjs7Ozs7Ozs7TUFHSCxNQUFBOztLQWlHRSxTQUNOLE9BakhFTSxPQTRHUUwsV0FBVUQsVUFBd0JlO0tBMUZ0QjthQTBGT0Q7OztTQTFGUDtVQUFTaCtCO1VBQzNCLE9BQUEsK0JBeUZnQms5QixhQTFGV2w5QjtVQUMzQixPQUFBO1NBQUEsU0FBQTtTQUNHLFdBQUEsK0JBd0ZhazlCLGFBMUZXbDlCO1NBRXhCLE9BQUE7UUFBK0M7TUFGaEMsVUFBQTtNQWlHTm8rQjtNQUFaQzs0Q0FBQUE7OztNQUdKOzs7Ozs7Ozs7Ozs7S0FJRSxXQUFBLDZCQVBFQTtLQUdKLE9BQUE7O2tCQVZvQm5COztjQUFWQzs7Y0FPTmtCOztjQUFZRDs7O0tBcElBRSxLQTZINEJMO0tBN0gvQk0sS0E2SGdCUDtLQTdIaEIvZ0IsS0FBQXNoQjtLQUFHQyxLQUFBRjtLQUlNMXRDO0lBSHBCOzs7U0FEV3FzQixZQUlTcnNCO1VBSk40dEM7UUFJVztTQUpYQyxPQUFBRDtTQUFIRSxPQUFBemhCO1NBQU1qWSxNQUlHcFU7U0FKVHFzQixLQUFBeWhCO1NBQUdGLEtBQUFDO1NBSU03dEMsSUFKSG9VOzs7dUJBQU51NUIsSUFBR0Q7OztzQkFBQUEsSUFBSEM7O0tBVUE7TUFESHYrQjtNQUFOblE7TUFDQW90QyxTQUFTLHVDQURUcHRDLE1BQU1tUTtNQUlFLE9BcEJWbFAsUUFvSTJCa3RDLG1CQUFlQztLQWxINUMsV0F4QkVwdEMsUUEwSTJCbXRDLG1CQUFlQyx5QkFuSHhDaEI7O0dBcUlpQzs7WUFFckMwQixtQkFBbUI1dUM7SUE3RG5CMnRDLFVBNkRtQjN0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQUVkeWdCLFFBU2lCalAsR0FBRXE5QjtVQUN0QixPQURvQnI5QixVQUFFcTlCLFdBM0l0QnBCLGtCQTJJb0JqOEIsTUFBRXE5QjtTQUUrQzs7a0JBWGxFcHVCLFFBYWFqUCxHQUFFMDhCO1VBQ2xCLEdBNURGTCxjQTJEa0JyOEIsTUFBQUEsT0FDaUMsT0FEL0IwOEI7VUFHSyxJQUFqQkQsaUJBQWlCLFdBQUEsaUJBaEJwQnh0QixTQWFhalAsR0F5TUp5N0I7VUFyTVYsT0F2Q0plLHdCQW1Da0J4OEIsTUFHVnk4QixnQkFIWUM7U0FJc0Q7O2tCQWpCckV6dEIsUUFtQmdCalAsR0FBRTA4QjtVQUNyQixHQWxFRkwsY0FpRXFCcjhCLE1BQUFBLE9BQzhCLE9BRDVCMDhCO1VBSWpCLElBREVELGlCQUNGLFdBQUEsaUJBdkJEeHRCLFNBbUJnQmpQLEdBbU1QeTdCO1VBN0xWLE9BL0NKZTtxQ0F5Q3FCeDhCLE1BR2J5OEIsZ0JBSGVDO1NBT0o7O2tCQTFCZHp0QixRQTRCY2pQLEdBQUUwOEI7VUFDRSxJQUFqQkQsaUJBQWlCLFdBQUEsaUJBN0JsQnh0QixTQTRCY2pQLEdBMExMeTdCO1VBeExaLE9BcERGZTt5Q0FrRG1CeDhCLE1BQ2J5OEIsZ0JBRGVDO1NBR0o7O2tCQS9CWnp0QixRQWlDcUJqUCxHQUFFMDhCO1VBQzFCLEdBaEZGTCxjQStFMEJyOEIsTUFBQUEsT0FDMkIsT0FEekIwOEI7VUFJdEIsSUFERUQsaUJBQ0YsV0FBQSxpQkFyQ0R4dEIsU0FpQ3FCalAsR0FxTFp5N0I7VUEvS1YsT0E3REplOzBDQXVEMEJ4OEIsTUFHbEJ5OEIsZ0JBSG9CQztTQU9UOztrQkF4Q2R6dEIsUUEwQ29CalAsR0FBRTA4QjtVQUN6QixHQXpGRkwsY0F3RnlCcjhCLE1BQUFBLE9BQzhCLE9BRDVCMDhCO1VBSXJCLElBREVELGlCQUNGLFdBQUEsaUJBOUNEeHRCLFNBMENvQmpQLEdBNEtYeTdCO1VBdEtWLE9BdEVKZTt5Q0FnRXlCeDhCLE1BR2pCeThCLGdCQUhtQkM7U0FPUjs7a0JBakRkenRCLFFBbURxQmpQLEdBQUUwOEI7VUFDMUIsR0FsR0ZMLGNBaUcwQnI4QixNQUFBQSxPQUN5QixPQUR2QjA4QjtVQUl0QixJQURFRCxpQkFDRixXQUFBLGlCQXZERHh0QixTQW1EcUJqUCxHQW1LWnk3QjtVQTdKVixPQS9FSmU7MENBeUUwQng4QixNQUdsQnk4QixnQkFIb0JDO1NBT1Q7O2tCQTFEZHp0QixRQTREMkJqUCxHQUFFMDhCO1VBQ2hDLEdBM0dGTCxjQTBHZ0NyOEIsTUFBQUEsT0FDbUIsT0FEakIwOEI7VUFJNUIsSUFERUQsaUJBQ0YsV0FBQSxpQkFoRUR4dEIsU0E0RDJCalAsR0EwSmxCeTdCO1VBcEpWLE9BeEZKZTs7bUJBa0ZnQ3g4QjttQkFHeEJ5OEI7bUJBSDBCQztTQU9mOztrQkFuRWR6dEIsUUFxRWtCalAsR0FBRTA4QjtVQUN2QixHQXBIRkwsY0FtSHVCcjhCLE1BQUFBLE9BQ2tDLE9BRGhDMDhCO1VBSW5CLElBREVELGlCQUNGLFdBQUEsaUJBekVEeHRCLFNBcUVrQmpQLEdBaUpUeTdCO1VBM0lWLE9BakdKZTt1Q0EyRnVCeDhCLE1BR2Z5OEIsZ0JBSGlCQztTQU9OOztrQkE1RWR6dEIsUUE4RXlCalAsR0FBRTA4QjtVQUM5QixHQTdIRkwsY0E0SDhCcjhCLE1BQUFBLE9BQ3VCLE9BRHJCMDhCO1VBSTFCLElBREVELGlCQUNGLFdBQUEsaUJBbEZEeHRCLFNBOEV5QmpQLEdBd0loQnk3QjtVQWxJVixPQTFHSmU7O21CQW9HOEJ4OEI7bUJBR3RCeThCO21CQUh3QkM7U0FPYjs7a0JBckZkenRCLFFBdUZjalAsR0FBRTA4QjtVQUNuQixHQXRJRkwsY0FxSW1CcjhCLE1BQUFBLE9BQ2tDLE9BRGhDMDhCO1VBR0ksSUFBakJELGlCQUFpQixXQUFBLGlCQTFGcEJ4dEIsU0F1RmNqUCxHQStITHk3QjtVQTNIVixPQWpISmUseUJBNkdtQng4QixNQUdYeThCLGdCQUhhQztTQUl1RDs7a0JBM0Z2RXp0QixRQTZGb0JqUCxHQUFFMDhCO1VBQ3pCLEdBNUlGTCxjQTJJeUJyOEIsTUFBQUEsT0FDNEIsT0FEMUIwOEI7VUFJckIsSUFERUQsaUJBQ0YsV0FBQSxpQkFqR0R4dEIsU0E2Rm9CalAsR0F5SFh5N0I7VUFuSFYsT0F6SEplO3lDQW1IeUJ4OEIsTUFHakJ5OEIsZ0JBSG1CQztTQU9SOztrQkFwR2R6dEIsUUFzR2V6UixHQUFFd0MsR0FBRTA4QjtVQUN0QixHQXJKRkwsY0FvSnNCcjhCLE1BQUFBLE9BQzZCLE9BRDNCMDhCO1VBSWxCO1dBREVELGlCQUNGLFdBQUEsaUJBMUdEeHRCLFNBc0dlelIsR0FBRXdDLEdBZ0hSeTdCO1VBMUdWLE9BbElKZSxvQkE0SHNCeDhCLE1BR2R5OEIsZ0JBSGdCQztTQU04Qzs7a0JBNUdqRXp0QixRQThHY2pQLEdBQUUwOEI7VUFDbkIsR0E3SkZMLGNBNEptQnI4QixNQUFBQSxPQUNnQyxPQUQ5QjA4QjtVQUdJLElBQWpCRCxpQkFBaUIsV0FBQSxpQkFqSHBCeHRCLFNBOEdjalAsR0F3R0x5N0I7VUFwR1YsT0F4SUplO3lDQW9JbUJ4OEIsTUFHWHk4QixnQkFIYUM7U0FLRjs7a0JBbkhkenRCLFFBcUhlalAsR0FBRTA4QjtVQUNwQixHQXBLRkwsY0FtS29CcjhCLE1BQUFBLE9BQytCLE9BRDdCMDhCO1VBSWhCLElBREVELGlCQUNGLFdBQUEsaUJBekhEeHRCLFNBcUhlalAsR0FpR055N0I7VUEzRlYsT0FqSkplO29DQTJJb0J4OEIsTUFHWnk4QixnQkFIY0M7U0FNc0Q7O2tCQTNIdkV6dEIsUUE2SGtCalAsR0FBRTA4QjtVQUN2QixHQTVLRkwsY0EyS3VCcjhCLFVBQ2UsT0FEYjA4QjtVQUluQixJQURFRCxpQkFDRixXQUFBLGlCQWpJRHh0QixTQTZIa0JqUCxHQXlGVHk3QjtVQW5GVixPQXpKSmU7dUNBbUp1Qng4QixNQUdmeThCLGdCQUhpQkM7U0FPTjs7a0JBcElkenRCLFFBc0lzQmpQLEdBQUUwOEI7VUFDM0IsR0FyTEZMLGNBb0wyQnI4QixNQUFBQSxPQUN3QixPQUR0QjA4QjtVQUl2QixJQURFRCxpQkFDRixXQUFBLGlCQTFJRHh0QixTQXNJc0JqUCxHQWdGYnk3QjtVQTFFVixPQWxLSmU7O21CQTRKMkJ4OEI7bUJBR25CeThCO21CQUhxQkM7U0FPVjs7a0JBN0lkenRCLFFBK0l1QmpQLEdBQUUwOEI7VUFDNUIsR0E5TEZMLGNBNkw0QnI4QixNQUFBQSxPQUN1QixPQURyQjA4QjtVQUl4QixJQURFRCxpQkFDRixXQUFBLGlCQW5KRHh0QixTQStJdUJqUCxHQXVFZHk3QjtVQWpFVixPQTNLSmU7O21CQXFLNEJ4OEI7bUJBR3BCeThCO21CQUhzQkM7U0FPWDs7a0JBdEpkenRCLFFBd0oyQmpQLEdBQUUwOEI7VUFDaEMsR0F2TUZMLGNBc01nQ3I4QixNQUFBQSxPQUNxQixPQURuQjA4QjtVQUk1QixJQURFRCxpQkFDRixXQUFBLGlCQTVKRHh0QixTQXdKMkJqUCxHQThEbEJ5N0I7VUF4RFYsT0FwTEplOzttQkE4S2dDeDhCO21CQUd4Qnk4QjttQkFIMEJDO1NBT2Y7O2tCQS9KZHp0QixRQWlLY3pSLEdBQUV3QyxHQUFFMDhCO1VBQ3JCLEdBaE5GTCxjQStNcUJyOEIsTUFBQUEsT0FDa0MsT0FEaEMwOEI7VUFJakI7V0FERUQsaUJBQ0YsV0FBQSxpQkFyS0R4dEIsU0FpS2N6UixHQUFFd0MsR0FxRFB5N0I7VUEvQ1YsT0E3TEplLG1CQXVMcUJ4OEIsTUFHYnk4QixnQkFIZUM7U0FNZ0Q7O2tCQXZLbEV6dEIsUUF5S2lCelIsR0FBRXdDLEdBQUUwOEI7VUFDeEIsR0F4TkZMLGNBdU53QnI4QixNQUFBQSxPQUMrQixPQUQ3QjA4QjtVQUlwQjtXQURFRCxpQkFDRixXQUFBLGlCQTdLRHh0QixTQXlLaUJ6UixHQUFFd0MsR0E2Q1Z5N0I7VUF2Q1YsT0FyTUplLHNCQStMd0J4OEIsTUFHaEJ5OEIsZ0JBSGtCQztTQU1nRDs7a0JBL0tyRXp0QixRQWlMa0JqUCxHQUFFMDhCO1VBQ3ZCLEdBaE9GTCxjQStOdUJyOEIsVUFDZSxPQURiMDhCO1VBSW5CLElBREVELGlCQUNGLFdBQUEsaUJBckxEeHRCLFNBaUxrQmpQLEdBcUNUeTdCO1VBL0JWLE9BN01KZTt1Q0F1TXVCeDhCLE1BR2Z5OEIsZ0JBSGlCQztTQU9OOztrQkF4TGR6dEIsUUEwTGtCalAsR0FBRTA4QjtVQUN2QixHQXpPRkwsY0F3T3VCcjhCLE1BQUFBLE9BQzRCLE9BRDFCMDhCO1VBSW5CLElBREVELGlCQUNGLFdBQUEsaUJBOUxEeHRCLFNBMExrQmpQLEdBNEJUeTdCO1VBdEJWLE9BdE5KZTt1Q0FnTnVCeDhCLE1BR2Z5OEIsZ0JBSGlCQztTQU9OOztrQkFqTWR6dEIsUUF3TWlCalAsR0FBRTA4QjtVQUN0QixHQXZQRkwsY0FzUHNCcjhCLE1BQUFBLE9BQzZCLE9BRDNCMDhCO1VBSVUsWUFKWjE4QixTQUlZLFVBL085QnU4QixtQkEyT2tCdjhCOzs7Ozs7OzthQWFUOztjQUxhczlCO2NBQVZqVztjQUR1Q2tXO2NBQTFDalc7Y0FNQSxPQUFBLGdDQU4wQ2lXLFFBQzdCRDthQUtiLEtBQUE7YUFFTyxJQUFONStCLE1BQU0sV0F2TmZ1USxvQkFBQUEsUUErTVFxWSxTQU9DbVU7YUFFTyxXQXhOaEJ4c0Isb0JBQUFBLFFBK01rRHN1QixLQVF6QzcrQjthQUVNO2NBQU5vRyxRQUFNLFdBek5mbUssb0JBQUFBLFFBZ05Xb1ksVUFPRjNvQjtjQUdBc0csUUFBTSxXQTFOZmlLLG9CQUFBQSxRQXdNaUJqUCxNQWlCUjhFO2NBZE4yM0IsaUJBZU16M0I7Ozs7O1lBZk55M0IsaUJBaUJLLFdBQUEsaUJBNU5SeHRCLFNBd01pQmpQLEdBY1J5N0I7O1VBUVYsT0FwUEplO3NDQThOc0J4OEIsTUFHZHk4QixnQkFIZ0JDO1NBdUJMOztrQkEvTmR6dEIsUUE0T2VLLEtBQUVvdEI7VUFDcEIsR0EzUkZMLGNBMFJvQi9zQixRQUFBQSxTQUNpQyxPQUQvQm90QjtjQXRWcEJjLGNBc1ZrQmx1QjtVQXJWdEIsU0FBUW1NLElBQUl6YjtXQUNWLFdBRFVBOzZCQWNILE9BZEdBOzs7WUFHSSxJQURReTlCLHlCQUNkQyxRQUhGamlCLElBRWdCZ2lCO21CQUNkQyxVQURjRDtzQkFGWno5QjtpQ0FHRjA5QixRQUhFMTlCLE1BQUFBOztXQU9JO1lBRG1CMjlCO1lBQU54c0I7WUFBSmhDO1lBQ2YvYixNQVBGcW9CLElBTTJCa2lCO1lBRTFCLE9BQUEsZ0NBVExILGFBUU1wcUM7V0FDRCxLQUFBO21CQURDQSxRQUR5QnVxQztzQkFOdkIzOUI7a0NBTWFtUCxJQUFJZ0MsTUFDbkIvZCxNQVBFNE0sTUFBQUE7V0FVTTtZQURON1IsWUFIaUJnakI7bUJBQ25CL2Q7WUFHRXdxQyxZQUhGeHFDLFlBRUVqRiw4QkFGRmlGO1dBSUYsbUJBTGlCK2IsSUFBSWdDLE1BSWpCeXNCLFFBVkE1OUIsTUFBQUE7VUFjRjtVQUVWLElBd1VVQSxJQXhWRnliLElBcVZjbk0sTUFJaEIsT0FESXRQO1VBRUMsR0FBQSxXQXBUVGs4QiwyQkFrVFFsOEI7O1lBQ0F5OEIsaUJBRUEsV0FBQSxpQkFsUEh4dEIsU0ErT0dqUCxHQXpCTXk3Qjs7V0ErQkosSUFERS84QixNQUNGLFdBclBMdVEsb0JBQUFBLFFBK09HalAsTUF6Qk15N0I7V0FpQ0UsV0F2UFh4c0Isb0JBQUFBLFFBK09HalAsTUFLSXRCO2VBSkorOUIsaUJBSUkvOUI7O1VBTVIsT0FoUko4OUI7b0NBcVFReDhCLE1BQ0F5OEIsZ0JBSmNDO1NBZUg7O2tCQTNQZHp0QixRQXdRZUssS0FBRW90QjtVQUNwQixHQXZURkwsY0FzVG9CL3NCLFFBQUFBLFNBQ2lDLE9BRC9Cb3RCO2NBOVZwQmMsY0E4VmtCbHVCO1VBN1Z0QixTQUFRbU0sSUFBSXpiO1dBQ1YsV0FEVUE7NkJBY0gsT0FkR0E7OztZQUdJLElBRFF5OUIseUJBQ2RDLFFBSEZqaUIsSUFFZ0JnaUI7bUJBQ2RDLFVBRGNEO3NCQUZaejlCO2lDQUdGMDlCLFFBSEUxOUIsTUFBQUE7O1dBT0k7WUFEbUIyOUI7WUFBTnhzQjtZQUFKaEM7WUFDZi9iLE1BUEZxb0IsSUFNMkJraUI7WUFFMUIsT0FBQSxnQ0FUTEgsYUFRTXBxQztXQUNELEtBQUE7bUJBRENBLFFBRHlCdXFDO3NCQU52QjM5QjtrQ0FNYW1QLElBQUlnQyxNQUNuQi9kLE1BUEU0TSxNQUFBQTtXQVVNO1lBRE43UixZQUhpQmdqQjttQkFDbkIvZDtZQUdFd3FDLFlBSEZ4cUMsWUFFRWpGLDhCQUZGaUY7V0FJRixtQkFMaUIrYixJQUFJZ0MsTUFJakJ5c0IsUUFWQTU5QixNQUFBQTtVQWNGO1VBRVYsSUFnVlVBLElBaFdGeWIsSUE2VmNuTSxNQUloQixPQURJdFA7VUFFQyxHQUFBLFdBaFZUazhCLDJCQThVUWw4Qjs7WUFDQXk4QixpQkFFQSxXQUFBLGlCQTlRSHh0QixTQTJRR2pQLEdBckRNeTdCOztXQTJESixJQURFLzhCLE1BQ0YsV0FqUkx1USxvQkFBQUEsUUEyUUdqUCxNQXJETXk3QjtXQTZERSxXQW5SWHhzQixvQkFBQUEsUUEyUUdqUCxNQUtJdEI7ZUFKSis5QixpQkFJSS85Qjs7VUFNUixPQTVTSjg5QjswQ0FpU1F4OEIsTUFDQXk4QixnQkFKY0M7U0FlSDs7a0JBdlJkenRCLFFBNlJhalAsR0FBRTA4QjtVQUNsQixHQTVVRkwsY0EyVWtCcjhCLE1BQUFBLE9BQ21DLE9BRGpDMDhCO3FCQUFGMThCO1VBSVQsR0FBQSxXQXBXVGs4QiwyQkFnV2tCbDhCOztZQUdWeThCLGlCQUVBLFdBQUEsaUJBbFNIeHRCLFNBNlJhalAsR0F2RUp5N0I7O1dBK0VKLElBREUvOEIsTUFDRixXQXJTTHVRLG9CQUFBQSxRQTZSYWpQLE1BdkVKeTdCO1dBaUZFLFdBdlNYeHNCLG9CQUFBQSxRQTZSYWpQLE1BT050QjtlQUpKKzlCLGlCQUlJLzlCOztVQU1SLE9BaFVKODlCLHdCQW1Ua0J4OEIsTUFHVnk4QixnQkFIWUM7U0FhdUQ7O2tCQTFTdEV6dEIsUUFnVGNqUCxHQUFFMDhCO1VBQ25CLEdBL1ZGTCxjQThWbUJyOEIsTUFBQUEsT0FDa0MsT0FEaEMwOEI7cUJBQUYxOEI7VUFJVixHQUFBLFdBdlhUazhCLDJCQW1YbUJsOEI7O1lBR1h5OEIsaUJBRUEsV0FBQSxpQkFyVEh4dEIsU0FnVGNqUCxHQTFGTHk3Qjs7V0FrR0osSUFERS84QixNQUNGLFdBeFRMdVEsb0JBQUFBLFFBZ1RjalAsTUExRkx5N0I7V0FvR0UsV0ExVFh4c0Isb0JBQUFBLFFBZ1RjalAsTUFPUHRCO2VBSkorOUIsaUJBSUkvOUI7O1VBTVIsT0FuVko4OUIseUJBc1VtQng4QixNQUdYeThCLGdCQUhhQztTQWF1RDs7a0JBN1R2RXp0QixRQW1VV2pQLEdBQUUwOEI7VUFDaEIsR0FsWEZMLGNBaVhnQnI4QixNQUFBQSxPQUNxQyxPQURuQzA4QjtxQkFBRjE4QjtVQUlQLEdBQUEsV0ExWVRrOEIsMkJBc1lnQmw4Qjs7WUFHUnk4QixpQkFFQSxXQUFBLGlCQXhVSHh0QixTQW1VV2pQLEdBN0dGeTdCOztXQXFISixJQURFLzhCLE1BQ0YsV0EzVUx1USxvQkFBQUEsUUFtVVdqUCxNQTdHRnk3QjtXQXVIRSxXQTdVWHhzQixvQkFBQUEsUUFtVVdqUCxNQU9KdEI7ZUFKSis5QixpQkFJSS85Qjs7VUFNUixPQXRXSjg5QixzQkF5VmdCeDhCLE1BR1J5OEIsZ0JBSFVDO1NBYXVEOztrQkFoVnBFenRCLFFBd1ZrQmpQLEdBQUUwOEI7VUFDdkIsR0F2WUZMLGNBc1l1QnI4QixNQUFBQSxPQUNrQyxPQURoQzA4QjtVQUtuQjtXQURFbUIsY0FDRixXQTdWRDV1QixvQkFBQUEsUUF3VmtCalAsTUFsSVR5N0I7V0F5SU5xQyxhQUFhLFdBL1ZoQjd1QixvQkFBQUEsUUF3VmtCalAsTUFsSVR5N0I7VUE1T2RlLHdCQThXdUJ4OEIsTUFPZjg5QixZQVBpQnBCO1VBVXJCLE9BeFhKRiwwQkE4V3VCeDhCLE1BSWY2OUIsYUFKaUJuQjtTQVVpRDs7a0JBbFdyRXp0QixRQXlXbUJqUCxHQUFFKzlCO1VBQ3hCLE9BRHNCLzlCOzs7aUJBRUxnK0IsUUFGS2grQjthQUdsQixPQUFBO3NCQTVXRGlQLG9CQUFBQSxRQTJXYyt1QixPQUZPRDs7YUFJakIsT0FBQSxXQUFBLGlCQTdXSjl1QixTQXlXbUJqUCxHQUFFKzlCOztTQUltQjs7a0JBN1d4Qzl1QixRQTZYbUJqUCxHQUFFdEI7VUFDeEIsVUFEc0JzQjtrQkFBQUE7O3lCQUFBQTs7bUJBNkN3QzdNLE9BN0N4QzZNLE1BNkN5QjFCO2VBQXdCLElBQzdELElBQ0o2USxLQURJLGdDQURxQzdROztnQkFXMUIsT0FBQSxXQUFBLGlCQXJibEIyUSxTQTZYbUJqUCxHQUFFdEI7OztrQkFnRGIsa0NBREx5UTtnQkFPVzs7a0JBTEYsa0NBRlRBOzs7bUJBR1csa0NBSFhBOzs7b0JBSVcsa0NBSlhBOzs7cUJBS1csa0NBTFhBOzs7c0JBTVcsa0NBTlhBOzJCQU9XLGtDQVBYQTs7Ozs7b0JBUVksSUFBU3JmO29CQUFNLE9BQUEsV0FwYjlCbWYsb0JBQUFBLFFBb2J3Qm5mO21CQUF3QjtnQkFBM0MsT0FBQSxXQXBiTG1mLG9CQUFBQSxjQTBhMkQ5YixNQTdDdEN1TDs7ZUF5RGIsT0FBQSxXQUFBLGlCQXRiUnVRLFNBNlhtQmpQLEdBQUV0Qjs7OztjQUlsQjtlQUZpQnUvQixTQUZEaitCO2VBRVBrK0IsU0FGT2wrQjs7aUNBS0F0QjtrQkFBZDttQkFBVzVPO21CQUFMd087bUJBRUYsT0FBQSwrQkFGRUEsV0FBS3hPO2tCQUVQLEtBQUE7bUJBZ0JVO29CQUFOZ1YsUUFBTSxXQXBabkJtSyxvQkFBQUEsUUFrWVczUSxLQUFRSTtvQkFtQk5zRyxRQUFNLFdBclpuQmlLLG9CQUFBQSxRQWtZZ0JuZixHQWtCSGdWO21CQUVKLE9BRElFOztrQkFkRCxXQUFBLGdDQUxEMUcsUUFBS3hPO2tCQUtKLEdBQUE7bUJBRUQsT0FBQSxXQXpZWG1mLG9CQUFBQSxRQWtZVzNRLEtBQVFJOzhCQUFINU87O3VCQVVpQmtkLGNBQUh4SzttQkFFUCxXQTlZdkJ5TSxvQkFBQUEsUUE0WWlDakMsR0FWZHRPO21CQVlJLE9BQUEsV0E5WXZCdVEsb0JBQUFBLFFBNFk4QnpNLEtBVlg5RDs7a0JBZ0JKLE9BQUEsV0FsWmZ1USxvQkFBQUEsUUFrWWdCbmYsR0FBRzRPO2lCQW9CTjtlQXRCUm9HO2lCQUNGLFdBallIbUssb0JBQUFBLGNBK1hZaXZCLFFBRlN4L0I7ZUE0QlIsT0FBQSxXQXpaYnVRLG9CQUFBQTtjQXlaQyxPQUFBO3VCQXpaREEsb0JBQUFBLGNBK1hvQmd2QixRQUNmbjVCOzt5QkFIYzlFOzs7O2dCQXVDWixJQUR1QzZPLGVBQXBDL2UsSUF0Q1NrUSxNQXVDWixVQXZjUnU4QixtQkFzY1d6c0M7O2lCQUVZOztrQkFBVnd0QztrQkFBSDk2QjtrQkFBYSxPQUFBLGdDQUFWODZCLFFBRmtDenVCO2lCQUV4QixHQUFBO2tCQUNQO21CQUFON0osUUFBTSxXQXRhZmlLLG9CQUFBQSxRQXFhU3pNLEtBeENZOUQ7bUJBMENaeS9CLFFBQU0sV0F2YWZsdkIsb0JBQUFBLFFBbWE4Q0osSUFHckM3SjtrQkFFSixPQURJbTVCOzs7Z0JBRUQsT0FBQSxXQUFBLGlCQXphUmx2QixTQTZYbUJqUCxHQUFFdEI7Ozs7O2tCQThCbkIwL0IsTUE5QmlCcCtCLGdCQThCakJvK0I7O2VBQ0U7Z0JBRDhEMVEsTUE5Qi9DMXRCO2dCQThCd0I3QjtnQkFDdkMsT0FBQSwrQkFEdUNBLGFBQXVCdXZCO2VBQzlELEdBQUE7Z0JBQ0c7d0JBQUEsK0JBRm9DdnZCLGFBQXVCdXZCO2dCQUUzRCxHQUFBO2lCQUVNO3lCQUpxREE7a0JBSTdEMlEsWUFKc0NsZ0M7a0JBTXhDLFlBTkRpZ0MsU0FBZ0UxUSxRQUk3RDJRLE9BSjZEM1EsUUFBQUE7aUJBS2pFLE9BQUEsV0FBQSxpQkFoYUR6ZSxlQTZYcUJ2UTs7Ozs7O1VBMERqQixPQUFBLFdBQUEsaUJBdmJKdVEsU0E2WG1CalAsR0FBRXRCO1NBMERVOztrQkF2Yi9CdVEsUUFnY2dCalAsR0FBRXRCO1VBQ3JCLFVBRG1Cc0I7a0JBQUFBOzs7ZUFFSmsrQixTQUZJbCtCOztpQ0FJR3RCO2tCQUFoQjttQkFBV3JPO21CQUFMaU87bUJBRUYsT0FBQSwrQkFGRUEsV0FBS2pPO2tCQUVQLEtBQUE7bUJBZ0JVO29CQUFOeVUsUUFBTSxXQXRkakJtSyxvQkFBQUEsUUFvY1MzUSxLQUFVSTtvQkFtQlJzRyxRQUFNLFdBdmRqQmlLLG9CQUFBQSxRQW9jYzVlLEtBa0JIeVU7bUJBRUosT0FESUU7O2tCQWRELFdBQUEsZ0NBTEQxRyxRQUFLak87a0JBS0osR0FBQTttQkFFRCxPQUFBLFdBM2NUNGUsb0JBQUFBLFFBb2NTM1EsS0FBVUk7OEJBQUxyTzs7dUJBVWlCMmMsY0FBSDVkO21CQUVQLFdBaGRyQjZmLG9CQUFBQSxRQThjK0JqQyxHQVZadE87bUJBWUUsT0FBQSxXQWhkckJ1USxvQkFBQUEsUUE4YzRCN2YsR0FWVHNQOztrQkFnQk4sT0FBQSxXQXBkYnVRLG9CQUFBQSxRQW9jYzVlLEtBQUtxTztpQkFvQlI7Y0FyQlYsT0FBQSxXQW5jRHVRLG9CQUFBQSxjQWtjWWl2QixRQUZNeC9COzswQkFBRnNCOztlQTJCaUI7Z0JBRGlCbkMsSUExQmxDbUM7Z0JBMEIwQmxDO2dCQUNULE9BQUEsV0EzZGpDbVIsb0JBQUFBO2dCQTJkb0IsT0FBQSxXQTNkcEJBLG9CQUFBQTtnQkEyZEtuSyxRQUFNLFdBM2RYbUssb0JBQUFBLGNBMGQwQ25SLEdBMUJ4Qlk7ZUE0QmpCLE9BQUEsV0E1ZER1USxvQkFBQUEsUUEwZGtEcFIsR0FDN0NpSDs7OztVQUVELE9BQUEsV0FBQSxpQkE3ZEptSyxTQWdjZ0JqUCxHQUFFdEI7U0E2QlU7O2tCQTdkNUJ1USxRQXFlb0JqUCxHQUFFdEI7VUFDekIsU0FEdUJzQjtzQkFBQUE7O1lBR2hCO2FBRDJDdVY7YUFBcEN4TixJQUZTL0g7YUFHaEIsT0FBQSwrQkFETytILFNBQW9Dd047WUFDM0MsR0FBQTthQUNILE9BQUEsV0FBQSxpQkF6ZUR0RyxTQXVlV2xILEdBRldySjs7O1VBS2xCLE9BQUEsV0FBQSxpQkExZUp1USxTQXFlb0JqUCxHQUFFdEI7U0FLVTs7a0JBMWVoQ3VRLFFBa2ZtQmpQLEdBQUV0QjtVQUN4QixTQURzQnNCLE1BWWYsT0FBQSxXQUFBLGlCQTlmSmlQLFNBa2ZtQmpQLEdBQUV0QjtVQUtWO1dBSEU0L0IsS0FGTXQrQjtXQUVWdStCLEtBRlV2K0I7V0FLZDhFLFFBQU0sV0F2ZlhtSyxvQkFBQUEsUUFvZlNzdkIsT0FGWTcvQjtXQU1oQnNHLFFBQU0sV0F4ZlhpSyxvQkFBQUEsUUFvZlNzdkIsT0FHSno1QjtXQUVBcTVCLFFBQU0sV0F6ZlhsdkIsb0JBQUFBLFFBb2ZTc3ZCLE9BSUp2NUI7V0FFQXc1QixRQUFNLFdBMWZYdnZCLG9CQUFBQSxRQW9mU3N2QixPQUtKSjtXQUdBTSxRQUFNLFdBNWZYeHZCLG9CQUFBQSxRQW9mYXF2QixJQU1SRTtVQUdKLE9BRElDO1NBRTBCOztrQkE5Zi9CeHZCLFFBb2dCbUJqUCxHQUFFdEI7VUFDeEIsU0FEc0JzQixNQVlmLE9BQUEsV0FBQSxpQkFoaEJKaVAsU0FvZ0JtQmpQLEdBQUV0QjtVQUtWO1dBSEdtUSxLQUZLN087V0FFVHUrQixLQUZTditCO1dBS2Q4RSxRQUFNLFdBemdCWG1LLG9CQUFBQSxRQXNnQlVzdkIsT0FGVzcvQjtXQU1oQnNHLFFBQU0sV0ExZ0JYaUssb0JBQUFBLFFBc2dCVXN2QixPQUdMejVCO1dBRUFxNUIsUUFBTSxXQTNnQlhsdkIsb0JBQUFBLFFBc2dCVXN2QixPQUlMdjVCO1dBRUF3NUIsUUFBTSxXQTVnQlh2dkIsb0JBQUFBLFFBc2dCVXN2QixPQUtMSjtXQUdBTSxRQUFNLFdBOWdCWHh2QixvQkFBQUEsUUFzZ0JjSixJQU1UMnZCO1VBR0osT0FESUM7U0FFMEI7O2tCQWhoQi9CeHZCLFFBdWhCYWpQLEdBQUV0QjtVQUNsQixXQURnQnNCOzs7O1dBR1QsT0FBQSxXQUFBLGlCQTFoQkppUCxTQXVoQmFqUCxHQUFFdEI7VUFFYyxPQUZkQTtTQUdVOzs7Ozs7Ozs7Ozs7O0dBQzdCO3VDQXJVYSs4QixRQXhOZDJCOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQy9MRTNnQyxJQUFJNkw7SUFDTjs7cUJBRVFvMkI7YUFDRix3QkFERUE7c0NBQUFBO3VDQUFBQTtnQkFNTyxNQUFBOzs7Ozs7O2FBVFRwMkI7O1lBU3FCO0dBQUU7R0FaVjtJQUFBLG9CQUdqQjdMOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0dDSVM7Ozs7Ozs7SUFtaUNUdW5COzs7SUF2Y0FQOztJQWhYWXhrQjs7O0lBbE5EMk87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUExQmIrd0IsV0FBVztJQUNYeHJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQ0F5ckMsUUFBUXB5QixLQUFJcXlCLE1BQU1DO0lBRGxCM3JDLGtCQUNRcVosS0FBSXF5QixNQUFNQyxNQURsQjNyQzs7R0FDeUQ7R0FDN0M7SUFBWjRyQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBNUc7SUFDQTZHO0lBQ0FDOzs7Ozs7O2dCQUdJNXdCLFFBRWFqaEIsS0FBTSxXQUFOQSxRQUFBQSxXQUFtQzs7Ozs7T0FIcER5SjtZQVdBcW9DLGlCQUFrQjl4QztJQUNwQjtLQUFJUSxRQURnQlI7S0FKakI7T0FBQSxrQ0FLQ1EsT0FOV29mO2NBRVIsa0NBSUhwZjs7Z0JBR00sT0FITkE7UUFFR3V4QztJQUFTLE9BQVRBO0dBQ1E7WUFFYkM7SUFBNkMsWUFDdkM7UUFDT2h5QztJQUFpQixPQVI5Qjh4QyxpQkFRYTl4QztHQUFxQztZQUVsRGl5QztJQUE2QyxZQUN2QztRQUNPanlDO0lBQWlCLE9BWjlCOHhDLGlCQVlhOXhDO0dBQXFDO1lBS2hEa3lDLFVBQVVseUMsS0FBSTRQLEdBQUksV0FBUjVQLEtBQUk0UCxHQUFZO0dBSFosSUFBQSxpQkFHZHNpQyxZQU1BQztZQUVBMTRCLFdBQU0xWixNQUFLNHVCO2tCQUM0QzdzQjtLQUM3QyxJQUFKMFMsTUFBSSx1Q0FENkMxUztLQUVyRCxPQUFBOztjQUhTNnNCO2NBRUxuYTs7Y0FBQUE7O0lBQ3dDO0lBRnJDLFdBQUEsbUNBREh6VTtJQUM0QyxPQUFBO0dBRUg7WUFFL0MreEIsZUFBVS94QixNQUFLNHVCO2tCQUUwQzdzQjtLQUM3QyxJQUFKMFMsTUFBSSx1Q0FENkMxUztLQUVyRCxPQUFBOztjQUpXNnNCO2NBR1BuYTs7Y0FBQUE7O0lBQzRDO0lBRnpDO0tBQUEsT0FBQSxtQ0FGRHpVO0tBRVYsUUFBQTtnQkFJUTs7NkJBQ0MrQixnQkFBTSxlQUFOQTtRQUNHMFM7SUFBTSxXQUFOQTtHQUFhO1lBRXpCNDlCLFdBQU1yeUMsTUFBS2tFO0lBQ3VCLFdBQUEsd0NBRHZCQTtJQUN1QixPQUFBLG1DQUQ1QmxFO0dBQ21FO0dBRTlELElBQVhzeUM7WUFDQUMsWUFBWTlpQztJQURaNmlDLGNBQzRCLDhCQUQ1QkEsaUJBQ1k3aUM7O0dBQWlDO1lBRTdDK2lDLG1CQUFtQnh5QyxNQUFLNHVCLFNBQVNuZjtJQUNuQyxPQUhFOGlDOzZCQUdvQixPQUFFLFdBRFc5aUMsR0FyQmpDaUssT0FxQm1CMVosTUFBSzR1QixVQUNrQjtHQUFDO1lBRTNDNmpCO0lBQXdCLGNBQTRCaGpDLEdBQUssT0FBQSxXQUFMQSxNQUFRO0lBQWIsT0FBQSxrQ0FOL0M2aUM7R0FNNkQ7R0FDN0MsSUFBaEJJO1lBQ0FDLGlCQUFpQmxqQztJQURqQmlqQztLQUNzQyw4QkFEdENBLHNCQUNpQmpqQzs7R0FBMkM7WUFDNURtakM7SUFBdUIsY0FBaUNuakMsR0FBSyxPQUFBLFdBQUxBLE1BQVE7SUFBYixPQUFBLGtDQUZuRGlqQztHQUVpRTtZQWUvRG5qQyxLQUFLc2pDLGdCQUFnQnptQzthQUNuQjBtQyxpQkFBZXAwQixLQUFJOFE7S0FBWSxXQUFBLFdBRDVCcWpCLGdCQUNZbjBCLEtBQUk4UTtLQUFZLE9BQUE7SUFBdUI7SUFDMUQsV0FESXNqQixrQkFEbUIxbUM7R0FFSztHQUhwQixhQUNObUQ7WUFLRjZtQixPQUFLeWMsZ0JBQWdCem1DO2FBQ25CMG1DLHdCQUFpQnRqQjtLQUFLLE9BQUEsV0FEbkJxakIsZ0JBQ2NyakI7SUFBc0I7SUFDM0MsT0FBQSxrQkFESXNqQixrQkFEbUIxbUM7R0FFUztZQWdEOUIybUMsU0FBUy94QyxHQUFFaEI7SUFDYixXQUFBLGtDQURhQSxNQUFGZ0I7SUFDWCxTQUFBO0lBQTJDLFdBRGhDQSxNQUNnQyxPQUFBLGtDQUQ5QmhCO0lBQzhCLE9BQUE7R0FBNkI7R0FFbkQsSUFBbkJvZTtZQUVBNDBCLGdCQUFnQjlXLElBQUkrVztJQUN0QixLQURzQkEsV0FFWixPQUFBLHVCQUZRL1c7UUFHWGo4QixNQUhlZ3pDO0lBR1IsT0FBQSw2QkFISS9XLFNBR1hqOEIsUUFBQUE7R0FBNkQ7WUF3T2xFaXpDO0lBdE9XNTBCOztJQUFnQzYwQjtJQUFjQztJQUN4REM7SUFBTUM7SUFBTUM7SUFBV0M7SUFBV0M7SUFBaUJDO0lBQ25EQzs7SUFBMkIzekM7SUFDOUIsR0FIYXNlLFNBQWFDLE1BQWJELFFBQUFoQyxhQUFhaUMsY0FBYmpDO0lBR2IsYUFId0M2ckIsaUJBQVJDLFFBQVFELGdCQUFSQztJQUdoQyxhQUQwQndMLGlCQUFWQyxVQUFVRCxnQkFBVkM7SUFDSjtLQUFBO09BQUE7Z0NBSEN2M0I7S0FHVHczQixVQUFRLG9DQUhvQjFMO0tBSTVCNkssWUFBWTtLQUNoQixPQVpFNzBCO2tCQVk4QjBDLElBQU0sT0FmcENpeUIsU0FlOEJqeUIsSUFIRjlnQixNQUd3QjtJQUEvQyxZQUFBOztTQUVMOGdCO0tBQ0Usa0NBTjBCOWdCO0tBUTFCLGtDQWZGZ3pDLGlCQVlBbHlCO0tBS0Usa0NBakJGa3lCLGlCQVNFQzs7SUFTSixjQUFtQ3hqQyxHQUFFaVAsS0FBSThjO0tBQWMsV0FBQSxXQUFwQi9yQixHQUFFaVAsS0FBSThjO0tBQWMsT0FBQTtJQUFXO0lBQXZELElBQVB1WSxTQUFPLGlDQVpSVjtJQWFILGNBQW1DNWpDLEdBQUVpUCxLQUFJOGM7S0FBYyxXQUFBLFdBQXBCL3JCLEdBQUVpUCxLQUFJOGM7S0FBYyxPQUFBO0lBQVc7SUFBdkQsSUFBUHdZLFNBQU8saUNBYkZWO0lBY1QsY0FDcUM3akMsR0FBRWlQLEtBQUk4YztLQUFjLFdBQUEsV0FBcEIvckIsR0FBRWlQLEtBQUk4YztLQUFjLE9BQUE7SUFBVztJQUFsRTtLQURFeVk7T0FDRixpQ0FmbUNSO0lBaUJyQyxjQUNxQ2hrQyxHQUFFaVAsS0FBSThjO0tBQWMsV0FBQSxXQUFwQi9yQixHQUFFaVAsS0FBSThjO0tBQWMsT0FBQTtJQUFXO0lBQWxFO0tBREUwWTtPQUNGLGlDQWxCb0RSO0tBb0JsRFM7O1FBbkIwQm4wQztRQUFkNnpDO1FBV1pFO1FBQ0FDO1FBYldUO1FBQVdDO1FBY3RCUztRQUdBQztRQWxCeUNmO1FBQWNDO1FBRXhETztRQUNDRztRQUNBYjtJQVhGNzBCLGFBNEJFKzFCLE1BNUJGLzFCOztHQTZDZTtZQUlmZzJCLFlBQWF2VixTQUFROXNCO0lBQ3ZCLEtBRHVCQSxLQUVmO0lBRXFCO0tBTmJzaUMsTUFFT3RpQztLQUZadXJCLFNBRVl2ckI7S0FJZnVpQyxRQUFxQixXQUpkelYsU0FGSnZCO0tBQUFnTyxPQUFBaE87S0FBSzVzQixJQUFBMmpDO0lBQUk7VUFBSjNqQztNQU9ELElBQVB1SyxPQUFPLFdBTEE0akIsU0FGSnlNO01BUVAsZUFGSWdKLFVBQ0FyNUIsU0FEQXE1Qjs7U0FOUTNpQyxNQUFBakIsTUFBTDJzQixTQUFLM3NCLE1BQUw0NkIsT0FBQWpPLFFBQUszc0IsSUFBQWlCOztHQVE4QjtZQUU1QzRpQztJQUEyQnZ6QyxHQUFHb2tDLGNBQWNHLE1BQU1pUCx5QkFDakQ5ZSxXQUFXQztJQUNkO0tBQU15UyxRQUZ1QnBuQztLQUVGb3lDLGVBRkVweUM7S0FFaEJteUMsZUFGZ0JueUM7S0FFa0JzeUMsT0FGbEJ0eUM7S0FFWXF5QyxPQUZacnlDO0tBR3pCd087T0FDRjs7O2FBSmtEZ2xDO2FBQU5qUDthQUFkSDtTQUUxQmdEO0lBS04sU0FBSXFNLHNCQUFzQmgzQixTQUFRaTNCLFdBQVVqbEM7S0FDMUM7TUFBcUIsUUFBQSxXQURxQkEsR0FBVmlsQztNQUNwQkM7TUFBUkM7S0FDSixHQUZnQ0Y7TUFJWDtPQURiejBDLE1BSHdCeTBDO09BSXhCRyxpQkFEQTUwQyxRQUFBQSxRQUFBQTtPQUVBNjBDLGlCQUZBNzBDLFFBQUFBLFFBQUFBO01BR0osR0FMQTIwQyxRQU9PLFdBZmlDclAsU0FPcEI5bkIsU0FJaEJvM0IsZ0JBSEpEO1NBQVFELFFBVUQsV0FsQmlDcFAsU0FPcEI5bkIsU0FLaEJxM0IsZ0JBSklIOzs7TUFZRixJQUVKamtDLElBRkksOEJBWk5ra0MsUUFBUUQ7U0FjTmprQztPQVVJLElBREVvRixZQVJBNUUsS0FBQUE7T0FXSixXQWxDb0NxMEIsU0FPcEI5bkIsU0F3QlozSCxXQVROcEY7OztLQWFOLFdBM0JJa2tDLFFBQVFEO0lBMkJJO0lBRWxCLEdBcENjaGY7U0FxQ2VLLGVBckNmTCxlQW9DVmEsZUFDeUJSOztTQUR6QlE7YUFHQXVlLFNBQVM1ZSxNQUFLNmU7S0FDaEIscUJBQ29DLGtDQUVuQjtLQUZmO01BQUEsUUFBQSxrQ0FGY0E7TUFDTHhsQjtNQUFQSztNQUtBNkUsWUE5Tk51ZCxxQkF5TmF6aUI7TUFNUDJWO1FBQ0Y7MENBL0NEelAsV0E2Q0doQixXQVRGOEI7UUFuQ1MyYztNQXFESDtPQUZDMWpDLElBbkRFMGpDO09Bb0REdUIsWUE5RFZOLHFCQStEcUM1a0IsSUFBTSxPQUFOQSxNQUEyQixHQWRyREE7Y0FsQ1RpbEIsMEJBK0NRQyxXQUcyQyxXQUo1Q2psQyxHQU5MMDFCO09BR1F3UDtPQUFSQzs7VUFBUUQsWUFBUkM7bUJBVUlwbEI7TUFBTSxLQTFEeUI2akIsTUEwREQsT0FBQSxpQ0FBOUI3akI7VUFBK0MvZixJQTFEaEI0akM7TUEwRHFCLE9BQUEsV0FBTDVqQyxHQXBCNUMwbUIsTUFvQkgzRztLQUE2RDtLQURyRTs7UUFBQTtpQ0F4REVoZ0I7VUFBQUE7VUE0Q0UyMUI7VUFZb0I7O2dCQWxCcEJ0VixXQVNBK2tCLFlBVE9wbEIsUUFTQ21sQjtLQVVSLE9BQUE7SUFBaUU7YUFFbkVNLFNBQVM5ZSxNQUFLK2U7S0FDaEIscUJBQ29DLGtDQUVuQjtLQUZmO01BQUEsUUFBQSxrQ0FGY0E7TUFDTDFnQjtNQUFQM0U7TUFLQTZFLFlBaFBOd2QscUJBMk9hMWQ7TUFNUDJRO1FBQ0Y7MENBckVEelAsV0FtRUdoQixXQS9CRjhCO1FBbkN1QjRjO01BMkVqQjtPQUZDM2pDLElBekVnQjJqQztPQTBFZnNCLFlBcEZWTixxQkFxRnFDNWYsSUFBTSxPQUFOQSxNQUEyQixHQWRyREE7Y0F4RFRpZ0IseUJBcUVRQyxXQUcyQyxXQUo1Q2psQyxHQU5MMDFCO09BR1F3UDtPQUFSQzs7VUFBUUQsWUFBUkM7bUJBVUlwZ0I7TUFBTSxLQWhGK0I4ZSxNQWdGUCxPQUFBLGlDQUE5QjllO1VBQStDL2tCLElBaEZWNmpDO01BZ0ZlLE9BQUEsV0FBTDdqQyxHQXBCNUMwbUIsTUFvQkgzQjtLQUE2RDtLQURyRTs7UUFBQTtpQ0E5RUVobEI7VUFBQUE7VUFrRUUyMUI7VUFZb0I7O2dCQWxCcEJ0VixXQVNBK2tCLFlBVE9wZ0IsUUFTQ21nQjtLQVVSLE9BQUE7SUFBaUU7SUFFdkU7WUFwRjZCM3pDO1lBQUFBO2dCQXdDekIrekM7Z0JBc0JBRTtZQTlEeUJqMEM7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FvRndCO1lBa0duRG0wQywrQkFBaUQ5QixNQUFNQyxNQUFNTyxTQUFRN3pDO0lBRXZFO0tBQ3FCLE9BQUE7S0FEakIrekMsU0FDRixpQ0FIaURWO0tBTTlCLE9BQUE7S0FEakJXLFNBQ0YsaUNBTnVEVjtJQVF6RCxPQVZFSjt5QkFJRWEsUUFHQUMsdUJBTDJESCxTQUFRN3pDO0dBUXRCO0dBWHpDLGVBQ05rekMseUJBRUFpQztZQVdGQyxhQUFjM2xDLFVBQ1h3QyxHQUFLLE9BQUEsV0FETXhDLEdBQ1h3QyxHQUFRO1lBRVhvakM7SUFBeUIvNEI7SUFBWThyQjtJQUFPK0s7SUFBY0M7SUFBY0M7SUFDdkVDO0lBQU1DO0lBQVdDO0lBQVdDO0lBQWlCQztJQUNoRDtLQUFJSyxTQUFPLGlDQUYrRFYsTUFIeEUrQjtLQU1FcEIsU0FBTyxpQ0FGUlYsTUFKRDhCO0tBT0VuQjtPQUFrQixpQ0FIU1IsaUJBSjdCMkI7S0FRRWxCO09BQWtCLGlDQUowQlIsaUJBSjlDMEI7S0FTRUUsY0FBWSxpQ0FMUC9CLFdBSlA2QjtLQVVFRyxjQUFZLGlDQU5JL0IsV0FKbEI0QjtLQVdFSTtPQUFlLGlDQVIyQnJDLGNBSDVDaUM7S0FZRUs7T0FBZSxpQ0FUeUNyQyxjQUgxRGdDO0lBYUYsT0FBQTs7YUFWMkI5NEI7YUFBWThyQjthQVFuQ29OO2FBQ0FDO2FBUEExQjthQUNBQzthQUdBc0I7YUFDQUM7YUFIQXRCO2FBQ0FDO0dBTWlFO1lBRW5Fd0IsNkJBQThCMTFDLE1BQU9zZSxLQUFlKzBCLE1BQU1DO0lBQzVELEdBRHVDaDFCLFNBQVVDLE1BQVZELFFBQUF1MUIsVUFBVXQxQixjQUFWczFCO0lBQ3ZDLE9BQUE7YUFkRXdCOytCQWFvRGhDLFdBQU1DOztpQkFBckJPO2FBQVA3ekM7R0FDaUI7WUFJL0MyMUMsaUNBQWlEdEMsTUFBTUM7SUFDekQ7S0FBSVMsU0FBTyxpQ0FEd0NWLE1BckJqRCtCO0tBdUJFcEIsU0FBTyxpQ0FGOENWLE1BckJ2RDhCO0lBd0JGLE9BQUEsb0JBRklyQixRQUNBQztHQUMwRDtZQW9CNUQ0QjtJQUFzQnhRLGNBQWNHLE1BQU1pUCx5QkFBeUI5ZSxXQUNsRUM7SUFDSCxjQTViRTBiOztLQWdjSTtNQURHMzJCO01BQ0g7aUJBQXVCMWE7U0FDbkIsV0E3U05vZTt1QkE2U3dDMEMsSUFDOUIsT0FqVFZpeUIsU0FnVHdDanlCLElBRGY5Z0IsTUFFVztTQURGLE9BQUE7UUFDRztNQTVJWDYxQyxNQTBJeEIsa0NBREduN0I7O1NBeklxQm03QixNQXdJbEIsaUNBMVNSejNCO3lCQW9La0VwZDtLQUExQjtNQUFvQm1WO01BQVAyL0I7TUFBUEM7TUFDdENDOztTQUQwRGgxQztTQUFBQTtTQUFBQTtTQUFBQTs7Ozs7U0FBQUE7U0FBQUE7U0FBQUE7U0FBQUE7U0FBQUE7S0FVOUQsU0FBSXlPLEVBQUV3bUMsT0FDSixXQURJQSxVQUFBQSxVQUN3RDtLQUV4RCxZQUFBLGlDQWJ3RGoxQyxPQVUxRHlPO2lCQVlNLFdBdEJnQ3NtQyxPQUFPRCxXQUM3Q0UsV0FEb0Q3L0I7OztVQWtCekMrL0I7TUFDWDtjQW5Cc0NIOzs7Z0JBQ3RDQztnQkFBQUE7b0JBaUJXRTtnQkFqQlhGO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7Z0JBQUFBO2VBRDZDRjtrQkFDN0NFLFdBRG9ENy9COztTQWN4Q2dnQztLQUNaOzs7ZUFkQUg7ZUFBQUE7bUJBYVlHO2VBYlpIO2VBQUFBO2VBQUFBO2VBQUFBO2VBQUFBO2VBQUFBO2VBQUFBO2VBQUFBOztlQUFBQTtjQURzQ0Q7YUFBT0Q7aUJBQzdDRSxXQURvRDcvQjtJQXNCWjtJQXRCaEQ7S0FBQSxRQUFBLDZDQUYwQjAvQjtLQThKYk87S0FiR0M7S0FEQ0M7a0JBakdhdDFDO0tBQ3ZCOztPQUNFLGlDQUZxQkE7WUFHbEIsaUNBSGtCQTtNQXFCbEI7Z0JBckJrQkEsY0FBQUEsYUFBQUE7S0FLckI7O2NBRVcsa0NBUFVBOzs7Ozs7Ozs7Ozs7O0lBcUJkO0lBckJkLElBZ0dZdTFDLGFBaEdaLGtDQS9Dd0JWO2tCQTJCSTcwQztLQUN2Qjs7T0FBRyxpQ0FEb0JBO1lBQ1UsaUNBRFZBO01Ba0JsQjtnQkFsQmtCQSxjQUFBQSxhQUFBQTtLQUVyQjs7Y0FFVyxrQ0FKVUE7Ozs7Ozs7Ozs7Ozs7SUFrQmQ7SUFsQmQ7S0FtSFN3MUMsVUFuSFQsa0NBM0J3Qlg7S0FzSjFCLE9BQUEsaUNBUGNVO0lBT2QsR0FBQTtLQUNEO01BQUEsZ0JBQ3VEdjFDLEdBQUssT0FBTEEsS0FBVztNQUF4QyxPQUFBLGtDQVRYdTFDO01BUVgzWixLQUNGO01BRUVuYyxNQUNGLGtDQUpFbWM7S0FNSixzQkFISW5jOztPQTljTDh3Qjs7OztTQWtkRixPQXZRSWdEOztrQkE2T29CblA7a0JBQWNHO2tCQUFNaVA7a0JBQXlCOWU7a0JBQ2xFQzs7YUE2Qkssa0NBSlN5Z0I7O0tBZVo7TUFSSUs7aUJBQWVobkM7dUJBQ21CcVI7VUFDMUIsWUFBQSxXQUZPclIsR0FDbUJxUjtzQkFDUjtjQUFZN087VUFBSyxlQURUNk8sT0FDSTdPO1NBQXNCO1NBRDlELFdBQUEsa0NBUlVta0M7O1VBV1EsSUFBYXRtQyxhQUFQQztVQUFnQixPQUFBLGtDQUFoQkEsR0FBT0Q7U0FBNEI7U0FIM0Q7VUFBQSxPQUFBLFdBR0c7O1NBQ1ksT0FBQSxzQztRQUFHO01BR3BCLGdCQUMrQmdSLElBQXFCLE9BQXJCQSxPQUE2QjtNQUExRCxPQUFBLGtDQWhCVXMxQjtNQWpMNEJoTyxRQWlNdEM7TUFFRXNPLGlCQVhBRCx1QkFXdUMzMUIsSUFBTSxPQUFOQSxNQUFxQjtNQUM1RDYxQixpQkFaQUYsdUJBWXVDMzFCLElBQU0sT0FBTkEsT0FBcUI7OztNQUEzQyxLQXBNbUJzbkIsV0FtTXBDc08sb0JBQ0FDLDJCQW5CUVA7TUF1QlI7T0FBSVE7a0JBRUFDO1VBRmlCLE9BRWpCQTs7NkJBRVMxZ0IsTUFBS2wyQjttQ0FFcUJ3UCxHQUFLLE9BRGxDLFdBQzZCQSxHQUYxQjBtQixNQUFLbDJCLEtBRW9DO3FCQUExQztzQkFBQSxPQUFBLGtDQUpSNDJDO3NCQUlRLFFBQUE7c0JBRFdDO3NCQUFUQztzQkFHQUMsWUFBVSxrQ0FIVkQ7c0JBSXNCLE9BQUEsaUNBSmJEO3NCQUlURyxZQUFVO3FCQUNkLFdBRklELFdBQ0FDO29CQUNjOztTQUFDO09BbE40QjdELGVBd01yRHdELGVBSkpEO09BcE0yQ3hELGVBd012Q3lELGVBTEpGO09BaE1MOzs7Ozs7Ozs7O1VBSGdEdkQ7VUFBY0M7O1VBQXJCaEw7VUFnQnZCOzs7O1ksT0F0R2xCbU07O3FCQTZPb0JuUDtxQkFBY0c7cUJBQU1pUDs7cUJBQ3pDN2U7O1lBRGtFRDtVQTBCcEQwZ0I7Ozs7aUJBeUNXdDFCO1NBQ2pCLFdBRGlCQTtjQUFBQSxpQkFDMkI7U0FBYTtRQUFJO2FBUC9ELFdBTUY7O0lBR2dDO0tBQUEsT0FBQSxvQ0F6RG5CdTFCO0tBeURHLE9BQUEsOEJBMURGQztLQTBEWCxPQUFBLDhCQTNEUUM7SUEyRFIsT0FBQSw4QkE1REtDO0dBNER1RDtZQUVwRVU7SUFBa0J4aEI7SUFBV2hCO0lBQVd3TztJQUFPaVU7SUFBWUM7SUFDMUQ3UjtJQUFNaVA7SUFBeUI3ZTtJQUFZeVA7SUFBYTVKO0lBQzNEO0tBQUlxYTtPQTFFRkQ7U0F5RTRDeFEsY0FBM0NHLE1BQU1pUCx5QkFEVzllLFdBQ2NDO0tBWVAsV0FaZ0M2Rjt5QkFjSDFhO0tBRGpEO01BQ3dDVDtNQUF2QmczQjtNQUFWQztNQUFMOWI7S0FDSCxHQWY0QjdGO1VBaUJuQkssZUFqQm1CTCxlQWV4QmEsZUFFS1I7O1VBRkxRO0tBTUY7TUFERUw7UUFDRjswQ0F0QllULFdBQVdoQixXQWdCckI4QjtNQVVJLFFBQUEsV0ExQm1DMmdCLFlBZU9yMkI7O1VBYXpDclI7TUFBSztPQUNXO1FBQUEsT0FBQSxXQURoQkEsR0FQTDBtQixNQU5EcUY7UUFjUSxPQUFBLDhCQWRPNmI7UUFVRG5rQixXQVZ3QjdTO1FBVXJDazNCOztZQUtPOWI7V0FBQWxZLDBCQUFBa1k7T0FBUyxLQTdCb0IySixnREE2QjdCN2hCOztRQUxNMlAsZUFNSyw4QkFEWDNQLE1BZjhCbEQ7UUFVckNrM0IsZ0JBVmNGOzs7O1VBVURua0IsV0FWd0I3UyxRQVVyQ2szQixnQkFWY0Y7S0FrQlosY0FBQSxXQWpDOEJuVSxPQWVjcGlCO21CQW1CeEMsV0FuQlAwYSxLQUFLOGIsYUFVSkMsZUFBYXJrQjtTQVVWdEk7O01BRUk7T0FBQSxPQUFBLFdBRkpBLEtBZEh1TCxNQU5EcUY7OztPQXFCeUJnYyxXQVhYdGtCO09BV0h1a0I7T0FBTDliOztXQUVFcFk7VUFBQWtZLDRCQUFBbFk7TUFBUyxLQXJDb0I2aEIsZ0RBcUM3QjNKOztPQUZpQitiLGVBR1IsOEJBRFQvYixRQWJNdkk7T0FXSHVrQjtPQUFMOWIsUUFyQk5IOztRQWxoQlA0VjtNQThpQjhCO09Bcklhc0csY0FxSWIsV0EzQzZCTixnQkFvQzlDemI7T0E5SFczN0IsT0F5RzhCOGdCO09BeEdwRDYyQjtrQkFBV0MsTUFBSzduQyxHQUFFRDt3QkFFSzlQO3lCQUVPZ1gsUUFDbkIsT0FIWWhYLFlBRU9nWCxrQkFDRTtXQUQxQixXQUFBLHdDQUpZbEg7VUFLZ0I7VUFIbEM7V0FERStuQyxPQUNGLHdDQUZnQjluQztXQU9YLFdBQUEsa0NBTkg4bkM7cUJBTUc7VUFDTCxrQ0FSV0QsTUFEVzUzQztVQVN0QjtXQUVrQixJQUFxQkMsZ0JBQWRxUDtXQUNyQixPQUFBO2lFQURtQ3JQLEtBQWRxUDtVQUNxQztVQUQ5RCxrQ0FURXVvQztVQVNGLE9BQUE7U0FFMkI7TUFaM0JGLDRCQUR5Q0QsYUF5Ry9CSjtNQXhHVkssMkJBd0dVTCxhQXpHK0JJO1VBbUkvQkksVUFuSStCSjs7O1VBbUkvQkk7S0FRSjthQWJLbmM7YUFLRG1jO2FBaEJKUDthQXdCNEIsOEJBYkpDLFVBQWRDO0lBYXdDO0lBcEMxRDtLQURFOW1DLE1BQ0YsOENBWEVrbEM7S0FJb0N4MUIsU0FNcEMxUDtLQU51QjBtQyxjQU12QjFtQztLQU5RZ3JCLFFBTVJockI7O0tBSndCLElBQVdkLGNBQUw1UDtLQUMxQixPQUFBLDhCQUQwQkEsS0FBSzRQO0lBQ0c7SUFGeEM7WUFEVThyQjtZQUVSLGtDQUZ1QjBiO1lBQWFoM0I7R0E2QzlCO1lBa0JSMDNCLG1CQUFtQnYwQixPQUFRM2E7SUFDN0IsR0FENkJBO0tBYjdCO01BQUk1STtNQUNBbWhDLE1BQU0sbUNBWVc1ZDtLQUdYLGVBZFYsdUNBRkl2akIsS0FDQW1oQzs7SUFNSjtLQUFJdHJCO0tBQ0FraUMsUUFBTSxtQ0FLV3gwQjtJQUVYO2dCQU5WLHVDQUZJMU4sT0FDQWtpQztHQVF3RDtZQUUxRHJULGlCQUFpQnBoQixLQUFNMWE7SUFDekIsT0FORWt2QyxtQkFNRiw4QkFEbUJ4MEIsTUFBTTFhO0dBQ3VCO1lBdUI5Q292QyxtQkFBbUI1M0I7a0JBQ002M0IsU0FBTTEwQjtLQUM3QjtNQUFJdmpCLE1BQU0sb0NBRGFpNEM7TUFFbkJwaUMsUUFBTyxvQ0FGa0IwTjtLQUc3QixPQUFBLGdDQUZJdmpCLEtBQ0E2VjtJQUNxQjtJQUg3QixPQUFBLHdDQURxQnVLO0dBSVM7WUFJNUI4M0I7SUFBa0Izb0IsSUFBSWtHLFdBQVc2UCxNQUFNaVAseUJBQXlCN2UsWUFDL0R5UDtJQXJpQkNxTjtPQTVFRnhCO0tBb25CQTs7S0FDQSwrREFMa0J6aEI7O2FBa0JoQjRvQixZQUFZLzNCLFFBQU9tUDtLQUNSLElBQVQ2b0IsU0EzQkpKLG1CQTBCYzUzQjttQkFFVW1EO01BQ3BCO09BRUUsT0FBQSxtQ0FIa0JBO09BRWIsT0FBQSxvQ0FGYUE7TUFDcEIsT0FBQTtzQ0FybkJKOVo7ZUFBQUE7ZUFxbkJJO0tBSXVCO0tBTDNCLFdBQUEsa0NBREkydUM7S0FDSixPQUFBLG9DQUZxQjdvQjtJQVFqQjtJQTRCVTtLQUFaa0YsWUFyb0JGdWQscUJBK2tCa0J6aUI7O0tBd0RsQjtPQWxLQTBuQjtTQTBHc0J4aEI7U0FzRHBCaEI7a0JBR2E1VCxJQUFxQixPQUFyQkEsTUFBNEI7a0JBQ3ZCQSxJQUFxQixPQUFyQkEsTUFBaUM7O1NBMURwQnlrQjtTQUFNaVA7U0FBeUI3ZTtTQUMvRHlQO1NBRGlCNVY7S0F1REMwRDtLQWpEWm1rQjtLQUFZaUI7T0FBWmpCO0tBS0Q7O2lCQUNVaDFCO1NBQUwsSUFBc0JwaUIsTUFBakJvaUI7U0FDTixPQUFBLHVDQUR1QnBpQixLQUFqQm9pQjtRQUN1QztNQUZqRCxPQUFBLGtDQUxDZzFCO01Bc0JhaGIsT0FqQmQsb0NBTGFpYzs7U0FzQkNqYyxPQXRCRGljO0lBdmlCakIxRjtPQS9FRjNCO0tBbXBCTTs7TUFERXNIO1FBQ0Y7OERBUGNsYztRQTNvQnBCNlU7OztPQW9wQlFzSDtTQUVBOytEQVhZbmM7O1VBU1ptYztLQUtrQjtNQUFsQkMsa0JBQWtCO01BQ0s7UUFBQTs2QkFOdkJELHlCQUtBQztNQVpKcDRCLFNBYUEsOEJBVElrNEI7OztTQUpKbDRCO09BNW9CSjh3QjtLQStwQk07O01BQUEsT0FBQSxxQ0FscUJOSDtLQWtxQk07T0FBQSxvREFyQmMzVTs7SUF3QnBCLFdBbENFK2IsWUFZRS8zQixRQUZnQmdjO1dBVmxCK2IsWUE0Q3VELGlDQVB0Q2xsQjtHQU91RDtZQWMxRXdsQjtJQUFrQmxrQixJQUFJa0IsV0FBVzZQLE1BQU1pUCx5QkFBeUI3ZSxZQUMvRHlQO0lBam5CQ3FOO09BNUVGeEI7S0Fnc0JBOztLQUNBLDhEQUxrQnpjOzthQWtCaEI0akIsWUFBWS8zQixRQUFPbVU7S0FDUixJQUFUNmpCLFNBdkdKSixtQkFzR2M1M0I7bUJBRVVtRDtNQUNwQjtPQUVFLE9BQUEsbUNBSGtCQTtPQUViLE9BQUEsb0NBRmFBO01BQ3BCLE9BQUE7c0NBanNCSjlaO2VBQUFBO2VBaXNCSTtLQUl1QjtLQUwzQixXQUFBLGtDQURJMnVDO0tBQ0osT0FBQSxvQ0FGcUI3akI7SUFRakI7SUE0QlU7S0FBWkUsWUE3c0JGd2QscUJBdXBCa0IxZDs7S0F3RGxCO09BOU9BMGlCO1NBc0xzQnhoQjtTQXNEcEJoQjtrQkFHYTVULElBQXFCLE9BQXJCQSxNQUE0QjtrQkFDdkJBLElBQXFCLE9BQXJCQSxNQUFpQzs7U0ExRHBCeWtCO1NBQU1pUDtTQUF5QjdlO1NBQy9EeVA7U0FEaUI1UTtLQXVEQ3RCO0tBakRabWtCO0tBQVlzQjtPQUFadEI7S0FLRDs7aUJBQ1VoMUI7U0FBTCxJQUFzQnBpQixNQUFqQm9pQjtTQUNOLE9BQUEsdUNBRHVCcGlCLEtBQWpCb2lCO1FBQ3VDO01BRmpELE9BQUEsa0NBTENnMUI7TUFzQmFqYixPQWpCZCxvQ0FMYXVjOztTQXNCQ3ZjLE9BdEJEdWM7SUFubkJqQi9GO09BL0VGM0I7S0ErdEJNOztNQURFc0g7UUFDRiw4REFQY25jO1FBdnRCcEI4VTs7O09BZ3VCUXNIO1NBRUE7OERBWFlwYzs7VUFTWm9jO0tBS2tCO01BQWxCQyxrQkFBa0I7TUFDSztRQUFBOzZCQU52QkQseUJBS0FDO01BWkpwNEIsU0FhQSw4QkFUSWs0Qjs7O1NBSkpsNEI7T0F4dEJKOHdCO0tBMnVCTTs7TUFBQSxPQUFBLHFDQTl1Qk5IO0tBOHVCTSxXQUFBLG1EQXJCYzVVOztJQXdCcEIsV0FsQ0VnYyxZQVlFLzNCLFFBRmdCK2I7V0FWbEJnYyxZQTRDdUQsaUNBUHRDbGxCO0dBT3VEO1lBRTFFMGxCLGNBQWNwa0I7SUFDaEI7OztLQU9FZ0g7T0F4RUFrZDtTQWdFY2xrQixJQUdEO0lBS04sT0FBUGdIO0dBQVU7WUFjVnFkLGlCQUFpQnZkLGVBQWN3ZDtrQkFDWjE1QjtLQUNqQjtNQUMyQixPQUFBLCtCQUhFMDVCO01BRXpCcjRCLE1BQ0YseUNBRmVyQjtLQUlqQixlQUhJcUIsS0FGVzZhO0lBS1c7SUFKZCxPQUFBO0dBSWU7WUFJZHlkLGdCQUZDNTRDO0lBQUssSUFBSSxnQkFBVEEsS0FBUzs7O2dDQUF5Qzs7O0dBQUU7Ozs7Ozs7O2dCQXlCaEVtaUIsZUFHOEJwUjtRQUFSOG5DLG1CQUFSQztJQUNiLE9BQUEsa0NBRDZCL25DLFFBQWhCK25DO2tCQUFRRCxRQUFROW5DLFFBQUFBLFFBQUFBO2NBQUFBOzs7Ozs7O0lBSmxDZ29DO0lBV0FDO1lBK0lBQyxnQkFBaUI1ZDtJQUNuQixTQURtQkE7U0EvQkdtZCxPQStCSG5kOzs7U0EvQkdtZDtXQUdsQlUsV0FIa0JWLGdCQUdsQlU7Ozs7UUFNZTtTQURaamQsT0FSZXVjO1NBU1pXLFdBQVMsNENBTmZEO1NBU00sT0FBQSxzQ0FIQUM7UUFDRyxLQUFBO1NBQVAsTUFBQTtZQVRGOWtCLEtBT0c0SDs7OztVQVBINUgsS0FEa0Jta0I7O0tBa0J0Qjs7O1NBQXdDLElBQVl6MEMsaUJBQU5sRTtTQUMxQyxPQTUzQkFxeUMsT0EyM0IwQ3J5QyxNQUFNa0U7UUFDeEI7S0FENUIsa0NBNTRCSWt1QztLQTI1QlEsV0FoQ1I1ZDs7UUEvQmtCOGpCLE9BNkRIOWM7OztRQTdERzhjO1VBR2xCejRCLFNBSGtCeTRCLGdCQUdsQno0Qjs7OztPQU1lO1FBRFp3YyxPQVJlaWM7UUFTWng0QixXQUFTLDRDQU5mRDtRQVNNLE9BQUEsc0NBSEFDO09BQ0csS0FBQTtRQUFQLE1BQUE7V0FURjBQLEtBT0c2TTs7OztTQVBIN00sS0FEa0I4b0I7O0lBa0J0QjtLQUF3QyxJQUFZcDBDLGlCQUFObEU7S0FDMUMsT0E5MUJBcXlDLE9BNjFCMENyeUMsTUFBTWtFO0lBQ3hCO0lBRDVCLGtDQTkyQklrdUM7SUE0NUJRLFdBL0RSNWlCO0dBK0RvQztHQU94QixJQUFkK3BCO1lBQ0FDLFlBQVk5bkMsR0FBRU8sR0FBRlAsV0FBRU8sR0FBRlAsZ0JBQWtCO1lBRTlCK25DLG9CQUFxQng1QyxLQUFLdW5DO0lBQzVCLE9BSEVnUzthQURBRDthQUtBLG1DQUZxQnQ1QyxRQUFBQSxRQUFLdW5DO0dBR2pCO0dBRVksSUFBckJrUztZQUNBQywyQkFBMkJscUM7SUFBSSxPQVIvQitwQyxZQU9BRSxvQkFDMkJqcUM7R0FBb0M7R0FXdkQsSUFBTm1xQztZQTBCRkM7SUFBYXJlLEtBQXVCN0YsWUFBWUQsV0FBVzZQLE1BQzFEaVAseUJBQXlCcFA7SUFDNUIsU0FGZTVKO0tBTVA7TUFIRHZwQixJQUhRdXBCO01BSVBHO1FBM1VOK2M7VUEwVUt6bUM7VUFIMkN5akI7VUFBVzZQO1VBQzFEaVA7Y0FEbUM3ZTtVQUNWeVA7S0FVeEIsV0FQSXpKOztJQVdBO0tBSERwYSxNQVpRaWE7S0FhUEs7T0FoYU5zYztTQStaSzUyQjtTQVoyQ21VO1NBQVc2UDtTQUMxRGlQO2FBRG1DN2U7U0FDVnlQO0lBbUJ4QixXQVBJdko7R0FPaUI7R0FrSFQ7SUFBZGllO0lBQ0FoZDtJQUNBajBCO0lBQ0FnMEI7SUFDQXVJO1lBRUEyVSxVQUFVNTVDO0lBQ1osR0FKRTA4QjtLQU1VLE1BQUE7O0lBTlZBLGVBR1UxOEI7O0dBR3NDO1lBRWhENjVDLFNBQVM3MUI7SUFDWCxZQVZFdGI7O1NBV0t5YjtLQUFZLEtBQUEsK0JBRlJILEdBRUpHO01BQ0gsTUFBQTs7O0lBWkZ6YixjQVNTc2I7O0dBSVU7WUFFbkI4MUIsZ0JBQWdCQztJQUNsQixJQUtFQyxRQXZCQUw7Ozs7O2dCQXVCQUs7Y0FBQUE7O1VBdkJBTCxpQkFpQmdCSTs7b0JBQUFBO21CQUFBQSxTQUFBQTs7O29CQUFBQTtrQkFBQUE7aUJBQUFBOzs7OztPQUkrQjs7VUFDckNucUMsSUFDVm9xQztnQkFOZ0JEO1dBS09wcUMsSUFMUG9xQztPQUtjLEdBQUEsaUNBQXBCbnFDLEdBQWFELElBQXlCOzs7U0FMaENvcUM7O2VBQUFBLHVCQUFBQTtNQUdHLE1BQUE7O0lBSWpCLFNBQUlFO0tBQXFCOzs7U0FDTCxNQUFBOztTQUNKOztTQUNFO2lCQUdOOzs7SUFBTztJQUtYO0tBQUEsT0FYSkEsbUJBUFVGO0tBaUJvQyxPQVY5Q0UsbUJBRE5EO0tBV08sT0FBQTtJQUZMLE1BQUE7R0FHZ0M7WUFNbENFLGlCQUFpQnhxQztJQUVkO0tBREQ2SztPQUNDLGtDQUZjN0s7O1VBRWlCLGtDQUZqQkE7SUFJbkIsY0FBd0I3UDtLQUNwQixXQS9oQ0FvZTttQkFpaUN5QzBDLElBQ2hDLE9BcmlDVGl5QixTQW9pQ3lDanlCLElBSHJCOWdCLE1BSWU7S0FEL0IsZUFBQTtnQkFBQTtLQUtHLFdBQUEsa0NBUmFBO0tBTWxCLE1BQUE7SUFFcUU7SUFSM0Usa0NBSEkwYTtJQUdKLE9BSElBO0dBWUM7R0FPSSxJQUFQNC9CO1lBRUFDLGFBQWExcUM7SUFDZixHQUFHLGlDQUhEeXFDO0tBSUEsTUFBQTs7SUFFQyxHQUFBLGlDQU5EQTtLQU9BLE1BQUE7O0lBUEFBLGNBcEJBRCxpQkFzQmF4cUM7O0dBTXdCO1lBRXJDMnFDLGtCQUFrQjNxQztJQUNwQixHQUFHLGlDQVhEeXFDO0tBWUEsTUFBQTs7SUFaQUEsY0FwQkFELGlCQThCa0J4cUM7O0dBR3dCO1lBRTFDNHFDO0lBQ0Y7S0FBRyxPQUFBLGlDQWhCREg7S0FnQkMsZUFBNkIsaUNBaEI5QkE7SUFnQjhCOztNQUMxQkk7aUJBQXdCNTVCO1NBQzFCLFlBbEJGdzVCOztVQXFCeUM7V0FBOUI1L0I7V0FBOEIsc0IsT0F0a0N2Q3E0QixTQWtrQzBCanlCO1dBQ3RCNjVCLGVBR2Msd0NBQVRqZ0M7O2NBSExpZ0M7U0FLSixjQXZCRkw7O2NBMEJXTTtVQUNILEdBVEZEO1dBUzRDO1lBQUEsc0IsT0E1a0NoRDVILFNBa2tDMEJqeUI7dUJBVUEsd0NBRGpCODVCOztzQkFSTEQ7Y0FLQUU7OztjQUFBQSxjQUxBRjtTQVdKLE9BTklFLGtCQU5zQi81QjtRQVlnQjtLQS90QzVDdXdCO1VBa3VDTyxrQ0E5a0NManpCLFFBK2pDRXM4Qjs7O0dBZThEO1lBRWxFSSxXQUFXanJDO0lBQ1AsWUFBQSxrQ0FET0E7O0tBR1QsTUFBQTs7SUFFYTs7S0FESDBLO0tBQU52YTtLQUNBUSxTQUFTLGdDQURIK1o7SUFDTi9aO0lBUU8sSUFBUDBELE9BQU8sb0NBUlAxRDtJQTNyQ0o0eEMsK0JBMHJDSXB5QyxNQVNBa0UsT0Fuc0NKa3VDOztHQW9zQ3VFO0dBRzNFOzs7Ozs7Ozs4QkF6dkNFbkI7OzRCQUFBQTs7OztlQUNBQzs7Ozs7Z0JBQUFBOzs7OztpQkFDQUM7Ozs7O2tCQUFBQTs7Ozs7bUJBc3NDQW9KOzs7OztvQkFRQUM7Ozs7O3FCQTFzQ0FqSjs7Ozs7c0JBa3VDQXVKOzt5Q0FBQUE7SUFnQkFDOzs7O3FCQUdrQmxyQyxHQTV2Q2xCbWhDLG1CQTR2Q2tCbmhDLGFBQXdCOzs7O0lBbUNuQixJQUFpQmtoQyxnQkFBTkQsaUJBQUxyeUI7SUFBbUIsT0FoeUNoRG95QixRQWd5QzZCcHlCLEtBQUtxeUIsTUFBTUM7R0FBOEI7R0FBeEUsa0NBdENFZ0s7WUF3Q0FDLGFBdElBZixvQkFiQTdVLDhCQXFKa0I7R0FHcEI7Ozs7O1lBdnhDRTBNOzs7Ozs7O3FCQXEyQ2tCamlDLEdBdDJDbEJnaUMsa0NBczJDa0JoaUMsYUFBdUM7Ozs7OzJCQXgyQ3pEK2hDOzs7O3NCQXMyQzRCL2hDLEdBcjJDNUJtN0IsZ0JBcTJDNEJuN0IsYUFBcUI7Ozs7OzZCQXgyQ2pENmhDOzs7O3NCQWsyQ2tCN2hDLEdBajJDbEI4aEMsc0JBaTJDa0I5aEMsYUFBMkI7Ozs7Ozs7NEJBTDlCLE9BNU1mb3FDLHFCQTRNc0U7Ozs7Ozs7NEJBTGhELE9Bdk10QkEscUJBdU11RTs7Ozs7OztxQkFKckRwcUMsR0F4MUNsQnloQyxzQkF3MUNrQnpoQyxhQUEyQjs7Ozs7OztZQTExQzdDdWhDOzs7OzthQUtBSzs7Ozs7Y0FEQUQ7Ozs7Ozs7YUFpMUNNOzs7WUFFNEM7Ozs7Ozs7NEJBaEJuQixPQXRML0J3SSxZQXNMNEM7Ozs7Ozs7NEJBRnRCLE9BcEx0QkEsWUFvTG1DOzs7Ozs7OzRCQUZKLE9BbEwvQkEsWUFrTDRDOzs7Ozs7OzRCQUZ0QixPQWhMdEJBLFlBZ0xtQzs7Ozs7OztZQXZMbkM1VTs7Ozs7NkJBb0xzQixPQXZLdEI2VSxtQkF1SzBDOzs7Ozs7OzRCQVBwQixPQWhLdEJBLG1CQWdLZ0Q7Ozs7Ozs7NEJBSDFCLE9BN0p0QkEsbUJBNko4Qzs7Ozs7Ozs0QkFKeEIsT0F6SnRCQSxtQkF5SjhDOzs7Ozs7OzRCQUZwQixPQWxLMUJGLGlCQWtLdUM7Ozs7OzRCQWpCdkNpQjs7MkJBQUFBOzs7O3VCQWVrQm5yQyxHQXJLbEJpdEIsZ0JBcUtrQmp0QixhQUFxQjs7Ozs7Ozs7O1VBTGpCLE1BQUE7O1NBQXFEOzs7SUFOM0VvckM7Ozs7OztVQUdzQixNQUFBOztTQUFvRDs7O1lBbUYxRUMsU0FBVzU4QjtJQUNiLEdBRGFBO1NBQWtCQyxNQUFsQkQsUUFBQTY4QixvQkFBa0I1OEI7O1NBQWxCNDhCLG9CQXRGWEY7SUF1RmdCLFdBQUEsaUNBOTNDaEI3MUM7SUE4M0NnQixPQUFBLDhCQURMKzFDO0dBQ21CO1lBRTlCQztJQUNGO0tBQUlDLFFBQVEsbUNBbDRDVnpLO0tBbTRDRXhyQyxPQUxGODFDO0tBTVEsT0FBQSw4QkFETjkxQztJQUNKLGdDQWpQRTIwQyxXQStPRXNCO0lBektGWjtPQTdzQ0FoSjtLQXVxQ0Y7c0JBQWtDM3dCLElBQzlCLHlDQUQ4QkEsT0FDRjtLQURKLGtDQXZoQ3hCMUM7S0E0dUNGOztPQTczQ0FvekI7S0FtbEJGO01BQUlqTTtNQUNBaVA7TUFDQXFCO1FBOUpGRCx3QkE0SkVyUSxNQUNBaVAseUJBSEE5ZTtRQXhsQkZ1YixtQkFpbUJBO0tBQUE7c0JBQ29CbndCLElBQU0seUNBQU5BLE9BQTRDO0tBQWxFLGtDQU5JKzBCOztRQTVsQkY1RTtNQW9tQkE7U0FubUJBQztPQXFtQkU7Ozs7S0FpeUJGOztrQkEzUEFyVTs7S0E4UEUsbUNBOTRDRitUO0tBODRDRSxPQUFBOztJQUdBLElBREd6d0MsaUJBQ0gsVUFsUUYwSTs7U0FvUVdzYixnQkFGTGhHLFNBRUtnRzs7S0FFRyxjQUFBLCtCQUxUaGtCOztVQU1VbWtCLGtCQUFBRSxNQUFBRjs7TUFFSCxtQ0F4NUNac3NCLFVBZzVDS3p3QztVQU1VcWtCLE1BS0g7O1NBVk5yRyxTQUtTcUc7O2tCQW41Q2Z3c0I7O1NBMjVDcUR4VyxtQkFqWVI4Z0IsY0FBWjlrQixlQWlZb0JnRTs7U0FqWVI4Z0IsY0FBWjlrQixlQW1YNUJyMkI7O0tBbFhVbzdDLFdBZ0hmemU7S0FoSEMwZSxpQkFtSERwVztLQXBIdURxVyxnQkFnSHZEM0I7SUE5SmlCLHFCQUFrQixJQUFROTRDLGNBQUFBLG1CQUFxQjtJQUE3QixrQ0FGakM0NEM7SUFrREosY0FDaURucUMsR0FBSyxPQUFBLFdBQUxBLE1BQVM7SUFBaEQsV0FBQSxpQ0EvRFJpcUM7SUErREY7SUF2RUVIO0lBeUVpQjtLQUFmbUM7S0FFQUM7Y0FQcURGOzs7bUJBWTFDaCtCLFNBQVN4ZCxLQUFrQnU5QjtXQUM5QixPQWhGVmdjO29CQXdFRWtDO29CQVNVOzswQkFGQ2orQjtzQkFBU3hkO3NCQUFBQTtzQkFBa0J1OUI7O1VBRzhCO0tBSXBFb2U7O2lCQUdPbitCLFNBQVN4ZCxLQUFrQnU5QjtTQUM5QixPQTFGTmdjO2tCQURBRDtrQkE0RlE7O3dCQUZDOTdCO29CQUFTeGQ7b0JBQUFBO3dCQUFrQnU5Qjs7UUFHcUM7SUFNMUMsU0FwUkovdEIsRUEwQnVCdFA7S0FDcEQsV0FIRWc1QyxnQkE2TmlDM2lCO0tBek5iO01BQWxCd0Y7UUFBa0Isa0NBRjhCNzdCLHFCQUFBQTtNQUdoRGc3QixpQkE0a0JJaGQsUUFwWDJCcVk7TUF2TjdCLE9BQUEsK0JBRkZ3RixjQUNBYjs7TUFHZTs7T0FEZ0NLO09BQWZGO09BQWhCdWdCO09BQ1pDLFdBQVcsK0JBRGdDdGdCO01BRXhDLEtBQUEsK0JBd2tCSHJkLFFBemtCQTI5QjtPQUl5QjtRQUFBLE9BQUEsK0JBcWtCekIzOUI7UUFya0JBLE9BQUEsK0JBSkEyOUI7T0FJeUIsT0FBQSxXQXREL0JqRCxpQkFpRGtDdmQsZUFMZ0JuN0I7Ozs7UUFXeEMsa0NBTlEwN0MsZ0JBc05lcmxCO1dBQVk4a0I7T0E1TXpDOztnQkE0TTZCOWtCO2dCQXROQzhFO2dCQWExQjs7a0JBYnlDRTtrQkFsQmpEMGQ7c0JBa0JrQjJDLGdCQXNOZXJsQjtNQS9NN0IsV0FkSjJpQixnQkFPa0IwQztNQVFkLGVBUmNBLGdCQUFnQnZnQixlQUFlRTs7OztNQXVCdkIsTUFBQTs7VUFSYXVnQixnQ0FBZkM7TUFDdEIsT0FBQTtlQWpFRm5ELGlCQWdFdUNrRCxtQkFwQlc1N0MsVUFvQjFCNjdDOztTQUtJQyxrQ0FBUHo0QjtLQUVuQixlQUZtQkEsT0FBT3k0Qjs7Z0JBbDFCNUIzSzs7S0FteUJXO01BRE4xVTtNQUVPc2YsVUFERDtLQVpiO01BY2MsY0FBQSwrQkFIUHRmLElBcW1CQXo4QixJQW5tQk8rN0M7O1dBWlp0b0MsSUFPMkJuRSxFQUtmeXNDOzs7O1FBR21CSDtRQUFoQkk7UUFmZnZvQztVQWdCVTtZQTNCVmlsQyxpQkEwQitCa0QsbUJBZ21CMUI1N0MsVUFobUJVZzhDOztXQVpMMW5DO1VBQUExUyx3QkFBQTBTO01BTEtza0MsZ0JBY0htRDtNQVBWLE1BQUEsNEJBRlFuNkM7O0tBTEtnM0MsZ0JBY0htRDtTQThRUkUsMEJBMVJKeG9DOzs7U0EwUkl3b0MsMEJBblJ1QjNzQyxFQXdtQnRCdFA7SUFsVkwsU0FISWk4Qzs7Z0JBQUFBO01BSThCNWdCO01BQWZGO01BQWIrZ0I7S0FBb0M7O09BRWhDeGdCO1NBMURWZ2U7V0F4REFULGdCQWdIa0M1ZDtXQWxDRGhGO1dBTS9CUDtXQUNBMGxCO1dBWUFDO1dBbEJESjtPQTRCNEI3ZixRQU9uQkU7T0FQSXlnQixrQkFLS2hoQjtPQUxqQjNGLGFBS0kwbUI7O1dBUUc1Z0I7VUFBQWxZLDBCQUFBa1k7TUFBUyxLQXpDakIrZixrREF5Q1FqNEI7O09BYm9Cb1ksUUF0ZTdCZ0osaUJBbWZTcGhCLEtBMFVIcEY7T0F2VlFtK0Isa0JBS0toaEI7T0FMakIzRixhQUtJMG1COzs7OztnQkFKRkQ7TUFnQks1NEI7TUFGTys0QjtLQUFvQixHQTNDbkNmOztPQTRCNEI3ZixRQTNlN0JvYyxtQkE0ZlN2MEIsT0FzVUhyRjtPQXZWUW0rQixrQkFlRUM7T0FmZDVtQixhQTdCK0JhOztNQWdEUDtPQUFBLE9BQUEsb0NBRmpCaFQ7T0FFTCxPQUFBLHFDQW1VQ3JqQjtPQW5VRCxPQUFBLFdBQ0csbUNBSEVxakI7O09BakJvQnNZO09BQWYwZ0I7T0FBWnhtQjtPQUEyQjJGLFFBQUFHO09BQWZ3Z0Isa0JBQUFFO09BQVo3bUIsYUFBQUs7O2tCQXNCMEM3MUI7S0E5RjVDO01BQW1DLElBQVFhLGNBQ3ZDLFFBRHVDQTtrQkFFN0I7VUFDSDRTO01BSGdDNVM7TUFLckIsV0FBQSxXQUxxQkEsTUFHaEM0UztNQUVILGVBTG1DNVM7S0FLTjtLQUxyQjtNQUFBLE9BQUEsaUNBTGQ0NEM7TUFvR0k2QyxXQS9GNkI7S0FnR2pDO01BRTBCO09BQVN6aUI7T0FBSG5xQjtPQUN2QixPQUFBLDZDQUR1QkEsUUFBR21xQjtNQUMxQixPQUFBO0tBQXVEO0tBRDNEO01BQUEsT0FBQSxrQ0FIRHlpQjtNQUdBLE9BQUEsV0FFRztLQUZILE9BQUEsaUNBSnNDdDhDO0lBTWI7SUFOakMsaUNBL2pDRTB4QztJQXVrQ3dCO0tBQXRCNks7OztTQXBOSSxJQXBIcUI3c0MsSUFvSHJCLGlDQTRnQkQxUDtrQkEvbkJIdzhDLEtBQUtDO1VBQ29CLFdBQUEsa0NBRHBCQTtVQUNvQixPQUFBLGtDQUZBL3NDO1NBRXVDO1NBRXBFO1VBQUEsT0FISThzQztVQUdKLGVBSElBO1NBb0hEO1VBQzBCLGVBQUEsK0JBMGdCdEJ4OEM7VUExZ0JMOztTQUFBLE9BdEgyQjBQOztLQXlVekJndEMsWUFBWSx1QkF1VFQxOEMsSUE5M0NMMnhDO0tBNmtDRWdMLGdCQXRJRnZEO09Bc0lFdUQ7S0FHWTswQkFWWko7O01BVVksV0FUWkc7OztXQURBSDs7OzZDQUFBQTthQUFBQTtLQVFFOztPQWhsQ0oxUjtPQStrQ0U4UjtPQWtUSTMrQjs7T0FERGhlOztPQXRWSHcxQjs7U0FnQ0FvbkI7OztLQUdLLEdBQUEsNkJBSkxGLFlBSTJDLGdCQUozQ0E7U0FDQUU7O2NBN0RxRHRCO1lBQUFBOzs7O29CQTZFWnZmO1lBQzNCLElBQU5uN0IsTUFBTSwrQkFEMkJtN0I7WUFFckMsU0FsRHVCUDtpQkFtRGhCSCxNQW5EZ0JHO2FBbURULGdDQUZWNTZCLEtBRUd5NkI7OztpQkFDQUssUUFwRGdCRjthQW9EVCxnQ0FIVjU2QixLQUdHODZCOztZQUlQLElBSEltaEIsV0FyRG1CcmhCLGtCQXdEdkIsV0FISXFoQjswQkFHaUIsOEJBUGpCajhDO1dBT3NEO1FBUjlELDRCQTVFYXc2Qzs7Ozs7b0JBc0YyQnJmO1lBQ3BDLE9BQUE7O3FCQURvQ0E7eUJBMUR4Q3ZHLFlBQVkybUIsaUJBQWUzZ0I7O1dBNkRBO1FBSDNCLDRCQXRGYTRmOzs7OztvQkEyRjRCcmY7WUFDM0IsSUFBTm43QixNQUFNLCtCQUQyQm03QjtxQkEvRGRQO2FBbEg3QjtjQUZnQm5ILEtBb0hhbUg7Y0FsSDdCO2dCQUFBO2NBREU3YjtnQkFDRixXQUNHO2NBa0xPMGIsVUFoTFosOEJBSkkxYixVQURjMFU7O2FBNUJoQjtjQUZnQmhGLEtBa0phbU07Y0FoSjdCLE9BQUE7Y0FERTliO2dCQUNGLFdBQ0c7Y0FnTk8yYixVQTlNWiw4QkFKSTNiLFFBRGMyUDtZQW9OVixTQURJZ007YUFFVTtjQUFQSyxRQUZITDtjQUVVO2NBQWdCO2dCQUFBO3FFQUF2Qks7YUFBTyw2QkFIVjk2Qjs7O2FBSVU7Y0FBUCs2QixRQUhITjtjQUdVO2NBQWdCO2dCQUFBO3NFQUF2Qk07YUFBTyw2QkFKVi82Qjs7WUFLSixPQUFBLDhCQUxJQTtXQUtpQztRQU56Qyw0QkEzRmF3NkM7Ozs7S0FxR29DO01BSHpDckIsT0FuRzZDdUI7MEJBMkRyRGlCO01BMkNpRCxXQUh6Q3hDOzs7V0F4Q1J3Qzs7OzZDQUFBQTthQUFBQTtLQXlDQTs7T0FqbkNGMVI7T0FraENFMFE7T0ErV0l2OUI7O09BRERoZTtPQWxYVW83QztPQTRCYjVsQjs7O09BZ0NBb25CO2dCQTVrQ0ZwTDs7Ozs7Ozs7O2dCQTRrQ0VvTDs7ZUErQ0Y7O2dCQTNuQ0FwTDs7b0JBREFEO2dCQW00Q0t2eEM7Z0JBdlRIMDhDOztjQWdERjs7R0F3UitDO1lBaUIvQ0ksWUFBWUMsZ0JBQWdCQyxZQUFZQztJQUMxQztLQUNnQzs7O1NBQ2xCLE1BQUE7O1FBQWtEO01BRGhDLE9BQUEsOEJBRkZEO0tBRTVCO3lCQUZZRCw0QkFBNEJFO0tBRXhDOzs7OztVQUlRaCtCO01BQ04sbUNBRE1BO01BQ04sT0FBQTs7O1NBRU9pK0I7S0FDUCxtQ0FET0E7S0FDUCxPQUFBOztHQUNhO1lBRWZDLHlCQUEwQnJDLGlCQUFpQkksT0FBTXhlO0lBQ25EO0tBQUlzZ0IsYUFsRUZqQyxhQWlFMEJEO0tBRVYsT0FBQSxtQ0FGaUNwZTtLQUU3QyxVQUFBOzs7OztNQUVDO09BRG9CMGdCO09BQVpDO09BT1hDO09BTkcsT0FBQSxpQ0FEb0JGO01BQ3BCLEdBQUE7T0FDdUI7UUFBQSxPQUFBLGlDQUZIQTtRQUVuQkcsc0JBQXNCO09BbEI1QlQsWUFrQk1TLHFCQUpKUCxZQUR5QzlCO09BdE8zQ1o7T0FyWEksV0FBQSxtQ0E4bEJTK0M7O1FBNWxCWDs7U0FEK0NoaUI7U0FBZkY7U0FBaEJ1Z0I7U0FDaEIsVUFuMkJGN0s7O2FBdzJCV3JiO1NBQ0gsV0E1Q1J3akIsZ0JBMkNXeGpCO1NBRUE7VUFSc0NnRztZQVF0QyxrQ0FST2tnQixnQkFNUGxtQjtlQU5zQzZGO2VBVXZDOztnQkFWdUNBO2dCQWhEakQwZDtvQkFnRGtCMkMsZ0JBTVBsbUI7VUFMTGtHLFFBRDJDRjs7YUFJekMsV0F6Q1J3ZCxnQkFxQ2tCMEMscUJBQ1poZ0IsUUFEMkNMOzBCQUEvQnFnQixnQkFBZ0J2Z0IsZUFDNUJPOzs7OztTQXVCdUI7VUFBQSxXQUFBLCtCQXFrQmhCMmhCO29CQXJrQlg7O1NBTDJCO1VBREx4QjtVQUNLLFdBQUEsK0JBMGtCaEJ3QjtvQkExa0JYLDBDQURzQnhCOztTQVVBO1VBRkh4NEI7VUFFRyxPQUFBLG9DQUZIQTtVQUVuQixPQUFBLHFDQWlrQldnNkI7VUFqa0JYLE9BQUEsV0FBaUQsbUNBRjlCaDZCO29CQUVuQjs7O1FBbWlCMkJzWTtRQUFmd2dCO1FBQVp0bUI7T0FDSjtRQUVjO1NBQU4ybkIsUUF4ZE52RSxnQkFxZDZCdGQ7U0FJdkJwRyxZQUFZO1NBQ1o2UDtTQUNBaVA7U0FDSjtXQXBhRnFGO2FBZ2FNOEQsT0FISjNuQixjQUlJTixXQUNBNlAsTUFDQWlQO1NBTEpvSjs7YUFRR25pQjs7U0FBQWxZLDBCQUFBa1k7U0FSSG1pQixRQWoxQkZqWixpQkF5MUJLcGhCLEtBQWtDLCtCQVRWdVk7Ozs7bUJBV21CSTtXQUM5QyxPQUFBOztvQkFEOENBO3dCQVg5Q2xHLGNBQVlzbUIsaUJBQ1pzQjs7VUFXd0U7T0FEL0IsZ0NBMEJ6Q0g7T0FGQSxPQUFBOztXQUx1QkY7T0FPcUI7O1NBQTdCLGtDQUFmRTtjQUE0QyxrQ0FBNUNBOztPQXZCRlIsWUFhaURwZ0IsT0FDL0NzZ0IsWUFEeUM5QjtPQVl6QyxNQUFBOzs7O0lBRUEsbUNBZHlDQTtJQWN6QyxPQUFBO0dBQ2E7WUFrQmZ3QztJQUNGO0lBQUE7Ozs7TUFHSSxHQUFBO09BRU07Ozs7Ozs7OztRQW5CUjtTQUZFdjhDO1NBQ0ErNUMsUUFDRixtQ0FuOUNBeks7U0FxOUNFa04sT0FBTyx1QkFKUHg4QztTQUtRO1FBQVosaUJBREl3OEM7UUFDSixXQUxJeDhDLFdBS0o7O2FBQ0FnWjs7VUFDRTtXQUFBLE9BREZBO1dBQ2M7VUFBWixpQkFIRXdqQyxNQUVKeGpDLE9BQUFBO1VBQ0UsV0FERkE7c0JBQUFBO2NBQUFBOzs7UUFHQTtTQUFBOztZQUM4QixJQUFXdzJCLGlCQUFMcGlDO1lBQzlCLFdBRDhCQSxLQUFLb2lDO1dBQ0M7U0FGdENxSztXQUNGLGtDQW5MQUY7UUF1SkFxQyx5QkEyQkVuQyxtQkFSQUUsT0FHQXlDOzs7O01BcEZGMUM7O0tBMEdBLFdBQUE7S0FBQTs7VUFDRzNmO1NBQUFsWSwwQkFBQWtZO0tBQ0gsbURBREdsWTtLQUNILE9BQUE7O0dBQ2E7WUFFYnc2QjtJQUNGO0tBQUkxQyxRQUFRLG1DQWovQ1Z6SztLQWsvQ0UvVCxRQUFKO0lBQ0EsSUFBSSxXQXBERnlnQiw0QkFrREVqQyxPQUNBeGUsUUFDQTtVQUNDcEI7U0FBQWxZLDBCQUFBa1k7S0FDSCxtREFER2xZO0tBQ0gsT0FBQTs7R0FDYTtZQUVieTZCLGdCQUFZLE9BeitDWnBNLFVBeStDbUI7WUFFbkJxTTtJQXQvQ0FoTjtJQUNBQzs7R0F5L0NrQztZQUVsQ2dOO0lBMS9DQS9NOztHQTAvQzBEO1lBQzFEZ047SUEzL0NBaE47O0dBMi9DNEQ7WUFDNURpTixjQUFjNXVCO0lBQUs7OztLQXQwQm5CZ007T0F4RUEyYztTQTg0QmMzb0IsSUEzMEJEO0lBS04sT0FBUGdNO0dBczBCbUM7Ozs7T0FoZ0RuQ3FWOzs7UUFzREVuM0I7UUFLQXFZO1FBVUFzZ0I7UUFJQUU7UUFFQUM7UUFLQUc7V0FxQkF2YztPQWtURmlmO09Ba0JBTTtPQUxBRDtPQXNqQkErRDtPQU1BRTs7O1FBK0JBLElBbkJXMzRDO1FBcEJYdzRDLFlBbUJFSSxXQUNTNTRDO2lCQXNCVHF4QyxJQUFJcGdDLEdBdEJLalIsV0FzQkxpUixhQUFvQjttQkFBeEJvZ0M7O09BNGRGd0w7T0FnQkFFO09BUUFDO09BVUFJO09BbHdCQXhGO09BMHZCQXFGO09BTUFDO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHS3RnRFU7Ozs7Ozs7SUFBVmdJOzs7OztJQUdnQyxtQkFBaUJDLEdBSGpERCxpQkFHaURDLGFBQXNCO0dBQXpFOzs7Ozs7SUFRSyxZQUNTO1FBQ0hDO0lBYlRGLGlCQWFTRTs7R0FBMkI7R0FId0IsVUFBQTtHQUE5RDtZQU1FQztJQUNGLFlBakJFSDtnQkFrQlE7UUFDSEU7SUFDTCxJQUFNLElBRUpFLElBRkksOEJBRERGOzs7MkJBRW9CLGVBRnBCQTs7O0lBRzRCOztPQUFBOztTQUg1QkE7U0FHSEU7d0NBSEdGLE9BR0hFO0lBQUssZUFBTSw4QkFIUkYsUUFHSEU7R0FBa0Y7cUNBTnBGRDs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztHQ0hrQjs7Ozs7Ozs7SUFrSE5FO0lBR1pDOzs7Ozs7Ozs7O0lBbUNBQzs7Ozs7Ozs7Ozs7Ozs7SUF4SkFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFQUMsdUJBQXVCQyxHQUZ2QkYscUJBRXVCRSxZQUF3QjtHQUkvQyw4QkFOQUYsaUNBTXdDO0dBRDFDOztHQUlFLDhCQVRBQSxpQ0FTc0Q7R0FEeEQ7Ozs7OztJQVNLLFlBQ1M7SUFFUixJQURLRyxlQUlIQyxJQUpHRDtnQ0FJSEM7O2dCQUFBQTtnQkFDQSxtQ0FMR0QsYUFJSEM7aUJBdkJOSjtlQUFBQTtHQTBCVTtHQVZjO0lBQUEsTUFBQTtJQUFYLE1BQUE7R0FEZjs7SUFpQkssWUFDUztJQUVSLElBREtHLGVBS0hDLElBTEdEO2dDQUtIQzs7Z0JBQUFBOztrQkFBQUE7a0JBQ0EsbUNBTkdELGFBS0hDO21CQXZDTko7aUJBQUFBO2VBQUFBO0dBMENVO0dBWEcsVUFBQTtHQURmO1lBZUVLLFdBQVdDLEtBQUlDO0lBQ2pCLE9BOUNFUDs7Ozs7Ozt1Q0E2Q1dNLFVBQUFBLFlBQUlDLFNBQUpEOztnQkFBQUE7Ozs7Ozs7OztvQ0FBQUEsVUFBQUE7OztzQ0FBQUEsVUFBQUE7cUJBQUlDOzBDQUFKRCxVQUFBQTtvQkFBQUE7Ozs7bUJBQUFBOztnQkFBQUE7Ozs7T0FJVzttRUFKUEM7T0FJTzs7R0FBa0Q7WUF3Q3hFQztJQUFlQyxLQUFLSCxLQUFLSSxhQUFVQyxPQUFNQyxRQUFPQyxNQUFLQztJQUN2RCxHQUQyQko7U0FyQldLLE1BcUJYTCxnQkFyQkNNLFlBQVVEOztTQUFWQyxZQXFCTlY7O0tBcEJsQlcsV0FvQmtCWDtLQW5CbEJZLE9BbUJrQlo7S0FsQmxCYSxZQWtCa0JiLFlBQUFBO0tBakJsQmMsVUFKd0JKLGtCQXFCTlY7Y0FBcUJNO1FBQU5EO1VBdENIVSxNQXNDR1Y7OztXQXRDSFcsSUFBQUQ7T0FDbEM7b0JBRGtDQzs7Ozs7ZUFBQUMsZ0JBQUFELElBQUFDOzs7OztNQUt4QixJQUFKbkIsSUFBSSxnQ0FMd0JrQjs2Q0FLNUJsQjtPQUdjO1FBQVZvQixVQUFVLDJCQUhkcEI7UUFDQXFCLE1BR0Esc0JBRElEOztXQUZKQyxNQURBckI7TUFPSjtPQUFBLGdCQUVJc0IsR0FGYyxjQUVkQSxTQUFBQSxFQUFPO09BRk8sT0FBQSw0QkFOZEQ7T0F1Qm1CLE9BQUE7Y0FBUDs7OztTQVBkRSxRQUtBLHVDQVdrQnJCOzs7cUJBQXFCTTtVQWJqQ2dCLE1BYWlDaEIsV0FiakNpQixNQUFBRDs7O09BREd6QixLQWM4QlM7T0FiakNpQixNQURTLHVDQWNHdkIsS0FkVEg7U0FGVHdCLFFBR01FOztJQVVUO0tBSXFDQyxZQUpyQyx1Q0FHcUJ4QixLQWpCbEJjO0tBa0J1QlcsY0FMMUIsdUNBSXFCekIsS0FsQmxCYTtLQW1CaUJhLFNBTnBCLHVDQUtxQjFCLEtBbkJsQlk7S0FvQk9lLGFBUFYsdUNBTXFCM0IsS0FwQmxCVztLQXFCQWlCLFVBUkgsc0NBT3FCNUIsS0FoQmxCcUI7S0FzQjJDLE9BQUEsdUNBTnpCckI7S0FNWSxPQUFBLDBCQU5nQk87S0FJOUM7OzJDQUprQlAsT0FBQUEsVUFBQUE7O2tCQUNsQjRCOzttQkFLbUIsdUNBTkQ1Qjs7b0JBQ1gyQjs7cUJBQVVEOztzQkFBTUQ7MEJBQVdELHVCQURpQmhCO0tBRzFCLE9BQUEsc0RBSFpMO0tBR0MsT0FBQSx1Q0FISUg7S0FFbEI2QixPQUNGLHNDQUhvQjdCO0lBYXRCLE9BekRFRCxXQTRDb0JDLEtBRWxCNkI7R0FXZTtHQWFoQjtJQUFBOzZEQURXdEM7WUFtQlp1Qyw2QkFBOEJyQyxzQkFBc0JPLEtBQUtPO0lBQzNEO2dCQXRJRWI7OztLQTBHc0IsY0FBQTtLQUFBOzs7O0tBOEJ0QixtQ0FIb0RNLFdBQXRCUDtrQkFNVHNDO0tBWmhCOztRQUFBLHlCQVZMdkMsVUFzQnFCdUM7O2VBVmYsaUNBWk52QyxVQXNCcUJ1Qzt3QkFFVjtTQUNIQztLQUNOLEdBRE1BO1VBR0dDLFNBSEhELFNBQ0ZFLFNBRWEsNkJBQVJEOztVQUZMQztLQUlKLE9BQUE7O2tCQWRrRGxDOztjQUF0QlA7Y0FNVHNDO2NBSWZHO0lBSzJFO0lBVGpFLE9BQUEseUJBTnlDM0I7R0FnQjFEO1lBS0M0QixZQUFhbkMsWUFBa0JILElBQUlVLE1BQUtTO0lBQ2hDLElBQU5vQixZQURXcEMsUUFBQUE7SUFyQmI4Qiw2QkFtQkFyQyxzQkFHRTJDLE9BRGlDN0I7V0FqRW5DTDs7YUFrRUVrQzs7aUJBRHNDcEI7YUFBVG5CO2FBQUlVOzt5Q0FDakM2QixZQUFBQSxjQURzQ3BCO2NBQ3RDb0I7OztHQUdzQjtZQUd4QkMsaUJBQWtCckMsWUFBa0JILElBQUlVLE1BQUtTO0lBQ3JDLElBQU5vQixZQURnQnBDLFFBQUFBO0lBNUJsQjhCLDZCQW1CQXJDLHNCQVVFMkMsT0FEc0M3QjtXQXhFeENMOzthQXlFRWtDOztpQkFEMkNwQjthQUFUbkI7YUFBSVU7Ozs7O2dDQUN0QzZCLFlBQUFBOztxQkFEMkNwQixvQkFDM0NvQixZQUFBQTtnQkFBQUE7OztjQUFBQTs7O0dBSTBCO1lBRzVCRSxtQkFBb0J0QyxZQUFrQkgsSUFBSVUsTUFBS2dDO0lBQ3ZDLElBQU5ILFlBRGtCcEMsUUFBQUE7SUFwQ3BCOEIsNkJBbUJBckMsc0JBa0JFMkMsT0FEd0M3QjtJQU9wQztLQUFBLE9BQUEsdUNBTko2QjtLQUlzQixPQUFBLHdDQUp0QkE7S0FJQyxPQUFBLHNDQUpEQSxhQUQ2Q0c7S0FJbkIsT0FBQSx1Q0FIMUJIO0tBR0YsT0FBQSxzQ0FIRUE7SUFHRixPQXBGQWxDOzhCQWlGRWtDLFdBRDZDRyxVQUFUMUMsSUFBSVU7R0FPdEI7Z0JBYWJYLEdBQUssT0FBTEEsRUFBTTtnQkFEc0I0QyxHQUFFNUMsR0FBSyxPQUFFLFdBQVQ0QyxPQUFFNUMsT0FBVTtHQUFqQztJQUFBLE1BQUE7SUFBSixNQUFBO0lBRFksTUFBQTtJQUFOLE1BQUE7SUFBWCxNQUFBO0lBRGtCLE1BQUE7SUFBckIsTUFBQTtJQXNERlc7TUF6REE7O1lBbUJFa0Msa0JBQWtCWjtJQUNwQixJQUFBO2tCQU1tQlcsR0FBRUUsWUFBV0M7S0FDbkIsR0FEUUQsZ0JBaEJkOUMsSUFnQmM4QyxzQkFoQmQ5QztLQWlCNkIsT0FBQSxXQURqQjRDLEdBQWFHO0lBQytCO0lBZC9ELGNBR2NILEdBQUV4QixHQUFLLE9BQUUsV0FBVHdCLGtCQUFFeEIsSUFBZ0I7SUFEaUM7S0FBQSxPQUFBOzt3QjtJQUE5QjtLQUFBLE9BQUE7S0FBWCxPQUFBO0tBQWhCLE9BQUE7S0FBSixPQUFBO2tCQUR5QndCLEdBQU8sT0FBQSxXQUFQQSxjQUFjO0lBQXZDO1lBQUE7a0JBRHFCQSxHQUFFNUMsR0FBSyxPQUFFLFdBQVQ0QyxtQkFBRTVDLElBQW1CO0lBQTFDO0tBQUEsT0FBQTtLQUFKLE9BQUE7S0FBQSxPQUFBO0tBRUksT0FBQTtLQVVPLE9BQUEsaUNBZ0NYVztLQWxDWSxPQUFBO0tBRFIsT0FBQSwwQ0FIZ0JzQjtLQUVNLE9BQUE7S0FEcEIsT0FBQTtLQUFELE9BQUE7SUFBQSxPQUFBO0dBVUs7R0FLUjtJQUFBLE1BaEJBWTtJQWFBRztNQUNGOzs7OztRQTlEQVQ7SUFzRUUsTUF0QkFNO0lBbUJBSTtNQUNGOzs7OztRQTdEQVI7SUFxRUU7TUE1QkFJO1FBNEJvQjtJQUhwQks7TUFDRjs7Ozs7UUEzREFSO0lBZ0VFUyxVQWxCQUgsVUFNQUMsZUFNQUM7Ozs7Ozs7Ozs7SUFrQlk7O2dCQUFLOUM7UUFDTixZQUFBO1dBRE1BO1NBSWY7O1VBRHlCZ0Q7VUFBVEM7VUFBWGIsUUFIVXBDO1VBSWY7aUJBREtvQztpQkFBQUE7VUFJQ2M7OztvQkFFa0QsdUNBRmxEQSxPQUptQkY7O1VBR3JCRztZQTlNUnBEO2NBK01VbUQ7OztpQ0FBQUEsU0FBQUE7Ozs7a0JBRXdCLHVDQUZ4QkEsT0FKVUQ7O2VBSVZDOzs7VUFJQUU7VUFERkM7WUFsTlJ0RDtjQW1OVXFEOzs7aUNBQUFBLFNBQUFBOzs7O2tCQUV3Qix1Q0FGeEJBLE9BUlVIOztlQVFWRzs7O1NBSU4sV0FUSUQsUUFJQUU7O1FBUmlCO09BYUw7R0FqQnRCOztTQVZJTjs7Ozs7Ozs7Ozs7Ozs7OztPQXZPRnBEO09BbUlBbUM7T0F4RkEvQjtPQW1NQVE7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjtJLFc7RztHOztJLEksVyxvQjs7OztLOzs7O007SztLO0s7Szs7TTtNO007O0s7SyxXO0s7SyxPOztHOzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7SSxpQjtHOztJLHdCO0c7O0k7SSxPOztHOztJLFc7SSxPO0c7NEIsTyw2Qjs2QiwrQztHO0ksZ0I7SSxxQjtJLGlCO0ksc0I7O0ksbUI7O0k7Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0ksZ0I7Rzs7STtpQjtHO2dDLE8sb0M7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO2lDLE8sa0M7O0k7SztNLE87TSxPO0s7Ozs7O0s7TTtNOzs7Uzs7Ozs7Ozs7UztRO0s7Szs7O1MsRyxtQztTO1UsdUI7VTs7Ozs7O1U7Vzs7MEI7Vzs7OztrQzs7OztRO007Ozs7Ozs7O2M7Ozs7TTtPO087ZTtLO007UTtXOzs7O21COzs7Uzs7VTtVO1M7UyxPO1E7TSxPO0ssTzs7Rzs7SSxJLFcsc0M7Ozs7d0M7O0s7TSxHO08sTTtNLEksTzs7Ozs7TSxHO08sTTtxQjs7SztNLEc7TyxNO007TyxPO08sTzs7Ozs7O29COztLOztHOztJO0ssSSxXLDhCOzs7Ozs7Ozs7Rzs7STs7Tzs7STtHOzs7STs7Szs7TSxJLFcsd0I7OztrQzs7O0s7SyxPO0k7STtLO0s7b0I7TSxXOzs7O0k7STs7OztLOztLLE87STtJLE87Rzs7STtHOzs7STs7RztHLHNCOztJO0ksTztHOztJO0ssUTs7O0ssUztJLEk7OztLO0s7SyxNOztJO0k7Rzs7STtLLFE7OztLLFU7SSxJOzs7SztLO0ssTTs7STtJO0c7O0k7SyxROzs7SSxJLGM7OztLO0s7SyxNOztJOzs7SyxTO0ssVTtJO0s7Ozs7O0s7SztLO0s7SyxNOztJO0k7STtHOztJO0ssUTs7O0ksSSxjOzs7SztLO0ssTTs7O0ksSSxjOzs7SztLO0s7SztLLE07O0k7OztLLFM7SyxVO0ssVTtJO0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssTTs7STtJO0k7STtHOztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0ssVztLOzs7OztNLE07Ozs7Rzs7SSxPO0c7O0k7Rzs7STtHOzs7STs7OztJOzs7SSxJLG9CO0k7STtJO0c7O0ksSSxxQjtJO0ksSTs7Ozs7STtHOztJOzs7SztLO0k7STtJLEk7Ozs7O0k7OztJOzs7O0s7SztJO0k7SSxJOzs7OztJO0k7OztJLFc7STtLO0s7TSxPO00sVztLOzs7O0s7SyxNOztHOztJLE8sc0I7Rzs7SSxXO0k7STtJOztLO00sSSxZOzs7Ozs7Ozs7SyxrQixLOztlLHNCO007TTtPLFM7TyxVO007TTs7VSx1Qjs7RztzQjs0Qjs0QjtzQjs0Qjs7STs7c0I7NEI7NEI7c0I7c0I7c0I7c0I7c0I7c0I7c0I7NEI7NEI7NEI7NEI7NEI7O0k7OztJOztzQjtzQjtzQjs7c0I7c0I7c0I7NEI7c0I7c0I7c0I7c0I7c0I7c0I7c0I7OzZCO3VCOztJOzt1Qjt1Qjt1Qjs7Ozs7dUI7dUI7dUI7dUI7NkI7NkI7O0k7OztJOzs7Ozs7NkI7NkI7Ozs7Ozt1Qjt1Qjt1Qjs7dUI7dUI7dUI7dUI7O0k7OzZCOzZCO3VCOztJOzs7STs7NkI7NkI7dUI7O0k7OzZCOzt1Qjs7Ozs7OztROzs0Qjs0Qjs7Ozs7dUI7OzZCOzZCOztJOzs7dUI7dUI7dUI7dUI7O0k7O3VCO3VCO3VCO3VCOzZCO3VCO3VCOztJOzs2Qjs7STs7NkI7NkI7Ozs7Ozs7c0I7O3NCO3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O1lDM1BBK0MsbUI7Z0NBQUFBOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztZRzBCQUU7SUFDTSxJQUFKQyxJQUFJO0lBQ0wsT0FBQSwyQkFEQ0E7Y0FBQUE7Y0FUeUI7R0FVNkI7c0JBRnhERDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDOEJFRTs7SUFr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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUVJQyxXQUFXQztJQUFJLE1BQUEsNENBQUpB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S0FDO1NBU0FDO1NBVUFDO1NBTUFDO1NBT0FDO1NBTUFDO1NBT0FDO1NBRUFDO1NBTUFDO1NBT0FDO1NBWUFDO1NBVUFDO1NBRUFDO1NBTUFDO1NBRUFDO1NBTUFDO1NBQ0FDO1NBQ0FDO1NBU0FDO1NBU0FDO1NBWUFDO09Bck1JcGtCO09Ba0dKZ0I7T0FHSUM7T0F3U0p6QztPQWFBRztPQVVBRTtPQVVBRTtPQXhDQVg7T0FvREFpQjtPQWFBQztPQVlBRztPQTVCQU47T0FyTEkvQjtPQTJOQXNDO09BOVpKN0Q7T0FHQUM7T0FtQkFHO09BbUNBRTtPQTBEQUs7T0FmQUQ7T0FvQ0FFO09BMUpBakI7T0FpTUFrQjtPQUNBQztPQUNBQztPQWlEQWM7T0FVQUM7T0FNQUw7T0FtRUFZO09BNURBVDtPQWtFQVU7T0F4SElmO09Bb0VBYTtPQXRVSnNGO09BQ0FDO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEMsZTs7SztZO0s7Ozs7STs7Ozs7O0ssVTtNO007O29CO007TTs7Ozs7RztHOzJCLGdCOztJOztPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOzs7UTs7UTs7UTs7UTtnQjs7STtHOztJOzs7Ozs7Ozs7Ozt5Qzs7Ozs7OztHO0csSSxjOztJO0k7O0k7O0k7RztvQixZO21CLFk7dUIsWTs0QixtQjs4QixtQztnQywwQzs7STtHO3dCLGM7Rzs7STs7YztJO29CLHVCO0ksTztHO0csSSxnQjs7STtJOztLLG1COztLO0k7d0Isc0I7O0k7RztzQixZO3FCLFk7dUIsWTs7STtHOzBCLFc7OztJLE87Ozs7OztHO0k7Ozs7c0IsTyw0Qjt5QixPLHVDO3NCLE8sNEI7O0k7SztNLFE7OztNLE07TSxNO0s7Ozs7MkI7OztHOztJO2dDO0ksVTtJLE87Rzs7Z0MsTyxzQjtJLE87Rzs7O0ssZTtLO0s7STtJO0k7STtJO0c7Rzs7OEIsTyxtQixTOztJOztHO0c7STs7O1E7USxPO087STs0QiwwQjs4QixtQjs7O0s7SyxPO0k7STtJLE87Rzs7O0k7OztlOztJLE87Ozs7WTs7STtLO1M7Ozs7STthOztLLE87O1ksTzs7SSxPOzs7STs7OztJOzs7O0k7Ozs7O3lCLHFCLE8saUI7SyxPOzs7ZTs7Z0IsTTtnQixNO2UsTzs7Ozs7OztjO0k7STtHO0c7K0Isb0I7a0MseUI7RztnQyxxQjttQywwQjt3QixTOztJO0k7Z0IsTzs7OztLLE87OztJO0c7eUIsUztrQyxxQzsyQixpQzsyQixpQzs0QixpQzs0QixpQzs2QixpQzs7STtJLHFDOzs7NkIsMEI7Ozt5QixPLHdDOzs7STtJLHFDOzs7Ozs7O2MsTzthOzs7Z0Msa0M7b0Msc0M7dUIsc0I7dUIsc0I7d0Isc0I7d0Isc0I7eUIsc0I7O0s7SztNO0k7O0s7SztNO0k7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZRU1BdWhCLGFBQWFDLEdBcUJiQztJLEdBQUFBLG1CQXBCUSxPQUFBLDhCQURLRDtPQXFCYkM7S0FuQmEsT0FBQSw4QkFGQUQ7T0FxQmJDO1NBbEJRQyxJQWtCUkQ7S0FsQmEsT0FBQSwrQkFIQUQsUUFHTEU7O09Ba0JSRDtLQWpCYSxPQUFBLDhCQUpBRDtPQXFCYkM7S0FoQmUsT0FBQSw4QkFMRkQ7T0FxQmJDO0tB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QztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7O09BaElBakc7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FFQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FJQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FHQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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S0FBSWtDLE1BQU0sMkJBRDJCakUsR0FBRStCO0tBRW5DbUMsUUFBTyxXQUZTSCxXQUNoQkU7S0FFQXJILElBQUssc0NBRExzSDtLQUVBQyxPQUFNLGdDQUROdkg7SUFFSixPQUFBLFdBTDhCb0gsUUFBT2hFLEdBSWpDbUU7R0FDUTtZQUVWQyxtQkFBbUJDLFNBQVFDLFFBQU9uSSxJQUFHZDtJQUMxQixJQUFUa0osU0FBUztJQUNiLFdBRjZCRCxRQUN6QkMsUUFEbUNsSjtJQUczQjtLQUFSbUosUUFBUSw2QkFGUkQ7S0FHQU4sTUFBTSxvQ0FETk87S0FFQU4sUUFBTyxXQUxVRyxTQUlqQko7SUFFSixPQUFBLGdDQU5vQzlILElBS2hDK0g7R0FDeUI7Ozs7O09BNVAzQi9FO09Bc0NBc0I7T0FLQUU7T0E0RUFpQjtPQVlBQztPQW5GQWpCO09BVUFHO09BV0FDO09BT0FDO09BT0FDO09BSUFDO09BS0FDO09BR0FDO09BS0FDO09BR0FDO09BS0FDO09BR0FDO09BMkJBSztPQUlBRTtPQUlBQztPQUlBQztPQUlBQztPQUlBQztPQVFBRTtPQUlBQztPQVFBRztPQVNBSTtPQWdCQUM7T0FHQUc7T0FoQ0FWO09BWkFIO09BMEVBd0I7T0F6QkFWO09BVUFHO09BR0FFO09Bc0JBWTtPQVBBTjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7Rzs4QixPLHVDOztJLE87O0c7RyxXOzhCLE8sbUM7O0ksVztJLE8sK0I7Rzt5Qix1QixXLFM7O0ksSSxJOztLLFc7SyxxQjtLO2tCOzs7Rzs7SSxJLEk7O0ssSSxPLHVCLE87SyxxQjtLO2tCOzs7Rzs7STs7O00sVztnQjtPLE07O21CLGM7Ozs7Ozs0Qjs7O0c7O0k7O0ssUTs7Ozs7USxlO087Ozs7O0s7Ozs7Rzs7STtJOztPLE87TyxjO007O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHNCOzhCLGlDOztJO0k7OzhCLGlCLGtCOzs7UTs7NEIsTzs7UTs7O1EsTzs7USxzQztRLFM7Ozs7UTs7OztROzs7Z0I7OztHOztJO0k7Ozs7Ozs7Ozs7OzRCOzs7USxPOzs0Qjs7O1E7OztRLGtCLE87O1E7O1Esc0M7UTs7Ozs7Ozs7Ozs7O0c7eUI7O0k7STs7Ozs7O1MsbUM7Uzs7UyxtQztTOztTLGtCLE87O1M7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHLEksSTs7SSxVO0kscUI7STs7OztHO0ksa0I7Ozs7STtLLFc7SztLO0s7SztLOztLO007OztRLFk7UTs7Ozs7OztLLEk7Szs7O0k7O0s7SztLO0k7O0s7SztLO0k7O0ssSSxVLHdDOzs7OztpQjs7TTs7STs7SyxxQjs7aUI7O0s7STs7Szs7O1M7O1M7aUI7Ozs7O1E7MEM7OztRLGtCLFE7d0I7O1M7VSxRO1U7VTtVO1U7Ozs7Ozs7O2tDOzs7OzBCLDJCO1EsVTtRLCtCOztROzs7UztTO1E7MkM7OztRO3VCOzs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7O1M7Ozs7O1Esa0M7UTtRLEksNkI7UTs7UTtROztROztTO1M7dUI7UTt1QjtROztROztROztTO1M7UTt5QjtRO3lCO1E7O1E7O1Esb0I7UTs7UTs7O1E7UTtRO3VCOzs7O1E7dUI7OztJOztLLGtCO0s7SztJO0k7STtJLEksbUI7SSxHOzs7SyxRO0ssaUIsTyx3QjtpQzs7SSxJLGUsb0M7O0s7SztJO0k7Ozs7O0k7WTs7Ozs7O0c7O0ksUTtJOztvQjs7O3NCOzs7OztHO0c7O0ksb0M7O0ssSTtLO007OztnQjtvQjtPO1E7OztROzs7OztNOztJOztLLEksVTtLOzs7TyxrQztRO1MsTTs7Ozs7TyxVOzs7Ozs7Ozs7YTs7O2MsdUI7ZTtnQjs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7O2E7Ozs7O2MsVTs7Ozs7Ozs7Z0I7Ozs7Ozs7O2lCO2lCO2tCOzs7aUI7OzsyQjs4Qjs7OzsyQjs7OztlLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLGU7OztVLEksbUI7OztVLEksbUI7O1UsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O08sSTs7O007TSxJOztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7Rzs7SSxVOzs7Rzs7SSxVOzs7Rzs7SSxVOzs2QixNO0k7Rzs7SSxVOzs2QixNO0k7Rzs7STs7SztLLGUsTTtLOztJLE87Rzs7STs7SztNO007SyxlLE07Szs7SSxPO0c7O0k7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksRyxnQzs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOztJO0c7O0k7STs7Ozs7O007O08sb0I7O1E7UztTO1M7Ozs7aUI7Ozs7Ozs7TztRO1E7UTs7Ozs7Ozs7SyxPOztHO21DLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJb0JqS0FtZ0M7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBaEZBQyxZQUVBclU7SUFGYyxVQUVkQSw4QkFBQUEsVUFESzRDLElBQ0w1QyxNQURVLE9BQUw0QztJQUNBLE1BQUE7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QUNPO0lBQ0U7S0FBUEMsT0FBTztLQUVvQyxNQUFBO0tBQXhCLE1BQUE7SUFBckIsK0JBRkVBO0lBSTBCLFVBQUE7SUFBckIsK0JBSkxBO0lBSzBCLFVBQUE7SUFBckIsK0JBTExBO0lBTzJDO0tBQUEsTUFBQTtLQUF4QixNQUFBO0lBQXJCLCtCQVBFQTtJQVVLO0lBQ0E7SUFDQTtJQUVULGFBQ0VDO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7SUFBMEI7O0tBRVg7S0FDQTtLQUNBO0tBQ1Q7SUFBUTtJQUpaO0tBQUEsTUFBQTtLQUFBO0lBREY7SUFBQTtHQU9NO2dCQUVGQTtJQUFBO0lBQUEsT0FBQSxrQ0FBQUEsaUJBQUFBO0dBQXdCO0dBQUk7SUFBQSxNQUFBLHFDQTFCaENGO0lBMEJnQztHQUE1QjtHQUFBOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0NqQkE7R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4KSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4ID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeFtuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIFN5c1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvciAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5TeXNfZXJyb3IsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdCAoY29kZSkge1xuICBpZihnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KVxuICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uLCBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGNhbWxfY2FsbGJhY2soaGFuZGxlciwgW2VycixmYWxzZV0pO1xuICAgIGVsc2Uge1xuICAgICAgdmFyIG1zZyA9IGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgdmFyIGF0X2V4aXQgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIpO1xuICAgICAgaWYoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYoZXJyLmpzX2Vycm9yKSB0aHJvdyBlcnIuanNfZXJyb3I7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19zeXNfZ2V0ZW52IChjb25zdClcbmZ1bmN0aW9uIGpzb29fc3lzX2dldGVudihuKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAvL25vZGVqcyBlbnZcbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmVudlxuICAgICAmJiBwcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYociA9PT0gdW5kZWZpbmVkKVxuICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuYXJndlxuICAgICAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gcHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiKXtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbiAgICBpZihjaGlsZF9wcm9jZXNzICYmIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMpXG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8pIHtcbiAgICAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9IGVsc2UgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XG4gICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF94ZGdfZGVmYXVsdHNcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3hkZ19kZWZhdWx0cyhfdW5pdCkge1xuICByZXR1cm4gMDsgLy8gZW1wdHkgbGlzdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICBpZihwcm9jZXNzICYmIHByb2Nlc3Mub24pIHtcbiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBGTEFHKFwid2l0aC1qcy1lcnJvclwiKTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoXCJPQ0FNTFJVTlBBUkFNXCIpXG4gIGlmKHIgIT09IHVuZGVmaW5lZCl7XG4gICAgdmFyIGwgPSByLnNwbGl0KFwiLFwiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkrKyl7XG4gICAgICBpZihsW2ldID09IFwiYlwiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gMTsgYnJlYWsgfVxuICAgICAgZWxzZSBpZiAobFtpXS5zdGFydHNXaXRoKFwiYj1cIikpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSArKGxbaV0uc2xpY2UoMikpfVxuICAgICAgZWxzZSBjb250aW51ZTtcbiAgICB9XG4gIH1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgKF91bml0KSB7IHJldHVybiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfcmVjb3JkX2JhY2t0cmFjZSAoYikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IGI7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90OiBpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlKGV4biwgYnQpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfcHVyZV9leHByIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3B1cmVfZXhwciAoZikgeyByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfanNfc2V0KG8sZix2KSB7IG9bZl09djtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0IChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0KG8sZikgeyByZXR1cm4gb1tmXTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobyxmKSB7IGRlbGV0ZSBvW2ZdOyByZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19pbnN0YW5jZW9mIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2luc3RhbmNlb2YobyxjKSB7IHJldHVybiAobyBpbnN0YW5jZW9mIGMpID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc190eXBlb2YgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190eXBlb2YobykgeyByZXR1cm4gdHlwZW9mIG87IH1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZShyZXMpIHtcbiAgdmFyIGMgPSAxO1xuICB3aGlsZShyZXMgJiYgcmVzLmpvb190cmFtcCl7XG4gICAgcmVzID0gcmVzLmpvb190cmFtcC5hcHBseShudWxsLCByZXMuam9vX2FyZ3MpO1xuICAgIGMrKztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKSB7XG4gIHJldHVybiB7am9vX3RyYW1wOmYsam9vX2FyZ3M6YXJnc307XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19kZXB0aFxuLy9JZjogZWZmZWN0c1xudmFyIGNhbWxfc3RhY2tfZGVwdGggPSAwO1xuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfY2hlY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aFxuZnVuY3Rpb24gY2FtbF9zdGFja19jaGVja19kZXB0aCgpIHtcbiAgICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGgsIGNhbWxfY2FsbF9nZW4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9mcmVzaF9vb19pZCwgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF9jYWxsYmFjayhmLGFyZ3MpIHtcbiAgZnVuY3Rpb24gdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXIoZWZmLGssbXMpIHtcbiAgICAvLyBSZXN1bWVzIHRoZSBjb250aW51YXRpb24gayBieSByYWlzaW5nIGV4Y2VwdGlvbiBVbmhhbmRsZWQuXG4gICAgY2FtbF9yZXN1bWVfc3RhY2soa1sxXSxtcyk7XG4gICAgdmFyIGV4biA9IGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuVW5oYW5kbGVkXCIpO1xuICAgIGlmKGV4bikgY2FtbF9yYWlzZV93aXRoX2FyZyhleG4sIGVmZik7XG4gICAgZWxzZSB7XG4gICAgICBleG4gPSBbMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJFZmZlY3QuVW5oYW5kbGVkXCIpLCBjYW1sX2ZyZXNoX29vX2lkKDApXTtcbiAgICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoZXhuKTtcbiAgICB9XG4gIH1cbiAgdmFyIHNhdmVkX3N0YWNrX2RlcHRoID0gY2FtbF9zdGFja19kZXB0aDtcbiAgdmFyIHNhdmVkX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrO1xuICB2YXIgc2F2ZWRfZmliZXJfc3RhY2sgPSBjYW1sX2ZpYmVyX3N0YWNrO1xuICB0cnkge1xuICAgIGNhbWxfZXhuX3N0YWNrID0gMDtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOlswLCAwLCAwLCB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcl0sIHI6e2s6MCwgeDowLCBlOjB9fTtcbiAgICB2YXIgcmVzID0ge2pvb190cmFtcDogZixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBhcmdzLmNvbmNhdChmdW5jdGlvbiAoeCl7cmV0dXJuIHg7fSl9O1xuICAgIGRvIHtcbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IGNhbWxfY2FsbF9nZW4ocmVzLmpvb190cmFtcCwgcmVzLmpvb19hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogSGFuZGxlIGV4Y2VwdGlvbiBjb21pbmcgZnJvbSBKYXZhU2NyaXB0IG9yIGZyb20gdGhlIHJ1bnRpbWUuICovXG4gICAgICAgIGlmICghY2FtbF9leG5fc3RhY2spIHRocm93IGU7XG4gICAgICAgIHZhciBoYW5kbGVyID0gY2FtbF9leG5fc3RhY2tbMV07XG4gICAgICAgIGNhbWxfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2tbMl07XG4gICAgICAgIHJlcyA9IHtqb29fdHJhbXA6IGhhbmRsZXIsXG4gICAgICAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlKHJlcyAmJiByZXMuam9vX2FyZ3MpXG4gIH0gZmluYWxseSB7XG4gICAgY2FtbF9zdGFja19kZXB0aCA9IHNhdmVkX3N0YWNrX2RlcHRoO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc2F2ZWRfZXhuX3N0YWNrO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPSBzYXZlZF9maWJlcl9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc19lZmZlY3RzKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcImVmZmVjdHNcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAobXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmIChGTEFHKFwiZXhjd3JhcFwiKSkge1xuICAgIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gICAgdmFyIGV4bjtcbiAgICAvL1N0YWNrX292ZXJmbG93OiBjaHJvbWUsIHNhZmFyaVxuICAgIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9TdGFja19vdmVyZmxvdzogZmlyZWZveFxuICAgIGVsc2UgaWYoZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvdG9vIG11Y2ggcmVjdXJzaW9uL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gICAgZWxzZSBpZihlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvciAmJiBjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSlcbiAgICAgIGV4biA9IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLGVdO1xuICAgIGVsc2VcbiAgICAgIC8vZmFsbGJhY2s6IHdyYXBwZWQgaW4gRmFpbHVyZVxuICAgICAgZXhuID0gWzAsY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcilcbiAgICAgIGV4bi5qc19lcnJvciA9IGU7XG4gICAgcmV0dXJuIGV4bjtcbiAgfSBlbHNlXG4gICAgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICBpZihjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4blxufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21faW50MzJcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19pbnQzMiBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc190b19pbnQzMih4KSB7IHJldHVybiB4fDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKXtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGk9YS5sZW5ndGggLSAxOyBpPj0wOyBpLS0pe1xuICAgIHZhciBlID0gYVtpXTtcbiAgICBsID0gWzAsZSxsXTtcbiAgfVxuICByZXR1cm4gbFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3RfdG9fanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3RfdG9fanNfYXJyYXkobCl7XG4gIHZhciBhID0gW107XG4gIGZvcig7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc192YXI6IFxcXCJcIiArIHggKyBcIlxcXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLlwiKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICByZXR1cm4gZXZhbCh4KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfY2FsbCAoY29uc3QsIG11dGFibGUsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfY2FsbChmLCBvLCBhcmdzKSB7IHJldHVybiBmLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuX2NhbGwgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2Z1bl9jYWxsKGYsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBmKCk7XG4gIGNhc2UgMjogcmV0dXJuIGYgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBmIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIHJldHVybiBmLmFwcGx5KG51bGwsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX21ldGhfY2FsbCAobXV0YWJsZSwgY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX21ldGhfY2FsbChvLCBmLCBhcmdzKSB7XG4gIHJldHVybiBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGYpXS5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19uZXcgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX25ldyhjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDA6IHJldHVybiBuZXcgYztcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGMgKGFbMF0pO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGEpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKGxlbiA+IDApe1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MgPSBbdW5kZWZpbmVkXTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIC0gMTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuICgoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpKSAtIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9wdXJlX2pzX2V4cHIgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZT9cIjBYXCI6XCIweFwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnMCcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcwJztcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnLScpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7XG4gIGlmICh4ID49IDApIHtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IoeCk7XG4gICAgcmV0dXJuICh4IC0geSA+PSAwLjUpPyh5ICsgMSk6eVxuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiAoeSAtIHggPj0gMC41KT8oeSAtIDEpOnlcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zLm5vZGUgIT09ICd1bmRlZmluZWQnKVxufVxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIGZhbHNlXG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMubWtkaXJTeW5jKHRoaXMubm0obmFtZSkse21vZGU6bW9kZX0pO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ybWRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnJlYWRkaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0RpcmVjdG9yeSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYiA9IHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gICAgdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiBiO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmLCByYWlzZV91bml4KSB7XG4gIHZhciBjb25zdHMgPSByZXF1aXJlKCdjb25zdGFudHMnKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIga2V5IGluIGYpe1xuICAgIHN3aXRjaChrZXkpe1xuICAgIGNhc2UgXCJyZG9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fUkRPTkxZOyBicmVhaztcbiAgICBjYXNlIFwid3Jvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1dST05MWTsgYnJlYWs7XG4gICAgY2FzZSBcImFwcGVuZFwiICA6XG4gICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZIHwgY29uc3RzLk9fQVBQRU5EO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNyZWF0ZVwiICAgOiByZXMgfD0gY29uc3RzLk9fQ1JFQVQ7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0cnVuY2F0ZVwiIDogcmVzIHw9IGNvbnN0cy5PX1RSVU5DOyAgICBicmVhaztcbiAgICBjYXNlIFwiZXhjbFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19FWENMOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJpbmFyeVwiICAgOiByZXMgfD0gY29uc3RzLk9fQklOQVJZOyAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0ZXh0XCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX1RFWFQ7ICAgICBicmVhaztcbiAgICBjYXNlIFwibm9uYmxvY2tcIiA6IHJlcyB8PSBjb25zdHMuT19OT05CTE9DSzsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMpO1xuICAgIHZhciBpc0NoYXJhY3RlckRldmljZSA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzQ2hhcmFjdGVyRGV2aWNlKCk7XG4gICAgZi5pc0NoYXJhY3RlckRldmljZSA9IGlzQ2hhcmFjdGVyRGV2aWNlO1xuICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVuYW1lID0gZnVuY3Rpb24obywgbiwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubHN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3ltbGluayA9IGZ1bmN0aW9uKHRvX2RpciwgdGFyZ2V0LCBwYXRoLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5zeW1saW5rU3luYyh0aGlzLm5tKHRhcmdldCksIHRoaXMubm0ocGF0aCksIHRvX2RpciA/ICdkaXInIDogJ2ZpbGUnKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkbGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgbGluayA9IHRoaXMuZnMucmVhZGxpbmtTeW5jKHRoaXMubm0obmFtZSksICd1dGY4Jyk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGxpbmspO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMub3BlbmRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmFpc2Vfbm9kZWpzX2Vycm9yID0gZnVuY3Rpb24oZXJyLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZShcIlVuaXguVW5peF9lcnJvclwiKTtcbiAgaWYgKHJhaXNlX3VuaXggJiYgdW5peF9lcnJvcikge1xuICAgIHZhciBhcmdzID0gbWFrZV91bml4X2Vycl9hcmdzKGVyci5jb2RlLCBlcnIuc3lzY2FsbCwgZXJyLnBhdGgsIGVyci5lcnJubyk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXRzX2Zyb21fanMgPSBmdW5jdGlvbihqc19zdGF0cykge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vLFxuICAgIGZpbGVfa2luZCxcbiAgICBqc19zdGF0cy5tb2RlLFxuICAgIGpzX3N0YXRzLm5saW5rLFxuICAgIGpzX3N0YXRzLnVpZCxcbiAgICBqc19zdGF0cy5naWQsXG4gICAganNfc3RhdHMucmRldixcbiAgICBqc19zdGF0cy5zaXplLFxuICAgIGpzX3N0YXRzLmF0aW1lTXMsXG4gICAganNfc3RhdHMubXRpbWVNcyxcbiAgICBqc19zdGF0cy5jdGltZU1zXG4gICk7XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVEZXZpY2VcblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2UoKSB7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sTm9kZUZkKGZkLCBmbGFncyl7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLmZkID0gZmQ7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sTm9kZUZkLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbE5vZGVGZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVGZDtcblxuTWxOb2RlRmQucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCxsZW58MCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxhLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgICByZXR1cm4gcmVhZDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVGZCgpe1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vUmVxdWlyZXM6IE1sTm9kZUZkXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIGlmKGZsYWdzLm5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgICAgdmFyIGZkMiA9IGZzLm9wZW5TeW5jKGZsYWdzLm5hbWUsIFwicnNcIik7XG4gICAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkMiwgZmxhZ3MpO1xuICAgIH0gY2F0Y2goZSkgeyAgfVxuICB9XG4gIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGZsYWdzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgY2FzZSBcIlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF90aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF90aW1lICgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nbXRpbWVcbi8vQWxpYXM6IHVuaXhfZ210aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb2NhbHRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoamFuLmdldFRpbWV6b25lT2Zmc2V0KCksIGp1bC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0U2Vjb25kcygpLCBkLmdldE1pbnV0ZXMoKSwgZC5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXREYXRlKCksIGQuZ2V0TW9udGgoKSwgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIChkLmdldFRpbWV6b25lT2Zmc2V0KCkgPCBzdGRUaW1lem9uZU9mZnNldCkgfCAwIC8qIGRheWxpZ2h0IHNhdmluZ3MgdGltZSAgZmllbGQuICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWt0aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X21rdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpO1xuICByZXR1cm4gQkxPQ0soMCx0LHRtMik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhcnR1cCBjb25zdFxuLy9BbGlhczogd2luX3N0YXJ0dXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGFydHVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NsZWFudXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9jbGVhbnVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xlYW51cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQgY29uc3Rcbi8vQWxpYXM6IHdpbl9oYW5kbGVfZmRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQoeCkge3JldHVybiB4O31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG4gICAgcmV0dXJuIHR0eS5pc2F0dHkoZmlsZURlc2NyaXB0b3IpPzE6MDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBtYWtlX3VuaXhfZXJyX2FyZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgdW5peF9lcnJvciA9IFtcbiAgLyogPT09VW5peC5lcnJvcj09PVxuICAgKlxuICAgKiBUaGlzIGFycmF5IGlzIGluIG9yZGVyIG9mIHRoZSB2YXJpYW50IGluIE9DYW1sXG4gICAqL1xuICBcIkUyQklHXCIsIFwiRUFDQ0VTXCIsIFwiRUFHQUlOXCIsIFwiRUJBREZcIiwgXCJFQlVTWVwiLCBcIkVDSElMRFwiLCBcIkVERUFETEtcIiwgXCJFRE9NXCIsXG4gIFwiRUVYSVNUXCIsIFwiRUZBVUxUXCIsIFwiRUZCSUdcIiwgXCJFSU5UUlwiLCBcIkVJTlZBTFwiLCBcIkVJT1wiLCBcIkVJU0RJUlwiLCBcIkVNRklMRVwiLFxuICBcIkVNTElOS1wiLCBcIkVOQU1FVE9PTE9OR1wiLCBcIkVORklMRVwiLCBcIkVOT0RFVlwiLCBcIkVOT0VOVFwiLCBcIkVOT0VYRUNcIiwgXCJFTk9MQ0tcIixcbiAgXCJFTk9NRU1cIiwgXCJFTk9TUENcIiwgXCJFTk9TWVNcIiwgXCJFTk9URElSXCIsIFwiRU5PVEVNUFRZXCIsIFwiRU5PVFRZXCIsIFwiRU5YSU9cIixcbiAgXCJFUEVSTVwiLCBcIkVQSVBFXCIsIFwiRVJBTkdFXCIsIFwiRVJPRlNcIiwgXCJFU1BJUEVcIiwgXCJFU1JDSFwiLCBcIkVYREVWXCIsIFwiRVdPVUxEQkxPQ0tcIixcbiAgXCJFSU5QUk9HUkVTU1wiLCBcIkVBTFJFQURZXCIsIFwiRU5PVFNPQ0tcIiwgXCJFREVTVEFERFJSRVFcIiwgXCJFTVNHU0laRVwiLFxuICBcIkVQUk9UT1RZUEVcIiwgXCJFTk9QUk9UT09QVFwiLCBcIkVQUk9UT05PU1VQUE9SVFwiLCBcIkVTT0NLVE5PU1VQUE9SVFwiLFxuICBcIkVPUE5PVFNVUFBcIiwgXCJFUEZOT1NVUFBPUlRcIiwgXCJFQUZOT1NVUFBPUlRcIiwgXCJFQUREUklOVVNFXCIsIFwiRUFERFJOT1RBVkFJTFwiLFxuICBcIkVORVRET1dOXCIsIFwiRU5FVFVOUkVBQ0hcIiwgXCJFTkVUUkVTRVRcIiwgXCJFQ09OTkFCT1JURURcIiwgXCJFQ09OTlJFU0VUXCIsIFwiRU5PQlVGU1wiLFxuICBcIkVJU0NPTk5cIiwgXCJFTk9UQ09OTlwiLCBcIkVTSFVURE9XTlwiLCBcIkVUT09NQU5ZUkVGU1wiLCBcIkVUSU1FRE9VVFwiLCBcIkVDT05OUkVGVVNFRFwiLFxuICBcIkVIT1NURE9XTlwiLCBcIkVIT1NUVU5SRUFDSFwiLCBcIkVMT09QXCIsIFwiRU9WRVJGTE9XXCJcbl07XG5mdW5jdGlvbiBtYWtlX3VuaXhfZXJyX2FyZ3MoY29kZSwgc3lzY2FsbCwgcGF0aCwgZXJybm8pIHtcbiAgdmFyIHZhcmlhbnQgPSB1bml4X2Vycm9yLmluZGV4T2YoY29kZSk7XG4gIGlmICh2YXJpYW50IDwgMCkge1xuICAgIC8vIERlZmF1bHQgaWYgdW5kZWZpbmVkXG4gICAgaWYgKGVycm5vID09IG51bGwpIHtcbiAgICAgIGVycm5vID0gLTk5OTlcbiAgICB9XG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgdmFyaWFudHMsIGZhbGxiYWNrIHRvIEVVTktOT1dORVJSKGludClcbiAgICB2YXJpYW50ID0gQkxPQ0soMCwgZXJybm8pO1xuICB9XG4gIHZhciBhcmdzID0gW1xuICAgIHZhcmlhbnQsXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoc3lzY2FsbCB8fCBcIlwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoIHx8IFwiXCIpXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9zdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X3N0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9sc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5sc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbHN0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubHN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9sc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfbHN0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ta2RpclxuZnVuY3Rpb24gY2FtbF91bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JtZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zeW1saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBjYW5ub3Qgc3ltbGluayBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtc1wiKTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2Uuc3ltbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHB3dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0cHd1aWQodW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlciA6IGRpcl9oYW5kbGUsIHBhdGg6IHBhdGggfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfcmVhZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSkge1xuICB2YXIgZW50cnk7XG4gIHRyeSB7XG4gICAgICBlbnRyeSA9IGRpcl9oYW5kbGUucG9pbnRlci5yZWFkU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJyZWFkZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGVudHJ5Lm5hbWUpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICAgIGRpcl9oYW5kbGUucG9pbnRlci5jbG9zZVN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3Jld2luZGRpclxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyLCBjYW1sX3VuaXhfb3BlbmRpclxuLy9BbGlhczogdW5peF9yZXdpbmRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZXdpbmRkaXIoZGlyX2hhbmRsZSkge1xuICBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG4gIHZhciBuZXdfZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKGRpcl9oYW5kbGUucGF0aCk7XG4gIGRpcl9oYW5kbGUucG9pbnRlciA9IG5ld19kaXJfaGFuZGxlLnBvaW50ZXI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGZpcnN0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9vcGVuZGlyLCBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRmaXJzdFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRmaXJzdChwYXRoKSB7XG4gIC8vIFRoZSBXaW5kb3dzIGNvZGUgYWRkcyB0aGlzIGdsb2IgdG8gdGhlIHBhdGgsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIGl0XG4gIHZhciBwYXRoX2pzID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocGF0aCk7XG4gIHBhdGhfanMgPSBwYXRoX2pzLnJlcGxhY2UoLyhefFtcXFxcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgY29uc3Rcbi8vQWxpYXM6IHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pc19iaW5hcnlfbW9kZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5IFxufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICAvLyBBIGZpZWxkIHdhcyBhZGRlZCBpbiBPQ2FtbCA0LjEyLiBJdCBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSB0b1xuICAvLyByZXR1cm4gdG9vIG1hbnkgZmllbGRzIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sLlxuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3NldFxuZnVuY3Rpb24gY2FtbF9nY19zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZ2V0XG5mdW5jdGlvbiBjYW1sX2djX2dldCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc2V0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVxudmFyIGFsbF9maW5hbGl6ZXJzID0gbmV3IGdsb2JhbFRoaXMuU2V0KClcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgKGNiLCBhKSB7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpe2FsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTsgY2IoMCk7IHJldHVybjt9KTtcbiAgICB4LnJlZ2lzdGVyKGEseCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX2Rpc2NhcmQodCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKSB7XG4gICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWwsIGNhbWxfaGFzaF9taXhfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19oYXNoKGgsIHYpe1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdik7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQ2NFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQgPSBjYW1sX2hhc2hfbWl4X2ludDY0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQgPSBjYW1sX2hhc2hfbWl4X2ludDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0ID0gY2FtbF9oYXNoX21peF9mbG9hdDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nID0gY2FtbF9oYXNoX21peF9zdHJpbmc7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbFxuZnVuY3Rpb24gQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUoc2VlZCkge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoc2VlZCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqL1xuXG4vKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi9cblxuLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG52YXIgY2FtbF9wYXJzZXJfdHJhY2UgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXksIGNhbWxfcGFyc2VyX3RyYWNlLGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgdmFyIHRibF9uYW1lc19jb25zdCA9IDE1O1xuICB2YXIgdGJsX25hbWVzX2Jsb2NrID0gMTY7XG5cblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoMiwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcilcbiAge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PSAnXFx4MDAnKVxuICAgICAgcmV0dXJuIFwiPHVua25vd24gdG9rZW4+XCI7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnXFx4MDAnKVtudW1iZXJdO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRfdG9rZW4oc3RhdGUsIHRvaylcbiAge1xuICAgIHZhciB0b2tlbiwga2luZDtcbiAgICBpZiAodG9rIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2Jsb2NrXSwgdG9rWzBdKTtcbiAgICAgIGlmICh0eXBlb2YgdG9rWzFdID09IFwibnVtYmVyXCIpXG4gICAgICAgIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PSBcInN0cmluZ1wiKVxuICAgICAgICBraW5kID0gdG9rWzFdXG4gICAgICBlbHNlIGlmICh0b2tbMV0gaW5zdGFuY2VvZiBNbEJ5dGVzKVxuICAgICAgICBraW5kID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0b2tbMV0pXG4gICAgICBlbHNlXG4gICAgICAgIGtpbmQgPSBcIl9cIlxuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4gKyBcIihcIiArIGtpbmQgKyBcIilcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2NvbnN0XSwgdG9rKTtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgbmV4dDpzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4gKHN0YXRlLCBhcmcpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDc6Ly90ZXN0c2hpZnQ6XG4gICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgY21kID0gc2hpZnQ7IGJyZWFrO1xuICAgICAgfVxuICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBjbWQgPSByZWR1Y2U7IGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICByZXMgPSBDQUxMX0VSUk9SX0ZVTkNUSU9OO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICBjYXNlIDU6Ly9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgIGlmIChlcnJmbGFnIDwgMykge1xuICAgICAgICBlcnJmbGFnID0gMztcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3AgKyAxXTtcbiAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTtcbiAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhayBuZXh0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgICAgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKVxuICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjsgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIGxhc3QgdG9rZW4gcmVhZFwiKTtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiBzaGlmdCB0byBzdGF0ZSBcIiArIHRhYmxlcy50YWJsZVtuMl0pO1xuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWR1Y2UgYnkgcnVsZSBcIiArIG4pO1xuICAgICAgdmFyIG0gPSB0YWJsZXMubGVuW25dO1xuICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47XG4gICAgICBlbnZbZW52X3J1bGVfbGVuXSA9IG07XG4gICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICBtID0gdGFibGVzLmxoc1tuXTtcbiAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3BdO1xuICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgbjIgPSBuMSArIHN0YXRlMTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpXG4gICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzI7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMzovL1NUQUNLU19HUk9XTl8yOlxuICAgICAgcmVzID0gQ09NUFVURV9TRU1BTlRJQ19BQ1RJT047XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIHNlbWFudGljIGFjdGlvbiAqL1xuICAgIGNhc2UgNDovL1NFTUFOVElDX0FDVElPTl9DT01QVVRFRDpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gYXJnO1xuICAgICAgdmFyIGFzcCA9IGVudltlbnZfYXNwXTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIGlmIChzcCA+IGFzcCkge1xuICAgICAgICAvKiBUaGlzIGlzIGFuIGVwc2lsb24gcHJvZHVjdGlvbi4gVGFrZSBzeW1iX3N0YXJ0IGVxdWFsIHRvIHN5bWJfZW5kLiAqL1xuICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIH1cbiAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvLyBTQVZFXG4gIGVudltlbnZfc3BdID0gc3A7XG4gIGVudltlbnZfc3RhdGVdID0gc3RhdGU7XG4gIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9wYXJzZXJfdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG5mdW5jdGlvbiBjYW1sX3NldF9wYXJzZXJfdHJhY2UoYm9vbCkge1xuICB2YXIgb2xkZmxhZyA9IGNhbWxfcGFyc2VyX3RyYWNlO1xuICBjYW1sX3BhcnNlcl90cmFjZSA9IGJvb2w7XG4gIHJldHVybiBvbGRmbGFnO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15ICh4LCB5KSB7XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIHZhciBpID0geS5sZW5ndGg7IHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmICh4KSB7IHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfYmxvY2sgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfYmxvY2sgKHgpIHsgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyAoeCkge1xuICBpZiAoKHggaW5zdGFuY2VvZiBBcnJheSkgJiYgeFswXSA9PSAoeFswXSA+Pj4gMCkpXG4gICAgcmV0dXJuIHhbMF1cbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoKHggaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgdHlwZW9mIHggPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAyNDdcbiAgZWxzZSBpZiAoeCAmJiB4LmNhbWxfY3VzdG9tKVxuICAgIHJldHVybiAyNTVcbiAgZWxzZVxuICAgIHJldHVybiAxMDAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF90YWcgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3RhZyAoeCwgdGFnKSB7IHhbMF0gPSB0YWc7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX29ial9ibG9jayBjb25zdCAoY29uc3QsY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9ibG9jayAodGFnLCBzaXplKSB7XG4gIHZhciBvID0gbmV3IEFycmF5KHNpemUrMSk7XG4gIG9bMF09dGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8PSBzaXplOyBpKyspIG9baV0gPSAwO1xuICByZXR1cm4gbztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfd2l0aF90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3dpdGhfdGFnKHRhZyx4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IodmFyIGkgPSAxOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LGksb2xkLG4pe1xuICBpZih4W2krMV0gPT0gb2xkKSB7XG4gICAgeFtpKzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19zaGFyZWRcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZCh4KXtcbiAgcmV0dXJuIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX29ial91cGRhdGVfdGFnKGIsbyxuKSB7XG4gICAgaWYoYlswXT09bykgeyBiWzBdID0gbjsgcmV0dXJuIDEgfVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nKG8pIHtcbiAgaWYgKChvIGluc3RhbmNlb2YgQXJyYXkpICYmIG9bMF0gPT0gKG9bMF0gPj4+IDApICYmXG4gICAgICBjYW1sX29ial91cGRhdGVfdGFnKG8sIDI0NiwgMjQ0KSkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuICBmdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI1MCk7XG4gIHJldHVybiAwOyAvLyB1bml0XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNDYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3JlYWRfcmVzdWx0XG4vL1JlcXVpcmVzOiBjYW1sX29ial90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiAoY2FtbF9vYmpfdGFnKG8pID09IDI1MCk/b1sxXTpvO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA8IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuICh0ID09IDI0NSkgPyAxIDogMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0b3RhbCkge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKCEodG90YWwgJiYgYSA9PT0gYikpIHtcbiAgICAgIHZhciB0YWdfYSA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGEpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2EgPT0gMjUwKSB7IGEgPSBhWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2IgPT0gMjUwKSB7IGIgPSBiWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIC8vIHRhZ3MgYXJlIGRpZmZlcmVudFxuICAgICAgaWYodGFnX2EgIT09IHRhZ19iKSB7XG4gICAgICAgIGlmKHRhZ19hID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYiA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGEsIGIsIC0xLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmKHRhZ19iID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYSA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGIsIGEsIDEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRhZ19hIDwgdGFnX2IpPy0xOjE7XG4gICAgICB9XG4gICAgICBzd2l0Y2godGFnX2Epe1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICBjYXNlIDI0NzogLy8gQ2xvc3VyZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNDg6IC8vIE9iamVjdFxuICAgICAgICB2YXIgeCA9IGNhbWxfaW50X2NvbXBhcmUoYVsyXSwgYlsyXSk7XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEZvcndhcmRfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MTogLy9BYnN0cmFjdFxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTI6IC8vIE9DYW1sIGJ5dGVzXG4gICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYik7XG4gICAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfYXJyYXlfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjU1OiAvLyBDdXN0b21fdGFnXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgQ3VzdG9tX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjQ3OiAvLyBGdW5jdGlvblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NTogLy8gQ3VzdG9tXG4gICAgICAgIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpO1xuICAgICAgICBpZihjb21wICE9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShiKSl7XG4gICAgICAgICAgcmV0dXJuIChhLmNhbWxfY3VzdG9tPGIuY2FtbF9jdXN0b20pPy0xOjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWNvbXApXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIHZhciB4ID0gY29tcChhLGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NjogLy8gY29tcGFyZSBmdW5jdGlvblxuICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KSB7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgYSA9ICthO1xuICAgICAgICBiID0gK2I7XG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDE6IC8vIFRoZSByZXN0XG4gICAgICAgIC8vIEhlcmUgd2UgY2FuIGJlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDIuIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDMuIEphdmFTY3JpcHQgb2JqZWN0IHRoYW4gY2Fubm90IGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vXG4gICAgICAgIC8vICgzKSB3aWxsIHJhaXNlIGEgW1R5cGVFcnJvcl1cbiAgICAgICAgLy8gKDIpIHdpbGwgY29lcmNlIHRvIHByaW1pdGl2ZSB0eXBlcyB1c2luZyBbdmFsdWVPZl0gb3IgW3RvU3RyaW5nXVxuICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgLy8gLSBpZiBhIGFuZCBiIGFyZSBzdHJpbmdzLCBhcHBseSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb25cbiAgICAgICAgLy8gLSBpZiBhIG9yIGIgYXJlIG5vdCBzdHJpbmdzLCBjb252ZXJ0IGEgYW5kIGIgdG8gbnVtYmVyXG4gICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRXhjZXB0aW9uOiBgIT1gIHdpbGwgbm90IGNvZXJjZS9jb252ZXJ0IGlmIGJvdGggYSBhbmQgYiBhcmUgb2JqZWN0c1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUxOiAvLyBKYXZhU2NyaXB0IFN5bWJvbCwgbm8gb3JkZXJpbmcuXG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyOiAvLyBvY2FtbCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGIpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTIwOiAvLyBqYXZhc2NyaXB0IHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBhLnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0NjogLy8gTGF6eV90YWdcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlcbiAgICAgIGRlZmF1bHQ6IC8vIEJsb2NrIHdpdGggb3RoZXIgdGFnXG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0YWdfYSkpIHtcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gKGEubGVuZ3RoIDwgYi5sZW5ndGgpPy0xOjE7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+IDEpIHN0YWNrLnB1c2goYSwgYiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhY2subGVuZ3RoID09IDApIHJldHVybiAwO1xuICAgIHZhciBpID0gc3RhY2sucG9wKCk7XG4gICAgYiA9IHN0YWNrLnBvcCgpO1xuICAgIGEgPSBzdGFjay5wb3AoKTtcbiAgICBpZiAoaSArIDEgPCBhLmxlbmd0aCkgc3RhY2sucHVzaChhLCBiLCBpICsgMSk7XG4gICAgYSA9IGFbaV07XG4gICAgYiA9IGJbaV07XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlIChhLCBiKSB7IHJldHVybiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0cnVlKTsgfVxuLy9Qcm92aWRlczogY2FtbF9pbnRfY29tcGFyZSBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlIChhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuICgtMSk7IGlmIChhID09IGIpIHJldHVybiAwOyByZXR1cm4gMTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9lcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgIT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcmVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVydGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3NlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPD0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc3RoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzdGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPCAwKTsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgKGdsb2JhbFRoaXMubmF2aWdhdG9yJiZnbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgICA/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBjb25zb2xlO1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGFiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGJhKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGJhLmJ1ZmZlciwgYmEuYnl0ZU9mZnNldCwgYmEubGVuZ3RoICogYmEuQllURVNfUEVSX0VMRU1FTlQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19tZW1jbXBcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX21lbWNtcChzMSwgcG9zMSwgczIsIHBvczIsIGxlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEoczEscG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMixwb3MyICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKGJhMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsb2ZzMStsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UscG9zMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKGJhMSwgcG9zMSwgYnl0ZXMyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnNsaWNlKG9mczEsIG9mczErbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLHRvcmVhZCl7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDQwOTYpO1xuICBpZih0b3JlYWQgPCAwKXtcbiAgICB3aGlsZSh0cnVlKXtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCk7XG4gICAgICBpZihyZWFkID09IDApIGJyZWFrO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsICh0b3JlYWQgPiBidWZmZXIubGVuZ3RoID8gYnVmZmVyLmxlbmd0aCA6IHRvcmVhZCkpO1xuICAgICAgaWYocmVhZCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICAgIHRvcmVhZCAtPSByZWFkXG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVUcmFuc2Zvcm1cbnZhciBjYW1sX01ENVRyYW5zZm9ybSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGFkZCAoeCwgeSkgeyByZXR1cm4gKHggKyB5KSB8IDA7IH1cbiAgZnVuY3Rpb24geHgocSxhLGIseCxzLHQpIHtcbiAgICBhID0gYWRkKGFkZChhLCBxKSwgYWRkKHgsIHQpKTtcbiAgICByZXR1cm4gYWRkKChhIDw8IHMpIHwgKGEgPj4+ICgzMiAtIHMpKSwgYik7XG4gIH1cbiAgZnVuY3Rpb24gZmYoYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gZ2coYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTsgfVxuICBmdW5jdGlvbiBpaShhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7IH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHcsIGJ1ZmZlcikge1xuICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA3LCAweEQ3NkFBNDc4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyAxXSwgMTIsIDB4RThDN0I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgM10sIDIyLCAweEMxQkRDRUVFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNywgMHhGNTdDMEZBRik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTcsIDB4QTgzMDQ2MTMpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDddLCAyMiwgMHhGRDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDldLCAxMiwgMHg4QjQ0RjdBRik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE3LCAweEZGRkY1QkIxKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA3LCAweDZCOTAxMTIyKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWzEzXSwgMTIsIDB4RkQ5ODcxOTMpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNV0sIDIyLCAweDQ5QjQwODIxKTtcblxuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA1LCAweEY2MUUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE0LCAweDI2NUU1QTUxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyAwXSwgMjAsIDB4RTlCNkM3QUEpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweEQ4QTFFNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA1LCAweDIxRTFDREU2KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzE0XSwgOSwgMHhDMzM3MDdENik7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA4XSwgMjAsIDB4NDU1QTE0RUQpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA1LCAweEE5RTNFOTA1KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE0LCAweDY3NkYwMkQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OEQyQTRDOEEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDhdLCAxMSwgMHg4NzcxRjY4MSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE2LCAweDZEOUQ2MTIyKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA0LCAweEE0QkVFQTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA0XSwgMTEsIDB4NEJERUNGQTkpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMF0sIDIzLCAweEJFQkZCQzcwKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNCwgMHgyODlCN0VDNik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTYsIDB4RDRFRjMwODUpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDZdLCAyMywgMHgwNDg4MUQwNSk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhFNkRCOTlFNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFGQTI3Q0Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDYsIDB4RjQyOTIyNDQpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDddLCAxMCwgMHg0MzJBRkY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA1XSwgMjEsIDB4RkM5M0EwMzkpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA2LCAweDY1NUI1OUMzKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNSwgMHhGRkVGRjQ3RCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMV0sIDIxLCAweDg1ODQ1REQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNV0sIDEwLCAweEZFMkNFNkUwKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTUsIDB4QTMwMTQzMTQpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDYsIDB4Rjc1MzdFODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhCRDNBRjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA5XSwgMjEsIDB4RUI4NkQzOTEpO1xuXG4gICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICB3WzFdID0gYWRkKGIsIHdbMV0pO1xuICAgIHdbMl0gPSBhZGQoYywgd1syXSk7XG4gICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgfX0pKClcblxuLy9Qcm92aWRlczogY2FtbF9NRDVJbml0XG5mdW5jdGlvbiBjYW1sX01ENUluaXQoKSB7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpO1xuICB2YXIgYjMyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gIHZhciBiOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gIHJldHVybiB7bGVuOjAsXG4gICAgICAgICAgdzpuZXcgVWludDMyQXJyYXkoWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzZdKSxcbiAgICAgICAgICBiMzI6YjMyLFxuICAgICAgICAgIGI4OmI4fVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbil7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgdmFyIGlucHV0X3BvcyA9IDA7XG4gIGN0eC5sZW4gKz0gaW5wdXRfbGVuO1xuICBpZihpbl9idWYpe1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYoaW5wdXRfbGVuIDwgbWlzc2luZykge1xuICAgICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLGlucHV0X2xlbiksaW5fYnVmKTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsbWlzc2luZyksaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUoaW5wdXRfbGVuID49IDY0KXtcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmKGlucHV0X2xlbilcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyBpbnB1dF9sZW4pLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVGaW5hbFxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1RmluYWwoY3R4KXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZiArKztcbiAgaWYoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA2NDsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MUZGRkZGRkY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKVxuICAgICAgdFtpICogNCArIGpdID0gKGN0eC53W2ldID4+ICg4ICogaikpICYgMHhGRjtcbiAgcmV0dXJuIHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LGEuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pLCBsZW4pO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIEh1Z28gSGV1emFyZFxuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gU2hhY2hhciBJdHpoYWt5XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvYmxvYi80LjA3L290aGVybGlicy9zdHIvc3Ryc3R1YnMuY1xuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pzY29xL2pzY29xL2Jsb2IvdjguMTEvY29xLWpzL2pzX3N0dWIvc3RyLmpzXG5cbi8vUHJvdmlkZXM6IHJlX21hdGNoXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcblxudmFyIHJlX21hdGNoID0gZnVuY3Rpb24oKXtcbiAgdmFyIHJlX3dvcmRfbGV0dGVycyA9IFtcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDAwLTB4MUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweEZGLCAweDAzLCAgICAgICAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDg3LCAgICAgICAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4MDcsICAgICAgIC8qIDB4NjAtMHg3RjogYSB0byB6ICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHg4MC0weDlGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHhBMC0weEJGOiBub25lICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiwgICAgICAgLyogMHhDMC0weERGOiBMYXRpbi0xIGFjY2VudGVkIHVwcGVyY2FzZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYgICAgICAgIC8qIDB4RTAtMHhGRjogTGF0aW4tMSBhY2NlbnRlZCBsb3dlcmNhc2UgKi9cbiAgXTtcblxuICB2YXIgb3Bjb2RlcyA9IHtcbiAgICBDSEFSOiAwLCBDSEFSTk9STTogMSwgU1RSSU5HOiAyLCBTVFJJTkdOT1JNOiAzLCBDSEFSQ0xBU1M6IDQsXG4gICAgQk9MOiA1LCBFT0w6IDYsIFdPUkRCT1VOREFSWTogNyxcbiAgICBCRUdHUk9VUDogOCwgRU5ER1JPVVA6IDksIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsIFNJTVBMRVNUQVI6IDEzLCBTSU1QTEVQTFVTOiAxNCxcbiAgICBHT1RPOiAxNSwgUFVTSEJBQ0s6IDE2LCBTRVRNQVJLOiAxNyxcbiAgICBDSEVDS1BST0dSRVNTOiAxOFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1sgIChjID4+IDMpXSA+PiAoYyAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiBpbl9iaXRzZXQocyxpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywoaSA+PiAzKSkgPj4gKGkgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVfbWF0Y2hfaW1wbChyZSwgcywgcG9zLCBwYXJ0aWFsKSB7XG5cbiAgICB2YXIgcHJvZyAgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICAgIGNwb29sICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMl0pLFxuICAgICAgICBub3JtdGFibGUgICAgID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZVszXSksXG4gICAgICAgIG51bWdyb3VwcyAgICAgPSByZVs0XSB8IDAsXG4gICAgICAgIG51bXJlZ2lzdGVycyAgPSByZVs1XSB8IDAsXG4gICAgICAgIHN0YXJ0Y2hhcnMgICAgPSByZVs2XSB8IDA7XG5cbiAgICB2YXIgcyA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHMpO1xuXG4gICAgdmFyIHBjID0gMCxcbiAgICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgICBzdGFjayA9IFtdLFxuICAgICAgICBncm91cHMgPSBuZXcgQXJyYXkobnVtZ3JvdXBzKSxcbiAgICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgZ3JvdXBzW2ldID0ge3N0YXJ0OiAtMSwgZW5kOi0xfVxuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihpdGVtLnBvcykge1xuICAgICAgICAgIHBjID0gaXRlbS5wb3MucGM7XG4gICAgICAgICAgcG9zID0gaXRlbS5wb3MudHh0O1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcXVpdCA9IHRydWU7XG4gICAgfTtcblxuICAgIHZhciBwdXNoID0gZnVuY3Rpb24oaXRlbSkgeyBzdGFjay5wdXNoKGl0ZW0pOyB9O1xuXG4gICAgdmFyIGFjY2VwdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGdyb3Vwc1swXS5lbmQgPSBwb3M7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KDEgKyBncm91cHMubGVuZ3RoKjIpO1xuICAgICAgcmVzdWx0WzBdID0gMDsgLy8gdGFnXG4gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmKGcuc3RhcnQgPCAwIHx8IGcuZW5kIDwgMCkge1xuICAgICAgICAgIGcuc3RhcnQgPSBnLmVuZCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxIF0gPSBnLnN0YXJ0O1xuICAgICAgICByZXN1bHRbMippICsgMSArIDEgXSA9IGcuZW5kO1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmKHBhcnRpYWwpIHJldHVybiBhY2NlcHQgKCk7XG4gICAgICBlbHNlIGJhY2t0cmFjayAoKTtcbiAgICB9XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgICAgc2FyZyA9IHByb2dbcGNdID4+IDgsXG4gICAgICAgICAgdWFyZyA9IHNhcmcgJiAweGZmLFxuICAgICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgICAgZ3JvdXA7XG5cbiAgICAgIHBjKys7XG5cbiAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChjID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUk5PUk06XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkdOT1JNOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUkNMQVNTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICBpZihwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVPTDpcbiAgICAgICAgaWYocG9zIDwgcy5sZW5ndGggJiYgc1twb3NdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5XT1JEQk9VTkRBUlk6XG4gICAgICAgIGlmKHBvcyA9PSAwKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbMF0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSAhPSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQkVHR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLnN0YXJ0fX0pO1xuICAgICAgICBncm91cC5zdGFydCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU5ER1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOiBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuZW5kfX0pO1xuICAgICAgICBncm91cC5lbmQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlJFRkdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgaWYoZ3JvdXAuc3RhcnQgPCAwIHx8IGdyb3VwLmVuZCA8IDApIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKyl7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKHNbaV0gIT0gc1twb3NdKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpXG4gICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVQTFVTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIH0gd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkFDQ0VQVDpcbiAgICAgICAgcmV0dXJuIGFjY2VwdCgpO1xuICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgIHBjID0gcGMgKyBzYXJnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgcHVzaCh7cG9zOiB7cGM6IHBjICsgc2FyZywgdHh0OiBwb3N9fSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNFVE1BUks6XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6cmVfcmVnaXN0ZXIsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOiB1YXJnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlX3JlZ2lzdGVyW3VhcmddfX0pO1xuICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hFQ0tQUk9HUkVTUzpcbiAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KCk7XG5cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2ZvcndhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2ZvcndhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2ZvcndhcmRcIilcbiAgd2hpbGUgKHBvcyA8PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MrKztcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9iYWNrd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfYmFja3dhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2JhY2t3YXJkXCIpXG4gIHdoaWxlIChwb3MgPj0gMCkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcy0tO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuXG4vL1Byb3ZpZGVzOiByZV9zdHJpbmdfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc3RyaW5nX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcGFydGlhbF9tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9wYXJ0aWFsX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnBhcnRpYWxfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCxncm91cHMsb3JpZykge1xuICB2YXIgcmVwbCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVwbCk7XG4gIHZhciBsZW4gPSByZXBsLmxlbmd0aDtcbiAgdmFyIG9yaWcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9yaWcpO1xuICB2YXIgcmVzID0gXCJcIjsgLy9yZXN1bHRcbiAgdmFyIG4gPSAwOyAvLyBjdXJyZW50IHBvc2l0aW9uXG4gIHZhciBjdXI7IC8vY3VycmVudCBjaGFyXG4gIHZhciBzdGFydCwgZW5kLCBjO1xuICB3aGlsZShuIDwgbGVuKXtcbiAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgIGlmKGN1ciAhPSAnXFxcXCcpe1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihuID09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2goY3VyKXtcbiAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICByZXMgKz0gY3VyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzpcbiAgICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgIGlmIChjKjIgPj0gZ3JvdXBzLmxlbmd0aCAtIDEgKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiICk7XG4gICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLGMqMik7XG4gICAgICAgIGVuZCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcywgYyoyICsxKTtcbiAgICAgICAgaWYgKHN0YXJ0ID09IC0xKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiKTtcbiAgICAgICAgcmVzKz1vcmlnLnNsaWNlKHN0YXJ0LGVuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzICs9ICgnXFxcXCcgICsgY3VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX2luaXRpYWxpemVcbmZ1bmN0aW9uIGNhbWxfc3RyX2luaXRpYWxpemUodW5pdCkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2O1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSByZXR1cm4gLWJhc2UtMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIE5ldyBsZXhlciBlbmdpbmUsIHdpdGggbWVtb3J5IG9mIHBvc2l0aW9ucyAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3Bvcykge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gY3Vycl9wb3M7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBpLCBtZW0pIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybiA7XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSAtMTtcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfbWVtID0gMTA7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcbiAgdmFyIGxleF9iYXNlX2NvZGUgPSA2O1xuICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDc7XG4gIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gODtcbiAgdmFyIGxleF90cmFuc19jb2RlID0gOTtcbiAgdmFyIGxleF9jaGVja19jb2RlID0gMTA7XG4gIHZhciBsZXhfY29kZSA9IDExO1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG4gIGlmICghdGJsLmxleF9kZWZhdWx0X2NvZGUpIHtcbiAgICB0YmwubGV4X2Jhc2VfY29kZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VfY29kZV0pO1xuICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0X2NvZGVdKTtcbiAgfVxuICBpZiAodGJsLmxleF9jb2RlID09IG51bGwpIHRibC5sZXhfY29kZSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2Jhc2VfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgcmV0dXJuIC1iYXNlLTE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICB2YXIgcHN0YXRlID0gc3RhdGUgO1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSwgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PSBwc3RhdGUpXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTtcbiAgICAgIGlmIChwY19vZmYgPiAwKVxuICAgICAgICBjYW1sX2xleF9ydW5fbWVtXG4gICAgICAodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pO1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCh2KSB7XG4gIHYgPSB2IC0gKCh2ID4+PiAxKSAmIDB4NTU1NTU1NTUpO1xuICB2ID0gKHYgJiAweDMzMzMzMzMzKSArICgodiA+Pj4gMikgJiAweDMzMzMzMzMzKTtcbiAgcmV0dXJuICgodiArICh2ID4+PiA0KSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+PiAyNDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MgY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4bih4KSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NseiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCkge1xuICB2YXIgbiA9IDMyO1xuICB2YXIgeTtcbiAgeSA9IHggPj4xNjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDg7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0geCA+PiA0OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDE7IGlmICh5ICE9IDApIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSB4O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY2x6KHgpIHtcbiAgdmFyIG4gPSA2NDtcbiAgdmFyIHk7XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTMyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMSk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0gY2FtbF9pbnQ2NF90b19pbnQzMih4KTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpIHtcbiAgaWYgKHggPT09IDApIHsgcmV0dXJuIDMyOyB9XG4gIHZhciBuID0gMTtcbiAgaWYgKCAoeCAmIDB4MDAwMEZGRkYpID09PSAwKSB7IG4gPSBuICsgMTY7IHggPSB4ID4+IDE2OyB9XG4gIGlmICggKHggJiAweDAwMDAwMEZGKSA9PT0gMCkgeyBuID0gbiArICA4OyB4ID0geCA+PiAgODsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwRikgPT09IDApIHsgbiA9IG4gKyAgNDsgeCA9IHggPj4gIDQ7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMDMpID09PSAwKSB7IG4gPSBuICsgIDI7IHggPSB4ID4+ICAyOyB9XG4gIHJldHVybiBuIC0gKHggJiAxKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FuZCwgY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY3R6KHgpIHtcbiAgaWYgKGNhbWxfaW50NjRfaXNfemVybyh4KSkgeyByZXR1cm4gNjQ7IH1cbiAgdmFyIG4gPSAxO1xuICBmdW5jdGlvbiBpc196ZXJvICh4KSAgICB7IHJldHVybiBjYW1sX2ludDY0X2lzX3plcm8oeCk7IH1cbiAgZnVuY3Rpb24gbGFuZCAoeCx5KSAgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9hbmQoeCwgeSk7IH1cbiAgZnVuY3Rpb24gc21hbGxfaW50NjQoeCkgeyByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoeCwwLDApOyB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMHhGRkZGRkYsIDB4MDAwMEZGLCAweDAwMDApKSkpIHtcbiAgICBuID0gbiArIDMyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwRkZGRikpKSkge1xuICAgIG4gPSBuICsgMTY7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMEZGKSkpKSB7XG4gICAgbiA9IG4gKyAgODsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwRikpKSkge1xuICAgIG4gPSBuICsgIDQ7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDMpKSkpIHtcbiAgICBuID0gbiArICAyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgfVxuICByZXR1cm4gbiAtIChjYW1sX2ludDY0X3RvX2ludDMyKGNhbWxfaW50NjRfYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAxKSkpKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSAxO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWV4cG9uZW50PT0wKSB7XG4gICAgbXVsWzFdID0gKG11bFsxXSAqIG11bFszXSkgfCAwO1xuICAgIG11bFsyXSA9IChtdWxbMV0gKiBtdWxbMV0pIHwgMDtcbiAgICBtdWxbM10gPSAobXVsWzJdICogbXVsWzFdKSB8IDA7XG4gICAgcmVzID0gKHJlcyAqIG11bFtleHBvbmVudCAmIDNdKSB8IDA7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCA+PiAyO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKDEsMCk7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKGV4cG9uZW50KSkge1xuICAgIG11bFsxXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzNdKTtcbiAgICBtdWxbMl0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFsxXSk7XG4gICAgbXVsWzNdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzJdLCBtdWxbMV0pO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfbXVsKHJlcywgbXVsW2NhbWxfaW50NjRfbG8zMihleHBvbmVudCkgJiAzXSk7XG4gICAgZXhwb25lbnQgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKGV4cG9uZW50LCAyKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAscylcbn1cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9kb3VibGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX2RvdWJsZShkKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAsZCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfYW1fdGVzdGluZyBjb25zdFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBCYXNlX2FtX3Rlc3RpbmcoeCkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc1xudmFyIGNhbWxfZG9tYWluX2RscyA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2dldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2Rscztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19sb2FkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19sb2FkKHJlZil7XG4gIHJldHVybiByZWZbMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuZnVuY3Rpb24gY2FtbF9hdG9taWNfY2FzKHJlZixvLG4pIHtcbiAgaWYocmVmWzFdID09PSBvKXtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2ZldGNoX2FkZChyZWYsIGkpIHtcbiAgdmFyIG9sZCA9IHJlZlsxXTtcbiAgcmVmWzFdICs9IGk7XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG5mdW5jdGlvbiBjYW1sX2F0b21pY19leGNoYW5nZShyZWYsIHYpIHtcbiAgdmFyIHIgPSByZWZbMV07XG4gIHJlZlsxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQoYSkge1xuICByZXR1cm4gWzAsIGFdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlblxuLy9WZXJzaW9uOiA8IDUuMlxudmFyIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8gPSBbMF1cbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbih1bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fc2V0X25hbWVcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3NldF9uYW1lKF9uYW1lKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuZnVuY3Rpb24gY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQodW5pdCkgeyByZXR1cm4gMSB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbnZhciBjYW1sX2RvbWFpbl9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPj0gNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsdGVybV9zeW5jKXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gICAgLy9UT0RPOiBmaXggZXhuIGNhc2VcbiAgICB0ZXJtX3N5bmNbMV0gPSBbMCwgWzAsIHJlc11dO1xuICAgIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA8IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLG11dGV4KXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKG11dGV4KTtcbiAgICByZXR1cm4gaWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9pZCh1bml0KXtcbiAgICByZXR1cm4gY2FtbF9kb21haW5faWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgodW5pdCl7XG4gICAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIE1sTXV0ZXgoKSB7XG4gIHRoaXMubG9ja2VkID0gZmFsc2Vcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9uZXdcbi8vUmVxdWlyZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbmV3KHVuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYodC5sb2NrZWQpXG4gICAgY2FtbF9mYWlsd2l0aChcIk11dGV4LmxvY2s6IG11dGV4IGFscmVhZHkgbG9ja2VkLiBDYW5ub3Qgd2FpdC5cIik7XG4gIGVsc2UgdC5sb2NrZWQgPSB0cnVlO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF90cnlfbG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF90cnlfbG9jayh0KSB7XG4gIGlmKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gV2VhayBBUElcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZiAodiBpbnN0YW5jZW9mIE9iamVjdCAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdLnJlZ2lzdGVyKSB4WzFdLnJlZ2lzdGVyKHYsIHVuZGVmaW5lZCwgdik7XG4gICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgfVxuICBlbHNlIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbMV0udW5yZWdpc3Rlcikge1xuICAgIHZhciBvbGQgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0uZGVyZWYoKTtcbiAgICBpZihvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGNvdW50ID0gMFxuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZil7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKClcbiAgICAgICAgICBpZihrZXkgPT09IG9sZCkgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoY291bnQgPT0gMSkgeFsxXS51bnJlZ2lzdGVyKG9sZCk7XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDBcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY3JlYXRlLCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jcmVhdGUgKG4pIHtcbiAgdmFyIHggPSBjYW1sX3dlYWtfY3JlYXRlKG4pO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUgKG4pIHtcbiAgaWYgKG4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5jcmVhdGVcIik7XG4gIHZhciB4ID0gWzI1MSxcImNhbWxfZXBoZV9saXN0X2hlYWRcIl07XG4gIHgubGVuZ3RoID0gY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBuO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2tleSwgY2FtbF9lcGhlX3Vuc2V0X2tleVxuZnVuY3Rpb24gY2FtbF93ZWFrX3NldCh4LCBpLCB2KSB7XG4gIGlmKHYgPT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2tleSh4LGkpXG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCxpLHZbMV0pXG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9rZXlcIik7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIHJldHVybiAod2Vhaz09PXVuZGVmaW5lZCk/MDpbMCwgd2Vha107XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2tleSxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRfY29weVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXlfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmICh6IGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHopXTtcbiAgcmV0dXJuIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19jaGVja1xuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2tleSh4LCBpKSB7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgaWYod2Vhaz09PXVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19ibGl0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9rZXkoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KGExLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkxIC0gMSxcbiAgICAgICAgICAgICAgICAgIGEyLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkyIC0gMSxcbiAgICAgICAgICAgICAgICAgIGxlbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9zZXRfZGF0YSwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2RhdGEoc3JjLCBkc3Qpe1xuICB2YXIgbiA9IHNyY1tjYW1sX2VwaGVfZGF0YV9vZmZzZXRdO1xuICBpZihuID09PSB1bmRlZmluZWQpIGNhbWxfZXBoZV91bnNldF9kYXRhKGRzdCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKGRzdCwgbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwXG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0pXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKCEgKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KSkge1xuICAgICAgeFsxXSA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICgpIHsgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCkgfSk7XG4gICAgICAvL3JlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnJlZ2lzdGVyKGtleSwgdW5kZWZpbmVkLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpe1xuICAgICAgLy91bnJlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnVucmVnaXN0ZXIoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjFcbnZhciB6c3RkX2RlY29tcHJlc3MgPSAoZnVuY3Rpb24gKCkge1xuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBhbGlhc2VzIGZvciBzaG9ydGVyIGNvbXByZXNzZWQgY29kZSAobW9zdCBtaW5pZmVycyBkb24ndCBkbyB0aGlzKVxudmFyIGFiID0gQXJyYXlCdWZmZXIsIHU4ID0gVWludDhBcnJheSwgdTE2ID0gVWludDE2QXJyYXksIGkxNiA9IEludDE2QXJyYXksIHUzMiA9IFVpbnQzMkFycmF5LCBpMzIgPSBJbnQzMkFycmF5O1xudmFyIHNsYyA9IGZ1bmN0aW9uICh2LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5zbGljZSlcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5zbGljZS5jYWxsKHYsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgdmFyIG4gPSBuZXcgdTgoZSAtIHMpO1xuICAgIG4uc2V0KHYuc3ViYXJyYXkocywgZSkpO1xuICAgIHJldHVybiBuO1xufTtcbnZhciBmaWxsID0gZnVuY3Rpb24gKHYsIG4sIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmZpbGwpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuZmlsbC5jYWxsKHYsIG4sIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgZm9yICg7IHMgPCBlOyArK3MpXG4gICAgICAgIHZbc10gPSBuO1xuICAgIHJldHVybiB2O1xufTtcbnZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwodiwgdCwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB3aGlsZSAocyA8IGUpIHtcbiAgICAgICAgdlt0KytdID0gdltzKytdO1xuICAgIH1cbn07XG4vKipcbiAqIENvZGVzIGZvciBlcnJvcnMgZ2VuZXJhdGVkIHdpdGhpbiB0aGlzIGxpYnJhcnlcbiAqL1xuLy8gZXJyb3IgY29kZXNcbnZhciBlYyA9IFtcbiAgICAnaW52YWxpZCB6c3RkIGRhdGEnLFxuICAgICd3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpJyxcbiAgICAnaW52YWxpZCBibG9jayB0eXBlJyxcbiAgICAnRlNFIGFjY3VyYWN5IHRvbyBoaWdoJyxcbiAgICAnbWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrJyxcbiAgICAndW5leHBlY3RlZCBFT0YnXG5dO1xuO1xudmFyIGVyciA9IGZ1bmN0aW9uIChpbmQsIG1zZywgbnQpIHtcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgfHwgZWNbaW5kXSk7XG4gICAgZS5jb2RlID0gaW5kO1xuICAgIGlmICghbnQpXG4gICAgICAgIHRocm93IGU7XG4gICAgcmV0dXJuIGU7XG59O1xudmFyIHJiID0gZnVuY3Rpb24gKGQsIGIsIG4pIHtcbiAgICB2YXIgaSA9IDAsIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKVxuICAgICAgICBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbn07XG52YXIgYjQgPSBmdW5jdGlvbiAoZCwgYikgeyByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7IH07XG4vLyByZWFkIFpzdGFuZGFyZCBmcmFtZSBoZWFkZXJcbnZhciByemZoID0gZnVuY3Rpb24gKGRhdCwgdykge1xuICAgIHZhciBuMyA9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkgfCAoZGF0WzJdIDw8IDE2KTtcbiAgICBpZiAobjMgPT0gMHgyRkI1MjggJiYgZGF0WzNdID09IDI1Mykge1xuICAgICAgICAvLyBac3RhbmRhcmRcbiAgICAgICAgdmFyIGZsZyA9IGRhdFs0XTtcbiAgICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgICAgdmFyIHNzID0gKGZsZyA+PiA1KSAmIDEsIGNjID0gKGZsZyA+PiAyKSAmIDEsIGRmID0gZmxnICYgMywgZmNmID0gZmxnID4+IDY7XG4gICAgICAgIGlmIChmbGcgJiA4KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyBieXRlXG4gICAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgICAgLy8gZGljdCBieXRlc1xuICAgICAgICB2YXIgZGIgPSBkZiA9PSAzID8gNCA6IGRmO1xuICAgICAgICAvLyBkaWN0aW9uYXJ5IGlkXG4gICAgICAgIHZhciBkaSA9IHJiKGRhdCwgYnQsIGRiKTtcbiAgICAgICAgYnQgKz0gZGI7XG4gICAgICAgIC8vIGZyYW1lIHNpemUgYnl0ZXNcbiAgICAgICAgdmFyIGZzYiA9IGZjZiA/ICgxIDw8IGZjZikgOiBzcztcbiAgICAgICAgLy8gZnJhbWUgc291cmNlIHNpemVcbiAgICAgICAgdmFyIGZzcyA9IHJiKGRhdCwgYnQsIGZzYikgKyAoKGZjZiA9PSAxKSAmJiAyNTYpO1xuICAgICAgICAvLyB3aW5kb3cgc2l6ZVxuICAgICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICAgIGlmICghc3MpIHtcbiAgICAgICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgICAgICB2YXIgd2IgPSAxIDw8ICgxMCArIChkYXRbNV0gPj4gMykpO1xuICAgICAgICAgICAgd3MgPSB3YiArICh3YiA+PiAzKSAqIChkYXRbNV0gJiA3KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KVxuICAgICAgICAgICAgZXJyKDEpO1xuICAgICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09IDEgPyAoZnNzIHx8IHdzKSA6IHcgPyAwIDogd3MpICsgMTIpO1xuICAgICAgICBidWZbMF0gPSAxLCBidWZbNF0gPSA0LCBidWZbOF0gPSA4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbDogMCxcbiAgICAgICAgICAgIGQ6IGRpLFxuICAgICAgICAgICAgdzogKHcgJiYgdyAhPSAxKSA/IHcgOiBidWYuc3ViYXJyYXkoMTIpLFxuICAgICAgICAgICAgZTogd3MsXG4gICAgICAgICAgICBvOiBuZXcgaTMyKGJ1Zi5idWZmZXIsIDAsIDMpLFxuICAgICAgICAgICAgdTogZnNzLFxuICAgICAgICAgICAgYzogY2MsXG4gICAgICAgICAgICBtOiBNYXRoLm1pbigxMzEwNzIsIHdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoKG4zID4+IDQpIHwgKGRhdFszXSA8PCAyMCkpID09IDB4MTg0RDJBNSkge1xuICAgICAgICAvLyBza2lwcGFibGVcbiAgICAgICAgcmV0dXJuIGI0KGRhdCwgNCkgKyA4O1xuICAgIH1cbiAgICBlcnIoMCk7XG59O1xuLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbnZhciBtc2IgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgdmFyIGJpdHMgPSAwO1xuICAgIGZvciAoOyAoMSA8PCBiaXRzKSA8PSB2YWw7ICsrYml0cylcbiAgICAgICAgO1xuICAgIHJldHVybiBiaXRzIC0gMTtcbn07XG4vLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG52YXIgcmZzZSA9IGZ1bmN0aW9uIChkYXQsIGJ0LCBtYWwpIHtcbiAgICAvLyB0YWJsZSBwb3NcbiAgICB2YXIgdHBvcyA9IChidCA8PCAzKSArIDQ7XG4gICAgLy8gYWNjdXJhY3kgbG9nXG4gICAgdmFyIGFsID0gKGRhdFtidF0gJiAxNSkgKyA1O1xuICAgIGlmIChhbCA+IG1hbClcbiAgICAgICAgZXJyKDMpO1xuICAgIC8vIHNpemVcbiAgICB2YXIgc3ogPSAxIDw8IGFsO1xuICAgIC8vIHByb2JhYmlsaXRpZXMgc3ltYm9scyAgcmVwZWF0ICAgaW5kZXggICBoaWdoIHRocmVzaG9sZFxuICAgIHZhciBwcm9icyA9IHN6LCBzeW0gPSAtMSwgcmUgPSAtMSwgaSA9IC0xLCBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgICAgdmFyIGJpdHMgPSBtc2IocHJvYnMgKyAxKTtcbiAgICAgICAgdmFyIGNidCA9IHRwb3MgPj4gMztcbiAgICAgICAgLy8gbWFza1xuICAgICAgICB2YXIgbXNrID0gKDEgPDwgKGJpdHMgKyAxKSkgLSAxO1xuICAgICAgICB2YXIgdmFsID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHRwb3MgJiA3KSkgJiBtc2s7XG4gICAgICAgIC8vIG1hc2sgKDEgZmV3ZXIgYml0KVxuICAgICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgICAvLyBtYXggc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIG1zdiA9IG1zayAtIHByb2JzIC0gMTtcbiAgICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIHN2YWwgPSB2YWwgJiBtc2sxZmI7XG4gICAgICAgIGlmIChzdmFsIDwgbXN2KVxuICAgICAgICAgICAgdHBvcyArPSBiaXRzLCB2YWwgPSBzdmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cyArIDE7XG4gICAgICAgICAgICBpZiAodmFsID4gbXNrMWZiKVxuICAgICAgICAgICAgICAgIHZhbCAtPSBtc3Y7XG4gICAgICAgIH1cbiAgICAgICAgZnJlcVsrK3N5bV0gPSAtLXZhbDtcbiAgICAgICAgaWYgKHZhbCA9PSAtMSkge1xuICAgICAgICAgICAgcHJvYnMgKz0gdmFsO1xuICAgICAgICAgICAgc3ltc1stLWh0XSA9IHN5bTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9icyAtPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gcmVwZWF0IGJ5dGVcbiAgICAgICAgICAgICAgICB2YXIgcmJ0ID0gdHBvcyA+PiAzO1xuICAgICAgICAgICAgICAgIHJlID0gKChkYXRbcmJ0XSB8IChkYXRbcmJ0ICsgMV0gPDwgOCkpID4+ICh0cG9zICYgNykpICYgMztcbiAgICAgICAgICAgICAgICB0cG9zICs9IDI7XG4gICAgICAgICAgICAgICAgc3ltICs9IHJlO1xuICAgICAgICAgICAgfSB3aGlsZSAocmUgPT0gMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN5bSA+IDI1NSB8fCBwcm9icylcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzeW1wb3MgPSAwO1xuICAgIC8vIHN5bSBzdGVwIChjb3ByaW1lIHdpdGggc3ogLSBmb3JtdWxhIGZyb20genN0ZCBzb3VyY2UpXG4gICAgdmFyIHNzdGVwID0gKHN6ID4+IDEpICsgKHN6ID4+IDMpICsgMztcbiAgICAvLyBzeW0gbWFza1xuICAgIHZhciBzbWFzayA9IHN6IC0gMTtcbiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzeW07ICsrcykge1xuICAgICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgICBpZiAoc2YgPCAxKSB7XG4gICAgICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHNwbGl0IGludG8gdHdvIGxvb3BzIGluIHpzdGQgdG8gYXZvaWQgYnJhbmNoaW5nLCBidXQgYXMgSlMgaXMgaGlnaGVyLWxldmVsIHRoYXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNmOyArK2kpIHtcbiAgICAgICAgICAgIHN5bXNbc3ltcG9zXSA9IHM7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICAgICAgfSB3aGlsZSAoc3ltcG9zID49IGh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgICAgLy8gbmV4dCBzdGF0ZVxuICAgICAgICB2YXIgbnMgPSBkc3RhdGVbc3ltc1tpXV0rKztcbiAgICAgICAgLy8gbnVtIGJpdHNcbiAgICAgICAgdmFyIG5iID0gbmJpdHNbaV0gPSBhbCAtIG1zYihucyk7XG4gICAgICAgIG5zdGF0ZVtpXSA9IChucyA8PCBuYikgLSBzejtcbiAgICB9XG4gICAgcmV0dXJuIFsodHBvcyArIDcpID4+IDMsIHtcbiAgICAgICAgICAgIGI6IGFsLFxuICAgICAgICAgICAgczogc3ltcyxcbiAgICAgICAgICAgIG46IG5iaXRzLFxuICAgICAgICAgICAgdDogbnN0YXRlXG4gICAgICAgIH1dO1xufTtcbi8vIHJlYWQgaHVmZm1hblxudmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsIHdjID0gLTE7XG4gICAgLy8gICAgYnVmZmVyICAgICAgICAgICAgIGhlYWRlciBieXRlXG4gICAgdmFyIGJ1ZiA9IG5ldyB1OCgyOTIpLCBoYiA9IGRhdFtidF07XG4gICAgLy8gaHVmZm1hbiB3ZWlnaHRzXG4gICAgdmFyIGh3ID0gYnVmLnN1YmFycmF5KDAsIDI1Nik7XG4gICAgLy8gcmFuayBjb3VudFxuICAgIHZhciByYyA9IGJ1Zi5zdWJhcnJheSgyNTYsIDI2OCk7XG4gICAgLy8gcmFuayBpbmRleFxuICAgIHZhciByaSA9IG5ldyB1MTYoYnVmLmJ1ZmZlciwgMjY4KTtcbiAgICAvLyBOT1RFOiBhdCB0aGlzIHBvaW50IGJ0IGlzIDEgbGVzcyB0aGFuIGV4cGVjdGVkXG4gICAgaWYgKGhiIDwgMTI4KSB7XG4gICAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICAgIHZhciBfYSA9IHJmc2UoZGF0LCBidCArIDEsIDYpLCBlYnQgPSBfYVswXSwgZmR0ID0gX2FbMV07XG4gICAgICAgIGJ0ICs9IGhiO1xuICAgICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgICAvLyBsYXN0IGJ5dGVcbiAgICAgICAgdmFyIGxiID0gZGF0W2J0XTtcbiAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgICAgdmFyIHN0MSA9IDAsIHN0MiA9IDAsIGJ0cjEgPSBmZHQuYiwgYnRyMiA9IGJ0cjE7XG4gICAgICAgIC8vIGZzZSBwb3NcbiAgICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgICAgdmFyIGZwb3MgPSAoKytidCA8PCAzKSAtIDggKyBtc2IobGIpO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjE7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QxICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIxKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICAgICAgZnBvcyAtPSBidHIyO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QyICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIyKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDJdO1xuICAgICAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgICAgICBzdDEgPSBmZHQudFtzdDFdO1xuICAgICAgICAgICAgYnRyMiA9IGZkdC5uW3N0Ml07XG4gICAgICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrK3djID4gMjU1KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgICAgZm9yICg7IGkgPCB3YzsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgICAgIGh3W2ldID0gYnl0ZSA+PiA0O1xuICAgICAgICAgICAgaHdbaSArIDFdID0gYnl0ZSAmIDE1O1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgLy8gYml0cyBtdXN0IGJlIGF0IG1vc3QgMTEsIHNhbWUgYXMgd2VpZ2h0XG4gICAgICAgIGlmICh3dCA+IDExKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICB3ZXMgKz0gd3QgJiYgKDEgPDwgKHd0IC0gMSkpO1xuICAgIH1cbiAgICAvLyBtYXggYml0c1xuICAgIHZhciBtYiA9IG1zYih3ZXMpICsgMTtcbiAgICAvLyB0YWJsZSBzaXplXG4gICAgdmFyIHRzID0gMSA8PCBtYjtcbiAgICAvLyByZW1haW5pbmcgc3VtXG4gICAgdmFyIHJlbSA9IHRzIC0gd2VzO1xuICAgIC8vIG11c3QgYmUgcG93ZXIgb2YgMlxuICAgIGlmIChyZW0gJiAocmVtIC0gMSkpXG4gICAgICAgIGVycigwKTtcbiAgICBod1t3YysrXSA9IG1zYihyZW0pICsgMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgKytyY1tod1tpXSA9IHd0ICYmIChtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksIG5iID0gaGJ1Zi5zdWJhcnJheSh0cyk7XG4gICAgcmlbbWJdID0gMDtcbiAgICBmb3IgKGkgPSBtYjsgaSA+IDA7IC0taSkge1xuICAgICAgICB2YXIgcHYgPSByaVtpXTtcbiAgICAgICAgZmlsbChuYiwgaSwgcHYsIHJpW2kgLSAxXSA9IHB2ICsgcmNbaV0gKiAoMSA8PCAobWIgLSBpKSkpO1xuICAgIH1cbiAgICBpZiAocmlbMF0gIT0gdHMpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgYml0cyA9IGh3W2ldO1xuICAgICAgICBpZiAoYml0cykge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSByaVtiaXRzXTtcbiAgICAgICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgcmlbYml0c10gPSBjb2RlICsgKDEgPDwgKG1iIC0gYml0cykpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2J0LCB7XG4gICAgICAgICAgICBuOiBuYixcbiAgICAgICAgICAgIGI6IG1iLFxuICAgICAgICAgICAgczogc3ltc1xuICAgICAgICB9XTtcbn07XG4vLyBUYWJsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXM6XG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbi8vIGRlZmF1bHQgbGl0ZXJhbCBsZW5ndGggdGFibGVcbnZhciBkbGx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsIDE0NiwgNFxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBtYXRjaCBsZW5ndGggdGFibGVcbnZhciBkbWx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCAzNiwgOVxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBvZmZzZXQgY29kZSB0YWJsZVxudmFyIGRvY3QgPSAvKiNfX1BVUkVfXyAqLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMiwgMTMyLCAxNiwgNjYsIDEwMiwgNzAsIDY4LCA2OCwgNjgsIDY4LCAzNiwgNzMsIDJcbl0pLCAwLCA1KVsxXTtcbi8vIGJpdHMgdG8gYmFzZWxpbmVcbnZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsIGJsID0gbmV3IGkzMihsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgYmxbaV0gPSBzO1xuICAgICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xufTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJpdHNcbnZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTM0Njc4MDIwLCAyMDIwNTAwNTcsIDI2OTQyMjA5M1xuXSkpLmJ1ZmZlciwgMCwgMzYpO1xuLy8gbGl0ZXJhbCBsZW5ndGggYmFzZWxpbmVcbnZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuLy8gbWF0Y2ggbGVuZ3RoIGJpdHNcbnZhciBtbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTE3NzY5MjIwLCAxODUyMDcwNDgsIDI1MjU3OTA4NCwgMTZcbl0pKS5idWZmZXIsIDAsIDUzKTtcbi8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxudmFyIG1sYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKG1sYiwgMyk7XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW1cbnZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsIHNzID0gb3V0Lmxlbmd0aCwgbGIgPSBkYXRbbGVuIC0gMV0sIG1zayA9ICgxIDw8IGh1LmIpIC0gMSwgZWIgPSAtaHUuYjtcbiAgICBpZiAoIWxiKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN0ID0gMCwgYnRyID0gaHUuYiwgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLCBpID0gLTE7XG4gICAgZm9yICg7IHBvcyA+IGViICYmIGkgPCBzczspIHtcbiAgICAgICAgdmFyIGNidCA9IHBvcyA+PiAzO1xuICAgICAgICB2YXIgdmFsID0gKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAocG9zICYgNyk7XG4gICAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgICAgb3V0WysraV0gPSBodS5zW3N0XTtcbiAgICAgICAgcG9zIC09IChidHIgPSBodS5uW3N0XSk7XG4gICAgfVxuICAgIGlmIChwb3MgIT0gZWIgfHwgaSArIDEgIT0gc3MpXG4gICAgICAgIGVycigwKTtcbn07XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbi8vIFRPRE86IHVzZSB3b3JrZXJzIHRvIHBhcmFsbGVsaXplXG52YXIgZGh1NCA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgYnQgPSA2O1xuICAgIHZhciBzcyA9IG91dC5sZW5ndGgsIHN6MSA9IChzcyArIDMpID4+IDIsIHN6MiA9IHN6MSA8PCAxLCBzejMgPSBzejEgKyBzejI7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSksIG91dC5zdWJhcnJheSgwLCBzejEpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzJdIHwgKGRhdFszXSA8PCA4KSksIG91dC5zdWJhcnJheShzejEsIHN6MiksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6Miwgc3ozKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQpLCBvdXQuc3ViYXJyYXkoc3ozKSwgaHUpO1xufTtcbi8vIHJlYWQgWnN0YW5kYXJkIGJsb2NrXG52YXIgcnpiID0gZnVuY3Rpb24gKGRhdCwgc3QsIG91dCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYnQgPSBzdC5iO1xuICAgIC8vICAgIGJ5dGUgMCAgICAgICAgYmxvY2sgdHlwZVxuICAgIHZhciBiMCA9IGRhdFtidF0sIGJ0eXBlID0gKGIwID4+IDEpICYgMztcbiAgICBzdC5sID0gYjAgJiAxO1xuICAgIHZhciBzeiA9IChiMCA+PiAzKSB8IChkYXRbYnQgKyAxXSA8PCA1KSB8IChkYXRbYnQgKyAyXSA8PCAxMyk7XG4gICAgLy8gZW5kIGJ5dGUgZm9yIGJsb2NrXG4gICAgdmFyIGVidCA9IChidCArPSAzKSArIHN6O1xuICAgIGlmIChidHlwZSA9PSAxKSB7XG4gICAgICAgIGlmIChidCA+PSBkYXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdC5iID0gYnQgKyAxO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmaWxsKG91dCwgZGF0W2J0XSwgc3QueSwgc3QueSArPSBzeik7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsKG5ldyB1OChzeiksIGRhdFtidF0pO1xuICAgIH1cbiAgICBpZiAoZWJ0ID4gZGF0Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChidHlwZSA9PSAwKSB7XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgICAgIHN0LnkgKz0gc3o7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09IDIpIHtcbiAgICAgICAgLy8gICAgYnl0ZSAzICAgICAgICBsaXQgYnR5cGUgICAgIHNpemUgZm9ybWF0XG4gICAgICAgIHZhciBiMyA9IGRhdFtidF0sIGxidCA9IGIzICYgMywgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgICAvLyBsaXQgc3JjIHNpemUgIGxpdCBjbXAgc3ogNCBzdHJlYW1zXG4gICAgICAgIHZhciBsc3MgPSBiMyA+PiA0LCBsY3MgPSAwLCBzNCA9IDA7XG4gICAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgICAgICBpZiAoc2YgJiAxKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChzZiAmIDIpICYmIChkYXRbKytidF0gPDwgMTIpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgPSBiMyA+PiAzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczQgPSBzZjtcbiAgICAgICAgICAgIGlmIChzZiA8IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9ICgoZGF0WysrYnRdICYgNjMpIDw8IDQpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMik7XG4gICAgICAgICAgICBlbHNlIGlmIChzZiA9PSAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiAzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDIpIHwgKGRhdFsrK2J0XSA8PCA2KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICAgICAgLy8gYWRkIGxpdGVyYWxzIHRvIGVuZCAtIGNhbiBuZXZlciBvdmVybGFwIHdpdGggYmFja3JlZmVyZW5jZXMgYmVjYXVzZSB1bnVzZWQgbGl0ZXJhbHMgYWx3YXlzIGFwcGVuZGVkXG4gICAgICAgIHZhciBidWYgPSBvdXQgPyBvdXQuc3ViYXJyYXkoc3QueSwgc3QueSArIHN0Lm0pIDogbmV3IHU4KHN0Lm0pO1xuICAgICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgICAgdmFyIHNwbCA9IGJ1Zi5sZW5ndGggLSBsc3M7XG4gICAgICAgIGlmIChsYnQgPT0gMClcbiAgICAgICAgICAgIGJ1Zi5zZXQoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsc3MpLCBzcGwpO1xuICAgICAgICBlbHNlIGlmIChsYnQgPT0gMSlcbiAgICAgICAgICAgIGZpbGwoYnVmLCBkYXRbYnQrK10sIHNwbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaHVmZm1hbiB0YWJsZVxuICAgICAgICAgICAgdmFyIGh1ID0gc3QuaDtcbiAgICAgICAgICAgIGlmIChsYnQgPT0gMikge1xuICAgICAgICAgICAgICAgIHZhciBodWQgPSByaHUoZGF0LCBidCk7XG4gICAgICAgICAgICAgICAgLy8gc3VidHJhY3QgZGVzY3JpcHRpb24gbGVuZ3RoXG4gICAgICAgICAgICAgICAgbGNzICs9IGJ0IC0gKGJ0ID0gaHVkWzBdKTtcbiAgICAgICAgICAgICAgICBzdC5oID0gaHUgPSBodWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaHUpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgKHM0ID8gZGh1NCA6IGRodSkoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsY3MpLCBidWYuc3ViYXJyYXkoc3BsKSwgaHUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgICAgdmFyIG5zID0gZGF0W2J0KytdO1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICAgIGlmIChucyA9PSAyNTUpXG4gICAgICAgICAgICAgICAgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdGMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChucyA+IDEyNylcbiAgICAgICAgICAgICAgICBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAgICAgLy8gc3ltYm9sIGNvbXByZXNzaW9uIG1vZGVzXG4gICAgICAgICAgICB2YXIgc2NtID0gZGF0W2J0KytdO1xuICAgICAgICAgICAgaWYgKHNjbSAmIDMpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpID4gLTE7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBtZCA9IChzY20gPj4gKChpIDw8IDEpICsgMikpICYgMztcbiAgICAgICAgICAgICAgICBpZiAobWQgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBybGUgYnVmXG4gICAgICAgICAgICAgICAgICAgIHZhciByYnVmID0gbmV3IHU4KFswLCAwLCBkYXRbYnQrK11dKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgczogcmJ1Zi5zdWJhcnJheSgyLCAzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG46IHJidWYuc3ViYXJyYXkoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGI6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmFjeSBsb2cgOCBmb3Igb2Zmc2V0cywgOSBmb3Igb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSksIGJ0ID0gX2FbMF0sIGR0c1tpXSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3QudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0gc3QudFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2IgPSBzdC50ID0gZHRzLCBtbHQgPSBfYlswXSwgb2N0ID0gX2JbMV0sIGxsdCA9IF9iWzJdO1xuICAgICAgICAgICAgdmFyIGxiID0gZGF0W2VidCAtIDFdO1xuICAgICAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLCBjYnQgPSBzcG9zID4+IDMsIG91YnQgPSAwO1xuICAgICAgICAgICAgdmFyIGxzdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9jdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG9zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvY3QuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG1zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGZvciAoKytuczsgLS1uczspIHtcbiAgICAgICAgICAgICAgICB2YXIgbGxjID0gbGx0LnNbbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbGJ0ciA9IGxsdC5uW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIG1sYyA9IG1sdC5zW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG1idHIgPSBtbHQublttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvZmMgPSBvY3Quc1tvc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvYnRyID0gb2N0Lm5bb3N0XTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvZmMpID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG9mcCA9IDEgPDwgb2ZjO1xuICAgICAgICAgICAgICAgIHZhciBvZmYgPSBvZnAgKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSB8IChkYXRbY2J0ICsgM10gPDwgMjQpKSA+Pj4gKHNwb3MgJiA3KSkgJiAob2ZwIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sYlttbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBtbCA9IG1sYmxbbWxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIGxsID0gbGxibFtsbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsYltsbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIGxzdCA9IGxsdC50W2xzdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxidHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbXN0ID0gbWx0LnRbbXN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICAgICAgICBvc3QgPSBvY3QudFtvc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAob2ZmID4gMykge1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmYgLT0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBvZmYgLSAobGwgIT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IGlkeCA9PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxsOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBsbCwgc3BsICs9IGxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IC1zdGluO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnMgPSBzdC5lICsgc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1sKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBzdC53W2JzICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3VidCArPSBsZW4sIG1sIC09IGxlbiwgc3RpbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3N0aW4gKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBtbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdWJ0ICE9IHNwbCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzcGwgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0KytdID0gYnVmW3NwbCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3VidCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAob3V0KVxuICAgICAgICAgICAgICAgIHN0LnkgKz0gb3VidDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCAwLCBvdWJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICBzdC55ICs9IGxzcztcbiAgICAgICAgICAgICAgICBpZiAoc3BsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHNzOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNwbClcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCBzcGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGVycigyKTtcbn07XG4vLyBjb25jYXRcbnZhciBjY3QgPSBmdW5jdGlvbiAoYnVmcywgb2wpIHtcbiAgICBpZiAoYnVmcy5sZW5ndGggPT0gMSlcbiAgICAgICAgcmV0dXJuIGJ1ZnNbMF07XG4gICAgdmFyIGJ1ZiA9IG5ldyB1OChvbCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgICAgYnVmLnNldChjaGssIGIpO1xuICAgICAgICBiICs9IGNoay5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG59O1xuLyoqXG4gKiBEZWNvbXByZXNzZXMgWnN0YW5kYXJkIGRhdGFcbiAqIEBwYXJhbSBkYXQgVGhlIGlucHV0IGRhdGFcbiAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICogICAgICAgICAgICBleGFjdGx5IGVub3VnaCBtZW1vcnkgdG8gZml0IHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gSWYgeW91clxuICogICAgICAgICAgICBkYXRhIGhhcyBtdWx0aXBsZSBmcmFtZXMgYW5kIHlvdSBrbm93IHRoZSBvdXRwdXQgc2l6ZSwgc3BlY2lmeWluZ1xuICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvbXByZXNzZWQgZGF0YVxuICovXG5yZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsIGJ1ZnMgPSBbXSwgbmIgPSArIWJ1Ziwgb2wgPSAwO1xuICAgIGZvciAoOyBkYXQubGVuZ3RoOykge1xuICAgICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdCA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT0gc3QudSkge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmID0gc3Qudyk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IHN0LnU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKDsgIXN0Lmw7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgICAgICAgIGlmICghYmxrKVxuICAgICAgICAgICAgICAgICAgICBlcnIoNSk7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChibGspO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBibGsubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0Lncuc2V0KGJsaywgc3Qudy5sZW5ndGggLSBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidCA9IHN0LmIgKyAoc3QuYyAqIDQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0ID0gc3Q7XG4gICAgICAgIGRhdCA9IGRhdC5zdWJhcnJheShidCk7XG4gICAgfVxuICAgIHJldHVybiBjY3QoYnVmcywgb2wpO1xufVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjJcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF96c3RkX2luaXRpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMS4xXG5mdW5jdGlvbiBjYW1sX3pzdGRfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcbiAgcmV0dXJuIDFcbn1cblxuIiwiLy8vLy8vLy8vIFRJTUVfTk9XXG5cbi8vUHJvdmlkZXM6IHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbnZhciBtc190b19uYW5vID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxMDAwKjEwMDApO1xuZnVuY3Rpb24gdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvKCl7XG4gICAgdmFyIG1zID0gRGF0ZS5ub3coKTtcbiAgICAvLyBtdWx0aXBsZSBieSB0d28gLSBpbnQ2MyBpbnRlZ2VycyBhcmUgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgIHZhciBtc19pNjMgPSBjYW1sX2ludDY0X29mX2Zsb2F0KG1zKjIpO1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChtc19pNjMsbXNfdG9fbmFubyk7XG59XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2FtbGludGVybmFsQXRvbWljIGlzIGEgZGVwZW5kZW5jeSBvZiBTdGRsaWIsIHNvIGl0IGlzIGNvbXBpbGVkIHdpdGhcbiAgIC1ub3BlcnZhc2l2ZXMuICopXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogV2UgYXJlIG5vdCByZXVzaW5nICgnYSByZWYpIGRpcmVjdGx5IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYXNvblxuICAgYWJvdXQgYXRvbWljaXR5IGlmIHdlIHdpc2ggdG86IGV2ZW4gaW4gYSBzZXF1ZW50aWFsIGltcGxlbWVudGF0aW9uLFxuICAgc2lnbmFscyBhbmQgb3RoZXIgYXN5bmNocm9ub3VzIGNhbGxiYWNrcyBtaWdodCBicmVhayBhdG9taWNpdHkuICopXG50eXBlICdhIHQgPSB7bXV0YWJsZSB2OiAnYX1cblxubGV0IG1ha2UgdiA9IHt2fVxubGV0IGdldCByID0gci52XG5sZXQgc2V0IHIgdiA9IHIudiA8LSB2XG5cbigqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBzZXQgdG8gbmV2ZXIgYmUgaW5saW5lZDogRmxhbWJkYSBpc1xuICAgYWxsb3dlZCB0byBtb3ZlIHN1cnJvdW5kaW5nIGNvZGUgaW5zaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLFxuICAgaW5jbHVkaW5nIGFsbG9jYXRpb25zLiAqKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZXhjaGFuZ2UgciB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIHY7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldFtAaW5saW5lIG5ldmVyXSBjb21wYXJlX2FuZF9zZXQgciBzZWVuIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICBpZiBjdXIgPT0gc2VlbiB0aGVuIChcbiAgICByLnYgPC0gdjtcbiAgICAoKiBFTkQgQVRPTUlDICopXG4gICAgdHJ1ZVxuICApIGVsc2VcbiAgICBmYWxzZVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfYW5kX2FkZCByIG4gPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gKGN1ciArIG4pO1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldCByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBoZCA6OiB0bCAtPiBoZCA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gQ2FtbGludGVybmFsQXRvbWljLm1ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgbGV0IG1vZHVsZSBBdG9taWMgPSBDYW1saW50ZXJuYWxBdG9taWMgaW5cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBBdG9taWMubWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9IChDYW1saW50ZXJuYWxBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgOiB1bml0IC0+IGJvb2xcbiAgPSBcImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWRcIlxubGV0ICgpID0gaWYgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCAoKSB0aGVuIGF0X2V4aXQgbWFqb3JcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgPSBDb21wbGV4XG5tb2R1bGUgRGlnZXN0ICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRWl0aGVyICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICA9IEdjXG5tb2R1bGUgR2VubGV4ICAgICAgID0gR2VubGV4XG5tb2R1bGUgSGFzaHRibCAgICAgID0gSGFzaHRibFxubW9kdWxlIEludCAgICAgICAgICA9IEludFxubW9kdWxlIEludDMyICAgICAgICA9IEludDMyXG5tb2R1bGUgSW50NjQgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgPSBMYXp5XG5tb2R1bGUgTGV4aW5nICAgICAgID0gTGV4aW5nXG5tb2R1bGUgTGlzdCAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICA9IExpc3RMYWJlbHNcbm1vZHVsZSBNYXAgICAgICAgICAgPSBNYXBcbm1vZHVsZSBNYXJzaGFsICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgID0gTW9yZUxhYmVsc1xubW9kdWxlIE5hdGl2ZWludCAgICA9IE5hdGl2ZWludFxubW9kdWxlIE9iaiAgICAgICAgICA9IE9ialxubW9kdWxlIE9vICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgID0gT3B0aW9uXG5tb2R1bGUgUGFyc2luZyAgICAgID0gUGFyc2luZ1xubW9kdWxlIFBlcnZhc2l2ZXMgICA9IFBlcnZhc2l2ZXNcbm1vZHVsZSBQcmludGV4YyAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZXEgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmVhbSAgICAgICA9IFN0cmVhbVxubW9kdWxlIFN0cmluZyAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICA9IFN5c1xubW9kdWxlIFVjaGFyICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSmFuZSBTdHJlZXQgR3JvdXAgTExDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEBkZXByZWNhdGVkIFVzZSB7IVN0ZGxpYn0gKilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5sZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xubGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbmV4Y2VwdGlvbiBFeGl0XG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBtaW4gPSBtaW5cbmxldCBtYXggPSBtYXhcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICgmJikgaW5zdGVhZC5cIl1cbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAofHwpIGluc3RlYWQuXCJdXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5sZXQgYWJzID0gYWJzXG5sZXQgbWF4X2ludCA9IG1heF9pbnRcbmxldCBtaW5faW50ID0gbWluX2ludFxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsbm90ID0gbG5vdFxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmxldCBpbmZpbml0eSA9IGluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gbmVnX2luZmluaXR5XG5sZXQgbmFuID0gbmFuXG5sZXQgbWF4X2Zsb2F0ID0gbWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gbWluX2Zsb2F0XG5sZXQgZXBzaWxvbl9mbG9hdCA9IGVwc2lsb25fZmxvYXRcbnR5cGUgbm9ucmVjIGZwY2xhc3MgPSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5sZXQgKCBeICkgPSAoIF4gKVxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCA9IGNoYXJfb2ZfaW50XG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBib29sX29mX3N0cmluZ1xubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGJvb2xfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9pbnQgPSBzdHJpbmdfb2ZfaW50XG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBpbnRfb2Zfc3RyaW5nX29wdCA9IGludF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2Zsb2F0ID0gc3RyaW5nX29mX2Zsb2F0XG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0ID0gZmxvYXRfb2Zfc3RyaW5nX29wdFxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcbmxldCAoIEAgKSAgPSAoIEAgKVxudHlwZSBub25yZWMgaW5fY2hhbm5lbCA9IGluX2NoYW5uZWxcbnR5cGUgbm9ucmVjIG91dF9jaGFubmVsID0gb3V0X2NoYW5uZWxcbmxldCBzdGRpbiA9IHN0ZGluXG5sZXQgc3Rkb3V0ID0gc3Rkb3V0XG5sZXQgc3RkZXJyID0gc3RkZXJyXG5sZXQgcHJpbnRfY2hhciA9IHByaW50X2NoYXJcbmxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbmxldCBwcmludF9ieXRlcyA9IHByaW50X2J5dGVzXG5sZXQgcHJpbnRfaW50ID0gcHJpbnRfaW50XG5sZXQgcHJpbnRfZmxvYXQgPSBwcmludF9mbG9hdFxubGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG5sZXQgcHJpbnRfbmV3bGluZSA9IHByaW50X25ld2xpbmVcbmxldCBwcmVycl9jaGFyID0gcHJlcnJfY2hhclxubGV0IHByZXJyX3N0cmluZyA9IHByZXJyX3N0cmluZ1xubGV0IHByZXJyX2J5dGVzID0gcHJlcnJfYnl0ZXNcbmxldCBwcmVycl9pbnQgPSBwcmVycl9pbnRcbmxldCBwcmVycl9mbG9hdCA9IHByZXJyX2Zsb2F0XG5sZXQgcHJlcnJfZW5kbGluZSA9IHByZXJyX2VuZGxpbmVcbmxldCBwcmVycl9uZXdsaW5lID0gcHJlcnJfbmV3bGluZVxubGV0IHJlYWRfbGluZSA9IHJlYWRfbGluZVxubGV0IHJlYWRfaW50ID0gcmVhZF9pbnRcbmxldCByZWFkX2ludF9vcHQgPSByZWFkX2ludF9vcHRcbmxldCByZWFkX2Zsb2F0ID0gcmVhZF9mbG9hdFxubGV0IHJlYWRfZmxvYXRfb3B0ID0gcmVhZF9mbG9hdF9vcHRcbnR5cGUgbm9ucmVjIG9wZW5fZmxhZyA9IG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcbmxldCBvcGVuX291dCA9IG9wZW5fb3V0XG5sZXQgb3Blbl9vdXRfYmluID0gb3Blbl9vdXRfYmluXG5sZXQgb3Blbl9vdXRfZ2VuID0gb3Blbl9vdXRfZ2VuXG5sZXQgZmx1c2ggPSBmbHVzaFxubGV0IGZsdXNoX2FsbCA9IGZsdXNoX2FsbFxubGV0IG91dHB1dF9jaGFyID0gb3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfc3RyaW5nID0gb3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IG91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IG91dHB1dFxubGV0IG91dHB1dF9zdWJzdHJpbmcgPSBvdXRwdXRfc3Vic3RyaW5nXG5sZXQgb3V0cHV0X2J5dGUgPSBvdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gb3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfdmFsdWUgPSBvdXRwdXRfdmFsdWVcbmxldCBzZWVrX291dCA9IHNlZWtfb3V0XG5sZXQgcG9zX291dCA9IHBvc19vdXRcbmxldCBvdXRfY2hhbm5lbF9sZW5ndGggPSBvdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9vdXQgPSBjbG9zZV9vdXRcbmxldCBjbG9zZV9vdXRfbm9lcnIgPSBjbG9zZV9vdXRfbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IG9wZW5faW4gPSBvcGVuX2luXG5sZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2JpblxubGV0IG9wZW5faW5fZ2VuID0gb3Blbl9pbl9nZW5cbmxldCBpbnB1dF9jaGFyID0gaW5wdXRfY2hhclxubGV0IGlucHV0X2xpbmUgPSBpbnB1dF9saW5lXG5sZXQgaW5wdXQgPSBpbnB1dFxubGV0IHJlYWxseV9pbnB1dCA9IHJlYWxseV9pbnB1dFxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgPSByZWFsbHlfaW5wdXRfc3RyaW5nXG5sZXQgaW5wdXRfYnl0ZSA9IGlucHV0X2J5dGVcbmxldCBpbnB1dF9iaW5hcnlfaW50ID0gaW5wdXRfYmluYXJ5X2ludFxubGV0IGlucHV0X3ZhbHVlID0gaW5wdXRfdmFsdWVcbmxldCBzZWVrX2luID0gc2Vla19pblxubGV0IHBvc19pbiA9IHBvc19pblxubGV0IGluX2NoYW5uZWxfbGVuZ3RoID0gaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZV9pbiA9IGNsb3NlX2luXG5sZXQgY2xvc2VfaW5fbm9lcnIgPSBjbG9zZV9pbl9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9pbiA9IHNldF9iaW5hcnlfbW9kZV9pblxubW9kdWxlIExhcmdlRmlsZSA9IExhcmdlRmlsZVxudHlwZSBub25yZWMgJ2EgcmVmID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxudHlwZSBub25yZWMgKCdhLCdiKSByZXN1bHQgPSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxubGV0IHN0cmluZ19vZl9mb3JtYXQgPSBzdHJpbmdfb2ZfZm9ybWF0XG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5sZXQgKCBeXiApID0gKCBeXiApXG5sZXQgZXhpdCA9IGV4aXRcbmxldCBhdF9leGl0ID0gYXRfZXhpdFxubGV0IHZhbGlkX2Zsb2F0X2xleGVtID0gdmFsaWRfZmxvYXRfbGV4ZW1cbmxldCBkb19hdF9leGl0ID0gZG9fYXRfZXhpdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKGYgeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICAgIHwgU29tZSB5IC0+IENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGlmIGYgeFxuICAgICAgdGhlbiBDb25zICh4LCBmaWx0ZXIgZiBuZXh0KVxuICAgICAgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5cbmxldCByZWMgY29uY2F0IHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgIGFwcGVuZCB4IChjb25jYXQgbmV4dCkgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgYXBwZW5kIChmIHgpIChmbGF0X21hcCBmIG5leHQpICgpXG5cbmxldCBjb25jYXRfbWFwID0gZmxhdF9tYXBcblxubGV0IGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyBzZXEgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgaXRlciBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPSBOb25lIHwgU29tZSBvZiAnYVxuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCBzb21lIHYgPSBTb21lIHZcbmxldCB2YWx1ZSBvIH5kZWZhdWx0ID0gbWF0Y2ggbyB3aXRoIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBkZWZhdWx0XG5sZXQgZ2V0ID0gZnVuY3Rpb24gU29tZSB2IC0+IHYgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxubGV0IGJpbmQgbyBmID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBmIHZcbmxldCBqb2luID0gZnVuY3Rpb24gU29tZSBvIC0+IG8gfCBOb25lIC0+IE5vbmVcbmxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5sZXQgZm9sZCB+bm9uZSB+c29tZSA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBzb21lIHYgfCBOb25lIC0+IG5vbmVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBTb21lIHYgLT4gZiB2IHwgTm9uZSAtPiAoKVxubGV0IGlzX25vbmUgPSBmdW5jdGlvbiBOb25lIC0+IHRydWUgfCBTb21lIF8gLT4gZmFsc2VcbmxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG5cbmxldCBlcXVhbCBlcSBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gZXEgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiB0cnVlXG58IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgY21wIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBjbXAgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiAwXG58IE5vbmUsIFNvbWUgXyAtPiAtMVxufCBTb21lIF8sIE5vbmUgLT4gMVxuXG5sZXQgdG9fcmVzdWx0IH5ub25lID0gZnVuY3Rpb24gTm9uZSAtPiBFcnJvciBub25lIHwgU29tZSB2IC0+IE9rIHZcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gTm9uZSAtPiBbXSB8IFNvbWUgdiAtPiBbdl1cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBOb25lIC0+IFNlcS5lbXB0eSB8IFNvbWUgdiAtPiBTZXEucmV0dXJuIHZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnZVxuXG5sZXQgb2sgdiA9IE9rIHZcbmxldCBlcnJvciBlID0gRXJyb3IgZVxubGV0IHZhbHVlIHIgfmRlZmF1bHQgPSBtYXRjaCByIHdpdGggT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBkZWZhdWx0XG5sZXQgZ2V0X29rID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBFcnJvciBfXCJcbmxldCBnZXRfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGUgfCBPayBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIE9rIF9cIlxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcF9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBFcnJvciAoZiBlKSB8IE9rIF8gYXMgdiAtPiB2XG5sZXQgZm9sZCB+b2sgfmVycm9yID0gZnVuY3Rpb24gT2sgdiAtPiBvayB2IHwgRXJyb3IgZSAtPiBlcnJvciBlXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGJvb2wgPSBmYWxzZSB8IHRydWVcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxubGV0IGVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmV4dGVybmFsIHRvX2ludCA6IGJvb2wgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb24gZmFsc2UgLT4gMC4gfCB0cnVlIC0+IDEuXG5cbigqXG5sZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbnwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbnwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG58IF8gLT4gTm9uZVxuKilcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uIGZhbHNlIC0+IFwiZmFsc2VcIiB8IHRydWUgLT4gXCJ0cnVlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGNociBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiQ2hhci5jaHJcIiBlbHNlIHVuc2FmZV9jaHIgblxuXG5leHRlcm5hbCBieXRlc19jcmVhdGU6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0IGVzY2FwZWQgPSBmdW5jdGlvblxuICB8ICdcXCcnIC0+IFwiXFxcXCdcIlxuICB8ICdcXFxcJyAtPiBcIlxcXFxcXFxcXCJcbiAgfCAnXFxuJyAtPiBcIlxcXFxuXCJcbiAgfCAnXFx0JyAtPiBcIlxcXFx0XCJcbiAgfCAnXFxyJyAtPiBcIlxcXFxyXCJcbiAgfCAnXFxiJyAtPiBcIlxcXFxiXCJcbiAgfCAnICcgLi4gJ34nIGFzIGMgLT5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDEgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwIGM7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcbiAgfCBjIC0+XG4gICAgICBsZXQgbiA9IGNvZGUgYyBpblxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgNCBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgJ1xcXFwnO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDEgKHVuc2FmZV9jaHIgKDQ4ICsgbiAvIDEwMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDIgKHVuc2FmZV9jaHIgKDQ4ICsgKG4gLyAxMCkgbW9kIDEwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMyAodW5zYWZlX2NociAoNDggKyBuIG1vZCAxMCkpO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCBsb3dlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWidcbiAgfCAnXFwxOTInIC4uICdcXDIxNCdcbiAgfCAnXFwyMTYnIC4uICdcXDIyMicgYXMgYyAtPlxuICAgIHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneidcbiAgfCAnXFwyMjQnIC4uICdcXDI0NidcbiAgfCAnXFwyNDgnIC4uICdcXDI1NCcgYXMgYyAtPlxuICAgIHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbmxldCBsb3dlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldCByZWMgaW5pdF90YWlscmVjX2F1eCBhY2MgaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBhY2NcbiAgZWxzZSBpbml0X3RhaWxyZWNfYXV4IChmIGkgOjogYWNjKSAoaSsxKSBuIGZcblxubGV0IHJlYyBpbml0X2F1eCBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgciA9IGYgaSBpblxuICAgIHIgOjogaW5pdF9hdXggKGkrMSkgbiBmXG5cbmxldCByZXZfaW5pdF90aHJlc2hvbGQgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDEwXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzXG4gICAgIHNtYWxsLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpZiBsZW4gPiByZXZfaW5pdF90aHJlc2hvbGQgdGhlbiByZXYgKGluaXRfdGFpbHJlY19hdXggW10gMCBsZW4gZilcbiAgZWxzZSBpbml0X2F1eCAwIGxlbiBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBhIGluIHIgOjogbWFwIGYgbFxuXG5sZXQgcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGkgYSBpbiByIDo6IG1hcGkgKGkgKyAxKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXQgcmVjIG1hcDIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gbGV0IHIgPSBmIGExIGEyIGluIHIgOjogbWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9hbGwgcCA9XG4gIGxldCByZWMgZmluZCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjdVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBmaW5kICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIGFjY3UgbCBpblxuICBmaW5kIFtdXG5cbmxldCBmaWx0ZXIgPSBmaW5kX2FsbFxuXG5sZXQgZmlsdGVyaSBwIGwgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY1xuICB8IHg6OmwgLT4gYXV4IChpICsgMSkgKGlmIHAgaSB4IHRoZW4geDo6YWNjIGVsc2UgYWNjKSBsXG4gIGluXG4gIGF1eCAwIFtdIGxcblxubGV0IGZpbHRlcl9tYXAgZiA9XG4gIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGFjY3UgbFxuICAgICAgICB8IFNvbWUgdiAtPiBhdXggKHYgOjogYWNjdSkgbFxuICBpblxuICBhdXggW11cblxubGV0IGNvbmNhdF9tYXAgZiBsID1cbiAgbGV0IHJlYyBhdXggZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgbGV0IHhzID0gZiB4IGluXG4gICAgICAgYXV4IGYgKHJldl9hcHBlbmQgeHMgYWNjKSBsXG4gIGluIGF1eCBmIFtdIGxcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2N1IGwgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGxfYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1LCByZXYgbF9hY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGFjY3UsIHggPSBmIGFjY3UgeCBpblxuICAgICAgICBhdXggYWNjdSAoeCA6OiBsX2FjY3UpIGwgaW5cbiAgYXV4IGFjY3UgW10gbFxuXG5sZXQgcGFydGl0aW9uIHAgbCA9XG4gIGxldCByZWMgcGFydCB5ZXMgbm8gPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgeWVzLCByZXYgbm8pXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHBhcnQgKHggOjogeWVzKSBubyBsIGVsc2UgcGFydCB5ZXMgKHggOjogbm8pIGwgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggcCB4IHdpdGhcbiAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGxcbiAgICAgZW5kXG4gIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcmVjIHNwbGl0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoW10sIFtdKVxuICB8ICh4LHkpOjpsIC0+XG4gICAgICBsZXQgKHJ4LCByeSkgPSBzcGxpdCBsIGluICh4OjpyeCwgeTo6cnkpXG5cbmxldCByZWMgY29tYmluZSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gKGExLCBhMikgOjogY29tYmluZSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuY29tYmluZVwiXG5cbigqKiBzb3J0aW5nICopXG5cbmxldCByZWMgbWVyZ2UgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbDIgLT4gbDJcbiAgfCBsMSwgW10gLT4gbDFcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICB0aGVuIGgxIDo6IG1lcmdlIGNtcCB0MSBsMlxuICAgICAgZWxzZSBoMiA6OiBtZXJnZSBjbXAgbDEgdDJcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyIDw9IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPiAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgc29ydCA9IHN0YWJsZV9zb3J0XG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCogTm90ZTogb24gYSBsaXN0IG9mIGxlbmd0aCBiZXR3ZWVuIGFib3V0IDEwMDAwMCAoZGVwZW5kaW5nIG9uIHRoZSBtaW5vclxuICAgaGVhcCBzaXplIGFuZCB0aGUgdHlwZSBvZiB0aGUgbGlzdCkgYW5kIFN5cy5tYXhfYXJyYXlfc2l6ZSwgaXQgaXNcbiAgIGFjdHVhbGx5IGZhc3RlciB0byB1c2UgdGhlIGZvbGxvd2luZywgYnV0IGl0IG1pZ2h0IGFsc28gdXNlIG1vcmUgbWVtb3J5XG4gICBiZWNhdXNlIHRoZSBhcmd1bWVudCBsaXN0IGNhbm5vdCBiZSBkZWFsbG9jYXRlZCBpbmNyZW1lbnRhbGx5LlxuXG4gICBBbHNvLCB0aGVyZSBzZWVtcyB0byBiZSBhIGJ1ZyBpbiB0aGlzIGNvZGUgb3IgaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBvYmpfdHJ1bmNhdGUuXG5cbmV4dGVybmFsIG9ial90cnVuY2F0ZSA6ICdhIGFycmF5IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5cbmxldCBhcnJheV90b19saXN0X2luX3BsYWNlIGEgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBhY2N1IG4gcCA9XG4gICAgaWYgcCA8PSAwIHRoZW4gYWNjdSBlbHNlIGJlZ2luXG4gICAgICBpZiBwID0gbiB0aGVuIGJlZ2luXG4gICAgICAgIG9ial90cnVuY2F0ZSBhIHA7XG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgKG4tMTAwMCkgKHAtMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgbiAocC0xKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgW10gKGwtMTAwMCkgbFxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gIEFycmF5LnN0YWJsZV9zb3J0IGNtcCBhO1xuICBhcnJheV90b19saXN0X2luX3BsYWNlIGFcblxuKilcblxuXG4oKiogc29ydGluZyArIHJlbW92aW5nIGR1cGxpY2F0ZXMgKilcblxubGV0IHNvcnRfdW5pcSBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZSB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgXyA6OiBsMSwgXyA6OiBsMiAtPiBjb21wYXJlX2xlbmd0aHMgbDEgbDJcbjs7XG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG47O1xuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgcmVjIGRpcmVjdCBkZXB0aCBzZXEgOiBfIGxpc3QgPVxuICAgIGlmIGRlcHRoPTBcbiAgICB0aGVuXG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBzZXFcbiAgICAgIHw+IHJldiAoKiB0YWlscmVjICopXG4gICAgZWxzZSBtYXRjaCBzZXEoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW11cbiAgICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+IHggOjogZGlyZWN0IChkZXB0aC0xKSBuZXh0XG4gIGluXG4gIGRpcmVjdCA1MDAgc2VxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gY29weSBzIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID0gbWFwIENoYXIudXBwZXJjYXNlIHNcbmxldCBsb3dlcmNhc2UgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZSBzXG5cbmxldCBjYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2Ugc1xubGV0IHVuY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlIHNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2J5dGVzX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjRcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgc2V0X2ludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQxNl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X3VpbnQ4ID0gc2V0X2ludDhcbmxldCBzZXRfdWludDE2X25lID0gc2V0X2ludDE2X25lXG5sZXQgc2V0X3VpbnQxNl9iZSA9IHNldF9pbnQxNl9iZVxubGV0IHNldF91aW50MTZfbGUgPSBzZXRfaW50MTZfbGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogc3RyaW5nIC0+IGludCAtPiAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbm1vZHVsZSBCID0gQnl0ZXNcblxubGV0IGJ0cyA9IEIudW5zYWZlX3RvX3N0cmluZ1xubGV0IGJvcyA9IEIudW5zYWZlX29mX3N0cmluZ1xuXG5sZXQgbWFrZSBuIGMgPVxuICBCLm1ha2UgbiBjIHw+IGJ0c1xubGV0IGluaXQgbiBmID1cbiAgQi5pbml0IG4gZiB8PiBidHNcbmxldCBlbXB0eSA9IFwiXCJcbmxldCBjb3B5IHMgPVxuICBCLmNvcHkgKGJvcyBzKSB8PiBidHNcbmxldCBvZl9ieXRlcyA9IEIudG9fc3RyaW5nXG5sZXQgdG9fYnl0ZXMgPSBCLm9mX3N0cmluZ1xubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgZmlsbCA9XG4gIEIuZmlsbFxubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCByZWMgZXNjYXBlX2lmX25lZWRlZCBzIG4gaSA9XG4gICAgaWYgaSA+PSBuIHRoZW4gcyBlbHNlXG4gICAgICBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXDAwMCcuLidcXDAzMScgfCAnXFwxMjcnLi4gJ1xcMjU1JyAtPlxuICAgICAgICAgIGJ0cyAoQi5lc2NhcGVkIChib3MgcykpXG4gICAgICB8IF8gLT4gZXNjYXBlX2lmX25lZWRlZCBzIG4gKGkrMSlcbiAgaW5cbiAgZXNjYXBlX2lmX25lZWRlZCBzIChsZW5ndGggcykgMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9XG4gIEIudXBwZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlIHMgPVxuICBCLmxvd2VyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemUgcyA9XG4gIEIuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZSBzID1cbiAgQi51bmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG4oKiBub3RlOiB0aGlzIHR5cGUgZGVmaW5pdGlvbiBpcyB1c2VkIGluICdydW50aW1lL2RlYnVnZ2VyLmMnICopXG5cbmV4dGVybmFsIHRvX2NoYW5uZWw6IG91dF9jaGFubmVsIC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxuZXh0ZXJuYWwgdG9fYnl0ZXM6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGJ5dGVzXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzXCJcbmV4dGVybmFsIHRvX3N0cmluZzogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gc3RyaW5nXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB0b19idWZmZXJfdW5zYWZlOlxuICAgICAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXCJcblxubGV0IHRvX2J1ZmZlciBidWZmIG9mcyBsZW4gdiBmbGFncyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC50b19idWZmZXI6IHN1YnN0cmluZyBvdXQgb2YgYm91bmRzXCJcbiAgZWxzZSB0b19idWZmZXJfdW5zYWZlIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzXG5cbigqIFRoZSBmdW5jdGlvbnMgYmVsb3cgdXNlIGJ5dGUgc2VxdWVuY2VzIGFzIGlucHV0LCBuZXZlciB1c2luZyBhbnlcbiAgIG11dGF0aW9uLiBJdCBtYWtlcyBzZW5zZSB0byB1c2Ugbm9uLW11dGF0ZWQgW2J5dGVzXSByYXRoZXIgdGhhblxuICAgW3N0cmluZ10sIGJlY2F1c2Ugd2UgcmVhbGx5IHdvcmsgd2l0aCBzZXF1ZW5jZXMgb2YgYnl0ZXMsIG5vdFxuICAgYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuKilcblxuZXh0ZXJuYWwgZnJvbV9jaGFubmVsOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIGZyb21fYnl0ZXNfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlc1wiXG5leHRlcm5hbCBkYXRhX3NpemVfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX21hcnNoYWxfZGF0YV9zaXplXCJcblxubGV0IGhlYWRlcl9zaXplID0gMjBcbmxldCBkYXRhX3NpemUgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZGF0YV9zaXplXCJcbiAgZWxzZSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzXG5sZXQgdG90YWxfc2l6ZSBidWZmIG9mcyA9IGhlYWRlcl9zaXplICsgZGF0YV9zaXplIGJ1ZmYgb2ZzXG5cbmxldCBmcm9tX2J5dGVzIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGxlbiA9IGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnMgaW5cbiAgICBpZiBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIChoZWFkZXJfc2l6ZSArIGxlbilcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgICBlbHNlIGZyb21fYnl0ZXNfdW5zYWZlIGJ1ZmYgb2ZzXG4gIGVuZFxuXG5sZXQgZnJvbV9zdHJpbmcgYnVmZiBvZnMgPVxuICAoKiBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGlzIHNhZmUgaGVyZSwgYXMgdGhlIHByb2R1Y2VkIGJ5dGVcbiAgICAgc2VxdWVuY2UgaXMgbmV2ZXIgbXV0YXRlZCAqKVxuICBmcm9tX2J5dGVzIChCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGJ1ZmYpIG9mc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNldF90YWcgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial9zZXRfdGFnXCJcbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIHRydW5jYXRlIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgbWFyc2hhbCAob2JqIDogdCkgPVxuICBNYXJzaGFsLnRvX2J5dGVzIG9iaiBbXVxubGV0IHVubWFyc2hhbCBzdHIgcG9zID1cbiAgKE1hcnNoYWwuZnJvbV9ieXRlcyBzdHIgcG9zLCBwb3MgKyBNYXJzaGFsLnRvdGFsX3NpemUgc3RyIHBvcylcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQ1XG5cbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxubGV0IGZpbmFsX3RhZyA9IGN1c3RvbV90YWdcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIENsb3N1cmUgPSBzdHJ1Y3RcbiAgdHlwZSBpbmZvID0ge1xuICAgIGFyaXR5OiBpbnQ7XG4gICAgc3RhcnRfZW52OiBpbnQ7XG4gIH1cblxuICBsZXQgaW5mb19vZl9yYXcgKGluZm8gOiBuYXRpdmVpbnQpID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnQgaW5cbiAgICBsZXQgYXJpdHkgPVxuICAgICAgKCogc2lnbmVkOiBuZWdhdGl2ZSBmb3IgdHVwbGVkIGZ1bmN0aW9ucyAqKVxuICAgICAgaWYgU3lzLndvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDU2KVxuICAgICAgZWxzZVxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gMjQpXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfZW52ID1cbiAgICAgICgqIHN0YXJ0X2VudiBpcyB1bnNpZ25lZCwgYnV0IHdlIGtub3cgaXQgY2FuIGFsd2F5cyBmaXQgYW4gT0NhbWxcbiAgICAgICAgIGludGVnZXIgc28gd2UgdXNlIFt0b19pbnRdIGluc3RlYWQgb2YgW3Vuc2lnbmVkX3RvX2ludF0uICopXG4gICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKHNoaWZ0X2xlZnQgaW5mbyA4KSA5KSBpblxuICAgIHsgYXJpdHk7IHN0YXJ0X2VudiB9XG5cbiAgKCogbm90ZTogd2UgZXhwZWN0IGEgY2xvc3VyZSwgbm90IGFuIGluZml4IHBvaW50ZXIgKilcbiAgbGV0IGluZm8gKG9iaiA6IHQpID1cbiAgICBhc3NlcnQgKHRhZyBvYmogPSBjbG9zdXJlX3RhZyk7XG4gICAgaW5mb19vZl9yYXcgKHJhd19maWVsZCBvYmogMSlcbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWxcbmxldCBleHRlbnNpb25fbmFtZSA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5uYW1lXG5sZXQgZXh0ZW5zaW9uX2lkID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCI7O1xuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5sZXQgbWFrZV9mbG9hdCA9IGNyZWF0ZV9mbG9hdFxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICB1bnNhZmVfc2V0IHJlcyB4IChjcmVhdGUgc3kgaW5pdClcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBjcmVhdGVfbWF0cml4ID0gbWFrZV9tYXRyaXhcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gaW50IC0+IGZsb2F0IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5cblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbTogIGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEludGVybmFscyBvZiBmb3JjaW5nIGxhenkgdmFsdWVzLiAqKVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuXG5sZXQgcmFpc2VfdW5kZWZpbmVkID0gT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBVbmRlZmluZWQpXG5cbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6IE9iai50IC0+IE9iai50IC0+IHVuaXQgPSBcImNhbWxfb2JqX21ha2VfZm9yd2FyZFwiXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgKE9iai5yZXByIGJsaykgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCByYWlzZV91bmRlZmluZWQ7XG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICAgIHJlc3VsdFxuICB3aXRoIGUgLT5cbiAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJhaXNlIGVcblxuXG4oKiBBc3N1bWUgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBsYXp5ICopXG5sZXQgZm9yY2VfdmFsX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICByZXN1bHRcblxuXG4oKiBbZm9yY2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXMgZGVjbGFyZWQgYXMgYSBwcmltaXRpdmVcbiAgIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0cyBhcmd1bWVudCwgZXhjZXB0IHdoZW4gYWZsXG4gICBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxuXG5sZXQgZm9yY2UgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0cyB0YWcgY291bGQgaGF2ZVxuICAgICAgIGNoYW5nZWQgZHVyaW5nIEdDLCBzbyB0aGF0IGluZm9ybWF0aW9uIG11c3QgYmUgZm9yZ290dGVuIChzZWUgR1BSIzcxM1xuICAgICAgIGFuZCBpc3N1ZSAjNzMwMSlcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfbGF6eV9ibG9jayBsenZcblxuXG5sZXQgZm9yY2VfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW4gKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZykgZWxzZVxuICBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX3ZhbF9sYXp5X2Jsb2NrIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogJ2EgLT4gJ2EgbGF6eV90ID0gXCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkXCJcblxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cblxubGV0IGZvcmNlX3ZhbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfdmFsXG5cbmxldCBmcm9tX2Z1biAoZiA6IHVuaXQgLT4gJ2FyZykgPVxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmxhenlfdGFnIDEgaW5cbiAgT2JqLnNldF9maWVsZCB4IDAgKE9iai5yZXByIGYpO1xuICAoT2JqLm9iaiB4IDogJ2FyZyB0KVxuXG5sZXQgZnJvbV92YWwgKHYgOiAnYXJnKSA9XG4gIGxldCB0ID0gT2JqLnRhZyAoT2JqLnJlcHIgdikgaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB8fCB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5cbmxldCBpc192YWwgKGwgOiAnYXJnIHQpID0gT2JqLnRhZyAoT2JqLnJlcHIgbCkgPD4gT2JqLmxhenlfdGFnXG5cbmxldCBsYXp5X2Zyb21fZnVuID0gZnJvbV9mdW5cblxubGV0IGxhenlfZnJvbV92YWwgPSBmcm9tX3ZhbFxuXG5sZXQgbGF6eV9pc192YWwgPSBpc192YWxcblxuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGxhenlfZnJvbV92YWwgKGYgKGZvcmNlIHgpKVxuICBlbHNlIGxhenkgKGYgKGZvcmNlIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBjZWxsIG9wdGlvblxuYW5kICdhIGNlbGwgPSB7IG11dGFibGUgY291bnQgOiBpbnQ7IG11dGFibGUgZGF0YSA6ICdhIGRhdGEgfVxuYW5kICdhIGRhdGEgPVxuICAgIFNlbXB0eVxuICB8IFNjb25zIG9mICdhICogJ2EgZGF0YVxuICB8IFNhcHAgb2YgJ2EgZGF0YSAqICdhIGRhdGFcbiAgfCBTbGF6eSBvZiAnYSBkYXRhIExhenkudFxuICB8IFNnZW4gb2YgJ2EgZ2VuXG4gIHwgU2J1ZmZpbyA6IGJ1ZmZpbyAtPiBjaGFyIGRhdGFcbmFuZCAnYSBnZW4gPSB7IG11dGFibGUgY3VyciA6ICdhIG9wdGlvbiBvcHRpb247IGZ1bmMgOiBpbnQgLT4gJ2Egb3B0aW9uIH1cbmFuZCBidWZmaW8gPVxuICB7IGljIDogaW5fY2hhbm5lbDsgYnVmZiA6IGJ5dGVzOyBtdXRhYmxlIGxlbiA6IGludDsgbXV0YWJsZSBpbmQgOiBpbnQgfVxuXG5leGNlcHRpb24gRmFpbHVyZVxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgY291bnQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgeyBjb3VudCB9IC0+IGNvdW50XG5sZXQgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBTZW1wdHlcbiAgfCBTb21lIHsgZGF0YSB9IC0+IGRhdGFcblxubGV0IGZpbGxfYnVmZiBiID1cbiAgYi5sZW4gPC0gaW5wdXQgYi5pYyBiLmJ1ZmYgMCAoQnl0ZXMubGVuZ3RoIGIuYnVmZik7IGIuaW5kIDwtIDBcblxuXG5sZXQgcmVjIGdldF9kYXRhIDogdHlwZSB2LiBpbnQgLT4gdiBkYXRhIC0+IHYgZGF0YSA9IGZ1biBjb3VudCBkIC0+IG1hdGNoIGQgd2l0aFxuICgqIFJldHVybnMgZWl0aGVyIFNlbXB0eSBvciBTY29ucyhhLCBfKSBldmVuIHdoZW4gZCBpcyBhIGdlbmVyYXRvclxuICAgIG9yIGEgYnVmZmVyLiBJbiB0aG9zZSBjYXNlcywgdGhlIGl0ZW0gYSBpcyBzZWVuIGFzIGV4dHJhY3RlZCBmcm9tXG4gdGhlIGdlbmVyYXRvci9idWZmZXIuXG4gVGhlIGNvdW50IHBhcmFtZXRlciBpcyB1c2VkIGZvciBjYWxsaW5nIGBTZ2VuLWZ1bmN0aW9ucycuICAqKVxuICAgU2VtcHR5IHwgU2NvbnMgKF8sIF8pIC0+IGRcbiB8IFNhcHAgKGQxLCBkMikgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZ2V0X2RhdGEgY291bnQgZDEgd2l0aFxuICAgICAgIFNjb25zIChhLCBkMTEpIC0+IFNjb25zIChhLCBTYXBwIChkMTEsIGQyKSlcbiAgICAgfCBTZW1wdHkgLT4gZ2V0X2RhdGEgY291bnQgZDJcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICBlbmRcbiB8IFNnZW4ge2N1cnIgPSBTb21lIE5vbmV9IC0+IFNlbXB0eVxuIHwgU2dlbiAoe2N1cnIgPSBTb21lKFNvbWUgYSl9IGFzIGcpIC0+XG4gICAgIGcuY3VyciA8LSBOb25lOyBTY29ucyhhLCBkKVxuIHwgU2dlbiBnIC0+XG4gICAgIGJlZ2luIG1hdGNoIGcuZnVuYyBjb3VudCB3aXRoXG4gICAgICAgTm9uZSAtPiBnLmN1cnIgPC0gU29tZShOb25lKTsgU2VtcHR5XG4gICAgIHwgU29tZSBhIC0+IFNjb25zKGEsIGQpXG4gICAgICAgICAoKiBXYXJuaW5nOiBhbnlvbmUgdXNpbmcgZyB0aGlua3MgdGhhdCBhbiBpdGVtIGhhcyBiZWVuIHJlYWQgKilcbiAgICAgZW5kXG4gfCBTYnVmZmlvIGIgLT5cbiAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIFNlbXB0eSBlbHNlXG4gICAgICAgbGV0IHIgPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZiBiLmluZCBpblxuICAgICAgICgqIFdhcm5pbmc6IGFueW9uZSB1c2luZyBnIHRoaW5rcyB0aGF0IGFuIGl0ZW0gaGFzIGJlZW4gcmVhZCAqKVxuICAgICAgIGIuaW5kIDwtIHN1Y2MgYi5pbmQ7IFNjb25zKHIsIGQpXG4gfCBTbGF6eSBmIC0+IGdldF9kYXRhIGNvdW50IChMYXp5LmZvcmNlIGYpXG5cblxubGV0IHJlYyBwZWVrX2RhdGEgOiB0eXBlIHYuIHYgY2VsbCAtPiB2IG9wdGlvbiA9IGZ1biBzIC0+XG4gKCogY29uc3VsdCB0aGUgZmlyc3QgaXRlbSBvZiBzICopXG4gbWF0Y2ggcy5kYXRhIHdpdGhcbiAgIFNlbXB0eSAtPiBOb25lXG4gfCBTY29ucyAoYSwgXykgLT4gU29tZSBhXG4gfCBTYXBwIChfLCBfKSAtPlxuICAgICBiZWdpbiBtYXRjaCBnZXRfZGF0YSBzLmNvdW50IHMuZGF0YSB3aXRoXG4gICAgICAgU2NvbnMoYSwgXykgYXMgZCAtPiBzLmRhdGEgPC0gZDsgU29tZSBhXG4gICAgIHwgU2VtcHR5IC0+IE5vbmVcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICBlbmRcbiB8IFNsYXp5IGYgLT4gcy5kYXRhIDwtIChMYXp5LmZvcmNlIGYpOyBwZWVrX2RhdGEgc1xuIHwgU2dlbiB7Y3VyciA9IFNvbWUgYX0gLT4gYVxuIHwgU2dlbiBnIC0+IGxldCB4ID0gZy5mdW5jIHMuY291bnQgaW4gZy5jdXJyIDwtIFNvbWUgeDsgeFxuIHwgU2J1ZmZpbyBiIC0+XG4gICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgIGlmIGIubGVuID09IDAgdGhlbiBiZWdpbiBzLmRhdGEgPC0gU2VtcHR5OyBOb25lIGVuZFxuICAgICBlbHNlIFNvbWUgKEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmIGIuaW5kKVxuXG5cbmxldCBwZWVrID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHMgLT4gcGVla19kYXRhIHNcblxuXG5sZXQgcmVjIGp1bmtfZGF0YSA6IHR5cGUgdi4gdiBjZWxsIC0+IHVuaXQgPSBmdW4gcyAtPlxuICBtYXRjaCBzLmRhdGEgd2l0aFxuICAgIFNjb25zIChfLCBkKSAtPiBzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBzLmRhdGEgPC0gZFxuICB8IFNnZW4gKHtjdXJyID0gU29tZSBffSBhcyBnKSAtPiBzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBnLmN1cnIgPC0gTm9uZVxuICB8IFNidWZmaW8gYiAtPlxuICAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgIGlmIGIubGVuID09IDAgdGhlbiBzLmRhdGEgPC0gU2VtcHR5XG4gICAgICBlbHNlIChzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBiLmluZCA8LSBzdWNjIGIuaW5kKVxuICB8IF8gLT5cbiAgICAgIG1hdGNoIHBlZWtfZGF0YSBzIHdpdGhcbiAgICAgICAgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4ganVua19kYXRhIHNcblxuXG5sZXQganVuayA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGF0YSAtPiBqdW5rX2RhdGEgZGF0YVxuXG5sZXQgcmVjIG5nZXRfZGF0YSBuIHMgPVxuICBpZiBuIDw9IDAgdGhlbiBbXSwgcy5kYXRhLCAwXG4gIGVsc2VcbiAgICBtYXRjaCBwZWVrX2RhdGEgcyB3aXRoXG4gICAgICBTb21lIGEgLT5cbiAgICAgICAganVua19kYXRhIHM7XG4gICAgICAgIGxldCAoYWwsIGQsIGspID0gbmdldF9kYXRhIChwcmVkIG4pIHMgaW4gYSA6OiBhbCwgU2NvbnMgKGEsIGQpLCBzdWNjIGtcbiAgICB8IE5vbmUgLT4gW10sIHMuZGF0YSwgMFxuXG5cbmxldCBucGVla19kYXRhIG4gcyA9XG4gIGxldCAoYWwsIGQsIGxlbikgPSBuZ2V0X2RhdGEgbiBzIGluXG4gIHMuY291bnQgPC0gKHMuY291bnQgLSBsZW4pO1xuICBzLmRhdGEgPC0gZDtcbiAgYWxcblxuXG5sZXQgbnBlZWsgbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgZCAtPiBucGVla19kYXRhIG4gZFxuXG5sZXQgbmV4dCBzID1cbiAgbWF0Y2ggcGVlayBzIHdpdGhcbiAgICBTb21lIGEgLT4ganVuayBzOyBhXG4gIHwgTm9uZSAtPiByYWlzZSBGYWlsdXJlXG5cblxubGV0IGVtcHR5IHMgPVxuICBtYXRjaCBwZWVrIHMgd2l0aFxuICAgIFNvbWUgXyAtPiByYWlzZSBGYWlsdXJlXG4gIHwgTm9uZSAtPiAoKVxuXG5cbmxldCBpdGVyIGYgc3RybSA9XG4gIGxldCByZWMgZG9fcmVjICgpID1cbiAgICBtYXRjaCBwZWVrIHN0cm0gd2l0aFxuICAgICAgU29tZSBhIC0+IGp1bmsgc3RybTsgaWdub3JlKGYgYSk7IGRvX3JlYyAoKVxuICAgIHwgTm9uZSAtPiAoKVxuICBpblxuICBkb19yZWMgKClcblxuXG4oKiBTdHJlYW0gYnVpbGRpbmcgZnVuY3Rpb25zICopXG5cbmxldCBmcm9tIGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTZ2VuIHtjdXJyID0gTm9uZTsgZnVuYyA9IGZ9fVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgU29tZSB7Y291bnQgPSAwOyBkYXRhID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4geCBsIC0+IFNjb25zICh4LCBsKSkgbCBTZW1wdHl9XG5cblxubGV0IG9mX3N0cmluZyBzID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgZnJvbSAoZnVuIF8gLT5cbiAgICAoKiBXZSBjYW5ub3QgdXNlIHRoZSBpbmRleCBwYXNzZWQgYnkgdGhlIFtmcm9tXSBmdW5jdGlvbiBkaXJlY3RseVxuICAgICAgIGJlY2F1c2UgaXQgcmV0dXJucyB0aGUgY3VycmVudCBzdHJlYW0gY291bnQsIHdpdGggYWJzb2x1dGVseSBub1xuICAgICAgIGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgc3RhcnQgZnJvbSAwLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2VcbiAgICAgICBvZiBbU3RyZWFtLmljb25zICdjJyAoU3RyZWFtLmZyb21fc3RyaW5nIFwiYWJcIildLCB0aGUgZmlyc3RcbiAgICAgICBhY2Nlc3MgdG8gdGhlIHN0cmluZyB3aWxsIGJlIG1hZGUgd2l0aCBjb3VudCBbMV0gYWxyZWFkeS5cbiAgICAqKVxuICAgIGxldCBjID0gIWNvdW50IGluXG4gICAgaWYgYyA8IFN0cmluZy5sZW5ndGggc1xuICAgIHRoZW4gKGluY3IgY291bnQ7IFNvbWUgcy5bY10pXG4gICAgZWxzZSBOb25lKVxuXG5cbmxldCBvZl9ieXRlcyBzID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgZnJvbSAoZnVuIF8gLT5cbiAgICBsZXQgYyA9ICFjb3VudCBpblxuICAgIGlmIGMgPCBCeXRlcy5sZW5ndGggc1xuICAgIHRoZW4gKGluY3IgY291bnQ7IFNvbWUgKEJ5dGVzLmdldCBzIGMpKVxuICAgIGVsc2UgTm9uZSlcblxuXG5sZXQgb2ZfY2hhbm5lbCBpYyA9XG4gIFNvbWUge2NvdW50ID0gMDtcbiAgICAgICAgZGF0YSA9IFNidWZmaW8ge2ljID0gaWM7IGJ1ZmYgPSBCeXRlcy5jcmVhdGUgNDA5NjsgbGVuID0gMDsgaW5kID0gMH19XG5cblxuKCogU3RyZWFtIGV4cHJlc3Npb25zIGJ1aWxkZXJzICopXG5cbmxldCBpYXBwIGkgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNhcHAgKGRhdGEgaSwgZGF0YSBzKX1cbmxldCBpY29ucyBpIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTY29ucyAoaSwgZGF0YSBzKX1cbmxldCBpc2luZyBpID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2NvbnMgKGksIFNlbXB0eSl9XG5cbmxldCBsYXBwIGYgcyA9XG4gIFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNhcHAgKGRhdGEgKGYgKCkpLCBkYXRhIHMpKSl9XG5cbmxldCBsY29ucyBmIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTY29ucyAoZiAoKSwgZGF0YSBzKSkpfVxubGV0IGxzaW5nIGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTY29ucyAoZiAoKSwgU2VtcHR5KSkpfVxuXG5sZXQgc2VtcHR5ID0gTm9uZVxubGV0IHNsYXp5IGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShkYXRhIChmICgpKSkpfVxuXG4oKiBGb3IgZGVidWdnaW5nIHVzZSAqKVxuXG5sZXQgcmVjIGR1bXAgOiB0eXBlIHYuICh2IC0+IHVuaXQpIC0+IHYgdCAtPiB1bml0ID0gZnVuIGYgcyAtPlxuICBwcmludF9zdHJpbmcgXCJ7Y291bnQgPSBcIjtcbiAgcHJpbnRfaW50IChjb3VudCBzKTtcbiAgcHJpbnRfc3RyaW5nIFwiOyBkYXRhID0gXCI7XG4gIGR1bXBfZGF0YSBmIChkYXRhIHMpO1xuICBwcmludF9zdHJpbmcgXCJ9XCI7XG4gIHByaW50X25ld2xpbmUgKClcbmFuZCBkdW1wX2RhdGEgOiB0eXBlIHYuICh2IC0+IHVuaXQpIC0+IHYgZGF0YSAtPiB1bml0ID0gZnVuIGYgLT5cbiAgZnVuY3Rpb25cbiAgICBTZW1wdHkgLT4gcHJpbnRfc3RyaW5nIFwiU2VtcHR5XCJcbiAgfCBTY29ucyAoYSwgZCkgLT5cbiAgICAgIHByaW50X3N0cmluZyBcIlNjb25zIChcIjtcbiAgICAgIGYgYTtcbiAgICAgIHByaW50X3N0cmluZyBcIiwgXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiKVwiXG4gIHwgU2FwcCAoZDEsIGQyKSAtPlxuICAgICAgcHJpbnRfc3RyaW5nIFwiU2FwcCAoXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkMTtcbiAgICAgIHByaW50X3N0cmluZyBcIiwgXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkMjtcbiAgICAgIHByaW50X3N0cmluZyBcIilcIlxuICB8IFNsYXp5IF8gLT4gcHJpbnRfc3RyaW5nIFwiU2xhenlcIlxuICB8IFNnZW4gXyAtPiBwcmludF9zdHJpbmcgXCJTZ2VuXCJcbiAgfCBTYnVmZmlvIF8gLT4gcHJpbnRfc3RyaW5nIFwiU2J1ZmZpb1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGJ1ZmZlciA6IGJ5dGVzO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBtdXRhYmxlIGxlbmd0aCA6IGludDtcbiAgaW5pdGlhbF9idWZmZXIgOiBieXRlc31cbigqIEludmFyaWFudHM6IGFsbCBwYXJ0cyBvZiB0aGUgY29kZSBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyB0aGF0OlxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIubGVuZ3RoXVxuICAgLSBbYi5sZW5ndGggPSBCeXRlcy5sZW5ndGggYi5idWZmZXJdXG5cbiAgIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IFtiLnBvc2l0aW9uID0gYi5sZW5ndGhdIGlzIGxlZ2FsLFxuICAgaXQgbWVhbnMgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIHdpbGwgaGF2ZSB0byBiZSBleHRlbmRlZFxuICAgYmVmb3JlIGFueSBmdXJ0aGVyIGFkZGl0aW9uLiAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuIGxldCBuID0gaWYgbiA8IDEgdGhlbiAxIGVsc2UgbiBpblxuIGxldCBuID0gaWYgbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBlbHNlIG4gaW5cbiBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4ge2J1ZmZlciA9IHM7IHBvc2l0aW9uID0gMDsgbGVuZ3RoID0gbjsgaW5pdGlhbF9idWZmZXIgPSBzfVxuXG5sZXQgY29udGVudHMgYiA9IEJ5dGVzLnN1Yl9zdHJpbmcgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5sZXQgdG9fYnl0ZXMgYiA9IEJ5dGVzLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IHN1YiBiIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYi5wb3NpdGlvbiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLnN1YlwiXG4gIGVsc2UgQnl0ZXMuc3ViX3N0cmluZyBiLmJ1ZmZlciBvZnMgbGVuXG5cblxubGV0IGJsaXQgc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiBzcmMucG9zaXRpb24gLSBsZW5cbiAgICAgICAgICAgICB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChCeXRlcy5sZW5ndGggZHN0KSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmJsaXRcIlxuICBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXQgc3JjLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gYi5wb3NpdGlvbiB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgb2ZzXG5cblxubGV0IGxlbmd0aCBiID0gYi5wb3NpdGlvblxuXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgYi5idWZmZXIgPC0gYi5pbml0aWFsX2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gQnl0ZXMubGVuZ3RoIGIuYnVmZmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmJ1ZmZlcl0gaWYgbmVjZXNzYXJ5IC0tIGFuZCB0aHVzXG4gICBpbmNyZWFzaW5nIFtiLmxlbmd0aF0uXG5cbiAgIEluIHBhcnRpY3VsYXIsIGFmdGVyIFtyZXNpemUgYiBtb3JlXSBpcyBjYWxsZWQsIGEgZGlyZWN0IGFjY2VzcyBvZlxuICAgc2l6ZSBbbW9yZV0gYXQgW2IucG9zaXRpb25dIHdpbGwgYWx3YXlzIGJlIGluLWJvdW5kcywgc28gdGhhdFxuICAgKHVuc2FmZV97Z2V0LHNldH0pIG1heSBiZSB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmJ1ZmZlciA8LSBuZXdfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSAhbmV3X2xlbjtcbiAgYXNzZXJ0IChiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gIGFzc2VydCAob2xkX3BvcyArIG1vcmUgPD0gYi5sZW5ndGgpO1xuICAoKVxuICAoKiBOb3RlOiB0aGVyZSBhcmUgdmFyaW91cyBzaXR1YXRpb25zIChwcmVlbXB0aXZlIHRocmVhZHMsIHNpZ25hbHMgYW5kXG4gICAgIGdjIGZpbmFsaXplcnMpIHdoZXJlIE9DYW1sIGNvZGUgbWF5IGJlIHJ1biBhc3luY2hyb25vdXNseTsgaW5cbiAgICAgcGFydGljdWxhciwgdGhlcmUgbWF5IGJlIGEgcmFjZSB3aXRoIGFub3RoZXIgdXNlciBvZiBbYl0sIGNoYW5naW5nXG4gICAgIGl0cyBtdXRhYmxlIGZpZWxkcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBbcmVzaXplXSBjYWxsLiBUaGUgQnVmZmVyXG4gICAgIG1vZHVsZSBkb2VzIG5vdCBwcm92aWRlIGFueSBjb3JyZWN0bmVzcyBndWFyYW50ZWUgaWYgdGhhdCBoYXBwZW5zLFxuICAgICBidXQgd2UgbXVzdCBzdGlsbCBlbnN1cmUgdGhhdCB0aGUgZGF0YXN0cnVjdHVyZSBpbnZhcmlhbnRzIGhvbGQgZm9yXG4gICAgIG1lbW9yeS1zYWZldHkgLS0gYXMgd2UgcGxhbiB0byB1c2UgW3Vuc2FmZV97Z2V0LHNldH1dLlxuXG4gICAgIFRoZXJlIGFyZSB0d28gcG90ZW50aWFsIGFsbG9jYXRpb24gcG9pbnRzIGluIHRoaXMgZnVuY3Rpb24sXG4gICAgIFtyZWZdIGFuZCBbQnl0ZXMuY3JlYXRlXSwgYnV0IGFsbCByZWFkcyBhbmQgd3JpdGVzIHRvIHRoZSBmaWVsZHNcbiAgICAgb2YgW2JdIGhhcHBlbiBiZWZvcmUgYm90aCBvZiB0aGVtIG9yIGFmdGVyIGJvdGggb2YgdGhlbS5cblxuICAgICBXZSB0aGVyZWZvcmUgYXNzdW1lIHRoYXQgW2IucG9zaXRpb25dIG1heSBjaGFuZ2UgYXQgdGhlc2UgYWxsb2NhdGlvbnMsXG4gICAgIGFuZCBjaGVjayB0aGF0IHRoZSBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIHBvc3Rjb25kaXRpb25cbiAgICAgaG9sZHMgZm9yIGJvdGggdmFsdWVzIG9mIFtiLnBvc2l0aW9uXSwgYmVmb3JlIG9yIGFmdGVyIHRoZSBmdW5jdGlvblxuICAgICBpcyBjYWxsZWQuIE1vcmUgcHJlY2lzZWx5LCB0aGUgZm9sbG93aW5nIGludmFyaWFudHMgbXVzdCBob2xkIGlmIHRoZVxuICAgICBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3RseSwgaW4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIGJ1ZmZlciBpbnZhcmlhbnRzOlxuICAgICAtIFtvbGQoYi5wb3NpdGlvbikgKyBtb3JlIDw9IG5ldyhiLmxlbmd0aCldXG4gICAgIC0gW25ldyhiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbb2xkKGIubGVuZ3RoKSA8PSBuZXcoYi5sZW5ndGgpXVxuXG4gICAgIE5vdGU6IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBvbGQoYi5sZW5ndGgpXSBkb2VzICpub3QqXG4gICAgIGhvbGQgaW4gZ2VuZXJhbCwgYXMgaXQgaXMgcHJlY2lzZWx5IHRoZSBjYXNlIHdoZXJlIHlvdSBuZWVkXG4gICAgIHRvIGNhbGwgW3Jlc2l6ZV0gdG8gaW5jcmVhc2UgW2IubGVuZ3RoXS5cblxuICAgICBOb3RlOiBbYXNzZXJ0XSBhYm92ZSBkb2VzIG5vdCBtZWFuIHRoYXQgd2Uga25vdyB0aGUgY29uZGl0aW9uc1xuICAgICBhbHdheXMgaG9sZCwgYnV0IHRoYXQgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gY29ycmVjdGx5XG4gICAgIG9ubHkgaWYgdGhleSBob2xkLlxuXG4gICAgIE5vdGU6IHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgZG9lcyBub3QgbmVlZFxuICAgICB0byBiZSBjaGVja2VkIHdpdGggdGhpcyBsZXZlbCBvZiBzY3J1dGlueSwgZ2l2ZW4gdGhhdCB0aGV5XG4gICAgIHJlYWQvd3JpdGUgdGhlIGJ1ZmZlciBpbW1lZGlhdGVseSBhZnRlciBjaGVja2luZyB0aGF0XG4gICAgIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gaG9sZCBvciBjYWxsaW5nIFtyZXNpemVdLlxuICAqKVxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbiBsZXQgYWRkX3V0Zl84X3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICBhZGRfY2hhciBiIChDaGFyLnVuc2FmZV9jaHIgdSlcbiB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4QzAgbG9yICh1IGxzciA2KSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMyA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMztcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEUwIGxvciAodSBsc3IgMTIpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDNcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhGMCBsb3IgKHUgbHNyIDE4KSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgMTIpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMylcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAodSBsYW5kIDB4RkYpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsc3IgOCkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgKCogVGhlIGFzc2VydGlvbiBiZWxvdyBtYXkgZmFpbCBpbiB3ZWlyZCBzY2VuYXJpbyB3aGVyZVxuICAgICB0aHJlYWRlZC9maW5hbGl6ZXIgY29kZSwgcnVuIGFzeW5jaHJvbm91c2x5IGR1cmluZyB0aGVcbiAgICAgW3JlYWxseV9pbnB1dF91cF90b10gY2FsbCwgcmFjZXMgb24gdGhlIGJ1ZmZlcjsgd2UgZG9uJ3QgZW5zdXJlXG4gICAgIGNvcnJlY3RuZXNzIGluIHRoaXMgY2FzZSwgYnV0IG5lZWQgdG8gcHJlc2VydmUgdGhlIGludmFyaWFudHMgZm9yXG4gICAgIG1lbW9yeS1zYWZldHkgKHNlZSBkaXNjdXNzaW9uIG9mIFtyZXNpemVdKS4gKilcbiAgYXNzZXJ0IChiLnBvc2l0aW9uICsgbiA8PSBiLmxlbmd0aCk7XG4gIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gIG5cblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBsZXQgbiA9IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiBpblxuICAoKiBJdCBpcyBpbnRlbnRpb25hbCB0aGF0IGEgY29uc3VtZXIgY2F0Y2hpbmcgRW5kX29mX2ZpbGVcbiAgICAgd2lsbCBzZWUgdGhlIGRhdGEgd3JpdHRlbiAoc2VlICM2NzE5LCAjNzEzNikuICopXG4gIGlmIG4gPCBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgKClcblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyBiLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG5sZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIGlmIHMuW2ldID0gb3BlbmluZyB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbSBlbHNlXG4gICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG5sZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyB8ICdfJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgfCBfIC0+IGkgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxubGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgIFN0cmluZy5zdWIgcyBzdGFydCAoc3RvcCAtIHN0YXJ0KSwgc3RvcFxuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYiBmIHMgPVxuICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgaWYgaSA8IGxpbSB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICAgbGV0IGogPSBpICsgMSBpblxuICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICBzdWJzdCAnICcgMFxuXG5sZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJCdWZmZXIudHJ1bmNhdGVcIlxuICAgIGVsc2VcbiAgICAgIGIucG9zaXRpb24gPC0gbGVuXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cblxubGV0IGFkZF9pbnQ4IGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIHVuc2FmZV9zZXRfaW50OCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAyIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgdW5zYWZlX3NldF9pbnQxNiBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyA0IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgdW5zYWZlX3NldF9pbnQzMiBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyA4IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgODtcbiAgdW5zYWZlX3NldF9pbnQ2NCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAoKiBUb29scyB0byBtYW5pcHVsYXRlIHNjYW5uaW5nIHNldCBvZiBjaGFycyAoc2VlICVbLi4uXSkgKilcblxudHlwZSBtdXRhYmxlX2NoYXJfc2V0ID0gYnl0ZXNcblxuKCogQ3JlYXRlIGEgZnJlc2gsIGVtcHR5LCBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGNyZWF0ZV9jaGFyX3NldCAoKSA9IEJ5dGVzLm1ha2UgMzIgJ1xcMDAwJ1xuXG4oKiBBZGQgYSBjaGFyIGluIGEgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICBCeXRlcy5zZXQgY2hhcl9zZXQgc3RyX2luZFxuICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKEJ5dGVzLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsb3IgbWFzaykpXG5cbmxldCBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBCeXRlcy50b19zdHJpbmcgY2hhcl9zZXRcblxuKCogQ29tcHV0ZSB0aGUgY29tcGxlbWVudCBvZiBhIGNoYXIgc2V0LiAqKVxubGV0IHJldl9jaGFyX3NldCBjaGFyX3NldCA9XG4gIGxldCBjaGFyX3NldCcgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIDMxIGRvXG4gICAgQnl0ZXMuc2V0IGNoYXJfc2V0JyBpXG4gICAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IGkpIGx4b3IgMHhGRikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGNoYXJfc2V0J1xuXG4oKiBSZXR1cm4gdHJ1ZSBpZiBhIGBjJyBpcyBpbiBgY2hhcl9zZXQnLiAqKVxubGV0IGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxhbmQgbWFzaykgPD4gMFxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogSWdub3JlZCBwYXJhbSBjb252ZXJzaW9uICopXG5cbigqIEdBRFQgdXNlZCB0byBhYnN0cmFjdCBhbiBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlci4gKilcbigqIFNlZSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiID0gUGFyYW1fZm9ybWF0X0VCQiA6XG4gICAgKCd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiXG5cbigqIENvbXB1dGUgYSBwYWRkaW5nIGFzc29jaWF0ZWQgdG8gYSBwYWRfb3B0aW9uIChzZWUgXCIlXzQyZFwiKS4gKilcbmxldCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wYWRkaW5nXG4gIHwgU29tZSB3aWR0aCAtPiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuXG4oKiBDb21wdXRlIGEgcHJlY2lzaW9uIGFzc29jaWF0ZWQgdG8gYSBwcmVjX29wdGlvbiAoc2VlIFwiJV8uNDJmXCIpLiAqKVxubGV0IHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQgPSBtYXRjaCBwcmVjX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wcmVjaXNpb25cbiAgfCBTb21lIG5kZWMgLT4gTGl0X3ByZWNpc2lvbiBuZGVjXG5cbigqIFR1cm4gYW4gaWdub3JlZCBwYXJhbSBpbnRvIGl0cyBlcXVpdmFsZW50IG5vdC1pZ25vcmVkIGZvcm1hdCBub2RlLiAqKVxuKCogVXNlZCBmb3IgZm9ybWF0IHByZXR0eS1wcmludGluZyBhbmQgU2NhbmYuICopXG5sZXQgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+ICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYXJhbV9mb3JtYXRfZWJiID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2hhciBmbXQpXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX2NoYXIgZm10KVxuICB8IElnbm9yZWRfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDMyIChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50MzIgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChOYXRpdmVpbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQ2NCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDY0IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfZmxvYXQgKHBhZF9vcHQsIHByZWNfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGbG9hdCAoKEZsb2F0X2ZsYWdfLCBGbG9hdF9mKSxcbiAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Jvb2wgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEJvb2wgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChSZWFkZXIgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10KVxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlcyAqKVxuXG50eXBlICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlbiA9XG4gIHwgQWNjX29wZW5fdGFnIG9mICgnYiwgJ2MpIGFjY1xuICB8IEFjY19vcGVuX2JveCBvZiAoJ2IsICdjKSBhY2NcblxuKCogUmV2ZXJzZWQgbGlzdCBvZiBwcmludGluZyBhdG9tcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBwcmludGYgYXJndW1lbnRzLiAqKVxuYW5kICgnYiwgJ2MpIGFjYyA9XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IG9mICgnYiwgJ2MpIGFjYyAqIGZvcm1hdHRpbmdfbGl0XG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gb2YgKCdiLCAnYykgYWNjICogKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuXG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBMaXRlcmFsIHN0cmluZyAqKVxuICB8IEFjY19jaGFyX2xpdGVyYWwgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIExpdGVyYWwgY2hhciAqKVxuICB8IEFjY19kYXRhX3N0cmluZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIEdlbmVyYXRlZCBzdHJpbmcgKilcbiAgfCBBY2NfZGF0YV9jaGFyICAgICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBHZW5lcmF0ZWQgY2hhciAqKVxuICB8IEFjY19kZWxheSAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IgLT4gJ2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBEZWxheWVkIHByaW50aW5nICglYSwgJXQpICopXG4gIHwgQWNjX2ZsdXNoICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAgICAgICAgICAgICAgKCogRmx1c2ggKilcbiAgfCBBY2NfaW52YWxpZF9hcmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nXG4gICAgICAoKiBSYWlzZSBJbnZhbGlkX2FyZ3VtZW50IG1zZyAqKVxuICB8IEVuZF9vZl9hY2NcblxuKCogTGlzdCBvZiBoZXRlcm9nZW5lb3VzIHZhbHVlcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBzY2FuZiBjYWxsYmFjayBhcmd1bWVudHMuICopXG50eXBlICgnYSwgJ2IpIGhldGVyX2xpc3QgPVxuICB8IENvbnMgOiAnYyAqICgnYSwgJ2IpIGhldGVyX2xpc3QgLT4gKCdjIC0+ICdhLCAnYikgaGV0ZXJfbGlzdFxuICB8IE5pbCA6ICgnYiwgJ2IpIGhldGVyX2xpc3RcblxuKCogRXhpc3RlbnRpYWwgQmxhY2sgQm94ZXMuICopXG4oKiBVc2VkIHRvIGFic3RyYWN0IHNvbWUgZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRkaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmIgPSBQYWRkaW5nX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRwcmVjIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmIgPSBQYWRwcmVjX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICd6KSBwcmVjaXNpb24gKiAoJ3osICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZGRpbmdfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiID0gUGFkZGluZ19mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwYWRkaW5nICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wcmVjaXNpb25fZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmIgPSBQcmVjaXNpb25fZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkcHJlY19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmIgPSBQYWRwcmVjX2ZtdF9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAncCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgdGhlICdhIGFuZCAnZCBwYXJhbWV0ZXJzIG9mIGFuIGZtdC4gKilcbigqIE91dHB1dCB0eXBlIG9mIHRoZSBmb3JtYXQgcGFyc2luZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiID0gRm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2Zvcm1hdF9nZW4gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiID0gRm10X2ZtdHR5X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXQgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYiA9IEZtdHR5X2ZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10dHkgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10X2ZtdHR5X2ViYiAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgZm10dHkgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIGZvcm1hdCB0eXBlcy4gKilcbnR5cGUgZm10dHlfZWJiID0gRm10dHlfRUJCIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+IGZtdHR5X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcGFkZGluZyB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcGFkZGluZ3MuICopXG50eXBlIHBhZGRpbmdfZWJiID0gUGFkZGluZ19FQkIgOiAoJ2EsICdiKSBwYWRkaW5nIC0+IHBhZGRpbmdfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwcmVjaXNpb24gdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHByZWNpc2lvbnMuICopXG50eXBlIHByZWNpc2lvbl9lYmIgPSBQcmVjaXNpb25fRUJCIDogKCdhLCAnYikgcHJlY2lzaW9uIC0+IHByZWNpc2lvbl9lYmJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb25zdGFudHMgKilcblxuKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0IHByaW50aW5nLiAqKVxubGV0IGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252ID1cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyB8IEZsb2F0X2ggfCBGbG9hdF9IXG4gIHwgRmxvYXRfQ0YgLT4gLTZcbiAgKCogRm9yICVoICVIIGFuZCAlI0YgZm9ybWF0cywgYSBuZWdhdGl2ZSBwcmVjaXNpb24gbWVhbnMgXCJhcyBtYW55IGRpZ2l0cyBhc1xuICAgICBuZWNlc3NhcnlcIi4gIEZvciB0aGUgb3RoZXIgRlAgZm9ybWF0cywgd2UgdGFrZSB0aGUgYWJzb2x1dGUgdmFsdWVcbiAgICAgb2YgdGhlIHByZWNpc2lvbiwgaGVuY2UgNiBkaWdpdHMgYnkgZGVmYXVsdC4gKilcbiAgfCBGbG9hdF9GIC0+IDEyXG4gICgqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBPQ2FtbCBmbG9hdCBwcmludGluZyAoJUYpLiAqKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEV4dGVybmFscyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQ6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDMyOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfbmF0aXZlaW50OiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ2NDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxuZXh0ZXJuYWwgaGV4c3RyaW5nX29mX2Zsb2F0OiBmbG9hdCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0XCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICgqIFRvb2xzIHRvIHByZXR0eS1wcmludCBmb3JtYXRzICopXG5cbigqIFR5cGUgb2YgZXh0ZW5zaWJsZSBjaGFyYWN0ZXIgYnVmZmVycy4gKilcbnR5cGUgYnVmZmVyID0ge1xuICBtdXRhYmxlIGluZCA6IGludDtcbiAgbXV0YWJsZSBieXRlcyA6IGJ5dGVzO1xufVxuXG4oKiBDcmVhdGUgYSBmcmVzaCBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NyZWF0ZSBpbml0X3NpemUgPSB7IGluZCA9IDA7IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGluaXRfc2l6ZSB9XG5cbigqIENoZWNrIHNpemUgb2YgdGhlIGJ1ZmZlciBhbmQgZ3JvdyBpdCBpZiBuZWVkZWQuICopXG5sZXQgYnVmZmVyX2NoZWNrX3NpemUgYnVmIG92ZXJoZWFkID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYuYnl0ZXMgaW5cbiAgbGV0IG1pbl9sZW4gPSBidWYuaW5kICsgb3ZlcmhlYWQgaW5cbiAgaWYgbWluX2xlbiA+IGxlbiB0aGVuIChcbiAgICBsZXQgbmV3X2xlbiA9IEludC5tYXggKGxlbiAqIDIpIG1pbl9sZW4gaW5cbiAgICBsZXQgbmV3X3N0ciA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYuYnl0ZXMgMCBuZXdfc3RyIDAgbGVuO1xuICAgIGJ1Zi5ieXRlcyA8LSBuZXdfc3RyO1xuICApXG5cbigqIEFkZCB0aGUgY2hhcmFjdGVyIGBjJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfY2hhciBidWYgYyA9XG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiAxO1xuICBCeXRlcy5zZXQgYnVmLmJ5dGVzIGJ1Zi5pbmQgYztcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgMVxuXG4oKiBBZGQgdGhlIHN0cmluZyBgcycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX3N0cmluZyBidWYgcyA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBzdHJfbGVuO1xuICBTdHJpbmcuYmxpdCBzIDAgYnVmLmJ5dGVzIGJ1Zi5pbmQgc3RyX2xlbjtcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgc3RyX2xlblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY29udGVudHMgYnVmID1cbiAgQnl0ZXMuc3ViX3N0cmluZyBidWYuYnl0ZXMgMCBidWYuaW5kXG5cbigqKiopXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciBjb252ZXJzaW9uIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9pY29udiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCB8IEludF9DZCAtPiAnZCcgfCBJbnRfaSB8IEludF9waSB8IEludF9zaVxuICB8IEludF9DaSAtPiAnaScgfCBJbnRfeCB8IEludF9DeCAtPiAneCcgfCBJbnRfWCB8IEludF9DWCAtPiAnWCcgfCBJbnRfb1xuICB8IEludF9DbyAtPiAnbycgfCBJbnRfdSB8IEludF9DdSAtPiAndSdcblxuKCogQ29udmVydCBhIGZsb2F0IGNvbnZlcnNpb24gdG8gY2hhci4gKilcbigqIGBjRicgd2lsbCBiZSAnRicgZm9yIGRpc3BsYXlpbmcgZm9ybWF0IGFuZCAnZycgdG8gY2FsbCBsaWJjIHByaW50ZiAqKVxubGV0IGNoYXJfb2ZfZmNvbnYgPyhjRj0nRicpIGZjb252ID0gbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIC0+ICdmJyB8IEZsb2F0X2UgLT4gJ2UnXG4gIHwgRmxvYXRfRSAtPiAnRScgfCBGbG9hdF9nIC0+ICdnJ1xuICB8IEZsb2F0X0cgLT4gJ0cnIHwgRmxvYXRfRiAtPiBjRlxuICB8IEZsb2F0X2ggLT4gJ2gnIHwgRmxvYXRfSCAtPiAnSCdcbiAgfCBGbG9hdF9DRiAtPiAnRidcblxuXG4oKiBDb252ZXJ0IGEgc2Nhbm5pbmcgY291bnRlciB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfY291bnRlciBjb3VudGVyID0gbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyICAtPiAnbCdcbiAgfCBDaGFyX2NvdW50ZXIgIC0+ICduJ1xuICB8IFRva2VuX2NvdW50ZXIgLT4gJ04nXG5cbigqKiopXG5cbigqIFByaW50IGEgY2hhcl9zZXQgaW4gYSBidWZmZXIgd2l0aCB0aGUgT0NhbWwgZm9ybWF0IGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0ID1cbiAgbGV0IHJlYyBwcmludF9zdGFydCBzZXQgPVxuICAgIGxldCBpc19hbG9uZSBjID1cbiAgICAgIGxldCBiZWZvcmUsIGFmdGVyID0gQ2hhci4oY2hyIChjb2RlIGMgLSAxKSwgY2hyIChjb2RlIGMgKyAxKSkgaW5cbiAgICAgIGlzX2luX2NoYXJfc2V0IHNldCBjXG4gICAgICAmJiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCBiZWZvcmUgJiYgaXNfaW5fY2hhcl9zZXQgc2V0IGFmdGVyKSBpblxuICAgIGlmIGlzX2Fsb25lICddJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nO1xuICAgIHByaW50X291dCBzZXQgMTtcbiAgICBpZiBpc19hbG9uZSAnLScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICctJztcbiAgYW5kIHByaW50X291dCBzZXQgaSA9XG4gICAgaWYgaSA8IDI1NiB0aGVuXG4gICAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW4gcHJpbnRfZmlyc3Qgc2V0IGlcbiAgICAgIGVsc2UgcHJpbnRfb3V0IHNldCAoaSArIDEpXG4gIGFuZCBwcmludF9maXJzdCBzZXQgaSA9XG4gICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnXFwyNTUnIC0+IHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICB8ICddJyB8ICctJyAtPiBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgfCBfIC0+IHByaW50X3NlY29uZCBzZXQgKGkgKyAxKTtcbiAgYW5kIHByaW50X3NlY29uZCBzZXQgaSA9XG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuXG4gICAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICAgIHwgJ1xcMjU1JyAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTQ7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICAgIHwgJ10nIHwgJy0nIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgICB8IF8gd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAyKTtcbiAgICAgIHwgXyAtPlxuICAgICAgICBwcmludF9pbiBzZXQgKGkgLSAxKSAoaSArIDIpO1xuICAgIGVsc2UgKFxuICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICApXG4gIGFuZCBwcmludF9pbiBzZXQgaSBqID1cbiAgICBpZiBqID0gMjU2IHx8IG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBqKSkgdGhlbiAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGludF9vZl9jaGFyICctJyk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaiAtIDEpO1xuICAgICAgaWYgaiA8IDI1NiB0aGVuIHByaW50X291dCBzZXQgKGogKyAxKTtcbiAgICApIGVsc2VcbiAgICAgIHByaW50X2luIHNldCBpIChqICsgMSk7XG4gIGFuZCBwcmludF9jaGFyIGJ1ZiBpID0gbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnJScgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIHwgJ0AnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICdAJztcbiAgICB8IGMgICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGluXG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1snO1xuICBwcmludF9zdGFydCAoXG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgJ1xcMDAwJ1xuICAgIHRoZW4gKCBidWZmZXJfYWRkX2NoYXIgYnVmICdeJzsgcmV2X2NoYXJfc2V0IGNoYXJfc2V0IClcbiAgICBlbHNlIGNoYXJfc2V0XG4gICk7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nXG5cbigqKiopXG5cbigqIFByaW50IGEgcGFkdHkgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWR0eSBidWYgcGFkdHkgPSBtYXRjaCBwYWR0eSB3aXRoXG4gIHwgTGVmdCAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSdcbiAgfCBSaWdodCAtPiAoKVxuICB8IFplcm9zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJzAnXG5cbigqIFByaW50IHRoZSAnXycgb2YgYW4gaWdub3JlZCBmbGFnIGlmIG5lZWRlZC4gKilcbmxldCBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZyA9XG4gIGlmIGlnbl9mbGFnIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXydcblxuKCoqKilcblxubGV0IGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgd2lkdGggLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHdpZHRoKVxuXG4oKioqKVxuXG4oKiBQcmludCBwYWRkaW5nIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkZGluZyA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwYWRkaW5nIC0+IHVuaXQgPVxuZnVuIGJ1ZiBwYWQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+ICgpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCBuKSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcqJ1xuXG4oKiBQcmludCBwcmVjaXNpb24gaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wcmVjaXNpb24gOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcHJlY2lzaW9uIC0+IHVuaXQgPVxuICBmdW4gYnVmIHByZWMgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uIC0+ICgpXG4gIHwgTGl0X3ByZWNpc2lvbiBuIC0+XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wcmVjaXNpb24gLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIuKlwiXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBvciAnIycgYXNzb2NpYXRlZCB0byBhbiBpbnQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X3BkIHwgSW50X3BpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgSW50X3NkIHwgSW50X3NpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgSW50X0N4IHwgSW50X0NYIHwgSW50X0NvIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEludF9kIHwgSW50X2kgfCBJbnRfeCB8IEludF9YIHwgSW50X28gfCBJbnRfdSAtPiAoKVxuXG4oKiBQcmludCBhbiBjb21wbGV0ZSBpbnQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlMy4qZFwiKS4gKilcbmxldCBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBhbmQvb3IgJyMnIGFzc29jaWF0ZWQgdG8gYSBmbG9hdCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udiA9XG4gIGJlZ2luIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZmxhZ19wIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgRmxvYXRfZmxhZ19zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgRmxvYXRfZmxhZ18gLT4gKCkgZW5kO1xuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X0NGIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0dcbiAgfCBGbG9hdF9GIHwgRmxvYXRfaCB8IEZsb2F0X0ggLT4gKClcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmbG9hdCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUrKi4zZlwiKS4gKilcbmxldCBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2Zjb252IGZjb252KVxuXG4oKiBDb21wdXRlIHRoZSBsaXRlcmFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEZvcm1hdHRpbmdfbGl0LiAqKVxuKCogVXNlZCBieSBQcmludGYgYW5kIFNjYW5mIHdoZXJlIGZvcm1hdHRpbmcgaXMgbm90IGludGVycHJldGVkLiAqKVxubGV0IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCA9IG1hdGNoIGZvcm1hdHRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAtPiBcIkBdXCJcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAtPiBcIkB9XCJcbiAgfCBCcmVhayAoc3RyLCBfLCBfKSAgICAtPiBzdHJcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAtPiBcIkA/XCJcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAtPiBcIkBcXG5cIlxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgIC0+IFwiQC5cIlxuICB8IE1hZ2ljX3NpemUgKHN0ciwgXykgIC0+IHN0clxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgIC0+IFwiQEBcIlxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgIC0+IFwiQCVcIlxuICB8IFNjYW5faW5kaWMgYyAtPiBcIkBcIiBeIChTdHJpbmcubWFrZSAxIGMpXG5cbigqKiopXG5cbigqIFByaW50IGEgbGl0ZXJhbCBjaGFyIGluIGEgYnVmZmVyLCBlc2NhcGUgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHIgPSBtYXRjaCBjaHIgd2l0aFxuICB8ICclJyAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlJVwiXG4gIHwgXyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGNoclxuXG4oKiBQcmludCBhIGxpdGVyYWwgc3RyaW5nIGluIGEgYnVmZmVyLCBlc2NhcGUgYWxsICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHIgPVxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgc3RyLltpXVxuICBkb25lXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwcmV0dHktcHJpbnRpbmcgKilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgdHlwZSAoYW4gZm10dHkpIGluIGEgYnVmZmVyLiAqKVxubGV0IHJlYyBicHJpbnRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgICBidWZmZXIgLT4gKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiB1bml0ID1cbmZ1biBidWYgZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVjXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlaVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDMyX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVsaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJW5pXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlTGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZsb2F0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVmXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQm9vbF90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbHBoYV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlYVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFRoZXRhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV0XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQW55X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJT9cIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBSZWFkZXJfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlclwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVfclwiO1xuICAgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIle1wiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlfVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHksIF8sIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJShcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRW5kX29mX2ZtdHR5IC0+ICgpXG5cbigqKiopXG5cbmxldCByZWMgaW50X29mX2N1c3RvbV9hcml0eSA6IHR5cGUgYSBiIGMgLlxuICAoYSwgYiwgYykgY3VzdG9tX2FyaXR5IC0+IGludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQ3VzdG9tX3plcm8gLT4gMFxuICB8IEN1c3RvbV9zdWNjIHggLT4gMSArIGludF9vZl9jdXN0b21fYXJpdHkgeFxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfZm10IGJ1ZiBmbXQgPVxuICBsZXQgcmVjIGZtdGl0ZXIgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYm9vbCAtPiB1bml0ID1cbiAgZnVuIGZtdCBpZ25fZmxhZyAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdzJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdTJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ2wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICduJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdMJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdDJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdhJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAndCc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICBmb3IgX2kgPSAxIHRvIGludF9vZl9jdXN0b21fYXJpdHkgYXJpdHkgZG9cbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIGRvbmU7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBSZWFkZXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncic7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUhXCI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0cjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICd7JztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICd9JztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgd2lkdGhfb3B0OyBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0O1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfY291bnRlciBjb3VudGVyKTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgXCIwY1wiOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICAgIGZtdGl0ZXIgZm10JyB0cnVlO1xuXG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0KTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZm10aW5nX2dlbiB3aXRoXG4gICAgICB8IE9wZW5fdGFnIChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkB7XCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIHwgT3Blbl9ib3ggKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQFtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgZW5kO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+ICgpXG5cbiAgaW4gZm10aXRlciBmbXQgZmFsc2VcblxuKCoqKilcblxuKCogQ29udmVydCBhIGZvcm1hdCB0byBzdHJpbmcuICopXG5sZXQgc3RyaW5nX29mX2ZtdCBmbXQgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10IGJ1ZiBmbXQ7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZSBleHRyYWN0aW9uICopXG5cbnR5cGUgKF8sIF8pIGVxID0gUmVmbCA6ICgnYSwgJ2EpIGVxXG5cbigqIEludmFyaWFudDogdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgb24gdmFsdWVzLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBpZiAodHkxLCB0eTIpIGhhdmUgZXF1YWwgdmFsdWVzLCB0aGVuXG4gICAodHJhbnMgKHN5bW0gdHkxKSB0eTIpIHJlc3BlY3RzIHRoZSAndHJhbnMnIHByZWNvbmRpdGlvbi4gKilcbmxldCByZWMgc3ltbSA6IHR5cGUgYTEgYjEgYzEgZDEgZTEgZjEgYTIgYjIgYzIgZDIgZTIgZjIgLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXR0eV9yZWxcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT4gQ2hhcl90eSAoc3ltbSByZXN0KVxuICB8IEludF90eSByZXN0IC0+IEludF90eSAoc3ltbSByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT4gSW50MzJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+IEludDY0X3R5IChzeW1tIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gTmF0aXZlaW50X3R5IChzeW1tIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPiBGbG9hdF90eSAoc3ltbSByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPiBCb29sX3R5IChzeW1tIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT4gU3RyaW5nX3R5IChzeW1tIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPiBUaGV0YV90eSAoc3ltbSByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT4gQWxwaGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPiBBbnlfdHkgKHN5bW0gcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPiBSZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+IElnbm9yZWRfcmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyLCB0eTEsIHN5bW0gcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbmxldCByZWMgZm10dHlfcmVsX2RldCA6IHR5cGUgYTEgYiBjIGQxIGUxIGYxIGEyIGQyIGUyIGYyIC5cbiAgKGExLCBiLCBjLCBkMSwgZTEsIGYxLFxuICAgYTIsIGIsIGMsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoZjEsIGYyKSBlcSAtPiAoYTEsIGEyKSBlcSlcbiAgKiAoKGExLCBhMikgZXEgLT4gKGYxLCBmMikgZXEpXG4gICogKChlMSwgZTIpIGVxIC0+IChkMSwgZDIpIGVxKVxuICAqICgoZDEsIGQyKSBlcSAtPiAoZTEsIGUyKSBlcSlcbj0gZnVuY3Rpb25cbiAgfCBFbmRfb2ZfZm10dHkgLT5cbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbClcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgRm9ybWF0X2FyZ190eSAoX3R5LCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgbGV0IGFnLCBnYSwgZGosIGpkID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZyBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGdhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gbGV0IFJlZmwgPSBkaiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGpkIFJlZmwgaW4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG5cbigqIFByZWNvbmRpdGlvbjogd2UgYXNzdW1lIHRoYXQgdGhlIHR3byBmbXR0eV9yZWwgYXJndW1lbnRzIGhhdmUgZXF1YWxcbiAgIHZhbHVlcyAoYXQgcG9zc2libHkgZGlzdGluY3QgdHlwZXMpOyB0aGlzIGludmFyaWFudCBjb21lcyBmcm9tIHRoZSB3YXlcbiAgIGZtdHR5X3JlbCB3aXRuZXNzZXMgYXJlIHByb2R1Y2VkIGJ5IHRoZSB0eXBlLWNoZWNrZXJcblxuICAgVGhlIGNvZGUgYmVsb3cgdXNlcyAoYXNzZXJ0IGZhbHNlKSB3aGVuIHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4uIFRoZVxuICAgY29kZSBwYXR0ZXJuIGlzIHRoZSBmb2xsb3dpbmc6XG5cbiAgICAgfCBGb28geCwgRm9vIHkgLT5cbiAgICAgICAoKiBjYXNlIHdoZXJlIGluZGVlZCBib3RoIHZhbHVlc1xuICAgICAgICAgIHN0YXJ0IHdpdGggY29uc3RydWN0b3IgRm9vICopXG4gICAgIHwgRm9vIF8sIF9cbiAgICAgfCBfLCBGb28gXyAtPlxuICAgICAgICgqIGRpZmZlcmVudCBoZWFkIGNvbnN0cnVjdG9yczogYnJva2VuIHByZWNvbmRpdGlvbiAqKVxuICAgICAgIGFzc2VydCBmYWxzZVxuKilcbmFuZCB0cmFucyA6IHR5cGVcbiAgYTEgYjEgYzEgZDEgZTEgZjFcbiAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgYTMgYjMgYzMgZDMgZTMgZjNcbi5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG4tPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbj0gZnVuIHR5MSB0eTIgLT4gbWF0Y2ggdHkxLCB0eTIgd2l0aFxuICB8IENoYXJfdHkgcmVzdDEsIENoYXJfdHkgcmVzdDIgLT4gQ2hhcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgU3RyaW5nX3R5IHJlc3QxLCBTdHJpbmdfdHkgcmVzdDIgLT4gU3RyaW5nX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBCb29sX3R5IHJlc3QxLCBCb29sX3R5IHJlc3QyIC0+IEJvb2xfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludF90eSByZXN0MSwgSW50X3R5IHJlc3QyIC0+IEludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50MzJfdHkgcmVzdDEsIEludDMyX3R5IHJlc3QyIC0+IEludDMyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQ2NF90eSByZXN0MSwgSW50NjRfdHkgcmVzdDIgLT4gSW50NjRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IE5hdGl2ZWludF90eSByZXN0MSwgTmF0aXZlaW50X3R5IHJlc3QyIC0+IE5hdGl2ZWludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRmxvYXRfdHkgcmVzdDEsIEZsb2F0X3R5IHJlc3QyIC0+IEZsb2F0X3R5ICh0cmFucyByZXN0MSByZXN0MilcblxuICB8IEFscGhhX3R5IHJlc3QxLCBBbHBoYV90eSByZXN0MiAtPiBBbHBoYV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQWxwaGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbHBoYV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgVGhldGFfdHkgcmVzdDEsIFRoZXRhX3R5IHJlc3QyIC0+IFRoZXRhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBUaGV0YV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFRoZXRhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBBbnlfdHkgcmVzdDEsIEFueV90eSByZXN0MiAtPiBBbnlfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFueV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFueV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgUmVhZGVyX3R5IHJlc3QxLCBSZWFkZXJfdHkgcmVzdDIgLT4gUmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBSZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBSZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QxLCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MiAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIElnbm9yZWRfcmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfYXJnX3R5ICh0eTEsIHJlc3QxKSwgRm9ybWF0X2FyZ190eSAodHkyLCByZXN0MikgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0cmFucyB0eTEgdHkyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfYXJnX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X2FyZ190eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTEyLCByZXN0MSksXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIxLCB0eTIyLCByZXN0MikgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEyKSB0eTIxIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MjIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9zdWJzdF90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9zdWJzdF90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRW5kX29mX2ZtdHR5LCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG4gIHwgRW5kX29mX2ZtdHR5LCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEVuZF9vZl9mbXR0eSAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHJlYyBmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBFeHRyYWN0IHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIChhbiBmbXR0eSkgb2YgYSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfZm10IDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuXG4gIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQzMl90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoTmF0aXZlaW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDY0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEZsb2F0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuXG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAgICAgICAgICAgLT5cbiAgICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChCb29sX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gQWxwaGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgIC0+IFRoZXRhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAgICAtPiBmbXR0eV9vZl9jdXN0b20gYXJpdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFJlYWRlciByZXN0ICAgICAgICAgICAgICAgIC0+IFJlYWRlcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5LCB0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+IFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT4gSW50X3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAtPiBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdFxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpICAtPlxuICAgIGNvbmNhdF9mbXR0eSAoZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gZm10aW5nX2dlbikgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgLT4gRW5kX29mX2ZtdHR5XG5cbmFuZCBmbXR0eV9vZl9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICh5LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gYXJpdHkgZm10dHkgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IGZtdHR5XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT4gQW55X3R5IChmbXR0eV9vZl9jdXN0b20gYXJpdHkgZm10dHkpXG5cbigqIEV4dHJhY3QgdGhlIGZtdHR5IG9mIGFuIGlnbm9yZWQgcGFyYW1ldGVyIGZvbGxvd2VkIGJ5IHRoZSByZXN0IG9mXG4gICB0aGUgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gY29uY2F0X2ZtdHR5IGZtdHR5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gSWdub3JlZF9yZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwYWRkaW5nIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKnNcIikuICopXG5hbmQgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAgLT4gZm10dHlcbiAgICB8IExpdF9wYWRkaW5nIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wYWRkaW5nIF8gLT4gSW50X3R5IGZtdHR5XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwcmVjaXNpb24gaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikuKilcbmFuZCBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMgd2l0aFxuICAgIHwgTm9fcHJlY2lzaW9uICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcHJlY2lzaW9uIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wcmVjaXNpb24gICAtPiBJbnRfdHkgZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwaW5nICopXG5cbigqIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBhIGdpdmVuIGZvcm1hdCB0eXBlLiAqKVxuZXhjZXB0aW9uIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIHBhZGRpbmcuICopXG4oKiBUYWtlIGFuIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiB0aGUgaW50ZWdlciBzaG91bGQgYmUga2VwdCBhcyBhcmd1bWVudC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkZGluZyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCwgZm10dHkgd2l0aFxuICB8IE5vX3BhZGRpbmcsIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKE5vX3BhZGRpbmcsIGZtdHR5KVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKExpdF9wYWRkaW5nIChwYWR0eSx3KSxmbXR0eSlcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgSW50X3R5IHJlc3QgLT4gUGFkZGluZ19mbXR0eV9FQkIgKEFyZ19wYWRkaW5nIHBhZHR5LHJlc3QpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIENvbnZlcnQgYSAodXBhZGRpbmcsIHVwcmVjaXNpb24pIHRvIGEgKHBhZGRpbmcsIHByZWNpc2lvbikuICopXG4oKiBUYWtlIG9uZSBvciB0d28gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIG5lZWRlZC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkcHJlYyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IHogLlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeikgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYywgdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIE5vX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAsIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTGl0X3ByZWNpc2lvbiBwLCByZXN0KVxuICB8IEFyZ19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEludF90eSByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIEFyZ19wcmVjaXNpb24sIHJlc3QpXG4gIHwgXywgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBJZiB0eXBpbmcgc3VjY2VlZCwgZ2VuZXJhdGUgYSBjb3B5IG9mIHRoZSBmb3JtYXQgd2l0aCB0aGUgc2FtZVxuICAgIHR5cGUgcGFyYW1ldGVycyBhcyB0aGUgZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCByZWMgdHlwZV9mb3JtYXQgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgd2l0aFxuICB8IEZtdF9mbXR0eV9FQkIgKGZtdCcsIEVuZF9vZl9mbXR0eSkgLT4gZm10J1xuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXRfZ2VuIDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggZm10LCBmbXR0eSB3aXRoXG4gIHwgQ2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXIgZm10JywgZm10dHknKVxuICB8IENhbWxfY2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfY2hhciBmbXQnLCBmbXR0eScpXG4gIHwgU3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfc3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50MzJfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDY0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgRmxvYXRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEJvb2wgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEJvb2xfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEJvb2wgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbHVzaCBmbXRfcmVzdCwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGbHVzaCBmbXQnLCBmbXR0eScpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10JyksIGZtdHR5JylcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXJfbGl0ZXJhbCAoY2hyLCBmbXQnKSwgZm10dHknKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5JywgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5MSwgX3N1Yl9mbXR0eTIsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkxKSB0aGVuXG4gICAgICByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID1cbiAgICAgIHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCAoZXJhc2VfcmVsIGZtdHR5X3Jlc3QpXG4gICAgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eTEsIGZtdCcpLCBmbXR0eScpXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBBbHBoYSBmbXRfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChBbHBoYSBmbXQnLCBmbXR0eScpXG4gIHwgVGhldGEgZm10X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoVGhldGEgZm10JywgZm10dHknKVxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nX2dlbiwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9mb3JtYXR0aW5nX2dlbiBmb3JtYXR0aW5nX2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciBmbXRfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoUmVhZGVyIGZtdCcsIGZtdHR5JylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXRfcmVzdCksIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpLCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQnKSwgZm10dHknKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW0gaWduIHJlc3QgZm10dHlfcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdCAtPiBGbXRfZm10dHlfRUJCIChFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0KVxuXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhMSBhMyBiMSBiMyBjMSBjMyBkMSBkMyBlMSBlMiBlMyBmMSBmMiBmMyAuXG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGYxLCBiMSwgYzEsIGUxLCBlMiwgZjIpIGZtdCAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eSAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXRfZm10dHlfZWJiID1cbmZ1biBmb3JtYXR0aW5nX2dlbiBmbXQwIGZtdHR5MCAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcblxuKCogVHlwZSBhbiBJZ25vcmVkX3BhcmFtIG5vZGUgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbSA6IHR5cGUgcCBxIHggeSB6IHQgdSB2IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgeSwgeiwgdCwgcSwgcCkgaWdub3JlZCAtPlxuICAgIChwLCB5LCB6LCBxLCB1LCB2KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10X2ZtdHR5X2ViYiA9XG5mdW4gaWduIGZtdCBmbXR0eSAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50IF8gICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50MzIgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfbmF0aXZlaW50IF8gICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50NjQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZmxvYXQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgKElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSkgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5JywgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSkgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5IGZtdCBmbXR0eSBpblxuICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHknKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQnKSxcbiAgICAgICAgICAgICAgICAgICBmbXR0eScpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT4gKFxuICAgIG1hdGNoIGZtdHR5IHdpdGhcbiAgICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10JyksIGZtdHR5JylcbiAgICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG5cbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIDogdHlwZSBhMSBhMiBiMSBiMiBjMSBjMiBkMSBkMiBlMSBlMiBmMSBmMiAuXG4gICAgKGEyLCBiMiwgYzIsIGQyLCBkMiwgYTIpIGlnbm9yZWQgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGlnbiBmbXQgZm10dHkgLT5cbiAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IGluXG4gIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbiwgZm10JyksIGZtdHR5JylcblxuKCogVHlwaW5nIG9mIHRoZSBjb21wbGV4IGNhc2U6IFwiJV8oLi4uJSlcIi4gKilcbmFuZCB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiA6IHR5cGUgdyB4IHkgeiBwIHMgdCB1IGEgYiBjIGQgZSBmIC5cbiAgICAodywgeCwgeSwgeiwgcywgcCkgZm10dHkgLT5cbiAgICAocCwgeCwgeSwgcywgdCwgdSkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eV9mbXRfZWJiID1cbmZ1biBzdWJfZm10dHkgZm10IGZtdHR5IC0+IG1hdGNoIHN1Yl9mbXR0eSwgZm10dHkgd2l0aFxuICB8IENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQ2hhcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0LCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQzMl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQzMl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCwgSW50NjRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0LCBGbG9hdF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGbG9hdF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQm9vbF90eSBzdWJfZm10dHlfcmVzdCwgQm9vbF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChCb29sX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBBbHBoYV90eSBzdWJfZm10dHlfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChUaGV0YV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eSwgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWIyX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWIyX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5Jywgc3ViX2ZtdHR5X3Jlc3QnKSwgZm10JylcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHksICBzdWIyX2ZtdHR5LCAgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgICgqIFRPRE8gZGVmaW5lIEZtdHR5X3JlbF9FQkIgdG8gcmVtb3ZlIHRob3NlIGVyYXNlX3JlbCAqKVxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IHN1Yl9mbXR0eScgPSB0cmFucyAoc3ltbSBzdWIxX2ZtdHR5Jykgc3ViMl9mbXR0eScgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCBzdWJfZm10dHknIGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gKGVyYXNlX3JlbCBzdWJfZm10dHlfcmVzdCkgZm10IGZtdHR5X3Jlc3RcbiAgICBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbSBzdWJfZm10dHlfcmVzdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdCcpXG4gIHwgRW5kX29mX2ZtdHR5LCBmbXR0eSAtPlxuICAgIEZtdHR5X2ZtdF9FQkIgKEVuZF9vZl9mbXR0eSwgdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSlcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgcmVjYXN0YCBpcyBhIGJpdCBkaXNhcHBvaW50aW5nLiBUaGVcbiAgIGludmFyaWFudCBwcm92aWRlZCBieSB0aGUgdHlwZSBhcmUgdmVyeSBzdHJvbmc6IHRoZSBpbnB1dCBmb3JtYXQnc1xuICAgdHlwZSBpcyBpbiByZWxhdGlvbiB0byB0aGUgb3V0cHV0IHR5cGUncyBhcyB3aXRuZXNzZWQgYnkgdGhlXG4gICBmbXR0eV9yZWwgYXJndW1lbnQuIE9uZSB3b3VsZCBhdCBmaXJzdCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZVxuICAgdG90YWwsIGFuZCBpbXBsZW1lbnRhYmxlIGJ5IGV4aGF1c3RpdmUgcGF0dGVybiBtYXRjaGluZy4gSW5zdGVhZCxcbiAgIHdlIHJldXNlIHRoZSBoaWdobHkgcGFydGlhbCBhbmQgbXVjaCBsZXNzIHdlbGwtZGVmaW5lZCBmdW5jdGlvblxuICAgYHR5cGVfZm9ybWF0YCB0aGF0IGhhcyBsb3N0IGFsbCBrbm93bGVkZ2Ugb2YgdGhlIGNvcnJlc3BvbmRlbmNlXG4gICBiZXR3ZWVuIHRoZSBhcmd1bWVudCdzIHR5cGVzLlxuXG4gICBCZXNpZGVzIHRoZSBmYWN0IHRoYXQgdGhpcyBmdW5jdGlvbiByZXVzZXMgYSBsb3Qgb2YgdGhlXG4gICBgdHlwZV9mb3JtYXRgIGxvZ2ljIChlZy46IHNlZWluZyBJbnRfdHkgaW4gdGhlIGZtdHR5IHBhcmFtZXRlciBkb2VzXG4gICBub3QgbGV0IHlvdSBtYXRjaCBvbiBJbnQgb25seSwgYXMgeW91IG1heSBpbiBmYWN0IGhhdmUgRmxvYXRcbiAgIChBcmdfcGFkZGluZywgLi4uKSAoXCIlLipkXCIpIGJlZ2lubmluZyB3aXRoIGFuIEludF90eSksIGl0IGlzIGFsc29cbiAgIGEgcGFydGlhbCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgdHlwaW5nIGluZm9ybWF0aW9uIGluIGEgZm9ybWF0IGlzXG4gICBub3QgcXVpdGUgZW5vdWdoIHRvIHJlY29uc3RydWN0IGl0IHVuYW1iaWd1b3VzbHkuIEZvciBleGFtcGxlLCB0aGVcbiAgIGZvcm1hdCB0eXBlcyBvZiBcIiVkJV9yXCIgYW5kIFwiJV9yJWRcIiBoYXZlIHRoZSBzYW1lIGZvcm1hdDZcbiAgIHBhcmFtZXRlcnMsIGJ1dCB0aGV5IGFyZSBub3QgYXQgYWxsIGV4Y2hhbmdlYWJsZSwgYW5kIHB1dHRpbmcgb25lXG4gICBpbiBwbGFjZSBvZiB0aGUgb3RoZXIgbXVzdCByZXN1bHQgaW4gYSBkeW5hbWljIGZhaWx1cmUuXG5cbiAgIEdpdmVuIHRoYXQ6XG4gICAtIHdlJ2QgaGF2ZSB0byBkdXBsaWNhdGUgYSBsb3Qgb2Ygbm9uLXRyaXZpYWwgdHlwaW5nIGxvZ2ljIGZyb20gdHlwZV9mb3JtYXRcbiAgIC0gdGhpcyB3b3VsZG4ndCBldmVuIGVsaW1pbmF0ZSAoYWxsKSB0aGUgZHluYW1pYyBmYWlsdXJlc1xuICAgd2UgZGVjaWRlZCB0byBqdXN0IHJldXNlIHR5cGVfZm9ybWF0IGRpcmVjdGx5IGZvciBub3cuXG4qKVxubGV0IHJlY2FzdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+XG4gIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUHJpbnRpbmcgdG9vbHMgKilcblxuKCogQWRkIHBhZGRpbmcgc3BhY2VzIGFyb3VuZCBhIHN0cmluZy4gKilcbmxldCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoLCBwYWR0eSA9XG4gICAgYWJzIHdpZHRoLFxuICAgICgqIHdoaWxlIGxpdGVyYWwgcGFkZGluZyB3aWR0aHMgYXJlIGFsd2F5cyBub24tbmVnYXRpdmUsXG4gICAgICAgZHluYW1pY2FsbHktc2V0IHdpZHRocyAoQXJnX3BhZGRpbmcsIGVnLiAlKmQpIG1heSBiZSBuZWdhdGl2ZTtcbiAgICAgICB3ZSBpbnRlcnByZXQgdGhvc2UgYXMgc3BlY2lmeWluZyBhIHBhZGRpbmctdG8tdGhlLWxlZnQ7IHRoaXNcbiAgICAgICBtZWFucyB0aGF0ICcwJyBtYXkgZ2V0IGRyb3BwZWQgZXZlbiBpZiBpdCB3YXMgZXhwbGljaXRseSBzZXQsXG4gICAgICAgYnV0OlxuICAgICAgIC0gdGhpcyBpcyB3aGF0IHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24gZG9lcywgYW5kXG4gICAgICAgICB3ZSBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IGlmIHBvc3NpYmxlXG4gICAgICAgLSB3ZSBjb3VsZCBvbmx5IHNpZ25hbCB0aGlzIGlzc3VlIGJ5IGZhaWxpbmcgYXQgcnVudGltZSxcbiAgICAgICAgIHdoaWNoIGlzIG5vdCB2ZXJ5IG5pY2UuLi4gKilcbiAgICBpZiB3aWR0aCA8IDAgdGhlbiBMZWZ0IGVsc2UgcGFkdHkgaW5cbiAgaWYgd2lkdGggPD0gbGVuIHRoZW4gc3RyIGVsc2VcbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSB3aWR0aCAoaWYgcGFkdHkgPSBaZXJvcyB0aGVuICcwJyBlbHNlICcgJykgaW5cbiAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgfCBMZWZ0ICAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgMCBsZW5cbiAgICB8IFJpZ2h0IC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAwICYmIChzdHIuWzBdID0gJysnIHx8IHN0ci5bMF0gPSAnLScgfHwgc3RyLlswXSA9ICcgJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMCBzdHIuWzBdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzICh3aWR0aCAtIGxlbiArIDEpIChsZW4gLSAxKVxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAxICYmIHN0ci5bMF0gPSAnMCcgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzICh3aWR0aCAtIGxlbiArIDIpIChsZW4gLSAyKVxuICAgIHwgWmVyb3MgLT5cbiAgICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIGVuZDtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBBZGQgJzAnIHBhZGRpbmcgdG8gaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gKilcbmxldCBmaXhfaW50X3ByZWNpc2lvbiBwcmVjIHN0ciA9XG4gIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIG1hdGNoIHN0ci5bMF0gd2l0aFxuICB8ICgnKycgfCAnLScgfCAnICcpIGFzIGMgd2hlbiBwcmVjICsgMSA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMSkgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAwIGM7XG4gICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzIChwcmVjIC0gbGVuICsgMikgKGxlbiAtIDEpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIHdoZW4gcHJlYyArIDIgPiBsZW4gJiYgbGVuID4gMSAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMikgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzIChwcmVjIC0gbGVuICsgNCkgKGxlbiAtIDIpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIHdoZW4gcHJlYyA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHByZWMgJzAnIGluXG4gICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzIChwcmVjIC0gbGVuKSBsZW47XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCBfIC0+XG4gICAgc3RyXG5cbigqIEVzY2FwZSBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGluZyBjb252ZW50aW9uLiAqKVxubGV0IHN0cmluZ190b19jYW1sX3N0cmluZyBzdHIgPVxuICBsZXQgc3RyID0gU3RyaW5nLmVzY2FwZWQgc3RyIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFxcIicgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfaW50L2ludDMyL25hdGl2ZWludC9pbnQ2NCBmaXJzdCBhcmd1bWVudFxuICAgZnJvbSBhbiBpbnRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfaWNvbnYgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWRcIiB8IEludF9wZCAtPiBcIiUrZFwiIHwgSW50X3NkIC0+IFwiJSBkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVpXCIgfCBJbnRfcGkgLT4gXCIlK2lcIiB8IEludF9zaSAtPiBcIiUgaVwiXG4gIHwgSW50X3ggLT4gXCIleFwiIHwgSW50X0N4IC0+IFwiJSN4XCJcbiAgfCBJbnRfWCAtPiBcIiVYXCIgfCBJbnRfQ1ggLT4gXCIlI1hcIlxuICB8IEludF9vIC0+IFwiJW9cIiB8IEludF9DbyAtPiBcIiUjb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIldVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZMID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVMZFwiIHwgSW50X3BkIC0+IFwiJStMZFwiIHwgSW50X3NkIC0+IFwiJSBMZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlTGlcIiB8IEludF9waSAtPiBcIiUrTGlcIiB8IEludF9zaSAtPiBcIiUgTGlcIlxuICB8IEludF94IC0+IFwiJUx4XCIgfCBJbnRfQ3ggLT4gXCIlI0x4XCJcbiAgfCBJbnRfWCAtPiBcIiVMWFwiIHwgSW50X0NYIC0+IFwiJSNMWFwiXG4gIHwgSW50X28gLT4gXCIlTG9cIiB8IEludF9DbyAtPiBcIiUjTG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJUx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udmwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWxkXCIgfCBJbnRfcGQgLT4gXCIlK2xkXCIgfCBJbnRfc2QgLT4gXCIlIGxkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVsaVwiIHwgSW50X3BpIC0+IFwiJStsaVwiIHwgSW50X3NpIC0+IFwiJSBsaVwiXG4gIHwgSW50X3ggLT4gXCIlbHhcIiB8IEludF9DeCAtPiBcIiUjbHhcIlxuICB8IEludF9YIC0+IFwiJWxYXCIgfCBJbnRfQ1ggLT4gXCIlI2xYXCJcbiAgfCBJbnRfbyAtPiBcIiVsb1wiIHwgSW50X0NvIC0+IFwiJSNsb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252biA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbmRcIiB8IEludF9wZCAtPiBcIiUrbmRcIiB8IEludF9zZCAtPiBcIiUgbmRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJW5pXCIgfCBJbnRfcGkgLT4gXCIlK25pXCIgfCBJbnRfc2kgLT4gXCIlIG5pXCJcbiAgfCBJbnRfeCAtPiBcIiVueFwiIHwgSW50X0N4IC0+IFwiJSNueFwiXG4gIHwgSW50X1ggLT4gXCIlblhcIiB8IEludF9DWCAtPiBcIiUjblhcIlxuICB8IEludF9vIC0+IFwiJW5vXCIgfCBJbnRfQ28gLT4gXCIlI25vXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVudVwiXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfZmxvYXQgZmlyc3QgYXJndW1lbnQgZnJvbSBhIGZsb2F0X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMgPVxuICAgIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgICBsZXQgc3ltYiA9IGNoYXJfb2ZfZmNvbnYgfmNGOidnJyBmY29udiBpblxuICAgIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBwcmVjKTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmIHN5bWI7XG4gICAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG5sZXQgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgcyA9XG4gIG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICBsZXQgZGlnaXRzID1cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgIHwgJzAnLi4nOScgLT4gaW5jciBuXG4gICAgICAgIHwgXyAtPiAoKVxuICAgICAgZG9uZTtcbiAgICAgICFuXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAoZGlnaXRzIC0gMSkgLyAzKSBpblxuICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgIGxldCBwdXQgYyA9IEJ5dGVzLnNldCBidWYgIXBvcyBjOyBpbmNyIHBvcyBpblxuICAgIGxldCBsZWZ0ID0gcmVmICgoZGlnaXRzIC0gMSkgbW9kIDMgKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnMCcuLic5JyBhcyBjIC0+XG4gICAgICAgICAgaWYgIWxlZnQgPSAwIHRoZW4gKHB1dCAnXyc7IGxlZnQgOj0gMyk7IGRlY3IgbGVmdDsgcHV0IGNcbiAgICAgIHwgYyAtPiBwdXQgY1xuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgfCBfIC0+IHNcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byBhIGNvbnZlcnNpb24uICopXG5sZXQgY29udmVydF9pbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50IChmb3JtYXRfb2ZfaWNvbnYgaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQzMiBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQzMiAoZm9ybWF0X29mX2ljb252bCBpY29udikgbilcbmxldCBjb252ZXJ0X25hdGl2ZWludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9uYXRpdmVpbnQgKGZvcm1hdF9vZl9pY29udm4gaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQ2NCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQ2NCAoZm9ybWF0X29mX2ljb252TCBpY29udikgbilcblxuKCogQ29udmVydCBhIGZsb2F0IHRvIHN0cmluZy4gKilcbigqIEZpeCBzcGVjaWFsIGNhc2Ugb2YgXCJPQ2FtbCBmbG9hdCBmb3JtYXRcIi4gKilcbmxldCBjb252ZXJ0X2Zsb2F0IGZjb252IHByZWMgeCA9XG4gIGxldCBoZXggKCkgPVxuICAgIGxldCBzaWduID1cbiAgICAgIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gICAgICB8IEZsb2F0X2ZsYWdfcCAtPiAnKydcbiAgICAgIHwgRmxvYXRfZmxhZ19zIC0+ICcgJ1xuICAgICAgfCBfIC0+ICctJyBpblxuICAgIGhleHN0cmluZ19vZl9mbG9hdCB4IHByZWMgc2lnbiBpblxuICBsZXQgYWRkX2RvdF9pZl9uZWVkZWQgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGlzX3ZhbGlkIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGlzX3ZhbGlkIChpICsgMSkgaW5cbiAgICBpZiBpc192YWxpZCAwIHRoZW4gc3RyIGVsc2Ugc3RyIF4gXCIuXCIgaW5cbiAgbGV0IGNhbWxfc3BlY2lhbF92YWwgc3RyID0gbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+IHN0clxuICAgIHwgRlBfaW5maW5pdGUgLT4gaWYgeCA8IDAuMCB0aGVuIFwibmVnX2luZmluaXR5XCIgZWxzZSBcImluZmluaXR5XCJcbiAgICB8IEZQX25hbiAtPiBcIm5hblwiIGluXG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfaCAtPiBoZXggKClcbiAgfCBGbG9hdF9IIC0+IFN0cmluZy51cHBlcmNhc2VfYXNjaWkgKGhleCAoKSlcbiAgfCBGbG9hdF9DRiAtPiBjYW1sX3NwZWNpYWxfdmFsIChoZXggKCkpXG4gIHwgRmxvYXRfRiAtPlxuICAgIGxldCBzdHIgPSBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4IGluXG4gICAgY2FtbF9zcGVjaWFsX3ZhbCAoYWRkX2RvdF9pZl9uZWVkZWQgc3RyKVxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIC0+XG4gICAgZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeFxuXG4oKiBDb252ZXJ0IGEgY2hhciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBmb3JtYXRfY2FtbF9jaGFyIGMgPVxuICBsZXQgc3RyID0gQ2hhci5lc2NhcGVkIGMgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXCcnIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHR5cGUgdG8gc3RyaW5nICopXG5sZXQgc3RyaW5nX29mX2ZtdHR5IGZtdHR5ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBwcmludGluZyBmdW5jdGlvbiAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBwcmludGluZyBmdW5jdGlvbi4gKilcbigqIFVzZWQgdG8gZ2VuZXJhdGUgUHJpbnRmIGFuZCBGb3JtYXQgcHJpbnRpbmcgZnVuY3Rpb25zLiAqKVxuKCogUGFyYW1ldGVyczpcbiAgICAgazogYSBjb250aW51YXRpb24gZmluYWxseSBhcHBsaWVkIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCB0aGUgYWNjdW11bGF0b3IuXG4gICAgIG86IHRoZSBvdXRwdXQgc3RyZWFtIChzZWUgaywgJWEgYW5kICV0KS5cbiAgICAgYWNjOiByZXYgbGlzdCBvZiBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzaCwgZm9ybWF0dGluZywgLi4uKS5cbiAgICAgZm10OiB0aGUgZm9ybWF0LiAqKVxubGV0IHJlYyBtYWtlX3ByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2NhbWxfY2hhciBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgKGZ1biBzdHIgLT4gc3RyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ190b19jYW1sX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50IGljb252XG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDMyIGljb252XG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9uYXRpdmVpbnQgaWNvbnZcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50NjQgaWNvbnZcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgZmNvbnZcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ19vZl9ib29sXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIGZ1biBmIHggLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGZ1biBvIC0+IGYgbyB4KSkgcmVzdFxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBmdW4gZiAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgKCkpXG4gIHwgUmVhZGVyIF8gLT5cbiAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICopXG4gICAgKCogSW5kZWVkLCBzaW5jZSBwcmludGYgYW5kIGNvLiB0YWtlIGEgZm9ybWF0NCBhcyBhcmd1bWVudCwgdGhlICdkIGFuZCAnZVxuICAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiBmbXQgYXJlIG9idmlvdXNseSBlcXVhbHMuIFRoZSBSZWFkZXIgaXMgdGhlXG4gICAgICAgb25seSBjb25zdHJ1Y3RvciB3aGljaCB0b3VjaCAnZCBhbmQgJ2UgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBmb3JtYXRcbiAgICAgICB0eXBlLCBpdCBhZGRzIGFuICgtPikgdG8gdGhlICdkIHBhcmFtZXRlcnMuIENvbnNlcXVlbnRseSwgYSBmb3JtYXQ0XG4gICAgICAgY2Fubm90IGNvbnRhaW4gYSBSZWFkZXIgbm9kZSwgZXhjZXB0IGluIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG9cbiAgICAgICBhbiAley4uLiV9LiBJdCdzIG5vdCBhIHByb2JsZW0gYmVjYXVzZSBtYWtlX3ByaW50ZiBkbyBub3QgY2FsbFxuICAgICAgIGl0c2VsZiByZWN1cnNpdmVseSBvbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvICV7Li4uJX0uICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mbHVzaCBhY2MpIHJlc3RcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX3N0cmluZ19saXRlcmFsIChhY2MsIHN0cikpIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfY2hhcl9saXRlcmFsIChhY2MsIGNocikpIHJlc3RcblxuICB8IEZvcm1hdF9hcmcgKF8sIHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSBzdHJpbmdfb2ZfZm10dHkgc3ViX2ZtdHR5IGluXG4gICAgKGZ1biBzdHIgLT5cbiAgICAgIGlnbm9yZSBzdHI7XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHkpKSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+IG1ha2VfcHJpbnRmIGsgYWNjXG4gICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgbGV0IG5ld19hY2MgPSBBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVbXCIpIGluXG4gICAgZnVuIF8gLT4gbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICgqIFRoaXMgY2FzZSBzaG91bGQgYmUgcmVmdXNlZCBmb3IgUHJpbnRmLiAqKVxuICAgICgqIEFjY2VwdGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqKVxuICAgICgqIEludGVycHJldCAlbCwgJW4gYW5kICVMIGFzICV1LiAqKVxuICAgIGZ1biBuIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfaW50IFwiJXVcIiBuKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbWFrZV9pZ25vcmVkX3BhcmFtIGsgYWNjIGlnbiByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19saXQgKGFjYywgZm10aW5nX2xpdCkpIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl90YWcga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl9ib3gga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBrIGFjY1xuXG4oKiBEZWxheSB0aGUgZXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpLiAqKVxuKCogR2VuZXJhdGUgZnVuY3Rpb25zIHRvIHRha2UgcmVtYWluaW5nIGFyZ3VtZW50cyAoYWZ0ZXIgdGhlIFwiJV9cIikuICopXG5hbmQgbWFrZV9pZ25vcmVkX3BhcmFtIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgZm10dHkgZm10XG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcblxuXG4oKiBTcGVjaWFsIGNhc2Ugb2YgcHJpbnRmIFwiJV8oXCIuICopXG5hbmQgbWFrZV9mcm9tX2ZtdHR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgZm10dHkgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBSZWFkZXJfdHkgXyAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogSW5zZXJ0IGFuIEFjY19pbnZhbGlkX2FyZyBpbiB0aGUgYWNjdW11bGF0b3IgYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlXG4gICBjbG9zdXJlcyB0byBnZXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG5hbmQgbWFrZV9pbnZhbGlkX2FyZyA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPlxuICBtYWtlX3ByaW50ZiBrIChBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpKSBmbXRcblxuKCogRml4IHBhZGRpbmcsIHRha2UgaXQgYXMgYW4gZXh0cmEgaW50ZWdlciBhcmd1bWVudCBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9wYWRkaW5nIDogdHlwZSB4IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHogLT4gYSkgcGFkZGluZyAtPiAoeiAtPiBzdHJpbmcpIC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCB0cmFucyAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHJhbnMgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcblxuKCogRml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBmb3IgaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0LiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IChpbnRfY29udiAtPiB6IC0+IHN0cmluZykgLT5cbiAgICBpbnRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyB0cmFucyBpY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gdHJhbnMgaWNvbnYgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuXG4oKiBDb252ZXJ0IGEgZmxvYXQsIGZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gaWYgbmVlZGVkLiAqKVxuKCogVGFrZSB0aGUgZmxvYXQgYXJndW1lbnQgYW5kIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgZmxvYXQgLT4gYSkgcHJlY2lzaW9uIC0+IGZsb2F0X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgZmNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbmFuZCBtYWtlX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geCAtPiB5ID1cbiAgZnVuIGsgYWNjIHJlc3QgYXJpdHkgZiAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiB4KVxuXG5sZXQgY29uc3QgeCBfID0geFxuXG5sZXQgcmVjIG1ha2VfaXByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuICBmdW4gayBvIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBDYW1sX3N0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBCb29sIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyByZXN0IGFyaXR5XG4gICAgfCBSZWFkZXIgXyAtPlxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICBTZWUgdGhlXG4gICAgICAgICAgIG5vdGUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgY2FzZSBmb3IgbWFrZV9wcmludGYuICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+XG4gICAgICAgICAgbWFrZV9pcHJpbnRmIGsgb1xuICAgICAgICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG4gICAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pZ25vcmVkX3BhcmFtIChmdW4gXyAtPiBrIG8pIChFbmRfb2ZfYWNjKSBpZ24gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgICAgIGsgb1xuYW5kIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIDpcbiAgdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IHggPVxuICBmdW4gayBvIGZtdCBwYWQgcHJlYyAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICwgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpKVxuYW5kIGZuX29mX2N1c3RvbV9hcml0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT5cbiAgc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHkgPVxuICBmdW4gayBvIGZtdCAtPiBmdW5jdGlvblxuICAgIHwgQ3VzdG9tX3plcm8gLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyBmbXRcbiAgICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgICAgIGNvbnN0IChmbl9vZl9jdXN0b21fYXJpdHkgayBvIGZtdCBhcml0eSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29udGludWF0aW9ucyBmb3IgbWFrZV9wcmludGYgKilcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBvIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQHtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQFtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X2NoYXIgbyBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmIG9cbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGZsdXNoIG9cbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBvIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIGJ1ZnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBmIGJcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IGJ1ZnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBidWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiAlYSBhbmQgJXQuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiAoZiAoKSlcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEVycm9yIG1hbmFnZW1lbnQgKilcblxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBwcmV0dHktcHJpbnRlZCBlcnJvciBtZXNzYWdlLiAqKVxubGV0IGZhaWx3aXRoX21lc3NhZ2UgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGsgYWNjID0gc3RycHV0X2FjYyBidWYgYWNjOyBmYWlsd2l0aCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdHRpbmcgdG9vbHMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhbiBvcGVuIGJsb2NrIGRlc2NyaXB0aW9uIChpbmRlbnQsIGJsb2NrX3R5cGUpICopXG5sZXQgb3Blbl9ib3hfb2Zfc3RyaW5nIHN0ciA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiAoMCwgUHBfYm94KSBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGludmFsaWRfYm94ICgpID0gZmFpbHdpdGhfbWVzc2FnZSBcImludmFsaWQgYm94IGRlc2NyaXB0aW9uICVTXCIgc3RyIGluXG4gICAgbGV0IHJlYyBwYXJzZV9zcGFjZXMgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gaSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIC0+IHBhcnNlX3NwYWNlcyAoaSArIDEpXG4gICAgICAgIHwgXyAtPiBpXG4gICAgYW5kIHBhcnNlX2x3b3JkIGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICdhJyAuLiAneicgLT4gcGFyc2VfbHdvcmQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqXG4gICAgYW5kIHBhcnNlX2ludCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHBhcnNlX2ludCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGogaW5cbiAgICBsZXQgd3N0YXJ0ID0gcGFyc2Vfc3BhY2VzIDAgaW5cbiAgICBsZXQgd2VuZCA9IHBhcnNlX2x3b3JkIHdzdGFydCB3c3RhcnQgaW5cbiAgICBsZXQgYm94X25hbWUgPSBTdHJpbmcuc3ViIHN0ciB3c3RhcnQgKHdlbmQgLSB3c3RhcnQpIGluXG4gICAgbGV0IG5zdGFydCA9IHBhcnNlX3NwYWNlcyB3ZW5kIGluXG4gICAgbGV0IG5lbmQgPSBwYXJzZV9pbnQgbnN0YXJ0IG5zdGFydCBpblxuICAgIGxldCBpbmRlbnQgPVxuICAgICAgaWYgbnN0YXJ0ID0gbmVuZCB0aGVuIDAgZWxzZVxuICAgICAgICB0cnkgaW50X29mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHIgbnN0YXJ0IChuZW5kIC0gbnN0YXJ0KSlcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICBsZXQgZXhwX2VuZCA9IHBhcnNlX3NwYWNlcyBuZW5kIGluXG4gICAgaWYgZXhwX2VuZCA8PiBsZW4gdGhlbiBpbnZhbGlkX2JveCAoKTtcbiAgICBsZXQgYm94X3R5cGUgPSBtYXRjaCBib3hfbmFtZSB3aXRoXG4gICAgICB8IFwiXCIgfCBcImJcIiAtPiBQcF9ib3hcbiAgICAgIHwgXCJoXCIgICAgICAtPiBQcF9oYm94XG4gICAgICB8IFwidlwiICAgICAgLT4gUHBfdmJveFxuICAgICAgfCBcImh2XCIgICAgIC0+IFBwX2h2Ym94XG4gICAgICB8IFwiaG92XCIgICAgLT4gUHBfaG92Ym94XG4gICAgICB8IF8gICAgICAgIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgKGluZGVudCwgYm94X3R5cGUpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUGFyc2luZyB0b29scyAqKVxuXG4oKiBDcmVhdGUgYSBwYWRkaW5nX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcgYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZGRpbmdfZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcGFkZGluZ19mbXRfZWJiID1cbmZ1biBwYWQgZm10IC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoTm9fcGFkZGluZywgZm10KVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRkaW5nX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgZm10KVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIGZtdClcblxuKCogQ3JlYXRlIGEgcHJlY2lzaW9uX2ZtdF9lYmIgZnJvbSBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wcmVjaXNpb25fZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcHJlY2lzaW9uIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwcmVjaXNpb25fZm10X2ViYiA9XG5mdW4gcHJlYyBmbXQgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uICAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChOb19wcmVjaXNpb24sIGZtdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKExpdF9wcmVjaXNpb24gcCwgZm10KVxuICB8IEFyZ19wcmVjaXNpb24gICAtPiBQcmVjaXNpb25fZm10X0VCQiAoQXJnX3ByZWNpc2lvbiwgZm10KVxuXG4oKiBDcmVhdGUgYSBwYWRwcmVjX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgYW5kIHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnRzXG4gICBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkcHJlY19mbXRfZWJiIDogdHlwZSB4IHkgeiB0IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+XG4gICAgKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgIChfLCBfLCBfLCBfLCBfKSBwYWRwcmVjX2ZtdF9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdCAtPlxuICBsZXQgUHJlY2lzaW9uX2ZtdF9FQkIgKHByZWMsIGZtdCcpID0gbWFrZV9wcmVjaXNpb25fZm10X2ViYiBwcmVjIGZtdCBpblxuICBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIHByZWMsIGZtdCcpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZHByZWNfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBwcmVjLCBmbXQnKVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIHByZWMsIGZtdCcpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwYXJzaW5nICopXG5cbigqIFBhcnNlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIGZvcm1hdCBhbmQgY3JlYXRlIGEgZm10X2ViYi4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSBpbiBjYXNlIG9mIGludmFsaWQgZm9ybWF0LiAqKVxubGV0IGZtdF9lYmJfb2Zfc3RyaW5nID9sZWdhY3lfYmVoYXZpb3Igc3RyID1cbiAgKCogUGFyYW1ldGVycyBuYW1pbmcgY29udmVudGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gbGl0X3N0YXJ0OiBzdGFydCBvZiB0aGUgbGl0ZXJhbCBzZXF1ZW5jZS4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzdHJfaW5kOiBjdXJyZW50IGluZGV4IGluIHRoZSBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGVuZF9pbmQ6IGVuZCBvZiB0aGUgY3VycmVudCAoc3ViLSlmb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcGN0X2luZDogaW5kZXggb2YgdGhlICclJyBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICopXG4gICgqICAgLSB6ZXJvOiAgaXMgdGhlICcwJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIG1pbnVzOiBpcyB0aGUgJy0nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGx1czogIGlzIHRoZSAnKycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBoYXNoOiAgaXMgdGhlICcjJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHNwYWNlOiBpcyB0aGUgJyAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaWduOiAgIGlzIHRoZSAnXycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwYWQ6IHBhZGRpbmcgb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHByZWM6IHByZWNpc2lvbiBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3ltYjogY2hhciByZXByZXNlbnRpbmcgdGhlIGNvbnZlcnNpb24gKCdjJywgJ3MnLCAnZCcsIC4uLikuICopXG4gICgqICAgLSBjaGFyX3NldDogc2V0IG9mIGNoYXJhY3RlcnMgYXMgYml0bWFwIChzZWUgc2NhbmYgJVsuLi5dKS4gICAgKilcblxuICBsZXQgbGVnYWN5X2JlaGF2aW9yID0gbWF0Y2ggbGVnYWN5X2JlaGF2aW9yIHdpdGhcbiAgICB8IFNvbWUgZmxhZyAtPiBmbGFnXG4gICAgfCBOb25lIC0+IHRydWVcbiAgKCogIFdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQsIHRoZSBmb3JtYXQgcGFyc2VyIHRyaWVzIHRvIGJlaGF2ZSBhc1xuICAgICAgdGhlIDw0LjAyIGltcGxlbWVudGF0aW9ucywgaW4gcGFydGljdWxhciBpdCBpZ25vcmVzIG1vc3QgYmVuaW5lXG4gICAgICBub25zZW5zaWNhbCBmb3JtYXQuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA+PSAxICYmIHMuWzBdID0gJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGFjdGlvbiwgZm9sbG93ID1cbiAgICAgICAgICB0cnkgYXNzb2MzIHMgIXNwZWNsaXN0LCBOb25lXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBrZXl3b3JkLCBhcmcgPSBzcGxpdCBzIGluXG4gICAgICAgICAgICBhc3NvYzMga2V5d29yZCAhc3BlY2xpc3QsIFNvbWUgYXJnXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFN0b3AgKFVua25vd24gcykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub19hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJubyBhcmd1bWVudFwiKSkpIGluXG4gICAgICAgIGxldCBnZXRfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiAhY3VycmVudCArIDEgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2LighY3VycmVudCArIDEpXG4gICAgICAgICAgICAgIGVsc2UgcmFpc2UgKFN0b3AgKE1pc3NpbmcgcykpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBhcmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbmNyIGN1cnJlbnRcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIHRyZWF0X2FjdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5pdCBmIC0+IG5vX2FyZyAoKTsgZiAoKTtcbiAgICAgICAgfCBCb29sIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBib29sX29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGJvb2xlYW5cIikpKVxuICAgICAgICAgICAgfCBTb21lIHMgLT4gZiBzXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXQgciAtPiBub19hcmcgKCk7IHIgOj0gdHJ1ZTtcbiAgICAgICAgfCBDbGVhciByIC0+IG5vX2FyZyAoKTsgciA6PSBmYWxzZTtcbiAgICAgICAgfCBTdHJpbmcgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU3ltYm9sIChzeW1iLCBmKSAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGlmIExpc3QubWVtIGFyZyBzeW1iIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwib25lIG9mOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAobWFrZV9zeW1saXN0IFwiXCIgXCIgXCIgXCJcIiBzeW1iKSkpKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+XG4gICAgICAgICAgICByIDo9IGdldF9hcmcgKCk7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBJbnQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9pbnQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEZsb2F0IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9mbG9hdCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBUdXBsZSBzcGVjcyAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgTGlzdC5pdGVyIHRyZWF0X2FjdGlvbiBzcGVjcztcbiAgICAgICAgfCBSZXN0IGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgLSAxIGRvXG4gICAgICAgICAgICAgIGYgIWFyZ3YuKCFjdXJyZW50ICsgMSk7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgfCBSZXN0X2FsbCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IEFycmF5Lmxlbmd0aCAhYXJndiAtIDEgZG9cbiAgICAgICAgICAgICAgYWNjIDo9ICFhcmd2LighY3VycmVudCArIDEpIDo6ICFhY2M7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGYgKExpc3QucmV2ICFhY2MpXG4gICAgICAgIHwgRXhwYW5kIGYgLT5cbiAgICAgICAgICAgIGlmIG5vdCBhbGxvd19leHBhbmQgdGhlblxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkFyZy5FeHBhbmQgaXMgaXMgb25seSBhbGxvd2VkIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZy5wYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY1wiKTtcbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBsZXQgbmV3YXJnID0gZiBhcmcgaW5cbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IEFycmF5LnN1YiAhYXJndiAwICghY3VycmVudCArIDEpXG4gICAgICAgICAgICBhbmQgYWZ0ZXIgPVxuICAgICAgICAgICAgICBBcnJheS5zdWIgIWFyZ3YgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXkubGVuZ3RoICFhcmd2KSAtICFjdXJyZW50IC0gMSkgaW5cbiAgICAgICAgICAgIGFyZ3Y6PSBBcnJheS5jb25jYXQgW2JlZm9yZTtuZXdhcmc7YWZ0ZXJdO1xuICAgICAgICBpblxuICAgICAgICB0cmVhdF9hY3Rpb24gYWN0aW9uIGVuZFxuICAgICAgZWxzZSBhbm9uZnVuIHNcbiAgICB3aXRoIHwgQmFkIG0gLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgKE1lc3NhZ2UgbSkpO1xuICAgICAgICAgfCBTdG9wIGUgLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgZSk7XG4gICAgZW5kO1xuICAgIGluY3IgY3VycmVudFxuICBkb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggdHJ1ZSBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2dcblxubGV0IHBhcnNlX2FyZ3ZfZHluYW1pYyA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBmYWxzZSBjdXJyZW50IChyZWYgYXJndikgc3BlY2xpc3QgYW5vbmZ1blxuICAgIGVycm1zZ1xuXG5cbmxldCBwYXJzZV9hcmd2ID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYXJndl9keW5hbWljIH5jdXJyZW50OmN1cnJlbnQgYXJndiAocmVmIHNwZWNsaXN0KSBhbm9uZnVuIGVycm1zZ1xuXG5cbmxldCBwYXJzZSBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndiBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBwYXJzZV9keW5hbWljIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2X2R5bmFtaWMgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxubGV0IHBhcnNlX2V4cGFuZCBsIGYgbXNnID1cbiAgdHJ5XG4gICAgbGV0IGFyZ3YgPSByZWYgU3lzLmFyZ3YgaW5cbiAgICBsZXQgc3BlYyA9IHJlZiBsIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgKCFjdXJyZW50KSBpblxuICAgIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBzZWNvbmRfd29yZCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+PSBsZW4gdGhlbiBsZW5cbiAgICBlbHNlIGlmIHMuW25dID0gJyAnIHRoZW4gbG9vcCAobisxKVxuICAgIGVsc2UgblxuICBpblxuICBtYXRjaCBTdHJpbmcuaW5kZXggcyAnXFx0JyB3aXRoXG4gIHwgbiAtPiBsb29wIChuKzEpXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggU3RyaW5nLmluZGV4IHMgJyAnIHdpdGhcbiAgICAgIHwgbiAtPiBsb29wIChuKzEpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gbGVuXG4gICAgICBlbmRcblxuXG5sZXQgbWF4X2FyZ19sZW4gY3VyIChrd2QsIHNwZWMsIGRvYykgPVxuICBtYXRjaCBzcGVjIHdpdGhcbiAgfCBTeW1ib2wgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QpXG4gIHwgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QgKyBzZWNvbmRfd29yZCBkb2MpXG5cblxubGV0IHJlcGxhY2VfbGVhZGluZ190YWIgcyA9XG4gIGxldCBzZWVuID0gcmVmIGZhbHNlIGluXG4gIFN0cmluZy5tYXAgKGZ1bmN0aW9uICdcXHQnIHdoZW4gbm90ICFzZWVuIC0+IHNlZW4gOj0gdHJ1ZTsgJyAnIHwgYyAtPiBjKSBzXG5cbmxldCBhZGRfcGFkZGluZyBsZW4ga3NkID1cbiAgbWF0Y2gga3NkIHdpdGhcbiAgfCAoXywgXywgXCJcIikgLT5cbiAgICAgICgqIERvIG5vdCBwYWQgdW5kb2N1bWVudGVkIG9wdGlvbnMsIHNvIHRoYXQgdGhleSBzdGlsbCBkb24ndCBzaG93IHVwIHdoZW5cbiAgICAgICAqIHJ1biB0aHJvdWdoIFt1c2FnZV0gb3IgW3BhcnNlXS4gKilcbiAgICAgIGtzZFxuICB8IChrd2QsIChTeW1ib2wgXyBhcyBzcGVjKSwgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlICgoSW50Lm1heCAwIChsZW4gLSBjdXRjb2wpKSArIDMpICcgJyBpblxuICAgICAgKGt3ZCwgc3BlYywgXCJcXG5cIiBeIHNwYWNlcyBeIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICB8IChrd2QsIHNwZWMsIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBrd2RfbGVuID0gU3RyaW5nLmxlbmd0aCBrd2QgaW5cbiAgICAgIGxldCBkaWZmID0gbGVuIC0ga3dkX2xlbiAtIGN1dGNvbCBpblxuICAgICAgaWYgZGlmZiA8PSAwIHRoZW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSBkaWZmICcgJyBpblxuICAgICAgICBsZXQgcHJlZml4ID0gU3RyaW5nLnN1YiAocmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpIDAgY3V0Y29sIGluXG4gICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3ViIG1zZyBjdXRjb2wgKFN0cmluZy5sZW5ndGggbXNnIC0gY3V0Y29sKSBpblxuICAgICAgICAoa3dkLCBzcGVjLCBwcmVmaXggXiBzcGFjZXMgXiBzdWZmaXgpXG5cblxubGV0IGFsaWduID8obGltaXQ9bWF4X2ludCkgc3BlY2xpc3QgPVxuICBsZXQgY29tcGxldGVkID0gYWRkX2hlbHAgc3BlY2xpc3QgaW5cbiAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IG1heF9hcmdfbGVuIDAgY29tcGxldGVkIGluXG4gIGxldCBsZW4gPSBJbnQubWluIGxlbiBsaW1pdCBpblxuICBMaXN0Lm1hcCAoYWRkX3BhZGRpbmcgbGVuKSBjb21wbGV0ZWRcblxubGV0IHRyaW1fY3IgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuID4gMCAmJiBTdHJpbmcuZ2V0IHMgKGxlbiAtIDEpID0gJ1xccicgdGhlblxuICAgIFN0cmluZy5zdWIgcyAwIChsZW4gLSAxKVxuICBlbHNlXG4gICAgc1xuXG5sZXQgcmVhZF9hdXggdHJpbSBzZXAgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIGxldCB3b3JkcyA9IHJlZiBbXSBpblxuICBsZXQgc3Rhc2ggKCkgPVxuICAgIGxldCB3b3JkID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGxldCB3b3JkID0gaWYgdHJpbSB0aGVuIHRyaW1fY3Igd29yZCBlbHNlIHdvcmQgaW5cbiAgICB3b3JkcyA6PSB3b3JkIDo6ICF3b3JkcztcbiAgICBCdWZmZXIuY2xlYXIgYnVmXG4gIGluXG4gIGJlZ2luXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgbGV0IGMgPSBpbnB1dF9jaGFyIGljIGluXG4gICAgICAgIGlmIGMgPSBzZXAgdGhlbiBzdGFzaCAoKSBlbHNlIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgICAgZG9uZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gKClcbiAgZW5kO1xuICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA+IDAgdGhlbiBzdGFzaCAoKTtcbiAgY2xvc2VfaW4gaWM7XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QucmV2ICF3b3JkcylcblxubGV0IHJlYWRfYXJnID0gcmVhZF9hdXggdHJ1ZSAnXFxuJ1xuXG5sZXQgcmVhZF9hcmcwID0gcmVhZF9hdXggZmFsc2UgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfYXV4IHNlcCBmaWxlIGFyZ3MgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZmlsZSBpblxuICBBcnJheS5pdGVyIChmdW4gcyAtPiBmcHJpbnRmIG9jIFwiJXMlY1wiIHMgc2VwKSBhcmdzO1xuICBjbG9zZV9vdXQgb2NcblxubGV0IHdyaXRlX2FyZyA9IHdyaXRlX2F1eCAnXFxuJ1xuXG5sZXQgd3JpdGVfYXJnMCA9IHdyaXRlX2F1eCAnXFx4MDAnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICAgICAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgICAgICBjb25zdHJ1Y3RvciBeIChmaWVsZHMgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHZlcmJvc2UgOiBpbnQ7XG4gIG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50O1xuICBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcbmV4dGVybmFsIGdldF9idWNrZXQgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9idWNrZXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZ2V0X2NyZWRpdCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9jcmVkaXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHVnZV9mYWxsYmFja19jb3VudCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcGF1c2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcGF1c2VcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcmVzdW1lIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3Jlc3VtZVwiXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCByZWZcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmICEoYXJlYy5hY3RpdmUpIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gcmVmIHRydWU7IGYgPSBmIH0gaW5cbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IGEgOj0gZmFsc2VcblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB1bml0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTWVzc2FnZSBkaWdlc3QgKE1ENSkgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbmxldCBzdHJpbmcgc3RyID1cbiAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbmxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbmxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9zdHJpbmcgc3RyIG9mcyBsZW5cblxubGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbmxldCBmaWxlIGZpbGVuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZW5hbWUgaW5cbiAgbWF0Y2ggY2hhbm5lbCBpYyAoLTEpIHdpdGhcbiAgICB8IGQgLT4gY2xvc2VfaW4gaWM7IGRcbiAgICB8IGV4Y2VwdGlvbiBlIC0+IGNsb3NlX2luIGljOyByYWlzZSBlXG5cbmxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPVxuICBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbmxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbmxldCBjaGFyX2hleCBuID1cbiAgQ2hhci51bnNhZmVfY2hyIChuICsgaWYgbiA8IDEwIHRoZW4gQ2hhci5jb2RlICcwJyBlbHNlIChDaGFyLmNvZGUgJ2EnIC0gMTApKVxuXG5sZXQgdG9faGV4IGQgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAzMiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgZnJvbV9oZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRGlnZXN0LmZyb21faGV4XCIpXG4gIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBCeXRlcy5zZXQgcmVzdWx0IGkgKENoYXIuY2hyIChieXRlICgyICogaSkpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXG4gICBUaGlzIGlzIGEgbGFnZ2VkLUZpYm9uYWNjaSBGKDU1LCAyNCwgKykgd2l0aCBhIG1vZGlmaWVkIGFkZGl0aW9uXG4gICBmdW5jdGlvbiB0byBlbmhhbmNlIHRoZSBtaXhpbmcgb2YgYml0cy5cbiAgIElmIHdlIHVzZSBub3JtYWwgYWRkaXRpb24sIHRoZSBsb3ctb3JkZXIgYml0IGZhaWxzIHRlc3RzIDEgYW5kIDdcbiAgIG9mIHRoZSBEaWVoYXJkIHRlc3Qgc3VpdGUsIGFuZCBiaXRzIDEgYW5kIDIgYWxzbyBmYWlsIHRlc3QgNy5cbiAgIElmIHdlIHVzZSBtdWx0aXBsaWNhdGlvbiBhcyBzdWdnZXN0ZWQgYnkgTWFyc2FnbGlhLCBpdCBkb2Vzbid0IGZhcmVcbiAgIG11Y2ggYmV0dGVyLlxuICAgQnkgbWl4aW5nIHRoZSBiaXRzIG9mIG9uZSBvZiB0aGUgbnVtYmVycyBiZWZvcmUgYWRkaXRpb24gKFhPUiB0aGVcbiAgIDUgaGlnaC1vcmRlciBiaXRzIGludG8gdGhlIGxvdy1vcmRlciBiaXRzKSwgd2UgZ2V0IGEgZ2VuZXJhdG9yIHRoYXRcbiAgIHBhc3NlcyBhbGwgdGhlIERpZWhhcmQgdGVzdHMuXG4qKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID0geyBzdCA6IGludCBhcnJheTsgbXV0YWJsZSBpZHggOiBpbnQgfVxuXG4gIGxldCBuZXdfc3RhdGUgKCkgPSB7IHN0ID0gQXJyYXkubWFrZSA1NSAwOyBpZHggPSAwIH1cbiAgbGV0IGFzc2lnbiBzdDEgc3QyID1cbiAgICBBcnJheS5ibGl0IHN0Mi5zdCAwIHN0MS5zdCAwIDU1O1xuICAgIHN0MS5pZHggPC0gc3QyLmlkeFxuXG5cbiAgbGV0IGZ1bGxfaW5pdCBzIHNlZWQgPVxuICAgIGxldCBjb21iaW5lIGFjY3UgeCA9IERpZ2VzdC5zdHJpbmcgKGFjY3UgXiBJbnQudG9fc3RyaW5nIHgpIGluXG4gICAgbGV0IGV4dHJhY3QgZCA9XG4gICAgICBDaGFyLmNvZGUgZC5bMF0gKyAoQ2hhci5jb2RlIGQuWzFdIGxzbCA4KSArIChDaGFyLmNvZGUgZC5bMl0gbHNsIDE2KVxuICAgICAgKyAoQ2hhci5jb2RlIGQuWzNdIGxzbCAyNClcbiAgICBpblxuICAgIGxldCBzZWVkID0gaWYgQXJyYXkubGVuZ3RoIHNlZWQgPSAwIHRoZW4gW3wgMCB8XSBlbHNlIHNlZWQgaW5cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgZm9yIGkgPSAwIHRvIDU0IGRvXG4gICAgICBzLnN0LihpKSA8LSBpO1xuICAgIGRvbmU7XG4gICAgbGV0IGFjY3UgPSByZWYgXCJ4XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgKyBJbnQubWF4IDU1IGwgZG9cbiAgICAgIGxldCBqID0gaSBtb2QgNTUgaW5cbiAgICAgIGxldCBrID0gaSBtb2QgbCBpblxuICAgICAgYWNjdSA6PSBjb21iaW5lICFhY2N1IHNlZWQuKGspO1xuICAgICAgcy5zdC4oaikgPC0gKHMuc3QuKGopIGx4b3IgZXh0cmFjdCAhYWNjdSkgbGFuZCAweDNGRkZGRkZGOyAgKCogUFIjNTU3NSAqKVxuICAgIGRvbmU7XG4gICAgcy5pZHggPC0gMFxuXG5cbiAgbGV0IG1ha2Ugc2VlZCA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGZ1bGxfaW5pdCByZXN1bHQgc2VlZDtcbiAgICByZXN1bHRcblxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9IG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gIGxldCBjb3B5IHMgPVxuICAgIGxldCByZXN1bHQgPSBuZXdfc3RhdGUgKCkgaW5cbiAgICBhc3NpZ24gcmVzdWx0IHM7XG4gICAgcmVzdWx0XG5cblxuICAoKiBSZXR1cm5zIDMwIHJhbmRvbSBiaXRzIGFzIGFuIGludGVnZXIgMCA8PSB4IDwgMTA3Mzc0MTgyNCAqKVxuICBsZXQgYml0cyBzID1cbiAgICBzLmlkeCA8LSAocy5pZHggKyAxKSBtb2QgNTU7XG4gICAgbGV0IGN1cnZhbCA9IHMuc3QuKHMuaWR4KSBpblxuICAgIGxldCBuZXd2YWwgPSBzLnN0Ligocy5pZHggKyAyNCkgbW9kIDU1KVxuICAgICAgICAgICAgICAgICArIChjdXJ2YWwgbHhvciAoKGN1cnZhbCBsc3IgMjUpIGxhbmQgMHgxRikpIGluXG4gICAgbGV0IG5ld3ZhbDMwID0gbmV3dmFsIGxhbmQgMHgzRkZGRkZGRiBpbiAgKCogUFIjNTU3NSAqKVxuICAgIHMuc3QuKHMuaWR4KSA8LSBuZXd2YWwzMDtcbiAgICBuZXd2YWwzMFxuXG5cbiAgbGV0IHJlYyBpbnRhdXggcyBuID1cbiAgICBsZXQgciA9IGJpdHMgcyBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gMHgzRkZGRkZGRiAtIG4gKyAxIHRoZW4gaW50YXV4IHMgbiBlbHNlIHZcblxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50YXV4IHMgYm91bmRcblxuICBsZXQgcmVjIGludDYzYXV4IHMgbiA9XG4gICAgbGV0IG1heF9pbnRfMzIgPSAoMSBsc2wgMzApICsgMHgzRkZGRkZGRiBpbiAoKiAweDdGRkZGRkZGICopXG4gICAgbGV0IGIxID0gYml0cyBzIGluXG4gICAgbGV0IGIyID0gYml0cyBzIGluXG4gICAgbGV0IChyLCBtYXhfaW50KSA9XG4gICAgICBpZiBuIDw9IG1heF9pbnRfMzIgdGhlblxuICAgICAgICAoKiAzMSByYW5kb20gYml0cyBvbiBib3RoIDY0LWJpdCBPQ2FtbCBhbmQgSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDE1IGJpdHMgb2YgYjEgYW5kIDE2IGJpdHMgb2YgYjIuICopXG4gICAgICAgIGxldCBicG9zID1cbiAgICAgICAgICAoKChiMiBsYW5kIDB4M0ZGRkMwMDApIGxzbCAxKSBsb3IgKGIxIGxzciAxNSkpXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnRfMzIpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiMyA9IGJpdHMgcyBpblxuICAgICAgICAoKiA2MiByYW5kb20gYml0cyBvbiA2NC1iaXQgT0NhbWw7IHVucmVhY2hhYmxlIG9uIEphdmFTY3JpcHQuXG4gICAgICAgICAgIFVzZSB1cHBlciAyMCBiaXRzIG9mIGIxIGFuZCAyMSBiaXRzIG9mIGIyIGFuZCBiMy4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKChiMyBsYW5kIDB4M0ZGRkZFMDApIGxzbCAxMikgbG9yIChiMiBsc3IgOSkpIGxzbCAyMClcbiAgICAgICAgICAgIGxvciAoYjEgbHNyIDEwKVxuICAgICAgICBpblxuICAgICAgICAgIChicG9zLCBtYXhfaW50KVxuICAgIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiBtYXhfaW50IC0gbiArIDEgdGhlbiBpbnQ2M2F1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgIGVsc2UgaWYgYm91bmQgPiAweDNGRkZGRkZGIHRoZW5cbiAgICAgIGludDYzYXV4IHMgYm91bmRcbiAgICBlbHNlXG4gICAgICBpbnRhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDMyLm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCAoYml0cyBzIGxhbmQgMSkpIDMwIGluXG4gICAgbGV0IHIgPSBJbnQzMi5sb2dvciBiMSBiMiBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgIGlmIEludDMyLnN1YiByIHYgPiBJbnQzMi5hZGQgKEludDMyLnN1YiBJbnQzMi5tYXhfaW50IG4pIDFsXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuXG4gIGxldCByZWMgaW50NjRhdXggcyBuID1cbiAgICBsZXQgYjEgPSBJbnQ2NC5vZl9pbnQgKGJpdHMgcykgaW5cbiAgICBsZXQgYjIgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcykpIDMwIGluXG4gICAgbGV0IGIzID0gSW50NjQuc2hpZnRfbGVmdCAoSW50NjQub2ZfaW50IChiaXRzIHMgbGFuZCA3KSkgNjAgaW5cbiAgICBsZXQgciA9IEludDY0LmxvZ29yIGIxIChJbnQ2NC5sb2dvciBiMiBiMykgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICBpZiBJbnQ2NC5zdWIgciB2ID4gSW50NjQuYWRkIChJbnQ2NC5zdWIgSW50NjQubWF4X2ludCBuKSAxTFxuICAgIHRoZW4gaW50NjRhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDY0IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBMXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NFwiXG4gICAgZWxzZSBpbnQ2NGF1eCBzIGJvdW5kXG5cblxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cblxuICAoKiBSZXR1cm5zIGEgZmxvYXQgMCA8PSB4IDw9IDEgd2l0aCBhdCBtb3N0IDYwIGJpdHMgb2YgcHJlY2lzaW9uLiAqKVxuICBsZXQgcmF3ZmxvYXQgcyA9XG4gICAgbGV0IHNjYWxlID0gMTA3Mzc0MTgyNC4wICAoKiAyXjMwICopXG4gICAgYW5kIHIxID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgYW5kIHIyID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgaW4gKHIxIC8uIHNjYWxlICsuIHIyKSAvLiBzY2FsZVxuXG5cbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgbGV0IGJvb2wgcyA9IChiaXRzIHMgbGFuZCAxID0gMClcblxuZW5kXG5cbigqIFRoaXMgaXMgdGhlIHN0YXRlIHlvdSBnZXQgd2l0aCBbaW5pdCAyNzE4MjgxOF0gYW5kIHRoZW4gYXBwbHlpbmdcbiAgIHRoZSBcImxhbmQgMHgzRkZGRkZGRlwiIGZpbHRlciB0byB0aGVtLiAgU2VlICM1NTc1LCAjNTc5MywgIzU5NzcuICopXG5sZXQgZGVmYXVsdCA9IHtcbiAgU3RhdGUuc3QgPSBbfFxuICAgICAgMHgzYWUyNTIyYjsgMHgxZDhkNDYzNDsgMHgxNWI0ZmFkMDsgMHgxOGIxNGFjZTsgMHgxMmY4YTNjNDsgMHgzYjA4NmM0NztcbiAgICAgIDB4MTZkNDY3ZDY7IDB4MTAxZDkxYzc7IDB4MzIxZGYxNzc7IDB4MDE3NmMxOTM7IDB4MWZmNzJiZjE7IDB4MWU4ODkxMDk7XG4gICAgICAweDBiNDY0YjE4OyAweDJiODZiOTdjOyAweDA4OTFkYTQ4OyAweDAzMTM3NDYzOyAweDA4NWFjNWExOyAweDE1ZDYxZjJmO1xuICAgICAgMHgzYmNlZDM1OTsgMHgyOWMxYzEzMjsgMHgzYTg2NzY2ZTsgMHgzNjZkOGM4NjsgMHgxZjViNjIyMjsgMHgzY2UxYjU5ZjtcbiAgICAgIDB4MmViZjc4ZTE7IDB4MjdjZDFiODY7IDB4MjU4ZjNkYzM7IDB4Mzg5YTgxOTQ7IDB4MDJlNGM0NGM7IDB4MThjNDNmN2Q7XG4gICAgICAweDBmNmU1MzRmOyAweDFlN2RmMzU5OyAweDA1NWQwYjdlOyAweDEwZTg0ZTdlOyAweDEyNjE5OGU0OyAweDBlNzcyMmNiO1xuICAgICAgMHgxY2JlZGUyODsgMHgzMzkxYjk2NDsgMHgzZDQwZTkyYTsgMHgwYzU5OTMzZDsgMHgwYjhjZDBiNzsgMHgyNGVmZmYxYztcbiAgICAgIDB4MjgwM2ZkYWE7IDB4MDhlYmM3MmU7IDB4MGY1MjJlMzI7IDB4MDUzOThlZGM7IDB4MjE0NGEwNGM7IDB4MGFlZjNjYmQ7XG4gICAgICAweDAxYWQ0NzE5OyAweDM1YjkzY2Q2OyAweDJhNTU5ZDRmOyAweDFlNmZkNzY4OyAweDI2ZTI3ZjM2OyAweDE4NmYxOGMzO1xuICAgICAgMHgyZmJmOTY3YTtcbiAgICB8XTtcbiAgU3RhdGUuaWR4ID0gMDtcbn1cblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIGRlZmF1bHRcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgZGVmYXVsdCBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgZGVmYXVsdCBib3VuZFxubGV0IGludDMyIGJvdW5kID0gU3RhdGUuaW50MzIgZGVmYXVsdCBib3VuZFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCBkZWZhdWx0IGJvdW5kXG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCBkZWZhdWx0IHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgZGVmYXVsdFxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBzZWVkXG5sZXQgaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IGRlZmF1bHQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSBkZWZhdWx0XG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gZGVmYXVsdCBzXG5cbigqKioqKioqKioqKioqKioqKioqKlxuXG4oKiBUZXN0IGZ1bmN0aW9ucy4gIE5vdCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeS5cbiAgIFRoZSBbY2hpc3F1YXJlXSBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdpdGggbiA+IDEwci5cbiAgIEl0IHJldHVybnMgYSB0cmlwbGUgKGxvdywgYWN0dWFsLCBoaWdoKS5cbiAgIElmIGxvdyA8PSBhY3R1YWwgPD0gaGlnaCwgdGhlIFtnXSBmdW5jdGlvbiBwYXNzZWQgdGhlIHRlc3QsXG4gICBvdGhlcndpc2UgaXQgZmFpbGVkLlxuXG4gIFNvbWUgcmVzdWx0czpcblxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCA1MDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMDAgMTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyOTk3OTI2NDM7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMTQxNDIxMzY7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZiAxMDI0OyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMDsgY2hpc3F1YXJlIGRpZmYgMTAwMDAwIDEwMFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDI0OyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuaW5pdCAxNDE0MjEzNjsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDI5OTc5MjY0MzsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG4tIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDkzNi43NTQ0NDY3OTY2MzI0NjUsIDk5Ny41LCAxMDYzLjI0NTU1MzIwMzM2NzU0KVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODkuNzQwMDAwMDAwMDA1MjM4NywgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg0ODU4LjU3ODY0Mzc2MjY5LCA1MDQ1LjUsIDUxNDEuNDIxMzU2MjM3MzEpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPVxuKDkzNi43NTQ0NDY3OTY2MzI0NjUsIDk0NC44MDU5OTk5OTk5ODIzMDUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTAxOS4xOTc0NDAwMDAwMDM1NSwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA1OS4zMTc3NjAwMDAwMDUzNiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTAzOS45ODQ2Mzk5OTk5OTUxMiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA1NC4zODIwNzk5OTk5OTU3NywgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA5MC4wOTYwMDAwMDAwMDUsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA3Ni43ODcyMDAwMDAwMDYxMiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4xNzYwMDAwMDAwMDY3NTIxLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODUuMjE2MDAwMDAwMDAwMzQ5MiwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDgwLjYyMjAwMDAwMDAwMzAyNjgsIDEyMC4pXG5cbiopXG5cbigqIFJldHVybiB0aGUgc3VtIG9mIHRoZSBzcXVhcmVzIG9mIHZbaTAsaTFbICopXG5sZXQgcmVjIHN1bXNxIHYgaTAgaTEgPVxuICBpZiBpMCA+PSBpMSB0aGVuIDAuMFxuICBlbHNlIGlmIGkxID0gaTAgKyAxIHRoZW4gU3RkbGliLmZsb2F0IHYuKGkwKSAqLiBTdGRsaWIuZmxvYXQgdi4oaTApXG4gIGVsc2Ugc3Vtc3EgdiBpMCAoKGkwK2kxKS8yKSArLiBzdW1zcSB2ICgoaTAraTEpLzIpIGkxXG5cblxubGV0IGNoaXNxdWFyZSBnIG4gciA9XG4gIGlmIG4gPD0gMTAgKiByIHRoZW4gaW52YWxpZF9hcmcgXCJjaGlzcXVhcmVcIjtcbiAgbGV0IGYgPSBBcnJheS5tYWtlIHIgMCBpblxuICBmb3IgaSA9IDEgdG8gbiBkb1xuICAgIGxldCB0ID0gZyByIGluXG4gICAgZi4odCkgPC0gZi4odCkgKyAxXG4gIGRvbmU7XG4gIGxldCB0ID0gc3Vtc3EgZiAwIHJcbiAgYW5kIHIgPSBTdGRsaWIuZmxvYXQgclxuICBhbmQgbiA9IFN0ZGxpYi5mbG9hdCBuIGluXG4gIGxldCBzciA9IDIuMCAqLiBzcXJ0IHIgaW5cbiAgKHIgLS4gc3IsICAgKHIgKi4gdCAvLiBuKSAtLiBuLCAgIHIgKy4gc3IpXG5cblxuKCogVGhpcyBpcyB0byB0ZXN0IGZvciBsaW5lYXIgZGVwZW5kZW5jaWVzIGJldHdlZW4gc3VjY2Vzc2l2ZSByYW5kb20gbnVtYmVycy5cbiopXG5sZXQgc3QgPSByZWYgMFxubGV0IGluaXRfZGlmZiByID0gc3QgOj0gaW50IHJcbmxldCBkaWZmIHIgPVxuICBsZXQgeDEgPSAhc3RcbiAgYW5kIHgyID0gaW50IHJcbiAgaW5cbiAgc3QgOj0geDI7XG4gIGlmIHgxID49IHgyIHRoZW5cbiAgICB4MSAtIHgyXG4gIGVsc2VcbiAgICByICsgeDEgLSB4MlxuXG5cbmxldCBzdDEgPSByZWYgMFxuYW5kIHN0MiA9IHJlZiAwXG5cblxuKCogVGhpcyBpcyB0byB0ZXN0IGZvciBxdWFkcmF0aWMgZGVwZW5kZW5jaWVzIGJldHdlZW4gc3VjY2Vzc2l2ZSByYW5kb21cbiAgIG51bWJlcnMuXG4qKVxubGV0IGluaXRfZGlmZjIgciA9IHN0MSA6PSBpbnQgcjsgc3QyIDo9IGludCByXG5sZXQgZGlmZjIgciA9XG4gIGxldCB4MSA9ICFzdDFcbiAgYW5kIHgyID0gIXN0MlxuICBhbmQgeDMgPSBpbnQgclxuICBpblxuICBzdDEgOj0geDI7XG4gIHN0MiA6PSB4MztcbiAgKHgzIC0geDIgLSB4MiArIHgxICsgMipyKSBtb2QgclxuXG5cbioqKioqKioqKioqKioqKioqKioqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIGJ1Y2tldHMgYmVjb21lIHRvbyBsb25nLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSByZWYgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSByYW5kb21pemVkIDo9IHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gIXJhbmRvbWl6ZWRcblxubGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IG1lbSBoIGtleSA9XG4gIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXIgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuXG4gIGxldCBmaW5kX29yIHQgZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBtZXJnZSB0IGQgPVxuICAgIGZpbmRfb3IgdCBkIChmdW4gaCBpbmRleCAtPiBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaW5kZXg7IGQpXG5cblxuICBsZXQgZmluZCB0IGQgPSBmaW5kX29yIHQgZCAoZnVuIF9oIF9pbmRleCAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgZmluZF9zaGFkb3cgdCBkIGlmZm91bmQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmRcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gaWZmb3VuZCBidWNrZXQgaVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IHJlbW92ZSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biB3IGkgLT4gc2V0IHcgaSBOb25lKSAoKVxuXG5cbiAgbGV0IG1lbSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biBfdyBfaSAtPiB0cnVlKSBmYWxzZVxuXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9vcGVuX3RhZyBzdGF0ZSBzID0gcHBfb3Blbl9zdGFnIHN0YXRlIChTdHJpbmdfdGFnIHMpXG5sZXQgcHBfY2xvc2VfdGFnIHN0YXRlICgpID0gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgYiA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgYiB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgdHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPSBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCA9IHBwX29wZW5faGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl92Ym94ID0gcHBfb3Blbl92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2h2Ym94ID0gcHBfb3Blbl9odmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ob3Zib3ggPSBwcF9vcGVuX2hvdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ib3ggPSBwcF9vcGVuX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfYm94ID0gcHBfY2xvc2VfYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3RhZyA9IHBwX29wZW5fdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90YWcgPSBwcF9jbG9zZV90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fc3RhZyA9IHBwX29wZW5fc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2Vfc3RhZyA9IHBwX2Nsb3NlX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2FzID0gcHBfcHJpbnRfYXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3N0cmluZyA9IHBwX3ByaW50X3N0cmluZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnl0ZXMgPSBwcF9wcmludF9ieXRlcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaW50ID0gcHBfcHJpbnRfaW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbG9hdCA9IHBwX3ByaW50X2Zsb2F0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jaGFyID0gcHBfcHJpbnRfY2hhciBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYm9vbCA9IHBwX3ByaW50X2Jvb2wgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2JyZWFrID0gcHBfcHJpbnRfYnJlYWsgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2N1dCA9IHBwX3ByaW50X2N1dCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3BhY2UgPSBwcF9wcmludF9zcGFjZSBzdGRfZm9ybWF0dGVyXG5hbmQgZm9yY2VfbmV3bGluZSA9IHBwX2ZvcmNlX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ZsdXNoID0gcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X25ld2xpbmUgPSBwcF9wcmludF9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pZl9uZXdsaW5lID0gcHBfcHJpbnRfaWZfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBvcGVuX3Rib3ggPSBwcF9vcGVuX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3Rib3ggPSBwcF9jbG9zZV90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YnJlYWsgPSBwcF9wcmludF90YnJlYWsgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X3RhYiA9IHBwX3NldF90YWIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RhYiA9IHBwX3ByaW50X3RhYiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWFyZ2luID0gcHBfc2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9pbmRlbnQgPSBwcF9zZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZ2VvbWV0cnkgPSBwcF9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHNhZmVfc2V0X2dlb21ldHJ5ID0gcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9nZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgdXBkYXRlX2dlb21ldHJ5ID0gcHBfdXBkYXRlX2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfYm94ZXMgPSBwcF9zZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2JveGVzID0gcHBfZ2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Zlcl9tYXhfYm94ZXMgPSBwcF9vdmVyX21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZWxsaXBzaXNfdGV4dCA9IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZWxsaXBzaXNfdGV4dCA9IHBwX2dldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3ByaW50X3RhZ3MgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X3ByaW50X3RhZ3MgPVxuICBwcF9nZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X21hcmtfdGFncyA9XG4gIHBwX3NldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJrX3RhZ3MgPVxuICBwcF9nZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfdGFncyA9XG4gIHBwX3NldF90YWdzIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHJlYyBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbdl0gLT4gcHBfdiBwcGYgdlxuICB8IHYgOjogdnMgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBwX3YgcHBmIHZzXG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcmVjIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV90YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZF9mb3JtYXR0ZXIgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIGVycl9mb3JtYXR0ZXIgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXIgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIGVycl9mb3JtYXR0ZXIgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbigqXG5cbiAgRGVwcmVjYXRlZCBzdHVmZi5cblxuKilcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGVcbiAgICB+b3V0OmYgfmZsdXNoOmcgfm5ld2xpbmU6aCB+c3BhY2VzOmkgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGlcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoLFxuICAgc3RhdGUucHBfb3V0X25ld2xpbmUsIHN0YXRlLnBwX291dF9zcGFjZXMpXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBlcnJvciBwcm9uZSBmdW5jdGlvbiwgZG8gbm90IHVzZSBpdC5cbiAgIFRoaXMgZnVuY3Rpb24gaXMgbmVpdGhlciBjb21wb3NpdGlvbmFsIG5vciBpbmNyZW1lbnRhbCwgc2luY2UgaXQgZmx1c2hlc1xuICAgdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGF0IGVhY2ggY2FsbC5cbiAgIFRvIGdldCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCBkZWZpbmUgYSBmb3JtYXR0ZXIgb2YgeW91ciBvd24gd3JpdGluZyB0b1xuICAgdGhlIGJ1ZmZlciBhcmd1bWVudCwgYXMgaW5cbiAgIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJcbiAgIHRoZW4gdXNlIHshZnByaW50ZiBwcGZ9IGFzIHVzdWFsLiAqKVxubGV0IGJwcmludGYgYiAoRm9ybWF0IChmbXQsIF8pIDogKCdhLCBmb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdCkgPVxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9IG91dHB1dF9hY2MgcHBmIGFjYzsgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG4oKiBEZXByZWNhdGVkIDogYWxpYXMgZm9yIGtzcHJpbnRmLiAqKVxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuXG5cblxuKCogRGVwcmVjYXRlZCB0YWcgZnVuY3Rpb25zICopXG5cbnR5cGUgZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fdGFnIDogdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3RhZyA6IHRhZyAtPiB1bml0O1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl90YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3RhZyA9IHBjdDtcbiAgIH0gPVxuICBsZXQgc3RyaW5naWZ5IGYgZSA9IGZ1bmN0aW9uIFN0cmluZ190YWcgcyAtPiBmIHMgfCBfIC0+IGUgaW5cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBzdHJpbmdpZnkgbW90IFwiXCI7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBtY3QgXCJcIjtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gc3RyaW5naWZ5IHBvdCAoKTtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBwY3QgKClcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBmbXQgKCkgPVxuICBsZXQgZnVucyA9IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG4gIGxldCBtYXJrX29wZW5fdGFnIHMgPSBmdW5zLm1hcmtfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBtYXJrX2Nsb3NlX3RhZyBzID0gZnVucy5tYXJrX2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X29wZW5fdGFnIHMgPSBmdW5zLnByaW50X29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfY2xvc2VfdGFnIHMgPSBmdW5zLnByaW50X2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAge21hcmtfb3Blbl90YWc7IG1hcmtfY2xvc2VfdGFnOyBwcmludF9vcGVuX3RhZzsgcHJpbnRfY2xvc2VfdGFnfVxuXG5sZXQgc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogYWxpYXMgdG8gYXZvaWQgd2FybmluZyBmb3IgYW1iaWd1aXR5IGJldHdlZW5cbiAgIFN0ZGxpYi5mb3JtYXQ2XG4gICBhbmQgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcblxuICAgKHRoZSBmb3JtZXIgaXMgaW4gZmFjdCBhbiBhbGlhcyBmb3IgdGhlIGxhdHRlcixcbiAgICBidXQgdGhlIGFtYmlndWl0eSB3YXJuaW5nIGRvZXNuJ3QgY2FyZSlcbiopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIFN0ZGxpYi5mb3JtYXQ2XG5cblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5uZXJzLiAqKVxuXG4oKiBTY2FubmluZyBidWZmZXJzLiAqKVxubW9kdWxlIHR5cGUgU0NBTk5JTkcgPSBzaWdcblxuICB0eXBlIGluX2NoYW5uZWxcblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB2YWwgc3RkaW4gOiBpbl9jaGFubmVsXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBbc3RkaWJdIGlzIGVxdWl2YWxlbnQgdG8gW1NjYW5uaW5nLmZyb21fY2hhbm5lbCBTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBzdGRpYiA6IGluX2NoYW5uZWxcbiAgKCogQW4gYWxpYXMgZm9yIFtTY2FuZi5zdGRpbl0sIHRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tXG4gICAgIFtTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBuZXh0X2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLm5leHRfY2hhciBpYl0gYWR2YW5jZSB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyLlxuICAgICBJZiBubyBtb3JlIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJdIG1hcmsgdGhlIGN1cnJlbnRfY2hhciBhcyBhbHJlYWR5XG4gICAgIHNjYW5uZWQuICopXG5cbiAgdmFsIHBlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcucGVla19jaGFyIGliXSByZXR1cm5zIHRoZSBjdXJyZW50IGNoYXIgYXZhaWxhYmxlIGluXG4gICAgIHRoZSBidWZmZXIgb3IgcmVhZHMgb25lIGlmIG5lY2Vzc2FyeSAod2hlbiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXNcbiAgICAgYWxyZWFkeSBzY2FubmVkKS5cbiAgICAgSWYgbm8gY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGFuIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBjaGVja2VkX3BlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBTYW1lIGFzIFtTY2FubmluZy5wZWVrX2NoYXJdIGFib3ZlIGJ1dCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGNoYXIgb3JcbiAgICAgZmFpbHM6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgbnVsbCBjaGFyIHdoZW4gdGhlIHJlYWRpbmcgbWV0aG9kIG9mIHRoZVxuICAgICBpbnB1dCBidWZmZXIgaGFzIHJlYWNoZWQgYW4gZW5kIG9mIGZpbGUsIHRoZSBmdW5jdGlvbiByYWlzZXMgZXhjZXB0aW9uXG4gICAgIFtFbmRfb2ZfZmlsZV0uICopXG5cbiAgdmFsIHN0b3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBjaGFyIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc3RvcmVfY2hhciBsaW0gaWIgY10gYWRkcyBbY10gdG8gdGhlIHRva2VuIGJ1ZmZlclxuICAgICBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyIFtpYl0uIEl0IGFsc28gYWR2YW5jZXMgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3RlciBhbmQgcmV0dXJucyBbbGltIC0gMV0sIGluZGljYXRpbmcgdGhlIG5ldyBsaW1pdCBmb3IgdGhlXG4gICAgIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbi4gKilcblxuICB2YWwgc2tpcF9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5za2lwX2NoYXIgbGltIGliXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4gKilcblxuICB2YWwgaWdub3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmlnbm9yZV9jaGFyIGliIGxpbV0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kXG4gICAgIGRlY3JlbWVudHMgdGhlIGxpbWl0LiAqKVxuXG4gIHZhbCB0b2tlbiA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy50b2tlbiBpYl0gcmV0dXJucyB0aGUgc3RyaW5nIHN0b3JlZCBpbnRvIHRoZSB0b2tlblxuICAgICBidWZmZXIgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlcjogaXQgcmV0dXJucyB0aGUgdG9rZW4gbWF0Y2hlZCBieSB0aGVcbiAgICAgZm9ybWF0LiAqKVxuXG4gIHZhbCByZXNldF90b2tlbiA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWJdIHJlc2V0cyB0aGUgdG9rZW4gYnVmZmVyIG9mXG4gICAgIHRoZSBnaXZlbiBzY2FubmluZyBidWZmZXIuICopXG5cbiAgdmFsIGNoYXJfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuY2hhcl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnNcbiAgICAgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBsaW5lX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmxpbmVfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBuZXcgbGluZVxuICAgICBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgdG9rZW5fY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcudG9rZW5fY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiB0b2tlbnMgcmVhZFxuICAgICBzbyBmYXIgZnJvbSBbaWJdLiAqKVxuXG4gIHZhbCBlb2YgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVvZiBpYl0gcmV0dXJucyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBlbmRfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlciAoaWYgbm8gY2hhciBoYXMgZXZlciBiZWVuIHJlYWQsIGFuIGF0dGVtcHQgdG9cbiAgICAgcmVhZCBvbmUgaXMgcGVyZm9ybWVkKS4gKilcblxuICB2YWwgYmVnaW5uaW5nX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5iZWdpbm5pbmdfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBiZWdpbm5pbmcgb2YgaW5wdXRcbiAgICAgY29uZGl0aW9uIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIG5hbWVfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcubmFtZV9vZl9pbnB1dCBpYl0gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY2hhcmFjdGVyXG4gICAgIHNvdXJjZSBmb3IgaW5wdXQgYnVmZmVyIFtpYl0uICopXG5cbiAgdmFsIG9wZW5faW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgb3Blbl9pbl9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZV9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9mdW5jdGlvbiA6ICh1bml0IC0+IGNoYXIpIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcblxuICB2YWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXRcblxuICB2YWwgbWVtb19mcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG4gICgqIE9ic29sZXRlLiAqKVxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGliXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG5cbiAgbGV0IHN0ZGliID0gc3RkaW5cblxuICBsZXQgb3Blbl9pbl9maWxlIG9wZW5faW4gZm5hbWUgPVxuICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICB8IFwiLVwiIC0+IHN0ZGluXG4gICAgfCBmbmFtZSAtPlxuICAgICAgbGV0IGljID0gb3Blbl9pbiBmbmFtZSBpblxuICAgICAgZnJvbV9pY19jbG9zZV9hdF9lbmQgKEZyb21fZmlsZSAoZm5hbWUsIGljKSkgaWNcblxuXG4gIGxldCBvcGVuX2luID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luXG4gIGxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9maWxlID0gb3Blbl9pblxuICBsZXQgZnJvbV9maWxlX2JpbiA9IG9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBpYyA9XG4gICAgZnJvbV9pY19yYWlzZV9hdF9lbmQgKEZyb21fY2hhbm5lbCBpYykgaWNcblxuXG4gIGxldCBjbG9zZV9pbiBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgaWMgLT5cbiAgICAgIFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9maWxlIChfZm5hbWUsIGljKSAtPiBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZnVuY3Rpb24gfCBGcm9tX3N0cmluZyAtPiAoKVxuXG5cbiAgKCpcbiAgICAgT2Jzb2xldGU6IGEgbWVtbyBbZnJvbV9jaGFubmVsXSB2ZXJzaW9uIHRvIGJ1aWxkIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdXG4gICAgIHNjYW5uaW5nIGJ1ZmZlciBvdXQgb2YgYSBbU3RkbGliLmluX2NoYW5uZWxdLlxuICAgICBUaGlzIGZ1bmN0aW9uIHdhcyB1c2VkIHRvIHRyeSB0byBwcmVzZXJ2ZSB0aGUgc2Nhbm5pbmdcbiAgICAgc2VtYW50aWNzIGZvciB0aGUgKG5vdyBvYnNvbGV0ZSkgZnVuY3Rpb24gW2ZzY2FuZl0uXG4gICAgIEdpdmVuIHRoYXQgYWxsIHNjYW5uZXIgbXVzdCByZWFkIGZyb20gYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gc2Nhbm5pbmdcbiAgICAgYnVmZmVyLCBbZnNjYW5mXSBtdXN0IHJlYWQgZnJvbSBvbmUhXG4gICAgIE1vcmUgcHJlY2lzZWx5LCBnaXZlbiBbaWNdLCBhbGwgc3VjY2Vzc2l2ZSBjYWxscyBbZnNjYW5mIGljXSBtdXN0IHJlYWRcbiAgICAgZnJvbSB0aGUgc2FtZSBzY2FubmluZyBidWZmZXIuXG4gICAgIFRoaXMgb2JsaWdlZCB0aGlzIGxpYnJhcnkgdG8gYWxsb2NhdGVkIHNjYW5uaW5nIGJ1ZmZlcnMgdGhhdCB3ZXJlXG4gICAgIG5vdCBwcm9wZXJseSBnYXJiYWdlIGNvbGxlY3RhYmxlLCBoZW5jZSBsZWFkaW5nIHRvIG1lbW9yeSBsZWFrcy5cbiAgICAgSWYgeW91IG5lZWQgdG8gcmVhZCBmcm9tIGEgW1N0ZGxpYi5pbl9jaGFubmVsXSBpbnB1dCBjaGFubmVsXG4gICAgIFtpY10sIHNpbXBseSBkZWZpbmUgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gZm9ybWF0dGVkIGlucHV0IGNoYW5uZWwgYXMgaW5cbiAgICAgW2xldCBpYiA9IFNjYW5uaW5nLmZyb21fY2hhbm5lbCBpY10sIHRoZW4gdXNlIFtTY2FuZi5ic2NhbmYgaWJdIGFzIHVzdWFsLlxuICAqKVxuICBsZXQgbWVtb19mcm9tX2ljID1cbiAgICBsZXQgbWVtbyA9IHJlZiBbXSBpblxuICAgIChmdW4gc2Nhbl9jbG9zZV9pYyBpYyAtPlxuICAgICB0cnkgTGlzdC5hc3NxIGljICFtZW1vIHdpdGhcbiAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICBsZXQgaWIgPVxuICAgICAgICAgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIChGcm9tX2NoYW5uZWwgaWMpIGljIGluXG4gICAgICAgbWVtbyA6PSAoaWMsIGliKSA6OiAhbWVtbztcbiAgICAgICBpYilcblxuXG4gICgqIE9ic29sZXRlOiBzZWUgeyFtZW1vX2Zyb21faWN9IGFib3ZlLiAqKVxuICBsZXQgbWVtb19mcm9tX2NoYW5uZWwgPSBtZW1vX2Zyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cblxuKCogUmVwb3J0aW5nIGVycm9ycy4gKilcbmV4Y2VwdGlvbiBTY2FuX2ZhaWx1cmUgb2Ygc3RyaW5nXG5cbmxldCBiYWRfaW5wdXQgcyA9IHJhaXNlIChTY2FuX2ZhaWx1cmUgcylcblxubGV0IGJhZF9pbnB1dF9lc2NhcGUgYyA9XG4gIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgJUNcIiBjKVxuXG5cbmxldCBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgdGhlIHNwZWNpZmllZCBsZW5ndGggd2FzIHRvbyBzaG9ydCBmb3IgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICBwcmVtYXR1cmUgZW5kIG9mIGZpbGUgb2NjdXJyZWQgYmVmb3JlIGVuZCBvZiB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm8gZG90IG9yIGV4cG9uZW50IHBhcnQgZm91bmQgaW4gZmxvYXQgdG9rZW5cIlxuXG5cbmxldCBiYWRfaGV4X2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm90IGEgdmFsaWQgZmxvYXQgaW4gaGV4YWRlY2ltYWwgbm90YXRpb25cIlxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kgPVxuICBQcmludGYuc3ByaW50ZiBcImxvb2tpbmcgZm9yICVDLCBmb3VuZCAlQ1wiIGMgY2lcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoIGMgY2kgPVxuICBiYWRfaW5wdXQgKGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSlcblxuXG5sZXQgcmVjIHNraXBfd2hpdGVzIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW4gYmVnaW5cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPlxuICAgICAgU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IHNraXBfd2hpdGVzIGliXG4gICAgfCBfIC0+ICgpXG4gIGVuZFxuXG5cbigqIENoZWNraW5nIHRoYXQgW2NdIGlzIGluZGVlZCBpbiB0aGUgaW5wdXQsIHRoZW4gc2tpcHMgaXQuXG4gICBJbiB0aGlzIGNhc2UsIHRoZSBjaGFyYWN0ZXIgW2NdIGhhcyBiZWVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZVxuICAgZm9ybWF0IGFzIGJlaW5nIG1hbmRhdG9yeSBpbiB0aGUgaW5wdXQ7IGhlbmNlIHdlIHNob3VsZCBmYWlsIHdpdGhcbiAgIFtFbmRfb2ZfZmlsZV0gaW4gY2FzZSBvZiBlbmRfb2ZfaW5wdXQuXG4gICAoUmVtZW1iZXIgdGhhdCBbU2Nhbl9mYWlsdXJlXSBpcyByYWlzZWQgb25seSB3aGVuICh3ZSBjYW4gcHJvdmUgYnlcbiAgIGV2aWRlbmNlKSB0aGF0IHRoZSBpbnB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybWF0IHN0cmluZyBnaXZlbi4gV2UgbXVzdFxuICAgdGh1cyBkaWZmZXJlbnRpYXRlIFtFbmRfb2ZfZmlsZV0gYXMgYW4gZXJyb3IgZHVlIHRvIGxhY2sgb2YgaW5wdXQsIGFuZFxuICAgW1NjYW5fZmFpbHVyZV0gd2hpY2ggaXMgZHVlIHRvIHByb3ZhYmx5IHdyb25nIGlucHV0LiBJIGFtIG5vdCBzdXJlIHRoaXMgaXNcbiAgIHdvcnRoIHRoZSBidXJkZW46IGl0IGlzIGNvbXBsZXggYW5kIHNvbWVob3cgc3VibGltaW5hbDsgc2hvdWxkIGJlIGNsZWFyZXJcbiAgIHRvIGZhaWwgd2l0aCBTY2FuX2ZhaWx1cmUgXCJOb3QgZW5vdWdoIGlucHV0IHRvIGNvbXBsZXRlIHNjYW5uaW5nXCIhKVxuXG4gICBUaGF0J3Mgd2h5LCB3YWl0aW5nIGZvciBhIGJldHRlciBzb2x1dGlvbiwgd2UgdXNlIGNoZWNrZWRfcGVla19jaGFyIGhlcmUuXG4gICBXZSBhcmUgYWxzbyBjYXJlZnVsIHRvIHRyZWF0IFwiXFxyXFxuXCIgaW4gdGhlIGlucHV0IGFzIGFuIGVuZCBvZiBsaW5lIG1hcmtlcjpcbiAgIGl0IGFsd2F5cyBtYXRjaGVzIGEgJ1xcbicgc3BlY2lmaWNhdGlvbiBpbiB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZy4gKilcbmxldCByZWMgY2hlY2tfY2hhciBpYiBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJyAnIC0+IHNraXBfd2hpdGVzIGliXG4gIHwgJ1xcbicgLT4gY2hlY2tfbmV3bGluZSBpYlxuICB8IGMgLT4gY2hlY2tfdGhpc19jaGFyIGliIGNcblxuYW5kIGNoZWNrX3RoaXNfY2hhciBpYiBjID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgY2kgPSBjIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgZWxzZVxuICBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5hbmQgY2hlY2tfbmV3bGluZSBpYiA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGNpIHdpdGhcbiAgfCAnXFxuJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICB8ICdcXHInIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBjaGVja190aGlzX2NoYXIgaWIgJ1xcbidcbiAgfCBfIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxuJyBjaVxuXG5cbigqIEV4dHJhY3RpbmcgdG9rZW5zIGZyb20gdGhlIG91dHB1dCB0b2tlbiBidWZmZXIuICopXG5cbmxldCB0b2tlbl9jaGFyIGliID0gKFNjYW5uaW5nLnRva2VuIGliKS5bMF1cblxubGV0IHRva2VuX3N0cmluZyA9IFNjYW5uaW5nLnRva2VuXG5cbmxldCB0b2tlbl9ib29sIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcudG9rZW4gaWIgd2l0aFxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBzIC0+IGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbnZhbGlkIGJvb2xlYW4gJyVzJ1wiIHMpXG5cblxuKCogVGhlIHR5cGUgb2YgaW50ZWdlciBjb252ZXJzaW9ucy4gKilcbnR5cGUgaW50ZWdlcl9jb252ZXJzaW9uID1cbiAgfCBCX2NvbnZlcnNpb24gKCogVW5zaWduZWQgYmluYXJ5IGNvbnZlcnNpb24gKilcbiAgfCBEX2NvbnZlcnNpb24gKCogU2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IElfY29udmVyc2lvbiAoKiBTaWduZWQgaW50ZWdlciBjb252ZXJzaW9uICopXG4gIHwgT19jb252ZXJzaW9uICgqIFVuc2lnbmVkIG9jdGFsIGNvbnZlcnNpb24gKilcbiAgfCBVX2NvbnZlcnNpb24gKCogVW5zaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgWF9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGhleGFkZWNpbWFsIGNvbnZlcnNpb24gKilcblxuXG5sZXQgaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgPSBmdW5jdGlvblxuICB8ICdiJyAtPiBCX2NvbnZlcnNpb25cbiAgfCAnZCcgLT4gRF9jb252ZXJzaW9uXG4gIHwgJ2knIC0+IElfY29udmVyc2lvblxuICB8ICdvJyAtPiBPX2NvbnZlcnNpb25cbiAgfCAndScgLT4gVV9jb252ZXJzaW9uXG4gIHwgJ3gnIHwgJ1gnIC0+IFhfY29udmVyc2lvblxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuKCogRXh0cmFjdCBhbiBpbnRlZ2VyIGxpdGVyYWwgdG9rZW4uXG4gICBTaW5jZSB0aGUgZnVuY3Rpb25zIFN0ZGxpYi4qaW50Kl9vZl9zdHJpbmcgZG8gbm90IGFjY2VwdCBhIGxlYWRpbmcgKyxcbiAgIHdlIHNraXAgaXQgaWYgbmVjZXNzYXJ5LiAqKVxubGV0IHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIgPVxuICBsZXQgdG9rID1cbiAgICBtYXRjaCBjb252IHdpdGhcbiAgICB8IERfY29udmVyc2lvbiB8IElfY29udmVyc2lvbiAtPiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgVV9jb252ZXJzaW9uIC0+IFwiMHVcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBPX2NvbnZlcnNpb24gLT4gXCIwb1wiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFhfY29udmVyc2lvbiAtPiBcIjB4XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgQl9jb252ZXJzaW9uIC0+IFwiMGJcIiBeIFNjYW5uaW5nLnRva2VuIGliIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCB0b2sgaW5cbiAgaWYgbCA9IDAgfHwgdG9rLlswXSA8PiAnKycgdGhlbiB0b2sgZWxzZSBTdHJpbmcuc3ViIHRvayAxIChsIC0gMSlcblxuXG4oKiBBbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBudW1iZXIgcmFpc2UgdGhlIGV4Y2VwdGlvblxuICAgRmFpbHVyZSB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBwb3NzaWJsZS5cbiAgIFRoaXMgZXhjZXB0aW9uIGlzIHRoZW4gdHJhcHBlZCBpbiBba3NjYW5mXS4gKilcbmxldCB0b2tlbl9pbnQgY29udiBpYiA9IGludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbmxldCB0b2tlbl9mbG9hdCBpYiA9IGZsb2F0X29mX3N0cmluZyAoU2Nhbm5pbmcudG9rZW4gaWIpXG5cbigqIFRvIHNjYW4gbmF0aXZlIGludHMsIGludDMyIGFuZCBpbnQ2NCBpbnRlZ2Vycy5cbiAgIFdlIGNhbm5vdCBhY2Nlc3MgdG8gY29udmVyc2lvbnMgdG8vZnJvbSBzdHJpbmdzIGZvciB0aG9zZSB0eXBlcyxcbiAgIE5hdGl2ZWludC5vZl9zdHJpbmcsIEludDMyLm9mX3N0cmluZywgYW5kIEludDY0Lm9mX3N0cmluZyxcbiAgIHNpbmNlIHRob3NlIG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8gW1NjYW5mXS5cbiAgIEhvd2V2ZXIsIHdlIGNhbiBiaW5kIGFuZCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgcHJpbWl0aXZlcyB0aGF0IGFyZVxuICAgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lLiAqKVxuZXh0ZXJuYWwgbmF0aXZlaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDMyX29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQ2NF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxuXG5sZXQgdG9rZW5fbmF0aXZlaW50IGNvbnYgaWIgPSBuYXRpdmVpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDMyIGNvbnYgaWIgPSBpbnQzMl9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50NjQgY29udiBpYiA9IGludDY0X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxuKCogU2Nhbm5pbmcgbnVtYmVycy4gKilcblxuKCogRGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzdXBwb3NlIHRoYXQgb25lIGNoYXJhY3RlciBoYXMgYmVlbiBjaGVja2VkIGFuZFxuICAgaXMgYXZhaWxhYmxlLCBzaW5jZSB0aGV5IHJldHVybiBhdCBlbmQgb2YgZmlsZSB3aXRoIHRoZSBjdXJyZW50bHkgZm91bmRcbiAgIHRva2VuIHNlbGVjdGVkLlxuXG4gICBQdXQgaXQgaW4gYW5vdGhlciB3YXksIHRoZSBkaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHNjYW4gZm9yIGEgcG9zc2libHlcbiAgIGVtcHR5IHNlcXVlbmNlIG9mIGRpZ2l0cywgKGhlbmNlLCBhIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcgZnJvbSBvbmUgb2YgdGhvc2VcbiAgIGZ1bmN0aW9ucyBkb2VzIG5vdCBpbXBseSB0aGF0IHRoZSB0b2tlbiBpcyBhIHdlbGwtZm9ybWVkIG51bWJlcjogdG8gZ2V0IGFcbiAgIHRydWUgbnVtYmVyLCBpdCBpcyBtYW5kYXRvcnkgdG8gY2hlY2sgdGhhdCBhdCBsZWFzdCBvbmUgdmFsaWQgZGlnaXQgaXNcbiAgIGF2YWlsYWJsZSBiZWZvcmUgY2FsbGluZyBvbmUgb2YgdGhlIGRpZ2l0IHNjYW5uaW5nIGZ1bmN0aW9ucykuICopXG5cbigqIFRoZSBkZWNpbWFsIGNhc2UgaXMgdHJlYXRlZCBlc3BlY2lhbGx5IGZvciBvcHRpbWl6YXRpb24gcHVycG9zZXMuICopXG5sZXQgcmVjIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgJ18nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGVjaW1hbCBkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgZGVjaW1hbCBkaWdpdFwiIGMpXG5cblxuKCogVG8gc2NhbiBudW1iZXJzIGZyb20gb3RoZXIgYmFzZXMsIHdlIHVzZSBhIHByZWRpY2F0ZSBhcmd1bWVudCB0b1xuICAgc2NhbiBkaWdpdHMuICopXG5sZXQgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9kaWdpdHMgd2lkdGggaWIgPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8IGMgd2hlbiBkaWdpdHAgYyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgJ18nIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8IF8gLT4gd2lkdGggaW5cbiAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9kaWdpdF9wbHVzIGJhc2lzIGRpZ2l0cCB3aWR0aCBpYiA9XG4gICgqIEVuc3VyZSB3ZSBoYXZlIGdvdCBlbm91Z2ggd2lkdGggbGVmdCxcbiAgICAgYW5kIHJlYWQgYXQgbGVhc3Qgb25lIGRpZ2l0LiAqKVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGRpZ2l0cCBjIHRoZW5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliXG4gIGVsc2VcbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIHZhbGlkICVzIGRpZ2l0XCIgYyBiYXNpcylcblxuXG5sZXQgaXNfYmluYXJ5X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzEnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fYmluYXJ5X2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImJpbmFyeVwiIGlzX2JpbmFyeV9kaWdpdFxuXG5sZXQgaXNfb2N0YWxfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnNycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9vY3RhbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJvY3RhbFwiIGlzX29jdGFsX2RpZ2l0XG5cbmxldCBpc19oZXhhX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9oZXhhZGVjaW1hbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJoZXhhZGVjaW1hbFwiIGlzX2hleGFfZGlnaXRcblxuKCogU2NhbiBhIGRlY2ltYWwgaW50ZWdlci4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50ID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXNcblxubGV0IHNjYW5fc2lnbiB3aWR0aCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJysnIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8ICctJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW4gYW4gdW5zaWduZWQgaW50ZWdlciB0aGF0IGNvdWxkIGJlIGdpdmVuIGluIGFueSAoY29tbW9uKSBiYXNpcy5cbiAgIElmIGRpZ2l0cyBhcmUgcHJlZml4ZWQgYnkgb25lIG9mIDB4LCAwWCwgMG8sIG9yIDBiLCB0aGUgbnVtYmVyIGlzXG4gICBhc3N1bWVkIHRvIGJlIHdyaXR0ZW4gcmVzcGVjdGl2ZWx5IGluIGhleGFkZWNpbWFsLCBoZXhhZGVjaW1hbCxcbiAgIG9jdGFsLCBvciBiaW5hcnkuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgYmVnaW4gbWF0Y2ggYyB3aXRoXG4gICAgfCAneCcgfCAnWCcgLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdvJyAtPiBzY2FuX29jdGFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ2InIC0+IHNjYW5fYmluYXJ5X2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgXyAtPiBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBlbmRcbiAgfCBfIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9pbnRfY29udmVyc2lvbiBjb252IHdpZHRoIGliID1cbiAgbWF0Y2ggY29udiB3aXRoXG4gIHwgQl9jb252ZXJzaW9uIC0+IHNjYW5fYmluYXJ5X2ludCB3aWR0aCBpYlxuICB8IERfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgSV9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliXG4gIHwgT19jb252ZXJzaW9uIC0+IHNjYW5fb2N0YWxfaW50IHdpZHRoIGliXG4gIHwgVV9jb252ZXJzaW9uIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBYX2NvbnZlcnNpb24gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FubmluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqKVxuXG4oKiBGcmFjdGlvbmFsIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIEV4cCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJ2UnIHwgJ0UnIGFzIGMgLT5cbiAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIFNjYW4gdGhlIGludGVnZXIgcGFydCBvZiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgKG5vdCB1c2luZyB0aGVcbiAgIE9DYW1sIGxleGljYWwgY29udmVudGlvbiBzaW5jZSB0aGUgaW50ZWdlciBwYXJ0IGNhbiBiZSBlbXB0eSk6XG4gICBhbiBvcHRpb25hbCBzaWduLCBmb2xsb3dlZCBieSBhIHBvc3NpYmx5IGVtcHR5IHNlcXVlbmNlIG9mIGRlY2ltYWxcbiAgIGRpZ2l0cyAoZS5nLiAtLjEpLiAqKVxubGV0IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG5cblxuKCpcbiAgIEZvciB0aGUgdGltZSBiZWluZyB3ZSBoYXZlIChhcyBmb3VuZCBpbiBzY2FuZi5tbGkpOlxuICAgdGhlIGZpZWxkIHdpZHRoIGlzIGNvbXBvc2VkIG9mIGFuIG9wdGlvbmFsIGludGVnZXIgbGl0ZXJhbFxuICAgaW5kaWNhdGluZyB0aGUgbWF4aW1hbCB3aWR0aCBvZiB0aGUgdG9rZW4gdG8gcmVhZC5cbiAgIFVuZm9ydHVuYXRlbHksIHRoZSB0eXBlLWNoZWNrZXIgbGV0IHRoZSB1c2VyIHdyaXRlIGFuIG9wdGlvbmFsIHByZWNpc2lvbixcbiAgIHNpbmNlIHRoaXMgaXMgdmFsaWQgZm9yIHByaW50ZiBmb3JtYXQgc3RyaW5ncy5cblxuICAgVGh1cywgdGhlIG5leHQgc3RlcCBmb3IgU2NhbmYgaXMgdG8gc3VwcG9ydCBhIGZ1bGwgd2lkdGggYW5kIHByZWNpc2lvblxuICAgaW5kaWNhdGlvbiwgbW9yZSBvciBsZXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmb3IgcHJpbnRmLCBwb3NzaWJseSBleHRlbmRlZFxuICAgdG8gdGhlIHNwZWNpZmljYXRpb24gb2YgYSBbbWF4LCBtaW5dIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWRcbiAgIGZvciBzdHJpbmdzLiBTb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHNwZWMgZm9yIHNjYW5mLm1saTpcblxuICAgVGhlIG9wdGlvbmFsIFt3aWR0aF0gaXMgYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsXG4gICB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC4gRm9yIGluc3RhbmNlLCBbJTZkXSByZWFkcyBhbiBpbnRlZ2VyLFxuICAgaGF2aW5nIGF0IG1vc3QgNiBjaGFyYWN0ZXJzLlxuXG4gICBUaGUgb3B0aW9uYWwgW3ByZWNpc2lvbl0gaXMgYSBkb3QgWy5dIGZvbGxvd2VkIGJ5IGFuIGludGVnZXI6XG5cbiAgIC0gaW4gdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBjb252ZXJzaW9ucyAoWyVmXSwgWyVlXSwgWyVnXSwgWyVGXSwgWyVFXSxcbiAgIGFuZCBbJUZdIGNvbnZlcnNpb25zLCB0aGUgW3ByZWNpc2lvbl0gaW5kaWNhdGVzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAgZGlnaXRzIHRoYXQgbWF5IGZvbGxvdyB0aGUgZGVjaW1hbCBwb2ludC4gRm9yIGluc3RhbmNlLCBbJS40Zl0gcmVhZHMgYVxuICAgW2Zsb2F0XSB3aXRoIGF0IG1vc3QgNCBmcmFjdGlvbmFsIGRpZ2l0cyxcblxuICAgLSBpbiB0aGUgc3RyaW5nIGNvbnZlcnNpb25zIChbJXNdLCBbJVNdLCBbJVxcWyByYW5nZSBcXF1dKSwgYW5kIGluIHRoZVxuICAgaW50ZWdlciBudW1iZXIgY29udmVyc2lvbnMgKFslaV0sIFslZF0sIFsldV0sIFsleF0sIFslb10sIGFuZCB0aGVpclxuICAgW2ludDMyXSwgW2ludDY0XSwgYW5kIFtuYXRpdmVfaW50XSBjb3JyZXNwb25kZW50KSwgdGhlIFtwcmVjaXNpb25dXG4gICBpbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHRva2VuIHJlYWQsXG5cbiAgIC0gb24gYWxsIG90aGVyIGNvbnZlcnNpb25zLCB0aGUgd2lkdGggYW5kIHByZWNpc2lvbiBzcGVjaWZ5IHRoZSBbbWF4LCBtaW5dXG4gICByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLlxuKilcbmxldCBzY2FuX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliKSBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG4gIHwgXyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG5cblxubGV0IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGVycm9yIHN0ciA9XG4gIGxldCBsb3dlcmNhc2UgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnQScgLi4gJ1onIC0+XG4gICAgICBjaGFyX29mX2ludCAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIGludF9vZl9jaGFyICdhJylcbiAgICB8IF8gLT4gYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoID0gcmVmIHdpZHRoIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBsb3dlcmNhc2UgYyA8PiBsb3dlcmNhc2Ugc3RyLltpXSB0aGVuIGVycm9yICgpO1xuICAgIGlmICF3aWR0aCA9IDAgdGhlbiBlcnJvciAoKTtcbiAgICB3aWR0aCA6PSBTY2FubmluZy5zdG9yZV9jaGFyICF3aWR0aCBpYiBjO1xuICBkb25lO1xuICAhd2lkdGhcblxuXG5sZXQgc2Nhbl9oZXhfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgbGV0IHdpZHRoID0gY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcInhcIiBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgICApXG4gICAgICAgICAgfCBfIC0+IHdpZHRoIGluXG4gICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICAgIHwgXyAtPiB3aWR0aFxuICApXG4gIHwgJ24nIHwgJ04nIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwiYW5cIlxuICB8ICdpJyB8ICdJJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcIm5maW5pdHlcIlxuICB8IF8gLT4gYmFkX2hleF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAoKiBUaGUgZWZmZWN0aXZlIHdpZHRoIGF2YWlsYWJsZSBmb3Igc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCBpc1xuICAgICAgIHRoZSBtaW5pbXVtIG9mIGRlY2xhcmVkIHByZWNpc2lvbiBhbmQgd2lkdGggbGVmdC4gKilcbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAoKiBBZnRlciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHdpdGggW3ByZWNpc2lvbl0gcHJvdmlzaW9uYWwgd2lkdGgsXG4gICAgICAgW3dpZHRoX3ByZWNpc2lvbl0gaXMgbGVmdC4gKilcbiAgICBsZXQgd2lkdGhfcHJlY2lzaW9uID0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliIGluXG4gICAgKCogSGVuY2UsIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgdG9vayBleGFjdGx5XG4gICAgICAgW3ByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbl0gY2hhcnMuICopXG4gICAgbGV0IGZyYWNfd2lkdGggPSBwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb24gaW5cbiAgICAoKiBBbmQgbmV3IHByb3Zpc2lvbmFsIHdpZHRoIGlzIFt3aWR0aCAtIHdpZHRoX3ByZWNpc2lvbi4gKilcbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIGZyYWNfd2lkdGggaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCAnZScgfCAnRScgLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICB8ICd4JyB8ICdYJyBhcyBjIC0+IChcbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgIClcbiAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGJhZF9mbG9hdCAoKSBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgfCBfIC0+IHdpZHRoXG4gICAgKVxuICAgIHwgXyAtPlxuICAgICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4gIClcbiAgfCAnMScgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuKCogU3BlY2lhbCBjYXNlIG9mIG5hbiBhbmQgaW5maW5pdHk6XG4gIHwgJ2knIC0+XG4gIHwgJ24nIC0+XG4qKVxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxuKCogU2NhbiBhIHJlZ3VsYXIgc3RyaW5nOlxuICAgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgYSBzcGFjZSwgaWYgbm8gc2Nhbm5pbmcgaW5kaWNhdGlvbiBoYXMgYmVlbiBnaXZlbjtcbiAgIG90aGVyd2lzZSwgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHNjYW5uaW5nXG4gICBpbmRpY2F0aW9uIFtzdHBdLlxuICAgSXQgYWxzbyBzdG9wcyBhdCBlbmQgb2YgZmlsZSBvciB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGhhc1xuICAgYmVlbiByZWFkLiAqKVxubGV0IHNjYW5fc3RyaW5nIHN0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgbG9vcCB3aWR0aCA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbWF0Y2ggc3RwIHdpdGhcbiAgICAgIHwgU29tZSBjJyB3aGVuIGMgPSBjJyAtPiBTY2FubmluZy5za2lwX2NoYXIgd2lkdGggaWJcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaW5cbiAgbG9vcCB3aWR0aFxuXG5cbigqIFNjYW4gYSBjaGFyOiBwZWVrIHN0cmljdGx5IG9uZSBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LCB3aGF0c29ldmVyLiAqKVxubGV0IHNjYW5fY2hhciB3aWR0aCBpYiA9XG4gICgqIFRoZSBjYXNlIHdpZHRoID0gMCBjb3VsZCBub3QgaGFwcGVuIGhlcmUsIHNpbmNlIGl0IGlzIHRlc3RlZCBiZWZvcmVcbiAgICAgY2FsbGluZyBzY2FuX2NoYXIsIGluIHRoZSBtYWluIHNjYW5uaW5nIGZ1bmN0aW9uLlxuICAgIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJhIGNoYXJhY3RlclwiIGVsc2UgKilcbiAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIpXG5cblxubGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gIHwgJ24nIC0+ICdcXDAxMCdcbiAgfCAncicgLT4gJ1xcMDEzJ1xuICB8ICdiJyAtPiAnXFwwMDgnXG4gIHwgJ3QnIC0+ICdcXDAwOSdcbiAgfCBjIC0+IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPSBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG5cbmxldCBjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTAwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMwICtcbiAgICAgMTAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJiYWQgY2hhcmFjdGVyIGRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWMlY1wiIGMwIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgaGV4YWRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9XG4gIGxldCBkID0gaW50X29mX2NoYXIgYyBpblxuICAoKiBDb3VsZCBhbHNvIGJlOlxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJzknIHRoZW4gZCAtIGludF9vZl9jaGFyICcwJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnRicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnQScgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ2YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ2EnIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICopXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ2EnIHRoZW5cbiAgICBkIC0gODcgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICopIGVsc2VcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnQScgdGhlblxuICAgIGQgLSA1NSAgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICopIGVsc2VcbiAgICBkIC0gaW50X29mX2NoYXIgJzAnXG5cblxubGV0IGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTYgKiBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJiYWQgY2hhcmFjdGVyIGhleGFkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjXCIgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIENhbGxlZCBpbiBwYXJ0aWN1bGFyIHdoZW4gZW5jb3VudGVyaW5nICdcXFxcJyBhcyBzdGFydGVyIG9mIGEgY2hhci5cbiAgIFN0b3BzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyAnXFwnJy4gKilcbmxldCBjaGVja19uZXh0X2NoYXIgbWVzc2FnZSB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSBlbHNlXG4gIGNcblxuXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBDaGFyXCJcbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyA9IGNoZWNrX25leHRfY2hhciBcImEgU3RyaW5nXCJcblxubGV0IHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIgPVxuICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1xcXCInIHwgJ24nIHwgJ3QnIHwgJ2InIHwgJ3InIGFzIGMgLT5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChjaGFyX2Zvcl9iYWNrc2xhc2ggYylcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzAgPSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyKVxuICB8ICd4JyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMilcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0X2VzY2FwZSBjXG5cblxuKCogU2NhbiBhIGNoYXJhY3RlciAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9jaGFyIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IGZpbmRfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjXG5cbiAgYW5kIGZpbmRfY2hhciB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFxcJyAtPlxuICAgICAgZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYikgaWIpXG4gICAgfCBjIC0+XG4gICAgICBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGMgaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGRlbGltaXRlZCBzdHJpbmcgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcXCInIGNcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8ICdcXFxcJyAtPiBzY2FuX2JhY2tzbGFzaCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBzY2FuX2JhY2tzbGFzaCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xccicgLT4gc2tpcF9uZXdsaW5lIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliKVxuXG4gIGFuZCBza2lwX25ld2xpbmUgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliICdcXHInKVxuXG4gIGFuZCBza2lwX3NwYWNlcyB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJyAnIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIHdpZHRoIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBib29sZWFuIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9ib29sIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAndCcgLT4gNFxuICAgIHwgJ2YnIC0+IDVcbiAgICB8IGMgLT5cbiAgICAgIGJhZF9pbnB1dFxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJ0aGUgY2hhcmFjdGVyICVDIGNhbm5vdCBzdGFydCBhIGJvb2xlYW5cIiBjKSBpblxuICBzY2FuX3N0cmluZyBOb25lIG0gaWJcblxuXG4oKiBTY2FuIGEgc3RyaW5nIGNvbnRhaW5pbmcgZWxlbWVudHMgaW4gY2hhcl9zZXQgYW5kIHRlcm1pbmF0ZWQgYnkgc2Nhbl9pbmRpY1xuICAgaWYgcHJvdmlkZWQuICopXG5sZXQgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBzY2FuX2luZGljIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2NoYXJzIGkgc3RwID1cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGkgPiAwICYmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSAmJlxuICAgICAgIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgJiZcbiAgICAgICBpbnRfb2ZfY2hhciBjIDw+IHN0cCB0aGVuXG4gICAgICBsZXQgXyA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgbWF4X2ludCBpYiBjIGluXG4gICAgICBzY2FuX2NoYXJzIChpIC0gMSkgc3RwIGluXG4gIG1hdGNoIHNjYW5faW5kaWMgd2l0aFxuICB8IE5vbmUgLT4gc2Nhbl9jaGFycyB3aWR0aCAoLTEpO1xuICB8IFNvbWUgYyAtPlxuICAgIHNjYW5fY2hhcnMgd2lkdGggKGludF9vZl9jaGFyIGMpO1xuICAgIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuXG4gICAgICBsZXQgY2kgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICAgIGlmIGMgPSBjaVxuICAgICAgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICAgICAgZWxzZSBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5cbigqIFRoZSBnbG9iYWwgZXJyb3IgcmVwb3J0IGZ1bmN0aW9uIGZvciBbU2NhbmZdLiAqKVxubGV0IHNjYW5mX2JhZF9pbnB1dCBpYiA9IGZ1bmN0aW9uXG4gIHwgU2Nhbl9mYWlsdXJlIHMgfCBGYWlsdXJlIHMgLT5cbiAgICBsZXQgaSA9IFNjYW5uaW5nLmNoYXJfY291bnQgaWIgaW5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwic2NhbmY6IGJhZCBpbnB1dCBhdCBjaGFyIG51bWJlciAlaTogJXNcIiBpIHMpXG4gIHwgeCAtPiByYWlzZSB4XG5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIGEgY291bnRlciBmcm9tIGFuIGlucHV0IGJ1ZmZlci4gKilcbmxldCBnZXRfY291bnRlciBpYiBjb3VudGVyID1cbiAgbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyIC0+IFNjYW5uaW5nLmxpbmVfY291bnQgaWJcbiAgfCBDaGFyX2NvdW50ZXIgLT4gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYlxuICB8IFRva2VuX2NvdW50ZXIgLT4gU2Nhbm5pbmcudG9rZW5fY291bnQgaWJcblxuXG4oKiBDb21wdXRlIHRoZSB3aWR0aCBvZiBhIHBhZGRpbmcgb3B0aW9uIChzZWUgXCIlNDJ7XCIgYW5kIFwiJTEyMyhcIikuICopXG5sZXQgd2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBtYXhfaW50XG4gIHwgU29tZSB3aWR0aCAtPiB3aWR0aFxuXG5cbmxldCBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyA9XG4gIGlmIGZtdGluZyA9IEVzY2FwZWRfcGVyY2VudCB0aGVuICclJywgXCJcIiBlbHNlXG4gICAgbGV0IHN0ciA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgaW5cbiAgICBsZXQgc3RwID0gc3RyLlsxXSBpblxuICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgMiAoU3RyaW5nLmxlbmd0aCBzdHIgLSAyKSBpblxuICAgIHN0cCwgc3ViX3N0clxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBSZWFkZXIgbWFuYWdlbWVudCAqKVxuXG4oKiBBIGNhbGwgdG8gdGFrZV9mb3JtYXRfcmVhZGVycyBvbiBhIGZvcm1hdCBpcyBldmFsdWF0ZWQgaW50byBmdW5jdGlvbnNcbiAgIHRha2luZyByZWFkZXJzIGFzIGFyZ3VtZW50cyBhbmQgYWdncmVnYXRlIHRoZW0gaW50byBhbiBoZXRlcm9nZW5lb3VzIGxpc3QgKilcbigqIFdoZW4gYWxsIHJlYWRlcnMgYXJlIHRha2VuLCBmaW5hbGx5IHBhc3MgdGhlIGxpc3Qgb2YgdGhlIHJlYWRlcnMgdG8gdGhlXG4gICBjb250aW51YXRpb24gay4gKilcbmxldCByZWMgdGFrZV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIGQgPVxuZnVuIGsgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3RcbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX3N0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50MzIgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBOYXRpdmVpbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDY0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmxvYXQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBCb29sIChfLCByZXN0KSAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDdXN0b20gKF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpICAgIC0+XG4gICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSkgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgICAgICAgIC0+IHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyBrIGlnbiByZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAgICAgICAtPiBrIE5pbFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBmbXR0eSBjb21pbmcgZnJvbSBhIEZvcm1hdF9zdWJzdCBcIiUoLi4uJSlcIi4gKilcbmFuZCB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGZtdHR5IC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBSZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBpZ25vcmVkIHBhcmFtZXRlci4gKilcbmFuZCB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgaWdub3JlZCAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHNjYW5uaW5nICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHNjYW5uaW5nIGZ1bmN0aW9uLiAqKVxuKCogU2NhbiBhIHN0cmVhbSBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgYW5kIHJlYWRlcnMgb2J0YWluZWQgYnlcbiAgIHRha2VfZm9ybWF0X3JlYWRlcnMsIGFuZCBhZ2dyZWdhdGUgc2Nhbm5lZCB2YWx1ZXMgaW50byBhblxuICAgaGV0ZXJvZ2VuZW91cyBsaXN0LiAqKVxuKCogUmV0dXJuIHRoZSBoZXRlcm9nZW5lb3VzIGxpc3Qgb2Ygc2Nhbm5lZCB2YWx1ZXMuICopXG5sZXQgcmVjIG1ha2Vfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZi5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+IChhLCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgc3RwKSB3aWR0aCBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAneycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ1snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgTm9uZSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG5cbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludCBjKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQzMiBjKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5fbmF0aXZlaW50IGMpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDY0IGMpXG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfRiB8IEZsb2F0X0NGKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9jYW1sX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cpKSxcbiAgICAgICAgICAgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfaCB8IEZsb2F0X0gpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2hleF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiBfIF8gaWIgPSBzY2FuX2Jvb2wgaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX2Jvb2xcbiAgfCBBbHBoYSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiVhXFxcIlwiXG4gIHwgVGhldGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIldFxcXCJcIlxuICB8IEN1c3RvbSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiU/XFxcIiAoY3VzdG9tIGNvbnZlcnRlcilcIlxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGJlZ2luIG1hdGNoIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpIC0+XG4gICAgICAgIGxldCB4ID0gcmVhZGVyIGliIGluXG4gICAgICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10X3Jlc3QgcmVhZGVyc19yZXN0KVxuICAgIHwgTmlsIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwic2NhbmY6IG1pc3NpbmcgcmVhZGVyXCJcbiAgICBlbmRcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgaWYgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgICBlbHNlIGJhZF9pbnB1dCBcImVuZCBvZiBpbnB1dCBub3QgZm91bmRcIlxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgc3RyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiBjaHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzIGZtdHR5XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKGZtdCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQsIGZtdCcgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10JyA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgKCogVE9ETzogZmluZCBhIHdheSB0byBhdm9pZCByZXBhcnNpbmcgdHdpY2UgKilcblxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0eXBlLWNoZWNrcyBiZWxvdyAqY2FuKiBmYWlsIGJlY2F1c2Ugb2YgdHlwZVxuICAgICAgICAgICBhbWJpZ3VpdHkgaW4gcHJlc2VuY2Ugb2YgaWdub3JlZC1yZWFkZXJzOiBcIiVfciVkXCIgYW5kIFwiJWQlX3JcIlxuICAgICAgICAgICBhcmUgdHlwZWQgaW4gdGhlIHNhbWUgd2F5LlxuXG4gICAgICAgICAgICMgU2NhbmYuc3NjYW5mIFwiXFxcIiVfciVkXFxcIjNcIiBcIiUoJWQlX3IlKVwiIGlnbm9yZVxuICAgICAgICAgICAgIChmdW4gZm10IG4gLT4gc3RyaW5nX29mX2Zvcm1hdCBmbXQsIG4pXG4gICAgICAgICAgIEV4Y2VwdGlvbjogQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2guXG5cbiAgICAgICAgICAgV2Ugc2hvdWxkIHByb3Blcmx5IGNhdGNoIHRoaXMgZXhjZXB0aW9uLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCBmbXR0eSksXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCcgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKEZvcm1hdCAoZm10LCBzKSxcbiAgICAgICAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycylcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKFNvbWUgc3RwKSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IE5vbmUgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIGxldCBjb3VudCA9IGdldF9jb3VudGVyIGliIGNvdW50ZXIgaW5cbiAgICBDb25zIChjb3VudCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCk7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICd7JztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ1snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG5cbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgIGJlZ2luIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10JyByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKF8sIGFyZ19yZXN0KSAtPiBhcmdfcmVzdFxuICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgIGVuZFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIE5pbFxuXG4oKiBDYXNlIGFuYWx5c2lzIG9uIHBhZGRpbmcgYW5kIHByZWNpc2lvbi4gKilcbigqIFJlamVjdCBmb3JtYXRzIGNvbnRhaW5pbmcgXCIlKlwiIG9yIFwiJS4qXCIuICopXG4oKiBQYXNzIHBhZGRpbmcgYW5kIHByZWNpc2lvbiB0byB0aGUgZ2VuZXJpYyBzY2FubmVyIGBzY2FuJy4gKilcbmFuZCBwYWRfcHJlY19zY2FuZiA6IHR5cGUgYSBjIGQgZSBmIHggeSB6IHQgLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+XG4gICAgICAoaW50IC0+IGludCAtPiBTY2FubmluZy5pbl9jaGFubmVsIC0+IHQpIC0+XG4gICAgICAoU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB6KSAtPlxuICAgICAgKHgsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gdG9rZW4gLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiB3IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoTGVmdCwgXyksIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJS1cXFwiXCJcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCBfKSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IEFyZ19wYWRkaW5nIF8sIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAoKiBEZWZpbmluZyBbc2NhbmZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW3NjYW5mXSAqKVxuXG50eXBlICdhIGtzY2FuZl9yZXN1bHQgPSBBcmdzIG9mICdhIHwgRXhjIG9mIGV4blxuXG5sZXQga3NjYW5mIGliIGVmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIHRyeSBBcmdzIChtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKSB3aXRoXG4gICAgICB8IChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlKSBhcyBleGMgLT4gRXhjIGV4Y1xuICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHdpdGhcbiAgICAgIHwgQXJncyBhcmdzIC0+IGFwcGx5IGYgYXJnc1xuICAgICAgfCBFeGMgZXhjIC0+IGVmIGliIGV4Y1xuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQga3NzY2FuZiBzIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGVmIGZtdFxubGV0IHNzY2FuZiBzIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG5cblxuKCogRGVwcmVjYXRlZCAqKVxubGV0IGtmc2NhbmYgaWMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIGVmIGZtdFxubGV0IGZzY2FuZiBpYyBmbXQgPSBrc2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBzY2FuZl9iYWRfaW5wdXQgZm10XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBPYmpcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAobWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBtYWdpYyB0YWdcblxuKCoqKiogU3BhcnNlIGFycmF5ICoqKiopXG5cbm1vZHVsZSBWYXJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSB2YXJzID0gaW50IFZhcnMudFxuXG5tb2R1bGUgTWV0aHMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIG1ldGhzID0gbGFiZWwgTWV0aHMudFxubW9kdWxlIExhYnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gbGFiZWwgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbGFicyA9IGJvb2wgTGFicy50XG5cbigqIFRoZSBjb21waWxlciBhc3N1bWVzIHRoYXQgdGhlIGZpcnN0IGZpZWxkIG9mIHRoaXMgc3RydWN0dXJlIGlzIFtzaXplXS4gKilcbnR5cGUgdGFibGUgPVxuIHsgbXV0YWJsZSBzaXplOiBpbnQ7XG4gICBtdXRhYmxlIG1ldGhvZHM6IGNsb3N1cmUgYXJyYXk7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbmFtZTogbWV0aHM7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbGFiZWw6IGxhYnM7XG4gICBtdXRhYmxlIHByZXZpb3VzX3N0YXRlczpcbiAgICAgKG1ldGhzICogbGFicyAqIChsYWJlbCAqIGl0ZW0pIGxpc3QgKiB2YXJzICpcbiAgICAgIGxhYmVsIGxpc3QgKiBzdHJpbmcgbGlzdCkgbGlzdDtcbiAgIG11dGFibGUgaGlkZGVuX21ldGhzOiAobGFiZWwgKiBpdGVtKSBsaXN0O1xuICAgbXV0YWJsZSB2YXJzOiB2YXJzO1xuICAgbXV0YWJsZSBpbml0aWFsaXplcnM6IChvYmogLT4gdW5pdCkgbGlzdCB9XG5cbmxldCBkdW1teV90YWJsZSA9XG4gIHsgbWV0aG9kcyA9IFt8IGR1bW15X2l0ZW0gfF07XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IDAgfVxuXG5sZXQgdGFibGVfY291bnQgPSByZWYgMFxuXG4oKiBkdW1teV9tZXQgc2hvdWxkIGJlIGEgcG9pbnRlciwgc28gdXNlIGFuIGF0b20gKilcbmxldCBkdW1teV9tZXQgOiBpdGVtID0gb2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIG1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gbWFnaWMgKGZpdF9zaXplIGxlbiAqIFN5cy53b3JkX3NpemUgLyA4IC0gMSk7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvIG1ldGhvZHMuKGkqMiszKSA8LSBtYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBtYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gbWFnaWMgMCB0aGVuIG5ld190YWJsZSBbfHxdIGVsc2VcbiAgKCogW3B1YmxpY19tZXRob2RzXSBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciBmb3IgYnl0ZWNvZGUgKilcbiAgbGV0IHRhZ3MgPSBBcnJheS5tYXAgcHVibGljX21ldGhvZF9sYWJlbCBwdWJsaWNfbWV0aG9kcyBpblxuICBsZXQgdGFibGUgPSBuZXdfdGFibGUgdGFncyBpblxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gaSBtZXQgLT5cbiAgICAgIGxldCBsYWIgPSBpKjIrMiBpblxuICAgICAgdGFibGUubWV0aG9kc19ieV9uYW1lICA8LSBNZXRocy5hZGQgbWV0IGxhYiB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYiB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwpXG4gICAgcHVibGljX21ldGhvZHM7XG4gIHRhYmxlXG5cbmxldCBpbml0X2NsYXNzIHRhYmxlID1cbiAgaW5zdF92YXJfY291bnQgOj0gIWluc3RfdmFyX2NvdW50ICsgdGFibGUuc2l6ZSAtIDE7XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBMaXN0LnJldiB0YWJsZS5pbml0aWFsaXplcnM7XG4gIHJlc2l6ZSB0YWJsZSAoMyArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgcmVwciBpbml0IHxdO1xuICAgICBtYWdpYyAoQXJyYXkubWFwIChnZXRfdmFyaWFibGUgY2xhKSAodG9fYXJyYXkgdmFscykgOiBpbnQgYXJyYXkpO1xuICAgICBBcnJheS5tYXBcbiAgICAgICAoZnVuIG5tIC0+IHJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgbWFnaWMgYXJyLighaSkgaW5cbiAgbWF0Y2ggbmV4dCgpIHdpdGhcbiAgICBHZXRDb25zdCAtPiBsZXQgeCA6IHQgPSBuZXh0KCkgaW4gZ2V0X2NvbnN0IHhcbiAgfCBHZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfdmFyIG5cbiAgfCBHZXRFbnYgICAtPiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfZW52IGUgblxuICB8IEdldE1ldGggIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF9tZXRoIG5cbiAgfCBTZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBzZXRfdmFyIG5cbiAgfCBBcHBDb25zdCAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBhcHBfY29uc3QgZiB4XG4gIHwgQXBwVmFyICAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF92YXIgZiBuXG4gIHwgQXBwRW52ICAgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluICBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2VudiBmIGUgblxuICB8IEFwcE1ldGggIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfbWV0aCBmIG5cbiAgfCBBcHBDb25zdENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgeSA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2NvbnN0IGYgeCB5XG4gIHwgQXBwQ29uc3RWYXIgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfdmFyIGYgeCBuXG4gIHwgQXBwQ29uc3RFbnYgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2VudiBmIHggZSBuXG4gIHwgQXBwQ29uc3RNZXRoIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X21ldGggZiB4IG5cbiAgfCBBcHBWYXJDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF92YXJfY29uc3QgZiBuIHhcbiAgfCBBcHBFbnZDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52X2NvbnN0IGYgZSBuIHhcbiAgfCBBcHBNZXRoQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfbWV0aF9jb25zdCBmIG4geFxuICB8IE1ldGhBcHBDb25zdCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbWV0aF9hcHBfY29uc3QgbiB4XG4gIHwgTWV0aEFwcFZhciAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfdmFyIG4gbVxuICB8IE1ldGhBcHBFbnYgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluXG4gICAgICBtZXRoX2FwcF9lbnYgbiBlIG1cbiAgfCBNZXRoQXBwTWV0aCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfbWV0aCBuIG1cbiAgfCBTZW5kQ29uc3QgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIHNlbmRfY29uc3QgbSB4IChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZFZhciAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfdmFyIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRFbnYgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBzZW5kX2VudiBtIGUgbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRNZXRoIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF9tZXRoIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IENsb3N1cmUgXyBhcyBjbG8gLT4gbWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdG9rZW4gPVxuICAgIEt3ZCBvZiBzdHJpbmdcbiAgfCBJZGVudCBvZiBzdHJpbmdcbiAgfCBJbnQgb2YgaW50XG4gIHwgRmxvYXQgb2YgZmxvYXRcbiAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gIHwgQ2hhciBvZiBjaGFyXG5cbigqIFRoZSBzdHJpbmcgYnVmZmVyaW5nIG1hY2hpbmVyeSAqKVxuXG5sZXQgaW5pdGlhbF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMzJcblxubGV0IGJ1ZmZlciA9IHJlZiBpbml0aWFsX2J1ZmZlclxubGV0IGJ1ZnBvcyA9IHJlZiAwXG5cbmxldCByZXNldF9idWZmZXIgKCkgPSBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IGJ1ZnBvcyA6PSAwXG5cbmxldCBzdG9yZSBjID1cbiAgaWYgIWJ1ZnBvcyA+PSBCeXRlcy5sZW5ndGggIWJ1ZmZlciB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAoMiAqICFidWZwb3MpIGluXG4gICAgQnl0ZXMuYmxpdCAhYnVmZmVyIDAgbmV3YnVmZmVyIDAgIWJ1ZnBvcztcbiAgICBidWZmZXIgOj0gbmV3YnVmZmVyXG4gIGVuZDtcbiAgQnl0ZXMuc2V0ICFidWZmZXIgIWJ1ZnBvcyBjO1xuICBpbmNyIGJ1ZnBvc1xuXG5sZXQgZ2V0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyAhYnVmZmVyIDAgIWJ1ZnBvcyBpbiBidWZmZXIgOj0gaW5pdGlhbF9idWZmZXI7IHNcblxuKCogVGhlIGxleGVyICopXG5cbmxldCBtYWtlX2xleGVyIGtleXdvcmRzID1cbiAgbGV0IGt3ZF90YWJsZSA9IEhhc2h0YmwuY3JlYXRlIDE3IGluXG4gIExpc3QuaXRlciAoZnVuIHMgLT4gSGFzaHRibC5hZGQga3dkX3RhYmxlIHMgKEt3ZCBzKSkga2V5d29yZHM7XG4gIGxldCBpZGVudF9vcl9rZXl3b3JkIGlkID1cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBpZCB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gSWRlbnQgaWRcbiAgYW5kIGtleXdvcmRfb3JfZXJyb3IgYyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubWFrZSAxIGMgaW5cbiAgICB0cnkgSGFzaHRibC5maW5kIGt3ZF90YWJsZSBzIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RyZWFtLkVycm9yIChcIklsbGVnYWwgY2hhcmFjdGVyIFwiIF4gcykpXG4gIGluXG4gIGxldCByZWMgbmV4dF90b2tlbiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnICcgfCAnXFwwMTAnIHwgJ1xcMDEzJyB8ICdcXDAwOScgfCAnXFwwMjYnIHwgJ1xcMDEyJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBuZXh0X3Rva2VuIHN0cm1fX1xuICAgIHwgU29tZSAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdfJyB8ICdcXDE5MicuLidcXDI1NScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8ICc+JyB8XG4gICAgICAgICAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJ1xcJycgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGNoYXIgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICdcXCcnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoQ2hhciBjKVxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgJ1xcXCInIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBTb21lIChTdHJpbmcgKHN0cmluZyBzKSlcbiAgICB8IFNvbWUgJy0nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbmVnX251bWJlciBzdHJtX19cbiAgICB8IFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgYylcbiAgICB8IF8gLT4gTm9uZVxuICBhbmQgaWRlbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJ0EnLi4nWicgfCAnYScuLid6JyB8ICdcXDE5MicuLidcXDI1NScgfCAnMCcuLic5JyB8ICdfJyB8ICdcXCcnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIGlkZW50MiAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLScgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfFxuICAgICAgICAgJz4nIHwgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBuZWdfbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBfIC0+IGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBpZGVudDIgc1xuICBhbmQgbnVtYmVyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IFNvbWUgJy4nIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJy4nOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEludCAoaW50X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZGVjaW1hbF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBleHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcrJyB8ICctJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gZW5kX2V4cG9uZW50X3BhcnQgc3RybV9fXG4gIGFuZCBlbmRfZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGVuZF9leHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgc3RyaW5nIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXCInIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgZ2V0X3N0cmluZyAoKVxuICAgIHwgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGNoYXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcXCcgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIGVzY2FwZSAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICduJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXG4nXG4gICAgfCBTb21lICdyJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHInXG4gICAgfCBTb21lICd0JyAtPiBTdHJlYW0uanVuayBzdHJtX187ICdcXHQnXG4gICAgfCBTb21lICgnMCcuLic5JyBhcyBjMSkgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMyKSAtPlxuICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzMpIC0+XG4gICAgICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICAgICAgICAgIENoYXIuY2hyXG4gICAgICAgICAgICAgICAgICAoKENoYXIuY29kZSBjMSAtIDQ4KSAqIDEwMCArIChDaGFyLmNvZGUgYzIgLSA0OCkgKiAxMCArXG4gICAgICAgICAgICAgICAgICAgICAoQ2hhci5jb2RlIGMzIC0gNDgpKVxuICAgICAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNcbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IG5leHRfdG9rZW4gc1xuICAgIHwgXyAtPiBTb21lIChrZXl3b3JkX29yX2Vycm9yICcoJylcbiAgYW5kIGNvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9uZXN0ZWRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfbmVzdGVkX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBjb21tZW50IHM7IGNvbW1lbnQgc1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX2VuZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyknIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgKClcbiAgICB8IFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfZW5kX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBpblxuICBmdW4gaW5wdXQgLT4gU3RyZWFtLmZyb20gKGZ1biBfY291bnQgLT4gbmV4dF90b2tlbiBpbnB1dClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuICBpbmNsdWRlIEhhc2h0YmwuU2VlZGVkU1xuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEhhc2h0YmwuU1xuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIEdlbkhhc2hUYWJsZSA9IHN0cnVjdFxuXG4gIHR5cGUgZXF1YWwgPVxuICB8IEVUcnVlIHwgRUZhbHNlXG4gIHwgRURlYWQgKCoqIHRoZSBnYXJiYWdlIGNvbGxlY3RvciByZWNsYWltZWQgdGhlIGRhdGEgKilcblxuICBtb2R1bGUgTWFrZVNlZWRlZChIOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlICdhIGNvbnRhaW5lclxuICAgIHZhbCBjcmVhdGU6IHQgLT4gJ2EgLT4gJ2EgY29udGFpbmVyXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgZ2V0X2tleTogJ2EgY29udGFpbmVyIC0+IHQgb3B0aW9uXG4gICAgdmFsIHNldF9rZXlfZGF0YTogJ2EgY29udGFpbmVyIC0+IHQgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBjaGVja19rZXk6ICdhIGNvbnRhaW5lciAtPiBib29sXG4gIGVuZCkgOiBTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnRcbiAgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgICAgIG11dGFibGUgZGF0YTogJ2EgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgICAgIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICAgICAgfVxuXG4gICAgYW5kICdhIGJ1Y2tldGxpc3QgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbnMgb2YgaW50ICgqIGhhc2ggb2YgdGhlIGtleSAqKSAqICdhIEguY29udGFpbmVyICogJ2EgYnVja2V0bGlzdFxuXG4gICAgKCoqIHRoZSBoYXNoIG9mIHRoZSBrZXkgaXMga2VwdCBpbiBvcmRlciB0byB0ZXN0IHRoZSBlcXVhbGl0eSBvZiB0aGUgaGFzaFxuICAgICAgYmVmb3JlIHRoZSBrZXkuIFNhbWUgcmVhc29uIGFzIGZvciBXZWFrLk1ha2UgKilcblxuICAgIHR5cGUga2V5ID0gSC50XG5cbiAgICBsZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgICAgIGlmIHggPj0gbiB0aGVuIHhcbiAgICAgIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgICAgIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxuICAgIGxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbiAgICBsZXQgY3JlYXRlID8ocmFuZG9tID0gKEhhc2h0YmwuaXNfcmFuZG9taXplZCAoKSkpIGluaXRpYWxfc2l6ZSA9XG4gICAgICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gICAgICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICAgICAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG4gICAgbGV0IGNsZWFyIGggPVxuICAgICAgaC5zaXplIDwtIDA7XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgZG9uZVxuXG4gICAgbGV0IHJlc2V0IGggPVxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGlmIGxlbiA9IGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICAgICAgY2xlYXIgaFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBoLnNpemUgPC0gMDtcbiAgICAgICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgaC5pbml0aWFsX3NpemUgRW1wdHlcbiAgICAgIGVuZFxuXG4gICAgbGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5jb3B5IGguZGF0YSB9XG5cbiAgICBsZXQga2V5X2luZGV4IGggaGtleSA9XG4gICAgICBoa2V5IGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGNsZWFuIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBub3QgKEguY2hlY2tfa2V5IGMpIC0+XG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgIHwgQ29ucyhoa2V5LCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgQ29ucyhoa2V5LCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgICgqKiByZXNpemUgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdG8gZG8gdGhlIGFjdHVhbCBjbGVhbmluZyBvZiBkZWFkIGtleXNcbiAgICAgICAgKHJlbW92ZSBkb2VzIGl0IGp1c3QgYmVjYXVzZSBpdCBjb3VsZCkuXG5cbiAgICAgICAgVGhlIGdvYWwgaXMgdG86XG5cbiAgICAgICAgLSBub3QgcmVzaXplIGluZmluaXRlbHkgd2hlbiB0aGUgYWN0dWFsIG51bWJlciBvZiBhbGl2ZSBrZXlzIGlzXG4gICAgICAgIGJvdW5kZWQgYnV0IGtleXMgYXJlIGNvbnRpbnVvdXNseSBhZGRlZC4gVGhhdCB3b3VsZCBoYXBwZW4gaWZcbiAgICAgICAgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmVzaXplLlxuICAgICAgICAtIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZWFjaCBhZGRpdGlvbiwgdGhhdCB3b3VsZCBoYXBwZW4gaWYgdGhpc1xuICAgICAgICBmdW5jdGlvbiBkb24ndCByZXNpemUgZXZlbiB3aGVuIG9ubHkgb25lIGtleSBpcyBkZWFkLlxuXG4gICAgICAgIFNvIHRoZSBhbGdvcml0aG06XG4gICAgICAgIC0gY2xlYW4gdGhlIGtleXMgYmVmb3JlIHJlc2l6aW5nXG4gICAgICAgIC0gaWYgdGhlIG51bWJlciBvZiByZW1haW5pbmcga2V5cyBpcyBsZXNzIHRoYW4gaGFsZiB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgYXJyYXksIGRvbid0IHJlc2l6ZS5cbiAgICAgICAgLSBpZiBpdCBpcyBtb3JlLCByZXNpemUuXG5cbiAgICAgICAgVGhlIHNlY29uZCBwcm9ibGVtIHJlbWFpbnMgaWYgdGhlIHRhYmxlIHJlYWNoZXMgeyFTeXMubWF4X2FycmF5X2xlbmd0aH0uXG5cbiAgICAqKVxuICAgIGxldCByZXNpemUgaCA9XG4gICAgICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICAgICAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gICAgICBjbGVhbiBoO1xuICAgICAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCAmJiBoLnNpemUgPj0gb3NpemUgbHNyIDEgdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgKCogc28gdGhhdCBrZXlfaW5kZXggc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgICAgICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgICAgICB8IENvbnMoaGtleSwgZGF0YSwgcmVzdCkgLT5cbiAgICAgICAgICAgICAgaW5zZXJ0X2J1Y2tldCByZXN0OyAoKiBwcmVzZXJ2ZSBvcmlnaW5hbCBvcmRlciBvZiBlbGVtZW50cyAqKVxuICAgICAgICAgICAgICBsZXQgbmlkeCA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgICAgICAgICAgbmRhdGEuKG5pZHgpIDwtIENvbnMoaGtleSwgZGF0YSwgbmRhdGEuKG5pZHgpKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gb3NpemUgLSAxIGRvXG4gICAgICAgICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgICAgICAgZG9uZVxuICAgICAgZW5kXG5cbiAgICBsZXQgYWRkIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFpdGVyfSwgeyFmb2xkfSwgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWMga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IEguc2V0X2tleV9kYXRhIGMga2V5IGluZm9cbiAgICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhfLF8sbmV4dCkgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICB0cnlcbiAgICAgICAgcmVwbGFjZV9idWNrZXQgbFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29ucyhoa2V5LCBjb250YWluZXIsIGwpO1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgaXRlciBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZFxuICAgICAgICAgICAgZW5kOyBkb19idWNrZXQgcmVzdCBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgZm9sZCBmIGggaW5pdCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgICAgICBtYXRjaCBiIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICAgYWNjdVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkIGFjY3VcbiAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3QgYWNjdSAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgICBkb25lO1xuICAgICAgIWFjY3VcblxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBmIGsgZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIG5ld19kIC0+XG4gICAgICAgICAgICAgICAgICAgIEguc2V0X2tleV9kYXRhIGMgayBuZXdfZDtcbiAgICAgICAgICAgICAgICAgICAgQ29ucyhoaywgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHRvX3NlcSB0YmwgPVxuICAgICAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAgICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gICAgICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAgICAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgICAgIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgICAgIHwgQ29ucyAoXywgYywgbmV4dCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCBpIG5leHQgKClcbiAgICAgICAgICAgICAgfCBTb21lIGtleSwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBhdXggMCBFbXB0eVxuXG4gICAgbGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKGs6J2spIDogdW5pdCA9IE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAodDI6KCdrLCdkKSB0KTogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCA9IEguaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5ID0gZ2V0X2tleVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSA9IGNoZWNrX2tleVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleTFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGdldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDEpXG4gIGxldCBnZXRfa2V5Ml9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuXG4gIGxldCBibGl0X2tleTEgKHQxOignazEsXyxfKSB0KSAodDI6KCdrMSxfLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG4gIGxldCBibGl0X2tleTIgKHQxOihfLCdrMixfKSB0KSAodDI6KF8sJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDEgdDIgMSAxXG4gIGxldCBibGl0X2tleTEyICh0MTooJ2sxLCdrMixfKSB0KSAodDI6KCdrMSwnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDJcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sXywnZCkgdCkgKHQyOihfLF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCBzZWVkIChrMSxrMikgPVxuICAgICAgICBIMS5oYXNoIHNlZWQgazEgKyBIMi5oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPiBTb21lIChrMScsIGsyJylcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgxLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMi50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDIuZXF1YWxcbiAgICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCBuXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpIChvMTppbnQpICh0MjooJ2ssJ2QpIHQpIChvMjppbnQpIChsOmludCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgbzEgdDIgbzIgbFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCBrID1cbiAgICAgICAgbGV0IGggPSByZWYgMCBpblxuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgaCA6PSBILmhhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBsZXQgbGVuID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIFNvbWUgW3x8XVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIDAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGswIC0+XG4gICAgICAgICAgICAgIGxldCByZWMgZmlsbCBhIGkgPVxuICAgICAgICAgICAgICAgIGlmIGkgPCAxIHRoZW4gU29tZSBhXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGEuKGkpIDwtIGtpO1xuICAgICAgICAgICAgICAgICAgICAgIGZpbGwgYSAoaS0xKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIGswIGluXG4gICAgICAgICAgICAgIGZpbGwgYSAobGVuLTEpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID1cbiAgICAgICAgbGV0IHJlYyBjaGVjayBjIGkgPVxuICAgICAgICAgIGkgPCAwIHx8IChjaGVja19rZXkgYyBpICYmIGNoZWNrIGMgKGktMSkpIGluXG4gICAgICAgIGNoZWNrIGMgKGxlbmd0aCBjIC0gMSlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCBhcnJheSkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZiAnXFxcIicgfHwgU3RyaW5nLmNvbnRhaW5zIGYgJyUnIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFwiXFxcIlwiIF4gZiBeIFwiXFxcIlwiXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmIGluXG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX3N1ZmZpeFwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgblxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmcgPSBsYXp5KFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpKSBsYW5kIDB4RkZGRkZGIGluXG4gIGNvbmNhdCB0ZW1wX2RpciAoUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4KVxuXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPSByZWYgdGVtcF9kaXJfbmFtZVxuXG5sZXQgc2V0X3RlbXBfZGlyX25hbWUgcyA9IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA6PSBzXG5sZXQgZ2V0X3RlbXBfZGlyX25hbWUgKCkgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICAgICAgICAgICAgICAgICA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID1cbiAgKCogV2F0Y2ggb3V0IGZvciBvdmVyZmxvdyBpbiBjb21wdXRpbmcgcmVeMiArIGltXjIgKilcbiAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gIGlmIHIgPSAwLjAgdGhlbiBpXG4gIGVsc2UgaWYgaSA9IDAuMCB0aGVuIHJcbiAgZWxzZSBpZiByID49IGkgdGhlblxuICAgIGxldCBxID0gaSAvLiByIGluIHIgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuICBlbHNlXG4gICAgbGV0IHEgPSByIC8uIGkgaW4gaSAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIG1hdGNoIEFycmF5Lmxlbmd0aCBkaW1zLCBsYXlvdXQgd2l0aFxuICAgIHwgMCwgXyAtPiBhcnJcbiAgICB8IGRsZW4sIENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IGRsZW4sIEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyclxuXG4gIGV4dGVybmFsIG51bV9kaW1zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcImNhbWxfYmFfbnVtX2RpbXNcIlxuICBleHRlcm5hbCBudGhfZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2JhX2RpbVwiXG4gIGxldCBkaW1zIGEgPVxuICAgIGxldCBuID0gbnVtX2RpbXMgYSBpblxuICAgIGxldCBkID0gQXJyYXkubWFrZSBuIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvIGQuKGkpIDwtIG50aF9kaW0gYSBpIGRvbmU7XG4gICAgZFxuXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoQXJyYXkuZm9sZF9sZWZ0ICggKiApIDEgKGRpbXMgYXJyKSlcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc2xpY2VfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgc2xpY2VfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5lbmRcblxubW9kdWxlIEFycmF5MCA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8fF1cbiAgbGV0IGdldCBhcnIgPSBHZW5hcnJheS5nZXQgYXJyIFt8fF1cbiAgbGV0IHNldCBhcnIgPSBHZW5hcnJheS5zZXQgYXJyIFt8fF1cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPSBraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKVxuXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5cbiAgbGV0IG9mX3ZhbHVlIGtpbmQgbGF5b3V0IHYgPVxuICAgIGxldCBhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGluXG4gICAgc2V0IGEgdjtcbiAgICBhXG4gIGxldCBpbml0ID0gb2ZfdmFsdWVcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0gYXJyKVxuXG4gIGV4dGVybmFsIHN1YjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCAnYykgdCA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2UgKHR5cGUgdCkgKGEgOiAoXywgXywgdCkgR2VuYXJyYXkudCkgbiA9XG4gICAgbWF0Y2ggbGF5b3V0IGEgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XSA6IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF06IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAxIHRvIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbSBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IChBcnJheS5sZW5ndGggZGF0YSkgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkYXRhIC0gMSBkbyB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSBkYXRhLihpKSBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTJ8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8yXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzJcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdCBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0IGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgcm93LihqKVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkzID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yOyBkaW0zfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3NldF8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfM1wiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwgZGltMzogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fM1wiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycikgKiAoZGltMyBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9sZWZ0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICBmb3IgayA9IDAgdG8gcHJlZCBkaW0zIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBrID0gMSB0byBkaW0zIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBkaW0zID0gaWYgZGltMiA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIGxldCBjb2wgPSByb3cuKGopIGluXG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjb2wgPD4gZGltMyB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgICBmb3IgayA9IDAgdG8gZGltMyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgKGsgKyBvZnMpIGNvbC4oaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTA6ICgnYSwgJ2IsICdjKSBBcnJheTAudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTE6ICgnYSwgJ2IsICdjKSBBcnJheTEudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTI6ICgnYSwgJ2IsICdjKSBBcnJheTIudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTM6ICgnYSwgJ2IsICdjKSBBcnJheTMudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5sZXQgYXJyYXkwX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMCB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MF9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkxX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMSB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MV9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkyX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMiB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5Ml9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkzX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMyB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheVwiXG5cbmV4dGVybmFsIHJlc2hhcGU6XG4gICAoJ2EsICdiLCAnYykgR2VuYXJyYXkudCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCJjYW1sX2JhX3Jlc2hhcGVcIlxubGV0IHJlc2hhcGVfMCBhID0gcmVzaGFwZSBhIFt8fF1cbmxldCByZXNoYXBlXzEgYSBkaW0xID0gcmVzaGFwZSBhIFt8ZGltMXxdXG5sZXQgcmVzaGFwZV8yIGEgZGltMSBkaW0yID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yfF1cbmxldCByZXNoYXBlXzMgYSBkaW0xIGRpbTIgZGltMyA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMjtkaW0zfF1cblxuKCogRm9yY2UgY2FtbF9iYV9nZXRfezEsMiwzLE59IHRvIGJlIGxpbmtlZCBpbiwgc2luY2Ugd2UgZG9uJ3QgcmVmZXJcbiAgIHRvIHRob3NlIHByaW1pdGl2ZXMgZGlyZWN0bHkgaW4gdGhpcyBmaWxlICopXG5cbmxldCBfID1cbiAgbGV0IF8gPSBHZW5hcnJheS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTEuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkyLmdldCBpblxuICBsZXQgXyA9IEFycmF5My5nZXQgaW5cbiAgKClcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cbmV4dGVybmFsIGdldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMVwiXG5leHRlcm5hbCBnZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzJcIlxuZXh0ZXJuYWwgZ2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8zXCJcbmV4dGVybmFsIHNldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCBzZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzb29fcnVudGltZS5SdW50aW1lX3ZlcnNpb24gKilcbm1vZHVsZSBSdW50aW1lX3ZlcnNpb24gPSBKc29vX3J1bnRpbWVfX1J1bnRpbWVfdmVyc2lvblxuXG5tb2R1bGUgSnNvb19ydW50aW1lX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlIHRcblxuICB0eXBlICdhIGpzX2FycmF5ID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgbWV0aF9jYWxsYmFjayA9IHRcblxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19ieXRlc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG4gIGV4dGVybmFsIGJvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuICBleHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG4gIGV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19hcnJheSA6IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuICBleHRlcm5hbCBpbnQzMl9vZl9udW1iZXIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIG5hdGl2ZWludF9vZl9udW1iZXIgOiB0IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIHR5cGVvZiA6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4gIGV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGV4dGVybmFsIGRlbGV0ZSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgZnVuX2NhbGwgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbmV3X29iaiA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiB0IC0+IHQganNfYXJyYXkgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICBleHRlcm5hbCBlcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKHQganNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgdCBqc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICgnYiAtPiB0IGpzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIHQganNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcbmVuZFxuXG5tb2R1bGUgU3lzID0gc3RydWN0XG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAnYVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbiAgZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDogb3V0X2NoYW5uZWwgLT4gKGpzX3N0cmluZzpKcy50IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxuICBleHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOiBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuICBleHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbiAgbW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICAgIGV4dGVybmFsIHVzZV9qc19zdHJpbmcgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGVmZmVjdHMgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc19lZmZlY3RzXCJcbiAgZW5kXG5cbiAgbGV0IHZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uc1xuXG4gIGxldCBnaXRfdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5naXRfdmVyc2lvblxuZW5kXG5cbm1vZHVsZSBFcnJvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcmFpc2VfIDogdCAtPiAnYVxuXG4gIHZhbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuXG4gICgqKiBBdHRhY2ggYSBKYXZhc1NjcmlwdCBlcnJvciB0byBhbiBPQ2FtbCBleGNlcHRpb24uICBpZiBbZm9yY2UgPSBmYWxzZV0gYW5kIGFcbiAgICBKYXZhc1NjcmlwdCBlcnJvciBpcyBhbHJlYWR5IGF0dGFjaGVkLCBpdCB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvXG4gICAgc3RvcmUgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzLlxuXG4gICAgQXR0YWNoaW5nIEphdmFzU2NyaXB0IGVycm9ycyB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5IHdoZW4gY29tcGlsaW5nIHdpdGhcbiAgICBbLS1lbmFibGUgd2l0aC1qcy1lcnJvcl0uICopXG5cbiAgdmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvblxuICAoKiogRXh0cmFjdCBhIEphdmFTY3JpcHQgZXJyb3IgYXR0YWNoZWQgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLCBpZiBhbnkuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgICAgaW5zcGVjdCBhbiBldmVudHVhbCBzdGFjayBzdHJhY2UsIGVzcGVjaWFsbHkgd2hlbiBzb3VyY2VtYXAgaXMgZW5hYmxlZC4gKilcblxuICBleGNlcHRpb24gRXhuIG9mIHRcbiAgKCoqIFRoZSBbRXJyb3JdIGV4Y2VwdGlvbiB3cmFwIGphdmFzY3JpcHQgZXhjZXB0aW9ucyB3aGVuIGNhdWdodCBieSBPQ2FtbCBjb2RlLlxuICAgICAgSW4gY2FzZSB0aGUgamF2YXNjcmlwdCBleGNlcHRpb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGphdmFzY3JpcHQgW0Vycm9yXSxcbiAgICAgIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgd3JhcHBlZCBpbnRvIGEgW0ZhaWx1cmVdIGV4Y2VwdGlvbi5cbiAgKilcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRcblxuICBleGNlcHRpb24gRXhuIG9mIHRcblxuICBsZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcImpzRXJyb3JcIiAoRXhuIChPYmoubWFnaWMgW3x8XSkpXG5cbiAgbGV0IHJhaXNlXyA6IHQgLT4gJ2EgPSBKcy5qc19leHByIFwiKGZ1bmN0aW9uIChleG4pIHsgdGhyb3cgZXhuIH0pXCJcblxuICBleHRlcm5hbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb24gPSBcImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblwiXG5cbiAgZXh0ZXJuYWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4biA9IFwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2VcIlxuZW5kXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyLTYwXCJdXG5cbm1vZHVsZSBGb3JfY29tcGF0aWJpbGl0eV9vbmx5ID0gc3RydWN0XG4gICgqIEFkZCBwcmltaXRpdmVzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIEV4aXN0aW5nIHVzZXJzIG1pZ2h0XG4gICAgIGRlcGVuZCBvbiBpdCAoZS5nLiBnZW5fanNfYXBpKSwgd2UgZG9udCB3YW50IHRoZSBvY2FtbCBjb21waWxlclxuICAgICB0byBjb21wbGFpbiBhYm91dCB0aGVzZXMgbWlzc2luZyBwcmltaXRpdmVzLiAqKVxuXG4gIGV4dGVybmFsIGNhbWxfanNfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gSnMudCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19ieXRlX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X29mX2pzX2FycmF5IDogJ2EgSnMuanNfYXJyYXkgLT4gJ2EgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3RfdG9fanNfYXJyYXkgOiAnYSBsaXN0IC0+ICdhIEpzLmpzX2FycmF5ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG5lbmRcblxubW9kdWxlIFR5cGVkX2FycmF5ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdHlwZWRBcnJheSA9IEpzLnRcblxuICB0eXBlIGFycmF5QnVmZmVyID0gSnMudFxuXG4gIHR5cGUgdWludDhBcnJheSA9IEpzLnRcblxuICBleHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gICAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheVxuICAgID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICAgKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICAgID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gICAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbiAgZW5kXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZV9pbnQ2NF9sb19taV9oaSA6IGludCAtPiBpbnQgLT4gaW50IC0+IEludDY0LnRcbiAgICA9IFwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcIlxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5DU1MgKilcbm1vZHVsZSBDU1MgPSBKc19vZl9vY2FtbF9fQ1NTXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbSAqKVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sX19Eb21cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2V2ZW50cyAqKVxubW9kdWxlIERvbV9ldmVudHMgPSBKc19vZl9vY2FtbF9fRG9tX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21faHRtbCAqKVxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWxfX0RvbV9odG1sXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9zdmcgKilcbm1vZHVsZSBEb21fc3ZnID0gSnNfb2Zfb2NhbWxfX0RvbV9zdmdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRXZlbnRTb3VyY2UgKilcbm1vZHVsZSBFdmVudFNvdXJjZSA9IEpzX29mX29jYW1sX19FdmVudFNvdXJjZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaWxlICopXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sX19GaWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpcmVidWcgKilcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWxfX0ZpcmVidWdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRm9ybSAqKVxubW9kdWxlIEZvcm0gPSBKc19vZl9vY2FtbF9fRm9ybVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5HZW9sb2NhdGlvbiAqKVxubW9kdWxlIEdlb2xvY2F0aW9uID0gSnNfb2Zfb2NhbWxfX0dlb2xvY2F0aW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBJbnRlcnNlY3Rpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRsICopXG5tb2R1bGUgSW50bCA9IEpzX29mX29jYW1sX19JbnRsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzICopXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbF9fSnNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnNvbiAqKVxubW9kdWxlIEpzb24gPSBKc19vZl9vY2FtbF9fSnNvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc3RhYmxlICopXG5tb2R1bGUgSnN0YWJsZSA9IEpzX29mX29jYW1sX19Kc3RhYmxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkxpYl92ZXJzaW9uICopXG5tb2R1bGUgTGliX3ZlcnNpb24gPSBKc19vZl9vY2FtbF9fTGliX3ZlcnNpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTXV0YXRpb25PYnNlcnZlciAqKVxubW9kdWxlIE11dGF0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fTXV0YXRpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5QZXJmb3JtYW5jZU9ic2VydmVyICopXG5tb2R1bGUgUGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzX29mX29jYW1sX19QZXJmb3JtYW5jZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlZ2V4cCAqKVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sX19SZWdleHBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVzaXplT2JzZXJ2ZXIgKilcbm1vZHVsZSBSZXNpemVPYnNlcnZlciA9IEpzX29mX29jYW1sX19SZXNpemVPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5TeXNfanMgKilcbm1vZHVsZSBTeXNfanMgPSBKc19vZl9vY2FtbF9fU3lzX2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlR5cGVkX2FycmF5ICopXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbF9fVHlwZWRfYXJyYXlcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVXJsICopXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWxfX1VybFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJHTCAqKVxubW9kdWxlIFdlYkdMID0gSnNfb2Zfb2NhbWxfX1dlYkdMXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYlNvY2tldHMgKilcbm1vZHVsZSBXZWJTb2NrZXRzID0gSnNfb2Zfb2NhbWxfX1dlYlNvY2tldHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV29ya2VyICopXG5tb2R1bGUgV29ya2VyID0gSnNfb2Zfb2NhbWxfX1dvcmtlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIFhtbEh0dHBSZXF1ZXN0ID0gSnNfb2Zfb2NhbWxfX1htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgbG9jYWwgbW9kdWxlIFtKc10gaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHBweF9qcyBleHRlbnNpb24gd29yayB3aXRoaW4gdGhhdCBmaWxlLiAqKVxubW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgKydhIHRcblxuICB0eXBlICgtJ2EsICsnYikgbWV0aF9jYWxsYmFja1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHRvcFxuXG4gICAgdHlwZSBhbnkgPSB0b3AgdFxuXG4gICAgdHlwZSBhbnlfanNfYXJyYXkgPSBhbnlcblxuICAgIGV4dGVybmFsIGluamVjdCA6ICdhIC0+IGFueSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGNvZXJjZSA6IF8gdCAtPiBfIHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBnZXQgOiAnYSAtPiAnYiAtPiAnYyA9IFwiY2FtbF9qc19nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0IDogJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gICAgZXh0ZXJuYWwgZGVsZXRlIDogJ2EgLT4gJ2IgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbCA6ICdhIC0+ICdiIC0+IGFueSBhcnJheSAtPiAnYyA9IFwiY2FtbF9qc19jYWxsXCJcblxuICAgIGV4dGVybmFsIGZ1bl9jYWxsIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbCA6ICdhIC0+IHN0cmluZyAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICAgIGV4dGVybmFsIG5ld19vYmogOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbmV3XCJcblxuICAgIGV4dGVybmFsIG5ld19vYmpfYXJyIDogJ2EgLT4gYW55X2pzX2FycmF5IC0+ICdiID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICAgIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiBhbnkpIGFycmF5IC0+ICdhID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICAgIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gICAgbGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgIChhbnlfanNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgYW55X2pzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKCdiIC0+IGFueV9qc19hcnJheSAtPiAnYSkgLT4gKCdiLCBhbnlfanNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgKCogREVQUkVDQVRFRCAqKVxuICAgIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2Egb3B0ID0gJ2FcblxuICB0eXBlICdhIG9wdGRlZiA9ICdhXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBsZXQgbnVsbCA6ICdhIG9wdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcblxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2Egb3B0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCB1bmRlZmluZWQgOiAnYSBvcHRkZWYgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSBvcHRkZWYgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIHR5cGUgT1BUID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZW1wdHkgOiAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgdmFsIG1hcCA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAgIHZhbCB0ZXN0IDogJ2EgdCAtPiBib29sXG5cbiAgICB2YWwgaXRlciA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBjYXNlIDogJ2EgdCAtPiAodW5pdCAtPiAnYikgLT4gKCdhIC0+ICdiKSAtPiAnYlxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gKHVuaXQgLT4gJ2EpIC0+ICdhXG5cbiAgICB2YWwgb3B0aW9uIDogJ2Egb3B0aW9uIC0+ICdhIHRcblxuICAgIHZhbCB0b19vcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvblxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuICBlbmRcblxuICBtb2R1bGUgT3B0IDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0XG5cbiAgICBsZXQgZW1wdHkgPSBudWxsXG5cbiAgICBsZXQgcmV0dXJuID0gc29tZVxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKGVxdWFscyB4IG51bGwpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKGVxdWFscyB4IG51bGwpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGRlZiA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZlxuXG4gICAgbGV0IGVtcHR5ID0gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmV0dXJuID0gZGVmXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgbGV0IGNvZXJjZSB4IGYgZyA9IE9wdC5nZXQgKGYgeCkgKGZ1biAoKSAtPiBnIHgpXG5cbiAgbGV0IGNvZXJjZV9vcHQgeCBmIGcgPSBPcHQuZ2V0IChPcHQuYmluZCB4IGYpIChmdW4gKCkgLT4gZyB4KVxuXG4gICgqKioqKVxuXG4gIHR5cGUgKydhIG1ldGhcblxuICB0eXBlICsnYSBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcmVhZG9ubHlfcHJvcCA9IDwgZ2V0IDogJ2EgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egd3JpdGVvbmx5X3Byb3AgPSA8IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcHJvcCA9IDwgZ2V0IDogJ2EgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIG9wdGRlZl9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICsnYSBjb25zdHJcblxuICAoKioqKilcblxuICB0eXBlICdhIGNhbGxiYWNrID0gKHVuaXQsICdhKSBtZXRoX2NhbGxiYWNrXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5cbiAgKCoqKiopXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAoKioqKilcblxuICBsZXQgX3RydWUgPSBVbnNhZmUucHVyZV9qc19leHByIFwidHJ1ZVwiXG5cbiAgbGV0IF9mYWxzZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJmYWxzZVwiXG5cbiAgdHlwZSBtYXRjaF9yZXN1bHRfaGFuZGxlXG5cbiAgdHlwZSBzdHJpbmdfYXJyYXlcblxuICB0eXBlIG51bWJlcl90ID0gZmxvYXRcblxuICBjbGFzcyB0eXBlIG51bWJlciA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZ19yYWRpeCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9GaXhlZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsX2RpZ2l0cyA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9QcmVjaXNpb24gOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBlbmRcblxuICBhbmQganNfc3RyaW5nID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHZhbHVlT2YgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckF0IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQ29kZUF0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICAgICgqIFRoaXMgbWF5IHJldHVybiBOYU4uLi4gKilcbiAgICBtZXRob2QgY29uY2F0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8zIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF80IDpcbiAgICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxvY2FsZUNvbXBhcmUgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICBtZXRob2QgX21hdGNoIDogcmVnRXhwIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZV9mb3JtIDogbm9ybWFsaXphdGlvbiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlIDogcmVnRXhwIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2Vfc3RyaW5nIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNlYXJjaCA6IHJlZ0V4cCB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0IDoganNfc3RyaW5nIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X2xpbWl0ZWQgOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cCA6IHJlZ0V4cCB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHBMaW1pdGVkIDogcmVnRXhwIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmcgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmdfdG9FbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRyaW0gOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgYW5kIHJlZ0V4cCA9IG9iamVjdFxuICAgIG1ldGhvZCBleGVjIDoganNfc3RyaW5nIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2QgdGVzdCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc291cmNlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGdsb2JhbCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlQ2FzZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbXVsdGlsaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBsYXN0SW5kZXggOiBpbnQgcHJvcFxuICBlbmRcblxuICBhbmQgbm9ybWFsaXphdGlvbiA9IGpzX3N0cmluZ1xuXG4gICgqIHN0cmluZyBpcyB1c2VkIGJ5IHBweF9qcywgaXQgbmVlZHMgdG8gY29tZSBiZWZvcmUgYW55IHVzZSBvZiB0aGVcbiAgICAgbmV3IHN5bnRheCBpbiB0aGlzIGZpbGUgKilcbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgbGV0IG5mYyA9IHN0cmluZyBcIk5GQ1wiXG5cbiAgbGV0IG5mZCA9IHN0cmluZyBcIk5GRFwiXG5cbiAgbGV0IG5ma2MgPSBzdHJpbmcgXCJORktDXCJcblxuICBsZXQgbmZrZCA9IHN0cmluZyBcIk5GS0RcIlxuZW5kXG5cbmluY2x1ZGUgSnNcblxuY2xhc3MgdHlwZSBzdHJpbmdfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBmcm9tQ2hhckNvZGUgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBzdHJpbmdfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9TdHJpbmdcblxubGV0IHJlZ0V4cCA9IFVuc2FmZS5nbG9iYWwjIy5fUmVnRXhwXG5cbmxldCByZWdFeHBfY29weSA9IHJlZ0V4cFxuXG5sZXQgcmVnRXhwX3dpdGhGbGFncyA9IHJlZ0V4cFxuXG5jbGFzcyB0eXBlIFsnYV0ganNfYXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgY29uY2F0IDogJ2EganNfYXJyYXkgdCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgam9pbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcG9wIDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgcHVzaCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHJldmVyc2UgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2hpZnQgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydCA6ICgnYSAtPiAnYSAtPiBudW1iZXJfdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnRfYXNTdHJpbmdzIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8xIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzIgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMyA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV80IDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNvbWUgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBldmVyeSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvckVhY2ggOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1hcCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGZpbHRlciA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VfaW5pdCA6ICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2UgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHRfaW5pdCA6XG4gICAgKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0IDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5lbmRcblxubGV0IG9iamVjdF9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBvYmplY3Rfa2V5cyBvIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IG9iamVjdF9jb25zdHJ1Y3RvciMja2V5cyBvXG5cbmxldCBhcnJheV9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fQXJyYXlcblxubGV0IGFycmF5X2VtcHR5ID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2xlbmd0aCA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9nZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gVW5zYWZlLmdldFxuXG5sZXQgYXJyYXlfc2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBVbnNhZmUuc2V0XG5cbmxldCBhcnJheV9tYXBfcG9seSA6XG4gICAgJ2EgI2pzX2FycmF5IHQgLT4gKCdhIC0+IGludCAtPiAnYSAjanNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgI2pzX2FycmF5IHQgPVxuIGZ1biBhIGNiIC0+IChVbnNhZmUuY29lcmNlIGEpIyNtYXAgY2JcblxubGV0IGFycmF5X21hcCBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBfaWR4IF8gLT4gZiB4KSlcblxubGV0IGFycmF5X21hcGkgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggaWR4IF8gLT4gZiBpZHggeCkpXG5cbmNsYXNzIHR5cGUgbWF0Y2hfcmVzdWx0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2pzX3N0cmluZyB0XSBqc19hcnJheVxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlucHV0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBzdHJfYXJyYXkgOiBzdHJpbmdfYXJyYXkgdCAtPiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gVW5zYWZlLmNvZXJjZVxuXG5sZXQgbWF0Y2hfcmVzdWx0IDogbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IC0+IG1hdGNoX3Jlc3VsdCB0ID0gVW5zYWZlLmNvZXJjZVxuXG5jbGFzcyB0eXBlIGRhdGUgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVUaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB2YWx1ZU9mIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0Z1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0U2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ1NlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lem9uZU9mZnNldCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZ1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0hvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDU2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRvVVRDU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0lTT1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9KU09OIDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZGF0ZV9jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21vbnRoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfZGF5IDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfaG91ciA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbWluIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfc2VjIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21zIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgbm93IDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBkYXRlX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRGF0ZVxuXG5sZXQgZGF0ZSA6IGRhdGVfY29uc3RyIHQgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ub3cgOiBkYXRlIHQgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZnJvbVRpbWVWYWx1ZSA6IChudW1iZXJfdCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21vbnRoIDogKGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9kYXkgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ob3VyIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21pbiA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfc2VjIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbXMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID1cbiAgZGF0ZV9jb25zdHJcblxuY2xhc3MgdHlwZSBtYXRoID0gb2JqZWN0XG4gIG1ldGhvZCBfRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMTAgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cyRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzEwRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BJIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDFfMl8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuMiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY2VpbCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBleHAgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGZsb29yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBsb2cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcG93IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByYW5kb20gOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJvdW5kIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNxcnQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgbWF0aCA9IFVuc2FmZS5nbG9iYWwjIy5fTWF0aFxuXG5jbGFzcyB0eXBlIGVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFjayA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBlcnJvcl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Vycm9yXG5cbm1vZHVsZSBKc19lcnJvciA9IHN0cnVjdFxuICB0eXBlIGVycm9yX3QgPSBlcnJvciB0XG5cbiAgaW5jbHVkZSBKc29vX3J1bnRpbWUuRXJyb3JcblxuICBleHRlcm5hbCBvZl9lcnJvciA6IGVycm9yX3QgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuICBleHRlcm5hbCB0b19lcnJvciA6IHQgLT4gZXJyb3JfdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgbmFtZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm5hbWVcblxuICBsZXQgbWVzc2FnZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm1lc3NhZ2VcblxuICBsZXQgc3RhY2sgKGUgOiB0KSA6IHN0cmluZyBvcHRpb24gPVxuICAgIE9wdC50b19vcHRpb24gKE9wdC5tYXAgKHRvX2Vycm9yIGUpIyMuc3RhY2sgdG9fc3RyaW5nKVxuXG4gIGxldCB0b19zdHJpbmcgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjI3RvU3RyaW5nXG5lbmRcblxubW9kdWxlIE1hZ2ljID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBleGNlcHRpb24gRXJyb3Igb2YgZXJyb3IgdFxuICBlbmRcblxuICB0eXBlICgnYSwgJ2IpIGVxID0gRXEgOiAoJ2EsICdhKSBlcVxuXG4gIGxldCAoZXEgOiAoZXJyb3IgdCwgSnNfZXJyb3IudCkgZXEpID0gT2JqLm1hZ2ljIEVxXG5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGVxIHdpdGhcbiAgICB8IEVxIC0+XG4gICAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgICAgZXhjZXB0aW9uIEVycm9yID0gSnNfZXJyb3IuRXhuXG4gICAgICAgIGVuZCA6IFQpXG5cbiAgbW9kdWxlIEVycm9yID0gKHZhbCBtIDogVClcbmVuZFxuXG5pbmNsdWRlIE1hZ2ljLkVycm9yXG5cbmxldCByYWlzZV9qc19lcnJvciBlID0gSnNfZXJyb3IucmFpc2VfIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgc3RyaW5nX29mX2Vycm9yIGUgPSBKc19lcnJvci50b19zdHJpbmcgKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBleG5fd2l0aF9qc19iYWNrdHJhY2UgPSBKc19lcnJvci5hdHRhY2hfanNfYmFja3RyYWNlXG5cbmV4dGVybmFsIGpzX2Vycm9yX29mX2V4biA6IGV4biAtPiBlcnJvciB0IG9wdCA9IFwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cIlxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IF9KU09OIDoganNvbiB0ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBkZWNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZGVjb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IHVuZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnVuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5leHRlcm5hbCBib29sIDogYm9vbCAtPiBib29sIHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuZXh0ZXJuYWwgdG9fYm9vbCA6IGJvb2wgdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG5leHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+ICdhIGpzX2FycmF5IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2FycmF5IDogJ2EganNfYXJyYXkgdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbmV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB0b19ieXRlc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuZXh0ZXJuYWwgZmxvYXQgOiBmbG9hdCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBudW1iZXJfdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IG51bWJlciB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiBudW1iZXIgdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIGludDMyIDogaW50MzIgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbmV4dGVybmFsIHRvX2ludDMyIDogbnVtYmVyX3QgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG5leHRlcm5hbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBudW1iZXJfdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdHlwZW9mIDogXyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbmV4dGVybmFsIGluc3RhbmNlb2YgOiBfIHQgLT4gXyBjb25zdHIgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxubGV0IGlzTmFOIChpIDogJ2EpIDogYm9vbCA9XG4gIHRvX2Jvb2wgKFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuaXNOYU4gW3wgVW5zYWZlLmluamVjdCBpIHxdKVxuXG5sZXQgcGFyc2VJbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBpbnQgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VJbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlSW50XCIgZWxzZSBzXG5cbmxldCBwYXJzZUZsb2F0IChzIDoganNfc3RyaW5nIHQpIDogbnVtYmVyX3QgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VGbG9hdCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VGbG9hdFwiIGVsc2Ugc1xuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEpzX2Vycm9yLkV4biBlIC0+IFNvbWUgKEpzX2Vycm9yLnRvX3N0cmluZyBlKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGUgLT5cbiAgICAgIGxldCBlIDogPCAuLiA+IHQgPSBPYmoubWFnaWMgZSBpblxuICAgICAgaWYgaW5zdGFuY2VvZiBlIGFycmF5X2NvbnN0cnVjdG9yIHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvX3N0cmluZyBlIyN0b1N0cmluZykpXG5cbmxldCBleHBvcnRfanMgKGZpZWxkIDoganNfc3RyaW5nIHQpIHggPVxuICBVbnNhZmUuc2V0XG4gICAgKFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJqc29vX2V4cG9ydHNcIilcbiAgICBmaWVsZFxuICAgIChpZiBTdHJpbmcuZXF1YWwgKEpzLnRvX3N0cmluZyAodHlwZW9mIChPYmoubWFnaWMgeCkpKSBcImZ1bmN0aW9uXCJcbiAgICAgICAgKCogZnVuY3Rpb24gd2l0aCBhcml0eS9sZW5ndGggZXF1YWwgdG8gemVybyBhcmUgYWxyZWFkeSB3cmFwcGVkICopXG4gICAgICAgICYmIFVuc2FmZS5nZXQgKE9iai5tYWdpYyB4KSAoSnMuc3RyaW5nIFwibGVuZ3RoXCIpID4gMFxuICAgICB0aGVuIE9iai5tYWdpYyAod3JhcF9jYWxsYmFjayAoT2JqLm1hZ2ljIHgpKVxuICAgICBlbHNlIHgpXG5cbmxldCBleHBvcnQgZmllbGQgeCA9IGV4cG9ydF9qcyAoc3RyaW5nIGZpZWxkKSB4XG5cbmxldCBleHBvcnRfYWxsIG9iaiA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgb2JqIGluXG4gIGtleXMjI2ZvckVhY2hcbiAgICAod3JhcF9jYWxsYmFjayAoZnVuIChrZXkgOiBqc19zdHJpbmcgdCkgXyBfIC0+IGV4cG9ydF9qcyBrZXkgKFVuc2FmZS5nZXQgb2JqIGtleSkpKVxuXG4oKioqKilcblxuKCogREVQUkVDQVRFRCAqKVxuXG50eXBlIGZsb2F0X3Byb3AgPSBudW1iZXJfdCBwcm9wXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydub2RlXSBub2RlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGxpc3Rfb2Zfbm9kZUxpc3QgKG5vZGVMaXN0IDogJ2Egbm9kZUxpc3QgdCkgPVxuICBsZXQgbGVuZ3RoID0gbm9kZUxpc3QjIy5sZW5ndGggaW5cbiAgbGV0IHJlYyBhZGRfaXRlbSBhY2MgaSA9XG4gICAgaWYgaSA8IGxlbmd0aFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKG5vZGVMaXN0IyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhZGRfaXRlbSBhY2MgKGkgKyAxKVxuICAgICAgfCBTb21lIGUgLT4gYWRkX2l0ZW0gKGUgOjogYWNjKSAoaSArIDEpXG4gICAgZWxzZSBMaXN0LnJldiBhY2NcbiAgaW5cbiAgYWRkX2l0ZW0gW10gMFxuXG50eXBlIG5vZGVUeXBlID1cbiAgfCBPVEhFUlxuICAoKiBXaWxsIG5vdCBoYXBwZW4gKilcbiAgfCBFTEVNRU5UXG4gIHwgQVRUUklCVVRFXG4gIHwgVEVYVFxuICB8IENEQVRBX1NFQ1RJT05cbiAgfCBFTlRJVFlfUkVGRVJFTkNFXG4gIHwgRU5USVRZXG4gIHwgUFJPQ0VTU0lOR19JTlNUUlVDVElPTlxuICB8IENPTU1FTlRcbiAgfCBET0NVTUVOVFxuICB8IERPQ1VNRU5UX1RZUEVcbiAgfCBET0NVTUVOVF9GUkFHTUVOVFxuICB8IE5PVEFUSU9OXG5cbm1vZHVsZSBEb2N1bWVudFBvc2l0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIHR5cGUgbWFzayA9IGludFxuXG4gIGxldCBkaXNjb25uZWN0ZWQgPSAweDAxXG5cbiAgbGV0IHByZWNlZGluZyA9IDB4MDJcblxuICBsZXQgZm9sbG93aW5nID0gMHgwNFxuXG4gIGxldCBjb250YWlucyA9IDB4MDhcblxuICBsZXQgY29udGFpbmVkX2J5ID0gMHgxMFxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9zcGVjaWZpYyA9IDB4MjBcblxuICBsZXQgaGFzIHQgbWFzayA9IHQgbGFuZCBtYXNrID0gbWFza1xuXG4gIGxldCBhZGQgeCB5ID0geCBsb3IgeVxuXG4gIGxldCAoICsgKSA9IGFkZFxuZW5kXG5cbmNsYXNzIHR5cGUgbm9kZSA9IG9iamVjdFxuICBtZXRob2Qgbm9kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVUeXBlIDogbm9kZVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBub2RlIG5vZGVMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0QmVmb3JlIDogbm9kZSB0IC0+IG5vZGUgdCBvcHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBoYXNDaGlsZE5vZGVzIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgY2xvbmVOb2RlIDogYm9vbCB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIDogbm9kZSB0IC0+IERvY3VtZW50UG9zaXRpb24udCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cE5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cFByZWZpeCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGFwcGVuZENoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjYXBwZW5kQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlbW92ZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjcmVtb3ZlQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlcGxhY2VDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0KSA9XG4gIGlnbm9yZSAocCMjcmVwbGFjZUNoaWxkIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0KSlcblxubGV0IGluc2VydEJlZm9yZSAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0IG9wdCkgPVxuICBpZ25vcmUgKHAjI2luc2VydEJlZm9yZSAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCBvcHQpKVxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbQXR0cl0gb2JqZWN0cy4gKilcbmNsYXNzIHR5cGUgYXR0ciA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlY2lmaWVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyRWxlbWVudCA6IGVsZW1lbnQgdCBwcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW05hbWVkTm9kZU1hcF0gb2JqZWN0cy4gKilcbmFuZCBbJ25vZGVdIG5hbWVkTm9kZU1hcCA9IG9iamVjdFxuICBtZXRob2QgZ2V0TmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXROYW1lZEl0ZW0gOiAnbm9kZSB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlTmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbRWxlbWVudF0gb2JqZWN0cy4gKilcbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCB0YWdOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGVOUyA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0ciBuYW1lZE5vZGVNYXAgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBjaGFyYWN0ZXJEYXRhID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJqc19zdHJpbmdEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZERhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0RGF0YSA6IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRGF0YSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGNvbW1lbnQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgdGV4dCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSBkb2N1bWVudEZyYWdtZW50ID0gbm9kZVxuXG5jbGFzcyB0eXBlIFsnZWxlbWVudF0gZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6ICdlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVEb2N1bWVudEZyYWdtZW50IDogZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50TlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dE5vZGUgOiBqc19zdHJpbmcgdCAtPiB0ZXh0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDb21tZW50IDoganNfc3RyaW5nIHQgLT4gY29tbWVudCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGltcG9ydE5vZGUgOiBlbGVtZW50IHQgLT4gYm9vbCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBhZG9wdE5vZGUgOiBlbGVtZW50IHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub2RlX3R5cGUgPVxuICB8IEVsZW1lbnQgb2YgZWxlbWVudCB0XG4gIHwgQXR0ciBvZiBhdHRyIHRcbiAgfCBUZXh0IG9mIHRleHQgdFxuICB8IE90aGVyIG9mIG5vZGUgdFxuXG5sZXQgbm9kZVR5cGUgZSA9XG4gIG1hdGNoIGUjIy5ub2RlVHlwZSB3aXRoXG4gIHwgRUxFTUVOVCAtPiBFbGVtZW50IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQVRUUklCVVRFIC0+IEF0dHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBDREFUQV9TRUNUSU9OIHwgVEVYVCAtPiBUZXh0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgXyAtPiBPdGhlciAoZSA6PiBub2RlIHQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgY2FzdCAoZSA6ICNub2RlIEpzLnQpIHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSB0IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgZWxlbWVudCBlIDogZWxlbWVudCBKcy50IEpzLm9wdCA9IGNhc3QgZSBFTEVNRU5UXG5cbiAgbGV0IHRleHQgZSA6IHRleHQgSnMudCBKcy5vcHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSBURVhUIHx8IGUjIy5ub2RlVHlwZSA9PSBDREFUQV9TRUNUSU9OXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGF0dHIgZSA6IGF0dHIgSnMudCBKcy5vcHQgPSBjYXN0IGUgQVRUUklCVVRFXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IgLT4gYm9vbCB0KSBtZXRoX2NhbGxiYWNrIG9wdFxuKCoqIFRoZSB0eXBlIG9mIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9ucy4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlclxuICAgICAgWydhXSBpcyB0aGUgdHlwZSBvZiB0aGUgdGFyZ2V0IG9iamVjdDsgdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIFsnYl0gaXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IG9iamVjdC4gKilcblxuY2xhc3MgdHlwZSBbJ2FdIGV2ZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gICgqIExlZ2FjeSBtZXRob2RzICopXG4gIG1ldGhvZCBzcmNFbGVtZW50IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6ICdiIEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IEpzLm51bGxcblxubGV0IHdpbmRvd19ldmVudCAoKSA6ICdhICNldmVudCB0ID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcImV2ZW50XCJcblxuKCogVGhlIGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0IG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkgd2hlblxuICAgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lci4uLiAqKVxubGV0IGhhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLmNhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZC4gKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGZ1bGxfaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUubWV0aF9jYWxsYmFjayAoZnVuIHRoaXMgZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZCAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGludm9rZV9oYW5kbGVyIChmIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIpICh0aGlzIDogJ2EpIChldmVudCA6ICdiKSA6IGJvb2wgdCA9XG4gIEpzLlVuc2FmZS5jYWxsIGYgdGhpcyBbfCBKcy5VbnNhZmUuaW5qZWN0IGV2ZW50IHxdXG5cbmxldCBldmVudFRhcmdldCAoZSA6ICg8IC4uID4gYXMgJ2EpICNldmVudCB0KSA6ICdhIHQgPVxuICBsZXQgdGFyZ2V0ID1cbiAgICBPcHQuZ2V0IGUjIy50YXJnZXQgKGZ1biAoKSAtPiBPcHQuZ2V0IGUjIy5zcmNFbGVtZW50IChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgaW5cbiAgaWYgSnMuaW5zdGFuY2VvZiB0YXJnZXQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Ob2RlXG4gIHRoZW5cbiAgICAoKiBXb3JrYXJvdW5kIGZvciBTYWZhcmkgYnVnICopXG4gICAgbGV0IHRhcmdldCcgOiBub2RlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlIHRhcmdldCBpblxuICAgIGlmIHRhcmdldCcjIy5ub2RlVHlwZSA9PSBURVhUXG4gICAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChPcHQuZ2V0IHRhcmdldCcjIy5wYXJlbnROb2RlIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICBlbHNlIHRhcmdldFxuICBlbHNlIHRhcmdldFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBtYWtlIHMgPSBKcy5zdHJpbmcgc1xuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSB1bml0IC0+IHVuaXRcblxuY2xhc3MgdHlwZSBldmVudF9saXN0ZW5lcl9vcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBjYXB0dXJlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2UgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGFzc2l2ZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5hZGRFdmVudExpc3RlbmVyKVxuICB0aGVuXG4gICAgbGV0IGV2ID0gKEpzLnN0cmluZyBcIm9uXCIpIyNjb25jYXQgdHlwIGluXG4gICAgbGV0IGNhbGxiYWNrIGUgPSBKcy5VbnNhZmUuY2FsbCAoaCwgZSwgW3x8XSkgaW5cbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYXR0YWNoRXZlbnQgZXYgY2FsbGJhY2sgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2RldGFjaEV2ZW50IGV2IGNhbGxiYWNrXG4gIGVsc2VcbiAgICBsZXQgb3B0cyA6IGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIGxldCBpdGVyIHQgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGIgLT4gZiBiXG4gICAgaW5cbiAgICBpdGVyIGNhcHR1cmUgKGZ1biBiIC0+IG9wdHMjIy5jYXB0dXJlIDo9IGIpO1xuICAgIGl0ZXIgb25jZSAoZnVuIGIgLT4gb3B0cyMjLm9uY2UgOj0gYik7XG4gICAgaXRlciBwYXNzaXZlIChmdW4gYiAtPiBvcHRzIyMucGFzc2l2ZSA6PSBiKTtcbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYWRkRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNyZW1vdmVFdmVudExpc3RlbmVyIHR5cCBoIG9wdHNcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgaCBjYXB0ID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgdHlwIH5jYXB0dXJlOmNhcHQgaFxuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBpZCA9IGlkICgpXG5cbmxldCBwcmV2ZW50RGVmYXVsdCBldiA9XG4gIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnByZXZlbnREZWZhdWx0ICgqIElFIGhhY2sgKilcbiAgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBldikjI3ByZXZlbnREZWZhdWx0XG4gIGVsc2UgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucmV0dXJuVmFsdWUgOj0gSnMuYm9vbCBmYWxzZVxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgP2J1YmJsZXMgP2NhbmNlbGFibGUgP2RldGFpbCB0eXAgPVxuICBsZXQgb3B0X2l0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvcHRzID0gVW5zYWZlLm9iaiBbfHxdIGluXG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuYnViYmxlcyA6PSBib29sIHgpIGJ1YmJsZXM7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuY2FuY2VsYWJsZSA6PSBib29sIHgpIGNhbmNlbGFibGU7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuZGV0YWlsIDo9IHNvbWUgeCkgZGV0YWlsO1xuICBsZXQgY29uc3RyIDpcbiAgICAgICggICAoJ2EsICdiKSAjY3VzdG9tRXZlbnQgSnMudCBFdmVudC50eXBcbiAgICAgICAtPiA8IGRldGFpbCA6ICdiIG9wdCBwcm9wID4gdFxuICAgICAgIC0+ICgnYSwgJ2IpIGN1c3RvbUV2ZW50IHQpXG4gICAgICBjb25zdHIgPVxuICAgIFVuc2FmZS5nbG9iYWwjIy5fQ3VzdG9tRXZlbnRcbiAgaW5cbiAgbmV3JWpzIGNvbnN0ciB0eXAgb3B0c1xuXG4oKiBJRSA8IDkgKilcblxuY2xhc3MgdHlwZSBzdHJpbmdMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gSnNcblxudHlwZSB1aW50MzIgPSBmbG9hdFxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcbmVuZFxuXG5sZXQgYXJyYXlCdWZmZXIgOiAoaW50IC0+IGFycmF5QnVmZmVyIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fQXJyYXlCdWZmZXJcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlclZpZXcgPSBvYmplY3RcbiAgbWV0aG9kIGJ1ZmZlciA6IGFycmF5QnVmZmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB0eXBlZEFycmF5ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIF9CWVRFU19QRVJfRUxFTUVOVCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldF9mcm9tQXJyYXkgOiAnYSBqc19hcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0X2Zyb21UeXBlZEFycmF5IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXkgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5X3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gICgqIFRoaXMgZmFrZSBtZXRob2QgaXMgbmVlZGVkIGZvciB0eXBpbmcgcHVycG9zZXMuXG4gICAgIFdpdGhvdXQgaXQsIFsnYl0gd291bGQgbm90IGJlIGNvbnN0cmFpbmVkLiAqKVxuICBtZXRob2QgX2NvbnRlbnRfdHlwZV8gOiAnYiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgaW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDMyQXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQ2NEFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdHlwZWRBcnJheVxuXG5leHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHRcbiAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxubGV0IGludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfaW5CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfaW5CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCBpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21BcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2luQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9pbkJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCBpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21BcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2luQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9pbkJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21BcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2luQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21BcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2luQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBzZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPVxuIGZ1biBhIGkgdiAtPiBhcnJheV9zZXQgKFVuc2FmZS5jb2VyY2UgYSkgaSB2XG5cbmxldCBnZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxubGV0IHVuc2FmZV9nZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5jbGFzcyB0eXBlIGRhdGFWaWV3ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIGdldEludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzIgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyXyA6IGludCAtPiBib29sIHQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzJfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0XyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzJfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMiA6IGludCAtPiB1aW50MzIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMl8gOiBpbnQgLT4gdWludDMyIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMl8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0XyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGRhdGFWaWV3ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9EYXRhVmlld1xuXG5sZXQgZGF0YVZpZXdfaW5CdWZmZXIgPSBkYXRhVmlld1xuXG5tb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyIEpzLnQgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVsbGlwc2UgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpdiBkb2MgOiBkaXZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpdlwiXG5cbmxldCBjcmVhdGVFbWJlZCBkb2MgOiBlbWJlZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1iZWRcIlxuXG5sZXQgY3JlYXRlUCBkb2MgOiBwYXJhZ3JhcGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBcIlxuXG5sZXQgY3JlYXRlSDEgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDFcIlxuXG5sZXQgY3JlYXRlSDIgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDJcIlxuXG5sZXQgY3JlYXRlSDMgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDNcIlxuXG5sZXQgY3JlYXRlSDQgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDRcIlxuXG5sZXQgY3JlYXRlSDUgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDVcIlxuXG5sZXQgY3JlYXRlSDYgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDZcIlxuXG5sZXQgY3JlYXRlUSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicVwiXG5cbmxldCBjcmVhdGVCbG9ja3F1b3RlIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJibG9ja3F1b3RlXCJcblxubGV0IGNyZWF0ZVByZSBkb2MgOiBwcmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInByZVwiXG5cbmxldCBjcmVhdGVCciBkb2MgOiBickVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYnJcIlxuXG5sZXQgY3JlYXRlSHIgZG9jIDogaHJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhyXCJcblxubGV0IGNyZWF0ZUlucyBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImluc1wiXG5cbmxldCBjcmVhdGVEZWwgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWxcIlxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhbmNob3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlSW1nIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWdcIlxuXG5sZXQgY3JlYXRlT2JqZWN0IGRvYyA6IG9iamVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2JqZWN0XCJcblxubGV0IGNyZWF0ZVBhcmFtIGRvYyA6IHBhcmFtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXJhbVwiXG5cbmxldCBjcmVhdGVNYXAgZG9jIDogbWFwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXBcIlxuXG5sZXQgY3JlYXRlQXJlYSBkb2MgOiBhcmVhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhcmVhXCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVUYWJsZSBkb2MgOiB0YWJsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGFibGVcIlxuXG5sZXQgY3JlYXRlQ2FwdGlvbiBkb2MgOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhcHRpb25cIlxuXG5sZXQgY3JlYXRlQ29sIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xcIlxuXG5sZXQgY3JlYXRlQ29sZ3JvdXAgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbGdyb3VwXCJcblxubGV0IGNyZWF0ZVRoZWFkIGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhlYWRcIlxuXG5sZXQgY3JlYXRlVGZvb3QgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Zm9vdFwiXG5cbmxldCBjcmVhdGVUYm9keSBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRib2R5XCJcblxubGV0IGNyZWF0ZVRyIGRvYyA6IHRhYmxlUm93RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0clwiXG5cbmxldCBjcmVhdGVUaCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoXCJcblxubGV0IGNyZWF0ZVRkIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGRcIlxuXG5sZXQgY3JlYXRlU3ViIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3ViXCJcblxubGV0IGNyZWF0ZVN1cCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1cFwiXG5cbmxldCBjcmVhdGVTcGFuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3BhblwiXG5cbmxldCBjcmVhdGVUdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInR0XCJcblxubGV0IGNyZWF0ZUkgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJpXCJcblxubGV0IGNyZWF0ZUIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiXCJcblxubGV0IGNyZWF0ZUJpZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJpZ1wiXG5cbmxldCBjcmVhdGVTbWFsbCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNtYWxsXCJcblxubGV0IGNyZWF0ZUVtIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1cIlxuXG5sZXQgY3JlYXRlU3Ryb25nIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3Ryb25nXCJcblxubGV0IGNyZWF0ZUNpdGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjaXRlXCJcblxubGV0IGNyZWF0ZURmbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRmblwiXG5cbmxldCBjcmVhdGVDb2RlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY29kZVwiXG5cbmxldCBjcmVhdGVTYW1wIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic2FtcFwiXG5cbmxldCBjcmVhdGVLYmQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJrYmRcIlxuXG5sZXQgY3JlYXRlVmFyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidmFyXCJcblxubGV0IGNyZWF0ZUFiYnIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhYmJyXCJcblxubGV0IGNyZWF0ZURkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGRcIlxuXG5sZXQgY3JlYXRlRHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkdFwiXG5cbmxldCBjcmVhdGVOb3NjcmlwdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcIm5vc2NyaXB0XCJcblxubGV0IGNyZWF0ZUFkZHJlc3MgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhZGRyZXNzXCJcblxubGV0IGNyZWF0ZUZyYW1lc2V0IGRvYyA6IGZyYW1lU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZXNldFwiXG5cbmxldCBjcmVhdGVGcmFtZSBkb2MgOiBmcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVcIlxuXG5sZXQgY3JlYXRlSWZyYW1lIGRvYyA6IGlGcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaWZyYW1lXCJcblxubGV0IGNyZWF0ZUF1ZGlvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhdWRpb1wiXG5cbmxldCBjcmVhdGVWaWRlbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlkZW9cIlxuXG5leGNlcHRpb24gQ2FudmFzX25vdF9hdmFpbGFibGVcblxubGV0IGNyZWF0ZUNhbnZhcyBkb2MgOiBjYW52YXNFbGVtZW50IHQgPVxuICBsZXQgYyA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FudmFzXCIgaW5cbiAgaWYgbm90IChPcHQudGVzdCBjIyMuZ2V0Q29udGV4dCkgdGhlbiByYWlzZSBDYW52YXNfbm90X2F2YWlsYWJsZTtcbiAgY1xuXG5sZXQgaHRtbF9lbGVtZW50IDogaHRtbEVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0hUTUxFbGVtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCA6ICNEb20ubm9kZSBKcy50IC0+IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiBodG1sX2VsZW1lbnQpKVxuICAgIHRoZW5cbiAgICAgICgqIGllIDwgOSBkb2VzIG5vdCBoYXZlIEhUTUxFbGVtZW50OiB3ZSBoYXZlIHRvIGNoZWF0IHRvIGNoZWNrXG4gICAgICAgICB0aGF0IHNvbWV0aGluZyBpcyBhbiBodG1sIGVsZW1lbnQgKilcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5pbm5lckhUTUwpKVxuICAgICAgdGhlbiBKcy5udWxsXG4gICAgICBlbHNlIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgSnMuaW5zdGFuY2VvZiBlIGh0bWxfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSB0YWcgKGUgOiAjZWxlbWVudCB0KSA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlID0gdW5zYWZlQ29lcmNlIFwiYVwiIGVcblxuICBsZXQgYXJlYSBlID0gdW5zYWZlQ29lcmNlIFwiYXJlYVwiIGVcblxuICBsZXQgYmFzZSBlID0gdW5zYWZlQ29lcmNlIFwiYmFzZVwiIGVcblxuICBsZXQgYmxvY2txdW90ZSBlID0gdW5zYWZlQ29lcmNlIFwiYmxvY2txdW90ZVwiIGVcblxuICBsZXQgYm9keSBlID0gdW5zYWZlQ29lcmNlIFwiYm9keVwiIGVcblxuICBsZXQgYnIgZSA9IHVuc2FmZUNvZXJjZSBcImJyXCIgZVxuXG4gIGxldCBidXR0b24gZSA9IHVuc2FmZUNvZXJjZSBcImJ1dHRvblwiIGVcblxuICBsZXQgY2FudmFzIGUgPSB1bnNhZmVDb2VyY2UgXCJjYW52YXNcIiBlXG5cbiAgbGV0IGNhcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcImNhcHRpb25cIiBlXG5cbiAgbGV0IGNvbCBlID0gdW5zYWZlQ29lcmNlIFwiY29sXCIgZVxuXG4gIGxldCBjb2xncm91cCBlID0gdW5zYWZlQ29lcmNlIFwiY29sZ3JvdXBcIiBlXG5cbiAgbGV0IGRlbCBlID0gdW5zYWZlQ29lcmNlIFwiZGVsXCIgZVxuXG4gIGxldCBkaXYgZSA9IHVuc2FmZUNvZXJjZSBcImRpdlwiIGVcblxuICBsZXQgZGwgZSA9IHVuc2FmZUNvZXJjZSBcImRsXCIgZVxuXG4gIGxldCBmaWVsZHNldCBlID0gdW5zYWZlQ29lcmNlIFwiZmllbGRzZXRcIiBlXG5cbiAgbGV0IGVtYmVkIGUgPSB1bnNhZmVDb2VyY2UgXCJlbWJlZFwiIGVcblxuICBsZXQgZm9ybSBlID0gdW5zYWZlQ29lcmNlIFwiZm9ybVwiIGVcblxuICBsZXQgZnJhbWVzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lc2V0XCIgZVxuXG4gIGxldCBmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVcIiBlXG5cbiAgbGV0IGgxIGUgPSB1bnNhZmVDb2VyY2UgXCJoMVwiIGVcblxuICBsZXQgaDIgZSA9IHVuc2FmZUNvZXJjZSBcImgyXCIgZVxuXG4gIGxldCBoMyBlID0gdW5zYWZlQ29lcmNlIFwiaDNcIiBlXG5cbiAgbGV0IGg0IGUgPSB1bnNhZmVDb2VyY2UgXCJoNFwiIGVcblxuICBsZXQgaDUgZSA9IHVuc2FmZUNvZXJjZSBcImg1XCIgZVxuXG4gIGxldCBoNiBlID0gdW5zYWZlQ29lcmNlIFwiaDZcIiBlXG5cbiAgbGV0IGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcImhlYWRcIiBlXG5cbiAgbGV0IGhyIGUgPSB1bnNhZmVDb2VyY2UgXCJoclwiIGVcblxuICBsZXQgaHRtbCBlID0gdW5zYWZlQ29lcmNlIFwiaHRtbFwiIGVcblxuICBsZXQgaWZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJpZnJhbWVcIiBlXG5cbiAgbGV0IGltZyBlID0gdW5zYWZlQ29lcmNlIFwiaW1nXCIgZVxuXG4gIGxldCBpbnB1dCBlID0gdW5zYWZlQ29lcmNlIFwiaW5wdXRcIiBlXG5cbiAgbGV0IGlucyBlID0gdW5zYWZlQ29lcmNlIFwiaW5zXCIgZVxuXG4gIGxldCBsYWJlbCBlID0gdW5zYWZlQ29lcmNlIFwibGFiZWxcIiBlXG5cbiAgbGV0IGxlZ2VuZCBlID0gdW5zYWZlQ29lcmNlIFwibGVnZW5kXCIgZVxuXG4gIGxldCBsaSBlID0gdW5zYWZlQ29lcmNlIFwibGlcIiBlXG5cbiAgbGV0IGxpbmsgZSA9IHVuc2FmZUNvZXJjZSBcImxpbmtcIiBlXG5cbiAgbGV0IG1hcCBlID0gdW5zYWZlQ29lcmNlIFwibWFwXCIgZVxuXG4gIGxldCBtZXRhIGUgPSB1bnNhZmVDb2VyY2UgXCJtZXRhXCIgZVxuXG4gIGxldCBfb2JqZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJvYmplY3RcIiBlXG5cbiAgbGV0IG9sIGUgPSB1bnNhZmVDb2VyY2UgXCJvbFwiIGVcblxuICBsZXQgb3B0Z3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGdyb3VwXCIgZVxuXG4gIGxldCBvcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGlvblwiIGVcblxuICBsZXQgcCBlID0gdW5zYWZlQ29lcmNlIFwicFwiIGVcblxuICBsZXQgcGFyYW0gZSA9IHVuc2FmZUNvZXJjZSBcInBhcmFtXCIgZVxuXG4gIGxldCBwcmUgZSA9IHVuc2FmZUNvZXJjZSBcInByZVwiIGVcblxuICBsZXQgcSBlID0gdW5zYWZlQ29lcmNlIFwicVwiIGVcblxuICBsZXQgc2NyaXB0IGUgPSB1bnNhZmVDb2VyY2UgXCJzY3JpcHRcIiBlXG5cbiAgbGV0IHNlbGVjdCBlID0gdW5zYWZlQ29lcmNlIFwic2VsZWN0XCIgZVxuXG4gIGxldCBzdHlsZSBlID0gdW5zYWZlQ29lcmNlIFwic3R5bGVcIiBlXG5cbiAgbGV0IHRhYmxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0YWJsZVwiIGVcblxuICBsZXQgdGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcInRib2R5XCIgZVxuXG4gIGxldCB0ZCBlID0gdW5zYWZlQ29lcmNlIFwidGRcIiBlXG5cbiAgbGV0IHRleHRhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZXh0YXJlYVwiIGVcblxuICBsZXQgdGZvb3QgZSA9IHVuc2FmZUNvZXJjZSBcInRmb290XCIgZVxuXG4gIGxldCB0aCBlID0gdW5zYWZlQ29lcmNlIFwidGhcIiBlXG5cbiAgbGV0IHRoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aGVhZFwiIGVcblxuICBsZXQgdGl0bGUgZSA9IHVuc2FmZUNvZXJjZSBcInRpdGxlXCIgZVxuXG4gIGxldCB0ciBlID0gdW5zYWZlQ29lcmNlIFwidHJcIiBlXG5cbiAgbGV0IHVsIGUgPSB1bnNhZmVDb2VyY2UgXCJ1bFwiIGVcblxuICBsZXQgYXVkaW8gZSA9IHVuc2FmZUNvZXJjZSBcImF1ZGlvXCIgZVxuXG4gIGxldCB2aWRlbyBlID0gdW5zYWZlQ29lcmNlIFwidmlkZW9cIiBlXG5cbiAgbGV0IHVuc2FmZUNvZXJjZUV2ZW50IGNvbnN0ciAoZXYgOiAjZXZlbnQgdCkgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChkZWYgY29uc3RyKSAmJiBKcy5pbnN0YW5jZW9mIGV2IGNvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBldilcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgbW91c2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VFdmVudCBldlxuXG4gIGxldCBrZXlib2FyZEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9LZXlib2FyZEV2ZW50IGV2XG5cbiAgbGV0IHdoZWVsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1doZWVsRXZlbnQgZXZcblxuICBsZXQgbW91c2VTY3JvbGxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VTY3JvbGxFdmVudCBldlxuXG4gIGxldCBwb3BTdGF0ZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Qb3BTdGF0ZUV2ZW50IGV2XG5cbiAgbGV0IG1lc3NhZ2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTWVzc2FnZUV2ZW50IGV2XG5lbmRcblxuKCoqKiopXG5cbmxldCBldmVudFRhcmdldCA9IERvbS5ldmVudFRhcmdldFxuXG5sZXQgZXZlbnRSZWxhdGVkVGFyZ2V0IChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuZ2V0IGUjIy5yZWxhdGVkVGFyZ2V0IChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIEpzLnRvX3N0cmluZyBlIyMuX3R5cGUgd2l0aFxuICAgICAgfCBcIm1vdXNlb3ZlclwiIC0+IE9wdGRlZi5nZXQgZSMjLmZyb21FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBcIm1vdXNlb3V0XCIgLT4gT3B0ZGVmLmdldCBlIyMudG9FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBfIC0+IEpzLm51bGwpXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24nIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggZSMjLmNsaWVudFggKyBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0XG4gICwgZSMjLmNsaWVudFkgKyBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcCApXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24gKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnBhZ2VYXG4gICAgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpXG4gICAgKGZ1biB4IC0+IE9wdGRlZi5jYXNlIGUjIy5wYWdlWSAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSkgKGZ1biB5IC0+IHgsIHkpKVxuXG5sZXQgZWxlbWVudENsaWVudFBvc2l0aW9uIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgciA9IGUjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy5sZWZ0KSAtIGJvZHkjIy5jbGllbnRMZWZ0IC0gaHRtbCMjLmNsaWVudExlZnRcbiAgLCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLnRvcCkgLSBib2R5IyMuY2xpZW50VG9wIC0gaHRtbCMjLmNsaWVudFRvcCApXG5cbmxldCBnZXREb2N1bWVudFNjcm9sbCAoKSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdCwgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3BcblxubGV0IGJ1dHRvblByZXNzZWQgKGV2IDogI21vdXNlRXZlbnQgSnMudCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIGV2IyMud2hpY2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBldiMjLmJ1dHRvbiB3aXRoXG4gICAgICB8IDEgLT4gTGVmdF9idXR0b25cbiAgICAgIHwgMiAtPiBSaWdodF9idXR0b25cbiAgICAgIHwgNCAtPiBNaWRkbGVfYnV0dG9uXG4gICAgICB8IF8gLT4gTm9fYnV0dG9uKVxuICAgIChmdW4geCAtPiB4KVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICA/Y2FwdHVyZVxuICAgID9vbmNlXG4gICAgP3Bhc3NpdmVcbiAgICBlXG4gICAgRXZlbnQud2hlZWxcbiAgICAoaGFuZGxlciAoZnVuIChlIDogbW91c2V3aGVlbEV2ZW50IHQpIC0+XG4gICAgICAgICBsZXQgZHggPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVggKGZ1biAoKSAtPiAwKSAvIDQwIGluXG4gICAgICAgICBsZXQgZHkgPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVkgKGZ1biAoKSAtPiBlIyMud2hlZWxEZWx0YSkgLyA0MCBpblxuICAgICAgICAgaCAoZSA6PiBtb3VzZUV2ZW50IHQpIH5keCB+ZHkpKVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIgZSBoIGNhcHQgPVxuICBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIH5jYXB0dXJlOmNhcHQgZSBoXG5cbigqKioqKilcblxubW9kdWxlIEtleWJvYXJkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFVuaWRlbnRpZmllZFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgS2V5QVxuICAgIHwgS2V5QlxuICAgIHwgS2V5Q1xuICAgIHwgS2V5RFxuICAgIHwgS2V5RVxuICAgIHwgS2V5RlxuICAgIHwgS2V5R1xuICAgIHwgS2V5SFxuICAgIHwgS2V5SVxuICAgIHwgS2V5SlxuICAgIHwgS2V5S1xuICAgIHwgS2V5TFxuICAgIHwgS2V5TVxuICAgIHwgS2V5TlxuICAgIHwgS2V5T1xuICAgIHwgS2V5UFxuICAgIHwgS2V5UVxuICAgIHwgS2V5UlxuICAgIHwgS2V5U1xuICAgIHwgS2V5VFxuICAgIHwgS2V5VVxuICAgIHwgS2V5VlxuICAgIHwgS2V5V1xuICAgIHwgS2V5WFxuICAgIHwgS2V5WVxuICAgIHwgS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgRGlnaXQwXG4gICAgfCBEaWdpdDFcbiAgICB8IERpZ2l0MlxuICAgIHwgRGlnaXQzXG4gICAgfCBEaWdpdDRcbiAgICB8IERpZ2l0NVxuICAgIHwgRGlnaXQ2XG4gICAgfCBEaWdpdDdcbiAgICB8IERpZ2l0OFxuICAgIHwgRGlnaXQ5XG4gICAgfCBNaW51c1xuICAgIHwgRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBUYWJcbiAgICB8IEVudGVyXG4gICAgfCBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IEVzY2FwZVxuICAgIHwgQmFja3NwYWNlXG4gICAgfCBJbnNlcnRcbiAgICB8IERlbGV0ZVxuICAgIHwgQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgQnJhY2tldExlZnRcbiAgICB8IEJyYWNrZXRSaWdodFxuICAgIHwgU2VtaWNvbG9uXG4gICAgfCBRdW90ZVxuICAgIHwgQmFja3F1b3RlXG4gICAgfCBCYWNrc2xhc2hcbiAgICB8IENvbW1hXG4gICAgfCBQZXJpb2RcbiAgICB8IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgRjFcbiAgICB8IEYyXG4gICAgfCBGM1xuICAgIHwgRjRcbiAgICB8IEY1XG4gICAgfCBGNlxuICAgIHwgRjdcbiAgICB8IEY4XG4gICAgfCBGOVxuICAgIHwgRjEwXG4gICAgfCBGMTFcbiAgICB8IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBOdW1wYWQwXG4gICAgfCBOdW1wYWQxXG4gICAgfCBOdW1wYWQyXG4gICAgfCBOdW1wYWQzXG4gICAgfCBOdW1wYWQ0XG4gICAgfCBOdW1wYWQ1XG4gICAgfCBOdW1wYWQ2XG4gICAgfCBOdW1wYWQ3XG4gICAgfCBOdW1wYWQ4XG4gICAgfCBOdW1wYWQ5XG4gICAgfCBOdW1wYWRNdWx0aXBseVxuICAgIHwgTnVtcGFkU3VidHJhY3RcbiAgICB8IE51bXBhZEFkZFxuICAgIHwgTnVtcGFkRGVjaW1hbFxuICAgIHwgTnVtcGFkRXF1YWxcbiAgICB8IE51bXBhZEVudGVyXG4gICAgfCBOdW1wYWREaXZpZGVcbiAgICB8IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBDb250cm9sTGVmdFxuICAgIHwgQ29udHJvbFJpZ2h0XG4gICAgfCBNZXRhTGVmdFxuICAgIHwgTWV0YVJpZ2h0XG4gICAgfCBTaGlmdExlZnRcbiAgICB8IFNoaWZ0UmlnaHRcbiAgICB8IEFsdExlZnRcbiAgICB8IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgQXJyb3dMZWZ0XG4gICAgfCBBcnJvd1JpZ2h0XG4gICAgfCBBcnJvd1VwXG4gICAgfCBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBQYWdlVXBcbiAgICB8IFBhZ2VEb3duXG4gICAgfCBIb21lXG4gICAgfCBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgVm9sdW1lTXV0ZVxuICAgIHwgVm9sdW1lRG93blxuICAgIHwgVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBNZWRpYVRyYWNrTmV4dFxuICAgIHwgTWVkaWFQbGF5UGF1c2VcbiAgICB8IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgQ29udGV4dE1lbnVcbiAgICB8IEJyb3dzZXJTZWFyY2hcbiAgICB8IEJyb3dzZXJIb21lXG4gICAgfCBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBCcm93c2VyUmVmcmVzaFxuICAgIHwgQnJvd3NlclN0b3BcbiAgICB8IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IE9TTGVmdFxuICAgIHwgT1NSaWdodFxuICAgIHwgU2Nyb2xsTG9ja1xuICAgIHwgUHJpbnRTY3JlZW5cbiAgICB8IEludGxCYWNrc2xhc2hcbiAgICB8IEludGxZZW5cbiAgICB8IFBhdXNlXG5cbiAgbGV0IHRyeV9jb2RlIHYgPVxuICAgIG1hdGNoIEpzLnRvX3N0cmluZyB2IHdpdGhcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IFwiS2V5QVwiIC0+IEtleUFcbiAgICB8IFwiS2V5QlwiIC0+IEtleUJcbiAgICB8IFwiS2V5Q1wiIC0+IEtleUNcbiAgICB8IFwiS2V5RFwiIC0+IEtleURcbiAgICB8IFwiS2V5RVwiIC0+IEtleUVcbiAgICB8IFwiS2V5RlwiIC0+IEtleUZcbiAgICB8IFwiS2V5R1wiIC0+IEtleUdcbiAgICB8IFwiS2V5SFwiIC0+IEtleUhcbiAgICB8IFwiS2V5SVwiIC0+IEtleUlcbiAgICB8IFwiS2V5SlwiIC0+IEtleUpcbiAgICB8IFwiS2V5S1wiIC0+IEtleUtcbiAgICB8IFwiS2V5TFwiIC0+IEtleUxcbiAgICB8IFwiS2V5TVwiIC0+IEtleU1cbiAgICB8IFwiS2V5TlwiIC0+IEtleU5cbiAgICB8IFwiS2V5T1wiIC0+IEtleU9cbiAgICB8IFwiS2V5UFwiIC0+IEtleVBcbiAgICB8IFwiS2V5UVwiIC0+IEtleVFcbiAgICB8IFwiS2V5UlwiIC0+IEtleVJcbiAgICB8IFwiS2V5U1wiIC0+IEtleVNcbiAgICB8IFwiS2V5VFwiIC0+IEtleVRcbiAgICB8IFwiS2V5VVwiIC0+IEtleVVcbiAgICB8IFwiS2V5VlwiIC0+IEtleVZcbiAgICB8IFwiS2V5V1wiIC0+IEtleVdcbiAgICB8IFwiS2V5WFwiIC0+IEtleVhcbiAgICB8IFwiS2V5WVwiIC0+IEtleVlcbiAgICB8IFwiS2V5WlwiIC0+IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IFwiRGlnaXQwXCIgLT4gRGlnaXQwXG4gICAgfCBcIkRpZ2l0MVwiIC0+IERpZ2l0MVxuICAgIHwgXCJEaWdpdDJcIiAtPiBEaWdpdDJcbiAgICB8IFwiRGlnaXQzXCIgLT4gRGlnaXQzXG4gICAgfCBcIkRpZ2l0NFwiIC0+IERpZ2l0NFxuICAgIHwgXCJEaWdpdDVcIiAtPiBEaWdpdDVcbiAgICB8IFwiRGlnaXQ2XCIgLT4gRGlnaXQ2XG4gICAgfCBcIkRpZ2l0N1wiIC0+IERpZ2l0N1xuICAgIHwgXCJEaWdpdDhcIiAtPiBEaWdpdDhcbiAgICB8IFwiRGlnaXQ5XCIgLT4gRGlnaXQ5XG4gICAgfCBcIk1pbnVzXCIgLT4gTWludXNcbiAgICB8IFwiRXF1YWxcIiAtPiBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFwiVGFiXCIgLT4gVGFiXG4gICAgfCBcIkVudGVyXCIgLT4gRW50ZXJcbiAgICB8IFwiU3BhY2VcIiAtPiBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IFwiRXNjYXBlXCIgLT4gRXNjYXBlXG4gICAgfCBcIkJhY2tzcGFjZVwiIC0+IEJhY2tzcGFjZVxuICAgIHwgXCJJbnNlcnRcIiAtPiBJbnNlcnRcbiAgICB8IFwiRGVsZXRlXCIgLT4gRGVsZXRlXG4gICAgfCBcIkNhcHNMb2NrXCIgLT4gQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgXCJCcmFja2V0TGVmdFwiIC0+IEJyYWNrZXRMZWZ0XG4gICAgfCBcIkJyYWNrZXRSaWdodFwiIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgXCJTZW1pY29sb25cIiAtPiBTZW1pY29sb25cbiAgICB8IFwiUXVvdGVcIiAtPiBRdW90ZVxuICAgIHwgXCJCYWNrcXVvdGVcIiAtPiBCYWNrcXVvdGVcbiAgICB8IFwiQmFja3NsYXNoXCIgLT4gQmFja3NsYXNoXG4gICAgfCBcIkNvbW1hXCIgLT4gQ29tbWFcbiAgICB8IFwiUGVyaW9kXCIgLT4gUGVyaW9kXG4gICAgfCBcIlNsYXNoXCIgLT4gU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBcIkYxXCIgLT4gRjFcbiAgICB8IFwiRjJcIiAtPiBGMlxuICAgIHwgXCJGM1wiIC0+IEYzXG4gICAgfCBcIkY0XCIgLT4gRjRcbiAgICB8IFwiRjVcIiAtPiBGNVxuICAgIHwgXCJGNlwiIC0+IEY2XG4gICAgfCBcIkY3XCIgLT4gRjdcbiAgICB8IFwiRjhcIiAtPiBGOFxuICAgIHwgXCJGOVwiIC0+IEY5XG4gICAgfCBcIkYxMFwiIC0+IEYxMFxuICAgIHwgXCJGMTFcIiAtPiBGMTFcbiAgICB8IFwiRjEyXCIgLT4gRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IFwiTnVtcGFkMFwiIC0+IE51bXBhZDBcbiAgICB8IFwiTnVtcGFkMVwiIC0+IE51bXBhZDFcbiAgICB8IFwiTnVtcGFkMlwiIC0+IE51bXBhZDJcbiAgICB8IFwiTnVtcGFkM1wiIC0+IE51bXBhZDNcbiAgICB8IFwiTnVtcGFkNFwiIC0+IE51bXBhZDRcbiAgICB8IFwiTnVtcGFkNVwiIC0+IE51bXBhZDVcbiAgICB8IFwiTnVtcGFkNlwiIC0+IE51bXBhZDZcbiAgICB8IFwiTnVtcGFkN1wiIC0+IE51bXBhZDdcbiAgICB8IFwiTnVtcGFkOFwiIC0+IE51bXBhZDhcbiAgICB8IFwiTnVtcGFkOVwiIC0+IE51bXBhZDlcbiAgICB8IFwiTnVtcGFkTXVsdGlwbHlcIiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgXCJOdW1wYWRTdWJ0cmFjdFwiIC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCBcIk51bXBhZEFkZFwiIC0+IE51bXBhZEFkZFxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgXCJOdW1wYWRFcXVhbFwiIC0+IE51bXBhZEVxdWFsXG4gICAgfCBcIk51bXBhZEVudGVyXCIgLT4gTnVtcGFkRW50ZXJcbiAgICB8IFwiTnVtcGFkRGl2aWRlXCIgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCBcIk51bUxvY2tcIiAtPiBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgXCJDb250cm9sTGVmdFwiIC0+IENvbnRyb2xMZWZ0XG4gICAgfCBcIkNvbnRyb2xSaWdodFwiIC0+IENvbnRyb2xSaWdodFxuICAgIHwgXCJNZXRhTGVmdFwiIC0+IE1ldGFMZWZ0XG4gICAgfCBcIk1ldGFSaWdodFwiIC0+IE1ldGFSaWdodFxuICAgIHwgXCJTaGlmdExlZnRcIiAtPiBTaGlmdExlZnRcbiAgICB8IFwiU2hpZnRSaWdodFwiIC0+IFNoaWZ0UmlnaHRcbiAgICB8IFwiQWx0TGVmdFwiIC0+IEFsdExlZnRcbiAgICB8IFwiQWx0UmlnaHRcIiAtPiBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IFwiQXJyb3dMZWZ0XCIgLT4gQXJyb3dMZWZ0XG4gICAgfCBcIkFycm93UmlnaHRcIiAtPiBBcnJvd1JpZ2h0XG4gICAgfCBcIkFycm93VXBcIiAtPiBBcnJvd1VwXG4gICAgfCBcIkFycm93RG93blwiIC0+IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFwiUGFnZVVwXCIgLT4gUGFnZVVwXG4gICAgfCBcIlBhZ2VEb3duXCIgLT4gUGFnZURvd25cbiAgICB8IFwiSG9tZVwiIC0+IEhvbWVcbiAgICB8IFwiRW5kXCIgLT4gRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFwiVm9sdW1lTXV0ZVwiIC0+IFZvbHVtZU11dGVcbiAgICB8IFwiVm9sdW1lRG93blwiIC0+IFZvbHVtZURvd25cbiAgICB8IFwiVm9sdW1lVXBcIiAtPiBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBcIk1lZGlhVHJhY2tQcmV2aW91c1wiIC0+IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgXCJNZWRpYVRyYWNrTmV4dFwiIC0+IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBcIk1lZGlhUGxheVBhdXNlXCIgLT4gTWVkaWFQbGF5UGF1c2VcbiAgICB8IFwiTWVkaWFTdG9wXCIgLT4gTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBcIkNvbnRleHRNZW51XCIgLT4gQ29udGV4dE1lbnVcbiAgICB8IFwiQnJvd3NlclNlYXJjaFwiIC0+IEJyb3dzZXJTZWFyY2hcbiAgICB8IFwiQnJvd3NlckhvbWVcIiAtPiBCcm93c2VySG9tZVxuICAgIHwgXCJCcm93c2VyRmF2b3JpdGVzXCIgLT4gQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgXCJCcm93c2VyUmVmcmVzaFwiIC0+IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBcIkJyb3dzZXJTdG9wXCIgLT4gQnJvd3NlclN0b3BcbiAgICB8IFwiQnJvd3NlckZvcndhcmRcIiAtPiBCcm93c2VyRm9yd2FyZFxuICAgIHwgXCJCcm93c2VyQmFja1wiIC0+IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgXCJPU0xlZnRcIiAtPiBPU0xlZnRcbiAgICB8IFwiT1NSaWdodFwiIC0+IE9TUmlnaHRcbiAgICB8IFwiU2Nyb2xsTG9ja1wiIC0+IFNjcm9sbExvY2tcbiAgICB8IFwiUHJpbnRTY3JlZW5cIiAtPiBQcmludFNjcmVlblxuICAgIHwgXCJJbnRsQmFja3NsYXNoXCIgLT4gSW50bEJhY2tzbGFzaFxuICAgIHwgXCJJbnRsWWVuXCIgLT4gSW50bFllblxuICAgIHwgXCJQYXVzZVwiIC0+IFBhdXNlXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdExlZnRcbiAgICB8IDE3IC0+IENvbnRyb2xMZWZ0XG4gICAgfCAxOCAtPiBBbHRMZWZ0XG4gICAgfCA5MSAtPiBNZXRhTGVmdFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX3JpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0UmlnaHRcbiAgICB8IDE3IC0+IENvbnRyb2xSaWdodFxuICAgIHwgMTggLT4gQWx0UmlnaHRcbiAgICB8IDkxIC0+IE1ldGFSaWdodFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX251bXBhZCA9IGZ1bmN0aW9uXG4gICAgfCA0NiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA0NSAtPiBOdW1wYWQwXG4gICAgfCAzNSAtPiBOdW1wYWQxXG4gICAgfCA0MCAtPiBOdW1wYWQyXG4gICAgfCAzNCAtPiBOdW1wYWQzXG4gICAgfCAzNyAtPiBOdW1wYWQ0XG4gICAgfCAxMiAtPiBOdW1wYWQ1XG4gICAgfCAzOSAtPiBOdW1wYWQ2XG4gICAgfCAzNiAtPiBOdW1wYWQ3XG4gICAgfCAzOCAtPiBOdW1wYWQ4XG4gICAgfCAzMyAtPiBOdW1wYWQ5XG4gICAgfCAxMyAtPiBOdW1wYWRFbnRlclxuICAgIHwgMTExIC0+IE51bXBhZERpdmlkZVxuICAgIHwgMTA3IC0+IE51bXBhZEFkZFxuICAgIHwgMTA5IC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCAxMDYgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IDExMCAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA5NiAtPiBOdW1wYWQwXG4gICAgfCA5NyAtPiBOdW1wYWQxXG4gICAgfCA5OCAtPiBOdW1wYWQyXG4gICAgfCA5OSAtPiBOdW1wYWQzXG4gICAgfCAxMDAgLT4gTnVtcGFkNFxuICAgIHwgMTAxIC0+IE51bXBhZDVcbiAgICB8IDEwMiAtPiBOdW1wYWQ2XG4gICAgfCAxMDMgLT4gTnVtcGFkN1xuICAgIHwgMTA0IC0+IE51bXBhZDhcbiAgICB8IDEwNSAtPiBOdW1wYWQ5XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbm9ybWFsID0gZnVuY3Rpb25cbiAgICB8IDI3IC0+IEVzY2FwZVxuICAgIHwgMTEyIC0+IEYxXG4gICAgfCAxMTMgLT4gRjJcbiAgICB8IDExNCAtPiBGM1xuICAgIHwgMTE1IC0+IEY0XG4gICAgfCAxMTYgLT4gRjVcbiAgICB8IDExNyAtPiBGNlxuICAgIHwgMTE4IC0+IEY3XG4gICAgfCAxMTkgLT4gRjhcbiAgICB8IDEyMCAtPiBGOVxuICAgIHwgMTIxIC0+IEYxMFxuICAgIHwgMTIyIC0+IEYxMVxuICAgIHwgMTIzIC0+IEYxMlxuICAgIHwgNDIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IDE0NSAtPiBTY3JvbGxMb2NrXG4gICAgfCAxOSAtPiBQYXVzZVxuICAgIHwgMTkyIC0+IEJhY2txdW90ZVxuICAgIHwgNDkgLT4gRGlnaXQxXG4gICAgfCA1MCAtPiBEaWdpdDJcbiAgICB8IDUxIC0+IERpZ2l0M1xuICAgIHwgNTIgLT4gRGlnaXQ0XG4gICAgfCA1MyAtPiBEaWdpdDVcbiAgICB8IDU0IC0+IERpZ2l0NlxuICAgIHwgNTUgLT4gRGlnaXQ3XG4gICAgfCA1NiAtPiBEaWdpdDhcbiAgICB8IDU3IC0+IERpZ2l0OVxuICAgIHwgNDggLT4gRGlnaXQwXG4gICAgfCAxODkgLT4gTWludXNcbiAgICB8IDE4NyAtPiBFcXVhbFxuICAgIHwgOCAtPiBCYWNrc3BhY2VcbiAgICB8IDkgLT4gVGFiXG4gICAgfCA4MSAtPiBLZXlRXG4gICAgfCA4NyAtPiBLZXlXXG4gICAgfCA2OSAtPiBLZXlFXG4gICAgfCA4MiAtPiBLZXlSXG4gICAgfCA4NCAtPiBLZXlUXG4gICAgfCA4OSAtPiBLZXlZXG4gICAgfCA4NSAtPiBLZXlVXG4gICAgfCA3MyAtPiBLZXlJXG4gICAgfCA3OSAtPiBLZXlPXG4gICAgfCA4MCAtPiBLZXlQXG4gICAgfCAyMTkgLT4gQnJhY2tldExlZnRcbiAgICB8IDIyMSAtPiBCcmFja2V0UmlnaHRcbiAgICB8IDIyMCAtPiBCYWNrc2xhc2hcbiAgICB8IDIwIC0+IENhcHNMb2NrXG4gICAgfCA2NSAtPiBLZXlBXG4gICAgfCA4MyAtPiBLZXlTXG4gICAgfCA2OCAtPiBLZXlEXG4gICAgfCA3MCAtPiBLZXlGXG4gICAgfCA3MSAtPiBLZXlHXG4gICAgfCA3MiAtPiBLZXlIXG4gICAgfCA3NCAtPiBLZXlKXG4gICAgfCA3NSAtPiBLZXlLXG4gICAgfCA3NiAtPiBLZXlMXG4gICAgfCAxODYgLT4gU2VtaWNvbG9uXG4gICAgfCAyMjIgLT4gUXVvdGVcbiAgICB8IDEzIC0+IEVudGVyXG4gICAgfCA5MCAtPiBLZXlaXG4gICAgfCA4OCAtPiBLZXlYXG4gICAgfCA2NyAtPiBLZXlDXG4gICAgfCA4NiAtPiBLZXlWXG4gICAgfCA2NiAtPiBLZXlCXG4gICAgfCA3OCAtPiBLZXlOXG4gICAgfCA3NyAtPiBLZXlNXG4gICAgfCAxODggLT4gQ29tbWFcbiAgICB8IDE5MCAtPiBQZXJpb2RcbiAgICB8IDE5MSAtPiBTbGFzaFxuICAgIHwgMzIgLT4gU3BhY2VcbiAgICB8IDkzIC0+IENvbnRleHRNZW51XG4gICAgfCA0NSAtPiBJbnNlcnRcbiAgICB8IDM2IC0+IEhvbWVcbiAgICB8IDMzIC0+IFBhZ2VVcFxuICAgIHwgNDYgLT4gRGVsZXRlXG4gICAgfCAzNSAtPiBFbmRcbiAgICB8IDM0IC0+IFBhZ2VEb3duXG4gICAgfCAzNyAtPiBBcnJvd0xlZnRcbiAgICB8IDQwIC0+IEFycm93RG93blxuICAgIHwgMzkgLT4gQXJyb3dSaWdodFxuICAgIHwgMzggLT4gQXJyb3dVcFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgbWFrZV91bmlkZW50aWZpZWQgXyA9IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBPcHRkZWYuY2FzZSB2YWx1ZSBtYWtlX3VuaWRlbnRpZmllZCBmXG4gICAgfCB2IC0+IHZcblxuICBsZXQgcnVuX25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gZiB2YWx1ZVxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IGdldF9rZXlfY29kZSBldnQgPSBldnQjIy5rZXlDb2RlXG5cbiAgbGV0IHRyeV9rZXlfbG9jYXRpb24gZXZ0ID1cbiAgICBtYXRjaCBldnQjIy5sb2NhdGlvbiB3aXRoXG4gICAgfCAxIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbGVmdFxuICAgIHwgMiAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX3JpZ2h0XG4gICAgfCAzIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbnVtcGFkXG4gICAgfCBfIC0+IG1ha2VfdW5pZGVudGlmaWVkXG5cbiAgbGV0ICggfD4gKSB4IGYgPSBmIHhcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBVbmlkZW50aWZpZWRcbiAgICB8PiB0cnlfbmV4dCBldnQjIy5jb2RlIHRyeV9jb2RlXG4gICAgfD4gdHJ5X2tleV9sb2NhdGlvbiBldnRcbiAgICB8PiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX25vcm1hbFxuXG4gIGxldCBvZl9rZXlfY29kZSA9IHRyeV9rZXlfY29kZV9ub3JtYWxcbmVuZFxuXG5tb2R1bGUgS2V5Ym9hcmRfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFVjaGFyLnQgb3B0aW9uXG5cbiAgbGV0IGNoYXJfb2ZfaW50IHZhbHVlID1cbiAgICBpZiAwIDwgdmFsdWUgdGhlbiB0cnkgU29tZSAoVWNoYXIub2ZfaW50IHZhbHVlKSB3aXRoIF8gLT4gTm9uZSBlbHNlIE5vbmVcblxuICBsZXQgZW1wdHlfc3RyaW5nIF8gPSBKcy5zdHJpbmcgXCJcIlxuXG4gIGxldCBub25lIF8gPSBOb25lXG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgbGV0IGtleSA9IE9wdGRlZi5nZXQgZXZ0IyMua2V5IGVtcHR5X3N0cmluZyBpblxuICAgIG1hdGNoIGtleSMjLmxlbmd0aCB3aXRoXG4gICAgfCAwIC0+IE9wdGRlZi5jYXNlIGV2dCMjLmNoYXJDb2RlIG5vbmUgY2hhcl9vZl9pbnRcbiAgICB8IDEgLT4gY2hhcl9vZl9pbnQgKGludF9vZl9mbG9hdCAoSnMudG9fZmxvYXQgKGtleSMjY2hhckNvZGVBdCAwKSkpXG4gICAgfCBfIC0+IE5vbmVcbmVuZFxuXG4oKioqKiopXG5cbmxldCBlbGVtZW50IDogI0RvbS5lbGVtZW50IHQgLT4gZWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG50eXBlIHRhZ2dlZEVsZW1lbnQgPVxuICB8IEEgb2YgYW5jaG9yRWxlbWVudCB0XG4gIHwgQXJlYSBvZiBhcmVhRWxlbWVudCB0XG4gIHwgQXVkaW8gb2YgYXVkaW9FbGVtZW50IHRcbiAgfCBCYXNlIG9mIGJhc2VFbGVtZW50IHRcbiAgfCBCbG9ja3F1b3RlIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgQm9keSBvZiBib2R5RWxlbWVudCB0XG4gIHwgQnIgb2YgYnJFbGVtZW50IHRcbiAgfCBCdXR0b24gb2YgYnV0dG9uRWxlbWVudCB0XG4gIHwgQ2FudmFzIG9mIGNhbnZhc0VsZW1lbnQgdFxuICB8IENhcHRpb24gb2YgdGFibGVDYXB0aW9uRWxlbWVudCB0XG4gIHwgQ29sIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgQ29sZ3JvdXAgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBEZWwgb2YgbW9kRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiXG50eXBlIHQgPSBpbnRcbmxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbmxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxubGV0IHRvX2ludCB4ID0geFxubGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuXG5sZXQgaW50ZXJzZWN0IHggeSA9IHggbGFuZCB5IDw+IDBcbmxldCAoKyspIHggeSA9IHggbG9yIHlcblxubGV0IGR1bW15ID0gLTFcbmxldCBpbmV4aXN0YW50ID0gMVxubGV0IGxldHRlciA9IDJcbmxldCBub3RfbGV0dGVyID0gNFxubGV0IG5ld2xpbmUgPSA4XG5sZXQgbGFzdG5ld2xpbmUgPSAxNlxubGV0IHNlYXJjaF9ib3VuZGFyeSA9IDMyXG5cbmxldCBmcm9tX2NoYXIgPSBmdW5jdGlvblxuICAoKiBTaG91bGQgbWF0Y2ggW2N3b3JkXSBkZWZpbml0aW9uICopXG4gIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcMTcwJyB8ICdcXDE4MScgfCAnXFwxODYnXG4gIHwgJ1xcMTkyJy4uJ1xcMjE0JyB8ICdcXDIxNicuLidcXDI0NicgfCAnXFwyNDgnLi4nXFwyNTUnIC0+XG4gICAgbGV0dGVyXG4gIHwgJ1xcbicgLT5cbiAgICBub3RfbGV0dGVyICsrIG5ld2xpbmVcbiAgfCBfIC0+XG4gICAgbm90X2xldHRlclxuIiwiKCoqIFZlcnkgc21hbGwgdG9vbGluZyBmb3IgZm9ybWF0IHByaW50ZXJzLiAqKVxuXG5pbmNsdWRlIEZvcm1hdFxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGxpc3QgPSBwcF9wcmludF9saXN0XG5sZXQgc3RyID0gcHBfcHJpbnRfc3RyaW5nXG5sZXQgc2V4cCBmbXQgcyBwcCB4ID0gZnByaW50ZiBmbXQgXCJAWzwzPiglc0AgJWEpQF1cIiBzIHBwIHhcbmxldCBwYWlyIHBwMSBwcDIgZm10ICh2MSx2MikgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgOyBwcDIgZm10IHYyXG5sZXQgdHJpcGxlIHBwMSBwcDIgcHAzIGZtdCAodjEsIHYyLCB2MykgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDIgZm10IHYyOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDMgZm10IHYzXG5sZXQgaW50ID0gcHBfcHJpbnRfaW50XG5sZXQgb3B0aW50IGZtdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaSAtPiBmcHJpbnRmIGZtdCBcIkAgJWRcIiBpXG5cbmxldCBxdW90ZSBmbXQgcyA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiBzXG5cbmxldCBwcF9vbGlzdCBwcF9lbGVtIGZtdCA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDM+W0AgJWFAIF1AXVwiXG4gICAgKHBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGZwcmludGYgZm10IFwiO0AgXCIpXG4gICAgICAgcHBfZWxlbSlcblxubGV0IHBwX3N0cl9saXN0ID0gcHBfb2xpc3QgcXVvdGVcblxubGV0IHRvX3RvX3N0cmluZyBwcCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIHBwIGZtdCB4O1xuICBCdWZmZXIuY29udGVudHMgYlxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBjID0gaW50XG50eXBlIHQgPSAoYyAqIGMpIGxpc3RcblxubGV0IHJlYyB1bmlvbiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBsJ1xuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyICsgMSA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6dW5pb24gciBsJ1xuICAgIGVsc2UgaWYgYzInICsgMSA8IGMxIHRoZW5cbiAgICAgIChjMScsIGMyJyk6OnVuaW9uIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIHVuaW9uIHIgKChtaW4gYzEgYzEnLCBjMicpOjpyJylcbiAgICBlbHNlXG4gICAgICB1bmlvbiAoKG1pbiBjMSBjMScsIGMyKTo6cikgcidcblxubGV0IHJlYyBpbnRlciBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IFtdXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICBpbnRlciByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBpbnRlciBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICAobWF4IGMxIGMxJywgYzIpOjppbnRlciByIGwnXG4gICAgZWxzZVxuICAgICAgKG1heCBjMSBjMScsIGMyJyk6OmludGVyIGwgcidcblxubGV0IHJlYyBkaWZmIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OmRpZmYgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgZGlmZiBsIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHInJyA9IGlmIGMyJyA8IGMyIHRoZW4gKGMyJyArIDEsIGMyKSA6OiByIGVsc2UgciBpblxuICAgICAgaWYgYzEgPCBjMScgdGhlblxuICAgICAgICAoYzEsIGMxJyAtIDEpOjpkaWZmIHInJyByJ1xuICAgICAgZWxzZVxuICAgICAgICBkaWZmIHInJyByJ1xuXG5sZXQgc2luZ2xlIGMgPSBbYywgY11cblxubGV0IGFkZCBjIGwgPSB1bmlvbiAoc2luZ2xlIGMpIGxcblxubGV0IHNlcSBjIGMnID0gaWYgYyA8PSBjJyB0aGVuIFtjLCBjJ10gZWxzZSBbYycsIGNdXG5cbmxldCByZWMgb2Zmc2V0IG8gbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAgICAgICAgLT4gW11cbiAgfCAoYzEsIGMyKSA6OiByIC0+IChjMSArIG8sIGMyICsgbykgOjogb2Zmc2V0IG8gclxuXG5sZXQgZW1wdHkgPSBbXVxuXG5sZXQgcmVjIG1lbSAoYyA6IGludCkgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICAgIFtdICAgICAgICAgICAgICAtPiBmYWxzZVxuICB8IChjMSwgYzIpIDo6IHJlbSAtPiBpZiBjIDw9IGMyIHRoZW4gYyA+PSBjMSBlbHNlIG1lbSBjIHJlbVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG5cbmxldCByZWMgaGFzaF9yZWMgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAtPiAwXG4gIHwgKGksIGopOjpyIC0+IGkgKyAxMyAqIGogKyAyNTcgKiBoYXNoX3JlYyByXG5sZXQgaGFzaCBsID0gKGhhc2hfcmVjIGwpIGxhbmQgMHgzRkZGRkZGRlxuXG4oKioqKilcblxubGV0IHByaW50X29uZSBjaCAoYzEsIGMyKSA9XG4gIGlmIGMxID0gYzIgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWRcIiBjMVxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGMxIGMyXG5cbmxldCBwcCA9IEZtdC5saXN0IHByaW50X29uZVxuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKHgsIHkpOjp4cyAtPlxuICAgIGYgeCB5O1xuICAgIGl0ZXIgeHMgIH5mXG5cbmxldCBvbmVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgW2ksIGpdIHdoZW4gaSA9IGogLT4gU29tZSBpXG4gIHwgXyAtPiBOb25lXG5cblxubW9kdWxlIENTZXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50ICogKGludCAqIGludCkgbGlzdFxuICAgIGxldCBjb21wYXJlIChpLCB1KSAoaiwgdikgPVxuICAgICAgbGV0IGMgPSBjb21wYXJlIGkgaiBpblxuICAgICAgaWYgYyA8PiAwXG4gICAgICB0aGVuIGNcbiAgICAgIGVsc2UgY29tcGFyZSB1IHZcbiAgZW5kKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gTGlzdC5mb2xkX3JpZ2h0IGYgdCBpbml0XG5cbmxldCBjc2luZ2xlIGMgPSBzaW5nbGUgKENoYXIuY29kZSBjKVxuXG5sZXQgY2FueSA9IFswLCAyNTVdXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHJlYyBwcmVwZW5kIHMgeCBsID1cbiAgbWF0Y2ggcywgbCB3aXRoXG4gIHwgW10sIF8gLT4gbFxuICB8IF9yLCBbXSAtPiBbXVxuICB8IChfYywgYycpIDo6IHIsIChbZCwgX2QnXSwgX3gnKSA6OiBfcicgd2hlbiBjJyA8IGQgLT4gcHJlcGVuZCByIHggbFxuICB8IChjLCBjJykgOjogciwgKFtkLCBkJ10sIHgnKSA6OiByJyAtPlxuICAgIGlmIGMgPD0gZCB0aGVuIGJlZ2luXG4gICAgICBpZiBjJyA8IGQnXG4gICAgICB0aGVuIChbZCwgYyddLCB4IEAgeCcpIDo6IHByZXBlbmQgciB4ICgoW2MnICsgMSwgZCddLCB4JykgOjogcicpXG4gICAgICBlbHNlIChbZCwgZCddLCB4IEAgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGMgPiBkJ1xuICAgICAgdGhlbiAoW2QsIGQnXSwgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgICBlbHNlIChbZCwgYyAtIDFdLCB4JykgOjogcHJlcGVuZCBzIHggKChbYywgZCddLCB4JykgOjogcicpXG4gICAgZW5kXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHBpY2sgPSBmdW5jdGlvblxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiUmVfY3NldC5waWNrXCJcbiAgfCAoeCwgXyk6Ol8gLT4geFxuIiwiXG5tb2R1bGUgUG1hcmsgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG4gIGxldCByID0gcmVmIDBcbiAgbGV0IGdlbiAoKSA9IGluY3IgciA7ICFyXG5cbiAgbGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kXG5cbmluY2x1ZGUgUG1hcmtcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZShQbWFyaylcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgc2VtID0gWyBgTG9uZ2VzdCB8IGBTaG9ydGVzdCB8IGBGaXJzdCBdXG5cbnR5cGUgcmVwX2tpbmQgPSBbIGBHcmVlZHkgfCBgTm9uX2dyZWVkeSBdXG5cbnR5cGUgbWFyayA9IGludFxudHlwZSBpZHggPSBpbnRcblxudHlwZSBleHByID0geyBpZCA6IGludDsgZGVmIDogZGVmIH1cblxuYW5kIGRlZiA9XG4gICAgQ3N0IG9mIENzZXQudFxuICB8IEFsdCBvZiBleHByIGxpc3RcbiAgfCBTZXEgb2Ygc2VtICogZXhwciAqIGV4cHJcbiAgfCBFcHNcbiAgfCBSZXAgb2YgcmVwX2tpbmQgKiBzZW0gKiBleHByXG4gIHwgTWFyayBvZiBpbnRcbiAgfCBFcmFzZSBvZiBpbnQgKiBpbnRcbiAgfCBCZWZvcmUgb2YgQ2F0ZWdvcnkudFxuICB8IEFmdGVyIG9mIENhdGVnb3J5LnRcbiAgfCBQbWFyayBvZiBQbWFyay50XG5cbmxldCBoYXNoX2NvbWJpbmUgaCBhY2N1ID0gYWNjdSAqIDY1NTk5ICsgaFxuXG5tb2R1bGUgTWFya3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1hcmtzIDogKGludCAqIGludCkgbGlzdFxuICAgIDsgcG1hcmtzIDogUG1hcmsuU2V0LnQgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWFya3MgPSBbXSA7IHBtYXJrcyA9IFBtYXJrLlNldC5lbXB0eSB9XG5cbiAgbGV0IHJlYyBtZXJnZV9tYXJrc19vZmZzZXQgb2xkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBvbGRcbiAgICB8IChpLCB2KSA6OiByZW0gLT5cbiAgICAgIGxldCBudycgPSBtZXJnZV9tYXJrc19vZmZzZXQgKExpc3QucmVtb3ZlX2Fzc3EgaSBvbGQpIHJlbSBpblxuICAgICAgaWYgdiA9IC0yIHRoZW5cbiAgICAgICAgbncnXG4gICAgICBlbHNlXG4gICAgICAgIChpLCB2KSA6OiBudydcblxuICBsZXQgbWVyZ2Ugb2xkIG53ID1cbiAgICB7IG1hcmtzID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZC5tYXJrcyBudy5tYXJrc1xuICAgIDsgcG1hcmtzID0gUG1hcmsuU2V0LnVuaW9uIG9sZC5wbWFya3MgbncucG1hcmtzIH1cblxuICBsZXQgcmVjIGhhc2hfbWFya3Nfb2Zmc2V0IGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAgICAgICAgICAtPiBhY2N1XG4gICAgfCAoYSwgaSkgOjogciAtPiBoYXNoX21hcmtzX29mZnNldCByIChoYXNoX2NvbWJpbmUgYSAoaGFzaF9jb21iaW5lIGkgYWNjdSkpXG5cbiAgbGV0IGhhc2ggbSBhY2N1ID1cbiAgICBoYXNoX21hcmtzX29mZnNldCBtLm1hcmtzIChoYXNoX2NvbWJpbmUgKEhhc2h0YmwuaGFzaCBtLnBtYXJrcykgYWNjdSlcblxuICBsZXQgcmVjIG1hcmtzX3NldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgICB8IChhLCAtMSkgOjogcmVtIC0+XG4gICAgICAoYSwgaWR4KSA6OiBtYXJrc19zZXRfaWR4IGlkeCByZW1cbiAgICB8IG1hcmtzIC0+XG4gICAgICBtYXJrc1xuXG4gIGxldCBtYXJrc19zZXRfaWR4IG1hcmtzIGlkeCA9XG4gICAgeyBtYXJrcyB3aXRoIG1hcmtzID0gbWFya3Nfc2V0X2lkeCBpZHggbWFya3MubWFya3MgfVxuXG4gIGxldCBwcF9tYXJrcyBjaCB0ID1cbiAgICBtYXRjaCB0Lm1hcmtzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICAgIHwgKGEsIGkpIDo6IHIgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBhIGk7XG4gICAgICBMaXN0Lml0ZXIgKGZ1biAoYSwgaSkgLT4gRm9ybWF0LmZwcmludGYgY2ggXCIgJWQtJWRcIiBhIGkpIHJcbmVuZFxuXG4oKioqKilcblxubGV0IHBwX3NlbSBjaCBrID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBjaFxuICAgIChtYXRjaCBrIHdpdGhcbiAgICAgICBgU2hvcnRlc3QgLT4gXCJzaG9ydFwiXG4gICAgIHwgYExvbmdlc3QgIC0+IFwibG9uZ1wiXG4gICAgIHwgYEZpcnN0ICAgIC0+IFwiZmlyc3RcIilcblxuXG5sZXQgcHBfcmVwX2tpbmQgZm10ID0gZnVuY3Rpb25cbiAgfCBgR3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiR3JlZWR5XCJcbiAgfCBgTm9uX2dyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbl9ncmVlZHlcIlxuXG5sZXQgcmVjIHBwIGNoIGUgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbWF0Y2ggZS5kZWYgd2l0aFxuICAgIENzdCBsIC0+XG4gICAgc2V4cCBjaCBcImNzdFwiIENzZXQucHAgbDtcbiAgfCBBbHQgbCAtPlxuICAgIHNleHAgY2ggXCJhbHRcIiAobGlzdCBwcCkgbFxuICB8IFNlcSAoaywgZSwgZScpIC0+XG4gICAgc2V4cCBjaCBcInNlcVwiICh0cmlwbGUgcHBfc2VtIHBwIHBwKSAoaywgZSwgZScpXG4gIHwgRXBzIC0+XG4gICAgc3RyIGNoIFwiZXBzXCJcbiAgfCBSZXAgKF9yaywgaywgZSkgLT5cbiAgICBzZXhwIGNoIFwicmVwXCIgKHBhaXIgcHBfc2VtIHBwKSAoaywgZSlcbiAgfCBNYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwibWFya1wiIGludCBpXG4gIHwgUG1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJwbWFya1wiIGludCAoaSA6PiBpbnQpXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgc2V4cCBjaCBcImVyYXNlXCIgKHBhaXIgaW50IGludCkgKGIsIGUpXG4gIHwgQmVmb3JlIGMgLT5cbiAgICBzZXhwIGNoIFwiYmVmb3JlXCIgQ2F0ZWdvcnkucHAgY1xuICB8IEFmdGVyIGMgLT5cbiAgICBzZXhwIGNoIFwiYWZ0ZXJcIiBDYXRlZ29yeS5wcCBjXG5cblxuKCoqKiopXG5cbmxldCByZWMgZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBOb25lXG4gIHwgeCA6OiByIC0+XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIE5vbmUgICAgICAgICAgLT4gZmlyc3QgZiByXG4gICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlc1xuXG4oKioqKilcblxudHlwZSBpZHMgPSBpbnQgcmVmXG5sZXQgY3JlYXRlX2lkcyAoKSA9IHJlZiAwXG5cbmxldCBlcHNfZXhwciA9IHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuXG5sZXQgbWtfZXhwciBpZHMgZGVmID1cbiAgaW5jciBpZHM7XG4gIHsgaWQgPSAhaWRzOyBkZWYgPSBkZWYgfVxuXG5sZXQgZW1wdHkgaWRzID0gbWtfZXhwciBpZHMgKEFsdCBbXSlcblxubGV0IGNzdCBpZHMgcyA9XG4gIGlmIENzZXQuaXNfZW1wdHkgc1xuICB0aGVuIGVtcHR5IGlkc1xuICBlbHNlIG1rX2V4cHIgaWRzIChDc3QgcylcblxubGV0IGFsdCBpZHMgPSBmdW5jdGlvblxuICB8IFtdICAtPiBlbXB0eSBpZHNcbiAgfCBbY10gLT4gY1xuICB8IGwgICAtPiBta19leHByIGlkcyAoQWx0IGwpXG5cbmxldCBzZXEgaWRzIGtpbmQgeCB5ID1cbiAgbWF0Y2ggeC5kZWYsIHkuZGVmIHdpdGhcbiAgICBBbHQgW10sIF8gICAgICAgICAgICAgICAgIC0+IHhcbiAgfCBfLCBBbHQgW10gICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBFcHMsIF8gICAgICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBfLCBFcHMgd2hlbiBraW5kID0gYEZpcnN0IC0+IHhcbiAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgIC0+IG1rX2V4cHIgaWRzIChTZXEgKGtpbmQsIHgsIHkpKVxuXG5sZXQgaXNfZXBzIGV4cHIgPVxuICBtYXRjaCBleHByLmRlZiB3aXRoXG4gIHwgRXBzIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCBlcHMgaWRzID0gbWtfZXhwciBpZHMgRXBzXG5cbmxldCByZXAgaWRzIGtpbmQgc2VtIHggPSBta19leHByIGlkcyAoUmVwIChraW5kLCBzZW0sIHgpKVxuXG5sZXQgbWFyayBpZHMgbSA9IG1rX2V4cHIgaWRzIChNYXJrIG0pXG5cbmxldCBwbWFyayBpZHMgaSA9IG1rX2V4cHIgaWRzIChQbWFyayBpKVxuXG5sZXQgZXJhc2UgaWRzIG0gbScgPSBta19leHByIGlkcyAoRXJhc2UgKG0sIG0nKSlcblxubGV0IGJlZm9yZSBpZHMgYyA9IG1rX2V4cHIgaWRzIChCZWZvcmUgYylcblxubGV0IGFmdGVyIGlkcyBjID0gbWtfZXhwciBpZHMgKEFmdGVyIGMpXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlbmFtZSBpZHMgeCA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgXyB8IEVwcyB8IE1hcmsgXyB8IFBtYXJrIF8gfCBFcmFzZSBfIHwgQmVmb3JlIF8gfCBBZnRlciBfIC0+XG4gICAgbWtfZXhwciBpZHMgeC5kZWZcbiAgfCBBbHQgbCAtPlxuICAgIG1rX2V4cHIgaWRzIChBbHQgKExpc3QubWFwIChyZW5hbWUgaWRzKSBsKSlcbiAgfCBTZXEgKGssIHksIHopIC0+XG4gICAgbWtfZXhwciBpZHMgKFNlcSAoaywgcmVuYW1lIGlkcyB5LCByZW5hbWUgaWRzIHopKVxuICB8IFJlcCAoZywgaywgeSkgLT5cbiAgICBta19leHByIGlkcyAoUmVwIChnLCBrLCByZW5hbWUgaWRzIHkpKVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG50eXBlIG1hcmtfaW5mb3MgPSBpbnQgYXJyYXlcbnR5cGUgc3RhdHVzID0gRmFpbGVkIHwgTWF0Y2ggb2YgbWFya19pbmZvcyAqIFBtYXJrLlNldC50IHwgUnVubmluZ1xuXG5tb2R1bGUgRSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVFNlcSBvZiB0IGxpc3QgKiBleHByICogc2VtXG4gICAgfCBURXhwIG9mIE1hcmtzLnQgKiBleHByXG4gICAgfCBUTWF0Y2ggb2YgTWFya3MudFxuXG4gIGxldCByZWMgZXF1YWwgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IFRTZXEgKGwxJywgZTEsIF8pIDo6IHIxLCBUU2VxIChsMicsIGUyLCBfKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBlcXVhbCBsMScgbDInICYmIGVxdWFsIHIxIHIyXG4gICAgfCBURXhwIChtYXJrczEsIGUxKSA6OiByMSwgVEV4cCAobWFya3MyLCBlMikgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBUTWF0Y2ggbWFya3MxIDo6IHIxLCBUTWF0Y2ggbWFya3MyIDo6IHIyIC0+XG4gICAgICBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IHJlYyBoYXNoIGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYWNjdVxuICAgIHwgVFNlcSAobCcsIGUsIF8pIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MTcyYTFiY2UgKGhhc2hfY29tYmluZSBlLmlkIChoYXNoIGwnIGFjY3UpKSlcbiAgICB8IFRFeHAgKG1hcmtzLCBlKSA6OiByIC0+XG4gICAgICBoYXNoIHJcbiAgICAgICAgKGhhc2hfY29tYmluZSAweDJiNGMwZDc3IChoYXNoX2NvbWJpbmUgZS5pZCAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSkpXG4gICAgfCBUTWF0Y2ggbWFya3MgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxYzIwNWFkNSAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSlcblxuICBsZXQgdGV4cCBtYXJrcyB4ID0gVEV4cCAobWFya3MsIHgpXG5cbiAgbGV0IHRzZXEga2luZCB4IHkgcmVtID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gcmVtXG4gICAgfCBbVEV4cCAobWFya3MsIHtkZWYgPSBFcHMgOyBffSldIC0+IFRFeHAgKG1hcmtzLCB5KSA6OiByZW1cbiAgICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVFNlcSAoeCwgeSwga2luZCkgOjogcmVtXG5cbiAgbGV0IHJlYyBwcmludF9zdGF0ZV9yZWMgY2ggZSB5ID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IFRNYXRjaCBtYXJrcyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihNYXRjaEAgJWEpQF1cIiBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVFNlcSAobCcsIHgsIF9raW5kKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihTZXFAIFwiO1xuICAgICAgcHJpbnRfc3RhdGVfbHN0IGNoIGwnIHg7XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgJWEpQF1cIiBwcCB4XG4gICAgfCBURXhwIChtYXJrcywge2RlZiA9IEVwczsgX30pIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAIChlcHMpKUBdXCIgeS5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVEV4cCAobWFya3MsIHgpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAICVhKUBdXCIgeC5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrcyBwcCB4XG5cbiAgYW5kIHByaW50X3N0YXRlX2xzdCBjaCBsIHkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiKClcIlxuICAgIHwgZSA6OiByZW0gLT5cbiAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHk7XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCB8IFwiO1xuICAgICAgICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5KVxuICAgICAgICByZW1cblxuICBsZXQgcHAgY2ggdCA9IHByaW50X3N0YXRlX2xzdCBjaCBbdF0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBpZHg6IGlkeFxuICAgIDsgY2F0ZWdvcnk6IENhdGVnb3J5LnRcbiAgICA7IGRlc2M6IEUudCBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YXR1czogc3RhdHVzIG9wdGlvblxuICAgIDsgaGFzaDogaGFzaCB9XG5cbiAgbGV0IGR1bW15ID1cbiAgICB7IGlkeCA9IC0xXG4gICAgOyBjYXRlZ29yeSA9IENhdGVnb3J5LmR1bW15XG4gICAgOyBkZXNjID0gW11cbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSAtMSB9XG5cbiAgbGV0IGhhc2ggaWR4IGNhdCBkZXNjID1cbiAgICBFLmhhc2ggZGVzYyAoaGFzaF9jb21iaW5lIGlkeCAoaGFzaF9jb21iaW5lIChDYXRlZ29yeS50b19pbnQgY2F0KSAwKSkgbGFuZCAweDNGRkZGRkZGXG5cbiAgbGV0IG1rIGlkeCBjYXQgZGVzYyA9XG4gICAgeyBpZHhcbiAgICA7IGNhdGVnb3J5ID0gY2F0XG4gICAgOyBkZXNjXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gaGFzaCBpZHggY2F0IGRlc2N9XG5cbiAgbGV0IGNyZWF0ZSBjYXQgZSA9IG1rIDAgY2F0IFtFLlRFeHAgKE1hcmtzLmVtcHR5LCBlKV1cblxuICBsZXQgZXF1YWwgeCB5ID1cbiAgICAoeC5oYXNoIDogaW50KSA9IHkuaGFzaCAmJiAoeC5pZHggOiBpbnQpID0geS5pZHggJiZcbiAgICBDYXRlZ29yeS5lcXVhbCB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgJiYgRS5lcXVhbCB4LmRlc2MgeS5kZXNjXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICBsZXQgYyA9IGNvbXBhcmUgKHguaGFzaCA6IGludCkgeS5oYXNoIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICBsZXQgYyA9IENhdGVnb3J5LmNvbXBhcmUgeC5jYXRlZ29yeSB5LmNhdGVnb3J5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgY29tcGFyZSB4LmRlc2MgeS5kZXNjXG5cbiAgdHlwZSB0JyA9IHRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdCdcbiAgICAgIGxldCBlcXVhbCA9IGVxdWFsXG4gICAgICBsZXQgaGFzaCB0ID0gdC5oYXNoXG4gICAgZW5kKVxuZW5kXG5cbigqKioqIEZpbmQgYSBmcmVlIGluZGV4ICoqKiopXG5cbnR5cGUgd29ya2luZ19hcmVhID0gYm9vbCBhcnJheSByZWZcblxubGV0IGNyZWF0ZV93b3JraW5nX2FyZWEgKCkgPSByZWYgW3wgZmFsc2UgfF1cblxubGV0IGluZGV4X2NvdW50IHcgPSBBcnJheS5sZW5ndGggIXdcblxubGV0IHJlc2V0X3RhYmxlIGEgPSBBcnJheS5maWxsIGEgMCAoQXJyYXkubGVuZ3RoIGEpIGZhbHNlXG5cbmxldCByZWMgbWFya191c2VkX2luZGljZXMgdGJsID1cbiAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgfCBFLlRTZXEgKGwsIF8sIF8pIC0+IG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsXG4gICAgICB8IEUuVEV4cCAobWFya3MsIF8pXG4gICAgICB8IEUuVE1hdGNoIG1hcmtzIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIChfLCBpKSAtPiBpZiBpID49IDAgdGhlbiB0YmwuKGkpIDwtIHRydWUpXG4gICAgICAgICAgbWFya3MuTWFya3MubWFya3MpXG5cbmxldCByZWMgZmluZF9mcmVlIHRibCBpZHggbGVuID1cbiAgaWYgaWR4ID0gbGVuIHx8IG5vdCB0YmwuKGlkeCkgdGhlbiBpZHggZWxzZSBmaW5kX2ZyZWUgdGJsIChpZHggKyAxKSBsZW5cblxubGV0IGZyZWVfaW5kZXggdGJsX3JlZiBsID1cbiAgbGV0IHRibCA9ICF0YmxfcmVmIGluXG4gIHJlc2V0X3RhYmxlIHRibDtcbiAgbWFya191c2VkX2luZGljZXMgdGJsIGw7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdGJsIGluXG4gIGxldCBpZHggPSBmaW5kX2ZyZWUgdGJsIDAgbGVuIGluXG4gIGlmIGlkeCA9IGxlbiB0aGVuIHRibF9yZWYgOj0gQXJyYXkubWFrZSAoMiAqIGxlbikgZmFsc2U7XG4gIGlkeFxuXG4oKioqKiBDb21wdXRhdGlvbiBvZiB0aGUgbmV4dCBzdGF0ZSAqKioqKVxuXG5sZXQgcmVtb3ZlX21hdGNoZXMgPSBMaXN0LmZpbHRlciAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcblxubGV0IHJlYyBzcGxpdF9hdF9tYXRjaF9yZWMgbCcgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRS5UTWF0Y2ggXyA6OiByIC0+IChMaXN0LnJldiBsJywgcmVtb3ZlX21hdGNoZXMgcilcbiAgfCB4IDo6IHIgICAgICAgIC0+IHNwbGl0X2F0X21hdGNoX3JlYyAoeCA6OiBsJykgclxuXG5sZXQgc3BsaXRfYXRfbWF0Y2ggbCA9IHNwbGl0X2F0X21hdGNoX3JlYyBbXSBsXG5cbmxldCByZWMgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsIHkgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPlxuICAgIChbXSwgcHJldilcbiAgfCBFLlRNYXRjaCBfIGFzIHggOjogXyAtPiAoKiBUcnVuY2F0ZSBhZnRlciBmaXJzdCBtYXRjaCAqKVxuICAgIChbeF0sIHByZXYpXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIGxldCAobCcnLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwnIHggaW5cbiAgICBsZXQgKHInLCBwcmV2JycpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldicgciB5IGluXG4gICAgKEUudHNlcSBraW5kIGwnJyB4IHInLCBwcmV2JycpXG4gIHwgRS5URXhwIChfbWFya3MsIHtkZWYgPSBFcHM7IF99KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeS5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHkuaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG4gIHwgRS5URXhwIChfbWFya3MsIHgpIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB4LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeC5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcblxubGV0IHJlYyBzZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEUuVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICBFLlRNYXRjaCAoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgRS5UU2VxIChzZXRfaWR4IGlkeCBsJywgeCwga2luZCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVEV4cCAobWFya3MsIHgpIDo6IHIgLT5cbiAgICBFLlRFeHAgKChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCksIHgpIDo6IHNldF9pZHggaWR4IHJcblxubGV0IGZpbHRlcl9tYXJrcyBiIGUgbWFya3MgPVxuICB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IExpc3QuZmlsdGVyIChmdW4gKGksIF8pIC0+IGkgPCBiIHx8IGkgPiBlKSBtYXJrcy5NYXJrcy5tYXJrcyB9XG5cbmxldCByZWMgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICAoKkZvcm1hdC5lcHJpbnRmIFwiJWRALlwiIHguaWQ7KilcbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBzIC0+XG4gICAgaWYgQ3NldC5tZW0gYyBzIHRoZW4gRS50ZXhwIG1hcmtzIGVwc19leHByIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGxldCAoeScnLCBtYXJrcycpID1cbiAgICAgIG1hdGNoXG4gICAgICAgIGZpcnN0XG4gICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHknXG4gICAgICB3aXRoXG4gICAgICAgIE5vbmUgICAgICAgIC0+ICh5JywgbWFya3MpXG4gICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB5JywgbWFya3MnKVxuICAgIGluXG4gICAgYmVnaW4gbWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB5JycgeCAoRS5UTWF0Y2ggbWFya3MnIDo6IHJlbSlcbiAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeScnIHggcmVtXG4gICAgZW5kXG4gIHwgRXBzIC0+XG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IFBtYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MucG1hcmtzID0gUG1hcmsuU2V0LmFkZCBpIG1hcmtzLk1hcmtzLnBtYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgRS5UTWF0Y2ggKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpIDo6IHJlbVxuICB8IEJlZm9yZSBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBuZXh0X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFmdGVyIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IHByZXZfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG5cbmFuZCBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmFuZCBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeSB6IHJlbSA9XG4gIG1hdGNoXG4gICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHlcbiAgd2l0aFxuICAgIE5vbmUgLT5cbiAgICBFLnRzZXEga2luZCB5IHogcmVtXG4gIHwgU29tZSBtYXJrcyAtPlxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgYExvbmdlc3QgLT5cbiAgICAgIEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IHJlbSlcbiAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgelxuICAgICAgICAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogcmVtKVxuICAgIHwgYEZpcnN0IC0+XG4gICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgRS50c2VxIGtpbmQgeScgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiAoRS50c2VxIGtpbmQgeScnIHogcmVtKSlcblxubGV0IHJlYyBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICB4IDo6IHJlbVxuXG5hbmQgZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5sZXQgZGVsdGEgdGJsX3JlZiBuZXh0X2NhdCBjaGFyIHN0ID1cbiAgbGV0IHByZXZfY2F0ID0gc3QuU3RhdGUuY2F0ZWdvcnkgaW5cbiAgbGV0IChleHByJywgXykgPVxuICAgIHJlbW92ZV9kdXBsaWNhdGVzIFtdXG4gICAgICAoZGVsdGFfNCBjaGFyIH5uZXh0X2NhdCB+cHJldl9jYXQgc3QuU3RhdGUuZGVzYyBbXSlcbiAgICAgIGVwc19leHByIGluXG4gIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gIFN0YXRlLm1rIGlkeCBuZXh0X2NhdCBleHByJydcblxuKCoqKiopXG5cbmxldCByZWMgcmVkX3RyID0gZnVuY3Rpb25cbiAgfCBbXSB8IFtfXSBhcyBsIC0+XG4gICAgbFxuICB8ICgoczEsIHN0MSkgYXMgdHIxKSA6OiAoKHMyLCBzdDIpIGFzIHRyMikgOjogcmVtIC0+XG4gICAgaWYgU3RhdGUuZXF1YWwgc3QxIHN0MiB0aGVuXG4gICAgICByZWRfdHIgKChDc2V0LnVuaW9uIHMxIHMyLCBzdDEpIDo6IHJlbSlcbiAgICBlbHNlXG4gICAgICB0cjEgOjogcmVkX3RyICh0cjIgOjogcmVtKVxuXG5sZXQgc2ltcGxfdHIgbCA9XG4gIExpc3Quc29ydFxuICAgIChmdW4gKHMxLCBfKSAoczIsIF8pIC0+IGNvbXBhcmUgczEgczIpXG4gICAgKHJlZF90ciAoTGlzdC5zb3J0IChmdW4gKF8sIHN0MSkgKF8sIHN0MikgLT4gU3RhdGUuY29tcGFyZSBzdDEgc3QyKSBsKSlcblxuKCoqKiopXG5cbmxldCBwcmVwZW5kX2Rlcml2ID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIHgpIGwgLT4gQ3NldC5wcmVwZW5kIHMgeCBsKVxuXG5sZXQgcmVjIHJlc3RyaWN0IHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKHMnLCB4JykgOjogcmVtIC0+XG4gICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgdGhlbiByZXN0cmljdCBzIHJlbVxuICAgIGVsc2UgKHMnJywgeCcpIDo6IHJlc3RyaWN0IHMgcmVtXG5cbmxldCByZWMgcmVtb3ZlX21hcmtzIGIgZSByZW0gPVxuICBpZiBiID4gZSB0aGVuIHJlbSBlbHNlIHJlbW92ZV9tYXJrcyBiIChlIC0gMSkgKChlLCAtMikgOjogcmVtKVxuXG5sZXQgcmVjIHByZXBlbmRfbWFya3NfZXhwciBtID0gZnVuY3Rpb25cbiAgfCBFLlRTZXEgKGwsIGUnLCBzKSAtPiBFLlRTZXEgKHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsLCBlJywgcylcbiAgfCBFLlRFeHAgKG0nLCBlJykgICAtPiBFLlRFeHAgKE1hcmtzLm1lcmdlIG0gbScsIGUnKVxuICB8IEUuVE1hdGNoIG0nICAgICAgIC0+IEUuVE1hdGNoIChNYXJrcy5tZXJnZSBtIG0nKVxuXG5hbmQgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwgPVxuICBMaXN0Lm1hcCAocHJlcGVuZF9tYXJrc19leHByIG0pIGxcblxubGV0IHByZXBlbmRfbWFya3MgbSA9XG4gIExpc3QubWFwIChmdW4gKHMsIHgpIC0+IChzLCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0geCkpXG5cbmxldCByZWMgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gIHwgQ3N0IHMgLT5cbiAgICBDc2V0LnByZXBlbmQgcyBbRS50ZXhwIG1hcmtzIGVwc19leHByXSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHopIHJlbSAtPlxuICAgICAgICAgbGV0ICh6JywgbWFya3MnKSA9XG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgZmlyc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgICAgelxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgTm9uZSAgICAgICAgLT4gKHosIG1hcmtzKVxuICAgICAgICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB6LCBtYXJrcycpXG4gICAgICAgICBpblxuICAgICAgICAgQ3NldC5wcmVwZW5kIHNcbiAgICAgICAgICAgKG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeicgeCBbRS5UTWF0Y2ggbWFya3MnXVxuICAgICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB6JyB4IFtdKVxuICAgICAgICAgICByZW0pXG4gICAgICB5JyByZW1cbiAgfCBFcHMgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAoKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgUG1hcmsgXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzXG4gICAgICBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAocmVtb3ZlX21hcmtzIGIgZSAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgQmVmb3JlIGNhdCcgLT5cbiAgICBDc2V0LnByZXBlbmQgKExpc3QuYXNzcSBjYXQnIGNhdGVnb3JpZXMpIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgQWZ0ZXIgY2F0JyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBjYXQgY2F0JyB0aGVuIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW0gZWxzZSByZW1cblxuYW5kIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHIgcmVtKVxuXG5hbmQgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHkgeiByZW0gPVxuICBpZlxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIChfcywgeGwpIC0+XG4gICAgICAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgeGwpXG4gICAgICB5XG4gIHRoZW5cbiAgICBsZXQgeicgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIE1hcmtzLmVtcHR5IGNhdCB6IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB5KSByZW0gLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgIHlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgICAgTm9uZSAtPlxuICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeSB6IFtdKSByZW1cbiAgICAgICAgIHwgU29tZSBtYXJrcyAtPlxuICAgICAgICAgICBsZXQgeicnID0gcHJlcGVuZF9tYXJrcyBtYXJrcyB6JyBpblxuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICBgTG9uZ2VzdCAtPlxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIHJlbSlcbiAgICAgICAgICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSByZW0pXG4gICAgICAgICAgIHwgYEZpcnN0IC0+XG4gICAgICAgICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknJyB6IFtdKSByZW0pKSlcbiAgICAgIHkgcmVtXG4gIGVsc2VcbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHhsKSByZW0gLT4gQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHhsIHogW10pIHJlbSkgeSByZW1cblxubGV0IHJlYyBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFt4XSByZW1cblxuYW5kIGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHIgcmVtKVxuXG5sZXQgZGVyaXYgdGJsX3JlZiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdCA9XG4gIGxldCBkZXIgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0LlN0YXRlLmNhdGVnb3J5IHN0LlN0YXRlLmRlc2NcbiAgICAgIFsoYWxsX2NoYXJzLCBbXSldIGluXG4gIHNpbXBsX3RyIChcbiAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgZXhwcikgcmVtIC0+XG4gICAgICAgIGxldCAoZXhwcicsIF8pID0gcmVtb3ZlX2R1cGxpY2F0ZXMgW10gZXhwciBlcHNfZXhwciBpblxuKCpcbkZvcm1hdC5lcHJpbnRmIFwiQFs8Mz5AWyVhQF06ICVhIC8gJWFAXUAuXCIgQ3NldC5wcmludCBzIHByaW50X3N0YXRlIGV4cHIgcHJpbnRfc3RhdGUgZXhwcic7XG4qKVxuICAgICAgICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gICAgICAgIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAoY2F0JywgcycpIHJlbSAtPlxuICAgICAgICAgICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgICAgICAgICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICAgICAgICAgIHRoZW4gcmVtXG4gICAgICAgICAgICBlbHNlIChzJycsIFN0YXRlLm1rIGlkeCBjYXQnIGV4cHInJykgOjogcmVtKVxuICAgICAgICAgIGNhdGVnb3JpZXMgcmVtKSBkZXIgW10pXG5cbigqKioqKVxuXG5sZXQgZmxhdHRlbl9tYXRjaCBtID1cbiAgbGV0IG1hID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtYSAoaSwgXykgLT4gbWF4IG1hIGkpICgtMSkgbSBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobWEgKyAxKSAoLTEpIGluXG4gIExpc3QuaXRlciAoZnVuIChpLCB2KSAtPiByZXMuKGkpIDwtIHYpIG07XG4gIHJlc1xuXG5sZXQgc3RhdHVzIHMgPVxuICBtYXRjaCBzLlN0YXRlLnN0YXR1cyB3aXRoXG4gICAgU29tZSBzdCAtPlxuICAgIHN0XG4gIHwgTm9uZSAtPlxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBzLlN0YXRlLmRlc2Mgd2l0aFxuICAgICAgICBbXSAgICAgICAgICAgICAgLT4gRmFpbGVkXG4gICAgICB8IEUuVE1hdGNoIG0gOjogXyAtPiBNYXRjaCAoZmxhdHRlbl9tYXRjaCBtLk1hcmtzLm1hcmtzLCBtLk1hcmtzLnBtYXJrcylcbiAgICAgIHwgXyAgICAgICAgICAgICAgIC0+IFJ1bm5pbmdcbiAgICBpblxuICAgIHMuU3RhdGUuc3RhdHVzIDwtIFNvbWUgc3Q7XG4gICAgc3RcbiIsIigqIEluIHJlYWxpdHksIHRoaXMgY2FuIHJlYWxseSBiZSByZXByZXNlbnRlZCBhcyBhIGJvb2wgYXJyYXkuXG5cbiAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBiZXN0IHRob3VnaHQgb2YgYXMgYSBsaXN0IG9mIGFsbCBjaGFycyBhbG9uZyB3aXRoIGFcbiAgIGZsYWc6XG5cbiAgIChhLCAwKSwgKGIsIDEpLCAoYywgMCksIChkLCAwKSwgLi4uXG5cbiAgIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGNvbG9yIGFyZSByZXByZXNlbnRlZCBieSBzZXF1bmNlcyBvZlxuICAgY2hhcmFjdGVycyB3aXRoIHRoZSBmbGFnIHNldCB0byAwLlxuKilcblxudHlwZSB0ID0gQnl0ZXMudFxuXG5sZXQgbWFrZSAoKSA9IEJ5dGVzLm1ha2UgMjU3ICdcXDAwMCdcblxubGV0IGZsYXR0ZW4gY20gPVxuICBsZXQgYyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGNvbG9yX3JlcHIgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCB2ID0gcmVmIDAgaW5cbiAgQnl0ZXMuc2V0IGMgMCAnXFwwMDAnO1xuICBCeXRlcy5zZXQgY29sb3JfcmVwciAwICdcXDAwMCc7XG4gIGZvciBpID0gMSB0byAyNTUgZG9cbiAgICBpZiBCeXRlcy5nZXQgY20gaSA8PiAnXFwwMDAnIHRoZW4gaW5jciB2O1xuICAgIEJ5dGVzLnNldCBjIGkgKENoYXIuY2hyICF2KTtcbiAgICBCeXRlcy5zZXQgY29sb3JfcmVwciAhdiAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYywgQnl0ZXMuc3ViX3N0cmluZyBjb2xvcl9yZXByIDAgKCF2ICsgMSksICF2ICsgMSlcblxuKCogbWFyayBhbGwgdGhlIGVuZHBvaW50cyBvZiB0aGUgaW50ZXJ2YWxzIG9mIHRoZSBjaGFyIHNldCB3aXRoIHRoZSAxIGJ5dGUgKilcbmxldCBzcGxpdCBzIGNtID1cbiAgQ3NldC5pdGVyIHMgfmY6KGZ1biBpIGogLT5cbiAgICAgIEJ5dGVzLnNldCBjbSBpICdcXDAwMSc7XG4gICAgICBCeXRlcy5zZXQgY20gKGogKyAxKSAnXFwwMDEnO1xuICAgIClcbiIsIigqIFJlc3VsdCBvZiBhIHN1Y2Nlc3NmdWwgbWF0Y2guICopXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtYXJrcyA6IEF1dG9tYXRhLm1hcmtfaW5mb3NcbiAgOyBwbWFya3MgOiBQbWFyay5TZXQudFxuICA7IGdwb3MgOiBpbnQgYXJyYXlcbiAgOyBnY291bnQgOiBpbnRcbiAgfVxuXG5sZXQgb2Zmc2V0IHQgaSA9XG4gIGlmIDIgKiBpICsgMSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gIGlmIG0xID0gLTEgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgKHAxLCBwMilcblxubGV0IGdldCB0IGkgPVxuICBsZXQgKHAxLCBwMikgPSBvZmZzZXQgdCBpIGluXG4gIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuXG5sZXQgc3RhcnQgc3VicyBpID0gZnN0IChvZmZzZXQgc3VicyBpKVxuXG5sZXQgc3RvcCBzdWJzIGkgPSBzbmQgKG9mZnNldCBzdWJzIGkpXG5cbmxldCB0ZXN0IHQgaSA9XG4gIGlmIDIgKiBpID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW5cbiAgICBmYWxzZVxuICBlbHNlXG4gICAgbGV0IGlkeCA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlkeCA8PiAtMVxuXG5sZXQgZ2V0X29wdCB0IGkgPVxuICBpZiB0ZXN0IHQgaVxuICB0aGVuIFNvbWUgKGdldCB0IGkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZHVtbXlfb2Zmc2V0ID0gKC0xLCAtMSlcblxubGV0IGFsbF9vZmZzZXQgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X29mZnNldCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIChwMSwgcDIpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZHVtbXlfc3RyaW5nID0gXCJcIlxuXG5sZXQgYWxsIHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9zdHJpbmcgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBwcCBmbXQgdCA9XG4gIGxldCBtYXRjaGVzID1cbiAgICBsZXQgb2Zmc2V0cyA9IGFsbF9vZmZzZXQgdCBpblxuICAgIGxldCBzdHJzID0gYWxsIHQgaW5cbiAgICBBcnJheS50b19saXN0IChcbiAgICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBzdHJzKSAoZnVuIGkgLT4gc3Rycy4oaSksIG9mZnNldHMuKGkpKVxuICAgICkgaW5cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCBwcF9tYXRjaCBmbXQgKHN0ciwgKHN0YXJ0LCBzdG9wKSkgPVxuICAgIGZwcmludGYgZm10IFwiQFsoJXMgKCVkICVkKSlAXVwiIHN0ciBzdGFydCBzdG9wIGluXG4gIHNleHAgZm10IFwiR3JvdXBcIiAobGlzdCBwcF9tYXRjaCkgbWF0Y2hlc1xuXG5sZXQgbmJfZ3JvdXBzIHQgPSB0Lmdjb3VudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubGV0IHJlYyBpdGVyIG4gZiB2ID0gaWYgbiA9IDAgdGhlbiB2IGVsc2UgaXRlciAobiAtIDEpIGYgKGYgdilcblxuKCoqKiopXG5cbmxldCB1bmtub3duID0gLTJcbmxldCBicmVhayA9IC0zXG5cbnR5cGUgbWF0Y2hfaW5mbyA9XG4gIHwgTWF0Y2ggb2YgR3JvdXAudFxuICB8IEZhaWxlZFxuICB8IFJ1bm5pbmcgb2YgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIDogaW50IH1cblxudHlwZSBzdGF0ZSA9XG4gIHsgaWR4IDogaW50O1xuICAgICgqIEluZGV4IG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBwb3NpdGlvbiB0YWJsZS5cbiAgICAgICBOb3QgeWV0IGNvbXB1dGVkIHRyYW5zaXRpb25zIHBvaW50IHRvIGEgZHVtbXkgc3RhdGUgd2hlcmVcbiAgICAgICBbaWR4XSBpcyBzZXQgdG8gW3Vua25vd25dO1xuICAgICAgIElmIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdIGZvciBzdGF0ZXMgdGhhdCBlaXRoZXIgYWx3YXlzXG4gICAgICAgc3VjY2VlZCBvciBhbHdheXMgZmFpbC4gKilcbiAgICByZWFsX2lkeCA6IGludDtcbiAgICAoKiBUaGUgcmVhbCBpbmRleCwgaW4gY2FzZSBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSAqKVxuICAgIG5leHQgOiBzdGF0ZSBhcnJheTtcbiAgICAoKiBUcmFuc2l0aW9uIHRhYmxlLCBpbmRleGVkIGJ5IGNvbG9yICopXG4gICAgbXV0YWJsZSBmaW5hbCA6XG4gICAgICAoQ2F0ZWdvcnkudCAqXG4gICAgICAgKEF1dG9tYXRhLmlkeCAqIEF1dG9tYXRhLnN0YXR1cykpIGxpc3Q7XG4gICAgKCogTWFwcGluZyBmcm9tIHRoZSBjYXRlZ29yeSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9cbiAgICAgICAtIHRoZSBpbmRleCB3aGVyZSB0aGUgbmV4dCBwb3NpdGlvbiBzaG91bGQgYmUgc2F2ZWRcbiAgICAgICAtIHBvc3NpYmx5LCB0aGUgbGlzdCBvZiBtYXJrcyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMpXG4gICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBiZXN0IG1hdGNoICopXG4gICAgZGVzYyA6IEF1dG9tYXRhLlN0YXRlLnRcbiAgICAoKiBEZXNjcmlwdGlvbiBvZiB0aGlzIHN0YXRlIG9mIHRoZSBhdXRvbWF0YSAqKSB9XG5cbigqIEF1dG9tYXRhIChjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24pICopXG50eXBlIHJlID1cbiAgeyBpbml0aWFsIDogQXV0b21hdGEuZXhwcjtcbiAgICAoKiBUaGUgd2hvbGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3N0YXRlcyA6IChDYXRlZ29yeS50ICogc3RhdGUpIGxpc3Q7XG4gICAgKCogSW5pdGlhbCBzdGF0ZXMsIGluZGV4ZWQgYnkgaW5pdGlhbCBjYXRlZ29yeSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAqKVxuICAgIGNvbG9yX3JlcHIgOiBzdHJpbmc7XG4gICAgKCogVGFibGUgZnJvbSBjb2xvcnMgdG8gb25lIGNoYXJhY3RlciBvZiB0aGlzIGNvbG9yICopXG4gICAgbmNvbG9yIDogaW50O1xuICAgICgqIE51bWJlciBvZiBjb2xvcnMuICopXG4gICAgbG5sIDogaW50O1xuICAgICgqIENvbG9yIG9mIHRoZSBsYXN0IG5ld2xpbmUuIC0xIGlmIHVubmVjZXNzYXJ5ICopXG4gICAgdGJsIDogQXV0b21hdGEud29ya2luZ19hcmVhO1xuICAgICgqIFRlbXBvcmFyeSB0YWJsZSB1c2VkIHRvIGNvbXB1dGUgdGhlIGZpcnN0IGF2YWlsYWJsZSBpbmRleFxuICAgICAgIHdoZW4gY29tcHV0aW5nIGEgbmV3IHN0YXRlICopXG4gICAgc3RhdGVzIDogc3RhdGUgQXV0b21hdGEuU3RhdGUuVGFibGUudDtcbiAgICAoKiBTdGF0ZXMgb2YgdGhlIGRldGVybWluaXN0aWMgYXV0b21hdGEgKilcbiAgICBncm91cF9uYW1lcyA6IChzdHJpbmcgKiBpbnQpIGxpc3Q7XG4gICAgKCogTmFtZWQgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBncm91cF9jb3VudCA6IGludFxuICAgICgqIE51bWJlciBvZiBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKSB9XG5cbmxldCBwcF9yZSBjaCByZSA9IEF1dG9tYXRhLnBwIGNoIHJlLmluaXRpYWxcblxubGV0IHByaW50X3JlID0gcHBfcmVcblxubGV0IGdyb3VwX2NvdW50IHJlID0gcmUuZ3JvdXBfY291bnRcblxubGV0IGdyb3VwX25hbWVzIHJlID0gcmUuZ3JvdXBfbmFtZXNcblxuKCogSW5mb3JtYXRpb24gdXNlZCBkdXJpbmcgbWF0Y2hpbmcgKilcbnR5cGUgaW5mbyA9XG4gIHsgcmUgOiByZTtcbiAgICAoKiBUaGUgYXV0b21hdGEgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKFt4LmNvbG9ycyA9IHgucmUuY29sb3JzXSlcbiAgICAgICBTaG9ydGN1dCB1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgbXV0YWJsZSBwb3NpdGlvbnMgOiBpbnQgYXJyYXk7XG4gICAgKCogQXJyYXkgb2YgbWFyayBwb3NpdGlvbnNcbiAgICAgICBUaGUgbWFyayBhcmUgb2ZmIGJ5IG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIHBvcyA6IGludDtcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggaXMgc3RhcnRlZCAqKVxuICAgIGxhc3QgOiBpbnRcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggc2hvdWxkIHN0b3AgKikgfVxuXG5cbigqKioqKVxuXG5sZXQgY2F0ZWdvcnkgcmUgfmNvbG9yID1cbiAgaWYgY29sb3IgPSAtMSB0aGVuXG4gICAgQ2F0ZWdvcnkuaW5leGlzdGFudFxuICAgICgqIFNwZWNpYWwgY2F0ZWdvcnkgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgZWxzZSBpZiBjb2xvciA9IHJlLmxubCB0aGVuXG4gICAgQ2F0ZWdvcnkuKGxhc3RuZXdsaW5lICsrIG5ld2xpbmUgKysgbm90X2xldHRlcilcbiAgZWxzZVxuICAgIENhdGVnb3J5LmZyb21fY2hhciAocmUuY29sb3JfcmVwci5bY29sb3JdKVxuXG4oKioqKilcblxubGV0IGR1bW15X25leHQgPSBbfHxdXG5cbmxldCB1bmtub3duX3N0YXRlID1cbiAgeyBpZHggPSB1bmtub3duOyByZWFsX2lkeCA9IDA7XG4gICAgbmV4dCA9IGR1bW15X25leHQ7IGZpbmFsID0gW107XG4gICAgZGVzYyA9IEF1dG9tYXRhLlN0YXRlLmR1bW15IH1cblxubGV0IG1rX3N0YXRlIG5jb2wgZGVzYyA9XG4gIGxldCBicmVha19zdGF0ZSA9XG4gICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIGRlc2Mgd2l0aFxuICAgIHwgQXV0b21hdGEuUnVubmluZyAtPiBmYWxzZVxuICAgIHwgQXV0b21hdGEuRmFpbGVkXG4gICAgfCBBdXRvbWF0YS5NYXRjaCBfIC0+IHRydWVcbiAgaW5cbiAgeyBpZHggPSBpZiBicmVha19zdGF0ZSB0aGVuIGJyZWFrIGVsc2UgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgcmVhbF9pZHggPSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICBuZXh0ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBkdW1teV9uZXh0IGVsc2UgQXJyYXkubWFrZSBuY29sIHVua25vd25fc3RhdGU7XG4gICAgZmluYWwgPSBbXTtcbiAgICBkZXNjIH1cblxubGV0IGZpbmRfc3RhdGUgcmUgZGVzYyA9XG4gIHRyeVxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmZpbmQgcmUuc3RhdGVzIGRlc2NcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBta19zdGF0ZSByZS5uY29sb3IgZGVzYyBpblxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmFkZCByZS5zdGF0ZXMgZGVzYyBzdDtcbiAgICBzdFxuXG4oKioqKiBNYXRjaCB3aXRoIG1hcmtzICoqKiopXG5cbmxldCBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgPVxuICBsZXQgZGVzYyA9IEF1dG9tYXRhLmRlbHRhIGluZm8ucmUudGJsIGNhdCBjb2xvciBzdC5kZXNjIGluXG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaW5mby5wb3NpdGlvbnMgaW5cbiAgaWYgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHggPSBsZW4gJiYgbGVuID4gMCB0aGVuIGJlZ2luXG4gICAgbGV0IHBvcyA9IGluZm8ucG9zaXRpb25zIGluXG4gICAgaW5mby5wb3NpdGlvbnMgPC0gQXJyYXkubWFrZSAoMiAqIGxlbikgMDtcbiAgICBBcnJheS5ibGl0IHBvcyAwIGluZm8ucG9zaXRpb25zIDAgbGVuXG4gIGVuZDtcbiAgZGVzY1xuXG5sZXQgdmFsaWRhdGUgaW5mbyAoczpzdHJpbmcpIH5wb3Mgc3QgPVxuICBsZXQgY29sb3IgPSBDaGFyLmNvZGUgKGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgaW5cbiAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnXG5cbmxldCByZWMgbG9vcCBpbmZvIHMgfnBvcyBzdCA9XG4gIGlmIHBvcyA8IGluZm8ubGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGxldCBpZHggPSBzdCcuaWR4IGluXG4gICAgaWYgaWR4ID49IDAgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gcG9zO1xuICAgICAgbG9vcCBpbmZvIHMgfnBvczoocG9zICsgMSkgc3QnXG4gICAgZW5kIGVsc2UgaWYgaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgICAgc3QnXG4gICAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wIGluZm8gcyB+cG9zIHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgcmVjIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdCA9XG4gIGlmIHBvcyA8IGxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBpZiBzdCcuaWR4ID49IDAgdGhlblxuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zOihwb3MgKyAxKSB+bGFzdCBzdCdcbiAgICBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdCdcbiAgICBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgZmluYWwgaW5mbyBzdCBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHN0LmZpbmFsXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0JyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjooLTEpIHN0IGluXG4gICAgbGV0IHJlcyA9IChzdCcuQXV0b21hdGEuU3RhdGUuaWR4LCBBdXRvbWF0YS5zdGF0dXMgc3QnKSBpblxuICAgIHN0LmZpbmFsIDwtIChjYXQsIHJlcykgOjogc3QuZmluYWw7XG4gICAgcmVzXG5cbmxldCBmaW5kX2luaXRpYWxfc3RhdGUgcmUgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCByZS5pbml0aWFsX3N0YXRlc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IGZpbmRfc3RhdGUgcmUgKEF1dG9tYXRhLlN0YXRlLmNyZWF0ZSBjYXQgcmUuaW5pdGlhbCkgaW5cbiAgICByZS5pbml0aWFsX3N0YXRlcyA8LSAoY2F0LCBzdCkgOjogcmUuaW5pdGlhbF9zdGF0ZXM7XG4gICAgc3RcblxubGV0IGdldF9jb2xvciByZSAoczpzdHJpbmcpIHBvcyA9XG4gIGlmIHBvcyA8IDAgdGhlblxuICAgIC0xXG4gIGVsc2VcbiAgICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGlmIHBvcyA+PSBzbGVuIHRoZW5cbiAgICAgIC0xXG4gICAgZWxzZSBpZiBwb3MgPSBzbGVuIC0gMSAmJiByZS5sbmwgPD4gLTEgJiYgcy5bcG9zXSA9ICdcXG4nIHRoZW5cbiAgICAgICgqIFNwZWNpYWwgY2FzZSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICAgICAgcmUubG5sXG4gICAgZWxzZVxuICAgICAgQ2hhci5jb2RlIHJlLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dXG5cbmxldCByZWMgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3VwcyA9XG4gIGxldCBzdCcgPSBzdC5uZXh0LihpbmZvLnJlLmxubCkgaW5cbiAgaWYgc3QnLmlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLmlkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgIGxldCBjb2xvciA9IGluZm8ucmUubG5sIGluXG4gICAgbGV0IHJlYWxfYyA9IENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlICdcXG4nXSBpblxuICAgIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICAgIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjpyZWFsX2Mgc3QgaW5cbiAgICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gICAgc3QubmV4dC4oY29sb3IpIDwtIHN0JztcbiAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzXG4gIGVuZFxuXG5sZXQgcmVjIHNjYW5fc3RyIGluZm8gKHM6c3RyaW5nKSBpbml0aWFsX3N0YXRlIH5ncm91cHMgPVxuICBsZXQgcG9zID0gaW5mby5wb3MgaW5cbiAgbGV0IGxhc3QgPSBpbmZvLmxhc3QgaW5cbiAgaWYgKGxhc3QgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICYmIGluZm8ucmUubG5sIDw+IC0xXG4gICAgICAmJiBsYXN0ID4gcG9zXG4gICAgICAmJiBTdHJpbmcuZ2V0IHMgKGxhc3QgLSAxKSA9ICdcXG4nKVxuICB0aGVuIGJlZ2luXG4gICAgbGV0IGluZm8gPSB7IGluZm8gd2l0aCBsYXN0ID0gbGFzdCAtIDEgfSBpblxuICAgIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgICBpZiBzdC5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdFxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zOihsYXN0IC0gMSkgc3Qgfmdyb3Vwc1xuICBlbmQgZWxzZSBpZiBncm91cHMgdGhlblxuICAgIGxvb3AgaW5mbyBzIH5wb3MgaW5pdGlhbF9zdGF0ZVxuICBlbHNlXG4gICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IGluaXRpYWxfc3RhdGVcblxuKCogVGhpcyBmdW5jdGlvbiBhZGRzIGEgZmluYWwgYm91bmRhcnkgY2hlY2sgb24gdGhlIGlucHV0LlxuICAgVGhpcyBpcyB1c2VmdWwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGZhaWxlZCBiZWNhdXNlXG4gICBvZiBpbnN1ZmZpY2llbnQgaW5wdXQsIG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBvdXRwdXQgYWN0dWFsbHlcbiAgIG1hdGNoZXMgZm9yIHJlZ2V4IHRoYXQgaGF2ZSBib3VuZGFyeSBjb25kaXRpb25zIHdpdGggcmVzcGVjdFxuICAgdG8gdGhlIGlucHV0IHN0cmluZy5cbiAqKVxubGV0IGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgPVxuICBsZXQgZmluYWxfY2F0ID1cbiAgICBpZiBsYXN0ID0gc2xlbiB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIGxhc3QpKVxuICBpblxuICBsZXQgKGlkeCwgcmVzKSA9IGZpbmFsIGluZm8gc3QgZmluYWxfY2F0IGluXG4gIChtYXRjaCBncm91cHMsIHJlcyB3aXRoXG4gIHwgdHJ1ZSwgTWF0Y2ggXyAtPiBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBsYXN0XG4gIHwgXyAtPiAoKSk7XG4gIHJlc1xuXG5sZXQgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW4gPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGFzdCA9IGlmIGxlbiA9IC0xIHRoZW4gc2xlbiBlbHNlIHBvcyArIGxlbiBpblxuICBsZXQgaW5mbyA9XG4gICAgeyByZSA7IGNvbG9ycyA9IHJlLmNvbG9yczsgcG9zIDsgbGFzdFxuICAgIDsgcG9zaXRpb25zID1cbiAgICAgICAgaWYgZ3JvdXBzIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEF1dG9tYXRhLmluZGV4X2NvdW50IHJlLnRibCArIDEgaW5cbiAgICAgICAgICBpZiBuIDw9IDEwIHRoZW5cbiAgICAgICAgICAgIFt8MDswOzA7MDswOzA7MDswOzA7MHxdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkubWFrZSBuIDBcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBbfHxdIH1cbiAgaW5cbiAgbGV0IGluaXRpYWxfY2F0ID1cbiAgICBpZiBwb3MgPSAwIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyAocG9zIC0gMSkpKVxuICBpblxuICBsZXQgaW5pdGlhbF9zdGF0ZSA9IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBpbml0aWFsX2NhdCBpblxuICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gIGxldCByZXMgPVxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHx8IChwYXJ0aWFsICYmIG5vdCBncm91cHMpIHRoZW5cbiAgICAgIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjXG4gICAgZWxzZSBpZiBwYXJ0aWFsICYmIGdyb3VwcyB0aGVuXG4gICAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzYyB3aXRoXG4gICAgICB8IE1hdGNoIF8gfCBGYWlsZWQgYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgfCBSdW5uaW5nIC0+XG4gICAgICAgICgqIFRoaXMgY291bGQgYmUgYmVjYXVzZSBpdCdzIHN0aWxsIG5vdCBmdWxseSBtYXRjaGVkLCBvciBpdFxuICAgICAgICAgICBjb3VsZCBiZSB0aGF0IGJlY2F1c2Ugd2UgbmVlZCB0byBydW4gc3BlY2lhbCBlbmQgb2YgaW5wdXRcbiAgICAgICAgICAgY2hlY2tzLiAqKVxuICAgICAgICAobWF0Y2ggZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyB3aXRoXG4gICAgICAgICB8IE1hdGNoIF8gYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgICAgfCBGYWlsZWQgfCBSdW5uaW5nIC0+XG4gICAgICAgICAgICgqIEEgZmFpbHVyZSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB3ZSBuZWVkIG1vcmUgZGF0YSwgaS5lLlxuICAgICAgICAgICAgICBpdCdzIGEgcGFydGlhbCBtYXRjaC4gKilcbiAgICAgICAgICAgUnVubmluZylcbiAgICBlbHNlIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgICBBdXRvbWF0YS5NYXRjaCAobWFya3MsIHBtYXJrcykgLT5cbiAgICBNYXRjaCB7IHMgOyBtYXJrczsgcG1hcmtzIDsgZ3BvcyA9IGluZm8ucG9zaXRpb25zOyBnY291bnQgPSByZS5ncm91cF9jb3VudH1cbiAgfCBBdXRvbWF0YS5GYWlsZWQgLT4gRmFpbGVkXG4gIHwgQXV0b21hdGEuUnVubmluZyAtPlxuICAgIGxldCBub19tYXRjaF9zdGFydHNfYmVmb3JlID0gaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKDApIGVsc2UgMCBpblxuICAgIFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH1cblxubGV0IG1rX3JlIH5pbml0aWFsIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lcyB+Z3JvdXBfY291bnQgPVxuICB7IGluaXRpYWwgO1xuICAgIGluaXRpYWxfc3RhdGVzID0gW107XG4gICAgY29sb3JzO1xuICAgIGNvbG9yX3JlcHI7XG4gICAgbmNvbG9yO1xuICAgIGxubDtcbiAgICB0YmwgPSBBdXRvbWF0YS5jcmVhdGVfd29ya2luZ19hcmVhICgpO1xuICAgIHN0YXRlcyA9IEF1dG9tYXRhLlN0YXRlLlRhYmxlLmNyZWF0ZSA5NztcbiAgICBncm91cF9uYW1lcztcbiAgICBncm91cF9jb3VudCB9XG5cbigqKioqIENoYXJhY3RlciBzZXRzICoqKiopXG5cbmxldCBjc2VxIGMgYycgPSBDc2V0LnNlcSAoQ2hhci5jb2RlIGMpIChDaGFyLmNvZGUgYycpXG5sZXQgY2FkZCBjIHMgPSBDc2V0LmFkZCAoQ2hhci5jb2RlIGMpIHNcblxubGV0IHRyYW5zX3NldCBjYWNoZSBjbSBzID1cbiAgbWF0Y2ggQ3NldC5vbmVfY2hhciBzIHdpdGhcbiAgfCBTb21lIGkgLT4gQ3NldC5jc2luZ2xlIGNtLltpXVxuICB8IE5vbmUgLT5cbiAgICBsZXQgdiA9IChDc2V0Lmhhc2hfcmVjIHMsIHMpIGluXG4gICAgdHJ5XG4gICAgICBDc2V0LkNTZXRNYXAuZmluZCB2ICFjYWNoZVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgbCA9XG4gICAgICAgIENzZXQuZm9sZF9yaWdodFxuICAgICAgICAgIHNcbiAgICAgICAgICB+ZjooZnVuIChpLCBqKSBsIC0+IENzZXQudW5pb24gKGNzZXEgY20uW2ldIGNtLltqXSkgbClcbiAgICAgICAgICB+aW5pdDpDc2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgY2FjaGUgOj0gQ3NldC5DU2V0TWFwLmFkZCB2IGwgIWNhY2hlO1xuICAgICAgbFxuXG4oKioqKilcblxudHlwZSByZWdleHAgPVxuICAgIFNldCBvZiBDc2V0LnRcbiAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxubW9kdWxlIFZpZXcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVnZXhwID1cbiAgICAgIFNldCBvZiBDc2V0LnRcbiAgICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICAgIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gICAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gICAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gICAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICAgIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICAgIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxuICBsZXQgdmlldyB0ID0gdFxuZW5kXG5cbmxldCByZWMgcHAgZm10IHQgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHZhciBzIHJlID0gc2V4cCBmbXQgcyBwcCByZSBpblxuICBsZXQgc2VxIHMgcmVsID0gc2V4cCBmbXQgcyAobGlzdCBwcCkgcmVsIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNldCBzIC0+ICBzZXhwIGZtdCBcIlNldFwiIENzZXQucHAgc1xuICB8IFNlcXVlbmNlIHNxIC0+IHNlcSBcIlNlcXVlbmNlXCIgc3FcbiAgfCBBbHRlcm5hdGl2ZSBhbHQgLT4gc2VxIFwiQWx0ZXJuYXRpdmVcIiBhbHRcbiAgfCBSZXBlYXQgKHJlLCBzdGFydCwgc3RvcCkgLT5cbiAgICBsZXQgcHAnIGZtdCAoKSA9IGZwcmludGYgZm10IFwiJWFAICVkJWFcIiBwcCByZSAgIHN0YXJ0ICAgb3B0aW50IHN0b3AgaW5cbiAgICBzZXhwIGZtdCBcIlJlcGVhdFwiIHBwJyAoKVxuICB8IEJlZ19vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9saW5lXCJcbiAgfCBFbmRfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2ZfbGluZVwiXG4gIHwgQmVnX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3dvcmRcIlxuICB8IEVuZF9vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl93b3JkXCJcbiAgfCBOb3RfYm91bmQgICAgICAgIC0+IHN0ciBmbXQgXCJOb3RfYm91bmRcIlxuICB8IEJlZ19vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9zdHJcIlxuICB8IEVuZF9vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9zdHJcIlxuICB8IExhc3RfZW5kX29mX2xpbmUgLT4gc3RyIGZtdCBcIkxhc3RfZW5kX29mX2xpbmVcIlxuICB8IFN0YXJ0ICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0YXJ0XCJcbiAgfCBTdG9wICAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdG9wXCJcbiAgfCBTZW0gKHNlbSwgcmUpICAgIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1cIiAocGFpciBBdXRvbWF0YS5wcF9zZW0gcHApIChzZW0sIHJlKVxuICB8IFNlbV9ncmVlZHkgKGssIHJlKSAtPlxuICAgIHNleHAgZm10IFwiU2VtX2dyZWVkeVwiIChwYWlyIEF1dG9tYXRhLnBwX3JlcF9raW5kIHBwKSAoaywgcmUpXG4gIHwgR3JvdXAgKE5vbmUsIGMpICAgLT4gdmFyIFwiR3JvdXBcIiBjXG4gIHwgR3JvdXAgKFNvbWUgbiwgYykgLT4gc2V4cCBmbXQgXCJOYW1lZF9ncm91cFwiIChwYWlyIHN0ciBwcCkgKG4sIGMpXG4gIHwgTm9fZ3JvdXAgYyAgICAgLT4gdmFyIFwiTm9fZ3JvdXBcIiBjXG4gIHwgTmVzdCBjICAgICAgICAgLT4gdmFyIFwiTmVzdFwiIGNcbiAgfCBDYXNlIGMgICAgICAgICAtPiB2YXIgXCJDYXNlXCIgY1xuICB8IE5vX2Nhc2UgYyAgICAgIC0+IHZhciBcIk5vX2Nhc2VcIiBjXG4gIHwgSW50ZXJzZWN0aW9uIGMgLT4gc2VxIFwiSW50ZXJzZWN0aW9uXCIgY1xuICB8IENvbXBsZW1lbnQgYyAgIC0+IHNlcSBcIkNvbXBsZW1lbnRcIiBjXG4gIHwgRGlmZmVyZW5jZSAoYSwgYikgLT4gc2V4cCBmbXQgXCJEaWZmZXJlbmNlXCIgKHBhaXIgcHAgcHApIChhLCBiKVxuICB8IFBtYXJrIChtLCByKSAgICAgIC0+IHNleHAgZm10IFwiUG1hcmtcIiAocGFpciBQbWFyay5wcCBwcCkgKG0sIHIpXG5cbmxldCByZWMgaXNfY2hhcnNldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IF8gLT5cbiAgICB0cnVlXG4gIHwgQWx0ZXJuYXRpdmUgbCB8IEludGVyc2VjdGlvbiBsIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGlzX2NoYXJzZXQgbFxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIGlzX2NoYXJzZXQgciAmJiBpc19jaGFyc2V0IHInXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gIHwgTm9fZ3JvdXAgciB8IENhc2UgciB8IE5vX2Nhc2UgciAtPlxuICAgIGlzX2NoYXJzZXQgclxuICB8IFNlcXVlbmNlIF8gfCBSZXBlYXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBOb3RfYm91bmQgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgR3JvdXAgXyB8IE5lc3QgXyB8IFBtYXJrIChfLF8pLT5cbiAgICBmYWxzZVxuXG4oKlhYWCBVc2UgYSBiZXR0ZXIgYWxnb3JpdGhtIGFsbG93aW5nIG5vbi1jb250aWd1b3VzIHJlZ2lvbnM/ICopXG5cbmxldCBjdXBwZXIgPVxuICBDc2V0LnVuaW9uIChjc2VxICdBJyAnWicpXG4gICAgKENzZXQudW5pb24gKGNzZXEgJ1xcMTkyJyAnXFwyMTQnKSAoY3NlcSAnXFwyMTYnICdcXDIyMicpKVxubGV0IGNsb3dlciA9IENzZXQub2Zmc2V0IDMyIGN1cHBlclxubGV0IGNhbHBoYSA9XG4gIExpc3QuZm9sZF9yaWdodCBjYWRkIFsnXFwxNzAnOyAnXFwxODEnOyAnXFwxODYnOyAnXFwyMjMnOyAnXFwyNTUnXVxuICAgIChDc2V0LnVuaW9uIGNsb3dlciBjdXBwZXIpXG5sZXQgY2RpZ2l0ID0gY3NlcSAnMCcgJzknXG5sZXQgY2FsbnVtID0gQ3NldC51bmlvbiBjYWxwaGEgY2RpZ2l0XG5sZXQgY3dvcmQgPSBjYWRkICdfJyBjYWxudW1cblxubGV0IGNvbG9yaXplIGMgcmVnZXhwID1cbiAgbGV0IGxubCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGNvbG9yaXplIHJlZ2V4cCA9XG4gICAgbWF0Y2ggcmVnZXhwIHdpdGhcbiAgICAgIFNldCBzICAgICAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IHMgY1xuICAgIHwgU2VxdWVuY2UgbCAgICAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgQWx0ZXJuYXRpdmUgbCAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgUmVwZWF0IChyLCBfLCBfKSAgICAgICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIC0+IENvbG9yX21hcC5zcGxpdCAoQ3NldC5jc2luZ2xlICdcXG4nKSBjXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmQgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBjd29yZCBjXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgU3RhcnQgfCBTdG9wICAgICAgICAgICAgICAtPiAoKVxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSAgICAgICAgICAtPiBsbmwgOj0gdHJ1ZVxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgICB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgciB8IFBtYXJrIChfLHIpICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBDYXNlIF8gfCBOb19jYXNlIF9cbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgXyAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGNvbG9yaXplIHJlZ2V4cDtcbiAgIWxubFxuXG4oKioqKiBDb21waWxhdGlvbiAqKioqKVxuXG5sZXQgcmVjIGVxdWFsIHgxIHgyID1cbiAgbWF0Y2ggeDEsIHgyIHdpdGhcbiAgICBTZXQgczEsIFNldCBzMiAtPlxuICAgIHMxID0gczJcbiAgfCBTZXF1ZW5jZSBsMSwgU2VxdWVuY2UgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQWx0ZXJuYXRpdmUgbDEsIEFsdGVybmF0aXZlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IFJlcGVhdCAoeDEnLCBpMSwgajEpLCBSZXBlYXQgKHgyJywgaTIsIGoyKSAtPlxuICAgIGkxID0gaTIgJiYgajEgPSBqMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgQmVnX29mX2xpbmUsIEJlZ19vZl9saW5lXG4gIHwgRW5kX29mX2xpbmUsIEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQsIEJlZ19vZl93b3JkXG4gIHwgRW5kX29mX3dvcmQsIEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kLCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyLCBCZWdfb2Zfc3RyXG4gIHwgRW5kX29mX3N0ciwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUsIExhc3RfZW5kX29mX2xpbmVcbiAgfCBTdGFydCwgU3RhcnRcbiAgfCBTdG9wLCBTdG9wIC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoc2VtMSwgeDEnKSwgU2VtIChzZW0yLCB4MicpIC0+XG4gICAgc2VtMSA9IHNlbTIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IFNlbV9ncmVlZHkgKGsxLCB4MScpLCBTZW1fZ3JlZWR5IChrMiwgeDInKSAtPlxuICAgIGsxID0gazIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEdyb3VwIF8sIEdyb3VwIF8gLT4gKCogRG8gbm90IG1lcmdlIGdyb3VwcyEgKilcbiAgICBmYWxzZVxuICB8IE5vX2dyb3VwIHgxJywgTm9fZ3JvdXAgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5lc3QgeDEnLCBOZXN0IHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBDYXNlIHgxJywgQ2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTm9fY2FzZSB4MScsIE5vX2Nhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IEludGVyc2VjdGlvbiBsMSwgSW50ZXJzZWN0aW9uIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IENvbXBsZW1lbnQgbDEsIENvbXBsZW1lbnQgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgRGlmZmVyZW5jZSAoeDEnLCB4MScnKSwgRGlmZmVyZW5jZSAoeDInLCB4MicnKSAtPlxuICAgIGVxdWFsIHgxJyB4MicgJiYgZXF1YWwgeDEnJyB4MicnXG4gIHwgUG1hcmsgKG0xLCByMSksIFBtYXJrIChtMiwgcjIpIC0+XG4gICAgUG1hcmsuZXF1YWwgbTEgbTIgJiYgZXF1YWwgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxuYW5kIGVxX2xpc3QgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIFtdLCBbXSAtPlxuICAgIHRydWVcbiAgfCB4MSA6OiByMSwgeDIgOjogcjIgLT5cbiAgICBlcXVhbCB4MSB4MiAmJiBlcV9saXN0IHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBzZXF1ZW5jZSA9IGZ1bmN0aW9uXG4gIHwgW3hdIC0+IHhcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgcmVjIG1lcmdlX3NlcXVlbmNlcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEFsdGVybmF0aXZlIGwnIDo6IHIgLT5cbiAgICBtZXJnZV9zZXF1ZW5jZXMgKGwnIEAgcilcbiAgfCBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIHIgd2l0aFxuICAgICAgICBTZXF1ZW5jZSAoeCcgOjogeScpIDo6IHInIHdoZW4gZXF1YWwgeCB4JyAtPlxuICAgICAgICBTZXF1ZW5jZSBbeDsgQWx0ZXJuYXRpdmUgW3NlcXVlbmNlIHk7IHNlcXVlbmNlIHknXV0gOjogcidcbiAgICAgIHwgcicgLT5cbiAgICAgICAgU2VxdWVuY2UgKHggOjogeSkgOjogcidcbiAgICBlbmRcbiAgfCB4IDo6IHIgLT5cbiAgICB4IDo6IG1lcmdlX3NlcXVlbmNlcyByXG5cbm1vZHVsZSBBID0gQXV0b21hdGFcblxubGV0IGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciA9XG4gIG1hdGNoIGtpbmQsIGtpbmQnIHdpdGhcbiAgICBgRmlyc3QsIGBGaXJzdCAtPiBjclxuICB8IGBGaXJzdCwgayAgICAgICAtPiBBLnNlcSBpZHMgayBjciAoQS5lcHMgaWRzKVxuICB8ICBfICAgICAgICAgICAgICAgLT4gY3JcblxuKCogWFhYIHNob3VsZCBwcm9iYWJseSBjb21wdXRlIGEgY2F0ZWdvcnkgbWFzayAqKVxubGV0IHJlYyB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICAoQS5jc3QgaWRzICh0cmFuc19zZXQgY2FjaGUgYyBzKSwga2luZClcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgKHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIGwsIGtpbmQpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyBsIHdpdGhcbiAgICAgICAgW3InXSAtPlxuICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IsIGtpbmQpXG4gICAgICB8IG1lcmdlZF9zZXF1ZW5jZXMgLT5cbiAgICAgICAgKEEuYWx0IGlkc1xuICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgKGZ1biByJyAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5XG4gICAgICAgICAgICAgICAgICAgICBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAgICAgICAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IpXG4gICAgICAgICAgICAgIG1lcmdlZF9zZXF1ZW5jZXMpLFxuICAgICAgICAga2luZClcbiAgICBlbmRcbiAgfCBSZXBlYXQgKHInLCBpLCBqKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIGxldCByZW0gPVxuICAgICAgbWF0Y2ggaiB3aXRoXG4gICAgICAgIE5vbmUgLT5cbiAgICAgICAgQS5yZXAgaWRzIGdyZWVkeSBraW5kJyBjclxuICAgICAgfCBTb21lIGogLT5cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIGdyZWVkeSB3aXRoXG4gICAgICAgICAgICBgR3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtOyBBLmVwcyBpZHNdXG4gICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5lcHMgaWRzOyBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIChqIC0gaSkgZiAoQS5lcHMgaWRzKVxuICAgIGluXG4gICAgKGl0ZXIgaSAoZnVuIHJlbSAtPiBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtKSByZW0sIGtpbmQpXG4gIHwgQmVnX29mX2xpbmUgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgRW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEJlZ19vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpLFxuICAgICBraW5kKVxuICB8IEVuZF9vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpLFxuICAgICBraW5kKVxuICB8IE5vdF9ib3VuZCAtPlxuICAgIChBLmFsdCBpZHMgW0Euc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlcik7XG4gICAgICAgICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSldLFxuICAgICBraW5kKVxuICB8IEJlZ19vZl9zdHIgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBFbmRfb2Zfc3RyIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IExhc3RfZW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIGxhc3RuZXdsaW5lKSwga2luZClcbiAgfCBTdGFydCAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU3RvcCAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFNlbSAoa2luZCcsIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kJyBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCcga2luZCcnIGNyLFxuICAgICBraW5kJylcbiAgfCBTZW1fZ3JlZWR5IChncmVlZHknLCByJykgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeScgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBHcm91cCAobiwgcicpIC0+XG4gICAgaWYgaWduX2dyb3VwIHRoZW5cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHAgPSAhcG9zIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZXMgOj0gKG5hbWUsIHAgLyAyKSA6OiAhbmFtZXNcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICBpblxuICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLm1hcmsgaWRzIHApIChcbiAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0IGNyIChBLm1hcmsgaWRzIChwICsgMSkpKSxcbiAgICAgICBraW5kJylcbiAgfCBOb19ncm91cCByJyAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCB0cnVlIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IE5lc3QgcicgLT5cbiAgICBsZXQgYiA9ICFwb3MgaW5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBpblxuICAgIGxldCBlID0gIXBvcyAtIDEgaW5cbiAgICBpZiBlIDwgYiB0aGVuXG4gICAgICAoY3IsIGtpbmQnKVxuICAgIGVsc2VcbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLmVyYXNlIGlkcyBiIGUpIGNyLCBraW5kJylcbiAgfCBEaWZmZXJlbmNlIF8gfCBDb21wbGVtZW50IF8gfCBJbnRlcnNlY3Rpb24gXyB8IE5vX2Nhc2UgXyB8IENhc2UgXyAtPlxuICAgIGFzc2VydCBmYWxzZVxuICB8IFBtYXJrIChpLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5wbWFyayBpZHMgaSkgY3IsIGtpbmQnKVxuXG5hbmQgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgQS5lcHMgaWRzXG4gIHwgW3JdIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyJ1xuICB8IHIgOjogcmVtIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgbGV0IGNyJycgPVxuICAgICAgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcmVtIGluXG4gICAgaWYgQS5pc19lcHMgY3InJyB0aGVuXG4gICAgICBjcidcbiAgICBlbHNlIGlmIEEuaXNfZXBzIGNyJyB0aGVuXG4gICAgICBjcicnXG4gICAgZWxzZVxuICAgICAgQS5zZXEgaWRzIGtpbmQnIGNyJyBjcicnXG5cbigqKioqIENhc2UgKioqKilcblxubGV0IGNhc2VfaW5zZW5zIHMgPVxuICBDc2V0LnVuaW9uIHMgKENzZXQudW5pb24gKENzZXQub2Zmc2V0IDMyIChDc2V0LmludGVyIHMgY3VwcGVyKSlcbiAgICAgICAgICAgICAgICAgIChDc2V0Lm9mZnNldCAoLTMyKSAoQ3NldC5pbnRlciBzIGNsb3dlcikpKVxuXG5sZXQgYXNfc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPiBzXG4gIHwgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG5cbigqIFhYWCBTaG91bGQgc3BsaXQgYWx0ZXJuYXRpdmVzIGludG8gKDEpIGNoYXJzZXRzIGFuZCAoMikgbW9yZVxuICAgY29tcGxleCByZWd1bGFyIGV4cHJlc3Npb25zOyBhbHRlcm5hdGl2ZSBzaG91bGQgdGhlcmVmb3JlIHByb2JhYmx5XG4gICBiZSBmbGF0dGVuIGhlcmUgKilcbmxldCByZWMgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgU2V0IChpZiBpZ25fY2FzZSB0aGVuIGNhc2VfaW5zZW5zIHMgZWxzZSBzKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBTZXF1ZW5jZSAoTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwgaW5cbiAgICBpZiBpc19jaGFyc2V0IChBbHRlcm5hdGl2ZSBsJykgdGhlblxuICAgICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSkgQ3NldC5lbXB0eSBsJylcbiAgICBlbHNlXG4gICAgICBBbHRlcm5hdGl2ZSBsJ1xuICB8IFJlcGVhdCAociwgaSwgaikgLT5cbiAgICBSZXBlYXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIsIGksIGopXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3AgYXMgciAtPlxuICAgIHJcbiAgfCBTZW0gKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbSAoaywgcicpXG4gIHwgU2VtX2dyZWVkeSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtX2dyZWVkeSAoaywgcicpXG4gIHwgR3JvdXAgKG4sIHIpIC0+XG4gICAgR3JvdXAgKG4sIGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG4gIHwgTm9fZ3JvdXAgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOb19ncm91cCByJ1xuICB8IE5lc3QgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOZXN0IHInXG4gIHwgQ2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgZmFsc2UgclxuICB8IE5vX2Nhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIHRydWUgclxuICB8IEludGVyc2VjdGlvbiBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQuaW50ZXIgcyAoYXNfc2V0IHIpKSBDc2V0LmNhbnkgbCcpXG4gIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnlcbiAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKVxuICAgICAgICAgICAgICBDc2V0LmVtcHR5IGwnKSlcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBTZXQgKENzZXQuaW50ZXIgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikpXG4gICAgICAgICAgIChDc2V0LmRpZmYgQ3NldC5jYW55IChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHInKSkpKVxuICB8IFBtYXJrIChpLHIpIC0+IFBtYXJrIChpLGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZV8xIHJlZ2V4cCA9XG4gIGxldCByZWdleHAgPSBoYW5kbGVfY2FzZSBmYWxzZSByZWdleHAgaW5cbiAgbGV0IGMgPSBDb2xvcl9tYXAubWFrZSAoKSBpblxuICBsZXQgbmVlZF9sbmwgPSBjb2xvcml6ZSBjIHJlZ2V4cCBpblxuICBsZXQgKGNvbG9ycywgY29sb3JfcmVwciwgbmNvbG9yKSA9IENvbG9yX21hcC5mbGF0dGVuIGMgaW5cbiAgbGV0IGxubCA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yIGVsc2UgLTEgaW5cbiAgbGV0IG5jb2xvciA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yICsgMSBlbHNlIG5jb2xvciBpblxuICBsZXQgaWRzID0gQS5jcmVhdGVfaWRzICgpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBsZXQgbmFtZXMgPSByZWYgW10gaW5cbiAgbGV0IChyLCBraW5kKSA9XG4gICAgdHJhbnNsYXRlIGlkc1xuICAgICAgYEZpcnN0IGZhbHNlIGZhbHNlIGBHcmVlZHkgcG9zIG5hbWVzIChyZWYgQ3NldC5DU2V0TWFwLmVtcHR5KSBjb2xvcnMgcmVnZXhwIGluXG4gIGxldCByID0gZW5mb3JjZV9raW5kIGlkcyBgRmlyc3Qga2luZCByIGluXG4gICgqRm9ybWF0LmVwcmludGYgXCI8JWQgJWQ+QC5cIiAhaWRzIG5jb2w7KilcbiAgbWtfcmUgfmluaXRpYWw6ciB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXM6KExpc3QucmV2ICFuYW1lcykgfmdyb3VwX2NvdW50OighcG9zIC8gMilcblxuKCoqKiopXG5cbmxldCByZWMgYW5jaG9yZWQgPSBmdW5jdGlvblxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBMaXN0LmV4aXN0cyBhbmNob3JlZCBsXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBhbmNob3JlZCBsXG4gIHwgUmVwZWF0IChyLCBpLCBfKSAtPlxuICAgIGkgPiAwICYmIGFuY2hvcmVkIHJcbiAgfCBTZXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdG9wXG4gIHwgSW50ZXJzZWN0aW9uIF8gfCBDb21wbGVtZW50IF8gfCBEaWZmZXJlbmNlIF8gLT5cbiAgICBmYWxzZVxuICB8IEJlZ19vZl9zdHIgfCBTdGFydCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcikgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByIHwgTmVzdCByXG4gIHwgQ2FzZSByIHwgTm9fY2FzZSByIHwgUG1hcmsgKF8sIHIpIC0+XG4gICAgYW5jaG9yZWQgclxuXG4oKioqKilcblxudHlwZSB0ID0gcmVnZXhwXG5cbmxldCBzdHIgcyA9XG4gIGxldCBsID0gcmVmIFtdIGluXG4gIGZvciBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGwgOj0gU2V0IChDc2V0LmNzaW5nbGUgcy5baV0pIDo6ICFsXG4gIGRvbmU7XG4gIFNlcXVlbmNlICFsXG5sZXQgY2hhciBjID0gU2V0IChDc2V0LmNzaW5nbGUgYylcblxubGV0IGFsdCA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gQWx0ZXJuYXRpdmUgbFxubGV0IHNlcSA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgZW1wdHkgPSBhbHQgW11cbmxldCBlcHNpbG9uID0gc2VxIFtdXG5sZXQgcmVwbiByIGkgaiA9XG4gIGlmIGkgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCI7XG4gIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCJcbiAgICB8IF8gLT4gKClcbiAgZW5kO1xuICBSZXBlYXQgKHIsIGksIGopXG5sZXQgcmVwIHIgPSByZXBuIHIgMCBOb25lXG5sZXQgcmVwMSByID0gcmVwbiByIDEgTm9uZVxubGV0IG9wdCByID0gcmVwbiByIDAgKFNvbWUgMSlcbmxldCBib2wgPSBCZWdfb2ZfbGluZVxubGV0IGVvbCA9IEVuZF9vZl9saW5lXG5sZXQgYm93ID0gQmVnX29mX3dvcmRcbmxldCBlb3cgPSBFbmRfb2Zfd29yZFxubGV0IHdvcmQgciA9IHNlcSBbYm93OyByOyBlb3ddXG5sZXQgbm90X2JvdW5kYXJ5ID0gTm90X2JvdW5kXG5sZXQgYm9zID0gQmVnX29mX3N0clxubGV0IGVvcyA9IEVuZF9vZl9zdHJcbmxldCB3aG9sZV9zdHJpbmcgciA9IHNlcSBbYm9zOyByOyBlb3NdXG5sZXQgbGVvbCA9IExhc3RfZW5kX29mX2xpbmVcbmxldCBzdGFydCA9IFN0YXJ0XG5sZXQgc3RvcCA9IFN0b3BcbmxldCBsb25nZXN0IHIgPSBTZW0gKGBMb25nZXN0LCByKVxubGV0IHNob3J0ZXN0IHIgPSBTZW0gKGBTaG9ydGVzdCwgcilcbmxldCBmaXJzdCByID0gU2VtIChgRmlyc3QsIHIpXG5sZXQgZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgR3JlZWR5LCByKVxubGV0IG5vbl9ncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBOb25fZ3JlZWR5LCByKVxubGV0IGdyb3VwID9uYW1lIHIgPSBHcm91cCAobmFtZSwgcilcbmxldCBub19ncm91cCByID0gTm9fZ3JvdXAgclxubGV0IG5lc3QgciA9IE5lc3QgclxubGV0IG1hcmsgciA9IGxldCBpID0gUG1hcmsuZ2VuICgpIGluIChpLFBtYXJrIChpLHIpKVxuXG5sZXQgc2V0IHN0ciA9XG4gIGxldCBzID0gcmVmIENzZXQuZW1wdHkgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIHMgOj0gQ3NldC51bmlvbiAoQ3NldC5jc2luZ2xlIHN0ci5baV0pICFzXG4gIGRvbmU7XG4gIFNldCAhc1xuXG5sZXQgcmcgYyBjJyA9IFNldCAoY3NlcSBjIGMnKVxuXG5sZXQgaW50ZXIgbCA9XG4gIGxldCByID0gSW50ZXJzZWN0aW9uIGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmludGVyXCJcblxubGV0IGNvbXBsIGwgPVxuICBsZXQgciA9IENvbXBsZW1lbnQgbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuY29tcGxcIlxuXG5sZXQgZGlmZiByIHInID1cbiAgbGV0IHInJyA9IERpZmZlcmVuY2UgKHIsIHInKSBpblxuICBpZiBpc19jaGFyc2V0IHInJyB0aGVuXG4gICAgcicnXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmRpZmZcIlxuXG5sZXQgYW55ID0gU2V0IENzZXQuY2FueVxubGV0IG5vdG5sID0gU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55IChDc2V0LmNzaW5nbGUgJ1xcbicpKVxuXG5sZXQgbG93ZXIgPSBhbHQgW3JnICdhJyAneic7IGNoYXIgJ1xcMTgxJzsgcmcgJ1xcMjIzJyAnXFwyNDYnOyByZyAnXFwyNDgnICdcXDI1NSddXG5sZXQgdXBwZXIgPSBhbHQgW3JnICdBJyAnWic7IHJnICdcXDE5MicgJ1xcMjE0JzsgcmcgJ1xcMjE2JyAnXFwyMjInXVxubGV0IGFscGhhID0gYWx0IFtsb3dlcjsgdXBwZXI7IGNoYXIgJ1xcMTcwJzsgY2hhciAnXFwxODYnXVxubGV0IGRpZ2l0ID0gcmcgJzAnICc5J1xubGV0IGFsbnVtID0gYWx0IFthbHBoYTsgZGlnaXRdXG5sZXQgd29yZGMgPSBhbHQgW2FsbnVtOyBjaGFyICdfJ11cbmxldCBhc2NpaSA9IHJnICdcXDAwMCcgJ1xcMTI3J1xubGV0IGJsYW5rID0gc2V0IFwiXFx0IFwiXG5sZXQgY250cmwgPSBhbHQgW3JnICdcXDAwMCcgJ1xcMDMxJzsgcmcgJ1xcMTI3JyAnXFwxNTknXVxubGV0IGdyYXBoID0gYWx0IFtyZyAnXFwwMzMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwcmludCA9IGFsdCBbcmcgJ1xcMDMyJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHVuY3QgPVxuICBhbHQgW3JnICdcXDAzMycgJ1xcMDQ3JzsgcmcgJ1xcMDU4JyAnXFwwNjQnOyByZyAnXFwwOTEnICdcXDA5Nic7XG4gICAgICAgcmcgJ1xcMTIzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDE2OSc7IHJnICdcXDE3MScgJ1xcMTgwJztcbiAgICAgICByZyAnXFwxODInICdcXDE4NSc7IHJnICdcXDE4NycgJ1xcMTkxJzsgY2hhciAnXFwyMTUnOyBjaGFyICdcXDI0NyddXG5sZXQgc3BhY2UgPSBhbHQgW2NoYXIgJyAnOyByZyAnXFwwMDknICdcXDAxMyddXG5sZXQgeGRpZ2l0ID0gYWx0IFtkaWdpdDsgcmcgJ2EnICdmJzsgcmcgJ0EnICdGJ11cblxubGV0IGNhc2UgciA9IENhc2UgclxubGV0IG5vX2Nhc2UgciA9IE5vX2Nhc2UgclxuXG4oKioqKilcblxubGV0IGNvbXBpbGUgciA9XG4gIGNvbXBpbGVfMSAoXG4gICAgaWYgYW5jaG9yZWQgciB0aGVuXG4gICAgICBncm91cCByXG4gICAgZWxzZVxuICAgICAgc2VxIFtzaG9ydGVzdCAocmVwIGFueSk7IGdyb3VwIHJdXG4gIClcblxubGV0IGV4ZWNfaW50ZXJuYWwgbmFtZSA/KHBvcz0wKSA/KGxlbiA9IC0xKSB+cGFydGlhbCB+Z3JvdXBzIHJlIHMgPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IC0xIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgbmFtZTtcbiAgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW5cblxubGV0IGV4ZWMgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY1wiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGV4ZWNfb3B0ID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNfb3B0XCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZVxuICAgICAgICAgIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBTb21lIHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiBOb25lXG5cbmxldCBleGVjcCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDpmYWxzZSBcIlJlLmV4ZWNwXCIgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF9zdWJzdHIgLT4gdHJ1ZVxuICB8IF8gICAgICAgICAgICAgLT4gZmFsc2VcblxubGV0IGV4ZWNfcGFydGlhbCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggXyAtPiBgRnVsbFxuICB8IFJ1bm5pbmcgXyAtPiBgUGFydGlhbFxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbmxldCBleGVjX3BhcnRpYWxfZGV0YWlsZWQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsX2RldGFpbGVkXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggZ3JvdXAgLT4gYEZ1bGwgZ3JvdXBcbiAgfCBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9IC0+IGBQYXJ0aWFsIG5vX21hdGNoX3N0YXJ0c19iZWZvcmVcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5tb2R1bGUgTWFyayA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IFBtYXJrLnRcblxuICBsZXQgdGVzdCAoZyA6IEdyb3VwLnQpIHAgPVxuICAgIFBtYXJrLlNldC5tZW0gcCBnLnBtYXJrc1xuXG4gIGxldCBhbGwgKGcgOiBHcm91cC50KSA9IGcucG1hcmtzXG5cbiAgbW9kdWxlIFNldCA9IFBtYXJrLlNldFxuXG4gIGxldCBlcXVhbCA9IFBtYXJrLmVxdWFsXG5cbiAgbGV0IGNvbXBhcmUgPSBQbWFyay5jb21wYXJlXG5cbmVuZFxuXG50eXBlIHNwbGl0X3Rva2VuID1cbiAgWyBgVGV4dCBvZiBzdHJpbmdcbiAgfCBgRGVsaW0gb2YgR3JvdXAudFxuICBdXG5cbm1vZHVsZSBSc2VxID0gc3RydWN0XG4gIGxldCBhbGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgKCogaW5kZXggb2YgdGhlIGZpcnN0IHBvc2l0aW9uIHdlIGRvIG5vdCBjb25zaWRlci5cbiAgICAgICAhcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50ICopXG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpdGVyYXRlIG9uIG1hdGNoZXMuIFdoZW4gYSBtYXRjaCBpcyBmb3VuZCwgc2VhcmNoIGZvciB0aGUgbmV4dFxuICAgICAgIG9uZSBqdXN0IGFmdGVyIGl0cyBlbmQgKilcbiAgICBsZXQgcmVjIGF1eCBwb3MgKCkgPVxuICAgICAgaWYgcG9zID49IGxpbWl0XG4gICAgICB0aGVuIFNlcS5OaWwgKCogbm8gbW9yZSBtYXRjaGVzICopXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgc1xuICAgICAgICAgICAgICAgIH5wb3MgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgU2VxLkNvbnMgKHN1YnN0ciwgYXV4IHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF9cbiAgICAgICAgfCBGYWlsZWQgLT4gU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IHBvc1xuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgYWxsID9wb3MgP2xlbiByZSBzXG4gICAgfD4gU2VxLm1hcCAoZnVuIHN1YiAtPiBHcm91cC5nZXQgc3ViIDApXG5cbiAgbGV0IHNwbGl0X2Z1bGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaTogc3RhcnQgb2YgZGVsaW1pdGVkIHN0cmluZ1xuICAgICAgIHBvczogZmlyc3QgcG9zaXRpb24gYWZ0ZXIgbGFzdCBtYXRjaCBvZiBbcmVdXG4gICAgICAgbGltaXQ6IGZpcnN0IGluZGV4IHdlIGlnbm9yZSAoIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCkgKilcbiAgICBsZXQgcG9zMCA9IHBvcyBpblxuICAgIGxldCByZWMgYXV4IHN0YXRlIGkgcG9zICgpID0gbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBgSWRsZSB3aGVuIHBvcyA+PSBsaW1pdCAtPlxuICAgICAgICBpZiBpIDwgbGltaXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1YiA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHN1YiwgYXV4IHN0YXRlIChpKzEpIHBvcylcbiAgICAgICAgKSBlbHNlIFNlcS5OaWxcbiAgICAgIHwgYElkbGUgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBsZXQgb2xkX2kgPSBpIGluXG4gICAgICAgICAgbGV0IGkgPSBwMiBpblxuICAgICAgICAgIGlmIHAxID4gcG9zMCB0aGVuIChcbiAgICAgICAgICAgICgqIHN0cmluZyBkb2VzIG5vdCBzdGFydCBieSBhIGRlbGltaXRlciAqKVxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgb2xkX2kgKHAxIC0gb2xkX2kpIGluXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBgWWllbGQgKGBEZWxpbSBzdWJzdHIpIGluXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICAgICkgZWxzZSBTZXEuQ29ucyAoYERlbGltIHN1YnN0ciwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgXyAtPiBTZXEuTmlsXG4gICAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgICAgaWYgaSA8IGxpbWl0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgICAoKiB5aWVsZCBsYXN0IHN0cmluZyAqKVxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBsaW1pdCBwb3MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIGVuZFxuICAgICAgfCBgWWllbGQgeCAtPlxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IGBJZGxlIGkgcG9zKVxuICAgIGluXG4gICAgYXV4IGBJZGxlIHBvcyBwb3NcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBsZXQgc2VxID0gc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyBpblxuICAgIGxldCByZWMgZmlsdGVyIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSAgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFNlcS5OaWxcbiAgICAgIHwgU2VxLkNvbnMgKGBEZWxpbSBfLCB0bCkgLT4gZmlsdGVyIHRsICgpXG4gICAgICB8IFNlcS5Db25zIChgVGV4dCBzLHRsKSAtPiBTZXEuQ29ucyAocywgZmlsdGVyIHRsKVxuICAgIGluIGZpbHRlciBzZXFcbmVuZFxuXG5tb2R1bGUgUmxpc3QgPSBzdHJ1Y3RcbiAgbGV0IGxpc3Rfb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGxpc3QgPVxuICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBsIHggLT4geCA6OiBsKSBbXSBzIHw+IExpc3QucmV2XG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcbmVuZFxuXG5tb2R1bGUgR2VuID0gc3RydWN0XG4gIHR5cGUgJ2EgZ2VuID0gdW5pdCAtPiAnYSBvcHRpb25cbiAgbGV0IGdlbl9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgZ2VuID1cbiAgICBsZXQgciA9IHJlZiBzIGluXG4gICAgZnVuICgpIC0+IG1hdGNoICFyICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBOb25lXG4gICAgICB8IFNlcS5Db25zICh4LCB0bCkgLT5cbiAgICAgICAgciA6PSB0bDtcbiAgICAgICAgU29tZSB4XG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5lbmRcblxubGV0IHJlcGxhY2UgPyhwb3M9MCkgP2xlbiA/KGFsbD10cnVlKSByZSB+ZiBzID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICB8IFNvbWUgbCAtPlxuICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gICAgICBwb3MrbFxuICBpblxuICAoKiBidWZmZXIgaW50byB3aGljaCB3ZSB3cml0ZSB0aGUgcmVzdWx0ICopXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICgqIGl0ZXJhdGUgb24gbWF0Y2hlZCBzdWJzdHJpbmdzLiAqKVxuICBsZXQgcmVjIGl0ZXIgcG9zID1cbiAgICBpZiBwb3MgPCBsaW1pdFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zIH5sZW46KGxpbWl0LXBvcykgd2l0aFxuICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAoKiBhZGQgc3RyaW5nIGJldHdlZW4gcHJldmlvdXMgbWF0Y2ggYW5kIGN1cnJlbnQgbWF0Y2ggKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChwMS1wb3MpO1xuICAgICAgICAoKiB3aGF0IHNob3VsZCB3ZSByZXBsYWNlIHRoZSBtYXRjaGVkIGdyb3VwIHdpdGg/ICopXG4gICAgICAgIGxldCByZXBsYWNpbmcgPSBmIHN1YnN0ciBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgcmVwbGFjaW5nO1xuICAgICAgICBpZiBhbGwgdGhlblxuICAgICAgICAgICgqIGlmIHdlIG1hdGNoZWQgYSBub24tY2hhciBlLmcuIF4gd2UgbXVzdCBtYW51YWxseSBhZHZhbmNlIGJ5IDEgKilcbiAgICAgICAgICBpdGVyIChcbiAgICAgICAgICAgIGlmIHAxPXAyIHRoZW4gKFxuICAgICAgICAgICAgICAoKiBhIG5vbiBjaGFyIGNvdWxkIGJlIHBhc3QgdGhlIGVuZCBvZiBzdHJpbmcuIGUuZy4gJCAqKVxuICAgICAgICAgICAgICBpZiBwMiA8IGxpbWl0IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBzLltwMl07XG4gICAgICAgICAgICAgIHAyKzFcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBwMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHAyIChsaW1pdC1wMilcbiAgICAgIHwgUnVubmluZyBfIC0+ICgpXG4gICAgICB8IEZhaWxlZCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKGxpbWl0LXBvcylcbiAgaW5cbiAgaXRlciBwb3M7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHJlcGxhY2Vfc3RyaW5nID9wb3MgP2xlbiA/YWxsIHJlIH5ieSBzID1cbiAgcmVwbGFjZSA/cG9zID9sZW4gP2FsbCByZSBzIH5mOihmdW4gXyAtPiBieSlcblxubGV0IHdpdG5lc3MgdCA9XG4gIGxldCByZWMgd2l0bmVzcyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgYyAtPiBTdHJpbmcubWFrZSAxIChDaGFyLmNociAoQ3NldC5waWNrIGMpKVxuICAgIHwgU2VxdWVuY2UgeHMgLT4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCB3aXRuZXNzIHhzKVxuICAgIHwgQWx0ZXJuYXRpdmUgKHggOjogXykgLT4gd2l0bmVzcyB4XG4gICAgfCBBbHRlcm5hdGl2ZSBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFJlcGVhdCAociwgZnJvbSwgX3RvKSAtPlxuICAgICAgbGV0IHcgPSB3aXRuZXNzIHIgaW5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCB3ICogZnJvbSkgaW5cbiAgICAgIGZvciBfaT0xIHRvIGZyb20gZG9cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB3XG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IE5vX2Nhc2UgciAtPiB3aXRuZXNzIHJcbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgKF8sIF8pIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgR3JvdXAgKF8sIHIpXG4gICAgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHJcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFBtYXJrIChfLCByKVxuICAgIHwgQ2FzZSByXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKSAtPiB3aXRuZXNzIHJcbiAgICB8IEJlZ19vZl9saW5lXG4gICAgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmRcbiAgICB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmVcbiAgICB8IFN0YXJ0XG4gICAgfCBTdG9wXG4gICAgfCBFbmRfb2Zfc3RyIC0+IFwiXCIgaW5cbiAgd2l0bmVzcyAoaGFuZGxlX2Nhc2UgZmFsc2UgdClcblxubW9kdWxlIFNlcSA9IFJzZXFcbm1vZHVsZSBMaXN0ID0gUmxpc3Rcbm1vZHVsZSBHcm91cCA9IEdyb3VwXG5cbigqKiB7MiBEZXByZWNhdGVkIGZ1bmN0aW9uc30gKilcblxubGV0IHNwbGl0X2Z1bGxfc2VxID0gU2VxLnNwbGl0X2Z1bGxcbmxldCBzcGxpdF9zZXEgPSBTZXEuc3BsaXRcbmxldCBtYXRjaGVzX3NlcSA9IFNlcS5tYXRjaGVzXG5sZXQgYWxsX3NlcSA9IFNlcS5hbGxcblxudHlwZSAnYSBnZW4gICAgICAgID0gJ2EgR2VuLmdlblxubGV0IGFsbF9nZW4gICAgICAgID0gR2VuLmFsbFxubGV0IG1hdGNoZXNfZ2VuICAgID0gR2VuLm1hdGNoZXNcbmxldCBzcGxpdF9nZW4gICAgICA9IEdlbi5zcGxpdFxubGV0IHNwbGl0X2Z1bGxfZ2VuID0gR2VuLnNwbGl0X2Z1bGxcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG5cbmxldCBnZXQgPSBHcm91cC5nZXRcbmxldCBnZXRfb2ZzID0gR3JvdXAub2Zmc2V0XG5sZXQgZ2V0X2FsbCA9IEdyb3VwLmFsbFxubGV0IGdldF9hbGxfb2ZzID0gR3JvdXAuYWxsX29mZnNldFxubGV0IHRlc3QgPSBHcm91cC50ZXN0XG5cbnR5cGUgbWFya2lkID0gTWFyay50XG5cbmxldCBtYXJrZWQgPSBNYXJrLnRlc3RcbmxldCBtYXJrX3NldCA9IE1hcmsuYWxsXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKlxuSW5mb3JtYXRpb24gYWJvdXQgdGhlIHByZXZpb3VzIGNoYXJhY3Rlcjpcbi0gZG9lcyBub3QgZXhpc3RzXG4tIGlzIGEgbGV0dGVyXG4tIGlzIG5vdCBhIGxldHRlclxuLSBpcyBhIG5ld2xpbmVcbi0gaXMgbGFzdCBuZXdsaW5lXG5cbkJlZ2lubmluZyBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGxpbmU6XG4tIHByZXZpb3VzIGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgYnVmZmVyOlxuLSBwcmV2aW91cyBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgYnVmZmVyXG4tIGN1cnJlbnQgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGxpbmVcbi0gY3VycmVudCBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcbiopXG5cbigqXG5SZXA6IGUgPSBULGUgfCAoKVxuICAtIHNlbWFudGljcyBvZiB0aGUgY29tbWEgKHNob3J0ZXN0L2xvbmdlc3QvZmlyc3QpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSB1bmlvbiAoZ3JlZWR5L25vbi1ncmVlZHkpXG5cbkJvdW5kZWQgcmVwZXRpdGlvblxuICBhezAsM30gPSAoYSwoYSxhPyk/KT9cbiopXG5cbnR5cGUgZ3JvdXBzID0gR3JvdXAudFxuXG5pbmNsdWRlIFJsaXN0XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCB0ZXN0MiBjIGMnID0gIWkgKyAxIDwgbCAmJiBzLlshaV0gPSBjICYmIHMuWyFpICsgMV0gPSBjJyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHQyIGMgYycgPSBsZXQgciA9IHRlc3QyIGMgYycgaW4gaWYgciB0aGVuIGkgOj0gIWkgKyAyOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0MiAnXFxcXCcgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QyICdcXFxcJyAnfCcgfHwgdGVzdDIgJ1xcXFwnICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSByIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIFJlLmJvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgUmUuZW9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdDIgJ1xcXFwnICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdgJyB0aGVuXG4gICAgICAgIFJlLmJvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1xcJycgdGhlblxuICAgICAgICBSZS5lb3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc9JyB0aGVuXG4gICAgICAgIFJlLnN0YXJ0XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnYicgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ0InIHRoZW5cbiAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlblxuICAgICAgICBSZS5ib3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc+JyB0aGVuXG4gICAgICAgIFJlLmVvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ3cnIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnVycgdGhlblxuICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgICAnKicgfCAnKycgfCAnPycgfCAnWycgfCAnXScgfCAnLicgfCAnXicgfCAnJCcgfCAnXFxcXCcgYXMgYyAtPlxuICAgICAgICAgICAgUmUuY2hhciBjXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgIGMgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGdldCAoKVxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxubGV0IHJlID8oY2FzZSA9IHRydWUpIHMgPSBsZXQgciA9IHBhcnNlIHMgaW4gaWYgY2FzZSB0aGVuIHIgZWxzZSBSZS5ub19jYXNlIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhjYXNlID0gdHJ1ZSkgcyA9IGNvbXBpbGUgKHJlIH5jYXNlIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICopXG4oKiAgbGlua2luZyBleGNlcHRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZGlmaWVkIGJ5IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mciBmb3IgaW50ZWdyYXRpb24gaW4gUkUgKilcblxuKCogJElkOiByZV9zdHIubWwsdiAxLjMgMjAwMi8wNy8wMyAxNTo0Nzo1NCB2b3VpbGxvbiBFeHAgJCAqKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbnR5cGUgcmVnZXhwID1cbiAgeyByZTogUmUudFxuICA7IG10Y2g6IFJlLnJlIExhenkudFxuICA7IHNyY2g6IFJlLnJlIExhenkudCB9XG5cbmxldCBjb21waWxlX3JlZ2V4cCBzIGMgPVxuICBsZXQgcmUgPSBFbWFjcy5yZSB+Y2FzZToobm90IGMpIHMgaW5cbiAgeyByZVxuICA7IG10Y2ggPSBsYXp5IChSZS5jb21waWxlIChSZS5zZXEgW1JlLnN0YXJ0OyByZV0pKVxuICA7IHNyY2ggPSBsYXp5IChSZS5jb21waWxlIHJlKSB9XG5cbmxldCBzdGF0ZSA9IHJlZiBOb25lXG5cbmxldCBzdHJpbmdfbWF0Y2ggcmUgcyBwID1cbiAgdHJ5XG4gICAgc3RhdGUgOj0gU29tZSAoUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgZmFsc2VcblxubGV0IHN0cmluZ19wYXJ0aWFsX21hdGNoIHJlIHMgcCA9XG4gIG1hdGNoXG4gICAgUmUuZXhlY19wYXJ0aWFsIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzXG4gIHdpdGhcbiAgICBgRnVsbCAgICAgLT4gc3RyaW5nX21hdGNoIHJlIHMgcFxuICB8IGBQYXJ0aWFsICAtPiB0cnVlXG4gIHwgYE1pc21hdGNoIC0+IGZhbHNlXG5cbmxldCBzZWFyY2hfZm9yd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUuc3JjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIGZzdCAoUmUuR3JvdXAub2Zmc2V0IHJlcyAwKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgc2VhcmNoX2JhY2t3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgcFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgaWYgcCA9IDAgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZVxuICAgICAgc2VhcmNoX2JhY2t3YXJkIHJlIHMgKHAgLSAxKVxuXG5sZXQgdmFsaWRfZ3JvdXAgbiA9XG4gIG4gPj0gMCAmJiBuIDwgMTAgJiYgKFxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG0gLT4gbiA8IFJlLkdyb3VwLm5iX2dyb3VwcyBtXG4gIClcblxubGV0IG9mZnNldF9ncm91cCBpID1cbiAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgfCBTb21lIG0gLT4gUmUuR3JvdXAub2Zmc2V0IG0gaVxuICB8IE5vbmUgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGdyb3VwX2xlbiBpID1cbiAgdHJ5XG4gICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBpIGluXG4gICAgZSAtIGJcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAwXG5cbmxldCByZWMgcmVwbF9sZW5ndGggcmVwbCBwIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgaWYgcmVwbC5bcF0gPD4gJ1xcXFwnIHRoZW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSAocSArIDEpIGxlblxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBwID0gcCArIDEgaW5cbiAgICAgIGlmIHAgPSBsZW4gdGhlbiBmYWlsd2l0aCBcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiO1xuICAgICAgbGV0IHEgPVxuICAgICAgICBtYXRjaCByZXBsLltwXSB3aXRoXG4gICAgICAgIHwgJ1xcXFwnIC0+IHEgKyAxXG4gICAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IHEgKyBncm91cF9sZW4gKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJylcbiAgICAgICAgfCBfIC0+IHEgKyAyIGluXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgcSBsZW5cbiAgICBlbmRcbiAgZW5kIGVsc2VcbiAgICBxXG5cbmxldCByZWMgcmVwbGFjZSBvcmlnIHJlcGwgcCByZXMgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBsZXQgYyA9IHJlcGwuW3BdIGluXG4gICAgaWYgYyA8PiAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgQnl0ZXMuc2V0IHJlcyBxIGM7XG4gICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDEpIHJlcyAocSArIDEpIGxlblxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCByZXBsLltwICsgMV0gd2l0aFxuICAgICAgICAnXFxcXCcgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAxKSBsZW5cbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICAgIGxldCBkID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgICAgIGxldCBkID0gZSAtIGIgaW5cbiAgICAgICAgICAgIGlmIGQgPiAwIHRoZW4gU3RyaW5nLmJsaXQgb3JpZyBiIHJlcyBxIGQ7XG4gICAgICAgICAgICBkXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIDBcbiAgICAgICAgaW5cbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyBkKSBsZW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICBCeXRlcy5zZXQgcmVzIChxICsgMSkgYztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAyKSBsZW5cbiAgICBlbmRcbiAgZW5kXG5cbmxldCByZXBsYWNlbWVudF90ZXh0IHJlcGwgb3JpZyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHJlcGwgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocmVwbF9sZW5ndGggcmVwbCAwIDAgbGVuKSBpblxuICByZXBsYWNlIG9yaWcgcmVwbCAwIHJlcyAwIChTdHJpbmcubGVuZ3RoIHJlcGwpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBzdHJpbmdfYmVmb3JlIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IGZpcnN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IGxhc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIChTdHJpbmcubGVuZ3RoIHMgLSBuKSBuXG5cbmxldCByZWdleHAgZSA9IGNvbXBpbGVfcmVnZXhwIGUgZmFsc2VcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgZSA9IGNvbXBpbGVfcmVnZXhwIGUgdHJ1ZVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIGZhbHNlXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIHRydWVcblxubGV0IGdyb3VwX2JlZ2lubmluZyBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2JlZ2lubmluZ1wiO1xuICBsZXQgcG9zID0gZnN0IChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBncm91cF9lbmQgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9lbmRcIjtcbiAgbGV0IHBvcyA9IHNuZCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgbWF0Y2hlZF9ncm91cCBuIHR4dCA9XG4gIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgbiBpblxuICBTdHJpbmcuc3ViIHR4dCBiIChlIC0gYilcblxubGV0IHJlcGxhY2VfbWF0Y2hlZCByZXBsIG1hdGNoZWQgPSByZXBsYWNlbWVudF90ZXh0IHJlcGwgbWF0Y2hlZFxuXG5sZXQgbWF0Y2hfYmVnaW5uaW5nICgpID0gZ3JvdXBfYmVnaW5uaW5nIDBcbmFuZCBtYXRjaF9lbmQgKCkgPSBncm91cF9lbmQgMFxuYW5kIG1hdGNoZWRfc3RyaW5nIHR4dCA9IG1hdGNoZWRfZ3JvdXAgMCB0eHRcblxubGV0IHN1YnN0aXR1dGVfZmlyc3QgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCAwIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtzdHJpbmdfYmVmb3JlIHRleHQgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgIHJlcGxfZnVuIHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2FmdGVyIHRleHQgKG1hdGNoX2VuZCAoKSldXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdGV4dFxuXG5sZXQgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgbGV0IHJlYyByZXBsYWNlIGFjY3Ugc3RhcnQgbGFzdF93YXNfZW1wdHkgPVxuICAgIGxldCBzdGFydHBvcyA9IGlmIGxhc3Rfd2FzX2VtcHR5IHRoZW4gc3RhcnQgKyAxIGVsc2Ugc3RhcnQgaW5cbiAgICBpZiBzdGFydHBvcyA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgc3RhcnRwb3Mgd2l0aFxuICAgICAgfCBwb3MgLT5cbiAgICAgICAgbGV0IGVuZF9wb3MgPSBtYXRjaF9lbmQgKCkgaW5cbiAgICAgICAgbGV0IHJlcGxfdGV4dCA9IHJlcGxfZnVuIHRleHQgaW5cbiAgICAgICAgcmVwbGFjZSAocmVwbF90ZXh0IDo6IFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIGVuZF9wb3MgKGVuZF9wb3MgPSBwb3MpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gIGluXG4gIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgKHJlcGxhY2UgW10gMCBmYWxzZSkpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSBleHByIHJlcGwgdGV4dCA9XG4gIGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuYW5kIHJlcGxhY2VfZmlyc3QgZXhwciByZXBsIHRleHQgPVxuICBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuXG5sZXQgc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgcmUgcyBwID1cbiAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCBpblxuICBpZiBtYXRjaF9lbmQgKCkgPiBwIHRoZW5cbiAgICBwb3NcbiAgZWxzZSBpZiBwIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBzZWFyY2hfZm9yd2FyZCByZSBzIChwICsgMSlcbiAgZWxzZVxuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgYm91bmRlZF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBpZiBzdHJpbmdfbWF0Y2ggZXhwciB0ZXh0IDAgdGhlbiBtYXRjaF9lbmQgKCkgZWxzZSAwIGluXG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSBzdGFydCBudW0pXG5cbmxldCBzcGxpdCBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCAwXG5cbmxldCBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBpZiB0ZXh0ID0gXCJcIiB0aGVuXG4gICAgW11cbiAgZWxzZVxuICAgIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IHNwbGl0X2RlbGltIGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IDBcblxudHlwZSBzcGxpdF9yZXN1bHQgPSBUZXh0IG9mIHN0cmluZyB8IERlbGltIG9mIHN0cmluZ1xuXG5sZXQgYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgbGV0IHMgPSBtYXRjaGVkX3N0cmluZyB0ZXh0IGluXG4gICAgICAgIGlmIHBvcyA+IHN0YXJ0IHRoZW5cbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6XG4gICAgICAgICAgICAgICAgIFRleHQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zIC0gc3RhcnQpKSA6OlxuICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OiBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgZnVsbF9zcGxpdCBleHByIHRleHQgPSBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IDBcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgZW5jbG9zZWQgPVxuICB8IENoYXIgb2YgY2hhclxuICB8IFJhbmdlIG9mIGNoYXIgKiBjaGFyXG5cbnR5cGUgcGllY2UgPVxuICB8IEV4YWN0bHkgb2YgY2hhclxuICB8IEFueV9vZiBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgQW55X2J1dCBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgT25lXG4gIHwgTWFueVxuICB8IE1hbnlNYW55XG5cbnR5cGUgdCA9IHBpZWNlIGxpc3RcblxubGV0IG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMgOiB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCByZWFkIGMgPVxuICAgIGxldCByID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgICBpZiByIHRoZW4gaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICAoKipcbiAgIFtyZWFkX2FoZWFkIHBhdHRlcm5dIHdpbGwgYXR0ZW1wdCB0byByZWFkIFtwYXR0ZXJuXSBhbmQgd2lsbCByZXR1cm4gW3RydWVdIGlmIGl0IHdhcyBzdWNjZXNzZnVsLlxuICAgSWYgaXQgZmFpbHMsIGl0IHdpbGwgcmV0dXJuIFtmYWxzZV0gYW5kIG5vdCBpbmNyZW1lbnQgdGhlIHJlYWQgaW5kZXguXG4gICopXG4gIGxldCByZWFkX2FoZWFkIHBhdHRlcm4gPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggcGF0dGVybiBpblxuICAgICgqIGlmIHRoZSBwYXR0ZXJuIHdlIGFyZSBsb29raW5nIGZvciBleGVlZHMgdGhlIHJlbWFpbmluZyBsZW5ndGggb2YgcywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5ICopXG4gICAgaWYgIWkgKyBwYXR0ZXJuX2xlbiA+PSBsIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMCB0byBwYXR0ZXJuX2xlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgZm91bmQgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWkgKyBqXSA9IHBhdHRlcm4uW2pdIGluXG4gICAgICAgICAgaWYgbm90IGZvdW5kIHRoZW4gcmFpc2Vfbm90cmFjZSBFeGl0O1xuICAgICAgICBkb25lO1xuICAgICAgICBpIDo9ICFpICsgcGF0dGVybl9sZW47XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggfCBFeGl0ICAtPiBmYWxzZVxuICBpblxuXG4gIGxldCBjaGFyICgpID1cbiAgICBpZ25vcmUgKHJlYWQgJ1xcXFwnIDogYm9vbCk7XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IHIgPSBzLlshaV0gaW5cbiAgICBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gIGxldCBlbmNsb3NlZCAoKSA6IGVuY2xvc2VkIGxpc3QgPVxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgICgqIFRoaXMgcmV0dXJucyB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyLCBidXQgb3JkZXIgaXNuJ3QgaW1wb3J0YW50IGFueXdheSAqKVxuICAgICAgaWYgcyA8PiBbXSAmJiByZWFkICddJ1xuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgICBpZiBub3QgKHJlYWQgJy0nKVxuICAgICAgICB0aGVuIGxvb3AgKENoYXIgYyA6OiBzKVxuICAgICAgICBlbHNlIGlmIHJlYWQgJ10nXG4gICAgICAgIHRoZW4gQ2hhciBjIDo6IENoYXIgJy0nIDo6IHNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBsb29wIChSYW5nZSAoYywgYycpIDo6IHMpXG4gICAgaW5cbiAgICBsb29wIFtdXG4gIGluXG5cbiAgbGV0IHBpZWNlICgpID1cbiAgICBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZF9haGVhZCBcIi8qKlwiICYmIG5vdCAoZW9zICgpKVxuICAgIHRoZW4gTWFueU1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJyonXG4gICAgdGhlbiBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZCAnKidcbiAgICAgIHRoZW4gTWFueU1hbnlcbiAgICAgIGVsc2UgTWFueVxuICAgIGVsc2UgaWYgcmVhZCAnPydcbiAgICB0aGVuIE9uZVxuICAgIGVsc2UgaWYgbm90IChyZWFkICdbJylcbiAgICB0aGVuIEV4YWN0bHkgKGNoYXIgKCkpXG4gICAgZWxzZSBpZiByZWFkICdeJyB8fCByZWFkICchJ1xuICAgIHRoZW4gQW55X2J1dCAoZW5jbG9zZWQgKCkpXG4gICAgZWxzZSBBbnlfb2YgKGVuY2xvc2VkICgpKVxuICBpblxuXG4gIGxldCByZWMgbG9vcCBwaWVjZXMgPVxuICAgIGlmIGVvcyAoKVxuICAgIHRoZW4gTGlzdC5yZXYgcGllY2VzXG4gICAgZWxzZSBsb29wIChwaWVjZSAoKSA6OiBwaWVjZXMpXG4gIGluXG5cbiAgbG9vcCBbXVxuXG5sZXQgbXVsIGwgbCcgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gcyAtPiBMaXN0Lm1hcCAoZnVuIHMnIC0+IHMgXiBzJykgbCcpIGwpXG5cbmxldCBleHBsb2RlIHN0ciA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBleHBsIGlubmVyIHMgaSBhY2MgYmVnID1cbiAgICBpZiBpID49IGwgdGhlbiBiZWdpblxuICAgICAgaWYgaW5uZXIgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldLCBpKVxuICAgIGVuZCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXFwnIC0+IGV4cGwgaW5uZXIgcyAoaSArIDIpIGFjYyBiZWdcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIGxldCAodCwgaScpID0gZXhwbCB0cnVlIChpICsgMSkgKGkgKyAxKSBbXSBbXCJcIl0gaW5cbiAgICAgICAgZXhwbCBpbm5lciBpJyBpJyBhY2NcbiAgICAgICAgICAobXVsIGJlZyAobXVsIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIHQpKVxuICAgICAgfCAnLCcgd2hlbiBpbm5lciAtPlxuICAgICAgICBleHBsIGlubmVyIChpICsgMSkgKGkgKyAxKVxuICAgICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjKSBbXCJcIl1cbiAgICAgIHwgJ30nIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MsIGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgcyAoaSArIDEpIGFjYyBiZWdcbiAgaW5cbiAgTGlzdC5yZXYgKGZzdCAoZXhwbCBmYWxzZSAwIDAgW10gW1wiXCJdKSlcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZV9waWVjZXMgICAgICAgICAgICAgICAgOiBSZS50IGxpc3Q7ICAoKiBsYXN0IHBpZWNlIGF0IGhlYWQgb2YgbGlzdC4gKilcbiAgICByZW1haW5pbmcgICAgICAgICAgICAgICAgOiBwaWVjZSBsaXN0OyAoKiBsYXN0IHBpZWNlIGF0IHRhaWwgb2YgbGlzdC4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuICAgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gb3IgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciAnLycgKilcbiAgICBwYXRobmFtZSAgICAgICAgICAgICAgICAgOiBib29sO1xuICAgIG1hdGNoX2JhY2tzbGFzaGVzICAgICAgICA6IGJvb2w7XG4gICAgcGVyaW9kICAgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfnBlcmlvZCB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIHJlbWFpbmluZyA9XG4gICAge1xuICAgICAgcmVfcGllY2VzID0gW107XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gdHJ1ZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IHRydWU7XG4gICAgICBwYXRobmFtZTtcbiAgICAgIG1hdGNoX2JhY2tzbGFzaGVzO1xuICAgICAgcGVyaW9kO1xuICAgICAgcmVtYWluaW5nO1xuICAgIH1cblxuICBsZXQgZXhwbGljaXRfcGVyaW9kIHQgPVxuICAgIHQucGVyaW9kICYmIChcbiAgICAgIHQuYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiB8fFxuICAgICAgKHQuYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ICYmIHQucGF0aG5hbWUpXG4gICAgKVxuXG4gIGxldCBleHBsaWNpdF9zbGFzaCB0ID0gdC5wYXRobmFtZVxuXG4gIGxldCBzbGFzaGVzIHQgPVxuICAgIGlmIHQubWF0Y2hfYmFja3NsYXNoZXMgdGhlbiBbJy8nOyAnXFxcXCddIGVsc2UgWycvJ11cblxuICBsZXQgYXBwZW5kID8oYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50PWZhbHNlKSB0IHBpZWNlID1cbiAgICB7IHQgd2l0aFxuICAgICAgcmVfcGllY2VzID0gcGllY2UgOjogdC5yZV9waWVjZXM7XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gZmFsc2U7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ7XG4gICAgfVxuXG4gIGxldCB0b19yZSB0ID0gUmUuc2VxIChMaXN0LnJldiB0LnJlX3BpZWNlcylcblxuICBsZXQgbmV4dCB0ID1cbiAgICBtYXRjaCB0LnJlbWFpbmluZyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBwaWVjZSA6OiByZW1haW5pbmcgLT4gU29tZSAocGllY2UsIHsgdCB3aXRoIHJlbWFpbmluZyB9KVxuZW5kXG5cbmxldCBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgPVxuICBSZS5jb21wbCAoXG4gICAgTGlzdC5jb25jYXQgW1xuICAgICAgaWYgZXhwbGljaXRfc2xhc2ggIHRoZW4gTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzIGVsc2UgW107XG4gICAgICBpZiBleHBsaWNpdF9wZXJpb2QgdGhlbiBbUmUuY2hhciAnLiddIGVsc2UgW107XG4gICAgXVxuICApXG5cbmxldCBlbmNsb3NlZCBlbmNsb3NlZCA9XG4gIG1hdGNoIGVuY2xvc2VkIHdpdGhcbiAgfCBDaGFyIGMgLT4gUmUuY2hhciBjXG4gIHwgUmFuZ2UgKGxvdywgaGlnaCkgLT4gUmUucmcgbG93IGhpZ2hcblxubGV0IGVuY2xvc2VkX3NldCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBraW5kIHNldCA9XG4gIGxldCBzZXQgPSBMaXN0Lm1hcCBlbmNsb3NlZCBzZXQgaW5cbiAgbGV0IGVuY2xvc3VyZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQW55X29mIC0+IFJlLmFsdCBzZXRcbiAgICB8IGBBbnlfYnV0IC0+IFJlLmNvbXBsIHNldFxuICBpblxuICBSZS5pbnRlciBbZW5jbG9zdXJlOyBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2RdXG5cbmxldCBleGFjdGx5IHN0YXRlIGMgPVxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IExpc3QubWVtIGMgc2xhc2hlcyBpblxuICBsZXQgY2hhcnMgPSBpZiBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgdGhlbiBzbGFzaGVzIGVsc2UgW2NdIGluXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIGNoYXJzKSkgfmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudFxuXG5sZXQgbWFueV9tYW55IHN0YXRlID1cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IHN0YXRlLlN0YXRlLnBlcmlvZCAmJiBzdGF0ZS5TdGF0ZS5wYXRobmFtZSBpblxuICBsZXQgZmlyc3RfZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgbWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QgPVxuICAgIFJlLnNlcSBbXG4gICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgXVxuICBpblxuICAoKiBXZSBtdXN0IG1hdGNoIGNvbXBvbmVudHMgaW5kaXZpZHVhbGx5IHdoZW4gW3BlcmlvZF0gZmxhZyBpcyBzZXQsXG4gICAgIG1ha2luZyBzdXJlIHRvIG5vdCBtYXRjaCBbXCJmb28vLmJhclwiXS4gKilcbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChcbiAgICBSZS5zZXEgW1xuICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZDpmaXJzdF9leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgUmUucmVwIChcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyk7XG4gICAgICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCk7XG4gICAgICAgIF1cbiAgICAgICk7XG4gICAgXSlcblxubGV0IG1hbnkgKHN0YXRlIDogU3RhdGUudCkgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICAoKiBXaGV0aGVyIHdlIG11c3QgZXhwbGljaXRseSBtYXRjaCBwZXJpb2QgZGVwZW5kcyBvbiB0aGUgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgYnV0XG4gICAgIHNsYXNoZXMgYXJlIGVhc3kgdG8gZXhwbGljaXQgbWF0Y2guIFRoaXMgY29uZGl0aW9uYWwgc3BsaXRzIG91dCBzb21lIHNpbXBsZSBjYXNlcy5cbiAgKilcbiAgaWYgbm90IGV4cGxpY2l0X3BlcmlvZCB0aGVuIGJlZ2luXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCkpXG4gIGVuZCBlbHNlIGlmIG5vdCBleHBsaWNpdF9zbGFzaCB0aGVuIGJlZ2luXG4gICAgKCogSW4gdGhpcyBzdGF0ZSwgd2UgZXhwbGljaXRseSBtYXRjaCBwZXJpb2RzIG9ubHkgYXQgdGhlIHZlcnkgYmVnaW5uaW5nICopXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5vcHQgKFxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICApKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIGxldCBub3RfZW1wdHkgPVxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICBpblxuICAgICgqIFttYXliZV9lbXB0eV0gaXMgdGhlIGRlZmF1bHQgdHJhbnNsYXRpb24gb2YgTWFueSwgZXhjZXB0IGluIHNvbWUgc3BlY2lhbCBjYXNlcy5cbiAgICAqKVxuICAgIGxldCBtYXliZV9lbXB0eSA9IFJlLm9wdCBub3RfZW1wdHkgaW5cbiAgICBsZXQgZW5jbG9zZWRfc2V0IHN0YXRlIGtpbmQgc2V0ID1cbiAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IFtcbiAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBub3RfZW1wdHk7XG4gICAgICAgICAgKCogU2luY2UgW25vdF9lbXB0eV0gbWF0Y2hlZCwgc3Vic2VxdWVudCBkb3RzIGFyZSBub3QgbGVhZGluZy4gKilcbiAgICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZTtcbiAgICAgICAgXTtcbiAgICAgIF0pXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb2thaGVhZCBzdGF0ZSA9XG4gICAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbWF5YmVfZW1wdHlcbiAgICAgICgqIGdsb2IgKiogPT09IGdsb2IgKiAuICopXG4gICAgICB8IFNvbWUgKE1hbnksIHN0YXRlKSAtPiBsb29rYWhlYWQgc3RhdGVcbiAgICAgIHwgU29tZSAoRXhhY3RseSBjLCBzdGF0ZSkgLT5cbiAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICBTdGF0ZS5hcHBlbmQgc3RhdGVcbiAgICAgICAgICAgIChpZiBjID0gJy4nXG4gICAgICAgICAgICAgdGhlbiBub3RfZW1wdHlcbiAgICAgICAgICAgICBlbHNlIG1heWJlX2VtcHR5KVxuICAgICAgICBpblxuICAgICAgICBleGFjdGx5IHN0YXRlIGNcbiAgICAgICgqIGdsb2IgKj8gPT09IGdsb2IgPyogKilcbiAgICAgIHwgU29tZSAoT25lLCBzdGF0ZSkgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG5vdF9lbXB0eVxuICAgICAgfCBTb21lIChBbnlfb2YgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9vZiBlbmNsb3NlZFxuICAgICAgfCBTb21lIChBbnlfYnV0IGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfYnV0IGVuY2xvc2VkXG4gICAgICAoKiAqIHRoZW4gKiogPT09ICoqICopXG4gICAgICB8IFNvbWUgKE1hbnlNYW55LCBzdGF0ZSkgLT4gbWFueV9tYW55IHN0YXRlXG4gICAgaW5cbiAgICBsb29rYWhlYWQgc3RhdGVcbiAgZW5kXG5cbmxldCBwaWVjZSBzdGF0ZSBwaWVjZSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIG1hdGNoIHBpZWNlIHdpdGhcbiAgfCBPbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpXG4gIHwgTWFueSAtPiBtYW55IHN0YXRlXG4gIHwgQW55X29mIGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9vZiB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBBbnlfYnV0IGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9idXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgRXhhY3RseSBjIC0+IGV4YWN0bHkgc3RhdGUgY1xuICB8IE1hbnlNYW55IC0+IG1hbnlfbWFueSBzdGF0ZVxuXG5sZXQgZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYiA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IFN0YXRlLnRvX3JlIHN0YXRlXG4gICAgfCBTb21lIChwLCBzdGF0ZSkgLT4gbG9vcCAocGllY2Ugc3RhdGUgcClcbiAgaW5cbiAgbG9vcCAoU3RhdGUuY3JlYXRlIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iKVxuXG5sZXQgZ2xvYlxuICAgICAgPyhhbmNob3JlZCA9IGZhbHNlKVxuICAgICAgPyhwYXRobmFtZSA9IHRydWUpXG4gICAgICA/KG1hdGNoX2JhY2tzbGFzaGVzID0gZmFsc2UpXG4gICAgICA/KHBlcmlvZCA9IHRydWUpXG4gICAgICA/KGV4cGFuZF9icmFjZXMgPSBmYWxzZSlcbiAgICAgID8oZG91YmxlX2FzdGVyaXNrID0gdHJ1ZSlcbiAgICAgIHNcbiAgPVxuICBsZXQgdG9fcmUgcyA9XG4gICAgbGV0IHJlID0gZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgKG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMpIGluXG4gICAgaWYgYW5jaG9yZWRcbiAgICB0aGVuIFJlLndob2xlX3N0cmluZyByZVxuICAgIGVsc2UgcmVcbiAgaW5cbiAgaWYgZXhwYW5kX2JyYWNlc1xuICB0aGVuIFJlLmFsdCAoTGlzdC5tYXAgdG9fcmUgKGV4cGxvZGUgcykpXG4gIGVsc2UgdG9fcmUgc1xuXG5sZXQgZ2xvYicgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfnBlcmlvZCBzXG5cbmxldCBnbG9ieCA/YW5jaG9yZWQgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgc1xuXG5sZXQgZ2xvYngnID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgfnBlcmlvZCBzXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBvc2l4X2NsYXNzX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJhbHBoYVwiICAtPiBSZS5hbHBoYVxuICB8IFwiYWxudW1cIiAgLT4gUmUuYWxudW1cbiAgfCBcImFzY2lpXCIgIC0+IFJlLmFzY2lpXG4gIHwgXCJibGFua1wiICAtPiBSZS5ibGFua1xuICB8IFwiY250cmxcIiAgLT4gUmUuY250cmxcbiAgfCBcImRpZ2l0XCIgIC0+IFJlLmRpZ2l0XG4gIHwgXCJsb3dlclwiICAtPiBSZS5sb3dlclxuICB8IFwicHJpbnRcIiAgLT4gUmUucHJpbnRcbiAgfCBcInNwYWNlXCIgIC0+IFJlLnNwYWNlXG4gIHwgXCJ1cHBlclwiICAtPiBSZS51cHBlclxuICB8IFwid29yZFwiICAgLT4gUmUud29yZGNcbiAgfCBcInB1bmN0XCIgIC0+IFJlLnB1bmN0XG4gIHwgXCJncmFwaFwiICAtPiBSZS5ncmFwaFxuICB8IFwieGRpZ2l0XCIgLT4gUmUueGRpZ2l0XG4gIHwgY2xhc3NfICAgLT4gaW52YWxpZF9hcmcgKFwiSW52YWxpZCBwY3JlIGNsYXNzOiBcIiBeIGNsYXNzXylcblxubGV0IHBvc2l4X2NsYXNzX3N0cmluZ3MgPVxuICBbIFwiYWxwaGFcIiA7IFwiYWxudW1cIiA7IFwiYXNjaWlcIlxuICA7IFwiYmxhbmtcIiA7IFwiY250cmxcIiA7IFwiZGlnaXRcIlxuICA7IFwibG93ZXJcIiA7IFwicHJpbnRcIiA7IFwic3BhY2VcIlxuICA7IFwidXBwZXJcIiA7IFwid29yZFwiICA7IFwicHVuY3RcIlxuICA7IFwiZ3JhcGhcIiA7IFwieGRpZ2l0XCIgXVxuXG5sZXQgcGFyc2UgbXVsdGlsaW5lIGRvbGxhcl9lbmRvbmx5IGRvdGFsbCB1bmdyZWVkeSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHRfcyBzJyA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcycgaW5cbiAgICB0cnlcbiAgICAgIGZvciBqID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHRyeSBpZiBzJy5bal0gPD4gcy5bIWkgKyBqXSB0aGVuIHJhaXNlIEV4aXRcbiAgICAgICAgd2l0aCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBpIDo9ICFpICsgbGVuO1xuICAgICAgdHJ1ZVxuICAgIHdpdGggRXhpdCAtPiBmYWxzZSBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuICBsZXQgZ3JlZWR5X21vZCByID1cbiAgICBsZXQgZ3IgPSBhY2NlcHQgJz8nIGluXG4gICAgbGV0IGdyID0gaWYgdW5ncmVlZHkgdGhlbiBub3QgZ3IgZWxzZSBnciBpblxuICAgIGlmIGdyIHRoZW4gUmUubm9uX2dyZWVkeSByIGVsc2UgUmUuZ3JlZWR5IHJcbiAgaW5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAxIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gZ3JlZWR5X21vZCAoUmUub3B0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGdyZWVkeV9tb2QgKFJlLnJlcG4gciBpIGopXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgZG90YWxsIHRoZW4gUmUuYW55IGVsc2UgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPycgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICByXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnIycgdGhlbiBiZWdpblxuICAgICAgICAgIGNvbW1lbnQgKClcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lICgpIGluXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgUmUuZ3JvdXAgfm5hbWUgclxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmVvbCBlbHNlIGlmIGRvbGxhcl9lbmRvbmx5IHRoZW4gUmUubGVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4oKiBYWFhcbiAgIC0gQmFjay1yZWZlcmVuY2VzXG4gICAtIFxcY3ggKGNvbnRyb2wteCksIFxcZGRkXG4qKVxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAndycgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ1cnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgUmUuc3BhY2VcbiAgICAgIHwgJ1MnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLnNwYWNlXVxuICAgICAgfCAnZCcgLT5cbiAgICAgICAgICBSZS5kaWdpdFxuICAgICAgfCAnRCcgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuZGlnaXRdXG4gICAgICB8ICdiJyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICB8ICdCJyAtPlxuICAgICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgfCAnQScgLT5cbiAgICAgICAgICBSZS5ib3NcbiAgICAgIHwgJ1onIC0+XG4gICAgICAgICAgUmUubGVvbFxuICAgICAgfCAneicgLT5cbiAgICAgICAgICBSZS5lb3NcbiAgICAgIHwgJ0cnIC0+XG4gICAgICAgICAgUmUuc3RhcnRcbiAgICAgIHwgJ2UnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MWInXG4gICAgICB8ICdmJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDBjJ1xuICAgICAgfCAnbicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXG4nXG4gICAgICB8ICdyJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xccidcbiAgICAgIHwgJ3QnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx0J1xuICAgICAgfCAneCcgLT5cbiAgICAgICAgICBsZXQgYzEgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjMiA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGNvZGUgPSBjMSAqIDE2ICsgYzIgaW5cbiAgICAgICAgICBSZS5jaGFyIChjaGFyX29mX2ludCBjb2RlKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBSZS5jaGFyIGNcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGhleGRpZ2l0ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdhJy4uJ2YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8ICdBJy4uJ0YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIG5hbWUgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicpIGFzIGMgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAzMiBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIG5hbWUnIGIgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JykgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8ICc+JyAtPiBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgfCBgQ2hhciBjIC0+XG4gICAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgICAgICAgICAgYENoYXIgYycgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICAgICAgfCBgU2V0IHN0JyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogc3QnIDo6IHMpXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgICB8IGBTZXQgc3QgLT4gYnJhY2tldCAoc3QgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgIGlmIGFjY2VwdCAnOicgdGhlblxuICAgICAgICBsZXQgY29tcGwgPSBhY2NlcHQgJ14nIGluXG4gICAgICAgIGxldCBjbHMgPVxuICAgICAgICAgIHRyeSBMaXN0LmZpbmQgYWNjZXB0X3MgcG9zaXhfY2xhc3Nfc3RyaW5nc1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIFBhcnNlX2Vycm9yIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0X3MgXCI6XVwiKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgcmUgPVxuICAgICAgICAgIGxldCBwb3NpeF9jbGFzcyA9IHBvc2l4X2NsYXNzX29mX3N0cmluZyBjbHMgaW5cbiAgICAgICAgICBpZiBjb21wbCB0aGVuIFJlLmNvbXBsIFtwb3NpeF9jbGFzc10gZWxzZSBwb3NpeF9jbGFzcyBpblxuICAgICAgICBgU2V0IChyZSlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBgQ2hhciBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2UgaWYgYyA9ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4oKiBYWFhcbiAgIFxcMTI3LCAuLi5cbiopXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJ2InIC0+IGBDaGFyICdcXDAwOCdcbiAgICAgIHwgJ24nIC0+IGBDaGFyICdcXG4nICgqWFhYKilcbiAgICAgIHwgJ3InIC0+IGBDaGFyICdcXHInICgqWFhYKilcbiAgICAgIHwgJ3QnIC0+IGBDaGFyICdcXHQnICgqWFhYKilcbiAgICAgIHwgJ3cnIC0+IGBTZXQgKFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ1cnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAncycgLT4gYFNldCAoUmUuc3BhY2UpXG4gICAgICB8ICdTJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuc3BhY2VdKVxuICAgICAgfCAnZCcgLT4gYFNldCAoUmUuZGlnaXQpXG4gICAgICB8ICdEJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuZGlnaXRdKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGBDaGFyIGNcbiAgYW5kIGNvbW1lbnQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGlmIGFjY2VwdCAnKScgdGhlbiBSZS5lcHNpbG9uIGVsc2UgYmVnaW4gaW5jciBpOyBjb21tZW50ICgpIGVuZFxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPVxuICBbIGBVbmdyZWVkeSB8IGBEb3RhbGwgfCBgRG9sbGFyX2VuZG9ubHlcbiAgfCBgTXVsdGlsaW5lIHwgYEFuY2hvcmVkIHwgYENhc2VsZXNzIF1cblxubGV0IHJlICA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID1cbiAgICBwYXJzZVxuICAgICAgKExpc3QubWVtcSBgTXVsdGlsaW5lIG9wdHMpIChMaXN0Lm1lbXEgYERvbGxhcl9lbmRvbmx5IG9wdHMpXG4gICAgICAoTGlzdC5tZW1xIGBEb3RhbGwgb3B0cykgKExpc3QubWVtcSBgVW5ncmVlZHkgb3B0cylcbiAgICAgIHNcbiAgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYEFuY2hvcmVkIG9wdHMgdGhlbiBSZS5zZXEgW1JlLnN0YXJ0OyByXSBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYENhc2VsZXNzIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwibW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQZXJsLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZCA9IFBlcmwuTm90X3N1cHBvcnRlZFxuXG50eXBlIHJlZ2V4cCA9IFJlLnJlXG5cbnR5cGUgZmxhZyA9IFsgYENBU0VMRVNTIHwgYE1VTFRJTElORSB8IGBBTkNIT1JFRCB8IGBET1RBTEwgXVxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9XG4gIHwgVGV4dCAgb2Ygc3RyaW5nXG4gIHwgRGVsaW0gb2Ygc3RyaW5nXG4gIHwgR3JvdXAgb2YgaW50ICogc3RyaW5nXG4gIHwgTm9Hcm91cFxuXG50eXBlIGdyb3VwcyA9IENvcmUuR3JvdXAudFxuXG5sZXQgcmUgPyhmbGFncyA9IFtdKSBwYXQgPVxuICBsZXQgb3B0cyA9IExpc3QubWFwIChmdW5jdGlvblxuICAgIHwgYENBU0VMRVNTIC0+IGBDYXNlbGVzc1xuICAgIHwgYE1VTFRJTElORSAtPiBgTXVsdGlsaW5lXG4gICAgfCBgQU5DSE9SRUQgLT4gYEFuY2hvcmVkXG4gICAgfCBgRE9UQUxMIC0+IGBEb3RhbGxcbiAgKSBmbGFncyBpblxuICBQZXJsLnJlIH5vcHRzIHBhdFxuXG5sZXQgcmVnZXhwID9mbGFncyBwYXQgPSBSZS5jb21waWxlIChyZSA/ZmxhZ3MgcGF0KVxuXG5sZXQgZXh0cmFjdCB+cmV4IHMgPVxuICBSZS5Hcm91cC5hbGwgKFJlLmV4ZWMgcmV4IHMpXG5cbmxldCBleGVjIH5yZXggP3BvcyBzID1cbiAgUmUuZXhlYyByZXggP3BvcyBzXG5cbmxldCBnZXRfc3Vic3RyaW5nIHMgaSA9XG4gIFJlLkdyb3VwLmdldCBzIGlcblxubGV0IG5hbWVzIHJleCA9XG4gIFJlLmdyb3VwX25hbWVzIHJleFxuICB8PiBMaXN0Lm1hcCBmc3RcbiAgfD4gQXJyYXkub2ZfbGlzdFxuXG5sZXQgZ2V0X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgKG4sIGkpIDo6IHJlbSB3aGVuIG4gPSBuYW1lIC0+XG4gICAgICAgYmVnaW5cbiAgICAgICAgIHRyeSBnZXRfc3Vic3RyaW5nIHMgaVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gbG9vcCByZW1cbiAgICAgICBlbmRcbiAgICB8IF8gOjogcmVtIC0+IGxvb3AgcmVtXG4gIGluXG4gIGxvb3AgKFJlLmdyb3VwX25hbWVzIHJleClcblxubGV0IGdldF9zdWJzdHJpbmdfb2ZzIHMgaSA9XG4gIFJlLkdyb3VwLm9mZnNldCBzIGlcblxubGV0IHBtYXRjaCB+cmV4IHMgPVxuICBSZS5leGVjcCByZXggc1xuXG5sZXQgc3Vic3RpdHV0ZSB+cmV4IH5zdWJzdCBzdHIgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcGF0ID0gUmUuR3JvdXAuZ2V0IHNzIDAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3Vic3QgcGF0KTtcbiAgICAgIGxvb3AgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpO1xuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKVxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IH5yZXggc3RyID1cbiAgbGV0IHJlYyBsb29wIGFjY3UgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgTGlzdC5yZXYgYWNjdVxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChzdGFydCAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgICkgaW5cbiAgbG9vcCBbXSAwXG5cbigqIEZyb20gUENSRSAqKVxubGV0IHN0cmluZ191bnNhZmVfc3ViIHMgb2ZzIGxlbiA9XG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBCeXRlcy51bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKGxlbiBsc2wgMSkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICB8ICdcXFxcJyB8ICdeJyB8ICckJyB8ICcuJyB8ICdbJyB8ICd8J1xuICAgIHwgJygnICB8ICcpJyB8ICc/JyB8ICcqJyB8ICcrJyB8ICd7JyBhcyBjIC0+XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zICdcXFxcJztcbiAgICAgIGluY3IgcG9zO1xuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICAgIHwgYyAtPiBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gIGRvbmU7XG4gIHN0cmluZ191bnNhZmVfc3ViIGJ1ZiAwICFwb3NcblxubGV0IGZ1bGxfc3BsaXQgPyhtYXg9MCkgfnJleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMCB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtUZXh0IHNdXG4gIGVsc2VcbiAgICBsZXQgcmVzdWx0cyA9IFJlLnNwbGl0X2Z1bGwgcmV4IHMgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBgVGV4dCBzIC0+IFtUZXh0IHNdXG4gICAgICAgIHwgYERlbGltIGQgLT5cbiAgICAgICAgICBsZXQgbWF0Y2hlcyA9IFJlLkdyb3VwLmFsbF9vZmZzZXQgZCBpblxuICAgICAgICAgIGxldCBkZWxpbSA9IFJlLkdyb3VwLmdldCBkIDAgaW5cbiAgICAgICAgICAoRGVsaW0gZGVsaW0pOjooXG4gICAgICAgICAgICBsZXQgbCA9IHJlZiBbXSBpblxuICAgICAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBtYXRjaGVzIC0gMSBkb1xuICAgICAgICAgICAgICBsIDo9XG4gICAgICAgICAgICAgICAgKGlmIG1hdGNoZXMuKGkpID0gKC0xLCAtMSlcbiAgICAgICAgICAgICAgICAgdGhlbiBOb0dyb3VwXG4gICAgICAgICAgICAgICAgIGVsc2UgR3JvdXAgKGksIFJlLkdyb3VwLmdldCBkIGkpKVxuICAgICAgICAgICAgICAgIDo6KCFsKVxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIExpc3QucmV2ICFsKSkgcmVzdWx0cyBpblxuICAgIExpc3QuY29uY2F0IG1hdGNoZXNcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG4oKlxuV2hhdCB3ZSBjb3VsZCAoc2hvdWxkPykgZG86XG4tIGEqID09PiBsb25nZXN0ICgoc2hvcnRlc3QgKG5vX2dyb3VwIGEpKiApLCBhIHwgKCkpICAoISEhKVxuLSBhYmMgdW5kZXJzdG9vZCBhcyAoYWIpY1xuLSBcIigoYT8pfGIpXCIgYWdhaW5zdCBcImFiXCIgc2hvdWxkIG5vdCBiaW5kIHRoZSBmaXJzdCBzdWJwYXR0ZXJuIHRvIGFueXRoaW5nXG5cbk5vdGUgdGhhdCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaGFuZGxlIFwiKCgoYWIpYylkKWVcIiBlZmZpY2llbnRseVxuKilcbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgbmV3bGluZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgUmUucmVwbiAoUmUubmVzdCByKSBpIGpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUubm90bmwgZWxzZSBSZS5hbnlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBSZS5ncm91cCByXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5lb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5kaWZmIChSZS5jb21wbCAoYnJhY2tldCBbXSkpIChSZS5jaGFyICdcXG4nKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3wnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJz8nXG4gICAgICB8ICdbJyB8ICcuJyB8ICdeJyB8ICckJyB8ICd7JyB8ICdcXFxcJyBhcyBjIC0+IFJlLmNoYXIgY1xuICAgICAgfCAgICAgICAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWQgKCpYWFgqKVxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGNcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID0gW2BJQ2FzZSB8IGBOb1N1YiB8IGBOZXdsaW5lXVxuXG5sZXQgcmUgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9IHBhcnNlIChMaXN0Lm1lbXEgYE5ld2xpbmUgb3B0cykgcyBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgSUNhc2Ugb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYE5vU3ViIG9wdHMgdGhlbiBSZS5ub19ncm91cCByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlIHJlID0gUmUuY29tcGlsZSAoUmUubG9uZ2VzdCByZSlcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDEzIEdhYnJpZWwgUmFkYW5uZSA8ZHJ1cHlvZytjYW1sQHpvaG8uY29tPlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICB0eXBlICgtJ2EsICdiKSBmdFxuICB2YWwgZm1hcCA6ICgnYSwgJ2IpIGZ0IC0+ICdhIHQgLT4gJ2IgdFxuXG4gIHR5cGUgJ2EgdGxpc3RcbiAgdmFsIG5pbCA6IHVuaXQgLT4gJ2EgdGxpc3RcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIHQgLT4gJ2EgdGxpc3RcbiAgdmFsIGNvbnMgOiAnYSB0IC0+ICdhIHRsaXN0IC0+ICdhIHRsaXN0XG4gIHZhbCBhcHBlbmQgOiAnYSB0bGlzdCAtPiAnYSB0bGlzdCAtPiAnYSB0bGlzdFxuICB2YWwgbWFwIDogKCdhLCAnYikgZnQgLT4gJ2EgdGxpc3QgLT4gJ2IgdGxpc3RcbmVuZFxuXG5tb2R1bGUgdHlwZSBOb1dyYXAgPVxuICBUIHdpdGggdHlwZSAnYSB0ID0gJ2FcbiAgICAgYW5kIHR5cGUgJ2EgdGxpc3QgPSAnYSBsaXN0XG4gICAgIGFuZCB0eXBlICgtJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG5cbm1vZHVsZSBOb1dyYXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcbiAgdHlwZSAnYSB0bGlzdCA9ICdhIGxpc3RcbiAgdHlwZSAoLSdhLCAnYikgZnQgPSAnYSAtPiAnYlxuICBleHRlcm5hbCByZXR1cm4gOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IGZtYXAgZiA6ICAnYSB0IC0+ICdiIHQgPSBmXG5cbiAgbGV0IG5pbCAoKSA9IFtdXG4gIGxldCBzaW5nbGV0b24geCA9IFt4XVxuICBsZXQgY29ucyB4IHhzID0geDo6eHNcbiAgbGV0IGFwcGVuZCB4IHk9IHhAeVxuICBsZXQgbWFwID0gTGlzdC5tYXBcbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxOCBHYWJyaWVsIFJhZGFubmVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbnR5cGUgbmFtZSA9IHN0cmluZyAqIHN0cmluZ1xuXG4oKiogSW5wdXQgKilcblxudHlwZSBzaWduYWwgPSBbXG4gIHwgYENvbW1lbnQgb2Ygc3RyaW5nXG4gIHwgYEVuZF9lbGVtZW50XG4gIHwgYFN0YXJ0X2VsZW1lbnQgb2YgbmFtZSAqIChuYW1lICogc3RyaW5nKSBsaXN0XG4gIHwgYFRleHQgb2Ygc3RyaW5nIGxpc3Rcbl1cblxuZXhjZXB0aW9uIE1hbGZvcm1lZF9zdHJlYW1cblxubW9kdWxlIEltcG9ydFxuICAgIChYbWwgOiBYbWxfc2lncy5UKVxuPSBzdHJ1Y3RcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gYSBiIC0+IFhtbC5XLihjb25zIChyZXR1cm4gYSkgYikpXG4gICAgICBsIChYbWwuVy5uaWwgKCkpXG5cbiAgbGV0IG1rX2F0dHJpYnMgYXR0cnMgPVxuICAgICgqIFRPRE86IFRoaXMgaXMgbm90IHZlcnkgc3RydWN0dXJlZCAqKVxuICAgIGxldCBmICgoXyxuYW1lKSwgdikgPSBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChYbWwuVy5yZXR1cm4gdikgaW5cbiAgICBMaXN0Lm1hcCBmIGF0dHJzXG5cbiAgbGV0IHJlYyBtayBjaGlsZHJlbiAoc2VxIDogc2lnbmFsIFNlcS50KSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBDb25zIChgQ29tbWVudCBzLCBxKSAtPlxuICAgICAgbWsgKFhtbC5jb21tZW50IHMgOjogY2hpbGRyZW4pIHFcbiAgICB8IENvbnMgKGBUZXh0IHMsIHEpIC0+XG4gICAgICBtayAoTGlzdC5tYXAgKGZ1biB4IC0+IFhtbC5wY2RhdGEgQEAgWG1sLlcucmV0dXJuIHgpIHMgQCBjaGlsZHJlbikgcVxuICAgIHwgQ29ucyAoYFN0YXJ0X2VsZW1lbnQgKChfLCBuYW1lKSwgYXR0cnMpLCBxKSAtPlxuICAgICAgbGV0IGEgPSBta19hdHRyaWJzIGF0dHJzIGluXG4gICAgICBsZXQgc3ViX2NoaWxkcmVuLCByZXN0ID0gbWsgW10gcSBpblxuICAgICAgbWsgKFhtbC5ub2RlIH5hIG5hbWUgc3ViX2NoaWxkcmVuIDo6IGNoaWxkcmVuKSByZXN0XG4gICAgfCBDb25zIChgRW5kX2VsZW1lbnQsIHJlc3QpIC0+XG4gICAgICBvZl9saXN0IChMaXN0LnJldiBjaGlsZHJlbiksIHJlc3RcbiAgICB8IE5pbCAtPlxuICAgICAgb2ZfbGlzdCAoTGlzdC5yZXYgY2hpbGRyZW4pLCBTZXEuZW1wdHlcblxuICBsZXQgb2Zfc2VxIHNlcSA9XG4gICAgbGV0IGwsIHJlc3QgPSBtayBbXSBzZXEgaW5cbiAgICBtYXRjaCByZXN0ICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gbFxuICAgIHwgXyAtPiByYWlzZSBNYWxmb3JtZWRfc3RyZWFtXG5cbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwOCBWaW5jZW50IEJhbGF0LCBNYXVyaWNpbyBGZXJuYW5kZXpcbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubGV0IGlzX2NvbnRyb2wgYyA9XG4gIGxldCBjYyA9IENoYXIuY29kZSBjIGluXG4gIChjYyA8PSA4IHx8IGNjID0gMTEgfHwgY2MgPSAxMiB8fCAoMTQgPD0gY2MgJiYgY2MgPD0gMzEpIHx8IGNjID0gMTI3KVxuXG5sZXQgYWRkX3Vuc2FmZV9jaGFyIGIgPSBmdW5jdGlvblxuICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgfCAnXCInIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImcXVvdDtcIlxuICB8ICcmJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICB8IGMgd2hlbiBpc19jb250cm9sIGMgLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiNcIiA7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2ludCAoQ2hhci5jb2RlIGMpKSA7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjtcIlxuICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuXG5sZXQgZW5jb2RlX3Vuc2FmZV9jaGFyIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgU3RyaW5nLml0ZXIgKGFkZF91bnNhZmVfY2hhciBiKSBzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgZW5jb2RlX3Vuc2FmZV9jaGFyX2FuZF9hdCBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gIGxldCBmID0gZnVuY3Rpb25cbiAgICB8ICdAJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiM2NDtcIlxuICAgIHwgYyAtPiBhZGRfdW5zYWZlX2NoYXIgYiBjXG4gIGluXG4gIFN0cmluZy5pdGVyIGYgcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGNvbXBvc2VfZGVjbCA/KHZlcnNpb24gPSBcIjEuMFwiKSA/KGVuY29kaW5nID0gXCJVVEYtOFwiKSAoKSA9XG4gIEZvcm1hdC5zcHJpbnRmXG4gICAge3w8P3htbCB2ZXJzaW9uPVwiJXNcIiBlbmNvZGluZz1cIiVzXCI/Plxcbnx9XG4gICAgdmVyc2lvbiBlbmNvZGluZ1xuXG5sZXQgY29tcG9zZV9kb2N0eXBlIGR0IGFyZ3MgPVxuICBsZXQgcHBfYXJncyBmbXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiBQVUJMSUMgJWFcIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcDpGb3JtYXQucHBfcHJpbnRfc3BhY2VcbiAgICAgICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiKSlcbiAgICAgICAgbFxuICBpblxuICBGb3JtYXQuYXNwcmludGZcbiAgICBcIjwhRE9DVFlQRSAlcyVhPlwiXG4gICAgZHRcbiAgICBwcF9hcmdzIGFyZ3NcblxubGV0IHJlX2VuZF9jb21tZW50ID0gUmUuKGNvbXBpbGUgQEAgYWx0IFtcbiAgc2VxIFsgYm9zIDsgc3RyIFwiPlwiIF0gO1xuICBzZXEgWyBib3MgOyBzdHIgXCItPlwiIF0gO1xuICBzdHIgXCItLT5cIiA7XG4gIHN0ciBcIi0tIT5cIiA7XG5dKVxubGV0IGVzY2FwZV9jb21tZW50IHMgPVxuICBsZXQgZiBnID0gbWF0Y2ggUmUuR3JvdXAuZ2V0IGcgMCB3aXRoXG4gICAgfCBcIj5cIiAtPiBcIiZndDtcIlxuICAgIHwgXCItPlwiIC0+IFwiLSZndDtcIlxuICAgIHwgXCItLT5cIiAtPiBcIi0tJmd0O1wiXG4gICAgfCBcIi0tIT5cIiAtPiBcIi0tISZndDtcIlxuICAgIHwgcyAtPiBzXG4gIGluXG4gIFJlLnJlcGxhY2UgfmFsbDp0cnVlIHJlX2VuZF9jb21tZW50IH5mIHNcblxuKCogY29waWVkIGZvcm0ganNfb2Zfb2NhbWw6IGNvbXBpbGVyL2phdmFzY3JpcHQubWwgKilcbmxldCBwcF9udW1iZXIgZm10IHYgPVxuICBpZiB2ID0gaW5maW5pdHlcbiAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkluZmluaXR5XCJcbiAgZWxzZSBpZiB2ID0gbmVnX2luZmluaXR5XG4gIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCItSW5maW5pdHlcIlxuICBlbHNlIGlmIHYgPD4gdlxuICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTmFOXCJcbiAgZWxzZVxuICAgIGxldCB2aW50ID0gaW50X29mX2Zsb2F0IHYgaW5cbiAgICAoKiBjb21waWxlciAxMDAwIGludG8gMWUzICopXG4gICAgaWYgZmxvYXRfb2ZfaW50IHZpbnQgPSB2XG4gICAgdGhlblxuICAgICAgbGV0IHJlYyBkaXYgbiBpID1cbiAgICAgICAgaWYgbiA8PiAwICYmIG4gbW9kIDEwID0gMFxuICAgICAgICB0aGVuIGRpdiAobi8xMCkgKHN1Y2MgaSlcbiAgICAgICAgZWxzZVxuICAgICAgICBpZiBpID4gMlxuICAgICAgICB0aGVuIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkZSVkXCIgbiBpXG4gICAgICAgIGVsc2UgRm9ybWF0LnBwX3ByaW50X2ludCBmbXQgdmludCBpblxuICAgICAgZGl2IHZpbnQgMFxuICAgIGVsc2VcbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xMmdcIiB2IGluXG4gICAgICBpZiB2ID0gZmxvYXRfb2Zfc3RyaW5nIHMxXG4gICAgICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHMxXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzMiA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNWdcIiB2IGluXG4gICAgICAgIGlmIHYgPSBmbG9hdF9vZl9zdHJpbmcgczJcbiAgICAgICAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzMlxuICAgICAgICBlbHNlICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlLjE4Z1wiIHZcblxubGV0IHN0cmluZ19vZl9udW1iZXIgdiA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHBfbnVtYmVyIHZcblxubW9kdWxlIFV0ZjggPSBzdHJ1Y3RcbiAgdHlwZSB1dGY4ID0gc3RyaW5nXG5cbiAgbGV0IG5vcm1hbGl6ZSBzcmMgPVxuICAgIGxldCB3YXJuID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggc3JjKSBpblxuICAgIFV1dGYuU3RyaW5nLmZvbGRfdXRmXzhcbiAgICAgIChmdW4gXyBfIGQgLT5cbiAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgfCBgVWNoYXIgY29kZSAtPiBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIGNvZGVcbiAgICAgICAgIHwgYE1hbGZvcm1lZCBfIC0+XG4gICAgICAgICAgICAgICBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIFV1dGYudV9yZXA7XG4gICAgICAgICAgICAgICB3YXJuOj10cnVlKVxuICAgICAgKCkgc3JjO1xuICAgIChCdWZmZXIuY29udGVudHMgYnVmZmVyLCAhd2FybilcblxuICBsZXQgbm9ybWFsaXphdGlvbl9uZWVkZWQgc3JjID1cbiAgICBsZXQgcmVjIGxvb3Agc3JjIGkgbCA9XG4gICAgICBpIDwgbCAmJlxuICAgICAgbWF0Y2ggc3JjLltpXSB3aXRoXG4gICAgICAoKiBDaGFyYWN0ZXJzIHRoYXQgbmVlZCB0byBiZSBlbmNvZGVkIGluIEhUTUwgKilcbiAgICAgIHwgJ1xcMDM0JyB8ICdcXDAzOCcgfCAnXFwwNjAnIHwnXFwwNjInIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgKCogQVNDSUkgY2hhcmFjdGVycyAqKVxuICAgICAgfCAnXFwwMDknIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMzInLi4nXFwxMjYnIC0+XG4gICAgICAgICAgbG9vcCBzcmMgKGkgKyAxKSBsXG4gICAgICB8IF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgaW5cbiAgICBsb29wIHNyYyAwIChTdHJpbmcubGVuZ3RoIHNyYylcblxuICBsZXQgbm9ybWFsaXplX2h0bWwgc3JjID1cbiAgICBpZiBub3JtYWxpemF0aW9uX25lZWRlZCBzcmMgdGhlbiBiZWdpblxuICAgICAgbGV0IHdhcm4gPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHNyYykgaW5cbiAgICAgIFV1dGYuU3RyaW5nLmZvbGRfdXRmXzhcbiAgICAgICAgKGZ1biBfIF8gZCAtPlxuICAgICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgICAgfCBgVWNoYXIgdSAtPlxuICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICAgICAgICAgICAgICAgfCAzNCAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZxdW90O1wiXG4gICAgICAgICAgICAgICB8IDM4IC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmFtcDtcIlxuICAgICAgICAgICAgICAgfCA2MCAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZsdDtcIlxuICAgICAgICAgICAgICAgfCA2MiAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZndDtcIlxuICAgICAgICAgICAgICAgfCBjb2RlIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHUgPVxuICAgICAgICAgICAgICAgICAgICAgKCogSWxsZWdhbCBjaGFyYWN0ZXJzIGluIGh0bWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhcmFjdGVyX2VuY29kaW5nc19pbl9IVE1MXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCAqKVxuICAgICAgICAgICAgICAgICAgICAgaWYgKCogQS4gY29udHJvbCBDMCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAoY29kZSA8PSAzMSAmJiBjb2RlIDw+IDkgJiYgY29kZSA8PiAxMCAmJiBjb2RlIDw+IDEzKVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBCLiBERUwgKyBjb250cm9sIEMxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0gaW52YWxpZCBpbiBodG1sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0gZGlzY291cmFnZWQgaW4geG1sO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgMHg4NSBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgbGV0J3MgZGlzY2FyZCBpdCBhbnl3YXkgKilcbiAgICAgICAgICAgICAgICAgICAgICAgfHwgKGNvZGUgPj0gMTI3ICYmIGNvZGUgPD0gMTU5KVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBDLiBVVEYtMTYgc3Vycm9nYXRlIGhhbHZlcyA6IGFscmVhZHkgZGlzY2FyZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHV1dGYgfHwgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhERkZGKSAqKVxuICAgICAgICAgICAgICAgICAgICAgICAoKiBELiBCT00gcmVsYXRlZCAqKVxuICAgICAgICAgICAgICAgICAgICAgICB8fCBjb2RlIGxhbmQgMHhGRkZGID0gMHhGRkZFXG4gICAgICAgICAgICAgICAgICAgICAgIHx8IGNvZGUgbGFuZCAweEZGRkYgPSAweEZGRkZcbiAgICAgICAgICAgICAgICAgICAgIHRoZW4gKHdhcm46PXRydWU7IFV1dGYudV9yZXApXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIHVcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgdVxuICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIHwgYE1hbGZvcm1lZCBfIC0+XG4gICAgICAgICAgICAgICBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIFV1dGYudV9yZXA7XG4gICAgICAgICAgICAgICB3YXJuOj10cnVlKVxuICAgICAgICAoKSBzcmM7XG4gICAgICAoQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlciwgIXdhcm4pXG4gICAgZW5kIGVsc2VcbiAgICAgIChzcmMsIGZhbHNlKVxuXG5lbmRcblxubW9kdWxlIHR5cGUgVGFnTGlzdCA9IHNpZyB2YWwgZW1wdHl0YWdzIDogc3RyaW5nIGxpc3QgZW5kXG5cbigqKiBGb3JtYXQgYmFzZWQgcHJpbnRlcnMgKilcblxubGV0IHBwX25vb3AgX2ZtdCBfID0gKClcblxubW9kdWxlIE1ha2VfZm10XG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChJIDogVGFnTGlzdCkgPVxuc3RydWN0XG4gIG9wZW4gWG1sXG5cbiAgbGV0IG9wZW5fYm94IGluZGVudCBmbXQgPSBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfb3Blbl9ib3ggZm10IDAgZWxzZSAoKVxuICBsZXQgY2xvc2VfYm94IGluZGVudCBmbXQgPSBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKSBlbHNlICgpXG4gIGxldCBzcCBpbmRlbnQgZm10ID1cbiAgICBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpIGVsc2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCJcbiAgbGV0IGN1dCBpbmRlbnQgZm10ID1cbiAgICBpZiBpbmRlbnQgdGhlbiBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKSBlbHNlICgpXG5cbiAgbW9kdWxlIFMgPSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBpc19lbXB0eXRhZyA9IG1hdGNoIEkuZW1wdHl0YWdzIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+IGZhbHNlXG4gICAgfCBsIC0+XG4gICAgICBsZXQgc2V0ID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHggLT4gUy5hZGQgeCBzKSBTLmVtcHR5IGwgaW5cbiAgICAgIGZ1biB4IC0+IFMubWVtIHggc2V0XG5cbiAgbGV0IHBwX2VuY29kZSBlbmNvZGUgaW5kZW50IGZtdCBzID1cbiAgICBsZXQgcyA9IGVuY29kZSBzIGluXG4gICAgaWYgaW5kZW50IHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbJWFAXVwiIEZvcm1hdC5wcF9wcmludF90ZXh0IHNcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzXG5cbiAgbGV0IHBwX3NlcCBpbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgU3BhY2UgLT4gZnVuIGZtdCAoKSAtPiBzcCBpbmRlbnQgZm10XG4gICAgfCBDb21tYSAtPiBmdW4gZm10ICgpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiwldFwiIChzcCBpbmRlbnQpXG5cbiAgbGV0IHBwX2F0dHJpYl92YWx1ZSBlbmNvZGUgaW5kZW50IGZtdCBhID0gbWF0Y2ggYWNvbnRlbnQgYSB3aXRoXG4gICAgfCBBRmxvYXQgZiAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJWFcXFwiXCIgcHBfbnVtYmVyIGZcbiAgICB8IEFJbnQgaSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJWRcXFwiXCIgaVxuICAgIHwgQVN0ciBzIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiAoZW5jb2RlIHMpXG4gICAgfCBBU3RyTCAoc2VwLCBzbGlzdCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlYVxcXCJcIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcDoocHBfc2VwIGluZGVudCBzZXApXG4gICAgICAgICAgIChwcF9lbmNvZGUgZW5jb2RlIGluZGVudCkpIHNsaXN0XG5cbiAgbGV0IHBwX2F0dHJpYiBlbmNvZGUgaW5kZW50IGZtdCBhID1cbiAgICBGb3JtYXQuZnByaW50ZiBmbXRcbiAgICAgIFwiJXQlcz0lYVwiIChzcCBpbmRlbnQpIChhbmFtZSBhKSAocHBfYXR0cmliX3ZhbHVlIGVuY29kZSBpbmRlbnQpIGFcblxuICBsZXQgcHBfYXR0cmlicyBlbmNvZGUgaW5kZW50ID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOnBwX25vb3AgKHBwX2F0dHJpYiBlbmNvZGUgaW5kZW50KVxuXG4gIGxldCBwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCBmbXQgKHRhZywgYXR0cnMpID1cbiAgICBvcGVuX2JveCBpbmRlbnQgZm10IDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlcyVhJXRcIiB0YWcgKHBwX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgYXR0cnMgKGN1dCBpbmRlbnQpO1xuICAgIGNsb3NlX2JveCBpbmRlbnQgZm10XG5cbiAgbGV0IHBwX2Nsb3NlZHRhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnMgPVxuICAgIGlmIGlzX2VtcHR5dGFnIHRhZyB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JWEvPlwiIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgZWxzZSBiZWdpblxuICAgICAgb3Blbl9ib3ggaW5kZW50IGZtdCA7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JWE+JXQ8LyVzPlwiXG4gICAgICAgIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgICAgIChjdXQgaW5kZW50KVxuICAgICAgICB0YWcgO1xuICAgICAgY2xvc2VfYm94IGluZGVudCBmbXRcbiAgICBlbmRcblxuICBsZXQgcmVjIHBwX3RhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICB8IFtdIC0+IHBwX2Nsb3NlZHRhZyBlbmNvZGUgaW5kZW50IGZtdCB0YWcgYXR0cnNcbiAgICB8IF8gLT5cbiAgICAgIG9wZW5fYm94IGluZGVudCBmbXQgO1xuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCV0JWE+JXQlYSV0JXQ8LyVzPlwiXG4gICAgICAgIChvcGVuX2JveCBpbmRlbnQpXG4gICAgICAgIChwcF90YWdfYW5kX2F0dHJpYnMgZW5jb2RlIGluZGVudCkgKHRhZywgYXR0cnMpXG4gICAgICAgIChjdXQgaW5kZW50KVxuICAgICAgICAocHBfZWx0cyBlbmNvZGUgaW5kZW50KSBjaGlsZHJlblxuICAgICAgICAoY2xvc2VfYm94IGluZGVudClcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIHRhZyA7XG4gICAgICBjbG9zZV9ib3ggaW5kZW50IGZtdFxuXG4gIGFuZCBwcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgZWx0ID0gbWF0Y2ggY29udGVudCBlbHQgd2l0aFxuICAgIHwgQ29tbWVudCB0ZXh0ZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCEtLSVzLS0+XCIgKGVzY2FwZV9jb21tZW50IHRleHRlKVxuXG4gICAgfCBFbnRpdHkgZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJiVzO1wiIGVcblxuICAgIHwgUENEQVRBIHRleHRlIC0+XG4gICAgICBwcF9lbmNvZGUgZW5jb2RlIGluZGVudCBmbXQgdGV4dGVcblxuICAgIHwgRW5jb2RlZFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgdGV4dGVcblxuICAgIHwgTm9kZSAobmFtZSwgeGhfYXR0cnMsIHhoX3RhZ2xpc3QpIC0+XG4gICAgICBwcF90YWcgZW5jb2RlIGluZGVudCBmbXQgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0XG5cbiAgICB8IExlYWYgKG5hbWUsIHhoX2F0dHJzKSAtPlxuICAgICAgcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IG5hbWUgeGhfYXR0cnNcblxuICAgIHwgRW1wdHkgLT4gKClcblxuICBhbmQgcHBfZWx0cyBlbmNvZGUgaW5kZW50ID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBjdXQgaW5kZW50IGZtdClcbiAgICAgIChwcF9lbHQgZW5jb2RlIGluZGVudClcblxuICBsZXQgcHAgPyhlbmNvZGU9ZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGluZGVudD1mYWxzZSkgKCkgPVxuICAgIHBwX2VsdCBlbmNvZGUgaW5kZW50XG5cbmVuZFxuXG5tb2R1bGUgTWFrZV90eXBlZF9mbXRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgUCA9IE1ha2VfZm10KFhtbCkoVHlwZWRfeG1sLkluZm8pXG5cbiAgKCogQWRkIGFuIHhtbG5zIHRhZyBvbiB0aGUgaHRtbCBlbGVtZW50IGlmIGl0J3Mgbm90IGFscmVhZHkgcHJlc2VudCAqKVxuICBsZXQgcHJlcGFyZV9kb2N1bWVudCBkb2MgPVxuICAgIGxldCBkb2MgPSBUeXBlZF94bWwuZG9jX3RvZWx0IGRvYyBpblxuICAgIG1hdGNoIFhtbC5jb250ZW50IGRvYyB3aXRoXG4gICAgfCBYbWwuTm9kZSAobiwgYSwgYykgLT5cbiAgICAgIGxldCBhID1cbiAgICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1biBhIC0+IFhtbC5hbmFtZSBhID0gXCJ4bWxuc1wiKSBhXG4gICAgICAgIHRoZW4gYVxuICAgICAgICBlbHNlIFhtbC5zdHJpbmdfYXR0cmliIFwieG1sbnNcIiBUeXBlZF94bWwuSW5mby5uYW1lc3BhY2UgOjogYVxuICAgICAgaW5cbiAgICAgIFhtbC5ub2RlIH5hIG4gY1xuICAgIHwgXyAtPiBkb2NcblxuICBsZXQgcHBfZWx0ID8oZW5jb2RlPWVuY29kZV91bnNhZmVfY2hhcikgPyhpbmRlbnQ9ZmFsc2UpICgpIGZtdCBmb3JldCA9XG4gICAgUC5wcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgKFR5cGVkX3htbC50b2VsdCBmb3JldClcblxuICBsZXQgcHAgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpID8oaW5kZW50PWZhbHNlKSA/YWR2ZXJ0ICgpIGZtdCBkb2MgPVxuICAgIEZvcm1hdC5wcF9vcGVuX3Zib3ggZm10IDAgO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzQCxcIiBUeXBlZF94bWwuSW5mby5kb2N0eXBlIDtcblxuICAgIGJlZ2luIG1hdGNoIGFkdmVydCB3aXRoXG4gICAgICB8IFNvbWUgcyAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCI8IS0tICVzIC0tPkAsXCIgc1xuICAgICAgfCBOb25lIC0+ICgpXG4gICAgZW5kIDtcblxuICAgIFAucHBfZWx0IGVuY29kZSBpbmRlbnQgZm10IChwcmVwYXJlX2RvY3VtZW50IGRvYykgO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpO1xuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKEkgOiBUYWdMaXN0KVxuICAgIChPIDogWG1sX3NpZ3MuT3V0cHV0KSA9XG5zdHJ1Y3RcblxuICBsZXQgKCsrKSA9IE8uY29uY2F0XG5cbiAgb3BlbiBYbWxcblxuICBsZXQgc2VwYXJhdG9yX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTcGFjZSAtPiBcIiBcIlxuICAgIHwgQ29tbWEgLT4gXCIsIFwiXG5cbiAgbGV0IGF0dHJpYl92YWx1ZV90b19zdHJpbmcgZW5jb2RlIGEgPSBtYXRjaCBhY29udGVudCBhIHdpdGhcbiAgICB8IEFGbG9hdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiXFxcIiVzXFxcIlwiIChzdHJpbmdfb2ZfbnVtYmVyIGYpXG4gICAgfCBBSW50IGkgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJWRcXFwiXCIgaVxuICAgIHwgQVN0ciBzIC0+IFByaW50Zi5zcHJpbnRmIFwiXFxcIiVzXFxcIlwiIChlbmNvZGUgcylcbiAgICB8IEFTdHJMIChzZXAsIHNsaXN0KSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCJcbiAgICAgICAgKGVuY29kZSAoU3RyaW5nLmNvbmNhdCAoc2VwYXJhdG9yX3RvX3N0cmluZyBzZXApIHNsaXN0KSlcblxuICBsZXQgYXR0cmliX3RvX3N0cmluZyBlbmNvZGUgYSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcz0lc1wiIChhbmFtZSBhKSAoYXR0cmliX3ZhbHVlX3RvX3N0cmluZyBlbmNvZGUgYSlcblxuICBsZXQgcmVjIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRycyA9IG1hdGNoIGF0dHJzIHdpdGhcbiAgICB8IFtdIC0+IE8uZW1wdHlcbiAgICB8IGF0dHI6OnF1ZXVlIC0+XG4gICAgICBPLnB1dCAoXCIgXCJeIGF0dHJpYl90b19zdHJpbmcgZW5jb2RlIGF0dHIpXG4gICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgcXVldWVcblxuICBhbmQgeGhfcHJpbnRfY2xvc2VkdGFnIGVuY29kZSB0YWcgYXR0cnMgPVxuICAgIGlmIEkuZW1wdHl0YWdzID0gW10gfHwgTGlzdC5tZW0gdGFnIEkuZW1wdHl0YWdzXG4gICAgdGhlblxuICAgICAgKE8ucHV0IChcIjxcIl50YWcpXG4gICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzXG4gICAgICAgKysgTy5wdXQgXCIgLz5cIilcbiAgICBlbHNlXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCAoXCI+PC9cIl50YWdeXCI+XCIpKVxuXG4gIGFuZCB4aF9wcmludF90YWcgZW5jb2RlIHRhZyBhdHRycyB0YWdsaXN0ID1cbiAgICBpZiB0YWdsaXN0ID0gW11cbiAgICB0aGVuIHhoX3ByaW50X2Nsb3NlZHRhZyBlbmNvZGUgdGFnIGF0dHJzXG4gICAgZWxzZVxuICAgICAgKE8ucHV0IChcIjxcIl50YWcpXG4gICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzXG4gICAgICAgKysgTy5wdXQgXCI+XCJcbiAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSB0YWdsaXN0XG4gICAgICAgKysgTy5wdXQgKFwiPC9cIl50YWdeXCI+XCIpKVxuXG4gIGFuZCBwcmludF9ub2RlcyBlbmNvZGUgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0IHF1ZXVlID1cbiAgICB4aF9wcmludF90YWcgZW5jb2RlIG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdFxuICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgYW5kIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHRhZ2xpc3QgPVxuICAgIG1hdGNoIHRhZ2xpc3Qgd2l0aFxuXG4gICAgfCBbXSAtPiBPLmVtcHR5XG5cbiAgICB8IGVsdCA6OiBxdWV1ZSAtPiBtYXRjaCBjb250ZW50IGVsdCB3aXRoXG5cbiAgICAgIHwgQ29tbWVudCB0ZXh0ZSAtPlxuICAgICAgICBPLnB1dCAoXCI8IS0tXCJeKGVuY29kZSB0ZXh0ZSleXCItLT5cIilcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBFbnRpdHkgZSAtPlxuICAgICAgICBPLnB1dCAoXCImXCJeZV5cIjtcIikgKCogbm8gZW5jb2RpbmcgKilcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBQQ0RBVEEgdGV4dGUgLT5cbiAgICAgICAgTy5wdXQgKGVuY29kZSB0ZXh0ZSlcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBFbmNvZGVkUENEQVRBIHRleHRlIC0+XG4gICAgICAgIE8ucHV0IHRleHRlXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgTm9kZSAobmFtZSwgeGhfYXR0cnMsIHhoX3RhZ2xpc3QpIC0+XG4gICAgICAgIHByaW50X25vZGVzIGVuY29kZSBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3QgcXVldWVcblxuICAgICAgfCBMZWFmIChuYW1lLCB4aF9hdHRycykgLT5cbiAgICAgICAgcHJpbnRfbm9kZXMgZW5jb2RlIG5hbWUgeGhfYXR0cnMgW10gcXVldWVcblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gIGxldCBwcmludF9saXN0ID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSBmb3JldCA9XG4gICAgTy5tYWtlICh4aF9wcmludF90YWdsaXN0IGVuY29kZSBmb3JldClcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChUeXBlZF94bWwgOiBYbWxfc2lncy5UeXBlZF94bWwgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbClcbiAgICAoTyA6IFhtbF9zaWdzLk91dHB1dCkgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFAgPSBNYWtlKFhtbCkoVHlwZWRfeG1sLkluZm8pKE8pXG4gIGxldCAoKyspID0gTy5jb25jYXRcblxuICBsZXQgcHJpbnRfbGlzdCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgZm9yZXQgPVxuICAgIE8ubWFrZSAoUC54aF9wcmludF90YWdsaXN0IGVuY29kZSAoTGlzdC5tYXAgVHlwZWRfeG1sLnRvZWx0IGZvcmV0KSlcblxuICBsZXQgcHJpbnQgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpID8oYWR2ZXJ0ID0gXCJcIikgZG9jID1cbiAgICBsZXQgZG9jID0gVHlwZWRfeG1sLmRvY190b2VsdCBkb2MgaW5cbiAgICBsZXQgZG9jID0gbWF0Y2ggWG1sLmNvbnRlbnQgZG9jIHdpdGhcbiAgICAgIHwgWG1sLk5vZGUgKG4sIGEsIGMpIC0+XG4gICAgICAgIGxldCBhID1cbiAgICAgICAgICBpZiBMaXN0LmV4aXN0cyAoZnVuIGEgLT4gWG1sLmFuYW1lIGEgPSBcInhtbG5zXCIpIGFcbiAgICAgICAgICB0aGVuIGFcbiAgICAgICAgICBlbHNlIFhtbC5zdHJpbmdfYXR0cmliIFwieG1sbnNcIiBUeXBlZF94bWwuSW5mby5uYW1lc3BhY2UgOjogYVxuICAgICAgICBpblxuICAgICAgICBYbWwubm9kZSB+YSBuIGNcbiAgICAgIHwgXyAtPiBkb2MgaW5cbiAgICBPLm1ha2VcbiAgICAgIChPLnB1dCBUeXBlZF94bWwuSW5mby5kb2N0eXBlXG4gICAgICAgKysgTy5wdXQgKGlmIGFkdmVydCA8PiBcIlwiIHRoZW4gKFwiPCEtLSBcIiBeIGFkdmVydCBeIFwiIC0tPlxcblwiKSBlbHNlIFwiXFxuXCIpXG4gICAgICAgKysgUC54aF9wcmludF90YWdsaXN0IGVuY29kZSBbZG9jXSlcblxuZW5kXG5cbm1vZHVsZSBTaW1wbGVfb3V0cHV0KE0gOiBzaWcgdmFsIHB1dDogc3RyaW5nIC0+IHVuaXQgZW5kKSA9IHN0cnVjdFxuICB0eXBlIG91dCA9IHVuaXRcbiAgdHlwZSBtID0gdW5pdCAtPiB1bml0XG4gIGxldCBlbXB0eSAoKSA9ICgpXG4gIGxldCBjb25jYXQgZjEgZjIgKCkgPSBmMSAoKTsgZjIgKClcbiAgbGV0IHB1dCBzICgpID0gTS5wdXQgc1xuICBsZXQgbWFrZSBmID0gZiAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3NpbXBsZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoSSA6IFRhZ0xpc3QpID1cbnN0cnVjdFxuXG4gIGxldCBwcmludF9saXN0IH5vdXRwdXQgPVxuICAgIGxldCBtb2R1bGUgTSA9IE1ha2UoWG1sKShJKShTaW1wbGVfb3V0cHV0KHN0cnVjdCBsZXQgcHV0ID0gb3V0cHV0IGVuZCkpIGluXG4gICAgTS5wcmludF9saXN0XG5cbmVuZFxuXG5tb2R1bGUgTWFrZV90eXBlZF9zaW1wbGVcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoICBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuc3RydWN0XG5cbiAgbGV0IHByaW50X2xpc3Qgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIE1ha2VfdHlwZWQoWG1sKShUeXBlZF94bWwpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50X2xpc3RcblxuICBsZXQgcHJpbnQgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIE1ha2VfdHlwZWQoWG1sKShUeXBlZF94bWwpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50XG5cbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwNCBUaG9yc3RlbiBPaGwgPG9obEBwaHlzaWsudW5pLXd1ZXJ6YnVyZy5kZT5cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE1ha2UoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpID0gc3RydWN0XG5cbiAgb3BlbiBYbWxcblxuICAoKiogSXRlcmF0b3JzICopXG5cbiAgbGV0IGFtYXAxIGYgbiA9XG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXyAtPiBuXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBsZWFmIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZVxuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT4gbm9kZSB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWUgZWx0c1xuXG4gIGxldCByZWMgYW1hcCBmIG4gPVxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCBFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8gLT4gblxuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT4gbGVhZiB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWVcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICBub2RlIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZSAoTGlzdC5tYXAgKGFtYXAgZikgZWx0cylcblxuICBsZXQgcmVjIGFkZF9mbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbZmxvYXRfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgOjogdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogYWRkX2Zsb2F0X2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgbWFwX2Zsb2F0X2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQUZsb2F0IHZhbHVlIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBmbG9hdF9hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX2ludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbaW50X2F0dHJpYiBuYW1lIHZhbHVlXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgIGludF9hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfaW50X2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIHJtX2F0dHJpYiBpc19hdHRyaWIgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gcm1fYXR0cmliIGlzX2F0dHJpYiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBybV9hdHRyaWIgaXNfYXR0cmliIHRhaWxcblxuICBsZXQgbWFwX2ludF9hdHRyaWIgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFJbnQgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IGludF9hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX3N0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgIHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgbWFwX3N0cmluZ19hdHRyaWIgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHIgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IHN0cmluZ19hdHRyaWIgKGFuYW1lIGhlYWQpIChmIHZhbHVlKVxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgYWRkX3NwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV1dXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoU3BhY2UsIHZhbHVlcycpIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lICh2YWx1ZSA6OiB2YWx1ZXMnKSA6OiB0YWlsXG4gICAgICB8IF8gd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBzcGFjZV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXSA6OiB0YWlsXG4gICAgICB8IF8gLT4gaGVhZCA6OiBhZGRfc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIGFkZF9jb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW2NvbW1hX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdXVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKENvbW1hLCB2YWx1ZXMnKSB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIGNvbW1hX3NlcF9hdHRyaWIgbmFtZSAodmFsdWUgOjogdmFsdWVzJykgOjogdGFpbFxuICAgICAgfCBfIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgY29tbWFfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV0gOjogdGFpbFxuICAgICAgfCBfIC0+IGhlYWQgOjogYWRkX2NvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IHJlYyBybV9hdHRyaWJfZnJvbV9saXN0IGlzX2F0dHJpYiBpc192YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKHNlcCwgdmFsdWVzKSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggTGlzdC5maWx0ZXIgKGZ1biB2IC0+IG5vdCAoaXNfdmFsdWUgdikpIHZhbHVlcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiB0YWlsXG4gICAgICAgICAgfCB2YWx1ZXMnIC0+XG4gICAgICAgICAgICBtYXRjaCBzZXAgd2l0aFxuICAgICAgICAgICAgfCBTcGFjZSAtPiBzcGFjZV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSB2YWx1ZXMnIDo6IHRhaWxcbiAgICAgICAgICAgIHwgQ29tbWEgLT4gY29tbWFfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgdmFsdWVzJyA6OiB0YWlsXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IGhlYWQgOjogcm1fYXR0cmliX2Zyb21fbGlzdCBpc19hdHRyaWIgaXNfdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfc3RyaW5nX2F0dHJpYl9pbl9saXN0IGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoc2VwLCB2YWx1ZXMpIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBzZXAgd2l0aFxuICAgICAgICAgIHwgQ29tbWEgLT4gY29tbWFfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgKExpc3QubWFwIGYgdmFsdWVzKVxuICAgICAgICAgIHwgU3BhY2UgLT4gc3BhY2Vfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgKExpc3QubWFwIGYgdmFsdWVzKVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGZvbGQgb2ZfZW1wdHkgb2ZfY29tbWVudCBvZl90eHQgb2ZfZW5jb2RlZHBjZGF0YSBvZl9lbnRpdHlcbiAgICAgIG9mX2xlYWYgb2Zfbm9kZSBuID1cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgRW1wdHkgLT4gb2ZfZW1wdHkgKClcbiAgICB8IENvbW1lbnQgcyAtPiBvZl9jb21tZW50IHNcbiAgICB8IFBDREFUQSBzIC0+IG9mX3R4dCBzXG4gICAgfCBFbmNvZGVkUENEQVRBIHMgLT4gb2ZfZW5jb2RlZHBjZGF0YSBzXG4gICAgfCBFbnRpdHkgcyAtPiBvZl9lbnRpdHkgc1xuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT4gb2ZfbGVhZiBuYW1lIGF0dHJpYnNcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICBvZl9ub2RlIG5hbWUgYXR0cmlic1xuICAgICAgICAoTGlzdC5tYXAgKGZvbGQgb2ZfZW1wdHkgb2ZfY29tbWVudCBvZl90eHQgb2ZfZW5jb2RlZHBjZGF0YSBvZl9lbnRpdHkgb2ZfbGVhZiBvZl9ub2RlKSBlbHRzKVxuXG4gIGxldCBhbGxfZW50aXRpZXMgZWx0ID1cbiAgICBsZXQgZiBfID0gW10gaW5cbiAgICBmb2xkIGYgZiBmIGYgZlxuICAgICAgKGZ1biBfZW5hbWUgX2F0dHJpYnMgLT4gW10pIChmdW4gX2VuYW1lIF9hdHRyaWJzIGVsdHMgLT4gTGlzdC5mbGF0dGVuIGVsdHMpXG4gICAgICBlbHRcblxuICBsZXQgZmxhdG1hcCBmIGwgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgZiBsKVxuXG4gIGxldCB0cmFuc2xhdGUgcm9vdF9sZWFmIHJvb3Rfbm9kZSBzdWJfbGVhZiBzdWJfbm9kZSB1cGRhdGVfc3RhdGUgc3RhdGUgbiA9XG4gICAgbGV0IHJlYyB0cmFuc2xhdGUnIHN0YXRlICBuID1cbiAgICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgICB8IChFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8pIC0+IFtuXVxuICAgICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPlxuICAgICAgICBzdWJfbGVhZiBzdGF0ZSBuYW1lIGF0dHJpYnNcbiAgICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgICAgc3ViX25vZGUgc3RhdGUgbmFtZSBhdHRyaWJzXG4gICAgICAgICAgKGZsYXRtYXAgKHRyYW5zbGF0ZScgKHVwZGF0ZV9zdGF0ZSBuYW1lIGF0dHJpYnMgc3RhdGUpKSBlbHRzKVxuICAgIGluXG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IChFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8pIC0+IG5cbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+XG4gICAgICByb290X2xlYWYgbmFtZSBhdHRyaWJzXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgcm9vdF9ub2RlIG5hbWUgYXR0cmlicyAoZmxhdG1hcCAodHJhbnNsYXRlJyBzdGF0ZSkgZWx0cylcblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IFNpbW9uIENhc3RlbGxhblxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IENlY2lsZSBIZXJiZWxpblxuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IFZpbmNlbnQgQmFsYXRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbigqKiBUeXBlIGluc3RhbnRpYXRpb25zIGZvciBTVkcgKilcblxuKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYmFzaWMgZGF0YSB0eXBlcyBmb3IgZGF0YSwgYXR0cmlidXRlc1xuICAgIGFuZCBlbGVtZW50IG9jY3VycmluZyBpbiBTVkcgZG9jdW1lbnRzLlxuICAgIEl0IGlzIGJhc2VkIG9uIHRoZSBzcGVjaWZpY2F0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvLlxuXG4gICAgVGhpcyBtb2R1bGUgaXMgZXhwZXJpbWVudGFsLCBpdCBtYXkgbGFjayBvZiBzb21lIGF0dHJpYnV0ZXMsXG4gICAgYW5kIHRoZSBpbnRlcmZhY2UgaXMgdmVyeSBsb3cgbGV2ZWwgYW5kIGRvIG5vdCB0YWtlIGRlZXBseSBpbnRvIGFjY291bnRcbiAgICB0aGUgbmVlZHMgb2YgU1ZHIGVsZW1lbnRzLiAqKVxuXG5vcGVuIFN2Z190eXBlc1xuXG5vcGVuIFVuaXRcblxubGV0IHN0cmluZ19vZl9pcmkgeCA9IFByaW50Zi5zcHJpbnRmIFwidXJsKCVzKVwiIHhcblxubW9kdWxlIFVuaXQgPSBzdHJ1Y3RcblxuICAoKiBsZXQgcmVsIHggICAgID0gKHgsIE5vbmUpICopXG4gICgqIGxldCBkZWcgeCAgICAgPSAoeCwgU29tZSBgRGVnKSAqKVxuICAoKiBsZXQgZ3JhZCB4ICAgID0gKHgsIFNvbWUgYEdyYWQpICopXG4gICgqIGxldCByYWQgeCAgICAgPSAoeCwgU29tZSBgUmFkKSAqKVxuICAoKiBsZXQgbXMgeCAgICAgID0gKHgsIFNvbWUgYE1zKSAqKVxuICAoKiBsZXQgcyB4ICAgICAgID0gKHgsIFNvbWUgYFMpICopXG4gICgqIGxldCBlbSB4ICAgICAgPSAoeCwgU29tZSBgRW0pICopXG4gICgqIGxldCBleCB4ICAgICAgPSAoeCwgU29tZSBgRXgpICopXG4gICgqIGxldCBweCB4ICAgICAgPSAoeCwgU29tZSBgUHgpICopXG4gICgqIGxldCBpbl8geCAgICAgPSAoeCwgU29tZSBgSW4pICopXG4gICgqIGxldCBjbSB4ICAgICAgPSAoeCwgU29tZSBgQ20pICopXG4gICgqIGxldCBtbSB4ICAgICAgPSAoeCwgU29tZSBgTW0pICopXG4gICgqIGxldCBwdCB4ICAgICAgPSAoeCwgU29tZSBgUHQpICopXG4gICgqIGxldCBwYyB4ICAgICAgPSAoeCwgU29tZSBgUGMpICopXG4gICgqIGxldCBwZXJjZW50IHggPSAoeCwgU29tZSBgUGVyY2VudCkgKilcbiAgKCogbGV0IGh6IHggICAgICA9ICh4LCBTb21lIGBIeikgKilcbiAgKCogbGV0IGtoeiB4ICAgICA9ICh4LCBTb21lIGBLSHopICopXG5cbiAgbGV0IHRvX3N0cmluZyBmIChuLCB1bml0KSA9IFByaW50Zi5zcHJpbnRmIFwiJWclc1wiIG4gYmVnaW5cbiAgICBtYXRjaCB1bml0IHdpdGhcbiAgICB8IFNvbWUgdW5pdCAtPiBmIHVuaXRcbiAgICB8IE5vbmUgLT4gXCJcIlxuICBlbmRcblxuICBsZXQgYW5nbGVfbmFtZXMgPSBmdW5jdGlvbiBgRGVnIC0+IFwiZGVnXCIgfCBgR3JhZCAtPiBcImdyYWRcIiB8IGBSYWQgLT4gXCJyYWRcIlxuICBsZXQgc3RyaW5nX29mX2FuZ2xlIGEgPSB0b19zdHJpbmcgYW5nbGVfbmFtZXMgYVxuXG4gICgqIGxldCB0aW1lX25hbWVzID0gZnVuY3Rpb24gYE1zIC0+IFwibXNcIiB8IGBTIC0+IFwic1wiICopXG4gICgqIGxldCBzdHJpbmdfb2ZfdGltZSBhID0gdG9fc3RyaW5nIHRpbWVfbmFtZXMgYSAqKVxuXG4gIGxldCBsZW5ndGhfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgYEVtIC0+IFwiZW1cIiB8IGBFeCAtPiBcImV4XCIgfCBgUHggLT4gXCJweFwiIHwgYEluIC0+IFwiaW5cIiB8IGBDbSAtPiBcImNtXCJcbiAgICB8IGBNbSAtPiBcIm1tXCIgfCBgUHQgLT4gXCJwdFwiIHwgYFBjIC0+IFwicGNcIiB8IGBQZXJjZW50IC0+IFwiJVwiXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoIChhOiBsZW5ndGgpID0gdG9fc3RyaW5nIGxlbmd0aF9uYW1lcyBhXG5cbiAgKCogbGV0IGZyZXFfbmFtZXMgPSBmdW5jdGlvbiBgSHogLT4gXCJIelwiIHwgYEtIeiAtPiBcImtIelwiICopXG4gICgqIGxldCBzdHJpbmdfb2ZfZnJlcSBhID0gdG9fc3RyaW5nIGZyZXFfbmFtZXMgYSAqKVxuXG5lbmRcblxub3BlbiBVbml0XG5cbmxldCBvcHRfY29uY2F0ID8oc2VwPVwiIFwiKSBzIGYgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiBzIF4gc2VwIF4gKGYgeClcbiAgfCBOb25lIC0+IHNcblxubGV0IGxpc3QgPyhzZXA9XCIgXCIpIGYgbCA9IFN0cmluZy5jb25jYXQgc2VwIChMaXN0Lm1hcCBmIGwpXG5cbmxldCBzdHJpbmdfb2ZfY29sb3IgcyA9IHNcbigqIEZvciBub3cganVzdCBzdHJpbmcsIHdlIG1heSB3YW50IHNvbWV0aGluZyBiZXR0ZXIgaW4gdGhlIGZ1dHVyZS4gKilcblxubGV0IHN0cmluZ19vZl9pY2Njb2xvciBzID0gc1xuXG5sZXQgc3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjID0gZnVuY3Rpb25cbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBDdXJyZW50Q29sb3IgLT4gXCJjdXJyZW50Q29sb3JcIlxuICB8IGBDb2xvciAoYywgaWNjKSAtPiBvcHRfY29uY2F0IChzdHJpbmdfb2ZfY29sb3IgYykgc3RyaW5nX29mX2ljY2NvbG9yIGljY1xuXG5sZXQgc3RyaW5nX29mX3BhaW50ID0gZnVuY3Rpb25cbiAgfCBgSWNjIChpcmksIE5vbmUpIC0+IHN0cmluZ19vZl9pcmkgaXJpXG4gIHwgYEljYyAoaXJpLCBTb21lIGIpIC0+XG4gICAgKHN0cmluZ19vZl9pcmkgaXJpKSBeXCIgXCJeIChzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgYilcbiAgfCAjcGFpbnRfd2hpdG91dF9pY2MgYXMgYyAtPiBzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgY1xuXG5sZXQgc3RyaW5nX29mX2ZpbGxfcnVsZSA9IGZ1bmN0aW9uXG4gIHwgYE5vbnplcm8gLT4gXCJub256ZXJvXCJcbiAgfCBgRXZlbm9kZCAtPiBcImV2ZW5vZGRcIlxuXG5tb2R1bGUgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zXG5cbiAgICAoWG1sIDogWG1sX3NpZ3MuVClcbiAgICAoQyA6IFN2Z19zaWdzLldyYXBwZWRfZnVuY3Rpb25zIHdpdGggbW9kdWxlIFhtbCA9IFhtbCkgPVxuXG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG4gIG1vZHVsZSBXID0gWG1sLldcblxuICBtb2R1bGUgSW5mbyA9IHN0cnVjdFxuICAgIGxldCBjb250ZW50X3R5cGUgPSBcImltYWdlL3N2Zyt4bWxcIlxuICAgIGxldCBhbHRlcm5hdGl2ZV9jb250ZW50X3R5cGVzID0gW11cbiAgICBsZXQgZW1wdHl0YWdzID0gW11cbiAgICBsZXQgdmVyc2lvbiA9IFwiU1ZHIDEuMVwiXG4gICAgbGV0IHN0YW5kYXJkID0gXCJodHRwOi8vd3d3LnczLm9yZy9UUi9zdmcxMS9cIlxuICAgIGxldCBuYW1lc3BhY2UgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBsZXQgZG9jdHlwZSA9XG4gICAgICBYbWxfcHJpbnQuY29tcG9zZV9kb2N0eXBlXCJzdmdcIlxuICAgICAgICBbXCItLy9XM0MvL0RURCBTVkcgMS4xLy9FTlwiO1xuICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGRcIl1cbiAgZW5kXG5cbiAgdHlwZSB1cmkgPSBYbWwudXJpXG4gIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcbiAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG5cbiAgKCogTWFuZGF0b3J5IFhNTCBzdHVmZi4gKilcblxuICB0eXBlICdhIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICB0eXBlICsnYSBlbHQgPSBYbWwuZWx0XG5cbiAgdHlwZSAnYSB3cmFwID0gJ2EgVy50XG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgVy50bGlzdFxuXG4gIHR5cGUgKCdhLCAnYikgbnVsbGFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gdW5pdCAtPiAnYiBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSB1bmFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gJ2IgZWx0IHdyYXAgLT4gJ2MgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgc3RhciA9XG4gICAgP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAoJ2IgZWx0KSBsaXN0X3dyYXAgLT4gJ2MgZWx0XG5cbiAgbGV0IHRvdCB4ID0geFxuXG4gIGxldCB0b3RsIHggPSB4XG5cbiAgbGV0IHRvZWx0IHggPSB4XG5cbiAgbGV0IHRvZWx0bCB4ID0geFxuXG4gIGxldCB0b19hdHRyaWIgeCA9IHhcblxuICBsZXQgbnVsbGFyeSB0YWcgP2EgKCkgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5uaWwgKCkpXG5cbiAgbGV0IHVuYXJ5IHRhZyA/YSBlbHQgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5zaW5nbGV0b24gZWx0KVxuXG4gIGxldCBzdGFyIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICB0eXBlIGFsdGdseXBoZGVmX2NvbnRlbnQgPVxuICAgIFsgYFJlZiBvZiAoZ2x5cGhyZWYgZWx0KSBsaXN0XG4gICAgfCBgSXRlbSBvZiAoYWx0Z2x5cGhpdGVtIGVsdCkgbGlzdFxuICAgIF1cblxuICBsZXQgdG9feG1sYXR0cmlicyB4ID0geFxuXG4gIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICgqIHdyYXAgQyBtb2R1bGUgZnVuY3Rpb25zICopXG5cbiAgbGV0IHN0cmluZ19vZl9jb29yZCA9IEMuc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoID0gQy5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGhzID0gQy5zdHJpbmdfb2ZfbGVuZ3Roc1xuXG4gICgqIEN1c3RvbSBYTUwgYXR0cmlidXRlcyAqKVxuXG4gIGxldCB1c2VyX2F0dHJpYiBmIG5hbWUgdiA9XG4gICAgWG1sLnN0cmluZ19hdHRyaWIgbmFtZSAoVy5mbWFwIGYgdilcblxuICBsZXQgbnVtYmVyX2F0dHJpYiA9IGZsb2F0X2F0dHJpYlxuXG4gICgqIGZvciBub3cgc3RyaW5nX2F0dHJpYiwgd2UgbWF5IHdhbnQgc29tZXRoaW5nIGJldHRlciBpbiB0aGVcbiAgICAgZnV0dXJlLiAqKVxuICBsZXQgY29sb3JfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAoKiBTVkcgYXR0cmlidXRlcyAqKVxuXG4gIGxldCBtZXRhZGF0YSA/YSBjaGlsZHJlbiA9IFhtbC5ub2RlID9hIFwibWV0YWRhdGFcIiBjaGlsZHJlblxuXG4gIGxldCBmb3JlaWduT2JqZWN0ID9hIGNoaWxkcmVuID0gWG1sLm5vZGUgP2EgXCJmb3JlaWduT2JqZWN0XCIgY2hpbGRyZW5cblxuICBsZXQgdHh0IHMgPSBYbWwucGNkYXRhIHNcbiAgbGV0IHBjZGF0YSA9IHR4dFxuXG4gICgqIGdlbmVyYXRlZCAqKVxuICBsZXQgYV92ZXJzaW9uID0gc3RyaW5nX2F0dHJpYiBcInZlcnNpb25cIlxuXG4gIGxldCBhX2Jhc2VQcm9maWxlID0gc3RyaW5nX2F0dHJpYiBcImJhc2VQcm9maWxlXCJcblxuICBsZXQgYV94ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieFwiXG5cbiAgbGV0IGFfeSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInlcIlxuXG4gIGxldCBhX3dpZHRoID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcIndpZHRoXCJcblxuICBsZXQgYV9oZWlnaHQgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiaGVpZ2h0XCJcblxuICBsZXQgYV9wcmVzZXJ2ZUFzcGVjdFJhdGlvID1cbiAgICBzdHJpbmdfYXR0cmliIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiXG5cbiAgbGV0IGFfY29udGVudFNjcmlwdFR5cGUgPVxuICAgIHN0cmluZ19hdHRyaWIgXCJjb250ZW50U2NyaXB0VHlwZVwiXG5cbiAgbGV0IGFfY29udGVudFN0eWxlVHlwZSA9IHN0cmluZ19hdHRyaWIgXCJjb250ZW50U3R5bGVUeXBlXCJcblxuICBsZXQgYV96b29tQW5kUGFuIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiem9vbUFuZFNwYW5cIiB4XG5cbiAgbGV0IGFfaHJlZiA9IHN0cmluZ19hdHRyaWIgXCJocmVmXCJcblxuICBsZXQgYV94bGlua19ocmVmID0gc3RyaW5nX2F0dHJpYiBcInhsaW5rOmhyZWZcIlxuXG4gIGxldCBhX3JlcXVpcmVkRmVhdHVyZXMgPVxuICAgIFhtbC5zcGFjZV9zZXBfYXR0cmliIFwicmVxdWlyZWRGZWF0dXJlc1wiXG5cbiAgbGV0IGFfcmVxdWlyZWRFeHRlbnNpb25zID1cbiAgICBYbWwuc3BhY2Vfc2VwX2F0dHJpYiBcInJlcXVpcmVkRXh0ZW5zaW9uXCJcblxuICBsZXQgYV9zeXN0ZW1MYW5ndWFnZSA9XG4gICAgWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJzeXN0ZW1MYW5ndWFnZVwiXG5cbiAgbGV0IGFfZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2wgXCJleHRlcm5hbFJlc3NvdXJjZXNSZXF1aXJlZFwiXG5cbiAgbGV0IGFfaWQgPSBzdHJpbmdfYXR0cmliIFwiaWRcIlxuXG4gIGxldCBhX3VzZXJfZGF0YSBuYW1lID0gc3RyaW5nX2F0dHJpYiAoXCJkYXRhLVwiIF4gbmFtZSlcblxuICBsZXQgYV94bWxfYmFzZSA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6YmFzZVwiXG5cbiAgbGV0IGFfeG1sX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwieG1sOmxhbmdcIlxuXG4gIGxldCBhX3htbF9zcGFjZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbDpzcGFjZVwiIHhcblxuICBsZXQgYV90eXBlID0gc3RyaW5nX2F0dHJpYiBcInR5cGVcIlxuXG4gIGxldCBhX21lZGlhID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJtZWRpYVwiXG5cbiAgbGV0IGFfeGxpbmtfdGl0bGUgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6dGl0bGVcIlxuXG4gIGxldCBhX2NsYXNzID0gWG1sLnNwYWNlX3NlcF9hdHRyaWIgXCJjbGFzc1wiXG5cbiAgbGV0IGFfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuXG4gIGxldCBhX3RyYW5zZm9ybSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJ0cmFuc2Zvcm1cIlxuXG4gIGxldCBhX3ZpZXdCb3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9mb3VyZmxvYXRzIFwidmlld0JveFwiXG5cbiAgbGV0IGFfZCA9IHN0cmluZ19hdHRyaWIgXCJkXCJcblxuICBsZXQgYV9wYXRoTGVuZ3RoID0gbnVtYmVyX2F0dHJpYiBcInBhdGhMZW5ndGhcIlxuXG4gIGxldCBhX3J4ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJ4XCJcblxuICBsZXQgYV9yeSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJyeVwiXG5cbiAgbGV0IGFfY3ggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiY3hcIlxuXG4gIGxldCBhX2N5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcImN5XCJcblxuICBsZXQgYV9yID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJcIlxuXG4gIGxldCBhX3gxID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieDFcIlxuXG4gIGxldCBhX3kxID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieTFcIlxuXG4gIGxldCBhX3gyID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieDJcIlxuXG4gIGxldCBhX3kyID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieTJcIlxuXG4gIGxldCBhX3BvaW50cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Nvb3JkcyBcInBvaW50c1wiXG5cbiAgbGV0IGFfeF9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJ4XCJcblxuICBsZXQgYV95X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcInlcIlxuXG4gIGxldCBhX2R4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZHhcIlxuXG4gIGxldCBhX2R5ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZHlcIlxuXG4gIGxldCBhX2R4X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcImR4XCJcblxuICBsZXQgYV9keV9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJkeVwiXG5cbiAgbGV0IGFfbGVuZ3RoQWRqdXN0IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibGVuZ3RoQWRqdXN0XCIgeFxuXG4gIGxldCBhX3RleHRMZW5ndGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwidGV4dExlbmd0aFwiXG5cbiAgbGV0IGFfdGV4dF9hbmNob3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LWFuY2hvclwiIHhcblxuICBsZXQgYV90ZXh0X2RlY29yYXRpb24geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LWRlY29yYXRpb25cIiB4XG5cbiAgbGV0IGFfdGV4dF9yZW5kZXJpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0ZXh0LXJlbmRlcmluZ1wiIHhcblxuICBsZXQgYV9yb3RhdGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwicm90YXRlXCJcblxuICBsZXQgYV9zdGFydE9mZnNldCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJzdGFydE9mZnNldFwiXG5cbiAgbGV0IGFfbWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWV0aG9kXCIgeFxuXG4gIGxldCBhX3NwYWNpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzcGFjaW5nXCIgeFxuXG4gIGxldCBhX2dseXBoUmVmID0gc3RyaW5nX2F0dHJpYiBcImdseXBoUmVmXCJcblxuICBsZXQgYV9mb3JtYXQgPSBzdHJpbmdfYXR0cmliIFwiZm9ybWF0XCJcblxuICBsZXQgYV9tYXJrZXJVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1hcmtlclVuaXRzXCIgeFxuXG4gIGxldCBhX3JlZlggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJyZWZYXCJcblxuICBsZXQgYV9yZWZZID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwicmVmWVwiXG5cbiAgbGV0IGFfbWFya2VyV2lkdGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwibWFya2VyV2lkdGhcIlxuXG4gIGxldCBhX21hcmtlckhlaWdodCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJtYXJrZXJIZWlnaHRcIlxuXG4gIGxldCBhX29yaWVudCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9vcmllbnQgXCJvcmllbnRcIiB4XG5cbiAgbGV0IGFfbG9jYWwgPSBzdHJpbmdfYXR0cmliIFwibG9jYWxcIlxuXG4gIGxldCBhX3JlbmRlcmluZ19pbnRlbnQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJyZW5kZXJpbmctaW50ZW50XCIgeFxuXG4gIGxldCBhX2dyYWRpZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJncmFkaWVudFVuaXRzXCIgeFxuXG4gIGxldCBhX2dyYWRpZW50VHJhbnNmb3JtID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl90cmFuc2Zvcm1zIFwiZ3JhZGllbnRUcmFuc2Zvcm1cIlxuXG4gIGxldCBhX3NwcmVhZE1ldGhvZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNwcmVhZE1ldGhvZFwiIHhcblxuICBsZXQgYV9meCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcImZ4XCJcblxuICBsZXQgYV9meSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcImZ5XCJcblxuICBsZXQgYV9vZmZzZXQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfb2Zmc2V0IFwib2Zmc2V0XCIgeFxuXG4gIGxldCBhX3BhdHRlcm5Vbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInBhdHRlcm5Vbml0c1wiIHhcblxuICBsZXQgYV9wYXR0ZXJuQ29udGVudFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicGF0dGVybkNvbnRlbnRVbml0c1wiIHhcblxuICBsZXQgYV9wYXR0ZXJuVHJhbnNmb3JtIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJwYXR0ZXJuVHJhbnNmb3JtXCIgeFxuXG4gIGxldCBhX2NsaXBQYXRoVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJjbGlwUGF0aFVuaXRzXCIgeFxuXG4gIGxldCBhX21hc2tVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1hc2tVbml0c1wiIHhcblxuICBsZXQgYV9tYXNrQ29udGVudFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFza0NvbnRlbnRVbml0c1wiIHhcblxuICBsZXQgYV9wcmltaXRpdmVVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInByaW1pdGl2ZVVuaXRzXCIgeFxuXG4gIGxldCBhX2ZpbHRlclJlcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcImZpbHRlclJlc1VuaXRzXCJcblxuICBsZXQgYV9yZXN1bHQgPSBzdHJpbmdfYXR0cmliIFwicmVzdWx0XCJcblxuICBsZXQgYV9pbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbl92YWx1ZSBcImluXCIgeFxuXG4gIGxldCBhX2luMiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbl92YWx1ZSBcImluMlwiIHhcblxuICBsZXQgYV9hemltdXRoID0gbnVtYmVyX2F0dHJpYiBcImF6aW11dGhcIlxuXG4gIGxldCBhX2VsZXZhdGlvbiA9IG51bWJlcl9hdHRyaWIgXCJlbGV2YXRpb25cIlxuXG4gIGxldCBhX3BvaW50c0F0WCA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFhcIlxuXG4gIGxldCBhX3BvaW50c0F0WSA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFlcIlxuXG4gIGxldCBhX3BvaW50c0F0WiA9IG51bWJlcl9hdHRyaWIgXCJwb2ludHNBdFpcIlxuXG4gIGxldCBhX3NwZWN1bGFyRXhwb25lbnQgPSBudW1iZXJfYXR0cmliIFwic3BlY3VsYXJFeHBvbmVudFwiXG5cbiAgbGV0IGFfc3BlY3VsYXJDb25zdGFudCA9IG51bWJlcl9hdHRyaWIgXCJzcGVjdWxhckNvbnN0YW50XCJcblxuICBsZXQgYV9saW1pdGluZ0NvbmVBbmdsZSA9IG51bWJlcl9hdHRyaWIgXCJsaW1pdGluZ0NvbmVBbmdsZVwiXG5cbiAgbGV0IGFfbW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1vZGVcIiB4XG5cbiAgbGV0IGFfZmVDb2xvck1hdHJpeF90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV92YWx1ZXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwidmFsdWVzXCJcblxuICBsZXQgYV90cmFuc2Zlcl90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV90YWJsZVZhbHVlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJ0YWJsZVZhbHVlc1wiXG5cbiAgbGV0IGFfaW50ZXJjZXB0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaW50ZXJjZXB0XCJcblxuICBsZXQgYV9hbXBsaXR1ZGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhbXBsaXR1ZGVcIlxuXG4gIGxldCBhX2V4cG9uZW50ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZXhwb25lbnRcIlxuXG4gIGxldCBhX3RyYW5zZmVyX29mZnNldCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm9mZnNldFwiXG5cbiAgbGV0IGFfZmVDb21wb3NpdGVfb3BlcmF0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJvcGVyYXRvclwiIHhcblxuICBsZXQgYV9rMSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImsxXCJcblxuICBsZXQgYV9rMiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImsyXCJcblxuICBsZXQgYV9rMyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImszXCJcblxuICBsZXQgYV9rNCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIms0XCJcblxuICBsZXQgYV9vcmRlciA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJvcmRlclwiXG5cbiAgbGV0IGFfa2VybmVsTWF0cml4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcImtlcm5lbE1hdHJpeFwiXG5cbiAgbGV0IGFfZGl2aXNvciA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImRpdmlzb3JcIlxuXG4gIGxldCBhX2JpYXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJiaWFzXCJcblxuICBsZXQgYV9rZXJuZWxVbml0TGVuZ3RoID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwia2VybmVsVW5pdExlbmd0aFwiXG5cbiAgbGV0IGFfdGFyZ2V0WCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcInRhcmdldFhcIlxuXG4gIGxldCBhX3RhcmdldFkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnQgXCJ0YXJnZXRZXCJcblxuICBsZXQgYV9lZGdlTW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRhcmdldFlcIiB4XG5cbiAgbGV0IGFfcHJlc2VydmVBbHBoYSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2wgXCJwcmVzZXJ2ZUFscGhhXCJcblxuICBsZXQgYV9zdXJmYWNlU2NhbGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdXJmYWNlU2NhbGVcIlxuXG4gIGxldCBhX2RpZmZ1c2VDb25zdGFudCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZGlmZnVzZUNvbnN0YW50XCJcblxuICBsZXQgYV9zY2FsZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNjYWxlXCJcblxuICBsZXQgYV94Q2hhbm5lbFNlbGVjdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieENoYW5uZWxTZWxlY3RvclwiIHhcblxuICBsZXQgYV95Q2hhbm5lbFNlbGVjdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieUNoYW5uZWxTZWxlY3RvclwiIHhcblxuICBsZXQgYV9zdGREZXZpYXRpb24gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJzdGREZXZpYXRpb25cIlxuXG4gIGxldCBhX2ZlTW9ycGhvbG9neV9vcGVyYXRvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9wZXJhdG9yXCIgeFxuXG4gIGxldCBhX3JhZGl1cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJyYWRpdXNcIlxuXG4gIGxldCBhX2Jhc2VGcmVucXVlbmN5ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwiYmFzZUZyZXF1ZW5jeVwiXG5cbiAgbGV0IGFfbnVtT2N0YXZlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcIm51bU9jdGF2ZXNcIlxuXG4gIGxldCBhX3NlZWQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzZWVkXCJcblxuICBsZXQgYV9zdGl0Y2hUaWxlcyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInN0aXRjaFRpbGVzXCIgeFxuXG4gIGxldCBhX2ZlVHVyYnVsZW5jZV90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV94bGlua19zaG93IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieGxpbms6c2hvd1wiIHhcblxuICBsZXQgYV94bGlua19hY3R1YXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieGxpbms6YWN0dWF0ZVwiIHhcblxuICBsZXQgYV90YXJnZXQgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6dGFyZ2V0XCJcblxuICBsZXQgYV92aWV3VGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcInZpZXdUYXJnZXRcIlxuXG4gIGxldCBhX2F0dHJpYnV0ZU5hbWUgPSBzdHJpbmdfYXR0cmliIFwiYXR0cmlidXRlTmFtZVwiXG5cbiAgbGV0IGFfYXR0cmlidXRlVHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImF0dHJpYnV0ZVR5cGVcIiB4XG5cbiAgbGV0IGFfYmVnaW4gPSBzdHJpbmdfYXR0cmliIFwiYmVnaW5cIlxuXG4gIGxldCBhX2R1ciA9IHN0cmluZ19hdHRyaWIgXCJkdXJcIlxuXG4gIGxldCBhX21pbiA9IHN0cmluZ19hdHRyaWIgXCJtaW5cIlxuXG4gIGxldCBhX21heCA9IHN0cmluZ19hdHRyaWIgXCJtYXhcIlxuXG4gIGxldCBhX3Jlc3RhcnQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJyZXN0YXJ0XCIgeFxuXG4gIGxldCBhX3JlcGVhdENvdW50ID0gc3RyaW5nX2F0dHJpYiBcInJlcGVhdENvdW50XCJcblxuICBsZXQgYV9yZXBlYXREdXIgPSBzdHJpbmdfYXR0cmliIFwicmVwZWF0RHVyXCJcblxuICBsZXQgYV9maWxsID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcGFpbnQgXCJmaWxsXCJcblxuICBsZXQgYV9hbmltYXRpb25fZmlsbCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZpbGxcIiB4XG5cbiAgbGV0IGFfZmlsbF9ydWxlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfZmlsbF9ydWxlIFwiZmlsbC1ydWxlXCJcblxuICBsZXQgYV9jYWxjTW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNhbGNNb2RlXCIgeFxuXG4gIGxldCBhX2FuaW1hdGlvbl92YWx1ZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcInZhbHVlc1wiXG5cbiAgbGV0IGFfa2V5VGltZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcImtleVRpbWVzXCJcblxuICBsZXQgYV9rZXlTcGxpbmVzID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJrZXlTcGxpbmVzXCJcblxuICBsZXQgYV9mcm9tID0gc3RyaW5nX2F0dHJpYiBcImZyb21cIlxuXG4gIGxldCBhX3RvID0gc3RyaW5nX2F0dHJpYiBcInRvXCJcblxuICBsZXQgYV9ieSA9IHN0cmluZ19hdHRyaWIgXCJieVwiXG5cbiAgbGV0IGFfYWRkaXRpdmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhZGRpdGl2ZVwiIHhcblxuICBsZXQgYV9hY2N1bXVsYXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYWNjdW11bGF0ZVwiIHhcblxuICBsZXQgYV9rZXlQb2ludHMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzX3NlbWljb2xvbiBcImtleVBvaW50c1wiXG5cbiAgbGV0IGFfcGF0aCA9IHN0cmluZ19hdHRyaWIgXCJwYXRoXCJcblxuICBsZXQgYV9hbmltYXRlVHJhbnNmb3JtX3R5cGUgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiXG5cbiAgbGV0IGFfaG9yaXpfb3JpZ2luX3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1vcmlnaW4teFwiXG5cbiAgbGV0IGFfaG9yaXpfb3JpZ2luX3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1vcmlnaW4teVwiXG5cbiAgbGV0IGFfaG9yaXpfYWR2X3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJob3Jpei1hZHYteFwiXG5cbiAgbGV0IGFfdmVydF9vcmlnaW5feCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInZlcnQtb3JpZ2luLXhcIlxuXG4gIGxldCBhX3ZlcnRfb3JpZ2luX3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2ZXJ0LW9yaWdpbi15XCJcblxuICBsZXQgYV92ZXJ0X2Fkdl95ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidmVydC1hZHYteVwiXG5cbiAgbGV0IGFfdW5pY29kZSA9IHN0cmluZ19hdHRyaWIgXCJ1bmljb2RlXCJcblxuICBsZXQgYV9nbHlwaF9uYW1lID0gc3RyaW5nX2F0dHJpYiBcImdseXBobmFtZVwiXG5cbiAgbGV0IGFfb3JpZW50YXRpb24geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJvcmllbnRhdGlvblwiIHhcblxuICBsZXQgYV9hcmFiaWNfZm9ybSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFyYWJpYy1mb3JtXCIgeFxuXG4gIGxldCBhX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwibGFuZ1wiXG5cbiAgbGV0IGFfdTEgPSBzdHJpbmdfYXR0cmliIFwidTFcIlxuXG4gIGxldCBhX3UyID0gc3RyaW5nX2F0dHJpYiBcInUyXCJcblxuICBsZXQgYV9nMSA9IHN0cmluZ19hdHRyaWIgXCJnMVwiXG5cbiAgbGV0IGFfZzIgPSBzdHJpbmdfYXR0cmliIFwiZzJcIlxuXG4gIGxldCBhX2sgPSBzdHJpbmdfYXR0cmliIFwia1wiXG5cbiAgbGV0IGFfZm9udF9mYW1pbHkgPSBzdHJpbmdfYXR0cmliIFwiZm9udC1mYW1pbHlcIlxuXG4gIGxldCBhX2ZvbnRfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwiZm9udC1zdHlsZVwiXG5cbiAgbGV0IGFfZm9udF92YXJpYW50ID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtdmFyaWFudFwiXG5cbiAgbGV0IGFfZm9udF93ZWlnaHQgPSBzdHJpbmdfYXR0cmliIFwiZm9udC13ZWlnaHRcIlxuXG4gIGxldCBhX2ZvbnRfc3RyZXRjaCA9IHN0cmluZ19hdHRyaWIgXCJmb250LXN0cmV0Y2hcIlxuXG4gIGxldCBhX2ZvbnRfc2l6ZSA9IHN0cmluZ19hdHRyaWIgXCJmb250LXNpemVcIlxuXG4gIGxldCBhX3VuaWNvZGVfcmFuZ2UgPSBzdHJpbmdfYXR0cmliIFwidW5pY29kZS1yYW5nZVwiXG5cbiAgbGV0IGFfdW5pdHNfcGVyX2VtID0gc3RyaW5nX2F0dHJpYiBcInVuaXRzLXBlci1lbVwiXG5cbiAgbGV0IGFfc3RlbXYgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdGVtdlwiXG5cbiAgbGV0IGFfc3RlbWggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdGVtaFwiXG5cbiAgbGV0IGFfc2xvcGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzbG9wZVwiXG5cbiAgbGV0IGFfY2FwX2hlaWdodCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImNhcC1oZWlnaHRcIlxuXG4gIGxldCBhX3hfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwieC1oZWlnaHRcIlxuXG4gIGxldCBhX2FjY2VudF9oZWlnaHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhY2NlbnQtaGVpZ2h0XCJcblxuICBsZXQgYV9hc2NlbnQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhc2NlbnRcIlxuXG4gIGxldCBhX3dpZHRocyA9IHN0cmluZ19hdHRyaWIgXCJ3aWR0aHNcIlxuXG4gIGxldCBhX2Jib3ggPSBzdHJpbmdfYXR0cmliIFwiYmJveFwiXG5cbiAgbGV0IGFfaWRlb2dyYXBoaWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJpZGVvZ3JhcGhpY1wiXG5cbiAgbGV0IGFfYWxwaGFiZXRpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFscGhhYmV0aWNcIlxuXG4gIGxldCBhX21hdGhlbWF0aWNhbCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm1hdGhlbWF0aWNhbFwiXG5cbiAgbGV0IGFfaGFuZ2luZyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhhbmdpbmdcIlxuXG4gIGxldCBhX3ZpZGVvZ3JhcGhpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtaWRlb2dyYXBoaWNcIlxuXG4gIGxldCBhX3ZfYWxwaGFiZXRpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtYWxwaGFiZXRpY1wiXG5cbiAgbGV0IGFfdl9tYXRoZW1hdGljYWwgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LW1hdGhlbWF0aWNhbFwiXG5cbiAgbGV0IGFfdl9oYW5naW5nID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1oYW5naW5nXCJcblxuICBsZXQgYV91bmRlcmxpbmVfcG9zaXRpb24gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInVuZGVybGluZS1wb3NpdGlvblwiXG5cbiAgbGV0IGFfdW5kZXJsaW5lX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidW5kZXJsaW5lLXRoaWNrbmVzc1wiXG5cbiAgbGV0IGFfc3RyaWtldGhyb3VnaF9wb3NpdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RyaWtldGhyb3VnaC1wb3NpdGlvblwiXG5cbiAgbGV0IGFfc3RyaWtldGhyb3VnaF90aGlja25lc3MgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cmlrZXRocm91Z2gtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9vdmVybGluZV9wb3NpdGlvbiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm92ZXJsaW5lLXBvc2l0aW9uXCJcblxuICBsZXQgYV9vdmVybGluZV90aGlja25lc3MgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIm92ZXJsaW5lLXRoaWNrbmVzc1wiXG5cbiAgbGV0IGFfc3RyaW5nID0gc3RyaW5nX2F0dHJpYiBcInN0cmluZ1wiXG5cbiAgbGV0IGFfbmFtZSA9IHN0cmluZ19hdHRyaWIgXCJuYW1lXCJcblxuICBsZXQgYV9hbGlnbm1lbnRfYmFzZWxpbmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYWxpZ25tZW50X2Jhc2VsaW5lIFwiYWxpZ25tZW50LWJhc2VsaW5lXCIgeFxuXG4gIGxldCBhX2RvbWluYW50X2Jhc2VsaW5lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2RvbWluYW50X2Jhc2VsaW5lIFwiZG9taW5hbnQtYmFzZWxpbmVcIiB4XG5cbiAgKCoqIEphdmFzY3JpcHQgZXZlbnRzICopXG5cbiAgbGV0IGFfb25hYm9ydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWJvcnRcIlxuICBsZXQgYV9vbmFjdGl2YXRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hY3RpdmF0ZVwiXG4gIGxldCBhX29uYmVnaW4gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJlZ2luXCJcbiAgbGV0IGFfb25lbmQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVuZFwiXG4gIGxldCBhX29uZXJyb3IgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVycm9yXCJcbiAgbGV0IGFfb25mb2N1c2luID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c2luXCJcbiAgbGV0IGFfb25mb2N1c291dCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9jdXNvdXRcIlxuICBsZXQgYV9vbmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRcIlxuICBsZXQgYV9vbnJlcGVhdCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVwZWF0XCJcbiAgbGV0IGFfb25yZXNpemUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlc2l6ZVwiXG4gIGxldCBhX29uc2Nyb2xsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zY3JvbGxcIlxuICBsZXQgYV9vbnVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5sb2FkXCJcbiAgbGV0IGFfb256b29tID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib256b29tXCJcblxuICAoKiogSmF2YXNjcmlwdCBtb3VzZSBldmVudHMgKilcblxuICBsZXQgYV9vbmNsaWNrID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jbGlja1wiXG4gIGxldCBhX29ubW91c2Vkb3duID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZWRvd25cIlxuICBsZXQgYV9vbm1vdXNldXAgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNldXBcIlxuICBsZXQgYV9vbm1vdXNlb3ZlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdmVyXCJcbiAgbGV0IGFfb25tb3VzZW91dCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdXRcIlxuICBsZXQgYV9vbm1vdXNlbW92ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vtb3ZlXCJcblxuICAoKiogSmF2YXNjcmlwdCB0b3VjaCBldmVudHMgKilcbiAgbGV0IGFfb250b3VjaHN0YXJ0ID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaHN0YXJ0XCJcbiAgbGV0IGFfb250b3VjaGVuZCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hlbmRcIlxuICBsZXQgYV9vbnRvdWNobW92ZSA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2htb3ZlXCJcbiAgbGV0IGFfb250b3VjaGNhbmNlbCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hjYW5jZWxcIlxuXG4gIGxldCBhX3N0b3BfY29sb3IgPSBjb2xvcl9hdHRyaWIgXCJzdG9wLWNvbG9yXCJcblxuICBsZXQgYV9zdG9wX29wYWNpdHkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdG9wLW9wYWNpdHlcIlxuXG4gIGxldCBhX3N0cm9rZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3BhaW50IFwic3Ryb2tlXCJcblxuICBsZXQgYV9zdHJva2Vfd2lkdGggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9sZW5ndGggXCJzdHJva2Utd2lkdGhcIlxuXG4gIGxldCBhX3N0cm9rZV9saW5lY2FwIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3Ryb2tlLWxpbmVjYXBcIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX2xpbmVqb2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3Ryb2tlLWxpbmVqb2luXCIgeFxuXG4gIGxldCBhX3N0cm9rZV9taXRlcmxpbWl0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJva2UtbWl0ZXJsaW1pdFwiXG5cbiAgbGV0IGFfc3Ryb2tlX2Rhc2hhcnJheSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zdHJva2VkYXNoYXJyYXkgXCJzdHJva2UtZGFzaGFycmF5XCIgeFxuXG4gIGxldCBhX3N0cm9rZV9kYXNob2Zmc2V0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9sZW5ndGggXCJzdHJva2UtZGFzaG9mZnNldFwiXG5cbiAgbGV0IGFfc3Ryb2tlX29wYWNpdHkgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cm9rZS1vcGFjaXR5XCJcblxuICAoKiB4bGluayBuYW1lc3BhY2UgZ2l2ZW4gYSBuaWNrbmFtZSBzaW5jZSBzb21lIGF0dHJpYnV0ZXMgbWFuZGF0ZWQgYnlcbiAgICAgdGhlIHN2ZyBzdGFuZGFyZCBzdWNoIGFzIHhsaW5rOmhyZWYgbGl2ZSBpbiB0aGF0IG5hbWVzcGFjZSwgYW5kIHdlXG4gICAgIHJlZmVyIHRvIHRoZW0gYXMgXCJ4bGluazp3aGF0ZXZlclwiIChzZWUgYV94bGlua19ocmVmIG9yIGFfeGxpbmtzaG93KVxuICAqKVxuICBsZXQgc3ZnID8oYSA9IFtdKSBjaGlsZHJlbiA9XG4gICAgbGV0IGF0dHJpYnMgPVxuICAgICAgc3RyaW5nX2F0dHJpYiBcInhtbG5zXCIgKFcucmV0dXJuIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIilcbiAgICAgIDo6IHN0cmluZ19hdHRyaWIgXCJ4bWxuczp4bGlua1wiIChXLnJldHVybiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIilcbiAgICAgIDo6IHRvX3htbGF0dHJpYnMgYVxuICAgIGluXG4gICAgc3RhciB+YTooYXR0cmlicykgXCJzdmdcIiBjaGlsZHJlblxuXG4gICgqIGFsc28gZ2VuZXJhdGVkICopXG4gIGxldCBnID0gc3RhciBcImdcIlxuXG4gIGxldCBkZWZzID0gc3RhciBcImRlZnNcIlxuXG4gIGxldCBkZXNjID0gdW5hcnkgXCJkZXNjXCJcblxuICBsZXQgdGl0bGUgPSB1bmFyeSBcInRpdGxlXCJcblxuICBsZXQgc3ltYm9sID0gc3RhciBcInN5bWJvbFwiXG5cbiAgbGV0IHVzZSA9IHN0YXIgXCJ1c2VcIlxuXG4gIGxldCBpbWFnZSA9IHN0YXIgXCJpbWFnZVwiXG5cbiAgbGV0IHN3aXRjaCA9IHN0YXIgXCJzd2l0Y2hcIlxuXG4gIGxldCBzdHlsZSA9IHVuYXJ5IFwic3R5bGVcIlxuXG4gIGxldCBwYXRoID0gc3RhciBcInBhdGhcIlxuXG4gIGxldCByZWN0ID0gc3RhciBcInJlY3RcIlxuXG4gIGxldCBjaXJjbGUgPSBzdGFyIFwiY2lyY2xlXCJcblxuICBsZXQgZWxsaXBzZSA9IHN0YXIgXCJlbGxpcHNlXCJcblxuICBsZXQgbGluZSA9IHN0YXIgXCJsaW5lXCJcblxuICBsZXQgcG9seWxpbmUgPSBzdGFyIFwicG9seWxpbmVcIlxuXG4gIGxldCBwb2x5Z29uID0gc3RhciBcInBvbHlnb25cIlxuXG4gIGxldCB0ZXh0ID0gc3RhciBcInRleHRcIlxuXG4gIGxldCB0c3BhbiA9IHN0YXIgXCJ0c3BhblwiXG5cbiAgbGV0IHRyZWYgPSBzdGFyIFwidHJlZlwiXG5cbiAgbGV0IHRleHRQYXRoID0gc3RhciBcInRleHRQYXRoXCJcblxuICBsZXQgYWx0R2x5cGggPSB1bmFyeSBcImFsdEdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgPSB1bmFyeSBcImFsdEdseXBoRGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtID0gc3RhciBcImFsdEdseXBoSXRlbVwiXG5cbiAgbGV0IGdseXBoUmVmID0gbnVsbGFyeSBcImdseXBoUmVmXCJcblxuICBsZXQgbWFya2VyID0gc3RhciBcIm1hcmtlclwiXG5cbiAgbGV0IGNvbG9yX3Byb2ZpbGUgPSBzdGFyIFwiY29sb3ItcHJvZmlsZVwiXG5cbiAgbGV0IGxpbmVhckdyYWRpZW50ID0gc3RhciBcImxpbmVhckdyYWRpZW50XCJcblxuICBsZXQgcmFkaWFsR3JhZGllbnQgPSBzdGFyIFwicmFkaWFsR3JhZGllbnRcIlxuXG4gIGxldCBzdG9wID0gc3RhciBcInN0b3BcIlxuXG4gIGxldCBwYXR0ZXJuID0gc3RhciBcInBhdHRlcm5cIlxuXG4gIGxldCBjbGlwUGF0aCA9IHN0YXIgXCJjbGlwUGF0aFwiXG5cbiAgbGV0IGZpbHRlciA9IHN0YXIgXCJmaWx0ZXJcIlxuXG4gIGxldCBmZURpc3RhbnRMaWdodCA9IHN0YXIgXCJmZURpc3RhbnRMaWdodFwiXG5cbiAgbGV0IGZlUG9pbnRMaWdodCA9IHN0YXIgXCJmZVBvaW50TGlnaHRcIlxuXG4gIGxldCBmZVNwb3RMaWdodCA9IHN0YXIgXCJmZVNwb3RMaWdodFwiXG5cbiAgbGV0IGZlQmxlbmQgPSBzdGFyIFwiZmVCbGVuZFwiXG5cbiAgbGV0IGZlQ29sb3JNYXRyaXggPSBzdGFyIFwiZmVDb2xvck1hdHJpeFwiXG5cbiAgbGV0IGZlQ29tcG9uZW50VHJhbnNmZXIgPSBzdGFyIFwiZmVDb21wb25lbnRUcmFuc2ZlclwiXG5cbiAgbGV0IGZlRnVuY0EgPSBzdGFyIFwiZmVGdW5jQVwiXG5cbiAgbGV0IGZlRnVuY0cgPSBzdGFyIFwiZmVGdW5jR1wiXG5cbiAgbGV0IGZlRnVuY0IgPSBzdGFyIFwiZmVGdW5jQlwiXG5cbiAgbGV0IGZlRnVuY1IgPSBzdGFyIFwiZmVGdW5jUlwiXG5cbiAgbGV0IGZlQ29tcG9zaXRlID0gc3RhciBcImZlQ29tcG9zaXRlXCJcblxuICBsZXQgZmVDb252b2x2ZU1hdHJpeCA9IHN0YXIgXCJmZUNvbnZvbHZlTWF0cml4XCJcblxuICBsZXQgZmVEaWZmdXNlTGlnaHRpbmcgPSBzdGFyIFwiZmVEaWZmdXNlTGlnaHRpbmdcIlxuXG4gIGxldCBmZURpc3BsYWNlbWVudE1hcCA9IHN0YXIgXCJmZURpc3BsYWNlbWVudE1hcFwiXG5cbiAgbGV0IGZlRmxvb2QgPSBzdGFyIFwiZmVGbG9vZFwiXG5cbiAgbGV0IGZlR2F1c3NpYW5CbHVyID0gc3RhciBcImZlR2F1c3NpYW5CbHVyXCJcblxuICBsZXQgZmVJbWFnZSA9IHN0YXIgXCJmZUltYWdlXCJcblxuICBsZXQgZmVNZXJnZSA9IHN0YXIgXCJmZU1lcmdlXCJcblxuICBsZXQgZmVNb3JwaG9sb2d5ID0gc3RhciBcImZlTW9ycGhvbG9neVwiXG5cbiAgbGV0IGZlT2Zmc2V0ID0gc3RhciBcImZlT2Zmc2V0XCJcblxuICBsZXQgZmVTcGVjdWxhckxpZ2h0aW5nID0gc3RhciBcImZlU3BlY3VsYXJMaWdodGluZ1wiXG5cbiAgbGV0IGZlVGlsZSA9IHN0YXIgXCJmZVRpbGVcIlxuXG4gIGxldCBmZVR1cmJ1bGVuY2UgPSBzdGFyIFwiZmVUdXJidWxlbmNlXCJcblxuICBsZXQgY3Vyc29yID0gc3RhciBcImN1cnNvclwiXG5cbiAgbGV0IGEgPSBzdGFyIFwiYVwiXG5cbiAgbGV0IHZpZXcgPSBzdGFyIFwidmlld1wiXG5cbiAgbGV0IHNjcmlwdCA9IHVuYXJ5IFwic2NyaXB0XCJcblxuICBsZXQgYW5pbWF0ZSA9IHN0YXIgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0aW9uID0gYW5pbWF0ZVxuXG4gIGxldCBzZXQgPSBzdGFyIFwic2V0XCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiA9IHN0YXIgXCJhbmltYXRlTW90aW9uXCJcblxuICBsZXQgbXBhdGggPSBzdGFyIFwibXBhdGhcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgPSBzdGFyIFwiYW5pbWF0ZUNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSA9IHN0YXIgXCJhbmltYXRlVHJhbnNmb3JtXCJcblxuICBsZXQgZm9udCA9IHN0YXIgXCJmb250XCJcblxuICBsZXQgZ2x5cGggPSBzdGFyIFwiZ2x5cGhcIlxuXG4gIGxldCBtaXNzaW5nX2dseXBoID0gc3RhciBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBoa2VybiA9IG51bGxhcnkgXCJoa2VyblwiXG5cbiAgbGV0IHZrZXJuID0gbnVsbGFyeSBcInZrZXJuXCJcblxuICBsZXQgZm9udF9mYWNlID0gbnVsbGFyeSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9zcmMgPSBzdGFyIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRfZmFjZV91cmkgPSBzdGFyIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9mb3JtYXQgPSBudWxsYXJ5IFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvbnRfZmFjZV9uYW1lID0gbnVsbGFyeSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICB0eXBlIGRvYyA9IFsgYFN2ZyBdIGVsdFxuICBsZXQgZG9jX3RvZWx0IHggPSB4XG5cbiAgbW9kdWxlIEkgPSBYbWxfc3RyZWFtLkltcG9ydChYbWwpXG4gIGxldCBvZl9zZXEgcyA9IHRvdGwgQEAgSS5vZl9zZXEgc1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcblxuICAgIGxldCBkYXRhIHMgPSBYbWwuZW5jb2RlZHBjZGF0YSBzXG5cbiAgICBsZXQgbGVhZiB0YWcgP2EgKCkgPSBYbWwubGVhZiA/YSB0YWdcblxuICAgIGxldCBub2RlIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICAgIGxldCBjb2VyY2VfZWx0IHggPSB4XG5cbiAgICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gICAgbGV0IGludF9hdHRyaWIgPSBYbWwuaW50X2F0dHJpYlxuXG4gICAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiA9IFhtbC5zcGFjZV9zZXBfYXR0cmliXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgV3JhcHBlZF9mdW5jdGlvbnNcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCdiKSBXLmZ0ID0gJ2EgLT4gJ2IpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcblxuICBsZXQgc3RyaW5nX29mX2FsaWdubWVudF9iYXNlbGluZSA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICAgIHwgYEJlZm9yZV9lZGdlIC0+IFwiYmVmb3JlLWVkZ2VcIlxuICAgIHwgYFRleHRfYmVmb3JlX2VkZ2UgLT4gXCJ0ZXh0LWJlZm9yZS1lZGdlXCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYENlbnRyYWwgLT4gXCJjZW50cmFsXCJcbiAgICB8IGBBZnRlcl9lZGdlIC0+IFwiYWZ0ZXItZWRnZVwiXG4gICAgfCBgVGV4dF9hZnRlcl9lZGdlIC0+IFwidGV4dC1hZnRlci1lZGdlXCJcbiAgICB8IGBJZGVvZ3JhcGhpYyAtPiBcImlkZW9ncmFwaGljXCJcbiAgICB8IGBBbHBoYWJldGljIC0+IFwiYWxwaGFiZXRpY1wiXG4gICAgfCBgSGFuZ2luZy0+IFwiaGFuZ2luZ1wiXG4gICAgfCBgTWF0aGVtYXRpY2FsIC0+IFwibWF0aGVtYXRpY2FsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG5cbiAgbGV0IHN0cmluZ19vZl9iaWdfdmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBgQSAtPiBcImFcIlxuICAgIHwgYEFic29sdXRlX2NvbG9yaW1ldHJpYyAtPiBcImFic29sdXRlX2NvbG9yaW1ldHJpY1wiXG4gICAgfCBgQWxpZ24gLT4gXCJcIlxuICAgIHwgYEFsd2F5cyAtPiBcImFsd2F5c1wiXG4gICAgfCBgQXRvcCAtPiBcImF0b3BcIlxuICAgIHwgYEFyaXRobWV0aWMgLT4gXCJhcml0aG1ldGljXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgQiAtPiBcImJcIlxuICAgIHwgYEJldmVyIC0+IFwiYmV2ZWxcIlxuICAgIHwgYEJsaW5rIC0+IFwiYmxpbmtcIlxuICAgIHwgYEJ1dHQgLT4gXCJidXR0XCJcbiAgICB8IGBDU1MgLT4gXCJDU1NcIlxuICAgIHwgYERhcmtlbiAtPiBcImRhcmtlblwiXG4gICAgfCBgRGVmYXVsdCAtPiBcImRlZmF1bHRcIlxuICAgIHwgYERpbGF0ZSAtPiBcImRpbGF0ZVwiXG4gICAgfCBgRGlzYWJsZSAtPiBcImRpc2FibGVcIlxuICAgIHwgYERpc2NyZXRlIC0+IFwiZGlzY3JldGVcIlxuICAgIHwgYER1cGxpY2F0ZSAtPiBcImR1cGxpY2F0ZVwiXG4gICAgfCBgRW5kIC0+IFwiZW5kXCJcbiAgICB8IGBFcm9kZSAtPiBcImVyb2RlXCJcbiAgICB8IGBFeGFjdCAtPiBcImV4YWN0XCJcbiAgICB8IGBGcmFjdGFsTm9pc2UgLT4gXCJmcmFjdGFsTm9pc2VcIlxuICAgIHwgYEZyZWV6ZSAtPiBcImZyZWV6ZVwiXG4gICAgfCBgSHVlUm90YXRlIC0+IFwiaHVlUm90YXRlXCJcbiAgICB8IGBHIC0+IFwiZ1wiXG4gICAgfCBgR2FtbWEgLT4gXCJnYW1tYVwiXG4gICAgfCBgR2VvbWV0cmljUHJlY2lzaW9uIC0+IFwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICB8IGBIIC0+IFwiaFwiXG4gICAgfCBgSWRlbnRpdHkgLT4gXCJpZGVudGl0eVwiXG4gICAgfCBgSW4gLT4gXCJpblwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJc29sYXRlZCAtPiBcImlzb2xhdGVkXCJcbiAgICB8IGBMaWdodGVuIC0+IFwibGlnaHRlblwiXG4gICAgfCBgTGluZV90aHJvdWdoIC0+IFwibGluZS10aHJvdWdoXCJcbiAgICB8IGBMaW5lYXIgLT4gXCJsaW5lYXJcIlxuICAgIHwgYEx1bWluYW5jZVRvQWxwaGEgLT4gXCJsdW1pbmFuY2VUb0FscGhhXCJcbiAgICB8IGBNYWduaWZ5IC0+IFwibWFnbmlmeVwiXG4gICAgfCBgTWF0cml4IC0+IFwibWF0cml4XCJcbiAgICB8IGBNZWRpYWwgLT4gXCJtZWRpYWxcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgTWl0ZXIgLT4gXCJtaXRlclwiXG4gICAgfCBgTXVsdGlwbHkgLT4gXCJtdWx0aXBseVwiXG4gICAgfCBgTmV2ZXIgLT4gXCJuZXZlclwiXG4gICAgfCBgTmV3IC0+IFwibmV3XCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb1N0aXRjaCAtPiBcIm5vU3RpdGNoXCJcbiAgICB8IGBPYmplY3RCb3VuZGluZ0JveCAtPiBcIm9iamVjdEJvdW5kaW5nQm94XCJcbiAgICB8IGBPbkxvYWQgLT4gXCJvbkxvYWRcIlxuICAgIHwgYE9uUmVxdWVzdCAtPiBcIm9uUmVxdWVzdFwiXG4gICAgfCBgT3B0aW1pemVMZWdpYmlsaXR5IC0+IFwib3B0aW1pemVMZWdpYmlsaXR5XCJcbiAgICB8IGBPcHRpbWl6ZVNwZWVkIC0+IFwib3B0aW1pemVTcGVlZFwiXG4gICAgfCBgT3RoZXIgLT4gXCJvdGhlclwiXG4gICAgfCBgT3V0IC0+IFwib3V0XCJcbiAgICB8IGBPdmVyIC0+IFwib3ZlclwiXG4gICAgfCBgT3ZlcmxpbmUgLT4gXCJvdmVybGluZVwiXG4gICAgfCBgUGFjZWQgLT4gXCJwYWNlZFwiXG4gICAgfCBgUGFkIC0+IFwicGFkXCJcbiAgICB8IGBQZXJjZXB0dWFsIC0+IFwicGVyY2VwdHVhbFwiXG4gICAgfCBgUHJlc2VydmUgLT4gXCJwcmVzZXJ2ZVwiXG4gICAgfCBgUiAtPiBcInJcIlxuICAgIHwgYFJlZmxlY3QgLT4gXCJyZWZsZWN0XCJcbiAgICB8IGBSZW1vdmUgLT4gXCJyZW1vdmVcIlxuICAgIHwgYFJlcGVhdCAtPiBcInJlcGVhdFwiXG4gICAgfCBgUmVwbGFjZSAtPiBcInJlcGxhY2VcIlxuICAgIHwgYFJlbGF0aXZlX2NvbG9yaW1ldHJpYyAtPiBcInJlbGF0aXZlX2NvbG9yaW1ldHJpY1wiXG4gICAgfCBgUm90YXRlIC0+IFwicm90YXRlXCJcbiAgICB8IGBSb3VuZCAtPiBcInJvdW5kXCJcbiAgICB8IGBTYXR1cmF0ZSAtPiBcInNhdHVyYXRlXCJcbiAgICB8IGBTYXR1cmF0aW9uIC0+IFwic2F0dXJhdGlvblwiXG4gICAgfCBgU2NhbGUgLT4gXCJzY2FsZVwiXG4gICAgfCBgU2NyZWVuIC0+IFwic2NyZWVuXCJcbiAgICB8IGBTa2V3WCAtPiBcInNrZXdYXCJcbiAgICB8IGBTa2V3WSAtPiBcInNrZXdZXCJcbiAgICB8IGBTcGFjaW5nIC0+IFwic3BhY2luZ1wiXG4gICAgfCBgU3BhY2luZ0FuZEdseXBocyAtPiBcInNwYWNpbmdBbmRHbHlwaHNcIlxuICAgIHwgYFNwbGluZSAtPiBcInNwbGluZVwiXG4gICAgfCBgU3F1YXJlIC0+IFwic3F1YXJlXCJcbiAgICB8IGBTdGFydCAtPiBcInN0YXJ0XCJcbiAgICB8IGBTdGl0Y2ggLT4gXCJzdGl0Y2hcIlxuICAgIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbiAgICB8IGBTdHJva2VXaWR0aCAtPiBcInN0cm9rZS13aWR0aFwiXG4gICAgfCBgU3VtIC0+IFwic3VtXCJcbiAgICB8IGBUYWJsZSAtPiBcInRhYmxlXCJcbiAgICB8IGBUZXJtaW5hbCAtPiBcInRlcm1pbmFsXCJcbiAgICB8IGBUcmFuc2xhdGUgLT4gXCJ0cmFuc2xhdGVcIlxuICAgIHwgYFR1cmJ1bGVuY2UgLT4gXCJ0dXJidWxlbmNlXCJcbiAgICB8IGBVbmRlcmxpbmUgLT4gXCJ1bmRlcmxpbmVcIlxuICAgIHwgYFVzZXJTcGFjZU9uVXNlIC0+IFwidXNlclNwYWNlT25Vc2VcIlxuICAgIHwgYFYgLT4gXCJ2XCJcbiAgICB8IGBXaGVuTm90QWN0aXZlIC0+IFwid2hlbk5vdEFjdGl2ZVwiXG4gICAgfCBgV3JhcCAtPiBcIndyYXBcIlxuICAgIHwgYFhNTCAtPiBcIlhNTFwiXG4gICAgfCBgWG9yIC0+IFwieG9yXCJcblxuICBsZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGxldCBzdHJpbmdfb2ZfY29vcmRzID1cbiAgICBsaXN0IChmdW4gKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJWcsICVnXCIgYSBiKVxuXG4gIGxldCBzdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBVc2Vfc2NyaXB0IC0+IFwidXNlc2NyaXB0XCJcbiAgICB8IGBOb19jaGFuZ2UgLT4gXCJub2NoYW5nZVwiXG4gICAgfCBgUmVzZXRfc2l6ZSAtPiBcInJlc2V0c2l6ZVwiXG4gICAgfCBgSWRlb2dyYXBoaWMgLT4gXCJpZGVvZ3JhcGhpY1wiXG4gICAgfCBgQWxwaGFiZXRpYyAtPiBcImFscGhhYmV0aWNcIlxuICAgIHwgYEhhbmdpbmcgLT4gXCJoYW5naW5nXCJcbiAgICB8IGBNYXRoZW1hdGljYWwgLT4gXCJtYXRoZW1hdGljYWxcIlxuICAgIHwgYENlbnRyYWwgLT4gXCJjZW50cmFsXCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYFRleHRfYWZ0ZXJfZWRnZSAtPiBcInRleHRhZnRlcmVkZ2VcIlxuICAgIHwgYFRleHRfYmVmb3JlX2VkZ2UgLT4gXCJ0ZXh0YmVmb3JlZWRnZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuXG5cbiAgbGV0IHN0cmluZ19vZl9pbl92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBgU291cmNlR3JhcGhpYyAtPiBcInNvdXJjZUdyYXBoaWNcIlxuICAgIHwgYFNvdXJjZUFscGhhIC0+IFwic291cmNlQWxwaGFcIlxuICAgIHwgYEJhY2tncm91bmRJbWFnZSAtPiBcImJhY2tncm91bmRJbWFnZVwiXG4gICAgfCBgQmFja2dyb3VuZEFscGhhIC0+IFwiYmFja2dyb3VuZEFscGhhXCJcbiAgICB8IGBGaWxsUGFpbnQgLT4gXCJmaWxsUGFpbnRcIlxuICAgIHwgYFN0cm9rZVBhaW50IC0+IFwic3Ryb2tlUGFpbnRcIlxuICAgIHwgYFJlZiBfc3ZnIC0+IF9zdmdcblxuICBsZXQgc3RyaW5nX29mX2ludCA9IHN0cmluZ19vZl9pbnRcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aCA9IFVuaXQuc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RocyA9IGxpc3Qgc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyID0gWG1sX3ByaW50LnN0cmluZ19vZl9udW1iZXJcblxuICBsZXQgc3RyaW5nX29mX3BlcmNlbnRhZ2UgeCA9IChzdHJpbmdfb2ZfbnVtYmVyIHgpIF4gXCIlXCJcblxuICBsZXQgc3RyaW5nX29mX2ZvdXJmbG9hdHMgKGEsIGIsIGMsIGQpID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzICVzXCJcbiAgICAgIChzdHJpbmdfb2ZfbnVtYmVyIGEpIChzdHJpbmdfb2ZfbnVtYmVyIGIpIChzdHJpbmdfb2ZfbnVtYmVyIGMpIChzdHJpbmdfb2ZfbnVtYmVyIGQpXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyID0gZnVuY3Rpb25cbiAgICB8IHgsIFNvbWUgeSAtPiBQcmludGYuc3ByaW50ZiBcIiVnLCAlZ1wiIHggeVxuICAgIHwgeCwgTm9uZSAtPiBQcmludGYuc3ByaW50ZiBcIiVnXCIgeFxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVycyA9IGxpc3Qgc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyc19zZW1pY29sb24gPSBsaXN0IH5zZXA6XCI7IFwiIHN0cmluZ19vZl9udW1iZXJcblxuICBsZXQgc3RyaW5nX29mX29mZnNldCA9IGZ1bmN0aW9uXG4gICAgfCBgTnVtYmVyIHggLT4gc3RyaW5nX29mX251bWJlciB4XG4gICAgfCBgUGVyY2VudGFnZSB4IC0+IHN0cmluZ19vZl9wZXJjZW50YWdlIHhcblxuICBsZXQgc3RyaW5nX29mX29yaWVudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFwiYXV0b1wiXG4gICAgfCBTb21lIF9fc3ZnIC0+IHN0cmluZ19vZl9hbmdsZSBfX3N2Z1xuXG4gIGxldCBzdHJpbmdfb2ZfcGFpbnQgPSBzdHJpbmdfb2ZfcGFpbnRcblxuICBsZXQgc3RyaW5nX29mX2ZpbGxfcnVsZSA9IHN0cmluZ19vZl9maWxsX3J1bGVcblxuICBsZXQgc3RyaW5nX29mX3N0cm9rZWRhc2hhcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBcIm5vbmVcIlxuICAgIHwgbCAtPiBsaXN0IHN0cmluZ19vZl9sZW5ndGggbFxuXG4gIGxldCBzdHJpbmdfb2ZfdHJhbnNmb3JtID0gZnVuY3Rpb25cbiAgICB8IGBNYXRyaXggKGEsIGIsIGMsIGQsIGUsIGYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIm1hdHJpeCglZyAlZyAlZyAlZyAlZyAlZylcIiBhIGIgYyBkIGUgZlxuICAgIHwgYFRyYW5zbGF0ZSB4IC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInRyYW5zbGF0ZSglcylcIlxuICAgICAgICAoc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgeClcbiAgICB8IGBTY2FsZSB4IC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNjYWxlKCVzKVwiIChzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciB4KVxuICAgIHwgYFJvdGF0ZSAoKGFuZ2xlLCB4KSkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwicm90YXRlKCVzICVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG4gICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgIHwgU29tZSAoKHgsIHkpKSAtPiBQcmludGYuc3ByaW50ZiBcIiVnICVnXCIgeCB5XG4gICAgICAgICB8IE5vbmUgLT4gXCJcIilcbiAgICB8IGBTa2V3WCBhbmdsZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJza2V3WCglcylcIiAoc3RyaW5nX29mX2FuZ2xlIGFuZ2xlKVxuICAgIHwgYFNrZXdZIGFuZ2xlIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNrZXdZKCVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG5cbiAgbGV0IHN0cmluZ19vZl90cmFuc2Zvcm1zIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHN0cmluZ19vZl90cmFuc2Zvcm0gbClcblxuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwgJ2IpIFcuZnQgPSAoJ2EgLT4gJ2IpKSA9XG4gIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9ucyhYbWwpKFdyYXBwZWRfZnVuY3Rpb25zKFhtbCkpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IGJ5IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDA3IGJ5IFZpbmNlbnQgQmFsYXQsIEdhYnJpZWwgS2VybmVpc1xuICogQ29weXJpZ2h0IChDKSAyMDEwIGJ5IENlY2lsZSBIZXJiZWxpblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9uc1xuXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQpXG4gICAgKEMgOiBIdG1sX3NpZ3MuV3JhcHBlZF9mdW5jdGlvbnMgd2l0aCBtb2R1bGUgWG1sID0gWG1sKVxuICAgIChTdmcgOiBTdmdfc2lncy5UIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cblxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuXG4gIG1vZHVsZSBXID0gWG1sLldcblxuICBtb2R1bGUgSW5mbyA9IHN0cnVjdFxuICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvaHRtbFwiXG4gICAgbGV0IGFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMgPSBbXCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIjtcImFwcGxpY2F0aW9uL3htbFwiO1widGV4dC94bWxcIl1cbiAgICBsZXQgdmVyc2lvbiA9IFwiSFRNTDUtZHJhZnRcIlxuICAgIGxldCBzdGFuZGFyZCA9IFwiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvXCJcbiAgICBsZXQgbmFtZXNwYWNlID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcbiAgICBsZXQgZG9jdHlwZSA9XG4gICAgICBYbWxfcHJpbnQuY29tcG9zZV9kb2N0eXBlIFwiaHRtbFwiIFtdXG4gICAgbGV0IGVtcHR5dGFncyA9XG4gICAgICBbIFwiYXJlYVwiOyBcImJhc2VcIjsgXCJiclwiOyBcImNvbFwiOyBcImNvbW1hbmRcIjsgXCJlbWJlZFwiOyBcImhyXCI7IFwiaW1nXCI7XG4gICAgICAgIFwiaW5wdXRcIjsgXCJrZXlnZW5cIjsgXCJsaW5rXCI7IFwibWV0YVwiOyBcInBhcmFtXCI7IFwic291cmNlXCI7IFwid2JyXCIgXVxuICBlbmRcblxuICB0eXBlICdhIHdyYXAgPSAnYSBXLnRcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgdHlwZSB1cmkgPSBYbWwudXJpXG4gIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcbiAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG4gIHR5cGUgaW1hZ2VfY2FuZGlkYXRlID1cbiAgICBbIGBVcmwgb2YgdXJpXG4gICAgfCBgVXJsX3dpZHRoIG9mIHVyaSAqIEh0bWxfdHlwZXMubnVtYmVyXG4gICAgfCBgVXJsX3BpeGVsIG9mIHVyaSAqIEh0bWxfdHlwZXMuZmxvYXRfbnVtYmVyIF1cblxuICB0eXBlICdhIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICBsZXQgdG9feG1sYXR0cmlicyB4ID0geFxuICBsZXQgdG9fYXR0cmliIHggPSB4XG5cbiAgKCogVkIgKilcbiAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICBsZXQgaW50X2F0dHJpYiA9IFhtbC5pbnRfYXR0cmliXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gIGxldCB1cmlfYXR0cmliIGEgcyA9IFhtbC51cmlfYXR0cmliIGEgc1xuXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliID0gWG1sLnNwYWNlX3NlcF9hdHRyaWJcblxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgbGV0IHVzZXJfYXR0cmliIGYgbmFtZSB2ID0gWG1sLnN0cmluZ19hdHRyaWIgbmFtZSAoVy5mbWFwIGYgdilcblxuICBsZXQgYm9vbF9hdHRyaWIgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9ib29sXG5cbiAgbGV0IGNvbnN0YW50X2F0dHJpYiBhICgpID1cbiAgICBzdHJpbmdfYXR0cmliIGEgKFcucmV0dXJuIGEpXG5cbiAgbGV0IGxpbmt0eXBlc19hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9saW5rdHlwZXMgbmFtZSB4XG5cbiAgbGV0IG1lZGlhZGVzY19hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9tZWRpYWRlc2MgbmFtZSB4XG5cbiAgbGV0IHNyY3NldF9hdHRyaWIgbmFtZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zcmNzZXQgbmFtZSB4XG5cbiAgKCogQ29yZTogKilcbiAgbGV0IGFfY2xhc3MgPSBzcGFjZV9zZXBfYXR0cmliIFwiY2xhc3NcIlxuXG4gIGxldCBhX2lkID0gc3RyaW5nX2F0dHJpYiBcImlkXCJcblxuICBsZXQgYV91c2VyX2RhdGEgbmFtZSA9IHN0cmluZ19hdHRyaWIgKFwiZGF0YS1cIiBeIG5hbWUpXG5cbiAgbGV0IGFfdGl0bGUgPSBzdHJpbmdfYXR0cmliIFwidGl0bGVcIlxuXG4gICgqIEkxOE46ICopXG4gIGxldCBhX3htbF9sYW5nID0gc3RyaW5nX2F0dHJpYiBcInhtbDpsYW5nXCJcbiAgbGV0IGFfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJsYW5nXCJcblxuICAoKiBTdHlsZTogKilcbiAgbGV0IGFfc3R5bGUgPSBzdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuXG4gIGxldCBhX3Byb3BlcnR5ID0gc3RyaW5nX2F0dHJpYiBcInByb3BlcnR5XCJcblxuICAoKiBFdmVudHM6ICopXG4gIGxldCBhX29uYWJvcnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFib3J0XCJcbiAgbGV0IGFfb25hZnRlcnByaW50ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hZnRlcnByaW50XCJcbiAgbGV0IGFfb25iZWZvcmVwcmludCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVmb3JlcHJpbnRcIlxuICBsZXQgYV9vbmJlZm9yZXVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVmb3JldW5sb2FkXCJcbiAgbGV0IGFfb25ibHVyID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25ibHVyXCJcbiAgbGV0IGFfb25jYW5wbGF5ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jYW5wbGF5XCJcbiAgbGV0IGFfb25jYW5wbGF5dGhyb3VnaCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2FucGxheXRocm91Z2hcIlxuICBsZXQgYV9vbmNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2hhbmdlXCJcbiAgbGV0IGFfb25jbG9zZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2xvc2VcIlxuICBsZXQgYV9vbmR1cmF0aW9uY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kdXJhdGlvbmNoYW5nZVwiXG4gIGxldCBhX29uZW1wdGllZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW1wdGllZFwiXG4gIGxldCBhX29uZW5kZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVuZGVkXCJcbiAgbGV0IGFfb25lcnJvciA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZXJyb3JcIlxuICBsZXQgYV9vbmZvY3VzID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c1wiXG4gIGxldCBhX29uZm9ybWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9ybWNoYW5nZVwiXG4gIGxldCBhX29uZm9ybWlucHV0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb3JtaW5wdXRcIlxuICBsZXQgYV9vbmhhc2hjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmhhc2hjaGFuZ2VcIlxuICBsZXQgYV9vbmlucHV0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25pbnB1dFwiXG4gIGxldCBhX29uaW52YWxpZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uaW52YWxpZFwiXG4gIGxldCBhX29ub2ZmbGluZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ub2ZmbGluZVwiXG4gIGxldCBhX29ub25saW5lID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25vbmxpbmVcIlxuICBsZXQgYV9vbnBhdXNlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wYXVzZVwiXG4gIGxldCBhX29ucGxheSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGxheVwiXG4gIGxldCBhX29ucGxheWluZyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGxheWluZ1wiXG4gIGxldCBhX29ucGFnZWhpZGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBhZ2VoaWRlXCJcbiAgbGV0IGFfb25wYWdlc2hvdyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGFnZXNob3dcIlxuICBsZXQgYV9vbnBvcHN0YXRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wb3BzdGF0ZVwiXG4gIGxldCBhX29ucHJvZ3Jlc3MgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnByb2dyZXNzXCJcbiAgbGV0IGFfb25yYXRlY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yYXRlY2hhbmdlXCJcbiAgbGV0IGFfb25yZWFkeXN0YXRlY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZWFkeXN0YXRlY2hhbmdlXCJcbiAgbGV0IGFfb25yZWRvID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZWRvXCJcbiAgbGV0IGFfb25yZXNpemUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlc2l6ZVwiXG4gIGxldCBhX29uc2Nyb2xsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zY3JvbGxcIlxuICBsZXQgYV9vbnNlZWtlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Vla2VkXCJcbiAgbGV0IGFfb25zZWVraW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zZWVraW5nXCJcbiAgbGV0IGFfb25zZWxlY3QgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNlbGVjdFwiXG4gIGxldCBhX29uc2hvdyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2hvd1wiXG4gIGxldCBhX29uc3RhbGxlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3RhbGxlZFwiXG4gIGxldCBhX29uc3RvcmFnZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3RvcmFnZVwiXG4gIGxldCBhX29uc3VibWl0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdWJtaXRcIlxuICBsZXQgYV9vbnN1c3BlbmQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN1c3BlbmRcIlxuICBsZXQgYV9vbnRpbWV1cGRhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRpbWV1cGRhdGVcIlxuICBsZXQgYV9vbnVuZG8gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnVuZG9cIlxuICBsZXQgYV9vbnVubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5sb2FkXCJcbiAgbGV0IGFfb252b2x1bWVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnZvbHVtZWNoYW5nZVwiXG4gIGxldCBhX29ud2FpdGluZyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ud2FpdGluZ1wiXG4gIGxldCBhX29ubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZFwiXG4gIGxldCBhX29ubG9hZGVkZGF0YSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZGVkZGF0YVwiXG4gIGxldCBhX29ubG9hZGVkbWV0YWRhdGEgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRlZG1ldGFkYXRhXCJcbiAgbGV0IGFfb25sb2Fkc3RhcnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRzdGFydFwiXG4gIGxldCBhX29ubWVzc2FnZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubWVzc2FnZVwiXG4gIGxldCBhX29ubW91c2V3aGVlbCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V3aGVlbFwiXG5cbiAgKCoqIEphdmFzY3JpcHQgbW91c2UgZXZlbnRzICopXG4gIGxldCBhX29uY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNsaWNrXCJcbiAgbGV0IGFfb25jb250ZXh0bWVudSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY29udGV4dG1lbnVcIlxuICBsZXQgYV9vbmRibGNsaWNrID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kYmxjbGlja1wiXG4gIGxldCBhX29uZHJhZyA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ1wiXG4gIGxldCBhX29uZHJhZ2VuZCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ2VuZFwiXG4gIGxldCBhX29uZHJhZ2VudGVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnZW50ZXJcIlxuICBsZXQgYV9vbmRyYWdsZWF2ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ2xlYXZlXCJcbiAgbGV0IGFfb25kcmFnb3ZlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ292ZXJcIlxuICBsZXQgYV9vbmRyYWdzdGFydCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ3N0YXJ0XCJcbiAgbGV0IGFfb25kcm9wID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcm9wXCJcbiAgbGV0IGFfb25tb3VzZWRvd24gPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlZG93blwiXG4gIGxldCBhX29ubW91c2V1cCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V1cFwiXG4gIGxldCBhX29ubW91c2VvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW92ZXJcIlxuICBsZXQgYV9vbm1vdXNlbW92ZSA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vtb3ZlXCJcbiAgbGV0IGFfb25tb3VzZW91dCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdXRcIlxuXG4gICgqKiBKYXZhc2NyaXB0IHRvdWNoIGV2ZW50cyAqKVxuICBsZXQgYV9vbnRvdWNoc3RhcnQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoc3RhcnRcIlxuICBsZXQgYV9vbnRvdWNoZW5kID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGVuZFwiXG4gIGxldCBhX29udG91Y2htb3ZlID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaG1vdmVcIlxuICBsZXQgYV9vbnRvdWNoY2FuY2VsID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGNhbmNlbFwiXG5cbiAgKCoqIEphdmFzY3JpcHQga2V5Ym9hcmQgZXZlbnRzICopXG4gIGxldCBhX29ua2V5cHJlc3MgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmtleXByZXNzXCJcbiAgbGV0IGFfb25rZXlkb3duID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25rZXlkb3duXCJcbiAgbGV0IGFfb25rZXl1cCA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ua2V5dXBcIlxuXG4gICgqIE90aGVyIEF0dHJpYnV0ZXMgKilcbiAgbGV0IGFfdmVyc2lvbiA9IHN0cmluZ19hdHRyaWIgXCJ2ZXJzaW9uXCJcblxuICBsZXQgYV94bWxucyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbG5zXCIgeFxuXG4gIGxldCBhX21hbmlmZXN0ID0gdXJpX2F0dHJpYiBcIm1hbmlmZXN0XCJcblxuICBsZXQgYV9jaXRlID0gdXJpX2F0dHJpYiBcImNpdGVcIlxuXG4gIGxldCBhX3htbF9zcGFjZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhtbDpzcGFjZVwiIHhcblxuICBsZXQgYV9hY2Nlc3NrZXkgYyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY2hhcmFjdGVyIFwiYWNjZXNza2V5XCIgY1xuXG4gIGxldCBhX2NoYXJzZXQgPSBzdHJpbmdfYXR0cmliIFwiY2hhcnNldFwiXG5cbiAgbGV0IGFfYWNjZXB0X2NoYXJzZXQgPSBzcGFjZV9zZXBfYXR0cmliIFwiYWNjZXB0LWNoYXJzZXRcIlxuXG4gIGxldCBhX2FjY2VwdCA9IGNvbW1hX3NlcF9hdHRyaWIgXCJhY2NlcHRcIlxuXG4gIGxldCBhX2hyZWYgPSB1cmlfYXR0cmliIFwiaHJlZlwiXG5cbiAgbGV0IGFfaHJlZmxhbmcgPSBzdHJpbmdfYXR0cmliIFwiaHJlZmxhbmdcIlxuXG4gIGxldCBhX2Rvd25sb2FkIGZpbGUgPVxuICAgIHVzZXJfYXR0cmliIChDLnVub3B0aW9uX3N0cmluZykgXCJkb3dubG9hZFwiIGZpbGVcblxuICBsZXQgYV9yZWwgPSBsaW5rdHlwZXNfYXR0cmliIFwicmVsXCJcblxuICBsZXQgYV90YWJpbmRleCA9IGludF9hdHRyaWIgXCJ0YWJpbmRleFwiXG5cbiAgbGV0IGFfbWltZV90eXBlID0gc3RyaW5nX2F0dHJpYiBcInR5cGVcIlxuXG4gIGxldCBhX2FsdCA9IHN0cmluZ19hdHRyaWIgXCJhbHRcIlxuXG4gIGxldCBhX2hlaWdodCBwID0gaW50X2F0dHJpYiBcImhlaWdodFwiIHBcblxuICBsZXQgYV9zcmMgPSB1cmlfYXR0cmliIFwic3JjXCJcblxuICBsZXQgYV93aWR0aCBwID0gaW50X2F0dHJpYiBcIndpZHRoXCIgcFxuXG4gIGxldCBhX2xhYmVsX2ZvciA9IHN0cmluZ19hdHRyaWIgXCJmb3JcIlxuICBsZXQgYV9mb3IgPSBhX2xhYmVsX2ZvclxuXG4gIGxldCBhX291dHB1dF9mb3IgPSBzcGFjZV9zZXBfYXR0cmliIFwiZm9yXCJcbiAgbGV0IGFfZm9yX2xpc3QgPSBhX291dHB1dF9mb3JcblxuICBsZXQgYV9zZWxlY3RlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2VsZWN0ZWRcIlxuXG4gIGxldCBhX3RleHRfdmFsdWUgPSBzdHJpbmdfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2ludF92YWx1ZSA9IGludF9hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfdmFsdWUgPSBzdHJpbmdfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2Zsb2F0X3ZhbHVlID0gZmxvYXRfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX2FjdGlvbiA9IHVyaV9hdHRyaWIgXCJhY3Rpb25cIlxuXG4gIGxldCBhX21ldGhvZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1ldGhvZFwiIHhcblxuICBsZXQgYV9mb3JtbWV0aG9kIHggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZvcm1tZXRob2RcIiB4XG5cbiAgbGV0IGFfZW5jdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJlbmN0eXBlXCJcblxuICBsZXQgYV9jaGVja2VkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJjaGVja2VkXCJcblxuICBsZXQgYV9kaXNhYmxlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiZGlzYWJsZWRcIlxuXG4gIGxldCBhX3JlYWRvbmx5ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZWFkb25seVwiXG5cbiAgbGV0IGFfbWF4bGVuZ3RoID0gaW50X2F0dHJpYiBcIm1heGxlbmd0aFwiXG5cbiAgbGV0IGFfbWlubGVuZ3RoID0gaW50X2F0dHJpYiBcIm1pbmxlbmd0aFwiXG5cbiAgbGV0IGFfbmFtZSA9IHN0cmluZ19hdHRyaWIgXCJuYW1lXCJcblxuICBsZXQgYV9hbGxvd2Z1bGxzY3JlZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImFsbG93ZnVsbHNjcmVlblwiXG5cbiAgbGV0IGFfYWxsb3dwYXltZW50cmVxdWVzdCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYWxsb3dwYXltZW50cmVxdWVzdFwiXG5cbiAgbGV0IGFfcmVmZXJyZXJwb2xpY3kgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kgXCJyZWZlcnJlcnBvbGljeVwiIHhcblxuICBsZXQgYV9hdXRvY29tcGxldGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYXV0b2NvbXBsZXRlIFwiYXV0b2NvbXBsZXRlXCIgeFxuXG4gIGxldCBhX2FzeW5jID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhc3luY1wiXG5cbiAgbGV0IGFfYXV0b2ZvY3VzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhdXRvZm9jdXNcIlxuXG4gIGxldCBhX2F1dG9wbGF5ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhdXRvcGxheVwiXG5cbiAgbGV0IGFfbXV0ZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm11dGVkXCJcblxuICBsZXQgYV9jcm9zc29yaWdpbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNyb3Nzb3JpZ2luXCIgeFxuXG4gIGxldCBhX2ludGVncml0eSA9IHN0cmluZ19hdHRyaWIgXCJpbnRlZ3JpdHlcIlxuXG4gIGxldCBhX21lZGlhZ3JvdXAgPSBzdHJpbmdfYXR0cmliIFwibWVkaWFncm91cFwiXG5cbiAgbGV0IGFfY2hhbGxlbmdlID0gc3RyaW5nX2F0dHJpYiBcImNoYWxsZW5nZVwiXG5cbiAgbGV0IGFfY29udGVudGVkaXRhYmxlIGNlID1cbiAgICBib29sX2F0dHJpYiBcImNvbnRlbnRlZGl0YWJsZVwiIGNlXG5cbiAgbGV0IGFfY29udGV4dG1lbnUgPSBzdHJpbmdfYXR0cmliIFwiY29udGV4dG1lbnVcIlxuXG4gIGxldCBhX2NvbnRyb2xzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJjb250cm9sc1wiXG5cbiAgbGV0IGFfZGlyIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZGlyXCIgeFxuXG4gIGxldCBhX2RyYWdnYWJsZSBkID1cbiAgICBib29sX2F0dHJpYiBcImRyYWdnYWJsZVwiIGRcblxuICBsZXQgYV9mb3JtID0gc3RyaW5nX2F0dHJpYiBcImZvcm1cIlxuXG4gIGxldCBhX2Zvcm1hY3Rpb24gPSB1cmlfYXR0cmliIFwiZm9ybWFjdGlvblwiXG5cbiAgbGV0IGFfZm9ybWVuY3R5cGUgPSBzdHJpbmdfYXR0cmliIFwiZm9ybWVuY3R5cGVcIlxuXG4gIGxldCBhX2Zvcm1ub3ZhbGlkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJmb3Jtbm92YWxpZGF0ZVwiXG5cbiAgbGV0IGFfZm9ybXRhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJmb3JtdGFyZ2V0XCJcblxuICBsZXQgYV9oaWRkZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImhpZGRlblwiXG5cbiAgbGV0IGFfaGlnaCA9IGZsb2F0X2F0dHJpYiBcImhpZ2hcIlxuXG4gIGxldCBhX2ljb24gPSB1cmlfYXR0cmliIFwiaWNvblwiXG5cbiAgbGV0IGFfaXNtYXAgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImlzbWFwXCJcblxuICBsZXQgYV9rZXl0eXBlID0gc3RyaW5nX2F0dHJpYiBcImtleXR5cGVcIlxuXG4gIGxldCBhX2xpc3QgPSBzdHJpbmdfYXR0cmliIFwibGlzdFwiXG5cbiAgbGV0IGFfbG9vcCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibG9vcFwiXG5cbiAgbGV0IGFfbG93ID0gZmxvYXRfYXR0cmliIFwibG93XCJcblxuICBsZXQgYV9tYXggPSBmbG9hdF9hdHRyaWIgXCJtYXhcIlxuXG4gIGxldCBhX2lucHV0X21heCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcl9kYXRldGltZSBcIm1heFwiXG5cbiAgbGV0IGFfbWluID0gZmxvYXRfYXR0cmliIFwibWluXCJcblxuICBsZXQgYV9pbnB1dF9taW4gPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUgXCJtaW5cIlxuXG4gIGxldCBhX2lucHV0bW9kZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImlucHV0bW9kZVwiIHhcblxuICBsZXQgYV9ub3ZhbGlkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJub3ZhbGlkYXRlXCJcblxuICBsZXQgYV9vcGVuID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJvcGVuXCJcblxuICBsZXQgYV9vcHRpbXVtID0gZmxvYXRfYXR0cmliIFwib3B0aW11bVwiXG5cbiAgbGV0IGFfcGF0dGVybiA9IHN0cmluZ19hdHRyaWIgXCJwYXR0ZXJuXCJcblxuICBsZXQgYV9wbGFjZWhvbGRlciA9IHN0cmluZ19hdHRyaWIgXCJwbGFjZWhvbGRlclwiXG5cbiAgbGV0IGFfcG9zdGVyID0gdXJpX2F0dHJpYiBcInBvc3RlclwiXG5cbiAgbGV0IGFfcHJlbG9hZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInByZWxvYWRcIiB4XG5cbiAgbGV0IGFfcHViZGF0ZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicHViZGF0ZVwiXG5cbiAgbGV0IGFfcmFkaW9ncm91cCA9IHN0cmluZ19hdHRyaWIgXCJyYWRpb2dyb3VwXCJcblxuICBsZXQgYV9yZXF1aXJlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicmVxdWlyZWRcIlxuXG4gIGxldCBhX3JldmVyc2VkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZXNlcnZlZFwiXG5cbiAgbGV0IGFfc2FuZGJveCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zYW5kYm94IFwic2FuZGJveFwiIHhcblxuICBsZXQgYV9zcGVsbGNoZWNrIHNjID1cbiAgICBib29sX2F0dHJpYiBcInNwZWxsY2hlY2tcIiBzY1xuXG4gIGxldCBhX3Njb3BlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2NvcGVkXCJcblxuICBsZXQgYV9zZWFtbGVzcyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwic2VhbWxlc3NcIlxuXG4gIGxldCBhX3NpemVzIHNpemVzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zaXplcyBcInNpemVzXCIgc2l6ZXNcblxuICBsZXQgYV9zcGFuID0gaW50X2F0dHJpYiBcInNwYW5cIlxuXG4gICgqbGV0IGFfc3JjZG9jKilcbiAgbGV0IGFfc3JjbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6bGFuZ1wiXG5cbiAgbGV0IGFfc3Jjc2V0ID0gc3Jjc2V0X2F0dHJpYiBcInNyY3NldFwiXG5cbiAgbGV0IGFfaW1nX3NpemVzID0gY29tbWFfc2VwX2F0dHJpYiBcInNpemVzXCJcblxuICBsZXQgYV9zdGFydCA9IGludF9hdHRyaWIgXCJzdGFydFwiXG5cbiAgbGV0IGFfc3RlcCBzdGVwID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zdGVwIFwic3RlcFwiIHN0ZXBcblxuICBsZXQgYV90cmFuc2xhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0cmFuc2xhdGVcIiB4XG4gIFxuICBsZXQgYV93cmFwIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwid3JhcFwiIHhcblxuICBsZXQgYV9zaXplID0gaW50X2F0dHJpYiBcInNpemVcIlxuXG4gIGxldCBhX2lucHV0X3R5cGUgaXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2lucHV0X3R5cGUgXCJ0eXBlXCIgaXRcblxuICBsZXQgYV9tZW51X3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX2NvbW1hbmRfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfYnV0dG9uX3R5cGUgYnQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2lucHV0X3R5cGUgXCJ0eXBlXCIgYnRcblxuICBsZXQgYV9zY3JpcHRfdHlwZSBzYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NjcmlwdF90eXBlIFwidHlwZVwiIHNjXG5cbiAgbGV0IGFfbXVsdGlwbGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm11bHRpcGxlXCJcblxuICBsZXQgYV9jb2xzID0gaW50X2F0dHJpYiBcImNvbHNcIlxuXG4gIGxldCBhX3Jvd3MgPSBpbnRfYXR0cmliIFwicm93c1wiXG5cbiAgbGV0IGFfc3VtbWFyeSA9IHN0cmluZ19hdHRyaWIgXCJzdW1tYXJ5XCJcblxuICBsZXQgYV9hbGlnbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFsaWduXCIgeFxuXG4gIGxldCBhX2F4aXMgPSBzdHJpbmdfYXR0cmliIFwiYXhpc1wiXG5cbiAgbGV0IGFfY29sc3BhbiA9IGludF9hdHRyaWIgXCJjb2xzcGFuXCJcblxuICBsZXQgYV9oZWFkZXJzID0gc3BhY2Vfc2VwX2F0dHJpYiBcImhlYWRlcnNcIlxuXG4gIGxldCBhX3Jvd3NwYW4gPSBpbnRfYXR0cmliIFwicm93c3BhblwiXG5cbiAgbGV0IGFfc2NvcGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzY29wZVwiIHhcblxuICBsZXQgYV9ib3JkZXIgPSBpbnRfYXR0cmliIFwiYm9yZGVyXCJcblxuICBsZXQgYV9ydWxlcyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJ1bGVzXCIgeFxuXG4gIGxldCBhX2NoYXIgYyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY2hhcmFjdGVyIFwiY2hhclwiIGNcblxuICBsZXQgYV9kYXRhID0gdXJpX2F0dHJpYiBcImRhdGFcIlxuXG4gIGxldCBhX2NvZGV0eXBlID0gc3RyaW5nX2F0dHJpYiBcImNvZGV0eXBlXCJcblxuICBsZXQgYV9mcmFtZWJvcmRlciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImZyYW1lYm9yZGVyXCIgeFxuXG4gIGxldCBhX21hcmdpbmhlaWdodCA9IGludF9hdHRyaWIgXCJtYXJnaW5oZWlnaHRcIlxuXG4gIGxldCBhX21hcmdpbndpZHRoID0gaW50X2F0dHJpYiBcIm1hcmdpbndpZHRoXCJcblxuICBsZXQgYV9zY3JvbGxpbmcgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzY3JvbGxpbmdcIiB4XG5cbiAgbGV0IGFfdGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcInRhcmdldFwiXG5cbiAgbGV0IGFfY29udGVudCA9IHN0cmluZ19hdHRyaWIgXCJjb250ZW50XCJcblxuICBsZXQgYV9odHRwX2VxdWl2ID0gc3RyaW5nX2F0dHJpYiBcImh0dHAtZXF1aXZcIlxuXG4gIGxldCBhX21lZGlhID0gbWVkaWFkZXNjX2F0dHJpYiBcIm1lZGlhXCJcblxuICAoKiBBUklBICopXG5cbiAgbGV0IGFfcm9sZSA9IHNwYWNlX3NlcF9hdHRyaWIgXCJyb2xlXCJcblxuICBsZXQgYV9hcmlhIG5hbWUgPSBzcGFjZV9zZXBfYXR0cmliIChcImFyaWEtXCIgXiBuYW1lKVxuXG4gIHR5cGUgJ2EgZWx0ID0gWG1sLmVsdFxuXG4gIHR5cGUgKCdhLCAnYikgbnVsbGFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gdW5pdCAtPiAnYiBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSB1bmFyeSA9ID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gJ2IgZWx0IHdyYXAgLT4gJ2MgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgc3RhciA9XG4gICAgP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAoJ2IgZWx0KSBsaXN0X3dyYXAgLT4gJ2MgZWx0XG5cbiAgbGV0IHRlcm1pbmFsIHRhZyA/YSAoKSA9IFhtbC5sZWFmID9hIHRhZ1xuXG4gIGxldCB1bmFyeSB0YWcgP2EgZWx0ID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcuc2luZ2xldG9uIGVsdClcblxuICBsZXQgc3RhciB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgbGV0IHBsdXMgdGFnID9hIGVsdCBlbHRzID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcuY29ucyBlbHQgZWx0cylcblxuICBsZXQgb3B0aW9uX2NvbnMgb3B0IGVsdHMgPVxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBOb25lIC0+IGVsdHNcbiAgICB8IFNvbWUgeCAtPiBXLmNvbnMgeCBlbHRzXG5cbiAgbGV0IGJvZHkgPSBzdGFyIFwiYm9keVwiXG5cbiAgbGV0IGhlYWQgPSBwbHVzIFwiaGVhZFwiXG5cbiAgbGV0IHRpdGxlID0gdW5hcnkgXCJ0aXRsZVwiXG5cbiAgbGV0IGh0bWwgP2EgaGVhZCBib2R5ID1cbiAgICBsZXQgY29udGVudCA9IFcuY29ucyBoZWFkIChXLnNpbmdsZXRvbiBib2R5KSBpblxuICAgIFhtbC5ub2RlID9hIFwiaHRtbFwiIGNvbnRlbnRcblxuICBsZXQgZm9vdGVyID0gc3RhciBcImZvb3RlclwiXG5cbiAgbGV0IGhlYWRlciA9IHN0YXIgXCJoZWFkZXJcIlxuXG4gIGxldCBzZWN0aW9uID0gc3RhciBcInNlY3Rpb25cIlxuXG4gIGxldCBuYXYgPSBzdGFyIFwibmF2XCJcblxuICBsZXQgdHh0IHMgPSBYbWwucGNkYXRhIHNcbiAgbGV0IHBjZGF0YSA9IHR4dFxuXG4gIGxldCBlbnRpdHkgPSBYbWwuZW50aXR5XG5cbiAgbGV0IHNwYWNlICgpID0gZW50aXR5IFwibmJzcFwiXG5cbiAgbGV0IGNkYXRhID0gWG1sLmNkYXRhXG5cbiAgbGV0IGNkYXRhX3NjcmlwdCA9IFhtbC5jZGF0YV9zY3JpcHRcblxuICBsZXQgY2RhdGFfc3R5bGUgPSBYbWwuY2RhdGFfc3R5bGVcblxuICBsZXQgaDEgPSBzdGFyIFwiaDFcIlxuXG4gIGxldCBoMiA9IHN0YXIgXCJoMlwiXG5cbiAgbGV0IGgzID0gc3RhciBcImgzXCJcblxuICBsZXQgaDQgPSBzdGFyIFwiaDRcIlxuXG4gIGxldCBoNSA9IHN0YXIgXCJoNVwiXG5cbiAgbGV0IGg2ID0gc3RhciBcImg2XCJcblxuICBsZXQgaGdyb3VwID0gc3RhciBcImhncm91cFwiXG5cbiAgbGV0IGFkZHJlc3MgPSBzdGFyIFwiYWRkcmVzc1wiXG5cbiAgbGV0IGJsb2NrcXVvdGUgPSBzdGFyIFwiYmxvY2txdW90ZVwiXG5cbiAgbGV0IGRpYWxvZyA9IHN0YXIgXCJkaWFsb2dcIlxuXG4gIGxldCBkaXYgPSBzdGFyIFwiZGl2XCJcblxuICBsZXQgcCA9IHN0YXIgXCJwXCJcblxuICBsZXQgcHJlID0gc3RhciBcInByZVwiXG5cbiAgbGV0IGFiYnIgPSBzdGFyIFwiYWJiclwiXG5cbiAgbGV0IGJyID0gdGVybWluYWwgXCJiclwiXG5cbiAgbGV0IGNpdGUgPSBzdGFyIFwiY2l0ZVwiXG5cbiAgbGV0IGNvZGUgPSBzdGFyIFwiY29kZVwiXG5cbiAgbGV0IGRmbiA9IHN0YXIgXCJkZm5cIlxuXG4gIGxldCBlbSA9IHN0YXIgXCJlbVwiXG5cbiAgbGV0IGtiZCA9IHN0YXIgXCJrYmRcIlxuXG4gIGxldCBxID0gc3RhciBcInFcIlxuXG4gIGxldCBzYW1wID0gc3RhciBcInNhbXBcIlxuXG4gIGxldCBzcGFuID0gc3RhciBcInNwYW5cIlxuXG4gIGxldCBzdHJvbmcgPSBzdGFyIFwic3Ryb25nXCJcblxuICBsZXQgdGltZSA9IHN0YXIgXCJ0aW1lXCJcblxuICBsZXQgdmFyID0gc3RhciBcInZhclwiXG5cbiAgbGV0IGEgPSBzdGFyIFwiYVwiXG5cbiAgbGV0IGRsID0gc3RhciBcImRsXCJcblxuICBsZXQgb2wgPSBzdGFyIFwib2xcIlxuXG4gIGxldCB1bCA9IHN0YXIgXCJ1bFwiXG5cbiAgbGV0IGRkID0gc3RhciBcImRkXCJcblxuICBsZXQgZHQgPSBzdGFyIFwiZHRcIlxuXG4gIGxldCBsaSA9IHN0YXIgXCJsaVwiXG5cbiAgbGV0IGhyID0gdGVybWluYWwgXCJoclwiXG5cbiAgbGV0IGIgPSBzdGFyIFwiYlwiXG5cbiAgbGV0IGkgPSBzdGFyIFwiaVwiXG5cbiAgbGV0IHUgPSBzdGFyIFwidVwiXG5cbiAgbGV0IHNtYWxsID0gc3RhciBcInNtYWxsXCJcblxuICBsZXQgc3ViID0gc3RhciBcInN1YlwiXG5cbiAgbGV0IHN1cCA9IHN0YXIgXCJzdXBcIlxuXG4gIGxldCBtYXJrID0gc3RhciBcIm1hcmtcIlxuXG4gIGxldCBycCA9IHN0YXIgXCJycFwiXG5cbiAgbGV0IHJ0ID0gc3RhciBcInJ0XCJcblxuICBsZXQgcnVieSA9IHN0YXIgXCJydWJ5XCJcblxuICBsZXQgd2JyID0gdGVybWluYWwgXCJ3YnJcIlxuXG4gICgqIFZCICopXG4gIHR5cGUgc2hhcGUgPSBbIHwgYFJlY3QgfCBgQ2lyY2xlIHwgYFBvbHkgfCBgRGVmYXVsdCBdXG5cbiAgbGV0IGJkbyB+ZGlyID8oYSA9IFtdKSBlbHRzID0gWG1sLm5vZGUgfmE6ICgoYV9kaXIgZGlyKSA6OiBhKSBcImJkb1wiIGVsdHNcblxuICBsZXQgYV9kYXRldGltZSA9IHN0cmluZ19hdHRyaWIgXCJkYXRldGltZVwiXG5cbiAgbGV0IGFfc2hhcGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzaGFwZVwiIHhcblxuICBsZXQgYV9jb29yZHMgY29vcmRzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwiY29vcmRzXCIgY29vcmRzXG5cbiAgbGV0IGFfdXNlbWFwID0gc3RyaW5nX2F0dHJpYiBcInVzZW1hcFwiXG5cbiAgbGV0IGFfZGVmZXIgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImRlZmVyXCJcblxuICBsZXQgYV9sYWJlbCA9IHN0cmluZ19hdHRyaWIgXCJsYWJlbFwiXG5cbiAgbGV0IGFyZWEgfmFsdCA/KGEgPSBbXSkgKCkgPSBYbWwubGVhZiB+YTogKChhX2FsdCBhbHQpIDo6IGEpIFwiYXJlYVwiXG5cbiAgbGV0IG1hcCA9IHN0YXIgXCJtYXBcIlxuXG4gIGxldCBkZWwgPSBzdGFyIFwiZGVsXCJcblxuICBsZXQgaW5zID0gc3RhciBcImluc1wiXG5cbiAgbGV0IHNjcmlwdCA9IHVuYXJ5IFwic2NyaXB0XCJcblxuICBsZXQgbm9zY3JpcHQgPSBzdGFyIFwibm9zY3JpcHRcIlxuXG4gIGxldCB0ZW1wbGF0ZSA9IHN0YXIgXCJ0ZW1wbGF0ZVwiXG5cbiAgbGV0IGFydGljbGUgPSBzdGFyIFwiYXJ0aWNsZVwiXG5cbiAgbGV0IGFzaWRlID0gc3RhciBcImFzaWRlXCJcblxuICBsZXQgbWFpbiA9IHN0YXIgXCJtYWluXCJcblxuICBsZXQgdmlkZW9fYXVkaW8gbmFtZSA/c3JjID9zcmNzID8oYSA9IFtdKSBlbHRzID1cbiAgICBsZXQgYSA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgfCBOb25lIC0+IGFcbiAgICAgIHwgU29tZSB1cmkgLT4gKGFfc3JjIHVyaSkgOjogYVxuICAgIGluXG4gICAgbWF0Y2ggc3JjcyB3aXRoXG4gICAgfCBOb25lIC0+IFhtbC5ub2RlIG5hbWUgfmEgZWx0c1xuICAgIHwgU29tZSBzcmNzIC0+IFhtbC5ub2RlIG5hbWUgfmEgKFcuYXBwZW5kIHNyY3MgZWx0cylcblxuICBsZXQgYXVkaW8gPSB2aWRlb19hdWRpbyBcImF1ZGlvXCJcblxuICBsZXQgdmlkZW8gPSB2aWRlb19hdWRpbyBcInZpZGVvXCJcblxuICBsZXQgY2FudmFzID0gc3RhciBcImNhbnZhc1wiXG5cbiAgbGV0IGNvbW1hbmQgfmxhYmVsID8oYSA9IFtdKSAoKSA9XG4gICAgWG1sLmxlYWYgfmE6ICgoYV9sYWJlbCBsYWJlbCkgOjogYSkgXCJjb21tYW5kXCJcblxuICBsZXQgbWVudSA/Y2hpbGRyZW4gP2EgKCkgPVxuICAgIGxldCBjaGlsZHJlbiA9IG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBXLm5pbCAoKVxuICAgICAgfCBTb21lIChgTGlzIGwpXG4gICAgICB8IFNvbWUgKGBGbG93cyBsKSAtPiBsIGluXG4gICAgWG1sLm5vZGUgP2EgXCJtZW51XCIgY2hpbGRyZW5cblxuICBsZXQgZW1iZWQgPSB0ZXJtaW5hbCBcImVtYmVkXCJcblxuICBsZXQgc291cmNlID0gdGVybWluYWwgXCJzb3VyY2VcIlxuXG4gIGxldCBtZXRlciA9IHN0YXIgXCJtZXRlclwiXG5cbiAgbGV0IG91dHB1dF9lbHQgPSBzdGFyIFwib3V0cHV0XCJcblxuICBsZXQgZm9ybSA9IHN0YXIgXCJmb3JtXCJcblxuICBsZXQgc3ZnID8oYSA9IFtdKSBjaGlsZHJlbiA9XG4gICAgU3ZnLnRvZWx0IChTdmcuc3ZnIH5hIGNoaWxkcmVuKVxuXG4gIGxldCBpbnB1dCA9IHRlcm1pbmFsIFwiaW5wdXRcIlxuXG4gIGxldCBrZXlnZW4gPSB0ZXJtaW5hbCBcImtleWdlblwiXG5cbiAgbGV0IGxhYmVsID0gc3RhciBcImxhYmVsXCJcblxuICBsZXQgb3B0aW9uID0gdW5hcnkgXCJvcHRpb25cIlxuXG4gIGxldCBzZWxlY3QgPSBzdGFyIFwic2VsZWN0XCJcblxuICBsZXQgdGV4dGFyZWEgPSB1bmFyeSBcInRleHRhcmVhXCJcblxuICBsZXQgYnV0dG9uID0gc3RhciBcImJ1dHRvblwiXG5cbiAgbGV0IGRhdGFsaXN0ID9jaGlsZHJlbiA/YSAoKSA9XG4gICAgbGV0IGNoaWxkcmVuID0gbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFcubmlsICgpXG4gICAgICB8IFNvbWUgKGBPcHRpb25zIHggfCBgUGhyYXMgeCkgLT4geCBpblxuICAgIFhtbC5ub2RlID9hIFwiZGF0YWxpc3RcIiBjaGlsZHJlblxuXG4gIGxldCBwcm9ncmVzcyA9IHN0YXIgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGxlZ2VuZCA9IHN0YXIgXCJsZWdlbmRcIlxuXG4gIGxldCBkZXRhaWxzIHN1bW1hcnkgP2EgY2hpbGRyZW4gPVxuICAgIHBsdXMgXCJkZXRhaWxzXCIgP2Egc3VtbWFyeSBjaGlsZHJlblxuXG4gIGxldCBzdW1tYXJ5ID0gc3RhciBcInN1bW1hcnlcIlxuXG4gIGxldCBmaWVsZHNldCA/bGVnZW5kID9hIGVsdHMgPVxuICAgIFhtbC5ub2RlID9hIFwiZmllbGRzZXRcIiAob3B0aW9uX2NvbnMgbGVnZW5kIGVsdHMpXG5cbiAgbGV0IG9wdGdyb3VwIH5sYWJlbCA/KGEgPSBbXSkgZWx0cyA9XG4gICAgWG1sLm5vZGUgfmE6ICgoYV9sYWJlbCBsYWJlbCkgOjogYSkgXCJvcHRncm91cFwiIGVsdHNcblxuICBsZXQgZmlnY2FwdGlvbiA9IHN0YXIgXCJmaWdjYXB0aW9uXCJcbiAgbGV0IGZpZ3VyZSA/ZmlnY2FwdGlvbiA/YSBlbHRzID1cbiAgICBsZXQgY29udGVudCA9IG1hdGNoIGZpZ2NhcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGVsdHNcbiAgICAgIHwgU29tZSAoYFRvcCBjKSAtPiBXLmNvbnMgYyBlbHRzXG4gICAgICB8IFNvbWUgKGBCb3R0b20gYykgLT4gVy5hcHBlbmQgZWx0cyAoVy5zaW5nbGV0b24gYylcbiAgICBpblxuICAgIFhtbC5ub2RlID9hIFwiZmlndXJlXCIgY29udGVudFxuXG4gIGxldCBjYXB0aW9uID0gc3RhciBcImNhcHRpb25cIlxuXG4gIGxldCB0YWJsZXggP2NhcHRpb24gP2NvbHVtbnMgP3RoZWFkID90Zm9vdCA/YSBlbHRzID1cbiAgICBsZXQgY29udGVudCA9IG9wdGlvbl9jb25zIHRoZWFkIChvcHRpb25fY29ucyB0Zm9vdCBlbHRzKSBpblxuICAgIGxldCBjb250ZW50ID0gbWF0Y2ggY29sdW1ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY29udGVudFxuICAgICAgfCBTb21lIGNvbHVtbnMgLT4gVy5hcHBlbmQgY29sdW1ucyBjb250ZW50IGluXG4gICAgbGV0IGNvbnRlbnQgPSBvcHRpb25fY29ucyBjYXB0aW9uIGNvbnRlbnQgaW5cbiAgICBYbWwubm9kZSA/YSBcInRhYmxlXCIgY29udGVudFxuXG4gIGxldCB0YWJsZSA9IHRhYmxleFxuXG4gIGxldCB0ZCA9IHN0YXIgXCJ0ZFwiXG5cbiAgbGV0IHRoID0gc3RhciBcInRoXCJcblxuICBsZXQgdHIgPSBzdGFyIFwidHJcIlxuXG4gIGxldCBjb2xncm91cCA9IHN0YXIgXCJjb2xncm91cFwiXG5cbiAgbGV0IGNvbCA9IHRlcm1pbmFsIFwiY29sXCJcblxuICBsZXQgdGhlYWQgPSBzdGFyIFwidGhlYWRcIlxuXG4gIGxldCB0Ym9keSA9IHN0YXIgXCJ0Ym9keVwiXG5cbiAgbGV0IHRmb290ID0gc3RhciBcInRmb290XCJcblxuICBsZXQgaWZyYW1lID0gc3RhciBcImlmcmFtZVwiXG5cbiAgbGV0IG9iamVjdF8gP3BhcmFtcyA/KGEgPSBbXSkgZWx0cyA9XG4gICAgbGV0IGVsdHMgPSBtYXRjaCBwYXJhbXMgd2l0aFxuICAgICAgfCBOb25lIC0+IGVsdHNcbiAgICAgIHwgU29tZSBlIC0+IFcuYXBwZW5kIGUgZWx0cyBpblxuICAgIFhtbC5ub2RlIH5hIFwib2JqZWN0XCIgZWx0c1xuXG4gIGxldCBwYXJhbSA9IHRlcm1pbmFsIFwicGFyYW1cIlxuXG4gIGxldCBpbWcgfnNyYyB+YWx0ID8oYSA9IFtdKSAoKSA9XG4gICAgbGV0IGEgPSAoYV9zcmMgc3JjKSA6OiAoYV9hbHQgYWx0KSA6OiBhIGluXG4gICAgWG1sLmxlYWYgfmEgXCJpbWdcIlxuXG4gIGxldCBwaWN0dXJlIH5pbWcgP2EgZWx0cyA9XG4gICAgbGV0IHRhaWxfbm9kZSA9IFcuY29ucyBpbWcgKFcubmlsICgpKSBpblxuICAgIGxldCBjb250ZW50ID0gVy5hcHBlbmQgZWx0cyB0YWlsX25vZGUgaW5cbiAgICBYbWwubm9kZSA/YSBcInBpY3R1cmVcIiBjb250ZW50XG5cbiAgbGV0IG1ldGEgPSB0ZXJtaW5hbCBcIm1ldGFcIlxuXG4gIGxldCBzdHlsZSA/KGEgPSBbXSkgZWx0cyA9IFhtbC5ub2RlIH5hIFwic3R5bGVcIiBlbHRzXG5cbiAgbGV0IGxpbmsgfnJlbCB+aHJlZiA/KGEgPSBbXSkgKCkgPVxuICAgIFhtbC5sZWFmIH5hOiAoKGFfcmVsIHJlbCkgOjogKGFfaHJlZiBocmVmKSA6OiBhKSBcImxpbmtcIlxuXG4gIGxldCBiYXNlID0gdGVybWluYWwgXCJiYXNlXCJcblxuICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAoKiBDb252ZXJzaW9uIGZyb20gYW5kIHRvIFhtbCBtb2R1bGUgKilcbiAgbGV0IHRvdCB4ID0geFxuXG4gIGxldCB0b3RsIHggPSB4XG5cbiAgbGV0IHRvZWx0IHggPSB4XG5cbiAgbGV0IHRvZWx0bCB4ID0geFxuXG4gIHR5cGUgZG9jICA9IFsgYEh0bWwgXSBlbHRcbiAgbGV0IGRvY190b2VsdCB4ID0geFxuXG4gIG1vZHVsZSBJID0gWG1sX3N0cmVhbS5JbXBvcnQoWG1sKVxuICBsZXQgb2Zfc2VxIHMgPSB0b3RsIEBAIEkub2Zfc2VxIHNcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG5cbiAgICBsZXQgZGF0YSBzID0gWG1sLmVuY29kZWRwY2RhdGEgc1xuXG4gICAgbGV0IGxlYWYgdGFnID9hICgpID0gWG1sLmxlYWYgP2EgdGFnXG5cbiAgICBsZXQgbm9kZSB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgICBsZXQgY29lcmNlX2VsdCB4ID0geFxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICAgIGxldCBpbnRfYXR0cmliID0gWG1sLmludF9hdHRyaWJcblxuICAgIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAgIGxldCB1cmlfYXR0cmliIGEgcyA9IFhtbC51cmlfYXR0cmliIGEgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYlxuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgPSBYbWwuY29tbWFfc2VwX2F0dHJpYlxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIFdyYXBwZWRfZnVuY3Rpb25zXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwnYikgVy5mdCA9ICdhIC0+ICdiKSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG5cbiAgbGV0IHN0cmluZ19vZl9zYW5kYm94X3Rva2VuID0gZnVuY3Rpb25cbiAgICB8IGBBbGxvd19mb3JtcyAtPiBcImFsbG93LWZvcm1zXCJcbiAgICB8IGBBbGxvd19wb2ludGVyX2xvY2sgLT4gXCJhbGxvdy1wb2ludGVyLWxvY2tcIlxuICAgIHwgYEFsbG93X3BvcHVwcyAtPiBcImFsbG93LXBvcHVwc1wiXG4gICAgfCBgQWxsb3dfdG9wX25hdmlnYXRpb24gLT4gXCJhbGxvdy10b3AtbmF2aWdhdGlvblwiXG4gICAgfCBgQWxsb3dfc2FtZV9vcmlnaW4gLT4gXCJhbGxvdy1zYW1lLW9yaWdpblwiXG4gICAgfCBgQWxsb3dfc2NyaXB0IC0+IFwiYWxsb3ctc2NyaXB0XCJcblxuICBsZXQgc3RyaW5nX29mX2xpbmt0eXBlID0gZnVuY3Rpb25cbiAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgIHwgYEFyY2hpdmVzIC0+IFwiYXJjaGl2ZXNcIlxuICAgIHwgYEF1dGhvciAtPiBcImF1dGhvclwiXG4gICAgfCBgQm9va21hcmsgLT4gXCJib29rbWFya1wiXG4gICAgfCBgQ2Fub25pY2FsIC0+IFwiY2Fub25pY2FsXCJcbiAgICB8IGBEbnNfcHJlZmV0Y2ggLT4gXCJkbnMtcHJlZmV0Y2hcIlxuICAgIHwgYEV4dGVybmFsIC0+IFwiZXh0ZXJuYWxcIlxuICAgIHwgYEZpcnN0IC0+IFwiZmlyc3RcIlxuICAgIHwgYEhlbHAgLT4gXCJoZWxwXCJcbiAgICB8IGBJY29uIC0+IFwiaWNvblwiXG4gICAgfCBgSW5kZXggLT4gXCJpbmRleFwiXG4gICAgfCBgTGFzdCAtPiBcImxhc3RcIlxuICAgIHwgYExpY2Vuc2UgLT4gXCJsaWNlbnNlXCJcbiAgICB8IGBNYW5pZmVzdCAtPiBcIm1hbmlmZXN0XCJcbiAgICB8IGBNZSAtPiBcIm1lXCJcbiAgICB8IGBNb2R1bGVwcmVsb2FkIC0+IFwibW9kdWxlcHJlbG9hZFwiXG4gICAgfCBgTmV4dCAtPiBcIm5leHRcIlxuICAgIHwgYE5vZm9sbG93IC0+IFwibm9mb2xsb3dcIlxuICAgIHwgYE5vb3BlbmVyIC0+IFwibm9vcGVuZXJcIlxuICAgIHwgYE5vcmVmZXJyZXIgLT4gXCJub3JlZmVycmVyXCJcbiAgICB8IGBPcGVuZXIgLT4gXCJvcGVuZXJcIlxuICAgIHwgYFBpbmdiYWNrIC0+IFwicGluZ2JhY2tcIlxuICAgIHwgYFByZWNvbm5lY3QgLT4gXCJwcmVjb25uZWN0XCJcbiAgICB8IGBQcmVmZXRjaCAtPiBcInByZWZldGNoXCJcbiAgICB8IGBQcmVsb2FkIC0+IFwicHJlbG9hZFwiXG4gICAgfCBgUHJlcmVuZGVyIC0+IFwicHJlcmVuZGVyXCJcbiAgICB8IGBQcmV2IC0+IFwicHJldlwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdHlsZXNoZWV0IC0+IFwic3R5bGVzaGVldFwiXG4gICAgfCBgU2lkZWJhciAtPiBcInNpZGViYXJcIlxuICAgIHwgYFRhZyAtPiBcInRhZ1wiXG4gICAgfCBgVXAgLT4gXCJ1cFwiXG4gICAgfCBgT3RoZXIgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgICB8IGBBdXJhbCAtPiBcImF1cmFsXCJcbiAgICB8IGBCcmFpbGxlIC0+IFwiYnJhaWxsZVwiXG4gICAgfCBgRW1ib3NzZWQgLT4gXCJlbWJvc3NlZFwiXG4gICAgfCBgSGFuZGhlbGQgLT4gXCJoYW5kaGVsZFwiXG4gICAgfCBgUHJpbnQgLT4gXCJwcmludFwiXG4gICAgfCBgUHJvamVjdGlvbiAtPiBcInByb2plY3Rpb25cIlxuICAgIHwgYFNjcmVlbiAtPiBcInNjcmVlblwiXG4gICAgfCBgU3BlZWNoIC0+IFwic3BlZWNoXCJcbiAgICB8IGBUdHkgLT4gXCJ0dHlcIlxuICAgIHwgYFR2IC0+IFwidHZcIlxuICAgIHwgYFJhd19tZWRpYWRlc2MgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9yZWZlcnJlcnBvbGljeSA9IGZ1bmN0aW9uXG4gICAgfCBgRW1wdHkgLT4gXCJcIlxuICAgIHwgYE5vX3JlZmVycmVyIC0+IFwibm8tcmVmZXJyZXJcIlxuICAgIHwgYE5vX3JlZmVycmVyX3doZW5fZG93bmdyYWRlIC0+IFwibm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVcIlxuICAgIHwgYE9yaWdpbiAtPiBcIm9yaWdpblwiXG4gICAgfCBgT3JpZ2luX3doZW5fY3Jvc3Nfb3JpZ2luIC0+IFwib3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luXCJcbiAgICB8IGBTYW1lX29yaWdpbiAtPiBcInNhbWUtb3JpZ2luXCJcbiAgICB8IGBTdHJpY3Rfb3JpZ2luIC0+IFwic3RyaWN0LW9yaWdpblwiXG4gICAgfCBgU3RyaWN0X29yaWdpbl93aGVuX2Nyb3NzX29yaWdpbiAtPiBcInN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5cIlxuICAgIHwgYFVuc2FmZV91cmwgLT4gXCJ1bnNhZmUtdXJsXCJcblxuICBsZXQgc3RyaW5nX29mX2JpZ192YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IGBBbm9ueW1vdXMgLT4gXCJhbm9ueW1vdXNcIlxuICAgIHwgYEFzeW5jIC0+IFwiYXN5bmNcIlxuICAgIHwgYEF1dG9mb2N1cyAtPiBcImF1dG9mb2N1c1wiXG4gICAgfCBgQXV0b3BsYXkgLT4gXCJhdXRvcGxheVwiXG4gICAgfCBgQ2hlY2tlZCAtPiBcImNoZWNrZWRcIlxuICAgIHwgYERlZmVyIC0+IFwiZGVmZXJcIlxuICAgIHwgYERpc2FibGVkIC0+IFwiZGlzYWJsZWRcIlxuICAgIHwgYE11dGVkIC0+IFwibXV0ZWRcIlxuICAgIHwgYFJlYWRPbmx5IC0+IFwicmVhZG9ubHlcIlxuICAgIHwgYFJlY3QgLT4gXCJyZWN0XCJcbiAgICB8IGBTZWxlY3RlZCAtPiBcInNlbGVjdGVkXCJcbiAgICB8IGBVc2VfY3JlZGVudGlhbHMgLT4gXCJ1c2UtY3JlZGVudGlhbHNcIlxuICAgIHwgYFczX29yZ18xOTk5X3hodG1sIC0+IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG4gICAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgICB8IGBQcmVzZXJ2ZSAtPiBcInByZXNlcnZlXCJcbiAgICB8IGBEZWZhdWx0IC0+IFwiZGVmYXVsdFwiXG4gICAgfCBgQ29udHJvbHMgLT4gXCJjb250cm9sc1wiXG4gICAgfCBgTHRyIC0+IFwibHRyXCJcbiAgICB8IGBSdGwgLT4gXCJydGxcIlxuICAgIHwgYEdldCAtPiBcIkdFVFwiXG4gICAgfCBgUG9zdCAtPiBcIlBPU1RcIlxuICAgIHwgYEZvcm1ub3ZhbGlkYXRlIC0+IFwiZm9ybW5vdmFsaWRhdGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgSXNtYXAgLT4gXCJpc21hcFwiXG4gICAgfCBgTG9vcCAtPiBcImxvb3BcIlxuICAgIHwgYE5vdmFsaWRhdGUgLT4gXCJub3ZhbGlkYXRlXCJcbiAgICB8IGBPcGVuIC0+IFwib3BlblwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYE1ldGFkYXRhIC0+IFwibWV0YWRhdGFcIlxuICAgIHwgYEF1ZGlvIC0+IFwiYXVkaW9cIlxuICAgIHwgYFB1YmRhdGUgLT4gXCJwdWJkYXRlXCJcbiAgICB8IGBSZXF1aXJlZCAtPiBcInJlcXVpcmVkXCJcbiAgICB8IGBSZXZlcnNlZCAtPiBcInJlc2VydmVkXCJcbiAgICB8IGBTY29wZWQgLT4gXCJzY29wZWRcIlxuICAgIHwgYFNlYW1sZXNzIC0+IFwic2VhbWxlc3NcIlxuICAgIHwgYEFueSAtPiBcImFueVwiXG4gICAgfCBgU29mdCAtPiBcInNvZnRcIlxuICAgIHwgYEhhcmQgLT4gXCJoYXJkXCJcbiAgICB8IGBDb250ZXh0IC0+IFwiY29udGV4dFwiXG4gICAgfCBgVG9vbGJhciAtPiBcInRvb2xiYXJcIlxuICAgIHwgYENvbW1hbmQgLT4gXCJjb21tYW5kXCJcbiAgICB8IGBDaGVja2JveCAtPiBcImNoZWNrYm94XCJcbiAgICB8IGBSYWRpbyAtPiBcInJhZGlvXCJcbiAgICB8IGBNdWx0aXBsZSAtPiBcIm11bHRpcGxlXCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgSnVzdGlmeSAtPiBcImp1c3RpZnlcIlxuICAgIHwgYENoYXIgLT4gXCJjaGFyXCJcbiAgICB8IGBSb3cgLT4gXCJyb3dcIlxuICAgIHwgYENvbCAtPiBcImNvbFwiXG4gICAgfCBgUm93Z3JvdXAgLT4gXCJyb3dncm91cFwiXG4gICAgfCBgQ29sZ3JvdXAgLT4gXCJjb2xncm91cFwiXG4gICAgfCBgR3JvdXBzIC0+IFwiZ3JvdXBzXCJcbiAgICB8IGBSb3dzIC0+IFwicm93c1wiXG4gICAgfCBgQ29scyAtPiBcImNvbHNcIlxuICAgIHwgYFplcm8gLT4gXCIwXCJcbiAgICB8IGBPbmUgLT4gXCIxXCJcbiAgICB8IGBZZXMgLT4gXCJ5ZXNcIlxuICAgIHwgYE5vIC0+IFwibm9cIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBDaXJjbGUgLT4gXCJjaXJjbGVcIlxuICAgIHwgYFBvbHkgLT4gXCJwb2x5XCJcbiAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgIHwgYEFyY2hpdmVzIC0+IFwiYXJjaGl2ZXNcIlxuICAgIHwgYEF1dGhvciAtPiBcImF1dGhvclwiXG4gICAgfCBgQm9va21hcmsgLT4gXCJib29rbWFya1wiXG4gICAgfCBgRXh0ZXJuYWwgLT4gXCJleHRlcm5hbFwiXG4gICAgfCBgRmlyc3QgLT4gXCJmaXJzdFwiXG4gICAgfCBgSGVscCAtPiBcImhlbHBcIlxuICAgIHwgYEljb24gLT4gXCJpY29uXCJcbiAgICB8IGBJbmRleCAtPiBcImluZGV4XCJcbiAgICB8IGBMYXN0IC0+IFwibGFzdFwiXG4gICAgfCBgTGljZW5zZSAtPiBcImxpY2Vuc2VcIlxuICAgIHwgYE5leHQgLT4gXCJuZXh0XCJcbiAgICB8IGBOb2ZvbGxvdyAtPiBcIm5vZm9sbG93XCJcbiAgICB8IGBOb3JlZmVycmVyIC0+IFwibm9yZWZlcnJlclwiXG4gICAgfCBgUGluZ2JhY2sgLT4gXCJwaW5nYmFja1wiXG4gICAgfCBgUHJlZmV0Y2ggLT4gXCJwcmVmZXRjaFwiXG4gICAgfCBgUHJldiAtPiBcInByZXZcIlxuICAgIHwgYFNlYXJjaCAtPiBcInNlYXJjaFwiXG4gICAgfCBgU3R5bGVzaGVldCAtPiBcInN0eWxlc2hlZXRcIlxuICAgIHwgYFNpZGViYXIgLT4gXCJzaWRlYmFyXCJcbiAgICB8IGBUYWcgLT4gXCJ0YWdcIlxuICAgIHwgYFVwIC0+IFwidXBcIlxuICAgIHwgYFZlcmJhdGltIC0+IFwidmVyYmF0aW1cIlxuICAgIHwgYExhdGluIC0+IFwibGF0aW5cIlxuICAgIHwgYExhdGluX25hbWUgLT4gXCJsYXRpbi1uYW1lXCJcbiAgICB8IGBMYXRpbl9wcm9zZSAtPiBcImxhdGluLXByb3NlXCJcbiAgICB8IGBGdWxsX3dpZHRoX2xhdGluIC0+IFwiZnVsbC13aWR0aC1sYXRpblwiXG4gICAgfCBgS2FuYSAtPiBcImthbmFcIlxuICAgIHwgYEthdGFrYW5hIC0+IFwia2F0YWthbmFcIlxuICAgIHwgYE51bWVyaWMgLT4gXCJudW1lcmljXCJcbiAgICB8IGBUZWwgLT4gXCJ0ZWxcIlxuICAgIHwgYEVtYWlsIC0+IFwiZW1haWxcIlxuICAgIHwgYFVybCAtPiBcInVybFwiXG4gICAgfCBgVGV4dCAtPiBcInRleHRcIlxuICAgIHwgYERlY2ltYWwgLT4gXCJkZWNpbWFsXCJcbiAgICB8IGBPdGhlciBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX2lucHV0X3R5cGUgPSBmdW5jdGlvblxuICAgIHwgYEJ1dHRvbiAtPiBcImJ1dHRvblwiXG4gICAgfCBgQ2hlY2tib3ggLT4gXCJjaGVja2JveFwiXG4gICAgfCBgQ29sb3IgLT4gXCJjb2xvclwiXG4gICAgfCBgRGF0ZSAtPiBcImRhdGVcIlxuICAgIHwgYERhdGV0aW1lIC0+IFwiZGF0ZXRpbWVcIlxuICAgIHwgYERhdGV0aW1lX2xvY2FsIC0+IFwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgIHwgYEVtYWlsIC0+IFwiZW1haWxcIlxuICAgIHwgYEZpbGUgLT4gXCJmaWxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYEltYWdlIC0+IFwiaW1hZ2VcIlxuICAgIHwgYE1vbnRoIC0+IFwibW9udGhcIlxuICAgIHwgYE51bWJlciAtPiBcIm51bWJlclwiXG4gICAgfCBgUGFzc3dvcmQgLT4gXCJwYXNzd29yZFwiXG4gICAgfCBgUmFkaW8gLT4gXCJyYWRpb1wiXG4gICAgfCBgUmFuZ2UgLT4gXCJyYW5nZVwiXG4gICAgfCBgUmVhZG9ubHkgLT4gXCJyZWFkb25seVwiXG4gICAgfCBgUmVzZXQgLT4gXCJyZXNldFwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdWJtaXQgLT4gXCJzdWJtaXRcIlxuICAgIHwgYFRlbCAtPiBcInRlbFwiXG4gICAgfCBgVGV4dCAtPiBcInRleHRcIlxuICAgIHwgYFRpbWUgLT4gXCJ0aW1lXCJcbiAgICB8IGBVcmwgLT4gXCJ1cmxcIlxuICAgIHwgYFdlZWsgLT4gXCJ3ZWVrXCJcblxuICBsZXQgc3RyaW5nX29mX3NjcmlwdF90eXBlID0gZnVuY3Rpb25cbiAgfCBgSmF2YXNjcmlwdCAtPiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIlxuICB8IGBNb2R1bGUgLT4gXCJtb2R1bGVcIlxuICB8IGBNaW1lIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lID0gZnVuY3Rpb25cbiAgICB8IGBOdW1iZXIgbiAtPiBzdHJpbmdfb2ZfaW50IG5cbiAgICB8IGBEYXRldGltZSB0IC0+IHRcblxuICBsZXQgc3RyaW5nX29mX2NoYXJhY3RlciA9IFN0cmluZy5tYWtlIDFcblxuICBsZXQgc3RyaW5nX29mX251bWJlciA9IHN0cmluZ19vZl9pbnRcblxuICBsZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGxldCBvbm9mZl9vZl9ib29sID0gZnVuY3Rpb25cbiAgICB8IGZhbHNlIC0+IFwib2ZmXCJcbiAgICB8IHRydWUgLT4gXCJvblwiXG5cbiAgbGV0IHVub3B0aW9uX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBcIlwiXG5cbiAgbGV0IHN0cmluZ19vZl9zdGVwID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlciB4XG4gICAgfCBOb25lIC0+IFwiYW55XCJcblxuICBsZXQgc3RyaW5nX29mX3NpemVzID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgbCAtPlxuICAgICAgU3RyaW5nLmNvbmNhdCBcIiBcIlxuICAgICAgICAoTGlzdC5tYXAgKGZ1biAoeCwgeSkgLT4gUHJpbnRmLnNwcmludGYgXCIlZHglZFwiIHggeSkgbClcbiAgICB8IE5vbmUgLT5cbiAgICAgIFwiYW55XCJcblxuICBsZXQgc3RyaW5nX29mX3NhbmRib3ggbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX3NhbmRib3hfdG9rZW4gbClcblxuICBsZXQgc3RyaW5nX29mX251bWJlcnMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIixcIiAoTGlzdC5tYXAgc3RyaW5nX29mX251bWJlciBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfbWVkaWFkZXNjIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIsIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbWVkaWFkZXNjX3Rva2VuIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9saW5rdHlwZXMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2xpbmt0eXBlIGwpXG5cbiAgdHlwZSBpbWFnZV9jYW5kaWRhdGUgPVxuICAgIFsgYFVybCBvZiBYbWwudXJpXG4gICAgfCBgVXJsX3dpZHRoIG9mIFhtbC51cmkgKiBIdG1sX3R5cGVzLm51bWJlclxuICAgIHwgYFVybF9waXhlbCBvZiBYbWwudXJpICogSHRtbF90eXBlcy5mbG9hdF9udW1iZXIgXVxuXG4gIGxldCBzdHJpbmdfb2Zfc3Jjc2V0IChsIDogWzwgaW1hZ2VfY2FuZGlkYXRlXSBsaXN0KSA9XG4gICAgbGV0IGYgPSBmdW5jdGlvblxuICAgIHwgYFVybCB1cmwgLT4gWG1sLnN0cmluZ19vZl91cmkgdXJsXG4gICAgfCBgVXJsX3dpZHRoICh1cmwsIHYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzd1wiIChYbWwuc3RyaW5nX29mX3VyaSB1cmwpIChzdHJpbmdfb2ZfbnVtYmVyIHYpXG4gICAgfCBgVXJsX3BpeGVsICh1cmwsIHYpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzeFwiIChYbWwuc3RyaW5nX29mX3VyaSB1cmwpIChYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlciB2KVxuICAgIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIGYgbClcblxuICBsZXQgc3RyaW5nX29mX2F1dG9jb21wbGV0ZSAobCA6IEh0bWxfdHlwZXMuYXV0b2NvbXBsZXRlX29wdGlvbikgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgYE9uIHwgYFRva2VucyBbXSAtPiBcIm9uXCJcbiAgICB8IGBPZmYgLT4gXCJvZmZcIlxuICAgIHwgYFRva2VucyBzdHJzIC0+IFN0cmluZy5jb25jYXQgXCIgXCIgc3Ryc1xuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCAnYikgVy5mdCA9ICdhIC0+ICdiKVxuICAgIChTdmcgOiBTdmdfc2lncy5UIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cbiAgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zKFhtbCkoV3JhcHBlZF9mdW5jdGlvbnMoWG1sKSkoU3ZnKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwNCBUaG9yc3RlbiBPaGwgPG9obEBwaHlzaWsudW5pLXd1ZXJ6YnVyZy5kZT5cbiAqIENvcHlyaWdodCAoQykgMjAwNyBHYWJyaWVsIEtlcm5laXNcbiAqIENvcHlyaWdodCAoQykgMjAxMCBDZWNpbGUgSGVyYmVsaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cblxubW9kdWxlIE0gPSBzdHJ1Y3RcblxuICBtb2R1bGUgVyA9IFhtbF93cmFwLk5vV3JhcFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhXG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgbGlzdFxuXG4gIHR5cGUgdXJpID0gc3RyaW5nXG4gIGxldCB1cmlfb2Zfc3RyaW5nIHMgPSBzXG4gIGxldCBzdHJpbmdfb2ZfdXJpIHMgPSBzXG5cbiAgdHlwZSBzZXBhcmF0b3IgPSBTcGFjZSB8IENvbW1hXG5cbiAgKCoqIEF0dHJpYnV0ZXMgKilcblxuICB0eXBlIGFuYW1lID0gc3RyaW5nXG4gIHR5cGUgYWNvbnRlbnQgPVxuICAgIHwgQUZsb2F0IG9mIGZsb2F0XG4gICAgfCBBSW50IG9mIGludFxuICAgIHwgQVN0ciBvZiBzdHJpbmdcbiAgICB8IEFTdHJMIG9mIHNlcGFyYXRvciAqIHN0cmluZyBsaXN0XG4gIHR5cGUgYXR0cmliID0gYW5hbWUgKiBhY29udGVudFxuXG4gIHR5cGUgZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBzdHJpbmdcbiAgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gc3RyaW5nXG4gIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuXG4gIGxldCBhY29udGVudCAoXywgYSkgPSBhXG4gIGxldCBhbmFtZSAobmFtZSwgXykgPSBuYW1lXG5cbiAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQUZsb2F0IHZhbHVlXG4gIGxldCBpbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBSW50IHZhbHVlXG4gIGxldCBzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gbmFtZSwgQVN0ckwgKFNwYWNlLCB2YWx1ZXMpXG4gIGxldCBjb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gbmFtZSwgQVN0ckwgKENvbW1hLCB2YWx1ZXMpXG4gIGxldCBldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgbW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IGtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgdXJpX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgdXJpc19hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoU3BhY2UsIHZhbHVlcylcblxuXG4gICgqKiBFbGVtZW50ICopXG5cbiAgdHlwZSBlbmFtZSA9IHN0cmluZ1xuICB0eXBlIGVjb250ZW50ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb21tZW50IG9mIHN0cmluZ1xuICAgIHwgRW5jb2RlZFBDREFUQSBvZiBzdHJpbmdcbiAgICB8IFBDREFUQSBvZiBzdHJpbmdcbiAgICB8IEVudGl0eSBvZiBzdHJpbmdcbiAgICB8IExlYWYgb2YgZW5hbWUgKiBhdHRyaWIgbGlzdFxuICAgIHwgTm9kZSBvZiBlbmFtZSAqIGF0dHJpYiBsaXN0ICogZWNvbnRlbnQgbGlzdFxuXG4gIHR5cGUgZWx0ID0gIGVjb250ZW50XG5cbiAgbGV0IGNvbnRlbnQgZWx0ID0gZWx0XG5cbiAgbGV0IGVtcHR5ICgpID0gRW1wdHlcblxuICBsZXQgY29tbWVudCBjID0gQ29tbWVudCBjXG5cbiAgbGV0IHBjZGF0YSBkID0gUENEQVRBIGRcbiAgbGV0IGVuY29kZWRwY2RhdGEgZCA9IEVuY29kZWRQQ0RBVEEgZFxuICBsZXQgZW50aXR5IGUgPSBFbnRpdHkgZVxuXG4gICgqIEZvciBzZWN1cml0eSByZWFzb25zLCB3ZSBkbyBub3QgYWxsb3cgXCJdXT5cIiBpbnNpZGUgQ0RBVEFcbiAgICAgKGFzIHRoaXMgc3RyaW5nIGlzIHRvIGJlIGNvbnNpZGVyZWQgYXMgdGhlIGVuZCBvZiB0aGUgY2RhdGEpXG4gICopXG4gIGxldCByZV9lbmRfY2RhdGEgPSBSZS4oY29tcGlsZSBAQCBzdHIgXCJdXT5cIilcbiAgbGV0IGVuY29kZWRfY2RhdGEgczEgczIgcyA9XG4gICAgZW5jb2RlZHBjZGF0YVxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiXFxuJXNcXG4lc1xcbiVzXFxuXCJcbiAgICAgICAgIHMxXG4gICAgICAgICAoUmUucmVwbGFjZV9zdHJpbmcgfmFsbDp0cnVlIHJlX2VuZF9jZGF0YSB+Ynk6XCJcIiBzKVxuICAgICAgICAgczIgKVxuXG4gIGxldCBjZGF0YSA9IGVuY29kZWRfY2RhdGEgXCI8IVtDREFUQVtcIiBcIl1dPlwiXG4gIGxldCBjZGF0YV9zY3JpcHQgPSBlbmNvZGVkX2NkYXRhIFwiLy88IVtDREFUQVtcIiBcIi8vXV0+XCJcbiAgbGV0IGNkYXRhX3N0eWxlID0gZW5jb2RlZF9jZGF0YSBcIi8qIDwhW0NEQVRBWyAqL1wiIFwiLyogXV0+ICovXCJcblxuICBsZXQgbGVhZiA/KGE9W10pIG5hbWUgPSBMZWFmIChuYW1lLCBhKVxuICBsZXQgbm9kZSA/KGE9W10pIG5hbWUgY2hpbGRyZW4gPSBOb2RlIChuYW1lLCBhLCBjaGlsZHJlbilcblxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBYbWxfcHJpbnQuTWFrZV9zaW1wbGUoTSkoc3RydWN0IGxldCBlbXB0eXRhZ3MgPSBbXSBlbmQpXG5bQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuaW5jbHVkZSBYbWxfaXRlci5NYWtlKE0pXG5pbmNsdWRlIFhtbF9wcmludC5NYWtlX2ZtdChNKShzdHJ1Y3QgbGV0IGVtcHR5dGFncyA9IFtdIGVuZClcblxuaW5jbHVkZSBYbWxfc3RyZWFtLkltcG9ydChNKVxubGV0IHByaW50IGZtdCB4ID0gcHJpbnRfbGlzdCB+b3V0cHV0OihGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCkgW3hdXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTSA9IFN2Z19mLk1ha2UoVHl4bWxfeG1sKVxubW9kdWxlIFAgPSBYbWxfcHJpbnQuTWFrZV90eXBlZF9mbXQoVHl4bWxfeG1sKShNKVxubW9kdWxlIE1ha2VfcHJpbnRlciA9IFhtbF9wcmludC5NYWtlX3R5cGVkKFR5eG1sX3htbCkoTSlcbltAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBQXG5cbmxldCBfcHAgPSBwcCAoKVxubGV0IF9wcF9lbHQgPSBwcF9lbHQgKClcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNID0gSHRtbF9mLk1ha2UoVHl4bWxfeG1sKShUeXhtbF9zdmcpXG5tb2R1bGUgUCA9IFhtbF9wcmludC5NYWtlX3R5cGVkX2ZtdChUeXhtbF94bWwpKE0pXG5tb2R1bGUgTWFrZV9wcmludGVyID0gWG1sX3ByaW50Lk1ha2VfdHlwZWQoVHl4bWxfeG1sKShNKVxuW0BAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBQXG5cbmxldCBfcHAgPSBwcCAoKVxubGV0IF9wcF9lbHQgPSBwcF9lbHQgKClcbiIsIigqIFJlYWN0aXZlRGF0YVxuICogaHR0cHM6Ly9naXRodWIuY29tL2hodWdvL3JlYWN0aXZlRGF0YVxuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgdHlwZSBEQVRBID0gc2lnXG4gIHR5cGUgJ2EgZGF0YVxuICB0eXBlICdhIHBhdGNoXG4gIHZhbCBtZXJnZSA6ICdhIHBhdGNoIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YVxuICB2YWwgbWFwX3BhdGNoIDogKCdhIC0+ICdiKSAtPiAnYSBwYXRjaCAtPiAnYiBwYXRjaFxuICB2YWwgbWFwX2RhdGEgOiAoJ2EgLT4gJ2IpIC0+ICdhIGRhdGEgLT4gJ2IgZGF0YVxuICB2YWwgZW1wdHkgOiAnYSBkYXRhXG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIC0+ICdhIGRhdGEgLT4gYm9vbFxuICB2YWwgZGlmZiA6IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIC0+ICdhIGRhdGEgLT4gJ2EgcGF0Y2hcbmVuZFxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBkYXRhXG4gIHR5cGUgJ2EgcGF0Y2hcbiAgdHlwZSAnYSBtc2cgPSBQYXRjaCBvZiAnYSBwYXRjaCB8IFNldCBvZiAnYSBkYXRhXG4gIHR5cGUgJ2EgaGFuZGxlXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIGNyZWF0ZSA6ICdhIGRhdGEgLT4gJ2EgdCAqICdhIGhhbmRsZVxuICB2YWwgZnJvbV9ldmVudCA6ICdhIGRhdGEgLT4gJ2EgbXNnIFJlYWN0LkUudCAtPiAnYSB0XG4gIHZhbCBmcm9tX3NpZ25hbCA6ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgZGF0YSBSZWFjdC5TLnQgLT4gJ2EgdFxuICB2YWwgY29uc3QgOiAnYSBkYXRhIC0+ICdhIHRcbiAgdmFsIHBhdGNoIDogJ2EgaGFuZGxlIC0+ICdhIHBhdGNoIC0+IHVuaXRcbiAgdmFsIHNldCAgIDogJ2EgaGFuZGxlIC0+ICdhIGRhdGEgLT4gdW5pdFxuICB2YWwgbWFwX21zZyA6ICgnYSAtPiAnYikgLT4gJ2EgbXNnIC0+ICdiIG1zZ1xuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSBkYXRhXG4gIHZhbCBmb2xkIDogKCdhIC0+ICdiIG1zZyAtPiAnYSkgLT4gJ2IgdCAtPiAnYSAtPiAnYSBSZWFjdC5zaWduYWxcbiAgdmFsIHNpZ25hbCA6ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSBkYXRhIFJlYWN0LlMudFxuICB2YWwgZXZlbnQgOiAnYSB0IC0+ICdhIG1zZyBSZWFjdC5FLnRcbmVuZFxuXG5tb2R1bGUgTWFrZShEIDogREFUQSkgOlxuICBTIHdpdGggdHlwZSAnYSBkYXRhID0gJ2EgRC5kYXRhXG4gICAgIGFuZCB0eXBlICdhIHBhdGNoID0gJ2EgRC5wYXRjaCA9IHN0cnVjdFxuXG4gIHR5cGUgJ2EgZGF0YSA9ICdhIEQuZGF0YVxuICB0eXBlICdhIHBhdGNoID0gJ2EgRC5wYXRjaFxuICBsZXQgbWVyZ2UgPSBELm1lcmdlXG4gIGxldCBtYXBfcGF0Y2ggPSBELm1hcF9wYXRjaFxuICBsZXQgbWFwX2RhdGEgPSBELm1hcF9kYXRhXG5cbiAgdHlwZSAnYSBtc2cgPVxuICAgIHwgUGF0Y2ggb2YgJ2EgcGF0Y2hcbiAgICB8IFNldCBvZiAnYSBkYXRhXG5cbiAgdHlwZSAnYSBoYW5kbGUgPSA/c3RlcDpSZWFjdC5zdGVwIC0+ICdhIG1zZyAtPiB1bml0XG5cbiAgdHlwZSAnYSBtdXQgPSB7XG4gICAgY3VycmVudCA6ICdhIGRhdGEgcmVmO1xuICAgIGV2ZW50IDogJ2EgbXNnIFJlYWN0LkUudDtcbiAgfVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDb25zdCBvZiAnYSBkYXRhXG4gICAgfCBNdXQgb2YgJ2EgbXV0XG5cbiAgbGV0IGVtcHR5ID0gQ29uc3QgRC5lbXB0eVxuXG4gIGxldCBjcmVhdGUgbCA9XG4gICAgbGV0IGluaXRpYWxfZXZlbnQsc2VuZCA9IFJlYWN0LkUuY3JlYXRlICgpIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgbCBpblxuICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICBlbmQ7XG4gICAgICAgIG1zZykgaW5pdGlhbF9ldmVudCBpblxuICAgIE11dCB7Y3VycmVudDtldmVudH0sc2VuZFxuXG4gIGxldCBmcm9tX2V2ZW50IGwgaW5pdGlhbF9ldmVudCA9XG4gICAgbGV0IGN1cnJlbnQgPSByZWYgbCBpblxuICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICBlbmQ7XG4gICAgICAgIG1zZykgaW5pdGlhbF9ldmVudCBpblxuICAgIE11dCB7Y3VycmVudDtldmVudH1cblxuICBsZXQgY29uc3QgeCA9IENvbnN0IHhcblxuICBsZXQgbWFwX21zZyAoZiA6ICdhIC0+ICdiKSA6ICdhIG1zZyAtPiAnYiBtc2cgPSBmdW5jdGlvblxuICAgIHwgU2V0IGwgLT4gU2V0IChtYXBfZGF0YSBmIGwpXG4gICAgfCBQYXRjaCBwIC0+IFBhdGNoIChtYXBfcGF0Y2ggZiBwKVxuXG4gIGxldCBtYXAgZiBzID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IHggLT4gQ29uc3QgKG1hcF9kYXRhIGYgeClcbiAgICB8IE11dCBzIC0+XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiAobWFwX2RhdGEgZiAhKHMuY3VycmVudCkpIGluXG4gICAgICBsZXQgZXZlbnQgPSBSZWFjdC5FLm1hcCAoZnVuIG1zZyAtPlxuICAgICAgICAgIGxldCBtc2cgPSBtYXBfbXNnIGYgbXNnIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICAgIHwgU2V0IGwgLT4gY3VycmVudCA6PSBsO1xuICAgICAgICAgICAgfCBQYXRjaCBwIC0+IGN1cnJlbnQgOj0gbWVyZ2UgcCAhY3VycmVudFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBtc2cpIHMuZXZlbnQgaW5cbiAgICAgIE11dCB7Y3VycmVudCA7ZXZlbnR9XG5cbiAgbGV0IHZhbHVlIHMgPSBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IGMgLT4gY1xuICAgIHwgTXV0IHMgLT4gIShzLmN1cnJlbnQpXG5cbiAgbGV0IGV2ZW50IHMgPSBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IF8gLT4gUmVhY3QuRS5uZXZlclxuICAgIHwgTXV0IHMgLT4gcy5ldmVudFxuXG4gIGxldCBwYXRjaCAocyA6ICdhIGhhbmRsZSkgcCA9IHMgKFBhdGNoIHApXG5cbiAgbGV0IHNldCAocyA6ICdhIGhhbmRsZSkgcCA9IHMgKFNldCBwKVxuXG4gIGxldCBmb2xkIGYgcyBhY2MgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgYyAtPiBSZWFjdC5TLmNvbnN0IChmIGFjYyAoU2V0IGMpKVxuICAgIHwgTXV0IHMgLT5cbiAgICAgIGxldCBhY2MgPSBmIGFjYyAoU2V0ICghKHMuY3VycmVudCkpKSBpblxuICAgICAgUmVhY3QuUy5mb2xkIGYgYWNjIHMuZXZlbnRcblxuICBsZXQgc2lnbmFsID8oZXEgPSAoPSkpIChzIDogJ2EgdCkgOiAnYSBkYXRhIFJlYWN0LlMudCA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBjIC0+IFJlYWN0LlMuY29uc3QgY1xuICAgIHwgTXV0IHMgLT5cbiAgICAgIFJlYWN0LlMuZm9sZCB+ZXE6KEQuZXF1YWwgZXEpIChmdW4gbCBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgIHwgU2V0IGwgLT4gbFxuICAgICAgICAgIHwgUGF0Y2ggcCAtPiBtZXJnZSBwIGwpICghKHMuY3VycmVudCkpIHMuZXZlbnRcblxuICBsZXQgZnJvbV9zaWduYWwgPyhlcSA9ICg9KSkgcyA9XG4gICAgbGV0IGYgZCcgZCA9IFBhdGNoIChELmRpZmYgfmVxIGQgZCcpIGluXG4gICAgZnJvbV9ldmVudCAoUmVhY3QuUy52YWx1ZSBzKSAoUmVhY3QuUy5kaWZmIGYgcylcblxuZW5kXG5cbm1vZHVsZSBEYXRhTGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIGRhdGEgPSAnYSBsaXN0XG4gIHR5cGUgJ2EgcCA9XG4gICAgfCBJIG9mIGludCAqICdhXG4gICAgfCBSIG9mIGludFxuICAgIHwgVSBvZiBpbnQgKiAnYVxuICAgIHwgWCBvZiBpbnQgKiBpbnRcbiAgdHlwZSAnYSBwYXRjaCA9ICdhIHAgbGlzdFxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgbWFwX2RhdGEgPSBMaXN0Lm1hcFxuICBsZXQgbWFwX3BhdGNoIGYgPSBmdW5jdGlvblxuICAgIHwgSSAoaSx4KSAtPiBJIChpLCBmIHgpXG4gICAgfCBSIGkgLT4gUiBpXG4gICAgfCBYIChpLGopIC0+IFggKGksailcbiAgICB8IFUgKGkseCkgLT4gVSAoaSxmIHgpXG4gIGxldCBtYXBfcGF0Y2ggZiA9IExpc3QubWFwIChtYXBfcGF0Y2ggZilcblxuICBsZXQgbWVyZ2VfcCBvcCBsID1cbiAgICBtYXRjaCBvcCB3aXRoXG4gICAgfCBJIChpJyx4KSAtPlxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBMaXN0Lmxlbmd0aCBsICsgMSArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCByZWMgYXV4IGFjYyBuIGwgPSBtYXRjaCBuLGwgd2l0aFxuICAgICAgICB8IDAsbCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4OjpsKVxuICAgICAgICB8IF8sW10gLT4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIlxuICAgICAgICB8IG4seDo6eHMgLT4gYXV4ICh4OjphY2MpIChwcmVkIG4pIHhzXG4gICAgICBpbiBhdXggW10gaSBsXG4gICAgfCBSIGknIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgcmVjIGF1eCBhY2MgbiBsID0gbWF0Y2ggbixsIHdpdGhcbiAgICAgICAgfCAwLF86OmwgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyBsXG4gICAgICAgIHwgXyxbXSAtPiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiXG4gICAgICAgIHwgbix4Ojp4cyAtPiBhdXggKHg6OmFjYykgKHByZWQgbikgeHNcbiAgICAgIGluIGF1eCBbXSBpIGxcbiAgICB8IFUgKGknLHgpIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICAgICAgYS4oaSkgPC0geDtcbiAgICAgIEFycmF5LnRvX2xpc3QgYVxuICAgIHwgWCAoaScsb2Zmc2V0KSAtPlxuICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBsZW4gKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgdiA9IGEuKGkpIGluXG4gICAgICBpZiBvZmZzZXQgPiAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGlmIChpICsgb2Zmc2V0ID49IGxlbikgdGhlbiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiO1xuICAgICAgICBmb3IgaiA9IGkgdG8gaSArIG9mZnNldCAtIDEgZG9cbiAgICAgICAgICBhLihqKSA8LSBhLihqICsgMSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYS4oaStvZmZzZXQpIDwtIHZcbiAgICAgIGVuZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiAoaSArIG9mZnNldCA8IDApIHRoZW4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIjtcbiAgICAgICAgZm9yIGogPSBpIGRvd250byBpICsgb2Zmc2V0ICsgMSBkb1xuICAgICAgICAgIGEuKGopIDwtIGEuKGogLSAxKVxuICAgICAgICBkb25lO1xuICAgICAgICBhLihpK29mZnNldCkgPC0gdlxuICAgICAgZW5kO1xuICAgICAgQXJyYXkudG9fbGlzdCBhXG5cbiAgKCogYWNjdW11bGF0ZXMgaW50byBhY2MgaSB1bm1vZGlmaWVkIGVsZW1lbnRzIGZyb20gbCAqKVxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZV9md2QgfmFjYyBpIGwgPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID4gMCB0aGVuXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgaCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2MgPSBoIDo6IGFjYyBpblxuICAgICAgICBsaW5lYXJfbWVyZ2VfZndkIH5hY2MgKGkgLSAxKSBsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwiaW52YWxpZCBpbmRleFwiXG4gICAgZWxzZVxuICAgICAgbCwgYWNjXG5cbiAgbGV0IHJlYyBsaW5lYXJfbWVyZ2UgfmFjYyBpMCBwIGwgPVxuICAgIGxldCBsLCBhY2MgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IChJIChpLCBfKSB8IFIgaSB8IFUgKGksIF8pKSA6OiBfIHdoZW4gaSA+IGkwIC0+XG4gICAgICAgIGxpbmVhcl9tZXJnZV9md2QgfmFjYyAoaSAtIGkwKSBsXG4gICAgICB8IF8gLT5cbiAgICAgICAgbCwgYWNjXG4gICAgaW5cbiAgICBtYXRjaCBwLCBsIHdpdGhcbiAgICB8IEkgKGksIHgpIDo6IHAsIF8gLT5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjIGkgcCAoeCA6OiBsKVxuICAgIHwgUiBpIDo6IHAsIF8gOjogbCAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwIGxcbiAgICB8IFIgXyA6OiBfLCBbXSAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJtZXJnZTogaW52YWxpZCBpbmRleFwiXG4gICAgfCBVIChpLCB4KSA6OiBwLCBfIDo6IGwgLT5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjIGkgcCAoeCA6OiBsKVxuICAgIHwgVSAoXywgXykgOjogXywgW10gLT5cbiAgICAgIGludmFsaWRfYXJnIFwibWVyZ2U6IGludmFsaWQgaW5kZXhcIlxuICAgIHwgW10sIGwgLT5cbiAgICAgIExpc3QucmV2X2FwcGVuZCBhY2MgbFxuICAgIHwgWCAoXywgXykgOjogXywgXyAtPlxuICAgICAgZmFpbHdpdGggXCJsaW5lYXJfbWVyZ2U6IFggbm90IHN1cHBvcnRlZFwiXG5cbiAgbGV0IHJlYyBsaW5lYXJfbWVyZ2VhYmxlIH5uIHAgPVxuICAgIGFzc2VydCAobiA+PSAwKTtcbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IChJIChpLCBfKSB8IFIgaSB8IFUgKGksIF8pKSA6OiBwIHdoZW4gaSA+PSBuIC0+XG4gICAgICAoKiBuZWdhdGl2ZSBpJ3MgcnVsZWQgb3V0IChhbW9uZyBvdGhlcnMpICopXG4gICAgICBsaW5lYXJfbWVyZ2VhYmxlIH5uOmkgcFxuICAgIHwgXyA6OiBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgW10gLT5cbiAgICAgIHRydWVcblxuICBsZXQgbWVyZ2UgcCBsID1cbiAgICBpZiBsaW5lYXJfbWVyZ2VhYmxlIH5uOjAgcCB0aGVuXG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYzpbXSAwIHAgbFxuICAgIGVsc2VcbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IG1lcmdlX3AgeCBsKSBsIHBcblxuICBsZXQgcmVjIGVxdWFsIGYgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCB4MSA6OiBsMSwgeDIgOjogbDIgd2hlbiBmIHgxIHgyIC0+XG4gICAgICBlcXVhbCBmIGwxIGwyXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IF8gOjogXyAsIF8gOjogX1xuICAgIHwgXyA6OiBfICwgW11cbiAgICB8IFtdICAgICAsIF8gOjogXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgbWVtICh0eXBlIHUpIGwgPVxuICAgIGxldCBtb2R1bGUgSCA9XG4gICAgICBIYXNodGJsLk1ha2VcbiAgICAgICAgKHN0cnVjdCB0eXBlIHQgPSB1IGxldCBoYXNoID0gSGFzaHRibC5oYXNoIGxldCBlcXVhbCA9ICg9PSkgZW5kKSBpblxuICAgIGxldCBoID0gSC5jcmVhdGUgMTYgaW5cbiAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+IEguYWRkIGggeCAoKSkgbDtcbiAgICBILm1lbSBoXG5cbiAgbGV0IGZvbGRfZGlmZiA/KGVxID0gKD0pKSB+YWNjIH5yZW1vdmUgfmFkZCBseCBseSA9XG4gICAgbGV0IG1lbXggPSBtZW0gbHhcbiAgICBhbmQgbWVteSA9IG1lbSBseSBpblxuICAgIGxldCByZWMgZiB+YWNjIH5sZWZ0IGx4IGx5IG4gPVxuICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICgqIHRyYWlsaW5nIGVsZW1lbnRzIHRvIGJlIHJlbW92ZWQgKilcbiAgICAgIHwgXyA6OiBseCwgW10gLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggW10gblxuICAgICAgKCogdHJhaWxpbmcgZWxlbWVudHMgdG8gYmUgYWRkZWQgKilcbiAgICAgIHwgW10sIHkgOjogbHkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBbXSBseSAobiArIDEpXG4gICAgICAoKiBkb25lISAqKVxuICAgICAgfCBbXSwgW10gLT5cbiAgICAgICAgYWNjXG4gICAgICAoKiBzYW1lICopXG4gICAgICB8IHggOjogbHgsIHkgOjogbHkgd2hlbiBlcSB4IHkgLT5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IGx5IChuICsgMSlcbiAgICAgICgqIHggbmVlZHMgdG8gYmUgcmVtb3ZlZCBmb3Igc3VyZSAqKVxuICAgICAgfCB4IDo6IGx4LCBfIDo6IF8gd2hlbiBub3QgKG1lbXkgeCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggbHkgblxuICAgICAgKCogeSBuZWVkcyB0byBiZSBhZGRlZCBmb3Igc3VyZSAqKVxuICAgICAgfCBfIDo6IF8sIHkgOjogbHkgd2hlbiBub3QgKG1lbXggeSkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBseSAobiArIDEpXG4gICAgICAoKiBubyBtb3JlIGNlcnRhaW50eSwgfmxlZnQgZGVjaWRlcyB3aGF0IHRvIHJlY3VyIG9uICopXG4gICAgICB8IF8gOjogbHgsIF8gOjogXyB3aGVuIGxlZnQgLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgbiBpblxuICAgICAgICBmIH5hY2MgfmxlZnQ6ZmFsc2UgbHggbHkgblxuICAgICAgfCBfIDo6IF8sIHkgOjogbHkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgbiB5IGluXG4gICAgICAgIGYgfmFjYyB+bGVmdDp0cnVlIGx4IGx5IChuICsgMSlcbiAgICBpblxuICAgIGYgfmFjYyB+bGVmdDp0cnVlIGx4IGx5IDBcblxuICBsZXQgcmVjIGxpc3RfcmV2ID8oYWNjID0gW10pID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IGFjYyA9IGggOjogYWNjIGluXG4gICAgICBsaXN0X3JldiB+YWNjIHRcbiAgICB8IFtdIC0+XG4gICAgICBhY2NcblxuICBsZXQgZGlmZiB+ZXEgeCB5ID1cbiAgICBsZXQgYWRkIGFjYyBpIHYgPSBJIChpLCB2KSA6OiBhY2NcbiAgICBhbmQgcmVtb3ZlIGFjYyBpID0gUiBpIDo6IGFjY1xuICAgIGFuZCBhY2MgPSBbXSBpblxuICAgIGxpc3RfcmV2IChmb2xkX2RpZmYgfmVxIH5hY2MgfmFkZCB+cmVtb3ZlIHggeSlcblxuZW5kXG5cbm1vZHVsZSBSTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKERhdGFMaXN0KVxuICBtb2R1bGUgRCA9IERhdGFMaXN0XG4gIHR5cGUgJ2EgcCA9ICdhIEQucCA9XG4gICAgfCBJIG9mIGludCAqICdhXG4gICAgfCBSIG9mIGludFxuICAgIHwgVSBvZiBpbnQgKiAnYVxuICAgIHwgWCBvZiBpbnQgKiBpbnRcblxuICBsZXQgY29ucyB4IHMgPSBwYXRjaCBzIFtELkkgKDAseCldXG4gIGxldCBzbm9jIHggcyA9IHBhdGNoIHMgW0QuSSAoLTEseCldXG4gIGxldCBpbnNlcnQgeCBpIHMgPSBwYXRjaCBzIFtELkkgKGkseCldXG4gIGxldCB1cGRhdGUgeCBpIHMgPSBwYXRjaCBzIFtELlUgKGkseCldXG4gIGxldCBtb3ZlIGkgaiBzID0gcGF0Y2ggcyBbRC5YIChpLGopXVxuICBsZXQgcmVtb3ZlIGkgcyA9IHBhdGNoIHMgW0QuUiBpXVxuXG4gIGxldCBpbmRleCA/KGVxID0gKD0pKSBsIHggPVxuICAgIGxldCByZWMgZiBuID0gZnVuY3Rpb25cbiAgICAgIHwgaGQgOjogXyB3aGVuIGVxIGhkIHggLT4gblxuICAgICAgfCBfIDo6IHRsIC0+IGYgKG4gKyAxKSB0bFxuICAgICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICBpblxuICAgIGYgMCBsXG5cbiAgbGV0IHVwZGF0ZV9lcSA/ZXEgKGRhdGEsIGhhbmRsZSkgeCB5ID1cbiAgICBsZXQgaSA9IGluZGV4ID9lcSAodmFsdWUgZGF0YSkgeCBpblxuICAgIHVwZGF0ZSB5IGkgaGFuZGxlXG5cbiAgbGV0IHJlbW92ZV9sYXN0IChkYXRhLCBoYW5kbGUpID1cbiAgICByZW1vdmUgKExpc3QubGVuZ3RoICh2YWx1ZSBkYXRhKSAtIDEpIGhhbmRsZVxuXG4gIGxldCByZW1vdmVfZXEgP2VxIChkYXRhLCBoYW5kbGUpIHggPVxuICAgIGxldCBpID0gaW5kZXggP2VxICh2YWx1ZSBkYXRhKSB4IGluXG4gICAgcmVtb3ZlIGkgaGFuZGxlXG5cbiAgbGV0IHNpbmdsZXRvbiB4ID0gY29uc3QgW3hdXG5cbiAgbGV0IHNpbmdsZXRvbl9zIHMgPVxuICAgIGxldCBmaXJzdCA9IHJlZiB0cnVlIGluXG4gICAgbGV0IGUsc2VuZCA9IFJlYWN0LkUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlc3VsdCA9IGZyb21fZXZlbnQgW10gZSBpblxuICAgIGxldCBfID0gUmVhY3QuUy5tYXAgKGZ1biB4IC0+XG4gICAgICAgIGlmICFmaXJzdFxuICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgZmlyc3Q6PWZhbHNlO1xuICAgICAgICAgIHNlbmQgKFBhdGNoIFtJKDAseCldKVxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBzZW5kIChQYXRjaCBbVSgwLHgpXSkpIHMgaW5cbiAgICByZXN1bHRcblxuICBsZXQgY29uY2F0IDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgPSBmdW4geCB5IC0+XG4gICAgbGV0IHYxID0gdmFsdWUgeFxuICAgIGFuZCB2MiA9IHZhbHVlIHkgaW5cbiAgICBsZXQgc2l6ZTEgPSByZWYgMFxuICAgIGFuZCBzaXplMiA9IHJlZiAwIGluXG4gICAgbGV0IHNpemVfd2l0aF9wYXRjaCBzaXpleCA6ICdhIEQucCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgKEQuSSBfKSAtPiBpbmNyIHNpemV4XG4gICAgICB8IChELlIgXykgLT4gZGVjciBzaXpleFxuICAgICAgfCAoRC5YIF8gfCBELlUgXykgLT4gKCkgaW5cbiAgICBsZXQgc2l6ZV93aXRoX3NldCBzaXpleCBsID0gc2l6ZXg6PUxpc3QubGVuZ3RoIGwgaW5cblxuICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgdjE7XG4gICAgc2l6ZV93aXRoX3NldCBzaXplMiB2MjtcblxuICAgIGxldCB1cGRhdGVfcGF0Y2gxID0gTGlzdC5tYXAgKGZ1biBwIC0+XG4gICAgICAgIGxldCBtID0gbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgfCBELkkgKHBvcyx4KSAtPlxuICAgICAgICAgICAgbGV0IGkgPSBpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zIGluXG4gICAgICAgICAgICBELkkgKGksIHgpXG4gICAgICAgICAgfCBELlIgcG9zICAgICAtPiBELlIgIChpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zKVxuICAgICAgICAgIHwgRC5VIChwb3MseCkgLT4gRC5VICgoaWYgcG9zIDwgMCB0aGVuIHBvcyAtICFzaXplMiBlbHNlIHBvcyksIHgpXG4gICAgICAgICAgfCBELlggKGksaikgLT4gICBELlggKChpZiBpIDwgMCB0aGVuIGkgLSAhc2l6ZTIgZWxzZSBpKSxqKVxuICAgICAgICBpblxuICAgICAgICBzaXplX3dpdGhfcGF0Y2ggc2l6ZTEgbTtcbiAgICAgICAgbSkgaW5cbiAgICBsZXQgdXBkYXRlX3BhdGNoMiA9IExpc3QubWFwIChmdW4gcCAtPlxuICAgICAgICBsZXQgbSA9IG1hdGNoIHAgd2l0aFxuICAgICAgICAgIHwgRC5JIChwb3MseCkgLT4gRC5JICgoaWYgcG9zIDwgMCB0aGVuIHBvcyBlbHNlICFzaXplMSArIHBvcyksIHgpXG4gICAgICAgICAgfCBELlIgcG9zICAgICAtPiBELlIgIChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKVxuICAgICAgICAgIHwgRC5VIChwb3MseCkgLT4gRC5VICgoaWYgcG9zIDwgMCB0aGVuIHBvcyBlbHNlICFzaXplMSArIHBvcyksIHgpXG4gICAgICAgICAgfCBELlggKGksaikgLT4gICBELlggKChpZiBpIDwgMCB0aGVuIGkgZWxzZSAhc2l6ZTEgKyBpKSxqKVxuICAgICAgICBpblxuICAgICAgICBzaXplX3dpdGhfcGF0Y2ggc2l6ZTIgbTtcbiAgICAgICAgbSkgaW5cbiAgICBsZXQgdHVwbGVfZXYgPVxuICAgICAgUmVhY3QuRS5tZXJnZSAoZnVuIGFjYyB4IC0+XG4gICAgICAgICAgbWF0Y2ggYWNjLHggd2l0aFxuICAgICAgICAgIHwgKE5vbmUscDIpLGBFMSB4IC0+IFNvbWUgeCxwMlxuICAgICAgICAgIHwgKHAxLE5vbmUpLGBFMiB4IC0+IHAxLCBTb21lIHhcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoTm9uZSxOb25lKVxuICAgICAgICBbUmVhY3QuRS5tYXAgKGZ1biBlIC0+IGBFMSBlKSAoZXZlbnQgeCk7XG4gICAgICAgICBSZWFjdC5FLm1hcCAoZnVuIGUgLT4gYEUyIGUpIChldmVudCB5KV0gaW5cbiAgICBsZXQgbWVyZ2VkX2V2ID0gUmVhY3QuRS5tYXAgKGZ1biBwIC0+XG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IFNvbWUgKFNldCBwMSksIFNvbWUgKFNldCBwMikgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHAxO1xuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgcDI7XG4gICAgICAgICAgU2V0IChwMSBAIHAyKVxuICAgICAgICB8IFNvbWUgKFNldCBwMSksIE5vbmUgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHAxO1xuICAgICAgICAgIFNldCAocDEgQCB2YWx1ZSB5KVxuICAgICAgICB8IE5vbmUsIFNvbWUgKFNldCBwMikgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHAyO1xuICAgICAgICAgIFNldCAodmFsdWUgeCBAIHAyIClcbiAgICAgICAgfCBTb21lIChQYXRjaCBwMSksIFNvbWUgKFBhdGNoIHAyKSAtPlxuICAgICAgICAgIGxldCBwMSA9IHVwZGF0ZV9wYXRjaDEgcDEgaW5cbiAgICAgICAgICBsZXQgcDIgPSB1cGRhdGVfcGF0Y2gyIHAyIGluXG4gICAgICAgICAgUGF0Y2ggKHAxIEAgcDIpXG4gICAgICAgIHwgU29tZSAoUGF0Y2ggcDEpLCBOb25lIC0+IFBhdGNoICh1cGRhdGVfcGF0Y2gxIHAxKVxuICAgICAgICB8IE5vbmUsIFNvbWUgKFBhdGNoIHAyKSAtPiBQYXRjaCAodXBkYXRlX3BhdGNoMiBwMilcbiAgICAgICAgfCBTb21lIChQYXRjaCBfKSwgU29tZSAoU2V0IHMyKSAtPlxuICAgICAgICAgIGxldCBzMSA9IHZhbHVlIHggaW5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHMxO1xuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgczI7XG4gICAgICAgICAgU2V0KHMxIEAgczIpXG4gICAgICAgIHwgU29tZSAoU2V0IHMxKSwgU29tZSAoUGF0Y2ggXykgLT5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUxIHMxO1xuICAgICAgICAgIGxldCBzMiA9IHZhbHVlIHkgaW5cbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHMyO1xuICAgICAgICAgIFNldChzMSBAIHMyKVxuICAgICAgICB8IE5vbmUsTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICkgdHVwbGVfZXYgaW5cbiAgICBmcm9tX2V2ZW50ICh2MSBAIHYyKSBtZXJnZWRfZXZcblxuICBsZXQgaW52ZXJzZSA6ICdhIC4gJ2EgcCAtPiAnYSBwID0gZnVuY3Rpb25cbiAgICB8IEkgKGkseCkgLT4gSSgtaS0xLCB4KVxuICAgIHwgVSAoaSx4KSAtPiBVKC1pLTEsIHgpXG4gICAgfCBSIGkgLT4gUiAoLWktMSlcbiAgICB8IFggKGksaikgLT4gWCAoLWktMSwtailcblxuICBsZXQgcmV2IHQgPVxuICAgIGxldCBlID0gUmVhY3QuRS5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0IGwgLT4gU2V0IChMaXN0LnJldiBsKVxuICAgICAgICB8IFBhdGNoIHAgLT4gUGF0Y2ggKExpc3QubWFwIGludmVyc2UgcCkpICAoZXZlbnQgdClcbiAgICBpblxuICAgIGZyb21fZXZlbnQgKExpc3QucmV2ICh2YWx1ZSB0KSkgZVxuXG4gIGxldCBmaWx0ZXIgcHJlZCBsID1cbiAgICBsZXQgbW9kdWxlIEludE1hcCA9IE1hcC5NYWtlKEludCkgaW5cblxuICAgIGxldCBpbmRleCA9IHJlZiBJbnRNYXAuZW1wdHkgaW5cbiAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG5cbiAgICBsZXQgZmlsdGVyX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIGF1eCAobDogJ2EgbGlzdCkgcmVzIHRoZWlyX2kgbXlfaSA9IG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHJlc1xuICAgICAgICB8IHg6OnhzIC0+XG4gICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdGhlaXJfaSAobXlfaSArIDEpICFpbmRleDtcbiAgICAgICAgICAgICAgIGF1eCB4cyAoeDo6cmVzKSAodGhlaXJfaSArIDEpIChteV9pICsgMSlcbiAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICBhdXggeHMgcmVzICh0aGVpcl9pICsgMSkgbXlfaVxuICAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNpemUgOj0gTGlzdC5sZW5ndGggbDtcbiAgICAgIGluZGV4IDo9IEludE1hcC5lbXB0eTtcbiAgICAgIExpc3QucmV2IChhdXggbCBbXSAwICgtMSkpXG4gICAgaW5cblxuICAgIGxldCBub3JtYWxpc2UgaSA9IGlmIGkgPCAwIHRoZW4gIXNpemUgKyAxICsgaSBlbHNlIGkgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfaW5zZXJ0IGluc2VydF9wb3NfZnVsbF9saXN0IHZpc2libGUgPVxuICAgICAgbGV0IGluc2VydF9wb3NfZnVsbF9saXN0ID0gbm9ybWFsaXNlIGluc2VydF9wb3NfZnVsbF9saXN0IGluXG4gICAgICBsZXQgbGVmdF9hbG9uZSwgZGlzcGxhY2VkLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IGluc2VydF9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IHVwZGF0YWJsZXMgPSBtYXRjaCBkaXNwbGFjZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdXBkYXRhYmxlc1xuICAgICAgICB8IFNvbWUgZGlzcGxhY2VkX2luX2ZpbHRlcmVkIC0+XG4gICAgICAgICAgIEludE1hcC5hZGQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgZGlzcGxhY2VkX2luX2ZpbHRlcmVkIHVwZGF0YWJsZXNcbiAgICAgIGluXG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IG5ld19qX2ZpbHRlcmVkID0gaWYgdmlzaWJsZSB0aGVuIGpfZmlsdGVyZWRfbGlzdCArIDEgZWxzZSBqX2ZpbHRlcmVkX2xpc3QgaW5cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoal9mdWxsX2xpc3QgKyAxKSBuZXdfal9maWx0ZXJlZCAhaW5kZXhcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzIGluXG4gICAgICBsZXQgaW5zZXJ0X3Bvc19maWx0ZXJlZCA9IGlmIEludE1hcC5pc19lbXB0eSBsZWZ0X2Fsb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChzbmQgKEludE1hcC5tYXhfYmluZGluZyBsZWZ0X2Fsb25lKSkgKyAxXG4gICAgICBpblxuICAgICAgaWYgdmlzaWJsZSB0aGVuIGluZGV4IDo9IEludE1hcC5hZGQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgaW5zZXJ0X3Bvc19maWx0ZXJlZCAhaW5kZXg7XG4gICAgICBpbmNyIHNpemU7XG4gICAgICBpbnNlcnRfcG9zX2ZpbHRlcmVkXG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfcmVtb3ZlIHJlbW92ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCB3YXNfdmlzaWJsZSA9IEludE1hcC5tZW0gcmVtb3ZlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgXyxfLHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgcmVtb3ZlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IG5ld19qID0gaWYgd2FzX3Zpc2libGUgdGhlbiBqX2ZpbHRlcmVkX2xpc3QgZWxzZSBqX2ZpbHRlcmVkX2xpc3QgLSAxIGluXG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGpfZnVsbF9saXN0IC0gMSkgbmV3X2ogIWluZGV4XG4gICAgICBpblxuICAgICAgaWYgbm90IChJbnRNYXAuaXNfZW1wdHkgIWluZGV4KVxuICAgICAgdGhlblxuICAgICAgICBsZXQgbGFzdF9pLCBfID0gSW50TWFwLm1heF9iaW5kaW5nICFpbmRleCBpblxuICAgICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIGxhc3RfaSAhaW5kZXhcbiAgICAgIGVsc2UgKCk7XG4gICAgICBkZWNyIHNpemU7XG4gICAgICBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzXG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfdXBkYXRlX2RlbGV0ZSB1cGRhdGVfcG9zX2Z1bGxfbGlzdCA9XG4gICAgICBsZXQgXywgXywgdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIGpfZnVsbF9saXN0IChqX2ZpbHRlcmVkX2xpc3QgLSAxKSAhaW5kZXhcbiAgICAgIGluXG4gICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleDtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXNcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF91cGRhdGVfaW5zZXJ0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCBsZWZ0X2Fsb25lLCBub25lLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgYXNzZXJ0IChub25lID0gTm9uZSk7XG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCBqX2Z1bGxfbGlzdCAoal9maWx0ZXJlZF9saXN0ICsgMSkgIWluZGV4XG4gICAgICBpblxuICAgICAgbGV0IG5ld19wb3NfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGxldCBwcmV2aW91c19wb3NfZmlsdGVyZWQgPSB0cnkgKHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIGxlZnRfYWxvbmUpKSB3aXRoIE5vdF9mb3VuZCAtPiAoLTEpIGluXG4gICAgICAgIHByZXZpb3VzX3Bvc19maWx0ZXJlZCArIDFcbiAgICAgIGluXG4gICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIHVwZGF0ZV9wb3NfZnVsbF9saXN0IG5ld19wb3NfZmlsdGVyZWRfbGlzdCAhaW5kZXg7XG4gICAgICBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzO1xuICAgICAgbmV3X3Bvc19maWx0ZXJlZF9saXN0XG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfbW92ZSBmcm9tX2Z1bGxfbGlzdCB0b19mdWxsX2xpc3QgdG9fZmlsdGVyZWQgPVxuICAgICAgbGV0IHdhc192aXNpYmxlID0gbWF0Y2ggdG9fZmlsdGVyZWQgd2l0aCB8IFNvbWUgXyAtPiB0cnVlIHwgTm9uZSAtPiBmYWxzZSBpblxuICAgICAgbGV0IGZvcndhcmQgPSBmcm9tX2Z1bGxfbGlzdCA8IHRvX2Z1bGxfbGlzdCBpblxuICAgICAgaWYgZm9yd2FyZCB0aGVuXG4gICAgICAgIGZvciBpX2Z1bGwgPSBmcm9tX2Z1bGxfbGlzdCArIDEgdG8gdG9fZnVsbF9saXN0IGRvXG4gICAgICAgICAgbGV0IGRlbHRhID0gaWYgd2FzX3Zpc2libGUgdGhlbiAoLTEpIGVsc2UgMCBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGlfZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBpX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICBsZXQgbmV3X3ZhbCA9IGlfZmlsdGVyZWQgKyBkZWx0YSBpblxuICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoaV9mdWxsIC0gMSkgbmV3X3ZhbCAhaW5kZXhcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb3RfZm91bmQgLT4gKClcbiAgICAgICAgZG9uZVxuICAgICAgZWxzZVxuICAgICAgICBmb3IgaV9mdWxsID0gZnJvbV9mdWxsX2xpc3QgLSAxIGRvd250byB0b19mdWxsX2xpc3QgZG9cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBkZWx0YSA9IGlmIHdhc192aXNpYmxlIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgIGxldCBpX2ZpbHRlcmVkID0gSW50TWFwLmZpbmQgaV9mdWxsICFpbmRleCBpblxuICAgICAgICAgICAgbGV0IG5ld192YWwgPSBpX2ZpbHRlcmVkICsgZGVsdGEgaW5cbiAgICAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGlfZnVsbCArIDEpIG5ld192YWwgIWluZGV4XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm90X2ZvdW5kIC0+ICgpXG4gICAgICAgIGRvbmU7XG4gICAgICBtYXRjaCB0b19maWx0ZXJlZCB3aXRoXG4gICAgICB8IFNvbWUgdG9fZmlsdGVyZWQgLT5cbiAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdG9fZnVsbF9saXN0IHRvX2ZpbHRlcmVkICFpbmRleFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpbmRleCA6PSBJbnRNYXAucmVtb3ZlIHRvX2Z1bGxfbGlzdCAhaW5kZXhcbiAgICBpblxuXG4gICAgbGV0IGNvbnZlcnRfcCA9IGZ1bmN0aW9uXG4gICAgICB8IEkgKGksIHgpIC0+XG4gICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgbGV0IG15X2kgPSB1cGRhdGVfaW5kZXhfaW5zZXJ0IGkgdHJ1ZSBpblxuICAgICAgICAgICBbSSAobXlfaSwgeCldXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgaWdub3JlICh1cGRhdGVfaW5kZXhfaW5zZXJ0IGkgZmFsc2UpO1xuICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIGVuZFxuICAgICAgfCBSIGkgLT5cbiAgICAgICAgIGxldCBpID0gbm9ybWFsaXNlIGkgaW5cbiAgICAgICAgIGxldCByZXQgPSB0cnkgbGV0IGogPSBJbnRNYXAuZmluZCBpICFpbmRleCBpbiBbUiBqXSB3aXRoIHwgTm90X2ZvdW5kIC0+IFtdIGluXG4gICAgICAgICBsZXQgKCkgPSB1cGRhdGVfaW5kZXhfcmVtb3ZlIGkgaW5cbiAgICAgICAgIHJldFxuICAgICAgfCBVIChpLCB4KSAtPlxuICAgICAgICAgbGV0IGkgPSBub3JtYWxpc2UgaSBpblxuICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0IG9sZF9qID0gSW50TWFwLmZpbmQgaSAhaW5kZXggaW5cbiAgICAgICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgICAgICB0aGVuIFtVIChvbGRfaiwgeCldXG4gICAgICAgICAgICAgZWxzZSAodXBkYXRlX2luZGV4X3VwZGF0ZV9kZWxldGUgaTsgW1Igb2xkX2pdKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IG5ld19qID0gdXBkYXRlX2luZGV4X3VwZGF0ZV9pbnNlcnQgaSBpblxuICAgICAgICAgICAgICAgIFtJIChuZXdfaiwgeCldXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgZW5kXG4gICAgICB8IFggKG9yaWdpbl9mdWxsLCBvZmZzZXRfZnVsbCkgLT5cbiAgICAgICAgIGxldCBvcmlnaW5fZnVsbCA9IG5vcm1hbGlzZSBvcmlnaW5fZnVsbCBpblxuICAgICAgICAgbGV0IGRlc3RfZnVsbCA9IG9yaWdpbl9mdWxsICsgb2Zmc2V0X2Z1bGwgaW5cbiAgICAgICAgIHRyeVxuICAgICAgICAgICBsZXQgb3JpZ2luX2ZpbHRlcmVkID0gSW50TWFwLmZpbmQgb3JpZ2luX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgIGxldCBkZXN0X2ZpbHRlcmVkID1cbiAgICAgICAgICAgICB0cnkgSW50TWFwLmZpbmQgZGVzdF9mdWxsICFpbmRleFxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgIGxldCBzbWFsbF9vbmVzLCBfLCBfID0gSW50TWFwLnNwbGl0IG9yaWdpbl9mdWxsICFpbmRleCBpblxuICAgICAgICAgICAgICAgIGlmIEludE1hcC5pc19lbXB0eSBzbWFsbF9vbmVzXG4gICAgICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICAgICAgZWxzZSBzbmQgKEludE1hcC5tYXhfYmluZGluZyBzbWFsbF9vbmVzKSArIDFcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgdXBkYXRlX2luZGV4X21vdmUgb3JpZ2luX2Z1bGwgZGVzdF9mdWxsIChTb21lIGRlc3RfZmlsdGVyZWQpO1xuICAgICAgICAgICBpZiBkZXN0X2ZpbHRlcmVkICE9IG9yaWdpbl9maWx0ZXJlZFxuICAgICAgICAgICB0aGVuIFtYIChvcmlnaW5fZmlsdGVyZWQsIGRlc3RfZmlsdGVyZWQgLSBvcmlnaW5fZmlsdGVyZWQpXVxuICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgKCogbW92aW5nIGFuIGVsZW1lbnQgdGhhdCB3YXMgZmlsdGVyZWQgb3V0ICopXG4gICAgICAgICAgICB1cGRhdGVfaW5kZXhfbW92ZSBvcmlnaW5fZnVsbCBkZXN0X2Z1bGwgTm9uZTtcbiAgICAgICAgICAgIFtdXG4gICAgaW5cblxuICAgIGxldCBmaWx0ZXJfZSA9IGZ1bmN0aW9uXG4gICAgICB8IFNldCBsIC0+IFNldCAoZmlsdGVyX2xpc3QgbClcbiAgICAgIHwgUGF0Y2ggcCAtPlxuICAgICAgICAgUGF0Y2ggKExpc3QuY29uY2F0IChMaXN0Lm1hcCBjb252ZXJ0X3AgcCkpXG4gICAgaW5cbiAgICBsZXQgZSA9IFJlYWN0LkUubWFwIGZpbHRlcl9lIChldmVudCBsKSBpblxuICAgIGZyb21fZXZlbnQgKGZpbHRlcl9saXN0ICh2YWx1ZSBsKSkgZVxuXG4gIG1vZHVsZSBJbnRTZXQgPSBTZXQuTWFrZSAoSW50KVxuXG4gIGxldCBmb3JfYWxsIGZuIGRhdGEgPVxuICAgIGxldCBtYXliZV91cGRhdGUgYWNjIGkgdiA9IGlmIGZuIHYgdGhlbiBhY2MgZWxzZSBJbnRTZXQuYWRkIGkgYWNjIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbGV0IHJlYyBmb2xkIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCB2IDo6IHRsIC0+IGZvbGQgKGkgKyAxKSAobWF5YmVfdXBkYXRlIGFjYyBpIHYpIHRsXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgZm9sZCAwIEludFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9pZHhfYWZ0ZXIgaSBmIGFjYyA9XG4gICAgICBJbnRTZXQubWFwIChmdW4gaScgLT4gaWYgaScgPj0gaSB0aGVuIGYgaScgMSBlbHNlIGknKSBhY2NcbiAgICBpblxuICAgIGxldCBmID0gZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXQgeCAtPiBpbml0IHhcbiAgICAgIHwgUGF0Y2ggdXBkYXRlcyAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBYIChpLCBpJykgLT5cbiAgICAgICAgICAgICAgIGlmIEludFNldC5tZW0gaSBhY2MgPSBJbnRTZXQubWVtIGknIGFjY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgaWYgSW50U2V0Lm1lbSBpIGFjY1xuICAgICAgICAgICAgICAgdGhlbiBJbnRTZXQuYWRkIGknIChJbnRTZXQucmVtb3ZlIGkgYWNjKVxuICAgICAgICAgICAgICAgZWxzZSBJbnRTZXQuYWRkIGkgKEludFNldC5yZW1vdmUgaScgYWNjKVxuICAgICAgICAgICAgIHwgUiBpIC0+XG4gICAgICAgICAgICAgICB1cGRhdGVfaWR4X2FmdGVyIGkgKC0pIChJbnRTZXQucmVtb3ZlIGkgYWNjKVxuICAgICAgICAgICAgIHwgSSAoaSwgdikgLT5cbiAgICAgICAgICAgICAgIGxldCBhY2MgPSB1cGRhdGVfaWR4X2FmdGVyIGkgKCspIGFjYyBpblxuICAgICAgICAgICAgICAgbWF5YmVfdXBkYXRlIGFjYyBpIHZcbiAgICAgICAgICAgICB8IFUgKGksIHYpIC0+XG4gICAgICAgICAgICAgICBtYXliZV91cGRhdGUgKEludFNldC5yZW1vdmUgaSBhY2MpIGkgdilcbiAgICAgICAgICBhY2NcbiAgICAgICAgICB1cGRhdGVzXG4gICAgaW5cbiAgICBSZWFjdC5TLmZvbGQgZiAoaW5pdCAodmFsdWUgZGF0YSkpIChldmVudCBkYXRhKVxuICAgIHw+IFJlYWN0LlMubWFwIEludFNldC5pc19lbXB0eVxuXG5lbmRcblxubW9kdWxlIFJNYXAoTSA6IE1hcC5TKSA9IHN0cnVjdFxuXG4gIG1vZHVsZSBEYXRhID0gc3RydWN0XG5cbiAgICB0eXBlICdhIGRhdGEgPSAnYSBNLnRcblxuICAgIHR5cGUgJ2EgcCA9IFtgQWRkIG9mIChNLmtleSAqICdhKSB8IGBEZWwgb2YgTS5rZXldXG5cbiAgICB0eXBlICdhIHBhdGNoID0gJ2EgcCBsaXN0XG5cbiAgICBsZXQgbWVyZ2VfcCBwIHMgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IGBBZGQgKGssYSkgLT4gTS5hZGQgayBhIHNcbiAgICAgIHwgYERlbCBrIC0+IE0ucmVtb3ZlIGsgc1xuXG4gICAgbGV0IG1lcmdlIHAgYWNjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgcCAtPiBtZXJnZV9wIHAgYWNjKSBhY2MgcFxuXG4gICAgbGV0IG1hcF9wIGYgPSBmdW5jdGlvblxuICAgICAgfCBgQWRkIChrLGEpIC0+IGBBZGQgKGssZiBhKVxuICAgICAgfCBgRGVsIGsgLT4gYERlbCBrXG5cbiAgICBsZXQgbWFwX3BhdGNoIGYgPSBMaXN0Lm1hcCAobWFwX3AgZilcblxuICAgIGxldCBtYXBfZGF0YSBmIGQgPSBNLm1hcCBmIGRcblxuICAgIGxldCBlbXB0eSA9IE0uZW1wdHlcblxuICAgIGxldCBlcXVhbCBmID0gTS5lcXVhbCBmXG5cbiAgICBsZXQgZGlmZiB+ZXEgeCB5ID1cbiAgICAgIGxldCBtID1cbiAgICAgICAgbGV0IGcgX2tleSB2IHcgPVxuICAgICAgICAgIG1hdGNoIHYsIHcgd2l0aFxuICAgICAgICAgIHwgU29tZSB2LCBTb21lIHcgd2hlbiBlcSB2IHcgLT5cbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICB8IFNvbWUgXywgU29tZSB3IC0+XG4gICAgICAgICAgICBTb21lIChgVSB3KVxuICAgICAgICAgIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgICBTb21lIGBEXG4gICAgICAgICAgfCBOb25lLCBTb21lIHYgLT5cbiAgICAgICAgICAgIFNvbWUgKGBBIHYpXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+XG4gICAgICAgICAgICBOb25lXG4gICAgICAgIGluXG4gICAgICAgIE0ubWVyZ2UgZyB4IHlcbiAgICAgIGFuZCBnIGtleSB4IGFjYyA9XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IGBVIHYgLT5cbiAgICAgICAgICBgRGVsIGtleSA6OiBgQWRkIChrZXksIHYpIDo6IGFjY1xuICAgICAgICB8IGBEIC0+XG4gICAgICAgICAgYERlbCBrZXkgOjogYWNjXG4gICAgICAgIHwgYEEgdiAtPlxuICAgICAgICAgIGBBZGQgKGtleSwgdikgOjogYWNjXG4gICAgICBhbmQgYWNjID0gW10gaW5cbiAgICAgIExpc3QucmV2IChNLmZvbGQgZyBtIGFjYylcblxuICBlbmRcblxuICBpbmNsdWRlIE1ha2UoRGF0YSlcblxuICBsZXQgZmlsdGVyIHByZWQgbSA9XG5cbiAgICBsZXQgY29udmVydF9wID0gZnVuY3Rpb25cbiAgICAgIHwgYEFkZCAoayx2KSAtPlxuICAgICAgICAgaWYgcHJlZCBrIHZcbiAgICAgICAgIHRoZW4gW2BBZGQgKGssdildXG4gICAgICAgICBlbHNlIFtdXG4gICAgICB8IGBEZWwgayAtPiBbYERlbCBrXVxuICAgIGluXG5cbiAgICBsZXQgZmlsdGVyX2UgPSBmdW5jdGlvblxuICAgICAgfCBTZXQgbSAtPiBTZXQgKE0uZmlsdGVyIHByZWQgbSlcbiAgICAgIHwgUGF0Y2ggcCAtPiBQYXRjaCAoTGlzdC5jb25jYXQgKExpc3QubWFwIGNvbnZlcnRfcCBwKSlcbiAgICBpblxuXG4gICAgbGV0IGUgPSBSZWFjdC5FLm1hcCBmaWx0ZXJfZSAoZXZlbnQgbSkgaW5cbiAgICBmcm9tX2V2ZW50IChNLmZpbHRlciBwcmVkICh2YWx1ZSBtKSkgZVxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF90eXhtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLlR5eG1sX2Nhc3QgKilcbm1vZHVsZSBUeXhtbF9jYXN0ID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2Nhc3RcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuVHl4bWxfY2FzdF9zaWdzICopXG5tb2R1bGUgVHl4bWxfY2FzdF9zaWdzID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2Nhc3Rfc2lnc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5UeXhtbF9qcyAqKVxubW9kdWxlIFR5eG1sX2pzID0gSnNfb2Zfb2NhbWxfdHl4bWxfX1R5eG1sX2pzXG5cbm1vZHVsZSBKc19vZl9vY2FtbF90eXhtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGludCkgeSA9IHggPCB5XG5cbiAgbGV0ICggPD0gKSAoeCA6IGludCkgeSA9IHggPD0geVxuXG4gIGxldCAoIDw+ICkgKHggOiBpbnQpIHkgPSB4IDw+IHlcblxuICBsZXQgKCA9ICkgKHggOiBpbnQpIHkgPSB4ID0geVxuXG4gIGxldCAoID4gKSAoeCA6IGludCkgeSA9IHggPiB5XG5cbiAgbGV0ICggPj0gKSAoeCA6IGludCkgeSA9IHggPj0geVxuXG4gIGxldCBjb21wYXJlICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcblxuICBsZXQgZXF1YWwgKHggOiBpbnQpIHkgPSB4ID0geVxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIE1ha2VUbyAoQyA6IHNpZ1xuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBlbHQgOiAnYSBlbHQgLT4gRG9tLm5vZGUgSnMudFxuZW5kKSA6IFR5eG1sX2Nhc3Rfc2lncy5UTyB3aXRoIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBDLmVsdFxuXG4gIGxldCByZWJ1aWxkX25vZGUgXyB4ID0gSnMuVW5zYWZlLmNvZXJjZSAoQy5lbHQgeClcblxuICBsZXQgb2ZfZWxlbWVudCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbGVtZW50XCIgZWx0XG5cbiAgbGV0IG9mX25vZGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfbm9kZVwiIGVsdFxuXG4gIGxldCBvZl9wY2RhdGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGNkYXRhXCIgZWx0XG5cbiAgbGV0IG9mX2h0bWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHRtbFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRcIiBlbHRcblxuICBsZXQgb2ZfbGluayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saW5rXCIgZWx0XG5cbiAgbGV0IG9mX3RpdGxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpdGxlXCIgZWx0XG5cbiAgbGV0IG9mX21ldGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0YVwiIGVsdFxuXG4gIGxldCBvZl9iYXNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jhc2VcIiBlbHRcblxuICBsZXQgb2Zfc3R5bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3R5bGVcIiBlbHRcblxuICBsZXQgb2ZfYm9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2Zvcm0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9ybVwiIGVsdFxuXG4gIGxldCBvZl9vcHRncm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRncm91cFwiIGVsdFxuXG4gIGxldCBvZl9vcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NlbGVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWxlY3RcIiBlbHRcblxuICBsZXQgb2ZfaW5wdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5wdXRcIiBlbHRcblxuICBsZXQgb2ZfdGV4dGFyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGV4dGFyZWFcIiBlbHRcblxuICBsZXQgb2ZfYnV0dG9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2J1dHRvblwiIGVsdFxuXG4gIGxldCBvZl9sYWJlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sYWJlbFwiIGVsdFxuXG4gIGxldCBvZl9maWVsZHNldCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWVsZHNldFwiIGVsdFxuXG4gIGxldCBvZl9sZWdlbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGVnZW5kXCIgZWx0XG5cbiAgbGV0IG9mX3VsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VsXCIgZWx0XG5cbiAgbGV0IG9mX29sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29sXCIgZWx0XG5cbiAgbGV0IG9mX2RsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RsXCIgZWx0XG5cbiAgbGV0IG9mX2xpIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpXCIgZWx0XG5cbiAgbGV0IG9mX2RpdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaXZcIiBlbHRcblxuICBsZXQgb2ZfcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRpbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGluZ1wiIGVsdFxuXG4gIGxldCBvZl9ibG9ja3F1b3RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jsb2NrcXVvdGVcIiBlbHRcblxuICBsZXQgb2ZfcHJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ByZVwiIGVsdFxuXG4gIGxldCBvZl9iciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iclwiIGVsdFxuXG4gIGxldCBvZl9ociBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oclwiIGVsdFxuXG4gIGxldCBvZl9pbnMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5zXCIgZWx0XG5cbiAgbGV0IG9mX2RlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZWxcIiBlbHRcblxuICBsZXQgb2ZfYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hXCIgZWx0XG5cbiAgbGV0IG9mX2ltZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbWdcIiBlbHRcblxuICBsZXQgb2Zfb2JqZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29iamVjdFwiIGVsdFxuXG4gIGxldCBvZl9wYXJhbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhbVwiIGVsdFxuXG4gIGxldCBvZl9hcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FyZWFcIiBlbHRcblxuICBsZXQgb2ZfbWFwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcFwiIGVsdFxuXG4gIGxldCBvZl9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX3RkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RkXCIgZWx0XG5cbiAgbGV0IG9mX3RyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RyXCIgZWx0XG5cbiAgbGV0IG9mX2NvbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2xcIiBlbHRcblxuICBsZXQgb2ZfdGZvb3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGZvb3RcIiBlbHRcblxuICBsZXQgb2ZfdGhlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGhlYWRcIiBlbHRcblxuICBsZXQgb2ZfdGJvZHkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGJvZHlcIiBlbHRcblxuICBsZXQgb2ZfY2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlXCIgZWx0XG5cbiAgbGV0IG9mX2NhbnZhcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYW52YXNcIiBlbHRcblxuICBsZXQgb2ZfaWZyYW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lmcmFtZVwiIGVsdFxuXG4gIGxldCBvZl9hdWRpbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hdWRpb1wiIGVsdFxuXG4gIGxldCBvZl92aWRlbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92aWRlb1wiIGVsdFxuXG4gICgqIERvbV9odG1sLmhlYWRpbmdFbGVtZW50ICopXG5cbiAgbGV0IG9mX2gxIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gxXCIgZWx0XG5cbiAgbGV0IG9mX2gyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gyXCIgZWx0XG5cbiAgbGV0IG9mX2gzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gzXCIgZWx0XG5cbiAgbGV0IG9mX2g0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g0XCIgZWx0XG5cbiAgbGV0IG9mX2g1IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g1XCIgZWx0XG5cbiAgbGV0IG9mX2g2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g2XCIgZWx0XG5cbiAgKCogRG9tX2h0bWwuZWxlbWVudCAqKVxuXG4gIGxldCBvZl9hYmJyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FiYnJcIiBlbHRcblxuICBsZXQgb2ZfYWRkcmVzcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hZGRyZXNzXCIgZWx0XG5cbiAgbGV0IG9mX2FydGljbGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJ0aWNsZVwiIGVsdFxuXG4gIGxldCBvZl9hc2lkZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hc2lkZVwiIGVsdFxuXG4gIGxldCBvZl9iIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JcIiBlbHRcblxuICBsZXQgb2ZfYmRvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jkb1wiIGVsdFxuXG4gIGxldCBvZl9jaXRlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NpdGVcIiBlbHRcblxuICBsZXQgb2ZfY29kZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2RlXCIgZWx0XG5cbiAgbGV0IG9mX2NvbGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvbGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX2NvbW1hbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29tbWFuZFwiIGVsdFxuXG4gIGxldCBvZl9kYXRhbGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kYXRhbGlzdFwiIGVsdFxuXG4gIGxldCBvZl9kZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZFwiIGVsdFxuXG4gIGxldCBvZl9kZXRhaWxzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RldGFpbHNcIiBlbHRcblxuICBsZXQgb2ZfZGZuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RmblwiIGVsdFxuXG4gIGxldCBvZl9kdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kdFwiIGVsdFxuXG4gIGxldCBvZl9lbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbVwiIGVsdFxuXG4gIGxldCBvZl9lbWJlZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbWJlZFwiIGVsdFxuXG4gIGxldCBvZl9maWdjYXB0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZ2NhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfZmlndXJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZ3VyZVwiIGVsdFxuXG4gIGxldCBvZl9mb290ZXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9vdGVyXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRlciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkZXJcIiBlbHRcblxuICBsZXQgb2ZfaGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hncm91cFwiIGVsdFxuXG4gIGxldCBvZl9pIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lcIiBlbHRcblxuICBsZXQgb2Zfa2JkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2tiZFwiIGVsdFxuXG4gIGxldCBvZl9rZXlnZW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfa2V5Z2VuXCIgZWx0XG5cbiAgbGV0IG9mX21haW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFpblwiIGVsdFxuXG4gIGxldCBvZl9tYXJrIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcmtcIiBlbHRcblxuICBsZXQgb2ZfbWVudSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZW51XCIgZWx0XG5cbiAgbGV0IG9mX21ldGVyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21ldGVyXCIgZWx0XG5cbiAgbGV0IG9mX25hdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9uYXZcIiBlbHRcblxuICBsZXQgb2Zfbm9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfbm9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2Zfb3V0cHV0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX291dHB1dFwiIGVsdFxuXG4gIGxldCBvZl9wcm9ncmVzcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wcm9ncmVzc1wiIGVsdFxuXG4gIGxldCBvZl9xIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3FcIiBlbHRcblxuICBsZXQgb2ZfcnAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnBcIiBlbHRcblxuICBsZXQgb2ZfcnQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnRcIiBlbHRcblxuICBsZXQgb2ZfcnVieSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ydWJ5XCIgZWx0XG5cbiAgbGV0IG9mX3NhbXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2FtcFwiIGVsdFxuXG4gIGxldCBvZl9zZWN0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlY3Rpb25cIiBlbHRcblxuICBsZXQgb2Zfc21hbGwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc21hbGxcIiBlbHRcblxuICBsZXQgb2Zfc291cmNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NvdXJjZVwiIGVsdFxuXG4gIGxldCBvZl9zcGFuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NwYW5cIiBlbHRcblxuICBsZXQgb2Zfc3Ryb25nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N0cm9uZ1wiIGVsdFxuXG4gIGxldCBvZl9zdWIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3ViXCIgZWx0XG5cbiAgbGV0IG9mX3N1bW1hcnkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3VtbWFyeVwiIGVsdFxuXG4gIGxldCBvZl9zdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3VwXCIgZWx0XG5cbiAgbGV0IG9mX3RoIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RoXCIgZWx0XG5cbiAgbGV0IG9mX3RpbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGltZVwiIGVsdFxuXG4gIGxldCBvZl91IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VcIiBlbHRcblxuICBsZXQgb2ZfdmFyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZhclwiIGVsdFxuXG4gIGxldCBvZl93YnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfd2JyXCIgZWx0XG5lbmRcblxubW9kdWxlIE1ha2VPZiAoQyA6IHNpZ1xuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBlbHQgOiBEb20ubm9kZSBKcy50IC0+ICdhIGVsdFxuZW5kKSA6IFR5eG1sX2Nhc3Rfc2lncy5PRiB3aXRoIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBDLmVsdFxuXG4gIGxldCByZWJ1aWxkX25vZGUgXyB4ID0gQy5lbHQgKEpzLlVuc2FmZS5jb2VyY2UgeClcblxuICBsZXQgb2ZfZWxlbWVudCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbGVtZW50XCIgZWx0XG5cbiAgbGV0IG9mX2h0bWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHRtbFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRcIiBlbHRcblxuICBsZXQgb2ZfbGluayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saW5rXCIgZWx0XG5cbiAgbGV0IG9mX3RpdGxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpdGxlXCIgZWx0XG5cbiAgbGV0IG9mX21ldGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0YVwiIGVsdFxuXG4gIGxldCBvZl9iYXNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jhc2VcIiBlbHRcblxuICBsZXQgb2Zfc3R5bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3R5bGVcIiBlbHRcblxuICBsZXQgb2ZfYm9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2Zvcm0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9ybVwiIGVsdFxuXG4gIGxldCBvZl9vcHRHcm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRHcm91cFwiIGVsdFxuXG4gIGxldCBvZl9vcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NlbGVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWxlY3RcIiBlbHRcblxuICBsZXQgb2ZfaW5wdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5wdXRcIiBlbHRcblxuICBsZXQgb2ZfdGV4dEFyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGV4dEFyZWFcIiBlbHRcblxuICBsZXQgb2ZfYnV0dG9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2J1dHRvblwiIGVsdFxuXG4gIGxldCBvZl9sYWJlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sYWJlbFwiIGVsdFxuXG4gIGxldCBvZl9maWVsZFNldCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWVsZFNldFwiIGVsdFxuXG4gIGxldCBvZl9sZWdlbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGVnZW5kXCIgZWx0XG5cbiAgbGV0IG9mX3VMaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VMaXN0XCIgZWx0XG5cbiAgbGV0IG9mX29MaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29MaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2RMaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RMaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2xpIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpXCIgZWx0XG5cbiAgbGV0IG9mX2RpdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaXZcIiBlbHRcblxuICBsZXQgb2ZfcGFyYWdyYXBoIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFncmFwaFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkaW5nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRpbmdcIiBlbHRcblxuICBsZXQgb2ZfcXVvdGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcXVvdGVcIiBlbHRcblxuICBsZXQgb2ZfcHJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ByZVwiIGVsdFxuXG4gIGxldCBvZl9iciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iclwiIGVsdFxuXG4gIGxldCBvZl9ociBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oclwiIGVsdFxuXG4gIGxldCBvZl9tb2QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbW9kXCIgZWx0XG5cbiAgbGV0IG9mX2FuY2hvciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hbmNob3JcIiBlbHRcblxuICBsZXQgb2ZfaW1hZ2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW1hZ2VcIiBlbHRcblxuICBsZXQgb2Zfb2JqZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29iamVjdFwiIGVsdFxuXG4gIGxldCBvZl9wYXJhbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhbVwiIGVsdFxuXG4gIGxldCBvZl9hcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FyZWFcIiBlbHRcblxuICBsZXQgb2ZfbWFwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcFwiIGVsdFxuXG4gIGxldCBvZl9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX2VtYmVkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VtYmVkXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlQ2VsbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNlbGxcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVSb3cgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVSb3dcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVDb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDb2xcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVTZWN0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlU2VjdGlvblwiIGVsdFxuXG4gIGxldCBvZl90YWJsZUNhcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlXCIgZWx0XG5cbiAgbGV0IG9mX2NhbnZhcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYW52YXNcIiBlbHRcblxuICBsZXQgb2ZfaUZyYW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lGcmFtZVwiIGVsdFxuXG4gIGxldCBvZl9hdWRpbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hdWRpb1wiIGVsdFxuXG4gIGxldCBvZl92aWRlbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92aWRlb1wiIGVsdFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IGpzX3N0cmluZ19vZl9mbG9hdCBmID0gKEpzLm51bWJlcl9vZl9mbG9hdCBmKSMjdG9TdHJpbmdcblxubGV0IGpzX3N0cmluZ19vZl9pbnQgaSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgKGZsb2F0X29mX2ludCBpKSkjI3RvU3RyaW5nXG5cbm1vZHVsZSB0eXBlIFhNTCA9XG4gIFhtbF9zaWdzLlRcbiAgICB3aXRoIHR5cGUgdXJpID0gc3RyaW5nXG4gICAgIGFuZCB0eXBlIGV2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5ldmVudCBKcy50IC0+IGJvb2xcbiAgICAgYW5kIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCAtPiBib29sXG4gICAgIGFuZCB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50IEpzLnQgLT4gYm9vbFxuICAgICBhbmQgdHlwZSBlbHQgPSBEb20ubm9kZSBKcy50XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd2Vha01hcCA9IG9iamVjdFxuICBtZXRob2Qgc2V0IDogJ2EgLT4gJ2IgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGdldCA6ICdhIC0+ICdiIEpzLk9wdGRlZi50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcmV0YWluID1cbiAgbGV0IG1hcCA6IChEb20ubm9kZSBKcy50LCBPYmoudCBKcy5qc19hcnJheSBKcy50KSB3ZWFrTWFwIEpzLnQgPVxuICAgIGxldCB3ZWFrTWFwID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWFrTWFwIGluXG4gICAgbmV3JWpzIHdlYWtNYXBcbiAgaW5cbiAgZnVuICh0eXBlIGEpIG5vZGUgfihrZWVwbWUgOiBhKSAtPlxuICAgIGxldCBwcmV2ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlIChtYXAjI2dldCBub2RlKSAoZnVuICgpIC0+IG5ldyVqcyBKcy5hcnJheV9lbXB0eSkgKGZ1biB4IC0+IHgpXG4gICAgaW5cbiAgICBsZXQgKF8gOiBpbnQpID0gcHJldiMjcHVzaCAoT2JqLnJlcHIga2VlcG1lKSBpblxuICAgIG1hcCMjc2V0IG5vZGUgcHJldlxuXG5tb2R1bGUgWG1sID0gc3RydWN0XG4gIG1vZHVsZSBXID0gWG1sX3dyYXAuTm9XcmFwXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2FcblxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIGxpc3RcblxuICB0eXBlIHVyaSA9IHN0cmluZ1xuXG4gIGxldCB1cmlfb2Zfc3RyaW5nIHMgPSBzXG5cbiAgbGV0IHN0cmluZ19vZl91cmkgcyA9IHNcblxuICB0eXBlIGFuYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBldmVudF9oYW5kbGVyID0gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwubW91c2VFdmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLnRvdWNoRXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBhdHRyaWJfayA9XG4gICAgfCBFdmVudCBvZiBldmVudF9oYW5kbGVyXG4gICAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlX2V2ZW50X2hhbmRsZXJcbiAgICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRfZXZlbnRfaGFuZGxlclxuICAgIHwgVG91Y2hFdmVudCBvZiB0b3VjaF9ldmVudF9oYW5kbGVyXG4gICAgfCBBdHRyIG9mIEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbiBSZWFjdC5TLnRcblxuICB0eXBlIGF0dHJpYiA9IGFuYW1lICogYXR0cmliX2tcblxuICBsZXQgYXR0ciBuYW1lIHYgPSBuYW1lLCBBdHRyIChSZWFjdC5TLmNvbnN0IChTb21lIHYpKVxuXG4gIGxldCBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA6IGF0dHJpYiA9IGF0dHIgbmFtZSAoanNfc3RyaW5nX29mX2Zsb2F0IHZhbHVlKVxuXG4gIGxldCBpbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKGpzX3N0cmluZ19vZl9pbnQgdmFsdWUpXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIHZhbHVlKVxuXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgdmFsdWVzKSlcblxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiLFwiIHZhbHVlcykpXG5cbiAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDogZXZlbnRfaGFuZGxlcikgPSBuYW1lLCBFdmVudCB2YWx1ZVxuXG4gIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IG1vdXNlX2V2ZW50X2hhbmRsZXIpID1cbiAgICBuYW1lLCBNb3VzZUV2ZW50IHZhbHVlXG5cbiAgbGV0IGtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDoga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcikgPVxuICAgIG5hbWUsIEtleWJvYXJkRXZlbnQgdmFsdWVcblxuICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiB0b3VjaF9ldmVudF9oYW5kbGVyKSA9XG4gICAgbmFtZSwgVG91Y2hFdmVudCB2YWx1ZVxuXG4gIGxldCB1cmlfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyB2YWx1ZSlcblxuICBsZXQgdXJpc19hdHRyaWIgbmFtZSB2YWx1ZXMgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiB2YWx1ZXMpKVxuXG4gICgqKiBFbGVtZW50ICopXG5cbiAgdHlwZSBlbHQgPSBEb20ubm9kZSBKcy50XG5cbiAgdHlwZSBlbmFtZSA9IHN0cmluZ1xuXG4gIGxldCBlbXB0eSAoKSA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBjb21tZW50IGMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUNvbW1lbnQgKEpzLnN0cmluZyBjKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBwY2RhdGEgcyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBzKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBlbmNvZGVkcGNkYXRhIHMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgcykgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgZW50aXR5ID1cbiAgICBsZXQgc3RyaW5nX2ZvbGQgcyB+cG9zIH5pbml0IH5mID1cbiAgICAgIGxldCByID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gcG9zIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbGV0IGMgPSBzLltpXSBpblxuICAgICAgICByIDo9IGYgIXIgY1xuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgaW5cbiAgICBsZXQgaW52YWxpZF9lbnRpdHkgZSA9IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkludmFsaWQgZW50aXR5ICVTXCIgZSkgaW5cbiAgICBsZXQgaW50X29mX2NoYXIgPSBmdW5jdGlvblxuICAgICAgfCAnMCcgLi4gJzknIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgfCAnYScgLi4gJ2YnIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJ2EnICsgMTApXG4gICAgICB8ICdBJyAuLiAnRicgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnQScgKyAxMClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcGFyc2VfaW50IH5wb3MgfmJhc2UgZSA9XG4gICAgICBzdHJpbmdfZm9sZCBlIH5wb3MgfmluaXQ6MCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgICAgbWF0Y2ggaW50X29mX2NoYXIgeCB3aXRoXG4gICAgICAgICAgfCBTb21lIGQgd2hlbiBkIDwgYmFzZSAtPiAoYWNjICogYmFzZSkgKyBkXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGludmFsaWRfZW50aXR5IGUpXG4gICAgaW5cbiAgICBsZXQgaXNfYWxwaGFfbnVtID0gZnVuY3Rpb25cbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgZnVuIGUgLT5cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGUgaW5cbiAgICAgIGxldCBzdHIgPVxuICAgICAgICBpZiBsZW4gPj0gMSAmJiBDaGFyLmVxdWFsIGUuWzBdICcjJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgaWYgbGVuID49IDIgJiYgKENoYXIuZXF1YWwgZS5bMV0gJ3gnIHx8IENoYXIuZXF1YWwgZS5bMV0gJ1gnKVxuICAgICAgICAgICAgdGhlbiBwYXJzZV9pbnQgfnBvczoyIH5iYXNlOjE2IGVcbiAgICAgICAgICAgIGVsc2UgcGFyc2VfaW50IH5wb3M6MSB+YmFzZToxMCBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBKcy5zdHJpbmdfY29uc3RyIyNmcm9tQ2hhckNvZGUgaVxuICAgICAgICBlbHNlIGlmIHN0cmluZ19mb2xkIGUgfnBvczowIH5pbml0OnRydWUgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGlzIG5vdCBxdWl0ZSByaWdodCBhY2NvcmRpbmcgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cueG1sLmNvbS9heG1sL3RhcmdldC5odG1sI05ULU5hbWUuXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpdCBzZWVtcyB0byBjb3ZlciBhbGwgaHRtbDUgZW50aXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9kZXYudzMub3JnL2h0bWw1L2h0bWwtYXV0aG9yL2NoYXJyZWYgKilcbiAgICAgICAgICAgICAgICAgICAgYWNjICYmIGlzX2FscGhhX251bSB4KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBcInF1b3RcIiAtPiBKcy5zdHJpbmcgXCJcXFwiXCJcbiAgICAgICAgICB8IFwiYW1wXCIgLT4gSnMuc3RyaW5nIFwiJlwiXG4gICAgICAgICAgfCBcImFwb3NcIiAtPiBKcy5zdHJpbmcgXCInXCJcbiAgICAgICAgICB8IFwibHRcIiAtPiBKcy5zdHJpbmcgXCI8XCJcbiAgICAgICAgICB8IFwiZ3RcIiAtPiBKcy5zdHJpbmcgXCI+XCJcbiAgICAgICAgICB8IFwiXCIgLT4gaW52YWxpZF9lbnRpdHkgZVxuICAgICAgICAgIHwgXyAtPiBEb21faHRtbC5kZWNvZGVfaHRtbF9lbnRpdGllcyAoSnMuc3RyaW5nIChcIiZcIiBeIGUgXiBcIjtcIikpXG4gICAgICAgIGVsc2UgaW52YWxpZF9lbnRpdHkgZVxuICAgICAgaW5cbiAgICAgIChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgc3RyIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgKCogVE9ETzogZml4IGdldF9wcm9wXG4gICAgIGl0IG9ubHkgd29yayB3aGVuIGh0bWwgYXR0cmlidXRlIGFuZCBkb20gcHJvcGVydHkgbmFtZXMgY29ycmVzcG9uZC5cbiAgICAgZmluZCBhIHdheSB0byBnZXQgZG9tIHByb3BlcnR5IG5hbWUgY29ycmVzcG9uZGluZyB0byBodG1sIGF0dHJpYnV0ZVxuICAqKVxuXG4gIGxldCBnZXRfcHJvcCBub2RlIG5hbWUgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuZ2V0IG5vZGUgbmFtZSkgdGhlbiBTb21lIG5hbWUgZWxzZSBOb25lXG5cbiAgbGV0IGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuYW1lIGYgPVxuICAgIG1hdGNoIGdldF9wcm9wIG5vZGUgbmFtZSB3aXRoXG4gICAgfCBTb21lIG4gLT4gKCB0cnkgZiBuIHdpdGggXyAtPiAoKSlcbiAgICB8IE5vbmUgLT4gKClcblxuICBsZXQgYXR0YWNoX2F0dHJpYnMgbm9kZSBsID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKG4nLCBhdHQpIC0+XG4gICAgICAgIGxldCBuID0gSnMuc3RyaW5nIG4nIGluXG4gICAgICAgIG1hdGNoIGF0dCB3aXRoXG4gICAgICAgIHwgQXR0ciBhIC0+XG4gICAgICAgICAgICBsZXQgKGtlZXBtZSA6IHVuaXQgUmVhY3QuUy50KSA9XG4gICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWdub3JlIChub2RlIyNzZXRBdHRyaWJ1dGUgbiB2KTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBuJyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBcInN0eWxlXCIgLT4gbm9kZSMjLnN0eWxlIyMuY3NzVGV4dCA6PSB2XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuIChmdW4gbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG5hbWUgdikpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAobm9kZSMjcmVtb3ZlQXR0cmlidXRlIG4pO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG4nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFwic3R5bGVcIiAtPiBub2RlIyMuc3R5bGUjIy5jc3NUZXh0IDo9IEpzLnN0cmluZyBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuIChmdW4gbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG5hbWUgSnMubnVsbCkpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByZXRhaW4gKG5vZGUgOj4gRG9tLm5vZGUgSnMudCkgfmtlZXBtZVxuICAgICAgICB8IEV2ZW50IGggLT4gSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpXG4gICAgICAgIHwgTW91c2VFdmVudCBoIC0+XG4gICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSlcbiAgICAgICAgfCBLZXlib2FyZEV2ZW50IGggLT5cbiAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKVxuICAgICAgICB8IFRvdWNoRXZlbnQgaCAtPlxuICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpKVxuICAgICAgbFxuXG4gIGxldCBsZWFmID8oYSA9IFtdKSBuYW1lID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBjaGlsZHJlbiA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIExpc3QuaXRlciAoZnVuIGMgLT4gaWdub3JlIChlIyNhcHBlbmRDaGlsZCBjKSkgY2hpbGRyZW47XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgY2RhdGEgcyA9IHBjZGF0YSBzXG5cbiAgbGV0IGNkYXRhX3NjcmlwdCBzID0gY2RhdGEgc1xuXG4gIGxldCBjZGF0YV9zdHlsZSBzID0gY2RhdGEgc1xuZW5kXG5cbm1vZHVsZSBYbWxfU3ZnID0gc3RydWN0XG4gIGluY2x1ZGUgWG1sXG5cbiAgbGV0IGxlYWYgPyhhID0gW10pIG5hbWUgPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnROUyBEb21fc3ZnLnhtbG5zIChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBjaGlsZHJlbiA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBjIC0+IGlnbm9yZSAoZSMjYXBwZW5kQ2hpbGQgYykpIGNoaWxkcmVuO1xuICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5lbmRcblxubW9kdWxlIFN2ZyA9IFN2Z19mLk1ha2UgKFhtbF9TdmcpXG5tb2R1bGUgSHRtbCA9IEh0bWxfZi5NYWtlIChYbWwpIChTdmcpXG5tb2R1bGUgSHRtbDUgPSBIdG1sXG5cbm1vZHVsZSBUb19kb20gPSBUeXhtbF9jYXN0Lk1ha2VUbyAoc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgSHRtbC5lbHRcblxuICBsZXQgZWx0ID0gSHRtbC50b2VsdFxuZW5kKVxuXG5tb2R1bGUgT2ZfZG9tID0gVHl4bWxfY2FzdC5NYWtlT2YgKHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEh0bWwuZWx0XG5cbiAgbGV0IGVsdCA9IEh0bWwudG90XG5lbmQpXG5cbm1vZHVsZSBSZWdpc3RlciA9IHN0cnVjdFxuICBsZXQgcmVtb3ZlQ2hpbGRyZW4gKG5vZGUgOiAjRG9tLmVsZW1lbnQgSnMudCkgPVxuICAgIGxldCBsID0gbm9kZSMjLmNoaWxkTm9kZXMgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCMjLmxlbmd0aCAtIDEgZG9cbiAgICAgIEpzLk9wdC5pdGVyIChsIyNpdGVtIGkpIChmdW4geCAtPiBpZ25vcmUgKG5vZGUjI3JlbW92ZUNoaWxkIHgpKVxuICAgIGRvbmVcblxuICBsZXQgYWRkX3RvID8oa2VlcCA9IHRydWUpIG5vZGUgY29udGVudCA9XG4gICAgaWYgbm90IGtlZXAgdGhlbiByZW1vdmVDaGlsZHJlbiBub2RlO1xuICAgIExpc3QuaXRlciAoZnVuIHggLT4gRG9tLmFwcGVuZENoaWxkIG5vZGUgKFRvX2RvbS5vZl9lbGVtZW50IHgpKSBjb250ZW50XG5cbiAgbGV0IGlkID9rZWVwIGlkIGNvbnRlbnQgPVxuICAgIGxldCBub2RlID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgaWQgaW5cbiAgICBhZGRfdG8gP2tlZXAgbm9kZSBjb250ZW50XG5cbiAgbGV0IGJvZHkgP2tlZXAgY29udGVudCA9IGFkZF90byA/a2VlcCBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgY29udGVudFxuXG4gIGxldCBoZWFkID9rZWVwIGNvbnRlbnQgPSBhZGRfdG8gP2tlZXAgRG9tX2h0bWwuZG9jdW1lbnQjIy5oZWFkIGNvbnRlbnRcblxuICBsZXQgaHRtbCA/aGVhZCBib2R5ID1cbiAgICAobWF0Y2ggaGVhZCB3aXRoXG4gICAgfCBTb21lIGggLT4gRG9tX2h0bWwuZG9jdW1lbnQjIy5oZWFkIDo9IFRvX2RvbS5vZl9oZWFkIGhcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSA6PSBUb19kb20ub2ZfYm9keSBib2R5O1xuICAgICgpXG5lbmRcblxubW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgUmVhY3Quc2lnbmFsXG5cbiAgdHlwZSAnYSB0bGlzdCA9ICdhIFJlYWN0aXZlRGF0YS5STGlzdC50XG5cbiAgdHlwZSAoJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG5cbiAgbGV0IHJldHVybiA9IFJlYWN0LlMuY29uc3RcblxuICBsZXQgZm1hcCBmID0gUmVhY3QuUy5tYXAgZlxuXG4gIGxldCBuaWwgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcblxuICBsZXQgc2luZ2xldG9uID0gUmVhY3RpdmVEYXRhLlJMaXN0LnNpbmdsZXRvbl9zXG5cbiAgbGV0IGNvbnMgeCB4cyA9IFJlYWN0aXZlRGF0YS5STGlzdC5jb25jYXQgKHNpbmdsZXRvbiB4KSB4c1xuXG4gIGxldCBtYXAgZiA9IFJlYWN0aXZlRGF0YS5STGlzdC5tYXAgZlxuXG4gIGxldCBhcHBlbmQgeCB5ID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdCB4IHlcbmVuZFxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuICBvcGVuIFJlYWN0aXZlRGF0YVxuICBvcGVuIFJMaXN0XG5cbiAgbGV0IGluc2VydEF0IGRvbSBpIHggPVxuICAgIGxldCBub2RlcyA9IGRvbSMjLmNoaWxkTm9kZXMgaW5cbiAgICBhc3NlcnQgKGkgPD0gbm9kZXMjIy5sZW5ndGgpO1xuICAgIGlmIGkgPSBub2RlcyMjLmxlbmd0aFxuICAgIHRoZW4gaWdub3JlIChkb20jI2FwcGVuZENoaWxkICh4IDo+IERvbS5ub2RlIEpzLnQpKVxuICAgIGVsc2UgaWdub3JlIChkb20jI2luc2VydEJlZm9yZSB4IChub2RlcyMjaXRlbSBpKSlcblxuICBsZXQgbWVyZ2Vfb25lX3BhdGNoIChkb20gOiBEb20ubm9kZSBKcy50KSAocCA6IERvbS5ub2RlIEpzLnQgcCkgPVxuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwgSSAoaSwgeCkgLT5cbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyAxICsgaSBlbHNlIGkgaW5cbiAgICAgICAgaW5zZXJ0QXQgZG9tIGkgeFxuICAgIHwgUiBpIC0+XG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgaSBlbHNlIGkgaW5cbiAgICAgICAgbGV0IG5vZGVzID0gZG9tIyMuY2hpbGROb2RlcyBpblxuICAgICAgICBhc3NlcnQgKGkgPj0gMCAmJiBpIDwgbm9kZXMjIy5sZW5ndGgpO1xuICAgICAgICBKcy5PcHQuaXRlciAobm9kZXMjI2l0ZW0gaSkgKGZ1biBuIC0+IERvbS5yZW1vdmVDaGlsZCBkb20gbilcbiAgICB8IFUgKGksIHgpIC0+IChcbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyBpIGVsc2UgaSBpblxuICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIChkb20jIy5jaGlsZE5vZGVzIyNpdGVtIGkpIHdpdGhcbiAgICAgICAgfCBTb21lIG9sZCAtPiBpZ25vcmUgKGRvbSMjcmVwbGFjZUNoaWxkIHggb2xkKVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgWCAoaSwgbW92ZSkgLT4gKFxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIGkgZWxzZSBpIGluXG4gICAgICAgIGlmIG1vdmUgPSAwXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gKGRvbSMjLmNoaWxkTm9kZXMjI2l0ZW0gaSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBpJyAtPiBpbnNlcnRBdCBkb20gKGkgKyBpZiBtb3ZlID4gMCB0aGVuIG1vdmUgKyAxIGVsc2UgbW92ZSkgaSdcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCByZWMgcmVtb3ZlQ2hpbGRyZW4gZG9tID1cbiAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIGRvbSMjLmxhc3RDaGlsZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGMgLT5cbiAgICAgICAgaWdub3JlIChkb20jI3JlbW92ZUNoaWxkIGMpO1xuICAgICAgICByZW1vdmVDaGlsZHJlbiBkb21cblxuICBsZXQgbWVyZ2VfbXNnIChkb20gOiBEb20ubm9kZSBKcy50KSAobXNnIDogRG9tLm5vZGUgSnMudCBtc2cpID1cbiAgICBtYXRjaCBtc2cgd2l0aFxuICAgIHwgU2V0IGwgLT5cbiAgICAgICAgKCogRm9ybWF0LmVwcmludGYgXCJyZXBsYWNlIGFsbEAuXCI7ICopXG4gICAgICAgIHJlbW92ZUNoaWxkcmVuIGRvbTtcbiAgICAgICAgTGlzdC5pdGVyIChmdW4gbCAtPiBpZ25vcmUgKGRvbSMjYXBwZW5kQ2hpbGQgbCkpIGxcbiAgICB8IFBhdGNoIHAgLT5cbiAgICAgICAgKCogRm9ybWF0LmVwcmludGYgXCJwYXRjaEAuXCI7ICopXG4gICAgICAgIExpc3QuaXRlciAobWVyZ2Vfb25lX3BhdGNoIGRvbSkgcFxuXG4gIGxldCB1cGRhdGVfY2hpbGRyZW4gKGRvbSA6IERvbS5ub2RlIEpzLnQpIChub2RlcyA6IERvbS5ub2RlIEpzLnQgdCkgPVxuICAgIHJlbW92ZUNoaWxkcmVuIGRvbTtcbiAgICBsZXQga2VlcG1lIDogdW5pdCBSZWFjdC5TLnQgPSBmb2xkIChmdW4gKCkgbXNnIC0+IG1lcmdlX21zZyBkb20gbXNnKSBub2RlcyAoKSBpblxuICAgIHJldGFpbiAoZG9tIDogRG9tLm5vZGUgSnMudCkgfmtlZXBtZTtcbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBSID0gc3RydWN0XG4gIGxldCBmaWx0ZXJfYXR0cmliIChuYW1lLCBhKSBvbiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBYbWwuRXZlbnQgXyB8IFhtbC5Nb3VzZUV2ZW50IF8gfCBYbWwuS2V5Ym9hcmRFdmVudCBfIHwgWG1sLlRvdWNoRXZlbnQgXyAtPlxuICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpbHRlcl9hdHRyaWIgbm90IGltcGxlbWVudGVkIGZvciBldmVudCBoYW5kbGVyXCIpXG4gICAgfCBYbWwuQXR0ciBhIC0+IG5hbWUsIFhtbC5BdHRyIChSZWFjdC5TLmwyIChmdW4gb24gYSAtPiBpZiBvbiB0aGVuIGEgZWxzZSBOb25lKSBvbiBhKVxuXG4gIGxldCBhdHRhY2hfYXR0cmlicyA9IFhtbC5hdHRhY2hfYXR0cmlic1xuXG4gIG1vZHVsZSBYbWwgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVyA9IFdyYXBcblxuICAgIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuXG4gICAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgICB0eXBlIHVyaSA9IFhtbC51cmlcblxuICAgIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcblxuICAgIGxldCB1cmlfb2Zfc3RyaW5nID0gWG1sLnVyaV9vZl9zdHJpbmdcblxuICAgIHR5cGUgYW5hbWUgPSBYbWwuYW5hbWVcblxuICAgIHR5cGUgZXZlbnRfaGFuZGxlciA9IFhtbC5ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICAgIGxldCBhdHRyIG5hbWUgZiBzID1cbiAgICAgIGxldCBhID0gVy5mbWFwIGYgcyBpblxuICAgICAgbmFtZSwgWG1sLkF0dHIgYVxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKGpzX3N0cmluZ19vZl9mbG9hdCBmKSkgc1xuXG4gICAgbGV0IGludF9hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChqc19zdHJpbmdfb2ZfaW50IGYpKSBzXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyBmKSkgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSBzID1cbiAgICAgIGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIGYpKSkgc1xuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgbmFtZSBzID1cbiAgICAgIGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiLFwiIGYpKSkgc1xuXG4gICAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IHRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCB1cmlfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIGYpKSBzXG5cbiAgICBsZXQgdXJpc19hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgZikpKSBzXG5cbiAgICB0eXBlIGVsdCA9IFhtbC5lbHRcblxuICAgIHR5cGUgZW5hbWUgPSBYbWwuZW5hbWVcblxuICAgIGxldCBlbXB0eSA9IFhtbC5lbXB0eVxuXG4gICAgbGV0IGNvbW1lbnQgPSBYbWwuY29tbWVudFxuXG4gICAgbGV0IHBjZGF0YSBzID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgXCJcIikgaW5cbiAgICAgIGxldCBrZWVwbWUgPSBSZWFjdC5TLm1hcCAoZnVuIHMgLT4gZSMjLmRhdGEgOj0gSnMuc3RyaW5nIHMpIHMgaW5cbiAgICAgIHJldGFpbiAoZSA6PiBEb20ubm9kZSBKcy50KSB+a2VlcG1lO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICAgIGxldCBlbmNvZGVkcGNkYXRhIHMgPSBwY2RhdGEgc1xuXG4gICAgbGV0IGVudGl0eSBzID0gWG1sLmVudGl0eSBzXG5cbiAgICBsZXQgbGVhZiA9IFhtbC5sZWFmXG5cbiAgICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBsID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgICAgVXRpbC51cGRhdGVfY2hpbGRyZW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgbDtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgICBsZXQgY2RhdGEgPSBYbWwuY2RhdGFcblxuICAgIGxldCBjZGF0YV9zY3JpcHQgPSBYbWwuY2RhdGFfc2NyaXB0XG5cbiAgICBsZXQgY2RhdGFfc3R5bGUgPSBYbWwuY2RhdGFfc3R5bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFhtbF9TdmcgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhtbFxuXG4gICAgbGV0IGxlYWYgPSBYbWxfU3ZnLmxlYWZcblxuICAgIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGwgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgICAgVXRpbC51cGRhdGVfY2hpbGRyZW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgbDtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG4gIGVuZFxuXG4gIG1vZHVsZSBTdmcgPSBTdmdfZi5NYWtlIChYbWxfU3ZnKVxuICBtb2R1bGUgSHRtbCA9IEh0bWxfZi5NYWtlIChYbWwpIChTdmcpXG4gIG1vZHVsZSBIdG1sNSA9IEh0bWxcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIHByZXYgOiAnYSB0O1xuICBtdXRhYmxlIG5leHQgOiAnYSB0O1xufVxuXG50eXBlICdhIG5vZGUgPSB7XG4gIG5vZGVfcHJldiA6ICdhIHQ7XG4gIG5vZGVfbmV4dCA6ICdhIHQ7XG4gIG11dGFibGUgbm9kZV9kYXRhIDogJ2E7XG4gIG11dGFibGUgbm9kZV9hY3RpdmUgOiBib29sO1xufVxuXG5leHRlcm5hbCBzZXFfb2Zfbm9kZSA6ICdhIG5vZGUgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG5vZGVfb2Zfc2VxIDogJ2EgdCAtPiAnYSBub2RlID0gXCIlaWRlbnRpdHlcIlxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wZXJhdGlvbnMgb24gbm9kZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBnZXQgbm9kZSA9XG4gIG5vZGUubm9kZV9kYXRhXG5cbmxldCBzZXQgbm9kZSBkYXRhID1cbiAgbm9kZS5ub2RlX2RhdGEgPC0gZGF0YVxuXG5sZXQgcmVtb3ZlIG5vZGUgPVxuICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBub2RlLm5vZGVfYWN0aXZlIDwtIGZhbHNlO1xuICAgIGxldCBzZXEgPSBzZXFfb2Zfbm9kZSBub2RlIGluXG4gICAgc2VxLnByZXYubmV4dCA8LSBzZXEubmV4dDtcbiAgICBzZXEubmV4dC5wcmV2IDwtIHNlcS5wcmV2XG4gIGVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wZXJhdGlvbnMgb24gc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgcmVjIHNlcSA9IHsgcHJldiA9IHNlcTsgbmV4dCA9IHNlcSB9IGluXG4gIHNlcVxuXG5sZXQgY2xlYXIgc2VxID1cbiAgc2VxLnByZXYgPC0gc2VxO1xuICBzZXEubmV4dCA8LSBzZXFcblxubGV0IGlzX2VtcHR5IHNlcSA9IHNlcS5uZXh0ID09IHNlcVxuXG5sZXQgbGVuZ3RoIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyIGxlbiA9XG4gICAgaWYgY3VyciA9PSBzZXEgdGhlblxuICAgICAgbGVuXG4gICAgZWxzZVxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluIGxvb3Agbm9kZS5ub2RlX25leHQgKGxlbiArIDEpXG4gIGluXG4gIGxvb3Agc2VxLm5leHQgMFxuXG5sZXQgYWRkX2wgZGF0YSBzZXEgPVxuICBsZXQgbm9kZSA9IHsgbm9kZV9wcmV2ID0gc2VxOyBub2RlX25leHQgPSBzZXEubmV4dDsgbm9kZV9kYXRhID0gZGF0YTsgbm9kZV9hY3RpdmUgPSB0cnVlIH0gaW5cbiAgc2VxLm5leHQucHJldiA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBzZXEubmV4dCA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBub2RlXG5cbmxldCBhZGRfciBkYXRhIHNlcSA9XG4gIGxldCBub2RlID0geyBub2RlX3ByZXYgPSBzZXEucHJldjsgbm9kZV9uZXh0ID0gc2VxOyBub2RlX2RhdGEgPSBkYXRhOyBub2RlX2FjdGl2ZSA9IHRydWUgfSBpblxuICBzZXEucHJldi5uZXh0IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIHNlcS5wcmV2IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIG5vZGVcblxubGV0IHRha2VfbCBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIHJhaXNlIEVtcHR5XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5uZXh0IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX3Igc2VxID1cbiAgaWYgaXNfZW1wdHkgc2VxIHRoZW5cbiAgICByYWlzZSBFbXB0eVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEucHJldiBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9vcHRfbCBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLm5leHQgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBTb21lIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9vcHRfciBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLnByZXYgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBTb21lIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdHJhbnNmZXJfbCBzMSBzMiA9XG4gIHMyLm5leHQucHJldiA8LSBzMS5wcmV2O1xuICBzMS5wcmV2Lm5leHQgPC0gczIubmV4dDtcbiAgczIubmV4dCA8LSBzMS5uZXh0O1xuICBzMS5uZXh0LnByZXYgPC0gczI7XG4gIHMxLnByZXYgPC0gczE7XG4gIHMxLm5leHQgPC0gczFcblxubGV0IHRyYW5zZmVyX3IgczEgczIgPVxuICBzMi5wcmV2Lm5leHQgPC0gczEubmV4dDtcbiAgczEubmV4dC5wcmV2IDwtIHMyLnByZXY7XG4gIHMyLnByZXYgPC0gczEucHJldjtcbiAgczEucHJldi5uZXh0IDwtIHMyO1xuICBzMS5wcmV2IDwtIHMxO1xuICBzMS5uZXh0IDwtIHMxXG5cbmxldCBpdGVyX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlLm5vZGVfZGF0YTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgaXRlcl9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZS5ub2RlX2RhdGE7XG4gICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGl0ZXJfbm9kZV9sIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgaXRlcl9ub2RlX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlO1xuICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBmb2xkX2wgZiBzZXEgYWNjID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgYWNjID1cbiAgICBpZiBjdXJyID09IHNlcSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0IChmIG5vZGUubm9kZV9kYXRhIGFjYylcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dCBhY2NcbiAgaW5cbiAgbG9vcCBzZXEubmV4dCBhY2NcblxubGV0IGZvbGRfciBmIHNlcSBhY2MgPVxuICBsZXQgcmVjIGxvb3AgY3VyciBhY2MgPVxuICAgIGlmIGN1cnIgPT0gc2VxIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXYgKGYgbm9kZS5ub2RlX2RhdGEgYWNjKVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2IGFjY1xuICBpblxuICBsb29wIHNlcS5wcmV2IGFjY1xuXG5sZXQgZmluZF9ub2RlX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgaWYgZiBub2RlLm5vZGVfZGF0YSB0aGVuXG4gICAgICAgICAgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgZWxzZVxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIGluXG4gIGxvb3Agc2VxLm5leHRcblxubGV0IGZpbmRfbm9kZV9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGlmIGYgbm9kZS5ub2RlX2RhdGEgdGhlblxuICAgICAgICAgIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVsc2VcbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBmaW5kX25vZGVfb3B0X2wgZiBzZXEgPVxuICB0cnkgU29tZSAoZmluZF9ub2RlX2wgZiBzZXEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxubGV0IGZpbmRfbm9kZV9vcHRfciBmIHNlcSA9XG4gIHRyeSBTb21lIChmaW5kX25vZGVfciBmIHNlcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBSZWFkaW5nIGd1aWRlXG5cbiAgIFdlbGNvbWUgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMd3QgY29yZSEgVGhpcyBpcyBhIGJpZyBmaWxlLCBidXQgd2VcbiAgIGhvcGUgdGhhdCByZWFkaW5nIGl0IChwYXJ0cyBhdCBhIHRpbWUhKSB3aWxsIG5vdCBiZSBzY2FyeSA6KSBIZXJlIGlzIHdoeTpcblxuXG4gICAqIFNlY3Rpb25pbmdcblxuICAgVGhlIGNvZGUgaXMgYnJva2VuIHVwIGludG8gc2VjdGlvbnMsIGVhY2ggb25lIG9mIHdoaWNoIGlzIGFuIGludGVybmFsIG1vZHVsZS5cbiAgIE1vc3Qgb2YgdGhlIG1vZHVsZXMgaGF2ZSBhIHNpZ25hdHVyZSwgd2hpY2ggc2VydmVzIGFzIGEgbmVhdCB0YWJsZSBvZlxuICAgY29udGVudHMuXG5cbiAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYWQgdGhpcyBmaWxlIHdpdGggY29kZSBmb2xkaW5nIGVuYWJsZWQuIElmIHlvdVxuICAgZm9sZCBhbGwgdGhlIG1vZHVsZXMsIHlvdSBjYW4gdmlzdWFsaXplIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiBMd3QgcXVpdGVcbiAgIGVhc2lseS4gWW91IGNhbiB0aGVuIGV4cGFuZCBtb2R1bGVzIGFzIG5lZWRlZCwgZGVwZW5kaW5nIG9uIHdoYXQgcGFydCBvZiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIHlvdSBhcmUgaW50ZXJlc3RlZCBpbi4gV2l0aG91dCBjb2RlIGZvbGRpbmcsIHlvdSBmYWNlIGFuXG4gICBpbnRpbWlkYXRpbmcgd2FsbCBvZiBjb2RlIDooIFlvdSBjYW4gc3RpbGwgdmlzdWFsbHkgcGFyc2UgdGhlIGZpbGUsIGhvd2V2ZXIsXG4gICBiZWNhdXNlIHRoZXJlIGFyZSBwbGVudHkgb2YgYmxhbmsgbGluZXMgdG8gaGVscCBzZWN0aW9uIHRoaW5ncyBvZmYuIFlvdSBjYW5cbiAgIGFsc28gdmlldyB0aGlzIGZpbGUgZm9sZGVkIG9ubGluZTpcblxuICAgICBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9hYW50cm9uLzlmYWIwYmRlYWQ5OGE2MGZjY2YwNmUwMTg5MTg2ODYzXG4gICAgIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FhbnRyb24vOTdiNTg1MjBkNWJiNDg1OGNjYWM2ZjU0NzAwYTI0ZDdcblxuICAgVGhlIHNpZ25hdHVyZXMgYXJlIHVudXN1YWw6IGJpZyBjb21tZW50cyBhcmUgYWJzZW50LiBUaGV5IGFyZSBtb3ZlZCBpbnRvIHRoZVxuICAgbW9kdWxlcywgc28gdGhhdCB0aGV5IGFyZSBoaWRkZW4gYnkgY29kZSBmb2xkaW5nIHdoZW4geW91ICh0aGUgcmVhZGVyISkgYXJlXG4gICBub3QgaW50ZXJlc3RlZCBpbiB0aG9zZSBtb2R1bGVzLlxuXG5cbiAgICogRG9jdW1lbnRhdGlvblxuXG4gICBUaGUgZG9jdW1lbnRhdGlvbiBiZWdpbnMgd2l0aCBhbiBvdmVydmlldyBvZiBtYWpvciBjb25jZXB0cyBhbmQgY29tcG9uZW50cy5cbiAgIFRoaXMgb3ZlcnZpZXcgcHV0cyBldmVyeXRoaW5nIGludG8gY29udGV4dC4gWW91IGRvbid0IGhhdmUgdG8gcmVhZCB0aGUgd2hvbGVcbiAgIHRoaW5nLiBUaGUgb3ZlcnZpZXcgYmVnaW5zIHdpdGggYmFzaWMgY29uY2VwdHMsIG1vdmVzIG9uIHRvIGFkdmFuY2VkIG9uZXMsXG4gICBhbmQgdGhlbiBnZXRzIGludG8gdGhlIHRydWx5IGVzb3RlcmljLiBZb3UgY2FuIHJlYWQgYWJvdXQgZWFjaCBjb25jZXB0IG9uIGFuXG4gICBhcy1uZWVkZWQgYmFzaXMuIEhvd2V2ZXIsIG9uY2UgeW91IGhhdmUgcmVhZCB0aGUgd2hvbGUgb3ZlcnZpZXcsIHlvdSB3aWxsIGJlXG4gICBhd2FyZSBvZiAqZXZlcnl0aGluZyogdGhhdCBpcyBuZWVkZWQgdG8gdW5kZXJzdGFuZCwgYW5kIHdvcmsgd2l0aCwgdGhlIGNvcmVcbiAgIG9mIEx3dC5cblxuICAgTGl0dGVyZWQgaW4gdGhlIGNvZGUgYXJlIGFkZGl0aW9uYWwgY29tbWVudHMsIHRoYXQgZ28gaW4tZGVwdGggb24gdmFyaW91c1xuICAgbG9jYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscywgb3Bwb3J0dW5pdGllcywgcmVncmV0cywgYW5kIHRoZSBsaWtlLlxuXG4gICBUaGUgc2VjdGlvbnMgKG1vZHVsZXMpIG9mIHRoZSBjb2RlIGNvcnJlc3BvbmQgY2xvc2VseSB0byBzZWN0aW9ucyBvZiB0aGVcbiAgIG92ZXJ2aWV3LlxuXG5cbiAgICogV2hpdGVzcGFjZVxuXG4gICBUaGUgdG90YWwgbGluZSBjb3VudCBvZiB0aGlzIGZpbGUgbWF5IHNlZW0gZnJpZ2h0ZW5pbmcsIGJ1dCBvbmUgdGhpcmQgb2YgaXRcbiAgIGlzIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzLCBib3RoIHRoZXJlIHRvIGhlbHAgeW91IHJlYWQgdGhlIHJlbWFpbmluZyB0d29cbiAgIHRoaXJkcyFcblxuICAgQWxzbywgd2l0aGluIHRob3NlIHR3byB0aGlyZHMsIHRoZXJlIGFyZSBsYXJnZSBncm91cHMgb2YgZnVuY3Rpb25zIHRoYXQgYXJlXG4gICByZXBldGl0aXZlIGFuZCBmb3JtdWxhaWMsIHNvIHRoZXJlIGlzIG11Y2ggbGVzcyBjb25jZXB0dWFsbHktdW5pcXVlIGNvZGUgaW5cbiAgIEx3dCB0aGFuIHlvdSBtaWdodCB0aGluayBhdCBmaXJzdC5cblxuXG4gICAqIFBsZWFzZSBlZGl0IHRoZSBjb2RlIGFuZCB0aGUgZG9jcyFcblxuICAgVGhpcyBjb2RlIGlzIG1lYW50IHRvIGJlIHJlYWRhYmxlLCBhbmQgdG8gYmUgZWRpdGVkLiBJZiB5b3UgYXJlIHJlYWRpbmdcbiAgIHNvbWV0aGluZywgYW5kIHRoaW5rIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBleHByZXNzIGl0LCBwbGVhc2UgZ28gYWhlYWQgYW5kXG4gICBvcGVuIGEgcHVsbCByZXF1ZXN0IHRvIHRoZSBMd3QgcmVwb3NpdG9yeSBhdFxuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dFxuXG4gICBFdmVuIGlmIHlvdXIgcHVsbCByZXF1ZXN0IHNvbWVob3cgZG9lc24ndCBnZXQgbWVyZ2VkLCB5b3Ugd2lsbCBoYXZlIGVkdWNhdGVkXG4gICB0aGUgbWFpbnRhaW5lcnMsIG5vdCB0byBtZW50aW9uIG90aGVyIGNvbnRyaWJ1dG9ycywgYW5kIHVzZXJzLiBUaGlzIGlzIHRydWVcbiAgIGV2ZW4gaWYgdGhlIGNoYW5nZSBpcyB0cml2aWFsIC0tIHNvbWV0aW1lcywgbWFpbnRhaW5lcnMganVzdCBuZWVkIHRvIGJlXG4gICBlZHVjYXRlZCBtdWx0aXBsZSB0aW1lcyBiZWZvcmUgdGhleSBzZWUgdGhlIHdpc2RvbSBvZiBpdCA6L1xuXG4gICBMaWtld2lzZSwgaWYgeW91IHdvdWxkIGxpa2UgdG8gbWFrZSBhIGNvZGUgY29udHJpYnV0aW9uIHRvIHRoZSBMd3QgY29yZSwgaXRcbiAgIGlzIHF1aXRlIHdlbGNvbWUsIGFuZCB3ZSBob3BlIHRoYXQgdGhpcyBjb2RlIGlzIHJlYWRhYmxlIGVub3VnaCBmb3IgeW91IHRvIGJlXG4gICBhYmxlIHRvIG1ha2UgaXQhXG5cblxuICAgRW5qb3khICopXG5cblxuXG4oKiBPdmVydmlld1xuXG4gICBJbiB0aGlzIGZpbGUsIHRoZXJlIGlzIGEgXCJtb2RlbFwiIGZ1bmN0aW9uIC0tIFtMd3QuYmluZF0gLS0gd2hpY2ggcHVsbHNcbiAgIHRvZ2V0aGVyIG1hbnkgKHRob3VnaCBub3QgYWxsKSBvZiB0aGUgY29uY2VwdHMgYW5kIGhlbHBlcnMgZGlzY3Vzc2VkIGluIHRoaXNcbiAgIG92ZXJ2aWV3LiBUbyBmaW5kIGl0LCBzZWFyY2ggZm9yIFwibGV0IGJpbmQsXCIgYW5kIHlvdSBjYW4gZXhhbWluZSBpdCB3aGlsZVxuICAgcmVhZGluZyB0aGUgb3ZlcnZpZXcuIFRoZSBhdXRob3JzIG9mIHRoaXMgZmlsZSBpbnRlbmQgdG8gcHV0IGV4dHJhIGVmZm9ydFxuICAgaW50byB3cml0aW5nIG5pY2UgY29tbWVudHMgaW5zaWRlIFtMd3QuYmluZF0gOilcblxuXG4gICAwLiBNYWluIG1lY2hhbmlzbSBhbmQgdHdvIGFzcGVjdHNcblxuICAgVGhlIEx3dCBpbnRlcmZhY2UgKFtsd3QubWxpXSkgcHJvdmlkZXMgb25lIG1haW4gbWVjaGFuaXNtLCBwcm9taXNlcywgYW5kIHR3b1xuICAgXCJhc3BlY3RzLFwiIHdoaWNoIGFyZSAqbm90KiBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgbWFpbiBtZWNoYW5pc21cbiAgIHByb21pc2VzLCBidXQgdGhleSBhcmUgc3RpbGwgdGhlcmU6XG5cbiAgIC0gcHJvbWlzZSBjYW5jZWxsYXRpb25cbiAgIC0gc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlXG5cbiAgIElmIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gY2FuY2VsbGF0aW9uIG9yIHN0b3JhZ2UsIHlvdSBjYW4gaWdub3JlIHRoZXNlXG4gICB0d28gY29tcGxpY2F0aW9ucywgYW5kIHN0aWxsIGdldCBhIHByZXR0eSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuIFRvXG4gICBoZWxwLCBhbGwgaWRlbnRpZmllcnMgcmVsYXRlZCB0byBjYW5jZWxsYXRpb24gY29udGFpbiB0aGUgc3RyaW5nIFwiY2FuY2VsLFwiXG4gICBhbmQgYWxsIGlkZW50aWZpZXJzIHJlbGF0ZWQgdG8gc3RvcmFnZSBjb250YWluIFwic3RvcmFnZS5cIlxuXG5cbiAgIDEuIFByb21pc2VzXG5cbiAgIEEgcHJvbWlzZSBpcyBhIGNlbGwgdGhhdCBjYW4gYmUgaW4gb25lIG9mIHR3byBzdGF0ZXM6IFwicmVzb2x2ZWRcIiBvclxuICAgXCJwZW5kaW5nLlwiXG5cbiAgIC0gUmVzb2x2ZWQgcHJvbWlzZXNcblxuICAgICBBIHJlc29sdmVkIHByb21pc2UgaXMgZWl0aGVyIFwiZnVsZmlsbGVkXCIgd2l0aCBhIHZhbHVlLCBvciBcInJlamVjdGVkXCIgd2l0aFxuICAgICBhbiBleGNlcHRpb24uIFRoZSBzdGF0ZSBvZiBhIHJlc29sdmVkIHByb21pc2Ugd2lsbCBuZXZlciBjaGFuZ2UgYWdhaW46IGFcbiAgICAgcmVzb2x2ZWQgcHJvbWlzZSBpcyBpbW11dGFibGUuIEEgcmVzb2x2ZWQgcHJvbWlzZSBpcyBiYXNpY2FsbHkgZXF1aXZhbGVudFxuICAgICB0byBhbiBbKCdhLCBleG4pIFN0ZGxpYi5yZXN1bHRdLiBSZXNvbHZlZCBwcm9taXNlcyBhcmUgcHJvZHVjZWQgaW4gdHdvXG4gICAgIHdheXM6XG5cbiAgICAgLSBbTHd0LnJldHVybl0sIFtMd3QuZmFpbF0sIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgcHJvZHVjZSBcInRyaXZpYWxcIlxuICAgICAgIHByb21pc2VzIHRoYXQgYXJlIHJlc29sdmVkIGZyb20gdGhlIHN0YXJ0LlxuICAgICAtIFRoZSBvdGhlciB3YXkgaXMgdG8gcmVzb2x2ZSBhIHByb21pc2UgdGhhdCBzdGFydGVkIG91dCBwZW5kaW5nLlxuXG4gICAgIE5vdGUgdGhhdCByZWplY3RlZCBwcm9taXNlcyBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmhhbmRsZWQgZXhjZXB0aW9ucy5cblxuICAgLSBQZW5kaW5nIHByb21pc2VzXG5cbiAgICAgLi4uYXJlIHRob3NlIHRoYXQgbWF5IGJlY29tZSByZXNvbHZlZCBpbiB0aGUgZnV0dXJlLiBFYWNoIHBlbmRpbmcgcHJvbWlzZVxuICAgICBjYXJyaWVzIGEgbGlzdCBvZiBjYWxsYmFja3MuIFRoZXNlIGNhbGxiYWNrcyBhcmUgYWRkZWQgYnkgZnVuY3Rpb25zIGxpa2VcbiAgICAgW0x3dC5iaW5kXSwgYW5kIGNhbGxlZCBieSBMd3QgaWYvd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC4gVGhlc2VcbiAgICAgY2FsbGJhY2tzIHR5cGljYWxseSBlbmQgdXAgcmVzb2x2aW5nIGFkZGl0aW9uYWwgcHJvbWlzZXM7IHNlZSBzZWN0aW9uXG4gICAgIFwiUmVzb2x1dGlvbiBsb29wXCIgYmVsb3cuXG5cbiAgICAgUGVuZGluZyBwcm9taXNlcyBhcmUgcHJvZHVjZWQgaW4gdGhyZWUgd2F5cywgYWNjb3JkaW5nIHRvIGhvdyB0aGV5IGNhbiBiZVxuICAgICByZXNvbHZlZDpcblxuICAgICAtIEluaXRpYWwgcHJvbWlzZXNcblxuICAgICAgIC4uLmFyZSBjcmVhdGVkIGJ5IFtMd3Qud2FpdF0gYW5kIFtMd3QudGFza10uIFRoZSB1c2VyIG9mIEx3dCByZXNvbHZlc1xuICAgICAgIHRoZXNlIHByb21pc2VzIG1hbnVhbGx5LCB0aHJvdWdoIHRoZSByZXNvbHZlcnMgcmV0dXJuZWQgYnkgdGhvc2VcbiAgICAgICBmdW5jdGlvbnMuXG5cbiAgICAgLSBTZXF1ZW50aWFsIGNvbXBvc2l0aW9uXG5cbiAgICAgICBGb3IgZXhhbXBsZSwgW0x3dC5iaW5kXS4gVGhlc2UgcHJvbWlzZXMgb25seSBhcmUgb25seSByZXNvbHZlZCB3aGVuIHRoZVxuICAgICAgIHByZWNlZGluZyBzZXF1ZW5jZSBvZiBwcm9taXNlcyByZXNvbHZlcy4gVGhlIHVzZXIgY2Fubm90IHJlc29sdmUgdGhlc2VcbiAgICAgICBwcm9taXNlcyBkaXJlY3RseSAoYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb24gYmVsb3cpLlxuXG4gICAgIC0gQ29uY3VycmVudCBjb21wb3NpdGlvblxuXG4gICAgICAgRm9yIGV4YW1wbGUsIFtMd3Quam9pbl0gb3IgW0x3dC5jaG9vc2VdLiBUaGVzZSBwcm9taXNlcyBhcmUgb25seSByZXNvbHZlZFxuICAgICAgIHdoZW4gYWxsIG9yIG9uZSBvZiBhIHNldCBvZiBcInByZWNlZGluZ1wiIHByb21pc2VzIHJlc29sdmUuIFRoZSB1c2VyIGNhbm5vdFxuICAgICAgIHJlc29sdmUgdGhlc2UgcHJvbWlzZXMgZGlyZWN0bHkgKGJ1dCBzZWUgdGhlIHNlY3Rpb24gb24gY2FuY2VsbGF0aW9uXG4gICAgICAgYmVsb3cpLlxuXG5cbiAgIDIuIFJlc29sdmVyc1xuXG4gICBSZXNvbHZlcnMgYXJlIGdpdmVuIHRvIHRoZSB1c2VyIGJ5IFtMd3Qud2FpdF0gYW5kIFtMd3QudGFza10sIGFuZCBjYW4gYmUgdXNlZFxuICAgYnkgdGhlIHVzZXIgdG8gcmVzb2x2ZSB0aGUgY29ycmVzcG9uZGluZyBwcm9taXNlcy4gTm90ZSB0aGF0IHRoaXMgbWVhbnMgdGhlXG4gICB1c2VyIG9ubHkgZXZlciBnZXRzIHJlc29sdmVycyBmb3IgaW5pdGlhbCBwcm9taXNlcy5cblxuICAgSW50ZXJuYWxseSwgcmVzb2x2ZXJzIGFyZSB0aGUgZXhhY3Qgc2FtZSBvYmplY3RzIGFzIHRoZSBwcm9taXNlcyB0aGV5XG4gICByZXNvbHZlLCBldmVuIHRob3VnaCB0aGUgcmVzb2x2ZXIgaXMgZXhwb3NlZCBhcyBhIHJlZmVyZW5jZSBvZiBhIGRpZmZlcmVudFxuICAgdHlwZSBieSBbbHd0Lm1saV0uIEZvciBkZXRhaWxzIG9uIHdoeSwgc2VlIHNlY3Rpb24gXCJUeXBlIHN5c3RlbSBhYnVzZVwiIGJlbG93LlxuXG5cbiAgIDMuIENhbGxiYWNrc1xuXG4gICAuLi5hcmUgYXR0YWNoZWQgYnkgTHd0IHRvIHBlbmRpbmcgcHJvbWlzZXMsIGFuZCBhcmUgcnVuIGJ5IEx3dCBpZi93aGVuIHRob3NlXG4gICBwcm9taXNlcyBhcmUgcmVzb2x2ZWQuIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGRpcmVjdGx5IGV4cG9zZWQgdGhyb3VnaFxuICAgW2x3dC5tbGldIC0tIHRoZXkgYXJlIGEgbG93LWxldmVsIG1lY2hhbmlzbS4gRm9yIGV4YW1wbGUsIHRvIGltcGxlbWVudFxuICAgW0x3dC5iaW5kIHAgZl0sIEx3dCBhdHRhY2hlcyBhIGNhbGxiYWNrIHRvIFtwXSB0aGF0IGRvZXMgc29tZSBpbnRlcm5hbCBMd3RcbiAgIGJvb2sta2VlcGluZywgYW5kIHRoZW4gY2FsbHMgW2ZdIGlmIFtwXSBpcyBmdWxmaWxsZWQsIGFuZCBkb2VzIHNvbWV0aGluZyBlbHNlXG4gICBpZiBbcF0gaXMgcmVqZWN0ZWQuXG5cbiAgIENhbGxiYWNrcyBjb21lIGluIHR3byBmbGF2b3JzOiByZWd1bGFyIGNhbGxiYWNrcyBhbmQgY2FuY2VsIGNhbGxiYWNrcy4gVGhlXG4gICBvbmx5IG1hdGVyaWFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbSBhcmUgdGhhdDpcblxuICAgLSByZWd1bGFyIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aGVuIGEgcHJvbWlzZSBpcyByZXNvbHZlZCwgYnV0IGNhbmNlbFxuICAgICBjYWxsYmFja3MgYXJlIGNhbGxlZCwgaW4gYWRkaXRpb24sIG9ubHkgaWYgdGhlIHByb21pc2UgaXMgY2FuY2VsZWQsIGFuZFxuICAgLSBhbGwgY2FuY2VsIGNhbGxiYWNrcyBvZiBhIHByb21pc2UgYXJlIGNhbGxlZCBiZWZvcmUgYW55IHJlZ3VsYXIgY2FsbGJhY2tcbiAgICAgaXMgY2FsbGVkLlxuXG4gICBDYW5jZWxsYXRpb24gaXMgYSBzcGVjaWFsIGNhc2Ugb2YgcmVzb2x1dGlvbiwgaW4gcGFydGljdWxhciwgYSBzcGVjaWFsIGNhc2VcbiAgIG9mIHJlamVjdGlvbiwgYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb24gbGF0ZXIgYmVsb3cuXG5cblxuICAgNC4gUmVzb2x1dGlvbiBsb29wXG5cbiAgIFJlc29sdmluZyBhIHBlbmRpbmcgcHJvbWlzZSB0cmlnZ2VycyBpdHMgY2FsbGJhY2tzLCBhbmQgdGhvc2UgbWlnaHQgcmVzb2x2ZVxuICAgbW9yZSBwZW5kaW5nIHByb21pc2VzLCB0cmlnZ2VyaW5nIG1vcmUgY2FsbGJhY2tzLCBldGMuIFRoaXMgYmVoYXZpb3IgaXMgdGhlXG4gICAqcmVzb2x1dGlvbiBsb29wKi4gTHd0IGhhcyBzb21lIG1hY2hpbmVyeSB0byBhdm9pZCBzdGFjayBvdmVyZmxvdyBhbmQgb3RoZXJcbiAgIHVuZm9ydHVuYXRlIHNpdHVhdGlvbnMgZHVyaW5nIHRoaXMgbG9vcC5cblxuICAgVGhpcyBjaGFpbmluZyBvZiBwcm9taXNlIHJlc29sdXRpb25zIHRocm91Z2ggY2FsbGJhY2tzIGNhbiBiZSBzZWVuIGFzIGEga2luZFxuICAgb2YgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoLCBpbiB3aGljaCB0aGUgbm9kZXMgYXJlIHBlbmRpbmcgcHJvbWlzZXMsIGFuZCB0aGVcbiAgIGVkZ2VzIGFyZSBjYWxsYmFja3MuIER1cmluZyB0aGUgcmVzb2x1dGlvbiBsb29wLCBMd3Qgc3RhcnRzIGF0IHNvbWUgaW5pdGlhbFxuICAgcHJvbWlzZSB0aGF0IGlzIGdldHRpbmcgcmVzb2x2ZWQgYnkgdGhlIHVzZXIsIGFuZCByZWN1cnNpdmVseSByZXNvbHZlcyBhbGxcbiAgIGRlcGVuZGVudCBwcm9taXNlcy4gVGhlIGdyYXBoIGlzIG1vZGlmaWVkOiByZXNvbHZlZCBwcm9taXNlcyBhcmUgbm8gbG9uZ2VyXG4gICBwZW5kaW5nLCBzbyB0aGV5IGFyZSBubyBsb25nZXIgcGFydCBvZiB0aGUgZ3JhcGguXG5cbiAgIFNvbWUgb2YgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBleHBsaWNpdCB0byBMd3QsIGUuZy4gdGhlIGNhbGxiYWNrcyByZWdpc3RlcmVkXG4gICBieSBbTHd0LmJpbmRdLiBPdGhlcnMgYXJlIG5vdCB2aXNpYmxlIHRvIEx3dCwgYmVjYXVzZSB0aGUgdXNlciBjYW4gYWx3YXlzXG4gICByZWdpc3RlciBhIGNhbGxiYWNrIHVzaW5nIGEgZnVuY3Rpb24gbGlrZSBbTHd0Lm9uX3N1Y2Nlc3NdLCBhbmQgdXNlIHRoYXRcbiAgIGNhbGxiYWNrIHRvIHJlc29sdmUgYW5vdGhlciBpbml0aWFsIHByb21pc2UuIEFsbCB0aGUgZXhwbGljaXQgZGVwZW5kZW5jaWVzXG4gICBhcmUgY3JlYXRlZCBieSBMd3QncyBvd24gc2VxdWVudGlhbCBhbmQgY29uY3VycmVudCBjb21wb3NpdGlvbiBmdW5jdGlvbnNcbiAgIChzbywgW0x3dC5iaW5kXSwgW0x3dC5qb2luXSwgZXRjKS4gV2hldGhlciBkZXBlbmRlbmNpZXMgYXJlIGV4cGxpY2l0IG9yIG5vdFxuICAgaXMgcmVsZXZhbnQgb25seSB0byBjYW5jZWxsYXRpb24uXG5cblxuICAgNS4gQ2FuY2VsbGF0aW9uXG5cbiAgIEFzIGRlc2NyaWJlZCBhYm92ZSwgb3JkaW5hcnkgcHJvbWlzZSByZXNvbHV0aW9uIHByb2NlZWRzIGZyb20gYW4gaW5pdGlhbFxuICAgcHJvbWlzZSwgZm9yd2FyZCBhbG9uZyBjYWxsYmFja3MgdGhyb3VnaCB0aGUgZGVwZW5kZW5jeSBncmFwaC4gU2luY2UgaXRcbiAgIHN0YXJ0cyBmcm9tIGFuIGluaXRpYWwgcHJvbWlzZSwgaXQgY2FuIG9ubHkgYmUgdHJpZ2dlcmVkIHVzaW5nIGEgcmVzb2x2ZXIuXG5cbiAgIENhbmNlbGxhdGlvbiBpcyBhIHNvcnQgb2YgZHVhbCB0byBvcmRpbmFyeSByZXNvbHV0aW9uLiBJbnN0ZWFkIG9mIHN0YXJ0aW5nIGF0XG4gICBhbiBpbml0aWFsIHByb21pc2UvcmVzb2x2ZXIsIGNhbmNlbGxhdGlvbiBzdGFydHMgYXQgKmFueSogcHJvbWlzZS4gSXQgdGhlblxuICAgZ29lcyAqYmFja3dhcmRzKiB0aHJvdWdoIHRoZSBleHBsaWNpdCBkZXBlbmRlbmN5IGdyYXBoLCBsb29raW5nIGZvclxuICAgY2FuY2VsYWJsZSBpbml0aWFsIHByb21pc2VzIHRvIGNhbmNlbCAtLSB0aG9zZSB0aGF0IHdlcmUgY3JlYXRlZCBieVxuICAgW0x3dC50YXNrXS4gQWZ0ZXIgZmluZGluZyB0aGVtLCBjYW5jZWxsYXRpb24gcmVzb2x2ZXMgdGhlbSBub3JtYWxseSB3aXRoXG4gICBbUmVqZWN0ZWQgTHd0LkNhbmNlbGVkXSwgY2F1c2luZyBhbiBvcmRpbmFyeSBwcm9taXNlIHJlc29sdXRpb24gcHJvY2Vzcy5cblxuICAgVG8gc3VtbWFyaXplLCBjYW5jZWxsYXRpb24gaXMgYSB3YXkgdG8gdHJpZ2dlciBhbiAqb3JkaW5hcnkqIHJlc29sdXRpb24gb2ZcbiAgIHByb21pc2VzIGNyZWF0ZWQgd2l0aCBbTHd0LnRhc2tdLCBieSBmaXJzdCBzZWFyY2hpbmcgZm9yIHRoZW0gaW4gdGhlIHByb21pc2VcbiAgIGRlcGVuZGVuY3kgZ3JhcGggKHdoaWNoIGlzIGFzc2VtYmxlZCBieSBbTHd0LmJpbmRdLCBbTHd0LmpvaW5dLCBldGMpLlxuXG4gICBUaGlzIGJhY2t3YXJkcyBzZWFyY2ggaXMgdHJpZ2dlcmVkIG9ubHkgYnkgW0x3dC5jYW5jZWxdLiBJdCBpcyBhbHNvIHBvc3NpYmxlXG4gICBmb3IgdGhlIHVzZXIgdG8gY2FuY2VsIGEgcHJvbWlzZSBkaXJlY3RseSBieSByZWplY3RpbmcgaXQgd2l0aFxuICAgW0x3dC5DYW5jZWxlZF0sIGJ1dCBpbiBhbGwgY2FzZXMgd2hlcmUgdGhlIHVzZXIgY2FuIGRvIHNvLCB0aGUgc2VhcmNoIHdvdWxkXG4gICBiZSByZWR1bmRhbnQgYW55d2F5IC0tIHRoZSB1c2VyIGhhcyBvbmx5IHR3byB3YXlzIG9mIGRpcmVjdGx5IHJlamVjdGluZyBhXG4gICBwcm9taXNlIHdpdGggW0x3dC5DYW5jZWxlZF0gKG9yIGFueSBleGNlcHRpb24sIGZvciB0aGF0IG1hdHRlcik6XG5cbiAgIC0gVGhlIHVzZXIgY2FuIGNyZWF0ZSBhbiBpbml0aWFsIHByb21pc2UsIHRoZW4gcmVqZWN0IGl0IHRocm91Z2ggaXRzXG4gICAgIHJlc29sdmVyLiBUaGUgc2VhcmNoIGlzIHJlZHVuZGFudCBiZWNhdXNlIGl0IHdvdWxkIGZpbmQgb25seSB0aGUgc2FtZVxuICAgICBpbml0aWFsIHByb21pc2UgdG8gY2FuY2VsLlxuICAgLSBUaGUgdXNlciBjYW4gY3JlYXRlIGEgdHJpdmlhbCBwcm9taXNlIGJ5IGNhbGxpbmcgW0x3dC5mYWlsIEx3dC5DYW5jZWxlZF0uXG4gICAgIFRoZSBzZWFyY2ggaXMgYWdhaW4gcmVkdW5kYW50OyBpbiB0aGlzIGNhc2UgaXQgd291bGQgZmluZCBub3RoaW5nIHRvXG4gICAgIGNhbmNlbC5cblxuICAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgcXVpcms6IG9ubHkgcHJvbWlzZXMgY3JlYXRlZCBieSBbTHd0LnRhc2tdIGFyZVxuICAgc3VzY2VwdGlibGUgdG8gYmVpbmcgY2FuY2VsZWQgYnkgW0x3dC5jYW5jZWxdLCBidXQgdGhlIHVzZXIgY2FuIG1hbnVhbGx5XG4gICBjYW5jZWwgaW5pdGlhbCBwcm9taXNlcyBjcmVhdGVkIGJ5IGJvdGggW0x3dC50YXNrXSBhbmQgW0x3dC53YWl0XS5cblxuICAgRHVlIHRvIFtMd3QuY2FuY2VsXSwgcHJvbWlzZSBjYW5jZWxsYXRpb24sIGFuZCB0aGVyZWZvcmUgcmVzb2x1dGlvbiwgY2FuIGJlXG4gICBpbml0aWF0ZWQgYnkgdGhlIHVzZXIgd2l0aG91dCBhY2Nlc3MgdG8gYSByZXNvbHZlci4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yXG4gICByZWFzb25pbmcgYWJvdXQgc3RhdGUgY2hhbmdlcyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgTHd0LCBhbmQgaXMgcmVmZXJlbmNlZFxuICAgaW4gc29tZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgY29tbWVudHMuXG5cblxuICAgNi4gTm8gSS9PXG5cbiAgIFRoZSBMd3QgY29yZSBkZWxpYmVyYXRlbHkgZG9lc24ndCBkbyBJL08uIFRoZSByZXNvbHV0aW9uIGxvb3Agc3RvcHMgcnVubmluZ1xuICAgb25jZSBubyBwcm9taXNlcyBjYW4gYmUgcmVzb2x2ZWQgaW1tZWRpYXRlbHkuIEl0IGhhcyB0byBiZSByZXN0YXJ0ZWQgbGF0ZXJcbiAgIGJ5IHNvbWUgc3Vycm91bmRpbmcgSS9PIGxvb3AuIFRoaXMgSS9PIGxvb3AgdHlwaWNhbGx5IGtlZXBzIHRyYWNrIG9mIHBlbmRpbmdcbiAgIHByb21pc2VzIHRoYXQgcmVwcmVzZW50IGJsb2NrZWQgb3IgaW4tcHJvZ3Jlc3MgSS9POyBvdGhlciBwZW5kaW5nIHByb21pc2VzXG4gICB0aGF0IGluZGlyZWN0bHkgZGVwZW5kIG9uIEkvTyBhcmUgbm90IGV4cGxpY2l0bHkgdHJhY2tlZC4gVGhleSBhcmUgcmV0YWluZWRcbiAgIGluIG1lbW9yeSBieSByZWZlcmVuY2VzIGNhcHR1cmVkIGluc2lkZSBjYWxsYmFja3MuXG5cbiAgIE9uIFVuaXggYW5kIFdpbmRvd3MsIGEgc2VwYXJhdGUgdG9wLWxldmVsIGxvb3AsIHR5cGljYWxseSBbTHd0X21haW4ucnVuXSwgaXNcbiAgIG5lY2Vzc2FyeSB0byByZXBlYXRlZGx5IGNhbGwgW3NlbGVjdF0sIFtlcG9sbF0sIG9yIFtrZXZlbnRdLCBhbmQgcmVzb2x2ZVxuICAgYmxvY2tlZCBJL08gcHJvbWlzZXMuXG5cbiAgIEluIEphdmFTY3JpcHQsIHJlZmVyZW5jZXMgdG8gcHJvbWlzZXMgYXJlIHJldGFpbmVkIGJ5IEphdmFTY3JpcHQgY29kZSwgd2hpY2hcbiAgIGlzLCBpbiB0dXJuLCB0cmlnZ2VyZWQgYnkgdGhlIEpTIGVuZ2luZS4gSW4gb3RoZXIgd29yZHMsIHRoZSB0b3AtbGV2ZWwgbG9vcFxuICAgaXMgYnVyaWVkIGluc2lkZSB0aGUgSlMgZW5naW5lLlxuXG4gICBUaGlzIHNlcGFyYXRpb24gb2YgdGhlIEx3dCBjb3JlIGZyb20gdGhlIHRvcC1sZXZlbCBJL08gbG9vcCBrZWVwcyB0aGUgY29yZVxuICAgcG9ydGFibGUuXG5cblxuICAgNy4gUHJvbWlzZSBcInByb3h5aW5nXCJcblxuICAgSW4gW0x3dC5iaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdF0sIHRoZSBvdXRlciBbJ2IgdF0gaXMgY3JlYXRlZCBieVxuICAgW2JpbmRdIGZpcnN0LCBhbmQgcmV0dXJuZWQgdG8gdGhlIHVzZXIuIFRoZSBpbm5lciBbJ2IgdF0gaXMgY3JlYXRlZCBieSB0aGVcbiAgIHVzZXIgbGF0ZXIsIGFuZCB0aGVuIHJldHVybmVkIHRvIFtiaW5kXS4gQXQgdGhhdCBwb2ludCwgW2JpbmRdIG5lZWRzIHRvIG1ha2VcbiAgIHRoZSBpbm5lciBhbmQgb3V0ZXIgWydiIHRdcyBiZWhhdmUgaWRlbnRpY2FsbHkuXG5cbiAgIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IG1ha2luZyBvbmUgb2YgdGhlIHByb21pc2VzIHBvaW50IHRvIHRoZSBvdGhlci4gVGhlXG4gICBmaXJzdCBvZiB0aGUgcHJvbWlzZXMgdGh1cyBiZWNvbWVzIGEgXCJwcm94eSxcIiBhbmQgdGhlIG90aGVyIGlzIGl0c1xuICAgXCJ1bmRlcmx5aW5nXCIgcHJvbWlzZS5cblxuICAgQWZ0ZXIgdGhhdCwgYWxsIG9wZXJhdGlvbnMgdGhhdCB3b3VsZCBiZSBwZXJmb3JtZWQgYnkgTHd0IG9uIHRoZSBwcm94eSBhcmVcbiAgIGluc3RlYWQgcGVyZm9ybWVkIG9uIHRoZSB1bmRlcmx5aW5nIHByb21pc2UuIFRoaXMgaXMgZW5zdXJlZCBieSB0aGUgbnVtZXJvdXNcbiAgIGNhbGxzIHRvIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbdW5kZXJseWluZ10gaW4gdGhpcyBmaWxlLlxuXG4gICBCZWNhdXNlIG9mIHRoZSBwZXJ2YXNpdmUgdXNlIG9mIFt1bmRlcmx5aW5nXSwgcHJveGllcyBjYW4gYmUgbW9yZSBvciBsZXNzXG4gICBpZ25vcmVkIG9uIGEgZmlyc3QgcmVhZGluZyB0aGUgY29kZS4gSG93ZXZlciwgYmVjb21pbmcgYSBwcm94eSBpcyBhIGtpbmQgb2ZcbiAgIHN0YXRlIGNoYW5nZSwgYW5kIGFueSBwcm9taXNlIHRoYXQgaXMgcmV0dXJuZWQgYnkgYSBjYWxsYmFjayB0byBbYmluZF0sIG9yIHRvXG4gICBhIHNpbWlsYXIgTHd0IGZ1bmN0aW9uLCBtaWdodCBiZWNvbWUgYSBwcm94eS4gVGhhdCBtZWFuczoganVzdCBhYm91dCBhbnlcbiAgIHByb21pc2UgdGhhdCBpcyBoYW5kZWQgdG8gdGhlIHVzZXIsIG1pZ2h0IGJlY29tZSBhIHByb3h5IHByb21pc2UgYnkgdGhlIG5leHRcbiAgIHRpbWUgTHd0IHNlZXMgaXQuIFRoaXMgaXMgaW1wb3J0YW50IGZvciByZWFzb25pbmcgYWJvdXQgcG9zc2libGUgc3RhdGVcbiAgIGNoYW5nZXMgaW4gaW1wbGVtZW50YXRpb24gb2YgTHd0LCBhbmQgaXMgcmVmZXJlbmNlZCBpbiBzb21lIGltcGxlbWVudGF0aW9uXG4gICBkZXRhaWwgY29tbWVudHMuXG5cblxuICAgOC4gU2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlXG5cbiAgIEx3dCBoYXMgYSBnbG9iYWwga2V5LXZhbHVlIG1hcC4gVGhlIG1hcCBjYW4gYmUgcHJlc2VydmVkIGFjcm9zcyBzZXF1ZW50aWFsXG4gICBjb21wb3NpdGlvbiBmdW5jdGlvbnMsIHNvIHRoYXQgaXQgaGFzIHRoZSBzYW1lIHN0YXRlIGluIHRoZSB1c2VyJ3MgY2FsbGJhY2tcbiAgIFtmXSBhcyBpdCBkaWQgYXQgdGhlIHRpbWUgdGhlIHVzZXIgY2FsbGVkIFtMd3QuYmluZCBwIGZdLlxuXG4gICBUaGUgZGV0YWlscyBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYW5kIGRpc2N1c3NlZCBpbiBtb2R1bGVcbiAgIFtTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VdLiBUaGUgbWFpbiB0aGluZyB0byBiZSBhd2FyZSBvZiBpcyB0aGUgbWFueVxuICAgcmVmZXJlbmNlcyB0byBbY3VycmVudF9zdG9yYWdlXSB0aHJvdWdob3V0IEx3dCwgd2hpY2ggYXJlIG5lZWRlZCB0byBwcm9wZXJseVxuICAgc2F2ZSBhbmQgcmVzdG9yZSB0aGUgbWFwcGluZy5cblxuXG4gICA5LiBUeXBlIHN5c3RlbSBhYnVzZVxuXG4gICBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgdHlwZSBzeXN0ZW0gc29tZXdoYXQgZXh0ZW5zaXZlbHkuIEdlbnRsZVxuICAgaW50cm9kdWN0aW9ucyBjYW4gYmUgZm91bmQgaGVyZTpcblxuICAgICBodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvMTYxLzdcbiAgICAgaHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90LzE2MS8xNlxuXG4gICBBIHNob3J0IHN1bW1hcnkgZm9sbG93cy5cblxuICAgVGhlIHByb21pc2Ugc3RhdGUgaXMsIGludGVybmFsbHksIGEgR0FEVCB3aGljaCBlbmNvZGVzIHRoZSBzdGF0ZSBpbiBpdHMgdHlwZVxuICAgcGFyYW1ldGVycy4gVGh1cywgaWYgeW91IGRvIFtsZXQgcCA9IHVuZGVybHlpbmcgcF0sIHRoZSBzaGFkb3dpbmcgcmVmZXJlbmNlXG4gICBbcF0gaXMgc3RhdGljYWxseSBrbm93biAqbm90KiB0byBiZSBhIHByb3h5LCBhbmQgdGhlIGNvbXBpbGVyIGtub3dzIHRoYXQgdGhlXG4gICBjb3JyZXNwb25kaW5nIG1hdGNoIGNhc2UgW1Byb3h5IF9dIGlzIGltcG9zc2libGUuXG5cbiAgIFRoZSBleHRlcm5hbCBwcm9taXNlIHR5cGUsIFsnYSB0XSwgYW5kIHRoZSBleHRlcm5hbCByZXNvbHZlciB0eXBlLCBbJ2EgdV0sXG4gICBhcmUgbm90IEdBRFRzLiBGdXJ0aGVybW9yZSwgdGhleSBhcmUsIHJlc3BlY3RpdmVseSwgY292YXJpYW50IGFuZFxuICAgY29udHJhdmFyaWFudCBpbiBbJ2FdLCB3aGlsZSB0aGUgaW50ZXJuYWwgcHJvbWlzZSB0eXBlIGlzIGludmFyaWFudCBpbiBbJ2FdLlxuICAgRm9yIHRoZXNlIHJlYXNvbnMsIHRoZXJlIGFyZSBuYXN0eSBjYXN0cyBiZXR3ZWVuIFsnYSB0XSwgWydhIHVdLCBhbmQgdGhlXG4gICBpbnRlcm5hbCBwcm9taXNlIHR5cGUuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcywgb2YgY291cnNlLCB3cml0dGVuIGluIHRlcm1zIG9mXG4gICB0aGUgaW50ZXJuYWwgdHlwZS5cblxuICAgQ2FzdGluZyBmcm9tIGFuIFsnYSB0XSB0byBhbiBpbnRlcm5hbCBwcm9taXNlIHByb2R1Y2VzIGEgcmVmZXJlbmNlIGZvclxuICAgd2hpY2ggdGhlIHN0YXRlIGlzIFwidW5rbm93blwiOiB0aGlzIGlzIHNpbXVsYXRlZCB3aXRoIGEgaGVscGVyIEdBRFQsIHdoaWNoXG4gICBlbmNvZGVzIGV4aXN0ZW50aWFsIHR5cGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCBzaW1pbGFyIGNhc3RzLCB3aGljaCBhcmUgdXNlZFxuICAgdG8gZG9jdW1lbnQgcG9zc2libGUgc3RhdGUgY2hhbmdlcyBiZXR3ZWVuIHRoZSB0aW1lIGEgcHJvbWlzZSBpcyBjcmVhdGVkLFxuICAgYW5kIHRoZSBsYXRlciB0aW1lIGl0IGlzIHVzZWQgaW4gYSBjYWxsYmFjay4gWW91IGNhbiBzZWUgdGhlc2UgY2FzdHMgaW5cbiAgIGFjdGlvbiBpbiBbTHd0LmJpbmRdLiBUaGUgY2FzdCBzeW50YXggaXMgcHJldHR5IGxpZ2h0LCBhbmQsIGJlc2lkZXMgYmVpbmdcbiAgIGNvbW1lbnRlZCBpbiBbYmluZF0sIGFsbCBzdWNoIGNhc3RzIGFyZSBkb2N1bWVudGVkIGluIG1vZHVsZXMgW1B1YmxpY190eXBlc11cbiAgIGFuZCBbQmFzaWNfaGVscGVyc10uXG5cblxuICAgSWYgeW91J3ZlIG1hZGUgaXQgdGhpcyBmYXIsIHlvdSBhcmUgYW4gTHd0IGV4cGVydCEgUmVqb2ljZSEgKilcblxuXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbigqIFNvbWUgc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIHR5cGVzXG5cbiAgIFNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZSBpcyBkZWZpbmVkIGFuZCBkb2N1bWVudGVkIGxhdGVyLCBpbiBtb2R1bGVcbiAgIFtTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VdLiBIb3dldmVyLCB0aGUgZm9sbG93aW5nIHR5cGVzIGFyZSBtZW50aW9uZWQgaW5cbiAgIHRoZSBkZWZpbml0aW9uIG9mIFtwcm9taXNlXSwgc28gdGhleSBtdXN0IGJlIGRlZmluZWQgaGVyZSBmaXJzdC4gKilcbm1vZHVsZSBTdG9yYWdlX21hcCA9XG4gIE1hcC5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBlbmQpXG50eXBlIHN0b3JhZ2UgPSAodW5pdCAtPiB1bml0KSBTdG9yYWdlX21hcC50XG5cblxuXG5tb2R1bGUgTWFpbl9pbnRlcm5hbF90eXBlcyA9XG5zdHJ1Y3RcbiAgKCogUGhhbnRvbSB0eXBlcyBmb3IgdXNlIHdpdGggdHlwZXMgW3Byb21pc2VdIGFuZCBbc3RhdGVdLiBUaGVzZSBhcmUgbmV2ZXJcbiAgICAgY29uc3RydWN0ZWQ7IHRoZSBwdXJwb3NlIG9mIHRoZSBjb25zdHJ1Y3RvcnMgaXMgdG8gcHJvdmUgdG8gdGhlIHR5cGVcbiAgICAgY2hlY2tlciB0aGF0IHRoZXNlIHR5cGVzIGFyZSBkaXN0aW5jdCBmcm9tIGVhY2ggb3RoZXIuIFdhcm5pbmcgMzcsIFwidW51c2VkXG4gICAgIGNvbnN0cnVjdG9yLFwiIHRoZXJlZm9yZSBoYXMgdG8gYmUgdGVtcG9yYXJpbHkgc3VwcHJlc3NlZC4gKilcblxuICBbQEBAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgdW5kZXJseWluZyA9IHByaXZhdGUgVW5kZXJseWluZ19hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuICB0eXBlIHByb3h5ID0gcHJpdmF0ZSBQcm94eV9hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuXG4gIHR5cGUgcmVzb2x2ZWQgPSBwcml2YXRlIFJlc29sdmVkX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG4gIHR5cGUgcGVuZGluZyA9IHByaXZhdGUgUGVuZGluZ19hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuXG4gIFtAQEBvY2FtbC53YXJuaW5nIFwiKzM3XCJdXG5cblxuXG4gICgqIFByb21pc2VzIHByb3Blci4gKilcblxuICB0eXBlICgnYSwgJ3UsICdjKSBwcm9taXNlID0ge1xuICAgIG11dGFibGUgc3RhdGUgOiAoJ2EsICd1LCAnYykgc3RhdGU7XG4gIH1cblxuICBhbmQgKF8sIF8sIF8pIHN0YXRlID1cbiAgICB8IEZ1bGZpbGxlZCA6ICdhICAgICAgICAgICAgICAgICAgLT4gKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcbiAgICB8IFJlamVjdGVkICA6IGV4biAgICAgICAgICAgICAgICAgLT4gKCBfLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcbiAgICB8IFBlbmRpbmcgICA6ICdhIGNhbGxiYWNrcyAgICAgICAgLT4gKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSAgc3RhdGVcbiAgICB8IFByb3h5ICAgICA6ICgnYSwgXywgJ2MpIHByb21pc2UgLT4gKCdhLCBwcm94eSwgICAgICAnYykgICAgICAgc3RhdGVcblxuICAoKiBOb3RlOlxuXG4gICAgIEEgcHJvbWlzZSB3aG9zZSBzdGF0ZSBpcyBbUHJveHkgX10gaXMgYSBcInByb3h5XCIgcHJvbWlzZS4gQSBwcm9taXNlIHdob3NlXG4gICAgIHN0YXRlIGlzICpub3QqIFtQcm94eSBfXSBpcyBhbiBcInVuZGVybHlpbmdcIiBwcm9taXNlLlxuXG4gICAgIFRoZSBcInVuZGVybHlpbmcgcHJvbWlzZSBvZiBbcF1cIiBpczpcblxuICAgICAtIFtwXSwgaWYgW3BdIGlzIGl0c2VsZiB1bmRlcmx5aW5nLlxuICAgICAtIE90aGVyd2lzZSwgW3BdIGlzIGEgcHJveHkgYW5kIGhhcyBzdGF0ZSBbUHJveHkgcCddLiBUaGUgdW5kZXJseWluZ1xuICAgICAgIHByb21pc2Ugb2YgW3BdIGlzIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgW3AnXS5cblxuICAgICBJbiBvdGhlciB3b3JkcywgdG8gZmluZCB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIGEgcHJveHksIEx3dCBmb2xsb3dzIHRoZVxuICAgICBbUHJveHkgX10gbGlua3MgdG8gdGhlIGVuZC4gKilcblxuICAoKiBOb3RlOlxuXG4gICAgIFdoZW4gYSBwcm9taXNlIGlzIHJlc29sdmVkLCBvciBiZWNvbWVzIGEgcHJveHksIGl0cyBzdGF0ZSBmaWVsZCBpc1xuICAgICBtdXRhdGVkLiBUaGlzIGludmFsaWRhdGVzIHRoZSB0eXBlIGludmFyaWFudHMgb24gdGhlIHByb21pc2UuIFNlZSBpbnRlcm5hbFxuICAgICBmdW5jdGlvbiBbc2V0X3Byb21pc2Vfc3RhdGVdIGZvciBkZXRhaWxzIGFib3V0IHRoYXQuXG5cbiAgICAgV2hlbiBhbiBMd3QgZnVuY3Rpb24gaGFzIGEgcmVmZXJlbmNlIHRvIGEgcHJvbWlzZSwgYW5kIGFsc28gcmVnaXN0ZXJzIGFcbiAgICAgY2FsbGJhY2sgdGhhdCBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgcHJvbWlzZSwgdGhlIGludmFyaWFudHMgb24gdGhlXG4gICAgIHJlZmVyZW5jZSBtYXkgYmVjb21lIGludmFsaWQgYnkgdGhlIHRpbWUgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC4gQWxsIHN1Y2hcbiAgICAgY2FsbGJhY2tzIGhhdmUgY29tbWVudHMgZXhwbGFpbmluZyB3aGF0IHRoZSB2YWxpZCBpbnZhcmlhbnRzIGFyZSBhdCB0aGF0XG4gICAgIHBvaW50LCBhbmQvb3IgY2FzdHMgdG8gKDEpIGdldCB0aGUgY29ycmVjdCB0eXBpbmcgYW5kICgyKSBkb2N1bWVudCB0aGVcbiAgICAgcG90ZW50aWFsIHN0YXRlIGNoYW5nZSBmb3IgcmVhZGVycyBvZiB0aGUgY29kZS4gKilcblxuXG5cbiAgKCogQ2FsbGJhY2sgaW5mb3JtYXRpb24gZm9yIHBlbmRpbmcgcHJvbWlzZXMuICopXG5cbiAgYW5kICdhIGNhbGxiYWNrcyA9IHtcbiAgICBtdXRhYmxlIHJlZ3VsYXJfY2FsbGJhY2tzIDogJ2EgcmVndWxhcl9jYWxsYmFja19saXN0O1xuICAgIG11dGFibGUgY2FuY2VsX2NhbGxiYWNrcyAgOiAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdDtcbiAgICBtdXRhYmxlIGhvd190b19jYW5jZWwgICAgIDogaG93X3RvX2NhbmNlbDtcbiAgICBtdXRhYmxlIGNsZWFudXBzX2RlZmVycmVkIDogaW50O1xuICB9XG5cbiAgYW5kICdhIHJlZ3VsYXJfY2FsbGJhY2sgPSAnYSByZXNvbHZlZF9zdGF0ZSAtPiB1bml0XG5cbiAgYW5kIGNhbmNlbF9jYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG4gIGFuZCAnYSByZXNvbHZlZF9zdGF0ZSA9ICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlXG5cbiAgYW5kIGhvd190b19jYW5jZWwgPVxuICAgIHwgTm90X2NhbmNlbGFibGUgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICBob3dfdG9fY2FuY2VsXG4gICAgfCBDYW5jZWxfdGhpc19wcm9taXNlICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd190b19jYW5jZWxcbiAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lICAgICA6IChfLCBfLCBfKSBwcm9taXNlICAgICAgLT4gaG93X3RvX2NhbmNlbFxuICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIDogKF8sIF8sIF8pIHByb21pc2UgbGlzdCAtPiBob3dfdG9fY2FuY2VsXG5cbiAgYW5kICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdCA9XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgb2ZcbiAgICAgICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdCAqICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdFxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBvZlxuICAgICAgJ2EgcmVndWxhcl9jYWxsYmFja1xuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIG9mXG4gICAgICAnYSByZWd1bGFyX2NhbGxiYWNrIG9wdGlvbiByZWZcblxuICBhbmQgXyBjYW5jZWxfY2FsbGJhY2tfbGlzdCA9XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSA6XG4gICAgICBfIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgOlxuICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3QgKiAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdCAtPlxuICAgICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgOlxuICAgICAgc3RvcmFnZSAqIGNhbmNlbF9jYWxsYmFjayAtPlxuICAgICAgICBfIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSA6XG4gICAgICAoJ2EsIF8sIF8pIHByb21pc2UgTHd0X3NlcXVlbmNlLm5vZGUgLT5cbiAgICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3RcblxuICAoKiBOb3RlczpcblxuICAgICBUaGVzZSB0eXBlIGRlZmluaXRpb25zIGFyZSBndWlsdHkgb2YgcGVyZm9ybWluZyBzZXZlcmFsIG9wdGltaXphdGlvbnMsXG4gICAgIHdpdGhvdXQgd2hpY2ggdGhleSB3b3VsZCBiZSBtdWNoIGVhc2llciB0byB1bmRlcnN0YW5kLlxuXG4gICAgIC0gVGhlIHR5cGUgcGFyYW1ldGVycyBvZiBbJ2EgcmVzb2x2ZWRfc3RhdGVdIGd1YXJhbnRlZSB0aGF0IGl0IGlzIGVpdGhlclxuICAgICAgIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLiBTbywgaXQgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIFsoJ2EsIGV4bikgU3RkbGliLnJlc3VsdF0sIGFuZCwgaW5kZWVkLCBzaG91bGQgaGF2ZSBhbiBpZGVudGljYWxcbiAgICAgICBtZW1vcnkgcmVwcmVzZW50YXRpb24uXG5cbiAgICAgLSBBcyBwZXIgdGhlIE92ZXJ2aWV3LCB0aGVyZSBhcmUgcmVndWxhciBjYWxsYmFja3MgYW5kIGNhbmNlbCBjYWxsYmFja3MuXG4gICAgICAgQ2FuY2VsIGNhbGxiYWNrcyBhcmUgY2FsbGVkIG9ubHkgb24gY2FuY2VsbGF0aW9uLCBhbmQsIHRoZW4sIGJlZm9yZSBhbnlcbiAgICAgICByZWd1bGFyIGNhbGxiYWNrcyBhcmUgY2FsbGVkLlxuXG4gICAgICAgRGVzcGl0ZSB0aGUgZGlmZmVyZW50IHR5cGVzIGZvciB0aGUgdHdvIGtpbmRzIG9mIGNhbGxiYWNrcywgdGhleSBhcmVcbiAgICAgICBvdGhlcndpc2UgdGhlIHNhbWUuIENhbmNlbCBjYWxsYmFja3MganVzdCBkb24ndCBuZWVkIGEgcmVzdWx0IHN0YXRlXG4gICAgICAgYXJndW1lbnQsIGJlY2F1c2UgaXQgaXMga25vd24gdG8gYmUgW1JlamVjdGVkIENhbmNlbGVkXS5cblxuICAgICAtIFJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBub3QgYWxsb3dlZCB0byByYWlzZSBleGNlcHRpb25zLiBBbGwgcmVndWxhclxuICAgICAgIGNhbGxiYWNrcyBhcmUgY3JlYXRlZCBpbiB0aGlzIGZpbGUsIHNvIHRoaXMgY2FuIGJlIGNoZWNrZWQuXG5cbiAgICAgICBDYW5jZWwgY2FsbGJhY2tzIGNhbiByYWlzZSBleGNlcHRpb25zLCBidXQgaWYgdGhleSBkbyBzbywgdGhlIGV4Y2VwdGlvbnNcbiAgICAgICBhcmUgcGFzc2VkIHRvIFthc3luY19leGNlcHRpb25faG9va10uXG5cbiAgICAgLSBbaG93X3RvX2NhbmNlbF0gaW1wbGVtZW50cyB0aGUgZGVwZW5kZW5jeSBncmFwaCBtZW50aW9uZWQgaW4gdGhlXG4gICAgICAgT3ZlcnZpZXcuIEl0IGlzIHRyYXZlcnNlZCBiYWNrd2FyZHMgZHVyaW5nIFtMd3QuY2FuY2VsXS4gSXQgaXMgYSBHQURUXG4gICAgICAgYmVjYXVzZSB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwgdHlwZXMgb2YgdGhlIHByb21pc2UgcmVmZXJlbmNlc1xuICAgICAgIHN0b3JlZCwgb3IgdGhlaXIgaW52YXJpYW50cy4gVGhlIGNvbnN0cnVjdG9ycyBjb3JyZXNwb25kIHRvIHBlbmRpbmdcbiAgICAgICBwcm9taXNlIGtpbmRzIGFzIGZvbGxvd3M6XG4gICAgICAgICAtIFtOb3RfY2FuY2VsYWJsZV06IGluaXRpYWwsIFtMd3Qud2FpdF0uXG4gICAgICAgICAtIFtDYW5jZWxfdGhpc19wcm9taXNlXTogaW5pdGlhbCwgW0x3dC50YXNrXS5cbiAgICAgICAgIC0gW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fb25lXTogc2VxdWVudGlhbCBjb21wb3NpdGlvbiwgZS5nLiBbTHd0LmJpbmRdLlxuICAgICAgICAgLSBbUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsXTogY29uY3VycmVudCBjb21wb3NpdGlvbiwgZS5nLlxuICAgICAgICAgICBbTHd0LmpvaW5dLlxuXG4gICAgIC0gVGhlIHR3byBjYWxsYmFjayBsaXN0IHR5cGVzIGFyZSBvcmRpbmFyeSBhcHBlbmQtZnJpZW5kbHkgbGlzdHMsIHdpdGggdHdvXG4gICAgICAgb3B0aW1pemF0aW9ucyBpbmxpbmVkOlxuXG4gICAgICAgLSBbJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XSBhcHBhcmVudGx5IGhhcyB0d28gXCJraW5kc1wiIG9mIHJlZ3VsYXJcbiAgICAgICAgIGNhbGxiYWNrcywgaW1wbGljaXRseSByZW1vdmVkIGFuZCBleHBsaWNpdGx5IHJlbW92YWJsZS4gQWxsIGNhbGxiYWNrc1xuICAgICAgICAgYXJlIHJlbW92YWJsZS4gSXQncyBqdXN0IHRoYXQsIGZvciBzb21lIGNhbGxiYWNrcywgdGhleSB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlbW92ZWQgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZSBwcm9taXNlIHRoZXkgYXJlIGF0dGFjaGVkIHRvIGJlY29tZXNcbiAgICAgICAgIHJlc29sdmVkLiBXaGVuIHRoYXQgaGFwcGVucywgdGhlIGVudGlyZSBzdGF0ZSBvZiB0aGF0IHByb21pc2UgY2hhbmdlc1xuICAgICAgICAgdG8gW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10sIGFuZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSB3aG9sZVxuICAgICAgICAgY2FsbGJhY2sgbGlzdCBpcyBzaW1wbHkgbG9zdC4gVGhpcyBcInJlbW92ZXNcIiB0aGUgY2FsbGJhY2suIEZvciB0aGVzZVxuICAgICAgICAgY2FsbGJhY2tzLCBbJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XSBhdHRlbXB0cyB0byB0cmltIGFuIG9wdGlvbiBhbmQgYVxuICAgICAgICAgcmVmZXJlbmNlIGNlbGwgd2l0aCB0aGVcbiAgICAgICAgIFtSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrXSBjb25zdHJ1Y3Rvci5cblxuICAgICAgIC0gWydhIGNhbmNlbF9jYWxsYmFja19saXN0XSBoYXNcbiAgICAgICAgIFtDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlXSwgd2hpY2ggaXMgdGhlIHNhbWUgYXNcbiAgICAgICAgIFtDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayAoXywgKGZ1biBfIC0+XG4gICAgICAgICAgIEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZSkpXS5cbiAgICAgICAgIFRoaXMgd2FzIHByb2JhYmx5IGRvbmUgdG8gYXZvaWQgYSBjbG9zdXJlIGFsbG9jYXRpb24uXG5cbiAgICAgLSBUaGUgW2NsZWFudXBzX2RlZmVycmVkXSBmaWVsZCBpcyBleHBsYWluZWQgaW4gbW9kdWxlXG4gICAgICAgW1BlbmRpbmdfY2FsbGJhY2tzXS4gKilcbmVuZFxub3BlbiBNYWluX2ludGVybmFsX3R5cGVzXG5cblxuXG5tb2R1bGUgUHVibGljX3R5cGVzID1cbnN0cnVjdFxuICB0eXBlICsnYSB0XG4gIHR5cGUgLSdhIHVcblxuICBsZXQgdG9fcHVibGljX3Byb21pc2UgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgdCA9IE9iai5tYWdpY1xuICBsZXQgdG9fcHVibGljX3Jlc29sdmVyIDogKCdhLCBfLCBfKSBwcm9taXNlIC0+ICdhIHUgPSBPYmoubWFnaWNcblxuICB0eXBlIF8gcGFja2VkX3Byb21pc2UgPVxuICAgIHwgSW50ZXJuYWwgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgcGFja2VkX3Byb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCB0b19pbnRlcm5hbF9wcm9taXNlIChwIDogJ2EgdCkgOiAnYSBwYWNrZWRfcHJvbWlzZSA9XG4gICAgSW50ZXJuYWwgKE9iai5tYWdpYyBwKVxuICBsZXQgdG9faW50ZXJuYWxfcmVzb2x2ZXIgKHIgOiAnYSB1KSA6ICdhIHBhY2tlZF9wcm9taXNlID1cbiAgICBJbnRlcm5hbCAoT2JqLm1hZ2ljIHIpXG5cbiAgKCogTW9zdCBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgcHVibGljIHByb21pc2UgKFsnYSB0XSkgY29udmVydCBpdCB0byBhblxuICAgICBpbnRlcm5hbCBwcm9taXNlIGFzIGZvbGxvd3M6XG5cbiAgICAgICAoKiBwIDogJ2EgdCAqKVxuXG4gICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgICgqIHAgOiAoJ2EsIHUsIGMpIHByb21pc2UsIHdoZXJlIHUgYW5kIGMgYXJlIGZyZXNoIHR5cGVzLCBpLmUuIHRoZVxuICAgICAgICAgIGludmFyaWFudHMgb24gcCBhcmUgdW5rbm93bi4gKilcblxuICAgICBUaGlzIGNhc3QgaXMgYSBuby1vcCBjYXN0LiBJdCBvbmx5IHByb2R1Y2VzIGEgcmVmZXJlbmNlIHdpdGggYSBkaWZmZXJlbnRcbiAgICAgdHlwZS4gVGhlIGludHJvZHVjdGlvbiBhbmQgaW1tZWRpYXRlIGVsaW1pbmF0aW9uIG9mIFtJbnRlcm5hbCBfXSBzZWVtcyB0b1xuICAgICBiZSBvcHRpbWl6ZWQgYXdheSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIE9DYW1sIHRoYXQgZG9uJ3QgaGF2ZSBGbGFtYmRhXG4gICAgIGFuZCBkb24ndCBzdXBwb3J0IFtbQEBvY2FtbC51bmJveGVkXV0uICopXG5cbiAgKCogVGhpcyBjb3VsZCBwcm9iYWJseSBzYXZlIGFuIGFsbG9jYXRpb24gYnkgdXNpbmcgW09iai5tYWdpY10uICopXG4gIGxldCBzdGF0ZV9vZl9yZXN1bHQgPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiBGdWxmaWxsZWQgeFxuICAgIHwgRXJyb3IgZXhuIC0+IFJlamVjdGVkIGV4blxuZW5kXG5pbmNsdWRlIFB1YmxpY190eXBlc1xuXG5cblxubW9kdWxlIEJhc2ljX2hlbHBlcnMgOlxuc2lnXG4gIHZhbCBpZGVudGljYWwgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gKCdhLCBfLCBfKSBwcm9taXNlIC0+IGJvb2xcbiAgdmFsIHVuZGVybHlpbmcgOiAoJ2EsICd1LCAnYykgcHJvbWlzZSAtPiAoJ2EsIHVuZGVybHlpbmcsICdjKSBwcm9taXNlXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZCA9XG4gICAgfCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG9mICgnYSwgJ3UsICdjKSBwcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cbiAgdmFsIHNldF9wcm9taXNlX3N0YXRlIDpcbiAgICAoJ2EsIF8sIF8pIHByb21pc2UgLT4gKCdhLCAndSwgJ2MpIHN0YXRlIC0+ICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkXG5cbiAgdHlwZSAnYSBtYXlfbm93X2JlX3Byb3h5ID1cbiAgICB8IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSA6XG4gICAgICAoJ2EsIF8sIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG4gIHZhbCBtYXlfbm93X2JlX3Byb3h5IDpcbiAgICAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuZW5kID1cbnN0cnVjdFxuICAoKiBDaGVja3MgcGh5c2ljYWwgZXF1YWxpdHkgKFs9PV0pIG9mIHR3byBpbnRlcm5hbCBwcm9taXNlcy4gVW5saWtlIFs9PV0sIGRvZXNcbiAgICAgbm90IGZvcmNlIHVuaWZpY2F0aW9uIG9mIHRoZWlyIGludmFyaWFudHMuICopXG4gIGxldCBpZGVudGljYWwgcDEgcDIgPVxuICAgICh0b19wdWJsaWNfcHJvbWlzZSBwMSkgPT0gKHRvX3B1YmxpY19wcm9taXNlIHAyKVxuXG4gICgqIFt1bmRlcmx5aW5nIHBdIGV2YWx1YXRlcyB0byB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIFtwXS5cblxuICAgICBJZiBtdWx0aXBsZSBbUHJveHkgX10gbGlua3MgYXJlIHRyYXZlcnNlZCwgW3VuZGVybHlpbmddIHVwZGF0ZXMgYWxsIHRoZVxuICAgICBwcm94aWVzIHRvIHBvaW50IGltbWVkaWF0ZWx5IHRvIHRoZWlyIGZpbmFsIHVuZGVybHlpbmcgcHJvbWlzZS4gKilcbiAgbGV0IHJlYyB1bmRlcmx5aW5nXG4gICAgICA6IHR5cGUgdSBjLiAoJ2EsIHUsIGMpIHByb21pc2UgLT4gKCdhLCB1bmRlcmx5aW5nLCBjKSBwcm9taXNlID1cbiAgICBmdW4gcCAtPlxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiAocCA6IChfLCB1bmRlcmx5aW5nLCBfKSBwcm9taXNlKVxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG4gICAgfCBQZW5kaW5nIF8gLT4gcFxuICAgIHwgUHJveHkgcCcgLT5cbiAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICBpZiBub3QgKGlkZW50aWNhbCBwJycgcCcpIHRoZW5cbiAgICAgICAgcC5zdGF0ZSA8LSBQcm94eSBwJyc7XG4gICAgICBwJydcblxuXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZCA9XG4gICAgfCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG9mICgnYSwgJ3UsICdjKSBwcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgc2V0X3Byb21pc2Vfc3RhdGUgcCBzdGF0ZSA9XG4gICAgbGV0IHAgOiAoXywgXywgXykgcHJvbWlzZSA9IE9iai5tYWdpYyBwIGluXG4gICAgcC5zdGF0ZSA8LSBzdGF0ZTtcbiAgICBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHBcblxuICAoKiBbc2V0X3Byb21pc2Vfc3RhdGUgcCBzdGF0ZV0gbXV0YXRlcyB0aGUgc3RhdGUgb2YgW3BdLCBhbmQgZXZhbHVhdGVzIHRvIGFcbiAgICAgKHdyYXBwZWQpIHJlZmVyZW5jZSB0byBbcF0gd2l0aCB0aGUgc2FtZSBpbnZhcmlhbnRzIGFzIG9uIFtzdGF0ZV0uIFRoZVxuICAgICBvcmlnaW5hbCByZWZlcmVuY2UgW3BdIHNob3VsZCBiZSBzaGFkb3dlZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbjpcblxuICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPSBzZXRfcHJvbWlzZV9zdGF0ZSBwIChGdWxmaWxsZWQgNDIpIGluIC4uLlxuXG4gICAgIFRoaXMgaXMgYSBraW5kIG9mIGNoZWFwIGltaXRhdGlvbiBvZiBsaW5lYXIgdHlwaW5nLCB3aGljaCBpcyBnb29kIGVub3VnaFxuICAgICBmb3IgdGhlIG5lZWRzIG9mIFtsd3QubWxdLlxuXG4gICAgIEludGVybmFsIGZ1bmN0aW9ucyB0aGF0IHRyYW5zaXRpdmVseSBjYWxsIFtzZXRfcHJvbWlzZV9zdGF0ZV0gbGlrZXdpc2VcbiAgICAgcmV0dXJuIHRoZSBuZXcgcmVmZXJlbmNlLiBUaGlzIGVuZHMgYXQgc29tZSB0b3AtbGV2ZWwgZnVuY3Rpb24sIHR5cGljYWxseVxuICAgICBlaXRoZXIgYSBjYWxsYmFjayBvciBhIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLiBUaGVyZSwgdGhlIG5ldyByZWZlcmVuY2VcbiAgICAgaXMgc3RpbGwgYm91bmQsIGJ1dCBpcyB0aGVuIGV4cGxpY2l0bHkgaWdub3JlZC5cblxuICAgICBUaGUgc3RhdGUgb2YgYSBwcm9taXNlIGlzIG5ldmVyIHVwZGF0ZWQgZGlyZWN0bHkgb3V0c2lkZSB0aGlzIG1vZHVsZVxuICAgICBbQmFzaWNfaGVscGVyc10uIEFsbCB1cGRhdGVzIGVsc2V3aGVyZSBhcmUgZG9uZSB0aHJvdWdoXG4gICAgIFtzZXRfcHJvbWlzZV9zdGF0ZV0uXG5cbiAgICAgVG8gYXZvaWQgcHJvYmxlbXMgd2l0aCB0eXBlLWxldmVsIGludmFyaWFudHMgbm90IG1hdGNoaW5nIHJlYWxpdHksIGRhdGFcbiAgICAgc3RydWN0dXJlcyBkbyBub3Qgc3RvcmUgcHJvbWlzZXMgd2l0aCBjb25jcmV0ZSBpbnZhcmlhbnRzIC0tIGV4Y2VwdFxuICAgICByZXNvbHZlZCBwcm9taXNlcywgd2hpY2ggYXJlIGltbXV0YWJsZS4gSW5kZWVkLCBpZiBvbmUgbG9va3MgYXRcbiAgICAgZGVmaW5pdGlvbnMgb2YgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgY2FuIHN0b3JlIHBlbmRpbmcgcHJvbWlzZXMsIGUuZy4gdGhlXG4gICAgIFtob3dfdG9fY2FuY2VsXSBncmFwaCwgdGhlIGludmFyaWFudHMgYXJlIGV4aXN0ZW50aWFsbHkgcXVhbnRpZmllZC5cblxuICAgICBOb3RlOiBpdCdzIHBvc3NpYmxlIHRvIHN0YXRpY2FsbHkgZGlzYWxsb3cgdGhlIHNldHRpbmcgb2YgdGhlIFtzdGF0ZV0gZmllbGRcbiAgICAgYnkgbWFraW5nIHR5cGUgW3Byb21pc2VdIHByaXZhdGUuIEhvd2V2ZXIsIHRoYXQgc2VlbXMgdG8gcmVxdWlyZSB3cml0aW5nIGFcbiAgICAgc2lnbmF0dXJlIHRoYXQgaXMgYSBuZWFyLWR1cGxpY2F0ZSBvZiBbTWFpbl9pbnRlcm5hbF90eXBlc10sIG9yIHNvbWUgYWJ1c2VcbiAgICAgb2YgZnVuY3RvcnMuICopXG5cblxuXG4gIHR5cGUgJ2EgbWF5X25vd19iZV9wcm94eSA9XG4gICAgfCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgOlxuICAgICAgKCdhLCBfLCBwZW5kaW5nKSBwcm9taXNlIC0+ICdhIG1heV9ub3dfYmVfcHJveHlcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBtYXlfbm93X2JlX3Byb3h5IHAgPSBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcFxuXG4gICgqIE1hbnkgZnVuY3Rpb25zLCBmb3IgZXhhbXBsZSBbTHd0LmJpbmRdIGFuZCBbTHd0LmpvaW5dLCBjcmVhdGUgYSBmcmVzaFxuICAgICBwZW5kaW5nIHByb21pc2UgW3BdIGFuZCByZXR1cm4gaXQgdG8gdGhlIHVzZXIuXG5cbiAgICAgVGhleSBkbyBub3QgcmV0dXJuIGEgY29ycmVzcG9uZGluZyByZXNvbHZlci4gVGhhdCBtZWFucyB0aGF0IG9ubHkgdGhlXG4gICAgIGZ1bmN0aW9uIGl0c2VsZiAodHlwaWNhbGx5LCBhIGNhbGxiYWNrIHJlZ2lzdGVyZWQgYnkgaXQpIGNhbiByZXNvbHZlIFtwXS5cbiAgICAgVGhlIG9ubHkgdGhpbmcgdGhlIHVzZXIgY2FuIGRvIGRpcmVjdGx5IGlzIHRyeSB0byBjYW5jZWwgW3BdLCBidXQsIHNpbmNlXG4gICAgIFtwXSBpcyBub3QgYW4gaW5pdGlhbCBwcm9taXNlLCB0aGUgY2FuY2VsbGF0aW9uIGF0dGVtcHQgc2ltcGx5IHByb3BhZ2F0ZXNcbiAgICAgcGFzdCBbcF0gdG8gW3BdJ3MgcHJlZGVjZXNzb3JzLiBJZiB0aGF0IGV2ZW50dWFsbHkgcmVzdWx0cyBpbiBjYW5jZWxpbmdcbiAgICAgW3BdLCBpdCB3aWxsIGJlIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc21zIG9mIHRoZSBmdW5jdGlvbiAoZS5nLlxuICAgICBbTHd0LmJpbmRdJ3MgY2FsbGJhY2spLlxuXG4gICAgIEFzIGEgcmVzdWx0LCB0aGUgb25seSBwb3NzaWJsZSBzdGF0ZSBjaGFuZ2UsIGJlZm9yZSB0aGUgY2FsbGJhY2ssIGlzIHRoYXRcbiAgICAgW3BdIG1heSBoYXZlIGJlY29tZSBhIHByb3h5LiBOb3csXG5cbiAgICAgLSBJZiBbcF0gZG9lcyBub3QgdW5kZXJnbyB0aGlzIHN0YXRlIGNoYW5nZSBhbmQgYmVjb21lIGEgcHJveHksIGl0IHJlbWFpbnNcbiAgICAgICBhbiB1bmRlcmx5aW5nLCBwZW5kaW5nIHByb21pc2UuXG4gICAgIC0gSWYgW3BdIGRvZXMgYmVjb21lIGEgcHJveHksIGl0IHdpbGwgYmUgYSBwcm94eSBmb3IgYW5vdGhlciBwcm9taXNlIFtwJ11cbiAgICAgICBjcmVhdGVkIGZyZXNoIGJ5IFtMd3QuYmluZF0sIHRvIHdoaWNoIHRoaXMgc2FtZSBhcmd1bWVudCBhcHBsaWVzLiBTZWVcbiAgICAgICBbbWFrZV9pbnRvX3Byb3h5XS5cblxuICAgICBTbywgYnkgaW5kdWN0aW9uIG9uIHRoZSBsZW5ndGggb2YgdGhlIHByb3h5IChbUHJveHkgX10pIGNoYWluLCBhdCB0aGUgdGltZVxuICAgICB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLCBbcF0gaXMgZWl0aGVyIGFuIHVuZGVybHlpbmcsIHBlbmRpbmcgcHJvbWlzZSwgb3IgYVxuICAgICBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuXG5cbiAgICAgVGhlIGNhc3RcblxuICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpbiAuLi5cblxuICAgICBlbmNvZGVzIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGlzIHN0YXRlIGNoYW5nZS4gSXQgcmVwbGFjZXMgYSByZWZlcmVuY2VcblxuICAgICAgIHAgOiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpXG5cbiAgICAgd2l0aFxuXG4gICAgICAgcCA6ICgnYSwgJFVua25vd24sIHBlbmRpbmcpXG5cbiAgICAgYW5kIGlzIHR5cGljYWxseSBzZWVuIGF0IHRoZSBiZWdpbm5pbmcgb2YgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgYnlcbiAgICAgW0x3dC5iaW5kXSBhbmQgc2ltaWxhciBmdW5jdGlvbnMuXG5cbiAgICAgVGhlIGNhc3QgaXMgYSBuby1vcCBjYXN0LiBUaGUgaW50cm9kdWN0aW9uIGFuZCBpbW1lZGlhdGUgZWxpbWluYXRpb24gb2ZcbiAgICAgW1N0YXRlX21heV9oYXZlX2NoYW5nZWQgX10gc2VlbXMgdG8gYmUgb3B0aW1pemVkIGF3YXkgZXZlbiBvbiBvbGQgdmVyc2lvbnNcbiAgICAgb2YgT0NhbWwuICopXG5lbmRcbm9wZW4gQmFzaWNfaGVscGVyc1xuXG4oKiBTbWFsbCBoZWxwZXJzIHRvIGF2b2lkIGNhdGNoaW5nIG9jYW1sLXJ1bnRpbWUgZXhjZXB0aW9ucyAqKVxubW9kdWxlIEV4Y2VwdGlvbl9maWx0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZXhuIC0+IGJvb2xcbiAgbGV0IGhhbmRsZV9hbGwgPSBmdW4gXyAtPiB0cnVlXG4gIGxldCBoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lID0gZnVuY3Rpb25cbiAgICB8IE91dF9vZl9tZW1vcnkgLT4gZmFsc2VcbiAgICB8IFN0YWNrX292ZXJmbG93IC0+IGZhbHNlXG4gICAgfCBfIC0+IHRydWVcbiAgbGV0IHYgPVxuICAgICgqIERlZmF1bHQgdmFsdWU6IHRoZSBsZWdhY3kgYmVoYXZpb3VyIHRvIGF2b2lkIGJyZWFraW5nIHByb2dyYW1zICopXG4gICAgcmVmIGhhbmRsZV9hbGxcbiAgbGV0IHNldCBmID0gdiA6PSBmXG4gIGxldCBydW4gZSA9ICF2IGVcbmVuZFxuXG5tb2R1bGUgU2VxdWVuY2VfYXNzb2NpYXRlZF9zdG9yYWdlIDpcbnNpZ1xuICAoKiBQdWJsaWMgaW50ZXJmYWNlICopXG4gIHR5cGUgJ3Yga2V5XG4gIHZhbCBuZXdfa2V5IDogdW5pdCAtPiBfIGtleVxuICB2YWwgZ2V0IDogJ3Yga2V5IC0+ICd2IG9wdGlvblxuICB2YWwgd2l0aF92YWx1ZSA6ICd2IGtleSAtPiAndiBvcHRpb24gLT4gKHVuaXQgLT4gJ2IpIC0+ICdiXG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlICopXG4gIHZhbCBjdXJyZW50X3N0b3JhZ2UgOiBzdG9yYWdlIHJlZlxuZW5kID1cbnN0cnVjdFxuICAoKiBUaGUgaWRlYSBiZWhpbmQgc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIGlzIHRvIHByZXNlcnZlIHNvbWUgdmFsdWVzXG4gICAgIGR1cmluZyBhIGNhbGwgdG8gW2JpbmRdIG9yIG90aGVyIHNlcXVlbnRpYWwgY29tcG9zaXRpb24gb3BlcmF0aW9uLCBhbmRcbiAgICAgcmVzdG9yZSB0aG9zZSB2YWx1ZXMgaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uOlxuXG4gICAgICAgTHd0LndpdGhfdmFsdWUgbXlfa2V5IChTb21lIFwiZm9vXCIpIChmdW4gKCkgLT5cbiAgICAgICBwID58PSBmdW4gKCkgLT5cbiAgICAgICBhc3NlcnQgKEx3dC5nZXQgbXlfa2V5ID0gU29tZSBcImZvb1wiKSlcbiAgICAgICAgICgqIFdpbGwgc3VjY2VlZCBldmVuIGlmIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIGxhdGVyLiAqKVxuXG4gICAgIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBtYXR0ZXIgdGhhdCB0aGUgY2FsbGJhY2sgaXMgZGVmaW5lZCB3aXRoaW4gYW5cbiAgICAgYXJndW1lbnQgb2YgW3dpdGhfdmFsdWVdLCBpLmUuLCB0aGlzIGRvZXMgdGhlIHNhbWU6XG5cbiAgICAgICBsZXQgZiA9IGZ1biAoKSAtPiBhc3NlcnQgKEx3dC5nZXQgbXlfa2V5ID0gU29tZSBcImZvb1wiKSBpblxuICAgICAgIEx3dC53aXRoX3ZhbHVlIG15X2tleSAoU29tZSBcImZvb1wiKSAoZnVuICgpIC0+IHAgPnw9IGYpXG5cbiAgICAgQWxsIHRoYXQgbWF0dGVycyBpcyB0aGF0IHRoZSB0b3AtbW9zdCBzZXF1ZW5jaW5nIG9wZXJhdGlvbiAoaW4gdGhpcyBjYXNlLFxuICAgICBtYXApIGlzIGV4ZWN1dGVkIGJ5IHRoYXQgYXJndW1lbnQuXG5cbiAgICAgVGhpcyBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHNpbmdsZSBnbG9iYWwgaGV0ZXJvZ2VuZW91cyBrZXktdmFsdWUgbWFwLlxuICAgICBTZXF1ZW50aWFsIGNvbXBvc2l0aW9uIGZ1bmN0aW9ucyBzbmFwc2hvdCB0aGlzIG1hcCB3aGVuIHRoZXkgYXJlIGNhbGxlZCxcbiAgICAgYW5kIHJlc3RvcmUgdGhlIHNuYXBzaG90IHJpZ2h0IGJlZm9yZSBjYWxsaW5nIHRoZSB1c2VyJ3MgY2FsbGJhY2suIFRoZSBzYW1lXG4gICAgIGhhcHBlbnMgZm9yIGNhbmNlbCB0cmlnZ2VycyBhZGRlZCBieSBbb25fY2FuY2VsXS5cblxuICAgICBNYWludGFpbmVyJ3Mgbm90ZTogSSB0aGluayB1c2luZyB0aGlzIG1lY2hhbmlzbSBzaG91bGQgYmUgZGlzY291cmFnZWQgaW5cbiAgICAgbmV3IGNvZGUuICopXG5cbiAgdHlwZSAndiBrZXkgPSB7XG4gICAgaWQgOiBpbnQ7XG4gICAgbXV0YWJsZSB2YWx1ZSA6ICd2IG9wdGlvbjtcbiAgfVxuXG4gIGxldCBuZXh0X2tleV9pZCA9IHJlZiAwXG5cbiAgbGV0IG5ld19rZXkgKCkgPVxuICAgIGxldCBpZCA9ICFuZXh0X2tleV9pZCBpblxuICAgIG5leHRfa2V5X2lkIDo9IGlkICsgMTtcbiAgICB7aWQgPSBpZDsgdmFsdWUgPSBOb25lfVxuXG4gIGxldCBjdXJyZW50X3N0b3JhZ2UgPSByZWYgU3RvcmFnZV9tYXAuZW1wdHlcblxuICBsZXQgZ2V0IGtleSA9XG4gICAgaWYgU3RvcmFnZV9tYXAubWVtIGtleS5pZCAhY3VycmVudF9zdG9yYWdlIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWZyZXNoID0gU3RvcmFnZV9tYXAuZmluZCBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZSBpblxuICAgICAgcmVmcmVzaCAoKTtcbiAgICAgIGxldCB2YWx1ZSA9IGtleS52YWx1ZSBpblxuICAgICAga2V5LnZhbHVlIDwtIE5vbmU7XG4gICAgICB2YWx1ZVxuICAgIGVuZFxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgd2l0aF92YWx1ZSBrZXkgdmFsdWUgZiA9XG4gICAgbGV0IG5ld19zdG9yYWdlID1cbiAgICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIGxldCByZWZyZXNoID0gZnVuICgpIC0+IGtleS52YWx1ZSA8LSB2YWx1ZSBpblxuICAgICAgICBTdG9yYWdlX21hcC5hZGQga2V5LmlkIHJlZnJlc2ggIWN1cnJlbnRfc3RvcmFnZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFN0b3JhZ2VfbWFwLnJlbW92ZSBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZVxuICAgIGluXG5cbiAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cbiAgICBjdXJyZW50X3N0b3JhZ2UgOj0gbmV3X3N0b3JhZ2U7XG4gICAgdHJ5XG4gICAgICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICByZXN1bHRcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICByYWlzZSBleG5cbmVuZFxuaW5jbHVkZSBTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VcblxuXG5cbm1vZHVsZSBQZW5kaW5nX2NhbGxiYWNrcyA6XG5zaWdcbiAgKCogTXV0YXRpbmcgY2FsbGJhY2sgbGlzdHMgYXR0YWNoZWQgdG8gcGVuZGluZyBwcm9taXNlcyAqKVxuICB2YWwgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayA6XG4gICAgJ2EgY2FsbGJhY2tzIC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgOlxuICAgICdhIHQgbGlzdCAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IHVuaXRcbiAgdmFsIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9yZW1vdmVfZnVuY3Rpb24gOlxuICAgICdhIHQgbGlzdCAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IGNhbmNlbF9jYWxsYmFja1xuICB2YWwgYWRkX2NhbmNlbF9jYWxsYmFjayA6ICdhIGNhbGxiYWNrcyAtPiBjYW5jZWxfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgbWVyZ2VfY2FsbGJhY2tzIDogZnJvbTonYSBjYWxsYmFja3MgLT4gaW50bzonYSBjYWxsYmFja3MgLT4gdW5pdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgY29uY2F0X3JlZ3VsYXJfY2FsbGJhY2tzIGwxIGwyID1cbiAgICBiZWdpbiBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5LCBfIC0+IGwyXG4gICAgfCBfLCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT4gbDFcbiAgICB8IF8sIF8gLT4gUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAobDEsIGwyKVxuICAgIGVuZCBbQG9jYW1sLndhcm5pbmcgXCItNFwiXVxuXG4gIGxldCBjb25jYXRfY2FuY2VsX2NhbGxiYWNrcyBsMSBsMiA9XG4gICAgYmVnaW4gbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5LCBfIC0+IGwyXG4gICAgfCBfLCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPiBsMVxuICAgIHwgXywgXyAtPiBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGwxLCBsMilcbiAgICBlbmQgW0BvY2FtbC53YXJuaW5nIFwiLTRcIl1cblxuICAoKiBJbiBhIGNhbGxiYWNrIGxpc3QsIGZpbHRlcnMgb3V0IGNlbGxzIG9mIGV4cGxpY2l0bHkgcmVtb3ZhYmxlIGNhbGxiYWNrc1xuICAgICB0aGF0IGhhdmUgYmVlbiByZW1vdmVkLiAqKVxuICBsZXQgcmVjIGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzID0gZnVuY3Rpb25cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayB7Y29udGVudHMgPSBOb25lfSAtPlxuICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG5cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayB7Y29udGVudHMgPSBTb21lIF99XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIF9cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSBhcyBjYWxsYmFja3MgLT5cbiAgICAgIGNhbGxiYWNrc1xuXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChsMSwgbDIpIC0+XG4gICAgICBsZXQgbDEgPSBjbGVhbl91cF9jYWxsYmFja19jZWxscyBsMSBpblxuICAgICAgbGV0IGwyID0gY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgbDIgaW5cbiAgICAgIGNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyBsMSBsMlxuXG4gICgqIFNlZSBbY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbF0gYW5kIFttZXJnZV9jYWxsYmFja3NdLiAqKVxuICBsZXQgY2xlYW51cF90aHJvdHRsZSA9IDQyXG5cbiAgKCogRXhwbGljaXRseSByZW1vdmFibGUgY2FsbGJhY2tzIGFyZSBhZGRlZCAobWFpbmx5KSBieSBbTHd0LmNob29zZV0gYW5kIGl0c1xuICAgICBzaW1pbGFyIGZ1bmN0aW9ucy4gSW4gW0x3dC5jaG9vc2UgW3A7IHAnXV0sIGlmIFtwJ10gcmVzb2x2ZXMgZmlyc3QsIHRoZVxuICAgICBjYWxsYmFjayBhZGRlZCBieSBbTHd0LmNob29zZV0gdG8gW3BdIGlzIHJlbW92ZWQuXG5cbiAgICAgVGhlIHJlbW92YWwgaXRzZWxmIGlzIGFjY29tcGxpc2hlZCB3aGVuIHRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSByZWZlcmVuY2VcbiAgICAgY2VsbCBbY2VsbF0sIHdoaWNoIGNvbnRhaW5zIHRoZSByZWZlcmVuY2UgdG8gdGhhdCBjYWxsYmFjay5cblxuICAgICBJZiBbcF0gaXMgYSBsb25nLXBlbmRpbmcgcHJvbWlzZSB0aGF0IHJlcGVhdGVkbHkgcGFydGljaXBhdGVzIGluXG4gICAgIFtMd3QuY2hvb3NlXSwgcGVyaGFwcyBpbiBhIGxvb3AsIGl0IHdpbGwgYWNjdW11bGF0ZSBhIGxhcmdlIG51bWJlciBvZlxuICAgICBjbGVhcmVkIHJlZmVyZW5jZSBjZWxscyBpbiB0aGlzIGZhc2hpb24uIFRvIGF2b2lkIGEgbWVtb3J5IGxlYWssIHRoZXkgbXVzdFxuICAgICBiZSBjbGVhbmVkIHVwLiBIb3dldmVyLCB0aGUgY2VsbHMgYXJlIG5vdCBjbGVhbmVkIHVwIG9uICpldmVyeSogcmVtb3ZhbCxcbiAgICAgcHJlc3VtYWJseSBiZWNhdXNlIHNjYW5uaW5nIHRoZSBjYWxsYmFjayBsaXN0IHRoYXQgb2Z0ZW4sIGFuZCByZWJ1aWxkaW5nXG4gICAgIGl0LCBjYW4gZ2V0IGV4cGVuc2l2ZS5cblxuICAgICBDbGVhbnVwIGlzIHRocm90dGxlZCBieSBtYWludGFpbmluZyBhIGNvdW50ZXIsIFtjbGVhbnVwc19kZWZlcnJlZF0sIG9uIGVhY2hcbiAgICAgcGVuZGluZyBwcm9taXNlLiBUaGUgY291bnRlciBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgdGhpcyBmdW5jdGlvbiB3YW50c1xuICAgICB0byBjbGVhbiB0aGUgY2FsbGJhY2sgbGlzdCAocmlnaHQgYWZ0ZXIgY2xlYXJpbmcgYSBjZWxsKS4gV2hlbiB0aGUgY291bnRlclxuICAgICByZWFjaGVzIFtjbGVhbnVwX3Rocm90dGxlXSwgdGhlIGNhbGxiYWNrIGxpc3QgaXMgYWN0dWFsbHkgc2Nhbm5lZCBhbmRcbiAgICAgY2xlYXJlZCBjYWxsYmFjayBjZWxscyBhcmUgcmVtb3ZlZC4gKilcbiAgbGV0IGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwcyA9XG4gICAgY2VsbCA6PSBOb25lO1xuXG4gICAgKCogR28gdGhyb3VnaCB0aGUgcHJvbWlzZXMgdGhlIGNlbGwgaGFkIG9yaWdpbmFsbHkgYmVlbiBhZGRlZCB0bywgYW5kIGVpdGhlclxuICAgICAgIGRlZmVyIGEgY2xlYW51cCwgb3IgYWN0dWFsbHkgY2xlYW4gdXAgdGhlaXIgY2FsbGJhY2sgbGlzdHMuICopXG4gICAgcHMgfD4gTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICgqIFNvbWUgb2YgdGhlIHByb21pc2VzIG1heSBhbHJlYWR5IGhhdmUgYmVlbiByZXNvbHZlZCBhdCB0aGUgdGltZSB0aGlzXG4gICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuICopXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+ICgpXG4gICAgICB8IFJlamVjdGVkIF8gLT4gKClcblxuICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgICBtYXRjaCBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3Mgd2l0aFxuICAgICAgICAoKiBJZiB0aGUgcHJvbWlzZSBoYXMgb25seSBvbmUgcmVndWxhciBjYWxsYmFjaywgYW5kIGl0IGlzIHJlbW92YWJsZSwgaXRcbiAgICAgICAgICAgbXVzdCBoYXZlIGJlZW4gdGhlIGNlbGwgY2xlYXJlZCBpbiB0aGlzIGZ1bmN0aW9uLCBhYm92ZS4gSW4gdGhhdFxuICAgICAgICAgICBjYXNlLCBqdXN0IHNldCBpdHMgY2FsbGJhY2sgbGlzdCB0byBlbXB0eS4gKilcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgXyAtPlxuICAgICAgICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LSBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcblxuICAgICAgICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogSSB0aGluayB0aGlzIGZ1bmN0aW9uIHNob3VsZG4ndCB0cnkgdG8gdHJpZ2dlciBhXG4gICAgICAgICAgIGNsZWFudXAgaW4gdGhlIGZpcnN0IHR3byBjYXNlcywgYnV0IEkgYW0gcHJlc2VydmluZyB0aGVtIGZvciBub3csIGFzXG4gICAgICAgICAgIHRoaXMgaXMgaG93IHRoZSBjb2RlIHdhcyB3cml0dGVuIGluIHRoZSBwYXN0LiAqKVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgX1xuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyAtPlxuICAgICAgICAgIGxldCBjbGVhbnVwc19kZWZlcnJlZCA9IGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCArIDEgaW5cbiAgICAgICAgICBpZiBjbGVhbnVwc19kZWZlcnJlZCA+IGNsZWFudXBfdGhyb3R0bGUgdGhlbiBiZWdpblxuICAgICAgICAgICAgY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkIDwtIDA7XG4gICAgICAgICAgICBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3MgPC1cbiAgICAgICAgICAgICAgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzXG4gICAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICAgIGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCA8LSBjbGVhbnVwc19kZWZlcnJlZClcblxuICAoKiBDb25jYXRlbmF0ZXMgYm90aCBraW5kcyBvZiBjYWxsYmFja3Mgb24gW35mcm9tXSB0byB0aGUgY29ycmVzcG9uZGluZyBsaXN0c1xuICAgICBvZiBbfmludG9dLiBUaGUgY2FsbGJhY2sgbGlzdHMgb24gW35mcm9tXSBhcmUgKm5vdCogdGhlbiBjbGVhcmVkLCBiZWNhdXNlXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgYnkgW1NlcXVlbnRpYWxfY29tcG9zaXRpb24ubWFrZV9pbnRvX3Byb3h5XSxcbiAgICAgd2hpY2ggaW1tZWRpYXRlbHkgY2hhbmdlcyB0aGUgc3RhdGUgb2YgW35mcm9tXSBhbmQgbG9zZXMgcmVmZXJlbmNlcyB0byB0aGVcbiAgICAgb3JpZ2luYWwgY2FsbGJhY2sgbGlzdHMuXG5cbiAgICAgVGhlIFtjbGVhbnVwc19kZWZlcnJlZF0gZmllbGRzIG9mIGJvdGggcHJvbWlzZXMgYXJlIHN1bW1lZCwgYW5kIGlmIHRoZSBzdW1cbiAgICAgZXhjZWVkcyBbY2xlYW51cF90aHJvdHRsZV0sIGEgY2xlYW51cCBvZiByZWd1bGFyIGNhbGxiYWNrcyBpcyB0cmlnZ2VyZWQuXG4gICAgIFRoaXMgaXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3M7IHNlZVxuICAgICBbY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbF0uICopXG4gIGxldCBtZXJnZV9jYWxsYmFja3MgfmZyb20gfmludG8gPVxuICAgIGxldCByZWd1bGFyX2NhbGxiYWNrcyA9XG4gICAgICBjb25jYXRfcmVndWxhcl9jYWxsYmFja3MgaW50by5yZWd1bGFyX2NhbGxiYWNrcyBmcm9tLnJlZ3VsYXJfY2FsbGJhY2tzIGluXG4gICAgbGV0IGNsZWFudXBzX2RlZmVycmVkID0gaW50by5jbGVhbnVwc19kZWZlcnJlZCArIGZyb20uY2xlYW51cHNfZGVmZXJyZWQgaW5cblxuICAgIGxldCByZWd1bGFyX2NhbGxiYWNrcywgY2xlYW51cHNfZGVmZXJyZWQgPVxuICAgICAgaWYgY2xlYW51cHNfZGVmZXJyZWQgPiBjbGVhbnVwX3Rocm90dGxlIHRoZW5cbiAgICAgICAgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgcmVndWxhcl9jYWxsYmFja3MsIDBcbiAgICAgIGVsc2VcbiAgICAgICAgcmVndWxhcl9jYWxsYmFja3MsIGNsZWFudXBzX2RlZmVycmVkXG4gICAgaW5cblxuICAgIGxldCBjYW5jZWxfY2FsbGJhY2tzID1cbiAgICAgIGNvbmNhdF9jYW5jZWxfY2FsbGJhY2tzIGludG8uY2FuY2VsX2NhbGxiYWNrcyBmcm9tLmNhbmNlbF9jYWxsYmFja3MgaW5cblxuICAgIGludG8ucmVndWxhcl9jYWxsYmFja3MgPC0gcmVndWxhcl9jYWxsYmFja3M7XG4gICAgaW50by5jYW5jZWxfY2FsbGJhY2tzIDwtIGNhbmNlbF9jYWxsYmFja3M7XG4gICAgaW50by5jbGVhbnVwc19kZWZlcnJlZCA8LSBjbGVhbnVwc19kZWZlcnJlZFxuXG5cblxuICAoKiBHZW5lcmFsLCBpbnRlcm5hbCwgZnVuY3Rpb24gZm9yIGFkZGluZyBhIHJlZ3VsYXIgY2FsbGJhY2suICopXG4gIGxldCBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUgY2FsbGJhY2tzIG5vZGUgPVxuICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LVxuICAgICAgbWF0Y2ggY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIHdpdGhcbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgIG5vZGVcbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBfXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBfXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyBhcyBleGlzdGluZyAtPlxuICAgICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChub2RlLCBleGlzdGluZylcblxuICBsZXQgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBjYWxsYmFja3MgZiA9XG4gICAgYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlXG4gICAgICBjYWxsYmFja3MgKFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgZilcblxuICAoKiBBZGRzIFtjYWxsYmFja10gYXMgcmVtb3ZhYmxlIHRvIGVhY2ggcHJvbWlzZSBpbiBbcHNdLiBUaGUgZmlyc3QgcHJvbWlzZSBpblxuICAgICBbcHNdIHRvIHRyaWdnZXIgW2NhbGxiYWNrXSByZW1vdmVzIFtjYWxsYmFja10gZnJvbSB0aGUgb3RoZXIgcHJvbWlzZXM7IHRoaXNcbiAgICAgZ3VhcmFudGVlcyB0aGF0IFtjYWxsYmFja10gaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4gQWxsIHRoZSBwcm9taXNlcyBpbiBbcHNdXG4gICAgIG11c3QgYmUgcGVuZGluZy5cblxuICAgICBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uLCBpbmRpcmVjdGx5IHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICBbTHd0LmNob29zZV0gYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiAqKVxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZiA9XG4gICAgbGV0IHJlYyBjZWxsID0gcmVmIChTb21lIHNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlcilcbiAgICBhbmQgc2VsZl9yZW1vdmluZ19jYWxsYmFja193cmFwcGVyIHJlc3VsdCA9XG4gICAgICBjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsIGNlbGwgfm9yaWdpbmFsbHlfYWRkZWRfdG86cHM7XG4gICAgICBmIHJlc3VsdFxuICAgIGluXG5cbiAgICBsZXQgbm9kZSA9IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBjZWxsIGluXG4gICAgcHMgfD4gTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT4gYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlIGNhbGxiYWNrcyBub2RlXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBSZWplY3RlZCBfIC0+IGFzc2VydCBmYWxzZSk7XG5cbiAgICBjZWxsXG5cbiAgbGV0IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGYgPVxuICAgIGlnbm9yZSAoYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZilcblxuICAoKiBUaGlzIGlzIGJhc2ljYWxseSBqdXN0IHRvIHN1cHBvcnQgW0x3dC5wcm90ZWN0ZWRdLCB3aGljaCBuZWVkcyB0byByZW1vdmVcbiAgICAgdGhlIGNhbGxiYWNrIGluIGNpcmN1bXN0YW5jZXMgb3RoZXIgdGhhbiB0aGUgY2FsbGJhY2sgYmVpbmcgY2FsbGVkLiAqKVxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX3JlbW92ZV9mdW5jdGlvbiBwcyBmID1cbiAgICBsZXQgY2VsbCA9IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9jZWxsIHBzIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgIGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwc1xuXG4gIGxldCBhZGRfY2FuY2VsX2NhbGxiYWNrIGNhbGxiYWNrcyBmID1cbiAgICBsZXQgbm9kZSA9IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrICghY3VycmVudF9zdG9yYWdlLCBmKSBpblxuXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIG1hdGNoIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIHdpdGhcbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgbm9kZVxuXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIF9cbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgX1xuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyAtPlxuICAgICAgICBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKG5vZGUsIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzKVxuZW5kXG5vcGVuIFBlbmRpbmdfY2FsbGJhY2tzXG5cblxuXG5tb2R1bGUgUmVzb2x1dGlvbl9sb29wIDpcbnNpZ1xuICAoKiBBbGwgdXNlci1wcm92aWRlZCBjYWxsYmFja3MgYXJlIGNhbGxlZCBieSBMd3Qgb25seSB0aHJvdWdoIHRoaXMgbW9kdWxlLiBJdFxuICAgICB0cmFja3MgdGhlIGN1cnJlbnQgY2FsbGJhY2sgc3RhY2sgZGVwdGgsIGFuZCBkZWNpZGVzIHdoZXRoZXIgZWFjaCBjYWxsYmFja1xuICAgICBjYWxsIHNob3VsZCBiZSBkZWZlcnJlZCBvciBub3QuICopXG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlIHVzZWQgb25seSBpbiB0aGlzIG1vZHVsZSBMd3QgKilcbiAgdmFsIHJlc29sdmUgOlxuICAgID9hbGxvd19kZWZlcnJpbmc6Ym9vbCAtPlxuICAgID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6aW50IC0+XG4gICAgKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlIC0+XG4gICAgJ2EgcmVzb2x2ZWRfc3RhdGUgLT5cbiAgICAgICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlX2NoYW5nZWRcblxuICB2YWwgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtIDpcbiAgICA/YWxsb3dfZGVmZXJyaW5nOmJvb2wgLT5cbiAgICA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOmludCAtPlxuICAgICgnYSBjYWxsYmFja3MpIC0+XG4gICAgJ2EgcmVzb2x2ZWRfc3RhdGUgLT5cbiAgICAgIHVuaXRcblxuICB2YWwgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0IDpcbiAgICA/cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOmJvb2wgLT5cbiAgICBjYWxsYmFjazoodW5pdCAtPiAnYSkgLT5cbiAgICBpZl9kZWZlcnJlZDoodW5pdCAtPiAnYSAqICdiIHJlZ3VsYXJfY2FsbGJhY2sgKiAnYiByZXNvbHZlZF9zdGF0ZSkgLT5cbiAgICAgICdhXG5cbiAgdmFsIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgZXhwb3NlZCB0byBvdGhlciBtb2R1bGVzIGluIEx3dCAqKVxuICB2YWwgYWJhbmRvbl93YWtldXBzIDogdW5pdCAtPiB1bml0XG5cbiAgKCogUHVibGljIGludGVyZmFjZSAqKVxuICBleGNlcHRpb24gQ2FuY2VsZWRcblxuICB2YWwgYXN5bmNfZXhjZXB0aW9uX2hvb2sgOiAoZXhuIC0+IHVuaXQpIHJlZlxuZW5kID1cbnN0cnVjdFxuICAoKiBXaGVuIEx3dCBuZWVkcyB0byBjYWxsIGEgY2FsbGJhY2ssIGl0IGVudGVycyB0aGUgcmVzb2x1dGlvbiBsb29wLiBUaGlzXG4gICAgIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gTHd0IHNldHMgdGhlIHN0YXRlIG9mIG9uZSBwcm9taXNlIHRvIFtGdWxmaWxsZWQgX11cbiAgICAgb3IgW1JlamVjdGVkIF9dLiBUaGUgY2FsbGJhY2tzIHRoYXQgd2VyZSBhdHRhY2hlZCB0byB0aGUgcHJvbWlzZSB3aGVuIGl0XG4gICAgIHdhcyBwZW5kaW5nIG11c3QgdGhlbiBiZSBjYWxsZWQuXG5cbiAgICAgVGhpcyBhbHNvIGhhcHBlbnMgaW4gYSBmZXcgb3RoZXIgc2l0dWF0aW9ucy4gRm9yIGV4YW1wbGUsIHdoZW4gW0x3dC5iaW5kXVxuICAgICBpcyBjYWxsZWQgb24gYSBwcm9taXNlLCBidXQgdGhhdCBwcm9taXNlIGlzIGFscmVhZHkgcmVzb2x2ZWQsIHRoZSBjYWxsYmFja1xuICAgICBwYXNzZWQgdG8gW2JpbmRdIG11c3QgYmUgY2FsbGVkLlxuXG4gICAgIFRoZSBjYWxsYmFja3MgdHJpZ2dlcmVkIGR1cmluZyB0aGUgcmVzb2x1dGlvbiBsb29wIG1pZ2h0IHJlc29sdmUgbW9yZVxuICAgICBwcm9taXNlcywgdHJpZ2dlcmluZyBtb3JlIGNhbGxiYWNrcywgYW5kIHNvIG9uLiBUaGlzIGlzIHdoYXQgbWFrZXMgdGhlXG4gICAgIHJlc29sdXRpb24gbG9vcCBhIHtlIGxvb3B9LlxuXG4gICAgIEx3dCBnZW5lcmFsbHkgdHJpZXMgdG8gY2FsbCBlYWNoIGNhbGxiYWNrIGltbWVkaWF0ZWx5LiBIb3dldmVyLCB0aGlzIGNhblxuICAgICBsZWFkIHRvIGEgcHJvZ3Jlc3NpdmUgZGVlcGVuaW5nIG9mIHRoZSBjYWxsIHN0YWNrLCB1bnRpbCB0aGVyZSBpcyBhIHN0YWNrXG4gICAgIG92ZXJmbG93LiBUaGlzIGNhbid0IGJlIGF2b2lkZWQgYnkgZG9pbmcgdGFpbCBjYWxscywgYmVjYXVzZSBMd3QgYWx3YXlzXG4gICAgIG5lZWRzIHRvIGRvIGV4Y2VwdGlvbiBoYW5kbGluZyBhcm91bmQgY2FsbGJhY2tzIGNhbGxzOiBlYWNoIGNhbGxiYWNrIGNhbGxcbiAgICAgaXMgZm9sbG93ZWQgYnkgYW4gZXhjZXB0aW9uIGhhbmRsZXIuIEluc3RlYWQsIHdoYXQgTHd0IGRvZXMgaXMgdHJhY2sgdGhlXG4gICAgIGN1cnJlbnQgY2FsbGJhY2sgY2FsbCBkZXB0aC4gT25jZSB0aGF0IGRlcHRoIHJlYWNoZXMgYSBjZXJ0YWluIG51bWJlcixcbiAgICAgW2RlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoXSwgZGVmaW5lZCBiZWxvdywgZnVydGhlciBjYWxsYmFja3NcbiAgICAgYXJlIGRlZmVycmVkIGludG8gYSBxdWV1ZSBpbnN0ZWFkLiBUaGF0IHF1ZXVlIGlzIGRyYWluZWQgd2hlbiBMd3QgZXhpdHNcbiAgICAgZnJvbSB0aGUgdG9wLW1vc3QgY2FsbGJhY2sgY2FsbCB0aGF0IHRyaWdnZXJlZCB0aGUgcmVzb2x1dGlvbiBsb29wIGluIHRoZVxuICAgICBmaXJzdCBwbGFjZS5cblxuICAgICBUbyBlbnN1cmUgdGhhdCB0aGlzIGRlZmVycmFsIG1lY2hhbmlzbSBpcyBhbHdheXMgcHJvcGVybHkgaW52b2tlZCwgYWxsXG4gICAgIGNhbGxiYWNrcyBjYWxsZWQgYnkgTHd0IGFyZSBjYWxsZWQgdGhyb3VnaCBvbmUgb2YgdGhyZWUgZnVuY3Rpb25zIHByb3ZpZGVkXG4gICAgIGJ5IHRoaXMgbW9kdWxlOlxuXG4gICAgIC0gW3Jlc29sdmVdLCB3aGljaCBjYWxscyBhbGwgdGhlIGNhbGxiYWNrcyBhc3NvY2lhdGVkIHRvIGEgcGVuZGluZyBwcm9taXNlXG4gICAgICAgKGFuZCByZXNvbHZlcyBpdCwgY2hhbmdpbmcgaXRzIHN0YXRlKS5cbiAgICAgLSBbcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXSwgd2hpY2ggaXMgaW50ZXJuYWxseSB1c2VkIGJ5IFtyZXNvbHZlXSB0b1xuICAgICAgIGNhbGwgY2FsbGJhY2tzIHRoYXQgYXJlIGluIGEgcmVjb3JkIG9mIHR5cGUgWydhIGNhbGxiYWNrc10sIHdoaWNoIHJlY29yZHNcbiAgICAgICBhcmUgYXNzb2NpYXRlZCB3aXRoIHBlbmRpbmcgcHJvbWlzZXMuIFRoaXMgZnVuY3Rpb24gaXMgZXhwb3NlZCBiZWNhdXNlXG4gICAgICAgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgW0x3dC5jYW5jZWxdIG5lZWRzIHRvIGNhbGwgaXQgZGlyZWN0bHkuXG4gICAgICAgUHJvbWlzZSByZXNvbHV0aW9uIGFuZCBjYWxsYmFjayBjYWxsaW5nIGFyZSBzZXBhcmF0ZWQgaW4gYSB1bmlxdWUgd2F5IGluXG4gICAgICAgW2NhbmNlbF0uXG4gICAgIC0gW3J1bl9jYWxsYmFja19vcl9kZWZlcl9pdF0sIHdoaWNoIGlzIHVzZWQgYnkgW0x3dC5iaW5kXSBhbmQgc2ltaWxhclxuICAgICAgIGZ1bmN0aW9ucyB0byBjYWxsIHNpbmdsZSBjYWxsYmFja3Mgd2hlbiB0aGUgcHJvbWlzZXMgcGFzc2VkIHRvXG4gICAgICAgW0x3dC5iaW5kXSwgZXRjLiwgYXJlIGFscmVhZHkgcmVzb2x2ZWQuXG5cbiAgICAgQ3VycmVudCBMd3QgYWN0dWFsbHkgaGFzIGEgbWVzc3kgbWl4IG9mIGNhbGxiYWNrLWNhbGxpbmcgYmVoYXZpb3JzLiBGb3JcbiAgICAgZXhhbXBsZSwgW0x3dC5iaW5kXSBpcyBleHBlY3RlZCB0byBhbHdheXMgY2FsbCBpdHMgY2FsbGJhY2sgaW1tZWRpYXRlbHksXG4gICAgIHdoaWxlIFtMd3Qud2FrZXVwX2xhdGVyXSBpcyBleHBlY3RlZCB0byBkZWZlciBhbGwgY2FsbGJhY2tzIG9mIHRoZSBwcm9taXNlXG4gICAgIHJlc29sdmVkLCB7ZSB1bmxlc3N9IEx3dCBpcyBub3QgYWxyZWFkeSBpbnNpZGUgdGhlIHJlc29sdXRpb24gbG9vcC5cblxuICAgICBXZSBwbGFubmVkIHRvIG1ha2UgdGhlc2UgYmVoYXZpb3JzIHVuaWZvcm0gaW4gTHd0IDQuMC4wLCBidXQgZGVjaWRlZFxuICAgICBhZ2FpbnN0IGl0IGR1ZSB0byB0aGUgcmlzayBvZiBicmVha2luZyB1c2Vycy4gU2VlXG5cbiAgICAgLSBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC81MDBcbiAgICAgLSBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC81MTlcblxuICAgICBBcyBwYXJ0IG9mIHRoZSBwcmVwYXJhdGlvbiBmb3IgdGhlIGNoYW5nZSwgdGhlIGFib3ZlIGNhbGxiYWNrLWludm9raW5nXG4gICAgIGZ1bmN0aW9ucyBzdXBwb3J0IHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzIHRvIGVtdWxhdGUgdGhlIHZhcmlvdXNcbiAgICAgYmVoYXZpb3JzLiBXZSBkZWNpZGVkIG5vdCB0byByZW1vdmUgdGhpcyBtYWNoaW5lcnksIGJlY2F1c2Ugd2UgbWlnaHQgd2FudFxuICAgICB0byBleHBvc2UgZGlmZmVyZW50IEFQSXMgdG8gTHd0IGluIHRoZSBmdXR1cmUuXG5cbiAgICAgLSBbfmFsbG93X2RlZmVycmluZzpmYWxzZV0gYWxsb3dzIGlnbm9yaW5nIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aCwgYW5kXG4gICAgICAgY2FsbGluZyB0aGUgY2FsbGJhY2tzIGltbWVkaWF0ZWx5LiBUaGlzIGVtdWxhdGVzIHRoZSBvbGQgcmVzb2x1dGlvblxuICAgICAgIGJlaGF2aW9yLlxuICAgICAtIFt+bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOjFdIGFsbG93cyBsaW1pdGluZyB0aGUgZGVwdGggd2hpY2hcbiAgICAgICB0cmlnZ2VycyBkZWZlcnJhbCBvbiBhIHBlci1jYWxsLXNpdGUgYmFzaXMuIFRoaXMgaXMgdXNlZCBieVxuICAgICAgIFtMd3Qud2FrZXVwX2xhdGVyXS5cbiAgICAgLSBbfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXSBpcyBsaWtlXG4gICAgICAgW35hbGxvd19kZWZlcnJpbmc6ZmFsc2VdLCB3aGljaCBpZ25vcmVzIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aC5cbiAgICAgICBIb3dldmVyLCB0byBlbnN1cmUgdGhhdCB0aGUgY2FsbGJhY2sgaXMgdGFpbC1jYWxsZWQsIEx3dCBkb2Vzbid0IGV2ZW5cbiAgICAgICB1cGRhdGUgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoIGZvciB0aGUgYmVuZWZpdCBvZiAqb3RoZXIqIGNhbGxiYWNrXG4gICAgICAgY2FsbHMuIEl0IGp1c3QgYmxpbmRseSBjYWxscyB0aGUgY2FsbGJhY2suXG5cbiAgICAgU2VlIGRpc2N1c3Npb24gb2YgY2FsbGJhY2stY2FsbGluZyBzZW1hbnRpY3MgaW46XG5cbiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvaXNzdWVzLzMyOVxuXG4gICAgICogQ29udGV4dFxuXG4gICAgIFRoZSByZXNvbHV0aW9uIGxvb3AgZWZmZWN0aXZlbHkgaGFuZGxlcyBhbGwgcHJvbWlzZXMgdGhhdCBjYW4gYmUgcmVzb2x2ZWRcbiAgICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYmxvY2tpbmcgb24gSS9PLiBBIGNvbXBsZXRlIHByb2dyYW0gdGhhdCBkb2VzIEkvT1xuICAgICBjYWxscyBbTHd0X21haW4ucnVuXS4gU2VlIFwiTm8gSS9PXCIgaW4gdGhlIE92ZXJ2aWV3LiAqKVxuXG5cblxuICBsZXQgYXN5bmNfZXhjZXB0aW9uX2hvb2sgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcHJlcnJfc3RyaW5nIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIjtcbiAgICAgIHByZXJyX3N0cmluZyAoUHJpbnRleGMudG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmVycl9jaGFyICdcXG4nO1xuICAgICAgUHJpbnRleGMucHJpbnRfYmFja3RyYWNlIHN0ZGVycjtcbiAgICAgIGZsdXNoIHN0ZGVycjtcbiAgICAgIGV4aXQgMilcblxuICBsZXQgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2ID1cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjYXJlIGlmIFtmXSBldmFsdWF0ZXMgdG8gYSBwcm9taXNlLiBJblxuICAgICAgIHBhcnRpY3VsYXIsIGlmIFtmIHZdIGV2YWx1YXRlcyB0byBbcF0gYW5kIFtwXSBpcyBhbHJlYWR5IHJlamVjdGVkIG9yIHdpbGxcbiAgICAgICBiZSByZWplY3QgbGF0ZXIsIGl0IGlzIG5vdCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhpcyBmdW5jdGlvbiB0byBwYXNzXG4gICAgICAgdGhlIGV4Y2VwdGlvbiB0byBbIWFzeW5jX2V4Y2VwdGlvbl9ob29rXS4gKilcbiAgICB0cnkgZiB2XG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cblxuXG5cbiAgZXhjZXB0aW9uIENhbmNlbGVkXG5cblxuXG4gICgqIFJ1bnMgdGhlIGNhbGxiYWNrcyAoZm9ybWVybHkpIGFzc29jaWF0ZWQgdG8gYSBwcm9taXNlLiBDYW5jZWwgY2FsbGJhY2tzIGFyZVxuICAgICBydW4gZmlyc3QsIGlmIHRoZSBwcm9taXNlIHdhcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZvbGxvd2VkIGJ5IHJlZ3VsYXJcbiAgICAgY2FsbGJhY2tzLlxuXG4gICAgIFRoZSByZWFzb24gZm9yIHRoZSBcImZvcm1lcmx5XCIgaXMgdGhhdCB0aGUgcHJvbWlzZSdzIHN0YXRlIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgc2V0IHRvIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLCBzbyB0aGUgY2FsbGJhY2tzIGFyZSBubyBsb25nZXJcbiAgICAgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHByb21pc2UgcmVmZXJlbmNlLiBUaGlzIGlzIHdoeSB0aGUgZGlyZWN0IFtjYWxsYmFja3NdXG4gICAgIHJlY29yZCBtdXN0IGJlIGdpdmVuIHRvIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCBydW5fY2FsbGJhY2tzXG4gICAgICAoY2FsbGJhY2tzIDogJ2EgY2FsbGJhY2tzKVxuICAgICAgKHJlc3VsdCA6ICdhIHJlc29sdmVkX3N0YXRlKSA6IHVuaXQgPVxuXG4gICAgbGV0IHJ1bl9jYW5jZWxfY2FsbGJhY2tzIGZzID1cbiAgICAgIGxldCByZWMgaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3QgPVxuICAgICAgICBtYXRjaCBmcyB3aXRoXG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIChzdG9yYWdlLCBmKSAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCk7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlIC0+XG4gICAgICAgICAgTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlO1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY29uY2F0IChmcywgZnMnKSAtPlxuICAgICAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyAoZnMnOjpyZXN0KVxuXG4gICAgICBhbmQgaXRlcl9saXN0IHJlc3QgPVxuICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGZzOjpyZXN0IC0+IGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0XG5cbiAgICAgIGluXG5cbiAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyBbXVxuICAgIGluXG5cbiAgICBsZXQgcnVuX3JlZ3VsYXJfY2FsbGJhY2tzIGZzID1cbiAgICAgIGxldCByZWMgaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3QgPVxuICAgICAgICBtYXRjaCBmcyB3aXRoXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIGYgLT5cbiAgICAgICAgICBmIHJlc3VsdDtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja1xuICAgICAgICAgICAge2NvbnRlbnRzID0gTm9uZX0gLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja1xuICAgICAgICAgICAge2NvbnRlbnRzID0gU29tZSBmfSAtPlxuICAgICAgICAgIGYgcmVzdWx0O1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAoZnMsIGZzJykgLT5cbiAgICAgICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgKGZzJzo6cmVzdClcblxuICAgICAgYW5kIGl0ZXJfbGlzdCByZXN0ID1cbiAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBmczo6cmVzdCAtPiBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdFxuXG4gICAgICBpblxuXG4gICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgW11cbiAgICBpblxuXG4gICAgKCogUGF0dGVybiBtYXRjaGluZyBpcyBtdWNoIGZhc3RlciB0aGFuIHBvbHltb3JwaGljIGNvbXBhcmlzb24uICopXG4gICAgbGV0IGlzX2NhbmNlbGVkID1cbiAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+IHRydWVcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPiBmYWxzZVxuICAgICAgfCBGdWxmaWxsZWQgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgaXNfY2FuY2VsZWQgdGhlblxuICAgICAgcnVuX2NhbmNlbF9jYWxsYmFja3MgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3M7XG4gICAgcnVuX3JlZ3VsYXJfY2FsbGJhY2tzIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrc1xuXG5cblxuICBsZXQgZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSA0MlxuXG4gIGxldCBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSByZWYgMFxuXG4gIHR5cGUgZGVmZXJyZWRfY2FsbGJhY2tzID1cbiAgICBEZWZlcnJlZCA6ICgnYSBjYWxsYmFja3MgKiAnYSByZXNvbHZlZF9zdGF0ZSkgLT4gZGVmZXJyZWRfY2FsbGJhY2tzXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgZGVmZXJyZWRfY2FsbGJhY2tzIDogZGVmZXJyZWRfY2FsbGJhY2tzIFF1ZXVlLnQgPSBRdWV1ZS5jcmVhdGUgKClcblxuICAoKiBCZWZvcmUgZW50ZXJpbmcgYSByZXNvbHV0aW9uIGxvb3AsIGl0IGlzIG5lY2Vzc2FyeSB0byB0YWtlIGEgc25hcHNob3Qgb2ZcbiAgICAgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlLiBUaGlzIGlzIGJlY2F1c2UgbWFueSBvZlxuICAgICB0aGUgY2FsbGJhY2tzIHRoYXQgd2lsbCBiZSBydW4gd2lsbCBtb2RpZnkgdGhlIHN0b3JhZ2UuIFRoZSBzdG9yYWdlIGlzXG4gICAgIHJlc3RvcmVkIHRvIHRoZSBzbmFwc2hvdCB3aGVuIHRoZSByZXNvbHV0aW9uIGxvb3AgaXMgZXhpdGVkLiAqKVxuICBsZXQgZW50ZXJfcmVzb2x1dGlvbl9sb29wICgpID1cbiAgICBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggOj0gIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCArIDE7XG4gICAgbGV0IHN0b3JhZ2Vfc25hcHNob3QgPSAhY3VycmVudF9zdG9yYWdlIGluXG4gICAgc3RvcmFnZV9zbmFwc2hvdFxuXG4gIGxldCBsZWF2ZV9yZXNvbHV0aW9uX2xvb3AgKHN0b3JhZ2Vfc25hcHNob3QgOiBzdG9yYWdlKSA6IHVuaXQgPVxuICAgIGlmICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSAxIHRoZW4gYmVnaW5cbiAgICAgIHdoaWxlIG5vdCAoUXVldWUuaXNfZW1wdHkgZGVmZXJyZWRfY2FsbGJhY2tzKSBkb1xuICAgICAgICBsZXQgRGVmZXJyZWQgKGNhbGxiYWNrcywgcmVzdWx0KSA9IFF1ZXVlLnBvcCBkZWZlcnJlZF9jYWxsYmFja3MgaW5cbiAgICAgICAgcnVuX2NhbGxiYWNrcyBjYWxsYmFja3MgcmVzdWx0XG4gICAgICBkb25lXG4gICAgZW5kO1xuICAgIGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA6PSAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIC0gMTtcbiAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc3RvcmFnZV9zbmFwc2hvdFxuXG4gIGxldCBydW5faW5fcmVzb2x1dGlvbl9sb29wIGYgPVxuICAgIGxldCBzdG9yYWdlX3NuYXBzaG90ID0gZW50ZXJfcmVzb2x1dGlvbl9sb29wICgpIGluXG4gICAgbGV0IHJlc3VsdCA9IGYgKCkgaW5cbiAgICBsZWF2ZV9yZXNvbHV0aW9uX2xvb3Agc3RvcmFnZV9zbmFwc2hvdDtcbiAgICByZXN1bHRcblxuICAoKiBUaGlzIGlzIGJhc2ljYWxseSBhIGhhY2sgdG8gZml4IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9pc3N1ZXMvNDguXG4gICAgIElmIGN1cnJlbnRseSByZXNvbHZpbmcgcHJvbWlzZXMsIGl0IGltbWVkaWF0ZWx5IGV4aXRzIGFsbCByZWN1cnNpdmVcbiAgICAgZW50cmllcyBvZiB0aGUgcmVzb2x1dGlvbiBsb29wLCBnb2VzIHRvIHRoZSB0b3AgbGV2ZWwsIHJ1bnMgYW55IGRlZmVycmVkXG4gICAgIGNhbGxiYWNrcywgYW5kIGV4aXRzIHRoZSB0b3AtbGV2ZWwgcmVzb2x1dGlvbiBsb29wLlxuXG4gICAgIFRoZSBuYW1lIHNob3VsZCBwcm9iYWJseSBiZSBbYWJhb25kb25fcmVzb2x1dGlvbl9sb29wXS4gKilcbiAgbGV0IGFiYW5kb25fd2FrZXVwcyAoKSA9XG4gICAgaWYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA8PiAwIHRoZW5cbiAgICAgIGxlYXZlX3Jlc29sdXRpb25fbG9vcCBTdG9yYWdlX21hcC5lbXB0eVxuXG5cblxuICBsZXQgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICA/KGFsbG93X2RlZmVycmluZyA9IHRydWUpXG4gICAgICA/KG1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IGRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoKVxuICAgICAgY2FsbGJhY2tzIHJlc3VsdCA9XG5cbiAgICBsZXQgc2hvdWxkX2RlZmVyID1cbiAgICAgIGFsbG93X2RlZmVycmluZ1xuICAgICAgJiYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA+PSBtYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICBpblxuXG4gICAgaWYgc2hvdWxkX2RlZmVyIHRoZW5cbiAgICAgIFF1ZXVlLnB1c2ggKERlZmVycmVkIChjYWxsYmFja3MsIHJlc3VsdCkpIGRlZmVycmVkX2NhbGxiYWNrc1xuICAgIGVsc2VcbiAgICAgIHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgKGZ1biAoKSAtPlxuICAgICAgICBydW5fY2FsbGJhY2tzIGNhbGxiYWNrcyByZXN1bHQpXG5cbiAgbGV0IHJlc29sdmUgP2FsbG93X2RlZmVycmluZyA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoIHAgcmVzdWx0ID1cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgbGV0IHAgPSBzZXRfcHJvbWlzZV9zdGF0ZSBwIHJlc3VsdCBpblxuXG4gICAgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICA/YWxsb3dfZGVmZXJyaW5nID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggY2FsbGJhY2tzIHJlc3VsdDtcblxuICAgIHBcblxuICBsZXQgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICA/KHJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbCA9IGZhbHNlKVxuICAgICAgfmNhbGxiYWNrOmZcbiAgICAgIH5pZl9kZWZlcnJlZCA9XG5cbiAgICBpZiBydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGwgdGhlblxuICAgICAgZiAoKVxuXG4gICAgZWxzZVxuICAgICAgbGV0IHNob3VsZF9kZWZlciA9XG4gICAgICAgICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICAgICAgICA+PSBkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgICAgaW5cblxuICAgICAgaWYgc2hvdWxkX2RlZmVyIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGltbWVkaWF0ZV9yZXN1bHQsIGRlZmVycmVkX2NhbGxiYWNrLCBkZWZlcnJlZF9yZXN1bHQgPVxuICAgICAgICAgIGlmX2RlZmVycmVkICgpIGluXG4gICAgICAgIGxldCBkZWZlcnJlZF9yZWNvcmQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzID1cbiAgICAgICAgICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFja1xuICAgICAgICAgICAgICAgIGRlZmVycmVkX2NhbGxiYWNrO1xuICAgICAgICAgICAgY2FuY2VsX2NhbGxiYWNrcyA9IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICAgICAgaG93X3RvX2NhbmNlbCA9IE5vdF9jYW5jZWxhYmxlO1xuICAgICAgICAgICAgY2xlYW51cHNfZGVmZXJyZWQgPSAwXG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBRdWV1ZS5wdXNoXG4gICAgICAgICAgKERlZmVycmVkIChkZWZlcnJlZF9yZWNvcmQsIGRlZmVycmVkX3Jlc3VsdCkpIGRlZmVycmVkX2NhbGxiYWNrcztcbiAgICAgICAgaW1tZWRpYXRlX3Jlc3VsdFxuICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgKGZ1biAoKSAtPlxuICAgICAgICAgIGYgKCkpXG5lbmRcbmluY2x1ZGUgUmVzb2x1dGlvbl9sb29wXG5cblxuXG5tb2R1bGUgUmVzb2x2aW5nIDpcbnNpZ1xuICB2YWwgd2FrZXVwX2xhdGVyX3Jlc3VsdCA6ICdhIHUgLT4gKCdhLCBleG4pIHJlc3VsdCAtPiB1bml0XG4gIHZhbCB3YWtldXBfbGF0ZXIgOiAnYSB1IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHdha2V1cF9sYXRlcl9leG4gOiBfIHUgLT4gZXhuIC0+IHVuaXRcblxuICB2YWwgd2FrZXVwX3Jlc3VsdCA6ICdhIHUgLT4gKCdhLCBleG4pIHJlc3VsdCAtPiB1bml0XG4gIHZhbCB3YWtldXAgOiAnYSB1IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHdha2V1cF9leG4gOiBfIHUgLT4gZXhuIC0+IHVuaXRcblxuICB2YWwgY2FuY2VsIDogJ2EgdCAtPiB1bml0XG5lbmQgPVxuc3RydWN0XG4gICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRldmlhdGVzIGZyb20gdGhlIFwiaWRlYWxcIiBjYWxsYmFjayBkZWZlcnJhbFxuICAgICBiZWhhdmlvcjogaXQgcnVucyBjYWxsYmFja3MgZGlyZWN0bHkgb24gdGhlIGN1cnJlbnQgc3RhY2suIEl0IHNob3VsZFxuICAgICB0aGVyZWZvcmUgYmUgcG9zc2libGUgdG8gY2F1c2UgYSBzdGFjayBvdmVyZmxvdyB1c2luZyB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgd2FrZXVwX2dlbmVyYWwgYXBpX2Z1bmN0aW9uX25hbWUgciByZXN1bHQgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcmVzb2x2ZXIgciBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+XG4gICAgICAoKVxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCByZXN1bHQgPSBzdGF0ZV9vZl9yZXN1bHQgcmVzdWx0IGluXG4gICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID0gcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICBpZ25vcmUgcFxuXG4gIGxldCB3YWtldXBfcmVzdWx0IHIgcmVzdWx0ID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBfcmVzdWx0XCIgciByZXN1bHRcbiAgbGV0IHdha2V1cCByIHYgPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cFwiIHIgKE9rIHYpXG4gIGxldCB3YWtldXBfZXhuIHIgZXhuID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBfZXhuXCIgciAoRXJyb3IgZXhuKVxuXG4gIGxldCB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBhcGlfZnVuY3Rpb25fbmFtZSByIHJlc3VsdCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9yZXNvbHZlciByIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgICgpXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHJlc3VsdCA9IHN0YXRlX29mX3Jlc3VsdCByZXN1bHQgaW5cbiAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICByZXNvbHZlIH5tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6MSBwIHJlc3VsdCBpblxuICAgICAgaWdub3JlIHBcblxuICBsZXQgd2FrZXVwX2xhdGVyX3Jlc3VsdCByIHJlc3VsdCA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJfcmVzdWx0XCIgciByZXN1bHRcbiAgbGV0IHdha2V1cF9sYXRlciByIHYgPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyXCIgciAoT2sgdilcbiAgbGV0IHdha2V1cF9sYXRlcl9leG4gciBleG4gPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyX2V4blwiIHIgKEVycm9yIGV4bilcblxuXG5cbiAgdHlwZSBwYWNrZWRfY2FsbGJhY2tzID1cbiAgICB8IFBhY2tlZCA6IF8gY2FsbGJhY2tzIC0+IHBhY2tlZF9jYWxsYmFja3NcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRldmlhdGVzIGZyb20gdGhlIFwiaWRlYWxcIiBjYWxsYmFjayBkZWZlcnJhbFxuICAgICBiZWhhdmlvcjogaXQgcnVucyBjYWxsYmFja3MgZGlyZWN0bHkgb24gdGhlIGN1cnJlbnQgc3RhY2suIEl0IHNob3VsZFxuICAgICB0aGVyZWZvcmUgYmUgcG9zc2libGUgdG8gY2F1c2UgYSBzdGFjayBvdmVyZmxvdyB1c2luZyB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgY2FuY2VsIHAgPVxuICAgIGxldCBjYW5jZWxlZF9yZXN1bHQgPSBSZWplY3RlZCBDYW5jZWxlZCBpblxuXG4gICAgKCogV2Fsa3MgdGhlIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaCBiYWNrd2FyZHMsIGxvb2tpbmcgZm9yIGNhbmNlbGFibGVcbiAgICAgICBpbml0aWFsIHByb21pc2VzLCBhbmQgY2FuY2VscyAob25seSkgdGhlbS5cblxuICAgICAgIEZvdW5kIGluaXRpYWwgcHJvbWlzZXMgYXJlIGNhbmNlbGVkIGltbWVkaWF0ZWx5LCBhcyB0aGV5IGFyZSBmb3VuZCwgYnlcbiAgICAgICBzZXR0aW5nIHRoZWlyIHN0YXRlIHRvIFtSZWplY3RlZCBDYW5jZWxlZF0uIFRoaXMgaXMgdG8gcHJldmVudCB0aGVtIGZyb21cbiAgICAgICBiZWluZyBcImZvdW5kIHR3aWNlXCIgaWYgdGhleSBhcmUgcmVhY2hhYmxlIGJ5IHR3byBvciBtb3JlIGRpc3RpbmN0IHBhdGhzXG4gICAgICAgdGhyb3VnaCB0aGUgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoLlxuXG4gICAgICAgVGhlIGNhbGxiYWNrcyBvZiB0aGVzZSBpbml0aWFsIHByb21pc2VzIGFyZSB0aGVuIHJ1biwgaW4gYSBzZXBhcmF0ZVxuICAgICAgIHBoYXNlLiBUaGVzZSBjYWxsYmFja3MgcHJvcGFnYXRlIGNhbmNlbGxhdGlvbiBmb3J3YXJkcyB0byBhbnkgZGVwZW5kZW50XG4gICAgICAgcHJvbWlzZXMuIFNlZSBcIkNhbmNlbGxhdGlvblwiIGluIHRoZSBPdmVydmlldy4gKilcbiAgICBsZXQgcHJvcGFnYXRlX2NhbmNlbCA6IChfLCBfLCBfKSBwcm9taXNlIC0+IHBhY2tlZF9jYWxsYmFja3MgbGlzdCA9XG4gICAgICAgIGZ1biBwIC0+XG4gICAgICBsZXQgcmVjIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgOlxuICAgICAgICAgICdhICd1ICdjLiBwYWNrZWRfY2FsbGJhY2tzIGxpc3QgLT4gKCdhLCAndSwgJ2MpIHByb21pc2UgLT5cbiAgICAgICAgICAgIHBhY2tlZF9jYWxsYmFja3MgbGlzdCA9XG4gICAgICAgICAgZnVuICh0eXBlIGMpIGNhbGxiYWNrc19hY2N1bXVsYXRvciAocCA6IChfLCBfLCBjKSBwcm9taXNlKSAtPlxuXG4gICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgICAgICAoKiBJZiB0aGUgcHJvbWlzZSBpcyBub3Qgc3RpbGwgcGVuZGluZywgaXQgY2FuJ3QgYmUgY2FuY2VsZWQuICopXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAgICAgY2FsbGJhY2tzX2FjY3VtdWxhdG9yXG5cbiAgICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgICAgIG1hdGNoIGNhbGxiYWNrcy5ob3dfdG9fY2FuY2VsIHdpdGhcbiAgICAgICAgICB8IE5vdF9jYW5jZWxhYmxlIC0+XG4gICAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgICB8IENhbmNlbF90aGlzX3Byb21pc2UgLT5cbiAgICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgICBzZXRfcHJvbWlzZV9zdGF0ZSBwIGNhbmNlbGVkX3Jlc3VsdCBpblxuICAgICAgICAgICAgaWdub3JlIHA7XG4gICAgICAgICAgICAoUGFja2VkIGNhbGxiYWNrcyk6OmNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCcgLT5cbiAgICAgICAgICAgIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIHAnXG4gICAgICAgICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIHBzXG4gICAgICBpblxuICAgICAgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBbXSBwXG4gICAgaW5cblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IGNhbGxiYWNrcyA9IHByb3BhZ2F0ZV9jYW5jZWwgcCBpblxuXG4gICAgY2FsbGJhY2tzIHw+IExpc3QuaXRlciAoZnVuIChQYWNrZWQgY2FsbGJhY2tzKSAtPlxuICAgICAgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICAgIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgY2FsbGJhY2tzIGNhbmNlbGVkX3Jlc3VsdClcbmVuZFxuaW5jbHVkZSBSZXNvbHZpbmdcblxuXG5cbm1vZHVsZSBUcml2aWFsX3Byb21pc2VzIDpcbnNpZ1xuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICB2YWwgZmFpbCA6IGV4biAtPiBfIHRcbiAgdmFsIG9mX3Jlc3VsdCA6ICgnYSwgZXhuKSByZXN1bHQgLT4gJ2EgdFxuXG4gIHZhbCByZXR1cm5fdW5pdCA6IHVuaXQgdFxuICB2YWwgcmV0dXJuX3RydWUgOiBib29sIHRcbiAgdmFsIHJldHVybl9mYWxzZSA6IGJvb2wgdFxuICB2YWwgcmV0dXJuX25vbmUgOiBfIG9wdGlvbiB0XG4gIHZhbCByZXR1cm5fc29tZSA6ICdhIC0+ICdhIG9wdGlvbiB0XG4gIHZhbCByZXR1cm5fb2sgOiAnYSAtPiAoJ2EsIF8pIHJlc3VsdCB0XG4gIHZhbCByZXR1cm5fZXJyb3IgOiAnZSAtPiAoXywgJ2UpIHJlc3VsdCB0XG4gIHZhbCByZXR1cm5fbmlsIDogXyBsaXN0IHRcblxuICB2YWwgZmFpbF93aXRoIDogc3RyaW5nIC0+IF8gdFxuICB2YWwgZmFpbF9pbnZhbGlkX2FyZyA6IHN0cmluZyAtPiBfIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBGdWxmaWxsZWQgdn1cblxuICBsZXQgb2ZfcmVzdWx0IHJlc3VsdCA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gc3RhdGVfb2ZfcmVzdWx0IHJlc3VsdH1cblxuICBsZXQgZmFpbCBleG4gPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIGV4bn1cblxuICBsZXQgcmV0dXJuX3VuaXQgPSByZXR1cm4gKClcbiAgbGV0IHJldHVybl9ub25lID0gcmV0dXJuIE5vbmVcbiAgbGV0IHJldHVybl9zb21lIHggPSByZXR1cm4gKFNvbWUgeClcbiAgbGV0IHJldHVybl9uaWwgPSByZXR1cm4gW11cbiAgbGV0IHJldHVybl90cnVlID0gcmV0dXJuIHRydWVcbiAgbGV0IHJldHVybl9mYWxzZSA9IHJldHVybiBmYWxzZVxuICBsZXQgcmV0dXJuX29rIHggPSByZXR1cm4gKE9rIHgpXG4gIGxldCByZXR1cm5fZXJyb3IgeCA9IHJldHVybiAoRXJyb3IgeClcblxuICBsZXQgZmFpbF93aXRoIG1zZyA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKEZhaWx1cmUgbXNnKX1cblxuICBsZXQgZmFpbF9pbnZhbGlkX2FyZyBtc2cgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChJbnZhbGlkX2FyZ3VtZW50IG1zZyl9XG5lbmRcbmluY2x1ZGUgVHJpdmlhbF9wcm9taXNlc1xuXG5cblxubW9kdWxlIFBlbmRpbmdfcHJvbWlzZXMgOlxuc2lnXG4gICgqIEludGVybmFsICopXG4gIHZhbCBuZXdfcGVuZGluZyA6XG4gICAgaG93X3RvX2NhbmNlbDpob3dfdG9fY2FuY2VsIC0+ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZVxuICB2YWwgcHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIDogXyB0IGxpc3QgLT4gaG93X3RvX2NhbmNlbFxuXG4gICgqIEluaXRpYWwgcGVuZGluZyBwcm9taXNlcyAocHVibGljKSAqKVxuICB2YWwgd2FpdCA6IHVuaXQgLT4gJ2EgdCAqICdhIHVcbiAgdmFsIHRhc2sgOiB1bml0IC0+ICdhIHQgKiAnYSB1XG5cbiAgdmFsIGFkZF90YXNrX3IgOiAnYSB1IEx3dF9zZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIGFkZF90YXNrX2wgOiAnYSB1IEx3dF9zZXF1ZW5jZS50IC0+ICdhIHRcblxuICB2YWwgcHJvdGVjdGVkIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBub19jYW5jZWwgOiAnYSB0IC0+ICdhIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsID1cbiAgICBsZXQgc3RhdGUgPVxuICAgICAgUGVuZGluZyB7XG4gICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzID0gUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICBjYW5jZWxfY2FsbGJhY2tzID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgIGhvd190b19jYW5jZWw7XG4gICAgICAgIGNsZWFudXBzX2RlZmVycmVkID0gMDtcbiAgICAgIH1cbiAgICBpblxuICAgIHtzdGF0ZX1cblxuICBsZXQgcHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzID1cbiAgICAoKiBVc2luZyBhIGRpcnR5IGNhc3QgaGVyZSB0byBhdm9pZCByZWJ1aWxkaW5nIHRoZSBsaXN0IDooIE5vdCBib3RoZXJpbmdcbiAgICAgICB3aXRoIHRoZSBpbnZhcmlhbnRzLCBiZWNhdXNlIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdIHBhY2tzIHRoZW0sXG4gICAgICAgYW5kIGNvZGUgdGhhdCBtYXRjaGVzIG9uIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdIGRvZXNuJ3QgY2FyZSBhYm91dFxuICAgICAgIHRoZW0gYW55d2F5LiAqKVxuICAgIGxldCBjYXN0X3Byb21pc2VfbGlzdCA6ICdhIHQgbGlzdCAtPiAoJ2EsIF8sIF8pIHByb21pc2UgbGlzdCA9IE9iai5tYWdpYyBpblxuICAgIFByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCAoY2FzdF9wcm9taXNlX2xpc3QgcHMpXG5cblxuXG4gIGxldCB3YWl0ICgpID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOk5vdF9jYW5jZWxhYmxlIGluXG4gICAgdG9fcHVibGljX3Byb21pc2UgcCwgdG9fcHVibGljX3Jlc29sdmVyIHBcblxuICBsZXQgdGFzayAoKSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG4gICAgdG9fcHVibGljX3Byb21pc2UgcCwgdG9fcHVibGljX3Jlc29sdmVyIHBcblxuXG5cblxuICBsZXQgY2FzdF9zZXF1ZW5jZV9ub2RlXG4gICAgICAobm9kZSA6ICdhIHUgTHd0X3NlcXVlbmNlLm5vZGUpXG4gICAgICAoX2FjdHVhbF9jb250ZW50OignYSwgJ3UsICdjKSBwcm9taXNlKVxuICAgICAgICA6ICgnYSwgJ3UsICdjKSBwcm9taXNlIEx3dF9zZXF1ZW5jZS5ub2RlID1cbiAgICBPYmoubWFnaWMgbm9kZVxuXG4gIGxldCBhZGRfdGFza19yIHNlcXVlbmNlID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfciAodG9fcHVibGljX3Jlc29sdmVyIHApIHNlcXVlbmNlIGluXG4gICAgbGV0IG5vZGUgPSBjYXN0X3NlcXVlbmNlX25vZGUgbm9kZSBwIGluXG5cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGU7XG5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgbGV0IGFkZF90YXNrX2wgc2VxdWVuY2UgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9sICh0b19wdWJsaWNfcmVzb2x2ZXIgcCkgc2VxdWVuY2UgaW5cbiAgICBsZXQgbm9kZSA9IGNhc3Rfc2VxdWVuY2Vfbm9kZSBub2RlIHAgaW5cblxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZTtcblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuXG5cbiAgbGV0IHByb3RlY3RlZCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IHBcbiAgICB8IFJlamVjdGVkIF8gLT4gcFxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJyA9IG1heV9ub3dfYmVfcHJveHkgcCcgaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICAoKiBJbiB0aGlzIGNhbGxiYWNrLCBbcCddIHdpbGwgZWl0aGVyIHN0aWxsIGl0c2VsZiBiZSBwZW5kaW5nLCBvciBpdFxuICAgICAgICAgICB3aWxsIGhhdmUgYmVjb21lIGEgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGUgcmVhc29uaW5nIGZvclxuICAgICAgICAgICB0aGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyBpbiB0aGUgY29tbWVudCBhdCBbbWF5X25vd19iZV9wcm94eV0uIFRoZVxuICAgICAgICAgICBkaWZmZXJlbmNlcyBhcmU6XG5cbiAgICAgICAgICAgLSBbcCddICppcyogYW4gaW5pdGlhbCBwcm9taXNlLCBzbyBpdCAqY2FuKiBnZXQgY2FuY2VsZWQuIEhvd2V2ZXIsIGlmXG4gICAgICAgICAgICAgaXQgZG9lcywgdGhlIFtvbl9jYW5jZWxdIGhhbmRsZXIgaW5zdGFsbGVkIGJlbG93IHdpbGwgcmVtb3ZlIHRoaXNcbiAgICAgICAgICAgICBjYWxsYmFjay5cbiAgICAgICAgICAgLSBbcCddIG5ldmVyIGdldHMgcGFzc2VkIHRvIFttYWtlX2ludG9fcHJveHldLCB0aGUgb25seSBlZmZlY3Qgb2ZcbiAgICAgICAgICAgICB3aGljaCBpcyB0aGF0IGl0IGNhbm5vdCBiZSB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIGFub3RoZXJcbiAgICAgICAgICAgICAocHJveHkpIHByb21pc2UuIFNvLCBbcCddIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgaGVhZCBvZiBhIGNoYWluIG9mXG4gICAgICAgICAgICAgW1Byb3h5IF9dIGxpbmtzLCBhbmQgaXQncyBub3QgbmVjZXNzYXJ5IHRvIHdvcnJ5IGFib3V0IHdoZXRoZXIgdGhlXG4gICAgICAgICAgICAgaW5kdWN0aXZlIHJlYXNvbmluZyBhdCBbbWF5X25vd19iZV9wcm94eV0gYXBwbGllcy4gKilcblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnIHBfcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwJ1xuICAgICAgaW5cblxuICAgICAgbGV0IHJlbW92ZV90aGVfY2FsbGJhY2sgPVxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfcmVtb3ZlX2Z1bmN0aW9uXG4gICAgICAgICAgW3BdIGNhbGxiYWNrXG4gICAgICBpblxuXG4gICAgICBsZXQgUGVuZGluZyBwJ19jYWxsYmFja3MgPSBwJy5zdGF0ZSBpblxuICAgICAgYWRkX2NhbmNlbF9jYWxsYmFjayBwJ19jYWxsYmFja3MgcmVtb3ZlX3RoZV9jYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcCdcblxuICBsZXQgbm9fY2FuY2VsIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gcFxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOk5vdF9jYW5jZWxhYmxlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcgPSBtYXlfbm93X2JlX3Byb3h5IHAnIGluXG4gICAgICAgIGxldCBwJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgICAgKCogSW4gdGhpcyBjYWxsYmFjaywgW3AnXSB3aWxsIGVpdGhlciBzdGlsbCBpdHNlbGYgYmUgcGVuZGluZywgb3IgaXRcbiAgICAgICAgICAgd2lsbCBoYXZlIGJlY29tZSBhIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlIHJlYXNvbmluZyBmb3JcbiAgICAgICAgICAgdGhpcyBpcyBhcyBpbiBbcHJvdGVjdGVkXSBhbmQgW21heV9ub3dfYmVfcHJveHldLCBidXQgZXZlbiBzaW1wbGVyLFxuICAgICAgICAgICBiZWNhdXNlIFtwJ10gaXMgbm90IGNhbmNlbGFibGUuICopXG5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJyBwX3Jlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcCdcbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuZW5kXG5pbmNsdWRlIFBlbmRpbmdfcHJvbWlzZXNcblxuXG5cbm1vZHVsZSBTZXF1ZW50aWFsX2NvbXBvc2l0aW9uIDpcbnNpZ1xuICAoKiBNYWluIGludGVyZmFjZSAocHVibGljKSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcbiAgdmFsIGNhdGNoIDogKHVuaXQgLT4gJ2EgdCkgLT4gKGV4biAtPiAnYSB0KSAtPiAnYSB0XG4gIHZhbCBmaW5hbGl6ZSA6ICh1bml0IC0+ICdhIHQpIC0+ICh1bml0IC0+IHVuaXQgdCkgLT4gJ2EgdFxuICB2YWwgdHJ5X2JpbmQgOiAodW5pdCAtPiAnYSB0KSAtPiAoJ2EgLT4gJ2IgdCkgLT4gKGV4biAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCogQ2FuY2VsIGNhbGxiYWNrcyAocHVibGljKS4gKilcbiAgdmFsIG9uX2NhbmNlbCA6ICdhIHQgLT4gKHVuaXQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqIE5vbi1wcm9taXNlIGNhbGxiYWNrcyAocHVibGljKSAqKVxuICB2YWwgb25fc3VjY2VzcyA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX2ZhaWx1cmUgOiBfIHQgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl90ZXJtaW5hdGlvbiA6IF8gdCAtPiAodW5pdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl9hbnkgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiBCYWNrdHJhY2Ugc3VwcG9ydCAoaW50ZXJuYWw7IGZvciB1c2UgYnkgdGhlIFBQWCkgKilcbiAgdmFsIGJhY2t0cmFjZV9iaW5kIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgYmFja3RyYWNlX2NhdGNoIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gKHVuaXQgLT4gJ2EgdCkgLT4gKGV4biAtPiAnYSB0KSAtPiAnYSB0XG4gIHZhbCBiYWNrdHJhY2VfZmluYWxpemUgOlxuICAgIChleG4gLT4gZXhuKSAtPiAodW5pdCAtPiAnYSB0KSAtPiAodW5pdCAtPiB1bml0IHQpIC0+ICdhIHRcbiAgdmFsIGJhY2t0cmFjZV90cnlfYmluZCA6XG4gICAgKGV4biAtPiBleG4pIC0+ICh1bml0IC0+ICdhIHQpIC0+ICgnYSAtPiAnYiB0KSAtPiAoZXhuIC0+ICdiIHQpIC0+ICdiIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogVGhlcmUgYXJlIGZpdmUgcHJpbWFyeSBzZXF1ZW50aWFsIGNvbXBvc2l0aW9uIGZ1bmN0aW9uczogW2JpbmRdLCBbbWFwXSxcbiAgICAgW2NhdGNoXSwgW2ZpbmFsaXplXSwgYW5kIFt0cnlfYmluZF0uIE9mIHRoZXNlLCBbdHJ5X2JpbmRdIGlzIHRoZSBtb3N0XG4gICAgIGdlbmVyYWwgLS0gYWxsIHRoZSBvdGhlcnMgY2FuIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIGl0LlxuXG4gICAgIEx3dCBjb25mbGF0ZXMgY29uY3VycmVuY3kgd2l0aCBlcnJvciBwcm9wYWdhdGlvbi4gSWYgTHd0IGRpZCBub3QgZG8gdGhpcyxcbiAgICAgdGhlcmUgd291bGQgYmUgb25seSB0d28gcHJpbWFyeSBmdW5jdGlvbnM6IFtiaW5kXSBhbmQgW21hcF0sIGFuZCwgb2YgdGhlc2VcbiAgICAgdHdvLCBbYmluZF0gaXMgdGhlIG1vc3QgZ2VuZXJhbC4gU2luY2UgW2JpbmRdIGlzIHRoZSBtb3N0IHJlbGV2YW50XG4gICAgIHNwZWNpZmljYWxseSB0byBjb25jdXJyZW5jeSwgYW5kIGlzIGFsc28gdGhlIG1vc3QgZmFtaWxpYXIgZnVuY3Rpb24gaW4gTHd0LFxuICAgICBpdHMgaW1wbGVtZW50YXRpb24gc2VydmVzIGFzIGEga2luZCBvZiBcIm1vZGVsXCIgZm9yIHRoZSByZXN0LiBJdCBpcyB0aGUgbW9zdFxuICAgICBjb21tZW50ZWQsIGFuZCBhbGwgdGhlIG90aGVyIGZ1bmN0aW9ucyBmb2xsb3cgYSBzaW1pbGFyIHBhdHRlcm4gdG8gW2JpbmRdLlxuXG4gICAgIEZvdXIgb2YgdGhlIHByaW1hcnkgZnVuY3Rpb25zIGhhdmUgW2JhY2t0cmFjZV8qXSB2ZXJzaW9ucywgd2hpY2ggYXJlIG5vdFxuICAgICB0cnVseSBwdWJsaWMsIGFuZCBleGlzdCB0byBzdXBwb3J0IHRoZSBQUFguIFtiYWNrdHJhY2VfbWFwXSBkb2VzIG5vdCBleGlzdFxuICAgICBiZWNhdXNlIHRoZSBQUFggZG9lcyBub3QgbmVlZCBpdC5cblxuICAgICBUaGUgcmVtYWluaW5nIGZvdXIgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBhdHRhY2ggXCJsb3dlci1sZXZlbC1pc2hcIlxuICAgICBub24tcHJvbWlzZS1wcm9kdWNpbmcgY2FsbGJhY2tzIHRvIHByb21pc2VzOiB0aGVzZSBhcmUgdGhlIFtvbl8qXVxuICAgICBmdW5jdGlvbnMuIE9mIHRoZXNlLCBbb25fYW55XSBpcyB0aGUgbW9zdCBnZW5lcmFsLiBJZiBMd3QgZGlkIG5vdCBjb25mbGF0ZVxuICAgICBjb25jdXJyZW5jeSB3aXRoIGVycm9yIGhhbmRsaW5nLCB0aGVyZSB3b3VsZCBvbmx5IGJlIG9uZTogW29uX3N1Y2Nlc3NdLiAqKVxuXG5cblxuICAoKiBNYWtlcyBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gaW50byBhIHByb3h5IG9mIFt+b3V0ZXJfcHJvbWlzZV0uIEFmdGVyXG4gICAgIFttYWtlX2ludG9fcHJveHldLCB0aGVzZSB0d28gcHJvbWlzZSByZWZlcmVuY2VzIFwiYmVoYXZlIGlkZW50aWNhbGx5LlwiXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IHN5bW1ldHJpYzogW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gYWx3YXlzIGJlY29tZXMgdGhlXG4gICAgIHByb3h5LiBbbWFrZV9pbnRvX3Byb3h5XSBpcyBjYWxsZWQgb25seSBieSBbYmluZF0gYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGluXG4gICAgIHRoaXMgbW9kdWxlLiBUaGlzIG1lYW5zIHRoYXQ6XG5cbiAgICAgLSB0aGUgb25seSB3YXkgZm9yIGEgcHJvbWlzZSB0byBiZWNvbWUgYSBwcm94eSBpcyBieSBiZWluZyByZXR1cm5lZCBmcm9tXG4gICAgICAgdGhlIGNhbGxiYWNrIGdpdmVuIGJ5IHRoZSB1c2VyIHRvIFtiaW5kXSwgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uLCBhbmRcbiAgICAgLSB0aGUgb25seSB3YXkgZm9yIGEgcHJvbWlzZSB0byBiZWNvbWUgdW5kZXJseWluZyBmb3IgYSBwcm9taXNlIG90aGVyIHRoYW5cbiAgICAgICBpdHNlbGYgaXMgdG8gYmUgdGhlIG91dGVyIHByb21pc2Ugb3JpZ2luYWxseSByZXR1cm5lZCB0byB0aGUgdXNlciBmcm9tXG4gICAgICAgW2JpbmRdLCBvciBhIHNpbWlsYXIgZnVuY3Rpb24uXG5cbiAgICAgVGhlc2UgdHdvIGZhY3RzIGFyZSBpbXBvcnRhbnQgZm9yIHJlYXNvbmluZyBhYm91dCBob3cgYW5kIHdoaWNoIHByb21pc2VzXG4gICAgIGNhbiBiZWNvbWUgcHJveGllcywgdW5kZXJseWluZywgZXRjLjsgaW4gcGFydGljdWxhciwgaXQgaXMgdXNlZCBpbiB0aGVcbiAgICAgYXJndW1lbnQgaW4gW21heV9ub3dfYmVfcHJveHldIGZvciBjb3JyZWN0IHByZWRpY3Rpb25zIGFib3V0IHN0YXRlIGNoYW5nZXMuXG5cbiAgICAgW35vdXRlcl9wcm9taXNlXSBpcyBhbHdheXMgYSBwZW5kaW5nIHByb21pc2Ugd2hlbiBbbWFrZV9pbnRvX3Byb3h5XSBpc1xuICAgICBjYWxsZWQ7IGZvciB0aGUgZXhwbGFuYXRpb24sIHNlZSBbbWF5X25vd19iZV9wcm94eV0gKHRob3VnaCB0aGUgY2FsbGVyIG9mXG4gICAgIFttYWtlX2ludG9fcHJveHldIGFsd2F5cyBjYWxscyBbdW5kZXJseWluZ10gZmlyc3QgdG8gcGFzcyB0aGUgdW5kZXJseWluZ1xuICAgICBwZW5kaW5nIHByb21pc2UgdG8gW21ha2VfaW50b19wcm94eV0pLlxuXG4gICAgIFRoZSByZWFzb25zIHByb3h5aW5nIGlzIHVzZWQsIGluc3RlYWQgb2YgYWRkaW5nIGEgY2FsbGJhY2sgdG9cbiAgICAgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHRvIHJlc29sdmUgW35vdXRlcl9wcm9taXNlXSB3aGVuIHRoZSBmb3JtZXJcbiAgICAgYmVjb21lcyByZXNvbHZlZCBwcm9iYWJseSBhcmU6XG5cbiAgICAgLSBQcm9taXNlcyBoYXZlIG1vcmUgYmVoYXZpb3JzIHRoYW4gcmVzb2x1dGlvbi4gT25lIHdvdWxkIGhhdmUgdG8gYWRkIGFcbiAgICAgICBjYW5jZWxsYXRpb24gaGFuZGxlciB0byBbfm91dGVyX3Byb21pc2VdIHRvIHByb3BhZ2F0ZSB0aGUgY2FuY2VsbGF0aW9uXG4gICAgICAgYmFjayB0byBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0sIGZvciBleGFtcGxlLiBJdCBtYXkgYmUgZWFzaWVyIHRvIGp1c3RcbiAgICAgICB0aGluayBvZiB0aGVtIGFzIHRoZSBzYW1lIHByb21pc2UuXG4gICAgIC0gSWYgdXNpbmcgY2FsbGJhY2tzLCByZXNvbHZpbmcgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHdvdWxkIG5vdFxuICAgICAgIGltbWVkaWF0ZWx5IHJlc29sdmUgW35vdXRlcl9wcm9taXNlXS4gQW5vdGhlciBjYWxsYmFjayBhZGRlZCB0b1xuICAgICAgIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSBtaWdodCBzZWUgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHJlc29sdmVkLFxuICAgICAgIGJ1dCBbfm91dGVyX3Byb21pc2VdIHN0aWxsIHBlbmRpbmcsIGRlcGVuZGluZyBvbiB0aGUgb3JkZXIgaW4gd2hpY2hcbiAgICAgICBjYWxsYmFja3MgYXJlIHJ1bi4gKilcbiAgbGV0IG1ha2VfaW50b19wcm94eVxuICAgICAgKHR5cGUgYylcbiAgICAgIH4ob3V0ZXJfcHJvbWlzZSA6ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSlcbiAgICAgIH4odXNlcl9wcm92aWRlZF9wcm9taXNlIDogKCdhLCBfLCBjKSBwcm9taXNlKVxuICAgICAgICA6ICgnYSwgdW5kZXJseWluZywgYykgc3RhdGVfY2hhbmdlZCA9XG5cbiAgICAoKiBVc2luZyBbcCddIGFzIGl0J3MgdGhlIG5hbWUgdXNlZCBpbnNpZGUgW2JpbmRdLCBldGMuLCBmb3IgcHJvbWlzZXMgd2l0aFxuICAgICAgIHRoaXMgcm9sZSAtLSBbcCddIGlzIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1c2VyJ3MgZnVuY3Rpb24uICopXG4gICAgbGV0IHAnID0gdW5kZXJseWluZyB1c2VyX3Byb3ZpZGVkX3Byb21pc2UgaW5cblxuICAgIGlmIGlkZW50aWNhbCBwJyBvdXRlcl9wcm9taXNlIHRoZW5cbiAgICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCdcbiAgICAgICgqIFdlIHJlYWxseSB3YW50IHRvIHJldHVybiBbU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvdXRlcl9wcm9taXNlXSwgYnV0XG4gICAgICAgICB0aGUgcmVmZXJlbmNlIHRocm91Z2ggW3AnXSBoYXMgdGhlIHJpZ2h0IHR5cGUuICopXG5cbiAgICBlbHNlXG4gICAgICBtYXRjaCBwJy5zdGF0ZSB3aXRoXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBvdXRlcl9wcm9taXNlIHAnLnN0YXRlXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIG91dGVyX3Byb21pc2UgcCcuc3RhdGVcblxuICAgICAgfCBQZW5kaW5nIHAnX2NhbGxiYWNrcyAtPlxuICAgICAgICBsZXQgUGVuZGluZyBvdXRlcl9jYWxsYmFja3MgPSBvdXRlcl9wcm9taXNlLnN0YXRlIGluXG5cbiAgICAgICAgbWVyZ2VfY2FsbGJhY2tzIH5mcm9tOnAnX2NhbGxiYWNrcyB+aW50bzpvdXRlcl9jYWxsYmFja3M7XG4gICAgICAgIG91dGVyX2NhbGxiYWNrcy5ob3dfdG9fY2FuY2VsIDwtIHAnX2NhbGxiYWNrcy5ob3dfdG9fY2FuY2VsO1xuXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICBzZXRfcHJvbWlzZV9zdGF0ZSBwJyAoUHJveHkgb3V0ZXJfcHJvbWlzZSkgaW5cbiAgICAgICAgaWdub3JlIHAnO1xuXG4gICAgICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb3V0ZXJfcHJvbWlzZVxuICAgICAgICAoKiBUaGUgc3RhdGUgaGFzbid0IGFjdHVhbGx5IGNoYW5nZWQsIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIHdyYXBcbiAgICAgICAgICAgW291dGVyX3Byb21pc2VdIGZvciB0eXBlIGNoZWNraW5nLiAqKVxuXG4gICAgICAgICgqIFRoZSBzdGF0ZSBvZiBbcCddIG1heSBpbnN0ZWFkIGhhdmUgY2hhbmdlZCAtLSBpdCBtYXkgaGF2ZSBiZWNvbWUgYVxuICAgICAgICAgICBwcm94eS4gSG93ZXZlciwgY2FsbGVycyBvZiBbbWFrZV9pbnRvX3Byb3h5XSBkb24ndCBrbm93IGlmXG4gICAgICAgICAgIFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHdhcyBhIHByb3h5IG9yIG5vdCAodGhhdCdzIHdoeSB3ZSBjYWxsXG4gICAgICAgICAgIHVuZGVybHlpbmcgb24gaXQgYXQgdGhlIHRvcCBvZiB0aGlzIGZ1bmN0aW9uLCB0byBnZXQgW3AnXSkuIFdlIGNhblxuICAgICAgICAgICB0aGVyZWZvcmUgdGFrZSBhIGRhbmdlcm91cyBzaG9ydGN1dCBhbmQgbm90IGJvdGhlciByZXR1cm5pbmcgYSBuZXdcbiAgICAgICAgICAgcmVmZXJlbmNlIHRvIFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIGZvciBzaGFkb3dpbmcuICopXG5cblxuXG4gICgqIE1haW50YWluZXIncyBub3RlOiBhIGxvdCBvZiB0aGUgY29kZSBiZWxvdyBjYW4gcHJvYmFibHkgYmUgZGVkdXBsaWNhdGVkIGluXG4gICAgIHNvbWUgd2F5LCBlc3BlY2lhbGx5IGlmIGFzc3VtaW5nIEZsYW1iZGEuICopXG5cbiAgbGV0IGJpbmQgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICAoKiBJbiBjYXNlIFtMd3QuYmluZF0gbmVlZHMgdG8gZGVmZXIgdGhlIGNhbGwgdG8gW2ZdLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgICBjYWxsZWQgdG8gY3JlYXRlOlxuXG4gICAgICAgMS4gVGhlIHByb21pc2UsIFtwJyddLCB0aGF0IG11c3QgYmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBpbW1lZGlhdGVseS5cbiAgICAgICAyLiBUaGUgY2FsbGJhY2sgdGhhdCByZXNvbHZlcyBbcCcnXS5cblxuICAgICAgIFtMd3QuYmluZF0gZGVmZXJzIHRoZSBjYWxsIHRvIFtmXSBpbiB0d28gY2lyY3Vtc3RhbmNlczpcblxuICAgICAgIDEuIFRoZSBwcm9taXNlIFtwXSBpcyBwZW5kaW5nLlxuICAgICAgIDIuIFRoZSBwcm9taXNlIFtwXSBpcyBmdWxmaWxsZWQsIGJ1dCB0aGUgY3VycmVudCBjYWxsYmFjayBjYWxsIG5lc3RpbmdcbiAgICAgICAgICBkZXB0aCBpcyBzdWNoIHRoYXQgdGhlIGNhbGwgdG8gW2ZdIG11c3QgZ28gaW50byB0aGUgY2FsbGJhY2sgcXVldWUsIGluXG4gICAgICAgICAgb3JkZXIgdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3cuXG5cbiAgICAgIE1lY2hhbmlzbSAoMikgaXMgY3VycmVudGx5IGRpc2FibGVkLiBJdCBtYXkgYmUgdXNlZCBpbiBhbiBhbHRlcm5hdGl2ZSBMd3RcbiAgICAgIEFQSS5cblxuICAgICAgRnVuY3Rpb25zIG90aGVyIHRoYW4gW0x3dC5iaW5kXSBoYXZlIGFuYWxvZ291cyBkZWZlcnJhbCBiZWhhdmlvci4gKilcbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG4gICAgICAoKiBUaGUgcmVzdWx0IHByb21pc2UgaXMgYSBmcmVzaCBwZW5kaW5nIHByb21pc2UuXG5cbiAgICAgICAgIEluaXRpYWxseSwgdHJ5aW5nIHRvIGNhbmNlbCB0aGlzIGZyZXNoIHBlbmRpbmcgcHJvbWlzZSBbcCcnXSB3aWxsXG4gICAgICAgICBwcm9wYWdhdGUgdGhlIGNhbmNlbGxhdGlvbiBhdHRlbXB0IHRvIFtwXSAoYmFja3dhcmRzIHRocm91Z2ggdGhlXG4gICAgICAgICBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGgpLiBJZi93aGVuIFtwXSBpcyBmdWxmaWxsZWQsIEx3dCB3aWxsIGNhbGwgdGhlXG4gICAgICAgICB1c2VyJ3MgY2FsbGJhY2sgW2ZdIGJlbG93LCB3aGljaCB3aWxsIHByb3ZpZGUgYSBuZXcgcHJvbWlzZSBbcCddLCBhbmRcbiAgICAgICAgIFtwJ10gd2lsbCBiZWNvbWUgYSBwcm94eSBvZiBbcCcnXS4gQXQgdGhhdCBwb2ludCwgdHJ5aW5nIHRvIGNhbmNlbFxuICAgICAgICAgW3AnJ10gd2lsbCBiZSBlcXVpdmFsZW50IHRvIHRyeWluZyB0byBjYW5jZWwgW3AnXSwgc28gdGhlIGJlaGF2aW9yIHdpbGxcbiAgICAgICAgIGRlcGVuZCBvbiBob3cgdGhlIHVzZXIgb2J0YWluZWQgW3AnXS4gKilcblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmIHYgd2l0aCBleG5cbiAgICAgICAgICAgIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG4gICAgICAgICAgKCogUnVuIHRoZSB1c2VyJ3MgZnVuY3Rpb24gW2ZdLiAqKVxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuICAgICAgICAgICgqIFtwJyddIHdhcyBhbiB1bmRlcmx5aW5nIHByb21pc2Ugd2hlbiBpdCB3YXMgY3JlYXRlZCBhYm92ZSwgYnV0IGl0XG4gICAgICAgICAgICAgbWF5IGhhdmUgYmVjb21lIGEgcHJveHkgYnkgdGhlIHRpbWUgdGhpcyBjb2RlIGlzIGJlaW5nIGV4ZWN1dGVkLlxuICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIGVpdGhlciBhbiB1bmRlcmx5aW5nIHBlbmRpbmcgcHJvbWlzZSwgb3IgYVxuICAgICAgICAgICAgIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlcmVmb3JlLCBbbWF5X25vd19iZV9wcm94eV0gcHJvZHVjZXNcbiAgICAgICAgICAgICBhIHJlZmVyZW5jZSB3aXRoIHRoZSByaWdodCB0eXBlIHZhcmlhYmxlcy4gV2UgaW1tZWRpYXRlbHkgZ2V0XG4gICAgICAgICAgICAgW3AnJ10ncyBjdXJyZW50IHVuZGVybHlpbmcgcHJvbWlzZS4gKilcblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICAgICAgKCogTWFrZSB0aGUgb3V0ZXIgcHJvbWlzZSBbcCcnXSBiZWhhdmlvcmFsbHkgaWRlbnRpY2FsIHRvIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgW3AnXSByZXR1cm5lZCBieSBbZl0gYnkgbWFraW5nIFtwJ10gaW50byBhIHByb3h5IG9mIFtwJyddLiAqKVxuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX2JpbmQgYWRkX2xvYyBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmIHZcbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKSBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyAoUmVqZWN0ZWQgKGFkZF9sb2MgZXhuKSkgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChhZGRfbG9jIGV4bil9XG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IG1hcCBmIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnJ19yZXN1bHQgPVxuICAgICAgICAgICAgdHJ5IEZ1bGZpbGxlZCAoZiB2KSB3aXRoIGV4blxuICAgICAgICAgICAgd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gUmVqZWN0ZWQgZXhuXG4gICAgICAgICAgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHAnJ19yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlXG4gICAgICAgICAgICB7c3RhdGUgPVxuICAgICAgICAgICAgICB0cnkgRnVsZmlsbGVkIChmIHYpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IFJlamVjdGVkIGV4bn0pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgY2F0Y2ggZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV9jYXRjaCBhZGRfbG9jIGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggKGFkZF9sb2MgZXhuKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IHRyeV9iaW5kIGYgZicgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZicgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZicgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV90cnlfYmluZCBhZGRfbG9jIGYgZicgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZicgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmJyB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggKGFkZF9sb2MgZXhuKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGZpbmFsaXplIGYgZicgPVxuICAgIHRyeV9iaW5kIGZcbiAgICAgIChmdW4geCAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiByZXR1cm4geCkpXG4gICAgICAoZnVuIGUgLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gZmFpbCBlKSlcblxuICBsZXQgYmFja3RyYWNlX2ZpbmFsaXplIGFkZF9sb2MgZiBmJyA9XG4gICAgYmFja3RyYWNlX3RyeV9iaW5kIGFkZF9sb2MgZlxuICAgICAgKGZ1biB4IC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IHJldHVybiB4KSlcbiAgICAgIChmdW4gZSAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiBmYWlsIChhZGRfbG9jIGUpKSlcblxuXG5cbiAgbGV0IG9uX2NhbmNlbCBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICAoKCksIChmdW4gXyAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKSwgRnVsZmlsbGVkICgpKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICBhZGRfY2FuY2VsX2NhbGxiYWNrIGNhbGxiYWNrcyBmXG5cblxuXG4gIGxldCBvbl9zdWNjZXNzIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHZcblxuICAgICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl9mYWlsdXJlIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiBleG5cbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX3Rlcm1pbmF0aW9uIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gX3Jlc3VsdCAtPlxuICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl9hbnkgcCBmIGcgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgZnVuIHJlc3VsdCAtPlxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2XG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBnIGV4blxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZyBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcbmVuZFxuaW5jbHVkZSBTZXF1ZW50aWFsX2NvbXBvc2l0aW9uXG5cblxuKCogVGhpcyBiZWxvbmdzIHdpdGggdGhlIFtwcm90ZWN0ZWRdIGFuZCBzdWNoLCBidXQgaXQgZGVwZW5kcyBvbiBwcmltaXRpdmVzIGZyb21cbiAgIFtTZXF1ZW50aWFsX2NvbXBvc2l0aW9uXS4gKilcbmxldCB3cmFwX2luX2NhbmNlbGFibGUgcCA9XG4gbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiBsZXQgcF91bmRlcmx5aW5nID0gdW5kZXJseWluZyBwX2ludGVybmFsIGluXG4gbWF0Y2ggcF91bmRlcmx5aW5nLnN0YXRlIHdpdGhcbiB8IEZ1bGZpbGxlZCBfIC0+IHBcbiB8IFJlamVjdGVkIF8gLT4gcFxuIHwgUGVuZGluZyBfIC0+XG4gICBsZXQgcCcsIHIgPSB0YXNrICgpIGluXG4gICBvbl9jYW5jZWwgcCcgKGZ1biAoKSAtPiBjYW5jZWwgcCk7XG4gICBvbl9hbnkgcCAod2FrZXVwIHIpICh3YWtldXBfZXhuIHIpO1xuICAgcCdcblxuXG5tb2R1bGUgQ29uY3VycmVudF9jb21wb3NpdGlvbiA6XG5zaWdcbiAgdmFsIGRvbnRfd2FpdCA6ICh1bml0IC0+IF8gdCkgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBhc3luYyA6ICh1bml0IC0+IF8gdCkgLT4gdW5pdFxuICB2YWwgaWdub3JlX3Jlc3VsdCA6IF8gdCAtPiB1bml0XG5cbiAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIGpvaW4gOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcbiAgdmFsIGFsbCA6ICgnYSB0KSBsaXN0IC0+ICgnYSBsaXN0KSB0XG5cbiAgdmFsIGNob29zZSA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBwaWNrIDogJ2EgdCBsaXN0IC0+ICdhIHRcblxuICB2YWwgbmNob29zZSA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcbiAgdmFsIG5waWNrIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuXG4gIHZhbCBuY2hvb3NlX3NwbGl0IDogJ2EgdCBsaXN0IC0+ICgnYSBsaXN0ICogJ2EgdCBsaXN0KSB0XG5lbmQgPVxuc3RydWN0XG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgZG9udF93YWl0IGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIGggZXhuXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBoIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgYXN5bmMgZiA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IGlnbm9yZV9yZXN1bHQgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICByZXJhaXNlIGV4blxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuXG5cbiAgbGV0IGpvaW4gcHMgPVxuICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICBsZXQgbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSByZWYgMCBpblxuICAgIGxldCBqb2luX3Jlc3VsdCA9IHJlZiAoRnVsZmlsbGVkICgpKSBpblxuXG4gICAgKCogQ2FsbGJhY2sgYXR0YWNoZWQgdG8gZWFjaCBwcm9taXNlIGluIFtwc10gdGhhdCBpcyBzdGlsbCBwZW5kaW5nIGF0IHRoZVxuICAgICAgIHRpbWUgW2pvaW5dIGlzIGNhbGxlZC4gKilcbiAgICBsZXQgY2FsbGJhY2sgbmV3X3Jlc3VsdCA9XG4gICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnID0gbWF5X25vd19iZV9wcm94eSBwJyBpblxuXG4gICAgICBiZWdpbiBtYXRjaCBuZXdfcmVzdWx0IHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkICgpIC0+ICgpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICgqIEZvciB0aGUgZmlyc3QgcHJvbWlzZSBpbiBbcHNdIHRvIGJlIHJlamVjdGVkLCBzZXQgdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIFtqb2luXSB0byByZWplY3RlZCB3aXRoIHRoZSBzYW1lIGV4Y2VwdGlvbi4uICopXG4gICAgICAgIG1hdGNoICFqb2luX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkICgpIC0+IGpvaW5fcmVzdWx0IDo9IG5ld19yZXN1bHRcbiAgICAgICAgfCBSZWplY3RlZCBfIC0+ICgpXG4gICAgICBlbmQ7XG5cbiAgICAgICgqIEluIGFsbCBjYXNlcywgZGVjcmVtZW50IHRoZSBudW1iZXIgb2YgcHJvbWlzZXMgc3RpbGwgcGVuZGluZywgYW5kXG4gICAgICAgICByZXNvbHZlIHRoZSBbam9pbl0gb25jZSBhbGwgcHJvbWlzZXMgcmVzb2x2ZS4gKilcbiAgICAgIG51bWJlcl9wZW5kaW5nX2luX3BzIDo9ICFudW1iZXJfcGVuZGluZ19pbl9wcyAtIDE7XG4gICAgICBpZiAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlICh1bmRlcmx5aW5nIHAnKSAham9pbl9yZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHAnXG4gICAgICBlbmRcbiAgICBpblxuXG4gICAgKCogQXR0YWNoIHRoZSBhYm92ZSBjYWxsYmFjay4gU2ltdWx0YW5lb3VzbHkgY291bnQgaG93IG1hbnkgcGVuZGluZyBwcm9taXNlc1xuICAgICAgIHRoZXJlIGFyZSBpbiBbcHNdIChpbml0aWFsbHkpLiBJZiB0aGF0IG51bWJlciBpcyB6ZXJvLCB0aGUgW2pvaW5dIG11c3RcbiAgICAgICByZXNvbHZlIGltbWVkaWF0ZWx5LiAqKVxuICAgIGxldCByZWMgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSAwIHRoZW5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSAham9pbl9yZXN1bHR9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgICAgICBudW1iZXJfcGVuZGluZ19pbl9wcyA6PSAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgKyAxO1xuICAgICAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICAoKiBBcyBpbiB0aGUgY2FsbGJhY2sgYWJvdmUsIGJ1dCBmb3IgYWxyZWFkeS1yZXNvbHZlZCBwcm9taXNlcyBpblxuICAgICAgICAgICAgIFtwc106IHJlamVjdCB0aGUgW2pvaW5dIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9uIGFzIGluIHRoZSBmaXJzdFxuICAgICAgICAgICAgIHJlamVjdGVkIHByb21pc2UgZm91bmQuIFtqb2luXSBzdGlsbCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgcHJvbWlzZXNcbiAgICAgICAgICAgICBiZWZvcmUgYWN0dWFsbHkgcmVzb2x2aW5nLCB0aG91Z2guICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggIWpvaW5fcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPiBqb2luX3Jlc3VsdCA6PSBwX3Jlc3VsdDtcbiAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPlxuICAgICAgICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG4gICAgaW5cblxuICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG5cbiAgKCogdGhpcyBpcyAzIHdvcmRzLCBzbWFsbGVyIHRoYW4gdGhlIDIgdGltZXMgMiB3b3JkcyBhIHBhaXIgb2YgcmVmZXJlbmNlc1xuICAgICB3b3VsZCB0YWtlLiAqKVxuICB0eXBlICgnYSwnYikgcGFpciA9IHtcbiAgICBtdXRhYmxlIHgxOiAnYSBvcHRpb247XG4gICAgbXV0YWJsZSB4MjogJ2Igb3B0aW9uO1xuICB9XG5cbiAgbGV0IGJvdGggcDEgcDIgPVxuICAgIGxldCBwYWlyID0ge3gxID0gTm9uZTsgeDIgPSBOb25lfSBpblxuICAgIGxldCBwMScgPSBiaW5kIHAxIChmdW4gdiAtPiBwYWlyLngxIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpIGluXG4gICAgbGV0IHAyJyA9IGJpbmQgcDIgKGZ1biB2IC0+IHBhaXIueDIgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkgaW5cbiAgICBqb2luIFtwMSc7IHAyJ10gfD4gbWFwIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHBhaXIueDEsIHBhaXIueDIgd2l0aFxuICAgICAgfCBTb21lIHYxLCBTb21lIHYyIC0+IHYxLCB2MlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcblxuICBsZXQgYWxsIHBzID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm5fbmlsXG4gICAgfCBbeF0gLT4gbWFwIChmdW4geSAtPiBbeV0pIHhcbiAgICB8IFt4OyB5XSAtPiBtYXAgKGZ1biAoeCwgeSkgLT4gW3g7IHldKSAoYm90aCB4IHkpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgdnMgPSBBcnJheS5tYWtlIChMaXN0Lmxlbmd0aCBwcykgTm9uZSBpblxuICAgICAgcHNcbiAgICAgIHw+IExpc3QubWFwaSAoZnVuIGluZGV4IHAgLT5cbiAgICAgICAgYmluZCBwIChmdW4gdiAtPiB2cy4oaW5kZXgpIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpKVxuICAgICAgfD4gam9pblxuICAgICAgfD4gbWFwIChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgcmVjIHRvX2xpc3RfdW5vcHQgaSBhY2MgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB2cyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB0b19saXN0X3Vub3B0IChpIC0gMSkgKHg6OmFjYylcbiAgICAgICAgICBpblxuICAgICAgICAgIHRvX2xpc3RfdW5vcHQgKEFycmF5Lmxlbmd0aCB2cyAtIDEpIFtdKVxuXG4gICgqIE1haW50YWluZXIncyBub3RlOiB0aGUgbmV4dCBmZXcgZnVuY3Rpb25zIGFyZSBoZWxwZXJzIGZvciBbY2hvb3NlXSBhbmRcbiAgICAgW3BpY2tdLiBQZXJoYXBzIHRoZXkgc2hvdWxkIGJlIGZhY3RvcmVkIGludG8gc29tZSBraW5kIG9mIGdlbmVyaWNcbiAgICAgW2Nob29zZV0vW3BpY2tdIGltcGxlbWVudGF0aW9uLCB3aGljaCBtYXkgYWN0dWFsbHkgYmUgb3B0aW1hbCBhbnl3YXkgd2l0aFxuICAgICBGbGFtYmRhLiAqKVxuXG4gIGxldCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiAocHMgOiAnYSB0IGxpc3QpID1cbiAgICBsZXQgcmVjIGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHMgPVxuICAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgICB8IFtdIC0+IEVycm9yICh0b3RhbCwgcmVqZWN0ZWQpXG4gICAgICAgfCBwIDo6IHBzIC0+XG4gICAgICAgICAgICBsZXQgSW50ZXJuYWwgcSA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcSkuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBGdWxmaWxsZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIHRvdGFsIHJlamVjdGVkIHBzXG4gICAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCAodG90YWwgKyAxKSAocCA6OiByZWplY3RlZCkgcHNcbiAgICAgICAgICAgIHwgUGVuZGluZyBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHNcbiAgICBpblxuICAgIGxldCByZWMgY291bnRfZnVsZmlsbGVkIHRvdGFsIHBzID1cbiAgICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICAgfCBbXSAtPiBPayB0b3RhbFxuICAgICAgIHwgcCA6OiBwcyAtPlxuICAgICAgICAgICAgbGV0IEludGVybmFsIHEgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHEpLnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgRnVsZmlsbGVkIF8gLT4gY291bnRfZnVsZmlsbGVkICh0b3RhbCArIDEpIHBzXG4gICAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCAxIFtwXSBwc1xuICAgICAgICAgICAgfCBQZW5kaW5nIF8gLT4gY291bnRfZnVsZmlsbGVkIHRvdGFsIHBzXG4gICAgaW5cbiAgICBjb3VudF9mdWxmaWxsZWQgMCBwc1xuXG4gICgqIEV2YWx1YXRlcyB0byB0aGUgW25ddGggcHJvbWlzZSBpbiBbcHNdLCBhbW9uZyBvbmx5IHRob3NlIHByb21pc2VzIGluIFtwc11cbiAgICAgdGhhdCBhcmUgcmVzb2x2ZWQuIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIGF0XG4gICAgIGxlYXN0IFtuXSByZXNvbHZlZCBwcm9taXNlcyBpbiBbcHNdLiAqKVxuICBsZXQgcmVjIG50aF9yZXNvbHZlZCAocHMgOiAnYSB0IGxpc3QpIChuIDogaW50KSA6ICdhIHQgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCcpLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgIG50aF9yZXNvbHZlZCBwcyBuXG5cbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gcFxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZCBwcyAobiAtIDEpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gcFxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZCBwcyAobiAtIDEpXG5cbiAgKCogTGlrZSBbbnRoX3Jlc29sdmVkXSwgYnV0IGNhbmNlbHMgYWxsIHBlbmRpbmcgcHJvbWlzZXMgZm91bmQgd2hpbGVcbiAgICAgdHJhdmVyc2luZyBbcHNdLiAqKVxuICBsZXQgcmVjIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgKHBzIDogJ2EgdCBsaXN0KSAobiA6IGludCkgOiAnYSB0ID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICB8IHA6OnBzIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHAnKS5zdGF0ZSB3aXRoXG4gICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICBjYW5jZWwgcDtcbiAgICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyBuXG5cbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gKExpc3QuaXRlciBjYW5jZWwgcHM7IHApXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAobiAtIDEpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gKExpc3QuaXRlciBjYW5jZWwgcHM7IHApXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAobiAtIDEpXG5cbiAgKCogVGhlIFBSTkcgc3RhdGUgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGNvbnN0YW50IHRvIG1ha2Ugbm9uLUlPLWJhc2VkIHByb2dyYW1zXG4gICAgIGRldGVybWluaXN0aWMuICopXG4gICgqIE1haW50YWluZXIncyBub3RlOiBpcyB0aGlzIG5lY2Vzc2FyeT8gKilcbiAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZSBbfHxdKVxuXG4gIGxldCBjaG9vc2UgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgXCJMd3QuY2hvb3NlIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBtYXRjaCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiBwcyB3aXRoXG4gICAgfCBPayAwIC0+XG4gICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwXG4gICAgICBpblxuICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgT2sgMSAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIDBcblxuICAgIHwgT2sgbiAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgICB8IEVycm9yIChuLCBwcykgLT5cbiAgICAgIG50aF9yZXNvbHZlZCBwcyAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gIGxldCBwaWNrIHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiTHd0LnBpY2sgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIG1hdGNoIGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIHBzIHdpdGhcbiAgICB8IE9rIDAgLT5cbiAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHBcbiAgICAgIGluXG4gICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBPayAxIC0+XG4gICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIDBcblxuICAgIHwgT2sgbiAtPlxuICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwc1xuICAgICAgICAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gICAgfCBFcnJvciAobiwgcXMpIC0+XG4gICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgbnRoX3Jlc29sdmVkIHFzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cblxuXG4gICgqIElmIFtuY2hvb3NlIHBzXSBvciBbbnBpY2sgcHNdIGZvdW5kIGFsbCBwcm9taXNlcyBpbiBbcHNdIHBlbmRpbmcsIHRoZVxuICAgICBjYWxsYmFjayBhZGRlZCB0byBlYWNoIHByb21pc2UgaW4gW3BzXSBldmVudHVhbGx5IGNhbGxzIHRoaXMgZnVuY3Rpb24uIFRoZVxuICAgICBmdW5jdGlvbiBjb2xsZWN0cyBwcm9taXNlcyBpbiBbcHNdIHRoYXQgaGF2ZSBiZWNvbWUgZnVsZmlsbGVkLCBvciBmaW5kcyBvbmVcbiAgICAgcHJvbWlzZSBpbiBbcHNdIHRoYXQgaGFzIGJlZW4gcmVqZWN0ZWQuIEl0IHRoZW4gcmV0dXJucyB0aGUgZGVzaXJlZCBzdGF0ZVxuICAgICBvZiB0aGUgZmluYWwgcHJvbWlzZTogZWl0aGVyIHRoZSBsaXN0IG9mIHJlc3VsdHMgY29sbGVjdGVkLCBvciB0aGVcbiAgICAgZXhjZXB0aW9uIGZvdW5kLiAqKVxuICBsZXQgcmVjIGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmdcbiAgICAgIChyZXN1bHRzIDogJ2EgbGlzdClcbiAgICAgIChwcyA6ICdhIHQgbGlzdCkgOlxuICAgICAgICAoJ2EgbGlzdCByZXNvbHZlZF9zdGF0ZSkgPVxuXG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIEZ1bGZpbGxlZCAoTGlzdC5yZXYgcmVzdWx0cylcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyAodjo6cmVzdWx0cykgcHNcblxuICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICByZXN1bHRcblxuICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyByZXN1bHRzIHBzXG5cbiAgbGV0IG5jaG9vc2UgcHMgPVxuICAgICgqIElmIGF0IGxlYXN0IG9uZSBwcm9taXNlIGluIFtwc10gaXMgZm91bmQgZnVsZmlsbGVkLCB0aGlzIGZ1bmN0aW9uIGlzXG4gICAgICAgY2FsbGVkIHRvIGZpbmQgYWxsIHN1Y2ggcHJvbWlzZXMuICopXG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkx3dC5uY2hvb3NlIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBsZXQgcmVjIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICByZXR1cm4gKExpc3QucmV2IGFjYylcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgKHY6OmFjYykgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwc1xuICAgIGluXG5cbiAgICAoKiBMb29rcyBmb3IgYWxyZWFkeS1yZXNvbHZlZCBwcm9taXNlcyBpbiBbcHNdLiBJZiBub25lIGFyZSBmdWxmaWxsZWQgb3JcbiAgICAgICByZWplY3RlZCwgYWRkcyBhIGNhbGxiYWNrIHRvIGFsbCBwcm9taXNlcyBpbiBbcHNdIChhbGwgb2Ygd2hpY2ggYXJlXG4gICAgICAgcGVuZGluZykuICopXG4gICAgbGV0IHJlYyBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICAgIGxldCBjYWxsYmFjayBfcmVzdWx0ID1cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nIFtdIHBzIGluXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIFt2XSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwc1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzIGluXG4gICAgcFxuXG4gICgqIFNlZSBbbmNob29zZV0uIFRoaXMgZnVuY3Rpb24gZGlmZmVycyBvbmx5IGluIGhhdmluZyBhZGRpdGlvbmFsIGNhbGxzIHRvXG4gICAgIFtjYW5jZWxdLiAqKVxuICBsZXQgbnBpY2sgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJMd3QubnBpY2sgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgcmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCAodjo6YWNjKSBwcydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgW10gcHMgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgW3ZdIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzIGluXG4gICAgcFxuXG5cblxuICAoKiBTYW1lIGdlbmVyYWwgcGF0dGVybiBhcyBbbnBpY2tdIGFuZCBbbmNob29zZV0uICopXG4gIGxldCBuY2hvb3NlX3NwbGl0IHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIFwiTHd0Lm5jaG9vc2Vfc3BsaXQgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgZmluaXNoXG4gICAgICAgICh0b19yZXNvbHZlIDogKCdhIGxpc3QgKiAnYSB0IGxpc3QsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UpXG4gICAgICAgIChmdWxmaWxsZWQgOiAnYSBsaXN0KVxuICAgICAgICAocGVuZGluZyA6ICdhIHQgbGlzdClcbiAgICAgICAgKHBzIDogJ2EgdCBsaXN0KVxuICAgICAgICAgIDogKCdhIGxpc3QgKiAnYSB0IGxpc3QsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZV9jaGFuZ2VkID1cblxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgdG9fcmVzb2x2ZVxuICAgICAgICAgIChGdWxmaWxsZWQgKExpc3QucmV2IGZ1bGZpbGxlZCwgTGlzdC5yZXYgcGVuZGluZykpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgZmluaXNoIHRvX3Jlc29sdmUgKHY6OmZ1bGZpbGxlZCkgcGVuZGluZyBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgdG9fcmVzb2x2ZSByZXN1bHRcblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGZpbmlzaCB0b19yZXNvbHZlIGZ1bGZpbGxlZCAocDo6cGVuZGluZykgcHNcbiAgICBpblxuXG4gICAgbGV0IHJlYyBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcmVzdWx0cyBwZW5kaW5nIHBzID1cbiAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCogTWFpbnRhaW5lcidzIG5vdGU6IHNob3VsZCB0aGUgcGVuZGluZyBwcm9taXNlIGxpc3QgYWxzbyBiZVxuICAgICAgICAgICByZXZlcnNlZD8gSXQgaXMgcmV2ZXJzZWQgaW4gZmluaXNoLiAqKVxuICAgICAgICByZXR1cm4gKExpc3QucmV2IHJlc3VsdHMsIHBlbmRpbmcpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzICh2OjpyZXN1bHRzKSBwZW5kaW5nIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyByZXN1bHRzIChwOjpwZW5kaW5nKSBwc1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBlbmRpbmdfYWNjIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9IGZpbmlzaCBwIFtdIFtdIHBzIGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgW3ZdIHBlbmRpbmdfYWNjIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyAocDo6cGVuZGluZ19hY2MpIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIFtdIHBzIGluXG4gICAgcFxuZW5kXG5pbmNsdWRlIENvbmN1cnJlbnRfY29tcG9zaXRpb25cblxuXG5cbm1vZHVsZSBNaXNjZWxsYW5lb3VzIDpcbnNpZ1xuICAoKiBQcm9taXNlIHN0YXRlIHF1ZXJ5ICopXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUmV0dXJuIG9mICdhXG4gICAgfCBGYWlsIG9mIGV4blxuICAgIHwgU2xlZXBcblxuICB2YWwgc3RhdGUgOiAnYSB0IC0+ICdhIHN0YXRlXG4gIHZhbCBpc19zbGVlcGluZyA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZGVidWdfc3RhdGVfaXMgOiAnYSBzdGF0ZSAtPiAnYSB0IC0+IGJvb2wgdFxuXG4gICgqIEZ1bmN0aW9uIGxpZnRlcnMgKilcbiAgdmFsIGFwcGx5IDogKCdhIC0+ICdiIHQpIC0+ICdhIC0+ICdiIHRcblxuICB2YWwgd3JhcCA6XG4gICAgKHVuaXQgLT4gJ2IpIC0+XG4gICAgJ2IgdFxuICB2YWwgd3JhcDEgOlxuICAgICgnYTEgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYiB0KVxuICB2YWwgd3JhcDIgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdiIHQpXG4gIHZhbCB3cmFwMyA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYiB0KVxuICB2YWwgd3JhcDQgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYiB0KVxuICB2YWwgd3JhcDUgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdiIHQpXG4gIHZhbCB3cmFwNiA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYiB0KVxuICB2YWwgd3JhcDcgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYiB0KVxuXG4gICgqIFBhdXNlZCBwcm9taXNlcyAqKVxuICB2YWwgcGF1c2UgOiB1bml0IC0+IHVuaXQgdFxuICB2YWwgd2FrZXVwX3BhdXNlZCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgcGF1c2VkX2NvdW50IDogdW5pdCAtPiBpbnRcbiAgdmFsIHJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIDogKGludCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBhYmFuZG9uX3BhdXNlZCA6IHVuaXQgLT4gdW5pdFxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSBmb3Igb3RoZXIgbW9kdWxlcyBpbiBMd3QgKilcbiAgdmFsIHBvbGwgOiAnYSB0IC0+ICdhIG9wdGlvblxuZW5kID1cbnN0cnVjdFxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFJldHVybiBvZiAnYVxuICAgIHwgRmFpbCBvZiBleG5cbiAgICB8IFNsZWVwXG5cbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBzdGF0ZSBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+IFJldHVybiB2XG4gICAgfCBSZWplY3RlZCBleG4gLT4gRmFpbCBleG5cbiAgICB8IFBlbmRpbmcgXyAtPiBTbGVlcFxuXG4gIGxldCBkZWJ1Z19zdGF0ZV9pcyBleHBlY3RlZF9zdGF0ZSBwID1cbiAgICByZXR1cm4gKHN0YXRlIHAgPSBleHBlY3RlZF9zdGF0ZSlcblxuICBsZXQgaXNfc2xlZXBpbmcgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiBmYWxzZVxuICAgIHwgUmVqZWN0ZWQgXyAtPiBmYWxzZVxuICAgIHwgUGVuZGluZyBfIC0+IHRydWVcblxuICBsZXQgcG9sbCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIGUgLT4gcmVyYWlzZSBlXG4gICAgfCBGdWxmaWxsZWQgdiAtPiBTb21lIHZcbiAgICB8IFBlbmRpbmcgXyAtPiBOb25lXG5cblxuXG4gIGxldCBhcHBseSBmIHggPVxuICAgIHRyeSBmIHggd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcCBmID1cbiAgICB0cnkgcmV0dXJuIChmICgpKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAxIGYgeDEgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDIgZiB4MSB4MiA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MilcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwMyBmIHgxIHgyIHgzID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA0IGYgeDEgeDIgeDMgeDQgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDUgZiB4MSB4MiB4MyB4NCB4NSA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NCB4NSlcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNiBmIHgxIHgyIHgzIHg0IHg1IHg2ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0IHg1IHg2KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA3IGYgeDEgeDIgeDMgeDQgeDUgeDYgeDcgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQgeDUgeDYgeDcpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuXG5cbiAgbGV0IHBhdXNlX2hvb2sgPSByZWYgaWdub3JlXG5cbiAgbGV0IHBhdXNlZCA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKClcbiAgbGV0IHBhdXNlZF9jb3VudCA9IHJlZiAwXG5cbiAgbGV0IHBhdXNlICgpID1cbiAgICBsZXQgcCA9IGFkZF90YXNrX3IgcGF1c2VkIGluXG4gICAgaW5jciBwYXVzZWRfY291bnQ7XG4gICAgIXBhdXNlX2hvb2sgIXBhdXNlZF9jb3VudDtcbiAgICBwXG5cbiAgbGV0IHdha2V1cF9wYXVzZWQgKCkgPVxuICAgIGlmIEx3dF9zZXF1ZW5jZS5pc19lbXB0eSBwYXVzZWQgdGhlblxuICAgICAgcGF1c2VkX2NvdW50IDo9IDBcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdG1wID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSBpblxuICAgICAgTHd0X3NlcXVlbmNlLnRyYW5zZmVyX3IgcGF1c2VkIHRtcDtcbiAgICAgIHBhdXNlZF9jb3VudCA6PSAwO1xuICAgICAgTHd0X3NlcXVlbmNlLml0ZXJfbCAoZnVuIHIgLT4gd2FrZXVwIHIgKCkpIHRtcFxuICAgIGVuZFxuXG4gIGxldCByZWdpc3Rlcl9wYXVzZV9ub3RpZmllciBmID0gcGF1c2VfaG9vayA6PSBmXG5cbiAgbGV0IGFiYW5kb25fcGF1c2VkICgpID1cbiAgICBMd3Rfc2VxdWVuY2UuY2xlYXIgcGF1c2VkO1xuICAgIHBhdXNlZF9jb3VudCA6PSAwXG5cbiAgbGV0IHBhdXNlZF9jb3VudCAoKSA9ICFwYXVzZWRfY291bnRcbmVuZFxuaW5jbHVkZSBNaXNjZWxsYW5lb3VzXG5cbm1vZHVsZSBMZXRfc3ludGF4ID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9XG4gIHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwIHQgfmYgPSBtYXAgZiB0XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGJpbmQgdCBmXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPVxuICAgIHN0cnVjdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW5maXggPVxuc3RydWN0XG4gIGxldCAoPj49KSA9IGJpbmRcbiAgbGV0ICg9PDwpIGYgcCA9IGJpbmQgcCBmXG4gIGxldCAoPnw9KSBwIGYgPSBtYXAgZiBwXG4gIGxldCAoPXw8KSA9IG1hcFxuICBsZXQgKDwmPikgcCBwJyA9IGpvaW4gW3A7IHAnXVxuICBsZXQgKDw/PikgcCBwJyA9IGNob29zZSBbcDsgcCddXG5cbiAgaW5jbHVkZSBMZXRfc3ludGF4XG5lbmRcbmluY2x1ZGUgKCBJbmZpeCA6IG1vZHVsZSB0eXBlIG9mIEluZml4IHdpdGggbW9kdWxlIExldF9zeW50YXggOj0gTGV0X3N5bnRheC5MZXRfc3ludGF4IClcblxubW9kdWxlIFN5bnRheCA9XG5zdHJ1Y3RcbiAgbGV0IChsZXQqKSA9IGJpbmRcbiAgbGV0IChhbmQqKSA9IGJvdGhcblxuICBsZXQgKGxldCspIHggZiA9IG1hcCBmIHhcbiAgbGV0IChhbmQrKSA9IGJvdGhcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5leGNlcHRpb24gT2ZmXG5cbnR5cGUgb25fc3dpdGNoID0ge1xuICBtdXRhYmxlIGhvb2tzIDogKHVuaXQgLT4gdW5pdCBMd3QudCkgbGlzdDtcbn1cblxudHlwZSBzdGF0ZSA9XG4gIHwgU3Rfb24gb2Ygb25fc3dpdGNoXG4gIHwgU3Rfb2ZmXG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6IHN0YXRlIH1cblxubGV0IGNyZWF0ZSAoKSA9IHsgc3RhdGUgPSBTdF9vbiB7IGhvb2tzID0gW10gfSB9XG5cbmxldCBpc19vbiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2guc3RhdGUgd2l0aFxuICB8IFN0X29uIF8gLT4gdHJ1ZVxuICB8IFN0X29mZiAtPiBmYWxzZVxuXG5sZXQgY2hlY2sgPSBmdW5jdGlvblxuICB8IFNvbWV7IHN0YXRlID0gU3Rfb2ZmIH0gLT4gcmFpc2UgT2ZmXG4gIHwgU29tZSB7c3RhdGUgPSBTdF9vbiBffSB8IE5vbmUgLT4gKClcblxubGV0IGFkZF9ob29rIHN3aXRjaCBob29rID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vbiBvcyB9IC0+XG4gICAgb3MuaG9va3MgPC0gaG9vayA6OiBvcy5ob29rc1xuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29mZiB9IC0+XG4gICAgcmFpc2UgT2ZmXG4gIHwgTm9uZSAtPlxuICAgICgpXG5cbmxldCBhZGRfaG9va19vcl9leGVjIHN3aXRjaCBob29rID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vbiBvcyB9IC0+XG4gICAgb3MuaG9va3MgPC0gaG9vayA6OiBvcy5ob29rcztcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vZmYgfSAtPlxuICAgIGhvb2sgKClcbiAgfCBOb25lIC0+XG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCB0dXJuX29mZiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2guc3RhdGUgd2l0aFxuICB8IFN0X29uIHsgaG9va3MgPSBob29rcyB9IC0+XG4gICAgc3dpdGNoLnN0YXRlIDwtIFN0X29mZjtcbiAgICBMd3Quam9pbiAoTGlzdC5tYXAgKGZ1biBob29rIC0+IEx3dC5hcHBseSBob29rICgpKSBob29rcylcbiAgfCBTdF9vZmYgLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHdpdGhfc3dpdGNoIGZuID1cbiAgbGV0IHN3aXRjaCA9IGNyZWF0ZSAoKSBpblxuICBMd3QuZmluYWxpemVcbiAgICAoZnVuICgpIC0+IGZuIHN3aXRjaClcbiAgICAoZnVuICgpIC0+IHR1cm5fb2ZmIHN3aXRjaClcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxub3BlbiBMd3QuU3ludGF4XG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICsnYSBub2RlID0gTmlsIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGUgTHd0LnRcblxubGV0IHJldHVybl9uaWwgPSBMd3QucmV0dXJuIE5pbFxuXG5sZXQgZW1wdHkgOiAnYSB0ID0gZnVuICgpIC0+IHJldHVybl9uaWxcblxubGV0IHJldHVybiAoeCA6ICdhKSA6ICdhIHQgPSBmdW4gKCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgZW1wdHkpKVxuXG5sZXQgcmV0dXJuX2x3dCAoeCA6ICdhIEx3dC50KSA6ICdhIHQgPSBmdW4gKCkgLT5cbiAgIGxldCsgeCA9IHggaW5cbiAgIENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IHQgKCkgPSBMd3QucmV0dXJuIChDb25zICh4LCB0KSlcblxubGV0IGNvbnNfbHd0IHggdCAoKSA9XG4gICBsZXQrIHggPSB4IGluXG4gICBDb25zICh4LCB0KVxuXG4oKiBBIG5vdGUgb24gcmVjdXJzaW5nIHRocm91Z2ggdGhlIHNlcXM6XG4gICBXaGVuIHRyYXZlcnNpbmcgYSBzZXEsIHRoZSBmaXJzdCB0aW1lIHdlIGV2YWx1YXRlIGEgc3VzcGVuZGVkIG5vZGUgd2UgYXJlXG4gICBvbiB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgYmluZCAoPj49KS4gSW4gdGhhdCBjYXNlLCB3ZSB1c2UgYXBwbHkgdG8gY2FwdHVyZVxuICAgZXhjZXB0aW9ucyBpbnRvIHByb21pc2UgcmVqZWN0aW9uLlxuXG4gICBUaGlzIGlzIG9ubHkgbmVlZGVkIG9uIHRoZSBmaXJzdCBpdGVyYXRpb24gYmVjYXVzZSB3ZSBhcmUgd2l0aGluIGEgY2FsbGJhY2tcbiAgIHBhc3NlZCB0byBMd3Qgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhIGJpbmQgYWZ0ZXIgdGhhdC5cblxuICAgVGhyb3VnaG91dCB0aGlzIGZpbGUgd2UgdXNlIHRoZSBzYW1lIGNvZGUgcGF0dGVybiB0byBhY2hpZXZlIHRoaXM6IHdlXG4gICBzaGFkb3cgdGhlIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwgZnVuY3Rpb24gd2l0aCBhbiBpZGVudGljYWwtYnV0LWZvci10aGUtYXBwbHlcbiAgIG5vbi1yZWN1cnNpdmUgY29weS4gKilcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgc2VxMSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gc2VxMiAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpKVxubGV0IGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBMd3QuYXBwbHkgc2VxMSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gc2VxMiAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+fD0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXAgZiBuZXh0KVxubGV0IG1hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPnw9IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBtYXBfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQrIHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcF9zIGYgbmV4dClcbmxldCBtYXBfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KyB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXBfcyBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpICkpXG5sZXQgZmlsdGVyX21hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KSApKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCogeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcF9zIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcF9zIGYgbmV4dCkgKSlcbmxldCBmaWx0ZXJfbWFwX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0KiB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwX3MgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwX3MgZiBuZXh0KSApKVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyIGYgbmV4dCkpIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxubGV0IGZpbHRlciBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlciBmIG5leHQpKSBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBmaWx0ZXJfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQqIG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlcl9zIGYgbmV4dCkpIGVsc2UgZmlsdGVyX3MgZiBuZXh0ICgpXG5sZXQgZmlsdGVyX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCogb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyX3MgZiBuZXh0KSkgZWxzZSBmaWx0ZXJfcyBmIG5leHQgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBmbGF0X21hcF9hcHAgZiAoZiB4KSBuZXh0ICgpXG5cbigqIHRoaXMgaXMgW2FwcGVuZCBzZXEgKGZsYXRfbWFwIGYgdGFpbCldICopXG5hbmQgZmxhdF9tYXBfYXBwIGYgc2VxIHRhaWwgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IGZsYXRfbWFwIGYgdGFpbCAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGZsYXRfbWFwX2FwcCBmIG5leHQgdGFpbCkpXG5cbmxldCBmbGF0X21hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgZmxhdF9tYXBfYXBwIGYgKGYgeCkgbmV4dCAoKVxuXG5sZXQgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIGxldCByZWMgYXV4IGYgYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBsZXQgYXV4IGYgYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgZm9sZF9sZWZ0X3MgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBsZXQgYXV4IGYgYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGF1eCBmIGFjYyBzZXFcblxubGV0IGl0ZXIgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgbGV0IGF1eCBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGF1eCBzZXFcblxubGV0IGl0ZXJfcyBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiAoKSA9IGYgeCBpblxuICAgICAgICBhdXggbmV4dFxuICBpblxuICBsZXQgYXV4IHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogKCkgPSBmIHggaW5cbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgaXRlcl9wIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5qb2luIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IHAgPSBmIHggaW5cbiAgICAgICAgYXV4IChwOjphY2MpIG5leHRcbiAgaW5cbiAgbGV0IGF1eCBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5qb2luIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IHAgPSBmIHggaW5cbiAgICAgICAgYXV4IChwOjphY2MpIG5leHRcbiAgaW5cbiAgYXV4IFtdIHNlcVxuXG5sZXQgaXRlcl9uID8obWF4X2NvbmN1cnJlbmN5ID0gMSkgZiBzZXEgPVxuICBiZWdpblxuICAgIGlmIG1heF9jb25jdXJyZW5jeSA8PSAwIHRoZW5cbiAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkx3dF9zZXEuaXRlcl9uOiBtYXhfY29uY3VycmVuY3kgbXVzdCBiZSA+IDAsICVkIGdpdmVuXCJcbiAgICAgICAgICBtYXhfY29uY3VycmVuY3lcbiAgICAgIGluXG4gICAgICBpbnZhbGlkX2FyZyBtZXNzYWdlXG4gIGVuZDtcbiAgbGV0IHJlYyBsb29wIHJ1bm5pbmcgYXZhaWxhYmxlIHNlcSA9XG4gICAgYmVnaW5cbiAgICAgIGlmIGF2YWlsYWJsZSA+IDAgdGhlbiAoXG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSlcbiAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICBMd3QubmNob29zZV9zcGxpdCBydW5uaW5nID4+PSBmdW4gKGNvbXBsZXRlLCBydW5uaW5nKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUgKyBMaXN0Lmxlbmd0aCBjb21wbGV0ZSlcbiAgICAgIClcbiAgICBlbmQgPj49IGZ1biAocnVubmluZywgYXZhaWxhYmxlKSAtPlxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPlxuICAgICAgTHd0LmpvaW4gcnVubmluZ1xuICAgIHwgQ29ucyAoZWx0LCBzZXEpIC0+XG4gICAgICBsb29wIChmIGVsdCA6OiBydW5uaW5nKSAocHJlZCBhdmFpbGFibGUpIHNlcVxuICBpblxuICAoKiBiZWNhdXNlIHRoZSByZWN1cnNpb24gaXMgbW9yZSBjb21wbGljYXRlZCBoZXJlLCB3ZSBhcHBseSB0aGUgc2VxIGRpcmVjdGx5IGF0XG4gICAgIHRoZSBjYWxsLXNpdGUgaW5zdGVhZCAqKVxuICBsb29wIFtdIG1heF9jb25jdXJyZW5jeSAoZnVuICgpIC0+IEx3dC5hcHBseSBzZXEgKCkpXG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZCBmIHUnKSlcbiAgfCBleGNlcHRpb24gZXhjIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4YyAtPiBMd3QuZmFpbCBleGNcblxubGV0IHJlYyB1bmZvbGRfbHd0IGYgdSAoKSA9XG4gIGxldCogeCA9IGYgdSBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkX2x3dCBmIHUnKSlcbmxldCB1bmZvbGRfbHd0IGYgdSAoKSA9XG4gIGxldCogeCA9IEx3dC5hcHBseSBmIHUgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZF9sd3QgZiB1JykpXG5cbmxldCByZWMgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZW1wdHlcbiAgfCBoIDo6IHQgLT4gY29ucyBoIChvZl9saXN0IHQpXG5cbmxldCByZWMgdG9fbGlzdCBzZXEgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBsZXQrIGwgPSB0b19saXN0IG5leHQgaW5cbiAgICB4IDo6IGxcbmxldCB0b19saXN0IHNlcSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBsZXQrIGwgPSB0b19saXN0IG5leHQgaW5cbiAgICB4IDo6IGxcblxubGV0IHJlYyBvZl9zZXEgc2VxICgpID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBMd3QucmV0dXJuIChDb25zICh4LCAob2Zfc2VxIG5leHQpKSlcbiAgfCBleGNlcHRpb24gZXhuIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBMd3QuZmFpbCBleG5cblxubGV0IHJlYyBvZl9zZXFfbHd0IChzZXE6ICdhIEx3dC50IFNlcS50KTogJ2EgdCA9IGZ1biAoKSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgICAgIGxldCsgeCA9IHggaW5cbiAgICAgICBsZXQgbmV4dCA9IG9mX3NlcV9sd3QgbmV4dCBpblxuICAgICAgIENvbnMgKHgsIG5leHQpXG5sZXQgb2Zfc2VxX2x3dCAoc2VxOiAnYSBMd3QudCBTZXEudCk6ICdhIHQgPSBmdW4gKCkgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiByZXR1cm5fbmlsXG4gICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICBsZXQrIHggPSB4IGluXG4gICAgICAgbGV0IG5leHQgPSBvZl9zZXFfbHd0IG5leHQgaW5cbiAgICAgICBDb25zICh4LCBuZXh0KVxuICAgIHwgZXhjZXB0aW9uIGV4YyB3aGVuIEx3dC5FeGNlcHRpb25fZmlsdGVyLnJ1biBleGMgLT4gTHd0LmZhaWwgZXhjXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxub3BlbiBMd3QuSW5maXhcblxuZXhjZXB0aW9uIENsb3NlZFxuZXhjZXB0aW9uIEZ1bGxcbmV4Y2VwdGlvbiBFbXB0eVxuXG4oKiBBIG5vZGUgaW4gYSBxdWV1ZSBvZiBwZW5kaW5nIGRhdGEuICopXG50eXBlICdhIG5vZGUgPSB7XG4gIG11dGFibGUgbmV4dCA6ICdhIG5vZGU7XG4gICgqIE5leHQgbm9kZSBpbiB0aGUgcXVldWUuIEZvciB0aGUgbGFzdCBub2RlIGl0IHBvaW50cyB0byBpdHNlbGYuICopXG4gIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgKCogRGF0YSBvZiB0aGlzIG5vZGUuIEZvciB0aGUgbGFzdCBub2RlIGl0IGlzIGFsd2F5cyBbTm9uZV0uICopXG59XG5cbigqIE5vdGU6IGEgcXVldWUgZm9yIGFuIGV4aGF1c3RlZCBzdHJlYW0gaXMgcmVwcmVzZW50ZWQgYnkgYSBub2RlXG4gICBjb250YWluaW5nIFtOb25lXSBmb2xsb3dlZCBieSBhIG5vZGUgd2l0aCBpdHNlbGYgYXMgbmV4dCBhbmQgW05vbmVdXG4gICBhcyBkYXRhLiAqKVxuXG5sZXQgbmV3X25vZGUgKCkgPVxuICBsZXQgcmVjIG5vZGUgPSB7IG5leHQgPSBub2RlOyBkYXRhID0gTm9uZSB9IGluXG4gIG5vZGVcblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgdXNpbmcgYSBmdW5jdGlvbiB0byBjcmVhdGUgbmV3IGVsZW1lbnRzLiAqKVxudHlwZSAnYSBmcm9tID0ge1xuICBmcm9tX2NyZWF0ZSA6IHVuaXQgLT4gJ2Egb3B0aW9uIEx3dC50O1xuICAoKiBGdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBuZXcgZWxlbWVudHMuICopXG4gIG11dGFibGUgZnJvbV90aHJlYWQgOiB1bml0IEx3dC50O1xuICAoKiBUaHJlYWQgd2hpY2g6XG5cbiAgICAgLSB3YWl0IGZvciB0aGUgdGhyZWFkIHJldHVybmVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8gW2Zyb21fbmV4dF0sXG4gICAgIC0gYWRkIHRoZSBuZXh0IGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuXG5cbiAgICAgSWYgaXQgaXMgYSBzbGVlcGluZyB0aHJlYWQsIHRoZW4gaXQgbXVzdCBiZSB1c2VkIGluc3RlYWQgb2YgY3JlYXRpbmcgYVxuICAgICBuZXcgb25lIHdpdGggW2Zyb21fY3JlYXRlXS4gKilcbn1cblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgZm9yIHB1c2ggc3RyZWFtcy4gKilcbnR5cGUgcHVzaCA9IHtcbiAgbXV0YWJsZSBwdXNoX3NpZ25hbCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCBzaWduYWxlZCB3aGVuIGEgbmV3IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0cmVhbS4gKilcbiAgbXV0YWJsZSBwdXNoX3dhaXRpbmcgOiBib29sO1xuICAoKiBJcyBhIHRocmVhZCB3YWl0aW5nIG9uIFtwdXNoX3NpZ25hbF0gPyAqKVxuICBtdXRhYmxlIHB1c2hfZXh0ZXJuYWwgOiBPYmoudCBbQG9jYW1sLndhcm5pbmcgXCItNjlcIl07XG4gICgqIFJlZmVyZW5jZSB0byBhbiBleHRlcm5hbCBzb3VyY2UuICopXG59XG5cbigqIFR5cGUgb2YgYSBzdHJlYW0gc291cmNlIGZvciBib3VuZGVkLXB1c2ggc3RyZWFtcy4gKilcbnR5cGUgJ2EgcHVzaF9ib3VuZGVkID0ge1xuICBtdXRhYmxlIHB1c2hiX3NpZ25hbCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCBzaWduYWxlZCB3aGVuIGEgbmV3IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0cmVhbS4gKilcbiAgbXV0YWJsZSBwdXNoYl93YWl0aW5nIDogYm9vbDtcbiAgKCogSXMgYSB0aHJlYWQgd2FpdGluZyBvbiBbcHVzaGJfc2lnbmFsXSA/ICopXG4gIG11dGFibGUgcHVzaGJfc2l6ZSA6IGludDtcbiAgKCogU2l6ZSBvZiB0aGUgcXVldWUuICopXG4gIG11dGFibGUgcHVzaGJfY291bnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbGVuZ3RoIG9mIHRoZSBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwdXNoYl9wZW5kaW5nIDogJ2Egb3B0aW9uO1xuICAoKiBUaGUgbmV4dCBlbGVtZW50IHRvIHB1c2ggaWYgYSB0aHJlYWQgYmxvY2tlZCBvbiBwdXNoLiBXZSBzdG9yZSBpdFxuICAgICBoZXJlIHRvIGJlIHN1cmUgaXQgd2lsbCBiZSB0aGUgZmlyc3QgZWxlbWVudCB0byBiZSBhZGRlZCB3aGVuXG4gICAgIHNwYWNlIGJlY29tZXMgYXZhaWxhYmxlLiAqKVxuICBtdXRhYmxlIHB1c2hiX3B1c2hfd2FpdGVyIDogdW5pdCBMd3QudDtcbiAgbXV0YWJsZSBwdXNoYl9wdXNoX3dha2VuZXIgOiB1bml0IEx3dC51O1xuICAoKiBUaHJlYWQgYmxvY2tlZCBvbiBwdXNoLiAqKVxuICBtdXRhYmxlIHB1c2hiX2V4dGVybmFsIDogT2JqLnQgW0BvY2FtbC53YXJuaW5nIFwiLTY5XCJdO1xuICAoKiBSZWZlcmVuY2UgdG8gYW4gZXh0ZXJuYWwgc291cmNlLiAqKVxufVxuXG4oKiBTb3VyY2Ugb2YgYSBzdHJlYW0uICopXG50eXBlICdhIHNvdXJjZSA9XG4gIHwgRnJvbSBvZiAnYSBmcm9tXG4gIHwgRnJvbV9kaXJlY3Qgb2YgKHVuaXQgLT4gJ2Egb3B0aW9uKVxuICB8IFB1c2ggb2YgcHVzaFxuICB8IFB1c2hfYm91bmRlZCBvZiAnYSBwdXNoX2JvdW5kZWRcblxudHlwZSAnYSB0ID0ge1xuICBzb3VyY2UgOiAnYSBzb3VyY2U7XG4gICgqIFRoZSBzb3VyY2Ugb2YgdGhlIHN0cmVhbS4gKilcbiAgY2xvc2UgOiB1bml0IEx3dC51O1xuICAoKiBBIHdha2VuZXIgZm9yIGEgdGhyZWFkIHRoYXQgc2xlZXBzIHVudGlsIHRoZSBzdHJlYW0gaXMgY2xvc2VkLiAqKVxuICBjbG9zZWQgOiB1bml0IEx3dC50O1xuICAoKiBBIHdhaXRlciBmb3IgYSB0aHJlYWQgdGhhdCBzbGVlcHMgdW50aWwgdGhlIHN0cmVhbSBpcyBjbG9zZWQuICopXG4gIG11dGFibGUgbm9kZSA6ICdhIG5vZGU7XG4gICgqIFBvaW50ZXIgdG8gZmlyc3QgcGVuZGluZyBlbGVtZW50LCBvciB0byBbbGFzdF0gaWYgdGhlcmUgaXMgbm9cbiAgICAgcGVuZGluZyBlbGVtZW50LiAqKVxuICBsYXN0IDogJ2Egbm9kZSByZWY7XG4gICgqIE5vZGUgbWFya2luZyB0aGUgZW5kIG9mIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGVsZW1lbnRzLiAqKVxufVxuXG5jbGFzcyB0eXBlIFsnYV0gYm91bmRlZF9wdXNoID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50XG4gIG1ldGhvZCByZXNpemUgOiBpbnQgLT4gdW5pdFxuICBtZXRob2QgcHVzaCA6ICdhIC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIGNsb3NlIDogdW5pdFxuICBtZXRob2QgY291bnQgOiBpbnRcbiAgbWV0aG9kIGJsb2NrZWQgOiBib29sXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sXG4gIG1ldGhvZCBzZXRfcmVmZXJlbmNlIDogJ2EuICdhIC0+IHVuaXRcbmVuZFxuXG4oKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGNsb25lcyBpcyB0aGUgcG9pbnRlciB0byB0aGUgZmlyc3RcbiAgIHBlbmRpbmcgZWxlbWVudC4gKilcbmxldCBjbG9uZSBzID1cbiAgKG1hdGNoIHMuc291cmNlIHdpdGhcbiAgIHwgUHVzaF9ib3VuZGVkIF8gLT4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmNsb25lXCJcbiAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPiAoKSk7XG4gIHtcbiAgICBzb3VyY2UgPSBzLnNvdXJjZTtcbiAgICBjbG9zZSA9IHMuY2xvc2U7XG4gICAgY2xvc2VkID0gcy5jbG9zZWQ7XG4gICAgbm9kZSA9IHMubm9kZTtcbiAgICBsYXN0ID0gcy5sYXN0O1xuICB9XG5cbmxldCBmcm9tX3NvdXJjZSBzb3VyY2UgPVxuICBsZXQgbm9kZSA9IG5ld19ub2RlICgpIGluXG4gIGxldCBjbG9zZWQsIGNsb3NlID0gTHd0LndhaXQgKCkgaW5cbiAgeyBzb3VyY2UgOyBjbG9zZSA7IGNsb3NlZCA7IG5vZGUgOyBsYXN0ID0gcmVmIG5vZGUgfVxuXG5sZXQgZnJvbSBmID1cbiAgZnJvbV9zb3VyY2UgKEZyb20geyBmcm9tX2NyZWF0ZSA9IGY7IGZyb21fdGhyZWFkID0gTHd0LnJldHVybl91bml0IH0pXG5cbmxldCBmcm9tX2RpcmVjdCBmID1cbiAgZnJvbV9zb3VyY2UgKEZyb21fZGlyZWN0IGYpXG5cbmxldCBjbG9zZWQgcyA9IHMuY2xvc2VkXG5cbmxldCBpc19jbG9zZWQgcyA9XG4gIG5vdCAoTHd0LmlzX3NsZWVwaW5nIChjbG9zZWQgcykpXG5cbmxldCBlbnF1ZXVlJyBlIGxhc3QgPVxuICBsZXQgbm9kZSA9ICFsYXN0XG4gIGFuZCBuZXdfbGFzdCA9IG5ld19ub2RlICgpIGluXG4gIG5vZGUuZGF0YSA8LSBlO1xuICBub2RlLm5leHQgPC0gbmV3X2xhc3Q7XG4gIGxhc3QgOj0gbmV3X2xhc3RcblxubGV0IGVucXVldWUgZSBzID1cbiAgZW5xdWV1ZScgZSBzLmxhc3RcblxubGV0IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSA9XG4gICgqIENyZWF0ZSB0aGUgc291cmNlIGZvciBub3RpZmljYXRpb25zIG9mIG5ldyBlbGVtZW50cy4gKilcbiAgbGV0IHNvdXJjZSwgcHVzaF9zaWduYWxfcmVzb2x2ZXIgPVxuICAgIGxldCBwdXNoX3NpZ25hbCwgcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICh7IHB1c2hfc2lnbmFsO1xuICAgICAgIHB1c2hfd2FpdGluZyA9IGZhbHNlO1xuICAgICAgIHB1c2hfZXh0ZXJuYWwgPSBPYmoucmVwciAoKSB9LFxuICAgICByZWYgcHVzaF9zaWduYWxfcmVzb2x2ZXIpXG4gIGluXG4gIGxldCB0ID0gZnJvbV9zb3VyY2UgKFB1c2ggc291cmNlKSBpblxuICAoKiBbcHVzaF0gc2hvdWxkIG5vdCBjbG9zZSBvdmVyIFt0XSBzbyB0aGF0IGl0IGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZCBldmVuXG4gICAqIHRoZXJlIGFyZSBzdGlsbCByZWZlcmVuY2VzIHRvIFtwdXNoXS4gVW5wYWNrIGFsbCB0aGUgY29tcG9uZW50cyBvZiBbdF1cbiAgICogdGhhdCBbcHVzaF0gbmVlZHMgYW5kIHJlZmVyZW5jZSB0aG9zZSBpZGVudGlmaWVycyBpbnN0ZWFkLiAqKVxuICBsZXQgY2xvc2UgPSB0LmNsb3NlIGFuZCBjbG9zZWQgPSB0LmNsb3NlZCBhbmQgbGFzdCA9IHQubGFzdCBpblxuICAoKiBUaGUgcHVzaCBmdW5jdGlvbi4gSXQgZG9lcyBub3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3RyZWFtLiAqKVxuICBsZXQgcHVzaCB4ID1cbiAgICBpZiBub3QgKEx3dC5pc19zbGVlcGluZyBjbG9zZWQpIHRoZW4gcmFpc2UgQ2xvc2VkO1xuICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgZW5xdWV1ZScgeCBsYXN0O1xuICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgIGVsZW1lbnQuICopXG4gICAgaWYgc291cmNlLnB1c2hfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICBzb3VyY2UucHVzaF93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgKCogVXBkYXRlIHRocmVhZHMuICopXG4gICAgICBsZXQgb2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyID0gIXB1c2hfc2lnbmFsX3Jlc29sdmVyIGluXG4gICAgICBsZXQgbmV3X3dhaXRlciwgbmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICAgIHNvdXJjZS5wdXNoX3NpZ25hbCA8LSBuZXdfd2FpdGVyO1xuICAgICAgcHVzaF9zaWduYWxfcmVzb2x2ZXIgOj0gbmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyO1xuICAgICAgKCogU2lnbmFsIHRoYXQgYSBuZXcgdmFsdWUgaGFzIGJlZW4gcmVjZWl2ZWQuICopXG4gICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF9wdXNoX3NpZ25hbF9yZXNvbHZlciAoKVxuICAgIGVuZDtcbiAgICAoKiBEbyB0aGlzIGF0IHRoZSBlbmQgaW4gY2FzZSBvbmUgb2YgdGhlIGZ1bmN0aW9uIHJhaXNlIGFuXG4gICAgICAgZXhjZXB0aW9uLiAqKVxuICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBjbG9zZSAoKVxuICBpblxuICAodCwgcHVzaCwgZnVuIHggLT4gc291cmNlLnB1c2hfZXh0ZXJuYWwgPC0gT2JqLnJlcHIgeClcblxubGV0IHJldHVybiBhID1cbiAgbGV0IHN0cmVhbSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICBwdXNoIChTb21lIGEpO1xuICBwdXNoIE5vbmU7XG4gIHN0cmVhbVxuXG5sZXQgcmV0dXJuX2x3dCBhID1cbiAgbGV0IHNvdXJjZSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICBMd3QuZG9udF93YWl0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgTHd0LmJpbmQgYSAoZnVuIHggLT5cbiAgICAgICAgcHVzaCAoU29tZSB4KTtcbiAgICAgICAgcHVzaCBOb25lO1xuICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuICAgIChmdW4gX2V4YyAtPiBwdXNoIE5vbmUpO1xuICBzb3VyY2VcblxubGV0IG9mX3NlcSBzID1cbiAgbGV0IHMgPSByZWYgcyBpblxuICBsZXQgZ2V0ICgpID1cbiAgICBtYXRjaCAhcyAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICB8IFNlcS5Db25zIChlbHQsIHMnKSAtPiBzIDo9IHMnOyBTb21lIGVsdFxuICBpblxuICBmcm9tX2RpcmVjdCBnZXRcblxubGV0IG9mX2x3dF9zZXEgcyA9XG4gIGxldCBzID0gcmVmIHMgaW5cbiAgbGV0IGdldCAoKSA9XG4gICAgIXMgKCkgPnw9IGZ1bmN0aW9uXG4gICAgfCBMd3Rfc2VxLk5pbCAtPiBOb25lXG4gICAgfCBMd3Rfc2VxLkNvbnMgKGVsdCwgcycpIC0+IHMgOj0gcyc7IFNvbWUgZWx0XG4gIGluXG4gIGZyb20gZ2V0XG5cblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBzb3VyY2UsIHB1c2gsIF8gPSBjcmVhdGVfd2l0aF9yZWZlcmVuY2UgKCkgaW5cbiAgKHNvdXJjZSwgcHVzaClcblxubGV0IG9mX2l0ZXIgaXRlciBpID1cbiAgbGV0IHN0cmVhbSwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIChmdW4geCAtPiBwdXNoIChTb21lIHgpKSBpO1xuICBwdXNoIE5vbmU7XG4gIHN0cmVhbVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgb2ZfaXRlciBMaXN0Lml0ZXIgbFxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIG9mX2l0ZXIgQXJyYXkuaXRlciBhXG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIG9mX2l0ZXIgU3RyaW5nLml0ZXIgc1xuXG4oKiBBZGQgdGhlIHBlbmRpbmcgZWxlbWVudCB0byB0aGUgcXVldWUgYW5kIG5vdGlmeSB0aGUgYmxvY2tlZCBwdXNoZWQuXG5cbiAgIFByZWNvbmRpdGlvbjogaW5mby5wdXNoYl9wZW5kaW5nID0gU29tZSBfXG5cbiAgIFRoaXMgZG9lcyBub3QgbW9kaWZ5IGluZm8ucHVzaGJfY291bnQuICopXG5sZXQgbm90aWZ5X3B1c2hlciBpbmZvIGxhc3QgPVxuICAoKiBQdXNoIHRoZSBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICBlbnF1ZXVlJyBpbmZvLnB1c2hiX3BlbmRpbmcgbGFzdDtcbiAgKCogQ2xlYXIgcGVuZGluZyBlbGVtZW50LiAqKVxuICBpbmZvLnB1c2hiX3BlbmRpbmcgPC0gTm9uZTtcbiAgKCogV2FrZXVwIHRoZSBwdXNoZXIuICopXG4gIGxldCBvbGRfd2FrZW5lciA9IGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIGluXG4gIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyIDwtIHdhaXRlcjtcbiAgaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgPC0gd2FrZW5lcjtcbiAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuXG5jbGFzcyBbJ2FdIGJvdW5kZWRfcHVzaF9pbXBsIChpbmZvIDogJ2EgcHVzaF9ib3VuZGVkKSB3YWtlbmVyX2NlbGwgbGFzdCBjbG9zZSA9IG9iamVjdFxuICB2YWwgbXV0YWJsZSBjbG9zZWQgPSBmYWxzZVxuXG4gIG1ldGhvZCBzaXplID1cbiAgICBpbmZvLnB1c2hiX3NpemVcblxuICBtZXRob2QgcmVzaXplIHNpemUgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmJvdW5kZWRfcHVzaCNyZXNpemVcIjtcbiAgICBpbmZvLnB1c2hiX3NpemUgPC0gc2l6ZTtcbiAgICBpZiBpbmZvLnB1c2hiX2NvdW50IDwgaW5mby5wdXNoYl9zaXplICYmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCArIDE7XG4gICAgICBub3RpZnlfcHVzaGVyIGluZm8gbGFzdFxuICAgIGVuZFxuXG4gIG1ldGhvZCBwdXNoIHggPVxuICAgIGlmIGNsb3NlZCB0aGVuXG4gICAgICBMd3QuZmFpbCBDbG9zZWRcbiAgICBlbHNlIGlmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW5cbiAgICAgIEx3dC5mYWlsIEZ1bGxcbiAgICBlbHNlIGlmIGluZm8ucHVzaGJfY291bnQgPj0gaW5mby5wdXNoYl9zaXplIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBTb21lIHg7XG4gICAgICBMd3QuY2F0Y2hcbiAgICAgICAgKGZ1biAoKSAtPiBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyKVxuICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICAgICB8IEx3dC5DYW5jZWxlZCAtPlxuICAgICAgICAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAgICAgICAgICAgIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgICAgIGluZm8ucHVzaGJfcHVzaF93YWl0ZXIgPC0gd2FpdGVyO1xuICAgICAgICAgICAgIGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIDwtIHdha2VuZXI7XG4gICAgICAgICAgICAgTHd0LmZhaWwgZXhuXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIEx3dC5mYWlsIGV4bilcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogUHVzaCB0aGUgZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgIGVucXVldWUnIChTb21lIHgpIGxhc3Q7XG4gICAgICBpbmZvLnB1c2hiX2NvdW50IDwtIGluZm8ucHVzaGJfY291bnQgKyAxO1xuICAgICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgICBlbGVtZW50LiAqKVxuICAgICAgaWYgaW5mby5wdXNoYl93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgICAoKiBVcGRhdGUgdGhyZWFkcy4gKilcbiAgICAgICAgbGV0IG9sZF93YWtlbmVyID0gIXdha2VuZXJfY2VsbCBpblxuICAgICAgICBsZXQgbmV3X3dhaXRlciwgbmV3X3dha2VuZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICAgICBpbmZvLnB1c2hiX3NpZ25hbCA8LSBuZXdfd2FpdGVyO1xuICAgICAgICB3YWtlbmVyX2NlbGwgOj0gbmV3X3dha2VuZXI7XG4gICAgICAgICgqIFNpZ25hbCB0aGF0IGEgbmV3IHZhbHVlIGhhcyBiZWVuIHJlY2VpdmVkLiAqKVxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG4gICAgICBlbmQ7XG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICBlbmRcblxuICBtZXRob2QgY2xvc2UgPVxuICAgIGlmIG5vdCBjbG9zZWQgdGhlbiBiZWdpblxuICAgICAgY2xvc2VkIDwtIHRydWU7XG4gICAgICBsZXQgbm9kZSA9ICFsYXN0IGFuZCBuZXdfbGFzdCA9IG5ld19ub2RlICgpIGluXG4gICAgICBub2RlLmRhdGEgPC0gTm9uZTtcbiAgICAgIG5vZGUubmV4dCA8LSBuZXdfbGFzdDtcbiAgICAgIGxhc3QgOj0gbmV3X2xhc3Q7XG4gICAgICBpZiBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZSB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyX2V4biBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciBDbG9zZWRcbiAgICAgIGVuZDtcbiAgICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgICAgZWxlbWVudC4gKilcbiAgICAgIGlmIGluZm8ucHVzaGJfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfd2FpdGluZyA8LSBmYWxzZTtcbiAgICAgICAgbGV0IG9sZF93YWtlbmVyID0gIXdha2VuZXJfY2VsbCBpblxuICAgICAgICAoKiBTaWduYWwgdGhhdCBhIG5ldyB2YWx1ZSBoYXMgYmVlbiByZWNlaXZlZC4gKilcbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuICAgICAgZW5kO1xuICAgICAgTHd0Lndha2V1cCBjbG9zZSAoKTtcbiAgICBlbmRcblxuICBtZXRob2QgY291bnQgPVxuICAgIGluZm8ucHVzaGJfY291bnRcblxuICBtZXRob2QgYmxvY2tlZCA9XG4gICAgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmVcblxuICBtZXRob2QgY2xvc2VkID1cbiAgICBjbG9zZWRcblxuICBtZXRob2Qgc2V0X3JlZmVyZW5jZSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4geCAtPiBpbmZvLnB1c2hiX2V4dGVybmFsIDwtIE9iai5yZXByIHhcbmVuZFxuXG5sZXQgY3JlYXRlX2JvdW5kZWQgc2l6ZSA9XG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmNyZWF0ZV9ib3VuZGVkXCI7XG4gICgqIENyZWF0ZSB0aGUgc291cmNlIGZvciBub3RpZmljYXRpb25zIG9mIG5ldyBlbGVtZW50cy4gKilcbiAgbGV0IGluZm8sIHdha2VuZXJfY2VsbCA9XG4gICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC53YWl0ICgpIGluXG4gICAgbGV0IHB1c2hfd2FpdGVyLCBwdXNoX3dha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgICh7IHB1c2hiX3NpZ25hbCA9IHdhaXRlcjtcbiAgICAgICBwdXNoYl93YWl0aW5nID0gZmFsc2U7XG4gICAgICAgcHVzaGJfc2l6ZSA9IHNpemU7XG4gICAgICAgcHVzaGJfY291bnQgPSAwO1xuICAgICAgIHB1c2hiX3BlbmRpbmcgPSBOb25lO1xuICAgICAgIHB1c2hiX3B1c2hfd2FpdGVyID0gcHVzaF93YWl0ZXI7XG4gICAgICAgcHVzaGJfcHVzaF93YWtlbmVyID0gcHVzaF93YWtlbmVyO1xuICAgICAgIHB1c2hiX2V4dGVybmFsID0gT2JqLnJlcHIgKCkgfSxcbiAgICAgcmVmIHdha2VuZXIpXG4gIGluXG4gIGxldCB0ID0gZnJvbV9zb3VyY2UgKFB1c2hfYm91bmRlZCBpbmZvKSBpblxuICAodCwgbmV3IGJvdW5kZWRfcHVzaF9pbXBsIGluZm8gd2FrZW5lcl9jZWxsIHQubGFzdCB0LmNsb3NlKVxuXG4oKiBXYWl0IGZvciBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGVsZW1lbnRcbiAgIG9mIHRoZSBzdHJlYW0uICopXG5sZXQgZmVlZCBzID1cbiAgbWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICB8IEZyb20gZnJvbSAtPlxuICAgICgqIFRoZXJlIGlzIGFscmVhZHkgYSB0aHJlYWQgc3RhcnRlZCB0byBjcmVhdGUgYSBuZXcgZWxlbWVudCxcbiAgICAgICB3YWl0IGZvciB0aGlzIG9uZSB0byB0ZXJtaW5hdGUuICopXG4gICAgaWYgTHd0LmlzX3NsZWVwaW5nIGZyb20uZnJvbV90aHJlYWQgdGhlblxuICAgICAgTHd0LnByb3RlY3RlZCBmcm9tLmZyb21fdGhyZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogT3RoZXJ3aXNlIHJlcXVlc3QgYSBuZXcgZWxlbWVudC4gKilcbiAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICBmcm9tLmZyb21fY3JlYXRlICgpID4+PSBmdW4geCAtPlxuICAgICAgICAoKiBQdXNoIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgICBlbnF1ZXVlIHggcztcbiAgICAgICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIHMuY2xvc2UgKCk7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgaW5cbiAgICAgICgqIEFsbG93IG90aGVyIHRocmVhZHMgdG8gYWNjZXNzIHRoaXMgdGhyZWFkLiAqKVxuICAgICAgZnJvbS5mcm9tX3RocmVhZCA8LSB0aHJlYWQ7XG4gICAgICBMd3QucHJvdGVjdGVkIHRocmVhZFxuICAgIGVuZFxuICB8IEZyb21fZGlyZWN0IGYgLT5cbiAgICBsZXQgeCA9IGYgKCkgaW5cbiAgICAoKiBQdXNoIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgIGVucXVldWUgeCBzO1xuICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBzLmNsb3NlICgpO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IFB1c2ggcHVzaCAtPlxuICAgIHB1c2gucHVzaF93YWl0aW5nIDwtIHRydWU7XG4gICAgTHd0LnByb3RlY3RlZCBwdXNoLnB1c2hfc2lnbmFsXG4gIHwgUHVzaF9ib3VuZGVkIHB1c2ggLT5cbiAgICBwdXNoLnB1c2hiX3dhaXRpbmcgPC0gdHJ1ZTtcbiAgICBMd3QucHJvdGVjdGVkIHB1c2gucHVzaGJfc2lnbmFsXG5cbigqIFJlbW92ZSBbbm9kZV0gZnJvbSB0aGUgdG9wIG9mIHRoZSBxdWV1ZSwgb3IgZG8gbm90aGluZyBpZiBpdCB3YXNcbiAgIGFscmVhZHkgY29uc3VtZWQuXG5cbiAgIFByZWNvbmRpdGlvbjogbm9kZS5kYXRhIDw+IE5vbmVcbiopXG5sZXQgY29uc3VtZSBzIG5vZGUgPVxuICBpZiBub2RlID09IHMubm9kZSB0aGVuIGJlZ2luXG4gICAgcy5ub2RlIDwtIG5vZGUubmV4dDtcbiAgICBtYXRjaCBzLnNvdXJjZSB3aXRoXG4gICAgfCBQdXNoX2JvdW5kZWQgaW5mbyAtPlxuICAgICAgaWYgaW5mby5wdXNoYl9wZW5kaW5nID0gTm9uZSB0aGVuXG4gICAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCAtIDFcbiAgICAgIGVsc2VcbiAgICAgICAgbm90aWZ5X3B1c2hlciBpbmZvIHMubGFzdFxuICAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPlxuICAgICAgKClcbiAgZW5kXG5cbmxldCByZWMgcGVla19yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHBlZWtfcmVjIHMgbm9kZVxuICBlbHNlXG4gICAgTHd0LnJldHVybiBub2RlLmRhdGFcblxubGV0IHBlZWsgcyA9IHBlZWtfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgbnBlZWtfcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICBlbHNlIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBucGVla19yZWMgbm9kZSBhY2MgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBucGVla19yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBucGVlayBuIHMgPSBucGVla19yZWMgcy5ub2RlIFtdIG4gc1xuXG5sZXQgcmVjIGdldF9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGdldF9yZWMgcyBub2RlXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm4gbm9kZS5kYXRhXG4gIGVuZFxuXG5sZXQgZ2V0IHMgPSBnZXRfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgZ2V0X2V4bl9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIEx3dC50cnlfYmluZFxuICAgICAgKGZ1biAoKSAtPiBmZWVkIHMpXG4gICAgICAoZnVuICgpIC0+IGdldF9leG5fcmVjIHMgbm9kZSlcbiAgICAgIChmdW4gZXhuIC0+IEx3dC5yZXR1cm4gKFNvbWUgKFJlc3VsdC5FcnJvciBleG4pKSlcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgKFJlc3VsdC5PayB2YWx1ZSkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IHdyYXBfZXhuIHMgPSBmcm9tIChmdW4gKCkgLT4gZ2V0X2V4bl9yZWMgcyBzLm5vZGUpXG5cbmxldCByZWMgbmdldF9yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5nZXRfcmVjIG5vZGUgYWNjIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggcy5ub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIG5nZXRfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgbmdldCBuIHMgPSBuZ2V0X3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgZ2V0X3doaWxlX3JlYyBub2RlIGFjYyBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZ2V0X3doaWxlX3JlYyBub2RlIGFjYyBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGdldF93aGlsZV9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgZiBzXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBnZXRfd2hpbGUgZiBzID0gZ2V0X3doaWxlX3JlYyBzLm5vZGUgW10gZiBzXG5cbmxldCByZWMgZ2V0X3doaWxlX3NfcmVjIG5vZGUgYWNjIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBnZXRfd2hpbGVfc19yZWMgbm9kZSBhY2MgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgICAgZ2V0X3doaWxlX3NfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIGYgc1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBnZXRfd2hpbGVfcyBmIHMgPSBnZXRfd2hpbGVfc19yZWMgcy5ub2RlIFtdIGYgc1xuXG5sZXQgcmVjIG5leHRfcmVjIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBuZXh0X3JlYyBzIG5vZGVcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgTHd0LnJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QuZmFpbCBFbXB0eVxuXG5sZXQgbmV4dCBzID0gbmV4dF9yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBsYXN0X25ld19yZWMgbm9kZSB4IHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBsYXN0X25ld19yZWMgbm9kZSB4IHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgTHd0LmZhaWwgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIEx3dC5yZXR1cm4geFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsYXN0X25ld19yZWMgbm9kZS5uZXh0IHggc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiB4XG5cbmxldCBsYXN0X25ldyBzID1cbiAgbGV0IG5vZGUgPSBzLm5vZGUgaW5cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBuZXh0IHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4geCAtPlxuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUgeCBzXG4gICAgfCBMd3QuRmFpbCBfIHwgTHd0LlNsZWVwIC0+XG4gICAgICB0aHJlYWRcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUubmV4dCB4IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5mYWlsIEVtcHR5XG5cbmxldCByZWMgdG9fbGlzdF9yZWMgbm9kZSBhY2MgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiB0b19saXN0X3JlYyBub2RlIGFjYyBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIHRvX2xpc3RfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IHRvX2xpc3QgcyA9IHRvX2xpc3RfcmVjIHMubm9kZSBbXSBzXG5cbmxldCByZWMgdG9fc3RyaW5nX3JlYyBub2RlIGJ1ZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHRvX3N0cmluZ19yZWMgbm9kZSBidWYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIHg7XG4gICAgICB0b19zdHJpbmdfcmVjIG5vZGUubmV4dCBidWYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcblxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3JlYyBzLm5vZGUgKEJ1ZmZlci5jcmVhdGUgMTI4KSBzXG5cbmxldCBqdW5rIHMgPVxuICBsZXQgbm9kZSA9IHMubm9kZSBpblxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuIGJlZ2luXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbmQgZWxzZSBiZWdpblxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybl91bml0XG4gIGVuZFxuXG5sZXQgcmVjIG5qdW5rX3JlYyBub2RlIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybl91bml0XG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5qdW5rX3JlYyBub2RlIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBuanVua19yZWMgbm9kZS5uZXh0IChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBuanVuayBuIHMgPSBuanVua19yZWMgcy5ub2RlIG4gc1xuXG5sZXQgcmVjIGp1bmtfd2hpbGVfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGp1bmtfd2hpbGVfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuIGJlZ2luXG4gICAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgICBqdW5rX3doaWxlX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua193aGlsZSBmIHMgPSBqdW5rX3doaWxlX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMganVua193aGlsZV9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBqdW5rX3doaWxlX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgICAganVua193aGlsZV9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX3doaWxlX3MgZiBzID0ganVua193aGlsZV9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMganVua19vbGRfcmVjIG5vZGUgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGp1bmtfb2xkX3JlYyBub2RlIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgTHd0LmZhaWwgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBqdW5rX29sZF9yZWMgbm9kZS5uZXh0IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua19vbGQgcyA9IGp1bmtfb2xkX3JlYyBzLm5vZGUgc1xuXG5sZXQgcmVjIGdldF9hdmFpbGFibGVfcmVjIG5vZGUgYWNjIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBnZXRfYXZhaWxhYmxlX3JlYyBub2RlIGFjYyBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIHJhaXNlIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMaXN0LnJldiBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZ2V0X2F2YWlsYWJsZV9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG5cbmxldCBnZXRfYXZhaWxhYmxlIHMgPSBnZXRfYXZhaWxhYmxlX3JlYyBzLm5vZGUgW10gc1xuXG5sZXQgcmVjIGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTGlzdC5yZXYgYWNjXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAgZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgbm9kZSBhY2MgbiBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIHJhaXNlIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMaXN0LnJldiBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIHMubm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuXG5sZXQgZ2V0X2F2YWlsYWJsZV91cF90byBuIHMgPSBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgaXNfZW1wdHkgcyA9XG4gIGlmIHMubm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGlzX2VtcHR5IHNcbiAgZWxzZVxuICAgIEx3dC5yZXR1cm4gKHMubm9kZS5kYXRhID0gTm9uZSlcblxubGV0IG1hcCBmIHMgPVxuICBmcm9tIChmdW4gKCkgLT4gZ2V0IHMgPnw9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+XG4gICAgbGV0IHggPSBmIHggaW5cbiAgICBTb21lIHhcbiAgfCBOb25lIC0+XG4gICAgTm9uZSlcblxubGV0IG1hcF9zIGYgcyA9XG4gIGZyb20gKGZ1biAoKSAtPiBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT5cbiAgICBmIHggPnw9IChmdW4geCAtPiBTb21lIHgpXG4gIHwgTm9uZSAtPlxuICAgIEx3dC5yZXR1cm5fbm9uZSlcblxubGV0IGZpbHRlciBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0IHMgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuXG4gICAgICAgIHRcbiAgICAgIGVsc2VcbiAgICAgICAgbmV4dCAoKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX3MgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCBzIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBiZWdpblxuICAgICAgICBmIHggPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIHRcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIG5leHQgKClcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgdFxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZpbHRlcl9tYXAgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgTHd0LnJldHVybiB4XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBuZXh0ICgpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX21hcF9zIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ID0gZiB4IGluXG4gICAgICAodCA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbmV4dCAoKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IG1hcF9saXN0IGYgcyA9XG4gIGxldCBwZW5kaW5ncyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFwZW5kaW5ncyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKGdldCBzID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBsZXQgbCA9IGYgeCBpblxuICAgICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgICAgIG5leHQgKClcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIEx3dC5yZXR1cm5fbm9uZSlcbiAgICB8IHggOjogbCAtPlxuICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgeClcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBtYXBfbGlzdF9zIGYgcyA9XG4gIGxldCBwZW5kaW5ncyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFwZW5kaW5ncyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKGdldCBzID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBmIHggPj49IGZ1biBsIC0+XG4gICAgICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgICAgbmV4dCAoKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgTHd0LnJldHVybl9ub25lKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgTHd0LnJldHVybiAoU29tZSB4KVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZsYXR0ZW4gcyA9XG4gIG1hcF9saXN0IChmdW4gbCAtPiBsKSBzXG5cbmxldCByZWMgZm9sZF9yZWMgbm9kZSBmIHMgYWNjID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZvbGRfcmVjIG5vZGUgZiBzIGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgYWNjID0gZiB4IGFjYyBpblxuICAgICAgZm9sZF9yZWMgbm9kZS5uZXh0IGYgcyBhY2NcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG5cbmxldCBmb2xkIGYgcyBhY2MgPSBmb2xkX3JlYyBzLm5vZGUgZiBzIGFjY1xuXG5sZXQgcmVjIGZvbGRfc19yZWMgbm9kZSBmIHMgYWNjID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZvbGRfc19yZWMgbm9kZSBmIHMgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGYgeCBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIGZvbGRfc19yZWMgbm9kZS5uZXh0IGYgcyBhY2NcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG5cbmxldCBmb2xkX3MgZiBzIGFjYyA9IGZvbGRfc19yZWMgcy5ub2RlIGYgcyBhY2NcblxubGV0IHJlYyBpdGVyX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgKCkgPSBmIHggaW5cbiAgICAgIGl0ZXJfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlciBmIHMgPSBpdGVyX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgaXRlcl9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGYgeCA+Pj0gZnVuICgpIC0+XG4gICAgICBpdGVyX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlcl9zIGYgcyA9IGl0ZXJfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGl0ZXJfcF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXRlcl9wX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgcmVzID0gZiB4IGluXG4gICAgICBsZXQgcmVzdCA9IGl0ZXJfcF9yZWMgbm9kZS5uZXh0IGYgcyBpblxuICAgICAgcmVzID4+PSBmdW4gKCkgLT4gcmVzdFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyX3AgZiBzID0gaXRlcl9wX3JlYyBzLm5vZGUgZiBzXG5cbmxldCBpdGVyX24gPyhtYXhfY29uY3VycmVuY3kgPSAxKSBmIHN0cmVhbSA9XG4gIGJlZ2luXG4gICAgaWYgbWF4X2NvbmN1cnJlbmN5IDw9IDAgdGhlblxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiTHd0X3N0cmVhbS5pdGVyX246IG1heF9jb25jdXJyZW5jeSBtdXN0IGJlID4gMCwgJWQgZ2l2ZW5cIlxuICAgICAgICAgIG1heF9jb25jdXJyZW5jeVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIG1lc3NhZ2VcbiAgZW5kO1xuICBsZXQgcmVjIGxvb3AgcnVubmluZyBhdmFpbGFibGUgPVxuICAgIGJlZ2luXG4gICAgICBpZiBhdmFpbGFibGUgPiAwIHRoZW4gKFxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUpXG4gICAgICApXG4gICAgICBlbHNlIChcbiAgICAgICAgTHd0Lm5jaG9vc2Vfc3BsaXQgcnVubmluZyA+Pj0gZnVuIChjb21wbGV0ZSwgcnVubmluZykgLT5cbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlICsgTGlzdC5sZW5ndGggY29tcGxldGUpXG4gICAgICApXG4gICAgZW5kID4+PSBmdW4gKHJ1bm5pbmcsIGF2YWlsYWJsZSkgLT5cbiAgICBnZXQgc3RyZWFtID4+PSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LmpvaW4gcnVubmluZ1xuICAgIHwgU29tZSBlbHQgLT5cbiAgICAgIGxvb3AgKGYgZWx0IDo6IHJ1bm5pbmcpIChwcmVkIGF2YWlsYWJsZSlcbiAgaW5cbiAgbG9vcCBbXSBtYXhfY29uY3VycmVuY3lcblxubGV0IHJlYyBmaW5kX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCBhcyBvcHQgLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlblxuICAgICAgICBMd3QucmV0dXJuIG9wdFxuICAgICAgZWxzZVxuICAgICAgICBmaW5kX3JlYyBub2RlLm5leHQgZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmQgZiBzID0gZmluZF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9zX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCBhcyBvcHQgLT4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiBvcHRcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGZpbmRfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmRfcyBmIHMgPSBmaW5kX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBmaW5kX21hcF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9tYXBfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBpZiB4ID0gTm9uZSB0aGVuXG4gICAgICAgIGZpbmRfbWFwX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kX21hcCBmIHMgPSBmaW5kX21hcF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfbWFwX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfbWFwX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB0ID0gZiB4IGluXG4gICAgICAodCA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGZpbmRfbWFwX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgdClcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZF9tYXBfcyBmIHMgPSBmaW5kX21hcF9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCBjb21iaW5lIHMxIHMyID1cbiAgbGV0IG5leHQgKCkgPVxuICAgIGxldCB0MSA9IGdldCBzMSBhbmQgdDIgPSBnZXQgczIgaW5cbiAgICB0MSA+Pj0gZnVuIG4xIC0+XG4gICAgdDIgPj49IGZ1biBuMiAtPlxuICAgIG1hdGNoIG4xLCBuMiB3aXRoXG4gICAgfCBTb21lIHgxLCBTb21lIHgyIC0+XG4gICAgICBMd3QucmV0dXJuIChTb21lKHgxLCB4MikpXG4gICAgfCBfIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBsZXQgY3VycmVudF9zID0gcmVmIHMxIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgIWN1cnJlbnRfcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmICFjdXJyZW50X3MgPT0gczIgdGhlblxuICAgICAgICBMd3QucmV0dXJuX25vbmVcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgY3VycmVudF9zIDo9IHMyO1xuICAgICAgICBuZXh0ICgpXG4gICAgICBlbmRcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBjb25jYXQgc190b3AgPVxuICBsZXQgY3VycmVudF9zID0gcmVmIChmcm9tIChmdW4gKCkgLT4gTHd0LnJldHVybl9ub25lKSkgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCAhY3VycmVudF9zIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgXyAtPlxuICAgICAgdFxuICAgIHwgTm9uZSAtPlxuICAgICAgZ2V0IHNfdG9wID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgY3VycmVudF9zIDo9IHM7XG4gICAgICAgIG5leHQgKClcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBjaG9vc2Ugc3RyZWFtcyA9XG4gIGxldCBzb3VyY2UgcyA9IChzLCBnZXQgcyA+fD0gZnVuIHggLT4gKHMsIHgpKSBpblxuICBsZXQgc3RyZWFtcyA9IHJlZiAoTGlzdC5tYXAgc291cmNlIHN0cmVhbXMpIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXN0cmVhbXMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgIHwgbCAtPlxuICAgICAgTHd0LmNob29zZSAoTGlzdC5tYXAgc25kIGwpID4+PSBmdW4gKHMsIHgpIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmVtb3ZlX2Fzc3EgcyBsIGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIHN0cmVhbXMgOj0gc291cmNlIHMgOjogbDtcbiAgICAgICAgTHd0LnJldHVybiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgc3RyZWFtcyA6PSBsO1xuICAgICAgICBuZXh0ICgpXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgcGFyc2UgcyBmID1cbiAgKG1hdGNoIHMuc291cmNlIHdpdGhcbiAgIHwgUHVzaF9ib3VuZGVkIF8gLT4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLnBhcnNlXCJcbiAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPiAoKSk7XG4gIGxldCBub2RlID0gcy5ub2RlIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gZiBzKVxuICAgIChmdW4gZXhuIC0+XG4gICAgICAgcy5ub2RlIDwtIG5vZGU7XG4gICAgICAgTHd0LmZhaWwgZXhuKVxuXG5sZXQgaGV4ZHVtcCBzdHJlYW0gPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA4MCBhbmQgbnVtID0gcmVmIDAgaW5cbiAgZnJvbSBiZWdpbiBmdW4gXyAtPlxuICAgIG5nZXQgMTYgc3RyZWFtID4+PSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgIHwgbCAtPlxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIFByaW50Zi5icHJpbnRmIGJ1ZiBcIiUwOHh8ICBcIiAhbnVtO1xuICAgICAgbnVtIDo9ICFudW0gKyAxNjtcbiAgICAgIGxldCByZWMgYnl0ZXMgcG9zID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGJsYW5rcyBwb3NcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICBpZiBwb3MgPSA4IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTAyeCBcIiAoQ2hhci5jb2RlIHgpO1xuICAgICAgICAgIGJ5dGVzIChwb3MgKyAxKSBsXG4gICAgICBhbmQgYmxhbmtzIHBvcyA9XG4gICAgICAgIGlmIHBvcyA8IDE2IHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBwb3MgPSA4IHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiAgICBcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiAgIFwiO1xuICAgICAgICAgIGJsYW5rcyAocG9zICsgMSlcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYnl0ZXMgMCBsO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiIHxcIjtcbiAgICAgIExpc3QuaXRlciAoZnVuIGNoIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgKGlmIGNoID49ICdcXHgyMCcgJiYgY2ggPD0gJ1xceDdlJyB0aGVuIGNoIGVsc2UgJy4nKSkgbDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ3wnO1xuICAgICAgTHd0LnJldHVybiAoU29tZShCdWZmZXIuY29udGVudHMgYnVmKSlcbiAgZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuKCoqIE1vZHVsZSBbTHd0X3Jlc3VsdF06IGV4cGxpY2l0IGVycm9yIGhhbmRsaW5nICopXG5cbm9wZW4gUmVzdWx0XG5cbnR5cGUgKCsnYSwgKydiKSB0ID0gKCdhLCAnYikgUmVzdWx0LnQgTHd0LnRcblxubGV0IHJldHVybiB4ID0gTHd0LnJldHVybiAoT2sgeClcbmxldCBmYWlsIGUgPSBMd3QucmV0dXJuIChFcnJvciBlKVxuXG5sZXQgbGlmdCA9IEx3dC5yZXR1cm5cbmxldCBvayB4ID0gTHd0Lm1hcCAoZnVuIHkgLT4gT2sgeSkgeFxubGV0IGVycm9yIHggPSBMd3QubWFwIChmdW4geSAtPiBFcnJvciB5KSB4XG5cbmxldCBtYXAgZiBlID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KSlcbiAgICBlXG5cbmxldCBtYXBfZXJyb3IgZiBlID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChmIGUpXG4gICAgICB8IE9rIHggLT4gT2sgeClcbiAgICBlXG5sZXQgbWFwX2VyciBmIGUgPSBtYXBfZXJyb3IgZiBlXG5cbmxldCBjYXRjaCBlID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBvayAoZSAoKSkpXG4gICAgZmFpbFxuXG5sZXQgZ2V0X2V4biBlID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IEx3dC5yZXR1cm4geFxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5mYWlsIGUpXG5cbmxldCBiaW5kIGUgZiA9XG4gIEx3dC5iaW5kIGVcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBMd3QucmV0dXJuIChFcnJvciBlKVxuICAgICAgfCBPayB4IC0+IGYgeClcbiAgICAgIFxubGV0IGJpbmRfZXJyb3IgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgICAgfCBPayB4IC0+IEx3dC5yZXR1cm4gKE9rIHgpKVxuICAgICAgXG5sZXQgYmluZF9sd3QgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IG9rIChmIHgpXG4gICAgICB8IEVycm9yIGUgLT4gZmFpbCBlKVxuXG5sZXQgYmluZF9yZXN1bHQgZSBmID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgIHwgT2sgeCAtPiBmIHgpXG4gICAgZVxuXG5sZXQgYmluZF9sd3RfZXJyb3IgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5iaW5kIChmIGUpIGZhaWxcbiAgICAgIHwgT2sgeCAtPiByZXR1cm4geClcbmxldCBiaW5kX2x3dF9lcnIgZSBmID0gYmluZF9sd3RfZXJyb3IgZSBmXG5cbmxldCBib3RoIGEgYiA9XG4gIGxldCBzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHNldF9vbmNlIGUgPVxuICAgIG1hdGNoICFzIHdpdGhcbiAgICB8IE5vbmUgLT4gczo9IFNvbWUgZVxuICAgIHwgU29tZSBfIC0+ICgpXG4gIGluXG4gIGxldCAoYSxiKSA9IG1hcF9lcnJvciBzZXRfb25jZSBhLG1hcF9lcnJvciBzZXRfb25jZSBiIGluXG4gIGxldCBzb21lX2Fzc2VydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBlIC0+IEVycm9yIGVcbiAgaW5cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4LCBPayB5IC0+IE9rICh4LHkpXG4gICAgICB8IEVycm9yIF8sIE9rIF9cbiAgICAgIHwgT2sgXyxFcnJvciBfXG4gICAgICB8IEVycm9yIF8sIEVycm9yIF8gLT4gc29tZV9hc3NlcnQgIXMpXG4gICAgKEx3dC5ib3RoIGEgYilcblxubGV0IGl0ZXIgZiByID1cbiAgTHd0LmJpbmQgclxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgICAgfCBFcnJvciBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGl0ZXJfZXJyb3IgZiByID1cbiAgTHd0LmJpbmQgclxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgICAgfCBPayBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoPj49KSA9IGJpbmRcbiAgbGV0ICg+fD0pIGUgZiA9IG1hcCBmIGVcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwIHQgfmYgPSBtYXAgZiB0XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGJpbmQgdCBmXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0IChsZXQqKSA9IGJpbmRcbiAgbGV0IChhbmQqKSA9IGJvdGhcblxuICBsZXQgKGxldCspIHggZiA9IG1hcCBmIHhcbiAgbGV0IChhbmQrKSA9IGJvdGhcbmVuZFxuXG5pbmNsdWRlIEluZml4XG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbnNpZ1xuICB0eXBlIHRcbiAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbnNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcbiAgdmFsIGVtcHR5OiB0XG4gIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICB2YWwgZmluZF9taW46IHQgLT4gZWx0XG4gIHZhbCBsb29rdXBfbWluOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9taW46IHQgLT4gdFxuICB2YWwgc2l6ZTogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA6IChTIHdpdGggdHlwZSBlbHQgPSBPcmQudCkgPVxuc3RydWN0XG4gIHR5cGUgZWx0ID0gT3JkLnRcblxuICB0eXBlIHQgPSB0cmVlIGxpc3RcbiAgYW5kIHRyZWUgPSBOb2RlIG9mIGVsdCAqIGludCAqIHRyZWUgbGlzdFxuXG4gIGxldCByb290IChOb2RlICh4LCBfLCBfKSkgPSB4XG4gIGxldCByYW5rIChOb2RlIChfLCByLCBfKSkgPSByXG4gIGxldCBsaW5rIChOb2RlICh4MSwgcjEsIGMxKSBhcyB0MSkgKE5vZGUgKHgyLCByMiwgYzIpIGFzIHQyKSA9XG4gICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4MSB4MiBpblxuICAgIGlmIGMgPD0gMCB0aGVuIE5vZGUgKHgxLCByMSArIDEsIHQyOjpjMSkgZWxzZSBOb2RlKHgyLCByMiArIDEsIHQxOjpjMilcbiAgbGV0IHJlYyBpbnMgdCA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgICAtPlxuICAgICAgW3RdXG4gICAgfCAodCc6Ol8pIGFzIHRzIHdoZW4gcmFuayB0IDwgcmFuayB0JyAtPlxuICAgICAgdDo6dHNcbiAgICB8IHQnOjp0cyAtPlxuICAgICAgaW5zIChsaW5rIHQgdCcpIHRzXG5cbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IGlzX2VtcHR5IHRzID0gdHMgPSBbXVxuICBsZXQgYWRkIHggdHMgPSBpbnMgKE5vZGUgKHgsIDAsIFtdKSkgdHNcbiAgbGV0IHJlYyB1bmlvbiB0cyB0cycgPVxuICAgIG1hdGNoIHRzLCB0cycgd2l0aFxuICAgICAgKFtdLCBfKSAtPiB0cydcbiAgICB8IChfLCBbXSkgLT4gdHNcbiAgICB8ICh0MTo6dHMxLCB0Mjo6dHMyKSAgLT5cbiAgICAgIGlmIHJhbmsgdDEgPCByYW5rIHQyIHRoZW4gdDEgOjogdW5pb24gdHMxICh0Mjo6dHMyKVxuICAgICAgZWxzZSBpZiByYW5rIHQyIDwgcmFuayB0MSB0aGVuIHQyIDo6IHVuaW9uICh0MTo6dHMxKSB0czJcbiAgICAgIGVsc2UgaW5zIChsaW5rIHQxIHQyKSAodW5pb24gdHMxIHRzMilcblxuICBsZXQgcmVjIGZpbmRfbWluID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCBbdF0gICAtPiByb290IHRcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBsZXQgeCA9IGZpbmRfbWluIHRzIGluXG4gICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIHggaW5cbiAgICAgIGlmIGMgPCAwIHRoZW4gcm9vdCB0IGVsc2UgeFxuXG4gIGxldCByZWMgbG9va3VwX21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IFtdICAgIC0+IE5vbmVcbiAgICB8IFt0XSAgIC0+IFNvbWUgKHJvb3QgdClcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBtYXRjaCBsb29rdXBfbWluIHRzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeCBhcyByZXN1bHQgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSAocm9vdCB0KSB4IGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gU29tZSAocm9vdCB0KSBlbHNlIHJlc3VsdFxuXG4gIGxldCByZWMgZ2V0X21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgW3RdICAgLT4gKHQsIFtdKVxuICAgIHwgdDo6dHMgLT5cbiAgICAgIGxldCAodCcsIHRzJykgPSBnZXRfbWluIHRzIGluXG4gICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIChyb290IHQnKSBpblxuICAgICAgaWYgYyA8IDAgdGhlbiAodCwgdHMpIGVsc2UgKHQnLCB0Ojp0cycpXG5cbiAgbGV0IHJlbW92ZV9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IHRzIC0+XG4gICAgICBsZXQgKE5vZGUgKF8sIF8sIGMpLCB0cykgPSBnZXRfbWluIHRzIGluXG4gICAgICB1bmlvbiAoTGlzdC5yZXYgYykgdHNcblxuICBsZXQgcmVjIHNpemUgbCA9XG4gICAgbGV0IHNpemV0cmVlIChOb2RlIChfLF8sdGwpKSA9IDEgKyBzaXplIHRsIGluXG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHQgLT4gcyArIHNpemV0cmVlIHQpIDAgbFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIEEgc3VydmV5IGFuZCBtZWFzdXJlbWVudHMgb2YgbW9yZSBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb25zIGNhbiBiZSBmb3VuZCBhdDpcblxuICAgIGh0dHBzOi8vanN0aG9tYXMuZ2l0aHViLmlvL21hcC1jb21wYXJpc29uLmh0bWxcblxuICAgU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L3B1bGwvMzQ3LiAqKVxubGV0IHRhaWxfcmVjdXJzaXZlX21hcCBmIGwgPVxuICBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgbClcblxubGV0IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZDo6dGwgLT4gKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAoKGYgaSBoZCk6OmFjYykgKGkgKyAxKSB0bFxuICBpblxuICBpbm5lciBbXSAwIGxcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlYyBpdGVyX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW4gKCkgLT5cbiAgICBpdGVyX3MgZiBsXG5cbmxldCBpdGVyX3AgZiBsID1cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBMd3Quam9pbiB0c1xuXG5sZXQgcmVjIGl0ZXJpX3MgaSBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSAoZiBpKSB4ID4+PSBmdW4gKCkgLT5cbiAgICBpdGVyaV9zIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaV9zIGYgbCA9IGl0ZXJpX3MgMCBmIGxcblxubGV0IGl0ZXJpX3AgZiBsID1cbiAgbGV0IGYnIGkgPSBMd3QuYXBwbHkgKGYgaSkgaW5cbiAgbGV0IHRzID0gdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZicgbCBpblxuICBMd3Quam9pbiB0c1xuXG5sZXQgbWFwX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjIHw+IEx3dC5yZXR1cm5cbiAgICB8IGhkOjp0bCAtPlxuICAgICAgTHd0LmFwcGx5IGYgaGQgPj49IGZ1biByIC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIChyOjphY2MpIHRsXG4gIGluXG4gIGlubmVyIFtdIGxcblxubGV0IHJlYyBfY29sbGVjdF9yZXYgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgdDo6dHMgLT5cbiAgICB0ID4+PSBmdW4gaSAtPlxuICAgIChfY29sbGVjdF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pIChpOjphY2MpIHRzXG5cbmxldCBtYXBfcCBmIGwgPVxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIF9jb2xsZWN0X3JldiBbXSB0c1xuXG5sZXQgZmlsdGVyX21hcF9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSB2IC0+IChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHY6OmFjYykgdGxcbiAgICAgIHwgTm9uZSAtPiAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIGFjYyB0bFxuICBpblxuICBpbm5lciBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwX3AgZiBsID1cbiAgbGV0IHJlYyBfY29sbGVjdF9vcHRpb25hbF9yZXYgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAtPiBMd3QucmV0dXJuIGFjY1xuICB8IHQ6OnRzIC0+XG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgdiAtPiAoX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSAodjo6YWNjKSB0c1xuICAgIHwgTm9uZSAtPiAoX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSBhY2MgdHNcbiAgaW5cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBfY29sbGVjdF9vcHRpb25hbF9yZXYgW10gdHNcblxubGV0IG1hcGlfcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyBpID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgKGYgaSkgaGQgPj49IGZ1biB2IC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pICh2OjphY2MpIChpKzEpIHRsXG4gIGluXG4gIGlubmVyIFtdIDAgbFxuXG5sZXQgbWFwaV9wIGYgbCA9XG4gIGxldCBmJyBpID0gTHd0LmFwcGx5IChmIGkpIGluXG4gIGxldCB0cyA9IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYnIGwgaW5cbiAgX2NvbGxlY3RfcmV2IFtdIHRzXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmRfcyBhY2MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuIGFjY1xuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1biB4IC0+XG4gICAgcmV2X21hcF9hcHBlbmRfcyAoeCA6OiBhY2MpIGYgbFxuXG5sZXQgcmV2X21hcF9zIGYgbCA9XG4gIHJldl9tYXBfYXBwZW5kX3MgW10gZiBsXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmRfcCBhY2MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBhY2NcbiAgfCB4IDo6IGwgLT5cbiAgICByZXZfbWFwX2FwcGVuZF9wXG4gICAgICAoTHd0LmFwcGx5IGYgeCA+Pj0gZnVuIHggLT5cbiAgICAgICBhY2MgPnw9IGZ1biBsIC0+XG4gICAgICAgeCA6OiBsKSBmIGxcblxubGV0IHJldl9tYXBfcCBmIGwgPVxuICByZXZfbWFwX2FwcGVuZF9wIEx3dC5yZXR1cm5fbmlsIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdF9zIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IChmIGFjYykgeCA+Pj0gZnVuIGFjYyAtPlxuICAgIChmb2xkX2xlZnRfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBhY2MgbFxuXG5sZXQgZm9sZF9yaWdodF9zIGYgbCBhY2MgPVxuICBsZXQgcmVjIGlubmVyIGYgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTHd0LnJldHVybiBhXG4gICAgfCBoZDo6dGwgLT4gKEx3dC5hcHBseSAoZiBoZCkgYSkgPj49IGZ1biBhJyAtPlxuICAgICAgKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSBmIGEnIHRsXG4gIGluXG4gIGlubmVyIGYgYWNjIChMaXN0LnJldiBsKVxuXG5sZXQgcmVjIGZvcl9hbGxfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdHJ1ZVxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICAoZm9yX2FsbF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcbiAgICB8IGZhbHNlIC0+XG4gICAgICBMd3QucmV0dXJuX2ZhbHNlXG5cbmxldCBmb3JfYWxsX3AgZiBsID1cbiAgbWFwX3AgZiBsID4+PSBmdW4gYmwgLT4gTGlzdC5mb3JfYWxsIChmdW4geCAtPiB4KSBibCB8PiBMd3QucmV0dXJuXG5cbmxldCByZWMgZXhpc3RzX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX2ZhbHNlXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdHJ1ZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChleGlzdHNfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBsXG5cbmxldCBleGlzdHNfcCBmIGwgPVxuICBtYXBfcCBmIGwgPj49IGZ1biBibCAtPiBMaXN0LmV4aXN0cyAoZnVuIHggLT4geCkgYmwgfD4gTHd0LnJldHVyblxuXG5sZXQgcmVjIGZpbmRfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5mYWlsIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICBMd3QucmV0dXJuIHhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoZmluZF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcblxubGV0IF9vcHRpb25hbGl6ZSBmIHggPVxuICBmIHggPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBMd3QucmV0dXJuIChTb21lIHgpIGVsc2UgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaWx0ZXJfcyBmIGwgPVxuICBmaWx0ZXJfbWFwX3MgKF9vcHRpb25hbGl6ZSBmKSBsXG5cbmxldCBmaWx0ZXJfcCBmIGwgPVxuICAgZmlsdGVyX21hcF9wIChfb3B0aW9uYWxpemUgZikgbFxuXG5sZXQgcGFydGl0aW9uX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MxIGFjYzIgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYzEsIExpc3QucmV2IGFjYzIpXG4gICAgfCBoZDo6dGwgLT4gTHd0LmFwcGx5IGYgaGQgPj49IGZ1biBiIC0+XG4gICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgIGlubmVyIChoZDo6YWNjMSkgYWNjMiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5uZXIgYWNjMSAoaGQ6OmFjYzIpIHRsXG4gIGluXG4gIGlubmVyIFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9wIGYgbCA9XG4gIGxldCBnIHggPSBMd3QuYXBwbHkgZiB4ID4+PSBmdW4gYiAtPiBMd3QucmV0dXJuIChiLCB4KSBpblxuICBtYXBfcCBnIGwgPj49IGZ1biB0bCAtPlxuICBsZXQgZ3JvdXAxID0gdGFpbF9yZWN1cnNpdmVfbWFwIHNuZCBAQCBMaXN0LmZpbHRlciBmc3QgdGwgaW5cbiAgbGV0IGdyb3VwMiA9XG4gICAgdGFpbF9yZWN1cnNpdmVfbWFwIHNuZCBAQCBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IEBAIGZzdCB4KSB0bCBpblxuICBMd3QucmV0dXJuIChncm91cDEsIGdyb3VwMilcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxub3BlbiBMd3QuSW5maXhcblxudHlwZSAnYSB0ID0ge1xuICBjcmVhdGUgOiB1bml0IC0+ICdhIEx3dC50O1xuICAoKiBDcmVhdGUgYSBuZXcgcG9vbCBtZW1iZXIuICopXG4gIGNoZWNrIDogJ2EgLT4gKGJvb2wgLT4gdW5pdCkgLT4gdW5pdDtcbiAgKCogQ2hlY2sgdmFsaWRpdHkgb2YgYSBwb29sIG1lbWJlciB3aGVuIHVzZSByZXN1bHRlZCBpbiBmYWlsZWQgcHJvbWlzZS4gKilcbiAgdmFsaWRhdGUgOiAnYSAtPiBib29sIEx3dC50O1xuICAoKiBWYWxpZGF0ZSBhbiBleGlzdGluZyBmcmVlIHBvb2wgbWVtYmVyIGJlZm9yZSB1c2UuICopXG4gIGRpc3Bvc2UgOiAnYSAtPiB1bml0IEx3dC50O1xuICAoKiBEaXNwb3NlIG9mIGEgcG9vbCBtZW1iZXIuICopXG4gIGNsZWFyZWQgOiBib29sIHJlZiByZWY7XG4gICgqIEhhdmUgdGhlIGN1cnJlbnQgcG9vbCBlbGVtZW50cyBiZWVuIGNsZWFyZWQgb3V0PyAqKVxuICBtYXggOiBpbnQ7XG4gICgqIFNpemUgb2YgdGhlIHBvb2wuICopXG4gIG11dGFibGUgY291bnQgOiBpbnQ7XG4gICgqIE51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcG9vbC4gKilcbiAgbGlzdCA6ICdhIFF1ZXVlLnQ7XG4gICgqIEF2YWlsYWJsZSBwb29sIG1lbWJlcnMuICopXG4gIHdhaXRlcnMgOiAnYSBMd3QudSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogUHJvbWlzZSByZXNvbHZlcnMgd2FpdGluZyBmb3IgYSBmcmVlIG1lbWJlci4gKilcbn1cblxubGV0IGNyZWF0ZSBtID8odmFsaWRhdGUgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3RydWUpID8oY2hlY2sgPSBmdW4gXyBmIC0+IGYgdHJ1ZSkgPyhkaXNwb3NlID0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KSBjcmVhdGUgPVxuICB7IG1heCA9IG07XG4gICAgY3JlYXRlID0gY3JlYXRlO1xuICAgIHZhbGlkYXRlID0gdmFsaWRhdGU7XG4gICAgY2hlY2sgPSBjaGVjaztcbiAgICBkaXNwb3NlID0gZGlzcG9zZTtcbiAgICBjbGVhcmVkID0gcmVmIChyZWYgZmFsc2UpO1xuICAgIGNvdW50ID0gMDtcbiAgICBsaXN0ID0gUXVldWUuY3JlYXRlICgpO1xuICAgIHdhaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxuKCogQ3JlYXRlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgY3JlYXRlX21lbWJlciBwID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgICgqIE11c3QgYmUgZG9uZSBiZWZvcmUgcC5jcmVhdGUgdG8gcHJldmVudCBvdGhlciByZXNvbHZlcnMgZnJvbVxuICAgICAgICAgIGNyZWF0aW5nIG5ldyBtZW1iZXJzIGlmIHRoZSBsaW1pdCBpcyByZWFjaGVkLiAqKVxuICAgICAgIHAuY291bnQgPC0gcC5jb3VudCArIDE7XG4gICAgICAgcC5jcmVhdGUgKCkpXG4gICAgKGZ1biBleG4gLT5cbiAgICAgICAoKiBDcmVhdGlvbiBmYWlsZWQsIHNvIGRvbid0IGluY3JlbWVudCBjb3VudC4gKilcbiAgICAgICBwLmNvdW50IDwtIHAuY291bnQgLSAxO1xuICAgICAgIEx3dC5mYWlsIGV4bilcblxuKCogUmVsZWFzZSBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IHJlbGVhc2UgcCBjID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgcC53YWl0ZXJzIHdpdGhcbiAgfCBTb21lIHdha2VuZXIgLT5cbiAgICAoKiBBIHByb21pc2UgcmVzb2x2ZXIgaXMgd2FpdGluZywgZ2l2ZSBpdCB0aGUgcG9vbCBtZW1iZXIuICopXG4gICAgTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGNcbiAgfCBOb25lIC0+XG4gICAgKCogTm8gb25lIGlzIHdhaXRpbmcsIHF1ZXVlIGl0LiAqKVxuICAgIFF1ZXVlLnB1c2ggYyBwLmxpc3RcblxuKCogRGlzcG9zZSBvZiBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IGRpc3Bvc2UgcCBjID1cbiAgcC5kaXNwb3NlIGMgPj49IGZ1biAoKSAtPlxuICBwLmNvdW50IDwtIHAuY291bnQgLSAxO1xuICBMd3QucmV0dXJuX3VuaXRcblxuKCogQ3JlYXRlIGEgbmV3IG1lbWJlciB3aGVuIG9uZSBpcyB0aHJvd24gYXdheS4gKilcbmxldCByZXBsYWNlX2Rpc3Bvc2VkIHAgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBwLndhaXRlcnMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAoKiBObyBvbmUgaXMgd2FpdGluZywgZG8gbm90IGNyZWF0ZSBhIG5ldyBtZW1iZXIgdG8gYXZvaWRcbiAgICAgICBsb3NpbmcgYW4gZXJyb3IgaWYgY3JlYXRpb24gZmFpbHMuICopXG4gICAgKClcbiAgfCBTb21lIHdha2VuZXIgLT5cbiAgICBMd3Qub25fYW55XG4gICAgICAoTHd0LmFwcGx5IHAuY3JlYXRlICgpKVxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgYylcbiAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAoKiBDcmVhdGlvbiBmYWlsZWQsIG5vdGlmeSB0aGUgd2FpdGVyIG9mIHRoZSBmYWlsdXJlLiAqKVxuICAgICAgICAgTHd0Lndha2V1cF9sYXRlcl9leG4gd2FrZW5lciBleG4pXG5cbigqIFZlcmlmeSBhIG1lbWJlciBpcyBzdGlsbCB2YWxpZCBiZWZvcmUgdXNpbmcgaXQuICopXG5sZXQgdmFsaWRhdGVfYW5kX3JldHVybiBwIGMgPVxuICBMd3QudHJ5X2JpbmRcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIHAudmFsaWRhdGUgYylcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIGNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIFJlbW92ZSB0aGlzIG1lbWJlciBhbmQgY3JlYXRlIGEgbmV3IG9uZS4gKilcbiAgICAgICAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgY3JlYXRlX21lbWJlciBwKVxuICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAoKiBWYWxpZGF0aW9uIGZhaWxlZDogY3JlYXRlIGEgbmV3IG1lbWJlciBpZiBhdCBsZWFzdCBvbmVcbiAgICAgICAgICAgIHJlc29sdmVyIGlzIHdhaXRpbmcuICopXG4gICAgICAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgICAgICByZXBsYWNlX2Rpc3Bvc2VkIHA7XG4gICAgICAgICBMd3QuZmFpbCBlKVxuXG4oKiBBY3F1aXJlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgYWNxdWlyZSBwID1cbiAgaWYgUXVldWUuaXNfZW1wdHkgcC5saXN0IHRoZW5cbiAgICAoKiBObyBtb3JlIGF2YWlsYWJsZSBtZW1iZXIuICopXG4gICAgaWYgcC5jb3VudCA8IHAubWF4IHRoZW5cbiAgICAgICgqIExpbWl0IG5vdCByZWFjaGVkOiBjcmVhdGUgYSBuZXcgb25lLiAqKVxuICAgICAgY3JlYXRlX21lbWJlciBwXG4gICAgZWxzZVxuICAgICAgKCogTGltaXQgcmVhY2hlZDogd2FpdCBmb3IgYSBmcmVlIG9uZS4gKilcbiAgICAgIChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgcC53YWl0ZXJzID4+PSB2YWxpZGF0ZV9hbmRfcmV0dXJuIHBcbiAgZWxzZVxuICAgICgqIFRha2UgdGhlIGZpcnN0IGZyZWUgbWVtYmVyIGFuZCB2YWxpZGF0ZSBpdC4gKilcbiAgICBsZXQgYyA9IFF1ZXVlLnRha2UgcC5saXN0IGluXG4gICAgdmFsaWRhdGVfYW5kX3JldHVybiBwIGNcblxuKCogUmVsZWFzZSBhIG1lbWJlciB3aGVuIHVzZSByZXN1bHRlZCBpbiBmYWlsZWQgcHJvbWlzZSBpZiB0aGUgbWVtYmVyXG4gICBpcyBzdGlsbCB2YWxpZC4gKilcbmxldCBjaGVja19hbmRfcmVsZWFzZSBwIGMgY2xlYXJlZCA9XG4gIGxldCBvayA9IHJlZiBmYWxzZSBpblxuICBwLmNoZWNrIGMgKGZ1biByZXN1bHQgLT4gb2sgOj0gcmVzdWx0KTtcbiAgaWYgY2xlYXJlZCB8fCBub3QgIW9rIHRoZW4gKFxuICAgICgqIEVsZW1lbnQgaXMgbm90IG9rIG9yIHRoZSBwb29sIHdhcyBjbGVhcmVkIC0gZGlzcG9zZSBvZiBpdCAqKVxuICAgIGRpc3Bvc2UgcCBjXG4gIClcbiAgZWxzZSAoXG4gICAgKCogRWxlbWVudCBpcyBvayAtIHJlbGVhc2UgaXQgYmFjayB0byB0aGUgcG9vbCAqKVxuICAgIHJlbGVhc2UgcCBjO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICApXG5cbmxldCB1c2UgcCBmID1cbiAgYWNxdWlyZSBwID4+PSBmdW4gYyAtPlxuICAoKiBDYXB0dXJlIHRoZSBjdXJyZW50IGNsZWFyZWQgc3RhdGUgc28gd2UgY2FuIHNlZSBpZiBpdCBjaGFuZ2VzIHdoaWxlIHRoaXNcbiAgICAgZWxlbWVudCBpcyBpbiB1c2UgKilcbiAgbGV0IGNsZWFyZWQgPSAhKHAuY2xlYXJlZCkgaW5cbiAgbGV0IHByb21pc2UgPVxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPiBmIGMpXG4gICAgICAoZnVuIGUgLT5cbiAgICAgICAgIGNoZWNrX2FuZF9yZWxlYXNlIHAgYyAhY2xlYXJlZCA+Pj0gZnVuICgpIC0+XG4gICAgICAgICBMd3QuZmFpbCBlKVxuICBpblxuICBwcm9taXNlID4+PSBmdW4gXyAtPlxuICBpZiAhY2xlYXJlZCB0aGVuIChcbiAgICAoKiBwIHdhcyBjbGVhcmVkIHdoaWxlIHByb21pc2Ugd2FzIHJlc29sdmluZyAtIGRpc3Bvc2Ugb2YgdGhpcyBlbGVtZW50ICopXG4gICAgZGlzcG9zZSBwIGMgPj49IGZ1biAoKSAtPlxuICAgIHByb21pc2VcbiAgKVxuICBlbHNlIChcbiAgICByZWxlYXNlIHAgYztcbiAgICBwcm9taXNlXG4gIClcblxubGV0IGNsZWFyIHAgPVxuICBsZXQgZWxlbWVudHMgPSBRdWV1ZS5mb2xkIChmdW4gbCBlbGVtZW50IC0+IGVsZW1lbnQgOjogbCkgW10gcC5saXN0IGluXG4gIFF1ZXVlLmNsZWFyIHAubGlzdDtcbiAgKCogSW5kaWNhdGUgdG8gYW55IGN1cnJlbnRseSBpbi11c2UgZWxlbWVudHMgdGhhdCB3ZSBjbGVhcmVkIHRoZSBwb29sICopXG4gIGxldCBvbGRfY2xlYXJlZCA9ICEocC5jbGVhcmVkKSBpblxuICBvbGRfY2xlYXJlZCA6PSB0cnVlO1xuICBwLmNsZWFyZWQgOj0gcmVmIGZhbHNlO1xuICBMd3RfbGlzdC5pdGVyX3MgKGRpc3Bvc2UgcCkgZWxlbWVudHNcblxubGV0IHdhaXRfcXVldWVfbGVuZ3RoIHAgPSBMd3Rfc2VxdWVuY2UubGVuZ3RoIHAud2FpdGVyc1xuIiwiKCogT0NhbWwgcHJvbWlzZSBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2x3dFxuICogQ29weXJpZ2h0IChjKSAyMDA5LCBNZXRhd2ViIFRlY2hub2xvZ2llcywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICogYXJlIG1ldDpcbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBgYEFTIElTJycgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUlxuICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUVUQVdFQiBURUNITk9MT0dJRVMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GXG4gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1JcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLFxuICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0VcbiAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU5cbiAqIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICopXG5cbigqIFRoaXMgY29kZSBpcyBhZGFwdGVkIGZyb21cbiAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMTAwMTIxNTQyNS9odHRwOi8vZWlnZW5jbGFzcy5vcmc6ODAvaGlraS9saWdodHdlaWdodC10aHJlYWRzLXdpdGgtbHd0LiAqKVxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbXZhcl9jb250ZW50cyA6ICdhIG9wdGlvbjtcbiAgKCogQ3VycmVudCBjb250ZW50cyAqKVxuXG4gIHdyaXRlcnMgOiAoJ2EgKiB1bml0IEx3dC51KSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogVGhyZWFkcyB3YWl0aW5nIHRvIHB1dCBhIHZhbHVlICopXG5cbiAgcmVhZGVycyA6ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50O1xuICAoKiBUaHJlYWRzIHdhaXRpbmcgZm9yIGEgdmFsdWUgKilcbn1cblxubGV0IGNyZWF0ZV9lbXB0eSAoKSA9XG4gIHsgbXZhcl9jb250ZW50cyA9IE5vbmU7XG4gICAgd3JpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCk7XG4gICAgcmVhZGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgY3JlYXRlIHYgPVxuICB7IG12YXJfY29udGVudHMgPSBTb21lIHY7XG4gICAgd3JpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCk7XG4gICAgcmVhZGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgcHV0IG12YXIgdiA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGJlZ2luIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIG12YXIucmVhZGVycyB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbXZhci5tdmFyX2NvbnRlbnRzIDwtIFNvbWUgdlxuICAgICAgfCBTb21lIHcgLT5cbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciB3IHZcbiAgICBlbmQ7XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgU29tZSBfIC0+XG4gICAgbGV0IChyZXMsIHcpID0gTHd0LnRhc2sgKCkgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfciAodiwgdykgbXZhci53cml0ZXJzIGluXG4gICAgTHd0Lm9uX2NhbmNlbCByZXMgKGZ1biBfIC0+IEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZSk7XG4gICAgcmVzXG5cbmxldCBuZXh0X3dyaXRlciBtdmFyID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgbXZhci53cml0ZXJzIHdpdGhcbiAgfCBTb21lKHYnLCB3KSAtPlxuICAgIG12YXIubXZhcl9jb250ZW50cyA8LSBTb21lIHYnO1xuICAgIEx3dC53YWtldXBfbGF0ZXIgdyAoKVxuICB8IE5vbmUgLT5cbiAgICBtdmFyLm12YXJfY29udGVudHMgPC0gTm9uZVxuXG5sZXQgdGFrZV9hdmFpbGFibGUgbXZhciA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgU29tZSB2IC0+XG4gICAgbmV4dF93cml0ZXIgbXZhcjtcbiAgICBTb21lIHZcbiAgfCBOb25lIC0+XG4gICAgTm9uZVxuXG5sZXQgdGFrZSBtdmFyID1cbiAgbWF0Y2ggdGFrZV9hdmFpbGFibGUgbXZhciB3aXRoXG4gIHwgU29tZSB2IC0+IEx3dC5yZXR1cm4gdlxuICB8IE5vbmUgLT4gKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBtdmFyLnJlYWRlcnNcblxubGV0IGlzX2VtcHR5IG12YXIgPVxuICBtYXRjaCBtdmFyLm12YXJfY29udGVudHMgd2l0aFxuICB8IFNvbWUgXyAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHQgPSB7IG11dGFibGUgbG9ja2VkIDogYm9vbDsgd2FpdGVycyA6IHVuaXQgTHd0LnUgTHd0X3NlcXVlbmNlLnQgIH1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbG9ja2VkID0gZmFsc2U7IHdhaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxubGV0IGxvY2sgbSA9XG4gIGlmIG0ubG9ja2VkIHRoZW5cbiAgICAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIG0ud2FpdGVyc1xuICBlbHNlIGJlZ2luXG4gICAgbS5sb2NrZWQgPC0gdHJ1ZTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZW5kXG5cbmxldCB1bmxvY2sgbSA9XG4gIGlmIG0ubG9ja2VkIHRoZW4gYmVnaW5cbiAgICBpZiBMd3Rfc2VxdWVuY2UuaXNfZW1wdHkgbS53YWl0ZXJzIHRoZW5cbiAgICAgIG0ubG9ja2VkIDwtIGZhbHNlXG4gICAgZWxzZVxuICAgICAgKCogV2UgZG8gbm90IHVzZSBbTHd0Lndha2V1cF0gaGVyZSB0byBhdm9pZCBhIHN0YWNrIG92ZXJmbG93XG4gICAgICAgICB3aGVuIHVubG9ja2luZyBhIGxvdCBvZiB0aHJlYWRzLiAqKVxuICAgICAgTHd0Lndha2V1cF9sYXRlciAoTHd0X3NlcXVlbmNlLnRha2VfbCBtLndhaXRlcnMpICgpXG4gIGVuZFxuXG5sZXQgd2l0aF9sb2NrIG0gZiA9XG4gIGxvY2sgbSA+Pj0gZnVuICgpIC0+XG4gIEx3dC5maW5hbGl6ZSBmIChmdW4gKCkgLT4gdW5sb2NrIG07IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGlzX2xvY2tlZCBtID0gbS5sb2NrZWRcbmxldCBpc19lbXB0eSBtID0gTHd0X3NlcXVlbmNlLmlzX2VtcHR5IG0ud2FpdGVyc1xuIiwiKCogT0NhbWwgcHJvbWlzZSBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2x3dFxuICogQ29weXJpZ2h0IChjKSAyMDA5LCBNZXRhd2ViIFRlY2hub2xvZ2llcywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICogYXJlIG1ldDpcbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBgYEFTIElTJycgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUlxuICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUVUQVdFQiBURUNITk9MT0dJRVMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GXG4gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1JcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLFxuICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0VcbiAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU5cbiAqIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICopXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbnR5cGUgJ2EgdCA9ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50XG5cbmxldCBjcmVhdGUgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlXG5cbmxldCB3YWl0ID9tdXRleCBjdmFyID1cbiAgbGV0IHdhaXRlciA9IChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgY3ZhciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG11dGV4IHdpdGhcbiAgICB8IFNvbWUgbSAtPiBMd3RfbXV0ZXgudW5sb2NrIG1cbiAgICB8IE5vbmUgLT4gKClcbiAgaW5cbiAgTHd0LmZpbmFsaXplXG4gICAgKGZ1biAoKSAtPiB3YWl0ZXIpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgIG1hdGNoIG11dGV4IHdpdGhcbiAgICAgICB8IFNvbWUgbSAtPiBMd3RfbXV0ZXgubG9jayBtXG4gICAgICAgfCBOb25lIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNpZ25hbCBjdmFyIGFyZyA9XG4gIHRyeVxuICAgIEx3dC53YWtldXBfbGF0ZXIgKEx3dF9zZXF1ZW5jZS50YWtlX2wgY3ZhcikgYXJnXG4gIHdpdGggTHd0X3NlcXVlbmNlLkVtcHR5IC0+XG4gICAgKClcblxubGV0IGJyb2FkY2FzdCBjdmFyIGFyZyA9XG4gIGxldCB3YWtlbmVycyA9IEx3dF9zZXF1ZW5jZS5mb2xkX3IgKGZ1biB4IGwgLT4geCA6OiBsKSBjdmFyIFtdIGluXG4gIEx3dF9zZXF1ZW5jZS5pdGVyX25vZGVfbCBMd3Rfc2VxdWVuY2UucmVtb3ZlIGN2YXI7XG4gIExpc3QuaXRlciAoZnVuIHdha2VuZXIgLT4gTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGFyZykgd2FrZW5lcnNcblxubGV0IGJyb2FkY2FzdF9leG4gY3ZhciBleG4gPVxuICBsZXQgd2FrZW5lcnMgPSBMd3Rfc2VxdWVuY2UuZm9sZF9yIChmdW4geCBsIC0+IHggOjogbCkgY3ZhciBbXSBpblxuICBMd3Rfc2VxdWVuY2UuaXRlcl9ub2RlX2wgTHd0X3NlcXVlbmNlLnJlbW92ZSBjdmFyO1xuICBMaXN0Lml0ZXIgKGZ1biB3YWtlbmVyIC0+IEx3dC53YWtldXBfbGF0ZXJfZXhuIHdha2VuZXIgZXhuKSB3YWtlbmVyc1xuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICdhIGV2ZW50ID0gJ2EgUmVhY3QuZXZlbnRcbnR5cGUgJ2Egc2lnbmFsID0gJ2EgUmVhY3Quc2lnbmFsXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIGluY2x1ZGUgUmVhY3QuRVxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTHd0LXNwZWNpZmljIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IGZpbmFsaXNlIGYgXyA9IGYgKClcblxuICBsZXQgd2l0aF9maW5hbGlzZXIgZiBldmVudCA9XG4gICAgbGV0IHIgPSByZWYgKCkgaW5cbiAgICBHYy5maW5hbGlzZSAoZmluYWxpc2UgZikgcjtcbiAgICBtYXAgKGZ1biB4IC0+IGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSByKTsgeCkgZXZlbnRcblxuICBsZXQgbmV4dCBldiA9XG4gICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgbGV0IGV2ID0gbWFwIChmdW4geCAtPiBMd3Qud2FrZXVwIHdha2VuZXIgeCkgKG9uY2UgZXYpIGluXG4gICAgTHd0Lm9uX2NhbmNlbCB3YWl0ZXIgKGZ1biAoKSAtPiBzdG9wIGV2KTtcbiAgICB3YWl0ZXJcblxuICBsZXQgbGltaXQgZiBlID1cbiAgICAoKiBUaHJlYWQgd2hpY2ggcHJldmVudHMgW2VdIGZyb20gb2NjdXJyaW5nIHdoaWxlIGl0IGlzIHNsZWVwaW5nICopXG4gICAgbGV0IGxpbWl0ZXIgPSByZWYgTHd0LnJldHVybl91bml0IGluXG5cbiAgICAoKiBUaGUgb2NjdXJyZW5jZSB0aGF0IGlzIGRlbGF5ZWQgdW50aWwgdGhlIGxpbWl0ZXIgcmV0dXJucy4gKilcbiAgICBsZXQgZGVsYXllZCA9IHJlZiBOb25lIGluXG5cbiAgICAoKiBUaGUgcmVzdWx0aW5nIGV2ZW50LiAqKVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAoKiBUaGUgbGltaXRlciBpcyBzbGVlcGluZywgd2UgcXVldWUgdGhlIGV2ZW50IGZvciBsYXRlclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJpbmcuICopXG4gICAgICAgICAgICAgbWF0Y2ggIWRlbGF5ZWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBjZWxsIC0+XG4gICAgICAgICAgICAgICAoKiBBbiBvY2N1cnJlbmNlIGlzIGFscmVhZHkgcXVldWVkLCByZXBsYWNlIGl0LiAqKVxuICAgICAgICAgICAgICAgY2VsbCA6PSB4O1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbGV0IGNlbGwgPSByZWYgeCBpblxuICAgICAgICAgICAgICAgZGVsYXllZCA6PSBTb21lIGNlbGw7XG4gICAgICAgICAgICAgICBMd3Qub25fc3VjY2VzcyAhbGltaXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSAhY2VsbCBpblxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAgICAgICAgcHVzaCB4KTtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAoKiBTZXQgdGhlIGxpbWl0ZXIgZm9yIGZ1dHVyZSBldmVudHMuICopXG4gICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICgqIFNlbmQgdGhlIG9jY3VycmVuY2Ugbm93LiAqKVxuICAgICAgICAgICAgIHB1c2ggeDtcbiAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZClcbiAgICAgICAgZVxuICAgIGluXG5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBjYW5jZWxfdGhyZWFkIHQgKCkgPVxuICAgIEx3dC5jYW5jZWwgdFxuXG4gIGxldCBmcm9tIGYgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBmICgpID4+PSBmdW4geCAtPlxuICAgICAgcHVzaCB4O1xuICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbGV0IHQgPSBMd3QucGF1c2UgKCkgPj49IGxvb3AgaW5cbiAgICB3aXRoX2ZpbmFsaXNlciAoY2FuY2VsX3RocmVhZCB0KSBldmVudFxuXG4gIGxldCB0b19zdHJlYW0gZXZlbnQgPVxuICAgIGxldCBzdHJlYW0sIHB1c2gsIHNldF9yZWYgPSBMd3Rfc3RyZWFtLmNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICAgIHNldF9yZWYgKG1hcCAoZnVuIHggLT4gcHVzaCAoU29tZSB4KSkgZXZlbnQpO1xuICAgIHN0cmVhbVxuXG4gIGxldCBvZl9zdHJlYW0gc3RyZWFtID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgdCA9XG4gICAgICBMd3QucGF1c2UgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgTHd0X3N0cmVhbS5pdGVyIChmdW4gdiAtPiB0cnkgcHVzaCB2IHdpdGggZXhuIC0+ICFMd3QuYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuKSBzdHJlYW0gaW5cbiAgICB3aXRoX2ZpbmFsaXNlciAoY2FuY2VsX3RocmVhZCB0KSBldmVudFxuXG4gIGxldCBkZWxheSB0aHJlYWQgPVxuICAgIG1hdGNoIEx3dC5wb2xsIHRocmVhZCB3aXRoXG4gICAgfCBTb21lIGUgLT5cbiAgICAgIGVcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudCwgc2VuZCA9IGNyZWF0ZSAoKSBpblxuICAgICAgTHd0Lm9uX3N1Y2Nlc3MgdGhyZWFkIChmdW4gZSAtPiBzZW5kIGU7IHN0b3AgZXZlbnQpO1xuICAgICAgc3dpdGNoIG5ldmVyIGV2ZW50XG5cbiAgbGV0IGtlZXBlZCA9IHJlZiBbXVxuXG4gIGxldCBrZWVwIGUgPVxuICAgIGtlZXBlZCA6PSBtYXAgaWdub3JlIGUgOjogIWtlZXBlZFxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgRXZlbnQgdHJhbnNmb3JtYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJ1bl9wIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHQgLT4gTHd0Lm9uX3N1Y2Nlc3MgdCAoZnVuIHYgLT4gcHVzaCB2KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHJ1bl9zIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gdCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gdCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpIGVcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IG1hcF9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuIHYgLT4gcHVzaCB2KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IG1hcF9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKSBlXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBhcHBfcCBlZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoYXBwIChtYXAgKGZ1biBmIHggLT4gKGYsIHgpKSBlZikgZSlcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGFwcF9zIGVmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoYXBwIChtYXAgKGZ1biBmIHggLT4gKGYsIHgpKSBlZikgZSlcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZpbHRlcl9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmaWx0ZXJfcyBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm1hcF9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm1hcF9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZGlmZl9zIGYgZSA9XG4gICAgbGV0IHByZXZpb3VzID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgcHJldmlvdXMgOj0gU29tZSB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgfCBTb21lIHkgLT5cbiAgICAgICAgICAgICBwcmV2aW91cyA6PSBTb21lIHg7XG4gICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4IHkpKVxuICAgICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgZVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgYWNjdW1fcyBlZiBhY2MgPVxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIGYgLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICFhY2MpKSAoZnVuIHggLT4gYWNjIDo9IHg7IHB1c2ggeCk7IE5vbmUpIGVmIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm9sZF9zIGYgYWNjIGUgPVxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICFhY2MgeCkpIChmdW4geCAtPiBhY2MgOj0geDsgcHVzaCB4KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHJlYyByZXZfZm9sZCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgcmV2X2ZvbGQgZiBhY2MgbCA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZiBhY2MgeFxuXG4gIGxldCBtZXJnZV9zIGYgYWNjIGVsID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjIGwpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAobWVyZ2UgKGZ1biBhY2MgeCAtPiB4IDo6IGFjYykgW10gZWwpXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuZW5kXG5cbm1vZHVsZSBTID0gc3RydWN0XG4gIGluY2x1ZGUgUmVhY3QuU1xuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTHd0LXNwZWNpZmljIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IGZpbmFsaXNlIGYgXyA9IGYgKClcblxuICBsZXQgd2l0aF9maW5hbGlzZXIgZiBzaWduYWwgPVxuICAgIGxldCByID0gcmVmICgpIGluXG4gICAgR2MuZmluYWxpc2UgKGZpbmFsaXNlIGYpIHI7XG4gICAgbWFwXG4gICAgICAoZnVuIHggLT4gaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHIpOyB4KVxuICAgICAgc2lnbmFsXG5cbiAgbGV0IGxpbWl0ID9lcSBmIHMgPVxuICAgICgqIFRocmVhZCB3aGljaCBwcmV2ZW50IFtzXSB0byBjaGFuZ2VzIHdoaWxlIGl0IGlzIHNsZWVwaW5nICopXG4gICAgbGV0IGxpbWl0ZXIgPSByZWYgKGYgKCkpIGluXG5cbiAgICAoKiBUaGUgb2NjdXJyZW5jZSB0aGF0IGlzIGRlbGF5ZWQgdW50aWwgdGhlIGxpbWl0ZXIgcmV0dXJucy4gKilcbiAgICBsZXQgZGVsYXllZCA9IHJlZiBOb25lIGluXG5cbiAgICAoKiBUaGUgcmVzdWx0aW5nIGV2ZW50LiAqKVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgKCogVGhlIGxpbWl0ZXIgaXMgc2xlZXBpbmcsIHdlIHF1ZXVlIHRoZSBldmVudCBmb3IgbGF0ZXJcbiAgICAgICAgICAgICAgICBkZWxpdmVyaW5nLiAqKVxuICAgICAgICAgICAgIG1hdGNoICFkZWxheWVkIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgY2VsbCAtPlxuICAgICAgICAgICAgICAgKCogQW4gb2NjdXJyZW5jZSBpcyBhbHJlYWR5IHF1ZXVlZCwgcmVwbGFjZSBpdC4gKilcbiAgICAgICAgICAgICAgIGNlbGwgOj0geDtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGxldCBjZWxsID0gcmVmIHggaW5cbiAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gU29tZSBjZWxsO1xuICAgICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3MgIWxpbWl0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmVcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgeCA9ICFjZWxsIGluXG4gICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmU7XG4gICAgICAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgICAgICBwdXNoIHgpO1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICgqIFNldCB0aGUgbGltaXRlciBmb3IgZnV0dXJlIGV2ZW50cy4gKilcbiAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgKCogU2VuZCB0aGUgb2NjdXJyZW5jZSBub3cuICopXG4gICAgICAgICAgICAgcHVzaCB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG5cbiAgICBob2xkID9lcSAodmFsdWUgcykgKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pXG5cbiAgbGV0IGtlZXBlZCA9IHJlZiBbXVxuXG4gIGxldCBrZWVwIHMgPVxuICAgIGtlZXBlZCA6PSBtYXAgaWdub3JlIHMgOjogIWtlZXBlZFxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgU2lnbmFsIHRyYW5zZm9ybWF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJ1bl9zID9lcSBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB0IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB0KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB2YWx1ZSBzKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgbWFwX3MgP2VxIGYgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBhcHBfcyA/ZXEgc2YgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoRS5hcHAgKEUubWFwIChmdW4gZiB4IC0+IChmLCB4KSkgKGNoYW5nZXMgc2YpKSAoY2hhbmdlcyBzKSlcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiAodmFsdWUgc2YpICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGZpbHRlcl9zID9lcSBmIGkgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBFLmZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSAoY2hhbmdlcyBzKSBpblxuICAgIGxldCB4ID0gdmFsdWUgcyBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgaSAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGZtYXBfcyA/ZXEgZiBpIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gRS5mbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIChjaGFuZ2VzIHMpIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSBpIChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZGlmZl9zIGYgcyA9XG4gICAgbGV0IHByZXZpb3VzID0gcmVmICh2YWx1ZSBzKSBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgbGV0IHkgPSAhcHJldmlvdXMgaW5cbiAgICAgICAgICAgcHJldmlvdXMgOj0geDtcbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCB5KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEUuc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgc2FtcGxlX3MgZiBlIHMgPVxuICAgIEUubWFwX3MgKGZ1biB4IC0+IGYgeCAodmFsdWUgcykpIGVcblxuICBsZXQgYWNjdW1fcyA/ZXEgZWYgaSA9XG4gICAgaG9sZCA/ZXEgaSAoRS5hY2N1bV9zIGVmIGkpXG5cbiAgbGV0IGZvbGRfcyA/ZXEgZiBpIGUgPVxuICAgIGhvbGQgP2VxIGkgKEUuZm9sZF9zIGYgaSBlKVxuXG4gIGxldCByZWMgcmV2X2ZvbGQgZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHJldl9mb2xkIGYgYWNjIGwgPj49IGZ1biBhY2MgLT5cbiAgICAgIGYgYWNjIHhcblxuICBsZXQgbWVyZ2VfcyA/ZXEgZiBhY2Mgc2wgPVxuICAgIGxldCBzID0gbWVyZ2UgKGZ1biBhY2MgeCAtPiB4IDo6IGFjYykgW10gc2wgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyBsKSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBsMV9zID9lcSBmIHMxID1cbiAgICBtYXBfcyA/ZXEgZiBzMVxuXG4gIGxldCBsMl9zID9lcSBmIHMxIHMyID1cbiAgICAoKiBTb21lIGRldGFpbHMgYWJvdXQgdGhlIHVzZSBvZiBbZnVuIF8gXyAtPiBmYWxzZV0gb25cbiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC84OTMjcHVsbHJlcXVlc3RyZXZpZXctNzgzMDgzNDk2ICopXG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MikgLT4gZiB4MSB4MikgKGwyIH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiAtPiAoeDEsIHgyKSkgczEgczIpXG5cbiAgbGV0IGwzX3MgP2VxIGYgczEgczIgczMgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzKSAtPiBmIHgxIHgyIHgzKSAobDMgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzLT4gKHgxLCB4MiwgeDMpKSBzMSBzMiBzMylcblxuICBsZXQgbDRfcyA/ZXEgZiBzMSBzMiBzMyBzNCA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0KSAtPiBmIHgxIHgyIHgzIHg0KSAobDQgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0LT4gKHgxLCB4MiwgeDMsIHg0KSkgczEgczIgczMgczQpXG5cbiAgbGV0IGw1X3MgP2VxIGYgczEgczIgczMgczQgczUgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCwgeDUpIC0+IGYgeDEgeDIgeDMgeDQgeDUpIChsNSB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQgeDUtPiAoeDEsIHgyLCB4MywgeDQsIHg1KSkgczEgczIgczMgczQgczUpXG5cbiAgbGV0IGw2X3MgP2VxIGYgczEgczIgczMgczQgczUgczYgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCwgeDUsIHg2KSAtPiBmIHgxIHgyIHgzIHg0IHg1IHg2KSAobDYgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0IHg1IHg2LT4gKHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYpKSBzMSBzMiBzMyBzNCBzNSBzNilcblxuICAoKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICB8IE1vbmFkaWMgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG4gIGxldCByZXR1cm4gPVxuICAgIGNvbnN0XG5cbiAgbGV0IGJpbmRfcyA/ZXEgcyBmID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChzd2l0Y2ggP2VxIChob2xkIH5lcTooID09ICkgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpKVxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfbHd0X19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9maWxlICopXG5tb2R1bGUgTHd0X2ZpbGUgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9maWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfanMgKilcbm1vZHVsZSBMd3RfanMgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2pzX2V2ZW50cyAqKVxubW9kdWxlIEx3dF9qc19ldmVudHMgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc19ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qc29ucCAqKVxubW9kdWxlIEx3dF9qc29ucCA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzb25wXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfeG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBMd3RfeG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF94bWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfbHd0X18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogaW50KSB5ID0geCA8IHlcblxuICBsZXQgKCA8PSApICh4IDogaW50KSB5ID0geCA8PSB5XG5cbiAgbGV0ICggPD4gKSAoeCA6IGludCkgeSA9IHggPD4geVxuXG4gIGxldCAoID0gKSAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0ICggPiApICh4IDogaW50KSB5ID0geCA+IHlcblxuICBsZXQgKCA+PSApICh4IDogaW50KSB5ID0geCA+PSB5XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuXG4gIGxldCBlcXVhbCAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEpzXG5vcGVuIFhtbEh0dHBSZXF1ZXN0XG5vcGVuISBJbXBvcnRcblxubGV0IGVuY29kZV91cmwgbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBcIiZcIlxuICAgIChMaXN0Lm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gVXJsLnVybGVuY29kZSBuYW1lIF4gXCI9XCIgXiBVcmwudXJsZW5jb2RlICh0b19zdHJpbmcgcylcbiAgICAgICAgIHwgbmFtZSwgYEZpbGUgcyAtPiBVcmwudXJsZW5jb2RlIG5hbWUgXiBcIj1cIiBeIFVybC51cmxlbmNvZGUgKHRvX3N0cmluZyBzIyMubmFtZSkpXG4gICAgICAgbClcblxuKCogSGlnaGVyIGxldmVsIGludGVyZmFjZTogKilcblxudHlwZSAncmVzcG9uc2UgZ2VuZXJpY19odHRwX2ZyYW1lID1cbiAgeyB1cmwgOiBzdHJpbmdcbiAgOyBjb2RlIDogaW50XG4gIDsgaGVhZGVycyA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIDsgY29udGVudCA6ICdyZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sIDogdW5pdCAtPiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHRpb25cbiAgfVxuKCoqIHR5cGUgb2YgdGhlIGh0dHAgaGVhZGVycyAqKVxuXG50eXBlIGh0dHBfZnJhbWUgPSBzdHJpbmcgZ2VuZXJpY19odHRwX2ZyYW1lXG5cbmV4Y2VwdGlvbiBXcm9uZ19oZWFkZXJzIG9mIChpbnQgKiAoc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pKVxuXG5sZXQgZGVmYXVsdF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBKcy5PcHQuY2FzZSByZXEjIy5yZXNwb25zZVRleHQgKGZ1biAoKSAtPiBcIlwiKSAoZnVuIHggLT4gSnMudG9fc3RyaW5nIHgpXG4gIDsgY29udGVudF94bWwgPVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIHJlcSMjLnJlc3BvbnNlWE1MIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGRvYyAtPiBpZiBKcy5zb21lIGRvYyMjLmRvY3VtZW50RWxlbWVudCA9PSBKcy5udWxsIHRoZW4gTm9uZSBlbHNlIFNvbWUgZG9jKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgdGV4dF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBKcy5PcHQuY2FzZSByZXEjIy5yZXNwb25zZVRleHQgKGZ1biAoKSAtPiBKcy5zdHJpbmcgXCJcIikgKGZ1biB4IC0+IHgpXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGRvY3VtZW50X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uZG9jdW1lbnQgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQganNvbl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgYmxvYl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgYXJyYXlidWZmZXJfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBoYXNfZ2V0X2FyZ3MgdXJsID1cbiAgdHJ5XG4gICAgaWdub3JlIChTdHJpbmcuaW5kZXggdXJsICc/Jyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgcGVyZm9ybV9yYXdcbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID8oY2hlY2tfaGVhZGVycyA9IGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgICh0eXBlIHJlc3B0eXBlKVxuICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3B0eXBlIHJlc3BvbnNlKVxuICAgIHVybCA9XG4gIGxldCBjb250ZW50c19ub3JtYWxpemF0aW9uID0gZnVuY3Rpb25cbiAgICB8IGBQT1NUX2Zvcm0gYXJncyAtPlxuICAgICAgICBsZXQgb25seV9zdHJpbmdzID1cbiAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBfLCBgU3RyaW5nIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBmb3JtX2NvbnRlbnRzID1cbiAgICAgICAgICBpZiBvbmx5X3N0cmluZ3MgdGhlbiBgRmllbGRzIChyZWYgW10pIGVsc2UgRm9ybS5lbXB0eV9mb3JtX2NvbnRlbnRzICgpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QuaXRlciAoZnVuIChuYW1lLCB2YWx1ZSkgLT4gRm9ybS5hcHBlbmQgZm9ybV9jb250ZW50cyAobmFtZSwgdmFsdWUpKSBhcmdzO1xuICAgICAgICBgRm9ybV9jb250ZW50cyBmb3JtX2NvbnRlbnRzXG4gICAgfCAoYFN0cmluZyBfIHwgYEZvcm1fY29udGVudHMgXykgYXMgeCAtPiB4XG4gICAgfCBgQmxvYiBiIC0+IGBCbG9iIChiIDogI0ZpbGUuYmxvYiBKcy50IDo+IEZpbGUuYmxvYiBKcy50KVxuICBpblxuICBsZXQgY29udGVudHMgPVxuICAgIG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjIC0+IFNvbWUgKGNvbnRlbnRzX25vcm1hbGl6YXRpb24gYylcbiAgaW5cbiAgbGV0IG1ldGhvZF90b19zdHJpbmcgbSA9XG4gICAgbWF0Y2ggbSB3aXRoXG4gICAgfCBgR0VUIC0+IFwiR0VUXCJcbiAgICB8IGBQT1NUIC0+IFwiUE9TVFwiXG4gICAgfCBgSEVBRCAtPiBcIkhFQURcIlxuICAgIHwgYFBVVCAtPiBcIlBVVFwiXG4gICAgfCBgREVMRVRFIC0+IFwiREVMRVRFXCJcbiAgICB8IGBPUFRJT05TIC0+IFwiT1BUSU9OU1wiXG4gICAgfCBgUEFUQ0ggLT4gXCJQQVRDSFwiXG4gIGluXG4gIGxldCBtZXRob2RfLCBjb250ZW50X3R5cGUgPVxuICAgIGxldCBvdmVycmlkZV9tZXRob2QgbSA9XG4gICAgICBtYXRjaCBvdmVycmlkZV9tZXRob2Qgd2l0aFxuICAgICAgfCBOb25lIC0+IG1cbiAgICAgIHwgU29tZSB2IC0+IG1ldGhvZF90b19zdHJpbmcgdlxuICAgIGluXG4gICAgbGV0IG92ZXJyaWRlX2NvbnRlbnRfdHlwZSBjID1cbiAgICAgIG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU29tZSBjXG4gICAgICB8IFNvbWUgXyAtPiBjb250ZW50X3R5cGVcbiAgICBpblxuICAgIG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gb3ZlcnJpZGVfbWV0aG9kIFwiR0VUXCIsIGNvbnRlbnRfdHlwZVxuICAgIHwgU29tZSAoYEZvcm1fY29udGVudHMgZm9ybSkgLT4gKFxuICAgICAgICBtYXRjaCBmb3JtIHdpdGhcbiAgICAgICAgfCBgRmllbGRzIF9zdHJpbmdzIC0+XG4gICAgICAgICAgICAoIG92ZXJyaWRlX21ldGhvZCBcIlBPU1RcIlxuICAgICAgICAgICAgLCBvdmVycmlkZV9jb250ZW50X3R5cGUgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApXG4gICAgICAgIHwgYEZvcm1EYXRhIF8gLT4gb3ZlcnJpZGVfbWV0aG9kIFwiUE9TVFwiLCBjb250ZW50X3R5cGUpXG4gICAgfCBTb21lIChgU3RyaW5nIF8gfCBgQmxvYiBfKSAtPiBvdmVycmlkZV9tZXRob2QgXCJQT1NUXCIsIGNvbnRlbnRfdHlwZVxuICBpblxuICBsZXQgdXJsID1cbiAgICBpZiBQb2x5LihnZXRfYXJncyA9IFtdKVxuICAgIHRoZW4gdXJsXG4gICAgZWxzZSB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgZ2V0X2FyZ3NcbiAgaW5cbiAgbGV0IChyZXMgOiByZXNwdHlwZSBnZW5lcmljX2h0dHBfZnJhbWUgTHd0LnQpLCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IHJlcSA9IGNyZWF0ZSAoKSBpblxuICByZXEjI19vcGVuIChKcy5zdHJpbmcgbWV0aG9kXykgKEpzLnN0cmluZyB1cmwpIEpzLl90cnVlO1xuICAobWF0Y2ggb3ZlcnJpZGVfbWltZV90eXBlIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBtaW1lX3R5cGUgLT4gcmVxIyNvdmVycmlkZU1pbWVUeXBlIChKcy5zdHJpbmcgbWltZV90eXBlKSk7XG4gIChtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICB8IEJsb2IgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImJsb2JcIlxuICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gIHwgVGV4dCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwidGV4dFwiXG4gIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICAobWF0Y2ggd2l0aF9jcmVkZW50aWFscyB3aXRoXG4gIHwgU29tZSBjIC0+IHJlcSMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGNcbiAgfCBOb25lIC0+ICgpKTtcbiAgKG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gIHwgU29tZSBjb250ZW50X3R5cGUgLT5cbiAgICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIFwiQ29udGVudC10eXBlXCIpIChKcy5zdHJpbmcgY29udGVudF90eXBlKVxuICB8IF8gLT4gKCkpO1xuICBMaXN0Lml0ZXIgKGZ1biAobiwgdikgLT4gcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgbikgKEpzLnN0cmluZyB2KSkgaGVhZGVycztcbiAgbGV0IGhlYWRlcnMgcyA9XG4gICAgT3B0LmNhc2VcbiAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgaW5cbiAgbGV0IGRvX2NoZWNrX2hlYWRlcnMgPVxuICAgIGxldCBzdCA9IHJlZiBgTm90X3lldCBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgaWYgUG9seS4oIXN0ID0gYE5vdF95ZXQpXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGNoZWNrX2hlYWRlcnMgcmVxIyMuc3RhdHVzIGhlYWRlcnNcbiAgICAgICAgdGhlbiBzdCA6PSBgUGFzc2VkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIEx3dC53YWtldXBfZXhuIHcgKFdyb25nX2hlYWRlcnMgKHJlcSMjLnN0YXR1cywgaGVhZGVycykpO1xuICAgICAgICAgIHN0IDo9IGBGYWlsZWQ7XG4gICAgICAgICAgcmVxIyNhYm9ydCk7XG4gICAgICBQb2x5Lighc3QgPD4gYEZhaWxlZClcbiAgaW5cbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlIDo9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT5cbiAgICAgICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgICAgICgqIElFIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgZm9yIEhFQURFUlNfUkVDRUlWRUQuXG4gICAgICAgICAgICAgc28gd2Ugd2FpdCB0aWwgTE9BRElORyB0byBjaGVjayBoZWFkZXJzLiBTZWU6XG4gICAgICAgICAgICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM0MzYxKHY9dnMuODUpLmFzcHggKilcbiAgICAgICAgfCBIRUFERVJTX1JFQ0VJVkVEIHdoZW4gbm90IERvbV9odG1sLm9uSUUgLT4gaWdub3JlIChkb19jaGVja19oZWFkZXJzICgpKVxuICAgICAgICB8IExPQURJTkcgd2hlbiBEb21faHRtbC5vbklFIC0+IGlnbm9yZSAoZG9fY2hlY2tfaGVhZGVycyAoKSlcbiAgICAgICAgfCBET05FIC0+XG4gICAgICAgICAgICAoKiBJZiB3ZSBkaWRuJ3QgY2F0Y2ggYSBwcmV2aW91cyBldmVudCwgd2UgY2hlY2sgdGhlIGhlYWRlci4gKilcbiAgICAgICAgICAgIGlmIGRvX2NoZWNrX2hlYWRlcnMgKClcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlIDogcmVzcHR5cGUgZ2VuZXJpY19odHRwX2ZyYW1lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgICAgICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IGFycmF5YnVmZmVyX3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IEJsb2IgLT4gYmxvYl9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBkb2N1bWVudF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBKU09OIC0+IGpzb25fcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgVGV4dCAtPiB0ZXh0X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IERlZmF1bHQgLT4gZGVmYXVsdF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC53YWtldXAgdyByZXNwb25zZVxuICAgICAgICB8IF8gLT4gKCkpO1xuICAobWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICB8IFNvbWUgcHJvZ3Jlc3MgLT5cbiAgICAgIHJlcSMjLm9ucHJvZ3Jlc3MgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICBwcm9ncmVzcyBlIyMubG9hZGVkIGUjIy50b3RhbDtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICB8IE5vbmUgLT4gKCkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICAgIG1hdGNoIHVwbG9hZF9wcm9ncmVzcyB3aXRoXG4gICAgICB8IFNvbWUgdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICAgICAgdXBsb2FkIyMub25wcm9ncmVzcyA6PVxuICAgICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgdXBsb2FkX3Byb2dyZXNzIGUjIy5sb2FkZWQgZSMjLnRvdGFsO1xuICAgICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgfCBOb25lIC0+ICgpKTtcbiAgKG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gIHwgU29tZSAoYEZvcm1fY29udGVudHMgKGBGaWVsZHMgbCkpIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoc3RyaW5nIChlbmNvZGVfdXJsICFsKSkpXG4gIHwgU29tZSAoYEZvcm1fY29udGVudHMgKGBGb3JtRGF0YSBmKSkgLT4gcmVxIyNzZW5kX2Zvcm1EYXRhIGZcbiAgfCBTb21lIChgU3RyaW5nIHMpIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoSnMuc3RyaW5nIHMpKVxuICB8IFNvbWUgKGBCbG9iIGIpIC0+IHJlcSMjc2VuZF9ibG9iIGIpO1xuICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuICgpIC0+IHJlcSMjYWJvcnQpO1xuICByZXNcblxubGV0IHBlcmZvcm1fcmF3X3VybFxuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIHVybCA9XG4gIHBlcmZvcm1fcmF3XG4gICAgfmhlYWRlcnNcbiAgICA/Y29udGVudF90eXBlXG4gICAgfmdldF9hcmdzXG4gICAgP2NvbnRlbnRzXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIH5yZXNwb25zZV90eXBlOkRlZmF1bHRcbiAgICB1cmxcblxubGV0IHBlcmZvcm1cbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9jb250ZW50c1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB1cmwgPVxuICBwZXJmb3JtX3Jhd1xuICAgIH5oZWFkZXJzXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgIH5nZXRfYXJnc1xuICAgID9jb250ZW50c1xuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0XG4gICAgKFVybC5zdHJpbmdfb2ZfdXJsIHVybClcblxubGV0IGdldCBzID0gcGVyZm9ybV9yYXdfdXJsIHNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IHNsZWVwIGQgPVxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBpZCA9IERvbV9odG1sLnNldFRpbWVvdXQgKEx3dC53YWtldXAgdykgKGQgKi4gMTAwMC4pIGluXG4gIEx3dC5vbl9jYW5jZWwgdCAoZnVuICgpIC0+IERvbV9odG1sLmNsZWFyVGltZW91dCBpZCk7XG4gIHRcblxubGV0IHlpZWxkICgpID0gc2xlZXAgMC5cblxubGV0IHdha2V1cCA9IGZ1bmN0aW9uXG4gIHwgMSAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgTHd0Lndha2V1cF9wYXVzZWQpIChKcy5mbG9hdCAwLikpXG4gIHwgXyAtPiAoKVxuXG5sZXQgKCkgPSBMd3QucmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIgd2FrZXVwXG5cbmxldCBwcmVycl9zdHJpbmcgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcylcblxubGV0IF8gPVxuICBMd3QuYXN5bmNfZXhjZXB0aW9uX2hvb2sgOj1cbiAgICBmdW4gZXhuIC0+XG4gICAgICBwcmVycl9zdHJpbmcgXCJFeGNlcHRpb24gZHVyaW5nIEx3dC5hc3luYzogXCI7XG4gICAgICBwcmVycl9zdHJpbmcgKFByaW50ZXhjLnRvX3N0cmluZyBleG4pO1xuICAgICAgUHJpbnRleGMucHJpbnRfYmFja3RyYWNlIHN0ZGVyclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCByZWMgcmFuZG9tX2lkZW50aWZpZXIgc2l6ZSA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSBzaXplIGluXG4gIGZvciBfaSA9IDAgdG8gc2l6ZSAtIDEgZG9cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAoQ2hhci5jaHIgKDk3ICsgUmFuZG9tLmludCAyNikpXG4gIGRvbmU7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgRG9tX2h0bWwud2luZG93IChKcy5zdHJpbmcgcykpXG4gIHRoZW4gKCogbmFtZSBhbHJlYWR5IGluIHVzZSwgY2hvb3NlIGFub3RoZXIgb25lKilcbiAgICByYW5kb21faWRlbnRpZmllciBzaXplXG4gIGVsc2Ugc1xuXG5sZXQgcmF3X2NhbGwgbmFtZSB1cmkgZXJyb3JfY2IgdXNlcl9jYiA9XG4gIGxldCBzY3JpcHQgPSBEb21faHRtbC4oY3JlYXRlU2NyaXB0IGRvY3VtZW50KSBpblxuICBsZXQgZmluYWxpemUgKCkgPVxuICAgIEpzLlVuc2FmZS5kZWxldGUgRG9tX2h0bWwud2luZG93IChKcy5zdHJpbmcgbmFtZSk7XG4gICAgSnMuT3B0Lml0ZXIgc2NyaXB0IyMucGFyZW50Tm9kZSAoZnVuIHBhcmVudCAtPiBEb20ucmVtb3ZlQ2hpbGQgcGFyZW50IHNjcmlwdClcbiAgaW5cbiAgbGV0IGV4ZWN1dGVkID0gcmVmIGZhbHNlIGluXG4gIEpzLlVuc2FmZS5zZXRcbiAgICBEb21faHRtbC53aW5kb3dcbiAgICAoSnMuc3RyaW5nIG5hbWUpXG4gICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biB4IC0+XG4gICAgICAgICBleGVjdXRlZCA6PSB0cnVlO1xuICAgICAgICAgZmluYWxpemUgKCk7XG4gICAgICAgICB1c2VyX2NiIHgpKTtcbiAgc2NyaXB0IyMuc3JjIDo9IEpzLnN0cmluZyB1cmk7XG4gIHNjcmlwdCMjLl90eXBlIDo9IEpzLnN0cmluZyBcInRleHQvamF2YXNjcmlwdFwiO1xuICBzY3JpcHQjIy5hc3luYyA6PSBKcy5fdHJ1ZTtcbiAgKChKcy5VbnNhZmUuY29lcmNlIHNjcmlwdCkjIy5vbmVycm9yXG4gIDo9IGZ1biB4IC0+XG4gIGZpbmFsaXplICgpO1xuICBlcnJvcl9jYiB4KTtcbiAgKChKcy5VbnNhZmUuY29lcmNlIHNjcmlwdCkjIy5vbmxvYWRcbiAgOj0gZnVuIHggLT5cbiAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgIEx3dC5iaW5kIChMd3RfanMuc2xlZXAgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICBpZiAhZXhlY3V0ZWRcbiAgICAgICAgICB0aGVuIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXG4gICAgICAgICAgICAgIChKcy5zdHJpbmcgXCJKc29ucDogc2NyaXB0IGxvYWRlZCBidXQgY2FsbGJhY2sgbm90IGV4ZWN1dGVkXCIpO1xuICAgICAgICAgICAgZmluYWxpemUgKCk7XG4gICAgICAgICAgICBlcnJvcl9jYiB4O1xuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KSkpKTtcbiAgbGV0IGluaXQgKCkgPSBpZ25vcmUgKERvbS5hcHBlbmRDaGlsZCBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgc2NyaXB0KSBpblxuICBpbml0LCBmaW5hbGl6ZVxuXG5sZXQgY2FsbF8gcHJlZml4IG1ha2VfdXJpIGVycm9yX2NiIHVzZXJfY2IgPVxuICBsZXQgbmFtZSA9IHByZWZpeCBeIHJhbmRvbV9pZGVudGlmaWVyIDEwIGluXG4gIGxldCB1cmkgPSBtYWtlX3VyaSBuYW1lIGluXG4gIHJhd19jYWxsIG5hbWUgdXJpIGVycm9yX2NiIHVzZXJfY2JcblxubGV0IGNhbGxfY3VzdG9tX3VybCA/dGltZW91dCA/KHByZWZpeCA9IFwiXCIpIG1ha2VfdXJpID1cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgaW5pdCwgZmluYWxpemUgPSBjYWxsXyBwcmVmaXggbWFrZV91cmkgKGZ1biBfIC0+IEx3dC5jYW5jZWwgdCkgKEx3dC53YWtldXAgdykgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IGZpbmFsaXplO1xuICBsZXQgbmV3X3QgPVxuICAgIG1hdGNoIHRpbWVvdXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0XG4gICAgfCBTb21lIGRlbGF5IC0+XG4gICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICBMd3QuYmluZCAoTHd0X2pzLnNsZWVwIGRlbGF5KSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5jYW5jZWwgdDtcbiAgICAgICAgICAgICAgdClcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LmNob29zZSBbIHdhaXQ7IHQgXVxuICBpblxuICBpbml0ICgpO1xuICBuZXdfdFxuXG5sZXQgYWRkX3BhcmFtIG5hbWUgdmFsdWUgbCA9XG4gIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biAoeCwgXykgLT4gbm90IChTdHJpbmcuZXF1YWwgeCBuYW1lKSkgbCBpblxuICAobmFtZSwgdmFsdWUpIDo6IGxcblxubGV0IGNhbGwgP3RpbWVvdXQgPyhwYXJhbSA9IFwiY2FsbGJhY2tcIikgPyhwcmVmaXggPSBcIlwiKSB1cmwgPVxuICBsZXQgbWFrZV91cmkgY2JuYW1lID1cbiAgICBtYXRjaCBVcmwudXJsX29mX3N0cmluZyB1cmwgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkpzb25wLmNhbGw6IENhbm5vdCBwYXJzZSB1cmxcIlxuICAgIHwgU29tZSB1cmwgLT5cbiAgICAgICAgbGV0IG5ld191cmwgPVxuICAgICAgICAgIG1hdGNoIHVybCB3aXRoXG4gICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+XG4gICAgICAgICAgICAgIFVybC5IdHRwXG4gICAgICAgICAgICAgICAgeyBodHRwIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5odV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB8IFVybC5IdHRwcyBodHRwIC0+XG4gICAgICAgICAgICAgIFVybC5IdHRwc1xuICAgICAgICAgICAgICAgIHsgaHR0cCB3aXRoXG4gICAgICAgICAgICAgICAgICBVcmwuaHVfYXJndW1lbnRzID0gYWRkX3BhcmFtIHBhcmFtIGNibmFtZSBodHRwLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+XG4gICAgICAgICAgICAgIFVybC5GaWxlXG4gICAgICAgICAgICAgICAgeyBmaWxlIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5mdV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGZpbGUuVXJsLmZ1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgVXJsLnN0cmluZ19vZl91cmwgbmV3X3VybFxuICBpblxuICBjYWxsX2N1c3RvbV91cmwgP3RpbWVvdXQgfnByZWZpeCBtYWtlX3VyaVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBWaW5jZW50IEJhbGF0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCAoID4+PSApID0gTHd0LmJpbmRcblxubGV0IGFzeW5jIGYgPSBMd3QuYXN5bmMgKGZ1biAoKSAtPiBMd3RfanMueWllbGQgKCkgPj49IGYpXG5cbmxldCBvcHRfbWFwIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBtYWtlX2V2ZW50IGV2ZW50X2tpbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIGxldCBlbCA9IHJlZiBKcy5udWxsIGluXG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGNhbmNlbCAoKSA9IEpzLk9wdC5pdGVyICFlbCBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIGluXG4gIEx3dC5vbl9jYW5jZWwgdCBjYW5jZWw7XG4gIGVsIDo9XG4gICAgSnMuc29tZVxuICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICAgICAgID9jYXB0dXJlOihvcHRfbWFwIEpzLmJvb2wgdXNlX2NhcHR1cmUpXG4gICAgICAgICA/cGFzc2l2ZToob3B0X21hcCBKcy5ib29sIHBhc3NpdmUpXG4gICAgICAgICB0YXJnZXRcbiAgICAgICAgIGV2ZW50X2tpbmRcbiAgICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gKGV2IDogI0RvbV9odG1sLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGNhbmNlbCAoKTtcbiAgICAgICAgICAgICAgTHd0Lndha2V1cCB3IGV2O1xuICAgICAgICAgICAgICBKcy5ib29sIHRydWUpKVxuICAgICAgICAgKCogdHJ1ZSBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIHByZXZlbnQgZGVmYXVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgY2FuIHVzZSB0aGUgcHJldmVudERlZmF1bHQgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlLiAqKSk7XG4gIHRcblxubGV0IGNhdGNoX2NhbmNlbCBmIHggPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IGYgeClcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTHd0LkNhbmNlbGVkIC0+IEx3dC5yZXR1cm4gKClcbiAgICAgIHwgZSAtPiBMd3QuZmFpbCBlKVxuXG5sZXQgd2l0aF9lcnJvcl9sb2cgZiB4ID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgKGZ1biBlIC0+XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChQcmludGV4Yy50b19zdHJpbmcgZSkpO1xuICAgICAgTHd0LnJldHVybiAoKSlcblxubGV0IHNlcV9sb29wIGV2aCA/KGNhbmNlbF9oYW5kbGVyID0gZmFsc2UpID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gICgqIFVzaW5nIEx3dC5mYWlsIGFzIGRlZmF1bHQsIHRvIGJlIHBvbHltb3JwaGljICopXG4gIGxldCBjdXJfaGFuZGxlciA9IHJlZiAoTHd0LnJldHVybiAoKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGlmIGNhbmNlbF9oYW5kbGVyIHRoZW4gTHd0LmNhbmNlbCAhY3VyX2hhbmRsZXI7XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgYXV4ICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgICAgICgqIEluIHRoZSBjYXNlIGl0IGhhcyBiZWVuIGNhbmNlbGxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcHJldmlvdXMgaGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICB3ZSBkbyBub3QgcmVpbnN0YWxsIHRoZSBldmVudCBoYW5kbGVyICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdCA9IGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGluXG4gICAgICBjdXIgOj0gdDtcbiAgICAgIHRcbiAgICAgID4+PSBmdW4gZSAtPlxuICAgICAgY3VyX2hhbmRsZXIgOj0gd2l0aF9lcnJvcl9sb2cgKGhhbmRsZXIgZSkgbHQ7XG4gICAgICAhY3VyX2hhbmRsZXIgPj49IGF1eClcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgYXV4KTtcbiAgbHRcblxubGV0IGFzeW5jX2xvb3AgZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgYXV4ICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHQgPSBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBpblxuICAgICAgY3VyIDo9IHQ7XG4gICAgICB0XG4gICAgICA+Pj0gZnVuIGUgLT5cbiAgICAgIEx3dC5hc3luYyAoZnVuICgpIC0+IHdpdGhfZXJyb3JfbG9nIChoYW5kbGVyIGUpIGx0KTtcbiAgICAgIGF1eCAoKSlcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgYXV4KTtcbiAgbHRcblxubGV0IGJ1ZmZlcmVkX2xvb3BcbiAgICBldmhcbiAgICA/KGNhbmNlbF9oYW5kbGVyID0gZmFsc2UpXG4gICAgPyhjYW5jZWxfcXVldWUgPSB0cnVlKVxuICAgID91c2VfY2FwdHVyZVxuICAgID9wYXNzaXZlXG4gICAgdGFyZ2V0XG4gICAgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHF1ZXVlID0gcmVmIFtdIGluXG4gIGxldCBjdXIgPSByZWYgKEx3dC5mYWlsIChGYWlsdXJlIFwiTHd0X2pzX2V2ZW50XCIpKSBpblxuICBsZXQgY3VyX2hhbmRsZXIgPSByZWYgKEx3dC5yZXR1cm4gKCkpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IHNwYXduID0gTHd0X2NvbmRpdGlvbi5jcmVhdGUgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBpZiBjYW5jZWxfaGFuZGxlciB0aGVuIEx3dC5jYW5jZWwgIWN1cl9oYW5kbGVyO1xuICAgICAgaWYgY2FuY2VsX3F1ZXVlIHRoZW4gcXVldWUgOj0gW107XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgc3Bhd25lciAoKSA9XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCB0ID0gZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaW5cbiAgICAgIGN1ciA6PSB0O1xuICAgICAgdFxuICAgICAgPj49IGZ1biBlIC0+XG4gICAgICBxdWV1ZSA6PSBlIDo6ICFxdWV1ZTtcbiAgICAgIEx3dF9jb25kaXRpb24uc2lnbmFsIHNwYXduICgpO1xuICAgICAgc3Bhd25lciAoKSlcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgbGV0IHJlYyBydW5uZXIgKCkgPVxuICAgIGN1cl9oYW5kbGVyIDo9IEx3dC5yZXR1cm4gKCk7XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoICFxdWV1ZSB3aXRoXG4gICAgICB8IFtdIC0+IEx3dF9jb25kaXRpb24ud2FpdCBzcGF3biA+Pj0gcnVubmVyXG4gICAgICB8IGUgOjogdGwgLT5cbiAgICAgICAgICBxdWV1ZSA6PSB0bDtcbiAgICAgICAgICBjdXJfaGFuZGxlciA6PSB3aXRoX2Vycm9yX2xvZyAoaGFuZGxlciBlKSBsdDtcbiAgICAgICAgICAhY3VyX2hhbmRsZXIgPj49IHJ1bm5lcilcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgc3Bhd25lcik7XG4gIEx3dC5hc3luYyBydW5uZXI7XG4gIGx0XG5cbmxldCBmdW5jX2xpbWl0ZWRfbG9vcCBldmVudCBsaW1pdGVkX2Z1bmMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgYXN5bmNfbG9vcCBldmVudCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IChmdW4gZXYgbHQgLT5cbiAgICAgIGluY3IgY291bnQ7XG4gICAgICBsZXQgbmIgPSAhY291bnQgaW5cbiAgICAgIGxpbWl0ZWRfZnVuYyAoKSA+Pj0gZnVuIF8gLT4gaWYgIWNvdW50ID0gbmIgdGhlbiBoYW5kbGVyIGV2IGx0IGVsc2UgTHd0LnJldHVybiAoKSlcblxubGV0IGxpbWl0ZWRfbG9vcCBldmVudCA/KGVsYXBzZWRfdGltZSA9IDAuMSkgPVxuICBmdW5jX2xpbWl0ZWRfbG9vcCBldmVudCAoZnVuICgpIC0+IEx3dF9qcy5zbGVlcCBlbGFwc2VkX3RpbWUpXG5cbmxldCBjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjb3B5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNvcHkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmN1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwYXN0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wYXN0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkYmxjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kYmxjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2Vkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNldXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2V1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZW92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2VvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlbW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2VvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2VvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5cHJlc3MgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQua2V5cHJlc3MgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5ZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5rZXlkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGtleXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmtleXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgaW5wdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuaW5wdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdGltZXVwZGF0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50aW1ldXBkYXRlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2VuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ292ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ292ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2xlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJvcCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcm9wID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGZvY3VzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmZvY3VzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGJsdXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuYmx1ciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHN1Ym1pdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdWJtaXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2VsZWN0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnNlbGVjdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBhYm9ydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5hYm9ydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlcnJvciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lcnJvciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2FucGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jYW5wbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNhbnBsYXl0aHJvdWdoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNhbnBsYXl0aHJvdWdoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGR1cmF0aW9uY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmR1cmF0aW9uY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVtcHRpZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZW1wdGllZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlbmRlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lbmRlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkZWRkYXRhID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRlZGRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZGVkbWV0YWRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZGVkbWV0YWRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwYXVzZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wYXVzZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcGxheWluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wbGF5aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHJhdGVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucmF0ZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzZWVrZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Vla2VkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNlZWtpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Vla2luZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzdGFsbGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN0YWxsZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc3VzcGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdXNwZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHZvbHVtZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC52b2x1bWVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgd2FpdGluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC53YWl0aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxuKCogc3BlY2lhbCBjYXNlIGZvciBtb3VzZXdoZWVsLCBiZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGJyb3dzZXIgKilcbmxldCBtb3VzZXdoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBsZXQgZWwgPSByZWYgSnMubnVsbCBpblxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBjYW5jZWwgKCkgPSBKcy5PcHQuaXRlciAhZWwgRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBpblxuICBMd3Qub25fY2FuY2VsIHQgY2FuY2VsO1xuICBlbCA6PVxuICAgIEpzLnNvbWVcbiAgICAgIChEb21faHRtbC5hZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgICAgICA/Y2FwdHVyZToob3B0X21hcCBKcy5ib29sIHVzZV9jYXB0dXJlKVxuICAgICAgICAgP3Bhc3NpdmU6KG9wdF9tYXAgSnMuYm9vbCBwYXNzaXZlKVxuICAgICAgICAgdGFyZ2V0XG4gICAgICAgICAoZnVuIChldiA6ICNEb21faHRtbC5ldmVudCBKcy50KSB+ZHggfmR5IC0+XG4gICAgICAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIGV2O1xuICAgICAgICAgICBjYW5jZWwgKCk7XG4gICAgICAgICAgIEx3dC53YWtldXAgdyAoZXYsIChkeCwgZHkpKTtcbiAgICAgICAgICAgSnMuYm9vbCB0cnVlKVxuICAgICAgICAgKCogdHJ1ZSBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIHByZXZlbnQgZGVmYXVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgY2FuIHVzZSB0aGUgcHJldmVudERlZmF1bHQgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlLiAqKSk7XG4gIHRcblxuKCogbGV0IF9ET01Nb3VzZVNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuX0RPTU1vdXNlU2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcbiopXG5cbmxldCB3aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC53aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdG91Y2htb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNobW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaGNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaGNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb3N0cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9zdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGdvdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmdvdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVybGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcm1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJ1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVydXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdHJhbnNpdGlvbmVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25zdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbnJ1biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9ucnVuID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25jYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudHJhbnNpdGlvbmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCBjbGlja3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2xpY2sgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjb3BpZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY29weSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGN1dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGFzdGVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBhc3RlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZGJsY2xpY2tzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRibGNsaWNrID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2Vkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZWRvd24gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZXVwcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZXVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2VvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW92ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZW1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlbW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlb3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW91dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGtleXByZXNzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Aga2V5cHJlc3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBrZXlkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBrZXlkb3duID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQga2V5dXBzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGtleXVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBpbnB1dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgaW5wdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0aW1ldXBkYXRlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0aW1ldXBkYXRlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ3N0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ2VudGVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnZW50ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnb3ZlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ292ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnbGVhdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdsZWF2ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcm9wcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcm9wID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2V3aGVlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2V3aGVlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHdoZWVscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB3aGVlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0b3VjaG1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNobW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaGVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoY2FuY2VscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaGNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGZvY3VzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZm9jdXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBibHVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBibHVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Nyb2xscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzY3JvbGwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzdWJtaXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN1Ym1pdCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNlbGVjdHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc2VsZWN0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgYWJvcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGFib3J0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZXJyb3JzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVycm9yID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNhbnBsYXlzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNhbnBsYXkgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjYW5wbGF5dGhyb3VnaHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2FucGxheXRocm91Z2ggP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkdXJhdGlvbmNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHVyYXRpb25jaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlbXB0aWVkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBlbXB0aWVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZW5kZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVuZGVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZGVkZGF0YXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZGVkZGF0YSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRlZG1ldGFkYXRhcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkZWRtZXRhZGF0YSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRzdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZHN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGF1c2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBhdXNlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGxheXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGxheSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBsYXlpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBsYXlpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCByYXRlY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCByYXRlY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Vla2VkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWVrZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzZWVraW5ncyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWVraW5nID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc3RhbGxlZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3RhbGxlZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHN1c3BlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN1c3BlbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB2b2x1bWVjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHZvbHVtZWNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHdhaXRpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHdhaXRpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb3N0cG9pbnRlcmNhcHR1cmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvc3Rwb2ludGVyY2FwdHVyZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGdvdHBvaW50ZXJjYXB0dXJlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBnb3Rwb2ludGVyY2FwdHVyZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJlbnRlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmVudGVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmNhbmNlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyZG93biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJsZWF2ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmxlYXZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJtb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm91dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcm91dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJ1cHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcnVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbmVuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbmVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25zdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbnN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbnJ1bnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbnJ1biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25jYW5jZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRyYW5zaXRpb25jYW5jZWwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoKSA9XG4gIGxldCB0LCBzID0gTHd0LndhaXQgKCkgaW5cbiAgbGV0IChfIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQpID1cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoXyA6IEpzLm51bWJlcl90KSAtPiBMd3Qud2FrZXVwIHMgKCkpKVxuICBpblxuICB0XG5cbmxldCBvbmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgRG9tX2h0bWwud2luZG93XG5cbmxldCBkb21Db250ZW50TG9hZGVkID1cbiAgbGV0IGNvbXBsZXRlID0gSnMuc3RyaW5nIFwiY29tcGxldGVcIiBpblxuICBsZXQgZG9jID0gRG9tX2h0bWwud2luZG93IyMuZG9jdW1lbnQgaW5cbiAgZnVuICgpIC0+XG4gICAgaWYgZG9jIyMucmVhZHlTdGF0ZSA9PSBjb21wbGV0ZVxuICAgIHRoZW4gTHd0LnJldHVybl91bml0XG4gICAgZWxzZVxuICAgICAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICAgICAgbGV0IHdha2V1cCB3IF8gPSBpZiBMd3QuaXNfc2xlZXBpbmcgdCB0aGVuIEx3dC53YWtldXAgdyAoKSBpblxuICAgICAgbGV0IHdha2V1cF9leG4gdyBlID0gaWYgTHd0LmlzX3NsZWVwaW5nIHQgdGhlbiBMd3Qud2FrZXVwX2V4biB3IGUgaW5cbiAgICAgICgqIGh0dHBzOi8vZ2l0aHViLmNvbS9kcGVyaW5pL0NvbnRlbnRMb2FkZWQvYmxvYi9tYXN0ZXIvc3JjL2NvbnRlbnRsb2FkZWQuanMgKilcbiAgICAgIGxldCByZWd1bGFyID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIGRvYyBpblxuICAgICAgTHd0Lm9uX2FueSByZWd1bGFyICh3YWtldXAgdykgKHdha2V1cF9leG4gdyk7XG4gICAgICAoKiBpZTggKilcbiAgICAgIGxldCByZWFkeXN0YXRlY2hhbmdlID1cbiAgICAgICAgYXN5bmNfbG9vcFxuICAgICAgICAgIChtYWtlX2V2ZW50IChEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIikpXG4gICAgICAgICAgZG9jXG4gICAgICAgICAgKGZ1biBlIF8gLT5cbiAgICAgICAgICAgIGlmIGRvYyMjLnJlYWR5U3RhdGUgPT0gY29tcGxldGUgdGhlbiB3YWtldXAgdyBlO1xuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgaW5cbiAgICAgICgqIGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKilcbiAgICAgIGxldCBpbml0ID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkIERvbV9odG1sLndpbmRvdyBpblxuICAgICAgTHd0Lm9uX2FueSBpbml0ICh3YWtldXAgdykgKHdha2V1cF9leG4gdyk7XG4gICAgICAoKiBjbGVhbiBhbmQgcmV0dXJuICopXG4gICAgICBMd3QuYmluZCB0IChmdW4gX2UgLT5cbiAgICAgICAgICBMd3QuY2FuY2VsIHJlZ3VsYXI7XG4gICAgICAgICAgTHd0LmNhbmNlbCByZWFkeXN0YXRlY2hhbmdlO1xuICAgICAgICAgIEx3dC5jYW5jZWwgaW5pdDtcbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvbnVubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudW5sb2FkIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25iZWZvcmV1bmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmJlZm9yZXVubG9hZCBEb21faHRtbC53aW5kb3dcblxubGV0IG9ucmVzaXplICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5yZXNpemUgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5vcmllbnRhdGlvbmNoYW5nZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9ucG9wc3RhdGUgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvcHN0YXRlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25oYXNoY2hhbmdlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5oYXNoY2hhbmdlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZV9vcl9vbnJlc2l6ZSAoKSA9IEx3dC5waWNrIFsgb25yZXNpemUgKCk7IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkgXVxuXG5sZXQgb25yZXNpemVzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25yZXNpemUgKCkpICgpIHRcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2VzIHQgPVxuICBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZSAoKSkgKCkgdFxuXG5sZXQgb25wb3BzdGF0ZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbnBvcHN0YXRlICgpKSAoKSB0XG5cbmxldCBvbmhhc2hjaGFuZ2VzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25oYXNoY2hhbmdlICgpKSAoKSB0XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlc19vcl9vbnJlc2l6ZXMgdCA9XG4gIHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXplICgpKSAoKSB0XG5cbmxldCBsaW1pdGVkX29ucmVzaXplcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ucmVzaXplICgpKSA/ZWxhcHNlZF90aW1lICgpIHRcblxubGV0IGxpbWl0ZWRfb25vcmllbnRhdGlvbmNoYW5nZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wXG4gICAgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkpXG4gICAgP2VsYXBzZWRfdGltZVxuICAgICgpXG4gICAgdFxuXG5sZXQgbGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vcl9vbnJlc2l6ZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wXG4gICAgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpemUgKCkpXG4gICAgP2VsYXBzZWRfdGltZVxuICAgICgpXG4gICAgdFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiBGaWxlXG5vcGVuISBJbXBvcnRcblxubGV0IHJlYWRfd2l0aF9maWxlcmVhZGVyIChmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0cikga2luZCBmaWxlID1cbiAgbGV0IHJlYWRlciA9IG5ldyVqcyBmaWxlUmVhZGVyIGluXG4gIGxldCByZXMsIHcgPSBMd3QudGFzayAoKSBpblxuICByZWFkZXIjIy5vbmxvYWRlbmQgOj1cbiAgICBoYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBpZiByZWFkZXIjIy5yZWFkeVN0YXRlID09IERPTkVcbiAgICAgICAgdGhlblxuICAgICAgICAgIEx3dC53YWtldXBcbiAgICAgICAgICAgIHdcbiAgICAgICAgICAgIChtYXRjaCBPcHQudG9fb3B0aW9uIChDb2VyY2VUby5zdHJpbmcgcmVhZGVyIyMucmVzdWx0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGNhbid0IGhhcHBlbjogY2FsbGVkIHdpdGggZ29vZCByZWFkQXNfICopXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBzKVxuICAgICAgICBlbHNlICgpO1xuICAgICAgICAoKiBDQ0MgVE9ETzogaGFuZGxlIGVycm9ycyAqKVxuICAgICAgICBKcy5fZmFsc2UpO1xuICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuICgpIC0+IHJlYWRlciMjYWJvcnQpO1xuICAobWF0Y2gga2luZCB3aXRoXG4gIHwgYEJpbmFyeVN0cmluZyAtPiByZWFkZXIjI3JlYWRBc0JpbmFyeVN0cmluZyBmaWxlXG4gIHwgYFRleHQgLT4gcmVhZGVyIyNyZWFkQXNUZXh0IGZpbGVcbiAgfCBgVGV4dF93aXRoRW5jb2RpbmcgZSAtPiByZWFkZXIjI3JlYWRBc1RleHRfd2l0aEVuY29kaW5nIGZpbGUgZVxuICB8IGBEYXRhVVJMIC0+IHJlYWRlciMjcmVhZEFzRGF0YVVSTCBmaWxlKTtcbiAgcmVzXG5cbmxldCByZWFkZXIga2luZCBmaWxlID0gcmVhZF93aXRoX2ZpbGVyZWFkZXIgZmlsZVJlYWRlciBraW5kIGZpbGVcblxubGV0IHJlYWRBc0JpbmFyeVN0cmluZyBmaWxlID0gcmVhZGVyIGBCaW5hcnlTdHJpbmcgZmlsZVxuXG5sZXQgcmVhZEFzVGV4dCBmaWxlID0gcmVhZGVyIGBUZXh0IGZpbGVcblxubGV0IHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIGZpbGUgZSA9IHJlYWRlciAoYFRleHRfd2l0aEVuY29kaW5nIGUpIGZpbGVcblxubGV0IHJlYWRBc0RhdGFVUkwgZmlsZSA9IHJlYWRlciBgRGF0YVVSTCBmaWxlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE3IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdFxuICBpbmNsdWRlIEx3dF94bWxIdHRwUmVxdWVzdFxuZW5kXG5cbm1vZHVsZSBGaWxlID0gc3RydWN0XG4gIGluY2x1ZGUgSnNfb2Zfb2NhbWwuRmlsZVxuICBpbmNsdWRlIEx3dF9maWxlXG5lbmRcblxubW9kdWxlIEpzb25wID0gTHd0X2pzb25wXG5tb2R1bGUgTHd0X2pzID0gTHd0X2pzXG5tb2R1bGUgTHd0X2pzX2V2ZW50cyA9IEx3dF9qc19ldmVudHNcbiIsIigqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCAqKVxuXG5pbmNsdWRlIFN0ZGxpYlxuXG5tb2R1bGUgSW5fY2hhbm5lbCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBPdXRfY2hhbm5lbCA9IHN0cnVjdCBlbmRcbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCogYmxpdF9zdHJpbmcgZG9lc24ndCBleGlzdCBpbiBbU3RkTGFiZWxzLkJ5dGVzXS4uLiAgKilcbmxldCBieXRlc19ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIEJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuOztcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gRm9ybWF0XG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuXG5sZXQgc2V4cF9vZl90IHQgPSB0XG5sZXQgdF9vZl9zZXhwIHQgPSB0XG5cbmxldCByZWMgY29tcGFyZV9saXN0IGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCByZXMgPSBjb21wYXJlIHggeSBpblxuICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IHhzIHlzXG5cbmFuZCBjb21wYXJlIGEgYiA9XG4gIGlmIGEgPT0gYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBdG9tIGEsIEF0b20gYiAtPiBTdHJpbmcuY29tcGFyZSBhIGJcbiAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICB8IExpc3QgYSwgTGlzdCBiIC0+IGNvbXBhcmVfbGlzdCBhIGIpXG47O1xuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyBvZiB0XG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiB0XG5cbm1vZHVsZSBQcmludGluZyA9IHN0cnVjdFxuICAoKiBEZWZhdWx0IGluZGVudGF0aW9uIGxldmVsIGZvciBodW1hbi1yZWFkYWJsZSBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCBkZWZhdWx0X2luZGVudCA9IHJlZiAxXG5cbiAgKCogRXNjYXBpbmcgb2Ygc3RyaW5ncyB1c2VkIGFzIGF0b21zIGluIFMtZXhwcmVzc2lvbnMgKilcblxuICBsZXQgbXVzdF9lc2NhcGUgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZW4gPSAwXG4gICAgfHxcbiAgICBsZXQgcmVjIGxvb3Agc3RyIGl4ID1cbiAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgIHwgJ1wiJyB8ICcoJyB8ICcpJyB8ICc7JyB8ICdcXFxcJyAtPiB0cnVlXG4gICAgICB8ICd8JyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICcjJyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICcjJyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICd8JyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICdcXDAwMCcgLi4gJ1xcMDMyJyB8ICdcXDEyNycgLi4gJ1xcMjU1JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gaXggPiAwICYmIGxvb3Agc3RyIChpeCAtIDEpXG4gICAgaW5cbiAgICBsb29wIHN0ciAobGVuIC0gMSlcbiAgOztcblxuICBsZXQgZXNjYXBlZCBzID1cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG5cbiAgICAgIDo9ICFuXG4gICAgICAgICArXG4gICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgICAgfCBfIC0+IDRcbiAgICBkb25lO1xuICAgIGlmICFuID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcycgPSBCeXRlcy5jcmVhdGUgIW4gaW5cbiAgICAgIG4gOj0gMDtcbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgICAgfCAnICcgLi4gJ34nIGFzIGMgLT4gQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgbGV0IGEgPSBDaGFyLmNvZGUgYyBpblxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwIG1vZCAxMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSBtb2QgMTApKSkpO1xuICAgICAgICBpbmNyIG5cbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMnKVxuICA7O1xuXG4gIGxldCBlc2Nfc3RyIHN0ciA9XG4gICAgbGV0IGVzdHIgPSBlc2NhcGVkIHN0ciBpblxuICAgIGxldCBlbGVuID0gU3RyaW5nLmxlbmd0aCBlc3RyIGluXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAoZWxlbiArIDIpIGluXG4gICAgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYzplc3RyIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MSB+bGVuOmVsZW47XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgMCAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIChlbGVuICsgMSkgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICA7O1xuXG4gIGxldCBpbmRleF9vZl9uZXdsaW5lIHN0ciBzdGFydCA9XG4gICAgdHJ5IFNvbWUgKFN0cmluZy5pbmRleF9mcm9tIHN0ciBzdGFydCAnXFxuJykgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggZW5kX3Bvc19vcHQgPVxuICAgIGxldCBlbmRfcG9zID1cbiAgICAgIG1hdGNoIGVuZF9wb3Nfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgfCBTb21lIGVuZF9wb3MgLT4gZW5kX3Bvc1xuICAgIGluXG4gICAgU3RyaW5nLnN1YiBzdHIgfnBvczppbmRleCB+bGVuOihlbmRfcG9zIC0gaW5kZXgpXG4gIDs7XG5cbiAgbGV0IGlzX29uZV9saW5lIHN0ciA9XG4gICAgbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgaW5kZXggLT4gaW5kZXggKyAxID0gU3RyaW5nLmxlbmd0aCBzdHJcbiAgOztcblxuICBsZXQgcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0ciA9XG4gICAgaWYgbm90IChtdXN0X2VzY2FwZSBzdHIpXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIHN0clxuICAgIGVsc2UgaWYgaXNfb25lX2xpbmUgc3RyXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIChlc2Nfc3RyIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpbmRleCA9XG4gICAgICAgIGxldCBuZXh0X25ld2xpbmUgPSBpbmRleF9vZl9uZXdsaW5lIHN0ciBpbmRleCBpblxuICAgICAgICBsZXQgbmV4dF9saW5lID0gZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggbmV4dF9uZXdsaW5lIGluXG4gICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY2FwZWQgbmV4dF9saW5lKTtcbiAgICAgICAgbWF0Y2ggbmV4dF9uZXdsaW5lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBuZXdsaW5lX2luZGV4IC0+XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxcIjtcbiAgICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXG5cIjtcbiAgICAgICAgICBsb29wIChuZXdsaW5lX2luZGV4ICsgMSlcbiAgICAgIGluXG4gICAgICBwcF9vcGVuX2JveCBwcGYgMDtcbiAgICAgICgqIHRoZSBsZWFkaW5nIHNwYWNlIGlzIHRvIGxpbmUgdXAgdGhlIGxpbmVzICopXG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFxcXCJcIjtcbiAgICAgIGxvb3AgMDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFwiXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpKVxuICA7O1xuXG4gIGxldCBtYWNoX21heWJlX2VzY19zdHIgc3RyID0gaWYgbXVzdF9lc2NhcGUgc3RyIHRoZW4gZXNjX3N0ciBzdHIgZWxzZSBzdHJcblxuICAoKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmb3JtYXR0ZXJzICopXG5cbiAgbGV0IHJlYyBwcF9odW1faW5kZW50IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0clxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfb3Blbl9ib3ggcHBmIGluZGVudDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgTGlzdCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIlxuXG4gIGFuZCBwcF9odW1fcmVzdCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgcHBfcHJpbnRfc3BhY2UgcHBmICgpO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKVxuICA7O1xuXG4gIGxldCByZWMgcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFwiO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHInO1xuICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0O1xuICAgICAgZmFsc2VcbiAgICB8IExpc3QgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiO1xuICAgICAgZmFsc2VcblxuICBhbmQgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdFxuICAgIHwgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIlxuICA7O1xuXG4gIGxldCBwcF9odW0gcHBmIHNleHAgPSBwcF9odW1faW5kZW50ICFkZWZhdWx0X2luZGVudCBwcGYgc2V4cFxuICBsZXQgcHBfbWFjaCBwcGYgc2V4cCA9IGlnbm9yZSAocHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgc2V4cClcbiAgbGV0IHBwID0gcHBfbWFjaFxuXG4gICgqIFNleHAgc2l6ZSAqKVxuXG4gIGxldCByZWMgc2l6ZV9sb29wICgodiwgYykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiB2ICsgMSwgYyArIFN0cmluZy5sZW5ndGggc3RyXG4gICAgfCBMaXN0IGxzdCAtPiBMaXN0LmZvbGRfbGVmdCBsc3QgfmluaXQ6YWNjIH5mOnNpemVfbG9vcFxuICA7O1xuXG4gIGxldCBzaXplIHNleHAgPSBzaXplX2xvb3AgKDAsIDApIHNleHBcblxuICAoKiBCdWZmZXIgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fYnVmZmVyX2h1bSB+YnVmID8oaW5kZW50ID0gIWRlZmF1bHRfaW5kZW50KSBzZXhwID1cbiAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFAP1wiIChwcF9odW1faW5kZW50IGluZGVudCkgc2V4cFxuICA7O1xuXG4gIGxldCB0b19idWZmZXJfbWFjaCB+YnVmIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gIGxldCB0b19idWZmZXIgPSB0b19idWZmZXJfbWFjaFxuXG4gIGxldCB0b19idWZmZXJfZ2VuIH5idWYgfmFkZF9jaGFyIH5hZGRfc3RyaW5nIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBhZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICAoKiBUaGUgbWF4aW11bSBzaXplIG9mIGEgdGhpbmcgb24gdGhlIG1pbm9yIGhlYXAgaXMgMjU2IHdvcmRzLlxuICAgICBQcmV2aW91c2x5LCB0aGlzIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlciBoZXJlIHdhcyA0MDk2IGJ5dGVzLCB3aGljaFxuICAgICBjYXVzZWQgdGhlIEJ1ZmZlciB0byBiZSBhbGxvY2F0ZWQgb24gdGhlICptYWpvciogaGVhcCBldmVyeSB0aW1lLlxuXG4gICAgIEFjY29yZGluZyB0byBhIHNpbXBsZSBiZW5jaG1hcmsgYnkgUm9uLCB3ZSBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3JcbiAgICAgc21hbGwgcy1leHByZXNzaW9ucyBieSBhIGZhY3RvciBvZiB+NCBpZiB3ZSBvbmx5IGFsbG9jYXRlIDEwMjQgYnl0ZXNcbiAgICAgKDEyOCB3b3JkcyArIHNvbWUgc21hbGwgb3ZlcmhlYWQpIHdvcnRoIG9mIGJ1ZmZlciBpbml0aWFsbHkuICBBbmQgb25lXG4gICAgIGNhbiBhcmd1ZSB0aGF0IGlmIGl0J3MgZnJlZSB0byBhbGxvY2F0ZSBzdHJpbmdzIHNtYWxsZXIgdGhhbiAyNTYgd29yZHMsXG4gICAgIGxhcmdlIHMtZXhwcmVzc2lvbnMgcmVxdWlyaW5nIGxhcmdlciBleHBlbnNpdmUgYnVmZmVycyB3b24ndCBub3RpY2VcbiAgICAgdGhlIGV4dHJhIHR3byBkb3VibGluZ3MgZnJvbSAxMDI0IGJ5dGVzIHRvIDIwNDggYW5kIDQwOTYuIEFuZCBlc3BlY2lhbGx5XG4gICAgIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcHBsaWNhdGlvbnMgdG8gYWx3YXlzIHBhc3MgaW4gYSBsYXJnZXIgYnVmZmVyIHRvXG4gICAgIHVzZS4gKilcbiAgbGV0IGJ1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgMTAyNFxuXG4gICgqIFN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19zdHJpbmdfaHVtID9pbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHJcbiAgICAgIHdoZW4gbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBfIC0+IGZhbHNlIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9odW0gP2luZGVudCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19tYWNoID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX21hY2hcbmVuZFxuXG5pbmNsdWRlIFByaW50aW5nXG5cbmxldCBvZl9mbG9hdF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xubGV0IG9mX2ludF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFByaW50aW5nXG5lbmRcblxubGV0IG1lc3NhZ2UgbmFtZSBmaWVsZHMgPVxuICBsZXQgcmVjIGNvbnZfZmllbGRzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoZm5hbWUsIGZzZXhwKSA6OiByZXN0IC0+XG4gICAgICAobWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgIHwgXCJcIiAtPiBmc2V4cCA6OiBjb252X2ZpZWxkcyByZXN0XG4gICAgICAgfCBfIC0+IExpc3QgWyBBdG9tIGZuYW1lOyBmc2V4cCBdIDo6IGNvbnZfZmllbGRzIHJlc3QpXG4gIGluXG4gIExpc3QgKEF0b20gbmFtZSA6OiBjb252X2ZpZWxkcyBmaWVsZHMpXG47O1xuIiwiKCoqIFJlcHJlc2VudGF0aW9uIG9mIFMtZXhwcmVzc2lvbiBncmFtbWFycyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIHJlcHJlc2VudGF0aW9uIGZvciBzLWV4cHJlc3Npb24gZ3JhbW1hcnMuIFVzaW5nIHBweF9zZXhwX2NvbnZcbiAgICBhbmQgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHByb2R1Y2VzIGEgZ3JhbW1hciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVyaXZlZFxuICAgIFtvZl9zZXhwXSBmb3IgYSBnaXZlbiB0eXBlLlxuXG4gICAgQXMgd2l0aCBvdGhlciBkZXJpdmVkIGRlZmluaXRpb25zLCBwb2x5bW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFcbiAgICBncmFtbWFyIGZvciBlYWNoIHR5cGUgYXJndW1lbnQgYW5kIHByb2R1Y2VzIGEgZ3JhbW1hciBmb3IgdGhlIG1vbm9tb3JwaGl6ZWQgdHlwZS5cblxuICAgIE1vbm9tb3JwaGljIHR5cGVzIGRlcml2ZSBhIGdyYW1tYXIgZGlyZWN0bHkuIFRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMsXG4gICAgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHdyYXBzIGdyYW1tYXJzIGluIHRoZSBbTGF6eV0gY29uc3RydWN0b3IgYXMgbmVlZGVkLlxuXG4gICAgVGhpcyB0eXBlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lIGFzIG91ciBuZWVkcyBmb3IgZXhwcmVzc2l2ZSBncmFtbWFycyBjaGFuZ2UuIFdlIHdpbGxcbiAgICBhdHRlbXB0IHRvIG1ha2UgY2hhbmdlcyBiYWNrd2FyZC1jb21wYXRpYmxlLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgcmVhc29uYWJsZSB1cGdyYWRlXG4gICAgcGF0aC4gKilcblxuW0BAQHdhcm5pbmcgXCItMzBcIl0gKCogYWxsb3cgZHVwbGljYXRlIGZpZWxkIG5hbWVzICopXG5cbigqKiBHcmFtbWFyIG9mIGEgc2V4cC4gKilcbnR5cGUgZ3JhbW1hciA9XG4gIHwgQW55IG9mIHN0cmluZyAoKiogYWNjZXB0cyBhbnkgc2V4cDsgc3RyaW5nIGlzIGEgdHlwZSBuYW1lIGZvciBodW1hbiByZWFkYWJpbGl0eSAqKVxuICB8IEJvb2wgKCoqIGFjY2VwdHMgdGhlIGF0b21zIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgbW9kdWxvIGNhcGl0YWxpemF0aW9uICopXG4gIHwgQ2hhciAoKiogYWNjZXB0cyBhbnkgc2luZ2xlLWNoYXJhY3RlciBhdG9tICopXG4gIHwgSW50ZWdlciAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBpbnRlZ2VyIHN5bnRheCwgcmVnYXJkbGVzcyBvZiBiaXQgd2lkdGggKilcbiAgfCBGbG9hdCAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBmbG9hdCBzeW50YXggKilcbiAgfCBTdHJpbmcgKCoqIGFjY2VwdHMgYW55IGF0b20gKilcbiAgfCBPcHRpb24gb2YgZ3JhbW1hciAoKiogYWNjZXB0cyBhbiBvcHRpb24sIGJvdGggW05vbmVdIHZzIFtTb21lIF9dIGFuZCBbKCldIHZzIFsoXyldLiAqKVxuICB8IExpc3Qgb2YgbGlzdF9ncmFtbWFyICgqKiBhY2NlcHRzIGEgbGlzdCAqKVxuICB8IFZhcmlhbnQgb2YgdmFyaWFudCAoKiogYWNjZXB0cyBjbGF1c2VzIGtleWVkIGJ5IGEgbGVhZGluZyBvciBzb2xlIGF0b20gKilcbiAgfCBVbmlvbiBvZiBncmFtbWFyIGxpc3QgKCoqIGFjY2VwdHMgYSBzZXhwIGlmIGFueSBvZiB0aGUgbGlzdGVkIGdyYW1tYXJzIGFjY2VwdHMgaXQgKilcbiAgfCBUYWdnZWQgb2YgZ3JhbW1hciB3aXRoX3RhZ1xuICAoKiogYW5ub3RhdGVzIGEgZ3JhbW1hciB3aXRoIGEgY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyICopXG4gIHwgVHl2YXIgb2Ygc3RyaW5nXG4gICgqKiBOYW1lIG9mIGEgdHlwZSB2YXJpYWJsZSwgZS5nLiBbVHl2YXIgXCJhXCJdIGZvciBbJ2FdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgYm9keSBvZlxuICAgICAgdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW2RlZm5dIGRlZmluZXMgYSBjb3JyZXNwb25kaW5nIHR5cGUgdmFyaWFibGUuICopXG4gIHwgVHljb24gb2Ygc3RyaW5nICogZ3JhbW1hciBsaXN0XG4gICgqKiBUeXBlIGNvbnN0cnVjdG9yIGFwcGxpZWQgdG8gYXJndW1lbnRzLiBGb3IgZXhhbXBsZSwgW1R5Y29uIChcImxpc3RcIiwgWyBJbnRlZ2VyIF0pXVxuICAgICAgcmVwcmVzZW50cyBbaW50IGxpc3RdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbUmVjdXJzaXZlXVxuICAgICAgZ3JhbW1hciBkZWZpbmVzIGEgY29ycmVzcG9uZGluZyB0eXBlIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlY3Vyc2l2ZSBvZiBncmFtbWFyICogZGVmbiBsaXN0XG4gICgqKiBbUmVjdXJzaXZlIChncmFtbWFyLCBkZWZpbml0aW9ucyldIGFsbG93cyBbZ3JhbW1hcl0gdG8gcmVmZXIgdG8gdHlwZSBjb25zdHJ1Y3RvcnNcbiAgICAgIGZyb20gdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSBbZGVmaW5pdGlvbnNdLiBUaGUgZGVmaW5pdGlvbnMgbWF5IGFsc28gcmVmZXIgdG8gZWFjaFxuICAgICAgb3RoZXJzJyB0eXBlIGNvbnN0cnVjdG9ycy5cblxuICAgICAgT3JkaW5hcmlseSwgW2dyYW1tYXJdIGl0c2VsZiBpcyBqdXN0IGEgW1R5Y29uXSBhcmd1bWVudCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgaXQgY2FuXG4gICAgICBiZSBhbnkgZ3JhbW1hci5cblxuICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgZGVmaW5lIGEgYmluYXJ5IHRyZWUgcGFyYW1ldGVyaXplZCBieSBhIHR5cGVcbiAgICAgIHN0b3JlZCBhdCBpdHMgbGVhdmVzLlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgZGVmbnMgPVxuICAgICAgICAgIFsgeyB0eWNvbiA9IFwidHJlZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJub2RlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gTGlzdCAoTWFueSAoVHljb24gXCJ0cmVlXCIsIFtUeXZhciBcImFcIl0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibGVhZlwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IFtUeXZhciBcImFcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDs7XG4gICAgICBdfVxuXG4gICAgICBOb3JtYWxseSwgdGhlIHR5cGUgb2YgYSB0cmVlIHN0b3JpbmcgaW50ZWdlcnMgd291bGQgYmUgd3JpdHRlbiBsaWtlIHRoaXM6XG5cbiAgICAgIHtbXG4gICAgICAgIFJlY3Vyc2l2ZSAoVHljb24gKFwidHJlZVwiLCBbIEludGVnZXIgXSksIGRlZm5zKVxuICAgICAgXX1cblxuICAgICAgSXQgaXMgZXF1aXZhbGVudCwgdGhvdWdoIG5lZWRsZXNzbHkgdmVyYm9zZSwgdG8gcmVwbGFjZSB0aGUgW1R5Y29uXSByZWZlcmVuY2Ugd2l0aFxuICAgICAgdGhlIGdyYW1tYXIgb2YgW1widHJlZVwiXSwgc3Vic3RpdHV0aW5nIFtJbnRlZ2VyXSBmb3IgW1R5dmFyIFwiYVwiXTpcblxuICAgICAge1tcbiAgICAgICAgUmVjdXJzaXZlXG4gICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJUcmVlXCJcbiAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICwgZGVmbnMgKVxuICAgICAgXX1cbiAgKilcbiAgfCBMYXp5IG9mIGdyYW1tYXIgbGF6eV90XG4gICgqKiBMYXppbHkgY29tcHV0ZWQgZ3JhbW1hci4gVXNlIFtMYXp5XSB0byBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLiBUbyBkZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZSBncmFtbWFycywgdXNlIFtSZWN1cnNpdmVdIGluc3RlYWQuICopXG5cbigqKiBHcmFtbWFyIG9mIGEgbGlzdCBvZiBzZXhwcy4gKilcbmFuZCBsaXN0X2dyYW1tYXIgPVxuICB8IEVtcHR5ICgqKiBhY2NlcHRzIGFuIGVtcHR5IGxpc3Qgb2Ygc2V4cHMgKilcbiAgfCBDb25zIG9mIGdyYW1tYXIgKiBsaXN0X2dyYW1tYXJcbiAgKCoqIGFjY2VwdHMgYSBub24tZW1wdHkgbGlzdCB3aXRoIGhlYWQgYW5kIHRhaWwgbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXJzICopXG4gIHwgTWFueSBvZiBncmFtbWFyICgqKiBhY2NlcHRzIHplcm8gb3IgbW9yZSBzZXhwcywgZWFjaCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hciAqKVxuICB8IEZpZWxkcyBvZiByZWNvcmQgKCoqIGFjY2VwdHMgc2V4cHMgcmVwcmVzZW50aW5nIGZpZWxkcyBvZiBhIHJlY29yZCAqKVxuXG4oKiogQ2FzZSBzZW5zaXRpdml0eSBvcHRpb25zIGZvciBuYW1lcyBvZiB2YXJpYW50IGNvbnN0cnVjdG9ycy4gKilcbmFuZCBjYXNlX3NlbnNpdGl2aXR5ID1cbiAgfCBDYXNlX2luc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzZWQgZm9yIGN1c3RvbSBwYXJzZXJzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBVc2VkIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNhc2Ugc2Vuc2l0aXZlIGFmdGVyd2FyZC5cbiAgICAgIFVzZWQgZm9yIHJlZ3VsYXIgdmFyaWFudHMuICopXG5cbigqKiBHcmFtbWFyIG9mIHZhcmlhbnRzLiBBY2NlcHRzIGFueSBzZXhwIG1hdGNoaW5nIG9uZSBvZiB0aGUgY2xhdXNlcy4gKilcbmFuZCB2YXJpYW50ID1cbiAgeyBjYXNlX3NlbnNpdGl2aXR5IDogY2FzZV9zZW5zaXRpdml0eVxuICA7IGNsYXVzZXMgOiBjbGF1c2Ugd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UuIEFjY2VwdHMgc2V4cHMgYmFzZWQgb24gdGhlIFtjbGF1c2Vfa2luZF0uICopXG5hbmQgY2xhdXNlID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgY2xhdXNlX2tpbmQgOiBjbGF1c2Vfa2luZFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlJ3MgY29udGVudHMuIFtBdG9tX2NsYXVzZV0gYWNjZXB0cyBhbiBhdG9tIG1hdGNoaW5nXG4gICAgdGhlIGNsYXVzZSdzIG5hbWUuIFtMaXN0X2NsYXVzZV0gYWNjZXB0cyBhIGxpc3Qgd2hvc2UgaGVhZCBpcyBhbiBhdG9tIG1hdGNoaW5nIHRoZVxuICAgIGNsYXVzZSdzIG5hbWUgYW5kIHdob3NlIHRhaWwgbWF0Y2hlcyBbYXJnc10uIFRoZSBjbGF1c2UncyBuYW1lIGlzIG1hdGNoZWQgbW9kdWxvIHRoZVxuICAgIHZhcmlhbnQncyBbbmFtZV9raW5kXS4gKilcbmFuZCBjbGF1c2Vfa2luZCA9XG4gIHwgQXRvbV9jbGF1c2VcbiAgfCBMaXN0X2NsYXVzZSBvZiB7IGFyZ3MgOiBsaXN0X2dyYW1tYXIgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZC4gQWNjZXB0cyBhbnkgbGlzdCBvZiBzZXhwcyBzcGVjaWZ5aW5nIGVhY2ggb2YgdGhlIGZpZWxkcyxcbiAgICByZWdhcmRsZXNzIG9mIG9yZGVyLiBJZiBbYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBzcGVjaWZpZWQsIGlnbm9yZXMgc2V4cHMgd2l0aCBuYW1lc1xuICAgIG5vdCBmb3VuZCBpbiBbZmllbGRzXS4gKilcbmFuZCByZWNvcmQgPVxuICB7IGFsbG93X2V4dHJhX2ZpZWxkcyA6IGJvb2xcbiAgOyBmaWVsZHMgOiBmaWVsZCB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZCBmaWVsZC4gQSBmaWVsZCBtdXN0IHNob3cgdXAgZXhhY3RseSBvbmNlIGluIGEgcmVjb3JkIGlmXG4gICAgW3JlcXVpcmVkXSwgb3IgYXQgbW9zdCBvbmNlIG90aGVyd2lzZS4gQWNjZXB0cyBhIGxpc3QgaGVhZGVkIGJ5IFtuYW1lXSBhcyBhbiBhdG9tLFxuICAgIGZvbGxvd2VkIGJ5IHNleHBzIG1hdGNoaW5nIFthcmdzXS4gKilcbmFuZCBmaWVsZCA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IHJlcXVpcmVkIDogYm9vbFxuICA7IGFyZ3MgOiBsaXN0X2dyYW1tYXJcbiAgfVxuXG4oKiogR3JhbW1hciB0YWdnZWQgd2l0aCBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIuICopXG5hbmQgJ2Egd2l0aF90YWcgPVxuICB7IGtleSA6IHN0cmluZ1xuICA7IHZhbHVlIDogU2V4cC50XG4gIDsgZ3JhbW1hciA6ICdhXG4gIH1cblxuYW5kICdhIHdpdGhfdGFnX2xpc3QgPVxuICB8IFRhZyBvZiAnYSB3aXRoX3RhZ19saXN0IHdpdGhfdGFnXG4gIHwgTm9fdGFnIG9mICdhXG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbi4gTmFtZXMgdGhlIFt0eWNvbl0gYmVpbmcgZGVmaW5lZCwgYW5kIHRoZVxuICAgIFt0eXZhcnNdIGl0IHRha2VzIGFzIHBhcmFtZXRlcnMuIFNwZWNpZmllcyB0aGUgW2dyYW1tYXJdIG9mIHRoZSBbdHljb25dLiBUaGUgZ3JhbW1hclxuICAgIG1heSByZWZlciB0byBhbnkgb2YgdGhlIFt0eXZhcnNdLCBhbmQgdG8gYW55IG9mIHRoZSBbdHljb25dcyBmcm9tIHRoZSBzYW1lIHNldCBvZlxuICAgIFtSZWN1cnNpdmVdIGRlZmluaXRpb25zLiAqKVxuYW5kIGRlZm4gPVxuICB7IHR5Y29uIDogc3RyaW5nXG4gIDsgdHl2YXJzIDogc3RyaW5nIGxpc3RcbiAgOyBncmFtbWFyIDogZ3JhbW1hclxuICB9XG5cbigqKiBUb3AtbGV2ZWwgZ3JhbW1hciB0eXBlLiBIYXMgYSBwaGFudG9tIHR5cGUgcGFyYW1ldGVyIHRvIGFzc29jaWF0ZSBlYWNoIGdyYW1tYXIgd2l0aFxuICAgIHRoZSB0eXBlIGl0cyBzZXhwcyByZXByZXNlbnQuIFRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGFwcGx5IGdyYW1tYXJzIHRvIHRoZSB3cm9uZ1xuICAgIHR5cGUsIHdoaWxlIGdyYW1tYXJzIGNhbiBzdGlsbCBiZSBlYXNpbHkgY29lcmNlZCB0byBhIG5ldyB0eXBlIGlmIG5lZWRlZC4gKilcbnR5cGUgXyB0ID0geyB1bnR5cGVkIDogZ3JhbW1hciB9IFtAQHVuYm94ZWRdXG5cbmxldCBjb2VyY2UgKHR5cGUgYSBiKSAoeyB1bnR5cGVkID0gXyB9IGFzIHQgOiBhIHQpIDogYiB0ID0gdFxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaXMgdXNlZCBmb3IgYWxsIHRhZ3MgZ2VuZXJhdGVkIGZyb20gZG9jIGNvbW1lbnRzLiAqKVxubGV0IGRvY19jb21tZW50X3RhZyA9IFwic2V4cF9ncmFtbWFyLmRvY19jb21tZW50XCJcbiIsImxldCB1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IEVtcHR5IH1cbmxldCBib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBCb29sIH1cbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQ2hhciB9XG5sZXQgaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gRmxvYXQgfVxubGV0IGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgc2V4cF90X3NleHBfZ3JhbW1hciA6IFNleHAudCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIlNleHAudFwiIH1cbmxldCByZWZfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcblxubGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIG9wdGlvbiBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IE9wdGlvbiB1bnR5cGVkIH1cbjs7XG5cbmxldCBsaXN0X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gbGlzdCBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGFycmF5X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gYXJyYXkgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBlbXB0eV9zZXhwX2dyYW1tYXIgOiBfIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxubGV0IG9wYXF1ZV9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbmxldCBmdW5fc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG4iLCIoKiBVdGlsaXR5IE1vZHVsZSBmb3IgUy1leHByZXNzaW9uIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBcblxuKCogQ29udmVyc2lvbiBvZiBPQ2FtbC12YWx1ZXMgdG8gUy1leHByZXNzaW9ucyAqKVxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiAnJS4xN2cnIGlzIGd1YXJhbnRlZWQgdG8gYmUgcm91bmQtdHJpcHBhYmxlLlxuXG4gICAnJS4xNWcnIHdpbGwgYmUgcm91bmQtdHJpcHBhYmxlIGFuZCBub3QgaGF2ZSBub2lzZSBhdCB0aGUgbGFzdCBkaWdpdCBvciB0d28gZm9yIGEgZmxvYXRcbiAgIHdoaWNoIHdhcyBjb252ZXJ0ZWQgZnJvbSBhIGRlY2ltYWwgKHN0cmluZykgd2l0aCA8PSAxNSBzaWduaWZpY2FudCBkaWdpdHMuICBTbyBpdCdzXG4gICB3b3J0aCB0cnlpbmcgZmlyc3QgdG8gYXZvaWQgdGhpbmdzIGxpa2UgXCIzLjE0MDAwMDAwMDAwMDAwMDFcIi5cblxuICAgU2VlIGNvbW1lbnQgYWJvdmUgW3RvX3N0cmluZ19yb3VuZF90cmlwcGFibGVdIGluIHshQ29yZS5GbG9hdH0gZm9yXG4gICBkZXRhaWxlZCBleHBsYW5hdGlvbiBhbmQgZXhhbXBsZXMuICopXG5sZXQgZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgPVxuICByZWYgKGZ1biB4IC0+XG4gICAgbGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1R1wiIHggaW5cbiAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN0dcIiB4KVxuOztcblxubGV0IHJlYWRfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IHdyaXRlX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCBsaXN0X21hcCBmIGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGwgfmYpXG5sZXQgc2V4cF9vZl91bml0ICgpID0gTGlzdCBbXVxubGV0IHNleHBfb2ZfYm9vbCBiID0gQXRvbSAoc3RyaW5nX29mX2Jvb2wgYilcbmxldCBzZXhwX29mX3N0cmluZyBzdHIgPSBBdG9tIHN0clxubGV0IHNleHBfb2ZfYnl0ZXMgYnl0ZXMgPSBBdG9tIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgc2V4cF9vZl9jaGFyIGMgPSBBdG9tIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgc2V4cF9vZl9pbnQgbiA9IEF0b20gKHN0cmluZ19vZl9pbnQgbilcbmxldCBzZXhwX29mX2Zsb2F0IG4gPSBBdG9tICghZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgbilcbmxldCBzZXhwX29mX2ludDMyIG4gPSBBdG9tIChJbnQzMi50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX2ludDY0IG4gPSBBdG9tIChJbnQ2NC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX25hdGl2ZWludCBuID0gQXRvbSAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfcmVmIHNleHBfb2ZfX2EgcmYgPSBzZXhwX29mX19hICFyZlxubGV0IHNleHBfb2ZfbGF6eV90IHNleHBfb2ZfX2EgbHYgPSBzZXhwX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgWyBzZXhwX29mX19hIHggXVxuICB8IFNvbWUgeCAtPiBMaXN0IFsgQXRvbSBcInNvbWVcIjsgc2V4cF9vZl9fYSB4IF1cbiAgfCBOb25lIHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgW11cbiAgfCBOb25lIC0+IEF0b20gXCJub25lXCJcbjs7XG5cbmxldCBzZXhwX29mX3BhaXIgc2V4cF9vZl9fYSBzZXhwX29mX19iIChhLCBiKSA9IExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYiBdXG5cbmxldCBzZXhwX29mX3RyaXBsZSBzZXhwX29mX19hIHNleHBfb2ZfX2Igc2V4cF9vZl9fYyAoYSwgYiwgYykgPVxuICBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGI7IHNleHBfb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgc2V4cF9vZl9saXN0IHNleHBfb2ZfX2EgbHN0ID0gTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBsc3QgfmY6c2V4cF9vZl9fYSkpXG5cbmxldCBzZXhwX29mX2FycmF5IHNleHBfb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHNleHBfb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2hhc2h0Ymwgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IExpc3QgWyBzZXhwX29mX2tleSBrOyBzZXhwX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgc2V4cF9vZl9vcGFxdWUgXyA9IEF0b20gXCI8b3BhcXVlPlwiXG5sZXQgc2V4cF9vZl9mdW4gXyA9IEF0b20gXCI8ZnVuPlwiXG5cbigqIEV4Y2VwdGlvbiBjb252ZXJ0ZXIgcmVnaXN0cmF0aW9uIGFuZCBsb29rdXAgKilcblxubW9kdWxlIEV4bl9jb252ZXJ0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhlc2UgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgY29udGV4dC1zd2l0Y2hlc1xuICAgICBjYW5ub3QgaGFwcGVuIHVubGVzcyB0aGVyZSBpcyBhbiBhbGxvY2F0aW9uLiAgSXQgaXMgcmVhc29uYWJsZSB0byBleHBlY3RcbiAgICAgdGhhdCB0aGlzIHdpbGwgcmVtYWluIHRydWUgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuICBUaGF0IHdheSB3ZVxuICAgICBhdm9pZCB1c2luZyBtdXRleGVzIGFuZCB0aHVzIGEgZGVwZW5kZW5jeSBvbiB0aGUgdGhyZWFkcyBsaWJyYXJ5LiAqKVxuXG4gICgqIEZhc3QgYW5kIGF1dG9tYXRpYyBleGNlcHRpb24gcmVnaXN0cmF0aW9uICopXG5cbiAgbW9kdWxlIFJlZ2lzdHJhdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNleHBfb2ZfZXhuIDogZXhuIC0+IFNleHAudFxuICAgICAgOyAoKiBJZiBbcHJpbnRleGMgPSB0cnVlXSB0aGVuIHRoaXMgc2V4cCBjb252ZXJ0ZXIgaXMgdXNlZCBmb3IgUHJpbnRleGMudG9fc3RyaW5nICopXG4gICAgICAgIHByaW50ZXhjIDogYm9vbFxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgRXhuX3RhYmxlID0gRXBoZW1lcm9uLksxLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG5cbiAgICAgIGxldCBlcXVhbCA9ICggPT0gKVxuICAgICAgbGV0IGhhc2ggPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG4gICAgZW5kKVxuXG4gIGxldCB0aGVfZXhuX3RhYmxlIDogUmVnaXN0cmF0aW9uLnQgRXhuX3RhYmxlLnQgPSBFeG5fdGFibGUuY3JlYXRlIDE3XG5cbiAgKCogRXBoZW1lcm9ucyBhcmUgdXNlZCBzbyB0aGF0IFtzZXhwX29mX2V4bl0gY2xvc3VyZSBkb24ndCBrZWVwIHRoZVxuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgbGl2ZS4gKilcbiAgbGV0IGFkZCA/KHByaW50ZXhjID0gdHJ1ZSkgP2ZpbmFsaXNlOl8gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHNleHBfb2ZfZXhuID1cbiAgICBFeG5fdGFibGUuYWRkIHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH1cbiAgOztcblxuICBsZXQgZmluZF9hdXRvIH5mb3JfcHJpbnRleGMgZXhuID1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhuIGluXG4gICAgbWF0Y2ggRXhuX3RhYmxlLmZpbmRfb3B0IHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9IC0+XG4gICAgICAobWF0Y2ggZm9yX3ByaW50ZXhjLCBwcmludGV4YyB3aXRoXG4gICAgICAgfCBmYWxzZSwgXyB8IF8sIHRydWUgLT4gU29tZSAoc2V4cF9vZl9leG4gZXhuKVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3VuaXRfdGVzdHNfb25seSA9IHN0cnVjdFxuICAgIGxldCBzaXplICgpID0gKEV4bl90YWJsZS5zdGF0c19hbGl2ZSB0aGVfZXhuX3RhYmxlKS5udW1fYmluZGluZ3NcbiAgZW5kXG5lbmRcblxubGV0IHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4Yzp0cnVlIGV4blxubGV0IHNleHBfb2ZfZXhuX29wdCBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOmZhbHNlIGV4blxuXG5sZXQgc2V4cF9vZl9leG4gZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBMaXN0IFsgQXRvbSAoUHJpbnRleGMudG9fc3RyaW5nIGV4bikgXVxuICB8IFNvbWUgc2V4cCAtPiBzZXhwXG47O1xuXG5sZXQgZXhuX3RvX3N0cmluZyBlID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX2V4biBlKVxuXG4oKiB7W2V4Y2VwdGlvbiBCbGFoIFtAQGRlcml2aW5nIHNleHBdXX0gZ2VuZXJhdGVzIGEgY2FsbCB0byB0aGUgZnVuY3Rpb25cbiAgIFtFeG5fY29udmVydGVyLmFkZF0gZGVmaW5lZCBpbiB0aGlzIGZpbGUuICBTbyB3ZSBhcmUgZ3VhcmFudGVkIHRoYXQgYXMgc29vbiBhcyB3ZVxuICAgbWFyayBhbiBleGNlcHRpb24gYXMgc2V4cGFibGUsIHRoaXMgbW9kdWxlIHdpbGwgYmUgbGlua2VkIGluIGFuZCB0aGlzIHByaW50ZXIgd2lsbCBiZVxuICAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiAqKVxubGV0ICgpID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGV4biAtPlxuICAgIG1hdGNoIHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBzZXhwIC0+IFNvbWUgKFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cCkpXG47O1xuXG5sZXQgcHJpbnRleGNfcHJlZmVyX3NleHAgZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBQcmludGV4Yy50b19zdHJpbmcgZXhuXG4gIHwgU29tZSBzZXhwIC0+IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cFxuOztcblxuKCogQ29udmVyc2lvbiBvZiBTLWV4cHJlc3Npb25zIHRvIE9DYW1sLXZhbHVlcyAqKVxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IFNleHAuT2Zfc2V4cF9lcnJvclxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhjIHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSlcbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChGYWlsdXJlIHdoYXQsIHNleHApKVxuXG5sZXQgdW5pdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+ICgpXG4gIHwgQXRvbSBfIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJ1bml0X29mX3NleHA6IGVtcHR5IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJvb2xfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSAoXCJ0cnVlXCIgfCBcIlRydWVcIikgLT4gdHJ1ZVxuICB8IEF0b20gKFwiZmFsc2VcIiB8IFwiRmFsc2VcIikgLT4gZmFsc2VcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogdW5rbm93biBzdHJpbmdcIiBzZXhwXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHN0cmluZ19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInN0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBieXRlc19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJieXRlc19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjaGFyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHNleHA7XG4gICAgc3RyLlswXVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGludF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgZmxvYXRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiZmxvYXRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDMyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQzMi5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQzMl9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50MzJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50NjRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDY0Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDY0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQ2NF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJuYXRpdmVpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm5hdGl2ZWludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCByZWZfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSByZWYgKGFfX29mX3NleHAgc2V4cClcbmxldCBsYXp5X3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSBMYXp5LmZyb21fdmFsIChhX19vZl9zZXhwIHNleHApXG5cbmxldCBvcHRpb25fb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBpZiAhcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdFxuICB0aGVuIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgW10gfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgZWwgXSB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IHJlcHJlc2VudCBvcHRpb25hbCB2YWx1ZVwiIHNleHBcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHApXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgYmUgKHNvbWUgZWwpXCIgc2V4cClcbjs7XG5cbmxldCBwYWlyX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgYSwgYlxuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdHdvIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHRyaXBsZV9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBjX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHA7IGNfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBsZXQgYyA9IGNfX29mX3NleHAgY19zZXhwIGluXG4gICAgYSwgYiwgY1xuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0aHJlZSBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGxpc3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl9zZXhwIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwibGlzdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBhcnJheV9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gW3x8XVxuICB8IExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3NleHAgaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYXJyYXlfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaGFzaHRibF9vZl9zZXhwIGtleV9vZl9zZXhwIHZhbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBMaXN0IFsga19zZXhwOyB2X3NleHAgXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl9zZXhwIGtfc2V4cCkgfmRhdGE6KHZhbF9vZl9zZXhwIHZfc2V4cClcbiAgICAgIHwgTGlzdCBfIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IHR1cGxlIGxpc3QgbmVlZGVkXCIgc2V4cFxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBvcGFxdWVfb2Zfc2V4cCBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciBcIm9wYXF1ZV9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgc2V4cFxuOztcblxubGV0IGZ1bl9vZl9zZXhwIHNleHAgPSBvZl9zZXhwX2Vycm9yIFwiZnVuX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHNleHBcblxuKCogU2V4cCBHcmFtbWFycyAqKVxuXG5pbmNsdWRlIFNleHBfY29udl9ncmFtbWFyXG5cbigqIFJlZ2lzdGVyaW5nIGRlZmF1bHQgZXhjZXB0aW9uIHByaW50ZXJzICopXG5cbmxldCBnZXRfZmxjX2Vycm9yIG5hbWUgKGZpbGUsIGxpbmUsIGNocikgPSBBdG9tIChzcHJpbnRmIFwiJXMgJXM6JWQ6JWRcIiBuYW1lIGZpbGUgbGluZSBjaHIpXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4YzpmYWxzZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFzc2VydF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFzc2VydF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiQXNzZXJ0X2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4aXRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRXhpdCAtPiBBdG9tIFwiRXhpdFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFbmRfb2ZfZmlsZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFbmRfb2ZfZmlsZSAtPiBBdG9tIFwiRW5kX29mX2ZpbGVcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBGYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZCAtPiBBdG9tIFwiTm90X2ZvdW5kXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEludmFsaWRfYXJndW1lbnRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhcmcgLT4gTGlzdCBbIEF0b20gXCJJbnZhbGlkX2FyZ3VtZW50XCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hdGNoX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTWF0Y2hfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIk1hdGNoX2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF9zXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZF9zIGFyZyAtPiBMaXN0IFsgQXRvbSBcIk5vdF9mb3VuZF9zXCI7IGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXNfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzX2Vycm9yIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlN5c19lcnJvclwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuSGVscF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuSGVscCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuSGVscFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuQmFkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5CYWQgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkJhZFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBMYXp5LlVuZGVmaW5lZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBMYXp5LlVuZGVmaW5lZCAtPiBBdG9tIFwiTGF6eS5VbmRlZmluZWRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2luZy5QYXJzZV9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEF0b20gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFF1ZXVlLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFF1ZXVlLkVtcHR5IC0+IEF0b20gXCJRdWV1ZS5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTY2FuZi5TY2FuX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlNjYW5mLlNjYW5fZmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTdGFjay5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTdGFjay5FbXB0eSAtPiBBdG9tIFwiU3RhY2suRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzLkJyZWFrXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5cy5CcmVhayAtPiBBdG9tIFwiU3lzLkJyZWFrXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOnRydWUgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkgLT5cbiAgICAgICAgICBMaXN0IFsgQXRvbSBcIlNleHBsaWIuQ29udi5PZl9zZXhwX2Vycm9yXCI7IHNleHBfb2ZfZXhuIGV4Yzsgc2V4cCBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFMtZXhwcmVzc2lvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBfY29udlxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3JcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4gc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlc19vZl9zZXhwOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgc2V4cCA9XG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgc2V4cFxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc2V4cF9ib29sX3dpdGhfcGF5bG9hZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvYyBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBhIFtzZXhwLmJvb2xdIGZpZWxkIHdhcyBnaXZlbiBhIHBheWxvYWQuXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogb25seSBwYWlycyBleHBlY3RlZCwgdGhlaXIgZmlyc3QgZWxlbWVudCBtdXN0IGJlIGFuIFxcXG4gICAgICAgYXRvbVwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHNleHAgbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl9zZXhwOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHNleHAgPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2Zfc2V4cDogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBmaWVsZHNcIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHNleHBcbjs7XG4iLCIoKiogUHJpbWl0aXZlcyBmb3IgcG9seW1vcnBoaWMgY29tcGFyZS4gKilcblxuKCpfIFBvbHltb3JwaGljIGNvbXBpbGVyIHByaW1pdGl2ZXMgY2FuJ3QgYmUgYWxpYXNlcyBhcyB0aGlzIGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAgaW5saW5pbmcuIChJZiBhbGlhc2VkIHdpdGhvdXQgYSB0eXBlIGFubm90YXRpb24sIHRoZSBjb21waWxlciB3b3VsZCBpbXBsZW1lbnQgdGhlbVxuICB1c2luZyB0aGUgZ2VuZXJpYyBjb2RlIGRvaW5nIGEgQyBjYWxsLCBhbmQgaXQncyB0aGlzIGNvZGUgdGhhdCB3b3VsZCBiZSBpbmxpbmVkLikgQXMgYVxuICByZXN1bHQgd2UgaGF2ZSB0byBjb3B5IHRoZSBbZXh0ZXJuYWwgLi4uXSBkZWNsYXJhdGlvbiBoZXJlLiAqKVxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBhc2NlbmRpbmcgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbmxldCBtYXggPSBDYW1sLm1heFxubGV0IG1pbiA9IENhbWwubWluXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBbSW1wb3J0XS4gIEl0IGlzIGFpbWVkIGF0IG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIHN0YW5kYXJkXG4gICBjb21iaW5hdG9ycyBmb3IgW3NleHBfb2ZdLCBbb2Zfc2V4cF0sIFtjb21wYXJlXSBhbmQgW2hhc2hdIGFuZCBhcmUgaW5jbHVkZWQgaW5cbiAgIFtJbXBvcnRdLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAoKiBUaGVzZSBtb2R1bGVzIGFyZSByZWRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG50eXBlICdhIHJlZiA9ICdhIENhbWwucmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG4oKiBSZXNodWZmbGUgW0NhbWxdIHNvIHRoYXQgd2UgY2hvb3NlIHRoZSBtb2R1bGVzIHVzaW5nIGxhYmVscyB3aGVuIGF2YWlsYWJsZS4gKilcbm1vZHVsZSBDYW1sID0gc3RydWN0XG5cbiAgaW5jbHVkZSBDYW1sXG5cbiAgbW9kdWxlIEFyZyA9IENhbWwuQXJnICgqKiBAY2Fub25pY2FsIENhbWwuQXJnICopXG5cbiAgbW9kdWxlIEFycmF5ID0gQ2FtbC5TdGRMYWJlbHMuQXJyYXkgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuQXJyYXkgKilcblxuICBtb2R1bGUgQm9vbCA9IENhbWwuQm9vbCAoKiogQGNhbm9uaWNhbCBDYW1sLkJvb2wgKilcblxuICBtb2R1bGUgQnVmZmVyID0gQ2FtbC5CdWZmZXIgKCoqIEBjYW5vbmljYWwgQ2FtbC5CdWZmZXIgKilcblxuICBtb2R1bGUgQnl0ZXMgPSBDYW1sLlN0ZExhYmVscy5CeXRlcyAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5CeXRlcyAqKVxuXG4gIG1vZHVsZSBDaGFyID0gQ2FtbC5DaGFyICgqKiBAY2Fub25pY2FsIENhbWwuQ2hhciAqKVxuXG4gIG1vZHVsZSBFcGhlbWVyb24gPSBDYW1sLkVwaGVtZXJvbiAoKiogQGNhbm9uaWNhbCBDYW1sLkVwaGVtZXJvbiAqKVxuXG4gIG1vZHVsZSBGbG9hdCA9IENhbWwuRmxvYXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5GbG9hdCAqKVxuXG4gIG1vZHVsZSBGb3JtYXQgPSBDYW1sLkZvcm1hdCAoKiogQGNhbm9uaWNhbCBDYW1sLkZvcm1hdCAqKVxuXG4gIG1vZHVsZSBGdW4gPSBDYW1sLkZ1biAoKiogQGNhbm9uaWNhbCBDYW1sLkZ1biAqKVxuXG4gIG1vZHVsZSBHYyA9IENhbWwuR2MgKCoqIEBjYW5vbmljYWwgQ2FtbC5HYyAqKVxuXG4gIG1vZHVsZSBIYXNodGJsID0gQ2FtbC5Nb3JlTGFiZWxzLkhhc2h0YmwgKCoqIEBjYW5vbmljYWwgQ2FtbC5Nb3JlTGFiZWxzLkhhc2h0YmwgKilcblxuICBtb2R1bGUgSW50MzIgPSBDYW1sLkludDMyICgqKiBAY2Fub25pY2FsIENhbWwuSW50MzIgKilcblxuICBtb2R1bGUgSW50ID0gQ2FtbC5JbnQgKCoqIEBjYW5vbmljYWwgQ2FtbC5JbnQgKilcblxuICBtb2R1bGUgSW50NjQgPSBDYW1sLkludDY0ICgqKiBAY2Fub25pY2FsIENhbWwuSW50NjQgKilcblxuICBtb2R1bGUgTGF6eSA9IENhbWwuTGF6eSAoKiogQGNhbm9uaWNhbCBDYW1sLkxhenkgKilcblxuICBtb2R1bGUgTGV4aW5nID0gQ2FtbC5MZXhpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5MZXhpbmcgKilcblxuICBtb2R1bGUgTGlzdCA9IENhbWwuU3RkTGFiZWxzLkxpc3QgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuTGlzdCAqKVxuXG4gIG1vZHVsZSBNYXAgPSBDYW1sLk1vcmVMYWJlbHMuTWFwICgqKiBAY2Fub25pY2FsIENhbWwuTW9yZUxhYmVscy5NYXAgKilcblxuICBtb2R1bGUgTmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQgKCoqIEBjYW5vbmljYWwgQ2FtbC5OYXRpdmVpbnQgKilcblxuICBtb2R1bGUgT2JqID0gQ2FtbC5PYmogKCoqIEBjYW5vbmljYWwgQ2FtbC5PYmogKilcblxuICBtb2R1bGUgT3B0aW9uID0gQ2FtbC5PcHRpb24gKCoqIEBjYW5vbmljYWwgQ2FtbC5PcHRpb24gKilcblxuICBtb2R1bGUgUGFyc2luZyA9IENhbWwuUGFyc2luZyAoKiogQGNhbm9uaWNhbCBDYW1sLlBhcnNpbmcgKilcblxuICBtb2R1bGUgUHJpbnRleGMgPSBDYW1sLlByaW50ZXhjICgqKiBAY2Fub25pY2FsIENhbWwuUHJpbnRleGMgKilcblxuICBtb2R1bGUgUHJpbnRmID0gQ2FtbC5QcmludGYgKCoqIEBjYW5vbmljYWwgQ2FtbC5QcmludGYgKilcblxuICBtb2R1bGUgUXVldWUgPSBDYW1sLlF1ZXVlICgqKiBAY2Fub25pY2FsIENhbWwuUXVldWUgKilcblxuICBtb2R1bGUgUmFuZG9tID0gQ2FtbC5SYW5kb20gKCoqIEBjYW5vbmljYWwgQ2FtbC5SYW5kb20gKilcblxuICBtb2R1bGUgUmVzdWx0ID0gQ2FtbC5SZXN1bHQgKCoqIEBjYW5vbmljYWwgQ2FtbC5SZXN1bHQgKilcblxuICBtb2R1bGUgU2NhbmYgPSBDYW1sLlNjYW5mICgqKiBAY2Fub25pY2FsIENhbWwuU2NhbmYgKilcblxuICBtb2R1bGUgU2VxID0gQ2FtbC5TZXEgKCoqIEBjYW5vbmljYWwgQ2FtbC5TZXEgKilcblxuICBtb2R1bGUgU2V0ID0gQ2FtbC5Nb3JlTGFiZWxzLlNldCAoKiogQGNhbm9uaWNhbCBDYW1sLk1vcmVMYWJlbHMuU2V0ICopXG5cbiAgbW9kdWxlIFN0YWNrID0gQ2FtbC5TdGFjayAoKiogQGNhbm9uaWNhbCBDYW1sLlN0YWNrICopXG5cbiAgbW9kdWxlIFN0cmluZyA9IENhbWwuU3RkTGFiZWxzLlN0cmluZyAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5TdHJpbmcgKilcblxuICBtb2R1bGUgU3lzID0gQ2FtbC5TeXMgKCoqIEBjYW5vbmljYWwgQ2FtbC5TeXMgKilcblxuICBtb2R1bGUgVWNoYXIgPSBDYW1sLlVjaGFyICgqKiBAY2Fub25pY2FsIENhbWwuVWNoYXIgKilcblxuICBtb2R1bGUgVW5pdCA9IENhbWwuVW5pdCAoKiogQGNhbm9uaWNhbCBDYW1sLlVuaXQgKilcblxuICBleGNlcHRpb24gTm90X2ZvdW5kID0gQ2FtbC5Ob3RfZm91bmRcbmVuZFxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuXG4oKiBXZSB1c2UgW09iai5tYWdpY10gaGVyZSBhcyBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZ2VuZXJhdGUgYSBjb25kaXRpb25hbCBqdW1wIGFuZCB0aGVcbiAgIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgaXMgbm90aWNlYWJsZS4gKilcbmxldCBib29sX3RvX2ludCAoeCA6IGJvb2wpIDogaW50ID0gQ2FtbC5PYmoubWFnaWMgeFxuXG4oKiBUaGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5ICopXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgKCAhPSApID0gQ2FtbC4oICE9IClcbmxldCAoICogKSA9IENhbWwuKCAqIClcbmxldCAoICoqICkgPSBDYW1sLiggKiogKVxubGV0ICggKi4gKSA9IENhbWwuKCAqLiApXG5sZXQgKCArICkgPSBDYW1sLiggKyApXG5sZXQgKCArLiApID0gQ2FtbC4oICsuIClcbmxldCAoIC0gKSA9IENhbWwuKCAtIClcbmxldCAoIC0uICkgPSBDYW1sLiggLS4gKVxubGV0ICggLyApID0gQ2FtbC4oIC8gKVxubGV0ICggLy4gKSA9IENhbWwuKCAvLiApXG5cbm1vZHVsZSBQb2x5ID0gUG9seTAgKCoqIEBjYW5vbmljYWwgQmFzZS5Qb2x5ICopXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBDYW1sLkludDMyLnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuSW50NjQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBib29sKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJvb2wpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJvb2wpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYm9vbCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBib29sKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGNoYXIpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogY2hhcikgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBjaGFyKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCBpIHggPSBDYW1sLlVjaGFyLnRvX2ludCB4XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIChpIHgpIChpIHkpXG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChpIHgpIChpIHkpXG4gIGxldCAoID4gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIChpIHgpIChpIHkpXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5hc2NlbmRpbmcgKGkgeCkgKGkgeSlcbiAgOztcblxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5kZXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgKGkgeCkgKGkgeSlcbiAgbGV0IGVxdWFsICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCAoaSB4KSAoaSB5KVxuICBsZXQgbWF4ICh4IDogQ2FtbC5VY2hhci50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuVWNoYXIudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBmbG9hdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogZmxvYXQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogZmxvYXQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogZmxvYXQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogc3RyaW5nKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogc3RyaW5nKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHN0cmluZykgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBieXRlcykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYnl0ZXMpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYnl0ZXMpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogYnl0ZXMpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIFRoaXMgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gc3BlY2lhbGl6ZSBpdCBhcyBhXG4gICBkaXJlY3Qgc2V0IG9yIGNhbWxfbW9kaWZ5ICopXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdvbid0IHVuYm94XG4gICByZWZlcmVuY2VzICopXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5cbmxldCAoIEAgKSA9IENhbWwuKCBAIClcbmxldCAoIF4gKSA9IENhbWwuKCBeIClcbmxldCAoIH4tICkgPSBDYW1sLiggfi0gKVxubGV0ICggfi0uICkgPSBDYW1sLiggfi0uIClcbmxldCAoIGFzciApID0gQ2FtbC4oIGFzciApXG5sZXQgKCBsYW5kICkgPSBDYW1sLiggbGFuZCApXG5sZXQgbG5vdCA9IENhbWwubG5vdFxubGV0ICggbG9yICkgPSBDYW1sLiggbG9yIClcbmxldCAoIGxzbCApID0gQ2FtbC4oIGxzbCApXG5sZXQgKCBsc3IgKSA9IENhbWwuKCBsc3IgKVxubGV0ICggbHhvciApID0gQ2FtbC4oIGx4b3IgKVxubGV0ICggbW9kICkgPSBDYW1sLiggbW9kIClcbmxldCBhYnMgPSBDYW1sLmFic1xubGV0IGZhaWx3aXRoID0gQ2FtbC5mYWlsd2l0aFxubGV0IGZzdCA9IENhbWwuZnN0XG5sZXQgaW52YWxpZF9hcmcgPSBDYW1sLmludmFsaWRfYXJnXG5sZXQgc25kID0gQ2FtbC5zbmRcblxuKCogW3JhaXNlXSBuZWVkcyB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIGFzIHRoZSBjb21waWxlciBhdXRvbWF0aWNhbGx5IHJlcGxhY2VzXG4gICAnJXJhaXNlJyBieSAnJXJlcmFpc2UnIHdoZW4gYXBwcm9wcmlhdGUuICopXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG5sZXQgcGh5c19lcXVhbCA9IENhbWwuKCA9PSApXG5sZXQgZGVjciA9IENhbWwuZGVjclxubGV0IGluY3IgPSBDYW1sLmluY3JcblxuKCogdXNlZCBieSBzZXhwX2NvbnYsIHdoaWNoIGZsb2F0MCBkZXBlbmRzIG9uIHRocm91Z2ggb3B0aW9uICopXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gQ2FtbC5mbG9hdF9vZl9zdHJpbmdcblxuKCogW2FtX3Rlc3RpbmddIGlzIHVzZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGluIHRlc3RpbmcgbW9kZSwgc3VjaFxuICAgYXMgaW4gW3JhbmRvbS5tbF0uICBbYW1fdGVzdGluZ10gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW0Jhc2VfYW1fdGVzdGluZ10sIGEgd2VhayBDL2pzXG4gICBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFtmYWxzZV0sIGJ1dCB3aGVuIGxpbmtpbmcgYW4gaW5saW5lLXRlc3QtcnVubmVyIGV4ZWN1dGFibGUsIGlzXG4gICBvdmVycmlkZGVuIGJ5IGFub3RoZXIgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbdHJ1ZV0uICopXG5leHRlcm5hbCBhbV90ZXN0aW5nIDogdW5pdCAtPiBib29sID0gXCJCYXNlX2FtX3Rlc3RpbmdcIlxuXG5sZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmcgKClcbiIsIm9wZW4hIEltcG9ydDBcbmluY2x1ZGUgQ2FtbC5QcmludGZcblxuKCoqIGZhaWx3aXRoLCBpbnZhbGlkX2FyZywgYW5kIGV4aXQgYWNjZXB0aW5nIHByaW50ZidzIGZvcm1hdC4gKilcblxubGV0IGZhaWx3aXRoZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gZmFpbHdpdGggcykgZm10XG5sZXQgaW52YWxpZF9hcmdmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBpbnZhbGlkX2FyZyBzKSBmbXRcbiIsIigqIFtTeXMwXSBkZWZpbmVzIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW0NhbWwuU3lzXS4gIFtTeXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtDYW1sLlN5c10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzeXMubWxcbiAgIHNob3VsZCB1c2UgW0NhbWwuU3lzXS4gW1N5czBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlXG4gICBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHRoZXNlXG4gICBmdW5jdGlvbnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN5c10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIFN5cyA9IFN5czBdLiAgRGVmaW5pbmcgW21vZHVsZSBTeXMgPSBTeXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlXG4gICBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN5c10uICopXG5cbm9wZW4hIEltcG9ydDBcblxudHlwZSBiYWNrZW5kX3R5cGUgPSBDYW1sLlN5cy5iYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG5cbmxldCBiYWNrZW5kX3R5cGUgPSBDYW1sLlN5cy5iYWNrZW5kX3R5cGVcbmxldCBpbnRlcmFjdGl2ZSA9IENhbWwuU3lzLmludGVyYWN0aXZlXG5sZXQgb3NfdHlwZSA9IENhbWwuU3lzLm9zX3R5cGVcbmxldCB1bml4ID0gQ2FtbC5TeXMudW5peFxubGV0IHdpbjMyID0gQ2FtbC5TeXMud2luMzJcbmxldCBjeWd3aW4gPSBDYW1sLlN5cy5jeWd3aW5cbmxldCB3b3JkX3NpemVfaW5fYml0cyA9IENhbWwuU3lzLndvcmRfc2l6ZVxubGV0IGludF9zaXplX2luX2JpdHMgPSBDYW1sLlN5cy5pbnRfc2l6ZVxubGV0IGJpZ19lbmRpYW4gPSBDYW1sLlN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSBDYW1sLlN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IG1heF9hcnJheV9sZW5ndGggPSBDYW1sLlN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5sZXQgcnVudGltZV92YXJpYW50ID0gQ2FtbC5TeXMucnVudGltZV92YXJpYW50XG5sZXQgcnVudGltZV9wYXJhbWV0ZXJzID0gQ2FtbC5TeXMucnVudGltZV9wYXJhbWV0ZXJzXG5sZXQgYXJndiA9IENhbWwuU3lzLmFyZ3ZcbmxldCBnZXRfYXJndiAoKSA9IENhbWwuU3lzLmFyZ3ZcbmxldCBvY2FtbF92ZXJzaW9uID0gQ2FtbC5TeXMub2NhbWxfdmVyc2lvblxubGV0IGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzID0gQ2FtbC5TeXMuZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcbmxldCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgPSBDYW1sLlN5cy5ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcblxubGV0IGdldGVudl9leG4gdmFyID1cbiAgdHJ5IENhbWwuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IENhbWwuTm90X2ZvdW5kIC0+XG4gICAgUHJpbnRmLmZhaWx3aXRoZiBcIlN5cy5nZXRlbnZfZXhuOiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBpcyBub3Qgc2V0XCIgdmFyICgpXG47O1xuXG5sZXQgZ2V0ZW52IHZhciA9XG4gIG1hdGNoIENhbWwuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxuZXhjZXB0aW9uIEJyZWFrID0gQ2FtbC5TeXMuQnJlYWtcbiIsIigqIFtBcnJheTBdIGRlZmluZXMgYXJyYXkgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zXG4gICBvZiBbQ2FtbC5BcnJheV0uICBbQXJyYXkwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuQXJyYXldXG4gICB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGFycmF5MC5tbCBzaG91bGQgdXNlIFtDYW1sLkFycmF5XS5cbiAgIFtBcnJheTBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGFycmF5cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQXJyYXldIGluIGJ1aWxkIG9yZGVyIHNob3VsZFxuICAgZG8gW21vZHVsZSBBcnJheSA9IEFycmF5MF0uICBUaGlzIGluY2x1ZGVzIHVzZXMgb2Ygc3Vic2NyaXB0IHN5bnRheCAoW3guKGkpXSwgW3guKGkpIDwtXG4gICBlXSksIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbQXJyYXkuZ2V0XSBhbmQgW0FycmF5LnNldF0uXG4gICBEZWZpbmluZyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb21cbiAgIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkFycmF5XS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuICBleHRlcm5hbCBnZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIHNldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgOiAgc3JjOidhIGFycmF5XG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6J2EgYXJyYXlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5lbmRcblxuaW5jbHVkZSBBcnJheVxuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgdHJ5IGNyZWF0ZSBsZW4geCB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZSB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW4gPVxuICB0cnkgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgbGVuIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGFwcGVuZCA9IENhbWwuQXJyYXkuYXBwZW5kXG5sZXQgYmxpdCA9IENhbWwuQXJyYXkuYmxpdFxubGV0IGNvbmNhdCA9IENhbWwuQXJyYXkuY29uY2F0XG5sZXQgY29weSA9IENhbWwuQXJyYXkuY29weVxubGV0IGZpbGwgPSBDYW1sLkFycmF5LmZpbGxcbmxldCBpbml0ID0gQ2FtbC5BcnJheS5pbml0XG5sZXQgbWFrZV9tYXRyaXggPSBDYW1sLkFycmF5Lm1ha2VfbWF0cml4XG5sZXQgb2ZfbGlzdCA9IENhbWwuQXJyYXkub2ZfbGlzdFxubGV0IHN1YiA9IENhbWwuQXJyYXkuc3ViXG5sZXQgdG9fbGlzdCA9IENhbWwuQXJyYXkudG9fbGlzdFxuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLkFycmF5LmZvbGRfbGVmdCB0IH5pbml0IH5mXG5sZXQgZm9sZF9yaWdodCB0IH5mIH5pbml0ID0gQ2FtbC5BcnJheS5mb2xkX3JpZ2h0IHQgfmYgfmluaXRcbmxldCBpdGVyIHQgfmYgPSBDYW1sLkFycmF5Lml0ZXIgdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBDYW1sLkFycmF5Lml0ZXJpIHQgfmZcbmxldCBtYXAgdCB+ZiA9IENhbWwuQXJyYXkubWFwIHQgfmZcbmxldCBtYXBpIHQgfmYgPSBDYW1sLkFycmF5Lm1hcGkgdCB+ZlxubGV0IHN0YWJsZV9zb3J0IHQgfmNvbXBhcmUgPSBDYW1sLkFycmF5LnN0YWJsZV9zb3J0IHQgfmNtcDpjb21wYXJlXG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGVsdF9pID0gdC4oaSkgaW5cbiAgbGV0IGVsdF9qID0gdC4oaikgaW5cbiAgdW5zYWZlX3NldCB0IGkgZWx0X2o7XG4gIHVuc2FmZV9zZXQgdCBqIGVsdF9pXG47O1xuIiwiKCogW0NoYXIwXSBkZWZpbmVzIGNoYXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbQ2FtbC5DaGFyXS4gIFtDaGFyMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkNoYXJdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGNoYXIwLm1sIHNob3VsZCB1c2UgW0NhbWwuQ2hhcl0uXG4gICBbQ2hhcjBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGNoYXJzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5DaGFyXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgQ2hhciA9IENoYXIwXS4gIERlZmluaW5nIFttb2R1bGUgQ2hhciA9IENoYXIwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkNoYXJdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5sZXQgZXNjYXBlZCA9IENhbWwuQ2hhci5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gQ2FtbC5DaGFyLmxvd2VyY2FzZV9hc2NpaVxubGV0IHRvX2ludCA9IENhbWwuQ2hhci5jb2RlXG5sZXQgdW5zYWZlX29mX2ludCA9IENhbWwuQ2hhci51bnNhZmVfY2hyXG5sZXQgdXBwZXJjYXNlID0gQ2FtbC5DaGFyLnVwcGVyY2FzZV9hc2NpaVxuXG4oKiBXZSB1c2Ugb3VyIG93biByYW5nZSB0ZXN0IHdoZW4gY29udmVydGluZyBpbnRlZ2VycyB0byBjaGFycyByYXRoZXIgdGhhblxuICAgY2FsbGluZyBbQ2FtbC5DaGFyLmNocl0gYmVjYXVzZSBpdCdzIHNpbXBsZSBhbmQgaXQgc2F2ZXMgdXMgYSBmdW5jdGlvbiBjYWxsXG4gICBhbmQgdGhlIHRyeS13aXRoIChleGNlcHRpb25zIGNvc3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdvcmxkIHdpdGggYmFja3RyYWNlcykuICopXG5sZXQgaW50X2lzX29rIGkgPSAwIDw9IGkgJiYgaSA8PSAyNTVcbmxldCBtaW5fdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDBcbmxldCBtYXhfdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDI1NVxubGV0IG9mX2ludCBpID0gaWYgaW50X2lzX29rIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2ZfaW50X2V4biBpID1cbiAgaWYgaW50X2lzX29rIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLm9mX2ludF9leG4gZ290IGludGVnZXIgb3V0IG9mIHJhbmdlOiAlZFwiIGkgKClcbjs7XG5cbmxldCBlcXVhbCAodDEgOiBjaGFyKSB0MiA9IFBvbHkuZXF1YWwgdDEgdDJcbiIsIigqIFtJbnQwXSBkZWZpbmVzIGludGVnZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbQ2FtbF0uIFtJbnQwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlXG4gICBwYXJ0IG9mIFtDYW1sXSB0aGF0IFtCYXNlXSB1c2VzIGZvciBpbnRlZ2VycyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gaW50MC5tbCBzaG91bGQgdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSB0aHJvdWdoIFtDYW1sXS4gW0ludDBdIGhhc1xuICAgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgaW50cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuSW50XSBpbiBidWlsZFxuICAgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgSW50ICA9IEludDBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgSW50ID0gSW50MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcFxuICAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5JbnRdLiAqKVxuXG5sZXQgdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfaW50XG5sZXQgb2Zfc3RyaW5nID0gQ2FtbC5pbnRfb2Zfc3RyaW5nXG5sZXQgdG9fZmxvYXQgPSBDYW1sLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0ID0gQ2FtbC5pbnRfb2ZfZmxvYXRcbmxldCBtYXhfdmFsdWUgPSBDYW1sLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBDYW1sLm1pbl9pbnRcbmxldCBzdWNjID0gQ2FtbC5zdWNjXG4iLCIoKiBbTGlzdDBdIGRlZmluZXMgbGlzdCBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtDYW1sLkxpc3RdLiAgW0xpc3QwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuTGlzdF0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gbGlzdDAubWwgc2hvdWxkIHVzZSBbQ2FtbC5MaXN0XS5cbiAgIFtMaXN0MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgbGlzdHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkxpc3RdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBMaXN0ID0gTGlzdDBdLiAgRGVmaW5pbmcgW21vZHVsZSBMaXN0ID0gTGlzdDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuTGlzdF0uICopXG5cbm9wZW4hIEltcG9ydDBcblxubGV0IGhkX2V4biA9IENhbWwuTGlzdC5oZFxubGV0IGxlbmd0aCA9IENhbWwuTGlzdC5sZW5ndGhcbmxldCByZXZfYXBwZW5kID0gQ2FtbC5MaXN0LnJldl9hcHBlbmRcbmxldCB0bF9leG4gPSBDYW1sLkxpc3QudGxcbmxldCB1bnppcCA9IENhbWwuTGlzdC5zcGxpdFxuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBleGlzdHMgdCB+ZiA9IENhbWwuTGlzdC5leGlzdHMgdCB+ZlxubGV0IGV4aXN0czJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuZXhpc3RzMiBsMSBsMiB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IENhbWwuTGlzdC5mb2xkX2xlZnQgdCB+ZiB+aW5pdFxubGV0IGZvbGQyX29rIGwxIGwyIH5pbml0IH5mID0gQ2FtbC5MaXN0LmZvbGRfbGVmdDIgbDEgbDIgfmluaXQgfmZcbmxldCBmb3JfYWxsIHQgfmYgPSBDYW1sLkxpc3QuZm9yX2FsbCB0IH5mXG5sZXQgZm9yX2FsbDJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuZm9yX2FsbDIgbDEgbDIgfmZcbmxldCBpdGVyIHQgfmYgPSBDYW1sLkxpc3QuaXRlciB0IH5mXG5sZXQgaXRlcjJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuaXRlcjIgbDEgbDIgfmZcbmxldCBub250YWlsX21hcCB0IH5mID0gQ2FtbC5MaXN0Lm1hcCB0IH5mXG5sZXQgbm9udGFpbF9tYXBpIHQgfmYgPSBDYW1sLkxpc3QubWFwaSB0IH5mXG5sZXQgcGFydGl0aW9uIHQgfmYgPSBDYW1sLkxpc3QucGFydGl0aW9uIHQgfmZcbmxldCByZXZfbWFwIHQgfmYgPSBDYW1sLkxpc3QucmV2X21hcCB0IH5mXG5sZXQgcmV2X21hcDJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QucmV2X21hcDIgbDEgbDIgfmZcbmxldCBzb3J0IGwgfmNvbXBhcmUgPSBDYW1sLkxpc3Quc29ydCBsIH5jbXA6Y29tcGFyZVxubGV0IHN0YWJsZV9zb3J0IGwgfmNvbXBhcmUgPSBDYW1sLkxpc3Quc3RhYmxlX3NvcnQgbCB+Y21wOmNvbXBhcmVcblxubGV0IHJldiA9IGZ1bmN0aW9uXG4gIHwgKFtdIHwgWyBfIF0pIGFzIHJlcyAtPiByZXNcbiAgfCB4IDo6IHkgOjogcmVzdCAtPiByZXZfYXBwZW5kIHJlc3QgWyB5OyB4IF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0IGwgfmYgfmluaXQgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfIC0+IGZvbGQgfmY6KGZ1biBhIGIgLT4gZiBiIGEpIH5pbml0IChyZXYgbClcbjs7XG4iLCIoKlxuICAgVGhpcyBpcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBydW50aW1lIHN1cHBvcnQgZm9yIFtwcHhfaGFzaF0uXG5cbiAgIFRoZSBbcHB4X2hhc2hdIHN5bnRheCBleHRlbnNpb24gc3VwcG9ydHM6IFtAQGRlcml2aW5nIGhhc2hdIGFuZCBbJWhhc2hfZm9sZDogVFlQRV0gYW5kXG4gICBbJWhhc2g6IFRZUEVdXG5cbiAgIEZvciB0eXBlIFt0XSBhIGZ1bmN0aW9uIFtoYXNoX2ZvbGRfdF0gb2YgdHlwZSBbSGFzaC5zdGF0ZSAtPiB0IC0+IEhhc2guc3RhdGVdIGlzXG4gICBnZW5lcmF0ZWQuXG5cbiAgIFRoZSBnZW5lcmF0ZWQgW2hhc2hfZm9sZF88VD5dIGZ1bmN0aW9uIGlzIGNvbXBvc2l0aW9uYWwsIGZvbGxvd2luZyB0aGUgc3RydWN0dXJlIG9mIHRoZVxuICAgdHlwZTsgYWxsb3dpbmcgdXNlciBvdmVycmlkZXMgYXQgZXZlcnkgbGV2ZWwuIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gb2NhbWwncyBidWlsdGluXG4gICBwb2x5bW9ycGhpYyBoYXNoaW5nIFtIYXNodGJsLmhhc2hdIHdoaWNoIGlnbm9yZXMgdXNlciBvdmVycmlkZXMuXG5cbiAgIFRoZSBnZW5lcmF0b3IgYWxzbyBwcm92aWRlcyBhIGRpcmVjdCBoYXNoLWZ1bmN0aW9uIFtoYXNoXSAobmFtZWQgW2hhc2hfPFQ+XSB3aGVuIDxUPiAhPVxuICAgXCJ0XCIpIG9mIHR5cGU6IFt0IC0+IEhhc2guaGFzaF92YWx1ZV0uXG5cbiAgIFRoZSBmb2xkaW5nIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaF9mb2xkOiBUWVBFXVxuICAgVGhlIGRpcmVjdCBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2g6IFRZUEVdXG4qKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBDaGFyID0gQ2hhcjBcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEhhc2hfaW50ZlxuXG4oKiogQnVpbHRpbiBmb2xkaW5nLXN0eWxlIGhhc2ggZnVuY3Rpb25zLCBhYnN0cmFjdGVkIG92ZXIgW0hhc2hfaW50Zi5TXSAqKVxubW9kdWxlIEZvbGRpbmcgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuQnVpbHRpbl9pbnRmXG4gIHdpdGggdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgaGFzaF9mb2xkX3VuaXQgcyAoKSA9IHNcbiAgbGV0IGhhc2hfZm9sZF9pbnQgPSBIYXNoLmZvbGRfaW50XG4gIGxldCBoYXNoX2ZvbGRfaW50NjQgPSBIYXNoLmZvbGRfaW50NjRcbiAgbGV0IGhhc2hfZm9sZF9mbG9hdCA9IEhhc2guZm9sZF9mbG9hdFxuICBsZXQgaGFzaF9mb2xkX3N0cmluZyA9IEhhc2guZm9sZF9zdHJpbmdcbiAgbGV0IGFzX2ludCBmIHMgeCA9IGhhc2hfZm9sZF9pbnQgcyAoZiB4KVxuXG4gICgqIFRoaXMgaWdub3JlcyB0aGUgc2lnbiBiaXQgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIHVubGlrZWx5IHRvIGxlYWQgdG9cbiAgICAgZnJlcXVlbnQgY29sbGlzaW9ucyAobWluX3ZhbHVlIGNvbGxpZGluZyB3aXRoIDAgaXMgdGhlIG1vc3QgbGlrZWx5IG9uZSkuICAqKVxuICBsZXQgaGFzaF9mb2xkX2ludDMyID0gYXNfaW50IENhbWwuSW50MzIudG9faW50XG4gIGxldCBoYXNoX2ZvbGRfY2hhciA9IGFzX2ludCBDaGFyLnRvX2ludFxuXG4gIGxldCBoYXNoX2ZvbGRfYm9vbCA9XG4gICAgYXNfaW50IChmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IDFcbiAgICAgIHwgZmFsc2UgLT4gMClcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX25hdGl2ZWludCBzIHggPSBoYXNoX2ZvbGRfaW50NjQgcyAoQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiBoYXNoX2ZvbGRfZWxlbSBzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gaGFzaF9mb2xkX2ludCBzIDBcbiAgICB8IFNvbWUgeCAtPiBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2ludCBzIDEpIHhcbiAgOztcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IHggOjogeHMgLT4gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyB4KSB4c1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgICgqIFRoZSBbbGVuZ3RoXSBvZiB0aGUgbGlzdCBtdXN0IGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBoYXNoLXN0YXRlIHNvIHZhbHVlcyBvZlxuICAgICAgIHR5cGVzIHN1Y2ggYXMgW3VuaXQgbGlzdF0gLSAoW10sIFsoKV0sIFsoKTsoKV0sLi4pIGFyZSBoYXNoZWQgZGlmZmVyZW50bHkuICopXG4gICAgKCogVGhlIFtsZW5ndGhdIG11c3QgY29tZSBiZWZvcmUgdGhlIGVsZW1lbnRzIHRvIGF2b2lkIGEgdmlvbGF0aW9uIG9mIHRoZSBydWxlXG4gICAgICAgZW5mb3JjZWQgYnkgUGVyZmVjdF9oYXNoLiAqKVxuICAgIGxldCBzID0gaGFzaF9mb2xkX2ludCBzIChMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIGxldCBzID0gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgaW5cbiAgICBzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9sYXp5X3QgaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAoQ2FtbC5MYXp5LmZvcmNlIHgpXG4gIGxldCBoYXNoX2ZvbGRfcmVmX2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzICF4XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gcyBhcnJheSBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIGFycmF5XG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZSA9IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSBpblxuICAgICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIGUpIGFycmF5IChpICsgMSkpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9hcnJheV9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyBhcnJheSA9XG4gICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pXG4gICAgICAoKiBbbGVuZ3RoXSBtdXN0IGJlIGluY29ycG9yYXRlZCBmb3IgYXJyYXlzLCBhcyBpdCBpcyBmb3IgbGlzdHMuIFNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBoYXNoX2ZvbGRfZWxlbVxuICAgICAgKGhhc2hfZm9sZF9pbnQgcyAoQXJyYXkubGVuZ3RoIGFycmF5KSlcbiAgICAgIGFycmF5XG4gICAgICAwXG4gIDs7XG5cbiAgKCogdGhlIGR1cGxpY2F0aW9uIGhlcmUgaXMgYmVjYXVzZSB3ZSB0aGlua1xuICAgICBvY2FtbCBjYW4ndCBlbGltaW5hdGUgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgb3RoZXJ3aXNlLiAqKVxuICBsZXQgaGFzaF9uYXRpdmVpbnQgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX25hdGl2ZWludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfaW50NjQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQ2NCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludDMyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50MzIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9jaGFyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfY2hhciAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2Jvb2wgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9ib29sIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcblxuICBsZXQgaGFzaF9zdHJpbmcgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3N0cmluZyAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZmxvYXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9mbG9hdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX3VuaXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF91bml0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbmVuZFxuXG5tb2R1bGUgRiAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5GdWxsXG4gIHdpdGggdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gICBhbmQgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIHNlZWQgPSBIYXNoLnNlZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IEZvbGRpbmcgKEhhc2gpXG5cbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChIYXNoLnJlc2V0ID9zZWVkIChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxoYXNoIDogc2lnXG4gIGluY2x1ZGVcbiAgICBIYXNoX2ludGYuU1xuICAgIHdpdGggdHlwZSBzdGF0ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnN0YXRlXG4gICAgICgqIFdlIGdpdmUgYSBjb25jcmV0ZSB0eXBlIGZvciBbc3RhdGVdLCBhbGJlaXQgb25seSBwYXJ0aWFsbHkgZXhwb3NlZCAoc2VlXG4gICAgICAgIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzKSwgc28gdGhhdCBpdCB1bmlmaWVzIHdpdGggdGhlIHNhbWUgdHlwZSBpbiBbQmFzZV9ib290XSxcbiAgICAgICAgYW5kIHRvIGFsbG93IG9wdGltaXphdGlvbnMgZm9yIHRoZSBpbW1lZGlhdGUgdHlwZS4gKilcbiAgICAgYW5kIHR5cGUgc2VlZCA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnNlZWRcbiAgICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLmhhc2hfdmFsdWVcblxuICBleHRlcm5hbCBmb2xkX2ludDY0IDogc3RhdGUgLT4gaW50NjQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfaW50IDogc3RhdGUgLT4gaW50IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9mbG9hdCA6IHN0YXRlIC0+IGZsb2F0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX3N0cmluZyA6IHN0YXRlIC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGdldF9oYXNoX3ZhbHVlIDogc3RhdGUgLT4gaGFzaF92YWx1ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcIlxuICBbQEBub2FsbG9jXVxuZW5kID0gc3RydWN0XG4gIGxldCBkZXNjcmlwdGlvbiA9IFwiaW50ZXJuYWxoYXNoXCJcblxuICBpbmNsdWRlIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzXG5cbiAgbGV0IGFsbG9jICgpID0gY3JlYXRlX3NlZWRlZCAwXG4gIGxldCByZXNldCA/KHNlZWQgPSAwKSBfdCA9IGNyZWF0ZV9zZWVkZWQgc2VlZFxuXG4gIG1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcGFyZV9zdGF0ZSAoYSA6IHN0YXRlKSAoYiA6IHN0YXRlKSA9IGNvbXBhcmUgKGEgOj4gaW50KSAoYiA6PiBpbnQpXG4gICAgbGV0IHN0YXRlX3RvX3N0cmluZyAoc3RhdGUgOiBzdGF0ZSkgPSBJbnQudG9fc3RyaW5nIChzdGF0ZSA6PiBpbnQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgSW50ZXJuYWxoYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPSBnZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChyZXNldCA/c2VlZCAoYWxsb2MgKCkpKSB4KVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRm9sZGluZyA9IEZvbGRpbmcgKEludGVybmFsaGFzaClcbiAgICBpbmNsdWRlIEZvbGRpbmdcblxuICAgICgqIFtGb2xkaW5nXSBwcm92aWRlcyBzb21lIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgW2hhc2hfKl0gZnVuY3Rpb25zIGJlbG93LFxuICAgICAgIGJ1dCB0aGV5IGFyZSBpbmVmZmljaWVudCBmb3Igc29tZSB1c2UtY2FzZXMgYmVjYXVzZSBvZiB0aGUgdXNlIG9mIHRoZSBbaGFzaF9mb2xkXVxuICAgICAgIGZ1bmN0aW9ucy4gQXQgdGhpcyBwb2ludCwgdGhlIFtoYXNoX3ZhbHVlXSB0eXBlIGhhcyBiZWVuIGZpeGVkIHRvIFtpbnRdLCBzbyB0aGlzXG4gICAgICAgbW9kdWxlIGNhbiBwcm92aWRlIHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucy4gKilcblxuICAgIGxldCBoYXNoX2NoYXIgPSBDaGFyMC50b19pbnRcblxuICAgICgqIFRoaXMgaGFzaCB3YXMgY2hvc2VuIGZyb20gaGVyZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYmFkYm95LzYyNjc3NDNcblxuICAgICAgIEl0IGF0dGVtcHRzIHRvIGZ1bGZpbGwgdGhlIHByaW1hcnkgZ29hbHMgb2YgYSBub24tY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uOlxuXG4gICAgICAgLSBhIGJpdCBjaGFuZ2UgaW4gdGhlIGlucHV0IHNob3VsZCBjaGFuZ2UgfjEvMiBvZiB0aGUgb3V0cHV0IGJpdHNcbiAgICAgICAtIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHVuaWZvcm1seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIG91dHB1dCByYW5nZVxuICAgICAgIC0gaW5wdXRzIHRoYXQgYXJlIGNsb3NlIHRvIGVhY2ggb3RoZXIgc2hvdWxkbid0IGxlYWQgdG8gb3V0cHV0cyB0aGF0IGFyZSBjbG9zZSB0b1xuICAgICAgICAgZWFjaCBvdGhlci5cbiAgICAgICAtIGFsbCBiaXRzIG9mIHRoZSBpbnB1dCBhcmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBvdXRwdXRcblxuICAgICAgIEluIG91ciBjYXNlIHdlIGFsc28gd2FudCBpdCB0byBiZSBmYXN0LCBub24tYWxsb2NhdGluZywgYW5kIGlubGluYWJsZS4gICopXG4gICAgbGV0W0BpbmxpbmUgYWx3YXlzXSBoYXNoX2ludCAodCA6IGludCkgPVxuICAgICAgbGV0IHQgPSBsbm90IHQgKyAodCBsc2wgMjEpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMykgKyAodCBsc2wgOCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAxNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAyKSArICh0IGxzbCA0KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI4KSBpblxuICAgICAgdCArICh0IGxzbCAzMSlcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfYm9vbCB4ID0gaWYgeCB0aGVuIDEgZWxzZSAwXG5cbiAgICBleHRlcm5hbCBoYXNoX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCJCYXNlX2hhc2hfZG91YmxlXCIgW0BAbm9hbGxvY11cblxuICAgIGxldCBoYXNoX3VuaXQgKCkgPSAwXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgVFxuIiwib3BlbiBJbXBvcnQwXG5cbmxldCBwaHlzX2VxdWFsID0gcGh5c19lcXVhbFxuXG5leHRlcm5hbCBwb2x5bW9ycGhpY19jb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBwb2x5bW9ycGhpY19lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuXG5sZXQgY29tcGFyZV9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJDb21wYXJlIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbmxldCBlcXVhbF9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJFcXVhbCBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG50eXBlICdhIGNvbXBhcmUgPSAnYSAtPiAnYSAtPiBpbnRcbnR5cGUgJ2EgZXF1YWwgPSAnYSAtPiAnYSAtPiBib29sXG5cbm1vZHVsZSBDb21wYXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjb21wYXJlIDogdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2EgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAoJ2EsICdiKSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAnYyBjb21wYXJlIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEVxdWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdhIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICgnYSwgJ2IpIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAnYyBlcXVhbCAtPiAoJ2EsICdiLCAnYykgdCBlcXVhbFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICBsZXQgY29tcGFyZV9ib29sIDogYm9vbCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2NoYXIgOiBjaGFyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfZmxvYXQgOiBmbG9hdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludCA6IGludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDMyIDogaW50MzIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQ2NCA6IGludDY0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50IDogbmF0aXZlaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfc3RyaW5nIDogc3RyaW5nIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfdW5pdCA6IHVuaXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBjb21wYXJlX2FycmF5IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgaWYgcGh5c19lcXVhbCBhIGJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgICAgaWYgcmV0IDw+IDBcbiAgICAgIHRoZW4gcmV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgICAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCAwKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IFtdLCBfIC0+IC0xXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgeCB5IGluXG4gICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBjb21wYXJlX29wdGlvbiBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgfCBOb25lLCBTb21lIF8gLT4gLTFcbiAgICB8IFNvbWUgXywgTm9uZSAtPiAxXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBjb21wYXJlX2VsdCBhIGJcbiAgOztcblxuICBsZXQgY29tcGFyZV9yZWYgY29tcGFyZV9lbHQgYSBiID0gY29tcGFyZV9lbHQgIWEgIWJcbiAgbGV0IGVxdWFsX2Jvb2wgOiBib29sIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfY2hhciA6IGNoYXIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQgOiBpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQzMiA6IGludDMyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50NjQgOiBpbnQ2NCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA6IG5hdGl2ZWludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3N0cmluZyA6IHN0cmluZyBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3VuaXQgOiB1bml0IGVxdWFsID0gUG9seS5lcXVhbFxuXG4gICgqIFtQb2x5LmVxdWFsXSBpcyBJRUVFIGNvbXBsaWFudCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudCBoZXJlLiAqKVxuICBsZXQgZXF1YWxfZmxvYXQgeCB5ID0gZXF1YWxfaW50IChjb21wYXJlX2Zsb2F0IHggeSkgMFxuXG4gIGxldCBlcXVhbF9hcnJheSBlcXVhbF9lbHQgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8XG4gICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgZXF1YWwgbGVuX2EgbGVuX2JcbiAgICAmJlxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGkgPSBsZW5fYVxuICAgICAgfHxcbiAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgZXF1YWxfZWx0IGwgciAmJiBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCByZWMgZXF1YWxfbGlzdCBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IGVxdWFsX2VsdCB4IHkgJiYgZXF1YWxfbGlzdCBlcXVhbF9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGVxdWFsX2VsdCBhIGJcbiAgOztcblxuICBsZXQgZXF1YWxfcmVmIGVxdWFsX2VsdCBhIGIgPSBlcXVhbF9lbHQgIWEgIWJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIGZvciB1c2UgYnkgcHB4X2hhc2gsIGFuZCBpcyB0aHVzIG5vdCBpbiB0aGUgaW50ZXJmYWNlIG9mIEJhc2UuICopXG5tb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBIYXNoID0gSGFzaCAoKiogQGNhbm9uaWNhbCBCYXNlLkhhc2ggKilcbmVuZFxuXG50eXBlICdhIGhhc2hfZm9sZCA9IFN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFN0ZC5IYXNoLnN0YXRlXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiB0IGhhc2hfZm9sZFxuICAgIHZhbCBoYXNoIDogdCAtPiBTdGQuSGFzaC5oYXNoX3ZhbHVlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2EgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYiBoYXNoX2ZvbGQgLT4gKCdhLCAnYikgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3RcbiAgICAgIDogICdhIGhhc2hfZm9sZFxuICAgICAgLT4gJ2IgaGFzaF9mb2xkXG4gICAgICAtPiAnYyBoYXNoX2ZvbGRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGhhc2hfZm9sZFxuICBlbmRcbmVuZFxuIiwib3BlbiBIYXNoLkJ1aWx0aW5cbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPSBTZXhwbGliMC5TZXhwLnQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG5sZXQgcmVjIGNvbXBhcmUgPVxuICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICAgdGhlbiAwXG4gICAgIGVsc2UgKFxuICAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgIHwgQXRvbSBfYV9fMDAzXywgQXRvbSBfYl9fMDA0XyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDAzXyBfYl9fMDA0X1xuICAgICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgICAgIHwgTGlzdCBfYV9fMDA1XywgTGlzdCBfYl9fMDA2XyAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSBfYV9fMDA1XyBfYl9fMDA2XylcbiAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG47O1xuXG5sZXQgcmVjIChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBBdG9tIF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgX2EwXG4gICAgIHwgTGlzdCBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF90IGhzdiBfYTBcbiAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcblxuYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2NvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxubGV0IG9mX3N0cmluZyA9ICgpXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPVxuICB8IFczMlxuICB8IFc2NFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFczMiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXMzJcIlxuICAgIHwgVzY0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlc2NFwiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBudW1fYml0cyA9IGZ1bmN0aW9uXG4gIHwgVzMyIC0+IDMyXG4gIHwgVzY0IC0+IDY0XG47O1xuXG5sZXQgd29yZF9zaXplID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZV9pbl9iaXRzIHdpdGhcbiAgfCAzMiAtPiBXMzJcbiAgfCA2NCAtPiBXNjRcbiAgfCBfIC0+IGZhaWx3aXRoIFwidW5rbm93biB3b3JkIHNpemVcIlxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgciA9IHJlZiBbIFwiQmFzZS5TZXhwLnBwX2h1bVwiIF1cbmxldCBhbGwgKCkgPSAhclxubGV0IHJlZ2lzdGVyIHAgPSByIDo9IHAgOjogIXJcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcHAgOiBGb3JtYXR0ZXIudCAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfcHAgKE0gOiBzaWdcbiAgICBpbmNsdWRlIFNcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICBsZXQgKCkgPSByZWdpc3RlciAoTS5tb2R1bGVfbmFtZSBeIFwiLnBwXCIpXG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyIChNIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG4gIFJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGxldCBwcCBmb3JtYXR0ZXIgdCA9IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmb3JtYXR0ZXIgKE0udG9fc3RyaW5nIHQpXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBleG4gW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9leG4gOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuW0BAQGVuZF1cblxubGV0IGV4aXQgPSBDYW1sLmV4aXRcblxuZXhjZXB0aW9uIEZpbmFsbHkgb2YgdCAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGaW5hbGx5XSAoZnVuY3Rpb25cbiAgICB8IEZpbmFsbHkgKGFyZzBfXzAwMV8sIGFyZzFfXzAwMl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfXG4gICAgICBhbmQgcmVzMV9fMDA0XyA9IHNleHBfb2ZfdCBhcmcxX18wMDJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuRmluYWxseVwiOyByZXMwX18wMDNfOyByZXMxX18wMDRfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFJlcmFpc2VkIG9mIHN0cmluZyAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBSZXJhaXNlZF0gKGZ1bmN0aW9uXG4gICAgfCBSZXJhaXNlZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgIGxldCByZXMwX18wMDdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA1X1xuICAgICAgYW5kIHJlczFfXzAwOF8gPSBzZXhwX29mX3QgYXJnMV9fMDA2XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLlJlcmFpc2VkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gU2V4cCBvZiBTZXhwLnRcblxuKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZTpcblxuICAge1tcbiAgICAgZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuICAgICAoKiAuLi4gKilcbiAgICAgW0BAQGVuZF1cbiAgIF19XG5cbiAgIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmEgd3JhcHBpbmcgb2YgWyhTZXhwIC4uLildLiAqKVxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNleHBdIChmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBTZXhwIHNleHBcblxubGV0IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIHQgYmFja3RyYWNlID1cbiAgQ2FtbC5QcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB0IGJhY2t0cmFjZVxuOztcblxuZXh0ZXJuYWwgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCA6IHQgLT4gYm9vbCA9IFwiQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG5cIlxuXG5sZXQgcmVyYWlzZSBleG4gc3RyID1cbiAgbGV0IGV4bicgPSBSZXJhaXNlZCAoc3RyLCBleG4pIGluXG4gIGlmIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuXG4gIHRoZW4gKFxuICAgIGxldCBidCA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4nIGJ0KVxuICBlbHNlIHJhaXNlIGV4bidcbjs7XG5cbmxldCByZXJhaXNlZiBleGMgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyICgpIC0+IHJlcmFpc2UgZXhjIHN0cikgZm9ybWF0XG5sZXQgdG9fc3RyaW5nIGV4YyA9IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgKHNleHBfb2ZfZXhuIGV4YylcbmxldCB0b19zdHJpbmdfbWFjaCBleGMgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX2V4biBleGMpXG5sZXQgc2V4cF9vZl90ID0gc2V4cF9vZl9leG5cblxubGV0IHByb3RlY3R4IH5mIHggfihmaW5hbGx5IDogXyAtPiB1bml0KSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgcmVzIC0+XG4gICAgZmluYWxseSB4O1xuICAgIHJlc1xuICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKG1hdGNoIGZpbmFsbHkgeCB3aXRoXG4gICAgIHwgKCkgLT4gcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJ0XG4gICAgIHwgZXhjZXB0aW9uIGZpbmFsX2V4biAtPlxuICAgICAgICgqIFVuZm9ydHVuYXRlbHksIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFtmaW5hbF9leG5dIGlzIGRpc2NhcmRlZCBoZXJlLiAqKVxuICAgICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChGaW5hbGx5IChleG4sIGZpbmFsX2V4bikpIGJ0KVxuOztcblxubGV0IHByb3RlY3QgfmYgfmZpbmFsbHkgPSBwcm90ZWN0eCB+ZiAoKSB+ZmluYWxseVxuXG5sZXQgZG9lc19yYWlzZSAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICB0cnlcbiAgICBpZ25vcmUgKGYgKCkgOiBhKTtcbiAgICBmYWxzZVxuICB3aXRoXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBleG5cblxuICAgIGxldCBwcCBwcGYgdCA9XG4gICAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgdCB3aXRoXG4gICAgICB8IFNvbWUgc2V4cCAtPiBTZXhwLnBwX2h1bSBwcGYgc2V4cFxuICAgICAgfCBOb25lIC0+IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKENhbWwuUHJpbnRleGMudG9fc3RyaW5nIHQpXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FeG5cIlxuICBlbmQpXG5cbmxldCBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSA9XG4gIENhbWwuRm9ybWF0LmVwcmludGYgXCJAWzwyPlVuY2F1Z2h0IGV4Y2VwdGlvbjpAXFxuQFxcbkBbJWFAXUBdQFxcbkAuXCIgcHAgZXhjO1xuICBpZiBDYW1sLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXMgKClcbiAgdGhlbiBDYW1sLlByaW50ZXhjLnByaW50X3Jhd19iYWNrdHJhY2UgQ2FtbC5zdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgQ2FtbC5mbHVzaCBDYW1sLnN0ZGVyclxuOztcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKSA9XG4gIENhbWwuUHJpbnRleGMuc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIHByaW50X3dpdGhfYmFja3RyYWNlXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2F1eCB+ZG9fYXRfZXhpdCB+ZXhpdCBmID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4YyAtPlxuICAgIGxldCByYXdfYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICgqIE9uZSByZWFzb24gdG8gcnVuIFtkb19hdF9leGl0XSBoYW5kbGVycyBiZWZvcmUgcHJpbnRpbmcgb3V0IHRoZSBlcnJvciBtZXNzYWdlIGlzXG4gICAgICAgdGhhdCBpdCBoZWxwcyBjdXJzZXMgYXBwbGljYXRpb25zIGJyaW5nIHRoZSB0ZXJtaW5hbCBpbiBhIGdvb2Qgc3RhdGUsIG90aGVyd2lzZSB0aGVcbiAgICAgICBlcnJvciBtZXNzYWdlIG1pZ2h0IGdldCBjb3JydXB0ZWQuICBBbHNvLCB0aGUgT0NhbWwgdG9wLWxldmVsIHVuY2F1Z2h0IGV4Y2VwdGlvblxuICAgICAgIGhhbmRsZXIgZG9lcyB0aGUgc2FtZS4gKilcbiAgICBpZiBkb19hdF9leGl0XG4gICAgdGhlbiAoXG4gICAgICB0cnkgQ2FtbC5kb19hdF9leGl0ICgpIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgKHRyeSBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgIHwgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBDYW1sLlByaW50Zi5lcHJpbnRmIFwiRXhuLmhhbmRsZV91bmNhdWdodCBjb3VsZCBub3QgcHJpbnQ7IGV4aXRpbmcgYW55d2F5XFxuJSFcIlxuICAgICAgICB3aXRoXG4gICAgICAgIHwgXyAtPiAoKSkpO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID0gaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0IH5kb19hdF9leGl0OnRydWVcblxubGV0IGhhbmRsZV91bmNhdWdodCB+ZXhpdDptdXN0X2V4aXQgZiA9XG4gIGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdDooaWYgbXVzdF9leGl0IHRoZW4gZXhpdCBlbHNlIGlnbm9yZSkgfmRvX2F0X2V4aXQ6bXVzdF9leGl0XG47O1xuXG5sZXQgcmVyYWlzZV91bmNhdWdodCBzdHIgZnVuYyA9XG4gIHRyeSBmdW5jICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKFJlcmFpc2VkIChzdHIsIGV4bikpIGJ0XG47O1xuXG5leHRlcm5hbCBjbGVhcl9iYWNrdHJhY2UgOiB1bml0IC0+IHVuaXQgPSBcIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zXCIgW0BAbm9hbGxvY11cblxubGV0IHJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIGUgPVxuICAoKiBXZSBjbGVhciB0aGUgYmFja3RyYWNlIHRvIHJlZHVjZSBjb25mdXNpb24sIHNvIHRoYXQgcGVvcGxlIGRvbid0IHRoaW5rIHdoYXRldmVyXG4gICAgIGlzIHN0b3JlZCBjb3JyZXNwb25kcyB0byB0aGlzIHJhaXNlLiAqKVxuICBjbGVhcl9iYWNrdHJhY2UgKCk7XG4gIENhbWwucmFpc2Vfbm90cmFjZSBlXG47O1xuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGNsZWFyX2JhY2t0cmFjZSA9IGNsZWFyX2JhY2t0cmFjZVxuZW5kXG4iLCIoKiBiZWxvbmdzIGluIENvbW1vbiwgYnV0IG1vdmVkIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHJldHVybiA9IHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxubGV0IHdpdGhfcmV0dXJuICh0eXBlIGEpIGYgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAoKiBSYWlzZWQgdG8gaW5kaWNhdGUgfnJldHVybiB3YXMgY2FsbGVkLiAgTG9jYWwgc28gdGhhdCB0aGUgZXhjZXB0aW9uIGlzIHRpZWQgdG8gYVxuICAgICAgIHBhcnRpY3VsYXIgY2FsbCBvZiBbd2l0aF9yZXR1cm5dLiAqKVxuICAgIGV4Y2VwdGlvbiBSZXR1cm4gb2YgYVxuICBlbmRcbiAgaW5cbiAgbGV0IGlzX2FsaXZlID0gcmVmIHRydWUgaW5cbiAgbGV0IHJldHVybiBhID1cbiAgICBpZiBub3QgIWlzX2FsaXZlXG4gICAgdGhlbiBmYWlsd2l0aCBcInVzZSBvZiBbcmV0dXJuXSBmcm9tIGEgW3dpdGhfcmV0dXJuXSB0aGF0IGFscmVhZHkgcmV0dXJuZWRcIjtcbiAgICBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgKE0uUmV0dXJuIGEpXG4gIGluXG4gIHRyeVxuICAgIGxldCBhID0gZiB7IHJldHVybiB9IGluXG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgYVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgKG1hdGNoIGV4biB3aXRoXG4gICAgIHwgTS5SZXR1cm4gYSAtPiBhXG4gICAgIHwgXyAtPiByYWlzZSBleG4pXG47O1xuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uIGYgPVxuICB3aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgIGYgeyByZXR1cm4gPSAoZnVuIGEgLT4gcmV0dXJuLnJldHVybiAoU29tZSBhKSkgfTtcbiAgICBOb25lKVxuOztcblxubGV0IHByZXBlbmQgeyByZXR1cm4gfSB+ZiA9IHsgcmV0dXJuID0gKGZ1biB4IC0+IHJldHVybiAoZiB4KSkgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIEJhc2ljID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgaWRlbnRpdGllcyBvdWdodCB0byBob2xkIChmb3Igc29tZSB2YWx1ZSBvZiA9KTpcblxuICAgICAgLSBbcmV0dXJuIHggPj49IGYgPSBmIHhdXG4gICAgICAtIFt0ID4+PSBmdW4geCAtPiByZXR1cm4geCA9IHRdXG4gICAgICAtIFsodCA+Pj0gZikgPj49IGcgPSB0ID4+PSBmdW4geCAtPiAoZiB4ID4+PSBnKV1cblxuICAgICAgTm90ZTogWz4+PV0gaXMgdGhlIGluZml4IG5vdGF0aW9uIGZvciBbYmluZF0pICopXG5cbiAgKCoqIFRoZSBbbWFwXSBhcmd1bWVudCB0byBbTW9uYWQuTWFrZV0gc2F5cyBob3cgdG8gaW1wbGVtZW50IHRoZSBtb25hZCdzIFttYXBdIGZ1bmN0aW9uLlxuICAgICAgW2BEZWZpbmVfdXNpbmdfYmluZF0gbWVhbnMgdG8gZGVmaW5lIFttYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC5cblxuICAgICAgU29tZSBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW01vbmFkLk1ha2VdIGFyZSBkZWZpbmVkIGluIHRlcm1zIG9mIFttYXBdLCBzb1xuICAgICAgcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFttYXBdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBtYXAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdCBdXG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXggPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIFt0ID4+PSBmXSByZXR1cm5zIGEgY29tcHV0YXRpb24gdGhhdCBzZXF1ZW5jZXMgdGhlIGNvbXB1dGF0aW9ucyByZXByZXNlbnRlZCBieSB0d29cbiAgICAgIG1vbmFkIGVsZW1lbnRzLiAgVGhlIHJlc3VsdGluZyBjb21wdXRhdGlvbiBmaXJzdCBkb2VzIFt0XSB0byB5aWVsZCBhIHZhbHVlIFt2XSwgYW5kXG4gICAgICB0aGVuIHJ1bnMgdGhlIGNvbXB1dGF0aW9uIHJldHVybmVkIGJ5IFtmIHZdLiAqKVxuICB2YWwgKCA+Pj0gKSA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAoKiogW3QgPj58IGZdIGlzIFt0ID4+PSAoZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uICopXG4gIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXggPSBzaWdcbiAgKCoqIE9wZW5pbmcgYSBtb2R1bGUgb2YgdGhpcyB0eXBlIGFsbG93cyBvbmUgdG8gdXNlIHRoZSBbJWJpbmRdIGFuZCBbJW1hcF0gc3ludGF4XG4gICAgICBleHRlbnNpb25zIGRlZmluZWQgYnkgcHB4X2xldCwgYW5kIGJyaW5ncyBbcmV0dXJuXSBpbnRvIHNjb3BlLiAqKVxuXG4gIHR5cGUgJ2EgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgKCoqIFRoZXNlIGFyZSBjb252ZW5pZW50IHRvIGhhdmUgaW4gc2NvcGUgd2hlbiBwcm9ncmFtbWluZyB3aXRoIGEgbW9uYWQ6ICopXG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgaW5jbHVkZSBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtiaW5kIHQgfmZdID0gW3QgPj49IGZdICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCoqIFtyZXR1cm4gdl0gcmV0dXJucyB0aGUgKHRyaXZpYWwpIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyB2LiAqKVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIHQgfmZdIGlzIHQgPj58IGYuICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgKCoqIFtqb2luIHRdIGlzIFt0ID4+PSAoZnVuIHQnIC0+IHQnKV0uICopXG4gIHZhbCBqb2luIDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW2lnbm9yZV9tIHRdIGlzIFttYXAgdCB+ZjooZnVuIF8gLT4gKCkpXS4gIFtpZ25vcmVfbV0gdXNlZCB0byBiZSBjYWxsZWQgW2lnbm9yZV0sXG4gICAgICBidXQgd2UgZGVjaWRlZCB0aGF0IHdhcyBhIGJhZCBuYW1lLCBiZWNhdXNlIGl0IHNoYWRvd2VkIHRoZSB3aWRlbHkgdXNlZFxuICAgICAgW0NhbWwuaWdub3JlXS4gIFNvbWUgbW9uYWRzIHN0aWxsIGRvIFtsZXQgaWdub3JlID0gaWdub3JlX21dIGZvciBoaXN0b3JpY2FsXG4gICAgICByZWFzb25zLiAqKVxuICB2YWwgaWdub3JlX20gOiAnYSB0IC0+IHVuaXQgdFxuXG4gIHZhbCBhbGwgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgKCoqIExpa2UgW2FsbF0sIGJ1dCBlbnN1cmVzIHRoYXQgZXZlcnkgbW9uYWRpYyB2YWx1ZSBpbiB0aGUgbGlzdCBwcm9kdWNlcyBhIHVuaXQgdmFsdWUsXG4gICAgICBhbGwgb2Ygd2hpY2ggYXJlIGRpc2NhcmRlZCByYXRoZXIgdGhhbiBiZWluZyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuICopXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMiA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBnZXRzIHVuaWZpZWQgYWNyb3NzIGFsbCB0aGUgY29tcHV0YXRpb24uXG4gICAgICBUaGlzIGlzIHVzZWQgdG8gZW5jb2RlIG1vbmFkcyB3b3JraW5nIG9uIGEgbXVsdGkgcGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGxpa2VcbiAgICAgIChbKCdhLCdiKSByZXN1bHRdKS4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHQgXVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgyID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MiA9IHNpZ1xuICB0eXBlICgnYSwgJ2UpIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcblxuICAgIGluY2x1ZGUgSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZSkgdCAtPiAoJ2IsICdlKSB0IC0+ICgnYSAqICdiLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgaW5jbHVkZSBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdlKSB0KSAtPiAoJ2IsICdlKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZSkgdCwgJ2UpIHQgLT4gKCdhLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2UpIHQgLT4gKHVuaXQsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMyA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGdldCB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlXG4gICAgICBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgzID0gc2lnXG4gICgqKiBTYW1lIGFzIEluZml4LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmQgdGhpcmQgYXJlXG4gICAgICBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDMgPSBzaWdcbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuXG4gICAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdiLCAnZCwgJ2UpIHQgLT4gKCdhICogJ2IsICdkLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kXG4gICAgICBhbmQgdGhpcmQgYXJlIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2QsICdlKSB0LCAnZCwgJ2UpIHQgLT4gKCdhLCAnZCwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdkLCAnZSkgdCAtPiAodW5pdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdkLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdkLCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gc2lnXG4gICgqKiBJbmRleGVkIG1vbmFkLCBpbiB0aGUgc3R5bGUgb2YgQXRrZXkuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlIGNvbXBvc2VkXG4gICAgICBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiBUbyBzZWUgdGhpcyBtb3JlIGNsZWFybHksIHlvdSBjYW4gbG9vayBhdCB0aGUgdHlwZSBvZiBiaW5kOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgXX1cblxuICAgICAgYW5kIGlzb2xhdGUgc29tZSBvZiB0aGUgdHlwZSB2YXJpYWJsZXMgdG8gc2VlIHRoZWlyIGluZGl2aWR1YWwgYmVoYXZpb3JzOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICdhICAgICAgICAgICAgIC0+IGY6KCdhIC0+ICAnYiAgICAgICAgICAgKSAtPiAgJ2JcbiAgICAgICAgdmFsIGJpbmQgOiAgICAgICdpLCAnaiAgICAtPiAgICAgICAgICAgICAgICdqLCAnayAgICAgLT4gICAgICdpLCAna1xuICAgICAgXX1cblxuICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQXRrZXktc3R5bGUgaW5kZXhlZCBtb25hZHMsIHNlZTpcblxuICAgICAge3ZcbiAgICAgICAgUGFyYW1ldGVyaXNlZCBOb3Rpb25zIG9mIENvbXB1dGF0aW9uXG4gICAgICAgIFJvYmVydCBBdGtleVxuICAgICAgICBodHRwOi8vYmVudG5pYi5vcmcvcGFyYW1ub3Rpb25zLWpmcC5wZGZcbiAgICAgIHZ9ICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuXG4gICAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdiLCAnaiwgJ2spIHQgLT4gKCdhICogJ2IsICdpLCAnaykgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIGluY2x1ZGUgU3ludGF4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnaiwgJ2spIHQsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaykgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2ksICdqKSB0IC0+ICh1bml0LCAnaSwgJ2opIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2ksICdpKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdpLCAnaSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2ksICdpKSB0IGxpc3QgLT4gKHVuaXQsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTX3RvX1NfaW5kZXhlZCAoWCA6IFMpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgU19pbmRleGVkX3RvX1MyIChYIDogU19pbmRleGVkKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1vbmFkID0gc2lnXG4gICgqKiBBIG1vbmFkIGlzIGFuIGFic3RyYWN0aW9uIG9mIHRoZSBjb25jZXB0IG9mIHNlcXVlbmNpbmcgb2YgY29tcHV0YXRpb25zLiAgQSB2YWx1ZSBvZlxuICAgICAgdHlwZSBbJ2EgbW9uYWRdIHJlcHJlc2VudHMgYSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIFsnYV0uICopXG5cbiAgbW9kdWxlIHR5cGUgQmFzaWMgPSBCYXNpY1xuICBtb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJcbiAgbW9kdWxlIHR5cGUgQmFzaWMzID0gQmFzaWMzXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBCYXNpY19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEluZml4ID0gSW5maXhcbiAgbW9kdWxlIHR5cGUgSW5maXgyID0gSW5maXgyXG4gIG1vZHVsZSB0eXBlIEluZml4MyA9IEluZml4M1xuICBtb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gSW5maXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTeW50YXggPSBTeW50YXhcbiAgbW9kdWxlIHR5cGUgU3ludGF4MiA9IFN5bnRheDJcbiAgbW9kdWxlIHR5cGUgU3ludGF4MyA9IFN5bnRheDNcbiAgbW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBTeW50YXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gU193aXRob3V0X3N5bnRheFxuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gIG1vZHVsZSB0eXBlIFMzID0gUzNcbiAgbW9kdWxlIHR5cGUgU19pbmRleGVkID0gU19pbmRleGVkXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG4gIG1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gIG1vZHVsZSBNYWtlX2luZGV4ZWQgKFggOiBCYXNpY19pbmRleGVkKSA6XG4gICAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgKCoqIERlZmluZSBhIG1vbmFkIHRocm91Z2ggYW4gaXNvbW9ycGhpc20gd2l0aCBhbiBleGlzdGluZyBtb25hZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgJ2EgdCA9IHsgdmFsdWUgOiAnYSB9XG5cbiAgICAgICAgaW5jbHVkZSBNb25hZC5PZl9tb25hZCAoTW9uYWQuSWRlbnQpIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgICAgIGxldCB0b19tb25hZCB7IHZhbHVlIH0gPSB2YWx1ZVxuICAgICAgICAgICAgbGV0IG9mX21vbmFkIHZhbHVlID0geyB2YWx1ZSB9XG4gICAgICAgICAgZW5kKVxuICAgICAgXX0gKilcbiAgbW9kdWxlIE9mX21vbmFkXG4gICAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkMlxuICAgICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDNcbiAgICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50XG5cbiAgbW9kdWxlIElkZW50IDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNb25hZF9pbnRmXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbmVyYWwgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmRcbiAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5lcmFsIChNIDogQmFzaWNfZ2VuZXJhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gIGxldCBtYXBfdmlhX2JpbmQgbWEgfmYgPSBNLmJpbmQgbWEgfmY6KGZ1biBhIC0+IE0ucmV0dXJuIChmIGEpKVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIE0ubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYmluZCAtPiBtYXBfdmlhX2JpbmRcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggYSBiID0gYSA+Pj0gZnVuIGEgLT4gYiA+PnwgZnVuIGIgLT4gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBmdW4gdCcgLT4gdCdcbiAgbGV0IGlnbm9yZV9tIHQgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpXG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pbmRleGVkIChNIDogQmFzaWNfaW5kZXhlZCkgOlxuICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMyAoTSA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIE0udCA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyIChNIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0IDo9ICgnYSwgJ2QpIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoTSA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9nZW5lcmFsIChNb25hZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgdmFsIGJpbmRcbiAgICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG4gIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudFxuICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gYSA9IE0ub2ZfbW9uYWQgKE1vbmFkLnJldHVybiBhKVxuICAgIGxldCBiaW5kIHQgfmYgPSBNLm9mX21vbmFkIChNb25hZC5iaW5kIChNLnRvX21vbmFkIHQpIH5mOihmdW4gYSAtPiBNLnRvX21vbmFkIChmIGEpKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIHQgfmYgLT4gTS5vZl9tb25hZCAoTW9uYWQubWFwIChNLnRvX21vbmFkIHQpIH5mKSlcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQzXG4gICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyXG4gICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZFxuICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICAgIGVuZClcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCBiaW5kIGEgfmYgPSBmIGFcbiAgICAgIGxldCByZXR1cm4gYSA9IGFcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gYSB+ZiAtPiBmIGEpXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG4oKiogVGhpcyBtb2R1bGUgc2VydmVzIG1vc3RseSBhcyBhIHBhcnRpYWwgY2hlY2sgdGhhdCBbUzJdIGFuZCBbU10gYXJlIGluIHN5bmMsIGJ1dFxuICAgIGFjdHVhbGx5IGNhbGxpbmcgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bC4gKilcbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYXBwbHkgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IG1hcDIgdGEgdGIgfmYgPSBtYXAgfmYgdGEgPCo+IHRiXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwIH5mIHRhIDwqPiB0YiA8Kj4gdGNcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgKCAqPiApIHUgdiA9IHJldHVybiAoZnVuICgpIHkgLT4geSkgPCo+IHUgPCo+IHZcbiAgbGV0ICggPCogKSB1IHYgPSByZXR1cm4gKGZ1biB4ICgpIC0+IHgpIDwqPiB1IDwqPiB2XG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTMgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4M1xuICAgIChYIDogRm9yX2xldF9zeW50YXgzKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gSW1wbFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4MlxuICAgIChYIDogRm9yX2xldF9zeW50YXgyKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4M1xuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgJ2QsIF8pIHQgPSAoJ2EsICdkKSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXhcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4KSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbigqKiBUaGlzIGZ1bmN0b3IgY2xvc2VseSByZXNlbWJsZXMgW01ha2UzXSwgYW5kIGluZGVlZCBpdCBjb3VsZCBiZSBpbXBsZW1lbnRlZFxuICAgIG11Y2ggc2hvcnRlciBpbiB0ZXJtcyBvZiBbTWFrZTNdLiBIb3dldmVyLCB3ZSBpbXBsZW1lbnQgaXQgYnkgaGFuZCBzbyB0aGF0XG4gICAgdGhlIHJlc3VsdGluZyBmdW5jdGlvbnMgYXJlIG1vcmUgZWZmaWNpZW50LCBlLmcuIHVzaW5nIFttYXAyXSBkaXJlY3RseSBpbnN0ZWFkIG9mXG4gICAgZGVmaW5pbmcgW2FwcGx5XSBpbiB0ZXJtcyBvZiBpdCBhbmQgdGhlbiBbbWFwMl0gaW4gdGVybXMgb2YgdGhhdC4gRm9yIG1vc3RcbiAgICBhcHBsaWNhdGl2ZXMgdGhpcyBkb2VzIG5vdCBtYXR0ZXIsIGJ1dCBmb3Igc29tZSAoc3VjaCBhcyBCb25zYWkuVmFsdWUudCksIGl0IGhhcyBhXG4gICAgbGFyZ2VyIGltcGFjdC4gKilcbm1vZHVsZSBNYWtlM191c2luZ19tYXAyIChYIDogQmFzaWMzX3VzaW5nX21hcDIpIDpcbiAgUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0IGFwcGx5IHRmIHRhID0gbWFwMiB0ZiB0YSB+ZjooZnVuIGYgYSAtPiBmIGEpXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAyIChtYXAyIHRhIHRiIH5mKSB0YyB+ZjooZnVuIGZhYiBjIC0+IGZhYiBjKVxuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0ICggKj4gKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuICgpIHkgLT4geSlcbiAgbGV0ICggPCogKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuIHggKCkgLT4geClcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMl91c2luZ19tYXAyIChYIDogQmFzaWMyX3VzaW5nX21hcDIpIDpcbiAgUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTNfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfbWFwMiAoWCA6IEJhc2ljX3VzaW5nX21hcDIpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPVxuICBNYWtlMl91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDIgKE0gOiBNb25hZC5TMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBNLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgICBsZXQgYXBwbHkgbWYgbXggPSBNLmJpbmQgbWYgfmY6KGZ1biBmIC0+IE0ubWFwIG14IH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIE0ubWFwXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkIChNIDogTW9uYWQuUykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE9mX21vbmFkMiAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgXykgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBDb21wb3NlIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRy5yZXR1cm4gKEYucmV0dXJuIGEpXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBHLmFwcGx5IChHLm1hcCB+ZjpGLmFwcGx5IHRmKSB0eFxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEcubWFwIH5mOihGLm1hcCB+ZikgdFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgUGFpciAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBGLnJldHVybiBhLCBHLnJldHVybiBhXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBGLmFwcGx5IChmc3QgdGYpIChmc3QgdHgpLCBHLmFwcGx5IChzbmQgdGYpIChzbmQgdHgpXG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRi5tYXAgfmYgKGZzdCB0KSwgRy5tYXAgfmYgKHNuZCB0KVxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuIiwiKCogW0J5dGVzMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbQ2FtbC5CeXRlc10uIFtCeXRlczBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzc1xuICAgdGhlIHBhcnQgb2YgW0NhbWwuQnl0ZXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGJ5dGVzMC5tbCBzaG91bGQgdXNlIFtDYW1sLkJ5dGVzXS4gW0J5dGVzMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZFxuICAgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5CeXRlc10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEJ5dGVzICA9IEJ5dGVzMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBCeXRlcyA9IEJ5dGVzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5CeXRlc10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0ICAgICAgICA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5cbiAgKCogW3Vuc2FmZV9ibGl0X3N0cmluZ10gaXMgbm90IGV4cG9ydGVkIGluIHRoZSBbc3RkbGliXSBzbyB3ZSBleHBvcnQgaXQgaGVyZSAqKVxuICBleHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICA6ICBzcmM6c3RyaW5nXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6Ynl0ZXNcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5pbmNsdWRlIFByaW1pdGl2ZXNcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBibGl0ID0gQ2FtbC5CeXRlcy5ibGl0XG5sZXQgYmxpdF9zdHJpbmcgPSBDYW1sLkJ5dGVzLmJsaXRfc3RyaW5nXG5sZXQgY29tcGFyZSA9IENhbWwuQnl0ZXMuY29tcGFyZVxubGV0IGNvcHkgPSBDYW1sLkJ5dGVzLmNvcHlcbmxldCBjcmVhdGUgPSBDYW1sLkJ5dGVzLmNyZWF0ZVxubGV0IGZpbGwgPSBDYW1sLkJ5dGVzLmZpbGxcbmxldCBtYWtlID0gQ2FtbC5CeXRlcy5tYWtlXG5sZXQgbWFwID0gQ2FtbC5CeXRlcy5tYXBcbmxldCBtYXBpID0gQ2FtbC5CeXRlcy5tYXBpXG5sZXQgc3ViID0gQ2FtbC5CeXRlcy5zdWJcbmxldCB1bnNhZmVfYmxpdCA9IENhbWwuQnl0ZXMudW5zYWZlX2JsaXRcbmxldCB0b19zdHJpbmcgPSBDYW1sLkJ5dGVzLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IENhbWwuQnl0ZXMub2Zfc3RyaW5nXG5sZXQgdW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzID0gQ2FtbC5CeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbmxldCB1bnNhZmVfb2Zfc3RyaW5nX3Byb21pc2Vfbm9fbXV0YXRpb24gPSBDYW1sLkJ5dGVzLnVuc2FmZV9vZl9zdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EgdCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgU19mYyA9IHNpZ1xuICB0eXBlIGNvbXBhcmFibGVfdFxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSBjb21wYXJhYmxlX3RcbmVuZFxuXG5tb2R1bGUgTW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdiKVxuZW5kXG5cbmxldCBtYWtlICh0eXBlIHQpIH5jb21wYXJlIH5zZXhwX29mX3QgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgY29tcGFyYWJsZV90ID0gdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kIDogU19mY1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlX3QgPSB0KVxuOztcblxubW9kdWxlIFNfdG9fUzEgKFMgOiBTKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBTLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG9wZW4gU1xuXG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICdhIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIl9cIlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIGNvbXBhcmF0b3IgLT4gKCdhIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yXG4gICAgOiAgKCdhLCAnY21wX2EpIGNvbXBhcmF0b3JcbiAgICAtPiAoJ2IsICdjbXBfYikgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsICdiKSB0LCAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkMiAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2EsICdiKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcCkgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsIF8pIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWRfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYSwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wX2EgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2YsICdzKSB0ID1cbiAgfCBGaXJzdCBvZiAnZlxuICB8IFNlY29uZCBvZiAnc1xuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOlxuICAnZiAncy4gKCdmIC0+ICdmIC0+IGludCkgLT4gKCdzIC0+ICdzIC0+IGludCkgLT4gKCdmLCAncykgdCAtPiAoJ2YsICdzKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19mIF9jbXBfX3MgYV9fMDAxXyBiX18wMDJfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgfCBGaXJzdCBfYV9fMDAzXywgRmlyc3QgX2JfXzAwNF8gLT4gX2NtcF9fZiBfYV9fMDAzXyBfYl9fMDA0X1xuICAgIHwgRmlyc3QgXywgXyAtPiAtMVxuICAgIHwgXywgRmlyc3QgXyAtPiAxXG4gICAgfCBTZWNvbmQgX2FfXzAwNV8sIFNlY29uZCBfYl9fMDA2XyAtPiBfY21wX19zIF9hX18wMDVfIF9iX18wMDZfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBmIHMuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHMgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChmLCBzKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfZiBfaGFzaF9mb2xkX3MgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IEZpcnN0IF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9mIGhzdiBfYTBcbiAgfCBTZWNvbmQgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX3MgaHN2IF9hMFxuOztcblxubGV0IHRfb2Zfc2V4cCA6XG4gICdmICdzLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdmKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdzKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdmLCAncykgdFxuICA9XG4gIGZ1biAodHlwZSBmX18wMjNfIHNfXzAyNF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBmX18wMjNfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IHNfXzAyNF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChmX18wMjNfLCBzX18wMjRfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAxMV8gPSBcImVpdGhlcjAubWwudFwiIGluXG4gICAgZnVuIF9vZl9mX18wMDdfIF9vZl9zX18wMDhfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2ZfXzAwN18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgICBGaXJzdCByZXMwX18wMTdfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBfdGFnX18wMTlfKSA6OiBzZXhwX2FyZ3NfXzAyMF8pIGFzXG4gICAgICAgIF9zZXhwX18wMThfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAyMF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAyMV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9zX18wMDhfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgICAgU2Vjb25kIHJlczBfXzAyMl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE5X1xuICAgICAgICAgICAgIF9zZXhwX18wMThfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdmICdzLlxuICAoJ2YgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2YsICdzKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBmX18wMzFfIHNfXzAzMl8pXG4gICAgICA6ICAoKGZfXzAzMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDMyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGZfXzAzMV8sIHNfXzAzMl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfZl9fMDI1XyBfb2Zfc19fMDI2XyAtPiBmdW5jdGlvblxuICAgICAgfCBGaXJzdCBhcmcwX18wMjdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjhfID0gX29mX2ZfXzAyNV8gYXJnMF9fMDI3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJGaXJzdFwiOyByZXMwX18wMjhfIF1cbiAgICAgIHwgU2Vjb25kIGFyZzBfXzAyOV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMF8gPSBfb2Zfc19fMDI2XyBhcmcwX18wMjlfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNlY29uZFwiOyByZXMwX18wMzBfIF1cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICdmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICdzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICgnZiwgJ3MpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gID1cbiAgZnVuIF8nZl9zZXhwX2dyYW1tYXIgXydzX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRmlyc3RcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlNlY29uZFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nc19zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cbiIsIigqIFRoZSB0eXBlIFt0XSBzaG91bGQgYmUgYWJzdHJhY3QgdG8gbWFrZSB0aGUgZnNldCBhbmQgc2V0IGZ1bmN0aW9ucyB1bmF2YWlsYWJsZVxuICAgZm9yIHByaXZhdGUgdHlwZXMgYXQgdGhlIGxldmVsIG9mIHR5cGVzIChhbmQgbm90IGJ5IHB1dHRpbmcgTm9uZSBpbiB0aGUgZmllbGQpLlxuICAgVW5mb3J0dW5hdGVseSwgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0IG1lYW5zIHRoYXQgd2hlbiBjcmVhdGluZyBmaWVsZHMgKHRocm91Z2hcbiAgIGEgW2NyZWF0ZV0gZnVuY3Rpb24pIHZhbHVlIHJlc3RyaWN0aW9uIGtpY2tzIGluLiBUaGlzIGlzIHdvcmtlZCBhcm91bmQgYnkgaW5zdGVhZFxuICAgbm90IG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCwgYnV0IGZvcmNpbmcgYW55b25lIGJyZWFraW5nIHRoZSBhYnN0cmFjdGlvbiB0byB1c2VcbiAgIHRoZSBbRm9yX2dlbmVyYXRlZF9jb2RlXSBtb2R1bGUsIG1ha2luZyBpdCBvYnZpb3VzIHRvIGFueSByZWFkZXIgdGhhdCBzb21ldGhpbmcgdWdseVxuICAgaXMgZ29pbmcgb24uXG4gICB0X3dpdGhfcGVybSAoYW5kIGRlcml2YXRpdmVzKSBpcyB0aGUgdHlwZSB0aGF0IHVzZXJzIHJlYWxseSB1c2UuIEl0IGlzIGEgY29uc3RydWN0b3JcbiAgIGJlY2F1c2U6XG4gICAxLiBpdCBtYWtlcyB0eXBlIGVycm9ycyBtb3JlIHJlYWRhYmxlIChsZXNzIGFsaWFzaW5nKVxuICAgMi4gdGhlIHR5cGVyIGluIG9jYW1sIDQuMDEgYWxsb3dzIHRoaXM6XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBBID0gc3RydWN0XG4gICAgICAgdHlwZSB0ID0ge2EgOiBpbnR9XG4gICAgIGVuZFxuICAgICB0eXBlIHQgPSBBLnRcbiAgICAgbGV0IGYgKHggOiB0KSA9IHguYVxuICAgXX1cblxuICAgKGFsdGhvdWdoIHdpdGggV2FybmluZyA0MDogYSBpcyB1c2VkIG91dCBvZiBzY29wZSlcbiAgIHdoaWNoIG1lYW5zIHRoYXQgaWYgW3Rfd2l0aF9wZXJtXSB3YXMgcmVhbGx5IGFuIGFsaWFzIG9uIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0sXG4gICBwZW9wbGUgY291bGQgc2F5IFt0LnNldHRlcl0gYW5kIGJyZWFrIHRoZSBhYnN0cmFjdGlvbiB3aXRoIG5vIGluZGljYXRpb24gdGhhdFxuICAgc29tZXRoaW5nIHVnbHkgaXMgZ29pbmcgb24gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgVGhlIHdhcm5pbmcgaXMgKEkgdGhpbmspIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gbWFrZSB0aGVpciBjb2RlIGNvbXBhdGlibGUgd2l0aFxuICAgcHJldmlvdXMgdmVyc2lvbnMgb2Ygb2NhbWwsIHNvIHdlIG1heSB2ZXJ5IHdlbGwgdHVybiBpdCBvZmYuXG5cbiAgIFRoZSB0eXBlIHRfd2l0aF9wZXJtIGNvdWxkIGFsc28gaGF2ZSBiZWVuIGEgW3VuaXQgLT4gRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHRvIHdvcmtcbiAgIGFyb3VuZCB2YWx1ZSByZXN0cmljdGlvbiBhbmQgdGhlbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHdvdWxkIGhhdmUgYmVlbiBhIHByb3BlclxuICAgYWJzdHJhY3QgdHlwZSwgYnV0IGl0IGxvb2tzIGxpa2UgaXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIChmb3IgZXhhbXBsZSwgYSBmb2xkIG9uIGFcbiAgIHJlY29yZCB0eXBlIHdpdGggNDAgZmllbGRzIHdvdWxkIGFjdHVhbGx5IGFsbG9jYXRlIHRoZSA0MCBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdJ3MgYXRcbiAgIGV2ZXJ5IHNpbmdsZSBmb2xkLikgKilcblxubW9kdWxlIEZvcl9nZW5lcmF0ZWRfY29kZSA9IHN0cnVjdFxuICB0eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICB7IGZvcmNlX3ZhcmlhbmNlIDogJ3Blcm0gLT4gdW5pdFxuICAgIDsgKCogZm9yY2UgW3RdIHRvIGJlIGNvbnRyYXZhcmlhbnQgaW4gWydwZXJtXSwgYmVjYXVzZSBwaGFudG9tIHR5cGUgdmFyaWFibGVzIG9uXG4gICAgICAgICBjb25jcmV0ZSB0eXBlcyBkb24ndCB3b3JrIHRoYXQgd2VsbCBvdGhlcndpc2UgKHVzaW5nIDo+IGNhbiByZW1vdmUgdGhlbSBlYXNpbHkpICopXG4gICAgICBuYW1lIDogc3RyaW5nXG4gICAgOyBzZXR0ZXIgOiAoJ3JlY29yZCAtPiAnZmllbGQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBnZXR0ZXIgOiAncmVjb3JkIC0+ICdmaWVsZFxuICAgIDsgZnNldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkIC0+ICdyZWNvcmRcbiAgICB9XG5cbiAgbGV0IG9wYXF1ZV9pZGVudGl0eSA9IFN5czAub3BhcXVlX2lkZW50aXR5XG5lbmRcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gPVxuICB8IEZpZWxkIG9mICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSBGb3JfZ2VuZXJhdGVkX2NvZGUudFxuW0BAdW5ib3hlZF1cblxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID0gKFsgYFJlYWQgfCBgU2V0X2FuZF9jcmVhdGUgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSByZWFkb25seV90ID0gKFsgYFJlYWQgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxuXG5sZXQgbmFtZSAoRmllbGQgZmllbGQpID0gZmllbGQubmFtZVxubGV0IGdldCAoRmllbGQgZmllbGQpIHIgPSBmaWVsZC5nZXR0ZXIgclxubGV0IGZzZXQgKEZpZWxkIGZpZWxkKSByIHYgPSBmaWVsZC5mc2V0IHIgdlxubGV0IHNldHRlciAoRmllbGQgZmllbGQpID0gZmllbGQuc2V0dGVyXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAncmVzdWx0KSB1c2VyID1cbiAgeyBmIDogJ2ZpZWxkLiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gLT4gJ3Jlc3VsdCB9XG5cbmxldCBtYXAgKEZpZWxkIGZpZWxkKSByIH5mID0gZmllbGQuZnNldCByIChmIChmaWVsZC5nZXR0ZXIgcikpXG5cbmxldCB1cGRhdGVyIChGaWVsZCBmaWVsZCkgPVxuICBtYXRjaCBmaWVsZC5zZXR0ZXIgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgc2V0dGVyIC0+IFNvbWUgKGZ1biByIH5mIC0+IHNldHRlciByIChmIChmaWVsZC5nZXR0ZXIgcikpKVxuOztcbiIsIigqIFtTdHJpbmcwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtDYW1sLlN0cmluZ10uIFtTdHJpbmcwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtDYW1sLlN0cmluZ10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzdHJpbmcwLm1sIHNob3VsZFxuICAgdXNlIFtDYW1sLlN0cmluZ10uICBbU3RyaW5nMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzXG4gICBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzLCBpbmNsdWRpbmcgdGhlIHN1YnNjcmlwdCBzeW50YXhcbiAgIFt4LihpKV0gb3IgW3guKGkpIDwtIGVdIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0b1xuICAgW1N0cmluZ10sIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TdHJpbmddIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuXG4gICB7W1xuICAgICBtb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN0cmluZ10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCAgICAgICAgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmluY2x1ZGUgU3RyaW5nXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgKCBeICkgPSAoIF4gKVxubGV0IGNhcGl0YWxpemUgPSBDYW1sLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG5sZXQgY29tcGFyZSA9IENhbWwuU3RyaW5nLmNvbXBhcmVcblxubGV0IGNvcHkgeCA9XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpcbiAgICAgIChCeXRlcy5vZl9zdHJpbmcgeClcbjs7XG5cbmxldCBlc2NhcGVkID0gQ2FtbC5TdHJpbmcuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IENhbWwuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IG1ha2UgPSBDYW1sLlN0cmluZy5tYWtlXG5sZXQgc3ViID0gQ2FtbC5TdHJpbmcuc3ViXG5sZXQgdW5jYXBpdGFsaXplID0gQ2FtbC5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG5sZXQgdW5zYWZlX2JsaXQgPSBDYW1sLlN0cmluZy51bnNhZmVfYmxpdFxubGV0IHVwcGVyY2FzZSA9IENhbWwuU3RyaW5nLnVwcGVyY2FzZV9hc2NpaVxuXG5sZXQgY29uY2F0ID8oc2VwID0gXCJcIikgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiXCJcbiAgKCogVGhlIHN0ZGxpYiBkb2VzIG5vdCBzcGVjaWFsaXplIHRoaXMgY2FzZSBiZWNhdXNlIGl0IGNvdWxkIGJyZWFrIGV4aXN0aW5nIHByb2plY3RzLiAqKVxuICB8IFsgeCBdIC0+IHhcbiAgfCBsIC0+IENhbWwuU3RyaW5nLmNvbmNhdCB+c2VwIGxcbjs7XG5cbigqIFRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuU3RyaW5nLml0ZXIgdCB+ZlxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2FtbC5MZXhpbmcucG9zaXRpb24gPVxuICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgOyBwb3NfbG51bSA6IGludFxuICAgIDsgcG9zX2JvbCA6IGludFxuICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICAgICAgIHRoZW4gMFxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbWF0Y2ggY29tcGFyZV9zdHJpbmcgYV9fMDAxXy5wb3NfZm5hbWUgYl9fMDAyXy5wb3NfZm5hbWUgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19sbnVtIGJfXzAwMl8ucG9zX2xudW0gd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19ib2wgYl9fMDAyXy5wb3NfYm9sIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMDFfLnBvc19jbnVtIGJfXzAwMl8ucG9zX2NudW1cbiAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgZnVuIGhzdiBhcmcgLT5cbiAgICAgIGxldCBoc3YgPVxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IGFyZy5wb3NfZm5hbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfbG51bVxuICAgICAgICBpblxuICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2JvbFxuICAgICAgaW5cbiAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfY251bVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW4geyBwb3NfZm5hbWUgPSBwb3NfZm5hbWVfXzAwNF9cbiAgICAgICAgIDsgcG9zX2xudW0gPSBwb3NfbG51bV9fMDA2X1xuICAgICAgICAgOyBwb3NfYm9sID0gcG9zX2JvbF9fMDA4X1xuICAgICAgICAgOyBwb3NfY251bSA9IHBvc19jbnVtX18wMTBfXG4gICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAzXyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2ludCBwb3NfY251bV9fMDEwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfY251bVwiOyBhcmdfXzAxMV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9pbnQgcG9zX2JvbF9fMDA4XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfYm9sXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBwb3NfbG51bV9fMDA2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfbG51bVwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgcG9zX2ZuYW1lX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19mbmFtZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwM19cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIFBweF9oZXJlLmxpZnRfcG9zaXRpb25fYXNfc3RyaW5nLiAqKVxubGV0IG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBbIHBvc19mbmFtZTsgXCI6XCI7IEludC50b19zdHJpbmcgcG9zX2xudW07IFwiOlwiOyBJbnQudG9fc3RyaW5nIChwb3NfY251bSAtIHBvc19ib2wpIF1cbjs7XG5cbmxldCB0b19zdHJpbmcgeyBDYW1sLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCB9ID1cbiAgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpc3QwXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIChmIHggOiBfIEVpdGhlcjAudCkgd2l0aFxuICAgICAgIHwgRmlyc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmRcbiAgICAgICB8IFNlY29uZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBDYW1sLnJlc3VsdCA9XG4gIHwgT2sgb2YgJ2FcbiAgfCBFcnJvciBvZiAnYlxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgZXF1YWwsIGhhc2hdXG5cbmxldCB0X29mX3NleHAgOlxuICAnYSAnYi5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYikgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnYSwgJ2IpIHRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDE3XyBiX18wMThfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE3XykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBiX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoYV9fMDE3XywgYl9fMDE4XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMDVfID0gXCJyZXN1bHQubWwudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMDFfIF9vZl9iX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcIm9rXCIgfCBcIk9rXCIpIGFzIF90YWdfXzAwOF8pIDo6IHNleHBfYXJnc19fMDA5XykgYXNcbiAgICAgICAgX3NleHBfXzAwN18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDA5XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDEwXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTFfID0gX29mX2FfXzAwMV8gYXJnMF9fMDEwXyBpblxuICAgICAgICAgICBPayByZXMwX18wMTFfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAwOF9cbiAgICAgICAgICAgICBfc2V4cF9fMDA3XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgX3RhZ19fMDEzXykgOjogc2V4cF9hcmdzX18wMTRfKSBhc1xuICAgICAgICBfc2V4cF9fMDEyXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTRfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTVfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYl9fMDAyXyBhcmcwX18wMTVfIGluXG4gICAgICAgICAgIEVycm9yIHJlczBfXzAxNl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDEzX1xuICAgICAgICAgICAgIF9zZXhwX18wMTJfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwib2tcIiB8IFwiT2tcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDI1XyBiX18wMjZfKVxuICAgICAgOiAgKChhX18wMjVfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMjVfLCBiX18wMjZfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxOV8gX29mX2JfXzAyMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDIxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDIyXyBdXG4gICAgICB8IEVycm9yIGFyZzBfXzAyM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyNF8gPSBfb2ZfYl9fMDIwXyBhcmcwX18wMjNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkVycm9yXCI7IHJlczBfXzAyNF8gXVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJPa1wiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXJyb3JcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAyN18gYl9fMDI4XyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMjdfIGJfXzAyOF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAyN18sIGJfXzAyOF8gd2l0aFxuICAgIHwgT2sgX2FfXzAyOV8sIE9rIF9iX18wMzBfIC0+IF9jbXBfX2EgX2FfXzAyOV8gX2JfXzAzMF9cbiAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICB8IF8sIE9rIF8gLT4gMVxuICAgIHwgRXJyb3IgX2FfXzAzMV8sIEVycm9yIF9iX18wMzJfIC0+IF9jbXBfX2IgX2FfXzAzMV8gX2JfXzAzMl8pXG47O1xuXG5sZXQgZXF1YWwgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDMzXyBiX18wMzRfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzM18gYl9fMDM0X1xuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDMzXywgYl9fMDM0XyB3aXRoXG4gICAgfCBPayBfYV9fMDM1XywgT2sgX2JfXzAzNl8gLT4gX2NtcF9fYSBfYV9fMDM1XyBfYl9fMDM2X1xuICAgIHwgT2sgXywgXyAtPiBmYWxzZVxuICAgIHwgXywgT2sgXyAtPiBmYWxzZVxuICAgIHwgRXJyb3IgX2FfXzAzN18sIEVycm9yIF9iX18wMzhfIC0+IF9jbXBfX2IgX2FfXzAzN18gX2JfXzAzOF8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGEgYi5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGEsIGIpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgT2sgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICB8IEVycm9yIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbjs7XG5cbltAQEBlbmRdXG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gT2sgKGYgeClcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IHJldHVybiB4ID0gT2sgeFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgY2hlY2tfb2sgY2hlY2tfZXJyb3IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIG9rIC0+IGNoZWNrX29rIG9rXG4gIHwgRXJyb3IgZXJyb3IgLT4gY2hlY2tfZXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBmYWlsIHggPSBFcnJvciB4XG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5cbmxldCBtYXBfZXJyb3IgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIF8gYXMgeCAtPiB4XG4gIHwgRXJyb3IgeCAtPiBFcnJvciAoZiB4KVxuOztcblxubW9kdWxlIEVycm9yID0gTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPayBfIGFzIG9rIC0+IG9rXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcF9lcnJvclxuICAgIGxldCByZXR1cm4gZSA9IEVycm9yIGVcbiAgZW5kKVxuXG5sZXQgaXNfb2sgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBmYWxzZVxuICB8IEVycm9yIF8gLT4gdHJ1ZVxuOztcblxubGV0IG9rID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IFNvbWUgeFxuICB8IEVycm9yIF8gLT4gTm9uZVxuOztcblxubGV0IGVycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IE5vbmVcbiAgfCBFcnJvciB4IC0+IFNvbWUgeFxuOztcblxubGV0IG9mX29wdGlvbiBvcHQgfmVycm9yID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT4gRXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBpdGVyIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayB4IC0+IGYgeFxuICB8IEVycm9yIF8gLT4gKClcbjs7XG5cbmxldCBpdGVyX2Vycm9yIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayBfIC0+ICgpXG4gIHwgRXJyb3IgeCAtPiBmIHhcbjs7XG5cbmxldCB0b19laXRoZXIgOiBfIHQgLT4gXyBFaXRoZXIudCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBGaXJzdCB4XG4gIHwgRXJyb3IgeCAtPiBTZWNvbmQgeFxuOztcblxubGV0IG9mX2VpdGhlciA6IF8gRWl0aGVyLnQgLT4gXyB0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IE9rIHhcbiAgfCBTZWNvbmQgeCAtPiBFcnJvciB4XG47O1xuXG5sZXQgb2tfaWZfdHJ1ZSBib29sIH5lcnJvciA9IGlmIGJvb2wgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yXG5cbmxldCB0cnlfd2l0aCBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIGV4blxuOztcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IG9rX29yX2ZhaWx3aXRoID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBzdHIgLT4gZmFpbHdpdGggc3RyXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdvaywgJ2VycikgX3Jlc3VsdCA9ICgnb2ssICdlcnIpIHQgPVxuICAgIHwgT2sgb2YgJ29rXG4gICAgfCBFcnJvciBvZiAnZXJyXG5cbiAgbGV0IGlzX2Vycm9yID0gaXNfZXJyb3JcbiAgbGV0IGlzX29rID0gaXNfb2tcbmVuZFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgT2sgXywgRXJyb3IgZSB8IEVycm9yIGUsIE9rIF8gLT4gRXJyb3IgZVxuICB8IE9rIG9rMSwgT2sgb2syIC0+IE9rIChvayBvazEgb2syKVxuICB8IEVycm9yIGVycjEsIEVycm9yIGVycjIgLT4gRXJyb3IgKGVyciBlcnIxIGVycjIpXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QxLnBhcnRpdGlvbl9tYXAgbCB+Zjp0b19laXRoZXIgaW5cbiAgbWF0Y2ggZXJycyB3aXRoXG4gIHwgW10gLT4gT2sgb2tcbiAgfCBfIDo6IF8gLT4gRXJyb3IgZXJyc1xuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IG1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZyBmb3IgZXhwb3J0IG9ubHkgKilcbmxldCBva19mc3QgPSB0b19laXRoZXJcbiIsIigqKiBQcm92aWRlcyBnZW5lcmljIHNpZ25hdHVyZXMgZm9yIGNvbnRhaW5lciBkYXRhIHN0cnVjdHVyZXMuXG5cbiAgICBUaGVzZSBzaWduYXR1cmVzIGluY2x1ZGUgZnVuY3Rpb25zIChbaXRlcl0sIFtmb2xkXSwgW2V4aXN0c10sIFtmb3JfYWxsXSwgLi4uKSB0aGF0XG4gICAgeW91IHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGFueSBjb250YWluZXIuIFVzZWQgYnkgaW5jbHVkaW5nIFtDb250YWluZXIuUzBdIG9yXG4gICAgW0NvbnRhaW5lci5TMV0gaW4gdGhlIHNpZ25hdHVyZSBmb3IgZXZlcnkgY29udGFpbmVyLWxpa2UgZGF0YSBzdHJ1Y3R1cmUgKFtBcnJheV0sXG4gICAgW0xpc3RdLCBbU3RyaW5nXSwgLi4uKSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IGludGVyZmFjZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCoqIFtDb250aW51ZV9vcl9zdG9wLnRdIGlzIHVzZWQgYnkgdGhlIFtmXSBhcmd1bWVudCB0byBbZm9sZF91bnRpbF0gaW4gb3JkZXIgdG9cbiAgICAgIGluZGljYXRlIHdoZXRoZXIgZm9sZGluZyBzaG91bGQgY29udGludWUsIG9yIHN0b3AgZWFybHkuXG5cbiAgICAgIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuQ29udGludWVfb3Jfc3RvcFxuICAqKVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB8IENvbnRpbnVlIG9mICdhXG4gICAgICB8IFN0b3Agb2YgJ2JcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuU3VtbWFibGUgKilcbm1vZHVsZSB0eXBlIFN1bW1hYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqKiBUaGUgcmVzdWx0IG9mIHN1bW1pbmcgbm8gdmFsdWVzLiAqKVxuICB2YWwgemVybyA6IHRcblxuICAoKiogQW4gb3BlcmF0aW9uIHRoYXQgY29tYmluZXMgdHdvIFt0XSdzIGFuZCBoYW5kbGVzIFt6ZXJvICsgeF0gYnkganVzdCByZXR1cm5pbmcgW3hdLFxuICAgICAgYXMgd2VsbCBhcyBpbiB0aGUgc3ltbWV0cmljIGNhc2UuICopXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVyIC0gYSBjb250YWluZXIgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlLCBlLmcuLFxuICAgIHN0cmluZywgd2hpY2ggaXMgYSBjb250YWluZXIgb2YgY2hhcmFjdGVycyAoW3R5cGUgZWx0ID0gY2hhcl0pIGFuZCBuZXZlciBvZiBhbnl0aGluZ1xuICAgIGVsc2UuICopXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBlbHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5cbiAgKCoqIFtpdGVyXSBtdXN0IGFsbG93IGV4Y2VwdGlvbnMgcmFpc2VkIGluIFtmXSB0byBlc2NhcGUsIHRlcm1pbmF0aW5nIHRoZSBpdGVyYXRpb25cbiAgICAgIGNsZWFubHkuICBUaGUgc2FtZSBob2xkcyBmb3IgYWxsIGZ1bmN0aW9ucyBiZWxvdyB0YWtpbmcgYW4gW2ZdLiAqKVxuICB2YWwgaXRlciA6IHQgLT4gZjooZWx0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+IHQgLT4gZjooZWx0IC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiB0IC0+IGY6KGVsdCAtPiAnYSBvcHRpb24pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwLiBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWVcbiAgICAgIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiBfIHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IF8gdCAtPiBmOihlbHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiBfIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAgICAgZWxlbWVudHMgd2lsbCBiZSBzdW1tZWQgaXMgdW5zcGVjaWZpZWQuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gXyB0IC0+IGY6KGVsdCAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiBfIHQgLT4gZjooZWx0IC0+ICdhIG9wdGlvbikgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiBfIHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogXyB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gKilcbiAgdmFsIG1pbl9lbHQgOiBfIHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IF8gdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIHBvbHltb3JwaGljIGNvbnRhaW5lciwgZS5nLiwgWydhIGxpc3RdIG9yIFsnYSBhcnJheV0uICopXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XSAgKilcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiAnYSB0IC0+IGY6KCdhIC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbmltdW0gKHJlc3AgbWF4aW11bSkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZFxuICAgICAgW2NvbXBhcmVdIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdFxuICAgICAgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5IGFzIFtmb2xkXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5XG4gICAgICBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICsncGhhbnRvbSkgdFxuXG4gIGluY2x1ZGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdlbmVyaWMgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gJ2EgdCAtPiBmOignYSBlbHQgLT4gJ3N1bSkgLT4gJ3N1bVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2EgZWx0IC0+IGludCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIGVsdCAtPiAnc3VtKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2dlbl9hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogVGhlIFtpdGVyXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2l0ZXJdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lIFtpdGVyXVxuICAgICAgdmlhOlxuXG4gICAgICB7W1xuICAgICAgICBpdGVyIHQgfmYgPSBDb250YWluZXIuaXRlciB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtpdGVyXSwgc28gcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFtpdGVyXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeVxuICAgICAgYXMgd2VsbC4gKilcbiAgdmFsIGl0ZXIgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdCBdXG5cbiAgKCoqIFRoZSBbbGVuZ3RoXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2xlbmd0aF0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmVcbiAgICAgIFtsZW5ndGhdIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgbGVuZ3RoIHQgfmYgPSBDb250YWluZXIubGVuZ3RoIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2xlbmd0aF0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbGVuZ3RoXSB3aWxsIGltcHJvdmUgdGhlaXJcbiAgICAgIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIGxlbmd0aCA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAnYSB0IC0+IGludCBdXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBNb25hZC5JZGVudC50XG5cbm1vZHVsZSB0eXBlIE1ha2UwX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgJ2EgdCA6PSB0IGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbnRhaW5lciA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMwID0gUzBcbiAgbW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IFMwX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tX2ludmFyaWFudCA9IFMxX3BoYW50b21faW52YXJpYW50XG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBTMV9waGFudG9tXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWMgPSBHZW5lcmljXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWNfcGhhbnRvbSA9IEdlbmVyaWNfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTdW1tYWJsZSA9IFN1bW1hYmxlXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2ZvbGRdLlxuXG4gICAgICBFLmcuOiBbaXRlciB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpXS4gKilcblxuICB0eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9ICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuICB0eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbiAgdmFsIGl0ZXIgOiBmb2xkOigndCwgJ2EsIHVuaXQpIGZvbGQgLT4gKCd0LCAnYSkgaXRlclxuICB2YWwgY291bnQgOiBmb2xkOigndCwgJ2EsIGludCkgZm9sZCAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgbWluX2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBsZW5ndGggOiBmb2xkOigndCwgXywgaW50KSBmb2xkIC0+ICd0IC0+IGludFxuICB2YWwgdG9fbGlzdCA6IGZvbGQ6KCd0LCAnYSwgJ2EgbGlzdCkgZm9sZCAtPiAndCAtPiAnYSBsaXN0XG5cbiAgdmFsIHN1bVxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ3N1bSkgZm9sZFxuICAgIC0+IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICd0XG4gICAgLT4gZjooJ2EgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYikgZm9sZFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdlKSBSZXN1bHQudClcbiAgICAtPiAndFxuICAgIC0+ICgnYiwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBmb2xkOigndCwgJ2EsICdiKSBmb2xkXG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ3RcbiAgICAtPiAnZmluYWxcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbaXRlcl0gYW5kIFtsZW5ndGhdLiAqKVxuICB2YWwgaXNfZW1wdHkgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gYm9vbFxuXG4gIHZhbCBleGlzdHMgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmaW5kIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2FycmF5IDogbGVuZ3RoOid0IGxlbmd0aCAtPiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgYXJyYXlcblxuICAoKiogVGhlIGlkaW9tIGZvciB1c2luZyBbQ29udGFpbmVyLk1ha2VdIGlzIHRvIGJpbmQgdGhlIHJlc3VsdGluZyBtb2R1bGUgYW5kIHRvXG4gICAgICBleHBsaWNpdGx5IGltcG9ydCBlYWNoIG9mIHRoZSBmdW5jdGlvbnMgdGhhdCBvbmUgd2FudHM6XG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgICBsZXQgY291bnQgICAgPSBDLmNvdW50XG4gICAgICAgIGxldCBleGlzdHMgICA9IEMuZXhpc3RzXG4gICAgICAgIGxldCBmaW5kICAgICA9IEMuZmluZFxuICAgICAgICAoKiAuLi4gKilcbiAgICAgIF19XG5cbiAgICAgIFRoaXMgaXMgcHJlZmVyYWJsZSB0bzpcblxuICAgICAge1tcbiAgICAgICAgaW5jbHVkZSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICBdfVxuXG4gICAgICBiZWNhdXNlIHRoZSBbaW5jbHVkZV0gbWFrZXMgaXQgdG9vIGVhc3kgdG8gc2hhZG93IHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICAgY29udGFpbmVyIGZ1bmN0aW9ucyAoW2xlbmd0aF0gYmVpbmcgYSBjb21tb24gb25lKS5cblxuICAgICAgW0NvbnRhaW5lci5NYWtlMF0gaXMgbGlrZSBbQ29udGFpbmVyLk1ha2VdLCBidXQgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lcnMgbGlrZVxuICAgICAgW3N0cmluZ10uICopXG4gIG1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA6IFMwIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBlbHQgOj0gVC5FbHQudFxuXG4gIG1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICAgIEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBDb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9ICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxudHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxudHlwZSAndCBsZW5ndGggPSAndCAtPiBpbnRcblxubGV0IGl0ZXIgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKVxubGV0IGNvdW50IH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gYSAtPiBpZiBmIGEgdGhlbiBuICsgMSBlbHNlIG4pXG5cbmxldCBzdW0gKHR5cGUgYSkgfmZvbGQgKG1vZHVsZSBNIDogU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgZm9sZCB0IH5pbml0Ok0uemVybyB+ZjooZnVuIG4gYSAtPiBNLiggKyApIG4gKGYgYSkpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIFJlc3VsdC5Pa1xuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgUmVzdWx0Lk9rIHggLT4geFxuICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGUpKSlcbjs7XG5cbmxldCBmb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIH5maW5pc2ggdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIGZpbmlzaFxuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSB4IC0+IHhcbiAgICAgICAgIHwgU3RvcCB4IC0+IHJldHVybiB4KSkpXG47O1xuXG5sZXQgbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWluIC0+IGlmIGNvbXBhcmUgbWluIGVsdCA+IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYylcbjs7XG5cbmxldCBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtYXggLT4gaWYgY29tcGFyZSBtYXggZWx0IDwgMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKVxuOztcblxubGV0IGxlbmd0aCB+Zm9sZCBjID0gZm9sZCBjIH5pbml0OjAgfmY6KGZ1biBhY2MgXyAtPiBhY2MgKyAxKVxuXG5sZXQgaXNfZW1wdHkgfml0ZXIgYyA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIF8gLT4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZXhpc3RzIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGZvcl9hbGwgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgbm90IChmIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZmluZF9tYXAgfml0ZXIgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgdCB+ZjooZnVuIHggLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZCB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiAoU29tZSB4KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCB0b19saXN0IH5mb2xkIGMgPSBMaXN0LnJldiAoZm9sZCBjIH5pbml0OltdIH5mOihmdW4gYWNjIHggLT4geCA6OiBhY2MpKVxuXG5sZXQgdG9fYXJyYXkgfmxlbmd0aCB+aXRlciBjID1cbiAgbGV0IGFycmF5ID0gcmVmIFt8fF0gaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICBpdGVyIGMgfmY6KGZ1biB4IC0+XG4gICAgaWYgIWkgPSAwIHRoZW4gYXJyYXkgOj0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCBjKSB4O1xuICAgICFhcnJheS4oIWkpIDwtIHg7XG4gICAgaW5jciBpKTtcbiAgIWFycmF5XG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDogc2lnXG4gIGluY2x1ZGUgR2VuZXJpYyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuZW5kID0gc3RydWN0XG4gIGxldCBmb2xkID0gVC5mb2xkXG5cbiAgbGV0IGl0ZXIgPVxuICAgIG1hdGNoIFQuaXRlciB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXIgLT4gaXRlclxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXIgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBsZW5ndGggPVxuICAgIG1hdGNoIFQubGVuZ3RoIHdpdGhcbiAgICB8IGBDdXN0b20gbGVuZ3RoIC0+IGxlbmd0aFxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IC0+IGxlbmd0aCB+Zm9sZCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBpc19lbXB0eSB+aXRlciB0XG4gIGxldCBzdW0gbSB0ID0gc3VtIH5mb2xkIG0gdFxuICBsZXQgY291bnQgdCB+ZiA9IGNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzIH5pdGVyIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGwgfml0ZXIgdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmQgfml0ZXIgdCB+ZlxuICBsZXQgdG9fbGlzdCB0ID0gdG9fbGlzdCB+Zm9sZCB0XG4gIGxldCB0b19hcnJheSB0ID0gdG9fYXJyYXkgfmxlbmd0aCB+aXRlciB0XG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBtaW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IGZvbGRfcmVzdWx0IHQgfmZvbGQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gZm9sZF91bnRpbCB0IH5mb2xkIH5pbml0IH5mIH5maW5pc2hcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCBhIH5lcXVhbCA9IGV4aXN0cyB0IH5mOihlcXVhbCBhKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IGVsdCA9IGV4aXN0cyB0IH5mOihULkVsdC5lcXVhbCBlbHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDYW1sLkxhenlcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsYXp5X3Rfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGF6eV90XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxhenlfdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxubGV0IG1hcCB0IH5mID0gbGF6eSAoZiAoZm9yY2UgdCkpXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiAwIGVsc2UgY29tcGFyZV9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPSBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gdHJ1ZSBlbHNlIGVxdWFsX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG5sZXQgaGFzaF9mb2xkX3QgPSBIYXNoLkJ1aWx0aW4uaGFzaF9mb2xkX2xhenlfdFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuIHggPSBmcm9tX3ZhbCB4XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGxhenkgKGZvcmNlIChmIChmb3JjZSB0KSkpXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBUX3VuZm9yY2luZyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIGlzX3ZhbCB0IHRoZW4gc2V4cF9vZl9hIChmb3JjZSB0KSBlbHNlIHNleHBfb2Zfc3RyaW5nIFwiPHVuZm9yY2VkIGxhenk+XCJcbiAgOztcbmVuZFxuIiwiKCogU3BsaXQgb2ZmIHRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3kgd2l0aCBbT3JfZXJyb3JdLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgcG9zaXRpb246ICVkXCIgcG9zICgpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgbGVuZ3RoOiAlZFwiIGxlbiAoKTtcbiAgKCogV2UgdXNlIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiB0b3RhbF9sZW5ndGhdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicG9zICsgbGVuIHBhc3QgZW5kOiAlZCArICVkID4gJWRcIiBwb3MgbGVuIHRvdGFsX2xlbmd0aCAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gICgqIFRoaXMgaXMgYmV0dGVyIHRoYW4gW3Nsb3dfY2hlY2tfcG9zX2xlbl9leG5dIGZvciB0d28gcmVhc29uczpcblxuICAgICAtIG11Y2ggbGVzcyBpbmxpbmVkIGNvZGVcbiAgICAgLSBvbmx5IG9uZSBjb25kaXRpb25hbCBqdW1wXG5cbiAgICAgVGhlIHJlYXNvbiBpdCB3b3JrcyBpcyB0aGF0IGNoZWNraW5nIFs8IDBdIGlzIHRlc3RpbmcgdGhlIGhpZ2hlc3Qgb3JkZXIgYml0LCBzb1xuICAgICBbYSA8IDAgfHwgYiA8IDBdIGlzIHRoZSBzYW1lIGFzIFthIGxvciBiIDwgMF0uXG5cbiAgICAgW3BvcyArIGxlbl0gY2FuIG92ZXJmbG93LCBzbyBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSBpcyBub3QgZXF1aXZhbGVudCB0b1xuICAgICBbdG90YWxfbGVuZ3RoIC0gbGVuIC0gcG9zIDwgMF0sIHdlIG5lZWQgdG8gdGVzdCBmb3IgW3BvcyArIGxlbl0gb3ZlcmZsb3cgYXNcbiAgICAgd2VsbC4gKilcbiAgbGV0IHN0b3AgPSBwb3MgKyBsZW4gaW5cbiAgaWYgcG9zIGxvciBsZW4gbG9yIHN0b3AgbG9yICh0b3RhbF9sZW5ndGggLSBzdG9wKSA8IDBcbiAgdGhlbiBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoXG47O1xuXG5sZXQgZ2V0X3Bvc19sZW5fZXhuID8ocG9zID0gMCkgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgcG9zLCBsZW5cbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuID0gc2xvd19jaGVja19wb3NfbGVuX2V4blxuZW5kXG4iLCJcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3QgOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgaWR4IDogaW50XG4gICAgfVxuXG4gIGxldCBvZl9zdGF0ZSA6IENhbWwuUmFuZG9tLlN0YXRlLnQgLT4gdCA9IENhbWwuT2JqLm1hZ2ljXG5lbmRcblxubGV0IGFzc2lnbiB0MSB0MiA9XG4gIGxldCB0MSA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2UgdDEpIGluXG4gIGxldCB0MiA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2UgdDIpIGluXG4gIEFycmF5LmJsaXQgfnNyYzp0Mi5zdCB+c3JjX3BvczowIH5kc3Q6dDEuc3QgfmRzdF9wb3M6MCB+bGVuOihBcnJheS5sZW5ndGggdDEuc3QpO1xuICB0MS5pZHggPC0gdDIuaWR4XG5cbmxldCBtYWtlX2RlZmF1bHQgZGVmYXVsdCA9IGRlZmF1bHRcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfc3RhdGUgc3RhdGUgPSBzdGF0ZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIENoYXIgPSBDaGFyMFxuXG4oKiBVbmZvcnR1bmF0ZWx5LCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXMgbm90IGV4cG9zZVxuICAgW0NhbWwuUmFuZG9tLlN0YXRlLmRlZmF1bHRdLCB3ZSBoYXZlIHRvIGNvbnN0cnVjdCBvdXIgb3duLiAgV2UgdGhlbiBidWlsZCB0aGVcbiAgIFtDYW1sLlJhbmRvbS5pbnRdLCBbQ2FtbC5SYW5kb20uYm9vbF0gZnVuY3Rpb25zIGFuZCBmcmllbmRzIHVzaW5nIHRoYXQgZGVmYXVsdCBzdGF0ZSBpblxuICAgZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkuXG5cbiAgIE9uZSBvdGhlciB0cmlja2luZXNzIGlzIHRoYXQgd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIHVuZXhwb3NlZCBbQ2FtbC5SYW5kb20uU3RhdGUuYXNzaWduXVxuICAgZnVuY3Rpb24sIHdoaWNoIGFjY2Vzc2VzIHRoZSB1bmV4cG9zZWQgc3RhdGUgcmVwcmVzZW50YXRpb24uICBTbywgd2UgY29weSB0aGVcbiAgIFtTdGF0ZS5yZXByXSB0eXBlIGRlZmluaXRpb24gYW5kIFthc3NpZ25dIGZ1bmN0aW9uIHRvIGhlcmUgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSxcbiAgIGFuZCB1c2UgW09iai5tYWdpY10gdG8gZ2V0IGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbi4gKilcblxuKCogUmVncmVzc2lvbiB0ZXN0cyBvdWdodCB0byBiZSBkZXRlcm1pbmlzdGljIGJlY2F1c2UgdGhhdCB3YXkgYW55b25lIHdobyBicmVha3MgdGhlIHRlc3RcbiAgIGtub3dzIHRoYXQgaXQncyB0aGVpciBjb2RlIHRoYXQgYnJva2UgdGhlIHRlc3QuICBJZiB0ZXN0cyBhcmUgbm9uZGV0ZXJtaW5pc3RpYywgYSB0ZXN0XG4gICBmYWlsdXJlIG1heSBpbnN0ZWFkIGhhcHBlbiBiZWNhdXNlIHRoZSB0ZXN0IHJ1bm5lciBnb3QgdW5sdWNreSBhbmQgdW5jb3ZlcmVkIGFuXG4gICBleGlzdGluZyBidWcgaW4gdGhlIGNvZGUgc3VwcG9zZWRseSBiZWluZyBcInByb3RlY3RlZFwiIGJ5IHRoZSB0ZXN0IGluIHF1ZXN0aW9uLiAqKVxubGV0IGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHMgPVxuICBpZiBhbV90ZXN0aW5nXG4gIHRoZW4gKFxuICAgIG1hdGNoIGFsbG93X2luX3Rlc3RzIHdpdGhcbiAgICB8IFNvbWUgdHJ1ZSAtPiAoKVxuICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIFwiaW5pdGlhbGl6aW5nIFJhbmRvbSB3aXRoIGEgbm9uZGV0ZXJtaW5pc3RpYyBzZWVkIGlzIGZvcmJpZGRlbiBpbiBpbmxpbmUgdGVzdHNcIilcbjs7XG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkIDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubGV0IHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSA9XG4gIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gIHJhbmRvbV9zZWVkICgpXG47O1xuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgKCogV2UgYWxsb3cgbGF6aW5lc3Mgb25seSBmb3IgdGhlIGRlZmluaXRpb24gb2YgW2RlZmF1bHRdLCBiZWxvdywgd2hpY2ggbWF5IGxhemlseSBjYWxsXG4gICAgIFttYWtlX3NlbGZfaW5pdF0uIEZvciBhbGwgb3RoZXIgcHVycG9zZXMsIHdlIGNyZWF0ZSBhbmQgdXNlIFt0XSBlYWdlcmx5LiAqKVxuICB0eXBlIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS50IExhenkudFxuXG4gIGxldCBiaXRzIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHQpXG4gIGxldCBib29sIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS5ib29sIChMYXp5LmZvcmNlIHQpXG4gIGxldCBpbnQgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDMyIHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLmludDMyIChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDY0IHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLmludDY0IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG5hdGl2ZWludCB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5uYXRpdmVpbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbWFrZSBzZWVkID0gTGF6eS5mcm9tX3ZhbCAoQ2FtbC5SYW5kb20uU3RhdGUubWFrZSBzZWVkKVxuICBsZXQgY29weSB0ID0gTGF6eS5mcm9tX3ZhbCAoQ2FtbC5SYW5kb20uU3RhdGUuY29weSAoTGF6eS5mb3JjZSB0KSlcbiAgbGV0IGNoYXIgdCA9IGludCB0IDI1NiB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcbiAgbGV0IGFzY2lpIHQgPSBpbnQgdCAxMjggfD4gQ2hhci51bnNhZmVfb2ZfaW50XG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9XG4gICAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgICBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcbiAgOztcblxuICBsZXQgYXNzaWduID0gUmFuZG9tX3JlcHIuYXNzaWduXG5cbiAgbGV0IGZ1bGxfaW5pdCB0IHNlZWQgPSBhc3NpZ24gdCAobWFrZSBzZWVkKVxuXG4gIGxldCBkZWZhdWx0ID1cbiAgICBpZiBhbV90ZXN0aW5nXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBkZWZpbmUgQmFzZSdzIGRlZmF1bHQgcmFuZG9tIHN0YXRlIGFzIGEgY29weSBvZiBPQ2FtbCdzIGRlZmF1bHQgcmFuZG9tIHN0YXRlLlxuICAgICAgICAgVGhpcyBtZWFucyB0aGF0IHByb2dyYW1zIHRoYXQgdXNlIEJhc2UuUmFuZG9tIHdpbGwgc2VlIHRoZSBzYW1lIHNlcXVlbmNlIG9mXG4gICAgICAgICByYW5kb20gYml0cyBhcyBpZiB0aGV5IGhhZCB1c2VkIENhbWwuUmFuZG9tLiBIb3dldmVyLCBiZWNhdXNlIFtnZXRfc3RhdGVdIHJldHVybnNcbiAgICAgICAgIGEgY29weSwgQmFzZS5SYW5kb20gYW5kIE9DYW1sLlJhbmRvbSBhcmUgbm90IHVzaW5nIHRoZSBzYW1lIHN0YXRlLiBJZiBhIHByb2dyYW1cbiAgICAgICAgIHVzZWQgYm90aCwgZWFjaCBvZiB0aGVtIHdvdWxkIGdvIHRocm91Z2ggdGhlIHNhbWUgc2VxdWVuY2Ugb2YgcmFuZG9tIGJpdHMuIFRvXG4gICAgICAgICBhdm9pZCB0aGF0LCB3ZSByZXNldCBPQ2FtbCdzIHJhbmRvbSBzdGF0ZSB0byBhIGRpZmZlcmVudCBzZWVkLCBnaXZpbmcgaXQgYVxuICAgICAgICAgZGlmZmVyZW50IHNlcXVlbmNlLiAqKVxuICAgICAgbGV0IHQgPSBDYW1sLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgICAgIENhbWwuUmFuZG9tLmluaXQgMTM3O1xuICAgICAgTGF6eS5mcm9tX3ZhbCB0KVxuICAgIGVsc2VcbiAgICAgIGxhenlcbiAgICAgICAgKCogT3V0c2lkZSBvZiB0ZXN0cywgd2UgaW5pdGlhbGl6ZSByYW5kb20gc3RhdGUgbm9uZGV0ZXJtaW5pc3RpY2FsbHkgYW5kIGxhemlseS5cbiAgICAgICAgICAgV2UgZm9yY2UgdGhlIHJhbmRvbSBpbml0aWFsaXphdGlvbiB0byBiZSBsYXp5IHNvIHRoYXQgd2UgZG8gbm90IHBheSBhbnkgY29zdFxuICAgICAgICAgICBmb3IgaXQgaW4gcHJvZ3JhbXMgdGhhdCBkbyBub3QgdXNlIHJhbmRvbW5lc3MuICopXG4gICAgICAgIChMYXp5LmZvcmNlIChtYWtlX3NlbGZfaW5pdCAoKSkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl82NGJpdHMgdCBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMHgzRkZGRkZGRiAoKiAoMSBsc2wgMzApIC0gMSAqKVxuICAgIHRoZW4gaW50IHQgYm91bmRcbiAgICBlbHNlIENhbWwuSW50NjQudG9faW50IChpbnQ2NCB0IChDYW1sLkludDY0Lm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl8zMmJpdHMgdCBib3VuZCA9XG4gICAgKCogTm90IGFsd2F5cyB0cnVlIHdpdGggdGhlIEphdmFTY3JpcHQgYmFja2VuZC4gKilcbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgQ2FtbC5JbnQzMi50b19pbnQgKGludDMyIHQgKENhbWwuSW50MzIub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDY0ID1cbiAgICBsZXQgb3BlbiBDYW1sLkludDY0IGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+XG4gICAgICBsb2d4b3JcbiAgICAgICAgKGJpdHMgc3RhdGUpXG4gICAgICAgIChsb2d4b3IgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgNjApKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDMyID1cbiAgICBsZXQgb3BlbiBDYW1sLkludDMyIGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+IGxvZ3hvciAoYml0cyBzdGF0ZSkgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMgc3RhdGUgPSBDYW1sLkludDY0LnRvX2ludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyBzdGF0ZSA9IENhbWwuSW50MzIudG9faW50IChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuXG4gIGxldCBmdWxsX3JhbmdlX2ludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyBzdGF0ZSA9XG4gICAgQ2FtbC5JbnQ2NC50b19uYXRpdmVpbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyBzdGF0ZSA9XG4gICAgQ2FtbC5OYXRpdmVpbnQub2ZfaW50MzIgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgcmFpc2VfY3Jvc3NlZF9ib3VuZHMgbmFtZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCBzdHJpbmdfb2ZfYm91bmQgPVxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiUmFuZG9tLiVzOiBjcm9zc2VkIGJvdW5kcyBbJXMgPiAlc11cIlxuICAgICAgbmFtZVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCBsb3dlcl9ib3VuZClcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgdXBwZXJfYm91bmQpXG4gICAgICAoKVxuICBbQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuICA7O1xuXG4gIGxldCBpbnRfaW5jbCA9XG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnRcIiBsbyBoaSBJbnQudG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgICBpZiBkaWZmID0gSW50Lm1heF92YWx1ZVxuICAgICAgdGhlbiBsbyArIChmdWxsX3JhbmdlX2ludCBzdGF0ZSBsYW5kIEludC5tYXhfdmFsdWUpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMFxuICAgICAgdGhlbiBsbyArIGludCBzdGF0ZSAoSW50LnN1Y2MgZGlmZilcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50MzJfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBDYW1sLkludDMyIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQzMlwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwbFxuICAgICAgdGhlbiBhZGQgbG8gKGludDMyIHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfaW5jbCA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuTmF0aXZlaW50IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJuYXRpdmVpbnRcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBuXG4gICAgICB0aGVuIGFkZCBsbyAobmF0aXZlaW50IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBpbnQ2NF9pbmNsID1cbiAgICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludDY0IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDY0XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgICB0aGVuIGFkZCBsbyAoaW50NjQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgdW5pZm9ybWx5IHJhbmRvbSBmbG9hdCBpbiBbMCwgMSkuICopXG4gIGxldCByZWMgcmF3ZmxvYXQgc3RhdGUgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBzY2FsZSA9IDB4MXAtMzAgaW5cbiAgICAoKiAyXi0zMCAqKVxuICAgIGxldCByMSA9IENhbWwuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByMiA9IENhbWwuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByZXN1bHQgPSAoKHIxICouIHNjYWxlKSArLiByMikgKi4gc2NhbGUgaW5cbiAgICAoKiBXaXRoIHZlcnkgc21hbGwgcHJvYmFiaWxpdHksIHJlc3VsdCBjYW4gcm91bmQgdXAgdG8gMS4wLCBzbyBpbiB0aGF0IGNhc2UsIHdlIGp1c3RcbiAgICAgICB0cnkgYWdhaW4uICopXG4gICAgaWYgcmVzdWx0IDwgMS4wIHRoZW4gcmVzdWx0IGVsc2UgcmF3ZmxvYXQgc3RhdGVcbiAgOztcblxuICBsZXQgZmxvYXQgc3RhdGUgaGkgPSByYXdmbG9hdCBzdGF0ZSAqLiBoaVxuXG4gIGxldCBmbG9hdF9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiZmxvYXRcIiBsbyBoaSBDYW1sLnN0cmluZ19vZl9mbG9hdDtcbiAgICBsbyArLiBmbG9hdCBzdGF0ZSAoaGkgLS4gbG8pXG4gIDs7XG5lbmRcblxubGV0IGRlZmF1bHQgPSBSYW5kb21fcmVwci5tYWtlX2RlZmF1bHQgU3RhdGUuZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGludCB4ID0gU3RhdGUuaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDMyIHggPSBTdGF0ZS5pbnQzMiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBuYXRpdmVpbnQgeCA9IFN0YXRlLm5hdGl2ZWludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQ2NCB4ID0gU3RhdGUuaW50NjQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgZmxvYXQgeCA9IFN0YXRlLmZsb2F0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludF9pbmNsIHggeSA9IFN0YXRlLmludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50MzJfaW5jbCB4IHkgPSBTdGF0ZS5pbnQzMl9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgbmF0aXZlaW50X2luY2wgeCB5ID0gU3RhdGUubmF0aXZlaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQ2NF9pbmNsIHggeSA9IFN0YXRlLmludDY0X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBmbG9hdF9yYW5nZSB4IHkgPSBTdGF0ZS5mbG9hdF9yYW5nZSAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBjaGFyICgpID0gU3RhdGUuY2hhciAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgYXNjaWkgKCkgPSBTdGF0ZS5hc2NpaSAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkpXG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSBzXG4iLCIoKiogQW4gaW50ZXJuYWwtb25seSBtb2R1bGUgZmFjdG9yZWQgb3V0IGR1ZSB0byBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb3JlX2FycmF5XG4gICAgYW5kIGNvcmVfbGlzdC4gIENvbnRhaW5zIGNvZGUgZm9yIHBlcm11dGluZyBhbiBhcnJheS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSA/KHBvcyA9IDApID9sZW4gdCA9XG4gICgqIENvcGllZCBmcm9tIFtPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMF0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlIHdoZW4gY29tcGlsaW5nXG4gICAgIHdpdGhvdXQgZmxhbWJkYS4gKilcbiAgbGV0IHRvdGFsX2xlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBTb21lIGwgLT4gbFxuICAgIHwgTm9uZSAtPiB0b3RhbF9sZW5ndGggLSBwb3NcbiAgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAuY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIGxldCBudW1fc3dhcHMgPSBsZW4gLSAxIGluXG4gIGZvciBpID0gbnVtX3N3YXBzIGRvd250byAxIGRvXG4gICAgbGV0IHRoaXNfaSA9IHBvcyArIGkgaW5cbiAgICAoKiBbcmFuZG9tX2ldIGlzIGRyYXduIGZyb20gW3Bvcyx0aGlzX2ldICopXG4gICAgbGV0IHJhbmRvbV9pID0gcG9zICsgUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGkgKyAxKSBpblxuICAgIHN3YXAgdCB0aGlzX2kgcmFuZG9tX2lcbiAgZG9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiB0aGlzIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBbQ2FtbC5pZ25vcmVdICopXG5cbmxldCBub24gZiB4ID0gbm90IChmIHgpXG5cbmxldCBmb3JldmVyIGYgPVxuICBsZXQgcmVjIGZvcmV2ZXIgKCkgPVxuICAgIGYgKCk7XG4gICAgZm9yZXZlciAoKVxuICBpblxuICB0cnkgZm9yZXZlciAoKSB3aXRoXG4gIHwgZSAtPiBlXG47O1xuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlIHR5cGljYWwgdXNlIGNhc2UgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwYXNzIGluIGZ1bmN0aW9uYWwgYXJndW1lbnRzIGFuZCBnZXRcbiAgIGZ1bmN0aW9ucyBhcyBhIHJlc3VsdC4gKilcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IHJlYyBhcHBseV9uX3RpbWVzIH5uIGYgeCA9IGlmIG4gPD0gMCB0aGVuIHggZWxzZSBhcHBseV9uX3RpbWVzIH5uOihuIC0gMSkgZiAoZiB4KVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTGVzcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBFcXVhbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBHcmVhdGVyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBMZXNzOyBFcXVhbDsgR3JlYXRlciBdIDogdCBsaXN0KVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcIm9yZGVyaW5nLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSAtPiBMZXNzXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSAtPiBFcXVhbFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIC0+IEdyZWF0ZXJcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBMZXNzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkxlc3NcIlxuICAgIHwgRXF1YWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXF1YWxcIlxuICAgIHwgR3JlYXRlciAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJHcmVhdGVyXCJcbiAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTGVzc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiRXF1YWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkdyZWF0ZXJcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgX29yZGVyaW5nID0gdCA9XG4gICAgfCBMZXNzXG4gICAgfCBFcXVhbFxuICAgIHwgR3JlYXRlclxuZW5kXG5cbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTGVzcyBlbHNlIGlmIG4gPSAwIHRoZW4gRXF1YWwgZWxzZSBHcmVhdGVyXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IExlc3MgLT4gLTFcbiAgfCBFcXVhbCAtPiAwXG4gIHwgR3JlYXRlciAtPiAxXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cblxuaW5jbHVkZSBMaXN0MVxuXG4oKiBUaGlzIGl0c2VsZiBpbmNsdWRlcyBbTGlzdDBdLiAqKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxpc3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9saXN0XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsaXN0X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgT3JfdW5lcXVhbF9sZW5ndGhzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgVW5lcXVhbF9sZW5ndGhzXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNl8gYl9fMDA3XyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwNl8gYl9fMDA3X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA2XywgYl9fMDA3XyB3aXRoXG4gICAgICB8IE9rIF9hX18wMDhfLCBPayBfYl9fMDA5XyAtPiBfY21wX19hIF9hX18wMDhfIF9iX18wMDlfXG4gICAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICAgIHwgXywgT2sgXyAtPiAxXG4gICAgICB8IFVuZXF1YWxfbGVuZ3RocywgVW5lcXVhbF9sZW5ndGhzIC0+IDApXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAxM18pIDogKChhX18wMTNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDEzXyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDExXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMTBfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDEyXyBdXG4gICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmVxdWFsX2xlbmd0aHNcIlxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnZhcmlhbnQgZiB0ID0gaXRlciB0IH5mXG5sZXQgb2ZfbGlzdCB0ID0gdFxuXG5sZXQgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGUgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgbGV0IG5leHRfaSA9IHN0cmlkZSBzdGFydF9pIGluXG4gIGxldCBvcmRlciB4IHkgPSBPcmRlcmluZy5vZl9pbnQgKGNvbXBhcmUgeCB5KSBpblxuICBsZXQgcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKSA9XG4gICAgaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlJzogc3RyaWRlIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gdGhlIHNhbWUgdmFsdWVcIlxuICBpblxuICBsZXQgaW5pdGlhbF9zdHJpZGVfb3JkZXIgPVxuICAgIG1hdGNoIG9yZGVyIHN0YXJ0X2kgbmV4dF9pIHdpdGhcbiAgICB8IEVxdWFsIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICB8IExlc3MgLT4gYExlc3NcbiAgICB8IEdyZWF0ZXIgLT4gYEdyZWF0ZXJcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGxldCBpX3RvX3N0b3Bfb3JkZXIgPSBvcmRlciBpIHN0b3BfaSBpblxuICAgIG1hdGNoIGlfdG9fc3RvcF9vcmRlciwgaW5pdGlhbF9zdHJpZGVfb3JkZXIgd2l0aFxuICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPlxuICAgICAgKCogaGF2ZW4ndCB5ZXQgcmVhY2hlZCBbc3RvcF9pXS4gQ29udGludWUuICopXG4gICAgICBsZXQgbmV4dF9pID0gc3RyaWRlIGkgaW5cbiAgICAgIChtYXRjaCBvcmRlciBpIG5leHRfaSwgaW5pdGlhbF9zdHJpZGVfb3JkZXIgd2l0aFxuICAgICAgIHwgRXF1YWwsIF8gLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgICAgIHwgTGVzcywgYEdyZWF0ZXIgfCBHcmVhdGVyLCBgTGVzcyAtPlxuICAgICAgICAgaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlJzogc3RyaWRlIGZ1bmN0aW9uIGNhbm5vdCBjaGFuZ2UgZGlyZWN0aW9uXCJcbiAgICAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT4gbG9vcCBuZXh0X2kgKGkgOjogYWNjdW0pKVxuICAgIHwgTGVzcywgYEdyZWF0ZXIgfCBHcmVhdGVyLCBgTGVzcyAtPlxuICAgICAgKCogc3RlcHBlZCBwYXN0IFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICBhY2N1bVxuICAgIHwgRXF1YWwsIF8gLT5cbiAgICAgICgqIHJlYWNoZWQgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIChtYXRjaCBzdG9wIHdpdGhcbiAgICAgICB8IGBpbmNsdXNpdmUgLT4gaSA6OiBhY2N1bVxuICAgICAgIHwgYGV4Y2x1c2l2ZSAtPiBhY2N1bSlcbiAgaW5cbiAgbGV0IHN0YXJ0X2kgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfaVxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBuZXh0X2lcbiAgaW5cbiAgcmV2IChsb29wIHN0YXJ0X2kgW10pXG47O1xuXG5sZXQgcmFuZ2UgPyhzdHJpZGUgPSAxKSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBpZiBzdHJpZGUgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlOiBzdHJpZGUgbXVzdCBiZSBub24temVyb1wiO1xuICByYW5nZScgfmNvbXBhcmUgfnN0cmlkZTooZnVuIHggLT4geCArIHN0cmlkZSkgfnN0YXJ0IH5zdG9wIHN0YXJ0X2kgc3RvcF9pXG47O1xuXG5sZXQgaGQgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IF8gLT4gU29tZSB4XG47O1xuXG5sZXQgdGwgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBfIDo6IHQnIC0+IFNvbWUgdCdcbjs7XG5cbmxldCBudGggdCBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbnRoX2F1eCB0IG4gPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYSA6OiB0IC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCB0IChuIC0gMSlcbiAgICBpblxuICAgIG50aF9hdXggdCBuKVxuOztcblxubGV0IG50aF9leG4gdCBuID1cbiAgbWF0Y2ggbnRoIHQgbiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJMaXN0Lm50aF9leG4gJWQgY2FsbGVkIG9uIGxpc3Qgb2YgbGVuZ3RoICVkXCIgbiAobGVuZ3RoIHQpICgpXG4gIHwgU29tZSBhIC0+IGFcbjs7XG5cbmxldCB1bm9yZGVyZWRfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbCB8IGwsIFtdIC0+IGxcbiAgfCBfIC0+IHJldl9hcHBlbmQgbDEgbDJcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICB9XG5cbiAgKCogSW4gdGhlIFtVbmVxdWFsX2xlbmd0aHNdIGNhc2UsIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFpbHMgd2lsbCBiZSBub24tZW1wdHkuICopXG4gIGxldCBvZl9saXN0cyBsMSBsMiA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBbXSwgW10gLT4gU2FtZV9sZW5ndGggc2hhcmVkX2xlbmd0aFxuICAgICAgfCBfIDo6IGEsIF8gOjogYiAtPiBsb29wIGEgYiAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfIHwgXywgW10gLT4gVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hID0gYTsgdGFpbF9vZl9iID0gYiB9XG4gICAgaW5cbiAgICBsb29wIGwxIGwyIDBcbiAgOztcbmVuZFxuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSBsMSBsMiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gKClcbiAgfCBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2E7IHRhaWxfb2ZfYiB9IC0+XG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWRcIlxuICAgICAgbmFtZVxuICAgICAgKHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hKVxuICAgICAgKHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9iKVxuICAgICAgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgyIGwxIGwyIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9jIDogJ2MgbGlzdFxuICAgICAgICB9XG5cbiAgKCogSW4gdGhlIFtVbmVxdWFsX2xlbmd0aHNdIGNhc2UsIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFpbHMgd2lsbCBiZSBub24tZW1wdHkuICopXG4gIGxldCBvZl9saXN0cyBsMSBsMiBsMyA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiBjIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiwgYyB3aXRoXG4gICAgICB8IFtdLCBbXSwgW10gLT4gU2FtZV9sZW5ndGggc2hhcmVkX2xlbmd0aFxuICAgICAgfCBfIDo6IGEsIF8gOjogYiwgXyA6OiBjIC0+IGxvb3AgYSBiIGMgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXywgXyB8IF8sIFtdLCBfIHwgXywgXywgW10gLT5cbiAgICAgICAgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hID0gYTsgdGFpbF9vZl9iID0gYjsgdGFpbF9vZl9jID0gYyB9XG4gICAgaW5cbiAgICBsb29wIGwxIGwyIGwzIDBcbiAgOztcbmVuZFxuXG5sZXQgY2hlY2tfbGVuZ3RoM19leG4gbmFtZSBsMSBsMiBsMyA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gKClcbiAgfCBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2E7IHRhaWxfb2ZfYjsgdGFpbF9vZl9jIH0gLT5cbiAgICBsZXQgbjEgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSBpblxuICAgIGxldCBuMiA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9iIGluXG4gICAgbGV0IG4zID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2MgaW5cbiAgICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkIHx8ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiBuMiBuMyAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMiBsMylcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbmxldCBpdGVyMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGl0ZXIyX29rIH5mKVxuXG5sZXQgaXRlcjJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJpdGVyMl9leG5cIiBsMSBsMjtcbiAgaXRlcjJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KHJldl9tYXAyX29rIH5mKVxuXG5sZXQgcmV2X21hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJyZXZfbWFwMl9leG5cIiBsMSBsMjtcbiAgcmV2X21hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBmb2xkMiBsMSBsMiB+aW5pdCB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvbGQyX29rIH5pbml0IH5mKVxuXG5sZXQgZm9sZDJfZXhuIGwxIGwyIH5pbml0IH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb2xkMl9leG5cIiBsMSBsMjtcbiAgZm9sZDJfb2sgbDEgbDIgfmluaXQgfmZcbjs7XG5cbmxldCBmb3JfYWxsMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvcl9hbGwyX29rIH5mKVxuXG5sZXQgZm9yX2FsbDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb3JfYWxsMl9leG5cIiBsMSBsMjtcbiAgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBleGlzdHMyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZXhpc3RzMl9vayB+ZilcblxubGV0IGV4aXN0czJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJleGlzdHMyX2V4blwiIGwxIGwyO1xuICBleGlzdHMyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgZXF1YWwgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgYiA6OiBicyAtPiBlcXVhbCBhIGIgfHwgbG9vcCBlcXVhbCBhIGJzXG4gIGluXG4gIGxvb3AgZXF1YWwgYSB0XG47O1xuXG4oKiBUaGlzIGlzIGEgY29weSBvZiB0aGUgY29kZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIGFuIGV4dHJhIGV0YS1leHBhbnNpb24gdG9cbiAgIGF2b2lkIGNyZWF0aW5nIHBhcnRpYWwgY2xvc3VyZXMgKHNob3dlZCB1cCBmb3IgW2ZpbHRlcl0pIGluIHByb2ZpbGluZykuICopXG5sZXQgcmV2X2ZpbHRlciB0IH5mID1cbiAgbGV0IHJlYyBmaW5kIH5mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIGZpbmQgfmYgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgfmYgYWNjdSBsXG4gIGluXG4gIGZpbmQgfmYgW10gdFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gcmV2IChyZXZfZmlsdGVyIHQgfmYpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgbFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5sZXQgZmluZF9tYXBfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBsb29wIGxcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJlYyBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgeCA6OiB0IC0+IGlmIGYgeCB0aGVuIHggZWxzZSBmaW5kX2V4biB0IH5mXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiBpIHggdGhlbiBTb21lIChpLCB4KSBlbHNlIGxvb3AgKGkgKyAxKSBsXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG5sZXQgZmluZGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGZpbmRpX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgbClcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IGhkIDo6IHRsIC0+IGYgaSBoZCAmJiBsb29wIChpICsgMSkgdGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgfHwgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG4oKiogRm9yIHRoZSBjb250YWluZXIgaW50ZXJmYWNlLiAqKVxubGV0IGZvbGRfbGVmdCA9IGZvbGRcblxubGV0IHRvX2FycmF5ID0gQXJyYXkub2ZfbGlzdFxubGV0IHRvX2xpc3QgdCA9IHRcblxubGV0IG1heF9ub25fdGFpbGNhbGwgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDFfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3Mgc21hbGwuIFRoaXNcbiAgICAgbnVtYmVyIHdhcyB0YWtlbiBmcm9tIG9jYW1sI3N0ZGxpYi9saXN0Lm1sIHdoaWNoIGlzIGFsc28gZXF1YWwgdG8gdGhlIGRlZmF1bHQgbGltaXRcbiAgICAgb2YgcmVjdXJzaXZlIGNhbGwgaW4gdGhlIGpzX29mX29jYW1sIGNvbXBpbGVyIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdHJhbXBvbGluZS4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuOztcblxuKCoqIFRhaWwgcmVjdXJzaXZlIHZlcnNpb25zIG9mIHN0YW5kYXJkIFtMaXN0XSBtb2R1bGUgKilcblxubGV0IHRhaWxfYXBwZW5kIGwxIGwyID0gcmV2X2FwcGVuZCAocmV2IGwxKSBsMlxuXG4oKiBUaGVyZSBhcmUgYSBmZXcgb3B0aW1pemVkIGxpc3Qgb3BlcmF0aW9ucyBoZXJlLCBpbmNsdWRpbmcgYXBwZW5kIGFuZCBtYXAuICBUaGVyZSBhcmVcbiAgIGJhc2ljYWxseSB0d28gb3B0aW1pemF0aW9ucyBpbiBwbGF5OiBsb29wIHVucm9sbGluZywgYW5kIGR5bmFtaWMgc3dpdGNoaW5nIGJldHdlZW5cbiAgIHN0YWNrIGFuZCBoZWFwIGFsbG9jYXRpb24uXG5cbiAgIFRoZSBsb29wLXVucm9sbGluZyBpcyBzdHJhaWdodGZvcndhcmQsIHdlIGp1c3QgdW5yb2xsIDUgbGV2ZWxzIG9mIHRoZSBsb29wLiAgVGhpcyBtYWtlc1xuICAgZWFjaCBpdGVyYXRpb24gZmFzdGVyLCBhbmQgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIGNvbnN1bWVkIHBlciBsaXN0XG4gICBlbGVtZW50LlxuXG4gICBUaGUgZHluYW1pYyBzd2l0Y2hpbmcgaXMgZG9uZSBieSBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcywgYW5kIHRoZW5cbiAgIHN3aXRjaGluZyB0byB0aGUgXCJzbG93XCIgaW1wbGVtZW50YXRpb24gd2hlbiB3ZSBleGNlZWQgYSBnaXZlbiBsaW1pdC4gIFRoaXMgbWVhbnMgdGhhdFxuICAgc2hvcnQgbGlzdHMgdXNlIHRoZSBmYXN0IHN0YWNrLWFsbG9jYXRpb24gbWV0aG9kLCBhbmQgbG9uZyBsaXN0cyB1c2UgYSBzbG93ZXIgb25lIHRoYXRcbiAgIGRvZXNuJ3QgcmVxdWlyZSBzdGFjayBzcGFjZS4gKilcbmxldCByZWMgY291bnRfYXBwZW5kIGwxIGwyIGNvdW50ID1cbiAgbWF0Y2ggbDIgd2l0aFxuICB8IFtdIC0+IGwxXG4gIHwgXyAtPlxuICAgIChtYXRjaCBsMSB3aXRoXG4gICAgIHwgW10gLT4gbDJcbiAgICAgfCBbIHgxIF0gLT4geDEgOjogbDJcbiAgICAgfCBbIHgxOyB4MiBdIC0+IHgxIDo6IHgyIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzIF0gLT4geDEgOjogeDIgOjogeDMgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT4geDEgOjogeDIgOjogeDMgOjogeDQgOjogbDJcbiAgICAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgICAgIHgxXG4gICAgICAgOjogeDJcbiAgICAgICA6OiB4M1xuICAgICAgIDo6IHg0XG4gICAgICAgOjogeDVcbiAgICAgICA6OlxuICAgICAgIChpZiBjb3VudCA+IG1heF9ub25fdGFpbGNhbGxcbiAgICAgICAgdGhlbiB0YWlsX2FwcGVuZCB0bCBsMlxuICAgICAgICBlbHNlIGNvdW50X2FwcGVuZCB0bCBsMiAoY291bnQgKyAxKSkpXG47O1xuXG5sZXQgYXBwZW5kIGwxIGwyID0gY291bnRfYXBwZW5kIGwxIGwyIDBcblxuKCogQW4gb3JkaW5hcnkgdGFpbCByZWN1cnNpdmUgbWFwIGJ1aWxkcyB1cCBhbiBpbnRlcm1lZGlhdGUgKHJldmVyc2VkKSByZXByZXNlbnRhdGlvbixcbiAgIHdpdGggb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCBwZXIgZWxlbWVudC4gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIGNodW5rc1xuICAgOSBvYmplY3RzIGludG8gb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCwgcmVkdWNpbmcgYWxsb2NhdGlvbiBhbmQgcGVyZm9ybWFuY2UgY29zdHNcbiAgIGFjY29yZGluZ2x5LiBOb3RlIHRoYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0IGlzIGRvbmUgYnkgdGhlIHN0ZGxpYidzIG1hcFxuICAgZnVuY3Rpb24uICopXG5sZXQgdGFpbF9tYXAgeHMgfmYgPVxuICBsZXQgcmVjIHJpc2UgeXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4geXNcbiAgICB8ICh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicyAtPlxuICAgICAgcmlzZSAoeTAgOjogeTEgOjogeTIgOjogeTMgOjogeTQgOjogeTUgOjogeTYgOjogeTcgOjogeTggOjogeXMpIGJzXG4gIGluXG4gIGxldCByZWMgZGl2ZSBicyA9IGZ1bmN0aW9uXG4gICAgfCB4MCA6OiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB4NiA6OiB4NyA6OiB4OCA6OiB4cyAtPlxuICAgICAgbGV0IHkwID0gZiB4MCBpblxuICAgICAgbGV0IHkxID0gZiB4MSBpblxuICAgICAgbGV0IHkyID0gZiB4MiBpblxuICAgICAgbGV0IHkzID0gZiB4MyBpblxuICAgICAgbGV0IHk0ID0gZiB4NCBpblxuICAgICAgbGV0IHk1ID0gZiB4NSBpblxuICAgICAgbGV0IHk2ID0gZiB4NiBpblxuICAgICAgbGV0IHk3ID0gZiB4NyBpblxuICAgICAgbGV0IHk4ID0gZiB4OCBpblxuICAgICAgZGl2ZSAoKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzKSB4c1xuICAgIHwgeHMgLT4gcmlzZSAobm9udGFpbF9tYXAgfmYgeHMpIGJzXG4gIGluXG4gIGRpdmUgW10geHNcbjs7XG5cbmxldCByZWMgY291bnRfbWFwIH5mIGwgY3RyID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIHgxIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgWyBmMSBdXG4gIHwgWyB4MTsgeDIgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgWyBmMTsgZjIgXVxuICB8IFsgeDE7IHgyOyB4MyBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgWyBmMTsgZjI7IGYzIF1cbiAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgWyBmMTsgZjI7IGYzOyBmNCBdXG4gIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgbGV0IGY1ID0gZiB4NSBpblxuICAgIGYxXG4gICAgOjogZjJcbiAgICA6OiBmM1xuICAgIDo6IGY0XG4gICAgOjogZjVcbiAgICA6OiAoaWYgY3RyID4gbWF4X25vbl90YWlsY2FsbCB0aGVuIHRhaWxfbWFwIH5mIHRsIGVsc2UgY291bnRfbWFwIH5mIHRsIChjdHIgKyAxKSlcbjs7XG5cbmxldCBtYXAgbCB+ZiA9IGNvdW50X21hcCB+ZiBsIDBcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgKCA+PnwgKSBsIGYgPSBtYXAgbCB+ZlxubGV0IG1hcDJfb2sgbDEgbDIgfmYgPSByZXYgKHJldl9tYXAyX29rIGwxIGwyIH5mKVxubGV0IG1hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihtYXAyX29rIH5mKVxuXG5sZXQgbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIm1hcDJfZXhuXCIgbDEgbDI7XG4gIG1hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwM19vayBsMSBsMiBsMyB+ZiA9XG4gIGxldCByZWMgbG9vcCBsMSBsMiBsMyBhYyA9XG4gICAgbWF0Y2ggbDEsIGwyLCBsMyB3aXRoXG4gICAgfCBbXSwgW10sIFtdIC0+IGFjXG4gICAgfCB4MSA6OiBsMSwgeDIgOjogbDIsIHgzIDo6IGwzIC0+IGxvb3AgbDEgbDIgbDMgKGYgeDEgeDIgeDMgOjogYWMpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsb29wIGwxIGwyIGwzIFtdXG47O1xuXG5sZXQgcmV2X21hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihyZXZfbWFwM19vayB+ZilcblxubGV0IHJldl9tYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwicmV2X21hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIHJldl9tYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgbWFwM19vayBsMSBsMiBsMyB+ZiA9IHJldiAocmV2X21hcDNfb2sgbDEgbDIgbDMgfmYpXG5sZXQgbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KG1hcDNfb2sgfmYpXG5cbmxldCBtYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwibWFwM19leG5cIiBsMSBsMiBsMztcbiAgbWFwM19vayBsMSBsMiBsMyB+ZlxuOztcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZCBsMSBsMiB+ZiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPiBsMlxuICB8IGggOjogdCAtPiByZXZfbWFwX2FwcGVuZCB+ZiB0IChmIGggOjogbDIpXG47O1xuXG5sZXQgdW56aXAgbGlzdCA9XG4gIGxldCByZWMgbG9vcCBsaXN0IGwxIGwyID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGwxLCBsMlxuICAgIHwgKHgsIHkpIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW11cbjs7XG5cbmxldCB1bnppcDMgbGlzdCA9XG4gIGxldCByZWMgbG9vcCBsaXN0IGwxIGwyIGwzID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGwxLCBsMiwgbDNcbiAgICB8ICh4LCB5LCB6KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMikgKHogOjogbDMpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXSBbXVxuOztcblxubGV0IHppcF9leG4gbDEgbDIgPVxuICB0cnkgbWFwMl9vayB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMiB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gemlwX2V4bjogJWQgPD4gJWRcIiAobGVuZ3RoIGwxKSAobGVuZ3RoIGwyKSAoKVxuOztcblxubGV0IHppcCBsMSBsMiA9IG1hcDIgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDJcblxuKCoqIEFkZGl0aW9uYWwgbGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZXZfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaCA6OiB0IC0+IGxvb3AgKGkgKyAxKSAoZiBpIGggOjogYWNjKSB0XG4gIGluXG4gIGxvb3AgMCBbXSBsXG47O1xuXG5sZXQgbWFwaSBsIH5mID0gcmV2IChyZXZfbWFwaSBsIH5mKVxuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBpdGVyaSBsIH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgbCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBzbmQgKGZvbGQgdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB2IC0+IGkgKyAxLCBmIGkgYWNjIHYpKVxuOztcblxubGV0IGZpbHRlcmkgbCB+ZiA9XG4gIHJldiAoZm9sZGkgbCB+ZjooZnVuIHBvcyBhY2MgeCAtPiBpZiBmIHBvcyB4IHRoZW4geCA6OiBhY2MgZWxzZSBhY2MpIH5pbml0OltdKVxuOztcblxubGV0IHJlZHVjZSBsIH5mID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGhkIDo6IHRsIC0+IFNvbWUgKGZvbGQgfmluaXQ6aGQgfmYgdGwpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkIGwgfmYgPVxuICAoKiBDYWxsIHRoZSBcInNpemVcIiBvZiBhIHZhbHVlIHRoZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBjb21iaW5lZCBpbnRvXG4gICAgIGl0IHZpYSBjYWxscyB0byBbZl0uICBXZSBwcm9jZWVkIGJ5IHVzaW5nIFtmXSB0byBjb21iaW5lIGVsZW1lbnRzIGluIHRoZSBhY2N1bXVsYXRvclxuICAgICBvZiB0aGUgc2FtZSBzaXplIHVudGlsIHdlIGNhbid0IGNvbWJpbmUgYW55IG1vcmUsIHRoZW4gZ2V0dGluZyBhIG5ldyBlbGVtZW50IGZyb20gdGhlXG4gICAgIGlucHV0IGxpc3QgYW5kIHJlcGVhdGluZy5cblxuICAgICBXaXRoIHRoaXMgc3RyYXRlZ3ksIGluIHRoZSBhY2N1bXVsYXRvcjpcbiAgICAgLSB3ZSBvbmx5IGV2ZXIgaGF2ZSBlbGVtZW50cyBvZiBzaXplcyBhIHBvd2VyIG9mIHR3b1xuICAgICAtIHdlIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBlbGVtZW50IG9mIGVhY2ggc2l6ZVxuICAgICAtIHRoZSBzdW0gb2YgYWxsIHRoZSBlbGVtZW50IHNpemVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWRcblxuICAgICBUaGVzZSBjb25kaXRpb25zIGVuZm9yY2UgdGhhdCBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggc2l6ZSBpcyBwcmVjaXNlbHkgdGhlIGJpbmFyeVxuICAgICBleHBhbnNpb24gb2YgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZDogaWYgeW91J3ZlIGNvbnN1bWVkIDEzID0gMGIxMTAxXG4gICAgIGVsZW1lbnRzLCB5b3UgaGF2ZSBvbmUgZWxlbWVudCBvZiBzaXplIDgsIG9uZSBvZiBzaXplIDQsIGFuZCBvbmUgb2Ygc2l6ZSAxLiAgSGVuY2VcbiAgICAgd2hlbiBhIG5ldyBlbGVtZW50IGNvbWVzIGFsb25nLCB0aGUgbnVtYmVyIG9mIGNvbWJpbmluZ3MgeW91IG5lZWQgdG8gZG8gaXMgdGhlIG51bWJlclxuICAgICBvZiB0cmFpbGluZyAxcyBpbiB0aGUgYmluYXJ5IGV4cGFuc2lvbiBvZiBbbnVtXSwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGhhdmVcbiAgICAgYWxyZWFkeSBnb25lIGludG8gdGhlIGFjY3VtdWxhdG9yLiAgVGhlIGFjY3VtdWxhdG9yIGlzIGluIGFzY2VuZGluZyBvcmRlciBvZiBzaXplLCBzb1xuICAgICB0aGUgbmV4dCBlbGVtZW50IHRvIGNvbWJpbmUgd2l0aCBpcyBhbHdheXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QuICopXG4gIGxldCByZWMgc3RlcF9hY2N1bSBudW0gYWNjIHggPVxuICAgIGlmIG51bSBsYW5kIDEgPSAwXG4gICAgdGhlbiB4IDo6IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBOZXcgZWxlbWVudHMgZnJvbSBsYXRlciBpbiB0aGUgaW5wdXQgbGlzdCBnbyBvbiB0aGUgZnJvbnQgb2YgdGhlIGFjY3VtdWxhdG9yLCBzb1xuICAgICAgICAgdGhlIGFjY3VtdWxhdG9yIGlzIGluIHJldmVyc2Ugb3JkZXIgd3J0IHRoZSBvcmlnaW5hbCBsaXN0IG9yZGVyLCBoZW5jZSBbZiB5IHhdXG4gICAgICAgICBpbnN0ZWFkIG9mIFtmIHggeV0uICopXG4gICAgICB8IHkgOjogeXMgLT4gc3RlcF9hY2N1bSAobnVtIGFzciAxKSB5cyAoZiB5IHgpKVxuICBpblxuICAoKiBFeHBlcmltZW50YWxseSwgaW5saW5pbmcgW2ZvbGRpXSBhbmQgdW5yb2xsaW5nIHRoaXMgbG9vcCBhIGZldyB0aW1lcyBjYW4gcmVkdWNlXG4gICAgIHJ1bnRpbWUgZG93biB0byBhIHRoaXJkIGFuZCBhbGxvY2F0aW9uIHRvIDEvMTZ0aCBvciBzbyBpbiB0aGUgbWljcm9iZW5jaG1hcmtzIGJlbG93LlxuICAgICBIb3dldmVyLCBpbiBtb3N0IHVzZSBjYXNlcyBbZl0gaXMgbGlrZWx5IHRvIGJlIGV4cGVuc2l2ZSAob3RoZXJ3aXNlIHdoeSBkbyB5b3UgY2FyZVxuICAgICBhYm91dCB0aGUgb3JkZXIgb2YgcmVkdWN0aW9uPykgc28gdGhlIG92ZXJoZWFkIG9mIHRoaXMgZnVuY3Rpb24gaXRzZWxmIGRvZXNuJ3QgcmVhbGx5XG4gICAgIG1hdHRlci4gSWYgeW91IGNvbWUgdXAgd2l0aCBhIHVzZS1jYXNlIHdoZXJlIGl0IGRvZXMsIHRoZW4gdGhhdCdzIHNvbWV0aGluZyB5b3UgbWlnaHRcbiAgICAgd2FudCB0byB0cnk6IHNlZSBoZyBsb2cgLXByIDQ5ZWYwNjVmNDI5ZC4gKilcbiAgbWF0Y2ggZm9sZGkgbCB+aW5pdDpbXSB+ZjpzdGVwX2FjY3VtIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBTb21lIChmb2xkIHhzIH5pbml0OnggfmY6KGZ1biB4IHkgLT4gZiB5IHgpKVxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZF9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZV9iYWxhbmNlZCBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfYmFsYW5jZWRfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IGdyb3VwaSBsIH5icmVhayA9XG4gIGxldCBncm91cHMgPVxuICAgIGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyB4IC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbIFsgeCBdIF1cbiAgICAgIHwgY3VycmVudF9ncm91cCA6OiB0bCAtPlxuICAgICAgICBpZiBicmVhayBpIChoZF9leG4gY3VycmVudF9ncm91cCkgeFxuICAgICAgICB0aGVuIFsgeCBdIDo6IGN1cnJlbnRfZ3JvdXAgOjogdGwgKCogc3RhcnQgbmV3IGdyb3VwICopXG4gICAgICAgIGVsc2UgKHggOjogY3VycmVudF9ncm91cCkgOjogdGwpXG4gICAgKCogZXh0ZW5kIGN1cnJlbnQgZ3JvdXAgKilcbiAgaW5cbiAgbWF0Y2ggZ3JvdXBzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGwgLT4gcmV2X21hcCBsIH5mOnJldlxuOztcblxubGV0IGdyb3VwIGwgfmJyZWFrID0gZ3JvdXBpIGwgfmJyZWFrOihmdW4gXyB4IHkgLT4gYnJlYWsgeCB5KVxuXG5sZXQgc29ydF9hbmRfZ3JvdXAgbCB+Y29tcGFyZSA9XG4gIGwgfD4gc3RhYmxlX3NvcnQgfmNvbXBhcmUgfD4gZ3JvdXAgfmJyZWFrOihmdW4geCB5IC0+IGNvbXBhcmUgeCB5IDw+IDApXG47O1xuXG5sZXQgY29uY2F0X21hcCBsIH5mID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAocmV2X2FwcGVuZCAoZiBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggW10gbFxuOztcblxubGV0IGNvbmNhdF9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGF1eCBjb250IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBhdXggKGNvbnQgKyAxKSAocmV2X2FwcGVuZCAoZiBjb250IGhkKSBhY2MpIHRsXG4gIGluXG4gIGF1eCAwIFtdIGxcbjs7XG5cbmxldCBtZXJnZSBsMSBsMiB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBhY2MgbDJcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGFjYyBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjb21wYXJlIGgxIGgyIDw9IDAgdGhlbiBsb29wIChoMSA6OiBhY2MpIHQxIGwyIGVsc2UgbG9vcCAoaDIgOjogYWNjKSBsMSB0MlxuICBpblxuICBsb29wIFtdIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2FydGVzaWFuX3Byb2R1Y3QgPSBzdHJ1Y3RcbiAgKCogV2UgYXJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2UgZXhwb3J0IGZyb20gZnVuY3RvcnMgc28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHlcbiAgICAgcmViaW5kIG1vcmUgZWZmaWNpZW50IGxpc3Qtc3BlY2lmaWMgZnVuY3Rpb25zLiAqKVxuXG4gIGxldCBiaW5kID0gY29uY2F0X21hcFxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXAyIGEgYiB+ZiA9IGNvbmNhdF9tYXAgYSB+ZjooZnVuIHggLT4gbWFwIGIgfmY6KGZ1biB5IC0+IGYgeCB5KSlcbiAgbGV0IHJldHVybiB4ID0gWyB4IF1cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuXG4gIG9wZW4gc3RydWN0XG4gICAgbW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmUuTWFrZV91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBtYXAyID0gbWFwMlxuICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIE1vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbGV0IGFsbCA9IE1vbmFkLmFsbFxuICBsZXQgYWxsX3VuaXQgPSBNb25hZC5hbGxfdW5pdFxuICBsZXQgaWdub3JlX20gPSBNb25hZC5pZ25vcmVfbVxuICBsZXQgam9pbiA9IE1vbmFkLmpvaW5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcbiAgZW5kXG5cbiAgbGV0IGFwcGx5ID0gQXBwbGljYXRpdmUuYXBwbHlcbiAgbGV0IGJvdGggPSBBcHBsaWNhdGl2ZS5ib3RoXG4gIGxldCBtYXAzID0gQXBwbGljYXRpdmUubWFwM1xuICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgbGV0ICggKj4gKSA9IEFwcGxpY2F0aXZlLiggKj4gKVxuICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gICAgbGV0ICggKj4gKSA9IEFwcGxpY2F0aXZlLiggKj4gKVxuICAgIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChDYXJ0ZXNpYW5fcHJvZHVjdCA6IE1vbmFkLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuKCoqIHJldHVybnMgZmluYWwgZWxlbWVudCBvZiBsaXN0ICopXG5sZXQgcmVjIGxhc3RfZXhuIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0X2V4biB0bFxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiTGlzdC5sYXN0XCJcbjs7XG5cbigqKiBvcHRpb25hbGx5IHJldHVybnMgZmluYWwgZWxlbWVudCBvZiBsaXN0ICopXG5sZXQgcmVjIGxhc3QgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IFNvbWUgeFxuICB8IF8gOjogdGwgLT4gbGFzdCB0bFxuICB8IFtdIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgaXNfcHJlZml4IGxpc3QgfnByZWZpeCB+ZXF1YWwgPVxuICBtYXRjaCBwcmVmaXggd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBoZCA6OiB0bCAtPlxuICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgfCBbXSAtPiBmYWxzZVxuICAgICB8IGhkJyA6OiB0bCcgLT4gZXF1YWwgaGQgaGQnICYmIGlzX3ByZWZpeCB0bCcgfnByZWZpeDp0bCB+ZXF1YWwpXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgdCB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgYTEgOjogdCAtPlxuICAgIGxldCByZWMgbG9vcCBhMSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEyIDo6IHQgLT4gaWYgZXF1YWwgYTEgYTIgdGhlbiBTb21lIChhMSwgYTIpIGVsc2UgbG9vcCBhMiB0XG4gICAgaW5cbiAgICBsb29wIGExIHRcbjs7XG5cbigqIHJldHVybnMgbGlzdCB3aXRob3V0IGFkamFjZW50IGR1cGxpY2F0ZXMgKilcbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyA/KHdoaWNoX3RvX2tlZXAgPSBgTGFzdCkgbGlzdCB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgdG9fa2VlcCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0b19rZWVwIDo6IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgZXF1YWwgaGQgdG9fa2VlcFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0b19rZWVwID1cbiAgICAgICAgICBtYXRjaCB3aGljaF90b19rZWVwIHdpdGhcbiAgICAgICAgICB8IGBGaXJzdCAtPiB0b19rZWVwXG4gICAgICAgICAgfCBgTGFzdCAtPiBoZFxuICAgICAgICBpblxuICAgICAgICBsb29wIHRvX2tlZXAgYWNjdW0gdGwpXG4gICAgICBlbHNlIGxvb3AgaGQgKHRvX2tlZXAgOjogYWNjdW0pIHRsXG4gIGluXG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gcmV2IChsb29wIGhkIFtdIHRsKVxuOztcblxuKCoqIHJldHVybnMgc29ydGVkIHZlcnNpb24gb2YgbGlzdCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZCAqKVxubGV0IGRlZHVwX2FuZF9zb3J0IGxpc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3QgKCogcGVyZm9ybWFuY2UgaGFjayAqKVxuICB8IF8gLT5cbiAgICBsZXQgZXF1YWwgeCB4JyA9IGNvbXBhcmUgeCB4JyA9IDAgaW5cbiAgICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsaXN0IGluXG4gICAgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgfmVxdWFsIHNvcnRlZFxuOztcblxubGV0IGZpbmRfYV9kdXAgbCB+Y29tcGFyZSA9XG4gIGxldCBzb3J0ZWQgPSBzb3J0IGwgfmNvbXBhcmUgaW5cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiBOb25lXG4gICAgfCBoZDEgOjogKGhkMiA6OiBfIGFzIHRsKSAtPiBpZiBjb21wYXJlIGhkMSBoZDIgPSAwIHRoZW4gU29tZSBoZDEgZWxzZSBsb29wIHRsXG4gIGluXG4gIGxvb3Agc29ydGVkXG47O1xuXG5sZXQgY29udGFpbnNfZHVwIGxzdCB+Y29tcGFyZSA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgbHN0IH5jb21wYXJlIHdpdGhcbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaW5kX2FsbF9kdXBzIGwgfmNvbXBhcmUgPVxuICAoKiBXZSBhZGQgdGhpcyByZXZlcnNhbCwgc28gd2UgY2FuIHNraXAgYSBbcmV2XSBhdCB0aGUgZW5kLiBXZSBjb3VsZCBza2lwXG4gICAgIFtyZXZdIGFueXdheSBzaW5jZSB3ZSBkb24gbm90IGdpdmUgYW55IG9yZGVyaW5nIGd1YXJhbnRlZXMsIGJ1dCBpdCBpc1xuICAgICBuaWNlIHRvIGdldCByZXN1bHRzIGluIG5hdHVyYWwgb3JkZXIuICopXG4gIGxldCBjb21wYXJlIGEgYiA9IC0xICogY29tcGFyZSBhIGIgaW5cbiAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbCBpblxuICAoKiBXYWxrIHRoZSBsaXN0IGFuZCByZWNvcmQgdGhlIGZpcnN0IG9mIGVhY2ggY29uc2VjdXRpdmUgcnVuIG9mIGlkZW50aWNhbCBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGxvb3Agc29ydGVkIHByZXYgfmFscmVhZHlfcmVjb3JkZWQgYWNjID1cbiAgICBtYXRjaCBzb3J0ZWQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgY29tcGFyZSBwcmV2IGhkIDw+IDBcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBhY2NcbiAgICAgIGVsc2UgaWYgYWxyZWFkeV9yZWNvcmRlZFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgYWNjXG4gICAgICBlbHNlIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSAoaGQgOjogYWNjKVxuICBpblxuICBtYXRjaCBzb3J0ZWQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBbXVxuOztcblxubGV0IHJlYyBhbGxfZXF1YWxfdG8gdCB2IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCB4IDo6IHhzIC0+IGVxdWFsIHggdiAmJiBhbGxfZXF1YWxfdG8geHMgdiB+ZXF1YWxcbjs7XG5cbmxldCBhbGxfZXF1YWwgdCB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBpZiBhbGxfZXF1YWxfdG8geHMgeCB+ZXF1YWwgdGhlbiBTb21lIHggZWxzZSBOb25lXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaWR4IGNvdW50IGEgLT4gaWYgZiBpZHggYSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuOztcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID0gMCB0aGVuIGFjY3VtIGVsc2UgbG9vcCAoaSAtIDEpIChmIChpIC0gMSkgOjogYWNjdW0pXG4gIGluXG4gIGxvb3AgbiBbXVxuOztcblxubGV0IHJldl9maWx0ZXJfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIHRsIGFjY3VtKVxuICBpblxuICBsb29wIGwgW11cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIGwgfmYgPSByZXYgKHJldl9maWx0ZXJfbWFwIGwgfmYpXG5cbmxldCByZXZfZmlsdGVyX21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGwgYWNjdW0gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2ggZiBpIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIChpICsgMSkgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSB0bCBhY2N1bSlcbiAgaW5cbiAgbG9vcCAwIGwgW11cbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcGkgbCB+ZilcbmxldCBmaWx0ZXJfb3B0IGwgPSBmaWx0ZXJfbWFwIGwgfmY6Rm4uaWRcblxubGV0IHBhcnRpdGlvbjNfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kIHRyZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kLCByZXYgdHJkXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgYEZzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZCB0cmRcbiAgICAgICB8IGBTbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkgdHJkXG4gICAgICAgfCBgVHJkIHkgLT4gbG9vcCB0IGZzdCBzbmQgKHkgOjogdHJkKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtdXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgZiB4IDogXyBFaXRoZXIudCA9IGlmIGYgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCBpblxuICBwYXJ0aXRpb25fbWFwIHQgfmZcbjs7XG5cbmxldCBwYXJ0aXRpb25fcmVzdWx0IHQgPSBwYXJ0aXRpb25fbWFwIHQgfmY6UmVzdWx0LnRvX2VpdGhlclxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhICogJ2IpIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMjJfID0gXCJsaXN0Lm1sLkFzc29jLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDE0XyBfb2ZfYl9fMDE1XyB4X18wMjNfIC0+XG4gICAgICBsaXN0X29mX3NleHBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wMTdfOyBhcmcxX18wMThfIF0gLT5cbiAgICAgICAgICAgIGxldCByZXMwX18wMTlfID0gX29mX2FfXzAxNF8gYXJnMF9fMDE3X1xuICAgICAgICAgICAgYW5kIHJlczFfXzAyMF8gPSBfb2ZfYl9fMDE1XyBhcmcxX18wMThfIGluXG4gICAgICAgICAgICByZXMwX18wMTlfLCByZXMxX18wMjBfXG4gICAgICAgICAgfCBzZXhwX18wMjFfIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDIyX1xuICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIHNleHBfXzAyMV8pXG4gICAgICAgIHhfXzAyM19cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2FfXzAyNF8gX29mX2JfXzAyNV8geF9fMDMwXyAtPlxuICAgICAgc2V4cF9vZl9saXN0XG4gICAgICAgIChmdW4gKGFyZzBfXzAyNl8sIGFyZzFfXzAyN18pIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMjhfID0gX29mX2FfXzAyNF8gYXJnMF9fMDI2X1xuICAgICAgICAgICBhbmQgcmVzMV9fMDI5XyA9IF9vZl9iX18wMjVfIGFyZzFfXzAyN18gaW5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDI4XzsgcmVzMV9fMDI5XyBdKVxuICAgICAgICB4X18wMzBfXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgbGlzdF9zZXhwX2dyYW1tYXJcbiAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgIExpc3QgKENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkpKVxuICAgICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcGFpcl9vZl9ncm91cCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChrLCBfKSA6OiBfIGFzIGxpc3QgLT4gaywgbWFwIGxpc3QgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdyb3VwIGFsaXN0IH5lcXVhbCA9XG4gICAgZ3JvdXAgYWxpc3QgfmJyZWFrOihmdW4gKHgsIF8pICh5LCBfKSAtPiBub3QgKGVxdWFsIHggeSkpIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlID1cbiAgICBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZTooZnVuICh4LCBfKSAoeSwgXykgLT4gY29tcGFyZSB4IHkpXG4gICAgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgZmluZCB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBlcXVhbCBrZXkga2V5Jykgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSAoc25kIHgpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LkFzc29jLmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgICBsZXQgZmluZF9leG4gdCB+ZXF1YWwga2V5ID1cbiAgICAgIG1hdGNoIGZpbmQgdCBrZXkgfmVxdWFsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZXF1YWwga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgXyAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IH5lcXVhbCBrZXkgPSBmaWx0ZXIgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBub3QgKGVxdWFsIGtleSBrZXknKSlcblxuICBsZXQgYWRkIHQgfmVxdWFsIGtleSB2YWx1ZSA9XG4gICAgKCogdGhlIHJlbW92ZSBkb2Vzbid0IGNoYW5nZSB0aGUgbWFwIHNlbWFudGljcywgYnV0IGtlZXBzIHRoZSBsaXN0IHNtYWxsICopXG4gICAgKGtleSwgdmFsdWUpIDo6IHJlbW92ZSB0IH5lcXVhbCBrZXlcbiAgOztcblxuICBsZXQgaW52ZXJzZSB0ID0gbWFwIHQgfmY6KGZ1biAoeCwgeSkgLT4geSwgeClcbiAgbGV0IG1hcCB0IH5mID0gbWFwIHQgfmY6KGZ1biAoa2V5LCB2YWx1ZSkgLT4ga2V5LCBmIHZhbHVlKVxuZW5kXG5cbmxldCBzdWIgbCB+cG9zIH5sZW4gPVxuICAoKiBXZSB1c2UgW3BvcyA+IGxlbmd0aCBsIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gbGVuZ3RoIGxdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IGxlbmd0aCBsIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnN1YlwiO1xuICByZXZcbiAgICAoZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGVsIC0+XG4gICAgICAgaWYgaSA+PSBwb3MgJiYgaSA8IHBvcyArIGxlbiB0aGVuIGVsIDo6IGFjYyBlbHNlIGFjYykpXG47O1xuXG5sZXQgc3BsaXRfbiB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdLCB0X29yaWdcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW0sIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWcsIFtdICgqIGluIHRoaXMgY2FzZSwgdF9vcmlnID0gcmV2IGFjY3VtICopXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X25dIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2UgdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZ1xuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbmxldCByZWMgZHJvcCB0IG4gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBfIDo6IHRsIHdoZW4gbiA+IDAgLT4gZHJvcCB0bCAobiAtIDEpXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY2h1bmtzX29mIGwgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8PSAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5jaHVua3Nfb2Y6IEV4cGVjdGVkIGxlbmd0aCA+IDAsIGdvdCAlZFwiIGxlbmd0aCAoKTtcbiAgbGV0IHJlYyBhdXggb2ZfbGVuZ3RoIGFjYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IHN1Ymxpc3QsIGwgPSBzcGxpdF9uIGwgbGVuZ3RoIGluXG4gICAgICBhdXggb2ZfbGVuZ3RoIChzdWJsaXN0IDo6IGFjYykgbFxuICBpblxuICBhdXggbGVuZ3RoIFtdIGxcbjs7XG5cbmxldCBzcGxpdF93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IHQgLT4gcmV2IGFjYywgdFxuICBpblxuICBsb29wIFtdIHhzXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfd2hpbGVdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2Vfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCBfIC0+IHJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSB4c1xuOztcblxubGV0IHJlYyBkcm9wX3doaWxlIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gZHJvcF93aGlsZSB0bCB+ZlxuICB8IHQgLT4gdFxuOztcblxubGV0IGRyb3BfbGFzdCB0ID1cbiAgbWF0Y2ggcmV2IHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBfIDo6IGxzdCAtPiBTb21lIChyZXYgbHN0KVxuOztcblxubGV0IGRyb3BfbGFzdF9leG4gdCA9XG4gIG1hdGNoIGRyb3BfbGFzdCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTGlzdC5kcm9wX2xhc3RfZXhuOiBlbXB0eSBsaXN0XCJcbiAgfCBTb21lIGxzdCAtPiBsc3Rcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBsaXN0MSBsaXN0MiA9XG4gIGlmIGlzX2VtcHR5IGxpc3QyXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGwxIGwyIGFjY3VtID1cbiAgICAgIG1hdGNoIGwxIHdpdGhcbiAgICAgIHwgW10gLT4gYWNjdW1cbiAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBsMiAocmV2X2FwcGVuZCAobWFwIH5mOihmdW4geCAtPiBoZCwgeCkgbDIpIGFjY3VtKVxuICAgIGluXG4gICAgcmV2IChsb29wIGxpc3QxIGxpc3QyIFtdKSlcbjs7XG5cbmxldCBjb25jYXQgbCA9IGZvbGRfcmlnaHQgbCB+aW5pdDpbXSB+ZjphcHBlbmRcbmxldCBjb25jYXRfbm9fb3JkZXIgbCA9IGZvbGQgbCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBsIC0+IHJldl9hcHBlbmQgbCBhY2MpXG5sZXQgY29ucyB4IGwgPSB4IDo6IGxcblxubGV0IGlzX3NvcnRlZCBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDw9IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDwgMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICAoKiBzcGVjaWFsIGNhc2VzIHRvIHNwZWVkIHRoaW5ncyB1cCBpbiB0cml2aWFsIGNhc2VzICopXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0XG4gIHwgWyB4OyB5IF0gLT4gaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlIHRoZW4gWyB5OyB4IF0gZWxzZSBsaXN0XG4gIHwgXyAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBBcnJheV9wZXJtdXRlLnBlcm11dGUgYXJyIH5yYW5kb21fc3RhdGU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIGlmIGlzX2VtcHR5IGxpc3RcbiAgdGhlbiBmYWlsd2l0aCBcIkxpc3QucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBsaXN0XCJcbiAgZWxzZSBudGhfZXhuIGxpc3QgKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggbGlzdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSBsaXN0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCBuID0gY21wIHggeSBpblxuICAgIGlmIG4gPSAwIHRoZW4gY29tcGFyZSBjbXAgeHMgeXMgZWxzZSBuXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfbGlzdFxuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPVxuICBsZXQgcmVjIGxvb3AgfmVxdWFsIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICB8IHgxIDo6IHQxLCB4MiA6OiB0MiAtPiBlcXVhbCB4MSB4MiAmJiBsb29wIH5lcXVhbCB0MSB0MlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIH5lcXVhbCB0MSB0MlxuOztcblxubGV0IHRyYW5zcG9zZSA9XG4gIGxldCByZWMgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0IGNvbHVtbl9hY2MgdHJpbW1lZCBmb3VuZF9lbXB0eSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW5fYWNjLCB0cmltbWVkLCBmb3VuZF9lbXB0eVxuICAgIHwgW10gOjogdGwgLT4gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCBjb2x1bW5fYWNjIHRyaW1tZWQgdHJ1ZVxuICAgIHwgKHggOjogeHMpIDo6IHRsIC0+XG4gICAgICBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsICh4IDo6IGNvbHVtbl9hY2MpICh4cyA6OiB0cmltbWVkKSBmb3VuZF9lbXB0eVxuICBpblxuICBsZXQgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzID0gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIFtdIFtdIGZhbHNlIGluXG4gIGxldCByZWMgbG9vcCByb3dzIGNvbHVtbnMgZG9fcmV2ID1cbiAgICBtYXRjaCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3Mgd2l0aFxuICAgIHwgW10sIFtdLCBfIC0+IFNvbWUgKHJldiBjb2x1bW5zKVxuICAgIHwgY29sdW1uLCB0cmltbWVkX3Jvd3MsIGZvdW5kX2VtcHR5IC0+XG4gICAgICBpZiBmb3VuZF9lbXB0eVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGlmIGRvX3JldiB0aGVuIHJldiBjb2x1bW4gZWxzZSBjb2x1bW4gaW5cbiAgICAgICAgbG9vcCB0cmltbWVkX3Jvd3MgKGNvbHVtbiA6OiBjb2x1bW5zKSAobm90IGRvX3JldikpXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXSB0cnVlXG47O1xuXG5leGNlcHRpb24gVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBvZiBpbnQgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc11cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBhcmcwX18wMzFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfaW50IGFyZzBfXzAzMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaXN0Lm1sLlRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNcIlxuICAgICAgICAgIDsgcmVzMF9fMDMyX1xuICAgICAgICAgIF1cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdHJhbnNwb3NlX2V4biBsID1cbiAgbWF0Y2ggdHJhbnNwb3NlIGwgd2l0aFxuICB8IFNvbWUgbCAtPiBsXG4gIHwgTm9uZSAtPiByYWlzZSAoVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyAobWFwIGwgfmY6bGVuZ3RoKSlcbjs7XG5cbmxldCBpbnRlcnNwZXJzZSB0IH5zZXAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IHggOjogeHMgLT4geCA6OiBmb2xkX3JpZ2h0IHhzIH5pbml0OltdIH5mOihmdW4geSBhY2MgLT4gc2VwIDo6IHkgOjogYWNjKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcblxubGV0IGlzX3N1ZmZpeCBsaXN0IH5zdWZmaXggfmVxdWFsOmVxdWFsX2VsdCA9XG4gIGxldCBsaXN0X2xlbiA9IGxlbmd0aCBsaXN0IGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsaXN0X2xlbiA+PSBzdWZmaXhfbGVuICYmIGVxdWFsIGVxdWFsX2VsdCAoZHJvcCBsaXN0IChsaXN0X2xlbiAtIHN1ZmZpeF9sZW4pKSBzdWZmaXhcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBhcyBtYW55IHBsYWNlcyBhcyBwb3NzaWJsZS4gUGxlYXNlIGF2b2lkXG4gICBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9faW50ZlxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBFeG4gb2YgZXhuXG4gICAgfCBTZXhwIG9mIFNleHAudFxuICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24wLnQgb3B0aW9uXG4gICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHJlYyBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IGFyZzBfXzAwMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwMl8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvdWxkX25vdF9jb25zdHJ1Y3RcIjsgcmVzMF9fMDAyXyBdXG4gICAgICB8IFN0cmluZyBhcmcwX18wMDNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDRfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTdHJpbmdcIjsgcmVzMF9fMDA0XyBdXG4gICAgICB8IEV4biBhcmcwX18wMDVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDZfID0gc2V4cF9vZl9leG4gYXJnMF9fMDA1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeG5cIjsgcmVzMF9fMDA2XyBdXG4gICAgICB8IFNleHAgYXJnMF9fMDA3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA4XyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMDhfIF1cbiAgICAgIHwgVGFnX3NleHAgKGFyZzBfXzAwOV8sIGFyZzFfXzAxMF8sIGFyZzJfXzAxMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA5X1xuICAgICAgICBhbmQgcmVzMV9fMDEzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAxMF9cbiAgICAgICAgYW5kIHJlczJfXzAxNF8gPSBzZXhwX29mX29wdGlvbiBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGFyZzJfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfc2V4cFwiOyByZXMwX18wMTJfOyByZXMxX18wMTNfOyByZXMyX18wMTRfIF1cbiAgICAgIHwgVGFnX3QgKGFyZzBfXzAxNV8sIGFyZzFfXzAxNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE1X1xuICAgICAgICBhbmQgcmVzMV9fMDE4XyA9IHNleHBfb2ZfdCBhcmcxX18wMTZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ190XCI7IHJlczBfXzAxN187IHJlczFfXzAxOF8gXVxuICAgICAgfCBUYWdfYXJnIChhcmcwX18wMTlfLCBhcmcxX18wMjBfLCBhcmcyX18wMjFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxOV9cbiAgICAgICAgYW5kIHJlczFfXzAyM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMjBfXG4gICAgICAgIGFuZCByZXMyX18wMjRfID0gc2V4cF9vZl90IGFyZzJfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfYXJnXCI7IHJlczBfXzAyMl87IHJlczFfXzAyM187IHJlczJfXzAyNF8gXVxuICAgICAgfCBPZl9saXN0IChhcmcwX18wMjVfLCBhcmcxX18wMjZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfaW50IGFyZzBfXzAyNV9cbiAgICAgICAgYW5kIHJlczFfXzAyOF8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90IGFyZzFfXzAyNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2ZfbGlzdFwiOyByZXMwX18wMjdfOyByZXMxX18wMjhfIF1cbiAgICAgIHwgV2l0aF9iYWNrdHJhY2UgKGFyZzBfXzAyOV8sIGFyZzFfXzAzMF8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMzFfID0gc2V4cF9vZl90IGFyZzBfXzAyOV9cbiAgICAgICAgYW5kIHJlczFfXzAzMl8gPSBzZXhwX29mX3N0cmluZyBhcmcxX18wMzBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIldpdGhfYmFja3RyYWNlXCI7IHJlczBfXzAzMV87IHJlczFfXzAzMl8gXVxuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHJlYyB0b19zdHJpbmdzX2h1bSB0IGFjID1cbiAgICAoKiBXZSB1c2UgW1NleHAudG9fc3RyaW5nX21hY2hdLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGltcGxlbWVudGluZ1xuICAgICAgIFt0b19zdHJpbmdzX2h1bV0sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgaW5mbyB0byBmaXQgb24gYSBzaW5nbGUgbGluZSwgYW5kIG9uY2Ugd2UndmVcbiAgICAgICBoYWQgdG8gcmVzb3J0IHRvIHNleHBzLCB0aGUgbWVzc2FnZSBpcyBnb2luZyB0byBzdGFydCBub3QgbG9va2luZyBzbyBwcmV0dHlcbiAgICAgICBhbnl3YXkuICopXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IHNleHAgLT5cbiAgICAgIFwiY291bGQgbm90IGNvbnN0cnVjdCBpbmZvOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IFNleHAudG9fc3RyaW5nX21hY2ggKEV4bi5zZXhwX29mX3QgZXhuKSA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgXykgLT4gdGFnIDo6IFwiOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IHRhZyA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWMgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIGJvZHkgZWxzZSB0YWcgOjogXCI6IFwiIDo6IGJvZHlcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICB0b19zdHJpbmdzX2h1bSB0IChcIlxcbkJhY2t0cmFjZTpcXG5cIiA6OiBiYWNrdHJhY2UgOjogYWMpXG4gICAgfCBPZl9saXN0ICh0cnVuY19hZnRlciwgdHMpIC0+XG4gICAgICBsZXQgdHMgPVxuICAgICAgICBtYXRjaCB0cnVuY19hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0c1xuICAgICAgICB8IFNvbWUgbWF4IC0+XG4gICAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCB0cyBpblxuICAgICAgICAgIGlmIG4gPD0gbWF4XG4gICAgICAgICAgdGhlbiB0c1xuICAgICAgICAgIGVsc2UgTGlzdC50YWtlIHRzIG1heCBAIFsgU3RyaW5nIChQcmludGYuc3ByaW50ZiBcImFuZCAlZCBtb3JlIGluZm9cIiAobiAtIG1heCkpIF1cbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT5cbiAgICAgICAgdG9fc3RyaW5nc19odW0gdCAoaWYgTGlzdC5pc19lbXB0eSBhYyB0aGVuIGFjIGVsc2UgXCI7IFwiIDo6IGFjKSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBTdHJpbmcuY29uY2F0ICh0b19zdHJpbmdzX2h1bSB0IFtdKVxuXG4gIGxldCByZWMgdG9fc2V4cHNfaHVtIHQgYWMgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBfIGFzIHQgLT4gc2V4cF9vZl90IHQgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gQXRvbSBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gRXhuLnNleHBfb2ZfdCBleG4gOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBoZXJlKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoQXRvbSB0YWdcbiAgICAgICAgIDo6IHNleHBcbiAgICAgICAgIDo6XG4gICAgICAgICAobWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGhlcmUgLT4gWyBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmUgXSkpXG4gICAgICA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gTGlzdCAoQXRvbSB0YWcgOjogdG9fc2V4cHNfaHVtIHQgW10pIDo6IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IHNleHAgOjogdG9fc2V4cHNfaHVtIHQgW10gaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIExpc3QgYm9keSA6OiBhYyBlbHNlIExpc3QgKEF0b20gdGFnIDo6IGJvZHkpIDo6IGFjXG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgU2V4cC5MaXN0IFsgdG9fc2V4cF9odW0gdDsgU2V4cC5BdG9tIGJhY2t0cmFjZSBdIDo6IGFjXG4gICAgfCBPZl9saXN0IChfLCB0cykgLT5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPiB0b19zZXhwc19odW0gdCBhYylcblxuICBhbmQgdG9fc2V4cF9odW0gdCA9XG4gICAgbWF0Y2ggdG9fc2V4cHNfaHVtIHQgW10gd2l0aFxuICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgIHwgc2V4cHMgLT4gU2V4cC5MaXN0IHNleHBzXG4gIDs7XG5cbiAgKCogV2UgdXNlIFtwcm90ZWN0XSB0byBndWFyZCBhZ2FpbnN0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHVzZXItc3VwcGxpZWQgZnVuY3Rpb25zLCBzb1xuICAgICB0aGF0IGZhaWx1cmUgdG8gcHJvZHVjZSBvbmUgcGFydCBvZiBhbiBpbmZvIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgcGFydHMuICopXG4gIGxldCBwcm90ZWN0IGYgPVxuICAgIHRyeSBmICgpIHdpdGhcbiAgICB8IGV4biAtPiBDb3VsZF9ub3RfY29uc3RydWN0IChFeG4uc2V4cF9vZl90IGV4bilcbiAgOztcblxuICBsZXQgb2ZfaW5mbyBpbmZvID0gcHJvdGVjdCAoZnVuICgpIC0+IExhenkuZm9yY2UgaW5mbylcbiAgbGV0IHRvX2luZm8gdCA9IGxhenkgdFxuZW5kXG5cbm9wZW4gTWVzc2FnZVxuXG50eXBlIHQgPSBNZXNzYWdlLnQgTGF6eS50XG5cbmxldCBpbnZhcmlhbnQgXyA9ICgpXG5sZXQgdG9fbWVzc2FnZSA9IE1lc3NhZ2Uub2ZfaW5mb1xubGV0IG9mX21lc3NhZ2UgPSBNZXNzYWdlLnRvX2luZm9cblxuKCogSXQgaXMgT0sgdG8gdXNlIFtNZXNzYWdlLnRvX3NleHBfaHVtXSwgd2hpY2ggaXMgbm90IHN0YWJsZSwgYmVjYXVzZSBbdF9vZl9zZXhwXSBiZWxvd1xuICAgY2FuIGhhbmRsZSBhbnkgc2V4cC4gKilcbmxldCBzZXhwX29mX3QgdCA9IE1lc3NhZ2UudG9fc2V4cF9odW0gKHRvX21lc3NhZ2UgdClcbmxldCB0X29mX3NleHAgc2V4cCA9IGxhenkgKE1lc3NhZ2UuU2V4cCBzZXhwKVxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gQW55IFwiSW5mby50XCIgfVxubGV0IGNvbXBhcmUgdDEgdDIgPSBTZXhwLmNvbXBhcmUgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBlcXVhbCB0MSB0MiA9IFNleHAuZXF1YWwgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gU2V4cC5oYXNoX2ZvbGRfdCBzdGF0ZSAoc2V4cF9vZl90IHQpXG5sZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuXG5sZXQgdG9fc3RyaW5nX2h1bSB0ID1cbiAgbWF0Y2ggdG9fbWVzc2FnZSB0IHdpdGhcbiAgfCBTdHJpbmcgcyAtPiBzXG4gIHwgbWVzc2FnZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gKE1lc3NhZ2UudG9fc2V4cF9odW0gbWVzc2FnZSlcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IE1lc3NhZ2UudG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkICh0b19tZXNzYWdlIHQpXG5sZXQgdG9fc3RyaW5nX21hY2ggdCA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfdCB0KVxubGV0IG9mX2xhenkgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfc2V4cCBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFNleHAgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfdCBsYXp5X3QgPSBMYXp5LmpvaW4gbGF6eV90XG5sZXQgb2Zfc3RyaW5nIG1lc3NhZ2UgPSBMYXp5LmZyb21fdmFsIChTdHJpbmcgbWVzc2FnZSlcbmxldCBjcmVhdGVmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBvZl9zdHJpbmcgZm9ybWF0XG5sZXQgb2ZfdGh1bmsgZiA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKGYgKCkpKSlcblxubGV0IGNyZWF0ZSA/aGVyZSA/c3RyaWN0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIG1hdGNoIHN0cmljdCB3aXRoXG4gIHwgTm9uZSAtPiBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKSlcbiAgfCBTb21lICgpIC0+IG9mX21lc3NhZ2UgKFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoU2V4cCBzZXhwKVxubGV0IHRhZyB0IH50YWcgPSBsYXp5IChUYWdfdCAodGFnLCB0b19tZXNzYWdlIHQpKVxuXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAoXCJcIiwgTGF6eS5mb3JjZSB0YWcsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IHRhZ19zIHQgfnRhZyA9IHRhZ19zX2xhenkgdCB+dGFnOihMYXp5LmZyb21fdmFsIHRhZylcblxubGV0IHRhZ19hcmcgdCB0YWcgeCBzZXhwX29mX3ggPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAodGFnLCBzZXhwX29mX3ggeCwgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgb2ZfbGlzdCA/dHJ1bmNfYWZ0ZXIgdHMgPSBsYXp5IChPZl9saXN0ICh0cnVuY19hZnRlciwgTGlzdC5tYXAgdHMgfmY6dG9fbWVzc2FnZSkpXG5cbmV4Y2VwdGlvbiBFeG4gb2YgdFxuXG5sZXQgKCkgPVxuICAoKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlXG4gICAgIFtleGNlcHRpb24gRXhuIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdIC4uLiBbQEBAZW5kXV0gdG8gZWxpbWluYXRlIHRoZSBleHRyYVxuICAgICB3cmFwcGluZyBvZiBcIihFeG4gLi4uKVwiLiAqKVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhuXSAoZnVuY3Rpb25cbiAgICB8IEV4biB0IC0+IHNleHBfb2ZfdCB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB0b19leG4gdCA9XG4gIGlmIG5vdCAoTGF6eS5pc192YWwgdClcbiAgdGhlbiBFeG4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBMYXp5LmZvcmNlIHQgd2l0aFxuICAgIHwgTWVzc2FnZS5FeG4gZXhuIC0+IGV4blxuICAgIHwgXyAtPiBFeG4gdClcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPVxuICBsZXQgYmFja3RyYWNlID1cbiAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGBHZXQgLT4gU29tZSAoQ2FtbC5QcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICAgIHwgU29tZSAoYFRoaXMgcykgLT4gU29tZSBzXG4gIGluXG4gIG1hdGNoIGV4biwgYmFja3RyYWNlIHdpdGhcbiAgfCBFeG4gdCwgTm9uZSAtPiB0XG4gIHwgRXhuIHQsIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlICh0b19tZXNzYWdlIHQsIGJhY2t0cmFjZSkpXG4gIHwgXywgTm9uZSAtPiBMYXp5LmZyb21fdmFsIChNZXNzYWdlLkV4biBleG4pXG4gIHwgXywgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKFNleHAgKEV4bi5zZXhwX29mX3QgZXhuKSwgYmFja3RyYWNlKSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW5mb1wiXG4gICAgbGV0IHBwIHBwZiB0ID0gQ2FtbC5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nX2h1bSB0KVxuICBlbmQpXG5cbm1vZHVsZSBJbnRlcm5hbF9yZXByID0gTWVzc2FnZVxuXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtFcnJvcl0gYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcy4gIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3XG4gICBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvXG5cbmxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJFcnJvci50XCIgfVxubGV0IHJhaXNlIHQgPSByYWlzZSAodG9fZXhuIHQpXG5sZXQgcmFpc2VfcyBzZXhwID0gcmFpc2UgKGNyZWF0ZV9zIHNleHApXG5sZXQgdG9faW5mbyB0ID0gdFxubGV0IG9mX2luZm8gdCA9IHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FcnJvclwiXG4gICAgbGV0IHBwID0gcHBcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludmFyaWFudF9pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5sZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA6IHVuaXQgPVxuICB0cnkgZiAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJcIiwgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlXG4gICAgICAgICA7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4blxuICAgICAgICAgOyBcIlwiLCBzZXhwX29mX3QgdFxuICAgICAgICAgXSlcbjs7XG5cbmxldCBjaGVja19maWVsZCB0IGYgZmllbGQgPVxuICB0cnkgZiAoRmllbGQuZ2V0IGZpZWxkIHQpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcInByb2JsZW0gd2l0aCBmaWVsZFwiXG4gICAgICAgICBbIFwiZmllbGRcIiwgc2V4cF9vZl9zdHJpbmcgKEZpZWxkLm5hbWUgZmllbGQpOyBcImV4blwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG4gIFJlc3VsdCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBSZXN1bHRcbiAgZW5kXG4gIHdpdGggbW9kdWxlIEVycm9yIDo9IFJlc3VsdC5FcnJvcilcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudFxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT4gUmVzdWx0LmNvbXBhcmUgX2NtcF9fYSBFcnJvci5jb21wYXJlIGFfXzAwMV8gYl9fMDAyX1xuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPiBSZXN1bHQuZXF1YWwgX2NtcF9fYSBFcnJvci5lcXVhbCBhX18wMDdfIGJfXzAwOF9cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA6XG4gICdhLlxuICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gIC0+ICdhIHRcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBoc3YgYXJnIC0+IFJlc3VsdC5oYXNoX2ZvbGRfdCBfaGFzaF9mb2xkX2EgRXJyb3IuaGFzaF9mb2xkX3QgaHN2IGFyZ1xuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDEzXyB4X18wMTVfIC0+IFJlc3VsdC50X29mX3NleHAgX29mX2FfXzAxM18gRXJyb3IudF9vZl9zZXhwIHhfXzAxNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxNl8geF9fMDE3XyAtPiBSZXN1bHQuc2V4cF9vZl90IF9vZl9hX18wMTZfIEVycm9yLnNleHBfb2ZfdCB4X18wMTdfXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZXN1bHQudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hciBFcnJvci50X3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IuaW52YXJpYW50IGVycm9yXG47O1xuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIFJlc3VsdC5jb21iaW5lIGYgeCB+b2s6KGZ1biBmIHggLT4gZiB4KSB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxubGV0IG9rID0gUmVzdWx0Lm9rXG5sZXQgaXNfb2sgPSBSZXN1bHQuaXNfb2tcbmxldCBpc19lcnJvciA9IFJlc3VsdC5pc19lcnJvclxuXG5sZXQgdHJ5X3dpdGggPyhiYWNrdHJhY2UgPSBmYWxzZSkgZiA9XG4gIHRyeSBPayAoZiAoKSkgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4biA/YmFja3RyYWNlOihpZiBiYWNrdHJhY2UgdGhlbiBTb21lIGBHZXQgZWxzZSBOb25lKSlcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9iYWNrdHJhY2UgZiA9IGpvaW4gKHRyeV93aXRoID9iYWNrdHJhY2UgZilcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXJyIC0+IEVycm9yLnJhaXNlIGVyclxuOztcblxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IEVycm9yIChFcnJvci5vZl9leG4gP2JhY2t0cmFjZSBleG4pXG5cbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgPSBmdW5jdGlvblxuICB8IE9rIF8gYXMgeiAtPiB6XG4gIHwgRXJyb3IgZXhuIC0+IG9mX2V4biA/YmFja3RyYWNlIGV4blxuOztcblxubGV0IGVycm9yID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIEVycm9yIChFcnJvci5jcmVhdGUgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGVycm9yX3Mgc2V4cCA9IEVycm9yIChFcnJvci5jcmVhdGVfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtZXNzYWdlID0gRXJyb3IgKEVycm9yLm9mX3N0cmluZyBtZXNzYWdlKVxubGV0IGVycm9yZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KGZ1biBlIC0+IEVycm9yLnRhZ19hcmcgZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgcyA9IGVycm9yIFwidW5pbXBsZW1lbnRlZFwiIHMgc2V4cF9vZl9zdHJpbmdcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gUmVzdWx0Lm1hcF9lcnJvciAoUmVzdWx0LmNvbWJpbmVfZXJyb3JzIGwpIH5mOkVycm9yLm9mX2xpc3RcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBSZXN1bHQubWFwIChjb21iaW5lX2Vycm9ycyBsKSB+ZjooZnVuIChfIDogdW5pdCBsaXN0KSAtPiAoKSlcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QucGFydGl0aW9uX21hcCBsIH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgbWF0Y2ggb2sgd2l0aFxuICB8IFtdIC0+IEVycm9yIChFcnJvci5vZl9saXN0IGVycnMpXG4gIHwgXyAtPiBPayBva1xuOztcblxubGV0IGZpbmRfb2sgbCA9XG4gIG1hdGNoIExpc3QuZmluZF9tYXAgbCB+ZjpSZXN1bHQub2sgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE9rIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSlcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICAgICAgfCBPayBfIGFzIHggLT4gcmV0dXJuIHhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKSlcbjs7XG5cbmxldCBtYXAgPSBSZXN1bHQubWFwXG5sZXQgaXRlciA9IFJlc3VsdC5pdGVyXG5sZXQgaXRlcl9lcnJvciA9IFJlc3VsdC5pdGVyX2Vycm9yXG4iLCIoKiBUaGlzIGlzIGJyb2tlbiBvZmYgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIFNpZ24gYW5kIENvbXBhcmFibGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5lZ1xuICB8IFplcm9cbiAgfCBQb3NcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxubGV0IHRfb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMDNfID0gXCJzaWduMC5tbC50XCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIC0+IE5lZ1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgfCBzZXhwX18wMDJfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuOztcblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG5sZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IE5lZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvcyBdIDogdCBsaXN0KVxuXG5bQEBAZW5kXVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiB0KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxubGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTFcbiAgfCBaZXJvIC0+IDBcbiAgfCBQb3MgLT4gMVxuOztcblxubGV0IF8gPSBoYXNoXG5cbigqIElnbm9yZSB0aGUgaGFzaCBmdW5jdGlvbiBwcm9kdWNlZCBieSBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaF0gKilcbmxldCBoYXNoID0gdG9faW50XG5sZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuU2lnblwiXG5sZXQgb2ZfaW50IG4gPSBpZiBuIDwgMCB0aGVuIE5lZyBlbHNlIGlmIG4gPSAwIHRoZW4gWmVybyBlbHNlIFBvc1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUXG5cbiAgbGV0IGlzX3Bvc2l0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+IDBcbiAgbGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPj0gMFxuICBsZXQgaXNfbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDwgMFxuICBsZXQgaXNfbm9uX3Bvc2l0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8PSAwXG4gIGxldCBzaWduIHQgPSBTaWduMC5vZl9pbnQgKGNvbXBhcmUgdCB6ZXJvKVxuZW5kXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IChULnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgUG9seVxuICBlbmRcblxuICBpbmNsdWRlIFBvbHlcblxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcblxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuZW5kXG5cbmxldCBndCBjbXAgYSBiID0gY21wIGEgYiA+IDBcbmxldCBsdCBjbXAgYSBiID0gY21wIGEgYiA8IDBcbmxldCBnZXEgY21wIGEgYiA9IGNtcCBhIGIgPj0gMFxubGV0IGxlcSBjbXAgYSBiID0gY21wIGEgYiA8PSAwXG5sZXQgZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPSAwXG5sZXQgbm90X2VxdWFsIGNtcCBhIGIgPSBjbXAgYSBiIDw+IDBcbmxldCBtaW4gY21wIHQgdCcgPSBpZiBsZXEgY21wIHQgdCcgdGhlbiB0IGVsc2UgdCdcbmxldCBtYXggY21wIHQgdCcgPSBpZiBnZXEgY21wIHQgdCcgdGhlbiB0IGVsc2UgdCdcblxubW9kdWxlIEluZml4IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgOiBJbmZpeCB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbGV0ICggPiApIGEgYiA9IGd0IFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPCApIGEgYiA9IGx0IFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPj0gKSBhIGIgPSBnZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PSApIGEgYiA9IGxlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoID0gKSBhIGIgPSBlcXVhbCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw+ICkgYSBiID0gbm90X2VxdWFsIFQuY29tcGFyZSBhIGJcbmVuZFxuXG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZpeCAoVClcblxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgbWluIHQgdCcgPSBtaW4gY29tcGFyZSB0IHQnXG4gIGxldCBtYXggdCB0JyA9IG1heCBjb21wYXJlIHQgdCdcbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyYXRvci5jb21wYXJlXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gUG9seW1vcnBoaWNfY29tcGFyZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB0IHQnID0gY29tcGFyZSB0JyB0XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICAgICAgW0BAQGVuZF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IChULnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG4oKiBjb21wYXJlIFt4XSBhbmQgW3ldIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGZ1bmN0aW9ucyBpbiB0aGUgbGlzdCBbY21wc10gKilcbmxldCBsZXhpY29ncmFwaGljIGNtcHMgeCB5ID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IGNtcCA6OiBjbXBzIC0+XG4gICAgICBsZXQgcmVzID0gY21wIHggeSBpblxuICAgICAgaWYgcmVzID0gMCB0aGVuIGxvb3AgY21wcyBlbHNlIHJlc1xuICAgIHwgW10gLT4gMFxuICBpblxuICBsb29wIGNtcHNcbjs7XG5cbmxldCBsaWZ0IGNtcCB+ZiB4IHkgPSBjbXAgKGYgeCkgKGYgeSlcbmxldCByZXZlcnNlIGNtcCB4IHkgPSBjbXAgeSB4XG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoYWJsZS5LZXkgKilcbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuXG4gICgqKiBWYWx1ZXMgcmV0dXJuZWQgYnkgW2hhc2hdIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGluIHRoZVxuICAgICAgY2FzZSB0aGF0IFtoYXNoXSByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICopXG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICAoKiogVGhpcyBmdW5jdGlvbiBpcyBzb3VuZCBidXQgbm90IGNvbXBsZXRlLCBtZWFuaW5nIHRoYXQgaWYgaXQgcmV0dXJucyBbdHJ1ZV0gdGhlbiBpdCdzXG4gICAgICBzYWZlIHRvIHVzZSB0aGUgdHdvIGludGVyY2hhbmdlYWJseS4gIElmIGl0J3MgW2ZhbHNlXSwgeW91IGhhdmUgbm8gZ3VhcmFudGVlcy4gIEZvclxuICAgICAgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgPiB1dG9wXG4gICAgICAgIG9wZW4gQ29yZTs7XG4gICAgICAgIGxldCBlcXVhbCAoYSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KSBiID1cbiAgICAgICAgICBwaHlzX2VxdWFsIGEgYlxuICAgICAgICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gICAgICAgIDs7XG4gICAgICAgIGxldCBhID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgbGV0IGIgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBlcXVhbCBhIGI7OyAgKCogZmFsc2U/ISAqKVxuICAgICAgXX1cbiAgKilcbiAgbGV0IGVxdWFsIGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBoYXNoX3BhcmFtID0gQ2FtbC5IYXNodGJsLmhhc2hfcGFyYW1cbiAgbGV0IGhhc2ggPSBDYW1sLkhhc2h0YmwuaGFzaFxuICBsZXQgcG9seSA9IHsgaGFzaDsgY29tcGFyZSA9IFBvbHkuY29tcGFyZTsgc2V4cF9vZl90ID0gKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgfVxuXG4gIGxldCBvZl9rZXkgKHR5cGUgYSkgKG1vZHVsZSBLZXkgOiBLZXkgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgeyBoYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gIDs7XG5cbiAgbGV0IHRvX2tleSAodHlwZSBhKSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZCA6IEtleVxuICAgICAgd2l0aCB0eXBlIHQgPSBhKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgSGFzaGFibGVcblxubW9kdWxlIHR5cGUgSGFzaGFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSGFzaGFibGUudCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHBvbHkgOiAnYSB0XG4gIHZhbCBvZl9rZXkgOiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKSAtPiAnYSB0XG4gIHZhbCB0b19rZXkgOiAnYSB0IC0+IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpXG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUIDogQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBBcmdfd2l0aF9jb21wYXJhdG9yKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgYWxsID0gKFsgKCkgXSA6IHQgbGlzdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3VuaXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3VuaXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHVuaXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdW5pdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB1bml0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGNvbXBhcmUgXyBfID0gMFxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCIoKVwiIC0+ICgpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQmFzZS5Vbml0Lm9mX3N0cmluZzogKCkgZXhwZWN0ZWRcIlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVuaXRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxubGV0IGludmFyaWFudCAoKSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBcblxubGV0IGdldF9wb3NfbGVuID9wb3MgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgdHJ5IFJlc3VsdC5PayAoZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgYSBzZWFyY2ggZm9yIHRoZSBmaXJzdCAocmVzcC4gbGFzdCkgZWxlbWVudFxuICAgc2F0aXNmeWluZyBhIHByZWRpY2F0ZSwgYXNzdW1pbmcgdGhhdCB0aGUgcHJlZGljYXRlIGlzIGluY3JlYXNpbmcgb25cbiAgIHRoZSBjb250YWluZXIsIG1lYW5pbmcgdGhhdCwgaWYgdGhlIGNvbnRhaW5lciBpcyBbdTEuLi51bl0sIHRoZXJlIGV4aXN0cyBhXG4gICBrIHN1Y2ggdGhhdCBwKHUxKT0uLi4uPXAodWspID0gZmFsc2UgYW5kIHAodWsrMSk9Li4uLj1wKHVuKT0gdHJ1ZS5cbiAgIElmIHRoaXMgayA9IDEgKHJlc3AgbiksIGZpbmRfbGFzdF9ub3Rfc2F0aXNmeWluZyAocmVzcCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcpXG4gICB3aWxsIHJldHVybiBOb25lLiAqKVxuXG5sZXQgcmVjIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gIGlmIGxvID4gaGlcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgcHJlZCAoZ2V0IHQgbG8pXG4gIHRoZW4gU29tZSBsb1xuICBlbHNlIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihsbyArIDEpIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYSBjb250YWluZXIgW3RdLCBhIHByZWRpY2F0ZSBbcHJlZF0gYW5kIHR3byBpbmRpY2VzIFtsbyA8IGhpXSwgc3VjaCB0aGF0XG4gICBbcHJlZF0gaXMgaW5jcmVhc2luZyBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLlxuXG4gICByZXR1cm4gYSByYW5nZSAobG8sIGhpKSB3aGVyZTpcbiAgIC0gbG8gYW5kIGhpIGFyZSBjbG9zZSBlbm91Z2ggdG9nZXRoZXIgZm9yIGEgbGluZWFyIHNlYXJjaFxuICAgLSBJZiBbcHJlZF0gaXMgbm90IGNvbnN0YW50bHkgW2ZhbHNlXSBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICBvbiB3aGljaCBbcHJlZF0gaXMgW3RydWVdIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXS4gKilcbigqIEludmFyaWFudDogdGhlIGZpcnN0IGVsZW1lbnQgc2F0aXNmeWluZyBbcHJlZF0sIGlmIGl0IGV4aXN0cyBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0gKilcbmxldCByZWMgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICAoKiBXYXJuaW5nOiB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IHRlcm1pbmF0ZSBpZiB0aGUgY29uc3RhbnQgKGN1cnJlbnRseSA4KSBpc1xuICAgICBzZXQgPD0gMSAqKVxuICBpZiBoaSAtIGxvIDw9IDhcbiAgdGhlbiBsbywgaGlcbiAgZWxzZSAoXG4gICAgbGV0IG1pZCA9IGxvICsgKChoaSAtIGxvKSAvIDIpIGluXG4gICAgaWYgcHJlZCAoZ2V0IHQgbWlkKVxuICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCBpcyBiZXR3ZWVuIFtsb10gYW5kIFttaWRdICopXG4gICAgdGhlblxuICAgICAgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGk6bWlkIH5wcmVkXG4gICAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQsIGlmIGl0IGV4aXN0cyxcbiAgICAgICAgIGlzIGJldHdlZW4gW21pZCsxXSBhbmQgW2hpXSAqKVxuICAgIGVsc2UgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobWlkICsgMSkgfmhpIH5wcmVkKVxuOztcblxubGV0IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxvID0gcG9zIGluXG4gIGxldCBoaSA9IHBvcyArIGxlbiAtIDEgaW5cbiAgbGV0IGxvLCBoaSA9IGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkIGluXG4gIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYW4gYXJyYXkgd2l0aCBzaGFwZSBbdHJ1ZSwuLi50cnVlLGZhbHNlLC4uLmZhbHNlXSAoaS5lLiwgdGhlIF9yZXZlcnNlXyBvZiB3aGF0XG4gICBpcyBkZXNjcmliZWQgYWJvdmUpIGFuZCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cnVlIG9yIE5vbmUgaWYgdGhlcmUgYXJlIG5vXG4gICB0cnVlKilcbmxldCBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+cHJlZCB+Z2V0IH5sZW5ndGggPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgKCogVGhlIGxhc3Qgc2F0aXNmeWluZyBpcyB0aGUgb25lIGp1c3QgYmVmb3JlIHRoZSBmaXJzdCBub3Qgc2F0aXNmeWluZyAqKVxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB+cG9zIH5sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KEZuLm5vbiBwcmVkKSB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgKHBvcyArIGxlbiAtIDEpXG4gICAgKCogVGhpcyBtZWFucyB0aGF0IGFsbCBlbGVtZW50cyBzYXRpc2Z5IHByZWQuXG4gICAgICAgVGhlcmUgaXMgYXQgbGVhc3QgYW4gZWxlbWVudCBhcyAobGVuID4gMCkgKilcbiAgICB8IFNvbWUgaSB3aGVuIGkgPSBwb3MgLT4gTm9uZSAoKiBubyBlbGVtZW50IHNhdGlzZmllcyBwcmVkICopXG4gICAgfCBTb21lIGkgLT4gU29tZSAoaSAtIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5jb21wYXJlIGhvdyB2ID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMClcbiAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgaXNfbGVmdCB4ID1cbiAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gIGluXG4gIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfbGVmdFxuICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX3JpZ2h0XG47O1xuIiwiKCoqIE1vZHVsZSB0eXBlcyBmb3IgYSBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb24gZm9yIGEgc2VxdWVuY2UsIGFuZCBmdW5jdG9ycyBmb3IgYnVpbGRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIEFuIFtJbmRleGFibGVdIHR5cGUgaXMgYSBmaW5pdGUgc2VxdWVuY2Ugb2YgZWxlbWVudHMgaW5kZXhlZCBieSBjb25zZWN1dGl2ZSBpbnRlZ2Vyc1xuICAgIFswXSAuLi4gW2xlbmd0aCB0IC0gMV0uICBbZ2V0XSBhbmQgW2xlbmd0aF0gbXVzdCBiZSBPKDEpIGZvciB0aGUgcmVzdWx0aW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIHRvIGJlIGxnKG4pLiAqKVxubW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBlbHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID1cbiAgICAoWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgOyBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgTGFzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgIF1cbiAgICAgOiB0IGxpc3QpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X29uX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID0gKFsgYExhc3Rfb25fbGVmdDsgYEZpcnN0X29uX3JpZ2h0IF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG50eXBlICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IGNvbXBhcmU6KCdlbHQgLT4gJ2tleSAtPiBpbnQpXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9rZXkudFxuICAtPiAna2V5XG4gIC0+IGludCBvcHRpb25cblxudHlwZSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID1cbiAgP3BvczppbnRcbiAgLT4gP2xlbjppbnRcbiAgLT4gJ3RcbiAgLT4gc2VnbWVudF9vZjooJ2VsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgLT4gaW50IG9wdGlvblxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICh0LCBlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICh0LCBlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhKSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJpbmFyeV9zZWFyY2hhYmxlID0gc2lnXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gSW5kZXhhYmxlXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBJbmRleGFibGUxXG5cbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBXaGljaF90YXJnZXRfYnlfa2V5XG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50XG5cbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID0gKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgd2l0aCB0eXBlIGVsdCA6PSBULmVsdFxuICBtb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIGVsdFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgbGV0IGdldCA9IFQuZ2V0XG4gIGxldCBsZW5ndGggPSBULmxlbmd0aFxuXG4gIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5jb21wYXJlIGhvdyB2XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgdHlwZSAnYSBlbHQgPSBULmVsdFxuICAgIHR5cGUgJ2EgdCA9IFQudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBnZXQgPSBULmdldFxuICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNlcXVlbmNlX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlblxuICAgIChTcmMgOiBTZXF1ZW5jZV9nZW4pIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSBTcmMudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIFNyYy50LCAnYSB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCB1bnNhZmVfYmxpdCA9IERzdC51bnNhZmVfYmxpdFxuXG4gIGxldCBibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICB+cG9zOnNyY19wb3NcbiAgICAgIH5sZW5cbiAgICAgIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICB+cG9zOmRzdF9wb3NcbiAgICAgIH5sZW5cbiAgICAgIH50b3RhbF9sZW5ndGg6KERzdC5sZW5ndGggZHN0KTtcbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgOztcblxuICBsZXQgYmxpdG9cbiAgICAgICAgfnNyY1xuICAgICAgICA/KHNyY19wb3MgPSAwKVxuICAgICAgICA/KHNyY19sZW4gPSBTcmMubGVuZ3RoIHNyYyAtIHNyY19wb3MpXG4gICAgICAgIH5kc3RcbiAgICAgICAgPyhkc3RfcG9zID0gMClcbiAgICAgICAgKClcbiAgICA9XG4gICAgYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW46c3JjX2xlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgKCogW3N1Yl0gYW5kIFtzdWJvXSBlbnN1cmUgdGhhdCBldmVyeSBwb3NpdGlvbiBvZiB0aGUgY3JlYXRlZCBzZXF1ZW5jZSBpcyBwb3B1bGF0ZWQgYnlcbiAgICAgYW4gZWxlbWVudCBvZiB0aGUgc291cmNlIGFycmF5LiAgVGh1cyBldmVyeSBlbGVtZW50IG9mIFtkc3RdIGJlbG93IGlzIHdlbGxcbiAgICAgZGVmaW5lZC4gKilcbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgbGV0IGRzdCA9IERzdC5jcmVhdGVfbGlrZSB+bGVuIHNyYyBpblxuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgICBzdWJcbiAgICAgIHNyY1xuICAgICAgfnBvc1xuICAgICAgfmxlbjpcbiAgICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICB8IE5vbmUgLT4gU3JjLmxlbmd0aCBzcmMgLSBwb3MpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBibGl0XG4gIGVuZCkgPVxuICBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlIDogU2VxdWVuY2UxKSA9IE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFNlcXVlbmNlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gU2VxdWVuY2UudFxuXG4gICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZFxuXG4gIGluY2x1ZGUgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RcbiAgICAoU3JjIDogU2VxdWVuY2UpIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKFNyYy50LCB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE1ha2VfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gU3JjLnRcblxuICAgICAgb3BlbiBTcmNcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBEc3QudFxuXG4gICAgICBvcGVuIERzdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gICAgZW5kKVxuXG5tb2R1bGUgTWFrZV90b19zdHJpbmcgKFQgOiBzaWdcbiAgICB0eXBlIHRcbiAgZW5kKVxuICAgIChUb19ieXRlcyA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBULnQgd2l0aCB0eXBlIGRzdCA6PSBieXRlcykgPVxuc3RydWN0XG4gIG9wZW4gVG9fYnl0ZXNcblxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWIgc3JjIH5wb3MgfmxlbilcbiAgOztcblxuICBsZXQgc3VibyA/cG9zID9sZW4gc3JjID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3VibyA/cG9zID9sZW4gc3JjKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfb3B0aW9uXG5cbiAgbGV0IGhhc2hfZm9sZF90IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGhhc2hfZm9sZF9vcHRpb25cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgICBvcHRpb25fb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIHNleHBfb2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBvcHRpb25fc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgfCBOb25lXG4gIHwgU29tZSBvZiAnYVxuXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NvbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHZhbHVlX21hcCBvIH5kZWZhdWx0IH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuOztcblxubGV0IGl0ZXIgbyB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxuXG5sZXQgY2FsbCB4IH5mID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmIHhcbjs7XG5cbmxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCB2YWx1ZV9leG4gP2hlcmUgP2Vycm9yID9tZXNzYWdlIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggaGVyZSwgZXJyb3IsIG1lc3NhZ2Ugd2l0aFxuICAgICAgfCBOb25lLCBOb25lLCBOb25lIC0+IEVycm9yLm9mX3N0cmluZyBcIk9wdGlvbi52YWx1ZV9leG4gTm9uZVwiXG4gICAgICB8IE5vbmUsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5vZl9zdHJpbmcgbVxuICAgICAgfCBOb25lLCBTb21lIGUsIE5vbmUgLT4gZVxuICAgICAgfCBOb25lLCBTb21lIGUsIFNvbWUgbSAtPiBFcnJvci50YWcgZSB+dGFnOm1cbiAgICAgIHwgU29tZSBwLCBOb25lLCBOb25lIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSBcIk9wdGlvbi52YWx1ZV9leG5cIiBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBOb25lLCBTb21lIG0gLT4gRXJyb3IuY3JlYXRlIG0gcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgU29tZSBlLCBfIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICh2YWx1ZSBtZXNzYWdlIH5kZWZhdWx0OlwiXCIpXG4gICAgICAgICAgKGUsIHApXG4gICAgICAgICAgKHNleHBfb2ZfcGFpciBFcnJvci5zZXhwX29mX3QgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdClcbiAgICBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgdmFsdWVfb3JfdGh1bmsgbyB+ZGVmYXVsdCA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0ICgpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgeCAtPiBbfCB4IHxdXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgeCAtPiBbIHggXVxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZTpfID0gdFxubGV0IG1heF9lbHQgdCB+Y29tcGFyZTpfID0gdFxuXG5sZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICB2YWx1ZV9tYXAgdCB+ZGVmYXVsdDpNLnplcm8gfmZcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYScgLT4gZXF1YWwgYSBhJ1xuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBfIC0+IDFcbjs7XG5cbmxldCBpc19lbXB0eSA9IGlzX25vbmVcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgeCAtPiBmIGluaXQgeFxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGEgLT4gaWYgZiBhIHRoZW4gMSBlbHNlIDBcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gaWYgZiB4IHRoZW4gdCBlbHNlIE5vbmVcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGVxdWFsIGYgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeCcgLT4gZiB4IHgnXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNvbWUgeCA9IFNvbWUgeFxuXG5sZXQgZmlyc3Rfc29tZSB4IHkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIF8gLT4geFxuICB8IE5vbmUgLT4geVxuOztcblxubGV0IHNvbWVfaWYgY29uZCB4ID0gaWYgY29uZCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcblxubGV0IG1lcmdlIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBTb21lIChmIGEgYilcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgdiBhcyBvIHdoZW4gZiB2IC0+IG9cbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcbjs7XG5cbmxldCBhcHBseSBmIHggPVxuICBtYXRjaCBmIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGYgLT4gbWFwIH5mIHhcbjs7XG5cbm1vZHVsZSBNb25hZF9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBhcHBseSA9IGFwcGx5XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBiaW5kIG8gfmYgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChNb25hZF9hcmcpXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKE1vbmFkX2FyZylcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZVxuXG5tb2R1bGUgT2Zfc2V4cGFibGVcbiAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogdCAtPiBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTFcbiAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogJ2EgdCAtPiAnYSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2EgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUyXG4gICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIChNLnRvX3NleHBhYmxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlM1xuICAgIChTZXhwYWJsZSA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIChNLnRvX3NleHBhYmxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3N0cmluZ2FibGUgKE0gOiBTdHJpbmdhYmxlLlMpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBFaXRoZXJfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBFaXRoZXIwXG5cbmxldCBzd2FwID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IFNlY29uZCB4XG4gIHwgU2Vjb25kIHggLT4gRmlyc3QgeFxuOztcblxubGV0IGlzX2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IHRydWVcbiAgfCBTZWNvbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NlY29uZCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiBmYWxzZVxuICB8IFNlY29uZCBfIC0+IHRydWVcbjs7XG5cbmxldCB2YWx1ZSAoRmlyc3QgeCB8IFNlY29uZCB4KSA9IHhcblxubGV0IHZhbHVlX21hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBmaXJzdCB4XG4gIHwgU2Vjb25kIHggLT4gc2Vjb25kIHhcbjs7XG5cbmxldCBpdGVyID0gdmFsdWVfbWFwXG5cbmxldCBtYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gRmlyc3QgKGZpcnN0IHgpXG4gIHwgU2Vjb25kIHggLT4gU2Vjb25kIChzZWNvbmQgeClcbjs7XG5cbmxldCBmaXJzdCB4ID0gRmlyc3QgeFxubGV0IHNlY29uZCB4ID0gU2Vjb25kIHhcblxubGV0IGVxdWFsIGVxMSBlcTIgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gZXExIHggeVxuICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBlcTIgeCB5XG4gIHwgRmlyc3QgXywgU2Vjb25kIF8gfCBTZWNvbmQgXywgRmlyc3QgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCBmIHMgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gZiB4XG4gIHwgU2Vjb25kIHkgLT4gcyB5XG47O1xuXG5tb2R1bGUgTWFrZV9mb2N1c2VkIChNIDogc2lnXG4gICAgdHlwZSAoKydhLCArJ2IpIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICB2YWwgb3RoZXIgOiAnYiAtPiAoXywgJ2IpIHRcbiAgICB2YWwgZWl0aGVyIDogKCdhLCAnYikgdCAtPiByZXR1cm46KCdhIC0+ICdjKSAtPiBvdGhlcjooJ2IgLT4gJ2MpIC0+ICdjXG5cbiAgICB2YWwgY29tYmluZVxuICAgICAgOiAgKCdhLCAnZCkgdFxuICAgICAgLT4gKCdiLCAnZCkgdFxuICAgICAgLT4gZjooJ2EgLT4gJ2IgLT4gJ2MpXG4gICAgICAtPiBvdGhlcjooJ2QgLT4gJ2QgLT4gJ2QpXG4gICAgICAtPiAoJ2MsICdkKSB0XG5cbiAgICB2YWwgYmluZCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2EgLT4gKCdjLCAnYikgdCkgLT4gKCdjLCAnYikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cbiAgb3BlbiBXaXRoX3JldHVyblxuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKVxuXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFwcCA9IEFwcGxpY2F0aXZlLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBhcHBseSB0MSB0MiA9IGJpbmQgdDEgfmY6KGZ1biBmIC0+IGJpbmQgdDIgfmY6KGZ1biB4IC0+IHJldHVybiAoZiB4KSkpXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBcHBcblxuICBsZXQgY29tYmluZV9hbGwgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4gXyAtPiBvdGhlcl9sb29wIGYgYWNjIHRzKVxuICAgICAgICAgIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXJcbiAgICAgICAgICB0XG4gICAgICAgICAgfnJldHVybjooZnVuIHggLT4gcmV0dXJuX2xvb3AgZiAoeCA6OiBhY2MpIHRzKVxuICAgICAgICAgIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiBbXSB0c1xuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbF91bml0ID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXJcbiAgICAgICAgICB0XG4gICAgICAgICAgfnJldHVybjooZnVuICgpIC0+IG90aGVyX2xvb3AgZiBhY2MgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8pIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyIHQgfnJldHVybjooZnVuICgpIC0+IHJldHVybl9sb29wIGYgdHMpIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiB0c1xuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9IGVpdGhlciB0IH5yZXR1cm46T3B0aW9uLnNvbWUgfm90aGVyOihmdW4gXyAtPiBOb25lKVxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGVpdGhlciB0IH5yZXR1cm46Rm4uaWQgfm90aGVyOihmdW4gXyAtPiBkZWZhdWx0KVxuXG4gIGxldCB3aXRoX3JldHVybiBmID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHJldCAtPiBvdGhlciAoZiAoV2l0aF9yZXR1cm4ucHJlcGVuZCByZXQgfmY6cmV0dXJuKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpcnN0ID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IHJldHVybiA9IGZpcnN0XG4gICAgbGV0IG90aGVyID0gc2Vjb25kXG5cbiAgICBsZXQgZWl0aGVyIHQgfnJldHVybiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEZpcnN0IHggLT4gcmV0dXJuIHhcbiAgICAgIHwgU2Vjb25kIHkgLT4gb3RoZXIgeVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAoZiB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKG90aGVyIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIF8gfCBfLCBTZWNvbmQgeCAtPiBTZWNvbmQgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24uICopXG4gICAgICB8IFNlY29uZCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFNlY29uZCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCByZXR1cm4gPSBzZWNvbmRcbiAgICBsZXQgb3RoZXIgPSBmaXJzdFxuXG4gICAgbGV0IGVpdGhlciB0IH5yZXR1cm4gfm90aGVyID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeSAtPiByZXR1cm4geVxuICAgICAgfCBGaXJzdCB4IC0+IG90aGVyIHhcbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKGYgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IEZpcnN0IChvdGhlciB4IHkpXG4gICAgICB8IEZpcnN0IHgsIF8gfCBfLCBGaXJzdCB4IC0+IEZpcnN0IHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU2Vjb25kIHggLT4gZiB4XG4gICAgICAoKiBSZXVzZSB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGlvbiwgbGlrZSBbRmlyc3QuYmluZF0gYWJvdmUuICopXG4gICAgICB8IEZpcnN0IF8gYXMgeSAtPiB5XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdmLCAncykgX2VpdGhlciA9ICgnZiwgJ3MpIHQgPVxuICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICB8IFNlY29uZCBvZiAnc1xuZW5kXG4iLCJpbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxubGV0IGl0ZXJpIH5mb2xkIHQgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIHYgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgdiBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYylcbjs7XG5cbmxldCBjb3VudGkgfmZvbGRpIHQgfmYgPSBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIG4gYSAtPiBpZiBmIGkgYSB0aGVuIG4gKyAxIGVsc2UgbilcblxubGV0IGV4aXN0c2kgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpXG47O1xuXG5sZXQgZm9yX2FsbGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIG5vdCAoZiBpIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZmluZF9tYXBpIH5pdGVyaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmRpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIChTb21lIChpLCB4KSkpO1xuICAgIE5vbmUpXG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBzaWdcbiAgICBpbmNsdWRlIENvbnRhaW5lcl9pbnRmLk1ha2VfZ2VuX2FyZ1xuXG4gICAgdmFsIGl0ZXJpIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICgnYSB0LCAnYSBlbHQpIGl0ZXJpIF1cbiAgICB2YWwgZm9sZGkgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhIHQsICdhIGVsdCwgXykgZm9sZGkgXVxuICBlbmQpIDogR2VuZXJpYyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9IHN0cnVjdFxuICBpbmNsdWRlIENvbnRhaW5lci5NYWtlX2dlbiAoVClcblxuICBsZXQgaXRlcmkgPVxuICAgIG1hdGNoIFQuaXRlcmkgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyaSAtPiBpdGVyaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXJpIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgZm9sZGkgPVxuICAgIG1hdGNoIFQuZm9sZGkgd2l0aFxuICAgIHwgYEN1c3RvbSBmb2xkaSAtPiBmb2xkaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5pbml0IH5mIC0+IGZvbGRpIH5mb2xkIHQgfmluaXQgfmZcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPSBjb3VudGkgfmZvbGRpIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IGV4aXN0c2kgfml0ZXJpIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBmb3JfYWxsaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZF9tYXBpIHQgfmYgPSBmaW5kX21hcGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRpIHQgfmYgPSBmaW5kaSB+aXRlcmkgdCB+ZlxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKFQpXG5cbiAgKCogTm90IHBhcnQgb2YgW0NvbnRhaW5lci5HZW5lcmljXS4gKilcbiAgbGV0IG1lbSA9IEMubWVtXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZTAgKFQpXG5cbiAgKCogTm90IHBhcnQgb2YgW0NvbnRhaW5lci5HZW5lcmljXS4gKilcbiAgbGV0IG1lbSA9IEMubWVtXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb250YWluZXJfaW50Zi5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICAoKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2ZcbiAgICAgdGhlIHNlcXVlbmNlICopXG4gIHR5cGUgKCdhLCAncykgdCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mICdzXG4gICAgfCBZaWVsZCBvZiAnYSAqICdzXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdzLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdzKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfIHNfXzAxMF8pXG4gICAgICAgIDogICgoYV9fMDA5XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChzX18wMTBfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wMDlfLCBzX18wMTBfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2Zfc19fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgICB8IERvbmUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRG9uZVwiXG4gICAgICAgIHwgU2tpcCBhcmcwX18wMDNfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzAwNF8gPSBfb2Zfc19fMDAyXyBhcmcwX18wMDNfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2tpcFwiOyByZXMwX18wMDRfIF1cbiAgICAgICAgfCBZaWVsZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDA3XyA9IF9vZl9hX18wMDFfIGFyZzBfXzAwNV9cbiAgICAgICAgICBhbmQgcmVzMV9fMDA4XyA9IF9vZl9zX18wMDJfIGFyZzFfXzAwNl8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJZaWVsZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm9wZW4gU3RlcFxuXG4oKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBzZXF1ZW5jZSAqKVxudHlwZSArXyB0ID0gU2VxdWVuY2UgOiAncyAqICgncyAtPiAoJ2EsICdzKSBTdGVwLnQpIC0+ICdhIHRcbnR5cGUgJ2Egc2VxdWVuY2UgPSAnYSB0XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IG5leHRfc3RlcCAoU2VxdWVuY2UgKHMsIGYpKSA9XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+IFNraXAgKFNlcXVlbmNlIChzLCBmKSlcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgU2VxdWVuY2UgKHMsIGYpKVxuICA7O1xuXG4gIGxldCBkZWxheWVkX2ZvbGRfc3RlcCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgbG9vcCBzIG5leHQgZmluaXNoIGYgYWNjID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gZmluaXNoIGFjY1xuICAgICAgfCBTa2lwIHMgLT4gZiBhY2MgTm9uZSB+azoobG9vcCBzIG5leHQgZmluaXNoIGYpXG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBmIGFjYyAoU29tZSBhKSB+azoobG9vcCBzIG5leHQgZmluaXNoIGYpXG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dCBmaW5pc2ggZiBpbml0XG4gIDs7XG5lbmRcblxubGV0IHVuZm9sZF9zdGVwIH5pbml0IH5mID0gU2VxdWVuY2UgKGluaXQsIGYpXG5cbmxldCB1bmZvbGQgfmluaXQgfmYgPVxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjooZnVuIHMgLT5cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGVwLkRvbmVcbiAgICB8IFNvbWUgKGEsIHMpIC0+IFN0ZXAuWWllbGQgKGEsIHMpKVxuOztcblxubGV0IHVuZm9sZF93aXRoIHMgfmluaXQgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoaW5pdCwgcylcbiAgICAgICwgZnVuIChzZWVkLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChzZWVkLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgICAgIChtYXRjaCBmIHNlZWQgYSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzZWVkIC0+IFNraXAgKHNlZWQsIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHNlZWQpIC0+IFlpZWxkIChhLCAoc2VlZCwgcykpKSApXG47O1xuXG5sZXQgdW5mb2xkX3dpdGhfYW5kX2ZpbmlzaCBzIH5pbml0IH5ydW5uaW5nX3N0ZXAgfmlubmVyX2ZpbmlzaGVkIH5maW5pc2hpbmdfc3RlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBJbm5lcl9ydW5uaW5nIChpbml0LCBzKVxuICAgICAgLCBmdW4gc3RhdGUgLT5cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgaW5uZXJfc3RhdGUgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gU2tpcCAoYElubmVyX2ZpbmlzaGVkIChpbm5lcl9maW5pc2hlZCBzdGF0ZSkpXG4gICAgICAgICAgIHwgU2tpcCBpbm5lcl9zdGF0ZSAtPiBTa2lwIChgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSlcbiAgICAgICAgICAgfCBZaWVsZCAoeCwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHJ1bm5pbmdfc3RlcCBzdGF0ZSB4IHdpdGhcbiAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgfCBTa2lwIHN0YXRlIC0+IFNraXAgKGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKVxuICAgICAgICAgICAgICB8IFlpZWxkICh5LCBzdGF0ZSkgLT4gWWllbGQgKHksIGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKSkpXG4gICAgICAgIHwgYElubmVyX2ZpbmlzaGVkIHN0YXRlIC0+XG4gICAgICAgICAgKG1hdGNoIGZpbmlzaGluZ19zdGVwIHN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHN0YXRlIC0+IFNraXAgKGBJbm5lcl9maW5pc2hlZCBzdGF0ZSlcbiAgICAgICAgICAgfCBZaWVsZCAoeSwgc3RhdGUpIC0+IFlpZWxkICh5LCBgSW5uZXJfZmluaXNoZWQgc3RhdGUpKSApXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6bCB+ZjooZnVuY3Rpb25cbiAgICB8IFtdIC0+IERvbmVcbiAgICB8IHggOjogbCAtPiBZaWVsZCAoeCwgbCkpXG47O1xuXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCB2IG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gdlxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyB2IG5leHQgZlxuICAgIHwgWWllbGQgKGEsIHMpIC0+IGxvb3AgcyAoZiB2IGEpIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIGluaXQgbmV4dCBmXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpXG5cblxubGV0IHRvX2xpc3QgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICBsZXQgc2FmZV90b19saXN0IHQgPSBMaXN0LnJldiAodG9fbGlzdF9yZXYgdCkgaW5cbiAgbGV0IHJlYyB0b19saXN0IHMgbmV4dCBpID1cbiAgICBpZiBpID0gMFxuICAgIHRoZW4gc2FmZV90b19saXN0IChTZXF1ZW5jZSAocywgbmV4dCkpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IFtdXG4gICAgICB8IFNraXAgcyAtPiB0b19saXN0IHMgbmV4dCBpXG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBhIDo6IHRvX2xpc3QgcyBuZXh0IChpIC0gMSkpXG4gIGluXG4gIHRvX2xpc3QgcyBuZXh0IDUwMFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X3Ygc3RvcF92ID1cbiAgbGV0IHN0ZXAgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgYGluY2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID4gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGluY2x1c2l2ZSAtPiBmdW4gaSAtPiBpZiBpIDwgc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGV4Y2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID49IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgICB8IGBleGNsdXNpdmUgLT4gZnVuIGkgLT4gaWYgaSA8PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X3ZcbiAgICB8IGBleGNsdXNpdmUgLT4gc3RhcnRfdiArIHN0cmlkZVxuICBpblxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjpzdGVwXG47O1xuXG5sZXQgb2ZfbGF6eSB0X2xhenkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDp0X2xhenkgfmY6KGZ1biB0X2xhenkgLT5cbiAgICBsZXQgKFNlcXVlbmNlIChzLCBuZXh0KSkgPSBMYXp5LmZvcmNlIHRfbGF6eSBpblxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgcyAtPlxuICAgICAgU2tpcFxuICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSAocywgbmV4dCkgaW5cbiAgICAgICAgIGxhenkgdilcbiAgICB8IFlpZWxkICh4LCBzKSAtPlxuICAgICAgWWllbGRcbiAgICAgICAgKCB4XG4gICAgICAgICwgbGV0IHYgPSBTZXF1ZW5jZSAocywgbmV4dCkgaW5cbiAgICAgICAgICBsYXp5IHYgKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNlZWRcbiAgICAgICwgZnVuIHNlZWQgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChmIGEsIHMpIClcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoZiBpIGEsIChpICsgMSwgcykpIClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgYWNjIHggaW5cbiAgICBZaWVsZCAoeCwgYWNjKSlcbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGkgYWNjIHggaW5cbiAgICBZaWVsZCAoeCwgKGkgKyAxLCBhY2MpKSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNlZWRcbiAgICAgICwgZnVuIHNlZWQgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gZiBhIC0+IFlpZWxkIChhLCBzKVxuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIHMgKVxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIG1hcCB+ZjpzbmQgKGZpbHRlciAobWFwaSB0IH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGlcbiAgICB8IFNraXAgcyAtPiBsb29wIGkgcyBuZXh0XG4gICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCAoaSArIDEpIHMgbmV4dFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6KFtdLCAwKSB+ZjooZnVuIChsLCBpKSB4IC0+IHggOjogbCwgaSArIDEpXG5cbmxldCB0b19hcnJheSB0ID1cbiAgbGV0IGwsIGxlbiA9IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IHggOjogbCAtPlxuICAgIGxldCBhID0gQXJyYXkuY3JlYXRlIH5sZW4geCBpblxuICAgIGxldCByZWMgbG9vcCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgYS4oaSkgPC0geDtcbiAgICAgICAgbG9vcCAoaSAtIDEpIGxcbiAgICBpblxuICAgIGxvb3AgKGxlbiAtIDIpIGw7XG4gICAgYVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gZiBhIC0+IFNvbWUgYVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIGYgaSBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBub3QgKGYgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBub3QgKGYgaSBhKSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBmIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIGYgaSBhIC0+IHRydWVcbiAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzZWVkIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gKClcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIGYgYTtcbiAgICAgIGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCBfIC0+IGZhbHNlXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBhID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKGIsIF8pIHdoZW4gZXF1YWwgYSBiIC0+IHRydWVcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBhXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBhXG47O1xuXG5sZXQgZW1wdHkgPSBTZXF1ZW5jZSAoKCksIGZ1biAoKSAtPiBEb25lKVxuXG5sZXQgYmluZCB0IH5mID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpLCByZXN0IC0+XG4gICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgfCBEb25lIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGVtcHR5LCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gICAgICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBTa2lwIChmIGEsIFNlcXVlbmNlIChzLCBuZXh0KSkpKVxuICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIG5leHQpLCByZXN0KVxuICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIChTZXF1ZW5jZSAocywgbmV4dCksIHJlc3QpKSkpXG4gICAgfmluaXQ6KGVtcHR5LCB0KVxuOztcblxubGV0IHJldHVybiB4ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6KFNvbWUgeCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IERvbmVcbiAgICB8IFNvbWUgeCAtPiBZaWVsZCAoeCwgTm9uZSkpXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZClcblxubGV0IG50aCBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTm9uZVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBpIHMgbmV4dFxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gaWYgcGh5c19lcXVhbCBpIDAgdGhlbiBTb21lIGEgZWxzZSBsb29wIChpIC0gMSkgcyBuZXh0XG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIG4gcyBuZXh0KVxuOztcblxubGV0IG50aF9leG4gcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLm50aFwiXG4gIGVsc2UgKFxuICAgIG1hdGNoIG50aCBzIG4gd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLm50aFwiXG4gICAgfCBTb21lIHggLT4geClcbjs7XG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAxMV8gYl9fMDEyXyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAxMV8gYl9fMDEyX1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDExXywgYl9fMDEyXyB3aXRoXG4gICAgICB8IExlZnQgX2FfXzAxM18sIExlZnQgX2JfXzAxNF8gLT4gX2NtcF9fYSBfYV9fMDEzXyBfYl9fMDE0X1xuICAgICAgfCBMZWZ0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgTGVmdCBfIC0+IDFcbiAgICAgIHwgUmlnaHQgX2FfXzAxNV8sIFJpZ2h0IF9iX18wMTZfIC0+IF9jbXBfX2IgX2FfXzAxNV8gX2JfXzAxNl9cbiAgICAgIHwgUmlnaHQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBSaWdodCBfIC0+IDFcbiAgICAgIHwgQm90aCAoX2FfXzAxN18sIF9hX18wMTlfKSwgQm90aCAoX2JfXzAxOF8sIF9iX18wMjBfKSAtPlxuICAgICAgICAobWF0Y2ggX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fYiBfYV9fMDE5XyBfYl9fMDIwX1xuICAgICAgICAgfCBuIC0+IG4pKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdFxuICAgIDogdHlwZSBhIGIuXG4gICAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgICAgLT4gKGEsIGIpIHRcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgfCBMZWZ0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgIHwgUmlnaHQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuICAgICAgfCBCb3RoIChfYTAsIF9hMSkgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMiBpblxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgICAgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTFcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDQ0XyBiX18wNDVfKVxuICAgICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wNDRfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzA0NV8pXG4gICAgICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKGFfXzA0NF8sIGJfXzA0NV8pIHQpIC0+XG4gICAgICBsZXQgZXJyb3Jfc291cmNlX18wMjVfID0gXCJzZXF1ZW5jZS5tbC5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50XCIgaW5cbiAgICAgIGZ1biBfb2ZfYV9fMDIxXyBfb2ZfYl9fMDIyXyAtPiBmdW5jdGlvblxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIF90YWdfXzAyOF8pIDo6IHNleHBfYXJnc19fMDI5XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDI3XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAyOV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDMwXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzMV8gPSBfb2ZfYV9fMDIxXyBhcmcwX18wMzBfIGluXG4gICAgICAgICAgICAgTGVmdCByZXMwX18wMzFfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI1X1xuICAgICAgICAgICAgICAgX3RhZ19fMDI4X1xuICAgICAgICAgICAgICAgX3NleHBfXzAyN18pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBfdGFnX18wMzNfKSA6OiBzZXhwX2FyZ3NfXzAzNF8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzMl8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzRfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzNV8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzZfID0gX29mX2JfXzAyMl8gYXJnMF9fMDM1XyBpblxuICAgICAgICAgICAgIFJpZ2h0IHJlczBfXzAzNl9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMzNfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDMyXylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBfdGFnX18wMzhfKSA6OiBzZXhwX2FyZ3NfXzAzOV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzN18gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzlfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzA0MF87IGFyZzFfXzA0MV8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wNDJfID0gX29mX2FfXzAyMV8gYXJnMF9fMDQwX1xuICAgICAgICAgICAgIGFuZCByZXMxX18wNDNfID0gX29mX2JfXzAyMl8gYXJnMV9fMDQxXyBpblxuICAgICAgICAgICAgIEJvdGggKHJlczBfXzA0Ml8sIHJlczFfXzA0M18pXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI1X1xuICAgICAgICAgICAgICAgX3RhZ19fMDM4X1xuICAgICAgICAgICAgICAgX3NleHBfXzAzN18pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjRfXG4gICAgICAgIHwgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDU2XyBiX18wNTdfKVxuICAgICAgICA6ICAoKGFfXzA1Nl8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDU3XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDU2XywgYl9fMDU3XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzA0Nl8gX29mX2JfXzA0N18gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBMZWZ0IGFyZzBfXzA0OF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDQ5XyA9IF9vZl9hX18wNDZfIGFyZzBfXzA0OF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IHJlczBfXzA0OV8gXVxuICAgICAgICB8IFJpZ2h0IGFyZzBfXzA1MF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUxXyA9IF9vZl9iX18wNDdfIGFyZzBfXzA1MF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyByZXMwX18wNTFfIF1cbiAgICAgICAgfCBCb3RoIChhcmcwX18wNTJfLCBhcmcxX18wNTNfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX2FfXzA0Nl8gYXJnMF9fMDUyX1xuICAgICAgICAgIGFuZCByZXMxX18wNTVfID0gX29mX2JfXzA0N18gYXJnMV9fMDUzXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIjsgcmVzMF9fMDU0XzsgcmVzMV9fMDU1XyBdXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJCb3RoXCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubGV0IG1lcmdlX3dpdGhfZHVwbGljYXRlcyAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgfmNvbXBhcmUgPVxuICBsZXQgdW5zaGFkb3dlZF9jb21wYXJlID0gY29tcGFyZSBpblxuICBsZXQgb3BlbiBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCBpblxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCAoWWllbGQgKGEsIHMxJykgYXMgczEpLCAoWWllbGQgKGIsIHMyJykgYXMgczIpIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IHVuc2hhZG93ZWRfY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPCAwXG4gICAgICB0aGVuIFlpZWxkIChMZWZ0IGEsIChTa2lwIHMxJywgczIpKVxuICAgICAgZWxzZSBpZiBjb21wYXJpc29uID0gMFxuICAgICAgdGhlbiBZaWVsZCAoQm90aCAoYSwgYiksIChTa2lwIHMxJywgU2tpcCBzMicpKVxuICAgICAgZWxzZSBZaWVsZCAoUmlnaHQgYiwgKHMxLCBTa2lwIHMyJykpXG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIChhLCBzMSksIERvbmUgLT4gWWllbGQgKExlZnQgYSwgKFNraXAgczEsIERvbmUpKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoUmlnaHQgYiwgKERvbmUsIFNraXAgczIpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZCBzMSBzMiB+Y29tcGFyZSA9XG4gIG1hcCAobWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIHMxIHMyIH5jb21wYXJlKSB+ZjooZnVuY3Rpb25cbiAgICB8IExlZnQgeCB8IFJpZ2h0IHggfCBCb3RoICh4LCBfKSAtPiB4KVxuOztcblxubGV0IChtZXJnZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDIxLTA3XSBGb3IgaWRlbnRpY2FsIGJlaGF2aW9yLCB1c2UgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZF0sIGJ1dCBjb25zaWRlciB1c2luZyBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2Vfc29ydGVkXSBpbnN0ZWFkLlwiXSlcbiAgPVxuICBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRcbjs7XG5cbmxldCBtZXJnZV9zb3J0ZWQgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpIH5jb21wYXJlID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICAgIHwgKFlpZWxkIChhLCBzMScpIGFzIHMxKSwgKFlpZWxkIChiLCBzMicpIGFzIHMyKSAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSBjb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8PSAwIHRoZW4gWWllbGQgKGEsIChTa2lwIHMxJywgczIpKSBlbHNlIFlpZWxkIChiLCAoczEsIFNraXAgczInKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgKGEsIHMxKSwgRG9uZSAtPiBZaWVsZCAoYSwgKFNraXAgczEsIERvbmUpKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoYiwgKERvbmUsIFNraXAgczIpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IGhkIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChhLCBfKSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgaGRfZXhuIHMgPVxuICBtYXRjaCBoZCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiaGRfZXhuXCJcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHRsIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChfLCBhKSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgKG1hdGNoIGxvb3AgcyBuZXh0IHdpdGhcbiAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfCBTb21lIHMgLT4gU29tZSAoU2VxdWVuY2UgKHMsIG5leHQpKSlcbjs7XG5cbmxldCB0bF9lYWdlcmx5X2V4biBzID1cbiAgbWF0Y2ggdGwgcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRsX2V4blwiXG4gIHwgU29tZSBzIC0+IHNcbjs7XG5cbmxldCBsaWZ0X2lkZW50aXR5IG5leHQgcyA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgRG9uZSAtPiBEb25lXG4gIHwgU2tpcCBzIC0+IFNraXAgKGBJZGVudGl0eSBzKVxuICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgYElkZW50aXR5IHMpXG47O1xuXG5sZXQgbmV4dCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCAoYSwgcykgLT4gU29tZSAoYSwgU2VxdWVuY2UgKHMsIG5leHQpKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBmaWx0ZXJfb3B0IHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzXG4gICAgICAsIGZ1biBzIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChOb25lLCBzKSAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoU29tZSBhLCBzKSAtPiBZaWVsZCAoYSwgcykgKVxuOztcblxubGV0IGZpbHRlcl9tYXAgcyB+ZiA9IGZpbHRlcl9vcHQgKG1hcCBzIH5mKVxubGV0IGZpbHRlcl9tYXBpIHMgfmYgPSBmaWx0ZXJfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgc3BsaXRfbiBzIG4gPVxuICBsZXQgcmVjIGxvb3AgcyBpIGFjY3VtIG5leHQgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gTGlzdC5yZXYgYWNjdW0sIFNlcXVlbmNlIChzLCBuZXh0KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBMaXN0LnJldiBhY2N1bSwgZW1wdHlcbiAgICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBpIGFjY3VtIG5leHRcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGxvb3AgcyAoaSAtIDEpIChhIDo6IGFjY3VtKSBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG4gW10gbmV4dFxuOztcblxubGV0IGNodW5rc19leG4gdCBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jaHVua3NfZXhuXCJcbiAgZWxzZVxuICAgIHVuZm9sZF9zdGVwIH5pbml0OnQgfmY6KGZ1biB0IC0+XG4gICAgICBtYXRjaCBzcGxpdF9uIHQgbiB3aXRoXG4gICAgICB8IFtdLCBfZW1wdHkgLT4gRG9uZVxuICAgICAgfCAoXyA6OiBfIGFzIHhzKSwgdCAtPiBZaWVsZCAoeHMsIHQpKVxuOztcblxubGV0IGZpbmRpIHMgfmYgPSBmaW5kIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgZmluZF9leG4gcyB+ZiA9XG4gIG1hdGNoIGZpbmQgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLmZpbmRfZXhuXCJcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIG1hdGNoIHMxLCBzMiB3aXRoXG4gIHwgU2VxdWVuY2UgKHMxLCBuZXh0MSksIFNlcXVlbmNlIChzMiwgbmV4dDIpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYEZpcnN0X2xpc3QgczFcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgRmlyc3RfbGlzdCBzMSAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0MSBzMSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBTa2lwIChgU2Vjb25kX2xpc3QgczIpXG4gICAgICAgICAgIHwgU2tpcCBzMSAtPiBTa2lwIChgRmlyc3RfbGlzdCBzMSlcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgczEpIC0+IFlpZWxkIChhLCBgRmlyc3RfbGlzdCBzMSkpXG4gICAgICAgIHwgYFNlY29uZF9saXN0IHMyIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQyIHMyIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMyIC0+IFNraXAgKGBTZWNvbmRfbGlzdCBzMilcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgczIpIC0+IFlpZWxkIChhLCBgU2Vjb25kX2xpc3QgczIpKSApXG47O1xuXG5sZXQgY29uY2F0X21hcCBzIH5mID0gYmluZCBzIH5mXG5sZXQgY29uY2F0IHMgPSBjb25jYXRfbWFwIHMgfmY6Rm4uaWRcbmxldCBjb25jYXRfbWFwaSBzIH5mID0gY29uY2F0X21hcCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IHppcCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCAoYSwgczEpLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkICgoYSwgYiksIChTa2lwIHMxLCBTa2lwIHMyKSlcbiAgICB8IERvbmUsIF8gfCBfLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCB6aXBfZnVsbCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCAoYSwgczEpLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChgQm90aCAoYSwgYiksIChTa2lwIHMxLCBTa2lwIHMyKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoYFJpZ2h0IGIsIChEb25lLCBuZXh0MiBzMikpXG4gICAgfCBZaWVsZCAoYSwgczEpLCBEb25lIC0+IFlpZWxkIChgTGVmdCBhLCAobmV4dDEgczEsIERvbmUpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IGJvdW5kZWRfbGVuZ3RoIChTZXF1ZW5jZSAoc2VlZCwgbmV4dCkpIH5hdF9tb3N0ID1cbiAgbGV0IHJlYyBsb29wIGkgc2VlZCBuZXh0ID1cbiAgICBpZiBpID4gYXRfbW9zdFxuICAgIHRoZW4gYEdyZWF0ZXJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICB8IERvbmUgLT4gYElzIGlcbiAgICAgIHwgU2tpcCBzZWVkIC0+IGxvb3AgaSBzZWVkIG5leHRcbiAgICAgIHwgWWllbGQgKF8sIHNlZWQpIC0+IGxvb3AgKGkgKyAxKSBzZWVkIG5leHQpXG4gIGluXG4gIGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCBsZW5ndGhfaXNfYm91bmRlZF9ieSA/KG1pbiA9IC0xKSA/bWF4IHQgPVxuICBsZXQgbGVuZ3RoX2lzX2F0X2xlYXN0IChTZXF1ZW5jZSAocywgbmV4dCkpID1cbiAgICBsZXQgcmVjIGxvb3AgcyBhY2MgPVxuICAgICAgaWYgYWNjID49IG1pblxuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBhY2NcbiAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCBzIChhY2MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgcyAwXG4gIGluXG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBsZW5ndGhfaXNfYXRfbGVhc3QgdFxuICB8IFNvbWUgbWF4IC0+XG4gICAgKG1hdGNoIGJvdW5kZWRfbGVuZ3RoIHQgfmF0X21vc3Q6bWF4IHdpdGhcbiAgICAgfCBgSXMgbGVuIHdoZW4gbGVuID49IG1pbiAtPiB0cnVlXG4gICAgIHwgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCBpdGVyaSBzIH5mID0gaXRlciAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IGZvbGRpIHMgfmluaXQgfmYgPVxuICBmb2xkIH5pbml0IChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gYWNjIChpLCBzKSAtPiBmIGkgYWNjIHMpXG47O1xuXG5sZXQgcmVkdWNlIHMgfmYgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGEsIHMpIC0+IFNvbWUgKGZvbGQgcyB+aW5pdDphIH5mKVxuOztcblxubGV0IHJlZHVjZV9leG4gcyB+ZiA9XG4gIG1hdGNoIHJlZHVjZSBzIH5mIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UucmVkdWNlX2V4blwiXG4gIHwgU29tZSByZXMgLT4gcmVzXG47O1xuXG5sZXQgZ3JvdXAgKFNlcXVlbmNlIChzLCBuZXh0KSkgfmJyZWFrID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDooU29tZSAoW10sIHMpKVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgIHwgU29tZSAoYWNjLCBzKSAtPlxuICAgICAgICAobWF0Y2ggYWNjLCBuZXh0IHMgd2l0aFxuICAgICAgICAgfCBfLCBTa2lwIHMgLT4gU2tpcCAoU29tZSAoYWNjLCBzKSlcbiAgICAgICAgIHwgW10sIERvbmUgLT4gRG9uZVxuICAgICAgICAgfCBhY2MsIERvbmUgLT4gWWllbGQgKExpc3QucmV2IGFjYywgTm9uZSlcbiAgICAgICAgIHwgW10sIFlpZWxkIChjdXIsIHMpIC0+IFNraXAgKFNvbWUgKFsgY3VyIF0sIHMpKVxuICAgICAgICAgfCAocHJldiA6OiBfIGFzIGFjYyksIFlpZWxkIChjdXIsIHMpIC0+XG4gICAgICAgICAgIGlmIGJyZWFrIHByZXYgY3VyXG4gICAgICAgICAgIHRoZW4gWWllbGQgKExpc3QucmV2IGFjYywgU29tZSAoWyBjdXIgXSwgcykpXG4gICAgICAgICAgIGVsc2UgU2tpcCAoU29tZSAoY3VyIDo6IGFjYywgcykpKSlcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSAoU2VxdWVuY2UgKHMsIG5leHQpKSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgbGFzdF9lbHQgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgbGFzdF9lbHQgc1xuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggbGFzdF9lbHQgd2l0aFxuICAgICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNvbWUgKGIsIGEpXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IGxvb3AgKFNvbWUgYSkgcylcbiAgaW5cbiAgbG9vcCBOb25lIHNcbjs7XG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyBzIH5lcXVhbCA9XG4gIHVuZm9sZF93aXRoIHMgfmluaXQ6Tm9uZSB+ZjooZnVuIHByZXYgYSAtPlxuICAgIG1hdGNoIHByZXYgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNraXAgKFNvbWUgYSlcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gWWllbGQgKGEsIFNvbWUgYSkpXG47O1xuXG5sZXQgY291bnQgcyB+ZiA9IGxlbmd0aCAoZmlsdGVyIHMgfmYpXG5sZXQgY291bnRpIHQgfmYgPSBsZW5ndGggKGZpbHRlcmkgdCB+ZilcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT4gaWYgaSA+PSBuIHRoZW4gRG9uZSBlbHNlIFlpZWxkIChmIGksIGkgKyAxKSlcbjs7XG5cbmxldCBzdWIgcyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnN1YlwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBpZiBpIC0gcG9zID49IGxlblxuICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBpID49IHBvcyAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSlcbiAgICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIChpICsgMSwgcykpIClcbjs7XG5cbmxldCB0YWtlIHMgbGVuID1cbiAgaWYgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2UudGFrZVwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBpZiBpID49IGxlblxuICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIChpICsgMSwgcykpKSApXG47O1xuXG5sZXQgZHJvcCBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLmRyb3BcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBpID49IGxlbiAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSlcbiAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gU2tpcCAoaSArIDEsIHMpIClcbjs7XG5cbmxldCB0YWtlX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzXG4gICAgICAsIGZ1biBzIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGYgYSAtPiBZaWVsZCAoYSwgcylcbiAgICAgICAgfCBZaWVsZCAoXywgXykgLT4gRG9uZSApXG47O1xuXG5sZXQgZHJvcF93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYERyb3BwaW5nIHNcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgRHJvcHBpbmcgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgRHJvcHBpbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBmIGEgLT4gU2tpcCAoYERyb3BwaW5nIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBgSWRlbnRpdHkgcykpXG4gICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMgKVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0IHMgeCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBDb25zaW5nIChzZWVkLCB4KVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBDb25zaW5nIChzZWVkLCB4KSAtPiBZaWVsZCAoeCwgYElkZW50aXR5IHNlZWQpXG4gICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMgKVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0X3dpdGhfbGlzdCBzIGwgPSBhcHBlbmQgKG9mX2xpc3QgbCkgc1xubGV0IHNoaWZ0X2xlZnQgPSBkcm9wXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgaW50ZXJzcGVyc2UgcyB+c2VwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYEluaXQgc1xuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBJbml0IHMgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoYEluaXQgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIGBSdW5uaW5nIHMpKVxuICAgICAgICB8IGBSdW5uaW5nIHMgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoYFJ1bm5pbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKHNlcCwgYFB1dHRpbmcgKGEsIHMpKSlcbiAgICAgICAgfCBgUHV0dGluZyAoYSwgcykgLT4gWWllbGQgKGEsIGBSdW5uaW5nIHMpIClcbjs7XG5cbmxldCByZXBlYXQgeCA9IHVuZm9sZF9zdGVwIH5pbml0OnggfmY6KGZ1biB4IC0+IFlpZWxkICh4LCB4KSlcblxubGV0IGN5Y2xlX2xpc3RfZXhuIHhzID1cbiAgaWYgTGlzdC5pc19lbXB0eSB4cyB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY3ljbGVfbGlzdF9leG5cIjtcbiAgbGV0IHMgPSBvZl9saXN0IHhzIGluXG4gIGNvbmNhdF9tYXAgfmY6KGZ1biAoKSAtPiBzKSAocmVwZWF0ICgpKVxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IHNhIHNiID0gY29uY2F0X21hcCBzYSB+ZjooZnVuIGEgLT4gemlwIChyZXBlYXQgYSkgc2IpXG5sZXQgc2luZ2xldG9uIHggPSByZXR1cm4geFxuXG5sZXQgZGVsYXllZF9mb2xkIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcCBzIH5pbml0IH5maW5pc2ggfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gayBhY2NcbiAgICB8IFNvbWUgYSAtPiBmIGFjYyBhIH5rKVxuOztcblxubGV0IGZvbGRfbSB+YmluZCB+cmV0dXJuIHQgfmluaXQgfmYgPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXBcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuIGFjYykgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhY2MgYSkgfmY6aylcbiAgICB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGl0ZXJfbSB+YmluZCB+cmV0dXJuIHQgfmYgPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXBcbiAgICB0XG4gICAgfmluaXQ6KClcbiAgICB+ZjooZnVuICgpIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gKCkpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYSkgfmY6aylcbiAgICB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGZvbGRfdW50aWwgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmluaXNoIGFjY1xuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgYWNjXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCAoZiBhY2MgYSA6ICgnYSwgJ2IpIENvbnRpbnVlX29yX3N0b3AudCkgd2l0aFxuICAgICAgIHwgU3RvcCB4IC0+IHhcbiAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBsb29wIHMgbmV4dCBmIGFjYylcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvbGRfcmVzdWx0IHMgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBSZXN1bHQucmV0dXJuIGFjY1xuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgYWNjXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCAoZiBhY2MgYSA6IChfLCBfKSBSZXN1bHQudCkgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICB8IE9rIGFjYyAtPiBsb29wIHMgbmV4dCBmIGFjYylcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvcmNlX2VhZ2VybHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcblxubGV0IG1lbW9pemUgKHR5cGUgYSkgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIG9mIChhLCB0KSBTdGVwLnQgTGF6eS50XG4gIGVuZFxuICBpblxuICBsZXQgcmVjIG1lbW9pemUgcyA9IE0uVCAobGF6eSAoZmluZF9zdGVwIHMpKVxuICBhbmQgZmluZF9zdGVwIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgcyAtPiBmaW5kX3N0ZXAgc1xuICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBtZW1vaXplIHMpXG4gIGluXG4gIFNlcXVlbmNlIChtZW1vaXplIHMsIGZ1biAoTS5UIGwpIC0+IExhenkuZm9yY2UgbClcbjs7XG5cbmxldCBkcm9wX2VhZ2VybHkgcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaSB+bGVuIHMgbmV4dCA9XG4gICAgaWYgaSA+PSBsZW5cbiAgICB0aGVuIFNlcXVlbmNlIChzLCBuZXh0KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBlbXB0eVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBpIH5sZW4gcyBuZXh0XG4gICAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIChpICsgMSkgfmxlbiBzIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIDAgfmxlbiBzIG5leHRcbjs7XG5cbmxldCBkcm9wX3doaWxlX29wdGlvbiAoU2VxdWVuY2UgKHMsIG5leHQpKSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzXG4gICAgfCBZaWVsZCAoeCwgcykgLT4gaWYgZiB4IHRoZW4gbG9vcCBzIGVsc2UgU29tZSAoeCwgU2VxdWVuY2UgKHMsIG5leHQpKVxuICBpblxuICBsb29wIHNcbjs7XG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgXyAtPiByLnJldHVybiAxXG4gICAgICB8IGBSaWdodCBfIC0+IHIucmV0dXJuICgtMSlcbiAgICAgIHwgYEJvdGggKHYxLCB2MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2EgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA8PiAwIHRoZW4gci5yZXR1cm4gYyk7XG4gICAgMClcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID1cbiAgZm9yX2FsbCAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgIHwgYEJvdGggKGExLCBhMikgLT4gZXF1YWxfYSBhMSBhMlxuICAgIHwgYExlZnQgXyB8IGBSaWdodCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHJvdW5kX3JvYmluIGxpc3QgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaykgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIGYpIDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmIHMgd2l0aFxuICAgICAgIHwgWWllbGQgKHgsIHMpIC0+IFlpZWxkICh4LCAodG9kb19zdGFjaywgU2VxdWVuY2UgKHMsIGYpIDo6IGRvbmVfc3RhY2spKVxuICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKFNlcXVlbmNlIChzLCBmKSA6OiB0b2RvX3N0YWNrLCBkb25lX3N0YWNrKVxuICAgICAgIHwgRG9uZSAtPiBTa2lwICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSlcbiAgICB8IFtdIC0+IGlmIExpc3QuaXNfZW1wdHkgZG9uZV9zdGFjayB0aGVuIERvbmUgZWxzZSBTa2lwIChMaXN0LnJldiBkb25lX3N0YWNrLCBbXSlcbiAgaW5cbiAgbGV0IHN0YXRlID0gbGlzdCwgW10gaW5cbiAgU2VxdWVuY2UgKHN0YXRlLCBuZXh0KVxuOztcblxubGV0IGludGVybGVhdmUgKFNlcXVlbmNlIChzMSwgZjEpKSA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMyLCBmMikgOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYyIHMyIHdpdGhcbiAgICAgICB8IFlpZWxkICh4LCBzMikgLT4gWWllbGQgKHgsICh0b2RvX3N0YWNrLCBTZXF1ZW5jZSAoczIsIGYyKSA6OiBkb25lX3N0YWNrLCBzMSkpXG4gICAgICAgfCBTa2lwIHMyIC0+IFNraXAgKHRvZG9fc3RhY2ssIFNlcXVlbmNlIChzMiwgZjIpIDo6IGRvbmVfc3RhY2ssIHMxKVxuICAgICAgIHwgRG9uZSAtPiBTa2lwICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIGYxIHMxLCBkb25lX3N0YWNrIHdpdGhcbiAgICAgICB8IFlpZWxkICh0LCBzMSksIF8gLT4gU2tpcCAoTGlzdC5yZXYgKHQgOjogZG9uZV9zdGFjayksIFtdLCBzMSlcbiAgICAgICB8IFNraXAgczEsIF8gLT4gU2tpcCAoTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxKVxuICAgICAgIHwgRG9uZSwgXyA6OiBfIC0+IFNraXAgKExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSlcbiAgICAgICB8IERvbmUsIFtdIC0+IERvbmUpXG4gIGluXG4gIGxldCBzdGF0ZSA9IFtdLCBbXSwgczEgaW5cbiAgU2VxdWVuY2UgKHN0YXRlLCBuZXh0KVxuOztcblxubGV0IGludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0IHMxIHMyID1cbiAgbWFwIHMxIH5mOihmdW4geDEgLT4gbWFwIHMyIH5mOihmdW4geDIgLT4geDEsIHgyKSkgfD4gaW50ZXJsZWF2ZVxuOztcblxubGV0IG9mX3NlcSAoc2VxIDogXyBDYW1sLlNlcS50KSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnNlcSB+ZjooZnVuIHNlcSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gRG9uZVxuICAgIHwgQ29ucyAoaGQsIHRsKSAtPiBZaWVsZCAoaGQsIHRsKSlcbjs7XG5cbmxldCB0b19zZXEgKFNlcXVlbmNlIChzdGF0ZSwgbmV4dCkpID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBuZXh0IHN0YXRlIHdpdGhcbiAgICB8IERvbmUgLT4gQ2FtbC5TZXEuTmlsXG4gICAgfCBTa2lwIHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICB8IFlpZWxkIChoZCwgc3RhdGUpIC0+IENhbWwuU2VxLkNvbnMgKGhkLCBmdW4gKCkgLT4gbG9vcCBzdGF0ZSlcbiAgaW5cbiAgZnVuICgpIC0+IGxvb3Agc3RhdGVcbjs7XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnZWx0IHN0ZXBzID0gV3JhcCBvZiAoJ2VsdCwgdW5pdCAtPiAnZWx0IHN0ZXBzKSBTdGVwLnRcblxuICBsZXQgdW53cmFwIChXcmFwIHN0ZXApID0gc3RlcFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlbHQpIHQgPSAoJ2EgLT4gJ2VsdCBzdGVwcykgLT4gJ2VsdCBzdGVwc1xuXG4gICAgbGV0IHJldHVybiB4IGsgPSBrIHhcblxuICAgIGxldCBiaW5kIG0gfmYgayA9XG4gICAgICBtIChmdW4gYSAtPlxuICAgICAgICBsZXQgbScgPSBmIGEgaW5cbiAgICAgICAgbScgaylcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBtIH5mIGsgPSBtIChmdW4gYSAtPiBrIChmIGEpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoVClcblxuICBsZXQgeWllbGQgZSBrID0gV3JhcCAoWWllbGQgKGUsIGspKVxuICBsZXQgdG9fc3RlcHMgdCA9IHQgKGZ1biAoKSAtPiBXcmFwIERvbmUpXG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBkZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIGYgLT4gV3JhcCAoWWllbGQgKHgsIGZ1biAoKSAtPiBrICgpIGYpKSlcbiAgICAgIH5maW5pc2g6cmV0dXJuXG4gIDs7XG5cbiAgbGV0IHJ1biB0ID1cbiAgICBsZXQgaW5pdCAoKSA9IHRvX3N0ZXBzIHQgaW5cbiAgICBsZXQgZiB0aHVuayA9IHVud3JhcCAodGh1bmsgKCkpIGluXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQgfmZcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9hcnJheVxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGFycmF5X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2FycmF5XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGFycmF5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbmV3IGluLXBsYWNlLCBjb25zdGFudCBoZWFwIHNvcnRpbmcgYWxnb3JpdGhtIHRvIHJlcGxhY2UgdGhlXG4gICBvbmUgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyaWVzLiAgSXRzIG9ubHkgcHVycG9zZSBpcyB0byBiZSBmYXN0ZXIgKGhvcGVmdWxseVxuICAgc3RyaWN0bHkgZmFzdGVyKSB0aGFuIHRoZSBiYXNlIHNvcnQgYW5kIHN0YWJsZV9zb3J0LlxuXG4gICBBdCBhIGhpZ2ggbGV2ZWwgdGhlIGFsZ29yaXRobSBpczpcbiAgIC0gcGljayB0d28gcGl2b3QgcG9pbnRzIGJ5OlxuICAgLSBwaWNrIDUgYXJiaXRyYXJ5IGVsZW1lbnRzIGZyb20gdGhlIGFycmF5XG4gICAtIHNvcnQgdGhlbSB3aXRoaW4gdGhlIGFycmF5XG4gICAtIHRha2UgdGhlIGVsZW1lbnRzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBtaWRkbGUgZWxlbWVudCBvZiB0aGUgc29ydCBhcyB0aGUgcGl2b3RzXG4gICAtIHNvcnQgdGhlIGFycmF5IHdpdGg6XG4gICAtIGFsbCBlbGVtZW50cyBsZXNzIHRoYW4gcGl2b3QxIHRvIHRoZSBsZWZ0IChyYW5nZSAxKVxuICAgLSBhbGwgZWxlbWVudHMgPj0gcGl2b3QxIGFuZCA8PSBwaXZvdDIgaW4gdGhlIG1pZGRsZSAocmFuZ2UgMilcbiAgIC0gYWxsIGVsZW1lbnRzID4gcGl2b3QyIHRvIHRoZSByaWdodCAocmFuZ2UgMylcbiAgIC0gaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIGVxdWFsLCB0aGVuIHRoZSBtaWRkbGUgcmFuZ2UgaXMgc29ydGVkLCBzbyBpZ25vcmUgaXRcbiAgIC0gcmVjdXJzZSBpbnRvIHJhbmdlIDEsIDIgKGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSB1bmVxdWFsKSwgYW5kIDNcbiAgIC0gZHVyaW5nIHJlY3Vyc2lvbiB0aGVyZSBhcmUgdHdvIGluZmxlY3Rpb24gcG9pbnRzOlxuICAgLSBpZiB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCByYW5nZSBpcyBzbWFsbCwgdXNlIGluc2VydGlvbiBzb3J0IHRvIHNvcnQgaXRcbiAgIC0gaWYgdGhlIHN0YWNrIGRlcHRoIGlzIGxhcmdlLCBzb3J0IHRoZSByYW5nZSB3aXRoIGhlYXAtc29ydCB0byBhdm9pZCBuXjIgd29yc3QtY2FzZVxuICAgICBiZWhhdmlvclxuXG4gICBTZWUgdGhlIGZvbGxvd2luZyBmb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAgIC0gXCJEdWFsLVBpdm90IFF1aWNrc29ydFwiIGJ5IFZsYWRpbWlyIFlhcm9zbGF2c2tpeS5cbiAgICAgQXZhaWxhYmxlIGF0XG4gICAgIGh0dHA6Ly93d3cua3JpY2hlLmNvbS5hci9yb290L3Byb2dyYW1taW5nL3NwYWNlVGltZUNvbXBsZXhpdHkvRHVhbFBpdm90UXVpY2tzb3J0LnBkZlxuICAgLSBcIlF1aWNrc29ydCBpcyBPcHRpbWFsXCIgYnkgU2VkZ2V3aWNrIGFuZCBCZW50bGV5LlxuICAgICBTbGlkZXMgYXQgaHR0cDovL3d3dy5jcy5wcmluY2V0b24uZWR1L35ycy90YWxrcy9RdWlja3NvcnRJc09wdGltYWwucGRmXG4gICAtIGh0dHA6Ly93d3cuc29ydGluZy1hbGdvcml0aG1zLmNvbS9xdWljay1zb3J0LTMtd2F5ICopXG5cbm1vZHVsZSBTb3J0ID0gc3RydWN0XG4gICgqIEZvciB0aGUgc2FrZSBvZiBzcGVlZCB3ZSBjb3VsZCB1c2UgdW5zYWZlIGdldC9zZXQgdGhyb3VnaG91dCwgYnV0IHNwZWVkIHRlc3RzIGRvbid0XG4gICAgIHNob3cgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudC4gKilcbiAgbGV0IGdldCA9IGdldFxuICBsZXQgc2V0ID0gc2V0XG5cbiAgbGV0IHN3YXAgYXJyIGkgaiA9XG4gICAgbGV0IHRtcCA9IGdldCBhcnIgaSBpblxuICAgIHNldCBhcnIgaSAoZ2V0IGFyciBqKTtcbiAgICBzZXQgYXJyIGogdG1wXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgU29ydCA9IHNpZ1xuICAgIHZhbCBzb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgICAtPiBsZWZ0OmludCAoKiBsZWZ0bW9zdCBpbmRleCBvZiBzdWItYXJyYXkgdG8gc29ydCAqKVxuICAgICAgLT4gcmlnaHQ6aW50ICgqIHJpZ2h0bW9zdCBpbmRleCBvZiBzdWItYXJyYXkgdG8gc29ydCAqKVxuICAgICAgLT4gdW5pdFxuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luc2VydGlvbl9zb3J0ICopXG4gIG1vZHVsZSBJbnNlcnRpb25fc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgICAgW2Fycl0gaXMgc29ydGVkIGZyb20gW2xlZnRdIHRvIFtwb3MgLSAxXSwgaW5jbHVzaXZlICopXG4gICAgICBmb3IgcG9zID0gbGVmdCArIDEgdG8gcmlnaHQgZG9cbiAgICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uIGktMV0gaXMgc29ydGVkXG4gICAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLiBwb3NdIGlzIHNvcnRlZCBhbmQgY29udGFpbnMgb25seSBlbGVtZW50cyA+IHZcbiAgICAgICAgICAgMy4gIGFycltpXSBtYXkgYmUgdGhvdWdodCBvZiBhcyBjb250YWluaW5nIHZcblxuICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhbGxvY2F0ZSBhIGNsb3N1cmUsIGJ1dCBpcyBsZWZ0IGluIHRoZSBmb3JcbiAgICAgICAgICAgbG9vcCBmb3IgdGhlIHJlYWRhYmlsaXR5IG9mIHRoZSBkb2N1bWVudGF0aW9uLiAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGkgdiA9XG4gICAgICAgICAgbGV0IGlfbmV4dCA9IGkgLSAxIGluXG4gICAgICAgICAgaWYgaV9uZXh0ID49IGxlZnQgJiYgY29tcGFyZSAoZ2V0IGFyciBpX25leHQpIHYgPiAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBzZXQgYXJyIGkgKGdldCBhcnIgaV9uZXh0KTtcbiAgICAgICAgICAgIGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGlfbmV4dCB2KVxuICAgICAgICAgIGVsc2UgaVxuICAgICAgICBpblxuICAgICAgICBsZXQgdiA9IGdldCBhcnIgcG9zIGluXG4gICAgICAgIGxldCBmaW5hbF9wb3MgPSBsb29wIGFyciB+bGVmdCB+Y29tcGFyZSBwb3MgdiBpblxuICAgICAgICBzZXQgYXJyIGZpbmFsX3BvcyB2XG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFwc29ydCAqKVxuICBtb2R1bGUgSGVhcF9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgIHJvb3QncyBjaGlsZHJlbiBhcmUgYm90aCBlaXRoZXIgcm9vdHMgb2YgbWF4LWhlYXBzIG9yID4gcmlnaHQgKilcbiAgICBsZXQgcmVjIGhlYXBpZnkgYXJyIH5jb21wYXJlIHJvb3QgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCByZWxhdGl2ZV9yb290ID0gcm9vdCAtIGxlZnQgaW5cbiAgICAgIGxldCBsZWZ0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAxIGluXG4gICAgICBsZXQgcmlnaHRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDIgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgbGVmdF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIGxlZnRfY2hpbGQpIChnZXQgYXJyIHJvb3QpID4gMFxuICAgICAgICB0aGVuIGxlZnRfY2hpbGRcbiAgICAgICAgZWxzZSByb290XG4gICAgICBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiByaWdodF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIHJpZ2h0X2NoaWxkKSAoZ2V0IGFyciBsYXJnZXN0KSA+IDBcbiAgICAgICAgdGhlbiByaWdodF9jaGlsZFxuICAgICAgICBlbHNlIGxhcmdlc3RcbiAgICAgIGluXG4gICAgICBpZiBsYXJnZXN0IDw+IHJvb3RcbiAgICAgIHRoZW4gKFxuICAgICAgICBzd2FwIGFyciByb290IGxhcmdlc3Q7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxhcmdlc3QgfmxlZnQgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIEVsZW1lbnRzIGluIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgYXJyYXkgYXJlIGFscmVhZHkgaGVhcHMgb2Ygc2l6ZSAxLiAgV2UgbW92ZVxuICAgICAgICAgdGhyb3VnaCB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgYXJyYXkgZnJvbSBiYWNrIHRvIGZyb250IGV4YW1pbmluZyB0aGUgZWxlbWVudCBhdFxuICAgICAgICAgaGFuZCwgYW5kIHRoZSBsZWZ0IGFuZCByaWdodCBjaGlsZHJlbiwgZml4aW5nIHRoZSBoZWFwIHByb3BlcnR5IGFzIHdlIGdvLiAqKVxuICAgICAgZm9yIGkgPSAobGVmdCArIHJpZ2h0KSAvIDIgZG93bnRvIGxlZnQgZG9cbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgaSB+bGVmdCB+cmlnaHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ7XG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uLiBpXSBpcyBhIG1heC1oZWFwIEhcbiAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLi4gcmlnaHRdIGlzIHNvcnRlZCAoY2FsbCBpdCBTKVxuICAgICAgICAgMy4gIGV2ZXJ5IGVsZW1lbnQgb2YgSCBpcyBsZXNzIHRoYW4gZXZlcnkgZWxlbWVudCBvZiBTICopXG4gICAgICBmb3IgaSA9IHJpZ2h0IGRvd250byBsZWZ0ICsgMSBkb1xuICAgICAgICBzd2FwIGFyciBsZWZ0IGk7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxlZnQgfmxlZnQgfnJpZ2h0OihpIC0gMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc29ydCAqKVxuICBtb2R1bGUgSW50cm9fc29ydCA6IHNpZ1xuICAgIGluY2x1ZGUgU29ydFxuXG4gICAgdmFsIGZpdmVfZWxlbWVudF9zb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgZml2ZV9lbGVtZW50X3NvcnQgYXJyIH5jb21wYXJlIG0xIG0yIG0zIG00IG01ID1cbiAgICAgIGxldCBjb21wYXJlX2FuZF9zd2FwIGkgaiA9XG4gICAgICAgIGlmIGNvbXBhcmUgKGdldCBhcnIgaSkgKGdldCBhcnIgaikgPiAwIHRoZW4gc3dhcCBhcnIgaSBqXG4gICAgICBpblxuICAgICAgKCogT3B0aW1hbCA1LWVsZW1lbnQgc29ydGluZyBuZXR3b3JrOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgMS0tby0tLS0tby0tLS0tby0tLS0tLS0tLS0tLS0tMVxuICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfFxuICAgICAgICAgICAgMi0tby0tLS0tfC0tby0tfC0tLS0tby0tby0tLS0tMlxuICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfCAgICAgfCAgfFxuICAgICAgICAgICAgMy0tLS0tLS0tby0tby0tfC0tby0tfC0tby0tLS0tM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfFxuICAgICAgICAgICAgNC0tLS0tby0tLS0tLS0tby0tby0tfC0tLS0tby0tNFxuICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfFxuICAgICAgICAgICAgNS0tLS0tby0tLS0tLS0tLS0tLS0tby0tLS0tby0tNVxuICAgICAgICAgIHZ9ICopXG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0yO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTMgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTVcbiAgICA7O1xuXG4gICAgKCogY2hvb3NlIHBpdm90cyBmb3IgdGhlIGFycmF5IGJ5IHNvcnRpbmcgNSBlbGVtZW50cyBhbmQgZXhhbWluaW5nIHRoZSBjZW50ZXIgdGhyZWVcbiAgICAgICBlbGVtZW50cy4gIFRoZSBnb2FsIGlzIHRvIGNob29zZSB0d28gcGl2b3RzIHRoYXQgd2lsbCBlaXRoZXI6XG4gICAgICAgLSBicmVhayB0aGUgcmFuZ2UgdXAgaW50byAzIGV2ZW4gcGFydGl0aW9uc1xuICAgICAgICAgb3JcbiAgICAgICAtIGVsaW1pbmF0ZSBhIGNvbW1vbmx5IGFwcGVhcmluZyBlbGVtZW50IGJ5IHNvcnRpbmcgaXQgaW50byB0aGUgY2VudGVyIHBhcnRpdGlvblxuICAgICAgICAgYnkgaXRzZWxmXG4gICAgICAgICBUbyB0aGlzIGVuZCB3ZSBsb29rIGF0IHRoZSBjZW50ZXIgMyBlbGVtZW50cyBvZiB0aGUgNSBhbmQgcmV0dXJuIHBhaXJzIG9mIGVxdWFsXG4gICAgICAgICBlbGVtZW50cyBvciB0aGUgd2lkZXN0IHJhbmdlICopXG4gICAgbGV0IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgc2l4dGggPSAocmlnaHQgLSBsZWZ0KSAvIDYgaW5cbiAgICAgIGxldCBtMSA9IGxlZnQgKyBzaXh0aCBpblxuICAgICAgbGV0IG0yID0gbTEgKyBzaXh0aCBpblxuICAgICAgbGV0IG0zID0gbTIgKyBzaXh0aCBpblxuICAgICAgbGV0IG00ID0gbTMgKyBzaXh0aCBpblxuICAgICAgbGV0IG01ID0gbTQgKyBzaXh0aCBpblxuICAgICAgZml2ZV9lbGVtZW50X3NvcnQgYXJyIH5jb21wYXJlIG0xIG0yIG0zIG00IG01O1xuICAgICAgbGV0IG0yX3ZhbCA9IGdldCBhcnIgbTIgaW5cbiAgICAgIGxldCBtM192YWwgPSBnZXQgYXJyIG0zIGluXG4gICAgICBsZXQgbTRfdmFsID0gZ2V0IGFyciBtNCBpblxuICAgICAgaWYgY29tcGFyZSBtMl92YWwgbTNfdmFsID0gMFxuICAgICAgdGhlbiBtMl92YWwsIG0zX3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBpZiBjb21wYXJlIG0zX3ZhbCBtNF92YWwgPSAwXG4gICAgICB0aGVuIG0zX3ZhbCwgbTRfdmFsLCB0cnVlXG4gICAgICBlbHNlIG0yX3ZhbCwgbTRfdmFsLCBmYWxzZVxuICAgIDs7XG5cbiAgICBsZXQgZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcGl2b3QxLCBwaXZvdDIsIHBpdm90c19lcXVhbCA9IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIGxlZnQgPD0gbCA8IHIgPD0gcmlnaHRcbiAgICAgICAgIDIuICBsIDw9IHAgPD0gclxuICAgICAgICAgMy4gIGwgPD0geCA8IHAgICAgIGltcGxpZXMgYXJyW3hdID49IHBpdm90MVxuICAgICAgICAgYW5kIGFyclt4XSA8PSBwaXZvdDJcbiAgICAgICAgIDQuICBsZWZ0IDw9IHggPCBsICBpbXBsaWVzIGFyclt4XSA8IHBpdm90MVxuICAgICAgICAgNS4gIHIgPCB4IDw9IHJpZ2h0IGltcGxpZXMgYXJyW3hdID4gcGl2b3QyICopXG4gICAgICBsZXQgcmVjIGxvb3AgbCBwIHIgPVxuICAgICAgICBsZXQgcHYgPSBnZXQgYXJyIHAgaW5cbiAgICAgICAgaWYgY29tcGFyZSBwdiBwaXZvdDEgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHN3YXAgYXJyIHAgbDtcbiAgICAgICAgICBjb250IChsICsgMSkgKHAgKyAxKSByKVxuICAgICAgICBlbHNlIGlmIGNvbXBhcmUgcHYgcGl2b3QyID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBsb29wIGludmFyaWFudHM6ICBzYW1lIGFzIHRob3NlIG9mIHRoZSBvdXRlciBsb29wICopXG4gICAgICAgICAgbGV0IHJlYyBzY2FuX2JhY2t3YXJkcyByID1cbiAgICAgICAgICAgIGlmIHIgPiBwICYmIGNvbXBhcmUgKGdldCBhcnIgcikgcGl2b3QyID4gMCB0aGVuIHNjYW5fYmFja3dhcmRzIChyIC0gMSkgZWxzZSByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgciA9IHNjYW5fYmFja3dhcmRzIHIgaW5cbiAgICAgICAgICBzd2FwIGFyciByIHA7XG4gICAgICAgICAgY29udCBsIHAgKHIgLSAxKSlcbiAgICAgICAgZWxzZSBjb250IGwgKHAgKyAxKSByXG4gICAgICBhbmQgY29udCBsIHAgciA9IGlmIHAgPiByIHRoZW4gbCwgciBlbHNlIGxvb3AgbCBwIHIgaW5cbiAgICAgIGxldCBsLCByID0gY29udCBsZWZ0IGxlZnQgcmlnaHQgaW5cbiAgICAgIGwsIHIsIHBpdm90c19lcXVhbFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBsZW4gPSByaWdodCAtIGxlZnQgKyAxIGluXG4gICAgICAoKiBUaGlzIHRha2VzIGNhcmUgb2Ygc29tZSBlZGdlIGNhc2VzLCBzdWNoIGFzIGxlZnQgPiByaWdodCBvciB2ZXJ5IHNob3J0IGFycmF5cyxcbiAgICAgICAgIHNpbmNlIEluc2VydGlvbl9zb3J0LnNvcnQgaGFuZGxlcyB0aGVzZSBjYXNlcyBwcm9wZXJseS4gIFRodXMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgbWFrZSBzdXJlIHRoYXQgbGVmdCBhbmQgcmlnaHQgYXJlIHZhbGlkIGluIHJlY3Vyc2l2ZSBjYWxscy4gKilcbiAgICAgIGlmIGxlbiA8PSAzMlxuICAgICAgdGhlbiBJbnNlcnRpb25fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgaWYgbWF4X2RlcHRoIDwgMFxuICAgICAgdGhlbiBIZWFwX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG1heF9kZXB0aCA9IG1heF9kZXB0aCAtIDEgaW5cbiAgICAgICAgbGV0IGwsIHIsIG1pZGRsZV9zb3J0ZWQgPSBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0OihsIC0gMSk7XG4gICAgICAgIGlmIG5vdCBtaWRkbGVfc29ydGVkIHRoZW4gaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDpsIH5yaWdodDpyO1xuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OihyICsgMSkgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBoZWFwX3NvcnRfc3dpdGNoX2RlcHRoID1cbiAgICAgICAgKCogV2UgYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0IGEgcmVjdXJzaW9uIGRlcHRoIG9mIDMyLiBHTlUgaW50cm9zb3J0IHVzZXMgMmxnKG4pLlxuICAgICAgICAgICBUaGUgZXhwZWN0ZWQgcmVjdXJzaW9uIGRlcHRoIGZvciBwZXJmZWN0IDMtd2F5IHNwbGl0cyBpcyBsb2dfMyhuKS5cblxuICAgICAgICAgICBVc2luZyAzMiBtZWFucyBhIGJhbGFuY2VkIDMtd2F5IHNwbGl0IHdvdWxkIHdvcmsgdXAgdG8gM14zMiBlbGVtZW50cyAocm91Z2hseVxuICAgICAgICAgICAyXjUwIG9yIDEwXjE1KS4gR05VIHJlYWNoZXMgYSBkZXB0aCBvZiAzMiBhdCA2NTUzNiBlbGVtZW50cy5cblxuICAgICAgICAgICBGb3Igc21hbGwgYXJyYXlzLCB0aGlzIG1ha2VzIHVzIGxlc3MgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCwgYnV0IHRoZVxuICAgICAgICAgICAzMipOIGNvc3QgYmVmb3JlIHdlIGRvIGlzIG5vdCB0aGF0IG11Y2guXG5cbiAgICAgICAgICAgRm9yIGxhcmdlIGFycmF5cywgdGhpcyBtZWFucyB3ZSBhcmUgbW9yZSBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0XG4gICAgICAgICAgIHNvbWUgcG9pbnQgaWYgd2UgZ2V0IHNvbWUgYmFkIHNwbGl0cyBvciBpZiB0aGUgYXJyYXkgaXMgaHVnZS4gQnV0IHRoYXQncyBvbmx5IGFcbiAgICAgICAgICAgY29uc3RhbnQgZmFjdG9yIGNvc3QgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiByZWN1cnNpb24uXG5cbiAgICAgICAgICAgQWxsIGluIGFsbCwgdGhpcyBzZWVtcyB0byBiZSBhIHNtYWxsIHRyYWRlb2ZmIGFuZCBhdm9pZHMgcGF5aW5nIGEgY29zdCB0b1xuICAgICAgICAgICBjb21wdXRlIGEgbG9nYXJpdGhtIGF0IHRoZSBzdGFydC4gKilcbiAgICAgICAgMzJcbiAgICAgIGluXG4gICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoOmhlYXBfc29ydF9zd2l0Y2hfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHNvcnQgP3BvcyA/bGVuIGFyciB+Y29tcGFyZSA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBhcnIpXG4gIGluXG4gIFNvcnQuSW50cm9fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdDpwb3MgfnJpZ2h0Oihwb3MgKyBsZW4gLSAxKVxuOztcblxubGV0IHRvX2FycmF5IHQgPSB0XG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgaXNfc29ydGVkIHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+IDAgdGhlbiByZXN1bHQgOj0gZmFsc2U7XG4gICAgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID49IDAgdGhlbiByZXN1bHQgOj0gZmFsc2U7XG4gICAgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBtZXJnZSBhMSBhMiB+Y29tcGFyZSA9XG4gIGxldCBsMSA9IEFycmF5Lmxlbmd0aCBhMSBpblxuICBsZXQgbDIgPSBBcnJheS5sZW5ndGggYTIgaW5cbiAgaWYgbDEgPSAwXG4gIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGwyID0gMFxuICB0aGVuIGNvcHkgYTFcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEyIDApICh1bnNhZmVfZ2V0IGExIChsMSAtIDEpKSA+PSAwXG4gIHRoZW4gYXBwZW5kIGExIGEyXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMSAwKSAodW5zYWZlX2dldCBhMiAobDIgLSAxKSkgPiAwXG4gIHRoZW4gYXBwZW5kIGEyIGExXG4gIGVsc2UgKFxuICAgIGxldCBsZW4gPSBsMSArIGwyIGluXG4gICAgbGV0IG1lcmdlZCA9IGNyZWF0ZSB+bGVuICh1bnNhZmVfZ2V0IGExIDApIGluXG4gICAgbGV0IGExX2luZGV4ID0gcmVmIDAgaW5cbiAgICBsZXQgYTJfaW5kZXggPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgdXNlX2ExID1cbiAgICAgICAgaWYgbDEgPSAhYTFfaW5kZXhcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGlmIGwyID0gIWEyX2luZGV4XG4gICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICBlbHNlIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KSAodW5zYWZlX2dldCBhMiAhYTJfaW5kZXgpIDw9IDBcbiAgICAgIGluXG4gICAgICBpZiB1c2VfYTFcbiAgICAgIHRoZW4gKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCk7XG4gICAgICAgIGExX2luZGV4IDo9ICFhMV9pbmRleCArIDEpXG4gICAgICBlbHNlIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMiAhYTJfaW5kZXgpO1xuICAgICAgICBhMl9pbmRleCA6PSAhYTJfaW5kZXggKyAxKVxuICAgIGRvbmU7XG4gICAgbWVyZ2VkKVxuOztcblxubGV0IGNvcHlfbWF0cml4ID0gbWFwIH5mOmNvcHlcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbjs7XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcCB+ZiB0KSlcbmxldCBjb25jYXRfbWFwaSB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXBpIH5mIHQpKVxuXG5sZXQgcmV2X2lucGxhY2UgdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgd2hpbGUgIWkgPCAhaiBkb1xuICAgIHN3YXAgdCAhaSAhajtcbiAgICBpbmNyIGk7XG4gICAgZGVjciBqXG4gIGRvbmVcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCB0ID0gY29weSB0IGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3JldiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGEgOjogbCAtPlxuICAgIGxldCBsZW4gPSAxICsgTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW4gYSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICAoKiBXZSBzdGFydCBhdCBbbGVuIC0gMl0gYmVjYXVzZSB3ZSBhbHJlYWR5IHB1dCBbYV0gYXQgW3QuKGxlbiAtIDEpXS4gKilcbiAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICB0LihpKSA8LSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHRcbjs7XG5cbigqIFtvZl9saXN0X21hcF0gYW5kIFtvZl9saXN0X3Jldl9tYXBdIGFyZSBiYXNlZCBvbiBmdW5jdGlvbnMgZnJvbSB0aGUgT0NhbWxcbiAgIGRpc3RyaWJ1dGlvbi4gKilcblxubGV0IG9mX2xpc3RfbWFwIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGhkKTtcbiAgICAgICAgZmlsbCAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIDEgdGxcbjs7XG5cbmxldCBvZl9saXN0X21hcGkgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiAwIGhkKSBpblxuICAgIGxldCByZWMgZmlsbCBhIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgaGQpO1xuICAgICAgICBmaWxsIGEgKGkgKyAxKSB0bFxuICAgIGluXG4gICAgZmlsbCBhIDEgdGxcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXAgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXBpIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcGkgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgciA9IHJlZiBbfHxdIGluXG4gIGxldCBrID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCB0IGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgaWYgIWsgPSAwIHRoZW4gciA6PSBjcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGE7XG4gICAgICB1bnNhZmVfc2V0ICFyICFrIGE7XG4gICAgICBpbmNyIGtcbiAgZG9uZTtcbiAgaWYgIWsgPSBsZW5ndGggdCB0aGVuICFyIGVsc2UgaWYgIWsgPiAwIHRoZW4gc3ViIH5wb3M6MCB+bGVuOiFrICFyIGVsc2UgW3x8XVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfaSBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfb3B0IHQgPSBmaWx0ZXJfbWFwIHQgfmY6Rm4uaWRcblxubGV0IHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yID1cbiAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSB0MSB0MiA9XG4gIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMlxuOztcblxubGV0IGl0ZXIyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuaXRlcjJfZXhuXCIgdDEgdDI7XG4gIGl0ZXJpIHQxIH5mOihmdW4gaSB4MSAtPiBmIHgxICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5tYXAyX2V4blwiIHQxIHQyO1xuICBpbml0IChsZW5ndGggdDEpIH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IHQxIGkpICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IGZvbGQyX2V4biB0MSB0MiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9sZDJfZXhuXCIgdDEgdDI7XG4gIGZvbGRpIHQxIH5pbml0IH5mOihmdW4gaSBhYyB4IC0+IGYgYWMgeCAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbmxldCBmaWx0ZXJpIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcblxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSlcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIChsZW5ndGggLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICFpICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmV4aXN0czJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb3JfYWxsMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGVxdWFsIGVxdWFsIHQxIHQyID0gbGVuZ3RoIHQxID0gbGVuZ3RoIHQyICYmIGZvcl9hbGwyX2V4biB0MSB0MiB+ZjplcXVhbFxuXG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmICh1bnNhZmVfZ2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluZGlfaW50ZXJuYWwgdCB+ZiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gaWZfbm90X2ZvdW5kICgpXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlIChub3QgIWZvdW5kKSAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBmICFpIHZhbHVlXG4gICAgICB0aGVuIChcbiAgICAgICAgdmFsdWVfZm91bmQgOj0gdmFsdWU7XG4gICAgICAgIGZvdW5kIDo9IHRydWUpXG4gICAgICBlbHNlIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgIWZvdW5kIHRoZW4gaWZfZm91bmQgfmk6IWkgfnZhbHVlOiF2YWx1ZV9mb3VuZCBlbHNlIGlmX25vdF9mb3VuZCAoKSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gU29tZSAoaSwgdmFsdWUpKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiBOb25lKVxuOztcblxubGV0IGZpbmRpX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gaSwgdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmY6KGZ1biBfaSB4IC0+IGYgeClcbiAgICB+aWZfZm91bmQ6KGZ1biB+aTpfIH52YWx1ZSAtPiB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9leG46IG5vdCBmb3VuZFwiKSkpXG47O1xuXG5sZXQgZmluZCB0IH5mID0gT3B0aW9uLm1hcCAoZmluZGkgdCB+ZjooZnVuIF9pIHggLT4gZiB4KSkgfmY6KGZ1biAoX2ksIHgpIC0+IHgpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgTm9uZSBpblxuICAgIHdoaWxlIE9wdGlvbi5pc19ub25lICF2YWx1ZV9mb3VuZCAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICB2YWx1ZV9mb3VuZCA6PSBmIHZhbHVlO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICAhdmFsdWVfZm91bmQpXG47O1xuXG5sZXQgZmluZF9tYXBfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgTm9uZSBpblxuICAgIHdoaWxlIE9wdGlvbi5pc19ub25lICF2YWx1ZV9mb3VuZCAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICB2YWx1ZV9mb3VuZCA6PSBmICFpIHZhbHVlO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICAhdmFsdWVfZm91bmQpXG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgdCB+ZXF1YWwgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPD0gMVxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlc3VsdCA9IHJlZiBOb25lIGluXG4gICAgbGV0IGkgPSByZWYgMSBpblxuICAgIGxldCBwcmV2ID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjdXIgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGVxdWFsIGN1ciAhcHJldlxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlc3VsdCA6PSBTb21lICghcHJldiwgY3VyKTtcbiAgICAgICAgaSA6PSBuKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHByZXYgOj0gY3VyO1xuICAgICAgICBpbmNyIGkpXG4gICAgZG9uZTtcbiAgICAhcmVzdWx0KVxuOztcblxubGV0IHJlZHVjZSB0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgciA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgICBkb25lO1xuICAgIFNvbWUgIXIpXG47O1xuXG5sZXQgcmVkdWNlX2V4biB0IH5mID1cbiAgbWF0Y2ggcmVkdWNlIHQgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IHBlcm11dGUgPSBBcnJheV9wZXJtdXRlLnBlcm11dGVcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiQXJyYXkucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBhcnJheVwiXG4gIGVsc2UgdC4oUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCB0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB6aXAgdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyIHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKSlcbjs7XG5cbmxldCB6aXBfZXhuIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MlxuICB0aGVuIGZhaWx3aXRoIFwiQXJyYXkuemlwX2V4blwiXG4gIGVsc2UgbWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG47O1xuXG5sZXQgdW56aXAgdCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB4LCB5ID0gdC4oMCkgaW5cbiAgICBsZXQgcmVzMSA9IGNyZWF0ZSB+bGVuOm4geCBpblxuICAgIGxldCByZXMyID0gY3JlYXRlIH5sZW46biB5IGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgeCwgeSA9IHQuKGkpIGluXG4gICAgICByZXMxLihpKSA8LSB4O1xuICAgICAgcmVzMi4oaSkgPC0geVxuICAgIGRvbmU7XG4gICAgcmVzMSwgcmVzMilcbjs7XG5cbmxldCBzb3J0ZWRfY29weSB0IH5jb21wYXJlID1cbiAgbGV0IHQxID0gY29weSB0IGluXG4gIHNvcnQgdDEgfmNvbXBhcmU7XG4gIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IGJvdGggPSBtYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBFaXRoZXIuRmlyc3QgeCBlbHNlIEVpdGhlci5TZWNvbmQgeCkgaW5cbiAgbGV0IHRydWVzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IHggLT4gU29tZSB4XG4gICAgICB8IFNlY29uZCBfIC0+IE5vbmUpXG4gIGluXG4gIGxldCBmYWxzZXMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgXyAtPiBOb25lXG4gICAgICB8IFNlY29uZCB4IC0+IFNvbWUgeClcbiAgaW5cbiAgdHJ1ZXMsIGZhbHNlc1xuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gX2kgeCAtPiBmIHgpXG5sZXQgbGFzdCB0ID0gdC4obGVuZ3RoIHQgLSAxKVxuXG4oKiBDb252ZXJ0IHRvIGEgc2VxdWVuY2UgYnV0IGRvZXMgbm90IGF0dGVtcHQgdG8gcHJvdGVjdCBhZ2FpbnN0IG1vZGlmaWNhdGlvblxuICAgaW4gdGhlIGFycmF5LiAqKVxubGV0IHRvX3NlcXVlbmNlX211dGFibGUgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggdCB0aGVuIFNlcXVlbmNlLlN0ZXAuRG9uZSBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKHQuKGkpLCBpICsgMSkpXG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX3NlcXVlbmNlX211dGFibGUgKGNvcHkgdClcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IHQxIHQyID1cbiAgaWYgaXNfZW1wdHkgdDEgfHwgaXNfZW1wdHkgdDJcbiAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW46KG4xICogbjIpICh0MS4oMCksIHQyLigwKSkgaW5cbiAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgZm9yIGkxID0gMCB0byBuMSAtIDEgZG9cbiAgICAgIGZvciBpMiA9IDAgdG8gbjIgLSAxIGRvXG4gICAgICAgIHQuKCFyKSA8LSB0MS4oaTEpLCB0Mi4oaTIpO1xuICAgICAgICBpbmNyIHJcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgdHJhbnNwb3NlIHR0ID1cbiAgaWYgbGVuZ3RoIHR0ID0gMFxuICB0aGVuIFNvbWUgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgd2lkdGggPSBsZW5ndGggdHQgaW5cbiAgICBsZXQgZGVwdGggPSBsZW5ndGggdHQuKDApIGluXG4gICAgaWYgZXhpc3RzIHR0IH5mOihmdW4gdCAtPiBsZW5ndGggdCA8PiBkZXB0aClcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKGluaXQgZGVwdGggfmY6KGZ1biBkIC0+IGluaXQgd2lkdGggfmY6KGZ1biB3IC0+IHR0Lih3KS4oZCkpKSkpXG47O1xuXG5sZXQgdHJhbnNwb3NlX2V4biB0dCA9XG4gIG1hdGNoIHRyYW5zcG9zZSB0dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnRyYW5zcG9zZV9leG5cIlxuICB8IFNvbWUgdHQnIC0+IHR0J1xuOztcblxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIFt8fF1cbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIHQuKDApKVxuICAgIDs7XG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGl0ZXIgdCB+ZjppbnZhcmlhbnRfYVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgU29ydCA9IFNvcnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdCBhbGwgdmFsdWVzIG9mIHR5cGUgW3RdIGRvIG5vdCBoYXZlIHRoZSB0YWdcbiAgIFtkb3VibGVfYXJyYXlfdGFnXS4gIFNvbWUgZnVuY3Rpb25zIGJlbG93IGFzc3VtZSB0aGlzIGluIG9yZGVyIHRvIGF2b2lkIHRlc3RpbmcgdGhlXG4gICB0YWcsIGFuZCB3aWxsIHNlZ2ZhdWx0IGlmIHRoaXMgcHJvcGVydHkgZG9lc24ndCBob2xkLiAqKVxudHlwZSB0ID0gQ2FtbC5PYmoudCBhcnJheVxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKENhbWwuT2JqLnRhZyAoQ2FtbC5PYmoucmVwciB0KSA8PiBDYW1sLk9iai5kb3VibGVfYXJyYXlfdGFnKVxubGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCAoKiB3b3VsZCBjaGVjayBmb3IgZmxvYXQgYXJyYXlzIGluIDMyIGJpdCwgYnV0IHdoYXRldmVyICopXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIFNleHAuQXRvbVxuICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIFwiPE9ial9hcnJheS50IG9mIGxlbmd0aCBcIjsgSW50LnRvX3N0cmluZyAobGVuZ3RoIHQpOyBcIj5cIiBdKVxuOztcblxubGV0IHplcm9fb2JqID0gQ2FtbC5PYmoucmVwciAoMCA6IGludClcblxuKCogV2UgY2FsbCBbQXJyYXkuY3JlYXRlXSB3aXRoIGEgdmFsdWUgdGhhdCBpcyBub3QgYSBmbG9hdCBzbyB0aGF0IHRoZSBhcnJheSBkb2Vzbid0IGdldFxuICAgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxubGV0IGNyZWF0ZV96ZXJvIH5sZW4gPSBBcnJheS5jcmVhdGUgfmxlbiB6ZXJvX29ialxubGV0IGVtcHR5ID0gW3x8XVxuXG50eXBlIG5vdF9hX2Zsb2F0ID1cbiAgfCBOb3RfYV9mbG9hdF8wXG4gIHwgTm90X2FfZmxvYXRfMSBvZiBpbnRcblxubGV0IF9ub3RfYV9mbG9hdF8wID0gTm90X2FfZmxvYXRfMFxubGV0IF9ub3RfYV9mbG9hdF8xID0gTm90X2FfZmxvYXRfMSA0MlxuXG5sZXQgZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAgSXQgaXMgTk9UIG9rIHRvIHVzZSBbaW50IGFycmF5XSBzaW5jZSAoaWZcbiAgICAgdGhpcyBmdW5jdGlvbiBpcyBpbmxpbmVkIGFuZCB0aGUgYXJyYXkgY29udGFpbnMgaW4taGVhcCBib3hlZCB2YWx1ZXMpIHdyb25nIHJlZ2lzdGVyXG4gICAgIHR5cGluZyBtYXkgcmVzdWx0LCBsZWFkaW5nIHRvIGEgZmFpbHVyZSB0byByZWdpc3RlciBuZWNlc3NhcnkgR0Mgcm9vdHMuICopXG4gIENhbWwuT2JqLnJlcHIgKChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpLihpKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxuICBDYW1sLk9iai5yZXByXG4gICAgKEFycmF5LnVuc2FmZV9nZXQgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkgaSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIFNhbWUgY29tbWVudCBhcyBbdW5zYWZlX2dldF0uIFN5cy5vcGFxdWVfaWRlbnRpdHkgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb21cbiAgICAgcG90ZW50aWFsbHkgd3JvbmdseSBndWVzc2luZyB0aGUgdHlwZSBvZiB0aGUgYXJyYXkgYmFzZWQgb24gdGhlIHR5cGUgb2YgZWxlbWVudCwgdGhhdFxuICAgICBpcyBwcmV2ZW50IHRoZSBpbXBsaWNhdGlvbjogKE9iai50YWcgb2JqID0gT2JqLmRvdWJsZV90YWcpID0+IChPYmoudGFnIHQgPVxuICAgICBPYmouZG91YmxlX2FycmF5X3RhZykgd2hpY2ggZmxhbWJkYSBoYXMgdHJpZWQgaW4gdGhlIHBhc3QgKGF0IGxlYXN0IHRoYXQncyBhc3N1bWluZ1xuICAgICB0aGUgY29tcGlsZXIgcmVzcGVjdHMgU3lzLm9wYXF1ZV9pZGVudGl0eSwgd2hpY2ggaXMgbm90IGFsd2F5cyB0aGUgY2FzZSkuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KVxuICAgIGlcbiAgICAoQ2FtbC5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIHNhbWUgYXMgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IGJ1dCBzYWZlICopXG4gIChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpLihpKVxuICA8LSAoQ2FtbC5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50ID1cbiAgKCogVGhpcyBza2lwcyBbY2FtbF9tb2RpZnldLCB3aGljaCBpcyBPSyBpZiBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIGludGVnZXJzLiAqKVxuICBBcnJheS51bnNhZmVfc2V0IChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogaW50IGFycmF5KSBpIChTeXMub3BhcXVlX2lkZW50aXR5IGludClcbjs7XG5cbigqIEZvciBbc2V0XSBhbmQgW3Vuc2FmZV9zZXRdLCBpZiBhIHBvaW50ZXIgaXMgaW52b2x2ZWQsIHdlIGZpcnN0IGRvIGEgcGh5c2ljYWwtZXF1YWxpdHlcbiAgIHRlc3QgdG8gc2VlIGlmIHRoZSBwb2ludGVyIGlzIGNoYW5naW5nLiAgSWYgbm90LCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoZSBbc2V0XSwgd2hpY2hcbiAgIHNhdmVzIGEgY2FsbCB0byBbY2FtbF9tb2RpZnldLiAgV2UgdGhpbmsgdGhpcyBwaHlzaWNhbC1lcXVhbGl0eSB0ZXN0IGlzIHdvcnRoIGl0XG4gICBiZWNhdXNlIGl0IGlzIHZlcnkgY2hlYXAgKGJvdGggdmFsdWVzIGFyZSBhbHJlYWR5IGF2YWlsYWJsZSBmcm9tIHRoZSBbaXNfaW50XSB0ZXN0KVxuICAgYW5kIGJlY2F1c2UgW2NhbWxfbW9kaWZ5XSBpcyBleHBlbnNpdmUuICopXG5cbmxldCBzZXQgdCBpIG9iaiA9XG4gICgqIFdlIHVzZSBbZ2V0XSBmaXJzdCBidXQgdGhlbiB3ZSB1c2UgW0FycmF5LnVuc2FmZV9zZXRdIHNpbmNlIHdlIGtub3cgdGhhdCBbaV0gaXNcbiAgICAgdmFsaWQuICopXG4gIGxldCBvbGRfb2JqID0gZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXQgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmogJiYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGEgPSBnZXQgdCBpIGluXG4gIGxldCBiID0gZ2V0IHQgaiBpblxuICB1bnNhZmVfc2V0IHQgaSBiO1xuICB1bnNhZmVfc2V0IHQgaiBhXG47O1xuXG5sZXQgY3JlYXRlIH5sZW4geCA9XG4gICgqIElmIHdlIGNhbiwgdXNlIFtBcnJheS5jcmVhdGVdIGRpcmVjdGx5LiAqKVxuICBpZiBDYW1sLk9iai50YWcgeCA8PiBDYW1sLk9iai5kb3VibGVfdGFnXG4gIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4geFxuICBlbHNlIChcbiAgICAoKiBPdGhlcndpc2UgdXNlIFtjcmVhdGVfemVyb10gYW5kIHNldCB0aGUgY29udGVudHMgKilcbiAgICBsZXQgdCA9IGNyZWF0ZV96ZXJvIH5sZW4gaW5cbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHhcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIG9iaiA9IGNyZWF0ZSB+bGVuOjEgb2JqXG5cbigqIFByZS1jb25kaXRpb246IHQuKGkpIGlzIGFuIGludGVnZXIuICopXG5sZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBvYmogPVxuICBpZiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2VcbiAgICAoKiBbdC4oaSldIGlzIGFuIGludGVnZXIgYW5kIFtvYmpdIGlzIG5vdCwgc28gd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmVcbiAgICAgICBlcXVhbC4gKilcbiAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50IHQgaSBpbnQgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50XG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciBpbnQpXG47O1xuXG5sZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgdCBpID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBub3QgKENhbWwuT2JqLmlzX2ludCBvbGRfb2JqKSB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgMClcbjs7XG5cbigqKiBbdW5zYWZlX2JsaXRdIGlzIGxpa2UgW0FycmF5LmJsaXRdLCBleGNlcHQgaXQgdXNlcyBvdXIgb3duIGZvci1sb29wIHRvIGF2b2lkXG4gICAgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZS4gIEl0cyBwZXJmb3JtYW5jZSBpcyBzdGlsbCBub3QgY29tcGFyYWJsZSB0byBhIG1lbWNweS4gKilcbmxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICgqIFdoZW4gW3BoeXNfZXF1YWwgc3JjIGRzdF0sIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciBbZHN0X3BvcyA8IHNyY19wb3NdIGFuZCBoYXZlIHRoZVxuICAgICBmb3IgbG9vcCBnbyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3Qgb3ZlcndyaXRlIGRhdGEgdGhhdCB3ZSBzdGlsbCBuZWVkXG4gICAgIHRvIHJlYWQuICBXaGVuIFtub3QgKHBoeXNfZXF1YWwgc3JjIGRzdCldLCBkb2luZyB0aGlzIGlzIGhhcm1sZXNzLiAgRnJvbSBhXG4gICAgIG1lbW9yeS1wZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciBvbmUgbG9vcHMgdXAgb3IgZG93bi5cbiAgICAgQ29uc3RhbnQtc3RyaWRlIGFjY2VzcywgZm9yd2FyZCBvciBiYWNrd2FyZCwgc2hvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIChhdCBsZWFzdCBvblxuICAgICBhbiBpbnRlbCBpNykuICBTbywgd2UgZG9uJ3QgZG8gYSBjaGVjayBmb3IgW3BoeXNfZXF1YWwgc3JjIGRzdF0gYW5kIGFsd2F5cyBsb29wIHVwIGluXG4gICAgIHRoYXQgY2FzZS4gKilcbiAgaWYgZHN0X3BvcyA8IHNyY19wb3NcbiAgdGhlblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG47O1xuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVfemVyb1xuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGVfemVybyB+bGVuOihsZW5ndGggc3JjKSBpblxuICBibGl0byB+c3JjIH5kc3QgKCk7XG4gIGRzdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBXQVJOSU5HOlxuICAgV2UgdXNlIG5vbi1tZW1vcnktc2FmZSB0aGluZ3MgdGhyb3VnaG91dCB0aGUgW1RydXN0ZWRdIG1vZHVsZS5cbiAgIE1vc3Qgb2YgaXQgaXMgb25seSBzYWZlIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgc2lnbmF0dXJlIChlLmcuIGV4cG9zaW5nXG4gICBbdmFsIGNvcHkgOiAnYSB0IC0+ICdiIHRdIHdvdWxkIGJlIGEgYmlnIG1pc3Rha2UpLiAqKVxubW9kdWxlIFRydXN0ZWQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfb2JqX2FycmF5IDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzd2FwIDogXyB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX2dldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCB1bnNhZmVfc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIEJsaXQuYmxpdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgOiBfIHQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBPYmpfYXJyYXkudFxuXG4gIGxldCBlbXB0eSA9IE9ial9hcnJheS5lbXB0eVxuICBsZXQgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlX29ial9hcnJheSB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZSB+bGVuIHggPSBPYmpfYXJyYXkuY3JlYXRlIH5sZW4gKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHNpbmdsZXRvbiB4ID0gT2JqX2FycmF5LnNpbmdsZXRvbiAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgc3dhcCB0IGkgaiA9IE9ial9hcnJheS5zd2FwIHQgaSBqXG4gIGxldCBnZXQgYXJyIGkgPSBDYW1sLk9iai5vYmogKE9ial9hcnJheS5nZXQgYXJyIGkpXG4gIGxldCBzZXQgYXJyIGkgeCA9IE9ial9hcnJheS5zZXQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9nZXQgYXJyIGkgPSBDYW1sLk9iai5vYmogKE9ial9hcnJheS51bnNhZmVfZ2V0IGFyciBpKVxuICBsZXQgdW5zYWZlX3NldCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9zZXRfaW50IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnQgYXJyIGkgeFxuXG4gIGxldCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHhcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gT2JqX2FycmF5Lmxlbmd0aFxuICBsZXQgdW5zYWZlX2JsaXQgPSBPYmpfYXJyYXkudW5zYWZlX2JsaXRcbiAgbGV0IGNvcHkgPSBPYmpfYXJyYXkuY29weVxuXG4gIGxldCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSAoQ2FtbC5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID0gT2JqX2FycmF5LnNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgPSBPYmpfYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXJcbmVuZFxuXG5pbmNsdWRlIFRydXN0ZWRcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChDYW1sLk9iai50YWcgKENhbWwuT2JqLnJlcHIgdCkgPD4gQ2FtbC5PYmouZG91YmxlX2FycmF5X3RhZylcblxubGV0IGluaXQgbCB+ZiA9XG4gIGlmIGwgPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJVbmlmb3JtX2FycmF5LmluaXRcIlxuICBlbHNlIChcbiAgICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46bCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgcmVzKVxuOztcblxubGV0IG9mX2FycmF5IGFyciA9IGluaXQgfmY6KEFycmF5LnVuc2FmZV9nZXQgYXJyKSAoQXJyYXkubGVuZ3RoIGFycilcbmxldCBtYXAgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKVxubGV0IG1hcGkgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgaSAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpXG5cbmxldCBpdGVyIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBmb2xkaSBhIH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IH5mOihnZXQgdCkgKGxlbmd0aCB0KVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgeCAtPiBzZXQgcmVzIGkgeCk7XG4gIHJlc1xuOztcblxuKCogSXQgaXMgbm90IHNhZmUgZm9yIFt0b19hcnJheV0gdG8gYmUgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBjb2RlIHRoYXRcbiAgIHJlbGllcyBvbiBbZmxvYXQgYXJyYXldcyBiZWluZyB1bmJveGVkLCBmb3IgZXhhbXBsZSBpbiBbYmluX3dyaXRlX2FycmF5XS4gKilcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiBmYWxzZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgfmYgKGkgLSAxKVxuICBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID0gaWYgaSA8IDAgdGhlbiB0cnVlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpICYmIGxvb3AgdCB+ZiAoaSAtIDEpIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0MSBpblxuICBpZiBsZW5ndGggdDIgPD4gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyX2V4blwiO1xuICBpbml0IGxlbiB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChncmFtbWFyIDogZWx0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGVsdCB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmluY2x1ZGVcbiAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgKEFycmF5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIGVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiAoZ2V0IHQgMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgcHB4X2NvbXBhcmUgW2NvbXBhcmVfYXJyYXldIGJ1dCB1c2VzIG91ciBbdW5zYWZlX2dldF0gYW5kIFtsZW5ndGhdLiAqKVxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgYSBiID1cbiAgaWYgcGh5c19lcXVhbCBhIGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgIGlmIHJldCA8PiAwXG4gICAgdGhlbiByZXRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IGxlbl9hXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbCA9IHVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgYW5kIHIgPSB1bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCBsIHIgaW5cbiAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIDApKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGNlaWwgPSBDYW1sLmNlaWxcbmxldCBmbG9vciA9IENhbWwuZmxvb3JcbmxldCBtb2RfZmxvYXQgPSBDYW1sLm1vZF9mbG9hdFxubGV0IG1vZGYgPSBDYW1sLm1vZGZcbmxldCBmbG9hdF9vZl9zdHJpbmcgPSBDYW1sLmZsb2F0X29mX3N0cmluZ1xubGV0IG5hbiA9IENhbWwubmFuXG5sZXQgaW5maW5pdHkgPSBDYW1sLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gQ2FtbC5uZWdfaW5maW5pdHlcbmxldCBtYXhfZmluaXRlX3ZhbHVlID0gQ2FtbC5tYXhfZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gQ2FtbC5lcHNpbG9uX2Zsb2F0XG5sZXQgY2xhc3NpZnlfZmxvYXQgPSBDYW1sLmNsYXNzaWZ5X2Zsb2F0XG5sZXQgYWJzX2Zsb2F0ID0gQ2FtbC5hYnNfZmxvYXRcbmxldCBpc19pbnRlZ2VyID0gQ2FtbC5GbG9hdC5pc19pbnRlZ2VyXG5sZXQgKCAqKiApID0gQ2FtbC4oICoqIClcblxubGV0ICggJS4gKSBhIGIgPVxuICAoKiBSYWlzZSBpbiBjYXNlIG9mIGEgbmVnYXRpdmUgbW9kdWx1cywgYXMgZG9lcyBJbnQuKCAlICkuICopXG4gIGlmIGIgPCAwLlxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCIlZiAlJSAlZiBpbiBmbG9hdDAubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCIgYSBiICgpO1xuICBsZXQgbSA9IENhbWwubW9kX2Zsb2F0IGEgYiBpblxuICAoKiBQcm9kdWNlIGEgbm9uLW5lZ2F0aXZlIHJlc3VsdCBpbiBhbmFsb2d5IHdpdGggSW50LiggJSApLiAqKVxuICBpZiBtIDwgMC4gdGhlbiBtICsuIGIgZWxzZSBtXG47O1xuXG4oKiBUaGUgYml0cyBvZiBJTlJJQSdzIFtQZXJ2YXNpdmVzXSB0aGF0IHdlIGp1c3Qgd2FudCB0byBleHBvc2UgaW4gW0Zsb2F0XS4gTW9zdCBhcmVcbiAgIGFscmVhZHkgZGVwcmVjYXRlZCBpbiBbUGVydmFzaXZlc10sIGFuZCBldmVudHVhbGx5IGFsbCBvZiB0aGVtIHNob3VsZCBiZS4gKilcbmluY2x1ZGUgKFxuICBDYW1sIDpcbiAgc2lnXG4gICAgZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5cbiAgICBleHRlcm5hbCBsZGV4cFxuICAgICAgOiAgKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICAgIC0+IChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCJcbiAgICBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgZW5kKVxuXG4oKiBXZSBuZWVkIHRoaXMgaW5kaXJlY3Rpb24gYmVjYXVzZSB0aGVzZSBhcmUgZXhwb3NlZCBhcyBcInZhbFwiIGluc3RlYWQgb2YgXCJleHRlcm5hbFwiICopXG5sZXQgZnJleHAgPSBmcmV4cFxubGV0IGxkZXhwID0gbGRleHBcbmxldCBpc19uYW4geCA9ICh4IDogZmxvYXQpIDw+IHhcblxuKCogQW4gb3JkZXItcHJlc2VydmluZyBiaWplY3Rpb24gYmV0d2VlbiBhbGwgZmxvYXRzIGV4Y2VwdCBmb3IgTmFOcywgYW5kIDk5Ljk1JSBvZlxuICAgaW50NjRzLlxuXG4gICBOb3RlIHdlIGRvbid0IGRpc3Rpbmd1aXNoIDAuIGFuZCAtMC4gYXMgc2VwYXJhdGUgdmFsdWVzIGhlcmUsIHRoZXkgYm90aCBtYXAgdG8gMEwsIHdoaWNoXG4gICBtYXBzIGJhY2sgdG8gMC5cblxuICAgVGhpcyBzaG91bGQgd29yayBib3RoIG9uIGxpdHRsZS1lbmRpYW4gYW5kIGhpZ2gtZW5kaWFuIENQVXMuICBXaWtpcGVkaWEgc2F5czogXCJvblxuICAgbW9kZXJuIHN0YW5kYXJkIGNvbXB1dGVycyAoaS5lLiwgaW1wbGVtZW50aW5nIElFRUUgNzU0KSwgb25lIG1heSBpbiBwcmFjdGljZSBzYWZlbHlcbiAgIGFzc3VtZSB0aGF0IHRoZSBlbmRpYW5uZXNzIGlzIHRoZSBzYW1lIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFzIGZvciBpbnRlZ2Vyc1wiXG4gICAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbmRpYW5uZXNzI0Zsb2F0aW5nLXBvaW50X2FuZF9lbmRpYW5uZXNzKS5cbiopXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCA9XG4gIGlmIGlzX25hbiB0XG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHQgPSAwLlxuICB0aGVuICgqIGFsc28gaW5jbHVkZXMgLTAuICopXG4gICAgU29tZSAwTFxuICBlbHNlIGlmIHQgPiAwLlxuICB0aGVuIFNvbWUgKENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0KVxuICBlbHNlIFNvbWUgKENhbWwuSW50NjQubmVnIChDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgKC0udCkpKVxuOztcblxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyX2V4biB4ID0gT3B0aW9uLnZhbHVlX2V4biAodG9faW50NjRfcHJlc2VydmVfb3JkZXIgeClcblxubGV0IG9mX2ludDY0X3ByZXNlcnZlX29yZGVyIHggPVxuICBpZiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIHggMExcbiAgdGhlbiBDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgeFxuICBlbHNlIH4tLihDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgKENhbWwuSW50NjQubmVnIHgpKVxuOztcblxubGV0IG9uZV91bHAgZGlyIHQgPVxuICBtYXRjaCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0IHdpdGhcbiAgfCBOb25lIC0+IENhbWwubmFuXG4gIHwgU29tZSB4IC0+XG4gICAgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXJcbiAgICAgIChDYW1sLkludDY0LmFkZFxuICAgICAgICAgeFxuICAgICAgICAgKG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgfCBgVXAgLT4gMUxcbiAgICAgICAgICB8IGBEb3duIC0+IC0xTCkpXG47O1xuXG4oKiBbdXBwZXJfYm91bmRfZm9yX2ludF0gYW5kIFtsb3dlcl9ib3VuZF9mb3JfaW50XSBhcmUgZm9yIGNhbGN1bGF0aW5nIHRoZSBtYXgvbWluIGZsb2F0XG4gICB0aGF0IGZpdHMgaW4gYSBnaXZlbi1zaXplIGludGVnZXIgd2hlbiByb3VuZGVkIHRvd2FyZHMgMCAodXNpbmcgW2ludF9vZl9mbG9hdF0pLlxuXG4gICBtYXhfaW50L21pbl9pbnQgZGVwZW5kIG9uIFtudW1fYml0c10sIGUuZy4gKy8tIDJeMzAsICsvLSAyXjYyIGlmIDMxLWJpdCwgNjMtYml0XG4gICAocmVzcGVjdGl2ZWx5KSB3aGlsZSBmbG9hdCBpcyBJRUVFIHN0YW5kYXJkIGZvciBkb3VibGUgKDUyIHNpZ25pZmljYW50IGJpdHMpLlxuXG4gICBJbiBhbGwgY2FzZXMsIHdlIHdhbnQgdG8gZ3VhcmFudGVlIHRoYXRcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IDw9IHggPD0gdXBwZXJfYm91bmRfZm9yX2ludF1cbiAgIGlmZiBbaW50X29mX2Zsb2F0IHhdIGZpdHMgaW4gYW4gaW50IHdpdGggW251bV9iaXRzXSBiaXRzLlxuXG4gICBbMiAqKiAobnVtX2JpdHMgLSAxKV0gaXMgdGhlIGZpcnN0IGZsb2F0IGdyZWF0ZXIgdGhhdCBtYXhfaW50LCB3ZSB1c2UgdGhlIHByZWNlZGluZ1xuICAgZmxvYXQgYXMgdXBwZXIgYm91bmQuXG5cbiAgIFstICgyICoqIChudW1fYml0cyAtIDEpKV0gaXMgZXF1YWwgdG8gbWluX2ludC5cbiAgIEZvciBsb3dlciBib3VuZCB3ZSBsb29rIGZvciB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0gc28gdGhhdFxuICAgW2ZdIHJvdW5kcyB0b3dhcmQgemVybyB0byBbbWluX2ludF1cblxuICAgU28gaW4gcGFydGljdWxhciB3ZSB3aWxsIGhhdmU6XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCB4IDw9IC0gKDIgKiogKDEteCkpXVxuICAgW3VwcGVyX2JvdW5kX2Zvcl9pbnQgeCAgPCAgICAyICoqICgxLXgpIF1cbiopXG5sZXQgdXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBDYW1sLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBvbmVfdWxwIGBEb3duICgyLiAqKiBleHApXG47O1xuXG5sZXQgaXNfeF9taW51c19vbmVfZXhhY3QgeCA9XG4gICgqIFt4ID0geCAtLiAxLl0gZG9lcyBub3Qgd29yayB3aXRoIHg4NyBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGJhY2tlbmQgKHdoaWNoIGlzIHVzZWRcbiAgICAgb24gMzItYml0IG9jYW1sKSBiZWNhdXNlIG9mIDgwLWJpdCByZWdpc3RlciBwcmVjaXNpb24gb2YgaW50ZXJtZWRpYXRlIGNvbXB1dGF0aW9ucy5cblxuICAgICBBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgY29tcHV0aW5nIHRoaXM6IFt4IC0uIG9uZV91bHAgYERvd24geCA8PSAxLl0gaXMgYWxzbyBwcm9uZSB0b1xuICAgICB0aGUgc2FtZSBwcmVjaXNpb24gaXNzdWVzOiB5b3UgbmVlZCB0byBtYWtlIHN1cmUgW3hdIGlzIDY0LWJpdC5cbiAgKilcbiAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIG5vdCAoQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHggPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgKHggLS4gMS4pKVxuOztcblxubGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gQ2FtbC5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgbGV0IG1pbl9pbnRfYXNfZmxvYXQgPSB+LS4oMi4gKiogZXhwKSBpblxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG51bV9iaXRzIC0gMSA8IDUzICgqIDUzID0gI2JpdHMgaW4gdGhlIGZsb2F0J3MgbWFudGlzc2Egd2l0aCBzaWduIGluY2x1ZGVkICopXG4gIHRoZW4gKFxuICAgICgqIFRoZSBzbWFsbGVzdCBmbG9hdCB0aGF0IHJvdW5kcyB0b3dhcmRzIHplcm8gdG8gW21pbl9pbnRdIGlzXG4gICAgICAgW21pbl9pbnQgLSAxICsgZXBzaWxvbl0gKilcbiAgICBhc3NlcnQgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpO1xuICAgIG9uZV91bHAgYFVwIChtaW5faW50X2FzX2Zsb2F0IC0uIDEuKSlcbiAgZWxzZSAoXG4gICAgKCogW21pbl9pbnRfYXNfZmxvYXRdIGlzIGFscmVhZHkgdGhlIHNtYWxsZXN0IGZsb2F0IFtmXSBzYXRpc2Z5aW5nIFtmID4gbWluX2ludCAtIDFdLiAqKVxuICAgIGFzc2VydCAobm90IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KSk7XG4gICAgbWluX2ludF9hc19mbG9hdClcbjs7XG5cbigqIEZsb2F0IGNsYW1waW5nIGlzIHN0cnVjdHVyZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiBjbGFtcGluZyBmb3Igb3RoZXIgdHlwZXMsIHNvXG4gICB0aGF0IHdlIGdldCB0aGUgYmVoYXZpb3Igb2YgW2NsYW1wX3VuY2hlY2tlZCBuYW4gfm1pbiB+bWF4ID0gbmFuXSAoZm9yIGFueSBbbWluXSBhbmRcbiAgIFttYXhdKSBmb3IgZnJlZS5cbiopXG5sZXQgY2xhbXBfdW5jaGVja2VkICh0IDogZmxvYXQpIH5taW4gfm1heCA9XG4gIGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiBtYXggPCB0IHRoZW4gbWF4IGVsc2UgdFxuOztcblxubGV0IGJveCA9XG4gICgqIFByZXZlbnQgcG90ZW50aWFsIGNvbnN0YW50IGZvbGRpbmcgb2YgWysuIDAuXSBpbiB0aGUgbmVhciBvY2FtbG9wdCBmdXR1cmUuICopXG4gIGxldCB4ID0gU3lzMC5vcGFxdWVfaWRlbnRpdHkgMC4gaW5cbiAgZnVuIGYgLT4gZiArLiB4XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbmluY2x1ZGUgQ2hhcjBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfY2hhciA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9jaGFyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9jaGFyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gY2hhcl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5tYWtlIDEgdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBzIHdpdGhcbiAgICB8IDEgLT4gcy5bMF1cbiAgICB8IF8gLT4gZmFpbHdpdGhmIFwiQ2hhci5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5DaGFyXCJcbiAgZW5kKVxuXG5sZXQgcHAgZm10IGMgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVDXCIgY1xuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGFsbCA9IEFycmF5LmluaXQgMjU2IH5mOnVuc2FmZV9vZl9pbnQgfD4gQXJyYXkudG9fbGlzdFxuXG5sZXQgaXNfbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfcHJpbnQgPSBmdW5jdGlvblxuICB8ICcgJyAuLiAnficgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnXFx0JyB8ICdcXG4nIHwgJ1xcMDExJyAoKiB2ZXJ0aWNhbCB0YWIgKikgfCAnXFwwMTInICgqIGZvcm0gZmVlZCAqKSB8ICdcXHInIHwgJyAnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19hbHBoYSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbigqIFdyaXRpbmcgdGhlc2Ugb3V0LCBpbnN0ZWFkIG9mIGNhbGxpbmcgW2lzX2FscGhhXSBhbmQgW2lzX2RpZ2l0XSwgcmVkdWNlc1xuICAgcnVudGltZSBieSBhcHByb3guIDMwJSAqKVxubGV0IGlzX2FscGhhbnVtID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfZGlnaXRfdW5zYWZlIHQgPSB0b19pbnQgdCAtIHRvX2ludCAnMCdcblxubGV0IGdldF9kaWdpdF9leG4gdCA9XG4gIGlmIGlzX2RpZ2l0IHRcbiAgdGhlbiBnZXRfZGlnaXRfdW5zYWZlIHRcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLmdldF9kaWdpdF9leG4gJUM6IG5vdCBhIGRpZ2l0XCIgdCAoKVxuOztcblxubGV0IGdldF9kaWdpdCB0ID0gaWYgaXNfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9kaWdpdF91bnNhZmUgdCkgZWxzZSBOb25lXG5cbmxldCBpc19oZXhfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF9sb3dlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfdXBwZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdF9leG4gPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnMCdcbiAgfCAnYScgLi4gJ2YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ2EnICsgMTBcbiAgfCAnQScgLi4gJ0YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ0EnICsgMTBcbiAgfCB0IC0+XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJDaGFyLmdldF9oZXhfZGlnaXRfZXhuOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiXG4gICAgICAgICBbIFwiY2hhclwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IGdldF9oZXhfZGlnaXQgdCA9IGlmIGlzX2hleF9kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2hleF9kaWdpdF9leG4gdCkgZWxzZSBOb25lXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgYzEgYzIgPSBjb21wYXJlIChsb3dlcmNhc2UgYzEpIChsb3dlcmNhc2UgYzIpXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfY2hhciBzdGF0ZSAobG93ZXJjYXNlIHQpXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0MC5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbigqIENvbnN0cnVjdCBhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAyNTYsIG1hcHBpbmcgZXZlcnkgaW5wdXQgY2hhcmFjdGVyIGNvZGUgdG9cbiAgIGl0cyBjb3JyZXNwb25kaW5nIG91dHB1dCBjaGFyYWN0ZXIuXG5cbiAgIEJlbmNobWFya3MgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuIHRoZSBsYW1iZGEgKGluY2x1ZGluZyBjb3N0IG9mXG4gICB0aGlzIGZ1bmN0aW9uKSwgZXZlbiBpZiB0YXJnZXQvcmVwbGFjZW1lbnQgYXJlIGp1c3QgMiBjaGFyYWN0ZXJzIGVhY2guXG5cbiAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFuc2xhdGlvbiBtYXAgaXMgZXF1aXZhbGVudCB0byBqdXN0IHRoZSBpZGVudGl0eS4gKilcbmxldCB0cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgbGV0IHRyX21hcCA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGkgKENoYXIub2ZfaW50X2V4biBpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIC0gMSBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCAoU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgaSlcbiAgZG9uZTtcbiAgbGV0IGxhc3RfcmVwbGFjZW1lbnQgPSBTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCAtIDEpIGluXG4gIGZvclxuICAgIGkgPSBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgdG8gU3RyaW5nLmxlbmd0aCB0YXJnZXQgLSAxXG4gIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IGxhc3RfcmVwbGFjZW1lbnRcbiAgZG9uZTtcbiAgbGV0IHJlYyBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIGkgPVxuICAgIGlmIGkgPSAyNTZcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIGkpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgKGkgKyAxKVxuICBpblxuICAoKiBxdWljayBjaGVjayBvbiB0aGUgZmlyc3QgdGFyZ2V0IGNoYXJhY3RlciB3aGljaCB3aWxsIDk5JSBiZSB0cnVlICopXG4gIGxldCBmaXJzdF90YXJnZXQgPSB0YXJnZXQuWzBdIGluXG4gIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGZpcnN0X3RhcmdldCkpIGZpcnN0X3RhcmdldFxuICB8fCBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIDBcbiAgdGhlbiBTb21lIChCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0cl9tYXApXG4gIGVsc2UgTm9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYVxuXG5sZXQgc3RhZ2UgPSBGbi5pZFxubGV0IHVuc3RhZ2UgPSBGbi5pZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbmluY2x1ZGUgU3RyaW5nMFxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG4oKiBUaGlzIGFsaWFzIGlzIG5lY2Vzc2FyeSBkZXNwaXRlIFtTdHJpbmcwXSBkZWZpbmluZyBbQnl0ZXMgPSBCeXRlczBdLCBpbiBvcmRlciB0b1xuICAgY29udmluY2Ugb2NhbWxkZXAgdGhhdCB0aGlzIGZpbGUgZG9lc24ndCBkZXBlbmQgb24gYnl0ZXMubWwuICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3N0cmluZ1xuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfc3RyaW5nIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxudHlwZSBlbHQgPSBjaGFyXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbigqIFRoaXMgaXMgY29waWVkL2FkYXB0ZWQgZnJvbSAnYmxpdC5tbCcuXG4gICBbc3ViXSwgW3N1Ym9dIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtCbGl0Lk1ha2UoQnl0ZXMpXSBwbHVzIHVuc2FmZSBjYXN0cyB0by9mcm9tXG4gICBzdHJpbmcgYnV0IHdlcmUgaW5saW5lZCBoZXJlIHRvIGF2b2lkIHVzaW5nIFtCeXRlcy51bnNhZmVfb2Zfc3RyaW5nXSBhcyBtdWNoIGFzIHBvc3NpYmxlLlxuKilcbmxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA9IDAgJiYgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmNcbiAgdGhlbiBzcmNcbiAgZWxzZSAoXG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHNyYyk7XG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gXCJcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KSlcbjs7XG5cbmxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICBzdWJcbiAgICBzcmNcbiAgICB+cG9zXG4gICAgfmxlbjpcbiAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICB8IE5vbmUgLT4gbGVuZ3RoIHNyYyAtIHBvcylcbjs7XG5cbmxldCByZWMgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXyBjaGFyID1cbiAgcG9zIDwgZW5kX1xuICAmJiAoQ2hhci5lcXVhbCAodW5zYWZlX2dldCB0IHBvcykgY2hhciB8fCBjb250YWluc191bnNhZmUgdCB+cG9zOihwb3MgKyAxKSB+ZW5kXyBjaGFyKVxuOztcblxubGV0IGNvbnRhaW5zID8ocG9zID0gMCkgP2xlbiB0IGNoYXIgPVxuICBsZXQgdG90YWxfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gIGxldCBsZW4gPSBPcHRpb24udmFsdWUgbGVuIH5kZWZhdWx0Oih0b3RhbF9sZW5ndGggLSBwb3MpIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF86KHBvcyArIGxlbikgY2hhclxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IHJlYyBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhciA9XG4gIGlmIHBvcyA+PSBsZW5cbiAgdGhlbiByYWlzZSBub3RfZm91bmRcbiAgZWxzZSBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHN0cmluZyBwb3MpIGNoYXJcbiAgdGhlbiBwb3NcbiAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zICsgMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6MCB+bGVuOihsZW5ndGggdCkgfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9leG4gdCBjaGFyID0gaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZXhuXG47O1xuXG5sZXQgaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhciA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuXCJcbiAgICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgcmVjIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhciA9XG4gIGlmIHBvcyA8IDBcbiAgdGhlbiByYWlzZSBub3RfZm91bmRcbiAgZWxzZSBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHN0cmluZyBwb3MpIGNoYXJcbiAgdGhlbiBwb3NcbiAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOihsZW4gLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByaW5kZXhfZXhuIHQgY2hhciA9IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByaW5kZXhfZXhuXG47O1xuXG5sZXQgcmluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhciA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgcG9zIDwgLTEgfHwgcG9zID49IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuXCJcbiAgICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCBpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgPSBfIH0gOiBTZXhwLnQgPVxuICAgIExpc3RcbiAgICAgIFsgTGlzdCBbIEF0b20gXCJwYXR0ZXJuXCI7IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm4gXVxuICAgICAgOyBMaXN0IFsgQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZSBdXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHBhdHRlcm4gdCA9IHQucGF0dGVyblxuICBsZXQgY2FzZV9zZW5zaXRpdmUgdCA9IHQuY2FzZV9zZW5zaXRpdmVcblxuICAoKiBGaW5kIG1heCBudW1iZXIgb2YgbWF0Y2hlZCBjaGFyYWN0ZXJzIGF0IFtuZXh0X3RleHRfY2hhcl0sIGdpdmVuIHRoZSBjdXJyZW50XG4gICAgIFttYXRjaGVkX2NoYXJzXS4gVHJ5IHRvIGV4dGVuZCB0aGUgY3VycmVudCBtYXRjaCwgaWYgY2hhcnMgZG9uJ3QgbWF0Y2gsIHRyeSB0byBtYXRjaFxuICAgICBmZXdlciBjaGFycy4gSWYgY2hhcnMgbWF0Y2ggdGhlbiBleHRlbmQgdGhlIG1hdGNoLiAqKVxuICBsZXQga21wX2ludGVybmFsX2xvb3Agfm1hdGNoZWRfY2hhcnMgfm5leHRfdGV4dF9jaGFyIH5wYXR0ZXJuIH5rbXBfYXJyYXkgfmNoYXJfZXF1YWwgPVxuICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIG1hdGNoZWRfY2hhcnMgaW5cbiAgICB3aGlsZVxuICAgICAgIW1hdGNoZWRfY2hhcnMgPiAwXG4gICAgICAmJiBub3QgKGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycykpXG4gICAgZG9cbiAgICAgIG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKCFtYXRjaGVkX2NoYXJzIC0gMSlcbiAgICBkb25lO1xuICAgIGlmIGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycylcbiAgICB0aGVuIG1hdGNoZWRfY2hhcnMgOj0gIW1hdGNoZWRfY2hhcnMgKyAxO1xuICAgICFtYXRjaGVkX2NoYXJzXG4gIDs7XG5cbiAgbGV0IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbWF0Y2ggY2FzZV9zZW5zaXRpdmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiBDaGFyLmVxdWFsXG4gICAgfCBmYWxzZSAtPiBDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVAgcHJlLXByb2Nlc3Npbmcgb2YgdGhlIHBhdHRlcm46IGJ1aWxkIHRoZSBpbnQgYXJyYXksIHdoaWNoLCBmb3IgZWFjaCBpLFxuICAgICBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IG5vbi10cml2aWFsIHByZWZpeCBvZiBzIHdoaWNoIGlzIGVxdWFsIHRvIGEgc3VmZml4XG4gICAgIGVuZGluZyBhdCBzLltpXSAqKVxuICBsZXQgY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBsZXQgbiA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgbGV0IGttcF9hcnJheSA9IEFycmF5LmNyZWF0ZSB+bGVuOm4gKC0xKSBpblxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgMCAwO1xuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhcjoodW5zYWZlX2dldCBwYXR0ZXJuIGkpXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IGkgIW1hdGNoZWRfY2hhcnNcbiAgICAgIGRvbmUpO1xuICAgIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9XG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVA6IHVzZSB0aGUgcHJlLXByb2Nlc3NlZCBwYXR0ZXJuIHRvIG9wdGltaXplIGxvb2stYmVoaW5kcyBvbiBub24tbWF0Y2hlcy5cbiAgICAgV2UgcmV0dXJuIGludCB0byBhdm9pZCBhbGxvY2F0aW9uIGluIFtpbmRleF9leG5dLiAtMSBtZWFucyBubyBtYXRjaC4gKilcbiAgbGV0IGluZGV4X2ludGVybmFsID8ocG9zID0gMCkgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfmluXzp0ZXh0ID1cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlbmd0aCB0ZXh0IC0gbGVuZ3RoIHBhdHRlcm5cbiAgICB0aGVuIC0xXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IGogPSByZWYgcG9zIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICB3aGlsZSAhaiA8IG4gJiYgIW1hdGNoZWRfY2hhcnMgPCBrIGRvXG4gICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCAhaiBpblxuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgaiA6PSAhaiArIDFcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGsgdGhlbiAhaiAtIGsgZWxzZSAtMSlcbiAgOztcblxuICBsZXQgbWF0Y2hlcyB0IHN0ciA9IGluZGV4X2ludGVybmFsIHQgfmluXzpzdHIgPj0gMFxuXG4gIGxldCBpbmRleCA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuICA7O1xuXG4gIGxldCBpbmRleF9leG4gP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwID49IDBcbiAgICB0aGVuIHBcbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJTdWJzdHJpbmcgbm90IGZvdW5kXCIgWyBcInN1YnN0cmluZ1wiLCBzZXhwX29mX3N0cmluZyB0LnBhdHRlcm4gXSlcbiAgOztcblxuICBsZXQgaW5kZXhfYWxsIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5tYXlfb3ZlcmxhcCB+aW5fOnRleHQgPVxuICAgIGlmIGxlbmd0aCBwYXR0ZXJuID0gMFxuICAgIHRoZW4gTGlzdC5pbml0ICgxICsgbGVuZ3RoIHRleHQpIH5mOkZuLmlkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgbGV0IGZvdW5kID0gcmVmIFtdIGluXG4gICAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGtcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgZm91bmQgOj0gKGogLSBrKSA6OiAhZm91bmQ7XG4gICAgICAgICAgKCogd2UganVzdCBmb3VuZCBhIG1hdGNoIGluIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gKilcbiAgICAgICAgICBtYXRjaCBtYXlfb3ZlcmxhcCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+IG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKGsgLSAxKVxuICAgICAgICAgIHwgZmFsc2UgLT4gbWF0Y2hlZF9jaGFycyA6PSAwKTtcbiAgICAgICAgaWYgaiA8IG5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0IGogaW5cbiAgICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgICB+Y2hhcl9lcXVhbClcbiAgICAgIGRvbmU7XG4gICAgICBMaXN0LnJldiAhZm91bmQpXG4gIDs7XG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgP3BvcyB0IH5pbl86cyB+d2l0aF8gPVxuICAgIG1hdGNoIGluZGV4ID9wb3MgdCB+aW5fOnMgd2l0aFxuICAgIHwgTm9uZSAtPiBzXG4gICAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgbGVuX3dpdGggLSBsZW5fdCkgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOndpdGhfIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczppIH5sZW46bGVuX3dpdGg7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6KGkgKyBsZW5fdClcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczooaSArIGxlbl93aXRoKVxuICAgICAgICB+bGVuOihsZW5fcyAtIGkgLSBsZW5fdCk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG5cbiAgbGV0IHJlcGxhY2VfYWxsIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBudW1fbWF0Y2hlcyA9IExpc3QubGVuZ3RoIG1hdGNoZXMgaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgKChsZW5fd2l0aCAtIGxlbl90KSAqIG51bV9tYXRjaGVzKSkgaW5cbiAgICAgIGxldCBuZXh0X2RzdF9wb3MgPSByZWYgMCBpblxuICAgICAgbGV0IG5leHRfc3JjX3BvcyA9IHJlZiAwIGluXG4gICAgICBMaXN0Lml0ZXIgbWF0Y2hlcyB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGxlbiA9IGkgLSAhbmV4dF9zcmNfcG9zIGluXG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczohbmV4dF9zcmNfcG9zIH5kc3QgfmRzdF9wb3M6IW5leHRfZHN0X3BvcyB+bGVuO1xuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICAgIH5zcmM6d2l0aF9cbiAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgfmRzdFxuICAgICAgICAgIH5kc3RfcG9zOighbmV4dF9kc3RfcG9zICsgbGVuKVxuICAgICAgICAgIH5sZW46bGVuX3dpdGg7XG4gICAgICAgIG5leHRfZHN0X3BvcyA6PSAhbmV4dF9kc3RfcG9zICsgbGVuICsgbGVuX3dpdGg7XG4gICAgICAgIG5leHRfc3JjX3BvcyA6PSAhbmV4dF9zcmNfcG9zICsgbGVuICsgbGVuX3QpO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOiFuZXh0X3NyY19wb3NcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczohbmV4dF9kc3RfcG9zXG4gICAgICAgIH5sZW46KGxlbl9zIC0gIW5leHRfc3JjX3Bvcyk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG4gIGxldCBzcGxpdF9vbiB0IHMgPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgTGlzdC5tYXAyX2V4blxuICAgICAgKC1wYXR0ZXJuX2xlbiA6OiBtYXRjaGVzKVxuICAgICAgKG1hdGNoZXMgQCBbIFN0cmluZy5sZW5ndGggcyBdKVxuICAgICAgfmY6KGZ1biBpIGogLT4gc3ViIHMgfnBvczooaSArIHBhdHRlcm5fbGVuKSB+bGVuOihqIC0gaSAtIHBhdHRlcm5fbGVuKSlcbiAgOztcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgcHVibGljID0gdFxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgPVxuICAgICAgKGZ1biBhX18wMDJfIGJfXzAwM18gLT5cbiAgICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMl8gYl9fMDAzX1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgICAoZXF1YWxfc3RyaW5nIGFfXzAwMl8ucGF0dGVybiBiX18wMDNfLnBhdHRlcm4pXG4gICAgICAgICAgICAgKFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgICAgICAoZXF1YWxfYm9vbCBhX18wMDJfLmNhc2Vfc2Vuc2l0aXZlIGJfXzAwM18uY2FzZV9zZW5zaXRpdmUpXG4gICAgICAgICAgICAgICAgKGVxdWFsX2FycmF5IGVxdWFsX2ludCBhX18wMDJfLmttcF9hcnJheSBiX18wMDNfLmttcF9hcnJheSkpXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGJvb2wpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IHBhdHRlcm4gPSBwYXR0ZXJuX18wMDdfXG4gICAgICAgICAgIDsgY2FzZV9zZW5zaXRpdmUgPSBjYXNlX3NlbnNpdGl2ZV9fMDA5X1xuICAgICAgICAgICA7IGttcF9hcnJheSA9IGttcF9hcnJheV9fMDExX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDZfID0gW10gaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfaW50IGttcF9hcnJheV9fMDExXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImttcF9hcnJheVwiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlX18wMDlfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY2FzZV9zZW5zaXRpdmVcIjsgYXJnX18wMTBfIF1cbiAgICAgICAgICA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9zdHJpbmcgcGF0dGVybl9fMDA3XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhdHRlcm5cIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA2X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHJlcHJlc2VudGF0aW9uID0gRm4uaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuX2hlbHBlciA9IHN0cnVjdFxuICBtb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBTZWFyY2hfcGF0dGVybjBcbmVuZFxuXG5vcGVuIFNlYXJjaF9wYXR0ZXJuX2hlbHBlclxuXG5sZXQgc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXggP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfZXhuID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfm1heV9vdmVybGFwIH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfYWxsXG4gICAgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybilcbiAgICB+bWF5X292ZXJsYXBcbiAgICB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfZmlyc3QgP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9hbGwgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+c3Vic3RyaW5nID1cbiAgT3B0aW9uLmlzX3NvbWUgKHN1YnN0cl9pbmRleF9nZW4gdCB+cGF0dGVybjpzdWJzdHJpbmcgfmNhc2Vfc2Vuc2l0aXZlKVxuOztcblxubGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5cbmxldCBpc19zdWJzdHJpbmdfYXRfZ2VuID1cbiAgbGV0IHJlYyBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvcyB+c3ViX2xlbiB+Y2hhcl9lcXVhbCA9XG4gICAgaWYgc3ViX3BvcyA9IHN1Yl9sZW5cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGlmIGNoYXJfZXF1YWwgKHVuc2FmZV9nZXQgc3RyIHN0cl9wb3MpICh1bnNhZmVfZ2V0IHN1YiBzdWJfcG9zKVxuICAgIHRoZW4gbG9vcCB+c3RyIH5zdHJfcG9zOihzdHJfcG9zICsgMSkgfnN1YiB+c3ViX3Bvczooc3ViX3BvcyArIDEpIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG4gICAgZWxzZSBmYWxzZVxuICBpblxuICBmdW4gc3RyIH5wb3M6c3RyX3BvcyB+c3Vic3RyaW5nOnN1YiB+Y2hhcl9lcXVhbCAtPlxuICAgIGxldCBzdHJfbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCBzdWJfbGVuID0gbGVuZ3RoIHN1YiBpblxuICAgIGlmIHN0cl9wb3MgPCAwIHx8IHN0cl9wb3MgPiBzdHJfbGVuXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiU3RyaW5nLmlzX3N1YnN0cmluZ19hdDogaW52YWxpZCBpbmRleCAlZCBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICAgIHN0cl9wb3NcbiAgICAgICAgc3RyX2xlblxuICAgICAgICAoKTtcbiAgICBzdHJfcG9zICsgc3ViX2xlbiA8PSBzdHJfbGVuXG4gICAgJiYgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3M6MCB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3N1ZmZpeF9nZW4gc3RyaW5nIH5zdWZmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIHN0cmluZ19sZW4gPj0gc3VmZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuXG4gICAgICAgc3RyaW5nXG4gICAgICAgfnBvczooc3RyaW5nX2xlbiAtIHN1ZmZpeF9sZW4pXG4gICAgICAgfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3ByZWZpeF9nZW4gc3RyaW5nIH5wcmVmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHByZWZpeF9sZW4gPSBsZW5ndGggcHJlZml4IGluXG4gIHN0cmluZ19sZW4gPj0gcHJlZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuIHN0cmluZyB+cG9zOjAgfnN1YnN0cmluZzpwcmVmaXggfmNoYXJfZXF1YWxcbjs7XG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJfY29tcGFyZV9jYXNlbGVzcyBjMSBjMiA9IENoYXIuY29tcGFyZSAoQ2hhci5sb3dlcmNhc2UgYzEpIChDaGFyLmxvd2VyY2FzZSBjMilcblxuICAgIGxldCByZWMgY29tcGFyZV9sb29wIH5wb3MgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjIgPVxuICAgICAgaWYgcG9zID0gbGVuMVxuICAgICAgdGhlbiBpZiBwb3MgPSBsZW4yIHRoZW4gMCBlbHNlIC0xXG4gICAgICBlbHNlIGlmIHBvcyA9IGxlbjJcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjID0gY2hhcl9jb21wYXJlX2Nhc2VsZXNzICh1bnNhZmVfZ2V0IHN0cmluZzEgcG9zKSAodW5zYWZlX2dldCBzdHJpbmcyIHBvcykgaW5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xvb3AgfnBvczoocG9zICsgMSkgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjJcbiAgICAgICAgfCBfIC0+IGMpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIHN0cmluZzEgc3RyaW5nMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHN0cmluZzEgc3RyaW5nMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXBhcmVfbG9vcFxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5zdHJpbmcxXG4gICAgICAgICAgfmxlbjE6KFN0cmluZy5sZW5ndGggc3RyaW5nMSlcbiAgICAgICAgICB+c3RyaW5nMlxuICAgICAgICAgIH5sZW4yOihTdHJpbmcubGVuZ3RoIHN0cmluZzIpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID1cbiAgICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgICAgbGV0IHN0YXRlID0gcmVmIChoYXNoX2ZvbGRfaW50IHN0YXRlIGxlbikgaW5cbiAgICAgIGZvciBwb3MgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgc3RhdGUgOj0gaGFzaF9mb2xkX2NoYXIgIXN0YXRlIChDaGFyLmxvd2VyY2FzZSAodW5zYWZlX2dldCB0IHBvcykpXG4gICAgICBkb25lO1xuICAgICAgIXN0YXRlXG4gICAgOztcblxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gICAgbGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nX2F0ID0gaXNfc3Vic3RyaW5nX2F0X2dlbiB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRm4uaWRcbmxldCB0b19zdHJpbmcgPSBGbi5pZFxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpIDwgMCB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgLSAxKSBpblxuICBsb29wIFtdIChsZW5ndGggcyAtIDEpXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpID0gbGVuIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSArIDEpIGluXG4gIGxvb3AgW10gMFxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCByZXMgaSAodW5zYWZlX2dldCB0IChsZW4gLSAxIC0gaSkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzXG47O1xuXG4oKiogRWZmaWNpZW50IHN0cmluZyBzcGxpdHRpbmcgKilcblxubGV0IGxzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmxzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGxzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGxzcGxpdDJfZXhuXG47O1xuXG5sZXQgcnNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucnNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcnNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSByaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJzcGxpdDJfZXhuXG47O1xuXG5sZXQgbHNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChsc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcnNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChyc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNoYXJfbGlzdF9tZW0gbCAoYyA6IGNoYXIpID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBoZCA6OiB0bCAtPiBDaGFyLmVxdWFsIGhkIGMgfHwgY2hhcl9saXN0X21lbSB0bCBjXG47O1xuXG5sZXQgc3BsaXRfZ2VuIHN0ciB+b24gPVxuICBsZXQgaXNfZGVsaW0gPVxuICAgIG1hdGNoIG9uIHdpdGhcbiAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gIGxldCByZWMgbG9vcCBhY2MgbGFzdF9wb3MgcG9zID1cbiAgICBpZiBwb3MgPSAtMVxuICAgIHRoZW4gc3ViIHN0ciB+cG9zOjAgfmxlbjpsYXN0X3BvcyA6OiBhY2NcbiAgICBlbHNlIGlmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvczEgPSBwb3MgKyAxIGluXG4gICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpwb3MxIH5sZW46KGxhc3RfcG9zIC0gcG9zMSkgaW5cbiAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBwb3MgKHBvcyAtIDEpKVxuICAgIGVsc2UgbG9vcCBhY2MgbGFzdF9wb3MgKHBvcyAtIDEpXG4gIGluXG4gIGxvb3AgW10gbGVuIChsZW4gLSAxKVxuOztcblxubGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG5sZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG5sZXQgc3BsaXRfbGluZXMgPVxuICBsZXQgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbCA9XG4gICAgcG9zIDo9ICFwb3MgLSBpZiAhcG9zID4gMCAmJiBDaGFyLmVxdWFsIHQuWyFwb3MgLSAxXSAnXFxyJyB0aGVuIDIgZWxzZSAxO1xuICAgIGVvbCA6PSAhcG9zICsgMVxuICBpblxuICBmdW4gdCAtPlxuICAgIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgICgqIEludmFyaWFudDogWy0xIDw9IHBvcyA8IGVvbF0uICopXG4gICAgICBsZXQgcG9zID0gcmVmIChuIC0gMSkgaW5cbiAgICAgIGxldCBlb2wgPSByZWYgbiBpblxuICAgICAgbGV0IGFjID0gcmVmIFtdIGluXG4gICAgICAoKiBXZSB0cmVhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3BlY2lhbGx5LCBiZWNhdXNlIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFcbiAgICAgICAgIG5ld2xpbmUsIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgZW1wdHkgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dC4gKilcbiAgICAgIGlmIENoYXIuZXF1YWwgdC5bIXBvc10gJ1xcbicgdGhlbiBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sO1xuICAgICAgd2hpbGUgIXBvcyA+PSAwIGRvXG4gICAgICAgIGlmIENoYXIuKCA8PiApIHQuWyFwb3NdICdcXG4nXG4gICAgICAgIHRoZW4gZGVjciBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogQmVjYXVzZSBbcG9zIDwgZW9sXSwgd2Uga25vdyB0aGF0IFtzdGFydCA8PSBlb2xdLiAqKVxuICAgICAgICAgIGxldCBzdGFydCA9ICFwb3MgKyAxIGluXG4gICAgICAgICAgYWMgOj0gc3ViIHQgfnBvczpzdGFydCB+bGVuOighZW9sIC0gc3RhcnQpIDo6ICFhYztcbiAgICAgICAgICBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sKVxuICAgICAgZG9uZTtcbiAgICAgIHN1YiB0IH5wb3M6MCB+bGVuOiFlb2wgOjogIWFjKVxuOztcblxubGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5sZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcblxubGV0IGlzX3N1YnN0cmluZ19hdCBzIH5wb3MgfnN1YnN0cmluZyA9XG4gIGlzX3N1YnN0cmluZ19hdF9nZW4gcyB+cG9zIH5zdWJzdHJpbmcgfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuOztcblxubGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gIGVsc2UgKFxuICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgIHwgXyAtPiBvbl9lcnJvcilcbjs7XG5cbmxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9wcmVmaXhcIiB0IG4gfnBvczpuIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9zdWZmaXhcIiB0IG4gfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG5sZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxubGV0IGxmaW5kaSA/KHBvcyA9IDApIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA9IG4gdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gIGxvb3AgcG9zXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+IFNvbWUgdC5baV1cbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG5cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGYgdC5baV0gd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG5sZXQgcmZpbmRpID9wb3MgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA8IDAgdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSAtIDEpIGluXG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgICB8IE5vbmUgLT4gbGVuZ3RoIHQgLSAxXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG5sZXQgbGFzdF9ub25fZHJvcCB+ZHJvcCB0ID0gcmZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKVxuXG5sZXQgcnN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuOztcblxubGV0IGZpcnN0X25vbl9kcm9wIH5kcm9wIHQgPSBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpXG5cbmxldCBsc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSAwIC0+IHRcbiAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG47O1xuXG4oKiBbc3RyaXAgdF0gY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgW2xzdHJpcCAocnN0cmlwIHQpXS4gIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG5sZXQgc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIGkgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChsZW5ndGggcykgfmY6KGZ1biBpIC0+IHMuW2ldKVxuXG5sZXQgZXhpc3RzID1cbiAgbGV0IHJlYyBsb29wIHMgaSB+bGVuIH5mID0gaSA8IGxlbiAmJiAoZiBzLltpXSB8fCBsb29wIHMgKGkgKyAxKSB+bGVuIH5mKSBpblxuICBmdW4gcyB+ZiAtPiBsb29wIHMgMCB+bGVuOihsZW5ndGggcykgfmZcbjs7XG5cbmxldCBmb3JfYWxsID1cbiAgbGV0IHJlYyBsb29wIHMgaSB+bGVuIH5mID0gaSA9IGxlbiB8fCAoZiBzLltpXSAmJiBsb29wIHMgKGkgKyAxKSB+bGVuIH5mKSBpblxuICBmdW4gcyB+ZiAtPiBsb29wIHMgMCB+bGVuOihsZW5ndGggcykgfmZcbjs7XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhYyB+ZiB+bGVuID1cbiAgICBpZiBpID0gbGVuIHRoZW4gYWMgZWxzZSBsb29wIHQgKGkgKyAxKSAoZiBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGZvbGRpID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhYyB+ZiB+bGVuID1cbiAgICBpZiBpID0gbGVuIHRoZW4gYWMgZWxzZSBsb29wIHQgKGkgKyAxKSAoZiBpIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0ID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdFxubGV0IG1heF9lbHQgdCA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHRcbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZmluZF9tYXBpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kX21hcGkgfml0ZXJpIHQgfmZcbmxldCBmaW5kaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZGkgfml0ZXJpIHQgfmZcbmxldCBjb3VudGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmNvdW50aSB+Zm9sZGkgdCB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5mb3JfYWxsaSB+aXRlcmkgdCB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmV4aXN0c2kgfml0ZXJpIHQgfmZcblxubGV0IG1lbSA9XG4gIGxldCByZWMgbG9vcCB0IGMgfnBvczppIH5sZW4gPVxuICAgIGkgPCBsZW4gJiYgKENoYXIuZXF1YWwgYyAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCBjIH5wb3M6KGkgKyAxKSB+bGVuKVxuICBpblxuICBmdW4gdCBjIC0+IGxvb3AgdCBjIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgaWYgQ2hhci5lcXVhbCB0YXJnZXQgcmVwbGFjZW1lbnRcbiAgdGhlbiBzXG4gIGVsc2UgaWYgbWVtIHMgdGFyZ2V0XG4gIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IGlmIENoYXIuZXF1YWwgYyB0YXJnZXQgdGhlbiByZXBsYWNlbWVudCBlbHNlIGMpXG4gIGVsc2Ugc1xuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgaXNfZW1wdHkgdGFyZ2V0XG4gIHRoZW4gc3RhZ2UgRm4uaWRcbiAgZWxzZSBpZiBpc19lbXB0eSByZXBsYWNlbWVudFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGkgcmVwbGFjZW1lbnQgaXMgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIEZuLmlkXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGlmIGV4aXN0cyBzIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICh1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpKVxuICAgICAgICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiB1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpXG4gICAgICAgIGVsc2UgcykpXG47O1xuXG4oKiBmYXN0IHZlcnNpb24sIGlmIHdlIGV2ZXIgbmVlZCBpdDpcbiAgIHtbXG4gICAgIGxldCBjb25jYXRfYXJyYXkgfnNlcCBhciA9XG4gICAgICAgbGV0IGFyX2xlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgICAgIGlmIGFyX2xlbiA9IDAgdGhlbiBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgbGV0IHNlcF9sZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICBsZXQgcmVzX2xlbl9yZWYgPSByZWYgKHNlcF9sZW4gKiAoYXJfbGVuIC0gMSkpIGluXG4gICAgICAgICBmb3IgaSA9IDAgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICByZXNfbGVuX3JlZiA6PSAhcmVzX2xlbl9yZWYgKyBsZW5ndGggYXIuKGkpXG4gICAgICAgICBkb25lO1xuICAgICAgICAgbGV0IHJlcyA9IGNyZWF0ZSAhcmVzX2xlbl9yZWYgaW5cbiAgICAgICAgIGxldCBzdHJfMCA9IGFyLigwKSBpblxuICAgICAgICAgbGV0IGxlbl8wID0gbGVuZ3RoIHN0cl8wIGluXG4gICAgICAgICBibGl0IH5zcmM6c3RyXzAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczowIH5sZW46bGVuXzA7XG4gICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBsZW5fMCBpblxuICAgICAgICAgZm9yIGkgPSAxIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzZXAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3Bvczpwb3MgfmxlbjpzZXBfbGVuO1xuICAgICAgICAgICBsZXQgbmV3X3BvcyA9IHBvcyArIHNlcF9sZW4gaW5cbiAgICAgICAgICAgbGV0IHN0cl9pID0gYXIuKGkpIGluXG4gICAgICAgICAgIGxldCBsZW5faSA9IGxlbmd0aCBzdHJfaSBpblxuICAgICAgICAgICBibGl0IH5zcmM6c3RyX2kgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczpuZXdfcG9zIH5sZW46bGVuX2k7XG4gICAgICAgICAgIHBvc19yZWYgOj0gbmV3X3BvcyArIGxlbl9pXG4gICAgICAgICBkb25lO1xuICAgICAgICAgcmVzXG4gICBdfSAqKVxuXG5sZXQgY29uY2F0X2FycmF5ID9zZXAgYXIgPSBjb25jYXQgP3NlcCAoQXJyYXkudG9fbGlzdCBhcilcbmxldCBjb25jYXRfbWFwID9zZXAgcyB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXAgKHRvX2FycmF5IHMpIH5mKVxuXG4oKiBbZmlsdGVyIHQgZl0gaXMgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxvd2luZyBhbGdvcml0aG0uXG5cbiAgIExldCBbbiA9IGxlbmd0aCB0XS5cblxuICAgMS4gRmluZCB0aGUgbG93ZXN0IFtpXSBzdWNoIHRoYXQgW25vdCAoZiB0LltpXSldLlxuXG4gICAyLiBJZiB0aGVyZSBpcyBubyBzdWNoIFtpXSwgdGhlbiByZXR1cm4gW3RdLlxuXG4gICAzLiBJZiB0aGVyZSBpcyBzdWNoIGFuIFtpXSwgYWxsb2NhdGUgYSBzdHJpbmcsIFtvdXRdLCB0byBob2xkIHRoZSByZXN1bHQuICBbb3V0XSBoYXNcbiAgIGxlbmd0aCBbbiAtIDFdLCB3aGljaCBpcyB0aGUgbWF4aW11bSBwb3NzaWJsZSBvdXRwdXQgc2l6ZSBnaXZlbiB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0XG4gICBvbmUgY2hhcmFjdGVyIG5vdCBzYXRpc2Z5aW5nIFtmXS5cblxuICAgNC4gQ29weSBjaGFyYWN0ZXJzIGF0IGluZGljZXMgMCAuLi4gW2kgLSAxXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNS4gV2FsayB0aHJvdWdoIGNoYXJhY3RlcnMgYXQgaW5kaWNlcyBbaSsxXSAuLi4gW24tMV0gb2YgW3RdLCBjb3B5aW5nIHRob3NlIHRoYXRcbiAgIHNhdGlzZnkgW2ZdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA2LiBJZiB3ZSBjb21wbGV0ZWx5IGZpbGxlZCBbb3V0XSwgdGhlbiByZXR1cm4gaXQuICBJZiBub3QsIHJldHVybiB0aGUgcHJlZml4IG9mIFtvdXRdXG4gICB0aGF0IHdlIGRpZCBmaWxsIGluLlxuXG4gICBUaGlzIGFsZ29yaXRobSBoYXMgdGhlIHByb3BlcnR5IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSBhIG5ldyBzdHJpbmcgaWYgdGhlcmUnc1xuICAgbm90aGluZyB0byBmaWx0ZXIsIHdoaWNoIGlzIGEgY29tbW9uIGNhc2UuICopXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiAhaSB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiAhaSBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBpZiBpc19wcmVmaXggcyB+cHJlZml4IHRoZW4gU29tZSAoZHJvcF9wcmVmaXggcyAobGVuZ3RoIHByZWZpeCkpIGVsc2UgTm9uZVxuOztcblxubGV0IGNob3BfcHJlZml4X2lmX2V4aXN0cyBzIH5wcmVmaXggPVxuICBpZiBpc19wcmVmaXggcyB+cHJlZml4IHRoZW4gZHJvcF9wcmVmaXggcyAobGVuZ3RoIHByZWZpeCkgZWxzZSBzXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfZXhuIHMgfnByZWZpeCA9XG4gIG1hdGNoIGNob3BfcHJlZml4IHMgfnByZWZpeCB3aXRoXG4gIHwgU29tZSBzdHIgLT4gc3RyXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuY2hvcF9wcmVmaXhfZXhuICVTICVTXCIgcyBwcmVmaXggKClcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggPVxuICBpZiBpc19zdWZmaXggcyB+c3VmZml4IHRoZW4gU29tZSAoZHJvcF9zdWZmaXggcyAobGVuZ3RoIHN1ZmZpeCkpIGVsc2UgTm9uZVxuOztcblxubGV0IGNob3Bfc3VmZml4X2lmX2V4aXN0cyBzIH5zdWZmaXggPVxuICBpZiBpc19zdWZmaXggcyB+c3VmZml4IHRoZW4gZHJvcF9zdWZmaXggcyAobGVuZ3RoIHN1ZmZpeCkgZWxzZSBzXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfZXhuIHMgfnN1ZmZpeCA9XG4gIG1hdGNoIGNob3Bfc3VmZml4IHMgfnN1ZmZpeCB3aXRoXG4gIHwgU29tZSBzdHIgLT4gc3RyXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuY2hvcF9zdWZmaXhfZXhuICVTICVTXCIgcyBzdWZmaXggKClcbjs7XG5cbm1vZHVsZSBGb3JfY29tbW9uX3ByZWZpeF9hbmRfc3VmZml4ID0gc3RydWN0XG4gICgqIFdoZW4gdGFraW5nIGEgc3RyaW5nIHByZWZpeCBvciBzdWZmaXgsIHdlIGV4dHJhY3QgZnJvbSB0aGUgc2hvcnRlc3QgaW5wdXQgYXZhaWxhYmxlXG4gICAgIGluIGNhc2Ugd2UgY2FuIGp1c3QgcmV0dXJuIG9uZSBvZiBvdXIgaW5wdXRzIHdpdGhvdXQgYWxsb2NhdGluZyBhIG5ldyBzdHJpbmcuICopXG5cbiAgbGV0IHNob3J0ZXIgYSBiID0gaWYgbGVuZ3RoIGEgPD0gbGVuZ3RoIGIgdGhlbiBhIGVsc2UgYlxuXG4gIGxldCBzaG9ydGVzdCBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT4gTGlzdC5mb2xkIHJlc3QgfmluaXQ6Zmlyc3QgfmY6c2hvcnRlclxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyBmb3IgY29tbW9uIHByZWZpeC9zdWZmaXggYWJzdHJhY3Qgb3ZlciBbZ2V0X3Bvc10sIHdoaWNoIGlzXG4gICAgIGVpdGhlciBbcG9zX2Zyb21fbGVmdF0gb3IgW3Bvc19mcm9tX3JpZ2h0XS4gKilcblxuICBsZXQgcG9zX2Zyb21fbGVmdCAoXyA6IHQpIChpIDogaW50KSA9IGlcbiAgbGV0IHBvc19mcm9tX3JpZ2h0IHQgaSA9IGxlbmd0aCB0IC0gaSAtIDFcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXIgPVxuICAgIGlmIGxlbl9zb19mYXIgPj0gbWF4X2xlblxuICAgIHRoZW4gbWF4X2xlblxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbFxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBhIChnZXRfcG9zIGEgbGVuX3NvX2ZhcikpXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGIgKGdldF9wb3MgYiBsZW5fc29fZmFyKSlcbiAgICB0aGVuIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6KGxlbl9zb19mYXIgKyAxKVxuICAgIGVsc2UgbGVuX3NvX2ZhclxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3BvcyA9XG4gICAgbGV0IG1heF9sZW4gPSBtaW4gKGxlbmd0aCBhKSAobGVuZ3RoIGIpIGluXG4gICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCBsaXN0IH5nZXRfcG9zIH5tYXhfbGVuID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IG1heF9sZW5cbiAgICB8IHNlY29uZCA6OiByZXN0IC0+XG4gICAgICBsZXQgbWF4X2xlbiA9XG4gICAgICAgICgqIFdlIGNhbGwgW2NvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW4gW2NvbW1vbl9nZW5lcmljMl9sZW5ndGhdIHNvXG4gICAgICAgICAgIHRoYXQgW21heF9sZW5dIGxpbWl0cyBvdXIgdHJhdmVyc2FsIG9mIFtmaXJzdF0gYW5kIFtzZWNvbmRdLiAqKVxuICAgICAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgZmlyc3Qgc2Vjb25kIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgICAgIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBzZWNvbmQgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3BvcyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiAwXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBQcmVjb21wdXRpbmcgW21heF9sZW5dIGJhc2VkIG9uIFtzaG9ydGVzdCBsaXN0XSBzYXZlcyB1cyB3b3JrIGluIGxvbmdlciBzdHJpbmdzLFxuICAgICAgICAgYXQgdGhlIGNvc3Qgb2YgYW4gZXh0cmEgcGFzcyBvdmVyIHRoZSBzcGluZSBvZiBbbGlzdF0uXG5cbiAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UncmUgbG9va2luZyBmb3IgdGhlIGxvbmdlc3QgcHJlZml4IG9mIHRoZSBzdHJpbmdzOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgbGV0IGxvbmdfYSA9IExpc3QuaW5pdCAxMDAwIH5mOihGbi5jb25zdCAnYScpXG4gICAgICAgICAgICBbIGxvbmdfYTsgbG9uZ19hOyAnYWEnIF1cbiAgICAgICAgIHZ9XG5cbiAgICAgICAgIHRoZSBhcHByb2FjaCBiZWxvdyB3aWxsIGp1c3QgY2hlY2sgdGhlIGZpcnN0IHR3byBjaGFyYWN0ZXJzIG9mIGFsbCB0aGUgc3RyaW5ncy5cbiAgICAgICopXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCAoc2hvcnRlc3QgbGlzdCkgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgdGhhdCBwcm9kdWNlIGEgc3RyaW5nIGFic3RyYWN0IG92ZXIgW3Rha2VdLCB3aGljaCBpcyBlaXRoZXJcbiAgICAgW3ByZWZpeF0gb3IgW3N1ZmZpeF0uICopXG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMiBhIGIgfmdldF9wb3MgfnRha2UgPVxuICAgIGxldCBsZW4gPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3BvcyBpblxuICAgICgqIFVzZSB0aGUgc2hvcnRlciBvZiB0aGUgdHdvIHN0cmluZ3MsIHNvIHRoYXQgaWYgdGhlIHNob3J0ZXIgb25lIGlzIHRoZSBzaGFyZWRcbiAgICAgICBwcmVmaXgsIFt0YWtlXSB3b24ndCBhbGxvY2F0ZSBhbm90aGVyIHN0cmluZy4gKilcbiAgICB0YWtlIChzaG9ydGVyIGEgYikgbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljIGxpc3QgfmdldF9wb3MgfnRha2UgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogQXMgd2l0aCBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSwgd2UgYmFzZSBbbWF4X2xlbl0gb24gW3Nob3J0ZXN0IGxpc3RdLiBXZSBhbHNvXG4gICAgICAgICB1c2UgdGhpcyByZXN1bHQgZm9yIFt0YWtlXSwgYmVsb3csIHRvIHBvdGVudGlhbGx5IGF2b2lkIGFsbG9jYXRpbmcgYSBzdHJpbmcuICopXG4gICAgICBsZXQgcyA9IHNob3J0ZXN0IGxpc3QgaW5cbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIHMgaW5cbiAgICAgIGlmIG1heF9sZW4gPSAwXG4gICAgICB0aGVuIFwiXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAoKiBXZSBjYWxsIGRpcmVjdGx5IGludG8gW2NvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhblxuICAgICAgICAgICAgIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdIHRvIGF2b2lkIHJlY29tcHV0aW5nIFtzaG9ydGVzdCBsaXN0XS4gKilcbiAgICAgICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gICAgICAgIGluXG4gICAgICAgIHRha2UgcyBsZW4pXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBGb3JfY29tbW9uX3ByZWZpeF9hbmRfc3VmZml4XG5cbiAgbGV0IGNvbW1vbl9wcmVmaXggbGlzdCA9IGNvbW1vbl9nZW5lcmljIGxpc3QgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXggbGlzdCA9IGNvbW1vbl9nZW5lcmljIGxpc3QgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4MiBhIGIgPSBjb21tb25fZ2VuZXJpYzIgYSBiIH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4MiBhIGIgPSBjb21tb25fZ2VuZXJpYzIgYSBiIH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuZW5kXG5cbigqIFRoZXJlIHVzZWQgdG8gYmUgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gdGhhdCB3YXMgZmFzdGVyIGZvciB2ZXJ5IHNob3J0IHN0cmluZ3NcbiAgIChwZWFraW5nIGF0IDQwJSBmYXN0ZXIgZm9yIDQtNiBjaGFyIGxvbmcgc3RyaW5ncykuXG4gICBUaGlzIG5ldyBmdW5jdGlvbiBpcyBhcm91bmQgMjAlIGZhc3RlciB0aGFuIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24sIGJ1dCBzbG93ZXJcbiAgIHRoYW4gdGhlIHByZXZpb3VzIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgdGhlIG5ldyBPQ2FtbCBmdW5jdGlvbiBpcyB3ZWxsXG4gICBiZWhhdmVkLCBhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBsZXNzIGxpa2VseSB0byBkaXZlcmdlIGZyb20gdGhlIGRlZmF1bHQgT0NhbWxcbiAgIGltcGxlbWVudGF0aW9uIGRvZXMsIHdoaWNoIGlzIGEgZGVzaXJhYmxlIHByb3BlcnR5LiAoVGhlIG9ubHkgd2F5IHRvIGF2b2lkIHRoZVxuICAgZGl2ZXJnZW5jZSBpcyB0byBleHBvc2UgdGhlIG1hY3JvIHJlZGVmaW5lZCBpbiBoYXNoX3N0dWJzLmMgaW4gdGhlIGhhc2guaCBoZWFkZXIgb2ZcbiAgIHRoZSBPQ2FtbCBjb21waWxlci4pICopXG5tb2R1bGUgSGFzaCA9IHN0cnVjdFxuICBleHRlcm5hbCBoYXNoIDogc3RyaW5nIC0+IGludCA9IFwiQmFzZV9oYXNoX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5lbmRcblxuKCogW2luY2x1ZGUgSGFzaF0gdG8gbWFrZSB0aGUgW2V4dGVybmFsXSB2ZXJzaW9uIG92ZXJyaWRlIHRoZSBbaGFzaF0gZnJvbVxuICAgW0hhc2hhYmxlLk1ha2VfYmluYWJsZV0sIHNvIHRoYXQgd2UgZ2V0IGEgbGl0dGxlIGJpdCBvZiBhIHNwZWVkdXAgYnkgZXhwb3NpbmcgaXQgYXNcbiAgIGV4dGVybmFsIGluIHRoZSBtbGkuICopXG5sZXQgXyA9IGhhc2hcblxuaW5jbHVkZSBIYXNoXG5cbigqIGZvciBpbnRlcmFjdGl2ZSB0b3AtbGV2ZWxzIC0tIG1vZHVsZXMgZGVyaXZpbmcgZnJvbSBTdHJpbmcgc2hvdWxkIGhhdmUgU3RyaW5nJ3MgcHJldHR5XG4gICBwcmludGVyLiAqKVxubGV0IHBwIHBwZiBzdHJpbmcgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiVTXCIgc3RyaW5nXG5sZXQgb2ZfY2hhciBjID0gbWFrZSAxIGNcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBCeXRlcy5zZXQgdCBpIGMpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbm1vZHVsZSBFc2NhcGluZyA9IHN0cnVjdFxuICAoKiBJZiB0aGlzIGlzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0byB1cGRhdGUgW2VzY2FwZV0sIHdoaWNoIGF0dGVtcHRzIHRvIGVuc3VyZSBhbGwgdGhlXG4gICAgIGludmFyaWFudHMgY2hlY2tlZCBoZXJlLiAgKilcbiAgbGV0IGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgZnVuYyA9XG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgaWYgTGlzdC5Bc3NvYy5tZW0gZXNjYXBld29ydGh5X21hcCB+ZXF1YWw6Q2hhci5lcXVhbCBlc2NhcGVfY2hhclxuICAgICAgdGhlbiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICBlbHNlIChlc2NhcGVfY2hhciwgZXNjYXBlX2NoYXIpIDo6IGVzY2FwZXdvcnRoeV9tYXBcbiAgICBpblxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgKC0xKSBpblxuICAgIGxldCB2YWxzID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2IGZhbHNlIGluXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gT2sgYXJyXG4gICAgICB8IChjX2Zyb20sIGNfdG8pIDo6IGwgLT5cbiAgICAgICAgbGV0IGssIHYgPVxuICAgICAgICAgIG1hdGNoIGZ1bmMgd2l0aFxuICAgICAgICAgIHwgYEVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX2Zyb20sIGNfdG9cbiAgICAgICAgICB8IGBVbmVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX3RvLCBjX2Zyb21cbiAgICAgICAgaW5cbiAgICAgICAgaWYgYXJyLihrKSA8PiAtMSB8fCB2YWxzLihDaGFyLnRvX2ludCB2KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgICAgXCJlc2NhcGV3b3J0aHlfbWFwIG5vdCBvbmUtdG8tb25lXCJcbiAgICAgICAgICAgICAgIFsgXCJjX2Zyb21cIiwgc2V4cF9vZl9jaGFyIGNfZnJvbVxuICAgICAgICAgICAgICAgOyBcImNfdG9cIiwgc2V4cF9vZl9jaGFyIGNfdG9cbiAgICAgICAgICAgICAgIDsgKCBcImVzY2FwZXdvcnRoeV9tYXBcIlxuICAgICAgICAgICAgICAgICAsIHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2ZfY2hhciBzZXhwX29mX2NoYXIpIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYXJyLihrKSA8LSBDaGFyLnRvX2ludCB2O1xuICAgICAgICAgIHZhbHMuKENoYXIudG9faW50IHYpIDwtIHRydWU7XG4gICAgICAgICAgbG9vcCBsKVxuICAgIGluXG4gICAgbG9vcCBlc2NhcGV3b3J0aHlfbWFwXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBFc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogY2FsY3VsYXRlIGEgbGlzdCBvZiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpIGZpcnN0LCB0aGUgb3JkZXJcbiAgICAgICAgICAgICAgaXMgZnJvbSB0YWlsIHRvIGhlYWQgKilcbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZV9sZW4gPSByZWYgMCBpblxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlID1cbiAgICAgICAgICAgICBmb2xkaSBzcmMgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBjIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IGMpIHdpdGhcbiAgICAgICAgICAgICAgIHwgLTEgLT4gYWNjXG4gICAgICAgICAgICAgICB8IG4gLT5cbiAgICAgICAgICAgICAgICAgKCogKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSAqKVxuICAgICAgICAgICAgICAgICBpbmNyIHRvX2VzY2FwZV9sZW47XG4gICAgICAgICAgICAgICAgIChpLCBDaGFyLnVuc2FmZV9vZl9pbnQgbikgOjogYWNjKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b19lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAoKiBbdG9fZXNjYXBlXSBkaXZpZGUgW3NyY10gdG8gW0xpc3QubGVuZ3RoIHRvX2VzY2FwZSArIDFdIHBpZWNlcyBzZXBhcmF0ZWQgYnlcbiAgICAgICAgICAgICAgICB0aGUgY2hhcnMgdG8gZXNjYXBlLlxuXG4gICAgICAgICAgICAgICAgTGV0cyB0YWtlXG4gICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgIGVzY2FwZV9nZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGV3b3J0aHlfbWFwOlsoJ2EnLCAnQScpOyAoJ2InLCAnQicpOyAoJ2MnLCAnQycpXVxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBlX2NoYXI6J18nXG4gICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgYW5kIGFzc3VtZSB0aGUgc3RyaW5nIHRvIGVzY2FwZSBpc1xuXG4gICAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgICAgdGhlbiBbdG9fZXNjYXBlXSBpcyBbKDExLCAnQycpOyAoNywgJ0InKTsgKDMsICdBJyldLlxuXG4gICAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBbZHN0XSBvZiBsZW5ndGggW2xlbmd0aCBzcmMgKyAzXSB0byBzdG9yZSB0aGVcbiAgICAgICAgICAgICAgICByZXN1bHQsIGNvcHkgcGllY2UgXCIzMzNcIiB0byBbZHN0XSBkaXJlY3RseSwgdGhlbiBjb3B5ICdfJyBhbmQgJ0MnIHRvIFtkc3RdO1xuICAgICAgICAgICAgICAgIHRoZW4gbW92ZSBvbiB0byBuZXh0OyBhZnRlciAzIGl0ZXJhdGlvbnMsIGNvcHkgcGllY2UgXCIwMDBcIiBhbmQgd2UgYXJlIGRvbmUuXG5cbiAgICAgICAgICAgICAgICBGaW5hbGx5IHRoZSByZXN1bHQgd2lsbCBiZVxuXG4gICAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIiAqKVxuICAgICAgICAgICAgIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgICAgICAgICAgIGxldCBkc3RfbGVuID0gc3JjX2xlbiArICF0b19lc2NhcGVfbGVuIGluXG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBkc3RfbGVuIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCAoaWR4LCBlc2NhcGVkX2NoYXIpIDo6IHRvX2VzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKltpZHhdID0gdGhlIGNoYXIgdG8gZXNjYXBlKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSBmaXJzdCBpdGVyYXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICAgICAgICAgICAgICAgKCogY2FsY3VsYXRlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAxIGJlY2F1c2Ugd2UgZG9uJ3QgY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMSBpblxuICAgICAgICAgICAgICAgICAoKiBzZXQgdGhlIGRzdF9wb3MgdG8gY29weSB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIsIHNldCBbc3JjX3Bvc10gdG8gW2lkeCArIDFdIHRvIHNraXAgJ2MnICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDEpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMiB0byBjb3B5ICdfJyBhbmQgJ0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDIgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCBkc3RfcG9zIGVzY2FwZV9jaGFyO1xuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IChkc3RfcG9zICsgMSkgZXNjYXBlZF9jaGFyO1xuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX2VzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gZmlyc3QgKilcbiAgICAgICAgICAgICBsb29wIHNyY19sZW4gZHN0X2xlbiB0b19lc2NhcGU7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuIChlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgZXNjYXBlIH5lc2NhcGV3b3J0aHkgfmVzY2FwZV9jaGFyID1cbiAgICAoKiBGb3IgW2VzY2FwZV9nZW5fZXhuXSwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZml4IGludmFsaWQgZXNjYXBld29ydGh5X21hcCBzbyB3ZSBoYXZlXG4gICAgICAgdG8gcmFpc2UgZXhjZXB0aW9uOyBidXQgaW4gdGhpcyBjYXNlLCB3ZSBrbm93IGhvdyB0byBmaXggZHVwbGljYXRlZCBlbGVtZW50cyBpblxuICAgICAgIGVzY2FwZXdvcnRoeSBsaXN0LCBzbyB3ZSBqdXN0IGZpeCBpdCBpbnN0ZWFkIG9mIHJhaXNpbmcgZXhjZXB0aW9uIHRvIG1ha2UgdGhpc1xuICAgICAgIGZ1bmN0aW9uIGVhc2llciB0byB1c2UuICAqKVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGVzY2FwZXdvcnRoeVxuICAgICAgfD4gTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpDaGFyLmNvbXBhcmVcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gYyAtPiBjLCBjKVxuICAgIGluXG4gICAgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBVbmVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBDb250aW51ZSB0aGUgZXhhbXBsZSBpbiBbZXNjYXBlX2dlbl9leG5dLCBub3cgd2UgdW5lc2NhcGVcblxuICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiXG5cbiAgICAgICAgICAgICAgYmFjayB0b1xuXG4gICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICBUaGVuIFt0b191bmVzY2FwZV0gaXMgWzE0OyA5OyA0XSwgd2hpY2ggaXMgaW5kZXhlcyBvZiAnXydzLlxuXG4gICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgc3RyaW5nIFtkc3RdIHRvIHN0b3JlIHRoZSByZXN1bHQsIGNvcHkgXCIzMzNcIiB0byBpdCwgdGhlbiBjb3B5XG4gICAgICAgICAgICAgICdjJywgdGhlbiBtb3ZlIG9uIHRvIG5leHQgaXRlcmF0aW9uLiBBZnRlciAzIGl0ZXJhdGlvbnMgY29weSBcIjAwMFwiIGFuZCB3ZSBhcmVcbiAgICAgICAgICAgICAgZG9uZS4gICopXG4gICAgICAgICAgICgqIGluZGV4ZXMgb2YgZXNjYXBlIGNoYXJzICopXG4gICAgICAgICAgIGxldCB0b191bmVzY2FwZSA9XG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzIGFjYyA9XG4gICAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCBzcmNcbiAgICAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHNyYyB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMgaW5cbiAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBpbmcgLT4gaSA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGFjYykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsb29wIDAgYExpdGVyYWwgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fdW5lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZScgLT5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5ndGggc3JjIC0gTGlzdC5sZW5ndGggdG9fdW5lc2NhcGUpIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCogW2lkeF0gPSBpbmRleCBvZiBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgMXN0IGl0ZXJhdGlvbiBhcyBleGFtcGxlLCBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAyIHRvXG4gICAgICAgICAgICAgICAgICAgIHNraXAgJ19DJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAyIGluXG4gICAgICAgICAgICAgICAgICgqIHBvaW50IFtkc3RfcG9zXSB0byB0aGUgcG9zaXRpb24gdG8gY29weSBcIjMzM1wiIHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAyKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDEgdG8gY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMSBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXRcbiAgICAgICAgICAgICAgICAgICBkc3RcbiAgICAgICAgICAgICAgICAgICBkc3RfcG9zXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgc3JjLltpZHggKyAxXSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IC0xIC0+IHNyYy5baWR4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IENoYXIudW5zYWZlX29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICAgKCogdXBkYXRlIFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdICopXG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIGlkeCA8IGxlbmd0aCBzcmMgLSAxXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICgqIGZvciBlc2NhcGVkIHN0cmluZyBlbmRpbmcgd2l0aCBhbiBlc2NhcGluZyBjaGFyIGxpa2UgXCIwMDBfXCIsIGp1c3QgaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGUgbGFzdCBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjIC0gMSkgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlJztcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAodW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgdW5lc2NhcGUgfmVzY2FwZV9jaGFyID0gdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcDpbXSB+ZXNjYXBlX2NoYXJcblxuICBsZXQgcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IHJlYyBsb29wIHAgY250ID1cbiAgICAgIGlmIHAgPCAwIHx8IENoYXIuKCA8PiApIHN0ci5bcF0gZXNjYXBlX2NoYXIgdGhlbiBjbnQgZWxzZSBsb29wIChwIC0gMSkgKGNudCArIDEpXG4gICAgaW5cbiAgICBsb29wIChwb3MgLSAxKSAwXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgb2RkID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBtb2QgMiA9IDEgaW5cbiAgICBtYXRjaCBvZGQsIENoYXIuZXF1YWwgc3RyLltwb3NdIGVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IHRydWUsICh0cnVlIHwgZmFsc2UpIC0+IGBFc2NhcGVkXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBgRXNjYXBpbmdcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBjaGVja19ib3VuZCBzdHIgcG9zIGZ1bmN0aW9uX25hbWUgPVxuICAgIGlmIHBvcyA+PSBsZW5ndGggc3RyIHx8IHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCIlczogb3V0IG9mIGJvdW5kc1wiIGZ1bmN0aW9uX25hbWUgKClcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGluZyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBpbmdcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGluZyAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBlZCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBlZFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwZWQgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwaW5nIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9saXRlcmFsIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9saXRlcmFsXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpbmRleF9mcm9tXCI7XG4gICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzID1cbiAgICAgIGlmIGkgPj0gcG9zXG4gICAgICAmJiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgJiYgQ2hhci5lcXVhbCBzdHIuW2ldIGNoYXJcbiAgICAgIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGkgPSBpICsgMSBpblxuICAgICAgICBpZiBpID49IGxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgbG9vcCBpICh1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgc3RhdHVzKSlcbiAgICBpblxuICAgIGxvb3AgcG9zIChlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zKVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuICBsZXQgaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG5cbiAgbGV0IHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJyaW5kZXhfZnJvbVwiO1xuICAgICgqIGlmIHRoZSB0YXJnZXQgY2hhciBpcyB0aGUgc2FtZSBhcyBbZXNjYXBlX2NoYXJdLCB3ZSBoYXZlIG5vIHdheSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICBlc2NhcGVfY2hhciBpcyBsaXRlcmFsLCBzbyBqdXN0IHJldHVybiBOb25lICopXG4gICAgaWYgQ2hhci5lcXVhbCBjaGFyIGVzY2FwZV9jaGFyXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMFxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVzY2FwZV9jaGFycyA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgaW5cbiAgICAgICAgICBpZiBlc2NhcGVfY2hhcnMgbW9kIDIgPSAwICYmIENoYXIuZXF1YWwgc3RyLltwb3NdIGNoYXJcbiAgICAgICAgICB0aGVuIFNvbWUgcG9zXG4gICAgICAgICAgZWxzZSBsb29wIChwb3MgLSBlc2NhcGVfY2hhcnMgLSAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIHBvcylcbiAgOztcblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwicmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIGlmIGlzX2VtcHR5IHN0ciB0aGVuIE5vbmUgZWxzZSByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gIGxldCByaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgKCogW3NwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbl0gd29ya3Mgc2ltaWxhcmx5IHRvIFtTdHJpbmcuc3BsaXRfZ2VuXSwgd2l0aCBhblxuICAgICBhZGRpdGlvbmFsIHJlcXVpcmVtZW50OiBvbmx5IHNwbGl0IG9uIGxpdGVyYWwgY2hhcnMsIG5vdCBlc2NhcGluZyBvciBlc2NhcGVkICopXG4gIGxldCBzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b24gPVxuICAgIGxldCBpc19kZWxpbSA9XG4gICAgICBtYXRjaCBvbiB3aXRoXG4gICAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgICBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgcG9zID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBMaXN0LnJldiAoc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KGxlbiAtIGxhc3RfcG9zKSA6OiBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHN0YXR1cyBpblxuICAgICAgICBpZiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgICAmJiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoocG9zIC0gbGFzdF9wb3MpIGluXG4gICAgICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHN0YXR1cyAocG9zICsgMSkgKHBvcyArIDEpKVxuICAgICAgICBlbHNlIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyAocG9zICsgMSkpXG4gICAgaW5cbiAgICBsb29wIFtdIGBMaXRlcmFsIDAgMFxuICA7O1xuXG4gIGxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxuICBsZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG4gIGxldCBzcGxpdF9hdCBzdHIgcG9zID1cbiAgICBzdWIgc3RyIH5wb3M6MCB+bGVuOnBvcywgc3ViIHN0ciB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggc3RyIC0gcG9zIC0gMSlcbiAgOztcblxuICBsZXQgbHNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAoaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCByc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChyaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCBsc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAoaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG4gIGxldCByc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAocmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuXG4gICgqIFtsYXN0X25vbl9kcm9wX2xpdGVyYWxdIGFuZCBbZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYXJlIGVpdGhlciBib3RoIFtOb25lXSBvciBib3RoXG4gICAgIFtTb21lXS4gSWYgW1NvbWVdLCB0aGVuIHRoZSBmb3JtZXIgaXMgPj0gdGhlIGxhdHRlci4gKilcbiAgbGV0IGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgcmZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKVxuICA7O1xuXG4gIGxldCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICBsZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpXG4gIDs7XG5cbiAgbGV0IHJzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbiAgOztcblxuICBsZXQgbHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgMCAtPiB0XG4gICAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG4gIDs7XG5cbiAgKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbiAgbGV0IHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gICAgKCogcGVyZm9ybWFuY2UgaGFjazogYXZvaWQgY29weWluZyBbdF0gaW4gY29tbW9uIGNhc2VzICopXG4gICAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuICA7O1xuZW5kXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuKCogT3ZlcnJpZGUgW1NlYXJjaF9wYXR0ZXJuXSB3aXRoIGRlZmF1bHQgY2FzZS1zZW5zaXRpdml0eSBhcmd1bWVudCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgZmlsZSwgc28gdGhhdCBjYWxsIHNpdGVzIGFib3ZlIGFyZSBmb3JjZWQgdG8gc3VwcGx5IGNhc2Utc2Vuc2l0aXZpdHkgZXhwbGljaXRseS4gKilcbm1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IHN0cnVjdFxuICBpbmNsdWRlIFNlYXJjaF9wYXR0ZXJuMFxuXG4gIGxldCBjcmVhdGUgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpIHBhdHRlcm4gPSBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmVcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChieXRlc19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9ieXRlcyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBieXRlc19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQnl0ZXMwXG5cbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJ5dGVzXCJcbiAgbGV0IHBwIGZtdCB0ID0gQ2FtbC5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiICh0b19zdHJpbmcgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFRvX2J5dGVzID0gQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFQpIChUb19ieXRlcylcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIGVuZClcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgbiAwXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIkJ5dGVzLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gc2V0IHQgaSBjKTtcbiAgdFxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgKGkgLSAxKSAodW5zYWZlX2dldCB0IGkgOjogYWNjKVxuICBpblxuICBsb29wIHQgKGxlbmd0aCB0IC0gMSkgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcbmxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gbWFwaSB0IH5mXG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBwb3MgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzIGkpIHRhcmdldCB0aGVuIHVuc2FmZV9zZXQgcyBpIHJlcGxhY2VtZW50XG4gIGRvbmVcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAwXG4gIHRoZW4gc3RhZ2UgaWdub3JlXG4gIGVsc2UgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgMFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGk6IHJlcGxhY2VtZW50IGlzIHRoZSBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgaWdub3JlXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHMgaSAoU3RyaW5nLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCAodW5zYWZlX2dldCBzIGkpKSlcbiAgICAgICAgZG9uZSkpXG47O1xuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgY29udGFpbnMgP3BvcyA/bGVuIHQgY2hhciA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbGFzdCA9IHBvcyArIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIGxhc3RcbiAgICAmJiAoQ2hhci5lcXVhbCAoZ2V0IHQgaSkgY2hhciB8fCBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIjIDEgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gXG50eXBlIHJlc3VsdCA9XG58IE5lZyBvZiBzdHJpbmdcbnwgUG9zIG9mIHN0cmluZ1xuXG4jIDggXCJzcmMvaGV4X2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDgyXFwwMDBcXDEwNVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBwYXJzZV9oZXggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxMzUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOZWcgYm9keSApXG4jIDEzOSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDE0NSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIFBvcyBib2R5IClcbiMgMTQ5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBjb252ZXJ0X2ZhaWx1cmUgeCBhIGIgdG9fc3RyaW5nID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiY29udmVyc2lvbiBmcm9tICVzIHRvICVzIGZhaWxlZDogJXMgaXMgb3V0IG9mIHJhbmdlXCJcbiAgICBhXG4gICAgYlxuICAgICh0b19zdHJpbmcgeClcbiAgICAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBudW1fYml0c19pbnQgPSBTeXMuaW50X3NpemVfaW5fYml0c1xubGV0IG51bV9iaXRzX2ludDMyID0gMzJcbmxldCBudW1fYml0c19pbnQ2NCA9IDY0XG5sZXQgbnVtX2JpdHNfbmF0aXZlaW50ID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50ID0gNjMgfHwgbnVtX2JpdHNfaW50ID0gMzEgfHwgbnVtX2JpdHNfaW50ID0gMzIpXG5sZXQgbWluX2ludDMyID0gQ2FtbC5JbnQzMi5taW5faW50XG5sZXQgbWF4X2ludDMyID0gQ2FtbC5JbnQzMi5tYXhfaW50XG5sZXQgbWluX2ludDY0ID0gQ2FtbC5JbnQ2NC5taW5faW50XG5sZXQgbWF4X2ludDY0ID0gQ2FtbC5JbnQ2NC5tYXhfaW50XG5sZXQgbWluX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm1pbl9pbnRcbmxldCBtYXhfbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQubWF4X2ludFxubGV0IGludF90b19zdHJpbmcgPSBDYW1sLnN0cmluZ19vZl9pbnRcbmxldCBpbnQzMl90b19zdHJpbmcgPSBDYW1sLkludDMyLnRvX3N0cmluZ1xubGV0IGludDY0X3RvX3N0cmluZyA9IENhbWwuSW50NjQudG9fc3RyaW5nXG5sZXQgbmF0aXZlaW50X3RvX3N0cmluZyA9IENhbWwuTmF0aXZlaW50LnRvX3N0cmluZ1xuXG4oKiBpbnQgPC0+IGludDMyICopXG5cbmxldCBpbnRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnRcIiBcImludDMyXCIgaW50X3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDMyXCIgXCJpbnRcIiBpbnQzMl90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfdHJ1bmMgPSBDYW1sLkludDMyLnRvX2ludFxubGV0IGludF90b19pbnQzMl90cnVuYyA9IENhbWwuSW50MzIub2ZfaW50XG5cbmxldCBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX2ludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX2ludF90cnVuYyBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9faW50X3RydW5jIG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQzMiBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50MzIgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnRfdG9faW50MzIgeCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50MzJfdG9faW50IHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50MzJfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBpbnRfdG9faW50MzJfdHJ1bmMgeCBlbHNlIGludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbmxldCBpbnQzMl90b19pbnRfZXhuIHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50MzJfdG9faW50X3RydW5jIHggZWxzZSBpbnQzMl90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludF90b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfaW50XG5sZXQgaW50NjRfdG9faW50X3RydW5jID0gQ2FtbC5JbnQ2NC50b19pbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgbGV0IG1pbiA9IGludF90b19pbnQ2NCBJbnQubWluX3ZhbHVlIGluXG4gIGxldCBtYXggPSBpbnRfdG9faW50NjQgSW50Lm1heF92YWx1ZSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50IHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50NjRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludF9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBpbnQ2NF90b19pbnRfdHJ1bmMgeCBlbHNlIGludDY0X3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludCA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnRcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50X3RvX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm9mX2ludFxubGV0IG5hdGl2ZWludF90b19pbnRfdHJ1bmMgPSBDYW1sLk5hdGl2ZWludC50b19pbnRcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9fbmF0aXZlaW50IEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX25hdGl2ZWludCBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50X3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQzMlwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludDMyX3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9pbnQzMlxubGV0IGludDY0X3RvX2ludDMyX3RydW5jID0gQ2FtbC5JbnQ2NC50b19pbnQzMlxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGxldCBtaW4gPSBpbnQzMl90b19pbnQ2NCBtaW5faW50MzIgaW5cbiAgbGV0IG1heCA9IGludDMyX3RvX2ludDY0IG1heF9pbnQzMiBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzIgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gaW50NjRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9XG4gIGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnQzMlwiIG5hdGl2ZWludF90b19zdHJpbmdcbjs7XG5cbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDMyX3RvX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm9mX2ludDMyXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX3RydW5jID0gQ2FtbC5OYXRpdmVpbnQudG9faW50MzJcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludDMyXG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50MzJfdG9fbmF0aXZlaW50IG1pbl9pbnQzMiBpblxuICAgIGxldCBtYXggPSBpbnQzMl90b19uYXRpdmVpbnQgbWF4X2ludDMyIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMiB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIFNvbWUgKG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gbmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwibmF0aXZlaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDY0ID49IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgPSBDYW1sLkludDY0LnRvX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF90b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfbmF0aXZlaW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCA9XG4gIGlmIG51bV9iaXRzX2ludDY0IDw9IG51bV9iaXRzX25hdGl2ZWludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IG5hdGl2ZWludF90b19pbnQ2NCBtaW5fbmF0aXZlaW50IGluXG4gICAgbGV0IG1heCA9IG5hdGl2ZWludF90b19pbnQ2NCBtYXhfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBTb21lIChpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IGludDYzICopXG5cbmxldCBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQ2M1wiIGludDY0X3RvX3N0cmluZ1xuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyA9XG4gIGxldCBtaW4gPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IG1pbl9pbnQ2NCAxIGluXG4gIGxldCBtYXggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IG1heF9pbnQ2NCAxIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF9maXRfb25faW50NjNfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiAoKSBlbHNlIGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeFxuOztcblxuKCogc3RyaW5nIGNvbnZlcnNpb25zICopXG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgPVxuICBsZXQgaW5wdXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBpZiBpbnB1dF9sZW5ndGggPD0gY2hhcnNfcGVyX2RlbGltaXRlclxuICB0aGVuIGlucHV0XG4gIGVsc2UgKFxuICAgIGxldCBoYXNfc2lnbiA9XG4gICAgICBtYXRjaCBpbnB1dC5bMF0gd2l0aFxuICAgICAgfCAnKycgfCAnLScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgbnVtX2RpZ2l0cyA9IGlmIGhhc19zaWduIHRoZW4gaW5wdXRfbGVuZ3RoIC0gMSBlbHNlIGlucHV0X2xlbmd0aCBpblxuICAgIGxldCBudW1fZGVsaW1pdGVycyA9IChudW1fZGlnaXRzIC0gMSkgLyBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IG91dHB1dF9sZW5ndGggPSBpbnB1dF9sZW5ndGggKyBudW1fZGVsaW1pdGVycyBpblxuICAgIGxldCBvdXRwdXQgPSBCeXRlcy5jcmVhdGUgb3V0cHV0X2xlbmd0aCBpblxuICAgIGxldCBpbnB1dF9wb3MgPSByZWYgKGlucHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG91dHB1dF9wb3MgPSByZWYgKG91dHB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gcmVmIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgZmlyc3RfZGlnaXRfcG9zID0gaWYgaGFzX3NpZ24gdGhlbiAxIGVsc2UgMCBpblxuICAgIHdoaWxlICFpbnB1dF9wb3MgPj0gZmlyc3RfZGlnaXRfcG9zIGRvXG4gICAgICBpZiAhbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGRlbGltaXRlcjtcbiAgICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgICBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIDo9IGNoYXJzX3Blcl9kZWxpbWl0ZXIpO1xuICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBpbnB1dC5bIWlucHV0X3Bvc107XG4gICAgICBkZWNyIGlucHV0X3BvcztcbiAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgIGRlY3IgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlclxuICAgIGRvbmU7XG4gICAgaWYgaGFzX3NpZ24gdGhlbiBCeXRlcy5zZXQgb3V0cHV0IDAgaW5wdXQuWzBdO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0cHV0KVxuOztcblxubGV0IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlciA9XG4gIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlcjozXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzIGlucHV0ID0gaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyOidfJ1xubGV0IHNleHBfb2ZfaW50X3N0eWxlID0gU2V4cC5vZl9pbnRfc3R5bGVcblxubW9kdWxlIE1ha2UgKEkgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIElcblxuICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDNcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9XG4gICAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAodG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHQgaW5cbiAgICBTZXhwLkF0b21cbiAgICAgIChtYXRjaCAhc2V4cF9vZl9pbnRfc3R5bGUgd2l0aFxuICAgICAgIHwgYFVuZGVyc2NvcmVzIC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgcyB+Y2hhcnNfcGVyX2RlbGltaXRlciB+ZGVsaW1pdGVyOidfJ1xuICAgICAgIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaGV4IChJIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRfaGV4ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoSS5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIEkuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gSS5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gNFxuXG4gICAgbGV0IHRvX3N0cmluZycgP2RlbGltaXRlciB0ID1cbiAgICAgIGxldCBtYWtlX3N1ZmZpeCA9XG4gICAgICAgIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJLnRvX3N0cmluZ1xuICAgICAgICB8IFNvbWUgZGVsaW1pdGVyIC0+XG4gICAgICAgICAgZnVuIHQgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAoSS50b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICAgICAgaW5cbiAgICAgIGlmIEkuKCA8ICkgdCBJLnplcm8gdGhlbiBcIi0weFwiIF4gbWFrZV9zdWZmaXggKEkubmVnIHQpIGVsc2UgXCIweFwiIF4gbWFrZV9zdWZmaXggdFxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmcnIHQgP2RlbGltaXRlcjpOb25lXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPSB0b19zdHJpbmcnIHQgfmRlbGltaXRlclxuXG4gICAgbGV0IGludmFsaWQgc3RyID1cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCIlcy5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiBJLm1vZHVsZV9uYW1lIHN0ciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIHN0ciA9XG4gICAgICBJLm9mX3N0cmluZyAoU3RyaW5nLmZpbHRlciBzdHIgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgJ18nKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgICAgbGV0IG1vZHVsZSBMID0gSGV4X2xleGVyIGluXG4gICAgICBsZXQgbGV4ID0gQ2FtbC5MZXhpbmcuZnJvbV9zdHJpbmcgc3RyIGluXG4gICAgICBsZXQgcmVzdWx0ID0gT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTC5wYXJzZV9oZXggbGV4KSBpblxuICAgICAgaWYgbGV4LmxleF9jdXJyX3BvcyA9IGxleC5sZXhfYnVmZmVyX2xlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkIHN0clxuICAgICAgICB8IFNvbWUgKE5lZyBib2R5KSAtPiBJLm5lZyAob2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICAgIHwgU29tZSAoUG9zIGJvZHkpIC0+IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgZWxzZSBpbnZhbGlkIHN0clxuICAgIDs7XG5cbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGV4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBUX2hleFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVF9oZXgpXG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgd2FzIGF1dG9nZW5lcmF0ZWQgYnkgLi4vZ2VuZXJhdGUvZ2VuZXJhdGVfcG93X292ZXJmbG93X2JvdW5kcy5leGUgKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBoYXZlIHRvIHVzZSBJbnQ2NC50b19pbnRfZXhuIGluc3RlYWQgb2YgaW50IGNvbnN0YW50cyB0byBtYWtlXG4gICBzdXJlIHRoYXQgZmlsZSBjYW4gYmUgcHJlcHJvY2Vzc2VkIG9uIDMyLWJpdCBtYWNoaW5lcy4gKilcblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQzMl92YWx1ZSA6IGludDMyID1cbiAgMjE0NzQ4MzY0N2xcblxubGV0IGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDMyIGFycmF5ID1cbiAgW3wgMjE0NzQ4MzY0N2xcbiAgOyAgMjE0NzQ4MzY0N2xcbiAgOyAgNDYzNDBsXG4gIDsgIDEyOTBsXG4gIDsgIDIxNWxcbiAgOyAgNzNsXG4gIDsgIDM1bFxuICA7ICAyMWxcbiAgOyAgMTRsXG4gIDsgIDEwbFxuICA7ICA4bFxuICA7ICA3bFxuICA7ICA1bFxuICA7ICA1bFxuICA7ICA0bFxuICA7ICA0bFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludF92YWx1ZSA6IGludCA9XG4gICgtMSkgbHNyIDFcblxubGV0IGludF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQgYXJyYXkgPVxuICBtYXRjaCBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50IHdpdGhcbiAgfCAzMiAtPiBBcnJheS5tYXAgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIH5mOkNhbWwuSW50MzIudG9faW50XG4gIHwgNjMgLT5cbiAgICBbfCBDYW1sLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIENhbWwuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgQ2FtbC5JbnQ2NC50b19pbnQgMjE0NzQ4MzY0N0xcbiAgICA7ICAxNjY0NTEwXG4gICAgOyAgNDYzNDBcbiAgICA7ICA1NDA0XG4gICAgOyAgMTI5MFxuICAgIDsgIDQ2M1xuICAgIDsgIDIxNVxuICAgIDsgIDExOFxuICAgIDsgIDczXG4gICAgOyAgNDlcbiAgICA7ICAzNVxuICAgIDsgIDI3XG4gICAgOyAgMjFcbiAgICA7ICAxN1xuICAgIDsgIDE0XG4gICAgOyAgMTJcbiAgICA7ICAxMFxuICAgIDsgIDlcbiAgICA7ICA4XG4gICAgOyAgN1xuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgMzEgLT5cbiAgICBbfCAxMDczNzQxODIzXG4gICAgOyAgMTA3Mzc0MTgyM1xuICAgIDsgIDMyNzY3XG4gICAgOyAgMTAyM1xuICAgIDsgIDE4MVxuICAgIDsgIDYzXG4gICAgOyAgMzFcbiAgICA7ICAxOVxuICAgIDsgIDEzXG4gICAgOyAgMTBcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDQ2MTE2ODYwMTg0MjczODc5MDNMXG5cbmxldCBpbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDIxNDc0ODM2NDdMXG4gIDsgIDE2NjQ1MTBMXG4gIDsgIDQ2MzQwTFxuICA7ICA1NDA0TFxuICA7ICAxMjkwTFxuICA7ICA0NjNMXG4gIDsgIDIxNUxcbiAgOyAgMTE4TFxuICA7ICA3M0xcbiAgOyAgNDlMXG4gIDsgIDM1TFxuICA7ICAyN0xcbiAgOyAgMjFMXG4gIDsgIDE3TFxuICA7ICAxNExcbiAgOyAgMTJMXG4gIDsgIDEwTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuXG5sZXQgaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAzMDM3MDAwNDk5TFxuICA7ICAyMDk3MTUxTFxuICA7ICA1NTEwOExcbiAgOyAgNjIwOExcbiAgOyAgMTQ0OExcbiAgOyAgNTExTFxuICA7ICAyMzRMXG4gIDsgIDEyN0xcbiAgOyAgNzhMXG4gIDsgIDUyTFxuICA7ICAzOExcbiAgOyAgMjhMXG4gIDsgIDIyTFxuICA7ICAxOExcbiAgOyAgMTVMXG4gIDsgIDEzTFxuICA7ICAxMUxcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgfF1cblxubGV0IGludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtMzAzNzAwMDQ5OUxcbiAgOyAgLTIwOTcxNTFMXG4gIDsgIC01NTEwOExcbiAgOyAgLTYyMDhMXG4gIDsgIC0xNDQ4TFxuICA7ICAtNTExTFxuICA7ICAtMjM0TFxuICA7ICAtMTI3TFxuICA7ICAtNzhMXG4gIDsgIC01MkxcbiAgOyAgLTM4TFxuICA7ICAtMjhMXG4gIDsgIC0yMkxcbiAgOyAgLTE4TFxuICA7ICAtMTVMXG4gIDsgIC0xM0xcbiAgOyAgLTExTFxuICA7ICAtOUxcbiAgOyAgLThMXG4gIDsgIC03TFxuICA7ICAtN0xcbiAgOyAgLTZMXG4gIDsgIC02TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0xTFxuICB8XVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgbmVnYXRpdmVfZXhwb25lbnQgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiZXhwb25lbnQgY2FuIG5vdCBiZSBuZWdhdGl2ZVwiICgpXG5sZXQgb3ZlcmZsb3cgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiaW50ZWdlciBvdmVyZmxvdyBpbiBwb3dcIiAoKVxuXG4oKiBUbyBpbXBsZW1lbnQgW2ludDY0X3Bvd10sIHdlIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gT0NhbWwgdG8gZWxpbWluYXRlIGFsbG9jYXRpb24uICopXG5leHRlcm5hbCBpbnRfbWF0aF9pbnRfcG93IDogaW50IC0+IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGludF9tYXRoX2ludDY0X3BvdyA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViXCJcblxubGV0IGludF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGlmIGV4cG9uZW50IDwgMCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFcbiAgJiYgKGV4cG9uZW50ID4gNjNcbiAgICAgIHx8IGFicyBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLihleHBvbmVudCkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIEludDY0X3dpdGhfY29tcGFyaXNvbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW1sLkludDY0XG5cbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPj0gKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZW5kXG5cbigqIHdlIGRvbid0IGRvIFthYnNdIGluIGludDY0IGNhc2UgdG8gYXZvaWQgYWxsb2NhdGlvbiAqKVxubGV0IGludDY0X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIChiYXNlID4gMUwgfHwgYmFzZSA8IC0xTClcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCAoYmFzZSA+PSAwTFxuICAgICAgICAgICYmIGJhc2UgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICAgICAgKVxuICAgICAgfHwgKGJhc2UgPCAwTFxuICAgICAgICAgICYmIGJhc2UgPCBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICAgICAgKSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbmxldCBpbnQ2M19wb3dfb25faW50NjQgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFMXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgYWJzIGJhc2VcbiAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBGbG9hdGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCB+LSApIDogdCAtPiB0XG5cbiAgaW5jbHVkZSBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChYIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG9wZW4gWFxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IFgucmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0IG9uZSA9IG9mX2ludF9leG4gMVxuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICAoKiogZmxvYXQgZGl2aXNpb24gb2YgaW50ZWdlcnMgKilcbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBsZXQgcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID0gaSAtIChpICUgbW9kdWx1cylcblxuICBsZXQgcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgaWYgcmVtYWluZGVyID0gemVybyB0aGVuIGkgZWxzZSBpICsgbW9kdWx1cyAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIGlmIGkgPSB6ZXJvXG4gICAgdGhlbiB6ZXJvXG4gICAgZWxzZSBpZiBpID4gemVyb1xuICAgIHRoZW4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIGVsc2Ugcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcblxuICBsZXQgcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBsZXQgbW9kdWx1c19taW51c19yZW1haW5kZXIgPSBtb2R1bHVzIC0gcmVtYWluZGVyIGluXG4gICAgaWYgbW9kdWx1c19taW51c19yZW1haW5kZXIgPD0gcmVtYWluZGVyXG4gICAgdGhlbiBpICsgbW9kdWx1c19taW51c19yZW1haW5kZXJcbiAgICBlbHNlIGkgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgRG93biAtPiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgVXAgLT4gcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpbnRfcG93ID0gaW50X3Bvd1xuICBsZXQgaW50NjRfcG93ID0gaW50NjRfcG93XG4gIGxldCBpbnQ2M19wb3dfb25faW50NjQgPSBpbnQ2M19wb3dfb25faW50NjRcblxuICBtb2R1bGUgUG93X292ZXJmbG93X2JvdW5kcyA9IFBvd19vdmVyZmxvd19ib3VuZHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIEMgc3R1YiBmb3IgaW50IHBvcGNvdW50IHRvIHVzZSB0aGUgUE9QQ05UIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG5leHRlcm5hbCBpbnRfcG9wY291bnQgOiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudFwiIFtAQG5vYWxsb2NdXG5cbigqIFRvIG1haW50YWluIGphdmFzY3JpcHQgY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIHVuYm94aW5nLCB3ZSBpbXBsZW1lbnQgcG9wY291bnQgaW5cbiAgIE9DYW1sIHJhdGhlciB0aGFuIHVzZSBDIHN0dWJzLiBJbXBsZW1lbnRhdGlvbiBhZGFwdGVkIGZyb206XG4gICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYW1taW5nX3dlaWdodCNFZmZpY2llbnRfaW1wbGVtZW50YXRpb24gKilcbmxldCBpbnQ2NF9wb3Bjb3VudCA9XG4gIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgbGV0ICggKyApID0gYWRkIGluXG4gIGxldCAoIC0gKSA9IHN1YiBpblxuICBsZXQgKCAqICkgPSBtdWwgaW5cbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsIGluXG4gIGxldCAoIGxhbmQgKSA9IGxvZ2FuZCBpblxuICBsZXQgbTEgPSAweDU1NTU1NTU1NTU1NTU1NTVMIGluXG4gICgqIDBiMDEwMTAxMDEuLi4gKilcbiAgbGV0IG0yID0gMHgzMzMzMzMzMzMzMzMzMzMzTCBpblxuICAoKiAwYjAwMTEwMDExLi4uICopXG4gIGxldCBtNCA9IDB4MGYwZjBmMGYwZjBmMGYwZkwgaW5cbiAgKCogMGIwMDAwMTExMS4uLiAqKVxuICBsZXQgaDAxID0gMHgwMTAxMDEwMTAxMDEwMTAxTCBpblxuICAoKiAxIGJpdCBzZXQgcGVyIGJ5dGUgKilcbiAgZnVuIFtAaW5saW5lXSB4IC0+XG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IHBhaXIgb2YgYml0cyAqKVxuICAgIGxldCB4ID0geCAtICgoeCBsc3IgMSkgbGFuZCBtMSkgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgNCBiaXRzICopXG4gICAgbGV0IHggPSAoeCBsYW5kIG0yKSArICgoeCBsc3IgMikgbGFuZCBtMikgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgYnl0ZSAqKVxuICAgIGxldCB4ID0gKHggKyAoeCBsc3IgNCkpIGxhbmQgbTQgaW5cbiAgICAoKiBzdW0gdGhlIGJpdCBjb3VudHMgaW4gdGhlIHRvcCBieXRlIGFuZCBzaGlmdCBpdCBkb3duICopXG4gICAgdG9faW50ICgoeCAqIGgwMSkgbHNyIDU2KVxuOztcblxubGV0IGludDMyX3BvcGNvdW50ID1cbiAgKCogT24gNjQtYml0IHN5c3RlbXMsIHRoaXMgaXMgZmFzdGVyIHRoYW4gaW1wbGVtZW50aW5nIHVzaW5nIFtpbnQzMl0gYXJpdGhtZXRpYy4gKilcbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZkwgaW5cbiAgZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChDYW1sLkludDY0LmxvZ2FuZCAoQ2FtbC5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrKVxuOztcblxubGV0IG5hdGl2ZWludF9wb3Bjb3VudCA9XG4gIG1hdGNoIENhbWwuTmF0aXZlaW50LnNpemUgd2l0aFxuICB8IDMyIC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQzMl9wb3Bjb3VudCAoQ2FtbC5OYXRpdmVpbnQudG9faW50MzIgeClcbiAgfCA2NCAtPiBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKENhbWwuSW50NjQub2ZfbmF0aXZlaW50IHgpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2lnbjBcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFNpZ24wKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTEuXG4gIHwgWmVybyAtPiAwLlxuICB8IFBvcyAtPiAxLlxuOztcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9IG9mX2ludCAodG9faW50IHQgKiB0b19pbnQgdCcpXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGF0IHRoZSBlbmQsIGFmdGVyIGFueVxuICAgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc29cbiAgIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpc1xuICAgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRfaW50ZlxuaW5jbHVkZSBJbnQwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSB4IHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgeCB5XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgIHwgXyAtPiBQcmludGYuZmFpbHdpdGhmIFwiSW50Lm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuZW5kXG5cbmxldCBudW1fYml0cyA9IEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHRvX2Zsb2F0ID0gQ2FtbC5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBDYW1sLmludF9vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBDYW1sLmludF9vZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiV4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIleFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIG9mX2ludDMyX3RydW5jIDogaW50MzIgLT4gdCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcblxubGV0IHByZWQgaSA9IGkgLSAxXG5sZXQgc3VjYyBpID0gaSArIDFcbmxldCB0b19pbnQgaSA9IGlcbmxldCB0b19pbnRfZXhuID0gdG9faW50XG5sZXQgb2ZfaW50IGkgPSBpXG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IG1heF92YWx1ZSA9IENhbWwubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IENhbWwubWluX2ludFxubGV0IG1heF92YWx1ZV8zMF9iaXRzID0gMHgzRkZGX0ZGRkZcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgb2ZfaW50MzJfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50MzIgPSBDb252LmludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCB0b19pbnQ2NCA9IENvbnYuaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgYWJzIHggPSBhYnMgeFxuXG4oKiBub3RlIHRoYXQgcmVtIGlzIG5vdCBzYW1lIGFzICUgKilcbmxldCByZW0gYSBiID0gYSBtb2QgYlxubGV0IGluY3IgPSBDYW1sLmluY3JcbmxldCBkZWNyID0gQ2FtbC5kZWNyXG5sZXQgc2hpZnRfcmlnaHQgYSBiID0gYSBhc3IgYlxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYSBiID0gYSBsc3IgYlxubGV0IHNoaWZ0X2xlZnQgYSBiID0gYSBsc2wgYlxubGV0IGJpdF9ub3QgYSA9IGxub3QgYVxubGV0IGJpdF9vciBhIGIgPSBhIGxvciBiXG5sZXQgYml0X2FuZCBhIGIgPSBhIGxhbmQgYlxubGV0IGJpdF94b3IgYSBiID0gYSBseG9yIGJcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludF9wb3dcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCAtIDEgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggKyAxXG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4IC0gKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCAoeCAtIDEpID0gMFxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoKiBOb3RlIHRoYXQgd2UgcGFzcyB0aGUgdGFnZ2VkIGludCBoZXJlLiBTZWUgaW50X21hdGhfc3R1YnMuYyBmb3IgZGV0YWlscyBvbiB3aHlcbiAgICAgICAgICB0aGlzIGlzIGNvcnJlY3QuICopXG4gICAgaW50XG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2Nsel91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludFtAdW50YWdnZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jdHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBpZiBpID0gMSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoaSAtIDEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBzaWduID0gU2lnbi5vZl9pbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludF9wb3Bjb3VudFxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG4gIGV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuICBleHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbiAgZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG4gIGV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogdCAtPiB0ID0gXCIlbmVnaW50XCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIG1vZHVsZSBGID0gSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBGXG5cbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcblxuICAoKiBUaGVzZSBpbmxpbmVkIHZlcnNpb25zIG9mICglKSwgKC8lKSwgYW5kICgvLykgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aGVpciBmdW5jdG9yaXplZFxuICAgICBjb3VudGVycGFydHMgaW4gW0ZdIChzZWUgYmVuY2htYXJrcyBiZWxvdykuXG5cbiAgICAgVGhlIHJlYXNvbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZWQgaW4gW0ludF0gYnV0IG5vdCBpbiBhbnkgb2YgdGhlIG90aGVyIGludGVnZXJcbiAgICAgbW9kdWxlcyBpcyB0aGF0IHRoZXkgZXhpc3RlZCBpbiBbSW50XSBhbmQgW0ludF0gYWxvbmUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZlxuICAgICB0aGUgW0ludF9tYXRoLk1ha2VdIGZ1bmN0b3IsIGFuZCB3ZSBkaWRuJ3Qgd2FudCB0byBkZWdyYWRlIHRoZWlyIHBlcmZvcm1hbmNlLlxuXG4gICAgIFdlIHdvbid0IHByZS1lbXB0aXZlbHkgZG8gdGhlIHNhbWUgZm9yIG5ldyBmdW5jdGlvbnMsIHVubGVzcyBzb21lb25lIGNhcmVzLCBvbiBhIGNhc2VcbiAgICAgYnkgY2FzZSBmYXNoaW9uLiAgKilcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gcmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuICBleHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG4gIGV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG4gIGxldCBsbm90ID0gbG5vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG4gIGV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG4gIGV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnRdIGFuZCBbSW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9fRiA9IE8uRlxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBpbmNsdWRpbmcgZnVuY3RvclxuICAgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFVjaGFyMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5VY2hhclwiXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gSGFzaC5mb2xkX2ludCBzdGF0ZSAodG9faW50IHQpXG4gIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGxldCB0b19zdHJpbmcgdCA9IFByaW50Zi5zcHJpbnRmIFwiVSslMDRYXCIgKHRvX2ludCB0KVxuXG4gICgqIERvIG5vdCBhY3R1YWxseSBleHBvcnQgdGhpcy4gU2VlIGRpc2N1c3Npb24gaW4gdGhlIC5tbGkgKilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IENhbWwuU2NhbmYuc3NjYW5mIHMgXCJVKyVYXCIgKGZ1biBpIC0+IFVjaGFyMC5vZl9pbnQgaSkgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG9mIHRoZSBmb3JtIFUrWFhYWCBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGludF9pc19zY2FsYXIgPSBpc192YWxpZFxuXG5sZXQgc3VjY19leG4gYyA9XG4gIHRyeSBVY2hhcjAuc3VjYyBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5zdWNjX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBzdWNjIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnN1Y2MgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgcHJlZF9leG4gYyA9XG4gIHRyeSBVY2hhcjAucHJlZCBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5wcmVkX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBwcmVkIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnByZWQgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgb2Zfc2NhbGFyIGkgPSBpZiBpbnRfaXNfc2NhbGFyIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2Zfc2NhbGFyX2V4biBpID1cbiAgaWYgaW50X2lzX3NjYWxhciBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIub2ZfaW50X2V4biBnb3QgYSBpbnZhbGlkIFVuaWNvZGUgc2NhbGFyIHZhbHVlOiAlMDRYXCIgaSAoKVxuOztcblxubGV0IHRvX3NjYWxhciB0ID0gVWNoYXIwLnRvX2ludCB0XG5sZXQgdG9fY2hhciBjID0gaWYgaXNfY2hhciBjIHRoZW4gU29tZSAodW5zYWZlX3RvX2NoYXIgYykgZWxzZSBOb25lXG5cbmxldCB0b19jaGFyX2V4biBjID1cbiAgaWYgaXNfY2hhciBjXG4gIHRoZW4gdW5zYWZlX3RvX2NoYXIgY1xuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLnRvX2NoYXJfZXhuIGdvdCBhIG5vbiBsYXRpbi0xIGNoYXJhY3RlcjogVSslMDRYXCIgKHRvX2ludCBjKSAoKVxuOztcblxubGV0IHV0ZjhfYnl0ZV9sZW5ndGggdWNoYXIgPVxuICBsZXQgY29kZXBvaW50ID0gdG9fc2NhbGFyIHVjaGFyIGluXG4gIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODAwXG4gIHRoZW4gMlxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHgxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSA0XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2EpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDAzXyBiX18wMDRfKVxuICAgICAgOiAgKChhX18wMDNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMDNfLCBiX18wMDRfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gVCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJUXCJcbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IHN5bSAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGIsIGEpIHQgPSBUXG5sZXQgdHJhbnMgKHR5cGUgYSBiIGMpIChUIDogKGEsIGIpIHQpIChUIDogKGIsIGMpIHQpIDogKGEsIGMpIHQgPSBUXG5sZXQgY29udiAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIChhIDogYSkgOiBiID0gYVxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuXG5tb2R1bGUgTGlmdDIgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpXG4gICAgOiAoKGExLCBhMikgWC50LCAoYjEsIGIyKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbm1vZHVsZSBMaWZ0MyAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIgYTMgYjMpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSAoVCA6IChhMywgYjMpIHQpXG4gICAgOiAoKGExLCBhMiwgYTMpIFgudCwgKGIxLCBiMiwgYjMpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubGV0IGRldHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSAqIGEyLCBiMSAqIGIyKSB0KSA6IChhMSwgYjEpIHQgKiAoYTIsIGIyKSB0ID1cbiAgVCwgVFxuOztcblxubGV0IHR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIDogKGExICogYTIsIGIxICogYjIpIHQgPSBUXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgc3RyaXAgOiAoJ2EgdCwgJ2IgdCkgZXF1YWwgLT4gKCdhLCAnYikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0XG5cbiAgdmFsIHN0cmlwIDogKCgnYTEsICdhMikgdCwgKCdiMSwgJ2IyKSB0KSBlcXVhbCAtPiAoJ2ExLCAnYjEpIGVxdWFsICogKCdhMiwgJ2IyKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSBDb21wb3NpdGlvbl9wcmVzZXJ2ZXNfaW5qZWN0aXZpdHkgKE0xIDogSW5qZWN0aXZlKSAoTTIgOiBJbmplY3RpdmUpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE0xLnQgTTIudFxuXG4gIGxldCBzdHJpcCBlID0gTTEuc3RyaXAgKE0yLnN0cmlwIGUpXG5lbmRcblxubW9kdWxlIElkID0gc3RydWN0XG4gIG1vZHVsZSBVaWQgPSBJbnRcblxuICBtb2R1bGUgV2l0bmVzcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgXyB0ID0gLi5cbiAgICAgIHR5cGUgdHlwZV93aXRuZXNzX2ludCA9IFsgYHR5cGVfd2l0bmVzcyBvZiBpbnQgXSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgbGV0IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludCA9XG4gICAgICAgIChmdW4gKGB0eXBlX3dpdG5lc3Mgdl9fMDA1XykgLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidHlwZV93aXRuZXNzXCI7IHNleHBfb2ZfaW50IHZfXzAwNV8gXVxuICAgICAgICAgICA6IHR5cGVfd2l0bmVzc19pbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgOztcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCBfc2V4cF9vZl9hIHQgPVxuICAgICAgICBgdHlwZV93aXRuZXNzXG4gICAgICAgICAgKENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KSlcbiAgICAgICAgfD4gc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgc2V4cF9vZl90ICh0eXBlIGEpIHNleHBfb2ZfYSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgTS5LZXkgfD4gS2V5LnNleHBfb2ZfdCBzZXhwX29mX2FcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSB0KSAoKSA9XG4gICAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdWlkICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgTS5LZXkpXG4gICAgOztcblxuICAgICgqIFdlIHdhbnQgYSBjb25zdGFudCBhbGxvY2F0ZWQgb25jZSB0aGF0IFtzYW1lXSBjYW4gcmV0dXJuIHdoZW5ldmVyIGl0IGdldHMgdGhlIHNhbWVcbiAgICAgICB3aXRuZXNzZXMuICBJZiB3ZSB3cml0ZSB0aGUgY29uc3RhbnQgaW5zaWRlIHRoZSBib2R5IG9mIFtzYW1lXSwgdGhlIG5hdGl2ZS1jb2RlXG4gICAgICAgY29tcGlsZXIgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kIGxpZnQgaXQgb3V0LiAgQnV0IGZvciBjbGFyaXR5IGFuZCByb2J1c3RuZXNzLFxuICAgICAgIHdlIGRvIGl0IG91cnNlbHZlcy4gKilcbiAgICBsZXQgc29tZV90ID0gU29tZSBUXG5cbiAgICBsZXQgc2FtZSAodHlwZSBhIGIpIChhIDogYSB0KSAoYiA6IGIgdCkgOiAoYSwgYikgZXF1YWwgb3B0aW9uID1cbiAgICAgIGxldCBtb2R1bGUgQSA9ICh2YWwgYSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBCID0gKHZhbCBiIDogUyB3aXRoIHR5cGUgdCA9IGIpIGluXG4gICAgICBtYXRjaCBBLktleSB3aXRoXG4gICAgICB8IEIuS2V5IC0+IHNvbWVfdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuICBlbmRcblxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3aXRuZXNzIDogJ2EgV2l0bmVzcy50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyB0b19zZXhwIDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgXyB7IHdpdG5lc3M7IG5hbWU7IHRvX3NleHAgfSA6IFNleHAudCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gQXRvbSBuYW1lXG4gICAgZWxzZVxuICAgICAgTGlzdFxuICAgICAgICBbIExpc3QgWyBBdG9tIFwibmFtZVwiOyBBdG9tIG5hbWUgXVxuICAgICAgICA7IExpc3QgWyBBdG9tIFwid2l0bmVzc1wiOyB3aXRuZXNzIHw+IFdpdG5lc3Muc2V4cF9vZl90IHRvX3NleHAgXVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3NleHAgdCA9IHQudG9fc2V4cFxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBjcmVhdGUgfm5hbWUgdG9fc2V4cCA9IHsgd2l0bmVzcyA9IFdpdG5lc3MuY3JlYXRlICgpOyBuYW1lOyB0b19zZXhwIH1cbiAgbGV0IHVpZCB0ID0gV2l0bmVzcy51aWQgdC53aXRuZXNzXG4gIGxldCBoYXNoIHQgPSB1aWQgdFxuICBsZXQgaGFzaF9mb2xkX3QgcyB0ID0gaGFzaF9mb2xkX2ludCBzICh1aWQgdClcbiAgbGV0IHNhbWVfd2l0bmVzcyB0MSB0MiA9IFdpdG5lc3Muc2FtZSB0MS53aXRuZXNzIHQyLndpdG5lc3NcbiAgbGV0IHNhbWUgdDEgdDIgPSBPcHRpb24uaXNfc29tZSAoc2FtZV93aXRuZXNzIHQxIHQyKVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIHQxIHQyID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgdDEgdDIgd2l0aFxuICAgIHwgU29tZSB3IC0+IHdcbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIlR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBnb3QgZGlmZmVyZW50IGlkc1wiXG4gICAgICAgICAgIFsgKCBcIlwiXG4gICAgICAgICAgICAgLCBzZXhwX29mX3BhaXIgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHQxLCB0MilcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIF0pXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogWydhIENoZWFwX29wdGlvbi50XSBpcyBsaWtlIFsnYSBvcHRpb25dLCBidXQgaXQgZG9lc24ndCBib3ggW3NvbWUgX10gdmFsdWVzLlxuXG4gICAgVGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHRoYXQgYXJlIHVuc2FmZSBhYm91dCBpdDpcblxuICAgIC0gW2Zsb2F0IHQgYXJyYXldIChvciBhbnkgYXJyYXktYmFja2VkIGNvbnRhaW5lcikgaXMgbm90IG1lbW9yeS1zYWZlXG4gICAgICBiZWNhdXNlIGZsb2F0IGFycmF5IG9wdGltaXphdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB1bmJveGVkIG9wdGlvblxuICAgICAgb3B0aW1pemF0aW9uLiBZb3UgaGF2ZSB0byB1c2UgW1VuaWZvcm1fYXJyYXkudF0gaW5zdGVhZCBvZiBbYXJyYXldLlxuXG4gICAgLSBOZXN0ZWQgb3B0aW9ucyAoWydhIHQgdF0pIGRvbid0IHdvcmsuIFRoZXkgYXJlIGJlbGlldmVkIHRvIGJlXG4gICAgICBtZW1vcnktc2FmZSwgYnV0IG5vdCBwYXJhbWV0cmljLlxuXG4gICAgLSBBIHJlY29yZCB3aXRoIFtmbG9hdCB0XXMgaW4gaXQgc2hvdWxkIGJlIHNhZmUsIGJ1dCBpdCdzIG9ubHkgW3RdIGJlaW5nXG4gICAgICBhYnN0cmFjdCB0aGF0IGdpdmVzIHlvdSBzYWZldHkuIElmIHRoZSBjb21waWxlciB3YXMgc21hcnQgZW5vdWdoIHRvIHBlZWtcbiAgICAgIHRocm91Z2ggdGhlIG1vZHVsZSBzaWduYXR1cmUgdGhlbiBpdCBjb3VsZCBkZWNpZGUgdG8gY29uc3RydWN0IGEgZmxvYXRcbiAgICAgIGFycmF5IGluc3RlYWQuICopXG5tb2R1bGUgQ2hlYXBfb3B0aW9uID0gc3RydWN0XG4gICgqIFRoaXMgaXMgdGFrZW4gZnJvbSBjb3JlLiBSYXRoZXIgdGhhbiBleHBvc2UgaXQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgYmFzZSwganVzdFxuICAgICBrZWVwIGEgY29weSBhcm91bmQgaGVyZS4gKilcbiAgbGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoQ2FtbC5PYmoubWFnaWMgYiA6IGEpXG5cbiAgbW9kdWxlIFQwIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbm9uZSA6IF8gdFxuICAgIHZhbCBzb21lIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBpc19ub25lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfc29tZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgdmFsdWVfdW5zYWZlIDogJ2EgdCAtPiAnYVxuICAgIHZhbCBpdGVyX3NvbWUgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdFxuXG4gICAgKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgICAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICAgICAgSXQgd291bGQgYmUgc2ltcGxlciB0byB1c2UgdGhpcyB2YWx1ZSBhcyBbbm9uZV0sIGJ1dCB3ZSB1c2UgYW4gaW1tZWRpYXRlIGluc3RlYWRcbiAgICAgICBiZWNhdXNlIGl0IGxldHMgdXMgYXZvaWQgY2FtbF9tb2RpZnkgd2hlbiBzZXR0aW5nIHRvIFtub25lXSwgbWFraW5nIGNlcnRhaW5cbiAgICAgICBiZW5jaG1hcmtzIHNpZ25pZmljYW50bHkgZmFzdGVyIChlLmcuIC4uL2JlbmNoL2FycmF5X3F1ZXVlLmV4ZSkuXG5cbiAgICAgICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBNb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlciBwbGFjZSB3aGVyZSB3ZSB3YW50XG4gICAgICAgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbiAgICBsZXQgbm9uZV9zdWJzdGl0dXRlIDogXyB0ID0gQ2FtbC5PYmoub2JqIChDYW1sLk9iai5uZXdfYmxvY2sgQ2FtbC5PYmouYWJzdHJhY3RfdGFnIDEpXG5cbiAgICBsZXQgbm9uZSA6IF8gdCA9XG4gICAgICAoKiBUaGUgbnVtYmVyIHdhcyBwcm9kdWNlZCBieVxuICAgICAgICAgWzwgL2Rldi91cmFuZG9tIHRyIC1jIC1kICcxMjM0NTY3ODkwYWJjZGVmJyB8IGhlYWQgLWMgMTZdLlxuXG4gICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGEgcmFuZG9tIG51bWJlciB3aWxsIGhhdmUgbG93ZXIgcHJvYmFiaWxpdHkgdG8gY29sbGlkZSB3aXRoXG4gICAgICAgICBhbnl0aGluZyB0aGFuIGFueSBudW1iZXIgd2UgY2FuIGNob29zZSBvdXJzZWx2ZXMuXG5cbiAgICAgICAgIFdlIGFyZSB1c2luZyBhIHBvbHltb3JwaGljIHZhcmlhbnQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyIGNvbnN0YW50IGJlY2F1c2UgdGhlcmVcbiAgICAgICAgIGlzIGEgY29tcGlsZXIgYnVnIHdoZXJlIGl0IHdyb25nbHkgYXNzdW1lcyB0aGF0IHRoZSByZXN1bHQgb2YgW2lmIF8gdGhlbiBjIGVsc2VcbiAgICAgICAgIHldIGlzIG5vdCBhIHBvaW50ZXIgaWYgW2NdIGlzIGFuIGludGVnZXIgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgVGhpcyBpcyBiZWluZ1xuICAgICAgICAgZml4ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL3B1bGwvNTU1LiAgVGhlIFwibWVtb3J5IGNvcnJ1cHRpb25cIiB0ZXN0XG4gICAgICAgICBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIGlzc3VlLiAgKilcbiAgICAgIENhbWwuT2JqLm1hZ2ljIGB4NmU4ZWUzNDc4ZTFkNzQ0OVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCB4IG5vbmVcbiAgICBsZXQgaXNfc29tZSB4ID0gbm90IChwaHlzX2VxdWFsIHggbm9uZSlcblxuICAgIGxldCBzb21lICh0eXBlIGEpICh4IDogYSkgOiBhIHQgPVxuICAgICAgaWYgcGh5c19zYW1lIHggbm9uZSB0aGVuIG5vbmVfc3Vic3RpdHV0ZSBlbHNlIENhbWwuT2JqLm1hZ2ljIHhcbiAgICA7O1xuXG4gICAgbGV0IHZhbHVlX3Vuc2FmZSAodHlwZSBhKSAoeCA6IGEgdCkgOiBhID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgeCBub25lX3N1YnN0aXR1dGUgdGhlbiBDYW1sLk9iai5tYWdpYyBub25lIGVsc2UgQ2FtbC5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfZXhuIHggPVxuICAgICAgaWYgaXNfc29tZSB4XG4gICAgICB0aGVuIHZhbHVlX3Vuc2FmZSB4XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bjogdGhlIGVsZW1lbnQgaXMgW05vbmVdXCJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJfc29tZSB0IH5mID0gaWYgaXNfc29tZSB0IHRoZW4gZiAodmFsdWVfdW5zYWZlIHQpXG4gIGVuZFxuXG4gIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcblxuICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgIHwgU29tZSB4IC0+IHNvbWUgeFxuICAgIDs7XG5cbiAgICBsZXRbQGlubGluZV0gdG9fb3B0aW9uIHggPSBpZiBpc19zb21lIHggdGhlbiBTb21lICh2YWx1ZV91bnNhZmUgeCkgZWxzZSBOb25lXG4gICAgbGV0IHRvX3NleHBhYmxlID0gdG9fb3B0aW9uXG4gICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfb3B0aW9uXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgID1cbiAgICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKE9wdGlvbi50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVDFcbiAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEgKE9wdGlvbikgKFQxKVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIENoZWFwX29wdGlvbi50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMDFfIHhfXzAwM18gLT5cbiAgVW5pZm9ybV9hcnJheS50X29mX3NleHAgKENoZWFwX29wdGlvbi50X29mX3NleHAgX29mX2FfXzAwMV8pIHhfXzAwM19cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwNF8geF9fMDA1XyAtPlxuICBVbmlmb3JtX2FycmF5LnNleHBfb2ZfdCAoQ2hlYXBfb3B0aW9uLnNleHBfb2ZfdCBfb2ZfYV9fMDA0XykgeF9fMDA1X1xuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgVW5pZm9ybV9hcnJheS50X3NleHBfZ3JhbW1hciAoQ2hlYXBfb3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZW1wdHkgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG5sZXQgY3JlYXRlIH5sZW4gPSBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuIENoZWFwX29wdGlvbi5ub25lXG5sZXQgaW5pdCBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5vZl9vcHRpb24gKGYgaSkpXG5sZXQgaW5pdF9zb21lIG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLnNvbWUgKGYgaSkpXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcbmxldFtAaW5saW5lXSBnZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGdldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfbm9uZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBzZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCBzZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCBzZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBzd2FwIHQgaSBqID0gVW5pZm9ybV9hcnJheS5zd2FwIHQgaSBqXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9nZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcblxubGV0IHVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQgaSA9XG4gIENoZWFwX29wdGlvbi52YWx1ZV91bnNhZmUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG47O1xuXG5sZXQgdW5zYWZlX2lzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCB1bnNhZmVfc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHVuc2FmZV9zZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5cbmxldCBjbGVhciB0ID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXRfbm9uZSB0IGlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGlucHV0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBpbnB1dCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgaW5wdXQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXIgaW5wdXQgfmYgPSBpdGVyaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSB4IC0+IGYgeClcblxubGV0IGZvbGRpIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IGFjYyA6PSBmIGkgIWFjYyBlbGVtKTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGQgaW5wdXQgfmluaXQgfmYgPSBmb2xkaSBpbnB1dCB+aW5pdCB+ZjooZnVuIChfIDogaW50KSBhY2MgeCAtPiBmIGFjYyB4KVxuXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyLk1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2Egb3B0aW9uXG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1hcGkgaW5wdXQgfmYgPVxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW46KGxlbmd0aCBpbnB1dCkgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gdW5zYWZlX3NldCBvdXRwdXQgaSAoZiBpIGVsZW0pKTtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSBlbGVtIC0+IGYgZWxlbSlcblxubGV0IG1hcF9zb21lIGlucHV0IH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW4gaW5cbiAgbGV0ICgpID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IG9wdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBpbnB1dCBpIGluXG4gICAgICBDaGVhcF9vcHRpb24uaXRlcl9zb21lIG9wdCB+ZjooZnVuIHggLT4gdW5zYWZlX3NldF9zb21lIG91dHB1dCBpIChmIHgpKVxuICAgIGRvbmVcbiAgaW5cbiAgb3V0cHV0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPSBpbml0IChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG5cbmxldCBvZl9hcnJheV9zb21lIGFycmF5ID1cbiAgaW5pdF9zb21lIChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMV9nZW5lcmljIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSA9IFVuaWZvcm1fYXJyYXkuY29weVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZV9jaGVhcF9vcHRpb24gPSBDaGVhcF9vcHRpb25cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWNrX2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byBbRGVxdWVdIGluIHRoYXQgaXQgdXNlcyBhbiBhcnJheSBvZiBbJ2FdIGFuZFxuICAgYSBtdXRhYmxlIFtpbnRdIHRvIGluZGljYXRlIHdoYXQgaW4gdGhlIGFycmF5IGlzIHVzZWQuICBXZSBjaG9vc2UgdG8gaW1wbGVtZW50IFtTdGFja11cbiAgIGRpcmVjdGx5IHJhdGhlciB0aGFuIG9uIHRvcCBvZiBbRGVxdWVdIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgRS5nLiBhIHNpbXBsZVxuICAgbWljcm9iZW5jaG1hcmsgc2hvd3MgdGhhdCBwdXNoL3BvcCBpcyBhYm91dCAyMCUgZmFzdGVyLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfIHsgbGVuZ3RoID0gbGVuZ3RoX18wMDNfOyBlbHRzID0gZWx0c19fMDA1XyB9IC0+XG4gIGxldCBibmRzX18wMDJfID0gW10gaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNl8gPSBPcHRpb25fYXJyYXkuc2V4cF9vZl90IF9vZl9hX18wMDFfIGVsdHNfXzAwNV8gaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwM18gaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsZW5ndGhcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICBpblxuICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IHNleHBfb2ZfdCA9IGBSZWJvdW5kX2xhdGVyXG5sZXQgXyA9IHNleHBfb2ZfdFxubGV0IGNhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hICh7IGxlbmd0aDsgZWx0cyB9IGFzIHQpIDogdW5pdCA9XG4gIHRyeVxuICAgIGFzc2VydCAoMCA8PSBsZW5ndGggJiYgbGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICAgIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgaSlcbiAgICBkb25lO1xuICAgICgqIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB1bnVzZWQgZWxlbWVudHMgYXJlIHVuc2V0IHRvIGF2b2lkIGEgc3BhY2VcbiAgICAgICBsZWFrLiAqKVxuICAgIGZvciBpID0gbGVuZ3RoIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyAtIDEgZG9cbiAgICAgIGFzc2VydCAobm90IChPcHRpb25fYXJyYXkuaXNfc29tZSBlbHRzIGkpKVxuICAgIGRvbmVcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiU3RhY2suaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiZXhuXCIsIGV4biB8PiBFeG4uc2V4cF9vZl90OyBcInN0YWNrXCIsIHQgfD4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2Zfb3BhcXVlIF0pXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0geyBsZW5ndGggPSAwOyBlbHRzID0gT3B0aW9uX2FycmF5LmVtcHR5IH1cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBUaGUgb3JkZXIgaW4gd2hpY2ggZWxlbWVudHMgYXJlIHZpc2l0ZWQgaGFzIGJlZW4gY2hvc2VuIHNvIGFzIHRvIGJlIGJhY2t3YXJkc1xuICAgY29tcGF0aWJsZSB3aXRoIFtDYW1sLlN0YWNrXSAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgIXIgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBmIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9saXN0ICh0eXBlIGEpIChsIDogYSBsaXN0KSA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbFxuICB0aGVuIGNyZWF0ZSAoKVxuICBlbHNlIChcbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOigyICogbGVuZ3RoKSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZWx0cyBpIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgeyBsZW5ndGg7IGVsdHMgfSlcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5sZXQgcmVzaXplIHQgc2l6ZSA9XG4gIGxldCBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+c3JjOnQuZWx0cyB+ZHN0OmFyciB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjp0Lmxlbmd0aDtcbiAgdC5lbHRzIDwtIGFyclxuOztcblxubGV0IHNldF9jYXBhY2l0eSB0IG5ld19jYXBhY2l0eSA9XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBtYXggbmV3X2NhcGFjaXR5IChsZW5ndGggdCkgaW5cbiAgaWYgbmV3X2NhcGFjaXR5IDw+IGNhcGFjaXR5IHQgdGhlbiByZXNpemUgdCBuZXdfY2FwYWNpdHlcbjs7XG5cbmxldCBwdXNoIHQgYSA9XG4gIGlmIHQubGVuZ3RoID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgdGhlbiByZXNpemUgdCAoMiAqICh0Lmxlbmd0aCArIDEpKTtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuZWx0cyB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3Bfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gdC5sZW5ndGggLSAxIGluXG4gIGxldCByZXN1bHQgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmVsdHMgaTtcbiAgdC5sZW5ndGggPC0gaTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgcG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sucG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCBwb3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX25vbmVtcHR5IHQpXG5sZXQgcG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHBvcF9lcnJvciBlbHNlIHBvcF9ub25lbXB0eSB0XG5sZXQgdG9wX25vbmVtcHR5IHQgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyAodC5sZW5ndGggLSAxKVxubGV0IHRvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnRvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgdG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9ub25lbXB0eSB0KVxubGV0IHRvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSB0b3BfZXJyb3IgZWxzZSB0b3Bfbm9uZW1wdHkgdFxubGV0IGNvcHkgeyBsZW5ndGg7IGVsdHMgfSA9IHsgbGVuZ3RoOyBlbHRzID0gT3B0aW9uX2FycmF5LmNvcHkgZWx0cyB9XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmVsdHMgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMClcbjs7XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGlmIHQubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgZiAocG9wX25vbmVtcHR5IHQpO1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgcHVzaCB0IHg7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhpcyBpcyBsaWZ0ZWQgb3V0IG9mIFtNXSBiZWNhdXNlIFtTb3VyY2VfY29kZV9wb3NpdGlvbjBdIGV4cG9ydHMgW1N0cmluZzBdXG4gICBhcyBbU3RyaW5nXSwgd2hpY2ggZG9lcyBub3QgZXhwb3J0IGEgaGFzaCBmdW5jdGlvbi4gKilcbmxldCBoYXNoX292ZXJyaWRlIHsgQ2FtbC5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSA9XG4gIFN0cmluZy5oYXNoIHBvc19mbmFtZVxuICBseG9yIEludC5oYXNoIHBvc19sbnVtXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2JvbFxuICBseG9yIEludC5oYXNoIHBvc19jbnVtXG47O1xuXG5tb2R1bGUgTSA9IHN0cnVjdFxuICBpbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuXG4gIGxldCBoYXNoID0gaGFzaF9vdmVycmlkZVxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoTSlcblxubGV0IG9mX3BvcyAocG9zX2ZuYW1lLCBwb3NfbG51bSwgcG9zX2NudW0sIF8pID1cbiAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCA9IDAgfVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmVnXG4gICAgfCBaZXJvXG4gICAgfCBQb3NcbiAgICB8IE5hblxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ25fb3JfbmFuLm1sLlQudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICB8IE5hbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDNcbiAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3M7IE5hbiBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduX29yX25hblwiXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogVC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogVC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogVC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IFQudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogVC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBULnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBvZl9zaWduID0gZnVuY3Rpb25cbiAgfCBTaWduLk5lZyAtPiBOZWdcbiAgfCBTaWduLlplcm8gLT4gWmVyb1xuICB8IFNpZ24uUG9zIC0+IFBvc1xuOztcblxubGV0IHRvX3NpZ25fZXhuID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gU2lnbi5OZWdcbiAgfCBaZXJvIC0+IFNpZ24uWmVyb1xuICB8IFBvcyAtPiBTaWduLlBvc1xuICB8IE5hbiAtPiBpbnZhbGlkX2FyZyBcIkJhc2UuU2lnbl9vcl9uYW4udG9fc2lnbl9leG46IE5hblwiXG47O1xuXG5sZXQgb2ZfaW50IG4gPSBvZl9zaWduIChTaWduLm9mX2ludCBuKVxubGV0IHRvX2ludF9leG4gdCA9IFNpZ24udG9faW50ICh0b19zaWduX2V4biB0KVxuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbiAgfCBOYW4gLT4gTmFuXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOYW4sIF8gfCBfLCBOYW4gLT4gTmFuXG4gIHwgXyAtPiBvZl9zaWduIChTaWduLiggKiApICh0b19zaWduX2V4biB0KSAodG9fc2lnbl9leG4gdCcpKVxuOztcblxuKCogSW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBhbnkgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdFxuICAgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5bQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBhbGwgOiAnYS4gJ2EgbGlzdCAtPiAnYSB0IGxpc3QgPVxuICBmdW4gX2FsbF9vZl9hIC0+XG4gIFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgIHwgZW51bWVyYXRlX18wMDFfIDo6IGwgLT4gbWFwIGwgKEluY2wgZW51bWVyYXRlX18wMDFfIDo6IGFjYylcbiAgICAgaW5cbiAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAoUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgICAgfCBlbnVtZXJhdGVfXzAwMl8gOjogbCAtPiBtYXAgbCAoRXhjbCBlbnVtZXJhdGVfXzAwMl8gOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgICAgIFsgVW5ib3VuZGVkIF0pXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuICh0eXBlIGFfXzAxOF8pIDogKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8gdCkgLT5cbiAgbGV0IGVycm9yX3NvdXJjZV9fMDA2XyA9IFwibWF5YmVfYm91bmQubWwudFwiIGluXG4gIGZ1biBfb2ZfYV9fMDAzXyAtPiBmdW5jdGlvblxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImluY2xcIiB8IFwiSW5jbFwiKSBhcyBfdGFnX18wMDlfKSA6OiBzZXhwX2FyZ3NfXzAxMF8pIGFzXG4gICAgICBfc2V4cF9fMDA4XyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDEwXyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxMV8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTFfIGluXG4gICAgICAgICBJbmNsIHJlczBfXzAxMl9cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAwOV9cbiAgICAgICAgICAgX3NleHBfXzAwOF8pXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXhjbFwiIHwgXCJFeGNsXCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTVfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgIEV4Y2wgcmVzMF9fMDE3X1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDE0X1xuICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIC0+IFVuYm91bmRlZFxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluY2xcIiB8IFwiSW5jbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXhjbFwiIHwgXCJFeGNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgOjogXykgYXNcbiAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biAodHlwZSBhX18wMjRfKSA6ICgoYV9fMDI0XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAyNF8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gIGZ1biBfb2ZfYV9fMDE5XyAtPiBmdW5jdGlvblxuICAgIHwgSW5jbCBhcmcwX18wMjBfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIxXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkluY2xcIjsgcmVzMF9fMDIxXyBdXG4gICAgfCBFeGNsIGFyZzBfXzAyMl8gLT5cbiAgICAgIGxldCByZXMwX18wMjNfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhjbFwiOyByZXMwX18wMjNfIF1cbiAgICB8IFVuYm91bmRlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmJvdW5kZWRcIlxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkluY2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkV4Y2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJVbmJvdW5kZWRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxudHlwZSBpbnRlcnZhbF9jb21wYXJpc29uID1cbiAgfCBCZWxvd19sb3dlcl9ib3VuZFxuICB8IEluX3JhbmdlXG4gIHwgQWJvdmVfdXBwZXJfYm91bmRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2hdXG5cbmxldCBpbnRlcnZhbF9jb21wYXJpc29uX29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDI3XyA9IFwibWF5YmVfYm91bmQubWwuaW50ZXJ2YWxfY29tcGFyaXNvblwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgLT4gQmVsb3dfbG93ZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIC0+IEluX3JhbmdlXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSAtPiBBYm92ZV91cHBlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBzZXhwX18wMjZfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiBpbnRlcnZhbF9jb21wYXJpc29uKVxuOztcblxubGV0IHNleHBfb2ZfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChmdW5jdGlvblxuICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQmVsb3dfbG93ZXJfYm91bmRcIlxuICAgIHwgSW5fcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5fcmFuZ2VcIlxuICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQWJvdmVfdXBwZXJfYm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAoaW50ZXJ2YWxfY29tcGFyaXNvbl9zZXhwX2dyYW1tYXIgOiBpbnRlcnZhbF9jb21wYXJpc29uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiQmVsb3dfbG93ZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkluX3JhbmdlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJBYm92ZV91cHBlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlXG4gICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnQpXG47O1xuXG5sZXQgKGhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIDpcbiAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgSW5fcmFuZ2UgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxuW0BAQGVuZF1cblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IEluY2wgKGYgaW5jbClcbiAgfCBFeGNsIGV4Y2wgLT4gRXhjbCAoZiBleGNsKVxuICB8IFVuYm91bmRlZCAtPiBVbmJvdW5kZWRcbjs7XG5cbmxldCBpc19sb3dlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGluY2wgYSA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgZXhjbCBhIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgaXNfdXBwZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBhIGluY2wgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGEgZXhjbCA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBtYXRjaCBsb3dlciB3aXRoXG4gIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gIHwgSW5jbCBsb3dlciB8IEV4Y2wgbG93ZXIgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICAgICB8IEluY2wgdXBwZXIgfCBFeGNsIHVwcGVyIC0+IGNvbXBhcmUgbG93ZXIgdXBwZXIgPiAwKVxuOztcblxubGV0IGNoZWNrX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgaWYgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZVxuICB0aGVuIGZhaWx3aXRoIFwiTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG46IGxvd2VyIGJvdW5kID4gdXBwZXIgYm91bmRcIlxuOztcblxubGV0IGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIGNoZWNrX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlO1xuICBpZiBub3QgKGlzX2xvd2VyX2JvdW5kIGxvd2VyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBCZWxvd19sb3dlcl9ib3VuZFxuICBlbHNlIGlmIG5vdCAoaXNfdXBwZXJfYm91bmQgdXBwZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEFib3ZlX3VwcGVyX2JvdW5kXG4gIGVsc2UgSW5fcmFuZ2Vcbjs7XG5cbmxldCBpbnRlcnZhbF9jb250YWluc19leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgbWF0Y2ggY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlIHdpdGhcbiAgfCBJbl9yYW5nZSAtPiB0cnVlXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBmYWxzZVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVFxuXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBEdXBsaWNhdGVcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgfCBgT2sgX2xlZnRfXzAwM18sIGBPayBfcmlnaHRfXzAwNF8gLT4gX2NtcF9fYSBfbGVmdF9fMDAzXyBfcmlnaHRfXzAwNF9cbiAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiAwXG4gICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNV8gYl9fMDA2XyAtPlxuICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA1XyBiX18wMDZfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wMDVfLCBiX18wMDZfIHdpdGhcbiAgICAgICAgfCBgT2sgX2xlZnRfXzAwN18sIGBPayBfcmlnaHRfXzAwOF8gLT4gX2NtcF9fYSBfbGVmdF9fMDA3XyBfcmlnaHRfXzAwOF9cbiAgICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IHRydWVcbiAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMDlfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBPayB2X18wMTBfIC0+IFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IF9vZl9hX18wMDlfIHZfXzAxMF8gXVxuICAgICAgfCBgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkR1cGxpY2F0ZVwiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gY29tcGFyYXRvcjooJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gKCdrZXksICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdrICd2LiAoJ2sgLT4gJ2sgLT4gaW50KSAtPiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgbGV0IHRfXzAxM18sIHRfXzAxNF8gPSBhX18wMTFfIGluXG4gICAgbGV0IHRfXzAxNV8sIHRfXzAxNl8gPSBiX18wMTJfIGluXG4gICAgbWF0Y2ggX2NtcF9fayB0X18wMTNfIHRfXzAxNV8gd2l0aFxuICAgIHwgMCAtPlxuICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgdF9fMDE0XyB0X18wMTZfXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0X18wMTRfLCB0X18wMTZfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDE3XywgYExlZnQgX3JpZ2h0X18wMThfIC0+IF9jbXBfX3YgX2xlZnRfXzAxN18gX3JpZ2h0X18wMThfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMTlfLCBgUmlnaHQgX3JpZ2h0X18wMjBfIC0+IF9jbXBfX3YgX2xlZnRfXzAxOV8gX3JpZ2h0X18wMjBfXG4gICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAyMV8sIGBVbmVxdWFsIF9yaWdodF9fMDIyXyAtPlxuICAgICAgICAgIGxldCB0X18wMjNfLCB0X18wMjRfID0gX2xlZnRfXzAyMV8gaW5cbiAgICAgICAgICBsZXQgdF9fMDI1XywgdF9fMDI2XyA9IF9yaWdodF9fMDIyXyBpblxuICAgICAgICAgIChtYXRjaCBfY21wX192IHRfXzAyM18gdF9fMDI1XyB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBfY21wX192IHRfXzAyNF8gdF9fMDI2X1xuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIHggeSlcbiAgICB8IG4gLT4gblxuICA7O1xuXG4gIGxldCBlcXVhbCA6XG4gICAgJ2sgJ3YuXG4gICAgKCdrIC0+ICdrIC0+IGJvb2wpIC0+ICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fayBfY21wX192IGFfXzAyN18gYl9fMDI4XyAtPlxuICAgICAgbGV0IHRfXzAyOV8sIHRfXzAzMF8gPSBhX18wMjdfIGluXG4gICAgICBsZXQgdF9fMDMxXywgdF9fMDMyXyA9IGJfXzAyOF8gaW5cbiAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgKF9jbXBfX2sgdF9fMDI5XyB0X18wMzFfKVxuICAgICAgICAoaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgdF9fMDMwXyB0X18wMzJfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCB0X18wMzBfLCB0X18wMzJfIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDMzXywgYExlZnQgX3JpZ2h0X18wMzRfIC0+IF9jbXBfX3YgX2xlZnRfXzAzM18gX3JpZ2h0X18wMzRfXG4gICAgICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMzVfLCBgUmlnaHQgX3JpZ2h0X18wMzZfIC0+IF9jbXBfX3YgX2xlZnRfXzAzNV8gX3JpZ2h0X18wMzZfXG4gICAgICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAzN18sIGBVbmVxdWFsIF9yaWdodF9fMDM4XyAtPlxuICAgICAgICAgICAgIGxldCB0X18wMzlfLCB0X18wNDBfID0gX2xlZnRfXzAzN18gaW5cbiAgICAgICAgICAgICBsZXQgdF9fMDQxXywgdF9fMDQyXyA9IF9yaWdodF9fMDM4XyBpblxuICAgICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmICkgKF9jbXBfX3YgdF9fMDM5XyB0X18wNDFfKSAoX2NtcF9fdiB0X18wNDBfIHRfXzA0Ml8pXG4gICAgICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgeCB5KSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnayAndi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdrKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wNTdfID0gXCJtYXBfaW50Zi5tbC5TeW1tZXRyaWNfZGlmZl9lbGVtZW50LnRcIiBpblxuICAgIGZ1biBfb2Zfa19fMDQzXyBfb2Zfdl9fMDQ0XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNjdfOyBhcmcxX18wNjhfIF0gLT5cbiAgICAgICAgbGV0IHJlczBfXzA2OV8gPSBfb2Zfa19fMDQzXyBhcmcwX18wNjdfXG4gICAgICAgIGFuZCByZXMxX18wNzBfID1cbiAgICAgICAgICBsZXQgc2V4cF9fMDY2XyA9IGFyZzFfXzA2OF8gaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNleHBfXzA2Nl8gd2l0aFxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyBhcyBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIDo6IHNleHBfYXJnc19fMDUwXykgYXNcbiAgICAgICAgICAgICAgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiBhcyBfdGFnX18wNjNfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2NF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDY1XyA9IF9vZl92X18wNDRfIGFyZzBfXzA2NF8gaW5cbiAgICAgICAgICAgICAgICAgICAgYExlZnQgcmVzMF9fMDY1X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjNfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiBhcyBfdGFnX18wNjBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2MV8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDYyXyA9IF9vZl92X18wNDRfIGFyZzBfXzA2MV8gaW5cbiAgICAgICAgICAgICAgICAgICAgYFJpZ2h0IHJlczBfXzA2Ml9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYwX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiBhcyBfdGFnX18wNTFfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA1OF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU5XyA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYXJnMF9fMDU4XyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNTJfOyBhcmcxX18wNTNfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDUyX1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2Zfdl9fMDQ0XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMwX18wNTRfLCByZXMxX18wNTVfXG4gICAgICAgICAgICAgICAgICAgICAgfCBzZXhwX18wNTZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNleHBfXzA1Nl9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYFVuZXF1YWwgcmVzMF9fMDU5X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNTFfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgIHNleHBfXzA2Nl9cbiAgICAgICAgaW5cbiAgICAgICAgcmVzMF9fMDY5XywgcmVzMV9fMDcwX1xuICAgICAgfCBzZXhwX18wNzFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgZXJyb3Jfc291cmNlX18wNTdfIDIgc2V4cF9fMDcxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdrICd2LlxuICAgICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2Zfa19fMDcyXyBfb2Zfdl9fMDczXyAoYXJnMF9fMDgxXywgYXJnMV9fMDgyXykgLT5cbiAgICAgIGxldCByZXMwX18wODNfID0gX29mX2tfXzA3Ml8gYXJnMF9fMDgxX1xuICAgICAgYW5kIHJlczFfXzA4NF8gPVxuICAgICAgICBtYXRjaCBhcmcxX18wODJfIHdpdGhcbiAgICAgICAgfCBgTGVmdCB2X18wNzRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2Zfdl9fMDczXyB2X18wNzRfIF1cbiAgICAgICAgfCBgUmlnaHQgdl9fMDc1XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl92X18wNzNfIHZfXzA3NV8gXVxuICAgICAgICB8IGBVbmVxdWFsIHZfXzA3Nl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbFwiXG4gICAgICAgICAgICA7IChsZXQgYXJnMF9fMDc3XywgYXJnMV9fMDc4XyA9IHZfXzA3Nl8gaW5cbiAgICAgICAgICAgICAgIGxldCByZXMwX18wNzlfID0gX29mX3ZfXzA3M18gYXJnMF9fMDc3X1xuICAgICAgICAgICAgICAgYW5kIHJlczFfXzA4MF8gPSBfb2Zfdl9fMDczXyBhcmcxX18wNzhfIGluXG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wNzlfOyByZXMxX18wODBfIF0pXG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDgzXzsgcmVzMV9fMDg0XyBdXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8na19zZXhwX2dyYW1tYXIgXyd2X3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgKCBfJ2tfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiVW5lcXVhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDg1XyBiX18wODZfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDg1XyBiX18wODZfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wODVfLCBiX18wODZfIHdpdGhcbiAgICAgIHwgYExlZnQgX2xlZnRfXzA4N18sIGBMZWZ0IF9yaWdodF9fMDg4XyAtPiBfY21wX19sZWZ0IF9sZWZ0X18wODdfIF9yaWdodF9fMDg4X1xuICAgICAgfCBgUmlnaHQgX2xlZnRfXzA4OV8sIGBSaWdodCBfcmlnaHRfXzA5MF8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzA4OV8gX3JpZ2h0X18wOTBfXG4gICAgICB8IGBCb3RoIF9sZWZ0X18wOTFfLCBgQm90aCBfcmlnaHRfXzA5Ml8gLT5cbiAgICAgICAgbGV0IHRfXzA5M18sIHRfXzA5NF8gPSBfbGVmdF9fMDkxXyBpblxuICAgICAgICBsZXQgdF9fMDk1XywgdF9fMDk2XyA9IF9yaWdodF9fMDkyXyBpblxuICAgICAgICAobWF0Y2ggX2NtcF9fbGVmdCB0X18wOTNfIHRfXzA5NV8gd2l0aFxuICAgICAgICAgfCAwIC0+IF9jbXBfX3JpZ2h0IHRfXzA5NF8gdF9fMDk2X1xuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBib29sKVxuICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDk3XyBiX18wOThfIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wOTdfIGJfXzA5OF9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzA5N18sIGJfXzA5OF8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wOTlfLCBgTGVmdCBfcmlnaHRfXzEwMF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDk5XyBfcmlnaHRfXzEwMF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzEwMV8sIGBSaWdodCBfcmlnaHRfXzEwMl8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzEwMV8gX3JpZ2h0X18xMDJfXG4gICAgICAgIHwgYEJvdGggX2xlZnRfXzEwM18sIGBCb3RoIF9yaWdodF9fMTA0XyAtPlxuICAgICAgICAgIGxldCB0X18xMDVfLCB0X18xMDZfID0gX2xlZnRfXzEwM18gaW5cbiAgICAgICAgICBsZXQgdF9fMTA3XywgdF9fMTA4XyA9IF9yaWdodF9fMTA0XyBpblxuICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmICkgKF9jbXBfX2xlZnQgdF9fMTA1XyB0X18xMDdfKSAoX2NtcF9fcmlnaHQgdF9fMTA2XyB0X18xMDhfKVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2xlZnRfXzEwOV8gX29mX3JpZ2h0X18xMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IHZfXzExMV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2ZfbGVmdF9fMTA5XyB2X18xMTFfIF1cbiAgICAgIHwgYFJpZ2h0IHZfXzExMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3JpZ2h0X18xMTBfIHZfXzExMl8gXVxuICAgICAgfCBgQm90aCB2X18xMTNfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiXG4gICAgICAgICAgOyAobGV0IGFyZzBfXzExNF8sIGFyZzFfXzExNV8gPSB2X18xMTNfIGluXG4gICAgICAgICAgICAgbGV0IHJlczBfXzExNl8gPSBfb2ZfbGVmdF9fMTA5XyBhcmcwX18xMTRfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzExN18gPSBfb2ZfcmlnaHRfXzExMF8gYXJnMV9fMTE1XyBpblxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzExNl87IHJlczFfXzExN18gXSlcbiAgICAgICAgICBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wICopXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29udGludWVcbiAgICB8IFN0b3BcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgQ29udGludWU7IFN0b3AgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb250aW51ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJDb250aW51ZVwiXG4gICAgICB8IFN0b3AgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RvcFwiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWQgKilcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGaW5pc2hlZFxuICAgIHwgVW5maW5pc2hlZFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBGaW5pc2hlZDsgVW5maW5pc2hlZCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkZpbmlzaGVkXCJcbiAgICAgIHwgVW5maW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmZpbmlzaGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdjbXAgY21wXG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBzZXRcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YgbGlzdCkgb3B0aW9uc1xuXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiBmOigndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCB1cGRhdGVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiBmOigndiBvcHRpb24gLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbmQgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IG9wdGlvbikgb3B0aW9uc1xuICB2YWwgZmluZF9leG4gOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2KSBvcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG1lbSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooJ2sga2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gIHZhbCBmb2xkIDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICB2YWwgZm9sZDJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGluaXQ6J2FcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYSAtPiAnYSlcbiAgICAgIC0+ICdhIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfa2V5c1xuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCdrIGtleSAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KCd2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICgnaywgJ2NtcCwgKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCkgb3B0aW9uc1xuXG4gIHZhbCBlcXVhbFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwga2V5cyA6ICgnaywgXywgXykgdCAtPiAnayBrZXkgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sga2V5ICogJ3YpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21iaW5lOihrZXk6J2sga2V5IC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+IGluaXQ6J2FcbiAgICAgIC0+IGY6KCdhIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2EpXG4gICAgICAtPiAnYSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sga2V5ICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGFwcGVuZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBsb3dlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbWluOidrIGtleVxuICAgICAgLT4gbWF4OidrIGtleVxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKVxuICAgICAgLT4gJ2EgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sga2V5IC0+IG1heDonayBrZXkgLT4gKCdrIGtleSAqICd2KSBsaXN0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG50aCA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIHJhbmsgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gaW50IG9wdGlvbikgb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrIGtleSwgJ3YsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAgIC0+ICdrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGtleVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAnYSB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSB0XG4gIHZhbCBzZXQgOiAnYSB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIGxpc3QgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogJ2EgbGlzdCB0IC0+IGtleSAtPiAnYSBsaXN0IHRcbiAgdmFsIGZpbmRfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICdhIHQgLT4ga2V5IC0+IGY6KCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHRcbiAgdmFsIHVwZGF0ZSA6ICdhIHQgLT4ga2V5IC0+IGY6KCdhIG9wdGlvbiAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgdFxuICB2YWwgbWVtIDogXyB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiBfIHQgLT4gZjooa2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMiA6ICdhIHQgLT4gJ2IgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6KCdhLCAnYikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG1hcGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2MgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgZm9sZDJcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2IgdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6KCdhLCAnYikgTWVyZ2VfZWxlbWVudC50IC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogJ2EgdCAtPiBmOihrZXkgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX21hcGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAoJ2IsICdjKSBFaXRoZXIudCkgLT4gJ2IgdCAqICdjIHRcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2MpIEVpdGhlci50KSAtPiAnYiB0ICogJ2MgdFxuICB2YWwgcGFydGl0aW9uaV90ZiA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICdhIE9yX2Vycm9yLnQgdCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiBfIHQgLT4ga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FsaXN0IDogP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdiIHQgLT4gZjooa2V5OmtleSAtPiAoJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Mgb3B0aW9uKSAtPiAnYyB0XG4gIHZhbCBtZXJnZV9za2V3ZWQgOiAndiB0IC0+ICd2IHQgLT4gY29tYmluZTooa2V5OmtleSAtPiAndiAtPiAndiAtPiAndikgLT4gJ3YgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoa2V5LCAnYSkgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKGtleSwgJ2EpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAnYSB0IC0+IGtleSAqICdhXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAnYSB0IC0+IGtleSAqICdhXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGludFxuICB2YWwgc3BsaXQgOiAnYSB0IC0+IGtleSAtPiAnYSB0ICogKGtleSAqICdhKSBvcHRpb24gKiAnYSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6J2EgdFxuICAgIC0+IHVwcGVyX3BhcnQ6J2EgdFxuICAgIC0+IFsgYE9rIG9mICdhIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGxvd2VyX2JvdW5kOmtleSBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6a2V5IE1heWJlX2JvdW5kLnRcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgJ2EgdFxuICAgIC0+IG1pbjprZXlcbiAgICAtPiBtYXg6a2V5XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYilcbiAgICAtPiAnYlxuXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICdhIHQgLT4gbWluOmtleSAtPiBtYXg6a2V5IC0+IChrZXkgKiAnYSkgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICdhIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4ga2V5XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgbnRoIDogJ2EgdCAtPiBpbnQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAnYSB0IC0+IGludCAtPiBrZXkgKiAnYVxuICB2YWwgcmFuayA6IF8gdCAtPiBrZXkgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICdhIHQgLT4gJ2EgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzprZXlcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOmtleVxuICAgIC0+ICdhIHRcbiAgICAtPiAoa2V5ICogJ2EpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICdhIHRcbiAgICAtPiBjb21wYXJlOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+IChrZXkgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgJ2EgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTprZXkgLT4gZGF0YTonYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+IChrZXkgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAnYSB0XG4gICAgLT4gY29tcGFyZTooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBhZGQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IpIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdFxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiAnYSAtPiAnYiBsaXN0XG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaW5kIDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYlxuICB2YWwgcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBtZW0gOiAoJ2EsICdiKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYykgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYikgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICB2YWwgcGFydGl0aW9uX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnYSwgJ2IgT3JfZXJyb3IudCkgdCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG4gIHZhbCB0b19hbGlzdCA6ID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gLT4gKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2KSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IpIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gKCdhLCAnYikgdCAqICgnYSAqICdiKSBvcHRpb24gKiAoJ2EsICdiKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdhLCAnYikgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdhLCAnYikgdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+IG1pbjonYSAtPiBtYXg6J2EgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYikgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6ICgnYSwgXykgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG4gIHZhbCBhZGQgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIHNldCA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBsaXN0XG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaW5kIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYlxuICB2YWwgcmVtb3ZlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBtZW0gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXywgJ2NtcCkgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2EsICdiIE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBrZXlzIDogKCdhLCBfLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ2IsIF8pIHQgLT4gJ2IgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiAoJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Qgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIG1heF9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiLCBfKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYiwgXykgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IsIF8pIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiLCBfKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2EsICdiLCBfKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdhLCAnYiwgXykgdCAtPiBtaW46J2EgLT4gbWF4OidhIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdhLCAnYiwgXykgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAnYVxuICAgIC0+ICgnYSAqICdiKSBvcHRpb25cblxuICB2YWwgbnRoIDogKCdhLCAnYiwgXykgdCAtPiBpbnQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnYSwgJ2IsIF8pIHQgLT4gaW50IC0+ICdhICogJ2JcbiAgdmFsIHJhbmsgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludFxuXG4gIHZhbCBhZGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50XG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHNldFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgYWRkX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIGZpbmRfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAnYiBsaXN0XG5cbiAgdmFsIGNoYW5nZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgdXBkYXRlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+IGY6KCdiIG9wdGlvbiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbmQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYlxuXG4gIHZhbCByZW1vdmVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBtZW0gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfLCAnY21wKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2RcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2QgLT4gJ2QpXG4gICAgLT4gJ2RcblxuICB2YWwgZmlsdGVyX2tleXNcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIE9yX2Vycm9yLnQsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdiIC0+ICdiIC0+IGludClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwga2V5cyA6ICgnYSwgXywgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICdiLCBfKSB0IC0+ICdiIGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdhLCAnYiwgXykgdFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EgKiAnYikgb3B0aW9uICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gbG93ZXJfcGFydDooJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzIChNIDogQWNjZXNzb3JzMykgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuICB0eXBlICgnaywgJ3YsICdjbXApIHRyZWVcbiAgdHlwZSAnayBrZXlcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdrLCAnY21wLCAnayBrZXkgLT4gJ3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgICAtPiBmOignazEga2V5IC0+ICdrMiBrZXkpXG4gICAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0IC0+IGY6KCdrMSBrZXkgLT4gJ2syIGtleSkgLT4gKCdrMiwgJ3YsICdjbXAyKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnaywgJ2NtcCwgbGVuOmludCAtPiBmOihpbnQgLT4gJ2sga2V5ICogJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2FsaXN0X211bHRpIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBsaXN0IC0+IGluaXQ6J3YyIC0+IGY6KCd2MiAtPiAndjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiBmOigndiAtPiAndiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdXG4gICAgICApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIFNlcXVlbmNlLnRcbiAgICAgIC0+IGluaXQ6J3YyXG4gICAgICAtPiBmOigndjIgLT4gJ3YxIC0+ICd2MilcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gZjooJ3YgLT4gJ3YgLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3RyZWUgOiAoJ2ssICdjbXAsICgnayBrZXksICd2LCAnY21wKSB0cmVlIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGtleVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6IF8gdFxuICB2YWwgc2luZ2xldG9uIDoga2V5IC0+ICdhIC0+ICdhIHRcbiAgdmFsIG1hcF9rZXlzIDogJ3YgdCAtPiBmOihrZXkgLT4ga2V5KSAtPiBbIGBPayBvZiAndiB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cbiAgdmFsIG1hcF9rZXlzX2V4biA6ICd2IHQgLT4gZjooa2V5IC0+IGtleSkgLT4gJ3YgdFxuICB2YWwgb2ZfYWxpc3QgOiAoa2V5ICogJ2EpIGxpc3QgLT4gWyBgT2sgb2YgJ2EgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvciA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX2FsaXN0X2V4biA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9hbGlzdF9tdWx0aSA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSBsaXN0IHRcbiAgdmFsIG9mX2FsaXN0X2ZvbGQgOiAoa2V5ICogJ2EpIGxpc3QgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlIDogKGtleSAqICdhKSBsaXN0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoa2V5ICogJ2EpIGFycmF5IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6IChrZXkgKiAnYSkgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiBrZXkgKiAnYSkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICdhIHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgdFxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGkgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2EgdFxuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogIGl0ZXJpOihmOihrZXk6a2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAndiB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuIDogaXRlcmk6KGY6KGtleTprZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KSAtPiAndiB0XG4gIHZhbCBvZl90cmVlIDogJ2EgdHJlZSAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiAoXywgXykgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2IgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogICgnazEsICd2KSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgdmFsIG1hcF9rZXlzX2V4biA6ICgnazEsICd2KSB0IC0+IGY6KCdrMSAtPiAnazIpIC0+ICgnazIsICd2KSB0XG4gIHZhbCBvZl9hbGlzdCA6ICgnYSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvciA6ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfYWxpc3RfbXVsdGkgOiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiIGxpc3QpIHRcbiAgdmFsIG9mX2FsaXN0X2ZvbGQgOiAoJ2EgKiAnYikgbGlzdCAtPiBpbml0OidjIC0+IGY6KCdjIC0+ICdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2UgOiAoJ2EgKiAnYikgbGlzdCAtPiBmOignYiAtPiAnYiAtPiAnYikgLT4gKCdhLCAnYikgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKCdhICogJ2IpIGFycmF5IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSAqICdiKSBhcnJheSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+ICdhICogJ2IpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiBmOignYiAtPiAnYiAtPiAnYikgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogIGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2l0ZXJpX2V4biA6IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl90cmVlIDogKCdhLCAnYikgdHJlZSAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsIF8sICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EgKiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3RyZWVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnNcbiAgICAoVCA6IFQzKVxuICAgIChUcmVlIDogVDMpXG4gICAgKEtleSA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yIChNIDogQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczFcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGtleSA6PSBrZXlcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMyXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgY29tcGFyZV9tX190XG4gICAgOiAgKG1vZHVsZSBDb21wYXJlX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGludClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbF9tX190XG4gICAgOiAgKG1vZHVsZSBFcXVhbF9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBoYXNoX2ZvbGRfbV9fdFxuICAgIDogIChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoSGFzaC5zdGF0ZSAtPiAndiAtPiBIYXNoLnN0YXRlKVxuICAgIC0+IEhhc2guc3RhdGVcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcCA9IHNpZ1xuICAoKiogW01hcF0gaXMgYSBmdW5jdGlvbmFsIGRhdGEgc3RydWN0dXJlIChiYWxhbmNlZCBiaW5hcnkgdHJlZSkgaW1wbGVtZW50aW5nIGZpbml0ZSBtYXBzXG4gICAgICBvdmVyIGEgdG90YWxseS1vcmRlcmVkIGRvbWFpbiwgY2FsbGVkIGEgXCJrZXlcIi4gKilcblxuICB0eXBlICgna2V5LCArJ3ZhbHVlLCAnY21wKSB0XG5cbiAgbW9kdWxlIE9yX2R1cGxpY2F0ZSA9IE9yX2R1cGxpY2F0ZVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxuICBtb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IFVuZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfZW51bWVyYXRlX2xpYi5FbnVtZXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIE1hcHMgW0NvbnRpbnVlXSB0byBbRmluaXNoZWRdIGFuZCBbU3RvcF0gdG8gW1VuZmluaXNoZWRdLiAqKVxuICAgIHZhbCBvZl9jb250aW51ZV9vcl9zdG9wIDogQ29udGludWVfb3Jfc3RvcC50IC0+IHRcblxuICAgICgqKiBNYXBzIFtGaW5pc2hlZF0gdG8gW0NvbnRpbnVlXSBhbmQgW1VuZmluaXNoZWRdIHRvIFtTdG9wXS4gKilcbiAgICB2YWwgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50XG4gIGVuZFxuXG4gIG1vZHVsZSBNZXJnZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgICB8IGBSaWdodCBvZiAncmlnaHRcbiAgICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICB2YWwgY29tcGFyZVxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGludClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gaW50XG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBib29sKVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gYm9vbFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgncmlnaHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCBsZWZ0IDogKCdsZWZ0LCBfKSB0IC0+ICdsZWZ0IG9wdGlvblxuICAgIHZhbCByaWdodCA6IChfLCAncmlnaHQpIHQgLT4gJ3JpZ2h0IG9wdGlvblxuICAgIHZhbCBsZWZ0X3ZhbHVlIDogKCdsZWZ0LCBfKSB0IC0+IGRlZmF1bHQ6J2xlZnQgLT4gJ2xlZnRcbiAgICB2YWwgcmlnaHRfdmFsdWUgOiAoXywgJ3JpZ2h0KSB0IC0+IGRlZmF1bHQ6J3JpZ2h0IC0+ICdyaWdodFxuXG4gICAgdmFsIHZhbHVlc1xuICAgICAgOiAgKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGxlZnRfZGVmYXVsdDonbGVmdFxuICAgICAgLT4gcmlnaHRfZGVmYXVsdDoncmlnaHRcbiAgICAgIC0+ICdsZWZ0ICogJ3JpZ2h0XG4gIGVuZFxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3QgaWYgdGhlIGludmFyaWFudHMgb2YgdGhlIGludGVybmFsIEFWTCBzZWFyY2ggdHJlZSBob2xkLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjLlxuICAgICAgd2l0aCB0aGUgc2FtZSBub3Rpb24gb2YgY29tcGFyaXNvbi4gKilcbiAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICgqKiBUaGUgZW1wdHkgbWFwLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBBIG1hcCB3aXRoIG9uZSAoa2V5LCBkYXRhKSBwYWlyLiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICdiIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHBvc3NpYmx5IHJlcGVhdGVkIGtleXMuIFRoZSB2YWx1ZXMgaW5cbiAgICAgIHRoZSBtYXAgZm9yIGEgZ2l2ZW4ga2V5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGRpZCBpbiB0aGUgYXNzb2NpYXRpb25cbiAgICAgIGxpc3QuICopXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgZm9sZGluZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuIFRoZSBhY2N1bXVsYXRvciBpcyBwZXIta2V5LlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICAjIGxldCBtYXAgPSBTdHJpbmcuTWFwLm9mX2FsaXN0X2ZvbGRcbiAgICAgICAgICAgICAgICAgICAgICBbIFwiYVwiLCAxOyBcImFcIiwgMTA7IFwiYlwiLCAyOyBcImJcIiwgMjA7IFwiYlwiLCAyMDAgXVxuICAgICAgICAgICAgICAgICAgICAgIH5pbml0OkludC5TZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICB+ZjpTZXQuYWRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmludF9zIFslc2V4cCAobWFwIDogSW50LlNldC50IFN0cmluZy5NYXAudCldOztcbiAgICAgICAgKChhICgxIDEwKSkgKGIgKDIgMjAgMjAwKSkpXG4gICAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIF19XG4gICopXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaXRlcmkgfml0ZXJpXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0XSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiB0YWtpbmcgYSBjb25jcmV0ZVxuICAgICAgZGF0YSBzdHJ1Y3R1cmUsIGl0IHRha2VzIGFuIGl0ZXJhdGlvbiBmdW5jdGlvbi4gIEZvciBpbnN0YW5jZSwgdG8gY29udmVydCBhIHN0cmluZyB0YWJsZVxuICAgICAgaW50byBhIG1hcDogW29mX2l0ZXJpIChtb2R1bGUgU3RyaW5nKSB+ZjooSGFzaHRibC5pdGVyaSB0YWJsZSldLiAgSXQgaXMgZmFzdGVyIHRoYW5cbiAgICAgIGFkZGluZyB0aGUgZWxlbWVudHMgb25lIGJ5IG9uZS4gKilcbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogTGlrZSBbb2ZfaXRlcmldIGV4Y2VwdCB0aGF0IGl0IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhIHNvcnRlZCBhcnJheSBvZiBrZXktZGF0YSBwYWlycy4gVGhlIGlucHV0IGFycmF5IG11c3QgYmUgc29ydGVkXG4gICAgICAoZWl0aGVyIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyKSwgYXMgZ2l2ZW4gYnkgdGhlIHJlbGV2YW50IGNvbXBhcmF0b3IsIGFuZFxuICAgICAgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGUga2V5cy4gSWYgZWl0aGVyIG9mIHRoZXNlIGNvbmRpdGlvbnMgZG9lcyBub3QgaG9sZCxcbiAgICAgIGFuIGVycm9yIGlzIHJldHVybmVkLiAgKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBMaWtlIFtvZl9zb3J0ZWRfYXJyYXldIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgYSBtYXAgd2l0aCBicm9rZW4gaW52YXJpYW50cyB3aGVuIGFuXG4gICAgICBbRXJyb3JdIHdvdWxkIGhhdmUgYmVlbiByZXR1cm5lZC4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhICogJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXkgYyAoU2VxdWVuY2UudG9fYXJyYXlcbiAgICAgIHNlcSldLCBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBhcnJheS5cblxuICAgICAgVGhlIHNlcXVlbmNlIHdpbGwgYmUgZm9sZGVkIG92ZXIgb25jZSwgYW5kIHRoZSBhZGRpdGlvbmFsIHRpbWUgY29tcGxleGl0eSBpcyB7ZSBPKG4pfS5cbiAgKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0IGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG5cbiAgICAgIElmIHlvdXIgc2VxdWVuY2UgaXMgaW5jcmVhc2luZywgdXNlIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXS5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX29yX2Vycm9yIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X29yX2Vycm9yIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9leG4gYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC5cblxuICAgICAgW29mX3NlcXVlbmNlX211bHRpIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX2ZvbGQgYyBzZXEgfmluaXQgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZm9sZCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmluaXQgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfcmVkdWNlIGMgc2VxIH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X3JlZHVjZSBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBUZXN0cyB3aGV0aGVyIGEgbWFwIGlzIGVtcHR5LiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFtsZW5ndGggbWFwXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW21hcF0uICBPKDEpLCBidXQgW1RyZWUubGVuZ3RoXSBpc1xuICAgICAgTyhuKS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIHRoZSBzcGVjaWZpZWQgbmV3IGJpbmRpbmc7IGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgYm91bmQsIGl0c1xuICAgICAgcHJldmlvdXMgYmluZGluZyBkaXNhcHBlYXJzLiAqKVxuICB2YWwgc2V0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthZGQgdCB+a2V5IH5kYXRhXSBhZGRzIGEgbmV3IGVudHJ5IHRvIFt0XSBtYXBwaW5nIFtrZXldIHRvIFtkYXRhXSBhbmQgcmV0dXJucyBbYE9rXVxuICAgICAgd2l0aCB0aGUgbmV3IG1hcCwgb3IgaWYgW2tleV0gaXMgYWxyZWFkeSBwcmVzZW50IGluIFt0XSwgcmV0dXJucyBbYER1cGxpY2F0ZV0uICopXG4gIHZhbCBhZGQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBJZiBba2V5XSBpcyBub3QgcHJlc2VudCB0aGVuIGFkZCBhIHNpbmdsZXRvbiBsaXN0LCBvdGhlcndpc2UsIGNvbnMgZGF0YSBvbnRvIHRoZVxuICAgICAgaGVhZCBvZiB0aGUgZXhpc3RpbmcgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogSWYgdGhlIGtleSBpcyBwcmVzZW50LCB0aGVuIHJlbW92ZSBpdHMgaGVhZCBlbGVtZW50OyBpZiB0aGUgcmVzdWx0IGlzIGVtcHR5LCByZW1vdmVcbiAgICAgIHRoZSBrZXkuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIHRoZSBlbXB0eSBsaXN0IGlmIHRoZXJlIGlzIG5vbmUuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICd2IGxpc3RcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gcmV0dXJucyBhIG5ldyBtYXAgW21dIHRoYXQgaXMgdGhlIHNhbWUgYXMgW3RdIG9uIGFsbCBrZXlzIGV4Y2VwdFxuICAgICAgZm9yIFtrZXldLCBhbmQgd2hvc2UgdmFsdWUgZm9yIFtrZXldIGlzIGRlZmluZWQgYnkgW2ZdLCBpLmUuLCBbZmluZCBtIGtleSA9IGYgKGZpbmRcbiAgICAgIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGY6KCd2IG9wdGlvbiAtPiAndiBvcHRpb24pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigndiBvcHRpb24gLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuXG4gICgqKiBSZXR1cm5zIFtTb21lIHZhbHVlXSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCBvciBbTm9uZV0gaWYgbm9uZSBleGlzdHMuICopXG4gIHZhbCBmaW5kIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndiBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgcmFpc2luZyBbQ2FtbC5Ob3RfZm91bmRdIG9yIFtOb3RfZm91bmRfc11cbiAgICAgIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYW55IGJpbmRpbmcgZm9yIHRoZSBrZXkgaW4gcXVlc3Rpb24gcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbbWVtIG1hcCBrZXldIHRlc3RzIHdoZXRoZXIgW21hcF0gY29udGFpbnMgYSBiaW5kaW5nIGZvciBba2V5XS4gKilcbiAgdmFsIG1lbSA6ICgnaywgXywgJ2NtcCkgdCAtPiAnayAtPiBib29sXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOignayAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCd2IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIHVudGlsIHRoZSBmaXJzdCB0aW1lIFtmXSByZXR1cm5zIFtTdG9wXS4gSWYgW2ZdIHJldHVybnMgW1N0b3BdLCB0aGUgZmluYWxcbiAgICAgIHJlc3VsdCBpcyBbVW5maW5pc2hlZF0uIE90aGVyd2lzZSwgdGhlIGZpbmFsIHJlc3VsdCBpcyBbRmluaXNoZWRdLiAqKVxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gICgqKiBJdGVyYXRlcyB0d28gbWFwcyBzaWRlIGJ5IHNpZGUuIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgTyhNICsgTikuICBJZiB0d29cbiAgICAgIGlucHV0cyBhcmUgW1soMCwgYSk7ICgxLCBhKV1dIGFuZCBbWygxLCBiKTsgKDIsIGIpXV0sIFtmXSB3aWxsIGJlIGNhbGxlZCB3aXRoIFtbKDAsXG4gICAgICBgTGVmdCBhKTsgKDEsIGBCb3RoIChhLCBiKSk7ICgyLCBgUmlnaHQgYildXS4gKilcbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyByZXBsYWNlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiopXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaSA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIENvbnZlcnQgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHRvIGEgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHVzaW5nIFtmXS4gKilcbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgKCoqIExpa2UgW21hcF9rZXlzXSwgYnV0IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgdFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XSwgdW50aWwgdGhlIGZpcnN0XG4gICAgICB0aW1lIHRoYXQgW2ZdIHJldHVybnMgW1N0b3AgX10uIElmIFtmXSByZXR1cm5zIFtTdG9wIGZpbmFsXSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gICAgICBpbW1lZGlhdGVseSB3aXRoIHRoZSB2YWx1ZSBbZmluYWxdLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgYW5kIHRoZSBmaW5hbFxuICAgICAgY2FsbCB0byBbZl0gcmV0dXJucyBbQ29udGludWUgbGFzdF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBbZmluaXNoIGxhc3RdLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gZGVjcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgKCoqIEZvbGRzIG92ZXIgdHdvIG1hcHMgc2lkZSBieSBzaWRlLCBsaWtlIFtpdGVyMl0uICopXG4gIHZhbCBmb2xkMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2EgLT4gJ2EpXG4gICAgLT4gJ2FcblxuICAoKiogW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl9tYXBpXSBydW4gaW4gTyhuICogbGdcbiAgICAgIG4pIHRpbWU7IHRoZXkgc2ltcGx5IGFjY3VtdWxhdGUgZWFjaCBrZXkgJiBkYXRhIHBhaXIgcmV0YWluZWQgYnkgW2ZdIGludG8gYSBuZXcgbWFwXG4gICAgICB1c2luZyBbYWRkXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOignayAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyaSA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyBmaWx0ZXJlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzXG4gICAgICBhcmd1bWVudHMuICopXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXBpIHQgfmZdIHJldHVybnMgdHdvIG5ldyBbdF1zLCB3aXRoIGVhY2gga2V5IGluIFt0XSBhcHBlYXJpbmcgaW5cbiAgICAgIGV4YWN0bHkgb25lIG9mIHRoZSByZXN1bHRpbmcgbWFwcyBkZXBlbmRpbmcgb24gaXRzIG1hcHBpbmcgaW4gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCd2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKipcbiAgICAge1tcbiAgICAgICBwYXJ0aXRpb25pX3RmIHQgfmZcbiAgICAgICA9XG4gICAgICAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgIGlmIGYgfmtleSB+ZGF0YVxuICAgICAgICAgdGhlbiBGaXJzdCBkYXRhXG4gICAgICAgICBlbHNlIFNlY29uZCBkYXRhKVxuICAgICBdfSAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUHJvZHVjZXMgW09rXSBvZiBhIG1hcCBpbmNsdWRpbmcgYWxsIGtleXMgaWYgYWxsIGRhdGEgaXMgW09rXSwgb3IgYW4gW0Vycm9yXVxuICAgICAgaW5jbHVkaW5nIGFsbCBlcnJvcnMgb3RoZXJ3aXNlLiAqKVxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFJldHVybnMgYSB0b3RhbCBvcmRlcmluZyBiZXR3ZWVuIG1hcHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHRvdGFsIG9yZGVyaW5nIHVzZWRcbiAgICAgIHRvIGNvbXBhcmUgZGF0YSBhc3NvY2lhdGVkIHdpdGggZXF1YWwga2V5cyBpbiB0aGUgdHdvIG1hcHMuICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIG1hcHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgbSkuY29tcGFyZV0gb2YgdGhlIG1hcCBbbV0gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnayBIYXNoLmZvbGRlciAtPiAndiBIYXNoLmZvbGRlciAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCBjbXAgbTEgbTJdIHRlc3RzIHdoZXRoZXIgdGhlIG1hcHMgW20xXSBhbmQgW20yXSBhcmUgZXF1YWwsIHRoYXQgaXMsIGNvbnRhaW5cbiAgICAgIHRoZSBzYW1lIGtleXMgYW5kIGFzc29jaWF0ZSBlYWNoIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlLiAgW2NtcF0gaXMgdGhlIGVxdWFsaXR5XG4gICAgICBwcmVkaWNhdGUgdXNlZCB0byBjb21wYXJlIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGtleXMgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sgbGlzdFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZGF0YSBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgKCoqIENyZWF0ZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBmcm9tIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gKCoqIGRlZmF1bHQgaXMgW2BJbmNyZWFzaW5nXSAqKVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiB7MiBBZGRpdGlvbmFsIG9wZXJhdGlvbnMgb24gbWFwc30gKilcblxuICAoKiogTWVyZ2VzIHR3byBtYXBzLiBUaGUgcnVudGltZSBpcyBPKGxlbmd0aCh0MSkgKyBsZW5ndGgodDIpKS4gWW91IHNob3VsZG4ndCB1c2UgdGhpc1xuICAgICAgZnVuY3Rpb24gdG8gbWVyZ2UgYSBsaXN0IG9mIG1hcHM7IGNvbnNpZGVyIHVzaW5nIFttZXJnZV9za2V3ZWRdIGluc3RlYWQuICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKiBBIHNwZWNpYWwgY2FzZSBvZiBbbWVyZ2VdLCBbbWVyZ2Vfc2tld2VkIHQxIHQyXSBpcyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGVcbiAgICAgIGJpbmRpbmdzIG9mIFt0MV0gYW5kIFt0Ml0uIEJpbmRpbmdzIHRoYXQgYXBwZWFyIGluIGJvdGggW3QxXSBhbmQgW3QyXSBhcmVcbiAgICAgIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgdmFsdWUgdXNpbmcgdGhlIFtjb21iaW5lXSBmdW5jdGlvbi4gSW4gYSBjYWxsXG4gICAgICBbY29tYmluZSB+a2V5IHYxIHYyXSwgdGhlIHZhbHVlIFt2MV0gY29tZXMgZnJvbSBbdDFdIGFuZCBbdjJdIGZyb20gW3QyXS5cblxuICAgICAgVGhlIHJ1bnRpbWUgb2YgW21lcmdlX3NrZXdlZF0gaXMgW08obWluKGwxLCBsMikgKiBsb2cobWF4KGwxLCBsMikpKV0sIHdoZXJlIFtsMV0gaXNcbiAgICAgIHRoZSBsZW5ndGggb2YgW3QxXSBhbmQgW2wyXSB0aGUgbGVuZ3RoIG9mIFt0Ml0uIFRoaXMgaXMgbGlrZWx5IHRvIGJlIGZhc3RlciB0aGFuXG4gICAgICBbbWVyZ2VdIHdoZW4gb25lIG9mIHRoZSBtYXBzIGlzIGEgbG90IHNtYWxsZXIsIG9yIHdoZW4geW91IG1lcmdlIGEgbGlzdCBvZiBtYXBzLiAqKVxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICAgIDogICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gcmV0dXJucyBhIGxpc3Qgb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uXG4gICAgICBJdCBpcyBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudFxuICAgICAgb2Ygc3RydWN0dXJlLiBUaGUga2V5cyBpbiB0aGUgb3V0cHV0IHNlcXVlbmNlIHdpbGwgYmUgaW4gc29ydGVkIG9yZGVyLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2RhdGFfZXF1YWxdIGlzIGF0IGxlYXN0IGFzIGVxdWF0aW5nIGFzIHBoeXNpY2FsIGVxdWFsaXR5OiB0aGF0XG4gICAgICBbcGh5c19lcXVhbCB4IHldIGltcGxpZXMgW2RhdGFfZXF1YWwgeCB5XS4gT3RoZXJ3aXNlLCBbc3ltbWV0cmljX2RpZmZdIG1heSBiZWhhdmUgaW5cbiAgICAgIHVuZXhwZWN0ZWQgd2F5cy4gRm9yIGV4YW1wbGUsIHdpdGggW35kYXRhX2VxdWFsOihmdW4gXyBfIC0+IGZhbHNlKV0gaXQgaXMgTk9UXG4gICAgICBuZWNlc3NhcmlseSB0aGUgY2FzZSB0aGUgcmVzdWx0aW5nIGNoYW5nZSBzZXF1ZW5jZSB3aWxsIGNvbnRhaW4gYW4gZWxlbWVudFxuICAgICAgWyhrLCBgVW5lcXVhbCBfKV0gZm9yIGV2ZXJ5IGtleSBba10gc2hhcmVkIGJ5IGJvdGggbWFwcy5cblxuICAgICAgV2FybmluZzogRmxvYXQgZXF1YWxpdHkgdmlvbGF0ZXMgdGhpcyBwcm9wZXJ0eSEgW3BoeXNfZXF1YWwgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXNcbiAgICAgIHRydWUsIGJ1dCBbRmxvYXQuKD0pIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzIGZhbHNlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW2ZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIGZvbGRzIGFjcm9zcyBhbiBpbXBsaWNpdCBzZXF1ZW5jZSBvZiBjaGFuZ2VzXG4gICAgICBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0sIGluIHNvcnRlZCBvcmRlciBieSBrZXlzLiBFcXVpdmFsZW50IHRvXG4gICAgICBbU2VxdWVuY2UuZm9sZCAoc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwpXSwgYW5kIG1vcmUgZWZmaWNpZW50LiAqKVxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooJ2EgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhKVxuICAgIC0+ICdhXG5cbiAgKCoqIFttaW5fZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW5pbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogW21heF9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1heGltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIFttYXBdIGlzIGVtcHR5LiAqKVxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc2ltaWxhciBmdW5jdGlvbnMgaW4gW0xpc3RdLiAqKVxuXG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGludFxuXG5cbiAgKCoqIFtzcGxpdCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba2V5XSwgdGhlIG1hcHBpbmcgb2YgW2tleV0gaWZcbiAgICAgIGFueSwgYW5kIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnRdIHJldHVybnMgW2BPayBtYXBdIHdoZXJlIFttYXBdIGNvbnRhaW5zIGFsbCB0aGVcbiAgICAgIFsoa2V5LCB2YWx1ZSldIHBhaXJzIGZyb20gdGhlIHR3byBpbnB1dCBtYXBzIGlmIGFsbCB0aGUga2V5cyBmcm9tIFtsb3dlcl9wYXJ0XSBhcmVcbiAgICAgIGxlc3MgdGhhbiBhbGwgdGhlIGtleXMgZnJvbSBbdXBwZXJfcGFydF0uICBPdGhlcndpc2UgaXQgcmV0dXJuc1xuICAgICAgW2BPdmVybGFwcGluZ19rZXlfcmFuZ2VzXS5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBuKSB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBsYXJnZXIgaW5wdXQgbWFwLiAgVGhpcyBjYW4gYmVcbiAgICAgIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gW01hcC5tZXJnZV0gb3IgcmVwZWF0ZWQgW01hcC5hZGRdLlxuXG4gICAgICB7W1xuICAgICAgICBhc3NlcnQgKG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgIHwgYE9rIHdob2xlX21hcCAtPlxuICAgICAgICAgICAgTWFwLnRvX2FsaXN0IHdob2xlX21hcFxuICAgICAgICAgICAgPSBMaXN0LmFwcGVuZCAodG9fYWxpc3QgbG93ZXJfcGFydCkgKHRvX2FsaXN0IHVwcGVyX3BhcnQpXG4gICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiB0cnVlKTtcbiAgICAgIF19ICopXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gICgqKiBbc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXSByZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBlbnRyaWVzIGZyb21cbiAgICAgIFt0XSB3aG9zZSBrZXlzIGxpZSBpbnNpZGUgdGhlIGludGVydmFsIGluZGljYXRlZCBieSBbfmxvd2VyX2JvdW5kXSBhbmRcbiAgICAgIFt+dXBwZXJfYm91bmRdLiAgSWYgdGhpcyBpbnRlcnZhbCBpcyBlbXB0eSwgYW4gZW1wdHkgbWFwIGlzIHJldHVybmVkLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgb3V0cHV0IG1hcC4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZVxuICAgICAgb3V0cHV0IG1hcC4gKilcbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmZdIGZvbGRzIFtmXSAod2l0aCBpbml0aWFsIHZhbHVlIFt+aW5pdF0pXG4gICAgICBvdmVyIGFsbCBrZXlzIChhbmQgdGhlaXIgYXNzb2NpYXRlZCB2YWx1ZXMpIHRoYXQgYXJlIGluIHRoZSByYW5nZSBbW21pbiwgbWF4XV1cbiAgICAgIChpbmNsdXNpdmUpLiAgKilcbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IG1pbjona1xuICAgIC0+IG1heDona1xuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSlcbiAgICAtPiAnYVxuXG4gICgqKiBbcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXhdIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgbGlzdCBvZiB0aGUgZWxlbWVudHMgd2hvc2Uga2V5c1xuICAgICAgbGllIGluIFtbbWluLCBtYXhdXSAoaW5jbHVzaXZlKSwgd2l0aCB0aGUgc21hbGxlc3Qga2V5IGJlaW5nIGF0IHRoZSBoZWFkIG9mIHRoZVxuICAgICAgbGlzdC4gKilcbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sgLT4gbWF4OidrIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIFtjbG9zZXN0X2tleSB0IGRpciBrXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XSB3aXRoIFtrZXldIGNsb3Nlc3QgdG9cbiAgICAgIFtrXSB0aGF0IHNhdGlzZmllcyB0aGUgZ2l2ZW4gaW5lcXVhbGl0eSBib3VuZC5cblxuICAgICAgRm9yIGV4YW1wbGUsIFtjbG9zZXN0X2tleSB0IGBMZXNzX3RoYW4ga10gd291bGQgYmUgdGhlIHBhaXIgd2l0aCB0aGUgY2xvc2VzdCBrZXkgdG9cbiAgICAgIFtrXSB3aGVyZSBba2V5IDwga10uXG5cbiAgICAgIFt0b19zZXF1ZW5jZV0gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgW2Nsb3Nlc3Rfa2V5XS4gIEl0IGlzIGxlc3NcbiAgICAgIGVmZmljaWVudCBmb3IgaW5kaXZpZHVhbCBsb29rdXBzIGJ1dCBtb3JlIGVmZmljaWVudCBmb3IgZmluZGluZyBtYW55IGVsZW1lbnRzIHN0YXJ0aW5nXG4gICAgICBhdCBzb21lIHZhbHVlLiAqKVxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdrXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbbnRoIHQgbl0gZmluZHMgdGhlIChrZXksIHZhbHVlKSBwYWlyIG9mIHJhbmsgbiAoaS5lLiwgc3VjaCB0aGF0IHRoZXJlIGFyZSBleGFjdGx5IG5cbiAgICAgIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBmb3VuZCBrZXkpLCBpZiBvbmUgZXhpc3RzLiAgTyhsb2cobGVuZ3RoIHQpICsgbikgdGltZS4gKilcbiAgdmFsIG50aCA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICdrICogJ3ZcblxuICAoKiogW3JhbmsgdCBrXSBJZiBba10gaXMgaW4gW3RdLCByZXR1cm5zIHRoZSBudW1iZXIgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tdIGluXG4gICAgICBbdF0sIGFuZCBbTm9uZV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgcmFuayA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gaW50IG9wdGlvblxuXG5cblxuICAoKiogW3RvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdF1cbiAgICAgIGdpdmVzIGEgc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGJldHdlZW4gW2tleXNfbGVzc19vcl9lcXVhbF90b10gYW5kXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUsIHByZXNlbnRlZCBpbiBbb3JkZXJdLiAgSWZcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dLCB0aGUgc2VxdWVuY2UgaXNcbiAgICAgIGVtcHR5LlxuXG4gICAgICBXaGVuIG5laXRoZXIgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gbm9yIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFyZVxuICAgICAgcHJvdmlkZWQsIHRoZSBjb3N0IGlzIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSB0byBwcm9kdWNlXG4gICAgICBlYWNoIGVsZW1lbnQuIElmIGVpdGhlciBpcyBwcm92aWRlZCAoYW5kIGlzIHVzZWQgYnkgdGhlIG9yZGVyIHBhcmFtZXRlclxuICAgICAgcHJvdmlkZWQpLCB0aGVuIHRoZSB0aGUgY29zdCBpcyBPKG4pIHVwIGZyb250LCBhbmQgYW1vcnRpemVkIE8oMSkgdG9cbiAgICAgIHByb2R1Y2UgZWFjaCBlbGVtZW50LiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2tcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XVxuICAgICAgc3BlY2lmaWVkIGJ5IFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiB3aGljaF0gdGFrZXMgYSBbc2VnbWVudF9vZl0gZnVuY3Rpb24gdGhhdFxuICAgICAgZGl2aWRlcyBbdF0gaW50byB0d28gKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCBzZWdtZW50X29mIGVsdCA9IGBMZWZ0IHwgc2VnbWVudF9vZiBlbHQgPSBgUmlnaHQgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIG9uIHRoZSBib3VuZGFyeSBvZiB0aGVcbiAgICAgIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieSBbd2hpY2hdOiBbYExhc3Rfb25fbGVmdF0geWllbGRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlXG4gICAgICBsZWZ0IHNlZ21lbnQsIHdoaWxlIFtgRmlyc3Rfb25fcmlnaHRdIHlpZWxkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcmlnaHQgc2VnbWVudC5cbiAgICAgIEl0IHJldHVybnMgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc3VicmFuZ2VdIHRha2VzIGEgW2NvbXBhcmVdIGZ1bmN0aW9uIHRoYXQgZGl2aWRlcyBbdF0gaW50byB0aHJlZVxuICAgICAgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50cyB3aXRoIHJlc3BlY3QgdG8gW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXTpcblxuICAgICAge3ZcbiAgICAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEluX3JhbmdlIHwgQWJvdmVfdXBwZXJfYm91bmQgfFxuICAgICAgdn1cblxuICAgICAgYW5kIHJldHVybnMgYSBtYXAgb2YgdGhlIFtJbl9yYW5nZV0gc2VnbWVudC5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBtICsgbikgd2hlcmUgW21dIGlzIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1hcCBhbmQgW25dIGlzIHRoZVxuICAgICAgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuIFRoZSBsaW5lYXIgdGVybSBpbiBbbl0gaXMgdG8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiBbY29tcGFyZV0gZG9lcyBub3Qgc2VnbWVudCBbdF0gYXMgc2hvd24gYWJvdmUsIG9yIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBpdHMgaW5wdXRzLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IGludCBNYXAuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSAoU3RyaW5nLnQsIGludCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgTWFwLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFtTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3NdXG4gICAgICAtLSBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLlxuXG4gICAgICBJbiBhZGRpdGlvbiwgd2hlbiB1c2luZyBbQEBkZXJpdmluZ10sIHRoZSByZXF1aXJlbWVudHMgb24gdGhlIGtleSBtb2R1bGUgYXJlIG9ubHlcbiAgICAgIHRob3NlIG5lZWRlZCB0byBzYXRpc2Z5IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZGVyaXZlIG9uIHRoZSBtYXAgaXRzZWxmLiBTYXkgeW91XG4gICAgICB3cml0ZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSB0ID0gaW50IE1hcC5NKFgpLnQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIF19XG5cbiAgICAgIHRoZW4gdGhpcyB3aWxsIGJlIHdlbGwgdHlwZWQgZXhhY3RseSBpZiBbWF0gY29udGFpbnMgYXQgbGVhc3Q6XG4gICAgICAtIGEgdHlwZSBbdF0gd2l0aCBubyBwYXJhbWV0ZXJzXG4gICAgICAtIGEgY29tcGFyYXRvciB3aXRuZXNzXG4gICAgICAtIGEgW2hhc2hfZm9sZF90XSBmdW5jdGlvbiB3aXRoIHRoZSByaWdodCB0eXBlICopXG4gIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgna2V5LCAndmFsdWUsICdjbXApIHQgOj0gKCdrZXksICd2YWx1ZSwgJ2NtcCkgdFxuXG4gICgqKiBbVXNpbmdfY29tcGFyYXRvcl0gaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW01hcF0sIGV4Y2VwdCB0aGVcbiAgICAgIGZ1bmN0aW9ucyB0YWtlIGEgW35jb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XSwgd2hlcmVhcyB0aGUgZnVuY3Rpb25zIGF0IHRoZVxuICAgICAgdG9wbGV2ZWwgb2YgW01hcF0gdGFrZSBhIFsoJ2ssICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnaywgKyd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoKydrLCArJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgdmFsIGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gOiAoXywgXywgXykgdFxuXG4gICAgICAoKiogW0J1aWxkX2luY3JlYXNpbmddIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIG1hcCBpbmNyZW1lbnRhbGx5IGZyb20gYVxuICAgICAgICAgIHNlcXVlbmNlIHRoYXQgaXMga25vd24gdG8gYmUgaW5jcmVhc2luZy5cblxuICAgICAgICAgIFRoZSB0b3RhbCB0aW1lIGNvbXBsZXhpdHkgb2YgY29uc3RydWN0aW5nIGEgbWFwIHRoaXMgd2F5IGlzIE8obiksIHdoaWNoIGlzIG1vcmVcbiAgICAgICAgICBlZmZpY2llbnQgdGhhbiB1c2luZyBbTWFwLmFkZF0gYnkgYSBsb2dhcml0aG1pYyBmYWN0b3IuXG5cbiAgICAgICAgICBUaGlzIGludGVyZmFjZSBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIGR1YWwgb2YgW3RvX3NlcXVlbmNlXSwgYnV0IHdlIGRvbid0IGhhdmVcbiAgICAgICAgICBhbiBlcXVhbGx5IG5lYXQgaWRpb20gZm9yIHRoZSBkdWFscyBvZiBzZXF1ZW5jZXMgKFtvZl9zZXF1ZW5jZV0gaXMgbXVjaCBsZXNzXG4gICAgICAgICAgZ2VuZXJhbCBiZWNhdXNlIGl0IGRvZXMgbm90IGFsbG93IHRoZSBzZXF1ZW5jZSB0byBiZSBwcm9kdWNlZCBhc3luY2hyb25vdXNseSkuICopXG4gICAgICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA6IHNpZ1xuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHR5cGUgKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICB2YWwgZW1wdHkgOiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgb2YgW2FkZF9leG5dIGlzIGFtb3J0aXplZCBjb25zdGFudC10aW1lIChpZiBbdF0gaXMgdXNlZFxuICAgICAgICAgICAgbGluZWFybHkpLCB3aXRoIGEgd29yc3QtY2FzZSBPKGxvZyhuKSkgdGltZS4gKilcbiAgICAgICAgdmFsIGFkZF9leG5cbiAgICAgICAgICA6ICAoJ2ssICd2LCAndykgdFxuICAgICAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAndykgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4ga2V5OidrXG4gICAgICAgICAgLT4gZGF0YTondlxuICAgICAgICAgIC0+ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBpcyBPKGxvZyhuKSkuICopXG4gICAgICAgIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ3cpIHQgLT4gKCdrLCAndiwgJ3cpIHRyZWVcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzM1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0XG4gICAgICA6ICAnayBIYXNoLmZvbGRlclxuICAgICAgLT4gJ3YgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgICgqKiBUbyBnZXQgYXJvdW5kIHRoZSB2YWx1ZSByZXN0cmljdGlvbiwgYXBwbHkgdGhlIGZ1bmN0b3IgYW5kIGluY2x1ZGUgaXQuIFlvdVxuICAgICAgICBjYW4gc2VlIGFuIGV4YW1wbGUgb2YgdGhpcyBpbiB0aGUgW1BvbHldIHN1Ym1vZHVsZSBiZWxvdy4gKilcbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgTWFwLiAqKVxuICBtb2R1bGUgUG9seSA6XG4gICAgU19wb2x5XG4gICAgd2l0aCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0ID0gKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgICBhbmQgdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdHJlZSA9XG4gICAgICAgICAgICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAoKiogQ3JlYXRlIGEgbWFwIGZyb20gYSB0cmVlIHVzaW5nIHRoZSBnaXZlbiBjb21wYXJhdG9yLiAqKVxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBFeHRyYWN0IGEgdHJlZSBmcm9tIGEgbWFwLiAqKVxuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbTWFwXX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IEFjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IEFjY2Vzc29yczJcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMyA9IEFjY2Vzc29yczNcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IENyZWF0b3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBDcmVhdG9yczJcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciA9IENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID1cbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLkdlbmVyaWNfcGhhbnRvbVxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgKCoqIFRoZSBbb3B0aW9uc10gdHlwZSBpcyB1c2VkIHRvIG1ha2UgW0FjY2Vzc29yc19nZW5lcmljXSBmbGV4aWJsZSBhcyB0byB3aGV0aGVyIGFcbiAgICAgIGNvbXBhcmF0b3IgaXMgcmVxdWlyZWQgdG8gYmUgcGFzc2VkIHRvIGNlcnRhaW4gZnVuY3Rpb25zLiAqKVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcblxuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG5cbiAgKCoqIG92ZXJyaWRlIFtDb250YWluZXJdJ3MgW21lbV0gKilcbiAgdmFsIG1lbSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiBib29sKSBvcHRpb25zXG5cbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2EgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnQpIG9wdGlvbnNcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0XG4gICAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSBuYW1lZCAtPiBvZl86KCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgbmFtZWQgLT4gKCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnQpIG9wdGlvbnNcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgZWx0IC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2IgLT4gZjooJ2EgZWx0IC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiBmOihbIGBMZWZ0IG9mICdhIGVsdCB8IGBSaWdodCBvZiAnYSBlbHQgfCBgQm90aCBvZiAnYSBlbHQgKiAnYSBlbHQgXSAtPiB1bml0KVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQgKiAnYSBlbHQgb3B0aW9uICogKCdhLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBncm91cF9ieVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgZWx0IC0+ICdhIGVsdCAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgbGlzdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdFxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSBlbHQsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICdhIGVsdCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2tleSAtPiBpbnQpXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAgIC0+ICdrZXlcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOignYSBlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhIGVsdCwgJ2EgZWx0KSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMwXG5cbiAgdHlwZSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcbiAgdmFsIGFkZCA6IHQgLT4gZWx0IC0+IHRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZWx0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcbiAgdmFsIGludGVyIDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiB0IC0+IHQgLT4gKGVsdCwgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6IHQgLT4gb2ZfOnQgLT4gYm9vbFxuICB2YWwgYXJlX2Rpc2pvaW50IDogdCAtPiB0IC0+IGJvb2xcblxuICB0eXBlIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldCA6IG5hbWVkIC0+IG9mXzpuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiBuYW1lZCAtPiBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+IGVsdCAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6IHQgLT4gaW5pdDonYiAtPiBmOihlbHQgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgdFxuICAgIC0+IHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mIGVsdCB8IGBSaWdodCBvZiBlbHQgfCBgQm90aCBvZiBlbHQgKiBlbHQgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gdFxuICB2YWwgcGFydGl0aW9uX3RmIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gdCAqIHRcbiAgdmFsIGVsZW1lbnRzIDogdCAtPiBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiB0IC0+IGVsdFxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiB0IC0+IGVsdFxuICB2YWwgY2hvb3NlIDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogdCAtPiBlbHRcbiAgdmFsIHNwbGl0IDogdCAtPiBlbHQgLT4gdCAqIGVsdCBvcHRpb24gKiB0XG4gIHZhbCBncm91cF9ieSA6IHQgLT4gZXF1aXY6KGVsdCAtPiBlbHQgLT4gYm9vbCkgLT4gdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdFxuICB2YWwgbnRoIDogdCAtPiBpbnQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgdG9fdHJlZSA6IHQgLT4gdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+IHRcbiAgICAtPiBlbHQgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgdFxuICAgIC0+IGNvbXBhcmU6KGVsdCAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIHRcbiAgICAtPiBzZWdtZW50X29mOihlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gdFxuICAgIC0+IHRcbiAgICAtPiAoZWx0LCBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMVxuXG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogXyB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgYWRkIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHVuaW9uIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGludGVyIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGRpZmYgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAnYSB0IC0+ICdhIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBpc19zdWJzZXQgOiAnYSB0IC0+IG9mXzonYSB0IC0+IGJvb2xcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgdHlwZSAnYSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXQgOiAnYSBuYW1lZCAtPiBvZl86J2EgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGVxdWFsIDogJ2EgbmFtZWQgLT4gJ2EgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgZWxlbWVudHMgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogJ2EgdCAtPiAnYVxuICB2YWwgY2hvb3NlIDogJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBzcGxpdCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgdmFsIGdyb3VwX2J5IDogJ2EgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIG50aCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgdG9fdHJlZSA6ICdhIHQgLT4gJ2EgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAnYSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgJ2EgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAnYSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzFfcGhhbnRvbV9pbnZhcmlhbnRcblxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIGludGVyIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSBuYW1lZCAtPiBvZl86KCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIG5hbWVkIC0+ICgnYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2IgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIHNwbGl0IDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdCAqICdhIG9wdGlvbiAqICgnYSwgJ2NtcCkgdFxuICB2YWwgZ3JvdXBfYnkgOiAoJ2EsICdjbXApIHQgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMV9waGFudG9tX2ludmFyaWFudFxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBtZW0gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBhZGQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHJlbW92ZSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCB1bmlvblxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgaW50ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIGRpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaXNfc3Vic2V0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IG9mXzooJ2EsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGFyZV9kaXNqb2ludFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdHlwZSAoJ2EsICdjbXApIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gb2ZfOignYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhIC0+ICdhY2N1bSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gIHZhbCBpdGVyMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gIHZhbCByZW1vdmVfaW5kZXhcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gaW50XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChOYW1lZCA6IFQyKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMwIChNIDogQWNjZXNzb3JzMCkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wLCAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXAsICdhIGVsdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXAsICdhIGVsdCBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoJ2EsICdjbXAsIGxlbjppbnQgLT4gZjooaW50IC0+ICdhIGVsdCkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfLCAnYSBlbHQgbGlzdCAtPiAnYSBlbHQgbGlzdCkgb3B0aW9uc1xuXG4gICgqKiBUaGUgdHlwZXMgb2YgW21hcF0gYW5kIFtmaWx0ZXJfbWFwXSBhcmUgc3VidGxlLiAgVGhlIGlucHV0IHNldCwgWygnYSwgXykgc2V0XSxcbiAgICAgIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgdGhlc2UgZnVuY3Rpb25zIHRha2UgYSBzZXQgb2YgKmFueSogdHlwZSwgd2l0aCBhbnlcbiAgICAgIGNvbXBhcmF0b3IsIHdoaWxlIHRoZSBvdXRwdXQgc2V0LCBbKCdiLCAnY21wKSB0XSwgcmVmbGVjdHMgdGhhdCB0aGUgb3V0cHV0IHNldCBoYXNcbiAgICAgIHRoZSBwYXJ0aWN1bGFyIFsnY21wXSBvZiB0aGUgY3JlYXRpb24gZnVuY3Rpb24uICBUaGUgY29tcGFyYXRvciBjYW4gY29tZSBpbiBvbmUgb2ZcbiAgICAgIHRocmVlIHdheXMsIGRlcGVuZGluZyBvbiB3aGljaCBzZXQgbW9kdWxlIGlzIHVzZWRcblxuICAgICAgLSBbU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBjb21lcyBhcyBhbiBhcmd1bWVudFxuICAgICAgLSBbU2V0LlBvbHkubWFwXSAtLSBjb21wYXJhdG9yIGlzIHBvbHltb3JwaGljIGNvbXBhcmlzb25cbiAgICAgIC0gW0Zvby5TZXQubWFwXSAtLSBjb21wYXJhdG9yIGlzIFtGb28uY29tcGFyYXRvcl0gKilcbiAgdmFsIG1hcCA6ICgnYiwgJ2NtcCwgKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IgZWx0KSAtPiAoJ2IsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBlbHQgb3B0aW9uKSAtPiAoJ2IsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczAgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlIHRcbiAgdHlwZSB0cmVlXG4gIHR5cGUgZWx0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIHVuaW9uX2xpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogZWx0IFNlcXVlbmNlLnQgLT4gdFxuICB2YWwgb2ZfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogZWx0IGFycmF5IC0+IHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6IGVsdCBhcnJheSAtPiB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+IGVsdCkgLT4gdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiBlbHQgbGlzdCAtPiBlbHQgbGlzdFxuICB2YWwgbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gZWx0KSAtPiB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gZWx0IG9wdGlvbikgLT4gdFxuICB2YWwgb2ZfdHJlZSA6IHRyZWUgLT4gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYSB0XG4gIHZhbCB1bmlvbl9saXN0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogJ2EgU2VxdWVuY2UudCAtPiAnYSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICdhIGFycmF5IC0+ICdhIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogJ2EgbGlzdCAtPiAnYSBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgb2ZfdHJlZSA6ICdhIHRyZWUgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+ICdhKSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogJ2EgbGlzdCAtPiAnYSBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAoJ2IsICdjbXApIHRcbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB1bmlvbl9saXN0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2xpc3QgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgdmFsIG1hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdiLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsIF8pIHNldFxuICAgIC0+IGY6KCdhIC0+ICdiKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2IsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgXykgc2V0XG4gICAgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl90cmVlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczAgKE0gOiBDcmVhdG9yczApID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczBcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMwXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHdpdGggdHlwZSB0cmVlIDo9IHRyZWVcbiAgICB3aXRoIHR5cGUgZWx0IDo9IGVsdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMxXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3QgOiAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCAnY21wKSB0IC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+ICgnZWx0LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdCA6IChtb2R1bGUgQ29tcGFyZV9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsX21fX3QgOiAobW9kdWxlIEVxdWFsX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdlbHQsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5cbiAgdmFsIGhhc2hfbV9fdCA6IChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgXykgdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgKCoqIFNldHMgYmFzZWQgb24geyFDb21wYXJhdG9yLlN9LlxuXG4gICAgICBDcmVhdG9ycyByZXF1aXJlIGEgY29tcGFyYXRvciBhcmd1bWVudCB0byBiZSBwYXNzZWQgaW4sIHdoZXJlYXMgYWNjZXNzb3JzIHVzZSB0aGVcbiAgICAgIGNvbXBhcmF0b3IgcHJvdmlkZWQgYnkgdGhlIGlucHV0IHNldC4gKilcblxuICAoKiogVGhlIHR5cGUgb2YgYSBzZXQuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCwgYW5kXG4gICAgICB0aGUgc2Vjb25kIGlkZW50aWZpZXMgdGhlIGNvbXBhcmF0b3IsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdFxuICAgICAgaXMgdXNlZCBmb3Igb3JkZXJpbmcgZWxlbWVudHMgaW4gdGhpcyBzZXQuICBNYW55IG9wZXJhdGlvbnMgKGUuZy4sIHshdW5pb259KSxcbiAgICAgIHJlcXVpcmUgdGhhdCB0aGV5IGJlIHBhc3NlZCBzZXRzIHdpdGggdGhlIHNhbWUgZWxlbWVudCB0eXBlIGFuZCB0aGUgc2FtZSBjb21wYXJhdG9yXG4gICAgICB0eXBlLiAqKVxuICB0eXBlICgnZWx0LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnZWx0LCAnY21wKSB0IDo9ICgnZWx0LCAnY21wKSB0XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0cyBpbnRlcm5hbCBpbnZhcmlhbnRzIG9mIHRoZSBzZXQgZGF0YSBzdHJ1Y3R1cmUuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Y1xuICAgICAgd2l0aCB0aGUgc2FtZSBub3Rpb24gb2YgY29tcGFyaXNvbi4gKilcbiAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICgqKiBDcmVhdGVzIGFuIGVtcHR5IHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvci4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yIHRoYXQgY29udGFpbnMgb25seSB0aGUgcHJvdmlkZWRcbiAgICAgIGVsZW1lbnQuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoZSBzZXQuIFtPKDEpXS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuXG4gICgqKiBbaXNfZW1wdHkgdF0gaXMgW3RydWVdIGlmZiBbdF0gaXMgZW1wdHkuICBbTygxKV0uICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW21lbSB0IGFdIHJldHVybnMgW3RydWVdIGlmZiBbYV0gaXMgaW4gW3RdLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBib29sXG5cbiAgKCoqIFthZGQgdCBhXSByZXR1cm5zIGEgbmV3IHNldCB3aXRoIFthXSBhZGRlZCB0byBbdF0sIG9yIHJldHVybnMgW3RdIGlmIFttZW0gdCBhXS5cbiAgICAgIFtPKGxvZyBuKV0uICopXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtyZW1vdmUgdCBhXSByZXR1cm5zIGEgbmV3IHNldCB3aXRoIFthXSByZW1vdmVkIGZyb20gW3RdIGlmIFttZW0gdCBhXSwgb3IgcmV0dXJucyBbdF1cbiAgICAgIG90aGVyd2lzZS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt1bmlvbiB0MSB0Ml0gcmV0dXJucyB0aGUgdW5pb24gb2YgdGhlIHR3byBzZXRzLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt1bmlvbiBjIGxpc3RdIHJldHVybnMgdGhlIHVuaW9uIG9mIGFsbCB0aGUgc2V0cyBpbiBbbGlzdF0uICBUaGVcbiAgICAgIFtjb21wYXJhdG9yXSBhcmd1bWVudCBpcyByZXF1aXJlZCBmb3IgdGhlIGNhc2Ugd2hlcmUgW2xpc3RdIGlzIGVtcHR5LlxuICAgICAgW08obWF4KExpc3QubGVuZ3RoIGxpc3QsIG4gbG9nIG4pKV0sIHdoZXJlIFtuXSBpcyB0aGUgc3VtIG9mIHNpemVzIG9mIHRoZSBpbnB1dCBzZXRzLiAqKVxuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2ludGVyIHQxIHQyXSBjb21wdXRlcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHNldHMgW3QxXSBhbmQgW3QyXS4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGludGVyIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2RpZmYgdDEgdDJdIGNvbXB1dGVzIHRoZSBzZXQgZGlmZmVyZW5jZSBbdDEgLSB0Ml0sIGkuZS4sIHRoZSBzZXQgY29udGFpbmluZyBhbGxcbiAgICAgIGVsZW1lbnRzIGluIFt0MV0gdGhhdCBhcmUgbm90IGluIFt0Ml0uICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3ltbWV0cmljX2RpZmYgdDEgdDJdIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS4gSXQgaXNcbiAgICAgIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50IG9mXG4gICAgICBzdHJ1Y3R1cmUuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuXG4gICgqKiBbY29tcGFyZV9kaXJlY3QgdDEgdDJdIGNvbXBhcmVzIHRoZSBzZXRzIFt0MV0gYW5kIFt0Ml0uICBJdCByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdFxuICAgICAgYXMgW2NvbXBhcmVdLCBidXQgdW5saWtlIGNvbXBhcmUsIGRvZXNuJ3QgcmVxdWlyZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIGluIGZvciB0aGVcbiAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgc2V0LiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBzZXRzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIHMpLmNvbXBhcmVdIG9mIHRoZSBzZXQgW3NdIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2EgSGFzaC5mb2xkZXIgLT4gKCdhLCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZSB0d28gc2V0cyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildICopXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbZXhpc3RzIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiB0aGVyZSBleGlzdHMgYW4gW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYV0uICBbTyhuKV0sXG4gICAgICBidXQgcmV0dXJucyBhcyBzb29uIGFzIGl0IGZpbmRzIGFuIFthXSBmb3Igd2hpY2ggW2YgYV0uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBbZm9yX2FsbCB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgZm9yIGFsbCBbYV0gaW4gW3RdLCBbZiBhXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXNcbiAgICAgIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbbm90IChmIGEpXS4gKilcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBbY291bnQgdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW3RydWVdLlxuICAgICAgW08obildLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFtzdW0gdF0gcmV0dXJucyB0aGUgc3VtIG9mIFtmIHRdIGZvciBlYWNoIFt0XSBpbiB0aGUgc2V0LlxuICAgICAgW08obildLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIC0+ICdzdW0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBbZmluZCB0IGZdIHJldHVybnMgYW4gZWxlbWVudCBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIHRydWUsIHdpdGggbm8gZ3VhcmFudGVlIGFzXG4gICAgICB0byB3aGljaCBlbGVtZW50IGlzIHJldHVybmVkLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGUgZWxlbWVudCBpc1xuICAgICAgZm91bmQuICopXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbZmluZF9tYXAgdCBmXSByZXR1cm5zIFtiXSBmb3Igc29tZSBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhID0gU29tZSBiXS4gIElmIG5vIHN1Y2hcbiAgICAgIFthXSBleGlzdHMsIHRoZW4gW2ZpbmRdIHJldHVybnMgW05vbmVdLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGVcbiAgICAgIGVsZW1lbnQgaXMgZm91bmQuICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuXG4gICgqKiBMaWtlIFtmaW5kXSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG5cbiAgKCoqIFtudGggdCBpXSByZXR1cm5zIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IG9mIFt0XSwgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlXG4gICAgICBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbTm9uZV0gaWYgW2kgPCAwXSBvciBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gICgqKiBbcmVtb3ZlX2luZGV4IHQgaV0gcmV0dXJucyBhIHZlcnNpb24gb2YgW3RdIHdpdGggdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgcmVtb3ZlZCxcbiAgICAgIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZSBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbdF0gaWYgW2kgPCAwXSBvclxuICAgICAgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIHRydWUgaWZmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXS4gKilcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2FyZV9kaXNqb2ludCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIFtpc19lbXB0eSAoaW50ZXIgdDEgdDIpXSwgYnV0IGlzIG1vcmVcbiAgICAgIGVmZmljaWVudC4gKilcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbTmFtZWRdIGFsbG93cyB0aGUgdmFsaWRhdGlvbiBvZiBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBzZXRzLiAgQVxuICAgICAgW05hbWVkLnRdIGlzIGEgcmVjb3JkIG9mIGEgc2V0IGFuZCBhIG5hbWUsIHdoZXJlIHRoZSBuYW1lIGlzIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMsXG4gICAgICBhbmQgW05hbWVkLmlzX3N1YnNldF0gYW5kIFtOYW1lZC5lcXVhbF0gdmFsaWRhdGUgc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzXG4gICAgICByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGZvciwgZS5nLixcbiAgICAgIHtbXG4gICAgICAgIE5hbWVkLmlzX3N1YnNldCB7IHNldCA9IHNldDE7IG5hbWUgPSBcInNldDFcIiB9IH5vZl86e3NldCA9IHNldDI7IG5hbWUgPSBcInNldDJcIiB9XG4gICAgICBdfVxuXG4gICAgICBsb29rcyBsaWtlXG4gICAgICB7dlxuICAgICAgICAoXCJzZXQxIGlzIG5vdCBhIHN1YnNldCBvZiBzZXQyXCIgKGludmFsaWRfZWxlbWVudHMgKC4uLmVsZW1lbnRzIG9mIHNldDEgLSBzZXQyLi4uKSkpXG4gICAgIHZ9XG5cbiAgICAgIHNvIFtuYW1lXSBzaG91bGQgYmUgYSBub3VuIHBocmFzZSB0aGF0IGRvZXNuJ3Qgc291bmQgYXdrd2FyZCBpbiB0aGUgYWJvdmUgZXJyb3JcbiAgICAgIG1lc3NhZ2UuICBFdmVuIHRob3VnaCBpdCBhZGRzIHZlcmJvc2l0eSwgY2hvb3NpbmcgW25hbWVdcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHBocmFzZVxuICAgICAgXCJ0aGUgc2V0IG9mXCIgb2Z0ZW4gbWFrZXMgdGhlIGVycm9yIG1lc3NhZ2Ugc291bmQgbW9yZSBuYXR1cmFsLlxuICAqKVxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgeyBzZXQgOiAoJ2EsICdjbXApIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXSBhbmQgYVxuICAgICAgICBodW1hbi1yZWFkYWJsZSBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW09rICgpXSBpZiBbdDFdIGlzIGVxdWFsIHRvIFt0Ml0gYW5kIGEgaHVtYW4tcmVhZGFibGVcbiAgICAgICAgZXJyb3Igb3RoZXJ3aXNlLiAgKilcbiAgICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICAoKiogVGhlIGxpc3Qgb3IgYXJyYXkgZ2l2ZW4gdG8gW29mX2xpc3RdIGFuZCBbb2ZfYXJyYXldIG5lZWQgbm90IGJlIHNvcnRlZC4gKilcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdG9fbGlzdF0gYW5kIFt0b19hcnJheV0gcHJvZHVjZSBzZXF1ZW5jZXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICBjb21wYXJhdG9yLiAqKVxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIENyZWF0ZSBzZXQgZnJvbSBzb3J0ZWQgYXJyYXkuICBUaGUgaW5wdXQgbXVzdCBiZSBzb3J0ZWQgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3JcbiAgICAgIGRlc2NlbmRpbmcgb3JkZXIgYXMgZ2l2ZW4gYnkgdGhlIGNvbXBhcmF0b3IpIGFuZCBjb250YWluIG5vIGR1cGxpY2F0ZXMsIG90aGVyd2lzZSB0aGVcbiAgICAgIHJlc3VsdCBpcyBhbiBlcnJvci4gIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgW08obildLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBTaW1pbGFyIHRvIFtvZl9zb3J0ZWRfYXJyYXldLCBidXQgd2l0aG91dCBjaGVja2luZyB0aGUgaW5wdXQgYXJyYXkuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EpXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzdGFibGVfZGVkdXBfbGlzdF0gaXMgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgW0xpc3RdIG1vZHVsZSBiZWNhdXNlIHRoZVxuICAgICAgaW1wbGVtZW50YXRpb24gcmVsaWVzIGNydWNpYWxseSBvbiBzZXRzLCBhbmQgYmVjYXVzZSBkb2luZyBzbyBhbGxvd3Mgb25lIHRvIGF2b2lkIHVzZXNcbiAgICAgIG9mIHBvbHltb3JwaGljIGNvbXBhcmlzb24gYnkgaW5zdGFudGlhdGluZyB0aGUgZnVuY3RvciBhdCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvblxuICAgICAgb2YgW0NvbXBhcmF0b3JdIGFuZCB1c2luZyB0aGUgcmVzdWx0aW5nIFtzdGFibGVfZGVkdXBfbGlzdF0uICopXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXykgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAoKiogW21hcCBjIHQgfmZdIHJldHVybnMgYSBuZXcgc2V0IGNyZWF0ZWQgYnkgYXBwbHlpbmcgW2ZdIHRvIGV2ZXJ5IGVsZW1lbnQgaW5cbiAgICAgIFt0XS4gIFRoZSByZXR1cm5lZCBzZXQgaXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIFtjb21wYXJhdG9yXS4gIFtPKG4gbG9nIG4pXS4gKilcbiAgdmFsIG1hcCA6ICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIHshbWFwfSwgZXhjZXB0IGVsZW1lbnRzIGZvciB3aGljaCBbZl0gcmV0dXJucyBbTm9uZV0gd2lsbCBiZSBkcm9wcGVkLiAgKilcbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOignYSAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyB0aGUgc3Vic2V0IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAgW08obiBsb2dcbiAgICAgIG4pXS4gKilcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gZm9sZHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNldCBmcm9tIHNtYWxsZXN0IHRvIGxhcmdlc3QuICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdCwgc2hvcnQgY2lyY3VpdGluZyB0aGUgZm9sZCBpZiBbZiBhY2N1bSB4XSBpcyBhbiBbRXJyb3IgX10gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG5cbiAgKCoqIExpa2UgeyFmb2xkfSwgZXhjZXB0IHRoYXQgaXQgZ29lcyBmcm9tIHRoZSBsYXJnZXN0IHRvIHRoZSBzbWFsbGVzdCBlbGVtZW50LiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYSAtPiAnYWNjdW0gLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2l0ZXIgdCB+Zl0gY2FsbHMgW2ZdIG9uIGV2ZXJ5IGVsZW1lbnQgb2YgW3RdLCBnb2luZyBpbiBvcmRlciBmcm9tIHRoZSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdC4gICopXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZSB0d28gc2V0cyBzaWRlIGJ5IHNpZGUuICBDb21wbGV4aXR5IGlzIFtPKG0rbildIHdoZXJlIFttXSBhbmQgW25dIGFyZSB0aGUgc2l6ZXNcbiAgICAgIG9mIHRoZSB0d28gaW5wdXQgc2V0cy4gIEFzIGFuIGV4YW1wbGUsIHdpdGggdGhlIGlucHV0cyBbMDsgMV0gYW5kIFsxOyAyXSwgW2ZdIHdpbGwgYmVcbiAgICAgIGNhbGxlZCB3aXRoIFtgTGVmdCAwXTsgW2BCb3RoICgxLCAxKV07IGFuZCBbYFJpZ2h0IDJdLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBpZiBbYSwgYiA9IHBhcnRpdGlvbl90ZiBzZXQgfmZdIHRoZW4gW2FdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZWQgW3RydWVdLFxuICAgICAgYW5kIFtiXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VzIFtmYWxzZV0uICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFNhbWUgYXMgeyF0b19saXN0fS4gKilcbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtaW5fZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBSZXR1cm5zIHRoZSBsYXJnZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICAqKVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1heF9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIHJldHVybnMgYW4gYXJiaXRyYXJ5IGVsZW1lbnQsIG9yIFtOb25lXSBpZiB0aGUgc2V0IGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshY2hvb3NlfSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBbc3BsaXQgdCB4XSBwcm9kdWNlcyBhIHRyaXBsZSBbKHQxLCBtYXliZV94LCB0MildIHdoZXJlIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50c1xuICAgICAgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSwgW21heWJlX3hdIGlzIHRoZSBtZW1iZXIgKGlmIGFueSkgb2YgW3RdIHdoaWNoIGNvbXBhcmVzIGVxdWFsXG4gICAgICB0byBbeF0sIGFuZCBbdDJdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGFyZ2VyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIGlmIFtlcXVpdl0gaXMgYW4gZXF1aXZhbGVuY2UgcHJlZGljYXRlLCB0aGVuIFtncm91cF9ieSBzZXQgfmVxdWl2XSBwcm9kdWNlcyBhIGxpc3RcbiAgICAgIG9mIGVxdWl2YWxlbmNlIGNsYXNzZXMgKGkuZS4sIGEgc2V0LXRoZW9yZXRpYyBxdW90aWVudCkuICBFLmcuLFxuXG4gICAgICB7W1xuICAgICAgICBsZXQgY2hhcnMgPSBTZXQub2ZfbGlzdCBbJ0EnOyAnYSc7ICdiJzsgJ2MnXSBpblxuICAgICAgICBsZXQgZXF1aXYgYyBjJyA9IENoYXIuZXF1YWwgKENoYXIudXBwZXJjYXNlIGMpIChDaGFyLnVwcGVyY2FzZSBjJykgaW5cbiAgICAgICAgZ3JvdXBfYnkgY2hhcnMgfmVxdWl2XG4gICAgICBdfVxuXG4gICAgICBwcm9kdWNlczpcblxuICAgICAge1tcbiAgICAgICAgW1NldC5vZl9saXN0IFsnQSc7J2EnXTsgU2V0LnNpbmdsZXRvbiAnYic7IFNldC5zaW5nbGV0b24gJ2MnXVxuICAgICAgXX1cblxuICAgICAgW2dyb3VwX2J5XSBydW5zIGluIE8obl4yKSB0aW1lLCBzbyBpZiB5b3UgaGF2ZSBhIGNvbXBhcmlzb24gZnVuY3Rpb24sIGl0J3MgdXN1YWxseVxuICAgICAgbXVjaCBmYXN0ZXIgdG8gdXNlIFtTZXQub2ZfbGlzdF0uICopXG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICAoKiogW3RvX3NlcXVlbmNlIHRdIGNvbnZlcnRzIHRoZSBzZXQgW3RdIHRvIGEgc2VxdWVuY2Ugb2YgdGhlIGVsZW1lbnRzIGJldHdlZW5cbiAgICAgIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmQgW2xlc3Nfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSBpbiB0aGUgb3JkZXIgaW5kaWNhdGVkIGJ5XG4gICAgICBbb3JkZXJdLiAgSWYgW2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBsZXNzX29yX2VxdWFsX3RvXSB0aGUgc2VxdWVuY2UgaXMgZW1wdHkuICBDb3N0IGlzXG4gICAgICBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgZm9yIGVhY2ggZWxlbWVudCBwcm9kdWNlZC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gW3RdIHNwZWNpZmllZCBieVxuICAgICAgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiB3aGljaF0gdGFrZXMgYSBbc2VnbWVudF9vZl0gZnVuY3Rpb24gdGhhdFxuICAgICAgZGl2aWRlcyBbdF0gaW50byB0d28gKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCBzZWdtZW50X29mIGVsdCA9IGBMZWZ0IHwgc2VnbWVudF9vZiBlbHQgPSBgUmlnaHQgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSByZXR1cm5zIHRoZSBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiB0aGUgc2VnbWVudHMgYXNcbiAgICAgIHNwZWNpZmllZCBieSBbd2hpY2hdOiBbYExhc3Rfb25fbGVmdF0geWllbGRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIGxlZnQgc2VnbWVudCxcbiAgICAgIHdoaWxlIFtgRmlyc3Rfb25fcmlnaHRdIHlpZWxkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcmlnaHQgc2VnbWVudC4gIEl0IHJldHVybnNcbiAgICAgIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBQcm9kdWNlcyB0aGUgZWxlbWVudHMgb2YgdGhlIHR3byBzZXRzIGJldHdlZW4gW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2xlc3Nfb3JfZXF1YWxfdG9dIGluIFtvcmRlcl0sIG5vdGluZyB3aGV0aGVyIGVhY2ggZWxlbWVudCBhcHBlYXJzIGluIHRoZSBsZWZ0IHNldCxcbiAgICAgIHRoZSByaWdodCBzZXQsIG9yIGJvdGguICBJbiB0aGUgYm90aCBjYXNlLCBib3RoIGVsZW1lbnRzIGFyZSByZXR1cm5lZCwgaW4gY2FzZSB0aGVcbiAgICAgIGNhbGxlciBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiBlbGVtZW50cyB0aGF0IGFyZSBlcXVhbCB0byB0aGUgc2V0cycgY29tcGFyYXRvci4gIFJ1bnNcbiAgICAgIGluIE8obGVuZ3RoIHQgKyBsZW5ndGggdCcpLiAqKVxuICBtb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgICAgfCBMZWZ0IG9mICdhXG4gICAgICB8IFJpZ2h0IG9mICdiXG4gICAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSBTZXQuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IChTdHJpbmcudCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgU2V0LnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtTZXQuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzLFxuICAgICAgaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS4gKilcbiAgbW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBTZXQuICopXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICgqKiBVc2luZyBjb21wYXJhdG9yIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtTZXRdLCBleGNlcHQgdGhlIGZ1bmN0aW9uc1xuICAgICAgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XSB3aGVyZSB0aGUgZnVuY3Rpb25zIGF0IHRoZSB0b3BsZXZlbCBvZlxuICAgICAgW1NldF0gdGFrZXMgYSBbKCdlbHQsICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2VsdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgICgqKiBBIFtUcmVlLnRdIGNvbnRhaW5zIGp1c3QgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBhIHNldCBpcyBiYXNlZCBvbiwgd2l0aG91dFxuICAgICAgICAgIGluY2x1ZGluZyB0aGUgY29tcGFyYXRvci4gIEFjY29yZGluZ2x5LCBhbnkgb3BlcmF0aW9uIG9uIGEgW1RyZWUudF0gbXVzdCBhbHNvIHRha2VcbiAgICAgICAgICBhcyBhbiBhcmd1bWVudCB0aGUgY29ycmVzcG9uZGluZyBjb21wYXJhdG9yLiAqKVxuICAgICAgdHlwZSAoJ2EsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICAgICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgICAgICB7IHRyZWUgOiAoJ2EsICdjbXApIHRcbiAgICAgICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgICB9XG5cbiAgICAgICAgdmFsIGlzX3N1YnNldFxuICAgICAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiBvZl86KCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgICAgdmFsIGVxdWFsXG4gICAgICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnRcbiAgICAgICAgd2l0aCBtb2R1bGUgTmFtZWQgOj0gTmFtZWRcblxuICAgICAgdmFsIGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gOiAoXywgXykgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzMlxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnZWx0IEhhc2guZm9sZGVyIC0+ICgnZWx0LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW1NldF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBBY2Nlc3NvcnMwXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBBY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBBY2Nlc3NvcnMyXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yczAgPSBDcmVhdG9yczBcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gQ3JlYXRvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IENyZWF0b3JzMlxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMlxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9XG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNldF9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFbXB0eVxuICAgICgqIChMZWFmIHgpIGlzIHRoZSBzYW1lIGFzIChOb2RlIChFbXB0eSwgeCwgRW1wdHksIDEsIDEpKSBidXQgdXNlcyBsZXNzIHNwYWNlLiAqKVxuICAgIHwgTGVhZiBvZiAnYVxuICAgICgqIGZpcnN0IGludCBpcyBoZWlnaHQsIHNlY29uZCBpcyBzdWItdHJlZSBzaXplICopXG4gICAgfCBOb2RlIG9mICdhIHQgKiAnYSAqICdhIHQgKiBpbnQgKiBpbnRcblxuICB0eXBlICdhIHRyZWUgPSAnYSB0XG5cbiAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGUgY2hpbGRyZW4gZGlmZmVyIGJ5XG4gICAgIGF0IG1vc3QgMi4gKilcbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHYgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2VsdCBsb3dlciB2IDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfZWx0IHYgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIHYgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBoLCBuKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgbiA9IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSB2KSBjb21wYXJlX2VsdCBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgdikgdXBwZXIgY29tcGFyZV9lbHQgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfZWx0IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfZWx0IHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgIGlmIGggPSAxXG4gICAgdGhlbiBMZWFmIHZcbiAgICBlbHNlIChcbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLlNldCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgayA9IGYgaSBpblxuICAgICAgICBMZWFmIGtcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIEVtcHR5XG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgKExlYWYga3IpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICAoKiBXZSBkb24ndCBjaGVjayBpZiB0aGUgYXJyYXkgaXMgc29ydGVkIG9yIGtleXMgYXJlIGR1cGxpY2F0ZWQsIGJlY2F1c2UgdGhhdFxuICAgICAgICAgY2hlY2tpbmcgaXMgc2xvd2VyIHRoYW4gdGhlIHdob2xlIFtvZl9zb3J0ZWRfYXJyYXldIGZ1bmN0aW9uICopXG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyIHx8IGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKGkpIGFycmF5LihpICsgMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm5cbiAgICAgICAgICAgICAgICAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdCkpXG4gIDs7XG5cbiAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gIGxldCBiYWwgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgobCk+aChyKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsclxuICAgICAgICB0aGVuIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIGxydiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBsbCk7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBFbXB0eSkgbHJ2IChjcmVhdGUgRW1wdHkgdiByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChyKT5oKGwpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChybCwgcnYsIHJyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgcmx2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IHJyKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBFbXB0eSkgcmx2IChjcmVhdGUgRW1wdHkgcnYgcnIpXG4gICAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgaWYgaCA9IDEgdGhlbiBMZWFmIHYgZWxzZSBOb2RlIChsLCB2LCByLCBoLCBzbCArIHNyICsgMSkpXG4gIDs7XG5cbiAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgZXhjZXB0aW9uIFNhbWVcblxuICBsZXQgYWRkIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gTGVhZiB4XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIHJhaXNlIFNhbWVcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGNyZWF0ZSAoTGVhZiB4KSB2IEVtcHR5XG4gICAgICAgIGVsc2UgY3JlYXRlIEVtcHR5IHYgKExlYWYgeClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByYWlzZSBTYW1lIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmRcbiAgICAgci4gKilcbiAgbGV0IHJlYyBqb2luIGwgdiByIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBhZGQgciB2IH5jb21wYXJlX2VsdFxuICAgIHwgXywgRW1wdHkgLT4gYWRkIGwgdiB+Y29tcGFyZV9lbHRcbiAgICB8IExlYWYgbHYsIF8gLT4gYWRkIChhZGQgciB2IH5jb21wYXJlX2VsdCkgbHYgfmNvbXBhcmVfZWx0XG4gICAgfCBfLCBMZWFmIHJ2IC0+IGFkZCAoYWRkIGwgdiB+Y29tcGFyZV9lbHQpIHJ2IH5jb21wYXJlX2VsdFxuICAgIHwgTm9kZSAobGwsIGx2LCBsciwgbGgsIF8pLCBOb2RlIChybCwgcnYsIHJyLCByaCwgXykgLT5cbiAgICAgIGlmIGxoID4gcmggKyAyXG4gICAgICB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIgfmNvbXBhcmVfZWx0KVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgMlxuICAgICAgdGhlbiBiYWwgKGpvaW4gbCB2IHJsIH5jb21wYXJlX2VsdCkgcnYgcnJcbiAgICAgIGVsc2UgY3JlYXRlIGwgdiByXG4gIDs7XG5cbiAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKEVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGFjYyA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AuQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgdmFsdWUgLT4gZiBhY2MgdmFsdWVcbiAgICAgIHwgTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgbGVmdCBhY2Mgd2l0aFxuICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgYWNjIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgICAgIHwgQ29udGludWUgYSAtPiBmb2xkX3VudGlsX2hlbHBlciB+ZiByaWdodCBhKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgaW5pdCB3aXRoXG4gICAgfCBDb250aW51ZSB4IC0+IGZpbmlzaCB4XG4gICAgfCBTdG9wIHggLT4geFxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChfLCB2LCBFbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCBfLCByLCBfLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgciwgXywgXykgLT4gclxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gYmFsIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG4gIGxldCBjb25jYXQgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGpvaW4gdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpIH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzcGxpdCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHNwbGl0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5LCBOb25lLCBFbXB0eVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgU29tZSB2LCBFbXB0eVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gRW1wdHksIE5vbmUsIExlYWYgdlxuICAgICAgICBlbHNlIExlYWYgdiwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBsLCBTb21lIHYsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbGwsIG1heWJlX2VsdCwgcmwgPSBzcGxpdCBsIGluXG4gICAgICAgICAgbGwsIG1heWJlX2VsdCwgam9pbiBybCB2IHIgfmNvbXBhcmVfZWx0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbHIsIG1heWJlX2VsdCwgcnIgPSBzcGxpdCByIGluXG4gICAgICAgICAgam9pbiBsIHYgbHIgfmNvbXBhcmVfZWx0LCBtYXliZV9lbHQsIHJyKVxuICAgIGluXG4gICAgc3BsaXQgdFxuICA7O1xuXG4gICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IHJlYyBtZW0gdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDBcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDAgfHwgbWVtIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24geCA9IExlYWYgeFxuXG4gIGxldCByZW1vdmUgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgU2FtZVxuICAgICAgfCBMZWFmIHYgLT4gaWYgY29tcGFyZV9lbHQgeCB2ID0gMCB0aGVuIEVtcHR5IGVsc2UgcmFpc2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgciBlbHNlIGlmIGMgPCAwIHRoZW4gYmFsIChhdXggbCkgdiByIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0Ol8gPVxuICAgIGxldCByZWMgYXV4IHQgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgU2FtZVxuICAgICAgfCBMZWFmIF8gLT4gaWYgaSA9IDAgdGhlbiBFbXB0eSBlbHNlIHJhaXNlIFNhbWVcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBiYWwgKGF1eCBsIGkpIHYgclxuICAgICAgICBlbHNlIGJhbCBsIHYgKGF1eCByIChpIC0gbF9zaXplIC0gMSkpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgaSB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgdW5pb24gczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCB0IHwgdCwgRW1wdHkgLT4gdFxuICAgICAgICB8IExlYWYgdjEsIF8gLT4gdW5pb24gKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSBzMlxuICAgICAgICB8IF8sIExlYWYgdjIgLT4gdW5pb24gczEgKE5vZGUgKEVtcHR5LCB2MiwgRW1wdHksIDEsIDEpKVxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIGgxLCBfKSwgTm9kZSAobDIsIHYyLCByMiwgaDIsIF8pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDJcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDFcbiAgICAgICAgICAgIHRoZW4gYWRkIHMxIHYyIH5jb21wYXJlX2VsdFxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBsMiwgXywgcjIgPSBzcGxpdCBzMiB2MSB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMikgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgIGVsc2UgaWYgaDEgPSAxXG4gICAgICAgICAgdGhlbiBhZGQgczIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbDEsIF8sIHIxID0gc3BsaXQgczEgdjIgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKSB+Y29tcGFyZV9lbHQpKVxuICAgIGluXG4gICAgdW5pb24gczEgczJcbiAgOztcblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSB4cyA9XG4gICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBMaXN0LmZvbGQgeHMgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhYyB4IC0+IHVuaW9uIGFjICh0b190cmVlIHgpIH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgaW50ZXIgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSAtPlxuICAgICAgICAgIGlmIG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdCB0aGVuIHNpbmdsZXRvbiBlbHNlIEVtcHR5XG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMikgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgIHwgbDIsIFNvbWUgdjEsIHIyIC0+IGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICBpbnRlciBzMSBzMlxuICA7O1xuXG4gIGxldCBkaWZmIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gRW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIC0+IEVtcHR5XG4gICAgICAgIHwgdDEsIEVtcHR5IC0+IHQxXG4gICAgICAgIHwgTGVhZiB2MSwgdDIgLT4gZGlmZiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHQyXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgfCBsMiwgU29tZSBfLCByMiAtPiBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKSB+Y29tcGFyZV9lbHQpKVxuICAgIGluXG4gICAgZGlmZiBzMSBzMlxuICA7O1xuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnYSwgJ2RpcmVjdGlvbikgdCA9XG4gICAgICB8IEVuZFxuICAgICAgfCBNb3JlIG9mICdhICogJ2EgdHJlZSAqICgnYSwgJ2RpcmVjdGlvbikgdFxuXG4gICAgbGV0IHJlYyBjb25zIHMgKGUgOiAoXywgaW5jcmVhc2luZykgdCkgOiAoXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCBzIChlIDogKF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V0IHMgOiAoXywgaW5jcmVhc2luZykgdCA9IGNvbnMgcyBFbmRcbiAgICBsZXQgb2Zfc2V0X3JpZ2h0IHMgOiAoXywgZGVjcmVhc2luZykgdCA9IGNvbnNfcmlnaHQgcyBFbmRcblxuICAgIGxldCBzdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgciwgXywgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgZTEgZTIgPVxuICAgICAgbGV0IHJlYyBsb29wIGUxIGUyID1cbiAgICAgICAgbWF0Y2ggZTEsIGUyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgcjEsIGUxKSwgTW9yZSAodjIsIHIyLCBlMikgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gICAgICAgICAgdGhlbiBsb29wIGUxIGUyXG4gICAgICAgICAgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMilcbiAgICAgIGluXG4gICAgICBsb29wIGUxIGUyXG4gICAgOztcblxuICAgIGxldCByZWMgaXRlciB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiAoKVxuICAgICAgfCBNb3JlIChhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBmIGE7XG4gICAgICAgIGl0ZXIgKGNvbnMgdHJlZSBlbnVtKSB+ZlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcjIgY29tcGFyZV9lbHQgdDEgdDIgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAoKVxuICAgICAgICB8IEVuZCwgXyAtPiBpdGVyIHQyIH5mOihmdW4gYSAtPiBmIChgUmlnaHQgYSkpXG4gICAgICAgIHwgXywgRW5kIC0+IGl0ZXIgdDEgfmY6KGZ1biBhIC0+IGYgKGBMZWZ0IGEpKVxuICAgICAgICB8IE1vcmUgKGExLCB0cmVlMSwgZW51bTEpLCBNb3JlIChhMiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgQm90aCAoYTEsIGEyKSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBMZWZ0IGExKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgZiAoYFJpZ2h0IGEyKTtcbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA6ICgoXywgXykgRWl0aGVyLnQsIF8pIFNlcXVlbmNlLlN0ZXAudCA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBEb25lXG4gICAgICAgIHwgRW5kLCBNb3JlIChlbHQsIHRyZWUsIGVudW0pIC0+IFlpZWxkIChTZWNvbmQgZWx0LCAoRW5kLCBjb25zIHRyZWUgZW51bSkpXG4gICAgICAgIHwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSwgRW5kIC0+IFlpZWxkIChGaXJzdCBlbHQsIChjb25zIHRyZWUgZW51bSwgRW5kKSlcbiAgICAgICAgfCAoTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChhMiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCBhMSBhMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHRfc3RhdGUgPVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICAgIHRoZW4gZW51bTEsIGVudW0yXG4gICAgICAgICAgICAgIGVsc2UgY29ucyB0cmVlMSBlbnVtMSwgY29ucyB0cmVlMiBlbnVtMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNraXAgbmV4dF9zdGF0ZSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gWWllbGQgKEZpcnN0IGExLCAoY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQpKVxuICAgICAgICAgIGVsc2UgWWllbGQgKFNlY29uZCBhMiwgKGxlZnQsIGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl9zZXQgdDEsIG9mX3NldCB0MikgfmY6c3RlcFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKGssIEVudW0uY29ucyB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkIChrLCBFbnVtLmNvbnNfcmlnaHQgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0X3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2VsdCBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlbHQgLT4gYWRkIHQgZWx0IH5jb21wYXJlX2VsdFxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGdyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMClcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB4ID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgICAgIHQnXG4gICAgPVxuICAgIFNlcXVlbmNlLm1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQpXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCcpXG4gICAgICB+Y29tcGFyZTpcbiAgICAgICAgKG1hdGNoIG9yZGVyIHdpdGhcbiAgICAgICAgIHwgYEluY3JlYXNpbmcgLT4gY29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB8IGBEZWNyZWFzaW5nIC0+IEZuLmZsaXAgY29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHMxIHMyIH5jb21wYXJlX2VsdCA9IEVudW0uaXRlcjIgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIGxldCBlcXVhbCBzMSBzMiB+Y29tcGFyZV9lbHQgPSBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID0gMFxuXG4gIGxldCBpc19zdWJzZXQgczEgfm9mXzpzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaXNfc3Vic2V0IHMxIH5vZl86czIgPVxuICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgIHwgRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBMZWFmIHYxLCB0MiAtPiBtZW0gdDIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCBMZWFmIHYyIC0+XG4gICAgICAgIChtYXRjaCBsMSwgcjEgd2l0aFxuICAgICAgICAgfCBFbXB0eSwgRW1wdHkgLT5cbiAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZG4ndCBvY2N1ciBpbiBwcmFjdGljZSBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGNvbnN0cnVjdGVkXG4gICAgICAgICAgICAgIGEgTGVhZiByYXRoZXIgdGhhbiBhIE5vZGUgd2l0aCB0d28gRW1wdHkgc3VidHJlZXMgKilcbiAgICAgICAgICAgY29tcGFyZV9lbHQgdjEgdjIgPSAwXG4gICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCAoTm9kZSAobDIsIHYyLCByMiwgXywgXykgYXMgdDIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIHBoeXNfZXF1YWwgczEgczIgfHwgKGlzX3N1YnNldCBsMSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnIyKVxuICAgICAgICAgICgqIE5vdGUgdGhhdCBoZWlnaHQgYW5kIHNpemUgZG9uJ3QgbWF0dGVyIGhlcmUuICopXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBpc19zdWJzZXQgKE5vZGUgKGwxLCB2MSwgRW1wdHksIDAsIDApKSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnQyXG4gICAgICAgIGVsc2UgaXNfc3Vic2V0IChOb2RlIChFbXB0eSwgdjEsIHIxLCAwLCAwKSkgfm9mXzpyMiAmJiBpc19zdWJzZXQgbDEgfm9mXzp0MlxuICAgIGluXG4gICAgaXNfc3Vic2V0IHMxIH5vZl86czJcbiAgOztcblxuICBsZXQgcmVjIGFyZV9kaXNqb2ludCBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgZWx0LCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIExlYWYgZWx0IC0+IG5vdCAobWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0KVxuICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIGZhbHNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT5cbiAgICAgICAgICBhcmVfZGlzam9pbnQgbDEgbDIgfmNvbXBhcmVfZWx0ICYmIGFyZV9kaXNqb2ludCByMSByMiB+Y29tcGFyZV9lbHRcbiAgICAgICAgfCBfLCBTb21lIF8sIF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBpdGVyIGw7XG4gICAgICAgIGYgdjtcbiAgICAgICAgaXRlciByXG4gICAgaW5cbiAgICBpdGVyIHRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IHJlYyBmb2xkIHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiBhY2N1IHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpIHYpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfZWxlbSBzdGF0ZSB0ID1cbiAgICBmb2xkIHQgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSkgfmY6aGFzaF9mb2xkX2VsZW1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIHYgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIHYgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgcmVjIGZvcl9hbGwgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiAmJiBmb3JfYWxsIH5mOnAgbCAmJiBmb3JfYWxsIH5mOnAgclxuICA7O1xuXG4gIGxldCByZWMgZXhpc3RzIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2IHx8IGV4aXN0cyB+ZjpwIGwgfHwgZXhpc3RzIH5mOnAgclxuICA7O1xuXG4gIGxldCBmaWx0ZXIgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPiBpZiBwIHYgdGhlbiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdCBlbHNlIGFjY3VcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdCAoZmlsdCAoaWYgcCB2IHRoZW4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQgZWxzZSBhY2N1KSBsKSByXG4gICAgaW5cbiAgICBmaWx0IEVtcHR5IHNcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGZpbHQgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBmaWx0XG4gICAgICAgICAgKGZpbHRcbiAgICAgICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICByXG4gICAgaW5cbiAgICBmaWx0IEVtcHR5IHNcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgcGFydCAoKHQsIGYpIGFzIGFjY3UpID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT4gaWYgcCB2IHRoZW4gYWRkIHQgdiB+Y29tcGFyZV9lbHQsIGYgZWxzZSB0LCBhZGQgZiB2IH5jb21wYXJlX2VsdFxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBwYXJ0IChwYXJ0IChpZiBwIHYgdGhlbiBhZGQgdCB2IH5jb21wYXJlX2VsdCwgZiBlbHNlIHQsIGFkZCBmIHYgfmNvbXBhcmVfZWx0KSBsKSByXG4gICAgaW5cbiAgICBwYXJ0IChFbXB0eSwgRW1wdHkpIHNcbiAgOztcblxuICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiB2IDo6IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG4gIDs7XG5cbiAgbGV0IGVsZW1lbnRzIHMgPSBlbGVtZW50c19hdXggW10gc1xuXG4gIGxldCBjaG9vc2UgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgY2hvb3NlX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU2V0LmNob29zZV9leG46IGVtcHR5IHNldFwiKSBpblxuICAgIGxldCBjaG9vc2VfZXhuIHQgPVxuICAgICAgbWF0Y2ggY2hvb3NlIHQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGNob29zZV9leG5cbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsc3QgfmNvbXBhcmVfZWx0ID1cbiAgICBMaXN0LmZvbGQgbHN0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSB+Y29tcGFyZV9lbHQgPVxuICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IHRvX2xpc3QgcyA9IGVsZW1lbnRzIHNcblxuICBsZXQgb2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQgPVxuICAgIEFycmF5LmZvbGQgYSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICAoKiBmYXN0ZXIgYnV0IGVxdWl2YWxlbnQgdG8gW0FycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdCldICopXG4gIGxldCB0b19hcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBbfHxdXG4gICAgfCBMZWFmIHYgLT4gW3wgdiB8XVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGxldCByZXMgPSBBcnJheS5jcmVhdGUgfmxlbjpzIHYgaW5cbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgICgqIEludmFyaWFudDogb24gZW50cnkgYW5kIG9uIGV4aXQgdG8gW2xvb3BdLCAhcG9zX3JlZiBpcyB0aGUgbmV4dFxuICAgICAgICAgICBhdmFpbGFibGUgY2VsbCBpbiB0aGUgYXJyYXkuICopXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZlxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgICAgbG9vcCBsO1xuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgICAgIGxvb3AgclxuICAgICAgaW5cbiAgICAgIGxvb3AgbDtcbiAgICAgICgqIHJlcy4oIXBvc19yZWYpIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgKGJ5IEFycmF5LmNyZWF0ZSB+bGVuOmFib3ZlKS4gKilcbiAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgIGxvb3AgcjtcbiAgICAgIHJlc1xuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiB+Y29tcGFyZV9lbHQgPSBmb2xkIHQgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgKGYgeCkgfmNvbXBhcmVfZWx0KVxuXG4gIGxldCBncm91cF9ieSBzZXQgfmVxdWl2IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBsb29wIHNldCBlcXVpdl9jbGFzc2VzID1cbiAgICAgIGlmIGlzX2VtcHR5IHNldFxuICAgICAgdGhlbiBlcXVpdl9jbGFzc2VzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHggPSBjaG9vc2VfZXhuIHNldCBpblxuICAgICAgICBsZXQgZXF1aXZfeCwgbm90X2VxdWl2X3ggPVxuICAgICAgICAgIHBhcnRpdGlvbl90ZiBzZXQgfmY6KGZ1biBlbHQgLT4gcGh5c19lcXVhbCB4IGVsdCB8fCBlcXVpdiB4IGVsdCkgfmNvbXBhcmVfZWx0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Agbm90X2VxdWl2X3ggKGVxdWl2X3ggOjogZXF1aXZfY2xhc3NlcykpXG4gICAgaW5cbiAgICBsb29wIHNldCBbXVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIFNvbWUgdlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGZpbmQgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaW5kIHIgfmZcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICA7O1xuXG4gIGxldCByZWMgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgKG1hdGNoIGYgdiB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggZmluZF9tYXAgbCB+ZiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIHIgfmZcbiAgICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNldC5maW5kX2V4biBmYWlsZWQgdG8gZmluZCBhIG1hdGNoaW5nIGVsZW1lbnRcIlxuICAgIHwgU29tZSBlIC0+IGVcbiAgOztcblxuICBsZXQgcmVjIG50aCB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGkgPSAwIHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGlmIGkgPj0gc1xuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gbnRoIGwgaSBlbHNlIGlmIGMgPSAwIHRoZW4gU29tZSB2IGVsc2UgbnRoIHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgbGVmdG92ZXJzIGFscmVhZHlfc2VlbiA9XG4gICAgICBtYXRjaCB4cyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGxlZnRvdmVyc1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBtZW0gYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdFxuICAgICAgICB0aGVuIGxvb3AgdGwgbGVmdG92ZXJzIGFscmVhZHlfc2VlblxuICAgICAgICBlbHNlIGxvb3AgdGwgKGhkIDo6IGxlZnRvdmVycykgKGFkZCBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0KVxuICAgIGluXG4gICAgbG9vcCB4cyBbXSBlbXB0eVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgbHN0IC0+XG4gICAgICBsZXQgZWx0X2xzdCA9IExpc3QubWFwIGxzdCB+ZjphX29mX3NleHAgaW5cbiAgICAgIGxldCBzZXQgPSBvZl9saXN0IGVsdF9sc3QgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBsZW5ndGggc2V0ID0gTGlzdC5sZW5ndGggbHN0XG4gICAgICB0aGVuIHNldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZXQgPSByZWYgZW1wdHkgaW5cbiAgICAgICAgTGlzdC5pdGVyMl9leG4gbHN0IGVsdF9sc3QgfmY6KGZ1biBlbF9zZXhwIGVsIC0+XG4gICAgICAgICAgaWYgbWVtICFzZXQgZWwgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCIgZWxfc2V4cFxuICAgICAgICAgIGVsc2Ugc2V0IDo9IGFkZCAhc2V0IGVsIH5jb21wYXJlX2VsdCk7XG4gICAgICAgIGFzc2VydCBmYWxzZSlcbiAgICB8IHNleHAgLT4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gZWwgYWNjIC0+IHNleHBfb2ZfYSBlbCA6OiBhY2MpKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICB7IHRyZWUgOiAnYSB0XG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgIGxldCBpc19zdWJzZXQgKHN1YnNldCA6IF8gdCkgfm9mXzooc3VwZXJzZXQgOiBfIHQpIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IGludmFsaWRfZWxlbWVudHMgPSBkaWZmIHN1YnNldC50cmVlIHN1cGVyc2V0LnRyZWUgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBpc19lbXB0eSBpbnZhbGlkX2VsZW1lbnRzXG4gICAgICB0aGVuIE9rICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGludmFsaWRfZWxlbWVudHNfc2V4cCA9IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBpbnZhbGlkX2VsZW1lbnRzIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgKHN1YnNldC5uYW1lIF4gXCIgaXMgbm90IGEgc3Vic2V0IG9mIFwiIF4gc3VwZXJzZXQubmFtZSlcbiAgICAgICAgICAgICBbIFwiaW52YWxpZF9lbGVtZW50c1wiLCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgXSkpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBzMSBzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgICAgWyBpc19zdWJzZXQgczEgfm9mXzpzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIDsgaXNfc3Vic2V0IHMyIH5vZl86czEgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2EsICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogJ2EgVHJlZTAudFxuICB9XG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdHJlZSA9ICdhIFRyZWUwLnRcblxubGV0IGxpa2UgeyB0cmVlID0gXzsgY29tcGFyYXRvciB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgfVxubGV0IGNvbXBhcmVfZWx0IHQgPSB0LmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgdCA9IHQuY29tcGFyYXRvclxuICBsZXQgaW52YXJpYW50cyB0ID0gVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdC50cmVlXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdC50cmVlXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHQudHJlZVxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0LnRyZWVcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdC50cmVlXG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdC50cmVlXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhLnRyZWUgYi50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0LnRyZWUgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdC50cmVlIH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdC50cmVlIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdC50cmVlIH5mXG4gIGxldCBtZW0gdCBhID0gVHJlZTAubWVtIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBhZGQgdCBhID0gbGlrZSB0IChUcmVlMC5hZGQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHJlbW92ZSB0IGEgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgdW5pb24gdDEgdDIgPSBsaWtlIHQxIChUcmVlMC51bmlvbiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBpbnRlciB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmludGVyIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNvbXBhcmVfZWx0IHQxKSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZTAuZXF1YWwgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQudHJlZSB+b2ZfOm9mXy50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcblxuICBsZXQgYXJlX2Rpc2pvaW50IHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgIHsgc2V0IDogKCdhLCAnY21wKSB0XG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgIGxldCB0b19uYW1lZF90cmVlIHsgc2V0OyBuYW1lIH0gPSB7IFRyZWUwLk5hbWVkLnRyZWUgPSBzZXQudHJlZTsgbmFtZSB9XG5cbiAgICBsZXQgaXNfc3Vic2V0IChzdWJzZXQgOiAoXywgXykgdCkgfm9mXzooc3VwZXJzZXQgOiAoXywgXykgdCkgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgICh0b19uYW1lZF90cmVlIHN1YnNldClcbiAgICAgICAgfm9mXzoodG9fbmFtZWRfdHJlZSBzdXBlcnNldClcbiAgICAgICAgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBzdWJzZXQuc2V0KVxuICAgICAgICB+c2V4cF9vZl9lbHQ6c3Vic2V0LnNldC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgdDEgdDIgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdCBbIGlzX3N1YnNldCB0MSB+b2ZfOnQyOyBpc19zdWJzZXQgdDIgfm9mXzp0MSBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsZXQgdHJlZV90LCB0cmVlX2YgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZV90LCBsaWtlIHQgdHJlZV9mXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgYSA9XG4gICAgbGV0IHRyZWUxLCBiLCB0cmVlMiA9IFRyZWUwLnNwbGl0IHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGIsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9XG4gICAgTGlzdC5tYXAgKFRyZWUwLmdyb3VwX2J5IHQudHJlZSB+ZXF1aXYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSkgfmY6KGxpa2UgdClcbiAgOztcblxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0LnRyZWUgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlX2luZGV4IHQudHJlZSBpIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSB0LmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICAgICAgdCcudHJlZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgc3RhdGUgdC50cmVlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID0gKCdhLCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBjZSBjb21wYXJhdG9yID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpIGFfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGUgPSBUcmVlMC5zaW5nbGV0b24gZVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID0gVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdFxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0XG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3VudGlsIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+aW5pdCB+ZlxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBmaWx0ZXIgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlciB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBwYXJ0aXRpb25fdGYgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEgYiB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAubWVtIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuYWRkIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAucmVtb3ZlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLnVuaW9uIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGludGVyIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuaW50ZXIgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmRpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNlIGNvbXBhcmF0b3IpIHQxIHQyXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgYXJlX2Rpc2pvaW50IH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGEgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl8gfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLnVuaW9uX2xpc3QgbCB+dG9fdHJlZTpGbi5pZCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBncm91cF9ieSB+Y29tcGFyYXRvciB0IH5lcXVpdiA9IFRyZWUwLmdyb3VwX2J5IHQgfmVxdWl2IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0IH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0IHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IH5jb21wYXJhdG9yIHQgaSA9IFRyZWUwLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWUwLk5hbWVkXG5cbiAgICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQxIH5vZl86dDIgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgIHQxXG4gICAgICAgIH5vZl86dDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgICAgVHJlZTAuTmFtZWQuZXF1YWxcbiAgICAgICAgdDFcbiAgICAgICAgdDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5jb21wYXJlIGFfb2Zfc2V4cCBzZXhwKVxuICA7O1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cbiAgZW5kXG5cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGUgfVxuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgbClcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgbGV0IHRyZWUgPVxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IuTW9uYWRfaW5maXguKFxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgPj58IGZ1biB0cmVlIC0+IHsgY29tcGFyYXRvcjsgdHJlZSB9KVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAubWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvclxuICAgIDsgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIH1cbiAgOztcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG50eXBlICgnZWx0LCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGVsdCBjbXApICgobW9kdWxlIE0pIDogKGVsdCwgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCB1bmlvbl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB+bGVuIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2Zfc2VxdWVuY2UgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBzdGFibGVfZGVkdXBfbGlzdCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBtYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxubGV0IGZpbHRlcl9tYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcblxubW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBlbHQgY21wKVxuICAgICAgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvciBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpXG4gIDogKGVsdCwgXykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBlbHQpIHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGVcbjs7XG5cbmxldCBoYXNoX21fX3QgZm9sZGVyIHQgPVxuICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfbV9fdCBmb2xkZXIgKEhhc2guY3JlYXRlICgpKSB0IGluXG4gIEhhc2guZ2V0X2hhc2hfdmFsdWUgc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgc2V0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdHJlZSA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgdHlwZSBub25yZWMgJ2VsdCBuYW1lZCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IHVuaW9uX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvciBhXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX3NlcXVlbmNlIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG1hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9yZWZcbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9IGVxdWFsX3JlZlxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gcmVmX29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfcmVmXG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiByZWZfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbigqIEluIHRoZSBkZWZpbml0aW9uIG9mIFt0XSwgd2UgZG8gbm90IGhhdmUgW1tAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXSBiZWNhdXNlXG4gICBpbiBnZW5lcmFsLCBzeW50YXggZXh0ZW5zaW9ucyB0ZW5kIHRvIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gd2hlbiBhdmFpbGFibGUgcmF0aGVyIHRoYW5cbiAgIHVzaW5nIHRoZSBhbGlhcy4gIEhlcmUgdGhhdCB3b3VsZCBsZWFkIHRvIHVzZSB0aGUgcmVjb3JkIHJlcHJlc2VudGF0aW9uIFsgeyBtdXRhYmxlXG4gICBjb250ZW50cyA6ICdhIH0gXSB3aGljaCB3b3VsZCByZXN1bHQgaW4gZGlmZmVyZW50IChhbmQgdW53YW50ZWQpIGJlaGF2aW9yLiAgKilcbnR5cGUgJ2EgdCA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuZXh0ZXJuYWwgY3JlYXRlIDogJ2EgLT4gJ2EgdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSB0IC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG5sZXQgc3dhcCB0MSB0MiA9XG4gIGxldCB0bXAgPSAhdDEgaW5cbiAgdDEgOj0gIXQyO1xuICB0MiA6PSB0bXBcbjs7XG5cbmxldCByZXBsYWNlIHQgZiA9IHQgOj0gZiAhdFxuXG5sZXQgc2V0X3RlbXBvcmFyaWx5IHQgYSB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gIXQgaW5cbiAgdCA6PSBhO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQgOj0gcmVzdG9yZV90bylcbjs7XG5cbm1vZHVsZSBBbmRfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVCA6ICdhIHJlZiAqICdhIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V0IChUIChyLCBhKSkgPSByIDo9IGFcbiAgbGV0IHNldHMgdHMgPSBMaXN0Lml0ZXIgdHMgfmY6c2V0XG4gIGxldCBzbmFwc2hvdCAoVCAociwgXykpID0gVCAociwgIXIpXG4gIGxldCBzbmFwc2hvdHMgdHMgPSBMaXN0Lm1hcCB0cyB+ZjpzbmFwc2hvdFxuZW5kXG5cbmxldCBzZXRzX3RlbXBvcmFyaWx5IGFuZF92YWx1ZXMgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9IEFuZF92YWx1ZS5zbmFwc2hvdHMgYW5kX3ZhbHVlcyBpblxuICBBbmRfdmFsdWUuc2V0cyBhbmRfdmFsdWVzO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IEFuZF92YWx1ZS5zZXRzIHJlc3RvcmVfdG8pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cblxuKCogW3RdIHN0b3JlcyB0aGUgW3QubGVuZ3RoXSBxdWV1ZSBlbGVtZW50cyBhdCBjb25zZWN1dGl2ZSBpbmNyZWFzaW5nIGluZGljZXMgb2YgW3QuZWx0c10sXG4gICBtb2QgdGhlIGNhcGFjaXR5IG9mIFt0XSwgd2hpY2ggaXMgW09wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gIFRoZSBjYXBhY2l0eSBpc1xuICAgcmVxdWlyZWQgdG8gYmUgYSBwb3dlciBvZiB0d28gKHVzZXItcmVxdWVzdGVkIGNhcGFjaXRpZXMgYXJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgIHBvd2VyKSwgc28gdGhhdCBtb2QgY2FuIHF1aWNrbHkgYmUgY29tcHV0ZWQgdXNpbmcgW2xhbmQgdC5tYXNrXSwgd2hlcmUgW3QubWFzayA9XG4gICBjYXBhY2l0eSB0IC0gMV0uICBTbywgcXVldWUgZWxlbWVudCBbaV0gaXMgYXQgW3QuZWx0cy4oICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKV0uXG5cbiAgIFtudW1fbXV0YXRpb25zXSBpcyB1c2VkIHRvIGRldGVjdCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBudW1fbXV0YXRpb25zIDogaW50XG4gIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbWFzayA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV9cbiAgICB7IG51bV9tdXRhdGlvbnMgPSBudW1fbXV0YXRpb25zX18wMDNfXG4gICAgOyBmcm9udCA9IGZyb250X18wMDVfXG4gICAgOyBtYXNrID0gbWFza19fMDA3X1xuICAgIDsgbGVuZ3RoID0gbGVuZ3RoX18wMDlfXG4gICAgOyBlbHRzID0gZWx0c19fMDExX1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDAyXyA9IFtdIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEyXyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDExXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDlfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsZW5ndGhcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA4XyA9IHNleHBfb2ZfaW50IG1hc2tfXzAwN18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hc2tcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA2XyA9IHNleHBfb2ZfaW50IGZyb250X18wMDVfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmcm9udFwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbnVtX211dGF0aW9uc19fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibnVtX211dGF0aW9uc1wiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubW9kdWxlIHR5cGUgUyA9IFF1ZXVlX2ludGYuU1xuXG5sZXQgaW5jX251bV9tdXRhdGlvbnMgdCA9IHQubnVtX211dGF0aW9ucyA8LSB0Lm51bV9tdXRhdGlvbnMgKyAxXG5sZXQgY2FwYWNpdHkgdCA9IHQubWFzayArIDFcbmxldCBlbHRzX2luZGV4IHQgaSA9ICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2tcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX2lzX3NldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2lzX3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSBhID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKSBhXG5sZXQgdW5zYWZlX3Vuc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcblxubGV0IGNoZWNrX2luZGV4X2V4biB0IGkgPVxuICBpZiBpIDwgMCB8fCBpID49IHQubGVuZ3RoXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIlF1ZXVlIGluZGV4IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgWyBcImluZGV4XCIsIGkgfD4gSW50LnNleHBfb2ZfdDsgXCJsZW5ndGhcIiwgdC5sZW5ndGggfD4gSW50LnNleHBfb2ZfdCBdKVxuOztcblxubGV0IGdldCB0IGkgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICB1bnNhZmVfZ2V0IHQgaVxuOztcblxubGV0IHNldCB0IGkgYSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIHVuc2FmZV9zZXQgdCBpIGFcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5sZXQgbGVuZ3RoIHsgbGVuZ3RoOyBfIH0gPSBsZW5ndGhcblxubGV0IGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMgPVxuICBpZiB0Lm51bV9tdXRhdGlvbnMgPD4gbnVtX211dGF0aW9uc1xuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJtdXRhdGlvbiBvZiBxdWV1ZSBkdXJpbmcgaXRlcmF0aW9uXCJcbiAgICAgICAgIFsgXCJcIiwgdCB8PiBzZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgXSlcbjs7XG5cbmxldCBjb21wYXJlID1cbiAgbGV0IHJlYyB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IHBvcyB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyID1cbiAgICBtYXRjaCBwb3MgPSBsZW4xLCBwb3MgPSBsZW4yIHdpdGhcbiAgICB8IHRydWUsIHRydWUgLT4gMFxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgbGV0IHggPSBjb21wYXJlX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MSBtdXQxO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgfCAwIC0+IHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgKHBvcyArIDEpIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDJcbiAgICAgICB8IG4gLT4gbilcbiAgaW5cbiAgZnVuIGNvbXBhcmVfZWx0IHQxIHQyIC0+XG4gICAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICAgIHRoZW4gMFxuICAgIGVsc2VcbiAgICAgIHVuc2FmZV9jb21wYXJlX2Zyb21cbiAgICAgICAgY29tcGFyZV9lbHRcbiAgICAgICAgMFxuICAgICAgICB+dDFcbiAgICAgICAgfnQyXG4gICAgICAgIH5sZW4xOnQxLmxlbmd0aFxuICAgICAgICB+bGVuMjp0Mi5sZW5ndGhcbiAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgZXF1YWwgPVxuICBsZXQgcmVjIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCBwb3MgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuID1cbiAgICBwb3MgPSBsZW5cbiAgICB8fFxuICAgIGxldCBiID0gZXF1YWxfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MSBtdXQxO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgIGIgJiYgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW5cbiAgaW5cbiAgZnVuIGVxdWFsX2VsdCB0MSB0MiAtPlxuICAgIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB8fFxuICAgIGxldCBsZW4xID0gdDEubGVuZ3RoIGluXG4gICAgbGV0IGxlbjIgPSB0Mi5sZW5ndGggaW5cbiAgICBsZW4xID0gbGVuMlxuICAgICYmIHVuc2FmZV9lcXVhbF9mcm9tXG4gICAgICAgICBlcXVhbF9lbHRcbiAgICAgICAgIDBcbiAgICAgICAgIH50MVxuICAgICAgICAgfnQyXG4gICAgICAgICB+bGVuOmxlbjFcbiAgICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIGxldCB7IG51bV9tdXRhdGlvbnM7IG1hc2sgPSBfOyBlbHRzOyBmcm9udDsgbGVuZ3RoIH0gPSB0IGluXG4gIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gIGFzc2VydCAoZnJvbnQgPCBjYXBhY2l0eSB0KTtcbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBhc3NlcnQgKGNhcGFjaXR5ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgYXNzZXJ0IChjYXBhY2l0eSA+PSAxKTtcbiAgYXNzZXJ0IChJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gIGFzc2VydCAobGVuZ3RoID49IDApO1xuICBhc3NlcnQgKGxlbmd0aCA8PSBjYXBhY2l0eSk7XG4gIGZvciBpID0gMCB0byBjYXBhY2l0eSAtIDEgZG9cbiAgICBpZiBpIDwgdC5sZW5ndGhcbiAgICB0aGVuIChcbiAgICAgIGludmFyaWFudF9hICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zKVxuICAgIGVsc2UgYXNzZXJ0IChub3QgKHVuc2FmZV9pc19zZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSA/Y2FwYWNpdHkgKCkgOiBhIHQgPVxuICBsZXQgY2FwYWNpdHkgPVxuICAgIG1hdGNoIGNhcGFjaXR5IHdpdGhcbiAgICB8IE5vbmUgLT4gMVxuICAgIHwgU29tZSBjYXBhY2l0eSAtPlxuICAgICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgICB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgXCJjYW5ub3QgaGF2ZSBxdWV1ZSB3aXRoIG5lZ2F0aXZlIGNhcGFjaXR5XCJcbiAgICAgICAgICAgICBbIFwiY2FwYWNpdHlcIiwgY2FwYWNpdHkgfD4gSW50LnNleHBfb2ZfdCBdKVxuICAgICAgZWxzZSBpZiBjYXBhY2l0eSA9IDBcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSBJbnQuY2VpbF9wb3cyIGNhcGFjaXR5XG4gIGluXG4gIHsgbnVtX211dGF0aW9ucyA9IDBcbiAgOyBmcm9udCA9IDBcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgbGVuZ3RoID0gMFxuICA7IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46Y2FwYWNpdHlcbiAgfVxuOztcblxubGV0IGJsaXRfdG9fYXJyYXkgfnNyYyBkc3QgPVxuICBhc3NlcnQgKHNyYy5sZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBkc3QpO1xuICBsZXQgZnJvbnRfbGVuID0gSW50Lm1pbiBzcmMubGVuZ3RoIChjYXBhY2l0eSBzcmMgLSBzcmMuZnJvbnQpIGluXG4gIGxldCByZXN0X2xlbiA9IHNyYy5sZW5ndGggLSBmcm9udF9sZW4gaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpmcm9udF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczpzcmMuZnJvbnQgfmRzdCB+ZHN0X3BvczowO1xuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOnJlc3RfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOmZyb250X2xlblxuOztcblxubGV0IHNldF9jYXBhY2l0eSB0IGRlc2lyZWRfY2FwYWNpdHkgPVxuICAoKiBXZSBhbGxvdyBhcmd1bWVudHMgbGVzcyB0aGFuIDEgdG8gW3NldF9jYXBhY2l0eV0sIGJ1dCB0cmFuc2xhdGUgdGhlbSB0byAxIHRvIHNpbXBsaWZ5XG4gICAgIHRoZSBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZSBhcnJheSBsZW5ndGggYmVpbmcgYSBwb3dlciBvZiAyLiAqKVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgbmV3X2NhcGFjaXR5ID0gSW50LmNlaWxfcG93MiAobWF4IDEgKG1heCBkZXNpcmVkX2NhcGFjaXR5IHQubGVuZ3RoKSkgaW5cbiAgaWYgbmV3X2NhcGFjaXR5IDw+IGNhcGFjaXR5IHRcbiAgdGhlbiAoXG4gICAgbGV0IGRzdCA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgICBibGl0X3RvX2FycmF5IH5zcmM6dCBkc3Q7XG4gICAgdC5mcm9udCA8LSAwO1xuICAgIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICAgIHQuZWx0cyA8LSBkc3QpXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGEgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBzZXRfY2FwYWNpdHkgdCAoMiAqIHQubGVuZ3RoKTtcbiAgdW5zYWZlX3NldCB0IHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGRlcXVldWVfbm9uZW1wdHkgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBlbHRzID0gdC5lbHRzIGluXG4gIGxldCBmcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBmcm9udCBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgZWx0cyBmcm9udDtcbiAgdC5mcm9udCA8LSBlbHRzX2luZGV4IHQgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIENhbWwuUXVldWUuRW1wdHkgZWxzZSBkZXF1ZXVlX25vbmVtcHR5IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfbm9uZW1wdHkgdClcbmxldCBmcm9udF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIHQuZnJvbnRcbmxldCBsYXN0X25vbmVtcHR5IHQgPSB1bnNhZmVfZ2V0IHQgKHQubGVuZ3RoIC0gMSlcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGZyb250X25vbmVtcHR5IHQpXG5sZXQgcGVla19leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBDYW1sLlF1ZXVlLkVtcHR5IGVsc2UgZnJvbnRfbm9uZW1wdHkgdFxubGV0IGxhc3QgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAobGFzdF9ub25lbXB0eSB0KVxubGV0IGxhc3RfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgQ2FtbC5RdWV1ZS5FbXB0eSBlbHNlIGxhc3Rfbm9uZW1wdHkgdFxuXG5sZXQgY2xlYXIgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICB1bnNhZmVfdW5zZXQgdCBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwO1xuICAgIHQuZnJvbnQgPC0gMClcbjs7XG5cbmxldCBibGl0X3RyYW5zZmVyIH5zcmMgfmRzdCA/bGVuICgpID1cbiAgaW5jX251bV9tdXRhdGlvbnMgc3JjO1xuICBpbmNfbnVtX211dGF0aW9ucyBkc3Q7XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IHNyYy5sZW5ndGhcbiAgICB8IFNvbWUgbGVuIC0+XG4gICAgICBpZiBsZW4gPCAwXG4gICAgICB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgXCJRdWV1ZS5ibGl0X3RyYW5zZmVyOiBuZWdhdGl2ZSBsZW5ndGhcIlxuICAgICAgICAgICAgIFsgXCJsZW5ndGhcIiwgbGVuIHw+IEludC5zZXhwX29mX3QgXSk7XG4gICAgICBtaW4gbGVuIHNyYy5sZW5ndGhcbiAgaW5cbiAgaWYgbGVuID4gMFxuICB0aGVuIChcbiAgICBzZXRfY2FwYWNpdHkgZHN0IChtYXggKGNhcGFjaXR5IGRzdCkgKGRzdC5sZW5ndGggKyBsZW4pKTtcbiAgICBsZXQgZHN0X3N0YXJ0ID0gZHN0LmZyb250ICsgZHN0Lmxlbmd0aCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAoKiBUaGlzIGlzIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gc2ltcGx5IFtlbnF1ZXVlIGRzdCAoZGVxdWV1ZV9ub25lbXB0eSBzcmMpXSAqKVxuICAgICAgbGV0IHNyY19pID0gKHNyYy5mcm9udCArIGkpIGxhbmQgc3JjLm1hc2sgaW5cbiAgICAgIGxldCBkc3RfaSA9IChkc3Rfc3RhcnQgKyBpKSBsYW5kIGRzdC5tYXNrIGluXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lXG4gICAgICAgIGRzdC5lbHRzXG4gICAgICAgIGRzdF9pXG4gICAgICAgIChPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biBzcmMuZWx0cyBzcmNfaSk7XG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHNyYy5lbHRzIHNyY19pXG4gICAgZG9uZTtcbiAgICBkc3QubGVuZ3RoIDwtIGRzdC5sZW5ndGggKyBsZW47XG4gICAgc3JjLmZyb250IDwtIChzcmMuZnJvbnQgKyBsZW4pIGxhbmQgc3JjLm1hc2s7XG4gICAgc3JjLmxlbmd0aCA8LSBzcmMubGVuZ3RoIC0gbGVuKVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBzZXRfY2FwYWNpdHkgdCAoSW50Lm1heCAoY2FwYWNpdHkgdCkgKHQubGVuZ3RoICsgTGlzdC5sZW5ndGggbCkpO1xuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICAgIGxldCByID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgICBkb25lO1xuICAgICFyKVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBhIC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIGEgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpXG47O1xuXG5cbigqIFtpdGVyXSBpcyBpbXBsZW1lbnRlZCBkaXJlY3RseSBiZWNhdXNlIGltcGxlbWVudGluZyBpdCBpbiB0ZXJtcyBvZiBbZm9sZF0gaXNcbiAgIHNsb3dlci4gKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHJlc3VsdCA6PSB1bnNhZmVfZ2V0IHQgaSA6OiAhcmVzdWx0XG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuXG5cbigqIEZvciBbY29uY2F0X21hcF0sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJdLCB3ZSBkb24ndCBjcmVhdGUgW3RfcmVzdWx0XSB3aXRoIFt0XSdzXG4gICBjYXBhY2l0eSBiZWNhdXNlIHdlIGhhdmUgbm8gaWRlYSBob3cgbWFueSBlbGVtZW50cyBbdF9yZXN1bHRdIHdpbGwgdWx0aW1hdGVseSBob2xkLiAqKVxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXIgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXJpIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6c3JjLmxlbmd0aCAoKSBpblxuICBibGl0X3RvX2FycmF5IH5zcmMgZHN0LmVsdHM7XG4gIGRzdC5sZW5ndGggPC0gc3JjLmxlbmd0aDtcbiAgZHN0XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTooTGlzdC5sZW5ndGggbCkgKCkgaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxuKCogVGhlIHF1ZXVlIFt0XSByZXR1cm5lZCBieSBbY3JlYXRlXSB3aWxsIGhhdmUgW3QubGVuZ3RoID0gMF0sIFt0LmZyb250ID0gMF0sIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBJbnQuY2VpbF9wb3cyIGxlbl0uICBTbywgd2Ugb25seSBoYXZlIHRvIHNldCBbdC5sZW5ndGhdIHRvIFtsZW5dIGFmdGVyXG4gICB0aGUgYmxpdCB0byBtYWludGFpbiBhbGwgdGhlIGludmFyaWFudHM6IFt0Lmxlbmd0aF0gaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgaW4gdGhlIHF1ZXVlLCBbdC5mcm9udF0gaXMgdGhlIGFycmF5IGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gKilcbmxldCBpbml0IGxlbiB+ZiA9XG4gIGlmIGxlbiA8IDBcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJRdWV1ZS5pbml0OiBuZWdhdGl2ZSBsZW5ndGhcIiBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6bGVuICgpIGluXG4gIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgPj0gbGVuKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyBpIChmIGkpXG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIGxlbjtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LnVuc2FmZV9nZXQgYSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCB0Lmxlbmd0aCB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBtYXAgdGEgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHRhLm51bV9tdXRhdGlvbnMgaW5cbiAgbGV0IHRiID0gY3JlYXRlIH5jYXBhY2l0eTp0YS5sZW5ndGggKCkgaW5cbiAgdGIubGVuZ3RoIDwtIHRhLmxlbmd0aDtcbiAgZm9yIGkgPSAwIHRvIHRhLmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgYiA9IGYgKHVuc2FmZV9nZXQgdGEgaSkgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdGEgbnVtX211dGF0aW9ucztcbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHRiLmVsdHMgaSBiXG4gIGRvbmU7XG4gIHRiXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBtYXAgdCB+ZjooZnVuIGEgLT5cbiAgICBsZXQgcmVzdWx0ID0gZiAhaSBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgcmVzdWx0KVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IHg7XG4gIHRcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0b19saXN0IHQgfD4gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgfD4gb2ZfbGlzdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gfFxuXG4gIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gZnVuY3Rpb25cbiAgICB8IChfIDogdCkgLT4gLlxuICA7O1xuXG4gIGxldCBhbGwgPSBbXVxuICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X3R5cGUgXCJCYXNlLk5vdGhpbmcudFwiIHNleHBcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxuICBsZXQgdG9fc3RyaW5nID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgb2Zfc3RyaW5nIChfIDogc3RyaW5nKSA9IGZhaWx3aXRoIFwiQmFzZS5Ob3RoaW5nLm9mX3N0cmluZzogbm90IHN1cHBvcnRlZFwiXG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5vdGhpbmdcIlxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIENhbWwuTmF0aXZlaW50XG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9uYXRpdmVpbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAobmF0aXZlaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX25hdGl2ZWludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9uYXRpdmVpbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVueFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJW54XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTmF0aXZlaW50LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTmF0aXZlaW50XCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVtX2JpdHMgPSBXb3JkX3NpemUubnVtX2JpdHMgV29yZF9zaXplLndvcmRfc2l6ZVxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiTmF0aXZlaW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gQ2FtbC5OYXRpdmVpbnQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLk5hdGl2ZWludC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IENhbWwuTmF0aXZlaW50LmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiAoeCA6IG5hdGl2ZWludCkgPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLk5hdGl2ZWludC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuTmF0aXZlaW50LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuTmF0aXZlaW50LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIENhbWwuTmF0aXZlaW50LnByZWQgeCA9IDBuXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgbmF0aXZlaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgQ2FtbC5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBDYW1sLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAgWyBcIlwiLCBzZXhwX29mX25hdGl2ZWludCBpIF0pO1xuICAgIGlmIENhbWwuTmF0aXZlaW50LmVxdWFsIGkgQ2FtbC5OYXRpdmVpbnQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoQ2FtbC5OYXRpdmVpbnQucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX25hdGl2ZWludCB0ID0gdFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBvZl9uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnQgdCA9IHRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5uYXRpdmVpbnRfcG9wY291bnRcbmxldCBvZl9pbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnRfdHJ1bmNcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgdG9faW50MzJfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252Lm5hdGl2ZWludF90b19pbnQ2NFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW05hdGl2ZWludF0gYW5kIFtOYXRpdmVpbnQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5leHRlcm5hbCBic3dhcCA6IHQgLT4gdCA9IFwiJWJzd2FwX25hdGl2ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNYXBfaW50ZlxuXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxuICAoKiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB0ZXN0ZWQgaW4gW3Rlc3RfbWFwLm1sXSB0byBtYWtlIHN1cmUgb3VyIHVzZSBvZlxuICAgICBbQ2FtbC5PYmoubWFnaWNdIGlzIGNvcnJlY3QgYW5kIHNhZmUuICopXG4gIGxldCBvZl9jb250aW51ZV9vcl9zdG9wIDogQ29udGludWVfb3Jfc3RvcC50IC0+IHQgPSBDYW1sLk9iai5tYWdpY1xuICBsZXQgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50ID0gQ2FtbC5PYmoubWFnaWNcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLk1lcmdlX2VsZW1lbnRcblxuICBsZXQgbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IFNvbWUgbGVmdFxuICA7O1xuXG4gIGxldCByaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gU29tZSByaWdodFxuICA7O1xuXG4gIGxldCBsZWZ0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYFJpZ2h0IF8gLT4gZGVmYXVsdFxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgXyAtPiBkZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IHJpZ2h0XG4gIDs7XG5cbiAgbGV0IHZhbHVlcyB0IH5sZWZ0X2RlZmF1bHQgfnJpZ2h0X2RlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgbGVmdCAtPiBsZWZ0LCByaWdodF9kZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgLT4gbGVmdF9kZWZhdWx0LCByaWdodFxuICAgIHwgYEJvdGggKGxlZnQsIHJpZ2h0KSAtPiBsZWZ0LCByaWdodFxuICA7O1xuZW5kXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGUgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBEdXBsaWNhdGVdIChmdW5jdGlvblxuICAgIHwgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5EdXBsaWNhdGVcIlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgVHJlZTAgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2KSB0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBMZWFmIG9mICdrICogJ3ZcbiAgICB8IE5vZGUgb2YgKCdrLCAndikgdCAqICdrICogJ3YgKiAoJ2ssICd2KSB0ICogaW50XG5cbiAgdHlwZSAoJ2ssICd2KSB0cmVlID0gKCdrLCAndikgdFxuXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIGgpIC0+IGhcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGsgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2tleSBsb3dlciBrIDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfa2V5IGsgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIChrLCBfKSAtPiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrXG4gICAgICB8IE5vZGUgKGwsIGssIF8sIHIsIGgpIC0+XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICAgIGFicyAoaGwgLSBocikgPD0gMlxuICAgICAgICAmJiBoID0gbWF4IGhsIGhyICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrXG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgaykgY29tcGFyZV9rZXkgbFxuICAgICAgICAmJiBsb29wIChTb21lIGspIHVwcGVyIGNvbXBhcmVfa2V5IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2tleSAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2tleSB0XG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwpIC0gaGVpZ2h0KHIpfCA8PSAyICopXG4gIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgIGlmIGhsID0gMCAmJiBociA9IDBcbiAgICB0aGVuIExlYWYgKHgsIGQpXG4gICAgZWxzZSBOb2RlIChsLCB4LCBkLCByLCBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSlcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIGtleSBkYXRhID0gTGVhZiAoa2V5LCBkYXRhKVxuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLk1hcCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgOiAoXywgXykgdCA9XG4gICAgICBtYXRjaCBuIHdpdGhcbiAgICAgIHwgMCAtPiBFbXB0eVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBrLCB2ID0gZiBpIGluXG4gICAgICAgIExlYWYgKGssIHYpXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBFbXB0eSwgMilcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciwgdnIgPSBmIChpICsgMikgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgTGVhZiAoa3IsIHZyKSwgMilcbiAgICAgIHwgbiAtPlxuICAgICAgICBsZXQgbGVmdF9sZW5ndGggPSBuIGxzciAxIGluXG4gICAgICAgIGxldCByaWdodF9sZW5ndGggPSBuIC0gbGVmdF9sZW5ndGggLSAxIGluXG4gICAgICAgIGxldCBsZWZ0ID0gbG9vcCBsZWZ0X2xlbmd0aCB+ZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIGxlZnRfbGVuZ3RoKSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBsb29wIHJpZ2h0X2xlbmd0aCB+ZiAoaSArIGxlZnRfbGVuZ3RoICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIGxlZnQgayB2IHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMlxuICAgICAgICAgfHxcbiAgICAgICAgIGxldCBrMCwgXyA9IGFycmF5LigwKSBpblxuICAgICAgICAgbGV0IGsxLCBfID0gYXJyYXkuKDEpIGluXG4gICAgICAgICBjb21wYXJlX2tleSBrMCBrMSA8IDBcbiAgICAgIHRoZW4gZnVuIGkgLT4gYXJyYXkuKGkpXG4gICAgICBlbHNlIGZ1biBpIC0+IGFycmF5LihhcnJheV9sZW5ndGggLSAxIC0gaSlcbiAgICBpblxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHQsIGFycmF5X2xlbmd0aFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPiBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5KVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LigwKSkgKGZzdCBhcnJheS4oMSkpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKGkpKSAoZnN0IGFycmF5LihpICsgMSkpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuXG4gICAgICAgICAgICAgICAgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkpKVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMyAqKVxuICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsIGluXG4gICAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBociArIDIgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsZCwgbHIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKGxydiwgbHJkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBFbXB0eSkgbHJ2IGxyZCAoY3JlYXRlIEVtcHR5IHggZCByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyZCwgbHJyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBobCArIDIgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByZCwgcnIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKHJsdiwgcmxkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBFbXB0eSkgcmx2IHJsZCAoY3JlYXRlIEVtcHR5IHJ2IHJkIHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsZCwgcmxyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKSkpXG4gICAgZWxzZSBjcmVhdGUgbCB4IGQgclxuICA7O1xuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5IH5zZXhwX29mX2tleSA9XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIltNYXAuYWRkX2V4bl0gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuXG4gIG1vZHVsZSBBZGRfb3Jfc2V0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbFxuICAgICAgfCBBZGRfZXhuXG4gICAgICB8IFNldFxuICBlbmRcblxuXG4gIGxldCByZWMgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgICAgfmtleTp4XG4gICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgICAgIH4oYWRkX29yX3NldCA6IEFkZF9vcl9zZXQudClcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmICh4LCBkYXRhKSwgbGVuZ3RoICsgMVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZVxuICAgICAgICB8IEFkZF9leG4gLT4gcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5XG4gICAgICAgIHwgU2V0IC0+IExlYWYgKHgsIGRhdGEpLCBsZW5ndGgpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIE5vZGUgKExlYWYgKHgsIGRhdGEpLCB2LCBkLCBFbXB0eSwgMiksIGxlbmd0aCArIDFcbiAgICAgIGVsc2UgTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKHgsIGRhdGEpLCAyKSwgbGVuZ3RoICsgMVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZVxuICAgICAgICB8IEFkZF9leG4gLT4gcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5XG4gICAgICAgIHwgU2V0IC0+IE5vZGUgKGwsIHgsIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGwsIGxlbmd0aCA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSBsIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgciwgbGVuZ3RoID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIHIgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldDpBZGRfZXhuXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgdFxuICAgICAgfmxlbmd0aFxuICAgICAgfmtleVxuICAgICAgfmRhdGFcbiAgICAgIH5jb21wYXJlX2tleVxuICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICB+YWRkX29yX3NldDpBZGRfZXhuX2ludGVybmFsXG4gIDs7XG5cbiAgbGV0IHNldCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgPVxuICAgIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgIHRcbiAgICAgIH5sZW5ndGhcbiAgICAgIH5rZXlcbiAgICAgIH5kYXRhXG4gICAgICB+Y29tcGFyZV9rZXlcbiAgICAgIH5zZXhwX29mX2tleTooZnVuIF8gLT4gTGlzdCBbXSlcbiAgICAgIH5hZGRfb3Jfc2V0OlNldFxuICA7O1xuXG4gIGxldCBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5ID0gZnN0IChzZXQgdCB+bGVuZ3RoOjAgfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkpXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPVxuICAgICAgICB7IGxlZnRfc3VidHJlZSA6ICgnaywgJ3YpIHRcbiAgICAgICAgOyBrZXkgOiAna1xuICAgICAgICA7IGRhdGEgOiAndlxuICAgICAgICB9XG5cbiAgICAgIGxldCBzaW5nbGV0b25fdG9fdHJlZV9leG4gPSBmdW5jdGlvblxuICAgICAgICB8IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9IC0+IHNpbmdsZXRvbiBrZXkgZGF0YVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNYXAuc2luZ2xldG9uX3RvX3RyZWVfZXhuOiBub3QgYSBzaW5nbGV0b25cIlxuICAgICAgOztcblxuICAgICAgbGV0IHNpbmdsZXRvbiB+a2V5IH5kYXRhID0geyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH1cblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGNvbGxhcHNlIGwgciA9IGNyZWF0ZSBsLmxlZnRfc3VidHJlZSBsLmtleSBsLmRhdGEgclxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIubGVmdF9zdWJ0cmVlKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGpvaW4gbCByID0geyByIHdpdGggbGVmdF9zdWJ0cmVlID0gY29sbGFwc2UgbCByLmxlZnRfc3VidHJlZSB9XG4gICAgICBsZXQgbWF4X2tleSB0ID0gdC5rZXlcbiAgICBlbmRcblxuICAgICgqKiBCdWlsZCB0cmVlcyBmcm9tIHNpbmdsZXRvbnMgaW4gYSBiYWxhbmNlZCB3YXkgYnkgdXNpbmcgc2tldyBiaW5hcnkgZW5jb2RpbmcuXG4gICAgICAgIEVhY2ggbGV2ZWwgY29udGFpbnMgdHJlZXMgb2YgdGhlIHNhbWUgaGVpZ2h0LCBjb25zZWN1dGl2ZSBsZXZlbHMgaGF2ZSBjb25zZWN1dGl2ZVxuICAgICAgICBoZWlnaHRzLiBUaGVyZSBhcmUgbm8gZ2Fwcy4gVGhlIGZpcnN0IGxldmVsIGFyZSBzaW5nbGUga2V5cy5cbiAgICAqKVxuICAgIHR5cGUgKCdrLCAndikgdCA9XG4gICAgICB8IFplcm8gb2YgdW5pdFxuICAgICAgKCogW3VuaXRdIHRvIG1ha2UgcGF0dGVybiBtYXRjaGluZyBmYXN0ZXIgKilcbiAgICAgIHwgT25lIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG4gICAgICB8IFR3byBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudCAqICgnaywgJ3YpIEZyYWdtZW50LnRcblxuICAgIGxldCBlbXB0eSA9IFplcm8gKClcblxuICAgIGxldCBhZGRfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCB4ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiBPbmUgKHQsIHgpXG4gICAgICAgIHwgT25lICh0LCB5KSAtPiBUd28gKHQsIHksIHgpXG4gICAgICAgIHwgVHdvICh0LCB6LCB5KSAtPiBPbmUgKGdvIHQgKEZyYWdtZW50LmpvaW4geiB5KSwgeClcbiAgICAgIGluXG4gICAgICBmdW4gdCB+a2V5IH5kYXRhIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbiB+a2V5IH5kYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZV91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IHJcbiAgICAgICAgfCBPbmUgKHQsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIGwgcilcbiAgICAgICAgfCBUd28gKHQsIGxsLCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSAoRnJhZ21lbnQuam9pbiBsbCBsKSByKVxuICAgICAgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gRW1wdHlcbiAgICAgIHwgT25lICh0LCByKSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICAgIHwgVHdvICh0LCBsLCByKSAtPiBnbyAoT25lICh0LCBsKSkgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gTm9uZVxuICAgICAgfCBPbmUgKF8sIHIpIHwgVHdvIChfLCBfLCByKSAtPiBTb21lIChGcmFnbWVudC5tYXhfa2V5IHIpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleSA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBsZXQgYnVpbGRlciwgbGVuZ3RoID1cbiAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgIHNlcVxuICAgICAgICAgIH5pbml0OihCdWlsZF9pbmNyZWFzaW5nLmVtcHR5LCAwKVxuICAgICAgICAgIH5mOihmdW4gKGJ1aWxkZXIsIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJ1aWxkX2luY3JlYXNpbmcubWF4X2tleSBidWlsZGVyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBwcmV2X2tleSB3aGVuIGNvbXBhcmVfa2V5IHByZXZfa2V5IGtleSA+PSAwIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgICAgICAgIHwgXyAtPiBCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgYnVpbGRlciB+a2V5IH5kYXRhLCBsZW5ndGggKyAxKVxuICAgICAgaW5cbiAgICAgIE9rIChCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIGJ1aWxkZXIsIGxlbmd0aCkpXG4gIDs7XG5cbiAgKCogTGlrZSBbYmFsXSBidXQgYWxsb3dzIGFueSBkaWZmZXJlbmNlIGluIGhlaWdodCBiZXR3ZWVuIFtsXSBhbmQgW3JdLlxuXG4gICAgIE8ofGhlaWdodCBsIC0gaGVpZ2h0IHJ8KSAqKVxuICBsZXQgcmVjIGpvaW4gbCBrIGQgciB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gc2V0JyByIGsgZCB+Y29tcGFyZV9rZXlcbiAgICB8IF8sIEVtcHR5IC0+IHNldCcgbCBrIGQgfmNvbXBhcmVfa2V5XG4gICAgfCBMZWFmIChsaywgbGQpLCBfIC0+IHNldCcgKHNldCcgciBrIGQgfmNvbXBhcmVfa2V5KSBsayBsZCB+Y29tcGFyZV9rZXlcbiAgICB8IF8sIExlYWYgKHJrLCByZCkgLT4gc2V0JyAoc2V0JyBsIGsgZCB+Y29tcGFyZV9rZXkpIHJrIHJkIH5jb21wYXJlX2tleVxuICAgIHwgTm9kZSAobGwsIGxrLCBsZCwgbHIsIGxoKSwgTm9kZSAocmwsIHJrLCByZCwgcnIsIHJoKSAtPlxuICAgICAgKCogW2JhbF0gcmVxdWlyZXMgaGVpZ2h0IGRpZmZlcmVuY2UgPD0gMy4gKilcbiAgICAgIGlmIGxoID4gcmggKyAzXG4gICAgICAoKiBbaGVpZ2h0IGxyID49IGhlaWdodCByXSxcbiAgICAgICAgIHRoZXJlZm9yZSBbaGVpZ2h0IChqb2luIGxyIGsgZCByIC4uLildIGlzIFtoZWlnaHQgcmwgKyAxXSBvciBbaGVpZ2h0IHJsXVxuICAgICAgICAgdGhlcmVmb3JlIHRoZSBoZWlnaHQgZGlmZmVyZW5jZSB3aXRoIFtsbF0gd2lsbCBiZSA8PSAzICopXG4gICAgICB0aGVuIGJhbCBsbCBsayBsZCAoam9pbiBsciBrIGQgciB+Y29tcGFyZV9rZXkpXG4gICAgICBlbHNlIGlmIHJoID4gbGggKyAzXG4gICAgICB0aGVuIGJhbCAoam9pbiBsIGsgZCBybCB+Y29tcGFyZV9rZXkpIHJrIHJkIHJyXG4gICAgICBlbHNlIGJhbCBsIGsgZCByXG4gIDs7XG5cbiAgbGV0IHJlYyBzcGxpdCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBOb25lLCBFbXB0eVxuICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2tleSB4IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gRW1wdHksIFNvbWUgKGssIGQpLCBFbXB0eVxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIEVtcHR5LCBOb25lLCB0XG4gICAgICBlbHNlIHQsIE5vbmUsIEVtcHR5XG4gICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IHggayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBsLCBTb21lIChrLCBkKSwgclxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBtYXliZSwgbHIgPSBzcGxpdCBsIHggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgIGxsLCBtYXliZSwgam9pbiBsciBrIGQgciB+Y29tcGFyZV9rZXkpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJsLCBtYXliZSwgcnIgPSBzcGxpdCByIHggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgIGpvaW4gbCBrIGQgcmwgfmNvbXBhcmVfa2V5LCBtYXliZSwgcnIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvIHggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgbGVmdCwgYm91bmRhcnlfb3B0LCByaWdodCA9IHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICBtYXRjaCBib3VuZGFyeV9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsZWZ0LCByaWdodFxuICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPlxuICAgICAgbGV0IGluc2VydF9pbnRvIHRyZWUgPSBmc3QgKHNldCB0cmVlIH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleSkgaW5cbiAgICAgIChtYXRjaCBpbnRvIHdpdGhcbiAgICAgICB8IGBMZWZ0IC0+IGluc2VydF9pbnRvIGxlZnQsIHJpZ2h0XG4gICAgICAgfCBgUmlnaHQgLT4gbGVmdCwgaW5zZXJ0X2ludG8gcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfihsb3dlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH4odXBwZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICA9XG4gICAgaWYgTWF5YmVfYm91bmQuYm91bmRzX2Nyb3NzZWRcbiAgICAgICAgIH5jb21wYXJlOmNvbXBhcmVfa2V5XG4gICAgICAgICB+bG93ZXI6bG93ZXJfYm91bmRcbiAgICAgICAgIH51cHBlcjp1cHBlcl9ib3VuZFxuICAgIHRoZW4gZW1wdHksIGVtcHR5LCBlbXB0eVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxlZnQsIG1pZF9hbmRfcmlnaHQgPVxuICAgICAgICBtYXRjaCBsb3dlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IGVtcHR5LCB0XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YFJpZ2h0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZXQgbWlkLCByaWdodCA9XG4gICAgICAgIG1hdGNoIHVwcGVyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gbWlkX2FuZF9yaWdodCwgZW1wdHlcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT5cbiAgICAgICAgICBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YFJpZ2h0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGVmdCwgbWlkLCByaWdodClcbiAgOztcblxuICBsZXQgcmVjIGZpbmQgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gU29tZSBkIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZCBlbHNlIGZpbmQgKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBkYXRhID0gZGF0YSA6OiBPcHRpb24udmFsdWUgKGZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5KSB+ZGVmYXVsdDpbXSBpblxuICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBbXVxuICAgIHwgU29tZSBsIC0+IGxcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBpZl9ub3RfZm91bmQga2V5IH5zZXhwX29mX2tleSA9XG4gICAgICByYWlzZSAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiTWFwLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgc2V4cF9vZl9rZXkga2V5IF0pKVxuICAgIGluXG4gICAgbGV0IHJlYyBmaW5kX2V4biB0IHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaWZfbm90X2ZvdW5kIHggfnNleHBfb2Zfa2V5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBkIGVsc2UgaWZfbm90X2ZvdW5kIHggfnNleHBfb2Zfa2V5XG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gZCBlbHNlIGZpbmRfZXhuIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXlcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBmaW5kX2V4blxuICA7O1xuXG4gIGxldCBtZW0gdCB4IH5jb21wYXJlX2tleSA9IE9wdGlvbi5pc19zb21lIChmaW5kIHQgeCB+Y29tcGFyZV9rZXkpXG5cbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChFbXB0eSwgaywgZCwgXywgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5UcmVlMC5NYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5UcmVlMC5NYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgaywgZCwgRW1wdHksIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBfLCBfLCByLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0IHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgXywgciwgXykgLT4gclxuICAgIHwgTm9kZSAobCwgeCwgZCwgciwgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB4IGQgclxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBtYXhfZWx0IGxvd2VyX3BhcnQsIG1pbl9lbHQgdXBwZXJfcGFydCB3aXRoXG4gICAgfCBOb25lLCBfIC0+IGBPayB1cHBlcl9wYXJ0XG4gICAgfCBfLCBOb25lIC0+IGBPayBsb3dlcl9wYXJ0XG4gICAgfCBTb21lIChtYXhfbG93ZXIsIF8pLCBTb21lIChtaW5fdXBwZXIsIHYpIHdoZW4gY29tcGFyZV9rZXkgbWF4X2xvd2VyIG1pbl91cHBlciA8IDAgLT5cbiAgICAgIGxldCB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluID0gcmVtb3ZlX21pbl9lbHQgdXBwZXJfcGFydCBpblxuICAgICAgYE9rIChqb2luIH5jb21wYXJlX2tleSBsb3dlcl9wYXJ0IG1pbl91cHBlciB2IHVwcGVyX3BhcnRfd2l0aG91dF9taW4pXG4gICAgfCBfIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlID1cbiAgICAoKiBUaGlzIGFzc3VtZXMgdGhhdCBtaW4gPD0gbWF4LCB3aGljaCBpcyBjaGVja2VkIGJ5IHRoZSBvdXRlciBmdW5jdGlvbi4gKilcbiAgICBsZXQgcmVjIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW5pdFxuICAgICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIG1pbiA8IDAgfHwgY29tcGFyZV9rZXkgayBtYXggPiAwXG4gICAgICAgIHRoZW4gKCogayA8IG1pbiB8fCBrID4gbWF4ICopXG4gICAgICAgICAgaW5pdFxuICAgICAgICBlbHNlIGYgfmtleTprIH5kYXRhOmQgaW5pdFxuICAgICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgY19taW4gPSBjb21wYXJlX2tleSBrIG1pbiBpblxuICAgICAgICBpZiBjX21pbiA8IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPCBtaW4sIHRoZW4gdGhpcyBub2RlIGFuZCBpdHMgbGVmdCBicmFuY2ggYXJlIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgaWYgY19taW4gPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrID0gbWluLCB0aGVuIHRoaXMgbm9kZSdzIGxlZnQgYnJhbmNoIGlzIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQ6KGYgfmtleTprIH5kYXRhOmQgaW5pdCkgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGsgPiBtaW4gKilcbiAgICAgICAgICBsZXQgeiA9IGdvIGwgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGxldCBjX21heCA9IGNvbXBhcmVfa2V5IGsgbWF4IGluXG4gICAgICAgICAgKCogaWYgayA+IG1heCwgd2UncmUgZG9uZSAqKVxuICAgICAgICAgIGlmIGNfbWF4ID4gMFxuICAgICAgICAgIHRoZW4gelxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHogPSBmIH5rZXk6ayB+ZGF0YTpkIHogaW5cbiAgICAgICAgICAgICgqIGlmIGsgPSBtYXgsIHRoZW4gd2UgZm9sZCBpbiB0aGlzIG9uZSBsYXN0IHZhbHVlIGFuZCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgICBpZiBjX21heCA9IDAgdGhlbiB6IGVsc2UgZ28gciB+bWluIH5tYXggfmluaXQ6eiB+ZiB+Y29tcGFyZV9rZXkpKVxuICAgIGluXG4gICAgZnVuIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgY29tcGFyZV9rZXkgbWluIG1heCA8PSAwIHRoZW4gZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGVsc2UgaW5pdFxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXkgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgICAgIHRcbiAgICAgICAgIH5taW5cbiAgICAgICAgIH5tYXhcbiAgICAgICAgIH5pbml0OltdXG4gICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgbCAtPiAoa2V5LCBkYXRhKSA6OiBsKVxuICAgICAgICAgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBjb25jYXRfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFJlbW92ZV9ub19vcFxuXG4gIGxldCByZW1vdmUgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcFxuICAgICAgfCBMZWFmICh2LCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSB4IHYgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIGxlbmd0aCAtIDFcbiAgICAgICAgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gY29uY2F0X3VuY2hlY2tlZCBsIHIsIGxlbmd0aCAtIDFcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gcmVtb3ZlX2xvb3AgbCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IHJlbW92ZV9sb29wIHIgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB0cnkgcmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IFJlbW92ZV9ub19vcCAtPiB0LCBsZW5ndGhcbiAgOztcblxuICAoKiBVc2UgZXhjZXB0aW9uIHRvIGF2b2lkIHRyZWUtcmVidWlsZCBpbiBuby1vcCBjYXNlICopXG4gIGV4Y2VwdGlvbiBDaGFuZ2Vfbm9fb3BcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIGNoYW5nZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IHJhaXNlIENoYW5nZV9ub19vcCAoKiBlcXVpdmFsZW50IHRvIHJldHVybmluZzogRW1wdHkgKilcbiAgICAgICAgIHwgU29tZSBkYXRhIC0+IExlYWYgKGtleSwgZGF0YSksIGxlbmd0aCArIDEpXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5LCBsZW5ndGggLSAxXG4gICAgICAgICAgfCBTb21lIGQnIC0+IExlYWYgKHYsIGQnKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCBFbXB0eSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgRW1wdHkgdiBkIHIsIGxlbmd0aClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0X3VuY2hlY2tlZCBsIHIsIGxlbmd0aCAtIDFcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB0cnkgY2hhbmdlX2NvcmUgdCBrZXkgZiB3aXRoXG4gICAgfCBDaGFuZ2Vfbm9fb3AgLT4gdCwgbGVuZ3RoXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyB1cGRhdGVfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGYgTm9uZSBpblxuICAgICAgICBMZWFmIChrZXksIGRhdGEpLCBsZW5ndGggKyAxXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGQnID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgIExlYWYgKHYsIGQnKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCBFbXB0eSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgRW1wdHkgdiBkIHIsIGxlbmd0aClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZGF0YSA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICBOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB1cGRhdGVfY29yZSB0IGtleSBmXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgY2hhbmdlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIHwgU29tZSAoW10gfCBbIF8gXSkgLT4gTm9uZVxuICAgICAgfCBTb21lIChfIDo6IChfIDo6IF8gYXMgbm9uX2VtcHR5X3RhaWwpKSAtPiBTb21lIG5vbl9lbXB0eV90YWlsKVxuICA7O1xuXG4gIGxldCByZWMgaXRlcl9rZXlzIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIF8pIC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgXywgciwgXykgLT5cbiAgICAgIGl0ZXJfa2V5cyB+ZiBsO1xuICAgICAgZiB2O1xuICAgICAgaXRlcl9rZXlzIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAoXywgZCkgLT4gZiBkXG4gICAgfCBOb2RlIChsLCBfLCBkLCByLCBfKSAtPlxuICAgICAgaXRlciB+ZiBsO1xuICAgICAgZiBkO1xuICAgICAgaXRlciB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgaXRlcmkgfmYgbDtcbiAgICAgIGYgfmtleTp2IH5kYXRhOmQ7XG4gICAgICBpdGVyaSB+ZiByXG4gIDs7XG5cbiAgbGV0IGl0ZXJpX3VudGlsID1cbiAgICBsZXQgcmVjIGl0ZXJpX3VudGlsX2xvb3AgdCB+ZiA6IENvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggaXRlcmlfdW50aWxfbG9vcCB+ZiBsIHdpdGhcbiAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICB8IENvbnRpbnVlIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICAgICB8IENvbnRpbnVlIC0+IGl0ZXJpX3VudGlsX2xvb3AgfmYgcikpXG4gICAgaW5cbiAgICBmdW4gdCB+ZiAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLm9mX2NvbnRpbnVlX29yX3N0b3AgKGl0ZXJpX3VudGlsX2xvb3AgdCB+ZilcbiAgOztcblxuICBsZXQgcmVjIG1hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIGQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgbGV0IHInID0gbWFwIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgfmtleTp2IH5kYXRhOmQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwaSB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBtYXBpIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkIHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2xvb3AgdCB+YWNjIH5mIDogKF8sIF8pIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY1xuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9sb29wIGwgfmFjYyB+ZiB3aXRoXG4gICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgYWNjIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBmb2xkX3VudGlsX2xvb3AgciB+YWNjIH5mKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfbG9vcCB0IH5hY2M6aW5pdCB+ZiB3aXRoXG4gICAgfCBDb250aW51ZSBhY2MgLT4gZmluaXNoIGFjY1xuICAgIHwgU3RvcCBzdG9wIC0+IHN0b3BcbiAgOztcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBpZiBmIGtleSB0aGVuIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgYWNjdSB+Y29tcGFyZV9rZXkgZWxzZSBhY2N1LCBsZW5ndGgpXG4gIDs7XG5cblxuICBsZXQgZmlsdGVyIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIGlmIGYgZGF0YSB0aGVuIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgYWNjdSB+Y29tcGFyZV9rZXkgZWxzZSBhY2N1LCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgaWYgZiB+a2V5IH5kYXRhIHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBtYXRjaCBmIGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY3UsIGxlbmd0aFxuICAgICAgfCBTb21lIGIgLT4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YTpiIGFjY3UgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY3UsIGxlbmd0aFxuICAgICAgfCBTb21lIGIgLT4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YTpiIGFjY3UgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZFxuICAgICAgdFxuICAgICAgfmluaXQ6KChFbXB0eSwgMCksIChFbXB0eSwgMCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgKHBhaXIxLCBwYWlyMikgLT5cbiAgICAgICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCB4IC0+XG4gICAgICAgICAgbGV0IHQsIGxlbmd0aCA9IHBhaXIxIGluXG4gICAgICAgICAgc2V0IHQgfmtleSB+ZGF0YTp4IH5jb21wYXJlX2tleSB+bGVuZ3RoLCBwYWlyMlxuICAgICAgICB8IFNlY29uZCB5IC0+XG4gICAgICAgICAgbGV0IHQsIGxlbmd0aCA9IHBhaXIyIGluXG4gICAgICAgICAgcGFpcjEsIHNldCB0IH5rZXkgfmRhdGE6eSB+Y29tcGFyZV9rZXkgfmxlbmd0aClcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgcGFydGl0aW9uX21hcGkgdCB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgaWYgZiBkYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKVxuICA7O1xuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnaywgJ3YsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnayAqICd2ICogKCdrLCAndikgdHJlZSAqICgnaywgJ3YsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyB0IChlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCB0IChlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl90cmVlIHRyZWUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9IGNvbnMgdHJlZSBFbmRcbiAgICBsZXQgb2ZfdHJlZV9yaWdodCB0cmVlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHRyZWUgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgXywgciwgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBjID0gY29tcGFyZV9kYXRhIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgICAgZWxzZSBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gICAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGRhdGFfZXF1YWwgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiB0cnVlXG4gICAgICAgIHwgRW5kLCBfIHwgXywgRW5kIC0+IGZhbHNlXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBjb21wYXJlX2tleSB2MSB2MiA9IDBcbiAgICAgICAgICAmJiBkYXRhX2VxdWFsIGQxIGQyXG4gICAgICAgICAgJiYgaWYgcGh5c19lcXVhbCByMSByMiB0aGVuIGxvb3AgZTEgZTIgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMilcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCByZWMgZm9sZCB+aW5pdCB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiBpbml0XG4gICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgbGV0IG5leHQgPSBmIH5rZXkgfmRhdGEgaW5pdCBpblxuICAgICAgICBmb2xkIChjb25zIHRyZWUgZW51bSkgfmluaXQ6bmV4dCB+ZlxuICAgIDs7XG5cbiAgICBsZXQgZm9sZDIgY29tcGFyZV9rZXkgdDEgdDIgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyIGN1cnIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IGN1cnJcbiAgICAgICAgfCBFbmQsIF8gLT5cbiAgICAgICAgICBmb2xkIHQyIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBSaWdodCBkYXRhKSBhY2MpXG4gICAgICAgIHwgXywgRW5kIC0+XG4gICAgICAgICAgZm9sZCB0MSB+aW5pdDpjdXJyIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gZiB+a2V5IH5kYXRhOihgTGVmdCBkYXRhKSBhY2MpXG4gICAgICAgIHwgTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpLCBNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBCb3RoICh2MSwgdjIpKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBMZWZ0IHYxKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MiBuZXh0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azIgfmRhdGE6KGBSaWdodCB2MikgY3VyciBpblxuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyIGluaXRcbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkICgoa2V5LCBgUmlnaHQgZGF0YSksIChFbmQsIGNvbnMgdHJlZSBlbnVtKSlcbiAgICAgICAgfCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pLCBFbmQgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkICgoa2V5LCBgTGVmdCBkYXRhKSwgKGNvbnMgdHJlZSBlbnVtLCBFbmQpKVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBkYXRhX2VxdWFsIHYxIHYyXG4gICAgICAgICAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuU2tpcCBuZXh0X3N0YXRlXG4gICAgICAgICAgICBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrMSwgYFVuZXF1YWwgKHYxLCB2MikpLCBuZXh0X3N0YXRlKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGsxLCBgTGVmdCB2MSksIChjb25zIHRyZWUxIGVudW0xLCByaWdodCkpXG4gICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkICgoazIsIGBSaWdodCB2MiksIChsZWZ0LCBjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDoob2ZfdHJlZSB0MSwgb2ZfdHJlZSB0MikgfmY6c3RlcFxuICAgIDs7XG5cbiAgICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGVmdCByaWdodCBhY2MgPVxuICAgICAgICBtYXRjaCBsZWZ0LCByaWdodCB3aXRoXG4gICAgICAgIHwgRW5kLCBlbnVtIC0+IGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IGVudW0sIEVuZCAtPiBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaWYgZGF0YV9lcXVhbCB2MSB2MiB0aGVuIGFjYyBlbHNlIGYgYWNjIChrMSwgYFVuZXF1YWwgKHYxLCB2MikpIGluXG4gICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICB0aGVuIGxvb3AgZW51bTEgZW51bTIgYWNjXG4gICAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsxIHYxIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSByaWdodCBhY2MpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrMiB2MiBpblxuICAgICAgICAgICAgbG9vcCBsZWZ0IChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAob2ZfdHJlZSB0MSkgKG9mX3RyZWUgdDIpIGluaXRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoaywgdiksIEVudW0uY29ucyB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlIHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGssIHYpLCBFbnVtLmNvbnNfcmlnaHQgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZV9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZ19rZXkpXG4gICAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2tleSBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPiBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19sZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgRW51bS5lcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MilcbiAgOztcblxuICBsZXQgaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyXG4gICAgICBjb21wYXJlX2tleVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MSlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDIpXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICgpIC0+IGYgfmtleSB+ZGF0YSlcbiAgOztcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyIGNvbXBhcmVfa2V5IChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpIH5mIH5pbml0XG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgKCogW0VudW0uZm9sZF9kaWZmc10gaXMgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGJ1dCBpcyBjb25zaWRlcmFibHlcbiAgICAgICBzbG93ZXIsIGFzIHdlIGhhdmUgdG8gYWxsb2NhdGUgcXVpdGUgYSBsb3Qgb2Ygc3RhdGUgdG8gdHJhY2sgZW51bWVyYXRpb24gb2YgYSB0cmVlLlxuICAgICAgIEF2b2lkIGlmIHdlIGNhbi5cbiAgICAqKVxuICAgIGxldCBzbG93IHggeSB+aW5pdCA9IEVudW0uZm9sZF9zeW1tZXRyaWNfZGlmZiB4IHkgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5mIH5pbml0IGluXG4gICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgIGxldCBkZWx0YSBhY2MgayB2IHYnID0gaWYgZGF0YV9lcXVhbCB2IHYnIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGssIGBVbmVxdWFsICh2LCB2JykpIGluXG4gICAgKCogSWYgdHdvIHRyZWVzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGF0IHRoZSByb290IChhbmQgdGhlIHNhbWUga2V5LCBpZiB0aGV5J3JlXG4gICAgICAgW05vZGVdcykgd2UgY2FuIHRyaXZpYWxseSBkaWZmIGVhY2ggc3VicGFydCBpbiBvYnZpb3VzIHdheXMuICopXG4gICAgbGV0IHJlYyBsb29wIHQgdCcgYWNjID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgdCB0J1xuICAgICAgdGhlbiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0LCB0JyB3aXRoXG4gICAgICAgIHwgRW1wdHksIG5ld192YWxzIC0+XG4gICAgICAgICAgZm9sZCBuZXdfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IG9sZF92YWxzLCBFbXB0eSAtPlxuICAgICAgICAgIGZvbGQgb2xkX3ZhbHMgfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCBMZWFmIChrLCB2KSwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSBrIGsnIHdpdGhcbiAgICAgICAgICAgfCB4IHdoZW4geCA9IDAgLT4gZGVsdGEgYWNjIGsgdiB2J1xuICAgICAgICAgICB8IHggd2hlbiB4IDwgMCAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsgdiBpblxuICAgICAgICAgICAgIGFkZCBhY2MgaycgdidcbiAgICAgICAgICAgfCBfICgqIHdoZW4geCA+IDAgKikgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrJyB2JyBpblxuICAgICAgICAgICAgIHJlbW92ZSBhY2MgayB2KVxuICAgICAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pLCBOb2RlIChsJywgaycsIHYnLCByJywgXykgd2hlbiBjb21wYXJlX2tleSBrIGsnID0gMCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBsb29wIGwgbCcgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IGRlbHRhIGFjYyBrIHYgdicgaW5cbiAgICAgICAgICBsb29wIHIgcicgYWNjXG4gICAgICAgICgqIE91ciByb290cyBhcmVuJ3QgdGhlIHNhbWUga2V5LiBGYWxsYmFjayB0byB0aGUgc2xvdyBtb2RlLiBUcmVlcyB3aXRoIHNtYWxsXG4gICAgICAgICAgIGRpZmZzIHdpbGwgb25seSBkbyB0aGlzIG9uIHZlcnkgc21hbGwgcGFydHMgb2YgdGhlIHRyZWUgKGhvcGVmdWxseSAtIGlmIHRoZVxuICAgICAgICAgICBvdmVyYWxsIHJvb3QgaXMgcmViYWxhbmNlZCwgd2UnbGwgZWF0IHRoZSB3aG9sZSBjb3N0LCB1bmZvcnR1bmF0ZWx5LikgKilcbiAgICAgICAgfCBOb2RlIF8sIE5vZGUgXyB8IE5vZGUgXywgTGVhZiBfIHwgTGVhZiBfLCBOb2RlIF8gLT4gc2xvdyB0IHQnIH5pbml0OmFjYylcbiAgICBpblxuICAgIGxvb3AgdDEgdDIgaW5pdFxuICA7O1xuXG4gIGxldCByZWMgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChsLCBfLCBfLCByLCBfKSAtPiBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHN0YXRlIC0+IGhhc2hfZm9sZF9kYXRhIChoYXNoX2ZvbGRfa2V5IHN0YXRlIGtleSkgZGF0YSlcbiAgOztcblxuICBsZXQga2V5cyB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6XyBsaXN0IC0+IGtleSA6OiBsaXN0KSB0IH5pbml0OltdXG4gIGxldCBkYXRhIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB0IH5pbml0OltdXG5cbiAgbW9kdWxlIHR5cGUgRm9sZGFibGUgPSBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2JcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2ZvbGRhYmxlIChNIDogRm9sZGFibGUpID0gc3RydWN0XG4gICAgbGV0IG9mX2ZvbGRhYmxlX2ZvbGQgZm9sZGFibGUgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIE0uZm9sZCBmb2xkYWJsZSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gKGFjY3VtLCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgIGxldCBwcmV2X2RhdGEgPVxuICAgICAgICAgIG1hdGNoIGZpbmQgYWNjdW0ga2V5IH5jb21wYXJlX2tleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluaXRcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2XG4gICAgICAgIGluXG4gICAgICAgIGxldCBkYXRhID0gZiBwcmV2X2RhdGEgZGF0YSBpblxuICAgICAgICBzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX3JlZHVjZSBmb2xkYWJsZSB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAoYWNjdW0sIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IG5ld19kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gZiBwcmV2IGRhdGFcbiAgICAgICAgaW5cbiAgICAgICAgc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YTpuZXdfZGF0YSB+Y29tcGFyZV9rZXkpXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgIE0uZm9sZCBmb2xkYWJsZSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gKHQsIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIGxldCAoKF8sIGxlbmd0aCcpIGFzIGFjYykgPSBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgICBpZiBsZW5ndGggPSBsZW5ndGgnIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkgZWxzZSBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIGBPayBtYXApXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9vcl9lcnJvciBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9vcl9lcnJvcjogZHVwbGljYXRlIGtleVwiKVxuICAgICAgICAgIGtleVxuICAgICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9leG4gZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4geFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX2V4bjogZHVwbGljYXRlIGtleVwiKSBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgT2ZfYWxpc3QgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwiYWxpc3RcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBmb2xkID0gTGlzdC5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9hbGlzdF9mb2xkID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9hbGlzdCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9hbGlzdF9leG4gPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9leG5cblxuICAoKiBSZXZlcnNlIHRoZSBpbnB1dCwgdGhlbiBmb2xkIGZyb20gbGVmdCB0byByaWdodC4gVGhlIHJlc3VsdGluZyBtYXAgdXNlcyB0aGUgZmlyc3RcbiAgICAgaW5zdGFuY2Ugb2YgZWFjaCBrZXkgZnJvbSB0aGUgaW5wdXQgbGlzdC4gVGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGVsZW1lbnRzIGluIGVhY2hcbiAgICAgb3V0cHV0IGxpc3QgaXMgdGhlIHNhbWUgYXMgaW4gdGhlIGlucHV0IGxpc3QuICopXG4gIGxldCBvZl9mb2xkYWJsZV9tdWx0aSBmb2xkYWJsZSB+Zm9sZCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhbGlzdCA9IGZvbGQgZm9sZGFibGUgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSBpblxuICAgIG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5ID1cbiAgICBvZl9mb2xkYWJsZV9tdWx0aSBhbGlzdCB+Zm9sZDpMaXN0LmZvbGQgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIE9mX3NlcXVlbmNlID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcInNlcXVlbmNlXCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgICBsZXQgZm9sZCA9IFNlcXVlbmNlLmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX3NlcXVlbmNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2V4blxuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzZXF1ZW5jZSB+Y29tcGFyZV9rZXkgPVxuICAgIG9mX2ZvbGRhYmxlX211bHRpIHNlcXVlbmNlIH5mb2xkOlNlcXVlbmNlLmZvbGQgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIG5vdCAoZiBkYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgbm90IChmIH5rZXkgfmRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBmIGRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgICBmYWxzZSlcbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG4gIDs7XG5cbiAgbGV0IHRvX2FsaXN0ID8oa2V5X29yZGVyID0gYEluY3JlYXNpbmcpIHQgPVxuICAgIG1hdGNoIGtleV9vcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZyAtPiBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgICB8IGBEZWNyZWFzaW5nIC0+IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBlbHRzID0gVW5pZm9ybV9hcnJheS51bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbjoobGVuZ3RoIHQxICsgbGVuZ3RoIHQyKSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyMiB0MSB0MiB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5IH5kYXRhOnZhbHVlcyAtPlxuICAgICAgbWF0Y2ggZiB+a2V5IHZhbHVlcyB3aXRoXG4gICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgVW5pZm9ybV9hcnJheS5zZXQgZWx0cyAhaSAoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGluY3IgaVxuICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICBsZXQgbGVuID0gIWkgaW5cbiAgICBsZXQgZ2V0IGkgPSBVbmlmb3JtX2FycmF5LmdldCBlbHRzIGkgaW5cbiAgICBsZXQgdHJlZSA9IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmY6Z2V0IGluXG4gICAgdHJlZSwgbGVuXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCA9XG4gICAgbGV0IG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aF9sYXJnZSB0X2xhcmdlIHRfc21hbGwgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGZvbGQgdF9zbWFsbCB+aW5pdDoodF9sYXJnZSwgbGVuZ3RoX2xhcmdlKSB+ZjooZnVuIH5rZXkgfmRhdGE6ZGF0YScgKHQsIGxlbmd0aCkgLT5cbiAgICAgICAgdXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhJ1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IGNhbGwgY29tYmluZSB+a2V5IGRhdGEgZGF0YScpKVxuICAgIGluXG4gICAgbGV0IGNhbGwgZiB+a2V5IHggeSA9IGYgfmtleSB4IHkgaW5cbiAgICBsZXQgc3dhcCBmIH5rZXkgeCB5ID0gZiB+a2V5IHkgeCBpblxuICAgIGZ1biB0MSB0MiB+bGVuZ3RoMSB+bGVuZ3RoMiB+Y29tYmluZSB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGxlbmd0aDIgPD0gbGVuZ3RoMVxuICAgICAgdGhlbiBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgxIHQxIHQyIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgyIHQyIHQxIH5jYWxsOnN3YXAgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIENsb3Nlc3Rfa2V5X2ltcGwgPSBzdHJ1Y3RcbiAgICAoKiBbbWFya2VyXSBhbmQgW3JlcGFja2FnZV0gYWxsb3cgdXMgdG8gY3JlYXRlIFwibG9naWNhbFwiIG9wdGlvbnMgd2l0aG91dCBhY3R1YWxseVxuICAgICAgIGFsbG9jYXRpbmcgYW55IG9wdGlvbnMuIFBhc3NpbmcgW0ZvdW5kIGtleSB2YWx1ZV0gdG8gYSBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgcGFzc2luZyBbU29tZSAoa2V5LCB2YWx1ZSldOyBwYXNzaW5nIFtNaXNzaW5nICgpICgpXSBpcyBlcXVpdmFsZW50IHRvIHBhc3NpbmdcbiAgICAgICBbTm9uZV0uICopXG4gICAgdHlwZSAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyID1cbiAgICAgIHwgTWlzc2luZyA6ICgnaywgJ3YsIHVuaXQsIHVuaXQpIG1hcmtlclxuICAgICAgfCBGb3VuZCA6ICgnaywgJ3YsICdrLCAndikgbWFya2VyXG5cbiAgICBsZXQgcmVwYWNrYWdlXG4gICAgICAgICAgKHR5cGUgayB2IGtfb3B0IHZfb3B0KVxuICAgICAgICAgIChtYXJrZXIgOiAoaywgdiwga19vcHQsIHZfb3B0KSBtYXJrZXIpXG4gICAgICAgICAgKGsgOiBrX29wdClcbiAgICAgICAgICAodiA6IHZfb3B0KVxuICAgICAgOiAoayAqIHYpIG9wdGlvblxuICAgICAgPVxuICAgICAgbWF0Y2ggbWFya2VyIHdpdGhcbiAgICAgIHwgTWlzc2luZyAtPiBOb25lXG4gICAgICB8IEZvdW5kIC0+IFNvbWUgKGssIHYpXG4gICAgOztcblxuICAgICgqIFRoZSB0eXBlIHNpZ25hdHVyZSBpcyBleHBsaWNpdCBoZXJlIHRvIGFsbG93IHBvbHltb3JwaGljIHJlY3Vyc2lvbi4gKilcbiAgICBsZXQgcmVjIGxvb3AgOlxuICAgICAgJ2sgJ3YgJ2tfb3B0ICd2X29wdC5cbiAgICAgICgnaywgJ3YpIHRyZWVcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrXG4gICAgICAtPiBjb21wYXJlX2tleTooJ2sgLT4gJ2sgLT4gaW50KVxuICAgICAgLT4gKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlclxuICAgICAgLT4gJ2tfb3B0XG4gICAgICAtPiAndl9vcHRcbiAgICAgIC0+ICgnayAqICd2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIGZ1biB0IGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIC0+IGMgPj0gMFxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+IGMgPiAwXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IGMgPD0gMFxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+IGMgPCAwXG4gICAgICAgICAgdGhlbiBTb21lIChrJywgdicpXG4gICAgICAgICAgZWxzZSByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IE5vZGUgKGwsIGsnLCB2JywgciwgXykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBjID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJhc2UgY2FzZSAobm8gcmVjdXJzaXZlIGNhbGwpLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgTGVzc19vcl9lcXVhbF90byAtPiBTb21lIChrJywgdicpXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgciB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWluX2VsdCByXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgbCB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWF4X2VsdCBsKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogV2UgYXJlIGd1YXJhbnRlZWQgaGVyZSB0aGF0IGsnIDw+IGsuICopXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHRoZSBvbmx5IHJlY3Vyc2l2ZSBjYXNlLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIgayB+Y29tcGFyZV9rZXkgPSBsb29wIHQgZGlyIGsgfmNvbXBhcmVfa2V5IE1pc3NpbmcgKCkgKClcbiAgZW5kXG5cbiAgbGV0IGNsb3Nlc3Rfa2V5ID0gQ2xvc2VzdF9rZXlfaW1wbC5jbG9zZXN0X2tleVxuXG4gIGxldCByZWMgcmFuayB0IGsgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGsnLCBfKSAtPiBpZiBjb21wYXJlX2tleSBrJyBrID0gMCB0aGVuIFNvbWUgMCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGsnLCBfLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBTb21lIChsZW5ndGggbClcbiAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgIHRoZW4gcmFuayBsIGsgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIE9wdGlvbi5tYXAgKHJhbmsgciBrIH5jb21wYXJlX2tleSkgfmY6KGZ1biByYW5rIC0+IHJhbmsgKyAxICsgbGVuZ3RoIGwpXG4gIDs7XG5cbiAgKCogdGhpcyBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbU2VxdWVuY2VdIGludGVyZmFjZSBidXQgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvblxuICAgICBhbGxvY2F0ZXMgb25seSAyIHdvcmRzIGFuZCBkb2Vzbid0IHJlcXVpcmUgd3JpdGUtYmFycmllciAqKVxuICBsZXQgcmVjIG50aCcgbnVtX3RvX3NlYXJjaCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPlxuICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICBOb25lKVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIChtYXRjaCBudGgnIG51bV90b19zZWFyY2ggbCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiBzb21lXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgICAgIG50aCcgbnVtX3RvX3NlYXJjaCByKSlcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IG50aCcgKHJlZiBuKSB0XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPCAwKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgKGtleSwgZGF0YSkgYXMgcGFpciB3aGVuIGNvbXBhcmUgfmtleSB+ZGF0YSB2ID0gMCAtPiBwYWlyXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgKGtleSwgZGF0YSkgYXMgcGFpciB3aGVuIGNvbXBhcmUgfmtleSB+ZGF0YSB2ID0gMCAtPiBwYWlyXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMClcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+IDApXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgfmtleSB+ZGF0YSA9IG5vdCAoaXNfbGVmdCB+a2V5IH5kYXRhKSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0XG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXSBmaW5kcyB0aGUga2V5IGluIFt0XSB3aGljaCBzYXRpc2ZpZXMgW21heWJlX2JvdW5kXVxuICAgICBhbmQgdGhlIHJlbGV2YW50IG9uZSBvZiBbaWZfZXhjbHVzaXZlXSBvciBbaWZfaW5jbHVzaXZlXSwgYXMganVkZ2VkIGJ5IFtjb21wYXJlXS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgfmlmX2V4Y2x1c2l2ZSB+aWZfaW5jbHVzaXZlID1cbiAgICBsZXQgZmluZF9ib3VuZCB0IGhvdyBib3VuZCB+Y29tcGFyZSA6IF8gTWF5YmVfYm91bmQudCBvcHRpb24gPVxuICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCB0IGhvdyBib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICB8IFNvbWUgKGJvdW5kLCBfKSAtPiBTb21lIChJbmNsIGJvdW5kKVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIChtYXliZV9ib3VuZCA6IF8gTWF5YmVfYm91bmQudCkgd2l0aFxuICAgIHwgRXhjbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfZXhjbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBJbmNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9pbmNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IFVuYm91bmRlZCAtPiBTb21lIFVuYm91bmRlZFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHNdIGZpbmRzIHRoZSAobm90IG5lY2Vzc2FyaWx5IGRpc3RpbmN0KSBrZXlzIGluIFt0XVxuICAgICB3aGljaCBtb3N0IGNsb3NlbHkgYXBwcm9hY2ggKGJ1dCBkbyBub3QgY3Jvc3MpIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF0sIGFzXG4gICAgIGp1ZGdlZCBieSBbY29tcGFyZV0uIEl0IHJldHVybnMgW05vbmVdIGlmIG5vIGtleXMgaW4gW3RdIGFyZSB3aXRoaW4gdGhhdCByYW5nZS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBmaW5kX2xvd2VyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBsZXQgZmluZF91cHBlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIG1hdGNoIGZpbmRfbG93ZXJfYm91bmQgdCBsb3dlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbG93ZXJfYm91bmQgLT5cbiAgICAgIChtYXRjaCBmaW5kX3VwcGVyX2JvdW5kIHQgdXBwZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIHVwcGVyX2JvdW5kIC0+IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkpXG4gIDs7XG5cbiAgdHlwZSAoJ2ssICd2KSBhY2MgPVxuICAgIHsgbXV0YWJsZSBiYWRfa2V5IDogJ2sgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG1hcF9sZW5ndGggOiAoJ2ssICd2KSB0ICogaW50XG4gICAgfVxuXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYWNjID0geyBiYWRfa2V5ID0gTm9uZTsgbWFwX2xlbmd0aCA9IGVtcHR5LCAwIH0gaW5cbiAgICBpdGVyaSB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGxldCBtYXAsIGxlbmd0aCA9IGFjYy5tYXBfbGVuZ3RoIGluXG4gICAgICBsZXQgKChfLCBsZW5ndGgnKSBhcyBwYWlyKSA9IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgbWFwIH5jb21wYXJlX2tleSBpblxuICAgICAgaWYgbGVuZ3RoID0gbGVuZ3RoJyAmJiBPcHRpb24uaXNfbm9uZSBhY2MuYmFkX2tleVxuICAgICAgdGhlbiBhY2MuYmFkX2tleSA8LSBTb21lIGtleVxuICAgICAgZWxzZSBhY2MubWFwX2xlbmd0aCA8LSBwYWlyKTtcbiAgICBtYXRjaCBhY2MuYmFkX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IGBPayBhY2MubWFwX2xlbmd0aFxuICAgIHwgU29tZSBrZXkgLT4gYER1cGxpY2F0ZV9rZXkga2V5XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9pdGVyaV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3Qga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCBzZXhwIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCkgc2V4cCBpblxuICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIG1hdGNoIG9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgICAgTGlzdC5pdGVyMl9vayBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgazIgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIk1hcC50X29mX3NleHBfZGlyZWN0OiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICBsZXQgZiB+a2V5IH5kYXRhIGFjYyA9IFNleHAuTGlzdCBbIHNleHBfb2Zfa2V5IGtleTsgc2V4cF9vZl92YWx1ZSBkYXRhIF0gOjogYWNjIGluXG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IH5mIHQgfmluaXQ6W10pXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgbGV0IG9rcywgKGVycm9yX3RyZWUsIF8pID0gcGFydGl0aW9uX21hcCB0IH5jb21wYXJlX2tleSB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gICAgaWYgaXNfZW1wdHkgZXJyb3JfdHJlZVxuICAgIHRoZW4gT2sgb2tzXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvcl9zIChzZXhwX29mX3Qgc2V4cF9vZl9rZXkgRXJyb3Iuc2V4cF9vZl90IGVycm9yX3RyZWUpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzXG4gICAgICAgIHQxXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yOih7IGNvbXBhcmUgPSBjb21wYXJlX2tleTsgc2V4cF9vZl90ID0gc2V4cF9vZl9rZXkgfSA6IF8gQ29tcGFyYXRvci50KVxuICAgID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGBPa1xuICAgICAgICAoZm9sZCB0MSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gfmtleSB+ZGF0YSAodDIsIGxlbmd0aCkgLT5cbiAgICAgICAgICAgbGV0IGtleSA9IGYga2V5IGluXG4gICAgICAgICAgIHRyeSBhZGRfZXhuX2ludGVybmFsIHQyIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IHdpdGhcbiAgICAgICAgICAgfCBEdXBsaWNhdGUgLT4gcmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpKSkpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayByZXN1bHQgLT4gcmVzdWx0XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIGxldCBzZXhwX29mX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIk1hcC5tYXBfa2V5c19leG46IGR1cGxpY2F0ZSBrZXlcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuZW5kXG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPVxuICB7ICgqIFtjb21wYXJhdG9yXSBpcyB0aGUgZmlyc3QgZmllbGQgc28gdGhhdCBwb2x5bW9ycGhpYyBlcXVhbGl0eSBmYWlscyBvbiBhIG1hcCBkdWVcbiAgICAgICB0byB0aGUgZnVuY3Rpb25hbCB2YWx1ZSBpbiB0aGUgY29tcGFyYXRvci5cbiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgcG9seW1vcnBoaWMgW2NvbXBhcmVdOiB0aGF0IHN0aWxsIHByb2R1Y2VzXG4gICAgICAgbm9uc2Vuc2UuICopXG4gICAgY29tcGFyYXRvciA6ICgnaywgJ2NvbXBhcmF0b3IpIENvbXBhcmF0b3IudFxuICA7IHRyZWUgOiAoJ2ssICd2KSBUcmVlMC50XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcblxubGV0IGNvbXBhcmVfa2V5IHQgPSB0LmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cblxubGV0IGxpa2UgeyB0cmVlID0gXzsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9ICh0cmVlLCBsZW5ndGgpID1cbiAgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IGxpa2UyIHggKHksIHopID0gbGlrZSB4IHksIGxpa2UgeCB6XG5cbmxldCBsaWtlX21heWJlX25vX29wICh7IHRyZWUgPSBvbGRfdHJlZTsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9IGFzIG9sZF90KSAodHJlZSwgbGVuZ3RoKVxuICA9XG4gIGlmIHBoeXNfZXF1YWwgb2xkX3RyZWUgdHJlZSB0aGVuIG9sZF90IGVsc2UgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IHdpdGhfc2FtZV9sZW5ndGggeyB0cmVlID0gXzsgY29tcGFyYXRvcjsgbGVuZ3RoIH0gdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cbmxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuKCogRXhwb3NpbmcgdGhpcyBmdW5jdGlvbiB3b3VsZCBtYWtlIGl0IHZlcnkgZWFzeSBmb3IgdGhlIGludmFyaWFudHNcbiAgIG9mIHRoaXMgbW9kdWxlIHRvIGJlIGJyb2tlbi4gKilcbmxldCBvZl90cmVlX3Vuc2FmZSB+Y29tcGFyYXRvciB+bGVuZ3RoIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgdCA9IHQuY29tcGFyYXRvclxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG5cbiAgbGV0IGludmFyaWFudHMgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSAmJiBUcmVlMC5sZW5ndGggdC50cmVlID0gdC5sZW5ndGhcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHQudHJlZVxuICBsZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlIHQgKFRyZWUwLnNldCB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4bl9pbnRlcm5hbFxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IHJlc3VsdCAtPiBgT2sgcmVzdWx0XG4gICAgfCBleGNlcHRpb24gRHVwbGljYXRlIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gICAgbGlrZSB0IChUcmVlMC5yZW1vdmVfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGgga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCBrZXkgPSBUcmVlMC5maW5kX211bHRpIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgPVxuICAgIGxpa2UgdCAoVHJlZTAuY2hhbmdlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPVxuICAgIGxpa2UgdCAoVHJlZTAudXBkYXRlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHQudHJlZVxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIHQga2V5ID0gVHJlZTAuZmluZCB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgcmVtb3ZlIHQga2V5ID1cbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICB0XG4gICAgICAoVHJlZTAucmVtb3ZlIHQudHJlZSBrZXkgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBtZW0gdCBrZXkgPSBUcmVlMC5tZW0gdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdC50cmVlIH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdC50cmVlIH5mXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiA9IFRyZWUwLml0ZXIyIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICBsZXQgbWFwIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcCB0LnRyZWUgfmYpXG4gIGxldCBtYXBpIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcGkgdC50cmVlIH5mKVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5mIH5pbml0XG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEudHJlZSB0Mi50cmVlIH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcl9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcmkgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyaSB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcl9tYXBpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwaSB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbmlfdGYgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KGxpa2UgdClcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9yc1xuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2RhdGEgdDEgdDIgPSBUcmVlMC5lcXVhbCAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdC50cmVlXG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHQudHJlZVxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0LnRyZWVcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MS50cmVlXG4gICAgICB0Mi50cmVlXG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiA9XG4gICAgbGlrZSB0MSAoVHJlZTAubWVyZ2UgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIFRoaXMgaXMgb25seSBhIG5vLW9wIGluIHRoZSBjYXNlIHdoZXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgbWFwcyBpcyBlbXB0eS4gKilcbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICAoaWYgdDIubGVuZ3RoIDw9IHQxLmxlbmd0aCB0aGVuIHQxIGVsc2UgdDIpXG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MS50cmVlXG4gICAgICAgICB0Mi50cmVlXG4gICAgICAgICB+bGVuZ3RoMTp0MS5sZW5ndGhcbiAgICAgICAgIH5sZW5ndGgyOnQyLmxlbmd0aFxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdC50cmVlIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0LnRyZWUgfmZcblxuICBsZXQgc3BsaXQgdCBrID1cbiAgICBsZXQgbCwgbWF5YmUsIHIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgayB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IGJvdGhfbGVuID0gaWYgT3B0aW9uLmlzX3NvbWUgbWF5YmUgdGhlbiB0Lmxlbmd0aCAtIDEgZWxzZSB0Lmxlbmd0aCBpblxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBtYXliZSwgb2ZfdHJlZV91bnNhZmUgciB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCBsKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gb2ZfdHJlZSByIH5jb21wYXJhdG9yIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBsIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIHIpLCBtYXliZSwgcilcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgbGVmdCwgbWlkLCByaWdodCA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZSB0LnRyZWUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IG91dGVyX2pvaW5lZF9oZWlnaHQgPVxuICAgICAgbGV0IGhfbCA9IFRyZWUwLmhlaWdodCBsZWZ0XG4gICAgICBhbmQgaF9yID0gVHJlZTAuaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoX2wgPSBoX3IgdGhlbiBoX2wgKyAxIGVsc2UgbWF4IGhfbCBoX3JcbiAgICBpblxuICAgIGlmIG91dGVyX2pvaW5lZF9oZWlnaHQgPCBUcmVlMC5oZWlnaHQgbWlkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWlkX2xlbmd0aCA9IHQubGVuZ3RoIC0gKFRyZWUwLmxlbmd0aCBsZWZ0ICsgVHJlZTAubGVuZ3RoIHJpZ2h0KSBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpIH5sZW5ndGg6bWlkX2xlbmd0aClcbiAgICBlbHNlIG9mX3RyZWUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmFwcGVuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IGxvd2VyX3BhcnQpXG4gICAgICAgIH5sb3dlcl9wYXJ0Omxvd2VyX3BhcnQudHJlZVxuICAgICAgICB+dXBwZXJfcGFydDp1cHBlcl9wYXJ0LnRyZWVcbiAgICB3aXRoXG4gICAgfCBgT2sgdHJlZSAtPlxuICAgICAgYE9rXG4gICAgICAgIChvZl90cmVlX3Vuc2FmZVxuICAgICAgICAgICB0cmVlXG4gICAgICAgICAgIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIGxvd2VyX3BhcnQpXG4gICAgICAgICAgIH5sZW5ndGg6KGxvd2VyX3BhcnQubGVuZ3RoICsgdXBwZXJfcGFydC5sZW5ndGgpKVxuICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQudHJlZSB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdC50cmVlIH5taW4gfm1heCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdC50cmVlIGRpciBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQudHJlZSBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIHQga2V5ID0gVHJlZTAucmFuayB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdC50cmVlIH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBsaWtlX21heWJlX25vX29wIHQgKEVtcHR5LCAwKVxuICA7O1xuZW5kXG5cbigqIFswXSBpcyB1c2VkIGFzIHRoZSBbbGVuZ3RoXSBhcmd1bWVudCBldmVyeXdoZXJlIGluIHRoaXMgbW9kdWxlLCBzaW5jZSB0cmVlcyBkbyBub3RcbiAgIGhhdmUgdGhlaXIgbGVuZ3RocyBzdG9yZWQgYXQgdGhlIHJvb3QsIHVubGlrZSBtYXBzLiBUaGUgdmFsdWVzIGFyZSBkaXNjYXJkZWQgYWx3YXlzLiAqKVxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9ICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gayB2ID0gVHJlZTAuc2luZ2xldG9uIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBmc3QgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayAodHJlZSwgX3NpemUpIC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvciB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9IGZzdCAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIGZzdCAoVHJlZTAub2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPSBmc3QgKFRyZWUwLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl9yZXF1aXJlZF9ieV9pbnRmIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6ZnN0XG4gICAgICAoVHJlZTAub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG1hdGNoIFRyZWUwLm9mX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayAodHJlZSwgX3NpemUpIC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9IGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fdHJlZSB0ID0gdFxuXG4gIGxldCBpbnZhcmlhbnRzIH5jb21wYXJhdG9yIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHRcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcblxuICBsZXQgc2V0IH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgZnN0IChUcmVlMC5zZXQgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBmc3RcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0XG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmxlbmd0aDowXG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgdHJ5IGBPayAoYWRkX2V4biB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEpIHdpdGhcbiAgICB8IF8gLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBUcmVlMC5hZGRfbXVsdGkgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB8PiBmc3RcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5yZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB8PiBmc3RcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9tdWx0aSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICBmc3QgKFRyZWUwLmNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcbiAgOztcblxuICBsZXQgZmluZF9leG4gfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0XG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLmZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgZnN0IChUcmVlMC5yZW1vdmUgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAubWVtIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdCB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQgfmZcblxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIFRyZWUwLml0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mXG4gIGxldCBtYXBpIHQgfmYgPSBUcmVlMC5tYXBpIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmYgfmluaXQgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIH5jb21wYXJhdG9yIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJfa2V5cyB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fbWFwaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fbWFwIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbmlfdGYgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgfmNvbXBhcmF0b3IgdCA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjpmc3RcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9yc1xuICAgICAgICAgdFxuICAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmVxdWFsIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHRcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdFxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDFcbiAgICAgIHQyXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIGZzdCAoVHJlZTAubWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgfmNvbXBhcmF0b3IgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIExlbmd0aCBjb21wdXRhdGlvbiBtYWtlcyB0aGlzIHNpZ25pZmljYW50bHkgc2xvd2VyIHRoYW4gW21lcmdlX3NrZXdlZF0gb24gYSBtYXBcbiAgICAgICB3aXRoIGEgW2xlbmd0aF0gZmllbGQsIGJ1dCBkb2VzIHByZXNlcnZlIGFtb3VudCBvZiBhbGxvY2F0aW9uLiAqKVxuICAgIGZzdFxuICAgICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgICAgdDFcbiAgICAgICAgIHQyXG4gICAgICAgICB+bGVuZ3RoMToobGVuZ3RoIHQxKVxuICAgICAgICAgfmxlbmd0aDI6KGxlbmd0aCB0MilcbiAgICAgICAgIH5jb21iaW5lXG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IFRyZWUwLmZvcl9hbGxpIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQgfmZcbiAgbGV0IHNwbGl0IH5jb21wYXJhdG9yIHQgayA9IFRyZWUwLnNwbGl0IHQgayB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgYXBwZW5kIH5jb21wYXJhdG9yIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBUcmVlMC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IF8sIHJldCwgXyA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH5sb3dlcl9ib3VuZFxuICAgICAgICB+dXBwZXJfYm91bmRcbiAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICByZXRcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICB0XG4gICAgICB+bWluXG4gICAgICB+bWF4XG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB+Y29tcGFyYXRvciB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IH5jb21wYXJhdG9yIHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdCBkaXIga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLnJhbmsgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBmc3QgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3Qga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaCBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IEVtcHR5XG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgd2l0aFxuICAgIHwgYE9rICh0LCBfKSAtPiBgT2sgdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID0gZnN0IChUcmVlMC5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZilcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ3cpIHQgPSAoJ2ssICd2KSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRcblxuICAgIGxldCBlbXB0eSA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcblxuICAgIGxldCBhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgdCB3aXRoXG4gICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICBFcnJvci5yYWlzZV9zIChTZXhwLkF0b20gXCJNYXAuQnVpbGRfaW5jcmVhc2luZy5hZGQ6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgfCBfIC0+IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0IH5rZXkgfmRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWUgdCA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdiA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBrIHY7IGxlbmd0aCA9IDEgfVxuICBsZXQgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHRyZWUsIGxlbmd0aCkgPSB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSBvZl90cmVlMCB+Y29tcGFyYXRvciAodHJlZSwgVHJlZTAubGVuZ3RoIHRyZWUpXG4gIGxldCB0b190cmVlID0gdG9fdHJlZVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgICAgfmY6KGZ1biB0cmVlIC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBsZW5ndGgpIC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+aXRlcmkgd2l0aFxuICAgIHwgYE9rIHRyZWVfbGVuZ3RoIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZV9sZW5ndGgpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSlcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYsIGxlbilcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KG9mX3RyZWUwIH5jb21wYXJhdG9yKVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayAodHJlZSwgbGVuZ3RoKSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcGFpciAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHBhaXIpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5tYXBfa2V5c19leG4gdC50cmVlIH5mIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IHRyZWUgPSBUcmVlMC5lbXB0eTsgY29tcGFyYXRvciA9IEsuY29tcGFyYXRvcjsgbGVuZ3RoID0gMCB9XG4gIGVuZFxuXG4gIG1vZHVsZSBUcmVlID0gVHJlZVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfdHJlZSAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBjb21wYXJhdG9yKSB0cmVlID1cbiAgb2ZfdHJlZSB+Y29tcGFyYXRvcjpNLmNvbXBhcmF0b3IgdHJlZVxuOztcblxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2FsaXN0X2V4biBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3RfbXVsdGkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9mb2xkIG0gYSB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5pbml0IH5mXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVkdWNlIG0gYSB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9pdGVyaSBtIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5cbmxldCBvZl9pdGVyaV9leG4gbSB+aXRlcmkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBtIH5sZW4gfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIG0gc2VxID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNlcVxuOztcblxubGV0IG9mX3NlcXVlbmNlIG0gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZXhuIG0gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX211bHRpIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2ZvbGQgbSBzIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgbSBzIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+ZlxuOztcblxubGV0IG1hcF9rZXlzIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxubGV0IG1hcF9rZXlzX2V4biBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5cbm1vZHVsZSBNIChLIDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGsgY21wKVxuICAgICAgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICB2X29mX3NleHBcbiAgICAgIHNleHBcbiAgPVxuICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3I6Sy5jb21wYXJhdG9yIEsudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGspXG4gICAgICAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspXG4gICAgICAodl9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIExpc3RcbiAgICAgICAgKE1hbnkgKExpc3QgKENvbnMgKEsudF9zZXhwX2dyYW1tYXIudW50eXBlZCwgQ29ucyAodl9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSkpKSlcbiAgfVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIGNvbXBhcmVfdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfdiB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gaykgaGFzaF9mb2xkX3Ygc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEsuaGFzaF9mb2xkX3QgaGFzaF9mb2xkX3Ygc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhIH5pbml0IH5mXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGEgfmZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3IgcyB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG5lbmRcbiIsIm9wZW4hIEltcG9ydDBcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbC5RdWV1ZS50XG5cbmxldCBjcmVhdGUgPSBDYW1sLlF1ZXVlLmNyZWF0ZVxubGV0IGNsZWFyID0gQ2FtbC5RdWV1ZS5jbGVhclxubGV0IGNvcHkgPSBDYW1sLlF1ZXVlLmNvcHlcbmxldCBpc19lbXB0eSA9IENhbWwuUXVldWUuaXNfZW1wdHlcbmxldCBsZW5ndGggPSBDYW1sLlF1ZXVlLmxlbmd0aFxubGV0IHBlZWsgPSBDYW1sLlF1ZXVlLnBlZWtcbmxldCBwb3AgPSBDYW1sLlF1ZXVlLnBvcFxubGV0IHB1c2ggPSBDYW1sLlF1ZXVlLnB1c2hcbmxldCB0cmFuc2ZlciA9IENhbWwuUXVldWUudHJhbnNmZXJcbmxldCBpdGVyIHQgfmYgPSBDYW1sLlF1ZXVlLml0ZXIgZiB0XG5sZXQgZm9sZCB0IH5pbml0IH5mID0gQ2FtbC5RdWV1ZS5mb2xkIGYgaW5pdCB0XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlua2VkX3F1ZXVlMFxuXG5sZXQgZW5xdWV1ZSB0IHggPSBMaW5rZWRfcXVldWUwLnB1c2ggeCB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBvcCB0KVxubGV0IGRlcXVldWVfZXhuID0gTGlua2VkX3F1ZXVlMC5wb3BcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKExpbmtlZF9xdWV1ZTAucGVlayB0KVxubGV0IHBlZWtfZXhuID0gTGlua2VkX3F1ZXVlMC5wZWVrXG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYERlZmluZV91c2luZ19mb2xkXG4gICAgbGV0IGl0ZXJpID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IGNvdW50aSA9IEMuY291bnRpXG5sZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxubGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5sZXQgZmluZGkgPSBDLmZpbmRpXG5sZXQgZm9sZGkgPSBDLmZvbGRpXG5sZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG5sZXQgaXRlcmkgPSBDLml0ZXJpXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID0gTGlua2VkX3F1ZXVlMC50cmFuc2ZlciBzcmMgZHN0XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gTGlzdC5pdGVyIChmIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gTGlzdC5pdGVyIChmIGkgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+XG4gICAgbWF0Y2ggZiBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHJlcyBiKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoIGYgaSBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHJlcyBiKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBpZiBmIGkgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBlbnF1ZXVlIHJlcyAoZiBhKSk7XG4gIHJlc1xuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBlbnF1ZXVlIHJlcyAoZiBpIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlciBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXJpIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGxpc3QgPSBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpXG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBBcnJheS5pdGVyIGFycmF5IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBpbml0IGxlbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgZW5xdWV1ZSB0IChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggbGVuZ3RoIHQgd2l0aFxuICB8IDAgLT4gW3x8XVxuICB8IGxlbiAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbiAocGVla19leG4gdCkgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gdiAtPlxuICAgICAgYXJyLighaSkgPC0gdjtcbiAgICAgIGluY3IgaSk7XG4gICAgYXJyXG47O1xuXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAobGlzdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5sZXQgc2luZ2xldG9uIGEgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBlbnF1ZXVlIHQgYTtcbiAgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5JbnQ2NFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50NjRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgY29tcGFyZSA9IEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDY0XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHBvdyA9IEludF9tYXRoLlByaXZhdGUuaW50NjRfcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gQ2FtbC5JbnQ2NC5vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBDYW1sLkludDY0Lm9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDY0IDogdCAtPiB0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMTYgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSA0OFxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMzIgeCA9XG4gICgqIFRoaXMgaXMgc3RyaWN0bHkgYmV0dGVyIHRoYW4gY29lcmNpbmcgdG8gYW4gaW50MzIgdG8gcGVyZm9ybSBieXRlc3dhcC4gQ29lcmNpbmdcbiAgICAgZnJvbSBhbiBpbnQzMiB3aWxsIGFkZCB1bm5lY2Vzc2FyeSBzaGlmdCBvcGVyYXRpb25zIHRvIHNpZ24gZXh0ZW5kIHRoZSBudW1iZXJcbiAgICAgYXBwcm9wcmlhdGVseS5cbiAgKilcbiAgQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDMyXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwNDggeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAxNlxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgaW5jciByID0gciA6PSBhZGQgIXIgb25lXG5sZXQgZGVjciByID0gciA6PSBzdWIgIXIgb25lXG5cbmV4dGVybmFsIG9mX2ludDY0IDogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgb2ZfaW50NjRfZXhuID0gb2ZfaW50NjRcbmxldCB0b19pbnQ2NCB0ID0gdFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50NjRfcG9wY291bnRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxuZXh0ZXJuYWwgdG9faW50X3RydW5jIDogdCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIHRvX25hdGl2ZWludF90cnVuYyA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcblxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252LmludDY0X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IENhbWwuSW50NjQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5JbnQ2NC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLkludDY0LnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5JbnQ2NC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5JbnQ2NC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5JbnQ2NC5wcmVkIHggPSBDYW1sLkludDY0Lnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBDYW1sLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIENhbWwuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgaWYgQ2FtbC5JbnQ2NC5lcXVhbCBpIENhbWwuSW50NjQub25lIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLkludDY0LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVMeFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NFwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9hZGRcIlxuICBleHRlcm5hbCAoIC0gKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfc3ViXCJcbiAgZXh0ZXJuYWwgKCAqICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X211bFwiXG4gIGV4dGVybmFsICggLyApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9kaXZcIlxuICBleHRlcm5hbCAoIH4tICkgOiB0IC0+IHQgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiB0IC0+IHQgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfYW5kXCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfb3JcIlxuICBleHRlcm5hbCAoIGx4b3IgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfeG9yXCJcblxuICBsZXQgbG5vdCA9IGJpdF9ub3RcblxuICBleHRlcm5hbCAoIGxzbCApIDogdCAtPiBpbnQgLT4gdCA9IFwiJWludDY0X2xzbFwiXG4gIGV4dGVybmFsICggYXNyICkgOiB0IC0+IGludCAtPiB0ID0gXCIlaW50NjRfYXNyXCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IHQgLT4gaW50IC0+IHQgPSBcIiVpbnQ2NF9sc3JcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjRdIGFuZCBbSW50NjQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBBIDYzYml0IGludGVnZXIgaXMgYSA2NGJpdCBpbnRlZ2VyIHdpdGggaXRzIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgYW5kIGl0cyBsb3dlc3QgYml0IHNldCB0byAwLlxuICAgVGhpcyBpcyB0aGUgc2FtZSBraW5kIG9mIGVuY29kaW5nIGFzIE9DYW1sIGludCBvbiA2NGJpdCBhcmNoaXRlY3R1cmUuXG4gICBUaGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIHRoZSBsb3dlc3QgYml0IChpbW1lZGlhdGUgYml0KSBzZXQgdG8gMS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5cbm1vZHVsZSBUMCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDY0IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubW9kdWxlIFcgOiBzaWdcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcbiAgZW5kXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICB2YWwgd3JhcF9leG4gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgd3JhcF9tb2R1bG8gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgdW53cmFwIDogdCAtPiBDYW1sLkludDY0LnRcblxuICAoKiogUmV0dXJucyBhIG5vbi1uZWdhdGl2ZSBpbnQ2NCB0aGF0IGlzIGVxdWFsIHRvIHRoZSBpbnB1dCBpbnQ2MyBtb2R1bG8gMl42My4gKilcbiAgdmFsIHVud3JhcF91bnNpZ25lZCA6IHQgLT4gQ2FtbC5JbnQ2NC50XG5cbiAgdmFsIGludmFyaWFudCA6IHQgLT4gdW5pdFxuICB2YWwgYWRkIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN1YiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgc3VjYyA6IHQgLT4gdFxuICB2YWwgcHJlZCA6IHQgLT4gdFxuICB2YWwgbXVsIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvdyA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaXYgOiB0IC0+IHQgLT4gdFxuICB2YWwgcmVtIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvcGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIGJpdF9ub3QgOiB0IC0+IHRcbiAgdmFsIGJpdF94b3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X29yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9hbmQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc2hpZnRfbGVmdCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIG1pbl92YWx1ZSA6IHRcbiAgdmFsIG1heF92YWx1ZSA6IHRcbiAgdmFsIHRvX2ludDY0IDogdCAtPiBDYW1sLkludDY0LnRcbiAgdmFsIG9mX2ludDY0IDogQ2FtbC5JbnQ2NC50IC0+IHQgb3B0aW9uXG4gIHZhbCBvZl9pbnQ2NF9leG4gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGNlaWxfcG93MiA6IHQgLT4gdFxuICB2YWwgZmxvb3JfcG93MiA6IHQgLT4gdFxuICB2YWwgY2VpbF9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGZsb29yX2xvZzIgOiB0IC0+IGludFxuICB2YWwgaXNfcG93MiA6IHQgLT4gYm9vbFxuICB2YWwgY2x6IDogdCAtPiBpbnRcbiAgdmFsIGN0eiA6IHQgLT4gaW50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUMFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgbGV0IHdyYXBfZXhuIHggPVxuICAgICgqIFJhaXNlcyBpZiB0aGUgaW50NjQgdmFsdWUgZG9lcyBub3QgZml0IG9uIGludDYzLiAqKVxuICAgIENvbnYuaW50NjRfZml0X29uX2ludDYzX2V4biB4O1xuICAgIENhbWwuSW50NjQubXVsIHggMkxcbiAgOztcblxuICBsZXQgd3JhcCB4ID1cbiAgICBpZiBDb252LmludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuIFNvbWUgKENhbWwuSW50NjQubXVsIHggMkwpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB3cmFwX21vZHVsbyB4ID0gQ2FtbC5JbnQ2NC5tdWwgeCAyTFxuICBsZXQgdW53cmFwIHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IHggMVxuICBsZXQgdW53cmFwX3Vuc2lnbmVkIHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAxXG5cbiAgKCogVGhpcyBkb2VzIG5vdCB1c2Ugd3JhcCBvciB1bndyYXAgdG8gYXZvaWQgZ2VuZXJhdGluZyBleGNlcHRpb25zIGluIHRoZSBjYXNlIG9mXG4gICAgIG92ZXJmbG93cy4gVGhpcyBpcyB0byBwcmVzZXJ2ZSB0aGUgc2VtYW50aWNzIG9mIGludCB0eXBlIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmUuICopXG4gIGxldCBmMiBmIGEgYiA9XG4gICAgQ2FtbC5JbnQ2NC5tdWwgKGYgKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgYSAxKSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpKSAyTFxuICA7O1xuXG4gIGxldCBtYXNrID0gMHhmZmZmX2ZmZmZfZmZmZl9mZmZlTFxuICBsZXQgbSB4ID0gQ2FtbC5JbnQ2NC5sb2dhbmQgeCBtYXNrXG4gIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAobSB0ID0gdClcbiAgbGV0IGFkZCB4IHkgPSBDYW1sLkludDY0LmFkZCB4IHlcbiAgbGV0IHN1YiB4IHkgPSBDYW1sLkludDY0LnN1YiB4IHlcbiAgbGV0IG5lZyB4ID0gQ2FtbC5JbnQ2NC5uZWcgeFxuICBsZXQgYWJzIHggPSBDYW1sLkludDY0LmFicyB4XG4gIGxldCBvbmUgPSB3cmFwX2V4biAxTFxuICBsZXQgc3VjYyBhID0gYWRkIGEgb25lXG4gIGxldCBwcmVkIGEgPSBzdWIgYSBvbmVcbiAgbGV0IG1pbl92YWx1ZSA9IG0gQ2FtbC5JbnQ2NC5taW5faW50XG4gIGxldCBtYXhfdmFsdWUgPSBtIENhbWwuSW50NjQubWF4X2ludFxuICBsZXQgYml0X25vdCB4ID0gbSAoQ2FtbC5JbnQ2NC5sb2dub3QgeClcbiAgbGV0IGJpdF9hbmQgPSBDYW1sLkludDY0LmxvZ2FuZFxuICBsZXQgYml0X3hvciA9IENhbWwuSW50NjQubG9neG9yXG4gIGxldCBiaXRfb3IgPSBDYW1sLkludDY0LmxvZ29yXG4gIGxldCBzaGlmdF9sZWZ0IHggaSA9IENhbWwuSW50NjQuc2hpZnRfbGVmdCB4IGlcbiAgbGV0IHNoaWZ0X3JpZ2h0IHggaSA9IG0gKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgeCBpKVxuICBsZXQgc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkgPSBtIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpKVxuICBsZXQgcG93ID0gZjIgSW50X21hdGguUHJpdmF0ZS5pbnQ2M19wb3dfb25faW50NjRcbiAgbGV0IG11bCBhIGIgPSBDYW1sLkludDY0Lm11bCBhIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSlcbiAgbGV0IGRpdiBhIGIgPSB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5kaXYgYSBiKVxuICBsZXQgcmVtIGEgYiA9IENhbWwuSW50NjQucmVtIGEgYlxuICBsZXQgcG9wY291bnQgeCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50IHhcbiAgbGV0IHRvX2ludDY0IHQgPSB1bndyYXAgdFxuICBsZXQgb2ZfaW50NjQgdCA9IHdyYXAgdFxuICBsZXQgb2ZfaW50NjRfZXhuIHQgPSB3cmFwX2V4biB0XG4gIGxldCBvZl9pbnQ2NF90cnVuYyB0ID0gd3JhcF9tb2R1bG8gdFxuICBsZXQgdF9vZl9zZXhwIHggPSB3cmFwX2V4biAoaW50NjRfb2Zfc2V4cCB4KVxuICBsZXQgc2V4cF9vZl90IHggPSBzZXhwX29mX2ludDY0ICh1bndyYXAgeClcbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGlzX3BvdzIgeCA9IEludDY0LmlzX3BvdzIgKHVud3JhcCB4KVxuXG4gIGxldCBjbHogeCA9XG4gICAgKCogV2UgcnVuIEludDY0LmNseiBkaXJlY3RseSBvbiB0aGUgd3JhcHBlZCBpbnQ2MyB2YWx1ZS4gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2UgdGhlXG4gICAgICAgYml0cyBvZiB0aGUgaW50NjNfZW11bCBhcmUgbGVmdC1hbGlnbmVkIGluIHRoZSBJbnQ2NC4gKilcbiAgICBJbnQ2NC5jbHogeFxuICA7O1xuXG4gIGxldCBjdHogeCA9IEludDY0LmN0eiAodW53cmFwIHgpXG4gIGxldCBmbG9vcl9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGNlaWxfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBmbG9vcl9sb2cyIHggPSBJbnQ2NC5mbG9vcl9sb2cyICh1bndyYXAgeClcbiAgbGV0IGNlaWxfbG9nMiB4ID0gSW50NjQuY2VpbF9sb2cyICh1bndyYXAgeClcbmVuZFxuXG5vcGVuIFdcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVy50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIFcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBXLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKFcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoVy5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBXLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVy5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVy5jb21wYXJlXG4gIGxldCBpbnZhcmlhbnQgPSBXLmludmFyaWFudFxuXG4gICgqIFdlIGRvbid0IGV4cGVjdCBbaGFzaF0gdG8gZm9sbG93IHRoZSBiZWhhdmlvciBvZiBpbnQgaW4gNjRiaXQgYXJjaGl0ZWN0dXJlICopXG4gIGxldCBfID0gaGFzaFxuICBsZXQgaGFzaCAoeCA6IHQpID0gQ2FtbC5IYXNodGJsLmhhc2ggeFxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBpbnZhbGlkX3N0ciB4ID0gUHJpbnRmLmZhaWx3aXRoZiBcIkludDYzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIHggKClcblxuICAoKlxuICAgICBcInNpZ25cIiByZWZlcnMgdG8gd2hldGhlciB0aGUgbnVtYmVyIHN0YXJ0cyB3aXRoIGEgJy0nXG4gICAgIFwic2lnbmVkbmVzcyA9IGZhbHNlXCIgbWVhbnMgdGhlIHJlc3Qgb2YgdGhlIG51bWJlciBpcyBwYXJzZWQgYXMgdW5zaWduZWQgYW5kIHRoZW4gY2FzdFxuICAgICB0byBzaWduZWQgd2l0aCB3cmFwLWFyb3VuZCBtb2R1bG8gMl5pXG4gICAgIFwic2lnbmVkbmVzcyA9IHRydWVcIiBtZWFucyBubyBzdWNoIGNyYXppbmVzcyBoYXBwZW5zXG5cbiAgICAgVGhlIHRlcm1pbm9sb2d5IGFuZCB0aGUgbG9naWMgaXMgZHVlIHRvIHRoZSBjb2RlIGluIGJ5dGVydW4vaW50cy5jIGluIG9jYW1sIDQuMDNcbiAgICAgKFtwYXJzZV9zaWduX2FuZF9iYXNlXSBmdW5jdGlvbikuXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgdHJ1ZSBmb3IgcGxhaW4gZGVjaW1hbCBudW1iZXIgKGUuZy4gMTIzNSwgLTY3ODkpXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgZmFsc2UgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgLSBbMHhmZmZmXSwgWy0weGZmZmZdIChoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMGIwMTAxXSwgWy0wYjAxMDFdIChiaW5hcnkgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBvMTIzN10sIFstMG8xMjM3XSAob2N0YWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzB1OTgxMl0sIFstMHU5ODEyXSAodW5zaWduZWQgZGVjaW1hbCByZXByZXNlbnRhdGlvbiAtIGF2YWlsYWJsZSBmcm9tIE9DYW1sIDQuMDMpICopXG4gIGxldCBzaWduX2FuZF9zaWduZWRuZXNzIHggPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHBvcywgc2lnbiA9XG4gICAgICBpZiAwIDwgbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggeC5bMF0gd2l0aFxuICAgICAgICB8ICctJyAtPiAxLCBgTmVnXG4gICAgICAgIHwgJysnIC0+IDEsIGBQb3NcbiAgICAgICAgfCBfIC0+IDAsIGBQb3MpXG4gICAgICBlbHNlIDAsIGBQb3NcbiAgICBpblxuICAgIGlmIHBvcyArIDIgPCBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBjMSA9IHguW3Bvc10gaW5cbiAgICAgIGxldCBjMiA9IHguW3BvcyArIDFdIGluXG4gICAgICBtYXRjaCBjMSwgYzIgd2l0aFxuICAgICAgfCAnMCcsICcwJyAuLiAnOScgLT4gc2lnbiwgdHJ1ZVxuICAgICAgfCAnMCcsIF8gLT4gc2lnbiwgZmFsc2VcbiAgICAgIHwgXyAtPiBzaWduLCB0cnVlKVxuICAgIGVsc2Ugc2lnbiwgdHJ1ZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9IENhbWwuSW50NjQudG9fc3RyaW5nICh1bndyYXAgeClcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgdHJ5XG4gICAgICBsZXQgc2lnbiwgc2lnbmVkbmVzcyA9IHNpZ25fYW5kX3NpZ25lZG5lc3Mgc3RyIGluXG4gICAgICBpZiBzaWduZWRuZXNzXG4gICAgICB0aGVuIG9mX2ludDY0X2V4biAoQ2FtbC5JbnQ2NC5vZl9zdHJpbmcgc3RyKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwb3Nfc3RyID1cbiAgICAgICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgICAgICB8IGBOZWcgLT4gU3RyaW5nLnN1YiBzdHIgfnBvczoxIH5sZW46KFN0cmluZy5sZW5ndGggc3RyIC0gMSlcbiAgICAgICAgICB8IGBQb3MgLT4gc3RyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbnQ2NCA9IENhbWwuSW50NjQub2Zfc3RyaW5nIHBvc19zdHIgaW5cbiAgICAgICAgKCogdW5zaWduZWQgNjMtYml0IGludCBtdXN0IHBhcnNlIGFzIGEgcG9zaXRpdmUgc2lnbmVkIDY0LWJpdCBpbnQgKilcbiAgICAgICAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGludDY0IDBMIHRoZW4gaW52YWxpZF9zdHIgc3RyO1xuICAgICAgICBsZXQgaW50NjMgPSB3cmFwX21vZHVsbyBpbnQ2NCBpblxuICAgICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgICAgfCBgTmVnIC0+IG5lZyBpbnQ2M1xuICAgICAgICB8IGBQb3MgLT4gaW50NjMpXG4gICAgd2l0aFxuICAgIHwgXyAtPiBpbnZhbGlkX3N0ciBzdHJcbiAgOztcblxuICBsZXQgYnN3YXAxNiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMTYgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwMzIgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDMyICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDQ4IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXA0OCAodW53cmFwIHQpKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgbnVtX2JpdHMgPSA2M1xubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gYml0X25vdFxubGV0IGJpdF94b3IgPSBiaXRfeG9yXG5sZXQgYml0X29yID0gYml0X29yXG5sZXQgYml0X2FuZCA9IGJpdF9hbmRcbmxldCBwb3Bjb3VudCA9IHBvcGNvdW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHBvdyA9IHBvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZVxubGV0IG1pbnVzX29uZSA9IHdyYXBfZXhuIENhbWwuSW50NjQubWludXNfb25lXG5sZXQgb25lID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC5vbmVcbmxldCB6ZXJvID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC56ZXJvXG5sZXQgaXNfcG93MiA9IGlzX3BvdzJcbmxldCBmbG9vcl9wb3cyID0gZmxvb3JfcG93MlxubGV0IGNlaWxfcG93MiA9IGNlaWxfcG93MlxubGV0IGZsb29yX2xvZzIgPSBmbG9vcl9sb2cyXG5sZXQgY2VpbF9sb2cyID0gY2VpbF9sb2cyXG5sZXQgY2x6ID0gY2x6XG5sZXQgY3R6ID0gY3R6XG5sZXQgdG9fZmxvYXQgeCA9IENhbWwuSW50NjQudG9fZmxvYXQgKHVud3JhcCB4KVxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCB4ID0gd3JhcF9tb2R1bG8gKENhbWwuSW50NjQub2ZfZmxvYXQgeClcblxubGV0IG9mX2Zsb2F0IHQgPVxuICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgdCA+PSBmbG9hdF9sb3dlcl9ib3VuZCAmJiB0IDw9IGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gd3JhcF9tb2R1bG8gKENhbWwuSW50NjQub2ZfZmxvYXQgdClcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjMub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBvZl9pbnQ2NCA9IG9mX2ludDY0XG5sZXQgb2ZfaW50NjRfZXhuID0gb2ZfaW50NjRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBvZl9pbnQ2NF90cnVuY1xubGV0IHRvX2ludDY0ID0gdG9faW50NjRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5cbigqIFdlIGNhbiByZXVzZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGZyb20vdG8gaW50NjQgaGVyZS4gKilcbmxldCBvZl9pbnQgeCA9IHdyYXBfZXhuIChDb252LmludF90b19pbnQ2NCB4KVxubGV0IG9mX2ludF9leG4geCA9IG9mX2ludCB4XG5sZXQgdG9faW50IHggPSBDb252LmludDY0X3RvX2ludCAodW53cmFwIHgpXG5sZXQgdG9faW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9faW50X3RydW5jICh1bndyYXAgeClcbmxldCBvZl9pbnQzMiB4ID0gd3JhcF9leG4gKENvbnYuaW50MzJfdG9faW50NjQgeClcbmxldCBvZl9pbnQzMl9leG4geCA9IG9mX2ludDMyIHhcbmxldCB0b19pbnQzMiB4ID0gQ29udi5pbnQ2NF90b19pbnQzMiAodW53cmFwIHgpXG5sZXQgdG9faW50MzJfZXhuIHggPSBDb252LmludDY0X3RvX2ludDMyX2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50MzJfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX25hdGl2ZWludCB4ID0gb2ZfaW50NjQgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfbmF0aXZlaW50X2V4biB4ID0gd3JhcF9leG4gKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jIHggPSBvZl9pbnQ2NF90cnVuYyAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCB0b19uYXRpdmVpbnQgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50ICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfZXhuIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgKHVud3JhcCB4KVxuXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChULmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgVC5oYXNoX2ZvbGRfdFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBULmhhc2ggaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG5cbiAgICBsZXQgdG9fc3RyaW5nIGkgPVxuICAgICAgKCogdGhlIHVzZSBvZiBbdW53cmFwX3Vuc2lnbmVkXSBoZXJlIGlzIGltcG9ydGFudCBmb3IgdGhlIGNhc2Ugb2YgW21pbl92YWx1ZV0gKilcbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJUx4XCIgKHVud3JhcF91bnNpZ25lZCBpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBvZl9zdHJpbmcgKFwiMHhcIiBeIHMpXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDYzLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgeCA9IHRvX3N0cmluZyB4XG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDYzXCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2M10gYW5kIFtJbnQ2My5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIHR5cGUgZW11bGF0ZWQgPSB0XG5cbiAgdHlwZSAoJ3VuZGVybHlpbmdfdHlwZSwgJ2ludGVybWVkaWF0ZV90eXBlKSB0ID1cbiAgICB8IEludCA6IChpbnQsIGludCkgdFxuICAgIHwgSW50NjQgOiAoaW50NjQsIGVtdWxhdGVkKSB0XG5lbmRcblxubGV0IHJlcHIgPSBSZXByLkludDY0XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBib29sIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2Jvb2wgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgZmFsc2U7IHRydWUgXSA6IHQgbGlzdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Jvb2xcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Jvb2wgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGJvb2xfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYm9vbCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBib29sX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gICAgfCBzIC0+IGludmFsaWRfYXJnZiBcIkJvb2wub2Zfc3RyaW5nOiBleHBlY3RlZCB0cnVlIG9yIGZhbHNlIGJ1dCBnb3QgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2Jvb2xcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Cb29sXCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IHRvX2ludCB4ID0gYm9vbF90b19pbnQgeFxuXG5tb2R1bGUgTm9uX3Nob3J0X2NpcmN1aXRpbmcgPSBzdHJ1Y3RcbiAgKCogV2UgZG9uJ3QgZXhwb3NlIHRoaXMsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlIGludmFyaWFudCBtZW50aW9uZWQgYmVsb3cgb2ZcbiAgICAgKHRvX2ludCB0cnVlID0gMSkgYW5kICh0b19pbnQgZmFsc2UgPSAwKS4gKilcbiAgbGV0IHVuc2FmZV9vZl9pbnQgKHggOiBpbnQpIDogYm9vbCA9IENhbWwuT2JqLm1hZ2ljIHhcbiAgbGV0ICggfHwgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsb3IgdG9faW50IGIpXG4gIGxldCAoICYmICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbGFuZCB0b19pbnQgYilcbmVuZFxuXG4oKiBXZSBkbyB0aGlzIGFzIGEgZGlyZWN0IGFzc2VydCBvbiB0aGUgdGhlb3J5IHRoYXQgaXQncyBhIGNoZWFwIHRoaW5nIHRvIHRlc3QgYW5kIGFcbiAgIHJlYWxseSBjb3JlIGludmFyaWFudCB0aGF0IHdlIG5ldmVyIGV4cGVjdCB0byBicmVhaywgYW5kIHdlIHNob3VsZCBiZSBoYXBweSBmb3IgYVxuICAgcHJvZ3JhbSB0byBmYWlsIGltbWVkaWF0ZWx5IGlmIHRoaXMgaXMgdmlvbGF0ZWQuICopXG5sZXQgKCkgPSBhc3NlcnQgKFBvbHkuKCA9ICkgKHRvX2ludCB0cnVlKSAxICYmIFBvbHkuKCA9ICkgKHRvX2ludCBmYWxzZSkgMClcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIENhbWwuSW50MzJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50MzJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50MzIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50MzJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDMyXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQzMi5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgSW5maXhfY29tcGFyZSA9IHN0cnVjdFxuICBvcGVuIFBvbHlcblxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IHggPj0geVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IHggPD0geVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IHggPiB5XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSB4IDwgeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IHggPD4geVxuZW5kXG5cbm1vZHVsZSBDb21wYXJlID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXhfY29tcGFyZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfaW50MzIgdCA9IHRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyIHQgPSB0XG5sZXQgdG9faW50MzJfZXhuID0gdG9faW50MzJcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDMyX3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmxldCBvZl9pbnQgPSBDb252LmludF90b19pbnQzMlxubGV0IG9mX2ludF9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnRfdHJ1bmMgPSBDb252LmludF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludCA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYuaW50MzJfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYuaW50MzJfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXAzMiA6IHQgLT4gdCA9IFwiJWJzd2FwX2ludDMyXCJcblxubGV0IGJzd2FwMTYgeCA9IENhbWwuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXAzMiB4KSAxNlxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBDYW1sLkludDMyLmxvZ29yXG4gIGxldCAoIGxzciApID0gQ2FtbC5JbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IENhbWwuSW50MzIubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gQ2FtbC5JbnQzMi5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIENhbWwuSW50MzIuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIENhbWwuSW50MzIuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIENhbWwuSW50MzIucHJlZCB4ID0gQ2FtbC5JbnQzMi56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50MzIgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBDYW1sLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQzMi5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgKCogVGhlIFtpID0gMV0gY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgY2x6KDApIGlzIHVuZGVmaW5lZCAqKVxuICAgIGlmIENhbWwuSW50MzIuZXF1YWwgaSBDYW1sLkludDMyLm9uZSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoQ2FtbC5JbnQzMi5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50MzIgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVseFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzJcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChDb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQzMl0gYW5kIFtJbnQzMi5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBSZXByID0gSW50NjNfZW11bC5SZXByXG5cbigqIEluIGEgd29ybGQgd2hlcmUgdGhlIGNvbXBpbGVyIHdvdWxkIHVuZGVyc3RhbmQgW0BAaW1tZWRpYXRlNjRdIGF0dHJpYnV0ZXMgb24gdHlwZVxuICAgZGVjbGFyYXRpb25zLCB0aGlzIG1vZHVsZSBpcyBob3cgb25lIHdvdWxkIHByb2R1Y2UgYSBbdHlwZSB0XSB3aXRoIHRoaXMgYXR0cmlidXRlLiAqKVxubW9kdWxlIEltbWVkaWF0ZTY0IDogc2lnXG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICB2YWwgcmVwciA6IHQgcmVwclxuICBlbmRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgbGV0IHJlcHIgPVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAoQ2FtbC5PYmoubWFnaWMgSW1tZWRpYXRlIDogdCByZXByKVxuICAgICAgfCBXMzIgLT4gKENhbWwuT2JqLm1hZ2ljIE5vbl9pbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBJbW1lZGlhdGU2NC5NYWtlIChJbnQpIChJbnQ2M19lbXVsKVxuXG5tb2R1bGUgQmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIEludF9pbnRmLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50IG9wdGlvblxuICAgIHZhbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludFxuICAgIHZhbCBvZl9pbnQzMiA6IGludDMyIC0+IHRcbiAgICB2YWwgdG9faW50MzIgOiB0IC0+IEludDMyLnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludDMyX3RydW5jIDogdCAtPiBJbnQzMi50XG4gICAgdmFsIG9mX2ludDY0IDogSW50NjQudCAtPiB0IG9wdGlvblxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IEludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCBvcHRpb25cbiAgICB2YWwgdG9fbmF0aXZlaW50IDogdCAtPiBuYXRpdmVpbnQgb3B0aW9uXG4gICAgdmFsIG9mX25hdGl2ZWludF90cnVuYyA6IG5hdGl2ZWludCAtPiB0XG4gICAgdmFsIHRvX25hdGl2ZWludF90cnVuYyA6IHQgLT4gbmF0aXZlaW50XG4gICAgdmFsIG9mX2Zsb2F0X3VuY2hlY2tlZCA6IGZsb2F0IC0+IHRcbiAgICB2YWwgcmVwciA6ICh0LCB0KSBJbnQ2M19lbXVsLlJlcHIudFxuICAgIHZhbCBic3dhcDE2IDogdCAtPiB0XG4gICAgdmFsIGJzd2FwMzIgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXA0OCA6IHQgLT4gdFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBOYXRpdmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHRvX2ludCB4ID0gU29tZSB4XG4gICAgbGV0IHRvX2ludF90cnVuYyB4ID0geFxuXG4gICAgKCogW29mX2ludDMyX2V4bl0gaXMgYSBzYWZlIG9wZXJhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aCA2NC1iaXQgd29yZCBzaXplcy4gKilcbiAgICBsZXQgb2ZfaW50MzIgPSBvZl9pbnQzMl9leG5cbiAgICBsZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSB0b19uYXRpdmVpbnQgeFxuICAgIGxldCB0b19uYXRpdmVpbnQgeCA9IFNvbWUgKHRvX25hdGl2ZWludCB4KVxuICAgIGxldCByZXByID0gSW50NjNfZW11bC5SZXByLkludFxuICAgIGxldCBic3dhcDMyIHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwMzIgKEludDY0Lm9mX2ludCB0KSlcbiAgICBsZXQgYnN3YXA0OCB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDQ4IChJbnQ2NC5vZl9pbnQgdCkpXG4gIGVuZFxuXG4gIGxldCBpbXBsIDogKG1vZHVsZSBTKSA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBOYXRpdmUgOiBTKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIEludDYzX2VtdWwgOiBTKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgKHZhbCBCYWNrZW5kLmltcGwgOiBCYWNrZW5kLlMpXG5cbm1vZHVsZSBPdmVyZmxvd19leG4gPSBzdHJ1Y3RcbiAgbGV0ICggKyApIHQgdSA9XG4gICAgbGV0IHN1bSA9IHQgKyB1IGluXG4gICAgaWYgYml0X29yIChiaXRfeG9yIHQgdSkgKGJpdF94b3IgdCAoYml0X25vdCBzdW0pKSA8IHplcm9cbiAgICB0aGVuIHN1bVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJzdW1cIiwgc2V4cF9vZl90IHN1bSBdKVxuICA7O1xuXG4gIGxldCAoIC0gKSB0IHUgPVxuICAgIGxldCBkaWZmID0gdCAtIHUgaW5cbiAgICBsZXQgcG9zX2RpZmYgPSB0ID4gdSBpblxuICAgIGlmIHQgPD4gdSAmJiBCb29sLiggPD4gKSBwb3NfZGlmZiAoaXNfcG9zaXRpdmUgZGlmZilcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC0gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwiZGlmZlwiLCBzZXhwX29mX3QgZGlmZiBdKVxuICAgIGVsc2UgZGlmZlxuICA7O1xuXG4gIGxldCBuZWdhdGl2ZV9vbmUgPSBvZl9pbnQgKC0xKVxuICBsZXQgZGl2X3dvdWxkX292ZXJmbG93IHQgdSA9IHQgPSBtaW5fdmFsdWUgJiYgdSA9IG5lZ2F0aXZlX29uZVxuXG4gIGxldCAoICogKSB0IHUgPVxuICAgIGxldCBwcm9kdWN0ID0gdCAqIHUgaW5cbiAgICBpZiB1IDw+IHplcm8gJiYgKGRpdl93b3VsZF9vdmVyZmxvdyBwcm9kdWN0IHUgfHwgcHJvZHVjdCAvIHUgPD4gdClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICogKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgcHJvZHVjdCBdKVxuICAgIGVsc2UgcHJvZHVjdFxuICA7O1xuXG4gIGxldCAoIC8gKSB0IHUgPVxuICAgIGlmIGRpdl93b3VsZF9vdmVyZmxvdyB0IHVcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC8gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgKHQgLyB1KSBdKVxuICAgIGVsc2UgdCAvIHVcbiAgOztcblxuICBsZXQgYWJzIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJhYnMgb3ZlcmZsb3dcIiBlbHNlIGFicyB0XG4gIGxldCBuZWcgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcIm5lZyBvdmVyZmxvd1wiIGVsc2UgbmVnIHRcbmVuZFxuXG5sZXQgKCkgPSBhc3NlcnQgKEludC4oID0gKSBudW1fYml0cyA2MylcblxubGV0IHJhbmRvbV9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludCBzdGF0ZSAodG9faW50X2V4biBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NCBzdGF0ZSAodG9faW50NjQgYm91bmQpKVxuOztcblxubGV0IHJhbmRvbSA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21fb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9vZl9pbnQ2NFxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50X2luY2wgc3RhdGUgKHRvX2ludF9leG4gbG8pICh0b19pbnRfZXhuIGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjRfaW5jbCBzdGF0ZSAodG9faW50NjQgbG8pICh0b19pbnQ2NCBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2wgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX2luY2xfb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9pbmNsX29mX2ludDY0XG47O1xuXG5sZXQgZmxvb3JfbG9nMiB0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHQgfD4gdG9faW50X2V4biB8PiBJbnQuZmxvb3JfbG9nMlxuICB8IFczMiAtPlxuICAgIGlmIHQgPD0gemVyb1xuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSk7XG4gICAgbGV0IGZsb29yX2xvZzIgPSByZWYgKEludC4oIC0gKSBudW1fYml0cyAyKSBpblxuICAgIHdoaWxlIGVxdWFsIHplcm8gKGJpdF9hbmQgdCAoc2hpZnRfbGVmdCBvbmUgIWZsb29yX2xvZzIpKSBkb1xuICAgICAgZmxvb3JfbG9nMiA6PSBJbnQuKCAtICkgIWZsb29yX2xvZzIgMVxuICAgIGRvbmU7XG4gICAgIWZsb29yX2xvZzJcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZXByID0gUmVwclxuXG4gIGxldCByZXByID0gcmVwclxuXG4gIG1vZHVsZSBFbXVsID0gSW50NjNfZW11bFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLktleSAqKVxubW9kdWxlIEtleSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBUd28gW3RdcyB0aGF0IFtjb21wYXJlXSBlcXVhbCBtdXN0IGhhdmUgZXF1YWwgaGFzaGVzIGZvciB0aGUgaGFzaHRhYmxlXG4gICAgICAgIHRvIGJlaGF2ZSBwcm9wZXJseS4gKilcbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5NZXJnZV9pbnRvX2FjdGlvbiAqKVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSZW1vdmVcbiAgICB8IFNldF90byBvZiAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IHNpZ1xuICAoKiogezIgQWNjZXNzb3JzfSAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gIHZhbCBzZXhwX29mX2tleSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gU2V4cC50XG4gIHZhbCBjbGVhciA6IChfLCBfKSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQXR0ZW1wdGluZyB0byBtb2RpZnkgKFtzZXRdLCBbcmVtb3ZlXSwgZXRjLikgdGhlIGhhc2h0YWJsZSBkdXJpbmcgaXRlcmF0aW9uIChbZm9sZF0sXG4gICAgICBbaXRlcl0sIFtpdGVyX2tleXNdLCBbaXRlcmldKSB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8pIHQgLT4gZjooJ2Ega2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyBvdmVyIGJvdGgga2V5cyBhbmQgdmFsdWVzLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgSGFzaHRibC5pdGVyaSBoIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBwcmludF9lbmRsaW5lIChQcmludGYuc3ByaW50ZiBcIiVkLSVkXCIga2V5IGRhdGEpKTs7XG4gICAgICAxLTRcbiAgICAgIDUtNlxuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn0gKilcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50IDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gYm9vbFxuICB2YWwgcmVtb3ZlIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiB1bml0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgKiAnYlxuXG4gICgqKiBTZXRzIHRoZSBnaXZlbiBba2V5XSB0byBbZGF0YV0uICopXG4gIHZhbCBzZXQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFthZGRdIGFuZCBbYWRkX2V4bl0gbGVhdmUgdGhlIHRhYmxlIHVuY2hhbmdlZCBpZiB0aGUga2V5IHdhcyBhbHJlYWR5IHByZXNlbnQuICopXG4gIHZhbCBhZGQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBbIGBPayB8IGBEdXBsaWNhdGUgXVxuXG4gIHZhbCBhZGRfZXhuIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSBjaGFuZ2VzIFt0XSdzIHZhbHVlIGZvciBba2V5XSB0byBiZSBbZiAoZmluZCB0IGtleSldLiAqKVxuICB2YWwgY2hhbmdlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZV9hbmRfcmV0dXJuIHQga2V5IH5mXSBpcyBbdXBkYXRlXSwgYnV0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBbZiBvXS4gKilcbiAgdmFsIHVwZGF0ZV9hbmRfcmV0dXJuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAnYlxuXG4gICgqKiBbbWFwIHQgZl0gcmV0dXJucyBhIG5ldyB0YWJsZSB3aXRoIHZhbHVlcyByZXBsYWNlZCBieSB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIFtmXVxuICAgICAgdG8gdGhlIGN1cnJlbnQgdmFsdWVzLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgbGV0IGgnID0gSGFzaHRibC5tYXAgaCB+ZjooZnVuIHggLT4geCAqIDIpIGluXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGgnOztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCAxMik7ICgxLCA4KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IHRhYmxlIGJ5IGZpbHRlcmluZyB0aGUgZ2l2ZW4gdGFibGUncyB2YWx1ZXMgYnkgW2ZdOiB0aGUga2V5cyBmb3Igd2hpY2hcbiAgICAgIFtmXSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50IHZhbHVlIHJldHVybnMgW1NvbWVdIGFyZSBrZXB0LCBhbmQgdGhvc2UgZm9yIHdoaWNoIGl0XG4gICAgICByZXR1cm5zIFtOb25lXSBhcmUgZGlzY2FyZGVkLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgSGFzaHRibC5maWx0ZXJfbWFwIGggfmY6KGZ1biB4IC0+IGlmIHggPiA1IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDYpXVxuICAgICAgdn0gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiKSB0IC0+IGY6KCdhIGtleSAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIFJldHVybnMgbmV3IHRhYmxlcyB3aXRoIGJvdW5kIHZhbHVlcyBwYXJ0aXRpb25lZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmRcbiAgICAgIHZhbHVlcy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KSAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIFJldHVybnMgYSBwYWlyIG9mIHRhYmxlcyBbKHQxLCB0MildLCB3aGVyZSBbdDFdIGNvbnRhaW5zIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlXG4gICAgICBpbml0aWFsIHRhYmxlIHdoaWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0sIGFuZCBbdDJdIGNvbnRhaW5zIHRoZSByZXN0LiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fdGZdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgKCoqIFtmaW5kX29yX2FkZCB0IGsgfmRlZmF1bHRdIHJldHVybnMgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGtleSBba10gaWYgaXQgaXMgaW4gdGhlXG4gICAgICB0YWJsZSBbdF0sIGFuZCBvdGhlcndpc2UgYXNzaWducyBba10gdGhlIHZhbHVlIHJldHVybmVkIGJ5IFtkZWZhdWx0ICgpXS4gKilcbiAgdmFsIGZpbmRfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDoodW5pdCAtPiAnYikgLT4gJ2JcblxuICAoKiogTGlrZSBbZmluZF9vcl9hZGRdIGJ1dCBbZGVmYXVsdF0gdGFrZXMgdGhlIGtleSBhcyBhbiBhcmd1bWVudC4gKilcbiAgdmFsIGZpbmRpX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCdhIGtleSAtPiAnYikgLT4gJ2JcblxuICAoKiogW2ZpbmQgdCBrXSByZXR1cm5zIFtTb21lXSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgW2tdIGluIFt0XSwgb3IgW05vbmVdIGlmIG5vIHN1Y2hcbiAgICAgIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBbZmluZF9leG4gdCBrXSByZXR1cm5zIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgW2tdIGluIFt0XSwgb3IgcmFpc2VzIFtDYW1sLk5vdF9mb3VuZF1cbiAgICAgIG9yIFtOb3RfZm91bmRfc10gaWYgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2JcblxuICAoKiogW2ZpbmRfYW5kX2NhbGwgdCBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXVxuXG4gICAgICBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICBbbWF0Y2ggZmluZCB0IGsgd2l0aCBTb21lIHYgLT4gaWZfZm91bmQgdiB8IE5vbmUgLT4gaWZfbm90X2ZvdW5kIGtdXG5cbiAgICAgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgdGhlIG9wdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgKCoqIEp1c3QgbGlrZSBbZmluZF9hbmRfY2FsbF0sIGJ1dCB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCB3aGljaCBpcyBwYXNzZWQgdG8gW2lmX2ZvdW5kXVxuICAgICAgYW5kIFtpZl9ub3RfZm91bmRdLCBzbyB0aGF0IHRoZSBjbGllbnQgY29kZSBjYW4gYXZvaWQgYWxsb2NhdGluZyBjbG9zdXJlcyBvciB1c2luZ1xuICAgICAgcmVmcyB0byBwYXNzIHRoaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwgaW4gY29kZVxuICAgICAgd2hpY2ggdHJpZXMgdG8gbWluaW1pemUgaGVhcCBhbGxvY2F0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOignYiAtPiAnZCAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOignYiAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgKCoqIFtmaW5kX2FuZF9yZW1vdmUgdCBrXSByZXR1cm5zIFNvbWUgKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIGsgaW4gdCBhbmQgcmVtb3ZlcyBpdCxcbiAgICAgIG9yIE5vbmUgaXMgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfYW5kX3JlbW92ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBNZXJnZXMgdHdvIGhhc2h0YWJsZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgW21lcmdlIGYgaDEgaDJdIGhhcyBhcyBrZXlzIHRoZSBzZXQgb2YgYWxsIFtrXSBpbiB0aGUgdW5pb24gb2YgdGhlXG4gICAgICBzZXRzIG9mIGtleXMgb2YgW2gxXSBhbmQgW2gyXSBmb3Igd2hpY2ggW2QoayldIGlzIG5vdCBOb25lLCB3aGVyZTpcblxuICAgICAgZChrKSA9XG4gICAgICAtIFtmIH5rZXk6ayAoYExlZnQgZDEpXVxuICAgICAgICBpZiBba10gaW4gW2gxXSBtYXBzIHRvIGQxLCBhbmQgW2gyXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBSaWdodCBkMildXG4gICAgICAgIGlmIFtrXSBpbiBbaDJdIG1hcHMgdG8gZDIsIGFuZCBbaDFdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYEJvdGggKGQxLCBkMikpXVxuICAgICAgICBvdGhlcndpc2UsIHdoZXJlIFtrXSBpbiBbaDFdIG1hcHMgdG8gW2QxXSBhbmQgW2tdIGluIFtoMl0gbWFwcyB0byBbZDJdLlxuXG4gICAgICBFYWNoIGtleSBba10gaXMgbWFwcGVkIHRvIGEgc2luZ2xlIHBpZWNlIG9mIGRhdGEgW3hdLCB3aGVyZSBbZChrKSA9IFNvbWUgeF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fSAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICdhKSB0XG4gICAgLT4gKCdrLCAnYikgdFxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYiB8IGBCb3RoIG9mICdhICogJ2IgXSAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdrLCAnYykgdFxuXG5cbiAgKCoqIEV2ZXJ5IFtrZXldIGluIFtzcmNdIHdpbGwgYmUgcmVtb3ZlZCBvciBzZXQgaW4gW2RzdF0gYWNjb3JkaW5nIHRvIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgIG9mIFtmXS4gKilcbiAgdmFsIG1lcmdlX2ludG9cbiAgICA6ICBzcmM6KCdrLCAnYSkgdFxuICAgIC0+IGRzdDooJ2ssICdiKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiAnYSAtPiAnYiBvcHRpb24gLT4gJ2IgTWVyZ2VfaW50b19hY3Rpb24udClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGtleXMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgZGF0YSBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG5cbiAgKCoqIFtmaWx0ZXJfaW5wbGFjZSB0IH5mXSByZW1vdmVzIGFsbCB0aGUgZWxlbWVudHMgZnJvbSBbdF0gdGhhdCBkb24ndCBzYXRpc2Z5IFtmXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzX2lucGxhY2UgOiAoJ2EsIF8pIHQgLT4gZjooJ2Ega2V5IC0+IGJvb2wpIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gdW5pdFxuICB2YWwgZmlsdGVyaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gdW5pdFxuXG4gICgqKiBbbWFwX2lucGxhY2UgdCB+Zl0gYXBwbGllcyBbZl0gdG8gYWxsIGVsZW1lbnRzIGluIFt0XSwgdHJhbnNmb3JtaW5nIHRoZW0gaW5cbiAgICAgIHBsYWNlLiAqKVxuICB2YWwgbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gJ2IpIC0+IHVuaXRcblxuICB2YWwgbWFwaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2IpIC0+IHVuaXRcblxuICAoKiogW2ZpbHRlcl9tYXBfaW5wbGFjZV0gY29tYmluZXMgdGhlIGVmZmVjdHMgb2YgW21hcF9pbnBsYWNlXSBhbmQgW2ZpbHRlcl9pbnBsYWNlXS4gKilcbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiAnYiBvcHRpb24pIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX21hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gICgqKiBbZXF1YWwgZiB0MSB0Ml0gYW5kIFtzaW1pbGFyIGYgdDEgdDJdIGJvdGggcmV0dXJuIHRydWUgaWZmIFt0MV0gYW5kIFt0Ml0gaGF2ZSB0aGVcbiAgICAgIHNhbWUga2V5cyBhbmQgZm9yIGFsbCBrZXlzIFtrXSwgW2YgKGZpbmRfZXhuIHQxIGspIChmaW5kX2V4biB0MiBrKV0uICBbZXF1YWxdIGFuZFxuICAgICAgW3NpbWlsYXJdIG9ubHkgZGlmZmVyIGluIHRoZWlyIHR5cGVzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcblxuICB2YWwgc2ltaWxhciA6ICgnYjEgLT4gJ2IyIC0+IGJvb2wpIC0+ICgnYSwgJ2IxKSB0IC0+ICgnYSwgJ2IyKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgKGtleSwgZGF0YSkgcGFpcnMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIHRvX2FsaXN0IDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIGxpc3RcblxuXG4gICgqKiBbcmVtb3ZlX2lmX3plcm9dJ3MgZGVmYXVsdCBpcyBbZmFsc2VdLiAqKVxuICB2YWwgaW5jciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICB2YWwgZGVjciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNdWx0aSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICAoKiogW2FkZF9tdWx0aSB0IH5rZXkgfmRhdGFdIGlmIFtrZXldIGlzIHByZXNlbnQgaW4gdGhlIHRhYmxlIHRoZW4gY29uc1xuICAgICAgW2RhdGFdIG9uIHRoZSBsaXN0LCBvdGhlcndpc2UgYWRkIFtrZXldIHdpdGggYSBzaW5nbGUgZWxlbWVudCBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtyZW1vdmVfbXVsdGkgdCBrZXldIHVwZGF0ZXMgdGhlIHRhYmxlLCByZW1vdmluZyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBib3VuZCB0b1xuICAgICAgW2tleV0uIElmIHRoZSBsaXN0IGhhcyBvbmx5IG9uZSBlbGVtZW50IChvciBpcyBlbXB0eSkgdGhlbiB0aGUgYmluZGluZyBpc1xuICAgICAgcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgXyBsaXN0KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIFtmaW5kX211bHRpIHQga2V5XSByZXR1cm5zIHRoZSBlbXB0eSBsaXN0IGlmIFtrZXldIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0YWJsZSxcbiAgICAgIHJldHVybnMgW3RdJ3MgdmFsdWVzIGZvciBba2V5XSBvdGhlcndpc2UuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIGtleSAtPiAnYiBsaXN0XG5lbmRcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICdrZXkgS2V5LnRcbiAgLT4gJ3pcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICd6XG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlIDogKCdhIGtleSwgJ2IsIHVuaXQgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogKCdhIGtleSwgJ2IgbGlzdCwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KVxuICAgICAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfd2l0aF9rZXkgfmdldF9rZXkgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIHgxOyAuLi47IGdldF9rZXkgeG4sIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX3dpdGhfa2V5XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogKCdhIGtleSwgJ3IsIGdldF9rZXk6KCdyIC0+ICdhIGtleSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIGdyb3VwXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAgICAgLT4gY29tYmluZTooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gKCdhLCAnYikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgKCoqIHsyIENyZWF0b3JzfSAqKVxuXG4gICgqKiBUaGUgbW9kdWxlIHlvdSBwYXNzIHRvIFtjcmVhdGVdIG11c3QgaGF2ZSBhIHR5cGUgdGhhdCBpcyBoYXNoYWJsZSwgc2V4cGFibGUsIGFuZFxuICAgICAgY29tcGFyYWJsZS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBJbnQpOztcbiAgICAgICAgLSA6IChpbnQsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPjs7XG4gICAgICB2fSAqKVxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygzLCBcInNvbWV0aGluZ1wiKTsgKDIsIFwid2hhdGV2ZXJcIildXG4gICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBPayA8YWJzdHI+XG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIFdoZXJlYXMgW29mX2FsaXN0XSB3aWxsIHJlcG9ydCBbRHVwbGljYXRlX2tleV0gbm8gbWF0dGVyIGhvdyBtYW55IGR1cHMgdGhlcmUgYXJlIGluXG4gICAgICB5b3VyIGxpc3QsIFtvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNdIHdpbGwgcmVwb3J0IGVhY2ggYW5kIGV2ZXJ5IGR1cGxpY2F0ZSBlbnRyeS5cblxuICAgICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMSwgXCJmb29cIik7ICgxLCBcImJhclwiKTsgKDIsIFwiZm9vXCIpOyAoMiwgXCJiYXJcIildOztcbiAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgRHVwbGljYXRlX2tleSAxXG5cbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgKG1vZHVsZSBJbnQpIFsoMSwgXCJmb29cIik7ICgxLCBcImJhclwiKTsgKDIsIFwiZm9vXCIpOyAoMiwgXCJiYXJcIildOztcbiAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgRHVwbGljYXRlX2tleXMgWzE7IDJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBDcmVhdGVzIGEge3shTXVsdGl9IFwibXVsdGlcIn0gaGFzaHRhYmxlLCBpLmUuLCBhIGhhc2h0YWJsZSB3aGVyZSBlYWNoIGtleSBwb2ludHMgdG8gYVxuICAgICAgbGlzdCBwb3RlbnRpYWxseSBjb250YWluaW5nIG11bHRpcGxlIHZhbHVlcy4gU28gaW5zdGVhZCBvZiBzaG9ydC1jaXJjdWl0aW5nIHdpdGggYVxuICAgICAgW2BEdXBsaWNhdGVfa2V5XSB2YXJpYW50IG9uIGR1cGxpY2F0ZXMsIGFzIGluIFtvZl9hbGlzdF0sIFtvZl9hbGlzdF9tdWx0aV0gZm9sZHNcbiAgICAgIHRob3NlIHZhbHVlcyBpbnRvIGEgbGlzdCBmb3IgdGhlIGdpdmVuIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIEludCkgWygxLCBcImFcIik7ICgxLCBcImJcIik7ICgyLCBcImNcIik7ICgyLCBcImRcIildOztcbiAgICAgIHZhbCBoIDogKGludCwgc3RyaW5nIGxpc3QpIEhhc2h0YmwudCA9IDxhYnN0cj5cblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgLSA6IHN0cmluZyBsaXN0ID0gW1wiYlwiOyBcImFcIl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0KSB0XG5cbiAgKCoqIEFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnciBsaXN0XSB0byBjcmVhdGUgdGhlXG4gICAgICBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUuXG5cbiAgICAgIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dXG4gICAgICBdfVxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgSGFzaHRibC5jcmVhdGVfbWFwcGVkIChtb2R1bGUgSW50KVxuICAgICAgICAgICAgfmdldF9rZXk6KGZ1biB4IC0+IHgpXG4gICAgICAgICAgICB+Z2V0X2RhdGE6KGZ1biB4IC0+IHggKyAxKVxuICAgICAgICAgICBbMTsgMjsgM107O1xuICAgICAgICB2YWwgaCA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIGludCkgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuXG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBtYXRjaCBoIHdpdGhcbiAgICAgICAgICB8IGBPayB4IC0+IHhcbiAgICAgICAgICB8IGBEdXBsaWNhdGVfa2V5cyBfIC0+IGZhaWx3aXRoIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgICAtIDogaW50ID0gMlxuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHRcblxuICAoKiogTGlrZSBbY3JlYXRlX21hcHBlZF0sIGFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnclxuICAgICAgbGlzdF0gdG8gY3JlYXRlIHRoZSBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUgLS1cbiAgICAgIGFuZCB0aGVuLCBsaWtlIFthZGRfbXVsdGldLCBmb2xkcyB0b2dldGhlciB2YWx1ZXMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGtleXMuIEhlcmUsXG4gICAgICB0aG91Z2gsIHRoZSBmdW5jdGlvbiB1c2VkIGZvciB0aGUgZm9sZGluZyBpcyBnaXZlbiBieSBbY29tYmluZV0gKGluc3RlYWQgb2YganVzdFxuICAgICAgYmVpbmcgYSBbY29uc10pLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5ncm91cCAobW9kdWxlIEludClcbiAgICAgICAgICAgfmdldF9rZXk6KGZ1biB4IC0+IHggLyAyKVxuICAgICAgICAgICB+Z2V0X2RhdGE6KGZ1biB4IC0+IHgpXG4gICAgICAgICAgIH5jb21iaW5lOihmdW4geCB5IC0+IHggKiB5KVxuICAgICAgICAgICAgWyAxOyAyOyAzOyA0XVxuICAgICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoMiwgNCk7ICgxLCA2KTsgKDAsIDEpXVxuICAgICAgIHZ9ICopXG4gIHZhbCBncm91cFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAtPiBjb21iaW5lOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gc2lnXG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcblxuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogV2UgcHJvdmlkZSBhIFtzZXhwX29mX3RdIGJ1dCBub3QgYSBbdF9vZl9zZXhwXSBmb3IgdGhpcyB0eXBlIGJlY2F1c2Ugb25lIG5lZWRzIHRvIGJlXG4gICAgICBleHBsaWNpdCBhYm91dCB0aGUgaGFzaCBhbmQgY29tcGFyaXNvbiBmdW5jdGlvbnMgdXNlZCB3aGVuIGNyZWF0aW5nIGEgaGFzaHRhYmxlLlxuICAgICAgTm90ZSB0aGF0IFtIYXNodGJsLlBvbHkudF0gZG9lcyBoYXZlIFtbQEBkZXJpdmluZyBzZXhwXV0sIGFuZCB1c2VzIE9DYW1sJ3MgYnVpbHQtaW5cbiAgICAgIHBvbHltb3JwaGljIGNvbXBhcmlzb24gYW5kIGFuZCBwb2x5bW9ycGhpYyBoYXNoaW5nLiAqKVxuICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdiIC0+IFNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwLnRcblxuICBpbmNsdWRlIENyZWF0b3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgKCoqIEBpbmxpbmUgKilcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAoKiogQGlubGluZSAqKVxuXG5cbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICgqKiBAaW5saW5lICopXG5cbiAgdmFsIGhhc2hhYmxlX3MgOiAoJ2tleSwgXykgdCAtPiAna2V5IEtleS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIGhhc2hhYmxlIDogJ2EgSGFzaGFibGUudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2ssICd2KSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIEtleS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2KSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBlcXVhbF9tX190XG4gICAgOiAgKG1vZHVsZSBFcXVhbF9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2h0YmwgPSBzaWdcbiAgKCoqIEEgaGFzaCB0YWJsZSBpcyBhIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgaW1wbGVtZW50aW5nIGEgbWFwIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzLlxuICAgICAgSXQgc3VwcG9ydHMgY29uc3RhbnQtdGltZSBsb29rdXAgYW5kIGluLXBsYWNlIG1vZGlmaWNhdGlvbi5cblxuICAgICAgezEgVXNhZ2V9XG5cbiAgICAgIEFzIGEgc2ltcGxlIGV4YW1wbGUsIHdlJ2xsIGNyZWF0ZSBhIGhhc2ggdGFibGUgd2l0aCBzdHJpbmcga2V5cyB1c2luZyB0aGVcbiAgICAgIHt7IWNyZWF0ZX1bY3JlYXRlXX0gY29uc3RydWN0b3IsIHdoaWNoIGV4cGVjdHMgYSBtb2R1bGUgZGVmaW5pbmcgdGhlIGtleSdzIHR5cGU6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBoID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBTdHJpbmcpOztcbiAgICAgICAgdmFsIGggOiAoc3RyaW5nLCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj5cbiAgICAgIF19XG5cbiAgICAgIFdlIGNhbiBzZXQgdGhlIHZhbHVlcyBvZiBpbmRpdmlkdWFsIGtleXMgd2l0aCB7eyFzZXR9W3NldF19LiBJZiB0aGUga2V5IGFscmVhZHkgaGFzXG4gICAgICBhIHZhbHVlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6NTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJiYXJcIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9XG5cbiAgICAgIFdlIGNhbiBhY2Nlc3MgdmFsdWVzIGJ5IGtleSwgb3IgZHVtcCBhbGwgb2YgdGhlIGhhc2ggdGFibGUncyBkYXRhOlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5maW5kIGggXCJmb29cIjs7XG4gICAgICAtIDogaW50IG9wdGlvbiA9IFNvbWUgNlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggXCJmb29cIjs7XG4gICAgICAtIDogaW50ID0gNlxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDYpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG4gICAgICB7eyFjaGFuZ2V9W2NoYW5nZV19IGxldHMgdXMgY2hhbmdlIGEga2V5J3MgdmFsdWUgYnkgYXBwbHlpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uOlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5jaGFuZ2UgaCBcImZvb1wiIChmdW4geCAtPlxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IFNvbWUgKHggKiAyKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICApOztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCAxMik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cblxuICAgICAgV2UgY2FuIHVzZSB7eyFtZXJnZX1bbWVyZ2VdfSB0byBtZXJnZSB0d28gaGFzaHRhYmxlcyB3aXRoIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXJcbiAgICAgIGhvdyB3ZSBjaG9vc2UgdmFsdWVzIHdoZW4gYSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZmlyc3QgKFwibGVmdFwiKSBoYXNodGFibGUsIHRoZVxuICAgICAgc2Vjb25kIChcInJpZ2h0XCIpLCBvciBib3RoLiBIZXJlLCB3ZSdsbCBjb25zIHRoZSB2YWx1ZXMgd2hlbiBib3RoIGhhc2h0YWJsZXMgaGF2ZSBhXG4gICAgICBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fVxuXG4gICAgICB7MSBJbnRlcmZhY2V9ICopXG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3VibW9kdWxlcyAoKiogQGlubGluZSAqKVxuXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IEFjY2Vzc29yc1xuICBtb2R1bGUgdHlwZSBDcmVhdG9ycyA9IENyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIE11bHRpID0gTXVsdGlcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gU193aXRob3V0X3N1Ym1vZHVsZXNcbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG5cbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBNZXJnZV9pbnRvX2FjdGlvblxuXG4gIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID0gKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICBtb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG5cbiAgICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgS2V5LnQpIC0+IChTZXhwLnQgLT4gJ2IpIC0+IFNleHAudCAtPiAoJ2EsICdiKSB0X1xuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgICAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuICBlbmRcblxuICBtb2R1bGUgUG9seSA6IFNfcG9seSB3aXRoIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSBpbnQgSGFzaHRibC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gKFN0cmluZy50LCBpbnQpIEhhc2h0YmwudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW2ludCBIYXNodGJsLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kXG4gICAgICBzeW50YXggZG9lc24ndCAoYmVjYXVzZSBbdF9vZl9zZXhwXSBkb2Vzbid0IGtub3cgd2hhdCBjb21wYXJpc29uL2hhc2ggZnVuY3Rpb24gdG9cbiAgICAgIHVzZSkuICopXG4gIG1vZHVsZSBNIChLIDogVC5UKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgKCoqLyoqKVxuXG4gICgqXyBTZWUgdGhlIEphbmUgU3RyZWV0IFN0eWxlIEd1aWRlIGZvciBhbiBleHBsYW5hdGlvbiBvZiBbUHJpdmF0ZV0gc3VibW9kdWxlczpcblxuICAgIGh0dHBzOi8vb3BlbnNvdXJjZS5qYW5lc3RyZWV0LmNvbS9zdGFuZGFyZHMvI3ByaXZhdGUtc3VibW9kdWxlcyAqKVxuICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG5cbiAgICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogKCdrZXksIF8pIHQgLT4gJ2tleSBIYXNoYWJsZS50XG4gIGVuZFxuZW5kXG4iLCIoKiBBIGZldyBzbWFsbCB0aGluZ3MgY29waWVkIGZyb20gb3RoZXIgcGFydHMgb2YgQmFzZSBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHVzLCBzbyB3ZVxuICAgY2FuJ3QgdXNlIHRoZW0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG4oKiBJdHMgaW1wb3J0YW50IHRoYXQgRW1wdHkgaGF2ZSBubyBhcmdzLiBJdCdzIHRlbXB0aW5nIHRvIG1ha2UgdGhpcyB0eXBlIGEgcmVjb3JkXG4gICAoZS5nLiB0byBob2xkIHRoZSBjb21wYXJlIGZ1bmN0aW9uKSwgYnV0IGEgbG90IG9mIG1lbW9yeSBpcyBzYXZlZCBieSBFbXB0eSBiZWluZyBhblxuICAgaW1tZWRpYXRlLCBzaW5jZSBhbGwgdW51c2VkIGJ1Y2tldHMgaW4gdGhlIGhhc2h0YmwgZG9uJ3QgdXNlIGFueSBtZW1vcnkgKGJlc2lkZXMgdGhlXG4gICBhcnJheSBjZWxsKSAqKVxudHlwZSAoJ2ssICd2KSB0ID1cbiAgfCBFbXB0eVxuICB8IE5vZGUgb2ZcbiAgICAgIHsgbXV0YWJsZSBsZWZ0IDogKCdrLCAndikgdFxuICAgICAgOyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSByaWdodCA6ICgnaywgJ3YpIHRcbiAgICAgIH1cbiAgfCBMZWFmIG9mXG4gICAgICB7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgfVxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIF8gfCBOb2RlIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBoZWlnaHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQ7IHJpZ2h0ID0gXyB9IC0+IGhlaWdodFxuOztcblxubGV0IGludmFyaWFudCBjb21wYXJlID1cbiAgbGV0IGxlZ2FsX2xlZnRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF8gfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIGxlZnRfa2V5IGtleSA8IDApXG4gIGluXG4gIGxldCBsZWdhbF9yaWdodF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF8gfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSByaWdodF9rZXkga2V5ID4gMClcbiAgaW5cbiAgbGV0IHJlYyBpbnYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gKClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrOyB2YWx1ZSA9IF87IGhlaWdodCA9IGg7IHJpZ2h0IH0gLT5cbiAgICAgIGxldCBobCwgaHIgPSBoZWlnaHQgbGVmdCwgaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpbnYgbGVmdDtcbiAgICAgIGludiByaWdodDtcbiAgICAgIGxlZ2FsX2xlZnRfa2V5IGsgbGVmdDtcbiAgICAgIGxlZ2FsX3JpZ2h0X2tleSBrIHJpZ2h0O1xuICAgICAgYXNzZXJ0IChoID0gSW50Lm1heCBobCBociArIDEpO1xuICAgICAgYXNzZXJ0IChhYnMgKGhsIC0gaHIpIDw9IDIpXG4gIGluXG4gIGludlxuOztcblxubGV0IGludmFyaWFudCB0IH5jb21wYXJlID0gaW52YXJpYW50IGNvbXBhcmUgdFxuXG4oKiBJbiB0aGUgZm9sbG93aW5nIGNvbW1lbnRzLFxuICAgJ3QgaXMgYmFsYW5jZWQnIG1lYW5zIHRoYXQgJ2ludmFyaWFudCB0JyBkb2VzIG5vdFxuICAgcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhpcyBpbXBsaWVzIG9mIGNvdXJzZSB0aGF0IGVhY2ggbm9kZSdzIGhlaWdodCBmaWVsZCBpc1xuICAgY29ycmVjdC5cbiAgICd0IGlzIGJhbGFuY2VhYmxlJyBtZWFucyB0aGF0IGhlaWdodCBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgb2YgdFxuICAgZGlmZmVyIGJ5IGF0IG1vc3QgMy4gKilcblxuKCogQHByZTogbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgaGF2ZSBjb3JyZWN0IGhlaWdodHNcbiAgIEBwb3N0OiBvdXRwdXQgaGFzIHRoZSBjb3JyZWN0IGhlaWdodCAqKVxubGV0IHVwZGF0ZV9oZWlnaHQgPSBmdW5jdGlvblxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBvbGRfaGVpZ2h0OyByaWdodCB9IGFzIHgpIC0+XG4gICAgbGV0IG5ld19oZWlnaHQgPSBJbnQubWF4IChoZWlnaHQgbGVmdCkgKGhlaWdodCByaWdodCkgKyAxIGluXG4gICAgaWYgbmV3X2hlaWdodCA8PiBvbGRfaGVpZ2h0IHRoZW4geC5oZWlnaHQgPC0gbmV3X2hlaWdodFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgYXJlIGJhbGFuY2VkXG4gICBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcG9zdDogb3V0cHV0IGlzIGJhbGFuY2VkIChpbiBwYXJ0aWN1bGFyLCBoZWlnaHQgaXMgY29ycmVjdCkgKilcbmxldCBiYWxhbmNlIHRyZWUgPVxuICBtYXRjaCB0cmVlIHdpdGhcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiB0cmVlXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcm9vdF9ub2RlKSAtPlxuICAgIGxldCBobCA9IGhlaWdodCBsZWZ0XG4gICAgYW5kIGhyID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgKCogKyAyIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50LCBsb3dlcmluZyBpdCB0byAxIHdpbGwgYnJlYWsgdGhlIExlYWZcbiAgICAgICBhc3N1bXB0aW9ucyBpbiB0aGUgY29kZSBiZWxvdywgYW5kIHdpbGwgZm9yY2UgdXMgdG8gcHJvbW90ZSBsZWFmIG5vZGVzIGluXG4gICAgICAgdGhlIGJhbGFuY2Ugcm91dGluZS4gSXQncyBhbHNvIGZhc3Rlciwgc2luY2UgaXQgd2lsbCBiYWxhbmNlIGxlc3Mgb2Z0ZW4uXG4gICAgICAgTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSBpcyBkZWxpY2F0ZS4gIFRoZSB1cGRhdGVfaGVpZ2h0IGNhbGxzIG11c3RcbiAgICAgICBvY2N1ciBpbiB0aGUgY29ycmVjdCBvcmRlciwgc2luY2UgdXBkYXRlX2hlaWdodCBhc3N1bWVzIGl0cyBjaGlsZHJlbiBoYXZlXG4gICAgICAgdGhlIGNvcnJlY3QgaGVpZ2h0cy4gICopXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgKCogSXQgY2Fubm90IGJlIGEgbGVhZiwgYmVjYXVzZSBldmVuIGlmIHJpZ2h0IGlzIGVtcHR5LCBhIGxlYWZcbiAgICAgICAgIGlzIG9ubHkgaGVpZ2h0IDEgKilcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gbGVmdF9ub2RlX2xlZnRcbiAgICAgICAgICAgOyBrZXkgPSBfXG4gICAgICAgICAgIDsgdmFsdWUgPSBfXG4gICAgICAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgICAgICA7IHJpZ2h0ID0gbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgbGVmdF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGVmdF9ub2RlX2xlZnQgPj0gaGVpZ2h0IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUubGVmdCA8LSBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICBsZWZ0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBpZiByaWdodCBpcyBhIGxlYWYsIHRoZW4gbGVmdCBtdXN0IGJlIGVtcHR5LiBUaGF0IG1lYW5zXG4gICAgICAgICAgICAgaGVpZ2h0IGlzIDIuIEV2ZW4gaWYgaHIgaXMgZW1wdHkgd2Ugc3RpbGwgY2FuJ3QgZ2V0IGhlcmUuICopXG4gICAgICAgICAgbWF0Y2ggbGVmdF9ub2RlX3JpZ2h0IHdpdGhcbiAgICAgICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTm9kZVxuICAgICAgICAgICAgICAoeyBsZWZ0ID0gbHJfbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IGxyX3JpZ2h0IH0gYXNcbiAgICAgICAgICAgICAgIGxyX25vZGUpIC0+XG4gICAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gbHJfbGVmdDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxyX3JpZ2h0O1xuICAgICAgICAgICAgbHJfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgICAgbHJfbm9kZS5sZWZ0IDwtIGxlZnQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICAgIGxlZnRfbm9kZV9yaWdodCkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgKCogc2VlIGFib3ZlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgcmlnaHQgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgbWF0Y2ggcmlnaHQgd2l0aFxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSByaWdodF9ub2RlX2xlZnRcbiAgICAgICAgICAgOyBrZXkgPSBfXG4gICAgICAgICAgIDsgdmFsdWUgPSBfXG4gICAgICAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgICAgICA7IHJpZ2h0ID0gcmlnaHRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIHJpZ2h0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCByaWdodF9ub2RlX3JpZ2h0ID49IGhlaWdodCByaWdodF9ub2RlX2xlZnRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJpZ2h0X25vZGVfbGVmdDtcbiAgICAgICAgICByaWdodF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICByaWdodClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogc2VlIGFib3ZlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICAgICAgbWF0Y2ggcmlnaHRfbm9kZV9sZWZ0IHdpdGhcbiAgICAgICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTm9kZVxuICAgICAgICAgICAgICAoeyBsZWZ0ID0gcmxfbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHJsX3JpZ2h0IH0gYXNcbiAgICAgICAgICAgICAgIHJsX25vZGUpIC0+XG4gICAgICAgICAgICByaWdodF9ub2RlLmxlZnQgPC0gcmxfcmlnaHQ7XG4gICAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmxfbGVmdDtcbiAgICAgICAgICAgIHJsX25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgICAgcmxfbm9kZS5yaWdodCA8LSByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdDtcbiAgICAgICAgICAgIHJpZ2h0X25vZGVfbGVmdCkpXG4gICAgZWxzZSAoXG4gICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICB0cmVlKVxuOztcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9sZWZ0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgbGVmdCB0cmVlIHRoZW4gKCkgZWxzZSByLmxlZnQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKGxlZnQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfcmlnaHQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCByaWdodCB0cmVlIHRoZW4gKCkgZWxzZSByLnJpZ2h0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHQgaXMgYmFsYW5jZWQuXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VkLCB3aXRoIG5ldyBub2RlIGluc2VydGVkXG4gICBAcG9zdDogIWFkZGVkID0gdHJ1ZSBpZmYgdGhlIHNoYXBlIG9mIHRoZSBpbnB1dCB0cmVlIGNoYW5nZWQuICAqKVxubGV0IGFkZCA9XG4gIGxldCByZWMgYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgYWRkZWQgOj0gdHJ1ZTtcbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTGVhZiAoeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrJyBrIGluXG4gICAgICAoKiBUaGlzIGNvbXBhcmUgaXMgcmV2ZXJzZWQgb24gcHVycG9zZSwgd2UgYXJlIHByZXRlbmRpbmdcbiAgICAgICAgIHRoYXQgdGhlIGxlYWYgd2FzIGp1c3QgaW5zZXJ0ZWQgaW5zdGVhZCBvZiB0aGUgb3RoZXIgd2F5XG4gICAgICAgICByb3VuZCwgdGhhdCB3YXkgd2Ugb25seSBhbGxvY2F0ZSBvbmUgbm9kZS4gKilcbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkZWQgOj0gZmFsc2U7XG4gICAgICAgIGlmIHJlcGxhY2UgdGhlbiByLnZhbHVlIDwtIHY7XG4gICAgICAgIHQpXG4gICAgICBlbHNlIChcbiAgICAgICAgYWRkZWQgOj0gdHJ1ZTtcbiAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBOb2RlIHsgbGVmdCA9IHQ7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSBFbXB0eSB9XG4gICAgICAgIGVsc2UgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IHQgfSlcbiAgICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkZWQgOj0gZmFsc2U7XG4gICAgICAgIGlmIHJlcGxhY2UgdGhlbiByLnZhbHVlIDwtIHYpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIHNldF9sZWZ0IHQgKGFkZCBsZWZ0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpXG4gICAgICBlbHNlIHNldF9yaWdodCB0IChhZGQgcmlnaHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdik7XG4gICAgICB0XG4gIGluXG4gIGZ1biB0IH5yZXBsYWNlIH5jb21wYXJlIH5hZGRlZCB+a2V5IH5kYXRhIC0+XG4gICAgbGV0IHQgPSBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUga2V5IGRhdGEgaW5cbiAgICBpZiAhYWRkZWQgdGhlbiBiYWxhbmNlIHQgZWxzZSB0XG47O1xuXG5sZXQgcmVjIGZpcnN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gbDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBmaXJzdCBsXG47O1xuXG5sZXQgcmVjIGxhc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gciB9IC0+IGxhc3QgclxuOztcblxuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYyBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfbm90X2ZvdW5kXG4gID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlIGsgaycgPSAwXG4gICAgdGhlbiBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5OmsnIH5kYXRhOnYgYXJnMSBhcmcyXG4gICAgZWxzZSBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5OmsnIH5kYXRhOnYgYXJnMSBhcmcyXG4gICAgZWxzZVxuICAgICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAoaWYgYyA8IDAgdGhlbiBsZWZ0IGVsc2UgcmlnaHQpXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIGtcbiAgICAgICAgYXJnMVxuICAgICAgICBhcmcyXG4gICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhICgpICgpID0gaWZfZm91bmQgZGF0YSBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgKCkgKCkgPSBpZl9ub3RfZm91bmQga2V5IGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgKClcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhICgpICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgKCkgKCkgPSBpZl9ub3RfZm91bmQga2V5IGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgKClcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMSA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgYXJnICgpID0gaWZfZm91bmQgZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMSA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgYXJnMSBhcmcyID0gaWZfZm91bmQgZGF0YSBhcmcxIGFyZzIgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiA9IGlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgYlxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiA9IGlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgYlxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IG1lbSA9XG4gIGxldCBpZl9mb3VuZCBfID0gdHJ1ZSBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBmYWxzZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgcmVtb3ZlID1cbiAgbGV0IHJlYyBtaW5fZWx0IHRyZWUgPVxuICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgXyAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IG1pbl9lbHQgbGVmdFxuICBpblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0IHRyZWUgPVxuICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBMZWFmIF8gLT4gRW1wdHkgKCogVGhpcyBtdXN0IGJlIHRoZSByb290ICopXG4gICAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gLT4gcmlnaHRcbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPlxuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIEVtcHR5O1xuICAgICAgdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSAocmVtb3ZlX21pbl9lbHQgbGVmdCk7XG4gICAgICB0cmVlXG4gIGluXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT5cbiAgICAgIGxldCB0cmVlID0gbWluX2VsdCB0MiBpblxuICAgICAgKG1hdGNoIHRyZWUgd2l0aFxuICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICAgICAgIGxldCB0MiA9IGJhbGFuY2UgKHJlbW92ZV9taW5fZWx0IHQyKSBpblxuICAgICAgICAgTm9kZVxuICAgICAgICAgICB7IGxlZnQgPSB0MVxuICAgICAgICAgICA7IGtleSA9IGtcbiAgICAgICAgICAgOyB2YWx1ZSA9IHZcbiAgICAgICAgICAgOyBoZWlnaHQgPSBJbnQubWF4IChoZWlnaHQgdDEpIChoZWlnaHQgdDIpICsgMVxuICAgICAgICAgICA7IHJpZ2h0ID0gdDJcbiAgICAgICAgICAgfVxuICAgICAgIHwgTm9kZSBfIGFzIG5vZGUgLT5cbiAgICAgICAgIHNldF9yaWdodCBub2RlIChyZW1vdmVfbWluX2VsdCB0Mik7XG4gICAgICAgICBzZXRfbGVmdCBub2RlIHQxO1xuICAgICAgICAgbm9kZSlcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgayA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgIEVtcHR5XG4gICAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gXyB9IC0+XG4gICAgICBpZiBjb21wYXJlIGsgaycgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBFbXB0eSlcbiAgICAgIGVsc2UgKFxuICAgICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgICB0KVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgbWVyZ2UgbGVmdCByaWdodClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzZXRfbGVmdCB0IChyZW1vdmUgbGVmdCByZW1vdmVkIGNvbXBhcmUgayk7XG4gICAgICAgIHQpXG4gICAgICBlbHNlIChcbiAgICAgICAgc2V0X3JpZ2h0IHQgKHJlbW92ZSByaWdodCByZW1vdmVkIGNvbXBhcmUgayk7XG4gICAgICAgIHQpXG4gIGluXG4gIGZ1biB0IH5yZW1vdmVkIH5jb21wYXJlIGsgLT4gYmFsYW5jZSAocmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGspXG47O1xuXG5sZXQgcmVjIGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGluaXRcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGEgaW5pdFxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IEVtcHR5XG4gICAgICB9IC0+IGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdClcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBFbXB0eVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgaW5pdClcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH0gfVxuICAgIC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfTsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH1cbiAgICAtPiBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKSB+ZlxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSkgfmZcbjs7XG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBpdGVyIGxlZnQgfmY7XG4gICAgZiB+a2V5IH5kYXRhO1xuICAgIGl0ZXIgcmlnaHQgfmZcbjs7XG5cbmxldCByZWMgbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKHsga2V5OyB2YWx1ZSB9IGFzIHQpIC0+IHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXk7IHZhbHVlOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHQpIC0+XG4gICAgbWFwaV9pbnBsYWNlIH5mIGxlZnQ7XG4gICAgdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWU7XG4gICAgbWFwaV9pbnBsYWNlIH5mIHJpZ2h0XG47O1xuXG5sZXQgY2hvb3NlX2V4biA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0F2bHRyZWUuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlOyBfIH0gfCBOb2RlIHsga2V5OyB2YWx1ZTsgXyB9IC0+IGtleSwgdmFsdWVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaHRibF9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleS5TXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgaGFzaF9wYXJhbSA9IEhhc2hhYmxlLmhhc2hfcGFyYW1cbmxldCBoYXNoID0gSGFzaGFibGUuaGFzaFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbnR5cGUgKCdrLCAndikgdCA9XG4gIHsgbXV0YWJsZSB0YWJsZSA6ICgnaywgJ3YpIEF2bHRyZWUudCBhcnJheVxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtyZWNlbnRseV9hZGRlZF0gaXMgdGhlIHJlZmVyZW5jZSBwYXNzZWQgdG8gW0F2bHRyZWUuYWRkXS4gV2UgcHV0IGl0IGluIHRoZSBoYXNoXG4gICAgIHRhYmxlIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgYXQgZXZlcnkgW3NldF0uICopXG4gIDsgcmVjZW50bHlfYWRkZWQgOiBib29sIHJlZlxuICA7IGdyb3d0aF9hbGxvd2VkIDogYm9vbFxuICA7IGhhc2hhYmxlIDogJ2sgSGFzaGFibGUudFxuICA7IG11dGFibGUgbXV0YXRpb25fYWxsb3dlZCA6IGJvb2wgKCogU2V0IGR1cmluZyBhbGwgaXRlcmF0aW9uIG9wZXJhdGlvbnMgKilcbiAgfVxuXG50eXBlICdhIGtleSA9ICdhXG5cbmxldCBzZXhwX29mX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3RcbmxldCBjb21wYXJlX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlXG5cbmxldCBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0ID1cbiAgaWYgbm90IHQubXV0YXRpb25fYWxsb3dlZCB0aGVuIGZhaWx3aXRoIFwiSGFzaHRibDogbXV0YXRpb24gbm90IGFsbG93ZWQgZHVyaW5nIGl0ZXJhdGlvblwiXG47O1xuXG5sZXQgd2l0aG91dF9tdXRhdGluZyB0IGYgPVxuICBpZiB0Lm11dGF0aW9uX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICB4XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHJhaXNlIGV4bilcbiAgZWxzZSBmICgpXG47O1xuXG4oKiogSW50ZXJuYWxseSB1c2UgYSBtYXhpbXVtIHNpemUgdGhhdCBpcyBhIHBvd2VyIG9mIDIuIFJldmVyc2VzIHRoZSBhYm92ZSB0byBmaW5kIHRoZVxuICAgIGZsb29yIHBvd2VyIG9mIDIgYmVsb3cgdGhlIHN5c3RlbSBtYXggYXJyYXkgbGVuZ3RoICopXG5sZXQgbWF4X3RhYmxlX2xlbmd0aCA9IEludC5mbG9vcl9wb3cyIEFycmF5Lm1heF9sZW5ndGhcblxuKCogVGhlIGRlZmF1bHQgc2l6ZSBpcyBjaG9zZW4gdG8gYmUgMCAoYXMgb3Bwb3NlZCB0byAxMjggYXMgaXQgd2FzIGJlZm9yZSkgYmVjYXVzZTpcbiAgIC0gMTI4IGNhbiBjcmVhdGUgc3Vic3RhbnRpYWwgbWVtb3J5IG92ZXJoZWFkICh4MTApIHdoZW4gY3JlYXRpbmcgbWFueSB0YWJsZXMsIG1vc3RcbiAgICAgb2Ygd2hpY2ggYXJlIG5vdCBiaWcgKHNheSwgaWYgeW91IGhhdmUgYSBoYXNodGJsIG9mIGhhc2h0YmwpLiBBbmQgbWVtb3J5IG92ZXJoZWFkIGlzXG4gICAgIG5vdCB0aGF0IGVhc3kgdG8gcHJvZmlsZS5cbiAgIC0gaWYgYSBoYXNodGJsIGlzIGdvaW5nIHRvIGdyb3csIGl0J3Mgbm90IGNsZWFyIHdoeSAxMjggaXMgbWFya2VkbHkgYmV0dGVyIHRoYW4gb3RoZXJcbiAgICAgc2l6ZXMgKGlmIHlvdSBnb2luZyB0byBzdGljayAxMDAwIGVsZW1lbnRzLCB5b3UncmUgZ29pbmcgdG8gZ3JvdyB0aGUgaGFzaHRhYmxlIG9uY2VcbiAgICAgb3IgdHdpY2UgYW55d2F5KVxuICAgLSBpbiBvdGhlciBsYW5ndWFnZXMgKGxpa2UgcnVzdCwgcHl0aG9uLCBhbmQgYXBwYXJlbnRseSBnbyksIHRoZSBkZWZhdWx0IGlzIGFsc28gYVxuICAgICBzbWFsbCBzaXplLiAqKVxubGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMCkgfmhhc2hhYmxlICgpID1cbiAgbGV0IHNpemUgPSBJbnQubWluIChJbnQubWF4IDEgc2l6ZSkgbWF4X3RhYmxlX2xlbmd0aCBpblxuICBsZXQgc2l6ZSA9IEludC5jZWlsX3BvdzIgc2l6ZSBpblxuICB7IHRhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBBdmx0cmVlLmVtcHR5XG4gIDsgbGVuZ3RoID0gMFxuICA7IGdyb3d0aF9hbGxvd2VkXG4gIDsgcmVjZW50bHlfYWRkZWQgPSByZWYgZmFsc2VcbiAgOyBoYXNoYWJsZVxuICA7IG11dGF0aW9uX2FsbG93ZWQgPSB0cnVlXG4gIH1cbjs7XG5cbigqKiBTdXBwbGVtZW50YWwgaGFzaC4gVGhpcyBtYXkgbm90IGJlIG5lY2Vzc2FyeSwgaXQgaXMgaW50ZW5kZWQgYXMgYSBkZWZlbnNlIGFnYWluc3QgcG9vclxuICAgIGhhc2ggZnVuY3Rpb25zLCBmb3Igd2hpY2ggdGhlIHBvd2VyIG9mIDIgc2l6ZWQgdGFibGUgd2lsbCBiZSBlc3BlY2lhbGx5IHNlbnNpdGl2ZS5cbiAgICBXaXRoIHNvbWUgdGVzdGluZyB3ZSBtYXkgY2hvb3NlIHRvIGFkZCBpdCwgYnV0IHRoaXMgdGFibGUgaXMgZGVzaWduZWQgdG8gYmUgcm9idXN0IHRvXG4gICAgY29sbGlzaW9ucywgYW5kIGluIG1vc3Qgb2YgbXkgdGVzdGluZyB0aGlzIGRlZ3JhZGVzIHBlcmZvcm1hbmNlLiAqKVxubGV0IF9zdXBwbGVtZW50YWxfaGFzaCBoID1cbiAgbGV0IGggPSBoIGx4b3IgKChoIGxzciAyMCkgbHhvciAoaCBsc3IgMTIpKSBpblxuICBoIGx4b3IgKGggbHNyIDcpIGx4b3IgKGggbHNyIDQpXG47O1xuXG5sZXQgc2xvdCB0IGtleSA9XG4gIGxldCBoYXNoID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5oYXNoIGtleSBpblxuICAoKiB0aGlzIGlzIGFsd2F5cyBub24tbmVnYXRpdmUgYmVjYXVzZSB3ZSBkbyBbbGFuZF0gd2l0aCBub24tbmVnYXRpdmUgbnVtYmVyICopXG4gIGhhc2ggbGFuZCAoQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxKVxuOztcblxubGV0IGFkZF93b3JrZXIgdCB+cmVwbGFjZSB+a2V5IH5kYXRhID1cbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkID0gdC5yZWNlbnRseV9hZGRlZCBpblxuICBhZGRlZCA6PSBmYWxzZTtcbiAgbGV0IG5ld19yb290ID1cbiAgICAoKiBUaGUgYXZsIHRyZWUgbWlnaHQgcmVwbGFjZSB0aGUgdmFsdWUgW3JlcGxhY2U9dHJ1ZV0gb3IgZG8gbm90aGluZyBbcmVwbGFjZT1mYWxzZV1cbiAgICAgICB0byB0aGUgZW50cnksIGluIHRoYXQgY2FzZSB0aGUgdGFibGUgZGlkIG5vdCBnZXQgYmlnZ2VyLCBzbyB3ZSBzaG91bGQgbm90XG4gICAgICAgaW5jcmVtZW50IGxlbmd0aCwgd2UgcGFzcyBpbiB0aGUgYm9vbCByZWYgdC5hZGRlZCBzbyB0aGF0IGl0IGNhbiB0ZWxsIHVzIHdoZXRoZXJcbiAgICAgICBpdCBhZGRlZCBvciByZXBsYWNlZC4gV2UgZG8gaXQgdGhpcyB3YXkgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbi4gU2luY2UgdGhlIGJvb2xcbiAgICAgICBpcyBhbiBpbW1lZGlhdGUgaXQgZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUgd3JpdGUgYmFycmllci4gKilcbiAgICBBdmx0cmVlLmFkZCB+cmVwbGFjZSByb290IH5jb21wYXJlOihjb21wYXJlX2tleSB0KSB+YWRkZWQgfmtleSB+ZGF0YVxuICBpblxuICBpZiAhYWRkZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICgqIFRoaXMgbGl0dGxlIG9wdGltaXphdGlvbiBzYXZlcyBhIGNhbWxfbW9kaWZ5IHdoZW4gdGhlIHRyZWVcbiAgICAgaGFzbid0IGJlZW4gcmViYWxhbmNlZC4gKilcbiAgaWYgbm90IChwaHlzX2VxdWFsIG5ld19yb290IHJvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Rcbjs7XG5cbmxldCBtYXliZV9yZXNpemVfdGFibGUgdCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICBsZXQgc2hvdWxkX2dyb3cgPSB0Lmxlbmd0aCA+IGxlbiBpblxuICBpZiBzaG91bGRfZ3JvdyAmJiB0Lmdyb3d0aF9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyYXlfbGVuZ3RoID0gSW50Lm1pbiAobGVuICogMikgbWF4X3RhYmxlX2xlbmd0aCBpblxuICAgIGlmIG5ld19hcnJheV9sZW5ndGggPiBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfdGFibGUgPSBBcnJheS5jcmVhdGUgfmxlbjpuZXdfYXJyYXlfbGVuZ3RoIEF2bHRyZWUuZW1wdHkgaW5cbiAgICAgIGxldCBvbGRfdGFibGUgPSB0LnRhYmxlIGluXG4gICAgICB0LnRhYmxlIDwtIG5ld190YWJsZTtcbiAgICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgICBsZXQgZiB+a2V5IH5kYXRhID0gYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvbGRfdGFibGUgLSAxIGRvXG4gICAgICAgIEF2bHRyZWUuaXRlciBvbGRfdGFibGUuKGkpIH5mXG4gICAgICBkb25lKSlcbjs7XG5cbmxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YTtcbiAgbWF5YmVfcmVzaXplX3RhYmxlIHRcbjs7XG5cbmxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgYWRkX3dvcmtlciB+cmVwbGFjZTpmYWxzZSB0IH5rZXkgfmRhdGE7XG4gIGlmICEodC5yZWNlbnRseV9hZGRlZClcbiAgdGhlbiAoXG4gICAgbWF5YmVfcmVzaXplX3RhYmxlIHQ7XG4gICAgYE9rKVxuICBlbHNlIGBEdXBsaWNhdGVcbjs7XG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICB8IGBPayAtPiAoKVxuICB8IGBEdXBsaWNhdGUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleSB0IGluXG4gICAgbGV0IGVycm9yID0gRXJyb3IuY3JlYXRlIFwiSGFzaHRibC5hZGRfZXhuIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIga2V5IHNleHBfb2Zfa2V5IGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIHQudGFibGUuKGkpIDwtIEF2bHRyZWUuZW1wdHlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gMFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDIgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMlxuICAgICAgdHJlZVxuICAgICAgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gICAgICBrZXlcbiAgICAgIH5hXG4gICAgICB+YlxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQga2V5IC0+IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBmYWxzZVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gXyB9IC0+IGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwXG4gIHwgdHJlZSAtPiBBdmx0cmVlLm1lbSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWRfb3JfcmVtb3ZlZCA9IHQucmVjZW50bHlfYWRkZWQgaW5cbiAgYWRkZWRfb3JfcmVtb3ZlZCA6PSBmYWxzZTtcbiAgbGV0IG5ld19yb290ID1cbiAgICBBdmx0cmVlLnJlbW92ZSByb290IH5yZW1vdmVkOmFkZGVkX29yX3JlbW92ZWQgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuICBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgcm9vdCBuZXdfcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgaWYgIWFkZGVkX29yX3JlbW92ZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDFcbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBhY2MgOj0gZiB+a2V5IH5kYXRhICFhY2NcbiAgICAgICAgfCBidWNrZXQgLT4gYWNjIDo9IEF2bHRyZWUuZm9sZCBidWNrZXQgfmluaXQ6IWFjYyB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgICFhY2NcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgICAgICAgfCBidWNrZXQgLT4gQXZsdHJlZS5pdGVyIGJ1Y2tldCB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+IHQubXV0YXRpb25fYWxsb3dlZCA8LSBtXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBpdGVyX2tleXMgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpXG5cbmxldCByZWMgY2hvb3NlX25vbmVtcHR5IHRhYmxlIGkgPVxuICBsZXQgYXZsdHJlZSA9IHRhYmxlLihpKSBpblxuICBpZiBBdmx0cmVlLmlzX2VtcHR5IGF2bHRyZWVcbiAgdGhlbiBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgKGkgKyAxKVxuICBlbHNlIEF2bHRyZWUuY2hvb3NlX2V4biBhdmx0cmVlXG47O1xuXG5sZXQgY2hvb3NlX2V4biB0ID1cbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMFxuOztcblxubGV0IGNob29zZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9rZXkgaW52YXJpYW50X2RhdGEgdCA9XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICBBdmx0cmVlLmludmFyaWFudCB0LnRhYmxlLihpKSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdClcbiAgZG9uZTtcbiAgbGV0IHJlYWxfbGVuID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgaSAtPlxuICAgICAgaW52YXJpYW50X2tleSBrZXk7XG4gICAgICBpbnZhcmlhbnRfZGF0YSBkYXRhO1xuICAgICAgaSArIDEpXG4gIGluXG4gIGFzc2VydCAocmVhbF9sZW4gPSB0Lmxlbmd0aClcbjs7XG5cbmxldCBmaW5kX2V4biA9XG4gIGxldCBpZl9mb3VuZCB2IF8gPSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgayB0ID1cbiAgICByYWlzZVxuICAgICAgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIkhhc2h0YmwuZmluZF9leG46IG5vdCBmb3VuZFwiOyB0Lmhhc2hhYmxlLnNleHBfb2ZfdCBrIF0pKVxuICBpblxuICBsZXQgZmluZF9leG4gdCBrZXkgPSBmaW5kX2FuZF9jYWxsMSB0IGtleSB+YTp0IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBub3QgKGYgfmtleSB+ZGF0YSkpKVxubGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IG5vdCAoZiBkYXRhKSkpXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6KGYgfmtleSB+ZGF0YSkpO1xuICBuZXdfdFxuOztcblxubGV0IG1hcCB0IH5mID0gbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBjb3B5IHQgPSBtYXAgdCB+ZjpGbi5pZFxuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IFNvbWUgbmV3X2RhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IE5vbmUgLT4gKCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDAgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBsZXQgdDEgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBuZXdfZGF0YSAtPiBzZXQgdDAgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgU2Vjb25kIG5ld19kYXRhIC0+IHNldCB0MSB+a2V5IH5kYXRhOm5ld19kYXRhKTtcbiAgdDAsIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmluZF9vcl9hZGQgdCBpZCB+ZGVmYXVsdCA9XG4gIGZpbmRfYW5kX2NhbGwyXG4gICAgdFxuICAgIGlkXG4gICAgfmE6dFxuICAgIH5iOmRlZmF1bHRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIF8gXyAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgdCBkZWZhdWx0IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQgKCkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpXG47O1xuXG5sZXQgZmluZGlfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsMlxuICAgIHRcbiAgICBpZFxuICAgIH5hOnRcbiAgICB+YjpkZWZhdWx0XG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSBfIF8gLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IHQgZGVmYXVsdCAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0IGtleSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdClcbjs7XG5cbigqIFNvbWUgaGFzaHRibCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gcGVyZm9ybSB0aGlzIG1vcmUgZWZmaWNpZW50bHkgdGhhbiB0d29cbiAgIHNlcGFyYXRlIGxvb2t1cHMgKilcbmxldCBmaW5kX2FuZF9yZW1vdmUgdCBpZCA9XG4gIGxldCByZXN1bHQgPSBmaW5kIHQgaWQgaW5cbiAgaWYgT3B0aW9uLmlzX3NvbWUgcmVzdWx0IHRoZW4gcmVtb3ZlIHQgaWQ7XG4gIHJlc3VsdFxuOztcblxuXG5sZXQgY2hhbmdlIHQgaWQgfmYgPVxuICBtYXRjaCBmIChmaW5kIHQgaWQpIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB0IGlkXG4gIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXk6aWQgfmRhdGFcbjs7XG5cbmxldCB1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mID1cbiAgbGV0IGRhdGEgPSBmIChmaW5kIHQgaWQpIGluXG4gIHNldCB0IH5rZXk6aWQgfmRhdGE7XG4gIGRhdGFcbjs7XG5cbmxldCB1cGRhdGUgdCBpZCB+ZiA9IGlnbm9yZSAodXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA6IF8pXG5cbmxldCBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieSA9XG4gIGlmIHJlbW92ZV9pZl96ZXJvXG4gIHRoZW5cbiAgICBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvcHQgLT5cbiAgICAgIG1hdGNoIGJ5ICsgT3B0aW9uLnZhbHVlIG9wdCB+ZGVmYXVsdDowIHdpdGhcbiAgICAgIHwgMCAtPiBOb25lXG4gICAgICB8IG4gLT4gU29tZSBuKVxuICBlbHNlXG4gICAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGJ5XG4gICAgICB8IFNvbWUgaSAtPiBieSArIGkpXG47O1xuXG5sZXQgaW5jciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5XG5sZXQgZGVjciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5ICgtYnkpXG5cbmxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBbIGRhdGEgXVxuICAgIHwgU29tZSBsIC0+IGRhdGEgOjogbClcbjs7XG5cbmxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBbXSB8IFNvbWUgWyBfIF0gLT4gcmVtb3ZlIHQga2V5XG4gIHwgU29tZSAoXyA6OiB0bCkgLT4gc2V0IHQgfmtleSB+ZGF0YTp0bFxuOztcblxubGV0IGZpbmRfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBsIC0+IGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSB+c2l6ZSAoKSBpblxuICBsZXQgZHVwZXMgPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGlmIG1lbSByZXMga2V5IHRoZW4gZHVwZXMgOj0ga2V5IDo6ICFkdXBlcyBlbHNlIHNldCByZXMgfmtleSB+ZGF0YSk7XG4gIG1hdGNoICFkdXBlcyB3aXRoXG4gIHwgW10gLT4gYE9rIHJlc1xuICB8IGtleXMgLT4gYER1cGxpY2F0ZV9rZXlzIChMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmUga2V5cylcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIH5oYXNoYWJsZSAoKSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgYWRkX211bHRpIHJlcyB+a2V5IH5kYXRhKTtcbiAgcmVzXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0IHdpdGhcbiAgfCBgT2sgdCAtPiBgT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrIC0+IGBEdXBsaWNhdGVfa2V5IChMaXN0LmhkX2V4biBrKVxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBgT2sgdiAtPiBSZXN1bHQuT2sgdlxuICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yIFwiSGFzaHRibC5vZl9hbGlzdF9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgc2V4cF9vZl9rZXlcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgUmVzdWx0Lk9rIHYgLT4gdlxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEVycm9yLnJhaXNlIGVcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCB0b19hbGlzdCB0ID0gZm9sZCB+ZjooZnVuIH5rZXkgfmRhdGEgbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICB0XG4gIHw+IHRvX2FsaXN0XG4gIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChrMSwgXykgKGsyLCBfKSAtPiB0Lmhhc2hhYmxlLmNvbXBhcmUgazEgazIpXG4gIHw+IHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSlcbjs7XG5cbmxldCB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9XG4gIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHApIHNleHAgaW5cbiAgbWF0Y2ggb2ZfYWxpc3Qgfmhhc2hhYmxlIGFsaXN0IH5zaXplOihMaXN0Lmxlbmd0aCBhbGlzdCkgd2l0aFxuICB8IGBPayB2IC0+IHZcbiAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICBMaXN0Lml0ZXIyX2V4biBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICBpZiBoYXNoYWJsZS5jb21wYXJlIGsgazIgPSAwXG4gICAgICB0aGVuXG4gICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIkhhc2h0YmwudF9vZl9zZXhwOiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGsgdilcbiAgICAgIChrX2dyYW1tYXIgOiBrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgKHZfZ3JhbW1hciA6IHYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogKGssIHYpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG47O1xuXG5sZXQga2V5cyB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YTpfIGFjYyAtPiBrZXkgOjogYWNjKVxubGV0IGRhdGEgdCA9IGZvbGQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IGFkZF90b19ncm91cHMgZ3JvdXBzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cyA9XG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gcm93IC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgcm93IGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByb3cgaW5cbiAgICBsZXQgZGF0YSA9XG4gICAgICBtYXRjaCBmaW5kIGdyb3VwcyBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgIHwgU29tZSBvbGQgLT4gY29tYmluZSBvbGQgZGF0YVxuICAgIGluXG4gICAgc2V0IGdyb3VwcyB+a2V5IH5kYXRhKVxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIHJvd3MgPVxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgYWRkX3RvX2dyb3VwcyByZXMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzO1xuICByZXNcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YTpGbi5pZCByb3dzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIG1hdGNoIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3Mgd2l0aFxuICB8IGBPayB0IC0+IFJlc3VsdC5PayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGtleXMgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkhhc2h0YmwuY3JlYXRlX3dpdGhfa2V5OiBkdXBsaWNhdGUga2V5c1wiXG4gICAgICAgICBbIFwia2V5c1wiLCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9rZXkga2V5cyBdKVxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgT3JfZXJyb3Iub2tfZXhuIChjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzKVxuOztcblxubGV0IG1lcmdlID1cbiAgbGV0IG1heWJlX3NldCB0IH5rZXkgfmYgZCA9XG4gICAgbWF0Y2ggZiB+a2V5IGQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IHNldCB0IH5rZXkgfmRhdGE6dlxuICBpblxuICBmdW4gdF9sZWZ0IHRfcmlnaHQgfmYgLT5cbiAgICBpZiBub3QgKEhhc2hhYmxlLmVxdWFsIHRfbGVmdC5oYXNoYWJsZSB0X3JpZ2h0Lmhhc2hhYmxlKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJIYXNodGJsLm1lcmdlOiBkaWZmZXJlbnQgJ2hhc2hhYmxlJyB2YWx1ZXNcIjtcbiAgICBsZXQgbmV3X3QgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5ncm93dGhfYWxsb3dlZDp0X2xlZnQuZ3Jvd3RoX2FsbG93ZWRcbiAgICAgICAgfmhhc2hhYmxlOnRfbGVmdC5oYXNoYWJsZVxuICAgICAgICB+c2l6ZTp0X2xlZnQubGVuZ3RoXG4gICAgICAgICgpXG4gICAgaW5cbiAgICB3aXRob3V0X211dGF0aW5nIHRfbGVmdCAoZnVuICgpIC0+XG4gICAgICB3aXRob3V0X211dGF0aW5nIHRfcmlnaHQgKGZ1biAoKSAtPlxuICAgICAgICBpdGVyaSB0X2xlZnQgfmY6KGZ1biB+a2V5IH5kYXRhOmxlZnQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfcmlnaHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBMZWZ0IGxlZnQpXG4gICAgICAgICAgfCBTb21lIHJpZ2h0IC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgQm90aCAobGVmdCwgcmlnaHQpKSk7XG4gICAgICAgIGl0ZXJpIHRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOnJpZ2h0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X2xlZnQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBSaWdodCByaWdodClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgICgqIGFscmVhZHkgZG9uZSBhYm92ZSAqKSkpKTtcbiAgICBuZXdfdFxuOztcblxubGV0IG1lcmdlX2ludG8gfnNyYyB+ZHN0IH5mID1cbiAgaXRlcmkgc3JjIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCBkc3RfZGF0YSA9IGZpbmQgZHN0IGtleSBpblxuICAgIGxldCBhY3Rpb24gPSB3aXRob3V0X211dGF0aW5nIGRzdCAoZnVuICgpIC0+IGYgfmtleSBkYXRhIGRzdF9kYXRhKSBpblxuICAgIG1hdGNoIChhY3Rpb24gOiBfIE1lcmdlX2ludG9fYWN0aW9uLnQpIHdpdGhcbiAgICB8IFJlbW92ZSAtPiByZW1vdmUgZHN0IGtleVxuICAgIHwgU2V0X3RvIGRhdGEgLT5cbiAgICAgIChtYXRjaCBkc3RfZGF0YSB3aXRoXG4gICAgICAgfCBOb25lIC0+IHNldCBkc3QgfmtleSB+ZGF0YVxuICAgICAgIHwgU29tZSBkc3RfZGF0YSAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZHN0X2RhdGEgZGF0YSkgdGhlbiBzZXQgZHN0IH5rZXkgfmRhdGEpKVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhYyBlbHNlIGtleSA6OiBhYylcbiAgaW5cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGtleSAtPiByZW1vdmUgdCBrZXkpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmaWx0ZXJfa2V5c19pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCBtYXBfcmVzdWx0cyA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gKGtleSwgZiB+a2V5IH5kYXRhKSA6OiBhYykgaW5cbiAgTGlzdC5pdGVyIG1hcF9yZXN1bHRzIH5mOihmdW4gKGtleSwgcmVzdWx0KSAtPlxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbW92ZSB0IGtleVxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGEpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPSBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICB3aXRob3V0X211dGF0aW5nIHQgKGZ1biAoKSAtPiBBcnJheS5pdGVyIHQudGFibGUgfmY6KEF2bHRyZWUubWFwaV9pbnBsYWNlIH5mKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gbWFwaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZXF1YWwgZXF1YWwgdCB0JyA9XG4gIGxlbmd0aCB0ID0gbGVuZ3RoIHQnXG4gICYmIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdCcgKGZ1biAoKSAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgbWF0Y2ggZmluZCB0JyBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gci5yZXR1cm4gZmFsc2VcbiAgICAgICAgfCBTb21lIGRhdGEnIC0+IGlmIG5vdCAoZXF1YWwgZGF0YSBkYXRhJykgdGhlbiByLnJldHVybiBmYWxzZSkpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgc2ltaWxhciA9IGVxdWFsXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgY2hvb3NlID0gY2hvb3NlXG4gIGxldCBjaG9vc2VfZXhuID0gY2hvb3NlX2V4blxuICBsZXQgY2xlYXIgPSBjbGVhclxuICBsZXQgY29weSA9IGNvcHlcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZVxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGFkZF9leG4gPSBhZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbiAgbGV0IHVwZGF0ZSA9IHVwZGF0ZVxuICBsZXQgdXBkYXRlX2FuZF9yZXR1cm4gPSB1cGRhdGVfYW5kX3JldHVyblxuICBsZXQgYWRkX211bHRpID0gYWRkX211bHRpXG4gIGxldCByZW1vdmVfbXVsdGkgPSByZW1vdmVfbXVsdGlcbiAgbGV0IGZpbmRfbXVsdGkgPSBmaW5kX211bHRpXG4gIGxldCBtZW0gPSBtZW1cbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZpbHRlcl9tYXAgPSBmaWx0ZXJfbWFwXG4gIGxldCBmaWx0ZXJfbWFwaSA9IGZpbHRlcl9tYXBpXG4gIGxldCBmaWx0ZXJfa2V5cyA9IGZpbHRlcl9rZXlzXG4gIGxldCBmaWx0ZXIgPSBmaWx0ZXJcbiAgbGV0IGZpbHRlcmkgPSBmaWx0ZXJpXG4gIGxldCBwYXJ0aXRpb25fbWFwID0gcGFydGl0aW9uX21hcFxuICBsZXQgcGFydGl0aW9uX21hcGkgPSBwYXJ0aXRpb25fbWFwaVxuICBsZXQgcGFydGl0aW9uX3RmID0gcGFydGl0aW9uX3RmXG4gIGxldCBwYXJ0aXRpb25pX3RmID0gcGFydGl0aW9uaV90ZlxuICBsZXQgZmluZF9vcl9hZGQgPSBmaW5kX29yX2FkZFxuICBsZXQgZmluZGlfb3JfYWRkID0gZmluZGlfb3JfYWRkXG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgZmluZF9leG4gPSBmaW5kX2V4blxuICBsZXQgZmluZF9hbmRfY2FsbCA9IGZpbmRfYW5kX2NhbGxcbiAgbGV0IGZpbmRfYW5kX2NhbGwxID0gZmluZF9hbmRfY2FsbDFcbiAgbGV0IGZpbmRfYW5kX2NhbGwyID0gZmluZF9hbmRfY2FsbDJcbiAgbGV0IGZpbmRpX2FuZF9jYWxsID0gZmluZGlfYW5kX2NhbGxcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMSA9IGZpbmRpX2FuZF9jYWxsMVxuICBsZXQgZmluZGlfYW5kX2NhbGwyID0gZmluZGlfYW5kX2NhbGwyXG4gIGxldCBmaW5kX2FuZF9yZW1vdmUgPSBmaW5kX2FuZF9yZW1vdmVcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IG1lcmdlID0gbWVyZ2VcbiAgbGV0IG1lcmdlX2ludG8gPSBtZXJnZV9pbnRvXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgPSBmaWx0ZXJfa2V5c19pbnBsYWNlXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSA9IGZpbHRlcl9pbnBsYWNlXG4gIGxldCBmaWx0ZXJpX2lucGxhY2UgPSBmaWx0ZXJpX2lucGxhY2VcbiAgbGV0IG1hcF9pbnBsYWNlID0gbWFwX2lucGxhY2VcbiAgbGV0IG1hcGlfaW5wbGFjZSA9IG1hcGlfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlID0gZmlsdGVyX21hcGlfaW5wbGFjZVxuICBsZXQgZXF1YWwgPSBlcXVhbFxuICBsZXQgc2ltaWxhciA9IHNpbWlsYXJcbiAgbGV0IGluY3IgPSBpbmNyXG4gIGxldCBkZWNyID0gZGVjclxuICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleVxuZW5kXG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBLZXkuaGFzaGFibGVcblxuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKClcbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID0gb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHBcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG4gIDs7XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXkgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IEhhc2hhYmxlLnBvbHlcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEhhc2hhYmxlID0gSGFzaGFibGUuSGFzaGFibGVcblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBsZXQgaGFzaGFibGUgdCA9IHQuaGFzaGFibGVcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgY3JlYXRlIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfbXVsdGkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgY3JlYXRlX21hcHBlZCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgZ3JvdXAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG47O1xuXG5sZXQgaGFzaGFibGVfcyB0ID0gSGFzaGFibGUudG9fa2V5IHQuaGFzaGFibGVcblxubW9kdWxlIE0gKEsgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBrKSAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrKSB2X29mX3NleHAgc2V4cCA9XG4gIHRfb2Zfc2V4cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEspKSBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGspIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaykgdl9ncmFtbWFyID1cbiAgdF9zZXhwX2dyYW1tYXIgSy50X3NleHBfZ3JhbW1hciB2X2dyYW1tYXJcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuXG5sZXQgaGFzaGFibGVfcyA9IEhhc2h0YmwuaGFzaGFibGVfc1xubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5sZXQgcG9seV9oYXNoYWJsZSA9IEhhc2h0YmwuUG9seS5oYXNoYWJsZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAnYSB0ID0gKCdhLCB1bml0KSBIYXNodGJsLnRcbnR5cGUgJ2EgaGFzaF9zZXQgPSAnYSB0XG50eXBlICdhIGVsdCA9ICdhXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuICBsZXQgbGVuZ3RoID0gSGFzaHRibC5sZW5ndGhcbiAgbGV0IG1lbSA9IEhhc2h0YmwubWVtXG4gIGxldCBpc19lbXB0eSB0ID0gSGFzaHRibC5pc19lbXB0eSB0XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgSGFzaHRibC5pdGVyX2tleXMgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyBhcyBvIC0+IHIucmV0dXJuIG8pO1xuICAgICAgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID0gZmluZF9tYXAgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gU29tZSBhIGVsc2UgTm9uZSlcbiAgbGV0IGFkZCB0IGsgPSBIYXNodGJsLnNldCB0IH5rZXk6ayB+ZGF0YTooKVxuXG4gIGxldCBzdHJpY3RfYWRkIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiZWxlbWVudCBhbHJlYWR5IGV4aXN0c1wiXG4gICAgZWxzZSAoXG4gICAgICBIYXNodGJsLnNldCB0IH5rZXk6ayB+ZGF0YTooKTtcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgOztcblxuICBsZXQgc3RyaWN0X2FkZF9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfYWRkIHQgaylcbiAgbGV0IHJlbW92ZSA9IEhhc2h0YmwucmVtb3ZlXG5cbiAgbGV0IHN0cmljdF9yZW1vdmUgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmUgdCBrO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICAgIGVsc2UgT3JfZXJyb3IuZXJyb3IgXCJlbGVtZW50IG5vdCBpbiBzZXRcIiBrIChIYXNodGJsLnNleHBfb2Zfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9yZW1vdmVfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X3JlbW92ZSB0IGspXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBIYXNodGJsLmZvbGQgdCB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgYWNjIC0+IGYgYWNjIGtleSlcbiAgbGV0IGl0ZXIgdCB+ZiA9IEhhc2h0YmwuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IHRvX2xpc3QgPSBIYXNodGJsLmtleXNcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZSB0ID1cbiAgICBzZXhwX29mX2xpc3Qgc2V4cF9vZl9lICh0b19saXN0IHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihoYXNoYWJsZSB0KS5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgaW5kZXggPSByZWYgKGxlbiAtIDEpIGluXG4gICAgZm9sZCB0IH5pbml0Olt8fF0gfmY6KGZ1biBhY2Mga2V5IC0+XG4gICAgICBpZiBBcnJheS5sZW5ndGggYWNjID0gMFxuICAgICAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiBrZXlcbiAgICAgIGVsc2UgKFxuICAgICAgICBpbmRleCA6PSAhaW5kZXggLSAxO1xuICAgICAgICBhY2MuKCFpbmRleCkgPC0ga2V5O1xuICAgICAgICBhY2MpKVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9IEhhc2h0YmwuZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IG5vdCAoZiBrZXkpKSlcbiAgbGV0IGVxdWFsIHQxIHQyID0gSGFzaHRibC5lcXVhbCAoZnVuICgpICgpIC0+IHRydWUpIHQxIHQyXG4gIGxldCBjb3B5IHQgPSBIYXNodGJsLmNvcHkgdFxuICBsZXQgZmlsdGVyIHQgfmYgPSBIYXNodGJsLmZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IEhhc2h0YmwubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gXyAtPiBTb21lICgpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGZpbHRlciB0MSB+ZjooZnVuIGtleSAtPiBub3QgKEhhc2h0YmwubWVtIHQyIGtleSkpXG5cbiAgbGV0IGludGVyIHQxIHQyID1cbiAgICBsZXQgc21hbGxlciwgbGFyZ2VyID0gaWYgbGVuZ3RoIHQxID4gbGVuZ3RoIHQyIHRoZW4gdDIsIHQxIGVsc2UgdDEsIHQyIGluXG4gICAgSGFzaHRibC5maWx0ZXJpIHNtYWxsZXIgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IEhhc2h0YmwubWVtIGxhcmdlciBrZXkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICAgIGxldCB0b19yZW1vdmUgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyB4IC0+IGlmIGYgeCB0aGVuIGFjIGVsc2UgeCA6OiBhYykgaW5cbiAgICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4geCAtPiByZW1vdmUgdCB4KVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaGFzaHRibCA9IEhhc2h0YmwubWFwIGhhc2h0YmwgfmY6aWdub3JlXG4gIGxldCB0b19oYXNodGJsIHQgfmYgPSBIYXNodGJsLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBsXG4gIGluXG4gIGxldCB0ID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIG0gaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biBrIC0+IGFkZCB0IGspO1xuICB0XG47O1xuXG5sZXQgdF9vZl9zZXhwIG0gZV9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBTZXhwLkF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIHJlcXVpcmVzIGEgbGlzdFwiIHNleHBcbiAgfCBTZXhwLkxpc3QgbGlzdCAtPlxuICAgIGxldCB0ID0gY3JlYXRlIG0gfnNpemU6KExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biBzZXhwIC0+XG4gICAgICBsZXQgZSA9IGVfb2Zfc2V4cCBzZXhwIGluXG4gICAgICBtYXRjaCBzdHJpY3RfYWRkIHQgZSB3aXRoXG4gICAgICB8IE9rICgpIC0+ICgpXG4gICAgICB8IEVycm9yIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCBnb3QgYSBkdXBsaWNhdGUgZWxlbWVudFwiIHNleHApO1xuICAgIHRcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBFbHQudCkgLT4gU2V4cC50IC0+ICdhIEVsdC50IHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIEVsdC50IHRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgd2l0aCB0eXBlICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGVfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBlX29mX3NleHAgc2V4cFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGhhc2hfc2V0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBwb2x5X2hhc2hhYmxlXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG5lbmRcblxubW9kdWxlIE0gKEVsdCA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IEVsdC50IHRcbmVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQpIHNleHAgPVxuICB0X29mX3NleHAgKG1vZHVsZSBFbHQpIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdCkgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFByaW50ZlxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5pbmNsdWRlIEZsb2F0MFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Zsb2F0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9mbG9hdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoZmxvYXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZmxvYXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gZmxvYXRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IHRvX2Zsb2F0IHggPSB4XG5sZXQgb2ZfZmxvYXQgeCA9IHhcblxubGV0IG9mX3N0cmluZyBzID1cbiAgdHJ5IGZsb2F0X29mX3N0cmluZyBzIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcIkZsb2F0Lm9mX3N0cmluZyAlc1wiIHMgKClcbjs7XG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0uICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBpIGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxuKCogTGV0IFt5XSBiZSBhIHBvd2VyIG9mIDIuICBUaGVuIHRoZSBuZXh0IHJlcHJlc2VudGFibGUgZmxvYXQgaXM6XG4gICBbeiA9IHkgKiAoMSArIDIgKiogLTUyKV1cbiAgIGFuZCB0aGUgcHJldmlvdXMgb25lIGlzXG4gICBbeCA9IHkgKiAoMSAtIDIgKiogLTUzKV1cblxuICAgSW4gZ2VuZXJhbCwgZXZlcnkgdHdvIGFkamFjZW50IGZsb2F0cyBhcmUgd2l0aGluIGEgZmFjdG9yIG9mIGJldHdlZW4gWzEgKyAyKiotNTNdXG4gICBhbmQgWzEgKyAyKiotNTJdIGZyb20gZWFjaCBvdGhlciwgdGhhdCBpcyB3aXRoaW4gWzEgKyAxLjFlLTE2XSBhbmQgWzEgKyAyLjNlLTE2XS5cblxuICAgU28gaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdCBzdGFydHMgd2l0aCBcIjFcIiwgdGhlbiBpdHMgYWRqYWNlbnQgZmxvYXRzXG4gICB3aWxsIHVzdWFsbHkgZGlmZmVyIGZyb20gaXQgYnkgMSwgYW5kIHNvbWV0aW1lcyBieSAyLCBhdCB0aGUgMTd0aCBzaWduaWZpY2FudCBkaWdpdFxuICAgKGNvdW50aW5nIGZyb20gMSkuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBzdGFydHMgd2l0aCBcIjlcIiwgdGhlbiB0aGUgYWRqYWNlbnRcbiAgIGZsb2F0cyB3aWxsIGJlIG9mZiBieSBubyBtb3JlIHRoYW4gMjMgYXQgdGhlIDE2dGggYW5kIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRzLlxuXG4gICBFLmcuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5OVwiXG4gICB2fVxuICAgUHJpbnRpbmcgYSBjb3VwbGUgb2YgZXh0cmEgZGlnaXRzIHJldmVhbHMgdGhhdCB0aGUgZGlmZmVyZW5jZSBpbmRlZWQgaXMgcm91Z2hseSAxMSBhdFxuICAgZGlnaXRzIDE3dGggYW5kIDE4dGggKHRoYXQgaXMsIDEzdGggYW5kIDE0dGggYWZ0ZXIgXCIuXCIpOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTg4NlwiXG4gICB2fVxuXG4gICBUaGUgdWxwICh0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkamFjZW50IGZsb2F0cykgaXMgdHdpY2UgYXMgYmlnIG9uIHRoZSBvdGhlciBzaWRlIG9mXG4gICAxMDI0LjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuICsuIDIuKiogKC01Mi4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyNC4wMDAwMDAwMDAwMDAyMjdcIlxuICAgdn1cblxuICAgTm93IHRha2UgYSBwb3dlciBvZiAyIHdoaWNoIHN0YXJ0cyB3aXRoIDk5OlxuXG4gICB7dlxuICAgICAjIDIuKio5My4gOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAxIDIzNDU2Nzg5MDEyMzQ1Njc4XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQyMmUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuICsuIDIuKiogKC01Mi4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQ0NGUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuIC0uIDIuKiogKC01My4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQxMWUrMjdcbiAgIHZ9XG5cbiAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMioqOTMgYW5kIGl0cyB0d28gbmVpZ2hib3JzIGlzIHNsaWdodGx5IG1vcmUgdGhhbiwgcmVzcGVjdGl2ZWx5LFxuICAgMSBhbmQgMiBhdCBzaWduaWZpY2FudCBkaWdpdCAxNi5cblxuICAgVGhvc2UgZXhhbXBsZXMgc2hvdyB0aGF0OlxuICAgLSAxNyBzaWduaWZpY2FudCBkaWdpdHMgaXMgYWx3YXlzIHN1ZmZpY2llbnQgdG8gcmVwcmVzZW50IGEgZmxvYXQgd2l0aG91dCBhbWJpZ3VpdHlcbiAgIC0gMTV0aCBzaWduaWZpY2FudCBkaWdpdCBjYW4gYWx3YXlzIGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHlcbiAgIC0gY29udmVydGluZyBhIGRlY2ltYWwgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIHRvIGl0cyBuZWFyZXN0IGZsb2F0IGFuZCBiYWNrXG4gICAgIGNhbiBjaGFuZ2UgdGhlIGxhc3QgZGVjaW1hbCBkaWdpdCBieSBubyBtb3JlIHRoYW4gMVxuXG4gICBUbyBtYWtlIHN1cmUgdGhhdCBmbG9hdHMgb2J0YWluZWQgYnkgY29udmVyc2lvbiBmcm9tIGRlY2ltYWwgZnJhY3Rpb25zIChlLmcuIFwiMy4xNFwiKVxuICAgYXJlIHByaW50ZWQgd2l0aG91dCB0cmFpbGluZyBub24temVybyBkaWdpdHMsIG9uZSBzaG91bGQgY2hvb3NlIHRoZSBmaXJzdCBhbW9uZyB0aGVcbiAgICclLjE1ZycsICclLjE2ZycsIGFuZCAnJS4xN2cnIHJlcHJlc2VudGF0aW9ucyB3aGljaCBkb2VzIHJvdW5kLXRyaXA6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIiAgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lICopXG5cbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjhcIiAgICAgICAgICAgICAgICAgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1kb2VzIG5vdCByb3VuZC10cmlwICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMlwiICAgICAgICAoKiBwcmVmZXIgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAxOFwiICAgICAgICgqIHRoaXMgb25lIGhhcyBvbmUgZGlnaXQgb2YganVuayBhdCB0aGUgZW5kICopXG4gICB2fVxuXG4gICBTa2lwcGluZyB0aGUgJyUuMTZnJyBpbiB0aGUgYWJvdmUgcHJvY2VkdXJlIHNhdmVzIHVzIHNvbWUgdGltZSwgYnV0IGl0IG1lYW5zIHRoYXQsIGFzXG4gICBzZWVuIGluIHRoZSBzZWNvbmQgZXhhbXBsZSBhYm92ZSwgb2NjYXNpb25hbGx5IG51bWJlcnMgd2l0aCBleGFjdGx5IDE2IHNpZ25pZmljYW50XG4gICBkaWdpdHMgd2lsbCBoYXZlIGFuIGVycm9yIGludHJvZHVjZWQgYXQgdGhlIDE3dGggZGlnaXQuICBUaGF0IGlzIHByb2JhYmx5IE9LIGZvclxuICAgdHlwaWNhbCB1c2UsIGJlY2F1c2UgYSBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaXMgXCJ1Z2x5XCIgYWxyZWFkeS4gIEFkZGluZyBvbmVcbiAgIG1vcmUgZG9lc24ndCBtYWtlIGl0IG11Y2ggd29yc2UgZm9yIGEgaHVtYW4gcmVhZGVyLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgd2UgY2Fubm90IHNraXAgJyUuMTVnJyBhbmQgb25seSBsb29rIGF0ICclLjE2ZycgYW5kICclLjE3ZycsIHNpbmNlXG4gICB0aGUgaW5hY2N1cmFjeSBhdCB0aGUgMTZ0aCBkaWdpdCBtaWdodCBpbnRyb2R1Y2UgdGhlIG5vaXNlIHdlIHdhbnQgdG8gYXZvaWQ6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MlwiICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMVwiICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tanVuayBhdCB0aGUgZW5kICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMDlcIlxuICAgdn1cbiopXG5sZXQgdG9fc3RyaW5nIHggPVxuICB2YWxpZF9mbG9hdF9sZXhlbVxuICAgIChsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVnXCIgeCBpblxuICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN2dcIiB4KVxuOztcblxubGV0IG1heF92YWx1ZSA9IGluZmluaXR5XG5sZXQgbWluX3ZhbHVlID0gbmVnX2luZmluaXR5XG5sZXQgbWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDc0LlxubGV0IG1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTAyMi5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IHBpID0gMHgzLjI0M0Y2QTg4ODVBMzA4RDMxMzE5OEEyRTAzNzA3M1xubGV0IHNxcnRfcGkgPSAweDEuQzVCRjg5MUI0RUY2QUE3OUMzQjA1MjBENURCOTM4XG5sZXQgc3FydF8ycGkgPSAweDIuODFCMjYzRkVDNEUwQjJDQUY5NDgzRjVDRTQ1OURDXG5sZXQgZXVsZXIgPSAweDAuOTNDNDY3RTM3REIwQzdBNEQxQkUzRjgxMDE1MkNCXG5sZXQgb2ZfaW50ID0gSW50LnRvX2Zsb2F0XG5sZXQgdG9faW50ID0gSW50Lm9mX2Zsb2F0XG5sZXQgb2ZfaW50NjMgaSA9IEludDYzLnRvX2Zsb2F0IGlcbmxldCBvZl9pbnQ2NCBpID0gQ2FtbC5JbnQ2NC50b19mbG9hdCBpXG5sZXQgdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX2Zsb2F0XG5sZXQgaXJvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5sZXQgaXJvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5cbigqIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgXCJleG5cIiByb3VuZGluZyBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBzbyB0aGV5IGFyZSB3cml0dGVuXG4gICBvdXQgc2VwYXJhdGVseSwgYW5kIHR1bmVkIGluZGl2aWR1YWxseS4gIChXZSBjb3VsZCBoYXZlIHRoZSBvcHRpb24gdmVyc2lvbnMgY2FsbFxuICAgdGhlIFwiZXhuXCIgdmVyc2lvbnMsIGJ1dCB0aGF0IGltcG9zZXMgYXJndWFibHkgZ3JhdHVpdG91cyBvdmVyaGVhZC0tLWVzcGVjaWFsbHlcbiAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBjYXB0dXJlIG9mIGJhY2t0cmFjZXMgaXMgZW5hYmxlZCB1cG9uIFwid2l0aFwiLS0tYW5kIHRoYXQgc2VlbXNcbiAgIG5vdCB3b3J0aCBpdCB3aGVuIGNvbXBhcmVkIHRvIHRoZSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBjb2RlIGR1cGxpY2F0aW9uLikgKilcblxuKCogRXJyb3IgcmVwb3J0aW5nIGJlbG93IGlzIHZlcnkgY2FyZWZ1bGx5IGFycmFuZ2VkIHNvIHRoYXQsIGUuZy4sIFtpcm91bmRfbmVhcmVzdF9leG5dXG4gICBpdHNlbGYgY2FuIGJlIGlubGluZWQgaW50byBjYWxsZXJzIHN1Y2ggdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYWxsb2NhdGUgYSBib3ggZm9yIHRoZVxuICAgW2Zsb2F0XSBhcmd1bWVudC4gIFRoaXMgaXMgZG9uZSB3aXRoIGEgYm94IFtib3hdIGZ1bmN0aW9uIGNhcmVmdWxseSBjaG9zZW4gdG8gYWxsb3cgdGhlXG4gICBjb21waWxlciB0byBjcmVhdGUgYSBzZXBhcmF0ZSBib3ggZm9yIHRoZSBmbG9hdCBvbmx5IGluIGVycm9yIGNhc2VzLiAgU2VlLCBlLmcuLFxuICAgWy4uLy4uL3plcm8vdGVzdC9wcmljZV90ZXN0Lm1sXSBmb3IgYSBtZWNoYW5pY2FsIHRlc3Qgb2YgdGhpcyBwcm9wZXJ0eSB3aGVuIGJ1aWxkaW5nXG4gICB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9dHJ1ZV0uICopXG5cbmxldCBpcm91bmRfdXAgdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX2Rvd24gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW4gaWYgdCA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KSBlbHNlIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldCBpcm91bmRfdG93YXJkc196ZXJvIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pcm91bmRfdG93YXJkc196ZXJvX2V4bjogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChib3ggdClcbiAgICAgICgpXG47O1xuXG4oKiBPdXRzaWRlIG9mIHRoZSByYW5nZSAocm91bmRfbmVhcmVzdF9sYi4ucm91bmRfbmVhcmVzdF91YiksIGFsbCByZXByZXNlbnRhYmxlIGRvdWJsZXNcbiAgIGFyZSBpbnRlZ2VycyBpbiB0aGUgbWF0aGVtYXRpY2FsIHNlbnNlLCBhbmQgW3JvdW5kX25lYXJlc3RdIHNob3VsZCBiZSBpZGVudGl0eS5cblxuICAgSG93ZXZlciwgZm9yIG9kZCBudW1iZXJzIHdpdGggdGhlIGFic29sdXRlIHZhbHVlIGJldHdlZW4gMioqNTIgYW5kIDIqKjUzLCB0aGUgZm9ybXVsYVxuICAgW3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsgMC41KV0gZG9lcyBub3QgaG9sZDpcblxuICAge3ZcbiAgICAgIyBsZXQgbmFpdmVfcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKy4gMC41KTs7XG4gICAgICMgbGV0IHggPSAyLiAqKiA1Mi4gKy4gMS47O1xuICAgICB2YWwgeCA6IGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5Ny5cbiAgICAgIyBuYWl2ZV9yb3VuZF9uZWFyZXN0IHg7O1xuICAgICAtIDogICAgIGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5OC5cbiAgIHZ9XG4qKVxuXG5sZXQgcm91bmRfbmVhcmVzdF9sYiA9IC0uKDIuICoqIDUyLilcbmxldCByb3VuZF9uZWFyZXN0X3ViID0gMi4gKiogNTIuXG5cbigqIEZvciBbeCA9IG9uZV91bHAgYERvd24gMC41XSwgdGhlIGZvcm11bGEgW2Zsb29yICh4ICsuIDAuNSldIGZvciByb3VuZGluZyB0byBuZWFyZXN0XG4gICBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlIHRoZSBleGFjdCByZXN1bHQgaXMgaGFsZndheSBiZXR3ZWVuIFtvbmVfdWxwIGBEb3duIDEuXSBhbmQgWzEuXSxcbiAgIGFuZCBpdCBnZXRzIHJvdW5kZWQgdXAgdG8gWzEuXSBkdWUgdG8gdGhlIHJvdW5kLXRpZXMtdG8tZXZlbiBydWxlLiAqKVxubGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwIGBEb3duIDAuNVxuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgPVxuICB0XG4gICsuXG4gIGlmIHQgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIHRoZW4gb25lX3VscF9sZXNzX3RoYW5faGFsZiAoKiBzaW5jZSB0IDwgMC41LCBtYWtlIHN1cmUgdGhlIHJlc3VsdCBpcyA8IDEuMCAqKVxuICBlbHNlIDAuNVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpKVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gICAgZWxzZSBOb25lXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0XzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0XzMyXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuXzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGxcIiAoYm94IHQpICgpKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfbmVhcmVzdF9leG5fNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF9leG5fMzJcbjs7XG5cbigqIFRoZSBmb2xsb3dpbmcgW2lyb3VuZF9leG5dIGFuZCBbaXJvdW5kXSBmdW5jdGlvbnMgYXJlIHNsb3dlciB0aGFuIHRoZSBvbmVzIGFib3ZlLlxuICAgVGhlaXIgZXF1aXZhbGVuY2UgdG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRlc3RlZCBpbiB0aGUgdW5pdCB0ZXN0cyBiZWxvdy4gKilcblxubGV0W0BpbmxpbmVdIGlyb3VuZF9leG4gPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYFplcm8gLT4gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdFxuICB8IGBOZWFyZXN0IC0+IGlyb3VuZF9uZWFyZXN0X2V4biB0XG4gIHwgYFVwIC0+IGlyb3VuZF91cF9leG4gdFxuICB8IGBEb3duIC0+IGlyb3VuZF9kb3duX2V4biB0XG47O1xuXG5sZXQgaXJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICB0cnkgU29tZSAoaXJvdW5kX2V4biB+ZGlyIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBpc19pbmYgdCA9IDEuIC8uIHQgPSAwLlxubGV0IGlzX2Zpbml0ZSB0ID0gdCAtLiB0ID0gMC5cblxubGV0IG1pbl9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBtYXhfaW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgYWRkID0gKCArLiApXG5sZXQgc3ViID0gKCAtLiApXG5sZXQgbmVnID0gKCB+LS4gKVxubGV0IGFicyA9IGFic19mbG9hdFxubGV0IHNjYWxlID0gKCAqLiApXG5sZXQgc3F1YXJlIHggPSB4ICouIHhcblxubW9kdWxlIFBhcnRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBmcmFjdGlvbmFsIDogdCAtPiBmbG9hdFxuICB2YWwgaW50ZWdyYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBtb2RmIDogZmxvYXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0ICogZmxvYXRcblxuICBsZXQgZnJhY3Rpb25hbCB0ID0gZnN0IHRcbiAgbGV0IGludGVncmFsIHQgPSBzbmQgdFxuICBsZXQgbW9kZiA9IG1vZGZcbmVuZFxuXG5sZXQgbW9kZiA9IFBhcnRzLm1vZGZcbmxldCByb3VuZF9kb3duID0gZmxvb3JcbmxldCByb3VuZF91cCA9IGNlaWxcbmxldCByb3VuZF90b3dhcmRzX3plcm8gdCA9IGlmIHQgPj0gMC4gdGhlbiByb3VuZF9kb3duIHQgZWxzZSByb3VuZF91cCB0XG5cbigqIHNlZSB0aGUgY29tbWVudCBhYm92ZSBbcm91bmRfbmVhcmVzdF9sYl0gYW5kIFtyb3VuZF9uZWFyZXN0X3ViXSBmb3IgYW4gZXhwbGFuYXRpb24gKilcbmxldFtAb2NhbWwuaW5saW5lXSByb3VuZF9uZWFyZXN0X2lubGluZSB0ID1cbiAgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGIgJiYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiBmbG9vciAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgZWxzZSB0ICsuIDAuXG47O1xuXG5sZXQgcm91bmRfbmVhcmVzdCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0XG5cbmxldCByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiB0ID1cbiAgaWYgdCA8PSByb3VuZF9uZWFyZXN0X2xiIHx8IHQgPj0gcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIHQgKy4gMC5cbiAgZWxzZSAoXG4gICAgbGV0IGZsb29yID0gZmxvb3IgdCBpblxuICAgICgqIFtjZWlsX29yX3N1Y2MgPSBpZiB0IGlzIGFuIGludGVnZXIgdGhlbiB0ICsuIDEuIGVsc2UgY2VpbCB0XS4gIEZhc3RlciB0aGFuIFtjZWlsXS4gKilcbiAgICBsZXQgY2VpbF9vcl9zdWNjID0gZmxvb3IgKy4gMS4gaW5cbiAgICBsZXQgZGlmZl9mbG9vciA9IHQgLS4gZmxvb3IgaW5cbiAgICBsZXQgZGlmZl9jZWlsID0gY2VpbF9vcl9zdWNjIC0uIHQgaW5cbiAgICBpZiBkaWZmX2Zsb29yIDwgZGlmZl9jZWlsXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgaWYgZGlmZl9mbG9vciA+IGRpZmZfY2VpbFxuICAgIHRoZW4gY2VpbF9vcl9zdWNjXG4gICAgZWxzZSBpZiAoKiBleGFjdCB0aWUsIHBpY2sgdGhlIGV2ZW4gKilcbiAgICAgIG1vZF9mbG9hdCBmbG9vciAyLiA9IDAuXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgY2VpbF9vcl9zdWNjKVxuOztcblxubGV0IGludDYzX3JvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcbmxldCBpbnQ2M19yb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5cbmxldCBpbnQ2M19yb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGludDYzX3JvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuIHQwID1cbiAgbGV0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHQwIGluXG4gIGlmIHQgPiAwLlxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKGJveCB0MClcbiAgICAgICAgKClcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoYm94IHQwKVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biBmID0gSW50NjMub2ZfaW50IChpcm91bmRfbmVhcmVzdF9leG4gZilcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIHwgVzMyIC0+IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG47O1xuXG5sZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCB0XG4gIHwgYERvd24gLT4gcm91bmRfZG93biB0XG4gIHwgYFVwIC0+IHJvdW5kX3VwIHRcbiAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gdFxuOztcblxubW9kdWxlIENsYXNzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbmZpbml0ZVxuICAgIHwgTmFuXG4gICAgfCBOb3JtYWxcbiAgICB8IFN1Ym5vcm1hbFxuICAgIHwgWmVyb1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgSW5maW5pdGU7IE5hbjsgTm9ybWFsOyBTdWJub3JtYWw7IFplcm8gXSA6IHQgbGlzdClcblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDA2XyA9IFwiZmxvYXQubWwuQ2xhc3MudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIC0+IEluZmluaXRlXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgLT4gTm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgLT4gU3Vibm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwN18gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSA6OiBfKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgIHwgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbmZpbml0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmZpbml0ZVwiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgfCBOb3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTm9ybWFsXCJcbiAgICAgIHwgU3Vibm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN1Ym5vcm1hbFwiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJJbmZpbml0ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlN1Ym5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuZW5kXG5cbmxldCBjbGFzc2lmeSB0ID1cbiAgbGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gIHwgRlBfbm9ybWFsIC0+IEMuTm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsIC0+IEMuU3Vibm9ybWFsXG4gIHwgRlBfemVybyAtPiBDLlplcm9cbiAgfCBGUF9pbmZpbml0ZSAtPiBDLkluZmluaXRlXG4gIHwgRlBfbmFuIC0+IEMuTmFuXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzID8oZGVsaW1pdGVyID0gJ18nKSA/KHN0cmlwX3plcm8gPSBmYWxzZSkgc3RyaW5nID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyaW5nIH5vbjonLicgd2l0aFxuICB8IE5vbmUgLT4gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgc3RyaW5nIH5kZWxpbWl0ZXJcbiAgfCBTb21lIChsZWZ0LCByaWdodCkgLT5cbiAgICBsZXQgbGVmdCA9IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIGxlZnQgfmRlbGltaXRlciBpblxuICAgIGxldCByaWdodCA9XG4gICAgICBpZiBzdHJpcF96ZXJvIHRoZW4gU3RyaW5nLnJzdHJpcCByaWdodCB+ZHJvcDooZnVuIGMgLT4gQ2hhci4oID0gKSBjICcwJykgZWxzZSByaWdodFxuICAgIGluXG4gICAgKG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgfCBcIlwiIC0+IGxlZnRcbiAgICAgfCBfIC0+IGxlZnQgXiBcIi5cIiBeIHJpZ2h0KVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gP2RlbGltaXRlciA/KGRlY2ltYWxzID0gMykgP3N0cmlwX3plcm8gPyhleHBsaWNpdF9wbHVzID0gZmFsc2UpIGYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGRlY2ltYWxzIDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJ0b19zdHJpbmdfaHVtOiBpbnZhbGlkIGFyZ3VtZW50IH5kZWNpbWFscz0lZFwiIGRlY2ltYWxzICgpO1xuICBtYXRjaCBjbGFzc2lmeSBmIHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiBmID4gMC4gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW5cIlxuICB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgcyA9XG4gICAgICBpZiBleHBsaWNpdF9wbHVzIHRoZW4gc3ByaW50ZiBcIiUrLipmXCIgZGVjaW1hbHMgZiBlbHNlIHNwcmludGYgXCIlLipmXCIgZGVjaW1hbHMgZlxuICAgIGluXG4gICAgaW5zZXJ0X3VuZGVyc2NvcmVzIHMgP2RlbGltaXRlciA/c3RyaXBfemVyb1xuOztcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgbGV0IHNleHAgPSBzZXhwX29mX3QgdCBpblxuICBtYXRjaCAhU2V4cC5vZl9mbG9hdF9zdHlsZSB3aXRoXG4gIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHNleHBcbiAgfCBgVW5kZXJzY29yZXMgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgTGlzdCBfIC0+XG4gICAgICAgcmFpc2Vfc1xuICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgXCJbc2V4cF9vZl9mbG9hdF0gcHJvZHVjZWQgc3RyYW5nZSBzZXhwXCJcbiAgICAgICAgICAgIFsgXCJzZXhwXCIsIFNleHAuc2V4cF9vZl90IHNleHAgXSlcbiAgICAgfCBBdG9tIHN0cmluZyAtPlxuICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzdHJpbmcgJ0UnIHRoZW4gc2V4cCBlbHNlIEF0b20gKGluc2VydF91bmRlcnNjb3JlcyBzdHJpbmcpKVxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCA/KHByZWZpeCA9IFwiXCIpIH5raWxvIH5tZWdhIH5naWdhIH50ZXJhID9wZXRhICgpID1cbiAgKCogUm91bmQgYSByYXRpbyB0b3dhcmQgdGhlIG5lYXJlc3QgaW50ZWdlciwgcmVzb2x2aW5nIHRpZXMgdG93YXJkIHRoZSBuZWFyZXN0IGV2ZW5cbiAgICAgbnVtYmVyLiAgRm9yIHNhbmUgaW5wdXRzIChpbiBwYXJ0aWN1bGFyLCB3aGVuIFtkZW5vbWluYXRvcl0gaXMgYW4gaW50ZWdlciBhbmRcbiAgICAgW2FicyBudW1lcmF0b3IgPCAyZTUyXSkgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgbWlnaHQgYmUgYVxuICAgICBsaXR0bGUgYml0IG9mZiwgYnV0IHdlIGRvbid0IHJlYWxseSB1c2UgdGhhdCBjYXNlLiAqKVxuICBsZXQgaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IGsgPSBmbG9vciAobnVtZXJhdG9yIC8uIGRlbm9taW5hdG9yKSBpblxuICAgICgqIGlmIFthYnMgayA8IDJlNTNdLCB0aGVuIGJvdGggW2tdIGFuZCBbayArLiAxLl0gYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGFuZCBpblxuICAgICAgIHBhcnRpY3VsYXIgW2sgKy4gMS4gPiBrXS4gIElmIFtkZW5vbWluYXRvcl0gaXMgYWxzbyBhbiBpbnRlZ2VyLCBhbmRcbiAgICAgICBbYWJzIChkZW5vbWluYXRvciAqLiAoayArLiAxKSkgPCAyZTUzXSAoYW5kIGluIHNvbWUgb3RoZXIgY2FzZXMsIHRvbyksIHRoZW4gW2xvd2VyXVxuICAgICAgIGFuZCBbaGlnaGVyXSBhcmUgYWN0dWFsbHkgYm90aCBhY2N1cmF0ZS4gIFNpbmNlIChyb3VnaGx5KVxuICAgICAgIFtudW1lcmF0b3IgPSBkZW5vbWluYXRvciAqLiBrXSB0aGVuIGZvciBbYWJzIG51bWVyYXRvciA8IDJlNTJdIHdlIHNob3VsZCBiZVxuICAgICAgIGZpbmUuICopXG4gICAgbGV0IGxvd2VyID0gZGVub21pbmF0b3IgKi4gayBpblxuICAgIGxldCBoaWdoZXIgPSBkZW5vbWluYXRvciAqLiAoayArLiAxLikgaW5cbiAgICAoKiBTdWJ0cmFjdGluZyBudW1iZXJzIHdpdGhpbiBhIGZhY3RvciBvZiB0d28gZnJvbSBlYWNoIG90aGVyIGlzIGFjY3VyYXRlLlxuICAgICAgIFNvIGVpdGhlciB0aGUgdHdvIHN1YnRyYWN0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGUsIG9yIGsgPSAwLCBvciBrID0gLTEuXG4gICAgICAgSW4gY2FzZSBvZiBhIHRpZSwgcm91bmQgdG8gZXZlbi4gKilcbiAgICBsZXQgZGlmZl9yaWdodCA9IGhpZ2hlciAtLiBudW1lcmF0b3IgaW5cbiAgICBsZXQgZGlmZl9sZWZ0ID0gbnVtZXJhdG9yIC0uIGxvd2VyIGluXG4gICAgbGV0IGsgPSBpcm91bmRfbmVhcmVzdF9leG4gayBpblxuICAgIGlmIGRpZmZfcmlnaHQgPCBkaWZmX2xlZnRcbiAgICB0aGVuIGsgKyAxXG4gICAgZWxzZSBpZiBkaWZmX3JpZ2h0ID4gZGlmZl9sZWZ0XG4gICAgdGhlbiBrXG4gICAgZWxzZSBpZiAoKiBhIHRpZSAqKVxuICAgICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoayBtb2QgMikgMFxuICAgIHRoZW4ga1xuICAgIGVsc2UgayArIDFcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgdCA8IDAuMCB0aGVuIFwiLWluZiAgXCIgZWxzZSBcImluZiAgXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW4gIFwiXG4gIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBnbyB0ID1cbiAgICAgIGxldCBjb252X29uZSB0ID1cbiAgICAgICAgYXNzZXJ0ICgwLiA8PSB0ICYmIHQgPCA5OTkuOTUpO1xuICAgICAgICBsZXQgeCA9IHByZWZpeCBeIGZvcm1hdF9mbG9hdCBcIiUuMWZcIiB0IGluXG4gICAgICAgICgqIEZpeCB0aGUgXCIuMFwiIHN1ZmZpeCAqKVxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHggfnN1ZmZpeDpcIi4wXCJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHggPSBCeXRlcy5vZl9zdHJpbmcgeCBpblxuICAgICAgICAgIGxldCBuID0gQnl0ZXMubGVuZ3RoIHggaW5cbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDEpICcgJztcbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDIpICcgJztcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOngpXG4gICAgICAgIGVsc2UgeFxuICAgICAgaW5cbiAgICAgIGxldCBjb252IG1hZyB0IGRlbm9taW5hdG9yID1cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAoZGVub21pbmF0b3IgPSAxMDAuICYmIHQgPj0gOTk5Ljk1KVxuICAgICAgICAgIHx8IChkZW5vbWluYXRvciA+PSAxMDBfMDAwLiAmJiB0ID49IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDkuOTk5XzUpKSk7XG4gICAgICAgIGFzc2VydCAodCA8IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDlfOTk5LjUpKTtcbiAgICAgICAgbGV0IGksIGQgPVxuICAgICAgICAgIGxldCBrID0gaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yOnQgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICAgKCogW21vZF0gaXMgb2theSBoZXJlIGJlY2F1c2Ugd2Uga25vdyBpID49IDAuICopXG4gICAgICAgICAgayAvIDEwLCBrIG1vZCAxMFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgICAgIGFzc2VydCAoMCA8PSBpICYmIGkgPCAxMDAwKTtcbiAgICAgICAgYXNzZXJ0ICgwIDw9IGQgJiYgZCA8IDEwKTtcbiAgICAgICAgaWYgZCA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiJXMlZCVzIFwiIHByZWZpeCBpIG1hZ1xuICAgICAgICBlbHNlIHNwcmludGYgXCIlcyVkJXMlZFwiIHByZWZpeCBpIG1hZyBkXG4gICAgICBpblxuICAgICAgKCogV2hpbGUgdGhlIHN0YW5kYXJkIG1ldHJpYyBwcmVmaXhlcyAoZS5nLiBjYXBpdGFsIFwiTVwiIHJhdGhlciB0aGFuIFwibVwiLCBbMV0pIGFyZVxuICAgICAgICAgbm9taW5hbGx5IG1vcmUgY29ycmVjdCwgdGhpcyBoaW5kZXJzIHJlYWRhYmlsaXR5IGluIG91ciBjYXNlLiAgRS5nLiwgMTBHNiBhbmRcbiAgICAgICAgIDEwNjYgbG9vayB0b28gc2ltaWxhci4gIFRoYXQncyBhbiBleHRyZW1lIGV4YW1wbGUsIGJ1dCBpbiBnZW5lcmFsIGssbSxnLHQscFxuICAgICAgICAgcHJvYmFibHkgc3RhbmQgb3V0IGJldHRlciB0aGFuIEssTSxHLFQsUCB3aGVuIGludGVyc3BlcnNlZCB3aXRoIGRpZ2l0cy5cblxuICAgICAgICAgWzFdIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0cmljX3ByZWZpeCAqKVxuICAgICAgKCogVGhlIHRyaWNrIGhlcmUgaXMgdGhhdDpcbiAgICAgICAgIC0gdGhlIGZpcnN0IGJvdW5kYXJ5ICg5OTkuOTUpIGFzIGEgZmxvYXQgaXMgc2xpZ2h0bHkgb3Zlci1yZXByZXNlbnRlZCAoc28gaXQgaXNcbiAgICAgICAgICAgYmV0dGVyIGFwcHJveGltYXRlZCBhcyBcIjFrXCIgdGhhbiBhcyBcIjk5OS45XCIpLFxuICAgICAgICAgLSB0aGUgb3RoZXIgYm91bmRhcmllcyBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYmVjYXVzZSB0aGV5IGFyZSBpbnRlZ2Vycy5cbiAgICAgICAgICAgVGhhdCdzIHdoeSB0aGUgc3RyaWN0IGVxdWFsaXRpZXMgYmVsb3cgZG8gZXhhY3RseSB3aGF0IHdlIHdhbnQuICopXG4gICAgICBpZiB0IDwgOTk5Ljk1RTBcbiAgICAgIHRoZW4gY29udl9vbmUgdFxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTNcbiAgICAgIHRoZW4gY29udiBraWxvIHQgMTAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTZcbiAgICAgIHRoZW4gY29udiBtZWdhIHQgMTAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU5XG4gICAgICB0aGVuIGNvbnYgZ2lnYSB0IDEwMF8wMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTEyXG4gICAgICB0aGVuIGNvbnYgdGVyYSB0IDEwMF8wMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBwZXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdFxuICAgICAgICB8IFNvbWUgcGV0YSAtPlxuICAgICAgICAgIGlmIHQgPCA5OTkuOTVFMTVcbiAgICAgICAgICB0aGVuIGNvbnYgcGV0YSB0IDEwMF8wMDBfMDAwXzAwMF8wMDAuXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHQpXG4gICAgaW5cbiAgICBpZiB0ID49IDAuIHRoZW4gZ28gdCBlbHNlIFwiLVwiIF4gZ28gfi0udFxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyB0ID1cbiAgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0IH5raWxvOlwia1wiIH5tZWdhOlwibVwiIH5naWdhOlwiZ1wiIH50ZXJhOlwidFwiIH5wZXRhOlwicFwiICgpXG47O1xuXG4oKiBQZXJmb3JtYW5jZSBub3RlOiBJbml0aWFsaXppbmcgdGhlIGFjY3VtdWxhdG9yIHRvIDEgcmVzdWx0cyBpbiBvbmUgZXh0cmFcbiAgIG11bHRpcGx5OyBlLmcuLCB0byBjb21wdXRlIHggKiogNCwgd2UgaW4gcHJpbmNpcGxlIG9ubHkgbmVlZCAyIG11bHRpcGxpZXMsXG4gICBidXQgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgMyBtdWx0aXBsaWVzLiAgSG93ZXZlciwgYXR0ZW1wdHMgdG8gYXZvaWQgdGhpc1xuICAgKGxpa2UgZGVjcmVtZW50aW5nIG4gYW5kIGluaXRpYWxpemluZyBhY2N1bSB0byBiZSB4LCBvciBoYW5kbGluZyBzbWFsbFxuICAgZXhwb25lbnRzIGFzIGEgc3BlY2lhbCBjYXNlKSBoYXZlIG5vdCB5aWVsZGVkIGFueXRoaW5nIHRoYXQgaXMgYSBuZXRcbiAgIGltcHJvdmVtZW50LlxuKilcbmxldCBpbnRfcG93IHggbiA9XG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAxLlxuICBlbHNlIChcbiAgICAoKiBVc2luZyBbeCArLiAoLTAuKV0gb24gdGhlIGZvbGxvd2luZyBsaW5lIGNvbnZpbmNlcyB0aGUgY29tcGlsZXIgdG8gYXZvaWQgYSBjZXJ0YWluXG4gICAgICAgYm94aW5nICh0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbGxvY2F0aW9uIGluIGVhY2ggaXRlcmF0aW9uKS4gIFNvb24sIHRoZSBjb21waWxlclxuICAgICAgIHNob3VsZG4ndCBuZWVkIHRoaXMgXCJoaW50XCIgdG8gYXZvaWQgdGhlIGJveGluZy4gIFRoZSByZWFzb24gd2UgYWRkIC0wIHJhdGhlciB0aGFuIDBcbiAgICAgICBpcyB0aGF0IFt4ICsuICgtMC4pXSBpcyBhcHBhcmVudGx5IGFsd2F5cyB0aGUgc2FtZSBhcyBbeF0sIHdoZXJlYXMgW3ggKy4gMC5dIGlzXG4gICAgICAgbm90LCBpbiB0aGF0IGl0IHNlbmRzIFstMC5dIHRvIFswLl0uICBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBiZWNhdXNlIHdlIHdhbnRcbiAgICAgICBbaW50X3BvdyAoLTAuKSAoLTEpXSB0byByZXR1cm4gbmVnX2luZmluaXR5IGp1c3QgbGlrZSBbLTAuICoqIC0xLl0gd291bGQuICAqKVxuICAgIGxldCB4ID0gcmVmICh4ICsuIC0wLikgaW5cbiAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgbGV0IGFjY3VtID0gcmVmIDEuIGluXG4gICAgaWYgIW4gPCAwXG4gICAgdGhlbiAoXG4gICAgICAoKiB4ICoqIG4gPSAoMS94KSAqKiAtbiAqKVxuICAgICAgeCA6PSAxLiAvLiAheDtcbiAgICAgIG4gOj0gfi0gKCFuKTtcbiAgICAgIGlmICFuIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIG4gbXVzdCBoYXZlIGJlZW4gbWluX2ludCwgc28gaXQgaXMgbm93IHNvIGJpZyB0aGF0IGl0IGhhcyB3cmFwcGVkIGFyb3VuZC5cbiAgICAgICAgICAgV2UgZGVjcmVtZW50IGl0IHNvIHRoYXQgaXQgbG9va3MgcG9zaXRpdmUgYWdhaW4sIGJ1dCBhY2NvcmRpbmdseSBoYXZlXG4gICAgICAgICAgIHRvIHB1dCBhbiBleHRyYSBmYWN0b3Igb2YgeCBpbiB0aGUgYWNjdW11bGF0b3IuXG4gICAgICAgICopXG4gICAgICAgIGFjY3VtIDo9ICF4O1xuICAgICAgICBkZWNyIG4pKTtcbiAgICAoKiBMZXR0aW5nIFthXSBkZW5vdGUgKHRoZSBvcmlnaW5hbCB2YWx1ZSBvZikgW3ggKiogbl0sIHdlIG1haW50YWluXG4gICAgICAgdGhlIGludmFyaWFudCB0aGF0IFsoeCAqKiBuKSAqLiBhY2N1bSA9IGFdLiAqKVxuICAgIHdoaWxlICFuID4gMSBkb1xuICAgICAgaWYgIW4gbGFuZCAxIDw+IDAgdGhlbiBhY2N1bSA6PSAheCAqLiAhYWNjdW07XG4gICAgICB4IDo9ICF4ICouICF4O1xuICAgICAgbiA6PSAhbiBsc3IgMVxuICAgIGRvbmU7XG4gICAgKCogbiBpcyBuZWNlc3NhcmlseSAxIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsXG4gICAgICAgbXVsdGlwbGljYXRpb24gYnkgeC4gKilcbiAgICAheCAqLiAhYWNjdW0pXG47O1xuXG5sZXQgcm91bmRfZ2VuIHggfmhvdyA9XG4gIGlmIHggPSAwLlxuICB0aGVuIDAuXG4gIGVsc2UgaWYgbm90IChpc19maW5pdGUgeClcbiAgdGhlbiB4XG4gIGVsc2UgKFxuICAgICgqIFNpZ25pZmljYW50IGRpZ2l0cyBhbmQgZGVjaW1hbCBkaWdpdHMuICopXG4gICAgbGV0IHNkLCBkZCA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgc2lnbmlmaWNhbnRfZGlnaXRzIHNkIC0+XG4gICAgICAgIGxldCBkZCA9IHNkIC0gdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgICAgfCBgZGVjaW1hbF9kaWdpdHMgZGQgLT5cbiAgICAgICAgbGV0IHNkID0gZGQgKyB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgc2QgPCAwXG4gICAgdGhlbiAwLlxuICAgIGVsc2UgaWYgc2QgPj0gMTdcbiAgICB0aGVuIHhcbiAgICBlbHNlIChcbiAgICAgICgqIENob29zZSB0aGUgb3JkZXIgdGhhdCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdC4gU21hbGwgcG9zaXRpdmVcbiAgICAgICAgIGludGVnZXJzIGFyZSwgYnV0IHRoZWlyIGludmVyc2VzIGluIG1vc3QgY2FzZXMgYXJlIG5vdC4gKilcbiAgICAgIGxldCBhYnNfZGQgPSBJbnQuYWJzIGRkIGluXG4gICAgICBpZiBhYnNfZGQgPiAyMiB8fCBzZCA+PSAxNlxuICAgICAgKCogMTAqKjIyIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBidXQgMTAqKjIzIGlzIG5vdCwgc28gdXNlIHRoZSBzbG93XG4gICAgICAgICBwYXRoLiAgU2ltaWxhcmx5LCBpZiB3ZSBuZWVkIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpbiB0aGUgcmVzdWx0LCB0aGVuIHRoZSBpbnRlZ2VyXG4gICAgICAgICBbcm91bmRfbmVhcmVzdCAoeCA8b3A+IG9yZGVyKV0gbWlnaHQgbm90IGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBzaW5jZVxuICAgICAgICAgZm9yIHNvbWUgcmFuZ2VzIHdlIG9ubHkgaGF2ZSAxNSBkaWdpdHMgb2YgcHJlY2lzaW9uIGd1YXJhbnRlZWQuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgd2UgYXJlIHN0aWxsIHJvdW5kaW5nIHR3aWNlIGhlcmU6XG5cbiAgICAgICAgIDEpIGZpcnN0IHRpbWUgd2hlbiByb3VuZGluZyBbeCAqLiBvcmRlcl0gb3IgW3ggLy4gb3JkZXJdIHRvIHRoZSBuZWFyZXN0IGZsb2F0XG4gICAgICAgICAoanVzdCB0aGUgbm9ybWFsIHdheSBmbG9hdGluZy1wb2ludCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiB3b3JrcyksXG5cbiAgICAgICAgIDIpIHNlY29uZCB0aW1lIHdoZW4gYXBwbHlpbmcgW3JvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuXSB0byB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgYWJvdmUgb3BlcmF0aW9uXG5cbiAgICAgICAgIFNvIGZvciBhcmd1bWVudHMgd2l0aGluIGFuIHVscCBmcm9tIGEgdGllIHdlIG1pZ2h0IHN0aWxsIHByb2R1Y2UgYW4gb2ZmLWJ5LW9uZVxuICAgICAgICAgcmVzdWx0LiAqKVxuICAgICAgdGhlbiBvZl9zdHJpbmcgKHNwcmludGYgXCIlLipnXCIgc2QgeClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3JkZXIgPSBpbnRfcG93IDEwLiBhYnNfZGQgaW5cbiAgICAgICAgaWYgZGQgPj0gMFxuICAgICAgICB0aGVuIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4ICouIG9yZGVyKSAvLiBvcmRlclxuICAgICAgICBlbHNlIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4IC8uIG9yZGVyKSAqLiBvcmRlcikpKVxuOztcblxubGV0IHJvdW5kX3NpZ25pZmljYW50IHggfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIHNpZ25pZmljYW50X2RpZ2l0cyAwXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQucm91bmRfc2lnbmlmaWNhbnQ6IGludmFsaWQgYXJndW1lbnQgc2lnbmlmaWNhbnRfZGlnaXRzOiVkXCJcbiAgICAgIHNpZ25pZmljYW50X2RpZ2l0c1xuICAgICAgKClcbiAgZWxzZSByb3VuZF9nZW4geCB+aG93Oihgc2lnbmlmaWNhbnRfZGlnaXRzIHNpZ25pZmljYW50X2RpZ2l0cylcbjs7XG5cbmxldCByb3VuZF9kZWNpbWFsIHggfmRlY2ltYWxfZGlnaXRzID0gcm91bmRfZ2VuIHggfmhvdzooYGRlY2ltYWxfZGlnaXRzIGRlY2ltYWxfZGlnaXRzKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAoKiBjbGFtcF91bmNoZWNrZWQgaXMgaW4gZmxvYXQwLm1sICopXG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgaWYgbWluIDw9IG1heFxuICB0aGVuIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG47O1xuXG5sZXQgKCArICkgPSAoICsuIClcbmxldCAoIC0gKSA9ICggLS4gKVxubGV0ICggKiApID0gKCAqLiApXG5sZXQgKCAqKiApID0gKCAqKiApXG5sZXQgKCAvICkgPSAoIC8uIClcbmxldCAoICUgKSA9ICggJS4gKVxubGV0ICggfi0gKSA9ICggfi0uIClcblxubGV0IHNpZ25fZXhuIHQgOiBTaWduLnQgPVxuICBpZiB0ID4gMC5cbiAgdGhlbiBQb3NcbiAgZWxzZSBpZiB0IDwgMC5cbiAgdGhlbiBOZWdcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiBaZXJvXG4gIGVsc2UgRXJyb3IucmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiRmxvYXQuc2lnbl9leG4gb2YgTkFOXCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IHNpZ25fb3JfbmFuIHQgOiBTaWduX29yX25hbi50ID1cbiAgaWYgdCA+IDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8IDAuIHRoZW4gTmVnIGVsc2UgaWYgdCA9IDAuIHRoZW4gWmVybyBlbHNlIE5hblxuOztcblxubGV0IGllZWVfbmVnYXRpdmUgdCA9XG4gIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgUG9seS4oYml0cyA8IENhbWwuSW50NjQuemVybylcbjs7XG5cbmxldCBleHBvbmVudF9iaXRzID0gMTFcbmxldCBtYW50aXNzYV9iaXRzID0gNTJcbmxldCBleHBvbmVudF9tYXNrNjQgPSBJbnQ2NC4oc2hpZnRfbGVmdCBvbmUgZXhwb25lbnRfYml0cyAtIG9uZSlcbmxldCBleHBvbmVudF9tYXNrID0gSW50NjQudG9faW50X2V4biBleHBvbmVudF9tYXNrNjRcbmxldCBtYW50aXNzYV9tYXNrID0gSW50NjMuKHNoaWZ0X2xlZnQgb25lIG1hbnRpc3NhX2JpdHMgLSBvbmUpXG5sZXQgbWFudGlzc2FfbWFzazY0ID0gSW50NjMudG9faW50NjQgbWFudGlzc2FfbWFza1xuXG5sZXQgaWVlZV9leHBvbmVudCB0ID1cbiAgbGV0IGJpdHMgPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2NC4oYml0X2FuZCAoc2hpZnRfcmlnaHRfbG9naWNhbCBiaXRzIG1hbnRpc3NhX2JpdHMpIGV4cG9uZW50X21hc2s2NClcbiAgfD4gQ2FtbC5JbnQ2NC50b19pbnRcbjs7XG5cbmxldCBpZWVlX21hbnRpc3NhIHQgPVxuICBsZXQgYml0cyA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIEludDYzLm9mX2ludDY0X2V4biBDYW1sLkludDY0Lihsb2dhbmQgYml0cyBtYW50aXNzYV9tYXNrNjQpXG47O1xuXG5sZXQgY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgaWYgSW50LihiaXRfYW5kIGV4cG9uZW50IGV4cG9uZW50X21hc2sgPD4gZXhwb25lbnQpXG4gIHRoZW4gZmFpbHdpdGhmIFwiZXhwb25lbnQgJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBleHBvbmVudCBleHBvbmVudF9tYXNrICgpXG4gIGVsc2UgaWYgSW50NjMuKGJpdF9hbmQgbWFudGlzc2EgbWFudGlzc2FfbWFzayA8PiBtYW50aXNzYSlcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCJtYW50aXNzYSAlcyBvdXQgb2YgcmFuZ2UgWzAsICVzXVwiXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhKVxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYV9tYXNrKVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHNpZ25fYml0cyA9IGlmIG5lZ2F0aXZlIHRoZW4gQ2FtbC5JbnQ2NC5taW5faW50IGVsc2UgQ2FtbC5JbnQ2NC56ZXJvIGluXG4gICAgbGV0IGV4cHRfYml0cyA9IENhbWwuSW50NjQuc2hpZnRfbGVmdCAoQ2FtbC5JbnQ2NC5vZl9pbnQgZXhwb25lbnQpIG1hbnRpc3NhX2JpdHMgaW5cbiAgICBsZXQgbWFudF9iaXRzID0gSW50NjMudG9faW50NjQgbWFudGlzc2EgaW5cbiAgICBsZXQgYml0cyA9IENhbWwuSW50NjQuKGxvZ29yIHNpZ25fYml0cyAobG9nb3IgZXhwdF9iaXRzIG1hbnRfYml0cykpIGluXG4gICAgQ2FtbC5JbnQ2NC5mbG9hdF9vZl9iaXRzIGJpdHMpXG47O1xuXG5sZXQgY3JlYXRlX2llZWUgfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSlcbjs7XG5cbm1vZHVsZSBUZXJzZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRvX3N0cmluZyB4ID0gUHJpbnRmLnNwcmludGYgXCIlLjhHXCIgeFxuICBsZXQgc2V4cF9vZl90IHggPSBTZXhwLkF0b20gKHRvX3N0cmluZyB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9zdHJpbmcgeFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogVGhlc2UgYXJlIHBhcnRseSBoZXJlIGFzIGEgcGVyZm9ybWFuY2UgaGFjayB0byBhdm9pZCBzb21lIGJveGluZyB3ZSdyZSBnZXR0aW5nIHdpdGhcbiAgIHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXS4gIFRoZXkgYWxzbyBtYWtlIFtGbG9hdC5pc19uZWdhdGl2ZSBuYW5dIGFuZFxuICAgW0Zsb2F0LmlzX25vbl9wb3NpdGl2ZSBuYW5dIHJldHVybiBbZmFsc2VdOyB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10gcmV0dXJuXG4gICBbdHJ1ZV0uICopXG5sZXQgaXNfcG9zaXRpdmUgdCA9IHQgPiAwLlxubGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gdCA+PSAwLlxubGV0IGlzX25lZ2F0aXZlIHQgPSB0IDwgMC5cbmxldCBpc19ub25fcG9zaXRpdmUgdCA9IHQgPD0gMC5cblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRmxvYXRcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCAlICkgPSAoICUgKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludCA9IG9mX2ludFxuICBsZXQgb2ZfZmxvYXQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgT19kb3QgPSBzdHJ1Y3RcbiAgbGV0ICggKi4gKSA9ICggKiApXG4gIGxldCAoICsuICkgPSAoICsgKVxuICBsZXQgKCAtLiApID0gKCAtIClcbiAgbGV0ICggLy4gKSA9ICggLyApXG4gIGxldCAoICUuICkgPSAoICUgKVxuICBsZXQgKCB+LS4gKSA9ICggfi0gKVxuICBsZXQgKCAqKi4gKSA9ICggKiogKVxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBib3ggPSBib3hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCA9IGNsYW1wX3VuY2hlY2tlZFxuICBsZXQgbG93ZXJfYm91bmRfZm9yX2ludCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgPSB1cHBlcl9ib3VuZF9mb3JfaW50XG4gIGxldCBzcGVjaWFsaXplZF9oYXNoID0gaGFzaF9mbG9hdFxuICBsZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgbGV0IGlyb3VuZF9uZWFyZXN0X2V4bl82NCA9IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuKCogVGhlc2UgZnVuY3Rpb25zIHNwZWNpZmljYWxseSByZXBsYWNlIGRlZmF1bHRzIGluIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5cblxuICAgVGhlIGRlc2lyZWQgYmVoYXZpb3IgaGVyZSBpcyB0byBwcm9wYWdhdGUgYSBuYW4gaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbi4gQmVjYXVzZSB0aGVcbiAgIGZpcnN0IGNvbXBhcmlzb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4sIGl0IHN1ZmZpY2VzIHRvXG4gICBjaGVjayBpZiB4IGlzIG5hbi4gVGhlbiwgd2hlbiB4IGlzIG5hbiBvciBib3RoIHggYW5kIHkgYXJlIG5hbiwgd2UgcmV0dXJuIHggPSBuYW47IGFuZFxuICAgd2hlbiB5IGlzIG5hbiBidXQgbm90IHgsIHdlIHJldHVybiB5ID0gbmFuLlxuXG4gICBUaGVyZSBhcmUgdmFyaW91cyB3YXlzIHRvIGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMuICBUaGUgYmVuY2htYXJrIGJlbG93IHNob3dzIGEgZmV3XG4gICBkaWZmZXJlbnQgdmVyc2lvbnMuICBUaGlzIGJlbmNobWFyayB3YXMgcnVuIG92ZXIgYW4gYXJyYXkgb2YgcmFuZG9tIGZsb2F0cyAobm9uZSBvZlxuICAgd2hpY2ggYXJlIG5hbikuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjQydXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAyLjAydXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjg4dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcblxuICAgVGhlIGJlbmNobWFyayBiZWxvdyB3YXMgcnVuIHdoZW4geCA+IHkgaXMgYWx3YXlzIHRydWUgKGFnYWluLCBubyBuYW4gdmFsdWVzKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuODN1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuOTd1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuNTZ1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuKilcbmxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxubGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQnVmZmVyX2ludGZcbmluY2x1ZGUgQ2FtbC5CdWZmZXJcblxubGV0IGNvbnRlbnRzX2J5dGVzID0gdG9fYnl0ZXNcbmxldCBhZGRfc3Vic3RyaW5nIHQgcyB+cG9zIH5sZW4gPSBhZGRfc3Vic3RyaW5nIHQgcyBwb3MgbGVuXG5sZXQgYWRkX3N1YmJ5dGVzIHQgcyB+cG9zIH5sZW4gPSBhZGRfc3ViYnl0ZXMgdCBzIHBvcyBsZW5cbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2Zfc3RyaW5nIChjb250ZW50cyB0KVxuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJ5dGVzLnRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBDYW1sLkJ1ZmZlci5ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuICAgICAgOztcbiAgICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChDYW1sLkJ1ZmZlcikgKFRvX2J5dGVzKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VcblxubGV0IGVsaWRlID0gcmVmIGZhbHNlXG5sZXQgZWxpZGVkX21lc3NhZ2UgPSBcIjxiYWNrdHJhY2UgZWxpZGVkIGluIHRlc3Q+XCJcblxubGV0IGdldCA/KGF0X21vc3RfbnVtX2ZyYW1lcyA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgQ2FtbC5QcmludGV4Yy5nZXRfY2FsbHN0YWNrIGF0X21vc3RfbnVtX2ZyYW1lc1xuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgaWYgIWVsaWRlIHRoZW4gZWxpZGVkX21lc3NhZ2UgZWxzZSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHRcbjs7XG5cbmxldCB0b19zdHJpbmdfbGlzdCB0ID0gU3RyaW5nLnNwbGl0X2xpbmVzICh0b19zdHJpbmcgdClcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuTGlzdCAoTGlzdC5tYXAgKHRvX3N0cmluZ19saXN0IHQpIH5mOihmdW4geCAtPiBTZXhwLkF0b20geCkpXG5cbm1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgbGV0IHNldF9yZWNvcmRpbmcgPSBDYW1sLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbiAgbGV0IGFtX3JlY29yZGluZyA9IENhbWwuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuICBsZXQgbW9zdF9yZWNlbnQgKCkgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpXG5cbiAgbGV0IG1vc3RfcmVjZW50X2Zvcl9leG4gZXhuID1cbiAgICBpZiBFeG4uaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG4gdGhlbiBTb21lIChtb3N0X3JlY2VudCAoKSkgZWxzZSBOb25lXG4gIDs7XG5cbiAgKCogV2UgdHVybiBvbiBiYWNrdHJhY2VzIGJ5IGRlZmF1bHQgaWYgT0NBTUxSVU5QQVJBTSBkb2Vzbid0IGV4cGxpY2l0bHkgbWVudGlvbiB0aGVtLiAqKVxuICBsZXQgbWF5YmVfc2V0X3JlY29yZGluZyAoKSA9XG4gICAgbGV0IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyA9XG4gICAgICBtYXRjaCBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIHggLT4gTGlzdC5leGlzdHMgKFN0cmluZy5zcGxpdCB4IH5vbjonLCcpIH5mOihTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCJiXCIpXG4gICAgaW5cbiAgICBpZiBub3Qgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzIHRoZW4gc2V0X3JlY29yZGluZyB0cnVlXG4gIDs7XG5cbiAgKCogdGhlIGNhbGxlciBzZXQgc29tZXRoaW5nLCB0aGV5IGFyZSByZXNwb25zaWJsZSAqKVxuXG4gIGxldCB3aXRoX3JlY29yZGluZyBiIH5mID1cbiAgICBsZXQgc2F2ZWQgPSBhbV9yZWNvcmRpbmcgKCkgaW5cbiAgICBzZXRfcmVjb3JkaW5nIGI7XG4gICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBzZXRfcmVjb3JkaW5nIHNhdmVkKVxuICA7O1xuZW5kXG5cbmxldCBpbml0aWFsaXplX21vZHVsZSAoKSA9IEV4bi5tYXliZV9zZXRfcmVjb3JkaW5nICgpXG4iLCIoKiogVGhpcyBtb2R1bGUgaXMgdGhlIHRvcGxldmVsIG9mIHRoZSBCYXNlIGxpYnJhcnk7IGl0J3Mgd2hhdCB5b3UgZ2V0IHdoZW4geW91IHdyaXRlXG4gICAgW29wZW4gQmFzZV0uXG5cbiAgICBUaGUgZ29hbCBvZiBCYXNlIGlzIGJvdGggdG8gYmUgYSBtb3JlIGNvbXBsZXRlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggcmljaGVyIEFQSXMsXG4gICAgYW5kIHRvIGJlIG1vcmUgY29uc2lzdGVudCBpbiBpdHMgZGVzaWduLiBGb3IgaW5zdGFuY2UsIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5XG4gICAgc29tZSB0aGluZ3MgaGF2ZSBtb2R1bGVzIGFuZCBvdGhlcnMgZG9uJ3Q7IGluIEJhc2UsIGV2ZXJ5dGhpbmcgaXMgYSBtb2R1bGUuXG5cbiAgICBCYXNlIGV4dGVuZHMgc29tZSBtb2R1bGVzIGFuZCBkYXRhIHN0cnVjdHVyZXMgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSwgbGlrZSBbQXJyYXldLFxuICAgIFtCdWZmZXJdLCBbQnl0ZXNdLCBbQ2hhcl0sIFtIYXNodGJsXSwgW0ludDMyXSwgW0ludDY0XSwgW0xhenldLCBbTGlzdF0sIFtNYXBdLFxuICAgIFtOYXRpdmVpbnRdLCBbUHJpbnRmXSwgW1JhbmRvbV0sIFtTZXRdLCBbU3RyaW5nXSwgW1N5c10sIGFuZCBbVWNoYXJdLiBPbmUga2V5XG4gICAgZGlmZmVyZW5jZSBpcyB0aGF0IEJhc2UgZG9lc24ndCB1c2UgZXhjZXB0aW9ucyBhcyBtdWNoIGFzIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGFuZFxuICAgIGluc3RlYWQgbWFrZXMgaGVhdnkgdXNlIG9mIHRoZSBbUmVzdWx0XSB0eXBlLCBhcyBpbjpcblxuICAgIHtbIHR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiIF19XG5cbiAgICBCYXNlIGFsc28gYWRkcyBlbnRpcmVseSBuZXcgbW9kdWxlcywgbW9zdCBub3RhYmx5OlxuXG4gICAgLSBbQ29tcGFyYWJsZV0sIFtDb21wYXJhdG9yXSwgYW5kIFtDb21wYXJpc29uc10gaW4gbGlldSBvZiBwb2x5bW9ycGhpYyBjb21wYXJlLlxuICAgIC0gW0NvbnRhaW5lcl0sIHdoaWNoIHByb3ZpZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgYWNyb3NzIGNvbnRhaW5lci1saWtlIGRhdGFcbiAgICAgIHN0cnVjdHVyZXMgKGFycmF5cywgbGlzdHMsIHN0cmluZ3MpLlxuICAgIC0gW1Jlc3VsdF0sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdLCBzdXBwb3J0aW5nIHRoZSBvci1lcnJvciBwYXR0ZXJuLlxuKilcblxuKCpfIFdlIGhpZGUgdGhpcyBmcm9tIHRoZSB3ZWIgZG9jcyBiZWNhdXNlIHRoZSBsaW5lIHdyYXBwaW5nIGlzIGJhZCwgbWFraW5nIGl0XG4gIHByZXR0eSBtdWNoIGluc2NydXRhYmxlLiAqKVxuKCoqLyoqKVxuXG4oKiBUaGUgaW50ZW50IGlzIHRvIHNoYWRvdyBhbGwgb2YgSU5SSUEncyBzdGFuZGFyZCBsaWJyYXJ5LiAgTW9kdWxlcyBiZWxvdyB3b3VsZCBjYXVzZVxuICAgY29tcGlsYXRpb24gZXJyb3JzIHdpdGhvdXQgYmVpbmcgcmVtb3ZlZCBmcm9tIFtTaGFkb3dfc3RkbGliXSBiZWZvcmUgaW5jbHVzaW9uLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICAoKiBNb2R1bGVzIGRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbl9jaGFubmVsIDo9IFNoYWRvd19zdGRsaWIuSW5fY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIE91dF9jaGFubmVsIDo9IFNoYWRvd19zdGRsaWIuT3V0X2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgUHJpbnRmIDo9IFNoYWRvd19zdGRsaWIuUHJpbnRmXG4gIHdpdGggbW9kdWxlIFF1ZXVlIDo9IFNoYWRvd19zdGRsaWIuUXVldWVcbiAgd2l0aCBtb2R1bGUgUmFuZG9tIDo9IFNoYWRvd19zdGRsaWIuUmFuZG9tXG4gIHdpdGggbW9kdWxlIFJlc3VsdCA6PSBTaGFkb3dfc3RkbGliLlJlc3VsdFxuICB3aXRoIG1vZHVsZSBTZXQgOj0gU2hhZG93X3N0ZGxpYi5TZXRcbiAgd2l0aCBtb2R1bGUgU3RhY2sgOj0gU2hhZG93X3N0ZGxpYi5TdGFja1xuICB3aXRoIG1vZHVsZSBTdHJpbmcgOj0gU2hhZG93X3N0ZGxpYi5TdHJpbmdcbiAgd2l0aCBtb2R1bGUgU3lzIDo9IFNoYWRvd19zdGRsaWIuU3lzXG4gIHdpdGggbW9kdWxlIFVjaGFyIDo9IFNoYWRvd19zdGRsaWIuVWNoYXJcbiAgd2l0aCBtb2R1bGUgVW5pdCA6PSBTaGFkb3dfc3RkbGliLlVuaXRcbiAgKCogU3VwcG9ydCBmb3IgZ2VuZXJhdGVkIGxleGVycyAqKVxuICB3aXRoIG1vZHVsZSBMZXhpbmcgOj0gU2hhZG93X3N0ZGxpYi5MZXhpbmdcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWYpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbigqKi8qKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5tb2R1bGUgQ2hhciA9IENoYXJcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIEVpdGhlciA9IEVpdGhlclxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gRXhuXG5tb2R1bGUgRmllbGQgPSBGaWVsZFxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2hlciA9IEhhc2hlclxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmRcbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm90aGluZyA9IE5vdGhpbmdcbm1vZHVsZSBPcHRpb24gPSBPcHRpb25cbm1vZHVsZSBPcHRpb25fYXJyYXkgPSBPcHRpb25fYXJyYXlcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgUG9seSA9IFBvbHlcbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlID0gUG9seSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTFdIHVzZSBbUG9seV0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgUG9wY291bnQgPSBQb3Bjb3VudFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gdGhlIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tID0gUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IFN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gU3lzXG5tb2R1bGUgVCA9IFRcbm1vZHVsZSBUeXBlX2VxdWFsID0gVHlwZV9lcXVhbFxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVY2hhciA9IFVjaGFyXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXaXRoX3JldHVybiA9IFdpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gV29yZF9zaXplXG5cbigqIEF2b2lkIGEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gZm9yIHVzZXMgb2YgdGhlIHNpZ25hdHVyZXMgZGVmaW5lZCBpbiBbVF0uICopXG5pbmNsdWRlIFRcblxuKCogVGhpcyBpcyBhIGhhY2sgc28gdGhhdCBvZG9jIGNyZWF0ZXMgYmV0dGVyIGRvY3VtZW50YXRpb24uICopXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBfd2l0aF9jb21wYXJhYmxlICgqKiBAaW5saW5lICopXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpZWxkc2xpYiA9IEZpZWxkc2xpYlxuICBtb2R1bGUgUHB4X2hhc2hfbGliID0gUHB4X2hhc2hfbGliXG4gIG1vZHVsZSBWYXJpYW50c2xpYiA9IFZhcmlhbnRzbGliXG4gIG1vZHVsZSBQcHhfY29tcGFyZV9saWIgPSBQcHhfY29tcGFyZV9saWJcbiAgbW9kdWxlIFBweF9lbnVtZXJhdGVfbGliID0gUHB4X2VudW1lcmF0ZV9saWJcblxuICBsZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmdcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0gYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZSBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBpbnQgPSBBcnJheS5jb21wYXJlXG4gIGxldCBlcXVhbF9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gYm9vbCA9IEFycmF5LmVxdWFsXG5cbiAgbGV0IGFycmF5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGFycmF5ID1cbiAgICBBcnJheS50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9hcnJheSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIEFycmF5LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAoYXJyYXlfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGFycmF5IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBBcnJheS50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYm9vbCA9IChCb29sLmNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50KVxuICBsZXQgZXF1YWxfYm9vbCA9IChCb29sLmVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfYm9vbCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEJvb2wuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfYm9vbCA6IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEJvb2wuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBib29sX29mX3NleHAgPSAoQm9vbC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYm9vbClcbiAgbGV0IHNleHBfb2ZfYm9vbCA9IChCb29sLnNleHBfb2ZfdCA6IGJvb2wgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCb29sLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfY2hhciA9IChDaGFyLmNvbXBhcmUgOiBjaGFyIC0+IGNoYXIgLT4gaW50KVxuICBsZXQgZXF1YWxfY2hhciA9IChDaGFyLmVxdWFsIDogY2hhciAtPiBjaGFyIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfY2hhciA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIENoYXIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfY2hhciA6IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IENoYXIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBjaGFyX29mX3NleHAgPSAoQ2hhci50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gY2hhcilcbiAgbGV0IHNleHBfb2ZfY2hhciA9IChDaGFyLnNleHBfb2ZfdCA6IGNoYXIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBDaGFyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGV4biA9IEV4bi50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX2V4biA9IChFeG4uc2V4cF9vZl90IDogZXhuIC0+IFNleHBsaWIwLlNleHAudClcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Zsb2F0ID0gKEZsb2F0LmNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG4gIGxldCBlcXVhbF9mbG9hdCA9IChGbG9hdC5lcXVhbCA6IGZsb2F0IC0+IGZsb2F0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfZmxvYXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgRmxvYXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gRmxvYXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBmbG9hdF9vZl9zZXhwID0gKEZsb2F0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBmbG9hdClcbiAgbGV0IHNleHBfb2ZfZmxvYXQgPSAoRmxvYXQuc2V4cF9vZl90IDogZmxvYXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludCA9IEludC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludCA9IChJbnQuY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50ID0gKEludC5lcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIEludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQgOiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludF9vZl9zZXhwID0gKEludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50KVxuICBsZXQgc2V4cF9vZl9pbnQgPSAoSW50LnNleHBfb2ZfdCA6IGludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDMyID0gKEludDMyLmNvbXBhcmUgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQzMiA9IChJbnQzMi5lcXVhbCA6IGludDMyIC0+IGludDMyIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50MzIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50MzIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50MzIgOiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50MzIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQzMl9vZl9zZXhwID0gKEludDMyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQzMilcbiAgbGV0IHNleHBfb2ZfaW50MzIgPSAoSW50MzIuc2V4cF9vZl90IDogaW50MzIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDMyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQ2NCA9IChJbnQ2NC5jb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50NjQgPSAoSW50NjQuZXF1YWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2ludDY0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDY0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDY0IDogaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDY0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50NjRfb2Zfc2V4cCA9IChJbnQ2NC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50NjQpXG4gIGxldCBzZXhwX29mX2ludDY0ID0gKEludDY0LnNleHBfb2ZfdCA6IGludDY0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQ2NC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGludCA9IExpc3QuY29tcGFyZVxuICBsZXQgZXF1YWxfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGJvb2wgPSBMaXN0LmVxdWFsXG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBsaXN0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIExpc3QuaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgbGlzdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBsaXN0ID1cbiAgICBMaXN0LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2xpc3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgbGlzdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIExpc3Quc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChsaXN0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGxpc3QgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBMaXN0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5jb21wYXJlIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmVxdWFsIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX25hdGl2ZWludCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gTmF0aXZlaW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X29mX3NleHAgPSAoTmF0aXZlaW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBuYXRpdmVpbnQpXG4gIGxldCBzZXhwX29mX25hdGl2ZWludCA9IChOYXRpdmVpbnQuc2V4cF9vZl90IDogbmF0aXZlaW50IC0+IFNleHBsaWIwLlNleHAudClcblxuICBsZXQgKG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBOYXRpdmVpbnQudF9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gaW50ID1cbiAgICBPcHRpb24uY29tcGFyZVxuICA7O1xuXG4gIGxldCBlcXVhbF9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gYm9vbCA9XG4gICAgT3B0aW9uLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIG9wdGlvblxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBPcHRpb24uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgb3B0aW9uX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIG9wdGlvbiA9XG4gICAgT3B0aW9uLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX29wdGlvbiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBvcHRpb24gLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBPcHRpb24uc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChvcHRpb25fc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIG9wdGlvbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gT3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gaW50ID0gUmVmLmNvbXBhcmVcbiAgbGV0IGVxdWFsX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBib29sID0gUmVmLmVxdWFsXG5cbiAgbGV0IHJlZl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSByZWYgPVxuICAgIFJlZi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9yZWYgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgcmVmIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgUmVmLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAocmVmX3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHJlZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlZi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3N0cmluZyA9IChTdHJpbmcuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICBsZXQgZXF1YWxfc3RyaW5nID0gKFN0cmluZy5lcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9zdHJpbmcgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFN0cmluZy5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9zdHJpbmcgOiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFN0cmluZy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHN0cmluZ19vZl9zZXhwID0gKFN0cmluZy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gc3RyaW5nKVxuICBsZXQgc2V4cF9vZl9zdHJpbmcgPSAoU3RyaW5nLnNleHBfb2ZfdCA6IHN0cmluZyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgYnl0ZXMgPSBCeXRlcy50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2J5dGVzID0gKEJ5dGVzLmNvbXBhcmUgOiBieXRlcyAtPiBieXRlcyAtPiBpbnQpXG4gIGxldCBlcXVhbF9ieXRlcyA9IChCeXRlcy5lcXVhbCA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGJvb2wpXG4gIGxldCBieXRlc19vZl9zZXhwID0gKEJ5dGVzLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBieXRlcylcbiAgbGV0IHNleHBfb2ZfYnl0ZXMgPSAoQnl0ZXMuc2V4cF9vZl90IDogYnl0ZXMgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJ5dGVzLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfdW5pdCA9IChVbml0LmNvbXBhcmUgOiB1bml0IC0+IHVuaXQgLT4gaW50KVxuICBsZXQgZXF1YWxfdW5pdCA9IChVbml0LmVxdWFsIDogdW5pdCAtPiB1bml0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdW5pdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFVuaXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfdW5pdCA6IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFVuaXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB1bml0X29mX3NleHAgPSAoVW5pdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdW5pdClcbiAgbGV0IHNleHBfb2ZfdW5pdCA9IChVbml0LnNleHBfb2ZfdCA6IHVuaXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBVbml0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICAoKiogRm9ybWF0IHN0dWZmICopXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcblxuICAoKiogTGlzdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIExpc3QuSW5maXhcblxuICAoKiogSW50IG9wZXJhdG9ycyBhbmQgY29tcGFyaXNvbnMgKilcblxuICBpbmNsdWRlIEludC5PXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICgqKiBGbG9hdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIEZsb2F0Lk9fZG90XG5cbiAgKCogVGhpcyBpcyBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBiZSBvcHRpbWl6ZWQgYXdheSBpbiBtb3JlIGNvbnRleHRzLiAqKVxuXG4gICgqKiBSZXZlcnNlIGFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbeCB8PiBnIHw+IGZdIGlzIGVxdWl2YWxlbnQgdG8gW2YgKGcgKHgpKV0uICopXG4gIGV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbiAgKCoqIEFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbZyBAQCBmIEBAIHhdIGlzIGVxdWl2YWxlbnQgdG8gW2cgKGYgKHgpKV0uICopXG4gIGV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbiAgKCoqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG4gICgqIFRoZXNlIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gZ2V0IHRoZSBsYXp5IGJlaGF2aW9yICopXG4gIGV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIGV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbiAgKCogVGhpcyBtdXN0IGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseS4gKilcbiAgZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuICAoKiogQ29tbW9uIHN0cmluZyBvcGVyYXRpb25zICopXG4gIGxldCAoIF4gKSA9IFN0cmluZy4oIF4gKVxuXG4gICgqKiBSZWZlcmVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4gICgqIERlY2xhcmVkIGFzIGFuIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZSBhbmRcbiAgICAgdG8ga2VlcCByZWZlcmVuY2UgdW5ib3hpbmcgd29ya2luZyAqKVxuICBleHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbiAgZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG4gICgqKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuICBsZXQgZnN0ID0gZnN0XG4gIGxldCBzbmQgPSBzbmRcblxuICAoKiogRXhjZXB0aW9ucyBzdHVmZiAqKVxuXG4gICgqIERlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHNvIHRoYXQgdGhlIGNvbXBpbGVyIG1heSByZXdyaXRlICclcmFpc2UnIGFzICclcmVyYWlzZScuICopXG4gIGV4dGVybmFsIHJhaXNlIDogZXhuIC0+IF8gPSBcIiVyYWlzZVwiXG5cbiAgbGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbiAgbGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgKCoqIE1pc2MgKilcblxuICBsZXQgcGh5c19lcXVhbCA9IHBoeXNfZXF1YWxcblxuICBleHRlcm5hbCBmb3JjZSA6ICdhIExhenkudCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbmluY2x1ZGUgQ29udGFpbmVyX2ludGYuRXhwb3J0ICgqKiBAaW5saW5lICopXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IE5vdF9mb3VuZF9zXG5cbigqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgIFtCYXNlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQmFzZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgdGhlbiB0aGUgc2lkZSBlZmZlY3RzIG1pZ2h0IG5vdCBiZSBydW4gaW4gdGhhdCBwcm9ncmFtLiAgVGhpcyB3aWxsIHJ1biBhcyBsb25nIGFzIHRoZVxuICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIFtCYXNlXTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgW0Jhc2UuQm9vbF0sIGZvciBleGFtcGxlLCBpcyBub3Qgc3VmZmljaWVudC4gKilcbmxldCAoKSA9IEJhY2t0cmFjZS5pbml0aWFsaXplX21vZHVsZSAoKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9jYXRpb25cblxubGV0IHNldF9pbnB1dF9uYW1lIG5hbWUgPSBpbnB1dF9uYW1lIDo9IG5hbWVcbmxldCBzZXRfaW5wdXRfbGV4YnVmIGxleGJ1Zl9vcHQgPSBpbnB1dF9sZXhidWYgOj0gbGV4YnVmX29wdFxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItMzdcIl1cblxuICB0eXBlIG9sZF90ICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSA9IHtcbiAgICBsb2M6IHQ7XG4gICAgbXNnOiBzdHJpbmc7XG4gICAgc3ViOiBvbGRfdCBsaXN0O1xuICAgIGlmX2hpZ2hsaWdodDogc3RyaW5nO1xuICB9XG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnRfa2luZCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnRfa2luZCAqKSA9XG4gIHwgUmVwb3J0X2Vycm9yXG4gIHwgUmVwb3J0X3dhcm5pbmcgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X3dhcm5pbmdfYXNfZXJyb3Igb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0IG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydF9hc19lcnJvciBvZiBzdHJpbmdcblxuICB0eXBlIGxvY2F0aW9uX21zZyA9XG4gICAgKCpJRl9BVF9MRUFTVCA1MDMgT2NhbWxfY29tbW9uLkZvcm1hdF9kb2MudCBsb2MgKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA1MDMgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkgbG9jICopXG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0ICopID0ge1xuICAgIGtpbmQgOiBsb2NhdGlvbl9yZXBvcnRfa2luZDtcbiAgICBtYWluIDogbG9jYXRpb25fbXNnO1xuICAgIHN1YiA6IGxvY2F0aW9uX21zZyBsaXN0O1xuICAgICgqSUZfQVRfTEVBU1QgNTAzIGZvb3Rub3RlOiBGb3JtYXRfZG9jLnQgb3B0aW9uOyAqKVxuICB9XG5cbiAgdHlwZSB0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IG9sZF90ICopXG4gICgqKiBPbiBvY2FtbCA+PSA0LjA4OiBbdF0gaXMgYSBbbG9jYXRpb25fcmVwb3J0XSBmb3Igd2hpY2ggW2xvY2F0aW9uX3JlcG9ydF9raW5kXSBtdXN0IGJlIFtSZXBvcnRfZXJyb3JdLiAqKVxuXG4gIHR5cGUgdmVyc2lvbl9zcGVjaWZpY190ID0gW2BOZXdfZXJyb3Igb2YgbG9jYXRpb25fcmVwb3J0IHwgYE9sZF9lcnJvciBvZiBvbGRfdF1cblxuICBsZXQgdmVyc2lvbl9zcGVjaWZpY190X29mX3QgOiB0IC0+IHZlcnNpb25fc3BlY2lmaWNfdCA9IGZ1biB4IC0+XG4gICAgKCpJRl9BVF9MRUFTVCA0MDggYE5ld19lcnJvciB4ICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IGBPbGRfZXJyb3IgeCAqKVxuXG4gIGxldCBpc193ZWxsX2Zvcm1lZCBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IGtpbmQgPSBSZXBvcnRfZXJyb3I7IF8gfSAtPiB0cnVlXG4gICAgfCBgTmV3X2Vycm9yIF8gLT4gZmFsc2VcbiAgICB8IGBPbGRfZXJyb3IgXyAtPiB0cnVlXG5cbiAgbGV0IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgKG1zZyA6IGxvY2F0aW9uX21zZykgPVxuICAgICAoKklGX0FUX0xFQVNUIDUwMyBGb3JtYXQuYXNwcmludGYgXCIlYVwiIE9jYW1sX2NvbW1vbi5Gb3JtYXRfZG9jLkRvYy5mb3JtYXQgbXNnLnR4dCAqKVxuICAgICAoKklGX05PVF9BVF9MRUFTVCA1MDMgRm9ybWF0LmFzcHJpbnRmIFwiJXRcIiBtc2cudHh0ICopXG5cbiAgbGV0IG1haW5fbXNnIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBtYWluOyBsb2MgPSBtYWluLmxvYyB9XG4gICAgfCBgT2xkX2Vycm9yIHsgbXNnOyBsb2M7IF8gfSAtPiB7IHR4dCA9IG1zZzsgbG9jIH1cblxuICBsZXQgc3ViX21zZ3MgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gZXJyIC0+IHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBlcnI7IGxvYyA9IGVyci5sb2MgfSlcbiAgICAgICAgICBzdWJcbiAgICB8IGBPbGRfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBsZXQgcmVjIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICAgIHwgeyBsb2M7IG1zZzsgc3ViOyBfIH0gOjogdGFpbCAtPlxuICAgICAgICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzICh7IHR4dCA9IG1zZzsgbG9jIH0gOjogYWNjKSAoc3ViIEAgdGFpbClcbiAgICAgICAgaW5cbiAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBbXSBzdWJcblxuICBsZXQgb2ZfZXhuIGV4biA9XG4gICAgKCpJRl9BVF9MRUFTVCA0MDYgbWF0Y2ggZXJyb3Jfb2ZfZXhuIGV4biB3aXRoIHwgU29tZSAoYE9rIGUpIC0+IFNvbWUgZSB8IE5vbmUgfCBTb21lIGBBbHJlYWR5X2Rpc3BsYXllZCAtPiBOb25lICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA2IGVycm9yX29mX2V4biBleG4qKVxuXG4gIGxldCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cgPSB7IGVycm9yIHdpdGggbXNnIH1cblxuICBsZXQgX3NldF9tYWluX3R4dCBlcnJvciB0eHQgPVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggdHh0IH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyA9XG4gICAgKCpJRl9BVF9MRUFTVCA1MDMgbGV0IHR4dCA9IE9jYW1sX2NvbW1vbi5Gb3JtYXRfZG9jLkRvYy5tc2cgXCIlc1wiIG1zZyBpbiAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDUwMyBsZXQgdHh0IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIG1zZyBpbiAqKVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggdHh0IH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX21zZyBlcnJvciBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyopXG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgc3ViID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geyBsb2M7IHR4dCB9IC0+IHsgbG9jOyBtc2cgPSB0eHQ7IHN1YiA9IFtdOyBpZl9oaWdobGlnaHQgPSB0eHQgfSlcbiAgICAgICAgc3ViXG4gICAgaW5cbiAgICB7IGxvYzsgbXNnID0gdHh0OyBzdWI7IGlmX2hpZ2hsaWdodCA9IHR4dCB9XG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICAoKklGX0FUX0xFQVNUIDUwMyBsZXQgbWtfdHh0IHggPSBPY2FtbF9jb21tb24uRm9ybWF0X2RvYy5Eb2MubXNnIFwiJXNcIiB4IGluICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNTAzIGxldCBta190eHQgeCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiB4IGluICopXG4gICAgbGV0IG1rIGxvYyB4ID0geyBsb2M7IHR4dCA9IG1rX3R4dCB4IH0gaW5cbiAgICB7XG4gICAgICBraW5kID0gUmVwb3J0X2Vycm9yO1xuICAgICAgbWFpbiA9IG1rIGxvYyB0eHQ7XG4gICAgICBzdWIgPSBMaXN0Lm1hcCAoZnVuIHsgbG9jOyB0eHQgfSAtPiBtayBsb2MgdHh0KSBzdWI7XG4gICAgICAoKklGX0FUX0xFQVNUIDUwMyBmb290bm90ZSA9IE5vbmU7ICopXG4gICAgfVxuXG4gIGxldCBtYWtlIH5zdWIgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgbXNnKilcblxuICBsZXQgX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jID0geyBlcnJvciB3aXRoIGxvYyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyA9XG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCBsb2MgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbG9jIGVycm9yIGxvYyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jKilcbmVuZFxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgbXNnID1cbiAgKCogVXBkYXRlIGZyb20gW2thc3ByaW50Zl0gdG8gW2tkcHJpbnRmXSArIFtGb3JtYXRfZG9jLmRlcHJlY2F0ZWRfcHJpbnRlcl1cbiAgICAgd2hlbiBvY2FtbCBsb3dlciBib3VuZCBpcyA0LjA4KyAqKVxuICAoKklGX0FUX0xFQVNUIDUwMyBGb3JtYXQua2FzcHJpbnRmIChmdW4gcyAtPiByYWlzZV9lcnJvcmYgP2xvYyBcIiVzXCIgcykgbXNnICopXG4gICgqSUZfTk9UX0FUX0xFQVNUIDUwMyByYWlzZV9lcnJvcmYgP2xvYyBtc2cgKilcbiIsImluY2x1ZGUgT2NhbWxfY29tbW9uLkxvbmdpZGVudFxuXG5sZXQgcGFyc2UgcyA9XG4gICgqSUZfTk9UX0FUX0xFQVNUIDQxMSBwYXJzZSBzICopXG4gICgqSUZfQVRfTEVBU1QgNDExIE9jYW1sX2NvbW1vbi5QYXJzZS5sb25naWRlbnQgQEAgTGV4aW5nLmZyb21fc3RyaW5nIEBAIHMgKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgIFRob21hcyBHYXphZ25haXJlLCBPQ2FtbFBybyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEZhYnJpY2UgTGUgRmVzc2FudCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgSG9uZ2JvIFpoYW5nLCBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3JpZ2luYWwgQ29kZSBmcm9tIEJlci1tZXRhb2NhbWwsIG1vZGlmaWVkIGZvciAzLjEyLjAgYW5kIGZpeGVkICopXG4oKiBQcmludGluZyBjb2RlIGV4cHJlc3Npb25zICopXG4oKiBBdXRob3JzOiAgRWQgUGl6emksIEZhYnJpY2UgTGUgRmVzc2FudCAqKVxuKCogRXh0ZW5zaXZlIFJld3JpdGU6IEhvbmdibyBaaGFuZzogVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgKilcbigqIFRPRE8gbW9yZSBmaW5lLWdyYWluZWQgcHJlY2VkZW5jZSBwcmV0dHktcHJpbnRpbmcgKilcblxub3BlbiBBc3RfNDE0XG5vcGVuIEFzdHR5cGVzXG5vcGVuIEZvcm1hdFxub3BlbiBMb2NhdGlvblxub3BlbiBMb25naWRlbnRcbm9wZW4gUGFyc2V0cmVlXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbmVuZFxuXG5sZXQgdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidmFyaWFibGUgaW4gc2NvcGUgc3ludGF4IGVycm9yOiAlc1wiIHZcbiAgaW5cbiAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBsZXQgZGVzYyA9XG4gICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgIFB0eXBfdmFyIHhcbiAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSkgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lc1xuICAgICAgICAtPlxuICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT4gUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIHYgLT4gY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgdi50eHQpXG4gICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgIGluXG4gICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgbGV0IHByZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgaW5cbiAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICB8IE90YWcgKGxhYmVsLCB0KSAtPiBPdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgaW5cbiAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICBpblxuICBsb29wIHRcblxubGV0IHByZWZpeF9zeW1ib2xzID0gWyAnISc7ICc/JzsgJ34nIF1cblxubGV0IGluZml4X3N5bWJvbHMgPVxuICBbICc9JzsgJzwnOyAnPic7ICdAJzsgJ14nOyAnfCc7ICcmJzsgJysnOyAnLSc7ICcqJzsgJy8nOyAnJCc7ICclJzsgJyMnIF1cblxuKCogdHlwZSBmaXhpdHkgPSBJbmZpeHwgUHJlZml4ICAqKVxubGV0IHNwZWNpYWxfaW5maXhfc3RyaW5ncyA9XG4gIFsgXCJhc3JcIjsgXCJsYW5kXCI7IFwibG9yXCI7IFwibHNsXCI7IFwibHNyXCI7IFwibHhvclwiOyBcIm1vZFwiOyBcIm9yXCI7IFwiOj1cIjsgXCIhPVwiOyBcIjo6XCIgXVxuXG5sZXQgbGV0b3AgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDNcbiAgJiYgcy5bMF0gPSAnbCdcbiAgJiYgcy5bMV0gPSAnZSdcbiAgJiYgcy5bMl0gPSAndCdcbiAgJiYgTGlzdC5tZW0gcy5bM10gaW5maXhfc3ltYm9sc1xuXG5sZXQgYW5kb3AgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDNcbiAgJiYgcy5bMF0gPSAnYSdcbiAgJiYgcy5bMV0gPSAnbidcbiAgJiYgcy5bMl0gPSAnZCdcbiAgJiYgTGlzdC5tZW0gcy5bM10gaW5maXhfc3ltYm9sc1xuXG4oKiBkZXRlcm1pbmVzIGlmIHRoZSBzdHJpbmcgaXMgYW4gaW5maXggc3RyaW5nLlxuICAgY2hlY2tzIGJhY2t3YXJkcywgZmlyc3QgYWxsb3dpbmcgYSByZW5hbWluZyBwb3N0Zml4IChcIl8xMDJcIikgd2hpY2hcbiAgIG1heSBoYXZlIHJlc3VsdGVkIGZyb20gUGV4cCAtPiBUZXhwIC0+IFBleHAgdHJhbnNsYXRpb24sIHRoZW4gY2hlY2tpbmdcbiAgIGlmIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYXJlIHZhbGlkIGluZml4XG4gICBjaGFyYWN0ZXJzLiAqKVxubGV0IGZpeGl0eV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiXCIgLT4gYE5vcm1hbFxuICB8IHMgd2hlbiBMaXN0Lm1lbSBzIHNwZWNpYWxfaW5maXhfc3RyaW5ncyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBpbmZpeF9zeW1ib2xzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIHByZWZpeF9zeW1ib2xzIC0+IGBQcmVmaXggc1xuICB8IHMgd2hlbiBzLlswXSA9ICcuJyAtPiBgTWl4Zml4IHNcbiAgfCBzIHdoZW4gbGV0b3AgcyAtPiBgTGV0b3Agc1xuICB8IHMgd2hlbiBhbmRvcCBzIC0+IGBBbmRvcCBzXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCB2aWV3X2ZpeGl0eV9vZl9leHAgPSBmdW5jdGlvblxuICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBsOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgIGZpeGl0eV9vZl9zdHJpbmcgbFxuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgaXNfaW5maXggPSBmdW5jdGlvbiBgSW5maXggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGlzX21peGZpeCA9IGZ1bmN0aW9uIGBNaXhmaXggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGlzX2t3ZG9wID0gZnVuY3Rpb24gYExldG9wIF8gfCBgQW5kb3AgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGZpcnN0X2lzIGMgc3RyID0gc3RyIDw+IFwiXCIgJiYgc3RyLlswXSA9IGNcbmxldCBsYXN0X2lzIGMgc3RyID0gc3RyIDw+IFwiXCIgJiYgc3RyLltTdHJpbmcubGVuZ3RoIHN0ciAtIDFdID0gY1xubGV0IGZpcnN0X2lzX2luIGNzIHN0ciA9IHN0ciA8PiBcIlwiICYmIExpc3QubWVtIHN0ci5bMF0gY3NcblxuKCogd2hpY2ggaWRlbnRpZmllcnMgYXJlIGluIGZhY3Qgb3BlcmF0b3JzIG5lZWRpbmcgcGFyZW50aGVzZXMgKilcbmxldCBuZWVkc19wYXJlbnMgdHh0ID1cbiAgbGV0IGZpeCA9IGZpeGl0eV9vZl9zdHJpbmcgdHh0IGluXG4gIGlzX2luZml4IGZpeCB8fCBpc19taXhmaXggZml4IHx8IGlzX2t3ZG9wIGZpeFxuICB8fCBmaXJzdF9pc19pbiBwcmVmaXhfc3ltYm9scyB0eHRcblxuKCogc29tZSBpbmZpeGVzIG5lZWQgc3BhY2VzIGFyb3VuZCBwYXJlbnMgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIGNvbW1lbnRcbiAgIHN5bnRheCAqKVxubGV0IG5lZWRzX3NwYWNlcyB0eHQgPSBmaXJzdF9pcyAnKicgdHh0IHx8IGxhc3RfaXMgJyonIHR4dFxubGV0IHN0cmluZ19sb2MgcHBmIHggPSBmcHJpbnRmIHBwZiBcIiVzXCIgeC50eHRcblxuKCogYWRkIHBhcmVudGhlc2VzIHRvIGJpbmRlcnMgd2hlbiB0aGV5IGFyZSBpbiBmYWN0IGluZml4IG9yIHByZWZpeCBvcGVyYXRvcnMgKilcbmxldCBwcm90ZWN0X2lkZW50IHBwZiB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiKEA7JXNAOylcIlxuICAgIGVsc2UgXCIoJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHR4dFxuXG5sZXQgcHJvdGVjdF9sb25naWRlbnQgcHBmIHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlYS4lc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIlYS4oQDslc0A7KVwiXG4gICAgZWxzZSBcIiVhLiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0XG5cbnR5cGUgc3BhY2VfZm9ybWF0dGVyID0gKHVuaXQsIEZvcm1hdC5mb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdFxuXG5sZXQgb3ZlcnJpZGUgPSBmdW5jdGlvbiBPdmVycmlkZSAtPiBcIiFcIiB8IEZyZXNoIC0+IFwiXCJcblxuKCogdmFyaWFuY2UgZW5jb2Rpbmc6IG5lZWQgdG8gc3luYyB1cCB3aXRoIHRoZSBbcGFyc2VyLm1seV0gKilcbmxldCB0eXBlX3ZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBOb1ZhcmlhbmNlIC0+IFwiXCJcbiAgfCBDb3ZhcmlhbnQgLT4gXCIrXCJcbiAgfCBDb250cmF2YXJpYW50IC0+IFwiLVwiXG5cbmxldCB0eXBlX2luamVjdGl2aXR5ID0gZnVuY3Rpb24gTm9JbmplY3Rpdml0eSAtPiBcIlwiIHwgSW5qZWN0aXZlIC0+IFwiIVwiXG5cbnR5cGUgY29uc3RydWN0ID1cbiAgWyBgY29ucyBvZiBleHByZXNzaW9uIGxpc3RcbiAgfCBgbGlzdCBvZiBleHByZXNzaW9uIGxpc3RcbiAgfCBgbmlsXG4gIHwgYG5vcm1hbFxuICB8IGBzaW1wbGUgb2YgTG9uZ2lkZW50LnRcbiAgfCBgdHVwbGUgXVxuXG5sZXQgdmlld19leHByIHggPVxuICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiKClcIjsgXyB9LCBfKSAtPiBgdHVwbGVcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGBuaWxcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgXykgLT5cbiAgICAgIGxldCByZWMgbG9vcCBleHAgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwIHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICAgU29tZSB7IHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBlMTsgZTIgXTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgICAgICk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgbG9vcCBlMiAoZTEgOjogYWNjKVxuICAgICAgICB8IGUgLT4gKExpc3QucmV2IChlIDo6IGFjYyksIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBscywgYiA9IGxvb3AgeCBbXSBpblxuICAgICAgaWYgYiB0aGVuIGBsaXN0IGxzIGVsc2UgYGNvbnMgbHNcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeCwgTm9uZSkgLT4gYHNpbXBsZSB4LnR4dFxuICB8IF8gLT4gYG5vcm1hbFxuXG5sZXQgaXNfc2ltcGxlX2NvbnN0cnVjdCA6IGNvbnN0cnVjdCAtPiBib29sID0gZnVuY3Rpb25cbiAgfCBgbmlsIHwgYHR1cGxlIHwgYGxpc3QgXyB8IGBzaW1wbGUgXyAtPiB0cnVlXG4gIHwgYGNvbnMgXyB8IGBub3JtYWwgLT4gZmFsc2VcblxubGV0IHBwID0gZnByaW50ZlxuXG50eXBlIGN0eHQgPSB7IHBpcGUgOiBib29sOyBzZW1pIDogYm9vbDsgaWZ0aGVuZWxzZSA6IGJvb2wgfVxuXG5sZXQgcmVzZXRfY3R4dCA9IHsgcGlwZSA9IGZhbHNlOyBzZW1pID0gZmFsc2U7IGlmdGhlbmVsc2UgPSBmYWxzZSB9XG5sZXQgdW5kZXJfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZSA9IHRydWUgfVxubGV0IHVuZGVyX3NlbWkgY3R4dCA9IHsgY3R4dCB3aXRoIHNlbWkgPSB0cnVlIH1cbmxldCB1bmRlcl9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlID0gdHJ1ZSB9XG4oKlxubGV0IHJlc2V0X3NlbWkgY3R4dCA9IHsgY3R4dCB3aXRoIHNlbWk9ZmFsc2UgfVxubGV0IHJlc2V0X2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2U9ZmFsc2UgfVxubGV0IHJlc2V0X3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGU9ZmFsc2UgfVxuKilcblxubGV0IGxpc3QgOlxuICAgICAgJ2EuXG4gICAgICA/c2VwOnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgbGlzdCAtPlxuICAgICAgdW5pdCA9XG4gZnVuID9zZXAgP2ZpcnN0ID9sYXN0IGZ1IGYgeHMgLT5cbiAgbGV0IGZpcnN0ID0gbWF0Y2ggZmlyc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBsYXN0ID0gbWF0Y2ggbGFzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIHNlcCA9IG1hdGNoIHNlcCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJAIFwiIDogXyBmb3JtYXQ2KSBpblxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgIHwgeHMgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgICAgIGZ1IGYgeDtcbiAgICAgICAgICAgICAgcHAgZiBzZXA7XG4gICAgICAgICAgICAgIGxvb3AgZiB4c1xuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBmaXJzdDtcbiAgICAgICAgbG9vcCBmIHhzO1xuICAgICAgICBwcCBmIGxhc3RcbiAgaW5cbiAgYXV4IGYgeHNcblxubGV0IG9wdGlvbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIG9wdGlvbiAtPlxuICAgICAgdW5pdCA9XG4gZnVuID9maXJzdCA/bGFzdCBmdSBmIGEgLT5cbiAgbGV0IGZpcnN0ID0gbWF0Y2ggZmlyc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBsYXN0ID0gbWF0Y2ggbGFzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NikgaW5cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgcHAgZiBmaXJzdDtcbiAgICAgIGZ1IGYgeDtcbiAgICAgIHBwIGYgbGFzdFxuXG5sZXQgcGFyZW4gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIGJvb2wgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSAtPlxuICAgICAgdW5pdCA9XG4gZnVuID8oZmlyc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpID8obGFzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgYiBmdSBmIHggLT5cbiAgaWYgYiB0aGVuIChcbiAgICBwcCBmIFwiKFwiO1xuICAgIHBwIGYgZmlyc3Q7XG4gICAgZnUgZiB4O1xuICAgIHBwIGYgbGFzdDtcbiAgICBwcCBmIFwiKVwiKVxuICBlbHNlIGZ1IGYgeFxuXG5sZXQgcmVjIGxvbmdpZGVudCBmID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBwcm90ZWN0X2lkZW50IGYgc1xuICB8IExkb3QgKHksIHMpIC0+IHByb3RlY3RfbG9uZ2lkZW50IGYgbG9uZ2lkZW50IHkgc1xuICB8IExhcHBseSAoeSwgcykgLT4gcHAgZiBcIiVhKCVhKVwiIGxvbmdpZGVudCB5IGxvbmdpZGVudCBzXG5cbmxldCBsb25naWRlbnRfbG9jIGYgeCA9IHBwIGYgXCIlYVwiIGxvbmdpZGVudCB4LnR4dFxuXG5sZXQgY29uc3RhbnQgZiA9IGZ1bmN0aW9uXG4gIHwgUGNvbnN0X2NoYXIgaSAtPiBwcCBmIFwiJUNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgTm9uZSkgLT4gcHAgZiBcIiVTXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIFNvbWUgZGVsaW0pIC0+IHBwIGYgXCJ7JXN8JXN8JXN9XCIgZGVsaW0gaSBkZWxpbVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIFNvbWUgbSkgLT5cbiAgICAgIHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIChpLCBtKSAtPiBwcCBmIFwiJXMlY1wiIGkgbSkgZiAoaSwgbSlcbiAgfCBQY29uc3RfZmxvYXQgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfZmxvYXQgKGksIFNvbWUgbSkgLT5cbiAgICAgIHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIChpLCBtKSAtPiBwcCBmIFwiJXMlY1wiIGkgbSkgZiAoaSwgbSlcblxuKCogdHJhaWxpbmcgc3BhY2UqKVxubGV0IG11dGFibGVfZmxhZyBmID0gZnVuY3Rpb24gSW1tdXRhYmxlIC0+ICgpIHwgTXV0YWJsZSAtPiBwcCBmIFwibXV0YWJsZUA7XCJcbmxldCB2aXJ0dWFsX2ZsYWcgZiA9IGZ1bmN0aW9uIENvbmNyZXRlIC0+ICgpIHwgVmlydHVhbCAtPiBwcCBmIFwidmlydHVhbEA7XCJcblxuKCogdHJhaWxpbmcgc3BhY2UgYWRkZWQgKilcbmxldCByZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gKCkgfCBSZWN1cnNpdmUgLT4gcHAgZiBcInJlYyBcIlxuXG5sZXQgbm9ucmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+IHBwIGYgXCJub25yZWMgXCIgfCBSZWN1cnNpdmUgLT4gKClcblxubGV0IGRpcmVjdGlvbl9mbGFnIGYgPSBmdW5jdGlvblxuICB8IFVwdG8gLT4gcHAgZiBcInRvQCBcIlxuICB8IERvd250byAtPiBwcCBmIFwiZG93bnRvQCBcIlxuXG5sZXQgcHJpdmF0ZV9mbGFnIGYgPSBmdW5jdGlvbiBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJwcml2YXRlQCBcIlxubGV0IGl0ZXJfbG9jIGYgY3R4dCB7IHR4dDsgbG9jID0gXyB9ID0gZiBjdHh0IHR4dFxubGV0IGNvbnN0YW50X3N0cmluZyBmIHMgPSBwcCBmIFwiJVNcIiBzXG5cbmxldCB0eXZhciBwcGYgcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIHMuWzFdID0gJ1xcJycgdGhlblxuICAgICgqIHdpdGhvdXQgdGhlIHNwYWNlLCB0aGlzIHdvdWxkIGJlIHBhcnNlZCBhc1xuICAgICAgIGEgY2hhcmFjdGVyIGxpdGVyYWwgKilcbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCInICVzXCIgc1xuICBlbHNlIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiclc1wiIHNcblxubGV0IHR5dmFyX2xvYyBmIHN0ciA9IHR5dmFyIGYgc3RyLnR4dFxubGV0IHN0cmluZ19xdW90IGYgeCA9IHBwIGYgXCJgJXNcIiB4XG5cbigqIGMgWydhLCdiXSAqKVxubGV0IHJlYyBjbGFzc19wYXJhbXNfZGVmIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCJbJWFdIFwiICgqIHNwYWNlICopIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5zZXA6XCIsXCIpIGxcblxuYW5kIHR5cGVfd2l0aF9sYWJlbCBjdHh0IGYgKGxhYmVsLCBjKSA9XG4gIG1hdGNoIGxhYmVsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGNvcmVfdHlwZTEgY3R4dCBmIGMgKCogb3RoZXJ3aXNlIHBhcmVudGhlc2l6ZSAqKVxuICB8IExhYmVsbGVkIHMgLT4gcHAgZiBcIiVzOiVhXCIgcyAoY29yZV90eXBlMSBjdHh0KSBjXG4gIHwgT3B0aW9uYWwgcyAtPiBwcCBmIFwiPyVzOiVhXCIgcyAoY29yZV90eXBlMSBjdHh0KSBjXG5cbmFuZCBjb3JlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnB0eXBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYXJyb3cgKGwsIGN0MSwgY3QyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7LT5AOyVhQF1cIiAoKiBGSVhNRSByZW1vdmUgcGFyZW5zIGxhdGVyICopXG4gICAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY3QxKSAoY29yZV90eXBlIGN0eHQpIGN0MlxuICAgIHwgUHR5cF9hbGlhcyAoY3QsIHMpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDthc0A7JWFAXVwiIChjb3JlX3R5cGUxIGN0eHQpIGN0IHR5dmFyIHNcbiAgICB8IFB0eXBfcG9seSAoW10sIGN0KSAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgfCBQdHlwX3BvbHkgKHNsLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWElYUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhXCJcbiAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSBsKVxuICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHNsIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAXVwiIChjb3JlX3R5cGUxIGN0eHQpIHhcblxuYW5kIGNvcmVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnB0eXBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGNvcmVfdHlwZSBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hbnkgLT4gcHAgZiBcIl9cIlxuICAgIHwgUHR5cF92YXIgcyAtPiB0eXZhciBmIHNcbiAgICB8IFB0eXBfdHVwbGUgbCAtPiBwcCBmIFwiKCVhKVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgfCBQdHlwX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgKCogXCIlYSVhQDtcIiAqKSBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgIHwgWyB4IF0gLT4gcHAgZiBcIiVhQDtcIiAoY29yZV90eXBlMSBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT4gbGlzdCB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpQDtcIiAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsQDtcIiBmIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQdHlwX3ZhcmlhbnQgKGwsIGNsb3NlZCwgbG93KSAtPlxuICAgICAgICBsZXQgZmlyc3RfaXNfaW5oZXJpdCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCB7IFBhcnNldHJlZS5wcmZfZGVzYyA9IFJpbmhlcml0IF8gfSA6OiBfIC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cGVfdmFyaWFudF9oZWxwZXIgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IFJ0YWcgKGwsIF8sIGN0bCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWElYUA7JWFAXVwiIChpdGVyX2xvYyBzdHJpbmdfcXVvdCkgbFxuICAgICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCImXCIpIGN0bClcbiAgICAgICAgICAgICAgICBjdGwgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wcmZfYXR0cmlidXRlc1xuICAgICAgICAgIHwgUmluaGVyaXQgY3QgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj5bJWElYV1AXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIChsLCBjbG9zZWQpIHdpdGhcbiAgICAgICAgICAgIHwgW10sIENsb3NlZCAtPiAoKVxuICAgICAgICAgICAgfCBbXSwgT3BlbiAtPiBwcCBmIFwiPlwiICgqIENmICM3MjAwOiBwcmludCBbPl0gY29ycmVjdGx5ICopXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJXNAOyVhXCJcbiAgICAgICAgICAgICAgICAgIChtYXRjaCAoY2xvc2VkLCBsb3cpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBOb25lIC0+IGlmIGZpcnN0X2lzX2luaGVyaXQgdGhlbiBcIiB8XCIgZWxzZSBcIlwiXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgU29tZSBfIC0+IFwiPFwiICgqIEZJWE1FIGRlc3VnYXIgdGhlIHN5bnRheCBzdWdhciopXG4gICAgICAgICAgICAgICAgICB8IE9wZW4sIF8gLT4gXCI+XCIpXG4gICAgICAgICAgICAgICAgICAobGlzdCB0eXBlX3ZhcmlhbnRfaGVscGVyIH5zZXA6XCJAOzwxIC0yPnwgXCIpXG4gICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIGxcbiAgICAgICAgICAoZnVuIGYgbG93IC0+XG4gICAgICAgICAgICBtYXRjaCBsb3cgd2l0aFxuICAgICAgICAgICAgfCBTb21lIFtdIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHhzIC0+IHBwIGYgXCI+QCAlYVwiIChsaXN0IHN0cmluZ19xdW90KSB4cylcbiAgICAgICAgICBsb3dcbiAgICB8IFB0eXBfb2JqZWN0IChsLCBvKSAtPlxuICAgICAgICBsZXQgY29yZV9maWVsZF90eXBlIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBPdGFnIChsLCBjdCkgLT5cbiAgICAgICAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXM6ICVhQCAlYUAgQF1cIiBsLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgICAgICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wb2ZfYXR0cmlidXRlc1xuICAgICAgICAgIHwgT2luaGVyaXQgY3QgLT4gcHAgZiBcIkBbPGhvdjI+JWFAIEBdXCIgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZmllbGRfdmFyIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgQXN0dHlwZXMuQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgfCBBc3R0eXBlcy5PcGVuIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IHBwIGYgXCIuLlwiIHwgXyAtPiBwcCBmIFwiIDsuLlwiKVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aG92Mj48QCAlYSVhQCA+IEBdXCJcbiAgICAgICAgICAobGlzdCBjb3JlX2ZpZWxkX3R5cGUgfnNlcDpcIjtcIilcbiAgICAgICAgICBsIGZpZWxkX3ZhciBvXG4gICAgICAgICgqIENmICM3MjAwICopXG4gICAgfCBQdHlwX2NsYXNzIChsaSwgbCkgLT5cbiAgICAgICAgKCpGSVhNRSopXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhIyVhQF1cIlxuICAgICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQdHlwX3BhY2thZ2UgKGxpZCwgY3N0cnMpIC0+IChcbiAgICAgICAgbGV0IGF1eCBmIChzLCBjdCkgPVxuICAgICAgICAgIHBwIGYgXCJ0eXBlICVhQCA9QCAlYVwiIGxvbmdpZGVudF9sb2MgcyAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNzdHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWFAIHdpdGhAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgICAgICAgKGxpc3QgYXV4IH5zZXA6XCJAIGFuZEAgXCIpIGNzdHJzKVxuICAgIHwgUHR5cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoY29yZV90eXBlIGN0eHQpIGYgeFxuXG4oKioqKioqKioqKioqKioqKioqKipwYXR0ZXJuKioqKioqKioqKioqKioqKioqKiopXG4oKiBiZSBjYXV0aW91cyB3aGVuIHVzZSBbcGF0dGVybl0sIFtwYXR0ZXJuMV0gaXMgcHJlZmVycmVkICopXG5hbmQgcGF0dGVybiBjdHh0IGYgeCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAocGF0dGVybiBjdHh0KVxuICAgICAgeyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wcGF0X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfYWxpYXMgKHAsIHMpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDthc0A7JWFAXVwiIChwYXR0ZXJuIGN0eHQpIHAgcHJvdGVjdF9pZGVudCBzLnR4dFxuICAgIHwgXyAtPiBwYXR0ZXJuX29yIGN0eHQgZiB4XG5cbmFuZCBwYXR0ZXJuX29yIGN0eHQgZiB4ID1cbiAgbGV0IHJlYyBsZWZ0X2Fzc29jaWF0aXZlIHggYWNjID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9vciAocDEsIHAyKTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBsZWZ0X2Fzc29jaWF0aXZlIHAxIChwMiA6OiBhY2MpXG4gICAgfCB4IC0+IHggOjogYWNjXG4gIGluXG4gIG1hdGNoIGxlZnRfYXNzb2NpYXRpdmUgeCBbXSB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gcGF0dGVybjEgY3R4dCBmIHhcbiAgfCBvcnBhdHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IH5zZXA6XCJAIHwgXCIgKHBhdHRlcm4xIGN0eHQpKSBvcnBhdHNcblxuYW5kIHBhdHRlcm4xIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGxldCByZWMgcGF0dGVybl9saXN0X2hlbHBlciBmID0gZnVuY3Rpb25cbiAgICB8IHtcbiAgICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgICBQcGF0X2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgU29tZSAoW10sIHsgcHBhdF9kZXNjID0gUHBhdF90dXBsZSBbIHBhdDE7IHBhdDIgXTsgXyB9KSApO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgcHAgZiBcIiVhOjolYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwYXQxIHBhdHRlcm5fbGlzdF9oZWxwZXIgcGF0MiAoKlJBKilcbiAgICB8IHAgLT4gcGF0dGVybjEgY3R4dCBmIHBcbiAgaW5cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X3ZhcmlhbnQgKGwsIFNvbWUgcCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+YCVzQDslYUBdXCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIF8pIC0+XG4gICAgICAgIHNpbXBsZV9wYXR0ZXJuIGN0eHQgZiB4XG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoKHsgdHh0OyBfIH0gYXMgbGkpLCBwbykgLT4gKFxuICAgICAgICBpZiAoKiBGSVhNRSBUaGUgdGhpcmQgZmllbGQgYWx3YXlzIGZhbHNlICopXG4gICAgICAgICAgIHR4dCA9IExpZGVudCBcIjo6XCIgdGhlbiBwcCBmIFwiJWFcIiBwYXR0ZXJuX2xpc3RfaGVscGVyIHhcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHBvIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKFtdLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgU29tZSAodmwsIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUAgKHR5cGUgJWEpQDslYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICAgICAgICAobGlzdCB+c2VwOlwiQCBcIiBzdHJpbmdfbG9jKVxuICAgICAgICAgICAgICAgIHZsIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGkpXG4gICAgfCBfIC0+IHNpbXBsZV9wYXR0ZXJuIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfcGF0dGVybiBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoKFwiKClcIiB8IFwiW11cIikgYXMgeCk7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgcHAgZiBcIiVzXCIgeFxuICAgIHwgUHBhdF9hbnkgLT4gcHAgZiBcIl9cIlxuICAgIHwgUHBhdF92YXIgeyB0eHQ7IF8gfSAtPiBwcm90ZWN0X2lkZW50IGYgdHh0XG4gICAgfCBQcGF0X2FycmF5IGwgLT4gcHAgZiBcIkBbPDI+W3wlYXxdQF1cIiAobGlzdCAocGF0dGVybjEgY3R4dCkgfnNlcDpcIjtcIikgbFxuICAgIHwgUHBhdF91bnBhY2sgeyB0eHQgPSBOb25lIH0gLT4gcHAgZiBcIihtb2R1bGVAIF8pQCBcIlxuICAgIHwgUHBhdF91bnBhY2sgeyB0eHQgPSBTb21lIHMgfSAtPiBwcCBmIFwiKG1vZHVsZUAgJXMpQCBcIiBzXG4gICAgfCBQcGF0X3R5cGUgbGkgLT4gcHAgZiBcIiMlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBwYXRfcmVjb3JkIChsLCBjbG9zZWQpIC0+IChcbiAgICAgICAgbGV0IGxvbmdpZGVudF94X3BhdHRlcm4gZiAobGksIHApID1cbiAgICAgICAgICBtYXRjaCAobGksIHApIHdpdGhcbiAgICAgICAgICB8ICggeyB0eHQgPSBMaWRlbnQgczsgXyB9LFxuICAgICAgICAgICAgICB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0gKVxuICAgICAgICAgICAgd2hlbiBzID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAocGF0dGVybjEgY3R4dCkgcFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjbG9zZWQgd2l0aFxuICAgICAgICB8IENsb3NlZCAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPDI+e0A7JWFAO31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsXG4gICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj57QDslYTtffUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGwpXG4gICAgfCBQcGF0X3R1cGxlIGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDE+KCVhKUBdXCIgKGxpc3QgfnNlcDpcIixAO1wiIChwYXR0ZXJuMSBjdHh0KSkgbCAoKiBsZXZlbDEqKVxuICAgIHwgUHBhdF9jb25zdGFudCBjIC0+IHBwIGYgXCIlYVwiIGNvbnN0YW50IGNcbiAgICB8IFBwYXRfaW50ZXJ2YWwgKGMxLCBjMikgLT4gcHAgZiBcIiVhLi4lYVwiIGNvbnN0YW50IGMxIGNvbnN0YW50IGMyXG4gICAgfCBQcGF0X3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4oJWFAOzpAOyVhKUBdXCIgKHBhdHRlcm4xIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUHBhdF9sYXp5IHAgLT4gcHAgZiBcIkBbPDI+KGxhenlAOyVhKUBdXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfZXhjZXB0aW9uIHAgLT4gcHAgZiBcIkBbPDI+ZXhjZXB0aW9uQDslYUBdXCIgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQcGF0X29wZW4gKGxpZCwgcCkgLT5cbiAgICAgICAgbGV0IHdpdGhfcGFyZW4gPVxuICAgICAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBwYXRfYXJyYXkgXyB8IFBwYXRfcmVjb3JkIF9cbiAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBOb25lKSAtPlxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhIEBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgICAocGFyZW4gd2l0aF9wYXJlbiBAQCBwYXR0ZXJuMSBjdHh0KVxuICAgICAgICAgIHBcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAocGF0dGVybiBjdHh0KSBmIHhcblxuYW5kIGxhYmVsX2V4cCBjdHh0IGYgKGwsIG9wdCwgcCkgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+XG4gICAgICAoKiBzaW5nbGUgY2FzZSBwYXR0ZXJuIHBhcmVucyBuZWVkZWQgaGVyZSAqKVxuICAgICAgcHAgZiBcIiVhQCBcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICB8IE9wdGlvbmFsIHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICB3aGVuIHR4dCA9IHJlc3QgLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT4gcHAgZiBcIj8oJXM9QDslYSlAO1wiIHJlc3QgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzQCBcIiByZXN0KVxuICAgICAgfCBfIC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCI/JXM6KCVhPUA7JWEpQDtcIiByZXN0IChwYXR0ZXJuMSBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lczolYUA7XCIgcmVzdCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCkpXG4gIHwgTGFiZWxsZWQgbCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IHdoZW4gdHh0ID0gbFxuICAgICAgICAtPlxuICAgICAgICAgIHBwIGYgXCJ+JXNAO1wiIGxcbiAgICAgIHwgXyAtPiBwcCBmIFwifiVzOiVhQDtcIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKVxuXG5hbmQgc3VnYXJfZXhwciBjdHh0IGYgZSA9XG4gIGlmIGUucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZmFsc2VcbiAgZWxzZVxuICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfYXBwbHlcbiAgICAgICAgKCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBpZDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAgICAgIGFyZ3MgKVxuICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biAobGFiLCBfKSAtPiBsYWIgPSBOb2xhYmVsKSBhcmdzIC0+IChcbiAgICAgICAgbGV0IHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBzZXAgcmlnaHQgcHJpbnRfaW5kZXhcbiAgICAgICAgICAgIGluZGljZXMgcmVtX2FyZ3MgPVxuICAgICAgICAgIGxldCBwcmludF9wYXRoIHBwZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBtIC0+IHBwIHBwZiBcIi4lYVwiIGxvbmdpZGVudCBtXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCAoYXNzaWduLCByZW1fYXJncykgd2l0aFxuICAgICAgICAgIHwgZmFsc2UsIFtdIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWyVhJWElcyVhJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGggcGF0aF9wcmVmaXhcbiAgICAgICAgICAgICAgICBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHQ7XG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IHRydWUsIFsgdiBdIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWyVhJWElcyVhJXNAIDwtQDs8MSAyPiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoXG4gICAgICAgICAgICAgICAgcGF0aF9wcmVmaXggbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0XG4gICAgICAgICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIHY7XG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggKGlkLCBMaXN0Lm1hcCBzbmQgYXJncykgd2l0aFxuICAgICAgICB8IExpZGVudCBcIiFcIiwgWyBlIF0gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3Y+ISVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTtcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgfCBMZG90IChwYXRoLCAoKFwiZ2V0XCIgfCBcInNldFwiKSBhcyBmdW5jKSksIGEgOjogb3RoZXJfYXJncyAtPiAoXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gZnVuYyA9IFwic2V0XCIgaW5cbiAgICAgICAgICAgIGxldCBwcmludCA9IHByaW50X2luZGV4b3AgYSBOb25lIGFzc2lnbiBpblxuICAgICAgICAgICAgbWF0Y2ggKHBhdGgsIG90aGVyX2FyZ3MpIHdpdGhcbiAgICAgICAgICAgIHwgTGlkZW50IFwiQXJyYXlcIiwgaSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIuKFwiIFwiXCIgXCIpXCIgKGV4cHJlc3Npb24gY3R4dCkgWyBpIF0gcmVzdFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJTdHJpbmdcIiwgaSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIuW1wiIFwiXCIgXCJdXCIgKGV4cHJlc3Npb24gY3R4dCkgWyBpIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MVwiKSwgaTEgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTJcIiksIGkxIDo6IGkyIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5M1wiKSwgaTEgOjogaTIgOjogaTMgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTI7IGkzIF0gcmVzdFxuICAgICAgICAgICAgfCAoIExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiR2VuYXJyYXlcIiksXG4gICAgICAgICAgICAgICAgeyBwZXhwX2Rlc2MgPSBQZXhwX2FycmF5IGluZGV4ZXM7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gOjogcmVzdFxuICAgICAgICAgICAgICApIC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBpbmRleGVzIHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfCAoTGlkZW50IHMgfCBMZG90IChfLCBzKSksIGEgOjogaSA6OiByZXN0IHdoZW4gZmlyc3RfaXMgJy4nIHMgLT5cbiAgICAgICAgICAgICgqIGV4dHJhY3Qgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICBhc3NpZ25tZW50IG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldCBeIFwiPC1cIl0sXG4gICAgICAgICAgICAgICBhY2Nlc3Mgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0XSBkaXJlY3RseVxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIGxldCBtdWx0aV9pbmRpY2VzID0gU3RyaW5nLmNvbnRhaW5zIHMgJzsnIGluXG4gICAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICAgIG1hdGNoIGkucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IGwgd2hlbiBtdWx0aV9pbmRpY2VzIC0+IGxcbiAgICAgICAgICAgICAgfCBfIC0+IFsgaSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGxhc3RfaXMgJy0nIHMgaW5cbiAgICAgICAgICAgIGxldCBraW5kID1cbiAgICAgICAgICAgICAgKCogZXh0cmFjdCB0aGUgcmlnaHQgZW5kIGJyYWNrZXQgKilcbiAgICAgICAgICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgaWYgYXNzaWduIHRoZW4gcy5bbiAtIDNdIGVsc2Ugcy5bbiAtIDFdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgIHwgJyknIC0+ICgnKCcsIFwiKVwiKVxuICAgICAgICAgICAgICB8ICddJyAtPiAoJ1snLCBcIl1cIilcbiAgICAgICAgICAgICAgfCAnfScgLT4gKCd7JywgXCJ9XCIpXG4gICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcGF0aF9wcmVmaXggPVxuICAgICAgICAgICAgICBtYXRjaCBpZCB3aXRoIExkb3QgKG0sIF8pIC0+IFNvbWUgbSB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0ID0gU3RyaW5nLnN1YiBzIDAgKDEgKyBTdHJpbmcuaW5kZXggcyBsZWZ0KSBpblxuICAgICAgICAgICAgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IFwiO1wiIHJpZ2h0XG4gICAgICAgICAgICAgIChpZiBtdWx0aV9pbmRpY2VzIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGVsc2Ugc2ltcGxlX2V4cHIgY3R4dClcbiAgICAgICAgICAgICAgaSByZXN0XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxuYW5kIGV4cHJlc3Npb24gY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpQCwlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KVxuICAgICAgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wZXhwX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfZnVuY3Rpb24gXyB8IFBleHBfZnVuIF8gfCBQZXhwX21hdGNoIF8gfCBQZXhwX3RyeSBfIHwgUGV4cF9zZXF1ZW5jZSBfXG4gICAgfCBQZXhwX25ld3R5cGUgX1xuICAgICAgd2hlbiBjdHh0LnBpcGUgfHwgY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCAoUGV4cF9pZnRoZW5lbHNlIF8gfCBQZXhwX3NlcXVlbmNlIF8pIHdoZW4gY3R4dC5pZnRoZW5lbHNlIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2xldCBfIHwgUGV4cF9sZXRtb2R1bGUgXyB8IFBleHBfb3BlbiBfIHwgUGV4cF9sZXRleGNlcHRpb24gX1xuICAgIHwgUGV4cF9sZXRvcCBfXG4gICAgICB3aGVuIGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9mdW4gKGwsIGUwLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyVhLT5AOyVhQF1cIiAobGFiZWxfZXhwIGN0eHQpIChsLCBlMCwgcClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX25ld3R5cGUgKGxpZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDsodHlwZUA7JXMpQDstPkA7JWFAXVwiIGxpZC50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9mdW5jdGlvbiBsIC0+IHBwIGYgXCJAWzxodj5mdW5jdGlvbiVhQF1cIiAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbWF0Y2ggKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYwPkBbPDI+bWF0Y2ggJWFAXUAgd2l0aEBdJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfdHJ5IChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzxodjI+dHJ5QCAlYUBdQCBAWzwwPndpdGglYUBdQF1cIlxuICAgICAgICAgICgqIFwidHJ5QDtAWzwyPiVhQF1AXFxud2l0aEBcXG4lYVwiKilcbiAgICAgICAgICAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX2xldCAocmYsIGwsIGUpIC0+XG4gICAgICAgICgqIHBwIGYgXCJAWzwyPmxldCAlYSVhIGluQDs8MSAtMj4lYUBdXCJcbiAgICAgICAgICAgKCpubyBpbmRlbnRhdGlvbiBoZXJlLCBhIG5ldyBsaW5lKikgKilcbiAgICAgICAgKCogICByZWNfZmxhZyByZiAqKVxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSBpbkA7PDEgLTI+JWFAXVwiIChiaW5kaW5ncyByZXNldF9jdHh0KSAocmYsIGwpXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9hcHBseSAoZSwgbCkgLT4gKFxuICAgICAgICBpZiBub3QgKHN1Z2FyX2V4cHIgY3R4dCBmIHgpIHRoZW5cbiAgICAgICAgICBtYXRjaCB2aWV3X2ZpeGl0eV9vZl9leHAgZSB3aXRoXG4gICAgICAgICAgfCBgSW5maXggcyAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgKChOb2xhYmVsLCBfKSBhcyBhcmcxKTsgKChOb2xhYmVsLCBfKSBhcyBhcmcyKSBdIC0+XG4gICAgICAgICAgICAgICAgICAoKiBGSVhNRSBhc3NvY2lhdGl2aXR5IGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSAqKVxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAOyVzQDslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KVxuICAgICAgICAgICAgICAgICAgICBhcmcxIHNcbiAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KVxuICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWEgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgfCBgUHJlZml4IHMgLT4gKFxuICAgICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExpc3QubWVtIHMgWyBcIn4rXCI7IFwifi1cIjsgXCJ+Ky5cIjsgXCJ+LS5cIiBdXG4gICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICAoKiBTZWUgIzcyMDA6IGF2b2lkIHR1cm5pbmcgKH4tIDEpIGludG8gKC0gMSkgd2hpY2ggaXNcbiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCBhcyBhbiBpbnQgbGl0ZXJhbCAqKVxuICAgICAgICAgICAgICAgICAgfCBbIChfLCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RhbnQgXyB9KSBdIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgICAgICAgICAgICAgZWxzZSBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgKE5vbGFiZWwsIHgpIF0gLT4gcHAgZiBcIkBbPDI+JXNAOyVhQF1cIiBzIChzaW1wbGVfZXhwciBjdHh0KSB4XG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWEgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIlxuICAgICAgICAgICAgICAgIChmdW4gZiAoZSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoZXhwcmVzc2lvbjIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAoKiByZXNldCBoZXJlIG9ubHkgYmVjYXVzZSBbZnVuY3Rpb24sbWF0Y2gsdHJ5LHNlcXVlbmNlXVxuICAgICAgICAgICAgICAgICAgICAgYXJlIGxvd2VyIHByaW9yaXR5ICopKVxuICAgICAgICAgICAgICAgIChlLCBsKSlcbiAgICB8IFBleHBfY29uc3RydWN0IChsaSwgU29tZSBlbykgd2hlbiBub3QgKGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSlcbiAgICAgIC0+IChcbiAgICAgICAgKCogTm90IGVmZmljaWVudCBGSVhNRSopXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgY29ucyBscyAtPiBsaXN0IChzaW1wbGVfZXhwciBjdHh0KSBmIGxzIH5zZXA6XCJAOzo6QDtcIlxuICAgICAgICB8IGBub3JtYWwgLT4gcHAgZiBcIkBbPDI+JWFAOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9zZXRmaWVsZCAoZTEsIGxpLCBlMikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWFAIDwtQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUxIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgZTJcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSAoZTEsIGUyLCBlbykgLT5cbiAgICAgICAgKCogQDtAWzwyPmVsc2VAICVhQF1AXSAqKVxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8Mj5pZkAgJWFAXUA7QFs8Mj50aGVuQCAlYUBdJWFAXVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgPSBleHByZXNzaW9uICh1bmRlcl9pZnRoZW5lbHNlIGN0eHQpIGluXG4gICAgICAgIHBwIGYgZm10IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMSBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTJcbiAgICAgICAgICAoZnVuIGYgZW8gLT5cbiAgICAgICAgICAgIG1hdGNoIGVvIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIkA7QFs8Mj5lbHNlQDslYUBdXCIgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgKCogcHAgZiBcIigpXCIgKikpXG4gICAgICAgICAgZW9cbiAgICB8IFBleHBfc2VxdWVuY2UgXyAtPlxuICAgICAgICBsZXQgcmVjIHNlcXVlbmNlX2hlbHBlciBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3NlcXVlbmNlIChlMSwgZTIpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIHNlcXVlbmNlX2hlbHBlciAoZTEgOjogYWNjKSBlMlxuICAgICAgICAgIHwgdiAtPiBMaXN0LnJldiAodiA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsc3QgPSBzZXF1ZW5jZV9oZWxwZXIgW10geCBpblxuICAgICAgICBwcCBmIFwiQFs8aHY+JWFAXVwiIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpIGxzdFxuICAgIHwgUGV4cF9uZXcgbGkgLT4gcHAgZiBcIkBbPGhvdjI+bmV3QCAlYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIChzLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPC1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX292ZXJyaWRlIGwgLT5cbiAgICAgICAgKCogRklYTUUgKilcbiAgICAgICAgbGV0IHN0cmluZ194X2V4cHJlc3Npb24gZiAocywgZSkgPVxuICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA9QCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aG92Mj57PCVhPn1AXVwiIChsaXN0IHN0cmluZ194X2V4cHJlc3Npb24gfnNlcDpcIjtcIikgbFxuICAgIHwgUGV4cF9sZXRtb2R1bGUgKHMsIG1lLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5sZXRAIG1vZHVsZUAgJXNAID1AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX2V4cHIgcmVzZXRfY3R4dCkgbWUgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGNkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5sZXRAIGV4Y2VwdGlvbkAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgICAgICAgY2QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9hc3NlcnQgZSAtPiBwcCBmIFwiQFs8aG92Mj5hc3NlcnRAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgIHwgUGV4cF9sYXp5IGUgLT4gcHAgZiBcIkBbPGhvdjI+bGF6eUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgKCogUGV4cF9wb2x5OiBpbXBvc3NpYmxlIGJ1dCB3ZSBzaG91bGQgcHJpbnQgaXQgYW55d2F5LCByYXRoZXIgdGhhblxuICAgICAgIGFzc2VydCBmYWxzZSAqKVxuICAgIHwgUGV4cF9wb2x5IChlLCBOb25lKSAtPiBwcCBmIFwiQFs8aG92Mj4hcG9seSFAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oIXBvbHkhQCAlYUAgOiAlYSlAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGV4cF9vcGVuIChvLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgby5wb3Blbl9leHByIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfdmFyaWFudCAobCwgU29tZSBlbykgLT4gcHAgZiBcIkBbPDI+YCVzQDslYUBdXCIgbCAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICB8IFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+QFs8dj4lYUAsJWFAXSBpbkA7PDEgLTI+JWFAXVwiIChiaW5kaW5nX29wIGN0eHQpIGxldF9cbiAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZ19vcCBjdHh0KSlcbiAgICAgICAgICBhbmRzIChleHByZXNzaW9uIGN0eHQpIGJvZHlcbiAgICB8IFBleHBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IHBwIGYgXCIuXCJcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjEgY3R4dCBmIHhcblxuYW5kIGV4cHJlc3Npb24xIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX29iamVjdCBjcyAtPiBwcCBmIFwiJWFcIiAoY2xhc3Nfc3RydWN0dXJlIGN0eHQpIGNzXG4gICAgfCBfIC0+IGV4cHJlc3Npb24yIGN0eHQgZiB4XG4oKiB1c2VkIGluIFtQZXhwX2FwcGx5XSAqKVxuXG5hbmQgZXhwcmVzc2lvbjIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfZmllbGQgKGUsIGxpKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYS4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGV4cF9zZW5kIChlLCBzKSAtPiBwcCBmIFwiQFs8aG92Mj4lYSMlc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUgcy50eHRcbiAgICB8IF8gLT4gc2ltcGxlX2V4cHIgY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBfIHdoZW4gaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpIC0+IChcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBuaWwgLT4gcHAgZiBcIltdXCJcbiAgICAgICAgfCBgdHVwbGUgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgfCBgbGlzdCB4cyAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGh2MD5bJWFdQF1cIlxuICAgICAgICAgICAgICAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKVxuICAgICAgICAgICAgICB4c1xuICAgICAgICB8IGBzaW1wbGUgeCAtPiBsb25naWRlbnQgZiB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX2lkZW50IGxpIC0+IGxvbmdpZGVudF9sb2MgZiBsaVxuICAgICgqIChtYXRjaCB2aWV3X2ZpeGl0eV9vZl9leHAgeCB3aXRoICopXG4gICAgKCogfGBOb3JtYWwgLT4gbG9uZ2lkZW50X2xvYyBmIGxpICopXG4gICAgKCogfCBgUHJlZml4IF8gfCBgSW5maXggXyAtPiBwcCBmIFwiKCAlYSApXCIgbG9uZ2lkZW50X2xvYyBsaSkgKilcbiAgICB8IFBleHBfY29uc3RhbnQgYyAtPiBjb25zdGFudCBmIGNcbiAgICB8IFBleHBfcGFjayBtZSAtPiBwcCBmIFwiKG1vZHVsZUA7JWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQZXhwX3R1cGxlIGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCVhKUBdXCIgKGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIH5zZXA6XCIsQDtcIikgbFxuICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSA6ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGV4cF9jb2VyY2UgKGUsIGN0bzEsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhJWEgOj4gJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIChvcHRpb24gKGNvcmVfdHlwZSBjdHh0KSB+Zmlyc3Q6XCIgOiBcIiB+bGFzdDpcIiBcIilcbiAgICAgICAgICBjdG8xXG4gICAgICAgICAgKCogbm8gc2VwIGhpbnQqKSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgY3RcbiAgICB8IFBleHBfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBleHBfcmVjb3JkIChsLCBlbykgLT5cbiAgICAgICAgbGV0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gZiAobGksIGUpID1cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9XG4gICAgICAgICAgICB3aGVuIGxpLnR4dCA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjI+e0A7JWElYUBdQDt9QF1cIiAoKiBcIkBbPGhvdjI+eyVhJWF9QF1cIiAqKVxuICAgICAgICAgIChvcHRpb24gfmxhc3Q6XCIgd2l0aEA7XCIgKHNpbXBsZV9leHByIGN0eHQpKVxuICAgICAgICAgIGVvXG4gICAgICAgICAgKGxpc3QgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF9hcnJheSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPDI+W3wlYXxdQF1AXVwiXG4gICAgICAgICAgKGxpc3QgKHNpbXBsZV9leHByICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfd2hpbGUgKGUxLCBlMikgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPSBcIkBbPDI+d2hpbGVAOyVhQDtkb0A7JWFAO2RvbmVAXVwiIGluXG4gICAgICAgIHBwIGYgZm10IChleHByZXNzaW9uIGN0eHQpIGUxIChleHByZXNzaW9uIGN0eHQpIGUyXG4gICAgfCBQZXhwX2ZvciAocywgZTEsIGUyLCBkZiwgZTMpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzxodjI+QFs8Mj5mb3IgJWEgPUA7JWFAOyVhJWFAO2RvQF1AOyVhQF1AO2RvbmVAXVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByZXNzaW9uID0gZXhwcmVzc2lvbiBjdHh0IGluXG4gICAgICAgIHBwIGYgZm10IChwYXR0ZXJuIGN0eHQpIHMgZXhwcmVzc2lvbiBlMSBkaXJlY3Rpb25fZmxhZyBkZiBleHByZXNzaW9uIGUyXG4gICAgICAgICAgZXhwcmVzc2lvbiBlM1xuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChleHByZXNzaW9uIGN0eHQpIGYgeFxuXG5hbmQgYXR0cmlidXRlcyBjdHh0IGYgbCA9IExpc3QuaXRlciAoYXR0cmlidXRlIGN0eHQgZikgbFxuYW5kIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgbCA9IExpc3QuaXRlciAoaXRlbV9hdHRyaWJ1dGUgY3R4dCBmKSBsXG5cbmFuZCBhdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIGl0ZW1fYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgZiB4ID1cbiAgKCogbm90ZTogdmFsdWVfZGVzY3JpcHRpb24gaGFzIGFuIGF0dHJpYnV0ZSBmaWVsZCxcbiAgICAgICAgICAgYnV0IHRoZXkncmUgYWxyZWFkeSBwcmludGVkIGJ5IHRoZSBjYWxsZXJzIHRoaXMgbWV0aG9kICopXG4gIHBwIGYgXCJAWzxob3YyPiVhJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgeC5wdmFsX3R5cGVcbiAgICAoZnVuIGYgeCAtPlxuICAgICAgaWYgeC5wdmFsX3ByaW0gPD4gW10gdGhlblxuICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChsaXN0IGNvbnN0YW50X3N0cmluZykgeC5wdmFsX3ByaW0pXG4gICAgeFxuXG5hbmQgZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPSBwcCBmIFwiQFs8Mj5bJSUlc0AgJWFdQF1cIiBzLnR4dCAocGF5bG9hZCBjdHh0KSBlXG5cbmFuZCBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID1cbiAgcHAgZiBcIkBbPDI+WyUlJSUlc0AgJWFdQF1cIiBzLnR4dCAocGF5bG9hZCBjdHh0KSBlXG5cbmFuZCBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICBwcCBmIFwiQFs8aG92Mj5leGNlcHRpb25AICVhQF0lYVwiXG4gICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgIHgucHR5ZXhuX2NvbnN0cnVjdG9yIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleG5fYXR0cmlidXRlc1xuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGN0Zl9kZXNjIHdpdGhcbiAgfCBQY3RmX2luaGVyaXQgY3QgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaGVyaXRAICVhQF0lYVwiIChjbGFzc190eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX3ZhbCAocywgbWYsIHZmLCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCBAICVhJWElc0AgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX21ldGhvZCAocywgcGYsIHZmLCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCAlYSAlYSVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnRAICVhQCA9QCAlYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY3RmX2V4dGVuc2lvbiBlIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgeC5wY3RmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgeyBwY3NpZ19zZWxmID0gY3Q7IHBjc2lnX2ZpZWxkcyA9IGw7IF8gfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdEBbPDE+JWFAXUAgJWFAXUAgZW5kQF1cIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYW55OyBwdHlwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+ICgpXG4gICAgICB8IGN0IC0+IHBwIGYgXCIgKCVhKVwiIChjb3JlX3R5cGUgY3R4dCkgY3QpXG4gICAgY3RcbiAgICAobGlzdCAoY2xhc3NfdHlwZV9maWVsZCBjdHh0KSB+c2VwOlwiQDtcIilcbiAgICBsXG5cbigqIGNhbGwgW2NsYXNzX3NpZ25hdHVyZV0gY2FsbGVkIGJ5IFtjbGFzc19zaWduYXR1cmVdICopXG5hbmQgY2xhc3NfdHlwZSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGN0eV9kZXNjIHdpdGhcbiAgfCBQY3R5X3NpZ25hdHVyZSBjcyAtPlxuICAgICAgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiBjcztcbiAgICAgIGF0dHJpYnV0ZXMgY3R4dCBmIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgcHAgZiBcIiVhJWElYVwiXG4gICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiWyVhXUAgXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiKSBsKVxuICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2Fycm93IChsLCBjbywgY2wpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUA7LT5AOyVhQF1cIiAoKiBGSVhNRSByZW1vdmUgcGFyZW5zIGxhdGVyICopXG4gICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGNvKSAoY2xhc3NfdHlwZSBjdHh0KSBjbFxuICB8IFBjdHlfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGV4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGF0dHJpYnV0ZXMgY3R4dCBmIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9vcGVuIChvLCBlKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICBsb25naWRlbnRfbG9jIG8ucG9wZW5fZXhwciAoY2xhc3NfdHlwZSBjdHh0KSBlXG5cbigqIFtjbGFzcyB0eXBlIGEgPSBvYmplY3QgZW5kXSAqKVxuYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbCA9XG4gIGxldCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGt3ZCBmIHggPVxuICAgIGxldCB7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gPSB4IGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzQCA9QCAlYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBbIHggXSAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgKGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIpXG4gICAgICAgIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJhbmRcIikpXG4gICAgICAgIHhzXG5cbmFuZCBjbGFzc19maWVsZCBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGNmX2Rlc2Mgd2l0aFxuICB8IFBjZl9pbmhlcml0IChvdmYsIGNlLCBzbykgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaGVyaXRAICVzQCAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIChjbGFzc19leHByIGN0eHQpIGNlXG4gICAgICAgIChmdW4gZiBzbyAtPlxuICAgICAgICAgIG1hdGNoIHNvIHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgcyAtPiBwcCBmIFwiQCBhcyAlc1wiIHMudHh0KVxuICAgICAgICBzbyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfdmFsIChzLCBtZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsJXMgJWElcyA9QDslYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX3ZpcnR1YWwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgdmlydHVhbCAlYSAlcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfdmFsIChzLCBtZiwgQ2ZrX3ZpcnR1YWwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgdmlydHVhbCAlYSVzIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBsZXQgYmluZCBlID1cbiAgICAgICAgYmluZGluZyBjdHh0IGZcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfcGF0ID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIHM7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBwdmJfZXhwciA9IGU7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHZiX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCVzICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgcHJpdmF0ZV9mbGFnIHBmXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlcyA6QDslYT1AOyVhXCIgcy50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgTm9uZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgYmluZCBlXG4gICAgICAgICAgfCBfIC0+IGJpbmQgZSlcbiAgICAgICAgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50ICVhID1AOyVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9pbml0aWFsaXplciBlIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbml0aWFsaXplckAgJWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGNmX2V4dGVuc2lvbiBlIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgeC5wY2ZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc3RydWN0dXJlIGN0eHQgZiB7IHBjc3RyX3NlbGYgPSBwOyBwY3N0cl9maWVsZHMgPSBsIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3QlYUA7JWFAXUA7ZW5kQF1cIlxuICAgIChmdW4gZiBwIC0+XG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICB8IFBwYXRfY29uc3RyYWludCBfIC0+IHBwIGYgXCIgJWFcIiAocGF0dGVybiBjdHh0KSBwXG4gICAgICB8IF8gLT4gcHAgZiBcIiAoJWEpXCIgKHBhdHRlcm4gY3R4dCkgcClcbiAgICBwXG4gICAgKGxpc3QgKGNsYXNzX2ZpZWxkIGN0eHQpKVxuICAgIGxcblxuYW5kIGNsYXNzX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBjbF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBjbF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBjbF9kZXNjIHdpdGhcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgY3MgLT4gY2xhc3Nfc3RydWN0dXJlIGN0eHQgZiBjc1xuICAgIHwgUGNsX2Z1biAobCwgZW8sIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5AICVhQCAtPkAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsLCBlbywgcCkgKGNsYXNzX2V4cHIgY3R4dCkgZVxuICAgIHwgUGNsX2xldCAocmYsIGwsIGNlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAIGluQCAlYVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpIChjbGFzc19leHByIGN0eHQpIGNlXG4gICAgfCBQY2xfYXBwbHkgKGNlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiKCglYSlAICVhKVwiXG4gICAgICAgICAgKCogQ2Y6ICM3MjAwICopIChjbGFzc19leHByIGN0eHQpXG4gICAgICAgICAgY2VcbiAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgIGxcbiAgICB8IFBjbF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIGlmIGwgPD4gW10gdGhlbiBwcCBmIFwiWyVhXUAgXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiKSBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgKGNlLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYUAgOkAgJWEpXCIgKGNsYXNzX2V4cHIgY3R4dCkgY2UgKGNsYXNzX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBjbF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBjbF9vcGVuIChvLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgICBsb25naWRlbnRfbG9jIG8ucG9wZW5fZXhwciAoY2xhc3NfZXhwciBjdHh0KSBlXG5cbmFuZCBtb2R1bGVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAobW9kdWxlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG10eV9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIG10MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ZnVuY3RvciAoKSAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKHMsIG10MSksIG10MikgLT4gKFxuICAgICAgICBtYXRjaCBzLnR4dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdDFcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgICAgICB8IFNvbWUgbmFtZSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+ZnVuY3RvckAgKCVzQCA6QCAlYSlAIC0+QCAlYUBdXCIgbmFtZVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQxIChtb2R1bGVfdHlwZSBjdHh0KSBtdDIpXG4gICAgfCBQbXR5X3dpdGggKG10LCBbXSkgLT4gbW9kdWxlX3R5cGUgY3R4dCBmIG10XG4gICAgfCBQbXR5X3dpdGggKG10LCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgd2l0aEAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXRcbiAgICAgICAgICAobGlzdCAod2l0aF9jb25zdHJhaW50IGN0eHQpIH5zZXA6XCJAIGFuZEAgXCIpXG4gICAgICAgICAgbFxuICAgIHwgXyAtPiBtb2R1bGVfdHlwZTEgY3R4dCBmIHhcblxuYW5kIHdpdGhfY29uc3RyYWludCBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFB3aXRoX3R5cGUgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhID1AICVhXCJcbiAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgbHMgbG9uZ2lkZW50X2xvYyBsaSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB0ZFxuICB8IFB3aXRoX21vZHVsZSAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIGxvbmdpZGVudF9sb2MgbGkyXG4gIHwgUHdpdGhfbW9kdHlwZSAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgKG1vZHVsZV90eXBlIGN0eHQpIG10eVxuICB8IFB3aXRoX3R5cGVzdWJzdCAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgOj1AICVhXCJcbiAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgbHMgbG9uZ2lkZW50X2xvYyBsaSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB0ZFxuICB8IFB3aXRoX21vZHN1YnN0IChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIGxvbmdpZGVudF9sb2MgbGkyXG4gIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgKG1vZHVsZV90eXBlIGN0eHQpIG10eVxuXG5hbmQgbW9kdWxlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBtb2R1bGVfdHlwZSBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X2FsaWFzIGxpIC0+IHBwIGYgXCIobW9kdWxlICVhKVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfc2lnbmF0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjI+c2lnQCAlYUBdQCBlbmRAXVwiICgqIFwiQFs8aG92PnNpZ0AgJWFAIGVuZEBdXCIgKilcbiAgICAgICAgICAobGlzdCAoc2lnbmF0dXJlX2l0ZW0gY3R4dCkpXG4gICAgICAgICAgc1xuICAgICAgICAoKiBGSVhNRSB3cm9uZyBpbmRlbnRhdGlvbiopXG4gICAgfCBQbXR5X3R5cGVvZiBtZSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAIG9mQCAlYUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChtb2R1bGVfdHlwZSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc2lnbmF0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmVfaXRlbSBjdHh0IGYgeCA6IHVuaXQgPVxuICBtYXRjaCB4LnBzaWdfZGVzYyB3aXRoXG4gIHwgUHNpZ190eXBlIChyZiwgbCkgLT4gdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCB0cnVlLCBsKVxuICB8IFBzaWdfdHlwZXN1YnN0IGwgLT5cbiAgICAgICgqIFBzaWdfdHlwZXN1YnN0IGlzIG5ldmVyIHJlY3Vyc2l2ZSwgYnV0IHdlIHNwZWNpZnkgW1JlY3Vyc2l2ZV0gaGVyZSB0b1xuICAgICAgICAgYXZvaWQgcHJpbnRpbmcgYSBbbm9ucmVjXSBmbGFnLCB3aGljaCB3b3VsZCBiZSByZWplY3RlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgKilcbiAgICAgIHR5cGVfZGVmX2xpc3QgY3R4dCBmIChSZWN1cnNpdmUsIGZhbHNlLCBsKVxuICB8IFBzaWdfdmFsdWUgdmQgLT5cbiAgICAgIGxldCBpbnRybyA9IGlmIHZkLnB2YWxfcHJpbSA9IFtdIHRoZW4gXCJ2YWxcIiBlbHNlIFwiZXh0ZXJuYWxcIiBpblxuICAgICAgcHAgZiBcIkBbPDI+JXNAICVhQCA6QCAlYUBdJWFcIiBpbnRybyBwcm90ZWN0X2lkZW50IHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQpIHZkIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgdmQucHZhbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ190eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHNpZ19leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzaWdfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgY2xhc3NfZGVzY3JpcHRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzQDs6QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHNpZ19tb2R1bGVcbiAgICAgICh7XG4gICAgICAgICBwbWRfdHlwZSA9IHsgcG10eV9kZXNjID0gUG10eV9hbGlhcyBhbGlhczsgcG10eV9hdHRyaWJ1dGVzID0gW107IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwbWQpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAID1AICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBhbGlhcyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kdWxlIHBtZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA6QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHN1YnN0IHBtcyAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA6PUAgJWFAXSVhXCIgcG1zLnBtc19uYW1lLnR4dCBsb25naWRlbnRfbG9jXG4gICAgICAgIHBtcy5wbXNfbWFuaWZlc3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbXMucG1zX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX29wZW4gb2QgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm9wZW4lc0AgJWFAXSVhXCJcbiAgICAgICAgKG92ZXJyaWRlIG9kLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICBsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19pbmNsdWRlIGluY2wgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmluY2x1ZGVAICVhQF0lYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBpbmNsLnBpbmNsX21vZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGluY2wucGluY2xfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzaWdfbW9kdHlwZXN1YnN0IHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICAtPlxuICAgICAgbGV0IG1kID1cbiAgICAgICAgbWF0Y2ggbWQgd2l0aCBOb25lIC0+IGFzc2VydCBmYWxzZSAoKiBhc3QgaW52YXJpYW50ICopIHwgU29tZSBtdCAtPiBtdFxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXNAIDo9QCAlYUBdJWFcIiBzLnR4dCAobW9kdWxlX3R5cGUgY3R4dCkgbWRcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzaWdfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzaWdfcmVjbW9kdWxlIGRlY2xzIC0+XG4gICAgICBsZXQgcmVjIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiA/KGZpcnN0ID0gdHJ1ZSkgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgcG1kIDo6IHRsIC0+XG4gICAgICAgICAgICBpZiBub3QgZmlyc3QgdGhlblxuICAgICAgICAgICAgICBwcCBmIFwiQCBAWzxob3YyPmFuZEAgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgcmVjQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgfmZpcnN0OmZhbHNlIHRsXG4gICAgICBpblxuICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIGRlY2xzXG4gIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgYSkgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBhXG5cbmFuZCBtb2R1bGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucG1vZF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAobW9kdWxlX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG1vZF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjI+c3RydWN0QDtAWzwwPiVhQF1AOzwxIC0yPmVuZEBdXCJcbiAgICAgICAgICAobGlzdCAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgfnNlcDpcIkBcXG5cIilcbiAgICAgICAgICBzXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgKG1lLCBtdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCVhQCA6QCAlYSlAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZSAobW9kdWxlX3R5cGUgY3R4dCkgbXRcbiAgICB8IFBtb2RfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBtZSkgLT4gcHAgZiBcImZ1bmN0b3IgKClAOy0+QDslYVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAocywgbXQpLCBtZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bmN0b3JAICglc0AgOkAgJWEpQDstPkA7JWFcIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG1vZF9hcHBseSAobWUxLCBtZTIpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEpKCVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZTEgKG1vZHVsZV9leHByIGN0eHQpIG1lMlxuICAgICAgICAoKiBDZjogIzcyMDAgKilcbiAgICB8IFBtb2RfdW5wYWNrIGUgLT4gcHAgZiBcIih2YWxAICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG5cbmFuZCBzdHJ1Y3R1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgcGF5bG9hZCBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFBTdHIgWyB7IHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZSwgYXR0cnMpIH0gXSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUFN0ciB4IC0+IHN0cnVjdHVyZSBjdHh0IGYgeFxuICB8IFBUeXAgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgY29yZV90eXBlIGN0eHQgZiB4XG4gIHwgUFNpZyB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBzaWduYXR1cmUgY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBOb25lKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHg7XG4gICAgICBwcCBmIFwiIHdoZW4gXCI7XG4gICAgICBleHByZXNzaW9uIGN0eHQgZiBlXG5cbigqIHRyYW5zZm9ybSBbZiA9IGZ1biBnIGggLT4gLi5dIHRvIFtmIGcgaCA9IC4uLiBdIGNvdWxkIGJlIGltcHJvdmVkICopXG5hbmQgYmluZGluZyBjdHh0IGYgeyBwdmJfcGF0ID0gcDsgcHZiX2V4cHIgPSB4OyBfIH0gPVxuICAoKiAucHZiX2F0dHJpYnV0ZXMgaGF2ZSBhbHJlYWR5IGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyLCAjYmluZGluZ3MgKilcbiAgbGV0IHJlYyBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGYgeCA9XG4gICAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2Z1biAobGFiZWwsIGVvLCBwLCBlKSAtPlxuICAgICAgICAgIGlmIGxhYmVsID0gTm9sYWJlbCB0aGVuXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGxhYmVsLCBlbywgcCkgcHBfcHJpbnRfcGV4cF9mdW5jdGlvblxuICAgICAgICAgICAgICBlXG4gICAgICB8IFBleHBfbmV3dHlwZSAoc3RyLCBlKSAtPlxuICAgICAgICAgIHBwIGYgXCIodHlwZUAgJXMpQCAlYVwiIHN0ci50eHQgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBlXG4gICAgICB8IF8gLT4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBpblxuICBsZXQgdHl2YXJzX3N0ciB0eXZhcnMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHR5dmFycyBpblxuICBsZXQgaXNfZGVzdWdhcmVkX2dhZHQgcCBlID1cbiAgICBsZXQgZ2FkdF9wYXR0ZXJuID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAgIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gKTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBTb21lIChwYXQsIGFyZ3NfdHl2YXJzLCBydClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhZHRfZXhwIHR5dmFycyBlID1cbiAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgZ2FkdF9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgZ2FkdF9leHAgPSBnYWR0X2V4cCBbXSBlIGluXG4gICAgbWF0Y2ggKGdhZHRfcGF0dGVybiwgZ2FkdF9leHApIHdpdGhcbiAgICB8IFNvbWUgKHAsIHB0X3R5dmFycywgcHRfY3QpLCBTb21lIChlX3R5dmFycywgZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuIFNvbWUgKHAsIHB0X3R5dmFycywgZV9jdCwgZSkgZWxzZSBOb25lXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwge1xuICAgICBwcGF0X2Rlc2MgPVxuICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfSBhcyB0eXApICk7XG4gICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICBfO1xuICAgIH0gLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwYXQgKGNvcmVfdHlwZSBjdHh0KSB0eXBcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHhcbiAgZWxzZVxuICAgIG1hdGNoIGlzX2Rlc3VnYXJlZF9nYWR0IHAgeCB3aXRoXG4gICAgfCBTb21lIChwLCBbXSwgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgU29tZSAocCwgdHl2YXJzLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6IHR5cGVAOyVhLkA7JWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAobGlzdCBwcF9wcmludF9zdHJpbmcgfnNlcDpcIkA7XCIpXG4gICAgICAgICAgKHR5dmFyc19zdHIgdHl2YXJzKSAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocCwgdHkpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+IChcbiAgICAgICAgICAgICgqIHNwZWNpYWwgY2FzZSBmb3IgdGhlIGZpcnN0KilcbiAgICAgICAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgICAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgcHR5cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlYUA7OkA7JWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgICAgICAgICAgdHkgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglYUA7OkA7JWEpQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIHR5IChleHByZXNzaW9uIGN0eHQpIHgpXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiB4XG4gICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuXG4oKiBbaW5dIGlzIG5vdCBwcmludGVkICopXG5hbmQgYmluZGluZ3MgY3R4dCBmIChyZiwgbCkgPVxuICBsZXQgYmluZGluZyBrd2QgcmYgZiB4ID1cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhQF0lYVwiIGt3ZCByZWNfZmxhZyByZiAoYmluZGluZyBjdHh0KSB4XG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHZiX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBbIHggXSAtPiBiaW5kaW5nIFwibGV0XCIgcmYgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIiAoYmluZGluZyBcImxldFwiIHJmKSB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nIFwiYW5kXCIgTm9ucmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIGJpbmRpbmdfb3AgY3R4dCBmIHggPVxuICBtYXRjaCAoeC5wYm9wX3BhdCwgeC5wYm9wX2V4cCkgd2l0aFxuICB8ICggeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dCA9IHB2YXI7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgIHtcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBldmFyOyBfIH07XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBfO1xuICAgICAgfSApXG4gICAgd2hlbiBwdmFyID0gZXZhciAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJXNAXVwiIHgucGJvcF9vcC50eHQgZXZhclxuICB8IHBhdCwgZXhwIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlYUA7PUA7JWFAXVwiIHgucGJvcF9vcC50eHQgKHBhdHRlcm4gY3R4dCkgcGF0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGV4cFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gY3R4dCBmIHggPVxuICBtYXRjaCB4LnBzdHJfZGVzYyB3aXRoXG4gIHwgUHN0cl9ldmFsIChlLCBhdHRycykgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPjs7JWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl90eXBlIChfLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgUHN0cl90eXBlIChyZiwgbCkgLT4gdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCB0cnVlLCBsKVxuICB8IFBzdHJfdmFsdWUgKHJmLCBsKSAtPlxuICAgICAgKCogcHAgZiBcIkBbPGhvdjI+bGV0ICVhJWFAXVwiICByZWNfZmxhZyByZiBiaW5kaW5ncyBsICopXG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbClcbiAgfCBQc3RyX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc3RyX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHN0cl9tb2R1bGUgeCAtPlxuICAgICAgbGV0IHJlYyBtb2R1bGVfaGVscGVyID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoYXJnX29wdCwgbWUnKTsgcG1vZF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgKG1hdGNoIGFyZ19vcHQgd2l0aFxuICAgICAgICAgICAgfCBVbml0IC0+IHBwIGYgXCIoKVwiXG4gICAgICAgICAgICB8IE5hbWVkIChzLCBtdCkgLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVzOiVhKVwiXG4gICAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10KTtcbiAgICAgICAgICAgIG1vZHVsZV9oZWxwZXIgbWUnXG4gICAgICAgIHwgbWUgLT4gbWVcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGUgJXMlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHgucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAoZnVuIGYgbWUgLT5cbiAgICAgICAgICBsZXQgbWUgPSBtb2R1bGVfaGVscGVyIG1lIGluXG4gICAgICAgICAgbWF0Y2ggbWUgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwbW9kX2Rlc2MgPVxuICAgICAgICAgICAgIFBtb2RfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKG1lJywgKHsgcG10eV9kZXNjID0gUG10eV9pZGVudCBfIHwgUG10eV9zaWduYXR1cmUgXzsgXyB9IGFzIG10KSk7XG4gICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiA6QDslYUA7PUA7JWFAO1wiIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dClcbiAgICAgICAgICAgICAgICBtZSdcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIiA9QCAlYVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZSlcbiAgICAgICAgeC5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucG1iX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX29wZW4gb2QgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm9wZW4lc0A7JWFAXSVhXCJcbiAgICAgICAgKG92ZXJyaWRlIG9kLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGV4dHJhY3RfY2xhc3NfYXJncyBjbCA9XG4gICAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9mdW4gKGwsIGVvLCBwLCBjbCcpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgbG9vcCAoKGwsIGVvLCBwKSA6OiBhY2MpIGNsJ1xuICAgICAgICAgIHwgY2wgLT4gKExpc3QucmV2IGFjYywgY2wpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhcmdzLCBjbCA9IGxvb3AgW10gY2wgaW5cbiAgICAgICAgbGV0IGNvbnN0ciwgY2wgPVxuICAgICAgICAgIG1hdGNoIGNsIHdpdGhcbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfY29uc3RyYWludCAoY2wnLCBjdCk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICAoU29tZSBjdCwgY2wnKVxuICAgICAgICAgIHwgXyAtPiAoTm9uZSwgY2wpXG4gICAgICAgIGluXG4gICAgICAgIChhcmdzLCBjb25zdHIsIGNsKVxuICAgICAgaW5cbiAgICAgIGxldCBjbGFzc19jb25zdHJhaW50IGYgY3QgPSBwcCBmIFwiOiBAWyVhQF0gXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgaW5cbiAgICAgIGxldCBjbGFzc19kZWNsYXJhdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBsZXQgYXJncywgY29uc3RyLCBjbCA9IGV4dHJhY3RfY2xhc3NfYXJncyB4LnBjaV9leHByIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElcyAlYSVhPUA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0XG4gICAgICAgICAgKGxpc3QgKGxhYmVsX2V4cCBjdHh0KSlcbiAgICAgICAgICBhcmdzIChvcHRpb24gY2xhc3NfY29uc3RyYWludCkgY29uc3RyIChjbGFzc19leHByIGN0eHQpIGNsXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVjbGFyYXRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc3RyX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc3RyX3ByaW1pdGl2ZSB2ZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+ZXh0ZXJuYWxAICVhQCA6QCAlYUBdJWFcIiBwcm90ZWN0X2lkZW50IHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQpIHZkIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgdmQucHZhbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9pbmNsdWRlIGluY2wgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmluY2x1ZGVAICVhQF0lYVwiIChtb2R1bGVfZXhwciBjdHh0KSBpbmNsLnBpbmNsX21vZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGluY2wucGluY2xfYXR0cmlidXRlc1xuICB8IFBzdHJfcmVjbW9kdWxlIGRlY2xzIC0+IChcbiAgICAgICgqIDMuMDcgKilcbiAgICAgIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlczolYUAgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgIHwgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXNAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGRlY2xzIHdpdGhcbiAgICAgIHwgKHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iKVxuICAgICAgICA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlczolYUAgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBwbWIgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXNAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgYSkgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBhXG5cbmFuZCB0eXBlX3BhcmFtIGN0eHQgZiAoY3QsIChhLCBiKSkgPVxuICBwcCBmIFwiJXMlcyVhXCIgKHR5cGVfdmFyaWFuY2UgYSkgKHR5cGVfaW5qZWN0aXZpdHkgYikgKGNvcmVfdHlwZSBjdHh0KSBjdFxuXG5hbmQgdHlwZV9wYXJhbXMgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIiVhIFwiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLEA7XCIpIGxcblxuYW5kIHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgZXhwb3J0ZWQsIGwpID1cbiAgbGV0IHR5cGVfZGVjbCBrd2QgcmYgZiB4ID1cbiAgICBsZXQgZXEgPVxuICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgJiYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiBcIlwiXG4gICAgICBlbHNlIGlmIGV4cG9ydGVkIHRoZW4gXCIgPVwiXG4gICAgICBlbHNlIFwiIDo9XCJcbiAgICBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElcyVzJWFAXSVhXCIga3dkIG5vbnJlY19mbGFnIHJmICh0eXBlX3BhcmFtcyBjdHh0KVxuICAgICAgeC5wdHlwZV9wYXJhbXMgeC5wdHlwZV9uYW1lLnR4dCBlcSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB4XG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5cGVfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiB0eXBlX2RlY2wgXCJ0eXBlXCIgcmYgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIiAodHlwZV9kZWNsIFwidHlwZVwiIHJmKSB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiICh0eXBlX2RlY2wgXCJhbmRcIiBSZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgcmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQgZiBsYmxzID1cbiAgbGV0IHR5cGVfcmVjb3JkX2ZpZWxkIGYgcGxkID1cbiAgICBwcCBmIFwiQFs8Mj4lYSVzOkA7JWFAOyVhQF1cIiBtdXRhYmxlX2ZsYWcgcGxkLnBsZF9tdXRhYmxlIHBsZC5wbGRfbmFtZS50eHRcbiAgICAgIChjb3JlX3R5cGUgY3R4dCkgcGxkLnBsZF90eXBlIChhdHRyaWJ1dGVzIGN0eHQpIHBsZC5wbGRfYXR0cmlidXRlc1xuICBpblxuICBwcCBmIFwie0BcXG4lYX1cIiAobGlzdCB0eXBlX3JlY29yZF9maWVsZCB+c2VwOlwiO0BcXG5cIikgbGJsc1xuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gICgqIHR5cGVfZGVjbGFyYXRpb24gaGFzIGFuIGF0dHJpYnV0ZSBmaWVsZCxcbiAgICAgYnV0IGl0J3MgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgKilcbiAgbGV0IHByaXYgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9wcml2YXRlIHdpdGggUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwiQDtwcml2YXRlXCJcbiAgaW5cbiAgbGV0IG1hbmlmZXN0IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5IC0+XG4gICAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0IHRoZW5cbiAgICAgICAgICBwcCBmIFwiJXRAOyVhXCIgcHJpdiAoY29yZV90eXBlIGN0eHQpIHlcbiAgICAgICAgZWxzZSBwcCBmIFwiQDslYVwiIChjb3JlX3R5cGUgY3R4dCkgeVxuICBpblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gZiBwY2QgPVxuICAgIHBwIGYgXCJ8QDtcIjtcbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGZcbiAgICAgICggcGNkLnBjZF9uYW1lLnR4dCxcbiAgICAgICAgcGNkLnBjZF92YXJzLFxuICAgICAgICBwY2QucGNkX2FyZ3MsXG4gICAgICAgIHBjZC5wY2RfcmVzLFxuICAgICAgICBwY2QucGNkX2F0dHJpYnV0ZXMgKVxuICBpblxuICBsZXQgcmVwciBmID1cbiAgICBsZXQgaW50cm8gZiA9IGlmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gKCkgZWxzZSBwcCBmIFwiQDs9XCIgaW5cbiAgICBtYXRjaCB4LnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCB4cyAtPlxuICAgICAgICBsZXQgdmFyaWFudHMgZm10IHhzID1cbiAgICAgICAgICBpZiB4cyA9IFtdIHRoZW4gcHAgZm10IFwiIHxcIlxuICAgICAgICAgIGVsc2UgcHAgZm10IFwiQFxcbiVhXCIgKGxpc3QgfnNlcDpcIkBcXG5cIiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbikgeHNcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIiV0JXQlYVwiIGludHJvIHByaXYgdmFyaWFudHMgeHNcbiAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgfCBQdHlwZV9yZWNvcmQgbCAtPiBwcCBmIFwiJXQldEA7JWFcIiBpbnRybyBwcml2IChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbFxuICAgIHwgUHR5cGVfb3BlbiAtPiBwcCBmIFwiJXQldEA7Li5cIiBpbnRybyBwcml2XG4gIGluXG4gIGxldCBjb25zdHJhaW50cyBmID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKGN0MSwgY3QyLCBfKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGNvbnN0cmFpbnRAICVhQCA9QCAlYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0MilcbiAgICAgIHgucHR5cGVfY3N0cnNcbiAgaW5cbiAgcHAgZiBcIiV0JXQldFwiIG1hbmlmZXN0IHJlcHIgY29uc3RyYWludHNcblxuYW5kIHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB4ID1cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBmIHggPVxuICAgIHBwIGYgXCJAXFxufEA7JWFcIiAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpIHhcbiAgaW5cbiAgcHAgZiBcIkBbPDI+dHlwZSAlYSVhICs9ICVhQCAlYUBdJWFcIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgcHAgZiBcIiVhQDtcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixcIikgbClcbiAgICB4LnB0eWV4dF9wYXJhbXMgbG9uZ2lkZW50X2xvYyB4LnB0eWV4dF9wYXRoIHByaXZhdGVfZmxhZ1xuICAgIHgucHR5ZXh0X3ByaXZhdGUgKCogQ2Y6ICM3MjAwICopXG4gICAgKGxpc3QgfnNlcDpcIlwiIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICB4LnB0eWV4dF9jb25zdHJ1Y3RvcnMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4dF9hdHRyaWJ1dGVzXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGYgKG5hbWUsIHZhcnMsIGFyZ3MsIHJlcywgYXR0cnMpID1cbiAgbGV0IG5hbWUgPSBtYXRjaCBuYW1lIHdpdGggXCI6OlwiIC0+IFwiKDo6KVwiIHwgcyAtPiBzIGluXG4gIGxldCBwcF92YXJzIGYgdnMgPVxuICAgIG1hdGNoIHZzIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCB2cyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgdnNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBwcCBmIFwiJXMlYUA7JWFcIiBuYW1lXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gKClcbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+IHBwIGYgXCJAO29mQDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbClcbiAgICAgICAgYXJncyAoYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFNvbWUgciAtPlxuICAgICAgcHAgZiBcIiVzOkA7JWElYUA7JWFcIiBuYW1lIHBwX3ZhcnMgdmFyc1xuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+IGNvcmVfdHlwZTEgY3R4dCBmIHJcbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDstPkA7JWFcIlxuICAgICAgICAgICAgICAgIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKVxuICAgICAgICAgICAgICAgIGwgKGNvcmVfdHlwZTEgY3R4dCkgclxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDstPkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwgKGNvcmVfdHlwZTEgY3R4dCkgcilcbiAgICAgICAgYXJncyAoYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQgZiB4ID1cbiAgKCogQ2Y6ICM3MjAwICopXG4gIG1hdGNoIHgucGV4dF9raW5kIHdpdGhcbiAgfCBQZXh0X2RlY2wgKHYsIGwsIHIpIC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGZcbiAgICAgICAgKHgucGV4dF9uYW1lLnR4dCwgdiwgbCwgciwgeC5wZXh0X2F0dHJpYnV0ZXMpXG4gIHwgUGV4dF9yZWJpbmQgbGkgLT5cbiAgICAgIHBwIGYgXCIlc0A7PUA7JWElYVwiIHgucGV4dF9uYW1lLnR4dCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGV4dF9hdHRyaWJ1dGVzXG5cbmFuZCBjYXNlX2xpc3QgY3R4dCBmIGwgOiB1bml0ID1cbiAgbGV0IGF1eCBmIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gPVxuICAgIHBwIGYgXCJAO3wgQFs8Mj4lYSVhQDstPkA7JWFAXVwiIChwYXR0ZXJuIGN0eHQpIHBjX2xoc1xuICAgICAgKG9wdGlvbiAoZXhwcmVzc2lvbiBjdHh0KSB+Zmlyc3Q6XCJAO3doZW5AO1wiKVxuICAgICAgcGNfZ3VhcmRcbiAgICAgIChleHByZXNzaW9uICh1bmRlcl9waXBlIGN0eHQpKVxuICAgICAgcGNfcmhzXG4gIGluXG4gIGxpc3QgYXV4IGYgbCB+c2VwOlwiXCJcblxuYW5kIGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0IGYgKGwsIGUpID1cbiAgbGV0IHNpbXBsZV9uYW1lID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBsOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgU29tZSBsXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBleHByZXNzaW9uMiBjdHh0IGYgZSAoKiBsZXZlbCAyKilcbiAgfCBPcHRpb25hbCBzdHIgLT5cbiAgICAgIGlmIFNvbWUgc3RyID0gc2ltcGxlX25hbWUgdGhlbiBwcCBmIFwiPyVzXCIgc3RyXG4gICAgICBlbHNlIHBwIGYgXCI/JXM6JWFcIiBzdHIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgfCBMYWJlbGxlZCBsYmwgLT5cbiAgICAgIGlmIFNvbWUgbGJsID0gc2ltcGxlX25hbWUgdGhlbiBwcCBmIFwifiVzXCIgbGJsXG4gICAgICBlbHNlIHBwIGYgXCJ+JXM6JWFcIiBsYmwgKHNpbXBsZV9leHByIGN0eHQpIGVcblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCBmIHggPVxuICBtYXRjaCB4LnBkaXJhX2Rlc2Mgd2l0aFxuICB8IFBkaXJfc3RyaW5nIHMgLT4gcHAgZiBcIkAgJVNcIiBzXG4gIHwgUGRpcl9pbnQgKG4sIE5vbmUpIC0+IHBwIGYgXCJAICVzXCIgblxuICB8IFBkaXJfaW50IChuLCBTb21lIG0pIC0+IHBwIGYgXCJAICVzJWNcIiBuIG1cbiAgfCBQZGlyX2lkZW50IGxpIC0+IHBwIGYgXCJAICVhXCIgbG9uZ2lkZW50IGxpXG4gIHwgUGRpcl9ib29sIGIgLT4gcHAgZiBcIkAgJXNcIiAoc3RyaW5nX29mX2Jvb2wgYilcblxubGV0IHRvcGxldmVsX3BocmFzZSBmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBQdG9wX2RlZiBzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCAoc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dCkpIHNcbiAgKCogcHBfb3Blbl9odmJveCBmIDA7ICopXG4gICgqIHBwX3ByaW50X2xpc3Qgc3RydWN0dXJlX2l0ZW0gZiBzIDsgKilcbiAgKCogcHBfY2xvc2VfYm94IGYgKCk7ICopXG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gTm9uZTsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAXVwiIHBkaXJfbmFtZS50eHRcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBTb21lIHBkaXJfYXJnOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0AgJWFAXVwiIHBkaXJfbmFtZS50eHQgZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnXG5cbmxldCBleHByZXNzaW9uIGYgeCA9IHBwIGYgXCJAWyVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSB4XG5cbmxldCBzdHJpbmdfb2ZfZXhwcmVzc2lvbiB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIGV4cHJlc3Npb24gZiB4O1xuICBmbHVzaF9zdHJfZm9ybWF0dGVyICgpXG5cbmxldCBzdHJpbmdfb2Zfc3RydWN0dXJlIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgc3RydWN0dXJlIHJlc2V0X2N0eHQgZiB4O1xuICBmbHVzaF9zdHJfZm9ybWF0dGVyICgpXG5cbmxldCB0b3BfcGhyYXNlIGYgeCA9XG4gIHBwX3ByaW50X25ld2xpbmUgZiAoKTtcbiAgdG9wbGV2ZWxfcGhyYXNlIGYgeDtcbiAgcHAgZiBcIjs7XCI7XG4gIHBwX3ByaW50X25ld2xpbmUgZiAoKVxuXG5sZXQgY29yZV90eXBlID0gY29yZV90eXBlIHJlc2V0X2N0eHRcbmxldCBwYXR0ZXJuID0gcGF0dGVybiByZXNldF9jdHh0XG5sZXQgc2lnbmF0dXJlID0gc2lnbmF0dXJlIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2V4cHIgPSBjbGFzc19leHByIHJlc2V0X2N0eHRcbmxldCBjbGFzc19maWVsZCA9IGNsYXNzX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBjbGFzc190eXBlID0gY2xhc3NfdHlwZSByZXNldF9jdHh0XG5sZXQgY2xhc3Nfc2lnbmF0dXJlID0gY2xhc3Nfc2lnbmF0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc190eXBlX2ZpZWxkID0gY2xhc3NfdHlwZV9maWVsZCByZXNldF9jdHh0XG5sZXQgbW9kdWxlX2V4cHIgPSBtb2R1bGVfZXhwciByZXNldF9jdHh0XG5sZXQgbW9kdWxlX3R5cGUgPSBtb2R1bGVfdHlwZSByZXNldF9jdHh0XG5sZXQgc2lnbmF0dXJlX2l0ZW0gPSBzaWduYXR1cmVfaXRlbSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlX2l0ZW0gPSBzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0XG5sZXQgdHlwZV9kZWNsYXJhdGlvbiA9IHR5cGVfZGVjbGFyYXRpb24gcmVzZXRfY3R4dFxuIiwibW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgbG9jICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSAoKiogW00uKFQpXSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2ZcbiAgICAgICAgZnVuY3Rpb25fcGFyYW0gbGlzdCAqIHR5cGVfY29uc3RyYWludCBvcHRpb24gKiBmdW5jdGlvbl9ib2R5XG4gICAgKCoqIFtQZXhwX2Z1bmN0aW9uIChbUDE7IC4uLjsgUG5dLCBDLCBib2R5KV0gcmVwcmVzZW50cyBhbnkgY29uc3RydWN0XG4gICAgICAgIGludm9sdmluZyBbZnVuXSBvciBbZnVuY3Rpb25dLCBpbmNsdWRpbmc6XG4gICAgICAgIC0gW2Z1biBQMSAuLi4gUG4gLT4gRV1cbiAgICAgICAgICB3aGVuIFtib2R5ID0gUGZ1bmN0aW9uX2JvZHkgRV1cbiAgICAgICAgLSBbZnVuIFAxIC4uLiBQbiAtPiBmdW5jdGlvbiBwMSAtPiBlMSB8IC4uLiB8IHBtIC0+IGVtXVxuICAgICAgICAgIHdoZW4gW2JvZHkgPSBQZnVuY3Rpb25fY2FzZXMgWyBwMSAtPiBlMTsgLi4uOyBwbSAtPiBlbSBdXVxuICAgICAgICBbQ10gcmVwcmVzZW50cyBhIHR5cGUgY29uc3RyYWludCBvciBjb2VyY2lvbiBwbGFjZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZVxuICAgICAgICBhcnJvdywgZS5nLiBbZnVuIFAxIC4uLiBQbiA6IHR5IC0+IC4uLl0gd2hlbiBbQyA9IFNvbWUgKFBjb25zdHJhaW50IHR5KV0uXG4gICAgICAgIEEgZnVuY3Rpb24gbXVzdCBoYXZlIHBhcmFtZXRlcnMuIFtQZXhwX2Z1bmN0aW9uIChwYXJhbXMsIF8sIGJvZHkpXSBtdXN0XG4gICAgICAgIGhhdmUgbm9uLWVtcHR5IFtwYXJhbXNdIG9yIGEgW1BmdW5jdGlvbl9jYXNlcyBfXSBib2R5LlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGZ1bmN0aW9uX3BhcmFtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtX2Rlc2MgKikgPVxuICAgIHwgUHBhcmFtX3ZhbCBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm5cbiAgICAoKiogW1BwYXJhbV92YWwgKGxibCwgZXhwMCwgUCldIHJlcHJlc2VudHMgdGhlIHBhcmFtZXRlcjpcbiAgICAgICAgLSBbUF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAtIFt+bDpQXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAtIFs/bDpQXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAtIFs/bDooUCA9IEUwKV1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICBOb3RlOiBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICopXG4gICAgfCBQcGFyYW1fbmV3dHlwZSBvZiBzdHJpbmcgbG9jXG4gICAgKCoqIFtQcGFyYW1fbmV3dHlwZSB4XSByZXByZXNlbnRzIHRoZSBwYXJhbWV0ZXIgWyh0eXBlIHgpXS5cbiAgICAgICAgW3hdIGNhcnJpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBpZGVudGlmaWVyLCB3aGVyZWFzIHRoZSBbcHBhcmFtX2xvY11cbiAgICAgICAgb24gdGhlIGVuY2xvc2luZyBbZnVuY3Rpb25fcGFyYW1dIG5vZGUgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBbKHR5cGUgeCldXG4gICAgICAgIGFzIGEgd2hvbGUuXG5cbiAgICAgICAgTXVsdGlwbGUgcGFyYW1ldGVycyBbKHR5cGUgYSBiIGMpXSBhcmUgcmVwcmVzZW50ZWQgYXMgbXVsdGlwbGVcbiAgICAgICAgW1BwYXJhbV9uZXd0eXBlXSBub2RlcywgbGV0J3Mgc2F5OlxuXG4gICAgICAgIHtbIFsgeyBwcGFyYW1fa2luZCA9IFBwYXJhbV9uZXd0eXBlIGE7IHBwYXJhbV9sb2MgPSBsb2MxIH07XG4gICAgICAgICAgICAgeyBwcGFyYW1fa2luZCA9IFBwYXJhbV9uZXd0eXBlIGI7IHBwYXJhbV9sb2MgPSBsb2MyIH07XG4gICAgICAgICAgICAgeyBwcGFyYW1fa2luZCA9IFBwYXJhbV9uZXd0eXBlIGM7IHBwYXJhbV9sb2MgPSBsb2MzIH07XG4gICAgICAgICAgIF1cbiAgICAgICAgXX1cblxuICAgICAgICBIZXJlLCB0aGUgZmlyc3QgbG9jIFtsb2MxXSBpcyB0aGUgbG9jYXRpb24gb2YgWyh0eXBlIGEgYiBjKV0sIGFuZCB0aGVcbiAgICAgICAgc3Vic2VxdWVudCBsb2NzIFtsb2MyXSBhbmQgW2xvYzNdIGFyZSB0aGUgc2FtZSBhcyBbbG9jMV0sIGV4Y2VwdCBtYXJrZWQgYXNcbiAgICAgICAgZ2hvc3QgbG9jYXRpb25zLiBUaGUgbG9jYXRpb25zIG9uIFthXSwgW2JdLCBbY10sIGNvcnJlc3BvbmQgdG8gdGhlXG4gICAgICAgIHZhcmlhYmxlcyBbYV0sIFtiXSwgYW5kIFtjXSBpbiB0aGUgc291cmNlIGNvZGUuXG4gICAgKilcblxuICBhbmQgZnVuY3Rpb25fcGFyYW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtICopID1cbiAgICB7IHBwYXJhbV9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHBhcmFtX2Rlc2MgOiBmdW5jdGlvbl9wYXJhbV9kZXNjO1xuICAgIH1cblxuICBhbmQgZnVuY3Rpb25fYm9keSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fYm9keSAqKSA9XG4gICAgfCBQZnVuY3Rpb25fYm9keSBvZiBleHByZXNzaW9uXG4gICAgfCBQZnVuY3Rpb25fY2FzZXMgb2YgY2FzZSBsaXN0ICogTG9jYXRpb24udCAqIGF0dHJpYnV0ZXNcbiAgICAoKiogSW4gW1BmdW5jdGlvbl9jYXNlcyAoXywgbG9jLCBhdHRycyldLCB0aGUgbG9jYXRpb24gZXh0ZW5kcyBmcm9tIHRoZVxuICAgICAgICBzdGFydCBvZiB0aGUgW2Z1bmN0aW9uXSBrZXl3b3JkIHRvIHRoZSBlbmQgb2YgdGhlIGxhc3QgY2FzZS4gVGhlIGNvbXBpbGVyXG4gICAgICAgIHdpbGwgb25seSB1c2UgdHlwZWNoZWNraW5nLXJlbGF0ZWQgYXR0cmlidXRlcyBmcm9tIFthdHRyc10sIGUuZy4gZW5hYmxpbmdcbiAgICAgICAgb3IgZGlzYWJsaW5nIGEgd2FybmluZy5cbiAgICAqKVxuICAoKiogU2VlIHRoZSBjb21tZW50IG9uIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bmN0aW9ufVtQZXhwX2Z1bmN0aW9uXX0uICopXG5cbiAgYW5kIHR5cGVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9jb25zdHJhaW50ICopID1cbiAgICB8IFBjb25zdHJhaW50IG9mIGNvcmVfdHlwZVxuICAgIHwgUGNvZXJjZSBvZiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICgqKiBTZWUgdGhlIGNvbW1lbnQgb24ge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVuY3Rpb259W1BleHBfZnVuY3Rpb25dfS4gKilcblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzNFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzNFwiXG5lbmRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID0ge1xuICAgIHBjb25zdF9kZXNjIDogY29uc3RhbnRfZGVzYztcbiAgICBwY29uc3RfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIGFuZCBjb25zdGFudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudF9kZXNjICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nIGxvYyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG4gICAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cblxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlICgqKiBbTS4oVCldICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZWZmZWN0IG9mIHBhdHRlcm4gKiBwYXR0ZXJuICgqIFBhdHRlcm4gW2VmZmVjdCBQIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mXG4gICAgICAgIGZ1bmN0aW9uX3BhcmFtIGxpc3QgKiB0eXBlX2NvbnN0cmFpbnQgb3B0aW9uICogZnVuY3Rpb25fYm9keVxuICAgICgqKiBbUGV4cF9mdW5jdGlvbiAoW1AxOyAuLi47IFBuXSwgQywgYm9keSldIHJlcHJlc2VudHMgYW55IGNvbnN0cnVjdFxuICAgICAgICBpbnZvbHZpbmcgW2Z1bl0gb3IgW2Z1bmN0aW9uXSwgaW5jbHVkaW5nOlxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IEVdXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9ib2R5IEVdXG4gICAgICAgIC0gW2Z1biBQMSAuLi4gUG4gLT4gZnVuY3Rpb24gcDEgLT4gZTEgfCAuLi4gfCBwbSAtPiBlbV1cbiAgICAgICAgICB3aGVuIFtib2R5ID0gUGZ1bmN0aW9uX2Nhc2VzIFsgcDEgLT4gZTE7IC4uLjsgcG0gLT4gZW0gXV1cblxuICAgICAgICBbQ10gcmVwcmVzZW50cyBhIHR5cGUgY29uc3RyYWludCBvciBjb2VyY2lvbiBwbGFjZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZVxuICAgICAgICBhcnJvdywgZS5nLiBbZnVuIFAxIC4uLiBQbiA6IHR5IC0+IC4uLl0gd2hlbiBbQyA9IFNvbWUgKFBjb25zdHJhaW50IHR5KV0uXG5cbiAgICAgICAgQSBmdW5jdGlvbiBtdXN0IGhhdmUgcGFyYW1ldGVycy4gW1BleHBfZnVuY3Rpb24gKHBhcmFtcywgXywgYm9keSldIG11c3RcbiAgICAgICAgaGF2ZSBub24tZW1wdHkgW3BhcmFtc10gb3IgYSBbUGZ1bmN0aW9uX2Nhc2VzIF9dIGJvZHkuXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbV9kZXNjICopID1cbiAgICB8IFBwYXJhbV92YWwgb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuXG4gICAgKCoqIFtQcGFyYW1fdmFsIChsYmwsIGV4cDAsIFApXSByZXByZXNlbnRzIHRoZSBwYXJhbWV0ZXI6XG4gICAgICAgIC0gW1BdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbfmw6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6KFAgPSBFMCldXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgTm90ZTogSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAqKVxuICAgIHwgUHBhcmFtX25ld3R5cGUgb2Ygc3RyaW5nIGxvY1xuICAgICgqKiBbUHBhcmFtX25ld3R5cGUgeF0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyIFsodHlwZSB4KV0uXG4gICAgICAgIFt4XSBjYXJyaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgaWRlbnRpZmllciwgd2hlcmVhcyB0aGUgW3BwYXJhbV9sb2NdXG4gICAgICAgIG9uIHRoZSBlbmNsb3NpbmcgW2Z1bmN0aW9uX3BhcmFtXSBub2RlIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgWyh0eXBlIHgpXVxuICAgICAgICBhcyBhIHdob2xlLlxuXG4gICAgICAgIE11bHRpcGxlIHBhcmFtZXRlcnMgWyh0eXBlIGEgYiBjKV0gYXJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlXG4gICAgICAgIFtQcGFyYW1fbmV3dHlwZV0gbm9kZXMsIGxldCdzIHNheTpcblxuICAgICAgICB7WyBbIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBhOyBwcGFyYW1fbG9jID0gbG9jMSB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBiOyBwcGFyYW1fbG9jID0gbG9jMiB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBjOyBwcGFyYW1fbG9jID0gbG9jMyB9O1xuICAgICAgICAgICBdXG4gICAgICAgIF19XG5cbiAgICAgICAgSGVyZSwgdGhlIGZpcnN0IGxvYyBbbG9jMV0gaXMgdGhlIGxvY2F0aW9uIG9mIFsodHlwZSBhIGIgYyldLCBhbmQgdGhlXG4gICAgICAgIHN1YnNlcXVlbnQgbG9jcyBbbG9jMl0gYW5kIFtsb2MzXSBhcmUgdGhlIHNhbWUgYXMgW2xvYzFdLCBleGNlcHQgbWFya2VkIGFzXG4gICAgICAgIGdob3N0IGxvY2F0aW9ucy4gVGhlIGxvY2F0aW9ucyBvbiBbYV0sIFtiXSwgW2NdLCBjb3JyZXNwb25kIHRvIHRoZVxuICAgICAgICB2YXJpYWJsZXMgW2FdLCBbYl0sIGFuZCBbY10gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgICopXG5cbiAgYW5kIGZ1bmN0aW9uX3BhcmFtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSAqKSA9XG4gICAgeyBwcGFyYW1fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBwYXJhbV9kZXNjIDogZnVuY3Rpb25fcGFyYW1fZGVzYztcbiAgICB9XG5cbiAgYW5kIGZ1bmN0aW9uX2JvZHkgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgKikgPVxuICAgIHwgUGZ1bmN0aW9uX2JvZHkgb2YgZXhwcmVzc2lvblxuICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIG9mIGNhc2UgbGlzdCAqIExvY2F0aW9uLnQgKiBhdHRyaWJ1dGVzXG4gICAgKCoqIEluIFtQZnVuY3Rpb25fY2FzZXMgKF8sIGxvYywgYXR0cnMpXSwgdGhlIGxvY2F0aW9uIGV4dGVuZHMgZnJvbSB0aGVcbiAgICAgICAgc3RhcnQgb2YgdGhlIFtmdW5jdGlvbl0ga2V5d29yZCB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IGNhc2UuIFRoZSBjb21waWxlclxuICAgICAgICB3aWxsIG9ubHkgdXNlIHR5cGVjaGVja2luZy1yZWxhdGVkIGF0dHJpYnV0ZXMgZnJvbSBbYXR0cnNdLCBlLmcuIGVuYWJsaW5nXG4gICAgICAgIG9yIGRpc2FibGluZyBhIHdhcm5pbmcuXG4gICAgKilcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gIGFuZCB0eXBlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQY29uc3RyYWludCBvZiBjb3JlX3R5cGVcbiAgICB8IFBjb2VyY2Ugb2YgY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAoKiogU2VlIHRoZSBjb21tZW50IG9uIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bmN0aW9ufVtQZXhwX2Z1bmN0aW9uXX0uICopXG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXX0ufVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfYXBwbHlfdW5pdCBvZiBtb2R1bGVfZXhwciAoKiogW01FMSgpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ICopID1cbiAgICB8IFB2Y19jb25zdHJhaW50IG9mIHtcbiAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG4gICAgKCoqXG4gICAgICAgLSBbUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM9W107IHR5cH1dXG4gICAgICAgICAgIGlzIGEgc2ltcGxlIHR5cGUgY29uc3RyYWludCBvbiBhIHZhbHVlIGJpbmRpbmc6IFsgbGV0IHggOiB0eXBdXG4gICAgICAgLSBNb3JlIGdlbmVyYWxseSwgaW4gW1B2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXB9XVxuICAgICAgICAgW2xvY2FsbHlfYWJzdHJhY3RfdW5pdmFyc10gaXMgdGhlIGxpc3Qgb2YgbG9jYWxseSBhYnN0cmFjdCB0eXBlXG4gICAgICAgICB2YXJpYWJsZXMgaW4gWyBsZXQgeDogdHlwZSBhIC4uLiAuIHR5cCBdXG4gICAgICAgLSBbUHZjX2NvZXJjaW9uIHsgZ3JvdW5kPU5vbmU7IGNvZXJjaW9uIH1dIHJlcHJlc2VudHMgW2xldCB4IDo+IHR5cF1cbiAgICAgICAtIFtQdmNfY29lcmNpb24geyBncm91bmQ9U29tZSBnOyBjb2VyY2lvbiB9XSByZXByZXNlbnRzIFtsZXQgeCA6IGcgOj4gdHlwXVxuICAgICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9KCoqIFtsZXQgcGF0IDogdHlwZV9jb25zdHJhaW50ID0gZXhwXSAqKVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzNVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzNVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAzXG5tb2R1bGUgVG8gPSBBc3RfNTAyXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDUuMDNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKHBhcmFtcywgdHlwX2NvbnN0cmFpbnQsIGZ1bl9ib2R5KSAtPlxuICAgICAgbGV0IHBhcmFtcyA9IExpc3QubWFwIGNvcHlfZnVuY3Rpb25fcGFyYW0gcGFyYW1zIGluXG4gICAgICBsZXQgdHlwX2NvbnN0cmFpbnQgPSBPcHRpb24ubWFwIGNvcHlfdHlwZV9jb25zdHJhaW50IHR5cF9jb25zdHJhaW50IGluXG4gICAgICBsZXQgZnVuX2JvZHkgPSBjb3B5X2Z1bmN0aW9uX2JvZHkgZnVuX2JvZHkgaW5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKHBhcmFtcywgdHlwX2NvbnN0cmFpbnQsIGZ1bl9ib2R5KVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMy5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMy5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9mdW5jdGlvbl9wYXJhbV9kZXNjIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhcmFtX3ZhbCAobCwgZSwgcCkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXJhbV92YWxcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIGwsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIGUsIGNvcHlfcGF0dGVybiBwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXJhbV9uZXd0eXBlIHggLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXJhbV9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeClcblxuYW5kIGNvcHlfZnVuY3Rpb25fcGFyYW0gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtIC0+IEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtID1cbiBmdW4geyBBc3RfNTAzLlBhcnNldHJlZS5wcGFyYW1fbG9jOyBwcGFyYW1fZGVzYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fbG9jID0gY29weV9sb2NhdGlvbiBwcGFyYW1fbG9jO1xuICAgIHBwYXJhbV9kZXNjID0gY29weV9mdW5jdGlvbl9wYXJhbV9kZXNjIHBwYXJhbV9kZXNjO1xuICB9XG5cbmFuZCBjb3B5X2Z1bmN0aW9uX2JvZHkgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rpb25fYm9keSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHkgZSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHkgKGNvcHlfZXhwcmVzc2lvbiBlKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlcyAoY2FzZXMsIGxvYywgYXR0cmlidXRlcykgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlc1xuICAgICAgICAoTGlzdC5tYXAgY29weV9jYXNlIGNhc2VzLCBjb3B5X2xvY2F0aW9uIGxvYywgY29weV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpXG5cbmFuZCBjb3B5X3R5cGVfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUudHlwZV9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNvbnN0cmFpbnQgdCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0cmFpbnQgKGNvcHlfY29yZV90eXBlIHQpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNvZXJjZSAodDEsIHQyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvZXJjZSAoT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB0MSwgY29weV9jb3JlX3R5cGUgdDIpXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfY29uc3RyYWludCA9XG4gICAgICBPcHRpb24ubWFwIGNvcHlfdmFsdWVfY29uc3RyYWludCBwdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgcHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9lZmZlY3QgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiZWZmZWN0IHBhdHRlcm5cIlxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfdmFsdWVfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgIHtcbiAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzO1xuICAgICAgICAgIHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cDtcbiAgICAgICAgfVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uXG4gICAgICAgIHtcbiAgICAgICAgICBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZDtcbiAgICAgICAgICBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfb3BlbiAoeDAsIHR5KSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vcGVuXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB0eSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiBmdW4geyBwY29uc3RfZGVzYzsgXyB9IC0+XG4gIG1hdGNoIHBjb25zdF9kZXNjIHdpdGhcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDMuQXN0dHlwZXMudHh0OyBBc3RfNTAzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAyXG5tb2R1bGUgVG8gPSBBc3RfNTAzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHR5cF9jb25zdHJhaW50LCBmdW5fYm9keSkgLT5cbiAgICAgIGxldCBwYXJhbXMgPSBMaXN0Lm1hcCBjb3B5X2Z1bmN0aW9uX3BhcmFtIHBhcmFtcyBpblxuICAgICAgbGV0IHR5cF9jb25zdHJhaW50ID0gT3B0aW9uLm1hcCBjb3B5X3R5cGVfY29uc3RyYWludCB0eXBfY29uc3RyYWludCBpblxuICAgICAgbGV0IGZ1bl9ib2R5ID0gY29weV9mdW5jdGlvbl9ib2R5IGZ1bl9ib2R5IGluXG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHR5cF9jb25zdHJhaW50LCBmdW5fYm9keSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLmxldF87IEFzdF81MDIuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZnVuY3Rpb25fcGFyYW1fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW1fZGVzYyAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXJhbV92YWwgKGwsIGUsIHApIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGFyYW1fdmFsXG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCBsLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBlLCBjb3B5X3BhdHRlcm4gcClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGFyYW1fbmV3dHlwZSB4IC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGFyYW1fbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpXG5cbmFuZCBjb3B5X2Z1bmN0aW9uX3BhcmFtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSAtPiBBc3RfNTAzLlBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYzsgcHBhcmFtX2Rlc2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhcmFtX2xvYztcbiAgICBwcGFyYW1fZGVzYyA9IGNvcHlfZnVuY3Rpb25fcGFyYW1fZGVzYyBwcGFyYW1fZGVzYztcbiAgfVxuXG5hbmQgY29weV9mdW5jdGlvbl9ib2R5IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdGlvbl9ib2R5IC0+IEFzdF81MDMuUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5IGUgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5IChjb3B5X2V4cHJlc3Npb24gZSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXMgKGNhc2VzLCBsb2MsIGF0dHJpYnV0ZXMpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXNcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2FzZSBjYXNlcywgY29weV9sb2NhdGlvbiBsb2MsIGNvcHlfYXR0cmlidXRlcyBhdHRyaWJ1dGVzKVxuXG5hbmQgY29weV90eXBlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCAtPiBBc3RfNTAzLlBhcnNldHJlZS50eXBlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdHJhaW50IHQgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjb25zdHJhaW50IChjb3B5X2NvcmVfdHlwZSB0KVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb2VyY2UgKHQxLCB0MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjb2VyY2UgKE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgdDEsIGNvcHlfY29yZV90eXBlIHQyKVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMy5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29wZW4gKHgwLCB0eSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfb3BlblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgdHkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gZnVuIGMgLT5cbiAgbGV0IHBjb25zdF9kZXNjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICAgIEFzdF81MDMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gICAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICAgIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gICAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgQXN0XzUwMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIGluXG4gIHsgcGNvbnN0X2Rlc2M7IHBjb25zdF9sb2MgPSBMb2NhdGlvbi5ub25lIH1cblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDIuQXN0dHlwZXMudHh0OyBBc3RfNTAyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzM1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAyXG5tb2R1bGUgVG8gPSBBc3RfNTAxXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDUuMDJcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1rX2dob3N0X2F0dHIgbmFtZSA9XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSB7IExvY2F0aW9uLnR4dCA9IG5hbWU7IGxvYyA9IExvY2F0aW9uLm5vbmUgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFtdO1xuICAgIGF0dHJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgfVxuXG5sZXQgcmVjIGNvbmNhdF9saXN0X2xpdCBsZWZ0IHJpZ2h0ID1cbiAgbGV0IG9wZW4gQXN0XzUwMi5QYXJzZXRyZWUgaW5cbiAgbGV0IG9wZW4gQXN0XzUwMi5Bc3R0eXBlcyBpblxuICBtYXRjaCAobGVmdC5wZXhwX2Rlc2MsIHJpZ2h0LnBleHBfZGVzYykgd2l0aFxuICB8IF8sIFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXykgLT4gbGVmdFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXyksIF8gLT4gcmlnaHRcbiAgfCAoIFBleHBfY29uc3RydWN0XG4gICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBsb2MgfSxcbiAgICAgICAgICBTb21lICh7IHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBoZDsgdGwgXTsgXyB9IGFzIGFyZ19leHByKSApLFxuICAgICAgXyApIC0+XG4gICAgICB7XG4gICAgICAgIGxlZnQgd2l0aFxuICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgIFBleHBfY29uc3RydWN0XG4gICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgbG9jIH0sXG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcmdfZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgaGQ7IGNvbmNhdF9saXN0X2xpdCB0bCByaWdodCBdO1xuICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgIH1cbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiSW52YWxpZCBvY2FtbC5wcHguY29udGV4dCdzIGxvYWRfcGF0aFwiXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByID1cbiAgbGV0IG9wZW4gQXN0XzUwMi5QYXJzZXRyZWUgaW5cbiAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfdHVwbGUgWyB2aXNpYmxlOyBoaWRkZW4gXSAtPlxuICAgICAgbGV0IG1pZ3JhdGlvbl9hdHRyID1cbiAgICAgICAge1xuICAgICAgICAgIGF0dHJfbmFtZSA9IHsgTG9jYXRpb24udHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmxvYWRfcGF0aFwiOyBsb2MgfTtcbiAgICAgICAgICBhdHRyX2xvYyA9IGxvYztcbiAgICAgICAgICBhdHRyX3BheWxvYWQgPVxuICAgICAgICAgICAgUFN0ciBbIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZXhwciwgW10pIH0gXTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBleHByJyA9IGNvbmNhdF9saXN0X2xpdCB2aXNpYmxlIGhpZGRlbiBpblxuICAgICAgeyBleHByJyB3aXRoIHBleHBfYXR0cmlidXRlcyA9IG1pZ3JhdGlvbl9hdHRyIDo6IGV4cHIucGV4cF9hdHRyaWJ1dGVzIH1cbiAgfCBfIC0+IGV4cHJcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyA9XG4gIExpc3QubWFwXG4gICAgKGZ1biAobGlkZW50X2xvYywgZXhwcikgLT5cbiAgICAgIG1hdGNoIGxpZGVudF9sb2MuQXN0XzUwMi5Bc3R0eXBlcy50eHQgd2l0aFxuICAgICAgfCBMb25naWRlbnQuTGlkZW50IFwibG9hZF9wYXRoXCIgLT5cbiAgICAgICAgICAobGlkZW50X2xvYywgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwcilcbiAgICAgIHwgXyAtPiAobGlkZW50X2xvYywgZXhwcikpXG4gICAgZmllbGRzXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgcGF5bG9hZCA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHJcbiAgICAgIFtcbiAgICAgICAgKHtcbiAgICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgICBQc3RyX2V2YWxcbiAgICAgICAgICAgICAgICgoeyBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSB9IGFzIGV4cHIpLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgIH0gYXMgc3RyaSk7XG4gICAgICBdIC0+XG4gICAgICBsZXQgbmV3X2ZpZWxkcyA9IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyBpblxuICAgICAgbGV0IG5ld19leHByID0geyBleHByIHdpdGggcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKG5ld19maWVsZHMsIE5vbmUpIH0gaW5cbiAgICAgIFBTdHIgWyB7IHN0cmkgd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKG5ld19leHByLCBhdHRyaWJ1dGVzKSB9IF1cbiAgfCBfIC0+IHBheWxvYWRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKHBhcmFtcywgdGNvbnN0cmFpbnQsIGJvZHkpIC0+XG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IFBmdW5jdGlvbl9ib2R5IGV4cHIgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBXZSBkb24ndCB3YW50IHRoaXMgW2Z1bl0gdG8gYmUgbWVyZ2VkIHdpdGggdGhlIHBhcmVudCBkdXJpbmdcbiAgICAgICAgICAgICAgICAgICB0aGUgcm91bmQtdHJpcC4gVGhpcyBhdHRyaWJ1dGUgc2lnbmFscyB0aGF0IHRoaXMgZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgICAgIHJlYWxseSBpcyB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24uICopXG4gICAgICAgICAgICAgICAgbGV0IGF0dHIgPSBta19naG9zdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1wiIGluXG4gICAgICAgICAgICAgICAgbGV0IGV4cHIgPSBjb3B5X2V4cHJlc3Npb24gZXhwciBpblxuICAgICAgICAgICAgICAgIHsgZXhwciB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHIgOjogZXhwci5wZXhwX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgICAgfCBfIC0+IGNvcHlfZXhwcmVzc2lvbiBleHByKVxuICAgICAgICB8IFBmdW5jdGlvbl9jYXNlcyAoY2FzZXMsIGxvYywgYXR0cnMpIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIGNhc2VzKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0dHJzO1xuICAgICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBleHByID1cbiAgICAgICAgbWF0Y2ggdGNvbnN0cmFpbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXhwclxuICAgICAgICB8IFNvbWUgKFBjb25zdHJhaW50IGMpIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChleHByLCBjb3B5X2NvcmVfdHlwZSBjKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBleHByLnBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBTb21lIChQY29lcmNlIChjMSwgYzIpKSAtPlxuICAgICAgICAgICAgbGV0IGMxID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBjMSBpblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlIChleHByLCBjMSwgY29weV9jb3JlX3R5cGUgYzIpO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IGV4cHIucGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBleHByID1cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgICAgKGZ1biBwYXJhbSBleHByIC0+XG4gICAgICAgICAgICBtYXRjaCBwYXJhbSB3aXRoXG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fZGVzYyA9IFBwYXJhbV92YWwgKGxibCwgZXhwMCwgcCk7XG4gICAgICAgICAgICAgcHBhcmFtX2xvYztcbiAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICAgICAgICAgICAgICggY29weV9hcmdfbGFiZWwgbGJsLFxuICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIGV4cDAsXG4gICAgICAgICAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHAsXG4gICAgICAgICAgICAgICAgICAgICAgZXhwciApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPSBwYXJhbS5wcGFyYW1fbG9jLmxvY19zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBsb2NfZW5kID0gZXhwci5wZXhwX2xvYy5sb2NfZW5kO1xuICAgICAgICAgICAgICAgICAgICAgIGxvY19naG9zdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfCB7IHBwYXJhbV9kZXNjID0gUHBhcmFtX25ld3R5cGUgeDsgcHBhcmFtX2xvYyB9IC0+XG4gICAgICAgICAgICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4LCBleHByKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID0gcGFyYW0ucHBhcmFtX2xvYy5sb2Nfc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jX2VuZCA9IGV4cHIucGV4cF9sb2MubG9jX2VuZDtcbiAgICAgICAgICAgICAgICAgICAgICBsb2NfZ2hvc3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgcGFyYW1zIGV4cHJcbiAgICAgIGluXG4gICAgICBleHByLnBleHBfZGVzY1xuICAgICAgKCogQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKSAqKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMi5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2xvYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxLnR4dClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiB0eXBlc1wiXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9XG4gICAgICAobWF0Y2ggYXR0cl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFwib2NhbWwucHB4LmNvbnRleHRcIiAtPlxuICAgICAgICAgIGNvcHlfcGF5bG9hZCAobWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIGF0dHJfcGF5bG9hZClcbiAgICAgIHwgXyAtPiBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkKTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dDsgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMVxubW9kdWxlIFRvID0gQXN0XzUwMlxuXG4oKiogTG9vayBmb3IgYSBwYXJ0aWN1bGFyIGF0dHJpYnV0ZSBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIGxpc3QuIEF0dHJpYnV0ZXMgYXJlXG4gICAgdXNlZCB0byBtYWtlIGNlcnRhaW4gbWlncmF0aW9ucyByb3VuZC10cmlwLiBSZXR1cm5zIFtOb25lXSBpZiB0aGUgc3BlY2lmaWVkXG4gICAgYXR0cmlidXRlIGlzIG5vdCBmb3VuZC4gKilcbmxldCBleHRyYWN0X2F0dHIgbmFtZSAoYXR0cnMgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzKSA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKE5vbmUsIExpc3QucmV2IGFjYylcbiAgICB8IHsgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0geyB0eHQ7IF8gfTsgYXR0cl9wYXlsb2FkOyBfIH0gOjogcVxuICAgICAgd2hlbiB0eHQgPSBuYW1lIC0+XG4gICAgICAgIChTb21lIGF0dHJfcGF5bG9hZCwgTGlzdC5yZXZfYXBwZW5kIGFjYyBxKVxuICAgIHwgaGQgOjogdGwgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICBpblxuICBsb29wIFtdIGF0dHJzXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByID1cbiAgbGV0IG9wZW4gQXN0XzUwMS5QYXJzZXRyZWUgaW5cbiAgbGV0IHBheWxvYWQsIG90aGVyX2F0dHJzID1cbiAgICBleHRyYWN0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLmxvYWRfcGF0aFwiIGV4cHIucGV4cF9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBsb2MgPSBleHByLnBleHBfbG9jIH0sIE5vbmUpXG4gICAgICBpblxuICAgICAgbGV0IGhpZGRlbiA9IHsgZXhwciB3aXRoIHBleHBfZGVzYzsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgbGV0IHZpc2libGUgPSBleHByIGluXG4gICAgICB7XG4gICAgICAgIGV4cHIgd2l0aFxuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBvdGhlcl9hdHRycztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIHZpc2libGU7IGhpZGRlbiBdO1xuICAgICAgfVxuICB8IFNvbWUgKFBTdHIgWyB7IHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZXhwciwgW10pOyBfIH0gXSkgLT4gZXhwclxuICB8IFNvbWUgXyAtPiBpbnZhbGlkX2FyZyBcIkludmFsaWQgcHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGggcGF5bG9hZFwiXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGxpZGVudF9sb2MsIGV4cHIpIC0+XG4gICAgICBtYXRjaCBsaWRlbnRfbG9jLkFzdF81MDEuQXN0dHlwZXMudHh0IHdpdGhcbiAgICAgIHwgTG9uZ2lkZW50LkxpZGVudCBcImxvYWRfcGF0aFwiIC0+XG4gICAgICAgICAgKGxpZGVudF9sb2MsIG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIpXG4gICAgICB8IF8gLT4gKGxpZGVudF9sb2MsIGV4cHIpKVxuICAgIGZpZWxkc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIHBheWxvYWQgPVxuICBsZXQgb3BlbiBBc3RfNTAxLlBhcnNldHJlZSBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyXG4gICAgICBbXG4gICAgICAgICh7XG4gICAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgICAgUHN0cl9ldmFsXG4gICAgICAgICAgICAgICAoKHsgcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgfSBhcyBleHByKSwgYXR0cmlidXRlcyk7XG4gICAgICAgICB9IGFzIHN0cmkpO1xuICAgICAgXSAtPlxuICAgICAgbGV0IG5ld19maWVsZHMgPSBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgaW5cbiAgICAgIGxldCBuZXdfZXhwciA9IHsgZXhwciB3aXRoIHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChuZXdfZmllbGRzLCBOb25lKSB9IGluXG4gICAgICBQU3RyIFsgeyBzdHJpIHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChuZXdfZXhwciwgYXR0cmlidXRlcykgfSBdXG4gIHwgXyAtPiBwYXlsb2FkXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgcGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jIGluXG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb25cbiAgICAgICAgKCBbXSxcbiAgICAgICAgICBOb25lLFxuICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlcyAoTGlzdC5tYXAgY29weV9jYXNlIHgwLCBsb2MsIFtdKSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKGFyZ19sYWJlbCwgb3B0X2RlZmF1bHQsIHBhdCwgZXhwcikgLT5cbiAgICAgIGxldCB0YWtlX2JvZHkgKGUgOiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uKSA9XG4gICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIGNhc2VfbGlzdCAtPlxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2Nhc2VzXG4gICAgICAgICAgICAgICggTGlzdC5tYXAgY29weV9jYXNlIGNhc2VfbGlzdCxcbiAgICAgICAgICAgICAgICBlLnBleHBfbG9jLFxuICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBlLnBleHBfYXR0cmlidXRlcyApXG4gICAgICAgIHwgXyAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fYm9keSAoY29weV9leHByZXNzaW9uIGUpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyB0YWtlX2FyZ3VtZW50cyBhY2MgKGUgOiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uKSA9XG4gICAgICAgIGlmIGUucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICAgICAgICAoKiBUaGUgYXR0cmlidXRlIGxpc3QgaXMgbm90IGVtcHR5LCBub25lIG9mIHRoZXNlIG5vZGVzIGNvdWxkIGhhdmVcbiAgICAgICAgICAgICBiZWVuIGNyZWF0ZWQgYnkgdGhlIGRvd253YXJkIG1pZ3JhdGlvbi4gRXhjZXB0IGZvciBbUGV4cF9mdW5dLCBmb3JcbiAgICAgICAgICAgICB3aGljaCB3ZSBhZGQgYSBnaG9zdCBhdHRyaWJ1dGUgdG8gaGVscCB1cyByb3VuZHRyaXAuICopXG4gICAgICAgICAgbGV0IF8sIGF0dHJzID1cbiAgICAgICAgICAgIGV4dHJhY3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcIiBlLnBleHBfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICBOb25lLFxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHlcbiAgICAgICAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycyB9KSApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBhcmUgbGlrZWx5IHRvIGhhdmUgYmVlbiBzeW50aGV0aXplZCBkdXJpbmcgdGhlXG4gICAgICAgICAgICAgZG93bndhcmQgbWlncmF0aW9uLiAqKVxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuIChhcmdfbGFiZWwsIG9wdF9kZWZhdWx0LCBwYXQsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIHRha2VfYXJndW1lbnRzX2Z1biBhY2MgYXJnX2xhYmVsIG9wdF9kZWZhdWx0IHBhdCBleHByXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHQsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9sb2MgPSB0LmxvYztcbiAgICAgICAgICAgICAgICAgIHBwYXJhbV9kZXNjID0gUHBhcmFtX25ld3R5cGUgdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHRha2VfYXJndW1lbnRzIGFjYyBleHByXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGV4cCwgY3QpIC0+XG4gICAgICAgICAgICAgICgqIFRoZXNlIHR3byBleHByZXNzaW9uIGFyZSByZXByZXNlbnRlZCB0aGUgc2FtZSBvbiA1LjEgYnV0XG4gICAgICAgICAgICAgICAgIGRpZmZlcmVudGx5IG9uIDUuMjpcbiAgICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgICBsZXQgXyA9IGZ1biB4IDogKF8gLT4gaW50KSAtPiBmdW4geSAtPiB4K3lcbiAgICAgICAgICAgICAgICAgICBsZXQgXyA9IGZ1biB4IC0+ICgoZnVuIHkgLT4geCt5KSA6IF8gLT4gaW50KVxuICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICBXZSBub3JtYWxpemUgdGhlIHNlY29uZCBpbnRvIHRoZSBmaXJzdCB3aGVuIG1pZ3JhdGluZyB0byA1LjIsXG4gICAgICAgICAgICAgICAgIG1ha2luZyB0aGUgbWlncmF0aW9uIDUuMi0+NS4xLT41LjIgbm90IHJvdW5kdHJpcCBidXQgaG9wZWZ1bGx5XG4gICAgICAgICAgICAgICAgIHdpdGhvdXQgY2hhbmdlIGluIHNlbWFudGljcy4gKilcbiAgICAgICAgICAgICAgbGV0IGN0ID1cbiAgICAgICAgICAgICAgICBTb21lIChBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RyYWludCAoY29weV9jb3JlX3R5cGUgY3QpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYWNjLCBjdCwgdGFrZV9ib2R5IGV4cClcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlIChleHAsIGMxLCBjMikgLT5cbiAgICAgICAgICAgICAgKCogU2FtZSBhcyBhYm92ZSwgbWlnaHQgbm90IHJvdW5kdHJpcCBidXQgaG9wZWZ1bGx5IE9LLiAqKVxuICAgICAgICAgICAgICBsZXQgYzEgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGMxXG4gICAgICAgICAgICAgIGFuZCBjMiA9IGNvcHlfY29yZV90eXBlIGMyIGluXG4gICAgICAgICAgICAgIChhY2MsIFNvbWUgKEFzdF81MDIuUGFyc2V0cmVlLlBjb2VyY2UgKGMxLCBjMikpLCB0YWtlX2JvZHkgZXhwKVxuICAgICAgICAgIHwgXyAtPiAoYWNjLCBOb25lLCB0YWtlX2JvZHkgZSlcbiAgICAgIGFuZCB0YWtlX2FyZ3VtZW50c19mdW4gYWNjIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwciA9XG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIGxldCBwcGFyYW1fZGVzYyA9XG4gICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGFyYW1fdmFsXG4gICAgICAgICAgICAgICggY29weV9hcmdfbGFiZWwgYXJnX2xhYmVsLFxuICAgICAgICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIG9wdF9kZWZhdWx0LFxuICAgICAgICAgICAgICAgIGNvcHlfcGF0dGVybiBwYXQgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogQmVzdC1lZmZvcnQgbG9jYXRpb24uICopXG4gICAgICAgICAgeyBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fbG9jID0gcGF0LnBwYXRfbG9jOyBwcGFyYW1fZGVzYyB9IDo6IGFjY1xuICAgICAgICBpblxuICAgICAgICB0YWtlX2FyZ3VtZW50cyBhY2MgZXhwclxuICAgICAgaW5cbiAgICAgICgqIFRoZSBhcmd1bWVudCBsaXN0IHJldHVybmVkIGJ5IFt0YWtlX2FyZ3VtZW50c10gaXMgcmV2ZXJzZWQgKilcbiAgICAgIGxldCBhcmdfbGlzdCwgdHlwZV9jb25zdHJhaW50LCBib2R5ID1cbiAgICAgICAgdGFrZV9hcmd1bWVudHNfZnVuIFtdIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwclxuICAgICAgaW5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QucmV2IGFyZ19saXN0LCB0eXBlX2NvbnN0cmFpbnQsIGJvZHkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAxLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAxLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfY29uc3RyYWludCA9XG4gICAgICBPcHRpb24ubWFwIGNvcHlfdmFsdWVfY29uc3RyYWludCBwdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfdmFsdWVfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgIHtcbiAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzO1xuICAgICAgICAgIHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cDtcbiAgICAgICAgfVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uXG4gICAgICAgIHtcbiAgICAgICAgICBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZDtcbiAgICAgICAgICBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYWxpYXNcbiAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCB7IEFzdF81MDIuQXN0dHlwZXMudHh0ID0geDE7IGxvYyA9IHgwLnB0eXBfbG9jIH0pXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9XG4gICAgICAobWF0Y2ggYXR0cl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFwib2NhbWwucHB4LmNvbnRleHRcIiAtPlxuICAgICAgICAgIGNvcHlfcGF5bG9hZCAobWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIGF0dHJfcGF5bG9hZClcbiAgICAgIHwgXyAtPiBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkKTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gNC4xNCBhbmQgNS4wIGZyb20gYSBQYXJzZXRyZWUgcG9pbnQgb2YgdmlldyBhcmUgdGhlIG1hZ2ljIG51bWJlcnMgKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5Bc3R0eXBlc1xuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LlBhcnNldHJlZVxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMyXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIGxldCBtZXJnZV9sb2MgbGVmdCByaWdodCA9XG4gICAgTG9jYXRpb24uXG4gICAgICB7IGxvY19zdGFydCA9IGxlZnQubG9jX3N0YXJ0OyBsb2NfZW5kID0gcmlnaHQubG9jX2VuZDsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICBpblxuICBsZXQgZ2hvc3RfbG9jIGxvYyA9IHsgbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgPVxuICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICBnaG9zdF9sb2NcbiAgICAgICAgKG1lcmdlX2xvYyBwYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgIGluXG4gICAge1xuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYztcbiAgICAgIHBwYXRfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAocGF0LCB0eXApO1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICB9XG4gIGluXG4gIGxldCBwdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQgYW5kIHB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByIGluXG4gIGxldCBjb25zdHJhaW5fcGF0IHBhdCB0eXAgZXhwciA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwIGluXG4gICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIgPVxuICAgIG1hdGNoIChwdmJfY29uc3RyYWludCwgcHZiX3BhdCkgd2l0aFxuICAgIHwgKCBTb21lXG4gICAgICAgICAgKFB2Y19jb25zdHJhaW50XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdO1xuICAgICAgICAgICAgICB0eXAgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwO1xuICAgICAgICAgICAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIHRoZSBzdWdhcmluZyBvZiBbbGV0IHg6IHVuaXZhcnMgLiB0eXAgPSBleHAgXSB3YXMgZGVzdWdhcmVkIHRvXG4gICAgICAgICAgIFtsZXQgKHg6dW5pdmFycyAuIHR5cCkgPSBleHBdIGluIDUuMCB3aGljaCBkb2Vzbid0IGZpdCB0aGUgY2FzZSBiZWxvdyAqKVxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCAoIFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gICAgICAgIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICAgICAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICAgICAgICBsZXQgZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgKCBMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnLFxuICAgICAgICAgICAgICAgICAgICAgIGxibF9sc3Rfb3B0aW9uIClcbiAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9XG4gICAgICAgICAgbWF0Y2ggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGdob3N0X2xvYyB0eXAucHR5cF9sb2NcbiAgICAgICAgICB8IF8gOjogXyAtPiBnaG9zdF9sb2MgcGV4cF9sb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cF9wb2x5ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXAgd2l0aFxuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAgICAgICAgICggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzLFxuICAgICAgICAgICAgICAgICAgdmFyaWZ5X2NvbnN0cnVjdG9ycyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgdHlwICk7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICAgICAgZ2hvc3RfbG9jXG4gICAgICAgICAgICAobWVyZ2VfbG9jIHB2Yl9wYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2NcbiAgICAgICAgICAgICAgIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSB7IChnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwX3BvbHkpIHdpdGggcHBhdF9sb2MgfVxuICAgICAgICBhbmQgcHZiX2V4cHIgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGV4cHIgdmFyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBleHByIHdpdGhcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh2YXIsIGV4cHIpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChwdmJfZXhwciwgdHlwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChMaXN0LnJldiBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMpXG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107IHR5cCB9KSwgXyAtPlxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCBTb21lIChQdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pLCBfIC0+XG4gICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IGdob3N0X2xvYyBjb2VyY2lvbi5wdHlwX2xvYyBpblxuICAgICAgICBsZXQgdHlwID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2VyY2lvbiB3aXRoXG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5IChbXSwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwIGluXG4gICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAocHZiX2V4cHIsIGdyb3VuZCwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgXyAtPiAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIGxldCBsb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIHBtb2RfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGxvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEgPSBjb3B5X21vZHVsZV9leHByIHgxIGluXG4gICAgICBsZXQgeDEgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgbG9jID0geyB4MS5wbW9kX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgeyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgbG9jIH07XG4gICAgICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciBbXTtcbiAgICAgICAgICAgICAgICBhdHRyX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiB4MS5wbW9kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgfCBfIC0+IHgxXG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBsZXQgZW1wdHlfc3RydWN0ID1cbiAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBlbXB0eV9zdHJ1Y3QpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNTAxXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLmxldF87IEFzdF81MDAuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT4gUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgIGluXG4gICAgbG9vcCB0XG4gIGluXG4gICgqIE1hdGNoIHRoZSBmb3JtIG9mIHRoZSBleHByIGFuZCBwYXR0ZXJuIHRvIGRlY2lkZSB0aGUgdmFsdWUgb2ZcbiAgICAgW3B2Yl9jb25zdHJhaW50XS4gQWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBQUHJpbnRlci4gKilcbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB0eXZhcnMgaW5cbiAgbGV0IHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcCBlID1cbiAgICBsZXQgdmFsdWVfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSBhcyB0eV9leHQpICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYXNzZXJ0IChtYXRjaCBydC5wdHlwX2Rlc2Mgd2l0aCBQdHlwX3BvbHkgXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSk7XG4gICAgICAgICAgbGV0IHR5ID0gbWF0Y2ggYXJnc190eXZhcnMgd2l0aCBbXSAtPiBydCB8IF8gLT4gdHlfZXh0IGluXG4gICAgICAgICAgYFZhciAocGF0LCBhcmdzX3R5dmFycywgcnQsIHR5KVxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwYXQsIHJ0KTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBgTm9uVmFyIChwYXQsIHJ0KVxuICAgICAgfCBfIC0+IGBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIHZhbHVlX2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIHZhbHVlX2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCB2YWx1ZV9leHAgPSB2YWx1ZV9leHAgW10gZSBpblxuICAgIG1hdGNoICh2YWx1ZV9wYXR0ZXJuLCB2YWx1ZV9leHApIHdpdGhcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIFNvbWUgKGVfdHl2YXJzLCBpbm5lcl9lLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuXG4gICAgICAgICAgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCBwdF90eXZhcnMsIGVfY3QsIGlubmVyX2UpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiB0aGUgZXhwcmVzc2lvbiBjb25zdHJhaW50IGFuZCB0aGUgcGF0dGVybiBjb25zdHJhaW50LFxuICAgICAgICAgICAgIGRvbid0IG1hdGNoLCBidXQgd2Ugc3RpbGwgaGF2ZSBhIFB0eXBfcG9seSBwYXR0ZXJuIGNvbnN0cmFpbnQgdGhhdFxuICAgICAgICAgICAgIHNob3VsZCBiZSByZXN1Z2FyZWQgdG8gYSB2YWx1ZSBiaW5kaW5nICopXG4gICAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgXyAtPlxuICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgTm9uVmFyIChwYXQsIGN0KSwgXyAtPiBgTm9uVmFyIChwYXQsIGN0LCBlKVxuICAgIHwgXyAtPiBgTm9uZVxuICBpblxuICBsZXQgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgU29tZVxuICAgICAgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgICB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IHR5X3ZhcnM7IHR5cCB9KVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIsIHB2Yl9jb25zdHJhaW50ID1cbiAgICBtYXRjaCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHB2Yl9wYXQgcHZiX2V4cHIgd2l0aFxuICAgIHwgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCB0eV92YXJzLCB0eXAsIGUpIC0+XG4gICAgICAgIChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXApXG4gICAgfCBgVW5pdmFycyAocGF0LCBbXSwgY3QsIGV4cHIpIC0+IChcbiAgICAgICAgKCogY2hlY2sgaWYgd2UgYXJlIGluIHRoZSBbbGV0IHggOiB0eT8gOj4gY29lciA9IGV4cHIgXSBjYXNlICopXG4gICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb2VyY2UgKGV4cHIsIGdyLCBjb2VyY2UpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyIGluXG4gICAgICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2UgaW5cbiAgICAgICAgICAgIGxldCBwdmJfY29uc3RyYWludCA9XG4gICAgICAgICAgICAgIFNvbWUgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAocGF0LCBleHByLCBwdmJfY29uc3RyYWludClcbiAgICAgICAgfCBfIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdCkpXG4gICAgfCBgVW5pdmFycyAocGF0LCBfLCBjdCwgZXhwcikgLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KVxuICAgIHwgYE5vblZhciAocCwgdHlwLCBlKSAtPiAocCwgZSwgd2l0aF9jb25zdHJhaW50IFtdIHR5cClcbiAgICB8IGBOb25lIC0+IChwdmJfcGF0LCBwdmJfZXhwciwgTm9uZSlcbiAgaW5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEsIGlzX3VuaXQgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0ciBhY2MgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IF8gPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIC0+IChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgYXR0cl9uYW1lID0geyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgXyB9O1xuICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogcSAtPlxuICAgICAgICAgICAgICAgICAgKExpc3QucmV2X2FwcGVuZCBhY2MgcSwgZmFsc2UpXG4gICAgICAgICAgICAgIHwgaGQgOjogdGwgLT4gZXh0cmFjdF9hdHRyIChoZCA6OiBhY2MpIHRsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYiA9IGV4dHJhY3RfYXR0ciBbXSB4MS5wbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgICAgICh7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH0sIGIpXG4gICAgICAgIHwgXyAtPiAoeDEsIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3VuaXQgdGhlbiBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gICAgICBlbHNlXG4gICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzQxNFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF81MDAuUGFyc2V0cmVlLiVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzQxNC5QYXJzZXRyZWUuJXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSAoW10sIFApXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgIEMgKHR5cGUgYSBiKSBQICAgU29tZSAoW2E7IGJdLCBQKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA6PSAgLi4uICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMwXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5sZXRfOyBBc3RfNDE0LlBhcnNldHJlZS5hbmRzOyBBc3RfNDE0LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT4gKFxuICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICAgICAgfCBoZCA6OiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInR5cGUgcGFyYW1ldGVycyBpbiBleHRlbnNpb24gY29uc3RydWN0b3JzXCIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwY2RfdmFycyB3aXRoXG4gIHwgW10gLT5cbiAgICAgIHtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgfVxuICB8IGhkIDo6IF8gLT4gbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInBjZF92YXJzIGluIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uc1wiXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTQuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoW10sIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTQuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzID0gW107XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTQuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTQuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHgwIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICB8IHR5IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB0eS5Bc3RfNDEzLkFzdHR5cGVzLmxvY1xuICAgICAgICAgICAgICAgICAgICBcImV4aXN0ZW50aWFscyBpbiBwYXR0ZXJuLW1hdGNoaW5nXCIpO1xuICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4geDEpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyBcIm1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0IChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jXG4gICAgICAgIFwiZGVzdHJ1Y3RpdmUgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAuQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2NcbiAgICAgICAgXCJsb2NhbCBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiAoW10sIGNvcHlfcGF0dGVybiB4KSkgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI4XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI4XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI3XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI3XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIF8sIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBMb2NhdGlvbi5ub25lLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjZcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xMFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvY1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW5vbnltb3VzIGxldCBtb2R1bGVcIlxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jXG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW55bnltb3VzIHVucGFja1wiIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IExvY2F0aW9uLnQgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1iX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBiaW5kaW5nXCIpXG4gICAgICAgIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT5cbiAgICBzdHJpbmcgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgKiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSBvcHRpb24gPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gKHsgbG9jID0gTG9jYXRpb24ubm9uZTsgdHh0ID0gXCIqXCIgfSwgTm9uZSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgKCBjb3B5X2xvYyAoZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgeCAtPiB4KSB4MCxcbiAgICAgICAgU29tZSAoY29weV9tb2R1bGVfdHlwZSB4MSkgKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWRfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBUaHUgTWFyIDIxIDA5OjUwOjQyIEdNVCAyMDE5XG4gICBPQ2FtbCB3YXM6XG4gICBjb21taXQgNTVjOWJhNDY2MzYyZjMwM2ViNGQ1ZWQ1MTFmNmZkYTE0Mjg3OTEzNyAoSEVBRCAtPiA0LjA4LCBvcmlnaW4vNC4wOClcbiAgICAgQXV0aG9yOiBOaWNvbMOhcyBPamVkYSBCw6RyIDxuLm9qZS5iYXJAZ21haWwuY29tPlxuICAgICBEYXRlOiAgIFR1ZSBNYXIgMTkgMDg6MTE6MDIgMjAxOSArMDEwMFxuXG4gICAgICAgICBNZXJnZSBwdWxsIHJlcXVlc3QgIzg1MjEgZnJvbSBub2piL2ZpeF91bml4X3Rlc3RzXzQwOFxuXG4gICAgICAgICBBY3R1YWxseSBydW4gYWxsIGxpYi11bml4IHRlc3RzIFs0LjA4XVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI1XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI1XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOS5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDguUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA4LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA4LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDguQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDguQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOC5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDguUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA4LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA4LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDguQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBXZWQgQXByIDE4IDEwOjMzOjI5IEJTVCAyMDE4XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCBjMGJkNmEyN2UxMzg5MTE1NjBmNDNkYzc1ZDVmZGUyYWRlNGQ2Y2ZlIChIRUFELCB0YWc6IDQuMDcuMCtiZXRhMilcbiAgICAgQXV0aG9yOiBEYW1pZW4gRG9saWdleiA8ZGFtaWVuLmRvbGlnZXpAaW5yaWEuZnI+XG4gICAgIERhdGU6ICAgVHVlIEFwciAxMCAxNDo1MDo0OCAyMDE4ICswMjAwXG5cbiAgICAgICAgIGNoYW5nZSBWRVJTSU9OIGZvciA0LjA3LjArYmV0YTJcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjNcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wOFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2xvYyA9IF87XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAgKCBwZGlyX25hbWUuTG9jYXRpb24udHh0LFxuICAgICAgICAgIG1hdGNoIHBkaXJfYXJnIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgYXJnIClcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgRnJvbS5QYXJzZXRyZWUucGRpcmFfbG9jID0gX3BkaXJhX2xvYyB9IC0+XG4gIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzY1xuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkLFxuICAgICAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEgKVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG9wIHsgbGV0XzsgYW5kcyA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsZXRfLnBib3Bfb3AubG9jIFwibGV0IG9wZXJhdG9yc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwcmZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9ib29sIHgxLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBvZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbG9jID0gXztcbiAgICAgfSAtPlxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZSwgY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZClcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQ7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9XG4gICAgICAgICAgICAgICAgY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIGxldCB4MF9sb2MgPVxuICAgICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICAgIHwgW10gLT4gTG9jYXRpb24ubm9uZVxuICAgICAgICB8IHsgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jOyBfIH0gOjogXyAtPiBwdHlwZV9sb2NcbiAgICAgIGluXG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDBfbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5wbXNfbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbigqIGFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gICBmdW5cbiAgICAgeyBGcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHB0eWV4bl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBwdHlleG5fYXR0cmlidXRlcyB9XG4gICAgICAtPlxuICAgICB7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IChjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2MpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9XG4gICAgICAgICAoY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzKVxuICAgICB9KilcbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbmFtZSA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLnR4dCA9IHgwOyBMb2NhdGlvbi5sb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfYXJnID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDE7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvblxuICAgID1cbiAgbGV0IHdyYXAgcGRpcmFfZGVzYyA9XG4gICAgU29tZSB7IFRvLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBUby5QYXJzZXRyZWUucGRpcmFfbG9jID0gTG9jYXRpb24ubm9uZSB9XG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IE5vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKSB8PiB3cmFwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSk7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2Jvb2wgeDIsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPSBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgyKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPSBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MDtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIHgxO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZCk7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzdHJfZmllbGRzXG4gIGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKVxuICAgICAgICAgICAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3NpZ19maWVsZHNcbiAgaW5cblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IF8gOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfbG9jID0gcHR5ZXh0X3BhdGguTG9jYXRpb24ubG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gTW9uIE9jdCAgMiAxMToyNTo1NyBDRVNUIDIwMTdcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IDY1OTQwYTJjNmJlNDNjNDJmNzVjNmM2YjI1NTk3NGY3ZTZkZTAzY2EgKEhFQUQgLT4gNC4wNiwgb3JpZ2luLzQuMDYpXG4gICAgIEF1dGhvcjogQ2hyaXN0b3BoZSBSYWZmYWxsaSA8Y2hyaXN0b3BoZUByYWZmYWxsaS5ldT5cbiAgICAgRGF0ZTogICBTdW4gT2N0IDEgMTg6Mjc6MDcgMjAxNyArMDIwMFxuXG4gICAgICAgICBmaXhlZCBwb3NpdGlvbiBvZiBsYXN0IG9wdGlvbmFsIGxhc3Qgc2VtaWNvbHVtbiBpbiBzZXF1ZW5jZSAoIzEzODcpXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIyXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA2XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBMb2NhdGlvbi5ub25lIFwiaW5oZXJpdGFuY2UgaW4gb2JqZWN0IHR5cGVcIilcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MC50eHQsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgZXhwcmVzc2lvblwiXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IF87IF8gfSwgeDApIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCB4MDsgbG9jIH0sIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IHgwOyBsb2MgfSwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IGxvYzsgXyB9LCBfeDApIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyBsb2M7IF8gfSwgX3gxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyB0eXBlXCJcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggeyB0eHQgPSBjb3B5X2xhYmVsIHgwOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLkZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWUsXG4gICAgICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwIClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxLkZyb20uQXN0dHlwZXMudHh0KVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBub2xvYyB4ID0geyBMb2NhdGlvbi50eHQgPSB4OyBsb2MgPSBMb2NhdGlvbi5ub25lIH1cblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIG5vbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAobm9sb2MgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIChub2xvYyB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IG5vbG9jIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBub2xvYyB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImxvY2FsIGV4Y2VwdGlvbnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBvcGVuIGluIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIGxhYiBtdXN0IHN0YXJ0IHdpdGggJz8nLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuXG4gICAgTm90ZTogd2hlbiB1c2VkIHVuZGVyIFBzdHJfcHJpbWl0aXZlLCBwcmltIGNhbm5vdCBiZSBlbXB0eVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvcmVfdHlwZSBsaXN0O1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKGFyZ3MgPSBbXSwgcmVzID0gU29tZSBUMClcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDApXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb3JlX3R5cGUgbGlzdCAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2YgaW50XG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE1XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwMlxuXG5sZXQgaW5qZWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgZCA9XG4gIGxldCBvcGVuIFRvIGluXG4gIGxldCBvcGVuIFBhcnNldHJlZSBpblxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCBfIC0+XG4gICAgICBsZXQgbG9jID0geyBkLnB0eXBfbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgdHh0ID0gTG9uZ2lkZW50Lkxkb3QgKExvbmdpZGVudC5MaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKSBpblxuICAgICAgbGV0IGlkZW50ID0geyBMb2NhdGlvbi50eHQ7IGxvYyB9IGluXG4gICAgICB7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZGVudCwgWyBkIF0pO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG4gIHwgXyAtPiBkXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInVucmVhY2hhYmxlIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCBsb2MgeDAsIGNvcHlfY29uc3RhbnQgbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgbG9jIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcInNpZ25hdHVyZXMgaW4gYXR0cmlidXRlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIChmcm9tX2xvYyBwZXh0X25hbWUpIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyAoZnJvbV9sb2MgcGNkX25hbWUpIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgbGlzdCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT4gTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJpbmxpbmUgcmVjb3Jkc1wiXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBcIlwiXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gXCI/XCIgXiB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgbG9jIDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uQXN0dHlwZXMuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ2wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDMyIChJbnQzMi5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ0wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDY0IChJbnQ2NC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ24nIC0+IFRvLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCAoTmF0aXZlaW50Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gaW50ZWdlciBsaXRlcmFsc1wiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+IFRvLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDBcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gZmxvYXQgbGl0ZXJhbHNcIilcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgcmVjZmxhZyB0eXBlcyA9XG4gIG1hdGNoIChyZWNmbGFnLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMpIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMgLT4gdHlwZXNcbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgW10gLT4gW11cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeCA6OiB4cyAtPlxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJfbm9uZV9cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAtMTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgICh7IFRvLkFzdHR5cGVzLnR4dCA9IFwibm9ucmVjXCI7IGxvYyB9LCBUby5QYXJzZXRyZWUuUFN0ciBbXSlcbiAgICAgICAgOjogeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgX3gxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwMlxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHR5cCA9XG4gIGxldCBvcGVuIEZyb20gaW5cbiAgbGV0IG9wZW4gTG9uZ2lkZW50IGluXG4gIG1hdGNoIChsYWJlbCwgdHlwLlBhcnNldHJlZS5wdHlwX2Rlc2MpIHdpdGhcbiAgfCAoIFRvLkFzdHR5cGVzLk9wdGlvbmFsIF8sXG4gICAgICBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoeyBMb2NhdGlvbi50eHQgPSBMZG90IChMaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKTsgXyB9LCBbIGQgXSkgKSAtPlxuICAgICAgZFxuICB8IF8gLT4gdHlwXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MCksXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgcGNkX2FyZ3MpO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gZnVuIHggLT5cbiAgaWYgeCA8PiBcIlwiIHRoZW5cbiAgICBpZiB4LlswXSA9ICc/JyB0aGVuXG4gICAgICBUby5Bc3R0eXBlcy5PcHRpb25hbCAoU3RyaW5nLnN1YiB4IDEgKFN0cmluZy5sZW5ndGggeCAtIDEpKVxuICAgIGVsc2UgVG8uQXN0dHlwZXMuTGFiZWxsZWQgeFxuICBlbHNlIFRvLkFzdHR5cGVzLk5vbGFiZWxcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLkFzdHR5cGVzLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQzMiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgeDAsIFNvbWUgJ2wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50NjQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHgwLCBTb21lICdMJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHgwLCBTb21lICduJylcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgdHlwZXMgPVxuICBsZXQgaXNfbm9ucmVjIChhdHRyLCBfKSA9IGF0dHIuTG9jYXRpb24udHh0ID0gXCJub25yZWNcIiBpblxuICBtYXRjaCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMgd2l0aFxuICB8IHggOjogeHMgd2hlbiBMaXN0LmV4aXN0cyBpc19ub25yZWMgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyAtPlxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IChpc19ub25yZWMgeCkpIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzKVxuICB8IHR5cGVzIC0+IChUby5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzKVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaW50IChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibGV0IGlzX2tleXdvcmQgPSBmdW5jdGlvblxuICB8IFwiYW5kXCIgLT4gdHJ1ZVxuICB8IFwiYXNcIiAtPiB0cnVlXG4gIHwgXCJhc3NlcnRcIiAtPiB0cnVlXG4gIHwgXCJiZWdpblwiIC0+IHRydWVcbiAgfCBcImNsYXNzXCIgLT4gdHJ1ZVxuICB8IFwiY29uc3RyYWludFwiIC0+IHRydWVcbiAgfCBcImRvXCIgLT4gdHJ1ZVxuICB8IFwiZG9uZVwiIC0+IHRydWVcbiAgfCBcImRvd250b1wiIC0+IHRydWVcbiAgfCBcImVsc2VcIiAtPiB0cnVlXG4gIHwgXCJlbmRcIiAtPiB0cnVlXG4gIHwgXCJleGNlcHRpb25cIiAtPiB0cnVlXG4gIHwgXCJleHRlcm5hbFwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZm9yXCIgLT4gdHJ1ZVxuICB8IFwiZnVuXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3Rpb25cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdG9yXCIgLT4gdHJ1ZVxuICB8IFwiaWZcIiAtPiB0cnVlXG4gIHwgXCJpblwiIC0+IHRydWVcbiAgfCBcImluY2x1ZGVcIiAtPiB0cnVlXG4gIHwgXCJpbmhlcml0XCIgLT4gdHJ1ZVxuICB8IFwiaW5pdGlhbGl6ZXJcIiAtPiB0cnVlXG4gIHwgXCJsYXp5XCIgLT4gdHJ1ZVxuICB8IFwibGV0XCIgLT4gdHJ1ZVxuICB8IFwibWF0Y2hcIiAtPiB0cnVlXG4gIHwgXCJtZXRob2RcIiAtPiB0cnVlXG4gIHwgXCJtb2R1bGVcIiAtPiB0cnVlXG4gIHwgXCJtdXRhYmxlXCIgLT4gdHJ1ZVxuICB8IFwibmV3XCIgLT4gdHJ1ZVxuICB8IFwibm9ucmVjXCIgLT4gdHJ1ZVxuICB8IFwib2JqZWN0XCIgLT4gdHJ1ZVxuICB8IFwib2ZcIiAtPiB0cnVlXG4gIHwgXCJvcGVuXCIgLT4gdHJ1ZVxuICB8IFwib3JcIiAtPiB0cnVlXG4gICgqIHwgXCJwYXJzZXJcIiAtPiB0cnVlICopXG4gIHwgXCJwcml2YXRlXCIgLT4gdHJ1ZVxuICB8IFwicmVjXCIgLT4gdHJ1ZVxuICB8IFwic2lnXCIgLT4gdHJ1ZVxuICB8IFwic3RydWN0XCIgLT4gdHJ1ZVxuICB8IFwidGhlblwiIC0+IHRydWVcbiAgfCBcInRvXCIgLT4gdHJ1ZVxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcInRyeVwiIC0+IHRydWVcbiAgfCBcInR5cGVcIiAtPiB0cnVlXG4gIHwgXCJ2YWxcIiAtPiB0cnVlXG4gIHwgXCJ2aXJ0dWFsXCIgLT4gdHJ1ZVxuICB8IFwid2hlblwiIC0+IHRydWVcbiAgfCBcIndoaWxlXCIgLT4gdHJ1ZVxuICB8IFwid2l0aFwiIC0+IHRydWVcbiAgfCBcImxvclwiIC0+IHRydWVcbiAgfCBcImx4b3JcIiAtPiB0cnVlXG4gIHwgXCJtb2RcIiAtPiB0cnVlXG4gIHwgXCJsYW5kXCIgLT4gdHJ1ZVxuICB8IFwibHNsXCIgLT4gdHJ1ZVxuICB8IFwibHNyXCIgLT4gdHJ1ZVxuICB8IFwiYXNyXCIgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVyc1xuICAgIG9wZW4gUHJpbnRmICQqKVxuXG4oKiBDb3B5IG9mIE9DYW1sIHBhcnNldHJlZXMgKilcbigqJFxuICBmb3JlYWNoX3ZlcnNpb24gKGZ1biBzdWZmaXggXyAtPlxuICAgICAgcHJpbnRmIFwibW9kdWxlIEFzdF8lcyA9IEFzdF8lc1xcblwiIHN1ZmZpeCBzdWZmaXgpXG4qKVxubW9kdWxlIEFzdF80MDIgPSBBc3RfNDAyXG5tb2R1bGUgQXN0XzQwMyA9IEFzdF80MDNcbm1vZHVsZSBBc3RfNDA0ID0gQXN0XzQwNFxubW9kdWxlIEFzdF80MDUgPSBBc3RfNDA1XG5tb2R1bGUgQXN0XzQwNiA9IEFzdF80MDZcbm1vZHVsZSBBc3RfNDA3ID0gQXN0XzQwN1xubW9kdWxlIEFzdF80MDggPSBBc3RfNDA4XG5tb2R1bGUgQXN0XzQwOSA9IEFzdF80MDlcbm1vZHVsZSBBc3RfNDEwID0gQXN0XzQxMFxubW9kdWxlIEFzdF80MTEgPSBBc3RfNDExXG5tb2R1bGUgQXN0XzQxMiA9IEFzdF80MTJcbm1vZHVsZSBBc3RfNDEzID0gQXN0XzQxM1xubW9kdWxlIEFzdF80MTQgPSBBc3RfNDE0XG5tb2R1bGUgQXN0XzUwMCA9IEFzdF81MDBcbm1vZHVsZSBBc3RfNTAxID0gQXN0XzUwMVxubW9kdWxlIEFzdF81MDIgPSBBc3RfNTAyXG5tb2R1bGUgQXN0XzUwMyA9IEFzdF81MDNcbigqJCopXG5cbigqIE1hbnVhbCBtaWdyYXRpb24gYmV0d2VlbiB2ZXJzaW9ucyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4geCB5IC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB4IHkgeCB5O1xuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeSB4IHkgeClcbiopXG5tb2R1bGUgTWlncmF0ZV80MDJfNDAzID0gTWlncmF0ZV80MDJfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDNfNDAyID0gTWlncmF0ZV80MDNfNDAyXG5tb2R1bGUgTWlncmF0ZV80MDNfNDA0ID0gTWlncmF0ZV80MDNfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDRfNDAzID0gTWlncmF0ZV80MDRfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDRfNDA1ID0gTWlncmF0ZV80MDRfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA0ID0gTWlncmF0ZV80MDVfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA2ID0gTWlncmF0ZV80MDVfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA1ID0gTWlncmF0ZV80MDZfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA3ID0gTWlncmF0ZV80MDZfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA2ID0gTWlncmF0ZV80MDdfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA4ID0gTWlncmF0ZV80MDdfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA3ID0gTWlncmF0ZV80MDhfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA5ID0gTWlncmF0ZV80MDhfNDA5XG5tb2R1bGUgTWlncmF0ZV80MDlfNDA4ID0gTWlncmF0ZV80MDlfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDlfNDEwID0gTWlncmF0ZV80MDlfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTBfNDA5ID0gTWlncmF0ZV80MTBfNDA5XG5tb2R1bGUgTWlncmF0ZV80MTBfNDExID0gTWlncmF0ZV80MTBfNDExXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEwID0gTWlncmF0ZV80MTFfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEyID0gTWlncmF0ZV80MTFfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTJfNDExID0gTWlncmF0ZV80MTJfNDExXG5tb2R1bGUgTWlncmF0ZV80MTJfNDEzID0gTWlncmF0ZV80MTJfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTNfNDEyID0gTWlncmF0ZV80MTNfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTNfNDE0ID0gTWlncmF0ZV80MTNfNDE0XG5tb2R1bGUgTWlncmF0ZV80MTRfNDEzID0gTWlncmF0ZV80MTRfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTRfNTAwID0gTWlncmF0ZV80MTRfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDBfNDE0ID0gTWlncmF0ZV81MDBfNDE0XG5tb2R1bGUgTWlncmF0ZV81MDBfNTAxID0gTWlncmF0ZV81MDBfNTAxXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAwID0gTWlncmF0ZV81MDFfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAyID0gTWlncmF0ZV81MDFfNTAyXG5tb2R1bGUgTWlncmF0ZV81MDJfNTAxID0gTWlncmF0ZV81MDJfNTAxXG5tb2R1bGUgTWlncmF0ZV81MDJfNTAzID0gTWlncmF0ZV81MDJfNTAzXG5tb2R1bGUgTWlncmF0ZV81MDNfNTAyID0gTWlncmF0ZV81MDNfNTAyXG4oKiQqKVxuXG4oKiBDb21waWxlciBtb2R1bGVzICopXG5tb2R1bGUgQXN0X21ldGFkYXRhID0gQXN0X21ldGFkYXRhXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgUGFyc2UgPSBQYXJzZVxubW9kdWxlIFBwcmludGFzdCA9IFBwcmludGFzdFxuXG5sZXQgaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCkgPVxuICAoKklGX0FUX0xFQVNUIDQwOCBPY2FtbF9jb21tb24uQ29tcG1pc2MucmVhZF9jbGZsYWdzX2Zyb21fZW52ICgpICopXG4gICgqSUZfTk9UX0FUX0xFQVNUIDQwOCAoKSAqKVxuKCoqIEFkanVzdCB0aGUgcmVwb3J0aW5nIHN0eWxlIG9mIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgT0NBTUxfQ09MT1IgYW5kIE9DQU1MX0VSUk9SX1NUWUxFLiAqKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUT0RPOiByZW1vdmUgdGhpcyBvcGVuICopXG5vcGVuIFN0ZGxpYjBcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcbm9wZW4gQXN0bGliLkFzdF81MDBcblxuW0BAQHdhcm5pbmcgXCItOVwiXVxuXG5vcGVuIEFzdHR5cGVzXG5vcGVuIFBhcnNldHJlZVxuXG50eXBlICdhIHdpdGhfbG9jID0gJ2EgTG9jYXRpb24ubG9jXG50eXBlIGxvYyA9IExvY2F0aW9uLnRcbnR5cGUgbGlkID0gTG9uZ2lkZW50LnQgd2l0aF9sb2NcbnR5cGUgc3RyID0gc3RyaW5nIHdpdGhfbG9jXG50eXBlIHN0cl9vcHQgPSBzdHJpbmcgb3B0aW9uIHdpdGhfbG9jXG50eXBlIGF0dHJzID0gYXR0cmlidXRlIGxpc3RcblxubGV0IGRlZmF1bHRfbG9jID0gcmVmIExvY2F0aW9uLm5vbmVcblxudHlwZSByZWZfYW5kX3ZhbHVlID0gUiA6ICdhIHJlZiAqICdhIC0+IHJlZl9hbmRfdmFsdWVcblxubGV0IHByb3RlY3RfcmVmID1cbiAgbGV0IHNldF9yZWYgKFIgKHIsIHYpKSA9IHIgOj0gdiBpblxuICBmdW4gcmVmIGYgLT5cbiAgICBsZXQgKFIgKHIsIF8pKSA9IHJlZiBpblxuICAgIGxldCBiYWNrdXAgPSBSIChyLCAhcikgaW5cbiAgICBzZXRfcmVmIHJlZjtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICByYWlzZSBlXG5cbmxldCB3aXRoX2RlZmF1bHRfbG9jIGwgZiA9IHByb3RlY3RfcmVmIChSIChkZWZhdWx0X2xvYywgbCkpIGZcblxubW9kdWxlIENvbnN0ID0gc3RydWN0XG4gIGxldCBpbnRlZ2VyID9zdWZmaXggaSA9IFBjb25zdF9pbnRlZ2VyIChpLCBzdWZmaXgpXG4gIGxldCBpbnQgP3N1ZmZpeCBpID0gaW50ZWdlciA/c3VmZml4IChJbnQudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQzMiA/KHN1ZmZpeCA9ICdsJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50MzIudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQ2NCA/KHN1ZmZpeCA9ICdMJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50NjQudG9fc3RyaW5nIGkpXG4gIGxldCBuYXRpdmVpbnQgPyhzdWZmaXggPSAnbicpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbiAgbGV0IGZsb2F0ID9zdWZmaXggZiA9IFBjb25zdF9mbG9hdCAoZiwgc3VmZml4KVxuICBsZXQgY2hhciBjID0gUGNvbnN0X2NoYXIgY1xuXG4gIGxldCBzdHJpbmcgP3F1b3RhdGlvbl9kZWxpbWl0ZXIgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIHMgPVxuICAgIFBjb25zdF9zdHJpbmcgKHMsIGxvYywgcXVvdGF0aW9uX2RlbGltaXRlcilcbmVuZFxuXG5tb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIG5hbWUgcGF5bG9hZCA9XG4gICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIFR5cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjID0gZDtcbiAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBkLnB0eXBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFB0eXBfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhciBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jb25zdHIgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9vYmplY3QgKGEsIGIpKVxuICBsZXQgY2xhc3NfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NsYXNzIChhLCBiKSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2FsaWFzIChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXJpYW50IChhLCBiLCBjKSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcG9seSAoYSwgYikpXG4gIGxldCBwYWNrYWdlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BhY2thZ2UgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF9leHRlbnNpb24gYSlcblxuICBsZXQgZm9yY2VfcG9seSB0ID1cbiAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IHQgfCBfIC0+IHBvbHkgfmxvYzp0LnB0eXBfbG9jIFtdIHRcbiAgKCogLT4gZ2hvc3Q/ICopXG5cbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICAgIGluXG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbmVuZFxuXG5tb2R1bGUgUGF0ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2MgPSBkO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGQucHBhdF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHBhdF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyIGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hbGlhcyAoYSwgYikpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RhbnQgYSlcbiAgbGV0IGludGVydmFsID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2ludGVydmFsIChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90dXBsZSBhKVxuXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID1cbiAgICBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJ1Y3QgKGEsIE9wdGlvbi5tYXAgKGZ1biBiIC0+IChbXSwgYikpIGIpKVxuXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3JlY29yZCAoYSwgYikpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYXJyYXkgYSlcbiAgbGV0IG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vciAoYSwgYikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IHR5cGVfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90eXBlIGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfbGF6eSBhKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF91bnBhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29wZW4gKGEsIGIpKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXhjZXB0aW9uIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYyA9IGQ7XG4gICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZC5wZXhwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWRlbnQgYSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdGFudCBhKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldCAoYSwgYiwgYykpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgZnVuY3Rpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW5jdGlvbiBhKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXBwbHkgKGEsIGIpKVxuICBsZXQgbWF0Y2hfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX21hdGNoIChhLCBiKSlcbiAgbGV0IHRyeV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHJ5IChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF90dXBsZSBhKVxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cnVjdCAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3JlY29yZCAoYSwgYikpXG4gIGxldCBmaWVsZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9maWVsZCAoYSwgYikpXG4gIGxldCBzZXRmaWVsZCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcnJheSBhKVxuICBsZXQgaWZ0aGVuZWxzZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpKVxuICBsZXQgc2VxdWVuY2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VxdWVuY2UgKGEsIGIpKVxuICBsZXQgd2hpbGVfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3doaWxlIChhLCBiKSlcbiAgbGV0IGZvcl8gP2xvYyA/YXR0cnMgYSBiIGMgZCBlID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgY29lcmNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29lcmNlIChhLCBiLCBjKSlcbiAgbGV0IHNlbmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VuZCAoYSwgYikpXG4gIGxldCBuZXdfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXcgYSlcbiAgbGV0IHNldGluc3R2YXIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0aW5zdHZhciAoYSwgYikpXG4gIGxldCBvdmVycmlkZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3ZlcnJpZGUgYSlcbiAgbGV0IGxldG1vZHVsZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykpXG4gIGxldCBsZXRleGNlcHRpb24gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSlcbiAgbGV0IGFzc2VydF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Fzc2VydCBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xhenkgYSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcG9seSAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vYmplY3QgYSlcbiAgbGV0IG5ld3R5cGUgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3dHlwZSAoYSwgYikpXG4gIGxldCBwYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vcGVuIChhLCBiKSlcblxuICBsZXQgbGV0b3AgP2xvYyA/YXR0cnMgbGV0XyBhbmRzIGJvZHkgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9KVxuXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2V4dGVuc2lvbiBhKVxuICBsZXQgdW5yZWFjaGFibGUgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQZXhwX3VucmVhY2hhYmxlXG4gIGxldCBjYXNlIGxocyA/Z3VhcmQgcmhzID0geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9XG5cbiAgbGV0IGJpbmRpbmdfb3Agb3AgcGF0IGV4cCBsb2MgPVxuICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXR5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtdHlfZGVzYyA9IGQ7IHBtdHlfbG9jID0gbG9jOyBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG10eV9hdHRyaWJ1dGVzID0gZC5wbXR5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfaWRlbnQgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9hbGlhcyBhKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9zaWduYXR1cmUgYSlcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2Z1bmN0b3IgKGEsIGIpKVxuICBsZXQgd2l0aF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfd2l0aCAoYSwgYikpXG4gIGxldCB0eXBlb2ZfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV90eXBlb2YgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIE1vZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbW9kX2Rlc2MgPSBkOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGQucG1vZF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2lkZW50IHgpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3N0cnVjdHVyZSB4KVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYXJnIGJvZHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9mdW5jdG9yIChhcmcsIGJvZHkpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgbTEgbTIgPSBtayA/bG9jID9hdHRycyAoUG1vZF9hcHBseSAobTEsIG0yKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIG0gbXR5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfY29uc3RyYWludCAobSwgbXR5KSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBlID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfdW5wYWNrIGUpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBTaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc2lnX2Rlc2MgPSBkOyBwc2lnX2xvYyA9IGxvYyB9XG4gIGxldCB2YWx1ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3ZhbHVlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc2lnX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBlc3Vic3QgYSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdWxlIGEpXG4gIGxldCBtb2Rfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2RzdWJzdCBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfb3BlbiBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19pbmNsdWRlIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzaWdfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgU3RyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHN0cl9kZXNjID0gZDsgcHN0cl9sb2MgPSBsb2MgfVxuICBsZXQgZXZhbCA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXZhbCAoYSwgYXR0cnMpKVxuICBsZXQgdmFsdWUgP2xvYyBhIGIgPSBtayA/bG9jIChQc3RyX3ZhbHVlIChhLCBiKSlcbiAgbGV0IHByaW1pdGl2ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3ByaW1pdGl2ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHN0cl90eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHVsZSBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfb3BlbiBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzc190eXBlIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2luY2x1ZGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgQ2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNsX2Rlc2MgPSBkOyBwY2xfbG9jID0gbG9jOyBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2xfYXR0cmlidXRlcyA9IGQucGNsX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHIgKGEsIGIpKVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX3N0cnVjdHVyZSBhKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9hcHBseSAoYSwgYikpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3R5X2Rlc2MgPSBkOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGQucGN0eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2NvbnN0ciAoYSwgYikpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X3NpZ25hdHVyZSBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGN0eV9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0ZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3RmX2Rlc2MgPSBkOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfaW5oZXJpdCBhKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfdmFsIChhLCBiLCBjLCBkKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX21ldGhvZCAoYSwgYiwgYywgZCkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGN0Zl9hdHRyaWJ1dGUgYSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gZC5wY3RmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIENmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjZl9kZXNjID0gZDsgcGNmX2xvYyA9IGxvYzsgcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbmhlcml0IChhLCBiLCBjKSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX3ZhbCAoYSwgYiwgYykpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9tZXRob2QgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGluaXRpYWxpemVyXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbml0aWFsaXplciBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjZl9hdHRyaWJ1dGUgYSlcbiAgbGV0IHZpcnR1YWxfIGN0ID0gQ2ZrX3ZpcnR1YWwgY3RcbiAgbGV0IGNvbmNyZXRlIG8gZSA9IENma19jb25jcmV0ZSAobywgZSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBkLnBjZl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBWYWwgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocHJpbSA9IFtdKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgIHB2YWxfdHlwZSA9IHR5cDtcbiAgICAgIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHZhbF9sb2MgPSBsb2M7XG4gICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgdHlwID1cbiAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXA7IHBtZF9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtZF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNcyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBzeW4gPVxuICAgIHtcbiAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgIHBtc19tYW5pZmVzdCA9IHN5bjtcbiAgICAgIHBtc19hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXNfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTXRkID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/dHlwIG5hbWUgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbXRkX3R5cGUgPSB0eXA7XG4gICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtdGRfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgZXhwciA9XG4gICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1iX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE9wbiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhvdmVycmlkZSA9IEZyZXNoKSBleHByID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBJbmNsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBtZXhwciA9XG4gICAgeyBwaW5jbF9tb2QgPSBtZXhwcjsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuZW5kXG5cbm1vZHVsZSBWYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgcGF0IGV4cHIgPVxuICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IGF0dHJzOyBwdmJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgQ2kgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmlydCA9IENvbmNyZXRlKSA/KHBhcmFtcyA9IFtdKVxuICAgICAgbmFtZSBleHByID1cbiAgICB7XG4gICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUeXBlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KGNzdHJzID0gW10pXG4gICAgICA/KGtpbmQgPSBQdHlwZV9hYnN0cmFjdCkgPyhwcml2ID0gUHVibGljKSA/bWFuaWZlc3QgbmFtZSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdHlwZV9sb2MgPSBsb2M7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGZpZWxkID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8obXV0ID0gSW1tdXRhYmxlKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgcGxkX211dGFibGUgPSBtdXQ7XG4gICAgICBwbGRfdHlwZSA9IHR5cDtcbiAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICBwbGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG4oKiogVHlwZSBleHRlbnNpb25zICopXG5tb2R1bGUgVGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8ocHJpdiA9IFB1YmxpYylcbiAgICAgIHBhdGggY29uc3RydWN0b3JzID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgbWtfZXhjZXB0aW9uID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGNvbnN0cnVjdG9yID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBraW5kID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBkZWNsID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfZGVjbCAodmFycywgYXJncywgcmVzKTtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCByZWJpbmQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBsaWQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X3JlYmluZCBsaWQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgQ3NpZyA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbm1vZHVsZSBDc3RyID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxuKCoqIFJvdyBmaWVsZHMgKilcbm1vZHVsZSBSZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwcmZfZGVzYyA9IGRlc2M7IHByZl9sb2MgPSBsb2M7IHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgY29uc3QgdHlzID1cbiAgICBtayA/bG9jID9hdHRycyAoUnRhZyAobGFiZWwsIGNvbnN0LCB0eXMpKVxuXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoUmluaGVyaXQgdHkpXG5lbmRcblxuKCoqIE9iamVjdCBmaWVsZHMgKilcbm1vZHVsZSBPZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwb2ZfZGVzYyA9IGRlc2M7IHBvZl9sb2MgPSBsb2M7IHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgdHkgPSBtayA/bG9jID9hdHRycyAoT3RhZyAobGFiZWwsIHR5KSlcbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChPaW5oZXJpdCB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQkVHSU4gb2YgQkxBQ0sgTUFHSUMgKilcbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxudHlwZSBfIHdpdG5lc3NlcyA9IC4uXG5cbnR5cGUgXyBtaWdyYXRpb24gPSAuLlxudHlwZSBfIG1pZ3JhdGlvbiArPSBVbmRlZmluZWQgOiBfIG1pZ3JhdGlvblxuXG50eXBlICdhIG1pZ3JhdGlvbl9pbmZvID0ge1xuICBtdXRhYmxlIG5leHRfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbiAgbXV0YWJsZSBwcmV2aW91c192ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xufVxuXG4oKiogQWJzdHJhY3QgdmlldyBvZiBhIHZlcnNpb24gb2YgYW4gT0NhbWwgQXN0ICopXG5tb2R1bGUgdHlwZSBBc3QgPSBzaWdcbiAgKCokIGZvcmVhY2hfbW9kdWxlIChmdW4gbSB0eXBlcyAtPlxuICAgICAgcHJpbnRmIFwiICBtb2R1bGUgJXMgOiBzaWdcXG5cIiBtO1xuICAgICAgTGlzdC5pdGVyIHR5cGVzIH5mOihwcmludGYgXCIgICAgdHlwZSAlc1xcblwiKTtcbiAgICAgIHByaW50ZiBcIiAgZW5kXFxuXCJcbiAgICApXG4gICopXG4gIG1vZHVsZSBQYXJzZXRyZWUgOiBzaWdcbiAgICB0eXBlIHN0cnVjdHVyZVxuICAgIHR5cGUgc2lnbmF0dXJlXG4gICAgdHlwZSB0b3BsZXZlbF9waHJhc2VcbiAgICB0eXBlIGNvcmVfdHlwZVxuICAgIHR5cGUgZXhwcmVzc2lvblxuICAgIHR5cGUgcGF0dGVyblxuICAgIHR5cGUgY2FzZVxuICAgIHR5cGUgdHlwZV9kZWNsYXJhdGlvblxuICAgIHR5cGUgdHlwZV9leHRlbnNpb25cbiAgICB0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgIHR5cGUgY2xhc3NfZXhwclxuICAgIHR5cGUgY2xhc3NfZmllbGRcbiAgICB0eXBlIGNsYXNzX3R5cGVcbiAgICB0eXBlIGNsYXNzX3NpZ25hdHVyZVxuICAgIHR5cGUgY2xhc3NfdHlwZV9maWVsZFxuICAgIHR5cGUgbW9kdWxlX2V4cHJcbiAgICB0eXBlIG1vZHVsZV90eXBlXG4gICAgdHlwZSBzaWduYXR1cmVfaXRlbVxuICAgIHR5cGUgc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG4oKiQqKVxuICBtb2R1bGUgQ29uZmlnIDogc2lnXG4gICAgdmFsIGFzdF9pbXBsX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICAgIHZhbCBhc3RfaW50Zl9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgZW5kXG5lbmRcblxuKCogU2hvcnRjdXRzIGZvciB0YWxraW5nIGFib3V0IGFzdCB0eXBlcyBvdXRzaWRlIG9mIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxudHlwZSAnYSBfdHlwZXMgPSAnYSBjb25zdHJhaW50ICdhXG4gID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogXztcXG5cIiBzKSAqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogXztcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBfO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IF87XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogXztcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBfO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IF87XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogXztcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBfO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IF87XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IF87XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogXztcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBfO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IF87XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBfO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IF87XG4oKiQqKVxuICA+XG47O1xuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgcHJpbnRmIFwidHlwZSAnYSBnZXRfJXMgPVxcblwiIHM7XG4gICAgcHJpbnRmIFwiICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgJXMgOiAneDsgLi4gPlxcblwiIHNcbiAgKSAqKVxudHlwZSAnYSBnZXRfc3RydWN0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3RvcGxldmVsX3BocmFzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0b3BsZXZlbF9waHJhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY29yZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNvcmVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHByZXNzaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4cHJlc3Npb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfcGF0dGVybiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBwYXR0ZXJuIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2Nhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2FzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2RlY2xhcmF0aW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZGVjbGFyYXRpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9leHRlbnNpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9leHRlbnNpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19zaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZV9maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV9leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV9leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZV9pdGVtIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZV9pdGVtIDogJ3g7IC4uID5cbigqJCopXG5cbm1vZHVsZSB0eXBlIE9DYW1sX3ZlcnNpb24gPSBzaWdcbiAgbW9kdWxlIEFzdCA6IEFzdFxuICB2YWwgdmVyc2lvbiA6IGludFxuICB2YWwgc3RyaW5nX3ZlcnNpb24gOiBzdHJpbmdcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICB2YWwgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mb1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdG5lc3MoQXN0IDogQXN0KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICBsZXQgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mbyA9XG4gICAgeyBuZXh0X3ZlcnNpb24gPSBVbmRlZmluZWQ7IHByZXZpb3VzX3ZlcnNpb24gPSBVbmRlZmluZWQgfVxuZW5kXG5cbnR5cGUgJ3R5cGVzIG9jYW1sX3ZlcnNpb24gPVxuICAobW9kdWxlIE9DYW1sX3ZlcnNpb25cbiAgICAoKiQgbGV0IHNlcCA9IHdpdGhfdGhlbl9hbmQgKCkgaW5cbiAgICAgIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgICAgIHByaW50ZiBcIiAgICAldCB0eXBlIEFzdC4lcy4lcyA9ICd0eXBlcyBnZXRfJXNcXG5cIiBzZXAgbSBzIHMpICopXG4gICAgd2l0aCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgPSAndHlwZXMgZ2V0X3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9ICd0eXBlcyBnZXRfdG9wbGV2ZWxfcGhyYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY29yZV90eXBlID0gJ3R5cGVzIGdldF9jb3JlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHByZXNzaW9uID0gJ3R5cGVzIGdldF9leHByZXNzaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUucGF0dGVybiA9ICd0eXBlcyBnZXRfcGF0dGVyblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNhc2UgPSAndHlwZXMgZ2V0X2Nhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0gJ3R5cGVzIGdldF90eXBlX2RlY2xhcmF0aW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSAndHlwZXMgZ2V0X3R5cGVfZXh0ZW5zaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gJ3R5cGVzIGdldF9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19leHByID0gJ3R5cGVzIGdldF9jbGFzc19leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9ICd0eXBlcyBnZXRfY2xhc3Nfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZV9maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByID0gJ3R5cGVzIGdldF9tb2R1bGVfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlID0gJ3R5cGVzIGdldF9tb2R1bGVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zaWduYXR1cmVfaXRlbVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgKVxuXG50eXBlICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyVzOiAnZnJvbSBnZXRfJXMgLT4gJ3RvXyBnZXRfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlOiAnZnJvbSBnZXRfc3RydWN0dXJlIC0+ICd0b18gZ2V0X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmU6ICdmcm9tIGdldF9zaWduYXR1cmUgLT4gJ3RvXyBnZXRfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZTogJ2Zyb20gZ2V0X3RvcGxldmVsX3BocmFzZSAtPiAndG9fIGdldF90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlOiAnZnJvbSBnZXRfY29yZV90eXBlIC0+ICd0b18gZ2V0X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uOiAnZnJvbSBnZXRfZXhwcmVzc2lvbiAtPiAndG9fIGdldF9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm46ICdmcm9tIGdldF9wYXR0ZXJuIC0+ICd0b18gZ2V0X3BhdHRlcm47XG4gIGNvcHlfY2FzZTogJ2Zyb20gZ2V0X2Nhc2UgLT4gJ3RvXyBnZXRfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uOiAnZnJvbSBnZXRfdHlwZV9kZWNsYXJhdGlvbiAtPiAndG9fIGdldF90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uOiAnZnJvbSBnZXRfdHlwZV9leHRlbnNpb24gLT4gJ3RvXyBnZXRfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiAnZnJvbSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICd0b18gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByOiAnZnJvbSBnZXRfY2xhc3NfZXhwciAtPiAndG9fIGdldF9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZTogJ2Zyb20gZ2V0X2NsYXNzX3R5cGUgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmU6ICdmcm9tIGdldF9jbGFzc19zaWduYXR1cmUgLT4gJ3RvXyBnZXRfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ6ICdmcm9tIGdldF9jbGFzc190eXBlX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHI6ICdmcm9tIGdldF9tb2R1bGVfZXhwciAtPiAndG9fIGdldF9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZTogJ2Zyb20gZ2V0X21vZHVsZV90eXBlIC0+ICd0b18gZ2V0X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtOiAnZnJvbSBnZXRfc2lnbmF0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW06ICdmcm9tIGdldF9zdHJ1Y3R1cmVfaXRlbSAtPiAndG9fIGdldF9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbmxldCBpZCB4ID0geFxubGV0IG1pZ3JhdGlvbl9pZGVudGl0eSA6ICgnYSwgJ2EpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICBjb3B5XyVzID0gaWQ7XFxuXCIgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgPSBpZDtcbiAgY29weV9zaWduYXR1cmUgPSBpZDtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgPSBpZDtcbiAgY29weV9jb3JlX3R5cGUgPSBpZDtcbiAgY29weV9leHByZXNzaW9uID0gaWQ7XG4gIGNvcHlfcGF0dGVybiA9IGlkO1xuICBjb3B5X2Nhc2UgPSBpZDtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uID0gaWQ7XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gPSBpZDtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBpZDtcbiAgY29weV9jbGFzc19leHByID0gaWQ7XG4gIGNvcHlfY2xhc3NfZmllbGQgPSBpZDtcbiAgY29weV9jbGFzc190eXBlID0gaWQ7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA9IGlkO1xuICBjb3B5X21vZHVsZV9leHByID0gaWQ7XG4gIGNvcHlfbW9kdWxlX3R5cGUgPSBpZDtcbiAgY29weV9zaWduYXR1cmVfaXRlbSA9IGlkO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtID0gaWQ7XG4oKiQqKVxufVxuXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBtaWdyYXRpb25fY29tcG9zZSAoYWIgOiAoJ2EsICdiKSBtaWdyYXRpb25fZnVuY3Rpb25zKSAoYmMgOiAoJ2IsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zKSA6ICgnYSwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lLTIxcyA9IGNvbXBvc2UgYmMuY29weV8lLTIxcyBhYi5jb3B5XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgIGFiLmNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgYWIuY29weV9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2V4cHJlc3Npb24gICAgICAgICAgICBhYi5jb3B5X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3BhdHRlcm4gICAgICAgICAgICAgICBhYi5jb3B5X3BhdHRlcm47XG4gIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2Nhc2UgICAgICAgICAgICAgICAgICBhYi5jb3B5X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICBhYi5jb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICBhYi5jb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGNvbXBvc2UgYmMuY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgYWIuY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlICAgICAgICAgICAgYWIuY29weV9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgYWIuY29weV9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICBhYi5jb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV9leHByICAgICAgICAgICBhYi5jb3B5X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgYWIuY29weV9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxudHlwZSBfIG1pZ3JhdGlvbiArPSBNaWdyYXRpb24gOiAnZnJvbSBvY2FtbF92ZXJzaW9uICogKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uIC0+ICdmcm9tIG1pZ3JhdGlvblxuXG5tb2R1bGUgdHlwZSBNaWdyYXRlX21vZHVsZSA9IHNpZ1xuICBtb2R1bGUgRnJvbSA6IEFzdFxuICBtb2R1bGUgVG8gOiBBc3RcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgcHJpbnRmIFwiICB2YWwgY29weV8lLTIxczogRnJvbS4lcy4lcyAtPiBUby4lcy4lc1xcblwiIHMgbSBzIG0gcykgKilcbiAgdmFsIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZVxuICB2YWwgY29weV9zaWduYXR1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gIHZhbCBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgIDogRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgdmFsIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZVxuICB2YWwgY29weV9leHByZXNzaW9uICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgdmFsIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuXG4gIHZhbCBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZVxuICB2YWwgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgdmFsIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgdmFsIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICB2YWwgY29weV9jbGFzc19leHByICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgdmFsIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlXG4gIHZhbCBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gIHZhbCBjb3B5X21vZHVsZV9leHByICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gIHZhbCBjb3B5X21vZHVsZV90eXBlICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gIHZhbCBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4oKiQqKVxuZW5kXG5cbm1vZHVsZSBNaWdyYXRpb25fZnVuY3Rpb25zXG4gICAgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0IG1pZ3JhdGlvbl9mdW5jdGlvbnMgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbGV0IG9wZW4gQV90b19CIGluXG4gICAge1xuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICAgIGNvcHlfcGF0dGVybjtcbiAgICAgIGNvcHlfY2FzZTtcbiAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfbWlncmF0aW9uIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuICAgIChCX3RvX0EgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQi5Bc3QgYW5kIG1vZHVsZSBUbyA9IEEuQXN0KVxuPVxuc3RydWN0XG4gIGxldCAoKSA9IChcbiAgICBsZXQgaXNfdW5kZWZpbmVkIDogdHlwZSBhLiBhIG1pZ3JhdGlvbiAtPiBib29sID0gZnVuY3Rpb25cbiAgICAgIHwgVW5kZWZpbmVkIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgYXNzZXJ0IChBLnZlcnNpb24gPCBCLnZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24pO1xuICAgIGxldCBtb2R1bGUgQV90b19CX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQSkoQikoQV90b19CKSBpblxuICAgIGxldCBtb2R1bGUgQl90b19BX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQikoQSkoQl90b19BKSBpblxuICAgIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQSksIEFfdG9fQl9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBCKSk7XG4gICAgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQiksIEJfdG9fQV9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBBKSk7XG4gIClcbmVuZFxuXG50eXBlICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb24gPVxuICB8IE5vX21pZ3JhdGlvbiA6ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cbiAgfCBJbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgOiAgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uXG4gICAgICAtPiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG5cbmxldCBpbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMpXFxuXCIgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUpXG4gICAgKHR5cGUgc2lnbmF0dXJlKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZSlcbiAgICAodHlwZSBjb3JlX3R5cGUpXG4gICAgKHR5cGUgZXhwcmVzc2lvbilcbiAgICAodHlwZSBwYXR0ZXJuKVxuICAgICh0eXBlIGNhc2UpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgKHR5cGUgY2xhc3NfZXhwcilcbiAgICAodHlwZSBjbGFzc19maWVsZClcbiAgICAodHlwZSBjbGFzc190eXBlKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZSlcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkKVxuICAgICh0eXBlIG1vZHVsZV9leHByKVxuICAgICh0eXBlIG1vZHVsZV90eXBlKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgIFwiICAgICAlLTIxcyA6ICVzO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmU7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGU7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICBkaXJlY3Rpb25cbiAgPVxuICBsZXQgdmVyc2lvbiA9IG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgTmV4dCAtPiBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvblxuICAgIHwgYFByZXZpb3VzIC0+IEEubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvblxuICBpblxuICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgfCBVbmRlZmluZWQgLT4gTm9fbWlncmF0aW9uXG4gIHwgTWlncmF0aW9uIChfLCBmdW5zLCB0b18pIC0+IEltbWVkaWF0ZV9taWdyYXRpb24gKGZ1bnMsIHRvXylcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbWlncmF0ZVxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzMSkgKHR5cGUgJXMyKVxcblwiIHMgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUxKSAodHlwZSBzdHJ1Y3R1cmUyKVxuICAgICh0eXBlIHNpZ25hdHVyZTEpICh0eXBlIHNpZ25hdHVyZTIpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMSkgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMilcbiAgICAodHlwZSBjb3JlX3R5cGUxKSAodHlwZSBjb3JlX3R5cGUyKVxuICAgICh0eXBlIGV4cHJlc3Npb24xKSAodHlwZSBleHByZXNzaW9uMilcbiAgICAodHlwZSBwYXR0ZXJuMSkgKHR5cGUgcGF0dGVybjIpXG4gICAgKHR5cGUgY2FzZTEpICh0eXBlIGNhc2UyKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24xKSAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbjEpICh0eXBlIHR5cGVfZXh0ZW5zaW9uMilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IxKSAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IyKVxuICAgICh0eXBlIGNsYXNzX2V4cHIxKSAodHlwZSBjbGFzc19leHByMilcbiAgICAodHlwZSBjbGFzc19maWVsZDEpICh0eXBlIGNsYXNzX2ZpZWxkMilcbiAgICAodHlwZSBjbGFzc190eXBlMSkgKHR5cGUgY2xhc3NfdHlwZTIpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMSkgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMilcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkMSkgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDIpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIxKSAodHlwZSBtb2R1bGVfZXhwcjIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUxKSAodHlwZSBtb2R1bGVfdHlwZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0xKSAodHlwZSBzaWduYXR1cmVfaXRlbTIpXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0xKSAodHlwZSBzdHJ1Y3R1cmVfaXRlbTIpXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczE7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUxO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUxO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UxO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUxO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMTtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjE7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UxO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMTtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24xO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IxO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMTtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQxO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDE7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMTtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUxO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTE7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICAoKG1vZHVsZSBCKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMyO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMjtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMjtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMjtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMjtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjI7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4yO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMjtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjI7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMjtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTI7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTI7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQyO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMjtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0yO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTI7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgPVxuICBtYXRjaCBBLlZlcnNpb24gd2l0aFxuICB8IEIuVmVyc2lvbiAtPiBtaWdyYXRpb25faWRlbnRpdHlcbiAgfCBfIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9IGlmIEEudmVyc2lvbiA8IEIudmVyc2lvbiB0aGVuIGBOZXh0IGVsc2UgYFByZXZpb3VzIGluXG4gICAgbGV0IHJlYyBtaWdyYXRlIChtIDogQS50eXBlcyBpbW1lZGlhdGVfbWlncmF0aW9uKSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGYsIChtb2R1bGUgVG8pKSAtPlxuICAgICAgICBtYXRjaCBUby5WZXJzaW9uIHdpdGhcbiAgICAgICAgfCBCLlZlcnNpb24gLT4gZlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYXRjaCBpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgVG8pIGRpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChnLCB0bzIpIC0+XG4gICAgICAgICAgICBtaWdyYXRlIChJbW1lZGlhdGVfbWlncmF0aW9uIChtaWdyYXRpb25fY29tcG9zZSBmIGcsIHRvMikpXG4gICAgaW5cbiAgICBtaWdyYXRlIChpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgQSkgZGlyZWN0aW9uKVxuXG5tb2R1bGUgQ29udmVydCAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgbGV0IHtcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgY29weV9zaWduYXR1cmU7XG4gICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgY29weV9jb3JlX3R5cGU7XG4gICAgY29weV9leHByZXNzaW9uO1xuICAgIGNvcHlfcGF0dGVybjtcbiAgICBjb3B5X2Nhc2U7XG4gICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY29weV9jbGFzc19leHByO1xuICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgY29weV9jbGFzc190eXBlO1xuICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICBjb3B5X21vZHVsZV9leHByO1xuICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgfSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBtaWdyYXRlIChtb2R1bGUgQSkgKG1vZHVsZSBCKVxuZW5kXG5cbigqJCBmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIHZlcnNpb24gLT5cbiAgICBwcmludGYgXCJtb2R1bGUgT0NhbWxfJWQgPSBzdHJ1Y3RcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF8lZClcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHZlcnNpb24gPSAlZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgc3RyaW5nX3ZlcnNpb24gPSAlU1xcblwiIHZlcnNpb247XG4gICAgcHJpbnRmIFwiZW5kXFxuXCI7XG4gICAgcHJpbnRmIFwibGV0IG9jYW1sXyVkIDogT0NhbWxfJWQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfJWQpXFxuXCJcbiAgICAgIG4gbiBuO1xuICApXG4qKVxubW9kdWxlIE9DYW1sXzQwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDIpXG4gIGxldCB2ZXJzaW9uID0gNDAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wMlwiXG5lbmRcbmxldCBvY2FtbF80MDIgOiBPQ2FtbF80MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAyKVxubW9kdWxlIE9DYW1sXzQwMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDMpXG4gIGxldCB2ZXJzaW9uID0gNDAzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wM1wiXG5lbmRcbmxldCBvY2FtbF80MDMgOiBPQ2FtbF80MDMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAzKVxubW9kdWxlIE9DYW1sXzQwNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDQpXG4gIGxldCB2ZXJzaW9uID0gNDA0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNFwiXG5lbmRcbmxldCBvY2FtbF80MDQgOiBPQ2FtbF80MDQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA0KVxubW9kdWxlIE9DYW1sXzQwNSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDVcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDUpXG4gIGxldCB2ZXJzaW9uID0gNDA1XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNVwiXG5lbmRcbmxldCBvY2FtbF80MDUgOiBPQ2FtbF80MDUudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA1KVxubW9kdWxlIE9DYW1sXzQwNiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDZcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDYpXG4gIGxldCB2ZXJzaW9uID0gNDA2XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNlwiXG5lbmRcbmxldCBvY2FtbF80MDYgOiBPQ2FtbF80MDYudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA2KVxubW9kdWxlIE9DYW1sXzQwNyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDdcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDcpXG4gIGxldCB2ZXJzaW9uID0gNDA3XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wN1wiXG5lbmRcbmxldCBvY2FtbF80MDcgOiBPQ2FtbF80MDcudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA3KVxubW9kdWxlIE9DYW1sXzQwOCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDhcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDgpXG4gIGxldCB2ZXJzaW9uID0gNDA4XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOFwiXG5lbmRcbmxldCBvY2FtbF80MDggOiBPQ2FtbF80MDgudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA4KVxubW9kdWxlIE9DYW1sXzQwOSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDlcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDkpXG4gIGxldCB2ZXJzaW9uID0gNDA5XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOVwiXG5lbmRcbmxldCBvY2FtbF80MDkgOiBPQ2FtbF80MDkudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA5KVxubW9kdWxlIE9DYW1sXzQxMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTApXG4gIGxldCB2ZXJzaW9uID0gNDEwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMFwiXG5lbmRcbmxldCBvY2FtbF80MTAgOiBPQ2FtbF80MTAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEwKVxubW9kdWxlIE9DYW1sXzQxMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTEpXG4gIGxldCB2ZXJzaW9uID0gNDExXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMVwiXG5lbmRcbmxldCBvY2FtbF80MTEgOiBPQ2FtbF80MTEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDExKVxubW9kdWxlIE9DYW1sXzQxMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTIpXG4gIGxldCB2ZXJzaW9uID0gNDEyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMlwiXG5lbmRcbmxldCBvY2FtbF80MTIgOiBPQ2FtbF80MTIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEyKVxubW9kdWxlIE9DYW1sXzQxMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTMpXG4gIGxldCB2ZXJzaW9uID0gNDEzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xM1wiXG5lbmRcbmxldCBvY2FtbF80MTMgOiBPQ2FtbF80MTMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEzKVxubW9kdWxlIE9DYW1sXzQxNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTQpXG4gIGxldCB2ZXJzaW9uID0gNDE0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xNFwiXG5lbmRcbmxldCBvY2FtbF80MTQgOiBPQ2FtbF80MTQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDE0KVxubW9kdWxlIE9DYW1sXzUwMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDApXG4gIGxldCB2ZXJzaW9uID0gNTAwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4wXCJcbmVuZFxubGV0IG9jYW1sXzUwMCA6IE9DYW1sXzUwMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDApXG5tb2R1bGUgT0NhbWxfNTAxID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMSlcbiAgbGV0IHZlcnNpb24gPSA1MDFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjFcIlxuZW5kXG5sZXQgb2NhbWxfNTAxIDogT0NhbWxfNTAxLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMSlcbm1vZHVsZSBPQ2FtbF81MDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAyKVxuICBsZXQgdmVyc2lvbiA9IDUwMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMlwiXG5lbmRcbmxldCBvY2FtbF81MDIgOiBPQ2FtbF81MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAyKVxubW9kdWxlIE9DYW1sXzUwMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDMpXG4gIGxldCB2ZXJzaW9uID0gNTAzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4zXCJcbmVuZFxubGV0IG9jYW1sXzUwMyA6IE9DYW1sXzUwMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDMpXG4oKiQqKVxuXG5sZXQgYWxsX3ZlcnNpb25zIDogKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSBsaXN0ID0gW1xuICAoKiRmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIF8gLT5cbiAgICAgIHByaW50ZiBcIihtb2R1bGUgT0NhbWxfJWQgOiBPQ2FtbF92ZXJzaW9uKTtcXG5cIiBuKSopXG4obW9kdWxlIE9DYW1sXzQwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDYgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA3IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDkgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAxIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDMgOiBPQ2FtbF92ZXJzaW9uKTtcbigqJCopXG5dXG5cbigqJGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4gYSBiIC0+XG4gICAgcHJpbnRmIFwiaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfJWQpKE9DYW1sXyVkKVxcblwiIGEgYjtcbiAgICBwcmludGYgXCIgICAgKEFzdGxpYi5NaWdyYXRlXyVkXyVkKShBc3RsaWIuTWlncmF0ZV8lZF8lZClcXG5cIiBhIGIgYiBhXG4gIClcbiopXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDIpKE9DYW1sXzQwMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAyXzQwMykoQXN0bGliLk1pZ3JhdGVfNDAzXzQwMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMykoT0NhbWxfNDA0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDNfNDA0KShBc3RsaWIuTWlncmF0ZV80MDRfNDAzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA0KShPQ2FtbF80MDUpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNF80MDUpKEFzdGxpYi5NaWdyYXRlXzQwNV80MDQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDUpKE9DYW1sXzQwNilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNikoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNikoT0NhbWxfNDA3KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDZfNDA3KShBc3RsaWIuTWlncmF0ZV80MDdfNDA2KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA3KShPQ2FtbF80MDgpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwN180MDgpKEFzdGxpYi5NaWdyYXRlXzQwOF80MDcpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDgpKE9DYW1sXzQwOSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA4XzQwOSkoQXN0bGliLk1pZ3JhdGVfNDA5XzQwOClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOSkoT0NhbWxfNDEwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDlfNDEwKShBc3RsaWIuTWlncmF0ZV80MTBfNDA5KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEwKShPQ2FtbF80MTEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMF80MTEpKEFzdGxpYi5NaWdyYXRlXzQxMV80MTApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTEpKE9DYW1sXzQxMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDExXzQxMikoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMikoT0NhbWxfNDEzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTJfNDEzKShBc3RsaWIuTWlncmF0ZV80MTNfNDEyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEzKShPQ2FtbF80MTQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxM180MTQpKEFzdGxpYi5NaWdyYXRlXzQxNF80MTMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTQpKE9DYW1sXzUwMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDE0XzUwMCkoQXN0bGliLk1pZ3JhdGVfNTAwXzQxNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzUwMCkoT0NhbWxfNTAxKVxuICAgIChBc3RsaWIuTWlncmF0ZV81MDBfNTAxKShBc3RsaWIuTWlncmF0ZV81MDFfNTAwKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAxKShPQ2FtbF81MDIpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMV81MDIpKEFzdGxpYi5NaWdyYXRlXzUwMl81MDEpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF81MDIpKE9DYW1sXzUwMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNTAyXzUwMykoQXN0bGliLk1pZ3JhdGVfNTAzXzUwMilcbigqJCopXG5cbm1vZHVsZSBPQ2FtbF9jdXJyZW50ID0gT0NhbWxfT0NBTUxfVkVSU0lPTlxuXG5tb2R1bGUgRmluZF92ZXJzaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEltcGwgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IEludGYgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IFVua25vd25cblxuICBsZXQgZnJvbV9tYWdpYyBtYWdpYyA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gVW5rbm93blxuICAgICAgfCAobW9kdWxlIFZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEltcGwgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2UgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEludGYgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb3AgdGFpbFxuICAgIGluXG4gICAgKCogVHJhdmVyc2UgdGhlIHZlcnNpb25zIGZyb20gbGFzdCB0byBmaXJzdDpcbiAgICAgICBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmVuJ3QgdW5pcXVlIGFtb25nIHZlcnNpb25zLFxuICAgICAgIHdlIHdhbnQgdGhlIGxhdGVzdCB2ZXJzaW9uIHdpdGggYSBtYWdpYyBudW1iZXIgbWF0Y2guXG4gICAgICAgVGhlIHNpdHVhdGlvbiBpbiBtaW5kIGlzIHRydW5rIHN1cHBvcnQuICopXG4gICAgICBsZXQgYWxsX3ZlcnNpb25zX3RvcF9kb3duID0gTGlzdC5yZXYgYWxsX3ZlcnNpb25zIGluXG4gICAgICBsb29wIGFsbF92ZXJzaW9uc190b3BfZG93blxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBjb250cm9sIHdoYXQgd2UgdXNlIGZyb20gdGhlIGN1cnJlbnQgY29tcGlsZXIgYW5kIHdoYXQgaXMgZW1iZWQgaW5cbiAgIHRoaXMgbGlicmFyeS5cblxuICAgSXQgbXVzdCBiZSBvcGVuZWQgaW4gYWxsIG1vZHVsZXMsIGVzcGVjaWFsbHkgdGhlIG9uZXMgY29taW5nIGZyb20gdGhlIGNvbXBpbGVyLlxuKilcblxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG5tb2R1bGUgSnMgPSBWZXJzaW9ucy5PQ2FtbF81MDBcbm1vZHVsZSBPY2FtbCA9IFZlcnNpb25zLk9DYW1sX2N1cnJlbnRcblxubW9kdWxlIFNlbGVjdF9hc3QgKE9jYW1sIDogVmVyc2lvbnMuT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc1xuXG4gIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgdHlwZSAoJ2pzLCAnb2NhbWwpIHQgPVxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlc1xcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLiVzLFxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLiVzIClcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgIHRcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFRvcGxldmVsX3BocmFzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDb3JlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXhwcmVzc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFBhdHRlcm5cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5wYXR0ZXJuLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2FzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbigqJCopXG4gICAgICB8IExpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBsaXN0LCAnYiBsaXN0KSB0XG4gICAgICB8IFBhaXIgOiAoJ2EsICdiKSB0ICogKCdjLCAnZCkgdCAtPiAoJ2EgKiAnYywgJ2IgKiAnZCkgdFxuICBlbmRcblxuICBvcGVuIFR5cGVcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcbiAgbW9kdWxlIFRvX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoSnMpIChPY2FtbClcblxuICBsZXQgcmVjIG9mX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IG9jYW1sIC0+IGpzID1cbiAgICBsZXQgb3BlbiBPZl9vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwIChvZl9vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gb2Zfb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gb2Zfb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCByZWMgdG9fb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4ganMgLT4gb2NhbWwgPVxuICAgIGxldCBvcGVuIFRvX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKHRvX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSB0b19vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSB0b19vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IG9mX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gdG9fb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiBvZl9vY2FtbCBpdGVtXG4gIGxldCB0b19vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IG9mX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gdG9fb2NhbWwgaXRlbVxuZW5kXG5cbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBTZWxlY3RfYXN0IChPY2FtbClcbm1vZHVsZSBBc3RfaGVscGVyID0gQXN0X2hlbHBlcl9saXRlXG5cbigqIE1vZHVsZXMgZnJvbSBBc3RfPG4+IG9mIEFzdGxpYiwgd2hlcmUgPG4+IGlzIHRoZSBjb21waWxlciB2ZXJzaW9uIHRoZSBwcHhsaWIgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggKilcbm1vZHVsZSBQYXJzZXRyZWUgPSBTZWxlY3RlZF9hc3QuQXN0LlBhcnNldHJlZVxubW9kdWxlIEFzdHR5cGVzID0gU2VsZWN0ZWRfYXN0LkFzdC5Bc3R0eXBlc1xuXG4oKiBPdGhlciBBc3RsaWIgbW9kdWxlcyAqKVxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxuXG5tb2R1bGUgUGFyc2UgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RsaWIuUGFyc2VcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcblxuICBsZXQgaW1wbGVtZW50YXRpb24gbGV4YnVmID0gaW1wbGVtZW50YXRpb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc3RydWN0dXJlXG4gIGxldCBpbnRlcmZhY2UgbGV4YnVmID0gaW50ZXJmYWNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3NpZ25hdHVyZVxuXG4gIGxldCB0b3BsZXZlbF9waHJhc2UgbGV4YnVmID1cbiAgICB0b3BsZXZlbF9waHJhc2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IHVzZV9maWxlIGxleGJ1ZiA9XG4gICAgdXNlX2ZpbGUgbGV4YnVmIHw+IExpc3QubWFwIE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IGNvcmVfdHlwZSBsZXhidWYgPSBjb3JlX3R5cGUgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfY29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uIGxleGJ1ZiA9IGV4cHJlc3Npb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfZXhwcmVzc2lvblxuICBsZXQgcGF0dGVybiBsZXhidWYgPSBwYXR0ZXJuIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3BhdHRlcm5cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBkZWZhdWx0X3ByaW50X3dhcm5pbmcgX2xvYyA9ICgpXG5sZXQgYWJvdXRfaXRlX2JyYW5jaF9yZWYgPSByZWYgZGVmYXVsdF9wcmludF93YXJuaW5nXG5sZXQgY2FyZV9hYm91dF9pdGVfYnJhbmNoID0gcmVmIGZhbHNlXG5sZXQgYWJvdXRfaXRlX2JyYW5jaCBsb2MgPSAhYWJvdXRfaXRlX2JyYW5jaF9yZWYgbG9jXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBEZWZpbml0aW9uIG9mIHRoZSBPQ2FtbCBBU1QgKilcblxub3BlbiBJbXBvcnRcblxuKCogVGhpcyBmaWxlIGlzIG9idGFpbmVkIGJ5OlxuXG4gICAtIGNvcHlpbmcgYSBzdWJzZXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXN0X3h4eC5tbCBmaWxlIGZyb20gQXN0bGliXG4gICAoc3ViLW1vZHVsZXMgQXN0dHlwZXMgYW5kIFBhcnNldHJlZSlcbiAgIC0gYWRkaW5nIHRoZSB0eXBlIGRlZmluaXRpb25zIGZvciBwb3NpdGlvbiwgbG9jYXRpb24sIGxvYyBhbmQgbG9uZ2lkZW50XG4gICAtIGZsYXR0ZW5pbmcgYWxsIHRoZSBtb2R1bGVzXG4gICAtIHJlbW92aW5nIEFzdHR5cGVzLmNvbnN0YW50ICh1bnVzZWQgYW5kIGNvbmZsaWN0cyB3aXRoIFBhcnNldHJlZS5jb25zdGFudClcbiAgIC0gcmVuYW1pbmcgYSBmZXcgdHlwZXM6XG4gICAtIC0gTG9jYXRpb24udCAtPiBsb2NhdGlvblxuICAgLSAtIExvbmdpZGVudC50IC0+IGxvbmdpZGVudFxuICAgLSBhZGRpbmcgYSB0eXBlIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jIGFuZCByZXBsYWNpbmcgYWxsIHRoZSBvY2N1cnJlbmNlcyBvZiB0aGVcbiAgIGxhdHRlciBieSB0aGUgZm9ybWVyLiBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIG92ZXJyaWRlIGl0ZXJhdGlvbiBhbiB0aGUgbGV2ZWwgb2YgYVxuICAgbG9uZ2lkZW50IGxvY1xuICAgLSBhZGRpbmcgYSB0eXBlIGNhc2VzID0gY2FzZSBsaXN0XG4gICAtIHJlcGxhY2luZyBhbGwgb2NjdXJlbmNlcyBvZiBcImNhc2UgbGlzdFwiIGJ5IFwiY2FzZXNcIlxuICAgLSByZXBsYWNpbmcgYWxsIHRoZSAoKklGX0NVUlJFTlQgPSBGb28uYmFyKikgYnk6ID0gRm9vLmJhclxuICAgLSByZW1vdmluZyB0aGUgZXh0cmEgdmFsdWVzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGVcbiAgIC0gcmVwbGFjaW5nIGFwcCBbdHlwZSAuLi5dIGJ5IFthbmQgLi4uXSB0byBtYWtlIGV2ZXJ5dGhpbmcgb25lIHJlY3Vyc2l2ZSBibG9ja1xuICAgLSBhZGRpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVtAQEBlbmRdIGF0IHRoZSBlbmRcblxuICAgVG8gdXBkYXRlIGl0IHRvIGEgbmV3ZXIgT0NhbWwgdmVyc2lvbiwgY3JlYXRlIGEgbmV3IG1vZHVsZSB3aXRoIHRoZSBhYm92ZSBmcm9tIHRoZVxuICAgbGF0ZXN0IGNvbXBpbGVyIGFuZCBhZGQgdGhlIGZvbGxvd2luZyBtb2R1bGUgZGVmaW5pdGlvbnMgYW5kIG9wZW5zIHRvIGdldCBpdCB0b1xuICAgY29tcGlsZTpcbiAgIFt7XG4gICAgbW9kdWxlIEFzdCA9IFZlcnNpb25zLk9DYW1sXzR4eFxuICAgIG9wZW4gQXN0LkFzdFxuICAgIG1vZHVsZSBMb2NhdGlvbiAgID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uXG4gICAgbW9kdWxlIExvbmdpZGVudCA9IE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcbiAgIH1dXG5cbiAgIE9uY2UgeW91IGhhdmUgZ2VuZXJhdGVkIHRoZSBpbmxpbmVkIGRlcml2ZWQgdHJhdmVyc2FsIGNsYXNzZXMgYnkgcnVubmluZ1xuICAgW3sgZHVuZSBidWlsZCBAbGludCB9XSB5b3UgY2FuIHJlcGxhY2UgdGhlIGFib3ZlIG1lbnRpb25lZCBtb2R1bGUgZGVmaW5pdGlvbnMgYnkgYVxuICAgW29wZW4gSW1wb3J0XSBhbmQgdXBkYXRlIFtJbXBvcnRdIHNvIHRoYXQgdGhlIFtKc10gbW9kdWxlIHBvaW50cyB0b1xuICAgW1ZlcnNpb25zLk9DYW1sXzR4eF0uXG4qKVxuXG4oKiBTb3VyY2UgY29kZSBsb2NhdGlvbnMgKHJhbmdlcyBvZiBwb3NpdGlvbnMpLCB1c2VkIGluIHBhcnNldHJlZS4gKilcblxudHlwZSBwb3NpdGlvbiA9IExleGluZy5wb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmFuZCBsb2NhdGlvbiA9IExvY2F0aW9uLnQgPSB7XG4gIGxvY19zdGFydCA6IHBvc2l0aW9uO1xuICBsb2NfZW5kIDogcG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmFuZCBsb2NhdGlvbl9zdGFjayA9IGxvY2F0aW9uIGxpc3RcblxuKCogTm90ZSBvbiB0aGUgdXNlIG9mIExleGluZy5wb3NpdGlvbiBpbiB0aGlzIG1vZHVsZS5cbiAgIElmIFtwb3NfZm5hbWUgPSBcIlwiXSwgdGhlbiB1c2UgWyFpbnB1dF9uYW1lXSBpbnN0ZWFkLlxuICAgSWYgW3Bvc19sbnVtID0gLTFdLCB0aGVuIFtwb3NfYm9sID0gMF0uIFVzZSBbcG9zX2NudW1dIGFuZFxuICAgcmUtcGFyc2UgdGhlIGZpbGUgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjaGFyYWN0ZXIgbnVtYmVycy5cbiAgIEVsc2UgYWxsIGZpZWxkcyBhcmUgY29ycmVjdC5cbiopXG5hbmQgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0geyB0eHQgOiAnYTsgbG9jIDogbG9jYXRpb24gfVxuXG4oKiBMb25nIGlkZW50aWZpZXJzLCB1c2VkIGluIHBhcnNldHJlZS4gKilcbmFuZCBsb25naWRlbnQgPSBMb25naWRlbnQudCA9XG4gIHwgTGlkZW50IG9mIHN0cmluZ1xuICB8IExkb3Qgb2YgbG9uZ2lkZW50ICogc3RyaW5nXG4gIHwgTGFwcGx5IG9mIGxvbmdpZGVudCAqIGxvbmdpZGVudFxuXG5hbmQgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2NcblxuKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuYW5kIHJlY19mbGFnID0gQXN0dHlwZXMucmVjX2ZsYWcgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuYW5kIGRpcmVjdGlvbl9mbGFnID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBVcHRvIHwgRG93bnRvXG5cbigqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuYW5kIHByaXZhdGVfZmxhZyA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IFByaXZhdGUgfCBQdWJsaWNcbmFuZCBtdXRhYmxlX2ZsYWcgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5hbmQgdmlydHVhbF9mbGFnID0gQXN0dHlwZXMudmlydHVhbF9mbGFnID0gVmlydHVhbCB8IENvbmNyZXRlXG5hbmQgb3ZlcnJpZGVfZmxhZyA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBPdmVycmlkZSB8IEZyZXNoXG5hbmQgY2xvc2VkX2ZsYWcgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyA9IENsb3NlZCB8IE9wZW5cbmFuZCBsYWJlbCA9IHN0cmluZ1xuXG5hbmQgYXJnX2xhYmVsID0gQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgfCBOb2xhYmVsXG4gIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICB8IE9wdGlvbmFsIG9mIHN0cmluZyAgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbmFuZCB2YXJpYW5jZSA9IEFzdHR5cGVzLnZhcmlhbmNlID0gQ292YXJpYW50IHwgQ29udHJhdmFyaWFudCB8IE5vVmFyaWFuY2VcbmFuZCBpbmplY3Rpdml0eSA9IEFzdHR5cGVzLmluamVjdGl2aXR5ID0gSW5qZWN0aXZlIHwgTm9JbmplY3Rpdml0eVxuXG4oKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG5hbmQgY29uc3RhbnQgPSBQYXJzZXRyZWUuY29uc3RhbnQgPVxuICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGV4Y2VwdFxuICAgICAgICAgIFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlciAqKVxuICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIGxvY2F0aW9uICogc3RyaW5nIG9wdGlvblxuICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy4gKilcbiAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGFyZSByZWplY3RlZFxuICAgICAgICAgIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbmFuZCBhdHRyaWJ1dGUgPSBQYXJzZXRyZWUuYXR0cmlidXRlID0ge1xuICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICBhdHRyX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW0BpZCBBUkddXSBhbmQgW1tAQGlkIEFSR11dLlxuXG4gICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULiBUaGUgY29tcGlsZXIgaWdub3Jlc1xuICAgIHVua25vd24gYXR0cmlidXRlcy4gKilcblxuYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4oKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgcGF5bG9hZCA9IFBhcnNldHJlZS5wYXlsb2FkID1cbiAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbPyBQXSBvciBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuYW5kIGNvcmVfdHlwZSA9IFBhcnNldHJlZS5jb3JlX3R5cGUgPSB7XG4gIHB0eXBfZGVzYyA6IGNvcmVfdHlwZV9kZXNjO1xuICBwdHlwX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwdHlwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvcmVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZF19LFxuICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19LiAqKVxuICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXSByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlXG4gICAgICAgICAgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS4gKilcbiAgfCBQdHlwX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19LFxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LiAqKVxuICB8IFB0eXBfY2xhc3Mgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsjdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCAjdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbWyBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWz4gYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfSxcbiAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uICopXG4gIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVxuICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZyB0byBhIGNvbnN0cmFpbnQgb24gYVxuICAgICAgICAgICAgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICB7W1xuICAgICAgICAgICAgbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXG4gICAgICAgICAgXX1cbiAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9XG4gICAgICAgICAgICBbUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX0gW1BleHBfcG9seV19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9IFtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fSBbUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX0gW3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LiAqKVxuICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuYW5kIHBhY2thZ2VfdHlwZSA9IGxvbmdpZGVudF9sb2MgKiAobG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSkgbGlzdFxuKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG5cbiAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV0gcmVwcmVzZW50c1xuICAgICAgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uICopXG5cbmFuZCByb3dfZmllbGQgPSBQYXJzZXRyZWUucm93X2ZpZWxkID0ge1xuICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICBwcmZfbG9jIDogbG9jYXRpb247XG4gIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIHJvd19maWVsZF9kZXNjID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgIC0gW2BBIG9mIFRdIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYSBjb25zdGFudCAoZW1wdHkpXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvciAoc2VlXG4gICAgICAgICAgICA0LjIgaW4gdGhlIG1hbnVhbCkgKilcbiAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuYW5kIG9iamVjdF9maWVsZCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgPSB7XG4gIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gIHBvZl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbigqKiB7MiBQYXR0ZXJuc30gKilcblxuYW5kIHBhdHRlcm4gPSBQYXJzZXRyZWUucGF0dGVybiA9IHtcbiAgcHBhdF9kZXNjIDogcGF0dGVybl9kZXNjO1xuICBwcGF0X2xvYyA6IGxvY2F0aW9uO1xuICBwcGF0X2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwcGF0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHBhdHRlcm5fZGVzYyA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPVxuICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlciBidXQgcmVqZWN0ZWQgYnlcbiAgICAgICAgICB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBwYXRfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXSAqKVxuICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdICopXG4gIHwgUHBhdF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19XG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19XG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgfCBQcGF0X3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICB8IFBwYXRfb3BlbiBvZiBsb25naWRlbnRfbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBleHByZXNzaW9uID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gPSB7XG4gIHBleHBfZGVzYyA6IGV4cHJlc3Npb25fZGVzYztcbiAgcGV4cF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcGV4cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBleHByZXNzaW9uX2Rlc2MgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgfCBQZXhwX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF0gKilcbiAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSxcbiAgICAgICAgICBbMW5dICopXG4gIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXMgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF1cblxuICAgICAgICAgIE5vdGVzOlxuXG4gICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5IHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn0gW1BleHBfZnVuXX0uXG4gICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1cbiAgICAgICAgICAgIFtQZXhwX2Z1bl19LiAqKVxuICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICBbbGldIGNhbiBiZSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSAobm9uIGxhYmVsZWRcbiAgICAgICAgICBhcmd1bWVudCksIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH0gW0xhYmVsbGVkXX0gKGxhYmVsbGVkXG4gICAgICAgICAgYXJndW1lbnRzKSBvciB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbF19IChvcHRpb25hbFxuICAgICAgICAgIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBleHBfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV0gKilcbiAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0gKilcbiAgfCBQZXhwX3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICAoKiogW0UubF0gKilcbiAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99IFtVcHRvXX1cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99IFtEb3dudG9dfSAqKVxuICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gWyhFIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLiAqKVxuICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICB8IFBleHBfbmV3IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbbmV3IE0uY10gKilcbiAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9IFtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgdmFsdWVzKS4gKilcbiAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG5hbmQgY2FzZSA9IFBhcnNldHJlZS5jYXNlID0ge1xuICBwY19saHMgOiBwYXR0ZXJuO1xuICBwY19ndWFyZCA6IGV4cHJlc3Npb24gb3B0aW9uO1xuICBwY19yaHMgOiBleHByZXNzaW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG5hbmQgbGV0b3AgPSBQYXJzZXRyZWUubGV0b3AgPSB7XG4gIGxldF8gOiBiaW5kaW5nX29wO1xuICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICBib2R5IDogZXhwcmVzc2lvbjtcbn1cblxuYW5kIGJpbmRpbmdfb3AgPSBQYXJzZXRyZWUuYmluZGluZ19vcCA9IHtcbiAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gIHBib3BfcGF0IDogcGF0dGVybjtcbiAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICBwYm9wX2xvYyA6IGxvY2F0aW9uO1xufVxuXG4oKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPSB7XG4gIHB2YWxfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB2YWxfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcHZhbF9wcmltIDogc3RyaW5nIGxpc3Q7XG4gIHB2YWxfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB2YWxfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcblxuICAgIC0gW3ZhbCB4OiBUXSwgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19IFtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1cbiAgICAgIFtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXSAqKVxuXG4oKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHB0eXBlX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdHlwZV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgcHR5cGVfY3N0cnMgOiAoY29yZV90eXBlICogY29yZV90eXBlICogbG9jYXRpb24pIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICBwdHlwZV9raW5kIDogdHlwZV9raW5kO1xuICBwdHlwZV9wcml2YXRlIDogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgcHR5cGVfbWFuaWZlc3QgOiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgcHR5cGVfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB0eXBlX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbiwgZm9yIHZhcmlvdXNcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9IFtwdHlwZV9raW5kXX0gYW5kXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH0gW3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuXG4gICAgLSBbdHlwZSB0XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDBdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9XG4gICAgICBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fSBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1cbiAgICAgIFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfSBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSAuLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn0gW1B0eXBlX29wZW5dfSxcbiAgICAgIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXS4gKilcblxuYW5kIHR5cGVfa2luZCA9IFBhcnNldHJlZS50eXBlX2tpbmQgPVxuICB8IFB0eXBlX2Fic3RyYWN0XG4gIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gIHwgUHR5cGVfb3BlblxuXG5hbmQgbGFiZWxfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPSB7XG4gIHBsZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGxkX211dGFibGUgOiBtdXRhYmxlX2ZsYWc7XG4gIHBsZF90eXBlIDogY29yZV90eXBlO1xuICBwbGRfbG9jIDogbG9jYXRpb247XG4gIHBsZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW0BpZDFdIFtAaWQyXV0gKilcbn1cbigqKiAtIFt7IC4uLjsgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9IFtwbGRfbXV0YWJsZV19XG4gICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0sXG4gICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9XG4gICAgICBbcGxkX211dGFibGVdfSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfS5cblxuICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0ge1xuICBwY2RfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjZF92YXJzIDogc3RyaW5nIGxvYyBsaXN0O1xuICBwY2RfYXJncyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgcGNkX3JlcyA6IGNvcmVfdHlwZSBvcHRpb247XG4gIHBjZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29uc3RydWN0b3JfYXJndW1lbnRzID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259IHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yXG4gICAgICAgICAgYXJndW1lbnRzIG9mOlxuXG4gICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDOiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDIG9mIHsuLi59XSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAgICAgICAtIFtDOiB7Li4ufSAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLiAqKVxuXG5hbmQgdHlwZV9leHRlbnNpb24gPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSB7XG4gIHB0eWV4dF9wYXRoIDogbG9uZ2lkZW50X2xvYztcbiAgcHR5ZXh0X3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHB0eWV4dF9jb25zdHJ1Y3RvcnMgOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgcHR5ZXh0X3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7XG4gIHB0eWV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAoW3R5cGUgdCArPSAuLi5dKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSB7XG4gIHBleHRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICBwZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgdHlwZV9leGNlcHRpb24gPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPSB7XG4gIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgcHR5ZXhuX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXSBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uXG4gICAgICAgICAgY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcblxuICAgICAgICAgIHt1bFxuICAgICAgICAgICB7LSBbQyBvZiBUMSAqIC4uLiAqIFRuXVxuICAgICAgICAgICAgICB3aGVuOlxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbTm9uZV0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgIH0gKilcbiAgfCBQZXh0X3JlYmluZCBvZiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX3R5cGUgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSA9IHtcbiAgcGN0eV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjO1xuICBwY3R5X2xvYyA6IGxvY2F0aW9uO1xuICBwY3R5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICB8IFBjdHlfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgLSBbP2w6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19LiAqKVxuICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0ge1xuICBwY3NpZ19zZWxmIDogY29yZV90eXBlO1xuICBwY3NpZ19maWVsZHMgOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn0gW3Bjc2lnX3NlbGZdfSBpc1xuICAgICAge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9IFtQdHlwX2FueV19ICopXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSB7XG4gIHBjdGZfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgcGN0Zl9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0Zl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG4gIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgJ2EgY2xhc3NfaW5mb3MgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgPSB7XG4gIHBjaV92aXJ0IDogdmlydHVhbF9mbGFnO1xuICBwY2lfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcGNpX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2lfZXhwciA6ICdhO1xuICBwY2lfbG9jIDogbG9jYXRpb247XG4gIHBjaV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uICopXG5cbmFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX2V4cHIgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciA9IHtcbiAgcGNsX2Rlc2MgOiBjbGFzc19leHByX2Rlc2M7XG4gIHBjbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICB8IFBjbF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXS4gKilcbiAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLiBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yXG4gICAgICAgICAgc3RhcnQgd2l0aCBbP10gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG5hbmQgY2xhc3Nfc3RydWN0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9IHtcbiAgcGNzdHJfc2VsZiA6IHBhdHRlcm47XG4gIHBjc3RyX2ZpZWxkcyA6IGNsYXNzX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn0gW3Bjc3RyX3NlbGZdfSBpc1xuICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fSBbUHBhdF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgPSB7XG4gIHBjZl9kZXNjIDogY2xhc3NfZmllbGRfZGVzYztcbiAgcGNmX2xvYyA6IGxvY2F0aW9uO1xuICBwY2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9XG4gICAgICAgICAgICBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbU29tZSB4XSAqKVxuICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3ZhbCB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1cbiAgICAgICAgICAgIFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9XG4gICAgICAgICAgICBbTXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX0gKilcbiAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV0gKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVxuICAgICAgICAgICAgW1BleHBfcG9seV19KVxuICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVxuICAgICAgICAgICAgW1B0eXBfcG9seV19KSAqKVxuICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgY2xhc3NfZmllbGRfa2luZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4oKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfdHlwZSA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSA9IHtcbiAgcG10eV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYztcbiAgcG10eV9sb2MgOiBsb2NhdGlvbjtcbiAgcG10eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICB8IFBtdHlfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUG10eV9hbGlhcyBvZiBsb25naWRlbnRfbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbmFuZCBmdW5jdG9yX3BhcmFtZXRlciA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbmFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbmFuZCBzaWduYXR1cmVfaXRlbSA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9IHtcbiAgcHNpZ19kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgcHNpZ19sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gKilcbiAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICopXG4gIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgbW9kdWxlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG1kX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1kX3R5cGUgOiBtb2R1bGVfdHlwZTtcbiAgcG1kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbWRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG5hbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID0ge1xuICBwbXNfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtc19tYW5pZmVzdCA6IGxvbmdpZGVudF9sb2M7XG4gIHBtc19hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1zX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbmFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG10ZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcG10ZF90eXBlIDogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICBwbXRkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXRkX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW1MgPSBNVF0sXG4gICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCB3aGVuXG4gICAgICB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9IFtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uICopXG5cbmFuZCAnYSBvcGVuX2luZm9zID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgPSB7XG4gIHBvcGVuX2V4cHIgOiAnYTtcbiAgcG9wZW5fb3ZlcnJpZGUgOiBvdmVycmlkZV9mbGFnO1xuICBwb3Blbl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9wZW5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSAoc2lsZW5jZXMgdGhlIFwidXNlZFxuICAgICAgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9IFtGcmVzaF19ICopXG5cbmFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gbG9uZ2lkZW50X2xvYyBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT10gKilcblxuYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT11cbiAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG5hbmQgJ2EgaW5jbHVkZV9pbmZvcyA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zID0ge1xuICBwaW5jbF9tb2QgOiAnYTtcbiAgcGluY2xfbG9jIDogbG9jYXRpb247XG4gIHBpbmNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgfCBQd2l0aF90eXBlIG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZVxuICAgICAgICAgIHR5cGVfZGVjbGFyYXRpb24uICopXG4gIHwgUHdpdGhfbW9kdWxlIG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZSBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgfCBQd2l0aF9tb2RzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX2V4cHIgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgPSB7XG4gIHBtb2RfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2M7XG4gIHBtb2RfbG9jIDogbG9jYXRpb247XG4gIHBtb2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgfCBQbW9kX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbWF0gKilcbiAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbmFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9IHtcbiAgcHN0cl9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgcHN0cl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgdmFsdWVfYmluZGluZyA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID0ge1xuICBwdmJfcGF0IDogcGF0dGVybjtcbiAgcHZiX2V4cHIgOiBleHByZXNzaW9uO1xuICBwdmJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHB2Yl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIG1vZHVsZV9iaW5kaW5nID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID0ge1xuICBwbWJfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWJfZXhwciA6IG1vZHVsZV9leHByO1xuICBwbWJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHBtYl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbigqKiB7MSBUb3BsZXZlbH0gKilcbigqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG5hbmQgdG9wbGV2ZWxfcGhyYXNlID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG5hbmQgdG9wbGV2ZWxfZGlyZWN0aXZlID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSA9IHtcbiAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICBwZGlyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50ID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9IHtcbiAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICBwZGlyYV9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICB8IFBkaXJfaWRlbnQgb2YgbG9uZ2lkZW50XG4gIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuYW5kIGNhc2VzID0gY2FzZSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1cblxuY2xhc3MgdmlydHVhbCBtYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBpdGVyID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsaXN0IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wdGlvbiAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHVuaXRcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBzZWxmI3N0cmluZyBwb3NfZm5hbWU7XG4gICAgICAgIHNlbGYjaW50IHBvc19sbnVtO1xuICAgICAgICBzZWxmI2ludCBwb3NfYm9sO1xuICAgICAgICBzZWxmI2ludCBwb3NfY251bVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgICAgIHNlbGYjYm9vbCBsb2NfZ2hvc3RcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbG9jIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBfYSB0eHQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gbG9jXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBiXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gdW5pdCA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IHVuaXQgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKClcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGNcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWU7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gYXR0cl9sb2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKClcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGNcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgIGJcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHByZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNib29sIGI7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9mX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGJcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBkXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjO1xuICAgICAgICAgICAgc2VsZiNkaXJlY3Rpb25fZmxhZyBkO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGVcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYlxuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+ICgpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNfbGhzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwY19yaHNcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHNlbGYjYmluZGluZ19vcCBsZXRfO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHM7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBib2R5XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcDtcbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBib3BfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGJvcF9sb2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBjKVxuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+ICgpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWU7XG4gICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbGRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnM7XG4gICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGg7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lO1xuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBjbGFzc19pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwY2lfcGFyYW1zO1xuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZTtcbiAgICAgICAgX2EgcGNpX2V4cHI7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNpX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBkXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGJcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXR5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGJcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+ICgpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtZF9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWU7XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXNfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXRkX2xvY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wZW5faW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcG9wZW5fZXhwcjtcbiAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcGluY2xfbW9kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHN0cl9sb2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2Yl9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWJfbG9jXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBhY2NcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGEgYWNjXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IGFjY1xuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IGFjY1xuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGEgYWNjXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYSBhY2NcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBhY2NcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IGFjY1xuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBhY2NcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYSBhY2NcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYSBhY2NcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGRfbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gYm9vbCAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+IGNoYXIgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gaW50ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYSBsaXN0ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2Egb3B0aW9uICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gc3RyaW5nICogJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiBwb3NpdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSwgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2xudW0sIGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2JvbCwgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgKHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiBsb2NhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZW5kLCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QsIGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgICh7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gbG9jYXRpb25fc3RhY2sgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2EgbG9jICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgdHh0LCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBsb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICAoeyB0eHQ7IGxvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gbG9uZ2lkZW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExpZGVudCBhLCBhY2MpXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoTGRvdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgKExhcHBseSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+IGxvbmdpZGVudF9sb2MgKiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+IHJlY19mbGFnICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiBkaXJlY3Rpb25fZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gcHJpdmF0ZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiBtdXRhYmxlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+IHZpcnR1YWxfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiBvdmVycmlkZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gY2xvc2VkX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiBsYWJlbCAqICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+IGFyZ19sYWJlbCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIGFjYylcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMYWJlbGxlZCBhLCBhY2MpXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoT3B0aW9uYWwgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiB2YXJpYW5jZSAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gaW5qZWN0aXZpdHkgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiBjb25zdGFudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2ludGVnZXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2hhciBhIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9jaGFyIGEsIGFjYylcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X3N0cmluZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfZmxvYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gYXR0cmlidXRlICogJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkLCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiBhdHRyaWJ1dGVzICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+IHBheWxvYWQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTdHIgYSwgYWNjKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFNpZyBhLCBhY2MpXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQVHlwIGEsIGFjYylcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBQYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gY29yZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MsIGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXIgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NsYXNzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXJpYW50IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BhY2thZ2UgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiBwYWNrYWdlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiByb3dfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MsIGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiByb3dfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFJ0YWcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUmluaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+IG9iamVjdF9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYywgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChPdGFnIChhLCBiKSwgYWNjKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKE9pbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+IHBhdHRlcm4gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYywgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gcGF0dGVybl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXIgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9pbnRlcnZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90eXBlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+IGV4cHJlc3Npb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYywgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjYXNlcyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuY3Rpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbWF0Y2ggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHJ5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZpZWxkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VxdWVuY2UgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3doaWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBlLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29lcmNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZW5kIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ldyBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGluc3R2YXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX292ZXJyaWRlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXNzZXJ0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb2JqZWN0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ld3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGV0b3AgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG9wIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoUGV4cF91bnJlYWNoYWJsZSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gY2FzZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY19saHMsIGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBwY19ndWFyZCwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgcGNfcmhzLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICAoeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiBsZXRvcCAqICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgbGV0XywgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhbmRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBib2R5LCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgKHsgbGV0XzsgYW5kczsgYm9keSB9LCBhY2MpXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiBiaW5kaW5nX29wICogJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwYm9wX29wLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9wcmltLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQsIGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QsIGFjYyA9XG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+IHR5cGVfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgYWNjKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfdmFyaWFudCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3JlY29yZCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3BlbiwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2RfdmFycywgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXJncywgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfcmVzLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3JlY29yZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+IHR5cGVfZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gdHlwZV9leGNlcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciwgYWNjID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfZGVjbCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9yZWJpbmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gY2xhc3NfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjY1xuICAgICAgICBpblxuICAgICAgICAoeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc190eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9pbmhlcml0IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0LCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2lfZXhwciwgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwY2lfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiBjbGFzc19leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjbF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICAoeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaGVyaXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbml0aWFsaXplciBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKENma192aXJ0dWFsIGEsIGFjYylcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX2NvbmNyZXRlIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfd2l0aCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfdHlwZW9mIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9hbGlhcyBhLCBhY2MpXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgYWNjKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoTmFtZWQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjLCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgICh7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3ZhbHVlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1kX3R5cGUsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1zX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciwgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCwgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiB3aXRoX2NvbnN0cmFpbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHVsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kc3Vic3QgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+IG1vZHVsZV9leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2Rfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+IHN0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYywgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9ldmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ZhbHVlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9wcmltaXRpdmUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+IHZhbHVlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZiX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwdmJfZXhwciwgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gbW9kdWxlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2V4cHIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiB0b3BsZXZlbF9waHJhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RlZiBhLCBhY2MpXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kaXIgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9hcmcsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYywgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX3N0cmluZyBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2ludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNib29sIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9ib29sIGEsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gY2FzZXMgKiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zXG4gICAgICAgID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3B0aW9uIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBwb3NfbG51bSk7XG4gICAgICAgICAgICAoXCJwb3NfYm9sXCIsIHBvc19ib2wpO1xuICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgcG9zX2NudW0pO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgIChcImxvY19lbmRcIiwgbG9jX2VuZCk7XG4gICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgbG9jX2dob3N0KTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxvYyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJ0eHRcIiwgdHh0KTsgKFwibG9jXCIsIGxvYykgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGlkZW50XCIgWyBhIF1cbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGRvdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFwcGx5XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAncmVzID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiTm9ucmVjdXJzaXZlXCIgW11cbiAgICAgICAgfCBSZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJSZWN1cnNpdmVcIiBbXVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVcHRvIC0+IHNlbGYjY29uc3RyIFwiVXB0b1wiIFtdXG4gICAgICAgIHwgRG93bnRvIC0+IHNlbGYjY29uc3RyIFwiRG93bnRvXCIgW11cblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcml2YXRlIC0+IHNlbGYjY29uc3RyIFwiUHJpdmF0ZVwiIFtdXG4gICAgICAgIHwgUHVibGljIC0+IHNlbGYjY29uc3RyIFwiUHVibGljXCIgW11cblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbW11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJJbW11dGFibGVcIiBbXVxuICAgICAgICB8IE11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJNdXRhYmxlXCIgW11cblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBWaXJ0dWFsIC0+IHNlbGYjY29uc3RyIFwiVmlydHVhbFwiIFtdXG4gICAgICAgIHwgQ29uY3JldGUgLT4gc2VsZiNjb25zdHIgXCJDb25jcmV0ZVwiIFtdXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdmVycmlkZSAtPiBzZWxmI2NvbnN0ciBcIk92ZXJyaWRlXCIgW11cbiAgICAgICAgfCBGcmVzaCAtPiBzZWxmI2NvbnN0ciBcIkZyZXNoXCIgW11cblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+IHNlbGYjY29uc3RyIFwiQ2xvc2VkXCIgW11cbiAgICAgICAgfCBPcGVuIC0+IHNlbGYjY29uc3RyIFwiT3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IHNlbGYjY29uc3RyIFwiTm9sYWJlbFwiIFtdXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhYmVsbGVkXCIgWyBhIF1cbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3B0aW9uYWxcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDb3ZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb3ZhcmlhbnRcIiBbXVxuICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb250cmF2YXJpYW50XCIgW11cbiAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IHNlbGYjY29uc3RyIFwiTm9WYXJpYW5jZVwiIFtdXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEluamVjdGl2ZSAtPiBzZWxmI2NvbnN0ciBcIkluamVjdGl2ZVwiIFtdXG4gICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiBzZWxmI2NvbnN0ciBcIk5vSW5qZWN0aXZpdHlcIiBbXVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfaW50ZWdlclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfY2hhclwiIFsgYSBdXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3Rfc3RyaW5nXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2Zsb2F0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgYXR0cl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU3RyXCIgWyBhIF1cbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU2lnXCIgWyBhIF1cbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQVHlwXCIgWyBhIF1cbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQUGF0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgcHR5cF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBzZWxmI2NvbnN0ciBcIlB0eXBfYW55XCIgW11cbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9vYmplY3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY2xhc3NcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJpYW50XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wYWNrYWdlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcmZfbG9jXCIsIHByZl9sb2MpO1xuICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJ0YWdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIHBvZl9sb2MpO1xuICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3RhZ1wiIFsgYTsgYiBdXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9pbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgcHBhdF9sb2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IHNlbGYjY29uc3RyIFwiUHBhdF9hbnlcIiBbXVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9pbnRlcnZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgcGV4cF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuY3Rpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX21hdGNoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHJ5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZmllbGRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0ZmllbGRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lmdGhlbmVsc2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VxdWVuY2VcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfd2hpbGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mb3JcIiBbIGE7IGI7IGM7IGQ7IGUgXVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb2VyY2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VuZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3ZlcnJpZGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0bW9kdWxlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Fzc2VydFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vYmplY3RcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BhY2tcIiBbIGEgXVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vcGVuXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0b3BcIiBbIGEgXVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBzZWxmI2NvbnN0ciBcIlBleHBfdW5yZWFjaGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY19saHNcIiwgcGNfbGhzKTsgKFwicGNfZ3VhcmRcIiwgcGNfZ3VhcmQpOyAoXCJwY19yaHNcIiwgcGNfcmhzKSBdXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJsZXRfXCIsIGxldF8pOyAoXCJhbmRzXCIsIGFuZHMpOyAoXCJib2R5XCIsIGJvZHkpIF1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBwYm9wX29wKTtcbiAgICAgICAgICAgIChcInBib3BfcGF0XCIsIHBib3BfcGF0KTtcbiAgICAgICAgICAgIChcInBib3BfZXhwXCIsIHBib3BfZXhwKTtcbiAgICAgICAgICAgIChcInBib3BfbG9jXCIsIHBib3BfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgcHZhbF9wcmltKTtcbiAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgcHZhbF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBwdHlwZV9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX2Fic3RyYWN0XCIgW11cbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV92YXJpYW50XCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3JlY29yZFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX29wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIHBsZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgIChcInBsZF90eXBlXCIsIHBsZF90eXBlKTtcbiAgICAgICAgICAgIChcInBsZF9sb2NcIiwgcGxkX2xvYyk7XG4gICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBwY2RfdmFycyk7XG4gICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBwY2RfYXJncyk7XG4gICAgICAgICAgICAoXCJwY2RfcmVzXCIsIHBjZF9yZXMpO1xuICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBwY2RfbG9jKTtcbiAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl9yZWNvcmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgcGV4dF9raW5kKTtcbiAgICAgICAgICAgIChcInBleHRfbG9jXCIsIHBleHRfbG9jKTtcbiAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfZGVjbFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X3JlYmluZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIHBjdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc2lnX3NlbGZcIiwgcGNzaWdfc2VsZik7IChcInBjc2lnX2ZpZWxkc1wiLCBwY3NpZ19maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfaW5oZXJpdFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIHBjaV92aXJ0KTtcbiAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBwY2lfZXhwcik7XG4gICAgICAgICAgICAoXCJwY2lfbG9jXCIsIHBjaV9sb2MpO1xuICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2xfbG9jXCIsIHBjbF9sb2MpO1xuICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzdHJfc2VsZlwiLCBwY3N0cl9zZWxmKTsgKFwicGNzdHJfZmllbGRzXCIsIHBjc3RyX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBwY2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbmhlcml0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbml0aWFsaXplclwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX3ZpcnR1YWxcIiBbIGEgXVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX2NvbmNyZXRlXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgcG10eV9sb2MpO1xuICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV93aXRoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3R5cGVvZlwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9hbGlhc1wiIFsgYSBdXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gc2VsZiNjb25zdHIgXCJVbml0XCIgW11cbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJOYW1lZFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzaWdfZGVzY1wiLCBwc2lnX2Rlc2MpOyAoXCJwc2lnX2xvY1wiLCBwc2lnX2xvYykgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3ZhbHVlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgcG1kX25hbWUpO1xuICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgcG1kX3R5cGUpO1xuICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBwbWRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtc19uYW1lXCIsIHBtc19uYW1lKTtcbiAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBwbXNfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIHBtdGRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgcGluY2xfbW9kKTtcbiAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHVsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2RzdWJzdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIHBtb2RfbG9jKTtcbiAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHN0cl9kZXNjXCIsIHBzdHJfZGVzYyk7IChcInBzdHJfbG9jXCIsIHBzdHJfbG9jKSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ZhbHVlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ByaW1pdGl2ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHB2Yl9wYXQpO1xuICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgcHZiX2V4cHIpO1xuICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBwdmJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgcG1iX25hbWUpO1xuICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgcG1iX2V4cHIpO1xuICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBwbWJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGVmXCIgWyBhIF1cbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kaXJcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBwZGlyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBkaXJhX2Rlc2NcIiwgcGRpcmFfZGVzYyk7IChcInBkaXJhX2xvY1wiLCBwZGlyYV9sb2MpIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfc3RyaW5nXCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2ludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9ib29sXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2wgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZyAqICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvc19mbmFtZSA9IFN0ZGxpYi5mc3QgcG9zX2ZuYW1lO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBTdGRsaWIuZnN0IHBvc19sbnVtO1xuICAgICAgICAgICAgcG9zX2JvbCA9IFN0ZGxpYi5mc3QgcG9zX2JvbDtcbiAgICAgICAgICAgIHBvc19jbnVtID0gU3RkbGliLmZzdCBwb3NfY251bTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgU3RkbGliLnNuZCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBTdGRsaWIuc25kIHBvc19sbnVtKTtcbiAgICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBTdGRsaWIuc25kIHBvc19ib2wpO1xuICAgICAgICAgICAgICAoXCJwb3NfY251bVwiLCBTdGRsaWIuc25kIHBvc19jbnVtKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbG9jX3N0YXJ0ID0gU3RkbGliLmZzdCBsb2Nfc3RhcnQ7XG4gICAgICAgICAgICBsb2NfZW5kID0gU3RkbGliLmZzdCBsb2NfZW5kO1xuICAgICAgICAgICAgbG9jX2dob3N0ID0gU3RkbGliLmZzdCBsb2NfZ2hvc3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIFN0ZGxpYi5zbmQgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBTdGRsaWIuc25kIGxvY19lbmQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgU3RkbGliLnNuZCBsb2NfZ2hvc3QpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICAoIHsgdHh0ID0gU3RkbGliLmZzdCB0eHQ7IGxvYyA9IFN0ZGxpYi5mc3QgbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4IFsgKFwidHh0XCIsIFN0ZGxpYi5zbmQgdHh0KTsgKFwibG9jXCIsIFN0ZGxpYi5zbmQgbG9jKSBdXG4gICAgICAgIClcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKExpZGVudCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiTGlkZW50XCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBMZG90IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxkb3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGFwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jICogJ3JlcyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCAqICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIHNlbGYjY29uc3RyIGN0eCBcIk5vbGFiZWxcIiBbXSlcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIExhYmVsbGVkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYWJlbGxlZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggT3B0aW9uYWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9wdGlvbmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfaW50ZWdlciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfaW50ZWdlclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2NoYXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9jaGFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgKCBQY29uc3Rfc3RyaW5nIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X3N0cmluZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9mbG9hdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfZmxvYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGF0dHJfbmFtZSA9IFN0ZGxpYi5mc3QgYXR0cl9uYW1lO1xuICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gU3RkbGliLmZzdCBhdHRyX3BheWxvYWQ7XG4gICAgICAgICAgICBhdHRyX2xvYyA9IFN0ZGxpYi5mc3QgYXR0cl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIFN0ZGxpYi5zbmQgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIFN0ZGxpYi5zbmQgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgU3RkbGliLnNuZCBhdHRyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU3RyIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU3RyXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU2lnIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU2lnXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQVHlwIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQVHlwXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBQYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUFBhdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gU3RkbGliLmZzdCBwdHlwX2Rlc2M7XG4gICAgICAgICAgICBwdHlwX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgU3RkbGliLnNuZCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYW55XCIgW10pXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jbGFzcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NsYXNzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhcmlhbnRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfcGFja2FnZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wYWNrYWdlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHJmX2Rlc2MgPSBTdGRsaWIuZnN0IHByZl9kZXNjO1xuICAgICAgICAgICAgcHJmX2xvYyA9IFN0ZGxpYi5mc3QgcHJmX2xvYztcbiAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcmZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBTdGRsaWIuc25kIHByZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBTdGRsaWIuc25kIHByZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBSdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUnRhZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUmluaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJpbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcG9mX2Rlc2M7XG4gICAgICAgICAgICBwb2ZfbG9jID0gU3RkbGliLmZzdCBwb2ZfbG9jO1xuICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcG9mX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBPdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk90YWdcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggT2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IFN0ZGxpYi5mc3QgcHBhdF9kZXNjO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBTdGRsaWIuZnN0IHBwYXRfbG9jO1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgU3RkbGliLnNuZCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FueVwiIFtdKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2ludGVydmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfaW50ZXJ2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IFN0ZGxpYi5mc3QgcGV4cF9kZXNjO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBTdGRsaWIuZnN0IHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBleHBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgU3RkbGliLnNuZCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1bmN0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1bmN0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9tYXRjaCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX21hdGNoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF90cnkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90cnlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2ZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZmllbGRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0ZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGZpZWxkXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9pZnRoZW5lbHNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZnRoZW5lbHNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlcXVlbmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VxdWVuY2VcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF93aGlsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3doaWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgICggUGV4cF9mb3JcbiAgICAgICAgICAgICAgICAoIFN0ZGxpYi5mc3QgYSxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYixcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYyxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZCxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZSApLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZvclwiXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBhO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBiO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBjO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBkO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBlO1xuICAgICAgICAgICAgICAgIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfY29lcmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb2VyY2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VuZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlbmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRpbnN0dmFyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0aW5zdHZhclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfb3ZlcnJpZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3ZlcnJpZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG1vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2xldGV4Y2VwdGlvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXNzZXJ0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Fzc2VydFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXd0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3dHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3BhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG9wIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG9wXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAoUGV4cF91bnJlYWNoYWJsZSwgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdKVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjX2xocyA9IFN0ZGxpYi5mc3QgcGNfbGhzO1xuICAgICAgICAgICAgcGNfZ3VhcmQgPSBTdGRsaWIuZnN0IHBjX2d1YXJkO1xuICAgICAgICAgICAgcGNfcmhzID0gU3RkbGliLmZzdCBwY19yaHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNfbGhzXCIsIFN0ZGxpYi5zbmQgcGNfbGhzKTtcbiAgICAgICAgICAgICAgKFwicGNfZ3VhcmRcIiwgU3RkbGliLnNuZCBwY19ndWFyZCk7XG4gICAgICAgICAgICAgIChcInBjX3Joc1wiLCBTdGRsaWIuc25kIHBjX3Jocyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbGV0XyA9IFN0ZGxpYi5mc3QgbGV0XztcbiAgICAgICAgICAgIGFuZHMgPSBTdGRsaWIuZnN0IGFuZHM7XG4gICAgICAgICAgICBib2R5ID0gU3RkbGliLmZzdCBib2R5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxldF9cIiwgU3RkbGliLnNuZCBsZXRfKTtcbiAgICAgICAgICAgICAgKFwiYW5kc1wiLCBTdGRsaWIuc25kIGFuZHMpO1xuICAgICAgICAgICAgICAoXCJib2R5XCIsIFN0ZGxpYi5zbmQgYm9keSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwYm9wX29wID0gU3RkbGliLmZzdCBwYm9wX29wO1xuICAgICAgICAgICAgcGJvcF9wYXQgPSBTdGRsaWIuZnN0IHBib3BfcGF0O1xuICAgICAgICAgICAgcGJvcF9leHAgPSBTdGRsaWIuZnN0IHBib3BfZXhwO1xuICAgICAgICAgICAgcGJvcF9sb2MgPSBTdGRsaWIuZnN0IHBib3BfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBib3Bfb3BcIiwgU3RkbGliLnNuZCBwYm9wX29wKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgU3RkbGliLnNuZCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAgIChcInBib3BfZXhwXCIsIFN0ZGxpYi5zbmQgcGJvcF9leHApO1xuICAgICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBTdGRsaWIuc25kIHBib3BfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZhbF9uYW1lID0gU3RkbGliLmZzdCBwdmFsX25hbWU7XG4gICAgICAgICAgICBwdmFsX3R5cGUgPSBTdGRsaWIuZnN0IHB2YWxfdHlwZTtcbiAgICAgICAgICAgIHB2YWxfcHJpbSA9IFN0ZGxpYi5mc3QgcHZhbF9wcmltO1xuICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmFsX2xvYyA9IFN0ZGxpYi5mc3QgcHZhbF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIFN0ZGxpYi5zbmQgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIFN0ZGxpYi5zbmQgcHZhbF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIFN0ZGxpYi5zbmQgcHZhbF9wcmltKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgU3RkbGliLnNuZCBwdmFsX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZSA9IFN0ZGxpYi5mc3QgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBTdGRsaWIuZnN0IHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZCA9IFN0ZGxpYi5mc3QgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jID0gU3RkbGliLmZzdCBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBTdGRsaWIuc25kIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBTdGRsaWIuc25kIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBTdGRsaWIuc25kIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBlX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX2Fic3RyYWN0XCIgW10pXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX29wZW5cIiBbXSlcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGxkX25hbWUgPSBTdGRsaWIuZnN0IHBsZF9uYW1lO1xuICAgICAgICAgICAgcGxkX211dGFibGUgPSBTdGRsaWIuZnN0IHBsZF9tdXRhYmxlO1xuICAgICAgICAgICAgcGxkX3R5cGUgPSBTdGRsaWIuZnN0IHBsZF90eXBlO1xuICAgICAgICAgICAgcGxkX2xvYyA9IFN0ZGxpYi5mc3QgcGxkX2xvYztcbiAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbGRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBTdGRsaWIuc25kIHBsZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgU3RkbGliLnNuZCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAgIChcInBsZF90eXBlXCIsIFN0ZGxpYi5zbmQgcGxkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbG9jXCIsIFN0ZGxpYi5zbmQgcGxkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNkX25hbWUgPSBTdGRsaWIuZnN0IHBjZF9uYW1lO1xuICAgICAgICAgICAgcGNkX3ZhcnMgPSBTdGRsaWIuZnN0IHBjZF92YXJzO1xuICAgICAgICAgICAgcGNkX2FyZ3MgPSBTdGRsaWIuZnN0IHBjZF9hcmdzO1xuICAgICAgICAgICAgcGNkX3JlcyA9IFN0ZGxpYi5mc3QgcGNkX3JlcztcbiAgICAgICAgICAgIHBjZF9sb2MgPSBTdGRsaWIuZnN0IHBjZF9sb2M7XG4gICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgU3RkbGliLnNuZCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjZF92YXJzXCIsIFN0ZGxpYi5zbmQgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBTdGRsaWIuc25kIHBjZF9hcmdzKTtcbiAgICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBTdGRsaWIuc25kIHBjZF9yZXMpO1xuICAgICAgICAgICAgICAoXCJwY2RfbG9jXCIsIFN0ZGxpYi5zbmQgcGNkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aCA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgU3RkbGliLnNuZCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXh0X25hbWUgPSBTdGRsaWIuZnN0IHBleHRfbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IFN0ZGxpYi5mc3QgcGV4dF9raW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBTdGRsaWIuZnN0IHBleHRfbG9jO1xuICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIFN0ZGxpYi5zbmQgcGV4dF9raW5kKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgU3RkbGliLnNuZCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2xvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgU3RkbGliLnNuZCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4dF9kZWNsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9kZWNsXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4dF9yZWJpbmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfcmViaW5kXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gU3RkbGliLmZzdCBwY3R5X2Rlc2M7XG4gICAgICAgICAgICBwY3R5X2xvYyA9IFN0ZGxpYi5mc3QgcGN0eV9sb2M7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgU3RkbGliLnNuZCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBTdGRsaWIuc25kIHBjdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY3R5X2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc2lnX3NlbGYgPSBTdGRsaWIuZnN0IHBjc2lnX3NlbGY7XG4gICAgICAgICAgICBwY3NpZ19maWVsZHMgPSBTdGRsaWIuZnN0IHBjc2lnX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3NpZ19zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzaWdfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc2lnX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc2lnX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjdGZfZGVzYztcbiAgICAgICAgICAgIHBjdGZfbG9jID0gU3RkbGliLmZzdCBwY3RmX2xvYztcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBTdGRsaWIuc25kIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfdmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNpX3ZpcnQgPSBTdGRsaWIuZnN0IHBjaV92aXJ0O1xuICAgICAgICAgICAgcGNpX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcGNpX3BhcmFtcztcbiAgICAgICAgICAgIHBjaV9uYW1lID0gU3RkbGliLmZzdCBwY2lfbmFtZTtcbiAgICAgICAgICAgIHBjaV9leHByID0gU3RkbGliLmZzdCBwY2lfZXhwcjtcbiAgICAgICAgICAgIHBjaV9sb2MgPSBTdGRsaWIuZnN0IHBjaV9sb2M7XG4gICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgU3RkbGliLnNuZCBwY2lfdmlydCk7XG4gICAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgU3RkbGliLnNuZCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjaV9leHByXCIsIFN0ZGxpYi5zbmQgcGNpX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwY2lfbG9jXCIsIFN0ZGxpYi5zbmQgcGNpX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IFN0ZGxpYi5mc3QgcGNsX2Rlc2M7XG4gICAgICAgICAgICBwY2xfbG9jID0gU3RkbGliLmZzdCBwY2xfbG9jO1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgICggUGNsX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNsX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2xfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc3RyX3NlbGYgPSBTdGRsaWIuZnN0IHBjc3RyX3NlbGY7XG4gICAgICAgICAgICBwY3N0cl9maWVsZHMgPSBTdGRsaWIuZnN0IHBjc3RyX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3N0cl9zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzdHJfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc3RyX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc3RyX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjZl9kZXNjO1xuICAgICAgICAgICAgcGNmX2xvYyA9IFN0ZGxpYi5mc3QgcGNmX2xvYztcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBjZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBTdGRsaWIuc25kIHBjZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUGNmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9pbml0aWFsaXplciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaXRpYWxpemVyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggQ2ZrX3ZpcnR1YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma192aXJ0dWFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIENma19jb25jcmV0ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfY29uY3JldGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10eV9kZXNjID0gU3RkbGliLmZzdCBwbXR5X2Rlc2M7XG4gICAgICAgICAgICBwbXR5X2xvYyA9IFN0ZGxpYi5mc3QgcG10eV9sb2M7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgU3RkbGliLnNuZCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBTdGRsaWIuc25kIHBtdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X3dpdGggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV93aXRoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV90eXBlb2YgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfdHlwZW9mXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfYWxpYXMgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBzZWxmI2NvbnN0ciBjdHggXCJVbml0XCIgW10pXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBOYW1lZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJOYW1lZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgKCB7IHBzaWdfZGVzYyA9IFN0ZGxpYi5mc3QgcHNpZ19kZXNjOyBwc2lnX2xvYyA9IFN0ZGxpYi5mc3QgcHNpZ19sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHNpZ19kZXNjXCIsIFN0ZGxpYi5zbmQgcHNpZ19kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHNpZ19sb2NcIiwgU3RkbGliLnNuZCBwc2lnX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3ZhbHVlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBTdGRsaWIuZnN0IHBtZF9uYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSBTdGRsaWIuZnN0IHBtZF90eXBlO1xuICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1kX2xvYyA9IFN0ZGxpYi5mc3QgcG1kX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBTdGRsaWIuc25kIHBtZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgU3RkbGliLnNuZCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWRfbG9jXCIsIFN0ZGxpYi5zbmQgcG1kX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXNfbmFtZSA9IFN0ZGxpYi5mc3QgcG1zX25hbWU7XG4gICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHBtc19tYW5pZmVzdDtcbiAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtc19sb2MgPSBTdGRsaWIuZnN0IHBtc19sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgU3RkbGliLnNuZCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXNfbG9jXCIsIFN0ZGxpYi5zbmQgcG1zX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gU3RkbGliLmZzdCBwbXRkX25hbWU7XG4gICAgICAgICAgICBwbXRkX3R5cGUgPSBTdGRsaWIuZnN0IHBtdGRfdHlwZTtcbiAgICAgICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG10ZF9sb2MgPSBTdGRsaWIuZnN0IHBtdGRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBTdGRsaWIuc25kIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBTdGRsaWIuc25kIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIFN0ZGxpYi5zbmQgcG10ZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gU3RkbGliLmZzdCBwb3Blbl9leHByO1xuICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBTdGRsaWIuZnN0IHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gU3RkbGliLmZzdCBwb3Blbl9sb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgU3RkbGliLnNuZCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgU3RkbGliLnNuZCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBTdGRsaWIuc25kIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBpbmNsX21vZCA9IFN0ZGxpYi5mc3QgcGluY2xfbW9kO1xuICAgICAgICAgICAgcGluY2xfbG9jID0gU3RkbGliLmZzdCBwaW5jbF9sb2M7XG4gICAgICAgICAgICBwaW5jbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwaW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBTdGRsaWIuc25kIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBTdGRsaWIuc25kIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVzdWJzdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gU3RkbGliLmZzdCBwbW9kX2Rlc2M7XG4gICAgICAgICAgICBwbW9kX2xvYyA9IFN0ZGxpYi5mc3QgcG1vZF9sb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgU3RkbGliLnNuZCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBTdGRsaWIuc25kIHBtb2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2Rfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgKCB7IHBzdHJfZGVzYyA9IFN0ZGxpYi5mc3QgcHN0cl9kZXNjOyBwc3RyX2xvYyA9IFN0ZGxpYi5mc3QgcHN0cl9sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHN0cl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHN0cl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHN0cl9sb2NcIiwgU3RkbGliLnNuZCBwc3RyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9ldmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdmFsdWUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl92YWx1ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcHJpbWl0aXZlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ByaW1pdGl2ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBTdGRsaWIuZnN0IHB2Yl9wYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IFN0ZGxpYi5mc3QgcHZiX2V4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmJfbG9jID0gU3RkbGliLmZzdCBwdmJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgU3RkbGliLnNuZCBwdmJfcGF0KTtcbiAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgU3RkbGliLnNuZCBwdmJfZXhwcik7XG4gICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIFN0ZGxpYi5zbmQgcHZiX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWJfbmFtZSA9IFN0ZGxpYi5mc3QgcG1iX25hbWU7XG4gICAgICAgICAgICBwbWJfZXhwciA9IFN0ZGxpYi5mc3QgcG1iX2V4cHI7XG4gICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWJfbG9jID0gU3RkbGliLmZzdCBwbWJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1iX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBTdGRsaWIuc25kIHBtYl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtYl9sb2NcIiwgU3RkbGliLnNuZCBwbWJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kZWYgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGVmXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RpciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kaXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJfbmFtZSA9IFN0ZGxpYi5mc3QgcGRpcl9uYW1lO1xuICAgICAgICAgICAgcGRpcl9hcmcgPSBTdGRsaWIuZnN0IHBkaXJfYXJnO1xuICAgICAgICAgICAgcGRpcl9sb2MgPSBTdGRsaWIuZnN0IHBkaXJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBTdGRsaWIuc25kIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIFN0ZGxpYi5zbmQgcGRpcl9hcmcpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcmFfZGVzYyA9IFN0ZGxpYi5mc3QgcGRpcmFfZGVzYztcbiAgICAgICAgICAgIHBkaXJhX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcmFfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJhX2Rlc2NcIiwgU3RkbGliLnNuZCBwZGlyYV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGRpcmFfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcmFfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9zdHJpbmcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfc3RyaW5nXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQZGlyX2ludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2ludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9ib29sIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2Jvb2xcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgKiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuW0BAQGVuZF1cbltAQEBlbmRdXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IudFxuXG5sZXQgdG9fZXh0ZW5zaW9uIChlcnJvciA6IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50KSA9XG4gIGxldCBvcGVuIEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBpblxuICBsZXQgb3BlbiBBc3RfaGVscGVyIGluXG4gIGlmIG5vdCAoaXNfd2VsbF9mb3JtZWQgZXJyb3IpIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcInRvX2V4dGVuc2lvbjogZXhwZWN0ZWQga2luZCBSZXBvcnRfZXJyb3JcIik7XG4gIGxldCBzdWJfbXNncyA9IHN1Yl9tc2dzIGVycm9yIGluXG4gIGxldCBtYWluX21zZyA9IG1haW5fbXNnIGVycm9yIGluXG4gIGxldCBlcnJfZXh0ZW5zaW9uX25hbWUgbG9jID0geyBMb2NhdGlvbi5sb2M7IHR4dCA9IFwib2NhbWwuZXJyb3JcIiB9IGluXG4gIGxldCBta19zdHJpbmdfY29uc3RhbnQgeCA9IFN0ci5ldmFsIChFeHAuY29uc3RhbnQgKENvbnN0LnN0cmluZyB4KSkgaW5cbiAgbGV0IGV4dGVuc2lvbl9vZl9zdWJfbXNnIChzdWJfbXNnIDogc3RyaW5nIExvY2F0aW9uLmxvYykgPVxuICAgIFN0ci5leHRlbnNpb25cbiAgICAgIChlcnJfZXh0ZW5zaW9uX25hbWUgc3ViX21zZy5sb2MsIFBTdHIgWyBta19zdHJpbmdfY29uc3RhbnQgc3ViX21zZy50eHQgXSlcbiAgaW5cbiAgKCBlcnJfZXh0ZW5zaW9uX25hbWUgbWFpbl9tc2cubG9jLFxuICAgIFBhcnNldHJlZS5QU3RyXG4gICAgICAobWtfc3RyaW5nX2NvbnN0YW50IG1haW5fbXNnLnR4dCA6OiBMaXN0Lm1hcCBleHRlbnNpb25fb2Zfc3ViX21zZyBzdWJfbXNncylcbiAgKVxuXG5sZXQgcmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLnJlZ2lzdGVyX2Vycm9yX29mX2V4blxuXG5sZXQgbWVzc2FnZSBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi50eHQ7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICB0eHRcblxubGV0IHNldF9tZXNzYWdlID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX21zZ1xuXG5sZXQgbWFrZSB+bG9jIHR4dCB+c3ViID1cbiAgbGV0IHN1YiA9IExpc3QubWFwIChmdW4gKGxvYywgdHh0KSAtPiB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IHR4dCB9KSBzdWIgaW5cbiAgQXN0bGliLkxvY2F0aW9uLkVycm9yLm1ha2UgfnN1YiB7IGxvYzsgdHh0IH1cblxubGV0IHVwZGF0ZV9sb2MgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbG9jXG5cbmxldCBnZXRfbG9jYXRpb24gZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24ubG9jOyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgbG9jXG5cbmxldCBvZl9leG4gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iub2ZfZXhuXG5sZXQgcmFpc2UgZXJyb3IgPSByYWlzZSAoQXN0bGliLkxvY2F0aW9uLkVycm9yIGVycm9yKVxuIiwibW9kdWxlIERvX25vdF91c2VfZGlyZWN0bHkgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgQWZsX2luc3RydW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWZsX2luc3RydW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIEFsaWFzX2FuYWx5c2lzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsaWFzX2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBBbGxvY2F0ZWRfY29uc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxsb2NhdGVkX2NvbnN0IGluc3RlYWRcIl1cbm1vZHVsZSBBbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXJjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BcmNoIGluc3RlYWRcIl1cbm1vZHVsZSBBcmdfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXJnX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saW5rIGluc3RlYWRcIl1cbm1vZHVsZSBBc21wYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21wYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdHR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBdHRyX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkF0dHJfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBCYWNrZW5kX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJhY2tlbmRfdmFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJhY2tlbmRfdmFyIGluc3RlYWRcIl1cbm1vZHVsZSBCaW51dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJpbnV0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CcmFuY2hfcmVsYXhhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb25faW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CcmFuY2hfcmVsYXhhdGlvbl9pbnRmIGluc3RlYWRcIl1cbm1vZHVsZSBCdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ0eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsZF9leHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CdWlsZF9leHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfcGF0aF9wcmVmaXhfbWFwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbGRfcGF0aF9wcmVmaXhfbWFwIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsdGluX2F0dHJpYnV0ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdWlsdGluX2F0dHJpYnV0ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVnZW4gaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVsaWJyYXJpYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVsaWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVsaW5rID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZXBhY2thZ2VyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVzZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ5dGVzZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ1NFID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNTRSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ1NFZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNTRWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2FtbGludGVybmFsTWVuaGlyTGliID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2FtbGludGVybmFsTWVuaGlyTGliIGluc3RlYWRcIl1cbm1vZHVsZSBDY29tcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNjb21wIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIENsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIENsZmxhZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbGZsYWdzIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmUgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfY29udmVyc2lvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2NvbnZlcnNpb24gaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfY29udmVyc2lvbl9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uX2F1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9lbGVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfZWxlbWVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX29mZnNldHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vZmZzZXRzIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX29yaWdpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX29yaWdpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21pX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtaV9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW0gaW5zdGVhZFwiXVxubW9kdWxlIENtbV9oZWxwZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbV9oZWxwZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faW52YXJpYW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tZ2VuX3N0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbWdlbl9zdGF0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21vX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ210MmFubm90ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ210MmFubm90IGluc3RlYWRcIl1cbm1vZHVsZSBDbXRfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ210X2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ214X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ214c19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbG9yaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbG9yaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBDb21iYWxsb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tYmFsbG9jIGluc3RlYWRcIl1cbm1vZHVsZSBDb21wZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsYXRpb25fdW5pdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21waWxhdGlvbl91bml0IGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5Db21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlX2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBpbGVfY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsZW52IGluc3RlYWRcIl1cbm1vZHVsZSBDb21wbWlzYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBtaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25maWcgaW5zdGVhZFwiXVxubW9kdWxlIENvbnNpc3RibCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbnNpc3RibCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29udmVydF9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbnZlcnRfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ3R5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YWZsb3cgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGF0YWZsb3cgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFyZXByID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGF0YXJlcHIgaW5zdGVhZFwiXVxubW9kdWxlIERlYWRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRlYWRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBEZWJ1Z2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZWJ1Z2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIERlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmcgaW5zdGVhZFwiXVxubW9kdWxlIERsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9jc3RyaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvY3N0cmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIERvbWFpbnN0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9tYWluc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIEVmZmVjdF9hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FZmZlY3RfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0Y29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRW1pdGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgRW52YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3J0cmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVycm9ydHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaWQgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mb19mb3JfcGFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mb19mb3JfcGFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwdW5nZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRXh0cmFjdF9wcm9qZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHRyYWN0X3Byb2plY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaXRlcmF0b3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaXRlcmF0b3JzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3RvX2NsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV90b19jbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3V0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEZyZXNoZW5pbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRnJlc2hlbmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgR2VucHJpbnR2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLkdlbnByaW50dmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJZF90eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JZF90eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnRpZmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBJbXBvcnRfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkltcG9ydF9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2RfZXJyb3JwcmludGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgaW5zdGVhZFwiXVxubW9kdWxlIEluY29uc3RhbnRfaWRlbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluY29uc3RhbnRfaWRlbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2Nvc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfY29zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfZGVjaXNpb24gaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0c190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0c190eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfdHJhbnNmb3JtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ190cmFuc2Zvcm1zIGluc3RlYWRcIl1cbm1vZHVsZSBJbnN0cnVjdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuSW5zdHJ1Y3QgaW5zdGVhZFwiXVxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJmIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcm5hbF92YXJpYWJsZV9uYW1lcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcm5hbF92YXJpYWJsZV9uYW1lcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJ2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJ2YWwgaW5zdGVhZFwiXVxubW9kdWxlIEludmFyaWFudF9wYXJhbXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW52YXJpYW50X3BhcmFtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBMYXp5X2JhY2t0cmFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhenlfYmFja3RyYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBMZXhlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxleGVyIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcl9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyaXplID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcml6ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlua2FnZV9uYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmthZ2VfbmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluc2NhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5zY2FuIGluc3RlYWRcIl1cbm1vZHVsZSBMaXZlbmVzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaXZlbmVzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9hZF9wYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9hZF9wYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhbF9zdG9yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2FsX3N0b3JlIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2F0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBMb25naWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIE1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgTWFpbl9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFpbl9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5NYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBNYWtlZGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFrZWRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWF0Y2hpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYXRjaGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWV0YSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ldGEgaW5zdGVhZFwiXVxubW9kdWxlIE1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBNdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk10eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBNdXRhYmxlX3ZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk11dGFibGVfdmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIE51bWJlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5OdW1iZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBPcGNvZGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3Bjb2RlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3ByaW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3ByaW50IGluc3RlYWRcIl1cbm1vZHVsZSBPcHRjb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRlcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wdG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE9wdG1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0bWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgT3V0Y29tZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhcmFtZXRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXJhbWV0ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2V0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXNzX3dyYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFzc193cmFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0dGVybnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXR0ZXJucyBpbnN0ZWFkXCJdXG5tb2R1bGUgUGVyc2lzdGVudF9lbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QZXJzaXN0ZW50X2VudiBpbnN0ZWFkXCJdXG5tb2R1bGUgUG9sbGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qb2xsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBQcGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBwcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJlZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJlZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBQcmltaXRpdmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmltaXRpdmUgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRpbnN0ciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuUHJpbnRpbnN0ciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRsaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludG1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIFByaW50cGF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRwYXQgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXAgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cGVkIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2MgaW5zdGVhZFwiXVxubW9kdWxlIFByb2ZpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Qcm9maWxlIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9qZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2plY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFJlY19jaGVjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJlY19jaGVjayBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVmX3RvX3ZhcmlhYmxlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWZfdG9fdmFyaWFibGVzIGluc3RlYWRcIl1cbm1vZHVsZSBSZWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVnIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2FyZ3VtZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2FyZ3VtZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzIGluc3RlYWRcIl1cbm1vZHVsZSBSdW50aW1lZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUnVudGltZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkdWxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWR1bGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0Z2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfaWQgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX29yaWdpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcmVfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNoYXJlX2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2lnbmF0dXJlX2dyb3VwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2lnbmF0dXJlX2dyb3VwIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGVfdmFsdWVfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsZV92YWx1ZV9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaW1wbGlmIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHNfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgU2ltcGxpZnlfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTcGlsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGlsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BsaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BsaXQgaW5zdGVhZFwiXVxubW9kdWxlIFN0YXRpY19leGNlcHRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhdGljX2V4Y2VwdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RybWF0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFN0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Vic3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdWJzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3dpdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3dpdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBTeW10YWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bXRhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBTeW50YXhlcnIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW50YXhlcnIgaW5zdGVhZFwiXVxubW9kdWxlIFRhZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UYWcgaW5zdGVhZFwiXVxubW9kdWxlIFRhcmdldGludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhcmdldGludCBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfbWFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRlcm1pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGVybWluZm8gaW5zdGVhZFwiXVxubW9kdWxlIFRvcGNvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BkaXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BkaXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BldmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BldmFsIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bsb29wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bsb29wIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BtYWluIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BzdGFydCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xhdHRyaWJ1dGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xhdHRyaWJ1dGUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG9iaiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG9iaiBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNscHJpbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbHByaW0gaW5zdGVhZFwiXVxubW9kdWxlIFRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2wgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfcHJvcGVydGllcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3Byb3BlcnRpZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3NlcGFyYWJpbGl0eSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3NlcGFyYWJpbGl0eSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdW5ib3hlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3VuYm94ZWQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3ZhcmlhbmNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdmFyaWFuY2UgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkdHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkdHJlZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVvcHQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlb3B0IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBldGV4cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGV0ZXhwIGluc3RlYWRcIl1cbm1vZHVsZSBVbl9hbmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5fYW5mIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBVbnR5cGVhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5VbnR5cGVhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFZhcl93aXRoaW5fY2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJfd2l0aGluX2Nsb3N1cmUgaW5zdGVhZFwiXVxubW9kdWxlIFZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBXYXJuaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLldhcm5pbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBYODZfZHNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9kc2wgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9nYXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2dhcyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X21hc20gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X21hc20gaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9wcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9wcm9jIGluc3RlYWRcIl1cbiIsIm9wZW4gU3RkTGFiZWxzXG5cbmxldCBwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MgPVxuICBsZXQgYXJncyA9XG4gICAgTGlzdC5jb25jYXRcbiAgICAgIFtcbiAgICAgICAgWyBcIi1rZWVwLXdoaXRlc3BhY2VcIiBdO1xuICAgICAgICBbIFwiLWxvY2F0aW9uLXN0eWxlIG9tYWtlXCIgXTtcbiAgICAgICAgKGlmIHVzZV9jb2xvciB0aGVuIFtdIGVsc2UgWyBcIi1hc2NpaVwiIF0pO1xuICAgICAgICBleHRyYV9wYXRkaWZmX2FyZ3M7XG4gICAgICBdXG4gIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoXCJwYXRkaWZmXCIgOjogYXJncylcblxubGV0IHByaW50ID9kaWZmX2NvbW1hbmQgPyhleHRyYV9wYXRkaWZmX2FyZ3MgPSBbXSkgPyh1c2VfY29sb3IgPSBmYWxzZSkgfmZpbGUxXG4gICAgfmZpbGUyICgpID1cbiAgbGV0IGV4ZWMgY21kID1cbiAgICBsZXQgY21kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgMT4mMlwiIGNtZCAoRmlsZW5hbWUucXVvdGUgZmlsZTEpXG4gICAgICAgIChGaWxlbmFtZS5xdW90ZSBmaWxlMilcbiAgICBpblxuICAgIG1hdGNoIFN5cy5jb21tYW5kIGNtZCB3aXRoXG4gICAgfCAwIC0+IGBTYW1lXG4gICAgfCAxIC0+IGBEaWZmZXJlbnRcbiAgICB8IG4gLT4gYEVycm9yIChuLCBjbWQpXG4gIGluXG4gIG1hdGNoIGRpZmZfY29tbWFuZCB3aXRoXG4gIHwgU29tZSBzIC0+IGlnbm9yZSAoZXhlYyBzIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggZXhlYyAocGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzKSB3aXRoXG4gICAgICB8IGBTYW1lIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBwcm9kdWNlZCBubyBvdXRwdXQsIGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gICAgICB8IGBEaWZmZXJlbnQgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHN1Y2Nlc3NmdWxseSBmb3VuZCBhIGRpZmZlcmVuY2UgKilcbiAgICAgICAgICAoKVxuICAgICAgfCBgRXJyb3IgKGVycl9jb2RlLCBjbWQpIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiB0aHJldyBhbiBlcnJvci4uLiBwZXJoYXBzIGl0IHdhc24ndCBpbnN0YWxsZWQ/IGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJFcnJvcjpcXG5cXFxuICAgICAgICAgICAgID4gJVMgZXhpdGVkIHdpdGggY29kZSAlZFxcblxcXG4gICAgICAgICAgICAgPiBQZXJoYXBzIHBhdGRpZmYgaXMgbm90IGluc3RhbGxlZD8gSGludCwgdHJ5OiBvcGFtIGluc3RhbGwgcGF0ZGlmZlxcblxcXG4gICAgICAgICAgICAgPiBGYWxsaW5nIGJhY2sgdG8gZGlmZiAtdVxcblxcblwiXG4gICAgICAgICAgICBjbWQgZXJyX2NvZGU7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKSlcbiIsInR5cGUgZGVyaXZlciA9IC4uXG5cbmxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSA0MlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSBkZXJpdmVyID1cbiAgaWYgSGFzaHRibC5tZW0gYWxsIG5hbWUgdGhlblxuICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgXCJQcHhfZGVyaXZpZXJzLnJlZ2lzdGVyOiAlUyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcIiBuYW1lO1xuICBIYXNodGJsLmFkZCBhbGwgbmFtZSBkZXJpdmVyXG5cbmxldCBsb29rdXAgbmFtZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCBhbGwgbmFtZSB3aXRoXG4gIHwgZHJ2IC0+IFNvbWUgZHJ2XG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbmxldCBkZXJpdmVycyAoKSA9XG4gIEhhc2h0YmwuZm9sZCAoZnVuIG5hbWUgZHJ2IGFjYyAtPiAobmFtZSwgZHJ2KSA6OiBhY2MpIGFsbCBbXVxuIiwibW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBtYXAgPSAnYSAtPiAnYVxuICB0eXBlICdhIGl0ZXIgPSAnYSAtPiB1bml0XG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkID0gJ2EgLT4gJ2FjYyAtPiAnYWNjXG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkX21hcCA9ICdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjXG4gIHR5cGUgKCdjdHgsICdhKSBtYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYVxuICB0eXBlICgnYSwgJ3JlcykgbGlmdCA9ICdhIC0+ICdyZXNcbiAgdHlwZSAoJ2N0eCwgJ2EsICdyZXMpIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzXG5lbmRcblxuY2xhc3MgbWFwID1cbiAgbGV0IGFueSB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQubWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULm1hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULm1hcCAtPiAnYSBvcHRpb24gVC5tYXAgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQubWFwIC0+ICdhIGxpc3QgVC5tYXAgPSBMaXN0Lm1hcFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULm1hcCAtPiAnYSBhcnJheSBULm1hcCA9IEFycmF5Lm1hcFxuICBlbmRcblxuY2xhc3MgaXRlciA9XG4gIGxldCBhbnkgPSBpZ25vcmUgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5pdGVyID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQuaXRlciAtPiAnYSBvcHRpb24gVC5pdGVyID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgbGlzdCBULml0ZXIgPSBMaXN0Lml0ZXJcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGFycmF5IFQuaXRlciA9IEFycmF5Lml0ZXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkID1cbiAgbGV0IGFueSBfIGFjYyA9IGFjYyBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgeCBhY2MgLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gYWNjIHwgU29tZSB4IC0+IGYgeCBhY2NcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGQgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gYWNjIHwgeCA6OiBsIC0+IGxvb3AgZiBsIChmIHggYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIHIgOj0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZF9tYXAgPVxuICBsZXQgYW55IHggYWNjID0gKHgsIGFjYykgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIGFjYylcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICAoU29tZSB4LCBhY2MpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIGFjYylcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICBsZXQgbCwgYWNjID0gbG9vcCBmIGwgYWNjIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiAoYSwgYWNjKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSBhY2MgaW5cbiAgICAgICAgICBsZXQgYScgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXIgaW5cbiAgICAgICAgICAgIEFycmF5LnVuc2FmZV9zZXQgYScgaSB4O1xuICAgICAgICAgICAgciA6PSBhY2NcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIChhJywgIXIpXG4gIGVuZFxuXG5jbGFzcyBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIGxldCBhbnkgXyB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKCdjdHgsIGludCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBvcHRpb24pIFQubWFwX3dpdGhfY29udGV4dFxuICAgICAgICA9XG4gICAgICBmdW4gZiBjdHggeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgY3R4IHgpXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBsaXN0KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT4gTGlzdC5tYXAgKGYgY3R4KSBsXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgYXJyYXkpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggYSAtPiBBcnJheS5tYXAgKGYgY3R4KSBhXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlbGYjY29uc3RyIFwiTm9uZVwiIFtdXG4gICAgICAgIHwgU29tZSB4IC0+IHNlbGYjY29uc3RyIFwiU29tZVwiIFsgZiB4IF1cblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBzZWxmI2NvbnN0ciBcIltdXCIgW11cbiAgICAgICAgfCB4IDo6IGwgLT4gc2VsZiNjb25zdHIgXCI6OlwiIFsgZiB4OyBzZWxmI2xpc3QgZiBsIF1cbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIHNlbGYjY29uc3RyIGN0eCBcIk5vbmVcIiBbXSlcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCByZXMgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICAoU29tZSB4LCBzZWxmI2NvbnN0ciBjdHggXCJTb21lXCIgWyByZXMgXSlcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIHNlbGYjY29uc3RyIGN0eCBcIltdXCIgW10pXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzX2hlYWQgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICBsZXQgbCwgcmVzX3RhaWwgPSBzZWxmI2xpc3QgZiBjdHggbCBpblxuICAgICAgICAgICAgKHggOjogbCwgc2VsZiNjb25zdHIgY3R4IFwiOjpcIiBbIHJlc19oZWFkOyByZXNfdGFpbCBdKVxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ3Jlc10gc3RkX2xpZnRlcnMgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICBtZXRob2QgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnRcbmVuZFxuXG5jbGFzcyB0eXBlIFsnY3R4LCAncmVzXSBzdGRfbGlmdF9tYXBwZXJzX3dpdGhfY29udGV4dCA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgYXJyYXkgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2Qgb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgbGlzdCA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuZW5kXG4iLCJtb2R1bGUgQ2FtbCA9IFN0ZGxpYiBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjMtMDZdIHVzZSBTdGRsaWIgaW5zdGVhZFwiXVxub3BlbiBTdGRsaWJcbm9wZW4gU3RkTGFiZWxzXG5tb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxuXG5tb2R1bGUgdHlwZSBDb21wYXJpc29ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG1pbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBtYXggOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgbWluID0gbWluXG4gIGxldCBtYXggPSBtYXhcbmVuZFxuXG5pbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxubW9kdWxlIEFycmF5ID0gQXJyYXlcblxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9ib29sXG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGJvb2wpXG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQnl0ZXNcblxuICBsZXQgc3ViX3N0cmluZyB0IH5wb3MgfmxlbiA9IFN0ZGxpYi5CeXRlcy5zdWJfc3RyaW5nIHQgcG9zIGxlblxuXG4gIGxldCBibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgU3RkbGliLkJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gY2hhcilcbmVuZFxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgeSAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICByYWlzZSBleG5cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9mbG9hdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBmbG9hdClcbmVuZFxuXG5tb2R1bGUgRm4gPSBzdHJ1Y3RcbiAgbGV0IGlkIHggPSB4XG5lbmRcblxubW9kdWxlIEhhc2h0YmwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIHdoaWxlIG1lbSB0IGtleSBkb1xuICAgICAgcmVtb3ZlIHQga2V5XG4gICAgZG9uZTtcbiAgICBhZGQgdCBrZXkgZGF0YVxuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgICBpZiBtZW0gdCBrZXkgdGhlbiBFcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0YmwuYWRkX2V4blwiKVxuICAgIGVsc2UgKFxuICAgICAgYWRkIHQga2V5IGRhdGE7XG4gICAgICBPayAoKSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aCBPayAoKSAtPiAoKSB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cblxuICBsZXQgZmluZF9vcHQgdCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aCBkYXRhIC0+IFNvbWUgZGF0YSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZmluZF9vcHQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IGRhdGFcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgICAgIGFkZF9leG4gdCB+a2V5IH5kYXRhO1xuICAgICAgICBkYXRhXG5cbiAgbGV0IHJlYyBhZGRfYWxpc3QgdCBhbGlzdCA9XG4gICAgbWF0Y2ggYWxpc3Qgd2l0aFxuICAgIHwgW10gLT4gT2sgKClcbiAgICB8IChrZXksIGRhdGEpIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBhZGRfYWxpc3QgdCB0YWlsXG4gICAgICAgIHwgRXJyb3IgKF8gOiBleG4pIC0+IEVycm9yIGtleSlcblxuICBsZXQgb2ZfYWxpc3QgP3NpemUgYWxpc3QgPVxuICAgIGxldCBzaXplID1cbiAgICAgIG1hdGNoIHNpemUgd2l0aCBTb21lIHNpemUgLT4gc2l6ZSB8IE5vbmUgLT4gTGlzdC5sZW5ndGggYWxpc3RcbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlIHNpemUgaW5cbiAgICBtYXRjaCBhZGRfYWxpc3QgdCBhbGlzdCB3aXRoIE9rICgpIC0+IE9rIHQgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/c2l6ZSBhbGlzdCA9XG4gICAgbWF0Y2ggb2ZfYWxpc3QgP3NpemUgYWxpc3Qgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5vZl9hbGlzdF9leG5cIilcbmVuZFxuXG5tb2R1bGUgSW5fY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gICAgbGV0IGZsYWdzID0gaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgZmlsZW5hbWUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgZmlsZW5hbWUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9pblxuXG4gIGxldCBpbnB1dF9hbGwgdCA9XG4gICAgbGV0IHJlYyByZWFkX2FsbF9pbnRvIHQgYnVmID1cbiAgICAgIG1hdGNoIGlucHV0X2NoYXIgdCB3aXRoXG4gICAgICB8IGNoYXIgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgICAgICAgcmVhZF9hbGxfaW50byB0IGJ1ZlxuICAgICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gKClcbiAgICBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgcmVhZF9hbGxfaW50byB0IGJ1ZjtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHJlYWRfYWxsIGZpbGVuYW1lID0gd2l0aF9maWxlIGZpbGVuYW1lIH5mOmlucHV0X2FsbFxuZW5kXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG1heF9pbnQgPSBtYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbmVuZFxuXG5tb2R1bGUgRWl0aGVyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuZW5kXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgKCogc2hhZG93IG5vbi10YWlsLXJlY3Vyc2l2ZSBmdW5jdGlvbnMgKilcbiAgICBsZXQgbWVyZ2UgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NvYyA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc3EgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG5cbiAgICBsZXQgcmV2X21hcGkgbGlzdCB+ZiA9XG4gICAgICBsZXQgcmVjIHJldl9tYXBpX2F0IGxpc3QgaSB+ZiB+YWNjID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+IHJldl9tYXBpX2F0IHRhaWwgKGkgKyAxKSB+ZiB+YWNjOihmIGkgaGVhZCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgcmV2X21hcGlfYXQgbGlzdCAwIH5mIH5hY2M6W11cblxuICAgIGxldCBmb2xkX3JpZ2h0MiBsaXN0MSBsaXN0MiB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQyIChyZXYgbGlzdDEpIChyZXYgbGlzdDIpIH5pbml0IH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSBhY2MpXG5cbiAgICBsZXQgbWFwIGxpc3QgfmYgPSByZXYgKHJldl9tYXAgbGlzdCB+ZilcbiAgICBsZXQgbWFwaSBsaXN0IH5mID0gcmV2IChyZXZfbWFwaSBsaXN0IH5mKVxuXG4gICAgbGV0IGZvbGRfcmlnaHQgbGlzdCB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQgKExpc3QucmV2IGxpc3QpIH5pbml0IH5mOihmdW4gYWNjIHggLT4gZiB4IGFjYylcblxuICAgIGxldCBhcHBlbmQgeCB5ID0gcmV2X2FwcGVuZCAocmV2IHgpIHlcbiAgICBsZXQgY29uY2F0IGxpc3QgPSBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6W10gfmY6YXBwZW5kXG5cbiAgICBsZXQgcmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIgPVxuICAgICAgZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gKHgsIHkpIDo6IGFjYylcblxuICAgIGxldCBjb21iaW5lIGxpc3QxIGxpc3QyID0gcmV2IChyZXZfY29tYmluZSBsaXN0MSBsaXN0MilcblxuICAgIGxldCBzcGxpdCBsaXN0ID1cbiAgICAgIGZvbGRfcmlnaHQgbGlzdCB+aW5pdDooW10sIFtdKSB+ZjooZnVuICh4LCB5KSAoeHMsIHlzKSAtPlxuICAgICAgICAgICh4IDo6IHhzLCB5IDo6IHlzKSlcblxuICAgIGxldCBtYXAyIGxpc3QxIGxpc3QyIH5mID1cbiAgICAgIHJldiAoZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgOjogYWNjKSlcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsKVxuICAgIGluXG4gICAgcGFydCBbXSBbXSBsXG5cbiAgbGV0IGluaXQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIH5sZW4gfnBvcyB+ZiB+YWNjID1cbiAgICAgIGlmIHBvcyA+PSBsZW4gdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgIGVsc2UgbG9vcCB+bGVuIH5wb3M6KHBvcyArIDEpIH5mIH5hY2M6KGYgcG9zIDo6IGFjYylcbiAgICBpblxuICAgIGxvb3AgfmxlbiB+cG9zOjAgfmYgfmFjYzpbXVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIFtdIC0+IHRydWUgfCBfIDo6IF8gLT4gZmFsc2VcblxuICBsZXQgcmV2X2ZpbHRlcl9vcHQgbGlzdCA9XG4gICAgZm9sZF9sZWZ0IGxpc3QgfmluaXQ6W10gfmY6KGZ1biB0YWlsIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aCBOb25lIC0+IHRhaWwgfCBTb21lIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuXG4gIGxldCBmaWx0ZXJfb3B0IGxpc3QgPSByZXYgKHJldl9maWx0ZXJfb3B0IGxpc3QpXG4gIGxldCBmaWx0ZXJfbWFwIGxpc3QgfmYgPSByZXZfZmlsdGVyX29wdCAocmV2X21hcCBsaXN0IH5mKVxuICBsZXQgY29uY2F0X21hcCBsaXN0IH5mID0gY29uY2F0IChtYXAgbGlzdCB+ZilcblxuICBsZXQgcmVjIGZpbmRfbWFwIGxpc3QgfmYgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggZiBoZWFkIHdpdGggU29tZSBfIGFzIHNvbWUgLT4gc29tZSB8IE5vbmUgLT4gZmluZF9tYXAgdGFpbCB+ZilcblxuICBsZXQgZmluZF9tYXBfZXhuIGxpc3QgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIGxpc3QgfmYgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbiAgbGV0IHJlYyBsYXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgeCBdIC0+IFNvbWUgeFxuICAgIHwgXyA6OiAoXyA6OiBfIGFzIHJlc3QpIC0+IGxhc3QgcmVzdFxuXG4gIGxldCBzcGxpdF93aGlsZSBsaXN0IH5mID1cbiAgICBsZXQgcmVjIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBmIGhlYWQgLT4gc3BsaXRfd2hpbGVfaW50byB0YWlsIH5mIH5hY2M6KGhlYWQgOjogYWNjKVxuICAgICAgfCBfIDo6IF8gfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCBsaXN0KVxuICAgIGluXG4gICAgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2M6W11cblxuICBsZXQgZmluZF9hX2R1cCAodHlwZSBlbHQpIGxpc3QgfmNvbXBhcmUgPVxuICAgIGxldCBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBlbHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgZW5kIGluXG4gICAgbGV0IG1vZHVsZSBFbHRfc2V0ID0gU2V0Lk1ha2UgKEVsdCkgaW5cbiAgICBsZXQgcmVjIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0ID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIEVsdF9zZXQubWVtIGhlYWQgc2V0IHRoZW4gU29tZSBoZWFkXG4gICAgICAgICAgZWxzZSBmaW5kX2FfZHVwX2luIHRhaWwgfnNldDooRWx0X3NldC5hZGQgaGVhZCBzZXQpXG4gICAgaW5cbiAgICBmaW5kX2FfZHVwX2luIGxpc3QgfnNldDpFbHRfc2V0LmVtcHR5XG5cbiAgbGV0IGFzc29jX29wdCBrZXkgYWxpc3QgPVxuICAgIG1hdGNoIGFzc29jIGtleSBhbGlzdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgKCogcmVvcmRlcnMgYXJndW1lbnRzIHRvIGltcHJvdmUgdHlwZSBpbmZlcmVuY2UgKilcbiAgbGV0IGl0ZXIgbGlzdCB+ZiA9IGl0ZXIgbGlzdCB+ZlxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcbiAgbGV0IGl0ZXIgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbiAgbGV0IHRvX2xpc3QgdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IFtdIHwgU29tZSB4IC0+IFsgeCBdXG5lbmRcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICBsZXQgYmluZCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gZiBhIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXBfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgaGFuZGxlX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBhIHwgRXJyb3IgZSAtPiBmIGVcbmVuZFxuXG5tb2R1bGUgTm9uRW1wdHlMaXN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogJ2EgbGlzdFxuXG4gIGxldCAoIEAgKSAodDEsIHExKSAodDIsIHEyKSA9ICh0MSwgcTEgQCAodDIgOjogcTIpKVxuICBsZXQgaGQgPSBmc3RcbiAgbGV0IHRvX2xpc3QgKHQsIHEpID0gdCA6OiBxXG4gIGxldCBtYXAgfmYgKHQsIHEpID0gKGYgdCwgTGlzdC5tYXAgfmYgcSlcbmVuZFxuXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpID8oYXBwZW5kID0gZmFsc2UpID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBmYWlsX2lmX2V4aXN0cyB0aGVuIE9wZW5fZXhjbCA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9vdXRcblxuICBsZXQgd3JpdGVfYWxsIGZpbGVuYW1lIH5kYXRhID1cbiAgICB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6KGZ1biB0IC0+IG91dHB1dF9zdHJpbmcgdCBkYXRhKVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgaXNfZW1wdHkgKHQgOiB0KSA9IGxlbmd0aCB0ID0gMFxuICBsZXQgcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW5cbiAgbGV0IHN1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6KGxlbmd0aCB0IC0gbGVuKSB+bGVuXG4gIGxldCBkcm9wX3ByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6bGVuIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuICBsZXQgZHJvcF9zdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG5cbiAgbGV0IGlzX3ByZWZpeCB0IH5wcmVmaXggPVxuICAgIGxldCByZWMgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCBwb3MpIChnZXQgcHJlZml4IHBvcylcbiAgICAgICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOihwb3MgKyAxKSB+bGVuXG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggcHJlZml4XG4gICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6MCB+bGVuOihsZW5ndGggcHJlZml4KVxuXG4gIGxldCBpc19zdWZmaXggdCB+c3VmZml4ID1cbiAgICBsZXQgcmVjIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvcyB+c3VmZml4X29mZnNldCA9XG4gICAgICBwb3MgPCAwXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCAoc3VmZml4X29mZnNldCArIHBvcykpIChnZXQgc3VmZml4IHBvcylcbiAgICAgICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvczoocG9zIC0gMSkgfnN1ZmZpeF9vZmZzZXRcbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBzdWZmaXhcbiAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4XG4gICAgICAgICB+cG9zOihsZW5ndGggc3VmZml4IC0gMSlcbiAgICAgICAgIH5zdWZmaXhfb2Zmc2V0OihsZW5ndGggdCAtIGxlbmd0aCBzdWZmaXgpXG5cbiAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICBsZXQgcmVjIGV4aXN0c19hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPCBsZW4gJiYgKGYgKGdldCB0IHBvcykgfHwgZXhpc3RzX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGV4aXN0c19hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICBsZXQgcmVjIGZvcl9hbGxfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlbiB8fCAoZiAoZ2V0IHQgcG9zKSAmJiBmb3JfYWxsX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIGluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCByaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aFxuICAgIHwgaSAtPiBTb21lIGlcbiAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBsc3BsaXQyIHQgfm9uID1cbiAgICBtYXRjaCBpbmRleF9vcHQgdCBvbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgICBTb21lIChzdWIgdCB+cG9zOjAgfmxlbjppLCBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSkpXG5cbiAgbGV0IGNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IGxvd2VyY2FzZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG4gIGxldCB1bmNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgc3BsaXRfb25fY2hhciB0IH5zZXAgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXIgc2VwIHRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gc3RyaW5nKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1hcC5NYWtlIChTdHJpbmcpXG5cbiAgICBsZXQgZmluZF9vcHQga2V5IHQgPVxuICAgICAgbWF0Y2ggZmluZCBrZXkgdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG4gIGVuZFxuXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoU3RyaW5nKVxuZW5kXG5cbmxldCAoIEAgKSA9IExpc3QuYXBwZW5kXG5sZXQgb3V0cHV0IG9jIGJ5dGVzIH5wb3MgfmxlbiA9IG91dHB1dCBvYyBieXRlcyBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgfnBvcyB+bGVuID0gb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgcG9zIGxlblxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBMID0gQXN0bGliLkxvY2F0aW9uXG5cbnR5cGUgdCA9IGxvY2F0aW9uID0ge1xuICBsb2Nfc3RhcnQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19lbmQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmxldCBpbl9maWxlIG5hbWUgPVxuICBsZXQgbG9jID0geyBwb3NfZm5hbWUgPSBuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IC0xIH0gaW5cbiAgeyBsb2Nfc3RhcnQgPSBsb2M7IGxvY19lbmQgPSBsb2M7IGxvY19naG9zdCA9IHRydWUgfVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxvYyBmbiA9XG4gIGxldCBsb2Nfc3RhcnQgPSB7IGxvYy5sb2Nfc3RhcnQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIGxldCBsb2NfZW5kID0geyBsb2MubG9jX2VuZCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQ7IGxvY19lbmQgfVxuXG5sZXQgbm9uZSA9IGluX2ZpbGUgXCJfbm9uZV9cIlxuXG5sZXQgaW5pdCBsZXhidWYgZm5hbWUgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IDAgfVxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgZm10ID0gTC5yYWlzZV9lcnJvcmYgP2xvYyBmbXRcbmxldCByZXBvcnRfZXhjZXB0aW9uID0gTC5yZXBvcnRfZXhjZXB0aW9uXG5cbmxldCBvZl9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAge1xuICAgIGxvY19zdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICBsb2NfZW5kID0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gIH1cblxubGV0IHByaW50IHBwZiB0ID1cbiAgU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcIlxuICAgIHQubG9jX3N0YXJ0LnBvc19mbmFtZSB0LmxvY19zdGFydC5wb3NfbG51bVxuICAgICh0LmxvY19zdGFydC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG4gICAgKHQubG9jX2VuZC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG5cbnR5cGUgbm9ucmVjICdhIGxvYyA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IHQgfVxuXG5sZXQgY29tcGFyZV9wb3MgcDEgcDIgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV0IGNvbHVtbiBwID1cbiAgICAoKiBNYW51YWwgZXh0cmFjdDpcbiAgICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc19jbnVtIGFuZCBwb3NfYm9sIGlzIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0XG4gICAgICAgd2l0aGluIHRoZSBsaW5lIChpLmUuIHRoZSBjb2x1bW4gbnVtYmVyLCBhc3N1bWluZyBlYWNoIGNoYXJhY3RlciBpc1xuICAgICAgIG9uZSBjb2x1bW4gd2lkZSkuICopXG4gICAgcC5wb3NfY251bSAtIHAucG9zX2JvbFxuICBpblxuICBtYXRjaCBJbnQuY29tcGFyZSBwMS5wb3NfbG51bSBwMi5wb3NfbG51bSB3aXRoXG4gIHwgMCAtPiBJbnQuY29tcGFyZSAoY29sdW1uIHAxKSAoY29sdW1uIHAyKVxuICB8IG4gLT4gblxuXG5sZXQgbWluX3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyIDw9IDAgdGhlbiBwMSBlbHNlIHAyXG5sZXQgbWF4X3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyID49IDAgdGhlbiBwMSBlbHNlIHAyXG5cbmxldCBjb21wYXJlIGxvYzEgbG9jMiA9XG4gIG1hdGNoIGNvbXBhcmVfcG9zIGxvYzEubG9jX3N0YXJ0IGxvYzIubG9jX3N0YXJ0IHdpdGhcbiAgfCAwIC0+IGNvbXBhcmVfcG9zIGxvYzEubG9jX2VuZCBsb2MyLmxvY19lbmRcbiAgfCBuIC0+IG5cblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIGluY2x1ZGUgUHB4bGliX2FzdC5Mb2NhdGlvbl9lcnJvclxuXG4gIGxldCBjcmVhdGVmIH5sb2MgZm10ID0gRm9ybWF0Lmthc3ByaW50ZiAoZnVuIHN0ciAtPiBtYWtlIH5sb2MgfnN1YjpbXSBzdHIpIGZtdFxuZW5kXG5cbmxldCBlcnJvcl9leHRlbnNpb25mIH5sb2MgZm10ID1cbiAgRm9ybWF0Lmthc3ByaW50ZlxuICAgIChmdW4gc3RyIC0+IEVycm9yLnRvX2V4dGVuc2lvbiBAQCBFcnJvci5tYWtlIH5sb2MgfnN1YjpbXSBzdHIpXG4gICAgZm10XG5cbmV4Y2VwdGlvbiBFcnJvciA9IEwuRXJyb3JcblxubGV0ICgpID1cbiAgU3RkbGliLlByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgfCBFcnJvciBlIC0+IFNvbWUgKEVycm9yLm1lc3NhZ2UgZSlcbiAgICB8IF8gLT4gTm9uZSlcbiIsIm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gRXhwZWN0ZWQgb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgZmFpbCBsb2MgZXhwZWN0ZWQgPSByYWlzZSAoRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpKVxuXG50eXBlIGNvbnRleHQgPSB7XG4gICgqIFttYXRjaGVkXSBjb3VudHMgaG93IG1hbnkgY29uc3RydWN0b3JzIGhhdmUgYmVlbiBtYXRjaGVkLiBUaGlzIGlzIHVzZWQgdG8gZmluZCB3aGF0XG4gICAgIHBhdHRlcm4gbWF0Y2hlcyB0aGUgbW9zdCBzb21lIHBpZWNlIG9mIGFzdCBpbiBbQXN0X3BhdHRlcm4uYWx0XS4gSW4gdGhlIGNhc2Ugd2hlcmVcbiAgICAgYWxsIGJyYW5jaGVzIGZhaWwgdG8gbWF0Y2gsIHdlIHJlcG9ydCB0aGUgZXJyb3IgZnJvbSB0aGUgb25lIHRoYXQgbWF0Y2hlcyB0aGVcbiAgICAgbW9zdC5cblxuICAgICBUaGlzIGlzIG9ubHkgaW5jcmVtZW50ZWQgYnkgY29tYmluYXRvcnMgdGhhdCBjYW4gZmFpbC4gKilcbiAgbXV0YWJsZSBtYXRjaGVkIDogaW50O1xufVxuXG50eXBlICgnbWF0Y2hlZF92YWx1ZSwgJ2ssICdrX3Jlc3VsdCkgdCA9XG4gIHwgVCBvZiAoY29udGV4dCAtPiBMb2NhdGlvbi50IC0+ICdtYXRjaGVkX3ZhbHVlIC0+ICdrIC0+ICdrX3Jlc3VsdClcbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTSA9XG4gIHN0cnVjdFxuICAgIGxldCBhdHRyaWJ1dGUgfmxvYyAgfm5hbWUgIH5wYXlsb2FkICA9XG4gICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbiAgICBsZXQgYmluZGluZ19vcCB+bG9jICB+b3AgIH5wYXQgIH5leHAgID1cbiAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbiAgICBsZXQgY2FzZSB+bGhzICB+Z3VhcmQgIH5yaHMgID1cbiAgICAgIHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuICAgIGxldCBwY2xfY29uc3RyIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB+bG9jICB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjbF9sZXQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2ZfaW5oZXJpdCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNmX3ZhbCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfmxvYyAgfnZpcnQgIH5wYXJhbXMgIH5uYW1lICB+ZXhwciAgPVxuICAgICAge1xuICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBwY3R5X2NvbnN0ciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9pbmhlcml0IH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgfmxvYyAgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dmFycyAgfmFyZ3MgIH5yZXMgID1cbiAgICAgIHtcbiAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9vYmplY3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jbGFzcyB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYWxpYXMgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BvbHkgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcGFja2FnZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgfmxvYyAgeDAgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH1cbiAgICBsZXQgcGRpcl9pbnQgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGRpcl9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9XG4gICAgbGV0IHBkaXJfYm9vbCB+bG9jICB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfVxuICAgIGxldCBwZXhwX2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdGFudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4gfmxvYyAgeDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9tYXRjaCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHJ5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcmVjb3JkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZmllbGQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGZpZWxkIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXJyYXkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2lmdGhlbmVsc2UgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF93aGlsZSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZm9yIH5sb2MgIHgwIHgxIHgyIHgzIHg0ID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb2VyY2UgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VuZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXcgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX292ZXJyaWRlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXNzZXJ0IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29iamVjdCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcGFjayB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG9wIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgfmxvYyAgfm5hbWUgIH5raW5kICA9XG4gICAgICB7XG4gICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBpbmNsdWRlX2luZm9zIH5sb2MgIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+bXV0YWJsZV8gIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgbGV0b3AgfmxldF8gIH5hbmRzICB+Ym9keSAgPSB7IGxldF87IGFuZHM7IGJvZHkgfVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgIH5lbmRfICB+Z2hvc3QgID1cbiAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9XG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5sb2MgIH5uYW1lICB+ZXhwciAgPVxuICAgICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBbXTsgcG1iX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfmxvYyAgfm5hbWUgIH50eXBlXyAgPVxuICAgICAgeyBwbWRfbmFtZSA9IG5hbWU7IHBtZF90eXBlID0gdHlwZV87IHBtZF9hdHRyaWJ1dGVzID0gW107IHBtZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApIH1cbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9mdW5jdG9yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX3VucGFjayB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKSB9XG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfmxvYyAgfm5hbWUgIH5tYW5pZmVzdCAgPVxuICAgICAge1xuICAgICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXNfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtdHlfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKSB9XG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfZnVuY3RvciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV93aXRoIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3R5cGVvZiB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBvdGFnIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSkgfVxuICAgIGxldCBvaW5oZXJpdCB+bG9jICB4MCA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9XG4gICAgbGV0IG9wZW5faW5mb3MgfmxvYyAgfmV4cHIgIH5vdmVycmlkZSAgPVxuICAgICAge1xuICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYWxpYXMgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0YW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfcmVjb3JkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYXJyYXkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R5cGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfbGF6eSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF91bnBhY2sgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwb3NpdGlvbiB+Zm5hbWUgIH5sbnVtICB+Ym9sICB+Y251bSAgPVxuICAgICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSBsbnVtOyBwb3NfYm9sID0gYm9sOyBwb3NfY251bSA9IGNudW0gfVxuICAgIGxldCBydGFnIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpIH1cbiAgICBsZXQgcmluaGVyaXQgfmxvYyAgeDAgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwc2lnX3ZhbHVlIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH1cbiAgICBsZXQgcHNpZ190eXBlIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHNpZ190eXBlc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZXh0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4gfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfZXZhbCB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdmFsdWUgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdHlwZXh0IH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX29wZW4gfmxvYyAgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3MgfmxvYyAgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX2luY2x1ZGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bG9jICB+bmFtZSAgfmFyZyAgPVxuICAgICAgeyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfVxuICAgIGxldCB0eXBlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+cGFyYW1zICB+Y3N0cnMgIH5raW5kICB+cHJpdmF0ZV8gXG4gICAgICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leGNlcHRpb24gfmxvYyAgY29uc3RydWN0b3IgPVxuICAgICAge1xuICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+bG9jICB+cGF0aCAgfnBhcmFtcyAgfmNvbnN0cnVjdG9ycyAgfnByaXZhdGVfICA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB2YWx1ZV9iaW5kaW5nIH5sb2MgIH5wYXQgIH5leHByICA9XG4gICAgICB7IHB2Yl9wYXQgPSBwYXQ7IHB2Yl9leHByID0gZXhwcjsgcHZiX2F0dHJpYnV0ZXMgPSBbXTsgcHZiX2xvYyA9IGxvYyB9XG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gIH5wcmltICA9XG4gICAgICB7XG4gICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgZW5kXG5tb2R1bGUgTWFrZShMb2M6c2lnIHZhbCBsb2MgOiBMb2NhdGlvbi50IGVuZCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgbG9jID0gTG9jLmxvY1xuICAgIGxldCBhdHRyaWJ1dGUgfm5hbWUgIH5wYXlsb2FkICA9XG4gICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbiAgICBsZXQgYmluZGluZ19vcCB+b3AgIH5wYXQgIH5leHAgID1cbiAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbiAgICBsZXQgY2FzZSB+bGhzICB+Z3VhcmQgIH5yaHMgID1cbiAgICAgIHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuICAgIGxldCBwY2xfY29uc3RyIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2FwcGx5IHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjbF9sZXQgeDAgeDEgeDIgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4geDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2ZfaW5oZXJpdCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNmX3ZhbCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfnZpcnQgIH5wYXJhbXMgIH5uYW1lICB+ZXhwciAgPVxuICAgICAge1xuICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBwY3R5X2NvbnN0ciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9pbmhlcml0IHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lICB+dmFycyAgfmFyZ3MgIH5yZXMgID1cbiAgICAgIHtcbiAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FueSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9vYmplY3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jbGFzcyB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYWxpYXMgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BvbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcGFja2FnZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfVxuICAgIGxldCBwZGlyX2ludCB4MCB4MSA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfVxuICAgIGxldCBwZGlyX2lkZW50IHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfVxuICAgIGxldCBwZGlyX2Jvb2wgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH1cbiAgICBsZXQgcGV4cF9pZGVudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcHBseSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbWF0Y2ggeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3RyeSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF92YXJpYW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3JlY29yZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZpZWxkIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfd2hpbGUgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZvciB4MCB4MSB4MiB4MyB4NCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29lcmNlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlbmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vdmVycmlkZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Fzc2VydCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vYmplY3QgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRvcCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lICB+a2luZCAgPVxuICAgICAge1xuICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgaW5jbHVkZV9pbmZvcyBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZSAgfm11dGFibGVfICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGxldG9wIH5sZXRfICB+YW5kcyAgfmJvZHkgID0geyBsZXRfOyBhbmRzOyBib2R5IH1cbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICB+ZW5kXyAgfmdob3N0ICA9XG4gICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gW107IHBtYl9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cGVfOyBwbWRfYXR0cmlidXRlcyA9IFtdOyBwbWRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtb2RfaWRlbnQgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKSB9XG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtb2RfZnVuY3RvciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9hcHBseSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF91bnBhY2sgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MCkgfVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5uYW1lICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbXR5X2lkZW50IHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MCkgfVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfd2l0aCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV90eXBlb2YgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgb3RhZyB4MCB4MSA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpIH1cbiAgICBsZXQgb2luaGVyaXQgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5leHByICB+b3ZlcnJpZGUgID1cbiAgICAgIHtcbiAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXJpYW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3JlY29yZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90eXBlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICB+bG51bSAgfmJvbCAgfmNudW0gID1cbiAgICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gbG51bTsgcG9zX2JvbCA9IGJvbDsgcG9zX2NudW0gPSBjbnVtIH1cbiAgICBsZXQgcnRhZyB4MCB4MSB4MiA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKSB9XG4gICAgbGV0IHJpbmhlcml0IHgwID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH1cbiAgICBsZXQgcHNpZ192YWx1ZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZSB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4geDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9ldmFsIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl92YWx1ZSB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl90eXBleHQgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24geDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfb3BlbiB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH1cbiAgICBsZXQgcHN0cl9jbGFzcyB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfaW5jbHVkZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWUgIH5hcmcgID1cbiAgICAgIHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH1cbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnBhcmFtcyAgfmNzdHJzICB+a2luZCAgfnByaXZhdGVfICB+bWFuaWZlc3QgXG4gICAgICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfnBhdGggIH5wYXJhbXMgIH5jb25zdHJ1Y3RvcnMgIH5wcml2YXRlXyAgPVxuICAgICAge1xuICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdmFsdWVfYmluZGluZyB+cGF0ICB+ZXhwciAgPVxuICAgICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gW107IHB2Yl9sb2MgPSBsb2MgfVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bmFtZSAgfnR5cGVfICB+cHJpbSAgPVxuICAgICAge1xuICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICB9XG4gIGVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IExvY2F0aW9uLnQgfVxuXG5sZXQgdHh0IHQgPSB0LnR4dFxubGV0IGxvYyB0ID0gdC5sb2NcbmxldCBtYWtlIH5sb2MgdHh0ID0geyBsb2M7IHR4dCB9XG5sZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBsb25naWRlbnQgPSBMaWRlbnQgb2Ygc3RyaW5nIHwgTGRvdCBvZiB0ICogc3RyaW5nIHwgTGFwcGx5IG9mIHQgKiB0XG5cbiAgbGV0IGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50ID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudF9jaGFyID0gZnVuY3Rpb25cbiAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICdfJyB8ICdcXCcnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50ID0gZnVuY3Rpb25cbiAgICB8IFwiYXNyXCIgfCBcImxhbmRcIiB8IFwibG9yXCIgfCBcImxzbFwiIHwgXCJsc3JcIiB8IFwibHhvclwiIHwgXCJtb2RcIiB8IFwib3JcIiAtPiBmYWxzZVxuICAgIHwgc3RyaW5nIC0+IFN0cmluZy5mb3JfYWxsIHN0cmluZyB+Zjppc19ub3JtYWxfaWRlbnRfY2hhclxuXG4gIGxldCBzaG9ydF9uYW1lIHN0cmluZyA9XG4gICAgaWYgaXNfbm9ybWFsX2lkZW50IHN0cmluZyB0aGVuIHN0cmluZyBlbHNlIFwiKCBcIiBeIHN0cmluZyBeIFwiIClcIlxuXG4gIGxldCByZWMgbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBMaWRlbnQgcyAtPiBzaG9ydF9uYW1lIHNcbiAgICB8IExkb3QgKGEsIGIpIC0+IG5hbWUgYSBeIFwiLlwiIF4gc2hvcnRfbmFtZSBiXG4gICAgfCBMYXBwbHkgKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJXMoJXMpXCIgKG5hbWUgYSkgKG5hbWUgYilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKG5hbWUgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHJlYyBmbGF0IGFjY3UgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHMgOjogYWNjdVxuICB8IExkb3QgKGxpZCwgcykgLT4gZmxhdCAocyA6OiBhY2N1KSBsaWRcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IGZsYXR0ZW5fZXhuIGxpZCA9IGZsYXQgW10gbGlkXG5cbmxldCBsYXN0X2V4biA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gc1xuICB8IExkb3QgKF8sIHMpIC0+IHNcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IHVuZmxhdHRlbiB+aW5pdCBsID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjooZnVuIGFjYyBzIC0+IExkb3QgKGFjYywgcykpXG5cbigqIGZvciBjYXNlcyB3aXRob3V0IGRvdHRlZCBvcGVyYXRvcnMgKGUuZy4gW3BhcnNlIFwiQS5CLkNcIl0pICopXG5sZXQgcGFyc2Vfc2ltcGxlIHMgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6Jy4nIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBzIDo6IGwgLT4gdW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbFxuXG4oKiBmaW5kIHRoZSBmaXJzdCBtYXRjaGluZyBwYWlyIG9mIHBhcmVudGhlc2VzICopXG5sZXQgcmVjIHBhcmVudGhlc2VzIGxwb3Mgb3BlbmVkIHBvcyBsZW4gcyA9XG4gIGlmIHBvcyA+PSBsZW4gdGhlbiBpZiBvcGVuZWQgPiAwIHRoZW4gRXJyb3IgKCkgZWxzZSBPayBOb25lXG4gIGVsc2VcbiAgICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgICB8ICcoJyAtPlxuICAgICAgICBsZXQgbHBvcyA9IGlmIG9wZW5lZCA9IDAgdGhlbiBwb3MgZWxzZSBscG9zIGluXG4gICAgICAgIHBhcmVudGhlc2VzIGxwb3MgKG9wZW5lZCArIDEpIChwb3MgKyAxKSBsZW4gc1xuICAgIHwgJyknIC0+XG4gICAgICAgIGxldCBvcGVuZWQgPSBvcGVuZWQgLSAxIGluXG4gICAgICAgIGlmIG9wZW5lZCA9IDAgdGhlbiBPayAoU29tZSAobHBvcywgcG9zKSlcbiAgICAgICAgZWxzZSBpZiBvcGVuZWQgPCAwIHRoZW4gRXJyb3IgKClcbiAgICAgICAgZWxzZSBwYXJlbnRoZXNlcyBscG9zIG9wZW5lZCAocG9zICsgMSkgbGVuIHNcbiAgICB8IF8gLT4gcGFyZW50aGVzZXMgbHBvcyBvcGVuZWQgKHBvcyArIDEpIGxlbiBzXG5cbigqIGhhbmRsZSBbXCJBLkIuKCsuKylcIl0gb3IgW1wiVmVjLiguJS4oKTwtKVwiXSAqKVxubGV0IHBhcnNlIHMgPVxuICBsZXQgaW52YWxpZCB2YXJpYW50ID1cbiAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJQcHhsaWIuTG9uZ2lkZW50LnBhcnNlKCVzKTogJVNcIiB2YXJpYW50IHMpXG4gIGluXG4gIGlmIFN0cmluZy5sZW5ndGggcyA8IDEgdGhlbiBpbnZhbGlkIFwiZW1wdHkgc3RyaW5nXCI7XG4gIGxldCBwYXIgPSBwYXJlbnRoZXNlcyAoLTEpIDAgMCAoU3RyaW5nLmxlbmd0aCBzKSBzIGluXG4gIG1hdGNoIChzLlswXSwgcGFyKSB3aXRoXG4gIHwgKCdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJ18nKSwgT2sgTm9uZSAtPiBwYXJzZV9zaW1wbGUgc1xuICB8IF8sIE9rIE5vbmUgLT4gTGlkZW50IHMgKCogVGhpcyBpcyBhIHJhdyBvcGVyYXRvciwgbm8gbW9kdWxlIHBhdGggKilcbiAgfCBfLCBFcnJvciBfIC0+IGludmFsaWQgXCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzXCJcbiAgfCBfLCBPayAoU29tZSAobCwgcikpIC0+IChcbiAgICAgIGlmIEludC4ociA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxKSB0aGVuXG4gICAgICAgIGludmFsaWQgXCJyaWdodCBwYXJlbnRoZXNpcyBtaXNwbGFjZWRcIjtcbiAgICAgIGxldCBncm91cCA9XG4gICAgICAgIGxldCBpbnNpZGUgPSBTdHJpbmcudHJpbSAoU3RyaW5nLnN1YiBzIH5wb3M6KGwgKyAxKSB+bGVuOihyIC0gbCAtIDEpKSBpblxuICAgICAgICBpZiBTdHJpbmcuKGluc2lkZSA9IFwiXCIpIHRoZW4gXCIoKVwiIGVsc2UgaW5zaWRlXG4gICAgICBpblxuICAgICAgaWYgSW50LihsID0gMCkgdGhlbiBMaWRlbnQgZ3JvdXBcbiAgICAgIGVsc2UgaWYgQ2hhci4ocy5bbCAtIDFdIDw+ICcuJykgdGhlbiBpbnZhbGlkIFwiYXBwbGljYXRpb24gaW4gcGF0aFwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KGwgLSAxKSBpblxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBiZWZvcmUgfnNlcDonLicgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHMgOjogbCAtPiBMZG90ICh1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsLCBncm91cCkpXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZSAoVClcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoVClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIExvYy50XG5cbiAgICBsZXQgbG9jICh4IDogXyB0KSA9IHgubG9jXG4gICAgbGV0IG1rIH5sb2MgeCA9IHsgbG9jOyB0eHQgPSB4IH1cbiAgICBsZXQgbWFwIGYgdCA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuICAgIGxldCBtYXBfbGlkZW50IHggPSBtYXAgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeFxuICAgIGxldCBsaWRlbnQgfmxvYyB4ID0gbWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHgpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1cblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSAtLS0tLSopXG4gIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jIGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdmJzIC0+IFsgcHN0cl92YWx1ZSB+bG9jIHJlY19mbGFnIHZicyBdXG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2M6XyB+bmFtZTpfIH5wYXJhbXM6XyB+Y3N0cnM6XyB+a2luZDpfXG4gICAgICB+cHJpdmF0ZV86XyB+bWFuaWZlc3Q6XyA9XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiUHB4bGliLkFzdF9idWlsZGVyLm5vbnJlY190eXBlX2RlY2xhcmF0aW9uOiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvblwiXG5cbiAgbGV0IGVpbnQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IGVjaGFyIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IGVzdHJpbmcgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgZWZsb2F0IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgZWludDMyIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgZWludDY0IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgZW5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBwaW50IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBwY2hhciB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBwc3RyaW5nIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IHBmbG9hdCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IHBpbnQzMiB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IHBpbnQ2NCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IHBuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgZWJvb2wgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBwYm9vbCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IGV2YXIgfmxvYyB2ID0gcGV4cF9pZGVudCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB2KSlcbiAgbGV0IHB2YXIgfmxvYyB2ID0gcHBhdF92YXIgfmxvYyAoTG9jYXRlZC5tayB+bG9jIHYpXG4gIGxldCBldW5pdCB+bG9jID0gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHB1bml0IH5sb2MgPSBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcGV4cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwdHlwX3R1cGxlIH5sb2MgbFxuXG4gIGxldCBwZXhwX3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBleHBfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwcGF0X3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5ID1cbiAgICBtYXRjaCB2YXJzIHdpdGggW10gLT4gdHkgfCBfIC0+IHB0eXBfcG9seSB+bG9jIHZhcnMgdHlcblxuICBsZXQgcGV4cF9hcHBseSB+bG9jIGUgZWwgPVxuICAgIG1hdGNoIChlLCBlbCkgd2l0aFxuICAgIHwgXywgW10gLT4gZVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSwgXyAtPlxuICAgICAgICB7IGUgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzIEAgZWwpIH1cbiAgICB8IF8gLT4gcGV4cF9hcHBseSB+bG9jIGUgZWxcblxuICBsZXQgZWFwcGx5IH5sb2MgZSBlbCA9XG4gICAgcGV4cF9hcHBseSB+bG9jIGUgKExpc3QubWFwIGVsIH5mOihmdW4gZSAtPiAoQXN0dHlwZXMuTm9sYWJlbCwgZSkpKVxuXG4gIGxldCBlYWJzdHJhY3QgfmxvYyBwcyBlID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgcHMgfmluaXQ6ZSB+ZjooZnVuIHAgZSAtPlxuICAgICAgICBwZXhwX2Z1biB+bG9jIEFzdHR5cGVzLk5vbGFiZWwgTm9uZSBwIGUpXG5cbiAgbGV0IGVzZXF1ZW5jZSB+bG9jIGVsID1cbiAgICBtYXRjaCBMaXN0LnJldiBlbCB3aXRoXG4gICAgfCBbXSAtPiBldW5pdCB+bG9jXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCB0bCB+aW5pdDpoZCB+ZjooZnVuIGFjYyBlIC0+IHBleHBfc2VxdWVuY2UgfmxvYyBlIGFjYylcblxuICBsZXQgcGNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgZWNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgcmVjIGVsaXN0X3RhaWwgfmxvYyBsIHRhaWwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gdGFpbFxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBleHBfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBleHBfdHVwbGUgfmxvYyBbIHg7IGVsaXN0X3RhaWwgfmxvYyBsIHRhaWwgXSkpXG5cbiAgbGV0IGVsaXN0IH5sb2MgbCA9XG4gICAgbGV0IHRhaWwgPVxuICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiW11cIikpIE5vbmVcbiAgICBpblxuICAgIGVsaXN0X3RhaWwgfmxvYyBsIHRhaWxcblxuICBsZXQgcmVjIHBsaXN0X3RhaWwgfmxvYyBsIHRhaWwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gdGFpbFxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBbIHg7IHBsaXN0X3RhaWwgfmxvYyBsIHRhaWwgXSkpXG5cbiAgbGV0IHBsaXN0IH5sb2MgbCA9XG4gICAgbGV0IHRhaWwgPVxuICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiW11cIikpIE5vbmVcbiAgICBpblxuICAgIHBsaXN0X3RhaWwgfmxvYyBsIHRhaWxcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSB+bG9jIChpZGVudCA6IExvbmdpZGVudC50KSB+ZiA9XG4gICAgbWF0Y2ggaWRlbnQgd2l0aFxuICAgIHwgTGlkZW50IG4gLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGlkZW50IChmIG4pOyBsb2MgfVxuICAgIHwgTGRvdCAocGF0aCwgbikgLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGRvdCAocGF0aCwgZiBuKTsgbG9jIH1cbiAgICB8IExhcHBseSBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5leHBlY3RlZCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVcIlxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IH5sb2M6YXBwbHlfbG9jIHsgTG9jLmxvYzsgdHh0ID0gbG9uZ2lkZW50IH0gfmYgYXJncyA9XG4gICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggKGxvbmdpZGVudCA6IExvbmdpZGVudC50KSB3aXRoXG4gICAgfCBMaWRlbnQgXyB8IExkb3QgKChMaWRlbnQgXyB8IExkb3QgXyksIF8pIHwgTGFwcGx5IF8gLT4gKFxuICAgICAgICBsZXQgaWRlbnQgPVxuICAgICAgICAgIHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgbG9uZ2lkZW50IH5sb2MgfmZcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gaWRlbnRcbiAgICAgICAgfCBfIDo6IF8gLT4gZWFwcGx5IH5sb2M6YXBwbHlfbG9jIGlkZW50IGFyZ3MpXG4gICAgfCBMZG90ICgoTGFwcGx5IF8gYXMgbW9kdWxlX3BhdGgpLCBuKSAtPlxuICAgICAgICBsZXQgc3VmZml4X24gZnVuY3Rvcl8gPSBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGZ1bmN0b3JfIF4gXCJfX1wiIF4gbiBpblxuICAgICAgICBsZXQgcmVjIGdhdGhlcl9sYXBwbHkgZnVuY3Rvcl9hcmdzIDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgKiBfID1cbiAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgTGFwcGx5IChyZXN0LCBhcmcpIC0+IGdhdGhlcl9sYXBwbHkgKGFyZyA6OiBmdW5jdG9yX2FyZ3MpIHJlc3RcbiAgICAgICAgICB8IExpZGVudCBmdW5jdG9yXyAtPiAoTGlkZW50IChzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgICB8IExkb3QgKGZ1bmN0b3JfcGF0aCwgZnVuY3Rvcl8pIC0+XG4gICAgICAgICAgICAgIChMZG90IChmdW5jdG9yX3BhdGgsIHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaWRlbnQsIGZ1bmN0b3JfYXJncyA9IGdhdGhlcl9sYXBwbHkgW10gbW9kdWxlX3BhdGggaW5cbiAgICAgICAgZWFwcGx5IH5sb2M6YXBwbHlfbG9jXG4gICAgICAgICAgKHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgaWRlbnQgfmxvYyB+ZilcbiAgICAgICAgICAoTGlzdC5tYXAgZnVuY3Rvcl9hcmdzIH5mOihmdW4gcGF0aCAtPlxuICAgICAgICAgICAgICAgcGV4cF9wYWNrIH5sb2MgKHBtb2RfaWRlbnQgfmxvYyB7IHR4dCA9IHBhdGg7IGxvYyB9KSlcbiAgICAgICAgICBAIGFyZ3MpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgbG9uZ2lkZW50IH5mID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGxvbmdpZGVudCB+bG9jIH5mIFtdXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPVxuICAgIGxldCByZWMgZ2F0aGVyX3BhcmFtcyBhY2MgZXhwciA9XG4gICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICBQZXhwX2Z1biAobGFiZWwsIE5vbmUgKCogbm8gZGVmYXVsdCBleHByZXNzaW9uICopLCBzdWJwYXQsIGJvZHkpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICB9IC0+IChcbiAgICAgICAgICBtYXRjaCBzdWJwYXQgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIE5vbmUpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB0eSApO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAoKiBXZSByZWR1Y2UgW2Z1biAoeCA6IHR5KSAtPiBmIHhdIGJ5IHJld3JpdGluZyBpdCBbKGYgOiB0eSAtPiBfKV0uICopXG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgU29tZSB0eSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpKVxuICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpXG4gICAgaW5cbiAgICBsZXQgYW5ub3RhdGUgfmxvYyBleHByIHBhcmFtcyA9XG4gICAgICBpZiBMaXN0LmV4aXN0cyBwYXJhbXMgfmY6KGZ1biAoXywgXywgdHkpIC0+IE9wdGlvbi5pc19zb21lIHR5KSB0aGVuXG4gICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHBhcmFtcyB+aW5pdDoocHR5cF9hbnkgfmxvYylcbiAgICAgICAgICAgIH5mOihmdW4gKHBhcmFtX2xhYmVsLCBwYXJhbSwgdHlfb3B0KSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9IHBhcmFtLmxvYyBpblxuICAgICAgICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHR5X29wdCB3aXRoIE5vbmUgLT4gcHR5cF9hbnkgfmxvYyB8IFNvbWUgdHkgLT4gdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcHR5cF9hcnJvdyB+bG9jIHBhcmFtX2xhYmVsIHR5IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgcGV4cF9jb25zdHJhaW50IH5sb2MgZXhwciB0eVxuICAgICAgZWxzZSBleHByXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhdGhlcl9hcmdzIG4geCA9XG4gICAgICBpZiBuID0gMCB0aGVuIFNvbWUgKHgsIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChib2R5LCBhcmdzKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBhcmdzIDw9IG4gdGhlblxuICAgICAgICAgICAgICBtYXRjaCBnYXRoZXJfYXJncyAobiAtIExpc3QubGVuZ3RoIGFyZ3MpIGJvZHkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKGJvZHksIGFyZ3MnKSAtPiBTb21lIChib2R5LCBhcmdzJyBAIGFyZ3MpXG4gICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGZ1biBleHByIC0+XG4gICAgICBsZXQgcGFyYW1zLCBib2R5ID0gZ2F0aGVyX3BhcmFtcyBbXSBleHByIGluXG4gICAgICBtYXRjaCBnYXRoZXJfYXJncyAoTGlzdC5sZW5ndGggcGFyYW1zKSBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IGFzIGZfaWRlbnQpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZm9yX2FsbDIgYXJncyBwYXJhbXNcbiAgICAgICAgICAgICAgfmY6KGZ1biAoYXJnX2xhYmVsLCBhcmcpIChwYXJhbV9sYWJlbCwgcGFyYW0sIF8pIC0+XG4gICAgICAgICAgICAgICAgUG9seS4oID0gKSAoYXJnX2xhYmVsIDogYXJnX2xhYmVsKSBwYXJhbV9sYWJlbFxuICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBuYW1lJzsgXyB9O1xuICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcuKCA9ICkgbmFtZScgcGFyYW0udHh0XG4gICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT4gU29tZSAoYW5ub3RhdGUgfmxvYzpleHByLnBleHBfbG9jIGZfaWRlbnQgcGFyYW1zKSlcbiAgICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwciA9IE9wdGlvbi52YWx1ZSAoZXRhX3JlZHVjZSBleHByKSB+ZGVmYXVsdDpleHByXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyBleHByIH5yZWNfZmxhZyA9XG4gICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgIHwgUmVjdXJzaXZlIC0+IGV4cHJcbiAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHJcbmVuZFxuXG5tb2R1bGUgdHlwZSBMb2MgPSBBc3RfYnVpbGRlcl9pbnRmLkxvY1xuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfaW50Zi5TXG5cbiAgbW9kdWxlIExhdGVzdCA6IHNpZ1xuICAgIHZhbCBwcGF0X2NvbnN0cnVjdCA6XG4gICAgICBsb25naWRlbnQgbG9jIC0+IChsYWJlbCBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICAgIHZhcnM6bGFiZWwgbG9jIGxpc3QgLT5cbiAgICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgZW5kXG5cbiAgdmFsIHBwYXRfY29uc3RydWN0IDogbG9uZ2lkZW50IGxvYyAtPiBwYXR0ZXJuIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuZW5kXG5cbm1vZHVsZSBNYWtlIChMb2MgOiBzaWdcbiAgdmFsIGxvYyA6IExvY2F0aW9uLnRcbmVuZCkgOiBTID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYylcblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYykgLS0tLS0qKVxuXG4gIGxldCBwcGF0X2NvbnN0cnVjdCBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0ID0gRGVmYXVsdC5wc3RyX3ZhbHVlX2xpc3RcblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfIH5tYW5pZmVzdCA9XG4gICAgRGVmYXVsdC5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlX1xuICAgICAgfm1hbmlmZXN0XG5cbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmF1bHQuTG9jYXRlZFxuXG4gICAgbGV0IGxvYyBfID0gTG9jLmxvY1xuICAgIGxldCBtayB4ID0gbWsgfmxvYzpMb2MubG9jIHhcbiAgICBsZXQgbGlkZW50IHggPSBsaWRlbnQgfmxvYzpMb2MubG9jIHhcbiAgZW5kXG5cbiAgbGV0IHBleHBfdHVwbGUgbCA9IERlZmF1bHQucGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgbCA9IERlZmF1bHQucHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgbCA9IERlZmF1bHQucHR5cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBleHBfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBleHBfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZV9vcHQgbCA9IERlZmF1bHQucHBhdF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwdHlwX3BvbHkgdmFycyB0eSA9IERlZmF1bHQucHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuICBsZXQgcGV4cF9hcHBseSBlIGVsID0gRGVmYXVsdC5wZXhwX2FwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWludCB0ID0gRGVmYXVsdC5laW50IH5sb2MgdFxuICBsZXQgZWNoYXIgdCA9IERlZmF1bHQuZWNoYXIgfmxvYyB0XG4gIGxldCBlc3RyaW5nIHQgPSBEZWZhdWx0LmVzdHJpbmcgfmxvYyB0XG4gIGxldCBlZmxvYXQgdCA9IERlZmF1bHQuZWZsb2F0IH5sb2MgdFxuICBsZXQgZWludDMyIHQgPSBEZWZhdWx0LmVpbnQzMiB+bG9jIHRcbiAgbGV0IGVpbnQ2NCB0ID0gRGVmYXVsdC5laW50NjQgfmxvYyB0XG4gIGxldCBlbmF0aXZlaW50IHQgPSBEZWZhdWx0LmVuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBlYm9vbCB0ID0gRGVmYXVsdC5lYm9vbCB+bG9jIHRcbiAgbGV0IGV2YXIgdCA9IERlZmF1bHQuZXZhciB+bG9jIHRcbiAgbGV0IHBpbnQgdCA9IERlZmF1bHQucGludCB+bG9jIHRcbiAgbGV0IHBjaGFyIHQgPSBEZWZhdWx0LnBjaGFyIH5sb2MgdFxuICBsZXQgcHN0cmluZyB0ID0gRGVmYXVsdC5wc3RyaW5nIH5sb2MgdFxuICBsZXQgcGZsb2F0IHQgPSBEZWZhdWx0LnBmbG9hdCB+bG9jIHRcbiAgbGV0IHBpbnQzMiB0ID0gRGVmYXVsdC5waW50MzIgfmxvYyB0XG4gIGxldCBwaW50NjQgdCA9IERlZmF1bHQucGludDY0IH5sb2MgdFxuICBsZXQgcG5hdGl2ZWludCB0ID0gRGVmYXVsdC5wbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgcGJvb2wgdCA9IERlZmF1bHQucGJvb2wgfmxvYyB0XG4gIGxldCBwdmFyIHQgPSBEZWZhdWx0LnB2YXIgfmxvYyB0XG4gIGxldCBldW5pdCA9IERlZmF1bHQuZXVuaXQgfmxvY1xuICBsZXQgcHVuaXQgPSBEZWZhdWx0LnB1bml0IH5sb2NcbiAgbGV0IGVjb25zdHJ1Y3QgPSBEZWZhdWx0LmVjb25zdHJ1Y3RcbiAgbGV0IHBjb25zdHJ1Y3QgPSBEZWZhdWx0LnBjb25zdHJ1Y3RcbiAgbGV0IGVhcHBseSBlIGVsID0gRGVmYXVsdC5lYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlYWJzdHJhY3QgcHMgZSA9IERlZmF1bHQuZWFic3RyYWN0IH5sb2MgcHMgZVxuICBsZXQgZXNlcXVlbmNlIGVsID0gRGVmYXVsdC5lc2VxdWVuY2UgfmxvYyBlbFxuICBsZXQgZWxpc3RfdGFpbCBsIHRhaWwgPSBEZWZhdWx0LmVsaXN0X3RhaWwgfmxvYyBsIHRhaWxcbiAgbGV0IHBsaXN0X3RhaWwgbCB0YWlsID0gRGVmYXVsdC5wbGlzdF90YWlsIH5sb2MgbCB0YWlsXG4gIGxldCBlbGlzdCBsID0gRGVmYXVsdC5lbGlzdCB+bG9jIGxcbiAgbGV0IHBsaXN0IGwgPSBEZWZhdWx0LnBsaXN0IH5sb2MgbFxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IGlkZW50IH5mIGFyZ3MgPVxuICAgIERlZmF1bHQudHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mIGFyZ3NcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgPVxuICAgIERlZmF1bHQudW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZlxuXG4gIGxldCBldGFfcmVkdWNlID0gRGVmYXVsdC5ldGFfcmVkdWNlXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlID0gRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyA9XG4gICAgRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbmVuZFxuXG5sZXQgbWFrZSBsb2MgPVxuICAobW9kdWxlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBsb2MgPSBsb2NcbiAgZW5kKSA6IFMpXG4iLCIoKiogU21hbGwgaGVscGVyIHRvIGZpbmQgb3V0IHdobyBpcyB0aGUgY2FsbGVyIG9mIGEgZnVuY3Rpb24gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgUHJpbnRleGMgPSBTdGRsaWIuUHJpbnRleGNcblxudHlwZSB0ID0gUHJpbnRleGMubG9jYXRpb24gb3B0aW9uXG5cbmxldCBnZXQgfnNraXAgPVxuICBsZXQgc2tpcCA9IF9fRklMRV9fIDo6IHNraXAgaW5cbiAgbGV0IHN0YWNrID0gUHJpbnRleGMuZ2V0X2NhbGxzdGFjayAxNiBpblxuICBsZXQgbGVuID0gUHJpbnRleGMucmF3X2JhY2t0cmFjZV9sZW5ndGggc3RhY2sgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Qgc3RhY2sgcG9zXG4gICAgICAgIHw+IFByaW50ZXhjLmNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IHw+IFByaW50ZXhjLlNsb3QubG9jYXRpb25cbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgbG9jIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gfnNldDpza2lwIGxvYy5maWxlbmFtZSB0aGVuIGxvb3AgKHBvcyArIDEpIGVsc2UgU29tZSBsb2NcbiAgaW5cbiAgbG9vcCAwXG4iLCIoKiogSGVscGVycyB0byBwcm92aWRlIGhpbnRzIHRvIFBQWCB1c2VycyBmb3IgdHlwb3Mgb3Igc3BlbGxjaGVja3MuICopXG5cbm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gQ3V0b2ZmX21ldFxuXG4oKiBBcyBmb3VuZCBoZXJlIGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9MZXZlbnNodGVpbl9kaXN0YW5jZSNPQ2FtbCAqKVxubGV0IGxldmVuc2h0ZWluX2Rpc3RhbmNlIHMgdCBjdXRvZmYgPVxuICBsZXQgbSA9IFN0cmluZy5sZW5ndGggcyBhbmQgbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICBpZiBjdXRvZmYgPSAwIHx8IGFicyAobSAtIG4pID49IGN1dG9mZiB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIGZvciBhbGwgaSBhbmQgaiwgZC4oaSkuKGopIHdpbGwgaG9sZCB0aGUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiB0aGVcbiAgICAgICBmaXJzdCBpIGNoYXJhY3RlcnMgb2YgcyBhbmQgdGhlIGZpcnN0IGogY2hhcmFjdGVycyBvZiB0ICopXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlX21hdHJpeCB+ZGlteDoobSArIDEpIH5kaW15OihuICsgMSkgMCBpblxuICAgIGZvciBpID0gMCB0byBtIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IGZpcnN0IHN0cmluZyB0byBhbiBlbXB0eSBzZWNvbmQgc3RyaW5nICopXG4gICAgICBkLihpKS4oMCkgPC0gaVxuICAgIGRvbmU7XG4gICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgc2Vjb25kIHN0cmluZyB0byBhbiBlbXB0eSBmaXJzdCBzdHJpbmcgKilcbiAgICAgIGQuKDApLihqKSA8LSBqXG4gICAgZG9uZTtcbiAgICAoKiB0aGUgbWluaW11bSBvZiBlYWNoIGxpbmUgdG9nZXRoZXIgd2l0aCB0aGUgY29sdW1uIGluZGV4IHdpbGwgYmUgdXNlZFxuICAgICAgIHRvIG5vdGljZSBjdXRvZmYgZXhjZWVkaW5nIGFuZCByZXR1cm4gZWFybHkgaW4gdGhhdCBjYXNlICopXG4gICAgbGV0IGxpbmVfbWluID0gcmVmIDAgaW5cbiAgICBsZXQgZGlzdGFuY2UgPVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMSB0byBuIGRvXG4gICAgICAgICAgaWYgIWxpbmVfbWluID49IGN1dG9mZiAtIDEgJiYgaiA+PSBjdXRvZmYgLSAxIHRoZW4gcmFpc2UgQ3V0b2ZmX21ldDtcbiAgICAgICAgICBsaW5lX21pbiA6PSBtYXggbSBuO1xuICAgICAgICAgIGZvciBpID0gMSB0byBtIGRvXG4gICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICBpZiBDaGFyLmVxdWFsIHMuW2kgLSAxXSB0LltqIC0gMV0gdGhlbiBkLihpIC0gMSkuKGogLSAxKVxuICAgICAgICAgICAgICAgICgqIG5vIG9wZXJhdGlvbiByZXF1aXJlZCAqKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWluXG4gICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqKSArIDEpICgqIGEgZGVsZXRpb24gKilcbiAgICAgICAgICAgICAgICAgIChtaW5cbiAgICAgICAgICAgICAgICAgICAgIChkLihpKS4oaiAtIDEpICsgMSkgKCogYW4gaW5zZXJ0aW9uICopXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqIC0gMSkgKyAxKSAoKiBhIHN1YnN0aXR1dGlvbiAqKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBkLihpKS4oaikgPC0gdmFsdWU7XG4gICAgICAgICAgICBsaW5lX21pbiA6PSBtaW4gIWxpbmVfbWluIHZhbHVlXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lO1xuICAgICAgICBpZiBkLihtKS4obikgPCBjdXRvZmYgdGhlbiBTb21lIGQuKG0pLihuKSBlbHNlIE5vbmVcbiAgICAgIHdpdGggQ3V0b2ZmX21ldCAtPiBOb25lXG4gICAgaW5cbiAgICBkaXN0YW5jZVxuXG5sZXQgc3BlbGxjaGVjayBuYW1lcyBuYW1lID1cbiAgbGV0IGN1dG9mZiA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBuYW1lIHdpdGhcbiAgICB8IDEgfCAyIC0+IDBcbiAgICB8IDMgfCA0IC0+IDFcbiAgICB8IDUgfCA2IC0+IDJcbiAgICB8IF8gLT4gM1xuICBpblxuICBsZXQgXywgc3VnZ2VzdGlvbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0IG5hbWVzIH5pbml0OihJbnQubWF4X2ludCwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKChiZXN0X2Rpc3RhbmNlLCBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSBhcyBhY2MpIHJlZ2lzdGVyZWRfbmFtZSAtPlxuICAgICAgICBtYXRjaCBsZXZlbnNodGVpbl9kaXN0YW5jZSBuYW1lIHJlZ2lzdGVyZWRfbmFtZSBjdXRvZmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgICBpZiBkaXN0IDwgYmVzdF9kaXN0YW5jZSB0aGVuIChkaXN0LCBbIHJlZ2lzdGVyZWRfbmFtZSBdKVxuICAgICAgICAgICAgZWxzZSBpZiBkaXN0ID4gYmVzdF9kaXN0YW5jZSB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoZGlzdCwgcmVnaXN0ZXJlZF9uYW1lIDo6IG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpKVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBzdWdnZXN0aW9ucyB8PiBMaXN0LmZpbHRlciB+ZjooU3RyaW5nLiggPD4gKSBuYW1lKSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGxhc3QgOjogcmV2X3Jlc3QgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiSGludDogRGlkIHlvdSBtZWFuICVzJXMlcz9cIlxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5yZXYgcmV2X3Jlc3QpKVxuICAgICAgICAgICAoaWYgTGlzdC5pc19lbXB0eSByZXZfcmVzdCB0aGVuIFwiXCIgZWxzZSBcIiBvciBcIilcbiAgICAgICAgICAgbGFzdClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mID1cbiAgbGV0IHJlYyBjb2xsYXBzZV9hZnRlcl9hdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBpZiAobm90IChTdHJpbmcuaXNfZW1wdHkgcGFydCkpICYmIENoYXIuZXF1YWwgcGFydC5bMF0gJ0AnIHRoZW5cbiAgICAgICAgICBbIFN0cmluZy5jb25jYXQgKFN0cmluZy5kcm9wX3ByZWZpeCBwYXJ0IDEgOjogcGFydHMpIH5zZXA6XCIuXCIgXVxuICAgICAgICBlbHNlIHBhcnQgOjogY29sbGFwc2VfYWZ0ZXJfYXQgcGFydHNcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBwYXJ0cyA9XG4gICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGxvb3AgKGYgKFN0cmluZy5jb25jYXQgKHBhcnQgOjogcGFydHMpIH5zZXA6XCIuXCIpIGFjYykgcGFydHNcbiAgaW5cbiAgU3RyaW5nLnNwbGl0X29uX2NoYXIgbmFtZSB+c2VwOicuJyB8PiBjb2xsYXBzZV9hZnRlcl9hdCB8PiBsb29wIGFjY1xuXG5sZXQgZG90X3N1ZmZpeGVzIG5hbWUgPVxuICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OltdIH5mOihmdW4geCBhY2MgLT4geCA6OiBhY2MpXG5cbmxldCBzcGxpdF9wYXRoID1cbiAgbGV0IHJlYyBsb29wIHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKSB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgYW5kIGFmdGVyX2RvdCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdBJyAuLiAnWicgLT4gKFN0cmluZy5wcmVmaXggcyAoaSAtIDEpLCBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggcyBpKSlcbiAgICAgIHwgJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSlcbiAgICAgIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBpblxuICBmdW4gcyAtPiBsb29wIHMgMFxuXG5tb2R1bGUgUGF0dGVybiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG5hbWUgOiBzdHJpbmc7IGRvdF9zdWZmaXhlcyA6IFN0cmluZy5TZXQudCB9XG5cbiAgbGV0IG1ha2UgbmFtZSA9XG4gICAgeyBuYW1lOyBkb3Rfc3VmZml4ZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKGRvdF9zdWZmaXhlcyBuYW1lKSB9XG5cbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgbWF0Y2hlcyB0IG1hdGNoZWQgPSBTdHJpbmcuU2V0Lm1lbSBtYXRjaGVkIHQuZG90X3N1ZmZpeGVzXG5lbmRcblxuKCogT24gdGhlIG5hbWVzcGFjZSBcImEuTkFNRVNQQUNFXCIsIHJldHVybiB0aGUgcGFpciAoXCJhXCIsIE5BTUVTUEFDRSkgKilcbmxldCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSA9XG4gIG1hdGNoIFN0cmluZy5pbmRleF9vcHQgbmFtZSAnLicgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgaW5cbiAgICAgIGxldCBiZWZvcmVfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6MCB+bGVuOmkgaW5cbiAgICAgIGxldCBhZnRlcl9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczooaSArIDEpIH5sZW46KG4gLSBpIC0gMSkgaW5cbiAgICAgIFNvbWUgKGJlZm9yZV9kb3QsIGFmdGVyX2RvdClcblxubW9kdWxlIEFsbG93bGlzdGVkID0gc3RydWN0XG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBhcyB3ZWxsIGFzIGFsbCB0aGVpciBkb3Qgc3VmZml4ZXMuXG5cbiAgICAgU2luY2UgdGhlc2UgYXR0cmlidXRlcyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuXG4gICAgIFNhZGx5LCB0aGUgY29tcGlsZXIgc2lsZW50bHkgaWdub3JlcyB0aGVtIGlmIHRoZXkgYXJlIG1pc3BsYWNlZC4uLlxuICAqKVxuICBsZXQgY3JlYXRlX3NldCBmdWxseV9xdWFsaWZpZWRfbmFtZXMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICB+ZjooZnVuIGFjYyBuYW1lIC0+XG4gICAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mOihmdW4geCBhY2MgLT4gU3RyaW5nLlNldC5hZGQgeCBhY2MpKVxuICAgICAgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSBmdWxseV9xdWFsaWZpZWRfbmFtZXNcblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgY3JlYXRlX3NldFxuICAgICAgW1xuICAgICAgICBcIm9jYW1sLmFsZXJ0XCI7XG4gICAgICAgIFwib2NhbWwuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZF9tdXRhYmxlXCI7XG4gICAgICAgIFwib2NhbWwuZG9jXCI7XG4gICAgICAgIFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlNjRcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVkXCI7XG4gICAgICAgIFwib2NhbWwubG9jYWxcIjtcbiAgICAgICAgXCJvY2FtbC5ub2FsbG9jXCI7XG4gICAgICAgIFwib2NhbWwucHB3YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwucmVtb3ZlX2FsaWFzZXNcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZWRcIjtcbiAgICAgICAgXCJvY2FtbC50YWlsY2FsbFwiO1xuICAgICAgICBcIm9jYW1sLnRleHRcIjtcbiAgICAgICAgXCJvY2FtbC51bmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnRhZ2dlZFwiO1xuICAgICAgICBcIm9jYW1sLndhcm5fb25fbGl0ZXJhbF9wYXR0ZXJuXCI7XG4gICAgICAgIFwib2NhbWwud2FybmVycm9yXCI7XG4gICAgICAgIFwib2NhbWwud2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICAgIFwidG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgIF1cblxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9ucy5cblxuICAgICBTaW5jZSB0aGVzZSBleHRlbnNpb25zIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG4gICopXG4gIGxldCBleHRlbnNpb25zID0gY3JlYXRlX3NldCBbIFwib2NhbWwuZXJyb3JcIjsgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIiBdXG5cbiAgbGV0IGlzX2FsbG93bGlzdGVkIH5raW5kIG5hbWUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEF0dHJpYnV0ZSAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGF0dHJpYnV0ZXNcbiAgICB8IGBFeHRlbnNpb24gLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBleHRlbnNpb25zXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgYXR0cmlidXRlc1xuICBsZXQgZ2V0X2V4dGVuc2lvbl9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBleHRlbnNpb25zXG5lbmRcblxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBzdHJ1Y3RcbiAgdHlwZSByZXNlcnZlZCA9IChzdHJpbmcsIHN1Yl9uYW1lc3BhY2VzKSBIYXNodGJsLnRcbiAgYW5kIHN1Yl9uYW1lc3BhY2VzID0gQWxsIHwgU3ViX25hbWVzcGFjZXMgb2YgcmVzZXJ2ZWRcblxuICAoKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbQWxsXSwgdGhlbiBcInhcIiBhbmQgYWxsIHBhdGhzIHRoYXRcbiAgICogc3RhcnQgd2l0aCBcInguXCIgYXJlIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsXVxuICAgKlxuICAgKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbU3ViX25hbWVzcGFjZXMgdGJsJ10sIGFuZCBQIGlzXG4gICAqIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsJ10sIHRoZW4gYWxsIHBhdGhzIFwieC5QXCIgYXJlIHJlc2VydmVkIHdpdGhcbiAgICogcmVzcGVjdCB0byBbdGJsXS5cbiAgICopXG4gIGxldCBjcmVhdGVfcmVzZXJ2ZWQgKCkgOiByZXNlcnZlZCA9IEhhc2h0YmwuY3JlYXRlIDE2XG5cbiAgbGV0IHJlYyByZXNlcnZlIG5zIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5zIHdpdGhcbiAgICB8IE5vbmUgLT4gSGFzaHRibC5hZGRfZXhuIHRibCB+a2V5Om5zIH5kYXRhOkFsbFxuICAgIHwgU29tZSAob3V0ZXJfbnMsIHJlc3RfbnMpIC0+IChcbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHRibCBvdXRlcl9ucyB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgICAgICAgIFN1Yl9uYW1lc3BhY2VzIChjcmVhdGVfcmVzZXJ2ZWQgKCkpKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU3ViX25hbWVzcGFjZXMgcmVzdF90YmwgLT4gcmVzZXJ2ZSByZXN0X25zIHJlc3RfdGJsXG4gICAgICAgIHwgQWxsIC0+ICgpKVxuXG4gIGxldCByZWMgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgd2l0aFxuICAgIHwgU29tZSAobnMsIHJlc3QpIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbnMgd2l0aFxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsKSAtPlxuICAgICAgICAgICAgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyByZXN0IHJlc3RfdGJsXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2UpXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIF8pIHwgTm9uZSAtPiBmYWxzZSlcblxuICBsZXQgdGJsID0gY3JlYXRlX3Jlc2VydmVkICgpXG4gIGxldCByZXNlcnZlIG5zID0gcmVzZXJ2ZSBucyB0YmxcbiAgbGV0IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSA9IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmxcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1lcmxpblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWFzb25cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVmbXRcIiAoKiByZWFzb24gKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm5zXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXRhb2NhbWxcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwib2NhbWxmb3JtYXRcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicHB4bGliLm1pZ3JhdGlvblwiXG5cbiAgbGV0IGNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lID1cbiAgICBsZXQga2luZCwgbGlzdCA9XG4gICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIHwgYEF0dHJpYnV0ZSAtPiAoXCJhdHRyaWJ1dGVcIiwgQWxsb3dsaXN0ZWQuYXR0cmlidXRlcylcbiAgICAgIHwgYEV4dGVuc2lvbiAtPiAoXCJleHRlbnNpb25cIiwgQWxsb3dsaXN0ZWQuZXh0ZW5zaW9ucylcbiAgICBpblxuICAgIGlmIFN0cmluZy5TZXQubWVtIG5hbWUgbGlzdCB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXQgbWF0Y2hlcyBhbiAlcyByZXNlcnZlZCBieSB0aGUgXFxcbiAgICAgICAgIGNvbXBpbGVyXCJcbiAgICAgICAga2luZCBuYW1lIGtpbmRcbiAgICBlbHNlIGlmIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXRzIG5hbWVzcGFjZSBpcyBtYXJrZWQgYXMgXFxcbiAgICAgICAgIHJlc2VydmVkXCJcbiAgICAgICAga2luZCBuYW1lXG5lbmRcblxubGV0IGlnbm9yZV9jaGVja3MgbmFtZSA9XG4gIFJlc2VydmVkX25hbWVzcGFjZXMuaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lXG4gIHx8IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OlwiX1wiXG5cbm1vZHVsZSBSZWdpc3RyYXIgPSBzdHJ1Y3RcbiAgdHlwZSBlbGVtZW50ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA6IHN0cmluZzsgZGVjbGFyZWRfYXQgOiBDYWxsZXJfaWQudCB9XG4gIHR5cGUgYWxsX2Zvcl9jb250ZXh0ID0geyBtdXRhYmxlIGFsbCA6IGVsZW1lbnQgU3RyaW5nLk1hcC50IH1cblxuICB0eXBlICdhIHQgPSB7XG4gICAgYWxsX2J5X2NvbnRleHQgOiAoJ2EsIGFsbF9mb3JfY29udGV4dCkgSGFzaHRibC50O1xuICAgIHNraXAgOiBzdHJpbmcgbGlzdDtcbiAgICBraW5kIDogc3RyaW5nO1xuICAgIHN0cmluZ19vZl9jb250ZXh0IDogJ2EgLT4gc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfmtpbmQgfmN1cnJlbnRfZmlsZSB+c3RyaW5nX29mX2NvbnRleHQgPVxuICAgIHtcbiAgICAgIGFsbF9ieV9jb250ZXh0ID0gSGFzaHRibC5jcmVhdGUgMTY7XG4gICAgICBza2lwID0gWyBjdXJyZW50X2ZpbGU7IF9fRklMRV9fIF07XG4gICAgICBraW5kO1xuICAgICAgc3RyaW5nX29mX2NvbnRleHQ7XG4gICAgfVxuXG4gIGxldCBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCA9XG4gICAgSGFzaHRibC5maW5kX29yX2FkZCB0LmFsbF9ieV9jb250ZXh0IGNvbnRleHQgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICB7IGFsbCA9IFN0cmluZy5NYXAuZW1wdHkgfSlcblxuICBsZXQgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWUgPVxuICAgIG1hdGNoIFN0cmluZy5NYXAuZmluZF9vcHQgbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgICBsZXQgZGVjbGFyZWRfYXQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsb2MgOiBTdGRsaWIuUHJpbnRleGMubG9jYXRpb24pIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiIGRlY2xhcmVkIGF0ICVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuICAgICAgICBpblxuICAgICAgICBsZXQgY29udGV4dCA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBzIC0+IFwiIG9uIFwiIF4gcyBeIFwic1wiXG4gICAgICAgIGluXG4gICAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICAgIFwiU29tZSBwcHgtZXMgdHJpZWQgdG8gcmVnaXN0ZXIgY29uZmxpY3RpbmcgdHJhbnNmb3JtYXRpb25zOiAlcyBcXFxuICAgICAgICAgICAnJXMnJXMlcyBtYXRjaGVzICVzICclcyclc1wiXG4gICAgICAgICAgKFN0cmluZy5jYXBpdGFsaXplX2FzY2lpIHQua2luZClcbiAgICAgICAgICBuYW1lIGNvbnRleHQgKGRlY2xhcmVkX2F0IGNhbGxlcikgdC5raW5kIGUuZnVsbHlfcXVhbGlmaWVkX25hbWVcbiAgICAgICAgICAoZGVjbGFyZWRfYXQgZS5kZWNsYXJlZF9hdClcblxuICBsZXQgY2hlY2tfY29sbGlzaW9ucyB0IGNvbnRleHQgbmFtZSA9XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWVcblxuICBsZXQgcmVnaXN0ZXIgfmtpbmQgdCBjb250ZXh0IG5hbWUgPVxuICAgIFJlc2VydmVkX25hbWVzcGFjZXMuY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWU7XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQ6YWxsIHQgY29udGV4dCBuYW1lO1xuICAgIGxldCB0ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA9IG5hbWU7IGRlY2xhcmVkX2F0ID0gY2FsbGVyIH0gaW5cbiAgICBhbGwuYWxsIDwtXG4gICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFsbC5hbGwgfmY6KGZ1biBuYW1lIGFjYyAtPlxuICAgICAgICAgIFN0cmluZy5NYXAuYWRkIG5hbWUgdCBhY2MpXG5cbiAgbGV0IHNwZWxsY2hlY2sgdCBjb250ZXh0ID8oYWxsb3dsaXN0ID0gW10pIG5hbWUgPVxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGxldCBhbGwgPVxuICAgICAgU3RyaW5nLk1hcC5mb2xkIChmdW4ga2V5IF8gYWNjIC0+IGtleSA6OiBhY2MpIGFsbF9mb3JfY29udGV4dC5hbGwgW11cbiAgICBpblxuICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoYWxsIEAgYWxsb3dsaXN0KSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgXyBhcyB4IC0+IHhcbiAgICB8IE5vbmUgd2hlbiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgLT4gTm9uZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIGxldCBvdGhlcl9jb250ZXh0cyA9XG4gICAgICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgICAgICAoZnVuIGN0eCBhbGxfZnJvbV9jb250ZXh0IGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIFBvbHkuKCA8PiApIGNvbnRleHQgY3R4XG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZnJvbV9jb250ZXh0LmFsbFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjdHggd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPiAocyBeIFwic1wiKSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZSBhY2MpXG4gICAgICAgICAgICB0LmFsbF9ieV9jb250ZXh0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcF90ZXh0ID0gRm9ybWF0LnBwX3ByaW50X3RleHQgaW5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29udGV4dCBwcGYgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgbGV0IGFfb3JfYW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyB8ICd5JyAtPiBcImFuXCJcbiAgICAgICAgICAgICAgICB8IF8gLT4gXCJhXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgICAgICAgICAgXCJAIGJ1dEAgaXNAIHVzZWRAIGhlcmVAIGluQCB0aGVAIGNvbnRleHRAIG9mQCAlc0AgJWFcIiBhX29yX2FuXG4gICAgICAgICAgICAgICAgcHBfdGV4dCBzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5zb3J0IH5jbXA6KGZ1biB4IHkgLT4gLVN0cmluZy5jb21wYXJlIHggeSkgb3RoZXJfY29udGV4dHNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgfCBbIGMgXSAtPlxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZSBwcF90ZXh0IGNcbiAgICAgICAgICAgICAgICAgY3VycmVudF9jb250ZXh0KVxuICAgICAgICB8IGxhc3QgOjogcmV2X290aGVycyAtPlxuICAgICAgICAgICAgbGV0IG90aGVycyA9IExpc3QucmV2IHJldl9vdGhlcnMgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWFAIGFuZEAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWVcbiAgICAgICAgICAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IHBwX3RleHQgfnBwX3NlcDooZnVuIHBwZiAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKSlcbiAgICAgICAgICAgICAgICAgb3RoZXJzIHBwX3RleHQgbGFzdCBjdXJyZW50X2NvbnRleHQpKVxuXG4gIG1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICAgICgqIFRPRE86IGhpbnQgc3BlbGxpbmcgZXJyb3JzIHJlZ2FyZGluZyByZXNlcnZlZCBuYW1lc3BhY2VzIG5hbWVzIGFuZCBhbGxvd2xpc3RlZFxuICAgICAgIG5hbWVzIGluc3RlYWQgb2YgdGFraW5nIGFuIG9wdGlvbmFsIFthbGxvd2xpc3RdIHBhcmFtZXRlci4gKilcbiAgICBsZXQgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAoZnVuIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIHNwZWxsY2hlY2sgdCBjb250ZXh0IG5hbWUudHh0ID9hbGxvd2xpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlc1wiIG1zZ1xuICAgICAgICAgIHwgU29tZSBzIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzLlxcbiVzXCIgbXNnIHMpXG4gICAgICAgIGZtdCBuYW1lLnR4dFxuXG4gICAgbGV0IHJhaXNlX2Vycm9yZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnJhaXNlIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcblxuICAgIGxldCBlcnJvcl9leHRlbnNpb25mIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcbiAgZW5kXG5cbiAgbGV0IHJhaXNlX2Vycm9yZiA9IEVycm9yLnJhaXNlX2Vycm9yZlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEJ1ZmZlciA9IFN0ZGxpYi5CdWZmZXJcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBsaWRlbnQgeCA9IExvbmdpZGVudC5MaWRlbnQgeFxuXG5sZXQgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgPVxuICBsZXQgbG9jID0gdGQucHR5cGVfbmFtZS5sb2MgaW5cbiAgcHR5cF9jb25zdHIgfmxvY1xuICAgIChMb2NhdGVkLm1hcCBsaWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAoTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmZzdClcblxubGV0IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4ID1cbiAgbGV0IGNob3AgbiB+b3JfbW9yZSBzdHJpbmcgcG9zIGYgPVxuICAgIGxldCB0YXJnZXQgPSAhcG9zIC0gbiBpblxuICAgIHdoaWxlICFwb3MgPiAwICYmIChvcl9tb3JlIHx8ICFwb3MgPiB0YXJnZXQpICYmIGYgc3RyaW5nLlshcG9zIC0gMV0gZG9cbiAgICAgIHBvcyA6PSAhcG9zIC0gMVxuICAgIGRvbmU7XG4gICAgIXBvcyA8PSB0YXJnZXRcbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIGxldCBwb3MgPSByZWYgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGlmXG4gICAgICBjaG9wIDEgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgICAmJiBjaG9wIDMgfm9yX21vcmU6dHJ1ZSBzdHJpbmcgcG9zIChmdW5jdGlvblxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiBjaG9wIDIgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgdGhlbiBTdHJpbmcucHJlZml4IHN0cmluZyAhcG9zXG4gICAgZWxzZSBzdHJpbmdcblxubGV0IGdlbl9zeW1ib2wgPVxuICBsZXQgY250ID0gcmVmIDAgaW5cbiAgZnVuID8ocHJlZml4ID0gXCJfeFwiKSAoKSAtPlxuICAgIGNudCA6PSAhY250ICsgMTtcbiAgICBsZXQgcHJlZml4ID0gc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggcHJlZml4IGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlc19fJTAzaV9cIiBwcmVmaXggIWNudFxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOlxuICAgICh0eXBlX2RlY2xhcmF0aW9uLCBfKSByZXN1bHQgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IHByZWZpeF9zdHJpbmcgaSA9XG4gICAgKCogYSwgYiwgLi4uLCB5LCB6LCBhYSwgYmIsIC4uLiAqKVxuICAgIFN0cmluZy5tYWtlICgoaSAvIDI2KSArIDEpIChDaGFyLmNociAoQ2hhci5jb2RlICdhJyArIChpIG1vZCAyNikpKVxuICBpblxuICBsZXQgbmFtZV9wYXJhbSBpICh0cCwgdmFyaWFuY2UpID1cbiAgICAobWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IE9rIChQdHlwX3ZhciAoZ2VuX3N5bWJvbCB+cHJlZml4OihwcmVmaXhfc3RyaW5nIGkpICgpKSlcbiAgICB8IFB0eXBfdmFyIF8gYXMgdiAtPiBPayB2XG4gICAgfCBfIC0+XG4gICAgICAgIEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6dHAucHR5cF9sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiKSlcbiAgICA+PnwgZnVuIHB0eXBfZGVzYyAtPiAoeyB0cCB3aXRoIHB0eXBfZGVzYyB9LCB2YXJpYW5jZSlcbiAgaW5cbiAgbGV0IHB0eXBlX3BhcmFtcywgZXJyb3JzID1cbiAgICB0ZC5wdHlwZV9wYXJhbXMgfD4gTGlzdC5tYXBpIH5mOm5hbWVfcGFyYW1cbiAgICB8PiBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE9rIG8gLT4gRWl0aGVyLkxlZnQgb1xuICAgICAgICAgfCBFcnJvciBlIC0+IEVpdGhlci5SaWdodCBlKVxuICBpblxuICBtYXRjaCBlcnJvcnMgd2l0aCBbXSAtPiBPayB7IHRkIHdpdGggcHR5cGVfcGFyYW1zIH0gfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpXG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDogdHlwZV9kZWNsYXJhdGlvbiA9XG4gIG1hdGNoIG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzIHRkIHdpdGhcbiAgfCBPayByZXMgLT4gcmVzXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+ZiA9XG4gIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgbGV0IHJlc3VsdF90eXBlID1cbiAgICBmIH5sb2M6dGQucHR5cGVfbmFtZS5sb2MgKGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkKVxuICBpblxuICBMaXN0LmZvbGRfcmlnaHQgdGQucHR5cGVfcGFyYW1zIH5pbml0OnJlc3VsdF90eXBlXG4gICAgfmY6KGZ1biAodHAsIF92YXJpYW5jZSkgYWNjIC0+XG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIHB0eXBfYXJyb3cgfmxvYyBOb2xhYmVsIChmIH5sb2MgdHApIGFjYylcblxubGV0IHN0cmluZ19vZl9jb3JlX3R5cGUgY3QgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBQcHJpbnRhc3QuY29yZV90eXBlIHBwZiBjdDtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgKHR5LCBfKSA9XG4gIGxldCBsb2MgPSB0eS5wdHlwX2xvYyBpblxuICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICB8IFB0eXBfdmFyIG5hbWUgLT4gT2sgKExvY2F0ZWQubWsgfmxvYyBuYW1lKVxuICB8IF8gLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIsIFtdKVxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZSB0ID1cbiAgbWF0Y2ggZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgdCB3aXRoXG4gIHwgT2sgZSAtPiBlXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG5jbGFzcyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcbiAgICB2YWwgdHlwZV9uYW1lcyA6IHN0cmluZyBsaXN0ID0gTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpXG4gICAgbWV0aG9kIHJldHVybl90cnVlICgpID0gcmFpc2Vfbm90cmFjZSBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hcnJvdyBfIC0+ICgpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgaWQ7IF8gfSwgXylcbiAgICAgICAgd2hlbiBMaXN0Lm1lbSB+c2V0OnR5cGVfbmFtZXMgaWQgLT5cbiAgICAgICAgICBzZWxmI3JldHVybl90cnVlICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkID1cbiAgICAgICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBjZC5wY2RfcmVzICopXG4gICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICB8IFBjc3RyX3R1cGxlIGFyZ3MgLT4gTGlzdC5pdGVyIGFyZ3MgfmY6c2VsZiNjb3JlX3R5cGVcbiAgICAgIHwgUGNzdHJfcmVjb3JkIGZpZWxkcyAtPiBMaXN0Lml0ZXIgZmllbGRzIH5mOnNlbGYjbGFiZWxfZGVjbGFyYXRpb25cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlcyBfID0gKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGF0dHJpYnV0ZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpXG5cbiAgICBtZXRob2QgZ28gKCkgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5pdGVyIHRkcyB+ZjpzZWxmI3R5cGVfZGVjbGFyYXRpb24gd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlIC0+IFJlY3Vyc2l2ZVxuICAgICAgICAgIHwgKCkgLT4gTm9ucmVjdXJzaXZlKVxuICBlbmRcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID0gKG5ldyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMpI2dvICgpXG5sZXQgcmVjIGxhc3QgeCBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHggfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxubGV0IGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCA9XG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHIgW10gLT4gbmFtZS5sb2NcbiAgfCBQU3RyICh4IDo6IGwpIC0+IHsgeC5wc3RyX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzdHJfbG9jLmxvY19lbmQgfVxuICB8IFBTaWcgW10gLT4gbmFtZS5sb2NcbiAgfCBQU2lnICh4IDo6IGwpIC0+IHsgeC5wc2lnX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzaWdfbG9jLmxvY19lbmQgfVxuICB8IFBUeXAgdCAtPiB0LnB0eXBfbG9jXG4gIHwgUFBhdCAoeCwgTm9uZSkgLT4geC5wcGF0X2xvY1xuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT4geyB4LnBwYXRfbG9jIHdpdGggbG9jX2VuZCA9IGUucGV4cF9sb2MubG9jX2VuZCB9XG5cbmxldCBsb2Nfb2ZfcGF5bG9hZCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcblxubGV0IGxvY19vZl9hdHRyaWJ1dGUgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICAoKiBUT0RPOiBmaXggdGhpcyBpbiB0aGUgY29tcGlsZXIsIGFuZCBtb3ZlIHRoZSBsb2dpYyB0byBvbXAgd2hlbiBjb252ZXJ0aW5nXG4gICAgIGZyb20gb2xkZXIgYXN0cy4gKilcbiAgKCogXCJvY2FtbC5kb2NcIiBhdHRyaWJ1dGVzIGFyZSBnZW5lcmF0ZWQgd2l0aCBbTG9jYXRpb24ubm9uZV0sIHdoaWNoIGlzIG5vdCBoZWxwZnVsIGZvclxuICAgICBlcnJvciBtZXNzYWdlcy4gKilcbiAgaWYgUG9seS4oID0gKSBhdHRyX25hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlblxuICAgIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcbiAgZWxzZVxuICAgIHtcbiAgICAgIGF0dHJfbmFtZS5sb2Mgd2l0aFxuICAgICAgbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkKS5sb2NfZW5kO1xuICAgIH1cblxubGV0IGxvY19vZl9leHRlbnNpb24gKG5hbWUsIHBheWxvYWQpID1cbiAgaWYgUG9seS4oID0gKSBuYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW4gbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkXG4gIGVsc2VcbiAgICB7IG5hbWUubG9jIHdpdGggbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQpLmxvY19lbmQgfVxuXG5sZXQgY3VycnlfYXBwbGljYXRpb25zIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9hcHBseSAoZiwgb3JpZ19mb3J3YXJkX2FyZ3MpIC0+XG4gICAgICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBmXG4gICAgICAgIHwgbGFzdF9hcmcgOjogcmV2X2Zyb250X2FyZ3MgLT5cbiAgICAgICAgICAgIHBleHBfYXBwbHkgfmxvYyAobG9vcCByZXZfZnJvbnRfYXJncykgWyBsYXN0X2FyZyBdXG4gICAgICBpblxuICAgICAgbG9vcCAoTGlzdC5yZXYgb3JpZ19mb3J3YXJkX2FyZ3MpXG4gIHwgXyAtPiBleHByXG5cbmxldCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIExpc3QuZmlsdGVyX21hcCB+ZjooZnVuY3Rpb25cbiAgICB8IHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9sb2MgPSBfOyBhdHRyX3BheWxvYWQgPSBfIH1cbiAgICAgIHdoZW4gTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUuTG9jYXRpb24udHh0IC0+XG4gICAgICAgIE5vbmVcbiAgICB8IGF0dHIgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgICBTb21lIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGVzIG5vdCBhbGxvd2VkIGhlcmVcIikpXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGRcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhIGFjYyA9IGF0dHJpYnV0ZXNfZXJyb3JzIFsgYSBdIEAgYWNjXG4gIGVuZFxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXMgbCA9XG4gIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlc19pbiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSA9IGFzc2VydF9ub19hdHRyaWJ1dGVzIFsgYSBdXG4gIGVuZFxuXG5sZXQgYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMgPVxuICB7XG4gICAgYXR0cl9uYW1lID0geyBsb2M7IHR4dCA9IFwib2NhbWwucHB3YXJuaW5nXCIgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpc19wb2x5bW9ycGhpY192YXJpYW50ID1cbiAgbGV0IHJlYyBjaGVjayA9IGZ1bmN0aW9uXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCBfOyBfIH0gLT4gYERlZmluaXRlbHlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAodHlwLCBfKTsgXyB9IC0+IGNoZWNrIHR5cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciBfOyBfIH0gLT4gYE1heWJlXG4gICAgfCBfIC0+IGBTdXJlbHlfbm90XG4gICAgKCogVHlwZSB2YXJzIGdvIGhlcmUgZXZlbiB0aG91Z2ggdGhleSBjb3VsZCBiZSBwb2x5bW9ycGhpY1xuICAgICAgIHZhcmlhbnRzLCBob3dldmVyIHdlIGRvbid0IGhhbmRsZSBpdCBpZiB0aGV5IGdldCBzdWJzdGl0dXRlZFxuICAgICAgIGJ5IGEgcG9seW1vcnBoaWMgdmFyaWFudCB0aGF0IGlzIHRoZW4gaW5jbHVkZWQuICopXG4gIGluXG4gIGZ1biB0ZCB+c2lnXyAtPlxuICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfcmVjb3JkIF8gfCBQdHlwZV9vcGVuIC0+IGBTdXJlbHlfbm90XG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoXG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlmIHNpZ18gdGhlbiBgTWF5YmUgZWxzZSBgU3VyZWx5X25vdFxuICAgICAgICB8IFNvbWUgdHlwIC0+IGNoZWNrIHR5cClcblxubGV0IG1rX25hbWVkX3NpZyB+bG9jIH5zZ19uYW1lIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgWyB0ZCBdXG4gICAgd2hlbiBTdHJpbmcuZXF1YWwgdGQucHR5cGVfbmFtZS50eHQgXCJ0XCIgJiYgTGlzdC5pc19lbXB0eSB0ZC5wdHlwZV9jc3RycyAtPlxuICAgICAgaWZcbiAgICAgICAgKG5vdCBoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudClcbiAgICAgICAgJiYgUG9seS4oID0gKSAoaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlKSBgRGVmaW5pdGVseVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBhcml0eSA9IExpc3QubGVuZ3RoIHRkLnB0eXBlX3BhcmFtcyBpblxuICAgICAgICBpZiBhcml0eSA+PSA0IHRoZW4gTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG10eSA9XG4gICAgICAgICAgICBpZiBhcml0eSA9IDAgdGhlbiBzZ19uYW1lIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlcyVkXCIgc2dfbmFtZSBhcml0eVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgICAgICAgIGxldCBmb3Jfc3Vic3QgPVxuICAgICAgICAgICAgQXN0X2hlbHBlci5UeXBlLm1rIH5sb2MgdGQucHR5cGVfbmFtZSB+cGFyYW1zOnRkLnB0eXBlX3BhcmFtc1xuICAgICAgICAgICAgICB+bWFuaWZlc3Q6XG4gICAgICAgICAgICAgICAgKHB0eXBfY29uc3RyIH5sb2NcbiAgICAgICAgICAgICAgICAgICAoTG9jYXRlZC5tYXBfbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgICAgICAgKExpc3QubWFwIH5mOmZzdCB0ZC5wdHlwZV9wYXJhbXMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKGluY2x1ZGVfaW5mb3MgfmxvY1xuICAgICAgICAgICAgICAgKHBtdHlfd2l0aCB+bG9jXG4gICAgICAgICAgICAgICAgICAocG10eV9pZGVudCB+bG9jIChMb2NhdGVkLmxpZGVudCBtdHkgfmxvYykpXG4gICAgICAgICAgICAgICAgICBbIFB3aXRoX3R5cGVzdWJzdCAoTG9jYXRlZC5saWRlbnQgfmxvYyBcInRcIiwgZm9yX3N1YnN0KSBdKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGV4bl90b19sb2NfZXJyb3IgZXhuID1cbiAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoIFNvbWUgZXJyb3IgLT4gZXJyb3IgfCBOb25lIC0+IHJhaXNlIGV4blxuXG5tb2R1bGUgV2l0aF9lcnJvcnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3RcblxuICBsZXQgcmV0dXJuIGUgPSAoZSwgW10pXG5cbiAgbGV0ICggPj49ICkgKHgsIGVycm9yczEpIGYgPVxuICAgIGxldCB5LCBlcnJvcnMyID0gZiB4IGluXG4gICAgKHksIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gIGxldCAoID4+fCApICh4LCBlcnJvcnMpIGYgPSAoZiB4LCBlcnJvcnMpXG5cbiAgbGV0IG9mX3Jlc3VsdCByZXN1bHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBPayB4IC0+ICh4LCBbXSlcbiAgICB8IEVycm9yIGVycm9ycyAtPiAoZGVmYXVsdCwgTm9uRW1wdHlMaXN0LnRvX2xpc3QgZXJyb3JzKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gKExpc3QubWFwIGxpc3QgfmY6ZnN0LCBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjpzbmQpXG5lbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9wYXR0ZXJuMFxubGV0IG5vbGFiZWwgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTm9sYWJlbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9sYWJlbFwiKVxubGV0IGxhYmVsbGVkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBMYWJlbGxlZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFiZWxsZWRcIilcbmxldCBvcHRpb25hbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgT3B0aW9uYWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9wdGlvbmFsXCIpXG5sZXQgYXR0cmlidXRlIH5uYW1lOihUIG5hbWUpICB+cGF5bG9hZDooVCBwYXlsb2FkKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHguYXR0cl9uYW1lKS5sb2MgKHguYXR0cl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcGF5bG9hZCBjdHggbG9jIHguYXR0cl9wYXlsb2FkIGsgaW4gaylcbmxldCBiaW5kaW5nX29wIH5vcDooVCBvcCkgIH5wYXQ6KFQgcGF0KSAgfmV4cDooVCBleHApICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBvcCBjdHggKHgucGJvcF9vcCkubG9jICh4LnBib3Bfb3ApLnR4dCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBwYXQgY3R4IGxvYyB4LnBib3BfcGF0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGV4cCBjdHggbG9jIHgucGJvcF9leHAgayBpbiBrKVxubGV0IGNhc2UgfmxoczooVCBsaHMpICB+Z3VhcmQ6KFQgZ3VhcmQpICB+cmhzOihUIHJocykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGxocyBjdHggbG9jIHgucGNfbGhzIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGd1YXJkIGN0eCBsb2MgeC5wY19ndWFyZCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSByaHMgY3R4IGxvYyB4LnBjX3JocyBrIGluIGspXG5sZXQgcGNsX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNsX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNsX2NvbnN0ciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG5sZXQgcGNsX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxubGV0IHBjbF9mdW4gKFQgZjApIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxubGV0IHBjbF9hcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG5sZXQgcGNsX2xldCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxubGV0IHBjbF9jb25zdHJhaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcGNsX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBjbF9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG5sZXQgcGNmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2luaGVyaXQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmhlcml0XCIpKVxubGV0IHBjZl92YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbmxldCBwY2ZfbWV0aG9kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG5sZXQgcGNmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBjZl9pbml0aWFsaXplciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbml0aWFsaXplclwiKSlcbmxldCBwY2ZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIikpXG5sZXQgcGNmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IGNma192aXJ0dWFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDZmtfdmlydHVhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmlydHVhbFwiKVxubGV0IGNma19jb25jcmV0ZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uY3JldGVcIilcbmxldCBjbGFzc19pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2lfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNpX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGNsYXNzX2luZm9zIH52aXJ0OihUIHZpcnQpICB+cGFyYW1zOihUIHBhcmFtcykgIH5uYW1lOihUIG5hbWUpICB+ZXhwcjooVFxuICBleHByKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHZpcnQgY3R4IGxvYyB4LnBjaV92aXJ0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnBjaV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LnBjaV9uYW1lKS5sb2MgKHgucGNpX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucGNpX2V4cHIgayBpbiBrKSlcbmxldCBjbGFzc19zaWduYXR1cmUgfnNlbGY6KFQgc2VsZikgIH5maWVsZHM6KFQgZmllbGRzKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gc2VsZiBjdHggbG9jIHgucGNzaWdfc2VsZiBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc2lnX2ZpZWxkcyBrIGluIGspXG5sZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmOihUIHNlbGYpICB+ZmllbGRzOihUIGZpZWxkcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc3RyX3NlbGYgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZmllbGRzIGN0eCBsb2MgeC5wY3N0cl9maWVsZHMgayBpbiBrKVxubGV0IHBjdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfY29uc3RyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG5sZXQgcGN0eV9zaWduYXR1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzaWduYXR1cmVcIikpXG5sZXQgcGN0eV9hcnJvdyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG5sZXQgcGN0eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcGN0eV9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBjdGZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0Zl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdGZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmhlcml0XCIpKVxubGV0IHBjdGZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxubGV0IHBjdGZfbWV0aG9kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxubGV0IHBjdGZfY29uc3RyYWludCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBjdGZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxubGV0IHBjdGZfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IGNsb3NlZCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDbG9zZWQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNsb3NlZFwiKVxubGV0IG9wZW5fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE9wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9wZW5cIilcbmxldCBwY29uc3RfaW50ZWdlciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlZ2VyXCIpXG5sZXQgcGNvbnN0X2NoYXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjb25zdF9jaGFyIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjaGFyXCIpXG5sZXQgcGNvbnN0X3N0cmluZyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJpbmdcIilcbmxldCBwY29uc3RfZmxvYXQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZsb2F0XCIpXG5sZXQgcGNzdHJfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKVxubGV0IHBjc3RyX3JlY29yZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIilcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dmFyczooVCB2YXJzKSAgfmFyZ3M6KFQgYXJncykgXG4gIH5yZXM6KFQgcmVzKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBjZF9uYW1lKS5sb2MgKHgucGNkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdmFycyBjdHggbG9jIHgucGNkX3ZhcnMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGFyZ3MgY3R4IGxvYyB4LnBjZF9hcmdzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSByZXMgY3R4IGxvYyB4LnBjZF9yZXMgayBpbiBrKSlcbmxldCBwdHlwX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHB0eXBfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlwX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbmxldCBwdHlwX3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhclwiKSlcbmxldCBwdHlwX2Fycm93IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbmxldCBwdHlwX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbmxldCBwdHlwX2NvbnN0ciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHB0eXBfb2JqZWN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9iamVjdFwiKSlcbmxldCBwdHlwX2NsYXNzIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpKVxubGV0IHB0eXBfYWxpYXMgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBwdHlwX3ZhcmlhbnQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbmxldCBwdHlwX3BvbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG5sZXQgcHR5cF9wYWNrYWdlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2thZ2VcIikpXG5sZXQgcHR5cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgdXB0byA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBVcHRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVcHRvXCIpXG5sZXQgZG93bnRvXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBEb3dudG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkRvd250b1wiKVxubGV0IHBkaXJhX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZGlyX3N0cmluZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9zdHJpbmcgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxubGV0IHBkaXJfaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludFwiKVxubGV0IHBkaXJfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpXG5sZXQgcGRpcl9ib29sIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX2Jvb2wgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImJvb2xcIilcbmxldCBwZXhwX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXhwX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG5sZXQgcGV4cF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG5sZXQgcGV4cF9sZXQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG5sZXQgcGV4cF9mdW5jdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3Rpb25cIikpXG5sZXQgcGV4cF9mdW4gKFQgZjApIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1blwiKSlcbmxldCBwZXhwX2FwcGx5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG5sZXQgcGV4cF9tYXRjaCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1hdGNoXCIpKVxubGV0IHBleHBfdHJ5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInRyeVwiKSlcbmxldCBwZXhwX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbmxldCBwZXhwX2NvbnN0cnVjdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RydWN0XCIpKVxubGV0IHBleHBfdmFyaWFudCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbmxldCBwZXhwX3JlY29yZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG5sZXQgcGV4cF9maWVsZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmaWVsZFwiKSlcbmxldCBwZXhwX3NldGZpZWxkIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0ZmllbGRcIikpXG5sZXQgcGV4cF9hcnJheSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcnJheSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyYXlcIikpXG5sZXQgcGV4cF9pZnRoZW5lbHNlIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlmdGhlbmVsc2VcIikpXG5sZXQgcGV4cF9zZXF1ZW5jZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNlcXVlbmNlXCIpKVxubGV0IHBleHBfd2hpbGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aGlsZVwiKSlcbmxldCBwZXhwX2ZvciAoVCBmMCkgKFQgZjEpIChUIGYyKSAoVCBmMykgKFQgZjQpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGxldCBrID0gZjQgY3R4IGxvYyB4NCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmb3JcIikpXG5sZXQgcGV4cF9jb25zdHJhaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBleHBfY29lcmNlIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29lcmNlXCIpKVxubGV0IHBleHBfc2VuZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNlbmRcIikpXG5sZXQgcGV4cF9uZXcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbmV3IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibmV3XCIpKVxubGV0IHBleHBfc2V0aW5zdHZhciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGluc3R2YXJcIikpXG5sZXQgcGV4cF9vdmVycmlkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3ZlcnJpZGVcIikpXG5sZXQgcGV4cF9sZXRtb2R1bGUgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0bW9kdWxlXCIpKVxubGV0IHBleHBfbGV0ZXhjZXB0aW9uIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldGV4Y2VwdGlvblwiKSlcbmxldCBwZXhwX2Fzc2VydCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFzc2VydFwiKSlcbmxldCBwZXhwX2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbmxldCBwZXhwX3BvbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG5sZXQgcGV4cF9vYmplY3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfb2JqZWN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG5sZXQgcGV4cF9uZXd0eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibmV3dHlwZVwiKSlcbmxldCBwZXhwX3BhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfcGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicGFja1wiKSlcbmxldCBwZXhwX29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG5sZXQgcGV4cF9sZXRvcCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0b3BcIikpXG5sZXQgcGV4cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5yZWFjaGFibGVcIikpXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGV4dF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lOihUIG5hbWUpICB+a2luZDooVCBraW5kKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wZXh0X25hbWUpLmxvYyAoeC5wZXh0X25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucGV4dF9raW5kIGsgaW4gaykpXG5sZXQgcGV4dF9kZWNsIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGVjbFwiKVxubGV0IHBleHRfcmViaW5kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZXh0X3JlYmluZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlYmluZFwiKVxubGV0IHVuaXQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVW5pdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVW5pdFwiKVxubGV0IG5hbWVkIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5hbWVkXCIpXG5sZXQgaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5waW5jbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5waW5jbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGluY2x1ZGVfaW5mb3Mgfm1vZF86KFQgbW9kXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG1vZF8gY3R4IGxvYyB4LnBpbmNsX21vZCBrIGluIGspKVxubGV0IGluamVjdGl2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBJbmplY3RpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkluamVjdGl2ZVwiKVxubGV0IG5vaW5qZWN0aXZpdHkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9JbmplY3Rpdml0eVwiKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBsZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH5tdXRhYmxlXzooVCBtdXRhYmxlXykgIH50eXBlXzooVFxuICB0eXBlXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbGRfbmFtZSkubG9jICh4LnBsZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG11dGFibGVfIGN0eCBsb2MgeC5wbGRfbXV0YWJsZSBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBsZF90eXBlIGsgaW4gaykpXG5sZXQgbGV0b3AgfmxldF86KFQgbGV0XykgIH5hbmRzOihUIGFuZHMpICB+Ym9keTooVCBib2R5KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gbGV0XyBjdHggbG9jIHgubGV0XyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBhbmRzIGN0eCBsb2MgeC5hbmRzIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGJvZHkgY3R4IGxvYyB4LmJvZHkgayBpbiBrKVxubGV0IGxvY2F0aW9uIH5zdGFydDooVCBzdGFydCkgIH5lbmRfOihUIGVuZF8pICB+Z2hvc3Q6KFQgZ2hvc3QpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBzdGFydCBjdHggbG9jIHgubG9jX3N0YXJ0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGVuZF8gY3R4IGxvYyB4LmxvY19lbmQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZ2hvc3QgY3R4IGxvYyB4LmxvY19naG9zdCBrIGluIGspXG5sZXQgbGlkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBMaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxpZGVudFwiKVxubGV0IGxkb3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBMZG90ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMZG90XCIpXG5sZXQgbGFwcGx5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMYXBwbHlcIilcbmxldCBtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbWJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1iX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1iX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9iaW5kaW5nIH5uYW1lOihUIG5hbWUpICB+ZXhwcjooVCBleHByKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtYl9uYW1lKS5sb2MgKHgucG1iX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucG1iX2V4cHIgayBpbiBrKSlcbmxldCBtb2R1bGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH50eXBlXzooVCB0eXBlXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWRfbmFtZSkubG9jICh4LnBtZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbWRfdHlwZSBrIGluIGspKVxubGV0IHBtb2RfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG1vZF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtb2RfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbmxldCBwbW9kX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbmxldCBwbW9kX2Z1bmN0b3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG5sZXQgcG1vZF9hcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBtb2RfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwbW9kX3VucGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbmxldCBwbW9kX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtc19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXNfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZTooVCBuYW1lKSAgfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbXNfbmFtZSkubG9jICh4LnBtc19uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4ICh4LnBtc19tYW5pZmVzdCkubG9jICh4LnBtc19tYW5pZmVzdCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgaykpXG5sZXQgcG10eV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbXR5X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10eV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxubGV0IHBtdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxubGV0IHBtdHlfZnVuY3RvciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3RvclwiKSlcbmxldCBwbXR5X3dpdGggKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndpdGhcIikpXG5sZXQgcG10eV90eXBlb2YgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlb2ZcIikpXG5sZXQgcG10eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcG10eV9hbGlhcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9hbGlhcyB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10ZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH50eXBlXzooVCB0eXBlXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG10ZF9uYW1lKS5sb2MgKHgucG10ZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbXRkX3R5cGUgayBpbiBrKSlcbmxldCBpbW11dGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgSW1tdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbW11dGFibGVcIilcbmxldCBtdXRhYmxlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBNdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJNdXRhYmxlXCIpXG5sZXQgcG9mX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG9mX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3RhZyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IE90YWcgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPdGFnXCIpKVxubGV0IG9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBPaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT2luaGVyaXRcIikpXG5sZXQgb3Blbl9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb3Blbl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb3Blbl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG9wZW5faW5mb3MgfmV4cHI6KFQgZXhwcikgIH5vdmVycmlkZTooVCBvdmVycmlkZSkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBvcGVuX2V4cHIgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG92ZXJyaWRlIGN0eCBsb2MgeC5wb3Blbl9vdmVycmlkZSBrIGluIGspKVxubGV0IG92ZXJyaWRlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE92ZXJyaWRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPdmVycmlkZVwiKVxubGV0IGZyZXNoID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEZyZXNoIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJGcmVzaFwiKVxubGV0IHBwYXRfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHBhdF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBwYXRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYW55ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYW55IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYW55XCIpKVxubGV0IHBwYXRfdmFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3ZhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhclwiKSlcbmxldCBwcGF0X2FsaWFzIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxubGV0IHBwYXRfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxubGV0IHBwYXRfaW50ZXJ2YWwgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlcnZhbFwiKSlcbmxldCBwcGF0X3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbmxldCBwcGF0X2NvbnN0cnVjdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RydWN0XCIpKVxubGV0IHBwYXRfdmFyaWFudCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbmxldCBwcGF0X3JlY29yZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG5sZXQgcHBhdF9hcnJheSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9hcnJheSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyYXlcIikpXG5sZXQgcHBhdF9vciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9yXCIpKVxubGV0IHBwYXRfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwcGF0X3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIikpXG5sZXQgcHBhdF9sYXp5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2xhenkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxhenlcIikpXG5sZXQgcHBhdF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxubGV0IHBwYXRfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpKVxubGV0IHBwYXRfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBwYXRfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG5sZXQgcHN0ciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFN0ciB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFN0clwiKVxubGV0IHBzaWcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBTaWcgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBTaWdcIilcbmxldCBwdHlwIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQVHlwIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQVHlwXCIpXG5sZXQgcHBhdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBQYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBQYXRcIilcbmxldCBwb3NpdGlvbiB+Zm5hbWU6KFQgZm5hbWUpICB+bG51bTooVCBsbnVtKSAgfmJvbDooVCBib2wpICB+Y251bTooVCBjbnVtKSBcbiAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gZm5hbWUgY3R4IGxvYyB4LnBvc19mbmFtZSBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBsbnVtIGN0eCBsb2MgeC5wb3NfbG51bSBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBib2wgY3R4IGxvYyB4LnBvc19ib2wgayBpblxuICAgICAgICAgICAgIGxldCBrID0gY251bSBjdHggbG9jIHgucG9zX2NudW0gayBpbiBrKVxubGV0IHByaXZhdGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFByaXZhdGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlByaXZhdGVcIilcbmxldCBwdWJsaWMgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHVibGljIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQdWJsaWNcIilcbmxldCBub25yZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25yZWN1cnNpdmVcIilcbmxldCByZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSZWN1cnNpdmVcIilcbmxldCBwcmZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcmZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnByZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBydGFnIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUnRhZ1wiKSlcbmxldCByaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJpbmhlcml0XCIpKVxubGV0IHBzaWdfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHNpZ192YWx1ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdmFsdWUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbHVlXCIpXG5sZXQgcHNpZ190eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxubGV0IHBzaWdfdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxubGV0IHBzaWdfdHlwZXh0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ190eXBleHQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGV4dFwiKVxubGV0IHBzaWdfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxubGV0IHBzaWdfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxubGV0IHBzaWdfbW9kc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxubGV0IHBzaWdfcmVjbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY21vZHVsZVwiKVxubGV0IHBzaWdfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxubGV0IHBzaWdfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxubGV0IHBzaWdfb3BlbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfb3BlbiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxubGV0IHBzaWdfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxubGV0IHBzaWdfY2xhc3MgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2NsYXNzIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKVxubGV0IHBzaWdfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxubGV0IHBzaWdfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxubGV0IHBzaWdfZXh0ZW5zaW9uIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbmxldCBwc3RyX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzdHJfZXZhbCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV2YWxcIilcbmxldCBwc3RyX3ZhbHVlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbHVlXCIpXG5sZXQgcHN0cl9wcmltaXRpdmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicHJpbWl0aXZlXCIpXG5sZXQgcHN0cl90eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxubGV0IHBzdHJfdHlwZXh0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGV4dFwiKVxubGV0IHBzdHJfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxubGV0IHBzdHJfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxubGV0IHBzdHJfcmVjbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY21vZHVsZVwiKVxubGV0IHBzdHJfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxubGV0IHBzdHJfb3BlbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfb3BlbiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxubGV0IHBzdHJfY2xhc3MgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2NsYXNzIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKVxubGV0IHBzdHJfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxubGV0IHBzdHJfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxubGV0IHBzdHJfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxubGV0IHBzdHJfZXh0ZW5zaW9uIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbmxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWU6KFQgbmFtZSkgIH5hcmc6KFQgYXJnKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHgucGRpcl9uYW1lKS5sb2MgKHgucGRpcl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gYXJnIGN0eCBsb2MgeC5wZGlyX2FyZyBrIGluIGspXG5sZXQgcHRvcF9kZWYgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0b3BfZGVmIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWZcIilcbmxldCBwdG9wX2RpciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHRvcF9kaXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRpclwiKVxubGV0IHR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cGVfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cGVfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+cGFyYW1zOihUIHBhcmFtcykgIH5jc3RyczooVCBjc3RycykgXG4gIH5raW5kOihUIGtpbmQpICB+cHJpdmF0ZV86KFQgcHJpdmF0ZV8pICB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wdHlwZV9uYW1lKS5sb2MgKHgucHR5cGVfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnB0eXBlX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gY3N0cnMgY3R4IGxvYyB4LnB0eXBlX2NzdHJzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wdHlwZV9raW5kIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwcml2YXRlXyBjdHggbG9jIHgucHR5cGVfcHJpdmF0ZSBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gbWFuaWZlc3QgY3R4IGxvYyB4LnB0eXBlX21hbmlmZXN0IGsgaW4gaykpXG5sZXQgdHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5ZXhuX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2V4Y2VwdGlvbiB+Y29uc3RydWN0b3I6KFQgY29uc3RydWN0b3IpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gY29uc3RydWN0b3IgY3R4IGxvYyB4LnB0eWV4bl9jb25zdHJ1Y3RvciBrIGluIGspKVxubGV0IHR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4dF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leHRlbnNpb24gfnBhdGg6KFQgcGF0aCkgIH5wYXJhbXM6KFQgcGFyYW1zKSAgfmNvbnN0cnVjdG9yczooVFxuICBjb25zdHJ1Y3RvcnMpICB+cHJpdmF0ZV86KFQgcHJpdmF0ZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gcGF0aCBjdHggKHgucHR5ZXh0X3BhdGgpLmxvYyAoeC5wdHlleHRfcGF0aCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnB0eWV4dF9wYXJhbXMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGNvbnN0cnVjdG9ycyBjdHggbG9jIHgucHR5ZXh0X2NvbnN0cnVjdG9ycyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eWV4dF9wcml2YXRlIGsgaW4gaykpXG5sZXQgcHR5cGVfYWJzdHJhY3QgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFic3RyYWN0XCIpXG5sZXQgcHR5cGVfdmFyaWFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKVxubGV0IHB0eXBlX3JlY29yZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIilcbmxldCBwdHlwZV9vcGVuID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX29wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCB2YWx1ZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2Yl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfYmluZGluZyB+cGF0OihUIHBhdCkgIH5leHByOihUIGV4cHIpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gcGF0IGN0eCBsb2MgeC5wdmJfcGF0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wdmJfZXhwciBrIGluIGspKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2YWxfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZhbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWU6KFQgbmFtZSkgIH50eXBlXzooVCB0eXBlXykgIH5wcmltOihUIHByaW0pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnB2YWxfbmFtZSkubG9jICh4LnB2YWxfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucHZhbF90eXBlIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwcmltIGN0eCBsb2MgeC5wdmFsX3ByaW0gayBpbiBrKSlcbmxldCBjb3ZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ292YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb3ZhcmlhbnRcIilcbmxldCBjb250cmF2YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbnRyYXZhcmlhbnRcIilcbmxldCBub3ZhcmlhbmNlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vVmFyaWFuY2UgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vVmFyaWFuY2VcIilcbmxldCB2aXJ0dWFsXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBWaXJ0dWFsIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJWaXJ0dWFsXCIpXG5sZXQgY29uY3JldGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ29uY3JldGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbmNyZXRlXCIpXG5sZXQgcHdpdGhfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwd2l0aF9tb2R1bGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwd2l0aF9tb2R0eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxubGV0IHB3aXRoX21vZHR5cGVzdWJzdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG5sZXQgcHdpdGhfdHlwZXN1YnN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbmxldCBwd2l0aF9tb2RzdWJzdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBc3RfcGF0dGVybjBcblxubGV0IHNhdmVfY29udGV4dCBjdHggPSBjdHgubWF0Y2hlZFxubGV0IHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwID0gY3R4Lm1hdGNoZWQgPC0gYmFja3VwXG5sZXQgaW5jcl9tYXRjaGVkIGMgPSBjLm1hdGNoZWQgPC0gYy5tYXRjaGVkICsgMVxuXG5sZXQgcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgdHJ5IE9rIChmIHsgbWF0Y2hlZCA9IDAgfSBsb2MgeCBrKVxuICB3aXRoIEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSAtPiAoXG4gICAgbWF0Y2ggb25fZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiJXMgZXhwZWN0ZWRcIiBleHBlY3RlZCwgW10pXG4gICAgfCBTb21lIGYgLT4gT2sgKGYgKCkpKVxuXG5sZXQgcGFyc2UgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICBtYXRjaCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgd2l0aFxuICB8IE9rIHIgLT4gclxuICB8IEVycm9yIChyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSByXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybjAudCAqICdiIC0+ICgnYSwgJ2MpIHRcblxuICBsZXQgY3JlYXRlIHQgZiA9IFQgKHQsIGYpXG4gIGxldCBwYXJzZV9yZXMgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlX3JlcyB0IGxvYyB4IGZcbiAgbGV0IHBhcnNlIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZSB0IGxvYyB4IGZcbmVuZFxuXG5sZXQgX18gPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHgpXG5cbmxldCBfXycgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeyBsb2M7IHR4dCA9IHggfSlcblxubGV0IGRyb3AgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBfIGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrKVxuXG5sZXQgYXNfXyAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHggKGsgeCkgaW5cbiAgICAgIGspXG5cbmxldCBjc3QgfnRvX3N0cmluZyA/KGVxdWFsID0gUG9seS5lcXVhbCkgdiA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpZiBlcXVhbCB4IHYgdGhlbiAoXG4gICAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICAgIGspXG4gICAgICBlbHNlIGZhaWwgbG9jICh0b19zdHJpbmcgdikpXG5cbmxldCBpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOkludC50b19zdHJpbmcgdlxubGV0IGNoYXIgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVDXCIpIHZcbmxldCBzdHJpbmcgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVTXCIpIHZcbmxldCBmbG9hdCB2ID0gY3N0IH50b19zdHJpbmc6RmxvYXQudG9fc3RyaW5nIHZcbmxldCBpbnQzMiB2ID0gY3N0IH50b19zdHJpbmc6SW50MzIudG9fc3RyaW5nIHZcbmxldCBpbnQ2NCB2ID0gY3N0IH50b19zdHJpbmc6SW50NjQudG9fc3RyaW5nIHZcbmxldCBuYXRpdmVpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOk5hdGl2ZWludC50b19zdHJpbmcgdlxubGV0IGJvb2wgdiA9IGNzdCB+dG9fc3RyaW5nOkJvb2wudG9fc3RyaW5nIHZcblxubGV0IGJvb2wnIChUIGZ1bmMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBcInRydWVcIiAtPiBmdW5jIGN0eCBsb2MgdHJ1ZSBrXG4gICAgICB8IFwiZmFsc2VcIiAtPiBmdW5jIGN0eCBsb2MgZmFsc2Uga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQm9vbFwiKVxuXG5sZXQgZmFsc2VfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmYWxzZVwiKVxuXG5sZXQgdHJ1ZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ1ZVwiKVxuXG5sZXQgbmlsID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJbXVwiKVxuXG5sZXQgKCBeOjogKSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB4MCA6OiB4MSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiOjpcIilcblxubGV0IG5vbmUgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9uZVwiKVxuXG5sZXQgc29tZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFNvbWUgeDAgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJTb21lXCIpXG5cbmxldCBwYWlyIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgaylcblxubGV0ICggKiogKSA9IHBhaXJcblxubGV0IHRyaXBsZSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MiwgeDMpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgIGspXG5cbmxldCBhbHQgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgYmFja3VwID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgdHJ5IGYxIGN0eCBsb2MgeCBrXG4gICAgICB3aXRoIGUxIC0+IChcbiAgICAgICAgbGV0IG0xID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cDtcbiAgICAgICAgdHJ5IGYyIGN0eCBsb2MgeCBrXG4gICAgICAgIHdpdGggZTIgLT5cbiAgICAgICAgICBsZXQgbTIgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgICAgaWYgbTEgPj0gbTIgdGhlbiAoXG4gICAgICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IG0xO1xuICAgICAgICAgICAgcmFpc2UgZTEpXG4gICAgICAgICAgZWxzZSByYWlzZSBlMikpXG5cbmxldCAoIHx8fCApID0gYWx0XG5sZXQgbWFwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGspKVxubGV0IG1hcCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgbG9jIGspKVxubGV0IG1hcF9yZXN1bHQgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiAoZnVuYyBjdHggbG9jIHggaykpXG5sZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxubGV0IG1hcDAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgZikpXG5sZXQgbWFwMSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBhKSkpXG5cbmxldCBtYXAyIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgYSBiKSkpXG5cbmxldCBtYXAwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayAoZiBsb2MpKSlcblxubGV0IG1hcDEnIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGxvYyBhKSkpXG5cbmxldCBtYXAyJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGxvYyBhIGIpKSlcblxubGV0IG1hcF92YWx1ZSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgeCkgaylcbmxldCBtYXBfdmFsdWUnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiBsb2MgeCkgaylcblxubGV0IGFsdF9vcHRpb24gc29tZSBub25lID1cbiAgYWx0IChtYXAxIHNvbWUgfmY6KGZ1biB4IC0+IFNvbWUgeCkpIChtYXAwIG5vbmUgfmY6Tm9uZSlcblxubGV0IG1hbnkgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIGwgayAtPlxuICAgICAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gayAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgfCB4IDo6IHhzIC0+IGYgY3R4IGxvYyB4IChmdW4geCAtPiBhdXggKHggOjogYWNjdSkgeHMpXG4gICAgICBpblxuICAgICAgYXV4IFtdIGwpXG5cbmxldCBsb2MgKFQgZikgPSBUIChmdW4gY3R4IF9sb2MgKHggOiBfIExvYy50KSBrIC0+IGYgY3R4IHgubG9jIHgudHh0IGspXG5sZXQgcGFjazAgdCA9IG1hcCB0IH5mOihmdW4gZiAtPiBmICgpKVxubGV0IHBhY2syIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IC0+IGYgKHgsIHkpKVxubGV0IHBhY2szIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IHogLT4gZiAoeCwgeSwgeikpXG5cbmluY2x1ZGUgQXN0X3BhdHRlcm5fZ2VuZXJhdGVkXG5cbmxldCBlY2hhciB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBlc3RyaW5nIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IGVmbG9hdCB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBwY2hhciB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBwc3RyaW5nIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IHBmbG9hdCB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBpbnQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoaW50X29mX3N0cmluZyB4KSBrKVxubGV0IGludDMyJyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDMyLm9mX3N0cmluZyB4KSBrKVxubGV0IGludDY0JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDY0Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgbmF0aXZlaW50JyAoVCBmKSA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKE5hdGl2ZWludC5vZl9zdHJpbmcgeCkgaylcblxubGV0IGNvbnN0X2ludCB0ID0gcGNvbnN0X2ludGVnZXIgKGludCcgdCkgbm9uZVxubGV0IGNvbnN0X2ludDMyIHQgPSBwY29uc3RfaW50ZWdlciAoaW50MzInIHQpIChzb21lIChjaGFyICdsJykpXG5sZXQgY29uc3RfaW50NjQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQ2NCcgdCkgKHNvbWUgKGNoYXIgJ0wnKSlcbmxldCBjb25zdF9uYXRpdmVpbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChuYXRpdmVpbnQnIHQpIChzb21lIChjaGFyICduJykpXG5sZXQgZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgZWludDMyIHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IGVpbnQ2NCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBlbmF0aXZlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBwaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBwaW50MzIgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgcGludDY0IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IHBuYXRpdmVpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHNpbmdsZV9leHByX3BheWxvYWQgdCA9IHBzdHIgKHBzdHJfZXZhbCB0IG5pbCBeOjogbmlsKVxubGV0IG5vX2xhYmVsIHQgPSBjc3QgQXN0dHlwZXMuTm9sYWJlbCB+dG9fc3RyaW5nOihmdW4gXyAtPiBcIk5vbGFiZWxcIikgKiogdFxubGV0IGVib29sIHQgPSBwZXhwX2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxubGV0IHBib29sIHQgPSBwcGF0X2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxuXG5sZXQgZXh0ZW5zaW9uIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICgobmFtZSA6IF8gTG9jLnQpLCBwYXlsb2FkKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBuYW1lLmxvYyBuYW1lLnR4dCBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgcGF5bG9hZCBrIGluXG4gICAgICBrKVxuXG5sZXQgcmVjIHBhcnNlX2VsaXN0IChlIDogUGFyc2V0cmVlLmV4cHJlc3Npb24pIGFjYyA9XG4gIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBlLnBleHBfYXR0cmlidXRlcztcbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgTm9uZSkgLT4gTGlzdC5yZXYgYWNjXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIGFyZykgLT4gKFxuICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGFyZy5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICBtYXRjaCBhcmcucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF90dXBsZSBbIGhkOyB0bCBdIC0+IHBhcnNlX2VsaXN0IHRsIChoZCA6OiBhY2MpXG4gICAgICB8IF8gLT4gZmFpbCBhcmcucGV4cF9sb2MgXCJsaXN0XCIpXG4gIHwgXyAtPiBmYWlsIGUucGV4cF9sb2MgXCJsaXN0XCJcblxubGV0IGVsaXN0IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgbCA9IHBhcnNlX2VsaXN0IGUgW10gaW5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIChMaXN0Lm1hcCBsIH5mOihmdW4geCAtPiBmIGN0eCB4LlBhcnNldHJlZS5wZXhwX2xvYyB4IChmdW4geCAtPiB4KSkpKVxuXG5sZXQgZXNlcXVlbmNlIChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgcmVjIHBhcnNlX3NlcSBleHByIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChleHByLCBuZXh0KSAtPiBwYXJzZV9zZXEgbmV4dCAoZXhwciA6OiBhY2MpXG4gICAgICAgIHwgXyAtPiBleHByIDo6IGFjY1xuICAgICAgaW5cbiAgICAgIGtcbiAgICAgICAgKExpc3QucmV2X21hcCAocGFyc2Vfc2VxIGUgW10pIH5mOihmdW4gZXhwciAtPlxuICAgICAgICAgICAgIGYgY3R4IGV4cHIucGV4cF9sb2MgZXhwciAoZnVuIHggLT4geCkpKSlcblxubGV0IG9mX2Z1bmMgZiA9IFQgZlxubGV0IHRvX2Z1bmMgKFQgZikgPSBmXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHBvbHlfZXF1YWwgYSBiID1cbiAgbGV0IG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCA6IF8gLT4gdFxuICBlbmQgaW5cbiAgU3RkcHB4LlBvbHkuZXF1YWwgKFBvbHkuVCBhKSAoUG9seS5UIGIpXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIHRcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiB0XG4gICAgfCBUeXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIHRcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDbGFzc19pbmZvcyA6IF8gY2xhc3NfaW5mb3MgdFxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIHRcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIHRcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIHRcbiAgICB8IEluY2x1ZGVfaW5mb3MgOiBfIGluY2x1ZGVfaW5mb3MgdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBWYWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyB0XG4gICAgfCBNb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIHRcbiAgICB8IFBzdHJfZXZhbCA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHNpZ19leHRlbnNpb24gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBSdGFnIDogcm93X2ZpZWxkIHRcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIDogb2JqZWN0X2ZpZWxkIHRcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gPSBMYWJlbF9kZWNsYXJhdGlvblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9kZWNsYXJhdGlvbiA9IFR5cGVfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID0gVHlwZV9leHRlbnNpb25cbiAgbGV0IHR5cGVfZXhjZXB0aW9uID0gVHlwZV9leGNlcHRpb25cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uID0gVmFsdWVfZGVzY3JpcHRpb25cbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY2xhc3NfaW5mb3MgPSBDbGFzc19pbmZvc1xuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV9kZWNsYXJhdGlvblxuICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICBsZXQgb3Blbl9kZXNjcmlwdGlvbiA9IE9wZW5fZGVzY3JpcHRpb25cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBJbmNsdWRlX2luZm9zXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCB2YWx1ZV9iaW5kaW5nID0gVmFsdWVfYmluZGluZ1xuICBsZXQgbW9kdWxlX2JpbmRpbmcgPSBNb2R1bGVfYmluZGluZ1xuICBsZXQgcHN0cl9ldmFsID0gUHN0cl9ldmFsXG4gIGxldCBwc3RyX2V4dGVuc2lvbiA9IFBzdHJfZXh0ZW5zaW9uXG4gIGxldCBwc2lnX2V4dGVuc2lvbiA9IFBzaWdfZXh0ZW5zaW9uXG4gIGxldCBydGFnID0gUnRhZ1xuICBsZXQgb2JqZWN0X3R5cGVfZmllbGQgPSBPYmplY3RfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfcHN0cl9ldmFsIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9ldmFsIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9ldmFsXCJcblxuICBsZXQgZ2V0X3BzdHJfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9wc2lnX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHNpZ19kZXNjIHdpdGhcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHNpZ19leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB4LnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB4LnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHgucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geC5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geC5wdHlleG5fYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHgucGV4dF9hdHRyaWJ1dGVzXG4gICAgfCBQYXR0ZXJuIC0+IHgucHBhdF9hdHRyaWJ1dGVzXG4gICAgfCBDb3JlX3R5cGUgLT4geC5wdHlwX2F0dHJpYnV0ZXNcbiAgICB8IEV4cHJlc3Npb24gLT4geC5wZXhwX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHgucHZhbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlIC0+IHgucGN0eV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHgucGN0Zl9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19pbmZvcyAtPiB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19leHByIC0+IHgucGNsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2ZpZWxkIC0+IHgucGNmX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlIC0+IHgucG10eV9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geC5wbWRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geC5wbXRkX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geC5wbXNfYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHgucGluY2xfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2V4cHIgLT4geC5wbW9kX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geC5wdmJfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geC5wbWJfYXR0cmlidXRlc1xuICAgIHwgUHN0cl9ldmFsIC0+IHNuZCAoZ2V0X3BzdHJfZXZhbCB4KVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gc25kIChnZXRfcHN0cl9leHRlbnNpb24geClcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHgpXG4gICAgfCBSdGFnIC0+IHgucHJmX2F0dHJpYnV0ZXNcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHgucG9mX2F0dHJpYnV0ZXNcblxuICBsZXQgc2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19pbmZvcyAtPiB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2V4cHIgLT4geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geyB4IHdpdGggcG1iX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQc3RyX2V2YWwgLT5cbiAgICAgICAgeyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChnZXRfcHN0cl9ldmFsIHggfD4gZnN0LCBhdHRycykgfVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChnZXRfcHN0cl9leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChnZXRfcHNpZ19leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUnRhZyAtPiB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IFwibGFiZWwgZGVjbGFyYXRpb25cIlxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gXCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBcInR5cGUgZXh0ZW5zaW9uXCJcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IFwidHlwZSBleGNlcHRpb25cIlxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiBcInZhbHVlXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENsYXNzX2luZm9zIC0+IFwiY2xhc3MgZGVjbGFyYXRpb25cIlxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4gXCJtb2R1bGUgc3Vic3RpdHV0aW9uXCJcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4gXCJvcGVuXCJcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4gXCJvcGVuXCJcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4gXCJpbmNsdWRlXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfYmluZGluZyAtPiBcInZhbHVlIGJpbmRpbmdcIlxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4gXCJtb2R1bGUgYmluZGluZ1wiXG4gICAgfCBQc3RyX2V2YWwgLT4gXCJ0b3BsZXZlbCBleHByZXNzaW9uXCJcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgZXh0ZW5zaW9uXCJcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgc2lnbmF0dXJlIGV4dGVuc2lvblwiXG4gICAgfCBSdGFnIC0+IFwicG9seW1vcnBoaWMgdmFyaWFudCB0YWdcIlxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4gXCJvYmplY3QgdHlwZSBmaWVsZFwiXG5cbiAgKCpcbiAgbGV0IHBhdHRlcm4gOiB0eXBlIGEgYiBjIGQuIGEgdFxuICAgIC0+IChhdHRyaWJ1dGVzLCBiLCBjKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGMsIGQpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYiwgZCkgQXN0X3BhdHRlcm4udCA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAgICAgICAtPiBBc3RfcGF0dGVybi5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gQXN0X3BhdHRlcm4ucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uICAgICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgICAtPiBBc3RfcGF0dGVybi5wZXh0X2F0dHJpYnV0ZXNcbiopXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbm1vZHVsZSBGbG9hdGluZ19jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG5cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIHQgeCA9XG4gICAgbWF0Y2ggZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIHQgeCB3aXRoXG4gICAgfCBTb21lIGEgLT4gYVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVcIlxuXG4gIGxldCByZXBsYWNlX2J5X2R1bW15IDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhID1cbiAgICBsZXQgZHVtbXlfZXh0ID0gKHsgdHh0ID0gXCJcIjsgbG9jID0gTG9jYXRpb24ubm9uZSB9LCBQU3RyIFtdKSBpblxuICAgIGZ1biB0IHggLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiB7IHggd2l0aCBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZHVtbXlfZXh0IH1cbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxudHlwZSBwYWNrZWRfY29udGV4dCA9XG4gIHwgT25faXRlbSA6IF8gQ29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG4gIHwgRmxvYXRpbmcgOiBfIEZsb2F0aW5nX2NvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuXG50eXBlIF8gcGF5bG9hZF9wYXJzZXIgPVxuICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgIChwYXlsb2FkLCAnYSwgJ2IpIEFzdF9wYXR0ZXJuLnRcbiAgICAgICogKGF0dHJfbG9jOkxvY2F0aW9uLnQgLT4gbmFtZV9sb2M6TG9jYXRpb24udCAtPiAnYSlcbiAgICAgIC0+ICdiIHBheWxvYWRfcGFyc2VyXG5cbnR5cGUgKCdhLCAnYikgdCA9IHtcbiAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG59XG5cbnR5cGUgcGFja2VkID0gVCA6IChfLCBfKSB0IC0+IHBhY2tlZFxuXG5sZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5sZXQgY29udGV4dCB0ID0gdC5jb250ZXh0XG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJhdHRyaWJ1dGVcIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW5jdGlvblxuICAgIHwgT25faXRlbSB0IC0+IFNvbWUgKENvbnRleHQuZGVzYyB0KVxuICAgIHwgRmxvYXRpbmcgdCAtPiBTb21lIChGbG9hdGluZ19jb250ZXh0LmRlc2MgdCBeIFwiIChmbG9hdGluZylcIikpXG5cbmxldCBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gIHtcbiAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICBjb250ZXh0O1xuICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gIH1cblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspXG5cbmxldCBkZWNsYXJlX3dpdGhfbmFtZV9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYyAtPlxuICAgICAgayB+bmFtZV9sb2MpXG5cbmxldCBkZWNsYXJlX3dpdGhfYXR0cl9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYyB+bmFtZV9sb2M6XyAtPlxuICAgICAgayB+YXR0cl9sb2MpXG5cbnR5cGUgJ2EgZmxhZyA9ICgnYSwgdW5pdCkgdFxuXG5sZXQgZGVjbGFyZV9mbGFnIG5hbWUgY29udGV4dCA9XG4gIGxldCBwYXlsb2FkX3BhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpIGluXG4gIGxldCBjb250aW51YXRpb24gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gPSAoKSBpblxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBheWxvYWRfcGF0dGVybiBjb250aW51YXRpb25cblxubW9kdWxlIEF0dHJpYnV0ZV90YWJsZSA9IFN0ZGxpYi5IYXNodGJsLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbG9jXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID0geyB0IHdpdGggbG9jID0geyB0LmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB9XG4gIGxldCBoYXNoIHQgPSBIYXNodGJsLmhhc2ggKG5vcm1hbGl6ZSB0KVxuICBsZXQgZXF1YWwgeCB5ID0gUG9seS5lcXVhbCAobm9ybWFsaXplIHgpIChub3JtYWxpemUgeSlcbmVuZClcblxubGV0IG5vdF9zZWVuID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAxMjhcbmxldCBtYXJrX2FzX3NlZW4geyBhdHRyX25hbWU7IF8gfSA9IEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgbm90X3NlZW4gYXR0cl9uYW1lXG5sZXQgbWFya19hc19oYW5kbGVkX21hbnVhbGx5ID0gbWFya19hc19zZWVuXG5cbmxldCBleHBsaWNpdGx5X2Ryb3AgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlID0gbWFya19hc19zZWVuXG4gIGVuZFxuXG5sZXQgZ2V0X2ludGVybmFsID1cbiAgbGV0IHJlYyBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIGxvbmdlc3RfbWF0Y2ggPVxuICAgIG1hdGNoIGF0dHJpYnV0ZXMgd2l0aFxuICAgIHwgW10gLT4gT2sgbG9uZ2VzdF9tYXRjaFxuICAgIHwgKHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IGFzIGF0dHIpIDo6IHJlc3QgLT5cbiAgICAgICAgaWYgTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0IHRoZW5cbiAgICAgICAgICBtYXRjaCBsb25nZXN0X21hdGNoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgIHwgU29tZSB7IGF0dHJfbmFtZSA9IG5hbWUnOyBfIH0gLT5cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbmFtZS50eHQgaW5cbiAgICAgICAgICAgICAgbGV0IGxlbicgPSBTdHJpbmcubGVuZ3RoIG5hbWUnLnR4dCBpblxuICAgICAgICAgICAgICBpZiBsZW4gPiBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA8IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIkR1cGxpY2F0ZWQgYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZSBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgaW5cbiAgZnVuIHQgYXR0cmlidXRlcyAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIE5vbmVcblxubGV0IGNvbnZlcnQgPyhkb19tYXJrX2FzX3NlZW4gPSB0cnVlKSBwYXR0ZXJuIGF0dHIgPVxuICBpZiBkb19tYXJrX2FzX3NlZW4gdGhlbiBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgbGV0IChQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgaykpID0gcGF0dGVybiBpblxuICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVyblxuICAgIChDb21tb24ubG9jX29mX3BheWxvYWQgYXR0cilcbiAgICBhdHRyLmF0dHJfcGF5bG9hZFxuICAgIChrIH5hdHRyX2xvYzphdHRyLmF0dHJfbG9jIH5uYW1lX2xvYzphdHRyLmF0dHJfbmFtZS5sb2MpXG5cbmxldCBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID9kb19tYXJrX2FzX3NlZW4gPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG5cbmxldCBnZXQgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIG1hdGNoIGdldF9yZXMgP21hcmtfYXNfc2VlbiB0IHggd2l0aFxuICB8IE9rIChTb21lICgpKSAtPiBPayB0cnVlXG4gIHwgT2sgTm9uZSAtPiBPayBmYWxzZVxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG5cbmxldCBoYXNfZmxhZyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgY29uc3VtZV9yZXMgdCB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGxldCBhdHRycyA9IExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChhdHRyID09IGF0dHInKSkgaW5cbiAgICAgIGxldCB4ID0gQ29udGV4dC5zZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBhdHRycyBpblxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgKHgsIHZhbHVlKVxuXG5sZXQgY29uc3VtZSB0IHggPVxuICBjb25zdW1lX3JlcyB0IHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHJlbW92ZV9zZWVuX3JlcyAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IHggaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBPayBhY2NcbiAgICB8IFQgdCA6OiByZXN0IC0+XG4gICAgICAgIGlmIENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQgdGhlblxuICAgICAgICAgIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgIHwgU29tZSBhdHRyIC0+XG4gICAgICAgICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgICAgICAgaWYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lIHRoZW4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGxvb3AgKGF0dHIgOjogYWNjKSByZXN0XG4gICAgICAgIGVsc2UgbG9vcCBhY2MgcmVzdFxuICBpblxuICBsb29wIFtdIHBhY2tlZHMgPj58IGZ1biBtYXRjaGVkIC0+XG4gIGxldCBhdHRycyA9XG4gICAgTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKExpc3QubWVtcSB+c2V0Om1hdGNoZWQgYXR0cicpKVxuICBpblxuICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRyc1xuXG5sZXQgcmVtb3ZlX3NlZW4gKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgcmVtb3ZlX3NlZW5fcmVzIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKVxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcGF0dGVybl9yZXMgdCBwID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBmID0gQXN0X3BhdHRlcm4udG9fZnVuYyBwIGluXG4gIEFzdF9wYXR0ZXJuLm9mX2Z1bmMgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgY29uc3VtZV9yZXMgdCB4ID4+fCBmdW4gcmVzIC0+XG4gICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IGYgY3R4IGxvYyB4IChrIE5vbmUpXG4gICAgICB8IFNvbWUgKHgsIHYpIC0+IGYgY3R4IGxvYyB4IChrIChTb21lIHYpKSlcblxubGV0IHBhdHRlcm4gdCBwID1cbiAgcGF0dGVybl9yZXMgdCBwIHw+IEFzdF9wYXR0ZXJuLnRvX2Z1bmNcbiAgfD4gKGZ1biBmIGEgYiBjIGQgLT5cbiAgICAgICBmIGEgYiBjIGRcbiAgICAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKSlcbiAgfD4gQXN0X3BhdHRlcm4ub2ZfZnVuY1xuXG5tb2R1bGUgRmxvYXRpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBGbG9hdGluZ19jb250ZXh0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbiAgfVxuXG4gIGxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKTtcbiAgICB9XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIHggPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIG1hdGNoIHRzIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IHsgY29udGV4dDsgXyB9IDo6IF8gLT4gKFxuICAgICAgICBhc3NlcnQgKExpc3QuZm9yX2FsbCB0cyB+ZjooZnVuIHQgLT4gQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCkpO1xuICAgICAgICBsZXQgYXR0ciA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZSBjb250ZXh0IHggaW5cbiAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBPayBOb25lXG4gICAgICAgIHwgWyB0IF0gLT4gY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZmxvYXRpbmcgYXR0cmlidXRlczogJXNcIlxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICAgICAgW10gKSlcblxuICBsZXQgY29udmVydCB0cyB4ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB4XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBpZlxuICAgIChub3RcbiAgICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgQXR0cmlidXRlIG5hbWUudHh0XG4gICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KSlcbiAgICAmJiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWVcbiAgdGhlblxuICAgIGxldCBhbGxvd2xpc3QgPSBOYW1lLkFsbG93bGlzdGVkLmdldF9hdHRyaWJ1dGVfbGlzdCAoKSBpblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIGNvbnRleHQgfmFsbG93bGlzdFxuICAgICAgICBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBub3QgdXNlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZTAuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gXyA9XG4gICAgICBbXG4gICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgXVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS5cbiAgICAgICAgYSBDb250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgYXR0cnNcbiAgICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGVkX2Vycm9ycylcbiAgICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW10sIGVycm9ycylcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX2Zsb2F0aW5nIDogdHlwZSBhLlxuICAgICAgICBhIEZsb2F0aW5nLkNvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIEZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIGNvbnRleHQgbm9kZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgU29tZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAoRmxvYXRpbmcuQ29udGV4dC5yZXBsYWNlX2J5X2R1bW15IGNvbnRleHQgbm9kZSwgY29sbGVjdGVkX2Vycm9ycylcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIExhYmVsX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXh0ZW5zaW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leGNlcHRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leGNlcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggaW5cbiAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgUGF0dGVybiB4IGluXG4gICAgICBzdXBlciNwYXR0ZXJuIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvcmVfdHlwZSB4IGluXG4gICAgICBzdXBlciNjb3JlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4cHJlc3Npb24geCBpblxuICAgICAgc3VwZXIjZXhwcmVzc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2V4cHIgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4IGluXG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZXhwciB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc19maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc19maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoIFJ0YWcgXyAtPiBzZWxmI2NoZWNrX25vZGUgUnRhZyB4IHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjcm93X2ZpZWxkIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSAtPlxuICAgICAgICAgICAgbGV0IGZpZWxkcywgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihzZWxmI2NoZWNrX25vZGUgT2JqZWN0X3R5cGVfZmllbGQpXG4gICAgICAgICAgICAgIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpLCBMaXN0LmNvbmNhdCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTdHJ1Y3R1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHN0cl9kZXNjIHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9ldmFsIGl0ZW1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU2lnbmF0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzaWdfZGVzYyB3aXRoXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHNpZ19leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG4gIGVuZFxuXG5sZXQgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBtYXRjaCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJhaXNlX2lmX25vbl9lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gYSAtPiBhID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IG5vZGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXIgYXR0cnNcbiAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cik7XG4gICAgICAgICAgICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNsYWJlbF9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leHRlbnNpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4Y2VwdGlvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHRlbnNpb25fY29uc3RydWN0b3IgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNwYXR0ZXJuIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXhwcmVzc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGVfZmllbGQgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3Jvd19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXRfY2hlY2tzICgpID0gQXR0cmlidXRlX3RhYmxlLmNsZWFyIG5vdF9zZWVuXG5cbmxldCBjb2xsZWN0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKVxuICAgICAgICA9XG4gICAgICBsZXQgbG9jID0gQ29tbW9uLmxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLmFkZCBub3Rfc2VlbiBuYW1lIGxvY1xuICBlbmRcblxubGV0IGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSA9XG4gIGxldCBmYWlsIG5hbWUgbG9jIGFjYyA9XG4gICAgbGV0IHR4dCA9IG5hbWUudHh0IGluXG4gICAgaWYgbm90IChOYW1lLmlnbm9yZV9jaGVja3MgdHh0KSB0aGVuXG4gICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgc2lsZW50bHkgZHJvcHBlZFwiIHR4dFxuICAgICAgOjogYWNjXG4gICAgZWxzZSBhY2NcbiAgaW5cbiAgQXR0cmlidXRlX3RhYmxlLmZvbGQgZmFpbCBub3Rfc2VlbiBbXVxuXG5sZXQgY2hlY2tfYWxsX3NlZW4gKCkgPVxuICBtYXRjaCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9ID1cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgdGFibGUgbmFtZVxuICBlbmRcblxubGV0IGNvcHlfb2Zfbm90X3NlZW4gKCkgPVxuICBsZXQgY29weSA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgKEF0dHJpYnV0ZV90YWJsZS5sZW5ndGggbm90X3NlZW4pIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5pdGVyIChBdHRyaWJ1dGVfdGFibGUuYWRkIGNvcHkpIG5vdF9zZWVuO1xuICBjb3B5XG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgc3QgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzdHJ1Y3R1cmUgc3Q7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgc2cgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzaWduYXR1cmUgc2c7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBmaWxlX3BhdGggOiBzdHJpbmc7XG4gIG1haW5fbW9kdWxlX25hbWUgOiBzdHJpbmc7XG4gIHN1Ym1vZHVsZV9wYXRoIDogc3RyaW5nIGxvYyBsaXN0O1xuICBlbmNsb3NpbmdfbW9kdWxlIDogc3RyaW5nO1xuICBlbmNsb3NpbmdfdmFsdWUgOiBzdHJpbmcgb3B0aW9uO1xuICB2YWx1ZSA6IHN0cmluZyBsb2Mgb3B0aW9uO1xuICBpbl9leHByIDogYm9vbDtcbn1cblxubGV0IHJlbW92ZV9hbGxfZXh0ZW5zaW9ucyBiYXNlbmFtZSA9XG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIH5zZXA6Jy4nIGJhc2VuYW1lIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2UgKCogc3BsaXRfb25fY2hhciBuZXZlciByZXR1cm5zIHRoZSBlbXB0eSBsaXN0ICopXG4gIHwgbmFtZSA6OiBfIC0+IG5hbWVcblxubGV0IHRvcF9sZXZlbCB+ZmlsZV9wYXRoID1cbiAgbGV0IG1haW5fbW9kdWxlX25hbWUgPVxuICAgIGZpbGVfcGF0aCB8PiBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgfD4gcmVtb3ZlX2FsbF9leHRlbnNpb25zXG4gICAgfD4gU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgaW5cbiAge1xuICAgIGZpbGVfcGF0aDtcbiAgICBtYWluX21vZHVsZV9uYW1lO1xuICAgIHN1Ym1vZHVsZV9wYXRoID0gW107XG4gICAgZW5jbG9zaW5nX21vZHVsZSA9IG1haW5fbW9kdWxlX25hbWU7XG4gICAgZW5jbG9zaW5nX3ZhbHVlID0gTm9uZTtcbiAgICB2YWx1ZSA9IE5vbmU7XG4gICAgaW5fZXhwciA9IGZhbHNlO1xuICB9XG5cbmxldCBmaWxlX3BhdGggdCA9IHQuZmlsZV9wYXRoXG5sZXQgbWFpbl9tb2R1bGVfbmFtZSB0ID0gdC5tYWluX21vZHVsZV9uYW1lXG5sZXQgZW5jbG9zaW5nX21vZHVsZSB0ID0gdC5lbmNsb3NpbmdfbW9kdWxlXG5sZXQgZW5jbG9zaW5nX3ZhbHVlIHQgPSB0LmVuY2xvc2luZ192YWx1ZVxuXG5sZXQgc3VibW9kdWxlX3BhdGggdCA9XG4gIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcblxubGV0IHZhbHVlIHQgPSBPcHRpb24ubWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC52YWx1ZVxuXG5sZXQgZnVsbHlfcXVhbGlmaWVkX3BhdGggdCA9XG4gIGxldCB2YWx1ZSA9IHZhbHVlIHQgaW5cbiAgbGV0IHN1Ym1vZHVsZV9wYXRoID1cbiAgICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IFNvbWUgbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcbiAgaW5cbiAgbGV0IG5hbWVzID0gKFNvbWUgdC5tYWluX21vZHVsZV9uYW1lIDo6IHN1Ym1vZHVsZV9wYXRoKSBAIFsgdmFsdWUgXSBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgQEAgTGlzdC5maWx0ZXJfb3B0IG5hbWVzXG5cbmxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBpbl9leHByID0gdHJ1ZSB9XG5cbmxldCBlbnRlcl9tb2R1bGUgfmxvYyBtb2R1bGVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgc3VibW9kdWxlX3BhdGggPSB7IHR4dCA9IG1vZHVsZV9uYW1lOyBsb2MgfSA6OiB0LnN1Ym1vZHVsZV9wYXRoO1xuICAgICAgZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lO1xuICAgIH1cblxubGV0IGVudGVyX3ZhbHVlIH5sb2MgdmFsdWVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgdmFsdWUgPSBTb21lIHsgdHh0ID0gdmFsdWVfbmFtZTsgbG9jIH07XG4gICAgICBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWU7XG4gICAgfVxuXG5sZXQgdG9fc3RyaW5nX3BhdGggdCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiAodC5maWxlX3BhdGggOjogc3VibW9kdWxlX3BhdGggdClcbmxldCB3aXRoX3N0cmluZ19wYXRoIGYgfmxvYyB+cGF0aCA9IGYgfmxvYyB+cGF0aDoodG9fc3RyaW5nX3BhdGggcGF0aCk7O1xuXG5sZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgbGV0IGEgPSBcImxvbFwiXG5lbmQgaW5cbk0uYVxuIiwibW9kdWxlIEJhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyB0b29sX25hbWUgOiBzdHJpbmc7IGNvZGVfcGF0aCA6IENvZGVfcGF0aC50OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICBsZXQgdG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IGNvZGVfcGF0aCA9IENvZGVfcGF0aC50b3BfbGV2ZWwgfmZpbGVfcGF0aCBpblxuICAgIHsgdG9vbF9uYW1lOyBjb2RlX3BhdGg7IGlucHV0X25hbWUgfVxuXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC50b29sX25hbWVcbiAgbGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9leHByIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYyA6IExvY2F0aW9uLnQ7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jIH5iYXNlICgpID0geyBleHRlbnNpb25fcG9pbnRfbG9jOyBiYXNlIH1cbiAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgdCA9IHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGRlcml2ZWRfaXRlbV9sb2MgOiBMb2NhdGlvbi50OyBpbmxpbmUgOiBib29sOyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZGVyaXZlZF9pdGVtX2xvYyB+aW5saW5lIH5iYXNlICgpID1cbiAgICB7IGRlcml2ZWRfaXRlbV9sb2M7IGJhc2U7IGlubGluZSB9XG5cbiAgbGV0IGRlcml2ZWRfaXRlbV9sb2MgdCA9IHQuZGVyaXZlZF9pdGVtX2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG4gIGxldCBpbmxpbmUgdCA9IHQuaW5saW5lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmRlcml2ZWRfaXRlbV9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vbi5XaXRoX2Vycm9yc1xuaW5jbHVkZSBBc3RfdHJhdmVyc2UwXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIFBweGxpYl90cmF2ZXJzZV9idWlsdGlucy5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBBc3QubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIGVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSBuYW1lIC0+IG5hbWVcbmxldCBlbnRlciBuYW1lIHBhdGggPSBpZiBTdHJpbmcuaXNfZW1wdHkgcGF0aCB0aGVuIG5hbWUgZWxzZSBwYXRoIF4gXCIuXCIgXiBuYW1lXG5sZXQgZW50ZXJfb3B0IG5hbWVfb3B0IHBhdGggPSBlbnRlciAobW9kdWxlX25hbWUgbmFtZV9vcHQpIHBhdGhcblxuY2xhc3MgbWFwX3dpdGhfcGF0aCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZ10gbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgKCogV0FTOlxuICAgICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHggPVxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgUHN0cl9tb2R1bGUgbWIgLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyAoZW50ZXIgbWIucG1iX25hbWUudHh0IHBhdGgpIHhcbiAgICAgICB8IF8gLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHhcblxuICAgICAgIE92ZXJyaWRpbmcgW21vZHVsZV9iaW5kaW5nXSBzZWVtcyB0byBiZSBPSyBiZWNhdXNlIGl0IGRvZXMgbm90IGNhdGNoXG4gICAgICAgbG9jYWwgbW9kdWxlIGJpbmRpbmdzIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB0aGUgcGFyc2V0cmVlIGRvZXNuJ3QgbWFrZVxuICAgICAgIHVzZSBvZiBbbW9kdWxlX2JpbmRpbmddIGZvciBsb2NhbCBtb2R1bGVzLCBidXQgdGhhdCBtaWdodCBjaGFuZ2UgaW4gdGhlXG4gICAgICAgZnV0dXJlLCBzbyB0aGlzIG1pZ2h0IGJlIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuXG5cbiAgICAgICBUaGUgZm9sbG93aW5nOlxuXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcblxuICAgICAgIGlzIGRpc2FsbG93ZWQsIGJ1dFxuXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG5cbiAgICAgICBpc24ndCwgYW5kIHRoZSBcInBhdGhcIiBjb25zdHJ1Y3RlZCBoZXJlIHdvdWxkIGJlIGFibGUgdG8gZGlmZmVyZW50aWF0ZVxuICAgICAgIGJldHdlZW4gdGhlbS4gKilcbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHBhdGggbWIgPVxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgKGVudGVyX29wdCBtYi5wbWJfbmFtZS50eHQgcGF0aCkgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHBhdGggbWQgPVxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIChlbnRlcl9vcHQgbWQucG1kX25hbWUudHh0IHBhdGgpIG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHBhdGggbXRkID1cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIChlbnRlciBtdGQucG10ZF9uYW1lLnR4dCBwYXRoKSBtdGRcbiAgZW5kXG5cbmxldCB2YXJfbmFtZXNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHAgYWNjID1cbiAgICAgIGxldCBhY2MgPSBzdXBlciNwYXR0ZXJuIHAgYWNjIGluXG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoIFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gdHh0IDo6IGFjYyB8IF8gLT4gYWNjXG4gIGVuZFxuXG5sZXQgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jIG5hbWVfb3B0IGN0eHQgPVxuICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgY3R4dFxuXG5sZXQgZW50ZXJfdmFsdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl92YWx1ZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9pZGVudCAobGlkZW50IF9fJykpKVxuICAgIEZuLmlkXG5cbmxldCBlbnRlcl9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZXhwclxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2NvbnN0cnVjdCAobGlkZW50IF9fJykgbm9uZSkpXG4gICAgRm4uaWRcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfZGVzY3JpcHRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5jbGFzcyBtYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzID1cbiAgbGV0IHJldHVybiBfY3R4IHggPSAoeCwgW10pIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0XG4gICAgICBbRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50LCBMb2NhdGlvbi5FcnJvci50IGxpc3RdIGxpZnRfbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgbWV0aG9kIGludCA9IHJldHVyblxuICAgIG1ldGhvZCBzdHJpbmcgPSByZXR1cm5cbiAgICBtZXRob2QgYm9vbCA9IHJldHVyblxuICAgIG1ldGhvZCBjaGFyID0gcmV0dXJuXG4gICAgbWV0aG9kIGZsb2F0ID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDMyID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDY0ID0gcmV0dXJuXG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHJldHVyblxuICAgIG1ldGhvZCB1bml0ID0gcmV0dXJuXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0KSAtPlxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgICAgICdhIGFycmF5IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGYgY3R4IGEgLT5cbiAgICAgICAgbGV0IGxpc3QsIGVycm9ycyA9IHNlbGYjbGlzdCBmIGN0eCAoQXJyYXkudG9fbGlzdCBhKSBpblxuICAgICAgICAoQXJyYXkub2ZfbGlzdCBsaXN0LCBlcnJvcnMpXG5cbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+IExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gXyBfIC0+IFtdXG5cbiAgICBtZXRob2QgcmVjb3JkIF9jdHggZmllbGRzID0gTGlzdC5jb25jYXRfbWFwIGZpZWxkcyB+ZjpzbmRcbiAgICBtZXRob2QgY29uc3RyIF9jdHggX3RhZyBhcmdzID0gTGlzdC5jb25jYXQgYXJnc1xuICAgIG1ldGhvZCB0dXBsZSBfY3R4IGwgPSBMaXN0LmNvbmNhdCBsXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gY3R4dFxuICAgICAgICAoeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYXMgZXhwcikgPVxuICAgICAgbGV0IHdpdGhfdmFsdWUgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl92YWx1ZSBleHByIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWUgPj49IGZ1biBjdHh0IC0+XG4gICAgICBsZXQgY3R4dCA9IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfZXhwciBjdHh0IGluXG4gICAgICBsZXQgcGV4cF9kZXNjLCBkZXNjX2Vycm9ycyA9XG4gICAgICAgIG1hdGNoIHBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSAtPlxuICAgICAgICAgICAgbGV0IG5hbWUsIG5hbWVfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHh0IG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlX2V4cHIsIG1vZHVsZV9leHByX2Vycm9ycyA9XG4gICAgICAgICAgICAgIGxldCB3aXRoX2xldF9tb2R1bGUgPVxuICAgICAgICAgICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIGV4cHJcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptb2R1bGVfZXhwci5wbW9kX2xvYyBuYW1lLnR4dCBjdHh0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHdpdGhfbGV0X21vZHVsZSA+Pj0gZnVuIGN0eHQgLT4gc2VsZiNtb2R1bGVfZXhwciBjdHh0IG1vZHVsZV9leHByXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGJvZHksIGJvZHlfZXJyb3JzID0gc2VsZiNleHByZXNzaW9uIGN0eHQgYm9keSBpblxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eHQgXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBuYW1lX2Vycm9yczsgbW9kdWxlX2V4cHJfZXJyb3JzOyBib2R5X2Vycm9ycyBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSksIGVycm9ycylcbiAgICAgICAgfCBfIC0+IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eHQgcGV4cF9kZXNjXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jIGluXG4gICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGxvY19zdGFja19lcnJvcnMgPVxuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jX3N0YWNrXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgY3R4dCBwZXhwX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LFxuICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIGRlc2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgbG9jX3N0YWNrX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJhdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgY3R4dCBtZSA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZXhwciA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX21vZHVsZSBtZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZXhwciA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2V4cHIgY3R4dCBtZVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBjdHh0IG1iID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9iaW5kaW5nID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIG1iXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1iLnBtYl9sb2MgbWIucG1iX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9iaW5kaW5nID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBjdHh0IG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gbWRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWQucG1kX2xvYyBtZC5wbWRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBtdGRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYzptdGQucG10ZF9sb2NcbiAgICAgICAgICAgICAgbXRkLnBtdGRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIHZkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzp2ZC5wdmFsX2xvYyB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICAgICAgIGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgY3R4dFxuICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhcyB2YikgPVxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgdmIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lICgpIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgY3R4dCB2YlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGluX2JpbmRpbmdfY3R4dCA9XG4gICAgICAgICAgICBtYXRjaCB2YXJfbmFtZXNfb2YjcGF0dGVybiBwdmJfcGF0IFtdIHdpdGhcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPiBjdHh0XG4gICAgICAgICAgICB8IFsgdmFyX25hbWUgXSAtPlxuICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzpwdmJfbG9jIHZhcl9uYW1lIGN0eHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfcGF0LCBwYXRfZXJyb3JzID0gc2VsZiNwYXR0ZXJuIGN0eHQgcHZiX3BhdCBpblxuICAgICAgICAgIGxldCBwdmJfZXhwciwgZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGluX2JpbmRpbmdfY3R4dCBwdmJfZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgaW5fYmluZGluZ19jdHh0IHB2Yl9hdHRyaWJ1dGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwdmJfbG9jIGluXG4gICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHBhdF9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIGV4cHJfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGVycm9ycylcbiAgZW5kXG5cbmNsYXNzIHNleHBfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtTZXhwLnRdIEFzdC5saWZ0XG4gICAgbWV0aG9kIGludCA9IHNleHBfb2ZfaW50XG4gICAgbWV0aG9kIHN0cmluZyA9IHNleHBfb2Zfc3RyaW5nXG4gICAgbWV0aG9kIGJvb2wgPSBzZXhwX29mX2Jvb2xcbiAgICBtZXRob2QgY2hhciA9IHNleHBfb2ZfY2hhclxuICAgIG1ldGhvZCBmbG9hdCA9IHNleHBfb2ZfZmxvYXRcbiAgICBtZXRob2QgaW50MzIgPSBzZXhwX29mX2ludDMyXG4gICAgbWV0aG9kIGludDY0ID0gc2V4cF9vZl9pbnQ2NFxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSBzZXhwX29mX25hdGl2ZWludFxuICAgIG1ldGhvZCB1bml0ID0gc2V4cF9vZl91bml0XG4gICAgbWV0aG9kIG9wdGlvbiA9IHNleHBfb2Zfb3B0aW9uXG4gICAgbWV0aG9kIGxpc3QgPSBzZXhwX29mX2xpc3RcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhIC0+IFNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiAnYSAtPiBTZXhwLnQgPSBmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCJcblxuICAgIG1ldGhvZCByZWNvcmQgZmllbGRzID1cbiAgICAgIExpc3RcbiAgICAgICAgKExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChsYWJlbCwgc2V4cCkgLT5cbiAgICAgICAgICAgICBTZXhwLkxpc3QgWyBBdG9tIGxhYmVsOyBzZXhwIF0pKVxuXG4gICAgbWV0aG9kIGNvbnN0ciB0YWcgYXJncyA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGggW10gLT4gQXRvbSB0YWcgfCBfIC0+IExpc3QgKEF0b20gdGFnIDo6IGFyZ3MpXG5cbiAgICBtZXRob2QgdHVwbGUgbCA9IExpc3QgbFxuICBlbmRcblxubGV0IHNleHBfb2YgPSBuZXcgc2V4cF9vZlxuIiwiIyAxIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gXG5vcGVuIExleGluZ1xuXG5sZXQgdXBkYXRlX2xvYyBsZXhidWYgbGluZXNfdG9fc2tpcCA9XG4gIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IHBvcyB3aXRoXG4gICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyBsaW5lc190b19za2lwO1xuICAgIHBvc19ib2wgPSBwb3MucG9zX2NudW07XG4gIH1cblxuIyAxMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBza2lwX2hhc2hfYmFuZyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTQgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMyApXG4jIDExMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAxIC0+XG4jIDE2IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDEgKVxuIyAxMTggXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMiAtPlxuIyAxNyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgICggKCkgKVxuIyAxMjMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4gSW1wb3J0XG5cbmxldCB3aXRoX291dHB1dCBmbiB+YmluYXJ5IH5mID1cbiAgbWF0Y2ggZm4gd2l0aFxuICB8IE5vbmUgfCBTb21lIFwiLVwiIC0+XG4gICAgICAoKiBGbGlwcGluZyBiYWNrIGFuZCBmb3J0aCBmcm9tIGJpbmFyeSB0byB0ZXh0IGlzIG5vdFxuICAgICAgICAgYSBnb29kIGlkZWEsIHNvIHdlJ2xsIG1ha2UgdHdvIHNpbXBsaWZ5aW5nIGFzc3VtcHRpb25zOlxuICAgICAgICAgMS4gQXNzdW1lIHRoYXQgbm90aGluZyBpcyBidWZmZXJlZCBvbiBzdGRvdXQgYmVmb3JlXG4gICAgICAgICAgICBlbnRlcmluZyBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgICAgIGZsdXNoIHRoZSBzdGRvdXQgb24gZW50cnkuXG4gICAgICAgICAyLiBBc3N1bWUgdGhhdCBub3RoaW5nIGVsc2UgaXMgc2VudCB0byBzdGRvdXQgYWZ0ZXJcbiAgICAgICAgICAgIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgaXQgaXMgc2FmZSB0byBsZWF2ZSBzdGRvdXRcbiAgICAgICAgICAgIGNoYW5uZWwgaW4gYmluYXJ5IG1vZGUgKG9yIHRleHQgbW9kZSBpZiBbYmluYXJ5PXRydWVdKVxuICAgICAgICAgICAgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGlzIGRvbmUuICopXG4gICAgICBzZXRfYmluYXJ5X21vZGVfb3V0IHN0ZG91dCBiaW5hcnk7XG4gICAgICBmIHN0ZG91dFxuICB8IFNvbWUgZm4gLT4gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5iaW5hcnkgfmZcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiB8IEltcGxcblxuICBsZXQgb2ZfZmlsZW5hbWUgZm4gOiB0IG9wdGlvbiA9XG4gICAgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbFwiIHRoZW4gU29tZSBJbXBsXG4gICAgZWxzZSBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1saVwiIHRoZW4gU29tZSBJbnRmXG4gICAgZWxzZSBOb25lXG5cbiAgbGV0IGRlc2NyaWJlID0gZnVuY3Rpb24gSW1wbCAtPiBcImltcGxlbWVudGF0aW9uXCIgfCBJbnRmIC0+IFwiaW50ZXJmYWNlXCJcbiAgbGV0IGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBQb2x5LmVxdWFsXG5lbmRcblxubW9kdWxlIEludGZfb3JfaW1wbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG5cbiAgbGV0IG1hcCB0IChtYXAgOiBBc3RfdHJhdmVyc2UubWFwKSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgeClcblxuICBsZXQgbWFwX3dpdGhfY29udGV4dCB0IChtYXAgOiBfIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0KSBjdHggPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgY3R4IHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSBjdHggeClcblxuICBsZXQga2luZCA6IF8gLT4gS2luZC50ID0gZnVuY3Rpb24gSW50ZiBfIC0+IEludGYgfCBJbXBsIF8gLT4gSW1wbFxuZW5kXG5cbm1vZHVsZSBBc3RfaW8gPSBzdHJ1Y3RcbiAgdHlwZSBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKVxuXG4gIGxldCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pXG4gICgqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBpbnB1dCB2ZXJzaW9uIGNhbid0IGJlIGRldGVybWluZWQgZHVlIHRvXG4gICAgICBsb2FkaW5nIG9yIHByZXByb2Nlc3NpbmcgZXJyb3JzICopXG5cbiAgdHlwZSB0ID0ge1xuICAgIGlucHV0X25hbWUgOiBzdHJpbmc7XG4gICAgaW5wdXRfdmVyc2lvbiA6IGlucHV0X3ZlcnNpb247XG4gICAgYXN0IDogSW50Zl9vcl9pbXBsLnQ7XG4gIH1cblxuICB0eXBlIHJlYWRfZXJyb3IgPVxuICAgIHwgTm90X2FfYmluYXJ5X2FzdFxuICAgIHwgVW5rbm93bl92ZXJzaW9uIG9mIHN0cmluZyAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuICAgIHwgU3lzdGVtX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG5cbiAgdHlwZSBpbnB1dF9zb3VyY2UgPSBTdGRpbiB8IEZpbGUgb2Ygc3RyaW5nXG4gIHR5cGUgaW5wdXRfa2luZCA9IFBvc3NpYmx5X3NvdXJjZSBvZiBLaW5kLnQgKiBzdHJpbmcgfCBOZWNlc3NhcmlseV9iaW5hcnlcblxuICBsZXQgcmVhZF9lcnJvcl90b19zdHJpbmcgKGVycm9yIDogcmVhZF9lcnJvcikgPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vdF9hX2JpbmFyeV9hc3QgLT4gXCJFcnJvcjogTm90IGEgYmluYXJ5IGFzdFwiXG4gICAgfCBVbmtub3duX3ZlcnNpb24gKHMsIF8pIC0+IFwiRXJyb3I6IFVua25vd24gdmVyc2lvbiBcIiBeIHNcbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciAobG9jLCBfKSAtPlxuICAgICAgICBcIlNvdXJjZSBwYXJzZSBlcnJvcjpcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG4gICAgfCBTeXN0ZW1fZXJyb3IgKGxvYywgXykgLT4gXCJTeXN0ZW0gZXJyb3I6IFwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcblxuICBsZXQgcGFyc2Vfc291cmNlX2NvZGUgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgaWNcbiAgICAgID1cbiAgICAoKiBUaGUgaW5wdXQgdmVyc2lvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmYWN0IHRoYXQgdGhlIGlucHV0IHdpbGwgZ2V0IHBhcnNlZCBieVxuICAgICAgIHRoZSBjdXJyZW50IGNvbXBpbGVyIFBhcnNlIG1vZHVsZSAqKVxuICAgIGxldCBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgaW5cbiAgICB0cnlcbiAgICAgICgqIFRvIHRlc3QgaWYgYSBmaWxlIGlzIGFuIEFTVCBmaWxlLCB3ZSBoYXZlIHRvIHJlYWQgdGhlIGZpcnN0IGZldyBieXRlcyBvZiB0aGVcbiAgICAgICAgIGZpbGUuIElmIGl0IGlzIG5vdCwgd2UgaGF2ZSB0byBwYXJzZSB0aGVzZSBieXRlcyBhbmQgdGhlIHJlc3Qgb2YgdGhlIGZpbGUgYXNcbiAgICAgICAgIHNvdXJjZSBjb2RlLlxuICAgICAgICAgVGhlIGNvbXBpbGVyIGp1c3QgZG9lcyBbc2Vla19vbiAwXSBpbiB0aGlzIGNhc2UsIGhvd2V2ZXIgdGhpcyBkb2Vzbid0IHdvcmtcbiAgICAgICAgIHdoZW4gdGhlIGlucHV0IGlzIGEgcGlwZS5cbiAgICAgICAgIFdoYXQgd2UgZG8gaXMgd2UgYnVpbGQgYSBzdHJpbmcgb2YgdGhlIHdob2xlIHNvdXJjZSwgYXBwZW5kIHRoZSBwcmVmaXhcbiAgICAgICAgIGFuZCBidWlsdCBhIGxleGluZyBidWZmZXIgZnJvbSB0aGF0LlxuICAgICAgICAgV2UgaGF2ZSB0byBwdXQgYWxsIHRoZSBzb3VyY2UgaW50byB0aGUgbGV4aW5nIGJ1ZmZlciBhdCBvbmNlIHRoaXMgd2F5XG4gICAgICAgICBmb3Igc291cmNlIHF1b3RhdGlvbiB0byB3b3JrIGluIGVycm9yIG1lc3NhZ2VzLlxuICAgICAgICAgU2VlIG9jYW1sIzEyMjM4IGFuZCBvY2FtbC9kcml2ZXIvcHBhcnNlLm1sLiAqKVxuICAgICAgbGV0IGFsbF9zb3VyY2UgPSBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBeIEluX2NoYW5uZWwuaW5wdXRfYWxsIGljIGluXG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGFsbF9zb3VyY2UgaW5cbiAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHsgbGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBpbnB1dF9uYW1lIH07XG4gICAgICBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X2xleGJ1ZiAoU29tZSBsZXhidWYpO1xuICAgICAgU2tpcF9oYXNoX2Jhbmcuc2tpcF9oYXNoX2JhbmcgbGV4YnVmO1xuICAgICAgbGV0IGFzdCA6IEludGZfb3JfaW1wbC50ID1cbiAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgIHwgSW50ZiAtPiBJbnRmIChQYXJzZS5pbnRlcmZhY2UgbGV4YnVmKVxuICAgICAgICB8IEltcGwgLT4gSW1wbCAoUGFyc2UuaW1wbGVtZW50YXRpb24gbGV4YnVmKVxuICAgICAgaW5cbiAgICAgIE9rIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCBtYWdpY19sZW5ndGggPSBTdHJpbmcubGVuZ3RoIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbiAgbGV0IHJlYWRfbWFnaWMgaWMgPVxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyBidWYgfnBvczowIH5sZW4gaW5cbiAgICBpZiBsZW4gPSBtYWdpY19sZW5ndGggdGhlbiBPayBzIGVsc2UgRXJyb3Igc1xuXG4gIGxldCBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWUgPVxuICAgIGxldCBzZXRfaW5wdXRfbGV4YnVmIGljID1cbiAgICAgICgqIHNldCBpbnB1dCBsZXhidWYgZm9yIGVycm9yIG1lc3NhZ2VzLiAqKVxuICAgICAgbGV0IHNvdXJjZSA9IEluX2NoYW5uZWwuaW5wdXRfYWxsIGljIGluXG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHNvdXJjZSBpblxuICAgICAgQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9sZXhidWYgKFNvbWUgbGV4YnVmKTtcbiAgICAgIGxleGJ1ZlxuICAgIGluXG4gICAgbWF0Y2ggSW5fY2hhbm5lbC53aXRoX2ZpbGUgfmJpbmFyeTp0cnVlIGlucHV0X25hbWUgfmY6c2V0X2lucHV0X2xleGJ1ZiB3aXRoXG4gICAgfCAoXyA6IExleGluZy5sZXhidWYpIC0+ICgpXG4gICAgfCBleGNlcHRpb24gU3lzX2Vycm9yIF8gLT4gKClcblxuICBsZXQgZnJvbV9jaGFubmVsIGNoIH5pbnB1dF9raW5kID1cbiAgICBsZXQgaGFuZGxlX25vbl9iaW5hcnkgcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgPVxuICAgICAgbWF0Y2ggaW5wdXRfa2luZCB3aXRoXG4gICAgICB8IFBvc3NpYmx5X3NvdXJjZSAoa2luZCwgaW5wdXRfbmFtZSkgLT5cbiAgICAgICAgICBwYXJzZV9zb3VyY2VfY29kZSB+a2luZCB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgY2hcbiAgICAgIHwgTmVjZXNzYXJpbHlfYmluYXJ5IC0+IEVycm9yIE5vdF9hX2JpbmFyeV9hc3RcbiAgICBpblxuICAgICgqIE1hcnNoYWxsZWQgQVNUIG11c3QgYmUgcmVhZCBpbiBiaW5hcnkgbW9kZS4gRXZlbiB0aG91Z2ggd2UgZG9uJ3Qga25vd1xuICAgICAgIGJlZm9yZSByZWFkaW5nIHRoZSBtYWdpYyBudW1iZXIgd2hlbiB0aGUgZmlsZSBoYXMgYSBtYXJzaGFsbGVkIEFTVCxcbiAgICAgICBpdCBpcyBzYWZlIHRvIHJlYWQgc291cmNlIGZpbGVzIGluIGJpbmFyeSBtb2RlLiAqKVxuICAgIHNldF9iaW5hcnlfbW9kZV9pbiBjaCB0cnVlO1xuICAgIG1hdGNoIHJlYWRfbWFnaWMgY2ggd2l0aFxuICAgIHwgRXJyb3IgcyAtPiBoYW5kbGVfbm9uX2JpbmFyeSBzXG4gICAgfCBPayBzIC0+IChcbiAgICAgICAgbWF0Y2ggRmluZF92ZXJzaW9uLmZyb21fbWFnaWMgcyB3aXRoXG4gICAgICAgIHwgSW50ZiAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW50ZiAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc2lnbmF0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBJbXBsIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbXBsIChJbnB1dF90b19wcHhsaWIuY29weV9zdHJ1Y3R1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IFVua25vd24gLT5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICB8fCBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgIHRoZW4gRXJyb3IgKFVua25vd25fdmVyc2lvbiAocywgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKVxuICAgICAgICAgICAgZWxzZSBoYW5kbGVfbm9uX2JpbmFyeSBzKVxuXG4gIGxldCByZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBpbnB1dF9zb3VyY2Ugd2l0aFxuICAgICAgfCBTdGRpbiAtPlxuICAgICAgICAgIHNldF9iaW5hcnlfbW9kZV9pbiBzdGRpbiB0cnVlO1xuICAgICAgICAgIGZyb21fY2hhbm5lbCBzdGRpbiB+aW5wdXRfa2luZFxuICAgICAgfCBGaWxlIGZuIC0+IEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQpXG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSkpXG5cbiAgbGV0IHdyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbik7IGFzdCB9XG4gICAgICB+YWRkX3BweF9jb250ZXh0ID1cbiAgICBsZXQgbW9kdWxlIFBweGxpYl90b19pbnB1dCA9IENvbnZlcnQgKEpzKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBsZXQgbW9kdWxlIE9jYW1sX3RvX2lucHV0ID0gQ29udmVydCAoQ29tcGlsZXJfdmVyc2lvbikgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbWF0Y2ggYXN0IHdpdGhcbiAgICB8IEludGYgc2cgLT5cbiAgICAgICAgbGV0IHNnID1cbiAgICAgICAgICBpZiBhZGRfcHB4X2NvbnRleHQgdGhlblxuICAgICAgICAgICAgU2VsZWN0ZWRfYXN0LlRvX29jYW1sLmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICB8PiBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zaWcgfnRvb2xfbmFtZTpcInBweF9kcml2ZXJcIlxuICAgICAgICAgICAgfD4gT2NhbWxfdG9faW5wdXQuY29weV9zaWduYXR1cmVcbiAgICAgICAgICBlbHNlIFBweGxpYl90b19pbnB1dC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICBpblxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIElucHV0X3ZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXI7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBpbnB1dF9uYW1lO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2Mgc2dcbiAgICB8IEltcGwgc3QgLT5cbiAgICAgICAgbGV0IHN0ID1cbiAgICAgICAgICBpZiBhZGRfcHB4X2NvbnRleHQgdGhlblxuICAgICAgICAgICAgU2VsZWN0ZWRfYXN0LlRvX29jYW1sLmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgICAgICB8PiBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweF9kcml2ZXJcIlxuICAgICAgICAgICAgfD4gT2NhbWxfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmVcbiAgICAgICAgICBlbHNlIFBweGxpYl90b19pbnB1dC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICBpblxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIElucHV0X3ZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXI7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBpbnB1dF9uYW1lO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2Mgc3RcblxuICBtb2R1bGUgUmVhZF9iaW4gPSBzdHJ1Y3RcbiAgICB0eXBlIGFzdCA9IEludGYgb2Ygc2lnbmF0dXJlIHwgSW1wbCBvZiBzdHJ1Y3R1cmVcbiAgICB0eXBlIHQgPSB7IGFzdCA6IGFzdDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgICBsZXQgcmVhZF9iaW5hcnkgZm4gPVxuICAgICAgbWF0Y2hcbiAgICAgICAgSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZDpOZWNlc3NhcmlseV9iaW5hcnkpXG4gICAgICB3aXRoXG4gICAgICB8IE9rIHsgYXN0OyBpbnB1dF9uYW1lOyBfIH0gLT5cbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgICB8IEltcGwgc3RydWN0dXJlIC0+IEltcGwgc3RydWN0dXJlXG4gICAgICAgICAgICB8IEludGYgc2lnbmF0dXJlIC0+IEludGYgc2lnbmF0dXJlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IGFzdDsgaW5wdXRfbmFtZSB9XG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKHJlYWRfZXJyb3JfdG9fc3RyaW5nIGUpXG5cbiAgICBsZXQgZ2V0X2FzdCB0ID0gdC5hc3RcbiAgICBsZXQgZ2V0X2lucHV0X25hbWUgdCA9IHQuaW5wdXRfbmFtZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3lzdGVtID0gc3RydWN0XG4gIGxldCBydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQgfm91dHB1dCA9XG4gICAgbGV0IGNvbW1hbmQgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyA+ICVzXCIgcHBcbiAgICAgICAgKGlmIFN0cmluZy5lcXVhbCBpbnB1dCBcIi1cIiB0aGVuIFwiXCIgZWxzZSBTdGRsaWIuRmlsZW5hbWUucXVvdGUgaW5wdXQpXG4gICAgICAgIChTdGRsaWIuRmlsZW5hbWUucXVvdGUgb3V0cHV0KVxuICAgIGluXG4gICAgaWYgU3RkbGliLlN5cy5jb21tYW5kIGNvbW1hbmQgPSAwIHRoZW4gT2sgKClcbiAgICBlbHNlIEVycm9yIChjb21tYW5kLCBBc3RfaW8uZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcbm1vZHVsZSBGaWxlbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZVxuXG4oKiBUT0RPOiBtYWtlIHRoZSBcImRlcml2aW5nLlwiIGRlcGVuZCBvbiB0aGUgbWF0Y2hpbmcgYXR0cmlidXRlIG5hbWUuICopXG5sZXQgZW5kX21hcmtlcl9zaWcgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFNpZ25hdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBlbmRfbWFya2VyX3N0ciA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU3RydWN0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgdHlwZSAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGdldF9sb2MgOiB0IC0+IExvY2F0aW9uLnRcbiAgdmFsIGVuZF9tYXJrZXIgOiAodCwgdW5pdCkgQXR0cmlidXRlLkZsb2F0aW5nLnRcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpIDogc2lnXG4gICAgdmFsIGFwcGx5IDpcbiAgICAgIDwgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSBULnRcbiAgICAgIDsgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSBULnRcbiAgICAgIDsgLi4gPiAtPlxuICAgICAgdCBULnRcbiAgZW5kXG5cbiAgdmFsIHBhcnNlIDogTGV4aW5nLmxleGJ1ZiAtPiB0IGxpc3RcbiAgdmFsIHBwIDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX3NleHAgOiB0IC0+IFNleHAudFxuZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGV4dHJhY3RfcHJlZml4IH5wb3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwicHB4bGliOiBbQEBAQEBAJXNdIGF0dHJpYnV0ZSBtaXNzaW5nXCJcbiAgICAgICAgICAgICAgICAoQXR0cmlidXRlLkZsb2F0aW5nLm5hbWUgTS5lbmRfbWFya2VyKSxcbiAgICAgICAgICAgICAgW10gKVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5GbG9hdGluZy5jb252ZXJ0X3JlcyBbIE0uZW5kX21hcmtlciBdIHggd2l0aFxuICAgICAgICAgIHwgT2sgTm9uZSAtPiBsb29wICh4IDo6IGFjYykgbFxuICAgICAgICAgIHwgT2sgKFNvbWUgKCkpIC0+IE9rIChMaXN0LnJldiBhY2MsIChNLmdldF9sb2MgeCkubG9jX3N0YXJ0KVxuICAgICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gICAgICAgICAgfCBleGNlcHRpb24gRmFpbHVyZSBfIC0+IGxvb3AgKHggOjogYWNjKSBsKVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cbiAgbGV0IHJlbW92ZV9sb2MgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgICBtZXRob2QhIGxvY2F0aW9uIF8gPSBMb2NhdGlvbi5ub25lXG4gICAgICBtZXRob2QhIGxvY2F0aW9uX3N0YWNrIF8gPSBbXVxuICAgIGVuZFxuXG4gIG1vZHVsZSBNX21hcCA9IE0uVHJhbnNmb3JtIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IHJlbW92ZV9sb2MgeCA9IE1fbWFwLmFwcGx5IHJlbW92ZV9sb2MgeFxuICBsZXQgcmVjIGxhc3QgcHJldiA9IGZ1bmN0aW9uIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgZGlmZl9hc3RzIH5nZW5lcmF0ZWQgfnJvdW5kX3RyaXAgPVxuICAgIGxldCB3aXRoX3RlbXBfZmlsZSBmID1cbiAgICAgIEV4bi5wcm90ZWN0eFxuICAgICAgICAoRmlsZW5hbWUudGVtcF9maWxlIFwicHB4bGliXCIgXCJcIilcbiAgICAgICAgfmZpbmFsbHk6U3RkbGliLlN5cy5yZW1vdmUgfmZcbiAgICBpblxuICAgIHdpdGhfdGVtcF9maWxlIChmdW4gZm4xIC0+XG4gICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gZm4yIC0+XG4gICAgICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIG91dCAtPlxuICAgICAgICAgICAgICAgIGxldCBkdW1wIGZuIGFzdCA9XG4gICAgICAgICAgICAgICAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZ1biBvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgU2V4cC5wcF9odW0gcHBmIChNLnRvX3NleHAgYXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZHVtcCBmbjEgZ2VuZXJhdGVkO1xuICAgICAgICAgICAgICAgIGR1bXAgZm4yIHJvdW5kX3RyaXA7XG4gICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICBcInBhdGRpZmYgLWFzY2lpIC1hbHQtb2xkIGdlbmVyYXRlZCAtYWx0LW5ldyBcXFxuICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBvdXQpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgb2sgPVxuICAgICAgICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZCA9IDFcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcImRpZmYgLS1sYWJlbCBnZW5lcmF0ZWQgLS1sYWJlbCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBvdXQpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZCA9IDFcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmIG9rIHRoZW4gSW5fY2hhbm5lbC5yZWFkX2FsbCBvdXRcbiAgICAgICAgICAgICAgICBlbHNlIFwiPG5vIGRpZmZlcmVuY2VzIHByb2R1Y2VkIGJ5IGRpZmY+XCIpKSlcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHMgPVxuICAgIG1hdGNoIE0ucGFyc2UgKExleGluZy5mcm9tX3N0cmluZyBzKSB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCByZWMgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZSA9XG4gICAgbWF0Y2ggKGV4cGVjdGVkLCBzb3VyY2UpIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAoKVxuICAgIHwgW10sIHggOjogbCAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IChNLmdldF9sb2MgeCkgd2l0aCBsb2NfZW5kID0gKE0uZ2V0X2xvYyAobGFzdCB4IGwpKS5sb2NfZW5kIH1cbiAgICAgICAgaW5cbiAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgW11cbiAgICB8IF8sIFtdIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgTG9jYXRpb24ubG9jX2dob3N0ID0gZmFsc2U7IGxvY19zdGFydCA9IGVuZF9wb3M7IGxvY19lbmQgPSBlbmRfcG9zIH1cbiAgICAgICAgaW5cbiAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgZXhwZWN0ZWRcbiAgICB8IHggOjogZXhwZWN0ZWQsIHkgOjogc291cmNlIC0+XG4gICAgICAgIGxldCBsb2MgPSBNLmdldF9sb2MgeSBpblxuICAgICAgICBsZXQgeCA9IHJlbW92ZV9sb2MgeCBpblxuICAgICAgICBsZXQgeSA9IHJlbW92ZV9sb2MgeSBpblxuICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHkgdGhlbiAoXG4gICAgICAgICAgbGV0IHJvdW5kX3RyaXAgPVxuICAgICAgICAgICAgcmVtb3ZlX2xvYyAocGFyc2Vfc3RyaW5nIChGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgTS5wcCB4KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIFBvbHkuKCA8PiApIHggcm91bmRfdHJpcCB0aGVuXG4gICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgICAgICAgICAgICBcInBweGxpYjogdGhlIGNvcnJlY3RlZCBjb2RlIGRvZXNuJ3Qgcm91bmQtdHJpcC5cXG5cXFxuICAgICAgICAgICAgICAgVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB0aGUgT0NhbWwgcHJpbnRlcjpcXG5cXFxuICAgICAgICAgICAgICAgJXNcIlxuICAgICAgICAgICAgICAoZGlmZl9hc3RzIH5nZW5lcmF0ZWQ6eCB+cm91bmRfdHJpcCk7XG4gICAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgWyB4IF0pO1xuICAgICAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5cbiAgbGV0IGRvX21hdGNoIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIHNvdXJjZSA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgZXh0cmFjdF9wcmVmaXggfnBvcyBzb3VyY2UgPj58IGZ1biAoc291cmNlLCBlbmRfcG9zKSAtPlxuICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcbmVuZFxuXG4oKiQqKVxubW9kdWxlIFN0ciA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJ1Y3R1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzdHJfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zdHJcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3N0cnVjdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmltcGxlbWVudGF0aW9uXG4gIGxldCBwcCA9IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3N0cnVjdHVyZV9pdGVtXG5lbmQpXG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbm1vZHVsZSBTaWcgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc2lnbmF0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc2lnX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc2lnXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzaWduYXR1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbnRlcmZhY2VcbiAgbGV0IHBwID0gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlX2l0ZW1cbmVuZClcblxuKCokKilcblxubGV0IG1hdGNoX3N0cnVjdHVyZV9yZXMgPSBTdHIuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3N0cnVjdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc3RydWN0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBtYXRjaF9zaWduYXR1cmVfcmVzID0gU2lnLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zaWduYXR1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3NpZ25hdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vblxuXG50eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQcHhfaW1wb3J0IDogdHlwZV9kZWNsYXJhdGlvbiB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogXyB0IC0+IHBhY2tlZFxuXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgUHB4X2ltcG9ydCAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuXG4gIGxldCBlcSA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBlcXVhbGl0eSA9XG4gICBmdW4gYSBiIC0+XG4gICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIENsYXNzX2V4cHIgLT4gRXFcbiAgICB8IENsYXNzX2ZpZWxkLCBDbGFzc19maWVsZCAtPiBFcVxuICAgIHwgQ2xhc3NfdHlwZSwgQ2xhc3NfdHlwZSAtPiBFcVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgQ2xhc3NfdHlwZV9maWVsZCAtPiBFcVxuICAgIHwgQ29yZV90eXBlLCBDb3JlX3R5cGUgLT4gRXFcbiAgICB8IEV4cHJlc3Npb24sIEV4cHJlc3Npb24gLT4gRXFcbiAgICB8IE1vZHVsZV9leHByLCBNb2R1bGVfZXhwciAtPiBFcVxuICAgIHwgTW9kdWxlX3R5cGUsIE1vZHVsZV90eXBlIC0+IEVxXG4gICAgfCBQYXR0ZXJuLCBQYXR0ZXJuIC0+IEVxXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgU2lnbmF0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCBTdHJ1Y3R1cmVfaXRlbSAtPiBFcVxuICAgIHwgUHB4X2ltcG9ydCwgUHB4X2ltcG9ydCAtPiBFcVxuICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKFBvbHkuKCA8PiApIChUIGEpIChUIGIpKTtcbiAgICAgICAgTmVcblxuICBsZXQgZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbCA9XG4gICAgbWF0Y2ggdHlwZV9kZWNsIHdpdGhcbiAgICB8IHsgcHR5cGVfbWFuaWZlc3QgPSBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gKG5hbWUsIF8pOyBfIH07IF8gfVxuICAgICAgLT5cbiAgICAgICAgbGV0IHZpcnR1YWxfcGF5bG9hZCA9XG4gICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX3R5cGUgfmxvYzp0eXBlX2RlY2wucHR5cGVfbG9jIFJlY3Vyc2l2ZVxuICAgICAgICAgICAgWyB0eXBlX2RlY2wgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0ciA9IFtdIGluXG4gICAgICAgIFNvbWUgKChuYW1lLCBQU3RyIFsgdmlydHVhbF9wYXlsb2FkIF0pLCBhdHRyKVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9leHRlbnNpb24gOiB0eXBlIGEuIGEgdCAtPiBhIC0+IChleHRlbnNpb24gKiBhdHRyaWJ1dGVzKSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBDbGFzc19leHByLCB7IHBjbF9kZXNjID0gUGNsX2V4dGVuc2lvbiBlOyBwY2xfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGU7IHBjZl9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlLCB7IHBjdHlfZGVzYyA9IFBjdHlfZXh0ZW5zaW9uIGU7IHBjdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBlOyBwY3RmX2F0dHJpYnV0ZXMgPSBhOyBfIH1cbiAgICAgIC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDb3JlX3R5cGUsIHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gZTsgcHR5cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBFeHByZXNzaW9uLCB7IHBleHBfZGVzYyA9IFBleHBfZXh0ZW5zaW9uIGU7IHBleHBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX2V4cHIsIHsgcG1vZF9kZXNjID0gUG1vZF9leHRlbnNpb24gZTsgcG1vZF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfdHlwZSwgeyBwbXR5X2Rlc2MgPSBQbXR5X2V4dGVuc2lvbiBlOyBwbXR5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFBhdHRlcm4sIHsgcHBhdF9kZXNjID0gUHBhdF9leHRlbnNpb24gZTsgcHBhdF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFBweF9pbXBvcnQsIHR5cGVfZGVjbCAtPiBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWVyZ2VfYXR0cmlidXRlc19yZXMgOlxuICAgICAgdHlwZSBhLlxuICAgICAgYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiAoYSwgTG9jYXRpb24uRXJyb3IudCBOb25FbXB0eUxpc3QudCkgcmVzdWx0ID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENsYXNzX2V4cHIgLT4gT2sgeyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSB4LnBjbF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4gT2sgeyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSB4LnBjZl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiBPayB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSB4LnBjdHlfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT5cbiAgICAgICAgT2sgeyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0geC5wY3RmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4gT2sgeyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0geC5wdHlwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IE9rIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IHgucGV4cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4gT2sgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0geC5wbW9kX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiBPayB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSB4LnBtdHlfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4gT2sgeyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0geC5wcGF0X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG4gICAgfCBQcHhfaW1wb3J0IC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcblxuICBsZXQgbWVyZ2VfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtZXJnZV9hdHRyaWJ1dGVzX3JlcyB0IHggYXR0cnNcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJleHRlbnNpb25cIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW4gKENvbnRleHQuVCBjdHgpIC0+IFNvbWUgKENvbnRleHQuZGVzYyBjdHgpKVxuXG5tb2R1bGUgTWFrZSAoQ2FsbGJhY2sgOiBzaWdcbiAgdHlwZSAnYSB0XG5lbmQpID1cbnN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHBheWxvYWRfcGFyc2VyID1cbiAgICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgICAgKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQgKiAnYiBDYWxsYmFjay50XG4gICAgICAgIC0+ICgnYSwgJ2MpIHBheWxvYWRfcGFyc2VyXG5cbiAgdHlwZSAoJ2NvbnRleHQsICdwYXlsb2FkKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2NvbnRleHQgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAocGF5bG9hZCwgJ3BheWxvYWQpIHBheWxvYWRfcGFyc2VyO1xuICAgIHdpdGhfYXJnIDogYm9vbDtcbiAgfVxuXG4gIGxldCBkZWNsYXJlIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIHdpdGhfYXJnOmJvb2wgLT5cbiAgICAgIHN0cmluZyAtPlxuICAgICAgYSBDb250ZXh0LnQgLT5cbiAgICAgIChwYXlsb2FkLCAnYiwgJ3BheWxvYWQpIEFzdF9wYXR0ZXJuLnQgLT5cbiAgICAgICdiIENhbGxiYWNrLnQgLT5cbiAgICAgIChhLCAncGF5bG9hZCkgdCA9XG4gICBmdW4gfndpdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgLT5cbiAgICAoKiBDaGVjayB0aGF0IHRoZXJlIGlzIG5vIGNvbGxpc2lvbnMgYmV0d2VlbiBwcHhfaW1wb3J0IGFuZCBjb3JlX3R5cGVcbiAgICAgICBleHRlbnNpb25zICopXG4gICAgKG1hdGNoIGNvbnRleHQgd2l0aFxuICAgIHwgQ29udGV4dC5QcHhfaW1wb3J0IC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgQ29yZV90eXBlKSBuYW1lXG4gICAgfCBDb250ZXh0LkNvcmVfdHlwZSAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIFBweF9pbXBvcnQpIG5hbWVcbiAgICB8IF8gLT4gKCkpO1xuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBFeHRlbnNpb24gcmVnaXN0cmFyIChDb250ZXh0LlQgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICAgICAgd2l0aF9hcmc7XG4gICAgfVxuXG4gIGxldCBmaW5kIHRzIChleHQgOiBleHRlbnNpb24pID1cbiAgICBsZXQgeyB0eHQgPSBuYW1lOyBsb2MgfSA9IGZzdCBleHQgaW5cbiAgICBsZXQgbmFtZSwgYXJnID0gTmFtZS5zcGxpdF9wYXRoIG5hbWUgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IF8gOjogXyA6OiBfIGFzIGwgLT5cbiAgICAgICAgRXJyb3JcbiAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIk11bHRpcGxlIG1hdGNoIGZvciBleHRlbnNpb25zOiAlc1wiXG4gICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICBbXSApXG4gICAgfCBbIHQgXSAtPlxuICAgICAgICBpZiAobm90IHQud2l0aF9hcmcpICYmIE9wdGlvbi5pc19zb21lIGFyZyB0aGVuXG4gICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgICAgICAgICAgXCJFeHRlbnNpb24gJXMgZG9lc24ndCBleHBlY3QgYSBwYXRoIGFyZ3VtZW50XCIgbmFtZSxcbiAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGFyZyA9XG4gICAgICAgICAgICBPcHRpb24ubWFwIGFyZyB+ZjooZnVuIHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgc2hpZnQgPSBTdHJpbmcubGVuZ3RoIG5hbWUgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gbG9jLmxvY19zdGFydCBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR4dCA9IExvbmdpZGVudC5wYXJzZSBzO1xuICAgICAgICAgICAgICAgICAgbG9jID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGxvYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhcnQgd2l0aCBwb3NfY251bSA9IHN0YXJ0LnBvc19jbnVtICsgc2hpZnQgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgKFNvbWUgKHQsIGFyZykpXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IGFyZzpMb25naWRlbnQudCBMb2MudCBvcHRpb24gLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY3R4IHBhdHQgZlxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjdHggcGF0dCAoZnVuIH5hcmc6XyAtPiBmKVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB+bG9jIGV4dCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgZmluZCB0cyBleHQgPj49IGZ1biByIC0+XG4gICAgbWF0Y2ggciB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+XG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmFyZykgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIFNvbWUgcGF5bG9hZFxuXG4gIGxldCBjb252ZXJ0IHRzIH5sb2MgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+bG9jIGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubW9kdWxlIE0gPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi50IC0+IGFyZzpMb25naWRlbnQudCBMb2MudCBvcHRpb24gLT4gJ2FcbmVuZClcblxudHlwZSAnYSBleHBhbmRlcl9yZXN1bHQgPSBTaW1wbGUgb2YgJ2EgfCBJbmxpbmUgb2YgJ2EgbGlzdFxuXG5tb2R1bGUgRm9yX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCAnYSBleHBhbmRlcl9yZXN1bHQpIE0udFxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gICAgICAgIHwgU2ltcGxlIHggLT4gU29tZSB4XG4gICAgICAgIHwgSW5saW5lIF8gLT4gZmFpbHdpdGggXCJFeHRlbnNpb24uY29udmVydFwiKVxuXG4gIGxldCBjb252ZXJ0IHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxuICBsZXQgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGggU2ltcGxlIHggLT4gU29tZSBbIHggXSB8IElubGluZSBsIC0+IFNvbWUgbClcblxuICBsZXQgY29udmVydF9pbmxpbmUgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG50eXBlIHQgPSBUIDogXyBGb3JfY29udGV4dC50IC0+IHRcblxubGV0IGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSA6IHR5cGUgYS4gZnVuYzpzdHJpbmcgLT4gYSBDb250ZXh0LnQgLT4gdW5pdCA9XG4gZnVuIH5mdW5jIGN0eCAtPlxuICBtYXRjaCBjdHggd2l0aFxuICB8IENvbnRleHQuQ2xhc3NfZmllbGQgLT4gKClcbiAgfCBDb250ZXh0LkNsYXNzX3R5cGVfZmllbGQgLT4gKClcbiAgfCBDb250ZXh0LlNpZ25hdHVyZV9pdGVtIC0+ICgpXG4gIHwgQ29udGV4dC5TdHJ1Y3R1cmVfaXRlbSAtPiAoKVxuICB8IGNvbnRleHQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIiVzOiAlcyBjYW4ndCBiZSBpbmxpbmVkXCIgZnVuY1xuICAgICAgICAoQ29udGV4dC5kZXNjIGNvbnRleHQpXG5cbmxldCByZWMgZmlsdGVyX2J5X2NvbnRleHQgOlxuICAgIHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gdCBsaXN0IC0+IGEgRm9yX2NvbnRleHQudCBsaXN0ID1cbiBmdW4gY29udGV4dCBleHBhbmRlcnMgLT5cbiAgbWF0Y2ggZXhwYW5kZXJzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFQgdCA6OiByZXN0IC0+IChcbiAgICAgIG1hdGNoIENvbnRleHQuZXEgY29udGV4dCB0LmNvbnRleHQgd2l0aFxuICAgICAgfCBFcSAtPiB0IDo6IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdFxuICAgICAgfCBOZSAtPiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3QpXG5cbmxldCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIGN0eCAobmFtZSwgXykgPVxuICBpZlxuICAgIG5vdFxuICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEV4dGVuc2lvbiBuYW1lLnR4dFxuICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KVxuICB0aGVuXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgKENvbnRleHQuVCBjdHgpXG4gICAgICAgIFwiRXh0ZW5zaW9uIGAlcycgd2FzIG5vdCB0cmFuc2xhdGVkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgYWNjID1cbiAgICAgIGFjY1xuICAgICAgQCBbXG4gICAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgICAgXVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ29yZV90eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHBhdF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgUGF0dGVybiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNwYXR0ZXJuX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQZXhwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBFeHByZXNzaW9uIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdHlfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0Zl9leHRlbnNpb24gZXh0IC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjbF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc19leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNmX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc19maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtdHlfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV90eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFNpZ25hdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU3RydWN0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuICBlbmRcblxubGV0IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3BhdHRlcm5fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2V4cHJlc3Npb25fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX3R5cGVfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cbiAgZW5kXG5cbm1vZHVsZSBWMyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHQgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVcIjtcbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGspXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHRcbiAgICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gICAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGspXG5lbmRcblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm5cbiAgICAoRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGYpXG5cbmxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm5cbiAgICAoRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGYpXG5cbmxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsnKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHRcbiAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsnKVxuXG5sZXQgX19kZWNsYXJlX3BweF9pbXBvcnQgbmFtZSBleHBhbmQgPVxuICAoKiBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byB1bndyYXAgdGhlIHR5cGUgZGVjbGFyYXRpb24gZnJvbSB0aGUgcGF5bG9hZFxuICAgICBhc3NlbWJsZWQgYnkgW0NvbnRleHQuZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uXSAqKVxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX3R5cGUgcmVjdXJzaXZlIChfXyBeOjogbmlsKSBeOjogbmlsKSkgaW5cbiAgVjMuZGVjbGFyZSBuYW1lIENvbnRleHQuUHB4X2ltcG9ydCBwYXR0ZXJuIGV4cGFuZFxuXG5tb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSA9IGRlY2xhcmVcbiAgbGV0IGRlY2xhcmVfaW5saW5lID0gZGVjbGFyZV9pbmxpbmVcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vblxub3BlbiBXaXRoX2Vycm9yc1xubW9kdWxlIEUgPSBFeHRlbnNpb25cbm1vZHVsZSBFQyA9IEV4dGVuc2lvbi5Db250ZXh0XG5tb2R1bGUgQSA9IEF0dHJpYnV0ZVxubW9kdWxlIEFDID0gQXR0cmlidXRlLkNvbnRleHRcblxubW9kdWxlIFJ1bGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF0dHJfZ3JvdXBfaW5saW5lID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdW5wYWNrZWQgPSB7XG4gICAgICBhdHRyaWJ1dGUgOiAoJ2IsICdjKSBBdHRyaWJ1dGUudDtcbiAgICAgIGV4cGVjdCA6IGJvb2w7XG4gICAgICBleHBhbmQgOlxuICAgICAgICBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgICAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICAgICAnYiBsaXN0IC0+XG4gICAgICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgICAgICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIEF0dHJfaW5saW5lID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdW5wYWNrZWQgPSB7XG4gICAgICBhdHRyaWJ1dGUgOiAoJ2IsICdjKSBBdHRyaWJ1dGUudDtcbiAgICAgIGV4cGVjdCA6IGJvb2w7XG4gICAgICBleHBhbmQgOiBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBTcGVjaWFsX2Z1bmN0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIGlkZW50IDogTG9uZ2lkZW50LnQ7XG4gICAgICBleHBhbmQgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbiBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQ29uc3RhbnRfa2luZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEZsb2F0IHwgSW50ZWdlclxuICBlbmRcblxuICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdWZmaXggOiBjaGFyO1xuICAgICAga2luZCA6IENvbnN0YW50X2tpbmQudDtcbiAgICAgIGV4cGFuZCA6IExvY2F0aW9uLnQgLT4gc3RyaW5nIC0+IFBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgRXh0ZW5zaW9uIDogRXh0ZW5zaW9uLnQgdFxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uIDogU3BlY2lhbF9mdW5jdGlvbi50IHRcbiAgICAgIHwgQ29uc3RhbnQgOiBDb25zdGFudC50IHRcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXh0ZW5zaW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXh0ZW5zaW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuXG4gICAgdHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxuICAgIGxldCBlcSA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBlcXVhbGl0eSA9XG4gICAgIGZ1biBhIGIgLT5cbiAgICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgICB8IEV4dGVuc2lvbiwgRXh0ZW5zaW9uIC0+IEVxXG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24sIFNwZWNpYWxfZnVuY3Rpb24gLT4gRXFcbiAgICAgIHwgQ29uc3RhbnQsIENvbnN0YW50IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbCwgQXR0cl9zdHJfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbCwgQXR0cl9zaWdfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0LCBBdHRyX3N0cl90eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCwgQXR0cl9zaWdfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfZXhjZXB0aW9uLCBBdHRyX3N0cl9leGNlcHRpb24gLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uLCBBdHRyX3NpZ19leGNlcHRpb24gLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IF8gLT4gTmVcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhIEZpZWxkLnQgKiAnYSAtPiB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9ncm91cF9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAnYiBsaXN0IC0+XG4gICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAnYSBsaXN0KSAtPlxuICAgIHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgbGV0IHJlYyBmaWx0ZXIgOiB0eXBlIGEuIGEgRmllbGQudCAtPiB0IGxpc3QgLT4gYSBsaXN0ID1cbiAgIGZ1biBmaWVsZCBsIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgVCAoZmllbGQnLCB4KSA6OiBsIC0+IChcbiAgICAgICAgbWF0Y2ggRmllbGQuZXEgZmllbGQgZmllbGQnIHdpdGhcbiAgICAgICAgfCBGaWVsZC5FcSAtPiB4IDo6IGZpbHRlciBmaWVsZCBsXG4gICAgICAgIHwgRmllbGQuTmUgLT4gZmlsdGVyIGZpZWxkIGwpXG5cbiAgbGV0IGV4dGVuc2lvbiBleHQgPSBUIChFeHRlbnNpb24sIGV4dClcblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbiBpZCBmID1cbiAgICBUIChTcGVjaWFsX2Z1bmN0aW9uLCB7IG5hbWUgPSBpZDsgaWRlbnQgPSBMb25naWRlbnQucGFyc2UgaWQ7IGV4cGFuZCA9IGYgfSlcblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbicgaWRlbnQgZiA9XG4gICAgVCAoU3BlY2lhbF9mdW5jdGlvbiwgeyBuYW1lID0gTG9uZ2lkZW50Lm5hbWUgaWRlbnQ7IGlkZW50OyBleHBhbmQgPSBmIH0pXG5cbiAgbGV0IGNvbnN0YW50IGtpbmQgc3VmZml4IGV4cGFuZCA9IFQgKENvbnN0YW50LCB7IHN1ZmZpeDsga2luZDsgZXhwYW5kIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdGVkX2NvZGVfaG9vayA9IHN0cnVjdFxuICB0eXBlICdhIHNpbmdsZV9vcl9tYW55ID0gU2luZ2xlIG9mICdhIHwgTWFueSBvZiAnYSBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgRXh0ZW5zaW9uLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIHNpbmdsZV9vcl9tYW55IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuICBsZXQgcmVwbGFjZSB0IGNvbnRleHQgbG9jIHggPSB0LmYgY29udGV4dCBsb2MgeFxuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE1hbnkgW10gLT4gKClcbiAgICB8IF8gLT4gdC5mIGNvbnRleHQgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IHhcbmVuZFxuXG4oKiBVc2VkIHRvIGluc2VydCBlcnJvciBleHRlbnNpb25zICopXG5sZXQgd3JhcF9leHRlbnNpb24gOiB0eXBlIGEuIGxvYzpMb2NhdGlvbi50IC0+IGEgRUMudCAtPiBhIC0+IGV4dGVuc2lvbiAtPiBhID1cbiBmdW4gfmxvYyB0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uIC0+XG4gICgqIFByZWZpeGluZyBjb25zdHJ1Y3RvcnMgd2l0aCB0aGUgbW9kdWxlIHBhdGggaXMgbmVjZXNzYXJ5IGZvciBPQ2FtbCA8IDQuMDcsXG4gICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzY4NTIgKilcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRUMuQ2xhc3NfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjbF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc19maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjZl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0eV9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlX2ZpZWxkIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0Zl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Db3JlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wdHlwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkV4cHJlc3Npb24gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wZXhwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLk1vZHVsZV9leHByIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucG1vZF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuUGF0dGVybiAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBwYXRfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuU2lnbmF0dXJlX2l0ZW0gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuICB8IEVDLlN0cnVjdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5QcHhfaW1wb3J0IC0+XG4gICAgICAoKiBJbnNlcnQgdGhlIGVycm9yIGluIHRoZSB0eXBlIGRlY2wgbWFuaWZlc3QgKilcbiAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9XG4gICAgICAgIFNvbWUgKEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb24pXG4gICAgICBpblxuICAgICAgeyBvcmlnaW5hbF9ub2RlIHdpdGggcHR5cGVfbWFuaWZlc3QgfVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gPVxuICBsZXQgZXJyb3IgPSBleG5fdG9fbG9jX2Vycm9yIGV4biBpblxuICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gIGxldCBleHRlbnNpb24gPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgKGV4dGVuc2lvbiwgbG9jKVxuXG5sZXQgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgd3JhcF9leHRlbnNpb24gfmxvYyBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uXG5cbmxldCBleG5fdG9fc3RyaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCBleG5fdG9fc2lnaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCByZWMgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgRUMubWVyZ2VfYXR0cmlidXRlc19yZXMgY29udGV4dCB4IGF0dHJzXG4gICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzKVxuXG5sZXQgbWFwX25vZGUgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+aG9vayB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICBXaXRoX2Vycm9ycy5yZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4bikpKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHRcbiAgICAgICAgICAgIChFQy5tZXJnZV9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRycylcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICA+PnwgZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBsb2MgKFNpbmdsZSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgZ2VuZXJhdGVkX2NvZGUpXG5cbmxldCByZWMgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rIH5lbWJlZF9lcnJvcnNcbiAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gW11cbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhlc2UgdHdvIGxldHMgZm9yY2UgdGhlIGV2YWx1YXRpb24gb3JkZXIsIHNvIHRoYXQgZXJyb3JzIGFyZSByZXBvcnRlZCBpbiB0aGVcbiAgICAgICAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgZmlsZS4gKilcbiAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGdldF9sb2MgeCBpblxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIFsgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuIF0pKVxuICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICAgICAgfCBTb21lIGNvbnZlcnRlZCAtPlxuICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgY29udmVydGVkIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICAgICAgICA+Pj0gZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBleHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAoTWFueSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gY29kZSAtPiBnZW5lcmF0ZWRfY29kZSBAIGNvZGUpKVxuXG5sZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG5sZXQgdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnMgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICBtYXRjaFxuICAgIExpc3QubWFwIHNwZWNpYWxfZnVuY3Rpb25zXG4gICAgICB+ZjooZnVuIHsgUnVsZS5TcGVjaWFsX2Z1bmN0aW9uLmlkZW50OyBleHBhbmQ7IF8gfSAtPiAoaWRlbnQsIGV4cGFuZCkpXG4gICAgKCogV2UgZXhwZWN0IHRoZSBsb29rdXAgdG8gZmFpbCBtb3N0IG9mIHRoZSB0aW1lLCBieSBtYWtpbmcgdGhlIHRhYmxlIGJpZyAoYW5kXG4gICAgICAgc3BhcnNlKSwgd2UgbWFrZSBpdCBtb3JlIGxpa2VseSB0byBmYWlsIHF1aWNrbHkgKilcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0IH5zaXplOihtYXggMTAyNCAoTGlzdC5sZW5ndGggc3BlY2lhbF9mdW5jdGlvbnMgKiAyKSlcbiAgd2l0aFxuICB8IE9rIHRhYmxlIC0+IHRhYmxlXG4gIHwgRXJyb3IgaWRlbnQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkNvbnRleHRfZnJlZS5WMS5tYXBfdG9wX2Rvd246ICVzIHByZXNlbnQgdHdpY2UgaW4gbGlzdCBvZiBzcGVjaWFsIFxcXG4gICAgICAgICBmdW5jdGlvbnNcIlxuICAgICAgICAoTGlzdC5maW5kX21hcF9leG4gc3BlY2lhbF9mdW5jdGlvbnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgaWYgUG9seS5lcXVhbCByLmlkZW50IGlkZW50IHRoZW4gU29tZSByLm5hbWUgZWxzZSBOb25lKSlcblxuKCogW2dldF9ncm91cCBhdHRyIGxdIHJldHVybnMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZm9yIGVhY2hcbiAgIG5vZGUgaW4gW2xdLlxuICAgSWYgW2xdIGlzIGVtcHR5IG9yIGlmIG5vbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXZlIGFuIGF0dHJpYnV0ZSBhdHRhY2hlZCxcbiAgIFtnZXRfZ3JvdXBdIHJldHVybnMgW05vbmVdLlxuICAgSWYgW2xdIGlzIG5vdCBlbXB0eSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGFzIGFuIGF0dHJpYnVlXG4gICBhdHRhY2hlZCwgW2dldF9ncm91cF0gcmV0dXJucyB0aGUgZXF1aXZhbGVudCBvZlxuICAgW1NvbWUgKExpc3QubWFwIH5mOihBdHRyaWJ1dGUuZ2V0IGF0dHIpIGwpXS4gKilcbmxldCByZWMgZ2V0X2dyb3VwIGF0dHIgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBOb25lXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIGdldF9ncm91cCBhdHRyIGwgPj49IGZ1biBncm91cCAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYXR0ciB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lID4+fCBmdW4gYXR0cjIgLT5cbiAgICAgIG1hdGNoIChhdHRyMiwgZ3JvdXApIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICB8IE5vbmUsIFNvbWUgdmFscyAtPiBTb21lIChOb25lIDo6IHZhbHMpXG4gICAgICB8IFNvbWUgdmFsdWUsIE5vbmUgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiBMaXN0Lm1hcCBsIH5mOihmdW4gXyAtPiBOb25lKSlcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSB2YWxzIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogdmFscykpXG5cbigqIFNhbWUgYXMgW0xpc3QucmV2XSB0aGVuIFtMaXN0LmNvbmNhdF0gYnV0IGV4cGVjdGluZyB0aGUgaW5wdXQgdG8gYmUgb2YgbGVuZ3RoIDw9IDIgKilcbmxldCByZXZfY29uY2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFsgeCBdIC0+IHhcbiAgfCBbIHg7IHkgXSAtPiB5IEAgeFxuICB8IGwgLT4gTGlzdC5jb25jYXQgKExpc3QucmV2IGwpXG5cbmxldCBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgc29ydF9hdHRyX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgPVxuICBFcnJvclxuICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgIFwiQSBjb250ZXh0LWZyZWUgcnVsZSBkZWxldGVkIG9yIGFkZGVkIGF0dHJpYnVlcyBvZiBhIHN0ci9zaWcgaXRlbVwiLFxuICAgICAgW10gKVxuXG4oKiBSZXR1cm5zIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBhdHRyaWJ1dGUgaGFuZGxlcnMuIFdlIGRvbid0IHJlbW92ZSB0aGVzZSBhdHRyaWJ1dGVzLCBhc1xuICAgYW5vdGhlciBwYXNzIG1pZ2h0IGludGVycHJldCB0aGVtIGxhdGVyLiBGb3IgaW5zdGFuY2UgYm90aCBwcHhfZGVyaXZpbmcgYW5kXG4gICBwcHhsaWJfZGVyaXZpbmcgaW50ZXJwcmV0cyBbQEBkZXJpdmluZ10gYXR0cmlidXRlcy5cblxuICAgVGhpcyBjb21wbGV4aXR5IGlzIGhvcnJpYmxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgZG9uJ3QgY2FyZSBhcyBbYXR0cnNdIGlzIGFsd2F5cyBhIGxpc3RcbiAgIG9mIG9uZSBlbGVtZW50OyBpdCBvbmx5IGhhcyBbQEBkZXJpdmluZ10uXG4qKVxubGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRycyByZiB+aXRlbXMgfmV4cGFuZGVkX2l0ZW1zIH5sb2MgfmJhc2VfY3R4dFxuICAgIH5lbWJlZF9lcnJvcnMgfmNvbnZlcnRfZXhuID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSlcbiAgICB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5UIGdyb3VwKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGl0ZW1zID4+PSBmdW4gZzEgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbXMgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWVzLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTpncm91cC5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBncm91cC5leHBhbmQgfmN0eHQgcmYgZXhwYW5kZWRfaXRlbXMgdmFsdWVzIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5sZXQgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJzIH5jb252ZXJ0X2V4biB+aXRlbSB+ZXhwYW5kZWRfaXRlbSB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9pbmxpbmUuVCBhKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBpdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcxIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6YS5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBhLmV4cGFuZCB+Y3R4dCBleHBhbmRlZF9pdGVtIHZhbHVlIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5tb2R1bGUgRXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIGxpc3QgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG5lbmRcblxuY2xhc3MgbWFwX3RvcF9kb3duID8oZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3ApXG4gID8oZ2VuZXJhdGVkX2NvZGVfaG9vayA9IEdlbmVyYXRlZF9jb2RlX2hvb2subm9wKSA/KGVtYmVkX2Vycm9ycyA9IGZhbHNlKSBydWxlc1xuICA9XG4gIGxldCBob29rID0gZ2VuZXJhdGVkX2NvZGVfaG9vayBpblxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gICAgUnVsZS5maWx0ZXIgU3BlY2lhbF9mdW5jdGlvbiBydWxlcyB8PiB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9uc1xuICBpblxuICBsZXQgY29uc3RhbnRzID1cbiAgICBSdWxlLmZpbHRlciBDb25zdGFudCBydWxlc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gKGMgOiBSdWxlLkNvbnN0YW50LnQpIC0+ICgoYy5zdWZmaXgsIGMua2luZCksIGMuZXhwYW5kKSlcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0X2V4blxuICBpblxuICBsZXQgZXh0ZW5zaW9ucyA9IFJ1bGUuZmlsdGVyIEV4dGVuc2lvbiBydWxlcyBpblxuICBsZXQgY2xhc3NfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZXhwciBleHRlbnNpb25zXG4gIGFuZCBjbGFzc19maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNvcmVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY29yZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGV4cHJlc3Npb24gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmV4cHJlc3Npb24gZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV9leHByIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBwYXR0ZXJuID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5wYXR0ZXJuIGV4dGVuc2lvbnNcbiAgYW5kIHNpZ25hdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zaWduYXR1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc3RydWN0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgcHB4X2ltcG9ydCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuUHB4X2ltcG9ydCBleHRlbnNpb25zIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbHMsIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbHMsIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dHMsIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dHMsIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbnMsIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbnMsIGF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgbWFwX25vZGUgPSBtYXBfbm9kZSB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lID0gaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2lubGluZSA9IGhhbmRsZV9hdHRyX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgYXMgc3VwZXJcblxuICAgICgqIE5vIHBvaW50IHJlY3Vyc2luZyBpbnRvIGV2ZXJ5IGxvY2F0aW9uICopXG4gICAgbWV0aG9kISBsb2NhdGlvbiBfIHggPSByZXR1cm4geFxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY29yZV90eXBlIGNvcmVfdHlwZSBzdXBlciNjb3JlX3R5cGUgeC5wdHlwX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnBhdHRlcm4gcGF0dGVybiBzdXBlciNwYXR0ZXJuIHgucHBhdF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSA9XG4gICAgICBsZXQgd2l0aF9jb250ZXh0ID1cbiAgICAgICAgKCogTWFrZSBzdXJlIGNvZGUtcGF0aCBhdHRyaWJ1dGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwYW5kaW5nLiAqKVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+Pj0gZnVuIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIGUpXG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgIEF0dHJpYnV0ZS5yZW1vdmVfc2Vlbl9yZXMgRXhwcmVzc2lvblxuICAgICAgICAgICAgICBbIFQgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIF1cbiAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmVcbiAgICAgICAgICAgID4+fCBmdW4gZSAtPlxuICAgICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgYmFzZV9jdHh0LCBlKVxuICAgICAgaW5cbiAgICAgIHdpdGhfY29udGV4dCA+Pj0gZnVuIChiYXNlX2N0eHQsIGUpIC0+XG4gICAgICBsZXQgZXhwYW5kZWQgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgICAgbWFwX25vZGUgRUMuZXhwcmVzc2lvbiBleHByZXNzaW9uXG4gICAgICAgICAgICAgIChmdW4gXyBlIC0+IHJldHVybiBlKVxuICAgICAgICAgICAgICBlLnBleHBfbG9jIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgXyAtPiByZXR1cm4gZVxuICAgICAgaW5cbiAgICAgIGV4cGFuZGVkID4+PSBmdW4gZSAtPlxuICAgICAgbGV0IGV4cGFuZF9jb25zdGFudCBraW5kIGNoYXIgdGV4dCA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgY29uc3RhbnRzIChjaGFyLCBraW5kKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgU29tZSBleHBhbmQgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCAoZXhwYW5kIGUucGV4cF9sb2MgdGV4dClcbiAgICAgIGluXG4gICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfYXBwbHkgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgaWQ7IF8gfSBhcyBmdW5jKSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jIGFyZ3NcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmNcbiAgICAgICAgICAgICAgICAgICAgYXJnc1xuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2lkZW50IGlkIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2ludGVnZXIgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEludGVnZXIgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2Zsb2F0IChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBGbG9hdCBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgcmV0dXJuIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcblxuICAgICgqIFByZS1jb25kaXRpb25zOlxuICAgICAgIC0gZS5wZXhwX2Rlc2MgPSBQZXhwX2FwcGx5KGZ1bmMsIGFyZ3MpXG4gICAgICAgLSBmdW5jLnBleHBfZGVzYyA9IFBleHBfaWRlbnQgX1xuICAgICopXG4gICAgbWV0aG9kIHByaXZhdGUgcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgID1cbiAgICAgIGxldCB7IHBleHBfZGVzYyA9IF87IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBlIGluXG4gICAgICBsZXQgZnVuYyA9XG4gICAgICAgIGxldCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGZ1bmMgaW5cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgICAge1xuICAgICAgICAgIHBleHBfZGVzYztcbiAgICAgICAgICBwZXhwX2xvYyAoKiBsb2NhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkICopO1xuICAgICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGZ1bmMgPj49IGZ1biBmdW5jIC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biAobGFiLCBleHApIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGV4cCA+PnwgZnVuIGV4cCAtPiAobGFiLCBleHApKVxuICAgICAgICB8PiBjb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGFyZ3MgPj49IGZ1biBhcmdzIC0+XG4gICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAge1xuICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChmdW5jLCBhcmdzKTtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICB9XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZSBjbGFzc190eXBlIHN1cGVyI2NsYXNzX3R5cGUgeC5wY3R5X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIHgucGN0Zl9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19leHByIGNsYXNzX2V4cHIgc3VwZXIjY2xhc3NfZXhwciB4LnBjbF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGQgeC5wY2ZfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV90eXBlIG1vZHVsZV90eXBlIHN1cGVyI21vZHVsZV90eXBlIHgucG10eV9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgKCgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIHgpXG4gICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIE1vZHVsZV9leHByXG4gICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgXVxuICAgICAgICAgICAgIHhcbiAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICAgPj58IGZ1biB4IC0+XG4gICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBiYXNlX2N0eHQsIHgpKVxuICAgICAgPj49IGZ1biAoYmFzZV9jdHh0LCB4KSAtPlxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX2V4cHIgbW9kdWxlX2V4cHIgc3VwZXIjbW9kdWxlX2V4cHIgeC5wbW9kX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zdHJ1Y3R1cmVfaXRlbSBzdHJ1Y3R1cmVfaXRlbSBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4LnBzdHJfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnNpZ25hdHVyZV9pdGVtIHNpZ25hdHVyZV9pdGVtIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHgucHNpZ19sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc3RydWN0dXJlIGJhc2VfY3R4dCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjcGF0dGVybiBiYXNlX2N0eHQgcGNzdHJfc2VsZiA+Pj0gZnVuIHBjc3RyX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY2ZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzdHJfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc3RyX2ZpZWxkcyAtPiB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuUHB4X2ltcG9ydCBwcHhfaW1wb3J0IHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geC5wdHlwZV9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc2lnbmF0dXJlIGJhc2VfY3R4dCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjY29yZV90eXBlIGJhc2VfY3R4dCBwY3NpZ19zZWxmID4+PSBmdW4gcGNzaWdfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjdGZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzaWdfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc2lnX2ZpZWxkcyAtPiB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICAoKiBUT0RPOiB0cnkgdG8gZmFjdG9yaXplICNzdHJ1Y3R1cmUgYW5kICNzaWduYXR1cmUgd2l0aG91dCBtZXRhLXByb2dyYW1taW5nICopXG4gICAgKCokKilcbiAgICBtZXRob2QhIHN0cnVjdHVyZSBiYXNlX2N0eHQgc3QgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTdHJ1Y3R1cmVfaXRlbSBpdGVtLnBzdHJfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHN0cl9sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3N0cnVjdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTdHJ1Y3R1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzdHJ1Y3R1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc3RyX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZXhuID0gZXhuX3RvX3N0cmkgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc3RyX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHN0cl9kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHJmLCB0ZHMpLCBQc3RyX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSBtdGQsIFBzdHJfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgdGUsIFBzdHJfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24gZWMsIFBzdHJfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG4gICAgbWV0aG9kISBzaWduYXR1cmUgYmFzZV9jdHh0IHNnID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU2lnbmF0dXJlX2l0ZW0gaXRlbS5wc2lnX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzaWdfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zaWduYXR1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU2lnbmF0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc2cgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc2lnbmF0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHNpZ19sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zaWdpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHNpZ19kZXNjLCBleHBhbmRlZF9pdGVtLnBzaWdfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlIChyZiwgdGRzKSwgUHNpZ190eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgbXRkLCBQc2lnX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHRlLCBQc2lnX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGVjLCBQc2lnX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokKilcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBVdGlsc1xuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXh0ZW5zaW9uIG9mICdhIEV4dGVuc2lvbi5Db250ZXh0LnRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBvZiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50XG5cbiAgbGV0IHBhcmVuIHBwIHBwZiB4ID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiglYSlcIiBwcCB4XG5cbiAgbGV0IHByaW50ZXIgOiB0eXBlIGEuIGEgdCAtPiBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlciAtPiBhIC0+IHVuaXQgPVxuICAgIGxldCBvcGVuIEV4dGVuc2lvbi5Db250ZXh0IGluXG4gICAgbGV0IG9wZW4gQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2V4cHIgLT4gUHByaW50YXN0LmNsYXNzX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlIC0+IFBwcmludGFzdC5jbGFzc190eXBlXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENvcmVfdHlwZSAtPiBwYXJlbiBQcHJpbnRhc3QuY29yZV90eXBlXG4gICAgfCBFeHRlbnNpb24gRXhwcmVzc2lvbiAtPiBwYXJlbiBQcHJpbnRhc3QuZXhwcmVzc2lvblxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV9leHByIC0+IFBwcmludGFzdC5tb2R1bGVfZXhwclxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV90eXBlIC0+IFBwcmludGFzdC5tb2R1bGVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIFBhdHRlcm4gLT4gcGFyZW4gUHByaW50YXN0LnBhdHRlcm5cbiAgICB8IEV4dGVuc2lvbiBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBQcHhfaW1wb3J0IC0+IFBwcmludGFzdC50eXBlX2RlY2xhcmF0aW9uXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlbWVudCA9IHN0cnVjdFxuICB0eXBlIGRhdGEgPVxuICAgIHwgVmFsdWVzIDpcbiAgICAgICAgJ2EgQ29udGV4dC50ICogJ2EgQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2suc2luZ2xlX29yX21hbnlcbiAgICAgICAgLT4gZGF0YVxuICAgIHwgVGV4dCBvZiBzdHJpbmdcblxuICB0eXBlIHQgPSB7IHN0YXJ0IDogTGV4aW5nLnBvc2l0aW9uOyBzdG9wIDogTGV4aW5nLnBvc2l0aW9uOyBkYXRhIDogZGF0YSB9XG5cbiAgbGV0IG1ha2UgfmNvbnRleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID1cbiAgICB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVmFsdWVzIChjb250ZXh0LCByZXBsKSB9XG5cbiAgbGV0IG1ha2VfdGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPSB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVGV4dCByZXBsIH1cblxuICBsZXQgdGV4dCBibG9jayA9XG4gICAgbWF0Y2ggYmxvY2suZGF0YSB3aXRoXG4gICAgfCBUZXh0IHMgLT4gc1xuICAgIHwgVmFsdWVzIChjb250ZXh0LCBnZW5lcmF0ZWQpIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgcHJpbnRlciA9IENvbnRleHQucHJpbnRlciBjb250ZXh0IGluXG4gICAgICAgICAgbWF0Y2ggZ2VuZXJhdGVkIHdpdGhcbiAgICAgICAgICB8IFNpbmdsZSB4IC0+IFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiIHByaW50ZXIgeFxuICAgICAgICAgIHwgTWFueSBsIC0+XG4gICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgKGZ1biBwcGYgbCAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciBwcGYgeDtcbiAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKSlcbiAgICAgICAgICAgICAgICBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc193cyA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UgaW5cbiAgICAgICAgbGV0IHN0cmlwX3dzIHMgaSBsZW4gPVxuICAgICAgICAgIGxldCBsZW4gPSByZWYgbGVuIGluXG4gICAgICAgICAgd2hpbGUgIWxlbiA+IDAgJiYgaXNfd3Mgcy5baSArICFsZW4gLSAxXSBkb1xuICAgICAgICAgICAgbGVuIDo9ICFsZW4gLSAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBTdHJpbmcuc3ViIHMgfnBvczppIH5sZW46IWxlblxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBwb3MgPVxuICAgICAgICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHMgdGhlbiBbXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBpZHggPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzdHJpcF93cyBzIHBvcyAoaWR4IC0gcG9zKSA6OiBcIlxcblwiIDo6IGxvb3AgcyAoaWR4ICsgMSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKGxvb3AgcyAwKVxuZW5kXG5cbm9wZW4gUmVwbGFjZW1lbnRcblxubW9kdWxlIFJlcGxhY2VtZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXBsYWNlbWVudC50IGxpc3RcblxuICAoKiBNZXJnZSBsb2NhdGlvbnMgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBPdmVybGFwcGluZyBsb2NhdGlvbnMgYXJlIG1lcmdlZCBpbnRvIG9uZS4gVGhlXG4gICAgIHJlc3VsdCBpcyBzb3J0ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHRvIHRoZSBlbmQuICopXG4gIGxldCBjaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgPVxuICAgIExpc3QuaXRlciByZXBscyB+ZjooZnVuIHJlcGwgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBTdHJpbmcuKCA8PiApIHJlcGwuc3RhcnQucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgICB8fCBTdHJpbmcuKCA8PiApIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVuYW1lKVxuICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiB0aGUgcmV3cml0aW5nIGNvbnRhaW5zIHBhcnRzIGZyb20gYW5vdGhlciBmaWxlLlxcblxcXG4gICAgICAgICAgICAgSXQgaXMgdG9vIGNvbXBsaWNhdGVkIHRvIHJlY29uY2lsZSBpdCB3aXRoIHRoZSBzb3VyY2U6ICVzIG9yICVzIFxcXG4gICAgICAgICAgICAgYW5kICVzXCJcbiAgICAgICAgICAgIHJlcGwuc3RhcnQucG9zX2ZuYW1lIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgYXNzZXJ0IChyZXBsLnN0YXJ0LnBvc19jbnVtIDw9IHJlcGwuc3RvcC5wb3NfY251bSkpO1xuICAgIGxldCByZXBscyA9XG4gICAgICBMaXN0LnNvcnQgcmVwbHMgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgICAgIGxldCBkID0gY29tcGFyZSBhLnN0YXJ0LnBvc19jbnVtIGIuc3RvcC5wb3NfY251bSBpblxuICAgICAgICAgIGlmIGQgPSAwIHRoZW5cbiAgICAgICAgICAgICgqIFB1dCB0aGUgbGFyZ2VzdCBmaXJzdCwgc28gdGhhdCB0aGUgZm9sbG93aW5nIFtmaWx0ZXJdIGZ1bmN0aW9ucyBhbHdheXMgcGlja3MgdXBcbiAgICAgICAgICAgICAgIHRoZSBsYXJ0ZXN0IGZpcnN0IHdoZW4gc2V2ZXJhbCBnZW5lcmF0ZWQgcmVwbHMgc3RhcnQgYXQgdGhlIHNhbWUgcG9zaXRpb24gKilcbiAgICAgICAgICAgIGNvbXBhcmUgYi5zdG9wLnBvc19jbnVtIGEuc3RvcC5wb3NfY251bVxuICAgICAgICAgIGVsc2UgZClcbiAgICBpblxuICAgIGxldCByZWMgZmlsdGVyIHByZXYgcmVwbHMgfmFjYyA9XG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IChwcmV2IDo6IGFjYylcbiAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID49IHJlcGwuc3RvcC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgICgqIFtyZXBsXSBpcyBpbmNsdWRlZCBpbiBbcHJldl0gPT4gc2tpcCBbcmVwbF0gKilcbiAgICAgICAgICAgICAgZmlsdGVyIHByZXYgcmVwbHMgfmFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IGxvY2F0aW9ucyBvZiBnZW5lcmF0ZWQgY29kZSBhcmUgb3ZlcmxhcHBpbmcsIFxcXG4gICAgICAgICAgICAgICAgIGNhbm5vdCByZWNvbmNpbGVcIlxuICAgICAgICAgICAgICAgIH5sb2M6XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9IHJlcGwuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxvY19lbmQgPSBwcmV2LnN0b3A7XG4gICAgICAgICAgICAgICAgICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzoocHJldiA6OiBhY2MpXG4gICAgaW5cbiAgICBtYXRjaCByZXBscyB3aXRoIFtdIC0+IFtdIHwgcmVwbCA6OiByZXBscyAtPiBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOltdXG5lbmRcblxubGV0IGNvdW50X25ld2xpbmVzIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIFN0cmluZy5pdGVyIHMgfmY6KGZ1bmN0aW9uICdcXG4nIC0+IG4gOj0gIW4gKyAxIHwgXyAtPiAoKSk7XG4gICFuXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9iZWdpbiA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEJFR0lOIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxubGV0IGdlbmVyYXRlZF9jb2RlX2VuZCA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEVORCAgIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxudHlwZSBtb2RlID0gVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzXG50eXBlIHRhcmdldCA9IE91dHB1dCBvZiBtb2RlIHwgQ29ycmVjdGVkXG5cbmxldCBza2lwX2JsYW5rX2VvbCBjb250ZW50cyAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSA9XG4gIGxldCByZWMgbG9vcCBjbnVtID1cbiAgICBpZiBjbnVtID0gU3RyaW5nLmxlbmd0aCBjb250ZW50cyB0aGVuIHsgcG9zIHdpdGggcG9zX2NudW0gPSBjbnVtIH1cbiAgICBlbHNlXG4gICAgICBtYXRjaCBjb250ZW50cy5bY251bV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXHInIC0+IGxvb3AgKGNudW0gKyAxKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvcyB3aXRoXG4gICAgICAgICAgICBwb3NfY251bSA9IGNudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2JvbCA9IGNudW0gKyAxO1xuICAgICAgICAgIH1cbiAgICAgIHwgXyAtPiBwb3NcbiAgaW5cbiAgbG9vcCBwb3MucG9zX2NudW1cblxubGV0IHdpdGhfb3V0cHV0IH5zdHlsZXIgfihraW5kIDogS2luZC50KSBmbiB+ZiA9XG4gIG1hdGNoIHN0eWxlciB3aXRoXG4gIHwgTm9uZSAtPiB3aXRoX291dHB1dCBmbiB+YmluYXJ5OmZhbHNlIH5mXG4gIHwgU29tZSBjbWQgLT5cbiAgICAgIGxldCB0bXBfZm4sIG9jID1cbiAgICAgICAgU3RkbGliLkZpbGVuYW1lLm9wZW5fdGVtcF9maWxlIFwicHB4bGliX2RyaXZlclwiXG4gICAgICAgICAgKG1hdGNoIGtpbmQgd2l0aCBJbXBsIC0+IFwiLm1sXCIgfCBJbnRmIC0+IFwiLm1saVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBjbWQgPVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzJXNcIiBjbWRcbiAgICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIHRtcF9mbilcbiAgICAgICAgICAobWF0Y2ggZm4gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIGZuIC0+IFwiID4gXCIgXiBTdGRsaWIuRmlsZW5hbWUucXVvdGUgZm4pXG4gICAgICBpblxuICAgICAgbGV0IG4gPVxuICAgICAgICBFeG4ucHJvdGVjdHggdG1wX2ZuIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mOihmdW4gXyAtPlxuICAgICAgICAgICAgRXhuLnByb3RlY3R4IG9jIH5maW5hbGx5OmNsb3NlX291dCB+ZjtcbiAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQpXG4gICAgICBpblxuICAgICAgaWYgbiA8PiAwIHRoZW4gKFxuICAgICAgICBQcmludGYuZXByaW50ZiBcImNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAlZDogJXNcXG5cIiBuIGNtZDtcbiAgICAgICAgU3RkbGliLmV4aXQgMSlcblxubGV0IHJlY29uY2lsZSA/c3R5bGVyIChyZXBscyA6IFJlcGxhY2VtZW50cy50KSB+a2luZCB+Y29udGVudHMgfmlucHV0X2ZpbGVuYW1lXG4gICAgfm91dHB1dCB+aW5wdXRfbmFtZSB+dGFyZ2V0ID1cbiAgbGV0IHJlcGxzID0gUmVwbGFjZW1lbnRzLmNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyBpblxuICBsZXQgb3V0cHV0X25hbWUgPSBtYXRjaCBvdXRwdXQgd2l0aCBOb25lIC0+IFwiPHN0ZG91dD5cIiB8IFNvbWUgZm4gLT4gZm4gaW5cbiAgd2l0aF9vdXRwdXQgb3V0cHV0IH5zdHlsZXIgfmtpbmQgfmY6KGZ1biBvYyAtPlxuICAgICAgbGV0IGNvcHlfaW5wdXQgcG9zIH51cF90byB+bGluZSB+bGFzdF9pc190ZXh0IH5pc190ZXh0ID1cbiAgICAgICAgbGV0IHBvcyA9IGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvcyBpblxuICAgICAgICBpZiBwb3MucG9zX2NudW0gPCB1cF90byB0aGVuIChcbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuJSpzXCIgcG9zLnBvc19sbnVtIGlucHV0X25hbWVcbiAgICAgICAgICAgICAgICAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyB8IENvcnJlY3RlZCAtPiAoKSk7XG4gICAgICAgICAgb3V0cHV0X3N1YnN0cmluZyBvYyBjb250ZW50cyB+cG9zOnBvcy5wb3NfY251bVxuICAgICAgICAgICAgfmxlbjoodXBfdG8gLSBwb3MucG9zX2NudW0pO1xuICAgICAgICAgIGxldCBsaW5lID0gcmVmIChsaW5lICsgMSkgaW5cbiAgICAgICAgICBmb3IgaSA9IHBvcy5wb3NfY251bSB0byB1cF90byAtIDEgZG9cbiAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgY29udGVudHMuW2ldICdcXG4nIHRoZW4gbGluZSA6PSAhbGluZSArIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBsaW5lID0gIWxpbmUgaW5cbiAgICAgICAgICBpZiAobm90IGlzX3RleHQpICYmIENoYXIuKCA8PiApIGNvbnRlbnRzLlt1cF90byAtIDFdICdcXG4nIHRoZW4gKFxuICAgICAgICAgICAgb3V0cHV0X2NoYXIgb2MgJ1xcbic7XG4gICAgICAgICAgICBsaW5lICsgMSlcbiAgICAgICAgICBlbHNlIGxpbmUpXG4gICAgICAgIGVsc2UgbGluZVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoY29weV9pbnB1dCBwb3MgfnVwX3RvOihTdHJpbmcubGVuZ3RoIGNvbnRlbnRzKSB+bGluZVxuICAgICAgICAgICAgICAgICB+bGFzdF9pc190ZXh0IH5pc190ZXh0OmZhbHNlXG4gICAgICAgICAgICAgICAgOiBpbnQpXG4gICAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgICAgbGV0IGlzX3RleHQgPVxuICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBjb3B5X2lucHV0IHBvcyB+dXBfdG86cmVwbC5zdGFydC5wb3NfY251bSB+bGluZSB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICAgICAgfmlzX3RleHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcblwiIChsaW5lICsgMSkgb3V0cHV0X25hbWU7XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbjtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgQ29ycmVjdGVkIC0+IGxpbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzIH5sYXN0X2lzX3RleHQ6aXNfdGV4dFxuICAgICAgYW5kIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBsc1xuICAgICAgICAgIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT4gZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzJyAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgIGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgICAgbGV0IGxhc3RfaXNfdGV4dCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzJyB+bGFzdF9pc190ZXh0XG4gICAgICBhbmQgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2VuZCk7XG4gICAgICAgIGxvb3AgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IGlucHV0X25hbWU7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgeyBzdGFydCA9IHsgcG9zX2NudW0gPSAwOyBfIH07IF8gfSA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbik7XG4gICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlXG4gICAgICB8IF8gLT4gbG9vcCAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlKVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIG5leHRfaWQgOiBpbnQ7XG4gIG11dGFibGUgYmluZGluZ3MgOiBQYXJzZXRyZWUudmFsdWVfYmluZGluZyBsaXN0O1xufVxuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0X2lkID0gMDsgYmluZGluZ3MgPSBbXSB9XG5cbmxldCBzYW5pdGl6ZSB0IGUgPVxuICBtYXRjaCB0LmJpbmRpbmdzIHdpdGhcbiAgfCBbXSAtPiBlXG4gIHwgYmluZGluZ3MgLT5cbiAgICAgIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGUucGV4cF9sb2MgaW5cbiAgICAgIEFzdC5wZXhwX2xldCBOb25yZWN1cnNpdmUgYmluZGluZ3MgZVxuXG5sZXQgcXVvdGUgdCAoZSA6IGV4cHJlc3Npb24pID1cbiAgbGV0IGxvYyA9IGUucGV4cF9sb2MgaW5cbiAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgbG9jIGluXG4gIGxldCBuYW1lID0gXCJfX1wiIF4gSW50LnRvX3N0cmluZyB0Lm5leHRfaWQgaW5cbiAgbGV0IGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgICgqIE9wdGltaXplIGlkZW50aWZpZXIgcXVvdGluZyBieSBhdm9pZGluZyBjbG9zdXJlLlxuICAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtcHB4L3BweF9kZXJpdmluZy9wdWxsLzI1Mi4gKilcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT4gKGUsIEFzdC5ldmFyIG5hbWUpXG4gICAgfCBfIC0+XG4gICAgICAgIGxldCBiaW5kaW5nX2V4cHIgPVxuICAgICAgICAgIEFzdC5wZXhwX2Z1biBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgIChsZXQgdW5pdCA9IEFzdF9idWlsZGVyLkRlZmF1bHQuTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIgaW5cbiAgICAgICAgICAgICBBc3QucHBhdF9jb25zdHJ1Y3QgdW5pdCBOb25lKVxuICAgICAgICAgICAgZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcXVvdGVkX2V4cHIgPSBBc3QuZWFwcGx5IChBc3QuZXZhciBuYW1lKSBbIEFzdC5ldW5pdCBdIGluXG4gICAgICAgIChiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByKVxuICBpblxuICBsZXQgYmluZGluZyA9XG4gICAgbGV0IHBhdCA9IEFzdC5wdmFyIG5hbWUgaW5cbiAgICBBc3QudmFsdWVfYmluZGluZyB+cGF0IH5leHByOmJpbmRpbmdfZXhwclxuICBpblxuICB0LmJpbmRpbmdzIDwtIGJpbmRpbmcgOjogdC5iaW5kaW5ncztcbiAgdC5uZXh0X2lkIDwtIHQubmV4dF9pZCArIDE7XG4gIHF1b3RlZF9leHByXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IG1rX2F0dHJfbm9sb2MgdHh0ID0gQXN0X2hlbHBlci5BdHRyLm1rIExvY2F0aW9uLnsgdHh0OyBsb2MgPSBub25lIH1cbmxldCBoaWRlX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uaGlkZVwiIChQU3RyIFtdKVxubGV0IGZvY3VzX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uZm9jdXNcIiAoUFN0ciBbXSlcblxubGV0IGhpZGVfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBoaWRlX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuIiwib3BlbiBJbXBvcnRcblxubW9kdWxlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGluc2VydCA6IG5vZGVfbmFtZTpzdHJpbmcgLT4gTG9jYXRpb24udCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcblxuICB2YWwgY292ZXJlZF9ieSA6IHQgLT4gbG9jOkxvY2F0aW9uLnQgLT4gYm9vbFxuICAoKiogW2NvdmVyZWRfYnkgdCB+bG9jID0gdHJ1ZV0gaWZmIFt0XSBpcyBjb3ZlcmVkIGJ5IFtsb2NdICopXG5cbiAgdmFsIGZpbmRfb3V0c2lkZSA6IExvY2F0aW9uLnQgLT4gdCAtPiBzdHJpbmcgKiBMb2NhdGlvbi50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1pbl9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIG1heF9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIHJhbmdlcyA6IChzdHJpbmcgKiBMb2NhdGlvbi50KSBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5ID0geyBtaW5fcG9zID0gTm9uZTsgbWF4X3BvcyA9IE5vbmU7IHJhbmdlcyA9IFtdIH1cblxuICBsZXQgcmVjIGluc2VydCByYW5nZXMgKChub2RlX25hbWUsIG5vZGVfbG9jKSBhcyBub2RlKSA9XG4gICAgbWF0Y2ggcmFuZ2VzIHdpdGhcbiAgICB8IFtdIC0+IFsgbm9kZSBdXG4gICAgfCAoKHhfbmFtZSwgeF9sb2MpIGFzIHgpIDo6IHhzIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uIGluXG4gICAgICAgIGlmIGNvbXBhcmVfcG9zIG5vZGVfbG9jLmxvY19zdGFydCB4X2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIG5vZGUgOjogeCA6OiB4c1xuICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcG9zIHhfbG9jLmxvY19zdGFydCBub2RlX2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIHggOjogaW5zZXJ0IHhzIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICAgICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4LCAlcyBvdmVybGFwcyB3aXRoICVzIGF0IGxvY2F0aW9uOkAuJWFcIlxuICAgICAgICAgICAgbm9kZV9uYW1lIHhfbmFtZSBMb2NhdGlvbi5wcmludCB4X2xvY1xuXG4gIGxldCBtaW5fcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWluX3BvcyBwMSBwMilcblxuICBsZXQgbWF4X3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1heF9wb3MgcDEgcDIpXG5cbiAgbGV0IGxvbmdlc3RfZmlyc3QgbDEgbDIgfnN0b3BfYWZ0ZXIgPVxuICAgIGxldCByZWMgbG9vcCB4cyB5cyBuID1cbiAgICAgIG1hdGNoICh4cywgeXMsIG4pIHdpdGhcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBfLCAwIC0+IChsMiwgbDEpXG4gICAgICB8IF8sIFtdLCBfIC0+IChsMSwgbDIpXG4gICAgICB8IF8gOjogeHMsIF8gOjogeXMsIG4gLT4gbG9vcCB4cyB5cyAobiAtIDEpXG4gICAgaW5cbiAgICBsb29wIGwxIGwyIHN0b3BfYWZ0ZXJcblxuICBsZXQgdW5pb24gdDEgdDIgPVxuICAgIGxldCBpbml0LCBsID0gbG9uZ2VzdF9maXJzdCB0MS5yYW5nZXMgdDIucmFuZ2VzIH5zdG9wX2FmdGVyOjQyIGluXG4gICAgbGV0IHJhbmdlcyA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6aW5zZXJ0IGluXG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgdDEubWluX3BvcyB0Mi5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgdDEubWF4X3BvcyB0Mi5tYXhfcG9zO1xuICAgICAgcmFuZ2VzO1xuICAgIH1cblxuICBsZXQgaW5zZXJ0IH5ub2RlX25hbWUgbG9jIHQgPVxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIChTb21lIGxvYy5sb2Nfc3RhcnQpIHQubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIChTb21lIGxvYy5sb2NfZW5kKSB0Lm1heF9wb3M7XG4gICAgICByYW5nZXMgPSBpbnNlcnQgdC5yYW5nZXMgKG5vZGVfbmFtZSwgbG9jKTtcbiAgICB9XG5cbiAgbGV0IGNvdmVyZWRfYnkgdCB+bG9jID1cbiAgICBtYXRjaCAodC5taW5fcG9zLCB0Lm1heF9wb3MpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBtaW5fcG9zLCBTb21lIG1heF9wb3MgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbWluX3BvcyBsb2MubG9jX3N0YXJ0ID49IDBcbiAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbWF4X3BvcyBsb2MubG9jX2VuZCA8PSAwXG4gICAgfCBfLCBfIC0+XG4gICAgICAgICgqIHRoZXJlIGFyZSBubyBvcGVuIHJhbmdlcyAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuICBsZXQgZmluZF9vdXRzaWRlIGxvYyB0ID1cbiAgICBMaXN0LmZpbmQgdC5yYW5nZXMgfmY6KGZ1biAoXywgbCkgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19zdGFydCBsLmxvY19zdGFydCA+IDBcbiAgICAgICAgfHwgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgbC5sb2NfZW5kIDwgMClcbmVuZFxuXG5sZXQgcmVsb2NfcG10eV9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbXR5X2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtdHlfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG10eV9sb2MgPSB7IHJlcy5wbXR5X2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgcmVsb2NfcG1vZF9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbW9kX2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtb2RfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG1vZF9sb2MgPSB7IHJlcy5wbW9kX2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYyA9XG4gIExpc3QuZm9yX2FsbCB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGF0dHIuYXR0cl9sb2MubG9jX2VuZCA+PSAwKVxuXG5sZXQgZmlsZSA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcbmxldCBzYW1lX2ZpbGVfc29fZmFyID0gcmVmIHRydWVcblxubGV0IHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGZuYW1lID1cbiAgKCogVE9ETzogcmVtb3ZlIHVzZXMgb2YgTG9jYXRpb24ubm9uZSBmcm9tIHRoZSBwcHhlcy4gKilcbiAgaWYgU3RyaW5nLmVxdWFsIGZuYW1lIFwiX25vbmVfXCIgdGhlbiB0cnVlICgqIGRvIG5vdGhpbmcgZm9yIG5vdy4gKilcbiAgZWxzZVxuICAgIG1hdGNoICFmaWxlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgZmlsZSA6PSBTb21lIGZuYW1lO1xuICAgICAgICB0cnVlXG4gICAgfCBTb21lIG9yaWdfZm5hbWUgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIG9yaWdfZm5hbWUgZm5hbWVcbiAgICAgICAgfHxcbiAgICAgICAgKHNhbWVfZmlsZV9zb19mYXIgOj0gZmFsc2U7XG4gICAgICAgICBmYWxzZSlcblxubGV0IHNob3VsZF9pZ25vcmUgbG9jIGF0dHJzID1cbiAgKCogSWYgdGhlIGZpbGVuYW1lIGNoYW5nZWQsIHRoZW4gdGhlcmUgd2VyZSBsaW5lIGRpcmVjdGl2ZXMsIGFuZCB0aGUgbG9jYXRpb25zXG4gICAgIGFyZSBhbGwgbWVzc2VkIHVwLiAqKVxuICAobm90IChzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSkpXG4gIHx8ICgqIElnbm9yZSB0aGluZ3MgZXhwbGljaXRseSBtYXJrZWQuICopXG4gIExpc3QuZXhpc3RzXG4gICAgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBTdHJpbmcuZXF1YWwgYXR0ci5hdHRyX25hbWUudHh0XG4gICAgICAgIE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlLmF0dHJfbmFtZS50eHQpXG4gICAgYXR0cnNcblxubGV0IHJlYyBleHRyYWN0X2NvbnN0cmFpbnQgZSA9XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSB8IFBleHBfY29lcmNlIChlLCBfLCBjdCkgLT4gU29tZSAoZSwgY3QpXG4gIHwgUGV4cF9uZXd0eXBlIChuYW1lLCBleHApIC0+XG4gICAgICBPcHRpb24ubWFwIChleHRyYWN0X2NvbnN0cmFpbnQgZXhwKSB+ZjooZnVuIChleHAsIGN0KSAtPlxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlIChuYW1lLCBleHApO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdCApKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZG9fY2hlY2sgfm5vZGVfbmFtZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzID1cbiAgaWYgbm90ICFzYW1lX2ZpbGVfc29fZmFyIHRoZW4gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgZWxzZSBpZiBub2RlX2xvYy5sb2NfZ2hvc3QgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnVuaW9uIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcbiAgZWxzZSBpZiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5jb3ZlcmVkX2J5IGNoaWxkcmVuc19sb2NzIH5sb2M6bm9kZV9sb2MgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lIG5vZGVfbG9jIHNpYmxpbmdzX2xvY3NcbiAgZWxzZVxuICAgIGxldCBjaGlsZF9uYW1lLCBjaGlsZF9sb2MgPVxuICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZmluZF9vdXRzaWRlIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgaW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweDpAIHRoaXMgJXMgaXMgYnVpbHQgZnJvbSBhJXMgd2hvc2UgbG9jYXRpb24gaXMgXFxcbiAgICAgICBvdXRzaWRlIG9mIHRoaXMgbm9kZSdzLkAuQ2hpbGQgJXMgZm91bmQgYXQ6QCAlYVwiXG4gICAgICBub2RlX25hbWVcbiAgICAgICgobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgY2hpbGRfbmFtZSAwIHdpdGhcbiAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyAtPiBcIm4gXCJcbiAgICAgICB8IF8gLT4gXCIgXCIpXG4gICAgICBeIGNoaWxkX25hbWUpXG4gICAgICBjaGlsZF9uYW1lIExvY2F0aW9uLnByaW50IGNoaWxkX2xvY1xuXG5sZXQgZW5mb3JjZV9pbnZhcmlhbnRzIGZuYW1lID1cbiAgbGV0ICgpID0gZmlsZSA6PSBmbmFtZSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICgqIFRPRE86IHdlIHNob3VsZCBnZW5lcmF0ZSBhIGNsYXNzIHdoaWNoIGVuZm9yY2VzIHRoZSBsb2NhdGlvbiBpbnZhcmlhbnQuXG4gICAgICAgQW5kIHRoZW4gd2Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgd2hlcmUgd2UgbmVlZCBhbiBlc2NhcGVcbiAgICAgICBoYXRjaCBiZWNhdXNlIHRoZSBwYXJzZXIgaXNuJ3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLlxuXG4gICAgICAgVGhhdCB3b3VsZCBlbnN1cmUgdGhhdCB3ZSBzdGF5IHVwIHRvIGRhdGUgYXMgdGhlIEFTVCBjaGFuZ2VzLiAqKVxuXG4gICAgbWV0aG9kISBsb25naWRlbnRfbG9jIHggc2libGluZ3MgPVxuICAgICAgaWYgeC5sb2MubG9jX2dob3N0IHRoZW4gc2libGluZ3NcbiAgICAgIGVsc2UgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWU6XCJpZGVudFwiIHgubG9jIHNpYmxpbmdzXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnByZl9sb2MgeC5wcmZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjcm93X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInJvdyBmaWVsZFwiIHgucHJmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9iamVjdF9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvZl9sb2MgeC5wb2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvYmplY3RfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib2JqZWN0IGZpZWxkXCIgeC5wb2ZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBiaW5kaW5nX29wIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNiaW5kaW5nX29wIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJiaW5kaW5nIG9wZXJhdG9yXCIgeC5wYm9wX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZhbF9sb2MgeC5wdmFsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgZGVzY3JpcHRpb25cIiB4LnB2YWxfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cGVfbG9jIHgucHR5cGVfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZGVjbGFyYXRpb25cIiB4LnB0eXBlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbGRfbG9jIHgucGxkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibGFiZWwgZGVjbGFyYXRpb25cIiB4LnBsZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNkX2xvYyB4LnBjZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCIgeC5wY2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4dF9sb2MgeC5wdHlleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGV4dGVuc2lvblwiIHgucHR5ZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4dF9sb2MgeC5wZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiIHgucGV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3R5X2xvYyB4LnBjdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlXCIgeC5wY3R5X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3RmX2xvYyB4LnBjdGZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGUgZmllbGRcIiB4LnBjdGZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNpX2xvYyB4LnBjaV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3NcIiB4LnBjaV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNsX2xvYyB4LnBjbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc19leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGV4cHJlc3Npb25cIiB4LnBjbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNmX2xvYyB4LnBjZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGZpZWxkXCIgeC5wY2ZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc2lnX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzaWduYXR1cmUgaXRlbVwiIHgucHNpZ19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtZF9sb2MgeC5wbWRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGRlY2xhcmF0aW9uXCIgeC5wbWRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1zX2xvYyB4LnBtc19hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9zdWJzdGl0dXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHN1YnN0aXR1dGlvblwiIHgucG1zX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXRkX2xvYyB4LnBtdGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiIHgucG10ZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9wZW5faW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvcGVuX2xvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb3Blbl9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9wZW5cIiB4LnBvcGVuX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBpbmNsX2xvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImluY2x1ZGVcIiB4LnBpbmNsX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHN0cl9sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic3RydWN0dXJlIGl0ZW1cIiB4LnBzdHJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtYl9sb2MgeC5wbWJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgYmluZGluZ1wiIHgucG1iX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgKilcbiAgICAoKiB0aGUgdHlwZSBjb25zdHJhaW50IGlzIGR1cGxpY2F0ZWQuICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmJfbG9jIHgucHZiX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgbWF0Y2ggKHgucHZiX3BhdC5wcGF0X2Rlc2MsIGV4dHJhY3RfY29uc3RyYWludCB4LnB2Yl9leHByKSB3aXRoXG4gICAgICAgICAgKCogbGV0IHggOiB0eXBlIGEgYiBjLiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfIDo6IF8sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAoKiBsZXQgeCA6ICBjdCA9IGVcbiAgICAgICAgICAgICBsZXQgeCA6PiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50IChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoW10sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdHAucHR5cF9sb2MgY3RlLnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgX2FjYyA9IHNlbGYjY29yZV90eXBlIGN0cCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjdmFsdWVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBiaW5kaW5nXCIgeC5wdmJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1UIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgdHlwZS4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSB0eXBlLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG10eV9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHgucG10eV9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlXCIgeC5wbXR5X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNRSBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIGV4cHIuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgZXhwci4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyB4LnBtb2RfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZXhwcmVzc2lvblwiIHgucG1vZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgeC5wdHlwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29yZSB0eXBlXCIgeC5wdHlwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogQW5kIGFnYWluIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNleHByZXNzaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgeC5wZXhwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhwcmVzc2lvblwiIHgucGV4cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIC4uLiBhbmQgYWdhaW4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjcGF0dGVybiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHgucHBhdF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInBhdHRlcm5cIiB4LnBwYXRfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgICopXG4gICAgKCogdGhlIGNvbnN0cnVjdCBlcXVhbHMgdGhlIGxvY2F0aW9uIG9mIHRoZSB0eXBlX2V4Y2VwdGlvbiAqKVxuICAgICgqIChhbmQgc28gY292ZXJzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlcykuICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXhuX2xvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgaW5pdCA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGxldCBjaGlsZHNfbG9jcyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgeC5wdHlleG5fY29uc3RydWN0b3IgaW5pdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cnNfbG9jcyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGluaXQgaW5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgYXR0cnNfbG9jcyBzaWJsaW5nc19sb2NzKTtcbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBjaGlsZHNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgKilcbiAgICAoKiBsaHMgaXMgc29tZXRpbWVzIGluY2x1ZGVkIGluIHRoZSByaHMuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQd2l0aF90eXBlIChfLCB0ZGVjbCkgfCBQd2l0aF90eXBlc3Vic3QgKF8sIHRkZWNsKSAtPlxuICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiB0ZGVjbCBzaWJsaW5nc19sb2NcbiAgICAgIHwgXyAtPiBzdXBlciN3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6KilcbiAgICAoKiAtIEZvby57IGJhcjsgLi4uIH0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLlsgYmFyOyAuLi4gXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uKCBiYXI7IC4uLiApICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIG1ldGhvZCB4IDogdHlwZSBhLiAuLi4gPSAuLi4gICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpIDwtIGJheiAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdIDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9yZWNvcmQgKGxhYmVscywgZXhwcl9vKSAtPlxuICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGxpZCwgZSkgYWNjIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgZS5wZXhwX2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAoKiBwdW5uaW5nLiAqKVxuICAgICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gZXhwcl9vIGFjY1xuICAgICAgfCBQZXhwX29wZW5cbiAgICAgICAgICAoKHsgcG9wZW5fZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9pZGVudCBsaWQ7IF8gfTsgXyB9IGFzIG9wbiksIGUpXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnQgPSAwXG4gICAgICAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2NfZW5kIGUucGV4cF9sb2MubG9jX2VuZCA8PiAwIC0+XG4gICAgICAgICAgKCogbGV0J3MgcmVsb2NhdGUgLi4uICopXG4gICAgICAgICAgbGV0IGVfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX3N0YXJ0ID0gbGlkLmxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICBzdXBlciNleHByZXNzaW9uX2Rlc2NcbiAgICAgICAgICAgIChQZXhwX29wZW4gKG9wbiwgeyBlIHdpdGggcGV4cF9sb2MgPSBlX2xvYyB9KSlcbiAgICAgICAgICAgIGFjY1xuICAgICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8sIGN0KTsgXyB9KSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZXh0cmFjdF9jb25zdHJhaW50IGUgd2l0aFxuICAgICAgICAgIHwgU29tZSAoZSwgY3RlKSB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RlLnB0eXBfbG9jIGN0LnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgUGV4cF9hcHBseSAoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gbGlkOyBfIH07IF8gfSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIExvbmdpZGVudC5sYXN0X2V4biBsaWQgd2l0aFxuICAgICAgICAgIHwgaWRcbiAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCBpZCB+cHJlZml4OlwiLlwiXG4gICAgICAgICAgICAgICAgICYmIChTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9PC1cIikgLT5cbiAgICAgICAgICAgICAgc2VsZiNsaXN0IChmdW4gKF8sIGUpIC0+IHNlbGYjZXhwcmVzc2lvbiBlKSBhcmdzIGFjY1xuICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiAgICAgICAgICAgICAqKVxuICAgICgqIC0gcHVubmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gcmVjb3JkIGZpZWxkIHdpdGggdHlwZSBjb25zdHJhaW50LiAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gdW5wYWNrIGxvY2F0aW9ucyBiZWluZyBpbmNvcnJlY3Qgd2hlbiBjb25zdHJhaW5lZCAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfcmVjb3JkIChsYWJlbHMsIF8pIC0+XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChsaWQsIHBhdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgcGF0LnBwYXRfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIHBhdC5wcGF0X2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgKCogc2ltcGxlIHB1bm5pbmchICopXG4gICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwIGFjY1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHBhdCBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGF0IGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh7IHBwYXRfZGVzYyA9IFBwYXRfdW5wYWNrIGE7IF8gfSwgYikgLT5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIGZha2Ugc3RydWN0dXJlIGZvciBhIGdlbmVyYXRpdmUgYXJndW1lbnQgY292ZXJzIHRoZSAgICAgKilcbiAgICAoKiBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2FwcGx5IChtLCB7IHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdOyBwbW9kX2xvYzsgXyB9KVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIG0ucG1vZF9sb2MubG9jX3N0YXJ0IHBtb2RfbG9jLmxvY19zdGFydCA9IDAgLT5cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciBtIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogb3Blbl9pbmZvcyBmb3IgUGNsX29wZW4gb25seSBjb3ZlcnMgdGhlIFwib3BlblwiIGtleXdvcmQgICopXG4gICAgKCogYW5kIG5vdCB0aGUgbW9kdWxlIG9wZW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfb3BlbiAob2QsIGNlKSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgY2UgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X29wZW4gKG9kLCBjdCkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGN0IGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgZG9jc3RyaW5ncyBoYXZlICAgICopXG4gICAgKCogdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIGl0ZW0gdGhleSBnZXQgYXR0YWNoZWQgdG8uICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB4IGFjYyA9XG4gICAgICBtYXRjaCB4LmF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLmRvY1wiIHwgXCJvY2FtbC50ZXh0XCIgLT4gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjYXR0cmlidXRlIHggYWNjXG4gIGVuZFxuIiwibW9kdWxlIEZvcmNhYmxlX2Jvb2wgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHJ1ZSB8IEZhbHNlIHwgRm9yY2VcblxuICBsZXQgYXJnIHZhbHVlID1cbiAgICBBcmcuU3ltYm9sXG4gICAgICAoIFsgXCJ0cnVlXCI7IFwiZmFsc2VcIjsgXCJmb3JjZVwiIF0sXG4gICAgICAgIGZ1biBmbGFnIC0+XG4gICAgICAgICAgdmFsdWUgOj1cbiAgICAgICAgICAgIG1hdGNoIGZsYWcgd2l0aFxuICAgICAgICAgICAgfCBcInRydWVcIiAtPiBUcnVlXG4gICAgICAgICAgICB8IFwiZmFsc2VcIiAtPiBGYWxzZVxuICAgICAgICAgICAgfCBcImZvcmNlXCIgLT4gRm9yY2VcbiAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuZW5kXG5cbmxldCBkZWZhdWx0X2FsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIDogRm9yY2FibGVfYm9vbC50ID0gRmFsc2VcbmxldCBkZWZhdWx0X2FsbG93X3VudXNlZF90eXBlX3dhcm5pbmdzIDogRm9yY2FibGVfYm9vbC50ID0gRmFsc2VcbmxldCBwZXJmb3JtX2NoZWNrcyA9IGZhbHNlXG5cbigqIFRoZSBjaGVja3Mgb24gZXh0ZW5zaW9ucyBhcmUgb25seSB0byBnZXQgYmV0dGVyIGVycm9yIG1lc3NhZ2VzXG4gICBzaW5jZSB0aGUgY29tcGlsZXIgd2lsbCBjaG9rZSBvbiB1bmtub3duIGV4dGVuc2lvbnMuIFdlIGRpc2FibGVcbiAgIHRoZW0gZXh0ZXJuYWxseSB0byBtYWtlIGl0IGVhc2llciB0byB1c2Ugbm9uIHBweGxpYiBiYXNlZFxuICAgcmV3cml0ZXJzIHdpdGggcHB4bGliICopXG5sZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA9IGZhbHNlXG5sZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgPSBmYWxzZVxubGV0IGZhaWxfb25fZHVwbGljYXRlX2Rlcml2ZXJzID0gZmFsc2VcbmxldCBkaWZmX2NvbW1hbmQgPSBOb25lXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuIEltcG9ydFxub3BlbiBVdGlsc1xub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBBcmcgPSBTdGRsaWIuQXJnXG5cbmxldCBleGVfbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBTdGRsaWIuU3lzLmV4ZWN1dGFibGVfbmFtZVxubGV0IGFyZ3MgPSByZWYgW11cbmxldCBhZGRfYXJnIGtleSBzcGVjIH5kb2MgPSBhcmdzIDo9IChrZXksIHNwZWMsIGRvYykgOjogIWFyZ3NcbmxldCBsb2NfZm5hbWUgPSByZWYgTm9uZVxubGV0IHBlcmZvcm1fY2hlY2tzID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3NcbmxldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9uc1xubGV0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrID0gcmVmIE9wdGlvbnMucGVyZm9ybV9sb2NhdGlvbnNfY2hlY2tcbmxldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCA9IHJlZiBmYWxzZVxubGV0IGFwcGx5X2xpc3QgPSByZWYgTm9uZVxubGV0IHByZXByb2Nlc3NvciA9IHJlZiBOb25lXG5sZXQgbm9fbWVyZ2UgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zID0gcmVmIGZhbHNlXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgT3B0aW9ucy5kaWZmX2NvbW1hbmRcbmxldCBwcmV0dHkgPSByZWYgZmFsc2VcbmxldCBzdHlsZXIgPSByZWYgTm9uZVxubGV0IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA9IHJlZiBOb25lXG5sZXQgY29ycmVjdGVkX3N1ZmZpeCA9IHJlZiBcIi5wcHgtY29ycmVjdGVkXCJcblxubGV0IGdob3N0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgbWV0aG9kISBsb2NhdGlvbiBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICBlbmRcblxubGV0IGNob3BfcHJlZml4IH5wcmVmaXggeCA9XG4gIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeCB4IHRoZW5cbiAgICBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggeCAoU3RyaW5nLmxlbmd0aCBwcmVmaXgpKVxuICBlbHNlIE5vbmVcblxubGV0IGdldF9kZWZhdWx0X3BhdGggKGxvYyA6IExvY2F0aW9uLnQpID1cbiAgbGV0IGZuYW1lID0gbG9jLmxvY19zdGFydC5wb3NfZm5hbWUgaW5cbiAgbWF0Y2ggY2hvcF9wcmVmaXggfnByZWZpeDpcIi4vXCIgZm5hbWUgd2l0aFxuICB8IFNvbWUgZm5hbWUgLT4gZm5hbWVcbiAgfCBOb25lIC0+IGZuYW1lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3N0ciA6IHN0cnVjdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzdHJfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zaWcgOiBzaWduYXR1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc2lnX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubW9kdWxlIExpbnRfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTG9jYXRpb24udCAqIHN0cmluZ1xuXG4gIGxldCBvZl9zdHJpbmcgbG9jIHMgPSAobG9jLCBzKVxuZW5kXG5cbm1vZHVsZSBDb29raWVzID0gc3RydWN0XG4gIHR5cGUgdCA9IFRcblxuICBsZXQgZ2l2ZW5fdGhyb3VnaF9jbGkgPSByZWYgW11cblxuICBsZXQgZ2V0IFQgbmFtZSBwYXR0ZXJuID1cbiAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZSBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcblxuICBsZXQgZ2V0X3JlcyBUIG5hbWUgcGF0dGVybiA9XG4gICAgbWF0Y2hcbiAgICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lIChPayBlKSAtPiBPayAoU29tZSBlKVxuICAgIHwgU29tZSAoRXJyb3IgZSkgLT4gRXJyb3IgZVxuXG4gIGxldCBzZXQgVCBuYW1lIGV4cHIgPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuc2V0X2Nvb2tpZSBuYW1lIChTZWxlY3RlZF9hc3QudG9fb2NhbWwgRXhwcmVzc2lvbiBleHByKVxuXG4gIGxldCBoYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX2hhbmRsZXIgZiA9IGhhbmRsZXJzIDo9ICFoYW5kbGVycyBAIFsgZiBdXG5cbiAgbGV0IGFkZF9zaW1wbGVfaGFuZGxlciBuYW1lIHBhdHRlcm4gfmYgPVxuICAgIGFkZF9oYW5kbGVyIChmdW4gVCAtPiBmIChnZXQgVCBuYW1lIHBhdHRlcm4pKVxuXG4gIGxldCBhY2tub3dsZWRnZV9jb29raWVzIFQgPSBMaXN0Lml0ZXIgIWhhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG4gIGxldCBwb3N0X2hhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfcG9zdF9oYW5kbGVyIGYgPSBwb3N0X2hhbmRsZXJzIDo9ICFwb3N0X2hhbmRsZXJzIEAgWyBmIF1cbiAgbGV0IGNhbGxfcG9zdF9oYW5kbGVycyBUID0gTGlzdC5pdGVyICFwb3N0X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG5lbmRcblxubW9kdWxlIEluc3RydW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBCZWZvcmUgfCBBZnRlclxuXG4gIHR5cGUgdCA9IHtcbiAgICB0cmFuc2Zvcm1hdGlvbiA6XG4gICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudDtcbiAgICBwb3NpdGlvbiA6IHBvcztcbiAgfVxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb24gY3R4IHN0ID0gcmV0dXJuICh0cmFuc2Zvcm1hdGlvbiBjdHggc3QpIGluXG4gICAgICB7IHRyYW5zZm9ybWF0aW9uOyBwb3NpdGlvbiB9XG4gIGVuZFxuXG4gIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgbGV0IHRyYW5zZm9ybWF0aW9uIF8gc3QgPSB0cmFuc2Zvcm1hdGlvbiBzdCBpblxuICAgIFYyLm1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uXG5lbmRcblxubW9kdWxlIFRyYW5zZm9ybSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBhbGlhc2VzIDogc3RyaW5nIGxpc3Q7XG4gICAgaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgKiBQYXJzZXRyZWUuc3RydWN0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAqIFBhcnNldHJlZS5zaWduYXR1cmUpXG4gICAgICBvcHRpb247XG4gICAgaW5zdHJ1bWVudCA6IEluc3RydW1lbnQudCBvcHRpb247XG4gICAgcnVsZXMgOiBDb250ZXh0X2ZyZWUuUnVsZS50IGxpc3Q7XG4gICAgcmVnaXN0ZXJlZF9hdCA6IENhbGxlcl9pZC50O1xuICB9XG5cbiAgbGV0IGhhc19uYW1lIHQgbmFtZSA9XG4gICAgU3RyaW5nLmVxdWFsIG5hbWUgdC5uYW1lIHx8IExpc3QuZXhpc3RzIH5mOihTdHJpbmcuZXF1YWwgbmFtZSkgdC5hbGlhc2VzXG5cbiAgbGV0IGFsbCA6IHQgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgcHJpbnRfY2FsbGVyX2lkIG9jIChjYWxsZXJfaWQgOiBDYWxsZXJfaWQudCkgPVxuICAgIG1hdGNoIGNhbGxlcl9pZCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dF9zdHJpbmcgb2MgXCI8dW5rbm93biBsb2NhdGlvbj5cIlxuICAgIHwgU29tZSBsb2MgLT4gUHJpbnRmLmZwcmludGYgb2MgXCIlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcblxuICBsZXQgcmVnaXN0ZXIgPyhleHRlbnNpb25zID0gW10pID8ocnVsZXMgPSBbXSkgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG4gICAgICA/aW5zdHJ1bWVudCA/KGFsaWFzZXMgPSBbXSkgbmFtZSA9XG4gICAgbGV0IHJ1bGVzID0gTGlzdC5tYXAgZXh0ZW5zaW9ucyB+ZjpDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gQCBydWxlcyBpblxuICAgIGxldCBjYWxsZXJfaWQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOlsgU3RkbGliLl9fRklMRV9fIF0gaW5cbiAgICAobWF0Y2ggTGlzdC5maWx0ZXIgIWFsbCB+ZjooZnVuIGN0IC0+IGhhc19uYW1lIGN0IG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBjdCA6OiBfIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiV2FybmluZzogY29kZSB0cmFuc2Zvcm1hdGlvbiAlcyByZWdpc3RlcmVkIHR3aWNlLlxcblwiXG4gICAgICAgICAgbmFtZTtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gZmlyc3QgdGltZSB3YXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWRcbiAgICAgICAgICBjdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBzZWNvbmQgdGltZSBpcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZCBjYWxsZXJfaWQpO1xuICAgIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBjdCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIGFsaWFzZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW1wbDtcbiAgICAgICAgaW50ZjtcbiAgICAgICAgbGludF9pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgbGludF9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50O1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gY2FsbGVyX2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgYWxsIDo9IGN0IDo6ICFhbGxcblxuICBsZXQgcmVjIGxhc3QgcHJldiBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgbG9jX29mX2xpc3QgfmdldF9sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGZpcnN0IDogTG9jYXRpb24udCA9IGdldF9sb2MgeCBpblxuICAgICAgICBsZXQgbGFzdCA9IGdldF9sb2MgKGxhc3QgeCBsKSBpblxuICAgICAgICBTb21lIHsgZmlyc3Qgd2l0aCBsb2NfZW5kID0gbGFzdC5sb2NfZW5kIH1cblxuICBsZXQgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgdCB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IHsgcnVsZXM7IGVuY2xvc2VfaW1wbDsgZW5jbG9zZV9pbnRmOyBpbXBsOyBpbnRmOyBfIH0gPSB0IGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBuZXcgQ29udGV4dF9mcmVlLm1hcF90b3BfZG93blxuICAgICAgICBydWxlcyB+ZW1iZWRfZXJyb3JzIH5nZW5lcmF0ZWRfY29kZV9ob29rOmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgaW5cbiAgICBsZXQgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIGNvbnRleHQgd2hvbGVfbG9jIGYgPVxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID0gZiB3aG9sZV9sb2MgaW5cbiAgICAgIChtYXRjaCB3aG9sZV9sb2Mgd2l0aFxuICAgICAgfCBTb21lIChsb2MgOiBMb2NhdGlvbi50KSAtPiAoXG4gICAgICAgICAgbGV0IGxvY19oZWFkZXIgPSB7IGxvYyB3aXRoIGxvY19lbmQgPSBsb2MubG9jX3N0YXJ0IH0gaW5cbiAgICAgICAgICBsZXQgbG9jX2Zvb3RlciA9IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIChtYXRjaCBoZWFkZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2hlYWRlciAoTWFueSBoZWFkZXIpKTtcbiAgICAgICAgICBtYXRjaCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2Zvb3RlciAoTWFueSBmb290ZXIpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBoZWFkZXIgQCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhvb2suZiBjb250ZXh0IGxvYyAoTWFueSBsKSkpO1xuICAgICAgKGhlYWRlciwgZm9vdGVyKVxuICAgIGluXG4gICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoIFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgaW5cbiAgICBsZXQgbWFwX2ltcGwgY3R4dCBzdF93aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc3QgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHN0X3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW1wbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHN0IH5nZXRfbG9jOihmdW4gc3QgLT4gc3QuUGFyc2V0cmVlLnBzdHJfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTdHJ1Y3R1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzdHJ1Y3R1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHN0OyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc3QgLT4gbWF0Y2ggaW1wbCB3aXRoIE5vbmUgLT4gcmV0dXJuIHN0IHwgU29tZSBmIC0+IGYgY3R4dCBzdFxuICAgIGluXG4gICAgbGV0IG1hcF9pbnRmIGN0eHQgc2dfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHNnID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzZ193aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ludGYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzZyB+Z2V0X2xvYzooZnVuIHNnIC0+IHNnLlBhcnNldHJlZS5wc2lnX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU2lnbmF0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc2lnbmF0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzZzsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHNnIC0+IG1hdGNoIGludGYgd2l0aCBOb25lIC0+IHJldHVybiBzZyB8IFNvbWUgZiAtPiBmIGN0eHQgc2dcbiAgICBpblxuICAgIHsgdCB3aXRoIGltcGwgPSBTb21lIG1hcF9pbXBsOyBpbnRmID0gU29tZSBtYXBfaW50ZiB9XG5cbiAgbGV0IGJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+aG9vayB+cnVsZXMgfmVuY2xvc2VfaW1wbCB+ZW5jbG9zZV9pbnRmXG4gICAgICB+aW5wdXRfbmFtZSA9XG4gICAgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmhvb2sgfmlucHV0X25hbWVcbiAgICAgIHtcbiAgICAgICAgbmFtZSA9IFwiPGJ1aWx0aW46Y29udGV4dC1mcmVlPlwiO1xuICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICBydWxlcztcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IENhbGxlcl9pZC5nZXQgfnNraXA6W107XG4gICAgICB9XG5cbiAgbGV0IHBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgdHMgPVxuICAgIGxldCBiZWZvcmVfaW5zdHJzLCBhZnRlcl9pbnN0cnMsIHJlc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgdHMgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKGJlZl9pLCBhZnRfaSwgcmVzdCkgdCAtPlxuICAgICAgICAgIGxldCByZWR1Y2VkX3QgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0IHdpdGhcbiAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmIGluc3RyID1cbiAgICAgICAgICAgIChpbnN0ci5JbnN0cnVtZW50LnBvc2l0aW9uLCBpbnN0ci5JbnN0cnVtZW50LnRyYW5zZm9ybWF0aW9uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggT3B0aW9uLm1hcCB0Lmluc3RydW1lbnQgfmYgd2l0aFxuICAgICAgICAgIHwgU29tZSAoQmVmb3JlLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBiZWZfaSxcbiAgICAgICAgICAgICAgICBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBTb21lIChBZnRlciwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIGJlZl9pLFxuICAgICAgICAgICAgICAgIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgTm9uZSAtPiAoYmVmX2ksIGFmdF9pLCByZWR1Y2VkX3QgOjogcmVzdCkpXG4gICAgaW5cbiAgICAoIGBMaW50ZXJzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ltcGwgfHwgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ludGYgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPGxpbnQ6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSB0LmxpbnRfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSB0LmxpbnRfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYFByZXByb2Nlc3NcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ltcGxcbiAgICAgICAgICAgICAgIHx8IE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbnRmXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPHByZXByb2Nlc3M6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gdC5wcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IHQucHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgYFJlc3QgcmVzdCApXG5lbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA9IFRyYW5zZm9ybS5yZWdpc3RlclxuXG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG4gICAgICA9XG4gICAgbGV0IGltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBpbXBsIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU3RydWN0dXJlKVxuICAgIGluXG4gICAgbGV0IGludGYgPVxuICAgICAgT3B0aW9uLm1hcCBpbnRmIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU2lnbmF0dXJlKVxuICAgIGluXG4gICAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuZW5kXG5cbmxldCBhZGRfY3R4dF9hcmcgKGYgOiAnYSAtPiAnYikgOiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2IgPVxuIGZ1biBfIHggLT4gZiB4XG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmID9pbXBsXG4gICAgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW1wbCA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbnRmID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ltcGwgPSBPcHRpb24ubWFwIGxpbnRfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW50ZiA9IE9wdGlvbi5tYXAgbGludF9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbXBsID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ludGYgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcblxubGV0IHJlZ2lzdGVyX2NvZGVfdHJhbnNmb3JtYXRpb24gfm5hbWUgPyhhbGlhc2VzID0gW10pIH5pbXBsIH5pbnRmID1cbiAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gbmFtZSB+aW1wbCB+aW50ZiB+YWxpYXNlc1xuW0BAd2FybmluZyBcIi0xNlwiXVxuKCogVGhpcyBmdW5jdGlvbiB0cmlnZ2VycyBhIHdhcm5pbmcgMTYgYXMgb2Ygb2NhbWwgNC4xMiAqKVxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmXG5cbmxldCBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBuYW1lIH5vbGRfZHJvcHBlZCB+bmV3X2Ryb3BwZWQgPVxuICBsZXQgcHJpbnRfZGlmZiB3aGF0IGEgYiA9XG4gICAgbGV0IGRpZmYgPVxuICAgICAgTGlzdC5maWx0ZXIgYSB+ZjooZnVuIChuYW1lIDogXyBMb2MudCkgLT5cbiAgICAgICAgICBub3RcbiAgICAgICAgICAgIChMaXN0LmV4aXN0cyBiIH5mOihmdW4gKG5hbWUnIDogXyBMb2NhdGlvbi5sb2MpIC0+XG4gICAgICAgICAgICAgICAgIG5hbWUudHh0ID09IG5hbWUnLnR4dCkpKVxuICAgIGluXG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGRpZmYpIHRoZW4gKFxuICAgICAgUHJpbnRmLmVwcmludGYgXCJUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgJXMgYWZ0ZXIgYXBwbHlpbmcgJXM6XFxuXCIgd2hhdFxuICAgICAgICBuYW1lO1xuICAgICAgTGlzdC5pdGVyIGRpZmYgfmY6KGZ1biB7IExvY2F0aW9uLnR4dDsgbG9jIH0gLT5cbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCItICVhOiAlc1xcblwiIExvY2F0aW9uLnByaW50IGxvYyB0eHQpO1xuICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiQC5cIilcbiAgaW5cbiAgcHJpbnRfZGlmZiBcImRpc2FwcGVhcmVkXCIgbmV3X2Ryb3BwZWQgb2xkX2Ryb3BwZWQ7XG4gIHByaW50X2RpZmYgXCJyZWFwcGVhcmVkXCIgb2xkX2Ryb3BwZWQgbmV3X2Ryb3BwZWRcblxubGV0IGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICB+aW5wdXRfbmFtZSA9XG4gIGxldCBjdHMgPVxuICAgIG1hdGNoICFhcHBseV9saXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5yZXYgIVRyYW5zZm9ybS5hbGxcbiAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICAgICAgICBMaXN0LmZpbmQgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gIGluXG4gIGxldCAoIGBMaW50ZXJzIGxpbnRlcnMsXG4gICAgICAgIGBQcmVwcm9jZXNzIHByZXByb2Nlc3MsXG4gICAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgICBgUmVzdCBjdHMgKSA9XG4gICAgVHJhbnNmb3JtLnBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgY3RzXG4gIGluXG4gICgqIEFsbG93IG9ubHkgb25lIHByZXByb2Nlc3NvciB0byBhc3N1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlciAqKVxuICAoaWYgTGlzdC5sZW5ndGggcHJlcHJvY2VzcyA+IDEgdGhlblxuICAgICBsZXQgcHAgPVxuICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QubWFwIHByZXByb2Nlc3MgfmY6KGZ1biB0IC0+IHQubmFtZSkpXG4gICAgIGluXG4gICAgIGxldCBlcnIgPVxuICAgICAgIFByaW50Zi5zcHJpbnRmIFwiQXQgbW9zdCBvbmUgcHJlcHJvY2Vzc29yIGlzIGFsbG93ZWQsIHdoaWxlIGdvdDogJXNcIiBwcFxuICAgICBpblxuICAgICBmYWlsd2l0aCBlcnIpO1xuICBsZXQgbWFrZV9nZW5lcmljIHRyYW5zZm9ybXMgPVxuICAgIGlmICFub19tZXJnZSB0aGVuXG4gICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zXG4gICAgICAgIH5mOlxuICAgICAgICAgIChUcmFuc2Zvcm0ubWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmVtYmVkX2Vycm9ycyB+aG9vayB+dG9vbF9uYW1lXG4gICAgICAgICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lKVxuICAgIGVsc2VcbiAgICAgIChsZXQgZ2V0X2VuY2xvc2VycyB+ZiA9XG4gICAgICAgICBMaXN0LmZpbHRlcl9tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGYgY3Qgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoY3QubmFtZSwgeCkpXG4gICAgICAgICAoKiBTb3J0IHRoZW0gdG8gZW5zdXJlIGRldGVybWluaXN0aWMgb3JkZXJpbmcgKilcbiAgICAgICAgIHw+IExpc3Quc29ydCB+Y21wOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpXG4gICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgICBpblxuXG4gICAgICAgbGV0IHJ1bGVzID1cbiAgICAgICAgIExpc3QubWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QucnVsZXMpXG4gICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgIGFuZCBpbXBsX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ltcGwpXG4gICAgICAgYW5kIGludGZfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW50ZikgaW5cbiAgICAgICBtYXRjaCAocnVsZXMsIGltcGxfZW5jbG9zZXJzLCBpbnRmX2VuY2xvc2Vycykgd2l0aFxuICAgICAgIHwgW10sIFtdLCBbXSAtPiB0cmFuc2Zvcm1zXG4gICAgICAgfCBfIC0+XG4gICAgICAgICAgIGxldCBtZXJnZV9lbmNsb3NlciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgfCBlbmNsb3NlcnMgLT5cbiAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgIChmdW4gY3R4dCBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzLCBmb290ZXJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgZW5jbG9zZXJzIH5mOihmdW4gZiAtPiBmIGN0eHQgbG9jKSB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMgPSBMaXN0LmNvbmNhdCBoZWFkZXJzIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgZm9vdGVycyA9IExpc3QuY29uY2F0IChMaXN0LnJldiBmb290ZXJzKSBpblxuICAgICAgICAgICAgICAgICAgICAgKGhlYWRlcnMsIGZvb3RlcnMpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBUcmFuc2Zvcm0uYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ydWxlcyB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW1wbDoobWVyZ2VfZW5jbG9zZXIgaW1wbF9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW50ZjoobWVyZ2VfZW5jbG9zZXIgaW50Zl9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZVxuICAgICAgICAgICA6OiB0cmFuc2Zvcm1zKVxuICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCAoY3QuaW1wbCwgY3QuaW50Zikgd2l0aCBOb25lLCBOb25lIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICBpblxuICBsaW50ZXJzIEAgcHJlcHJvY2VzcyBAIGJlZm9yZV9pbnN0cnMgQCBtYWtlX2dlbmVyaWMgY3RzIEAgYWZ0ZXJfaW5zdHJzXG5cbmxldCBhcHBseV90cmFuc2Zvcm1zIH50b29sX25hbWUgfmZpbGVfcGF0aCB+ZmllbGQgfmxpbnRfZmllbGQgfmRyb3BwZWRfc29fZmFyXG4gICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnMgYXN0ID1cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfnRvb2xfbmFtZSB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfmlucHV0X25hbWVcbiAgaW5cbiAgbGV0IGZpbmlzaCAoYXN0LCBfZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycykgPVxuICAgICggYXN0LFxuICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnMgfmY6KGZ1biAobG9jLCBzKSAtPlxuICAgICAgICAgIENvbW1vbi5hdHRyaWJ1dGVfb2Zfd2FybmluZyBsb2MgcyksXG4gICAgICBlcnJvcnMgKVxuICBpblxuICBsZXQgYWNjID1cbiAgICBMaXN0LmZvbGRfbGVmdCBjdHMgfmluaXQ6KGFzdCwgW10sIFtdLCBbXSlcbiAgICAgIH5mOihmdW5cbiAgICAgICAgICAoYXN0LCBkcm9wcGVkLCAobGludF9lcnJvcnMgOiBfIGxpc3QpLCBlcnJvcnMpIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgICAgICAgbWF0Y2ggbGludF9maWVsZCBjdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IChsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IChsaW50X2Vycm9ycyBAIGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAobGludF9lcnJvcnMsIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycykpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGZpZWxkIGN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgKGFzdCwgbW9yZV9lcnJvcnMpLCBlcnJvcnMgPVxuICAgICAgICAgICAgICB0cnkgKGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAoKGFzdCwgW10pLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRyb3BwZWQgPVxuICAgICAgICAgICAgICBpZiAhZGVidWdfYXR0cmlidXRlX2Ryb3AgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IG5ld19kcm9wcGVkID0gZHJvcHBlZF9zb19mYXIgYXN0IGluXG4gICAgICAgICAgICAgICAgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgY3QubmFtZSB+b2xkX2Ryb3BwZWQ6ZHJvcHBlZFxuICAgICAgICAgICAgICAgICAgfm5ld19kcm9wcGVkO1xuICAgICAgICAgICAgICAgIG5ld19kcm9wcGVkKVxuICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycyBAIG1vcmVfZXJyb3JzKSlcbiAgaW5cbiAgZmluaXNoIGFjY1xuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfihraW5kIDogS2luZC50KSA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IEludGYgLT4gSW50Zl9vcl9pbXBsLkludGYgWyBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yIF1cbiAgfCBJbXBsIC0+IEludGZfb3JfaW1wbC5JbXBsIFsgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciBdXG5cbmxldCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+KGtpbmQgOiBLaW5kLnQpID1cbiAgZXhuX3RvX2xvY19lcnJvciBleG4gfD4gZXJyb3JfdG9fZXh0ZW5zaW9uIH5raW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgQWN0dWFsIHJld3JpdGluZyBvZiBzdHJ1Y3R1cmUvc2lnbmF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHByaW50X3Bhc3NlcyAoKSA9XG4gIGxldCB0b29sX25hbWUgPSBcInBweGxpYl9kcml2ZXJcIiBpblxuICBsZXQgZW1iZWRfZXJyb3JzID0gZmFsc2UgaW5cbiAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgICB+aW5wdXRfbmFtZTpOb25lXG4gIGluXG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmZyZXNoZW4tYW5kLWNvbGxlY3QtYXR0cmlidXRlcz5cXG5cIjtcbiAgTGlzdC5pdGVyIGN0cyB+ZjooZnVuIGN0IC0+IFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0LlRyYW5zZm9ybS5uYW1lKTtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtYXR0cmlidXRlcz5cXG5cIjtcbiAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWV4dGVuc2lvbnM+XFxuXCIpXG5cbmxldCBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzID1cbiAgTGlzdC5zb3J0IGVycm9ycyB+Y21wOihmdW4gZXJyb3IgZXJyb3InIC0+XG4gICAgICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gICAgICBsZXQgbG9jJyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcicgaW5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmUgbG9jIGxvYycpXG5cbigqJCopXG5cbmxldCBtYXBfc3RydWN0dXJlX2dlbiBzdCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc3RydWN0dXJlIHN0KTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc3QgPVxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzdFxuICAgIGluXG4gICAgc3RcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzdCA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc3RydWN0dXJlX2l0ZW0pXG4gICAgQCBzdFxuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc3QgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlblxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9yc1xuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICBpZ25vcmVcbiAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHN0XG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICBsZXQgc3QsIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc3QgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW1wbClcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW1wbClcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzdCB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc3RydWN0dXJlIHN0ID1cbiAgbWF0Y2hcbiAgICBtYXBfc3RydWN0dXJlX2dlbiBzdFxuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgbWFwX3NpZ25hdHVyZV9nZW4gc2cgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3NpZ25hdHVyZSBzZyk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHNnID1cbiAgICBsZXQgc2cgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzZ1xuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc2dcbiAgICBpblxuICAgIHNnXG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc2cgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3NpZ25hdHVyZV9pdGVtKVxuICAgIEAgc2dcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHNnID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnNcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgaWdub3JlXG4gICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzaWduYXR1cmUgc2dcbiAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzZ1xuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgbGV0IHNnLCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHNnIH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmludGYpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ludGYpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc2cgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3NpZ25hdHVyZSBzZyA9XG4gIG1hdGNoXG4gICAgbWFwX3NpZ25hdHVyZV9nZW4gc2dcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCopXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgRW50cnkgcG9pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgPVxuICBsZXQgdGVzdCBtYWdpY19udW1iZXIgPVxuICAgIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OihTdHJpbmcuc3ViIG1hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICBpblxuICB0ZXN0IEFzdF9tYWdpYy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfHwgdGVzdCBBc3RfbWFnaWMuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbmxldCB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gaW5wdXRfZmlsZV9uYW1lID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gbXNnIC0+XG4gICAgICBsZXQgZXJyID1cbiAgICAgICAgTG9jYXRpb24uRXJyb3IubWFrZSB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVfbmFtZSkgbXNnIH5zdWI6W11cbiAgICAgIGluXG4gICAgICBFcnJvciAoZXJyLCBpbnB1dF92ZXJzaW9uKSlcblxubGV0IHJlbW92ZV9ub19lcnJvciBmbiA9IHRyeSBTdGRsaWIuU3lzLnJlbW92ZSBmbiB3aXRoIFN5c19lcnJvciBfIC0+ICgpXG5cbmxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCB2IC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICB2XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmYgPVxuICBtYXRjaCAhcHJlcHJvY2Vzc29yIHdpdGhcbiAgfCBOb25lIC0+IGYgZm5cbiAgfCBTb21lIHBwIC0+XG4gICAgICBwcm90ZWN0eCAoU3RkbGliLkZpbGVuYW1lLnRlbXBfZmlsZSBcIm9jYW1scHBcIiBcIlwiKSB+ZmluYWxseTpyZW1vdmVfbm9fZXJyb3JcbiAgICAgICAgfmY6KGZ1biB0bXBmaWxlIC0+XG4gICAgICAgICAgbWF0Y2ggU3lzdGVtLnJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dDpmbiB+b3V0cHV0OnRtcGZpbGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gZiB0bXBmaWxlXG4gICAgICAgICAgfCBFcnJvciAoZmFpbGVkX2NvbW1hbmQsIGZhbGxfYmFja192ZXJzaW9uKSAtPlxuICAgICAgICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgICAgICAgICAgXCJFcnJvciB3aGlsZSBydW5uaW5nIGV4dGVybmFsIHByZXByb2Nlc3NvclxcbkNvbW1hbmQgbGluZTogJXNcXG5cIlxuICAgICAgICAgICAgICAgIGZhaWxlZF9jb21tYW5kKVxuXG5sZXQgcmVsb2NhdGVfbWFwcGVyID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nICogc3RyaW5nXSBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kISBwb3NpdGlvbiAob2xkX2ZuLCBuZXdfZm4pIHBvcyA9XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgcG9zLnBvc19mbmFtZSBvbGRfZm4gdGhlbiB7IHBvcyB3aXRoIHBvc19mbmFtZSA9IG5ld19mbiB9XG4gICAgICBlbHNlIHBvc1xuICBlbmRcblxuKCogU2V0IHRoZSBpbnB1dCBuYW1lIGdsb2JhbGx5LiBUaGlzIGlzIHVzZWQgYnkgc29tZSBwcHggcmV3cml0ZXJzXG4gICBzdWNoIGFzIGJpc2VjdF9wcHguICopXG5sZXQgc2V0X2lucHV0X25hbWUgPSBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X25hbWVcblxubGV0IGxvYWRfaW5wdXQgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgZm4gPVxuICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICBsZXQgaW5wdXRfc291cmNlID0gaWYgU3RyaW5nLmVxdWFsIGZuIFwiLVwiIHRoZW4gQXN0X2lvLlN0ZGluIGVsc2UgRmlsZSBmbiBpblxuICBsZXQgaW5wdXRfa2luZCA9IEFzdF9pby5Qb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIGluXG4gIG1hdGNoIEFzdF9pby5yZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0X2tpbmQgPSBJbnRmX29yX2ltcGwua2luZCBhc3QgaW5cbiAgICAgIGlmIG5vdCAoS2luZC5lcXVhbCBraW5kIGFzdF9raW5kKSB0aGVuXG4gICAgICAgIHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBmblxuICAgICAgICAgIFwiRmlsZSBjb250YWlucyBhIGJpbmFyeSAlcyBBU1QgYnV0IGFuICVzIHdhcyBleHBlY3RlZFwiXG4gICAgICAgICAgKEtpbmQuZGVzY3JpYmUgYXN0X2tpbmQpIChLaW5kLmRlc2NyaWJlIGtpbmQpXG4gICAgICBlbHNlIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHx8IG5vdCByZWxvY2F0ZSB0aGVuIChcbiAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgIE9rIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgT2tcbiAgICAgICAgICAoIGlucHV0X25hbWUsXG4gICAgICAgICAgICBpbnB1dF92ZXJzaW9uLFxuICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpIClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgIFwiRmlsZSBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKVxuICB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICBFcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKVxuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBsb2FkX2lucHV0X3J1bl9hc19wcHggZm4gPVxuICAoKiBJZiB0aGVyZSdzIGFuIGVycm9yIHdoaWxlIGxvYWRpbmcgaW4gcnVuX2FzX3BweCBtb2RlLCB0aGUga2luZCBvZiBBU1QgKGltcGwvaW50ZikgaXMgc3RpbGwgdW5rbm93bi5cbiAgICAgVGhhdCdzIHdoeSwgYXMgb3Bwb3NlZCB0byBsb2FkX2lucHV0LCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyBlcnJvcnMgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSByZXN1bHQ6XG4gICAgIGhhbmRsaW5nIGFuIGVycm9yIGJ5IHJldHVybmluZyBhbiBBU1Qgd2l0aCB0aGUgZXJyb3IgcGFja2VkIGFzIGV4dGVuc2lvbiBub2RlIHdvdWxkbid0IGJlIHBvc3NpYmxlLiAqKVxuICBtYXRjaCBBc3RfaW8ucmVhZCAoRmlsZSBmbikgfmlucHV0X2tpbmQ6QXN0X2lvLk5lY2Vzc2FyaWx5X2JpbmFyeSB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgICAgICBhc3RcbiAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB0aGVuIGFzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKVxuICAgICAgaW5cbiAgICAgICgqIFdpdGggYC0tYXMtcHB4YCwgb2NhbWwgY2FsbHMgdGhlIHN0YW5kYWxvbmUgc2VwYXJhdGVseSBmb3IgZXZlcnkgc3RydWN0dXJlL3NpZ25hdHVyZSBpdGVtXG4gICAgICAgICB3aXRoIHRoZSBmaWxlbmFtZSBhcyBtZXRhZGF0YSB0aGF0IGl0IGdldHMgZnJvbSB0aGUgcHJldmlvdXMgY2FsbC4gcmVsb2NhdGVfbWFwcGVyIG9ubHlcbiAgICAgICAgIHJlbG9jYXRlcyBwb3NpdGlvbnMgd2hvc2UgcG9zaXRpb24gZmlsZW5hbWUgY29pbmNpZGVzIHdpdGggdGhhdCBtZXRhZGF0YSBmaWxlbmFtZS5cbiAgICAgICAgIFNvIGFsd2F5cyByZXR1cm4gdGhlIG1ldGFkYXRhIGZpbGVuYW1lIGl0c2VsZiwgZXZlbiBpZiBgLWxvYy1maWxlbmFtZWAgaXMgcHJvdmlkZWQuICopXG4gICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBfKSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIlRoZSBpbnB1dCBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJFeHBlY3RlZCBhIGJpbmFyeSBBU1QgYXMgaW5wdXRcIlxuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBfKSkgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgXykpIC0+XG4gICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcblxubGV0IGxvYWRfc291cmNlX2ZpbGUgZm4gPVxuICBsZXQgcyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZm4gaW5cbiAgaWYgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICBcInBweGxpYl9kcml2ZXI6IGNhbm5vdCB1c2UgLXJlY29uY2lsZSB3aXRoIGJpbmFyeSBBU1QgZmlsZXNcIjtcbiAgc1xuXG50eXBlIG91dHB1dF9tb2RlID1cbiAgfCBQcmV0dHlfcHJpbnRcbiAgfCBEdW1wX2FzdFxuICB8IERwYXJzZXRyZWVcbiAgfCBSZWNvbmNpbGUgb2YgUmVjb25jaWxlLm1vZGVcbiAgfCBOdWxsXG5cbigqJCopXG5sZXQgZXh0cmFjdF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBzdCA9XG4gICAgbWF0Y2ggc3Qgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgIFBzdHJfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHN0IC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTdHJ1Y3R1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc3RyIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHN0XG4gICAgfCBfIC0+IHN0XG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc3RcblxubGV0IGFkZF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU3RydWN0dXJlXG4gIGluXG4gIHByZWZpeCBAIHN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHNnID1cbiAgICBtYXRjaCBzZyB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHNpZ19kZXNjID1cbiAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc2cgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFNpZ25hdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zaWcgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc2dcbiAgICB8IF8gLT4gc2dcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzZ1xuXG5sZXQgYWRkX2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTaWduYXR1cmVcbiAgaW5cbiAgcHJlZml4IEAgc2dcblxuKCokKilcblxubGV0IGV4dHJhY3RfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChleHRyYWN0X2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGV4dHJhY3RfY29va2llc19zdHIgeClcblxubGV0IGFkZF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGFkZF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChhZGRfY29va2llc19zdHIgeClcblxubGV0IGNvcnJlY3Rpb25zID0gcmVmIFtdXG5sZXQgYWRkX3RvX2xpc3QgciB4ID0gciA6PSB4IDo6ICFyXG5cbmxldCByZWdpc3Rlcl9jb3JyZWN0aW9uIH5sb2MgfnJlcGwgPVxuICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZV90ZXh0ICgpIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kXG4gICAgICAgfnJlcGwpXG5cbmxldCBwcm9jZXNzX2ZpbGVfaG9va3MgPSByZWYgW11cbmxldCByZWdpc3Rlcl9wcm9jZXNzX2ZpbGVfaG9vayBmID0gYWRkX3RvX2xpc3QgcHJvY2Vzc19maWxlX2hvb2tzIGZcblxubW9kdWxlIEZpbGVfcHJvcGVydHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgbXV0YWJsZSBkYXRhIDogJ2Egb3B0aW9uO1xuICAgIHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudDtcbiAgfVxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgYWxsID0gcmVmIFtdXG4gIGxldCByZWdpc3RlciB0ID0gYWRkX3RvX2xpc3QgYWxsIChUIHQpXG4gIGxldCByZXNldF9hbGwgKCkgPSBMaXN0Lml0ZXIgIWFsbCB+ZjooZnVuIChUIHQpIC0+IHQuZGF0YSA8LSBOb25lKVxuXG4gIGxldCBkdW1wX2FuZF9yZXNldF9hbGwgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC5yZXYgIWFsbCkgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBtYXRjaCB0LmRhdGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgdC5kYXRhIDwtIE5vbmU7XG4gICAgICAgICAgICBTb21lICh0Lm5hbWUsIHQuc2V4cF9vZl90IHYpKVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZmlsZV9wcm9wZXJ0eVxuICAgIChOYW1lIDogc2lnXG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZClcbiAgICAoVCA6IFNleHBhYmxlLlMpID1cbnN0cnVjdFxuICBsZXQgdCA6IF8gRmlsZV9wcm9wZXJ0eS50ID1cbiAgICB7IG5hbWUgPSBOYW1lLm5hbWU7IGRhdGEgPSBOb25lOyBzZXhwX29mX3QgPSBULnNleHBfb2ZfdCB9XG5cbiAgbGV0ICgpID0gRmlsZV9wcm9wZXJ0eS5yZWdpc3RlciB0XG4gIGxldCBzZXQgeCA9IHQuZGF0YSA8LSBTb21lIHhcbmVuZFxuXG5sZXQgcHJvY2Vzc19hc3QgKGFzdCA6IEludGZfb3JfaW1wbC50KSB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rXG4gICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5lbWJlZF9lcnJvcnMgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3NpZ25hdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbnRmIGFzdFxuICB8IEltcGwgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3N0cnVjdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbXBsIGFzdFxuXG5sZXQgcHJvY2Vzc19maWxlIChraW5kIDogS2luZC50KSBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlXG4gICAgfmVtYmVkX2Vycm9ycyB+b3V0cHV0ID1cbiAgRmlsZV9wcm9wZXJ0eS5yZXNldF9hbGwgKCk7XG4gIExpc3QuaXRlciAoTGlzdC5yZXYgIXByb2Nlc3NfZmlsZV9ob29rcykgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBjb3JyZWN0aW9ucyA6PSBbXTtcbiAgbGV0IHJlcGxhY2VtZW50cyA9IHJlZiBbXSBpblxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhfZHJpdmVyXCIgaW5cbiAgbGV0IGhvb2sgOiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay50ID1cbiAgICBtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gICAgfCBSZWNvbmNpbGUgKFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIGYgPVxuICAgICAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICAgICAgYWRkX3RvX2xpc3QgcmVwbGFjZW1lbnRzXG4gICAgICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihFeHRlbnNpb24gY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDpnZW5lcmF0ZWQpKTtcbiAgICAgICAgfVxuICAgIHwgXyAtPiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIDogQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLnQgPVxuICAgIHtcbiAgICAgIGYgPVxuICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEZsb2F0aW5nX2F0dHJpYnV0ZSBjb250ZXh0KVxuICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6KE1hbnkgZ2VuZXJhdGVkKSkpO1xuICAgIH1cbiAgaW5cblxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID1cbiAgICBsZXQgcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgPVxuICAgICAgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZjoobG9hZF9pbnB1dCB+a2luZCB+aW5wdXRfbmFtZSB+cmVsb2NhdGUpXG4gICAgaW5cbiAgICBtYXRjaCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCB3aXRoXG4gICAgfCBPayAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkgLT4gKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIGV4dHJhY3RfY29va2llcyBhc3RcbiAgICAgICAgICAgIHw+IHByb2Nlc3NfYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQpKVxuICAgIHwgRXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAoaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH5raW5kKVxuICAgIHwgRXJyb3IgKGVycm9yLCBfKSAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm5cbiAgICAgICAgfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuICBpblxuICBPcHRpb24uaXRlciAhb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIH5mOihmdW4gZm4gLT5cbiAgICAgIGxldCBtZXRhZGF0YSA9IEZpbGVfcHJvcGVydHkuZHVtcF9hbmRfcmVzZXRfYWxsICgpIGluXG4gICAgICBPdXRfY2hhbm5lbC53cml0ZV9hbGwgZm5cbiAgICAgICAgfmRhdGE6XG4gICAgICAgICAgKExpc3QubWFwIG1ldGFkYXRhIH5mOihmdW4gKHMsIHNleHApIC0+XG4gICAgICAgICAgICAgICBTZXhwLnRvX3N0cmluZ19odW0gKFNleHAuTGlzdCBbIEF0b20gczsgc2V4cCBdKSBeIFwiXFxuXCIpXG4gICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIpKTtcblxuICBsZXQgaW5wdXRfY29udGVudHMgPSBsYXp5IChsb2FkX3NvdXJjZV9maWxlIGZuKSBpblxuICBsZXQgY29ycmVjdGVkID0gZm4gXiAhY29ycmVjdGVkX3N1ZmZpeCBpblxuICBsZXQgbWlzbWF0Y2hlc19mb3VuZCA9XG4gICAgbWF0Y2ggIWNvcnJlY3Rpb25zIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAgIGlmIFN0ZGxpYi5TeXMuZmlsZV9leGlzdHMgY29ycmVjdGVkIHRoZW4gU3RkbGliLlN5cy5yZW1vdmUgY29ycmVjdGVkO1xuICAgICAgICBmYWxzZVxuICAgIHwgY29ycmVjdGlvbnMgLT5cbiAgICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSBjb3JyZWN0aW9uc1xuICAgICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgICB+b3V0cHV0OihTb21lIGNvcnJlY3RlZCkgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lXG4gICAgICAgICAgfnRhcmdldDpDb3JyZWN0ZWQgP3N0eWxlcjohc3R5bGVyIH5raW5kO1xuICAgICAgICB0cnVlXG4gIGluXG5cbiAgKG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgfCBOdWxsIC0+ICgpXG4gIHwgUHJldHR5X3ByaW50IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlIHBwZiBhc3RcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFBwcmludGFzdC5zdHJ1Y3R1cmUgcHBmIGFzdCk7XG4gICAgICAgICAgbGV0IG51bGxfYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoIEludGYgW10gfCBJbXBsIFtdIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgbnVsbF9hc3QgdGhlbiBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IER1bXBfYXN0IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBBc3RfaW8ud3JpdGUgb2NcbiAgICAgICAgICAgIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICAgICAgICAgIH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcbiAgfCBEcGFyc2V0cmVlIC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgbGV0IGFzdCA9IGFkZF9jb29raWVzIGFzdCBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmUgYXN0KVxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmUgYXN0KSk7XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBSZWNvbmNpbGUgbW9kZSAtPlxuICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSAhcmVwbGFjZW1lbnRzXG4gICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgfm91dHB1dCB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWUgfnRhcmdldDooT3V0cHV0IG1vZGUpXG4gICAgICAgID9zdHlsZXI6IXN0eWxlciB+a2luZCk7XG5cbiAgaWZcbiAgICBtaXNtYXRjaGVzX2ZvdW5kICYmIG1hdGNoICFkaWZmX2NvbW1hbmQgd2l0aCBTb21lIFwiLVwiIC0+IGZhbHNlIHwgXyAtPiB0cnVlXG4gIHRoZW4gKFxuICAgIFBweGxpYl9wcmludF9kaWZmLnByaW50ICgpIH5maWxlMTpmbiB+ZmlsZTI6Y29ycmVjdGVkIH51c2VfY29sb3I6IXVzZV9jb2xvclxuICAgICAgP2RpZmZfY29tbWFuZDohZGlmZl9jb21tYW5kO1xuICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCBvdXRwdXRfbW9kZSA9IHJlZiBQcmV0dHlfcHJpbnRcbmxldCBvdXRwdXQgPSByZWYgTm9uZVxubGV0IGtpbmQgPSByZWYgTm9uZVxubGV0IGlucHV0ID0gcmVmIE5vbmVcbmxldCBlbWJlZF9lcnJvcnMgPSByZWYgZmFsc2VcblxubGV0IHNldF9pbnB1dCBmbiA9XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnB1dCA6PSBTb21lIGZuXG4gIHwgU29tZSBfIC0+IHJhaXNlIChBcmcuQmFkIFwidG9vIG1hbnkgaW5wdXQgZmlsZXNcIilcblxubGV0IHNldF9raW5kIGsgPVxuICBtYXRjaCAha2luZCB3aXRoXG4gIHwgU29tZSBrJyB3aGVuIG5vdCAoS2luZC5lcXVhbCBrIGsnKSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJtdXN0IHNwZWNpZnkgYXQgbW9zdCBvbmUgb2YgLWltcGwgb3IgLWludGZcIilcbiAgfCBfIC0+IGtpbmQgOj0gU29tZSBrXG5cbmxldCBzZXRfb3V0cHV0X21vZGUgbW9kZSA9XG4gIG1hdGNoICghb3V0cHV0X21vZGUsIG1vZGUpIHdpdGhcbiAgfCBQcmV0dHlfcHJpbnQsIF8gLT4gb3V0cHV0X21vZGUgOj0gbW9kZVxuICB8IF8sIFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBEdW1wX2FzdCwgRHVtcF9hc3QgfCBEcGFyc2V0cmVlLCBEcGFyc2V0cmVlIC0+ICgpXG4gIHwgUmVjb25jaWxlIGEsIFJlY29uY2lsZSBiIHdoZW4gUG9seS5lcXVhbCBhIGIgLT4gKClcbiAgfCB4LCB5IC0+XG4gICAgICBsZXQgYXJnX29mX291dHB1dF9tb2RlID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgRHVtcF9hc3QgLT4gXCItZHVtcC1hc3RcIlxuICAgICAgICB8IERwYXJzZXRyZWUgLT4gXCItZHBhcnNldHJlZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPiBcIi1yZWNvbmNpbGVcIlxuICAgICAgICB8IFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT4gXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIlxuICAgICAgICB8IE51bGwgLT4gXCItbnVsbFwiXG4gICAgICBpblxuICAgICAgcmFpc2VcbiAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgYW5kICVzIGFyZSBpbmNvbXBhdGlibGVcIiAoYXJnX29mX291dHB1dF9tb2RlIHgpXG4gICAgICAgICAgICAgIChhcmdfb2Zfb3V0cHV0X21vZGUgeSkpKVxuXG5sZXQgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpID1cbiAgTGlzdC5pdGVyICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5uYW1lKVxuXG5sZXQgcGFyc2VfYXBwbHlfbGlzdCBzID1cbiAgbGV0IG5hbWVzID1cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIlwiIHRoZW4gW10gZWxzZSBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6JywnXG4gIGluXG4gIExpc3QuaXRlciBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgIGlmXG4gICAgICAgIG5vdFxuICAgICAgICAgIChMaXN0LmV4aXN0cyAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChTdGRsaWIuQXJnLkJhZFxuICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcImNvZGUgdHJhbnNmb3JtYXRpb24gJyVzJyBkb2VzIG5vdCBleGlzdFwiIG5hbWUpKSk7XG4gIG5hbWVzXG5cbnR5cGUgbWFzayA9IHtcbiAgbXV0YWJsZSBhcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbiAgbXV0YWJsZSBkb250X2FwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xufVxuXG5sZXQgbWFzayA9IHsgYXBwbHkgPSBOb25lOyBkb250X2FwcGx5ID0gTm9uZSB9XG5cbmxldCBoYW5kbGVfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgKCogVGhpcyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzIG1vcmUgaW50dWl0aXZlICopXG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIC1kb250LWFwcGx5XCIpO1xuICBtYXNrLmFwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGhhbmRsZV9kb250X2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgbWFzay5kb250X2FwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGludGVycHJldF9tYXNrICgpID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB8fCBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIGxldCBzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSBjdCA9XG4gICAgICBsZXQgaXNfY2FuZGlkYXRlID1cbiAgICAgICAgbWF0Y2ggbWFzay5hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPiBMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19zZWxlY3RlZCA9XG4gICAgICAgIG1hdGNoIG1hc2suZG9udF9hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpc19jYW5kaWRhdGVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgICAgICBpc19jYW5kaWRhdGUgJiYgbm90IChMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KSlcbiAgICAgIGluXG4gICAgICBpZiBpc19zZWxlY3RlZCB0aGVuIFNvbWUgY3QubmFtZSBlbHNlIE5vbmVcbiAgICBpblxuICAgIGFwcGx5X2xpc3QgOj1cbiAgICAgIFNvbWUgKExpc3QuZmlsdGVyX21hcCAhVHJhbnNmb3JtLmFsbCB+ZjpzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSlcblxubGV0IHNldF9jb29raWUgcyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOic9JyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJpbnZhbGlkIGNvb2tpZSwgbXVzdCBiZSBvZiB0aGUgZm9ybSBcXFwiPG5hbWU+PTxleHByPlxcXCJcIilcbiAgfCBTb21lIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgdmFsdWUgaW5cbiAgICAgIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiPGNvbW1hbmQtbGluZT5cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9O1xuICAgICAgbGV0IGV4cHIgPSBQYXJzZS5leHByZXNzaW9uIGxleGJ1ZiBpblxuICAgICAgQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSA6PSAobmFtZSwgZXhwcikgOjogIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGlcblxubGV0IHNoYXJlZF9hcmdzID1cbiAgW1xuICAgICggXCItbG9jLWZpbGVuYW1lXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBsb2NfZm5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiPHN0cmluZz4gRmlsZSBuYW1lIHRvIHVzZSBpbiBsb2NhdGlvbnNcIiApO1xuICAgICggXCItcmVzZXJ2ZS1uYW1lc3BhY2VcIixcbiAgICAgIEFyZy5TdHJpbmcgTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzLnJlc2VydmUsXG4gICAgICBcIjxzdHJpbmc+IE1hcmsgdGhlIGdpdmVuIG5hbWVzcGFjZSBhcyByZXNlcnZlZFwiICk7XG4gICAgKFwiLW5vLWNoZWNrXCIsIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrcywgXCIgRGlzYWJsZSBjaGVja3MgKHVuc2FmZSlcIik7XG4gICAgKFwiLWNoZWNrXCIsIEFyZy5TZXQgcGVyZm9ybV9jaGVja3MsIFwiIEVuYWJsZSBjaGVja3NcIik7XG4gICAgKCBcIi1uby1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIERpc2FibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIEVuYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItbm8tbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBEaXNhYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIEVuYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gQXBwbHkgdGhlc2UgdHJhbnNmb3JtYXRpb25zIGluIG9yZGVyIChjb21tYS1zZXBhcmF0ZWQgbGlzdClcIiApO1xuICAgICggXCItZG9udC1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfZG9udF9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBFeGNsdWRlIHRoZXNlIHRyYW5zZm9ybWF0aW9uc1wiICk7XG4gICAgKCBcIi1uby1tZXJnZVwiLFxuICAgICAgQXJnLlNldCBub19tZXJnZSxcbiAgICAgIFwiIERvIG5vdCBtZXJnZSBjb250ZXh0IGZyZWUgdHJhbnNmb3JtYXRpb25zIChiZXR0ZXIgZm9yIGRlYnVnZ2luZyBcXFxuICAgICAgIHJld3JpdGVycykuIEFzIGEgcmVzdWx0LCB0aGUgY29udGV4dC1mcmVlIHRyYW5zZm9ybWF0aW9ucyBhcmUgbm90IGFsbCBcXFxuICAgICAgIGFwcGxpZWQgYmVmb3JlIGFsbCBpbXBsIGFuZCBpbnRmLlwiICk7XG4gICAgKFwiLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiTkFNRT1FWFBSIFNldCB0aGUgY29va2llIE5BTUUgdG8gRVhQUlwiKTtcbiAgICAoXCItLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiIFNhbWUgYXMgLWNvb2tpZVwiKTtcbiAgXVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXIgc2hhcmVkX2FyZ3MgfmY6KGZ1biAoa2V5LCBzcGVjLCBkb2MpIC0+IGFkZF9hcmcga2V5IHNwZWMgfmRvYylcblxubGV0IGFzX3BwICgpID1cbiAgc2V0X291dHB1dF9tb2RlIER1bXBfYXN0O1xuICBlbWJlZF9lcnJvcnMgOj0gdHJ1ZVxuXG5sZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgW1xuICAgICggXCItYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBSdW4gYXMgYSAtcHB4IHJld3JpdGVyIChtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudClcIiApO1xuICAgICggXCItLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi0tYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFNhbWUgYXMgLWFzLXBweFwiICk7XG4gICAgKFwiLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTaG9ydGhhbmQgZm9yOiAtZHVtcC1hc3QgLWVtYmVkLWVycm9yc1wiKTtcbiAgICAoXCItLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTYW1lIGFzIC1hcy1wcFwiKTtcbiAgICAoIFwiLW9cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dCA6PSBTb21lIHMpLFxuICAgICAgXCI8ZmlsZW5hbWU+IE91dHB1dCBmaWxlICh1c2UgJy0nIGZvciBzdGRvdXQpXCIgKTtcbiAgICAoXCItXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2lucHV0IFwiLVwiKSwgXCIgUmVhZCBpbnB1dCBmcm9tIHN0ZGluXCIpO1xuICAgICggXCItZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIER1bXAgdGhlIG1hcnNoYWxlZCBhc3QgdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQgb2YgcHJldHR5LXByaW50aW5nIGl0XCJcbiAgICApO1xuICAgICggXCItLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBTYW1lIGFzIC1kdW1wLWFzdFwiICk7XG4gICAgKCBcIi1kcGFyc2V0cmVlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEcGFyc2V0cmVlKSxcbiAgICAgIFwiIFByaW50IHRoZSBwYXJzZXRyZWUgKHNhbWUgYXMgb2NhbWxjIC1kcGFyc2V0cmVlKVwiICk7XG4gICAgKCBcIi1lbWJlZC1lcnJvcnNcIixcbiAgICAgIEFyZy5TZXQgZW1iZWRfZXJyb3JzLFxuICAgICAgXCIgRW1iZWQgZXJyb3JzIGluIHRoZSBvdXRwdXQgQVNUIChkZWZhdWx0OiB0cnVlIHdoZW4gLWFzLXBwLCBmYWxzZSBcXFxuICAgICAgIG90aGVyd2lzZSlcIiApO1xuICAgICggXCItbnVsbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgTnVsbCksXG4gICAgICBcIiBQcm9kdWNlIG5vIG91dHB1dCwgZXhjZXB0IGZvciBlcnJvcnNcIiApO1xuICAgICggXCItaW1wbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbCBmaWxlXCIgKTtcbiAgICAoXCItLWltcGxcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW1wbFwiKTtcbiAgICAoIFwiLWludGZcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWxpIGZpbGVcIiApO1xuICAgIChcIi0taW50ZlwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbnRmXCIpO1xuICAgICggXCItZGVidWctYXR0cmlidXRlLWRyb3BcIixcbiAgICAgIEFyZy5TZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AsXG4gICAgICBcIiBEZWJ1ZyBhdHRyaWJ1dGUgZHJvcHBpbmdcIiApO1xuICAgICggXCItcHJpbnQtdHJhbnNmb3JtYXRpb25zXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zLFxuICAgICAgXCIgUHJpbnQgbGlua2VkLWluIGNvZGUgdHJhbnNmb3JtYXRpb25zLCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgYXBwbGllZFwiICk7XG4gICAgKCBcIi1wcmludC1wYXNzZXNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF9wYXNzZXMsXG4gICAgICBcIiBQcmludCB0aGUgYWN0dWFsIHBhc3NlcyBvdmVyIHRoZSB3aG9sZSBBU1QgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIFxcXG4gICAgICAgYXBwbGllZFwiICk7XG4gICAgKCBcIi1pdGUtY2hlY2tcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJXYXJuaW5nOiB0aGUgLWl0ZS1jaGVjayBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyBubyBlZmZlY3QuXFxuJSFcIjtcbiAgICAgICAgICBFeHRyYV93YXJuaW5ncy5jYXJlX2Fib3V0X2l0ZV9icmFuY2ggOj0gdHJ1ZSksXG4gICAgICBcIiAobm8gZWZmZWN0IC0tIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkpXCIgKTtcbiAgICAoIFwiLXBwXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBwcmVwcm9jZXNzb3IgOj0gU29tZSBzKSxcbiAgICAgIFwiPGNvbW1hbmQ+ICBQaXBlIHNvdXJjZXMgdGhyb3VnaCBwcmVwcm9jZXNzb3IgPGNvbW1hbmQ+IChpbmNvbXBhdGlibGUgXFxcbiAgICAgICB3aXRoIC1hcy1wcHgpXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMpKSxcbiAgICAgIFwiIChXSVApIFByZXR0eSBwcmludCB0aGUgb3V0cHV0IHVzaW5nIGEgbWl4IG9mIHRoZSBpbnB1dCBzb3VyY2UgYW5kIHRoZSBcXFxuICAgICAgIGdlbmVyYXRlZCBjb2RlXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykpLFxuICAgICAgXCIgKFdJUCkgc2FtZSBhcyAtcmVjb25jaWxlIGJ1dCB1c2VzIGNvbW1lbnRzIHRvIGVuY2xvc2UgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1uby1jb2xvclwiLCBBcmcuQ2xlYXIgdXNlX2NvbG9yLCBcIiBEb24ndCB1c2UgY29sb3JzIHdoZW4gcHJpbnRpbmcgZXJyb3JzXCIpO1xuICAgICggXCItZGlmZi1jbWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpLFxuICAgICAgXCIgRGlmZiBjb21tYW5kIHdoZW4gdXNpbmcgY29kZSBleHBlY3RhdGlvbnMgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApO1xuICAgICggXCItcHJldHR5XCIsXG4gICAgICBBcmcuU2V0IHByZXR0eSxcbiAgICAgIFwiIEluc3RydWN0IGNvZGUgZ2VuZXJhdG9ycyB0byBpbXByb3ZlIHRoZSBwcmV0dGluZXNzIG9mIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItc3R5bGVyXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHN0eWxlciA6PSBTb21lIHMpLCBcIiBDb2RlIHN0eWxlclwiKTtcbiAgICAoIFwiLW91dHB1dC1tZXRhZGF0YVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIkZJTEUgV2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBtZXRhZGF0YVwiICk7XG4gICAgKCBcIi1jb3JyZWN0ZWQtc3VmZml4XCIsXG4gICAgICBBcmcuU2V0X3N0cmluZyBjb3JyZWN0ZWRfc3VmZml4LFxuICAgICAgXCJTVUZGSVggU3VmZml4IHRvIGFwcGVuZCB0byBjb3JyZWN0ZWQgZmlsZXNcIiApO1xuICBdXG5cbmxldCBnZXRfYXJncyA/KHN0YW5kYWxvbmVfYXJncyA9IHN0YW5kYWxvbmVfYXJncykgKCkgPVxuICBzdGFuZGFsb25lX2FyZ3MgQCBMaXN0LnJldiAhYXJnc1xuXG5sZXQgc3RhbmRhbG9uZV9tYWluICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gWzxmaWxlcz5dXCIgZXhlX25hbWUgaW5cbiAgbGV0IGFyZ3MgPSBnZXRfYXJncyAoKSBpblxuICBBcmcucGFyc2UgKEFyZy5hbGlnbiBhcmdzKSBzZXRfaW5wdXQgdXNhZ2U7XG4gIGludGVycHJldF9tYXNrICgpO1xuICBpZiAhcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgdGhlbiAoXG4gICAgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBpZiAhcmVxdWVzdF9wcmludF9wYXNzZXMgdGhlbiAoXG4gICAgcHJpbnRfcGFzc2VzICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IG5vIGlucHV0IGZpbGUgZ2l2ZW5cXG4lIVwiIGV4ZV9uYW1lO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IFNvbWUgZm4gLT5cbiAgICAgIGxldCBraW5kID1cbiAgICAgICAgbWF0Y2ggIWtpbmQgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICBtYXRjaCBLaW5kLm9mX2ZpbGVuYW1lIGZuIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICBcIiVzOiBkb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCAnJXMnLCB1c2UgLWltcGwgb3IgLWludGYuXFxuXCJcbiAgICAgICAgICAgICAgICAgIGV4ZV9uYW1lIGZuO1xuICAgICAgICAgICAgICAgIFN0ZGxpYi5leGl0IDIpXG4gICAgICBpblxuICAgICAgbGV0IGlucHV0X25hbWUsIHJlbG9jYXRlID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoIE5vbmUgLT4gKGZuLCBmYWxzZSkgfCBTb21lIGZuIC0+IChmbiwgdHJ1ZSlcbiAgICAgIGluXG4gICAgICBwcm9jZXNzX2ZpbGUga2luZCBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlOiFvdXRwdXRfbW9kZVxuICAgICAgICB+b3V0cHV0OiFvdXRwdXQgfmVtYmVkX2Vycm9yczohZW1iZWRfZXJyb3JzXG5cbmxldCByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm4gPVxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID0gbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGlucHV0X2ZuIGluXG4gIGxldCBhc3QgPVxuICAgIHRyeVxuICAgICAgbGV0IGFzdCA9IGV4dHJhY3RfY29va2llcyBhc3QgaW5cbiAgICAgIGxldCB0b29sX25hbWUgPSBBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSBpblxuICAgICAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgICAgIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgICAgIHByb2Nlc3NfYXN0IGFzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICB+ZW1iZWRfZXJyb3JzOnRydWVcbiAgICB3aXRoIGV4biAtPiBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZDooSW50Zl9vcl9pbXBsLmtpbmQgYXN0KVxuICBpblxuICB3aXRoX291dHB1dCAoU29tZSBvdXRwdXRfZm4pIH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICBBc3RfaW8ud3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSB+YWRkX3BweF9jb250ZXh0OnRydWUpXG5cbmxldCBwYXJzZV9pbnB1dCBwYXNzZWRfaW5fYXJncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZyA9XG4gIHRyeVxuICAgIEFyZy5wYXJzZV9hcmd2IHBhc3NlZF9pbl9hcmdzIChBcmcuYWxpZ24gdmFsaWRfYXJncylcbiAgICAgIChmdW4gXyAtPiByYWlzZSAoQXJnLkJhZCBcImFub255bW91cyBhcmd1bWVudHMgbm90IGFjY2VwdGVkXCIpKVxuICAgICAgaW5jb3JyZWN0X2lucHV0X21zZ1xuICB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgQXJnLkhlbHAgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMFxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGlucHV0ID1cbiAgbGV0IHZhbGlkX2FyZ3MgPSBnZXRfYXJncyB+c3RhbmRhbG9uZV9hcmdzICgpIGluXG4gIG1hdGNoIExpc3QucmV2IEBAIEFycmF5LnRvX2xpc3QgQEAgaW5wdXQgd2l0aFxuICB8IG91dHB1dF9mbiA6OiBpbnB1dF9mbiA6OiBmbGFnc19hbmRfcHJvZ19uYW1lXG4gICAgd2hlbiBMaXN0Lmxlbmd0aCBmbGFnc19hbmRfcHJvZ19uYW1lID4gMCAtPlxuICAgICAgbGV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgPSBMaXN0LnJldiBmbGFnc19hbmRfcHJvZ19uYW1lIHw+IEFycmF5Lm9mX2xpc3QgaW5cbiAgICAgIHBhcnNlX2lucHV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBpbnRlcnByZXRfbWFzayAoKTtcbiAgICAgIHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbjtcbiAgICAgIFN0ZGxpYi5leGl0IDBcbiAgfCBbIGhlbHA7IF8gXSB3aGVuIFN0cmluZy5lcXVhbCBoZWxwIFwiLWhlbHBcIiB8fCBTdHJpbmcuZXF1YWwgaGVscCBcIi0taGVscFwiIC0+XG4gICAgICBwYXJzZV9pbnB1dCBpbnB1dCB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICB8IF8gLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVXNhZ2U6ICVzXFxuJSFcIiB1c2FnZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcblxubGV0IHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCBuID0gQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiBpblxuICBsZXQgdXNhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgLWFzLXBweCBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWVcbiAgaW5cbiAgbGV0IGFyZ3YgPSBBcnJheS5tYWtlIChuIC0gMSkgXCJcIiBpblxuICBhcmd2LigwKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKDApO1xuICBmb3IgaSA9IDEgdG8gbiAtIDIgZG9cbiAgICBhcmd2LihpKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKGkgKyAxKVxuICBkb25lO1xuICBsZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgICBMaXN0Lm1hcCBzdGFuZGFsb25lX2FyZ3MgfmY6KGZ1biAoYXJnLCBzcGVjLCBfZG9jKSAtPlxuICAgICAgICAoYXJnLCBzcGVjLCBcIiBVbnVzZWQgd2l0aCAtYXMtcHB4XCIpKVxuICBpblxuICBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgYXJndlxuXG5sZXQgc3RhbmRhbG9uZSAoKSA9XG4gIEFzdGxpYi5pbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKTtcbiAgdHJ5XG4gICAgaWZcbiAgICAgIEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgPj0gMlxuICAgICAgJiZcbiAgICAgIG1hdGNoIFN0ZGxpYi5TeXMuYXJndi4oMSkgd2l0aFxuICAgICAgfCBcIi1hcy1wcHhcIiB8IFwiLS1hcy1wcHhcIiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKVxuICAgIGVsc2Ugc3RhbmRhbG9uZV9tYWluICgpO1xuICAgIFN0ZGxpYi5leGl0IDBcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lIGluXG4gIGxldCBpbnB1dCA9IFN0ZGxpYi5TeXMuYXJndiBpblxuICB0cnkgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3M6W10gfnVzYWdlIGlucHV0XG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHByZXR0eSAoKSA9ICFwcmV0dHlcblxubGV0IGVuYWJsZV9jaGVja3MgKCkgPVxuICAoKiBXZSBkbyBub3QgZW5hYmxlIHRoZSBsb2NhdGlvbnMgY2hlY2sgaGVyZSwgd2UgY3VycmVudGx5IHJlcXVpcmUgdGhhdCBvbmVcbiAgICAgdG8gYmUgc3BlY2lmaWNhbGx5IGVuYWJsZWQuICopXG4gIHBlcmZvcm1fY2hlY2tzIDo9IHRydWU7XG4gIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgOj0gdHJ1ZVxuXG5sZXQgZW5hYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gdHJ1ZVxubGV0IGRpc2FibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSBmYWxzZVxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPSBtYXBfc3RydWN0dXJlIHN0XG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbmxldCB1bmRlcnNjb3JlX2JpbmRpbmcgZXhwID1cbiAgbGV0IGxvYyA9IGV4cC5wZXhwX2xvYyBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYykgfmV4cHI6ZXhwXG5cbmxldCB2YXJzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9uZ2lkZW50LnQgTG9jYXRlZC50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0dCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0dC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3ZhciB2IC0+IExvY2F0ZWQubWFwIChmdW4gdmFyIC0+IExvbmdpZGVudC5MaWRlbnQgdmFyKSB2IDo6IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0dCBhY2NcbiAgZW5kXG5cbigqIEZvciBldmVyeSBbbGV0IHggPSAuLi5dIHN0cnVjdHVyZSBpdGVtLCBhZGQgYSBbbGV0IF8gPSB4XSAqKVxubGV0IGFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlIHN0ID1cbiAgICAgIGxldCByZWMgbG9vcCBzdCBhY2MgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICAgIHwgKHsgcHN0cl9kZXNjID0gUHN0cl92YWx1ZSAoXywgdmJzKTsgcHN0cl9sb2MgPSBsb2MgfSBhcyBpdGVtKSA6OiByZXN0XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCB2YXJzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgdmJzIH5pbml0OltdIH5mOihmdW4gYWNjIHZiIC0+XG4gICAgICAgICAgICAgICAgICB2YXJzX29mI3BhdHRlcm4gdmIucHZiX3BhdCBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGlnbiA9XG4gICAgICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgIChMaXN0LnJldl9tYXAgdmFycyB+ZjooZnVuIHYgLT5cbiAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmVfYmluZGluZyAocGV4cF9pZGVudCB+bG9jOnYubG9jIHYpKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsb29wIHJlc3QgKGlnbiBAIChpdGVtIDo6IGFjYykpXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IGxvb3AgcmVzdCAoaXRlbSA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAoc3VwZXIjc3RydWN0dXJlIHN0KSBbXVxuICBlbmRcblxubGV0IGJpbmRzX21vZHVsZV9uYW1lcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW2Jvb2xdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIG1iIGFjYyA9XG4gICAgICBtYXRjaCBtYi5wbWJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgbWIgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2MgPVxuICAgICAgbWF0Y2ggbWQucG1kX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiBtcyBfID1cbiAgICAgIG1hdGNoIG1zLnBtc19uYW1lLnR4dCB3aXRoIChfIDogc3RyaW5nKSAtPiB0cnVlXG5cbiAgICBtZXRob2QhIGZ1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYyA9XG4gICAgICBtYXRjaCBmcCB3aXRoXG4gICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0IGFjYyA9XG4gICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF91bnBhY2sgbmFtZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlIHwgTm9uZSAtPiBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXQgYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gZXhwciBhY2MgPVxuICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgXywgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG4oKiBbZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZV0gLS0gSWYgdHJ1ZSwgZ2VuZXJhdGVkIGNvZGVcbiAgIGNvbnRhaW5zIGNvbXBpbGVyIGF0dHJpYnV0ZSB0byBkaXNhYmxlIHVudXNlZCB3YXJuaW5ncywgaW5zdGVhZCBvZlxuICAgaW5zZXJ0aW5nIFtsZXQgXyA9IC4uLiBdLiAqKVxubGV0IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93MzJfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgbGV0IGNvbnZfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJjb2RlXCI7IFwiYXR0cmlidXRlXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImNvZGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IGZhbHNlXG4gICAgICAgIHwgXCJhdHRyaWJ1dGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBIb3cgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1rZWVwLXczMlwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYtdzMyXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIlxuXG5sZXQga2VlcF93MzJfaW1wbCAoKSA9ICFrZWVwX3czMl9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3czMl9pbnRmICgpID0gIWtlZXBfdzMyX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3c2MF9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3c2MF9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3c2MF9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93NjBfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXc2MFwiIGtlZXBfdzYwX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDYwIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIlxuXG5sZXQga2VlcF93NjBfaW1wbCAoKSA9ICFrZWVwX3c2MF9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbnRmICgpID0gIWtlZXBfdzYwX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzID0gcmVmIE9wdGlvbnMuZGVmYXVsdF9hbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5sZXQgKCkgPVxuICBEcml2ZXIuYWRkX2FyZyBcIi11bnVzZWQtY29kZS13YXJuaW5nc1wiXG4gICAgKE9wdGlvbnMuRm9yY2FibGVfYm9vbC5hcmcgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MpXG4gICAgfmRvYzpcIiBBbGxvdyBwcHggZGVyaXZlcnMgdG8gZW5hYmxlIHVudXNlZCBjb2RlIHdhcm5pbmdzIChkZWZhdWx0OiBmYWxzZSlcIlxuXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgfnBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICBtYXRjaCAhYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3Mgd2l0aFxuICB8IEZvcmNlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IFRydWUgLT4gcHB4X2FsbG93c191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5sZXQgYWxsb3dfdW51c2VkX3R5cGVfd2FybmluZ3MgPSByZWYgT3B0aW9ucy5kZWZhdWx0X2FsbG93X3VudXNlZF90eXBlX3dhcm5pbmdzXG5cbmxldCAoKSA9XG4gIERyaXZlci5hZGRfYXJnIFwiLXVudXNlZC10eXBlLXdhcm5pbmdzXCJcbiAgICAoT3B0aW9ucy5Gb3JjYWJsZV9ib29sLmFyZyBhbGxvd191bnVzZWRfdHlwZV93YXJuaW5ncylcbiAgICB+ZG9jOlxuICAgICAgXCIgQWxsb3cgdW51c2VkIHR5cGUgd2FybmluZ3MgZm9yIHR5cGVzIHdpdGggW0BAZGVyaXZpbmcgLi4uXSAoZGVmYXVsdDogXFxcbiAgICAgICBmYWxzZSlcIlxuXG5sZXQgYWxsb3dfdW51c2VkX3R5cGVfd2FybmluZ3MgfnBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICBtYXRjaCAhYWxsb3dfdW51c2VkX3R5cGVfd2FybmluZ3Mgd2l0aFxuICB8IEZvcmNlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IFRydWUgLT4gcHB4X2FsbG93c191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5tb2R1bGUgQXJncyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBBc3RfcGF0dGVybiA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBBc3RfcGF0dGVyblxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQpXG5cbiAgdHlwZSAnYSBwYXJhbSA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIHBhdHRlcm4gOiAoZXhwcmVzc2lvbiwgJ2EpIEFzdF9wYXR0ZXJuLlBhY2tlZC50O1xuICAgIGRlZmF1bHQgOiAnYTtcbiAgfVxuXG4gIGxldCBhcmcgbmFtZSBwYXR0ZXJuID1cbiAgICB7XG4gICAgICBuYW1lO1xuICAgICAgZGVmYXVsdCA9IE5vbmU7XG4gICAgICBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIChmdW4geCAtPiBTb21lIHgpO1xuICAgIH1cblxuICBsZXQgZmxhZyBuYW1lID1cbiAgICBsZXQgcGF0dGVybiA9IHBleHBfaWRlbnQgKGxpZGVudCAoc3RyaW5nIG5hbWUpKSBpblxuICAgIHsgbmFtZTsgZGVmYXVsdCA9IGZhbHNlOyBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIHRydWUgfVxuXG4gIHR5cGUgKF8sIF8pIHQgPVxuICAgIHwgTmlsIDogKCdtLCAnbSkgdFxuICAgIHwgQ29ucyA6ICgnbTEsICdhIC0+ICdtMikgdCAqICdhIHBhcmFtIC0+ICgnbTEsICdtMikgdFxuXG4gIGxldCBlbXB0eSA9IE5pbFxuICBsZXQgKCArPiApIGEgYiA9IENvbnMgKGEsIGIpXG5cbiAgbGV0IHJlYyBuYW1lcyA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBzdHJpbmcgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHQsIHApIC0+IHAubmFtZSA6OiBuYW1lcyB0XG5cbiAgbW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gICAgdHlwZSAoXywgXykgaW5zdGFuY2UgPVxuICAgICAgfCBJX25pbCA6ICgnbSwgJ20pIGluc3RhbmNlXG4gICAgICB8IElfY29ucyA6ICgnbTEsICdhIC0+ICdtMikgaW5zdGFuY2UgKiAnYSAtPiAoJ20xLCAnbTIpIGluc3RhbmNlXG5cbiAgICBsZXQgcmVjIGNyZWF0ZSA6XG4gICAgICAgIHR5cGUgYSBiLiAoYSwgYikgdCAtPiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCAtPiAoYSwgYikgaW5zdGFuY2UgPVxuICAgICBmdW4gc3BlYyBhcmdzIC0+XG4gICAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICAgIHwgTmlsIC0+IElfbmlsXG4gICAgICB8IENvbnMgKHQsIHApIC0+XG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Nfb3B0IHAubmFtZSBhcmdzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwLmRlZmF1bHRcbiAgICAgICAgICAgIHwgU29tZSBleHByIC0+IEFzdF9wYXR0ZXJuLlBhY2tlZC5wYXJzZSBwLnBhdHRlcm4gZXhwci5wZXhwX2xvYyBleHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBJX2NvbnMgKGNyZWF0ZSB0IGFyZ3MsIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiLiAoYSwgYikgaW5zdGFuY2UgLT4gYSAtPiBiID1cbiAgICAgZnVuIHQgZiAtPiBtYXRjaCB0IHdpdGggSV9uaWwgLT4gZiB8IElfY29ucyAodCwgeCkgLT4gYXBwbHkgdCBmIHhcbiAgZW5kXG5cbiAgbGV0IGFwcGx5IHQgYXJncyBmID0gSW5zdGFuY2UuYXBwbHkgKEluc3RhbmNlLmNyZWF0ZSB0IGFyZ3MpIGZcbmVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEdlbmVyYXRvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgaWdub3JlIChfIDogdCkgPSAoKVxuXG50eXBlIHBhcnNlZF9hcmdzID1cbiAgfCBBcmdzIG9mIChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0XG4gIHwgVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG50eXBlICdpdGVtIGRlcml2ZWRfY29kZSA9IHsgaXRlbXMgOiAnaXRlbSBsaXN0OyB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2wgfVxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgZGVyaXZlciA9IHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgVCA6IHtcbiAgICAgICAgc3BlYyA6ICgnYywgJ2EpIEFyZ3MudDtcbiAgICAgICAgZ2VuIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2M7XG4gICAgICAgIGFyZ19uYW1lcyA6IFN0cmluZy5TZXQudDtcbiAgICAgICAgZGVwcyA6IGRlcml2ZXIgbGlzdDtcbiAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sO1xuICAgICAgfVxuICAgICAgICAtPiAoJ2EsICdiKSB0XG5cbiAgbGV0IGRlcHMgKFQgdCkgPSB0LmRlcHNcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSA/YXR0cmlidXRlczooXyA9IFtdKSA/KGRlcHMgPSBbXSkgPyh1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlKVxuICAgICAgICBzcGVjIGdlbiA9XG4gICAgICBsZXQgYXJnX25hbWVzID0gU3RyaW5nLlNldC5vZl9saXN0IChBcmdzLm5hbWVzIHNwZWMpIGluXG4gICAgICBUIHsgc3BlYzsgZ2VuOyBhcmdfbmFtZXM7IGRlcHM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH1cblxuICAgIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cbiAgZW5kXG5cbiAgbGV0IG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWMgZ2VuID1cbiAgICBWMi5tYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjXG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci53aXRoX2xvY19hbmRfcGF0aCBnZW4pXG5cbiAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cblxuICBsZXQgbWVyZ2VfYWNjZXB0ZWRfYXJncyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYWNjXG4gICAgICB8IFQgdCA6OiByZXN0IC0+IGxvb3AgKFN0cmluZy5TZXQudW5pb24gYWNjIHQuYXJnX25hbWVzKSByZXN0XG4gICAgaW5cbiAgICBsb29wIFN0cmluZy5TZXQuZW1wdHkgbFxuXG4gIGxldCBjaGVja19hcmd1bWVudHMgbmFtZSBnZW5lcmF0b3JzIChhcmdzIDogKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QpID1cbiAgICBsZXQgZW1wdHlfbGFiZWxfZXJyb3IgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IGxhYmVsIHRoZW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgYXJndW1lbnRzIG11c3QgYmUgbGFiZWxsZWRcIilcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yID1cbiAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgKExpc3QuZmluZF9hX2R1cCBhcmdzIH5jb21wYXJlOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpKVxuICAgICAgICB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGFyZ3VtZW50IGxhYmVsbGVkICclcycgYXBwZWFycyBtb3JlIHRoYW4gb25jZVwiXG4gICAgICAgICAgICBsYWJlbClcbiAgICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgaW5cbiAgICBsZXQgYWNjZXB0ZWRfYXJncyA9IG1lcmdlX2FjY2VwdGVkX2FyZ3MgZ2VuZXJhdG9ycyBpblxuICAgIGxldCB1bmFjY2VwdGVkX2FyZ3VtZW50ID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLlNldC5tZW0gbGFiZWwgYWNjZXB0ZWRfYXJncykgdGhlblxuICAgICAgICAgICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKFN0cmluZy5TZXQuZWxlbWVudHMgYWNjZXB0ZWRfYXJncykgbGFiZWxcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yICclcycgZG9lc24ndCBhY2NlcHQgYXJndW1lbnQgXFxcbiAgICAgICAgICAgICAgICAgICclcyclc1wiXG4gICAgICAgICAgICAgICAgIG5hbWUgbGFiZWwgc3BlbGxjaGVja19tc2cpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBlbXB0eV9sYWJlbF9lcnJvciBAIGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciBAIHVuYWNjZXB0ZWRfYXJndW1lbnRcbiAgICBpblxuICAgIGlmIExpc3QubGVuZ3RoIGVycm9ycyA9IDAgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yc1xuXG4gIGxldCBhcHBseSAoVCB0KSB+bmFtZTpfIH5jdHh0IHggYXJncyA9IEFyZ3MuYXBwbHkgdC5zcGVjIGFyZ3MgKHQuZ2VuIH5jdHh0IHgpXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSAobmFtZSwgZ2VuZXJhdG9ycywgYXJncykgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGNoZWNrX2FyZ3VtZW50cyBuYW1lLnR4dCBnZW5lcmF0b3JzIGFyZ3MgPj58IGZ1biAoKSAtPlxuICAgIExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICB7XG4gICAgICAgICAgaXRlbXMgPSBhcHBseSAoVCB0KSB+bmFtZTpuYW1lLnR4dCB+Y3R4dCBlbnRyeSBhcmdzO1xuICAgICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzID0gdC51bnVzZWRfY29kZV93YXJuaW5ncztcbiAgICAgICAgfSlcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IGdlbmVyYXRvcnMgZXh0X3RvX2l0ZW0gPVxuICAgIGxldCBsID0gTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooYXBwbHlfYWxsIH5jdHh0IGVudHJ5KSBpblxuICAgIGxldCBsMSwgbGVyciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uIE9rIGUgLT4gTGVmdCBlIHwgRXJyb3IgZSAtPiBSaWdodCBlKSBsXG4gICAgaW5cbiAgICBsZXQgbGVyciA9XG4gICAgICBMaXN0LmNvbmNhdCBsZXJyXG4gICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGVyciAtPiBleHRfdG9faXRlbSB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgIGluXG4gICAgTGlzdC5jb25jYXQgbDEgQCBbIHsgaXRlbXMgPSBsZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH0gXVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIG1vZHVsZSBBY3R1YWxfZGVyaXZlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBzdHJfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZXh0ZW5zaW9uIDpcbiAgICAgICAgKGxvYzpMb2NhdGlvbi50IC0+IHBhdGg6c3RyaW5nIC0+IGNvcmVfdHlwZSAtPiBleHByZXNzaW9uKSBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQWxpYXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdHJfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlIGtpbmQgPSBTdHIgfCBTaWdcblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBraW5kIDoga2luZDtcbiAgICAgIGdldCA6IEFjdHVhbF9kZXJpdmVyLnQgLT4gKCdhLCAnYikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZ2V0X3NldCA6IEFsaWFzLnQgLT4gc3RyaW5nIGxpc3Q7XG4gICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcImV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwibW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIGV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIG1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cbiAgZW5kXG5cbiAgdHlwZSB0ID0gQWN0dWFsX2Rlcml2ZXIgb2YgQWN0dWFsX2Rlcml2ZXIudCB8IEFsaWFzIG9mIEFsaWFzLnRcbiAgdHlwZSBQcHhfZGVyaXZlcnMuZGVyaXZlciArPSBUIG9mIHRcblxuICBsZXQgZGVyaXZlcnMgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoUHB4X2Rlcml2ZXJzLmRlcml2ZXJzICgpKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgVCB0IC0+IFNvbWUgKG5hbWUsIHQpXG4gICAgICB8IF8gLT4gTm9uZSlcblxuICBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBvZiBzdHJpbmdcblxuICBsZXQgcmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIGxldCByZWMgbG9vcCBuYW1lIGNvbGxlY3RlZCA9XG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0cyBjb2xsZWN0ZWQgfmY6KGZ1biAoZCA6IEFjdHVhbF9kZXJpdmVyLnQpIC0+XG4gICAgICAgICAgICBTdHJpbmcuZXF1YWwgZC5uYW1lIG5hbWUpXG4gICAgICB0aGVuIGNvbGxlY3RlZFxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGRydikpIC0+IGRydiA6OiBjb2xsZWN0ZWRcbiAgICAgICAgfCBTb21lIChUIChBbGlhcyBhbGlhcykpIC0+XG4gICAgICAgICAgICBsZXQgc2V0ID0gZmllbGQuZ2V0X3NldCBhbGlhcyBpblxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHNldCB+aW5pdDpjb2xsZWN0ZWQgfmY6bG9vcFxuICAgICAgICB8IF8gLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIG5hbWUgW10pXG5cbiAgbGV0IHJlc29sdmVfaW50ZXJuYWwgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIExpc3QubWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBuYW1lKSB+ZjooZnVuIGRydiAtPlxuICAgICAgICBtYXRjaCBmaWVsZC5nZXQgZHJ2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgICAgIHwgU29tZSBnIC0+IChkcnYubmFtZSwgZykpXG5cbiAgbGV0IHN1cHBvcnRlZF9mb3IgZmllbGQgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChkZXJpdmVycyAoKSkgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgXykgLT5cbiAgICAgICAgbWF0Y2ggcmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgfCBfIC0+IFN0cmluZy5TZXQuYWRkIG5hbWUgYWNjXG4gICAgICAgIHwgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgXyAtPiBhY2MpXG4gICAgfD4gU3RyaW5nLlNldC5lbGVtZW50c1xuXG4gIGxldCBub3Rfc3VwcG9ydGVkIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSA/KHNwZWxsY2hlY2sgPSB0cnVlKSBuYW1lID1cbiAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgaWYgc3BlbGxjaGVjayB0aGVuXG4gICAgICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoc3VwcG9ydGVkX2ZvciBmaWVsZCkgbmFtZS50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgIGVsc2UgXCJcIlxuICAgIGluXG4gICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICBcIlBweGxpYi5EZXJpdmluZzogJyVzJyBpcyBub3QgYSBzdXBwb3J0ZWQgJXMgZGVyaXZpbmcgZ2VuZXJhdG9yJXNcIlxuICAgICAgbmFtZS50eHQgZmllbGQubmFtZSBzcGVsbGNoZWNrX21zZ1xuXG4gIGxldCByZXNvbHZlIGZpZWxkIG5hbWUgPVxuICAgIHRyeSBPayAocmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lLnR4dClcbiAgICB3aXRoIE5vdF9zdXBwb3J0ZWQgbmFtZScgLT5cbiAgICAgIEVycm9yIChub3Rfc3VwcG9ydGVkIGZpZWxkIH5zcGVsbGNoZWNrOihTdHJpbmcuZXF1YWwgbmFtZS50eHQgbmFtZScpIG5hbWUpXG5cbiAgbGV0IHJlc29sdmVfYWxsIGZpZWxkIGRlcml2ZXJzID1cbiAgICBsZXQgZGVyaXZlcnNfYW5kX2FyZ3MsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXBcbiAgICAgICAgKGZ1biAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRWl0aGVyLlJpZ2h0IChub3Rfc3VwcG9ydGVkIGZpZWxkIG5hbWUpXG4gICAgICAgICAgfCBTb21lIChUIF8pIC0+IChcbiAgICAgICAgICAgICAgKCogSXQncyBvbmUgb2Ygb3VycywgcGFyc2UgdGhlIGFyZ3VtZW50cyBub3cuIFdlIGNhbid0IGRvIGl0IGJlZm9yZSBzaW5jZVxuICAgICAgICAgICAgICAgICBwcHhfZGVyaXZpbmcgdXNlcyBhIGRpZmZlcmVudCBzeW50YXggZm9yIGFyZ3VtZW50cy4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgICAgICAgIHwgQXJncyBsIC0+IEVpdGhlci5MZWZ0IChTb21lIChuYW1lLCBsKSlcbiAgICAgICAgICAgICAgfCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+XG4gICAgICAgICAgICAgICAgICBFaXRoZXIuUmlnaHRcbiAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYyBcIlBweGxpYi5EZXJpdmluZzogJXNcIiBtc2cpKVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICgqIEl0J3Mgbm90IG9uZSBvZiBvdXJzLCBpZ25vcmUgaXQuICopXG4gICAgICAgICAgICAgIEVpdGhlci5MZWZ0IE5vbmUpXG4gICAgICAgIGRlcml2ZXJzXG4gICAgICB8PiBmdW4gKGwxLCBsMikgLT4gKExpc3QuZmlsdGVyX29wdCBsMSwgbDIpXG4gICAgaW5cbiAgICAoKiBTZXQgb2YgYWN0dWFsIGRlcml2ZXIgbmFtZXMgKilcbiAgICBsZXQgc2VlbiA9IEhhc2h0YmwuY3JlYXRlIDE2IGluXG4gICAgbGV0IHJlc3VsdCwgZGVwX2Vycm9ycyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+aW5pdDooW10sIFtdKSBkZXJpdmVyc19hbmRfYXJnc1xuICAgICAgICB+ZjooZnVuIChyZXN1bHQsIGVycm9ycykgKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzb2x2ZSBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgICB8IEVycm9yIGUgLT4gKHJlc3VsdCwgZXJyb3JzIEAgWyBlIF0pXG4gICAgICAgICAgfCBPayBuYW1lZF9nZW5lcmF0b3JzIC0+XG4gICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIG5hbWVkX2dlbmVyYXRvcnNcbiAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGFjdHVhbF9kZXJpdmVyX25hbWUsIGdlbikgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGR1cF9lcnJvciA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMuZmFpbF9vbl9kdXBsaWNhdGVfZGVyaXZlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIEhhc2h0YmwubWVtIHNlZW4gYWN0dWFsX2Rlcml2ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGFwcGVhcnMgdHdpY2VcIiBhY3R1YWxfZGVyaXZlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKEdlbmVyYXRvci5kZXBzIGdlbikgfmY6KGZ1biBkZXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBkZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXBfbmFtZSA9IGRydi5uYW1lIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEhhc2h0YmwubWVtIHNlZW4gZGVwX25hbWUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgaXMgbmVlZGVkIGZvciAlcywgeW91IG5lZWQgdG8gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGl0IGJlZm9yZSBpbiB0aGUgbGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwX25hbWUgbmFtZS50eHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBIYXNodGJsLnNldCBzZWVuIH5rZXk6YWN0dWFsX2Rlcml2ZXJfbmFtZSB+ZGF0YTooKTtcbiAgICAgICAgICAgICAgICAgICAgZHVwX2Vycm9yIEAgbF9lcnIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggcmVzdWx0IEAgWyAobmFtZSwgTGlzdC5tYXAgbmFtZWRfZ2VuZXJhdG9ycyB+ZjpzbmQsIGFyZ3MpIF0sXG4gICAgICAgICAgICAgICAgZXJyb3JzIEAgbF9lcnIgKSlcbiAgICBpblxuICAgIChyZXN1bHQsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyBAIGRlcF9lcnJvcnMpXG5cbiAgbGV0IGFkZCA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uID9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvbiA/c2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9leHRlbnNpb24gbmFtZSA9XG4gICAgbGV0IGFjdHVhbF9kZXJpdmVyIDogQWN0dWFsX2Rlcml2ZXIudCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIGV4dGVuc2lvbjtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBY3R1YWxfZGVyaXZlciBhY3R1YWxfZGVyaXZlcikpO1xuICAgIChtYXRjaCBleHRlbnNpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCBleHRlbnNpb24gPVxuICAgICAgICAgIEV4dGVuc2lvbi5kZWNsYXJlIG5hbWUgRXhwcmVzc2lvbiBBc3RfcGF0dGVybi4ocHR5cCBfXykgZlxuICAgICAgICBpblxuICAgICAgICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAoXCJQcHhsaWIuRGVyaXZpbmcuXCIgXiBuYW1lKVxuICAgICAgICAgIH5ydWxlczpbIENvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBleHRlbnNpb24gXSk7XG4gICAgbmFtZVxuXG4gIGxldCBhZGRfYWxpYXMgbmFtZSA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uXG4gICAgICA/c3RyX21vZHVsZV90eXBlX2RlY2wgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvblxuICAgICAgP3NpZ19tb2R1bGVfdHlwZV9kZWNsIHNldCA9XG4gICAgbGV0IGFsaWFzIDogQWxpYXMudCA9XG4gICAgICBsZXQgZ2V0ID0gZnVuY3Rpb24gTm9uZSAtPiBzZXQgfCBTb21lIHNldCAtPiBzZXQgaW5cbiAgICAgIHtcbiAgICAgICAgc3RyX3R5cGVfZGVjbCA9IGdldCBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQgPSBnZXQgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uID0gZ2V0IHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsID0gZ2V0IHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dCA9IGdldCBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb24gPSBnZXQgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWxpYXMgYWxpYXMpKTtcbiAgICBuYW1lXG5lbmRcblxubGV0IGFkZCA9IERlcml2ZXIuYWRkXG5sZXQgYWRkX2FsaWFzID0gRGVyaXZlci5hZGRfYWxpYXNcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBbQEBkZXJpdmluZyBdIHBhcnNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgaW52YWxpZF93aXRoIH5sb2MgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcImludmFsaWQgW0BAZGVyaXZpbmcgXSBhdHRyaWJ1dGUgc3ludGF4XCJcblxubGV0IGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCA9XG4gIG1hdGNoIExvbmdpZGVudC5mbGF0dGVuX2V4biBpZCB3aXRoXG4gIHwgbCAtPiB7IGxvYzsgdHh0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIGwgfVxuICB8IGV4Y2VwdGlvbiBfIC0+IGludmFsaWRfd2l0aCB+bG9jXG5cbmV4Y2VwdGlvbiBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBwYXJzZV9hcmd1bWVudHMgbCA9XG4gIHRyeVxuICAgIEFyZ3NcbiAgICAgIChtYXRjaCBsIHdpdGhcbiAgICAgIHwgWyAoTm9sYWJlbCwgZSkgXSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgLT5cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGlkLCBleHByKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBpZC50eHQgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IExpZGVudCBzIC0+IHNcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheCAoaWQubG9jLCBcInNpbXBsZSBpZGVudGlmaWVyIGV4cGVjdGVkXCIpKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIChuYW1lLCBleHByKSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICggZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICAgICAgIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IG9yIHJlY29yZCBleHBlY3RlZFwiICkpKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbCB+ZjooZnVuIChsYWJlbCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbGFiZWwgd2l0aFxuICAgICAgICAgICAgICB8IExhYmVsbGVkIHMgLT4gKHMsIGV4cHIpXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAgICAgKGV4cHIucGV4cF9sb2MsIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IGV4cGVjdGVkXCIpKSkpXG4gIHdpdGggVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPiBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpXG5cbmxldCBta19kZXJpdmluZ19hdHRyIGNvbnRleHQgfnByZWZpeCB+c3VmZml4ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICAocHJlZml4IF4gXCJkZXJpdmluZ1wiIF4gc3VmZml4KVxuICAgIGNvbnRleHRcbiAgICBBc3RfcGF0dGVybi4oXG4gICAgICBsZXQgZ2VuZXJhdG9yX25hbWUgKCkgPVxuICAgICAgICBtYXAnIChwZXhwX2lkZW50IF9fKSB+ZjooZnVuIGxvYyBmIGlkIC0+XG4gICAgICAgICAgICBmIChnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3IgKCkgPVxuICAgICAgICBtYXAgKGdlbmVyYXRvcl9uYW1lICgpKSB+ZjooZnVuIGYgeCAtPiBmICh4LCBBcmdzIFtdKSlcbiAgICAgICAgfHx8IHBhY2syXG4gICAgICAgICAgICAgIChwZXhwX2FwcGx5IChnZW5lcmF0b3JfbmFtZSAoKSlcbiAgICAgICAgICAgICAgICAgKG1hcDEgKG1hbnkgX18pIH5mOnBhcnNlX2FyZ3VtZW50cykpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvcnMgPVxuICAgICAgICBwZXhwX3R1cGxlIChtYW55IChnZW5lcmF0b3IgKCkpKVxuICAgICAgICB8fHwgbWFwIChnZW5lcmF0b3IgKCkpIH5mOihmdW4gZiB4IC0+IGYgWyB4IF0pXG4gICAgICBpblxuICAgICAgcHN0ciAocHN0cl9ldmFsIGdlbmVyYXRvcnMgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFVudXNlZCB3YXJuaW5nIHN0dWZmICsgbG9jYXRpb25zIGNoZWNrIHNpbGVuY2luZyAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncyA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBzdHJpbmcgPVxuICAgIExpc3Quc29ydCB3YXJuaW5ncyB+Y21wOkludC5jb21wYXJlXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB3YXJuaW5nIC0+IFwiLVwiIF4gSW50LnRvX3N0cmluZyB3YXJuaW5nKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiXG4gIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwud2FybmluZ1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzdHJpbmcpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxubGV0IGlubGluZV9kb2NfYXR0ciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwuZG9jXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIFwiQGlubGluZVwiKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbigqIHdyYXAgYSBzdHJ1Y3R1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG1vZF9zdHJ1Y3R1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzdHJfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzdHJ1Y3R1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zdHJdICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc3QgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICBhbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgfnBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3M6dW51c2VkX2NvZGVfd2FybmluZ3NcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWYga2VlcF93MzJfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIChbXSwgc3QpXG4gICAgZWxzZSBpZiBub3QgIWRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgdGhlblxuICAgICAgKFtdLCBJZ25vcmVfdW51c2VkX3dhcm5pbmcuYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyNzdHJ1Y3R1cmUgc3QpXG4gICAgZWxzZSAoWyAzMiBdLCBzdClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgIHx8IG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzdHJ1Y3R1cmUgc3QgZmFsc2UpXG4gICAgdGhlbiAod2FybmluZ3MsIHN0KVxuICAgIGVsc2UgKDYwIDo6IHdhcm5pbmdzLCBzdClcbiAgaW5cbiAgbGV0IHdyYXAsIHN0ID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHN0KVxuICAgIGVsc2UgKHRydWUsIHBzdHJfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzdClcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgZWxzZSBzdFxuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3N0cl0gYWJvdmUgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogd3JhcCBhIHNpZ25hdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbXR5X3NpZ25hdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHNpZ19pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHNpZ25hdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3NpZ10gKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzZyA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICB+cHB4X2FsbG93c191bnVzZWRfY29kZV93YXJuaW5nczp1bnVzZWRfY29kZV93YXJuaW5nc1xuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmIGtlZXBfdzMyX2ludGYgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiBbXSBlbHNlIFsgMzIgXVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbnRmICgpXG4gICAgICB8fCAobm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3NpZ25hdHVyZSBzZyBmYWxzZSkpXG4gICAgICB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgIHRoZW4gd2FybmluZ3NcbiAgICBlbHNlIDYwIDo6IHdhcm5pbmdzXG4gIGluXG4gIGxldCB3cmFwLCBzZyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzZylcbiAgICBlbHNlICh0cnVlLCBwc2lnX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc2cpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3NpZyB+bG9jIH5oaWRlIHNnIGVsc2Ugc2dcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zaWddIGFib3ZlICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTWFpbiBleHBhbnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgKHRkcyA6IHR5cGVfZGVjbGFyYXRpb24gbGlzdClcbiAgICB+dW51c2VkX2NvZGVfd2FybmluZ3M6cHB4X2FsbG93c191bnVzZWRfY29kZV93YXJuaW5ncyA6IHN0cnVjdHVyZV9pdGVtIGxpc3RcbiAgICA9XG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgfnBweF9hbGxvd3NfdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgaW5cbiAgbGV0IHVudXNlZF90eXBlX3dhcm5pbmdzID1cbiAgICBhbGxvd191bnVzZWRfdHlwZV93YXJuaW5ncyB+cHB4X2FsbG93c191bnVzZWRfY29kZV93YXJuaW5nc1xuICBpblxuICBpZiBrZWVwX3czMl9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHx8IHVudXNlZF90eXBlX3dhcm5pbmdzIHRoZW4gW11cbiAgZWxzZVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgIGxldCB0eXAgPSBDb21tb24uY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgICBwc3RyX3ZhbHVlIH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpXG4gICAgICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgICAgIChwZXhwX2Z1biB+bG9jIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgICAgICAgIChwcGF0X2NvbnN0cmFpbnQgfmxvYyAocHBhdF9hbnkgfmxvYykgdHlwKVxuICAgICAgICAgICAgICAgICAgIChldW5pdCB+bG9jKSk7XG4gICAgICAgICAgXSlcblxubGV0IG1lcmdlX2dlbmVyYXRvcnMgZmllbGQgbCA9XG4gIExpc3QuZmlsdGVyX21hcCBsIH5mOihmdW4geCAtPiB4KSB8PiBMaXN0LmNvbmNhdCB8PiBEZXJpdmVyLnJlc29sdmVfYWxsIGZpZWxkXG5cbigqIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIFsnYSBkZXJpdmVkXSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXS4gVGhpc1xuICAgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGFkZCBbaW5jbHVkZSBzdHJ1Y3QgLi4uIGVuZF0gdG8gZGlzYWJsZSB3YXJuaW5ncy4gKilcbmxldCBtZXJnZV9kZXJpdmVkIGxpc3RzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGxpc3RzIH5pbml0OltdIH5mOihmdW4gZGVyaXZlZCBhY2MgLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IG90aGVyIDo6IG90aGVyc1xuICAgICAgICB3aGVuIEJvb2wuZXF1YWwgZGVyaXZlZC51bnVzZWRfY29kZV93YXJuaW5ncyBvdGhlci51bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgICAtPlxuICAgICAgICAgIHsgb3RoZXIgd2l0aCBpdGVtcyA9IGRlcml2ZWQuaXRlbXMgQCBvdGhlci5pdGVtcyB9IDo6IG90aGVyc1xuICAgICAgfCBfIC0+IGRlcml2ZWQgOjogYWNjKVxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICBMaXN0LmZvcl9hbGwgZ2VuZXJhdG9ycyB+ZjooZnVuIChfLCBnZW5lcmF0b3JzLCBfKSAtPlxuICAgICAgICBMaXN0LmZvcl9hbGwgZ2VuZXJhdG9ycyB+ZjooZnVuIChHZW5lcmF0b3IuVCB0KSAtPlxuICAgICAgICAgICAgdC51bnVzZWRfY29kZV93YXJuaW5ncykpXG4gIGluXG4gICgqIFRPRE86IGluc3RlYWQgb2YgZGlzYWJsaW5nIHRoZSB1bnVzZWQgd2FybmluZyBmb3IgdHlwZXMgdGhlbXNlbHZlcywgd2VcbiAgICAgc2hvdWxkIGFkZCBhIHRhZyBbQEB1bnVzZWRdLiAqKVxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7XG4gICAgICBpdGVtcyA9IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgdGRzIH51bnVzZWRfY29kZV93YXJuaW5ncyBAIGxfZXJyO1xuICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZTtcbiAgICB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IHJ1bGVzIH50eXAgfmV4cGFuZF9zaWcgfmV4cGFuZF9zdHIgfnJ1bGVfc3RyIH5ydWxlX3NpZyB+cnVsZV9zdHJfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdCA9XG4gIGxldCBwcmVmaXggPSBcInBweGxpYi5cIiBpblxuICBsZXQgZGVyaXZpbmdfYXR0ciA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIlwiIH5wcmVmaXggdHlwIGluXG4gIGxldCBkZXJpdmluZ19hdHRyX2V4cGVjdCA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIl9pbmxpbmVcIiB+cHJlZml4IHR5cCBpblxuICBbXG4gICAgcnVsZV9zaWcgZGVyaXZpbmdfYXR0ciBleHBhbmRfc2lnO1xuICAgIHJ1bGVfc3RyIGRlcml2aW5nX2F0dHIgZXhwYW5kX3N0cjtcbiAgICBydWxlX3N0cl9leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3N0cjtcbiAgICBydWxlX3NpZ19leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3NpZztcbiAgXVxuXG5sZXQgcnVsZXNfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpUeXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9kZWNsc1xuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9kZWNsc1xuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0XG5cbmxldCBydWxlc190eXBlX2V4dCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leHRlbnNpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2V4dFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0X2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0XG5cbmxldCBydWxlc19leGNlcHRpb24gPVxuICBydWxlcyB+dHlwOlR5cGVfZXhjZXB0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfZXhjZXB0aW9uXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdFxuXG5sZXQgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6TW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG5cbmxldCAoKSA9XG4gIGxldCBydWxlcyA9XG4gICAgWyBydWxlc190eXBlX2RlY2w7IHJ1bGVzX3R5cGVfZXh0OyBydWxlc19leGNlcHRpb247IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgXVxuICAgIHw+IExpc3QuY29uY2F0XG4gIGluXG4gIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBcImRlcml2aW5nXCIgfmFsaWFzZXM6WyBcInR5cGVfY29udlwiIF0gfnJ1bGVzXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIGFmZml4ID1cbiAgfCBQcmVmaXggb2Ygc3RyaW5nXG4gIHwgU3VmZml4IG9mIHN0cmluZ1xuICB8IFByZWZpeFN1ZmZpeCBvZiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IG1hbmdsZSA/KGZpeHBvaW50ID0gXCJ0XCIpIGFmZml4IG5hbWUgPVxuICBtYXRjaCAoU3RyaW5nLihuYW1lID0gZml4cG9pbnQpLCBhZmZpeCkgd2l0aFxuICB8IHRydWUsIChQcmVmaXggeCB8IFN1ZmZpeCB4KSAtPiB4XG4gIHwgdHJ1ZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gbmFtZSBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXggeCAtPiB4IF4gXCJfXCIgXiBuYW1lXG4gIHwgZmFsc2UsIFN1ZmZpeCB4IC0+IG5hbWUgXiBcIl9cIiBeIHhcblxubGV0IG1hbmdsZV90eXBlX2RlY2wgP2ZpeHBvaW50IGFmZml4IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gbmFtZTsgXyB9OyBfIH0gPVxuICBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IG5hbWVcblxubGV0IG1hbmdsZV9saWQgP2ZpeHBvaW50IGFmZml4IGxpZCA9XG4gIG1hdGNoIGxpZCB3aXRoXG4gIHwgTGlkZW50IHMgLT4gTGlkZW50IChtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGRvdCAocCwgcykgLT4gTGRvdCAocCwgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExhcHBseSBfIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkV4cGFuc2lvbl9oZWxwZXJzLm1hbmdsZV9saWQ6IExhcHBseVwiXG5cbm1vZHVsZSBRdW90ZXIgPSBRdW90ZXJcbiIsIigqKiBTdGFuZGFyZCBsaWJyYXJ5IGZvciBwcHggcmV3cml0ZXJzICopXG5cbigqKiBbcHB4bGliXSBpcyBtZWFudCB0byBiZSBvcGVuZWQgZ2xvYmFsbHkgaW4geW91ciBQUFggc291cmNlIGZpbGVzLlxuXG4gICAgT3BlbmluZyBpdCBjb21lcyB3aXRoIHR3byBhZHZhbnRhZ2VzLiBGaXJzdCwgaXQgd2lsbCBzaGFkb3cgdGhlXG4gICAgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMuIFRoZSBbY29tcGlsZXItbGlic10gbW9kdWxlcyBhcmUgdW5zdGFibGUgYW5kIGFyZW4ndFxuICAgIG1lYW50IHRvIGJlIHVzZWQsIHNvIHNoYWRvd2luZyB0aGVtIGlzIGEgZ29vZCBwcm90ZWN0aW9uIG1lY2hhbmlzbS4gSW4gY2FzZVxuICAgIHlvdSBkb24ndCB3YW50IHRvIG9wZW4gW1BweGxpYl0sIHlvdSBjYW4gb3BlbiBbT2NhbWxfc2hhZG93XSB0byBnZXQgdGhlIHNhbWVcbiAgICBwcm90ZWN0aW9uLiBTZWNvbmQsIGl0IHdpbGwgYnJpbmcgc2V2ZXJhbCBtb2R1bGVzIGluIHNjb3BlLCB0aGF0IGFyZSB1c2VmdWxcbiAgICB0byBoYXZlIHdoZW4gd3JpdGluZyBhIHJld3JpdGVyOlxuXG4gICAgLSBUaGUgbWFpbiBbcHB4bGliXSBtb2R1bGVzLCBzdWNoIGFzIG1vZHVsZXMgdG8gaGVscCBtYW5pcHVsYXRlIHRoZSBBU1RcbiAgICAgICh7IUFzdF9idWlsZGVyfSwgeyFBc3RfcGF0dGVybn0pLCBhbmQgYSBmZXcgZnVuY3Rpb25zLlxuICAgIC0gTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllcywgc3VjaCBhcyB7IUFzdF9oZWxwZXJ9IG9yIHshUHByaW50YXN0fSxcbiAgICAtIFRoZSB3aG9sZSBBU1QgdHlwZXMgKGJ5IFtpbmNsdWRpbmddIHRoZSB7IUFzdH0gbW9kdWxlKS5cblxuICAgIHsxIFRoZSBjb3JlIFtwcHhsaWJdIGVudHJpZXN9ICopXG5cbigqKiB7MiBNYW5pcHVsYXRpbmcgdGhlIEFTVH0gKilcblxubW9kdWxlIEFzdF9idWlsZGVyID0gQXN0X2J1aWxkZXJcbm1vZHVsZSBBc3RfcGF0dGVybiA9IEFzdF9wYXR0ZXJuXG5tb2R1bGUgQXN0X3RyYXZlcnNlID0gQXN0X3RyYXZlcnNlXG5cbigqKiB7MiBDb250ZXh0LWZyZWUgcmV3cml0aW5nfSAqKVxuXG5tb2R1bGUgQ29udGV4dF9mcmVlID0gQ29udGV4dF9mcmVlXG5tb2R1bGUgRGVyaXZpbmcgPSBEZXJpdmluZ1xubW9kdWxlIEV4dGVuc2lvbiA9IEV4dGVuc2lvblxubW9kdWxlIEV4cGFuc2lvbl9jb250ZXh0ID0gRXhwYW5zaW9uX2NvbnRleHRcbm1vZHVsZSBDb2RlX3BhdGggPSBDb2RlX3BhdGhcblxuKCoqIHsyIE90aGVyIGhlbHBlcnN9ICopXG5cbm1vZHVsZSBFeHBhbnNpb25faGVscGVycyA9IEV4cGFuc2lvbl9oZWxwZXJzXG5tb2R1bGUgTWVybGluX2hlbHBlcnMgPSBNZXJsaW5faGVscGVyc1xubW9kdWxlIFNwZWxsY2hlY2sgPSBTcGVsbGNoZWNrXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcblxuKCoqIHsyIERyaXZlci1yZWxhdGVkIG1vZHVsZXN9ICopXG5cbm1vZHVsZSBEcml2ZXIgPSBEcml2ZXJcbm1vZHVsZSBDYWxsZXJfaWQgPSBDYWxsZXJfaWRcbm1vZHVsZSBBc3RfaW8gPSBVdGlscy5Bc3RfaW8uUmVhZF9iaW5cblxuKCoqIHsyIENoZWNrc30gKilcblxubW9kdWxlIEF0dHJpYnV0ZSA9IEF0dHJpYnV0ZVxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXNcblxuKCoqIHsyIENvbW1vbiBoZWxwZXIgZnVuY3Rpb25zfSAqKVxuXG5pbmNsdWRlIENvbW1vblxuXG4oKiogezEgTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllc31cblxuICAgIEV4cG9zZSBzb21lIG1vZHVsZXMgZnJvbSB7IVBweGxpYl9hc3R9LiAqKVxuXG5tb2R1bGUgQXN0ID0gUHB4bGliX2FzdC5Bc3Rcbm1vZHVsZSBBc3RfaGVscGVyID0gUHB4bGliX2FzdC5Bc3RfaGVscGVyXG5tb2R1bGUgQXN0dHlwZXMgPSBQcHhsaWJfYXN0LkFzdHR5cGVzXG5tb2R1bGUgUGFyc2UgPSBQcHhsaWJfYXN0LlBhcnNlXG5tb2R1bGUgUGFyc2V0cmVlID0gUHB4bGliX2FzdC5QYXJzZXRyZWVcbm1vZHVsZSBQcHJpbnRhc3QgPSBQcHhsaWJfYXN0LlBwcmludGFzdFxubW9kdWxlIFNlbGVjdGVkX2FzdCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0XG5tb2R1bGUgTG9jYXRpb24gPSBMb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IExvbmdpZGVudFxubW9kdWxlIExvYyA9IExvY1xuXG4oKiogezEgVGhlIHdob2xlIEFTVCB0eXBlc30gKilcblxuaW5jbHVkZSBBc3RcbigqKiBJbmNsdWRlIGFsbCB0aGUgQXN0IGRlZmluaXRpb25zIHNpbmNlIHdlIG5lZWQgdGhlbSBpbiBldmVyeSBzaW5nbGUgcHB4XG5cbiAgICBAY2xvc2VkICopXG5cbigqKiBNYWtlIHN1cmUgY29kZSB1c2luZyBQcHhsaWIgZG9lc24ndCByZWZlciB0byBjb21waWxlci1saWJzIHdpdGhvdXQgYmVpbmdcbiAgICBleHBsaWNpdCBhYm91dCBpdDpcblxuICAgIEBjbG9zZWQgKilcbmluY2x1ZGUgc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBvcGVuIE9jYW1sX3NoYWRvd1xuXG4gIGluY2x1ZGUgKFxuICAgIE9jYW1sX3NoYWRvdyA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBPY2FtbF9zaGFkb3dcbiAgICAgIGVuZFxuICAgICAgd2l0aCBtb2R1bGUgQXN0X2hlbHBlciA6PSBBc3RfaGVscGVyXG4gICAgICB3aXRoIG1vZHVsZSBBc3R0eXBlcyA6PSBBc3R0eXBlc1xuICAgICAgd2l0aCBtb2R1bGUgRG9jc3RyaW5ncyA6PSBEb2NzdHJpbmdzXG4gICAgICB3aXRoIG1vZHVsZSBJZGVudGlmaWFibGUgOj0gSWRlbnRpZmlhYmxlXG4gICAgICB3aXRoIG1vZHVsZSBMZXhlciA6PSBMZXhlclxuICAgICAgd2l0aCBtb2R1bGUgTG9jYXRpb24gOj0gTG9jYXRpb25cbiAgICAgIHdpdGggbW9kdWxlIExvbmdpZGVudCA6PSBMb25naWRlbnRcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNlIDo9IFBhcnNlXG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZXRyZWUgOj0gUGFyc2V0cmVlXG4gICAgICB3aXRoIG1vZHVsZSBQcHJpbnRhc3QgOj0gUHByaW50YXN0XG4gICAgICB3aXRoIG1vZHVsZSBTeW50YXhlcnIgOj0gU3ludGF4ZXJyKVxuZW5kXG5cbigqKi8qKilcblxuKCogRm9yIHRlc3RzIGFuZCBQcHhfY29yZSBjb21wYXRpYmlsaXR5IGxheWVyICopXG5tb2R1bGUgUHB4bGliX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbW1vbiA9IENvbW1vblxuICBtb2R1bGUgTmFtZSA9IE5hbWVcbmVuZFxuIiwib3BlbiBQcHhsaWJcblxubGV0IGxpYm5hbWUgPSByZWYgTm9uZVxuXG5sZXQgKCkgPVxuICBEcml2ZXIuYWRkX2FyZyBcIi1pbmxpbmUtdGVzdC1saWJcIiAoQXJnLlN0cmluZyAoZnVuIHMgLT4gbGlibmFtZSA6PSBTb21lIHMpKVxuICAgIH5kb2M6XCIgQSBiYXNlIG5hbWUgdG8gdXNlIGZvciBnZW5lcmF0ZWQgaWRlbnRpZmllcnMgXFxcbiAgICAgICAgICAoaGFzIHRvIGJlIGdsb2JhbGx5IHVuaXF1ZSBpbiBhIHByb2dyYW0pLlxcXG4gICAgICAgICAgcHB4X2lubGluZV90ZXN0IChhbmQgcHB4X2JlbmNoKSBhcmUgZGlzYWJsZWQgdW5sZXNzIHRoaXMgZmxhZyBpcyBwYXNzZWQuXCI7XG47O1xuXG5sZXQgKCkgPVxuICBEcml2ZXIuQ29va2llcy5hZGRfc2ltcGxlX2hhbmRsZXIgXCJsaWJyYXJ5LW5hbWVcIiBBc3RfcGF0dGVybi4oZXN0cmluZyBfXylcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGxpYiAtPiBsaWJuYW1lIDo9IFNvbWUgbGliKVxuOztcblxubGV0IGdldCAoKSA9XG4gIG1hdGNoICFsaWJuYW1lIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGxpYiAtPlxuICAgIG1hdGNoIFN0cmluZy5pbmRleCBsaWIgJzonIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gU29tZSAobGliLCBcIlwiKVxuICAgIHwgaSAtPiBTb21lIChTdHJpbmcuc3ViIGxpYiAwIGksIFN0cmluZy5zdWIgbGliIChpICsgMSkgKFN0cmluZy5sZW5ndGggbGliIC0gaSAtIDEpKVxuIiwib3BlbiBCYXNlXG5vcGVuIFBweGxpYlxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbigqIEdlbmVyYXRlZCBjb2RlIHNob3VsZCBkZXBlbmQgb24gdGhlIGVudmlyb25tZW50IGluIHNjb3BlIGFzIGxpdHRsZSBhc1xuICAgcG9zc2libGUuICBFLmcuIHJhdGhlciB0aGFuIFtmb28gPSBbXV0gZG8gW21hdGNoIGZvbyB3aXRoIFtdIC0+XSwgdG8gZWxpbWluYXRlIHRoZVxuICAgdXNlIG9mIFs9XS4gIEl0IGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIG5vdCB1c2UgcG9seW1vcnBoaWMgY29tcGFyaXNvbnMsIHNpbmNlIHdlXG4gICBhcmUgbW92aW5nIG1vcmUgYW5kIG1vcmUgdG8gY29kZSB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGVtIGluIHNjb3BlLiAqKVxuXG5cbnR5cGUgbWF5YmVfZHJvcCA9XG4gIHwgS2VlcFxuICB8IERyb3Bfd2l0aF9kZWFkY29kZVxuICB8IERyb3BcblxubGV0IG1heWJlX2Ryb3BfbW9kZSA9IHJlZiBLZWVwXG5cbmxldCBzZXRfZGVmYXVsdF9tYXliZV9kcm9wIHggPSBtYXliZV9kcm9wX21vZGUgOj0geFxuXG5sZXQgKCkgPVxuICBEcml2ZXIuYWRkX2FyZyBcIi1pbmxpbmUtdGVzdC1kcm9wXCJcbiAgICAoVW5pdCAoZnVuICgpIC0+IG1heWJlX2Ryb3BfbW9kZSA6PSBEcm9wKSlcbiAgICB+ZG9jOlwiIERyb3AgdW5pdCB0ZXN0c1wiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi1pbmxpbmUtdGVzdC1kcm9wLXdpdGgtZGVhZGNvZGVcIlxuICAgIChVbml0IChmdW4gKCkgLT4gbWF5YmVfZHJvcF9tb2RlIDo9IERyb3Bfd2l0aF9kZWFkY29kZSkpXG4gICAgfmRvYzpcIiBEcm9wIHVuaXQgdGVzdHMgYnkgd3JhcHBpbmcgdGhlbSBpbnNpZGUgZGVhZGNvZGUgdG8gcHJldmVudCBcXFxuICAgICAgICAgIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncy5cIjtcbjs7XG5cbmxldCAoKSA9XG4gIERyaXZlci5Db29raWVzLmFkZF9zaW1wbGVfaGFuZGxlciBcImlubGluZS10ZXN0XCJcbiAgICBBc3RfcGF0dGVybi4ocGV4cF9pZGVudCAobGlkZW50IF9fJykpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBpZCAtPlxuICAgICAgICBtYXRjaCBpZC50eHQgd2l0aFxuICAgICAgICB8IFwiZHJvcFwiIC0+IG1heWJlX2Ryb3BfbW9kZSA6PSBEcm9wXG4gICAgICAgIHwgXCJkcm9wX3dpdGhfZGVhZGNvZGVcIiAtPiBtYXliZV9kcm9wX21vZGUgOj0gRHJvcF93aXRoX2RlYWRjb2RlXG4gICAgICAgIHwgcyAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOmlkLmxvY1xuICAgICAgICAgICAgXCJpbnZhbGlkICdpbmxpbmUtdGVzdCcgY29va2llICglcyksIGV4cGVjdGVkIG9uZSBvZjogZHJvcCwgZHJvcF93aXRoX2RlYWRjb2RlXCJcbiAgICAgICAgICAgIHMpXG5cbigqIFNhbWUgYXMgYWJvdmUsIGJ1dCBmb3IgdGhlIER1bmUgc2V0dGluZyAqKVxubGV0ICgpID1cbiAgRHJpdmVyLkNvb2tpZXMuYWRkX3NpbXBsZV9oYW5kbGVyIFwiaW5saW5lX3Rlc3RzXCJcbiAgICBBc3RfcGF0dGVybi4oZXN0cmluZyBfXycpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBpZCAtPlxuICAgICAgICBtYXRjaCBpZC50eHQgd2l0aFxuICAgICAgICB8IFwiZW5hYmxlZFwiIC0+IG1heWJlX2Ryb3BfbW9kZSA6PSBLZWVwXG4gICAgICAgIHwgXCJkaXNhYmxlZFwiIC0+IG1heWJlX2Ryb3BfbW9kZSA6PSBEcm9wXG4gICAgICAgIHwgXCJpZ25vcmVkXCIgLT4gbWF5YmVfZHJvcF9tb2RlIDo9IERyb3Bfd2l0aF9kZWFkY29kZVxuICAgICAgICB8IHMgLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzppZC5sb2NcbiAgICAgICAgICAgIFwiaW52YWxpZCAnaW5saW5lX3Rlc3RzJyBjb29raWUgKCVzKSwgZXhwZWN0ZWQgb25lIG9mOiBlbmFibGVkLCBkaXNhYmxlZCBvciBpZ25vcmVkXCJcbiAgICAgICAgICAgIHMpXG47O1xuXG5sZXQgbWF5YmVfZHJvcCBsb2MgY29kZSA9XG4gIG1hdGNoICFtYXliZV9kcm9wX21vZGUgd2l0aFxuICB8IEtlZXAgICAgICAgICAgICAgICAtPiBbJXN0ciBsZXQgKCkgPSBbJWUgY29kZV1dXG4gIHwgRHJvcF93aXRoX2RlYWRjb2RlIC0+IFslc3RyIGxldCAoKSA9IGlmIGZhbHNlIHRoZW4gWyVlIGNvZGVdIGVsc2UgKCldXG4gIHwgRHJvcCAgICAgICAgICAgICAgIC0+IEF0dHJpYnV0ZS5leHBsaWNpdGx5X2Ryb3AjZXhwcmVzc2lvbiBjb2RlOyBbJXN0ciBdXG5cbmxldCByZWMgc2hvcnRfZGVzY19vZl9leHByIH5tYXhfbGVuIGUgPVxuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9sZXQgKF8sIF8sIGUpIHwgUGV4cF9sZXRtb2R1bGUgKF8sIF8sIGUpIC0+XG4gICAgc2hvcnRfZGVzY19vZl9leHByIH5tYXhfbGVuIGVcbiAgfCBfIC0+XG4gICAgbGV0IHMgPSBQcHJpbnRhc3Quc3RyaW5nX29mX2V4cHJlc3Npb24gZSBpblxuICAgIGxldCByZXMgPVxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IG1heF9sZW4gdGhlblxuICAgICAgICBsZXQgc19zaG9ydCA9IFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjoobWF4X2xlbiAtIDUpIGluXG4gICAgICAgIHNfc2hvcnQgXiBcIlsuLi5dXCJcbiAgICAgIGVsc2Ugc1xuICAgIGluXG4gICAgU3RyaW5nLm1hcCByZXMgfmY6KGZ1bmN0aW9uXG4gICAgICB8ICdcXG4nIC0+ICcgJ1xuICAgICAgfCBjIC0+IGMpXG47O1xuXG5sZXQgZGVzY3Igfihsb2M6TG9jYXRpb24udCkgPyhpbm5lcl9sb2M9bG9jKSBlX29wdCBpZF9vcHQgPVxuICBsZXQgZmlsZW5hbWUgID0gbG9jLmxvY19zdGFydC5wb3NfZm5hbWUgICAgICAgICAgICAgICAgICAgICAgICBpblxuICBsZXQgbGluZSAgICAgID0gbG9jLmxvY19zdGFydC5wb3NfbG51bSAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICBsZXQgc3RhcnRfcG9zID0gbG9jLmxvY19zdGFydC5wb3NfY251bSAtIGxvYy5sb2Nfc3RhcnQucG9zX2JvbCBpblxuICBsZXQgZW5kX3BvcyAgID0gaW5uZXJfbG9jLkxvY2F0aW9uLmxvY19lbmQucG9zX2NudW0gLSBsb2MubG9jX3N0YXJ0LnBvc19ib2wgaW5cbiAgbGV0IGRlc2NyID1cbiAgICBtYXRjaCBpZF9vcHQgd2l0aFxuICAgIHwgYExpdGVyYWwgaWQgLT4gZXN0cmluZyB+bG9jIGlkXG4gICAgfCBgRXhwciBlIC0+IGVcbiAgICB8IGBOb25lIC0+XG4gICAgICBlc3RyaW5nIH5sb2MgKG1hdGNoIGVfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGUgLT4gXCI8PFwiIF4gc2hvcnRfZGVzY19vZl9leHByIH5tYXhfbGVuOjUwIGUgXiBcIj4+XCIpXG4gIGluXG4gIChwZXhwX2xhenkgfmxvYyBkZXNjcixcbiAgIGVzdHJpbmcgfmxvYyBmaWxlbmFtZSxcbiAgIGVpbnQgfmxvYyBsaW5lLFxuICAgZWludCB+bG9jIHN0YXJ0X3BvcyxcbiAgIGVpbnQgfmxvYyBlbmRfcG9zKVxuOztcblxubGV0IGFwcGx5X3RvX2Rlc2NyIGxpZCB+bG9jID9pbm5lcl9sb2MgZV9vcHQgaWRfb3B0IHRhZ3MgbW9yZV9hcmcgPVxuICBsZXQgZGVzY3IsIGZpbGVuYW1lLCBsaW5lLCBzdGFydF9wb3MsIGVuZF9wb3MgPSBkZXNjciB+bG9jID9pbm5lcl9sb2MgZV9vcHQgaWRfb3B0IGluXG4gIGxldCBleHByID1cbiAgICBwZXhwX2FwcGx5IH5sb2MgKGV2YXIgfmxvYyAoXCJQcHhfaW5saW5lX3Rlc3RfbGliLlJ1bnRpbWUuXCIgXiBsaWQpKVxuICAgICAgWyBMYWJlbGxlZCBcImNvbmZpZ1wiLCBbJWV4cHIgKG1vZHVsZSBJbmxpbmVfdGVzdF9jb25maWcpXVxuICAgICAgOyBMYWJlbGxlZCBcImRlc2NyXCIsIGRlc2NyXG4gICAgICA7IExhYmVsbGVkIFwidGFnc1wiLCBlbGlzdCB+bG9jIChMaXN0Lm1hcCB+ZjooZXN0cmluZyB+bG9jKSB0YWdzKVxuICAgICAgOyBMYWJlbGxlZCBcImZpbGVuYW1lXCIsIGZpbGVuYW1lXG4gICAgICA7IExhYmVsbGVkIFwibGluZV9udW1iZXJcIiwgbGluZVxuICAgICAgOyBMYWJlbGxlZCBcInN0YXJ0X3Bvc1wiLCBzdGFydF9wb3NcbiAgICAgIDsgTGFiZWxsZWQgXCJlbmRfcG9zXCIsIGVuZF9wb3NcbiAgICAgIDsgTm9sYWJlbCwgbW9yZV9hcmcgXVxuICBpblxuICBtYXliZV9kcm9wIGxvYyBleHByXG47O1xuXG5sZXQgY2FuX3VzZV90ZXN0X2V4dGVuc2lvbnMgKCkgPVxuICBtYXRjaCAhbWF5YmVfZHJvcF9tb2RlLCBQcHhfaW5saW5lX3Rlc3RfbGlibmFtZS5nZXQgKCkgd2l0aFxuICB8IEtlZXAsIE5vbmUgLT4gZmFsc2VcbiAgfCAoRHJvcCB8IERyb3Bfd2l0aF9kZWFkY29kZSksIF8gfCBfLCBTb21lIF8gLT4gdHJ1ZVxuOztcblxuKCogU2V0IHRvIFt0cnVlXSB3aGVuIHdlIHNlZSBhIFtsZXQldGVzdF0gb3IgW2xldCVleHBlY3RfdGVzdF0gZXRjIGV4dGVuc2lvbi4gKilcbm1vZHVsZSBIYXNfdGVzdHMgPVxuICBEcml2ZXIuQ3JlYXRlX2ZpbGVfcHJvcGVydHlcbiAgICAoc3RydWN0IGxldCBuYW1lID0gXCJwcHhfaW5saW5lX3Rlc3QuaGFzX3Rlc3RzXCIgZW5kKVxuICAgIChCb29sKVxuXG5sZXQgYWxsX3RhZ3MgPVxuICBbIFwibm8tanNcIlxuICA7IFwianMtb25seVwiXG4gIDsgXCI2NC1iaXRzLW9ubHlcIlxuICA7IFwiMzItYml0cy1vbmx5XCJcbiAgOyBcImZhc3QtZmxhbWJkYVwiXG4gIDsgXCJ4LWxpYnJhcnktaW5saW5pbmctc2Vuc2l0aXZlXCJcbiAgXVxuXG5sZXQgdmFsaWRhdGVfdGFnIHRhZyA9XG4gIGlmIG5vdCAoTGlzdC5tZW0gYWxsX3RhZ3MgdGFnIH5lcXVhbDpTdHJpbmcuZXF1YWwpXG4gIHRoZW5cbiAgICBFcnJvciAoU3BlbGxjaGVjay5zcGVsbGNoZWNrIGFsbF90YWdzIHRhZylcbiAgZWxzZVxuICAgIE9rICgpXG5cbmxldCB2YWxpZGF0ZV9leHRlbnNpb25fcG9pbnRfZXhuIH5uYW1lX29mX3BweF9yZXdyaXRlciB+bG9jIH50YWdzID1cbiAgSGFzX3Rlc3RzLnNldCB0cnVlO1xuICBpZiBub3QgKGNhbl91c2VfdGVzdF9leHRlbnNpb25zICgpKSB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICAgIFwiJXM6IGV4dGVuc2lvbiBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSB0ZXN0cyB3b3VsZCBiZSBpZ25vcmVkIFxcXG4gICAgICAgKHRoZSBidWlsZCBzeXN0ZW0gZGlkbid0IHBhc3MgLWlubGluZS10ZXN0LWxpYilcIiBuYW1lX29mX3BweF9yZXdyaXRlcjtcbiAgTGlzdC5pdGVyIHRhZ3MgfmY6KGZ1biB0YWcgLT5cbiAgICBtYXRjaCB2YWxpZGF0ZV90YWcgdGFnIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBoaW50IC0+XG4gICAgICBsZXQgaGludCA9IG1hdGNoIGhpbnQgd2l0aFxuICAgICAgICB8IE5vbmUgICAgICAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBoaW50IC0+IFwiXFxuXCJeaGludFxuICAgICAgaW5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgICAgIFwiJXM6ICVTIGlzIG5vdCBhIHZhbGlkIHRhZyBmb3IgaW5saW5lIHRlc3RzLiVzXCIgbmFtZV9vZl9wcHhfcmV3cml0ZXIgdGFnIGhpbnRcbiAgKVxuOztcblxubGV0IG5hbWVfb2ZfcHB4X3Jld3JpdGVyID0gXCJwcHhfaW5saW5lX3Rlc3RcIlxuXG5sZXQgZXhwYW5kX3Rlc3QgfmxvYyB+cGF0aDpfIH5uYW1lOmlkIH50YWdzIGUgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgdmFsaWRhdGVfZXh0ZW5zaW9uX3BvaW50X2V4biB+bmFtZV9vZl9wcHhfcmV3cml0ZXIgfmxvYyB+dGFncztcbiAgYXBwbHlfdG9fZGVzY3IgXCJ0ZXN0XCIgfmxvYyAoU29tZSBlKSBpZCB0YWdzXG4gICAgWyVleHByIGZ1biAoKSAtPiBbJWUgZV1dXG47O1xuXG5sZXQgZXhwYW5kX3Rlc3RfdW5pdCB+bG9jIH5wYXRoOl8gfm5hbWU6aWQgfnRhZ3MgZSA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICB2YWxpZGF0ZV9leHRlbnNpb25fcG9pbnRfZXhuIH5uYW1lX29mX3BweF9yZXdyaXRlciB+bG9jIH50YWdzO1xuICAoKiBUaGUgXCI7ICgpXCIgYml0IGlzIHRoZXJlIHRvIGJyZWFrcyB0YWlsIGNhbGwgb3B0aW1pemF0aW9uLCBmb3IgYmV0dGVyIGJhY2t0cmFjZXMuICopXG4gIGFwcGx5X3RvX2Rlc2NyIFwidGVzdF91bml0XCIgfmxvYyAoU29tZSBlKSBpZCB0YWdzXG4gICAgWyVleHByIGZ1biAoKSAtPiBbJWUgZV07ICgpXVxuOztcblxubGV0IGV4cGFuZF90ZXN0X21vZHVsZSB+bG9jIH5wYXRoOl8gfm5hbWU6aWQgfnRhZ3MgbSA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICB2YWxpZGF0ZV9leHRlbnNpb25fcG9pbnRfZXhuIH5uYW1lX29mX3BweF9yZXdyaXRlciB+bG9jIH50YWdzO1xuICBhcHBseV90b19kZXNjciBcInRlc3RfbW9kdWxlXCIgfmxvYyB+aW5uZXJfbG9jOm0ucG1vZF9sb2MgTm9uZSBpZCB0YWdzXG4gICAgKHBleHBfZnVuIH5sb2MgTm9sYWJlbCBOb25lIChwdW5pdCB+bG9jKVxuICAgICAgIChwZXhwX2xldG1vZHVsZSB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKFNvbWUgXCJNXCIpKVxuICAgICAgICAgIG1cbiAgICAgICAgICAoZXVuaXQgfmxvYykpKVxuOztcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3RfcGF0dGVyblxuXG4gIGxldCB0YWdzID1cbiAgICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgICAgXCJ0YWdzXCJcbiAgICAgIEF0dHJpYnV0ZS5Db250ZXh0LnBhdHRlcm5cbiAgICAgIChzaW5nbGVfZXhwcl9wYXlsb2FkIChcbiAgICAgICAgIHBleHBfdHVwbGUgKG1hbnkgKGVzdHJpbmcgX18pKVxuICAgICAgICAgfHx8ICBtYXAgKGVzdHJpbmcgX18pIH5mOihmdW4gZiB4IC0+IGYgW3hdKSkpXG4gICAgICAoZnVuIHggLT4geClcblxuICBsZXQgbGlzdF9vZl9vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBbXVxuICAgIHwgU29tZSB4IC0+IHhcblxuICBsZXQgb3B0X25hbWUgKCkgPVxuICAgIG1hcCAocHN0cmluZyBfXykgfmY6KGZ1biBmIHggLT4gZiAoYExpdGVyYWwgeCkpXG4gICAgfHx8IG1hcCBwcGF0X2FueSAgICAgfmY6KGZ1biBmICAgLT4gZiBgTm9uZSlcbiAgICB8fHwgbWFwIChwcGF0X2V4dGVuc2lvbiAoZXh0ZW5zaW9uIChjc3QgfnRvX3N0cmluZzpGbi5pZCBcIm5hbWVcIikgKHNpbmdsZV9leHByX3BheWxvYWQgX18pKSlcbiAgICAgICAgICB+ZjooZnVuIGYgZSAtPiBmIChgRXhwciBlKSlcblxuXG4gIGxldCBvcHRfbmFtZV9hbmRfZXhwciBleHByID1cbiAgICBwc3RyICgoXG4gICAgICBwc3RyX3ZhbHVlIG5vbnJlY3Vyc2l2ZSAoXG4gICAgICAgICh2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgIH5wYXQ6KFxuICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgKEF0dHJpYnV0ZS5wYXR0ZXJuIHRhZ3MgKG9wdF9uYW1lICgpKSlcbiAgICAgICAgICAgICAgIH5mOihmdW4gZiBhdHRyaWJ1dGVzIG5hbWVfb3B0IC0+XG4gICAgICAgICAgICAgICAgIGYgfm5hbWU6bmFtZV9vcHQgfnRhZ3M6KGxpc3Rfb2Zfb3B0aW9uIGF0dHJpYnV0ZXMpKSlcbiAgICAgICAgICAgfmV4cHIpXG4gICAgICAgIF46OiBuaWwpXG4gICAgKSBeOjogbmlsKVxuXG4gIGxldCB0ZXN0ID1cbiAgICBFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmUgXCJpbmxpbmVfdGVzdC50ZXN0XCJcbiAgICAgIEV4dGVuc2lvbi5Db250ZXh0LnN0cnVjdHVyZV9pdGVtXG4gICAgICAob3B0X25hbWVfYW5kX2V4cHIgX18pXG4gICAgICBleHBhbmRfdGVzdFxuXG4gIGxldCB0ZXN0X3VuaXQgPVxuICAgIEV4dGVuc2lvbi5kZWNsYXJlX2lubGluZSBcImlubGluZV90ZXN0LnRlc3RfdW5pdFwiXG4gICAgICBFeHRlbnNpb24uQ29udGV4dC5zdHJ1Y3R1cmVfaXRlbVxuICAgICAgKG9wdF9uYW1lX2FuZF9leHByIF9fKVxuICAgICAgZXhwYW5kX3Rlc3RfdW5pdFxuXG4gIGxldCB0ZXN0X21vZHVsZSA9XG4gICAgRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lIFwiaW5saW5lX3Rlc3QudGVzdF9tb2R1bGVcIlxuICAgICAgRXh0ZW5zaW9uLkNvbnRleHQuc3RydWN0dXJlX2l0ZW1cbiAgICAgIChvcHRfbmFtZV9hbmRfZXhwciAgKHBleHBfcGFjayBfXykpXG4gICAgICBleHBhbmRfdGVzdF9tb2R1bGVcblxuICBsZXQgYWxsID1cbiAgICBbIHRlc3RcbiAgICA7IHRlc3RfdW5pdFxuICAgIDsgdGVzdF9tb2R1bGVcbiAgICBdXG5lbmRcblxubGV0IHRhZ3MgPSBFLnRhZ3NcblxubGV0ICgpID1cbiAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIFwiaW5saW5lLXRlc3RcIlxuICAgIH5leHRlbnNpb25zOkUuYWxsXG4gICAgfmVuY2xvc2VfaW1wbDooZnVuIGxvYyAtPlxuICAgICAgbWF0Y2ggbG9jLCBQcHhfaW5saW5lX3Rlc3RfbGlibmFtZS5nZXQgKCkgd2l0aFxuICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgfCBTb21lIGxvYywgU29tZSAobGlibmFtZSwgcGFydGl0aW9uKSAtPlxuICAgICAgICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgICAgKCogU2VlIGNvbW1lbnQgaW4gYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sICopXG4gICAgICAgIGxldCBoZWFkZXIgPVxuICAgICAgICAgIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19lbmQgPSBsb2MubG9jX3N0YXJ0IH0gaW5cbiAgICAgICAgICBtYXliZV9kcm9wIGxvYyBbJWV4cHIgUHB4X2lubGluZV90ZXN0X2xpYi5SdW50aW1lLnNldF9saWJfYW5kX3BhcnRpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslZSBlc3RyaW5nIH5sb2MgbGlibmFtZV0gWyVlIGVzdHJpbmcgfmxvYyBwYXJ0aXRpb25dXVxuICAgICAgICBhbmQgZm9vdGVyID1cbiAgICAgICAgICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgbWF5YmVfZHJvcCBsb2MgWyVleHByIFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS51bnNldF9saWJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJWUgZXN0cmluZyB+bG9jIGxpYm5hbWVdXVxuICAgICAgICBpblxuICAgICAgICAoaGVhZGVyLCBmb290ZXIpXG4gICAgKVxuOztcbiIsIm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdmFsIHByZV90ZXN0X2hvb2sgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5sZXQgcHJlX3Rlc3RfaG9vayA9IGlnbm9yZVxuIiwibW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG5tb2R1bGUgU2V4cF9ncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG4iLCJtb2R1bGUgTGlzdCA9IExpc3RcblxubW9kdWxlIEVudW1lcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGFsbCA6IHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2EgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICgnYSwgJ2IpIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gJ2MgbGlzdCAtPiAoJ2EsICdiLCAnYykgdCBsaXN0XG4gIGVuZFxuZW5kXG4iLCJbJSVpbXBvcnQgXCJjb25maWcuaFwiXVxuXG5vcGVuISBCYXNlXG5cblslJWlmZGVmIEpTQ19BUkNIX1NJWFRZRk9VUl1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcbltAQG5vYWxsb2NdXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5cblslJWVuZGlmXVxuWyUlaWZkZWYgSlNDX1BPU0lYX1RJTUVSU11cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgZmFpbGVkXCJcblxuWyUlZWxzZV1cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiZ2V0dGltZW9mZGF5IGZhaWxlZFwiXG5cblslJWVuZGlmXVxuXG5sZXQgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSA9XG4gIGxldCB0ID0gbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvICgpIGluXG4gIGlmIEludDYzLiggPD4gKSB0IEludDYzLnplcm8gdGhlbiB0IGVsc2UgZ2V0dGltZV9mYWlsZWQgKClcbjs7XG4iLCJtb2R1bGUgVGVzdF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3VjY2VzcyB8IEZhaWx1cmUgfCBFcnJvclxuXG4gIGxldCB0b19leGl0X2NvZGUgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiAwXG4gICAgfCBGYWlsdXJlIC0+IDJcbiAgICB8IEVycm9yICAgLT4gMVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiBcInN1Y2Nlc3NcIlxuICAgIHwgRmFpbHVyZSAtPiBcImZhaWx1cmVcIlxuICAgIHwgRXJyb3IgICAtPiBcImVycm9yXCJcbiAgOztcblxuICBsZXQgY29tYmluZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFN1Y2Nlc3MsIFN1Y2Nlc3MgICAgICAgIC0+IFN1Y2Nlc3NcbiAgICB8IEVycm9yICAsIF8gfCBfLCBFcnJvciAgIC0+IEVycm9yXG4gICAgfCBGYWlsdXJlLCBfIHwgXywgRmFpbHVyZSAtPiBGYWlsdXJlXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsIHRzID0gTGlzdC5mb2xkX2xlZnQgY29tYmluZSBTdWNjZXNzIHRzXG5lbmRcblxubGV0IHBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnID1cbiAgdHJ5XG4gICAgQXJnLnBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPiBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDFcbiAgfCBBcmcuSGVscCBtc2cgLT4gUHJpbnRmLnByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcbjs7XG5cbnR5cGUgZGVzY3IgPSBzdHJpbmdcbmxldCB0ZXN0X21vZHVsZXNfcmFuID0gcmVmIDBcbmxldCB0ZXN0X21vZHVsZXNfZmFpbGVkID0gcmVmIDBcbmxldCB0ZXN0c19yYW4gPSByZWYgMFxubGV0IHRlc3RzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgZHluYW1pY19saWIgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG50eXBlIGZpbGVuYW1lID0gc3RyaW5nXG50eXBlIGxpbmVfbnVtYmVyID0gaW50XG50eXBlIHN0YXJ0X3BvcyA9IGludFxudHlwZSBlbmRfcG9zID0gaW50XG50eXBlIGNvbmZpZyA9IChtb2R1bGUgSW5saW5lX3Rlc3RfY29uZmlnLlMpXG50eXBlICdhIHRlc3RfZnVuY3Rpb25fYXJnc1xuICA9IGNvbmZpZzpjb25maWdcbiAgLT4gZGVzY3I6ZGVzY3IgTGF6eS50XG4gIC0+IHRhZ3M6c3RyaW5nIGxpc3RcbiAgLT4gZmlsZW5hbWU6ZmlsZW5hbWVcbiAgLT4gbGluZV9udW1iZXI6bGluZV9udW1iZXJcbiAgLT4gc3RhcnRfcG9zOnN0YXJ0X3Bvc1xuICAtPiBlbmRfcG9zOmVuZF9wb3NcbiAgLT4gJ2FcblxubW9kdWxlIFRhZ19wcmVkaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJlcXVpcmVkX3RhZ3MgIDogc3RyaW5nIGxpc3RcbiAgICA7IGRyb3BwZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgfVxuXG4gIGxldCBlbmFibGVfZXZlcnl0aGluZyA9IHsgcmVxdWlyZWRfdGFncyA9IFtdOyBkcm9wcGVkX3RhZ3MgPSBbXSB9XG5cbiAgbGV0IGRyb3AgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gdGFnIDo6IHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gTGlzdC5maWx0ZXIgKCg8PikgdGFnKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG5cbiAgbGV0IHJlcXVpcmUgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gTGlzdC5maWx0ZXIgKCg8PikgdGFnKSB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IHRhZyA6OiB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG5cbiAgbGV0IGVudGlyZV9tb2R1bGVfZGlzYWJsZWQgdCB+cGFydGlhbF90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG5cbiAgbGV0IGRpc2FibGVkIHQgfmNvbXBsZXRlX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biByZXEgLT4gbm90IChMaXN0Lm1lbSByZXEgdGFncykpIHQucmVxdWlyZWRfdGFnc1xuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG5lbmRcblxuXG50eXBlIHdoaWNoX3Rlc3RzID1cbiAgeyBsaWJuYW1lIDogc3RyaW5nXG4gIDsgb25seV90ZXN0X2xvY2F0aW9uIDogKGZpbGVuYW1lICogbGluZV9udW1iZXIgb3B0aW9uICogYm9vbCByZWYpIGxpc3RcbiAgOyBuYW1lX2ZpbHRlciA6IHN0cmluZyBsaXN0XG4gIDsgd2hpY2hfdGFncyA6IFRhZ19wcmVkaWNhdGUudFxuICB9XG50eXBlIHRlc3RfbW9kZSA9XG4gIHsgd2hpY2hfdGVzdHMgOiB3aGljaF90ZXN0c1xuICA7IHdoYXRfdG9fZG8gOlxuICAgICAgWyBgUnVuX3BhcnRpdGlvbiBvZiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnNcbiAgICAgIF1cbiAgfVxuXG5tb2R1bGUgQWN0aW9uIDogc2lnXG4gIHR5cGUgdCA9IFtcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gIF1cbiAgdmFsIGdldCA6IHVuaXQgLT4gdFxuICB2YWwgc2V0IDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gW1xuICAgIHwgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgXVxuICBsZXQgYWN0aW9uIDogdCByZWYgPSByZWYgYElnbm9yZVxuICBsZXQgZm9yY2VfZHJvcCA9XG4gICAgdHJ5IGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIiA6IHN0cmluZyk7IHRydWVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuICBsZXQgZ2V0ICgpID1cbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGNvbXBpbGluZyB0byBqYXZhc2NyaXB0LlxuICAgICAgIEpzX29mX29jYW1sIGNhbiBzdGF0aWNhbGx5IGV2YWx1YXRlIFtTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9JTkxJTkVfVEVTVFwiXVxuICAgICAgIGFuZCBpbmxpbmUgdGhlIHJlc3VsdCAoW2BJZ25vcmVdKSB3aGVuZXZlciBbZ2V0ICgpXSBpcyBjYWxsZWQuXG4gICAgICAgVW5pdCB0ZXN0cyBjYW4gdGhlbiBiZSB0cmVhdGVkIGFzIGRlYWRjb2RlIHNpbmNlIHRoZSBhcmd1bWVudCBbZl0gb2YgdGhlIFt0ZXN0XVxuICAgICAgIGZ1bmN0aW9uIGJlbG93IGlzIG5ldmVyIHVzZWQuICopXG4gICAgaWYgZm9yY2VfZHJvcFxuICAgIHRoZW4gYElnbm9yZVxuICAgIGVsc2UgIWFjdGlvblxuXG4gIGxldCBzZXQgdiA9IGFjdGlvbiA6PSB2XG5lbmRcblxubW9kdWxlIFBhcnRpdGlvbiA6IHNpZ1xuICB2YWwgZm91bmRfdGVzdCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgc2V0X2N1cnJlbnQgOiBzdHJpbmcgLT4gdW5pdFxuICB2YWwgaXNfY3VycmVudCA6IHN0cmluZyBvcHRpb24gLT4gYm9vbFxuICB2YWwgYWxsIDogdW5pdCAtPiBzdHJpbmcgbGlzdFxuZW5kID0gc3RydWN0XG4gIGxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSAyM1xuICBsZXQgY3VycmVudCA9IHJlZiBcIlwiICBsZXQgc2V0X2N1cnJlbnQgeCA9IGN1cnJlbnQgOj0geFxuICBsZXQgZm91bmRfdGVzdCAoKSA9XG4gICAgaWYgIWN1cnJlbnQgPD4gXCJcIiAmJiBub3QgKEhhc2h0YmwubWVtIGFsbCAhY3VycmVudCkgdGhlblxuICAgICAgSGFzaHRibC5hZGQgYWxsICFjdXJyZW50ICgpXG4gIDs7XG4gIGxldCBpc19jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBwIC0+IHAgPSAhY3VycmVudFxuICA7O1xuICBsZXQgYWxsICgpID1cbiAgICBMaXN0LnNvcnQgU3RyaW5nLmNvbXBhcmVcbiAgICAgIChIYXNodGJsLmZvbGQgKGZ1biBrICgpIGFjYyAtPiBrIDo6IGFjYykgYWxsIFtdKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNb2R1bGVfY29udGV4dCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgb25lX21vZHVsZSA9XG4gICAgICB7IGRlc2NyIDogc3RyaW5nXG4gICAgICA7IHRhZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgfVxuXG4gICAgdHlwZSB0ID0gb25lX21vZHVsZSBsaXN0XG5cbiAgICBsZXQgZGVzY3IgdCA9IExpc3QubWFwIChmdW4gbSAtPiBtLmRlc2NyKSB0XG4gICAgbGV0IHRhZ3MgdCA9IExpc3QuY29uY2F0IChMaXN0Lm1hcCAoZnVuIG0gLT4gbS50YWdzKSB0KVxuICBlbmRcblxuICBsZXQgY3VycmVudCA6IFQudCByZWYgPSByZWYgW11cblxuICBsZXQgd2l0aF8gfmRlc2NyIH50YWdzIGYgPVxuICAgIGxldCBwcmV2ID0gIWN1cnJlbnQgaW5cbiAgICBjdXJyZW50IDo9IHsgVC4gZGVzY3I7IHRhZ3MgfSA6OiBwcmV2O1xuICAgIHRyeVxuICAgICAgbGV0IHggPSBmICgpIGluXG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICByYWlzZSBlXG5cbiAgbGV0IGN1cnJlbnRfZGVzY3IgKCkgPSBULmRlc2NyICFjdXJyZW50XG4gIGxldCBjdXJyZW50X3RhZ3MgICgpID0gVC50YWdzICAhY3VycmVudFxuZW5kXG5cbmxldCB2ZXJib3NlID0gcmVmIGZhbHNlXG5sZXQgc3RyaWN0ID0gcmVmIGZhbHNlXG5sZXQgc2hvd19jb3VudHMgPSByZWYgZmFsc2VcbmxldCBsaXN0X3Rlc3RfbmFtZXMgPSByZWYgZmFsc2VcbmxldCBkZWxheWVkX2Vycm9ycyA9IHJlZiBbXVxubGV0IHN0b3Bfb25fZXJyb3IgPSByZWYgZmFsc2VcblxubGV0IGxvZyA9IHJlZiBOb25lXG5cbmxldCB0aW1lX3NlYyA9IHJlZiAwLlxuXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBpbl9wbGFjZSAgPSByZWYgZmFsc2VcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgTm9uZVxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSByZWYgTm9uZVxubGV0IGFsbG93X291dHB1dF9wYXR0ZXJucyA9IHJlZiBmYWxzZVxuXG5sZXQgZGlzcGxheWVkX2Rlc2NyIChsYXp5IGRlc2NyKSBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zID1cbiAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkJXNcIlxuICAgIGZpbGVuYW1lIGxpbmUgc3RhcnRfcG9zIGVuZF9wb3NcbiAgICAoaWYgZGVzY3IgPSBcIlwiIHRoZW4gXCJcIiBlbHNlIFwiOiBcIiBeIGRlc2NyKVxubGV0IHBhcnNlX2Rlc2NyIHN0ciA9XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICwgY2hhcmFjdGVycyAlZCAtICVkICUhXCJcbiAgICAgICAgICAgICAgKGZ1biBmaWxlIGxpbmUgX3N0YXJ0X3BvcyBfZW5kX3BvcyAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoIF8gLT5cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAsIGxpbmUgJWQgJSFcIiAoZnVuIGZpbGUgbGluZSAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoIF8gLT5cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAlIVwiIChmdW4gZmlsZSAtPiBmaWxlLCBOb25lKSlcbiAgd2l0aCBfIC0+IE5vbmVcblxubGV0ICgpID1cbiAgbWF0Y2ggQXJyYXkudG9fbGlzdCBTeXMuYXJndiB3aXRoXG4gIHwgbmFtZSA6OiBcImlubGluZS10ZXN0LXJ1bm5lclwiIDo6IGxpYiA6OiByZXN0XG4gICAgd2hlbiBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLmFtX3Rlc3RpbmcgLT4gYmVnaW5cbiAgICAgICgqIHdoZW4gd2Ugc2VlIHRoaXMgYXJndW1lbnQsIHdlIHN3aXRjaCB0byB0ZXN0IG1vZGUgKilcbiAgICAgIGxldCB0ZXN0cyA9IHJlZiBbXSBpblxuICAgICAgbGV0IGxpc3RfcGFydGl0aW9ucyA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IHBhcnRpdGlvbiA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgdGFnX3ByZWRpY2F0ZSA9IHJlZiBUYWdfcHJlZGljYXRlLmVuYWJsZV9ldmVyeXRoaW5nIGluXG4gICAgICBsZXQgbmFtZV9maWx0ZXIgPSByZWYgW10gaW5cbiAgICAgIHBhcnNlX2FyZ3YgKEFycmF5Lm9mX2xpc3QgKG5hbWUgOjogcmVzdCkpIChBcmcuYWxpZ24gW1xuICAgICAgICBcIi1saXN0LXRlc3QtbmFtZXNcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBsaXN0X3Rlc3RfbmFtZXMgOj0gdHJ1ZTsgdmVyYm9zZSA6PSB0cnVlKSxcbiAgICAgICAgXCIgRG8gbm90IHJ1biB0ZXN0cyBidXQgc2hvdyB3aGF0IHdvdWxkIGhhdmUgYmVlbiBydW5cIjtcbiAgICAgICAgXCItbGlzdC1wYXJ0aXRpb25zXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF9wYXJ0aXRpb25zIDo9IHRydWUpLFxuICAgICAgICBcIiBMaXN0cyBhbGwgdGhlIHBhcnRpdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0IG9yIHRlc3RfbW9kdWxlXCI7XG4gICAgICAgIFwiLXBhcnRpdGlvblwiLCBBcmcuU3RyaW5nIChmdW4gaSAtPiBwYXJ0aXRpb24gOj0gU29tZSBpKSxcbiAgICAgICAgXCIgT25seSBydW4gdGhlIHRlc3RzIGluIHRoZSBnaXZlbiBwYXJ0aXRpb25cIjtcbiAgICAgICAgXCItdmVyYm9zZVwiLCBBcmcuU2V0IHZlcmJvc2UsIFwiIFNob3cgdGhlIHRlc3RzIGFzIHRoZXkgcnVuXCI7XG4gICAgICAgIFwiLXN0b3Atb24tZXJyb3JcIiwgQXJnLlNldCBzdG9wX29uX2Vycm9yLCBcIiBSdW4gdGVzdHMgb25seSB1cCB0byB0aGUgZmlyc3QgZXJyb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvZXNuJ3Qgd29yayBmb3IgZXhwZWN0IHRlc3RzKVwiO1xuICAgICAgICBcIi1zdHJpY3RcIiwgQXJnLlNldCBzdHJpY3QsIFwiIEVuZCB3aXRoIGFuIGVycm9yIGlmIG5vIHRlc3RzIHdlcmUgcnVuXCI7XG4gICAgICAgIFwiLXNob3ctY291bnRzXCIsIEFyZy5TZXQgc2hvd19jb3VudHMsIFwiIFNob3cgdGhlIG51bWJlciBvZiB0ZXN0cyByYW5cIjtcbiAgICAgICAgXCItbG9nXCIsIEFyZy5Vbml0IChmdW4gKCkgLT5cbiAgICAgICAgICAodHJ5IFN5cy5yZW1vdmUgXCJpbmxpbmVfdGVzdHMubG9nXCIgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgICBsb2cgOj0gU29tZSAob3Blbl9vdXQgXCJpbmxpbmVfdGVzdHMubG9nXCIpXG4gICAgICAgICksIFwiIExvZyB0aGUgdGVzdHMgcnVuIGluIGlubGluZV90ZXN0cy5sb2dcIjtcbiAgICAgICAgXCItZHJvcC10YWdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUuZHJvcCAhdGFnX3ByZWRpY2F0ZSBzXG4gICAgICAgICksIFwidGFnIE9ubHkgcnVuIHRlc3RzIG5vdCB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1yZXF1aXJlLXRhZylcIjtcbiAgICAgICAgXCItcmVxdWlyZS10YWdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUucmVxdWlyZSAhdGFnX3ByZWRpY2F0ZSBzXG4gICAgICAgICksIFwidGFnIE9ubHkgcnVuIHRlc3RzIHRhZ2dlZCB3aXRoIFt0YWddIChvdmVycmlkZXMgcHJldmlvdXMgLWRyb3AtdGFnKVwiO1xuICAgICAgICBcIi1tYXRjaGluZ1wiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBuYW1lX2ZpbHRlciA6PSBzIDo6ICFuYW1lX2ZpbHRlciksXG4gICAgICAgIFwic3Vic3RyaW5nIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIGdpdmVuIHN1YnN0cmluZ1wiO1xuICAgICAgICBcIi1vbmx5LXRlc3RcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICBsZXQgZmlsZW5hbWUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHBhcnNlX2Rlc2NyIHMgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChmaWxlLCBpbmRleCkgLT4gZmlsZSwgaW5kZXhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnOicgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJzonIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLnN1YiBzIDAgaSBpblxuICAgICAgICAgICAgICAgIGxldCBpbmRleF9zdHJpbmcgPSBTdHJpbmcuc3ViIHMgKGkgKyAxKSAoU3RyaW5nLmxlbmd0aCBzIC0gaSAtIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID1cbiAgICAgICAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGluZGV4X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIkFyZ3VtZW50ICVzIGRvZXNuJ3QgZml0IHRoZSBmb3JtYXQgZmlsZW5hbWVbOmxpbmVfbnVtYmVyXVxcbiUhXCIgcztcbiAgICAgICAgICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBmaWxlbmFtZSwgU29tZSBpbmRleFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcywgTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgdGVzdHMgOj0gKGZpbGVuYW1lLCBpbmRleCwgcmVmIGZhbHNlKSA6OiAhdGVzdHNcbiAgICAgICAgKSwgXCJsb2NhdGlvbiBSdW4gb25seSB0aGUgdGVzdHMgc3BlY2lmaWVkIGJ5IGFsbCB0aGUgLW9ubHktdGVzdCBvcHRpb25zLlxuICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9ucyBjYW4gYmUgb25lIG9mIHRoZXNlIGZvcm1zOlxuICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbFxuICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbDpsaW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCJcbiAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzXG4gICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyMywgY2hhcmFjdGVycyAyLTNcIjtcbiAgICAgICAgXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgU3VtbWFyaXplIHRlc3RzIHdpdGhvdXQgdXNpbmcgY29sb3JcIjtcbiAgICAgICAgXCItaW4tcGxhY2VcIiwgQXJnLlNldCBpbl9wbGFjZSwgXCIgVXBkYXRlIGV4cGVjdCB0ZXN0cyBpbiBwbGFjZVwiO1xuICAgICAgICBcIi1kaWZmLWNtZFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgICAgXCIgRGlmZiBjb21tYW5kIGZvciB0ZXN0cyB0aGF0IHJlcXVpcmUgZGlmZmluZyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiO1xuICAgICAgICBcIi1hbGxvdy1vdXRwdXQtcGF0dGVybnNcIiwgQXJnLlNldCBhbGxvd19vdXRwdXRfcGF0dGVybnMsXG4gICAgICAgIFwiIEFsbG93IG91dHB1dCBwYXR0ZXJucyBpbiB0ZXN0cyBleHBlY3RhdGlvbnNcIjtcbiAgICAgICAgXCItc291cmNlLXRyZWUtcm9vdFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzb3VyY2VfdHJlZV9yb290IDo9IFNvbWUgcyksXG4gICAgICAgIFwiIFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlXCJcbiAgICAgIF0pIChmdW4gYW5vbiAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzOiB1bmV4cGVjdGVkIGFub255bW91cyBhcmd1bWVudCAlc1xcbiUhXCIgbmFtZSBhbm9uO1xuICAgICAgICBleGl0IDFcbiAgICAgICkgKFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgW2FyZ3NdXCIgbmFtZSBcImlubGluZS10ZXN0LXJ1bm5lclwiIGxpYik7XG4gICAgICBBY3Rpb24uc2V0IChcbiAgICAgICAgYFRlc3RfbW9kZVxuICAgICAgICAgIHsgd2hpY2hfdGVzdHMgPVxuICAgICAgICAgICAgICB7IGxpYm5hbWUgPSBsaWJcbiAgICAgICAgICAgICAgOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSAhdGVzdHM7XG4gICAgICAgICAgICAgICAgd2hpY2hfdGFncyA9ICF0YWdfcHJlZGljYXRlO1xuICAgICAgICAgICAgICAgIG5hbWVfZmlsdGVyID0gIW5hbWVfZmlsdGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHdoYXRfdG9fZG8gPVxuICAgICAgICAgICAgICBpZiAhbGlzdF9wYXJ0aXRpb25zXG4gICAgICAgICAgICAgIHRoZW4gYExpc3RfcGFydGl0aW9uc1xuICAgICAgICAgICAgICBlbHNlIGBSdW5fcGFydGl0aW9uICFwYXJ0aXRpb25cbiAgICAgICAgICB9KVxuICAgIGVuZFxuICB8IF8gLT5cbiAgICAoKVxuXG5sZXQgYW1fdGVzdF9ydW5uZXIgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgVGVzdF9tb2RlIF8gLT4gdHJ1ZVxuICB8IGBJZ25vcmUgLT4gZmFsc2VcblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RfZW52X3ZhciA9XG4gICgqIGZvciBhcHByb3hpbWF0ZSBjb21wYXRpYmlsaXR5LCBnaXZlbiB0aGF0IHRoZSB2YXJpYWJsZSBpcyBub3QgZXhhY3RseSBlcXVpdmFsZW50XG4gICAgIHRvIHdoYXQgUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUIHVzZWQgdG8gYmUgKilcbiAgXCJURVNUSU5HX0ZSQU1FV09SS1wiXG5cbigqIFRoaXMgdmFsdWUgaXMgZGVwcmVjYXRlZCBpbiBwcmluY2lwbGUsIGluIGZhdm9yIG9mIENvcmUuYW1fcnVubmluZ190ZXN0LCBzb1xuICAgd2UncmUgZ29pbmcgdG8gbGl2ZSB3aXRoIHRoZSB1Z2x5IHBhdHRlcm4gbWF0Y2guICopXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdCA9XG4gIG1hdGNoIFN5cy5nZXRlbnYgXCJQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1RcIiB3aXRoXG4gIHwgKF8gOiBzdHJpbmcpIC0+IHRydWUgKCogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwZW9wbGUgc2V0dGluZyB0aGlzIHZhcmlhYmxlIGRpcmVjdGx5ICopXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgIG1hdGNoIFN5cy5nZXRlbnYgYW1fcnVubmluZ19pbmxpbmVfdGVzdF9lbnZfdmFyIHdpdGhcbiAgICB8IFwiaW5saW5lLXRlc3RcIiAtPiB0cnVlXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCB0ZXN0aW5nID1cbiAgaWYgYW1fdGVzdF9ydW5uZXJcbiAgdGhlbiBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXJcbiAgZWxzZVxuICAgIChpZiBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG4gICAgIHRoZW4gYFRlc3RpbmcgYEFtX2NoaWxkX29mX3Rlc3RfcnVubmVyXG4gICAgIGVsc2UgYE5vdF90ZXN0aW5nKVxuXG5sZXQgd2FsbF90aW1lX2Nsb2NrX25zICgpID1cbiAgVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKVxuXG5cbmxldCB3aGVyZV90b19jdXRfYmFja3RyYWNlID0gbGF6eSAoXG4gIEJhc2UuU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSAoX19NT0RVTEVfXyBeIFwiLlwiIF4gXCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc1wiKSlcblxubGV0IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgYmVmb3JlX25zID0gd2FsbF90aW1lX2Nsb2NrX25zICgpIGluXG4gIGxldCByZXMgPVxuICAgICgqIFRvIGF2b2lkIG5vaXNlIGluIGJhY2t0cmFjZXMsIHdlIGRvIHR3byB0aGluZ3MuXG5cbiAgICAgICBXZSB1c2UgW3doZXJlX3RvX2N1dF9iYWNrdHJhY2VdIGFib3ZlIHRvIHJlbW92ZSB0aGUgc3RhY2sgZnJhbWVzIGZvciB0aGUgY3VycmVudFxuICAgICAgIGZ1bmN0aW9uIGFuZCBhbnkgZnVuY3Rpb24gaXQgZ2V0cyBpbmxpbmVkIGludG8sIGFzIGl0J3Mgbm90IG9mIGFueSBpbnRlcmVzdCB0byB0aGVcbiAgICAgICB1c2VyLCBzaW5jZSBpdCdzIG5vdCB0YWxraW5nIGFib3V0IHRoZWlyIHRlc3QgYnV0IGluc3RlYWQgdGFsa2luZyBhYm91dCB0aGVcbiAgICAgICBwcHhfaW5saW5lX3Rlc3QgbWFjaGluZXJ5LlxuXG4gICAgICAgV2UgYWxzbyBhdm9pZCBpbnNlcnRpbmcgYW55IGNvZGUgYmV0d2VlbiB0aGUgW2ZdIHRoYXQgY29tZXMgZnJvbSB0aGUgdXNlcidzIGZpbGVcbiAgICAgICBhbmQgZ3JhYmJpbmcgdGhlIGJhY2t0cmFjZSBmcm9tIGl0cyBleGNlcHRpb25zIChubyB3cmFwcGluZyBvZiBbZl0gd2l0aCBoaWdoIG9yZGVyXG4gICAgICAgZnVuY3Rpb25zIGxpa2UgRXhuLnByb3RlY3QsIG9yIChmdW4gKCkgLT4gZiAoKTsgdHJ1ZSkpLiAqKVxuICAgIHRyeSBPayAoZiAoKSlcbiAgICB3aXRoIGV4biAtPiBFcnJvciAoZXhuLCBQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICBpblxuICB0aW1lX3NlYyA6PSBCYXNlLkludDYzLih3YWxsX3RpbWVfY2xvY2tfbnMgKCkgLSBiZWZvcmVfbnMgfD4gdG9fZmxvYXQpICAvLiAxZTk7XG4gIHJlc1xuXG5cbmxldCBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSA9IGxhenkgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBbfCAxMDA7IDIwMDsgMzAwIHxdKVxubGV0IHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlID0gbGF6eSAoQmFzZS5SYW5kb20uU3RhdGUubWFrZSBbfCAxMTE7IDIyMjsgMzMzIHxdKVxuXG5sZXQgdGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgY2FtbF9yYW5kb21fc3RhdGUgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICBsZXQgYmFzZV9yYW5kb21fc3RhdGUgPSBCYXNlLlJhbmRvbS5TdGF0ZS5jb3B5IEJhc2UuUmFuZG9tLlN0YXRlLmRlZmF1bHQgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUpO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUpO1xuICBsZXQgcmVzdWx0ID0gdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSBjYW1sX3JhbmRvbV9zdGF0ZTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIGJhc2VfcmFuZG9tX3N0YXRlO1xuICByZXN1bHRcblxubGV0IHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkgPVxuICBTdHJpbmcuY29uY2F0IFwiXCIgKFxuICAgIExpc3QubWFwIChmdW4gcyAtPiBcIiAgaW4gVEVTXCIgXiBcIlRfTU9EVUxFIGF0IFwiIF4gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBzIF4gXCJcXG5cIilcbiAgICAgIChNb2R1bGVfY29udGV4dC5jdXJyZW50X2Rlc2NyICgpKVxuICApXG5cbmxldCBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIGwgPVxuICBMaXN0LmV4aXN0cyAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCB1c2VkKSAtPlxuICAgIGxldCBwb3NpdGlvbl9zdGFydCA9XG4gICAgICBTdHJpbmcubGVuZ3RoIGRlZl9maWxlbmFtZSAtIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBsZXQgZm91bmQgPVxuICAgICAgcG9zaXRpb25fc3RhcnQgPj0gMCAmJlxuICAgICAgbGV0IGVuZF9vZl9kZWZfZmlsZW5hbWUgPVxuICAgICAgICBTdHJpbmcuc3ViIGRlZl9maWxlbmFtZVxuICAgICAgICAgIHBvc2l0aW9uX3N0YXJ0XG4gICAgICAgICAgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpIGluXG4gICAgICBlbmRfb2ZfZGVmX2ZpbGVuYW1lID0gZmlsZW5hbWVcbiAgICAgICYmIChwb3NpdGlvbl9zdGFydCA9IDAgfHwgZGVmX2ZpbGVuYW1lLltwb3NpdGlvbl9zdGFydCAtIDFdID0gJy8nKVxuICAgICAgJiYgKG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBkZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcilcbiAgICBpblxuICAgIGlmIGZvdW5kIHRoZW4gdXNlZCA6PSB0cnVlO1xuICAgIGZvdW5kXG4gICkgbFxuXG5sZXQgbmFtZV9maWx0ZXJfbWF0Y2ggfm5hbWVfZmlsdGVyIGRlc2NyID1cbiAgbWF0Y2ggbmFtZV9maWx0ZXIgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT5cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHN1YnN0cmluZyAtPiBCYXNlLlN0cmluZy5pc19zdWJzdHJpbmcgfnN1YnN0cmluZyBkZXNjcikgbmFtZV9maWx0ZXJcblxubGV0IHByaW50X2RlbGF5ZWRfZXJyb3JzICgpID1cbiAgbWF0Y2ggTGlzdC5yZXYgIWRlbGF5ZWRfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IF8gOjogXyBhcyBkZWxheWVkX2Vycm9ycyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiXFxuJXNcXG4lIVwiIChTdHJpbmcubWFrZSA3MCAnPScpO1xuICAgIExpc3QuaXRlciAoZnVuIG1lc3NhZ2UgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIG1lc3NhZ2VcbiAgICApIGRlbGF5ZWRfZXJyb3JzXG5cbmxldCBlcHJpbnRmX29yX2RlbGF5IGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIHMgLT5cbiAgICBpZiAhdmVyYm9zZSB0aGVuIGRlbGF5ZWRfZXJyb3JzIDo9IHMgOjogIWRlbGF5ZWRfZXJyb3JzXG4gICAgZWxzZSBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzO1xuICAgIGlmICFzdG9wX29uX2Vycm9yIHRoZW4gYmVnaW5cbiAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgZXhpdCAyXG4gICAgZW5kXG4gICkgZm10XG5cbmxldCBhZGRfaG9va3MgKChtb2R1bGUgQykgOiBjb25maWcpIGYgPVxuICBmdW4gKCkgLT4gQy5wcmVfdGVzdF9ob29rICgpOyBmICgpXG5cbmxldCBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSA9XG4gIGxldCBvcGVuIEJhc2UgaW5cbiAgYmFja3RyYWNlXG4gIHw+IFN0cmluZy5zcGxpdF9saW5lc1xuICB8PiBMaXN0LnRha2Vfd2hpbGUgfmY6KGZ1biBzdHIgLT5cbiAgICBub3QgKFN0cmluZy5TZWFyY2hfcGF0dGVybi5tYXRjaGVzIChmb3JjZSB3aGVyZV90b19jdXRfYmFja3RyYWNlKSBzdHIpKVxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIgXiBcIlxcblwiKVxuICB8PiBTdHJpbmcuY29uY2F0XG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZTpkZWZfZmlsZW5hbWUgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIGJvb2xfb2ZfZiA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSB7IGxpYm5hbWU7IG9ubHlfdGVzdF9sb2NhdGlvbjsgd2hpY2hfdGFnczsgbmFtZV9maWx0ZXIgfTsgd2hhdF90b19kbyB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgPSBsYXp5IChkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcykgaW5cbiAgICBsZXQgY29tcGxldGVfdGFncyA9IHRhZ3MgQCBNb2R1bGVfY29udGV4dC5jdXJyZW50X3RhZ3MgKCkgaW5cbiAgICBsZXQgc2hvdWxkX3J1biA9XG4gICAgICBTb21lIGxpYm5hbWUgPSAhZHluYW1pY19saWJcbiAgICAgICYmIGJlZ2luIG1hdGNoIG9ubHlfdGVzdF9sb2NhdGlvbiB3aXRoXG4gICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICB8IF8gOjogXyAtPiBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIG9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgZW5kXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZGlzYWJsZWQgd2hpY2hfdGFncyB+Y29tcGxldGVfdGFncylcbiAgICAgICYmIG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciAoTGF6eS5mb3JjZSBkZXNjcilcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW4gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvbiB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IGRlc2NyID0gTGF6eS5mb3JjZSBkZXNjciBpblxuICAgICAgICAgIGluY3IgdGVzdHNfcmFuO1xuICAgICAgICAgIGJlZ2luIG1hdGNoICFsb2cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBjaCAtPiBQcmludGYuZnByaW50ZiBjaCBcIiVzXFxuJXNcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBiZWdpblxuICAgICAgICAgICAgUHJpbnRmLnByaW50ZiBcIiVzJSFcIiBkZXNjclxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGlmICFsaXN0X3Rlc3RfbmFtZXNcbiAgICAgICAgICAgIHRoZW4gT2sgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBTZWUgW3RpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXSBmb3Igd2h5IHdlIHVzZSBbYm9vbF9vZl9mXVxuICAgICAgICAgICAgICAgICByYXRoZXIgaGF2ZSB0aGUgY2FsbGVyIHdyYXAgW2ZdIHRvIGFkanVzdCBpdHMgcmV0dXJuIHZhbHVlLiAqKVxuICAgICAgICAgICAgICBSZXN1bHQubWFwIGJvb2xfb2ZfZiAodGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBJZiAhbGlzdF90ZXN0X25hbWVzLCB0aGlzIGlzIGlzIGEgaGFybWxlc3MgemVyby4gKilcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIgKCUuM2Ygc2VjKVxcbiUhXCIgIXRpbWVfc2VjO1xuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayB0cnVlIC0+ICgpXG4gICAgICAgICAgfCBPayBmYWxzZSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgaXMgZmFsc2UuXFxuJXNcXG4lIVwiIGRlc2NyXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiIGRlc2NyIHNlcCBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZSAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgZW5kXG4gICAgZW5kXG5cbmxldCBzZXRfbGliX2FuZF9wYXJ0aXRpb24gc3RhdGljX2xpYiBwYXJ0aXRpb24gPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICgqIHBvc3NpYmxlIGlmIHRoZSBpbnRlcmZhY2UgaXMgdXNlZCBleHBsaWNpdGx5IG9yIGlmIHdlIGhhcHBlbiB0byBkeW5saW5rIHNvbWV0aGluZ1xuICAgICAgIHRoYXQgY29udGFpbiB0ZXN0cyAqKVxuICAgICgpXG4gIHwgTm9uZSAtPlxuICAgIGR5bmFtaWNfbGliIDo9IFNvbWUgc3RhdGljX2xpYjtcbiAgICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgICB8IGBJZ25vcmUgLT4gKClcbiAgICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0czsgd2hhdF90b19kbyB9IC0+XG4gICAgICBpZiB3aGljaF90ZXN0cy5saWJuYW1lID0gc3RhdGljX2xpYiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByZXF1aXJlc19wYXJ0aXRpb24gPVxuICAgICAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgICAgIHwgYExpc3RfcGFydGl0aW9ucyB8IGBSdW5fcGFydGl0aW9uIChTb21lIF8pIC0+IHRydWVcbiAgICAgICAgICB8IGBSdW5fcGFydGl0aW9uIE5vbmUgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgaWYgcGFydGl0aW9uID0gXCJcIiAmJiByZXF1aXJlc19wYXJ0aXRpb25cbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcInBweF9pbmxpbmVfdGVzdDogY2Fubm90IHVzZSAtbGlzdC1wYXJ0aXRpb24gb3IgLXBhcnRpdGlvbiBcXFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcgYSBwYXJ0aXRpb24gYXQgcHJlcHJvY2Vzc2luZyB0aW1lXCJcbiAgICAgICAgZWxzZSBQYXJ0aXRpb24uc2V0X2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICBlbmRcblxubGV0IHVuc2V0X2xpYiBzdGF0aWNfbGliID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogbm90IGdpdmluZyBhbiBlcnJvciwgYmVjYXVzZSB3aGVuIHNvbWUgYW5ub3lpbmcgcGVvcGxlIHB1dCBwYV9vdW5pdCBpbiB0aGVpciBsaXN0XG4gICAgICAgb2YgcHJlcHJvY2Vzc29ycywgcGFfb3VuaXQgaXMgc2V0IHVwIHR3aWNlIGFuZCB3ZSBoYXZlIHR3byBjYWxscyB0byB1bnNldF9saWIgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBmaWxlLCBhbmQgdGhlIHNlY29uZCBvbmUgY29tZXMgaW4gdGhpcyBicmFuY2ggKilcbiAgICAoKVxuICB8IFNvbWUgbGliIC0+XG4gICAgaWYgbGliID0gc3RhdGljX2xpYiB0aGVuIGR5bmFtaWNfbGliIDo9IE5vbmVcblxubGV0IHRlc3QgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3Bvc1xuICAgIGYgKGZ1biBiIC0+IGIpXG5cbmxldCB0ZXN0X3VuaXQgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3Bvc1xuICAgIGYgKGZ1biAoKSAtPiB0cnVlKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9tb2R1bGUgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lOmRlZl9maWxlbmFtZSB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSBfOyBuYW1lX2ZpbHRlciA9IF87IHdoaWNoX3RhZ3MgfTsgd2hhdF90b19kbyB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgKCkgPSBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcyBpblxuICAgIGxldCBwYXJ0aWFsX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAoKiBJZiwgbm8gbWF0dGVyIHdoYXQgdGFncyBhIHRlc3QgZGVmaW5lcywgd2UgY2VydGFpbmx5IHdpbGwgZHJvcCBhbGwgdGVzdHMgd2l0aGluXG4gICAgICAgICB0aGlzIG1vZHVsZSwgdGhlbiBkb24ndCBydW4gdGhlIG1vZHVsZSBhdCBhbGwuIFRoaXMgbWVhbnMgcGVvcGxlIGNhbiB3cml0ZVxuICAgICAgICAgdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZyB3aXRob3V0IGJyZWFraW5nIHRoZSAzMi1iaXQgYnVpbGQ6XG4gICAgICAgICBsZXQldGVzdF9tb2R1bGUgW0B0YWdzIFwiNjQtYml0cy1vbmx5XCJdID0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgIGxldCBpID0gSW50NjQudG9faW50X2V4biAuLi4uXG4gICAgICAgICBlbmQpXG4gICAgICAgICBXZSBkb24ndCBzaG9ydGN1dCBiYXNlZCBvbiBwb3NpdGlvbiwgYXMgd2UgY2FuJ3QgdGVsbCB3aGF0IHBvc2l0aW9ucyB0aGVcbiAgICAgICAgIGlubmVyIHRlc3RzIHdpbGwgaGF2ZS4gKilcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5lbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHdoaWNoX3RhZ3MgfnBhcnRpYWxfdGFncylcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW4gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgICAgIGxldCBkZXNjciA9IGRlc2NyICgpIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1vZHVsZV9jb250ZXh0LndpdGhfIH5kZXNjciB+dGFncyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICgqIFdlIGRvIG5vdCByZXNldCByYW5kb20gc3RhdGVzIHVwb24gZW50ZXJpbmcgW2xldCV0ZXN0X21vZHVsZV0uXG5cbiAgICAgICAgICAgICAgICAgQ29uOiBDb2RlIGluIHRlc3QgbW9kdWxlcyBjYW4gYWNjaWRlbnRhbGx5IGRlcGVuZCBvbiB0b3AtbGV2ZWwgcmFuZG9tXG4gICAgICAgICAgICAgICAgIHN0YXRlIGVmZmVjdHMuXG5cbiAgICAgICAgICAgICAgICAgUHJvczogKDEpIFdlIGRvbid0IHJlc2V0IHRvIHRoZSBzYW1lIHNlZWQgb24gZW50ZXJpbmcgYSBbbGV0JXRlc3RfbW9kdWxlXVxuICAgICAgICAgICAgICAgICBhbmQgdGhlbiBhIFtsZXQldGVzdF0gaW5zaWRlIHRoYXQgbW9kdWxlLCB3aGljaCBjb3VsZCBsZWFkIHRvXG4gICAgICAgICAgICAgICAgIGFjY2lkZW50YWxseSByYW5kb21seSBnZW5lcmF0aW5nIHRoZSBzYW1lIHZhbHVlcyBpbiBzb21lIHRlc3QuICgyKSBNb3ZpbmdcbiAgICAgICAgICAgICAgICAgY29kZSBpbnRvIGFuZCBvdXQgb2YgW2xldCV0ZXN0X21vZHVsZV0gZG9lcyBub3QgY2hhbmdlIGl0cyByYW5kb20gc2VlZC5cbiAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSAoXCJURVNcIiBeXiBcIlRfTU9EVUxFIGF0ICVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIilcbiAgICAgICAgICAgICAgKFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZGVzY3IpIHNlcCBleG5fc3RyIGJhY2t0cmFjZSAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgZW5kXG4gICAgZW5kXG5cbmxldCBzdW1tYXJpemUgKCkgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+XG4gICAgaWYgU3lzLmFyZ3YgPD4gW3x8XSAmJiBGaWxlbmFtZS5iYXNlbmFtZSBTeXMuYXJndi4oMCkgPSBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlXCIgdGhlblxuICAgICAgUHJpbnRmLmVwcmludGYgXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZSBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgcnVuIGJ5IGhhbmQsIHlvdSBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBydW4gdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IGluc3RlYWQuXFxuJSFcIlxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiWW91IGFyZSBkb2luZyBzb21ldGhpbmcgdW5leHBlY3RlZCB3aXRoIHRoZSB0ZXN0cy4gTm8gdGVzdHMgaGF2ZSBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIGJlZW4gcnVuLiBZb3Ugc2hvdWxkIHVzZSB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgdG8gcnVuIFxcblxcXG4gICAgICAgICAgICAgICAgICAgICAgdGVzdHMuXFxuJSFcIjtcbiAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IF87IHdoYXRfdG9fZG8gPSBgTGlzdF9wYXJ0aXRpb25zIH0gLT5cbiAgICBMaXN0Lml0ZXIgKFByaW50Zi5wcmludGYgXCIlc1xcblwiKSAoUGFydGl0aW9uLmFsbCAoKSk7XG4gICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICB8IGBUZXN0X21vZGUgeyB3aGF0X3RvX2RvID0gYFJ1bl9wYXJ0aXRpb24gXzsgd2hpY2hfdGVzdHMgfSAtPiBiZWdpblxuICAgICAgYmVnaW4gbWF0Y2ggIWxvZyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjaCAtPiBjbG9zZV9vdXQgY2hcbiAgICAgIGVuZDtcbiAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgbWF0Y2ggIXRlc3RzX2ZhaWxlZCwgIXRlc3RfbW9kdWxlc19mYWlsZWQgd2l0aFxuICAgICAgfCAwLCAwIC0+IGJlZ2luXG4gICAgICAgICAgaWYgIXNob3dfY291bnRzIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJWQgdGVzdHMgcmFuLCAlZCB0ZXN0X21vZHVsZXMgcmFuXFxuJSFcIiAhdGVzdHNfcmFuICF0ZXN0X21vZHVsZXNfcmFuXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgbGV0IHVudXNlZF90ZXN0cyA9XG4gICAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gKF8sIF8sIHVzZWQpIC0+IG5vdCAhdXNlZCkgd2hpY2hfdGVzdHMub25seV90ZXN0X2xvY2F0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggdW51c2VkX3Rlc3RzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgfCBfIDo6IF8gLT4gU29tZSB1bnVzZWRfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGVycm9ycyB3aXRoXG4gICAgICAgICAgfCBTb21lIHRlc3RzIC0+XG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogdGhlIGZvbGxvd2luZyAtb25seS10ZXN0IGZsYWdzIG1hdGNoZWQgbm90aGluZzpcIjtcbiAgICAgICAgICAgIExpc3QuaXRlciAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCBfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUHJpbnRmLmVwcmludGYgXCIgJXNcIiBmaWxlbmFtZVxuICAgICAgICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gUHJpbnRmLmVwcmludGYgXCIgJXM6JWRcIiBmaWxlbmFtZSBsaW5lX251bWJlclxuICAgICAgICAgICAgKSB0ZXN0cztcbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiLlxcbiUhXCI7XG4gICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgaWYgIXRlc3RzX3JhbiA9IDAgJiYgIXN0cmljdCB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiBubyB0ZXN0cyBoYXZlIGJlZW4gcnVuLlxcbiUhXCI7XG4gICAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBUZXN0X3Jlc3VsdC5TdWNjZXNzXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGNvdW50LCBjb3VudF90ZXN0X21vZHVsZXMgLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGQUlMRUQgJWQgLyAlZCB0ZXN0cyVzXFxuJSFcIiBjb3VudCAhdGVzdHNfcmFuXG4gICAgICAgICAgKGlmIGNvdW50X3Rlc3RfbW9kdWxlcyA9IDAgdGhlbiBcIlwiIGVsc2UgUHJpbnRmLnNwcmludGYgKFwiLCAlZCBURVNcIiBeXiBcIlRfTU9EVUxFU1wiKSBjb3VudF90ZXN0X21vZHVsZXMpO1xuICAgICAgICBUZXN0X3Jlc3VsdC5GYWlsdXJlXG4gICAgZW5kXG5cbmxldCB1c2VfY29sb3IgPSAhdXNlX2NvbG9yXG5sZXQgaW5fcGxhY2UgID0gIWluX3BsYWNlXG5sZXQgZGlmZl9jb21tYW5kID0gIWRpZmZfY29tbWFuZFxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSAhc291cmNlX3RyZWVfcm9vdFxubGV0IGFsbG93X291dHB1dF9wYXR0ZXJucyA9ICFhbGxvd19vdXRwdXRfcGF0dGVybnNcblxubGV0IGV2YWx1YXRvcnMgPSByZWYgW3N1bW1hcml6ZV1cbmxldCBhZGRfZXZhbHVhdG9yIH5mID0gZXZhbHVhdG9ycyA6PSBmIDo6ICFldmFsdWF0b3JzXG5sZXQgZXhpdCAoKSA9XG4gIExpc3QubWFwIChmdW4gZiAtPiBmICgpKSAoTGlzdC5yZXYgIWV2YWx1YXRvcnMpXG4gIHw+IFRlc3RfcmVzdWx0LmNvbWJpbmVfYWxsXG4gIHw+IFRlc3RfcmVzdWx0LnRvX2V4aXRfY29kZVxuICB8PiBleGl0XG4iLCIoKiBUT0RPOiBtb3ZlIHRoaXMgYXMgYSBwYXJhbWV0ZXIgKilcbmxldCBkZWJ1Z19wcmludGluZyA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIERlYnVnUHJpbnQgPSBzaWdcbiAgdmFsIGRlYnVnX3ByaW50IDogc3RyaW5nIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOlxuICAgID9kZWJ1ZzpzdHJpbmcgLT5cbiAgICA/ZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0ICogKD9kZWJ1ZzpzdHJpbmcgLT4gJ2EgLT4gdW5pdClcblxuICB2YWwgcmVnaXN0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCByZWdpc3Rlcl9sd3QgOiAnYSB0IC0+ICgnYSAtPiB1bml0IEx3dC50KSAtPiB1bml0XG4gIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2FcbiAgdmFsIHNldCA6ID9kZWJ1ZzpzdHJpbmcgLT4gJ2EgdCAtPiAnYSAtPiB1bml0XG5cbiAgdmFsIG1hcCA6XG4gICAgP2RlYnVnOnN0cmluZyAtPiA/ZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYSkgLT4gJ2IgdCAtPiAnYSB0XG5cbiAgdmFsIGZtYXAgOlxuICAgID9kZWJ1ZzpzdHJpbmcgLT5cbiAgICA/ZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+XG4gICAgKCdiIC0+ICdhIG9wdGlvbikgLT5cbiAgICAnYSAtPlxuICAgICdiIHQgLT5cbiAgICAnYSB0XG5cbiAgdmFsIG9uIDogP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sIHQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBsMiA6ID9lcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdiIC0+ICdjIC0+ICdhKSAtPiAnYiB0IC0+ICdjIHQgLT4gJ2EgdFxuXG4gIHZhbCBvZl9yZWFjdF9zaWduYWwgOlxuICAgID9kZWJ1ZzpzdHJpbmcgLT4gP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSBSZWFjdC5zaWduYWwgLT4gJ2EgdFxuXG4gIHZhbCB0b19yZWFjdF9zaWduYWwgOiAnYSB0IC0+ICdhIFJlYWN0LnNpZ25hbFxuXG4gICgqIGF0dGVtcHQgdG8gYXZvaWQgR0MgaW4gY2FzZSBUT0RPOiBjaGVjayAqKVxuICAoKiAgIHZhbCBudW1iZXJfbGlua2VkX3NpZ25hbHMgOiB1bml0IC0+IGludCAqKVxuXG4gIHZhbCBjb25zdCA6ICdhIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBFID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiA/ZGVidWc6c3RyaW5nIC0+IHVuaXQgLT4gJ2EgdCAqICgnYSAtPiB1bml0KVxuICB2YWwgcmVnaXN0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBzZW5kIDogJ2EgdCAtPiAnYSAtPiB1bml0XG4gIHZhbCBtYXAgOiA/ZGVidWc6c3RyaW5nIC0+ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCB0b19yZWFjdF9ldmVudCA6ICdhIHQgLT4gJ2EgUmVhY3QuZXZlbnRcbmVuZFxuXG5tb2R1bGUgTWFrZVMgKEQgOiBEZWJ1Z1ByaW50KSA6IFMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIG11dGFibGUgdmFsdWU6ICdhO1xuICAgIG11dGFibGUgaG9va3M6ICgnYSAtPiB1bml0KSBsaXN0O1xuICAgIG11dGFibGUgaG9va3NfbHd0OiAoJ2EgLT4gdW5pdCBMd3QudCkgbGlzdDtcbiAgICBlcTogJ2EgLT4gJ2EgLT4gYm9vbDtcbiAgICBzaWduYWw6ICdhIFJlYWN0LnNpZ25hbDtcbiAgICBzZXRfc2lnbmFsOiA/c3RlcDpSZWFjdC5zdGVwIC0+ICdhIC0+IHVuaXQ7XG4gICAgZGVidWc6IHN0cmluZztcbiAgICAoKiBzdG9yZSBzaWduYWwgcmVzdWx0IG9mIGBtYXBgIHdpdGggb3JpZ2luYWwgUmVhY3Quc2lnbmFsLFxuICAgICAgIGZsYWdnZWQgYXMgYSBuZXZlciByZWFkIHJlY29yZCAqKVxuICAgIG11dGFibGUgbGlua190b19vcmlnaW5hbF9zaWduYWw6ICdhIFJlYWN0LnNpZ25hbCBvcHRpb247XG4gIH1cblxuICBsZXQgX2RlYnVnX3N0cmluZyAoaG9va2VkIDogJ2EgdCkgOiBzdHJpbmcgPSBob29rZWQuZGVidWdcblxuICBsZXQgX2xvZyBob29rZWQgcyA9XG4gICAgaWYgZGVidWdfcHJpbnRpbmcgdGhlblxuICAgICAgRC5kZWJ1Z19wcmludCAoUHJpbnRmLnNwcmludGYgXCJbSG9va2VkLlMgJXNdICVzXCIgKF9kZWJ1Z19zdHJpbmcgaG9va2VkKSBzKVxuXG4gIGxldCBjcmVhdGVfbm9fc2V0ID8oZGVidWcgOiBzdHJpbmcgPSBcInVubmFtZWQgc2lnbmFsXCIpXG4gICAgICA/KGVxIDogJ2EgLT4gJ2EgLT4gYm9vbCA9ICggPSApKSAoYSA6ICdhKSA6ICdhIHQgPVxuICAgIGxldCBzaWduYWwsIHNldF9zaWduYWwgPSBSZWFjdC5TLmNyZWF0ZSB+ZXEgYSBpblxuICAgIGxldCBob29rZWQgPVxuICAgICAge1xuICAgICAgICB2YWx1ZSA9IGE7XG4gICAgICAgIGhvb2tzID0gW107XG4gICAgICAgIGhvb2tzX2x3dCA9IFtdO1xuICAgICAgICBlcTtcbiAgICAgICAgc2lnbmFsO1xuICAgICAgICBzZXRfc2lnbmFsO1xuICAgICAgICBkZWJ1ZztcbiAgICAgICAgbGlua190b19vcmlnaW5hbF9zaWduYWwgPSBOb25lO1xuICAgICAgfVxuICAgIGluXG4gICAgX2xvZyBob29rZWQgXCJjcmVhdGVcIjtcbiAgICBob29rZWRcblxuICBsZXQgcmVnaXN0ZXIgaG9va2VkIGYgPVxuICAgIF9sb2cgaG9va2VkIFwicmVnaXN0ZXJcIjtcbiAgICBob29rZWQuaG9va3MgPC0gZiA6OiBob29rZWQuaG9va3NcblxuICBsZXQgcmVnaXN0ZXJfbHd0IGhvb2tlZCBmID1cbiAgICBfbG9nIGhvb2tlZCBcInJlZ2lzdGVyXCI7XG4gICAgaG9va2VkLmhvb2tzX2x3dCA8LSBmIDo6IGhvb2tlZC5ob29rc19sd3RcblxuICBsZXQgdmFsdWUgaG9va2VkID1cbiAgICBfbG9nIGhvb2tlZCBcInZhbHVlXCI7XG4gICAgaG9va2VkLnZhbHVlXG5cbiAgbGV0IGNhbGxfaG9va3MgaG9va2VkID1cbiAgICBMaXN0Lml0ZXIgKGZ1biBmIC0+IGYgaG9va2VkLnZhbHVlKSBob29rZWQuaG9va3M7XG4gICAgTGlzdC5pdGVyIChmdW4gZiAtPiBmIGhvb2tlZC52YWx1ZSB8PiBpZ25vcmUpIGhvb2tlZC5ob29rc19sd3RcblxuICBsZXQgc2V0ID8oZGVidWcgPSBcIlwiKSBob29rZWQgdmFsdWUgPVxuICAgIGxldCB2YWx1ZV9jaGFuZ2VkID0gaG9va2VkLmVxIHZhbHVlIGhvb2tlZC52YWx1ZSBpblxuICAgIGlmIG5vdCB2YWx1ZV9jaGFuZ2VkIHRoZW4gKFxuICAgICAgX2xvZyBob29rZWRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiU0VUIFdJVEggQ0hBTkdFUyVzLCBydW5uaW5nICVkIGhvb2tzXCJcbiAgICAgICAgICAgKGlmIGRlYnVnIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICBcIjogXCIgXiBkZWJ1Z1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBcIlwiKVxuICAgICAgICAgICAoTGlzdC5sZW5ndGggaG9va2VkLmhvb2tzKSk7XG4gICAgICBob29rZWQudmFsdWUgPC0gdmFsdWU7XG4gICAgICBjYWxsX2hvb2tzIGhvb2tlZDtcbiAgICAgIGhvb2tlZC5zZXRfc2lnbmFsIHZhbHVlXG4gICAgKSBlbHNlXG4gICAgICBfbG9nIGhvb2tlZCBcInNldCBOTyBjaGFuZ2VcIlxuXG4gIGxldCBjcmVhdGUgPyhkZWJ1ZyA6IHN0cmluZyA9IFwidW5uYW1lZCBzaWduYWxcIilcbiAgICAgID8oZXEgOiAnYSAtPiAnYSAtPiBib29sID0gKCA9ICkpIChhIDogJ2EpIDpcbiAgICAgICdhIHQgKiAoP2RlYnVnOnN0cmluZyAtPiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGhvb2tlZCA6ICdhIHQgPSBjcmVhdGVfbm9fc2V0IH5kZWJ1ZyB+ZXEgYSBpblxuICAgIGxldCBzZXRfaG9va2VkIDogP2RlYnVnOnN0cmluZyAtPiAnYSAtPiB1bml0ID1cbiAgICAgZnVuID8oZGVidWcgOiBzdHJpbmcgPSBcIlwiKSAtPiBzZXQgfmRlYnVnIGhvb2tlZFxuICAgIGluXG4gICAgaG9va2VkLCBzZXRfaG9va2VkXG5cbiAgbGV0IG1hcCA/KGRlYnVnIDogc3RyaW5nID0gXCJ1bm5hbWVkIHNpZ25hbFwiKSA/KGVxIDogJ2EgLT4gJ2EgLT4gYm9vbCA9ICggPSApKVxuICAgICAgZiBob29rZWQgPVxuICAgIGxldCBuZXdfaG9va2VkID0gY3JlYXRlX25vX3NldCB+ZGVidWcgfmVxIChmICh2YWx1ZSBob29rZWQpKSBpblxuICAgIF9sb2cgaG9va2VkIChQcmludGYuc3ByaW50ZiBcImJpbmQgJXMgZnJvbVwiIChfZGVidWdfc3RyaW5nIG5ld19ob29rZWQpKTtcbiAgICByZWdpc3RlciBob29rZWQgKGZ1biB2YWx1ZSAtPlxuICAgICAgICBfbG9nIGhvb2tlZFxuICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcInNldCBmcm9tIGJpbmQgJXMgZnJvbVwiIChfZGVidWdfc3RyaW5nIG5ld19ob29rZWQpKTtcbiAgICAgICAgc2V0XG4gICAgICAgICAgfmRlYnVnOihQcmludGYuc3ByaW50ZiBcImJpbmQgZnJvbSAlc1wiIChfZGVidWdfc3RyaW5nIGhvb2tlZCkpXG4gICAgICAgICAgbmV3X2hvb2tlZCAoZiB2YWx1ZSkpO1xuICAgIG5ld19ob29rZWRcblxuICBsZXQgZm1hcCA/KGRlYnVnIDogc3RyaW5nID0gXCJ1bm5hbWVkIHNpZ25hbFwiKSA/KGVxIDogJ2EgLT4gJ2EgLT4gYm9vbCA9ICggPSApKVxuICAgICAgZiBkZWZhdWx0IGhvb2tlZCA9XG4gICAgbWFwIH5kZWJ1ZyB+ZXFcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgIHwgTm9uZSAtPiBkZWZhdWx0KVxuICAgICAgaG9va2VkXG5cbiAgbGV0IG9uID8oZXEgOiAnYSAtPiAnYSAtPiBib29sID0gKCA9ICkpIGNvbmRfaG9va2VkIGRlZmF1bHQgaG9va2VkID1cbiAgICBfbG9nIGhvb2tlZFxuICAgICAgKFwiY3JlYXRpbmcgYG9uYCB3aXRoIGNvbmRpdGlvbiBib29sIGhvb2tlZCBgXCIgXiBjb25kX2hvb2tlZC5kZWJ1ZyBeIFwiYFwiKTtcbiAgICBsZXQgaW5pdGlhbF92YWx1ZSA9XG4gICAgICBpZiB2YWx1ZSBjb25kX2hvb2tlZCB0aGVuXG4gICAgICAgIHZhbHVlIGhvb2tlZFxuICAgICAgZWxzZVxuICAgICAgICBkZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgbmV3X2hvb2tlZCA9XG4gICAgICBjcmVhdGVfbm9fc2V0XG4gICAgICAgIH5kZWJ1ZzpcbiAgICAgICAgICAoXCJgb25gIGZyb20gYFwiIF4gaG9va2VkLmRlYnVnIF4gXCJgIHdpdGggY29uZCBgXCIgXiBjb25kX2hvb2tlZC5kZWJ1Z1xuICAgICAgICAgXiBcImBcIilcbiAgICAgICAgfmVxIGluaXRpYWxfdmFsdWVcbiAgICBpblxuICAgIHJlZ2lzdGVyIGNvbmRfaG9va2VkIChmdW4gKGIgOiBib29sKSAtPlxuICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICBzZXQgfmRlYnVnOlwiYG9uYCBlbmFibGVcIiBuZXdfaG9va2VkICh2YWx1ZSBob29rZWQpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzZXQgfmRlYnVnOlwiYG9uYCBkaXNhYmxlXCIgbmV3X2hvb2tlZCBkZWZhdWx0KTtcbiAgICByZWdpc3RlciBob29rZWQgKGZ1biBuZXdfdmFsdWUgLT5cbiAgICAgICAgaWYgdmFsdWUgY29uZF9ob29rZWQgdGhlbiBzZXQgfmRlYnVnOlwiYG9uYCB1cGRhdGVcIiBuZXdfaG9va2VkIG5ld192YWx1ZSk7XG4gICAgbmV3X2hvb2tlZFxuXG4gIGxldCBsMiA/KGVxIDogJ2EgLT4gJ2EgLT4gYm9vbCA9ICggPSApKSAoZiA6ICdiIC0+ICdjIC0+ICdhKSAoaG9va2VkMSA6ICdiIHQpXG4gICAgICAoaG9va2VkMiA6ICdjIHQpIDogJ2EgdCA9XG4gICAgbGV0IG5ld19ob29rZWQgPVxuICAgICAgY3JlYXRlX25vX3NldFxuICAgICAgICB+ZGVidWc6KFwiYGNvbWJpbmUgZnJvbSBcIiBeIGhvb2tlZDEuZGVidWcgXiBcIiBhbmQgXCIgXiBob29rZWQyLmRlYnVnKVxuICAgICAgICB+ZXFcbiAgICAgICAgKGYgKHZhbHVlIGhvb2tlZDEpICh2YWx1ZSBob29rZWQyKSlcbiAgICBpblxuICAgIHJlZ2lzdGVyIGhvb2tlZDEgKGZ1biBuZXdfdmFsdWUxIC0+XG4gICAgICAgIHNldCB+ZGVidWc6XCJgY29tYmluZWAgdXBkYXRlXCIgbmV3X2hvb2tlZCAoZiBuZXdfdmFsdWUxICh2YWx1ZSBob29rZWQyKSkpO1xuICAgIHJlZ2lzdGVyIGhvb2tlZDIgKGZ1biBuZXdfdmFsdWUyIC0+XG4gICAgICAgIHNldCB+ZGVidWc6XCJgY29tYmluZWAgdXBkYXRlXCIgbmV3X2hvb2tlZCAoZiAodmFsdWUgaG9va2VkMSkgbmV3X3ZhbHVlMikpO1xuICAgIG5ld19ob29rZWRcblxuICAoKlxuICBsZXQgcmVhY3Rfc2lnbmFsX2xpbmtzID0gcmVmIFtdXG5cbiAgbGV0IG51bWJlcl9saW5rZWRfc2lnbmFscyAoKSA9IExpc3QubGVuZ3RoICFyZWFjdF9zaWduYWxfbGlua3NcbiopXG5cbiAgbGV0IG9mX3JlYWN0X3NpZ25hbFxuICAgICAgPyhkZWJ1ZyA6IHN0cmluZyA9IFwidW5uYW1lZCBzaWduYWwgY3JlYXRlZCB3aXRoIG9mX3JlYWN0X3NpZ25hbFwiKVxuICAgICAgPyhlcSA6ICdhIC0+ICdhIC0+IGJvb2wgPSAoID0gKSkgKHNpZ25hbCA6ICdhIFJlYWN0LnNpZ25hbCkgOiAnYSB0ID1cbiAgICBsZXQgaG9va2VkID0gY3JlYXRlX25vX3NldCB+ZGVidWcgfmVxIChSZWFjdC5TLnZhbHVlIHNpZ25hbCkgaW5cblxuICAgICgqIEFkZCBtYXAgdG8gdXBkYXRlIHZhbHVlIGluIGhvb2tlZCBhbmQgc3RvcmUgaXQgaW5zaWRlIHN0cnVjdCAqKVxuICAgIGxldCBsaW5rX3RvX29yaWdpbmFsX3NpZ25hbCA9XG4gICAgICBTb21lXG4gICAgICAgIChSZWFjdC5TLm1hcCB+ZXFcbiAgICAgICAgICAgKCogY291bGQgYmUgdXNpbmcgYHRyYWNlYCBoZXJlLCBidXQgbGV0J3MgYmUgc2FmZSB3aXRoIHRoZSBHQz8gbm8gY2x1ZSAqKVxuICAgICAgICAgICAgIChmdW4gbmV3X3ZhbHVlIC0+XG4gICAgICAgICAgICAgc2V0IH5kZWJ1ZzpcImZyb20gb2ZfcmVhY3Rfc2lnbmFsIHNpZ25hbFwiIGhvb2tlZCBuZXdfdmFsdWU7XG4gICAgICAgICAgICAgbmV3X3ZhbHVlKVxuICAgICAgICAgICBzaWduYWwpXG4gICAgaW5cblxuICAgICgqICAgICByZWFjdF9zaWduYWxfbGlua3MgOj0gbGlua190b19vcmlnaW5hbF9zaWduYWwgOjogIXJlYWN0X3NpZ25hbF9saW5rczsgKilcbiAgICBob29rZWQubGlua190b19vcmlnaW5hbF9zaWduYWwgPC0gbGlua190b19vcmlnaW5hbF9zaWduYWw7XG4gICAgc2V0IH5kZWJ1ZzpcInVwZGF0ZSBhZnRlciBsaW5rIHRvIHJlYWN0IHNpZ25hbFwiIGhvb2tlZCAoUmVhY3QuUy52YWx1ZSBzaWduYWwpO1xuICAgIGhvb2tlZFxuXG4gIGxldCB0b19yZWFjdF9zaWduYWwgaG9va2VkID0gaG9va2VkLnNpZ25hbFxuXG4gIGxldCBjb25zdCB2ID1cbiAgICBsZXQgaG9va2VkID0gY3JlYXRlX25vX3NldCB2IGluXG4gICAgcmVnaXN0ZXIgaG9va2VkIChmdW4gXyAtPlxuICAgICAgICByYWlzZSAoRmFpbHVyZSBcImNvbnN0IGhvb2tlZC5TIGhhcyByZWNlaXZlZCBhbiBhdHRlbXB0IHRvIGJlIG1vZGlmaWVkXCIpKTtcbiAgICBob29rZWRcbmVuZFxuXG5tb2R1bGUgTWFrZUUgKEQgOiBEZWJ1Z1ByaW50KSA6IEUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIG11dGFibGUgaG9va3M6ICgnYSAtPiB1bml0KSBsaXN0O1xuICAgIGV2ZW50OiAnYSBSZWFjdC5ldmVudDtcbiAgICBzZW5kX2V2ZW50OiA/c3RlcDpSZWFjdC5zdGVwIC0+ICdhIC0+IHVuaXQ7XG4gICAgZGVidWc6IHN0cmluZztcbiAgfVxuXG4gIGxldCBfZGVidWdfc3RyaW5nIChob29rZWQgOiAnYSB0KSA6IHN0cmluZyA9IGhvb2tlZC5kZWJ1Z1xuXG4gIGxldCBfbG9nIGhvb2tlZCBzID1cbiAgICBpZiBkZWJ1Z19wcmludGluZyB0aGVuXG4gICAgICBELmRlYnVnX3ByaW50IChQcmludGYuc3ByaW50ZiBcIltIb29rZWQuRSAlc10gJXNcIiAoX2RlYnVnX3N0cmluZyBob29rZWQpIHMpXG5cbiAgbGV0IGNyZWF0ZV9ub19zZW5kID8oZGVidWcgOiBzdHJpbmcgPSBcInVubmFtZWQgZXZlbnRcIikgKCkgOiAnYSB0ID1cbiAgICBsZXQgZXZlbnQsIHNlbmRfZXZlbnQgPSBSZWFjdC5FLmNyZWF0ZSAoKSBpblxuICAgIGxldCBob29rZWQgPSB7IGhvb2tzID0gW107IGV2ZW50OyBzZW5kX2V2ZW50OyBkZWJ1ZyB9IGluXG4gICAgX2xvZyBob29rZWQgXCJjcmVhdGVcIjtcbiAgICBob29rZWRcblxuICBsZXQgcmVnaXN0ZXIgaG9va2VkIGYgPVxuICAgIF9sb2cgaG9va2VkIFwicmVnaXN0ZXJcIjtcbiAgICBob29rZWQuaG9va3MgPC0gZiA6OiBob29rZWQuaG9va3NcblxuICBsZXQgc2VuZCBob29rZWQgdmFsdWUgPVxuICAgIF9sb2cgaG9va2VkIFwic2VuZFwiO1xuICAgIExpc3QuaXRlciAoZnVuIGYgLT4gZiB2YWx1ZSkgaG9va2VkLmhvb2tzO1xuICAgIGhvb2tlZC5zZW5kX2V2ZW50IHZhbHVlXG5cbiAgbGV0IGNyZWF0ZSA/KGRlYnVnIDogc3RyaW5nID0gXCJ1bm5hbWVkIHNpZ25hbFwiKSAoKSA6ICdhIHQgKiAoJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBob29rZWQgOiAnYSB0ID0gY3JlYXRlX25vX3NlbmQgfmRlYnVnICgpIGluXG4gICAgbGV0IHNlbmRfaG9va2VkIDogJ2EgLT4gdW5pdCA9IHNlbmQgaG9va2VkIGluXG4gICAgaG9va2VkLCBzZW5kX2hvb2tlZFxuXG4gIGxldCBtYXAgPyhkZWJ1ZyA6IHN0cmluZyA9IFwidW5uYW1lZCBldmVudFwiKSBob29rZWQgZiA9XG4gICAgbGV0IG5ld19ob29rZWQgPSBjcmVhdGVfbm9fc2VuZCB+ZGVidWcgKCkgaW5cbiAgICByZWdpc3RlciBob29rZWQgKGZ1biB2YWx1ZSAtPlxuICAgICAgICBfbG9nIGhvb2tlZFxuICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcIm1hcCBzZW5kICVzIGZyb21cIiAoX2RlYnVnX3N0cmluZyBuZXdfaG9va2VkKSk7XG4gICAgICAgIHNlbmQgbmV3X2hvb2tlZCAoZiB2YWx1ZSkpO1xuICAgIF9sb2cgaG9va2VkIChQcmludGYuc3ByaW50ZiBcIm1hcCAlcyBmcm9tXCIgKF9kZWJ1Z19zdHJpbmcgbmV3X2hvb2tlZCkpO1xuICAgIG5ld19ob29rZWRcblxuICBsZXQgdG9fcmVhY3RfZXZlbnQgaG9va2VkID0gaG9va2VkLmV2ZW50XG5lbmRcblxuKCogVGVzdGluZyAqKVxubW9kdWxlIERlYnVnUHJpbnQgOiBEZWJ1Z1ByaW50ID0gc3RydWN0XG4gIGxldCBkZWJ1Z19wcmludCBfID0gKClcbmVuZFxuXG5tb2R1bGUgUyA9IE1ha2VTIChEZWJ1Z1ByaW50KVxubW9kdWxlIEUgPSBNYWtlRSAoRGVidWdQcmludClcblxubGV0JXRlc3QgXCJzaWduYWxzIGJhc2ljXCIgPVxuICBsZXQgYSwgc2V0X2EgPSBTLmNyZWF0ZSAwIGluXG4gIHNldF9hIDEwO1xuICBsZXQgYiA9IFMubWFwIChmdW4gdiAtPiB2ICsgMSkgYSBpblxuICBTLnZhbHVlIGIgPSAxMVxuXG5sZXQldGVzdCBcImV2ZW50cyBiYXNpY1wiID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBsZXQgZXZlbnQsIHNlbmRfZXZlbnQgPSBFLmNyZWF0ZSAoKSBpblxuICBFLnJlZ2lzdGVyIGV2ZW50IChmdW4gaSAtPiByIDo9IGkpO1xuICBzZW5kX2V2ZW50IDEwO1xuICAhciA9IDEwXG5cbmxldCV0ZXN0IFwidG9fcmVhY3Rfc2lnbmFsXCIgPVxuICBsZXQgYSwgc2V0X2EgPSBTLmNyZWF0ZSAwIGluXG4gIGxldCBzaWduYWwgPSBTLnRvX3JlYWN0X3NpZ25hbCBhIGluXG4gIHNldF9hIDEwO1xuICBVbml4LnNsZWVwZiAwLjE7XG4gIFJlYWN0LlMudmFsdWUgc2lnbmFsID0gMTBcblxubGV0JXRlc3QgXCJvZl9yZWFjdF9zaWduYWxcIiA9XG4gIGxldCBzLCBzZXRfcyA9IFJlYWN0LlMuY3JlYXRlIDAgaW5cbiAgbGV0IGggPSBTLm9mX3JlYWN0X3NpZ25hbCBzIGluXG4gIHNldF9zIDEwO1xuICB3aGlsZSBSZWFjdC5TLnZhbHVlIHMgPSAwIGRvXG4gICAgVW5peC5zbGVlcGYgMC4xXG4gIGRvbmU7XG4gIFVuaXguc2xlZXBmIDAuMTtcbiAgUy52YWx1ZSBoID0gMTBcblxubGV0JXRlc3RfbW9kdWxlIFwib25cIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IGEsIHNldF9hID0gUy5jcmVhdGUgMFxuICAgIGxldCBjb25kLCBzZXRfY29uZCA9IFMuY3JlYXRlIHRydWVcbiAgICBsZXQgb3V0ID0gUy5vbiBjb25kICgtMSkgYVxuICAgIGxldCV0ZXN0IF8gPSBTLnZhbHVlIG91dCA9IDBcblxuICAgIGxldCV0ZXN0IF8gPVxuICAgICAgc2V0X2EgMTA7XG4gICAgICBTLnZhbHVlIG91dCA9IDEwXG5cbiAgICBsZXQldGVzdCBfID1cbiAgICAgIHNldF9jb25kIGZhbHNlO1xuICAgICAgUy52YWx1ZSBvdXQgPSAtMVxuXG4gICAgbGV0JXRlc3QgXyA9XG4gICAgICBzZXRfYSA0MjtcbiAgICAgIFMudmFsdWUgb3V0ID0gLTFcblxuICAgIGxldCV0ZXN0IF8gPVxuICAgICAgc2V0X2NvbmQgdHJ1ZTtcbiAgICAgIFMudmFsdWUgb3V0ID0gNDJcblxuICAgIGxldCV0ZXN0IF8gPVxuICAgICAgc2V0X2EgMTtcbiAgICAgIFMudmFsdWUgb3V0ID0gMVxuXG4gICAgbGV0JXRlc3QgXyA9XG4gICAgICBzZXRfY29uZCBmYWxzZTtcbiAgICAgIFMudmFsdWUgb3V0ID0gLTFcbiAgZW5kKVxuIiwiIyAxIFwiY29tbW9uLm1sXCJcbmxldCB2ZXJzaW9uID0gXCIyLjEuMFwiXG5cbmV4Y2VwdGlvbiBKc29uX2Vycm9yIG9mIHN0cmluZ1xuXG5sZXQganNvbl9lcnJvciBzID0gcmFpc2UgKEpzb25fZXJyb3IgcylcblxuZXhjZXB0aW9uIEVuZF9vZl9hcnJheVxuZXhjZXB0aW9uIEVuZF9vZl9vYmplY3RcbmV4Y2VwdGlvbiBFbmRfb2ZfdHVwbGVcbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxudHlwZSBpbl9wYXJhbSA9IHsgc3RyaW5nX2J1ZiA6IEJ1ZmZlci50IH1cblxubGV0IGNyZWF0ZV9pbl9wYXJhbSA/KGxlbiA9IDI1NikgKCkgPSB7IHN0cmluZ19idWYgPSBCdWZmZXIuY3JlYXRlIGxlbiB9XG5cbmxldCB1dGY4X29mX2NvZGUgYnVmIHggPVxuICBsZXQgYWRkID0gQnVmZmVyLmFkZF9jaGFyIGluXG5cbiAgKCogU3RyYWlnaHQgPD0gZG9lc24ndCB3b3JrIHdpdGggc2lnbmVkIDMxLWJpdCBpbnRzICopXG4gIGxldCBtYXhiaXRzIG4geCA9IHggbHNyIG4gPSAwIGluXG5cbiAgaWYgbWF4Yml0cyA3IHggdGhlbiAoKiA3ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgeClcbiAgZWxzZSBpZiBtYXhiaXRzIDExIHggdGhlbiAoXG4gICAgKCogNSArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAwMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDE2IHggdGhlbiAoXG4gICAgKCogNCArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDAwMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDIxIHggdGhlbiAoXG4gICAgKCogMyArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTEwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAwMDAxMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDI2IHggdGhlbiAoXG4gICAgKCogMiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMDAwMDExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChtYXhiaXRzIDMxIHgpO1xuICAgICgqIDEgKyA2ICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMTAwIGxvciAoKHggbHNyIDMwKSBsYW5kIDBiMDAwMDAwMDEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG5cbmxldCBjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgaiA9XG4gIGxldCBoaWdoMTAgPSBpIC0gMHhEODAwIGluXG4gIGxldCBsb3cxMCA9IGogLSAweERDMDAgaW5cbiAgMHgxMDAwMCArICgoaGlnaDEwIGxzbCAxMCkgbG9yIGxvdzEwKVxuXG5sZXQgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciBidWYgaSBqID1cbiAgdXRmOF9vZl9jb2RlIGJ1ZiAoY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGopXG5cbnR5cGUgbGV4ZXJfc3RhdGUgPSB7XG4gIGJ1ZiA6IEJ1ZmZlci50OyAoKiBCdWZmZXIgdXNlZCB0byBhY2N1bXVsYXRlIHN1YnN0cmluZ3MgKilcbiAgbXV0YWJsZSBsbnVtIDogaW50OyAoKiBDdXJyZW50IGxpbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDEpICopXG4gIG11dGFibGUgYm9sIDogaW50O1xuICAgICAgKCogQWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgY3VycmVudCBsaW5lXG4gICAgICAgICAoc3RhcnRpbmcgZnJvbSAwKSAqKVxuICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjsgKCogTmFtZSBkZXNjcmliaW5nIHRoZSBpbnB1dCBmaWxlICopXG59XG5cbm1vZHVsZSBMZXhlcl9zdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBsZXhlcl9zdGF0ZSA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cbmVuZFxuXG5sZXQgaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/KGxudW0gPSAxKSAoKSA9XG4gIGxldCBidWYgPSBtYXRjaCBidWYgd2l0aCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMjU2IHwgU29tZSBidWYgLT4gYnVmIGluXG4gIHsgYnVmOyBsbnVtOyBib2wgPSAwOyBmbmFtZSB9XG5cbiMgMSBcInR5cGUubWxcIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIFxuIyA4IFwidHlwZS5tbFwiXG4gICAgfCBgSW50IG9mIGludFxuICAgIFxuIyAxMSBcInR5cGUubWxcIlxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMTQgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIFxuIyAxNyBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IG9mIHN0cmluZ1xuICAgIFxuIyAyMCBcInR5cGUubWxcIlxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICBcbiMgMjMgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDI1IFwidHlwZS5tbFwiXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIFxuIyAyOCBcInR5cGUubWxcIlxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIFxuIyAzMSBcInR5cGUubWxcIlxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIFxuIyAzMyBcInR5cGUubWxcIlxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuIyAxIFwid3JpdGUubWxcIlxuKCogaW5jbHVkZWQ6IHR5cGUubWwgKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHRlc3Rfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy5zZXQgcyBpIChDaGFyLmNociBpKVxuICBkb25lO1xuICBqc29uX3N0cmluZ19vZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cblxubGV0IG1heF9kaWdpdHMgPVxuICBtYXhcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtYXhfaW50KSlcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtaW5faW50KSlcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgb3BlbiBQcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgdGVzdF9mbG9hdCAoKSA9XG4gIGxldCBsID0gWyAwLjsgMS47IC0xLiBdIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiAyLiAqLiB4ICsuIDEuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4IC8uIHNxcnQgMi4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gc3FydCAzLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCBjb3MgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiAxLjIzZTUwKSBsIGluXG4gIGxldCBsID0gbCBAIFsgaW5maW5pdHk7IG5lZ19pbmZpbml0eSBdIGluXG4gIExpc3QuaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzID0gUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHggaW5cbiAgICAgIGxldCB5ID0gZmxvYXRfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlZyAlZyAlUyAlQlxcblwiIHggeSBzICh4ID0geSlcbiAgKVxuICAgIGxcblxuKCpcbmxldCAoKSA9IHRlc3RfZmxvYXQgKClcbiopXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDI2NCBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAyNjcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzAgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgXG4jIDI3MyBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjc2IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3OSBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI4MSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgXG4jIDI4NCBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICBcbiMgMjg3IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMjkwIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzA2IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuIyAzMTMgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG4jIDMyNSBcIndyaXRlLm1sXCJcbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDMzMiBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAzMzUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzMzggXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIFxuIyAzNDEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0NCBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgXG4jIDM1MiBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgXG4jIDM1NSBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuIyAzNTggXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzNzkgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG4jIDM5MSBcIndyaXRlLm1sXCJcbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKTtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4NSBcIndyaXRlLm1sXCJcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODkgXCJ3cml0ZS5tbFwiXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgXG4jIDQ5NSBcIndyaXRlLm1sXCJcbiAgfCB4IC0+IHhcbiMgMSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDI3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA0NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA3MSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDg0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbiMgOTkgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIFxuIyAxMDcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEwIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEzIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExNiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBhLCBgRmxvYXRsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIFxuIyAxMjIgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IGEsIGBTdHJpbmdsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMjQgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTM3IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICBcbiMgMTM5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxNDYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgXG4jIDE1NSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IF8gLT4gZmFsc2VcbiMgMTQgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuIyAxIFwicHJldHR5Lm1sXCJcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICBcbiMgNzggXCJwcmV0dHkubWxcIlxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICBcbiMgODEgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgODkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICBcbiMgOTIgXCJwcmV0dHkubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTUgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA5OCBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyAxMDAgXCJwcmV0dHkubWxcIlxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIFxuIyAxMTkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICBcbiMgMTMyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxMzUgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIFxuIyAxMzkgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxNDYgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIFxuIyAxNTAgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG4jIDE1NiBcInByZXR0eS5tbFwiXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuIyAxNyBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyAxIFwid3JpdGUyLm1sXCJcbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDI4IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIEJhc2ljID1cbnN0cnVjdFxuIyAxIFwidHlwZS5tbFwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgXG4jIDggXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgXG4jIDE0IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICBcbiMgMjAgXCJ0eXBlLm1sXCJcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgXG4jIDI1IFwidHlwZS5tbFwiXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIFxuIyAzMyBcInR5cGUubWxcIlxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuIyAxIFwid3JpdGUubWxcIlxuKCogaW5jbHVkZWQ6IHR5cGUubWwgKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHRlc3Rfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy5zZXQgcyBpIChDaGFyLmNociBpKVxuICBkb25lO1xuICBqc29uX3N0cmluZ19vZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cblxubGV0IG1heF9kaWdpdHMgPVxuICBtYXhcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtYXhfaW50KSlcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtaW5faW50KSlcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgb3BlbiBQcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgdGVzdF9mbG9hdCAoKSA9XG4gIGxldCBsID0gWyAwLjsgMS47IC0xLiBdIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiAyLiAqLiB4ICsuIDEuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4IC8uIHNxcnQgMi4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gc3FydCAzLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCBjb3MgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiAxLjIzZTUwKSBsIGluXG4gIGxldCBsID0gbCBAIFsgaW5maW5pdHk7IG5lZ19pbmZpbml0eSBdIGluXG4gIExpc3QuaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzID0gUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHggaW5cbiAgICAgIGxldCB5ID0gZmxvYXRfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlZyAlZyAlUyAlQlxcblwiIHggeSBzICh4ID0geSlcbiAgKVxuICAgIGxcblxuKCpcbmxldCAoKSA9IHRlc3RfZmxvYXQgKClcbiopXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDI2NCBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAyNzAgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgXG4jIDI3NiBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAyODEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuXG4jIDI5MCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxuIyAzMjUgXCJ3cml0ZS5tbFwiXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAzMzIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMzM4IFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICBcbiMgMzQ0IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0OSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcblxuIyAzNTggXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbiMgMzkxIFwid3JpdGUubWxcIlxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDk1IFwid3JpdGUubWxcIlxuICB8IHggLT4geFxuIyAzNSBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4jIDEgXCJwcmV0dHkubWxcIlxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIFxuIyA3OCBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIFxuIyA4MSBcInByZXR0eS5tbFwiXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA4OSBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIFxuIyAxMDAgXCJwcmV0dHkubWxcIlxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuXG4jIDE1NiBcInByZXR0eS5tbFwiXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuIyAzOCBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyAxIFwibW9ub21vcnBoaWMubWxcIlxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyMSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzMgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNDQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG4jIDk5IFwibW9ub21vcnBoaWMubWxcIlxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICBcbiMgMTA3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIFxuIyAxMjQgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTM5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxNTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBfIC0+IGZhbHNlXG4jIDEgXCJ3cml0ZTIubWxcIlxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIFxuIyAyIFwibGliL3JlYWQubWxsXCJcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICBvcGVuIFByaW50ZlxuICBvcGVuIExleGluZ1xuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBMZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBzcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIHNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBqc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChzcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCByZWFkX2p1bmsgPSByZWYgKGZ1biBfIC0+IGFzc2VydCBmYWxzZSlcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gIXJlYWRfanVuayBsZXhidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChzcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICBcbiMgMTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgIHRyeSBgSW50IChleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBcbiMgMTEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuXG4gIFxuIyAxMTMgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICBcbiMgMTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBcbiMgMTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuXG5cbiAgXG4jIDE0MSBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBzZXRfZmlsZV9uYW1lIHYgZm5hbWUgPVxuICAgIHYuZm5hbWUgPC0gZm5hbWVcblxuICBsZXQgbmV3bGluZSB2IGxleGJ1ZiA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG4gIHR5cGUgdHVwbGVfa2luZCA9IFsgYFBhcmVudGhlc2lzIHwgYFNxdWFyZV9icmFja2V0IF1cblxuXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbiMgMTYxIFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0MFxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDE1MFxcMDAxXFwxNTFcXDAwMVxcMTU0XFwwMDFcXDE2OFxcMDAxXFxcbiAgICBcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTcyXFwwMDFcXDE3M1xcMDAxXFwxODFcXDAwMVxcMTg0XFwwMDFcXDE4NVxcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkzXFwwMDFcXDE5NVxcMDAxXFwxOTZcXDAwMVxcMTk3XFwwMDFcXDIwMFxcMDAxXFwyMDNcXDAwMVxcMjIzXFwwMDFcXFxuICAgIFxcMjI1XFwwMDFcXDIyOFxcMDAxXFwyNDlcXDAwMVxcMjUxXFwwMDFcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFxcbiAgICBcXDAxM1xcMDAyXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAwMFxcMDAwXFwwMDVcXDAwMlxcMDA2XFwwMDJcXDAwN1xcMDAyXFwwMDhcXDAwMlxcXG4gICAgXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwMTVcXDAwMlxcMDE2XFwwMDJcXFxuICAgIFxcMDE3XFwwMDJcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDAyMVxcMDAyXFwwMjJcXDAwMlxcMDIzXFwwMDJcXDAyNFxcMDAyXFxcbiAgICBcXDAyNVxcMDAyXFwwMjZcXDAwMlxcMDI3XFwwMDJcXDAyOFxcMDAyXFwwMjlcXDAwMlxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcXG4gICAgXFwwMzNcXDAwMlxcMDAzXFwwMDJcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAzXFwwMDJcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwxMjZcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwM1xcMDAyXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFxcbiAgICBcXDIyMVxcMDAxXFwwMDNcXDAwMlxcMjUzXFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDNcXDAwMlxcXG4gICAgXFwyNDFcXDAwMVxcMDAzXFwwMDJcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwMDNcXDAwMlxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDNcXDAwMlxcMTk4XFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMDAxXFwwMDJcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwwMDJcXDAwMlxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMDA0XFwwMDJcXDAwNVxcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMDA2XFwwMDJcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMDA3XFwwMDJcXDEyMlxcMDAxXFwwMDhcXDAwMlxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMDEyXFwwMDJcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDA5OFxcMDAwXFwwMTVcXDAwMlxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMDE2XFwwMDJcXFxuICAgIFxcMjIwXFwwMDFcXDAxN1xcMDAyXFwyNTFcXDAwMVxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDAyMVxcMDAyXFwxOTRcXDAwMVxcMDk4XFwwMDBcXDAyMlxcMDAyXFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDAyM1xcMDAyXFxcbiAgICBcXDIzOFxcMDAxXFwwMjRcXDAwMlxcMjUxXFwwMDFcXDIzOFxcMDAxXFwwMjVcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwwMjZcXDAwMlxcMTk3XFwwMDFcXDAyN1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAyOFxcMDAyXFwxOTRcXDAwMVxcMDI5XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcblxuIyAxMDQyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDQzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDE5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICBcbiMgMTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICBcbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIFxuIyAyMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDg4IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIFxuIyAyMjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTM2IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTU1IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyAzMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTE5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDE5IC0+XG5cbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMTIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG5cbiMgMTIzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQ3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG5cbiMgMTI2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcblxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuXG4jIDEyOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcblxuIyAxMzAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcblxuIyAxMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG5cbiMgMTMxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuXG4jIDEzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcblxuIyAxMzIzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzI0IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cbmxldFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG4gICAgICAgICApXG5cbiMgMTM1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG5cbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzY2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcblxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cblxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcblxuIyAxNDA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDA2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuXG4jIDE0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuXG4jIDE0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMTQzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDQ0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuXG4jIDE0NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG5cbiMgMTQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMTQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcblxuIyAxNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTUyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG5cbiMgMTU1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG5cbiMgMTU2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDE1ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTYxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjgyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjgzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTY4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE3MDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTcxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzM5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxNzYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTgwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODU4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG5cbiMgMTg2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcblxuIyAxODc0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODc1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcblxuIyAxODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODgwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSApXG5cbiMgMTg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcblxuIyAxOTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTA3IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTk1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5sZXRcblxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcblxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG5cbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuXG4jIDE5NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTk4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuXG4jIDE5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDAxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjAyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjA2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwNjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIwODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjA4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTAxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTAyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTA3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxMTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgNjMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDYzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyMTUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTUxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjE1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTc3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTc4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjA2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjMzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjI0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjY2IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjMwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzE1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzU0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzY2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzc2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjM4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDI0MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcblxuIyAyNDE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDIwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDMwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQ3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTUwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI1NTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTY1IFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTk2IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgODI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjcxIFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjY3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI2ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2ODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI2OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjY5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG5cbiMgMjcxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjcyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjcyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzMyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjc3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzc2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODIyIFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA5MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgOTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI4ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyODk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMjkwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyOTEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuXG4jIDI5MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMjkzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI5NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjk2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDA3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzA1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMwNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDc3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzA4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzEyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMxMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTUwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTU1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG5cbiMgMzE2NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE2NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDMxODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxODkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG5cbiMgMzIxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAzMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjE2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQganVuayBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIDUxM1xuYW5kIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubGV4ZW1lIGxleGJ1ZiApXG5cbiMgMzIzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzI0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG5cbiMgMTA1NSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIFxuIyAxMDU2IFwibGliL3JlYWQubWxsXCJcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgKCkgPVxuICAgIHJlYWRfanVuayA6PSBqdW5rXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBpbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZCBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cblxuIyAzNDA4IFwibGliL3JlYWQubWxcIlxuIyA0MiBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBVdGlsID1cbnN0cnVjdFxuIyAxIFwidXRpbC5tbFwiXG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIFxuIyA4IFwidXRpbC5tbFwiXG4gIHwgYEludCBfIC0+IFwiaW50XCJcbiAgXG4jIDEwIFwidXRpbC5tbFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgXG4jIDE4IFwidXRpbC5tbFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICBcbiMgNzAgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gZmxvYXQgaVxuICBcbiMgNzMgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIFxuIyA3NSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDc5IFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IFNvbWUgKGZsb2F0IGkpXG4gIFxuIyA4MiBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICBcbiMgODQgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICBcbiMgODkgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIFxuIyA5MSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA5NSBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICBcbiMgOTcgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICBcbiMgMTAyIFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IGlcbiAgXG4jIDEwNCBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDEwOCBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBTb21lIGlcbiAgXG4jIDExMCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgXG4jIDExNyBcInV0aWwubWxcIlxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIFxuIyAxMTkgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMjMgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nIHMgLT4gU29tZSBzXG4gIFxuIyAxMjUgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxNzIgXCJ1dGlsLm1sXCJcbiAgICAgIHwgIGBJbnQgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAxNzQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTgxIFwidXRpbC5tbFwiXG4gICAgICBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAxODMgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgXG4jIDE5MCBcInV0aWwubWxcIlxuICAgICAgICBgSW50IHggLT4gU29tZSAoZmxvYXQgeClcbiAgICAgIFxuIyAxOTMgXCJ1dGlsLm1sXCJcbiAgICAgIHwgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTk1IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIFxuIyAyMDIgXCJ1dGlsLm1sXCJcbiAgICAgICAgYFN0cmluZyB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDIwNCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuIyA0NSBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyA0OSBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuXG5tb2R1bGUgU2FmZSA9XG5zdHJ1Y3RcbiMgMSBcInR5cGUubWxcIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIFxuIyA4IFwidHlwZS5tbFwiXG4gICAgfCBgSW50IG9mIGludFxuICAgIFxuIyAxMSBcInR5cGUubWxcIlxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICBcbiMgMTQgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIFxuIyAyMCBcInR5cGUubWxcIlxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICBcbiMgMjUgXCJ0eXBlLm1sXCJcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXG4jIDI4IFwidHlwZS5tbFwiXG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgXG4jIDMxIFwidHlwZS5tbFwiXG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXG4jIDMzIFwidHlwZS5tbFwiXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG4jIDEgXCJzYWZlLm1sXCJcbmxldCByZWMgdG9fYmFzaWMgOiB0IC0+IEJhc2ljLnQgPSBmdW5jdGlvblxuICB8IChgTnVsbCB8IGBCb29sIF8gfCBgSW50IF8gfCBgRmxvYXQgXyB8IGBTdHJpbmcgXykgYXMgeCAtPiB4XG4gIHwgYEludGxpdCBzIC0+IGBTdHJpbmcgc1xuICB8IGBMaXN0IGwgfCBgVHVwbGUgbCAtPiBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCB0b19iYXNpYyBsKSlcbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgYEFzc29jIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCB0b19iYXNpYyB2KSkgbCkpXG4gIHwgYFZhcmlhbnQgKGssIE5vbmUpIC0+IGBTdHJpbmcga1xuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIC0+IGBMaXN0IFsgYFN0cmluZyBrOyB0b19iYXNpYyB2IF1cbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMjY3IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjcwIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIFxuIyAyNzYgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICBcbiMgMjg0IFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIFxuIyAyODcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzMDYgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG4jIDMxMyBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzMyIFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDMzNSBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDMzOCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgXG4jIDM0NCBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgXG4jIDM1MiBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgXG4jIDM1NSBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuIyAzNTggXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzNzkgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG4jIDM5MSBcIndyaXRlLm1sXCJcbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKTtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4NSBcIndyaXRlLm1sXCJcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODkgXCJ3cml0ZS5tbFwiXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgXG4jIDQ5NSBcIndyaXRlLm1sXCJcbiAgfCB4IC0+IHhcbiMgNjIgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuIyAxIFwicHJldHR5Lm1sXCJcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICBcbiMgNzggXCJwcmV0dHkubWxcIlxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICBcbiMgODEgXCJwcmV0dHkubWxcIlxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgODkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICBcbiMgOTIgXCJwcmV0dHkubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICBcbiMgMTE5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgXG4jIDEzMiBcInByZXR0eS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTM1IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBcbiMgMTM5IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTQ2IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBcbiMgMTUwIFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgNjUgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDMzIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDcxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgODQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgXG4jIDEwNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTAgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTMgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICBcbiMgMTI0IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDEzNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgXG4jIDEzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTQ2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIFxuIyAxNTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBfIC0+IGZhbHNlXG4jIDEgXCJ3cml0ZTIubWxcIlxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIFxuIyAyIFwibGliL3JlYWQubWxsXCJcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICBvcGVuIFByaW50ZlxuICBvcGVuIExleGluZ1xuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBMZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBzcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIHNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBqc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChzcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCByZWFkX2p1bmsgPSByZWYgKGZ1biBfIC0+IGFzc2VydCBmYWxzZSlcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gIXJlYWRfanVuayBsZXhidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChzcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICBcbiMgMTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgIHRyeSBgSW50IChleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBcbiMgMTA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuICBcbiMgMTEzIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgXG4jIDEzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgXG4jIDEzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGBJbnRsaXQgKGxleGVtZSBsZXhidWYpXG5cblxuICBcbiMgMTQxIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IHNldF9maWxlX25hbWUgdiBmbmFtZSA9XG4gICAgdi5mbmFtZSA8LSBmbmFtZVxuXG4gIGxldCBuZXdsaW5lIHYgbGV4YnVmID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cbiAgdHlwZSB0dXBsZV9raW5kID0gWyBgUGFyZW50aGVzaXMgfCBgU3F1YXJlX2JyYWNrZXQgXVxuXG5cbiMgMTYxIFwibGliL3JlYWQubWxcIlxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQwXFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMTUwXFwwMDFcXDE1MVxcMDAxXFwxNTRcXDAwMVxcMTY4XFwwMDFcXFxuICAgIFxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNzJcXDAwMVxcMTczXFwwMDFcXDE4MVxcMDAxXFwxODRcXDAwMVxcMTg1XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTNcXDAwMVxcMTk1XFwwMDFcXDE5NlxcMDAxXFwxOTdcXDAwMVxcMjAwXFwwMDFcXDIwM1xcMDAxXFwyMjNcXDAwMVxcXG4gICAgXFwyMjVcXDAwMVxcMjI4XFwwMDFcXDI0OVxcMDAxXFwyNTFcXDAwMVxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXFxuICAgIFxcMDEzXFwwMDJcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDAwXFwwMDBcXDAwNVxcMDAyXFwwMDZcXDAwMlxcMDA3XFwwMDJcXDAwOFxcMDAyXFxcbiAgICBcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDAxNVxcMDAyXFwwMTZcXDAwMlxcXG4gICAgXFwwMTdcXDAwMlxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDIxXFwwMDJcXDAyMlxcMDAyXFwwMjNcXDAwMlxcMDI0XFwwMDJcXFxuICAgIFxcMDI1XFwwMDJcXDAyNlxcMDAyXFwwMjdcXDAwMlxcMDI4XFwwMDJcXDAyOVxcMDAyXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFxcbiAgICBcXDAzM1xcMDAyXFwwMDNcXDAwMlwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDNcXDAwMlxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDEyNlxcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXFxuICAgIFxcMjIxXFwwMDFcXDAwM1xcMDAyXFwyNTNcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwM1xcMDAyXFxcbiAgICBcXDI0MVxcMDAxXFwwMDNcXDAwMlxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDAwM1xcMDAyXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwM1xcMDAyXFwxOThcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwwMDFcXDAwMlxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDAwMlxcMDAyXFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwwMDRcXDAwMlxcMDA1XFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwwMDZcXDAwMlxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwwMDdcXDAwMlxcMTIyXFwwMDFcXDAwOFxcMDAyXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwwMTJcXDAwMlxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDk4XFwwMDBcXDAxNVxcMDAyXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwwMTZcXDAwMlxcXG4gICAgXFwyMjBcXDAwMVxcMDE3XFwwMDJcXDI1MVxcMDAxXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMDIxXFwwMDJcXDE5NFxcMDAxXFwwOThcXDAwMFxcMDIyXFwwMDJcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMDIzXFwwMDJcXFxuICAgIFxcMjM4XFwwMDFcXDAyNFxcMDAyXFwyNTFcXDAwMVxcMjM4XFwwMDFcXDAyNVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDAyNlxcMDAyXFwxOTdcXDAwMVxcMDI3XFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDI4XFwwMDJcXDE5NFxcMDAxXFwwMjlcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcblxuIyAxMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDM4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5hblxuICAgICAgICAgICAgICAgIFxuIyAxOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDU0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBpbmZpbml0eVxuICAgICAgICAgICAgICAgIFxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDY1IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICBcbiMgMjExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgKGZpbmlzaF9zdHJpbmcgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgXG4jIDIxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDk4IFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSlcbiAgICAgICAgICAgICAgICAgXG4jIDIyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgXG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTc5IFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgXG4jIDMwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTkgLT5cblxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAxMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjIzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcblxuIyAxMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjM1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcblxuIyAxMjY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjY1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjc3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG5cbiMgMTI5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuXG4jIDEzMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuXG4jIDEzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcblxuIyAxMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG5cbiMgMTMxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuXG4jIDEzMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxubGV0XG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG5cbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG5cbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgdXRmOF9vZl9jb2RlIHYuYnVmIHhcbiAgICAgICAgIClcblxuIyAxMzU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzU2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcblxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzYxIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDE0MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG5cbiMgMTQxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG5cbiMgMTQzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAxNDM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG5cbiMgMTQ1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcblxuIyAxNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAxNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuXG4jIDE1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcblxuIyAxNTU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTU4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcblxuIyAxNTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTYzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTU2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTU4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMTU4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjEyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTYxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYyOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYyOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjg4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzA1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTcwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzE1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTcyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzQ2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE3NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTc2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODA2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODExIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTg0NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg0OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcblxuIyAxODY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODcwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuXG4jIDE4NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuXG4jIDE4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpIClcblxuIyAxODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODg1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuXG4jIDE5MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTEyIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTkyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTUzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cbmxldFxuXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cblxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG5cbiMgMTk2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxOTg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG5cbiMgMTk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDYzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjA2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjA4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDkwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxMDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIxMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjExMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA2MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICBcbiMgNjM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDIxNTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTU2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjE2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTczIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxNzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjAxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjQ1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjUzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjYxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzA1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMjQxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDI0MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ0MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjU1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjE0IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjY1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNjc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjc2IFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjY4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjY5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyNjk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcblxuIyAyNzE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzE3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNzIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzIyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzI3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI3NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3NTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyNzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzcxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIFxuIyA5MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgOTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI4ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyODk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMjkwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyOTEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuXG4jIDI5MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMjkzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI5NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjk2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDI5OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5OTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDA3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMzA1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMwNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDc3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzA4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzEyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMxMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTUwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTU1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG5cbiMgMzE2NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE2NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDMxODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxODkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG5cbiMgMzIxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAzMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjE2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQganVuayBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIDUxM1xuYW5kIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubGV4ZW1lIGxleGJ1ZiApXG5cbiMgMzIzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzI0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG5cbiMgMTA1NSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIFxuIyAxMDU2IFwibGliL3JlYWQubWxsXCJcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgKCkgPVxuICAgIHJlYWRfanVuayA6PSBqdW5rXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBpbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggRW5kX29mX2lucHV0IC0+XG4gICAgICBqc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZCBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cblxuIyAzNDA4IFwibGliL3JlYWQubWxcIlxuIyA2OSBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBVdGlsID1cbnN0cnVjdFxuIyAxIFwidXRpbC5tbFwiXG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIFxuIyA4IFwidXRpbC5tbFwiXG4gIHwgYEludCBfIC0+IFwiaW50XCJcbiAgXG4jIDEwIFwidXRpbC5tbFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgXG4jIDE4IFwidXRpbC5tbFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICBcbiMgNzAgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gZmxvYXQgaVxuICBcbiMgNzMgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIFxuIyA3NSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDc5IFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IFNvbWUgKGZsb2F0IGkpXG4gIFxuIyA4MiBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICBcbiMgODQgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICBcbiMgODkgXCJ1dGlsLm1sXCJcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIFxuIyA5MSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA5NSBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICBcbiMgOTcgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICBcbiMgMTAyIFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IGlcbiAgXG4jIDEwNCBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDEwOCBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBTb21lIGlcbiAgXG4jIDExMCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgXG4jIDExNyBcInV0aWwubWxcIlxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIFxuIyAxMTkgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMjMgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nIHMgLT4gU29tZSBzXG4gIFxuIyAxMjUgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxNzIgXCJ1dGlsLm1sXCJcbiAgICAgIHwgIGBJbnQgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAxNzQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTgxIFwidXRpbC5tbFwiXG4gICAgICBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAxODMgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgXG4jIDE5MCBcInV0aWwubWxcIlxuICAgICAgICBgSW50IHggLT4gU29tZSAoZmxvYXQgeClcbiAgICAgIFxuIyAxOTMgXCJ1dGlsLm1sXCJcbiAgICAgIHwgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICBcbiMgMTk1IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIFxuIyAyMDIgXCJ1dGlsLm1sXCJcbiAgICAgICAgYFN0cmluZyB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDIwNCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuIyA3MiBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyA3OSBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuXG5tb2R1bGUgUmF3ID1cbnN0cnVjdFxuIyAxIFwidHlwZS5tbFwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgXG4jIDExIFwidHlwZS5tbFwiXG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIFxuIyAxNyBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IG9mIHN0cmluZ1xuICAgIFxuIyAyMyBcInR5cGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjUgXCJ0eXBlLm1sXCJcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXG4jIDI4IFwidHlwZS5tbFwiXG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgXG4jIDMxIFwidHlwZS5tbFwiXG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXG4jIDMzIFwidHlwZS5tbFwiXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG4jIDEgXCJ3cml0ZS5tbFwiXG4oKiBpbmNsdWRlZDogdHlwZS5tbCAqKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgdGVzdF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnNldCBzIGkgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIGpzb25fc3RyaW5nX29mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxuXG5sZXQgbWF4X2RpZ2l0cyA9XG4gIG1heFxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1heF9pbnQpKVxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1pbl9pbnQpKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBvcGVuIFByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB0ZXN0X2Zsb2F0ICgpID1cbiAgbGV0IGwgPSBbIDAuOyAxLjsgLTEuIF0gaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IDIuICouIHggKy4gMS4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggLy4gc3FydCAyLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiBzcXJ0IDMuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIGNvcyBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIDEuMjNlNTApIGwgaW5cbiAgbGV0IGwgPSBsIEAgWyBpbmZpbml0eTsgbmVnX2luZmluaXR5IF0gaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHMgPSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeCBpblxuICAgICAgbGV0IHkgPSBmbG9hdF9vZl9zdHJpbmcgcyBpblxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVnICVnICVTICVCXFxuXCIgeCB5IHMgKHggPSB5KVxuICApXG4gICAgbFxuXG4oKlxubGV0ICgpID0gdGVzdF9mbG9hdCAoKVxuKilcblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMjY3IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjczIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzkgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyODEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIFxuIyAyODQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgXG4jIDI4NyBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG4jIDI5MCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDMwNiBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbiMgMzEzIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxuIyAzMjUgXCJ3cml0ZS5tbFwiXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAzMzUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAzNDEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0NyBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0OSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICBcbiMgMzUyIFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICBcbiMgMzU1IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG4jIDM1OCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDM3OSBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbiMgMzkxIFwid3JpdGUubWxcIlxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg1IFwid3JpdGUubWxcIlxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4OSBcIndyaXRlLm1sXCJcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICBcbiMgNDk1IFwid3JpdGUubWxcIlxuICB8IHggLT4geFxuIyA5MCBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4jIDEgXCJwcmV0dHkubWxcIlxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIFxuIyA5MiBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA5NSBcInByZXR0eS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDk4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDEwMCBcInByZXR0eS5tbFwiXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgXG4jIDExOSBcInByZXR0eS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIFxuIyAxMzIgXCJwcmV0dHkubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDEzNyBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZ2xpdCBzIGluXG4gICAgICAgICAgXG4jIDEzOSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDE0OCBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZ2xpdCBzIGluXG4gICAgICAgICAgXG4jIDE1MCBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbiMgMTU2IFwicHJldHR5Lm1sXCJcbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG4jIDkzIFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAxNSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZ2xpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZ2xpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNDQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNzEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA4NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG4jIDk5IFwibW9ub21vcnBoaWMubWxcIlxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICAgIFxuIyAxMTAgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTIyIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTI0IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDEzNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgXG4jIDEzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTQ2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIFxuIyAxNTUgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBfIC0+IGZhbHNlXG4jIDEgXCJ3cml0ZTIubWxcIlxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIFxuIyAyIFwibGliL3JlYWQubWxsXCJcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICBvcGVuIFByaW50ZlxuICBvcGVuIExleGluZ1xuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBMZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBzcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIHNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBqc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChzcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCByZWFkX2p1bmsgPSByZWYgKGZ1biBfIC0+IGFzc2VydCBmYWxzZSlcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gIXJlYWRfanVuayBsZXhidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChzcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZiA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICAgIFxuIyAxMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBgSW50bGl0IChsZXhlbWUgbGV4YnVmKVxuXG4gIFxuIyAxMTMgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICAgIFxuIyAxMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBgSW50bGl0IChsZXhlbWUgbGV4YnVmKVxuXG5cbiAgXG4jIDE0MSBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBzZXRfZmlsZV9uYW1lIHYgZm5hbWUgPVxuICAgIHYuZm5hbWUgPC0gZm5hbWVcblxuICBsZXQgbmV3bGluZSB2IGxleGJ1ZiA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG4gIHR5cGUgdHVwbGVfa2luZCA9IFsgYFBhcmVudGhlc2lzIHwgYFNxdWFyZV9icmFja2V0IF1cblxuXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbiMgMTYxIFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0MFxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDE1MFxcMDAxXFwxNTFcXDAwMVxcMTU0XFwwMDFcXDE2OFxcMDAxXFxcbiAgICBcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTcyXFwwMDFcXDE3M1xcMDAxXFwxODFcXDAwMVxcMTg0XFwwMDFcXDE4NVxcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkzXFwwMDFcXDE5NVxcMDAxXFwxOTZcXDAwMVxcMTk3XFwwMDFcXDIwMFxcMDAxXFwyMDNcXDAwMVxcMjIzXFwwMDFcXFxuICAgIFxcMjI1XFwwMDFcXDIyOFxcMDAxXFwyNDlcXDAwMVxcMjUxXFwwMDFcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFxcbiAgICBcXDAxM1xcMDAyXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAwMFxcMDAwXFwwMDVcXDAwMlxcMDA2XFwwMDJcXDAwN1xcMDAyXFwwMDhcXDAwMlxcXG4gICAgXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwMTVcXDAwMlxcMDE2XFwwMDJcXFxuICAgIFxcMDE3XFwwMDJcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDAyMVxcMDAyXFwwMjJcXDAwMlxcMDIzXFwwMDJcXDAyNFxcMDAyXFxcbiAgICBcXDAyNVxcMDAyXFwwMjZcXDAwMlxcMDI3XFwwMDJcXDAyOFxcMDAyXFwwMjlcXDAwMlxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcXG4gICAgXFwwMzNcXDAwMlxcMDAzXFwwMDJcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAzXFwwMDJcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwxMjZcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwM1xcMDAyXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFxcbiAgICBcXDIyMVxcMDAxXFwwMDNcXDAwMlxcMjUzXFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDNcXDAwMlxcXG4gICAgXFwyNDFcXDAwMVxcMDAzXFwwMDJcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwMDNcXDAwMlxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDNcXDAwMlxcMTk4XFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMDAxXFwwMDJcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwwMDJcXDAwMlxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMDA0XFwwMDJcXDAwNVxcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMDA2XFwwMDJcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMDA3XFwwMDJcXDEyMlxcMDAxXFwwMDhcXDAwMlxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMDEyXFwwMDJcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDA5OFxcMDAwXFwwMTVcXDAwMlxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMDE2XFwwMDJcXFxuICAgIFxcMjIwXFwwMDFcXDAxN1xcMDAyXFwyNTFcXDAwMVxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDAyMVxcMDAyXFwxOTRcXDAwMVxcMDk4XFwwMDBcXDAyMlxcMDAyXFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDAyM1xcMDAyXFxcbiAgICBcXDIzOFxcMDAxXFwwMjRcXDAwMlxcMjUxXFwwMDFcXDIzOFxcMDAxXFwwMjVcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwwMjZcXDAwMlxcMTk3XFwwMDFcXDAyN1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAyOFxcMDAyXFwxOTRcXDAwMVxcMDI5XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDMwXFwwMDJcXDAzMVxcMDAyXFwwMzJcXDAwMlxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG5cbiMgMTAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcblxuIyAxMDQyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDQzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIk5hTlwiXG4gICAgICAgICAgICAgICAgXG4jIDE5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIFxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDY1IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIi1JbmZpbml0eVwiXG4gICAgICAgICAgICAgICAgXG4jIDIxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZ2xpdCAoZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICBcbiMgMjE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDkzIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IChsZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICBcbiMgMjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEzNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYFR1cGxlIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICBcbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnMgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYFZhcmlhbnQgKGNvbnMsIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgICBcbiMgMzAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDExOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjA4IFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjEzIFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOSAtPlxuXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDEyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuXG4jIDEyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuXG4jIDEyNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG5cbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcblxuIyAxMjk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG5cbiMgMTMwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG5cbiMgMTMwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuXG4jIDEzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcblxuIyAxMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE5IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG5cbiMgMTMyMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMyNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5sZXRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcblxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cblxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB1dGY4X29mX2NvZGUgdi5idWYgeFxuICAgICAgICAgKVxuXG4jIDEzNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG5cbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMTQwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcblxuIyAxNDExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDEyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcblxuIyAxNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDE0MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcblxuIyAxNDU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDU5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuXG4jIDE0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDE0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG5cbiMgMTU1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuXG4jIDE1NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuXG4jIDE1NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTY4IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTU3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAxNTg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTkwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTk1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjAwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjI4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjI5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTY0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY4MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzAwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzEwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzI1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTczOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTczOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTc2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTc3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzg4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODE2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODQ4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODUzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuXG4jIDE4NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG5cbiMgMTg3NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG5cbiMgMTg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikgKVxuXG4jIDE4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG5cbiMgMTkwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxubGV0XG5cbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG5cbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcblxuIyAxOTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTYzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTY4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDE5ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcblxuIyAxOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTk2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDY4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjA3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMDg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwOTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjEwMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjEwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTEyIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjExNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDYxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgICAgIFxuIyA2MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjE1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTYxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjE3NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjI4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjIzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzEwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjMyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAyNDE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDE1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMjQxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDI1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDQxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTU1IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNTU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTYwIFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTcwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIFxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDgyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjUxIFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjU2IFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI2NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyNjgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNjkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI2OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjcwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuXG4jIDI3MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI3MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjczMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjczMiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjc0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI3NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgXG4jIDkzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODQ2IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzwnO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA5NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODczIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODg1IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjg4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI4OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcblxuIyAyOTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI5MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjkxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG5cbiMgMjkzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAyOTM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjk2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyOTY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTcxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDUwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDU1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzA1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTIzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzEyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMxMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzE0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcblxuIyAzMTY2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTY3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTcxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTcyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTc3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMzE4OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE4OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcblxuIyAzMjEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjExIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDMyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBqdW5rIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgNTEzXG5hbmQgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5sZXhlbWUgbGV4YnVmIClcblxuIyAzMjM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cblxuIyAxMDU1IFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDEwNTYgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCAoKSA9XG4gICAgcmVhZF9qdW5rIDo9IGp1bmtcblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IGluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuXG4jIDM0MDggXCJsaWIvcmVhZC5tbFwiXG4jIDk3IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFV0aWwgPVxuc3RydWN0XG4jIDEgXCJ1dGlsLm1sXCJcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgXG4jIDEwIFwidXRpbC5tbFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgXG4jIDE2IFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZ2xpdCBfIC0+IFwic3RyaW5nbGl0XCJcbiAgXG4jIDE4IFwidXRpbC5tbFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICBcbiMgNzUgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA4NCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIFxuIyA5MSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyA5NyBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIFxuIyAxMDQgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIFxuIyAxMTkgXCJ1dGlsLm1sXCJcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIFxuIyAxMjUgXCJ1dGlsLm1sXCJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxNzQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTgzIFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMTk1IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBcbiMgMjA0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG4jIDEwMCBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyAxMDYgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCByYXdfdmVyc2lvbl9zdHJpbmcgPSBcIiRGb3JtYXQ6JUQkXCJcblxubGV0IGV4dHJhY3RfdGFnX3JlID1cbiAgUmUuY29tcGlsZVxuICAgIChSZS5zZXEgWyBSZS5zdHIgXCJ0YWc6IFwiOyBSZS5ncm91cCAoUmUucmVwIChSZS5jb21wbCBbIFJlLmNoYXIgJywnIF0pKSBdKVxuXG5sZXQgdmVyc2lvbl9zdHJpbmcgPVxuICBtYXRjaCBSZS5leGVjX29wdCBleHRyYWN0X3RhZ19yZSByYXdfdmVyc2lvbl9zdHJpbmcgd2l0aFxuICB8IFNvbWUgZ3IgLT4gUmUuR3JvdXAuZ2V0IGdyIDFcbiAgfCBOb25lIC0+IEdpdF92ZXJzaW9uLnRcblxubGV0IHZlcnNpb25fbXNnID0gXCJLYXBwYSBTaW11bGF0b3I6IFwiIF4gdmVyc2lvbl9zdHJpbmdcbmxldCB2ZXJzaW9uX2thc2FfZnVsbF9uYW1lID0gXCJLYXBwYSBTdGF0aWMgQW5hbHl6ZXIgKFwiIF4gdmVyc2lvbl9zdHJpbmcgXiBcIilcIlxubGV0IHZlcnNpb25fa2FkZV9mdWxsX25hbWUgPSBcIkthREUgKFwiIF4gdmVyc2lvbl9zdHJpbmcgXiBcIilcIlxubGV0IHRrX2lzX2luaXRpYWxpemVkID0gcmVmIGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcHBfZXhjZXB0aW9uIGYgPSBmdW5jdGlvblxuICB8IEV4aXQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiRXhpdFwiXG4gIHwgTm90X2ZvdW5kIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIk5vdF9mb3VuZFwiXG4gIHwgQXJnLkJhZCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJBcmcuQmFkKCVzKVwiIHhcbiAgfCBTeXMuQnJlYWsgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3lzLkJyZWFrXCJcbiAgfCBTdGFjay5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdGFjay5FbXB0eVwiXG4gIHwgUXVldWUuRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiUXVldWUuRW1wdHlcIlxuICB8IFN0cmVhbS5FcnJvciB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJTdHJlYW0uRXJyb3IgJXNcIiB4XG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3RyZWFtLkZhaWx1cmVcIlxuICB8IEFyZy5IZWxwIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkFyZy5IZWxwKCVzKVwiIHhcbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIlxuICB8IFNjYW5mLlNjYW5fZmFpbHVyZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJTY2FuZi5TY2FuLmZhaWx1cmUoJXMpXCIgeFxuICB8IExhenkuVW5kZWZpbmVkIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkxhenkuVW5kZWZpbmVkXCJcbiAgfCBVbml4TGFiZWxzLlVuaXhfZXJyb3IgKGVyLCB4LCB5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbml4TGFiZWxzLlVuaXhfZXJyb3IoJXMsJXMsJXMpXCJcbiAgICAgIChVbml4TGFiZWxzLmVycm9yX21lc3NhZ2UgZXIpXG4gICAgICB4IHlcbiAgfCBVbml4LlVuaXhfZXJyb3IgKGVyLCB4LCB5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbml4LlVuaXhfZXJyb3IoJXMsJXMsJXMpXCIgKFVuaXguZXJyb3JfbWVzc2FnZSBlcikgeCB5XG4gIHwgRmFpbHVyZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJGYWlsdXJlKCVzKVwiIHhcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdGFja19vdmVyZmxvd1wiXG4gIHwgZXhjIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoUHJpbnRleGMudG9fc3RyaW5nIGV4YylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBmbG9hdF9pc196ZXJvIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgfCBGUF96ZXJvIC0+IHRydWVcbiAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiBmYWxzZVxuXG5sZXQgcG93IGkgaiA9XG4gIGxldCAoKSA9IGFzc2VydCAoMCA8PSBqKSBpblxuICBsZXQgcmVjIGF1eCBpIGsgYWNjdSA9XG4gICAgaWYgayA9IDAgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgayBsYW5kIDEgPSAwIHRoZW5cbiAgICAgIGF1eCBpIChrIC8gMikgYWNjdSAqIGFjY3VcbiAgICBlbHNlXG4gICAgICBhdXggaSAoayAvIDIpIChpICogYWNjdSAqIGFjY3UpXG4gIGluXG4gIGF1eCBpIGogMVxuXG5sZXQgZmFjdCBpID1cbiAgbGV0IHJlYyBhdXggaSBhY2N1ID1cbiAgICBpZiBpIDwgMiB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZVxuICAgICAgYXV4IChpIC0gMSkgKGkgKiBhY2N1KVxuICBpblxuICBhdXggaSAxXG5cbmxldCBnZXRfcHJvZHVjdF9pbWFnZV9vY2Mgc3RhcnQgY29tYmluZSBmIGwgPVxuICBsZXQgbCA9IExpc3Quc29ydCBjb21wYXJlIGwgaW5cbiAgbGV0IHJlYyBhdXggbCBvbGQgb2NjIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgaCA6OiB0IHdoZW4gaCA9IG9sZCAtPiBhdXggdCBvbGQgKDEgKyBvY2MpIGFjY3VcbiAgICB8IF8gLT5cbiAgICAgIGxldCBhY2N1ID0gY29tYmluZSBhY2N1IChmIG9jYykgaW5cbiAgICAgIChtYXRjaCBsIHdpdGhcbiAgICAgIHwgaCA6OiB0IC0+IGF1eCB0IGggMSBhY2N1XG4gICAgICB8IFtdIC0+IGFjY3UpXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IDFcbiAgfCBoIDo6IHQgLT4gYXV4IHQgaCAxIHN0YXJ0XG5cbmxldCBnZXRfcHJvZHVjdF9pbWFnZV9vY2NfMiBzdGFydCBjb21iaW5lIGYgbDEgbDIgPVxuICBsZXQgbDEgPSBMaXN0LnNvcnQgY29tcGFyZSBsMSBpblxuICBsZXQgbDIgPSBMaXN0LnNvcnQgY29tcGFyZSBsMiBpblxuICBsZXQgY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBbXSwgMFxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgcmVjIGF1eCBsIGggb2NjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gW10sIG9jY1xuICAgICAgICB8IGgnIDo6IHQgd2hlbiBoID0gaCcgLT4gYXV4IHQgaCAob2NjICsgMSlcbiAgICAgICAgfCBfIC0+IGwsIG9jY1xuICAgICAgaW5cbiAgICAgIGF1eCB0IGggMVxuICBpblxuICBsZXQgcmVjIGF1eCBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgaDEgOjogXywgaDIgOjogXyB3aGVuIGgxID0gaDIgLT5cbiAgICAgIGxldCBsMSwgb2NjMSA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwxIGluXG4gICAgICBsZXQgbDIsIG9jYzIgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMiBpblxuICAgICAgYXV4IGwxIGwyIChjb21iaW5lIGFjY3UgKGYgb2NjMSBvY2MyKSlcbiAgICB8IGgxIDo6IF8sIGgyIDo6IF8gd2hlbiBjb21wYXJlIGgxIGgyIDwgMCAtPlxuICAgICAgbGV0IGwxLCBvY2MxID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDEgaW5cbiAgICAgIGF1eCBsMSBsMiAoY29tYmluZSBhY2N1IChmIG9jYzEgMCkpXG4gICAgfCBfIDo6IF8sIF8gOjogXyAtPlxuICAgICAgbGV0IGwyLCBvY2MyID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDIgaW5cbiAgICAgIGF1eCBsMSBsMiAoY29tYmluZSBhY2N1IChmIDAgb2NjMikpXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGFjY3VcbiAgaW5cbiAgYXV4IGwxIGwyIHN0YXJ0XG5cbmxldCBkaXYyIHggPSBJbnQ2NC5kaXYgeCAoSW50NjQuYWRkIEludDY0Lm9uZSBJbnQ2NC5vbmUpXG5cbmxldCBwb3c2NCB4IG4gPVxuICBhc3NlcnQgKG4gPj0gSW50NjQuemVybyk7XG4gIGxldCByZWMgYXV4IGsgYWNjdSA9XG4gICAgaWYgayA9IEludDY0Lnplcm8gdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgSW50NjQubG9nYW5kIGsgSW50NjQub25lID0gSW50NjQuemVybyB0aGVuXG4gICAgICBhdXggKGRpdjIgaykgKEludDY0Lm11bCBhY2N1IGFjY3UpXG4gICAgZWxzZVxuICAgICAgYXV4IChkaXYyIGspIChJbnQ2NC5tdWwgeCAoSW50NjQubXVsIGFjY3UgYWNjdSkpXG4gIGluXG4gIGF1eCBuIEludDY0Lm9uZVxuXG5sZXQgY2FudG9yX3BhaXJpbmcgeCB5ID1cbiAgbGV0IHMgPSB4ICsgeSBpblxuICAoc3VjYyBzICogcyAvIDIpICsgeVxuXG5sZXQgcmVhZF9pbnB1dCAoKSA9XG4gIGxldCByZWMgcGFyc2UgYWNjIGlucHV0ID1cbiAgICBtYXRjaCBTdHJlYW0ubmV4dCBpbnB1dCB3aXRoXG4gICAgfCAnXFxuJyAtPiBhY2NcbiAgICB8IGMgLT4gcGFyc2UgKFByaW50Zi5zcHJpbnRmIFwiJXMlY1wiIGFjYyBjKSBpbnB1dFxuICBpblxuICB0cnlcbiAgICBsZXQgdXNlcl9pbnB1dCA9IFN0cmVhbS5vZl9jaGFubmVsIHN0ZGluIGluXG4gICAgcGFyc2UgXCJcIiB1c2VyX2lucHV0XG4gIHdpdGggU3RyZWFtLkZhaWx1cmUgLT4gaW52YWxpZF9hcmcgXCJUb29scy5SZWFkX2lucHV0OiBjYW5ub3QgcmVhZCBzdHJlYW1cIlxuXG5sZXQgbm90X2FuX2lkIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPSAwXG4gIHx8XG4gIGxldCBpID0gaW50X29mX2NoYXIgcy5bMF0gaW5cbiAgKGkgPCA2NSB8fCBpID4gMTIyIHx8IChpID4gOTAgJiYgKGkgPD4gOTUgfHwgU3RyaW5nLmxlbmd0aCBzID0gMSkgJiYgaSA8IDk3KSlcbiAgfHxcbiAgdHJ5XG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBsZXQgaSA9IGludF9vZl9jaGFyIGMgaW5cbiAgICAgICAgaWZcbiAgICAgICAgICBpIDwgNDggfHwgaSA+IDEyMlxuICAgICAgICAgIHx8IChpID4gNTcgJiYgKGkgPCA2NSB8fCAoaSA+IDkwICYmIGkgPD4gOTUgJiYgaSA8IDk3KSkpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmQpXG4gICAgICBzO1xuICAgIGZhbHNlXG4gIHdpdGggTm90X2ZvdW5kIC0+IHRydWVcblxubGV0IGFycmF5X2ZvbGRfbGVmdF9tYXBpIGYgeCBhID1cbiAgbGV0IHkgPSByZWYgeCBpblxuICBsZXQgbyA9XG4gICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIGEpIChmdW4gaSAtPlxuICAgICAgICBsZXQgeScsIG91dCA9IGYgaSAheSBhLihpKSBpblxuICAgICAgICBsZXQgKCkgPSB5IDo9IHknIGluXG4gICAgICAgIG91dClcbiAgaW5cbiAgIXksIG9cblxubGV0IGFycmF5X21hcF9vZl9saXN0ID1cbiAgbGV0IHJlYyBmaWxsIGYgaSB2ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgdiBpIChmIHgpO1xuICAgICAgZmlsbCBmIChzdWNjIGkpIHYgbFxuICBpblxuICBmdW4gZiAtPiBmdW5jdGlvblxuICAgIHwgW10gLT4gW3x8XVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBsZXQgbGVuID0gc3VjYyAoTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgIGxldCBhbnMgPSBBcnJheS5tYWtlIGxlbiAoZiB4KSBpblxuICAgICAgbGV0ICgpID0gZmlsbCBmIDEgYW5zIGwgaW5cbiAgICAgIGFuc1xuXG5sZXQgYXJyYXlfcmV2X29mX2xpc3QgPVxuICBsZXQgcmVjIGZpbGwgb3V0IGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYXNzZXJ0IChpID0gLTEpXG4gICAgfCBoJyA6OiB0JyAtPlxuICAgICAgbGV0ICgpID0gQXJyYXkudW5zYWZlX3NldCBvdXQgaSBoJyBpblxuICAgICAgZmlsbCBvdXQgKHByZWQgaSkgdCdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiBbfHxdXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0IGwgPSBzdWNjIChMaXN0Lmxlbmd0aCB0KSBpblxuICAgIGxldCBvdXQgPSBBcnJheS5tYWtlIGwgaCBpblxuICAgIGxldCAoKSA9IGZpbGwgb3V0IChsIC0gMikgdCBpblxuICAgIG91dFxuXG5sZXQgYXJyYXlfcmV2X21hcF9vZl9saXN0ID1cbiAgbGV0IHJlYyBmaWxsIGYgb3V0IGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYXNzZXJ0IChpID0gLTEpXG4gICAgfCBoJyA6OiB0JyAtPlxuICAgICAgbGV0ICgpID0gQXJyYXkudW5zYWZlX3NldCBvdXQgaSAoZiBoJykgaW5cbiAgICAgIGZpbGwgZiBvdXQgKHByZWQgaSkgdCdcbiAgaW5cbiAgZnVuIGYgLT4gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFt8fF1cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IGwgPSBzdWNjIChMaXN0Lmxlbmd0aCB0KSBpblxuICAgICAgbGV0IG91dCA9IEFycmF5Lm1ha2UgbCAoZiBoKSBpblxuICAgICAgbGV0ICgpID0gZmlsbCBmIG91dCAobCAtIDIpIHQgaW5cbiAgICAgIG91dFxuXG5sZXQgYXJyYXlfZm9sZF9sZWZ0aSBmIHggYSA9XG4gIGxldCB5ID0gcmVmIHggaW5cbiAgbGV0ICgpID0gQXJyYXkuaXRlcmkgKGZ1biBpIGUgLT4geSA6PSBmIGkgIXkgZSkgYSBpblxuICAheVxuXG5sZXQgcmVjIGF1eF9mb2xkX3JpZ2h0aSBpIGYgYSB4ID1cbiAgaWYgaSA8IDAgdGhlblxuICAgIHhcbiAgZWxzZVxuICAgIGF1eF9mb2xkX3JpZ2h0aSAocHJlZCBpKSBmIGEgKGYgaSBhLihpKSB4KVxuXG5sZXQgYXJyYXlfZm9sZF9yaWdodGkgZiBhIHggPSBhdXhfZm9sZF9yaWdodGkgKEFycmF5Lmxlbmd0aCBhIC0gMSkgZiBhIHhcblxubGV0IGFycmF5X2ZvbGRfbGVmdDJpIGYgeCBhMSBhMiA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGExIGluXG4gIGlmIGwgPD4gQXJyYXkubGVuZ3RoIGEyIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImFycmF5X2ZvbGRfbGVmdDJpXCIpXG4gIGVsc2VcbiAgICBhcnJheV9mb2xkX2xlZnRpIChmdW4gaSB4IGUgLT4gZiBpIHggZSBhMi4oaSkpIHggYTFcblxubGV0IGFycmF5X2ZpbHRlciBmIGEgPVxuICBhcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB4IC0+XG4gICAgICBpZiBmIGkgeCB0aGVuXG4gICAgICAgIGkgOjogYWNjXG4gICAgICBlbHNlXG4gICAgICAgIGFjYylcbiAgICBbXSBhXG5cbmxldCBhcnJheV9taW5fZXF1YWxfbm90X251bGwgbDEgbDIgPVxuICBpZiBBcnJheS5sZW5ndGggbDEgPD4gQXJyYXkubGVuZ3RoIGwyIHRoZW5cbiAgICBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWMgZiBqID1cbiAgICAgIGlmIGogPSBBcnJheS5sZW5ndGggbDEgdGhlblxuICAgICAgICBTb21lIChbXSwgW10pXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5iMSwgYWcxID0gbDEuKGopIGluXG4gICAgICAgIGxldCBuYjIsIGFnMiA9IGwyLihqKSBpblxuICAgICAgICBpZiBuYjEgPD4gbmIyIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgaWYgbmIxID0gMCB0aGVuXG4gICAgICAgICAgZiAoc3VjYyBqKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVjIGF1eCBpIHZhIG91dCA9XG4gICAgICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIGwxIHRoZW5cbiAgICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbmIxLCBhZzEgPSBsMS4oaSkgaW5cbiAgICAgICAgICAgICAgbGV0IG5iMiwgYWcyID0gbDIuKGkpIGluXG4gICAgICAgICAgICAgIGlmIG5iMSA8PiBuYjIgdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZSBpZiBuYjEgPiAwICYmIG5iMSA8IHZhIHRoZW5cbiAgICAgICAgICAgICAgICBhdXggKHN1Y2MgaSkgbmIxIChhZzEsIGFnMilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGF1eCAoc3VjYyBpKSB2YSBvdXRcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCAoc3VjYyBqKSBuYjEgKGFnMSwgYWcyKVxuICAgICAgICApXG4gICAgICApXG4gICAgaW5cbiAgICBmIDBcbiAgKVxuXG5sZXQgYXJyYXlfY29tcGFyZSBjb21wYXJlIGEgYiA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGwnID0gQXJyYXkubGVuZ3RoIGIgaW5cbiAgbGV0IGQgPSBTdGRsaWIuY29tcGFyZSBsIGwnIGluXG4gIGxldCByZWMgYXV4X2FycmF5X2NvbXBhcmUgayA9XG4gICAgaWYgayA+PSBsIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBvID0gY29tcGFyZSBhLihrKSBiLihrKSBpblxuICAgICAgaWYgbyA8PiAwIHRoZW5cbiAgICAgICAgb1xuICAgICAgZWxzZVxuICAgICAgICBhdXhfYXJyYXlfY29tcGFyZSAoc3VjYyBrKVxuICAgIClcbiAgaW5cbiAgaWYgZCA8PiAwIHRoZW5cbiAgICBkXG4gIGVsc2VcbiAgICBhdXhfYXJyYXlfY29tcGFyZSAwXG5cbmxldCBpdGVyaSBmIGkgPVxuICBsZXQgcmVjIGF1eCBqID1cbiAgICBpZiBqIDwgaSB0aGVuIChcbiAgICAgIGxldCAoKSA9IGYgaiBpblxuICAgICAgYXV4IChzdWNjIGopXG4gICAgKVxuICBpblxuICBhdXggMFxuXG5sZXQgcmVjIHJlY3RpIGYgeCBpID1cbiAgaWYgMCA8IGkgdGhlbiAoXG4gICAgbGV0IGknID0gcHJlZCBpIGluXG4gICAgcmVjdGkgZiAoZiB4IGknKSBpJ1xuICApIGVsc2VcbiAgICB4XG5cbmxldCBtaW5fcG9zX2ludF9ub3RfemVybyAoa2V5YSwgZGF0YWEpIChrZXliLCBkYXRhYikgPVxuICBpZiBrZXlhID0gMCB0aGVuXG4gICAga2V5YiwgZGF0YWJcbiAgZWxzZSBpZiBrZXliID0gMCB0aGVuXG4gICAga2V5YSwgZGF0YWFcbiAgZWxzZSBpZiBjb21wYXJlIGtleWEga2V5YiA+IDAgdGhlblxuICAgIGtleWIsIGRhdGFiXG4gIGVsc2VcbiAgICBrZXlhLCBkYXRhYVxuXG5sZXQgbWF4X3Bvc19pbnRfbm90X3plcm8gKGtleWEsIGRhdGFhKSAoa2V5YiwgZGF0YWIpID1cbiAgaWYgY29tcGFyZSBrZXlhIGtleWIgPiAwIHRoZW5cbiAgICBrZXlhLCBkYXRhYVxuICBlbHNlXG4gICAga2V5YiwgZGF0YWJcblxubGV0IGZvbGRfb3Zlcl9wZXJtdXRhdGlvbnMgZiBsIGFjY3UgPVxuICBsZXQgcmVjIGF1eCB0b19kbyBkaXNjYXJkZWQgcGVybXV0YXRpb24gYWNjdSA9XG4gICAgbWF0Y2ggdG9fZG8sIGRpc2NhcmRlZCB3aXRoXG4gICAgfCBbXSwgW10gLT4gZiBwZXJtdXRhdGlvbiBhY2N1XG4gICAgfCBbXSwgXyA6OiBfIC0+IGFjY3VcbiAgICB8IGggOjogdCwgXyAtPlxuICAgICAgbGV0IHRvX2RvMSA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdCkgdCBkaXNjYXJkZWQgaW5cbiAgICAgIGxldCBhY2N1ID0gYXV4IHRvX2RvMSBbXSAoaCA6OiBwZXJtdXRhdGlvbikgYWNjdSBpblxuICAgICAgbGV0IGFjY3UgPSBhdXggdCAoaCA6OiBkaXNjYXJkZWQpIHBlcm11dGF0aW9uIGFjY3UgaW5cbiAgICAgIGFjY3VcbiAgaW5cbiAgYXV4IGwgW10gW10gYWNjdVxuXG5sZXQgZ2NkXzIgYSBiID1cbiAgbGV0IHJlYyBhdXggYSBiID1cbiAgICBpZiBiID0gMCB0aGVuXG4gICAgICBhXG4gICAgZWxzZVxuICAgICAgYXV4IGIgKGEgbW9kIGIpXG4gIGluXG4gIGxldCBhID0gYWJzIGEgaW5cbiAgbGV0IGIgPSBhYnMgYiBpblxuICBpZiBhIDwgYiB0aGVuXG4gICAgYXV4IGIgYVxuICBlbHNlXG4gICAgYXV4IGEgYlxuXG5sZXQgbGNtXzIgYSBiID0gYWJzIGEgKiBhYnMgYiAvIGdjZF8yIGEgYlxuXG5sZXQgbGNtIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSAtPiAwXG4gIHwgaCA6OiB0IC0+IExpc3QuZm9sZF9sZWZ0IGxjbV8yIGggdFxuXG5sZXQgZ2V0X2ludGVydmFsX2xpc3QgcCBpIGogPVxuICBsZXQgYWRkIGN1cnJlbnQgb3V0cHV0ID1cbiAgICBtYXRjaCBjdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gb3V0cHV0XG4gICAgfCBTb21lIHAgLT4gcCA6OiBvdXRwdXRcbiAgaW5cbiAgbGV0IGluc2VydCBrIGN1cnJlbnQgPVxuICAgIG1hdGNoIGN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIChrLCBrKVxuICAgIHwgU29tZSAoXywgaikgLT4gU29tZSAoaywgailcbiAgaW5cbiAgbGV0IHJlYyBhdXggcCBrIGN1cnJlbnQgb3V0cHV0ID1cbiAgICBpZiBrIDwgaSB0aGVuXG4gICAgICBhZGQgY3VycmVudCBvdXRwdXRcbiAgICBlbHNlIGlmIHAgayB0aGVuXG4gICAgICBhdXggcCAoayAtIDEpIChpbnNlcnQgayBjdXJyZW50KSBvdXRwdXRcbiAgICBlbHNlXG4gICAgICBhdXggcCAoayAtIDEpIE5vbmUgKGFkZCBjdXJyZW50IG91dHB1dClcbiAgaW5cbiAgYXV4IHAgaiBOb25lIFtdXG5cbmxldCBsb3dlcmNhc2UgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpXG5sZXQgY2FwaXRhbGl6ZSA9IFN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG5cbmxldCBzdHJpbmdfc3BsaXRfb25fY2hhciAoZGVsaW1pdGVyIDogY2hhcikgKHMgOiBzdHJpbmcpIDpcbiAgICBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uID1cbiAgdHJ5XG4gICAgbGV0IGluZGV4ID0gU3RyaW5nLmluZGV4IHMgZGVsaW1pdGVyIGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIFN0cmluZy5zdWIgcyAwIGluZGV4LCBTb21lIChTdHJpbmcuc3ViIHMgKGluZGV4ICsgMSkgKGxlbmd0aCAtIGluZGV4IC0gMSkpXG4gIHdpdGggTm90X2ZvdW5kIC0+IHMsIE5vbmVcblxubGV0IHNtYXNoX2R1cGxpY2F0ZV9pbl9vcmRlcmVkX2xpc3QgcCBsID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgXCJEVVBMIFxcblwiIGluXG5cbiAgbGV0IHJlYyBhdXggdGFpbCBub2NjIGN1cnJlbnQgYWNjdSA9XG4gICAgbWF0Y2ggdGFpbCB3aXRoXG4gICAgfCBbXSAtPiAoY3VycmVudCwgbm9jYykgOjogYWNjdVxuICAgIHwgKGgsIG4pIDo6IHQgd2hlbiBwIGggY3VycmVudCA9IDAgLT5cbiAgICAgICgqbGV0ICgpID0gRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgXCJEVVBMICVpXFxuXCIgKG4rbm9jYykgaW4qKVxuICAgICAgYXV4IHQgKG4gKyBub2NjKSBjdXJyZW50IGFjY3VcbiAgICB8IChoLCBuKSA6OiB0IC0+IGF1eCB0IG4gaCAoKGN1cnJlbnQsIG5vY2MpIDo6IGFjY3UpXG4gIGluXG4gIG1hdGNoIExpc3QucmV2IGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKGgsIG4pIDo6IHQgLT4gYXV4IHQgbiBoIFtdXG5cbmxldCBjaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgPVxuICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggbmFtZSBleHQgdGhlblxuICAgIEZpbGVuYW1lLmNob3Bfc3VmZml4IG5hbWUgZXh0XG4gIGVsc2VcbiAgICBGaWxlbmFtZS5yZW1vdmVfZXh0ZW5zaW9uIG5hbWVcblxubGV0IGZpbmRfYXZhaWxhYmxlX25hbWUgfmFscmVhZHlfdGhlcmUgbmFtZSB+ZmFjdWx0YXRpdmUgfmV4dCA9XG4gIGxldCBleHQgPVxuICAgIG1hdGNoIGV4dCB3aXRoXG4gICAgfCBTb21lIGUgLT4gZVxuICAgIHwgTm9uZSAtPiBGaWxlbmFtZS5leHRlbnNpb24gbmFtZVxuICBpblxuICBsZXQgYmFzZSA9IGNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIGV4dCBpblxuICBpZiBhbHJlYWR5X3RoZXJlIChiYXNlIF4gZXh0KSB0aGVuIChcbiAgICBsZXQgYmFzZScgPVxuICAgICAgaWYgZmFjdWx0YXRpdmUgPD4gXCJcIiB0aGVuXG4gICAgICAgIGJhc2UgXiBcIl9cIiBeIGZhY3VsdGF0aXZlXG4gICAgICBlbHNlXG4gICAgICAgIGJhc2VcbiAgICBpblxuICAgIGlmIGFscmVhZHlfdGhlcmUgKGJhc2UnIF4gZXh0KSB0aGVuIChcbiAgICAgIGxldCB2ID0gcmVmIDAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdoaWxlIGFscmVhZHlfdGhlcmUgKGJhc2UnIF4gXCJ+XCIgXiBzdHJpbmdfb2ZfaW50ICF2IF4gZXh0KSBkb1xuICAgICAgICAgIGluY3IgdlxuICAgICAgICBkb25lXG4gICAgICBpblxuICAgICAgYmFzZScgXiBcIn5cIiBeIHN0cmluZ19vZl9pbnQgIXYgXiBleHRcbiAgICApIGVsc2VcbiAgICAgIGJhc2UnIF4gZXh0XG4gICkgZWxzZVxuICAgIGJhc2UgXiBleHRcblxubGV0IGRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlciA6IGNoYXIgPSAnXFx4MWUnICgqIFwiXFx0XCIgKilcblxubGV0IGdldF9yZWYgcmVmID1cbiAgbGV0IGkgPSAhcmVmIGluXG4gIGxldCAoKSA9IHJlZiA6PSBpICsgMSBpblxuICBpXG5cbmxldCByZW1vdmVfZG91YmxlX2VsZW1lbnRzIGwgPVxuICBsZXQgbCA9IExpc3Quc29ydCBjb21wYXJlIGwgaW5cbiAgbGV0IHJlYyBhdXggbCBhY2N1IG9sZCA9XG4gICAgbWF0Y2ggbCwgb2xkIHdpdGhcbiAgICB8IFtdLCBfIC0+IGFjY3VcbiAgICB8IGggOjogdCwgU29tZSBoJyB3aGVuIGggPSBoJyAtPiBhdXggdCBhY2N1IG9sZFxuICAgIHwgaCA6OiB0LCAoTm9uZSB8IFNvbWUgXykgLT4gYXV4IHQgKGggOjogYWNjdSkgKFNvbWUgaClcbiAgaW5cbiAgYXV4IGwgW10gTm9uZVxuXG5sZXQgZnJvbV9uX3RvXzAgbiA9XG4gIGxldCByZWMgYXV4IGsgYWNjID1cbiAgICBpZiBrID4gbiB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBhdXggKGsgKyAxKSAoayA6OiBhY2MpXG4gIGluXG4gIGF1eCAwIFtdXG5cbmxldCBjbGVhciBhID0gQXJyYXkuaXRlcmkgKGZ1biBpIF8gLT4gYS4oaSkgPC0gW10pIGFcblxubGV0IHNvcnRfYnlfcHJpb3JpdHkgZiBuID1cbiAgbGV0IGEgPSBBcnJheS5tYWtlIChuICsgMSkgW10gaW5cbiAgbGV0IGtleXMgPSBmcm9tX25fdG9fMCBuIGluXG4gIGxldCBzb3J0IGwgPVxuICAgIGxldCByZWMgYXV4IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgayA9IGYgaCBpblxuICAgICAgICBsZXQgKCkgPSBhLihrKSA8LSBoIDo6IGEuKGspIGluXG4gICAgICAgIGF1eCB0XG4gICAgaW5cbiAgICBsZXQgKCkgPSBhdXggbCBpblxuICAgIGxldCBvdXRwdXQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IGtleSAtPlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCBlbHQgLT4gZWx0IDo6IGxpc3QpIGxpc3QgYS4oa2V5KSlcbiAgICAgICAgW10ga2V5c1xuICAgIGluXG4gICAgbGV0ICgpID0gY2xlYXIgYSBpblxuICAgIG91dHB1dFxuICBpblxuICBzb3J0XG5cbmxldCBtYXBfb3B0IGYgb3B0ID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGluaXRpYWxfYnVmZmVyX3NpemUgPSAweDEwMDBcblxubGV0IHdyaXRlX3RvX2NoYW5uZWwgZiBkIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICBsZXQgKCkgPSBmIGIgeCBpblxuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBkIGJcblxubGV0IHN0cmluZ19vZl93cml0ZSBmID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIGxldCAoKSA9IGYgb2IgeCBpblxuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfb2Zfc3RyaW5nIGYgeCA9XG4gIGxldCBsZXhfc3QgPSBZb2pzb24uQmFzaWMuaW5pdF9sZXhlciAoKSBpblxuICBsZXQgbGV4X2J1ZiA9IExleGluZy5mcm9tX3N0cmluZyB4IGluXG4gIGYgbGV4X3N0IGxleF9idWZcblxubGV0IHJlYWRfYmV0d2Vlbl9zcGFjZXMgZiBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCB4ID0gZiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBsZXhfc3QgbGV4X2J1ZiBpblxuICB4XG5cbmxldCByZWFkX25leHRfaXRlbSBmIHN0IGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBzdCBiIGluXG4gIHJlYWRfYmV0d2Vlbl9zcGFjZXMgZiBzdCBiXG5cbmxldCBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBzID1cbiAgXCJOb3QgYSBjb3JyZWN0IGBcIiBeIHMgXiBcImA6IGNvdWxkbid0IGltcG9ydCBmcm9tIGpzb24uXCJcblxubGV0IG9mX3N0cmluZyAocyA6IHN0cmluZykgPSBgU3RyaW5nIHNcblxubGV0IHRvX3N0cmluZyA/KGVycm9yX21zZyA9IGV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwic3RyaW5nXCIpID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIChzIDogc3RyaW5nKSAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX2ludCAocyA6IGludCkgPSBgSW50IHNcblxubGV0IHRvX2ludCA/KGVycm9yX21zZyA9IGV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiaW50XCIpID0gZnVuY3Rpb25cbiAgfCBgSW50IChzIDogaW50KSAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX2Jvb2wgKHMgOiBib29sKSA9XG4gIGBTdHJpbmdcbiAgICAoaWYgcyB0aGVuXG4gICAgICAgXCJ0cnVlXCJcbiAgICAgZWxzZVxuICAgICAgIFwiZmFsc2VcIilcblxubGV0IHRvX2Jvb2wgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImJvb2xlYW5cIikgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IGBTdHJpbmcgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX3VuaXQgKCkgPSBgTnVsbFxuXG5sZXQgdG9fdW5pdCA/KGVycm9yX21zZyA9IGV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwidW5pdFwiKSA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gKClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2Zfb3B0aW9uIHRvX2pzb24gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIHggLT5cbiAgICAobWF0Y2ggdG9fanNvbiB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IGZhaWx3aXRoIFwiYW1iaWd1b3VzIEpzb25VdGlsLm9mX29wdGlvblwiXG4gICAgfCB4IC0+IHgpXG5cbmxldCB0b19vcHRpb24gPSBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cblxubGV0IHdyaXRlX29wdGlvbiBmIG9iID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG9iICgpXG4gIHwgU29tZSB4IC0+IGYgb2IgeFxuXG5sZXQgcmVhZF9vcHRpb24gZiBwIGxiID1cbiAgaWYgWW9qc29uLkJhc2ljLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIChmIHAgbGIpXG5cbmxldCBvZl9saXN0IHRvX2pzb24gbCA9IGBMaXN0IChMaXN0LnJldl9tYXAgdG9fanNvbiAoTGlzdC5yZXYgbCkpXG5cbmxldCB0b19saXN0ID8oZXJyb3JfbXNnID0gZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJsaXN0XCIpIG9mX2pzb24gPVxuICBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMgeCAtPlxuICAgICh0cnkgTGlzdC5yZXZfbWFwIG9mX2pzb24gKExpc3QucmV2IGwpXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCBgTnVsbCAtPiBbXVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9jb21tYSBvYiA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyBpdGVyMiBmX2VsdCB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgIHdyaXRlX2NvbW1hIHg7XG4gICAgZl9lbHQgeCB5O1xuICAgIGl0ZXIyIGZfZWx0IHggbFxuXG5sZXQgd3JpdGVfbGlzdCBmIG9iIGwgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeSA6OiBsIC0+XG4gICAgICBmIG9iIHk7XG4gICAgICBpdGVyMiBmIG9iIGxcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgb2ZfYXJyYXkgdG9fanNvbiBhID1cbiAgYExpc3QgKEFycmF5LmZvbGRfcmlnaHQgKGZ1biB4IGFjYyAtPiB0b19qc29uIHggOjogYWNjKSBhIFtdKVxuXG5sZXQgdG9fYXJyYXkgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImFycmF5XCIpIG9mX2pzb24gPVxuICBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3Qgb2ZfanNvbiBsXG4gIHwgYE51bGwgLT4gW3x8XVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9hcnJheSBmIG9iIGwgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9IGlmIEFycmF5Lmxlbmd0aCBsID4gMCB0aGVuIGYgb2IgbC4oMCkgaW5cbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIGxldCAoKSA9IHdyaXRlX2NvbW1hIG9iIGluXG4gICAgICAgIGYgb2IgbC4oc3VjYyBpKSlcbiAgICAgIChwcmVkIChBcnJheS5sZW5ndGggbCkpXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHJlYyBpdGVyX3NlcSBvYiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBmIDo6IHEgLT5cbiAgICBsZXQgKCkgPSB3cml0ZV9jb21tYSBvYiBpblxuICAgIGxldCAoKSA9IGYgb2IgaW5cbiAgICBpdGVyX3NlcSBvYiBxXG5cbmxldCB3cml0ZV9zZXF1ZW5jZSBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IGYgOjogcSAtPlxuICAgICAgbGV0ICgpID0gZiBvYiBpblxuICAgICAgaXRlcl9zZXEgb2IgcVxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWFkX3ZhcmlhbnQgcmVhZF9pZCByZWFkIHN0IGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sYnIgc3QgYiBpblxuICBsZXQgY3N0ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyByZWFkX2lkIHN0IGIgaW5cbiAgbGV0IG91dCA9IHJlYWQgc3QgYiBjc3QgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfcmJyIHN0IGIgaW5cbiAgb3V0XG5cbmxldCBzbWFydF9hc3NvYyBsID1cbiAgYEFzc29jXG4gICAgKExpc3QucmV2XG4gICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgXywgKGBOdWxsIHwgYEFzc29jIFtdIHwgYExpc3QgW10pIC0+IGFjY1xuICAgICAgICAgICAgfCB4IC0+IHggOjogYWNjKVxuICAgICAgICAgIFtdIGwpKVxuXG5sZXQgb2ZfYXNzb2MgdG9fanNvbiBsID0gYEFzc29jIChMaXN0LnJldl9tYXAgdG9fanNvbiAoTGlzdC5yZXYgbCkpXG5cbmxldCB0b19hc3NvYyA/KGVycm9yX21zZyA9IGV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiYXNzb2NpYXRpb25cIikgb2ZfanNvblxuICAgIGpzb24gPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeSBMaXN0LnJldl9tYXAgb2ZfanNvbiAoTGlzdC5yZXYgbClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IGBOdWxsIC0+IFtdXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2ZpZWxkIG5hIGYgb2IgeCA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgbmEgaW5cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICc6JyBpblxuICBmIG9iIHhcblxubGV0IG9mX3BhaXIgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSB0b19qc29uMSB0b19qc29uMiAoYSwgYikgPVxuICBgQXNzb2MgWyBsYWIxLCB0b19qc29uMSBhOyBsYWIyLCB0b19qc29uMiBiIF1cblxubGV0IHRvX3RyaXBsZSA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpID8obGFiMyA9IFwidGhpcmRcIilcbiAgICA/KGVycm9yX21zZyA9IGV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwidHJpcGxlXCIpIG9mX2pzb24xIG9mX2pzb24yXG4gICAgb2ZfanNvbjMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICAoIG9mX2pzb24xIChMaXN0LmFzc29jIGxhYjEgbCksXG4gICAgICAgICBvZl9qc29uMiAoTGlzdC5hc3NvYyBsYWIyIGwpLFxuICAgICAgICAgb2ZfanNvbjMgKExpc3QuYXNzb2MgbGFiMyBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfdHJpcGxlID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgPyhsYWIzID0gXCJ0aGlyZFwiKSB0b19qc29uMVxuICAgIHRvX2pzb24yIHRvX2pzb24zIChhLCBiLCBjKSA9XG4gIGBBc3NvYyBbIGxhYjEsIHRvX2pzb24xIGE7IGxhYjIsIHRvX2pzb24yIGI7IGxhYjMsIHRvX2pzb24zIGMgXVxuXG5sZXQgdG9fcGFpciA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInBhaXJcIikgb2ZfanNvbjEgb2ZfanNvbjIgPVxuICBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnkgb2ZfanNvbjEgKExpc3QuYXNzb2MgbGFiMSBsKSwgb2ZfanNvbjIgKExpc3QuYXNzb2MgbGFiMiBsKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2NvbXBhY3RfcGFpciBmIGcgb2IgKHgsIHkpID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPSBmIG9iIHggaW5cbiAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gZyBvYiB5IGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHJlYWRfY29tcGFjdF9wYWlyIGYgZyBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHN0IGIgaW5cbiAgbGV0IHggPSByZWFkX2JldHdlZW5fc3BhY2VzIGYgc3QgYiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBzdCBiIGluXG4gIGxldCB5ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyBnIHN0IGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfcmJyIHN0IGIgaW5cbiAgeCwgeVxuXG5sZXQgY29tcGFjdF90b19wYWlyIGYgZyA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyB4OyB5IF0gLT4gZiB4LCBnIHlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvbXBhY3QgcGFpclwiLCB4KSlcblxubGV0IG9mX21hcCA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIikgfmZvbGQga2V5X3RvX2pzb25cbiAgICB2YWx1ZV90b19qc29uIG1hcCA9XG4gIGBMaXN0XG4gICAgKExpc3QucmV2XG4gICAgICAgKGZvbGRcbiAgICAgICAgICAoZnVuIChrZXkgOiAna2V5KSAodmFsdWUgOiAndmFsdWUpIChsaXN0IDogWW9qc29uLkJhc2ljLnQgbGlzdCkgLT5cbiAgICAgICAgICAgIGBBc3NvYyBbIGxhYl9rZXksIGtleV90b19qc29uIGtleTsgbGFiX3ZhbHVlLCB2YWx1ZV90b19qc29uIHZhbHVlIF1cbiAgICAgICAgICAgIDo6IGxpc3QpXG4gICAgICAgICAgbWFwIFtdKSlcblxubGV0IHRvX21hcCA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIilcbiAgICA/KGVycm9yX21zZyA9IGV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibWFwXCIpIH5hZGQgfmVtcHR5IGpzb25fdG9fa2V5XG4gICAganNvbl90b192YWx1ZSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1hcCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBhZGRcbiAgICAgICAgICAgICAgIChqc29uX3RvX2tleSAoTGlzdC5hc3NvYyBsYWJfa2V5IGwpKVxuICAgICAgICAgICAgICAgKGpzb25fdG9fdmFsdWUgKExpc3QuYXNzb2MgbGFiX3ZhbHVlIGwpKVxuICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICAgICAgZW1wdHkgbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl91bml4X2xhYmVsID0gZnVuY3Rpb25cbiAgfCBVbml4TGFiZWxzLkUyQklHIC0+IGBBc3NvYyBbIFwiRTJCSUdcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFDQ0VTIC0+IGBBc3NvYyBbIFwiRUFDQ0VTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBR0FJTiAtPiBgQXNzb2MgWyBcIkVBR0FJTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQkFERiAtPiBgQXNzb2MgWyBcIkVCQURGXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVCVVNZIC0+IGBBc3NvYyBbIFwiRUJVU1lcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNISUxEIC0+IGBBc3NvYyBbIFwiRUNISUxEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVERUFETEsgLT4gYEFzc29jIFsgXCJFREVBRExLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVET00gLT4gYEFzc29jIFsgXCJFRE9NXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVFWElTVCAtPiBgQXNzb2MgWyBcIkVFWElTVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRkFVTFQgLT4gYEFzc29jIFsgXCJFRkFVTFRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUZCSUcgLT4gYEFzc29jIFsgXCJFRkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5UUiAtPiBgQXNzb2MgWyBcIkVJTlRSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlZBTCAtPiBgQXNzb2MgWyBcIkVJTlZBTFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU8gLT4gYEFzc29jIFsgXCJFSU9cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlTRElSIC0+IGBBc3NvYyBbIFwiRUlTRElSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVNRklMRSAtPiBgQXNzb2MgWyBcIkVNRklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTUxJTksgLT4gYEFzc29jIFsgXCJFTUxJTktcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5BTUVUT09MT05HIC0+IGBBc3NvYyBbIFwiRU5BTUVUT09MT05HXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORklMRSAtPiBgQXNzb2MgWyBcIkVORklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9ERVYgLT4gYEFzc29jIFsgXCJFTk9ERVZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PRU5UIC0+IGBBc3NvYyBbIFwiRU5PRU5UXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0VYRUMgLT4gYEFzc29jIFsgXCJFTk9FWEVDXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0xDSyAtPiBgQXNzb2MgWyBcIkVOT0xDS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9NRU0gLT4gYEFzc29jIFsgXCJFTk9NRU1cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PU1BDIC0+IGBBc3NvYyBbIFwiRU5PU1BDXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1NZUyAtPiBgQXNzb2MgWyBcIkVOT1NZU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9URElSIC0+IGBBc3NvYyBbIFwiRU5PVERJUlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9URU1QVFkgLT4gYEFzc29jIFsgXCJFTk9URU1QVFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVFRZIC0+IGBBc3NvYyBbIFwiRU5PVFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOWElPIC0+IGBBc3NvYyBbIFwiRU5YSU9cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBFUk0gLT4gYEFzc29jIFsgXCJFUEVSTVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUElQRSAtPiBgQXNzb2MgWyBcIkVQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVSQU5HRSAtPiBgQXNzb2MgWyBcIkVSQU5HRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUk9GUyAtPiBgQXNzb2MgWyBcIkVST0ZTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTUElQRSAtPiBgQXNzb2MgWyBcIkVTUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU1JDSCAtPiBgQXNzb2MgWyBcIkVTUkNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVYREVWIC0+IGBBc3NvYyBbIFwiRVhERVZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVdPVUxEQkxPQ0sgLT4gYEFzc29jIFsgXCJFV09VTERCTE9DS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5QUk9HUkVTUyAtPiBgQXNzb2MgWyBcIkVJTlBST0dSRVNTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBTFJFQURZIC0+IGBBc3NvYyBbIFwiRUFMUkVBRFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVFNPQ0sgLT4gYEFzc29jIFsgXCJFTk9UU09DS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FREVTVEFERFJSRVEgLT4gYEFzc29jIFsgXCJFREVTVEFERFJSRVFcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU1TR1NJWkUgLT4gYEFzc29jIFsgXCJFTVNHU0laRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUFJPVE9UWVBFIC0+IGBBc3NvYyBbIFwiRVBST1RPVFlQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9QUk9UT09QVCAtPiBgQXNzb2MgWyBcIkVOT1BST1RPT1BUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQUk9UT05PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU09DS1ROT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU9QTk9UU1VQUCAtPiBgQXNzb2MgWyBcIkVPUE5PVFNVUFBcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUREUklOVVNFIC0+IGBBc3NvYyBbIFwiRUFERFJJTlVTRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUREUk5PVEFWQUlMIC0+IGBBc3NvYyBbIFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkVURE9XTiAtPiBgQXNzb2MgWyBcIkVORVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORVRVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5FVFJFU0VUIC0+IGBBc3NvYyBbIFwiRU5FVFJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OQUJPUlRFRCAtPiBgQXNzb2MgWyBcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ09OTlJFU0VUIC0+IGBBc3NvYyBbIFwiRUNPTk5SRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9CVUZTIC0+IGBBc3NvYyBbIFwiRU5PQlVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSVNDT05OIC0+IGBBc3NvYyBbIFwiRUlTQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UQ09OTiAtPiBgQXNzb2MgWyBcIkVOT1RDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTSFVURE9XTiAtPiBgQXNzb2MgWyBcIkVTSFVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FVE9PTUFOWVJFRlMgLT4gYEFzc29jIFsgXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVRJTUVET1VUIC0+IGBBc3NvYyBbIFwiRVRJTUVET1VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OUkVGVVNFRCAtPiBgQXNzb2MgWyBcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSE9TVERPV04gLT4gYEFzc29jIFsgXCJFSE9TVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUhPU1RVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVMT09QIC0+IGBBc3NvYyBbIFwiRUxPT1BcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU9WRVJGTE9XIC0+IGBBc3NvYyBbIFwiRU9WRVJGTE9XXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVVTktOT1dORVJSIGludCAtPiBgQXNzb2MgWyBcIkVVTktOT1dORVJSXCIsIG9mX2ludCBpbnQgXVxuXG5sZXQgKHRvX3VuaXhfbGFiZWwgOiBZb2pzb24uQmFzaWMudCAtPiBVbml4TGFiZWxzLmVycm9yKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiRTJCSUdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FMkJJR1xuICB8IGBBc3NvYyBbIChcIkVBQ0NFU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBQ0NFU1xuICB8IGBBc3NvYyBbIChcIkVBR0FJTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBR0FJTlxuICB8IGBBc3NvYyBbIChcIkVCQURGXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUJBREZcbiAgfCBgQXNzb2MgWyAoXCJFQlVTWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVCVVNZXG4gIHwgYEFzc29jIFsgKFwiRUNISUxEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNISUxEXG4gIHwgYEFzc29jIFsgKFwiRURFQURMS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVERUFETEtcbiAgfCBgQXNzb2MgWyAoXCJFRE9NXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRURPTVxuICB8IGBBc3NvYyBbIChcIkVFWElTVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVFWElTVFxuICB8IGBBc3NvYyBbIChcIkVGQVVMVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVGQVVMVFxuICB8IGBBc3NvYyBbIChcIkVGQklHXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUZCSUdcbiAgfCBgQXNzb2MgWyAoXCJFSU5UUlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlRSXG4gIHwgYEFzc29jIFsgKFwiRUlOVkFMXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOVkFMXG4gIHwgYEFzc29jIFsgKFwiRUlPXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlPXG4gIHwgYEFzc29jIFsgKFwiRUlTRElSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlTRElSXG4gIHwgYEFzc29jIFsgKFwiRU1GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU1MSU5LXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1MSU5LXG4gIHwgYEFzc29jIFsgKFwiRU5BTUVUT09MT05HXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5BTUVUT09MT05HXG4gIHwgYEFzc29jIFsgKFwiRU5GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU5PREVWXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PREVWXG4gIHwgYEFzc29jIFsgKFwiRU5PRU5UXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PRU5UXG4gIHwgYEFzc29jIFsgKFwiRU5PRVhFQ1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0VYRUNcbiAgfCBgQXNzb2MgWyAoXCJFTk9MQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9MQ0tcbiAgfCBgQXNzb2MgWyAoXCJFTk9NRU1cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9NRU1cbiAgfCBgQXNzb2MgWyAoXCJFTk9TUENcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9TUENcbiAgfCBgQXNzb2MgWyAoXCJFTk9TWVNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9TWVNcbiAgfCBgQXNzb2MgWyAoXCJFTk9URElSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVERJUlxuICB8IGBBc3NvYyBbIChcIkVOT1RFTVBUWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RFTVBUWVxuICB8IGBBc3NvYyBbIChcIkVOT1RUWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RUWVxuICB8IGBBc3NvYyBbIChcIkVOWElPXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5YSU9cbiAgfCBgQXNzb2MgWyAoXCJFUEVSTVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQRVJNXG4gIHwgYEFzc29jIFsgKFwiRVBJUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUElQRVxuICB8IGBBc3NvYyBbIChcIkVSQU5HRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVSQU5HRVxuICB8IGBBc3NvYyBbIChcIkVST0ZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVJPRlNcbiAgfCBgQXNzb2MgWyAoXCJFU1BJUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU1BJUEVcbiAgfCBgQXNzb2MgWyAoXCJFU1JDSFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTUkNIXG4gIHwgYEFzc29jIFsgKFwiRVhERVZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FWERFVlxuICB8IGBBc3NvYyBbIChcIkVXT1VMREJMT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVdPVUxEQkxPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlBST0dSRVNTXG4gIHwgYEFzc29jIFsgKFwiRUFMUkVBRFlcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUxSRUFEWVxuICB8IGBBc3NvYyBbIChcIkVOT1RTT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVFNPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFREVTVEFERFJSRVFcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FREVTVEFERFJSRVFcbiAgfCBgQXNzb2MgWyAoXCJFTVNHU0laRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVNU0dTSVpFXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPVFlQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQUk9UT1RZUEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9QUk9UT09QVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1BST1RPT1BUXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBST1RPTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNPQ0tUTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRU9QTk9UU1VQUFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVPUE5PVFNVUFBcbiAgfCBgQXNzb2MgWyAoXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUEZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUREUklOVVNFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFERFJJTlVTRVxuICB8IGBBc3NvYyBbIChcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUREUk5PVEFWQUlMXG4gIHwgYEFzc29jIFsgKFwiRU5FVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVORVRVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5FVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTkVUUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVUUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTkFCT1JURURcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTkFCT1JURURcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5SRVNFVFxuICB8IGBBc3NvYyBbIChcIkVOT0JVRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9CVUZTXG4gIHwgYEFzc29jIFsgKFwiRUlTQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJU0NPTk5cbiAgfCBgQXNzb2MgWyAoXCJFTk9UQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RDT05OXG4gIHwgYEFzc29jIFsgKFwiRVNIVVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNIVVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRVRPT01BTllSRUZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVRPT01BTllSRUZTXG4gIHwgYEFzc29jIFsgKFwiRVRJTUVET1VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVRJTUVET1VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5SRUZVU0VEXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUhPU1RET1dOXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUhPU1RVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRUxPT1BcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTE9PUFxuICB8IGBBc3NvYyBbIChcIkVPVkVSRkxPV1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVPVkVSRkxPV1xuICB8IGBBc3NvYyBbIChcIkVVTktOT1dORVJSXCIsIGludCkgXSAtPiBVbml4TGFiZWxzLkVVTktOT1dORVJSICh0b19pbnQgaW50KVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChleG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInVuaXggbGFiZWxzIGVycm9yXCIsIHgpKVxuXG5sZXQgb2ZfdW5peF9lcnJvciA9IGZ1bmN0aW9uXG4gIHwgVW5peC5FMkJJRyAtPiBgQXNzb2MgWyBcIkUyQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBQ0NFUyAtPiBgQXNzb2MgWyBcIkVBQ0NFU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUdBSU4gLT4gYEFzc29jIFsgXCJFQUdBSU5cIiwgYE51bGwgXVxuICB8IFVuaXguRUJBREYgLT4gYEFzc29jIFsgXCJFQkFERlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQlVTWSAtPiBgQXNzb2MgWyBcIkVCVVNZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDSElMRCAtPiBgQXNzb2MgWyBcIkVDSElMRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FREVBRExLIC0+IGBBc3NvYyBbIFwiRURFQURMS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FRE9NIC0+IGBBc3NvYyBbIFwiRURPTVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FRVhJU1QgLT4gYEFzc29jIFsgXCJFRVhJU1RcIiwgYE51bGwgXVxuICB8IFVuaXguRUZBVUxUIC0+IGBBc3NvYyBbIFwiRUZBVUxUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVGQklHIC0+IGBBc3NvYyBbIFwiRUZCSUdcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOVFIgLT4gYEFzc29jIFsgXCJFSU5UUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5WQUwgLT4gYEFzc29jIFsgXCJFSU5WQUxcIiwgYE51bGwgXVxuICB8IFVuaXguRUlPIC0+IGBBc3NvYyBbIFwiRUlPXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJU0RJUiAtPiBgQXNzb2MgWyBcIkVJU0RJUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTUZJTEUgLT4gYEFzc29jIFsgXCJFTUZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU1MSU5LIC0+IGBBc3NvYyBbIFwiRU1MSU5LXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOQU1FVE9PTE9ORyAtPiBgQXNzb2MgWyBcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkZJTEUgLT4gYEFzc29jIFsgXCJFTkZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PREVWIC0+IGBBc3NvYyBbIFwiRU5PREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0VOVCAtPiBgQXNzb2MgWyBcIkVOT0VOVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9FWEVDIC0+IGBBc3NvYyBbIFwiRU5PRVhFQ1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9MQ0sgLT4gYEFzc29jIFsgXCJFTk9MQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PTUVNIC0+IGBBc3NvYyBbIFwiRU5PTUVNXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1NQQyAtPiBgQXNzb2MgWyBcIkVOT1NQQ1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9TWVMgLT4gYEFzc29jIFsgXCJFTk9TWVNcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVERJUiAtPiBgQXNzb2MgWyBcIkVOT1RESVJcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVEVNUFRZIC0+IGBBc3NvYyBbIFwiRU5PVEVNUFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RUWSAtPiBgQXNzb2MgWyBcIkVOT1RUWVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTlhJTyAtPiBgQXNzb2MgWyBcIkVOWElPXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQRVJNIC0+IGBBc3NvYyBbIFwiRVBFUk1cIiwgYE51bGwgXVxuICB8IFVuaXguRVBJUEUgLT4gYEFzc29jIFsgXCJFUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUkFOR0UgLT4gYEFzc29jIFsgXCJFUkFOR0VcIiwgYE51bGwgXVxuICB8IFVuaXguRVJPRlMgLT4gYEFzc29jIFsgXCJFUk9GU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FU1BJUEUgLT4gYEFzc29jIFsgXCJFU1BJUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRVNSQ0ggLT4gYEFzc29jIFsgXCJFU1JDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FWERFViAtPiBgQXNzb2MgWyBcIkVYREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVXT1VMREJMT0NLIC0+IGBBc3NvYyBbIFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOUFJPR1JFU1MgLT4gYEFzc29jIFsgXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUxSRUFEWSAtPiBgQXNzb2MgWyBcIkVBTFJFQURZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RTT0NLIC0+IGBBc3NvYyBbIFwiRU5PVFNPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRURFU1RBRERSUkVRIC0+IGBBc3NvYyBbIFwiRURFU1RBRERSUkVRXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVNU0dTSVpFIC0+IGBBc3NvYyBbIFwiRU1TR1NJWkVcIiwgYE51bGwgXVxuICB8IFVuaXguRVBST1RPVFlQRSAtPiBgQXNzb2MgWyBcIkVQUk9UT1RZUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PUFJPVE9PUFQgLT4gYEFzc29jIFsgXCJFTk9QUk9UT09QVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUFJPVE9OT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRVNPQ0tUTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVPUE5PVFNVUFAgLT4gYEFzc29jIFsgXCJFT1BOT1RTVVBQXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRUFERFJJTlVTRSAtPiBgQXNzb2MgWyBcIkVBRERSSU5VU0VcIiwgYE51bGwgXVxuICB8IFVuaXguRUFERFJOT1RBVkFJTCAtPiBgQXNzb2MgWyBcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwgXVxuICB8IFVuaXguRU5FVERPV04gLT4gYEFzc29jIFsgXCJFTkVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkVUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVORVRVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORVRSRVNFVCAtPiBgQXNzb2MgWyBcIkVORVRSRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTkFCT1JURUQgLT4gYEFzc29jIFsgXCJFQ09OTkFCT1JURURcIiwgYE51bGwgXVxuICB8IFVuaXguRUNPTk5SRVNFVCAtPiBgQXNzb2MgWyBcIkVDT05OUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PQlVGUyAtPiBgQXNzb2MgWyBcIkVOT0JVRlNcIiwgYE51bGwgXVxuICB8IFVuaXguRUlTQ09OTiAtPiBgQXNzb2MgWyBcIkVJU0NPTk5cIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVENPTk4gLT4gYEFzc29jIFsgXCJFTk9UQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU0hVVERPV04gLT4gYEFzc29jIFsgXCJFU0hVVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXguRVRPT01BTllSRUZTIC0+IGBBc3NvYyBbIFwiRVRPT01BTllSRUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVUSU1FRE9VVCAtPiBgQXNzb2MgWyBcIkVUSU1FRE9VVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTlJFRlVTRUQgLT4gYEFzc29jIFsgXCJFQ09OTlJFRlVTRURcIiwgYE51bGwgXVxuICB8IFVuaXguRUhPU1RET1dOIC0+IGBBc3NvYyBbIFwiRUhPU1RET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVIT1NUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTE9PUCAtPiBgQXNzb2MgWyBcIkVMT09QXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVPVkVSRkxPVyAtPiBgQXNzb2MgWyBcIkVPVkVSRkxPV1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FVU5LTk9XTkVSUiBpbnQgLT4gYEFzc29jIFsgXCJFVU5LTk9XTkVSUlwiLCBvZl9pbnQgaW50IF1cblxubGV0ICh0b191bml4X2Vycm9yIDogWW9qc29uLkJhc2ljLnQgLT4gVW5peC5lcnJvcikgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcIkUyQklHXCIsIGBOdWxsKSBdIC0+IFVuaXguRTJCSUdcbiAgfCBgQXNzb2MgWyAoXCJFQUNDRVNcIiwgYE51bGwpIF0gLT4gVW5peC5FQUNDRVNcbiAgfCBgQXNzb2MgWyAoXCJFQUdBSU5cIiwgYE51bGwpIF0gLT4gVW5peC5FQUdBSU5cbiAgfCBgQXNzb2MgWyAoXCJFQkFERlwiLCBgTnVsbCkgXSAtPiBVbml4LkVCQURGXG4gIHwgYEFzc29jIFsgKFwiRUJVU1lcIiwgYE51bGwpIF0gLT4gVW5peC5FQlVTWVxuICB8IGBBc3NvYyBbIChcIkVDSElMRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDSElMRFxuICB8IGBBc3NvYyBbIChcIkVERUFETEtcIiwgYE51bGwpIF0gLT4gVW5peC5FREVBRExLXG4gIHwgYEFzc29jIFsgKFwiRURPTVwiLCBgTnVsbCkgXSAtPiBVbml4LkVET01cbiAgfCBgQXNzb2MgWyAoXCJFRVhJU1RcIiwgYE51bGwpIF0gLT4gVW5peC5FRVhJU1RcbiAgfCBgQXNzb2MgWyAoXCJFRkFVTFRcIiwgYE51bGwpIF0gLT4gVW5peC5FRkFVTFRcbiAgfCBgQXNzb2MgWyAoXCJFRkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4LkVGQklHXG4gIHwgYEFzc29jIFsgKFwiRUlOVFJcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5UUlxuICB8IGBBc3NvYyBbIChcIkVJTlZBTFwiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlZBTFxuICB8IGBBc3NvYyBbIChcIkVJT1wiLCBgTnVsbCkgXSAtPiBVbml4LkVJT1xuICB8IGBBc3NvYyBbIChcIkVJU0RJUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJU0RJUlxuICB8IGBBc3NvYyBbIChcIkVNRklMRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVNRklMRVxuICB8IGBBc3NvYyBbIChcIkVNTElOS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVNTElOS1xuICB8IGBBc3NvYyBbIChcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOQU1FVE9PTE9OR1xuICB8IGBBc3NvYyBbIChcIkVORklMRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVORklMRVxuICB8IGBBc3NvYyBbIChcIkVOT0RFVlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0RFVlxuICB8IGBBc3NvYyBbIChcIkVOT0VOVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0VOVFxuICB8IGBBc3NvYyBbIChcIkVOT0VYRUNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9FWEVDXG4gIHwgYEFzc29jIFsgKFwiRU5PTENLXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PTENLXG4gIHwgYEFzc29jIFsgKFwiRU5PTUVNXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PTUVNXG4gIHwgYEFzc29jIFsgKFwiRU5PU1BDXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PU1BDXG4gIHwgYEFzc29jIFsgKFwiRU5PU1lTXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PU1lTXG4gIHwgYEFzc29jIFsgKFwiRU5PVERJUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RESVJcbiAgfCBgQXNzb2MgWyAoXCJFTk9URU1QVFlcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9URU1QVFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UVFlcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UVFlcbiAgfCBgQXNzb2MgWyAoXCJFTlhJT1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOWElPXG4gIHwgYEFzc29jIFsgKFwiRVBFUk1cIiwgYE51bGwpIF0gLT4gVW5peC5FUEVSTVxuICB8IGBBc3NvYyBbIChcIkVQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBJUEVcbiAgfCBgQXNzb2MgWyAoXCJFUkFOR0VcIiwgYE51bGwpIF0gLT4gVW5peC5FUkFOR0VcbiAgfCBgQXNzb2MgWyAoXCJFUk9GU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVST0ZTXG4gIHwgYEFzc29jIFsgKFwiRVNQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVNSQ0hcIiwgYE51bGwpIF0gLT4gVW5peC5FU1JDSFxuICB8IGBBc3NvYyBbIChcIkVYREVWXCIsIGBOdWxsKSBdIC0+IFVuaXguRVhERVZcbiAgfCBgQXNzb2MgWyAoXCJFV09VTERCTE9DS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVXT1VMREJMT0NLXG4gIHwgYEFzc29jIFsgKFwiRUlOUFJPR1JFU1NcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5QUk9HUkVTU1xuICB8IGBBc3NvYyBbIChcIkVBTFJFQURZXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFMUkVBRFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UU09DS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RTT0NLXG4gIHwgYEFzc29jIFsgKFwiRURFU1RBRERSUkVRXCIsIGBOdWxsKSBdIC0+IFVuaXguRURFU1RBRERSUkVRXG4gIHwgYEFzc29jIFsgKFwiRU1TR1NJWkVcIiwgYE51bGwpIF0gLT4gVW5peC5FTVNHU0laRVxuICB8IGBBc3NvYyBbIChcIkVQUk9UT1RZUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FUFJPVE9UWVBFXG4gIHwgYEFzc29jIFsgKFwiRU5PUFJPVE9PUFRcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9QUk9UT09QVFxuICB8IGBBc3NvYyBbIChcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVQUk9UT05PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVTT0NLVE5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVPUE5PVFNVUFBcIiwgYE51bGwpIF0gLT4gVW5peC5FT1BOT1RTVVBQXG4gIHwgYEFzc29jIFsgKFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFERFJJTlVTRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVBRERSSU5VU0VcbiAgfCBgQXNzb2MgWyAoXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFERFJOT1RBVkFJTFxuICB8IGBBc3NvYyBbIChcIkVORVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVORVRVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRU5FVFJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVFJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5BQk9SVEVEXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFTk9CVUZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PQlVGU1xuICB8IGBBc3NvYyBbIChcIkVJU0NPTk5cIiwgYE51bGwpIF0gLT4gVW5peC5FSVNDT05OXG4gIHwgYEFzc29jIFsgKFwiRU5PVENPTk5cIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UQ09OTlxuICB8IGBBc3NvYyBbIChcIkVTSFVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVTSFVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVUT09NQU5ZUkVGU1xuICB8IGBBc3NvYyBbIChcIkVUSU1FRE9VVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVUSU1FRE9VVFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OUkVGVVNFRFxuICB8IGBBc3NvYyBbIChcIkVIT1NURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVIT1NURE9XTlxuICB8IGBBc3NvYyBbIChcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVIT1NUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVMT09QXCIsIGBOdWxsKSBdIC0+IFVuaXguRUxPT1BcbiAgfCBgQXNzb2MgWyAoXCJFT1ZFUkZMT1dcIiwgYE51bGwpIF0gLT4gVW5peC5FT1ZFUkZMT1dcbiAgfCBgQXNzb2MgWyAoXCJFVU5LTk9XTkVSUlwiLCBpbnQpIF0gLT4gVW5peC5FVU5LTk9XTkVSUiAodG9faW50IGludClcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJ1bml4IGVycm9yXCIsIHgpKVxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIFlvanNvbi5CYXNpYy53cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogQXJyYXkgd2l0aCBkeW5hbWljIHNpemVcblxuICAgIEl0IHVzZXMgaW1wZXJhdGl2ZSBzdHlsZXMgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBtb2R1bGVzICopXG5cbm1vZHVsZSBEeW5BcnJheSA9XG5mdW5jdG9yXG4gIChHIDogR2VuQXJyYXkuR2VuQXJyYXkpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IHtcbiAgICAgICAgbXV0YWJsZSBhcnJheTogJ2EgRy50O1xuICAgICAgICBtdXRhYmxlIGN1cnJlbnRfc2l6ZTogaW50O1xuICAgICAgICBkZWZhdWx0OiBpbnQgLT4gJ2E7XG4gICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGUgbiBhID1cbiAgICAgICAgeyBhcnJheSA9IEcuY3JlYXRlIG4gYTsgY3VycmVudF9zaXplID0gbjsgZGVmYXVsdCA9IChmdW4gXyAtPiBhKSB9XG5cbiAgICAgIGxldCBsZW5ndGggYSA9IGEuY3VycmVudF9zaXplXG5cbiAgICAgIGxldCBleHBhbmQgdCA9XG4gICAgICAgIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgbGV0IG4nID0gbWF4IChuICsgMSkgKG4gKiAyKSBpblxuICAgICAgICBsZXQgYXJyYXknID0gRy5pbml0IG4nIHQuZGVmYXVsdCBpblxuICAgICAgICBsZXQgKCkgPSBHLmJsaXQgdC5hcnJheSAwIGFycmF5JyAwIG4gaW5cbiAgICAgICAgbGV0ICgpID0gdC5hcnJheSA8LSBhcnJheScgaW5cbiAgICAgICAgdC5jdXJyZW50X3NpemUgPC0gbidcblxuICAgICAgbGV0IGdldCBhIGkgPVxuICAgICAgICBpZiBsZW5ndGggYSA+IGkgdGhlblxuICAgICAgICAgIEcuZ2V0IGEuYXJyYXkgaVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYS5kZWZhdWx0IGlcblxuICAgICAgbGV0IHJlYyBzZXQgYSBpIHYgPVxuICAgICAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgICAgIGlmIG4gPiBpIHRoZW5cbiAgICAgICAgICBHLnNldCBhLmFycmF5IGkgdlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBleHBhbmQgYSBpblxuICAgICAgICAgIHNldCBhIGkgdlxuICAgICAgICApXG5cbiAgICAgIGxldCBtYWtlID0gY3JlYXRlXG4gICAgICBsZXQgaW5pdCBuIGYgPSB7IGFycmF5ID0gRy5pbml0IG4gZjsgY3VycmVudF9zaXplID0gbjsgZGVmYXVsdCA9IGYgfVxuXG4gICAgICBsZXQgYXBwZW5kIGEgYiA9XG4gICAgICAgIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gICAgICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgICAgIGxldCBjID0gbGEgKyBsYiBpblxuICAgICAgICBpbml0IGMgKGZ1biB4IC0+XG4gICAgICAgICAgICBpZiB4IDwgbGEgdGhlblxuICAgICAgICAgICAgICBnZXQgYSB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGdldCBiICh4IC0gbGEpKVxuXG4gICAgICBsZXQgY29uY2F0IGwgPVxuICAgICAgICBsZXQgbCA9IExpc3QuZmlsdGVyIChmdW4geCAtPiBsZW5ndGggeCA+IDApIGwgaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEeW5hbWljQXJyYXkuY29uY2F0XCIpXG4gICAgICAgIHwgdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IGVsdCA9IGdldCB0IDAgaW5cbiAgICAgICAgICBsZXQgYyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gc29sIGEgLT4gc29sICsgbGVuZ3RoIGEpIDAgbCBpblxuICAgICAgICAgIGxldCBtID0gY3JlYXRlIGMgZWx0IGluXG4gICAgICAgICAgbGV0IHJlYyBhdXggayBsID1cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgICAgbGV0IHMgPSBsZW5ndGggdCBpblxuICAgICAgICAgICAgICBsZXQgcmVjIGF1eDIgb2Zmc2V0IGsgPVxuICAgICAgICAgICAgICAgIGlmIG9mZnNldCA9IHMgdGhlblxuICAgICAgICAgICAgICAgICAgYXV4IGsgcVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgc2V0IG0gayAoZ2V0IHQgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgIGF1eDIgKG9mZnNldCArIDEpIChrICsgMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGF1eDIgMCBrXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBhdXggMCBsIGluXG4gICAgICAgICAgbVxuXG4gICAgICBsZXQgc3ViIGEgc3RhcnQgbGVuID1cbiAgICAgICAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICAgICAgICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRHluYW1pY19hcnJheS5zdWJcIilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGluaXQgbGVuIChmdW4geCAtPiBnZXQgYSAoeCArIHN0YXJ0KSlcblxuICAgICAgbGV0IGNvcHkgYSA9XG4gICAgICAgIHtcbiAgICAgICAgICBhcnJheSA9IEcuY29weSBhLmFycmF5O1xuICAgICAgICAgIGN1cnJlbnRfc2l6ZSA9IGEuY3VycmVudF9zaXplO1xuICAgICAgICAgIGRlZmF1bHQgPSBhLmRlZmF1bHQ7XG4gICAgICAgIH1cblxuICAgICAgbGV0IGZpbGwgYSBzdGFydCBsZW4geCA9XG4gICAgICAgIGxldCByZWMgYXV4IGsgaSA9XG4gICAgICAgICAgaWYgayA8IGxlbiB0aGVuIChcbiAgICAgICAgICAgIGxldCAoKSA9IHNldCBhIGkgeCBpblxuICAgICAgICAgICAgYXV4IChrICsgMSkgKGkgKyAxKVxuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICAgICAgICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRHluYW1pY19hcnJheS5maWxsXCIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhdXggMCBzdGFydFxuXG4gICAgICBsZXQgb2ZfbGlzdCB+ZGVmYXVsdCBsID1cbiAgICAgICAge1xuICAgICAgICAgIGN1cnJlbnRfc2l6ZSA9IExpc3QubGVuZ3RoIGw7XG4gICAgICAgICAgYXJyYXkgPSBHLm9mX2xpc3QgfmRlZmF1bHQgbDtcbiAgICAgICAgICBkZWZhdWx0ID0gKGZ1biBfIC0+IGRlZmF1bHQpO1xuICAgICAgICB9XG5cbiAgICAgIGxldCBpdGVyIGYgYSA9IEcuaXRlciBmIGEuYXJyYXlcbiAgICAgIGxldCBpdGVyaSBmIGEgPSBHLml0ZXJpIGYgYS5hcnJheVxuICAgICAgbGV0IGZvbGRfbGVmdGkgZiBiIGEgPSBHLmZvbGRfbGVmdGkgZiBiIGEuYXJyYXlcbiAgICAgIGxldCBmb2xkX3JpZ2h0aSBmIGEgYiA9IEcuZm9sZF9yaWdodGkgZiBhLmFycmF5IGJcbiAgICAgIGxldCBtYXAgZiBhID0gaW5pdCAobGVuZ3RoIGEpIChmdW4gaSAtPiBmIChnZXQgYSBpKSlcblxuICAgICAgbGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gICAgICAgIGlmXG4gICAgICAgICAgbGVuIDwgMCB8fCBvZnMxIDwgMFxuICAgICAgICAgIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICB8fCBvZnMyIDwgMFxuICAgICAgICAgIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgICAgICAgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnIFwiRHluYW1pY0FycmF5LmJsaXRcIlxuICAgICAgICBlbHNlIGlmIG9mczEgPCBvZnMyIHRoZW5cbiAgICAgICAgICAoKiBUb3AtZG93biBjb3B5ICopXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICAgICAgICBHLnNldCBhMi5hcnJheSAob2ZzMiArIGkpIChHLmdldCBhMS5hcnJheSAob2ZzMSArIGkpKVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIEJvdHRvbS11cCBjb3B5ICopXG4gICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICAgIEcuc2V0IGEyLmFycmF5IChvZnMyICsgaSkgKEcuZ2V0IGExLmFycmF5IChvZnMxICsgaSkpXG4gICAgICAgICAgZG9uZVxuXG4gICAgICBsZXQgcHJpbnQgP3RyYWlsaW5nIHByX3MgcHJfYSBmIGEgPSBHLnByaW50ID90cmFpbGluZyBwcl9zIHByX2EgZiBhLmFycmF5XG4gICAgZW5kIDpcbiAgICAgIEdlbkFycmF5LkdlbkFycmF5KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gVW5hcnkgb2YgJ2EgYXJyYXkgfCBCaW5hcnkgb2YgJ2EgYXJyYXkgYXJyYXlcblxubGV0IG1heF9hcnJheV9zaXplMSA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICgqIDUgKilcblxubGV0IG1heF9hcnJheV9zaXplMiA9XG4gIGlmIGZsb2F0X29mX2ludCBtYXhfYXJyYXlfc2l6ZTEgPiBzcXJ0IChmbG9hdF9vZl9pbnQgbWF4X2ludCkgdGhlblxuICAgIG1heF9pbnRcbiAgZWxzZVxuICAgIG1heF9hcnJheV9zaXplMSAqIG1heF9hcnJheV9zaXplMVxuXG5sZXQgZXVjbGlkZWVuIHAgcSA9IHAgLyBxLCBwIG1vZCBxXG5cbmxldCBjcmVhdGUgbiBhID1cbiAgaWYgbiA8PSBtYXhfYXJyYXlfc2l6ZTEgdGhlblxuICAgIFVuYXJ5IChBcnJheS5tYWtlIG4gYSlcbiAgZWxzZSBpZiBuID4gbWF4X2FycmF5X3NpemUyIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkdlbkFycmF5OiBhcnJheSB0b28gbGFyZ2VcIlxuICBlbHNlIChcbiAgICBsZXQgbSA9XG4gICAgICBsZXQgcCwgcSA9IGV1Y2xpZGVlbiBuIG1heF9hcnJheV9zaXplMSBpblxuICAgICAgbGV0IGwgPSBBcnJheS5tYWtlIG1heF9hcnJheV9zaXplMSBhIGluXG4gICAgICBsZXQgbSA9XG4gICAgICAgIEFycmF5Lm1ha2VcbiAgICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAgIHBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHAgKyAxKVxuICAgICAgICAgIGxcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgICAgaWYgayA9IC0xIHRoZW5cbiAgICAgICAgICBtXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG0uKGspIDwtIEFycmF5Lm1ha2UgbWF4X2FycmF5X3NpemUxIGE7XG4gICAgICAgICAgYXV4IChrIC0gMSlcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGlmIHEgPSAwIHRoZW5cbiAgICAgICAgYXV4IChwIC0gMSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtLihwKSA8LSBBcnJheS5tYWtlIHEgYTtcbiAgICAgICAgYXV4IChwIC0gMSlcbiAgICAgIClcbiAgICBpblxuICAgIEJpbmFyeSBtXG4gIClcblxubGV0IGxlbmd0aCA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBBcnJheS5sZW5ndGggYVxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IHAgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCBxID0gQXJyYXkubGVuZ3RoIChBcnJheS51bnNhZmVfZ2V0IGEgKHAgLSAxKSkgaW5cbiAgICAoKHAgLSAxKSAqIG1heF9hcnJheV9zaXplMSkgKyBxXG5cbmxldCBnZXQyIGEgcCBxID0gQXJyYXkudW5zYWZlX2dldCAoQXJyYXkudW5zYWZlX2dldCBhIHApIHFcblxubGV0IGdldCBhIGkgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LnVuc2FmZV9nZXQgYSBpXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgcCwgcSA9IGV1Y2xpZGVlbiBpIG1heF9hcnJheV9zaXplMSBpblxuICAgIGdldDIgYSBwIHFcblxubGV0IHNldDIgYSBwIHEgaiA9IEFycmF5LnVuc2FmZV9zZXQgKEFycmF5LnVuc2FmZV9nZXQgYSBwKSBxIGpcblxubGV0IHNldCBhIGkgaiA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IFVuYXJ5IGEgLT4gQXJyYXkudW5zYWZlX3NldCBhIGkgalxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gaSBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICBzZXQyIGEgcCBxIGpcblxubGV0IG1ha2UgPSBjcmVhdGVcblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgfHwgbiA+IG1heF9hcnJheV9zaXplMiB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiQmlnX2FycmF5LmluaXQgOiBcIiBeIHN0cmluZ19vZl9pbnQgbikpXG4gIGVsc2UgaWYgbiA8PSBtYXhfYXJyYXlfc2l6ZTEgdGhlblxuICAgIFVuYXJ5IChBcnJheS5pbml0IG4gZilcbiAgZWxzZSAoXG4gICAgbGV0IG0gPVxuICAgICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gbiBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICAgIEFycmF5LmluaXRcbiAgICAgICAgKGlmIHEgPSAwIHRoZW5cbiAgICAgICAgICAgcFxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBwICsgMSlcbiAgICAgICAgKGZ1biBwJyAtPlxuICAgICAgICAgIGlmIHAnID0gcCB0aGVuXG4gICAgICAgICAgICBBcnJheS5pbml0IHEgKGZ1biB4IC0+IGYgKChwICogbWF4X2FycmF5X3NpemUxKSArIHgpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEFycmF5LmluaXQgbWF4X2FycmF5X3NpemUxIChmdW4geCAtPiBmICgocCcgKiBtYXhfYXJyYXlfc2l6ZTEpICsgeCkpKVxuICAgIGluXG4gICAgQmluYXJ5IG1cbiAgKVxuXG5sZXQgYXBwZW5kIGEgYiA9XG4gIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gIGxldCBjID0gbGEgKyBsYiBpblxuICBpbml0IGMgKGZ1biB4IC0+XG4gICAgICBpZiB4IDwgbGEgdGhlblxuICAgICAgICBnZXQgYSB4XG4gICAgICBlbHNlXG4gICAgICAgIGdldCBiICh4IC0gbGEpKVxuXG5sZXQgY29uY2F0IGwgPVxuICBsZXQgbCA9IExpc3QuZmlsdGVyIChmdW4geCAtPiBsZW5ndGggeCA+IDApIGwgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gVW5hcnkgW3x8XVxuICB8IHQgOjogXyAtPlxuICAgIGxldCBlbHQgPSBnZXQgdCAwIGluXG4gICAgbGV0IGMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHNvbCBhIC0+IHNvbCArIGxlbmd0aCBhKSAwIGwgaW5cbiAgICBsZXQgbSA9IGNyZWF0ZSBjIGVsdCBpblxuICAgIGxldCByZWMgYXV4IGsgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gbVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0IHMgPSBsZW5ndGggdCBpblxuICAgICAgICBsZXQgcmVjIGF1eDIgb2Zmc2V0IGsgPVxuICAgICAgICAgIGlmIG9mZnNldCA9IHMgdGhlblxuICAgICAgICAgICAgYXV4IGsgcVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgc2V0IG0gayAoZ2V0IHQgb2Zmc2V0KTtcbiAgICAgICAgICAgIGF1eDIgKG9mZnNldCArIDEpIChrICsgMSlcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGF1eDIgMCBrXG4gICAgaW5cbiAgICBhdXggMCBsXG5cbmxldCBzdWIgYSBzdGFydCBsZW4gPVxuICBsZXQgc2l6ZSA9IGxlbmd0aCBhIGluXG4gIGlmIHN0YXJ0IDwgMCB8fCBsZW4gPCAwIHx8IHN0YXJ0ICsgbGVuID4gc2l6ZSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJCaWdfYXJyYXkuc3ViXCIpXG4gIGVsc2UgaWYgc2l6ZSA9IDAgdGhlblxuICAgIFVuYXJ5IFt8fF1cbiAgZWxzZVxuICAgIGluaXQgbGVuIChmdW4geCAtPiBnZXQgYSAoeCArIHN0YXJ0KSlcblxubGV0IGNvcHkgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gVW5hcnkgKEFycmF5LmNvcHkgYSlcbiAgfCBCaW5hcnkgYicgLT5cbiAgICBsZXQgc2l6ZSA9IEFycmF5Lmxlbmd0aCBiJyBpblxuICAgIEJpbmFyeSAoQXJyYXkuaW5pdCBzaXplIChmdW4geCAtPiBBcnJheS5jb3B5IGInLih4KSkpXG5cbmxldCBmaWxsIGEgc3RhcnQgbGVuIHggPVxuICBsZXQgc2l6ZSA9IGxlbmd0aCBhIGluXG4gIGlmIHN0YXJ0IDwgMCB8fCBsZW4gPCAwIHx8IHN0YXJ0ICsgbGVuID4gc2l6ZSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJCaWdfYXJyYXkuZmlsbFwiKVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGF1eCBrIGkgPVxuICAgICAgaWYgayA8IGxlbiB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gc2V0IGEgaSB4IGluXG4gICAgICAgIGF1eCAoayArIDEpIChpICsgMSlcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIHN0YXJ0XG4gIClcblxubGV0IG9mX2xpc3QgfmRlZmF1bHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IFVuYXJ5IFt8fF1cbiAgfCB0IDo6IF8gYXMgbCAtPlxuICAgIGxldCBfaWtub3d3aGF0aW1kb2luZyA9IGRlZmF1bHQgaW5cbiAgICBsZXQgc2l6ZSA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBzaXplIHQgaW5cbiAgICBsZXQgcmVjIGF1eCBrID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0ICgpID0gc2V0IGEgayB0IGluXG4gICAgICAgIGF1eCAoayArIDEpIHFcbiAgICBpblxuICAgIGF1eCAwIGxcblxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBBcnJheS5pdGVyIGYgYVxuICB8IEJpbmFyeSBhIC0+IEFycmF5Lml0ZXIgKEFycmF5Lml0ZXIgZikgYVxuXG5sZXQgaXRlcmkgZiA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBBcnJheS5pdGVyaSBmIGFcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBnIGsgaycgPSAoayAqIG1heF9hcnJheV9zaXplMSkgKyBrJyBpblxuICAgIEFycmF5Lml0ZXJpIChmdW4gayBhIC0+IEFycmF5Lml0ZXJpIChmdW4gaycgYSAtPiBmIChnIGsgaycpIGEpIGEpIGFcblxubGV0IGdlbiBnMSBnMiBoMSBoMiBmID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IGgxIChnMSBmIGEpXG4gIHwgQmluYXJ5IGEgLT4gaDIgKGcyIChnMSBmKSBhKVxuXG5sZXQgbWFwIGYgeCA9IGdlbiBBcnJheS5tYXAgQXJyYXkubWFwIChmdW4geCAtPiBVbmFyeSB4KSAoZnVuIHggLT4gQmluYXJ5IHgpIGYgeFxuXG4oKmxldCBnZW5pIGcxIGcyIGgxIGgyIGYgPSBmdW5jdGlvblxuICAgICAgfCBVbmFyeSBhIC0+IGgxIChnMSBmIGEpXG4gICAgICB8IEJpbmFyeSBiIC0+XG4gIGgyXG4gICAgKGcyXG4gICAgICAgKGZ1biBwIGEgLT5cbiAgICAgICAgbGV0IG4gPSBwICogbWF4X2FycmF5X3NpemUxIGluXG4gICAgICAgIGcxXG4gICAoZnVuIHEgYSAtPiBmIChxICsgbikgYSlcbiAgIGEpXG4gICAgICAgYilcblxuICAgIGxldCBtYXBpID1cbiAgICAgIGdlbmkgQXJyYXkubWFwaSBBcnJheS5tYXBpIChmdW4geCAtPiBVbmFyeSB4KSAoZnVuIHggLT4gQmluYXJ5IHgpKilcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmXG4gICAgbGVuIDwgMCB8fCBvZnMxIDwgMFxuICAgIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICB8fCBvZnMyIDwgMFxuICAgIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgaWYgb2ZzMSA8IG9mczIgdGhlblxuICAgICgqIFRvcC1kb3duIGNvcHkgKilcbiAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHNldCBhMiAob2ZzMiArIGkpIChnZXQgYTEgKG9mczEgKyBpKSlcbiAgICBkb25lXG4gIGVsc2VcbiAgICAoKiBCb3R0b20tdXAgY29weSAqKVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBzZXQgYTIgKG9mczIgKyBpKSAoZ2V0IGExIChvZnMxICsgaSkpXG4gICAgZG9uZVxuXG5sZXQgZm9sZF9sZWZ0aSBmIGluaXQgYSA9XG4gIGxldCB5ID0gcmVmIGluaXQgaW5cbiAgbGV0ICgpID0gaXRlcmkgKGZ1biBpIGUgLT4geSA6PSBmIGkgIXkgZSkgYSBpblxuICAheVxuXG5sZXQgZm9sZF9yaWdodCBmIGEgaW5pdCA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuZm9sZF9yaWdodCBmIGEgaW5pdFxuICB8IEJpbmFyeSBhIC0+IEFycmF5LmZvbGRfcmlnaHQgKEFycmF5LmZvbGRfcmlnaHQgZikgYSBpbml0XG5cbmxldCBmb2xkX3JpZ2h0aSBmIGEgaW5pdCA9XG4gIGxldCBnIGsgKGksIGN1cnJlbnQpID0gaSAtIDEsIGYgaSBrIGN1cnJlbnQgaW5cbiAgc25kIChmb2xkX3JpZ2h0IGcgYSAobGVuZ3RoIGEgLSAxLCBpbml0KSlcblxubGV0IHByaW50ID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IGxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJfZWwgaSBmIChnZXQgYSBpKSBpblxuICAgICAgaWYgaSA8IGxlbmd0aCBhIC0gMSB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gcHJfc2VwIGYgaW5cbiAgICAgICAgYXV4IChzdWNjIGkpIGZcbiAgICAgICkgZWxzZSBpZiBpID4gMCB0aGVuXG4gICAgICAgIHRyYWlsaW5nIGZcbiAgICApXG4gIGluXG4gIGF1eCAwIGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgc3RvcCA9IFN0b3Agb2YgJ2IgfCBTdWNjZXNzIG9mICdhXG5cbmxldCBzdWNjZXNzIGEgPSBTdWNjZXNzIGFcbmxldCBzdG9wIGEgPSBTdG9wIGFcblxubGV0IHN1Y2Nlc3Nfb3Jfc3RvcCBmIGcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFN1Y2Nlc3MgYSAtPiBmIGFcbiAgfCBTdG9wIGEgLT4gZyBhXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbmVuZFxuXG50eXBlICgncGFyYW1ldGVycywgJ2Vycm9yLCAnYSkgd2l0aF9sb2dfd3JhcCA9XG4gICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24gLT4gZXhuIC0+ICdlcnJvcikgLT5cbiAgJ3BhcmFtZXRlcnMgLT5cbiAgJ2Vycm9yIC0+XG4gICdhXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIGlzX3NpbmdsZXRvbiA6IHQgLT4gYm9vbFxuICB2YWwgYWRkIDogZWx0IC0+IHQgLT4gdFxuXG4gIHZhbCBhZGRfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmUgOiBlbHQgLT4gdCAtPiB0XG5cbiAgdmFsIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIGJvb2wgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIGJvb2wgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHNwbGl0IDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaXNqb2ludF91bmlvbiA6IHQgLT4gdCAtPiB0IG9wdGlvblxuICB2YWwgaW50ZXIgOiB0IC0+IHQgLT4gdFxuXG4gIHZhbCBtaW51cyA6IHQgLT4gdCAtPiB0XG4gICgqKiBbbWludXMgYSBiXSBjb250YWlucyBlbGVtZW50cyBvZiBbYV0gdGhhdCBhcmUgbm90IGluIFtiXSAqKVxuXG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IHRcbiAgKCoqIFtkaWZmIGEgYl0gPSBbbWludXMgKHVuaW9uIGEgYikgKGludGVyIGEgYildICopXG5cbiAgdmFsIG1pbnVzX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHVuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGludGVyX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfd2l0aF9sb2dzIDogKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG4gICgqIHZhbCBzcGxpdF93aXRoX2xvZ3M6XG4gICAgICAgICgncGFyYW1ldGVycywnZXJyb3IsZWx0IC0+IHQgLT4gJ2Vycm9yICogKCB0ICogYm9vbCAqIHQpKSB3aXRoX2xvZ193cmFwICopXG5cbiAgdmFsIHNpemUgOiB0IC0+IGludFxuICB2YWwgbWVtIDogZWx0IC0+IHQgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG5cbiAgdmFsIGZpbHRlcl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIHBhcnRpdGlvbiA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuXG4gIHZhbCBwYXJ0aXRpb25fd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgKGVsdCAtPiBib29sKSAtPiB0IC0+ICdlcnJvciAqIHQgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdWJzZXQgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZm9sZF9pbnYgOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmFuZG9tIDogUmFuZG9tLlN0YXRlLnQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgc2V0XG4gIHR5cGUgKydhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgc2l6ZSA6ICdhIHQgLT4gaW50XG4gIHZhbCByb290IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgbWF4X2tleSA6ICdhIHQgLT4gZWx0IG9wdGlvblxuICB2YWwgYWRkIDogZWx0IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgcmVtb3ZlIDogZWx0IC0+ICdhIHQgLT4gJ2EgdFxuXG4gIHZhbCBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiBib29sICogJ2EgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiBib29sICogJ2EgdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBwb3AgOiBlbHQgLT4gJ2EgdCAtPiAnYSBvcHRpb24gKiAnYSB0XG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZF9vcHRpb24gOiBlbHQgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfZGVmYXVsdCA6ICdhIC0+IGVsdCAtPiAnYSB0IC0+ICdhXG5cbiAgdmFsIGZpbmRfb3B0aW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIG9wdGlvbikgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmaW5kX2RlZmF1bHRfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgLT4gZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWVtIDogZWx0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICB2YWwgdW5pb24gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgdXBkYXRlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGRpZmZfcHJlZCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcblxuICB2YWwgYWRkX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgam9pbl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAnYSB0IC0+IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgc3BsaXRfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogKCdhIHQgKiAnYSBvcHRpb24gKiAnYSB0KSApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCB1cGRhdGVfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWFwMl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiAnYiAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2EgLT4gJ2IgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnZXJyb3IgKiAnYyB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1hcDJ6X3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2EgLT4gJ2EgLT4gJ2Vycm9yICogJ2EpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnZXJyb3IgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGQyel93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICdhIHQgLT5cbiAgICAgICdiIHQgLT5cbiAgICAgICdjIC0+XG4gICAgICAnZXJyb3IgKiAnYyApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb2xkMl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnYyAtPlxuICAgICAgJ2Vycm9yICogJ2MgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2MgLT5cbiAgICAgICdlcnJvciAqICdjIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGl0ZXIyX3NwYXJzZV93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnZXJyb3IpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnZXJyb3IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZGlmZl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCAnYSB0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EgdCAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZGlmZl9wcmVkX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EgdCAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWVyZ2Vfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgdW5pb25fd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoZWx0IC0+ICdhIC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgc2V0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiAtPlxuICAgICAgJ2Vycm9yICogJ2IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgIChlbHQgLT4gJ2EgLT4gJ2Vycm9yICogJ2IgLT4gJ2Vycm9yICogJ2IpIC0+XG4gICAgICAoZWx0IC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgc2V0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiAtPlxuICAgICAgJ2Vycm9yICogJ2IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgaXRlciA6IChlbHQgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuXG4gIHZhbCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIDpcbiAgICAoZWx0IC0+ICdhIC0+ICdiIC0+ICgnYiwgJ2MpIFN0b3Auc3RvcCkgLT4gJ2EgdCAtPiAnYiAtPiAoJ2IsICdjKSBTdG9wLnN0b3BcblxuICB2YWwgbW9uYWRpY19mb2xkMiA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjXG5cbiAgdmFsIG1vbmFkaWNfZm9sZDJfc3BhcnNlIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2NcblxuICB2YWwgbW9uYWRpY19pdGVyMl9zcGFyc2UgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICgncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCkgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxuICB2YWwgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYikgLT5cbiAgICBzZXQgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2JcblxuICB2YWwgbWFwaSA6IChlbHQgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcDIgOiAoJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlcl9vbmUgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgYmluZGluZ3MgOiAnYSB0IC0+IChlbHQgKiAnYSkgbGlzdFxuXG4gIHZhbCBwcmludCA6XG4gICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSB0IC0+IHVuaXRcblxuICB2YWwgb2ZfanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICA/ZXJyb3JfbXNnOnN0cmluZyAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiBlbHQpIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+ICd2YWx1ZSkgLT5cbiAgICBZb2pzb24uQmFzaWMudCAtPlxuICAgICd2YWx1ZSB0XG5cbiAgdmFsIHRvX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgKGVsdCAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAoJ3ZhbHVlIC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICd2YWx1ZSB0IC0+XG4gICAgWW9qc29uLkJhc2ljLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG5cbiAgbW9kdWxlIFNldCA6IFNldCB3aXRoIHR5cGUgZWx0ID0gZWx0XG4gIG1vZHVsZSBNYXAgOiBNYXAgd2l0aCB0eXBlIGVsdCA9IGVsdCBhbmQgdHlwZSBzZXQgPSBTZXQudFxuZW5kXG5cbmV4Y2VwdGlvbiBEZWFkQ29kZUlzTm90RGVhZCBvZiBzdHJpbmdcblxubW9kdWxlIE1ha2UgKE9yZCA6IE9yZGVyZWRUeXBlKSA6IFMgd2l0aCB0eXBlIGVsdCA9IE9yZC50ID0gc3RydWN0XG4gIHR5cGUgZWx0ID0gT3JkLnRcblxuICBtb2R1bGUgU2V0ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuXG4gICAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgRW1wdHkgfCBOb2RlIG9mIHQgKiBlbHQgKiB0ICogaW50ICogaW50XG5cbiAgICAgIHZhbCBlbXB0eSA6IHRcbiAgICAgIHZhbCBoZWlnaHQgOiB0IC0+IGludFxuICAgICAgdmFsIHNpemUgOiB0IC0+IGludFxuICAgICAgdmFsIG5vZGUgOiB0IC0+IGVsdCAtPiB0IC0+IHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB0ICogZWx0ICogdCAqIGludCAqIGludFxuXG4gICAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuXG4gICAgICBsZXQgc2l6ZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcblxuICAgICAgbGV0IG5vZGUgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICAgIGxldCBociA9IGhlaWdodCByaWdodCBpblxuICAgICAgICBOb2RlXG4gICAgICAgICAgKCBsZWZ0LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIChpZiBobCA+IGhyIHRoZW5cbiAgICAgICAgICAgICAgIGhsXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgaHIpXG4gICAgICAgICAgICArIDEsXG4gICAgICAgICAgICBzaXplIGxlZnQgKyBzaXplIHJpZ2h0ICsgMSApXG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBQcml2YXRlLnRcblxuICAgIGxldCBlbXB0eSA9IFByaXZhdGUuZW1wdHlcbiAgICBsZXQgaGVpZ2h0ID0gUHJpdmF0ZS5oZWlnaHRcbiAgICBsZXQgc2l6ZSA9IFByaXZhdGUuc2l6ZVxuICAgIGxldCBub2RlID0gUHJpdmF0ZS5ub2RlXG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT4gZmFsc2VcblxuICAgIGxldCBzaW5nbGV0b24gdmFsdWUgPSBub2RlIGVtcHR5IHZhbHVlIGVtcHR5XG5cbiAgICBsZXQgaXNfc2luZ2xldG9uIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8IFByaXZhdGUuTm9kZSAoc2V0MSwgXywgc2V0MiwgXywgXykgLT4gaXNfZW1wdHkgc2V0MSAmJiBpc19lbXB0eSBzZXQyXG5cbiAgICBsZXQgYmFsYW5jZSBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIGxldCBoZWlnaHRfbGVmdCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICBsZXQgaGVpZ2h0X3JpZ2h0ID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjIyXCIpXG4gICAgICAgICgqIGhlaWdodF9sZWZ0ID4gaGVpZ2h0X3JpZ2h0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IGxlZnRsZWZ0ID49IGhlaWdodCBsZWZ0cmlnaHQgdGhlblxuICAgICAgICAgICAgbm9kZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgKG5vZGUgbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggbGVmdHJpZ2h0IHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSAyMjlcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IGxlZnRsZWZ0IDwgaGVpZ2h0IGxlZnRyaWdodCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnRyaWdodGxlZnQsIGxlZnRyaWdodHZhbHVlLCBsZWZ0cmlnaHRyaWdodCwgXywgXylcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnRsZWZ0IGxlZnR2YWx1ZSBsZWZ0cmlnaHRsZWZ0KVxuICAgICAgICAgICAgICAgIGxlZnRyaWdodHZhbHVlXG4gICAgICAgICAgICAgICAgKG5vZGUgbGVmdHJpZ2h0cmlnaHQgdmFsdWUgcmlnaHQpXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlIGlmIGhlaWdodF9yaWdodCA+IGhlaWdodF9sZWZ0ICsgMiB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmlnaHQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjM4XCIpXG4gICAgICAgICgqIGhlaWdodF9yaWdodCA+IGhlaWdodF9sZWZ0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0cmlnaHQgPj0gaGVpZ2h0IHJpZ2h0bGVmdCB0aGVuXG4gICAgICAgICAgICBub2RlIChub2RlIGxlZnQgdmFsdWUgcmlnaHRsZWZ0KSByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJpZ2h0bGVmdCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjQ1XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCByaWdodHJpZ2h0IDwgaGVpZ2h0IHJpZ2h0bGVmdCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKHJpZ2h0bGVmdGxlZnQsIHJpZ2h0bGVmdHZhbHVlLCByaWdodGxlZnRyaWdodCwgXywgXylcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnQgdmFsdWUgcmlnaHRsZWZ0bGVmdClcbiAgICAgICAgICAgICAgICByaWdodGxlZnR2YWx1ZVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0bGVmdHJpZ2h0IHJpZ2h0dmFsdWUgcmlnaHRyaWdodClcbiAgICAgICAgICApXG4gICAgICApIGVsc2VcbiAgICAgICAgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgdHJ5IGVycm9yLCBiYWxhbmNlIGxlZnQgdmFsdWUgcmlnaHRcbiAgICAgIHdpdGggRGVhZENvZGVJc05vdERlYWQgbG9jIC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChsb2MgXiBcIiBTZXQgaW52YXJpYW50IGlzIGJyb2tlbiwga2VlcCBvbiB3aXRoIHVuYmFsYW5jZWQgc2V0XCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5TRVQuYmFsYW5jZVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICAoKiogQmV3YXJlIHNvbWUgY29kZSByZWxpZXMgb24gdGhlIGludmFyaWFudCBbYWRkIHggcyA9PSBzXSBpZmYgW21lbSB4IHNdICopXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICB0XG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IG8gPSBhZGQgeCBsIGluXG4gICAgICAgICAgaWYgbyA9PSBsIHRoZW5cbiAgICAgICAgICAgIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIG8gdiByXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IG8gPSBhZGQgeCByIGluXG4gICAgICAgICAgaWYgbyA9PSByIHRoZW5cbiAgICAgICAgICAgIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIGwgdiBvXG4gICAgICAgIClcblxuICAgIGxldCByZWMgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCB0cnVlLCBzaW5nbGV0b24gbmV3X3ZhbFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgbmV3X3ZhbCB2YWx1ZV9zZXQgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBmYWxzZSwgc2V0XG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWwgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBzZXQgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBzZXQgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWVfc2V0IHJpZ2h0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICApXG5cbiAgICBsZXQgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbHVlIHNldCA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIHNldCA9XG4gICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbHVlIHNldFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgIGVycm9yXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWUgKFwiU2V0TWFwIGxpbmUgMzAwXCIgXiBcIiBhbiBhbHJlYWR5IGVsdCBoYXMgYmVlbiBhZGRlZCB0byBhIHNldFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuU0VULmFkZFwiKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBzZXRcblxuICAgIGxldCBhZGRfZXZlbl9pZl9pdF9leGlzdHMgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBfLCBzZXQgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgc2V0XG5cbiAgICBsZXQgcmVjIGpvaW4gbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBsZWZ0LCByaWdodCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gYWRkIHZhbHVlIHJpZ2h0XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gYWRkIHZhbHVlIGxlZnRcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnRsZWZ0LCBsZWZ0dmFsdWUsIGxlZnRyaWdodCwgbGVmdGhlaWdodCwgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIHJpZ2h0aGVpZ2h0LCBfKSApIC0+XG4gICAgICAgIGlmIGxlZnRoZWlnaHQgPiByaWdodGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IHJpZ2h0JyA9IGpvaW4gbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgcmlnaHQnXG4gICAgICAgICkgZWxzZSBpZiByaWdodGhlaWdodCA+IGxlZnRoZWlnaHQgKyAyIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0JyA9IGpvaW4gbGVmdCB2YWx1ZSByaWdodGxlZnQgaW5cbiAgICAgICAgICBiYWxhbmNlIGxlZnQnIHJpZ2h0dmFsdWUgcmlnaHRyaWdodFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub2RlIGxlZnQgdmFsdWUgcmlnaHRcblxuICAgIGxldCByZWMgc2FmZV9leHRyYWN0X21pbl9lbHQgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB2YWx1ZSwgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4sIGxlZnQnID0gc2FmZV9leHRyYWN0X21pbl9lbHQgbGVmdGxlZnQgbGVmdHZhbHVlIGxlZnRyaWdodCBpblxuICAgICAgICBtaW4sIGJhbGFuY2UgbGVmdCcgdmFsdWUgcmlnaHRcblxuICAgIGxldCByZWMgbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJtaW5fZWx0X3dpdGhfbG9ncywgbGluZSAzMDNcIilcbiAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIHYsIF8sIF8sIF8pIC0+IGVycm9yLCBTb21lIHZcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfKSAtPlxuICAgICAgICBtaW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdFxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIFwicmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzLCBsaW5lIDMxMVwiKSBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwgXywgcmlnaHQsIF8sIF8pIC0+IGVycm9yLCByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0XG4gICAgICAgIGluXG4gICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZSByaWdodFxuXG4gICAgbGV0IG1lcmdlIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4yLCBzZXQyJyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQyIHZhbHVlMiByaWdodDIgaW5cbiAgICAgICAgYmFsYW5jZSBzZXQxIG1pbjIgc2V0MidcblxuICAgIGxldCBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSBfLCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxlZnQyID1cbiAgICAgICAgICByZW1vdmVfbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBlbHRfb3B0ID0gbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDIgaW5cbiAgICAgICAgKG1hdGNoIGVsdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJtZXJnZV93aXRoX2xvZ3MsbGluZSAzMzlcIilcbiAgICAgICAgICAgICAgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgc2V0MVxuICAgICAgICB8IFNvbWUgZWx0IC0+IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIGVsdCBsZWZ0MilcblxuICAgIGxldCByZWMgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHJpZ2h0XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbGVmdFxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBsZWZ0aGVpZ2h0LCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKHJpZ2h0bGVmdCwgcmlnaHR2YWx1ZSwgcmlnaHRyaWdodCwgcmlnaHRoZWlnaHQsIF8pICkgLT5cbiAgICAgICAgaWYgbGVmdGhlaWdodCA+IHJpZ2h0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdGxlZnQgbGVmdHZhbHVlIHJpZ2h0J1xuICAgICAgICApIGVsc2UgaWYgcmlnaHRoZWlnaHQgPiBsZWZ0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQnID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0bGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0dmFsdWUgcmlnaHRyaWdodFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgY29uY2F0IHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4yLCBzZXQyJyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQyIHZhbHVlMiByaWdodDIgaW5cbiAgICAgICAgam9pbiBzZXQxIG1pbjIgc2V0MidcblxuICAgIGxldCBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0MiA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZWx0X29wdCA9IG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyIGluXG4gICAgICAgIChtYXRjaCBlbHRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiY29uY2F0X3dpdGhfbG9ncyxsaW5lIDM5MFwiKVxuICAgICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBzZXQxXG4gICAgICAgIHwgU29tZSBlbHQgLT4gam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgZWx0IGxlZnQyKVxuXG4gICAgbGV0IHJlYyBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNwbGl0X3ZhbCBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgKGVtcHR5LCBmYWxzZSwgZW1wdHkpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgc2V0X3ZhbCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgc3BsaXRfdmFsIHNldF92YWwgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCAobGVmdCwgdHJ1ZSwgcmlnaHQpXG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdGxlZnQsIGJvb2wsIHJpZ2h0bGVmdCkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzcGxpdF92YWwgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodHJpZ2h0ID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodGxlZnQgc2V0X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0cmlnaHQsIGJvb2wsIHJpZ2h0cmlnaHQpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc3BsaXRfdmFsIHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnRsZWZ0ID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHNldF92YWwgbGVmdHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgKGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0KVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgc2V0IC0+IHNldFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIGFzIHNldCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHZhbHVlIHZhbHVlX3NldCBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgbWVyZ2UgbGVmdCByaWdodFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0JyA9IHJlbW92ZSB2YWx1ZSBsZWZ0IGluXG4gICAgICAgICAgaWYgbGVmdCA9PSBsZWZ0JyB0aGVuXG4gICAgICAgICAgICBzZXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCByaWdodCcgPSByZW1vdmUgdmFsdWUgcmlnaHQgaW5cbiAgICAgICAgICBpZiByaWdodCA9PSByaWdodCcgdGhlblxuICAgICAgICAgICAgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgc2V0IC0+IGVycm9yLCBmYWxzZSwgc2V0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWVfc2V0LCByaWdodCwgXywgXykgYXMgc2V0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdmFsdWUgdmFsdWVfc2V0IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID0gbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHJpZ2h0IGluXG4gICAgICAgICAgZXJyb3IsIHRydWUsIHNldFxuICAgICAgICApIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGxlZnQgPT0gbGVmdCcgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcIlNldE1hcCBsaW5lIDQ1NFwiKVxuICAgICAgICAgICAgICAgICAgKGZhaWx3aXRoIFwiSW52YXJpYW50IGlzIGJyb2tlblwiKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgICApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCByaWdodCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmlnaHQgPT0gcmlnaHQnIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA0NjdcIilcbiAgICAgICAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWVfc2V0IHJpZ2h0J1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgIGxldCByZW1vdmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBzZXQgPVxuICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHNldFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgc2V0XG4gICAgICBlbHNlXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoXCJTZXRNYXAgbGluZSA0ODFcIlxuICAgICAgICAgICAgICBeIFwiQXR0ZW1wdCB0byByZW1vdmUgYW4gZWx0IHRoYXQgZG9lcyBub3QgZXhpc3RcIikpXG4gICAgICAgICAgICBOb3RfZm91bmQsXG4gICAgICAgICAgc2V0IClcblxuICAgIGxldCByZWMgc3BsaXQgc3BsaXRfdmFsdWUgc2V0ID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIGZhbHNlLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHNldF92YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgc3BsaXRfdmFsdWUgc2V0X3ZhbHVlIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBsZWZ0LCB0cnVlLCByaWdodFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0bGVmdCwgYm9vbCwgcmlnaHRsZWZ0ID0gc3BsaXQgc3BsaXRfdmFsdWUgbGVmdCBpblxuICAgICAgICAgIGxldCByaWdodHJpZ2h0ID0gam9pbiByaWdodGxlZnQgc2V0X3ZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgbGVmdGxlZnQsIGJvb2wsIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdHJpZ2h0LCBib29sLCByaWdodHJpZ2h0ID0gc3BsaXQgc3BsaXRfdmFsdWUgcmlnaHQgaW5cbiAgICAgICAgICBsZXQgbGVmdGxlZnQgPSBqb2luIGxlZnQgc2V0X3ZhbHVlIGxlZnRyaWdodCBpblxuICAgICAgICAgIGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgdW5pb24gc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuXG4gICAgICAgICAgICBhZGQgdmFsdWUyIHNldDFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsZWZ0MiwgXywgcmlnaHQyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0JyA9IHVuaW9uIGxlZnQxIGxlZnQyIGluXG4gICAgICAgICAgICBsZXQgcmlnaHQnID0gdW5pb24gcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIGhlaWdodDEgPSAxIHRoZW5cbiAgICAgICAgICBhZGQgdmFsdWUxIHNldDJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBfLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgc2V0MSBpblxuICAgICAgICAgIGxldCBsZWZ0JyA9IHVuaW9uIGxlZnQxIGxlZnQyIGluXG4gICAgICAgICAgbGV0IHJpZ2h0JyA9IHVuaW9uIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgICBqb2luIGxlZnQnIHZhbHVlMiByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludF91bmlvbiBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gU29tZSBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gU29tZSBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuIChcbiAgICAgICAgICAgIGxldCBvdXQgPSBhZGQgdmFsdWUyIHNldDEgaW5cbiAgICAgICAgICAgIGlmIG91dCA9PSBzZXQxIHRoZW5cbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTb21lIG91dFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGVmdDIsIF8sIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgICBtYXRjaCBkaXNqb2ludF91bmlvbiBsZWZ0MSBsZWZ0MiwgZGlzam9pbnRfdW5pb24gcmlnaHQxIHJpZ2h0MiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbGVmdCcsIFNvbWUgcmlnaHQnIC0+IFNvbWUgKGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0JylcbiAgICAgICAgICAgIHwgXywgXyAtPiBOb25lXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIGhlaWdodDEgPSAxIHRoZW4gKFxuICAgICAgICAgIGxldCBvdXQgPSBhZGQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgICBpZiBzZXQyID09IG91dCB0aGVuXG4gICAgICAgICAgICBOb25lXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdDEsIF8sIHJpZ2h0MSA9IHNwbGl0IHZhbHVlMiBzZXQxIGluXG4gICAgICAgICAgbWF0Y2ggZGlzam9pbnRfdW5pb24gbGVmdDEgbGVmdDIsIGRpc2pvaW50X3VuaW9uIHJpZ2h0MSByaWdodDIgd2l0aFxuICAgICAgICAgIHwgU29tZSBsZWZ0JywgU29tZSByaWdodCcgLT4gU29tZSAoam9pbiBsZWZ0JyB2YWx1ZTIgcmlnaHQnKVxuICAgICAgICAgIHwgXywgXyAtPiBOb25lXG4gICAgICAgIClcblxuICAgIGxldCByZWMgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuXG4gICAgICAgICAgICBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgc2V0MVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIF8sIHJpZ2h0MikgPVxuICAgICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgICAgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuXG4gICAgICAgICAgYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDEsIF8sIHJpZ2h0MSkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgc2V0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUyIHJpZ2h0J1xuICAgICAgICApXG5cbiAgICBsZXQgdW5pb25fd2l0aF9sb2dzIHcgcCBlIHMgcycgPSB1bmlvbl9nZW4gYWRkX2V2ZW5faWZfaXRfZXhpc3RzIHcgcCBlIHMgcydcbiAgICBsZXQgZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzIHcgcCBlIHMgcycgPSB1bmlvbl9nZW4gYWRkX3dpdGhfbG9ncyB3IHAgZSBzIHMnXG5cbiAgICBsZXQgc3V0dXJlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIChsZWZ0MiwgYm9vbCwgcmlnaHQyKSBmID1cbiAgICAgIGxldCBsZWZ0JyA9IGYgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCByaWdodCcgPSBmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBqb2luIGxlZnQnIHZhbHVlMSByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgY29uY2F0IGxlZnQnIHJpZ2h0J1xuXG4gICAgbGV0IHN1dHVyZV9ub3QgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGxlZnQnID0gZiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgbGV0IHJpZ2h0JyA9IGYgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGNvbmNhdCBsZWZ0JyByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG5cbiAgICBsZXQgcmVjIGludGVyIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCB0cmlwbGUyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgaW50ZXJcblxuICAgIGxldCBzdXR1cmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgZXJyb3IsIGxlZnQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGNvbmNhdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0J1xuXG4gICAgbGV0IHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgZXJyb3IsIGxlZnQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGNvbmNhdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0J1xuICAgICAgZWxzZVxuICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBpbnRlcl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgbWgnLCB0cmlwbGUyID0gc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBtaCcgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgdHJpcGxlMlxuICAgICAgICAgIGludGVyX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBkaWZmIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IHRyaXBsZTIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgZGlmZlxuXG4gICAgbGV0IHJlYyBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBlbXB0eVxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIHRyaXBsZTIgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDJcbiAgICAgICAgaW5cbiAgICAgICAgc3V0dXJlX25vdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpXG4gICAgICAgICAgdHJpcGxlMiBkaWZmX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBtaW51cyBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgdHJpcGxlMiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgIHN1dHVyZV9ub3QgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgdHJpcGxlMiBtaW51c1xuXG4gICAgbGV0IHJlYyBtaW51c193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0cmlwbGUyID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAgIHRyaXBsZTIgbWludXNfd2l0aF9sb2dzXG5cbiAgICBsZXQgcmVjIG1lbSBzZWFyY2hlZF92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBzZXRfdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNlYXJjaGVkX3ZhbHVlIHNldF92YWx1ZSBpblxuICAgICAgICBjID09IDBcbiAgICAgICAgfHwgbWVtIHNlYXJjaGVkX3ZhbHVlXG4gICAgICAgICAgICAgKGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgICBsZWZ0XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCBmaWx0ZXIgcCBzZXQgPVxuICAgICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGZpbHRcbiAgICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICBhZGQgdmFsdWUgYWNjdVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBmaWx0IGVtcHR5IHNldFxuXG4gICAgbGV0IGZpbHRlcl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHAgc2V0ID1cbiAgICAgIGxldCByZWMgZmlsdCBhY2N1IHNldCA9XG4gICAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0gYWNjdSBpblxuICAgICAgICAgIGZpbHRcbiAgICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsaXN0XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgICAgIGxlZnQpXG4gICAgICAgICAgICByaWdodFxuICAgICAgaW5cbiAgICAgIGZpbHQgKGVycm9yLCBlbXB0eSkgc2V0XG5cbiAgICBsZXQgcGFydGl0aW9uIHAgc2V0ID1cbiAgICAgIGxldCByZWMgcGFydCAoKHQsIGYpIGFzIGFjY3UpID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBwYXJ0XG4gICAgICAgICAgICAocGFydFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkIHZhbHVlIHQsIGZcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICB0LCBhZGQgdmFsdWUgZilcbiAgICAgICAgICAgICAgIGxlZnQpXG4gICAgICAgICAgICByaWdodFxuICAgICAgaW5cbiAgICAgIHBhcnQgKGVtcHR5LCBlbXB0eSkgc2V0XG5cbiAgICBsZXQgcGFydGl0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcCBzZXQgPVxuICAgICAgbGV0IHJlYyBwYXJ0ICgocmgsIHQsIGYpIGFzIGFjY3UpIHNldCA9XG4gICAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgcGFydFxuICAgICAgICAgICAgKHBhcnRcbiAgICAgICAgICAgICAgIChpZiBwIHZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGIgPSBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyByaCB2YWx1ZSB0IGluXG4gICAgICAgICAgICAgICAgICBhLCBiLCBmXG4gICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBhLCBjID0gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgcmggdmFsdWUgZiBpblxuICAgICAgICAgICAgICAgICAgYSwgdCwgY1xuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBwYXJ0IChlcnJvciwgZW1wdHksIGVtcHR5KSBzZXRcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gZW51bSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW51bVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgY29uc19lbnVtIChNb3JlICh2YWx1ZSwgcmlnaHQsIGVudW0pKSBsZWZ0XG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBlMSByMSkgKGNvbnNfZW51bSBlMiByMilcblxuICAgIGxldCBjb21wYXJlIHNldDEgc2V0MiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIEVuZCBzZXQxKSAoY29uc19lbnVtIEVuZCBzZXQyKVxuXG4gICAgbGV0IGVxdWFsIHNldDEgc2V0MiA9IGNvbXBhcmUgc2V0MSBzZXQyID09IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiB0cnVlXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pICkgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2YWx1ZTEgdmFsdWUyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBzdWJzZXQgbGVmdDEgbGVmdDIgJiYgc3Vic2V0IHJpZ2h0MSByaWdodDJcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgc3Vic2V0IChub2RlIGxlZnQxIHZhbHVlMSBlbXB0eSkgbGVmdDIgJiYgc3Vic2V0IHJpZ2h0MSBzZXQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzdWJzZXQgKG5vZGUgZW1wdHkgdmFsdWUxIHJpZ2h0MSkgcmlnaHQyICYmIHN1YnNldCBsZWZ0MSBzZXQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gKClcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCAoKSA9IGl0ZXIgZiBsZWZ0IGluXG4gICAgICAgIGxldCAoKSA9IGYgdmFsdWUgaW5cbiAgICAgICAgaXRlciBmIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzZXQgYWNjdSA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGZvbGQgZiByaWdodCAoZiB2YWx1ZSAoZm9sZCBmIGxlZnQgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvbGRfaW52IGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX2ludiBmIGwgKGYgdiAoZm9sZF9pbnYgZiByIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIHAgdmFsdWUgJiYgZm9yX2FsbCBwIGxlZnQgJiYgZm9yX2FsbCBwIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgcCB2YWx1ZSB8fCBleGlzdHMgcCBsZWZ0IHx8IGV4aXN0cyBwIHJpZ2h0XG5cbiAgICBsZXQgZWxlbWVudHMgc2V0ID1cbiAgICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGVsZW1lbnRzX2F1eCAodmFsdWUgOjogZWxlbWVudHNfYXV4IGFjY3UgcmlnaHQpIGxlZnRcbiAgICAgIGluXG4gICAgICBlbGVtZW50c19hdXggW10gc2V0XG5cbiAgICBsZXQgcmVjIGF1eF9wcmludCBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIE9yZC5wcmludCBrZXlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdLEAgJWFcIiBPcmQucHJpbnQga2V5IGF1eF9wcmludCByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLEAgQFslYUBdXCIgYXV4X3ByaW50IGxlZnQgT3JkLnByaW50IGtleVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWFAXSxAICVhXCIgYXV4X3ByaW50IGxlZnQgT3JkLnByaW50IGtleVxuICAgICAgICAgIGF1eF9wcmludCByaWdodFxuXG4gICAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4ODhcXHg4NVwiXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIGFzIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbeyVhfUBdXCIgYXV4X3ByaW50IG1cblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbGVmdFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgdiwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgXywgcmlnaHQsIF8sIF8pIC0+IG1heF9lbHQgcmlnaHRcblxuICAgIGxldCBjaG9vc2UgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcblxuICAgIGxldCByZWMgZmluZF9hY2MgYWltX2FjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIGtleSwgciwgXywgYWNjKSAtPlxuICAgICAgICBpZiBhaW1fYWNjID49IGFjYyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgYWNjX2wgPSBzaXplIGwgaW5cbiAgICAgICAgICBsZXQgYWNjX3IgPSBzaXplIHIgaW5cbiAgICAgICAgICBpZiBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICAgICAgZmluZF9hY2MgYWltX2FjYyBsXG4gICAgICAgICAgZWxzZSBpZiBhY2NfciArIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgICAgICBmaW5kX2FjYyAoYWltX2FjYyAtIGFjY19sKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU29tZSBrZXlcbiAgICAgICAgKVxuXG4gICAgKCogbGV0IHJlYyBmaW5kX2FjYyBrIG0gPVxuICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIGtleSwgciwgXywgXykgLT5cbiAgICAgICAgICAgIGxldCBzID0gc2l6ZSBsIGluXG4gICAgICAgICAgICBpZiBrIDwgcyB0aGVuIGZpbmRfYWNjIGsgbFxuICAgICAgICAgICAgICBlbHNlIGlmIGsgPSBzIHRoZW4gU29tZSBrZXlcbiAgICAgICAgICAgICAgZWxzZSBmaW5kX2FjYyAoayAtIHMgLSAxKSByICopXG5cbiAgICBsZXQgcmFuZG9tIHJzIG0gPVxuICAgICAgbGV0IHMgPSBzaXplIG0gaW5cbiAgICAgIGlmIHMgPSAwIHRoZW5cbiAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBmaW5kX2FjYyAoUmFuZG9tLlN0YXRlLmludCBycyAoc2l6ZSBtKSkgbVxuXG4gICAgKCogbGV0IGFkZCA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBhZGRfd2l0aF9sb2dzXG4gICAgICAgbGV0IHNwbGl0ID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHNwbGl0X3dpdGhfbG9nc1xuICAgICAgIGxldCByZW1vdmUgPSAgTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHJlbW92ZV93aXRoX2xvZ3NcbiAgICAgICBsZXQgdW5pb24gPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gdW5pb25fd2l0aF9sb2dzXG4gICAgICAgbGV0IGludGVyID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGludGVyX3dpdGhfbG9nc1xuICAgICAgIGxldCBkaWZmID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGRpZmZfd2l0aF9sb2dzXG4gICAgICAgbGV0IG1pbnVzID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIG1pbnVzX3dpdGhfbG9nc1xuICAgICAgIGxldCBmaWx0ZXIgPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gZmlsdGVyX3dpdGhfbG9nc1xuICAgICAgIGxldCBwYXJ0aXRpb24gPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yX0thU2ltIHBhcnRpdGlvbl93aXRoX2xvZ3NcbiAgICAqKVxuICBlbmRcblxuICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICgqIE1hcCBpbXBsZW1lbnRhdGlvbiopXG5cbiAgbW9kdWxlIE1hcCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcblxuICAgIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgICB0eXBlICsnZGF0YSB0ID0gcHJpdmF0ZVxuICAgICAgICB8IEVtcHR5XG4gICAgICAgIHwgTm9kZSBvZiAnZGF0YSB0ICogZWx0ICogJ2RhdGEgKiAnZGF0YSB0ICogaW50ICogaW50XG5cbiAgICAgIHZhbCBlbXB0eSA6ICdhIHRcbiAgICAgIHZhbCBoZWlnaHQgOiAnYSB0IC0+IGludFxuICAgICAgdmFsIHNpemUgOiAnYSB0IC0+IGludFxuICAgICAgdmFsIG5vZGUgOiAnYSB0IC0+IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKydkYXRhIHQgPVxuICAgICAgICB8IEVtcHR5XG4gICAgICAgIHwgTm9kZSBvZiAnZGF0YSB0ICogZWx0ICogJ2RhdGEgKiAnZGF0YSB0ICogaW50ICogaW50XG5cbiAgICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoLCBfKSAtPiBoXG5cbiAgICAgIGxldCBzaXplID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgXywgcykgLT4gc1xuXG4gICAgICBsZXQgbm9kZSBsZWZ0IGtleTAgZGF0YSByaWdodCA9XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICAgIGxldCBociA9IGhlaWdodCByaWdodCBpblxuICAgICAgICBOb2RlXG4gICAgICAgICAgKCBsZWZ0LFxuICAgICAgICAgICAga2V5MCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICgxXG4gICAgICAgICAgICArXG4gICAgICAgICAgICBpZiBobCA+IGhyIHRoZW5cbiAgICAgICAgICAgICAgaGxcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgaHIpLFxuICAgICAgICAgICAgMSArIHNpemUgbGVmdCArIHNpemUgcmlnaHQgKVxuICAgIGVuZFxuXG4gICAgdHlwZSArJ2EgdCA9ICdhIFByaXZhdGUudFxuXG4gICAgbGV0IGVtcHR5ID0gUHJpdmF0ZS5lbXB0eVxuICAgIGxldCBoZWlnaHQgPSBQcml2YXRlLmhlaWdodFxuICAgIGxldCBzaXplID0gUHJpdmF0ZS5zaXplXG4gICAgbGV0IG5vZGUgPSBQcml2YXRlLm5vZGVcblxuICAgIHR5cGUgc2V0ID0gU2V0LnRcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJvb3QgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChfLCB4LCBkLCBfLCBfLCBfKSAtPiBTb21lICh4LCBkKVxuXG4gICAgbGV0IHJlYyBtYXhfa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgaywgXywgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT4gU29tZSBrXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgXywgXywgbSwgXywgXykgLT4gbWF4X2tleSBtXG5cbiAgICBsZXQgYmFsYW5jZSBsZWZ0IGtleSBkYXRhIHJpZ2h0ID1cbiAgICAgIGxldCBoZWlnaHRfbGVmdCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICBsZXQgaGVpZ2h0X3JpZ2h0ID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgODI4XCIpXG4gICAgICAgICgqIGhlaWdodF9sZWZ0ID4gaGVpZ2h0X3JpZ2h0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MCwga2V5MCwgZGF0YTAsIHJpZ2h0MCwgXywgXykgLT5cbiAgICAgICAgICBpZiBoZWlnaHQgbGVmdDAgPj0gaGVpZ2h0IHJpZ2h0MCB0aGVuXG4gICAgICAgICAgICBub2RlIGxlZnQwIGtleTAgZGF0YTAgKG5vZGUgcmlnaHQwIGtleSBkYXRhIHJpZ2h0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggcmlnaHQwIHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4MzVcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IGxlZnQwIDwgaGVpZ2h0IHJpZ2h0MCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICAgICAgKG5vZGUgbGVmdDAga2V5MCBkYXRhMCBsZWZ0MSlcbiAgICAgICAgICAgICAgICBrZXkxIGRhdGExXG4gICAgICAgICAgICAgICAgKG5vZGUgcmlnaHQxIGtleSBkYXRhIHJpZ2h0KVxuICAgICAgICAgIClcbiAgICAgICkgZWxzZSBpZiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDg0NFwiKVxuICAgICAgICAoKiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDAsIGtleTAsIGRhdGEwLCByaWdodDAsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0MCA+PSBoZWlnaHQgbGVmdDAgdGhlblxuICAgICAgICAgICAgbm9kZSAobm9kZSBsZWZ0IGtleSBkYXRhIGxlZnQwKSBrZXkwIGRhdGEwIHJpZ2h0MFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggbGVmdDAgd2l0aFxuICAgICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDg1MVwiKVxuICAgICAgICAgICAgKCogMCA8PSBoZWlnaHQgcmlnaHQwIDwgaGVpZ2h0IGxlZnQwICopXG4gICAgICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgICAgICAgIG5vZGUgKG5vZGUgbGVmdCBrZXkgZGF0YSBsZWZ0MSkga2V5MSBkYXRhMVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0MSBrZXkwIGRhdGEwIHJpZ2h0MClcbiAgICAgICAgICApXG4gICAgICApIGVsc2VcbiAgICAgICAgbm9kZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG5cbiAgICBsZXQgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5IGRhdGEgcmlnaHQgPVxuICAgICAgdHJ5IGVycm9yLCBiYWxhbmNlIGxlZnQga2V5IGRhdGEgcmlnaHRcbiAgICAgIHdpdGggRGVhZENvZGVJc05vdERlYWQgbG9jIC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChsb2MgXiBcIiBNYXAgaW52YXJpYW50IGlzIGJyb2tlbiwga2VlcCBvbiB3aXRoIHVuYmFsYW5jZWQgbWFwXCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5NYXAuYmFsYW5jZVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGFkZCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbm9kZSBlbXB0eSBrZXkgZGF0YSBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGFfbWFwLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIG5vZGUgbGVmdCBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICBiYWxhbmNlIChhZGQga2V5IGRhdGEgbGVmdCkga2V5X21hcCBkYXRhX21hcCByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0IGtleV9tYXAgZGF0YV9tYXAgKGFkZCBrZXkgZGF0YSByaWdodClcblxuICAgIGxldCByZWMgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgdHJ1ZSwgbm9kZSBlbXB0eSBrZXkgZGF0YSBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGFfbWFwLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBmYWxzZSwgbm9kZSBsZWZ0IGtleV9tYXAgZGF0YSByaWdodFxuICAgICAgICBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgbGVmdCcga2V5X21hcCBkYXRhX21hcCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgbGVmdCBrZXlfbWFwIGRhdGFfbWFwIHJpZ2h0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICApXG5cbiAgICBsZXQgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSBtYXAgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBtYXAgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbWFwXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGVycm9yLCBtYXBcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYSwgYiwgXywgXyA9IF9fUE9TX18gaW5cbiAgICAgICAgKCB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbCBcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIChhIF4gXCIgbGluZTogXCIgXiBzdHJpbmdfb2ZfaW50IGJcbiAgICAgICAgICAgICAgXiBcIjogQXR0ZW1wdCB0byBhZGQgYW4gYXNzb2NpYXRpb24gb3ZlciBhIGZvcm1lciBvbmUgaW4gYSBtYXBcIikpXG4gICAgICAgICAgICAoRmFpbHVyZSBcIlNldF9hbmRfTWFwLk1hcC5hZGRcIiksXG4gICAgICAgICAgbWFwIClcbiAgICAgIClcblxuICAgIGxldCByZWMgZXh0cmFjdF9taW5fYmluZGluZyBtYXAga2V5IGRhdGEgbWFwJyA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IChrZXksIGRhdGEpLCBtYXAnXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4sIGxlZnQnID0gZXh0cmFjdF9taW5fYmluZGluZyBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MiBpblxuICAgICAgICBtaW4sIGJhbGFuY2UgbGVmdCcga2V5IGRhdGEgbWFwJ1xuXG4gICAgbGV0IHJlYyBleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbWFwIGtleSBkYXRhXG4gICAgICAgIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgKChrZXksIGRhdGEpLCBtYXAnKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIChtaW4sIGxlZnQnKSA9XG4gICAgICAgICAgZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQyIGtleTIgZGF0YTJcbiAgICAgICAgICAgIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgKG1pbiwgYmFsYW5jZSBsZWZ0JyBrZXkgZGF0YSBtYXAnKVxuXG4gICAgbGV0IG1lcmdlIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIC0+XG4gICAgICAgIChtYXRjaCBtYXAyIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG1hcDFcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCAoa2V5MywgZGF0YTMpLCBsZWZ0JyA9XG4gICAgICAgICAgICBleHRyYWN0X21pbl9iaW5kaW5nIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWxhbmNlIG1hcDEga2V5MyBkYXRhMyBsZWZ0JylcblxuICAgIGxldCBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgbWFwMlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICAobWF0Y2ggbWFwMiB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgbWFwMVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCAoKGtleTMsIGRhdGEzKSwgbGVmdCcpID1cbiAgICAgICAgICAgIGV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MiBrZXkyIGRhdGEyXG4gICAgICAgICAgICAgIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEga2V5MyBkYXRhMyBsZWZ0JylcblxuICAgIGxldCByZWMgcmVtb3ZlIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIG1lcmdlIGxlZnQgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICBiYWxhbmNlIChyZW1vdmUga2V5IGxlZnQpIGtleV9tYXAgZGF0YSByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0IGtleV9tYXAgZGF0YSAocmVtb3ZlIGtleSByaWdodClcblxuICAgIGxldCByZWMgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGZhbHNlLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9IG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCByaWdodCBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBtYXBcbiAgICAgICAgKSBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleSBsZWZ0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZWZ0JyA9PSBsZWZ0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA5NjFcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiByaWdodCcgPT0gcmlnaHQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcIlNldE1hcCBsaW5lIDk3OFwiKVxuICAgICAgICAgICAgICAgICAgKGZhaWx3aXRoIFwiSW52YXJpYW50IGlzIGJyb2tlblwiKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5X21hcCBkYXRhIHJpZ2h0J1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgIGxldCByZW1vdmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGVycm9yLCBtYXBcbiAgICAgIGVsc2VcbiAgICAgICAgKCB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIChcIlNldE1hcCBsaW5lIDk5NFwiXG4gICAgICAgICAgICAgIF4gXCJUcnkgdG8gcmVtb3ZlIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gTWFwLnJlbW92ZVwiXG4gICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKGZhaWx3aXRoXG4gICAgICAgICAgICAgICBcIlRyeSB0byByZW1vdmUgYW4gYXNzb2NpYXRpb24gdGhhdCBpcyBub3QgZGVmaW5lZCBpbiBNYXAucmVtb3ZlXCIpLFxuICAgICAgICAgIG1hcCApXG5cbiAgICBsZXQgcmVjIHBvcCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSBhcyBtIC0+IE5vbmUsIG1cbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCBkLCByLCBfLCBfKSBhcyBtIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBTb21lIGQsIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIHBvcCB4IGwgd2l0aFxuICAgICAgICAgIHwgKE5vbmUgYXMgbyksIF8gLT4gbywgbVxuICAgICAgICAgIHwgKFNvbWUgXyBhcyBvKSwgdCAtPiBvLCBiYWxhbmNlIHQgdiBkIHJcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBtYXRjaCBwb3AgeCByIHdpdGhcbiAgICAgICAgICB8IChOb25lIGFzIG8pLCBfIC0+IG8sIG1cbiAgICAgICAgICB8IChTb21lIF8gYXMgbyksIHQgLT4gbywgYmFsYW5jZSBsIHYgZCB0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgam9pbiBsZWZ0IGtleSB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBiYWxhbmNlIGxlZnQga2V5IHZhbHVlIHJpZ2h0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSAxMDEzXCIpICgqIEJ5IGNhc2UgYW5hbHlzaXMgKilcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgYXMgbWFwMiAtPlxuICAgICAgICBsZXQgaCA9IGhlaWdodCBsZWZ0MiAtIGhlaWdodCByaWdodDIgaW5cbiAgICAgICAgaWYgaCA+IDIgfHwgaCA8IC0yIHRoZW5cbiAgICAgICAgICBqb2luIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXAyXG5cbiAgICBsZXQgcmVjIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleSB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBrZXkgdmFsdWUgcmlnaHQgd2l0aFxuICAgICAgfCBlcnJvciwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgXCJNYXAuam9pbl93aXRoX2xvZ3MsIGxpbmUgOTg2LCB0aGUgb3V0cHV0IG9mIGJhbGFuY2Ugc2hvdWxkIG5vdCBcXFxuICAgICAgICAgICAgICAgIGJlIGVtcHR5XCIpXG4gICAgICAgICAgICAoZmFpbHdpdGggXCJ0aGUgb3V0cHV0IG9mIGJhbGFuY2Ugc2hvdWxkIG5vdCBiZSBlbXB0eVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgZW1wdHlcbiAgICAgIHwgZXJyb3IsIChQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSBhcyBtYXAyKSAtPlxuICAgICAgICBsZXQgaCA9IGhlaWdodCBsZWZ0MiAtIGhlaWdodCByaWdodDIgaW5cbiAgICAgICAgaWYgaCA+IDIgfHwgaCA8IC0yIHRoZW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDIga2V5MiBkYXRhMiByaWdodDJcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVycm9yLCBtYXAyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlbXB0eSwgTm9uZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIHZhbHVlIGtleTEgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgbGVmdDEsIFNvbWUgZGF0YTEsIHJpZ2h0MVxuICAgICAgICBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUgbGVmdDEgaW5cbiAgICAgICAgICBsZXQgcmlnaHQyJyA9IGpvaW4gcmlnaHQyIGtleTEgZGF0YTEgcmlnaHQxIGluXG4gICAgICAgICAgbGVmdDIsIGRhdGEyLCByaWdodDInXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUgcmlnaHQxIGluXG4gICAgICAgICAgbGV0IGxlZnQyJyA9IGpvaW4gbGVmdDEga2V5MSBkYXRhMSBsZWZ0MiBpblxuICAgICAgICAgIGxlZnQyJywgZGF0YTIsIHJpZ2h0MlxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIChlbXB0eSwgTm9uZSwgZW1wdHkpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSB2YWx1ZSBrZXkxIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCAobGVmdDEsIFNvbWUgZGF0YTEsIHJpZ2h0MSlcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0MicgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MiBrZXkxIGRhdGExIHJpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MicpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQyJyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEga2V5MSBkYXRhMSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0MicsIGRhdGEyLCByaWdodDIpXG4gICAgICAgIClcblxuICAgIGxldCByZWMgZGlmZiBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIGxldCBvbGVmdDEsIG9sZWZ0MiA9IGRpZmYgbGVmdDEgbGVmdDIgaW5cbiAgICAgICAgbGV0IG9yaWdodDEsIG9yaWdodDIgPSBkaWZmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiB4ID0gZGF0YTEgLT4gbWVyZ2Ugb2xlZnQxIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgam9pbiBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgIHwgTm9uZSAtPiBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyKVxuXG4gICAgbGV0IHJlYyB1bmlvbiBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gbWFwMlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IG1hcDFcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIGRhdGExLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgZGF0YTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID49IGhlaWdodDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBvcF9kYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUxIG1hcDIgaW5cbiAgICAgICAgICBqb2luICh1bmlvbiBsZWZ0MSBsZWZ0MikgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICAodW5pb24gcmlnaHQxIHJpZ2h0MilcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdDEsIG9wX2RhdGExLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgbWFwMSBpblxuICAgICAgICAgIGpvaW4gKHVuaW9uIGxlZnQxIGxlZnQyKSB2YWx1ZTFcbiAgICAgICAgICAgIChtYXRjaCBvcF9kYXRhMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBkMSlcbiAgICAgICAgICAgICh1bmlvbiByaWdodDEgcmlnaHQyKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBtYXAyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDFcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIGRhdGExLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgZGF0YTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID49IGhlaWdodDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIG9wX2RhdGEyLCByaWdodDIpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIG1hcDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MSwgb3BfZGF0YTEsIHJpZ2h0MSkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgbWFwMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZTFcbiAgICAgICAgICAgIChtYXRjaCBvcF9kYXRhMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBkMSlcbiAgICAgICAgICAgIHJpZ2h0J1xuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSBtYXAxIG1hcDIgPVxuICAgICAgaWYgbWFwMSA9PSBtYXAyIHRoZW5cbiAgICAgICAgbWFwMlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwMlxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgICAgam9pbiAodXBkYXRlIGxlZnQxIGxlZnQyKSBrZXkxXG4gICAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICAodXBkYXRlIHJpZ2h0MSByaWdodDIpXG4gICAgICApXG5cbiAgICBsZXQgcmVjIHVwZGF0ZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBpZiBtYXAxID09IG1hcDIgdGhlblxuICAgICAgICBlcnJvciwgbWFwMlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDJcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1cGRhdGVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdXBkYXRlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIGtleTFcbiAgICAgICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTFcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBkMilcbiAgICAgICAgICAgIHJpZ2h0J1xuICAgICAgKVxuXG4gICAgbGV0IHJlYyBkaWZmX3ByZWQgcHJlZCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIGxldCBvbGVmdDEsIG9sZWZ0MiA9IGRpZmZfcHJlZCBwcmVkIGxlZnQxIGxlZnQyIGluXG4gICAgICAgIGxldCBvcmlnaHQxLCBvcmlnaHQyID0gZGlmZl9wcmVkIHByZWQgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHByZWQgeCBkYXRhMSAtPiBtZXJnZSBvbGVmdDEgb3JpZ2h0MSwgbWVyZ2Ugb2xlZnQyIG9yaWdodDJcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgam9pbiBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxLCBqb2luIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgfCBOb25lIC0+IGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgbWVyZ2Ugb2xlZnQyIG9yaWdodDIpXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIGRhdGEsIF8sIF8sIF8pIC0+IFNvbWUgKGtleSwgZGF0YSlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxlZnRcblxuICAgIGxldCByZWMgZmluZF9vcHRpb24ga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBTb21lIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfb3B0aW9uIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBmaW5kX2RlZmF1bHQgZCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfZGVmYXVsdCBkIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBmaW5kX29wdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJsaW5lIDY1OVwiKSBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBTb21lIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfb3B0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBkIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibGluZSA2NjlcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBkXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZGF0YVxuICAgICAgICBlbHNlXG4gICAgICAgICAgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBkIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBtZW0ga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIF8sIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgY21wID09IDBcbiAgICAgICAgfHxcbiAgICAgICAgaWYgY21wID4gMCB0aGVuXG4gICAgICAgICAgbWVtIGtleSByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWVtIGtleSBsZWZ0XG5cbiAgICBsZXQgcmVjIGZpbHRlcl9vbmUgcCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBpZiBwIGtleSB2YWx1ZSB0aGVuXG4gICAgICAgICAgU29tZSAoa2V5LCB2YWx1ZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggZmlsdGVyX29uZSBwIGxlZnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfb25lIHAgcmlnaHRcbiAgICAgICAgICB8IG91dCAtPiBvdXRcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0ICgpID0gaXRlciBmIGxlZnQgaW5cbiAgICAgICAgbGV0ICgpID0gZiBrZXkgZGF0YSBpblxuICAgICAgICBpdGVyIGYgcmlnaHRcblxuICAgIGxldCByZWMgZm9sZCBmIG1hcCB2YWx1ZSA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgZm9sZCBmIHJpZ2h0IChmIGtleSBkYXRhIChmb2xkIGYgbGVmdCB2YWx1ZSkpXG5cbiAgICBsZXQgcmVjIGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZSwgU3RvcC5zdWNjZXNzIHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IG91dHB1dGwgPSBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbGVmdCB2YWx1ZSBpblxuICAgICAgICBsZXQgaW50ZXJydXB0ZWQsIHZhbHVlID0gb3V0cHV0bCBpblxuICAgICAgICBpZiBpbnRlcnJ1cHRlZCB0aGVuXG4gICAgICAgICAgb3V0cHV0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgbGV0IHZhbF9vcHQgPVxuICAgICAgICAgICAgICAgIHRyeSBTb21lIChmIGtleSBkYXRhIHZhbHVlKSB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHZhbF9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gdHJ1ZSwgU3RvcC5zdWNjZXNzIHZhbHVlXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgICAgICAgIChmdW4gdiAtPiBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgcmlnaHQgdilcbiAgICAgICAgICAgICAgICAgIChmdW4gdiAtPiBmYWxzZSwgU3RvcC5zdG9wIHYpXG4gICAgICAgICAgICAgICAgICB2KVxuICAgICAgICAgICAgKGZ1biB4IC0+IGZhbHNlLCBTdG9wLnN0b3AgeClcbiAgICAgICAgICAgIHZhbHVlXG5cbiAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIG1hcCB2YWx1ZSA9XG4gICAgICBzbmQgKGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUpXG5cbiAgICBsZXQgcmVjIG1vbmFkaWNfZm9sZCBwYXJhbSBlcnIgZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnIsIHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycicsIHZhbHVlJyA9IG1vbmFkaWNfZm9sZCBwYXJhbSBlcnIgZiBsZWZ0IHZhbHVlIGluXG4gICAgICAgIGxldCBlcnInJywgdmFsdWUnJyA9IGYgcGFyYW0gZXJyJyBrZXkgZGF0YSB2YWx1ZScgaW5cbiAgICAgICAgbW9uYWRpY19mb2xkIHBhcmFtIGVycicnIGYgcmlnaHQgdmFsdWUnJ1xuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbWFwMSBtYXAyIHJlcyA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgUHJpdmF0ZS5FbXB0eSAtPiByaCwgcmVzXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gbW9uYWRpY19mb2xkIHBhcmFtZXRlcnMgcmggaCBtYXAyIHJlc1xuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIHJoIGcgbWFwMSByZXNcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPSBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbGVmdDEgbGVmdDIgcmVzIGluXG4gICAgICAgICAgbGV0IHJoJycsIHJlcycnID0gZyBwYXJhbWV0ZXJzIHJoJyBrZXkxIGRhdGExIHJlcycgaW5cbiAgICAgICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmgnJyBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPSBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbGVmdDEgbGVmdDIgcmVzIGluXG4gICAgICAgICAgbGV0IHJoJycsIHJlcycnID0gZiBwYXJhbWV0ZXJzIHJoJyBrZXkxIGRhdGExIGRhdGEyIHJlcycgaW5cbiAgICAgICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmgnJyBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IG1vbmFkaWNfZm9sZDJfc3BhcnNlIHBhcmFtZXRlcnMgcmggZiBtYXAxIG1hcDIgcmVzID1cbiAgICAgIGxldCBpZCBfIHggXyBfIHkgPSB4LCB5IGluXG4gICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBpZCBpZCBtYXAxIG1hcDIgcmVzXG5cbiAgICBsZXQgbW9uYWRpY19pdGVyMl9zcGFyc2UgcGFyYW1ldGVycyByaCBmIG1hcDEgbWFwMiA9XG4gICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgbW9uYWRpY19mb2xkMl9zcGFyc2UgcGFyYW1ldGVycyByaFxuICAgICAgICAgIChmdW4gcCBlIGsgYSBiICgpIC0+IGYgcCBlIGsgYSBiLCAoKSlcbiAgICAgICAgICBtYXAxIG1hcDIgKClcbiAgICAgIGluXG4gICAgICBlcnJvclxuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gcGFyYW1ldGVycyByaCBmIHNldCBtYXAgcmVzID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFNldC5Qcml2YXRlLkVtcHR5IC0+IHJoLCByZXNcbiAgICAgIHwgU2V0LlByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHJoJywgcmVzJyA9XG4gICAgICAgICAgICBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gcGFyYW1ldGVycyByaCBmIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmgnIGYgcmlnaHQxIHJpZ2h0MiByZXMnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPVxuICAgICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGYgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmgnJyBmIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBub2RlIChtYXBpIGYgbGVmdCkga2V5IChmIGtleSBkYXRhKSAobWFwaSBmIHJpZ2h0KVxuXG4gICAgbGV0IG1hcCBmIHMgPSBtYXBpIChmdW4gXyB4IC0+IGYgeCkgc1xuXG4gICAgbGV0IHJlYyBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBtYXAgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvcnMsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9ycywgbGVmdCcgPSBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBsZWZ0IGluXG4gICAgICAgIGxldCBlcnJvcnMsIGRhdGEnID0gZiBwYXJhbWV0ZXJzIGVycm9ycyBkYXRhIGluXG4gICAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgcmlnaHQgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCcga2V5IGRhdGEnIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBtYXAyIGYgbWFwIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAnXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwJyBpblxuICAgICAgICBqb2luIChtYXAyIGYgbGVmdDEgbGVmdDIpIGtleTFcbiAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgIHwgU29tZSBkMiAtPiBmIGRhdGExIGQyKVxuICAgICAgICAgIChtYXAyIGYgcmlnaHQxIHJpZ2h0MilcblxuICAgIGxldCByZWMgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgKG1hdGNoIG1hcDIgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3JzLCBlbXB0eVxuICAgICAgICB8IFByaXZhdGUuTm9kZSBfIC0+IG1hcF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBnIG1hcDIpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvcnMsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3JzLCBsZWZ0JyA9XG4gICAgICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCBsZWZ0MSBsZWZ0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCByaWdodDEgcmlnaHQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZGF0YScgPVxuICAgICAgICAgIG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGRhdGExXG4gICAgICAgICAgfCBTb21lIGQyIC0+IGggcGFyYW1ldGVycyBlcnJvcnMgZGF0YTEgZDJcbiAgICAgICAgaW5cbiAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIGtleTEgZGF0YScgcmlnaHQnXG5cbiAgICBsZXQgbWFwMnpfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgPVxuICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yc1xuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI0OCwgaW5jb21wYXRpYmxlIG1hcHMgaW4gbWFwMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI1MSwgaW5jb21wYXRpYmxlIG1hcHMgaW4gbWFwMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuXG4gICAgbGV0IHJlYyBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIG1hcDEgbWFwMiByZXMgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHJlc1xuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIGVycm9yIGcgbWFwMiByZXNcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyBlcnJvciBmIG1hcDEgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgZGF0YTEgcmVzJyBpblxuICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBoIHBhcmFtZXRlcnMgZXJyb3IgKGtleTEgOiBlbHQpIGRhdGExIGRhdGEyIHJlcycgaW5cbiAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgZm9sZDJ6X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgPVxuICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgXyBfIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNDgsIGluY29tcGF0aWJsZSBtYXBzIGluIGZvbGQyel9zYWZlXCIpIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGEpXG4gICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBfIF8gYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI1MSwgaW5jb21wYXRpYmxlIG1hcHMgaW4gZm9sZDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcblxuICAgIGxldCByZWMgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBtYXAxIG1hcDIgcmVzID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIHJpZ2h0MSByaWdodDIgcmVzJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IGl0ZXIyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbWFwMSBtYXAyID1cbiAgICAgIGxldCBlcnJvciwgXyA9XG4gICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXIgZXJyIGEgYiBjIF8gLT4gZiBwYXIgZXJyIGEgYiBjLCAoKSlcbiAgICAgICAgICBtYXAxIG1hcDIgKClcbiAgICAgIGluXG4gICAgICBlcnJvclxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBwIGtleSBkYXRhICYmIGZvcl9hbGwgcCByaWdodCAmJiBmb3JfYWxsIHAgbGVmdFxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgZCwgciwgXywgXykgLT4gY29uc19lbnVtIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgICBjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGNvbXBhcmVcbiAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICBpZiBjbXAgeCB5IHRoZW5cbiAgICAgICAgICAgIDBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAxKVxuICAgICAgICBtMSBtMlxuICAgICAgPT0gMFxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIHYsIGQsIHIsIF8sIF8pIC0+XG4gICAgICAgIGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID0gYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCByZWMgYXV4X3ByaW50IHByIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCBQcml2YXRlLkVtcHR5LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS0+QCwlYUBdXCIgT3JkLnByaW50IGtleSBwciBkYXRhXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEtPiVhQF0sQCAlYVwiIE9yZC5wcmludCBrZXkgcHIgZGF0YSAoYXV4X3ByaW50IHByKVxuICAgICAgICAgIHJpZ2h0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCBQcml2YXRlLkVtcHR5LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhLT4lYUBdXCIgKGF1eF9wcmludCBwcikgbGVmdCBPcmQucHJpbnQga2V5IHByXG4gICAgICAgICAgZGF0YVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWEtPiVhQF0sQCAlYVwiIChhdXhfcHJpbnQgcHIpIGxlZnQgT3JkLnByaW50XG4gICAgICAgICAga2V5IHByIGRhdGEgKGF1eF9wcmludCBwcikgcmlnaHRcblxuICAgIGxldCBwcmludCBwciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDg4XFx4ODVcIlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyBhcyBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAW3slYX1AXVwiIChhdXhfcHJpbnQgcHIpIG1cblxuICAgIGxldCByZWMgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZWZ0MSwgb2xlZnQyID1cbiAgICAgICAgICBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvcmlnaHQxLCBvcmlnaHQyID1cbiAgICAgICAgICBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHggPSBkYXRhMSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yKVxuXG4gICAgbGV0IHJlYyBkaWZmX3ByZWRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwcmVkIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZWZ0MSwgb2xlZnQyID1cbiAgICAgICAgICBkaWZmX3ByZWRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwcmVkIGxlZnQxIGxlZnQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb3JpZ2h0MSwgb3JpZ2h0MiA9XG4gICAgICAgICAgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCByaWdodDEgcmlnaHQyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4gcHJlZCB4IGRhdGExIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIGtleTEgZGF0YTIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMlxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzIpXG5cbiAgICBsZXQgcmVjIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgIGVycm9yIGYgZyBzZXQgbWFwIHJlcyA9XG4gICAgICBtYXRjaCBzZXQsIG1hcCB3aXRoXG4gICAgICB8IFNldC5Qcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCByZXNcbiAgICAgIHwgU2V0LlByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgICBlcnJvciBmIGcgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZyBrZXkxIChlcnJvciwgcmVzJykgaW5cbiAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgZXJyb3IgZiBnIHJpZ2h0MSByaWdodDIgcmVzJydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgICAgICAgIGVycm9yIGYgZyBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBmIGtleTEgZGF0YTIgKGVycm9yLCByZXMnKSBpblxuICAgICAgICAgIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgICAgICBlcnJvciBmIGcgcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBzZXQgbWFwIHJlcyA9XG4gICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICBmXG4gICAgICAgIChmdW4gXyB4IC0+IHgpXG4gICAgICAgIHNldCBtYXAgcmVzXG5cbiAgICBsZXQgdG9fanNvbiA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIikgPVxuICAgICAgSnNvblV0aWwub2ZfbWFwIH5sYWJfa2V5IH5sYWJfdmFsdWUgfmZvbGRcblxuICAgIGxldCBvZl9qc29uID8obGFiX2tleSA9IFwia2V5XCIpID8obGFiX3ZhbHVlID0gXCJ2YWx1ZVwiKVxuICAgICAgICA/KGVycm9yX21zZyA9IEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibWFwXCIpID1cbiAgICAgIEpzb25VdGlsLnRvX21hcCB+bGFiX2tleSB+bGFiX3ZhbHVlIH5lcnJvcl9tc2cgfmFkZCB+ZW1wdHlcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgc2V0X2FcbiAgdHlwZSBzZXRfYlxuXG4gIHZhbCBwcm9qX21hcCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPiAnYiAtPiAoJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdhIG1hcF9hIC0+ICdiIG1hcF9iXG5cbiAgdmFsIHByb2pfbWFwX21vbmFkaWMgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAnYiAtPlxuICAgICgncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiIG1hcF9iXG5cbiAgdmFsIHByb2pfc2V0IDogKGVsdF9hIC0+IGVsdF9iKSAtPiBzZXRfYSAtPiBzZXRfYlxuXG4gIHZhbCBwcm9qX3NldF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0X2EgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogZWx0X2IpIC0+XG4gICAgc2V0X2EgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogc2V0X2JcblxuICB2YWwgcGFydGl0aW9uX3NldCA6IChlbHRfYSAtPiBlbHRfYikgLT4gc2V0X2EgLT4gc2V0X2EgbWFwX2JcblxuICB2YWwgcGFydGl0aW9uX3NldF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0X2EgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogZWx0X2IpIC0+XG4gICAgc2V0X2EgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogc2V0X2EgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvaiAoQSA6IFMpIChCIDogUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIFNBID0gQS5TZXRcbiAgbW9kdWxlIFNCID0gQi5TZXRcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBzZXRfYSA9IFNBLnRcbiAgdHlwZSBzZXRfYiA9IFNCLnRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcblxuICBsZXQgcHJval9tYXAgZiBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYlxuICAgICAgICAgIChtZXJnZSAoTUIuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYiBtYXBfYikgZGF0YV9hKVxuICAgICAgICAgIG1hcF9iKVxuICAgICAgbWFwIE1CLmVtcHR5XG5cbiAgbGV0IHByb2pfbWFwX21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBpZGVudGl0eV9lbHQgbW9uYWRpY19tZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQgaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1vbmFkaWNfbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgIChNQi5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9iIG1hcF9iKVxuICAgICAgICAgICAgZGF0YV9hXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZXIsIE1CLmFkZCBrZXlfYiBkYXRhJyBtYXBfYilcbiAgICAgIG1hcCAoaGFuZGxlciwgTUIuZW1wdHkpXG5cbiAgbGV0IHByb2pfc2V0IGYgc2V0X2EgPSBTQS5mb2xkIChmdW4ga2V5X2EgLT4gU0IuYWRkIChmIGtleV9hKSkgc2V0X2EgU0IuZW1wdHlcblxuICBsZXQgcHJval9zZXRfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChoYW5kbGVyLCBzZXRfYikgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGtleV9iID0gZiBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYSBpblxuICAgICAgICBoYW5kbGVyLCBTQi5hZGQga2V5X2Igc2V0X2IpXG4gICAgICBzZXRfYSAoaGFuZGxlciwgU0IuZW1wdHkpXG5cbiAgbGV0IHBhcnRpdGlvbl9zZXQgZiBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYiAoU0EuYWRkIGtleV9hIChNQi5maW5kX2RlZmF1bHQgU0EuZW1wdHkga2V5X2IgbWFwX2IpKSBtYXBfYilcbiAgICAgIHNldF9hIE1CLmVtcHR5XG5cbiAgbGV0IHBhcnRpdGlvbl9zZXRfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGtleV9iID0gZiBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYSBpblxuICAgICAgICAoIGhhbmRsZXIsXG4gICAgICAgICAgTUIuYWRkIGtleV9iXG4gICAgICAgICAgICAoU0EuYWRkIGtleV9hIChNQi5maW5kX2RlZmF1bHQgU0EuZW1wdHkga2V5X2IgbWFwX2IpKVxuICAgICAgICAgICAgbWFwX2IgKSlcbiAgICAgIHNldF9hIChoYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuKCogdG9kbzogYWRkIHRoZSBmb2xsb3dpbmcgIHRlc3QgdG8gdGhlIHNhbml0eSB0ZXN0cyAqKVxuXG4oKlxuKCogZm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIGNvZGU6ICopXG5cbm1vZHVsZSBJbnRNYXAgPSBNYWtlKHN0cnVjdCB0eXBlIHQgPSBpbnQgbGV0IGNvbXBhcmUgPSBjb21wYXJlIGVuZClcbm1vZHVsZSBQID0gUHJvaihJbnRNYXApKEludE1hcClcblxuXG5sZXQgZiA9IExpc3QuZm9sZF9sZWZ0XG4oZnVuIG1hcCAoYSxiKSAtPiBJbnRNYXAuTWFwLmFkZCBhIGIgbWFwKVxuSW50TWFwLk1hcC5lbXB0eVxuWzEsWzI7M107MixbMzs0XTs1LFs2OzddOzgsWzEyOzEzXV1cblxuKCogYmFkIGltcGxlbWVudGF0aW9uIChxdWFkcmF0aWMgdGltZSBjb21wbGV4aXR5KSAqKVxubGV0IGcgPSBQLnByb2ogKGZ1biBpIC0+IGkgbW9kIDIpIFtdIChMaXN0LmFwcGVuZCkgZlxuXG4oKiBnb29kIGltcGxlbWVudGF0aW9uIChsaW5lYXIgdGltZSBjb21wbGV4aXR5KSopXG5sZXQgZycgPSBJbnRNYXAuTWFwLm1hcCBMaXN0LnJldiAoUC5wcm9qIChmdW4gaSAtPiBpIG1vZCAyKSBbXSAoZnVuIHggeSAtPiBMaXN0LmFwcGVuZCAoTGlzdC5yZXYgeSkgeCkgZilcblxuXG5sZXQgZHVtcCAoczpzdHJpbmcpIGYgPVxuICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVzOiBcXG5cIiBzIGluXG4gIGxldCBfID0gSW50TWFwLk1hcC5pdGVyXG4oZnVuIGEgbCAtPlxubGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCIgICVpOlwiIGEgaW5cbmxldCBfID0gTGlzdC5pdGVyIChQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlaSxcIikgbCBpblxubGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpbiAoKSlcbmYgaW5cbiAgKClcbmxldCBfID0gZHVtcCBcImZcIiBmXG5sZXQgXyA9IGR1bXAgXCJnXCIgZ1xubGV0IF8gPSBkdW1wIFwiZydcIiBnJ1xuXG4oKiBzaG91bGQgZHVtcDogKilcbigqXG5cbmY6XG4gIDE6MiwzLFxuICAyOjMsNCxcbiAgNTo2LDcsXG4gIDg6MTIsMTMsXG5nOlxuICAwOjMsNCwxMiwxMyxcbiAgMToyLDMsNiw3LFxuICopXG4gKilcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbjIgPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgZWx0X2NcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgJ2EgbWFwX2NcblxuICB2YWwgcHJvajIgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ2IgLT4gJ2EgLT4gJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnYiBtYXBfYyBtYXBfYlxuXG4gIHZhbCBwcm9qMl9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9jKSAtPlxuICAgICdiIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IgbWFwX2MgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvajIgKEEgOiBTKSAoQiA6IFMpIChDIDogUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIE1DID0gQy5NYXBcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBlbHRfYyA9IE1DLmVsdFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuICB0eXBlICdhIG1hcF9jID0gJ2EgTUMudFxuXG4gIGxldCBwcm9qMiBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgbWFwX2IgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQi5maW5kX2RlZmF1bHQgTUMuZW1wdHkga2V5X2IgbWFwX2IgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9XG4gICAgICAgICAgTUMuYWRkIGtleV9jXG4gICAgICAgICAgICAobWVyZ2UgKE1DLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2Mgc3VibWFwKSBkYXRhX2EpXG4gICAgICAgICAgICBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCBNQi5lbXB0eVxuXG4gIGxldCBwcm9qMl9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUIuZmluZF9kZWZhdWx0IE1DLmVtcHR5IGtleV9iIG1hcF9iIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBkYXRhJyA9XG4gICAgICAgICAgbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgIChNQy5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcClcbiAgICAgICAgICAgIGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUMuYWRkIGtleV9jIGRhdGEnIHN1Ym1hcCBpblxuICAgICAgICBoYW5kbGVyLCBNQi5hZGQga2V5X2Igc3VibWFwIG1hcF9iKVxuICAgICAgbWFwIChoYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGludF9jb21wYXJlICh4IDogaW50KSB5ID0gU3RkbGliLmNvbXBhcmUgeCB5XG5cbmxldCBpbnRfcGFpcl9jb21wYXJlIChwLCBxKSAocCcsIHEnKSA9XG4gIGxldCBvID0gaW50X2NvbXBhcmUgcCBwJyBpblxuICBpZiBvID0gMCB0aGVuXG4gICAgaW50X2NvbXBhcmUgcSBxJ1xuICBlbHNlXG4gICAgb1xuXG5sZXQgc3RyaW5nX3BhaXJfY29tcGFyZSAocCwgcSkgKHAnLCBxJykgPVxuICBsZXQgbyA9IFN0cmluZy5jb21wYXJlIHAgcCcgaW5cbiAgaWYgbyA9IDAgdGhlblxuICAgIFN0cmluZy5jb21wYXJlIHEgcSdcbiAgZWxzZVxuICAgIG9cblxubGV0IHBhaXJfZXF1YWwgZXFhIGVxYiAoeGEsIHhiKSAoeWEsIHliKSA9IGVxYSB4YSB5YSAmJiBlcWIgeGIgeWJcblxubW9kdWxlIFN0cmluZ1NldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG5lbmQpXG5cbm1vZHVsZSBTdHJpbmdTZXQgPSBTdHJpbmdTZXRNYXAuU2V0XG5tb2R1bGUgU3RyaW5nTWFwID0gU3RyaW5nU2V0TWFwLk1hcFxuXG5tb2R1bGUgU3RyaW5nMlNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBzdHJpbmdfcGFpcl9jb21wYXJlXG4gIGxldCBwcmludCBmIChhLCBiKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIoJXMsICVzKVwiIGEgYlxuZW5kKVxuXG5tb2R1bGUgU3RyaW5nMk1hcCA9IFN0cmluZzJTZXRNYXAuTWFwXG5cbm1vZHVsZSBJbnRTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBjb21wYXJlID0gaW50X2NvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kKVxuXG5tb2R1bGUgSW50U2V0ID0gSW50U2V0TWFwLlNldFxubW9kdWxlIEludE1hcCA9IEludFNldE1hcC5NYXBcblxubW9kdWxlIEludDJTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGludCAqIGludFxuXG4gIGxldCBjb21wYXJlID0gaW50X3BhaXJfY29tcGFyZVxuICBsZXQgcHJpbnQgZiAoYSwgYikgPSBGb3JtYXQuZnByaW50ZiBmIFwiKCVpLCAlaSlcIiBhIGJcbmVuZClcblxubW9kdWxlIEludDJTZXQgPSBJbnQyU2V0TWFwLlNldFxubW9kdWxlIEludDJNYXAgPSBJbnQyU2V0TWFwLk1hcFxuXG5tb2R1bGUgQ2hhclNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gY2hhclxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfY2hhclxuZW5kKVxuXG5tb2R1bGUgQ2hhclNldCA9IENoYXJTZXRNYXAuU2V0XG5tb2R1bGUgQ2hhck1hcCA9IENoYXJTZXRNYXAuTWFwXG5tb2R1bGUgRHluQXJyYXkgPSBEeW5hbWljQXJyYXkuRHluQXJyYXkgKExhcmdlQXJyYXkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdW5zb21lIGRlZmF1bHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgYSAtPiBhXG5cbmxldCB1bnNvbWVfb3JfcmFpc2VcbiAgICA/KGV4Y2VwID0gSW52YWxpZF9hcmd1bWVudCBcInVuc29tZV9vcl9yYWlzZSB3YXMgcGFzc2VkIGEgTm9uZVwiKSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiByYWlzZSBleGNlcFxuICB8IFNvbWUgYSAtPiBhXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgfCBOb25lIC0+IE5vbmVcblxubGV0IGJpbmQgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBvIC0+IGYgb1xuXG5sZXQgZm9sZCBmIHggPSBmdW5jdGlvblxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgeSAtPiBmIHggeVxuXG5sZXQgZXF1YWwgZXEgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXEgeCB5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBvc2l0aW9uID0geyBjaHI6IGludDsgbGluZTogaW50IH1cbnR5cGUgdCA9IHsgZmlsZTogc3RyaW5nOyBmcm9tX3Bvc2l0aW9uOiBwb3NpdGlvbjsgdG9fcG9zaXRpb246IHBvc2l0aW9uIH1cbnR5cGUgJ2EgYW5ub3RlZCA9ICdhICogdFxuXG5sZXQgdiAodiwgXykgPSB2XG5sZXQgZ2V0X2Fubm90IChfLCBhbm5vdCkgPSBhbm5vdFxubGV0IGNvcHlfYW5ub3QgKF8sIGxvYykgYSA9IGEsIGxvY1xubGV0IG1hcF9hbm5vdCBmIChhLCBsb2MpID0gZiBhLCBsb2NcblxubGV0IG9mX3BvcyBzdGFydF9sb2NhdGlvbiBlbmRfbG9jYXRpb24gPVxuICBsZXQgKCkgPVxuICAgIGFzc2VydCAoc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19mbmFtZSA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2ZuYW1lKVxuICBpblxuICB7XG4gICAgZmlsZSA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfZm5hbWU7XG4gICAgZnJvbV9wb3NpdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGNociA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfY251bSAtIHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfYm9sO1xuICAgICAgICBsaW5lID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19sbnVtO1xuICAgICAgfTtcbiAgICB0b19wb3NpdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGNociA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2NudW0gLSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19ib2w7XG4gICAgICAgIGxpbmUgPSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19sbnVtO1xuICAgICAgfTtcbiAgfVxuXG5sZXQgZHVtbXlfcG9zaXRpb24gPVxuICB7XG4gICAgY2hyID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2NudW0gLSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfYm9sO1xuICAgIGxpbmUgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfbG51bTtcbiAgfVxuXG5sZXQgZHVtbXkgPVxuICB7XG4gICAgZmlsZSA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZTtcbiAgICBmcm9tX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb247XG4gICAgdG9fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvbjtcbiAgfVxuXG5sZXQgYW5ub3Rfd2l0aF9kdW1teSB4ID0geCwgZHVtbXlcblxubGV0IGlzX2R1bW15IGxvYyA9XG4gIGxvYy5maWxlID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lXG4gICYmIGxvYy5mcm9tX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb25cbiAgJiYgbG9jLnRvX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb25cblxubGV0IGlzX2Fubm90ZWRfd2l0aF9kdW1teSAoXywgbG9jKSA9IGlzX2R1bW15IGxvY1xuXG5sZXQgcHJpbnQgZiBsb2MgPVxuICBsZXQgcHJfZiBmID1cbiAgICBpZiBsb2MuZmlsZSA8PiBcIlwiIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkZpbGUgXFxcIiVzXFxcIiwgXCIgbG9jLmZpbGVcbiAgaW5cbiAgbGV0IHByX2wgZiA9XG4gICAgaWYgbG9jLmZyb21fcG9zaXRpb24ubGluZSA9IGxvYy50b19wb3NpdGlvbi5saW5lIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJsaW5lICVpXCIgbG9jLmZyb21fcG9zaXRpb24ubGluZVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJsaW5lcyAlaS0laVwiIGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmUgbG9jLnRvX3Bvc2l0aW9uLmxpbmVcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiV0JXQsIGNoYXJhY3RlcnMgJWktJWk6XCIgcHJfZiBwcl9sIGxvYy5mcm9tX3Bvc2l0aW9uLmNoclxuICAgIGxvYy50b19wb3NpdGlvbi5jaHJcblxubGV0IHRvX3N0cmluZyBsb2MgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludCBsb2NcbmxldCBwcmludF9hbm5vdGVkIHByIGYgKHgsIGwpID0gRm9ybWF0LmZwcmludGYgZiBcIiVhQCAlYVwiIHByaW50IGwgcHIgeFxuXG5sZXQgcmVhZF9wb3NpdGlvbiBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBJbnQgbGluZSk7IChcImNoclwiLCBgSW50IGNocikgXVxuICB8IGBBc3NvYyBbIChcImNoclwiLCBgSW50IGNocik7IChcImxpbmVcIiwgYEludCBsaW5lKSBdIC0+XG4gICAgeyBsaW5lOyBjaHIgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwb3NpdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3Bvc2l0aW9uIG9iIHsgbGluZTsgY2hyIH0gPVxuICBZb2pzb24ud3JpdGVfYXNzb2Mgb2IgWyBcImxpbmVcIiwgYEludCBsaW5lOyBcImNoclwiLCBgSW50IGNociBdXG5cbmxldCB0b19jb21wYWN0X3lvanNvbiBkZWNscyBsb2MgPVxuICBpZiBpc19kdW1teSBsb2MgdGhlblxuICAgIGBOdWxsXG4gIGVsc2VcbiAgICBgQXNzb2NcbiAgICAgICgoaWYgbG9jLmZyb21fcG9zaXRpb24ubGluZSA8PiBsb2MudG9fcG9zaXRpb24ubGluZSB0aGVuXG4gICAgICAgICAgZnVuIGwgLT5cbiAgICAgICAgKFwiZWxpbmVcIiwgYEludCBsb2MudG9fcG9zaXRpb24ubGluZSkgOjogbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnVuIGwgLT5cbiAgICAgICAgbClcbiAgICAgICAgIFtcbiAgICAgICAgICAgKCBcImZpbGVcIixcbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZCAoTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbG9jLmZpbGUpIGRlY2xzXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBpIC0+IGBJbnQgaVxuICAgICAgICAgICAgIHwgTm9uZSAtPiBgU3RyaW5nIGxvYy5maWxlICk7XG4gICAgICAgICAgIFwiYmxpbmVcIiwgYEludCBsb2MuZnJvbV9wb3NpdGlvbi5saW5lO1xuICAgICAgICAgICBcImJjaHJcIiwgYEludCBsb2MuZnJvbV9wb3NpdGlvbi5jaHI7XG4gICAgICAgICAgIFwiZWNoclwiLCBgSW50IGxvYy50b19wb3NpdGlvbi5jaHI7XG4gICAgICAgICBdKVxuXG5sZXQgb2ZfY29tcGFjdF95b2pzb24gPyhmaWxlbmFtZXMgPSBbfHxdKSA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gZHVtbXlcbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8PSA1IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBmaWxlID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJmaWxlXCIgbCB3aXRoXG4gICAgICAgICB8IGBTdHJpbmcgeCAtPiB4XG4gICAgICAgICB8IGBJbnQgaSAtPiBmaWxlbmFtZXMuKGkpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCBvZl9saW5lID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJibGluZVwiIGwgd2l0aFxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgb2ZfY2hyID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJiY2hyXCIgbCB3aXRoXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCB0b19jaHIgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImVjaHJcIiBsIHdpdGhcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IHRvX2xpbmUgPVxuICAgICAgICAgbWF0Y2ggWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZWxpbmVcIiB4IHdpdGhcbiAgICAgICAgIHwgYE51bGwgLT4gb2ZfbGluZVxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlO1xuICAgICAgICAgZnJvbV9wb3NpdGlvbiA9IHsgbGluZSA9IG9mX2xpbmU7IGNociA9IG9mX2NociB9O1xuICAgICAgICAgdG9fcG9zaXRpb24gPSB7IGxpbmUgPSB0b19saW5lOyBjaHIgPSB0b19jaHIgfTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBhcnJvd19ub3RhdGlvblwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuXG5sZXQgeW9qc29uX29mX2Fubm90ZWQgP2ZpbGVuYW1lcyBmICh4LCBsKSA9XG4gIGxldCBqcCA9IHRvX2NvbXBhY3RfeW9qc29uIGZpbGVuYW1lcyBsIGluXG4gIGlmIGpwID0gYE51bGwgdGhlblxuICAgIGBBc3NvYyBbIFwidmFsXCIsIGYgeCBdXG4gIGVsc2VcbiAgICBgQXNzb2MgWyBcInZhbFwiLCBmIHg7IFwibG9jXCIsIGpwIF1cblxubGV0IGFubm90ZWRfb2ZfeW9qc29uID9maWxlbmFtZXMgZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIHgpOyAoXCJsb2NcIiwgbCkgXSB8IGBBc3NvYyBbIChcImxvY1wiLCBsKTsgKFwidmFsXCIsIHgpIF0gLT5cbiAgICBmIHgsIG9mX2NvbXBhY3RfeW9qc29uID9maWxlbmFtZXMgbFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCB4KSBdIC0+IGYgeCwgZHVtbXlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9yYW5nZSBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9fY29tcGFjdF95b2pzb24gTm9uZSBmKVxuXG5sZXQgc3RyaW5nX29mX3JhbmdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3JhbmdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9yYW5nZSBwIGxiID1cbiAgb2ZfY29tcGFjdF95b2pzb24gP2ZpbGVuYW1lczpOb25lIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCByYW5nZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmFuZ2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IGlzX2luY2x1ZGVkX2luIGZpbGUgeyBsaW5lOyBjaHIgfSByYW5nZSA9XG4gIGZpbGUgPSByYW5nZS5maWxlXG4gICYmIGxpbmUgPj0gcmFuZ2UuZnJvbV9wb3NpdGlvbi5saW5lXG4gICYmIGxpbmUgPD0gcmFuZ2UudG9fcG9zaXRpb24ubGluZVxuICAmJiAobGluZSA8PiByYW5nZS5mcm9tX3Bvc2l0aW9uLmxpbmUgfHwgY2hyID49IHJhbmdlLmZyb21fcG9zaXRpb24uY2hyKVxuICAmJiAobGluZSA8PiByYW5nZS50b19wb3NpdGlvbi5saW5lIHx8IGNociA8PSByYW5nZS50b19wb3NpdGlvbi5jaHIpXG5cbmxldCBtZXJnZSBiIGUgPVxuICBpZiBpc19kdW1teSBiIHRoZW5cbiAgICBlXG4gIGVsc2UgaWYgaXNfZHVtbXkgZSB0aGVuXG4gICAgYlxuICBlbHNlIChcbiAgICBsZXQgKCkgPSBhc3NlcnQgKGIuZmlsZSA9IGUuZmlsZSkgaW5cbiAgICB7XG4gICAgICBmaWxlID0gYi5maWxlO1xuICAgICAgZnJvbV9wb3NpdGlvbiA9IGIuZnJvbV9wb3NpdGlvbjtcbiAgICAgIHRvX3Bvc2l0aW9uID0gZS50b19wb3NpdGlvbjtcbiAgICB9XG4gIClcblxuKCoqIEFubm90ZWQgeW9qc29uIGhlbHBlcnMgKilcblxubGV0IHN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcyA9XG4gIHlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nXG5cbmxldCBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMgPVxuICBhbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgc3RyaW5nX29wdGlvbl9hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcyA9XG4gIHlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG5cbmxldCBzdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzID1cbiAgYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBGb3JtYXRcblxubGV0IGxpc3RpID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgbCA9XG4gIGxldCByZWMgYXV4IGFjYyBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIGVsIF0gLT5cbiAgICAgIGxldCAoKSA9IHByX2VsIGFjYyBmIGVsIGluXG4gICAgICB0cmFpbGluZyBmXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCAoKSA9IHByX2VsIGFjYyBmIGggaW5cbiAgICAgIGxldCAoKSA9IHByX3NlcCBmIGluXG4gICAgICBhdXggKHN1Y2MgYWNjKSBmIHRcbiAgaW5cbiAgYXV4IDAgZiBsXG5cbmxldCBsaXN0ID90cmFpbGluZyBwcl9zZXAgcHJfZWwgZiBsID1cbiAgbGlzdGkgP3RyYWlsaW5nIHByX3NlcCAoZnVuIF8gZiB4IC0+IHByX2VsIGYgeCkgZiBsXG5cbmxldCBzZXQgP3RyYWlsaW5nIGVsZW1lbnRzIHByX3NlcCBwcl9lbCBmIHNldCA9XG4gIGxpc3QgP3RyYWlsaW5nIHByX3NlcCBwcl9lbCBmIChlbGVtZW50cyBzZXQpXG5cbmxldCBoYXNodGJsIHByX3NlcCBwcl9lbCBmIHRibCA9XG4gIGxpc3QgcHJfc2VwIHByX2VsIGYgKEhhc2h0YmwuZm9sZCAoZnVuIGEgYiBsIC0+IChhLCBiKSA6OiBsKSB0YmwgW10pXG5cbmxldCBib3R0b20gZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4OEFcXHhBNVwiXG5sZXQgbnUgZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceENFXFx4QkRcIlxubGV0IGVtcHR5X3NldCBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXFx4RTJcXHg4OFxceDg1XCJcbmxldCBjb21tYSBmID0gZnByaW50ZiBmIFwiLEAgXCJcbmxldCBkb3QgZiA9IGZwcmludGYgZiBcIi5cIlxubGV0IGNvbXBhY3RfY29tbWEgZiA9IGZwcmludGYgZiBcIixALFwiXG5sZXQgY29sb24gZiA9IGZwcmludGYgZiBcIjtAIFwiXG5sZXQgc3BhY2UgZiA9IHBwX3ByaW50X3NwYWNlIGYgKClcbmxldCBjdXQgZiA9IHBwX3ByaW50X2N1dCBmICgpXG5sZXQgZW1wdHkgXyA9ICgpXG5sZXQgdW5pdCBfICgpID0gKClcbmxldCBwYWlyIHBwYSBwcGIgZiAoYSwgYikgPSBmcHJpbnRmIGYgXCIoJWEsICVhKVwiIHBwYSBhIHBwYiBiXG5cbmxldCBvcHRpb24gPyh3aXRoX3NwYWNlID0gdHJ1ZSkgcHIgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgIGZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIGlmIHdpdGhfc3BhY2UgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKSlcbiAgICAgIHByIHhcblxubGV0IGFycmF5ID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJfZWwgaSBmIGEuKGkpIGluXG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgICBhdXggKHN1Y2MgaSkgZlxuICAgICAgKSBlbHNlIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgdHJhaWxpbmcgZlxuICAgIClcbiAgaW5cbiAgYXV4IDAgZlxuXG5sZXQgcGxhaW5fYXJyYXkgcHJfZWwgZiBhID1cbiAgbGV0IHJlYyBhdXggaSBmID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJWk6JWFcIiBpIHByX2VsIGEuKGkpIGluXG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgLSAxIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIjtALCV0XCIgKGF1eCAoc3VjYyBpKSlcbiAgICApXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJbfCV0fF1cIiAoYXV4IDApXG5cbmxldCBlcnJvciBwciB4ID0gZXByaW50ZiBcIiVhQC5cIiAoTG9jLnByaW50X2Fubm90ZWQgcHIpIHhcblxubGV0IGxpc3RfdG9fc3RyaW5nIHByX3NlcCBwcl9lbCAoKSBsID1cbiAgbGV0IHJlYyBhdXggKCkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgWyBlbCBdIC0+IHByX2VsICgpIGVsXG4gICAgfCBoIDo6IHQgLT4gc3ByaW50ZiBcIiVhJXQlYVwiIHByX2VsIGggcHJfc2VwIGF1eCB0XG4gIGluXG4gIGF1eCAoKSBsXG5cbmxldCBzZXRfdG9fc3RyaW5nIGVsZW1lbnRzIHByX3NlcCBwcl9lbCAoKSBzZXQgPVxuICBsaXN0X3RvX3N0cmluZyBwcl9zZXAgcHJfZWwgKCkgKGVsZW1lbnRzIHNldClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gaW50XG50eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2YgdCAqIGtleSAqIHQgKiBpbnQgKiBJbnQ2NC50XG4oKk5vZGUobGVmdCxrZXkscmlnaHQsaGVpZ2h0LGFjYykqKVxuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuXG5sZXQgYWNjdmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwTFxuICB8IE5vZGUgKF8sIF8sIF8sIF8sIGFjYykgLT4gYWNjXG5cbmxldCB0b3RhbCA9IGFjY3ZhbFxuXG5sZXQgd2VpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwTFxuICB8IE5vZGUgKGwsIF8sIHIsIF8sIGFjYykgLT4gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcilcblxubGV0IHJlYyBwcmludCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBQcC5lbXB0eV9zZXQgZlxuICB8IE5vZGUgKGwsIGssIHIsIF8sIGFjYykgYXMgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj48JWQsJUxpKCVMaSk+QCxbJWFALHwlYUAsXVwiIGsgYWNjICh3ZWlnaHQgeClcbiAgICAgIHByaW50IGwgcHJpbnQgclxuXG5sZXQgY3JlYXRlIGwga2V5IGFjYyByID1cbiAgbGV0IGhsID0gaGVpZ2h0IGwgaW5cbiAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgTm9kZSAobCwga2V5LCByLCBzdWNjIChtaW4gaGwgaHIpLCBhY2MpXG5cbmxldCBiYWwgbCB4IHcgciA9XG4gIGxldCBobCA9IGhlaWdodCBsIGluXG4gIGxldCBociA9IGhlaWdodCByIGluXG4gIGlmIGhsID4gaHIgKyAyIHRoZW4gKFxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLmJhbFwiXG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBhY2NfbCkgLT5cbiAgICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgY3JlYXRlIGxsIGx2XG4gICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgIChjcmVhdGUgbHIgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgdyAoYWNjdmFsIGxyKSkgYWNjX3IpIHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGFjY19scnIgPSBhY2N2YWwgbHJyIGluXG4gICAgICAgICAgY3JlYXRlXG4gICAgICAgICAgICAoY3JlYXRlIGxsIGx2IChJbnQ2NC5zdWIgYWNjX2wgYWNjX2xycikgbHJsKVxuICAgICAgICAgICAgbHJ2XG4gICAgICAgICAgICAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpXG4gICAgICAgICAgICAoY3JlYXRlIGxyciB4IChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbHJyIHcpIGFjY19yKSByKVxuICAgICAgKVxuICApIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiAoXG4gICAgbWF0Y2ggciB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIGFjY19yKSAtPlxuICAgICAgbGV0IGFjY19sID0gYWNjdmFsIGwgaW5cbiAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICBjcmVhdGVcbiAgICAgICAgICAoY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgKGFjY3ZhbCBybCkpIHJsKVxuICAgICAgICAgIHJ2XG4gICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgIHJyXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGFjY19ybGwgPSBhY2N2YWwgcmxsIGluXG4gICAgICAgICAgY3JlYXRlXG4gICAgICAgICAgICAoY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3JsbCkgcmxsKVxuICAgICAgICAgICAgcmx2XG4gICAgICAgICAgICAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpXG4gICAgICAgICAgICAoY3JlYXRlIHJsciBydiAoSW50NjQuc3ViIGFjY19yIGFjY19ybGwpIHJyKVxuICAgICAgKVxuICApIGVsc2UgKFxuICAgIGxldCBhY2NfbCA9IGFjY3ZhbCBsIGluXG4gICAgbGV0IGFjY19yID0gYWNjdmFsIHIgaW5cbiAgICBjcmVhdGUgbCB4IChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcikgclxuICApXG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IE5vZGUgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIGFkZCBrZXkgd2VpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb2RlIChFbXB0eSwga2V5LCBFbXB0eSwgMSwgSW50NjQub2ZfaW50IHdlaWdodClcbiAgfCBOb2RlIChsLCBrZXknLCByLCBoLCBhY2MpIC0+XG4gICAgaWYga2V5ID0ga2V5JyB0aGVuXG4gICAgICBOb2RlXG4gICAgICAgICggbCxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcixcbiAgICAgICAgICBoLFxuICAgICAgICAgIEludDY0LmFkZCAoSW50NjQuYWRkIChJbnQ2NC5vZl9pbnQgd2VpZ2h0KSAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIClcbiAgICBlbHNlIChcbiAgICAgIGxldCB3ZWlnaHQnID0gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcikgaW5cbiAgICAgIGlmIGtleSA8IGtleScgdGhlblxuICAgICAgICBiYWwgKGFkZCBrZXkgd2VpZ2h0IGwpIGtleScgd2VpZ2h0JyByXG4gICAgICBlbHNlXG4gICAgICAgIGJhbCBsIGtleScgd2VpZ2h0JyAoYWRkIGtleSB3ZWlnaHQgcilcbiAgICApXG5cbmxldCByZWMgZmluZF9hY2MgYWltX2FjYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTm9kZSAobCwga2V5LCByLCBfLCBhY2MpIC0+XG4gICAgaWYgYWltX2FjYyA+PSBhY2MgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYWNjX2wgPSBhY2N2YWwgbCBpblxuICAgICAgbGV0IGFjY19yID0gYWNjdmFsIHIgaW5cbiAgICAgIGlmIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgIGZpbmRfYWNjIGFpbV9hY2MgbFxuICAgICAgZWxzZSBpZiBJbnQ2NC5hZGQgYWNjX3IgYWNjX2wgPiBhaW1fYWNjIHRoZW5cbiAgICAgICAgZmluZF9hY2MgKEludDY0LnN1YiBhaW1fYWNjIGFjY19sKSByXG4gICAgICBlbHNlXG4gICAgICAgIGtleVxuICAgIClcblxubGV0IHJlYyBtZW0ga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IE5vZGUgKGwsIGtleScsIHIsIF8sIF8pIC0+XG4gICAgbGV0IGMgPSBNb2RzLmludF9jb21wYXJlIGtleSBrZXknIGluXG4gICAgYyA9IDBcbiAgICB8fCBtZW0ga2V5XG4gICAgICAgICAoaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHIpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IE5vZGUgKEVtcHR5LCB4LCByLCBfLCBhY2MpIC0+IHgsIEludDY0LnN1YiBhY2MgKGFjY3ZhbCByKVxuICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9iaW5kaW5nIGxcblxubGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5yZW1vdmVfbWluX2VsdFwiXG4gIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgfCBOb2RlIChsLCB4LCByLCBfLCBhY2MpIC0+XG4gICAgbGV0IHdlaWdodCA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgeCB3ZWlnaHQgclxuXG5sZXQgbWVyZ2UgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEVtcHR5LCB0IC0+IHRcbiAgfCB0LCBFbXB0eSAtPiB0XG4gIHwgTm9kZSBfLCBOb2RlIF8gLT5cbiAgICBsZXQgeCwgdyA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgYmFsIHQxIHggdyAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG5sZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IE5vZGUgKGwsIHYsIHIsIF8sIGFjYykgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmUgeCB2IGluXG4gICAgaWYgYyA9IDAgdGhlblxuICAgICAgbWVyZ2UgbCByXG4gICAgZWxzZSAoXG4gICAgICBsZXQgd2VpZ2h0ID0gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcikgaW5cbiAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgYmFsIChyZW1vdmUgeCBsKSB2IHdlaWdodCByXG4gICAgICBlbHNlXG4gICAgICAgIGJhbCBsIHYgd2VpZ2h0IChyZW1vdmUgeCByKVxuICAgIClcbigqXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBOb2RlKGwsIHYsIHIsIF8sXykgYXMgeCAtPiBpdGVyIGYgbDsgZiB2ICh3ZWlnaHQgeCk7IGl0ZXIgZiByXG5cbmxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gIG1hdGNoIG0gd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBOb2RlKGwsIHYsIHIsIF8sXykgYXMgeCAtPiBmb2xkIGYgciAoZiB2ICh3ZWlnaHQgeCkgKGZvbGQgZiBsIGFjY3UpKVxuKilcblxuKCoqUmV0dXJucyAoa2V5LHZhbHVlKSBhdCByYW5kb20gaW4gdGhlIHRyZWUqKVxubGV0IHJhbmRvbSBzdGF0ZSBtID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBSYW5kb20uU3RhdGUuaW50NjQgc3RhdGUgKGFjY3ZhbCBtKSBpblxuICAgIGZpbmRfYWNjIHIgbVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAucmFuZG9tX3ZhbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXR1cyA9XG4gIFsgYE9LXG4gIHwgYEFjY2VwdGVkXG4gIHwgYENyZWF0ZWRcbiAgfCBgQmFkX3JlcXVlc3RcbiAgfCBgQ29uZmxpY3RcbiAgfCBgTm90X2ZvdW5kXG4gIHwgYFJlcXVlc3RfdGltZW91dCBdXG4oKiogVGhlIHN1YnNldCBvZiBbQ29odHRwLkNvZGUuc3RhdHVzXSB3ZSBuZWVkICopXG5cbnR5cGUgbWVzc2FnZSA9IHtcbiAgc2V2ZXJpdHk6IExvZ3MubGV2ZWw7XG4gIHRleHQ6IHN0cmluZzsgKCpzaG91bGQgYmUgYW4gYWxnZWJyYWljIHR5cGUqKVxuICByYW5nZTogTG9jLnQgb3B0aW9uO1xufVxuXG4oKiBOb3RlKEFQKTogT24gY2hvaWNlIG9mIFJlc3VsdF91dGlsLnRcbiAgIEkgdGhpbmsgdGhpcyBkZWZpbml0aW9uIHdhcyBhbiBlcnJvciwgYXMgaXQgZm9yY2VzIHRvIHJlZGVmaW5lIGZ1bmN0aW9ucyB0byB1c2UgdGhlIHN0cnVjdHVyZSwgYXMgd2VsbCBhcyBpbXBlZGVzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGx3dCByZXN1bHRzLCB3aGVyZSB3ZSBjb3VsZCBoYXZlIHVzZWQgdGhlIGx3dF9yZXN1bHQgcHJpbWl0aXZlcyBpbnN0ZWFkIG9mIG5ldyBmdW5jdGlvbnMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQgb3JkZXIsIGFuZCBwcmVzZW5jZSBvZiBib3RoIEFwaS5yZXN1bHQgYW5kIEFwaS5yZXN1bHQgTHd0LnQgKFNlZSBhcGlfY29tbW9uLm1saSkuXG4gICBXZSBjb3VsZCBoYXZlIHVzZWQgaW5zdGVhZDogYHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgc3RhdHVzICogJ2IpIFJlc3VsdC5yZXN1bHRgIG9yIHNpbWlsYXIgd2l0aCBhIHJlY29yZCBvciBlbHNlLlxuICAgVGhpcyBpcyBjb21wbGV4IGFzIHdlIGhhdmUgJ2Igd2hpY2ggaXMgaW4gc29tZSBwbGFjZXMgYSByZWNvcmQgb2YgbGlzdHMgb2YgZXhjZXB0aW9ucyAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAsIHNvbWV0aW1lcyBtYWRlIHVwIHRvIHJlY29yZCBhbiBlcnJvciwgYW5kIHNvbWV0aW1lcyBhIEFwaS5yZXN1bHQsIHdpdGggJ2IgYSBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QuXG4gICAoSW5pdGlhbGx5IHRoZSByZWNvcmQgYWxzbyBjb250YWluZWQgYSBub3ctcmVtb3ZlZCBgbWVzc2FnZWAgZmllbGQsIHdoaWNoIHdhcyB1bnVzZWQgYXMgdGhlIG1lc3NhZ2VzIHdlcmUgc3RvcmVkIGluIHRoZSAnYilcblxuICAgVGhpcyBpcyBhIGxvdCBvZiB3b3JrIGZvciBmZXcgYmVuZWZpdHMgbm93LCBidXQgdGhhdCBtYWtlcyB1c2luZyByZXN1bHRzIGEgYml0IHBhaW5mdWwuXG4gICBTZWVtcyBiZXN0IHRvIHVzZWQgQXBpLnJlc3VsdCBmb3IgbmV3IHN0dWZmIGluIHRoZSB3ZWJhcHAsIHVwZGF0ZSB0byBpdCB3aGVuIGl0J3Mgbm90LCBhbmQgbWF5YmUga2VlcCB0aGUgcmVzdWx0IHdpdGggdGhlIGV4Y2VwdGlvbnMgd2hlcmUgaXQncyB1c2VkLlxuKilcblxudHlwZSAoJ2EsICdiKSB0ID0geyB2YWx1ZTogKCdhLCAnYikgUmVzdWx0LnJlc3VsdDsgc3RhdHVzOiBzdGF0dXMgfVxuXG5sZXQgd3JpdGVfc2V2ZXJpdHkgb2IgeCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInIGluXG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChMb2dzLmxldmVsX3RvX3N0cmluZyAoU29tZSB4KSkgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHJlYWRfc2V2ZXJpdHkgcCBsYiA9XG4gIG1hdGNoIExvZ3MubGV2ZWxfb2Zfc3RyaW5nIChZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYikgd2l0aFxuICB8IFJlc3VsdC5PayAoU29tZSB4KSAtPiB4XG4gIHwgUmVzdWx0Lk9rIE5vbmUgLT4gcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIFwiTWVzc2FnZSBvZiBubyBzZXZlcml0eVwiKVxuICB8IFJlc3VsdC5FcnJvciAoYE1zZyB4KSAtPlxuICAgIHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciAoXCJXaGlsZSByZWFkaW5nIHNldmVyaXR5OiBcIiBeIHgpKVxuXG5sZXQgd3JpdGVfc3RhdHVzIG9iID0gZnVuY3Rpb25cbiAgfCBgT0sgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIyMDBcIlxuICB8IGBBY2NlcHRlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjIwMlwiXG4gIHwgYENyZWF0ZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIyMDFcIlxuICB8IGBCYWRfcmVxdWVzdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwMFwiXG4gIHwgYENvbmZsaWN0IC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiNDA5XCJcbiAgfCBgTm90X2ZvdW5kIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiNDA0XCJcbiAgfCBgUmVxdWVzdF90aW1lb3V0IC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiNDA4XCJcblxubGV0IHJlYWRfc3RhdHVzIHAgbGIgPVxuICBtYXRjaCBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiB3aXRoXG4gIHwgMjAwIC0+IGBPS1xuICB8IDIwMiAtPiBgQWNjZXB0ZWRcbiAgfCAyMDEgLT4gYENyZWF0ZWRcbiAgfCA0MDAgLT4gYEJhZF9yZXF1ZXN0XG4gIHwgNDA5IC0+IGBDb25mbGljdFxuICB8IDQwNCAtPiBgTm90X2ZvdW5kXG4gIHwgNDA4IC0+IGBSZXF1ZXN0X3RpbWVvdXRcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uSnNvbl9lcnJvclxuICAgICAgICAgKFwiU3RhdHVzIFwiIF4gc3RyaW5nX29mX2ludCB4IF4gXCIgaXMgb3V0IG9mIHRoZSBzY29wZSBvZiBLYXBwYVwiKSlcblxubGV0IHdyaXRlX21lc3NhZ2Ugb2IgeyBzZXZlcml0eTsgdGV4dDsgcmFuZ2UgfSA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJzZXZlcml0eVwiIHdyaXRlX3NldmVyaXR5IG9iIHNldmVyaXR5IGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwidGV4dFwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgdGV4dCBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgciAtPlxuICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicmFuZ2VcIiBMb2Mud3JpdGVfcmFuZ2Ugb2IgclxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCByZWFkX21lc3NhZ2UgcCBsYiA9XG4gIGxldCBzZXZlcml0eSwgdGV4dCwgcmFuZ2UgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAocywgdCwgcikga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzZXZlcml0eVwiIHRoZW5cbiAgICAgICAgICByZWFkX3NldmVyaXR5IHAgbGIsIHQsIHJcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcInRleHRcIiB0aGVuXG4gICAgICAgICAgcywgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHJcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcInJhbmdlXCIgdGhlblxuICAgICAgICAgIHMsIHQsIFNvbWUgKExvYy5yZWFkX3JhbmdlIHAgbGIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgKFwiTm8gZmllbGQgXCIgXiBrZXkgXiBcIiBleHBlY3RlZCBpbiBtZXNzYWdlXCIpKSlcbiAgICAgIChMb2dzLkFwcCwgXCJcIiwgTm9uZSkgcCBsYlxuICBpblxuICB7IHNldmVyaXR5OyB0ZXh0OyByYW5nZSB9XG5cbmxldCBwcmludF9tZXNzYWdlIGYgeyByYW5nZTsgdGV4dDsgXyB9ID1cbiAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICB8IFNvbWUgcmFuZ2UgLT4gTG9jLnByaW50X2Fubm90ZWQgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmICh0ZXh0LCByYW5nZSlcbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB0ZXh0XG5cbmxldCB3cml0ZV90IHdyaXRlX19vayB3cml0ZV9fZXJyb3Igb2IgPSBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgeDsgc3RhdHVzIH0gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiT2tcXFwiLFwiO1xuICAgIHdyaXRlX19vayBvYiB4O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgd3JpdGVfc3RhdHVzIG9iIHN0YXR1cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciB4OyBzdGF0dXMgfSAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJFcnJvclxcXCIsXCI7XG4gICAgd3JpdGVfX2Vycm9yIG9iIHg7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICB3cml0ZV9zdGF0dXMgb2Igc3RhdHVzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHN0cmluZ19vZl90IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF90X2NvbnRlbnQgZiBwIGxiID1cbiAgbGV0IHYgPSBmIHAgbGIgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIGxldCBzID0gcmVhZF9zdGF0dXMgcCBsYiBpblxuICB2LCBzXG5cbmxldCByZWFkX3QgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcCBsYiA9XG4gIGxldCBhdXhfcmVhZF90IGNsb3NpbmcgcCBsYiA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBsZXQgb3V0ID1cbiAgICAgIFlvanNvbi5CYXNpYy5tYXBfaWRlbnQgcFxuICAgICAgICAoZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgIG1hdGNoIFN0cmluZy5zdWIgcyBwb3MgbGVuIHdpdGhcbiAgICAgICAgICB8IFwiT2tcIiAtPlxuICAgICAgICAgICAgbGV0IHYsIHN0YXR1cyA9IHJlYWRfdF9jb250ZW50IHJlYWRfX29rIHAgbGIgaW5cbiAgICAgICAgICAgIHsgdmFsdWUgPSBSZXN1bHQuT2sgdjsgc3RhdHVzIH1cbiAgICAgICAgICB8IFwiRXJyb3JcIiAtPlxuICAgICAgICAgICAgbGV0IHYsIHN0YXR1cyA9IHJlYWRfdF9jb250ZW50IHJlYWRfX2Vycm9yIHAgbGIgaW5cbiAgICAgICAgICAgIHsgdmFsdWUgPSBSZXN1bHQuRXJyb3Igdjsgc3RhdHVzIH1cbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChZb2pzb24uSnNvbl9lcnJvclxuICAgICAgICAgICAgICAgICAoXCJGaWVsZCBcXFwiXCIgXiB4IF4gXCJcXFwiIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgcmVzdWx0IHR5cGVcIikpKVxuICAgICAgICBsYlxuICAgIGluXG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBjbG9zaW5nIHAgbGI7XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBvdXRcbiAgaW5cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICB8IGBFZGd5X2JyYWNrZXQgLT4gYXV4X3JlYWRfdCBZb2pzb24uQmFzaWMucmVhZF9ndCBwIGxiXG4gIHwgYERvdWJsZV9xdW90ZSAtPiByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgXCJOb3Qgb2YgcmVzdWx0IHR5cGVcIilcbiAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gYXV4X3JlYWRfdCBZb2pzb24uQmFzaWMucmVhZF9yYnIgcCBsYlxuXG5sZXQgdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgbGlmdCA/KG9rX3N0YXR1cyA9IGBPSykgPyhlcnJvcl9zdGF0dXMgPSBgQmFkX3JlcXVlc3QpID0gZnVuY3Rpb25cbiAgfCBSZXN1bHQuT2sgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBva19zdGF0dXMgfVxuICB8IFJlc3VsdC5FcnJvciBfIGFzIHZhbHVlIC0+IHsgdmFsdWU7IHN0YXR1cyA9IGVycm9yX3N0YXR1cyB9XG5cbmxldCBmb2xkIH4ob2sgOiAnb2sgLT4gJ2EpIH4oZXJyb3IgOiAnZXJyb3IgLT4gJ2EpIDogKCdvaywgJ2Vycm9yKSB0IC0+ICdhID1cbiAgZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIG87IF8gfSAtPiBvayBvXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBlOyBfIH0gLT4gZXJyb3IgZVxuXG5sZXQgYmluZCA6XG4gICAgdHlwZSBvayBhIGVyci5cbiAgICA/b3ZlcndyaXRlX3N0YXR1czpzdGF0dXMgLT5cbiAgICA/ZXJyb3Jfc3RhdHVzOnN0YXR1cyAtPlxuICAgIChvayAtPiAoYSwgZXJyKSBSZXN1bHQucmVzdWx0KSAtPlxuICAgIChvaywgZXJyKSB0IC0+XG4gICAgKGEsIGVycikgdCA9XG4gZnVuID9vdmVyd3JpdGVfc3RhdHVzID8oZXJyb3Jfc3RhdHVzID0gYEJhZF9yZXF1ZXN0KSBvayAtPiBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUgLT4gZVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgc3RhdHVzIH0gLT5cbiAgICAobWF0Y2ggb2sgbyB3aXRoXG4gICAgfCBSZXN1bHQuRXJyb3IgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBlcnJvcl9zdGF0dXMgfVxuICAgIHwgUmVzdWx0Lk9rIF8gYXMgdmFsdWUgLT5cbiAgICAgIChtYXRjaCBvdmVyd3JpdGVfc3RhdHVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB7IHZhbHVlOyBzdGF0dXMgfVxuICAgICAgfCBTb21lIHN0YXR1cyAtPiB7IHZhbHVlOyBzdGF0dXMgfSkpXG5cbmxldCBtYXAgOiB0eXBlIG9rIGEgZXJyLiAob2sgLT4gYSkgLT4gKG9rLCBlcnIpIHQgLT4gKGEsIGVycikgdCA9XG4gZnVuIG9rIC0+IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBvOyBzdGF0dXMgfSAtPiB7IHZhbHVlID0gUmVzdWx0Lk9rIChvayBvKTsgc3RhdHVzIH1cbiAgfCB7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlIC0+IGVcblxubGV0IG1hcDIgOlxuICAgIHR5cGUgYSBiIG9rIGVyci4gKGEgLT4gYiAtPiBvaykgLT4gKGEsIGVycikgdCAtPiAoYiwgZXJyKSB0IC0+IChvaywgZXJyKSB0ID1cbiBmdW4gZiBhIGIgLT5cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBhOyBfIH0sIHsgdmFsdWUgPSBSZXN1bHQuT2sgYjsgc3RhdHVzIH0gLT5cbiAgICB7IHZhbHVlID0gUmVzdWx0Lk9rIChmIGEgYik7IHN0YXR1cyB9XG4gIHwgKHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUpLCBfIC0+IGVcbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIF87IF8gfSwgKHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUpIC0+IGVcblxubGV0IGVycm9yID8oc3RhdHVzID0gYEJhZF9yZXF1ZXN0KSAoZXJyb3IgOiAnZXJyb3IpIDogKCdvaywgJ2Vycm9yKSB0ID1cbiAgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBlcnJvcjsgc3RhdHVzIH1cblxubGV0IG9rID8oc3RhdHVzID0gYE9LKSAob2sgOiAnb2spIDogKCdvaywgJ2Vycm9yKSB0ID1cbiAgeyB2YWx1ZSA9IFJlc3VsdC5PayBvazsgc3RhdHVzIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcbmV4Y2VwdGlvbiBOb3RCaWplY3RpdmVcbmV4Y2VwdGlvbiBDbGFzaGluZ1xuXG5sZXQgc3BlY2lhbF92YWwgPSBtYXhfaW50XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpbW1lZGlhdGU6IGludCBhcnJheTtcbiAgbXV0YWJsZSBkZWxheWVkOiAodCAqIHQpIG9wdGlvbjtcbiAgbXV0YWJsZSBpc19pZGVudGl0eTogYm9vbDtcbiAgbXV0YWJsZSBkc3RzOiBNb2RzLkludFNldC50O1xufVxuXG5sZXQgZW1wdHkgKCkgPVxuICB7XG4gICAgaW1tZWRpYXRlID0gW3x8XTtcbiAgICBkZWxheWVkID0gTm9uZTtcbiAgICBpc19pZGVudGl0eSA9IHRydWU7XG4gICAgZHN0cyA9IE1vZHMuSW50U2V0LmVtcHR5O1xuICB9XG5cbmxldCBkdW1teSA9IGVtcHR5ICgpXG5cbmxldCBpZGVudGl0eSBsID1cbiAgbGV0IG1heCA9IExpc3QuZm9sZF9sZWZ0IG1heCAwIGwgaW5cbiAgbGV0IGltbWVkaWF0ZSA9IEFycmF5Lm1ha2UgKHN1Y2MgbWF4KSBzcGVjaWFsX3ZhbCBpblxuICBsZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biB4IC0+IGltbWVkaWF0ZS4oeCkgPC0geCkgbCBpblxuICB7XG4gICAgaW1tZWRpYXRlO1xuICAgIGRlbGF5ZWQgPSBOb25lO1xuICAgIGlzX2lkZW50aXR5ID0gdHJ1ZTtcbiAgICBkc3RzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gb3V0IHggLT4gTW9kcy5JbnRTZXQuYWRkIHggb3V0KSBNb2RzLkludFNldC5lbXB0eSBsO1xuICB9XG5cbmxldCBpc19pZGVudGl0eSBpID0gaS5pc19pZGVudGl0eVxuXG5sZXQgcmVjIGNvbXB1dGUgayBpID1cbiAgbGV0IHYgPSBpLmltbWVkaWF0ZS4oaykgaW5cbiAgaWYgdiA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgdlxuICBlbHNlIChcbiAgICBtYXRjaCBpLmRlbGF5ZWQgd2l0aFxuICAgIHwgTm9uZSAtPiBzcGVjaWFsX3ZhbFxuICAgIHwgU29tZSAoeCwgeSkgLT5cbiAgICAgIGlmIGsgPj0gQXJyYXkubGVuZ3RoIHguaW1tZWRpYXRlIHRoZW5cbiAgICAgICAgc3BlY2lhbF92YWxcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdicgPSBjb21wdXRlIGsgeCBpblxuICAgICAgICBpZiB2JyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICBzcGVjaWFsX3ZhbFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdicnID0gY29tcHV0ZSB2JyB5IGluXG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgaWYgdicnID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgICAgICB2J1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB2JydcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGkuaW1tZWRpYXRlLihrKSA8LSBvIGluXG4gICAgICAgICAgb1xuICAgICAgICApXG4gICAgICApXG4gIClcblxubGV0IGZvcmNlIGkgPVxuICBpZiBpLmRlbGF5ZWQgPD4gTm9uZSB0aGVuIChcbiAgICBsZXQgKCkgPSBBcnJheS5pdGVyaSAoZnVuIGsgXyAtPiBpZ25vcmUgKGNvbXB1dGUgayBpKSkgaS5pbW1lZGlhdGUgaW5cbiAgICBpLmRlbGF5ZWQgPC0gTm9uZVxuICApXG5cbmxldCB0b19saXN0IGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgYWNjIHYgLT5cbiAgICAgIGlmIHYgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAoaSwgdikgOjogYWNjXG4gICAgICBlbHNlXG4gICAgICAgIGFjYylcbiAgICBbXSBpLmltbWVkaWF0ZVxuICB8PiBMaXN0LnJldlxuXG5sZXQgaW1hZ2UgaSA9IGkuZHN0c1xuXG5sZXQgdW5zYWZlX2Z1bmN0aW9ubmFsX2FkZCB4IHkgaSA9XG4gIGxldCBsID0gbWF4IChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpICh4ICsgMSkgaW5cbiAgbGV0IGltbWVkaWF0ZSA9IEFycmF5Lm1ha2UgbCBzcGVjaWFsX3ZhbCBpblxuICBsZXQgKCkgPSBBcnJheS5ibGl0IGkuaW1tZWRpYXRlIDAgaW1tZWRpYXRlIDAgKEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSkgaW5cbiAgbGV0ICgpID0gaW1tZWRpYXRlLih4KSA8LSB5IGluXG4gIHtcbiAgICBpbW1lZGlhdGU7XG4gICAgZGVsYXllZCA9IGkuZGVsYXllZDtcbiAgICBpc19pZGVudGl0eSA9IGkuaXNfaWRlbnRpdHkgJiYgeCA9PSB5O1xuICAgIGRzdHMgPSBNb2RzLkludFNldC5hZGQgeSBpLmRzdHM7XG4gIH1cblxubGV0IGFkZCB+ZGVidWdfbW9kZSB4IHkgaSA9XG4gIGxldCBub3Rfb2sgPVxuICAgIGRlYnVnX21vZGUgJiYgeCA8IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSAmJiBpLmltbWVkaWF0ZS4oeCkgPD4gc3BlY2lhbF92YWxcbiAgaW5cbiAgaWYgbm90X29rIHRoZW5cbiAgICByYWlzZSBDbGFzaGluZ1xuICBlbHNlIChcbiAgICBsZXQgaScgPSB1bnNhZmVfZnVuY3Rpb25uYWxfYWRkIHggeSBpIGluXG4gICAgaWYgaS5kc3RzID09IGknLmRzdHMgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgaSdcbiAgKVxuXG5sZXQgdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHggeSBpID1cbiAgbGV0ICgpID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSBpblxuICAgIGlmIHggPj0gbCB0aGVuIChcbiAgICAgIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChzdWNjIHgpIHNwZWNpYWxfdmFsIGluXG4gICAgICBsZXQgKCkgPSBBcnJheS5ibGl0IGkuaW1tZWRpYXRlIDAgaW1tZWRpYXRlIDAgbCBpblxuICAgICAgbGV0ICgpID0gaW1tZWRpYXRlLih4KSA8LSB5IGluXG4gICAgICBpLmltbWVkaWF0ZSA8LSBpbW1lZGlhdGVcbiAgICApIGVsc2VcbiAgICAgIGkuaW1tZWRpYXRlLih4KSA8LSB5XG4gIGluXG4gIGxldCAoKSA9IGkuaXNfaWRlbnRpdHkgPC0gaS5pc19pZGVudGl0eSAmJiB4ID09IHkgaW5cbiAgaS5kc3RzIDwtIE1vZHMuSW50U2V0LmFkZCB5IGkuZHN0c1xuXG5sZXQgaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgeCB5IGkgPVxuICBsZXQgbm90X29rID1cbiAgICBkZWJ1Z19tb2RlICYmIHggPCBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgJiYgaS5pbW1lZGlhdGUuKHgpIDw+IHNwZWNpYWxfdmFsXG4gIGluXG4gIGlmIG5vdF9vayB0aGVuXG4gICAgcmFpc2UgQ2xhc2hpbmdcbiAgZWxzZSAoXG4gICAgbGV0IG9yaWdpbiA9IGkuZHN0cyBpblxuICAgIGxldCAoKSA9IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB4IHkgaSBpblxuICAgIG5vdCAoaS5kc3RzID09IG9yaWdpbilcbiAgKVxuXG5sZXQgcmVjIGN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2lkZW50aXR5IG1heCBpZCBzdWJzdCBwcmUgPSBmdW5jdGlvblxuICB8IF8gd2hlbiBwcmUgPSBpZCAtPiB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgcHJlIG1heCBzdWJzdFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IGggOjogdCAtPlxuICAgIGxldCAoKSA9IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCBwcmUgaCBzdWJzdCBpblxuICAgIGN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2lkZW50aXR5IG1heCBpZCBzdWJzdCBoIHRcblxubGV0IGN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2xpc3QgfnN0b3BfYXQgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwiUmVuYW1pbmcuY3ljbGljX3Blcm11dGF0aW9uX2Zyb21fbGlzdFwiXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0IG91dCA9IGVtcHR5ICgpIGluXG4gICAgbGV0ICgpID0gY3ljbGljX3Blcm11dGF0aW9uX2Zyb21faWRlbnRpdHkgaCBzdG9wX2F0IG91dCBoIHQgaW5cbiAgICBvdXRcblxubGV0IG1lbSB4IGkgPSB4IDwgQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlICYmIGNvbXB1dGUgeCBpIDw+IHNwZWNpYWxfdmFsXG5cbmxldCBmb2xkIGYgaSBhY2MgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgYWNjIHYgLT5cbiAgICAgIGlmIHYgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICBmIGkgdiBhY2MpXG4gICAgYWNjIGkuaW1tZWRpYXRlXG5cbmxldCBhcHBseSB+ZGVidWdfbW9kZSBpIHggPVxuICBpZiAobm90IGkuaXNfaWRlbnRpdHkpIHx8IGRlYnVnX21vZGUgdGhlbiAoXG4gICAgbGV0IGMgPSBjb21wdXRlIHggaSBpblxuICAgIGlmIGMgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICByYWlzZSBVbmRlZmluZWRcbiAgICBlbHNlXG4gICAgICBjXG4gICkgZWxzZVxuICAgIHhcblxubGV0IGNvbXBvc2UgfmRlYnVnX21vZGUgZXh0ZW5zaWJsZSBpIGknID1cbiAgaWYgKG5vdCBpLmlzX2lkZW50aXR5KSB8fCBleHRlbnNpYmxlIHx8IGRlYnVnX21vZGUgdGhlblxuICAgIHtcbiAgICAgIGltbWVkaWF0ZSA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSkgc3BlY2lhbF92YWw7XG4gICAgICBkZWxheWVkID0gU29tZSAoaSwgaScpO1xuICAgICAgaXNfaWRlbnRpdHkgPSBpLmlzX2lkZW50aXR5ICYmIGknLmlzX2lkZW50aXR5O1xuICAgICAgZHN0cyA9XG4gICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHYnIHNldCAtPlxuICAgICAgICAgICAgbGV0IHYnJyA9IGNvbXB1dGUgdicgaScgaW5cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmFkZCB2Jycgc2V0KVxuICAgICAgICAgIGkuZHN0cyBNb2RzLkludFNldC5lbXB0eTtcbiAgICB9XG4gICgqIGxldCBzaWdtYSxpc19pZCA9XG4gICAgICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIHggeSAob3V0LGlzX2lkKSAtPlxuICAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiB5IGknLnNpZ21hIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHogLT4gKE1vZHMuSW50TWFwLmFkZCB4IHogb3V0LGlzX2lkICYmIHg9PXopXG4gICAgICAgICAgIHwgTm9uZSAtPiAob3V0LGlzX2lkICYmIHg9PXkpXG4gICAgICAgICApIGkuc2lnbWEgKGkuc2lnbWEsdHJ1ZSlcbiAgICAgaW5cbiAgICAge3NpZ21hPXNpZ21hIDsgaXNfaWRlbnRpdHk9aXNfaWQgOyBkc3RzID0gaScuZHN0c31cbiAgKilcbiAgZWxzZVxuICAgIGknXG5cbmxldCBpbnZlcnNlIGkgPVxuICBpZiBpLmlzX2lkZW50aXR5IHRoZW5cbiAgICBpXG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICBpZiB5IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHkgPCBBcnJheS5sZW5ndGggb3V0LmltbWVkaWF0ZSAmJiBvdXQuaW1tZWRpYXRlLih5KSA8PiBzcGVjaWFsX3ZhbFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByYWlzZSBOb3RCaWplY3RpdmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHkgeCBvdXQpXG4gICAgICAgIGkuaW1tZWRpYXRlXG4gICAgaW5cbiAgICBvdXRcbiAgKVxuXG5sZXQgY29tcGFyZSBpIGknID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBsZXQgKCkgPSBmb3JjZSBpJyBpblxuICBUb29scy5hcnJheV9jb21wYXJlIE1vZHMuaW50X2NvbXBhcmUgaS5pbW1lZGlhdGUgaScuaW1tZWRpYXRlXG5cbmxldCBlcXVhbCBpIGknID0gY29tcGFyZSBpIGknID0gMFxuXG5sZXQgbWluX2VsdCBpID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgaW5cbiAgbGV0IHJlYyBhdXhfbWluX2VsdCBrID1cbiAgICBpZiBrID49IGwgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG8gPSBjb21wdXRlIGsgaSBpblxuICAgICAgaWYgbyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgYXV4X21pbl9lbHQgKHN1Y2MgaylcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoaywgbylcbiAgICApXG4gIGluXG4gIGF1eF9taW5fZWx0IDBcblxubGV0IHByaW50IGYgaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgaWdub3JlXG4gICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAoZnVuIHNyYyBiIGRzdCAtPlxuICAgICAgICAgaWYgc3JjIDw+IGRzdCAmJiBkc3QgPD4gc3BlY2lhbF92YWwgdGhlbiAoXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWktPiVpXCJcbiAgICAgICAgICAgICAgIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgIFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICBzcmMgZHN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHRydWVcbiAgICAgICAgICkgZWxzZVxuICAgICAgICAgICBiKVxuICAgICAgIGZhbHNlIGkuaW1tZWRpYXRlKVxuXG5sZXQgcHJpbnRfZnVsbCBmIGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyglYSlAXVwiXG4gICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gc3JjIGYgZHN0IC0+XG4gICAgICAgICBpZiBkc3QgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgICBpZiBzcmMgPD4gZHN0IHRoZW5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWktPiVpXCIgc3JjIGRzdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmIHNyYykpXG4gICAgaS5pbW1lZGlhdGVcblxubGV0IHRvX3lvanNvbiBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBgTGlzdFxuICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgKGZ1biBzcmMgYWNjIGRzdCAtPlxuICAgICAgICAgaWYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgYExpc3QgWyBgSW50IHNyYzsgYEludCBkc3QgXSA6OiBhY2NcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgYWNjKVxuICAgICAgIFtdIGkuaW1tZWRpYXRlKVxuXG5sZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+XG4gICAgbGV0IG91dCA9IGVtcHR5ICgpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IGBMaXN0IFsgYEludCBzcmM7IGBJbnQgZHN0IF0gYXMgeCAtPlxuICAgICAgICAgICAgaWYgbm90IChpbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZTpmYWxzZSBzcmMgZHN0IG91dCkgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCByZW5hbWluZyBpdGVtXCIsIHgpKVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJlbmFtaW5nIGl0ZW1cIiwgeCkpKVxuICAgICAgICBsXG4gICAgaW5cbiAgICBvdXRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCByZW5hbWluZ1wiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdHJlZSA9IHtcbiAgbWFzazogKGludCwgaW50KSBIYXNodGJsLnQ7XG4gIHVubWFzazogKGludCwgaW50KSBIYXNodGJsLnQ7XG4gIG11dGFibGUgbmV3X21hc2s6IGludDtcbiAgbXV0YWJsZSBpbmZfbGlzdDogTW9kcy5JbnRTZXQudDtcbiAgc2l6ZTogaW50O1xuICB3ZWlnaHRfb2Zfbm9kZXM6IGZsb2F0IGFycmF5O1xuICB3ZWlnaHRfb2Zfc3VidHJlZXM6IGZsb2F0IGFycmF5O1xuICB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllcjogaW50IGxpc3QgYXJyYXk7XG4gIHVuYmFsYW5jZWRfZXZlbnRzOiBib29sIGFycmF5O1xuICBsYXllcjogaW50IGFycmF5O1xuICBtdXRhYmxlIGNvbnNpc3RlbnQ6IGJvb2w7XG59XG5cbmxldCBtYXNrIHQgaSA9XG4gIHRyeSBIYXNodGJsLmZpbmQgdC5tYXNrIGlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbSA9IHQubmV3X21hc2sgaW5cbiAgICBsZXQgKCkgPSB0Lm5ld19tYXNrIDwtIG0gKyAxIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHQubWFzayBpIG0gaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgdC51bm1hc2sgbSBpIGluXG4gICAgbVxuXG5sZXQgdW5tYXNrIHQgbSA9XG4gIHRyeSBIYXNodGJsLmZpbmQgdC51bm1hc2sgbVxuICB3aXRoIE5vdF9mb3VuZCAtPiBpbnZhbGlkX2FyZyBcIlJhbmRvbV90cmVlOiBpbmNvaGVyZW50IGhhc2hcIlxuXG5sZXQgaXNfaW5maW5pdGUgaSB0ID1cbiAgbGV0IGkgPSBtYXNrIHQgaSBpblxuICBNb2RzLkludFNldC5tZW0gaSB0LmluZl9saXN0XG5cbmxldCBmaW5kIGkgdCA9XG4gIGxldCBpID0gbWFzayB0IGkgaW5cbiAgdC53ZWlnaHRfb2Zfbm9kZXMuKGkpXG5cbmxldCBjb3B5IHQgPVxuICB7XG4gICAgbWFzayA9IEhhc2h0YmwuY29weSB0Lm1hc2s7XG4gICAgdW5tYXNrID0gSGFzaHRibC5jb3B5IHQudW5tYXNrO1xuICAgIG5ld19tYXNrID0gdC5uZXdfbWFzaztcbiAgICBzaXplID0gdC5zaXplO1xuICAgICgqXHR0b3RhbCA9IHQudG90YWwgOyopXG4gICAgd2VpZ2h0X29mX25vZGVzID0gQXJyYXkuY29weSB0LndlaWdodF9vZl9ub2RlcztcbiAgICB3ZWlnaHRfb2Zfc3VidHJlZXMgPSBBcnJheS5jb3B5IHQud2VpZ2h0X29mX3N1YnRyZWVzO1xuICAgIGxheWVyID0gQXJyYXkuY29weSB0LmxheWVyO1xuICAgIGNvbnNpc3RlbnQgPSB0LmNvbnNpc3RlbnQ7XG4gICAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIgPSBBcnJheS5jb3B5IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI7XG4gICAgdW5iYWxhbmNlZF9ldmVudHMgPSBBcnJheS5jb3B5IHQudW5iYWxhbmNlZF9ldmVudHM7XG4gICAgaW5mX2xpc3QgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgfVxuXG5sZXQgY29weV92ZWN0X2luIHQgdDEgPSBBcnJheS5pdGVyaSAoZnVuIGkgYSAtPiB0MS4oaSkgPC0gYSkgdFxuXG5sZXQgY29weV9pbiB0MSB0MiA9XG4gIGxldCAoKSA9IGNvcHlfdmVjdF9pbiB0MS53ZWlnaHRfb2Zfbm9kZXMgdDIud2VpZ2h0X29mX25vZGVzIGluXG4gIGxldCAoKSA9IGNvcHlfdmVjdF9pbiB0MS53ZWlnaHRfb2Zfc3VidHJlZXMgdDIud2VpZ2h0X29mX3N1YnRyZWVzIGluXG4gIGxldCAoKSA9IGNvcHlfdmVjdF9pbiB0MS5sYXllciB0Mi5sYXllciBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEudW5iYWxhbmNlZF9ldmVudHMgdDIudW5iYWxhbmNlZF9ldmVudHMgaW5cbiAgbGV0ICgpID1cbiAgICBjb3B5X3ZlY3RfaW4gdDEudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIgdDIudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXJcbiAgaW5cbiAgbGV0ICgpID0gdDIuY29uc2lzdGVudCA8LSB0MS5jb25zaXN0ZW50IGluXG4gIHQyXG5cbmxldCBpc19yb290IGkgPSBpID0gMVxuXG5sZXQgZGVjbGFyZV91bmJhbGFuY2VkIGkgdCA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIHRoZW4gKFxuICAgICAgbGV0IGwgPSB0LmxheWVyLihpKSBpblxuICAgICAgbGV0ICgpID0gdC51bmJhbGFuY2VkX2V2ZW50cy4oaSkgPC0gdHJ1ZSBpblxuICAgICAgdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4obCkgPC0gaSA6OiB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyLihsKVxuICAgIClcbiAgaW5cbiAgdC5jb25zaXN0ZW50IDwtIGZhbHNlXG5cbmxldCB1cGRhdGVfc3RydWN0dXJlIHQgPVxuICBpZiB0LmNvbnNpc3RlbnQgdGhlblxuICAgIHRcbiAgZWxzZSAoXG4gICAgbGV0IG5fbGF5ZXIgPSB0LmxheWVyLih0LnNpemUpIGluXG4gICAgbGV0IHVwZGF0ZV9zdHJ1Y3R1cmVfYXV4IGkgPVxuICAgICAgbGV0ICgpID1cbiAgICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKGkpIDwtXG4gICAgICAgICAgKHQud2VpZ2h0X29mX25vZGVzLihpKVxuICAgICAgICAgICsuIChpZiAyICogaSA+IHQuc2l6ZSB0aGVuXG4gICAgICAgICAgICAgICAgMC5cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLigyICogaSkpXG4gICAgICAgICAgKy5cbiAgICAgICAgICBpZiAoMiAqIGkpICsgMSA+IHQuc2l6ZSB0aGVuXG4gICAgICAgICAgICAwLlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLigoMiAqIGkpICsgMSkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gdC51bmJhbGFuY2VkX2V2ZW50cy4oaSkgPC0gZmFsc2UgaW5cbiAgICAgIGlmIG5vdCAoaXNfcm9vdCBpKSB0aGVuIChcbiAgICAgICAgbGV0IGZhdGhlciA9IGkgLyAyIGluXG4gICAgICAgIGRlY2xhcmVfdW5iYWxhbmNlZCBmYXRoZXIgdFxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGwgPSB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyLihrKSBpblxuICAgICAgICBsZXQgKCkgPSB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyLihrKSA8LSBbXSBpblxuICAgICAgICBsZXQgKCkgPSBMaXN0Lml0ZXIgdXBkYXRlX3N0cnVjdHVyZV9hdXggbCBpblxuICAgICAgICBhdXggKGsgLSAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0ICgpID0gYXV4IG5fbGF5ZXIgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNpc3RlbnQgPC0gdHJ1ZSBpblxuICAgIHRcbiAgKVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgdF9ub2RlID0gQXJyYXkubWFrZSAobiArIDEpIDAuIGluXG4gIGxldCB0X3N1YnRyZWUgPSBBcnJheS5tYWtlIChuICsgMSkgMC4gaW5cbiAgbGV0IGxheWVyID0gQXJyYXkubWFrZSAobiArIDEpIDAgaW5cbiAgbGV0ICgpID1cbiAgICBsZXQgcmVjIGF1eCBrIGN1cnJlbnRfbGF5ZXIgbGF5ZXJfZW5kID1cbiAgICAgIGlmIGsgPD0gbiB0aGVuXG4gICAgICAgIGlmIGsgPiBsYXllcl9lbmQgdGhlblxuICAgICAgICAgIGF1eCBrIChjdXJyZW50X2xheWVyICsgMSkgKCgyICogbGF5ZXJfZW5kKSArIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGxheWVyLihrKSA8LSBjdXJyZW50X2xheWVyIGluXG4gICAgICAgICAgYXV4IChrICsgMSkgY3VycmVudF9sYXllciBsYXllcl9lbmRcbiAgICAgICAgKVxuICAgIGluXG4gICAgYXV4IDEgMSAxXG4gIGluXG4gIGxldCB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciA9IEFycmF5Lm1ha2UgKGxheWVyLihuKSArIDEpIFtdIGluXG4gIGxldCB1bmJhbGFuY2VkX2V2ZW50cyA9IEFycmF5Lm1ha2UgKG4gKyAxKSBmYWxzZSBpblxuICB7XG4gICAgc2l6ZSA9IG47XG4gICAgKCpcdHRvdGFsID0gMC47KilcbiAgICBuZXdfbWFzayA9IDE7XG4gICAgbWFzayA9IEhhc2h0YmwuY3JlYXRlIChuICsgMSk7XG4gICAgdW5tYXNrID0gSGFzaHRibC5jcmVhdGUgKG4gKyAxKTtcbiAgICBpbmZfbGlzdCA9IE1vZHMuSW50U2V0LmVtcHR5O1xuICAgIGNvbnNpc3RlbnQgPSB0cnVlO1xuICAgIHdlaWdodF9vZl9ub2RlcyA9IHRfbm9kZTtcbiAgICB3ZWlnaHRfb2Zfc3VidHJlZXMgPSB0X3N1YnRyZWU7XG4gICAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI7XG4gICAgdW5iYWxhbmNlZF9ldmVudHM7XG4gICAgbGF5ZXI7XG4gIH1cblxubGV0IGFkZCBpIHcgdCA9XG4gIGxldCBpID0gbWFzayB0IGkgaW5cbiAgaWYgdyA8IDAuIHRoZW5cbiAgICBmYWlsd2l0aCBcIk5lZ2F0aXZlIHZhbHVlIGZvcmJpZGRlbiBpbiBSYW5kb21fdHJlZVwiXG4gIGVsc2UgKFxuICAgIGxldCB3ID1cbiAgICAgIGlmIHcgPSBpbmZpbml0eSB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gdC5pbmZfbGlzdCA8LSBNb2RzLkludFNldC5hZGQgaSB0LmluZl9saXN0IGluXG4gICAgICAgIDAuXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSB0LmluZl9saXN0IDwtIE1vZHMuSW50U2V0LnJlbW92ZSBpIHQuaW5mX2xpc3QgaW5cbiAgICAgICAgd1xuICAgICAgKVxuICAgIGluXG4gICAgKCpcdGxldCB0b3RhbCA9IHQudG90YWwgLS4gdC53ZWlnaHRfb2Zfbm9kZXMuKGkpICsuIHcgaW4qKVxuICAgIGxldCAoKSA9IHQud2VpZ2h0X29mX25vZGVzLihpKSA8LSB3IGluXG4gICAgbGV0ICgpID0gZGVjbGFyZV91bmJhbGFuY2VkIGkgdCBpblxuICAgICgpICgqdC50b3RhbCA8LSAobWF4IDAuMCB0b3RhbCkgKCpub3Qgc2F0aXNmYWN0b3J5KikqKVxuICApXG5cbmxldCB0b3RhbCB0ID1cbiAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgdC5pbmZfbGlzdCB0aGVuIChcbiAgICBsZXQgdCA9IHVwZGF0ZV9zdHJ1Y3R1cmUgdCBpblxuICAgIGlmIHQuc2l6ZSA9IDAgdGhlblxuICAgICAgMC5cbiAgICBlbHNlXG4gICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oMSlcbiAgKSBlbHNlXG4gICAgaW5maW5pdHlcblxubGV0IHJhbmRvbSBycyB0ID1cbiAgbWF0Y2ggTW9kcy5JbnRTZXQucmFuZG9tIHJzIHQuaW5mX2xpc3Qgd2l0aFxuICB8IFNvbWUgeCAtPiB1bm1hc2sgdCB4LCBpbmZpbml0eVxuICB8IE5vbmUgLT5cbiAgICBsZXQgdCA9IHVwZGF0ZV9zdHJ1Y3R1cmUgdCBpblxuICAgIGxldCBhID0gdG90YWwgdCBpblxuICAgIGlmIGEgPD0gMC4gdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSAoXG4gICAgICBsZXQgciA9IFJhbmRvbS5TdGF0ZS5mbG9hdCBycyBhIGluXG4gICAgICBsZXQgcmVjIGZpbmQgaSByID1cbiAgICAgICAgbGV0IG5vZGUgPSB0LndlaWdodF9vZl9ub2Rlcy4oaSkgaW5cbiAgICAgICAgaWYgciA8IG5vZGUgdGhlblxuICAgICAgICAgIGksIG5vZGVcbiAgICAgICAgZWxzZSBpZiAyICogaSA+IHQuc2l6ZSB0aGVuXG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByJyA9IHIgLS4gbm9kZSBpblxuICAgICAgICAgIGxldCBsc29uID0gMiAqIGkgaW5cbiAgICAgICAgICBsZXQgcnNvbiA9ICgyICogaSkgKyAxIGluXG4gICAgICAgICAgbGV0IGxlZnQgPSB0LndlaWdodF9vZl9zdWJ0cmVlcy4obHNvbikgaW5cbiAgICAgICAgICBpZiByJyA8IGxlZnQgdGhlblxuICAgICAgICAgICAgZmluZCBsc29uIHInXG4gICAgICAgICAgZWxzZSBpZiByc29uID4gdC5zaXplIHRoZW5cbiAgICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmQgcnNvbiAocicgLS4gbGVmdClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCByZXAsIHcgPSBmaW5kIDEgciBpblxuICAgICAgdW5tYXNrIHQgcmVwLCB3XG4gICAgKVxuXG4oKiBUT0RPXG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzOiBmbG9hdCBhcnJheSA7XG4gICB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllcjogaW50IGxpc3QgYXJyYXkgO1xuKilcbmxldCBkZWJ1Z19wcmludCBmIHQgPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVzY29uc2lzdGVudDpAIFtcIlxuICAgICAgKGlmIHQuY29uc2lzdGVudCB0aGVuXG4gICAgICAgICBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJ1blwiKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuaXRlclxuICAgICAgKGZ1biBpIGsgLT5cbiAgICAgICAgbGV0IGJhbCA9XG4gICAgICAgICAgaWYgdC51bmJhbGFuY2VkX2V2ZW50cy4oaykgdGhlblxuICAgICAgICAgICAgXCIhXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbnYgPVxuICAgICAgICAgIGlmIEhhc2h0YmwuZmluZCB0Lm1hc2sgayA9IGkgdGhlblxuICAgICAgICAgICAgXCJcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFwiIG5vdCBpbnZvbHV0aXZlXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGluZiA9XG4gICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgdC53ZWlnaHRfb2Zfbm9kZXMuKGspIHdpdGhcbiAgICAgICAgICB8IEZQX2luZmluaXRlIHdoZW4gTW9kcy5JbnRTZXQubWVtIGsgdC5pbmZfbGlzdCAtPiBcIlwiXG4gICAgICAgICAgfCBGUF9pbmZpbml0ZSAtPiBcIiBub3QgaW4gaW5mX2xpc3RcIlxuICAgICAgICAgIHwgXyB3aGVuIG5vdCAoTW9kcy5JbnRTZXQubWVtIGsgdC5pbmZfbGlzdCkgLT4gXCJcIlxuICAgICAgICAgIHwgRlBfbm9ybWFsIHwgRlBfemVybyB8IEZQX25hbiB8IEZQX3N1Ym5vcm1hbCAtPiBcIiBpbiBpbmZfbGlzdFwiXG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVpOiVmJXMlcyxALFwiIGJhbCBpIHQud2VpZ2h0X29mX25vZGVzLihrKSBpbmYgaW52KVxuICAgICAgdC51bm1hc2tcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIl1AXVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZ3JhcGhfcGFnZSB0aXRsZSA/c3VidGl0bGUgZGVwcyBoZWFkZXIgY29yZSBmID1cbiAgbGV0IGRlcGVuZGVuY3kgZiB0ID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHNjcmlwdCBzcmM9XFxcIiVzXFxcIiBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+PC9zY3JpcHQ+XCIgdFxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj48IWRvY3R5cGUgaHRtbD5ALEAsPGh0bWw+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxoZWFkPkAsPG1ldGEgY2hhcnNldD1cXFwidXRmLThcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4ldDwvdGl0bGU+QCxcIiB0aXRsZSBpblxuICBsZXQgKCkgPSBQcC5saXN0IH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZSBkZXBlbmRlbmN5IGYgZGVwcyBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJXRAXUAsPC9oZWFkPkAsXCIgaGVhZGVyIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGJvZHk+QCw8ZGl2IGNsYXNzPVxcXCJjb250YWluZXJcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGgxPkBbJXQldEBdPC9oMT5ALFwiIHRpdGxlIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBzdWJ0aXRsZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgdCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQCw8c21hbGw+JXQ8L3NtYWxsPlwiIHQpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIldEAsPC9kaXY+QF1ALDwvYm9keT5ALDwvaHRtbD5AXUAuXCIgY29yZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiaW5fYWxnX29wID0gTVVMVCB8IFNVTSB8IERJViB8IE1JTlVTIHwgUE9XIHwgTU9EVUxPIHwgTUlOIHwgTUFYXG50eXBlIHVuX2FsZ19vcCA9IExPRyB8IFNRUlQgfCBFWFAgfCBTSU5VUyB8IENPU0lOVVMgfCBUQU4gfCBJTlQgfCBVTUlOVVNcblxudHlwZSBzdGF0ZV9hbGdfb3AgPVxuICB8IENQVVRJTUVcbiAgfCBUSU1FX1ZBUlxuICB8IEVWRU5UX1ZBUlxuICB8IE5VTExfRVZFTlRfVkFSXG4gIHwgVE1BWF9WQVJcbiAgfCBFTUFYX1ZBUlxuXG50eXBlIGJpbl9ib29sX29wID0gQU5EIHwgT1JcbnR5cGUgdW5fYm9vbF9vcCA9IE5PVFxudHlwZSBjb21wYXJlX29wID0gR1JFQVRFUiB8IFNNQUxMRVIgfCBFUVVBTCB8IERJRkZcbnR5cGUgcmV2X2RlcCA9IEFMRyBvZiBpbnQgfCBSVUxFIG9mIGludCB8IE1PRElGIG9mIGludFxuXG5sZXQgYmluX2FsZ19vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IE1VTFQgLT4gXCIqXCJcbiAgfCBTVU0gLT4gXCIrXCJcbiAgfCBESVYgLT4gXCIvXCJcbiAgfCBNSU5VUyAtPiBcIi1cIlxuICB8IFBPVyAtPiBcIl5cIlxuICB8IE1PRFVMTyAtPiBcIlttb2RdXCJcbiAgfCBNSU4gLT4gXCJbbWluXVwiXG4gIHwgTUFYIC0+IFwiW21heF1cIlxuXG5sZXQgYmluX2FsZ19vcF9pc19wcmVmaXggPSBmdW5jdGlvblxuICB8IE1BWCB8IE1JTiAtPiB0cnVlXG4gIHwgTVVMVCB8IFNVTSB8IERJViB8IE1JTlVTIHwgUE9XIHwgTU9EVUxPIC0+IGZhbHNlXG5cbmxldCBwcmludF9iaW5fYWxnX29wIGZ4IHggZnkgeSBmIG9wID1cbiAgaWYgYmluX2FsZ19vcF9pc19wcmVmaXggb3AgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyAoJWEpICglYSlcIiAoYmluX2FsZ19vcF90b19zdHJpbmcgb3ApIGZ4IHggZnkgeVxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSAlcyAlYSlcIiBmeCB4IChiaW5fYWxnX29wX3RvX3N0cmluZyBvcCkgZnkgeVxuXG5sZXQgYmluX2FsZ19vcF90b19qc29uIG9wID0gYFN0cmluZyAoYmluX2FsZ19vcF90b19zdHJpbmcgb3ApXG5cbmxldCBiaW5fYWxnX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCIqXCIgLT4gTVVMVFxuICB8IGBTdHJpbmcgXCIrXCIgLT4gU1VNXG4gIHwgYFN0cmluZyBcIi9cIiAtPiBESVZcbiAgfCBgU3RyaW5nIFwiLVwiIC0+IE1JTlVTXG4gIHwgYFN0cmluZyBcIl5cIiAtPiBQT1dcbiAgfCBgU3RyaW5nIFwiW21vZF1cIiAtPiBNT0RVTE9cbiAgfCBgU3RyaW5nIFwiW21pbl1cIiAtPiBNSU5cbiAgfCBgU3RyaW5nIFwiW21heF1cIiAtPiBNQVhcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBiaW5fYWxnX29wXCIsIHgpKVxuXG5sZXQgdW5fYWxnX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQ09TSU5VUyAtPiBcIltjb3NdXCJcbiAgfCBTSU5VUyAtPiBcIltzaW5dXCJcbiAgfCBUQU4gLT4gXCJbdGFuXVwiXG4gIHwgRVhQIC0+IFwiW2V4cF1cIlxuICB8IFNRUlQgLT4gXCJbc3FydF1cIlxuICB8IElOVCAtPiBcIltpbnRdXCJcbiAgfCBMT0cgLT4gXCJbbG9nXVwiXG4gIHwgVU1JTlVTIC0+IFwiLVwiXG5cbmxldCBwcmludF91bl9hbGdfb3AgZiBvcCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAodW5fYWxnX29wX3RvX3N0cmluZyBvcClcbmxldCB1bl9hbGdfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKHVuX2FsZ19vcF90b19zdHJpbmcgb3ApXG5cbmxldCB1bl9hbGdfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIltjb3NdXCIgLT4gQ09TSU5VU1xuICB8IGBTdHJpbmcgXCJbc2luXVwiIC0+IFNJTlVTXG4gIHwgYFN0cmluZyBcIlt0YW5dXCIgLT4gVEFOXG4gIHwgYFN0cmluZyBcIltleHBdXCIgLT4gRVhQXG4gIHwgYFN0cmluZyBcIltzcXJ0XVwiIC0+IFNRUlRcbiAgfCBgU3RyaW5nIFwiW2ludF1cIiAtPiBJTlRcbiAgfCBgU3RyaW5nIFwiW2xvZ11cIiAtPiBMT0dcbiAgfCBgU3RyaW5nIFwiLVwiIC0+IFVNSU5VU1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHVuX2FsZ19vcFwiLCB4KSlcblxubGV0IHN0YXRlX2FsZ19vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IENQVVRJTUUgLT4gXCJbVHNpbV1cIlxuICB8IFRJTUVfVkFSIC0+IFwiW1RdXCJcbiAgfCBFVkVOVF9WQVIgLT4gXCJbRV1cIlxuICB8IE5VTExfRVZFTlRfVkFSIC0+IFwiW0UtXVwiXG4gIHwgVE1BWF9WQVIgLT4gXCJbVG1heF1cIlxuICB8IEVNQVhfVkFSIC0+IFwiW0VtYXhdXCJcblxubGV0IHByaW50X3N0YXRlX2FsZ19vcCBmIG9wID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChzdGF0ZV9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgc3RhdGVfYWxnX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChzdGF0ZV9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgc3RhdGVfYWxnX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJbVHNpbV1cIiAtPiBDUFVUSU1FXG4gIHwgYFN0cmluZyBcIltUXVwiIC0+IFRJTUVfVkFSXG4gIHwgYFN0cmluZyBcIltFXVwiIC0+IEVWRU5UX1ZBUlxuICB8IGBTdHJpbmcgXCJbRS1dXCIgLT4gTlVMTF9FVkVOVF9WQVJcbiAgfCBgU3RyaW5nIFwiW1RtYXhdXCIgLT4gVE1BWF9WQVJcbiAgfCBgU3RyaW5nIFwiW0VtYXhdXCIgLT4gRU1BWF9WQVJcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBzdGF0ZV9hbGdfb3BcIiwgeCkpXG5cbmxldCBiaW5fYm9vbF9vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEFORCAtPiBcIiYmXCJcbiAgfCBPUiAtPiBcInx8XCJcblxubGV0IHByaW50X2Jpbl9ib29sX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKGJpbl9ib29sX29wX3RvX3N0cmluZyBvcClcbmxldCBiaW5fYm9vbF9vcF90b19qc29uIG9wID0gYFN0cmluZyAoYmluX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgYmluX2Jvb2xfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIiYmXCIgLT4gQU5EXG4gIHwgYFN0cmluZyBcInx8XCIgLT4gT1JcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBib29sZWFuIG9wXCIsIHgpKVxuXG5sZXQgdW5fYm9vbF9vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IE5PVCAtPiBcIltub3RdXCJcblxubGV0IHByaW50X3VuX2Jvb2xfb3AgZiBvcCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAodW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5sZXQgdW5fYm9vbF9vcF90b19qc29uIG9wID0gYFN0cmluZyAodW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5cbmxldCB1bl9ib29sX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJbbm90XVwiIC0+IE5PVFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGJvb2xlYW4gb3BcIiwgeCkpXG5cbmxldCBjb21wYXJlX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgR1JFQVRFUiAtPiBcIj5cIlxuICB8IFNNQUxMRVIgLT4gXCI8XCJcbiAgfCBFUVVBTCAtPiBcIj1cIlxuICB8IERJRkYgLT4gXCIhPVwiXG5cbmxldCBwcmludF9jb21wYXJlX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKGNvbXBhcmVfb3BfdG9fc3RyaW5nIG9wKVxubGV0IGNvbXBhcmVfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGNvbXBhcmVfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgY29tcGFyZV9vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiPlwiIC0+IEdSRUFURVJcbiAgfCBgU3RyaW5nIFwiPFwiIC0+IFNNQUxMRVJcbiAgfCBgU3RyaW5nIFwiPVwiIC0+IEVRVUFMXG4gIHwgYFN0cmluZyBcIiE9XCIgLT4gRElGRlxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGNvbXBhcmVfb3BcIiwgeCkpXG5cbmxldCBwcmludF9yZXZfZGVwIGYgPSBmdW5jdGlvblxuICB8IFJVTEUgaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcInJhdGVfb2ZfcnVsZSBbJWldXCIgaWRcbiAgKCpcInJhdGUgb2YgcnVsZSAnJWEnXCIgKE1vZGVsLnByaW50X3J1bGUgZW52KSBpZCopXG4gIHwgQUxHIGlkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJhbGdlYnJhaWMgdmFyaWFibGUgWyVpXVwiIGlkXG4gICgqXCJ2YXJpYWJsZSAnJWEnXCIgKE1vZGVsLnByaW50X2FsZyBlbnYpIGlkKilcbiAgfCBNT0RJRiBpZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiaW50ZXJ2ZW50aW9uIFslaV1cIiBpZFxuXG5sZXQgcmV2X2RlcF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IFJVTEUgaWQgLT4gYExpc3QgWyBgU3RyaW5nIFwiUlVMRVwiOyBgSW50IGlkIF1cbiAgfCBBTEcgaWQgLT4gYExpc3QgWyBgU3RyaW5nIFwiQUxHXCI7IGBJbnQgaWQgXVxuICB8IE1PRElGIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIk1PRElGXCI7IGBJbnQgaWQgXVxuXG5sZXQgcmV2X2RlcF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlJVTEVcIjsgYEludCBpZCBdIC0+IFJVTEUgaWRcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJBTEdcIjsgYEludCBpZCBdIC0+IEFMRyBpZFxuICB8IGBMaXN0IFsgYFN0cmluZyBcIk1PRElGXCI7IGBJbnQgaWQgXSAtPiBNT0RJRiBpZFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHJldl9kZXBcIiwgeCkpXG5cbm1vZHVsZSBEZXBTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHJldl9kZXBcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gcHJpbnRfcmV2X2RlcFxuZW5kKVxuXG5tb2R1bGUgRGVwU2V0ID0gRGVwU2V0TWFwLlNldFxuXG5sZXQgZGVwc2V0X3RvX3lvanNvbiB4ID1cbiAgYExpc3QgKERlcFNldC5mb2xkIChmdW4geCBhIC0+IHJldl9kZXBfdG9feW9qc29uIHggOjogYSkgeCBbXSlcblxubGV0IGRlcHNldF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IERlcFNldC5lbXB0eVxuICB8IGBMaXN0IGwgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeCAtPiBEZXBTZXQuYWRkIChyZXZfZGVwX29mX3lvanNvbiB4KSBhY2MpXG4gICAgICBEZXBTZXQuZW1wdHkgbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBkZXBzZXRcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBGIG9mIGZsb2F0IHwgSSBvZiBpbnQgfCBJNjQgb2YgSW50NjQudFxuXG5sZXQgY2FzdF9iaW5fb3Agfm9wX2YgP29wX2kgP29wX2k2NCB4IHkgPVxuICBtYXRjaCB4LCB5IHdpdGhcbiAgfCBGIHgsIEYgeSAtPiBGIChvcF9mIHggeSlcbiAgfCBJIHgsIEYgeSAtPiBGIChvcF9mIChmbG9hdF9vZl9pbnQgeCkgeSlcbiAgfCBGIHgsIEkgeSAtPiBGIChvcF9mIHggKGZsb2F0X29mX2ludCB5KSlcbiAgfCBJIHgsIEkgeSAtPlxuICAgIChtYXRjaCBvcF9pIHdpdGhcbiAgICB8IE5vbmUgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpIChmbG9hdF9vZl9pbnQgeSkpXG4gICAgfCBTb21lIG9wX2kgLT4gSSAob3BfaSB4IHkpKVxuICB8IEkgeCwgSTY0IHkgLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IE5vbmUgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpIChJbnQ2NC50b19mbG9hdCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IChJbnQ2NC5vZl9pbnQgeCkgeSkpXG4gIHwgSTY0IHgsIEkgeSAtPlxuICAgIChtYXRjaCBvcF9pNjQgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChJbnQ2NC50b19mbG9hdCB4KSAoZmxvYXRfb2ZfaW50IHkpKVxuICAgIHwgU29tZSBvcF9pNjQgLT4gSTY0IChvcF9pNjQgeCAoSW50NjQub2ZfaW50IHkpKSlcbiAgfCBJNjQgeCwgSTY0IHkgLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IE5vbmUgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgKEludDY0LnRvX2Zsb2F0IHkpKVxuICAgIHwgU29tZSBvcF9pNjQgLT4gSTY0IChvcF9pNjQgeCB5KSlcbiAgfCBGIHgsIEk2NCB5IC0+IEYgKG9wX2YgeCAoSW50NjQudG9fZmxvYXQgeSkpXG4gIHwgSTY0IHgsIEYgeSAtPiBGIChvcF9mIChJbnQ2NC50b19mbG9hdCB4KSB5KVxuXG5sZXQgY2FzdF91bl9vcCA/b3BfZiA/b3BfaSA/b3BfaTY0IHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggb3BfZiB3aXRoXG4gICAgfCBTb21lIG9wX2YgLT4gRiAob3BfZiB4KVxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIG9wX2kgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiY2FzdF91blwiXG4gICAgICB8IFNvbWUgb3BfaSAtPiBJIChvcF9pIChpbnRfb2ZfZmxvYXQgeCkpKSlcbiAgfCBJNjQgeCAtPlxuICAgIChtYXRjaCBvcF9pNjQgd2l0aFxuICAgIHwgU29tZSBvcF9pNjQgLT4gSTY0IChvcF9pNjQgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5fb3BcIlxuICAgICAgfCBTb21lIG9wX2YgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkpKSlcbiAgfCBJIHggLT5cbiAgICAobWF0Y2ggb3BfaSB3aXRoXG4gICAgfCBTb21lIG9wX2kgLT4gSSAob3BfaSB4KVxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIG9wX2Ygd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiY2FzdF91bl9vcFwiXG4gICAgICB8IFNvbWUgb3BfZiAtPiBGIChvcF9mIChmbG9hdF9vZl9pbnQgeCkpKSlcblxubGV0IGNvbXBhcmUgbjEgbjIgPVxuICBtYXRjaCBuMSwgbjIgd2l0aFxuICB8IEYgeCwgRiB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeVxuICB8IEkgeCwgSSB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeVxuICB8IEYgeCwgSSB5IC0+IFN0ZGxpYi5jb21wYXJlIHggKGZsb2F0X29mX2ludCB5KVxuICB8IEkgeCwgRiB5IC0+IFN0ZGxpYi5jb21wYXJlIChmbG9hdF9vZl9pbnQgeCkgeVxuICB8IEkgeCwgSTY0IHkgLT4gU3RkbGliLmNvbXBhcmUgKEludDY0Lm9mX2ludCB4KSB5XG4gIHwgSTY0IHgsIEk2NCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeVxuICB8IEk2NCB4LCBJIHkgLT4gU3RkbGliLmNvbXBhcmUgeCAoSW50NjQub2ZfaW50IHkpXG4gIHwgRiB4LCBJNjQgeSAtPiBTdGRsaWIuY29tcGFyZSB4IChJbnQ2NC50b19mbG9hdCB5KVxuICB8IEk2NCB4LCBGIHkgLT4gU3RkbGliLmNvbXBhcmUgKEludDY0LnRvX2Zsb2F0IHgpIHlcblxubGV0IGlzX2dyZWF0ZXIgbjEgbjIgPSBjb21wYXJlIG4xIG4yID4gMFxubGV0IGlzX3NtYWxsZXIgbjEgbjIgPSBjb21wYXJlIG4xIG4yIDwgMFxubGV0IGlzX2VxdWFsIG4xIG4yID0gY29tcGFyZSBuMSBuMiA9IDBcbmxldCBhZGQgbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjooICsuICkgfm9wX2k6KCArICkgfm9wX2k2NDpJbnQ2NC5hZGQgbjEgbjJcbmxldCBzdWIgbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjooIC0uICkgfm9wX2k6KCAtICkgfm9wX2k2NDpJbnQ2NC5zdWIgbjEgbjJcbmxldCBtdWx0IG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCAqLiApIH5vcF9pOiggKiApIH5vcF9pNjQ6SW50NjQubXVsIG4xIG4yXG5sZXQgbWluIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6bWluIH5vcF9pOm1pbiB+b3BfaTY0Om1pbiBuMSBuMlxubGV0IG1heCBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOm1heCB+b3BfaTptYXggfm9wX2k2NDptYXggbjEgbjJcblxubGV0IHJlbSBuMSBuMiA9XG4gIGNhc3RfYmluX29wIH5vcF9pOiggbW9kICkgfm9wX2k2NDpJbnQ2NC5yZW0gfm9wX2Y6bW9kX2Zsb2F0IG4xIG4yXG5cbmxldCBpbnRlcm5hbF9kaXYgbjEgbjIgPVxuICBjYXN0X2Jpbl9vcCB+b3BfaTooIC8gKSB+b3BfaTY0OkludDY0LmRpdiB+b3BfZjooIC8uICkgbjEgbjJcblxubGV0IHN1Y2MgbiA9IGNhc3RfdW5fb3Agfm9wX2Y6KCggKy4gKSAxLikgfm9wX2k6c3VjYyB+b3BfaTY0OkludDY0LnN1Y2MgblxubGV0IHByZWQgbiA9IGNhc3RfdW5fb3Agfm9wX2Y6KGZ1biB4IC0+IHggLS4gMS4pIH5vcF9pOnByZWQgfm9wX2k2NDpJbnQ2NC5wcmVkIG5cbmxldCBuZWcgbiA9IGNhc3RfdW5fb3Agfm9wX2Y6KCB+LS4gKSB+b3BfaTooIH4tICkgfm9wX2k2NDpJbnQ2NC5uZWcgblxuXG5sZXQgdG9fZmxvYXQgbiA9XG4gIG1hdGNoIG4gd2l0aFxuICB8IEkgeCAtPiBTb21lIChmbG9hdF9vZl9pbnQgeClcbiAgfCBJNjQgeCAtPiBTb21lIChJbnQ2NC50b19mbG9hdCB4KVxuICB8IEYgeCAtPlxuICAgIChtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX3plcm8gfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgLT4gU29tZSB4XG4gICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiBOb25lKVxuXG5sZXQgdG9faW50IG4gPVxuICBtYXRjaCBuIHdpdGhcbiAgfCBGIHggLT4gaW50X29mX2Zsb2F0IHhcbiAgfCBJIHggLT4geFxuICB8IEk2NCB4IC0+IEludDY0LnRvX2ludCB4ICgqTWlnaHQgZXhjZWVkIHRoZWJpZ2dlc3QgMzIgYml0cyBpbnRlZ2VyKilcblxubGV0IHplcm8gPSBJIDBcblxubGV0IGlzX3plcm8gPSBmdW5jdGlvblxuICB8IEk2NCB4IC0+IHggPSBJbnQ2NC56ZXJvXG4gIHwgSSB4IC0+IHggPSAwXG4gIHwgRiB4IC0+IFRvb2xzLmZsb2F0X2lzX3plcm8geFxuXG5sZXQgb25lID0gSSAxXG5cbmxldCBpc19zdHJpY3RseV9wb3NpdGl2ZSA9IGZ1bmN0aW9uXG4gIHwgRiB4IC0+IHggPiAwLlxuICB8IEkgeCAtPiB4ID4gMFxuICB8IEk2NCB4IC0+IHggPiBJbnQ2NC56ZXJvXG5cbmxldCBwb3NfcG93IG4xIG4yID1cbiAgY2FzdF9iaW5fb3Agfm9wX2Y6KCAqKiApIH5vcF9pOlRvb2xzLnBvdyB+b3BfaTY0OlRvb2xzLnBvdzY0IG4xIG4yXG5cbmxldCBwb3cgeCBuID1cbiAgaWYgaXNfemVybyBuIHx8IGlzX3N0cmljdGx5X3Bvc2l0aXZlIG4gdGhlblxuICAgIHBvc19wb3cgeCBuXG4gIGVsc2UgKFxuICAgIG1hdGNoIHRvX2Zsb2F0IHggd2l0aFxuICAgIHwgU29tZSB4IC0+IHBvc19wb3cgKEYgKDEuIC8uIHgpKSAobmVnIG4pXG4gICAgfCBOb25lIC0+IEYgbmFuXG4gIClcblxubGV0IHByaW50IGYgPSBmdW5jdGlvblxuICB8IEYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiAoc3RyaW5nX29mX2Zsb2F0IHgpXG4gIHwgSTY0IHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVMZFwiIHhcbiAgfCBJIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgeFxuXG5sZXQgcHJldHR5X3ByaW50IGYgPSBmdW5jdGlvblxuICB8IEYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWdcIiB4XG4gIHwgSTY0IHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVMZFwiIHhcbiAgfCBJIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgeFxuXG5sZXQgcHJpbnRfb3B0aW9uIGYgPSBmdW5jdGlvblxuICB8IEkgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiB4XG4gIHwgSTY0IHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVMZFwiIHhcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiAoc3RyaW5nX29mX2Zsb2F0IHgpXG4gICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiAoKSlcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgRiB4IC0+IHN0cmluZ19vZl9mbG9hdCB4XG4gIHwgSTY0IHggLT4gSW50NjQudG9fc3RyaW5nIHhcbiAgfCBJIHggLT4gc3RyaW5nX29mX2ludCB4XG5cbmxldCByZWMgaXRlcmkgZiB4IG4gPVxuICBpZiBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW5cbiAgICBpdGVyaSBmIChmIG4geCkgKHByZWQgbilcbiAgZWxzZVxuICAgIHhcblxubGV0IHJlYyBtYXliZV9pdGVyaSBmIHggbiA9XG4gIGlmIGlzX3N0cmljdGx5X3Bvc2l0aXZlIG4gdGhlbiAoXG4gICAgbWF0Y2ggZiBuIHggd2l0aFxuICAgIHwgTm9uZSAtPiB4XG4gICAgfCBTb21lIHgnIC0+IG1heWJlX2l0ZXJpIGYgeCcgKHByZWQgbilcbiAgKSBlbHNlXG4gICAgeFxuXG5sZXQgb2Zfc3RyaW5nIHggPVxuICB0cnkgSSAoaW50X29mX3N0cmluZyB4KSB3aXRoIEZhaWx1cmUgXyAtPiBGIChmbG9hdF9vZl9zdHJpbmcgeClcblxubGV0IHRvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgSSB4IC0+IGBJbnQgeFxuICB8IEk2NCB4IC0+IGBTdHJpbmcgKEludDY0LnRvX3N0cmluZyB4KVxuICB8IEYgeCAtPlxuICAgIChtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX3plcm8gfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgLT4gYEZsb2F0IHhcbiAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IGBTdHJpbmcgKHN0cmluZ19vZl9mbG9hdCB4KSlcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCB4IC0+IEkgeFxuICB8IGBGbG9hdCB4IC0+IEYgeFxuICB8IGBTdHJpbmcgbiBhcyB4IC0+XG4gICAgKHRyeSBJNjQgKEludDY0Lm9mX3N0cmluZyBuKVxuICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICh0cnkgRiAoZmxvYXRfb2Zfc3RyaW5nIG4pXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIE5iclwiLCB4KSkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIE5iclwiLCB4KSlcblxubGV0IHdyaXRlX3Qgb2IgZiA9IFlvanNvbi5CYXNpYy50b19idWZmZXIgb2IgKHRvX3lvanNvbiBmKVxuXG5sZXQgc3RyaW5nX29mX3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfdCBwIGxiID0gb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5sZXQgdF9vZl9zdHJpbmcgcyA9IHJlYWRfdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgb2ZfYmluX2FsZ19vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuTVVMVCAtPiBtdWx0XG4gIHwgT3BlcmF0b3IuU1VNIC0+IGFkZFxuICB8IE9wZXJhdG9yLkRJViAtPlxuICAgIGZ1biB4IHkgLT5cbiAgICAgIGlmIChub3QgKGlzX3plcm8geSkpICYmIGlzX3plcm8gKHJlbSB4IHkpIHRoZW5cbiAgICAgICAgaW50ZXJuYWxfZGl2IHggeVxuICAgICAgZWxzZVxuICAgICAgICBjYXN0X2Jpbl9vcCB+b3BfZjooIC8uICkgeCB5XG4gIHwgT3BlcmF0b3IuTUlOVVMgLT4gc3ViXG4gIHwgT3BlcmF0b3IuTU9EVUxPIC0+IHJlbVxuICB8IE9wZXJhdG9yLk1JTiAtPiBtaW5cbiAgfCBPcGVyYXRvci5NQVggLT4gbWF4XG4gIHwgT3BlcmF0b3IuUE9XIC0+IHBvd1xuXG5sZXQgb2ZfdW5fYWxnX29wID0gZnVuY3Rpb25cbiAgfCBPcGVyYXRvci5MT0cgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpsb2cgeFxuICB8IE9wZXJhdG9yLlNRUlQgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpzcXJ0IHhcbiAgfCBPcGVyYXRvci5FWFAgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpleHAgeFxuICB8IE9wZXJhdG9yLlNJTlVTIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6c2luIHhcbiAgfCBPcGVyYXRvci5DT1NJTlVTIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6Y29zIHhcbiAgfCBPcGVyYXRvci5UQU4gLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjp0YW4geFxuICB8IE9wZXJhdG9yLklOVCAtPlxuICAgIGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2k6KGZ1biBuIC0+IG4pIH5vcF9pNjQ6KGZ1biBuIC0+IG4pIHhcbiAgfCBPcGVyYXRvci5VTUlOVVMgLT4gbmVnXG5cbmxldCBvZl9jb21wYXJlX29wID0gZnVuY3Rpb25cbiAgfCBPcGVyYXRvci5HUkVBVEVSIC0+IGlzX2dyZWF0ZXJcbiAgfCBPcGVyYXRvci5TTUFMTEVSIC0+IGlzX3NtYWxsZXJcbiAgfCBPcGVyYXRvci5FUVVBTCAtPiBpc19lcXVhbFxuICB8IE9wZXJhdG9yLkRJRkYgLT4gZnVuIHYgdicgLT4gbm90IChpc19lcXVhbCB2IHYnKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIFN5bnRheF9FcnJvciBvZiBzdHJpbmcgTG9jLmFubm90ZWRcbmV4Y2VwdGlvbiBNYWxmb3JtZWRfRGVjbCBvZiBzdHJpbmcgTG9jLmFubm90ZWRcbmV4Y2VwdGlvbiBJbnRlcm5hbF9FcnJvciBvZiBzdHJpbmcgTG9jLmFubm90ZWRcblxubGV0IHdhcm5pbmdfYnVmZmVyIDogKExvYy50IG9wdGlvbiAqIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpKSBsaXN0IHJlZiA9XG4gIHJlZiBbXVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBkZWNsczogKHN0cmluZyAqICdhKSBhcnJheTsgZmluZGVyOiBpbnQgTW9kcy5TdHJpbmdNYXAudCB9XG5cbmxldCBuYW1lX21hcF9vZl9hcnJheSA/Zm9yYmlkZGVuIGEgPVxuICBsZXQgYmFkID1cbiAgICBtYXRjaCBmb3JiaWRkZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBmdW4gXyAtPiBmYWxzZVxuICAgIHwgU29tZSBzIC0+IGZ1biB4IC0+IE1vZHMuU3RyaW5nU2V0Lm1lbSB4IHNcbiAgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBtYXAgKCh4LCBwb3MpLCBfKSAtPlxuICAgICAgaWYgYmFkIHggfHwgTW9kcy5TdHJpbmdNYXAubWVtIHggbWFwIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIkxhYmVsICdcIiBeIHggXiBcIicgYWxyZWFkeSBkZWZpbmVkXCIsIHBvcykpXG4gICAgICBlbHNlXG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCB4IGkgbWFwKVxuICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGFcblxubGV0IGNyZWF0ZSA/Zm9yYmlkZGVuIGEgPVxuICB7XG4gICAgZGVjbHMgPSBBcnJheS5tYXAgKGZ1biAoKHgsIF8pLCB5KSAtPiB4LCB5KSBhO1xuICAgIGZpbmRlciA9IG5hbWVfbWFwX29mX2FycmF5ID9mb3JiaWRkZW4gYTtcbiAgfVxuXG5sZXQgY3JlYXRlX2Zyb21fbGlzdCA/Zm9yYmlkZGVuIGwgPSBjcmVhdGUgP2ZvcmJpZGRlbiAoQXJyYXkub2ZfbGlzdCBsKVxuXG4oKiBUT0RPIHNlZSBpZiB3ZSBzaG91bGQga2VlcCB0aGlzICopXG5sZXQgY3JlYXRlX25vX2xvYyA/Zm9yYmlkZGVuIGEgPVxuICBBcnJheS5tYXAgKGZ1biAoeCwgeSkgLT4gKHgsIExvYy5kdW1teSksIHkpIGEgfD4gY3JlYXRlID9mb3JiaWRkZW5cblxubGV0IHNpemUgbmQgPSBBcnJheS5sZW5ndGggbmQuZGVjbHNcbmxldCBlbHRfbmFtZSBuZCBpID0gZnN0IG5kLmRlY2xzLihpKVxuXG5sZXQgZWx0X2lkID8oa2luZCA9IFwiZWxlbWVudFwiKSBuZCAocywgcG9zKSA9XG4gIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIHMgbmQuZmluZGVyIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJcXFwiJXNcXFwiIGlzIG5vdCBhIGRlY2xhcmVkICVzLlwiIHMga2luZCwgcG9zKSlcblxubGV0IHByaW50IH5zZXAgcHAgZiBuZCA9XG4gIFBwLmFycmF5IHNlcCAoZnVuIGkgZiAobiwgZWwpIC0+IHBwIGkgbiBmIGVsKSBmIG5kLmRlY2xzXG5cbmxldCBkZWJ1Z19wcmludCBwciBmIG5kID1cbiAgcHJpbnQgfnNlcDpQcC5zcGFjZVxuICAgIChmdW4gaSBuIGYgZWwgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWk+JXM6IEBbPDI+JWFAXUBdXCIgaSBuIHByIGVsKVxuICAgIGYgbmRcblxubGV0IGZvbGQgZiBhY2MgbmQgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gaSBhY2MgKG5hLCB4KSAtPiBmIGkgbmEgYWNjIHgpIGFjYyBuZC5kZWNsc1xuXG5sZXQgbWFwIGYgbmQgPVxuICB7IGRlY2xzID0gQXJyYXkubWFwIChmdW4gKHMsIHYpIC0+IHMsIGYgcyB2KSBuZC5kZWNsczsgZmluZGVyID0gbmQuZmluZGVyIH1cblxubGV0IG1hcGkgZiBuZCA9XG4gIHtcbiAgICBkZWNscyA9IEFycmF5Lm1hcGkgKGZ1biBpIChzLCB2KSAtPiBzLCBmIGkgcyB2KSBuZC5kZWNscztcbiAgICBmaW5kZXIgPSBuZC5maW5kZXI7XG4gIH1cblxubGV0IGVsdF92YWwgbmQgaSA9IHNuZCBuZC5kZWNscy4oaSlcblxubGV0IHRvX2pzb24gYXV4IG5kID1cbiAgYExpc3RcbiAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKHgsIGEpIGFjYyAtPiBgQXNzb2MgWyBcIm5hbWVcIiwgYFN0cmluZyB4OyBcImRlY2xcIiwgYXV4IGEgXSA6OiBhY2MpXG4gICAgICAgbmQuZGVjbHMgW10pXG5cbmxldCBvZl9qc29uIGF1eCA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIGxldCBkZWNscyA9XG4gICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgYFN0cmluZyB4KTsgKFwiZGVjbFwiLCBhKSBdXG4gICAgICAgICAgfCBgQXNzb2MgWyAoXCJkZWNsXCIsIGEpOyAoXCJuYW1lXCIsIGBTdHJpbmcgeCkgXSAtPlxuICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgeCwgYXV4IGFcbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHZhbGlkIE5hbWVkRGVjbCBlbGVtZW50XCIsIHgpKSlcbiAgICAgICAgbFxuICAgIGluXG4gICAgY3JlYXRlIGRlY2xzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSB2YWxpZCBOYW1lZERlY2xcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VycmVuY2UgcCBsaXN0ID1cbiAgbGV0IHJlYyBhdXggbGlzdCBidWZmZXIgb3V0cHV0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IGggOjogdCB3aGVuIHAgaCAtPiBhdXggdCBbXSAoKGggOjogYnVmZmVyKSA6OiBvdXRwdXQpXG4gICAgfCBoIDo6IHQgLT4gYXV4IHQgKGggOjogYnVmZmVyKSBvdXRwdXRcbiAgICB8IFtdIC0+IG91dHB1dFxuICBpblxuICBsZXQgcmV2X2NvbmNhdCBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBvdXRwdXQgYSAtPiBhIDo6IG91dHB1dCkpIFtdIGxpc3RcbiAgaW5cbiAgcmV2X2NvbmNhdCAoYXV4IGxpc3QgW10gW10pXG5cbmxldCByZWMgbGFzdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJsaXN0X2xhc3RcIlxuICB8IFsgeCBdIC0+IHhcbiAgfCBfIDo6IGwgLT4gbGFzdCBsXG5cbmxldCByZWMgYXV4X3BvcF9sYXN0IGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJsaXN0X3BvcF9sYXN0XCJcbiAgfCBbIHggXSAtPiBMaXN0LnJldiBhY2MsIHhcbiAgfCBoIDo6IHQgLT4gYXV4X3BvcF9sYXN0IChoIDo6IGFjYykgdFxuXG5sZXQgcG9wX2xhc3QgbCA9IGF1eF9wb3BfbGFzdCBbXSBsXG5cbmxldCBjb25zX29wdGlvbiBoIHQgPVxuICBtYXRjaCBoIHdpdGhcbiAgfCBTb21lIHggLT4geCA6OiB0XG4gIHwgTm9uZSAtPiB0XG5cbmxldCByZWMgc21hcnRfZmlsdGVyIGYgPSBmdW5jdGlvblxuICB8IHQgOjogcSBhcyBsIC0+XG4gICAgbGV0IHEnID0gc21hcnRfZmlsdGVyIGYgcSBpblxuICAgIGlmIGYgdCB0aGVuXG4gICAgICBpZiBxID09IHEnIHRoZW5cbiAgICAgICAgbFxuICAgICAgZWxzZVxuICAgICAgICB0IDo6IHEnXG4gICAgZWxzZVxuICAgICAgcSdcbiAgfCBsIC0+IGxcblxubGV0IHJlYyBzbWFydF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgdCA6OiBxIGFzIGwgLT5cbiAgICBsZXQgcScgPSBzbWFydF9tYXAgZiBxIGluXG4gICAgbGV0IHQnID0gZiB0IGluXG4gICAgaWYgdCcgPT0gdCAmJiBxJyA9PSBxIHRoZW5cbiAgICAgIGxcbiAgICBlbHNlXG4gICAgICB0JyA6OiBxJ1xuICB8IGwgLT4gbFxuXG5sZXQgcmV2X21hcGkgZiBsID1cbiAgbGV0IHJlYyBhdXhfbWFwaSBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGggOjogcSAtPiBhdXhfbWFwaSAocHJlZCBpKSAoZiBpIGggOjogYWNjKSBxXG4gIGluXG4gIGF1eF9tYXBpIChMaXN0Lmxlbmd0aCBsIC0gMSkgW10gbFxuXG5sZXQgcmVjIG1hcF9vcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBoIDo6IHEgLT4gY29uc19vcHRpb24gKGYgaCkgKG1hcF9vcHRpb24gZiBxKVxuXG5sZXQgZXhpc3RzX3VuaXEgZiBsID1cbiAgbGV0IHJlYyBzZWNvbmQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgaCA6OiB0IC0+IChub3QgKGYgaCkpICYmIHNlY29uZCB0XG4gIGluXG4gIGxldCByZWMgZmlyc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgZiBoIHRoZW5cbiAgICAgICAgc2Vjb25kIHRcbiAgICAgIGVsc2VcbiAgICAgICAgZmlyc3QgdFxuICBpblxuICBmaXJzdCBsXG5cbmxldCBtZXJnZV91bmlxIGNtcCBsMSBsMiA9XG4gIGxldCByZWMgYXV4X21lcmdlX3VuaXEgbDEgbDIgayA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBfIC0+IGsgbDJcbiAgICB8IF8sIFtdIC0+IGsgbDFcbiAgICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgYXV4X21lcmdlX3VuaXEgdDEgbDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQxIHRoZW5cbiAgICAgICAgICAgICAgayBsMVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMSA6OiBvKSlcbiAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICBhdXhfbWVyZ2VfdW5pcSBsMSB0MiAoZnVuIG8gLT5cbiAgICAgICAgICAgIGlmIG8gPT0gdDIgdGhlblxuICAgICAgICAgICAgICBrIGwyXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGsgKGgyIDo6IG8pKVxuICAgICAgZWxzZVxuICAgICAgICBhdXhfbWVyZ2VfdW5pcSB0MSB0MiAoZnVuIG8gLT5cbiAgICAgICAgICAgIGlmIG8gPT0gdDEgdGhlblxuICAgICAgICAgICAgICBrIGwxXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGsgKGgxIDo6IG8pKVxuICBpblxuICBhdXhfbWVyZ2VfdW5pcSBsMSBsMiAoZnVuIHggLT4geClcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZCBmIGwgYWNjID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgaCA6OiB0IC0+IHJldl9tYXBfYXBwZW5kIGYgdCAoZiBoIDo6IGFjYylcblxubGV0IHJlYyBtYXBfZmxhdHRlbiBmID0gZnVuY3Rpb25cbiAgKCogbGlzdF9iaW5kICopXG4gIHwgW10gLT4gW11cbiAgfCBoIDo6IHQgLT4gTGlzdC5hcHBlbmQgKGYgaCkgKG1hcF9mbGF0dGVuIGYgdClcbigqIExpc3QucmV2XG4gICAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4gTGlzdC5yZXZfYXBwZW5kIHkgeCkgW10gKExpc3QucmV2X21hcCBmIGwpKVxuKilcblxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kb3VibGUgbCA9XG4gIGxldCByZWMgYXV4IGxhc3QgbCBhY2MgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgaCA6OiBxIHdoZW4gbGFzdCA9IGggLT4gYXV4IGxhc3QgcSBhY2NcbiAgICB8IGggOjogcSAtPiBhdXggaCBxIChoIDo6IGFjYylcbiAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGggOjogcSAtPiBhdXggaCBxIFsgaCBdXG5cbmxldCByZWMgZm9sZF9yaWdodF9tYXAgZiBsIHggPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXSwgeFxuICB8IGggOjogdCAtPlxuICAgIGxldCB0JywgeCcgPSBmb2xkX3JpZ2h0X21hcCBmIHQgeCBpblxuICAgIGxldCBoJywgeCcnID0gZiBoIHgnIGluXG4gICAgaCcgOjogdCcsIHgnJ1xuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiB4IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4geFxuICB8IFtdLCBfIDo6IF8gfCBfIDo6IF8sIFtdIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwibGlzdF9mb2xkX2xlZnQyXCIpXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+IGZvbGRfbGVmdDIgZiAoZiB4IGgxIGgyKSB0MSB0MlxuXG5sZXQgcmFuZG9tIHJzIGwgPSBMaXN0Lm50aCBsIChSYW5kb20uU3RhdGUuaW50IHJzIChMaXN0Lmxlbmd0aCBsKSlcblxubGV0IGZpbmRfb3B0aW9uIChwIDogJ2EgLT4gYm9vbCkgKGwgOiAnYSBsaXN0KSA6ICdhIG9wdGlvbiA9XG4gIHRyeSBTb21lIChMaXN0LmZpbmQgcCBsKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCAkJCApID0gY29uc19vcHRpb25cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICBiYWc6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gIG11dGFibGUgc2l6ZTogaW50O1xuICBkaWN0OiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbn1cblxubGV0IGNyZWF0ZSBzaXplID1cbiAgeyBzaXplID0gMDsgYmFnID0gTW9kcy5EeW5BcnJheS5jcmVhdGUgc2l6ZSAoLTEpOyBkaWN0ID0gSGFzaHRibC5jcmVhdGUgc2l6ZSB9XG5cbmxldCBwcmludCBmIHMgPVxuICBpZiBzLnNpemUgPD0gMCB0aGVuXG4gICAgUHAuZW1wdHlfc2V0IGZcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwieyBcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBmb3IgaSA9IDAgdG8gcy5zaXplIC0gMiBkb1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGYgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIGkpO1xuICAgICAgICBQcC5jb21tYSBmXG4gICAgICBkb25lXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfaW50IGYgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIChzLnNpemUgLSAxKSkgaW5cbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgfVwiXG4gIClcblxubGV0IGlzX2VtcHR5IHMgPSBzLnNpemUgPSAwXG5cbmxldCBhZGQgeCBzID1cbiAgaWYgbm90IChIYXNodGJsLm1lbSBzLmRpY3QgeCkgdGhlbiAoXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgcy5iYWcgcy5zaXplIHggaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2Ugcy5kaWN0IHggcy5zaXplIGluXG4gICAgcy5zaXplIDwtIHN1Y2Mgcy5zaXplXG4gIClcblxubGV0IHJlbW92ZSB4IHMgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gSGFzaHRibC5maW5kIHMuZGljdCB4IGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZW1vdmUgcy5kaWN0IHggaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgcG9zIDwgcy5zaXplIC0gMSB0aGVuIChcbiAgICAgICAgbGV0IGxhc3QgPSBNb2RzLkR5bkFycmF5LmdldCBzLmJhZyAocy5zaXplIC0gMSkgaW5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHMuZGljdCBsYXN0IHBvcyBpblxuICAgICAgICBNb2RzLkR5bkFycmF5LnNldCBzLmJhZyBwb3MgbGFzdFxuICAgICAgKVxuICAgIGluXG4gICAgcy5zaXplIDwtIHByZWQgcy5zaXplXG4gIHdpdGggTm90X2ZvdW5kIC0+ICgpXG5cbmxldCBzaXplIHMgPSBzLnNpemVcblxubGV0IHJhbmRvbSBycyBzID1cbiAgaWYgcy5zaXplIDwgMSB0aGVuXG4gICAgTm9uZVxuICBlbHNlXG4gICAgU29tZSAoTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgKFJhbmRvbS5TdGF0ZS5pbnQgcnMgcy5zaXplKSlcblxubGV0IGZvbGQgZiBzIGFjYyA9XG4gIFRvb2xzLnJlY3RpIChmdW4gYWNjIGkgLT4gZiAoTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgaSkgYWNjKSBhY2Mgcy5zaXplXG5cbmxldCBtZW0geCBzID0gSGFzaHRibC5tZW0gcy5kaWN0IHhcbiIsInR5cGUgJ2EgdCA9ICdhIGxpc3RcblxubGV0IGNyZWF0ZSBfaSBfZGVmYXVsdCA9IFtdXG5sZXQgYWRkIHggdCA9IHggOjogdFxubGV0IGl0ZXIgZiB0ID0gTGlzdC5pdGVyIGYgKExpc3QucmV2IHQpXG5sZXQgY2xlYW4gXyA9IFtdXG4iLCJtb2R1bGUgdHlwZSBIYXNoID0gc2lnXG4gIHR5cGUgaGFzaGVkX2xpc3RcbiAgdHlwZSBlbHRcbiAgdHlwZSBjYWNoZVxuXG4gIHZhbCBpbnRfb2ZfaGFzaGVkX2xpc3QgOiBoYXNoZWRfbGlzdCAtPiBpbnRcbiAgdmFsIGNvbXBhcmUgOiBoYXNoZWRfbGlzdCAtPiBoYXNoZWRfbGlzdCAtPiBpbnRcbiAgdmFsIGluaXQgOiB1bml0IC0+IGNhY2hlXG4gIHZhbCBoYXNoIDogY2FjaGUgLT4gZWx0IGxpc3QgLT4gY2FjaGUgKiBoYXNoZWRfbGlzdFxuICB2YWwgY29ucyA6IGNhY2hlIC0+IGVsdCAtPiBoYXNoZWRfbGlzdCAtPiBjYWNoZSAqIGhhc2hlZF9saXN0XG4gIHZhbCBlbXB0eSA6IGhhc2hlZF9saXN0XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gaGFzaGVkX2xpc3QgLT4gdW5pdFxuICB2YWwgcHJpbnRfY2FjaGUgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGNhY2hlIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChBIDogU2V0TWFwLk9yZGVyZWRUeXBlKVxuICAtPlxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IEEudFxuICAgIHR5cGUgZWx0X2lkID0gaW50XG4gICAgdHlwZSBoYXNoZWRfbGlzdCA9IGludFxuXG4gICAgbGV0IGludF9vZl9oYXNoZWRfbGlzdCAoaCA6IGhhc2hlZF9saXN0KSA6IGludCA9IGhcbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcblxuICAgIG1vZHVsZSBTZXRNYXAgPSBTZXRNYXAuTWFrZSAoQSlcblxuICAgIHR5cGUgY2FjaGUgPSB7XG4gICAgICBkaWN0aW9uYXJ5OiBlbHRfaWQgU2V0TWFwLk1hcC50O1xuICAgICAgbmV4dF9lbHRfaWQ6IGVsdF9pZDtcbiAgICAgIGNvbnM6IGhhc2hlZF9saXN0IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgICAgIG5leHRfbGlzdF9pZDogaGFzaGVkX2xpc3Q7XG4gICAgfVxuXG4gICAgbGV0IGZzdF9lbHRfaWQgPSAxXG4gICAgbGV0IG5leHRfZWx0X2lkID0gc3VjY1xuXG4gICAgbGV0IGZyZXNoX2VsdF9pZCBjYWNoZSA9XG4gICAgICAoIGNhY2hlLm5leHRfZWx0X2lkLFxuICAgICAgICB7IGNhY2hlIHdpdGggbmV4dF9lbHRfaWQgPSBuZXh0X2VsdF9pZCBjYWNoZS5uZXh0X2VsdF9pZCB9IClcblxuICAgIGxldCBmc3RfbGlzdF9pZCA9IDFcbiAgICBsZXQgbmV4dF9saXN0X2lkID0gc3VjY1xuXG4gICAgbGV0IGZyZXNoX2xpc3RfaWQgY2FjaGUgPVxuICAgICAgKCB7IGNhY2hlIHdpdGggbmV4dF9saXN0X2lkID0gbmV4dF9saXN0X2lkIGNhY2hlLm5leHRfbGlzdF9pZCB9LFxuICAgICAgICBjYWNoZS5uZXh0X2xpc3RfaWQgKVxuXG4gICAgbGV0IGluaXQgKCkgPVxuICAgICAge1xuICAgICAgICBkaWN0aW9uYXJ5ID0gU2V0TWFwLk1hcC5lbXB0eTtcbiAgICAgICAgbmV4dF9lbHRfaWQgPSBmc3RfZWx0X2lkO1xuICAgICAgICBjb25zID0gTW9kcy5EeW5BcnJheS5jcmVhdGUgMCBOb25lO1xuICAgICAgICBuZXh0X2xpc3RfaWQgPSBmc3RfbGlzdF9pZDtcbiAgICAgIH1cblxuICAgIGxldCBlbXB0eSA9IDBcblxuICAgIGxldCBoYXNoX2VsdCBjYWNoZSBlbHQgPVxuICAgICAgbWF0Y2ggU2V0TWFwLk1hcC5maW5kX29wdGlvbiBlbHQgY2FjaGUuZGljdGlvbmFyeSB3aXRoXG4gICAgICB8IFNvbWUgaSAtPiBjYWNoZSwgaVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBpZCwgY2FjaGUgPSBmcmVzaF9lbHRfaWQgY2FjaGUgaW5cbiAgICAgICAgeyBjYWNoZSB3aXRoIGRpY3Rpb25hcnkgPSBTZXRNYXAuTWFwLmFkZCBlbHQgaWQgY2FjaGUuZGljdGlvbmFyeSB9LCBpZFxuXG4gICAgbGV0IGNvbnMgY2FjaGUgaGVhZCB0YWlsID1cbiAgICAgIGxldCBjYWNoZSwgaGFzaF9oZWFkID0gaGFzaF9lbHQgY2FjaGUgaGVhZCBpblxuICAgICAgbGV0IHN1YnRhYiA9XG4gICAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IGNhY2hlLmNvbnMgaGFzaF9oZWFkIHdpdGhcbiAgICAgICAgfCBTb21lIHN1YnRhYiAtPiBzdWJ0YWJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHN1YnRhYiA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDAgTm9uZSBpblxuICAgICAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhY2hlLmNvbnMgaGFzaF9oZWFkIChTb21lIHN1YnRhYikgaW5cbiAgICAgICAgICBzdWJ0YWJcbiAgICAgIGluXG4gICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBzdWJ0YWIgdGFpbCB3aXRoXG4gICAgICB8IFNvbWUgaGFzaCAtPiBjYWNoZSwgaGFzaFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBjYWNoZSwgaGFzaCA9IGZyZXNoX2xpc3RfaWQgY2FjaGUgaW5cbiAgICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgc3VidGFiIHRhaWwgKFNvbWUgaGFzaCkgaW5cbiAgICAgICAgY2FjaGUsIGhhc2hcblxuICAgIGxldCByZWMgaGFzaCBjYWNoZSBsaXN0ID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBjYWNoZSwgZW1wdHlcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBjYWNoZSwgdCA9IGhhc2ggY2FjaGUgdCBpblxuICAgICAgICBjb25zIGNhY2hlIGggdFxuXG4gICAgbGV0IHByaW50IGZvcm1hdHRlciA9IEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiVpXCJcblxuICAgIGxldCBwcmludF9jYWNoZSBmb3JtYXR0ZXIgY2FjaGUgPVxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyXG4gICAgICAgICAgXCJDYWNoZVxcbiBuZXh0X2ZyZXNoX2xpc3RfaWQ6ICVpOyBuZXh0X2ZyZXNoX2VsdF9pZDogJWlcXG5cIlxuICAgICAgICAgIGNhY2hlLm5leHRfbGlzdF9pZCBjYWNoZS5uZXh0X2VsdF9pZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFNldE1hcC5NYXAuaXRlclxuICAgICAgICAgIChmdW4gYSBpIC0+IEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIkRJQzolYTolaVxcblwiIEEucHJpbnQgYSBpKVxuICAgICAgICAgIGNhY2hlLmRpY3Rpb25hcnlcbiAgICAgIGluXG4gICAgICBNb2RzLkR5bkFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gYSBvcHQgLT5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBvcHQgLT5cbiAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgICAgICAgICAgKGZ1biBiIGsgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBrIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICB8IFNvbWUgayAtPiBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIoJWksJWkpLT4laSBcXG5cIiBhIGIgaylcbiAgICAgICAgICAgICAgb3B0KVxuICAgICAgICBjYWNoZS5jb25zXG4gIGVuZFxuIiwidHlwZSB0ID0geyBudW06IGludDsgZGVuOiBpbnQgfVxuXG5sZXQgc2lnbiBmID1cbiAgaWYgZi5udW0gPSAwIHRoZW5cbiAgICB7IG51bSA9IDA7IGRlbiA9IDEgfVxuICBlbHNlIGlmIGYuZGVuIDwgMCB0aGVuXG4gICAgeyBudW0gPSAtZi5udW07IGRlbiA9IC1mLmRlbiB9XG4gIGVsc2VcbiAgICBmXG5cbmxldCBzaW1wbGlmeSBmID1cbiAgbGV0IGdjZCA9IFRvb2xzLmdjZF8yIGYubnVtIGYuZGVuIGluXG4gIHNpZ24geyBudW0gPSBmLm51bSAvIGdjZDsgZGVuID0gZi5kZW4gLyBnY2QgfVxuXG5sZXQgYWRkIGEgYiA9XG4gIHNpbXBsaWZ5IHsgbnVtID0gKGEubnVtICogYi5kZW4pICsgKGIubnVtICogYS5kZW4pOyBkZW4gPSBiLmRlbiAqIGEuZGVuIH1cblxubGV0IG9wIGYgPSB7IGYgd2l0aCBudW0gPSAtZi5udW0gfVxubGV0IHN1YiBhIGIgPSBhZGQgYSAob3AgYilcbmxldCBtdWx0IGEgYiA9IHNpbXBsaWZ5IHsgbnVtID0gYS5udW0gKiBiLm51bTsgZGVuID0gYS5kZW4gKiBiLmRlbiB9XG5cbmxldCBpbnYgYSA9XG4gIGlmIGEubnVtID0gMCB0aGVuXG4gICAgTm9uZVxuICBlbHNlXG4gICAgU29tZSB7IG51bSA9IGEuZGVuOyBkZW4gPSBhLm51bSB9XG5cbmxldCBkaXYgYSBiID1cbiAgbWF0Y2ggaW52IGIgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYl9pbnYgLT4gU29tZSAobXVsdCBhIGJfaW52KVxuXG5sZXQgemVybyA9IHsgbnVtID0gMDsgZGVuID0gMSB9XG5sZXQgaXNfZXF1YWwgYSBiID0gYSA9IGJcbmxldCBvZl9pbnQgaSA9IHNpbXBsaWZ5IHsgbnVtID0gaTsgZGVuID0gMSB9XG5sZXQgaXNfemVybyBhID0gYS5udW0gPSAwXG5sZXQgb25lID0gb2ZfaW50IDFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgd2FpdGluZ19lbHRzOiAnYSBsaXN0OyBsaXN0OiAnYSBsaXN0IH1cblxubGV0IGVtcHR5ID0geyB3YWl0aW5nX2VsdHMgPSBbXTsgbGlzdCA9IFtdIH1cbmxldCBpc19lbXB0eSB0ID0gdC53YWl0aW5nX2VsdHMgPSBbXSAmJiB0Lmxpc3QgPSBbXVxubGV0IHB1c2ggYSB0ID0geyB0IHdpdGggd2FpdGluZ19lbHRzID0gYSA6OiB0LndhaXRpbmdfZWx0cyB9XG5cbmxldCByZWMgcG9wIHQgPVxuICBtYXRjaCB0Lmxpc3Qgd2l0aFxuICB8IGhlYWQgOjogdGFpbCAtPiB7IHQgd2l0aCBsaXN0ID0gdGFpbCB9LCBTb21lIGhlYWRcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LndhaXRpbmdfZWx0cyB3aXRoXG4gICAgfCBbXSAtPiB0LCBOb25lXG4gICAgfCBsaXN0IC0+IHBvcCB7IHdhaXRpbmdfZWx0cyA9IFtdOyBsaXN0ID0gTGlzdC5yZXYgbGlzdCB9KVxuIiwiKCogQ29weXJpZ2h0IChjKSAyMDExLCBKb25hdGhhbiBEZXJxdWUgLSBNSVQgbGljZW5zZWQgKilcblxubGV0ICggJiYmICkgPSBJbnQzMi5sb2dhbmRcbmxldCAoIF5eXiApID0gSW50MzIubG9neG9yXG5sZXQgKCA+Pj4gKSA9IEludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcblxubGV0IGNyY190YWJsZSA9XG4gIFt8XG4gICAgMHgwMDAwMDAwMGw7XG4gICAgMHg3NzA3MzA5Nmw7XG4gICAgMHhlZTBlNjEyY2w7XG4gICAgMHg5OTA5NTFiYWw7XG4gICAgMHgwNzZkYzQxOWw7XG4gICAgMHg3MDZhZjQ4Zmw7XG4gICAgMHhlOTYzYTUzNWw7XG4gICAgMHg5ZTY0OTVhM2w7XG4gICAgMHgwZWRiODgzMmw7XG4gICAgMHg3OWRjYjhhNGw7XG4gICAgMHhlMGQ1ZTkxZWw7XG4gICAgMHg5N2QyZDk4OGw7XG4gICAgMHgwOWI2NGMyYmw7XG4gICAgMHg3ZWIxN2NiZGw7XG4gICAgMHhlN2I4MmQwN2w7XG4gICAgMHg5MGJmMWQ5MWw7XG4gICAgMHgxZGI3MTA2NGw7XG4gICAgMHg2YWIwMjBmMmw7XG4gICAgMHhmM2I5NzE0OGw7XG4gICAgMHg4NGJlNDFkZWw7XG4gICAgMHgxYWRhZDQ3ZGw7XG4gICAgMHg2ZGRkZTRlYmw7XG4gICAgMHhmNGQ0YjU1MWw7XG4gICAgMHg4M2QzODVjN2w7XG4gICAgMHgxMzZjOTg1Nmw7XG4gICAgMHg2NDZiYThjMGw7XG4gICAgMHhmZDYyZjk3YWw7XG4gICAgMHg4YTY1YzllY2w7XG4gICAgMHgxNDAxNWM0Zmw7XG4gICAgMHg2MzA2NmNkOWw7XG4gICAgMHhmYTBmM2Q2M2w7XG4gICAgMHg4ZDA4MGRmNWw7XG4gICAgMHgzYjZlMjBjOGw7XG4gICAgMHg0YzY5MTA1ZWw7XG4gICAgMHhkNTYwNDFlNGw7XG4gICAgMHhhMjY3NzE3Mmw7XG4gICAgMHgzYzAzZTRkMWw7XG4gICAgMHg0YjA0ZDQ0N2w7XG4gICAgMHhkMjBkODVmZGw7XG4gICAgMHhhNTBhYjU2Ymw7XG4gICAgMHgzNWI1YThmYWw7XG4gICAgMHg0MmIyOTg2Y2w7XG4gICAgMHhkYmJiYzlkNmw7XG4gICAgMHhhY2JjZjk0MGw7XG4gICAgMHgzMmQ4NmNlM2w7XG4gICAgMHg0NWRmNWM3NWw7XG4gICAgMHhkY2Q2MGRjZmw7XG4gICAgMHhhYmQxM2Q1OWw7XG4gICAgMHgyNmQ5MzBhY2w7XG4gICAgMHg1MWRlMDAzYWw7XG4gICAgMHhjOGQ3NTE4MGw7XG4gICAgMHhiZmQwNjExNmw7XG4gICAgMHgyMWI0ZjRiNWw7XG4gICAgMHg1NmIzYzQyM2w7XG4gICAgMHhjZmJhOTU5OWw7XG4gICAgMHhiOGJkYTUwZmw7XG4gICAgMHgyODAyYjg5ZWw7XG4gICAgMHg1ZjA1ODgwOGw7XG4gICAgMHhjNjBjZDliMmw7XG4gICAgMHhiMTBiZTkyNGw7XG4gICAgMHgyZjZmN2M4N2w7XG4gICAgMHg1ODY4NGMxMWw7XG4gICAgMHhjMTYxMWRhYmw7XG4gICAgMHhiNjY2MmQzZGw7XG4gICAgMHg3NmRjNDE5MGw7XG4gICAgMHgwMWRiNzEwNmw7XG4gICAgMHg5OGQyMjBiY2w7XG4gICAgMHhlZmQ1MTAyYWw7XG4gICAgMHg3MWIxODU4OWw7XG4gICAgMHgwNmI2YjUxZmw7XG4gICAgMHg5ZmJmZTRhNWw7XG4gICAgMHhlOGI4ZDQzM2w7XG4gICAgMHg3ODA3YzlhMmw7XG4gICAgMHgwZjAwZjkzNGw7XG4gICAgMHg5NjA5YTg4ZWw7XG4gICAgMHhlMTBlOTgxOGw7XG4gICAgMHg3ZjZhMGRiYmw7XG4gICAgMHgwODZkM2QyZGw7XG4gICAgMHg5MTY0NmM5N2w7XG4gICAgMHhlNjYzNWMwMWw7XG4gICAgMHg2YjZiNTFmNGw7XG4gICAgMHgxYzZjNjE2Mmw7XG4gICAgMHg4NTY1MzBkOGw7XG4gICAgMHhmMjYyMDA0ZWw7XG4gICAgMHg2YzA2OTVlZGw7XG4gICAgMHgxYjAxYTU3Ymw7XG4gICAgMHg4MjA4ZjRjMWw7XG4gICAgMHhmNTBmYzQ1N2w7XG4gICAgMHg2NWIwZDljNmw7XG4gICAgMHgxMmI3ZTk1MGw7XG4gICAgMHg4YmJlYjhlYWw7XG4gICAgMHhmY2I5ODg3Y2w7XG4gICAgMHg2MmRkMWRkZmw7XG4gICAgMHgxNWRhMmQ0OWw7XG4gICAgMHg4Y2QzN2NmM2w7XG4gICAgMHhmYmQ0NGM2NWw7XG4gICAgMHg0ZGIyNjE1OGw7XG4gICAgMHgzYWI1NTFjZWw7XG4gICAgMHhhM2JjMDA3NGw7XG4gICAgMHhkNGJiMzBlMmw7XG4gICAgMHg0YWRmYTU0MWw7XG4gICAgMHgzZGQ4OTVkN2w7XG4gICAgMHhhNGQxYzQ2ZGw7XG4gICAgMHhkM2Q2ZjRmYmw7XG4gICAgMHg0MzY5ZTk2YWw7XG4gICAgMHgzNDZlZDlmY2w7XG4gICAgMHhhZDY3ODg0Nmw7XG4gICAgMHhkYTYwYjhkMGw7XG4gICAgMHg0NDA0MmQ3M2w7XG4gICAgMHgzMzAzMWRlNWw7XG4gICAgMHhhYTBhNGM1Zmw7XG4gICAgMHhkZDBkN2NjOWw7XG4gICAgMHg1MDA1NzEzY2w7XG4gICAgMHgyNzAyNDFhYWw7XG4gICAgMHhiZTBiMTAxMGw7XG4gICAgMHhjOTBjMjA4Nmw7XG4gICAgMHg1NzY4YjUyNWw7XG4gICAgMHgyMDZmODViM2w7XG4gICAgMHhiOTY2ZDQwOWw7XG4gICAgMHhjZTYxZTQ5Zmw7XG4gICAgMHg1ZWRlZjkwZWw7XG4gICAgMHgyOWQ5Yzk5OGw7XG4gICAgMHhiMGQwOTgyMmw7XG4gICAgMHhjN2Q3YThiNGw7XG4gICAgMHg1OWIzM2QxN2w7XG4gICAgMHgyZWI0MGQ4MWw7XG4gICAgMHhiN2JkNWMzYmw7XG4gICAgMHhjMGJhNmNhZGw7XG4gICAgMHhlZGI4ODMyMGw7XG4gICAgMHg5YWJmYjNiNmw7XG4gICAgMHgwM2I2ZTIwY2w7XG4gICAgMHg3NGIxZDI5YWw7XG4gICAgMHhlYWQ1NDczOWw7XG4gICAgMHg5ZGQyNzdhZmw7XG4gICAgMHgwNGRiMjYxNWw7XG4gICAgMHg3M2RjMTY4M2w7XG4gICAgMHhlMzYzMGIxMmw7XG4gICAgMHg5NDY0M2I4NGw7XG4gICAgMHgwZDZkNmEzZWw7XG4gICAgMHg3YTZhNWFhOGw7XG4gICAgMHhlNDBlY2YwYmw7XG4gICAgMHg5MzA5ZmY5ZGw7XG4gICAgMHgwYTAwYWUyN2w7XG4gICAgMHg3ZDA3OWViMWw7XG4gICAgMHhmMDBmOTM0NGw7XG4gICAgMHg4NzA4YTNkMmw7XG4gICAgMHgxZTAxZjI2OGw7XG4gICAgMHg2OTA2YzJmZWw7XG4gICAgMHhmNzYyNTc1ZGw7XG4gICAgMHg4MDY1NjdjYmw7XG4gICAgMHgxOTZjMzY3MWw7XG4gICAgMHg2ZTZiMDZlN2w7XG4gICAgMHhmZWQ0MWI3Nmw7XG4gICAgMHg4OWQzMmJlMGw7XG4gICAgMHgxMGRhN2E1YWw7XG4gICAgMHg2N2RkNGFjY2w7XG4gICAgMHhmOWI5ZGY2Zmw7XG4gICAgMHg4ZWJlZWZmOWw7XG4gICAgMHgxN2I3YmU0M2w7XG4gICAgMHg2MGIwOGVkNWw7XG4gICAgMHhkNmQ2YTNlOGw7XG4gICAgMHhhMWQxOTM3ZWw7XG4gICAgMHgzOGQ4YzJjNGw7XG4gICAgMHg0ZmRmZjI1Mmw7XG4gICAgMHhkMWJiNjdmMWw7XG4gICAgMHhhNmJjNTc2N2w7XG4gICAgMHgzZmI1MDZkZGw7XG4gICAgMHg0OGIyMzY0Ymw7XG4gICAgMHhkODBkMmJkYWw7XG4gICAgMHhhZjBhMWI0Y2w7XG4gICAgMHgzNjAzNGFmNmw7XG4gICAgMHg0MTA0N2E2MGw7XG4gICAgMHhkZjYwZWZjM2w7XG4gICAgMHhhODY3ZGY1NWw7XG4gICAgMHgzMTZlOGVlZmw7XG4gICAgMHg0NjY5YmU3OWw7XG4gICAgMHhjYjYxYjM4Y2w7XG4gICAgMHhiYzY2ODMxYWw7XG4gICAgMHgyNTZmZDJhMGw7XG4gICAgMHg1MjY4ZTIzNmw7XG4gICAgMHhjYzBjNzc5NWw7XG4gICAgMHhiYjBiNDcwM2w7XG4gICAgMHgyMjAyMTZiOWw7XG4gICAgMHg1NTA1MjYyZmw7XG4gICAgMHhjNWJhM2JiZWw7XG4gICAgMHhiMmJkMGIyOGw7XG4gICAgMHgyYmI0NWE5Mmw7XG4gICAgMHg1Y2IzNmEwNGw7XG4gICAgMHhjMmQ3ZmZhN2w7XG4gICAgMHhiNWQwY2YzMWw7XG4gICAgMHgyY2Q5OWU4Ymw7XG4gICAgMHg1YmRlYWUxZGw7XG4gICAgMHg5YjY0YzJiMGw7XG4gICAgMHhlYzYzZjIyNmw7XG4gICAgMHg3NTZhYTM5Y2w7XG4gICAgMHgwMjZkOTMwYWw7XG4gICAgMHg5YzA5MDZhOWw7XG4gICAgMHhlYjBlMzYzZmw7XG4gICAgMHg3MjA3Njc4NWw7XG4gICAgMHgwNTAwNTcxM2w7XG4gICAgMHg5NWJmNGE4Mmw7XG4gICAgMHhlMmI4N2ExNGw7XG4gICAgMHg3YmIxMmJhZWw7XG4gICAgMHgwY2I2MWIzOGw7XG4gICAgMHg5MmQyOGU5Ymw7XG4gICAgMHhlNWQ1YmUwZGw7XG4gICAgMHg3Y2RjZWZiN2w7XG4gICAgMHgwYmRiZGYyMWw7XG4gICAgMHg4NmQzZDJkNGw7XG4gICAgMHhmMWQ0ZTI0Mmw7XG4gICAgMHg2OGRkYjNmOGw7XG4gICAgMHgxZmRhODM2ZWw7XG4gICAgMHg4MWJlMTZjZGw7XG4gICAgMHhmNmI5MjY1Ymw7XG4gICAgMHg2ZmIwNzdlMWw7XG4gICAgMHgxOGI3NDc3N2w7XG4gICAgMHg4ODA4NWFlNmw7XG4gICAgMHhmZjBmNmE3MGw7XG4gICAgMHg2NjA2M2JjYWw7XG4gICAgMHgxMTAxMGI1Y2w7XG4gICAgMHg4ZjY1OWVmZmw7XG4gICAgMHhmODYyYWU2OWw7XG4gICAgMHg2MTZiZmZkM2w7XG4gICAgMHgxNjZjY2Y0NWw7XG4gICAgMHhhMDBhZTI3OGw7XG4gICAgMHhkNzBkZDJlZWw7XG4gICAgMHg0ZTA0ODM1NGw7XG4gICAgMHgzOTAzYjNjMmw7XG4gICAgMHhhNzY3MjY2MWw7XG4gICAgMHhkMDYwMTZmN2w7XG4gICAgMHg0OTY5NDc0ZGw7XG4gICAgMHgzZTZlNzdkYmw7XG4gICAgMHhhZWQxNmE0YWw7XG4gICAgMHhkOWQ2NWFkY2w7XG4gICAgMHg0MGRmMGI2Nmw7XG4gICAgMHgzN2Q4M2JmMGw7XG4gICAgMHhhOWJjYWU1M2w7XG4gICAgMHhkZWJiOWVjNWw7XG4gICAgMHg0N2IyY2Y3Zmw7XG4gICAgMHgzMGI1ZmZlOWw7XG4gICAgMHhiZGJkZjIxY2w7XG4gICAgMHhjYWJhYzI4YWw7XG4gICAgMHg1M2IzOTMzMGw7XG4gICAgMHgyNGI0YTNhNmw7XG4gICAgMHhiYWQwMzYwNWw7XG4gICAgMHhjZGQ3MDY5M2w7XG4gICAgMHg1NGRlNTcyOWw7XG4gICAgMHgyM2Q5NjdiZmw7XG4gICAgMHhiMzY2N2EyZWw7XG4gICAgMHhjNDYxNGFiOGw7XG4gICAgMHg1ZDY4MWIwMmw7XG4gICAgMHgyYTZmMmI5NGw7XG4gICAgMHhiNDBiYmUzN2w7XG4gICAgMHhjMzBjOGVhMWw7XG4gICAgMHg1YTA1ZGYxYmw7XG4gICAgMHgyZDAyZWY4ZGw7XG4gIHxdXG5cbmxldCBzdHJpbmdfZm9sZF9sZWZ0IGYgYWNjIHN0ciBvZmZzZXQgbGVuZ3RoID1cbiAgbGV0IGFjY19yID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IG9mZnNldCB0byBvZmZzZXQgKyBsZW5ndGggLSAxIGRvXG4gICAgYWNjX3IgOj0gZiAhYWNjX3IgKFN0cmluZy5nZXQgc3RyIGkpXG4gIGRvbmU7XG4gICFhY2NfclxuXG4oKmxldCBiaWdzdHJpbmdfZm9sZF9sZWZ0IGYgYWNjIHN0ciA9XG4gIGxldCBhY2NfciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSAwIHRvIChCaWdhcnJheS5BcnJheTEuZGltIHN0cikgLSAxIGRvXG4gICAgYWNjX3IgOj0gZiAhYWNjX3IgQEAgQmlnYXJyYXkuQXJyYXkxLmdldCBzdHIgaVxuICBkb25lO1xuICAhYWNjX3JcbiopXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgdXBkYXRlX2NyYyBhY2MgYyA9XG4gIGxldCBpbmRleCA9IEludDMyLnRvX2ludCAoYWNjIF5eXiBJbnQzMi5vZl9pbnQgKGludF9vZl9jaGFyIGMpICYmJiAweGZmbCkgaW5cbiAgY3JjX3RhYmxlLihpbmRleCkgXl5eIChhY2MgPj4+IDgpICYmJiAweGZmZmZmZmZmbFxuXG5sZXQgc3RyaW5nID8oY3JjID0gMGwpIHN0ciBvZmZzZXQgbGVuZ3RoID1cbiAgc3RyaW5nX2ZvbGRfbGVmdCB1cGRhdGVfY3JjIChjcmMgXl5eIDB4ZmZmZmZmZmZsKSBzdHIgb2Zmc2V0IGxlbmd0aFxuICBeXl4gMHhmZmZmZmZmZmxcblxuKCpsZXQgYmlnc3RyaW5nID8oY3JjPTBsKSBzdHIgPVxuICAoYmlnc3RyaW5nX2ZvbGRfbGVmdCB1cGRhdGVfY3JjIChjcmMgXl5eIDB4ZmZmZmZmZmZsKSBzdHIpIF5eXiAweGZmZmZmZmZmbFxuKilcbigqXG5sZXQgZGlnZXN0IChjcmMgOiB0KSA/KG9mZiA9IDApID9sZW4gYnVmID1cbiAgbGV0IGxlbiA9IG1hdGNoIGxlbiB3aXRoIFNvbWUgbGVuIC0+IGxlbiB8IE5vbmUgLT4gQ3N0cnVjdC5sZW4gYnVmIC0gb2ZmIGluXG4gIGNzdHJ1Y3QgfmNyYzooY3JjIDo+IGludDMyKSAoQ3N0cnVjdC5zdWIgYnVmIG9mZiBsZW4pXG5cbmxldCBkaWdlc3R2ID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgdiAtPiBkaWdlc3QgYWNjIHYpXG5cbmxldCBkaWdlc3RjIChjcmMgOiB0KSBieXRlID1cbiAgKHVwZGF0ZV9jcmMgKGNyYyBeXl4gMHhmZmZmZmZmZmwpIChDaGFyLmNociBieXRlKSkgXl5eIDB4ZmZmZmZmZmZsXG5cbmxldCBkaWdlc3RzIChjcmMgOiB0KSA/KG9mZiA9IDApID9sZW4gYnVmID1cbiAgbGV0IGxlbiA9IG1hdGNoIGxlbiB3aXRoIFNvbWUgbGVuIC0+IGxlbiB8IE5vbmUgLT4gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mZiBpblxuICBieXRlcyB+Y3JjOihjcmMgOj4gaW50MzIpIGJ1ZiBvZmYgbGVuXG5cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludDMyIDogdCAtPiBpbnQzMiA9IFwiJWlkZW50aXR5XCJcblxubGV0IHBwIHBwZiB2ID0gRm10LnBmIHBwZiBcIiUwNGx4XCIgKHYgOj4gaW50MzIpXG5cbmxldCBkZWZhdWx0ID0gMGxcblxubGV0IGVxID0gSW50MzIuZXF1YWxcbmxldCBuZXEgYSBiID0gbm90IChlcSBhIGIpXG4qKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjb2xvciA9IFJlZCB8IEdyZXkgfCBMaWdodGJsdWUgfCBCbGFja1xuXG5sZXQgdHJpcGxlX29mX2NvbG9yID0gZnVuY3Rpb25cbiAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gIHwgTGlnaHRibHVlIC0+IDAsIDAsIDEyOFxuICB8IEJsYWNrIC0+IDAsIDAsIDBcbiIsInR5cGUgJ2EgdCA9IHtcbiAgc2l6ZTogaW50O1xuICBkZWZhdWx0OiAnYTtcbiAgbXV0YWJsZSBzdGFydDogaW50O1xuICBtdXRhYmxlIGZpbmFsOiBpbnQ7XG4gIGNvbnRlbnQ6ICdhIGFycmF5O1xufVxuXG5sZXQgY3JlYXRlIGkgZGVmYXVsdCA9XG4gIGxldCBzaXplID0gbWF4IGkgMiBpblxuICB7IHNpemU7IGRlZmF1bHQ7IHN0YXJ0ID0gMDsgZmluYWwgPSAwOyBjb250ZW50ID0gQXJyYXkubWFrZSBzaXplIGRlZmF1bHQgfVxuXG5sZXQgc3VjYyBpIHQgPVxuICBpZiBpID0gdC5zaXplIC0gMSB0aGVuXG4gICAgMFxuICBlbHNlXG4gICAgc3VjYyBpXG5cbmxldCBmdWxsIHQgPSBzdWNjIHQuZmluYWwgdCA9IHQuc3RhcnRcbmxldCBmcmVlX29uZSB0ID0gdC5zdGFydCA8LSBzdWNjIHQuc3RhcnQgdFxuXG5sZXQgYWRkIHggdCA9XG4gIGxldCAoKSA9IGlmIGZ1bGwgdCB0aGVuIGZyZWVfb25lIHQgaW5cbiAgbGV0ICgpID0gdC5jb250ZW50Lih0LmZpbmFsKSA8LSB4IGluXG4gIGxldCAoKSA9IHQuZmluYWwgPC0gc3VjYyB0LmZpbmFsIHQgaW5cbiAgdFxuXG5sZXQgaXRlciBmIHQgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpIDw+IHQuZmluYWwgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBmIHQuY29udGVudC4oaSkgaW5cbiAgICAgIGF1eCAoc3VjYyBpIHQpXG4gICAgKVxuICBpblxuICBhdXggdC5zdGFydFxuXG5sZXQgY2xlYW4gdCA9XG4gIGxldCByZWMgYXV4IGsgPVxuICAgIGlmIGsgPSB0LnNpemUgdGhlblxuICAgICAgdFxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID0gdC5jb250ZW50LihrKSA8LSB0LmRlZmF1bHQgaW5cbiAgICAgIGF1eCAoayArIDEpXG4gICAgKVxuICBpblxuICBhdXggMFxuIiwiKCoqXG4gICogY2FjaGUubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyNy8wMy8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDI3LzAzLzIwMTJcbiAgKiAqXG4gICpcbiAgKiBJdCB1c2VzIGltcGVyYXRpdmUgc3R5bGVzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgbW9kdWxlc1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBDYWNoZSA9IHNpZ1xuICBtb2R1bGUgTyA6IFNldE1hcC5PcmRlcmVkVHlwZVxuXG4gIHR5cGUgdFxuXG4gIHZhbCBsYXN0IDogdCAtPiBPLnQgb3B0aW9uXG4gIHZhbCBjcmVhdGUgOiBpbnQgb3B0aW9uIC0+IHRcbiAgdmFsIGFkZCA6IE8udCAtPiB0IC0+IHRcbiAgdmFsIGZvbGQgOiAoTy50IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBpdGVyIDogKE8udCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgQ2FjaGUgPVxuZnVuY3RvclxuICAoT08gOiBTZXRNYXAuT3JkZXJlZFR5cGUpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBPID0gT09cbiAgICAgIG1vZHVsZSBTTSA9IFNldE1hcC5NYWtlIChPKVxuICAgICAgbW9kdWxlIFMgPSBTTS5TZXRcblxuICAgICAgdHlwZSBmaW5pdGVfY2FjaGUgPSB7XG4gICAgICAgIHNpemU6IGludDtcbiAgICAgICAgb2Zmc2V0OiBpbnQ7XG4gICAgICAgIGNhY2hlOiBPLnQgb3B0aW9uIGFycmF5O1xuICAgICAgICBiYWc6IFMudDtcbiAgICAgICAgbGFzdDogTy50IG9wdGlvbjtcbiAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZV9maW5pdGUgbiA9XG4gICAgICAgIHtcbiAgICAgICAgICBzaXplID0gbjtcbiAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgIGNhY2hlID0gQXJyYXkubWFrZSBuIE5vbmU7XG4gICAgICAgICAgYmFnID0gUy5lbXB0eTtcbiAgICAgICAgICBsYXN0ID0gTm9uZTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbmV4dCB0ID1cbiAgICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0IGluXG4gICAgICAgIGlmIG9mZnNldCA9IHQuc2l6ZSAtIDEgdGhlblxuICAgICAgICAgIHsgdCB3aXRoIG9mZnNldCA9IDAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgeyB0IHdpdGggb2Zmc2V0ID0gb2Zmc2V0ICsgMSB9XG5cbiAgICAgIGxldCBhZGRfZmluaXRlIGtleSB0ID1cbiAgICAgICAgbGV0IHQgPSB7IHQgd2l0aCBsYXN0ID0gU29tZSBrZXkgfSBpblxuICAgICAgICBpZiBTLm1lbSBrZXkgdC5iYWcgdGhlblxuICAgICAgICAgIHRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHQgPSB7IHQgd2l0aCBiYWcgPSBTLmFkZCBrZXkgdC5iYWcgfSBpblxuICAgICAgICAgIGxldCB0ID0gbmV4dCB0IGluXG4gICAgICAgICAgbGV0IG92ZXJ3cml0dGVuX3ZhbHVlID0gdC5jYWNoZS4odC5vZmZzZXQpIGluXG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgbWF0Y2ggb3ZlcndyaXR0ZW5fdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHRcbiAgICAgICAgICAgIHwgU29tZSBvdmVyd3JpdHRlbl92YWx1ZSAtPlxuICAgICAgICAgICAgICB7IHQgd2l0aCBiYWcgPSBTLnJlbW92ZSBvdmVyd3JpdHRlbl92YWx1ZSB0LmJhZyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9IHQuY2FjaGUuKHQub2Zmc2V0KSA8LSBTb21lIGtleSBpblxuICAgICAgICAgIHRcbiAgICAgICAgKVxuXG4gICAgICBsZXQgbGFzdF9maW5pdGUgdCA9IHQubGFzdFxuXG4gICAgICB0eXBlIGluZmluaXRlX2NhY2hlID0geyBpbmZfYmFnOiBTLnQ7IGxhc3Q6IE8udCBvcHRpb24gfVxuICAgICAgdHlwZSB0ID0gRmluaXRlIG9mIGZpbml0ZV9jYWNoZSB8IEluZmluaXRlIG9mIGluZmluaXRlX2NhY2hlXG5cbiAgICAgIGxldCBjcmVhdGVfaW5maW5pdGUgPSB7IGluZl9iYWcgPSBTLmVtcHR5OyBsYXN0ID0gTm9uZSB9XG5cbiAgICAgIGxldCBhZGRfaW5maW5pdGUga2V5IHQgPVxuICAgICAgICB7IGluZl9iYWcgPSBTLmFkZCBrZXkgdC5pbmZfYmFnOyBsYXN0ID0gU29tZSBrZXkgfVxuXG4gICAgICBsZXQgY3JlYXRlIHNpemUgPVxuICAgICAgICBtYXRjaCBzaXplIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEluZmluaXRlIGNyZWF0ZV9pbmZpbml0ZVxuICAgICAgICB8IFNvbWUgYSAtPiBGaW5pdGUgKGNyZWF0ZV9maW5pdGUgYSlcblxuICAgICAgbGV0IGxhc3QgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IGxhc3RfZmluaXRlIHRcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IHQubGFzdFxuXG4gICAgICBsZXQgYWRkIGtleSB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gRmluaXRlIChhZGRfZmluaXRlIGtleSB0KVxuICAgICAgICB8IEluZmluaXRlIHQgLT4gSW5maW5pdGUgKGFkZF9pbmZpbml0ZSBrZXkgdClcblxuICAgICAgbGV0IGZvbGQgZiB0IGEgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBTLmZvbGQgZiB0LmJhZyBhXG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiBTLmZvbGQgZiB0LmluZl9iYWcgYVxuXG4gICAgICBsZXQgaXRlciBmIHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBTLml0ZXIgZiB0LmJhZ1xuICAgICAgICB8IEluZmluaXRlIHQgLT4gUy5pdGVyIGYgdC5pbmZfYmFnXG4gICAgZW5kIDpcbiAgICAgIENhY2hlIHdpdGggdHlwZSBPLnQgPSBPTy50KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGcm9tKSBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgUGllcnJlIFdlaXMgYW5kIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5OSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeHRlbnNpYmxlIGJ1ZmZlcnMgKilcblxubW9kdWxlIEJBID0gQmlnYXJyYXkuQXJyYXkxXG5cbnR5cGUgYmlnc3RyaW5nID1cbiAgKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGJ1ZmZlcjogYmlnc3RyaW5nO1xuICBtdXRhYmxlIHBvc2l0aW9uOiBpbnQ7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyOiBiaWdzdHJpbmc7XG59XG5cbmxldCBjcmVhdGUgbiA9XG4gIGxldCBuID1cbiAgICBpZiBuIDwgMSB0aGVuXG4gICAgICAxXG4gICAgZWxzZVxuICAgICAgblxuICBpblxuICBsZXQgbiA9XG4gICAgaWYgbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlXG4gICAgICBuXG4gIGluXG4gIGxldCBzID0gQkEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgbiBpblxuICB7IGJ1ZmZlciA9IHM7IHBvc2l0aW9uID0gMDsgbGVuZ3RoID0gbjsgaW5pdGlhbF9idWZmZXIgPSBzIH1cblxubGV0IGNvbnRlbnRzIGIgPVxuICBsZXQgb3V0ID0gQkEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgYi5wb3NpdGlvbiBpblxuICBsZXQgKCkgPSBCQS5ibGl0IChCQS5zdWIgYi5idWZmZXIgMCBiLnBvc2l0aW9uKSBvdXQgaW5cbiAgb3V0XG5cbigqbGV0IHN1YiBiIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYi5wb3NpdGlvbiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLnN1YlwiXG4gIGVsc2UgQkEuc3ViIGIuYnVmZmVyIG9mcyBsZW5cbiopXG4oKlxubGV0IGJsaXQgc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiBzcmMucG9zaXRpb24gLSBsZW5cbiAgICAgICAgICAgICB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChCeXRlcy5sZW5ndGggZHN0KSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmJsaXRcIlxuICBlbHNlXG4gICAgQkEuYmxpdCAoc3ViIHNyYyBzcmNvZmYgbGVuKVxuICAgICAgKEJpZ3N0cmluZy5zdWIgKEJpZ3N0cmluZy5vZl9hcnJheSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IGRzdCkgZHN0b2ZmIGxlbilcbiopXG5cbmxldCBudGggYiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBiLnBvc2l0aW9uIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlXG4gICAgQkEudW5zYWZlX2dldCBiLmJ1ZmZlciBvZnNcblxubGV0IGxlbmd0aCBiID0gYi5wb3NpdGlvblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGIuYnVmZmVyIDwtIGIuaW5pdGlhbF9idWZmZXI7XG4gIGIubGVuZ3RoIDwtIEJBLmRpbSBiLmJ1ZmZlclxuXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBsZW4gPSBiLmxlbmd0aCBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBsZW4gaW5cbiAgd2hpbGUgYi5wb3NpdGlvbiArIG1vcmUgPiAhbmV3X2xlbiBkb1xuICAgIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuXG4gIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICBpZiBiLnBvc2l0aW9uICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgbmV3X2xlbiA6PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlXG4gICAgICBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICBsZXQgbmV3X2J1ZmZlciA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0ICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQkEuYmxpdCAoQkEuc3ViIGIuYnVmZmVyIDAgYi5wb3NpdGlvbikgKEJBLnN1YiBuZXdfYnVmZmVyIDAgYi5wb3NpdGlvbik7XG4gIGIuYnVmZmVyIDwtIG5ld19idWZmZXI7XG4gIGIubGVuZ3RoIDwtICFuZXdfbGVuXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxuKCpcbiBsZXQgYWRkX3V0Zl84X3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICBhZGRfY2hhciBiIChDaGFyLnVuc2FmZV9jaHIgdSlcbiB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4QzAgbG9yICh1IGxzciA2KSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMyA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMztcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEUwIGxvciAodSBsc3IgMTIpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDNcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhGMCBsb3IgKHUgbHNyIDE4KSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgMTIpIGxhbmQgMHgzRikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMylcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAodSBsYW5kIDB4RkYpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsc3IgOCkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4qKVxuXG5sZXQgYWRkX3N1YnN0cmluZyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGlmIG9mZnNldCA8IDAgfHwgbGVuIDwgMCB8fCBvZmZzZXQgPiBTdHJpbmcubGVuZ3RoIHMgLSBsZW4gdGhlblxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKGIucG9zaXRpb24gKyBpKSAoU3RyaW5nLmdldCBzIChvZmZzZXQgKyBpKSlcbiAgZG9uZTtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9IGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxuKCpcbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiByZWFkIHVwIHRvIFtsZW5dIGJ5dGVzIGZyb20gW2ljXSBpbnRvIFtiXS4gKilcbmxldCByZWMgYWRkX2NoYW5uZWxfcmVjIGIgaWMgbGVuID1cbiAgaWYgbGVuID4gMCB0aGVuIChcbiAgICBsZXQgbiA9IGlucHV0IGljIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuIGluXG4gICAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgICBpZiBuID0gMCB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSBhZGRfY2hhbm5lbF9yZWMgYiBpYyAobGVuLW4pICAgKCogbiA8PSBsZW4gKilcbiAgKVxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgYWRkX2NoYW5uZWxfcmVjIGIgaWMgbGVuXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgKEx3dF9ieXRlcy50b19ieXRlcyBiLmJ1ZmZlcikgMCBiLnBvc2l0aW9uXG4qKVxuKCpsZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gICAgfCAnKCcgLT4gJyknXG4gICAgfCAneycgLT4gJ30nXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxuICBsZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICAgIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICAgIGlmIHMuW2ldID0gb3BlbmluZyB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbSBlbHNlXG4gICAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltIGluXG4gICAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbiAgbGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICAgIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyB8ICdfJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgICB8IF8gLT4gaSBpblxuICAgIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuICAoKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxuICBsZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gICAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAgICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICAgIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICAgKCogUmVndWxhciBpZGVudCAqKVxuICAgIHwgXyAtPlxuICAgICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgICAgIFN0cmluZy5zdWIgcyBzdGFydCAoc3RvcCAtIHN0YXJ0KSwgc3RvcFxuXG4gICgqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxuICBsZXQgYWRkX3N1YnN0aXR1dGUgYiBmIHMgPVxuICAgIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgICAgaWYgaSA8IGxpbSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgICAgfCAnJCcgLT5cbiAgICAgICAgICAgbGV0IGogPSBpICsgMSBpblxuICAgICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyBqIGxpbSBpblxuICAgICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICAgIHwgY3VycmVudCB3aGVuIHByZXZpb3VzID09ICdcXFxcJyAtPlxuICAgICAgICAgICBhZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIGVuZCBlbHNlXG4gICAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgICBzdWJzdCAnICcgMFxuXG4gIGxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJCdWZmZXIudHJ1bmNhdGVcIlxuICAgICAgZWxzZVxuICAgICAgICBiLnBvc2l0aW9uIDwtIGxlblxuKilcbiIsIigqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOSBDaXRyaXggU3lzdGVtcyBJbmMuXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTAgVGhvbWFzIEdhemFnbmFpcmUgPHRob21hc0BnYXphZ25haXJlLmNvbT5cbiAqXG4gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbiAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcbiAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbiAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SXG4gKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4gKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU5cbiAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GXG4gKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuICpcbiAqKVxuXG5sZXQgZGVmYXVsdF9hbHBoYWJldCA9XG4gIFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiXG5cbmxldCB1cmlfc2FmZV9hbHBoYWJldCA9XG4gIFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktX1wiXG5cbmxldCBwYWRkaW5nID0gJz0nXG5cbmxldCBvZl9jaGFyID8oYWxwaGFiZXQgPSBkZWZhdWx0X2FscGhhYmV0KSB4ID1cbiAgaWYgeCA9IHBhZGRpbmcgdGhlblxuICAgIDBcbiAgZWxzZVxuICAgIFN0cmluZy5pbmRleCBhbHBoYWJldCB4XG5cbmxldCB0b19jaGFyID8oYWxwaGFiZXQgPSBkZWZhdWx0X2FscGhhYmV0KSB4ID0gYWxwaGFiZXQuW3hdXG5cbmxldCBkZWNvZGUgP2FscGhhYmV0IGlucHV0ID1cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgbGV0IGlucHV0ID1cbiAgICBpZiBsZW5ndGggbW9kIDQgPSAwIHRoZW5cbiAgICAgIGlucHV0XG4gICAgZWxzZVxuICAgICAgaW5wdXQgXiBTdHJpbmcubWFrZSAoNCAtIChsZW5ndGggbW9kIDQpKSBwYWRkaW5nXG4gIGluXG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGxldCB3b3JkcyA9IGxlbmd0aCAvIDQgaW5cbiAgbGV0IHBhZGRpbmcgPVxuICAgIG1hdGNoIGxlbmd0aCB3aXRoXG4gICAgfCAwIC0+IDBcbiAgICB8IF8gd2hlbiBpbnB1dC5bbGVuZ3RoIC0gMl0gPSBwYWRkaW5nIC0+IDJcbiAgICB8IF8gd2hlbiBpbnB1dC5bbGVuZ3RoIC0gMV0gPSBwYWRkaW5nIC0+IDFcbiAgICB8IF8gLT4gMFxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBCaWdhcnJheS5BcnJheTEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXRcbiAgICAgICgod29yZHMgKiAzKSAtIHBhZGRpbmcpXG4gIGluXG4gIGZvciBpID0gMCB0byB3b3JkcyAtIDEgZG9cbiAgICBsZXQgYSA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMCkpXG4gICAgYW5kIGIgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDEpKVxuICAgIGFuZCBjID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAyKSlcbiAgICBhbmQgZCA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMykpIGluXG4gICAgbGV0IG4gPSAoYSBsc2wgMTgpIGxvciAoYiBsc2wgMTIpIGxvciAoYyBsc2wgNikgbG9yIGQgaW5cbiAgICBsZXQgeCA9IChuIGxzciAxNikgbGFuZCAyNTUgYW5kIHkgPSAobiBsc3IgOCkgbGFuZCAyNTUgYW5kIHogPSBuIGxhbmQgMjU1IGluXG4gICAgQmlnYXJyYXkuQXJyYXkxLnNldCBvdXRwdXQgKCgzICogaSkgKyAwKSAoY2hhcl9vZl9pbnQgeCk7XG4gICAgaWYgaSA8PiB3b3JkcyAtIDEgfHwgcGFkZGluZyA8IDIgdGhlblxuICAgICAgQmlnYXJyYXkuQXJyYXkxLnNldCBvdXRwdXQgKCgzICogaSkgKyAxKSAoY2hhcl9vZl9pbnQgeSk7XG4gICAgaWYgaSA8PiB3b3JkcyAtIDEgfHwgcGFkZGluZyA8IDEgdGhlblxuICAgICAgQmlnYXJyYXkuQXJyYXkxLnNldCBvdXRwdXQgKCgzICogaSkgKyAyKSAoY2hhcl9vZl9pbnQgeilcbiAgZG9uZTtcbiAgb3V0cHV0XG5cbmxldCBlbmNvZGUgPyhwYWQgPSB0cnVlKSA/YWxwaGFiZXQgaW5wdXQgPVxuICBsZXQgbGVuZ3RoID0gQmlnYXJyYXkuQXJyYXkxLmRpbSBpbnB1dCBpblxuICBsZXQgd29yZHMgPSAobGVuZ3RoICsgMikgLyAzIGluXG4gICgqIHJvdW5kZWQgdXAgKilcbiAgbGV0IHBhZGRpbmdfbGVuID1cbiAgICBpZiBsZW5ndGggbW9kIDMgPSAwIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlXG4gICAgICAzIC0gKGxlbmd0aCBtb2QgMylcbiAgaW5cbiAgbGV0IG91dHB1dCA9IEJ5dGVzLm1ha2UgKHdvcmRzICogNCkgJ1xcMDAwJyBpblxuICBsZXQgZ2V0IGkgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlXG4gICAgICBpbnRfb2ZfY2hhciAoQmlnYXJyYXkuQXJyYXkxLmdldCBpbnB1dCBpKVxuICBpblxuICBmb3IgaSA9IDAgdG8gd29yZHMgLSAxIGRvXG4gICAgbGV0IHggPSBnZXQgKCgzICogaSkgKyAwKVxuICAgIGFuZCB5ID0gZ2V0ICgoMyAqIGkpICsgMSlcbiAgICBhbmQgeiA9IGdldCAoKDMgKiBpKSArIDIpIGluXG4gICAgbGV0IG4gPSAoeCBsc2wgMTYpIGxvciAoeSBsc2wgOCkgbG9yIHogaW5cbiAgICBsZXQgYSA9IChuIGxzciAxOCkgbGFuZCA2M1xuICAgIGFuZCBiID0gKG4gbHNyIDEyKSBsYW5kIDYzXG4gICAgYW5kIGMgPSAobiBsc3IgNikgbGFuZCA2M1xuICAgIGFuZCBkID0gbiBsYW5kIDYzIGluXG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDApICh0b19jaGFyID9hbHBoYWJldCBhKTtcbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMSkgKHRvX2NoYXIgP2FscGhhYmV0IGIpO1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAyKSAodG9fY2hhciA/YWxwaGFiZXQgYyk7XG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDMpICh0b19jaGFyID9hbHBoYWJldCBkKVxuICBkb25lO1xuICBmb3IgaSA9IDEgdG8gcGFkZGluZ19sZW4gZG9cbiAgICBCeXRlcy5zZXQgb3V0cHV0IChCeXRlcy5sZW5ndGggb3V0cHV0IC0gaSkgcGFkZGluZ1xuICBkb25lO1xuICBpZiBwYWQgdGhlblxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgb3V0cHV0XG4gIGVsc2VcbiAgICBCeXRlcy5zdWJfc3RyaW5nIG91dHB1dCAwIChCeXRlcy5sZW5ndGggb3V0cHV0IC0gcGFkZGluZ19sZW4pXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGxpbmtzID1cbiAgfCBMSU5LUyBvZiAoKGludCAqIGludCkgKiBpbnQpIGxpc3RcbiAgfCBXSEFURVZFUlxuICB8IFNPTUVcbiAgfCBUWVBFIG9mIHN0cmluZyAqIHN0cmluZ1xuXG50eXBlIGNjX3BvcnQgPSB7XG4gIHBvcnRfbGlua3M6IGxpbmtzO1xuICBwb3J0X3N0YXRlczogc3RyaW5nIGxpc3Qgb3B0aW9uOyAgKCoqIFtOb25lXSBtZWFucyBXSEFURVZFUiAqKVxufVxuXG50eXBlIHNpdGUgPSBQb3J0IG9mIGNjX3BvcnQgfCBDb3VudGVyIG9mIGludFxudHlwZSBjY19zaXRlID0geyBzaXRlX25hbWU6IHN0cmluZzsgc2l0ZV90eXBlOiBzaXRlIH1cblxudHlwZSBjY19ub2RlID0ge1xuICBub2RlX3R5cGU6IHN0cmluZztcbiAgbm9kZV9pZDogaW50IG9wdGlvbjtcbiAgbm9kZV9zaXRlczogY2Nfc2l0ZSBhcnJheTtcbn1cblxudHlwZSBjb25uZWN0ZWRfY29tcG9uZW50ID0gY2Nfbm9kZSBvcHRpb24gYXJyYXkgYXJyYXlcblxubW9kdWxlIExpbmtTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IChpbnQgKiBpbnQpICogaW50XG5cbiAgbGV0IHByaW50ID1cbiAgICBQcC5wYWlyXG4gICAgICAoUHAucGFpciBGb3JtYXQucHBfcHJpbnRfaW50IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBGb3JtYXQucHBfcHJpbnRfaW50XG5cbiAgbGV0IGNvbXBhcmUgKHgsIHkpICh4JywgeScpID1cbiAgICBsZXQgYyA9IE1vZHMuaW50X3BhaXJfY29tcGFyZSB4IHgnIGluXG4gICAgaWYgYyA9IDAgdGhlblxuICAgICAgTW9kcy5pbnRfY29tcGFyZSB5IHknXG4gICAgZWxzZVxuICAgICAgY1xuZW5kKVxuXG5sZXQgcHJpbnRfbGluayAoZGFuZ2xpbmcsIGZyZWVfaWQpIHAgZiA9IGZ1bmN0aW9uXG4gIHwgV0hBVEVWRVIgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiWyNdXCJcbiAgfCBTT01FIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIltfXVwiXG4gIHwgVFlQRSAoc2ksIHR5KSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiWyVzLiVzXVwiIHNpIHR5XG4gIHwgTElOS1MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiWy5dXCJcbiAgfCBMSU5LUyBsIC0+XG4gICAgbGV0IG15c2VsZiA9XG4gICAgICByZWYgKExpbmtTZXRNYXAuTWFwLmZpbmRfZGVmYXVsdCBMaW5rU2V0TWFwLk1hcC5lbXB0eSBwICFkYW5nbGluZylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhXVwiXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBwJyAtPlxuICAgICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgICAgIGlmIHAgPSBwJyB0aGVuXG4gICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAgICAgICAoTGlua1NldE1hcC5NYXAuZmluZF9vcHRpb24gcClcbiAgICAgICAgICAgICAgICAgICAgIChMaW5rU2V0TWFwLk1hcC5maW5kX29wdGlvbiBwJyAhZGFuZ2xpbmcpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaW5jciBmcmVlX2lkIGluXG4gICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbXlzZWxmIDo9IExpbmtTZXRNYXAuTWFwLmFkZCBwJyAhZnJlZV9pZCAhbXlzZWxmIGluXG4gICAgICAgICAgICAgICAgICAgIWZyZWVfaWRcbiAgICAgICAgICAgICAgICAgfCBTb21lIHZhIC0+IHZhXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWlcIiBpKSlcbiAgICAgICAgbFxuICAgIGluXG4gICAgZGFuZ2xpbmcgOj0gTGlua1NldE1hcC5NYXAuYWRkIHAgIW15c2VsZiAhZGFuZ2xpbmdcblxubGV0IHByaW50X3BvcnQgd2l0aF9saW5rIG5vZGUgcCBpZCBmID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWFcIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsjfVwiXG4gICAgICB8IFNvbWUgW10gLT4gKClcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCJcbiAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiBpKSlcbiAgICAgICAgICBsKVxuICAgIHAucG9ydF9zdGF0ZXNcbiAgICAobWF0Y2ggd2l0aF9saW5rIHdpdGhcbiAgICB8IFNvbWUgcGFjayAtPiBwcmludF9saW5rIHBhY2sgKG5vZGUsIGlkKVxuICAgIHwgTm9uZSAtPiBmdW4gXyBfIC0+ICgpKVxuICAgIHAucG9ydF9saW5rc1xuXG5sZXQgcHJpbnRfaW50ZiB3aXRoX2xpbmsgbm9kZSA9XG4gIFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaWQgZiBzaSAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgc2kuc2l0ZV9uYW1lIGluXG4gICAgICBtYXRjaCBzaS5zaXRlX3R5cGUgd2l0aFxuICAgICAgfCBQb3J0IHAgLT4gcHJpbnRfcG9ydCB3aXRoX2xpbmsgbm9kZSBwIGlkIGZcbiAgICAgIHwgQ291bnRlciBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ7PSVpfVwiIGkpXG5cbmxldCBwcmludF9hZ2VudCB3aXRoX2lkIGxpbmsgbm9kZSBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIlxuICB8IFNvbWUgYWcgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElcyhAWzxoPiVhQF0pXCJcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcInglaTpcIiBpKSlcbiAgICAgIChpZiB3aXRoX2lkIHRoZW5cbiAgICAgICAgIGFnLm5vZGVfaWRcbiAgICAgICBlbHNlXG4gICAgICAgICBOb25lKVxuICAgICAgYWcubm9kZV90eXBlIChwcmludF9pbnRmIGxpbmsgbm9kZSkgYWcubm9kZV9zaXRlc1xuXG5sZXQgcHJpbnRfY2MgZiBtaXggPVxuICBsZXQgbGluayA9IFNvbWUgKHJlZiBMaW5rU2V0TWFwLk1hcC5lbXB0eSwgcmVmIDApIGluXG4gIFBwLmFycmF5XG4gICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFxcQCBcIilcbiAgICAoZnVuIGFsIC0+IFBwLmFycmF5IFBwLmNvbW1hIChmdW4gYXIgLT4gcHJpbnRfYWdlbnQgdHJ1ZSBsaW5rIChhbCwgYXIpKSlcbiAgICBmIG1peFxuXG5sZXQgZ2V0X2NvbG9yID1cbiAgbGV0IHN0b3JlID0gSGFzaHRibC5jcmVhdGUgMTAgaW5cbiAgZnVuIGkgLT5cbiAgICB0cnkgSGFzaHRibC5maW5kIHN0b3JlIGlcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IHYgPVxuICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiMleCV4JXhcIiAoUmFuZG9tLmludCAyNTUpIChSYW5kb20uaW50IDI1NSlcbiAgICAgICAgICAoUmFuZG9tLmludCAyNTUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSGFzaHRibC5hZGQgc3RvcmUgaSB2IGluXG4gICAgICB2XG5cbmxldCBwcmludF9kb3RfY2MgbmJfY2MgZiBtaXggPVxuICBQcC5hcnJheSBQcC5lbXB0eVxuICAgIChmdW4gaWwgLT5cbiAgICAgIFBwLmFycmF5IFBwLmVtcHR5IChmdW4gaXIgZiAtPiBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGFnIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgXCJub2RlJWRfJWRfJWQgW2xhYmVsID0gXFxcIkBbPGg+JWFAXVxcXCIsIGNvbG9yID0gXFxcIiVzXFxcIiwgXFxcbiAgICAgICAgICAgICBzdHlsZT1maWxsZWRdO0AsXCJcbiAgICAgICAgICAgIG5iX2NjIGlsIGlyXG4gICAgICAgICAgICAocHJpbnRfYWdlbnQgZmFsc2UgTm9uZSAoaWwsIGlyKSlcbiAgICAgICAgICAgIChTb21lIGFnKSAoZ2V0X2NvbG9yIGFnLm5vZGVfdHlwZSk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIm5vZGUlZF8lZF8lZCAtPiBjb3VudGVyJWQgW3N0eWxlPWludmlzXTtALFwiIG5iX2NjIGlsXG4gICAgICAgICAgICBpciBuYl9jYykpXG4gICAgZiBtaXg7XG4gIGlnbm9yZVxuICBAQCBBcnJheS5pdGVyaVxuICAgICAgIChmdW4gYWwgLT5cbiAgICAgICAgIEFycmF5Lml0ZXJpIChmdW4gYXIgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgIHwgU29tZSBhZyAtPlxuICAgICAgICAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgICAgICAgICAoZnVuIHMgc2kgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggc2kuc2l0ZV90eXBlIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBDb3VudGVyIF8gLT4gKClcbiAgICAgICAgICAgICAgICAgfCBQb3J0IHAgLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggcC5wb3J0X2xpbmtzIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFdIQVRFVkVSIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgU09NRSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFRZUEUgKF9zaSwgX3R5KSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IExJTktTIGxpbmtzIC0+XG4gICAgICAgICAgICAgICAgICAgICBQcC5saXN0IFBwLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAoKGFsJywgYXInKSwgcycpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsIDwgYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoYWwgPSBhbCcgJiYgKGFyIDwgYXInIHx8IChhciA9IGFyJyAmJiBzIDwgcycpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG1peC4oYWwnKS4oYXInKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYWcnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5vZGUlZF8lZF8lZCAtPiBub2RlJWRfJWRfJWQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhaWxsYWJlbD1cXFwiJXNcXFwiLCBoZWFkbGFiZWw9XFxcIiVzXFxcIiwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyPW5vbmVdO0AsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYl9jYyBhbCBhciBuYl9jYyBhbCcgYXInIHNpLnNpdGVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnJy5ub2RlX3NpdGVzLihzJykuc2l0ZV9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgZiBsaW5rcykpXG4gICAgICAgICAgICAgICBhZy5ub2RlX3NpdGVzKSlcbiAgICAgICBtaXhcblxuKCpcbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBzdHJpbmc7XG4gIG5vZGVfc2l0ZXM6IGNjX3NpdGUgYXJyYXk7XG59XG50eXBlIGNvbm5lY3RlZF9jb21wb25lbnQgPSBjY19ub2RlIGFycmF5XG4gKilcblxubGV0IHdyaXRlX2NjX3BvcnQgb2IgcCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInBvcnRfbGlua3NcIlxuICAgICAgKGZ1biBvYiAtPiBmdW5jdGlvblxuICAgICAgICB8IFdIQVRFVkVSIC0+IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG9iICgpXG4gICAgICAgIHwgU09NRSAtPiBZb2pzb24uQmFzaWMud3JpdGVfYm9vbCBvYiB0cnVlXG4gICAgICAgIHwgVFlQRSAoc2ksIHR5KSAtPlxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwie1xcXCJzaXRlX25hbWVcXFwiOlxcXCJcIiBpblxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNpIGluXG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiLFxcXCJhZ2VudF90eXBlXFxcIjpcXFwiXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiB0eSBpblxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIn1cIlxuICAgICAgICB8IExJTktTIGwgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyXG4gICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnRcbiAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgICAgICAgb2IgbClcbiAgICAgIG9iIHAucG9ydF9saW5rc1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicG9ydF9zdGF0ZXNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX29wdGlvbiAoSnNvblV0aWwud3JpdGVfbGlzdCBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nKSlcbiAgICAgIG9iIHAucG9ydF9zdGF0ZXNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgd3JpdGVfc2l0ZSBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGYuc2l0ZV90eXBlIHdpdGhcbiAgICB8IENvdW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcImNvdW50ZXJcIiBpblxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICcsJyBpblxuICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBpXG4gICAgfCBQb3J0IHAgLT5cbiAgICAgIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJwb3J0XCIgaW5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCcgaW5cbiAgICAgIHdyaXRlX2NjX3BvcnQgb2IgcFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCB3cml0ZV9jY19zaXRlIG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzaXRlX25hbWVcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIGYuc2l0ZV9uYW1lXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2l0ZV90eXBlXCIgd3JpdGVfc2l0ZSBvYiBmIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IGxpbmtzX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gV0hBVEVWRVJcbiAgfCBgQm9vbCBiIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IGIgaW5cbiAgICBTT01FXG4gIHwgYEFzc29jIFsgKFwic2l0ZV9uYW1lXCIsIGBTdHJpbmcgc2kpOyAoXCJhZ2VudF90eXBlXCIsIGBTdHJpbmcgdHkpIF1cbiAgfCBgQXNzb2MgWyAoXCJhZ2VudF90eXBlXCIsIGBTdHJpbmcgdHkpOyAoXCJzaXRlX25hbWVcIiwgYFN0cmluZyBzaSkgXSAtPlxuICAgIFRZUEUgKHNpLCB0eSlcbiAgfCBgTGlzdCBfIGFzIHggLT5cbiAgICBsZXQgZXJyb3JfbXNnID0gTm9uZSBpblxuICAgIExJTktTXG4gICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgKEpzb25VdGlsLmNvbXBhY3RfdG9fcGFpclxuICAgICAgICAgICAgKEpzb25VdGlsLmNvbXBhY3RfdG9fcGFpclxuICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnKVxuICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnKSlcbiAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZykpXG4gICAgICAgICB4KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGNjX3BvcnRcIiwgeCkpXG5cbmxldCByZWFkX2NjX3BvcnQgcCBsYiA9XG4gIGxldCBwb3J0X2xpbmtzLCBwb3J0X3N0YXRlcyA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChzLCBpKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInBvcnRfbGlua3NcIiB0aGVuXG4gICAgICAgICAgbGlua3Nfb2ZfeW9qc29uIChZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIpLCBpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJwb3J0X3N0YXRlc1wiKSBpblxuICAgICAgICAgICggcyxcbiAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfb3B0aW9uXG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZylcbiAgICAgICAgICAgICAgcCBsYiApXG4gICAgICAgICkpXG4gICAgICAoTElOS1MgW10sIFNvbWUgW10pIHAgbGJcbiAgaW5cbiAgeyBwb3J0X2xpbmtzOyBwb3J0X3N0YXRlcyB9XG5cbmxldCByZWFkX3NpdGUgcCBsYiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xiciBwIGxiIGluXG4gIGxldCBrZXkgPSBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbW1hIHAgbGIgaW5cbiAgbGV0IG91dCA9XG4gICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlc1xuICAgICAgKGZ1biBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwiY291bnRlclwiIHRoZW5cbiAgICAgICAgICBDb3VudGVyIChZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInBvcnRcIikgaW5cbiAgICAgICAgICBQb3J0IChyZWFkX2NjX3BvcnQgcCBsYilcbiAgICAgICAgKSlcbiAgICAgIHAgbGJcbiAgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfcmJyIHAgbGIgaW5cbiAgb3V0XG5cbmxldCByZWFkX2NjX3NpdGUgcCBsYiA9XG4gIGxldCBzaXRlX25hbWUsIHNpdGVfdHlwZSA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChuLCBzKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNpdGVfbmFtZVwiIHRoZW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwic2l0ZV90eXBlXCIpIGluXG4gICAgICAgICAgbiwgcmVhZF9zaXRlIHAgbGJcbiAgICAgICAgKSlcbiAgICAgIChcIlwiLCBDb3VudGVyICgtMSkpIHAgbGJcbiAgaW5cbiAgeyBzaXRlX25hbWU7IHNpdGVfdHlwZSB9XG5cbmxldCB3cml0ZV9jY19ub2RlIG9iIHggPVxuICBKc29uVXRpbC53cml0ZV9vcHRpb25cbiAgICAoZnVuIG9iIGYgLT5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibm9kZV90eXBlXCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYlxuICAgICAgICAgIGYubm9kZV90eXBlXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIGYubm9kZV9pZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbm9kZV9pZCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm5vZGVfaWRcIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIG5vZGVfaWRcbiAgICAgICAgICBpblxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX2NvbW1hIG9iXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJub2RlX3NpdGVzXCJcbiAgICAgICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgd3JpdGVfY2Nfc2l0ZSlcbiAgICAgICAgICBvYiBmLm5vZGVfc2l0ZXNcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nKVxuICAgIG9iIHhcblxubGV0IHJlYWRfY2Nfbm9kZSBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9vcHRpb25cbiAgICAoZnVuIHAgbGIgLT5cbiAgICAgIGxldCBub2RlX2lkLCBub2RlX3R5cGUsIG5vZGVfc2l0ZXMgPVxuICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgICAgICAoZnVuIChpZCwgbiwgcykga2V5IHAgbGIgLT5cbiAgICAgICAgICAgIGlmIGtleSA9IFwibm9kZV9pZFwiIHRoZW5cbiAgICAgICAgICAgICAgU29tZSAoWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIpLCBuLCBzXG4gICAgICAgICAgICBlbHNlIGlmIGtleSA9IFwibm9kZV90eXBlXCIgdGhlblxuICAgICAgICAgICAgICBpZCwgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwibm9kZV9zaXRlc1wiKSBpblxuICAgICAgICAgICAgICBpZCwgbiwgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgcmVhZF9jY19zaXRlIHAgbGJcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKE5vbmUsIFwiXCIsIFt8fF0pIHAgbGJcbiAgICAgIGluXG4gICAgICB7IG5vZGVfaWQ7IG5vZGVfdHlwZTsgbm9kZV9zaXRlcyB9KVxuICAgIHAgbGJcblxubGV0IHdyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgb2IgZiA9XG4gIEpzb25VdGlsLndyaXRlX2FycmF5IChKc29uVXRpbC53cml0ZV9hcnJheSB3cml0ZV9jY19ub2RlKSBvYiBmXG5cbmxldCByZWFkX2Nvbm5lY3RlZF9jb21wb25lbnQgb2IgZiA9XG4gIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IChZb2pzb24uQmFzaWMucmVhZF9hcnJheSByZWFkX2NjX25vZGUpIG9iIGZcblxubGV0IHN0cmluZ19vZl9jb25uZWN0ZWRfY29tcG9uZW50ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIGxldCAoKSA9IHdyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgb2IgeCBpblxuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Nvbm5lY3RlZF9jb21wb25lbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY291bnRlcl9pbmZvID0ge1xuICBjb3VudGVyX2luZm9fbWluOiBpbnQgb3B0aW9uO1xuICBjb3VudGVyX2luZm9fbWF4OiBpbnQgb3B0aW9uO1xuICBjb3VudGVyX2RlZmF1bHRfdmFsdWU6IGludDtcbn1cblxudHlwZSAnbGlua3Mgc2l0ZV9zaWcgPSB7XG4gIGludGVybmFsX3N0YXRlOiB1bml0IE5hbWVkRGVjbHMudDtcbiAgbGlua3M6ICdsaW5rcyBvcHRpb247XG4gIGNvdW50ZXJfaW5mbzogY291bnRlcl9pbmZvIG9wdGlvbjtcbn1cblxudHlwZSB0ID0gYm9vbCBhcnJheSBhcnJheSBzaXRlX3NpZyBOYW1lZERlY2xzLnRcblxubGV0IGZvbGQgZiA9IE5hbWVkRGVjbHMuZm9sZCAoZnVuIGkgbiBvIF8gLT4gZiBpIG4gbylcblxubGV0IG51bV9vZl9zaXRlID9hZ2VudF9uYW1lIHNpdGVfbmFtZSBzaWduYXR1cmUgPVxuICBsZXQga2luZCA9XG4gICAgbWF0Y2ggYWdlbnRfbmFtZSB3aXRoXG4gICAgfCBOb25lIC0+IFwic2l0ZSBuYW1lXCJcbiAgICB8IFNvbWUgYWdlbnRfbmFtZSAtPiBcInNpdGUgbmFtZSBmb3IgYWdlbnQgXCIgXiBhZ2VudF9uYW1lXG4gIGluXG4gIE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kIHNpZ25hdHVyZSBzaXRlX25hbWVcblxubGV0IHNpdGVfb2ZfbnVtIGFkZHIgc2lnbmF0dXJlID1cbiAgdHJ5IE5hbWVkRGVjbHMuZWx0X25hbWUgc2lnbmF0dXJlIGFkZHJcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBudW1fb2ZfaW50ZXJuYWxfc3RhdGUgc2l0ZV9pZCBzdGF0ZSBzaWduYXR1cmUgPVxuICB0cnlcbiAgICBsZXQgc2l0ZV9uYW1lLCBzaXRlX3NpZyA9IHNpZ25hdHVyZS5OYW1lZERlY2xzLmRlY2xzLihzaXRlX2lkKSBpblxuICAgIE5hbWVkRGVjbHMuZWx0X2lkXG4gICAgICB+a2luZDooXCJpbnRlcm5hbCBzdGF0ZSBmb3Igc2l0ZSBcIiBeIHNpdGVfbmFtZSlcbiAgICAgIHNpdGVfc2lnLmludGVybmFsX3N0YXRlIHN0YXRlXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgaW50ZXJuYWxfc3RhdGVfb2Zfc2l0ZV9pZCBzaXRlX2lkIHZhbF9pZCBzaWduYXR1cmUgPVxuICB0cnlcbiAgICBsZXQgc2l0ZV9zaWcgPSBOYW1lZERlY2xzLmVsdF92YWwgc2lnbmF0dXJlIHNpdGVfaWQgaW5cbiAgICBOYW1lZERlY2xzLmVsdF9uYW1lIHNpdGVfc2lnLmludGVybmFsX3N0YXRlIHZhbF9pZFxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGNvdW50ZXJfb2Zfc2l0ZV9pZCBzaXRlX2lkIHNpZ25hdHVyZSA9XG4gIHRyeSAoTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBzaXRlX2lkKS5jb3VudGVyX2luZm9cbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBoYXNfY291bnRlciBzaWduYXR1cmUgPVxuICBmb2xkXG4gICAgKGZ1biBwX2lkIF8gb2sgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgc2l0ZV9zaWcgPSBOYW1lZERlY2xzLmVsdF92YWwgc2lnbmF0dXJlIHBfaWQgaW5cbiAgICAgICAgb2sgfHwgbm90IChzaXRlX3NpZy5jb3VudGVyX2luZm8gPSBOb25lKVxuICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIGZhbHNlIHNpZ25hdHVyZVxuXG4oKlxubGV0IHJlYWRfcG9zaXRpb24gcCBsYiA9XG4gIG1hdGNoIFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYiB3aXRoXG4gIHwgYEFzc29jIFsgKFwibGluZVwiLCBgSW50IGxpbmUpOyAoXCJjaHJcIiwgYEludCBjaHIpIF1cbiAgfCBgQXNzb2MgWyAoXCJjaHJcIiwgYEludCBjaHIpOyAoXCJsaW5lXCIsIGBJbnQgbGluZSkgXSAtPlxuICAgIHsgbGluZTsgY2hyIH1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcG9zaXRpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9wb3NpdGlvbiBvYiB7IGxpbmU7IGNociB9ID1cbiAgWW9qc29uLndyaXRlX2Fzc29jIG9iIFsgXCJsaW5lXCIsIGBJbnQgbGluZTsgXCJjaHJcIiwgYEludCBjaHIgXVxuKilcblxubGV0IG9uZV90b19qc29uID1cbiAgTmFtZWREZWNscy50b19qc29uIChmdW4gc2lnbmF0dXJlIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJpbnRlcm5hbF9zdGF0ZVwiLFxuICAgICAgICAgICAgTmFtZWREZWNscy50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSApO1xuICAgICAgICAgICggXCJsaW5rc1wiLFxuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gbGlua3MgLT5cbiAgICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gYSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYExpc3QgKEFycmF5LmZvbGRfcmlnaHQgKGZ1biBiIGMgLT4gYEJvb2wgYiA6OiBjKSBhIFtdKVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICBsaW5rcyBbXSkpXG4gICAgICAgICAgICAgIHNpZ25hdHVyZS5saW5rcyApO1xuICAgICAgICAgICggXCJjb3VudGVyX2luZm9cIixcbiAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAoZnVuIGMgLT5cbiAgICAgICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgKCBcIm1pblwiLFxuICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiAoZnVuIHggLT4gYEludCB4KSBjLmNvdW50ZXJfaW5mb19taW4gKTtcbiAgICAgICAgICAgICAgICAgICAgKCBcIm1heFwiLFxuICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiAoZnVuIHggLT4gYEludCB4KSBjLmNvdW50ZXJfaW5mb19tYXggKTtcbiAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0XCIsIGBJbnQgYy5jb3VudGVyX2RlZmF1bHRfdmFsdWU7XG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICBzaWduYXR1cmUuY291bnRlcl9pbmZvICk7XG4gICAgICAgIF0pXG5cbmxldCBvbmVfb2ZfanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IGJvb2wgYXJyYXkgYXJyYXkgc2l0ZV9zaWcgTmFtZWREZWNscy50ID1cbiAgTmFtZWREZWNscy5vZl9qc29uIChmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiaW50ZXJuYWxfc3RhdGVcIiwgYSk7IChcImxpbmtzXCIsIGIpOyAoXCJjb3VudGVyX2luZm9cIiwgYykgXSAtPlxuICAgICAge1xuICAgICAgICBpbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgTmFtZWREZWNscy5vZl9qc29uXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBgTnVsbCAtPiAoKVxuICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICBhO1xuICAgICAgICBsaW5rcyA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBCb29sIGIgLT4gYlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBsJ1xuICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGI7XG4gICAgICAgIGNvdW50ZXJfaW5mbyA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBgQXNzb2NcbiAgICAgICAgICAgICAgICAgIFsgKFwibWluXCIsIGMxX29wdCk7IChcIm1heFwiLCBjMl9vcHQpOyAoXCJkZWZhdWx0XCIsIGBJbnQgYzMpIF0gLT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2luZm9fbWluID1cbiAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGBJbnQgYyAtPiBjXG4gICAgICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgYzFfb3B0O1xuICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21heCA9XG4gICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgfCBgSW50IGMgLT4gY1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgICAgICAgICAgIGMyX29wdDtcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfZGVmYXVsdF92YWx1ZSA9IGMzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgYztcbiAgICAgIH1cbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG5cbnR5cGUgY291bnRlcl9hZ2VudF9pbmZvID0geyBpZDogaW50OyBhcml0eTogaW50OyBwb3J0czogaW50ICogaW50IH1cblxudHlwZSBzID0ge1xuICBhZ2VudF9zaWdzOiB0IE5hbWVkRGVjbHMudDtcbiAgY291bnRlcl9hZ2VudF9pbmZvOiBjb3VudGVyX2FnZW50X2luZm8gb3B0aW9uO1xufVxuXG5sZXQgc2l6ZSBzaWdzID0gTmFtZWREZWNscy5zaXplIHNpZ3MuYWdlbnRfc2lnc1xubGV0IGdldCBzaWdzIGFnZW50X2lkID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ3MuYWdlbnRfc2lncyBhZ2VudF9pZFxubGV0IGFyaXR5IHNpZ3MgYWdlbnRfaWQgPSBOYW1lZERlY2xzLnNpemUgKGdldCBzaWdzIGFnZW50X2lkKVxuXG5sZXQgbWF4X2FyaXR5IHNpZ3MgPVxuICBOYW1lZERlY2xzLmZvbGQgKGZ1biBfIF8geCBhIC0+IG1heCB4IChOYW1lZERlY2xzLnNpemUgYSkpIDAgc2lncy5hZ2VudF9zaWdzXG5cbmxldCBhZ2VudF9vZl9udW0gaSBzaWdzID0gTmFtZWREZWNscy5lbHRfbmFtZSBzaWdzLmFnZW50X3NpZ3MgaVxuXG5sZXQgbnVtX29mX2FnZW50IG5hbWUgc2lncyA9XG4gIE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwiYWdlbnRcIiBzaWdzLmFnZW50X3NpZ3MgbmFtZVxuXG5sZXQgaWRfb2Zfc2l0ZSAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5KSBzaXRlX25hbWUgc2lncyA9XG4gIGxldCBuID0gbnVtX29mX2FnZW50IGFnZW50X3R5IHNpZ3MgaW5cbiAgbnVtX29mX3NpdGUgfmFnZW50X25hbWUgc2l0ZV9uYW1lIChnZXQgc2lncyBuKVxuXG5sZXQgc2l0ZV9vZl9pZCBhZ2VudF9pZCBzaXRlX2lkIHNpZ3MgPSBzaXRlX29mX251bSBzaXRlX2lkIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IGlkX29mX2ludGVybmFsX3N0YXRlICgoYWdlbnRfbmFtZSwgXykgYXMgYWdlbnRfdHkpIHNpdGVfbmFtZSBzdGF0ZSBzaWdzID1cbiAgbGV0IG4gPSBudW1fb2ZfYWdlbnQgYWdlbnRfdHkgc2lncyBpblxuICBsZXQgc2lnbmF0dXJlID0gZ2V0IHNpZ3MgbiBpblxuICBsZXQgc2l0ZV9pZCA9IG51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHNpdGVfbmFtZSBzaWduYXR1cmUgaW5cbiAgbnVtX29mX2ludGVybmFsX3N0YXRlIHNpdGVfaWQgc3RhdGUgc2lnbmF0dXJlXG5cbmxldCBpbnRlcm5hbF9zdGF0ZV9vZl9pZCBhZ2VudF9pZCBpZF9zaXRlIGlkX3N0YXRlIHNpZ3MgPVxuICBpbnRlcm5hbF9zdGF0ZV9vZl9zaXRlX2lkIGlkX3NpdGUgaWRfc3RhdGUgKGdldCBzaWdzIGFnZW50X2lkKVxuXG5sZXQgaW50ZXJuYWxfc3RhdGVzX251bWJlciBhZ2VudF9pZCBzaXRlX2lkIHNpZ3MgPVxuICB0cnlcbiAgICBsZXQgc2l0ZV9zaWcgPSBOYW1lZERlY2xzLmVsdF92YWwgKGdldCBzaWdzIGFnZW50X2lkKSBzaXRlX2lkIGluXG4gICAgTmFtZWREZWNscy5zaXplIHNpdGVfc2lnLmludGVybmFsX3N0YXRlXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ2VudF9pZCBzaXRlX2lkIHNpZ3MgPVxuICB0cnlcbiAgICBsZXQgc2l0ZV9zaWcgPSBOYW1lZERlY2xzLmVsdF92YWwgKGdldCBzaWdzIGFnZW50X2lkKSBzaXRlX2lkIGluXG4gICAgaWYgTmFtZWREZWNscy5zaXplIHNpdGVfc2lnLmludGVybmFsX3N0YXRlID0gMCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSAwXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJTaWduYXR1cmUuZGVmYXVsdF9udW1fdmFsdWU6IGludmFsaWQgc2l0ZSBpZGVudGlmaWVyXCJcblxubGV0IHJlYyBhbGxvd2VkX2xpbmsgYWcxIHMxIGFnMiBzMiBzaWdzID1cbiAgaWYgYWcxID4gYWcyIHRoZW5cbiAgICBhbGxvd2VkX2xpbmsgYWcyIHMyIGFnMSBzMSBzaWdzXG4gIGVsc2UgKFxuICAgIHRyeVxuICAgICAgbWF0Y2ggKE5hbWVkRGVjbHMuZWx0X3ZhbCAoZ2V0IHNpZ3MgYWcxKSBzMSkubGlua3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSBsIC0+IGwuKGFnMiAtIGFnMSkuKHMyKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZyBcIlNpZ25hdHVyZS5hbGxvd2VkX2xpbms6IGludmFsaWQgc2l0ZSBpZGVudGlmaWVyXCJcbiAgKVxuXG5sZXQgY3JlYXRlIH5jb3VudGVyc19wZXJfYWdlbnQgYWdlbnRfc2lncyA9XG4gIHtcbiAgICBhZ2VudF9zaWdzO1xuICAgIGNvdW50ZXJfYWdlbnRfaW5mbyA9XG4gICAgICAoaWYgY291bnRlcnNfcGVyX2FnZW50ID0gW10gdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgICgqIElmIHRoZXJlIGlzIGEgY291bnRlciBhZ2VudCwgd2UgY2hvb3NlIDAgZm9yIGl0cyBhZ2VudCBpZCBhbmQgMCBhbmQgMSBhcyBpdHMgcG9ydCBpZHMgKilcbiAgICAgICAgIFNvbWUgeyBpZCA9IDA7IGFyaXR5ID0gMjsgcG9ydHMgPSAwLCAxIH0pO1xuICB9XG5cbmxldCBpc19jb3VudGVyX2FnZW50IHNpZ3MgYWdlbnRfaWQgPVxuICBtYXRjaCBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYWdlbnRfaW5mbyAtPiBhZ2VudF9pZCA9IGFnZW50X2luZm8uaWRcblxubGV0IHBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZ2VudF9pZCA9XG4gIG1hdGNoIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGFnZW50X2luZm8gLT5cbiAgICBpZiBhZ2VudF9pZCA9IGFnZW50X2luZm8uaWQgdGhlblxuICAgICAgU29tZSBhZ2VudF9pbmZvLnBvcnRzXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5sZXQgc2l0ZV9pc19jb3VudGVyIHNpZ3MgYWdfdHkgaWQgPVxuICBjb3VudGVyX29mX3NpdGVfaWQgaWQgKGdldCBzaWdzIGFnX3R5KSA8PiBOb25lXG5cbmxldCBnZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgPVxuICBtYXRjaCBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk5vIGNvdW50ZXIgYWdlbnRcIlxuICB8IFNvbWUgY291bnRlcl9hZ2VudF9pbmZvIC0+IGNvdW50ZXJfYWdlbnRfaW5mb1xuXG5sZXQgaW52ZXJ0ZWRfY291bnRlcl9zdWZmaXggOiBzdHJpbmcgPSBcIl9faW52ZXJ0ZWRcIlxuXG5sZXQgaXNfaW52ZXJ0ZWRfY291bnRlciAoY291bnRlcl9uYW1lIDogc3RyaW5nKSA6IGJvb2wgPVxuICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6aW52ZXJ0ZWRfY291bnRlcl9zdWZmaXggY291bnRlcl9uYW1lXG5cbmxldCBwcmludF9hZ2VudCBzaWdzIGYgYWdfdHkgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgQEAgYWdlbnRfb2ZfbnVtIGFnX3R5IHNpZ3NcblxubGV0IHByaW50X3NpdGUgc2lncyBhZ190eSBmIGlkID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIHNpdGVfb2ZfaWQgYWdfdHkgaWQgc2lnc1xuXG5sZXQgcHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlIGYgaWQgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgQEAgaW50ZXJuYWxfc3RhdGVfb2ZfaWQgYWdfdHkgc2l0ZSBpZCBzaWdzXG5cbmxldCBwcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHByaW50X3NpdGUgc2lncyBhZ190eSBmIHNpdGVcbiAgfCBTb21lIGlkIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzeyVzfVwiXG4gICAgICAoc2l0ZV9vZl9pZCBhZ190eSBzaXRlIHNpZ3MpXG4gICAgICAoaW50ZXJuYWxfc3RhdGVfb2ZfaWQgYWdfdHkgc2l0ZSBpZCBzaWdzKVxuXG5sZXQgcHJpbnRfY291bnRlcl9pbmZvIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGMgLT5cbiAgICAobWF0Y2ggYy5jb3VudGVyX2luZm9fbWluLCBjLmNvdW50ZXJfaW5mb19tYXggd2l0aFxuICAgIHwgU29tZSBpLCBTb21lIGogd2hlbiBpID0gYy5jb3VudGVyX2RlZmF1bHRfdmFsdWUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7PSVkLys9JWR9XCIgaSBqXG4gICAgfCBpX29wdCwgal9vcHQgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7LT0lcy89JWQvKz0lc31cIlxuICAgICAgICAobWF0Y2ggaV9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCItb29cIlxuICAgICAgICB8IFNvbWUgaSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVkXCIgaSlcbiAgICAgICAgYy5jb3VudGVyX2RlZmF1bHRfdmFsdWVcbiAgICAgICAgKG1hdGNoIGpfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiLW9vXCJcbiAgICAgICAgfCBTb21lIGkgLT4gRm9ybWF0LnNwcmludGYgXCIlZFwiIGkpKVxuXG5sZXQgcHJpbnRfY291bnRlciBzaWdzIGFnX3R5IGYgaWQgPVxuICBwcmludF9jb3VudGVyX2luZm8gZiAoY291bnRlcl9vZl9zaXRlX2lkIGlkIChnZXQgc2lncyBhZ190eSkpXG5cbmxldCBwcmludF9vbmUgPyhzaWdzIDogcyBvcHRpb24pIChpIDogaW50KSAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpXG4gICAgKHNpZ25hdHVyZSA6IHQpID1cbiAgbGV0IHBwX2ludCBmIHggPVxuICAgIGlmIE5hbWVkRGVjbHMuc2l6ZSB4ID4gMCB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiXG4gICAgICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBfIG5hIGYgKCkgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiBuYSkpXG4gICAgICAgIHhcbiAgaW5cbiAgbGV0IHBwX2xpbmsgPVxuICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBmdW4gXyBfIF8gLT4gKClcbiAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgZnVuIGkgZiAtPiAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBsaW5rcyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWFdXCJcbiAgICAgICAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGFnIC0+XG4gICAgICAgICAgICAgICAgIFBwLmFycmF5IFBwLnNwYWNlIChmdW4gc2kgZiBiIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbnRfc2l0ZSBzaWdzIChpICsgYWcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHNpIChwcmludF9hZ2VudCBzaWdzKSAoaSArIGFnKSkpKVxuICAgICAgICAgICAgbGlua3MpXG4gIGluXG4gIChOYW1lZERlY2xzLnByaW50XG4gICAgIH5zZXA6KGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIsQCxcIilcbiAgICAgKGZ1biBfIG5hbWUgZiBzaXRlX3NpZyAtPlxuICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVhJWElYVwiIG5hbWUgcHBfaW50IHNpdGVfc2lnLmludGVybmFsX3N0YXRlXG4gICAgICAgICAocHBfbGluayBpKSBzaXRlX3NpZy5saW5rcyBwcmludF9jb3VudGVyX2luZm8gc2l0ZV9zaWcuY291bnRlcl9pbmZvKSlcbiAgICBmIHNpZ25hdHVyZVxuXG5sZXQgcHJpbnQgZiBzaWdzID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIGkgbiBmIHNpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJWFnZW50OiAlcyglYSlAXVwiIG4gKHByaW50X29uZSB+c2lncyBpKSBzaSkpXG4gICAgc2lncy5hZ2VudF9zaWdzXG5cbmxldCB0b19qc29uIHNpZ3MgPSBOYW1lZERlY2xzLnRvX2pzb24gb25lX3RvX2pzb24gc2lncy5hZ2VudF9zaWdzXG5cbmxldCBvZl9qc29uIHYgPVxuICBsZXQgYWdlbnRfc2lncyA6ICdhIHNpdGVfc2lnIE5hbWVkRGVjbHMudCBOYW1lZERlY2xzLnQgPVxuICAgIE5hbWVkRGVjbHMub2ZfanNvbiBvbmVfb2ZfanNvbiB2XG4gIGluXG4gIG1hdGNoXG4gICAgTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gXCJfX2NvdW50ZXJfYWdlbnRcIiBhZ2VudF9zaWdzLk5hbWVkRGVjbHMuZmluZGVyXG4gIHdpdGhcbiAgfCBTb21lIGlkIC0+XG4gICAgbGV0IGFnZW50X3NpZ25hdHVyZSA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzIGlkIGluXG4gICAgbGV0IHBvcnRzID1cbiAgICAgICggbnVtX29mX3NpdGUgKFwiYVwiLCBMb2MuZHVtbXkpIGFnZW50X3NpZ25hdHVyZSxcbiAgICAgICAgbnVtX29mX3NpdGUgKFwiYlwiLCBMb2MuZHVtbXkpIGFnZW50X3NpZ25hdHVyZSApXG4gICAgaW5cbiAgICB7IGFnZW50X3NpZ3M7IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNvbWUgeyBpZDsgYXJpdHkgPSAyOyBwb3J0cyB9IH1cbiAgfCBOb25lIC0+IHsgYWdlbnRfc2lnczsgY291bnRlcl9hZ2VudF9pbmZvID0gTm9uZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNjX3NpdGUgPSB7IHNpdGVfbGluazogKGludCAqIGludCkgb3B0aW9uOyBzaXRlX3N0YXRlOiBpbnQgb3B0aW9uIH1cblxudHlwZSBjY19ub2RlID0ge1xuICBub2RlX3R5cGU6IGludDtcbiAgbm9kZV9pZF9pbl93aXRuZXNzOiBpbnQ7XG4gIG5vZGVfc2l0ZXM6IGNjX3NpdGUgYXJyYXk7XG59XG5cbnR5cGUgY29ubmVjdGVkX2NvbXBvbmVudCA9IGNjX25vZGUgYXJyYXlcblxubGV0IHJlYyBhZ2VudHNfYXJlX2NvbXBhdGlibGVzIGEgYiBkb24gPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCAoeCwgeSkgOjogcSAtPlxuICAgIGxldCBvID0gYS4oeCkgaW5cbiAgICBsZXQgcCA9IGIuKHkpIGluXG4gICAgby5ub2RlX3R5cGUgPSBwLm5vZGVfdHlwZVxuICAgICYmXG4gICAgbGV0IGlfb2sgPVxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0MmlcbiAgICAgICAgKGZ1biBfIGIgeCB5IC0+XG4gICAgICAgICAgYlxuICAgICAgICAgICYmXG4gICAgICAgICAgbWF0Y2ggeC5zaXRlX3N0YXRlLCB5LnNpdGVfc3RhdGUgd2l0aFxuICAgICAgICAgIHwgU29tZSBhLCBTb21lIGIgLT4gYSA9IGJcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICAgIHwgKFNvbWUgXyB8IE5vbmUpLCBfIC0+IGZhbHNlKVxuICAgICAgICB0cnVlIG8ubm9kZV9zaXRlcyBwLm5vZGVfc2l0ZXNcbiAgICBpblxuICAgIGlfb2tcbiAgICAmJlxuICAgIChtYXRjaFxuICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAoZnVuIF8gYyB4IHkgLT5cbiAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBjXG4gICAgICAgICAgIHwgU29tZSB0b2RvIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHguc2l0ZV9saW5rLCB5LnNpdGVfbGluayB3aXRoXG4gICAgICAgICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBjXG4gICAgICAgICAgICAgfCBTb21lIChhLCBzKSwgU29tZSAoYiwgcycpIC0+XG4gICAgICAgICAgICAgICBpZiBzIDw+IHMnIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgKCBMaXN0LmZpbmRfYWxsIChmdW4gKGEnLCBiJykgLT4gYSA9IGEnIHx8IGIgPSBiJykgZG9uLFxuICAgICAgICAgICAgICAgICAgICAgTGlzdC5maW5kX2FsbCAoZnVuIChhJywgYicpIC0+IGEgPSBhJyB8fCBiID0gYicpIHRvZG8gKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8sIF8gfCBfLCBfIDo6IF8gOjogXyB8IFsgXyBdLCBbIF8gXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgIHwgWyAoYScsIGInKSBdLCBbXSB8IFtdLCBbIChhJywgYicpIF0gLT5cbiAgICAgICAgICAgICAgICAgICBpZiBhID0gYScgJiYgYiA9IGInIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIGNcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgIHwgW10sIFtdIC0+IFNvbWUgKChhLCBiKSA6OiB0b2RvKVxuICAgICAgICAgICAgICAgKSkpXG4gICAgICAgICAoU29tZSBxKSBvLm5vZGVfc2l0ZXMgcC5ub2RlX3NpdGVzXG4gICAgIHdpdGhcbiAgICB8IFNvbWUgdG9kbycgLT4gYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgKCh4LCB5KSA6OiBkb24pIHRvZG8nXG4gICAgfCBfIC0+IGZhbHNlKVxuXG5sZXQgY2xhc3NpZnlfYnlfdHlwZSBzaWdzIG1peCA9XG4gIGxldCBsZW4gPSBTaWduYXR1cmUuc2l6ZSBzaWdzIGluXG4gIGxldCBvdXQgPSBBcnJheS5tYWtlIGxlbiAoMCwgW10pIGluXG4gIGxldCBjbGFzc2lmeSBpZCBhZyA9XG4gICAgbGV0IG5iLCBhZ3MgPSBvdXQuKGFnLm5vZGVfdHlwZSkgaW5cbiAgICBvdXQuKGFnLm5vZGVfdHlwZSkgPC0gc3VjYyBuYiwgaWQgOjogYWdzXG4gIGluXG4gIGxldCAoKSA9IEFycmF5Lml0ZXJpIGNsYXNzaWZ5IG1peCBpblxuICBvdXRcblxubGV0IGVxdWFsIGNidF9hIGEgY2J0X2IgYiA9XG4gIG1hdGNoIFRvb2xzLmFycmF5X21pbl9lcXVhbF9ub3RfbnVsbCBjYnRfYSBjYnRfYiB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgKFtdLCBhZ3MpIC0+IGFncyA9IFtdXG4gIHwgU29tZSAoaDEgOjogXywgYWdzKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGJvb2wgYWcgLT4gYm9vbCB8fCBhZ2VudHNfYXJlX2NvbXBhdGlibGVzIGEgYiBbXSBbIGgxLCBhZyBdKVxuICAgICAgZmFsc2UgYWdzXG5cbmxldCBoYXNoX3ByaW1lID0gMjlcblxubGV0IGNvYXJzZV9oYXNoIGNidCA9XG4gIEFycmF5LmZvbGRfcmlnaHQgKGZ1biAobCwgXykgYWNjIC0+IGwgKyAoaGFzaF9wcmltZSAqIGFjYykpIGNidCAwXG5cbnR5cGUgdCA9IChpbnQgKiAoaW50ICogaW50IGxpc3QpIGFycmF5ICogY29ubmVjdGVkX2NvbXBvbmVudCkgbGlzdCBNb2RzLkludE1hcC50XG5cbmxldCBlbXB0eSA9IE1vZHMuSW50TWFwLmVtcHR5XG5cbmxldCBpbmNyZW1lbnRfaW5fc25hcHNob3QgfnJhdyBzaWdzIHggcyA9XG4gIGxldCBjYnRfeCA9IGNsYXNzaWZ5X2J5X3R5cGUgc2lncyB4IGluXG4gIGxldCBocyA9IGNvYXJzZV9oYXNoIGNidF94IGluXG4gIGxldCBsID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhzIHMgaW5cbiAgbGV0IHJlYyBhdXhfaW5jcmVtZW50ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFsgMSwgY2J0X3gsIHggXVxuICAgIHwgKChuLCBjYnRfeSwgeSkgYXMgaCkgOjogdCAtPlxuICAgICAgaWYgZXF1YWwgY2J0X3ggeCBjYnRfeSB5IHRoZW5cbiAgICAgICAgKHN1Y2MgbiwgY2J0X3ksIHkpIDo6IHRcbiAgICAgIGVsc2VcbiAgICAgICAgaCA6OiBhdXhfaW5jcmVtZW50IHRcbiAgaW5cbiAgTW9kcy5JbnRNYXAuYWRkIGhzXG4gICAgKGlmIHJhdyB0aGVuXG4gICAgICAgKDEsIGNidF94LCB4KSA6OiBsXG4gICAgIGVsc2VcbiAgICAgICBhdXhfaW5jcmVtZW50IGwpXG4gICAgc1xuXG5sZXQgcmVjIGNvdW50ZXJfdmFsdWUgY2MgKG5pZCwgc2lkKSBjb3VudCA9XG4gIGxldCBhZyA9IGNjLihuaWQpIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGlkIGFjYyBzaSAtPlxuICAgICAgaWYgaWQgPSBzaWQgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzaS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSB4IC0+IGNvdW50ZXJfdmFsdWUgY2MgeCAoYWNjICsgMSlcbiAgICAgICkpXG4gICAgY291bnQgYWcubm9kZV9zaXRlc1xuXG5sZXQgY2NfdG9fdXNlcl9jYyA/KGtlZXBfaW52ZXJ0ZWRfY291bnRlcnMgOiBib29sID0gZmFsc2UpIH5kZWJ1Z19tb2RlIH5yYXcgc2lnc1xuICAgIGNjID1cbiAgbGV0IHIgOiBSZW5hbWluZy50ID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgbGV0IChjY19saXN0X3dpdGhvdXRfY291bnRlcnMsIGluZGV4ZXMsIF8pIDogY2Nfbm9kZSBsaXN0ICogUmVuYW1pbmcudCAqIGludCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIChhY2MsIGluZGV4ZXMsIHBvcykgYWcgLT5cbiAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5ub2RlX3R5cGUgdGhlblxuICAgICAgICAgIGFjYywgaW5kZXhlcywgcG9zXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBpbmRleGVzJyA9XG4gICAgICAgICAgICBpZiBpID0gcG9zIHRoZW5cbiAgICAgICAgICAgICAgaW5kZXhlc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpIHBvcyBpbmRleGVzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJJbmplY3Rpdml0eSBvZiByZW5hbWluZyBpbiBzbmFwc2hvdFwiKSlcbiAgICAgICAgICAgICAgfCBTb21lIHIgLT4gclxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWcgOjogYWNjLCBpbmRleGVzJywgcG9zICsgMVxuICAgICAgICApKVxuICAgICAgKFtdLCByLCAwKSBjY1xuICBpblxuICBsZXQgY2Nfd2l0aG91dF9jb3VudGVycyA6IGNjX25vZGUgYXJyYXkgPVxuICAgIEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGNjX2xpc3Rfd2l0aG91dF9jb3VudGVycylcbiAgaW5cbiAgW3xcbiAgICBBcnJheS5tYXBcbiAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgbGV0IG5vZGVfc2l0ZXNfYWxsIDogVXNlcl9ncmFwaC5jY19zaXRlIGFycmF5ID1cbiAgICAgICAgICBBcnJheS5tYXBpXG4gICAgICAgICAgICAoZnVuIGlkIHNpIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9XG4gICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnLm5vZGVfdHlwZSlcbiAgICAgICAgICAgICAgICAgICAgaWQ7XG4gICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgKGxldCBwb3J0X3N0YXRlcyA9XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIFtdXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWcubm9kZV90eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpLnNpdGVfbGluayB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgIHwgU29tZSAoZG5faWQsIHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZG5faWQnID1cbiAgICAgICAgICAgICAgICAgICAgICAgdHJ5IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluZGV4ZXMgZG5faWRcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBSZW5hbWluZy5VbmRlZmluZWQgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZG5faWRcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGNjLihkbl9pZCkubm9kZV90eXBlXG4gICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguQ291bnRlciAoY291bnRlcl92YWx1ZSBjYyAoZG5faWQsIHMpIDApXG4gICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguTElOS1MgWyAoMCwgZG5faWQnKSwgcyBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGFnLm5vZGVfc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vZGVfc2l0ZXMgOiBVc2VyX2dyYXBoLmNjX3NpdGUgYXJyYXkgPVxuICAgICAgICAgIGlmIGtlZXBfaW52ZXJ0ZWRfY291bnRlcnMgdGhlblxuICAgICAgICAgICAgbm9kZV9zaXRlc19hbGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKiBSZW1vdmUgaW52ZXJ0ZWQgY291bnRlcnMgZnJvbSB1c2VyIHNuYXBzaG90ICopXG4gICAgICAgICAgICBub2RlX3NpdGVzX2FsbCB8PiBBcnJheS50b19saXN0XG4gICAgICAgICAgICB8PiBMaXN0LmZpbHRlciAoZnVuIChzaXRlIDogVXNlcl9ncmFwaC5jY19zaXRlKSA6IGJvb2wgLT5cbiAgICAgICAgICAgICAgICAgICBub3QgKFNpZ25hdHVyZS5pc19pbnZlcnRlZF9jb3VudGVyIHNpdGUuc2l0ZV9uYW1lKSlcbiAgICAgICAgICAgIHw+IEFycmF5Lm9mX2xpc3RcbiAgICAgICAgaW5cblxuICAgICAgICBTb21lXG4gICAgICAgICAge1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5ub2RlX2lkID1cbiAgICAgICAgICAgICAgKGlmIHJhdyB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWUgYWcubm9kZV9pZF9pbl93aXRuZXNzXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIE5vbmUpO1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5ub2RlX3R5cGUgPVxuICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgYWcubm9kZV90eXBlO1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5ub2RlX3NpdGVzO1xuICAgICAgICAgIH0pXG4gICAgICBjY193aXRob3V0X2NvdW50ZXJzO1xuICB8XVxuXG5sZXQgZm9sZCBmIHggcyA9XG4gIE1vZHMuSW50TWFwLmZvbGRcbiAgICAoZnVuIF8gbCBhY2MgLT4gTGlzdC5mb2xkX2xlZnQgKGZ1biBhIChuYiwgXywgY2MpIC0+IGYgYSBuYiBjYykgYWNjIGwpXG4gICAgcyB4XG5cbmxldCBleHBvcnQgfmRlYnVnX21vZGUgfnJhdyBzaWdzIHMgPVxuICBmb2xkIChmdW4gYSB4IHkgLT4gKHgsIGNjX3RvX3VzZXJfY2MgfmRlYnVnX21vZGUgfnJhdyBzaWdzIHkpIDo6IGEpIFtdIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludCAqIGludFxuKCoqIGFnZW50X2lkICogYWdlbnRfdHlwZSAqKVxuXG50eXBlIGFnID0gdFxuXG5sZXQgbWFrZSB+aWQgfnNvcnQgPSBpZCwgc29ydFxuXG5sZXQgcHJpbnQgP3NpZ3MgfndpdGhfaWQgZiAoaSwgdHkpID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXRcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIHR5IChmdW4gZiAtPlxuICAgICAgICBpZiB3aXRoX2lkIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIi8qJWkqL1wiIGkpXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwibiVpXCIgaVxuXG5sZXQgcHJpbnRfc2l0ZSA/c2lncyAoaSwgYWdlbnQpIGYgaWQgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ2VudCBmIGlkXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwibiVpcyVpXCIgaSBpZFxuXG5sZXQgcHJpbnRfaW50ZXJuYWwgP3NpZ3MgKGksIGFnZW50KSBzaXRlIGYgaWQgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ2VudCBzaXRlIGYgKFNvbWUgaWQpXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwibiVpcyVpfiVpXCIgaSBzaXRlIGlkXG5cbmxldCBwcmludF9yYXdfaW50ZXJuYWwgP3NpZ3MgKGksIGFnZW50KSBzaXRlIGYgaWQgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdlbnQgc2l0ZSBmIGlkXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwibiVpcyVpfiVpXCIgaSBzaXRlIGlkXG5cbmxldCByZW5hbWUgfmRlYnVnX21vZGUgaW5qIChuX2lkLCBuX3R5KSA9XG4gIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBuX2lkLCBuX3R5XG5cbmxldCBzb3J0IChfLCB0eSkgPSB0eVxubGV0IGlkIChpZCwgXykgPSBpZFxubGV0IGNvbXBhcmUgKGlkMSwgXykgKGlkMiwgXykgPSBNb2RzLmludF9jb21wYXJlIGlkMSBpZDJcbmxldCBqc29uX2RpY3Rpb25uYXJ5ID0gXCJcXFwiYWdlbnRcXFwiOntcXFwiaWRcXFwiOjAsXFxcInR5cGVcXFwiOjF9XCJcblxubGV0IHdyaXRlX2pzb24gb2IgYSA9XG4gIEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgYVxuXG5sZXQgcmVhZF9qc29uIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9pbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGJcblxubGV0IHRvX2pzb24gKGlkLCB0eSkgPSBgTGlzdCBbIGBJbnQgaWQ7IGBJbnQgdHkgXVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IGlkOyBgSW50IHR5IF0gLT4gaWQsIHR5XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuXG5tb2R1bGUgU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBhZ1xuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBwcmludCA/c2lnczpOb25lIH53aXRoX2lkOnRydWVcbmVuZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBFZGdlID0gc3RydWN0XG4gIHR5cGUgdCA9IEFnZW50LnQgKiBpbnRcbiAgKCoqIGFnZW50ICogc2l0ZSAqKVxuXG4gIGxldCBfY29tcGFyZSAoKG4sIF8pLCBzKSAoKG4nLCBfKSwgcycpID1cbiAgICBsZXQgYyA9IE1vZHMuaW50X2NvbXBhcmUgbiBuJyBpblxuICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICBjXG4gICAgZWxzZVxuICAgICAgTW9kcy5pbnRfY29tcGFyZSBzIHMnXG5cbiAgKCogbGV0IGR1bW15X2xpbmsgPSAoKC0xLC0xKSwtMSkgKilcbmVuZFxuXG4oKiBmdW5jdGlvbnMgdXNpbmcgdGhlIGNhY2hlIGFyZSByZXNwb25zaWJsZSBvZiByZXNldGluZyB0aGUgY2FjaGUgYXQgZXhpdCAqKVxubW9kdWxlIENhY2hlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICB0ZXN0czogaW50IE1vZHMuRHluQXJyYXkudDtcbiAgICBiYWc6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gICAgbXV0YWJsZSBsaW1pdDogaW50O1xuICB9XG5cbiAgbGV0IGludF9sID0gMzEgKCpTeXMuaW50X3NpemUqKVxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIHsgdGVzdHMgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSAwOyBiYWcgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSAwOyBsaW1pdCA9IDAgfVxuXG4gIGxldCBtYXJrIHQgaSA9XG4gICAgbGV0IHggPSBpIC8gaW50X2wgaW5cbiAgICBsZXQgb2xkID0gTW9kcy5EeW5BcnJheS5nZXQgdC50ZXN0cyB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIG9sZCA9IDAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHQuYmFnIHQubGltaXQgeCBpblxuICAgICAgICB0LmxpbWl0IDwtIHN1Y2MgdC5saW1pdFxuICAgICAgKVxuICAgIGluXG4gICAgTW9kcy5EeW5BcnJheS5zZXQgdC50ZXN0cyB4IChvbGQgbG9yICgxIGxzbCAoaSBtb2QgaW50X2wpKSlcblxuICBsZXQgdGVzdCB0IGkgPVxuICAgIE1vZHMuRHluQXJyYXkuZ2V0IHQudGVzdHMgKGkgLyBpbnRfbCkgbGFuZCAoMSBsc2wgKGkgbW9kIGludF9sKSkgPD4gMFxuXG4gIGxldCByZXNldCB0ID1cbiAgICBsZXQgKCkgPVxuICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgKE1vZHMuRHluQXJyYXkuZ2V0IHQuYmFnIGkpIDApXG4gICAgICAgIHQubGltaXRcbiAgICBpblxuICAgIHQubGltaXQgPC0gMFxuXG4gIGxldCBpdGVyaV9yZXNldCBmIHQgPVxuICAgIGxldCAoKSA9XG4gICAgICBUb29scy5pdGVyaVxuICAgICAgICAoZnVuIGsgLT5cbiAgICAgICAgICBsZXQgaSA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuYmFnIGsgaW5cbiAgICAgICAgICBsZXQgdiA9IE1vZHMuRHluQXJyYXkuZ2V0IHQudGVzdHMgaSBpblxuICAgICAgICAgIGlmIHYgPD4gMCB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBpbnRfbCAqIGkgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgICAgICAgICAgKGZ1biBqIC0+IGlmIHYgbGFuZCAoMSBsc2wgaikgPD4gMCB0aGVuIGYgKGFjYyArIGopKVxuICAgICAgICAgICAgICAgIGludF9sXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC50ZXN0cyBpIDBcbiAgICAgICAgICApKVxuICAgICAgICB0LmxpbWl0XG4gICAgaW5cbiAgICB0LmxpbWl0IDwtIDBcbmVuZFxuXG5sZXQgZ2x1ZV9jb25uZWN0ZWRfY29tcG9uZW50IGxpbmtzIGNhY2hlIGNjcyBub2RlMSBub2RlMiA9XG4gIGxldCBjY19pZF9vcCA9IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBub2RlMiBpblxuICBsZXQgcmVjIGV4cGxvcmVfc2l0ZSBpZCBzaXRlIG5leHQgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIG5leHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkuKHByZWQgc2l0ZSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGV4cGxvcmVfc2l0ZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICB8IFNvbWUgKChpZCcsIF8pLCBfKSAtPlxuICAgICAgICBpZiBNb2RzLkR5bkFycmF5LmdldCBjY3MgaWQnID0gY2NfaWRfb3AgfHwgQ2FjaGUudGVzdCBjYWNoZSBpZCcgdGhlblxuICAgICAgICAgIGV4cGxvcmVfc2l0ZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgZXhwbG9yZV9zaXRlIGlkIChwcmVkIHNpdGUpIChpZCcgOjogbmV4dClcbiAgICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IHJlYyBpc19pbl9jYyBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IGlkIDo6IHRvZG9zIC0+XG4gICAgICBpc19pbl9jY1xuICAgICAgICAoZXhwbG9yZV9zaXRlIGlkIChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSkgbmV4dClcbiAgICAgICAgdG9kb3NcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIENhY2hlLml0ZXJpX3Jlc2V0IChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaSBjY19pZF9vcCkgY2FjaGVcbiAgICAgIHwgXyAtPiBpc19pbl9jYyBbXSBuZXh0KVxuICBpblxuICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIG5vZGUxIGluXG4gIGlzX2luX2NjIFtdIFsgbm9kZTEgXVxuXG5sZXQgc2VwYXJhdGVfY29ubmVjdGVkX2NvbXBvbmVudCBsaW5rcyAoY2FjaGUxLCBjYWNoZTIpIGNjcyBub2RlMSBub2RlMiA9XG4gIGxldCBvbGRfY2NfaWQgPSBPcHRpb25fdXRpbC51bnNvbWUgKC0xKSAoTW9kcy5EeW5BcnJheS5nZXQgY2NzIG5vZGUxKSBpblxuICBsZXQgcmVjIGluc3BlY3Rfc2l0ZSBjYWNoZSA/ZHN0X2NhY2hlIGlkIHNpdGUgbmV4dCA9XG4gICAgaWYgc2l0ZSA9IDAgdGhlblxuICAgICAgU29tZSBuZXh0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICB8IFNvbWUgKChpZCcsIF8pLCBfKSAtPlxuICAgICAgICBpZlxuICAgICAgICAgIG1hdGNoIGRzdF9jYWNoZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGRjIC0+IENhY2hlLnRlc3QgZGMgaWQnXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgaWYgQ2FjaGUudGVzdCBjYWNoZSBpZCcgdGhlblxuICAgICAgICAgIGluc3BlY3Rfc2l0ZSBjYWNoZSA/ZHN0X2NhY2hlIGlkIChwcmVkIHNpdGUpIG5leHRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBpZCcgaW5cbiAgICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCAocHJlZCBzaXRlKSAoaWQnIDo6IG5leHQpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCByZWMgbWFya19uZXdfY2Mgb3JpZyBjYWNoZSBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IGlkIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGluc3BlY3Rfc2l0ZSBjYWNoZSBpZCAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpIG5leHRcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgbmV4dCcgLT4gbWFya19uZXdfY2Mgb3JpZyBjYWNoZSBuZXh0JyB0b2RvcylcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQ2FjaGUuaXRlcmlfcmVzZXQgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBpIChTb21lIG9yaWcpKSBjYWNoZVxuICAgICAgICBpblxuICAgICAgICBTb21lIChvbGRfY2NfaWQsIG9yaWcpXG4gICAgICB8IF8gLT4gbWFya19uZXdfY2Mgb3JpZyBjYWNoZSBbXSBuZXh0KVxuICBpblxuICBsZXQgcmVjIGluX3NhbWVfY2Mgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBvdGhlcl9uZXh0IHRoaXNfb3JpZyB0aGlzX2NhY2hlXG4gICAgICB0aGlzX25leHQgPSBmdW5jdGlvblxuICAgIHwgaWQgOjogdG9kb3MgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgaW5zcGVjdF9zaXRlIHRoaXNfY2FjaGUgfmRzdF9jYWNoZTpvdGhlcl9jYWNoZSBpZFxuICAgICAgICAgICAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpXG4gICAgICAgICAgIHRoaXNfbmV4dFxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCB0aGlzX2NhY2hlIGluXG4gICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IG90aGVyX2NhY2hlIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgU29tZSBuZXh0JyAtPlxuICAgICAgICBpbl9zYW1lX2NjIG90aGVyX29yaWcgb3RoZXJfY2FjaGUgb3RoZXJfbmV4dCB0aGlzX29yaWcgdGhpc19jYWNoZSBuZXh0J1xuICAgICAgICAgIHRvZG9zKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCB0aGlzX25leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiBDYWNoZS50ZXN0IHRoaXNfY2FjaGUgb2xkX2NjX2lkIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IHRoaXNfY2FjaGUgaW5cbiAgICAgICAgICBtYXJrX25ld19jYyBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIFtdIG90aGVyX25leHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCBvdGhlcl9jYWNoZSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDYWNoZS5pdGVyaV9yZXNldFxuICAgICAgICAgICAgICAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGkgKFNvbWUgdGhpc19vcmlnKSlcbiAgICAgICAgICAgICAgdGhpc19jYWNoZVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZSAob2xkX2NjX2lkLCB0aGlzX29yaWcpXG4gICAgICAgIClcbiAgICAgIHwgXyAtPlxuICAgICAgICBpbl9zYW1lX2NjIHRoaXNfb3JpZyB0aGlzX2NhY2hlIHRoaXNfbmV4dCBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIFtdXG4gICAgICAgICAgb3RoZXJfbmV4dClcbiAgaW5cbiAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZTEgbm9kZTEgaW5cbiAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZTIgbm9kZTIgaW5cbiAgaW5fc2FtZV9jYyBub2RlMSBjYWNoZTEgWyBub2RlMSBdIG5vZGUyIGNhY2hlMiBbXSBbIG5vZGUyIF1cblxudHlwZSB0YWJsZXMgPSB7XG4gIGNvbm5lY3Q6IEVkZ2UudCBvcHRpb24gYXJyYXkgTW9kcy5EeW5BcnJheS50O1xuICBzdGF0ZTogaW50IG9wdGlvbiBhcnJheSBNb2RzLkR5bkFycmF5LnQ7XG4gIHNvcnQ6IGludCBvcHRpb24gTW9kcy5EeW5BcnJheS50O1xuICBjb25uZWN0ZWRfY29tcG9uZW50OiBpbnQgb3B0aW9uIE1vZHMuRHluQXJyYXkudCBvcHRpb247XG4gIGNhY2hlczogQ2FjaGUudCAqIENhY2hlLnQ7XG59XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSB0YWJsZXM6IHRhYmxlcyBvcHRpb247XG4gIG1pc3NpbmdzOiBNb2RzLkludDJTZXQudDtcbiAgZnJlZV9pZDogaW50ICogaW50IGxpc3Q7XG59XG4oKiogKGFnZW50LHNpdGUgLT4gYmluZGluZ19zdGF0ZTsgbWlzc2luZ3MpO1xuICAgIGFnZW50LHNpdGUgLT4gaW50ZXJuYWxfc3RhdGU7IGFnZW50IC0+IHNvcnQ7IGZyZWVfaWRcbiAgICB0aGUgZnJlZSBzaXRlcyBhcmUgbmVpdGhlciBpbiBtaXNzaW5ncyBub3IgaW4gbGlua2luZ19kZXN0aW5hdGlvbiAqKVxuXG5sZXQgZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICB7XG4gICAgdGFibGVzID1cbiAgICAgIFNvbWVcbiAgICAgICAge1xuICAgICAgICAgIGNvbm5lY3QgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSBbfHxdO1xuICAgICAgICAgIHN0YXRlID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgW3x8XTtcbiAgICAgICAgICBzb3J0ID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgTm9uZTtcbiAgICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50ID1cbiAgICAgICAgICAgIChpZiB3aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWUgKE1vZHMuRHluQXJyYXkubWFrZSAxIE5vbmUpXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTm9uZSk7XG4gICAgICAgICAgY2FjaGVzID0gQ2FjaGUuY3JlYXRlICgpLCBDYWNoZS5jcmVhdGUgKCk7XG4gICAgICAgIH07XG4gICAgbWlzc2luZ3MgPSBNb2RzLkludDJTZXQuZW1wdHk7XG4gICAgZnJlZV9pZCA9IDAsIFtdO1xuICB9XG5cbmxldCBjb3B5IGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAge1xuICAgICAgdGFibGVzID1cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbm5lY3QgPSBNb2RzLkR5bkFycmF5Lm1hcCBBcnJheS5jb3B5IHRhYmxlcy5jb25uZWN0O1xuICAgICAgICAgICAgc3RhdGUgPSBNb2RzLkR5bkFycmF5Lm1hcCBBcnJheS5jb3B5IHRhYmxlcy5zdGF0ZTtcbiAgICAgICAgICAgIHNvcnQgPSBNb2RzLkR5bkFycmF5LmNvcHkgdGFibGVzLnNvcnQ7XG4gICAgICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50ID1cbiAgICAgICAgICAgICAgKG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIGNjcyAtPiBTb21lIChNb2RzLkR5bkFycmF5LmNvcHkgY2NzKSk7XG4gICAgICAgICAgICBjYWNoZXMgPSBDYWNoZS5jcmVhdGUgKCksIENhY2hlLmNyZWF0ZSAoKTtcbiAgICAgICAgICB9O1xuICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICBtaXNzaW5ncyA9IGdyYXBoLm1pc3NpbmdzO1xuICAgIH1cblxudHlwZSBzdGF0cyA9IHsgbmJfYWdlbnRzOiBpbnQgfVxuXG5sZXQgc3RhdHMgZ3JhcGggPVxuICBsZXQgdG9wX2lkLCBmcmVlX2lkcyA9IGdyYXBoLmZyZWVfaWQgaW5cbiAgeyBuYl9hZ2VudHMgPSB0b3BfaWQgLSBMaXN0Lmxlbmd0aCBmcmVlX2lkcyB9XG5cbmxldCBhZGRfYWdlbnQgP2lkIHNpZ3MgdHkgZ3JhcGggPVxuICBsZXQgYXIgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eSBpblxuICBsZXQgYWwgPSBBcnJheS5tYWtlIGFyIE5vbmUgaW5cbiAgbGV0IGFpID0gQXJyYXkubWFrZSBhciBOb25lIGluXG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0IGgsIGZyZWVfaWQgPVxuICAgICAgbWF0Y2ggaWQgd2l0aFxuICAgICAgfCBTb21lIGlkIC0+XG4gICAgICAgICggaWQsXG4gICAgICAgICAgbGV0IG5ld19pZCwgbCA9IGdyYXBoLmZyZWVfaWQgaW5cbiAgICAgICAgICBpZiBpZCA8IG5ld19pZCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIExpc3QucGFydGl0aW9uIChmdW4gaSAtPiBpID0gaWQpIGwgd2l0aFxuICAgICAgICAgICAgfCBbIF8gXSwgdCAtPiBuZXdfaWQsIHRcbiAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgKFwiVHJ5IHRvIGFkZCBhbiBhZ2VudCB3aXRoIGEgdGhlIGZyZWUgaWQgXCJcbiAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBpZCkpKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgKCBzdWNjIGlkLFxuICAgICAgICAgICAgICBUb29scy5yZWN0aSAoZnVuIGFjYyBrIC0+IChrICsgbmV3X2lkKSA6OiBhY2MpIGwgKGlkIC0gbmV3X2lkKSApIClcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggZ3JhcGguZnJlZV9pZCB3aXRoXG4gICAgICAgIHwgbmV3X2lkLCBoIDo6IHQgLT4gaCwgKG5ld19pZCwgdClcbiAgICAgICAgfCBuZXdfaWQsIFtdIC0+IG5ld19pZCwgKHN1Y2MgbmV3X2lkLCBbXSkpXG4gICAgaW5cbiAgICBsZXQgbWlzc2luZ3MnID1cbiAgICAgIFRvb2xzLnJlY3RpIChmdW4gYSBzIC0+IE1vZHMuSW50MlNldC5hZGQgKGgsIHMpIGEpIGdyYXBoLm1pc3NpbmdzIGFyXG4gICAgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuY29ubmVjdCBoIGFsIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnN0YXRlIGggYWkgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc29ydCBoIChTb21lIHR5KSBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjY3MgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGggKFNvbWUgaClcbiAgICBpblxuICAgIGgsIHsgdGFibGVzID0gU29tZSB0YWJsZXM7IG1pc3NpbmdzID0gbWlzc2luZ3MnOyBmcmVlX2lkIH1cblxubGV0IGFkZF9mcmVlIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpIDwtIE5vbmUgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LnJlbW92ZSAoYWcsIHMpIGdyYXBoLm1pc3NpbmdzO1xuICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgfVxuXG5sZXQgYWRkX2ludGVybmFsIGFnIHMgaSBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIDwtIFNvbWUgaSBpblxuICAgIHsgdGFibGVzID0gU29tZSB0YWJsZXM7IG1pc3NpbmdzID0gZ3JhcGgubWlzc2luZ3M7IGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkIH1cblxubGV0IGFkZF9saW5rIChhZywgdHkpIHMgKGFnJywgdHknKSBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID1cbiAgICAgIChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpIDwtIFNvbWUgKChhZycsIHR5JyksIHMnKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZycpLihzJykgPC0gU29tZSAoKGFnLCB0eSksIHMpXG4gICAgaW5cbiAgICBsZXQgb3V0ID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgY2NzIC0+XG4gICAgICAgIGxldCBpID0gT3B0aW9uX3V0aWwudW5zb21lICgtMSkgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZykgaW5cbiAgICAgICAgbGV0IGogPSBPcHRpb25fdXRpbC51bnNvbWUgKC0yKSAoTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnJykgaW5cbiAgICAgICAgaWYgaSA9IGogdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGdsdWVfY29ubmVjdGVkX2NvbXBvbmVudCB0YWJsZXMuY29ubmVjdCAoZnN0IHRhYmxlcy5jYWNoZXMpIGNjcyBhZ1xuICAgICAgICAgICAgICBhZydcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWUgKGosIGkpXG4gICAgICAgIClcbiAgICBpblxuICAgICgge1xuICAgICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgICAgbWlzc2luZ3MgPVxuICAgICAgICAgIE1vZHMuSW50MlNldC5yZW1vdmUgKGFnLCBzKVxuICAgICAgICAgICAgKE1vZHMuSW50MlNldC5yZW1vdmUgKGFnJywgcycpIGdyYXBoLm1pc3NpbmdzKTtcbiAgICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICB9LFxuICAgICAgb3V0IClcblxubGV0IHJlbW92ZV9hZ2VudCBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLmNvbm5lY3QgYWcgW3x8XSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zdGF0ZSBhZyBbfHxdIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnNvcnQgYWcgTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjY3MgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGFnIE5vbmVcbiAgICBpblxuICAgIHtcbiAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgbWlzc2luZ3MgPSBNb2RzLkludDJTZXQuZmlsdGVyIChmdW4gKGFnJywgXykgLT4gYWcgPD4gYWcnKSBncmFwaC5taXNzaW5ncztcbiAgICAgIGZyZWVfaWQgPVxuICAgICAgICAobGV0IG5ld19pZCwgaWRzID0gZ3JhcGguZnJlZV9pZCBpblxuICAgICAgICAgbmV3X2lkLCBhZyA6OiBpZHMpO1xuICAgIH1cblxubGV0IHJlbW92ZV9mcmVlIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IGFzc2VydCAoKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocykgPSBOb25lKSBpblxuICAgIHtcbiAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgbWlzc2luZ3MgPSBNb2RzLkludDJTZXQuYWRkIChhZywgcykgZ3JhcGgubWlzc2luZ3M7XG4gICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICB9XG5cbmxldCBnZXRfaW50ZXJuYWwgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIChtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgd2l0aFxuICAgIHwgU29tZSBpIC0+IGlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChcIlNpdGUgXCIgXiBzdHJpbmdfb2ZfaW50IHMgXiBcIiBvZiBhZ2VudCBcIiBeIHN0cmluZ19vZl9pbnQgYWdcbiAgICAgICBeIFwiIGhhcyBubyBpbnRlcm5hbCBzdGF0ZSBpbiB0aGUgY3VycmVudCBncmFwaC5cIikpXG5cbmxldCBnZXRfc2l0ZXMgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgYXJyID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnIGluXG4gICAgQXJyYXkubGVuZ3RoIGFyclxuXG5sZXQgZ2V0X3NvcnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgd2l0aFxuICAgIHwgU29tZSB0eSAtPiB0eVxuICAgIHwgTm9uZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiQWdlbnQgXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgaGFzIG5vIHR5cGUgaW4gdGhlIGN1cnJlbnQgZ3JhcGguXCIpKVxuXG5sZXQgcmVtb3ZlX2ludGVybmFsIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCBpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIDwtIE5vbmUgaW5cbiAgICAobWF0Y2ggaSB3aXRoXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBpIC0+XG4gICAgICAoIGksXG4gICAgICAgIHtcbiAgICAgICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgICAgICBtaXNzaW5ncyA9IGdyYXBoLm1pc3NpbmdzO1xuICAgICAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgICB9ICkpXG5cbmxldCByZW1vdmVfbGluayBhZyBzIGFnJyBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocykgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZycpLihzJykgPC0gTm9uZSBpblxuICAgIGxldCBvdXQgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MgLT5cbiAgICAgICAgc2VwYXJhdGVfY29ubmVjdGVkX2NvbXBvbmVudCB0YWJsZXMuY29ubmVjdCB0YWJsZXMuY2FjaGVzIGNjcyBhZyBhZydcbiAgICBpblxuICAgICgge1xuICAgICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgICAgbWlzc2luZ3MgPVxuICAgICAgICAgIE1vZHMuSW50MlNldC5hZGQgKGFnLCBzKSAoTW9kcy5JbnQyU2V0LmFkZCAoYWcnLCBzJykgZ3JhcGgubWlzc2luZ3MpO1xuICAgICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgIH0sXG4gICAgICBvdXQgKVxuXG5sZXQgaXNfYWdlbnQgKGFnLCB0eSkgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICAobWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgd2l0aFxuICAgIHwgU29tZSB0eScgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAodHkgPSB0eScpIGluXG4gICAgICB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuXG5sZXQgaXNfYWdlbnRfaWQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBhZyA8PiBOb25lXG5cbmxldCBpc19mcmVlIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgdCA8PiBbfHxdICYmIHQuKHMpID0gTm9uZVxuXG5sZXQgaXNfaW50ZXJuYWwgaSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcgaW5cbiAgICB0IDw+IFt8fF1cbiAgICAmJlxuICAgIChtYXRjaCB0LihzKSB3aXRoXG4gICAgfCBTb21lIGogLT4gaiA9IGlcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG5cbmxldCBsaW5rX2V4aXN0cyBhZyBzIGFnJyBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICB0IDw+IFt8fF1cbiAgICAmJlxuICAgIChtYXRjaCB0LihzKSB3aXRoXG4gICAgfCBTb21lICgoYWcnJywgXyksIHMnJykgLT4gYWcnID0gYWcnJyAmJiBzJyA9IHMnJ1xuICAgIHwgTm9uZSAtPiBmYWxzZSlcblxubGV0IGV4aXN0c19mcmVzaCBhZyBzIHR5IHMnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIGlmIHQgPSBbfHxdIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuKHMpIHdpdGhcbiAgICAgIHwgU29tZSAoKGFnJywgdHknKSwgcycnKSAtPlxuICAgICAgICBpZiB0eScgPSB0eSAmJiBzJyA9IHMnJyB0aGVuXG4gICAgICAgICAgU29tZSBhZydcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgKVxuXG5sZXQgbGlua19kZXN0aW5hdGlvbiBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpXG5cbmxldCBpdGVyX25laWdoYm9ycyBmIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IGFnX3RhYmxlID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICBBcnJheS5pdGVyXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBzIC0+IGYgKGZzdCBzKSlcbiAgICAgIGFnX3RhYmxlXG5cbmxldCBhbGxfYWdlbnRzX3doZXJlIGYgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgb3V0ID0gSW50Q29sbGVjdGlvbi5jcmVhdGUgMCBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkR5bkFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaWQgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgdHkgd2hlbiBmIChpZCwgdHkpIC0+IEludENvbGxlY3Rpb24uYWRkIGlkIG91dFxuICAgICAgICAgIHwgXyAtPiAoKSlcbiAgICAgICAgdGFibGVzLnNvcnRcbiAgICBpblxuICAgIG91dFxuXG5sZXQgaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IGFnIGFnJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIChtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgXCJpbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgd2hpbGUgbm90IHRyYWNraW5nIGNjc1wiKSlcbiAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZyA9IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZycpXG5cbmxldCBnZXRfY29ubmVjdGVkX2NvbXBvbmVudCBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIChtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgXCJnZXRfY29ubmVjdGVkX2NvbXBvbmVudCB3aGlsZSBub3QgdHJhY2tpbmcgY2NzXCIpKVxuICAgIHwgU29tZSBjY3MgLT4gTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnKVxuXG4oKiogVGhlIHNuYXBzaG90IG1hY2hpbmVyeSAqKVxubGV0IG9uZV9jb25uZWN0ZWRfY29tcG9uZW50IChzaWdzIDogU2lnbmF0dXJlLnMpICh0eSA6IGludCkgKG5vZGUgOiBpbnQpXG4gICAgKGdyYXBoIDogdGFibGVzKSA6IFNuYXBzaG90LmNjX25vZGUgYXJyYXkgPVxuICBsZXQgcmVjIGJ1aWxkIChpZCA6IGludClcbiAgICAgIChhY2MgOiAoaW50ICogaW50ICogKEVkZ2UudCBvcHRpb24gKiBpbnQgb3B0aW9uKSBsaXN0KSBsaXN0KVxuICAgICAgKGtub3duIDogaW50IE1vZHMuSW50TWFwLnQpIDogKGludCAqIGludCkgbGlzdCAtPiBTbmFwc2hvdC5jY19ub2RlIGFycmF5ID1cbiAgICBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIFRvb2xzLmFycmF5X3Jldl9tYXBfb2ZfbGlzdFxuICAgICAgICAoZnVuIChub2RlX2lkX2luX3dpdG5lc3MsIG5vZGVfdHlwZSwgc2l0ZXMpIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgU25hcHNob3Qubm9kZV9pZF9pbl93aXRuZXNzO1xuICAgICAgICAgICAgU25hcHNob3Qubm9kZV90eXBlO1xuICAgICAgICAgICAgU25hcHNob3Qubm9kZV9zaXRlcyA9XG4gICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgKGZ1biAobGluaywgc2l0ZV9zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgU25hcHNob3Quc2l0ZV9saW5rID1cbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKChuLCBfKSwgcykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0ICgtMSkgbiBrbm93biwgcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms7XG4gICAgICAgICAgICAgICAgICAgIFNuYXBzaG90LnNpdGVfc3RhdGU7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHNpdGVzO1xuICAgICAgICAgIH0pXG4gICAgICAgIGFjY1xuICAgIHwgKG5vZGUsIHR5KSA6OiB0b2RvcyAtPlxuICAgICAgaWYgQ2FjaGUudGVzdCAoZnN0IGdyYXBoLmNhY2hlcykgbm9kZSB0aGVuXG4gICAgICAgIGJ1aWxkIGlkIGFjYyBrbm93biB0b2Rvc1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IGdyYXBoLnNvcnQgbm9kZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkVkZ2VzLm9uZV9jb25uZWN0ZWRfY29tcG9uZW50XCJcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIChmc3QgZ3JhcGguY2FjaGVzKSBub2RlIGluXG4gICAgICAgICAgbGV0IGtub3duJyA9IE1vZHMuSW50TWFwLmFkZCBub2RlIGlkIGtub3duIGluXG4gICAgICAgICAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkgaW5cbiAgICAgICAgICBsZXQgdG9kb3MnLCBwb3J0cyA9XG4gICAgICAgICAgICBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAoZnVuICh0b2RvcywgYWNjKSBpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpbmsgPSAoTW9kcy5EeW5BcnJheS5nZXQgZ3JhcGguY29ubmVjdCBub2RlKS4oaSkgaW5cbiAgICAgICAgICAgICAgICAoIChtYXRjaCBsaW5rIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0b2Rvc1xuICAgICAgICAgICAgICAgICAgfCBTb21lICgoKG4nLCBfKSBhcyBwKSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgTW9kcy5JbnRNYXAubWVtIG4nIGtub3duJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgdG9kb3NcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHAgOjogdG9kb3MpLFxuICAgICAgICAgICAgICAgICAgKGxpbmssIChNb2RzLkR5bkFycmF5LmdldCBncmFwaC5zdGF0ZSBub2RlKS4oaSkpIDo6IGFjYyApKVxuICAgICAgICAgICAgICAodG9kb3MsIFtdKSBhcml0eVxuICAgICAgICAgIGluXG4gICAgICAgICAgYnVpbGQgKHN1Y2MgaWQpICgobm9kZSwgdHksIHBvcnRzKSA6OiBhY2MpIGtub3duJyB0b2RvcydcbiAgICAgIClcbiAgaW5cbiAgYnVpbGQgMCBbXSBNb2RzLkludE1hcC5lbXB0eSBbIG5vZGUsIHR5IF1cblxubGV0IHNwZWNpZXMgfmRlYnVnX21vZGUgc2lncyByb290IGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IHNwZWNpZSA9XG4gICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCByb290IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgKFwiU29ydCBvZiBub2RlIHVuYXZhaWxhYmxlIFwiIF4gc3RyaW5nX29mX2ludCByb290KSkpXG4gICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgU25hcHNob3QuY2NfdG9fdXNlcl9jYyB+ZGVidWdfbW9kZSB+cmF3OnRydWUgc2lnc1xuICAgICAgICAgIChvbmVfY29ubmVjdGVkX2NvbXBvbmVudCBzaWdzIHR5IHJvb3QgdGFibGVzKVxuICAgIGluXG4gICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgIHNwZWNpZVxuXG5sZXQgcmVjIGF1eF9idWlsZF9zbmFwc2hvdCAocmF3IDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucykgKHRhYmxlcyA6IHRhYmxlcylcbiAgICAoY2NzIDogU25hcHNob3QudCkgKG5vZGUgOiBpbnQpIDogU25hcHNob3QudCA9XG4gIGlmIG5vZGUgPSBNb2RzLkR5bkFycmF5Lmxlbmd0aCB0YWJsZXMuc29ydCB0aGVuIChcbiAgICAoKiBXZSB3ZW50IHRocm91Z2ggYWxsIG5vZGVzLCB3ZSByZXR1cm4gdGhlIGZ1bGwgc25hcHNob3QgKilcbiAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgY2NzXG4gICkgZWxzZSBpZiBDYWNoZS50ZXN0IChmc3QgdGFibGVzLmNhY2hlcykgbm9kZSB0aGVuXG4gICAgKCogQWxyZWFkeSBpbiBjYWNoZSwgd2UgY29udGludWUgdG8gdGhlIG5leHQgbm9kZSAqKVxuICAgIGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXMgY2NzIChzdWNjIG5vZGUpXG4gIGVsc2UgKFxuICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IG5vZGUgd2l0aFxuICAgIHwgTm9uZSAtPiBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzIGNjcyAoc3VjYyBub2RlKVxuICAgIHwgU29tZSAodHkgOiBpbnQpIC0+XG4gICAgICBsZXQgb3V0ID0gb25lX2Nvbm5lY3RlZF9jb21wb25lbnQgc2lncyB0eSBub2RlIHRhYmxlcyBpblxuICAgICAgYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlc1xuICAgICAgICAoU25hcHNob3QuaW5jcmVtZW50X2luX3NuYXBzaG90IH5yYXcgc2lncyBvdXQgY2NzKVxuICAgICAgICAoc3VjYyBub2RlKVxuICApXG5cbmxldCBidWlsZF9zbmFwc2hvdCB+KHJhdyA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpIChncmFwaCA6IHQpIDogU25hcHNob3QudCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPiBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzIFNuYXBzaG90LmVtcHR5IDBcblxubGV0IGJ1aWxkX3VzZXJfc25hcHNob3QgfihkZWJ1Z19tb2RlIDogYm9vbCkgfihyYXcgOiBib29sKSAoc2lncyA6IFNpZ25hdHVyZS5zKVxuICAgIChncmFwaCA6IHQpIDogKGludCAqIFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudCkgbGlzdCA9XG4gIFNuYXBzaG90LmV4cG9ydCB+ZGVidWdfbW9kZSB+cmF3IHNpZ3MgKGJ1aWxkX3NuYXBzaG90IH5yYXcgc2lncyBncmFwaClcblxubGV0IGRlYnVnX3ByaW50IGYgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIk9VVERBVEVEQCBcIlxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IHByaW50X3NpdGVzIGFnID1cbiAgICAgIFBwLmFycmF5IFBwLmNvbW1hIChmdW4gcyBmIGwgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWkldCV0XCIgc1xuICAgICAgICAgICAgKG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgaW50IC0+IGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ+JWlcIiBpbnRcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgaWYgTW9kcy5JbnQyU2V0Lm1lbSAoYWcsIHMpIGdyYXBoLm1pc3NpbmdzIHRoZW5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIj9cIlxuICAgICAgICAgICAgICB8IFNvbWUgKChhZycsIHR5JyksIHMnKSAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItPiVpOiVpLiVpXCIgYWcnIHR5JyBzJykpXG4gICAgaW5cbiAgICBNb2RzLkR5bkFycmF5LnByaW50IFBwLmVtcHR5XG4gICAgICAoZnVuIGFnIGYgYSAtPlxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBhZyB3aXRoXG4gICAgICAgIHwgU29tZSB0eSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWk6JWkoQFslYUBdKUAgXCIgYWcgdHkgKHByaW50X3NpdGVzIGFnKSBhXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGEgPSBbfHxdIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpOk5PVFlQRShAWyVhQF0pQCBcIiBhZyAocHJpbnRfc2l0ZXMgYWcpIGEpXG4gICAgICBmIHRhYmxlcy5jb25uZWN0XG5cbnR5cGUgcGF0aCA9ICgoQWdlbnQudCAqIGludCkgKiAoQWdlbnQudCAqIGludCkpIGxpc3RcbigqKiAoKGFnZW50X2lkLCBhZ2VudF9uYW1lKSxzaXRlX25hbWUpICopXG5cbmxldCByZWMgcHJpbnRfcGF0aCA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBQcC5lbXB0eV9zZXQgZlxuICB8IFsgKChhZywgcyksIChhZycsIHMnKSkgXSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYUAsLSVhLiVhXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnKVxuICAgICAgc1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcnKVxuICAgICAgcydcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWcnXG4gIHwgKChhZywgcyksICgoKHAnLCBfKSBhcyBhZycpLCBzJykpIDo6ICgoKChwJycsIF8pLCBfKSwgXykgOjogXyBhcyBsKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYUAsLSVhLiV0JWFcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICBzXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZycpXG4gICAgICBzJ1xuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIGlmIHAnIDw+IHAnJyB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhIyNcIiAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSkgYWcnKVxuICAgICAgKHByaW50X3BhdGggP3NpZ3MpIGxcblxubGV0IGVtcHR5X3BhdGggPSBbXVxubGV0IHNpbmdsZXRvbl9wYXRoIG4gcyBuJyBzJyA9IFsgKG4sIHMpLCAobicsIHMnKSBdXG5sZXQgcmV2X3BhdGggbCA9IExpc3QucmV2X21hcCAoZnVuICh4LCB5KSAtPiB5LCB4KSBsXG5cbmxldCBpc192YWxpZF9wYXRoIHAgZ3JhcGggPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuICgoKGFnLCBfKSwgcyksICgoYWcnLCBfKSwgcycpKSAtPiBsaW5rX2V4aXN0cyBhZyBzIGFnJyBzJyBncmFwaClcbiAgICBwXG5cbmxldCBicmVhZHRoX2ZpcnN0X3RyYXZlcnNhbCB+bG9vcGluZyA/bWF4X2Rpc3RhbmNlIHN0b3Bfb25fZmluZCBpc19pbnRlcmVzdGluZ1xuICAgIGxpbmtzIGNhY2hlIG91dCB0b2RvcyA9XG4gIGxldCByZWMgbG9va19lYWNoX3NpdGUgKCgoKGlkLCBfKSBhcyBhZyksIHBhdGgpIGFzIHgpIHNpdGVcbiAgICAgICgob3V0LCBuZXh0KSBhcyBhY2MpID1cbiAgICBpZiBzaXRlID0gMCB0aGVuXG4gICAgICBTb21lIChmYWxzZSwgb3V0LCBuZXh0KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKS4ocHJlZCBzaXRlKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9va19lYWNoX3NpdGUgeCAocHJlZCBzaXRlKSBhY2NcbiAgICAgIHwgU29tZSAoKCgoaWQnLCBfKSBhcyBhZycpLCBzaXRlJykgYXMgeSkgLT5cbiAgICAgICAgaWYgYWcnID0gZnN0IGxvb3BpbmcgJiYgc2l0ZScgPD4gc25kIGxvb3BpbmcgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBpZiBDYWNoZS50ZXN0IGNhY2hlIGlkJyB0aGVuXG4gICAgICAgICAgbG9va19lYWNoX3NpdGUgeCAocHJlZCBzaXRlKSBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBpZCcgaW5cbiAgICAgICAgICBsZXQgcGF0aCcgPSAoeSwgKGFnLCBwcmVkIHNpdGUpKSA6OiBwYXRoIGluXG4gICAgICAgICAgbGV0IG5leHQnID0gKGFnJywgcGF0aCcpIDo6IG5leHQgaW5cbiAgICAgICAgICBsZXQgb3V0Jywgc3RvcmUgPVxuICAgICAgICAgICAgbWF0Y2ggaXNfaW50ZXJlc3RpbmcgYWcnIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+ICgoeCwgaWQnKSwgcGF0aCcpIDo6IG91dCwgdHJ1ZVxuICAgICAgICAgICAgfCBOb25lIC0+IG91dCwgZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHN0b3JlICYmIHN0b3Bfb25fZmluZCB0aGVuXG4gICAgICAgICAgICBTb21lICh0cnVlLCBvdXQnLCBuZXh0JylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29rX2VhY2hfc2l0ZSB4IChwcmVkIHNpdGUpIChvdXQnLCBuZXh0JylcbiAgICAgICAgKVxuICAgIClcbiAgaW5cbiAgKCogZGVwdGggPSBudW1iZXIgb2YgZWRnZXMgYmV0d2VlbiByb290IGFuZCBub2RlICopXG4gIGxldCByZWMgYXV4IGRlcHRoIG91dCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8ICgoKGlkLCBfKSwgXykgYXMgeCkgOjogdG9kb3MgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgbG9va19lYWNoX3NpdGUgeCAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpIChvdXQsIG5leHQpXG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgKHN0b3AsIG91dCcsIG5leHQnKSAtPlxuICAgICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgICBvdXQnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhdXggZGVwdGggb3V0JyBuZXh0JyB0b2RvcylcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IFtdIC0+IG91dFxuICAgICAgKCogZW5kIHdoZW4gYWxsIGdyYXBoIHRyYXZlcnNlZCBhbmQgcmV0dXJuIHRoZSBsaXN0IG9mIHBhdGhzICopXG4gICAgICB8IF8gLT5cbiAgICAgICAgKG1hdGNoIG1heF9kaXN0YW5jZSB3aXRoXG4gICAgICAgIHwgU29tZSBkIHdoZW4gZCA8PSBkZXB0aCAtPiBvdXRcbiAgICAgICAgKCogc3RvcCB3aGVuIHRoZSBtYXggZGlzdGFuY2UgaXMgcmVhY2hlZCAqKVxuICAgICAgICB8IFNvbWUgXyAtPiBhdXggKGRlcHRoICsgMSkgb3V0IFtdIG5leHRcbiAgICAgICAgfCBOb25lIC0+IGF1eCBkZXB0aCBvdXQgW10gbmV4dCkpXG4gIGluXG4gIGF1eCAxIG91dCBbXSB0b2Rvc1xuXG4oKiBub2Rlc194OiBhZ2VudF9pZCBsaXN0ID0gKGludCAqIGludCkgbGlzdFxuICAgbm9kZXNfeTogYWRlbnRfaWQgbGlzdCA9IGludCBsaXN0ICopXG5sZXQgYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIGdyYXBoIG5vZGVzX3ggbm9kZXNfeSA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGlmXG4gICAgICBpbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnRcbiAgICAgICAgKGZzdCAoTGlzdC5oZCBub2Rlc194KSlcbiAgICAgICAgKGZzdCAoTGlzdC5oZCBub2Rlc195KSlcbiAgICAgICAgZ3JhcGhcbiAgICB0aGVuIChcbiAgICAgICgqIGxvb2sgZm9yIHRoZSBjbG9zZXN0IG5vZGUgaW4gbm9kZXNfeSAqKVxuICAgICAgbGV0IGlzX2luX25vZGVzX3kgeiA9XG4gICAgICAgIGlmIExpc3QubWVtIHogbm9kZXNfeSB0aGVuXG4gICAgICAgICAgU29tZSAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgaW5cbiAgICAgICgqIGJyZWFkdGggZmlyc3Qgc2VhcmNoIGlzIGNhbGxlZCBvbiBhIGxpc3Qgb2Ygc2l0ZXM7XG4gICAgICAgICBzdGFydCB0aGUgYnJlYWR0aCBmaXJzdCBzZWFyY2ggd2l0aCB0aGUgYm91bmRhcmllcyBvZiBub2Rlc194LFxuICAgICAgICAgdGhhdCBpcyBhbGwgc2l0ZXMgdGhhdCBhcmUgY29ubmVjdGVkIHRvIG90aGVyIG5vZGVzIGluIHhcbiAgICAgICAgIGFuZCB3aXRoIGFsbCBub2RlcyBpbiBub2Rlc194IG1hcmtlZCBhcyBkb25lICopXG4gICAgICBsZXQgcHJlcGFyZSA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgKChpZCwgXykgYXMgYWcpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIChmc3QgdGFibGVzLmNhY2hlcykgaWQgaW5cbiAgICAgICAgICAgIChhZywgW10pIDo6IGFjYylcbiAgICAgICAgICBbXSBub2Rlc194XG4gICAgICBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgYnJlYWR0aF9maXJzdF90cmF2ZXJzYWxcbiAgICAgICAgICB+bG9vcGluZzooKC0xLCAtMSksIC0xKVxuICAgICAgICAgID9tYXhfZGlzdGFuY2UgdHJ1ZSBpc19pbl9ub2Rlc195IHRhYmxlcy5jb25uZWN0IChmc3QgdGFibGVzLmNhY2hlcykgW11cbiAgICAgICAgICBwcmVwYXJlXG4gICAgICB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICAgICAgTm9uZVxuICAgICAgfCBbIChfLCBwKSBdIC0+XG4gICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICAgICAgU29tZSBwXG4gICAgICB8IF8gOjogXyAtPiBmYWlsd2l0aCBcIkVkZ2VzLmFyZV90aGV5X2Nvbm5lY3RlZCBjb21wbGV0ZWx5IGJyb2tlblwiXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGFic3RyYWN0ID0gRXhpc3Rpbmcgb2YgaW50IHwgRnJlc2ggb2YgQWdlbnQudFxudHlwZSAnYSBwb3J0ID0gJ2EgKiBpbnRcbnR5cGUgJ2EgYXJyb3cgPSBUb05vZGUgb2YgJ2EgcG9ydCB8IFRvTm90aGluZyB8IFRvSW50ZXJuYWwgb2YgaW50XG50eXBlICdhIHN0ZXAgPSAnYSBwb3J0ICogJ2EgYXJyb3dcbnR5cGUgJ2EgdCA9ICdhIHN0ZXAgbGlzdFxuXG5sZXQgcHJpbnRfaWQgc2lncyBmID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBpZCAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgaWRcbiAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIhJWEtJWlcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIHR5IGlkXG5cbmxldCBwcmludF9pZF9zaXRlID9zb3VyY2Ugc2lncyBmaW5kX3R5IG4gPVxuICBsZXQgdHkgPVxuICAgIG1hdGNoIG4gd2l0aFxuICAgIHwgRnJlc2ggKF8sIHR5KSAtPiB0eVxuICAgIHwgRXhpc3RpbmcgaWQgLT5cbiAgICAgIChtYXRjaCBzb3VyY2Ugd2l0aFxuICAgICAgfCBTb21lIChGcmVzaCAoaWQnLCB0eSkpIHdoZW4gaWQgPSBpZCcgLT4gdHlcbiAgICAgIHwgTm9uZSB8IFNvbWUgKEZyZXNoIF8gfCBFeGlzdGluZyBfKSAtPiBmaW5kX3R5IGlkKVxuICBpblxuICBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5XG5cbmxldCBwcmludF9pZF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGZpbmRfdHkgbiA9XG4gIFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3NcbiAgICAobWF0Y2ggbiB3aXRoXG4gICAgfCBFeGlzdGluZyBpZCAtPiBmaW5kX3R5IGlkXG4gICAgfCBGcmVzaCAoXywgdHkpIC0+IHR5KVxuXG5sZXQgaWRfdXBfdG9fYWxwaGFfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBpIC0+IGBJbnQgaVxuICB8IEZyZXNoIGYgLT4gQWdlbnQudG9fanNvbiBmXG5cbmxldCBpZF91cF90b19hbHBoYV9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBFeGlzdGluZyBpXG4gIHwgeCAtPiBGcmVzaCAoQWdlbnQub2ZfanNvbiB4KVxuXG5sZXQgcG9ydF90b195b2pzb24gKGEsIHMpID0gYExpc3QgWyBpZF91cF90b19hbHBoYV90b195b2pzb24gYTsgYEludCBzIF1cblxubGV0IHBvcnRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGE7IGBJbnQgcyBdIC0+IGlkX3VwX3RvX2FscGhhX29mX3lvanNvbiBhLCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgbmF2aWdhdGlvbiBwb3J0XCIsIHgpKVxuXG5sZXQgYXJyb3dfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBUb05vZGUgcCAtPiBwb3J0X3RvX3lvanNvbiBwXG4gIHwgVG9Ob3RoaW5nIC0+IGBOdWxsXG4gIHwgVG9JbnRlcm5hbCBpIC0+IGBJbnQgaVxuXG5sZXQgYXJyb3dfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBUb05vdGhpbmdcbiAgfCBgSW50IGkgLT4gVG9JbnRlcm5hbCBpXG4gIHwgeCAtPiBUb05vZGUgKHBvcnRfb2ZfeW9qc29uIHgpXG5cbmxldCBzdGVwX3RvX3lvanNvbiAocCwgYSkgPSBgTGlzdCBbIHBvcnRfdG9feW9qc29uIHA7IGFycm93X3RvX3lvanNvbiBhIF1cblxubGV0IHN0ZXBfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIHA7IGEgXSAtPiBwb3J0X29mX3lvanNvbiBwLCBhcnJvd19vZl95b2pzb24gYVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IG5hdmlnYXRpb24gc3RlcFwiLCB4KSlcblxubGV0IHRvX3lvanNvbiBsID0gYExpc3QgKExpc3QubWFwIHN0ZXBfdG9feW9qc29uIGwpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgc3RlcF9vZl95b2pzb24gbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IG5hdmlnYXRpb25cIiwgeCkpXG5cbmxldCBleHRlbmQgZiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgXyAtPiBmXG4gIHwgRnJlc2ggKGlkLCB0eSkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgaWYgeCA9IGlkIHRoZW5cbiAgICAgICAgdHlcbiAgICAgIGVsc2VcbiAgICAgICAgZiB4XG5cbmxldCByZWMgcHJpbnQgc2lncyBmaW5kX3R5IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgKChzb3VyY2UsIHNpdGUpLCBUb05vdGhpbmcpIDo6IHQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLSVhKCVhWy5dKS0+JWFcIiAocHJpbnRfaWQgc2lncykgc291cmNlXG4gICAgICAocHJpbnRfaWRfc2l0ZSBzaWdzIGZpbmRfdHkgc291cmNlKVxuICAgICAgc2l0ZVxuICAgICAgKHByaW50IHNpZ3MgKGV4dGVuZCBmaW5kX3R5IHNvdXJjZSkpXG4gICAgICB0XG4gIHwgKChzb3VyY2UsIHNpdGUpLCBUb05vZGUgKGlkLCBwb3J0KSkgOjogdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItJWEoJWFbJWEuJWFdKS0+JWFcIiAocHJpbnRfaWQgc2lncykgc291cmNlXG4gICAgICAocHJpbnRfaWRfc2l0ZSBzaWdzIGZpbmRfdHkgc291cmNlKVxuICAgICAgc2l0ZVxuICAgICAgKHByaW50X2lkX3NpdGUgfnNvdXJjZSBzaWdzIGZpbmRfdHkgaWQpXG4gICAgICBwb3J0IChwcmludF9pZCBzaWdzKSBpZFxuICAgICAgKHByaW50IHNpZ3MgKGV4dGVuZCAoZXh0ZW5kIGZpbmRfdHkgaWQpIHNvdXJjZSkpXG4gICAgICB0XG4gIHwgKChzb3VyY2UsIHNpdGUpLCBUb0ludGVybmFsIGkpIDo6IHQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLSVhKCVhKS0+JWFcIiAocHJpbnRfaWQgc2lncykgc291cmNlXG4gICAgICAocHJpbnRfaWRfaW50ZXJuYWxfc3RhdGUgc2lncyBmaW5kX3R5IHNvdXJjZSBzaXRlKVxuICAgICAgKFNvbWUgaSlcbiAgICAgIChwcmludCBzaWdzIChleHRlbmQgZmluZF90eSBzb3VyY2UpKVxuICAgICAgdFxuXG5sZXQgY29tcGF0aWJsZV9mcmVzaF9wb2ludCB+ZGVidWdfbW9kZSBlIChzaWQsIHN0eSkgc3NpdGUgYXJyb3cgPVxuICBtYXRjaCBlLCBhcnJvdyB3aXRoXG4gIHwgXywgVG9Ob2RlIChFeGlzdGluZyBfLCBfKSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICBcIk5hdmlnYXRpb24uY29tcGF0aWJsZV9mcmVzaF9wb2ludCBkb2VzIG5vdCBkZWFsIHdpdGggZXhpc3RpbmcgXFxcbiAgICAgICAgICAgICBhcnJvd1wiKSlcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgeCksIFRvTm90aGluZyAtPlxuICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB4ID0gVG9Ob3RoaW5nIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgU29tZSBpbmpcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCB4KSwgVG9JbnRlcm5hbCBpIC0+XG4gICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHggPSBUb0ludGVybmFsIGkgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBTb21lIGlualxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJykpLFxuICAgICAgVG9Ob2RlIChGcmVzaCAoc2lkJywgc3R5JyksIHNzaXRlJykgKSAtPlxuICAgICgqIGxpbmsgYmV0d2VlbiAyIGFnZW50cyAqKVxuICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB0eScgPSBzdHknICYmIHNpdGUnID0gc3NpdGUnIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCcgaW5qIHRoZW5cbiAgICAgICAgICBTb21lIGlualxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlIGlmIHR5ID0gc3R5JyAmJiBzaXRlID0gc3NpdGUnICYmIHR5JyA9IHN0eSAmJiBzaXRlJyA9IHNzaXRlIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQnIGluaiB0aGVuXG4gICAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQgaW5qIHRoZW5cbiAgICAgICAgICBTb21lIGlualxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoIChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJylcbiAgICAgIHwgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQsIHNpdGUnKSApLFxuICAgICAgVG9Ob2RlIChGcmVzaCAoc2lkJywgc3R5JyksIHNzaXRlJykgKSAtPlxuICAgICgqIHNlbGYtbGluayBpbiBhZ2VudCAqKVxuICAgIGlmXG4gICAgICAoKHNzaXRlID0gc2l0ZSAmJiBzc2l0ZScgPSBzaXRlJykgfHwgKHNzaXRlJyA9IHNpdGUgJiYgc3NpdGUgPSBzaXRlJykpXG4gICAgICAmJiBpZCA9IGlkJyAmJiBzaWQgPSBzaWQnICYmIHR5ID0gc3R5ICYmIHN0eSA9IHN0eSdcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIFNvbWUgaW5qXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIF8sIF8pLCBfKSwgXyAtPiBOb25lXG4gIHwgKChGcmVzaCBfLCBfKSwgKFRvTm90aGluZyB8IFRvSW50ZXJuYWwgXykpLCBUb05vZGUgXyAtPiBOb25lXG5cbmxldCBjb21wYXRpYmxlX3BvaW50IH5kZWJ1Z19tb2RlIGluaiBlIGUnID1cbiAgbWF0Y2ggZSwgZScgd2l0aFxuICB8ICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vdGhpbmcpLCBlIC0+XG4gICAgaWZcbiAgICAgIFJlbmFtaW5nLm1lbSBpZCBpbmpcbiAgICAgICYmIGUgPSAoKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSwgVG9Ob3RoaW5nKVxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb0ludGVybmFsIGkpLCBlIC0+XG4gICAgaWZcbiAgICAgIFJlbmFtaW5nLm1lbSBpZCBpbmpcbiAgICAgICYmIGUgPSAoKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSwgVG9JbnRlcm5hbCBpKVxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpKSwgZSAtPlxuICAgIGlmXG4gICAgICBSZW5hbWluZy5tZW0gaWQgaW5qICYmIFJlbmFtaW5nLm1lbSBpZCcgaW5qXG4gICAgICAmJiAoZVxuICAgICAgICAgID0gKCAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpLFxuICAgICAgICAgICAgICBUb05vZGUgKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQnKSwgc2l0ZScpIClcbiAgICAgICAgIHx8IGVcbiAgICAgICAgICAgID0gKCAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCcpLCBzaXRlJyksXG4gICAgICAgICAgICAgICAgVG9Ob2RlIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSkgKSlcbiAgICB0aGVuXG4gICAgICBTb21lIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpKSxcbiAgICAgICgoRXhpc3Rpbmcgc2lkLCBzc2l0ZSksIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHR5JyksIHNzaXRlJykpIClcbiAgfCAoICgoRnJlc2ggKGlkJywgdHkpLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCwgc2l0ZScpKSxcbiAgICAgICgoRXhpc3Rpbmcgc2lkLCBzc2l0ZSksIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHR5JyksIHNzaXRlJykpIClcbiAgfCAoICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpKSxcbiAgICAgICgoRnJlc2ggKHNpZCcsIHR5JyksIHNzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBzaWQsIHNzaXRlJykpIClcbiAgfCAoICgoRnJlc2ggKGlkJywgdHkpLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCwgc2l0ZScpKSxcbiAgICAgICgoRnJlc2ggKHNpZCcsIHR5JyksIHNzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBzaWQsIHNzaXRlJykpICkgLT5cbiAgICBpZlxuICAgICAgdHknID0gdHlcbiAgICAgICYmIChub3QgKFJlbmFtaW5nLm1lbSBpZCcgaW5qKSlcbiAgICAgICYmICgoc3NpdGUgPSBzaXRlICYmIHNzaXRlJyA9IHNpdGUnKVxuICAgICAgICAgfHwgKGlkID0gaWQnICYmIHNzaXRlID0gc2l0ZScgJiYgc3NpdGUnID0gc2l0ZSkpXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCcgaW5qIHdpdGhcbiAgICAgIHwgU29tZSBpbmonXG4gICAgICAgIHdoZW4gUmVuYW1pbmcubWVtIGlkIGluaicgJiYgc2lkID0gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBpZCAtPlxuICAgICAgICBTb21lIGluaidcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBfLCBfKSwgVG9Ob2RlIChGcmVzaCBfLCBfKSksICgoKEZyZXNoIF8gfCBFeGlzdGluZyBfKSwgXyksIF8pIC0+XG4gICAgTm9uZVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb05vdGhpbmcpLCAoKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSwgeCkgLT5cbiAgICBpZiB0eSA9IHR5JyAmJiBzaXRlID0gc2l0ZScgJiYgeCA9IFRvTm90aGluZyAmJiBub3QgKFJlbmFtaW5nLm1lbSBpZCBpbmopXG4gICAgdGhlblxuICAgICAgUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIGlkJyBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvSW50ZXJuYWwgaSksICgoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpLCB4KSAtPlxuICAgIGlmIHR5ID0gdHknICYmIHNpdGUgPSBzaXRlJyAmJiB4ID0gVG9JbnRlcm5hbCBpICYmIG5vdCAoUmVuYW1pbmcubWVtIGlkIGluailcbiAgICB0aGVuXG4gICAgICBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgaWQnIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSksXG4gICAgICAoKEZyZXNoIChzaWQsIHN0eSksIHNzaXRlKSwgVG9Ob2RlIChGcmVzaCAoc2lkJywgc3R5JyksIHNzaXRlJykpICkgLT5cbiAgICBpZiAobm90IChSZW5hbWluZy5tZW0gaWQgaW5qKSkgJiYgbm90IChSZW5hbWluZy5tZW0gaWQnIGluaikgdGhlblxuICAgICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHR5JyA9IHN0eScgJiYgc2l0ZScgPSBzc2l0ZScgdGhlbiAoXG4gICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQnIGluaicgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGluaicnIC0+IFNvbWUgaW5qJycpXG4gICAgICApIGVsc2UgaWYgdHkgPSBzdHknICYmIHNpdGUgPSBzc2l0ZScgJiYgdHknID0gc3R5ICYmIHNpdGUnID0gc3NpdGUgdGhlbiAoXG4gICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBzaWQnIGluaiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgc2lkIGluaicgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGluaicnIC0+IFNvbWUgaW5qJycpXG4gICAgICApIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEZyZXNoIF8sIF8pLCBfKSwgKChGcmVzaCBfLCBfKSwgXykgLT4gTm9uZVxuICB8ICgoRnJlc2ggXywgXyksIF8pLCAoKEV4aXN0aW5nIF8sIF8pLCBfKSAtPiBOb25lXG5cbmxldCByZWMgYXV4X3N1YiB+ZGVidWdfbW9kZSBpbmogZ29hbCBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCBoIDo6IHQgLT5cbiAgICAobWF0Y2ggY29tcGF0aWJsZV9wb2ludCB+ZGVidWdfbW9kZSBpbmogaCBnb2FsIHdpdGhcbiAgICB8IE5vbmUgLT4gYXV4X3N1YiB+ZGVidWdfbW9kZSBpbmogZ29hbCAoaCA6OiBhY2MpIHRcbiAgICB8IFNvbWUgaW5qJyAtPiBTb21lIChpbmonLCBMaXN0LnJldl9hcHBlbmQgYWNjIHQpKVxuXG5sZXQgcmVjIGlzX3N1Ym5hdmlnYXRpb24gfmRlYnVnX21vZGUgaW5qIG5hdiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU29tZSAoaW5qLCBuYXYpXG4gIHwgaCA6OiB0IC0+XG4gICAgKG1hdGNoIGF1eF9zdWIgfmRlYnVnX21vZGUgaW5qIGggW10gbmF2IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoaW5qJywgbmF2JykgLT4gaXNfc3VibmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpbmonIG5hdicgdClcblxubGV0IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmoyY2MgPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIG4gLT4gaW5qMmNjLCBFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMmNjIG4pXG4gIHwgRnJlc2ggKGlkLCB0eSkgLT5cbiAgICBsZXQgaW1nID0gUmVuYW1pbmcuaW1hZ2UgaW5qMmNjIGluXG4gICAgbGV0IGlkJyA9XG4gICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQgaW1nIHRoZW4gKFxuICAgICAgICBtYXRjaCBNb2RzLkludFNldC5tYXhfZWx0IGltZyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgIHwgU29tZSBpIC0+IHN1Y2MgaVxuICAgICAgKSBlbHNlXG4gICAgICAgIGlkXG4gICAgaW5cbiAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIGlkJyBpbmoyY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgaW5qJyAtPiBpbmonLCBGcmVzaCAoaWQnLCB0eSkpXG5cbmxldCByZWMgcmVuYW1lIH5kZWJ1Z19tb2RlIGluajJjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW5qMmNjLCBbXVxuICB8ICgoeCwgaSksICgoVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBfKSBhcyBhKSkgOjogdCAtPlxuICAgIGxldCBpbmosIHgnID0gcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluajJjYyB4IGluXG4gICAgbGV0IGluaicsIHQnID0gcmVuYW1lIH5kZWJ1Z19tb2RlIGluaiB0IGluXG4gICAgaW5qJywgKCh4JywgaSksIGEpIDo6IHQnXG4gIHwgKCh4LCBpKSwgVG9Ob2RlICh5LCBqKSkgOjogdCAtPlxuICAgIGxldCBpbmosIHgnID0gcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluajJjYyB4IGluXG4gICAgbGV0IGluaicsIHknID0gcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluaiB5IGluXG4gICAgbGV0IGluaicnLCB0JyA9IHJlbmFtZSB+ZGVidWdfbW9kZSBpbmonIHQgaW5cbiAgICBpbmonJywgKCh4JywgaSksIFRvTm9kZSAoeScsIGopKSA6OiB0J1xuXG5sZXQgY2hlY2tfZWRnZSBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb05vdGhpbmcgLT4gRWRnZXMuaXNfZnJlZSBpZCBzaXRlIGdyYXBoXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb0ludGVybmFsIGkgLT4gRWRnZXMuaXNfaW50ZXJuYWwgaSBpZCBzaXRlIGdyYXBoXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgXyksIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob3RoaW5nIC0+IEVkZ2VzLmlzX2ZyZWUgaWQgc2l0ZSBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvSW50ZXJuYWwgaSAtPiBFZGdlcy5pc19pbnRlcm5hbCBpIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIF8pLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuXG4oKmluaiBpcyB0aGUgcGFydGlhbCBpbmplY3Rpb24gYnVpbHQgc28gZmFyOiBpbmo6YWJzLT5jb25jcmV0ZSopXG5sZXQgZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qJyBncmFwaCByb290IHNpdGUgPSBmdW5jdGlvblxuICB8IFRvTm90aGluZyAtPlxuICAgIGlmIEVkZ2VzLmlzX2ZyZWUgcm9vdCBzaXRlIGdyYXBoIHRoZW5cbiAgICAgIFNvbWUgaW5qJ1xuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBUb0ludGVybmFsIGkgLT5cbiAgICBpZiBFZGdlcy5pc19pbnRlcm5hbCBpIHJvb3Qgc2l0ZSBncmFwaCB0aGVuXG4gICAgICBTb21lIGluaidcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIGlmXG4gICAgICBFZGdlcy5saW5rX2V4aXN0cyByb290IHNpdGVcbiAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgaWQnKVxuICAgICAgICBzaXRlJyBncmFwaFxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qJ1xuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpIC0+XG4gICAgKG1hdGNoIEVkZ2VzLmV4aXN0c19mcmVzaCByb290IHNpdGUgdHkgc2l0ZScgZ3JhcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIG5vZGUgLT4gUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBub2RlIGluaicpXG5cbmxldCBpbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoID0gZnVuY3Rpb25cbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBkc3QgLT5cbiAgICBkc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmogZ3JhcGhcbiAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpXG4gICAgICBzaXRlIGRzdFxuICB8IChGcmVzaCAoaWQsIHJ0eSksIHNpdGUpLCBkc3QgLT5cbiAgICAobWF0Y2ggcm9vdCB3aXRoXG4gICAgfCBTb21lIChyb290LCBydHknKSB3aGVuIHJ0eSA9IHJ0eScgLT5cbiAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgcm9vdCBpbmogd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBpbmonIC0+IGRzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaicgZ3JhcGggcm9vdCBzaXRlIGRzdClcbiAgICB8IF8gLT4gTm9uZSlcblxubGV0IGltcGVyYXRpdmVfZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qJyBncmFwaCByb290IHNpdGUgPSBmdW5jdGlvblxuICB8IFRvTm90aGluZyAtPiBFZGdlcy5pc19mcmVlIHJvb3Qgc2l0ZSBncmFwaFxuICB8IFRvSW50ZXJuYWwgaSAtPiBFZGdlcy5pc19pbnRlcm5hbCBpIHJvb3Qgc2l0ZSBncmFwaFxuICB8IFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyByb290IHNpdGVcbiAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGlkJylcbiAgICAgIHNpdGUnIGdyYXBoXG4gIHwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSAtPlxuICAgIChtYXRjaCBFZGdlcy5leGlzdHNfZnJlc2ggcm9vdCBzaXRlIHR5IHNpdGUnIGdyYXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbm9kZSAtPiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCcgbm9kZSBpbmonKVxuXG5sZXQgaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgZHN0IC0+XG4gICAgaW1wZXJhdGl2ZV9kc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmogZ3JhcGhcbiAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpXG4gICAgICBzaXRlIGRzdFxuICB8IChGcmVzaCAoaWQsIHJ0eSksIHNpdGUpLCBkc3QgLT5cbiAgICAobWF0Y2ggcm9vdCB3aXRoXG4gICAgfCBTb21lIChyb290LCBydHknKSB3aGVuIHJ0eSA9IHJ0eScgLT5cbiAgICAgIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHJvb3QgaW5qXG4gICAgICAmJiBpbXBlcmF0aXZlX2RzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaiBncmFwaCByb290IHNpdGUgZHN0XG4gICAgfCBfIC0+IGZhbHNlKVxuXG5sZXQgY29uY3JldGl6ZV9wb3J0IH5kZWJ1Z19tb2RlIGluaiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgaWQsIHNpdGUgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkLCBzaXRlXG4gIHwgRnJlc2ggKGlkLCBfKSwgc2l0ZSAtPiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQsIHNpdGVcblxubGV0IGNvbmNyZXRpemVfYXJyb3cgfmRlYnVnX21vZGUgaW5qID0gZnVuY3Rpb25cbiAgfCAoVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBfKSBhcyB4IC0+IHhcbiAgfCBUb05vZGUgeCAtPiBUb05vZGUgKGNvbmNyZXRpemVfcG9ydCB+ZGVidWdfbW9kZSBpbmogeClcblxubGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgcm9vdCBncmFwaCBuYXYgPVxuICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgbGV0IG91dCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gb3V0ICgocCwgZHN0KSBhcyBzdGVwKSAtPlxuICAgICAgICBtYXRjaCBvdXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgIHwgU29tZSAocm9vdCwgYWNjKSAtPlxuICAgICAgICAgIGlmIGltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggc3RlcCB0aGVuIChcbiAgICAgICAgICAgIGxldCBzdCA9XG4gICAgICAgICAgICAgICggY29uY3JldGl6ZV9wb3J0IH5kZWJ1Z19tb2RlIGluaiBwLFxuICAgICAgICAgICAgICAgIGNvbmNyZXRpemVfYXJyb3cgfmRlYnVnX21vZGUgaW5qIGRzdCApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZSAoTm9uZSwgc3QgOjogYWNjKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIChTb21lIChTb21lIHJvb3QsIFtdKSlcbiAgICAgIG5hdlxuICBpblxuICBPcHRpb25fdXRpbC5tYXAgKGZ1biAoXywgbCkgLT4gTGlzdC5yZXYgbCkgb3V0XG4iLCJ0eXBlIHRyYW5zbGF0ZV9pbnQgPSBCQVNJU19NSU5VU19JTlBVVCBvZiBpbnRcblxudHlwZSBjb252ZXJzaW9uX2luZm8gPSB7XG4gIGZyb21fc2lnX25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgY29udmVydF92YWx1ZTogdHJhbnNsYXRlX2ludDtcbiAgY29udmVydF9kZWx0YTogdHJhbnNsYXRlX2ludDtcbn1cblxudHlwZSBvcmlnaW4gPSBGcm9tX29yaWdpbmFsX2FzdCB8IEZyb21fY2x0ZV9lbGltaW5hdGlvbiBvZiBjb252ZXJzaW9uX2luZm9cblxubGV0IGFwcGx5X2ludCB0IGkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBCQVNJU19NSU5VU19JTlBVVCBkIC0+IGQgLSBpXG5cbmxldCBhcHBseV9vcmlnaW5fdG9fdmFsdWUgdCBpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRnJvbV9vcmlnaW5hbF9hc3QgLT4gaVxuICB8IEZyb21fY2x0ZV9lbGltaW5hdGlvbiBkIC0+IGFwcGx5X2ludCBkLmNvbnZlcnRfdmFsdWUgaVxuXG5sZXQgYXBwbHlfb3JpZ2luX3RvX2RlbHRhIHQgaSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZyb21fb3JpZ2luYWxfYXN0IC0+IGlcbiAgfCBGcm9tX2NsdGVfZWxpbWluYXRpb24gZCAtPiBhcHBseV9pbnQgZC5jb252ZXJ0X2RlbHRhIGlcblxubGV0IHJlb3JkZXJfYm91bmRzIHQgKGksIGopID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQkFTSVNfTUlOVVNfSU5QVVQgXyAtPiBqLCBpXG5cbnR5cGUgY291bnRlcl9zaWcgPSB7XG4gIGNvdW50ZXJfc2lnX25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgY291bnRlcl9zaWdfbWluOiBpbnQgb3B0aW9uIExvYy5hbm5vdGVkIG9wdGlvbjtcbiAgY291bnRlcl9zaWdfbWF4OiBpbnQgb3B0aW9uIExvYy5hbm5vdGVkIG9wdGlvbjtcbiAgY291bnRlcl9zaWdfdmlzaWJsZTogb3JpZ2luO1xuICBjb3VudGVyX3NpZ19kZWZhdWx0OiBpbnQ7XG59XG5cbnR5cGUgdCA9IGNvdW50ZXJfc2lnIG9wdGlvbiBhcnJheSBhcnJheVxuXG5sZXQgcHJpbnRfYm91bmQgd2hlcmUgc2lnbiBmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzICVhXCIgd2hlcmVcbiAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzb29cIiBzaWduXG4gICAgICAgIHwgU29tZSBpIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpKVxuICAgICAgKExvYy52IHgpXG5cbmxldCBwcmludF9sb3dlcl9ib3VuZCA9IHByaW50X2JvdW5kIFwiZnJvbVwiIFwiLVwiXG5sZXQgcHJpbnRfdXBwZXJfYm91bmQgPSBwcmludF9ib3VuZCBcInRvXCIgXCIrXCJcblxubGV0IHByaW50X2dlbiBrIGYgbmFtZSBvcmlnaW5hbF9uYW1lIGNvbnZlcnQgPVxuICBtYXRjaCBjb252ZXJ0IHdpdGhcbiAgfCBCQVNJU19NSU5VU19JTlBVVCBiIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJXMgPSAlaSAtICVzJXMgOyBcIiBrIChMb2MudiBuYW1lKSBiIGtcbiAgICAgIChMb2MudiBvcmlnaW5hbF9uYW1lKVxuXG5sZXQgcHJpbnRfeCA9IHByaW50X2dlbiBcIlwiXG5sZXQgcHJpbnRfZGVsdGEgPSBwcmludF9nZW4gXCJEXCJcblxubGV0IHByaW50X3NpZ192aXNpYmxlIGYgeCA9XG4gIG1hdGNoIHguY291bnRlcl9zaWdfdmlzaWJsZSB3aXRoXG4gIHwgRnJvbV9vcmlnaW5hbF9hc3QgLT4gRm9ybWF0LmZwcmludGYgZiBcIk9SSUdJTkFMXCJcbiAgfCBGcm9tX2NsdGVfZWxpbWluYXRpb24gY29udmVydCAtPlxuICAgIHByaW50X3ggZiB4LmNvdW50ZXJfc2lnX25hbWUgY29udmVydC5mcm9tX3NpZ19uYW1lIGNvbnZlcnQuY29udmVydF92YWx1ZTtcbiAgICBwcmludF9kZWx0YSBmIHguY291bnRlcl9zaWdfbmFtZSBjb252ZXJ0LmZyb21fc2lnX25hbWUgY29udmVydC5jb252ZXJ0X2RlbHRhXG5cbmxldCBwcmludF9jb3VudGVyX3NpZyBmIHQgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgJWEsIGRlZmF1bHQ6ICVpICVhIFwiIHByaW50X2xvd2VyX2JvdW5kIHQuY291bnRlcl9zaWdfbWluXG4gICAgcHJpbnRfdXBwZXJfYm91bmQgdC5jb3VudGVyX3NpZ19tYXggdC5jb3VudGVyX3NpZ19kZWZhdWx0IHByaW50X3NpZ192aXNpYmxlXG4gICAgdFxuXG5sZXQgcHJpbnRfY291bnRlciBjb3VudGVyc19pbmZvIGFnZW50X2lkIHNpdGVfaWQgZiA9XG4gIG1hdGNoIGNvdW50ZXJzX2luZm8uKGFnZW50X2lkKS4oc2l0ZV9pZCkgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGMgLT4gcHJpbnRfY291bnRlcl9zaWcgZiBjXG5cbmxldCBwcmludF9rYXBwYSB+bm9Db3VudGVycyBzaWdzIGYgdCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGFnIGYgaW50ZiAtPlxuICAgICAgICAgaWYgKG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBhZykpIHx8IG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4lJWFnZW50OkAgJWEoQFslYUBdKUBdXCJcbiAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgYWdcbiAgICAgICAgICAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBzIGYgY291bnRlcl9zaWdfb3B0IC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyX3NpZ19vcHQgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgY291bnRlcl9zaWcgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgU2lnbmF0dXJlLnNpdGVfaXNfY291bnRlciBzaWdzIGFnIHMgJiYgbm90IG5vQ291bnRlcnNcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgcHJpbnRfY291bnRlcl9zaWcgY291bnRlcl9zaWcpKVxuICAgICAgICAgICAgIGludGYpKVxuICAgIHRcblxubGV0IGludF9vcHRfYW5ub3RlZF9vcHRfdG9feW9qc29uIH5maWxlbmFtZXMgPVxuICBKc29uVXRpbC5vZl9pbnQgfD4gSnNvblV0aWwub2Zfb3B0aW9uXG4gIHw+IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gIHw+IEpzb25VdGlsLm9mX29wdGlvblxuXG5sZXQgaW50X29wdF9hbm5vdGVkX29wdF9vZl95b2pzb24gfmZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLnRvX2ludCB8PiBKc29uVXRpbC50b19vcHRpb25cbiAgfD4gTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgfD4gSnNvblV0aWwudG9fb3B0aW9uXG5cbmxldCBmcm9tX29yaWdpbmFsX2FzdF95b2pzb25fc3RyID0gXCJmcm9tX29yaWdpbmFsX2FzdFwiXG5sZXQgZnJvbV9jbHRlX2VsaW1pbmF0aW9uX3lvanNvbl9zdHIgPSBcImZyb21fY2x0ZV9lbGltaW5hdGlvblwiXG5cbmxldCB0cmFuc2xhdGVfaW50X3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgQkFTSVNfTUlOVVNfSU5QVVQgaSAtPiBKc29uVXRpbC5vZl9pbnQgaVxuXG5sZXQgdHJhbnNsYXRlX2ludF9vZl95b2pzb24gdHJhbnNsYXRlX2ludF9qc29uID1cbiAgQkFTSVNfTUlOVVNfSU5QVVQgKEpzb25VdGlsLnRvX2ludCB0cmFuc2xhdGVfaW50X2pzb24pXG5cbmxldCBmcm9tX3NpZ19uYW1lX3N0ciA9IFwiZnJvbV9zaWdfbmFtZVwiXG5sZXQgY29udmVydF92YWx1ZV9zdHIgPSBcImNvbnZlcnRfdmFsdWVcIlxubGV0IGNvbnZlcnRfZGVsdGFfc3RyID0gXCJjb252ZXJ0X2RlbHRhXCJcblxubGV0IGNvbnZlcnNpb25faW5mb190b195b2pzb24gfmZpbGVuYW1lcyBjb252ZXJzaW9uX2luZm8gPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGZyb21fc2lnX25hbWVfc3RyLFxuICAgICAgICBMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzIGNvbnZlcnNpb25faW5mby5mcm9tX3NpZ19uYW1lICk7XG4gICAgICBjb252ZXJ0X3ZhbHVlX3N0ciwgdHJhbnNsYXRlX2ludF90b195b2pzb24gY29udmVyc2lvbl9pbmZvLmNvbnZlcnRfdmFsdWU7XG4gICAgICBjb252ZXJ0X2RlbHRhX3N0ciwgdHJhbnNsYXRlX2ludF90b195b2pzb24gY29udmVyc2lvbl9pbmZvLmNvbnZlcnRfZGVsdGE7XG4gICAgXVxuXG5sZXQgY29udmVyc2lvbl9pbmZvX29mX3lvanNvbiB+ZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBmcm9tX3NpZ19uYW1lID1cbiAgICAgICAgIExpc3QuYXNzb2MgZnJvbV9zaWdfbmFtZV9zdHIgbCB8PiBMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgaW5cbiAgICAgICBsZXQgY29udmVydF92YWx1ZSA9XG4gICAgICAgICBMaXN0LmFzc29jIGNvbnZlcnRfdmFsdWVfc3RyIGwgfD4gdHJhbnNsYXRlX2ludF9vZl95b2pzb25cbiAgICAgICBpblxuICAgICAgIGxldCBjb252ZXJ0X2RlbHRhID1cbiAgICAgICAgIExpc3QuYXNzb2MgY29udmVydF9kZWx0YV9zdHIgbCB8PiB0cmFuc2xhdGVfaW50X29mX3lvanNvblxuICAgICAgIGluXG4gICAgICAgeyBmcm9tX3NpZ19uYW1lOyBjb252ZXJ0X3ZhbHVlOyBjb252ZXJ0X2RlbHRhIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJjb252ZXJzaW9uX2luZm9cIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImNvbnZlcnNpb25faW5mb1wiLCB4KSlcblxubGV0IG9yaWdpbl90b195b2pzb24gfmZpbGVuYW1lcyBvcmlnaW4gPVxuICBtYXRjaCBvcmlnaW4gd2l0aFxuICB8IEZyb21fb3JpZ2luYWxfYXN0IC0+IGBBc3NvYyBbIGZyb21fb3JpZ2luYWxfYXN0X3lvanNvbl9zdHIsIGBOdWxsIF1cbiAgfCBGcm9tX2NsdGVfZWxpbWluYXRpb24gY29udmVyc2lvbl9pbmZvIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggZnJvbV9jbHRlX2VsaW1pbmF0aW9uX3lvanNvbl9zdHIsXG4gICAgICAgICAgY29udmVyc2lvbl9pbmZvX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGNvbnZlcnNpb25faW5mbyApO1xuICAgICAgXVxuXG5sZXQgb3JpZ2luX29mX3lvanNvbiB+ZmlsZW5hbWVzIG9yaWdpbl9qc29uID1cbiAgbWF0Y2ggb3JpZ2luX2pzb24gd2l0aFxuICB8IGBBc3NvYyBbIChzLCBgTnVsbCkgXSB3aGVuIHMgPSBmcm9tX29yaWdpbmFsX2FzdF95b2pzb25fc3RyIC0+XG4gICAgRnJvbV9vcmlnaW5hbF9hc3RcbiAgfCBgQXNzb2MgWyAocywgY29udmVyc2lvbl9pbmZvX2pzb24pIF1cbiAgICB3aGVuIHMgPSBmcm9tX2NsdGVfZWxpbWluYXRpb25feW9qc29uX3N0ciAtPlxuICAgIEZyb21fY2x0ZV9lbGltaW5hdGlvblxuICAgICAgKGNvbnZlcnNpb25faW5mb19vZl95b2pzb24gfmZpbGVuYW1lcyBjb252ZXJzaW9uX2luZm9fanNvbilcbiAgfCBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJvcmlnaW5cIiwgb3JpZ2luX2pzb24pKVxuXG5sZXQgY291bnRlcl9zaWdfbmFtZV9zdHIgPSBcImNvdW50ZXJfc2lnX25hbWVcIlxubGV0IGNvdW50ZXJfc2lnX21pbl9zdHIgPSBcImNvdW50ZXJfc2lnX21pblwiXG5sZXQgY291bnRlcl9zaWdfbWF4X3N0ciA9IFwiY291bnRlcl9zaWdfbWF4XCJcbmxldCBjb3VudGVyX3NpZ192aXNpYmxlX3N0ciA9IFwiY291bnRlcl9zaWdfdmlzaWJsZVwiXG5sZXQgY291bnRlcl9zaWdfZGVmYXVsdF9zdHIgPSBcImNvdW50ZXJfc2lnX2RlZmF1bHRcIlxuXG5sZXQgY291bnRlcl9zaWdfb3B0aW9uX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgSnNvblV0aWwub2Zfb3B0aW9uIChmdW4gY291bnRlcl9zaWcgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbXG4gICAgICAgICAgKCBjb3VudGVyX3NpZ19uYW1lX3N0cixcbiAgICAgICAgICAgIExvYy5zdHJpbmdfYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMgY291bnRlcl9zaWcuY291bnRlcl9zaWdfbmFtZSApO1xuICAgICAgICAgICggY291bnRlcl9zaWdfbWluX3N0cixcbiAgICAgICAgICAgIGludF9vcHRfYW5ub3RlZF9vcHRfdG9feW9qc29uIH5maWxlbmFtZXMgY291bnRlcl9zaWcuY291bnRlcl9zaWdfbWluXG4gICAgICAgICAgKTtcbiAgICAgICAgICAoIGNvdW50ZXJfc2lnX21heF9zdHIsXG4gICAgICAgICAgICBpbnRfb3B0X2Fubm90ZWRfb3B0X3RvX3lvanNvbiB+ZmlsZW5hbWVzIGNvdW50ZXJfc2lnLmNvdW50ZXJfc2lnX21heFxuICAgICAgICAgICk7XG4gICAgICAgICAgKCBjb3VudGVyX3NpZ192aXNpYmxlX3N0cixcbiAgICAgICAgICAgIG9yaWdpbl90b195b2pzb24gfmZpbGVuYW1lcyBjb3VudGVyX3NpZy5jb3VudGVyX3NpZ192aXNpYmxlICk7XG4gICAgICAgICAgKCBjb3VudGVyX3NpZ19kZWZhdWx0X3N0cixcbiAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCBjb3VudGVyX3NpZy5jb3VudGVyX3NpZ19kZWZhdWx0ICk7XG4gICAgICAgIF0pXG5cbmxldCBjb3VudGVyX3NpZ19vcHRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBKc29uVXRpbC50b19vcHRpb24gKGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgY291bnRlcl9zaWdfbmFtZSA9XG4gICAgICAgICAgIExpc3QuYXNzb2MgY291bnRlcl9zaWdfbmFtZV9zdHIgbFxuICAgICAgICAgICB8PiBMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX21pbiA9XG4gICAgICAgICAgIExpc3QuYXNzb2MgY291bnRlcl9zaWdfbWluX3N0ciBsXG4gICAgICAgICAgIHw+IGludF9vcHRfYW5ub3RlZF9vcHRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY291bnRlcl9zaWdfbWF4ID1cbiAgICAgICAgICAgTGlzdC5hc3NvYyBjb3VudGVyX3NpZ19tYXhfc3RyIGxcbiAgICAgICAgICAgfD4gaW50X29wdF9hbm5vdGVkX29wdF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBjb3VudGVyX3NpZ192aXNpYmxlID1cbiAgICAgICAgICAgTGlzdC5hc3NvYyBjb3VudGVyX3NpZ192aXNpYmxlX3N0ciBsIHw+IG9yaWdpbl9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBjb3VudGVyX3NpZ19kZWZhdWx0ID1cbiAgICAgICAgICAgTGlzdC5hc3NvYyBjb3VudGVyX3NpZ19kZWZhdWx0X3N0ciBsIHw+IEpzb25VdGlsLnRvX2ludFxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgICAgY291bnRlcl9zaWdfbWluO1xuICAgICAgICAgICBjb3VudGVyX3NpZ19tYXg7XG4gICAgICAgICAgIGNvdW50ZXJfc2lnX3Zpc2libGU7XG4gICAgICAgICAgIGNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBfIC0+XG4gICAgICAgICByYWlzZVxuICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJjb252ZXJzaW9uX2luZm9cIiwgeCkpKVxuICAgIHwgeCAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiY29udmVyc2lvbl9pbmZvXCIsIHgpKSlcblxubGV0IHRvX3lvanNvbiB+ZmlsZW5hbWVzICh0IDogdCkgOiBZb2pzb24uQmFzaWMudCA9XG4gIEpzb25VdGlsLm9mX2FycmF5XG4gICAgKEpzb25VdGlsLm9mX2FycmF5IChjb3VudGVyX3NpZ19vcHRpb25fdG9feW9qc29uIH5maWxlbmFtZXMpKVxuICAgIHRcblxubGV0IG9mX3lvanNvbiB+ZmlsZW5hbWVzIChqc29uIDogWW9qc29uLkJhc2ljLnQpIDogdCA9XG4gIEpzb25VdGlsLnRvX2FycmF5XG4gICAgKEpzb25VdGlsLnRvX2FycmF5IChjb3VudGVyX3NpZ19vcHRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMpKVxuICAgIGpzb25cblxubGV0IHJhaXNlX2Vycm9yID9leGNlcHQgZXhjZXB0JyA9XG4gIG1hdGNoIGV4Y2VwdCB3aXRoXG4gIHwgU29tZSBleGNlcHQgLT4gcmFpc2UgZXhjZXB0XG4gIHwgTm9uZSAtPiByYWlzZSBleGNlcHQnXG5cbmxldCBnZXRfY291bnRlcl9zaWcgP2V4Y2VwdCBzaWdzIGMgYWdlbnRfaWQgc2l0ZV9pZCA9XG4gIG1hdGNoIGMuKGFnZW50X2lkKS4oc2l0ZV9pZCkgd2l0aFxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9lcnJvciA/ZXhjZXB0XG4gICAgICAobGV0IGVycm9yID1cbiAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIlNpdGUgJWEgb2YgYWdlbnQgJWEgaXMgbm90IGFuIGNvdW50ZXJcIlxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ2VudF9pZClcbiAgICAgICAgICAgKHNpdGVfaWQgOiBpbnQpXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgKGFnZW50X2lkIDogaW50KVxuICAgICAgIGluXG4gICAgICAgRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoTG9jLmFubm90X3dpdGhfZHVtbXkgZXJyb3IpKVxuICB8IFNvbWUgY291bnRlcl9zaWcgLT4gY291bnRlcl9zaWdcblxubGV0IGdldF9jb252ZXJzaW9uX2luZm8gP2V4Y2VwdCBjID1cbiAgbWF0Y2ggYy5jb3VudGVyX3NpZ192aXNpYmxlIHdpdGhcbiAgfCBGcm9tX29yaWdpbmFsX2FzdCAtPlxuICAgIHJhaXNlX2Vycm9yID9leGNlcHRcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgIFwiaW50ZXJuYWwgZXJyb3I6IGNvbnZlcnNpb24gYXBwbHlpZWQgdG8gYW4gb3JpZ2luYWwgY291bnRlclwiKSlcbiAgfCBGcm9tX2NsdGVfZWxpbWluYXRpb24gY291bnRlcl9jb252ZXJzaW9uIC0+IGNvdW50ZXJfY29udmVyc2lvblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBpbnRlcm5hbCA9IGludCBvcHRpb25cbnR5cGUgbGluayA9IEZSRUUgfCBWQUwgb2YgaW50XG50eXBlIGFnZW50ID0geyBhX3R5cGU6IGludDsgYV9wb3J0czogbGluayBhcnJheTsgYV9pbnRzOiBpbnRlcm5hbCBhcnJheSB9XG50eXBlIHQgPSBhZ2VudCBsaXN0XG5cbmxldCBjb3B5X2FnZW50IGFnZW50ID1cbiAge1xuICAgIGFfdHlwZSA9IGFnZW50LmFfdHlwZTtcbiAgICBhX3BvcnRzID0gQXJyYXkuY29weSBhZ2VudC5hX3BvcnRzO1xuICAgIGFfaW50cyA9IEFycmF5LmNvcHkgYWdlbnQuYV9pbnRzO1xuICB9XG5cbnR5cGUgaW5jcl90ID0ge1xuICBmYXRoZXI6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gIHJhbms6IChpbnQgKiAoYm9vbCAqIGJvb2wpKSBNb2RzLkR5bkFycmF5LnQ7XG59XG5cbmxldCBjcmVhdGUgbiA9XG4gIHtcbiAgICBmYXRoZXIgPSBNb2RzLkR5bkFycmF5LmluaXQgbiAoZnVuIGkgLT4gaSk7XG4gICAgcmFuayA9IE1vZHMuRHluQXJyYXkubWFrZSBuICgxLCAodHJ1ZSwgZmFsc2UpKTtcbiAgfVxuXG5sZXQgcmVjIGZpbmRfYXV4IGEgaSA9XG4gIGxldCBhaSA9XG4gICAgaWYgTW9kcy5EeW5BcnJheS5sZW5ndGggYSA8PSBpIHRoZW5cbiAgICAgIGlcbiAgICBlbHNlXG4gICAgICBNb2RzLkR5bkFycmF5LmdldCBhIGlcbiAgaW5cbiAgaWYgYWkgPT0gaSB0aGVuXG4gICAgaVxuICBlbHNlIChcbiAgICBsZXQgcm9vdCA9IGZpbmRfYXV4IGEgYWkgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBhIGkgcm9vdCBpblxuICAgIHJvb3RcbiAgKVxuXG5sZXQgZmluZCBoIHggPSBmaW5kX2F1eCBoLmZhdGhlciB4XG5sZXQgY29tYmluZV9yYW5rcyAoaXgsIChieCwgXykpIChpeSwgKGJ5LCBfKSkgPSBpeCArIGl5LCAoYnggJiYgYnksIHRydWUpXG5cbmxldCB1bmlvbiBoIHggeSA9XG4gIGxldCByb290X3ggPSBmaW5kIGggeCBpblxuICBsZXQgcm9vdF95ID0gZmluZCBoIHkgaW5cbiAgaWYgcm9vdF94ID09IHJvb3RfeSB0aGVuXG4gICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHJhbmtfeCA9IE1vZHMuRHluQXJyYXkuZ2V0IGgucmFuayByb290X3ggaW5cbiAgICBsZXQgcmFua195ID0gTW9kcy5EeW5BcnJheS5nZXQgaC5yYW5rIHJvb3RfeSBpblxuICAgIGlmIGZzdCByYW5rX3ggPiBmc3QgcmFua195IHRoZW4gKFxuICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgaC5yYW5rIHJvb3RfeCAoY29tYmluZV9yYW5rcyByYW5rX3ggcmFua195KSBpblxuICAgICAgTW9kcy5EeW5BcnJheS5zZXQgaC5mYXRoZXIgcm9vdF95IHJvb3RfeFxuICAgICkgZWxzZSBpZiBmc3QgcmFua194IDwgZnN0IHJhbmtfeSB0aGVuIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3kgKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeCByb290X3lcbiAgICApIGVsc2UgKFxuICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgaC5yYW5rIHJvb3RfeCAoY29tYmluZV9yYW5rcyByYW5rX3ggcmFua195KSBpblxuICAgICAgTW9kcy5EeW5BcnJheS5zZXQgaC5mYXRoZXIgcm9vdF95IHJvb3RfeFxuICAgIClcbiAgKVxuXG5sZXQgdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCA9XG4gIGxldCB0ID0gY3JlYXRlIDEgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUucG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnLmFfdHlwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIChiZWZvcmUsIGFmdGVyKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBhZy5hX3BvcnRzLihhZnRlcikgaW5cbiAgICAgICAgICAgIGxldCBiID0gYWcuYV9wb3J0cy4oYmVmb3JlKSBpblxuICAgICAgICAgICAgKG1hdGNoIGIgd2l0aFxuICAgICAgICAgICAgfCBGUkVFIC0+ICgpXG4gICAgICAgICAgICB8IFZBTCBsbmtfYiAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgIHwgRlJFRSAtPlxuICAgICAgICAgICAgICAgICgqIGluIHRoaXMgY2FzZSB0aGUgZW5kcG9pbnQgb2YgdGhlIGNoYWluIG9mIGluY3JlbWVudHMgaXMgcmF3OlxuICAgICAgICAgICAgICAgICAgIHRoZSBhZ2VudCBpcyBjcmVhdGVkIHdpdGggYSBjb3VudGVyIHZhbHVlKilcbiAgICAgICAgICAgICAgICBsZXQgcm9vdCA9IGZpbmQgdCBsbmtfYiBpblxuICAgICAgICAgICAgICAgIGxldCBzLCBfID0gTW9kcy5EeW5BcnJheS5nZXQgdC5yYW5rIHJvb3QgaW5cbiAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LnNldCB0LnJhbmsgcm9vdCAocyAtIDEsICh0cnVlLCB0cnVlKSlcbiAgICAgICAgICAgICAgfCBWQUwgbG5rX2EgLT4gdW5pb24gdCBsbmtfYiBsbmtfYSkpKVxuICAgICAgICBtaXhcbiAgaW5cbiAgdFxuXG5sZXQgcHJpbnRfbGluayB+bm9Db3VudGVycyA/bWluX3ZhbHVlIGNvdW50ZXJfYWdlbnRzIGYgPSBmdW5jdGlvblxuICB8IEZSRUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiWy5dXCJcbiAgfCBWQUwgaSAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgcm9vdCA9IGZpbmQgY291bnRlcl9hZ2VudHMgaSBpblxuICAgICAgIGxldCBjb3VudGVyLCAoXywgaXNfY291bnRlcikgPVxuICAgICAgICAgTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcl9hZ2VudHMucmFuayByb290XG4gICAgICAgaW5cbiAgICAgICBpZiBpc19jb3VudGVyICYmIG5vdCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7PSVkfVwiXG4gICAgICAgICAgIChtYXRjaCBtaW5fdmFsdWUgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY291bnRlclxuICAgICAgICAgICB8IFNvbWUgbSAtPiBtICsgY291bnRlcilcbiAgICAgICBlbHNlXG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGlcbiAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIlslaV1cIiBpKVxuXG5sZXQgYXV4X3BwX3NpIHNpZ3MgYSBzIGYgaSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIGEgcyBmIGlcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIGkgd2l0aFxuICAgIHwgU29tZSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaXslaX1cIiBzIGlcbiAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIHMpXG5cbmxldCBwcmludF9pbnRmIH5ub0NvdW50ZXJzIHdpdGhfbGluayA/c2lncyA/Y291bnRlcnNfaW5mbyBjb3VudGVyX2FnZW50cyBhZ190eSBmXG4gICAgKHBvcnRzLCBpbnRzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlbiAoXG4gICAgICBsZXQgbWluX3ZhbHVlID1cbiAgICAgICAgaWYgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBzaWdzLCBjb3VudGVyc19pbmZvIHdpdGhcbiAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgc2lncywgU29tZSBjb3VudGVyc19pbmZvIC0+XG4gICAgICAgICAgICBpZiBTaWduYXR1cmUuc2l0ZV9pc19jb3VudGVyIHNpZ3MgYWdfdHkgaSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnID1cbiAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmdldF9jb3VudGVyX3NpZyBzaWdzIGNvdW50ZXJzX2luZm8gYWdfdHkgaVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyX3NpZy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChTb21lIGksIF8pIC0+IFNvbWUgaVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFcIlxuICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgIChhdXhfcHBfc2kgc2lncyBhZ190eSBpKSBpbnRzLihpKVxuICAgICAgICAgIChpZiB3aXRoX2xpbmsgdGhlblxuICAgICAgICAgICAgIHByaW50X2xpbmsgfm5vQ291bnRlcnMgP21pbl92YWx1ZSBjb3VudGVyX2FnZW50c1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgZnVuIF8gXyAtPlxuICAgICAgICAgICAoKSlcbiAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgIGluXG4gICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICApXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IGF1eF9wcF9hZyBzaWdzIGYgYSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncyBmIGFcbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBhXG5cbmxldCBwcmludF9hZ2VudCB+bm9Db3VudGVycyBjcmVhdGVkIGxpbmsgP3NpZ3MgP2NvdW50ZXJzX2luZm8gY291bnRlcl9hZ2VudHMgZlxuICAgIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSkldFwiIChhdXhfcHBfYWcgc2lncykgYWcuYV90eXBlXG4gICAgKHByaW50X2ludGYgfm5vQ291bnRlcnMgbGluayA/c2lncyA/Y291bnRlcnNfaW5mbyBjb3VudGVyX2FnZW50cyBhZy5hX3R5cGUpXG4gICAgKGFnLmFfcG9ydHMsIGFnLmFfaW50cykgKGZ1biBmIC0+XG4gICAgICBpZiBjcmVhdGVkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiK1wiKVxuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgfmNyZWF0ZWQgfmluaXRpYWxfY29tbWEgP3NpZ3MgP2NvdW50ZXJzX2luZm8gZiBtaXggPVxuICBsZXQgY291bnRlcl9hZ2VudHMgPSB1bmlvbl9maW5kX2NvdW50ZXJzIHNpZ3MgbWl4IGluXG4gIGxldCByZWMgYXV4X3ByaW50IHNvbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgaC5hX3R5cGUgJiYgbm90IG5vQ291bnRlcnNcbiAgICAgIHRoZW5cbiAgICAgICAgYXV4X3ByaW50IHNvbWUgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IGlmIHNvbWUgdGhlbiBQcC5jb21tYSBmIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcHJpbnRfYWdlbnQgfm5vQ291bnRlcnMgY3JlYXRlZCB0cnVlID9zaWdzID9jb3VudGVyc19pbmZvXG4gICAgICAgICAgICBjb3VudGVyX2FnZW50cyBmIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X3ByaW50IHRydWUgdFxuICAgICAgKVxuICBpblxuICBhdXhfcHJpbnQgaW5pdGlhbF9jb21tYSBtaXhcblxubGV0IGFnZW50X3RvX2pzb24gYSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwidHlwZVwiLCBgSW50IGEuYV90eXBlO1xuICAgICAgKCBcInNpdGVzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IEZSRUUgLT4gYE51bGxcbiAgICAgICAgICAgICAgIHwgVkFMIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgIGEuYV9wb3J0cyBbXSkgKTtcbiAgICAgICggXCJpbnRlcm5hbHNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgIGEuYV9pbnRzIFtdKSApO1xuICAgIF1cblxubGV0IGFnZW50X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0KTsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcImludGVybmFsc1wiLCBgTGlzdCBpKSBdXG4gIHwgYEFzc29jIFsgKFwidHlwZVwiLCBgSW50IHQpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInNpdGVzXCIsIGBMaXN0IHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInR5cGVcIiwgYEludCB0KTsgKFwic2l0ZXNcIiwgYExpc3QgcykgXVxuICB8IGBBc3NvYyBbIChcImludGVybmFsc1wiLCBgTGlzdCBpKTsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcInR5cGVcIiwgYEludCB0KSBdXG4gIHwgYEFzc29jIFsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcImludGVybmFsc1wiLCBgTGlzdCBpKTsgKFwidHlwZVwiLCBgSW50IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJzaXRlc1wiLCBgTGlzdCBzKTsgKFwidHlwZVwiLCBgSW50IHQpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSkgXSAtPlxuICAgIHtcbiAgICAgIGFfdHlwZSA9IHQ7XG4gICAgICBhX3BvcnRzID1cbiAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYE51bGwgLT4gRlJFRVxuICAgICAgICAgICAgfCBgSW50IHAgLT4gVkFMIHBcbiAgICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHNpdGUgbGlua1wiLCB4KSkpXG4gICAgICAgICAgcztcbiAgICAgIGFfaW50cyA9XG4gICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBOdWxsIC0+IE5vbmVcbiAgICAgICAgICAgIHwgYEludCBwIC0+IFNvbWUgcFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgaW50ZXJuYWwgc3RhdGVcIiwgeCkpKVxuICAgICAgICAgIGk7XG4gICAgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCByYXdfYWdlbnRcIiwgeCkpXG5cbmxldCB0b19qc29uIG0gPSBgTGlzdCAoTGlzdC5tYXAgYWdlbnRfdG9fanNvbiBtKVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBhZ2VudF9vZl9qc29uIGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcmF3X21peHR1cmVcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBlcnZhc2l2ZXNfYm9vbCA9IGJvb2xcblxudHlwZSAoJ21peCwgJ2lkKSBlID1cbiAgfCBCSU5fQUxHX09QIG9mXG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IFVOX0FMR19PUCBvZiBPcGVyYXRvci51bl9hbGdfb3AgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gIHwgU1RBVEVfQUxHX09QIG9mIE9wZXJhdG9yLnN0YXRlX2FsZ19vcFxuICB8IEFMR19WQVIgb2YgJ2lkXG4gIHwgS0FQUEFfSU5TVEFOQ0Ugb2YgJ21peFxuICB8IFRPS0VOX0lEIG9mICdpZFxuICB8IENPTlNUIG9mIE5ici50XG4gIHwgSUYgb2ZcbiAgICAgICgnbWl4LCAnaWQpIGJvb2wgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gIHwgRElGRl9UT0tFTiBvZiAoKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZCAqICdpZClcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIG9mICgoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkICogJ21peClcblxuYW5kICgnbWl4LCAnaWQpIGJvb2wgPVxuICB8IFRSVUVcbiAgfCBGQUxTRVxuICB8IEJJTl9CT09MX09QIG9mXG4gICAgICBPcGVyYXRvci5iaW5fYm9vbF9vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGJvb2wgTG9jLmFubm90ZWRcbiAgfCBVTl9CT09MX09QIG9mIE9wZXJhdG9yLnVuX2Jvb2xfb3AgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gIHwgQ09NUEFSRV9PUCBvZlxuICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcblxubGV0IHJlYyBlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYjtcbiAgICAgIF1cbiAgfCBVTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLnVuX2FsZ19vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhO1xuICAgICAgXVxuICB8IFNUQVRFX0FMR19PUCBvcCAtPiBPcGVyYXRvci5zdGF0ZV9hbGdfb3BfdG9fanNvbiBvcFxuICB8IEFMR19WQVIgaSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJWQVJcIjsgZl9pZCBpIF1cbiAgfCBLQVBQQV9JTlNUQU5DRSBjYyAtPiBgTGlzdCBbIGBTdHJpbmcgXCJNSVhcIjsgZl9taXggY2MgXVxuICB8IFRPS0VOX0lEIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiVE9LRU5cIjsgZl9pZCBpIF1cbiAgfCBDT05TVCBuIC0+IE5ici50b195b2pzb24gblxuICB8IElGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJJRlwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgY29uZDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgeWVzO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBubztcbiAgICAgIF1cbiAgfCBESUZGX1RPS0VOIChleHByLCB0b2tlbikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElGRl9UT0tFTlwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgZXhwcjtcbiAgICAgICAgZl9pZCB0b2tlbjtcbiAgICAgIF1cbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXh0dXJlKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJESUZGX01JWFRVUkVcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGV4cHI7XG4gICAgICAgIGZfbWl4IG1peHR1cmU7XG4gICAgICBdXG5cbmFuZCBib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IFRSVUUgLT4gYEJvb2wgdHJ1ZVxuICB8IEZBTFNFIC0+IGBCb29sIGZhbHNlXG4gIHwgVU5fQk9PTF9PUCAob3AsIGEpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IudW5fYm9vbF9vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYTtcbiAgICAgIF1cbiAgfCBCSU5fQk9PTF9PUCAob3AsIGEsIGIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBiO1xuICAgICAgXVxuICB8IENPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYjtcbiAgICAgIF1cblxubGV0IHJlYyBlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJRkZfTUlYVFVSRVwiOyBleHByOyBtaXh0dXJlIF0gLT5cbiAgICBESUZGX0tBUFBBX0lOU1RBTkNFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGV4cHIsXG4gICAgICAgIGZfbWl4IG1peHR1cmUgKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJRkZfVE9LRU5cIjsgZXhwcjsgdG9rIF0gLT5cbiAgICBESUZGX1RPS0VOXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGV4cHIsXG4gICAgICAgIGZfaWQgdG9rIClcbiAgfCBgTGlzdCBbIG9wOyBhOyBiIF0gLT5cbiAgICBCSU5fQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLmJpbl9hbGdfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYSxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYlxuICAgICAgKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlZBUlwiOyBpIF0gLT4gQUxHX1ZBUiAoZl9pZCBpKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlRPS0VOXCI7IGkgXSAtPiBUT0tFTl9JRCAoZl9pZCBpKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIk1JWFwiOyBjYyBdIC0+IEtBUFBBX0lOU1RBTkNFIChmX21peCBjYylcbiAgfCBgTGlzdCBbIG9wOyBhIF0gLT5cbiAgICBVTl9BTEdfT1BcbiAgICAgICggT3BlcmF0b3IudW5fYWxnX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGFcbiAgICAgIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJJRlwiOyBjb25kOyB5ZXM7IG5vIF0gLT5cbiAgICBJRlxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgY29uZCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgeWVzLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBub1xuICAgICAgKVxuICB8IHggLT5cbiAgICAodHJ5IFNUQVRFX0FMR19PUCAoT3BlcmF0b3Iuc3RhdGVfYWxnX29wX29mX2pzb24geClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAodHJ5IENPTlNUIChOYnIub2ZfeW9qc29uIHgpXG4gICAgICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBBbGdfZXhwclwiLCB4KSkpKVxuXG5hbmQgYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+XG4gICAgaWYgYiB0aGVuXG4gICAgICBUUlVFXG4gICAgZWxzZVxuICAgICAgRkFMU0VcbiAgfCBgTGlzdCBbIG9wOyBhIF0gLT5cbiAgICBVTl9CT09MX09QXG4gICAgICAoIE9wZXJhdG9yLnVuX2Jvb2xfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGEgKVxuICB8IGBMaXN0IFsgb3A7IGE7IGIgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIEJJTl9CT09MX09QXG4gICAgICAgICAoIE9wZXJhdG9yLmJpbl9ib29sX29wX29mX2pzb24gb3AsXG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICBhLFxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgYiApXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgKHRyeVxuICAgICAgICAgIENPTVBBUkVfT1BcbiAgICAgICAgICAgICggT3BlcmF0b3IuY29tcGFyZV9vcF9vZl9qc29uIG9wLFxuICAgICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgICAgIGIgKVxuICAgICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBib29sIGV4cHJcIiwgeCkpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBib29sX2V4cHJcIiwgeCkpXG5cbmxldCByZWMgcHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIgZiA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgbiAtPiBOYnIucHJpbnQgZiBuXG4gIHwgQUxHX1ZBUiBsYWIgLT4gcHJfdmFyIGYgbGFiXG4gIHwgS0FQUEFfSU5TVEFOQ0UgYXN0IC0+IHByX21peCBmIGFzdFxuICB8IFRPS0VOX0lEIHRrIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgcHJfdG9rIHRrXG4gIHwgU1RBVEVfQUxHX09QIG9wIC0+IE9wZXJhdG9yLnByaW50X3N0YXRlX2FsZ19vcCBmIG9wXG4gIHwgQklOX0FMR19PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIE9wZXJhdG9yLnByaW50X2Jpbl9hbGdfb3BcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGFcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGIgZiBvcFxuICB8IFVOX0FMR19PUCAob3AsIChhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoJWEpXCIgT3BlcmF0b3IucHJpbnRfdW5fYWxnX29wIG9wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhXG4gIHwgSUYgKChjb25kLCBfKSwgKHllcywgXyksIChubywgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhIFs/XSAlYSBbOl0gJWFcIlxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBjb25kXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICB5ZXNcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIG5vXG4gIHwgRElGRl9UT0tFTiAoKGV4cHIsIF8pLCB0b2spIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcImRpZmYoJWEsJWEpXCIgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBleHByIHByX3RvayB0b2tcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFICgoZXhwciwgXyksIG1peHR1cmUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcImRpZmYoJWEsJWEpXCJcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGV4cHIgcHJfbWl4IG1peHR1cmVcblxuYW5kIHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIgZiA9IGZ1bmN0aW9uXG4gIHwgVFJVRSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiW3RydWVdXCJcbiAgfCBGQUxTRSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiW2ZhbHNlXVwiXG4gIHwgVU5fQk9PTF9PUCAob3AsIChhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgKCVhKVwiIE9wZXJhdG9yLnByaW50X3VuX2Jvb2xfb3Agb3BcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYVxuICB8IEJJTl9CT09MX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSAlYSAlYSlcIlxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhIE9wZXJhdG9yLnByaW50X2Jpbl9ib29sX29wIG9wXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGJcbiAgfCBDT01QQVJFX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSAlYSAlYSlcIlxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYSBPcGVyYXRvci5wcmludF9jb21wYXJlX29wIG9wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiXG5cbmxldCBjb25zdCBuID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKENPTlNUIG4pXG5sZXQgaW50IGkgPSBjb25zdCAoTmJyLkkgaSlcbmxldCBmbG9hdCBmID0gY29uc3QgKE5ici5GIGYpXG5sZXQgYWRkIGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLlNVTSwgZTEsIGUyKSlcbmxldCBtaW51cyBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5NSU5VUywgZTEsIGUyKSlcbmxldCBtdWx0IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGUxLCBlMikpXG5sZXQgZGl2IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgZTEsIGUyKSlcbmxldCBwb3cgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuUE9XLCBlMSwgZTIpKVxubGV0IGxvZyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLkxPRywgZTEpKVxuXG5sZXQgbG4gZTEgPVxuICAoKiBKRjogSWYgSSByZW1lbW5iZXIgd2VsbCAqKVxuICBkaXYgKGxvZyBlMSkgKGxvZyAoaW50IDEwKSlcblxubGV0IHNpbiBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLlNJTlVTLCBlMSkpXG5sZXQgY29zIGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuQ09TSU5VUywgZTEpKVxubGV0IHVtaW51cyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLlVNSU5VUywgZTEpKVxubGV0IHNxcnQgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5TUVJULCBlMSkpXG5cbmxldCByZWMgYWRkX2RlcCAoKGluX3QsIGluX2UsIHRva3NfZCwgb3V0KSBhcyB4KSBkID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBhZGRfZGVwIChhZGRfZGVwIHggZCBhKSBkIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfVE9LRU4gKGEsIF8pIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykpLCBfXG4gICgqIHdoZW4gd2UgZGlmZmVyZW50aWF0ZSBhZ2FpbnN0IGEgdmFyaWFibGUsIHRoZSByZXN1bHQgbWF5IGRlcGVuZCBvbiB0aGlzIHZhcmlhYmxlIG9ubHkgaWYgdGhlIHZhcmlhYmxlIG9jY3VycyBpbiB0aGUgZGlmZmVybnRpYXRlZCBleHByZXNzaW9uICopXG4gICAgLT5cbiAgICBhZGRfZGVwIHggZCBhXG4gIHwgQUxHX1ZBUiBqLCBfIC0+XG4gICAgbGV0ICgpID0gb3V0LihqKSA8LSBPcGVyYXRvci5EZXBTZXQuYWRkIGQgb3V0LihqKSBpblxuICAgIHhcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXyB8IENPTlNUIF8pLCBfIC0+IHhcbiAgfCBUT0tFTl9JRCBpLCBfIC0+XG4gICAgbGV0ICgpID0gdG9rc19kLihpKSA8LSBPcGVyYXRvci5EZXBTZXQuYWRkIGQgdG9rc19kLihpKSBpblxuICAgIHhcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBhZGRfZGVwIChhZGRfZGVwIChhZGRfZGVwX2Jvb2wgeCBkIGNvbmQpIGQgeWVzKSBkIG5vXG4gIHwgU1RBVEVfQUxHX09QIG9wLCBfIC0+XG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLkVNQVhfVkFSIHwgT3BlcmF0b3IuVE1BWF9WQVIgLT4geFxuICAgIHwgT3BlcmF0b3IuVElNRV9WQVIgLT4gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIGluX3QsIGluX2UsIHRva3NfZCwgb3V0XG4gICAgfCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgLT5cbiAgICAgIGluX3QsIE9wZXJhdG9yLkRlcFNldC5hZGQgZCBpbl9lLCB0b2tzX2QsIG91dClcblxuYW5kIGFkZF9kZXBfYm9vbCB4IGQgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHhcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBhZGRfZGVwX2Jvb2wgeCBkIGFcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gYWRkX2RlcF9ib29sIChhZGRfZGVwX2Jvb2wgeCBkIGEpIGQgYlxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGFkZF9kZXAgKGFkZF9kZXAgeCBkIGEpIGQgYlxuXG5sZXQgcmVjIGhhc19taXggOlxuICAgIHR5cGUgYS4gP3Zhcl9kZWNsczooJ2IgLT4gKCdjLCAnYikgZSkgLT4gKGEsICdiKSBlIC0+IHBlcnZhc2l2ZXNfYm9vbCA9XG4gZnVuID92YXJfZGVjbHMgLT4gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBoYXNfbWl4ID92YXJfZGVjbHMgYlxuICB8IFVOX0FMR19PUCAoXywgKGEsIF8pKVxuICB8IERJRkZfVE9LRU4gKChhLCBfKSwgXylcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFICgoYSwgXyksIF8pIC0+XG4gICAgKCogd2hlbiB3ZSBkaWZmZXJlbnRpYXRlIGFnYWluc3QgYSB2YXJpYWJsZSwgdGhlIHJlc3VsdCBtYXkgZGVwZW5kIG9uIHRoaXMgdmFyaWFibGUgb25seSBpZiB0aGUgdmFyaWFibGUgb2NjdXJzIGluIHRoZSBkaWZmZXJudGlhdGVkIGV4cHJlc3Npb24gKilcbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYVxuICB8IFNUQVRFX0FMR19PUCBfIHwgQ09OU1QgXyAtPiBmYWxzZVxuICB8IFRPS0VOX0lEIF8gfCBLQVBQQV9JTlNUQU5DRSBfIC0+IHRydWVcbiAgfCBJRiAoKGNvbmQsIF8pLCAoeWVzLCBfKSwgKG5vLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgeWVzIHx8IGhhc19taXggP3Zhcl9kZWNscyBub1xuICAgIHx8IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGNvbmRcbiAgfCBBTEdfVkFSIGkgLT5cbiAgICAobWF0Y2ggdmFyX2RlY2xzIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZiAtPiBoYXNfbWl4ID92YXJfZGVjbHMgKGYgaSkpXG5cbmFuZCBib29sX2hhc19taXggOlxuICAgIHR5cGUgYS4gP3Zhcl9kZWNsczooJ2IgLT4gKCdjLCAnYikgZSkgLT4gKGEsICdiKSBib29sIC0+IHBlcnZhc2l2ZXNfYm9vbCA9XG4gZnVuID92YXJfZGVjbHMgLT4gZnVuY3Rpb25cbiAgfCBUUlVFIHwgRkFMU0UgLT4gZmFsc2VcbiAgfCBDT01QQVJFX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBoYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBoYXNfbWl4ID92YXJfZGVjbHMgYlxuICB8IEJJTl9CT09MX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBib29sX2hhc19taXggP3Zhcl9kZWNscyBhIHx8IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBVTl9CT09MX09QIChfLCAoYSwgXykpIC0+IGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGFcblxubGV0IHJlYyBpc19jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgXywgXyAtPiB0cnVlXG4gIHwgSUYgKGEsIGIsIGMpLCBfIC0+IGJvb2xfaXNfY29uc3RhbnQgYSAmJiBpc19jb25zdGFudCBiICYmIGlzX2NvbnN0YW50IGNcbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBpc19jb25zdGFudCBhICYmIGlzX2NvbnN0YW50IGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pIHwgRElGRl9UT0tFTiAoYSwgXykpLCBfIC0+XG4gICAgaXNfY29uc3RhbnQgYVxuICB8IChBTEdfVkFSIF8gfCBTVEFURV9BTEdfT1AgXyB8IFRPS0VOX0lEIF8gfCBLQVBQQV9JTlNUQU5DRSBfKSwgXyAtPiBmYWxzZVxuXG5hbmQgYm9vbF9pc19jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gdHJ1ZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX2NvbnN0YW50IGEgJiYgaXNfY29uc3RhbnQgYlxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPiBib29sX2lzX2NvbnN0YW50IGEgJiYgYm9vbF9pc19jb25zdGFudCBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYm9vbF9pc19jb25zdGFudCBhXG5cbmxldCByZWMgaXNfdGltZV9ob21vZ2VuZW91cyA9IGZ1bmN0aW9uXG4gIHwgQ09OU1QgXywgXyAtPiB0cnVlXG4gIHwgSUYgKGEsIGIsIGMpLCBfIC0+XG4gICAgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgY1xuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pIHwgRElGRl9UT0tFTiAoYSwgXykpLCBfIC0+XG4gICAgaXNfdGltZV9ob21vZ2VuZW91cyBhXG4gIHwgKCBTVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVJcbiAgICAgICAgfCBPcGVyYXRvci5UTUFYX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSICksXG4gICAgICBfIClcbiAgfCBBTEdfVkFSIF8sIF9cbiAgfCBUT0tFTl9JRCBfLCBfXG4gIHwgS0FQUEFfSU5TVEFOQ0UgXywgXyAtPlxuICAgIHRydWVcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIsIF8gLT4gZmFsc2VcblxuYW5kIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gdHJ1ZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT5cbiAgICBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBhXG5cbmxldCByZWMgYXV4X2V4dHJhY3RfY2MgYWNjID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgYWNjIGEpIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfVE9LRU4gKGEsIF8pIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykpLCBfIC0+XG4gICAgYXV4X2V4dHJhY3RfY2MgYWNjIGFcbiAgfCAoQUxHX1ZBUiBfIHwgQ09OU1QgXyB8IFRPS0VOX0lEIF8gfCBTVEFURV9BTEdfT1AgXyksIF8gLT4gYWNjXG4gIHwgS0FQUEFfSU5TVEFOQ0UgaSwgXyAtPiBpIDo6IGFjY1xuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgXyAtPlxuICAgIGF1eF9leHRyYWN0X2NjIChhdXhfZXh0cmFjdF9jYyAoZXh0cmFjdF9jY19ib29sIGFjYyBjb25kKSB5ZXMpIG5vXG5cbmFuZCBleHRyYWN0X2NjX2Jvb2wgYWNjID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiBhY2NcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gZXh0cmFjdF9jY19ib29sIChleHRyYWN0X2NjX2Jvb2wgYWNjIGEpIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBleHRyYWN0X2NjX2Jvb2wgYWNjIGFcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgYWNjIGEpIGJcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgeCA9IGF1eF9leHRyYWN0X2NjIFtdIHhcbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgeCA9IGV4dHJhY3RfY2NfYm9vbCBbXSB4XG5cbmxldCBzZXR1cF9hbGdfdmFyc19yZXZfZGVwIHRva3MgdmFycyA9XG4gIGxldCBpbl90ID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCBpbl9lID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCB0b2tzX2QgPSBBcnJheS5tYWtlIChOYW1lZERlY2xzLnNpemUgdG9rcykgT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIGxldCBvdXQgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggdmFycykgT3BlcmF0b3IuRGVwU2V0LmVtcHR5IGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgeCAoXywgeSkgLT4gYWRkX2RlcCB4IChPcGVyYXRvci5BTEcgaSkgeSlcbiAgICAoaW5fdCwgaW5fZSwgdG9rc19kLCBvdXQpIHZhcnNcblxubGV0IHJlYyBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgPVxuICBmdW5jdGlvblxuICB8IChCSU5fQUxHX09QIChvcCwgYSwgYiksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgICggcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGEsXG4gICAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYlxuICAgICAgIClcbiAgICAgd2l0aFxuICAgIHwgKENPTlNUIGMxLCBfKSwgKENPTlNUIGMyLCBfKSAtPiBDT05TVCAoTmJyLm9mX2Jpbl9hbGdfb3Agb3AgYzEgYzIpLCBwb3NcbiAgICB8ICggKCggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICB8IERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF9cbiAgICAgICAgICAgfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICAgICBfICkgYXMgYScpLFxuICAgICAgICAoKCAoIEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgIHwgRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgX1xuICAgICAgICAgICB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgICAgIF8gKSBhcyBiJykgKSAtPlxuICAgICAgaWYgYSA9PSBhJyAmJiBiID09IGInIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBCSU5fQUxHX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IChVTl9BTEdfT1AgKG9wLCBhKSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgYywgXyAtPiBDT05TVCAoTmJyLm9mX3VuX2FsZ19vcCBvcCBjKSwgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfIHwgSUYgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIFVOX0FMR19PUCAob3AsIGEnKSwgcG9zKVxuICB8IChESUZGX1RPS0VOIChhLCB0KSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgXywgXyAtPlxuICAgICAgKCogdGhlIGRlcml2YXRpdmUgb2YgYSBjb25zdGFudCBpcyB6ZXJvICopXG4gICAgICBDT05TVCBOYnIuemVybywgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBJRiBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIERJRkZfVE9LRU4gKGEnLCB0KSwgcG9zKVxuICB8IChESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBtKSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICAgd2l0aFxuICAgIHwgQ09OU1QgXywgXyAtPlxuICAgICAgKCogdGhlIGRlcml2YXRpdmUgb2YgYSBjb25zdGFudCBpcyB6ZXJvICopXG4gICAgICBDT05TVCBOYnIuemVybywgcG9zXG4gICAgfCAoICggRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfIHwgSUYgXyApLFxuICAgICAgICBfICkgYXMgYScgLT5cbiAgICAgIGlmIGEgPT0gYScgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEnLCBtKSwgcG9zKVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5FTUFYX1ZBUiwgcG9zIC0+XG4gICAgKCBDT05TVFxuICAgICAgICAobWF0Y2ggbWF4X2V2ZW50cyB3aXRoXG4gICAgICAgIHwgU29tZSBuIC0+IE5ici5JIG5cbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICAgIFwiW0VtYXhdIGNvbnN0YW50IGlzIGV2YWx1YXRlZCB0byBpbmZpbml0eVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTmJyLkYgaW5maW5pdHkpLFxuICAgICAgcG9zIClcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuVE1BWF9WQVIsIHBvcyAtPlxuICAgICggQ09OU1RcbiAgICAgICAgKG1hdGNoIG1heF90aW1lIHdpdGhcbiAgICAgICAgfCBTb21lIHQgLT4gTmJyLkYgdFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICAgICAgICAgICAgXCJbVG1heF0gY29uc3RhbnQgaXMgZXZhbHVhdGVkIHRvIGluZmluaXR5XCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBOYnIuRiBpbmZpbml0eSksXG4gICAgICBwb3MgKVxuICB8ICggU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLlRJTUVfVkFSIHwgT3BlcmF0b3IuRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgKSxcbiAgICAgIF8gKSBhcyB4IC0+XG4gICAgeFxuICB8IChBTEdfVkFSIGksIHBvcykgYXMgeCAtPlxuICAgIGlmIExpc3QubWVtIGkgdXBkYXRlZF92YXJzIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHZhcnMuKGkpIHdpdGhcbiAgICAgIHwgXywgKCgoQ09OU1QgXyB8IEFMR19WQVIgXykgYXMgeSksIF8pIC0+IHksIHBvc1xuICAgICAgfCAoIF8sXG4gICAgICAgICAgKCAoIEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgICB8IFRPS0VOX0lEIF8gfCBJRiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICB4XG4gICAgKVxuICB8ICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfKSwgXykgYXMgeCAtPiB4XG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgfnZhcnMgY29uZFxuICAgICB3aXRoXG4gICAgfCBUUlVFLCBfIC0+XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgeWVzXG4gICAgfCBGQUxTRSwgXyAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIG5vXG4gICAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBjb25kJyAtPlxuICAgICAgKCBJRlxuICAgICAgICAgICggY29uZCcsXG4gICAgICAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgICAgICAgfnZhcnMgeWVzLFxuICAgICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgIH52YXJzIG5vICksXG4gICAgICAgIHBvcyApKVxuXG5hbmQgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgPVxuICBmdW5jdGlvblxuICB8ICgoVFJVRSB8IEZBTFNFKSwgXykgYXMgeCAtPiB4XG4gIHwgVU5fQk9PTF9PUCAob3AsIGEpLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgIH52YXJzIGEsXG4gICAgICAgICBvcCApXG4gICAgIHdpdGhcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuTk9UIC0+IEZBTFNFLCBwb3NcbiAgICB8IChGQUxTRSwgXyksIE9wZXJhdG9yLk5PVCAtPiBUUlVFLCBwb3NcbiAgICB8ICgoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBhJyksIF8gLT5cbiAgICAgIFVOX0JPT0xfT1AgKG9wLCBhJyksIHBvcylcbiAgfCBCSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgIH52YXJzIGEsXG4gICAgICAgICBvcCApXG4gICAgIHdpdGhcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuT1IgLT4gVFJVRSwgcG9zXG4gICAgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5BTkQgLT4gRkFMU0UsIHBvc1xuICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5BTkQgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5PUiAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnNcbiAgICAgICAgYlxuICAgIHwgKCgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGEnKSwgXyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgfnZhcnMgYixcbiAgICAgICAgICAgb3AgKVxuICAgICAgIHdpdGhcbiAgICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5PUiAtPiBUUlVFLCBwb3NcbiAgICAgIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuQU5EIC0+IEZBTFNFLCBwb3NcbiAgICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5BTkQgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5PUiAtPiBhJ1xuICAgICAgfCAoKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgYicpLCBfIC0+XG4gICAgICAgIEJJTl9CT09MX09QIChvcCwgYScsIGInKSwgcG9zKSlcbiAgfCBDT01QQVJFX09QIChvcCwgYSwgYiksIHBvcyAtPlxuICAgIGxldCBhJyA9XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYVxuICAgIGluXG4gICAgbGV0IGInID1cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBiXG4gICAgaW5cbiAgICAobWF0Y2ggYScsIGInIHdpdGhcbiAgICB8IChDT05TVCBuMSwgXyksIChDT05TVCBuMiwgXykgLT5cbiAgICAgIGlmIE5ici5vZl9jb21wYXJlX29wIG9wIG4xIG4yIHRoZW5cbiAgICAgICAgVFJVRSwgcG9zXG4gICAgICBlbHNlXG4gICAgICAgIEZBTFNFLCBwb3NcbiAgICB8ICggKCAoIERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IERJRkZfVE9LRU4gXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgICAgfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgX1xuICAgICAgICAgIHwgSUYgXyApLFxuICAgICAgICAgIF8gKSxcbiAgICAgICAgXyApIC0+XG4gICAgICBDT01QQVJFX09QIChvcCwgYScsIGInKSwgcG9zKVxuXG5sZXQgcmVjIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSAoKGluX3QsIF8sIF8sIGRlcHMpIGFzIHZhcnNfZGVwcykgPSBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICB8IChLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8pLCBfIC0+IGZhbHNlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSLCBfIC0+IHRydWVcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuRVZFTlRfVkFSLCBfIC0+IG5vdCBvbmx5X3RpbWVcbiAgfCAoIFNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgKSxcbiAgICAgIF8gKSAtPlxuICAgIGZhbHNlXG4gIHwgQUxHX1ZBUiBpLCBfIC0+XG4gICAgbGV0IHJlYyBhdXggaiA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQubWVtIChPcGVyYXRvci5BTEcgaikgaW5fdFxuICAgICAgfHwgT3BlcmF0b3IuRGVwU2V0LmV4aXN0c1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE9wZXJhdG9yLkFMRyBrIC0+IGF1eCBrXG4gICAgICAgICAgICAgfCBPcGVyYXRvci5SVUxFIF8gfCBPcGVyYXRvci5NT0RJRiBfIC0+IGZhbHNlKVxuICAgICAgICAgICBkZXBzLihqKVxuICAgIGluXG4gICAgYXV4IGlcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgY29uZFxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgeWVzXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBub1xuXG5hbmQgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiBmYWxzZVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgICB8fCBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG5cbmxldCByZWMgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyA9IGZ1bmN0aW9uXG4gIHwgVFJVRSB8IEZBTFNFIC0+IGZhbHNlXG4gIHwgVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULCAoYSwgXykpIC0+IGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgYVxuICB8IEJJTl9CT09MX09QIChfLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzIGEgfHwgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyBiXG4gIHwgQ09NUEFSRV9PUCAob3AsIGEsIGIpIC0+XG4gICAgbGV0IG9ubHlfdGltZSA9IHRydWUgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuRVFVQUxcbiAgICAgIHdoZW4gaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgICAgICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYiAtPlxuICAgICAgdHJ1ZVxuICAgIHwgT3BlcmF0b3IuRVFVQUwgfCBPcGVyYXRvci5TTUFMTEVSIHwgT3BlcmF0b3IuR1JFQVRFUiB8IE9wZXJhdG9yLkRJRkYgLT5cbiAgICAgIGZhbHNlKVxuXG5sZXQgcmVjIG1hcF9vbl9taXh0dXJlIGYgPSBmdW5jdGlvblxuICB8IEtBUFBBX0lOU1RBTkNFIGksIHAgLT4gZiBpLCBwXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfLCBfIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiQWxnX2V4cHIubWFwX29uX21peHR1cmUgZG9lc24ndCBrbm93IHdoYXQgdG8gZG8gb2YgRElGRl9LQVBQQV9JTlNUQU5DRVwiXG4gIHwgKENPTlNUIF8sIF8pIGFzIHggLT4geFxuICB8IChBTEdfVkFSIF8sIF8pIGFzIHggLT4geFxuICB8IChUT0tFTl9JRCBfLCBfKSBhcyB4IC0+IHhcbiAgfCBESUZGX1RPS0VOIChhLCBpKSwgcCAtPiBESUZGX1RPS0VOIChtYXBfb25fbWl4dHVyZSBmIGEsIGkpLCBwXG4gIHwgKFNUQVRFX0FMR19PUCBfLCBfKSBhcyB4IC0+IHhcbiAgfCBCSU5fQUxHX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIEJJTl9BTEdfT1AgKG8sIG1hcF9vbl9taXh0dXJlIGYgeCwgbWFwX29uX21peHR1cmUgZiB5KSwgcFxuICB8IFVOX0FMR19PUCAobywgeCksIHAgLT4gVU5fQUxHX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgpLCBwXG4gIHwgSUYgKGIsIHgsIHkpLCBwIC0+XG4gICAgSUYgKG1hcF9ib29sX29uX21peHR1cmUgZiBiLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcblxuYW5kIG1hcF9ib29sX29uX21peHR1cmUgZiA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUsIF8pIGFzIHggLT4geFxuICB8IChGQUxTRSwgXykgYXMgeCAtPiB4XG4gIHwgQklOX0JPT0xfT1AgKG8sIHgsIHkpLCBwIC0+XG4gICAgQklOX0JPT0xfT1AgKG8sIG1hcF9ib29sX29uX21peHR1cmUgZiB4LCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeSksIHBcbiAgfCBVTl9CT09MX09QIChvLCB4KSwgcCAtPiBVTl9CT09MX09QIChvLCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeCksIHBcbiAgfCBDT01QQVJFX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIENPTVBBUkVfT1AgKG8sIG1hcF9vbl9taXh0dXJlIGYgeCwgbWFwX29uX21peHR1cmUgZiB5KSwgcFxuXG5sZXQgcmVjIGZvbGRfb25fbWl4dHVyZSBmIHggPSBmdW5jdGlvblxuICB8IEtBUFBBX0lOU1RBTkNFIGksIF8gLT4gZiB4IGlcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8sIF8gLT5cbiAgICBmYWlsd2l0aFxuICAgICAgXCJBbGdfZXhwci5mb2xkX29uX21peHR1cmUgZG9lc24ndCBrbm93IHdoYXQgdG8gZG8gb2YgRElGRl9LQVBQQV9JTlNUQU5DRVwiXG4gIHwgQ09OU1QgXywgXyAtPiB4XG4gIHwgQUxHX1ZBUiBfLCBfIC0+IHhcbiAgfCBUT0tFTl9JRCBfLCBfIC0+IHhcbiAgfCBESUZGX1RPS0VOIChhLCBfKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiB4IGFcbiAgfCBTVEFURV9BTEdfT1AgXywgXyAtPiB4XG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIHggYSkgYlxuICB8IFVOX0FMR19PUCAoXywgYSksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgeCBhXG4gIHwgSUYgKGIsIHUsIHYpLCBfIC0+XG4gICAgZm9sZF9ib29sX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIHggdSkgdikgYlxuXG5hbmQgZm9sZF9ib29sX29uX21peHR1cmUgZiB4ID0gZnVuY3Rpb25cbiAgfCBUUlVFLCBfIC0+IHhcbiAgfCBGQUxTRSwgXyAtPiB4XG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgZm9sZF9ib29sX29uX21peHR1cmUgZiAoZm9sZF9ib29sX29uX21peHR1cmUgZiB4IGEpIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBmb2xkX2Jvb2xfb25fbWl4dHVyZSBmIHggYVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IGEpIGJcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoQklOX0FMR19PUCAob3BhLCBhMSwgYTIpLCBfKSwgKEJJTl9BTEdfT1AgKG9wYiwgYjEsIGIyKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWwgYTEgYjEgJiYgZXF1YWwgYTIgYjJcbiAgfCAoIChCSU5fQUxHX09QIF8sIF8pLFxuICAgICAgKCAoIFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSApXG4gIHwgKCAoICggVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgXyApLFxuICAgICAgKEJJTl9BTEdfT1AgXywgXykgKSAtPlxuICAgIGZhbHNlXG4gIHwgKFVOX0FMR19PUCAob3BhLCBhMSksIF8pLCAoVU5fQUxHX09QIChvcGIsIGIxKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWwgYTEgYjFcbiAgfCAoIChVTl9BTEdfT1AgXywgXyksXG4gICAgICAoICggU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgfCBJRiBfICksXG4gICAgICAgIF8gKSApXG4gIHwgKCAoICggU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgfCBJRiBfICksXG4gICAgICAgIF8gKSxcbiAgICAgIChVTl9BTEdfT1AgXywgXykgKSAtPlxuICAgIGZhbHNlXG4gIHwgKFNUQVRFX0FMR19PUCBvcGEsIF8pLCAoU1RBVEVfQUxHX09QIG9wYiwgXykgLT4gb3BhID0gb3BiXG4gIHwgKCAoU1RBVEVfQUxHX09QIF8sIF8pLFxuICAgICAgKChBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXykgKVxuICB8ICggKChBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksXG4gICAgICAoU1RBVEVfQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChBTEdfVkFSIGlkMSwgXyksIChBTEdfVkFSIGlkMiwgXykgLT4gaWQxID0gaWQyXG4gIHwgKEFMR19WQVIgXywgXyksICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pXG4gIHwgKChLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksIChBTEdfVkFSIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgbWl4MSwgXyksIChLQVBQQV9JTlNUQU5DRSBtaXgyLCBfKSAtPiBtaXgxID0gbWl4MlxuICB8IChLQVBQQV9JTlNUQU5DRSBfLCBfKSwgKChUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXyksIChLQVBQQV9JTlNUQU5DRSBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKFRPS0VOX0lEIGlkMSwgXyksIChUT0tFTl9JRCBpZDIsIF8pIC0+IGlkMSA9IGlkMlxuICB8IChUT0tFTl9JRCBfLCBfKSwgKChDT05TVCBfIHwgSUYgXyksIF8pXG4gIHwgKChDT05TVCBfIHwgSUYgXyksIF8pLCAoVE9LRU5fSUQgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChDT05TVCBjMSwgXyksIChDT05TVCBjMiwgXykgLT4gTmJyLmlzX2VxdWFsIGMxIGMyXG4gIHwgKENPTlNUIF8sIF8pLCAoSUYgXywgXykgfCAoSUYgXywgXyksIChDT05TVCBfLCBfKSAtPiBmYWxzZVxuICB8IChJRiAoY29uZGEsIGExLCBhMiksIF8pLCAoSUYgKGNvbmRiLCBiMSwgYjIpLCBfKSAtPlxuICAgIGVxdWFsX2Jvb2wgY29uZGEgY29uZGIgJiYgZXF1YWwgYTEgYjEgJiYgZXF1YWwgYTIgYjJcbiAgfCAoKERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyksIF8pLCBfXG4gIHwgXywgKChESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8pLCBfKSAtPlxuICAgIGFzc2VydCBmYWxzZVxuXG5hbmQgZXF1YWxfYm9vbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoVFJVRSwgXyksIChUUlVFLCBfKSAtPiB0cnVlXG4gIHwgKFRSVUUsIF8pLCAoKEZBTFNFIHwgQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pXG4gIHwgKChGQUxTRSB8IEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSwgKFRSVUUsIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoRkFMU0UsIF8pLCAoRkFMU0UsIF8pIC0+IHRydWVcbiAgfCAoRkFMU0UsIF8pLCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKVxuICB8ICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pLCAoRkFMU0UsIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoVU5fQk9PTF9PUCAob3BhLCBhKSwgXyksIChVTl9CT09MX09QIChvcGIsIGIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbF9ib29sIGEgYlxuICB8IChVTl9CT09MX09QIF8sIF8pLCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8pLCBfKVxuICB8ICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyksIF8pLCAoVU5fQk9PTF9PUCBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEJJTl9CT09MX09QIChvcGEsIGExLCBhMiksIF8pLCAoQklOX0JPT0xfT1AgKG9wYiwgYjEsIGIyKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWxfYm9vbCBhMSBiMSAmJiBlcXVhbF9ib29sIGEyIGIyXG4gIHwgKEJJTl9CT09MX09QIF8sIF8pLCAoQ09NUEFSRV9PUCBfLCBfKSB8IChDT01QQVJFX09QIF8sIF8pLCAoQklOX0JPT0xfT1AgXywgXylcbiAgICAtPlxuICAgIGZhbHNlXG4gIHwgKENPTVBBUkVfT1AgKG9wYSwgYTEsIGEyKSwgXyksIChDT01QQVJFX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4iLCIoKipcbiAgKiBjb250YWN0X21hcC5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZWN0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBDcmVhdGlvbjogMjAxNywgdGhlIDIzcmQgb2YgSnVuZVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA1IDIwMTc+XG4gICpcbiAgKiBDb21wdXRlIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnQgaW4gY29udGFjdCBtYXBcbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZVxuICAqIGVuIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS5cbiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgdCA9IChNb2RzLkludFNldC50ICogTW9kcy5JbnQyU2V0LnQpIGFycmF5IGFycmF5XG5cbmxldCB0b195b2pzb24gYSA9XG4gIGxldCBpbnRsc190b19qc29uIGEgPVxuICAgIGBMaXN0IChNb2RzLkludFNldC5mb2xkIChmdW4gYiBhY2MgLT4gYEludCBiIDo6IGFjYykgYSBbXSlcbiAgaW5cbiAgbGV0IHBhaXJsc190b19qc29uIGEgPVxuICAgIGBMaXN0XG4gICAgICAoTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgIChmdW4gKGIsIGMpIGFjYyAtPiBgTGlzdCBbIGBJbnQgYjsgYEludCBjIF0gOjogYWNjKVxuICAgICAgICAgYSBbXSlcbiAgaW5cbiAgbGV0IGFycmF5X3RvX2pzb24gYSA9XG4gICAgYExpc3RcbiAgICAgIChBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gYWNjIChhLCBiKSAtPiBgTGlzdCBbIGludGxzX3RvX2pzb24gYTsgcGFpcmxzX3RvX2pzb24gYiBdIDo6IGFjYylcbiAgICAgICAgIFtdIGEpXG4gIGluXG4gIGBMaXN0IChBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgdCAtPiBhcnJheV90b19qc29uIHQgOjogYWNjKSBbXSBhKVxuXG5sZXQgb2ZfeW9qc29uIChhIDogWW9qc29uLkJhc2ljLnQpID1cbiAgbGV0IGludGxzX29mX2pzb24gYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEludCBiIC0+IE1vZHMuSW50U2V0LmFkZCBiIGFjY1xuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhMVwiLCB4KSkpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBhXG4gIGluXG4gIGxldCBwYWlybHNfb2ZfanNvbiBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGlzdCBbIGBJbnQgYjsgYEludCBjIF0gLT4gTW9kcy5JbnQyU2V0LmFkZCAoYiwgYykgYWNjXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGEyXCIsIHgpKSlcbiAgICAgIE1vZHMuSW50MlNldC5lbXB0eSBhXG4gIGluXG4gIGxldCBhcnJheV9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBMaXN0IGxzIC0+XG4gICAgICAobWF0Y2ggbHMgd2l0aFxuICAgICAgfCBbIGBMaXN0IGE7IGBMaXN0IGIgXSAtPiBpbnRsc19vZl9qc29uIGEsIHBhaXJsc19vZl9qc29uIGJcbiAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTNcIiwgeCkpXG4gIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IGBMaXN0IGFycmF5MSAtPlxuICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgTGlzdCBhcnJheTIgLT4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgYXJyYXlfb2ZfanNvbiBhcnJheTJcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTRcIiwgeCkpKVxuICAgICAgYXJyYXkxXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGNvbnRhY3QgbWFwXCIsIHgpKVxuXG5sZXQgcHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgc2lncyBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBhZyBmIGludGYgLT5cbiAgICAgICAgIGlmIChub3QgKFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgYWcpKSB8fCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+JSVhZ2VudDpAICVhKEBbJWFAXSlAXVwiXG4gICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgIGFnXG4gICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gcyBmIChpcywgbHMpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBTaWduYXR1cmUuc2l0ZV9pc19jb3VudGVyIHNpZ3MgYWcgcyAmJiBub3Qgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWcpXG4gICAgICAgICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfY291bnRlciBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEldCV0QF1cIlxuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoTW9kcy5JbnRTZXQuaXNfZW1wdHkgaXMpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIntAWyVhQF19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50U2V0LmVsZW1lbnRzIFBwLnNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnIHMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChNb2RzLkludDJTZXQuaXNfZW1wdHkgbHMpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkAsW0BbJWFAXV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcC5zZXQgTW9kcy5JbnQyU2V0LmVsZW1lbnRzIFBwLnNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIChhZCwgc2QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbHMpKSlcbiAgICAgICAgICAgICBpbnRmKSlcbiAgICBjXG5cbmxldCBjdXRfYXQgaSBzJyBsID1cbiAgbGV0IHJlYyBhdXhfY3V0X2F0IG8gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgKCgoaiwgcyksIF8pIGFzIGgpIDo6IHQgLT5cbiAgICAgIGlmIGkgPSBqIHRoZW5cbiAgICAgICAgaWYgcyA+PSBzJyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZSAoaCA6OiBvKVxuICAgICAgZWxzZVxuICAgICAgICBhdXhfY3V0X2F0IChoIDo6IG8pIHRcbiAgaW5cbiAgYXV4X2N1dF9hdCBbXSBsXG5cbmxldCBnZXRfY3ljbGVzIGNvbnRhY3RfbWFwID1cbiAgbGV0IHJlYyBkZnMgKChrbm93biwgb3V0KSBhcyBhY2MpIHBhdGggaSBsYXN0X3MgPVxuICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpIGtub3duIHRoZW4gKFxuICAgICAgbWF0Y2ggY3V0X2F0IGkgbGFzdF9zIHBhdGggd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIHggLT4ga25vd24sIHggOjogb3V0XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBrbm93bicgPSBNb2RzLkludFNldC5hZGQgaSBrbm93biBpblxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIHMgYWNjIChfLCBsKSAtPlxuICAgICAgICAgIGlmIHMgPSBsYXN0X3MgdGhlblxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAgICAgKGZ1biAoKHR5LCBzJykgYXMgeCkgYWNjIC0+IGRmcyBhY2MgKCgoaSwgcyksIHgpIDo6IHBhdGgpIHR5IHMnKVxuICAgICAgICAgICAgICBsIGFjYylcbiAgICAgICAgKGtub3duJywgb3V0KSBjb250YWN0X21hcC4oaSlcbiAgICApXG4gIGluXG4gIGxldCByZWMgc2NhbiAoKGtub3duLCBvdXQpIGFzIGFjYykgaSA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgb3V0XG4gICAgZWxzZVxuICAgICAgc2NhblxuICAgICAgICAoaWYgTW9kcy5JbnRTZXQubWVtIGkga25vd24gdGhlblxuICAgICAgICAgICBhY2NcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZGZzIGFjYyBbXSBpICgtMSkpXG4gICAgICAgIChwcmVkIGkpXG4gIGluXG4gIHNjYW4gKE1vZHMuSW50U2V0LmVtcHR5LCBbXSkgKEFycmF5Lmxlbmd0aCBjb250YWN0X21hcCAtIDEpXG5cbmxldCBwcmludF9jeWNsZXMgc2lncyBmb3JtIGNvbnRhY3RfbWFwID1cbiAgbGV0IG8gPSBnZXRfY3ljbGVzIGNvbnRhY3RfbWFwIGluXG4gIFBwLmxpc3QgUHAuc3BhY2VcbiAgICAoUHAubGlzdCBQcC5lbXB0eSAoZnVuIGYgKChhZywgcyksIChhZycsIHMnKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYS0lYS5cIlxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgIGFnXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICBzXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnJylcbiAgICAgICAgICAgcycpKVxuICAgIGZvcm0gb1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIzIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFyaW5nX2xldmVsID0gTm9fc2hhcmluZyB8IENvbXBhdGlibGVfcGF0dGVybnMgfCBNYXhfc2hhcmluZ1xuXG5sZXQgc2hhcmluZ19sZXZlbF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJub19zaGFyaW5nXCIgLT4gTm9fc2hhcmluZ1xuICB8IGBTdHJpbmcgXCJjb21wYXRpYmxlX3BhdHRlcm5zXCIgLT4gQ29tcGF0aWJsZV9wYXR0ZXJuc1xuICB8IGBTdHJpbmcgXCJtYXhfc2hhcmluZ1wiIC0+IE1heF9zaGFyaW5nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3Qgc2hhcmluZ19sZXZlbFwiLCB4KSlcblxubGV0IHdyaXRlX3NoYXJpbmdfbGV2ZWwgb2IgPSBmdW5jdGlvblxuICB8IE5vX3NoYXJpbmcgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcIm5vX3NoYXJpbmdcIlxuICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcImNvbXBhdGlibGVfcGF0dGVybnNcIlxuICB8IE1heF9zaGFyaW5nIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJtYXhfc2hhcmluZ1wiXG5cbmxldCBzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCA/bGVuOihfID0gMTAyNCkgPSBmdW5jdGlvblxuICB8IE5vX3NoYXJpbmcgLT4gXCJcXFwibm9fc2hhcmluZ1xcXCJcIlxuICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT4gXCJcXFwiY29tcGF0aWJsZV9wYXR0ZXJuc1xcXCJcIlxuICB8IE1heF9zaGFyaW5nIC0+IFwiXFxcIm1heF9zaGFyaW5nXFxcIlwiXG5cbmxldCByZWFkX3NoYXJpbmdfbGV2ZWwgcCBsYiA9XG4gIHNoYXJpbmdfbGV2ZWxfb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCBzaGFyaW5nX2xldmVsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaGFyaW5nX2xldmVsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgbGluayA9IFVuU3BlYyB8IEZyZWUgfCBMaW5rIG9mIGludCAqIGludCAgKCoqIG5vZGVfaWQsIHNpdGVfaWQgKilcblxudHlwZSBjYyA9IHtcbiAgbm9kZXNfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gIG5vZGVzOiAobGluayAqIGludCkgYXJyYXkgTW9kcy5JbnRNYXAudDtcbiAgKCpwYXR0ZXJuIGdyYXBoIGlkIC0+IFt8Li4uIChsaW5rX2osc3RhdGVfaikuLi58XSBpLmUgYWdlbnRfaWQgb24gc2l0ZV9qIGhhc1xuICAgIGEgbGluayBsaW5rX2ogYW5kIGludGVybmFsIHN0YXRlIHN0YXRlX2ogKC0xIG1lYW5zIGFueSkgKilcbiAgcmVjb2duX25hdjogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG59XG4oKiogVGhlIGxpbmsgb2Ygc2l0ZSBrIG9mIG5vZGUgaSBpcyBbZnN0IG5vZGVzKGkpLihrKV0uXG5cbiAgICBUaGUgaW50ZXJuYWwgc3RhdGUgb2Ygc2l0ZSBrIG9mIG5vZGUgaSBpcyBbc25kIG5vZGVzKGkpLihrKV0uIEFcbiAgICBuZWdhdGl2ZSBudW1iZXIgbWVhbnMgVW5TcGVjLiAqKVxuXG50eXBlIHQgPSBjY1xudHlwZSBpZCA9IGludFxuXG5sZXQgZGVidWdfcHJpbnRfaWQgZm10IGlkID0gRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiBpZFxubGV0IHNpemVfb2ZfY2MgY2MgPSBNb2RzLkludE1hcC5zaXplIGNjLm5vZGVzXG5sZXQgY29tcGFyZV9jYW5vbmljYWxzIGNjIGNjJyA9IE1vZHMuaW50X2NvbXBhcmUgY2MgY2MnXG5sZXQgaXNfZXF1YWxfY2Fub25pY2FscyBjYyBjYycgPSBjb21wYXJlX2Nhbm9uaWNhbHMgY2MgY2MnID0gMFxubGV0IGhhc2hfcHJpbWUgPSAyOVxuXG5sZXQgY29hcnNlX2hhc2ggY2MgPVxuICBsZXQgcGx1c19pbnRlcm5hbCBhY2MgcyBpID1cbiAgICBpZiBpIDwgMCB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBUb29scy5jYW50b3JfcGFpcmluZyAoc3VjYyBzKSAoc3VjYyBpKSArIGFjY1xuICBpblxuICBsZXQgbm9kZV9zaGFwZSA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBuIGUgYWNjIC0+XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIHMgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFVuU3BlYywgaSAtPiBwbHVzX2ludGVybmFsIGFjYyBzIGlcbiAgICAgICAgICAgIHwgRnJlZSwgaSAtPiBwbHVzX2ludGVybmFsICgzICsgKHMgKiAzKSArIGFjYykgcyBpXG4gICAgICAgICAgICB8IExpbmsgKG4nLCBzJyksIGkgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYycgPSBwbHVzX2ludGVybmFsIGFjYyBzIGkgaW5cbiAgICAgICAgICAgICAgbGV0IGV4dHJhID0gVG9vbHMuY2FudG9yX3BhaXJpbmcgKDEgKyBtaW4gcyBzJykgKDEgKyBtYXggcyBzJykgaW5cbiAgICAgICAgICAgICAgaWYgKG4gPSBuJyAmJiBzIDwgcycpIHx8IG4gPCBuJyB0aGVuXG4gICAgICAgICAgICAgICAgKGV4dHJhICogNykgKyBhY2MnXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MnKVxuICAgICAgICAgIGFjYyBlKVxuICAgICAgY2Mubm9kZXMgMFxuICBpblxuICBBcnJheS5mb2xkX3JpZ2h0XG4gICAgKGZ1biBsIGFjYyAtPiBMaXN0Lmxlbmd0aCBsICsgKGhhc2hfcHJpbWUgKiBhY2MpKVxuICAgIGNjLm5vZGVzX2J5X3R5cGUgbm9kZV9zaGFwZVxuXG5sZXQgaWRfdG9feW9qc29uIGNjID0gYEludCBjY1xuXG5sZXQgaWRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IGNjIC0+IGNjXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwYXR0ZXJuIGlkXCIsIHgpKVxuXG5tb2R1bGUgU2V0ID0gTW9kcy5JbnRTZXRcbm1vZHVsZSBNYXAgPSBNb2RzLkludE1hcFxuXG5tb2R1bGUgT2JzTWFwID0gc3RydWN0XG4gIGluY2x1ZGUgTW9kcy5EeW5BcnJheVxuXG4gIGxldCBkdW1teSB4ID0gbWFrZSAwIHhcbmVuZFxuXG5sZXQgZW1wdHlfY2Mgc2lncyA9XG4gIGxldCBuYnQgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdzKSBbXSBpblxuICB7IG5vZGVzX2J5X3R5cGUgPSBuYnQ7IHJlY29nbl9uYXYgPSBbXTsgbm9kZXMgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5cbmxldCByYXdfZmluZF90eSB0eXMgaWQgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgTGlzdC5tZW0gaWQgdHlzLihpKSB0aGVuXG4gICAgICBpXG4gICAgZWxzZVxuICAgICAgYXV4IChwcmVkIGkpXG4gIGluXG4gIGF1eCAoQXJyYXkubGVuZ3RoIHR5cyAtIDEpXG5cbmxldCBmaW5kX3R5IGNjIGlkID0gcmF3X2ZpbmRfdHkgY2Mubm9kZXNfYnlfdHlwZSBpZFxuXG5sZXQgYWRkX29yaWdpbiBkZXBzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGRlcHNcbiAgfCBTb21lIHggLT4gT3BlcmF0b3IuRGVwU2V0LmFkZCB4IGRlcHNcblxubGV0IHJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gY2MgPSBjYy5yZWNvZ25fbmF2XG5cbigqKiBFcnJvcnMgKilcbmxldCBhbHJlYWR5X3NwZWNpZmllZCA/c2lncyB4IGkgPVxuICBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIlNpdGUgJWEgb2YgYWdlbnQgJWEgYWxyZWFkeSBzcGVjaWZpZWRcIlxuICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIHgpIGlcbiAgICAgICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgeCkpXG5cbmxldCBkYW5nbGluZ19ub2RlIH5zaWdzIHR5cyB4ID1cbiAgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJDYW5ub3QgcHJvY2VlZCBiZWNhdXNlIGxhc3QgZGVjbGFyZWQgYWdlbnQgJWEvKiVpKi8lYVwiXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgIChyYXdfZmluZF90eSB0eXMgeCkgeCBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgICAgXCIgaXMgbm90IGxpbmtlZCB0byBpdHMgY29ubmVjdGVkIGNvbXBvbmVudC5cIikpXG5cbmxldCBpZGVudGl0eV9pbmplY3Rpb24gY2MgPVxuICBSZW5hbWluZy5pZGVudGl0eVxuICAgIChBcnJheS5mb2xkX2xlZnQgKGZ1biB4IHkgLT4gTGlzdC5yZXZfYXBwZW5kIHkgeCkgW10gY2Mubm9kZXNfYnlfdHlwZSlcblxuKCoqIHBpY2sgYSByb290IGluIHRoZSBDQy4gQW55IHJvb3Qgd29ya3MuXG4gICAgSW4gdGhpcyBjYXNlIHBpY2sgdGhlIGZpcnN0IG5vZGUgb2Ygc21hbGxlc3QgdHlwZSAqKVxubGV0IHJhd19maW5kX3Jvb3Qgbm9kZXNfYnlfdHlwZSA9XG4gIGxldCByZWMgYXV4IHR5ID1cbiAgICBpZiB0eSA9IEFycmF5Lmxlbmd0aCBub2Rlc19ieV90eXBlIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5vZGVzX2J5X3R5cGUuKHR5KSB3aXRoXG4gICAgICB8IFtdIC0+IGF1eCAoc3VjYyB0eSlcbiAgICAgIHwgaCA6OiBfIC0+IFNvbWUgKGgsIHR5KVxuICAgIClcbiAgaW5cbiAgYXV4IDBcblxubGV0IGZpbmRfcm9vdCBjYyA9IHJhd19maW5kX3Jvb3QgY2Mubm9kZXNfYnlfdHlwZVxuXG5sZXQgd2VpZ2h0IGNjID1cbiAgbGV0IGxpbmtzLCBkb3VibGUgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBBcnJheS5mb2xkX3JpZ2h0IChmdW4gKGksIHMpIChsLCBkKSAtPlxuICAgICAgICAgICAgaWYgaSA8PiBVblNwZWMgdGhlblxuICAgICAgICAgICAgICAoIHN1Y2NcbiAgICAgICAgICAgICAgICAgIChpZiBzIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIHN1Y2MgbFxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIGwpLFxuICAgICAgICAgICAgICAgIGlmIGkgPD4gRnJlZSB0aGVuXG4gICAgICAgICAgICAgICAgICBzdWNjIGRcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBkIClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCAoaWYgcyA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgc3VjYyBsXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBsKSxcbiAgICAgICAgICAgICAgICBkICkpKVxuICAgICAgY2Mubm9kZXMgKDAsIDApXG4gIGluXG4gIGxpbmtzIC0gKGRvdWJsZSAvIDIpXG5cbmxldCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSA/cG9zc2liaWxpdGllcyB+c3RyaWN0IHJvb3QxIGNjMSByb290MiBjYzIgPVxuICBsZXQgdGljayB4ID1cbiAgICBtYXRjaCBwb3NzaWJpbGl0aWVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPiBzIDo9IE1vZHMuSW50MlNldC5yZW1vdmUgeCAhc1xuICBpblxuICBsZXQgcmVjIGF1eCBhdF9sZWFzdF9vbmVfZWRnZSByZW5hbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIGF0X2xlYXN0X29uZV9lZGdlIHRoZW5cbiAgICAgICAgU29tZSByZW5hbWUsIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZSwgTm9uZVxuICAgIHwgKChvLCBwKSBhcyBwYWlyKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0ICgpID0gdGljayBwYWlyIGluXG4gICAgICAobWF0Y2hcbiAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAgIChmdW4gaSBjIChseCwgaXgpIChseSwgaXkpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lLCBfIC0+IGNcbiAgICAgICAgICAgICB8IFNvbWUgKG9uZV9lZGdlLCB0b2RvLCByZW4pLCBfIC0+XG4gICAgICAgICAgICAgICBpZiAoKG5vdCBzdHJpY3QpICYmIChpeCA9IC0xIHx8IGl5ID0gLTEpKSB8fCBpeCA9IGl5IHRoZW4gKFxuICAgICAgICAgICAgICAgICBtYXRjaCBseCwgbHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IExpbmsgXywgRnJlZSB8IEZyZWUsIExpbmsgXyAtPlxuICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgfCBVblNwZWMsIEZyZWUgfCBGcmVlLCBVblNwZWMgfCBMaW5rIF8sIFVuU3BlYyB8IFVuU3BlYywgTGluayBfXG4gICAgICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBzdHJpY3QgdGhlblxuICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIFNvbWUgKG9uZV9lZGdlIHx8IChpeCA8PiAtMSAmJiBpeCA9IGl5KSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IFVuU3BlYywgVW5TcGVjIC0+XG4gICAgICAgICAgICAgICAgICAgU29tZSAob25lX2VkZ2UgfHwgKGl4IDw+IC0xICYmIGl4ID0gaXkpLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgIHwgRnJlZSwgRnJlZSAtPiBTb21lICh0cnVlLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgIHwgTGluayAobjEsIHMxKSwgTGluayAobjIsIHMyKSAtPlxuICAgICAgICAgICAgICAgICAgIGlmIHMxID0gczIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIG4xIHJlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlbiBuMSA9IG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBTb21lICh0cnVlLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIG4xIG4yIHJlbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSByJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfdHkgY2MxIG4xID0gZmluZF90eSBjYzIgbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAodHJ1ZSwgKG4xLCBuMikgOjogdG9kbywgcicpLCBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgdHJ1ZSkpXG4gICAgICAgICAgIChTb21lIChhdF9sZWFzdF9vbmVfZWRnZSwgdG9kb3MsIHJlbmFtZSksIE5vbmUpXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBvIGNjMS5ub2RlcylcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHAgY2MyLm5vZGVzKVxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSwgY29uZmxpY3QgLT4gTm9uZSwgY29uZmxpY3RcbiAgICAgIHwgU29tZSAob25lX2VkZ2VzJywgdG9kb3MnLCByZW4nKSwgXyAtPiBhdXggb25lX2VkZ2VzJyByZW4nIHRvZG9zJylcbiAgaW5cbiAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHJvb3QxIHJvb3QyIChSZW5hbWluZy5lbXB0eSAoKSkgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSByIC0+XG4gICAgbGV0IGFfc2luZ2xlX2FnZW50ID1cbiAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgaSA9IC0xICYmIGwgPSBVblNwZWMpXG4gICAgICAgIHRydWVcbiAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHJvb3QxIGNjMS5ub2RlcylcbiAgICAgIHx8IEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgaSA9IC0xICYmIGwgPSBVblNwZWMpXG4gICAgICAgICAgIHRydWVcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHJvb3QyIGNjMi5ub2RlcylcbiAgICBpblxuICAgIGF1eCBhX3NpbmdsZV9hZ2VudCByIFsgcm9vdDEsIHJvb3QyIF1cblxuKCoqIEByZXR1cm4gaW5qZWN0aW9uIGZyb20gYSB0byBiICopXG5sZXQgZXF1YWwgfmRlYnVnX21vZGUgYSBiID1cbiAgbWF0Y2hcbiAgICBUb29scy5hcnJheV9taW5fZXF1YWxfbm90X251bGxcbiAgICAgIChBcnJheS5tYXAgKGZ1biB4IC0+IExpc3QubGVuZ3RoIHgsIHgpIGEubm9kZXNfYnlfdHlwZSlcbiAgICAgIChBcnJheS5tYXAgKGZ1biB4IC0+IExpc3QubGVuZ3RoIHgsIHgpIGIubm9kZXNfYnlfdHlwZSlcbiAgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKFtdLCBhZ3MpIC0+XG4gICAgaWYgYWdzID0gW10gdGhlblxuICAgICAgU29tZSAoUmVuYW1pbmcuZW1wdHkgKCkpXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFNvbWUgKGgxIDo6IF8sIGFncykgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBib29sIGFnIC0+XG4gICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBib29sXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByZW5hbWUsIF8gPSBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OnRydWUgaDEgYSBhZyBiIGluXG4gICAgICAgICAgcmVuYW1lKVxuICAgICAgTm9uZSBhZ3NcblxubGV0IGF1dG9tb3JwaGlzbXMgfmRlYnVnX21vZGUgYSA9XG4gIG1hdGNoXG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB4IC0+IFRvb2xzLm1pbl9wb3NfaW50X25vdF96ZXJvIGFjYyAoTGlzdC5sZW5ndGggeCwgeCkpXG4gICAgICAoMCwgW10pIGEubm9kZXNfYnlfdHlwZVxuICB3aXRoXG4gIHwgXywgW10gLT4gWyBSZW5hbWluZy5lbXB0eSAoKSBdXG4gIHwgXywgKGggOjogXyBhcyBsKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBhZyAtPlxuICAgICAgICBtYXRjaCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OnRydWUgaCBhIGFnIGEgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gYWNjXG4gICAgICAgIHwgU29tZSByLCBfIC0+IHIgOjogYWNjKVxuICAgICAgW10gbFxuXG5sZXQgcG90ZW50aWFsX3BhaXJpbmcgc2lncyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgKGZ1biB4IGFjYyBsYSBsYiAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyB4IHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgYiAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBNb2RzLkludDJTZXQuYWRkIChhLCBiKSBhY2MpIGFjYyBsYSlcbiAgICAgICAgICBhY2MgbGIpXG4gICAgTW9kcy5JbnQyU2V0LmVtcHR5XG5cbmxldCBtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyBhIGIgPVxuICBsZXQgcG9zc2liaWxpdGllcyA9XG4gICAgcmVmIChwb3RlbnRpYWxfcGFpcmluZyBzaWdzIGEubm9kZXNfYnlfdHlwZSBiLm5vZGVzX2J5X3R5cGUpXG4gIGluXG4gIGxldCByZWMgZm9yX29uZV9yb290IGFjYyA9XG4gICAgbWF0Y2ggTW9kcy5JbnQyU2V0LmNob29zZSAhcG9zc2liaWxpdGllcyB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSAoeCwgeSkgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnBvc3NpYmlsaXRpZXMgfnN0cmljdDpmYWxzZSB4IGEgeSBiXG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lLCBfIC0+IGZvcl9vbmVfcm9vdCBhY2NcbiAgICAgIHwgU29tZSByLCBfIC0+IGZvcl9vbmVfcm9vdCAociA6OiBhY2MpKVxuICBpblxuICBmb3Jfb25lX3Jvb3QgW11cblxuKCp0dXJucyBhIGNjIGludG8gYSBwYXRoKDpsaXN0KSBpbiB0aGUgZG9tYWluKilcbmxldCByYXdfdG9fbmF2aWdhdGlvbiAoZnVsbCA6IGJvb2wpIG5vZGVzX2J5X3R5cGUgbm9kZXMgPVxuICBsZXQgcmVjIGJ1aWxkX2ZvciAoZmlyc3QsIG91dCkgZG9uID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IExpc3QucmV2IG91dFxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgZmlyc3QnLCBvdXQnLCB0b2RvID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gaSAoKGZpcnN0LCBhbnMsIHJlKSBhcyBhY2MpIChsLCBzKSAtPlxuICAgICAgICAgICAgbGV0ICgoZmlyc3QnLCBhbnMnLCBfKSBhcyBhY2MnKSA9XG4gICAgICAgICAgICAgIGlmIChmdWxsIHx8IGZpcnN0KSAmJiBzID49IDAgdGhlblxuICAgICAgICAgICAgICAgICggZmFsc2UsXG4gICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkV4aXN0aW5nIGgpLFxuICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub0ludGVybmFsIHMgKVxuICAgICAgICAgICAgICAgICAgOjogYW5zLFxuICAgICAgICAgICAgICAgICAgcmUgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFVuU3BlYyAtPiBhY2MnXG4gICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgaWYgZnVsbCB8fCBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICggZmFsc2UsXG4gICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob3RoaW5nIClcbiAgICAgICAgICAgICAgICAgIDo6IGFucycsXG4gICAgICAgICAgICAgICAgICByZSApXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICB8IExpbmsgKG4sIGwpIC0+XG4gICAgICAgICAgICAgIGlmIExpc3QubWVtIG4gZG9uIHx8IChuID0gaCAmJiBpID4gbCkgdGhlblxuICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgZWxzZSBpZiBuID0gaCB8fCBMaXN0Lm1lbSBuIHJlIHRoZW5cbiAgICAgICAgICAgICAgICBpZiBmdWxsIHx8IGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBsKSApXG4gICAgICAgICAgICAgICAgICAgIDo6IGFucycsXG4gICAgICAgICAgICAgICAgICAgIHJlIClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRnJlc2ggKGgsIHJhd19maW5kX3R5IG5vZGVzX2J5X3R5cGUgaClcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgaSApLFxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZVxuICAgICAgICAgICAgICAgICAgICAgIChOYXZpZ2F0aW9uLkZyZXNoIChuLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIG4pLCBsKSApXG4gICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgbiA6OiByZSApKVxuICAgICAgICAgIChmaXJzdCwgb3V0LCB0KVxuICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBoIG5vZGVzKVxuICAgICAgaW5cbiAgICAgIGJ1aWxkX2ZvciAoZmlyc3QnLCBvdXQnKSAoaCA6OiBkb24pIHRvZG9cbiAgaW5cbiAgbWF0Y2ggcmF3X2ZpbmRfcm9vdCBub2Rlc19ieV90eXBlIHdpdGhcbiAgfCBOb25lIC0+IFtdICgqZW1wdHkgcGF0aCBmb3IgeDAqKVxuICB8IFNvbWUgKHgsIF8pIC0+XG4gICAgKCooYWdfc29ydCxhZ19pZCkqKVxuICAgIGJ1aWxkX2ZvciAodHJ1ZSwgW10pICgqd2lwKikgW10gKCphbHJlYWR5X2RvbmUqKSBbIHggXVxuKCp0b2RvKilcblxubGV0IHJlYyBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgciA9IGZ1bmN0aW9uXG4gIHwgW10sIF8gLT4gclxuICB8IF8gOjogXywgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKHggOjogcSBhcyBsKSwgeSA6OiBxJyAtPlxuICAgIGlmIHggPSB5IHRoZW4gKFxuICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHggeSByIHdpdGhcbiAgICAgIHwgU29tZSByJyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgcicgKHEsIHEnKVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZnN0cywgbHN0ID0gTGlzdF91dGlsLnBvcF9sYXN0IGwgaW5cbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBsc3QgeSByIHdpdGhcbiAgICAgIHwgU29tZSByJyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgcicgKGZzdHMsIHEnKVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIClcblxubGV0IG1pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRzdF9uYnQgcmVmX25idCA9XG4gIGxldCByZSA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHR5IHIgaWRzIC0+IHN1Yl9taW5pbWl6ZV9yZW5hbWluZyB+ZGVidWdfbW9kZSByIChpZHMsIHJlZl9uYnQuKHR5KSkpXG4gICAgcmUgZHN0X25idFxuXG5sZXQgbWluaW1pemUgfmRlYnVnX21vZGUgY2FuZF9uYnQgY2FuZF9ub2RlcyByZWZfbmJ0ID1cbiAgbGV0IHJlID0gbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgY2FuZF9uYnQgcmVmX25idCBpblxuICBsZXQgcmVfaW1nID0gUmVuYW1pbmcuaW1hZ2UgcmUgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPVxuICAgIEFycmF5Lm1hcCAoTGlzdC5maWx0ZXIgKGZ1biBhIC0+IE1vZHMuSW50U2V0Lm1lbSBhIHJlX2ltZykpIHJlZl9uYnRcbiAgaW5cbiAgbGV0IG5vZGVzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGlkIHNpdGVzIGFjYyAtPlxuICAgICAgICBsZXQgc2l0ZXMnID1cbiAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBpIC0+IExpbmsgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlIG4sIHMpLCBpXG4gICAgICAgICAgICAgIHwgKChVblNwZWMgfCBGcmVlKSwgXykgYXMgeCAtPiB4KVxuICAgICAgICAgICAgc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZSBpZCkgc2l0ZXMnIGFjYylcbiAgICAgIGNhbmRfbm9kZXMgTW9kcy5JbnRNYXAuZW1wdHlcbiAgaW5cbiAge1xuICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgbm9kZXM7XG4gICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gIH1cblxuKCogcmV0dXJucyBhIGxpc3Qgb2YgY2Mgd2hlcmUgZWFjaCBjYyBpcyBpbmNsdWRlZCBpbiBjYzEqKVxubGV0IGluZnMgfmRlYnVnX21vZGUgc2lncyBjYzEgY2MyID1cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPVxuICAgIHJlZiAocG90ZW50aWFsX3BhaXJpbmcgc2lncyBjYzEubm9kZXNfYnlfdHlwZSBjYzIubm9kZXNfYnlfdHlwZSlcbiAgaW5cbiAgbGV0IHJlYyBhdXggcmVuYW1lIG5vZGVzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IG5vZGVzXG4gICAgfCAoKG8sIHApIGFzIHBhaXIpIDo6IHRvZG9zIC0+XG4gICAgICBsZXQgKCkgPSBwb3NzaWJpbGl0aWVzIDo9IE1vZHMuSW50MlNldC5yZW1vdmUgcGFpciAhcG9zc2liaWxpdGllcyBpblxuICAgICAgbGV0IGxuazEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBvIGNjMS5ub2RlcyBpblxuICAgICAgbGV0ICh0b2RvcycsIHJlbicpLCBvdXRsID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0X21hcGlcbiAgICAgICAgICAoZnVuIGsgKCh0b2RvLCByZW4pIGFzIGFjYykgKGx5LCBpeSkgLT5cbiAgICAgICAgICAgIGxldCBseCwgaXggPSBsbmsxLihrKSBpblxuICAgICAgICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICAgICAgIHwgTGluayBfLCBGcmVlXG4gICAgICAgICAgICB8IEZyZWUsIExpbmsgX1xuICAgICAgICAgICAgfCBMaW5rIF8sIFVuU3BlY1xuICAgICAgICAgICAgfCBVblNwZWMsIExpbmsgX1xuICAgICAgICAgICAgfCBVblNwZWMsIEZyZWVcbiAgICAgICAgICAgIHwgRnJlZSwgVW5TcGVjXG4gICAgICAgICAgICB8IFVuU3BlYywgVW5TcGVjIC0+XG4gICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgfCBGcmVlLCBGcmVlIC0+XG4gICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICggRnJlZSxcbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgIHwgKExpbmsgKG4xLCBzMSkgYXMgeCksIExpbmsgKG4yLCBzMikgLT5cbiAgICAgICAgICAgICAgaWYgczEgPSBzMiB0aGVuXG4gICAgICAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIG4xIHJlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAgICAgKCAoaWYgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgcmVuIG4xID0gbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIFVuU3BlYyksXG4gICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIG4xIG4yIHJlbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICAgKCBVblNwZWMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgcicgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgZmluZF90eSBjYzEgbjEgPSBmaW5kX3R5IGNjMiBuMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKCAoKG4xLCBuMikgOjogdG9kbywgcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKCB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIC0xICkgKSlcbiAgICAgICAgICAodG9kb3MsIHJlbmFtZSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gcCBjYzIubm9kZXMpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYiAobCwgaSkgLT4gYiAmJiBsID0gVW5TcGVjICYmIGkgPCAwKSB0cnVlIG91dGxcbiAgICAgIHRoZW5cbiAgICAgICAgYXV4IHJlbicgbm9kZXMgdG9kb3MnXG4gICAgICBlbHNlXG4gICAgICAgIGF1eCByZW4nIChNb2RzLkludE1hcC5hZGQgbyBvdXRsIG5vZGVzKSB0b2RvcydcbiAgaW5cblxuICBsZXQgcmVjIGZvcl9vbmVfcm9vdCBhY2MgPVxuICAgIG1hdGNoIE1vZHMuSW50MlNldC5jaG9vc2UgIXBvc3NpYmlsaXRpZXMgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgKHJvb3QxLCByb290MikgLT5cbiAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgcm9vdDEgcm9vdDIgKFJlbmFtaW5nLmVtcHR5ICgpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICBsZXQgbm9kZXMgPSBhdXggciBNb2RzLkludE1hcC5lbXB0eSBbIHJvb3QxLCByb290MiBdIGluXG4gICAgICAgIGxldCBhY2MnID1cbiAgICAgICAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBub2RlcyB0aGVuXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBub2Rlc19ieV90eXBlID1cbiAgICAgICAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgICAgICAgKExpc3QuZmlsdGVyIChmdW4gYSAtPiBNb2RzLkludE1hcC5tZW0gYSBub2RlcykpXG4gICAgICAgICAgICAgICAgY2MxLm5vZGVzX2J5X3R5cGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtaW5pbWl6ZSB+ZGVidWdfbW9kZSBub2Rlc19ieV90eXBlIG5vZGVzIGNjMS5ub2Rlc19ieV90eXBlIDo6IGFjY1xuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgZm9yX29uZV9yb290IGFjYycpXG4gIGluXG4gIGZvcl9vbmVfcm9vdCBbXVxuXG4oKiByZW5hbWluZyBpcyBhIHRvdGFsIG1vcnBoaXNtIGZyb20gY2MxJyB0byBjYzI7IGNjMScgaXMgaW5jbHVkZWQgaW4gY2MxICopXG5sZXQgaW50ZXJzZWN0aW9uIHJlbmFtaW5nIGNjMSBjYzIgPVxuICBsZXQgbm9kZXMsIGltYWdlID1cbiAgICBSZW5hbWluZy5mb2xkXG4gICAgICAoZnVuIGkgaiAoKGFjY24sIGwpIGFzIGFjYykgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBjYzEubm9kZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBub2RlczEgLT5cbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBjYzIubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgbm9kZXMyIC0+XG4gICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgICAgICAgIChmdW4gayAobDIsIGkyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGwxLCBpMSA9IG5vZGVzMS4oaykgaW5cbiAgICAgICAgICAgICAgICAgICggKGlmIGwxID0gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjXG4gICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIGwyKSxcbiAgICAgICAgICAgICAgICAgICAgaWYgaTEgPSAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGkyICkpXG4gICAgICAgICAgICAgICAgbm9kZXMyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGogb3V0IGFjY24sIGogOjogbCkpXG4gICAgICByZW5hbWluZyAoTW9kcy5JbnRNYXAuZW1wdHksIFtdKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9XG4gICAgQXJyYXkubWFwIChMaXN0LmZpbHRlciAoZnVuIGEgLT4gTGlzdC5tZW0gYSBpbWFnZSkpIGNjMi5ub2Rlc19ieV90eXBlXG4gIGluXG4gIHtcbiAgICBub2Rlc19ieV90eXBlO1xuICAgIG5vZGVzO1xuICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICB9XG5cbnR5cGUgZXh0cmVtaXR5ID0gT3BlbiB8IENsb3NlZFxuXG5sZXQgZmV0Y2hfZXhpdF9zaXRlIF9zaWdzIHNpZCA9IHNpZCArIDFcblxubGV0IHJlYyBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKG5pZCwgc2lkKSBjb3VudCA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIG5pZCBub2RlcyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICBcInBlbmRpbmcgYm9uZHMgZW5jb3VudGVyZWQgd2hlbiBjb21wdXRpbmcgdGhlIGxlbmd0aCBvZiBhIGNoYWluIFxcXG4gICAgICAgKGNvdW50ZXJzKVwiXG4gIHwgU29tZSBhZyAtPlxuICAgIGxldCBvdGhlciA9IGZldGNoX2V4aXRfc2l0ZSBzaWdzIHNpZCBpblxuICAgIGxldCBlbCwgXyA9IGFnLihvdGhlcikgaW5cbiAgICAobWF0Y2ggZWwgd2l0aFxuICAgIHwgVW5TcGVjIC0+IGNvdW50LCBPcGVuXG4gICAgfCBGcmVlIC0+IGNvdW50LCBDbG9zZWRcbiAgICB8IExpbmsgKGRuLCBkaSkgLT4gY291bnRlcl92YWx1ZSBzaWdzIG5vZGVzIChkbiwgZGkpIChjb3VudCArIDEpKVxuXG5sZXQgY291bnRlcl92YWx1ZSBzaWdzIG1pbl92YWx1ZSBub2RlcyAobmlkLCBzaWQpID1cbiAgbGV0IGEsIGIgPSBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKG5pZCwgc2lkKSAwIGluXG4gIG1pbl92YWx1ZSArIGEsIGJcblxubGV0IGNvdW50ZXJfdmFsdWVfY2Mgc2lncyBjb3VudGVyX3NpZyBjYyAobmlkLCBzaWQpID1cbiAgbGV0IG1pbl92YWx1ZSA9IGNvdW50ZXJfc2lnLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluIGluXG4gIGxldCBtaW5fdmFsdWUgPVxuICAgIG1hdGNoIG1pbl92YWx1ZSB3aXRoXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSAoTm9uZSwgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIChTb21lIG1pbl92YWx1ZSwgXykgLT4gbWluX3ZhbHVlXG4gIGluXG4gIGxldCBub2RlcyA9IGNjLm5vZGVzIGluXG4gIGxldCBjb3VudCwgZXh0cmVtaXR5ID0gY291bnRlcl92YWx1ZSBzaWdzIG1pbl92YWx1ZSBub2RlcyAobmlkLCBzaWQpIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggZXh0cmVtaXR5IHdpdGhcbiAgICB8IE9wZW4gLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIFwicGVuZGluZyBib25kcyBlbmNvdW50ZXJlZCB3aGVuIGNvbXB1dGluZyB0aGUgbGVuZ3RoIG9mIGEgY2hhaW4gXFxcbiAgICAgICAgIChjb3VudGVycylcIlxuICAgIHwgQ2xvc2VkIC0+ICgpXG4gIGluXG4gIGNvdW50XG5cbmxldCBkb3Rjb21tYSBkb3RuZXQgPVxuICBpZiBkb3RuZXQgdGhlblxuICAgIGZ1biBmbXQgLT5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiLFwiXG4gIGVsc2VcbiAgICBQcC5zcGFjZVxuXG5sZXQgcHJpbnRfY2Mgfm5vQ291bnRlcnMgPyhkb3RuZXQgPSBmYWxzZSkgPyhmdWxsX3NwZWNpZXMgPSBmYWxzZSkgP3NpZ3NcbiAgICA/Y291bnRlcnNfaW5mbyA/Y2NfaWQgfndpdGhfaWQgZiBjYyA9XG4gIGxldCBwcmludF9pbnRmICgoYWdfaSwgYWdfdCkgYXMgYWcpIGxpbmtfaWRzIG5laWdoID1cbiAgICBzbmRcbiAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAoZnVuIHAgKG5vdF9lbXB0eSwgKChmcmVlLCBsaW5rX2lkcykgYXMgb3V0KSkgKGVsLCBzdCkgLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpZiBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRvdGNvbW1hIGRvdG5ldFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIGFnIHApXG4gICAgICAgICAgICAgICAgIHN0XG4gICAgICAgICAgICAgZWxzZSBpZiBlbCA8PiBVblNwZWMgdGhlblxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZG90Y29tbWEgZG90bmV0XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgICAgICAgICAgICAgcFxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICAgICAgIHwgVW5TcGVjIC0+XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIGZ1bGxfc3BlY2llcyB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgIG5vdF9lbXB0eSwgb3V0XG4gICAgICAgICAgIHwgRnJlZSAtPlxuICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiIGluXG4gICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgIHwgTGluayAoZHN0X2EsIGRzdF9wKSAtPlxuICAgICAgICAgICAgIGxldCBkc3RfdHkgPSBmaW5kX3R5IGNjIGRzdF9hIGluXG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgICAgICAgICBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGRzdF90eSAmJiBub3Qgbm9Db3VudGVyc1xuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgbWF0Y2ggc2lncywgY291bnRlcnNfaW5mbyB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgfCBTb21lIHNpZ3MsIFNvbWUgY291bnRlcnNfaW5mbyAtPlxuICAgICAgICAgICAgICAgICBsZXQgbWluX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWcgPVxuICAgICAgICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5nZXRfY291bnRlcl9zaWcgc2lncyBjb3VudGVyc19pbmZvIGFnX3QgcFxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY291bnRlcl9zaWcuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKE5vbmUsIF8pIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBtaW5fdmFsdWUsIF8pIC0+IG1pbl92YWx1ZVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBsZXQgY291bnRlciwga2luZCA9XG4gICAgICAgICAgICAgICAgICAgY291bnRlcl92YWx1ZSBzaWdzIG1pbl92YWx1ZSBjYy5ub2RlcyAoZHN0X2EsIGRzdF9wKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JXMlZH1cIlxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBDbG9zZWQgLT4gXCI9XCJcbiAgICAgICAgICAgICAgICAgICAgIHwgT3BlbiAtPiBcIj49XCIpXG4gICAgICAgICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICBsZXQgaSwgb3V0JyA9XG4gICAgICAgICAgICAgICAgIG1hdGNoIE1vZHMuSW50Mk1hcC5maW5kX29wdGlvbiAoZHN0X2EsIGRzdF9wKSBsaW5rX2lkcyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU29tZSB4IC0+IHgsIG91dFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBmcmVlLCAoc3VjYyBmcmVlLCBNb2RzLkludDJNYXAuYWRkIChhZ19pLCBwKSBmcmVlIGxpbmtfaWRzKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJbJWldXCIgaSBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0J1xuICAgICAgICAgICAgICkpXG4gICAgICAgICAoZmFsc2UsIGxpbmtfaWRzKSBuZWlnaClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBjY19pZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGNjX2lkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvKmNjJWkqL0AgXCIgY2NfaWRcbiAgaW5cbiAgbGV0IF8sIF8gPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4geCBlbCAobm90X2VtcHR5LCBsaW5rX2lkcykgLT5cbiAgICAgICAgbGV0IGFnX3ggPSB4LCBmaW5kX3R5IGNjIHggaW5cbiAgICAgICAgaWZcbiAgICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICAgICAgICAobm90IChTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIChzbmQgYWdfeCkpKSB8fCBub0NvdW50ZXJzXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXRAWzxoPiVhKFwiXG4gICAgICAgICAgICAgIChpZiBub3RfZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICBpZiBkb3RuZXQgdGhlblxuICAgICAgICAgICAgICAgICAgIGZ1biBmbXQgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLlwiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBQcC5jb21tYVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkKVxuICAgICAgICAgICAgICBhZ194XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3V0ID0gcHJpbnRfaW50ZiBhZ194IGxpbmtfaWRzIGVsIGluXG4gICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIilAXVwiIGluXG4gICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIG5vdF9lbXB0eSwgbGlua19pZHMpXG4gICAgICBjYy5ub2Rlc1xuICAgICAgKGZhbHNlLCAoMSwgTW9kcy5JbnQyTWFwLmVtcHR5KSlcbiAgaW5cbiAgKClcblxubGV0IHByaW50X2NjX2FzX2lkIHNpZ3MgY291bnRlcnNfaW5mbyBmIGNjID1cbiAgbGV0IHByaW50X2ludGYgKChhZ19pLCBhZ190KSBhcyBhZykgbGlua19pZHMgbmVpZ2ggPVxuICAgIHNuZFxuICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgIChmdW4gcCAobm90X2VtcHR5LCAoKGZyZWUsIGxpbmtfaWRzKSBhcyBvdXQpKSAoZWwsIHN0KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIGlmIGVsIDw+IFVuU3BlYyB8fCBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfXCJcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlIH5zaWdzIGFnKVxuICAgICAgICAgICAgICAgICBwXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifiVhXCIgKEFnZW50LnByaW50X3Jhd19pbnRlcm5hbCB+c2lncyBhZyBwKSBzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICAgICAgIHwgVW5TcGVjIC0+IG5vdF9lbXB0eSB8fCBzdCA+PSAwLCBvdXRcbiAgICAgICAgICAgfCBGcmVlIC0+IHRydWUsIG91dFxuICAgICAgICAgICB8IExpbmsgKGRzdF9hLCBkc3RfcCkgLT5cbiAgICAgICAgICAgICBsZXQgZHN0X3R5ID0gZmluZF90eSBjYyBkc3RfYSBpblxuICAgICAgICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgZHN0X3R5IHRoZW4gKFxuICAgICAgICAgICAgICAgbGV0IG1pbl92YWx1ZSA9XG4gICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZyA9XG4gICAgICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5nZXRfY291bnRlcl9zaWcgc2lncyBjb3VudGVyc19pbmZvIGFnX3QgcFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyX3NpZy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBTb21lIChOb25lLCBfKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIG1pbl92YWx1ZSwgXykgLT4gbWluX3ZhbHVlXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIsIGV4dHJlbWl0eSA9XG4gICAgICAgICAgICAgICAgIGNvdW50ZXJfdmFsdWUgc2lncyBtaW5fdmFsdWUgY2Mubm9kZXMgKGRzdF9hLCBkc3RfcClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBleHRyZW1pdHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9wZW4gLT4gZmFpbHdpdGggXCJib25kcyBzaG91bGQgbm90IGJlIG9wZW5lZFwiXG4gICAgICAgICAgICAgICAgIHwgQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn4rJWRcIiBjb3VudGVyIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IGksIG91dCcgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3RfcCkgbGlua19pZHMgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBvdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgZnJlZSwgKHN1Y2MgZnJlZSwgTW9kcy5JbnQyTWFwLmFkZCAoYWdfaSwgcCkgZnJlZSBsaW5rX2lkcylcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifiVpXCIgaSBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0J1xuICAgICAgICAgICAgICkpXG4gICAgICAgICAoZmFsc2UsIGxpbmtfaWRzKSBuZWlnaClcbiAgaW5cbiAgbGV0IF8sIF8gPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4geCBlbCAobm90X2VtcHR5LCBsaW5rX2lkcykgLT5cbiAgICAgICAgbGV0IGFnX3ggPSB4LCBmaW5kX3R5IGNjIHggaW5cbiAgICAgICAgaWYgbm90IChTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIChzbmQgYWdfeCkpIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXRAWzxoPiVhX19cIlxuICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9fXCJcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgIChBZ2VudC5wcmludCB+c2lncyB+d2l0aF9pZDpmYWxzZSlcbiAgICAgICAgICAgICAgYWdfeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IHByaW50X2ludGYgYWdfeCBsaW5rX2lkcyBlbCBpblxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXVwiIGluXG4gICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIG5vdF9lbXB0eSwgbGlua19pZHMpXG4gICAgICBjYy5ub2Rlc1xuICAgICAgKGZhbHNlLCAoMSwgTW9kcy5JbnQyTWFwLmVtcHR5KSlcbiAgaW5cbiAgKClcblxubGV0IHRvX3lvanNvbiBjYyA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLm1heF9rZXkgY2Mubm9kZXMgd2l0aFxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIG0gLT5cbiAgICBsZXQgcyA9IHN1Y2MgbSBpblxuICAgIGxldCBzb3J0cyA9IEFycmF5Lm1ha2UgcyBOb25lIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gdHkgLT4gTGlzdC5pdGVyIChmdW4gaWQgLT4gc29ydHMuKGlkKSA8LSBTb21lIHR5KSlcbiAgICAgICAgY2Mubm9kZXNfYnlfdHlwZVxuICAgIGluXG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJzb3J0c1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIHNvcnRzIFtdKSApO1xuICAgICAgICAoIFwibm9kZXNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAoZnVuIGFjYyBpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGNjLm5vZGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGBOdWxsXG4gICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChsLCBzKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZyZWUgLT4gYEJvb2wgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQXNzb2MgWyBcIm5vZGVcIiwgYEludCBuOyBcInNpdGVcIiwgYEludCBzIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVW5TcGVjIC0+IGBCb29sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzIDwgMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBJbnQgcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICBhIFtdKSlcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgW10gcykgKTtcbiAgICAgIF1cblxubGV0IG9mX3lvanNvbiBzaWdfZGVjbCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwic29ydHNcIiwgYExpc3Qgcyk7IChcIm5vZGVzXCIsIGBMaXN0IG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJub2Rlc1wiLCBgTGlzdCBuKTsgKFwic29ydHNcIiwgYExpc3QgcykgXSAtPlxuICAgIGxldCBfLCBub2RlcyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChpLCBhY2MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTnVsbCAtPiBzdWNjIGksIGFjY1xuICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgKCBzdWNjIGksXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpXG4gICAgICAgICAgICAgICAgKFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYEJvb2wgYjsgYE51bGwgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIC0xIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGBBc3NvYyBbIChcIm5vZGVcIiwgYEludCBuKTsgKFwic2l0ZVwiLCBgSW50IHMpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFzc29jIFsgKFwic2l0ZVwiLCBgSW50IHMpOyAoXCJub2RlXCIsIGBJbnQgbikgXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYE51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMaW5rIChuLCBzKSwgLTFcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3QgWyBgQm9vbCBiOyBgSW50IHMgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHMgKVxuICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggYEFzc29jIFsgKFwibm9kZVwiLCBgSW50IG4pOyAoXCJzaXRlXCIsIGBJbnQgcykgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQXNzb2MgWyAoXCJzaXRlXCIsIGBJbnQgcyk7IChcIm5vZGVcIiwgYEludCBuKSBdICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgSW50IHN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTGluayAobiwgcyksIHN0XG4gICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBub2RlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICAgIGFjYyApXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbm9kZSBsaW5rc1wiLCB4KSkpXG4gICAgICAgICgwLCBNb2RzLkludE1hcC5lbXB0eSkgblxuICAgIGluXG4gICAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdfZGVjbCkgW10gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyaVxuICAgICAgICAoZnVuIGkgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgfCBgSW50IHR5IC0+IG5vZGVzX2J5X3R5cGUuKHR5KSA8LSBpIDo6IG5vZGVzX2J5X3R5cGUuKHR5KVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBub2RlIHR5cGVcIiwgeCkpKVxuICAgICAgICBzXG4gICAgaW5cbiAgICB7XG4gICAgICBub2Rlc19ieV90eXBlO1xuICAgICAgbm9kZXM7XG4gICAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSBub2RlcztcbiAgICB9XG4gIHwgYE51bGwgLT4gZW1wdHlfY2Mgc2lnX2RlY2xcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHBhdHRlcm5cIiwgeCkpXG5cbmxldCBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIHJlc2VydmVkX2lkcyBmcmVlX2lkIGluajFfdG9fMiBjYzEgY2MyID1cbiAgbGV0IGltZyA9IFJlbmFtaW5nLmltYWdlIGluajFfdG9fMiBpblxuICBsZXQgYXZhaWxhYmxlX2lkcyA9XG4gICAgQXJyYXkubWFwXG4gICAgICAoTGlzdC5maWx0ZXIgKGZ1biBpZCAtPiBub3QgKE1vZHMuSW50U2V0Lm1lbSBpZCBpbWcpKSlcbiAgICAgIHJlc2VydmVkX2lkc1xuICBpblxuICBsZXQgdXNlZF9pZHMgPVxuICAgIEFycmF5Lm1hcFxuICAgICAgKExpc3RfdXRpbC5tYXBfb3B0aW9uIChmdW4gaWQgLT5cbiAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIGlkIGluajFfdG9fMiB0aGVuXG4gICAgICAgICAgICAgU29tZSAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMV90b18yIGlkKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTm9uZSkpXG4gICAgICBjYzEubm9kZXNfYnlfdHlwZVxuICBpblxuICBsZXQgYXZhaWxhYmxlX2luX2NjMSA9XG4gICAgQXJyYXkubWFwaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoTGlzdC5tZW0geCBjYzEubm9kZXNfYnlfdHlwZS4oaSkpKSBsKVxuICAgICAgcmVzZXJ2ZWRfaWRzXG4gIGluXG4gIGxldCBmcmVlX2lkX2Zvcl9jYzEgPSByZWYgZnJlZV9pZCBpblxuXG4gIGxldCBnZXRfY2MyIGogKCgoaW5qMSwgZnJlZV9pZCksIGluajIsICh0b2RvczEsIHRvZG9zMikpIGFzIHBhY2spID1cbiAgICBpZiBSZW5hbWluZy5tZW0gaiBpbmoyIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajIgaiwgcGFja1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHR5ID0gZmluZF90eSBjYzIgaiBpblxuICAgICAgbGV0IGltZywgZnJlZV9pZCcgPVxuICAgICAgICBtYXRjaCBhdmFpbGFibGVfaWRzLih0eSkgd2l0aFxuICAgICAgICB8IFtdIC0+IGZyZWVfaWQsIHN1Y2MgZnJlZV9pZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCAoKSA9IGF2YWlsYWJsZV9pZHMuKHR5KSA8LSB0IGluXG4gICAgICAgICAgaCwgZnJlZV9pZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHVzZWRfaWRzLih0eSkgPC0gaW1nIDo6IHVzZWRfaWRzLih0eSkgaW5cbiAgICAgIGxldCBvID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2luX2NjMS4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCB4ID0gIWZyZWVfaWRfZm9yX2NjMSBpblxuICAgICAgICAgIGxldCAoKSA9IGluY3IgZnJlZV9pZF9mb3JfY2MxIGluXG4gICAgICAgICAgeFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCAoKSA9IGF2YWlsYWJsZV9pbl9jYzEuKHR5KSA8LSB0IGluXG4gICAgICAgICAgaFxuICAgICAgaW5cbiAgICAgICggaW1nLFxuICAgICAgICAoICggKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBvIGltZyBpbmoxIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgICAgZnJlZV9pZCcgKSxcbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGogaW1nIGluajIgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAodG9kb3MxLCAoaiwgaW1nKSA6OiB0b2RvczIpICkgKVxuICAgIClcbiAgaW5cblxuICBsZXQgZ2V0X2NjMSBpICgoKGluajEsIGZyZWVfaWQpLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKSBhcyBwYWNrKSA9XG4gICAgaWYgUmVuYW1pbmcubWVtIGkgaW5qMSB0aGVuXG4gICAgICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoxIGksIHBhY2tcbiAgICBlbHNlIChcbiAgICAgIGxldCB0eSA9IGZpbmRfdHkgY2MxIGkgaW5cbiAgICAgIGxldCBpbWcsIGZyZWVfaWQnID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2lkcy4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmcmVlX2lkLCBzdWNjIGZyZWVfaWRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaWRzLih0eSkgPC0gdCBpblxuICAgICAgICAgIGgsIGZyZWVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB1c2VkX2lkcy4odHkpIDwtIGltZyA6OiB1c2VkX2lkcy4odHkpIGluXG4gICAgICAoIGltZyxcbiAgICAgICAgKCAoIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaSBpbWcgaW5qMSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAgIGZyZWVfaWQnICksXG4gICAgICAgICAgaW5qMixcbiAgICAgICAgICAoKGksIGltZykgOjogdG9kb3MxLCB0b2RvczIpICkgKVxuICAgIClcbiAgaW5cbiAgbGV0IHBhY2snLCBub2RlcyA9XG4gICAgbGV0IHJlYyBnbHVlIHBhY2sgaW5qMiBub2RlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdLCBbXSAtPiBwYWNrLCBub2Rlc1xuICAgICAgfCBbXSwgKGksIGopIDo6IHRvZG9zMiAtPlxuICAgICAgICBsZXQgbm9kZXNpID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaSBjYzIubm9kZXMgaW5cbiAgICAgICAgbGV0IG5vZGVzbyA9IEFycmF5LmNvcHkgbm9kZXNpIGluXG4gICAgICAgIGxldCBwYWNrJywgaW5qMicsIHRvZG9zJyA9XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBrIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICB8IChVblNwZWMgfCBGcmVlKSwgXyAtPiBhY2NcbiAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgbicsIGFjYycgPSBnZXRfY2MyIG4gYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0IGluXG4gICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICAgIChwYWNrLCBpbmoyLCAoW10sIHRvZG9zMikpXG4gICAgICAgICAgICBub2Rlc2lcbiAgICAgICAgaW5cbiAgICAgICAgZ2x1ZSBwYWNrJyBpbmoyJyAoTW9kcy5JbnRNYXAuYWRkIGogbm9kZXNvIG5vZGVzKSB0b2RvcydcbiAgICAgIHwgKGksIGopIDo6IHRvZG9zMSwgdG9kb3MyIC0+XG4gICAgICAgIGxldCBub2Rlc2kgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBpIGNjMS5ub2RlcyBpblxuICAgICAgICBsZXQgbm9kZXNvID0gQXJyYXkuY29weSBub2Rlc2kgaW5cbiAgICAgICAgbGV0IHBhY2snLCBpbmoyJywgdG9kb3MnID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBqIGNjMi5ub2RlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgIChmdW4gayBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IChVblNwZWMgfCBGcmVlKSwgXyAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMSBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0IGluXG4gICAgICAgICAgICAgICAgICBhY2MnKVxuICAgICAgICAgICAgICAocGFjaywgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSlcbiAgICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgICAgfCBTb21lIG5vZGVzaiAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIGsgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGcmVlLCBfIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgXywgc3RqID0gbm9kZXNqLihrKSBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgc3RqIDw+IC0xIHRoZW4gbm9kZXNvLihrKSA8LSBGcmVlLCBzdGogaW5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwgTGluayAobiwgcyksIHN0aSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHN0aiA9IG5vZGVzai4oaykgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzdG8gPVxuICAgICAgICAgICAgICAgICAgICBpZiBzdGogPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgc3RpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMSBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0byBpblxuICAgICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBzdGkgLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBub2Rlc2ouKGspIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBzdGogLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgc3RqIDw+IC0xIHRoZW4gbm9kZXNvLihrKSA8LSBVblNwZWMsIHN0aiBpblxuICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgIHwgRnJlZSwgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgbm9kZXNvLihrKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICAgKCBGcmVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGogPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdGogLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0byA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbicsIGFjYycgPSBnZXRfY2MyIG4gYWNjIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdG8gaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjJykpXG4gICAgICAgICAgICAgIChwYWNrLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKVxuICAgICAgICAgICAgICBub2Rlc2lcbiAgICAgICAgaW5cbiAgICAgICAgZ2x1ZSBwYWNrJyBpbmoyJyAoTW9kcy5JbnRNYXAuYWRkIGogbm9kZXNvIG5vZGVzKSB0b2RvcydcbiAgICBpblxuICAgIGdsdWUgKGluajFfdG9fMiwgZnJlZV9pZClcbiAgICAgIChSZW5hbWluZy5pZGVudGl0eSAoTW9kcy5JbnRTZXQuZWxlbWVudHMgaW1nKSlcbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAoUmVuYW1pbmcudG9fbGlzdCBpbmoxX3RvXzIsIFtdKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9IEFycmF5Lm1hcCAoTGlzdC5zb3J0IE1vZHMuaW50X2NvbXBhcmUpIHVzZWRfaWRzIGluXG4gIGxldCAoKSA9XG4gICAgQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSB4IC0+XG4gICAgICAgIHJlc2VydmVkX2lkcy4oaSkgPC1cbiAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBNb2RzLmludF9jb21wYXJlIG5vZGVzX2J5X3R5cGUuKGkpIHgpXG4gICAgICBhdmFpbGFibGVfaWRzXG4gIGluXG4gICggcGFjaycsXG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gICAgfSApXG5cbmxldCBidWlsZF9uYXZpZ2F0aW9uX2JldHdlZW4gfmRlYnVnX21vZGUgaW5qX2RfdG9fbyBjY19vIGNjX2QgPVxuICBsZXQgcmVjIGhhbmRsZV9saW5rcyBkaXNjb3ZlcmVkIG5leHRfcm91bmQgcmVjb2duIGludGVybiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgbmV4dF9yb3VuZCA9IFtdIHRoZW5cbiAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHJlY29nbiBpbnRlcm5cbiAgICAgIGVsc2VcbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgW10gcmVjb2duIGludGVybiBuZXh0X3JvdW5kXG4gICAgfCAoKChpLCBqLCBzKSwgKG4nLCBzJykpIGFzIGgpIDo6IHRvZG9zIC0+XG4gICAgICBsZXQgbiA9IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGlual9kX3RvX28gbicgaW5cbiAgICAgIChtYXRjaCBNb2RzLkludFNldC5tZW0gaiBkaXNjb3ZlcmVkLCBNb2RzLkludFNldC5tZW0gbicgZGlzY292ZXJlZCB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCAoaCA6OiBuZXh0X3JvdW5kKSByZWNvZ24gaW50ZXJuIHRvZG9zXG4gICAgICB8IHRydWUsIHRydWUgLT5cbiAgICAgICAgbGV0IGludGVybicgPVxuICAgICAgICAgICggKE5hdmlnYXRpb24uRXhpc3RpbmcgaSwgcyksXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBzJykgKVxuICAgICAgICAgIDo6IGludGVyblxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCBuZXh0X3JvdW5kIHJlY29nbiBpbnRlcm4nIHRvZG9zXG4gICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgIGxldCByZWNvZ24nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLFxuICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKG4sIGZpbmRfdHkgY2NfZCBuJyksIHMnKSApXG4gICAgICAgICAgOjogcmVjb2duXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9saW5rc1xuICAgICAgICAgIChNb2RzLkludFNldC5hZGQgbicgZGlzY292ZXJlZClcbiAgICAgICAgICBuZXh0X3JvdW5kIHJlY29nbicgaW50ZXJuIHRvZG9zXG4gICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgIGxldCByZWNvZ24nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIG4sIHMnKSxcbiAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChpLCBmaW5kX3R5IGNjX2QgaiksIHMpIClcbiAgICAgICAgICA6OiByZWNvZ25cbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlX2xpbmtzXG4gICAgICAgICAgKE1vZHMuSW50U2V0LmFkZCBqIGRpc2NvdmVyZWQpXG4gICAgICAgICAgbmV4dF9yb3VuZCByZWNvZ24nIGludGVybiB0b2RvcylcbiAgaW5cbiAgbGV0IGRpc2NvdiwgYWxsX2xpbmtzLCBpbnRlcm4gPVxuICAgIFJlbmFtaW5nLmZvbGRcbiAgICAgIChmdW4gaiBpIChkaXNjLCBsaW5rcywgaW50ZXIpIC0+XG4gICAgICAgIGxldCBub2Rlc2QgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBqIGNjX2Qubm9kZXMgaW5cbiAgICAgICAgbGV0IGRpc2MnLCBub2Rlc28gPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgY2Nfby5ub2RlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRpc2MsIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBub2Rlc2QpIChVblNwZWMsIC0xKVxuICAgICAgICAgIHwgU29tZSBub2Rlc28gLT4gTW9kcy5JbnRTZXQuYWRkIGogZGlzYywgbm9kZXNvXG4gICAgICAgIGluXG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAgKGZ1biBzICgoZGlzLCBsaSwgaW50KSBhcyBhY2MpIChvbCwgb3MpIChkbCwgZHMpIC0+XG4gICAgICAgICAgICBsZXQgKChfLCBfLCBpbnQnKSBhcyBhY2MnKSA9XG4gICAgICAgICAgICAgIGlmIG9zID0gLTEgJiYgZHMgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICggZGlzLFxuICAgICAgICAgICAgICAgICAgbGksXG4gICAgICAgICAgICAgICAgICAoKE5hdmlnYXRpb24uRXhpc3RpbmcgaSwgcyksIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBkcykgOjogaW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgb2wgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIGRsIHdpdGhcbiAgICAgICAgICAgICAgfCBVblNwZWMgLT4gYWNjJ1xuICAgICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgICAoIGRpcyxcbiAgICAgICAgICAgICAgICAgIGxpLFxuICAgICAgICAgICAgICAgICAgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLCBOYXZpZ2F0aW9uLlRvTm90aGluZykgOjogaW50JyApXG4gICAgICAgICAgICAgIHwgTGluayAobiwgcycpIC0+XG4gICAgICAgICAgICAgICAgaWYgbiA+ICgqbGEqKSBqIHx8IChuID0gaiAmJiBzID4gcycpIHRoZW5cbiAgICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBkaXMsICgoaSwgaiwgcyksIChuLCBzJykpIDo6IGxpLCBpbnQnXG4gICAgICAgICAgICApKVxuICAgICAgICAgIChkaXNjJywgbGlua3MsIGludGVyKSBub2Rlc28gbm9kZXNkKVxuICAgICAgaW5qX2RfdG9fb1xuICAgICAgKE1vZHMuSW50U2V0LmVtcHR5LCBbXSwgW10pXG4gIGluXG4gIGhhbmRsZV9saW5rcyBkaXNjb3YgW10gW10gaW50ZXJuIGFsbF9saW5rc1xuXG5tb2R1bGUgRW52IDogc2lnXG4gIHR5cGUgdHJhbnNpdGlvbiA9IHtcbiAgICBuZXh0OiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udDtcbiAgICBkc3Q6IGlkOyAoKiBpZCBvZiBjYyBhbmQgYWxzbyBhZGRyZXNzIGluIHRoZSBFbnYuZG9tYWluIG1hcCopXG4gICAgaW5qOiBSZW5hbWluZy50OyAoKiBGcm9tIGRzdCBUbyAoXCJ0aGlzXCIgY2MgKyBleHRyYSBlZGdlKSAqKVxuICB9XG5cbiAgdHlwZSBwb2ludCA9IHtcbiAgICBjb250ZW50OiBjYztcbiAgICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG4gICAgZGVwczogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgbXV0YWJsZSBzb25zOiB0cmFuc2l0aW9uIGxpc3Q7XG4gIH1cblxuICB2YWwgY29udGVudCA6IHBvaW50IC0+IGNjXG4gIHZhbCByb290cyA6IHBvaW50IC0+IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uXG4gIHZhbCBkZXBzIDogcG9pbnQgLT4gT3BlcmF0b3IuRGVwU2V0LnRcbiAgdmFsIHNvbnMgOiBwb2ludCAtPiB0cmFuc2l0aW9uIGxpc3RcblxuICB0eXBlIHQgPSB7XG4gICAgc2lnX2RlY2w6IFNpZ25hdHVyZS5zO1xuICAgIGNvdW50ZXJzX2luZm86IENvdW50ZXJzX2luZm8udDtcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBtYXhfb2JzOiBpbnQ7XG4gICAgZG9tYWluOiBwb2ludCBhcnJheTtcbiAgICBlbGVtZW50YXJpZXM6IChOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uc3RlcCAqIGlkKSBsaXN0IGFycmF5IGFycmF5O1xuICAgIHNpbmdsZV9hZ2VudF9wb2ludHM6IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb24gYXJyYXk7XG4gIH1cblxuICB2YWwgZ2V0IDogdCAtPiBpZCAtPiBwb2ludFxuICB2YWwgZ2V0X3NpbmdsZV9hZ2VudCA6IGludCAtPiB0IC0+IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb25cbiAgdmFsIHRvX25hdmlnYXRpb24gOiB0IC0+IGlkIC0+IE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi50XG5cbiAgdmFsIGdldF9lbGVtZW50YXJ5IDpcbiAgICBkZWJ1Z19tb2RlOmJvb2wgLT5cbiAgICB0IC0+XG4gICAgQWdlbnQudCAtPlxuICAgIGludCAtPlxuICAgIE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5hcnJvdyAtPlxuICAgIChpZCAqIHBvaW50ICogUmVuYW1pbmcudCkgb3B0aW9uXG5cbiAgdmFsIHNpZ25hdHVyZXMgOiB0IC0+IFNpZ25hdHVyZS5zXG4gIHZhbCBjb3VudGVyc19pbmZvIDogdCAtPiBDb3VudGVyc19pbmZvLnRcbiAgdmFsIG5ld19vYnNfbWFwIDogdCAtPiAoaWQgLT4gJ2EpIC0+ICdhIE9ic01hcC50XG4gIHZhbCBwcmludCA6IG5vQ291bnRlcnM6Ym9vbCAtPiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9feW9qc29uIDogdCAtPiBZb2pzb24uQmFzaWMudFxuICB2YWwgb2ZfeW9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdHJhbnNpdGlvbiA9IHtcbiAgICBuZXh0OiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udDtcbiAgICBkc3Q6IGlkOyAoKiBpZCBvZiBjYyBhbmQgYWxzbyBhZGRyZXNzIGluIHRoZSBFbnYuZG9tYWluIG1hcCopXG4gICAgaW5qOiBSZW5hbWluZy50OyAoKiBGcm9tIGRzdCBUbyAoXCJ0aGlzXCIgY2MgKyBleHRyYSBlZGdlKSAqKVxuICB9XG5cbiAgdHlwZSBwb2ludCA9IHtcbiAgICBjb250ZW50OiBjYztcbiAgICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG4gICAgZGVwczogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgbXV0YWJsZSBzb25zOiB0cmFuc2l0aW9uIGxpc3Q7XG4gIH1cblxuICBsZXQgY29udGVudCBwID0gcC5jb250ZW50XG4gIGxldCByb290cyBwID0gcC5yb290c1xuICBsZXQgZGVwcyBwID0gcC5kZXBzXG4gIGxldCBzb25zIHAgPSBwLnNvbnNcblxuICB0eXBlIHQgPSB7XG4gICAgc2lnX2RlY2w6IFNpZ25hdHVyZS5zO1xuICAgIGNvdW50ZXJzX2luZm86IENvdW50ZXJzX2luZm8udDtcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBtYXhfb2JzOiBpbnQ7XG4gICAgZG9tYWluOiBwb2ludCBhcnJheTtcbiAgICBlbGVtZW50YXJpZXM6IChOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uc3RlcCAqIGlkKSBsaXN0IGFycmF5IGFycmF5O1xuICAgIHNpbmdsZV9hZ2VudF9wb2ludHM6IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb24gYXJyYXk7XG4gIH1cblxuICBsZXQgc2lnbmF0dXJlcyBlbnYgPSBlbnYuc2lnX2RlY2xcbiAgbGV0IGNvdW50ZXJzX2luZm8gZW52ID0gZW52LmNvdW50ZXJzX2luZm9cblxuICBsZXQgcHJpbnQgfm5vQ291bnRlcnMgZiBlbnYgPVxuICAgIGxldCBwcF9wb2ludCBwX2lkIGYgcCA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+QFs8aD4lYUBdQCAldC0+IEBbKCVhKUBdQF1cIlxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBwcmludF9jYyB+bm9Db3VudGVycyB+c2lnczplbnYuc2lnX2RlY2xcbiAgICAgICAgICAgIH5jb3VudGVyc19pbmZvOmVudi5jb3VudGVyc19pbmZvIH5jY19pZDpwX2lkIH53aXRoX2lkOnRydWUgeClcbiAgICAgICAgcC5jb250ZW50XG4gICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgIGlmIHAucm9vdHMgPD4gTm9uZSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFtbJWFdQF1AIFwiXG4gICAgICAgICAgICAgIChQcC5zZXQgT3BlcmF0b3IuRGVwU2V0LmVsZW1lbnRzIFBwLnNwYWNlIE9wZXJhdG9yLnByaW50X3Jldl9kZXApXG4gICAgICAgICAgICAgIHAuZGVwcylcbiAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIHMgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSglYSlAICVpQF1cIlxuICAgICAgICAgICAgICAgKE5hdmlnYXRpb24ucHJpbnQgZW52LnNpZ19kZWNsIChmaW5kX3R5IHAuY29udGVudCkpXG4gICAgICAgICAgICAgICBzLm5leHQgUmVuYW1pbmcucHJpbnQgcy5pbmogcy5kc3QpKVxuICAgICAgICBwLnNvbnNcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIiAoUHAuYXJyYXkgUHAuc3BhY2UgcHBfcG9pbnQpIGVudi5kb21haW5cblxuICBsZXQgZ2V0X3NpbmdsZV9hZ2VudCB0eSBlbnYgPSBlbnYuc2luZ2xlX2FnZW50X3BvaW50cy4odHkpXG4gIGxldCBnZXQgZW52IGNjX2lkID0gZW52LmRvbWFpbi4oY2NfaWQpXG5cbiAgbGV0IHRvX25hdmlnYXRpb24gZW52IGlkID1cbiAgICBsZXQgY2MgPSAoZ2V0IGVudiBpZCkuY29udGVudCBpblxuICAgIHJhd190b19uYXZpZ2F0aW9uIHRydWUgY2Mubm9kZXNfYnlfdHlwZSBjYy5ub2Rlc1xuXG4gIGxldCB0cmFuc2l0aW9uX3RvX3lvanNvbiB0ID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJkc3RcIiwgYEludCB0LmRzdDtcbiAgICAgICAgXCJpbmpcIiwgUmVuYW1pbmcudG9feW9qc29uIHQuaW5qO1xuICAgICAgICBcIm5hdlwiLCBOYXZpZ2F0aW9uLnRvX3lvanNvbiB0Lm5leHQ7XG4gICAgICBdXG5cbiAgbGV0IHRyYW5zaXRpb25fb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcImRzdFwiLCBgSW50IGRzdCk7IChcImlualwiLCByKTsgKFwibmF2XCIsIG4pIF1cbiAgICB8IGBBc3NvYyBbIChcImRzdFwiLCBgSW50IGRzdCk7IChcIm5hdlwiLCBuKTsgKFwiaW5qXCIsIHIpIF1cbiAgICB8IGBBc3NvYyBbIChcImlualwiLCByKTsgKFwibmF2XCIsIG4pOyAoXCJkc3RcIiwgYEludCBkc3QpIF1cbiAgICB8IGBBc3NvYyBbIChcIm5hdlwiLCBuKTsgKFwiaW5qXCIsIHIpOyAoXCJkc3RcIiwgYEludCBkc3QpIF1cbiAgICB8IGBBc3NvYyBbIChcImlualwiLCByKTsgKFwiZHN0XCIsIGBJbnQgZHN0KTsgKFwibmF2XCIsIG4pIF1cbiAgICB8IGBBc3NvYyBbIChcIm5hdlwiLCBuKTsgKFwiZHN0XCIsIGBJbnQgZHN0KTsgKFwiaW5qXCIsIHIpIF0gLT5cbiAgICAgIHsgZHN0OyBpbmogPSBSZW5hbWluZy5vZl95b2pzb24gcjsgbmV4dCA9IE5hdmlnYXRpb24ub2ZfeW9qc29uIG4gfVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgdHJhbnNpdGlvblwiLCB4KSlcblxuICBsZXQgcG9pbnRfdG9feW9qc29uIHAgPVxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImNvbnRlbnRcIiwgdG9feW9qc29uIHAuY29udGVudDtcbiAgICAgICAgKCBcInJvb3RzXCIsXG4gICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAoZnVuIChpZHMsIHR5KSAtPlxuICAgICAgICAgICAgICBgTGlzdCBbIGBMaXN0IChMaXN0Lm1hcCBKc29uVXRpbC5vZl9pbnQgaWRzKTsgYEludCB0eSBdKVxuICAgICAgICAgICAgcC5yb290cyApO1xuICAgICAgICBcImRlcHNcIiwgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvbiBwLmRlcHM7XG4gICAgICAgIFwic29uc1wiLCBgTGlzdCAoTGlzdC5tYXAgdHJhbnNpdGlvbl90b195b2pzb24gcC5zb25zKTtcbiAgICAgIF1cblxuICBsZXQgcG9pbnRfb2ZfeW9qc29uIHNpZ19kZWNsID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNCAtPlxuICAgICAgKHRyeVxuICAgICAgICAge1xuICAgICAgICAgICBjb250ZW50ID0gb2ZfeW9qc29uIHNpZ19kZWNsIChMaXN0LmFzc29jIFwiY29udGVudFwiIGwpO1xuICAgICAgICAgICByb290cyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJyb290c1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYE51bGwgLT4gTm9uZVxuICAgICAgICAgICAgIHwgYExpc3QgWyBgTGlzdCBpZHM7IGBJbnQgdHkgXSAtPlxuICAgICAgICAgICAgICAgU29tZSAoTGlzdC5tYXAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IGlkcywgdHkpXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGRlcHMgPSBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uIChMaXN0LmFzc29jIFwiZGVwc1wiIGwpO1xuICAgICAgICAgICBzb25zID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInNvbnNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgdHJhbnNpdGlvbl9vZl95b2pzb24gbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgfVxuICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZG9tYWluIHBvaW50XCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGRvbWFpbiBwb2ludFwiLCB4KSlcblxuICBsZXQgdG9feW9qc29uIGVudiA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwic2lnbmF0dXJlc1wiLCBTaWduYXR1cmUudG9fanNvbiBlbnYuc2lnX2RlY2w7XG4gICAgICAgICggXCJzaW5nbGVfYWdlbnRzXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGBOdWxsXG4gICAgICAgICAgICAgICAgIHwgU29tZSAoaWQsIF9kZXBzKSAtPiBgSW50IGlkKVxuICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICBlbnYuc2luZ2xlX2FnZW50X3BvaW50cyBbXSkgKTtcbiAgICAgICAgKCBcImVsZW1lbnRhcmllc1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHN0LCBkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0IFsgTmF2aWdhdGlvbi5zdGVwX3RvX3lvanNvbiBzdDsgYEludCBkIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgeCBbXSlcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LmVsZW1lbnRhcmllcyBbXSkgKTtcbiAgICAgICAgKCBcImRhZ1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPiBwb2ludF90b195b2pzb24geCA6OiBhY2MpXG4gICAgICAgICAgICAgICBlbnYuZG9tYWluIFtdKSApO1xuICAgICAgICAoIFwiaWRfYnlfdHlwZVwiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPiBgTGlzdCAoTGlzdC5tYXAgKGZ1biBpIC0+IGBJbnQgaSkgeCkgOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LmlkX2J5X3R5cGUgW10pICk7XG4gICAgICAgIFwibWF4X29ic1wiLCBgSW50IGVudi5tYXhfb2JzO1xuICAgICAgXVxuXG4gIGxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA2IC0+XG4gICAgICBsZXQgc2lnX2RlY2wgPSBTaWduYXR1cmUub2ZfanNvbiAoTGlzdC5hc3NvYyBcInNpZ25hdHVyZXNcIiBsKSBpblxuICAgICAgKHRyeVxuICAgICAgICAge1xuICAgICAgICAgICBzaWdfZGVjbDtcbiAgICAgICAgICAgY291bnRlcnNfaW5mbyA9IFt8fF07XG4gICAgICAgICAgICgqIFRPIERPICopXG4gICAgICAgICAgICgqIFNpIGpzb24gbGUgcHJlbmRyZSwgc2lub24gbGUgc3ludGjDqXRpc2VyIGF2ZWMgbCdhbmNpZW4gZm9uY3Rpb25uZW1lbnQgKilcbiAgICAgICAgICAgc2luZ2xlX2FnZW50X3BvaW50cyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJzaW5nbGVfYWdlbnRzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgIHwgYEludCBpIC0+IGksIE9wZXJhdG9yLkRlcFNldC5lbXB0eVxuICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3Jvbmcgc2luZ2xlX2FnZW50XCIsIHgpKSkpXG4gICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgZWxlbWVudGFyaWVzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImVsZW1lbnRhcmllc1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYExpc3QgWyBzOyBgSW50IGQgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5zdGVwX29mX3lvanNvbiBzLCBkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGRvbWFpbiA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJkYWdcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKHBvaW50X29mX3lvanNvbiBzaWdfZGVjbCkgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBpZF9ieV90eXBlID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImlkX2J5X3R5cGVcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIG1heF9vYnMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwibWF4X29ic1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHVwZGF0ZSBkb21haW5cIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgdXBkYXRlIGRvbWFpblwiLCB4KSlcblxuICBsZXQgbmV3X29ic19tYXAgZW52IGYgPSBNb2RzLkR5bkFycmF5LmluaXQgZW52Lm1heF9vYnMgZlxuXG4gIGxldCBnZXRfZWxlbWVudGFyeSB+ZGVidWdfbW9kZSBkb21haW4gKChfLCB0eSkgYXMgbm9kZSkgcyBhcnJvdyA9XG4gICAgbGV0IHNhID0gZG9tYWluLmVsZW1lbnRhcmllcy4odHkpIGluXG4gICAgbGV0IHJlYyBmaW5kX2dvb2RfZWRnZSA9IGZ1bmN0aW9uXG4gICAgICAoKm9uZSBzaG91bGQgdXNlIGEgaGFzaCBoZXJlKilcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCAoc3QsIGNjX2lkKSA6OiB0YWlsIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBOYXZpZ2F0aW9uLmNvbXBhdGlibGVfZnJlc2hfcG9pbnQgfmRlYnVnX21vZGUgc3Qgbm9kZSBzIGFycm93XG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaW5kX2dvb2RfZWRnZSB0YWlsXG4gICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgbGV0IGRzdCA9IGdldCBkb21haW4gY2NfaWQgaW5cbiAgICAgICAgICBTb21lIChjY19pZCwgZHN0LCBpbmonKSlcbiAgICBpblxuICAgIGZpbmRfZ29vZF9lZGdlIHNhLihzKVxuZW5kXG5cbmxldCBwcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkIGYgaWQgPVxuICBtYXRjaCBkb21haW4gd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIGlkXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgY2NfaWQgPVxuICAgICAgaWYgd2l0aF9pZCB0aGVuXG4gICAgICAgIFNvbWUgaWRcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGluXG4gICAgcHJpbnRfY2Mgfm5vQ291bnRlcnMgfnNpZ3M6KEVudi5zaWduYXR1cmVzIGVudilcbiAgICAgIH5jb3VudGVyc19pbmZvOihFbnYuY291bnRlcnNfaW5mbyBlbnYpID9jY19pZCB+d2l0aF9pZCBmXG4gICAgICBlbnYuRW52LmRvbWFpbi4oaWQpLkVudi5jb250ZW50XG5cbmxldCBlbWJlZGRpbmdzX3RvX2Z1bGx5X3NwZWNpZmllZCB+ZGVidWdfbW9kZSBkb21haW4gYV9pZCBiID1cbiAgbGV0IGEgPSBkb21haW4uRW52LmRvbWFpbi4oYV9pZCkuRW52LmNvbnRlbnQgaW5cbiAgbWF0Y2ggZmluZF9yb290IGEgd2l0aFxuICB8IE5vbmUgLT4gWyBSZW5hbWluZy5lbXB0eSAoKSBdXG4gIHwgU29tZSAoaCwgdHkpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGFnIC0+XG4gICAgICAgIG1hdGNoIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5zdHJpY3Q6ZmFsc2UgaCBhIGFnIGIgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gYWNjXG4gICAgICAgIHwgU29tZSByLCBfIC0+IHIgOjogYWNjKVxuICAgICAgW10gYi5ub2Rlc19ieV90eXBlLih0eSlcblxudHlwZSBwcmVwb2ludCA9IHtcbiAgcF9pZDogaWQ7XG4gIGVsZW1lbnQ6IGNjO1xuICBkZXBlbmRpbmc6IE9wZXJhdG9yLkRlcFNldC50O1xuICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG59XG5cbnR5cGUgd29yayA9IHtcbiAgc2lnczogU2lnbmF0dXJlLnM7XG4gIGNvdW50ZXJzOiBDb3VudGVyc19pbmZvLnQ7XG4gIGNjX2VudjogcHJlcG9pbnQgbGlzdCBNb2RzLkludE1hcC50IE1vZHMuSW50TWFwLnQ7XG4gIHJlc2VydmVkX2lkOiBpbnQgbGlzdCBhcnJheTtcbiAgdXNlZF9pZDogaW50IGxpc3QgYXJyYXk7XG4gIGZyZWVfaWQ6IGludDtcbiAgY2Nfbm9kZXM6IChsaW5rICogaW50KSBhcnJheSBNb2RzLkludE1hcC50O1xuICBkYW5nbGluZzogaW50OyAoKiBub2RlX2lkICopXG59XG5cbm1vZHVsZSBQcmVFbnYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBjb3VudGVyc19pbmZvOiBDb3VudGVyc19pbmZvLnQ7XG4gICAgaWRfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gICAgbmJfaWQ6IGludDtcbiAgICBkb21haW46IHByZXBvaW50IGxpc3QgTW9kcy5JbnRNYXAudCBNb2RzLkludE1hcC50O1xuICAgIG11dGFibGUgdXNlZF9ieV9hX2JlZ2luX25ldzogYm9vbDtcbiAgfVxuXG4gIHR5cGUgc3RhdCA9IHsgc3RhdF9ub2RlczogaW50OyBzdGF0X25hdl9zdGVwczogaW50IH1cblxuICBsZXQgY291bnRlcnNfaW5mbyBwcmVlbnYgPSBwcmVlbnYuY291bnRlcnNfaW5mb1xuXG4gIGxldCBmcmVzaCBzaWdzIGNvdW50ZXJzX2luZm8gaWRfYnlfdHlwZSBuYl9pZCBkb21haW4gPVxuICAgIHtcbiAgICAgIHNpZ19kZWNsID0gc2lncztcbiAgICAgIGNvdW50ZXJzX2luZm87XG4gICAgICBpZF9ieV90eXBlO1xuICAgICAgbmJfaWQ7XG4gICAgICBkb21haW47XG4gICAgICB1c2VkX2J5X2FfYmVnaW5fbmV3ID0gZmFsc2U7XG4gICAgfVxuXG4gIGxldCBlbXB0eSBzaWdzIGNvdW50ZXJzX2luZm8gPVxuICAgIGxldCBuYnQnID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lncykgW10gaW5cbiAgICBmcmVzaCBzaWdzIGNvdW50ZXJzX2luZm8gbmJ0JyAxIE1vZHMuSW50TWFwLmVtcHR5XG5cbiAgbGV0IGNoZWNrX3ZpdGFsaXR5IGVudiA9IGFzc2VydCAoZW52LnVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZSlcblxuICBsZXQgdG9fd29yayBlbnYgPVxuICAgIGxldCAoKSA9IGNoZWNrX3ZpdGFsaXR5IGVudiBpblxuICAgIGxldCAoKSA9IGVudi51c2VkX2J5X2FfYmVnaW5fbmV3IDwtIHRydWUgaW5cbiAgICB7XG4gICAgICBzaWdzID0gZW52LnNpZ19kZWNsO1xuICAgICAgY291bnRlcnMgPSBlbnYuY291bnRlcnNfaW5mbztcbiAgICAgIGNjX2VudiA9IGVudi5kb21haW47XG4gICAgICByZXNlcnZlZF9pZCA9IGVudi5pZF9ieV90eXBlO1xuICAgICAgdXNlZF9pZCA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBlbnYuaWRfYnlfdHlwZSkgW107XG4gICAgICBmcmVlX2lkID0gZW52Lm5iX2lkO1xuICAgICAgY2Nfbm9kZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgIGRhbmdsaW5nID0gMDtcbiAgICB9XG5cbiAgbGV0IHNpZ3MgZW52ID0gZW52LnNpZ19kZWNsXG5cbiAgbGV0IGVtcHR5X3BvaW50IHNpZ3MgPVxuICAgIHtcbiAgICAgIEVudi5jb250ZW50ID0gZW1wdHlfY2Mgc2lncztcbiAgICAgIEVudi5yb290cyA9IE5vbmU7XG4gICAgICBFbnYuZGVwcyA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eTtcbiAgICAgIEVudi5zb25zID0gW107XG4gICAgfVxuXG4gIGxldCBmaWxsX2VsZW0gc2lncyBib3R0b20gPVxuICAgIGxldCBlbGVtZW50YXJpZXMgPVxuICAgICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLnNpemUgc2lncykgKGZ1biBpIC0+XG4gICAgICAgICAgQXJyYXkubWFrZSAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgaSkgW10pXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHAuZWxlbWVudC5yZWNvZ25fbmF2IHdpdGhcbiAgICAgICAgICAgICAgfCBbXSB8ICgoTmF2aWdhdGlvbi5FeGlzdGluZyBfLCBfKSwgXykgOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgfCAoKE5hdmlnYXRpb24uRnJlc2ggXywgXyksIF8pIDo6IF8gOjogXyAtPiAoKVxuICAgICAgICAgICAgICB8IFsgKCgoTmF2aWdhdGlvbi5GcmVzaCAoXywgdHkxKSwgczEpLCBhcnIpIGFzIHN0ZXApIF0gLT5cbiAgICAgICAgICAgICAgICBsZXQgc2ExID0gZWxlbWVudGFyaWVzLih0eTEpIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gc2ExLihzMSkgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2ExLihzMSkgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggYXJyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChfLCB0eTIpLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgIGlmIHR5MSA9IHR5MiAmJiBzMSA8PiBzMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHNhMS4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMS4oczIpXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNhMiA9IGVsZW1lbnRhcmllcy4odHkyKSBpblxuICAgICAgICAgICAgICAgICAgICBzYTIuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTIuKHMyKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgXywgczIpIC0+XG4gICAgICAgICAgICAgICAgICBzYTEuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTEuKHMyKVxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vdGhpbmcgfCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgXyAtPiAoKSkpKVxuICAgICAgICBib3R0b21cbiAgICBpblxuICAgIGVsZW1lbnRhcmllc1xuXG4gIGxldCBwcmVzZW50X2luX2RzdCB+ZGVidWdfbW9kZSBkc3QgaW5qMmRzdCBuYXYgPVxuICAgIGxldCByZWMgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTb21lIGluaidcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkZyZXNoIF8sIF8pLCBfKSA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSwgTmF2aWdhdGlvbi5Ub05vdGhpbmcpIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBmc3Qgbi4oc2kpID0gRnJlZSB0aGVuXG4gICAgICAgICAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBpKSA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgc25kIG4uKHNpKSA9IGkgdGhlblxuICAgICAgICAgICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICB8ICggKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSxcbiAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBhZycsIHNpJykgKVxuICAgICAgICA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgZnN0IG4uKHNpKSA9IExpbmsgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcnLCBzaScpIHRoZW5cbiAgICAgICAgICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgfCAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksXG4gICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKGFnJywgdHknKSwgc2knKSApXG4gICAgICAgIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICAobWF0Y2ggbi4oc2kpIHdpdGhcbiAgICAgICAgICB8IExpbmsgKGFnbCwgc2lsKSwgXyAtPlxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYWdsIGRzdC5ub2Rlc19ieV90eXBlLih0eScpICYmIHNpJyA9IHNpbCB0aGVuIChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGFnJyBhZ2wgaW5qJyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBpbmonIC0+IGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgfCAoRnJlZSB8IFVuU3BlYyksIF8gLT4gTm9uZSkpXG4gICAgaW5cbiAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qMmRzdCBuYXZcblxuICBsZXQgcmVjIGluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluIGRzdF9pZCBkc3RcbiAgICAgIGluajJkc3QgcF9pZCA9XG4gICAgaWYgcF9pZCA9IGRzdF9pZCB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9pbnQgPSBkb21haW4uKHBfaWQpIGluXG4gICAgICBsZXQgcmVjIGluc2VydF9uYXZfc29ucyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgKGlual9lMnN1cCwgXyksIHN1cCA9XG4gICAgICAgICAgICBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgaW5qMmRzdFxuICAgICAgICAgICAgICBwb2ludC5FbnYuY29udGVudCBkc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBlcXVhbCB+ZGVidWdfbW9kZSBzdXAgZHN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGlual9zdXAyZHN0IC0+XG4gICAgICAgICAgICBsZXQgaW5qX2RzdDJwID1cbiAgICAgICAgICAgICAgUmVuYW1pbmcuaW52ZXJzZVxuICAgICAgICAgICAgICAgIChSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIGlual9lMnN1cCBpbmpfc3VwMmRzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbmF2ID1cbiAgICAgICAgICAgICAgYnVpbGRfbmF2aWdhdGlvbl9iZXR3ZWVuIH5kZWJ1Z19tb2RlIGlual9kc3QycCBwb2ludC5FbnYuY29udGVudFxuICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvaW50LkVudi5zb25zIDwtXG4gICAgICAgICAgICAgICAgeyBFbnYuZHN0ID0gZHN0X2lkOyBFbnYuaW5qID0gaW5qX2RzdDJwOyBFbnYubmV4dCA9IG5hdiB9XG4gICAgICAgICAgICAgICAgOjogcG9pbnQuRW52LnNvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMaXN0Lmxlbmd0aCBuYXYpXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHByZXNlbnRfaW5fZHN0IH5kZWJ1Z19tb2RlIGRzdCBpbmoyZHN0IGguRW52Lm5leHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbnNlcnRfbmF2X3NvbnMgdFxuICAgICAgICAgIHwgU29tZSBpbmpfcCcyZHN0IC0+XG4gICAgICAgICAgICBpbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpZF9ieV90eXBlIG5iX2lkIGRvbWFpbiBkc3RfaWQgZHN0XG4gICAgICAgICAgICAgIChSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIGguRW52LmluaiBpbmpfcCcyZHN0KVxuICAgICAgICAgICAgICBoLkVudi5kc3QpXG4gICAgICBpblxuICAgICAgaW5zZXJ0X25hdl9zb25zIHBvaW50LkVudi5zb25zXG4gICAgKVxuXG4gIGxldCBhZGRfY2MgfmRlYnVnX21vZGUgfnRvcGxldmVsID9vcmlnaW4gZW52IHBfaWQgZWxlbWVudCA9XG4gICAgbGV0IHcgPSB3ZWlnaHQgZWxlbWVudCBpblxuICAgIGxldCBoYXNoID0gY29hcnNlX2hhc2ggZWxlbWVudCBpblxuICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHJvb3RzID1cbiAgICAgICAgICBpZiB0b3BsZXZlbCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGZpbmRfcm9vdCBlbGVtZW50IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgKHJpZCwgcnR5KSAtPlxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgKCBMaXN0LnNvcnQgTW9kcy5pbnRfY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biByIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHIgcmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAoYXV0b21vcnBoaXNtcyB+ZGVidWdfbW9kZSBlbGVtZW50KSksXG4gICAgICAgICAgICAgICAgICBydHkgKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgTm9uZVxuICAgICAgICBpblxuICAgICAgICAoIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcF9pZDtcbiAgICAgICAgICAgICAgZWxlbWVudDtcbiAgICAgICAgICAgICAgcm9vdHM7XG4gICAgICAgICAgICAgIGRlcGVuZGluZyA9IGFkZF9vcmlnaW4gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IG9yaWdpbjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgXSxcbiAgICAgICAgICBpZGVudGl0eV9pbmplY3Rpb24gZWxlbWVudCxcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBfaWQgKVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoIGVxdWFsIH5kZWJ1Z19tb2RlIGVsZW1lbnQgaC5lbGVtZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGEsIGIsIGMsIGQgPSBhdXggdCBpblxuICAgICAgICAgIGggOjogYSwgYiwgYywgZFxuICAgICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIGxldCByb290cyA9XG4gICAgICAgICAgICBpZiBoLnJvb3RzIDw+IE5vbmUgfHwgbm90IHRvcGxldmVsIHRoZW5cbiAgICAgICAgICAgICAgaC5yb290c1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIGZpbmRfcm9vdCBlbGVtZW50IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChyaWQsIHJ0eSkgLT5cbiAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAoIExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biByIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHIgcmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgcnR5IClcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBwX2lkID0gaC5wX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50ID0gaC5lbGVtZW50O1xuICAgICAgICAgICAgICBkZXBlbmRpbmcgPSBhZGRfb3JpZ2luIGguZGVwZW5kaW5nIG9yaWdpbjtcbiAgICAgICAgICAgICAgcm9vdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6OiB0LFxuICAgICAgICAgICAgcixcbiAgICAgICAgICAgIGguZWxlbWVudCxcbiAgICAgICAgICAgIGgucF9pZCApKVxuICAgIGluXG4gICAgbGV0IGVudl93ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IHcgZW52IGluXG4gICAgbGV0IGVudl93X2gsIHIsIG91dCwgb3V0X2lkID1cbiAgICAgIGF1eCAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhhc2ggZW52X3cpXG4gICAgaW5cbiAgICBNb2RzLkludE1hcC5hZGQgdyAoTW9kcy5JbnRNYXAuYWRkIGhhc2ggZW52X3dfaCBlbnZfdykgZW52LCByLCBvdXQsIG91dF9pZFxuXG4gIGxldCByZWMgc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgdGhpcyBtYXhfbCBsZXZlbFxuICAgICAgKChfLCBkb21haW4pIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIGxldmVsIDwgbWF4X2wgdGhlblxuICAgICAgICBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIChzdWNjIGxldmVsKSBhY2NcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgIChmdW4gXyAtPiBMaXN0LnJldl9hcHBlbmQpXG4gICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSAoc3VjYyBsZXZlbCkgZG9tYWluKVxuICAgICAgICAgICAgIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBhY2NcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG5ld3MgPVxuICAgICAgICBtYXRjaCBzaGFyaW5nIHdpdGhcbiAgICAgICAgfCBOb19zaGFyaW5nIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IE1heF9zaGFyaW5nIC0+IGluZnMgc2lncyB+ZGVidWdfbW9kZSB0aGlzLmVsZW1lbnQgaC5lbGVtZW50XG4gICAgICAgIHwgQ29tcGF0aWJsZV9wYXR0ZXJucyAtPlxuICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgKGZ1biByIC0+IGludGVyc2VjdGlvbiByIHRoaXMuZWxlbWVudCBoLmVsZW1lbnQpXG4gICAgICAgICAgICAobWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgdGhpcy5lbGVtZW50IGguZWxlbWVudClcbiAgICAgIGluXG4gICAgICBsZXQgYWNjJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAobWlkLCBhY2MpIGNjIC0+XG4gICAgICAgICAgICBsZXQgaWQnID0gc3VjYyBtaWQgaW5cbiAgICAgICAgICAgIGxldCB4LCBfLCBfLCBpZCA9IGFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6ZmFsc2UgYWNjIGlkJyBjYyBpblxuICAgICAgICAgICAgKCAoaWYgaWQgPSBpZCcgdGhlblxuICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBtaWQpLFxuICAgICAgICAgICAgICB4ICkpXG4gICAgICAgICAgYWNjIG5ld3NcbiAgICAgIGluXG4gICAgICBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIGxldmVsIGFjYycgdFxuXG4gIGxldCByZWMgc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCBsZXZlbFxuICAgICAgKChfLCBkb21haW4pIGFzIGFjYykgPVxuICAgIGlmIGxldmVsIDwgMiB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGxldmVsIGRvbWFpbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCAocHJlZCBsZXZlbCkgYWNjXG4gICAgICB8IFNvbWUgbGlzdCAtPlxuICAgICAgICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbWF4X2wgKHByZWQgbGV2ZWwpIGFjY1xuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICBhdXggKHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGggbWF4X2wgbGV2ZWwgYWNjIHQpIHRcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGFjYyAoTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8gLT4gTGlzdC5yZXZfYXBwZW5kKSBsaXN0IFtdKVxuICAgIClcblxuICBsZXQgc2F0dXJhdGUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBkb21haW4gPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLm1heF9rZXkgZG9tYWluIHdpdGhcbiAgICB8IE5vbmUgLT4gMCwgZG9tYWluXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGxldCBzaSA9XG4gICAgICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIGwgbSAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbSBwIC0+IG1heCBtIHAucF9pZCkgbSBsKSlcbiAgICAgICAgICBkb21haW4gMFxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzaGFyaW5nIHdpdGhcbiAgICAgIHwgTm9fc2hhcmluZyAtPiBzaSwgZG9tYWluXG4gICAgICB8IENvbXBhdGlibGVfcGF0dGVybnMgfCBNYXhfc2hhcmluZyAtPlxuICAgICAgICBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGwgbCAoc2ksIGRvbWFpbikpXG5cbiAgbGV0IG9mX2VudiBlbnYgPVxuICAgIGxldCBhZGRfY2MgYWNjIHAgPVxuICAgICAgbGV0IHcgPSB3ZWlnaHQgcC5lbGVtZW50IGluXG4gICAgICBsZXQgaGFzaCA9IGNvYXJzZV9oYXNoIHAuZWxlbWVudCBpblxuICAgICAgbGV0IGFjY193ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IHcgYWNjIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgd1xuICAgICAgICAoTW9kcy5JbnRNYXAuYWRkIGhhc2hcbiAgICAgICAgICAgKHAgOjogTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhhc2ggYWNjX3cpXG4gICAgICAgICAgIGFjY193KVxuICAgICAgICBhY2NcbiAgICBpblxuICAgIGxldCBkb21haW4nID1cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBwX2lkIGFjYyBwIC0+XG4gICAgICAgICAgYWRkX2NjIGFjY1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50ID0gcC5FbnYuY29udGVudDtcbiAgICAgICAgICAgICAgZGVwZW5kaW5nID0gcC5FbnYuZGVwcztcbiAgICAgICAgICAgICAgcm9vdHMgPSBwLkVudi5yb290cztcbiAgICAgICAgICAgIH0pXG4gICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IGVudi5FbnYuZG9tYWluXG4gICAgaW5cbiAgICB7XG4gICAgICBzaWdfZGVjbCA9IGVudi5FbnYuc2lnX2RlY2w7XG4gICAgICBjb3VudGVyc19pbmZvID0gRW52LmNvdW50ZXJzX2luZm8gZW52O1xuICAgICAgbmJfaWQgPSBzdWNjIChBcnJheS5mb2xkX2xlZnQgKExpc3QuZm9sZF9sZWZ0IG1heCkgMCBlbnYuRW52LmlkX2J5X3R5cGUpO1xuICAgICAgaWRfYnlfdHlwZSA9IGVudi5FbnYuaWRfYnlfdHlwZTtcbiAgICAgIGRvbWFpbiA9IGRvbWFpbic7XG4gICAgICB1c2VkX2J5X2FfYmVnaW5fbmV3ID0gZmFsc2U7XG4gICAgfVxuXG4gIGxldCBkZWJ1Z19wcmludCBmIGVudiA9XG4gICAgUHAuYXJyYXkgUHAuY29tbWFcbiAgICAgIChmdW4gdHkgZiBsIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlZDogJXRcIiB0eSAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbXCI7XG4gICAgICAgICAgICBQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBhIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIGEpIGYgbDtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJdXCIpKVxuICAgICAgZiBlbnYuaWRfYnlfdHlwZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidXNlZF9ieV9hX2JlZ2luX25ldyA9ICVCQC5cIiBlbnYudXNlZF9ieV9hX2JlZ2luX25ld1xuZW5kXG5cbigqKiBPcGVyYXRpb24gdG8gY3JlYXRlIGNjICopXG5sZXQgY2hlY2tfZGFuZ2xpbmcgd2sgPVxuICBpZiB3ay5kYW5nbGluZyA8PiAwIHRoZW5cbiAgICByYWlzZSAoZGFuZ2xpbmdfbm9kZSB+c2lnczp3ay5zaWdzIHdrLnVzZWRfaWQgd2suZGFuZ2xpbmcpXG5cbmxldCBiZWdpbl9uZXcgZW52ID0gUHJlRW52LnRvX3dvcmsgZW52XG5cbmxldCBmcmVzaF9jY19pZCBkb21haW4gPVxuICBzdWNjXG4gICAgKE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIHggYWNjIC0+XG4gICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgcCAtPiBtYXggYWNjIHAucF9pZCkgYWNjIHgpKVxuICAgICAgIGRvbWFpbiAwKVxuXG5sZXQgcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsID9vcmlnaW4gd2sgPVxuICBsZXQgKCkgPSBjaGVja19kYW5nbGluZyB3ayBpblxuICAoKiByZWJ1aWxkIGVudiAqKVxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgd2sucmVzZXJ2ZWRfaWQuKGkpIDwtIExpc3QucmV2X2FwcGVuZCB3ay51c2VkX2lkLihpKSB3ay5yZXNlcnZlZF9pZC4oaSkpXG4gICAgICAoQXJyYXkubGVuZ3RoIHdrLnVzZWRfaWQpXG4gIGluXG4gIGxldCBub2Rlc19ieV90eXBlID0gQXJyYXkubWFwIExpc3QucmV2IHdrLnVzZWRfaWQgaW5cbiAgbGV0IGNjX2NhbmRpZGF0ZSA9XG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzID0gd2suY2Nfbm9kZXM7XG4gICAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSB3ay5jY19ub2RlcztcbiAgICB9XG4gIGluXG4gIGxldCBwcmVlbnYsIHIsIG91dCwgb3V0X2lkID1cbiAgICBQcmVFbnYuYWRkX2NjIH5kZWJ1Z19tb2RlIH50b3BsZXZlbCA/b3JpZ2luIHdrLmNjX2VudlxuICAgICAgKGZyZXNoX2NjX2lkIHdrLmNjX2VudikgY2NfY2FuZGlkYXRlXG4gIGluXG4gICggUHJlRW52LmZyZXNoIHdrLnNpZ3Mgd2suY291bnRlcnMgd2sucmVzZXJ2ZWRfaWQgd2suZnJlZV9pZCBwcmVlbnYsXG4gICAgcixcbiAgICBvdXQsXG4gICAgb3V0X2lkIClcblxubGV0IGZpbmlzaF9uZXcgfmRlYnVnX21vZGUgP29yaWdpbiB3ayA9XG4gIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDp0cnVlID9vcmlnaW4gd2tcblxubGV0IG5ld19saW5rIHdrICgoKHgsIF8pIGFzIG4xKSwgaSkgKCgoeSwgXykgYXMgbjIpLCBqKSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIGxldCB5X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB5IHdrLmNjX25vZGVzIGluXG4gIG1hdGNoIHhfbi4oaSksIHlfbi4oaikgd2l0aFxuICB8IChVblNwZWMsIHN0eCksIChVblNwZWMsIHN0eSkgLT5cbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIExpbmsgKHksIGopLCBzdHggaW5cbiAgICBsZXQgKCkgPSB5X24uKGopIDwtIExpbmsgKHgsIGkpLCBzdHkgaW5cbiAgICBpZiB3ay5kYW5nbGluZyA9IHggfHwgd2suZGFuZ2xpbmcgPSB5IHRoZW5cbiAgICAgIHsgd2sgd2l0aCBkYW5nbGluZyA9IDAgfVxuICAgIGVsc2VcbiAgICAgIHdrXG4gIHwgKChGcmVlIHwgTGluayBfKSwgXyksIF8gLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbjEgaSlcbiAgfCBfLCAoKEZyZWUgfCBMaW5rIF8pLCBfKSAtPiByYWlzZSAoYWxyZWFkeV9zcGVjaWZpZWQgfnNpZ3M6d2suc2lncyBuMiBqKVxuXG5sZXQgbmV3X2ZyZWUgd2sgKCgoeCwgXykgYXMgbiksIGkpID1cbiAgbGV0IHhfbiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHggd2suY2Nfbm9kZXMgaW5cbiAgbWF0Y2ggeF9uLihpKSB3aXRoXG4gIHwgVW5TcGVjLCBzdCAtPlxuICAgIGxldCAoKSA9IHhfbi4oaSkgPC0gRnJlZSwgc3QgaW5cbiAgICB3a1xuICB8IChGcmVlIHwgTGluayBfKSwgXyAtPiByYWlzZSAoYWxyZWFkeV9zcGVjaWZpZWQgfnNpZ3M6d2suc2lncyBuIGkpXG5cbmxldCBuZXdfaW50ZXJuYWxfc3RhdGUgd2sgKCgoeCwgXykgYXMgbiksIGkpIHZhID1cbiAgbGV0IHhfbiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHggd2suY2Nfbm9kZXMgaW5cbiAgbGV0IGwsIHMgPSB4X24uKGkpIGluXG4gIGlmIHMgPj0gMCB0aGVuXG4gICAgcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbiBpKVxuICBlbHNlIChcbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIGwsIHZhIGluXG4gICAgd2tcbiAgKVxuXG5sZXQgbmV3X25vZGUgd2sgdHlwZV9pZCA9XG4gIGxldCAoKSA9IGNoZWNrX2RhbmdsaW5nIHdrIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSB3ay5zaWdzIHR5cGVfaWQgaW5cbiAgbWF0Y2ggd2sucmVzZXJ2ZWRfaWQuKHR5cGVfaWQpIHdpdGhcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgKCkgPSB3ay51c2VkX2lkLih0eXBlX2lkKSA8LSBoIDo6IHdrLnVzZWRfaWQuKHR5cGVfaWQpIGluXG4gICAgbGV0ICgpID0gd2sucmVzZXJ2ZWRfaWQuKHR5cGVfaWQpIDwtIHQgaW5cbiAgICBsZXQgbm9kZSA9IGgsIHR5cGVfaWQgaW5cbiAgICAoIG5vZGUsXG4gICAgICB7XG4gICAgICAgIHNpZ3MgPSB3ay5zaWdzO1xuICAgICAgICBjb3VudGVycyA9IHdrLmNvdW50ZXJzO1xuICAgICAgICBjY19lbnYgPSB3ay5jY19lbnY7XG4gICAgICAgIHJlc2VydmVkX2lkID0gd2sucmVzZXJ2ZWRfaWQ7XG4gICAgICAgIHVzZWRfaWQgPSB3ay51c2VkX2lkO1xuICAgICAgICBmcmVlX2lkID0gd2suZnJlZV9pZDtcbiAgICAgICAgZGFuZ2xpbmcgPVxuICAgICAgICAgIChpZiBNb2RzLkludE1hcC5pc19lbXB0eSB3ay5jY19ub2RlcyB0aGVuXG4gICAgICAgICAgICAgMFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgaCk7XG4gICAgICAgIGNjX25vZGVzID0gTW9kcy5JbnRNYXAuYWRkIGggKEFycmF5Lm1ha2UgYXJpdHkgKFVuU3BlYywgLTEpKSB3ay5jY19ub2RlcztcbiAgICAgIH0gKVxuICB8IFtdIC0+XG4gICAgbGV0ICgpID0gd2sudXNlZF9pZC4odHlwZV9pZCkgPC0gd2suZnJlZV9pZCA6OiB3ay51c2VkX2lkLih0eXBlX2lkKSBpblxuICAgIGxldCBub2RlID0gd2suZnJlZV9pZCwgdHlwZV9pZCBpblxuICAgICggbm9kZSxcbiAgICAgIHtcbiAgICAgICAgc2lncyA9IHdrLnNpZ3M7XG4gICAgICAgIGNvdW50ZXJzID0gd2suY291bnRlcnM7XG4gICAgICAgIGNjX2VudiA9IHdrLmNjX2VudjtcbiAgICAgICAgcmVzZXJ2ZWRfaWQgPSB3ay5yZXNlcnZlZF9pZDtcbiAgICAgICAgdXNlZF9pZCA9IHdrLnVzZWRfaWQ7XG4gICAgICAgIGZyZWVfaWQgPSBzdWNjIHdrLmZyZWVfaWQ7XG4gICAgICAgIGRhbmdsaW5nID1cbiAgICAgICAgICAoaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgd2suY2Nfbm9kZXMgdGhlblxuICAgICAgICAgICAgIDBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHdrLmZyZWVfaWQpO1xuICAgICAgICBjY19ub2RlcyA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHdrLmZyZWVfaWQgKEFycmF5Lm1ha2UgYXJpdHkgKFVuU3BlYywgLTEpKSB3ay5jY19ub2RlcztcbiAgICAgIH0gKVxuXG5sZXQgbWluaW1hbF9lbnYgfmRlYnVnX21vZGUgZW52IGNvbnRhY3RfbWFwID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gdHkgLT5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBzIGFjYyAoaW50cywgbGlua3MpIC0+XG4gICAgICAgICAgbGV0IHcgPSBiZWdpbl9uZXcgYWNjIGluXG4gICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgbGV0IHcgPSBuZXdfZnJlZSB3IChuLCBzKSBpblxuICAgICAgICAgIGxldCBhY2MnLCBfLCBfLCBfID0gcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHcgaW5cbiAgICAgICAgICBsZXQgYWNjJycgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IHcgPSBiZWdpbl9uZXcgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgICAgICAgbGV0IHcgPSBuZXdfaW50ZXJuYWxfc3RhdGUgdyAobiwgcykgaSBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQsIF8sIF8sIF8gPVxuICAgICAgICAgICAgICAgICAgcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHdcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG91dClcbiAgICAgICAgICAgICAgaW50cyBhY2MnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBNb2RzLkludDJTZXQuZm9sZFxuICAgICAgICAgICAgKGZ1biAodHknLCBzJykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgbiwgdyA9IG5ld19ub2RlIHcgdHkgaW5cbiAgICAgICAgICAgICAgbGV0IG4nLCB3ID0gbmV3X25vZGUgdyB0eScgaW5cbiAgICAgICAgICAgICAgbGV0IHcgPSBuZXdfbGluayB3IChuLCBzKSAobicsIHMnKSBpblxuICAgICAgICAgICAgICBsZXQgb3V0LCBfLCBfLCBfID0gcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHcgaW5cbiAgICAgICAgICAgICAgaWYgdHkgPSB0eScgJiYgcyA8IHMnIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IG91dCBpblxuICAgICAgICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgICAgICAgIGxldCB3ID0gbmV3X2xpbmsgdyAobiwgcykgKG4sIHMnKSBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQnLCBfLCBfLCBfID1cbiAgICAgICAgICAgICAgICAgIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvdXQnXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIG91dClcbiAgICAgICAgICAgIGxpbmtzIGFjYycnKSlcbiAgICBlbnYgY29udGFjdF9tYXBcblxubGV0IGZvbGRfYnlfdHlwZSBmIGNjIGFjYyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGFnZW50X3R5cGUgYWNjIGxpc3RfcG9zIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyBwb3MgLT5cbiAgICAgICAgICBsZXQgaW50ZiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHBvcyBjYy5ub2RlcyBpblxuICAgICAgICAgIGYgfnBvcyB+YWdlbnRfdHlwZSBpbnRmIGFjYylcbiAgICAgICAgYWNjIGxpc3RfcG9zKVxuICAgIGFjYyBjYy5ub2Rlc19ieV90eXBlXG5cbmxldCBmb2xkIGYgY2MgYWNjID0gTW9kcy5JbnRNYXAuZm9sZCBmIGNjLm5vZGVzIGFjY1xuXG5sZXQgZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgZW52IGNvbnRhY3RfbWFwID1cbiAgbGV0IHNpZ3MgPSBQcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IGVudiA9IG1pbmltYWxfZW52IH5kZWJ1Z19tb2RlIGVudiBjb250YWN0X21hcCBpblxuICBsZXQgc2ksIGNvbXBsZXRlX2RvbWFpbiA9XG4gICAgUHJlRW52LnNhdHVyYXRlIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgZW52LlByZUVudi5kb21haW5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IEFycmF5Lm1ha2UgKHN1Y2Mgc2kpIChQcmVFbnYuZW1wdHlfcG9pbnQgZW52LlByZUVudi5zaWdfZGVjbCkgaW5cbiAgbGV0IHNpbmdsZXMgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgMSBjb21wbGV0ZV9kb21haW4gaW5cbiAgbGV0IGVsZW1lbnRhcmllcyA9IFByZUVudi5maWxsX2VsZW0gZW52LlByZUVudi5zaWdfZGVjbCBzaW5nbGVzIGluXG4gIGxldCAoKSA9XG4gICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgKGZ1biBfIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIHggLT5cbiAgICAgICAgICAgIGRvbWFpbi4oeC5wX2lkKSA8LVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgRW52LmNvbnRlbnQgPSB4LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHguZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHgucm9vdHM7XG4gICAgICAgICAgICAgIH0pKVxuICAgICAgc2luZ2xlc1xuICBpblxuICBsZXQgc3RhdF9uYXZfc3RlcHMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gbGV2ZWwgZG9tYWluX2xldmVsIGFjY19sZXZlbCAtPlxuICAgICAgICBpZiBsZXZlbCA8PSAxIHRoZW5cbiAgICAgICAgICBhY2NfbGV2ZWxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAgIChmdW4gXyBsIGFjYyAtPlxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gYWNjIHggLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbi4oeC5wX2lkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0geC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHgucm9vdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHguZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIChmdW4gXyBsbCBhY2NsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyBlLmVsZW1lbnQgeC5lbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmpzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGlual9lX3ggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlRW52Lmluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LlByZUVudi5pZF9ieV90eXBlIGVudi5QcmVFbnYubmJfaWQgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wX2lkIHguZWxlbWVudCBpbmpfZV94IGUucF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyBpbmpzKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjbCBsbClcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlcyBhY2MpXG4gICAgICAgICAgICAgICAgYWNjIGwpXG4gICAgICAgICAgICBkb21haW5fbGV2ZWwgYWNjX2xldmVsKVxuICAgICAgY29tcGxldGVfZG9tYWluIDBcbiAgaW5cbiAgbGV0IGxldmVsMCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSAwIGNvbXBsZXRlX2RvbWFpbiBpblxuICBsZXQgc2luZ2xlX2FnZW50X3BvaW50cyA9XG4gICAgQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGVudi5QcmVFbnYuaWRfYnlfdHlwZSkgTm9uZVxuICBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICAgICAgICBtYXRjaCBmaW5kX3Jvb3QgcC5lbGVtZW50IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChfLCB0eSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBkb21haW4uKHAucF9pZCkgPC1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgRW52LmNvbnRlbnQgPSBwLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHAucm9vdHM7XG4gICAgICAgICAgICAgICAgICAgIEVudi5kZXBzID0gcC5kZXBlbmRpbmc7XG4gICAgICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNpbmdsZV9hZ2VudF9wb2ludHMuKHR5KSA8LSBTb21lIChwLnBfaWQsIHAuZGVwZW5kaW5nKSkpXG4gICAgICBsZXZlbDBcbiAgaW5cbiAgKCB7XG4gICAgICBFbnYuc2lnX2RlY2wgPSBlbnYuUHJlRW52LnNpZ19kZWNsO1xuICAgICAgRW52LmNvdW50ZXJzX2luZm8gPSBlbnYuUHJlRW52LmNvdW50ZXJzX2luZm87XG4gICAgICBFbnYuaWRfYnlfdHlwZSA9IGVudi5QcmVFbnYuaWRfYnlfdHlwZTtcbiAgICAgIEVudi5tYXhfb2JzID0gZnJlc2hfY2NfaWQgZW52LlByZUVudi5kb21haW47XG4gICAgICBFbnYuZG9tYWluO1xuICAgICAgRW52LmVsZW1lbnRhcmllcztcbiAgICAgIEVudi5zaW5nbGVfYWdlbnRfcG9pbnRzO1xuICAgIH0sXG4gICAgeyBzdGF0X25vZGVzID0gc2k7IFByZUVudi5zdGF0X25hdl9zdGVwcyB9IClcblxubGV0IG1lcmdlX29uX2luZiB+ZGVidWdfbW9kZSBlbnYgbSBnMSBnMiA9XG4gIGxldCBtX2xpc3QgPSBSZW5hbWluZy50b19saXN0IG0gaW5cbiAgbGV0IHJvb3QxLCByb290MiA9IExpc3QuaGQgbV9saXN0IGluXG4gIGxldCBwYWlyaW5nID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKGEsIGIpIC0+IE1vZHMuSW50MlNldC5hZGQgKGEsIGIpIGFjYylcbiAgICAgIE1vZHMuSW50MlNldC5lbXB0eSBtX2xpc3RcbiAgaW5cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPSByZWYgcGFpcmluZyBpblxuICBtYXRjaFxuICAgIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5wb3NzaWJpbGl0aWVzIH5zdHJpY3Q6ZmFsc2Ugcm9vdDEgZzEgcm9vdDIgZzJcbiAgd2l0aFxuICB8IFNvbWUgbScsIF8gLT5cbiAgICBsZXQgXywgcHVzaG91dCA9XG4gICAgICBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIGVudi5QcmVFbnYuaWRfYnlfdHlwZSBlbnYuUHJlRW52Lm5iX2lkIG0nIGcxXG4gICAgICAgIGcyXG4gICAgaW5cbiAgICBTb21lIHB1c2hvdXQsIE5vbmVcbiAgfCBOb25lLCBjb25mbGljdCAtPiBOb25lLCBjb25mbGljdFxuXG5sZXQgbGVuZ3RoIGNjID0gTW9kcy5JbnRNYXAuc2l6ZSBjYy5ub2Rlc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gUmVuYW1pbmcudCBNb2RzLkludE1hcC50ICogTW9kcy5JbnRTZXQudFxuKCogKG1hcCxzZXQpXG4gICBtYXA6IHBvaW50X2kgLT4gKG5vZGVfaihpKSAtPiBpZF9ub2RlX2dyYXBoX2luX2N1cnJlbnRfbWF0Y2hpbmcpXG4gICBzZXQ6Y29kb21haW4gb2YgY3VycmVudCBtYXRjaGluZyAqKVxuXG50eXBlIG1hdGNoaW5nID0gdFxuXG5sZXQgZW1wdHkgPSBNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRTZXQuZW1wdHlcblxubGV0IGFkZF9jYyAoaW5qLCBjbykgaWQgciA9XG4gIGxldCBjID0gUmVuYW1pbmcuaW1hZ2UgciBpblxuICBtYXRjaCBNb2RzLkludFNldC5kaXNqb2ludF91bmlvbiBjbyBjIHdpdGhcbiAgfCBTb21lIGNvJyAtPiBTb21lIChNb2RzLkludE1hcC5hZGQgaWQgciBpbmosIGNvJylcbiAgfCBOb25lIC0+IE5vbmVcblxubGV0IGRlYnVnX3ByaW50IGYgKG0sIF9jbykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFsoJWEpQF1cIlxuICAgIChQcC5zZXQgTW9kcy5JbnRNYXAuYmluZGluZ3MgUHAuY29tbWEgKGZ1biBmIChjY2lkLCBubSkgLT5cbiAgICAgICAgIFBwLnNldCBSZW5hbWluZy50b19saXN0IFBwLmNvbW1hXG4gICAgICAgICAgIChmdW4gZiAobm9kZSwgZHN0KSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWk6JWktPiVpXCIgY2NpZCBub2RlIGRzdClcbiAgICAgICAgICAgZiBubSkpXG4gICAgbVxuXG5sZXQgcmVjb25zdHJ1Y3RfcmVuYW1pbmcgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGNjX2lkIHJvb3QgPVxuICBsZXQgcG9pbnQgPSBQYXR0ZXJuLkVudi5nZXQgZG9tYWluIGNjX2lkIGluXG4gIG1hdGNoIFBhdHRlcm4uRW52LnJvb3RzIHBvaW50IHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTWF0Y2hpbmcucmVjb25zdHJ1Y3QgY2MgZXJyb3JcIlxuICAoKi0gcm0gLSBhZGQgOiBpbnQgLT4gaW50IC0+IFJlbmFtaW5nLnQgLT4gUmVuYW1pbmcudCAqKVxuICB8IFNvbWUgKHJpZHMsIHJ0eSkgLT5cbiAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICBsZXQgXywgaW5qZWN0aXZlID1cbiAgICAgIG1hdGNoIFBhdHRlcm4ucmVjb25zdHJ1Y3Rpb25fbmF2aWdhdGlvbiAoUGF0dGVybi5FbnYuY29udGVudCBwb2ludCkgd2l0aFxuICAgICAgfCBfIDo6IF8gYXMgbmF2IC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAocm9vdCwgaW5qZWN0aXZlKSBuYXYgLT5cbiAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgaW5qZWN0aXZlXG4gICAgICAgICAgICAgICYmIE5hdmlnYXRpb24uaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaFxuICAgICAgICAgICAgICAgICAgIG5hdiApKVxuICAgICAgICAgIChTb21lIChyb290LCBydHkpLCB0cnVlKVxuICAgICAgICAgIG5hdlxuICAgICAgKCotIHJtIC0gZmluZF9yb290OiBjYyAtPiAodHlwZSwgbm9kZSkgb3B0aW9uICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgICggTm9uZSxcbiAgICAgICAgICAobWF0Y2ggcmlkcyB3aXRoXG4gICAgICAgICAgfCBbIHJpZCBdIC0+IFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIHJpZCByb290IGlualxuICAgICAgICAgIHwgXyAtPiBmYWxzZSkgKVxuICAgIGluXG4gICAgaWYgaW5qZWN0aXZlIHRoZW5cbiAgICAgIGlualxuICAgIGVsc2VcbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChcIk1hdGNoaW5nLnJlY29uc3RydWN0IHJlbmFtaW5nIGVycm9yIGF0IHJvb3QgXCIgXiBzdHJpbmdfb2ZfaW50IHJvb3QpXG5cbigqIHJlY29uc3RydWN0OiBQYXR0ZXJuLkVudi50IC0+IEVkZ2VzLnQgLT4gdCAtPiBpbnQgLT4gUGF0dGVybi5pZCAtPlxuICAgaW50IC0+IHQgb3B0aW9uKilcbmxldCByZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggaW5qIGlkIGNjX2lkIHJvb3QgPVxuICBsZXQgcmVuYW1lID0gcmVjb25zdHJ1Y3RfcmVuYW1pbmcgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGNjX2lkIHJvb3QgaW5cbiAgbWF0Y2ggTW9kcy5JbnRTZXQuZGlzam9pbnRfdW5pb24gKFJlbmFtaW5nLmltYWdlIHJlbmFtZSkgKHNuZCBpbmopIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGNvIC0+IFNvbWUgKE1vZHMuSW50TWFwLmFkZCBpZCByZW5hbWUgKGZzdCBpbmopLCBjbylcblxubGV0IHJlYyBhdXhfaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBncmFwaCByb290IGluaiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IGggOjogdCAtPlxuICAgIE5hdmlnYXRpb24uaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCBoXG4gICAgJiYgYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggTm9uZSBpbmogdFxuXG5sZXQgaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggKChfLCBydHkpIGFzIHJvb3QpIGNjX2lkID1cbiAgbGV0IHBvaW50ID0gUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY19pZCBpblxuICBtYXRjaCBQYXR0ZXJuLnJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gKFBhdHRlcm4uRW52LmNvbnRlbnQgcG9pbnQpIHdpdGhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCBQYXR0ZXJuLkVudi5yb290cyBwb2ludCB3aXRoXG4gICAgfCBTb21lIChfLCBydHknKSAtPiBydHkgPSBydHknXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuICB8IG5hdiAtPiBhdXhfaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBncmFwaCAoU29tZSByb290KSAoUmVuYW1pbmcuZW1wdHkgKCkpIG5hdlxuXG5sZXQgcm9vdHNfb2YgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGNjID1cbiAgRWRnZXMuYWxsX2FnZW50c193aGVyZVxuICAgIChmdW4geCAtPiBpc19yb290X29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCB4IGNjKVxuICAgIGdyYXBoXG5cbigqIGdldCA6IChDb250ZW50QWdlbnQudCAqIGludCkgLT4gdCAtPiBpbnQgKilcbmxldCBnZXQgfmRlYnVnX21vZGUgKChub2RlLCBfKSwgaWQpICh0LCBfKSA9XG4gIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgUmVuYW1pbmcuZHVtbXkgaWQgdCkgbm9kZVxuXG5sZXQgZWxlbWVudHNfd2l0aF90eXBlcyBkb21haW4gY2NzICh0LCBfKSA9XG4gIGxldCBvdXQgPSBBcnJheS5tYWtlIChNb2RzLkludE1hcC5zaXplIHQpIFtdIGluXG4gIGxldCAoKSA9XG4gICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgKGZ1biBpZCBtYXAgLT5cbiAgICAgICAgb3V0LihpZCkgPC1cbiAgICAgICAgICBSZW5hbWluZy5mb2xkXG4gICAgICAgICAgICAoZnVuIGkgb3V0IGFjYyAtPlxuICAgICAgICAgICAgICAoIG91dCxcbiAgICAgICAgICAgICAgICBQYXR0ZXJuLmZpbmRfdHlcbiAgICAgICAgICAgICAgICAgIChQYXR0ZXJuLkVudi5jb250ZW50IChQYXR0ZXJuLkVudi5nZXQgZG9tYWluIGNjcy4oaWQpKSlcbiAgICAgICAgICAgICAgICAgIGkgKVxuICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICBtYXAgW10pXG4gICAgICB0XG4gIGluXG4gIG91dFxuXG5tb2R1bGUgQ2FjaGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUGF0dGVybi5pZCAqIChpbnQgKiBpbnQpIG9wdGlvblxuXG4gIGxldCBjb21wYXJlIChhLCBhJykgKGIsIGInKSA9XG4gICAgbGV0IGMgPSBQYXR0ZXJuLmNvbXBhcmVfY2Fub25pY2FscyBhIGIgaW5cbiAgICBpZiBjID0gMCB0aGVuIChcbiAgICAgIG1hdGNoIGEnLCBiJyB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gMFxuICAgICAgfCBOb25lLCBTb21lIF8gLT4gMVxuICAgICAgfCBTb21lIF8sIE5vbmUgLT4gLTFcbiAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gTW9kcy5pbnRfcGFpcl9jb21wYXJlIHggeVxuICAgICkgZWxzZVxuICAgICAgY1xuXG4gIGxldCBwcmludCBmIChhLCBhJykgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgIChQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzOnRydWUgP2RvbWFpbjpOb25lIH53aXRoX2lkOnRydWUpXG4gICAgICBhXG4gICAgICAoUHAub3B0aW9uIChQcC5wYWlyIEZvcm1hdC5wcF9wcmludF9pbnQgRm9ybWF0LnBwX3ByaW50X2ludCkpXG4gICAgICBhJ1xuZW5kXG5cbm1vZHVsZSBDYWNoZVNldE1hcCA9IFNldE1hcC5NYWtlIChDYWNoZSlcblxudHlwZSBjYWNoZSA9IENhY2hlU2V0TWFwLlNldC50XG5cbmxldCBlbXB0eV9jYWNoZSA9IENhY2hlU2V0TWFwLlNldC5lbXB0eVxuXG5sZXQgc3Vydml2ZV9uYXYgfmRlYnVnX21vZGUgaW5qIGdyYXBoID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGluaiBzdGVwIC0+XG4gICAgICBtYXRjaCBpbmogd2l0aFxuICAgICAgfCBOb25lIC0+IGlualxuICAgICAgfCBTb21lIGluaiAtPlxuICAgICAgICBOYXZpZ2F0aW9uLmluamVjdGlvbl9mb3Jfb25lX21vcmVfZWRnZSB+ZGVidWdfbW9kZSBpbmogZ3JhcGggc3RlcClcbiAgICAoU29tZSBpbmopXG5cbigqZWRnZXM6IGxpc3Qgb2YgY29uY3JldGUgZWRnZXMsXG4gICAgcmV0dXJucyB0aGUgcm9vdHMgb2Ygb2JzZXJ2YWJsZXMgdGhhdCBhcmUgYWJvdmUgaW4gdGhlIGRvbWFpbiopXG5sZXQgZnJvbV9lZGdlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCAoKG91dCwgY2FjaGUpIGFzIGFjYykgbm9kZSBzaXRlIGFycm93ID1cbiAgbGV0IHJlYyBhdXhfZnJvbV9lZGdlcyBjYWNoZSAoKG9icywgcmV2X2RlcHMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjLCBjYWNoZVxuICAgIHwgKHBpZCwgcG9pbnQsIGlual9wb2ludDJncmFwaCkgOjogcmVtYWlucyAtPlxuICAgICAgbGV0IGFjYycgPVxuICAgICAgICBtYXRjaCBQYXR0ZXJuLkVudi5yb290cyBwb2ludCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIChpZHMsIHR5KSAtPlxuICAgICAgICAgICggTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBhY2MgaWQgLT5cbiAgICAgICAgICAgICAgICAocGlkLCAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qX3BvaW50MmdyYXBoIGlkLCB0eSkpXG4gICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICBvYnMgaWRzLFxuICAgICAgICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJldl9kZXBzIChQYXR0ZXJuLkVudi5kZXBzIHBvaW50KSApXG4gICAgICBpblxuICAgICAgbGV0IHJlbWFpbnMnLCBjYWNoZScgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKChyZSwgY2EpIGFzIHBhaXIpIHNvbiAtPlxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgc3Vydml2ZV9uYXYgfmRlYnVnX21vZGUgaW5qX3BvaW50MmdyYXBoIGdyYXBoIHNvbi5QYXR0ZXJuLkVudi5uZXh0XG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcGFpclxuICAgICAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAgICAgbGV0IHJlbmFtZSA9XG4gICAgICAgICAgICAgICAgUmVuYW1pbmcuY29tcG9zZSB+ZGVidWdfbW9kZSBmYWxzZSBzb24uUGF0dGVybi5FbnYuaW5qIGluaidcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGNhJyA9XG4gICAgICAgICAgICAgICAgQ2FjaGVTZXRNYXAuU2V0LmFkZFxuICAgICAgICAgICAgICAgICAgKHNvbi5QYXR0ZXJuLkVudi5kc3QsIFJlbmFtaW5nLm1pbl9lbHQgcmVuYW1lKVxuICAgICAgICAgICAgICAgICAgY2FcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgY2EgPT0gY2EnIHRoZW5cbiAgICAgICAgICAgICAgICBwYWlyXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBwJyA9IFBhdHRlcm4uRW52LmdldCBkb21haW4gc29uLlBhdHRlcm4uRW52LmRzdCBpblxuICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gc29uLlBhdHRlcm4uRW52LmRzdCwgcCcsIHJlbmFtZSBpblxuICAgICAgICAgICAgICAgIG5leHQgOjogcmUsIGNhJ1xuICAgICAgICAgICAgICApKVxuICAgICAgICAgIChyZW1haW5zLCBjYWNoZSkgKFBhdHRlcm4uRW52LnNvbnMgcG9pbnQpXG4gICAgICBpblxuICAgICAgYXV4X2Zyb21fZWRnZXMgY2FjaGUnIGFjYycgcmVtYWlucydcbiAgaW5cbiAgbWF0Y2ggUGF0dGVybi5FbnYuZ2V0X2VsZW1lbnRhcnkgfmRlYnVnX21vZGUgZG9tYWluIG5vZGUgc2l0ZSBhcnJvdyB3aXRoXG4gIHwgTm9uZSAtPiBhY2NcbiAgfCBTb21lIHggLT5cbiAgICBhdXhfZnJvbV9lZGdlc1xuICAgICAgKCooKnVubmVjZXNzYXJ5KilDYWNoZVNldE1hcC5TZXQuYWRkIChjY19pZCxSZW5hbWluZy5taW5fZWx0IGluaicpKilcbiAgICAgIGNhY2hlIG91dCBbIHggXVxuXG5sZXQgb2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCBkb21haW4gZ3JhcGggKCgob2JzLCByZGVwcyksIGNhY2hlKSBhcyBhY2MpXG4gICAgKChfLCB0eSkgYXMgbm9kZSkgPVxuICBpZiBFZGdlcy5pc19hZ2VudCBub2RlIGdyYXBoIHRoZW4gKFxuICAgIG1hdGNoIFBhdHRlcm4uRW52LmdldF9zaW5nbGVfYWdlbnQgdHkgZG9tYWluIHdpdGhcbiAgICB8IFNvbWUgKGNjLCBkZXBzKSAtPlxuICAgICAgKChjYywgbm9kZSkgOjogb2JzLCBPcGVyYXRvci5EZXBTZXQudW5pb24gcmRlcHMgZGVwcyksIGNhY2hlXG4gICAgfCBOb25lIC0+IGFjY1xuICApIGVsc2VcbiAgICBhY2NcblxubGV0IG9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggYWNjIG5vZGUgc2l0ZSA9XG4gIGZyb21fZWRnZSB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggYWNjIG5vZGUgc2l0ZSBOYXZpZ2F0aW9uLlRvTm90aGluZ1xuXG5sZXQgb2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggYWNjIG5vZGUgc2l0ZSBpZCA9XG4gIGZyb21fZWRnZSB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggYWNjIG5vZGUgc2l0ZSAoTmF2aWdhdGlvbi5Ub0ludGVybmFsIGlkKVxuXG5sZXQgb2JzZXJ2YWJsZXNfZnJvbV9saW5rIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2MgbiBzaXRlIG4nIHNpdGUnID1cbiAgZnJvbV9lZGdlIGRvbWFpbiB+ZGVidWdfbW9kZSBncmFwaCBhY2MgbiBzaXRlXG4gICAgKE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIG4nLCBzaXRlJykpXG5cbm1vZHVsZSBBZ2VudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBFeGlzdGluZyBvZiBBZ2VudC50ICogaW50IHwgRnJlc2ggb2YgaW50ICogaW50ICgqIHR5cGUsIGlkICopXG5cbiAgbGV0IHJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIGlkJykgYXMgeCAtPlxuICAgICAgaWYgaWQgPD4gaWQnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuJyA9IEFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpbmogbiBpblxuICAgICAgICBpZiBuID09IG4nIHRoZW5cbiAgICAgICAgICB4XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBFeGlzdGluZyAobicsIGlkJylcbiAgICAgIClcbiAgICB8IEZyZXNoIF8gYXMgeCAtPiB4XG5cbiAgbGV0IHByaW50ID9zaWdzIGYgPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIGlkKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLyolaSovXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIG4gaWRcbiAgICB8IEZyZXNoICh0eSwgaSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS8qJXQgJWkqL1wiXG4gICAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnRcbiAgICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgIHR5IFBwLm51IGlcblxuICBsZXQgcHJpbnRfc2l0ZSA/c2lncyBwbGFjZSBmIHNpdGUgPVxuICAgIG1hdGNoIHBsYWNlIHdpdGhcbiAgICB8IEV4aXN0aW5nIChuLCBfKSAtPiBBZ2VudC5wcmludF9zaXRlID9zaWdzIG4gZiBzaXRlXG4gICAgfCBGcmVzaCAodHksIF8pIC0+XG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIHNpdGVcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgdHkgZiBzaXRlKVxuXG4gIGxldCBwcmludF9pbnRlcm5hbCA/c2lncyBwbGFjZSBzaXRlIGYgaWQgPVxuICAgIG1hdGNoIHBsYWNlIHdpdGhcbiAgICB8IEV4aXN0aW5nIChuLCBfKSAtPiBBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBuIHNpdGUgZiBpZFxuICAgIHwgRnJlc2ggKHR5LCBfKSAtPlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaX4laVwiIHNpdGUgaWRcbiAgICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICAgIFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgdHkgc2l0ZSBmIChTb21lIGlkKSlcblxuICBsZXQgZ2V0X3R5cGUgPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LnNvcnQgblxuICAgIHwgRnJlc2ggKGksIF8pIC0+IGlcblxuICBsZXQgZ2V0X2lkID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBfKSAtPiBBZ2VudC5pZCBuXG4gICAgfCBGcmVzaCAoXywgaSkgLT4gaVxuXG4gIGxldCBpc19mcmVzaCA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyBfIC0+IGZhbHNlXG4gICAgfCBGcmVzaCBfIC0+IHRydWVcblxuICBsZXQgY29uY3JldGl6ZSB+ZGVidWdfbW9kZSAoaW5qX25vZGVzLCBpbmpfZnJlc2gpID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCkgLT4gZ2V0IH5kZWJ1Z19tb2RlIChuLCBpZCkgaW5qX25vZGVzLCBBZ2VudC5zb3J0IG5cbiAgICB8IEZyZXNoICh0eSwgaWQpIC0+XG4gICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgaW5qX2ZyZXNoIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IHgsIHR5XG4gICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCB0b195b2pzb24gPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIHR5KSAtPlxuICAgICAgKGBBc3NvY1xuICAgICAgICAgW1xuICAgICAgICAgICAoIFwiRXhpc3RpbmdcIixcbiAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICBgQXNzb2MgWyBcImFnZW50XCIsIEFnZW50LnRvX2pzb24gbiBdOyBgQXNzb2MgWyBcInR5cGVcIiwgYEludCB0eSBdO1xuICAgICAgICAgICAgICAgXSApO1xuICAgICAgICAgXVxuICAgICAgICA6IFlvanNvbi5CYXNpYy50KVxuICAgIHwgRnJlc2ggKGlkLCB0eSkgLT5cbiAgICAgIGBBc3NvYyBbIFwiRnJlc2hcIiwgYEFzc29jIFsgXCJpZFwiLCBgSW50IGlkOyBcInR5cGVcIiwgYEludCB0eSBdIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcIkV4aXN0aW5nXCIsIGBMaXN0IGxpc3QpIF0gLT5cbiAgICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgWyBgQXNzb2MgWyAoXCJhZ2VudFwiLCBhKSBdOyBgQXNzb2MgWyAoXCJ0eXBlXCIsIGBJbnQgdHkpIF0gXSAtPlxuICAgICAgICBFeGlzdGluZyAoQWdlbnQub2ZfanNvbiBhLCB0eSlcbiAgICAgIHwgeCA6OiBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG4gICAgICB8IFtdIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgYE51bGwpKSlcbiAgICB8IGBBc3NvYyBbIChcIkZyZXNoXCIsIGEpIF0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgIHwgYEFzc29jIFsgKFwiaWRcIiwgYEludCBpZCk7IChcInR5cGVcIiwgYEludCB0eSkgXSAtPiBGcmVzaCAoaWQsIHR5KVxuICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGFnZW50X25hbWUgPSBpbnRcbnR5cGUgc2l0ZV9uYW1lID0gaW50XG50eXBlIGludGVybmFsX3N0YXRlID0gaW50XG50eXBlIGJpbmRpbmdfdHlwZSA9IGFnZW50X25hbWUgKiBzaXRlX25hbWVcbnR5cGUgYWJzdHJhY3QgPSBNYXRjaGluZy5BZ2VudC50XG50eXBlIGNvbmNyZXRlID0gQWdlbnQudFxudHlwZSAnYSBzaXRlID0gJ2EgKiBzaXRlX25hbWVcblxudHlwZSAnYSB0ZXN0ID1cbiAgfCBJc19IZXJlIG9mICdhXG4gIHwgSGFzX0ludGVybmFsIG9mICdhIHNpdGUgKiBpbnRlcm5hbF9zdGF0ZVxuICB8IElzX0ZyZWUgb2YgJ2Egc2l0ZVxuICB8IElzX0JvdW5kIG9mICdhIHNpdGVcbiAgfCBIYXNfQmluZGluZ190eXBlIG9mICdhIHNpdGUgKiBiaW5kaW5nX3R5cGVcbiAgfCBJc19Cb3VuZF90byBvZiAnYSBzaXRlICogJ2Egc2l0ZVxuXG50eXBlICdhIGFjdGlvbiA9XG4gIHwgQ3JlYXRlIG9mICdhICogKHNpdGVfbmFtZSAqIGludGVybmFsX3N0YXRlIG9wdGlvbikgbGlzdCAoKiBwb3VycXVvaSDDp2EgKilcbiAgfCBNb2RfaW50ZXJuYWwgb2YgJ2Egc2l0ZSAqIGludGVybmFsX3N0YXRlXG4gIHwgQmluZCBvZiAnYSBzaXRlICogJ2Egc2l0ZVxuICB8IEJpbmRfdG8gb2YgJ2Egc2l0ZSAqICdhIHNpdGVcbiAgfCBGcmVlIG9mICdhIHNpdGVcbiAgfCBSZW1vdmUgb2YgJ2FcblxuKCogVGhlIHNlbWFudGljcyBvZiBjb25jcmV0ZSBhY3Rpb25zIHNlZW1zIHRvIGJlIHRoZSBmb2xsb3dpbmcgb25lLlxuXG4gICAtIFdoZW4gYW4gYWdlbnQgaXMgcmVtb3ZlZCwgbm8gb3RoZXIgYWN0aW9uIGlzIHN0b3JlZCBhYm91dCBpdCAoaW5jbHVkaW5nIGJvbmQgcmVsZWFzaW5nKS5cbiAgIC0gQ3JlYXRlZCBhZ2VudHMgYXJlIGNyZWF0ZWQgd2l0aG91dCBkZWZhdWx0IGJpbmRpbmcvaW50ZXJuYWwgc3RhdGVzLlxuICAgLSBCb25kcyBhcmUgaW5zZXJ0ZWQgdGhhbmtzIHRvIHR3byBzeW1tZXRyaWMgYWN0aW9ucyAoQmluZF90byAuLi4pICopXG5cbmxldCB3ZWlnaHQgYWN0aW9uID1cbiAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgfCBDcmVhdGUgXyAtPiAxXG4gIHwgTW9kX2ludGVybmFsIF8gfCBCaW5kIF8gfCBCaW5kX3RvIF8gfCBGcmVlIF8gLT4gMlxuICB8IFJlbW92ZSBfIC0+IDBcblxubGV0IHdlaWdodF9yZXZlcnNlIGFjdGlvbiA9XG4gIG1hdGNoIGFjdGlvbiB3aXRoXG4gIHwgQ3JlYXRlIF8gLT4gMVxuICB8IE1vZF9pbnRlcm5hbCBfIHwgQmluZCBfIHwgQmluZF90byBfIHwgRnJlZSBfIC0+IDBcbiAgfCBSZW1vdmUgXyAtPiAyXG5cbmxldCBzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0ID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHQgMlxubGV0IHNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3RfcmV2ZXJzZSA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0X3JldmVyc2UgMlxubGV0IHNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3QgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodCAyXG5sZXQgc29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdF9yZXZlcnNlID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHRfcmV2ZXJzZSAyXG5cbnR5cGUgJ2EgYmluZGluZ19zdGF0ZSA9XG4gIHwgQU5ZXG4gIHwgRlJFRVxuICB8IEJPVU5EXG4gIHwgQk9VTkRfVFlQRSBvZiBiaW5kaW5nX3R5cGVcbiAgfCBCT1VORF90byBvZiAnYSBzaXRlXG5cbnR5cGUgJ2EgZXZlbnQgPSB7XG4gIHRlc3RzOiAnYSB0ZXN0IGxpc3QgbGlzdDtcbiAgYWN0aW9uczogJ2EgYWN0aW9uIGxpc3Q7XG4gIHNpZGVfZWZmZWN0c19zcmM6ICgnYSBzaXRlICogJ2EgYmluZGluZ19zdGF0ZSkgbGlzdDtcbiAgc2lkZV9lZmZlY3RzX2RzdDogJ2Egc2l0ZSBsaXN0O1xuICBjb25uZWN0aXZpdHlfdGVzdHM6ICdhIHRlc3QgbGlzdDtcbn1cblxubGV0IGVtcHR5X2V2ZW50ID1cbiAge1xuICAgIHRlc3RzID0gW107XG4gICAgYWN0aW9ucyA9IFtdO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPSBbXTtcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID0gW107XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID0gW107XG4gIH1cblxubGV0IGNvbmNyZXRpemVfYmluZGluZ19zdGF0ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICB8IEFOWSAtPiBBTllcbiAgfCBGUkVFIC0+IEZSRUVcbiAgfCBCT1VORCAtPiBCT1VORFxuICB8IEJPVU5EX1RZUEUgYnQgLT4gQk9VTkRfVFlQRSBidFxuICB8IEJPVU5EX3RvIChwbCwgcykgLT5cbiAgICBCT1VORF90byAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG5cbmxldCBjb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIHBsIC0+IElzX0hlcmUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsKVxuICB8IEhhc19JbnRlcm5hbCAoKHBsLCBzKSwgaSkgLT5cbiAgICBIYXNfSW50ZXJuYWwgKChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksIGkpXG4gIHwgSXNfRnJlZSAocGwsIHMpIC0+XG4gICAgSXNfRnJlZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gIHwgSXNfQm91bmQgKHBsLCBzKSAtPlxuICAgIElzX0JvdW5kIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgfCBIYXNfQmluZGluZ190eXBlICgocGwsIHMpLCB0KSAtPlxuICAgIEhhc19CaW5kaW5nX3R5cGUgKChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksIHQpXG4gIHwgSXNfQm91bmRfdG8gKChwbCwgcyksIChwbCcsIHMnKSkgLT5cbiAgICBJc19Cb3VuZF90b1xuICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwnLCBzJykgKVxuXG5sZXQgY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKHBsLCBpKSAtPlxuICAgIENyZWF0ZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIGkpXG4gIHwgTW9kX2ludGVybmFsICgocGwsIHMpLCBpKSAtPlxuICAgIE1vZF9pbnRlcm5hbCAoKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSwgaSlcbiAgfCBCaW5kICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgQmluZFxuICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwnLCBzJykgKVxuICB8IEJpbmRfdG8gKChwbCwgcyksIChwbCcsIHMnKSkgLT5cbiAgICBCaW5kX3RvXG4gICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCcsIHMnKSApXG4gIHwgRnJlZSAocGwsIHMpIC0+IEZyZWUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICB8IFJlbW92ZSBwbCAtPiBSZW1vdmUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsKVxuXG5sZXQgdHJ5X2NvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCBhY3Rpb25zID1cbiAgdHJ5IFNvbWUgKGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCBhY3Rpb25zKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG4oKiBUaGUgYWN0aW9uIGlzIGRlYWxpbmcgd2l0aCBhIGZyZXNoIGFnZW50ICopXG5cbmxldCBjb25jcmV0aXplX2V2ZW50IH5kZWJ1Z19tb2RlIGluajJncmFwaCBlID1cbiAge1xuICAgIHRlc3RzID1cbiAgICAgIExpc3QubWFwIChMaXN0LnJldl9tYXAgKGNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGgpKSBlLnRlc3RzO1xuICAgIGFjdGlvbnMgPVxuICAgICAgKCogYWN0aW9ucyBhcmUgcmVvcmRlcmVkIHRoZSBmb2xsb3dpbmcgd2F5OlxuICAgICAgICAgMSkgUmVtb3ZlIGFjdGlvbnNcbiAgICAgICAgIDIpIENyZWF0aW9uIGFjdGlvbnNcbiAgICAgICAgIDMpIEFueXRoaW5nIGVsc2UuKilcbiAgICAgIHNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3RcbiAgICAgICAgKExpc3QucmV2X21hcCAoY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qMmdyYXBoKSBlLmFjdGlvbnMpO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKChwbCwgcyksIGIpIC0+XG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLFxuICAgICAgICAgICAgY29uY3JldGl6ZV9iaW5kaW5nX3N0YXRlIH5kZWJ1Z19tb2RlIGluajJncmFwaCBiICkpXG4gICAgICAgIGUuc2lkZV9lZmZlY3RzX3NyYztcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIChwbCwgcykgLT4gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gICAgICAgIGUuc2lkZV9lZmZlY3RzX2RzdDtcbiAgICBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgTGlzdC5yZXZfbWFwIChjb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGUgaW5qMmdyYXBoKSBlLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgfVxuXG5sZXQgbWFwX3Rlc3QgZiA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBhXG4gIHwgSGFzX0ludGVybmFsICgoYSwgXyksIF8pXG4gIHwgSXNfRnJlZSAoYSwgXylcbiAgfCBJc19Cb3VuZCAoYSwgXylcbiAgfCBIYXNfQmluZGluZ190eXBlICgoYSwgXyksIF8pXG4gIHwgSXNfQm91bmRfdG8gKChhLCBfKSwgXykgLT5cbiAgICBmIGFcblxubGV0IG1hcF9hY3Rpb24gZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChhLCBfKVxuICB8IE1vZF9pbnRlcm5hbCAoKGEsIF8pLCBfKVxuICB8IEJpbmQgKChhLCBfKSwgXylcbiAgfCBCaW5kX3RvICgoYSwgXyksIF8pXG4gIHwgRnJlZSAoYSwgXylcbiAgfCBSZW1vdmUgYSAtPlxuICAgIGYgYVxuXG5sZXQgbWF0Y2hfdGVzdHMgPSBmdW5jdGlvblxuICAoKiBhYnN0cmFjdCwgY29uY3JldGUqKVxuICB8IElzX0hlcmUgYSwgSXNfSGVyZSBiIC0+IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgfCBIYXNfSW50ZXJuYWwgKChhLCBzKSwgaSksIEhhc19JbnRlcm5hbCAoKGIsIHQpLCBqKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHQgJiYgaSA9IGpcbiAgfCBIYXNfQmluZGluZ190eXBlICgoYSwgcyksIGMpLCBIYXNfQmluZGluZ190eXBlICgoYiwgdCksIGQpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdCAmJiBjID0gZFxuICB8IElzX0ZyZWUgKGEsIHMpLCBJc19GcmVlIChiLCB0KSB8IElzX0JvdW5kIChhLCBzKSwgSXNfQm91bmQgKGIsIHQpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdFxuICB8IElzX0JvdW5kX3RvICgoYSwgcyksIChjLCB1KSksIElzX0JvdW5kX3RvICgoYiwgdCksIChkLCB2KSkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gICAgJiYgcyA9IHRcbiAgICAmJiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBjID0gQWdlbnQuc29ydCBkXG4gICAgJiYgdSA9IHZcbiAgfCBJc19IZXJlIF8sIF9cbiAgfCBIYXNfSW50ZXJuYWwgXywgX1xuICB8IElzX0ZyZWUgXywgX1xuICB8IElzX0JvdW5kIF8sIF9cbiAgfCBJc19Cb3VuZF90byBfLCBfXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSBfLCBfIC0+XG4gICAgZmFsc2VcblxubGV0IG1hdGNoX2FjdGlvbnMgPSBmdW5jdGlvblxuICAoKiBhYnN0cmFjdCwgY29uY3JldGUqKVxuICB8IENyZWF0ZSAoYSwgYWxzKSwgQ3JlYXRlIChiLCBibHMpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICAgICYmIExpc3QuZm9sZF9sZWZ0MlxuICAgICAgICAgKGZ1biBvayAocywgaSkgKHQsIGopIC0+IG9rICYmIHMgPSB0ICYmIGkgPSBqKVxuICAgICAgICAgdHJ1ZSBhbHMgYmxzXG4gIHwgTW9kX2ludGVybmFsICgoYSwgcyksIGkpLCBNb2RfaW50ZXJuYWwgKChiLCB0KSwgaikgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0ICYmIGkgPSBqXG4gIHwgQmluZCAoKGEsIHMpLCAoYywgdSkpLCBCaW5kICgoYiwgdCksIChkLCB2KSlcbiAgfCBCaW5kX3RvICgoYSwgcyksIChjLCB1KSksIEJpbmRfdG8gKChiLCB0KSwgKGQsIHYpKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgICAmJiBzID0gdFxuICAgICYmIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGMgPSBBZ2VudC5zb3J0IGRcbiAgICAmJiB1ID0gdlxuICB8IEZyZWUgKGEsIHMpLCBGcmVlIChiLCB0KSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHRcbiAgfCBSZW1vdmUgYSwgUmVtb3ZlIGIgLT4gTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICB8IENyZWF0ZSBfLCBfXG4gIHwgTW9kX2ludGVybmFsIF8sIF9cbiAgfCBCaW5kIF8sIF9cbiAgfCBCaW5kX3RvIF8sIF9cbiAgfCBGcmVlIF8sIF9cbiAgfCBSZW1vdmUgXywgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBnZXRfaWRzIGYgYXV4ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyBhIC0+XG4gICAgICBsZXQgaWQgPSBmIGEgaW5cbiAgICAgIGlmIExpc3QubWVtIGlkIGFjYyB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICBpZCA6OiBhY2MpXG4gICAgYXV4XG5cbmxldCByZWMgbWF0Y2hfcXVhcmtzIGFfcXVhcmtzIGNfcXVhcmtzIGZtYXRjaCA9XG4gIG1hdGNoIGFfcXVhcmtzIHdpdGhcbiAgfCBhcSA6OiBhcXMgLT5cbiAgICBsZXQgY3FzLCByZXN0ID0gTGlzdC5wYXJ0aXRpb24gKGZ1biBjcSAtPiBmbWF0Y2ggKGFxLCBjcSkpIGNfcXVhcmtzIGluXG4gICAgaWYgY3FzID0gW10gdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICBtYXRjaF9xdWFya3MgYXFzIHJlc3QgZm1hdGNoXG4gIHwgW10gLT4gY19xdWFya3MgPSBbXVxuXG5sZXQgcmVjIGZpbmRfbWF0Y2ggdGVzdHMgYWN0aW9ucyBjdGVzdHMgY2FjdGlvbnMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJhYnN0cmFjdCBhbmQgY29uY3JldCBxdWFya3MgZG9uJ3QgbWF0Y2hcIikpXG4gIHwgY2lkIDo6IHRsIC0+XG4gICAgbGV0IGN0ZXN0cycgPVxuICAgICAgTGlzdC5maWx0ZXIgKGZ1biB0ZXN0IC0+IG1hcF90ZXN0IChmdW4gYSAtPiBBZ2VudC5pZCBhID0gY2lkKSB0ZXN0KSBjdGVzdHNcbiAgICBpblxuICAgIGxldCBjYWN0aW9ucycgPVxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biBhY3QgLT4gbWFwX2FjdGlvbiAoZnVuIGEgLT4gQWdlbnQuaWQgYSA9IGNpZCkgYWN0KVxuICAgICAgICBjYWN0aW9uc1xuICAgIGluXG4gICAgaWZcbiAgICAgIG1hdGNoX3F1YXJrcyB0ZXN0cyBjdGVzdHMnIG1hdGNoX3Rlc3RzXG4gICAgICAmJiBtYXRjaF9xdWFya3MgYWN0aW9ucyBjYWN0aW9ucycgbWF0Y2hfYWN0aW9uc1xuICAgIHRoZW5cbiAgICAgIGNpZFxuICAgIGVsc2VcbiAgICAgIGZpbmRfbWF0Y2ggdGVzdHMgYWN0aW9ucyBjdGVzdHMgY2FjdGlvbnMgdGxcblxubGV0IG1hdGNoaW5nX2Fic3RyYWN0X2NvbmNyZXRlIH5kZWJ1Z19tb2RlIGFlIGNlID1cbiAgbGV0IGFlX3Rlc3RzID0gTGlzdC5mbGF0dGVuIGFlLnRlc3RzIGluXG4gIGxldCBjZV90ZXN0cyA9IExpc3QuZmxhdHRlbiBjZS50ZXN0cyBpblxuICBsZXQgYWJzdHJhY3RfaWRzID1cbiAgICBnZXRfaWRzXG4gICAgICAobWFwX2FjdGlvbiBNYXRjaGluZy5BZ2VudC5nZXRfaWQpXG4gICAgICAoZ2V0X2lkcyAobWFwX3Rlc3QgTWF0Y2hpbmcuQWdlbnQuZ2V0X2lkKSBbXSBhZV90ZXN0cylcbiAgICAgIGFlLmFjdGlvbnNcbiAgaW5cbiAgbGV0IGNvbmNyZXRlX2lkcyA9XG4gICAgZ2V0X2lkcyAobWFwX2FjdGlvbiBBZ2VudC5pZClcbiAgICAgIChnZXRfaWRzIChtYXBfdGVzdCBBZ2VudC5pZCkgW10gY2VfdGVzdHMpXG4gICAgICBjZS5hY3Rpb25zXG4gIGluXG4gIGxldCBhdmFpbGFibGVfaWRzIHVzZWQgPVxuICAgIExpc3QuZmlsdGVyXG4gICAgICAoZnVuIGkgLT4gbm90IChNb2RzLkludFNldC5tZW0gaSAoUmVuYW1pbmcuaW1hZ2UgdXNlZCkpKVxuICAgICAgY29uY3JldGVfaWRzXG4gIGluXG4gIGxldCBwYXJ0aXRpb24gZm1hcCBpID1cbiAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIHEgLT4gZm1hcCAoZnVuIGEgLT4gTWF0Y2hpbmcuQWdlbnQuZ2V0X2lkIGEgPSBpKSBxKVxuICBpblxuICBsZXQgbWF0Y2hpbmcgPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBsZXQgaW5qZWN0aXZlID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgaSAtPlxuICAgICAgICBhY2NcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IHRlc3RzLCBfID0gcGFydGl0aW9uIG1hcF90ZXN0IGkgYWVfdGVzdHMgaW5cbiAgICAgICAgbGV0IGFjdGlvbnMsIF8gPSBwYXJ0aXRpb24gbWFwX2FjdGlvbiBpIGFlLmFjdGlvbnMgaW5cbiAgICAgICAgbGV0IGogPVxuICAgICAgICAgIGZpbmRfbWF0Y2ggdGVzdHMgYWN0aW9ucyBjZV90ZXN0cyBjZS5hY3Rpb25zIChhdmFpbGFibGVfaWRzIG1hdGNoaW5nKVxuICAgICAgICBpblxuICAgICAgICBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpIGogbWF0Y2hpbmcpXG4gICAgICB0cnVlIGFic3RyYWN0X2lkc1xuICBpblxuICBpZiBpbmplY3RpdmUgdGhlblxuICAgIFNvbWUgbWF0Y2hpbmdcbiAgZWxzZVxuICAgIE5vbmVcblxubGV0IHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmICgoaWQsIG5hKSBhcyBhZ2VudCkgPVxuICB0cnlcbiAgICBpZiBmIGlkID09IGlkIHRoZW5cbiAgICAgIGFnZW50XG4gICAgZWxzZVxuICAgICAgZiBpZCwgbmFcbiAgd2l0aCBOb3RfZm91bmQgLT4gYWdlbnRcblxubGV0IHN1YnN0X21hcF9zaXRlIGYgKChhZywgcykgYXMgc2l0ZSkgPVxuICBsZXQgYWcnID0gZiBhZyBpblxuICBpZiBhZyA9PSBhZycgdGhlblxuICAgIHNpdGVcbiAgZWxzZVxuICAgIGFnJywgc1xuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZiA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBhZ2VudCBhcyB4IC0+XG4gICAgbGV0IGFnZW50JyA9IGYgYWdlbnQgaW5cbiAgICBpZiBhZ2VudCA9PSBhZ2VudCcgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIElzX0hlcmUgYWdlbnQnXG4gIHwgSGFzX0ludGVybmFsIChzaXRlLCBpbnRlcm5hbF9zdGF0ZSkgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEhhc19JbnRlcm5hbCAoc2l0ZScsIGludGVybmFsX3N0YXRlKVxuICB8IElzX0ZyZWUgc2l0ZSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfRnJlZSBzaXRlJ1xuICB8IElzX0JvdW5kIHNpdGUgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIElzX0JvdW5kIHNpdGUnXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgYmluZGluZ190eXBlKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZScsIGJpbmRpbmdfdHlwZSlcbiAgfCBJc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUxJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZTEgaW5cbiAgICBsZXQgc2l0ZTInID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlMiBpblxuICAgIGlmIHNpdGUxID09IHNpdGUxJyAmJiBzaXRlMiA9PSBzaXRlMicgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIElzX0JvdW5kX3RvIChzaXRlMScsIHNpdGUyJylcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZikgeFxuXG5sZXQgc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0XG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3RfdGVzdCB+ZGVidWdfbW9kZSBpZCBpbmogeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBzdWJzdF9tYXAyX2FnZW50X2luX2FjdGlvbiBmIGYnID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKGFnZW50LCBsaXN0KSBhcyB4IC0+XG4gICAgbGV0IGFnZW50JyA9IGYnIGFnZW50IGluXG4gICAgaWYgYWdlbnQgPT0gYWdlbnQnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBDcmVhdGUgKGFnZW50JywgbGlzdClcbiAgfCBNb2RfaW50ZXJuYWwgKHNpdGUsIGkpIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgTW9kX2ludGVybmFsIChzaXRlJywgaSlcbiAgfCBCaW5kIChzMSwgczIpIGFzIHggLT5cbiAgICBsZXQgczEnID0gc3Vic3RfbWFwX3NpdGUgZicgczEgaW5cbiAgICBsZXQgczInID0gc3Vic3RfbWFwX3NpdGUgZicgczIgaW5cbiAgICBpZiBzMSA9PSBzMScgJiYgczIgPT0gczInIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBCaW5kIChzMScsIHMyJylcbiAgfCBCaW5kX3RvIChzMSwgczIpIGFzIHggLT5cbiAgICBsZXQgczEnID0gc3Vic3RfbWFwX3NpdGUgZicgczEgaW5cbiAgICBsZXQgczInID0gc3Vic3RfbWFwX3NpdGUgZicgczIgaW5cbiAgICBpZiBzMSA9PSBzMScgJiYgczIgPT0gczInIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBCaW5kX3RvIChzMScsIHMyJylcbiAgfCBGcmVlIHNpdGUgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYnIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBGcmVlIHNpdGUnXG4gIHwgUmVtb3ZlIGFnZW50IGFzIHggLT5cbiAgICBsZXQgYWdlbnQnID0gZiBhZ2VudCBpblxuICAgIGlmIGFnZW50ID09IGFnZW50JyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgUmVtb3ZlIGFnZW50J1xuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiBmIHggPSBzdWJzdF9tYXAyX2FnZW50X2luX2FjdGlvbiBmIGYgeFxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZikgeFxuXG5sZXQgc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvblxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X2FjdGlvbiB+ZGVidWdfbW9kZSBpZCBpbmogeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHN1YnN0X21hcF9iaW5kaW5nX3N0YXRlIGYgPSBmdW5jdGlvblxuICB8IChBTlkgfCBGUkVFIHwgQk9VTkQgfCBCT1VORF9UWVBFIF8pIGFzIHggLT4geFxuICB8IEJPVU5EX3RvIChhZywgcykgYXMgeCAtPlxuICAgIGxldCBhZycgPSBmIGFnIGluXG4gICAgaWYgYWcgPT0gYWcnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBCT1VORF90byAoYWcnLCBzKVxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IGYgKChzaXRlLCBic3RhdGUpIGFzIHgpID1cbiAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gIGxldCBic3RhdGUnID0gc3Vic3RfbWFwX2JpbmRpbmdfc3RhdGUgZiBic3RhdGUgaW5cbiAgaWYgc2l0ZSA9PSBzaXRlJyAmJiBic3RhdGUgPT0gYnN0YXRlJyB0aGVuXG4gICAgeFxuICBlbHNlXG4gICAgc2l0ZScsIGJzdGF0ZSdcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2VmZmVjdCBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2VmZmVjdCBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2VmZmVjdFxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X3NpZGVfZWZmZWN0IH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQgZiBlID1cbiAge1xuICAgIHRlc3RzID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYpKVxuICAgICAgICBlLnRlc3RzO1xuICAgIGFjdGlvbnMgPSBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIGYpIGUuYWN0aW9ucztcbiAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCBmKSBlLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9zaXRlIGYpIGUuc2lkZV9lZmZlY3RzX2RzdDtcbiAgICBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikgZS5jb25uZWN0aXZpdHlfdGVzdHM7XG4gIH1cblxubGV0IHN1YnN0X21hcDJfYWdlbnRfaW5fZXZlbnQgZiBmJyBlID1cbiAge1xuICAgIHRlc3RzID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYpKVxuICAgICAgICBlLnRlc3RzO1xuICAgIGFjdGlvbnMgPSBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXAyX2FnZW50X2luX2FjdGlvbiBmIGYnKSBlLmFjdGlvbnM7XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgZikgZS5zaWRlX2VmZmVjdHNfc3JjO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfc2l0ZSBmKSBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYpIGUuY29ubmVjdGl2aXR5X3Rlc3RzO1xuICB9XG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2V2ZW50IChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZikgeFxuXG5sZXQgc3Vic3RfbWFwMl9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCBmIGYnIHggPVxuICBzdWJzdF9tYXAyX2FnZW50X2luX2V2ZW50XG4gICAgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKVxuICAgIChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZicpXG4gICAgeFxuXG5sZXQgc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfZXZlbnRcbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9ldmVudCB+ZGVidWdfbW9kZSBpZCBpbmogeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgcHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncyBmIChhZ2VudCwgaWQpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCJcbiAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICBhZ2VudFxuICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnZW50KVxuICAgIGlkXG5cbmxldCBwcmludF9jb25jcmV0ZV90ZXN0ID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYWdlbnQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfSGVyZSglYSlcIiAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSkgYWdlbnRcbiAgfCBIYXNfSW50ZXJuYWwgKChhZywgaWQpLCBpbnQpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkhhc19JbnRlcm5hbCglYS4lYSlcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIGFnIGlkKVxuICAgICAgaW50XG4gIHwgSXNfRnJlZSBzaXRlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0ZyZWUoJWEpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgfCBJc19Cb3VuZCBzaXRlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0JvdW5kKCVhKVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgKHR5LCBzaWQpKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJCdHlwZSglYSwldClcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpLiVpXCIgdHkgc2lkXG4gICAgICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCJcbiAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgIHR5XG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyB0eSlcbiAgICAgICAgICAgIHNpZClcbiAgfCBJc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19Cb3VuZCglYSwlYSlcIlxuICAgICAgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpXG4gICAgICBzaXRlMVxuICAgICAgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpXG4gICAgICBzaXRlMlxuXG5sZXQgcHJpbnRfY29uY3JldGVfYWN0aW9uID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoKChfLCB0eSkgYXMgYWdlbnQpLCBsaXN0KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJDcmVhdGUoJWFbQFs8aD4lYUBdXSlcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ2VudFxuICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmICh4LCB5KSAtPlxuICAgICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyB0eSB4IGYgeVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAobWF0Y2ggeSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiB4XG4gICAgICAgICAgICAgfCBTb21lIHkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpLiVpXCIgeCB5KSkpXG4gICAgICBsaXN0XG4gIHwgTW9kX2ludGVybmFsICgoYWcsIGlkKSwgaW50KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJNb2QoJWEuJWEpXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBpZClcbiAgICAgIGludFxuICB8IEJpbmQgKHNpdGUxLCBzaXRlMikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQmluZCglYSwlYSlcIlxuICAgICAgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpXG4gICAgICBzaXRlMVxuICAgICAgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpXG4gICAgICBzaXRlMlxuICB8IEJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQmluZF90byglYSwlYSlcIlxuICAgICAgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpXG4gICAgICBzaXRlMVxuICAgICAgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpXG4gICAgICBzaXRlMlxuICB8IEZyZWUgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJGcmVlKCVhKVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gIHwgUmVtb3ZlIGFnZW50IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlJlbW92ZSglYSlcIiAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSkgYWdlbnRcblxubGV0IHByaW50X2NvbmNyZXRlX2JpbmRpbmdfc3RhdGUgP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgQU5ZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIipcIlxuICB8IEZSRUUgLT4gKClcbiAgfCBCT1VORCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIhX1wiXG4gIHwgQk9VTkRfVFlQRSAocywgYSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiISVhLiVhXCJcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3Mgc1xuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBhXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lnc1xuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBzXG4gIHwgQk9VTkRfdG8gKChhZ19pZCwgYWcpLCBzKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIhJWFfJWkuJWFcIlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3NcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgYWcgYWdfaWRcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgc1xuXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gIFwiXFxcImJpbmRpbmdfdHlwZVxcXCI6e1xcXCJ0eXBlXFxcIjowLFxcXCJzaXRlXFxcIjoxfSxcXFwicXVhcmtcXFwiOntcXFwiYWdlbnRcXFwiOjAsXFxcInNpdGVcXFwiOjF9LFxcXCJ0ZXN0XFxcIjpbXFxcIklzX2hlcmVcXFwiLFxcXCJIYXNfSW50ZXJuYWxcXFwiLFxcXCJJc19GcmVlXFxcIixcXFwiSXNfQm91bmRcXFwiLFxcXCJIYXNfQmluZGluZ190eXBlXFxcIixcXFwiSXNfQm91bmRfdG9cXFwiXSxcXFwiYWN0aW9uc1xcXCI6W1xcXCJDcmVhdGVcXFwiLFxcXCJNb2RfaW50ZXJuYWxcXFwiLFxcXCJCaW5kXFxcIixcXFwiQmluZF90b1xcXCIsXFxcIkZyZWVcXFwiLFxcXCJSZW1vdmVcXFwiXSxcXFwiYmluZGluZ19zdGF0ZVxcXCI6W1xcXCJBTllcXFwiLFxcXCJGUkVFXFxcIixcXFwiQk9VTkRcXFwiLFxcXCJCT1VORF9UWVBFXFxcIixcXFwiQk9VTkRfdG9cXFwiXSxcXFwiZXZlbnRcXFwiOntcXFwidGVzdHNcXFwiOjAsXFxcImFjdGlvbnNcXFwiOjEsXFxcInNpZGVfZWZmZWN0X3NyY1xcXCI6MixcXFwic2lkZV9lZmZlY3RfZHN0XFxcIjozLFxcXCJjb25uZWN0aXZpdHlfdGVzdHNcXFwiOjR9XCJcblxubGV0IHdyaXRlX2JpbmRpbmdfdHlwZSBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBhXG5cbmxldCByZWFkX2JpbmRpbmdfdHlwZSBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiXG5cbmxldCBiaW5kaW5nX3R5cGVfdG9fanNvbiAodHksIHMpID0gYExpc3QgWyBgSW50IHR5OyBgSW50IHMgXVxuXG5sZXQgYmluZGluZ190eXBlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCB0eTsgYEludCBzIF0gLT4gdHksIHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGJpbmRpbmdfdHlwZVwiLCB4KSlcblxubGV0IHdyaXRlX3F1YXJrIGYgb2IgYSA9XG4gIEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBmIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgYVxuXG5sZXQgcmVhZF9xdWFyayBmIHAgbGIgPSBKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBmIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiXG5sZXQgcXVhcmtfdG9fanNvbiBmIChhZywgcykgPSBgTGlzdCBbIGYgYWc7IGBJbnQgcyBdXG5cbmxldCBxdWFya19vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYWc7IGBJbnQgcyBdIC0+IGYgYWcsIHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBxdWFya1wiLCB4KSlcblxubGV0IHdyaXRlX3Rlc3QgZiBvYiB0ID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggdCB3aXRoXG4gICAgfCBJc19IZXJlIGEgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApOyAoZnVuIG8gLT4gZiBvIGEpIF1cbiAgICB8IEhhc19JbnRlcm5hbCAocywgaSkgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyBpKTtcbiAgICAgIF1cbiAgICB8IElzX0ZyZWUgcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF1cbiAgICB8IElzX0JvdW5kIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdXG4gICAgfCBIYXNfQmluZGluZ190eXBlIChzLCBiKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG9iIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgNCk7XG4gICAgICAgIChmdW4gb2IgLT4gd3JpdGVfcXVhcmsgZiBvYiBzKTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9iaW5kaW5nX3R5cGUgb2IgYik7XG4gICAgICBdXG4gICAgfCBJc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG9iIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgNSk7XG4gICAgICAgIChmdW4gb2IgLT4gd3JpdGVfcXVhcmsgZiBvYiBzMSk7XG4gICAgICAgIChmdW4gb2IgLT4gd3JpdGVfcXVhcmsgZiBvYiBzMik7XG4gICAgICBdKVxuXG5sZXQgcmVhZF90ZXN0IGYgc3QgYiA9XG4gIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAoZnVuIHN0IGIgLT4gZnVuY3Rpb25cbiAgICAgIHwgMCAtPlxuICAgICAgICBsZXQgeSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIGYgc3QgYiBpblxuICAgICAgICBJc19IZXJlIHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IGkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBIYXNfSW50ZXJuYWwgKHMsIGkpXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIElzX0ZyZWUgc1xuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19Cb3VuZCBzXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBiaSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIHJlYWRfYmluZGluZ190eXBlIHN0IGIgaW5cbiAgICAgICAgSGFzX0JpbmRpbmdfdHlwZSAocywgYmkpXG4gICAgICB8IDUgLT5cbiAgICAgICAgbGV0IHMxID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgczIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIElzX0JvdW5kX3RvIChzMSwgczIpXG4gICAgICB8IF8gLT4gWW9qc29uLmpzb25fZXJyb3IgXCJXcm9uZyB0ZXN0XCIgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgdGVzdF90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYSAtPiBgTGlzdCBbIGBJbnQgMDsgZiBhIF1cbiAgfCBIYXNfSW50ZXJuYWwgKHMsIGkpIC0+IGBMaXN0IFsgYEludCAxOyBxdWFya190b19qc29uIGYgczsgYEludCBpIF1cbiAgfCBJc19GcmVlIHMgLT4gYExpc3QgWyBgSW50IDI7IHF1YXJrX3RvX2pzb24gZiBzIF1cbiAgfCBJc19Cb3VuZCBzIC0+IGBMaXN0IFsgYEludCAzOyBxdWFya190b19qc29uIGYgcyBdXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAocywgYikgLT5cbiAgICBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHM7IGJpbmRpbmdfdHlwZV90b19qc29uIGIgXVxuICB8IElzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgYExpc3QgWyBgSW50IDU7IHF1YXJrX3RvX2pzb24gZiBzMTsgcXVhcmtfdG9fanNvbiBmIHMyIF1cblxubGV0IHRlc3Rfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgMDsgYSBdIC0+IElzX0hlcmUgKGYgYSlcbiAgfCBgTGlzdCBbIGBJbnQgMTsgczsgYEludCBpIF0gLT4gSGFzX0ludGVybmFsIChxdWFya19vZl9qc29uIGYgcywgaSlcbiAgfCBgTGlzdCBbIGBJbnQgMjsgcyBdIC0+IElzX0ZyZWUgKHF1YXJrX29mX2pzb24gZiBzKVxuICB8IGBMaXN0IFsgYEludCAzOyBzIF0gLT4gSXNfQm91bmQgKHF1YXJrX29mX2pzb24gZiBzKVxuICB8IGBMaXN0IFsgYEludCA0OyBzOyBiIF0gLT5cbiAgICBIYXNfQmluZGluZ190eXBlIChxdWFya19vZl9qc29uIGYgcywgYmluZGluZ190eXBlX29mX2pzb24gYilcbiAgfCBgTGlzdCBbIGBJbnQgNTsgczE7IHMyIF0gLT5cbiAgICBJc19Cb3VuZF90byAocXVhcmtfb2ZfanNvbiBmIHMxLCBxdWFya19vZl9qc29uIGYgczIpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyB0ZXN0XCIsIHgpKVxuXG5sZXQgd3JpdGVfYWN0aW9uIGYgb2IgYSA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIGEgd2l0aFxuICAgIHwgQ3JlYXRlIChhZywgaW5mbykgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAwKTtcbiAgICAgICAgKGZ1biBvIC0+IGYgbyBhZyk7XG4gICAgICAgIChmdW4gbyAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludFxuICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfaW50KSlcbiAgICAgICAgICAgIG8gaW5mbyk7XG4gICAgICBdXG4gICAgfCBNb2RfaW50ZXJuYWwgKHMsIGkpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcyk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gaSk7XG4gICAgICBdXG4gICAgfCBCaW5kIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMik7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMyKTtcbiAgICAgIF1cbiAgICB8IEJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczIpO1xuICAgICAgXVxuICAgIHwgRnJlZSBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNCk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXVxuICAgIHwgUmVtb3ZlIGEgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDUpOyAoZnVuIG8gLT4gZiBvIGEpIF0pXG5cbmxldCByZWFkX2FjdGlvbiBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IGFnID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX29wdGlvbiBZb2pzb24uQmFzaWMucmVhZF9pbnQpKSlcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgQ3JlYXRlIChhZywgaW5mbylcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IGkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBNb2RfaW50ZXJuYWwgKHMsIGkpXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IHMxID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgczIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEJpbmQgKHMxLCBzMilcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQgczEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBzMiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgQmluZF90byAoczEsIHMyKVxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBGcmVlIHNcbiAgICAgIHwgNSAtPlxuICAgICAgICBsZXQgYSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIGYgc3QgYiBpblxuICAgICAgICBSZW1vdmUgYVxuICAgICAgfCBfIC0+IFlvanNvbi5qc29uX2Vycm9yIFwiV3JvbmcgYWN0aW9uXCIgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgYWN0aW9uX3RvX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChhZywgaW5mbykgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDA7XG4gICAgICAgIGYgYWc7XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgKGZ1biAocywgaSkgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIChgSW50IHNcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gWyBgSW50IGkgXSkpKVxuICAgICAgICAgICAgIGluZm8pO1xuICAgICAgXVxuICB8IE1vZF9pbnRlcm5hbCAocywgaSkgLT4gYExpc3QgWyBgSW50IDE7IHF1YXJrX3RvX2pzb24gZiBzOyBgSW50IGkgXVxuICB8IEJpbmQgKHMxLCBzMikgLT4gYExpc3QgWyBgSW50IDI7IHF1YXJrX3RvX2pzb24gZiBzMTsgcXVhcmtfdG9fanNvbiBmIHMyIF1cbiAgfCBCaW5kX3RvIChzMSwgczIpIC0+IGBMaXN0IFsgYEludCAzOyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG4gIHwgRnJlZSBzIC0+IGBMaXN0IFsgYEludCA0OyBxdWFya190b19qc29uIGYgcyBdXG4gIHwgUmVtb3ZlIGEgLT4gYExpc3QgWyBgSW50IDU7IGYgYSBdXG5cbmxldCBhY3Rpb25fb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgMDsgYWc7IGBMaXN0IGluZm8gXSAtPlxuICAgIENyZWF0ZVxuICAgICAgKCBmIGFnLFxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgTGlzdCBbIGBJbnQgcyBdIC0+IHMsIE5vbmVcbiAgICAgICAgICAgIHwgYExpc3QgWyBgSW50IHM7IGBJbnQgaSBdIC0+IHMsIFNvbWUgaVxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWN0aW9uIGluZm9cIiwgeCkpKVxuICAgICAgICAgIGluZm8gKVxuICB8IGBMaXN0IFsgYEludCAxOyBzOyBgSW50IGkgXSAtPiBNb2RfaW50ZXJuYWwgKHF1YXJrX29mX2pzb24gZiBzLCBpKVxuICB8IGBMaXN0IFsgYEludCAyOyBzMTsgczIgXSAtPiBCaW5kIChxdWFya19vZl9qc29uIGYgczEsIHF1YXJrX29mX2pzb24gZiBzMilcbiAgfCBgTGlzdCBbIGBJbnQgMzsgczE7IHMyIF0gLT4gQmluZF90byAocXVhcmtfb2ZfanNvbiBmIHMxLCBxdWFya19vZl9qc29uIGYgczIpXG4gIHwgYExpc3QgWyBgSW50IDQ7IHMgXSAtPiBGcmVlIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgNTsgYSBdIC0+IFJlbW92ZSAoZiBhKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3JvbmcgYWN0aW9uXCIsIHgpKVxuXG5sZXQgd3JpdGVfYmluZGluZ19zdGF0ZSBmIG9iIGJmID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggYmYgd2l0aFxuICAgIHwgQU5ZIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAwKSBdXG4gICAgfCBGUkVFIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKSBdXG4gICAgfCBCT1VORCAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMikgXVxuICAgIHwgQk9VTkRfVFlQRSBiIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7IChmdW4gbyAtPiB3cml0ZV9iaW5kaW5nX3R5cGUgbyBiKTtcbiAgICAgIF1cbiAgICB8IEJPVU5EX3RvIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA0KTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdKVxuXG5sZXQgcmVhZF9iaW5kaW5nX3N0YXRlIGYgc3QgYiA9XG4gIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAoZnVuIHN0IGIgLT4gZnVuY3Rpb25cbiAgICAgIHwgMCAtPiBBTllcbiAgICAgIHwgMSAtPiBGUkVFXG4gICAgICB8IDIgLT4gQk9VTkRcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQgYiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIHJlYWRfYmluZGluZ190eXBlIHN0IGIgaW5cbiAgICAgICAgQk9VTkRfVFlQRSBiXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEJPVU5EX3RvIHNcbiAgICAgIHwgXyAtPiBZb2pzb24uanNvbl9lcnJvciBcIldyb25nIGJpbmRpbmcgc3RhdGVcIiAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCBiaW5kaW5nX3N0YXRlX3RvX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgQU5ZIC0+IGBMaXN0IFsgYEludCAwIF1cbiAgfCBGUkVFIC0+IGBMaXN0IFsgYEludCAxIF1cbiAgfCBCT1VORCAtPiBgTGlzdCBbIGBJbnQgMiBdXG4gIHwgQk9VTkRfVFlQRSBiIC0+IGBMaXN0IFsgYEludCAzOyBiaW5kaW5nX3R5cGVfdG9fanNvbiBiIF1cbiAgfCBCT1VORF90byBzIC0+IGBMaXN0IFsgYEludCA0OyBxdWFya190b19qc29uIGYgcyBdXG5cbmxldCBiaW5kaW5nX3N0YXRlX29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDAgXSAtPiBBTllcbiAgfCBgTGlzdCBbIGBJbnQgMSBdIC0+IEZSRUVcbiAgfCBgTGlzdCBbIGBJbnQgMiBdIC0+IEJPVU5EXG4gIHwgYExpc3QgWyBgSW50IDM7IGBMaXN0IFsgYEludCB0eTsgYEludCBzIF0gXSAtPiBCT1VORF9UWVBFICh0eSwgcylcbiAgfCBgTGlzdCBbIGBJbnQgNDsgYExpc3QgWyBhZzsgYEludCBzIF0gXSAtPiBCT1VORF90byAoZiBhZywgcylcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBiaW5kaW5nX3N0YXRlXCIsIHgpKVxuXG5sZXQgd3JpdGVfZXZlbnQgZiBvYiBlID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICBbXG4gICAgICAoZnVuIG8gLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdCAoSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfdGVzdCBmKSkgbyBlLnRlc3RzKTtcbiAgICAgIChmdW4gbyAtPiBKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV9hY3Rpb24gZikgbyBlLmFjdGlvbnMpO1xuICAgICAgKGZ1biBvIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyICh3cml0ZV9xdWFyayBmKSAod3JpdGVfYmluZGluZ19zdGF0ZSBmKSlcbiAgICAgICAgICBvIGUuc2lkZV9lZmZlY3RzX3NyYyk7XG4gICAgICAoZnVuIG8gLT4gSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfcXVhcmsgZikgbyBlLnNpZGVfZWZmZWN0c19kc3QpO1xuICAgICAgKGZ1biBvIC0+IEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3Rlc3QgZikgbyBlLmNvbm5lY3Rpdml0eV90ZXN0cyk7XG4gICAgXVxuXG5sZXQgcmVhZF9ldmVudCBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnRcbiAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF90ZXN0IGYpKSlcbiAgICAoZnVuIHN0IGIgdGVzdHMgLT5cbiAgICAgIGxldCBhY3Rpb25zID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfYWN0aW9uIGYpKSBzdCBiXG4gICAgICBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIChyZWFkX3F1YXJrIGYpIChyZWFkX2JpbmRpbmdfc3RhdGUgZikpKVxuICAgICAgICAgIHN0IGJcbiAgICAgIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX3F1YXJrIGYpKSBzdCBiXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX3Rlc3QgZikpIHN0IGJcbiAgICAgIGluXG4gICAgICB7IHRlc3RzOyBhY3Rpb25zOyBzaWRlX2VmZmVjdHNfc3JjOyBzaWRlX2VmZmVjdHNfZHN0OyBjb25uZWN0aXZpdHlfdGVzdHMgfSlcbiAgICBzdCBiXG5cbmxldCBldmVudF90b19qc29uIGYgZSA9XG4gIGBMaXN0XG4gICAgW1xuICAgICAgYExpc3RcbiAgICAgICAgKExpc3QubWFwIChmdW4gY2N0IC0+IGBMaXN0IChMaXN0Lm1hcCAodGVzdF90b19qc29uIGYpIGNjdCkpIGUudGVzdHMpO1xuICAgICAgYExpc3QgKExpc3QubWFwIChhY3Rpb25fdG9fanNvbiBmKSBlLmFjdGlvbnMpO1xuICAgICAgYExpc3RcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4gKHMsIGIpIC0+XG4gICAgICAgICAgICAgYExpc3QgWyBxdWFya190b19qc29uIGYgczsgYmluZGluZ19zdGF0ZV90b19qc29uIGYgYiBdKVxuICAgICAgICAgICBlLnNpZGVfZWZmZWN0c19zcmMpO1xuICAgICAgYExpc3QgKExpc3QubWFwIChxdWFya190b19qc29uIGYpIGUuc2lkZV9lZmZlY3RzX2RzdCk7XG4gICAgICBgTGlzdCAoTGlzdC5tYXAgKHRlc3RfdG9fanNvbiBmKSBlLmNvbm5lY3Rpdml0eV90ZXN0cyk7XG4gICAgXVxuXG5sZXQgZXZlbnRfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBMaXN0IHQ7IGBMaXN0IGE7IGBMaXN0IHNfZV9zcmM7IGBMaXN0IHNfZV9kc3Q7IGBMaXN0IGNfdCBdIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgdGVzdHMgPVxuICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBgTGlzdCBjY2wgLT4gTGlzdC5tYXAgKHRlc3Rfb2ZfanNvbiBmKSBjY2xcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgdDtcbiAgICAgICAgIGFjdGlvbnMgPSBMaXN0Lm1hcCAoYWN0aW9uX29mX2pzb24gZikgYTtcbiAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBgTGlzdCBbIHM7IGIgXSAtPiBxdWFya19vZl9qc29uIGYgcywgYmluZGluZ19zdGF0ZV9vZl9qc29uIGYgYlxuICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICBzX2Vfc3JjO1xuICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCA9IExpc3QubWFwIChxdWFya19vZl9qc29uIGYpIHNfZV9kc3Q7XG4gICAgICAgICBjb25uZWN0aXZpdHlfdGVzdHMgPSBMaXN0Lm1hcCAodGVzdF9vZl9qc29uIGYpIGNfdDtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGV2ZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBldmVudFwiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBUcmFuc2Zvcm1hdGlvbiA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgQWdlbnQgb2YgJ2FcbiAgICB8IEZyZWVkIG9mICdhIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgIHwgTGlua2VkIG9mICdhIEluc3RhbnRpYXRpb24uc2l0ZSAqICdhIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIG9mXG4gICAgICAgICdhICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWUgKiBJbnN0YW50aWF0aW9uLmludGVybmFsX3N0YXRlXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcblxuICBsZXQgdG9feW9qc29uID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IGEgLT4gYEFzc29jIFsgXCJBZ2VudFwiLCBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYSBdXG4gICAgfCBGcmVlZCAoYSwgcykgLT5cbiAgICAgIGBBc3NvYyBbIFwiRnJlZWRcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuICAgIHwgTGlua2VkICgoYSwgcyksIChiLCB0KSkgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbXG4gICAgICAgICAgKCBcIkxpbmtlZFwiLFxuICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhO1xuICAgICAgICAgICAgICAgIGBJbnQgcztcbiAgICAgICAgICAgICAgICBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYjtcbiAgICAgICAgICAgICAgICBgSW50IHQ7XG4gICAgICAgICAgICAgIF0gKTtcbiAgICAgICAgXVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbIFwiTmVnYXRpdmVXaGF0RXZlclwiLCBgTGlzdCBbIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhOyBgSW50IHMgXSBdXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAoYSwgcywgaSkgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbXG4gICAgICAgICAgKCBcIlBvc2l0aXZlSW50ZXJuYWxpemVkXCIsXG4gICAgICAgICAgICBgTGlzdCBbIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhOyBgSW50IHM7IGBJbnQgaSBdICk7XG4gICAgICAgIF1cbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhLCBzKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFsgXCJOZWdhdGl2ZUludGVybmFsaXplZFwiLCBgTGlzdCBbIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhOyBgSW50IHMgXSBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJBZ2VudFwiLCBhKSBdIC0+IEFnZW50IChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSlcbiAgICB8IGBBc3NvYyBbIChcIkZyZWVkXCIsIGBMaXN0IFsgYTsgYEludCBzIF0pIF0gLT5cbiAgICAgIEZyZWVkIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcylcbiAgICB8IGBBc3NvYyBbIChcIkxpbmtlZFwiLCBgTGlzdCBbIGE7IGBJbnQgczsgYjsgYEludCB0IF0pIF0gLT5cbiAgICAgIExpbmtlZCAoKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKSwgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBiLCB0KSlcbiAgICB8IGBBc3NvYyBbIChcIk5lZ2F0aXZlV2hhdEV2ZXJcIiwgYExpc3QgWyBhOyBgSW50IHMgXSkgXSAtPlxuICAgICAgTmVnYXRpdmVXaGF0RXZlciAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCBgQXNzb2MgWyAoXCJQb3NpdGl2ZUludGVybmFsaXplZFwiLCBgTGlzdCBbIGE7IGBJbnQgczsgYEludCBpIF0pIF0gLT5cbiAgICAgIFBvc2l0aXZlSW50ZXJuYWxpemVkIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcywgaSlcbiAgICB8IGBBc3NvYyBbIChcIk5lZ2F0aXZlSW50ZXJuYWxpemVkXCIsIGBMaXN0IFsgYTsgYEludCBzIF0pIF0gLT5cbiAgICAgIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcylcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcblxuICBsZXQgcmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiA9IGZ1bmN0aW9uXG4gICAgfCBGcmVlZCAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBGcmVlZCAocCcsIHMpXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChwLCBzKSBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKHAnLCBzKVxuICAgIHwgTGlua2VkICgocDEsIHMxKSwgKHAyLCBzMikpIGFzIHggLT5cbiAgICAgIGxldCBwMScgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAxIGluXG4gICAgICBsZXQgcDInID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwMiBpblxuICAgICAgaWYgcDEgPT0gcDEnICYmIHAyID09IHAyJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgTGlua2VkICgocDEnLCBzMSksIChwMicsIHMyKSlcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChwLCBzLCBpKSBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIFBvc2l0aXZlSW50ZXJuYWxpemVkIChwJywgcywgaSlcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChwLCBzKSBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChwJywgcylcbiAgICB8IEFnZW50IHAgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBBZ2VudCBwJ1xuXG4gIGxldCBjb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBuIC0+IEFnZW50IChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuKVxuICAgIHwgRnJlZWQgKG4sIHMpIC0+XG4gICAgICBGcmVlZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcylcbiAgICB8IExpbmtlZCAoKG4sIHMpLCAobicsIHMnKSkgLT5cbiAgICAgIExpbmtlZFxuICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzKSxcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbicsIHMnKSApXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChuLCBzKSAtPlxuICAgICAgTmVnYXRpdmVXaGF0RXZlciAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcylcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChuLCBzLCBpKSAtPlxuICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAobiwgcykgLT5cbiAgICAgIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzKVxuXG4gIGxldCBtYXBfZm9sZF9hZ2VudCBmIHggYWNjID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEFnZW50IGEgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIEFnZW50IGEnLCBhY2MnXG4gICAgfCBGcmVlZCAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIEZyZWVkIChhJywgcyksIGFjYydcbiAgICB8IExpbmtlZCAoKGExLCBzMSksIChhMiwgczIpKSAtPlxuICAgICAgbGV0IGExJywgYWNjJyA9IGYgYTEgYWNjIGluXG4gICAgICBsZXQgYTInLCBhY2MnJyA9IGYgYTIgYWNjJyBpblxuICAgICAgTGlua2VkICgoYTEnLCBzMSksIChhMicsIHMyKSksIGFjYycnXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChhLCBzKSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgTmVnYXRpdmVXaGF0RXZlciAoYScsIHMpLCBhY2MnXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAoYSwgcywgaSkgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIFBvc2l0aXZlSW50ZXJuYWxpemVkIChhJywgcywgaSksIGFjYydcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhLCBzKSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEnLCBzKSwgYWNjJ1xuXG4gIGxldCBtYXBfYWdlbnQgZiA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IEFnZW50IChmIGEpXG4gICAgfCBGcmVlZCAoYSwgcykgLT4gRnJlZWQgKGYgYSwgcylcbiAgICB8IExpbmtlZCAoKGExLCBzMSksIChhMiwgczIpKSAtPiBMaW5rZWQgKChmIGExLCBzMSksIChmIGEyLCBzMikpXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChhLCBzKSAtPiBOZWdhdGl2ZVdoYXRFdmVyIChmIGEsIHMpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAoYSwgcywgaSkgLT4gUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGYgYSwgcywgaSlcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhLCBzKSAtPiBOZWdhdGl2ZUludGVybmFsaXplZCAoZiBhLCBzKVxuXG4gIGxldCBmb2xkX2FnZW50IGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IGEgLT4gZiBhY2MgYVxuICAgIHwgRnJlZWQgKGEsIF8pIC0+IGYgYWNjIGFcbiAgICB8IExpbmtlZCAoKGExLCBfKSwgKGEyLCBfKSkgLT4gZiAoZiBhY2MgYTEpIGEyXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChhLCBfKSAtPiBmIGFjYyBhXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAoYSwgXywgXykgLT4gZiBhY2MgYVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIF8pIC0+IGYgYWNjIGFcblxuICBsZXQgZXF1YWwgZiBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgQWdlbnQgYSwgQWdlbnQgYScgLT4gZiBhIGEnXG4gICAgfCAoIEFnZW50IF8sXG4gICAgICAgICggRnJlZWQgXyB8IExpbmtlZCBfIHwgTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8gKSApXG4gICAgfCBfLCBBZ2VudCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgRnJlZWQgKGEsIHMpLCBGcmVlZCAoYScsIHMnKSAtPiBzID0gcycgJiYgZiBhIGEnXG4gICAgfCAoIEZyZWVkIF8sXG4gICAgICAgICggTGlua2VkIF8gfCBOZWdhdGl2ZVdoYXRFdmVyIF8gfCBQb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyApIClcbiAgICB8IF8sIEZyZWVkIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSksIExpbmtlZCAoKGExJywgczEnKSwgKGEyJywgczInKSkgLT5cbiAgICAgIChzMSA9IHMxJyAmJiBzMiA9IHMyJyAmJiBmIGExIGExJyAmJiBmIGEyIGEyJylcbiAgICAgIHx8IChzMSA9IHMyJyAmJiBzMiA9IHMxJyAmJiBmIGExIGEyJyAmJiBmIGEyIGExJylcbiAgICB8ICggTGlua2VkIF8sXG4gICAgICAgIChOZWdhdGl2ZVdoYXRFdmVyIF8gfCBQb3NpdGl2ZUludGVybmFsaXplZCBfIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXykgKVxuICAgIHwgXywgTGlua2VkIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChhLCBzKSwgTmVnYXRpdmVXaGF0RXZlciAoYScsIHMnKSAtPiBzID0gcycgJiYgZiBhIGEnXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIF8sIChQb3NpdGl2ZUludGVybmFsaXplZCBfIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXylcbiAgICB8IF8sIE5lZ2F0aXZlV2hhdEV2ZXIgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhLCBzKSwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEnLCBzJykgLT5cbiAgICAgIHMgPSBzJyAmJiBmIGEgYSdcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8sIFBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF8sIE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAoYSwgcywgaSksIFBvc2l0aXZlSW50ZXJuYWxpemVkIChhJywgcycsIGknKSAtPlxuICAgICAgaSA9IGknICYmIHMgPSBzJyAmJiBmIGEgYSdcblxuICBsZXQgcHJpbnQgP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBwIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1cIiAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpIHBcbiAgICB8IEZyZWVkIChwLCBzKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWEgPSAldEBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHApXG4gICAgICAgIHMgUHAuYm90dG9tXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChwLCBzKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWEgPSA/Pz9AXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwKVxuICAgICAgICBzXG4gICAgfCBMaW5rZWQgKChwMSwgczEpLCAocDIsIHMyKSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gJWEuJWFAXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcDFcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcDEpXG4gICAgICAgIHMxXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcDJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcDIpXG4gICAgICAgIHMyXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAocCwgcywgaSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID1AXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgcCBzKVxuICAgICAgICBpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhfiA9QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcClcbiAgICAgICAgc1xuXG4gIGxldCBnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0ICgoKGEsIF8pLCBfKSBhcyBwKSAoZG9uLCBvdXQpID1cbiAgICBpZiBMaXN0Lm1lbSBwIGRvbiB8fCBMaXN0Lm1lbSBhIGNyZWF0ZWRfYWdlbnRzIHRoZW5cbiAgICAgIGRvbiwgb3V0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsbmtfZHN0IHAgd2l0aFxuICAgICAgfCBOb25lIC0+IHAgOjogZG9uLCBGcmVlZCBwIDo6IG91dFxuICAgICAgfCBTb21lIHAnIC0+IHAgOjogcCcgOjogZG9uLCBMaW5rZWQgKHAsIHAnKSA6OiBvdXRcbiAgICApXG5cbiAgbGV0IGFnZW50c19jcmVhdGVkX2J5X2FjdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKGFnX2lkLCBfKSwgXykgLT4gU29tZSBhZ19pZFxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyAtPlxuICAgICAgTm9uZVxuXG4gIGxldCBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb25zIGFjdGlvbnMgPVxuICAgIExpc3RfdXRpbC5tYXBfb3B0aW9uIGFnZW50c19jcmVhdGVkX2J5X2FjdGlvbiBhY3Rpb25zXG5cbiAgbGV0IG5lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3MgbG5rX2RzdCBhY3Rpb25zID1cbiAgICBsZXQgY3JlYXRlZF9hZ2VudHMgPSBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb25zIGFjdGlvbnMgaW5cbiAgICBzbmRcbiAgICAgIChMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgIChmdW4geCAoKGRvbiwgb3V0KSBhcyBhY2MpIC0+XG4gICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChfLCBfKSAtPiBhY2NcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKCgoaWQsIF8pLCBfKSBhcyBwKSwgXykgLT5cbiAgICAgICAgICAgICBpZiBMaXN0Lm1lbSBpZCBjcmVhdGVkX2FnZW50cyB0aGVuXG4gICAgICAgICAgICAgICBkb24sIG91dFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGRvbiwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgcCA6OiBvdXRcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHAxLCBwMikgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHAxLCBwMikgLT5cbiAgICAgICAgICAgICBnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IHAxXG4gICAgICAgICAgICAgICAoZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwMiBhY2MpXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHAgLT5cbiAgICAgICAgICAgICBnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IHAgYWNjXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgKChfLCB0eSkgYXMgYSkgLT5cbiAgICAgICAgICAgICBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgKGZ1biBzdCBzIC0+IGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgKGEsIHMpIHN0KVxuICAgICAgICAgICAgICAgKGRvbiwgQWdlbnQgYSA6OiBvdXQpXG4gICAgICAgICAgICAgICAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkpKVxuICAgICAgICAgYWN0aW9ucyAoW10sIFtdKSlcblxuICBsZXQgcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lncyBzaWRlX2VmZmVjdF9kc3RzIGFjdGlvbnMgPVxuICAgIGxldCByZW0sIHJldiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICgocmVtLCBvdXQpIGFzIGFjYykgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKF8sIHR5KSBhcyBhKSwgXykgLT5cbiAgICAgICAgICAgICggVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgICAoZnVuIHN0IHMgLT4gKGEsIHMpIDo6IHN0KVxuICAgICAgICAgICAgICAgIHJlbSAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkpLFxuICAgICAgICAgICAgICBBZ2VudCBhIDo6IG91dCApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKGEsIHMpLCBpKSAtPlxuICAgICAgICAgICAgcmVtLCBQb3NpdGl2ZUludGVybmFsaXplZCAoYSwgcywgaSkgOjogb3V0XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHAxLCBwMikgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHAxLCBwMikgLT5cbiAgICAgICAgICAgICggTGlzdC5maWx0ZXIgKGZ1biBwIC0+IHAgPD4gcDEgJiYgcCA8PiBwMikgcmVtLFxuICAgICAgICAgICAgICBMaW5rZWQgKHAxLCBwMikgOjogb3V0IClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBwIC0+XG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIHAnIC0+IHAnIDw+IHApIHJlbSwgRnJlZWQgcCA6OiBvdXRcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT4gYWNjKVxuICAgICAgICAoW10sIFtdKSBhY3Rpb25zXG4gICAgaW5cbiAgICBMaXN0LnJldl9hcHBlbmQgcmV2XG4gICAgICAoTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAgICAoZnVuIHAgLT4gRnJlZWQgcClcbiAgICAgICAgIHJlbVxuICAgICAgICAgKExpc3QubWFwIChmdW4gcCAtPiBGcmVlZCBwKSBzaWRlX2VmZmVjdF9kc3RzKSlcbmVuZFxuXG50eXBlIGFsZ19leHByID0gKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5lXG5cbnR5cGUgZWxlbWVudGFyeV9ydWxlID0ge1xuICByYXRlOiBhbGdfZXhwciBMb2MuYW5ub3RlZDtcbiAgdW5hcnlfcmF0ZTogKGFsZ19leHByIExvYy5hbm5vdGVkICogYWxnX2V4cHIgb3B0aW9uKSBvcHRpb247XG4gIGNvbm5lY3RlZF9jb21wb25lbnRzOiBQYXR0ZXJuLmlkIGFycmF5OyAoKmlkIC0+IGNjKilcbiAgcmVtb3ZlZDogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBUcmFuc2Zvcm1hdGlvbi50IGxpc3Q7XG4gIGluc2VydGVkOiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IFRyYW5zZm9ybWF0aW9uLnQgbGlzdDtcbiAgZGVsdGFfdG9rZW5zOiAoYWxnX2V4cHIgTG9jLmFubm90ZWQgKiBpbnQpIGxpc3Q7XG4gIHN5bnRhY3RpY19ydWxlOiBpbnQ7ICAoKiogWzBdIG1lYW5zIGdlbmVyYXRlZCBmb3IgcGVydHVyYmF0aW9uLiAqKVxuICBpbnN0YW50aWF0aW9uczogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBJbnN0YW50aWF0aW9uLmV2ZW50O1xufVxuXG5sZXQgZXh0cmFjdF9jY19pZHMgciA9IHIuY29ubmVjdGVkX2NvbXBvbmVudHNcbmxldCBleHRyYWN0X2Fic3RyYWN0X2V2ZW50IHIgPSByLmluc3RhbnRpYXRpb25zXG5cbmxldCBhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pKVxuICAgIEpzb25VdGlsLm9mX2ludFxuXG5sZXQgYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHJ1bGVfdG9feW9qc29uIH5maWxlbmFtZXMgciA9XG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgKCBcInJhdGVcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSByLnJhdGVcbiAgICAgICk7XG4gICAgICAoIFwidW5hcnlfcmF0ZVwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSkpXG4gICAgICAgICAgci51bmFyeV9yYXRlICk7XG4gICAgICAoIFwiY29ubmVjdGVkX2NvbXBvbmVudHNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gci5jb25uZWN0ZWRfY29tcG9uZW50cyApO1xuICAgICAgXCJyZW1vdmVkXCIsIEpzb25VdGlsLm9mX2xpc3QgVHJhbnNmb3JtYXRpb24udG9feW9qc29uIHIucmVtb3ZlZDtcbiAgICAgIFwiaW5zZXJ0ZWRcIiwgSnNvblV0aWwub2ZfbGlzdCBUcmFuc2Zvcm1hdGlvbi50b195b2pzb24gci5pbnNlcnRlZDtcbiAgICAgICggXCJkZWx0YV90b2tlbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwidmFsXCIgfmxhYjI6XCJ0b2tcIlxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludClcbiAgICAgICAgICByLmRlbHRhX3Rva2VucyApO1xuICAgICAgXCJzeW50YWN0aWNfcnVsZVwiLCBgSW50IHIuc3ludGFjdGljX3J1bGU7XG4gICAgICAoIFwiaW5zdGFudGlhdGlvbnNcIixcbiAgICAgICAgSW5zdGFudGlhdGlvbi5ldmVudF90b19qc29uIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiByLmluc3RhbnRpYXRpb25zICk7XG4gICAgXVxuXG5sZXQgcnVsZV9vZl95b2pzb24gfmZpbGVuYW1lcyByID1cbiAgbWF0Y2ggciB3aXRoXG4gIHwgKGBBc3NvYyBsIDogWW9qc29uLkJhc2ljLnQpIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcmF0ZSA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmF0ZVwiIGwpO1xuICAgICAgICAgdW5hcnlfcmF0ZSA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykpKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ1bmFyeV9yYXRlXCIgeCk7XG4gICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImNvbm5lY3RlZF9jb21wb25lbnRzXCIgeCk7XG4gICAgICAgICByZW1vdmVkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdCBUcmFuc2Zvcm1hdGlvbi5vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicmVtb3ZlZFwiIHgpO1xuICAgICAgICAgaW5zZXJ0ZWQgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0IFRyYW5zZm9ybWF0aW9uLm9mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJpbnNlcnRlZFwiIHgpO1xuICAgICAgICAgZGVsdGFfdG9rZW5zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5sYWIxOlwidmFsXCIgfmxhYjI6XCJ0b2tcIlxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJkZWx0YV90b2tlbnNcIiB4KTtcbiAgICAgICAgIHN5bnRhY3RpY19ydWxlID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIFwic3ludGFjdGljX3J1bGVcIiBsKTtcbiAgICAgICAgIGluc3RhbnRpYXRpb25zID1cbiAgICAgICAgICAgSW5zdGFudGlhdGlvbi5ldmVudF9vZl9qc29uIE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvblxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiaW5zdGFudGlhdGlvbnNcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbGVtZW50YXJ5IHJ1bGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVsZW1lbnRhcnkgcnVsZVwiLCB4KSlcblxubGV0IGZ1bGx5X3NwZWNpZmllZF9wYXR0ZXJuX3RvX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9ucyBjYyA9XG4gIGxldCBfLCB0ciA9XG4gICAgUGF0dGVybi5mb2xkX2J5X3R5cGVcbiAgICAgIChmdW4gfnBvcyB+YWdlbnRfdHlwZSBpbnRmIChlbWIsIGcpIC0+XG4gICAgICAgIGxldCBhID0gcG9zLCBhZ2VudF90eXBlIGluXG4gICAgICAgIGxldCBnJyA9IFRyYW5zZm9ybWF0aW9uLkFnZW50IGEgOjogZyBpblxuICAgICAgICBsZXQgZW1iJyA9IE1vZHMuSW50TWFwLmFkZCBwb3MgYSBlbWIgaW5cbiAgICAgICAgKCBlbWInLFxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgIChmdW4gc2l0ZSBhY2MgKGwsIGkpIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MnID1cbiAgICAgICAgICAgICAgICBpZiBpIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzaXRlLCBpKSA6OiBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgUGF0dGVybi5VblNwZWMgfCBQYXR0ZXJuLkZyZWUgLT5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5GcmVlZCAoYSwgc2l0ZSkgOjogYWNjJ1xuICAgICAgICAgICAgICB8IFBhdHRlcm4uTGluayAoeCcsIHMnKSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiB4JyBlbWInIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjJ1xuICAgICAgICAgICAgICAgIHwgU29tZSBhZycgLT5cbiAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKGEsIHNpdGUpLCAoYWcnLCBzJykpIDo6IGFjYycpKVxuICAgICAgICAgICAgZycgaW50ZiApKVxuICAgICAgY2MgKE1vZHMuSW50TWFwLmVtcHR5LCBbXSlcbiAgaW5cbiAgTGlzdC5yZXYgdHJcblxudHlwZSAnYWxnX2V4cHIgcHJpbnRfZXhwciA9XG4gIHwgU3RyX3BleHByIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuICB8IEFsZ19wZXhwciBvZiAnYWxnX2V4cHIgTG9jLmFubm90ZWRcblxubGV0IHByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IFN0cl9wZXhwciBzIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBzXG4gIHwgQWxnX3BleHByIGEgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcIkFcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgICBhICk7XG4gICAgICBdXG5cbmxldCBwcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJBXCIsIHgpIF0gLT5cbiAgICAodHJ5XG4gICAgICAgQWxnX3BleHByXG4gICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgeClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcHJpbnQgZXhwclwiLCB4KSkpXG4gIHwgeCAtPlxuICAgICh0cnlcbiAgICAgICBTdHJfcGV4cHJcbiAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICB4KVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBwcmludCBleHByXCIsIHgpKSlcblxubGV0IG1hcF9leHByX3ByaW50IGYgeCA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IFN0cl9wZXhwciBfIGFzIHggLT4geFxuICAgICAgfCBBbGdfcGV4cHIgZSAtPiBBbGdfcGV4cHIgKGYgZSkpXG4gICAgeFxuXG5sZXQgZm9sZF9leHByX3ByaW50IGYgYWNjIHggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICB8IFN0cl9wZXhwciBfIC0+IGFjY1xuICAgICAgfCBBbGdfcGV4cHIgZSAtPiBmIGFjYyBlKVxuICAgIGFjYyB4XG5cbnR5cGUgZGluX2tpbmQgPSBBQlNPTFVURSB8IFJFTEFUSVZFIHwgUFJPQkFCSUxJVFlcblxubGV0IGRpbl9raW5kX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgQUJTT0xVVEUgLT4gYFN0cmluZyBcIkFCU09MVVRFXCJcbiAgfCBSRUxBVElWRSAtPiBgU3RyaW5nIFwiUkVMQVRJVkVcIlxuICB8IFBST0JBQklMSVRZIC0+IGBTdHJpbmcgXCJQUk9CQUJJTElUWVwiXG5cbmxldCBkaW5fa2luZF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJBQlNPTFVURVwiIC0+IEFCU09MVVRFXG4gIHwgYFN0cmluZyBcIlJFTEFUSVZFXCIgLT4gUkVMQVRJVkVcbiAgfCBgU3RyaW5nIFwiUFJPQkFCSUxJVFlcIiAtPiBQUk9CQUJJTElUWVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGRpbl9raW5kXCIsIHgpKVxuXG5sZXQgd3JpdGVfZGluX2tpbmQgb2IgZiA9IFlvanNvbi5CYXNpYy50b19idWZmZXIgb2IgKGRpbl9raW5kX3RvX3lvanNvbiBmKVxuXG5sZXQgc3RyaW5nX29mX2Rpbl9raW5kID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9raW5kIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9kaW5fa2luZCBwIGxiID1cbiAgZGluX2tpbmRfb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCBkaW5fa2luZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2tpbmQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxudHlwZSBtb2RpZmljYXRpb24gPVxuICB8IElURVJfUlVMRSBvZiBhbGdfZXhwciBMb2MuYW5ub3RlZCAqIGVsZW1lbnRhcnlfcnVsZVxuICB8IFVQREFURSBvZiBpbnQgKiBhbGdfZXhwciBMb2MuYW5ub3RlZFxuICB8IFNOQVBTSE9UIG9mIGJvb2wgKiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBTVE9QIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IENGTE9XIG9mXG4gICAgICBzdHJpbmcgb3B0aW9uXG4gICAgICAqIFBhdHRlcm4uaWQgYXJyYXlcbiAgICAgICogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0XG4gIHwgRElOIG9mIGRpbl9raW5kICogYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgRElOT0ZGIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IENGTE9XT0ZGIG9mIHN0cmluZyBvcHRpb24gKiBQYXR0ZXJuLmlkIGFycmF5XG4gIHwgUExPVEVOVFJZXG4gIHwgUFJJTlQgb2YgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0ICogYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgU1BFQ0lFUyBvZlxuICAgICAgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gICAgICAqIFBhdHRlcm4uaWQgYXJyYXlcbiAgICAgICogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0XG4gIHwgU1BFQ0lFU19PRkYgb2YgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG5cbmxldCBwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgPVxuICBwcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uKSlcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyA9XG4gIHByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb24pKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgbW9kaWZpY2F0aW9uX3RvX3lvanNvbiB+ZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKG4sIHIpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCI7XG4gICAgICAgICggXCJyZXBlYXRzXCIsXG4gICAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBuICk7XG4gICAgICAgIFwicnVsZVwiLCBydWxlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIHI7XG4gICAgICBdXG4gIHwgVVBEQVRFICh2LCBlKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCI7XG4gICAgICAgIFwidmFyXCIsIGBJbnQgdjtcbiAgICAgICAgKCBcInZhbHVlXCIsXG4gICAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBlICk7XG4gICAgICBdXG4gIHwgU05BUFNIT1QgKHJhdywgZikgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIjtcbiAgICAgICAgXCJyYXdcIiwgYEJvb2wgcmF3O1xuICAgICAgICBcImZpbGVcIiwgSnNvblV0aWwub2ZfbGlzdCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmO1xuICAgICAgXVxuICB8IFNUT1AgZiAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCI7XG4gICAgICAgIFwiZmlsZVwiLCBKc29uVXRpbC5vZl9saXN0IChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGY7XG4gICAgICBdXG4gIHwgQ0ZMT1cgKG5hbWUsIGlkcywgdGVzdHMpIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkNGTE9XXCI7XG4gICAgICAgIFwibmFtZVwiLCBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nIG5hbWU7XG4gICAgICAgIFwicGF0dGVyblwiLCBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiBpZHM7XG4gICAgICAgICggXCJ0ZXN0c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uKSlcbiAgICAgICAgICAgIHRlc3RzICk7XG4gICAgICBdXG4gIHwgQ0ZMT1dPRkYgKG5hbWUsIGlkcykgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkNGTE9XT0ZGXCI7XG4gICAgICAgIFwibmFtZVwiLCBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nIG5hbWU7XG4gICAgICAgIFwicGF0dGVyblwiLCBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiBpZHM7XG4gICAgICBdXG4gIHwgRElOIChraW5kLCBmKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCI7XG4gICAgICAgIFwia2luZFwiLCBkaW5fa2luZF90b195b2pzb24ga2luZDtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cbiAgfCBESU5PRkYgZiAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIjtcbiAgICAgICAgXCJmaWxlXCIsIEpzb25VdGlsLm9mX2xpc3QgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZjtcbiAgICAgIF1cbiAgfCBQTE9URU5UUlkgLT4gYEFzc29jIFsgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBMT1ROT1dcIiBdXG4gIHwgUFJJTlQgKGYsIHQpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiO1xuICAgICAgICBcInRleHRcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIHQpO1xuICAgICAgICBcImZpbGVcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGYpO1xuICAgICAgXVxuICB8IFNQRUNJRVMgKGYsIGlkcywgdGVzdHMpIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNQRUNJRVNcIjtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgICAgXCJwYXR0ZXJuXCIsIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIGlkcztcbiAgICAgICAgKCBcInRlc3RzXCIsXG4gICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnRlc3RfdG9fanNvbiBNYXRjaGluZy5BZ2VudC50b195b2pzb24pKVxuICAgICAgICAgICAgdGVzdHMgKTtcbiAgICAgIF1cbiAgfCBTUEVDSUVTX09GRiBmIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiO1xuICAgICAgICBcImZpbGVcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGYpO1xuICAgICAgXVxuXG5sZXQgbW9kaWZpY2F0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJmaWxlXCIsIGBMaXN0IGYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGYpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgICAtPlxuICAgIFBSSU5UXG4gICAgICAoIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGYsXG4gICAgICAgIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIHQgKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcImZpbGVcIiwgYE51bGwpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXSAtPlxuICAgIFBSSU5UIChbXSwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgdClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwia2luZFwiLCBraW5kKSBdXG4gIHwgYEFzc29jIFsgKFwia2luZFwiLCBraW5kKTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJraW5kXCIsIGtpbmQpOyAoXCJmaWxlXCIsIGBMaXN0IGYpIF1cbiAgfCBgQXNzb2MgWyAoXCJraW5kXCIsIGtpbmQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImtpbmRcIiwga2luZCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcImtpbmRcIiwga2luZCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpIF0gLT5cbiAgICBESU4gKGRpbl9raW5kX29mX3lvanNvbiBraW5kLCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBmKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpOyAoXCJ2YXJcIiwgYEludCB2KTsgKFwidmFsdWVcIiwgZSkgXVxuICB8IGBBc3NvYyBbIChcInZhclwiLCBgSW50IHYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFsdWVcIiwgZSkgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpOyAoXCJ2YWx1ZVwiLCBlKTsgKFwidmFyXCIsIGBJbnQgdikgXVxuICB8IGBBc3NvYyBbIChcInZhclwiLCBgSW50IHYpOyAoXCJ2YWx1ZVwiLCBlKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIikgXVxuICB8IGBBc3NvYyBbIChcInZhbHVlXCIsIGUpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFyXCIsIGBJbnQgdikgXVxuICB8IGBBc3NvYyBbIChcInZhbHVlXCIsIGUpOyAoXCJ2YXJcIiwgYEludCB2KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIikgXSAtPlxuICAgIFVQREFURVxuICAgICAgKHYsIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgZSlcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJlcGVhdHNcIiwgbik7IChcInJ1bGVcIiwgcikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicnVsZVwiLCByKTsgKFwicmVwZWF0c1wiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwicmVwZWF0c1wiLCBuKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJydWxlXCIsIHIpIF1cbiAgfCBgQXNzb2MgWyAoXCJydWxlXCIsIHIpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJlcGVhdHNcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInJlcGVhdHNcIiwgbik7IChcInJ1bGVcIiwgcik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKSBdXG4gIHwgYEFzc29jIFsgKFwicnVsZVwiLCByKTsgKFwicmVwZWF0c1wiLCBuKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpIF0gLT5cbiAgICBJVEVSX1JVTEVcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBuLFxuICAgICAgICBydWxlX29mX3lvanNvbiB+ZmlsZW5hbWVzIHIgKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUExPVE5PV1wiKSBdIC0+IFBMT1RFTlRSWVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKSBdIC0+XG4gICAgRElOT0ZGIChMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBsKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKSBdIC0+XG4gICAgRElOT0ZGIFtdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdIC0+XG4gICAgU05BUFNIT1QgKGZhbHNlLCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBsKVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCk7IChcInJhd1wiLCBgQm9vbCByYXcpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICAgIC0+XG4gICAgU05BUFNIT1QgKHJhdywgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcInJhd1wiLCBgQm9vbCByYXcpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF1cbiAgfCBgQXNzb2MgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXSAtPlxuICAgIFNOQVBTSE9UIChyYXcsIFtdKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdIC0+XG4gICAgU05BUFNIT1QgKGZhbHNlLCBbXSlcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKSBdIC0+XG4gICAgU1RPUCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIik7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIikgXSAtPlxuICAgIFNUT1AgW11cbiAgfCBgQXNzb2MgXyBhcyBsIHdoZW4gWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWN0aW9uXCIgbCA9IGBTdHJpbmcgXCJDRkxPV1wiIC0+XG4gICAgQ0ZMT1dcbiAgICAgICggSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5hbWVcIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicGF0dGVyblwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X29mX2pzb24gTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGVzdHNcIiBsKSApXG4gIHwgYEFzc29jIF8gYXMgbCB3aGVuIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFjdGlvblwiIGwgPSBgU3RyaW5nIFwiQ0ZMT1dPRkZcIlxuICAgIC0+XG4gICAgQ0ZMT1dPRkZcbiAgICAgICggSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5hbWVcIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicGF0dGVyblwiIGwpIClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNQRUNJRVNfT0ZGXCIpOyAoXCJmaWxlXCIsIHApIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIHApOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNQRUNJRVNfT0ZGXCIpIF0gLT5cbiAgICBTUEVDSUVTX09GRiAoSnNvblV0aWwudG9fbGlzdCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBwKVxuICB8IGBBc3NvYyBfIGFzIGwgd2hlbiBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhY3Rpb25cIiBsID0gYFN0cmluZyBcIlNQRUNJRVNcIlxuICAgIC0+XG4gICAgU1BFQ0lFU1xuICAgICAgKCBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZmlsZVwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJwYXR0ZXJuXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnRlc3Rfb2ZfanNvbiBNYXRjaGluZy5BZ2VudC5vZl95b2pzb24pKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0ZXN0c1wiIGwpIClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbW9kaWZpY2F0aW9uXCIsIHgpKVxuXG50eXBlIHBlcnR1cmJhdGlvbiA9IHtcbiAgYWxhcm06IE5ici50IG9wdGlvbjtcbiAgcHJlY29uZGl0aW9uOiAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQ7XG4gIGVmZmVjdDogbW9kaWZpY2F0aW9uIGxpc3Q7XG4gIHJlcGVhdDogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkO1xuICBuZWVkc19iYWNrdHJhY2s6IGJvb2w7XG59XG5cbmxldCBib29sX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uKSlcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGJvb2xfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb24pKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgcGVydHVyYmF0aW9uX3RvX3lvanNvbiB+ZmlsZW5hbWVzIHAgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcImFsYXJtXCIsIEpzb25VdGlsLm9mX29wdGlvbiAoZnVuIG4gLT4gTmJyLnRvX3lvanNvbiBuKSBwLmFsYXJtO1xuICAgICAgKCBcImNvbmRpdGlvblwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgcC5wcmVjb25kaXRpb24gKTtcbiAgICAgIFwiZWZmZWN0XCIsIEpzb25VdGlsLm9mX2xpc3QgKG1vZGlmaWNhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcykgcC5lZmZlY3Q7XG4gICAgICAoIFwicmVwZWF0XCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICBwLnJlcGVhdCApO1xuICAgICAgXCJuZWVkc19iYWNrdHJhY2tcIiwgYEJvb2wgcC5uZWVkc19iYWNrdHJhY2s7XG4gICAgXVxuXG5sZXQgcGVydHVyYmF0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDUgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgYWxhcm0gPSBKc29uVXRpbC50b19vcHRpb24gTmJyLm9mX3lvanNvbiAoTGlzdC5hc3NvYyBcImFsYXJtXCIgbCk7XG4gICAgICAgICBwcmVjb25kaXRpb24gPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJjb25kaXRpb25cIiBsKTtcbiAgICAgICAgIGVmZmVjdCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAobW9kaWZpY2F0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiZWZmZWN0XCIgbCk7XG4gICAgICAgICByZXBlYXQgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJyZXBlYXRcIiBsKTtcbiAgICAgICAgIG5lZWRzX2JhY2t0cmFjayA9XG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgYEJvb2wgYiAtPiBiXG4gICAgICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBib29sXCIsIHgpKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcIm5lZWRzX2JhY2t0cmFja1wiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHBlcnR1cmJhdGlvblwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHBlcnR1cmJhdGlvblwiLCB4KSlcblxubGV0IGV4aXN0c19tb2RpZmljYXRpb24gY2hlY2sgbCA9XG4gIEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjYyBwIC0+IGFjYyB8fCBMaXN0LmV4aXN0cyBjaGVjayBwLmVmZmVjdCkgZmFsc2UgbFxuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3QgYSkgYWNjKSlcbiAgICBhY2NcbiAgICAoQWxnX2V4cHIuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyBlKVxuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIGUgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBhIC0+IExpc3QucmV2X2FwcGVuZCAoQXJyYXkudG9fbGlzdCBhKSBhY2MpKVxuICAgIFtdXG4gICAgKEFsZ19leHByLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBlKVxuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ydWxlIGFjYyByID1cbiAgbGV0IGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAoeCwgXykgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyB4KVxuICAgICAgYWNjIHIuZGVsdGFfdG9rZW5zXG4gIGluXG4gIGxldCBiID1cbiAgICBtYXRjaCByLnVuYXJ5X3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBhXG4gICAgfCBTb21lICh4LCBfKSAtPiBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYSB4XG4gIGluXG4gIGxldCBjID0gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGIgci5yYXRlIGluXG4gIExpc3QucmV2X2FwcGVuZCAoQXJyYXkudG9fbGlzdCByLmNvbm5lY3RlZF9jb21wb25lbnRzKSBjXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3ByaW50IGFjYyB4ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyAtPiBhY2NcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlKVxuICAgIGFjYyB4XG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbiBhY2MgPSBmdW5jdGlvblxuICB8IElURVJfUlVMRSAoZSwgcikgLT5cbiAgICBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3J1bGVcbiAgICAgIChleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIGUpXG4gICAgICByXG4gIHwgVVBEQVRFIChfLCBlKSAtPiBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIGVcbiAgfCBTTkFQU0hPVCAoXywgcCkgfCBTVE9QIHAgfCBTUEVDSUVTX09GRiBwIHwgRElOIChfLCBwKSB8IERJTk9GRiBwIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludCBhY2MgcFxuICB8IFBSSU5UIChmbiwgcCkgLT5cbiAgICBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3ByaW50XG4gICAgICAoZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludCBhY2MgcClcbiAgICAgIGZuXG4gIHwgQ0ZMT1cgKF8sIHgsIF8pIHwgQ0ZMT1dPRkYgKF8sIHgpIHwgU1BFQ0lFUyAoXywgeCwgXykgLT5cbiAgICBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3QgeCkgYWNjXG4gIHwgUExPVEVOVFJZIC0+IGFjY1xuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb25zIGwgPVxuICBMaXN0LmZvbGRfbGVmdCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbiBbXSBsXG5cbmxldCBtYXBfZXhwcl9ydWxlIGYgeCA9XG4gIHtcbiAgICByYXRlID0gZiB4LnJhdGU7XG4gICAgdW5hcnlfcmF0ZSA9IE9wdGlvbl91dGlsLm1hcCAoZnVuICh4LCBkKSAtPiBmIHgsIGQpIHgudW5hcnlfcmF0ZTtcbiAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9IHguY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgcmVtb3ZlZCA9IHgucmVtb3ZlZDtcbiAgICBpbnNlcnRlZCA9IHguaW5zZXJ0ZWQ7XG4gICAgZGVsdGFfdG9rZW5zID0gTGlzdC5tYXAgKGZ1biAoeCwgdCkgLT4gZiB4LCB0KSB4LmRlbHRhX3Rva2VucztcbiAgICBzeW50YWN0aWNfcnVsZSA9IHguc3ludGFjdGljX3J1bGU7XG4gICAgaW5zdGFudGlhdGlvbnMgPSB4Lmluc3RhbnRpYXRpb25zO1xuICB9XG5cbmxldCBmb2xkX2V4cHJfcnVsZSBmIHggciA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgKHksIF8pIC0+IGYgYWNjIHkpXG4gICAgKE9wdGlvbl91dGlsLmZvbGQgKGZ1biBhIChlLCBfKSAtPiBmIGEgZSkgKGYgeCByLnJhdGUpIHIudW5hcnlfcmF0ZSlcbiAgICByLmRlbHRhX3Rva2Vuc1xuXG5sZXQgbWFwX2V4cHJfbW9kaWZpY2F0aW9uIGYgPSBmdW5jdGlvblxuICB8IElURVJfUlVMRSAoZSwgcikgLT4gSVRFUl9SVUxFIChmIGUsIG1hcF9leHByX3J1bGUgZiByKVxuICB8IFVQREFURSAoaSwgZSkgLT4gVVBEQVRFIChpLCBmIGUpXG4gIHwgU05BUFNIT1QgKHJhdywgcCkgLT4gU05BUFNIT1QgKHJhdywgbWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IFNUT1AgcCAtPiBTVE9QIChtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgUFJJTlQgKGZuLCBwKSAtPiBQUklOVCAobWFwX2V4cHJfcHJpbnQgZiBmbiwgbWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IERJTiAoYiwgcCkgLT4gRElOIChiLCBtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgRElOT0ZGIHAgLT4gRElOT0ZGIChtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgKENGTE9XIF8gfCBDRkxPV09GRiBfIHwgU1BFQ0lFU19PRkYgXyB8IFBMT1RFTlRSWSkgYXMgeCAtPiB4XG4gIHwgU1BFQ0lFUyAocCwgeCwgdCkgLT4gU1BFQ0lFUyAobWFwX2V4cHJfcHJpbnQgZiBwLCB4LCB0KVxuXG5sZXQgZm9sZF9leHByX21vZGlmaWNhdGlvbiBmIHggPSBmdW5jdGlvblxuICB8IElURVJfUlVMRSAoZSwgcikgLT4gZm9sZF9leHByX3J1bGUgZiAoZiB4IGUpIHJcbiAgfCBVUERBVEUgKF8sIGUpIC0+IGYgeCBlXG4gIHwgU05BUFNIT1QgKF8sIHApIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IFNUT1AgcCAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcbiAgfCBQUklOVCAoZm4sIHApIC0+IGZvbGRfZXhwcl9wcmludCBmIChmb2xkX2V4cHJfcHJpbnQgZiB4IHApIGZuXG4gIHwgRElOIChfLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcbiAgfCBESU5PRkYgcCAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcbiAgfCBDRkxPVyBfIHwgQ0ZMT1dPRkYgXyB8IFNQRUNJRVNfT0ZGIF8gfCBQTE9URU5UUlkgLT4geFxuICB8IFNQRUNJRVMgKHAsIF8sIF8pIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuXG5sZXQgbWFwX2V4cHJfcGVydHVyYmF0aW9uIGZfYWxnIGZfYm9vbCB4ID1cbiAge1xuICAgIGFsYXJtID0geC5hbGFybTtcbiAgICBwcmVjb25kaXRpb24gPSBmX2Jvb2wgeC5wcmVjb25kaXRpb247XG4gICAgZWZmZWN0ID0gTGlzdC5tYXAgKG1hcF9leHByX21vZGlmaWNhdGlvbiBmX2FsZykgeC5lZmZlY3Q7XG4gICAgcmVwZWF0ID0gZl9ib29sIHgucmVwZWF0O1xuICAgIG5lZWRzX2JhY2t0cmFjayA9IHgubmVlZHNfYmFja3RyYWNrO1xuICB9XG5cbmxldCBmb2xkX2V4cHJfcGVydHVyYmF0aW9uIGZfYWxnIGZfYm9vbCBhY2MgeCA9XG4gIGxldCBhMSA9IGZfYm9vbCBhY2MgeC5wcmVjb25kaXRpb24gaW5cbiAgbGV0IGEyID0gTGlzdC5mb2xkX2xlZnQgKGZvbGRfZXhwcl9tb2RpZmljYXRpb24gZl9hbGcpIGExIHguZWZmZWN0IGluXG4gIGZfYm9vbCBhMiB4LnJlcGVhdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdhbm5vdCkgbGluayA9XG4gIHwgQU5ZX0ZSRUVcbiAgfCBMTktfVkFMVUUgb2YgaW50ICogJ2Fubm90XG4gIHwgTE5LX0ZSRUVcbiAgfCBMTktfQU5ZXG4gIHwgTE5LX1NPTUVcbiAgfCBMTktfVFlQRSBvZiAnYSAqICdhICAoKiogcG9ydCAqIGFnZW50X3R5cGUgKilcblxudHlwZSBzd2l0Y2hpbmcgPSBMaW5rZWQgb2YgaW50IHwgRnJlZWQgfCBNYWludGFpbmVkIHwgRXJhc2VkXG5cbnR5cGUgcnVsZV9pbnRlcm5hbCA9XG4gIHwgSV9BTllcbiAgfCBJX0FOWV9DSEFOR0VEIG9mIGludFxuICB8IElfQU5ZX0VSQVNFRFxuICB8IElfVkFMX0NIQU5HRUQgb2YgaW50ICogaW50XG4gIHwgSV9WQUxfRVJBU0VEIG9mIGludFxuXG50eXBlIHJ1bGVfYWdlbnQgPSB7XG4gIHJhX3R5cGU6IGludDtcbiAgcmFfZXJhc2VkOiBib29sO1xuICByYV9wb3J0czogKChpbnQsIGludCAqIGludCkgbGluayBMb2MuYW5ub3RlZCAqIHN3aXRjaGluZykgYXJyYXk7XG4gIHJhX2ludHM6IHJ1bGVfaW50ZXJuYWwgYXJyYXk7XG4gIHJhX3N5bnRheDpcbiAgICAoKChpbnQsIGludCAqIGludCkgbGluayBMb2MuYW5ub3RlZCAqIHN3aXRjaGluZykgYXJyYXlcbiAgICAqIHJ1bGVfaW50ZXJuYWwgYXJyYXkpXG4gICAgb3B0aW9uO1xufVxuXG50eXBlIHJ1bGVfbWl4dHVyZSA9IHJ1bGVfYWdlbnQgbGlzdFxuXG50eXBlIHJ1bGUgPSB7XG4gIHJfbWl4OiBydWxlX21peHR1cmU7XG4gIHJfY3JlYXRlZDogUmF3X21peHR1cmUudDtcbiAgcl9kZWx0YV90b2tlbnM6ICgocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiBpbnQpIGxpc3Q7XG4gIHJfcmF0ZTogKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkO1xuICByX3VuX3JhdGU6XG4gICAgKChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICAgICogKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICBvcHRpb247XG4gIHJfZWRpdF9zdHlsZTogYm9vbDtcbn1cblxubGV0IHByaW50X2xpbmsgcHJfcG9ydCBwcl90eXBlIHByX2Fubm90IGYgPSBmdW5jdGlvblxuICB8IEFOWV9GUkVFIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiNcIlxuICB8IExOS19UWVBFIChwLCBhKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIiAocHJfcG9ydCBhKSBwIHByX3R5cGUgYVxuICB8IExOS19BTlkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiI1wiXG4gIHwgTE5LX0ZSRUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgTE5LX1NPTUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiX1wiXG4gIHwgTE5LX1ZBTFVFIChpLCBhKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWklYVwiIGkgcHJfYW5ub3QgYVxuXG5sZXQgbGlua190b19qc29uIHBvcnRfdG9fanNvbiB0eXBlX3RvX2pzb24gYW5ub3RfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgQU5ZX0ZSRUUgLT4gYFN0cmluZyBcIkFOWV9GUkVFXCJcbiAgfCBMTktfRlJFRSAtPiBgU3RyaW5nIFwiRlJFRVwiXG4gIHwgTE5LX1RZUEUgKHAsIGEpIC0+IGBMaXN0IFsgcG9ydF90b19qc29uIGEgcDsgdHlwZV90b19qc29uIGEgXVxuICB8IExOS19BTlkgLT4gYE51bGxcbiAgfCBMTktfU09NRSAtPiBgU3RyaW5nIFwiU09NRVwiXG4gIHwgTE5LX1ZBTFVFIChpLCBhKSAtPiBgTGlzdCAoYEludCBpIDo6IGFubm90X3RvX2pzb24gYSlcblxubGV0IGxpbmtfb2ZfanNvbiBwb3J0X29mX2pzb24gdHlwZV9vZl9qc29uIGFubm90ZWRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkFOWV9GUkVFXCIgLT4gQU5ZX0ZSRUVcbiAgfCBgU3RyaW5nIFwiRlJFRVwiIC0+IExOS19GUkVFXG4gIHwgYExpc3QgWyBwOyBhIF0gLT5cbiAgICBsZXQgeCA9IHR5cGVfb2ZfanNvbiBhIGluXG4gICAgTE5LX1RZUEUgKHBvcnRfb2ZfanNvbiB4IHAsIHgpXG4gIHwgYE51bGwgLT4gTE5LX0FOWVxuICB8IGBTdHJpbmcgXCJTT01FXCIgLT4gTE5LX1NPTUVcbiAgfCBgTGlzdCAoYEludCBpIDo6ICgoW10gfCBfIDo6IF8gOjogXykgYXMgYSkpIC0+XG4gICAgTE5LX1ZBTFVFIChpLCBhbm5vdGVkX29mX2pzb24gYSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBsaW5rXCIsIHgpKVxuXG5sZXQgcHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MgZiAocywgYSkgPVxuICBpZiBsdHlwZXMgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvKiVhLiVhKi9cIlxuICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYSlcbiAgICAgIHNcbiAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgIGFcblxubGV0IHByaW50X3J1bGVfaW50ZXJuYWwgc2lncyB+c2hvd19lcmFzZWQgYWdfdHkgc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBJX0FOWSAtPiAoKVxuICB8IElfQU5ZX0NIQU5HRUQgaiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7Iy8lYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgalxuICB8IElfQU5ZX0VSQVNFRCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7IyV0fVwiIChmdW4gZiAtPlxuICAgICAgICBpZiBzaG93X2VyYXNlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi0tXCIpXG4gIHwgSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT5cbiAgICBpZiBpIDw+IGogdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYS8lYX1cIlxuICAgICAgICAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSlcbiAgICAgICAgaVxuICAgICAgICAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSlcbiAgICAgICAgalxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcbiAgfCBJX1ZBTF9FUkFTRUQgaSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWEldH1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgaVxuICAgICAgKGZ1biBmIC0+IGlmIHNob3dfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLS1cIilcblxubGV0IHJ1bGVfaW50ZXJuYWxfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gYE51bGxcbiAgfCBJX0FOWV9DSEFOR0VEIGogLT4gYExpc3QgWyBgU3RyaW5nIFwiQU5ZXCI7IGBJbnQgaiBdXG4gIHwgSV9BTllfRVJBU0VEIC0+IGBTdHJpbmcgXCJFUkFTRURcIlxuICB8IElfVkFMX0NIQU5HRUQgKGksIGopIC0+IGBMaXN0IFsgYEludCBpOyBgSW50IGogXVxuICB8IElfVkFMX0VSQVNFRCBpIC0+IGBMaXN0IFsgYEludCBpOyBgU3RyaW5nIFwiRVJBU0VEXCIgXVxuXG5sZXQgcnVsZV9pbnRlcm5hbF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBJX0FOWVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkFOWVwiOyBgSW50IGogXSAtPiBJX0FOWV9DSEFOR0VEIGpcbiAgfCBgU3RyaW5nIFwiRVJBU0VEXCIgLT4gSV9BTllfRVJBU0VEXG4gIHwgYExpc3QgWyBgSW50IGk7IGBJbnQgaiBdIC0+IElfVkFMX0NIQU5HRUQgKGksIGopXG4gIHwgYExpc3QgWyBgSW50IGk7IGBTdHJpbmcgXCJFUkFTRURcIiBdIC0+IElfVkFMX0VSQVNFRCBpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgcnVsZV9pbnRlcm5hbFwiLCB4KSlcblxubGV0IHByaW50X3N3aXRjaGluZyB+c2hvd19lcmFzZWQgZiA9IGZ1bmN0aW9uXG4gIHwgTGlua2VkIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIi8laVwiIGlcbiAgfCBGcmVlZCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIvLlwiXG4gIHwgTWFpbnRhaW5lZCAtPiAoKVxuICB8IEVyYXNlZCAtPiBpZiBzaG93X2VyYXNlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi0tXCJcblxubGV0IHN3aXRjaGluZ190b19qc29uID0gZnVuY3Rpb25cbiAgfCBGcmVlZCAtPiBgU3RyaW5nIFwiRnJlZWRcIlxuICB8IE1haW50YWluZWQgLT4gYFN0cmluZyBcIk1haW50YWluZWRcIlxuICB8IEVyYXNlZCAtPiBgU3RyaW5nIFwiRXJhc2VkXCJcbiAgfCBMaW5rZWQgaSAtPiBKc29uVXRpbC5vZl9pbnQgaVxuXG5sZXQgc3dpdGNoaW5nX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJGcmVlZFwiIC0+IEZyZWVkXG4gIHwgYFN0cmluZyBcIk1haW50YWluZWRcIiAtPiBNYWludGFpbmVkXG4gIHwgYFN0cmluZyBcIkVyYXNlZFwiIC0+IEVyYXNlZFxuICB8IHggLT4gTGlua2VkIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpcIkludmFsaWQgU3dpdGNoaW5nXCIgeClcblxubGV0IHByaW50X3J1bGVfbGluayBzaWdzIH5zaG93X2VyYXNlZCB+bHR5cGVzIGYgKChlLCBfKSwgcykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhJWFdXCJcbiAgICAocHJpbnRfbGlua1xuICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAocHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MpKVxuICAgIGVcbiAgICAocHJpbnRfc3dpdGNoaW5nIH5zaG93X2VyYXNlZClcbiAgICBzXG5cbmxldCBwcmludF9jb3VudGVyX3Rlc3QgZiA9IGZ1bmN0aW9uXG4gIHwgYywgbWluX3ZhbHVlLCB0cnVlLCBfY29udmVydCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI9JWlcIlxuICAgICAgKCgqQ291bnRlcnNfaW5mby5hcHBseV9vcmlnaW5fdG9fdmFsdWUgY29udmVydCopIGMgKyBtaW5fdmFsdWUpXG4gIHwgYywgbWluX3ZhbHVlLCBmYWxzZSwgY29udmVydCAtPlxuICAgIGxldCBpID0gKCpDb3VudGVyc19pbmZvLmFwcGx5X29yaWdpbl90b192YWx1ZSBjb252ZXJ0KikgYyArIG1pbl92YWx1ZSBpblxuICAgIChtYXRjaCBjb252ZXJ0IHdpdGhcbiAgICB8IENvdW50ZXJzX2luZm8uRnJvbV9vcmlnaW5hbF9hc3QgLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiBpXG4gICAgfCBDb3VudGVyc19pbmZvLkZyb21fY2x0ZV9lbGltaW5hdGlvbiB4IC0+XG4gICAgICAobWF0Y2ggeC5Db3VudGVyc19pbmZvLmNvbnZlcnRfdmFsdWUgd2l0aFxuICAgICAgfCBDb3VudGVyc19pbmZvLkJBU0lTX01JTlVTX0lOUFVUIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiBpKSlcblxubGV0IHByaW50X2NvdW50ZXJfZGVsdGEgY291bnRlcnMgX2NvbnZlcnQgaiBmIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaCB3aXRoXG4gIHwgTGlua2VkIGkgLT5cbiAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgY291bnRlcnMgaSBpblxuICAgIGxldCBzLCAoXywgaXNfY291bnRlcikgPSBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVycy5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgaW5cbiAgICBsZXQgZGVsdGEgPVxuICAgICAgaWYgaXNfY291bnRlciB0aGVuXG4gICAgICAgIHMgLSAxXG4gICAgICBlbHNlXG4gICAgICAgIGogLSBpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLys9JWRcIiBkZWx0YVxuICB8IEZyZWVkIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJDYW5ub3QgZXJhc2UgYWxsIGluY3JlbWVudCBhZ2VudHNcIikpXG4gIHwgTWFpbnRhaW5lZCAtPiAoKVxuICB8IEVyYXNlZCAtPiAoKVxuXG5sZXQgcHJpbnRfcnVsZV9pbnRmIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mbyB+c2hvd19lcmFzZWQgfmx0eXBlcyBhZ190eSBmXG4gICAgKHBvcnRzLCBpbnRzLCBjb3VudGVycywgY3JlYXRlZF9jb3VudGVycykgPVxuICBsZXQgcmVjIGF1eCBlbXB0eSBpID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHBvcnRzLihpKSB3aXRoXG4gICAgICAgIHwgKExOS19BTlksIF8pLCBNYWludGFpbmVkIC0+IGludHMuKGkpIDw+IElfQU5ZXG4gICAgICAgIHwgKExOS19BTlksIF8pLCAoRXJhc2VkIHwgRnJlZWQgfCBMaW5rZWQgXylcbiAgICAgICAgfCAoKExOS19TT01FIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19UWVBFIF8gfCBMTktfVkFMVUUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCAoZSwgXyksIHN3aXRjaCA9IHBvcnRzLihpKSBpblxuICAgICAgICBsZXQgaXNfY291bnRlciA9XG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBBTllfRlJFRSB8IExOS19GUkVFIHwgTE5LX0FOWSB8IExOS19UWVBFIF8gfCBMTktfU09NRSAtPiBmYWxzZVxuICAgICAgICAgIHwgTE5LX1ZBTFVFIChqLCBfKSAtPlxuICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIGNvdW50ZXJzIGogaW5cbiAgICAgICAgICAgICAgIGxldCBjLCAoZXEsIGlzX2NvdW50ZXInKSA9XG4gICAgICAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuZ2V0IGNvdW50ZXJzLlJhd19taXh0dXJlLnJhbmsgcm9vdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGlmIGlzX2NvdW50ZXInICYmIG5vdCBub0NvdW50ZXJzIHRoZW4gKFxuICAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9zaWcgPVxuICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uZ2V0X2NvdW50ZXJfc2lnIHNpZ3MgY291bnRlcnNfaW5mbyBhZ190eSBpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIGxldCBtaW5fdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvdW50ZXJfc2lnLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ291bnRlciAlYSBpbiBhZ2VudCAlYSBzaG91bGQgaGF2ZSBhIGxvd2VyIGJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFnX3R5XG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBtc2cpKVxuICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBtaW5fdmFsdWUsIF8pIC0+IG1pbl92YWx1ZVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYXslYSVhfVwiXG4gICAgICAgICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICAgICAgICAgaSBwcmludF9jb3VudGVyX3Rlc3RcbiAgICAgICAgICAgICAgICAgICAoIGMgLSAxLFxuICAgICAgICAgICAgICAgICAgICAgbWluX3ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgZXEsXG4gICAgICAgICAgICAgICAgICAgICBjb3VudGVyX3NpZy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgKVxuICAgICAgICAgICAgICAgICAgIChwcmludF9jb3VudGVyX2RlbHRhIGNyZWF0ZWRfY291bnRlcnNcbiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX3NpZy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgailcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2g7XG4gICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIG5vdCBpc19jb3VudGVyIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWElYVwiXG4gICAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgICAocHJpbnRfcnVsZV9pbnRlcm5hbCBzaWdzIH5zaG93X2VyYXNlZCBhZ190eSBpKVxuICAgICAgICAgICAgICBpbnRzLihpKVxuICAgICAgICAgICAgICAocHJpbnRfcnVsZV9saW5rIHNpZ3MgfnNob3dfZXJhc2VkIH5sdHlwZXMpXG4gICAgICAgICAgICAgIHBvcnRzLihpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSAoc3VjYyBpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGF1eCBlbXB0eSAoc3VjYyBpKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCB1bmlvbl9maW5kX2NvdW50ZXJzIHNpZ3MgbWl4ID1cbiAgbGV0IHQgPSBSYXdfbWl4dHVyZS5jcmVhdGUgMSBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biBhZyAtPlxuICAgICAgICAgIG1hdGNoIFNpZ25hdHVyZS5wb3J0c19pZl9jb3VudGVyX2FnZW50IHNpZ3MgYWcucmFfdHlwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIChiZWZvcmUsIGFmdGVyKSAtPlxuICAgICAgICAgICAgbGV0IChhLCBfKSwgXyA9IGFnLnJhX3BvcnRzLihhZnRlcikgaW5cbiAgICAgICAgICAgIGxldCAoYiwgXyksIF8gPSBhZy5yYV9wb3J0cy4oYmVmb3JlKSBpblxuICAgICAgICAgICAgKG1hdGNoIGIgd2l0aFxuICAgICAgICAgICAgfCBBTllfRlJFRSB8IExOS19GUkVFIHwgTE5LX0FOWSB8IExOS19UWVBFIF8gfCBMTktfU09NRSAtPiAoKVxuICAgICAgICAgICAgfCBMTktfVkFMVUUgKGxua19iLCBfKSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgIHwgTE5LX1ZBTFVFIChsbmtfYSwgXykgLT4gUmF3X21peHR1cmUudW5pb24gdCBsbmtfYiBsbmtfYVxuICAgICAgICAgICAgICB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgLT5cbiAgICAgICAgICAgICAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgdCBsbmtfYiBpblxuICAgICAgICAgICAgICAgIGxldCBzLCBfID0gTW9kcy5EeW5BcnJheS5nZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgaW5cbiAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LnNldCB0LlJhd19taXh0dXJlLnJhbmsgcm9vdCAocywgKHRydWUsIHRydWUpKVxuICAgICAgICAgICAgICB8IExOS19BTlkgLT5cbiAgICAgICAgICAgICAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgdCBsbmtfYiBpblxuICAgICAgICAgICAgICAgIGxldCBzLCBfID0gTW9kcy5EeW5BcnJheS5nZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgaW5cbiAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LnNldCB0LlJhd19taXh0dXJlLnJhbmsgcm9vdCAocywgKGZhbHNlLCB0cnVlKSlcbiAgICAgICAgICAgICAgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQb3J0IGEgb2YgX19jb3VudGVyX2FnZW50IGFnZW50IG5vdCB3ZWxsIHNwZWNpZmllZFwiKSkpKSlcbiAgICAgICAgbWl4XG4gIGluXG4gIHRcblxubGV0IHByaW50X3J1bGVfYWdlbnQgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIH5sdHlwZXMgY291bnRlcnNcbiAgICBjcmVhdGVkX2NvdW50ZXJzIGYgYWcgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKSV0XCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSBhZy5yYV90eXBlXG4gICAgKHByaW50X3J1bGVfaW50ZiB+bm9Db3VudGVycyBzaWdzIGNvdW50ZXJzX2luZm8gfnNob3dfZXJhc2VkOmZhbHNlIH5sdHlwZXNcbiAgICAgICBhZy5yYV90eXBlKSAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMsIGNvdW50ZXJzLCBjcmVhdGVkX2NvdW50ZXJzKVxuICAgIChmdW4gZiAtPiBpZiBhZy5yYV9lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItXCIpXG5cbmxldCBwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIH5sdHlwZXMgY3JlYXRlZCBmIG1peCA9XG4gIGxldCBjb3VudGVyX2FnZW50cyA9IHVuaW9uX2ZpbmRfY291bnRlcnMgKFNvbWUgc2lncykgbWl4IGluXG4gIGxldCBjcmVhdGVkX2luY3IgPSBSYXdfbWl4dHVyZS51bmlvbl9maW5kX2NvdW50ZXJzIChTb21lIHNpZ3MpIGNyZWF0ZWQgaW5cbiAgbGV0IHJlYyBhdXhfcHJpbnQgc29tZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGgucmFfdHlwZSAmJiBub3Qgbm9Db3VudGVycyB0aGVuXG4gICAgICAgIGF1eF9wcmludCBzb21lIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBpZiBzb21lIHRoZW4gUHAuY29tbWEgZiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHByaW50X3J1bGVfYWdlbnQgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIH5sdHlwZXMgY291bnRlcl9hZ2VudHNcbiAgICAgICAgICAgIGNyZWF0ZWRfaW5jciBmIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X3ByaW50IHRydWUgdFxuICAgICAgKVxuICBpblxuICBhdXhfcHJpbnQgZmFsc2UgbWl4XG5cbmxldCBwcmludF9pbnRlcm5hbF9saHMgc2lncyBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+ICgpXG4gIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsjfVwiXG4gIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcblxubGV0IHByaW50X2ludGVybmFsX3JocyBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIGogfCBJX1ZBTF9DSEFOR0VEIChfLCBqKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGpcbiAgfCBJX0FOWV9FUkFTRUQgfCBJX1ZBTF9FUkFTRUQgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHByaW50X2xpbmtfbGhzIH5sdHlwZXMgc2lncyBmICgoZSwgXyksIF8pID1cbiAgcHJpbnRfbGlua1xuICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAocHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MpXG4gICAgZiBlXG5cbmxldCBwcmludF9saW5rX3JocyB+bHR5cGVzIHNpZ3MgZiAoKGUsIF8pLCBzKSA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IExpbmtlZCBpIC0+XG4gICAgcHJpbnRfbGlua1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAoZnVuIF8gKCkgLT4gKCkpXG4gICAgICBmXG4gICAgICAoTE5LX1ZBTFVFIChpLCAoKSkpXG4gIHwgRnJlZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgTWFpbnRhaW5lZCAtPlxuICAgIHByaW50X2xpbmtcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKVxuICAgICAgZiBlXG4gIHwgRXJhc2VkIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcHJpbnRfaW50Zl9saHMgfmx0eXBlcyBzaWdzIGFnX3R5IGYgKHBvcnRzLCBpbnRzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlblxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgICAgfCAoKExOS19TT01FIHwgTE5LX0ZSRUUgfCBBTllfRlJFRSB8IExOS19UWVBFIF8gfCBMTktfVkFMVUUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgXyAtPlxuICAgICAgICAgIChtYXRjaCBpbnRzLihpKSB3aXRoXG4gICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0VSQVNFRCB8IElfQU5ZX0NIQU5HRUQgXyAtPiBmYWxzZVxuICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCBfIHwgSV9WQUxfRVJBU0VEIF8gLT4gdHJ1ZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFbJWFdXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICBpXG4gICAgICAgICAgICAocHJpbnRfaW50ZXJuYWxfbGhzIHNpZ3MgYWdfdHkgaSlcbiAgICAgICAgICAgIGludHMuKGkpXG4gICAgICAgICAgICAocHJpbnRfbGlua19saHMgfmx0eXBlcyBzaWdzKVxuICAgICAgICAgICAgcG9ydHMuKGkpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSAoc3VjYyBpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGF1eCBlbXB0eSAoc3VjYyBpKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBwcmludF9pbnRmX3JocyB+bHR5cGVzIHNpZ3MgYWdfdHkgZiAocG9ydHMsIGludHMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBMTktfRlJFRSB8IEFOWV9GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCAoRXJhc2VkIHwgRnJlZWQgfCBMaW5rZWQgXykgLT4gdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgTWFpbnRhaW5lZCAtPlxuICAgICAgICAgIChtYXRjaCBpbnRzLihpKSB3aXRoXG4gICAgICAgICAgfCBJX0FOWSAtPiBmYWxzZVxuICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT4gaSA8PiBqXG4gICAgICAgICAgfCBJX0FOWV9FUkFTRUQgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX1ZBTF9FUkFTRUQgXyAtPiB0cnVlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVslYV1cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgIGlcbiAgICAgICAgICAgIChwcmludF9pbnRlcm5hbF9yaHMgc2lncyBhZ190eSBpKVxuICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgIChwcmludF9saW5rX3JocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHByaW50X2FnZW50X2xocyB+bHR5cGVzIHNpZ3MgZiBhZyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pXCJcbiAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgYWcucmFfdHlwZVxuICAgIChwcmludF9pbnRmX2xocyB+bHR5cGVzIHNpZ3MgYWcucmFfdHlwZSlcbiAgICAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMpXG5cbmxldCBwcmludF9hZ2VudF9yaHMgfmx0eXBlcyBzaWdzIGYgYWcgPVxuICBpZiBub3QgYWcucmFfZXJhc2VkIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKVwiXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICBhZy5yYV90eXBlXG4gICAgICAocHJpbnRfaW50Zl9yaHMgfmx0eXBlcyBzaWdzIGFnLnJhX3R5cGUpXG4gICAgICAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMpXG5cbmxldCBwcmludF9yaHMgfm5vQ291bnRlcnMgfmx0eXBlcyBzaWdzIGNvdW50ZXJzX2luZm8gY3JlYXRlZCBmIG1peCA9XG4gIGxldCByZWMgYXV4IGVtcHR5ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+aW5pdGlhbF9jb21tYToobm90IGVtcHR5KSB+Y3JlYXRlZDpmYWxzZVxuICAgICAgICB+c2lncyB+Y291bnRlcnNfaW5mbyBmIGNyZWF0ZWRcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgaC5yYV9lcmFzZWQgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0LlwiXG4gICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBQcC5jb21tYSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIHRcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuY29tbWEpXG4gICAgICAgICAgICAocHJpbnRfYWdlbnRfcmhzIH5sdHlwZXMgc2lncylcbiAgICAgICAgICAgIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4IHRydWUgbWl4XG5cbmxldCBwcmludF9yYXRlcyB+bm9Db3VudGVycyBzaWdzIGNvdW50ZXJzX2luZm8gcHJfdG9rIHByX3ZhciBmIHIgPVxuICBsZXQgbHR5cGVzID0gZmFsc2UgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiBAQCAlYSV0XCJcbiAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAoZnVuIGYgbSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mbyB+bHR5cGVzIFtdKVxuICAgICAgICAgICBtKVxuICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgKGZzdCByLnJfcmF0ZSlcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIucl91bl9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lICgocmEsIF8pLCBtYXhfZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWElYX1cIlxuICAgICAgICAgIChBbGdfZXhwci5wcmludFxuICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIH5sdHlwZXMgW10pXG4gICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgcHJfdG9rIHByX3ZhcilcbiAgICAgICAgICByYVxuICAgICAgICAgIChQcC5vcHRpb24gKGZ1biBmIChtZCwgXykgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIlxuICAgICAgICAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmx0eXBlcyBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgICAgICAgIG1kKSlcbiAgICAgICAgICBtYXhfZGlzdClcblxubGV0IHByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGwgc2lncyBjb3VudGVyc19pbmZvIHByX3RvayBwcl92YXIgZiByID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JXQldCVhJXRAXVwiXG4gICAgKGZ1biBmIC0+XG4gICAgICBpZiBmdWxsIHx8IHIucl9lZGl0X3N0eWxlIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWFcIlxuICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIH5sdHlwZXM6ZmFsc2VcbiAgICAgICAgICAgICByLnJfY3JlYXRlZClcbiAgICAgICAgICByLnJfbWl4XG4gICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTooci5yX21peCA8PiBbXSkgfnNpZ3MgfmNvdW50ZXJzX2luZm8pXG4gICAgICAgICAgci5yX2NyZWF0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXQlYSAtPiAlYVwiXG4gICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKHByaW50X2FnZW50X2xocyB+bHR5cGVzOmZhbHNlIHNpZ3MpKVxuICAgICAgICAgIHIucl9taXhcbiAgICAgICAgICAoZnVuIGYgLT4gaWYgci5yX21peCA8PiBbXSAmJiByLnJfY3JlYXRlZCA8PiBbXSB0aGVuIFBwLmNvbW1hIGYpXG4gICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiKSlcbiAgICAgICAgICByLnJfY3JlYXRlZFxuICAgICAgICAgIChwcmludF9yaHMgfm5vQ291bnRlcnMgfmx0eXBlczpmYWxzZSBzaWdzIGNvdW50ZXJzX2luZm8gci5yX2NyZWF0ZWQpXG4gICAgICAgICAgci5yX21peClcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIucl9kZWx0YV90b2tlbnMgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBfIDo6IF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIHwgXCIpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmICgobmIsIF8pLCB0aykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiXG4gICAgICAgICAgIChBbGdfZXhwci5wcmludFxuICAgICAgICAgICAgICAoZnVuIGYgbSAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvXG4gICAgICAgICAgICAgICAgICAgICB+bHR5cGVzOmZhbHNlIFtdKVxuICAgICAgICAgICAgICAgICAgbSlcbiAgICAgICAgICAgICAgcHJfdG9rIHByX3ZhcilcbiAgICAgICAgICAgbmIgcHJfdG9rIHRrKSlcbiAgICByLnJfZGVsdGFfdG9rZW5zXG4gICAgKGZ1biBmIC0+XG4gICAgICBpZiBmdWxsIHRoZW4gcHJpbnRfcmF0ZXMgfm5vQ291bnRlcnMgc2lncyBjb3VudGVyc19pbmZvIHByX3RvayBwcl92YXIgZiByKVxuXG5sZXQgcnVsZV9hZ2VudF90b19qc29uIGZpbGVuYW1lcyBhID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJ0eXBlXCIsIGBJbnQgYS5yYV90eXBlO1xuICAgICAgKCBcImJpbmRpbmdzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIChlLCBzKSBjIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgIChsaW5rX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzLCBhKSAtPiBbIGBJbnQgczsgYEludCBhIF0pKVxuICAgICAgICAgICAgICAgICAgICAgZTtcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmdfdG9fanNvbiBzO1xuICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICA6OiBjKVxuICAgICAgICAgICAgIGEucmFfcG9ydHMgW10pICk7XG4gICAgICAoIFwic3RhdGVzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIHggYyAtPiBydWxlX2ludGVybmFsX3RvX2pzb24geCA6OiBjKVxuICAgICAgICAgICAgIGEucmFfaW50cyBbXSkgKTtcbiAgICAgIFwiZXJhc2VkXCIsIGBCb29sIGEucmFfZXJhc2VkO1xuICAgIF1cblxubGV0IHJ1bGVfYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgcG9ydHMgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImJpbmRpbmdzXCIgbCB3aXRoXG4gICAgICAgICB8IGBMaXN0IHMgLT5cbiAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBlOyBzIF0gLT5cbiAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgKGxpbmtfb2ZfanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludClcbiAgICAgICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgWyBgSW50IHM7IGBJbnQgYSBdIC0+IHMsIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCkpXG4gICAgICAgICAgICAgICAgICAgICBlLFxuICAgICAgICAgICAgICAgICAgIHN3aXRjaGluZ19vZl9qc29uIHMgKVxuICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICBzXG4gICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgaW5cbiAgICAgICBsZXQgaW50cyA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwic3RhdGVzXCIgbCB3aXRoXG4gICAgICAgICB8IGBMaXN0IHMgLT4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgcnVsZV9pbnRlcm5hbF9vZl9qc29uIHNcbiAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICBpblxuICAgICAgIHtcbiAgICAgICAgIHJhX3R5cGUgPSBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKExpc3QuYXNzb2MgXCJ0eXBlXCIgbCk7XG4gICAgICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICAgcmFfaW50cyA9IGludHM7XG4gICAgICAgICByYV9lcmFzZWQgPSBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sIChMaXN0LmFzc29jIFwiZXJhc2VkXCIgbCk7XG4gICAgICAgICByYV9zeW50YXggPSBTb21lIChwb3J0cywgaW50cyk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcnVsZV9hZ2VudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJ1bGVfYWdlbnRcIiwgeCkpXG5cbmxldCBydWxlX21peHR1cmVfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBKc29uVXRpbC5vZl9saXN0IChydWxlX2FnZW50X3RvX2pzb24gZmlsZW5hbWVzKVxuXG5sZXQgcnVsZV9taXh0dXJlX29mX2pzb24gZmlsZW5hbWVzID1cbiAgSnNvblV0aWwudG9fbGlzdCAocnVsZV9hZ2VudF9vZl9qc29uIGZpbGVuYW1lcylcblxubGV0IGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXNcbiAgICAocnVsZV9taXh0dXJlX3RvX2pzb24gZmlsZW5hbWVzKVxuICAgIEpzb25VdGlsLm9mX2ludFxuXG5sZXQgbGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChydWxlX21peHR1cmVfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBydWxlX3RvX2pzb24gfmZpbGVuYW1lcyByID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJtaXh0dXJlXCIsIHJ1bGVfbWl4dHVyZV90b19qc29uIGZpbGVuYW1lcyByLnJfbWl4O1xuICAgICAgXCJjcmVhdGVkXCIsIFJhd19taXh0dXJlLnRvX2pzb24gci5yX2NyZWF0ZWQ7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50KVxuICAgICAgICAgIHIucl9kZWx0YV90b2tlbnMgKTtcbiAgICAgICggXCJyYXRlXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpIHIucl9yYXRlXG4gICAgICApO1xuICAgICAgKCBcInVuYXJ5X3JhdGVcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSkpKVxuICAgICAgICAgIHIucl91bl9yYXRlICk7XG4gICAgICBcImVkaXRfc3R5bGVcIiwgYEJvb2wgci5yX2VkaXRfc3R5bGU7XG4gICAgXVxuXG5sZXQgcnVsZV9vZl9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDwgNyAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICByX21peCA9IHJ1bGVfbWl4dHVyZV9vZl9qc29uIGZpbGVuYW1lcyAoTGlzdC5hc3NvYyBcIm1peHR1cmVcIiBsKTtcbiAgICAgICAgIHJfY3JlYXRlZCA9IFJhd19taXh0dXJlLm9mX2pzb24gKExpc3QuYXNzb2MgXCJjcmVhdGVkXCIgbCk7XG4gICAgICAgICByX2RlbHRhX3Rva2VucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiZGVsdGFfdG9rZW5zXCIgbCk7XG4gICAgICAgICByX3JhdGUgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJyYXRlXCIgbCk7XG4gICAgICAgICByX3VuX3JhdGUgPVxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgKGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gKGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcykpKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInVuYXJ5X3JhdGVcIiBsKVxuICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSk7XG4gICAgICAgICByX2VkaXRfc3R5bGUgPSBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sIChMaXN0LmFzc29jIFwiZWRpdF9zdHlsZVwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcnVsZVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcnVsZVwiLCB4KSlcblxubGV0IHJhaXNlX2lmX21vZGlmaWNhdGlvbiBwb3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIkEgbW9kaWZpY2F0aW9uIGlzIGZvcmJpZGRlbiBoZXJlLlwiLCBwb3MpKVxuXG5sZXQgcmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMgcG9zID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgIChcIkluIGEgcGF0dGVybiwgYSBzaXRlIGNhbm5vdCBoYXZlIHNldmVyYWwgaW50ZXJuYWwgc3RhdGVzLlwiLCBwb3MpKVxuXG5sZXQgcmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1cyB+c2lkZSBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiVGhlIFwiIF4gc3RhdHVzIF4gXCIgc3RhdGUgb2YgYWdlbnQgJ1wiIF4gYWdlbnRfbmFtZSBeIFwiJywgc2l0ZSAnXCIgXiBuYVxuICAgICAgICAgXiBcIicgb24gdGhlIFwiIF4gc2lkZSBeIFwiIGhhbmQgc2lkZSBpcyB1bmRlcnNwZWNpZmllZFwiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJTaXRlICdcIiBeIG5hIF4gXCInIG9jY3VycyBtb3JlIHRoYW4gb25jZSBpbiB0aGlzIGFnZW50ICdcIiBeIGFnZW50X25hbWVcbiAgICAgICAgIF4gXCInXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiU2l0ZSAnXCIgXiBuYSBeIFwiJyBvY2N1cnMgYm90aCBhcyBwb3J0IGFuZCBhcyBjb3VudGVyIGluICdcIlxuICAgICAgICAgXiBhZ2VudF9uYW1lIF4gXCInXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHJhaXNlX2xpbmtfb25seV9vbmVfb2NjdXJlbmNlIGkgcG9zID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJUaGUgbGluayAnXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgIF4gXCInIG9jY3VycyBvbmx5IG9uZSB0aW1lIGluIHRoZSBtaXh0dXJlLlwiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9saW5rX3Nob3VsZF9iZV9yZW1vdmVkIGkgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlRoZSBsaW5rICdcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiJyBzaG91bGQgYmUgbWFkZSBmcmVlIGluIHRoZSBzaXRlICdcIlxuICAgICAgICAgXiBuYSBeIFwiJyBvZiBhZ2VudCAnXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICBeIFwiJywgc2luY2UgaXQgd2lsbCBtYWRlIGJlIGZyZWUgYnkgc2lkZS1lZmZlY3QuXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IGNvcHlfcnVsZV9hZ2VudCBhID1cbiAgbGV0IHAgPSBBcnJheS5jb3B5IGEucmFfcG9ydHMgaW5cbiAgbGV0IGkgPSBBcnJheS5jb3B5IGEucmFfaW50cyBpblxuICB7XG4gICAgcmFfdHlwZSA9IGEucmFfdHlwZTtcbiAgICByYV9lcmFzZWQgPSBhLnJhX2VyYXNlZDtcbiAgICByYV9wb3J0cyA9IHA7XG4gICAgcmFfaW50cyA9IGk7XG4gICAgcmFfc3ludGF4ID1cbiAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIF8gLT4gQXJyYXkuY29weSBwLCBBcnJheS5jb3B5IGkpIGEucmFfc3ludGF4O1xuICB9XG5cbmxldCBhZ2VudF90b19lcmFzZWQgc2lncyByID1cbiAgbGV0IHJhX3BvcnRzID0gQXJyYXkubWFwIChmdW4gKGEsIF8pIC0+IGEsIEVyYXNlZCkgci5yYV9wb3J0cyBpblxuICBsZXQgcmFfaW50cyA9XG4gICAgQXJyYXkubWFwaVxuICAgICAgKGZ1biBqIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPiBJX1ZBTF9FUkFTRUQgaVxuICAgICAgICB8IElfQU5ZIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+XG4gICAgICAgICAgKG1hdGNoIFNpZ25hdHVyZS5kZWZhdWx0X2ludGVybmFsX3N0YXRlIHIucmFfdHlwZSBqIHNpZ3Mgd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IElfQU5ZX0VSQVNFRFxuICAgICAgICAgIHwgTm9uZSAtPiBJX0FOWSkpXG4gICAgICByLnJhX2ludHNcbiAgaW5cbiAge1xuICAgIHJhX3R5cGUgPSByLnJhX3R5cGU7XG4gICAgcmFfZXJhc2VkID0gdHJ1ZTtcbiAgICByYV9wb3J0cztcbiAgICByYV9pbnRzO1xuICAgIHJhX3N5bnRheCA9XG4gICAgICAobWF0Y2ggci5yYV9zeW50YXggd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBfIC0+IFNvbWUgKEFycmF5LmNvcHkgcmFfcG9ydHMsIEFycmF5LmNvcHkgcmFfaW50cykpO1xuICB9XG5cbmxldCB0b19lcmFzZWQgKHNpZ3MgOiBTaWduYXR1cmUucykgKHggOiBydWxlX21peHR1cmUpIDogcnVsZV9taXh0dXJlID1cbiAgTGlzdC5tYXAgKGFnZW50X3RvX2VyYXNlZCBzaWdzKSB4XG5cbmxldCB0b19tYWludGFpbmVkICh4IDogcnVsZV9taXh0dXJlKSA6IHJ1bGVfbWl4dHVyZSA9XG4gIExpc3QubWFwXG4gICAgKGZ1biByIC0+XG4gICAgICBsZXQgcG9ydHMgPSBBcnJheS5tYXAgKGZ1biAoYSwgXykgLT4gYSwgTWFpbnRhaW5lZCkgci5yYV9wb3J0cyBpblxuICAgICAgbGV0IGludHMgPVxuICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPiBJX1ZBTF9DSEFOR0VEIChpLCBpKVxuICAgICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPiBJX0FOWSlcbiAgICAgICAgICByLnJhX2ludHNcbiAgICAgIGluXG4gICAgICB7XG4gICAgICAgIHJhX3R5cGUgPSByLnJhX3R5cGU7XG4gICAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICByYV9pbnRzID0gaW50cztcbiAgICAgICAgcmFfc3ludGF4ID1cbiAgICAgICAgICAobWF0Y2ggci5yYV9zeW50YXggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIF8gLT4gU29tZSAocG9ydHMsIGludHMpKTtcbiAgICAgIH0pXG4gICAgeFxuXG5sZXQgdG9fcmF3X21peHR1cmUgc2lncyB4ID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIHIgLT5cbiAgICAgIGxldCBpbnRlcm5hbHMgPVxuICAgICAgICBBcnJheS5tYXBpXG4gICAgICAgICAgKGZ1biBqIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gU29tZSBpXG4gICAgICAgICAgICB8IElfQU5ZIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+XG4gICAgICAgICAgICAgIFNpZ25hdHVyZS5kZWZhdWx0X2ludGVybmFsX3N0YXRlIHIucmFfdHlwZSBqIHNpZ3MpXG4gICAgICAgICAgci5yYV9pbnRzXG4gICAgICBpblxuICAgICAgbGV0IHBvcnRzID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCAoTE5LX1NPTUUsIHBvcyB8IExOS19UWVBFIF8sIHBvcyksIF8gLT5cbiAgICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSByLnJhX3R5cGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcnRfbmFtZSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyByLnJhX3R5cGUpIGpcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgICAgIGFnZW50X25hbWUgKHBvcnRfbmFtZSwgcG9zKVxuICAgICAgICAgICAgfCAoTE5LX1ZBTFVFIChpLCBfKSwgXyksIF8gLT4gUmF3X21peHR1cmUuVkFMIGlcbiAgICAgICAgICAgIHwgKChMTktfQU5ZIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSksIF8pLCBfIC0+IFJhd19taXh0dXJlLkZSRUUpXG4gICAgICAgICAgci5yYV9wb3J0c1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgUmF3X21peHR1cmUuYV90eXBlID0gci5yYV90eXBlO1xuICAgICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgICAgIFJhd19taXh0dXJlLmFfaW50cyA9IGludGVybmFscztcbiAgICAgIH0pXG4gICAgeFxuXG5sZXQgbWF4X2xpbmtfaWQgciA9XG4gIGxldCBtYXhfcyBtID0gZnVuY3Rpb25cbiAgICB8IExpbmtlZCBpIC0+IG1heCBpIG1cbiAgICB8IEZyZWVkIHwgTWFpbnRhaW5lZCB8IEVyYXNlZCAtPiBtXG4gIGluXG4gIGxldCBtYXhfbGlua19pZF9zaXRlcyBtYXhfaWQgYWcgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBtYXhfaWQgLT4gZnVuY3Rpb25cbiAgICAgICAgfCAoTE5LX1ZBTFVFIChqLCBfKSwgXyksIHMgLT4gbWF4X3MgKG1heCBqIG1heF9pZCkgc1xuICAgICAgICB8ICgoTE5LX1RZUEUgXyB8IExOS19TT01FIHwgTE5LX0ZSRUUgfCBMTktfQU5ZIHwgQU5ZX0ZSRUUpLCBfKSwgcyAtPlxuICAgICAgICAgIG1heF9zIG1heF9pZCBzKVxuICAgICAgbWF4X2lkIGFnLnJhX3BvcnRzXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0IG1heF9saW5rX2lkX3NpdGVzIDAgclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUga2V5IHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAoIFwiQnVnOiBMaW5rIFwiIF4gc3RyaW5nX29mX2ludCBrZXlcbiAgICAgICAgIF4gXCIgaXMgcHJvYmxlbWF0aWMhIExLYXBwYSBpcyBlaXRoZXIgYnJva2VuXCJcbiAgICAgICAgIF4gXCIgb3IgdW51c2VkISBQbGVhc2UgcmVwb3J0LlwiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCBwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIHBfaWQgPVxuICBzbmQgY29udGFjdF9tYXAuKHR5X2lkKS4ocF9pZClcblxubGV0IGZpbmRfaW1wbGljaXRfaW5mb3MgY29udGFjdF9tYXAgYWdzID1cbiAgbGV0IG5ld19zd2l0Y2ggPSBmdW5jdGlvblxuICAgIHwgTEthcHBhLk1haW50YWluZWQgLT4gTEthcHBhLk1haW50YWluZWRcbiAgICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5FcmFzZWQgLT4gTEthcHBhLkZyZWVkXG4gIGluXG4gIGxldCByZWMgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyBpID1cbiAgICBsZXQgdHlfaWQgPSBhZy5MS2FwcGEucmFfdHlwZSBpblxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggcG9ydHMgdGhlbiAoXG4gICAgICBsZXQgY3VycmVudCcgPVxuICAgICAgICB7XG4gICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZy5MS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICB9XG4gICAgICAgIDo6IGN1cnJlbnRcbiAgICAgIGluXG4gICAgICBhdXhfYWdzIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCcgdG9kb3MgYWdfdGFpbFxuICAgICkgZWxzZSAoXG4gICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgfCAoTEthcHBhLkxOS19UWVBFIChwLCBhKSwgXyksIHMgLT5cbiAgICAgICAgbGV0IG9yX3R5ID0gaSwgdHlfaWQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwb3J0cy4oaSkgPC1cbiAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChmcmVlX2lkLCAocCwgYSkpKSwgc1xuICAgICAgICBpblxuICAgICAgICBhdXhfb25lIChzdWNjIGZyZWVfaWQpIHByZXZpb3VzIGN1cnJlbnRcbiAgICAgICAgICAoKGZyZWVfaWQsIChwLCBhKSwgb3JfdHksIG5ld19zd2l0Y2ggcykgOjogdG9kb3MpXG4gICAgICAgICAgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoTEthcHBhLkxOS19TT01FLCBfKSwgcyAtPlxuICAgICAgICBsZXQgb3JfdHkgPSBpLCB0eV9pZCBpblxuICAgICAgICBNb2RzLkludDJTZXQuZm9sZFxuICAgICAgICAgIChmdW4gKGEsIHApIHByZXYnIC0+XG4gICAgICAgICAgICBsZXQgcG9ydHMnID0gQXJyYXkuY29weSBwb3J0cyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LVxuICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChmcmVlX2lkLCAocCwgYSkpKSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0b2RvcycgPSAoZnJlZV9pZCwgKHAsIGEpLCBvcl90eSwgbmV3X3N3aXRjaCBzKSA6OiB0b2RvcyBpblxuICAgICAgICAgICAgYXV4X29uZSAoc3VjYyBmcmVlX2lkKSBwcmV2JyBjdXJyZW50IHRvZG9zJyBhZ190YWlsIGFnIHBvcnRzJ1xuICAgICAgICAgICAgICAoc3VjYyBpKSlcbiAgICAgICAgICAocG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBpKVxuICAgICAgICAgIHByZXZpb3VzXG4gICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLCBfIC0+XG4gICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKExLYXBwYS5MTktfRlJFRSwgcG9zKSwgKChMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQpIGFzIHMpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgKCogRG8gbm90IG1ha2UgdGVzdCBpZiBiZWluZyBmcmVlIGlzIHRoZSBvbmx5IHBvc3NpYmlsaXR5ICopXG4gICAgICAgICAgaWYgTW9kcy5JbnQyU2V0LmlzX2VtcHR5IChwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIGkpXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgcG9ydHMuKGkpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKExLYXBwYS5MTktfRlJFRSwgXyksIExLYXBwYS5GcmVlZCAtPlxuICAgICAgICBmYWlsd2l0aCBcIkEgZnJlZSBzaXRlIGNhbm5vdCBiZSBmcmVlZFwiXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBMS2FwcGEuTGlua2VkIF8gLT5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgXyksIExLYXBwYS5NYWludGFpbmVkIC0+XG4gICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgcG9zKSxcbiAgICAgICAgICAoKExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRnJlZWQpIGFzIHMpICkgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBNb2RzLkludDJTZXQuaXNfZW1wdHkgKHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgaSlcbiAgICAgICAgICAmJiBzID0gTEthcHBhLkZyZWVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIERvIG5vdCBtYWtlIHRlc3QgaXMgYmVpbmcgZnJlZSBpcyB0aGUgb25seSBwb3NzaWJpbGl0eSAqKVxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihpKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIExLYXBwYS5NYWludGFpbmVkIGluXG4gICAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgKVxuICBhbmQgYXV4X2FncyBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKExpc3QucmV2IGN1cnJlbnQsIHRvZG9zKSA6OiBwcmV2aW91c1xuICAgIHwgYWcgOjogYWdfdGFpbCAtPlxuICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBhZy5MS2FwcGEucmFfcG9ydHMgMFxuICBpblxuICBhdXhfYWdzIChzdWNjIChMS2FwcGEubWF4X2xpbmtfaWQgYWdzKSkgW10gW10gW10gYWdzXG5cbmxldCBjb21wbGV0ZV93aXRoX2NhbmRpZGF0ZSBvdXRzIHByZXZzIGFnIGFnX3RhaWwgaWQgdG9kbyBwX2lkIGRzdF9pbmZvIHBfc3dpdGNoXG4gICAgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyBwb3J0IC0+XG4gICAgICBpZiBpIDw+IHBfaWQgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICBpZiBzID0gTEthcHBhLk1haW50YWluZWQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgcG9ydHMnID0gQXJyYXkuY29weSBhZy5MS2FwcGEucmFfcG9ydHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvcnRzJy4oaSkgPC1cbiAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIGRzdF9pbmZvKSksIHBfc3dpdGNoXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBMaXN0LnJldl9hcHBlbmQgcHJldnNcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHMnO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgdG9kbyxcbiAgICAgICAgICAgICAgZmFsc2UgKVxuICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgKSBlbHNlIGlmIHMgPSBMS2FwcGEuRXJhc2VkICYmIHBfc3dpdGNoID0gTEthcHBhLkZyZWVkIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBMaXN0LnJldl9hcHBlbmQgcHJldnNcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHMnO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgdG9kbyxcbiAgICAgICAgICAgICAgZmFsc2UgKVxuICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSAoaywgeCksIF8pLCBzIC0+XG4gICAgICAgICAgaWYgeCA9IGRzdF9pbmZvIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChqLCBfLCAocCcsIGEnKSwgc3cnKSAtPlxuICAgICAgICAgICAgICAgICAgaiA9IGsgJiYgaSA9IHAnICYmIGEnID0gYWcuTEthcHBhLnJhX3R5cGUgJiYgc3cnID0gcF9zd2l0Y2gpXG4gICAgICAgICAgICAgICAgdG9kb1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIF8gXSwgdG9kbycgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIHgpKSwgc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIExpc3QucmV2X2FwcGVuZCBwcmV2c1xuICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cyc7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgICB0b2RvJyxcbiAgICAgICAgICAgICAgICBmYWxzZSApXG4gICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgfCBbXSwgXyAtPiBhY2NcbiAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCAoKExLYXBwYS5MTktfVFlQRSBfIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkxOS19TT01FKSwgXyksIF8gLT4gYWNjXG4gICAgICApKVxuICAgIG91dHMgYWcuTEthcHBhLnJhX3BvcnRzXG5cbmxldCBuZXdfYWdlbnRfd2l0aF9vbmVfbGluayBzaWdzIHR5X2lkIHBvcnQgbGluayBkc3RfaW5mbyBzd2l0Y2ggPVxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eV9pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCAoKSA9XG4gICAgcG9ydHMuKHBvcnQpIDwtXG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAobGluaywgZHN0X2luZm8pKSwgc3dpdGNoXG4gIGluXG4gIHtcbiAgICBMS2FwcGEucmFfdHlwZSA9IHR5X2lkO1xuICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzO1xuICAgIExLYXBwYS5yYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgIExLYXBwYS5yYV9lcmFzZWQgPSBmYWxzZTtcbiAgICBMS2FwcGEucmFfc3ludGF4ID0gTm9uZTtcbiAgfVxuXG5sZXQgcmVjIGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkICgoKHBvcnQsIHR5X2lkKSwgZHN0X2luZm8sIHMpIGFzIGluZm8pIGFjY1xuICAgIGZyZXNoX29ubHlfYWNjIG91dCB0b2RvID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgICggTGlzdC5yZXZfYXBwZW5kIGFjY1xuICAgICAgICBbIG5ld19hZ2VudF93aXRoX29uZV9saW5rIHNpZ3MgdHlfaWQgcG9ydCBpZCBkc3RfaW5mbyBzIF0sXG4gICAgICB0b2RvLFxuICAgICAgZnJlc2hfb25seV9hY2MgKVxuICAgIDo6IG91dFxuICB8IGFnIDo6IGFnX3RhaWwgLT5cbiAgICBsZXQgb3V0X3RhaWwgPVxuICAgICAgYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgaW5mbyAoYWcgOjogYWNjKSBmcmVzaF9vbmx5X2FjYyBvdXQgdG9kb1xuICAgICAgICBhZ190YWlsXG4gICAgaW5cbiAgICBpZiB0eV9pZCA9IGFnLkxLYXBwYS5yYV90eXBlIHRoZW5cbiAgICAgIGNvbXBsZXRlX3dpdGhfY2FuZGlkYXRlIG91dF90YWlsIGFjYyBhZyBhZ190YWlsIGlkIHRvZG8gcG9ydCBkc3RfaW5mbyBzXG4gICAgZWxzZVxuICAgICAgb3V0X3RhaWxcblxubGV0IGFkZF9pbXBsaWNpdF9pbmZvcyBzaWdzIGwgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCAobSwgW10sIG9ubHlfZnJlc2gpIDo6IHQgLT4gYXV4ICgobSwgb25seV9mcmVzaCkgOjogYWNjKSB0XG4gICAgfCAobSwgKGlkLCBpbmZvLCBkc3RfaW5mbywgcykgOjogdG9kbycsIG9ubHlfZnJlc2gpIDo6IHQgLT5cbiAgICAgIGF1eCBhY2NcbiAgICAgICAgKGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkIChpbmZvLCBkc3RfaW5mbywgcykgW10gb25seV9mcmVzaCB0IHRvZG8nXG4gICAgICAgICAgIG0pXG4gIGluXG4gIGF1eCBbXSAoTGlzdC5yZXZfbWFwIChmdW4gKGEsIGIpIC0+IGEsIGIsIHRydWUpIChMaXN0LnJldiBsKSlcblxubGV0IGlzX2xpbmtlZF9vbl9wb3J0IG1lIGkgaWQgPSBmdW5jdGlvblxuICB8IChMS2FwcGEuTE5LX1ZBTFVFIChqLCBfKSwgXyksIF8gd2hlbiBpID0gaiAtPiBpZCA8PiBtZVxuICB8ICggKCAoIExLYXBwYS5MTktfVkFMVUUgXyB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfVFlQRSBfXG4gICAgICAgIHwgTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgXyApLFxuICAgICAgXyApIC0+XG4gICAgZmFsc2VcblxubGV0IGlzX2xpbmtlZF9vbiBpIGFnID1cbiAgVG9vbHMuYXJyYXlfZmlsdGVyIChpc19saW5rZWRfb25fcG9ydCAoLTEpIGkpIGFnLkxLYXBwYS5yYV9wb3J0cyA8PiBbXVxuXG5sZXQgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gKChyZW1vdmVkLCBhZGRlZCkgYXMgdHJhbnNmKSBsaW5rc190cmFuc2YgcGxhY2VcbiAgICBzaXRlIChjYW5kLCBfKSBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExLYXBwYS5GcmVlZCAtPlxuICAgICggKGNhbmQgOjogcmVtb3ZlZCwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAocGxhY2UsIHNpdGUpIDo6IGFkZGVkKSxcbiAgICAgIGxpbmtzX3RyYW5zZiApXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuRXJhc2VkIC0+IChjYW5kIDo6IHJlbW92ZWQsIGFkZGVkKSwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLkxpbmtlZCBpIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgbGlua3NfdHJhbnNmIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBsaW5rc190cmFuc2YnID0gTW9kcy5JbnRNYXAuYWRkIGkgKHBsYWNlLCBzaXRlKSBsaW5rc190cmFuc2YgaW5cbiAgICAgIChjYW5kIDo6IHJlbW92ZWQsIGFkZGVkKSwgbGlua3NfdHJhbnNmJ1xuICAgIHwgU29tZSBkc3QnIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLnJlbW92ZSBpIGxpbmtzX3RyYW5zZiBpblxuICAgICAgKCAoIGNhbmQgOjogcmVtb3ZlZCxcbiAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlKSwgZHN0JykgOjogYWRkZWQgKSxcbiAgICAgICAgbGlua3NfdHJhbnNmJyApKVxuXG5sZXQgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uICgocmVtb3ZlZCwgYWRkZWQpIGFzIHRyYW5zZikgbGlua3NfdHJhbnNmXG4gICAgcGxhY2Ugc2l0ZSBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExLYXBwYS5GcmVlZCAtPlxuICAgICggKHJlbW92ZWQsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlKSA6OiBhZGRlZCksXG4gICAgICBsaW5rc190cmFuc2YgKVxuICB8IExLYXBwYS5FcmFzZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiB0cmFuc2YsIGxpbmtzX3RyYW5zZlxuICB8IExLYXBwYS5MaW5rZWQgaSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGxpbmtzX3RyYW5zZiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZSkgbGlua3NfdHJhbnNmIGluXG4gICAgICB0cmFuc2YsIGxpbmtzX3RyYW5zZidcbiAgICB8IFNvbWUgZHN0JyAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rc190cmFuc2YgaW5cbiAgICAgICggKCByZW1vdmVkLFxuICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgocGxhY2UsIHNpdGUpLCBkc3QnKSA6OiBhZGRlZCApLFxuICAgICAgICBsaW5rc190cmFuc2YnICkpXG5cbmxldCBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMgcGwgcyA9IGZ1bmN0aW9uXG4gIHwgTEthcHBhLkZyZWVkIC0+IEluc3RhbnRpYXRpb24uRnJlZSAocGwsIHMpIDo6IGFjdGlvbnNcbiAgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQgLT4gYWN0aW9uc1xuXG5sZXQgYWRkX3NpZGVfc2l0ZSBzaWRlX3NpdGVzIGJ0IHBsIHMgPSBmdW5jdGlvblxuICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5FcmFzZWQgLT5cbiAgICAoKHBsLCBzKSwgYnQpIDo6IHNpZGVfc2l0ZXNcbiAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBzaWRlX3NpdGVzXG5cbmxldCBhZGRfZnJlZWRfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3RzIHBsIHMgPSBmdW5jdGlvblxuICB8IChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLCBMS2FwcGEuRnJlZWQgLT4gKHBsLCBzKSA6OiBzaWRlX2VmZmVjdHNcbiAgfCAoIChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLFxuICAgICAgKExLYXBwYS5NYWludGFpbmVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXykgKVxuICB8ICggKCAoIExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19UWVBFIF9cbiAgICAgICAgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgXyApLFxuICAgICAgXyApIC0+XG4gICAgc2lkZV9lZmZlY3RzXG5cbmxldCBhZGRfZXh0cmFfc2lkZV9lZmZlY3RzIHNpZGVfZWZmZWN0cyBwbGFjZSByZWZpbmVkID1cbiAgbGV0IHJlYyBhdXggc2lkZV9lZmZlY3RzIHNpdGVfaWQgPVxuICAgIGlmIHNpdGVfaWQgPCAwIHRoZW5cbiAgICAgIHNpZGVfZWZmZWN0c1xuICAgIGVsc2VcbiAgICAgIGF1eFxuICAgICAgICAoYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0cyBwbGFjZSBzaXRlX2lkIHJlZmluZWQuKHNpdGVfaWQpKVxuICAgICAgICAocHJlZCBzaXRlX2lkKVxuICBpblxuICBhdXggc2lkZV9lZmZlY3RzIChwcmVkIChBcnJheS5sZW5ndGggcmVmaW5lZCkpXG5cbigqIERlYWxzIHdpdGggdGVzdHMsIGVyYXN1cmUgaW50ZXJuYWwgc3RhdGUgY2hhbmdlIGFuZCByZWxlYXNlIChidXRcbiAgIG5vdCBiaW5kaW5nKSopXG5sZXQgbWFrZV9pbnN0YW50aWF0aW9uIHBsYWNlIGxpbmtzIGV2ZW50IHJlZl9wb3J0cyBpc19lcmFzZWQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICB7XG4gICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9IGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgIGFkZF9leHRyYV9zaWRlX2VmZmVjdHMgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IHBsYWNlXG4gICAgICAgICAgcmVmX3BvcnRzO1xuICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPSBldmVudC5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICB9XG4gIHwgU29tZSAocG9ydHMsIGludHMpIC0+XG4gICAgKG1hdGNoIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCB0aGlzX2NjX3Rlc3RzIDo6IG9fY2NfdGVzdHMgLT5cbiAgICAgIGxldCByZWMgYXV4IHNpdGVfaWQgdGVzdHMgYWN0aW9ucyBzaWRlX2VmZmVjdHNfc3JjIHNpZGVfZWZmZWN0c19kc3QgbGlua3NcbiAgICAgICAgICA9XG4gICAgICAgIGlmIHNpdGVfaWQgPj0gQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gdGVzdHMgOjogb19jY190ZXN0cztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdGVzdHMnLCBhY3Rpb25zJyA9XG4gICAgICAgICAgICBtYXRjaCBpbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWSB8IExLYXBwYS5JX0FOWV9FUkFTRUQgLT4gdGVzdHMsIGFjdGlvbnNcbiAgICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgaiAtPlxuICAgICAgICAgICAgICB0ZXN0cywgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGopIDo6IGFjdGlvbnNcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0NIQU5HRUQgKGksIGopIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGkpIDo6IHRlc3RzLFxuICAgICAgICAgICAgICAgIGlmIGkgPD4gaiB0aGVuXG4gICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKHBsYWNlLCBzaXRlX2lkKSwgaikgOjogYWN0aW9uc1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgKVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9WQUxfRVJBU0VEIGkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGkpIDo6IHRlc3RzLCBhY3Rpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdGVzdHMnJywgYWN0aW9ucycnLCBzaWRlX3NpdGVzJywgc2lkZV9lZmZlY3RzJywgbGlua3MnID1cbiAgICAgICAgICAgIG1hdGNoIHBvcnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgcyAtPlxuICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0c19kc3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgICByZWZfcG9ydHMuKHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkZyZWVkIC0+XG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIGFkZF9zaWRlX3NpdGUgc2lkZV9lZmZlY3RzX3NyYyBJbnN0YW50aWF0aW9uLkFOWSBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzJyxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5Jc19GcmVlIChwbGFjZSwgc2l0ZV9pZCkgOjogdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUsIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCAocGxhY2UsIHNpdGVfaWQpIDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBhZGRfc2lkZV9zaXRlIHNpZGVfZWZmZWN0c19zcmMgSW5zdGFudGlhdGlvbi5CT1VORCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19UWVBFIChiLCBhKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgKCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKChwbGFjZSwgc2l0ZV9pZCksIChhLCBiKSlcbiAgICAgICAgICAgICAgICA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgYWRkX3NpZGVfc2l0ZSBzaWRlX2VmZmVjdHNfc3JjXG4gICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5CT1VORF9UWVBFIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgIGxpbmtzIClcbiAgICAgICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGksIF8pLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBsaW5rcyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgKCB4IDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rcyApXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICggdGVzdHMnLFxuICAgICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfc3JjLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICAgIGxpbmtzICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKHN1Y2Mgc2l0ZV9pZCkgdGVzdHMnJyBhY3Rpb25zJycgc2lkZV9zaXRlcycgc2lkZV9lZmZlY3RzJyBsaW5rcydcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwXG4gICAgICAgIChJbnN0YW50aWF0aW9uLklzX0hlcmUgcGxhY2UgOjogdGhpc19jY190ZXN0cylcbiAgICAgICAgKGlmIGlzX2VyYXNlZCB0aGVuXG4gICAgICAgICAgIEluc3RhbnRpYXRpb24uUmVtb3ZlIHBsYWNlIDo6IGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnMpXG4gICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgbGlua3MpXG5cbmxldCByZWMgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIHJlZ2lzdGVyZWRfbGlua3NcbiAgICAoKHJlbW92ZWQsIGFkZGVkKSBhcyB0cmFuc2YpIGxpbmtzX3RyYW5zZiBpbnN0YW50aWF0aW9ucyByZW1haW5zID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5yb290IHJlZ2lzdGVyZWRfbGlua3Mgd2l0aFxuICAgIHwgTm9uZSAtPiB3aywgdHJhbnNmLCBsaW5rc190cmFuc2YsIGluc3RhbnRpYXRpb25zLCByZW1haW5zXG4gICAgfCBTb21lIChrZXksIF8pIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUga2V5IExvYy5kdW1teSlcbiAgfCBhZyA6OiBhZ19sIC0+XG4gICAgbGV0IG5vZGUsIHdrID0gUGF0dGVybi5uZXdfbm9kZSB3ayBhZy5MS2FwcGEucmFfdHlwZSBpblxuICAgIGxldCBwbGFjZSA9IE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIChub2RlLCBpZCkgaW5cbiAgICBsZXQgdHJhbnNmJyA9XG4gICAgICBpZiBhZy5MS2FwcGEucmFfZXJhc2VkIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBwbGFjZSA6OiByZW1vdmVkLCBhZGRlZFxuICAgICAgZWxzZVxuICAgICAgICB0cmFuc2ZcbiAgICBpblxuICAgIGxldCByZWMgaGFuZGxlX3BvcnRzIHdrIHJfbCBjX2wgKHJlbW92ZWQsIGFkZGVkKSBsX3QgcmUgYWNjIHNpdGVfaWQgPVxuICAgICAgaWYgc2l0ZV9pZCA9IEFycmF5Lmxlbmd0aCBhZy5MS2FwcGEucmFfcG9ydHMgdGhlbiAoXG4gICAgICAgIGxldCBpbnN0YW50aWF0aW9ucycgPVxuICAgICAgICAgIG1ha2VfaW5zdGFudGlhdGlvbiBwbGFjZSBjX2wgaW5zdGFudGlhdGlvbnMgYWcuTEthcHBhLnJhX3BvcnRzXG4gICAgICAgICAgICBhZy5MS2FwcGEucmFfZXJhc2VkIGFnLkxLYXBwYS5yYV9zeW50YXhcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIHJfbCAocmVtb3ZlZCwgYWRkZWQpIGxfdCBpbnN0YW50aWF0aW9ucycgcmVcbiAgICAgICAgICBhY2NcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCB0cmFuc2YsIHdrJyA9XG4gICAgICAgICAgbWF0Y2ggYWcuTEthcHBhLnJhX2ludHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWSAtPiAocmVtb3ZlZCwgYWRkZWQpLCB3a1xuICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgYWRkZWQgKSxcbiAgICAgICAgICAgICAgd2sgKVxuICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgaiAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgICAgICAgICAgKHBsYWNlLCBzaXRlX2lkLCBqKVxuICAgICAgICAgICAgICAgIDo6IGFkZGVkICksXG4gICAgICAgICAgICAgIHdrIClcbiAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgICAgICAgICAgKCAoaWYgaSA9IGogdGhlblxuICAgICAgICAgICAgICAgICByZW1vdmVkLCBhZGRlZFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZCwgailcbiAgICAgICAgICAgICAgICAgICA6OiBhZGRlZCApKSxcbiAgICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgd2sgKG5vZGUsIHNpdGVfaWQpIGkgKVxuICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBpIC0+XG4gICAgICAgICAgICAoICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAocGxhY2UsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgOjogcmVtb3ZlZCxcbiAgICAgICAgICAgICAgICBhZGRlZCApLFxuICAgICAgICAgICAgICBQYXR0ZXJuLm5ld19pbnRlcm5hbF9zdGF0ZSB3ayAobm9kZSwgc2l0ZV9pZCkgaSApXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGFnLkxLYXBwYS5yYV9wb3J0cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBwb3MpLCBzIC0+XG4gICAgICAgICAgbGV0IHRyYW5zZicsIGxfdCcgPVxuICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIChwbGFjZSwgc2l0ZV9pZCksXG4gICAgICAgICAgICAgICAgU29tZSBwb3MgKVxuICAgICAgICAgICAgICBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYW5kbGVfcG9ydHMgd2snIHJfbCBjX2wgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBzIC0+XG4gICAgICAgICAgbGV0IHdrJycgPSBQYXR0ZXJuLm5ld19mcmVlIHdrJyAobm9kZSwgc2l0ZV9pZCkgaW5cbiAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICBkZWZpbmVfZnVsbF90cmFuc2Zvcm1hdGlvbiB0cmFuc2YgbF90IHBsYWNlIHNpdGVfaWRcbiAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlX2lkKSwgTm9uZSlcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgcl9sIGNfbCB0cmFuc2YnIGxfdCcgcmUgYWNjIChzdWNjIHNpdGVfaWQpXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1RZUEUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgIFwiVHJ5IHRvIGNyZWF0ZSB0aGUgY29ubmVjdGVkIGNvbXBvbmVudHMgb2YgYW4gYW1iaWd1b3VzIFxcXG4gICAgICAgICAgICAgICAgICAgbWl4dHVyZS5cIikpXG4gICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGksIF8pLCBwb3MpLCBzIC0+XG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgcl9sIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKChub2RlJywgc2l0ZScpIGFzIGRzdCkgLT5cbiAgICAgICAgICAgIGxldCBkc3RfcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAobm9kZScsIGlkKSwgc2l0ZScgaW5cbiAgICAgICAgICAgIGxldCB3aycnID0gUGF0dGVybi5uZXdfbGluayB3aycgKG5vZGUsIHNpdGVfaWQpIGRzdCBpblxuICAgICAgICAgICAgbGV0IGNfbCcgPVxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICgocGxhY2UsIHNpdGVfaWQpLCBkc3RfcGxhY2UpKVxuICAgICAgICAgICAgICAgIGNfbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0X3BsYWNlKSxcbiAgICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgKE1vZHMuSW50TWFwLnJlbW92ZSBpIHJfbCkgY19sJyB0cmFuc2YnIGxfdCcgcmVcbiAgICAgICAgICAgICAgYWNjIChzdWNjIHNpdGVfaWQpXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAgICAoaXNfbGlua2VkX29uX3BvcnQgc2l0ZV9pZCBpKVxuICAgICAgICAgICAgICAgICBhZy5MS2FwcGEucmFfcG9ydHNcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgc2l0ZV9pZCcgXVxuICAgICAgICAgICAgKCogbGluayBiZXR3ZWVuIDIgc2l0ZXMgb2YgMSBhZ2VudCAqKVxuICAgICAgICAgICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIHggLT4gbm90IChpc19saW5rZWRfb24gaSB4KSkgYWNjXG4gICAgICAgICAgICAgICAgICAgJiYgTGlzdC5mb3JfYWxsIChmdW4geCAtPiBub3QgKGlzX2xpbmtlZF9vbiBpIHgpKSByZSAtPlxuICAgICAgICAgICAgICBsZXQgd2snJywgKHRyYW5zZicsIGxfdCcpID1cbiAgICAgICAgICAgICAgICBpZiBzaXRlX2lkJyA+IHNpdGVfaWQgdGhlblxuICAgICAgICAgICAgICAgICAgKCBQYXR0ZXJuLm5ld19saW5rIHdrJyAobm9kZSwgc2l0ZV9pZCkgKG5vZGUsIHNpdGVfaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBsYWNlLCBzaXRlX2lkKSwgKHBsYWNlLCBzaXRlX2lkJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwb3MgKVxuICAgICAgICAgICAgICAgICAgICAgIHMgKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIHdrJywgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBjX2wnID1cbiAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG9cbiAgICAgICAgICAgICAgICAgICAgICgocGxhY2UsIHNpdGVfaWQpLCAocGxhY2UsIHNpdGVfaWQnKSkpXG4gICAgICAgICAgICAgICAgICBjX2xcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgcl9sIGNfbCcgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgfCBfIDo6IF8gLT4gbGlua19vY2N1cmVuY2VfZmFpbHVyZSBpIHBvc1xuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAoKiBsaW5rIGJldHdlZW4gMiBhZ2VudHMgKilcbiAgICAgICAgICAgICAgbGV0IHJfbCcgPSBNb2RzLkludE1hcC5hZGQgaSAobm9kZSwgc2l0ZV9pZCkgcl9sIGluXG4gICAgICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgICAgICBkZWZpbmVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIExpc3QucGFydGl0aW9uIChpc19saW5rZWRfb24gaSkgcmUgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZScgLT5cbiAgICAgICAgICAgICAgICBpZiBMaXN0X3V0aWwuZXhpc3RzX3VuaXEgKGlzX2xpbmtlZF9vbiBpKSBhY2MgdGhlblxuICAgICAgICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJyByX2wnIGNfbCB0cmFuc2YnIGxfdCcgcmUnIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3NcbiAgICAgICAgICAgICAgfCBbIG4gXSwgcmUnXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IG5vdCAoaXNfbGlua2VkX29uIGkgeCkpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycgcl9sJyBjX2wgdHJhbnNmJyBsX3QnIHJlJyAobiA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgICB8IF8sIF8gLT4gbGlua19vY2N1cmVuY2VfZmFpbHVyZSBpIHBvcykpKVxuICAgICAgKVxuICAgIGluXG4gICAgaGFuZGxlX3BvcnRzIHdrIHJlZ2lzdGVyZWRfbGlua3MgTW9kcy5JbnRNYXAuZW1wdHkgdHJhbnNmJyBsaW5rc190cmFuc2ZcbiAgICAgIHJlbWFpbnMgYWdfbCAwXG5cbmxldCByZWMgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIChyZW1vdmVkLCBhZGRlZCkgbGlua3NfdHJhbnNmIGNyZWF0ZV9hY3Rpb25zXG4gICAgYWN0aW9ucyBmcmVzaCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucm9vdCBsaW5rc190cmFuc2Ygd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXZfYXBwZW5kIGFjdGlvbnMgY3JlYXRlX2FjdGlvbnMsIChMaXN0LnJldiByZW1vdmVkLCBMaXN0LnJldiBhZGRlZClcbiAgICB8IFNvbWUgKGksIF8pIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBMb2MuZHVtbXkpXG4gIHwgYWcgOjogYWdfbCAtPlxuICAgIGxldCBwbGFjZSA9IE1hdGNoaW5nLkFnZW50LkZyZXNoIChhZy5SYXdfbWl4dHVyZS5hX3R5cGUsIGZyZXNoKSBpblxuICAgIGxldCByZWMgaGFuZGxlX3BvcnRzIGFkZGVkIGxfdCBhY3Rpb25zIGludGYgc2l0ZV9pZCA9XG4gICAgICBpZiBzaXRlX2lkID0gQXJyYXkubGVuZ3RoIGFnLlJhd19taXh0dXJlLmFfcG9ydHMgdGhlbiAoXG4gICAgICAgIGxldCBjcmVhdGVfYWN0aW9ucycgPVxuICAgICAgICAgIEluc3RhbnRpYXRpb24uQ3JlYXRlIChwbGFjZSwgTGlzdC5yZXYgaW50ZikgOjogY3JlYXRlX2FjdGlvbnNcbiAgICAgICAgaW5cbiAgICAgICAgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIChyZW1vdmVkLCBhZGRlZCkgbF90IGNyZWF0ZV9hY3Rpb25zJyBhY3Rpb25zXG4gICAgICAgICAgKHN1Y2MgZnJlc2gpIGFnX2xcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCBhZGRlZCcsIGFjdGlvbnMnLCBwb2ludCA9XG4gICAgICAgICAgbWF0Y2ggYWcuUmF3X21peHR1cmUuYV9pbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFkZGVkLCBhY3Rpb25zLCAoc2l0ZV9pZCwgTm9uZSlcbiAgICAgICAgICB8IFNvbWUgaSAtPlxuICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZCwgaSlcbiAgICAgICAgICAgICAgOjogYWRkZWQsXG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiBhY3Rpb25zLFxuICAgICAgICAgICAgICAoc2l0ZV9pZCwgU29tZSBpKSApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGRlZCcnLCBhY3Rpb25zJycsIGxfdCcgPVxuICAgICAgICAgIG1hdGNoIGFnLlJhd19taXh0dXJlLmFfcG9ydHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgICB8IFJhd19taXh0dXJlLkZSRUUgLT5cbiAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAocGxhY2UsIHNpdGVfaWQpIDo6IGFkZGVkJyxcbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5GcmVlIChwbGFjZSwgc2l0ZV9pZCkgOjogYWN0aW9ucycsXG4gICAgICAgICAgICAgIGxfdCApXG4gICAgICAgICAgfCBSYXdfbWl4dHVyZS5WQUwgaSAtPlxuICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpIGxfdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZHN0LCBsX3QnIC0+XG4gICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZV9pZCksIGRzdClcbiAgICAgICAgICAgICAgICA6OiBhZGRlZCcsXG4gICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kX3RvICgocGxhY2UsIHNpdGVfaWQpLCBkc3QpXG4gICAgICAgICAgICAgICAgOjogSW5zdGFudGlhdGlvbi5CaW5kX3RvIChkc3QsIChwbGFjZSwgc2l0ZV9pZCkpXG4gICAgICAgICAgICAgICAgOjogYWN0aW9ucycsXG4gICAgICAgICAgICAgICAgbF90JyApXG4gICAgICAgICAgICB8IE5vbmUsIGxfdCAtPlxuICAgICAgICAgICAgICBsZXQgbF90JyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZV9pZCkgbF90IGluXG4gICAgICAgICAgICAgIGFkZGVkJywgYWN0aW9ucycsIGxfdCcpXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9wb3J0cyBhZGRlZCcnIGxfdCcgYWN0aW9ucycnIChwb2ludCA6OiBpbnRmKSAoc3VjYyBzaXRlX2lkKVxuICAgICAgKVxuICAgIGluXG4gICAgaGFuZGxlX3BvcnRzXG4gICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBwbGFjZSA6OiBhZGRlZClcbiAgICAgIGxpbmtzX3RyYW5zZiBhY3Rpb25zIFtdIDBcblxubGV0IGluY3Jfb3JpZ2luID0gZnVuY3Rpb25cbiAgfCAoT3BlcmF0b3IuQUxHIF8gfCBPcGVyYXRvci5NT0RJRiBfKSBhcyB4IC0+IHhcbiAgfCBPcGVyYXRvci5SVUxFIGkgLT4gT3BlcmF0b3IuUlVMRSAoc3VjYyBpKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfb2ZfbWl4dHVyZSB+ZGVidWdfbW9kZSBjcmVhdGVkIChtaXgsIGJvb2wpIChlbnYsIG9yaWdpbilcbiAgICA9XG4gIGxldCBzaWdzID0gUGF0dGVybi5QcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IHJlYyBhdXggZW52IHRyYW5zZm9ybWF0aW9ucyBpbnN0YW50aWF0aW9ucyBsaW5rc190cmFuc2YgYWNjIGlkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBsZXQgcmVtb3ZlZCwgYWRkZWQgPSB0cmFuc2Zvcm1hdGlvbnMgaW5cbiAgICAgIGxldCBhY3Rpb25zJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY3MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKCgoYXgsIF8pIGFzIHgpLCAoKGF5LCBfKSBhcyB5KSlcbiAgICAgICAgICAgICAgd2hlbiBNYXRjaGluZy5BZ2VudC5pc19mcmVzaCBheCB8fCBNYXRjaGluZy5BZ2VudC5pc19mcmVzaCBheSAtPlxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHgsIHkpIDo6IGFjc1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kICh4LCB5KSA6OiBhY3NcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBfIC0+XG4gICAgICAgICAgICAgIGFjcylcbiAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnMgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb25zJyA9IExpc3QucmV2IHJlbW92ZWQsIExpc3QucmV2IGFkZGVkIGluXG4gICAgICBsZXQgYWN0aW9ucycnLCB0cmFuc2Zvcm1hdGlvbnMnJyA9XG4gICAgICAgIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyB0cmFuc2Zvcm1hdGlvbnMnIGxpbmtzX3RyYW5zZiBbXSBhY3Rpb25zJyAwXG4gICAgICAgICAgY3JlYXRlZFxuICAgICAgaW5cbiAgICAgICggKCAoIG9yaWdpbixcbiAgICAgICAgICAgIFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IGFjYyxcbiAgICAgICAgICAgIHsgaW5zdGFudGlhdGlvbnMgd2l0aCBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhY3Rpb25zJycgfSxcbiAgICAgICAgICAgIHRyYW5zZm9ybWF0aW9ucycnICksXG4gICAgICAgICAgYm9vbCApLFxuICAgICAgICAoZW52LCBPcHRpb25fdXRpbC5tYXAgaW5jcl9vcmlnaW4gb3JpZ2luKSApXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCB3ayA9IFBhdHRlcm4uYmVnaW5fbmV3IGVudiBpblxuICAgICAgbGV0IGluc3RhbnRpYXRpb25zJyA9XG4gICAgICAgIHtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gW10gOjogaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IHdrX291dCwgKHJlbW92ZWQsIGFkZGVkKSwgbF90LCBldmVudCwgcmVtYWlucyA9XG4gICAgICAgIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayBNb2RzLkludE1hcC5lbXB0eSB0cmFuc2Zvcm1hdGlvbnNcbiAgICAgICAgICBsaW5rc190cmFuc2YgaW5zdGFudGlhdGlvbnMnIHQgWyBoIF1cbiAgICAgIGluXG4gICAgICBsZXQgZW52JywgaW5qLCBjYywgY2NfaWQgPVxuICAgICAgICBQYXR0ZXJuLmZpbmlzaF9uZXcgfmRlYnVnX21vZGUgP29yaWdpbiB3a19vdXRcbiAgICAgIGluXG4gICAgICBsZXQgYWRkZWQnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopXG4gICAgICAgICAgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgcmVtb3ZlZCcgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluailcbiAgICAgICAgICByZW1vdmVkXG4gICAgICBpblxuICAgICAgbGV0IGV2ZW50JyA9XG4gICAgICAgIEluc3RhbnRpYXRpb24ucmVuYW1lX2Fic3RyYWN0X2V2ZW50IH5kZWJ1Z19tb2RlIGlkIGluaiBldmVudFxuICAgICAgaW5cbiAgICAgIGxldCBsX3QnID1cbiAgICAgICAgTW9kcy5JbnRNYXAubWFwXG4gICAgICAgICAgKGZ1biAoKHAsIHMpIGFzIHgpIC0+XG4gICAgICAgICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgICAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHAnLCBzKVxuICAgICAgICAgIGxfdFxuICAgICAgaW5cbiAgICAgIGF1eCBlbnYnIChyZW1vdmVkJywgYWRkZWQnKSBldmVudCcgbF90JyAoKGNjX2lkLCBjYykgOjogYWNjKSAoc3VjYyBpZClcbiAgICAgICAgcmVtYWluc1xuICBpblxuICBhdXggZW52IChbXSwgW10pIEluc3RhbnRpYXRpb24uZW1wdHlfZXZlbnQgTW9kcy5JbnRNYXAuZW1wdHkgW10gMCBtaXhcblxubGV0IHJ1bGVfbWl4dHVyZXNfb2ZfYW1iaWd1b3VzX3J1bGUgY29udGFjdF9tYXAgc2lncyBwcmVjb21wX21peHMgPVxuICBhZGRfaW1wbGljaXRfaW5mb3Mgc2lnc1xuICAgIChmaW5kX2ltcGxpY2l0X2luZm9zIGNvbnRhY3RfbWFwXG4gICAgICAgKExpc3QucmV2IChMaXN0LnJldl9tYXAgTEthcHBhLmNvcHlfcnVsZV9hZ2VudCBwcmVjb21wX21peHMpKSlcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfcnVsZSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gcHJlY29tcF9taXhzIGNyZWF0ZWQgPVxuICBsZXQgbm9Db3VudGVycyA9IGRlYnVnX21vZGUgaW5cbiAgbGV0IHNpZ3MgPSBQYXR0ZXJuLlByZUVudi5zaWdzIGVudiBpblxuICBsZXQgY291bnRlcnNfaW5mbyA9IFBhdHRlcm4uUHJlRW52LmNvdW50ZXJzX2luZm8gZW52IGluXG4gIGxldCBhbGxfbWl4cyA9XG4gICAgcnVsZV9taXh0dXJlc19vZl9hbWJpZ3VvdXNfcnVsZSBjb250YWN0X21hcCBzaWdzIHByZWNvbXBfbWl4c1xuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIGNvbXBpbGVfbW9kZV9vbiB0aGVuXG4gICAgICBGb3JtYXQuZXByaW50ZiBcIkBbPHY+X19fX18oJWkpQCwlYUBdQC5cIiAoTGlzdC5sZW5ndGggYWxsX21peHMpXG4gICAgICAgIChQcC5saXN0IFBwLmN1dCAoZnVuIGYgKHgsIF8pIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWElYUBdXCJcbiAgICAgICAgICAgICAgIChMS2FwcGEucHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3MgY291bnRlcnNfaW5mb1xuICAgICAgICAgICAgICAgICAgfmx0eXBlczp0cnVlIGNyZWF0ZWQpXG4gICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAoUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmNyZWF0ZWQ6dHJ1ZVxuICAgICAgICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6KHggPD4gW10pIH5zaWdzIH5jb3VudGVyc19pbmZvKVxuICAgICAgICAgICAgICAgKExpc3QucmV2IGNyZWF0ZWQpKSlcbiAgICAgICAgYWxsX21peHNcbiAgaW5cbiAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgKGNvbm5lY3RlZF9jb21wb25lbnRzX29mX21peHR1cmUgfmRlYnVnX21vZGUgY3JlYXRlZClcbiAgICBhbGxfbWl4cyAoZW52LCBvcmlnaW4pXG5cbmxldCBjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmUgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgIGNvbnRhY3RfbWFwIGVudiA/b3JpZ2luIG1peCA9XG4gIGxldCBydWxlcywgKGNjX2VudiwgXykgPVxuICAgIGNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfcnVsZSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICBjb250YWN0X21hcCBlbnYgP29yaWdpbiBtaXggW11cbiAgaW5cbiAgKCBjY19lbnYsXG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCAoXywgbCwgZXZlbnQsIChbXSwgW10pKSwgX2IgLT4gbCwgZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgcnVsZXMgKVxuXG5sZXQgYXV4X2xrYXBwYV9vZl9wYXR0ZXJuIGZyZWVfaWQgcCA9XG4gIFBhdHRlcm4uZm9sZF9ieV90eXBlXG4gICAgKGZ1biB+cG9zIH5hZ2VudF90eXBlIGludGYgKGFjYywgbG5rX3BhY2spIC0+XG4gICAgICBsZXQgcmFfcG9ydHMgPVxuICAgICAgICBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggaW50ZilcbiAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICAgICAgaW5cbiAgICAgIGxldCByYV9pbnRzID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGludGYpIExLYXBwYS5JX0FOWSBpblxuICAgICAgbGV0IG91dCA9XG4gICAgICAgIHtcbiAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnZW50X3R5cGU7XG4gICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBOb25lO1xuICAgICAgICAgIExLYXBwYS5yYV9wb3J0cztcbiAgICAgICAgICBMS2FwcGEucmFfaW50cztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBhY2MnID0gTW9kcy5JbnRNYXAuYWRkIHBvcyBvdXQgYWNjIGluXG4gICAgICBsZXQgbG5rX3BhY2snID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gc2l0ZSAoKGZyZWVfaWQsIGtub3duX3NyYykgYXMgcGFjaykgKGxpbmssIGludCkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGludCA8PiAtMSB0aGVuIHJhX2ludHMuKHNpdGUpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpbnQsIGludClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBsaW5rIHdpdGhcbiAgICAgICAgICAgIHwgUGF0dGVybi5VblNwZWMgLT4gcGFja1xuICAgICAgICAgICAgfCBQYXR0ZXJuLkZyZWUgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICByYV9wb3J0cy4oc2l0ZSkgPC1cbiAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcGFja1xuICAgICAgICAgICAgfCBQYXR0ZXJuLkxpbmsgKGRzdF9hLCBkc3RfcykgLT5cbiAgICAgICAgICAgICAgbGV0IHNyY19pbmZvID0gc2l0ZSwgYWdlbnRfdHlwZSBpblxuICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnQyTWFwLmZpbmRfb3B0aW9uIChkc3RfYSwgZHN0X3MpIGtub3duX3NyYyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSAoaWQsIGRzdF9pbmZvKSAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICByYV9wb3J0cy4oc2l0ZSkgPC1cbiAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIGRzdF9pbmZvKSksXG4gICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgb3V0IGRzdF9hIGFjYycpLkxLYXBwYS5yYV9wb3J0cy4oZHN0X3MpIDwtXG4gICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBzcmNfaW5mbykpLFxuICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBhY2tcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgKCBzdWNjIGZyZWVfaWQsXG4gICAgICAgICAgICAgICAgICBNb2RzLkludDJNYXAuYWRkIChwb3MsIHNpdGUpIChmcmVlX2lkLCBzcmNfaW5mbykga25vd25fc3JjICkpKVxuICAgICAgICAgIGxua19wYWNrIGludGZcbiAgICAgIGluXG4gICAgICBhY2MnLCBsbmtfcGFjaycpXG4gICAgcFxuICAgIChNb2RzLkludE1hcC5lbXB0eSwgKGZyZWVfaWQsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG5cbmxldCByZWdpc3Rlcl9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnMgc2lncyBtaXhzIGZyZWVfaWQgdHJhbnNmcyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biAoKGZpZCwgZnIpIGFzIHBhY2spIC0+IGZ1bmN0aW9uXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfKSAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKGFfdHlwZSwgaWQpKSAtPlxuICAgICAgICBsZXQgc2kgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhX3R5cGUgaW5cbiAgICAgICAgbGV0IG4gPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFJhd19taXh0dXJlLmFfdHlwZTtcbiAgICAgICAgICAgIFJhd19taXh0dXJlLmFfcG9ydHMgPSBBcnJheS5tYWtlIHNpIFJhd19taXh0dXJlLkZSRUU7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBBcnJheS5tYWtlIHNpIE5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBmaWQsIE1vZHMuSW50TWFwLmFkZCBpZCBuIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZCwgXyksIGNjX2lkKSwgcywgaSkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgKG1hdGNoIGEuTEthcHBhLnJhX2ludHMuKHMpIHdpdGhcbiAgICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgXyB8IExLYXBwYS5JX0FOWV9FUkFTRURcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBfIC0+XG4gICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaiwgaykgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChqID0gaykgaW5cbiAgICAgICAgICAgICAgYS5MS2FwcGEucmFfaW50cy4ocykgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGosIGkpXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWSAtPiBhLkxLYXBwYS5yYV9pbnRzLihzKSA8LSBMS2FwcGEuSV9BTllfQ0hBTkdFRCBpKVxuICAgICAgICBpblxuICAgICAgICBwYWNrXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgcywgaSkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX2ludHMuKHMpIDwtIFNvbWUgaVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBwYWNrXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pIC0+IGZpZCwgZnJcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkLCBfKSwgY2NfaWQpLCBzKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIGxldCB0ZXN0LCBlZGl0ID0gYS5MS2FwcGEucmFfcG9ydHMuKHMpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzKSA8LSB0ZXN0LCBMS2FwcGEuRnJlZWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHBhY2tcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkMSwgXyksIGNjX2lkMSksIHMxKSxcbiAgICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkMiwgXyksIGNjX2lkMiksIHMyKSApIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQxIG1peHMuKGNjX2lkMSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzMSkgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMxKSA8LSB0ZXN0LCBMS2FwcGEuTGlua2VkIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZDIgbWl4cy4oY2NfaWQyKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIGxldCB0ZXN0LCBlZGl0ID0gYS5MS2FwcGEucmFfcG9ydHMuKHMyKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIDwtIHRlc3QsIExLYXBwYS5MaW5rZWQgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBzdWNjIGZpZCwgZnJcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChlaWQsIF8pLCBjY19pZCksIHMyKSApXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChlaWQsIF8pLCBjY19pZCksIHMyKSxcbiAgICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpLCBzMSkgKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfcG9ydHMuKHMxKSA8LSBSYXdfbWl4dHVyZS5WQUwgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGVpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzMikgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMyKSA8LSB0ZXN0LCBMS2FwcGEuTGlua2VkIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkMSksIHMxKSxcbiAgICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQyKSwgczIpICkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZDEgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9wb3J0cy4oczEpIDwtIFJhd19taXh0dXJlLlZBTCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQyIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfcG9ydHMuKHMyKSA8LSBSYXdfbWl4dHVyZS5WQUwgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBzdWNjIGZpZCwgZnIpXG4gICAgKGZyZWVfaWQsIE1vZHMuSW50TWFwLmVtcHR5KVxuICAgIHRyYW5zZnNcbiAgfD4gc25kXG5cbmxldCBhZGRfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyB0cmFuc2ZzID1cbiAgTGlzdC5pdGVyXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8pXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXyksIF8pXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkIChfLCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXykpXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8sIF8pXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKSwgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8sIF8pKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKSAtPlxuICAgICAgICAoKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50XG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQsIF8pLCBjY19pZCkpIC0+XG4gICAgICAgIGxldCBhZyA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGEgLT4gYVxuICAgICAgICBpblxuICAgICAgICBtaXhzLihjY19pZCkgPC1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaWQgKExLYXBwYS5hZ2VudF90b19lcmFzZWQgc2lncyBhZykgbWl4cy4oY2NfaWQpKVxuICAgIHRyYW5zZnNcblxubGV0IGxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUgc2lncyBkb21haW4gciA9XG4gIGxldCBuYl9jYyA9IEFycmF5Lmxlbmd0aCByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5cbiAgbGV0IG1peHMgPSBBcnJheS5tYWtlIG5iX2NjIE1vZHMuSW50TWFwLmVtcHR5IGluXG4gIGxldCBmcmVlX2lkID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGNjX2lkIGZyZWVfaWQgY2MgLT5cbiAgICAgICAgbGV0IG91dCwgKGZyZWVfaWQnLCBfKSA9XG4gICAgICAgICAgYXV4X2xrYXBwYV9vZl9wYXR0ZXJuIGZyZWVfaWRcbiAgICAgICAgICAgIChQYXR0ZXJuLkVudi5jb250ZW50IChQYXR0ZXJuLkVudi5nZXQgZG9tYWluIGNjKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gbWl4cy4oY2NfaWQpIDwtIG91dCBpblxuICAgICAgICBmcmVlX2lkJylcbiAgICAgIDEgci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzXG4gIGluXG4gIGxldCBuZXdzID1cbiAgICByZWdpc3Rlcl9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnMgc2lncyBtaXhzIGZyZWVfaWQgci5QcmltaXRpdmVzLmluc2VydGVkXG4gIGluXG4gIGxldCAoKSA9IGFkZF9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnMgc2lncyBtaXhzIHIuUHJpbWl0aXZlcy5yZW1vdmVkIGluXG4gIGxldCByX21peCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGEgYiAtPiBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPiB4IDo6IGFjYykgYiBhKVxuICAgICAgW10gbWl4c1xuICAgIHw+IExpc3QucmV2XG4gIGluXG4gIGxldCByX2NyZWF0ZWQgPVxuICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIHggYWNjIC0+IHggOjogYWNjKSBuZXdzIFtdIHw+IExpc3QucmV2XG4gIGluXG4gIHJfbWl4LCByX2NyZWF0ZWRcbigqe1xuICBMS2FwcGEucl9taXg7IExLYXBwYS5yX2NyZWF0ZWQ7IExLYXBwYS5yX2VkaXRfc3R5bGUgPSB0cnVlO1xuICBMS2FwcGEucl9yYXRlID0gci5QcmltaXRpdmVzLnJhdGU7XG4gIExLYXBwYS5yX3VuX3JhdGUgPSByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZTtcbiAgTEthcHBhLnJfZGVsdGFfdG9rZW5zID0gci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucztcbiAgfSopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb2Zfc25hcHNob3QgZyA9XG4gIGxldCBvdXQsIF8gPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gbm9kZSAoYWNjLCBwYWNrKSBhZyAtPlxuICAgICAgICBsZXQgcmFfdHlwZSA9IGFnLlNuYXBzaG90Lm5vZGVfdHlwZSBpblxuICAgICAgICBsZXQgYXIgPSBBcnJheS5sZW5ndGggYWcuU25hcHNob3Qubm9kZV9zaXRlcyBpblxuICAgICAgICBsZXQgcmFfcG9ydHMgPVxuICAgICAgICAgIEFycmF5Lm1ha2UgYXIgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLk1haW50YWluZWQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByYV9pbnRzID0gQXJyYXkubWFrZSBhciBMS2FwcGEuSV9BTlkgaW5cbiAgICAgICAgbGV0IHBhY2snID1cbiAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAoZnVuIGlkICgoZGFuZ2xpbmcsIGZyZWVfaWQpIGFzIHBhY2spIHAgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBtYXRjaCBwLlNuYXBzaG90LnNpdGVfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IHJhX2ludHMuKGlkKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaSwgaSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcC5TbmFwc2hvdC5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gcGFja1xuICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludDJNYXAucG9wIHMgZGFuZ2xpbmcgd2l0aFxuICAgICAgICAgICAgICAgIHwgU29tZSB2YSwgZGFuZ2xpbmcnIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICByYV9wb3J0cy4oaWQpIDwtXG4gICAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAodmEsICgtMSwgLTEpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZGFuZ2xpbmcnLCBmcmVlX2lkXG4gICAgICAgICAgICAgICAgfCBOb25lLCBkYW5nbGluZycgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHJhX3BvcnRzLihpZCkgPC1cbiAgICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMS2FwcGEuTE5LX1ZBTFVFIChmcmVlX2lkLCAoLTEsIC0xKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIE1vZHMuSW50Mk1hcC5hZGQgKG5vZGUsIGlkKSBmcmVlX2lkIGRhbmdsaW5nJywgc3VjYyBmcmVlX2lkKSlcbiAgICAgICAgICAgIHBhY2sgYWcuU25hcHNob3Qubm9kZV9zaXRlc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcmEgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIExLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICAgICAgICByYV9wb3J0cztcbiAgICAgICAgICAgIHJhX2ludHM7XG4gICAgICAgICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgcmEgOjogYWNjLCBwYWNrJylcbiAgICAgIChbXSwgKE1vZHMuSW50Mk1hcC5lbXB0eSwgMSkpXG4gICAgICBnXG4gIGluXG4gIG91dFxuXG5sZXQgcGF0dGVybnNfb2ZfbWl4dHVyZSB+ZGVidWdfbW9kZSBjb250YWN0X21hcCBzaWdzIHByZV9lbnYgZSA9XG4gIGxldCBzbmFwID0gRWRnZXMuYnVpbGRfc25hcHNob3QgfnJhdzpmYWxzZSBzaWdzIGUgaW5cbiAgbGV0IHByZV9lbnYnLCBhY2MgPVxuICAgIFNuYXBzaG90LmZvbGRcbiAgICAgIChmdW4gKGNjX2NhY2hlLCBhY2MpIGkgbSAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlXG4gICAgICAgICAgICB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIGNvbnRhY3RfbWFwIGNjX2NhY2hlXG4gICAgICAgICAgICAob2Zfc25hcHNob3QgbSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGNjX2NhY2hlJywgWyAoW3wgKF8sIHgpIHxdLCBfKSBdIC0+XG4gICAgICAgICAgY2NfY2FjaGUnLCBUb29scy5yZWN0aSAoZnVuIGEgXyAtPiB4IDo6IGEpIGFjYyBpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAocHJlX2VudiwgW10pIHNuYXBcbiAgaW5cbiAgcHJlX2VudicsIGFjY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICBmaWxlbmFtZXM6IHN0cmluZyBsaXN0O1xuICBkb21haW46IFBhdHRlcm4uRW52LnQ7XG4gIHRva2VuczogdW5pdCBOYW1lZERlY2xzLnQ7XG4gIGFsZ3M6IFByaW1pdGl2ZXMuYWxnX2V4cHIgTG9jLmFubm90ZWQgTmFtZWREZWNscy50O1xuICBvYnNlcnZhYmxlczogUHJpbWl0aXZlcy5hbGdfZXhwciBMb2MuYW5ub3RlZCBhcnJheTtcbiAgYXN0X3J1bGVzOiAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIExLYXBwYS5ydWxlIExvYy5hbm5vdGVkKSBhcnJheTtcbiAgcnVsZXM6IFByaW1pdGl2ZXMuZWxlbWVudGFyeV9ydWxlIGFycmF5O1xuICBpbnRlcnZlbnRpb25zOiBQcmltaXRpdmVzLnBlcnR1cmJhdGlvbiBhcnJheTtcbiAgZGVwZW5kZW5jaWVzX2luX3RpbWU6IE9wZXJhdG9yLkRlcFNldC50O1xuICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQ6IE9wZXJhdG9yLkRlcFNldC50O1xuICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzOiBPcGVyYXRvci5EZXBTZXQudCBhcnJheTtcbiAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzOiBPcGVyYXRvci5EZXBTZXQudCBhcnJheTtcbiAgY29udGFjdF9tYXA6IENvbnRhY3RfbWFwLnQ7XG4gIGNvdW50ZXJzX2luZm86IENvdW50ZXJzX2luZm8udDtcbn1cblxubGV0IGluaXQgfmZpbGVuYW1lcyBkb21haW4gdG9rZW5zIGFsZ3MgKGRlcHNfaW5fdCwgZGVwc19pbl9lLCB0b2tfcmQsIGFsZ19yZClcbiAgICAoYXN0X3J1bGVzLCBydWxlcykgb2JzZXJ2YWJsZXMgaW50ZXJ2ZW50aW9ucyBjb250YWN0X21hcCBjb3VudGVyc19pbmZvID1cbiAge1xuICAgIGZpbGVuYW1lcztcbiAgICBkb21haW47XG4gICAgdG9rZW5zO1xuICAgIGFzdF9ydWxlcztcbiAgICBydWxlcztcbiAgICBhbGdzO1xuICAgIG9ic2VydmFibGVzO1xuICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSBhbGdfcmQ7XG4gICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID0gdG9rX3JkO1xuICAgIGRlcGVuZGVuY2llc19pbl90aW1lID0gZGVwc19pbl90O1xuICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9IGRlcHNfaW5fZTtcbiAgICBpbnRlcnZlbnRpb25zO1xuICAgIGNvbnRhY3RfbWFwO1xuICAgIGNvdW50ZXJzX2luZm87XG4gIH1cblxubGV0IGRlY29uc3RydWN0IGVudiA9XG4gICggZW52LmZpbGVuYW1lcyxcbiAgICBlbnYuZG9tYWluLFxuICAgIGVudi50b2tlbnMsXG4gICAgZW52LmFsZ3MsXG4gICAgKCBlbnYuZGVwZW5kZW5jaWVzX2luX3RpbWUsXG4gICAgICBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50LFxuICAgICAgZW52LnRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyxcbiAgICAgIGVudi5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzICksXG4gICAgKGVudi5hc3RfcnVsZXMsIGVudi5ydWxlcyksXG4gICAgZW52Lm9ic2VydmFibGVzLFxuICAgIGVudi5pbnRlcnZlbnRpb25zLFxuICAgIGVudi5jb250YWN0X21hcCxcbiAgICBlbnYuY291bnRlcnNfaW5mbyApXG5cbmxldCBkb21haW4gZW52ID0gZW52LmRvbWFpblxubGV0IGdldF9vYnMgZW52ID0gZW52Lm9ic2VydmFibGVzXG5sZXQgZ2V0X3J1bGVzIGVudiA9IGVudi5ydWxlc1xubGV0IG5ld19kb21haW4gZG9tYWluIGVudiA9IHsgZW52IHdpdGggZG9tYWluIH1cbmxldCBzaWduYXR1cmVzIGVudiA9IFBhdHRlcm4uRW52LnNpZ25hdHVyZXMgZW52LmRvbWFpblxubGV0IHRva2Vuc19maW5kZXIgZW52ID0gZW52LnRva2Vucy5OYW1lZERlY2xzLmZpbmRlclxubGV0IGFsZ3NfZmluZGVyIGVudiA9IGVudi5hbGdzLk5hbWVkRGVjbHMuZmluZGVyXG5sZXQgY29udGFjdF9tYXAgZW52ID0gZW52LmNvbnRhY3RfbWFwXG5sZXQgbnVtX29mX2FnZW50IG5tZSBlbnYgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IG5tZSAoc2lnbmF0dXJlcyBlbnYpXG5sZXQgY291bnRlcnNfaW5mbyBlbnYgPSBlbnYuY291bnRlcnNfaW5mb1xubGV0IGNvdW50ZXJfaW5mbyBlbnYgaSBqID0gKGNvdW50ZXJzX2luZm8gZW52KS4oaSkuKGopXG5cbmxldCBmb2xkX3J1bGVzIGYgeCBlbnYgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gaSB4IHJ1bGUgLT4gZiBpIHggcnVsZSkgeCBlbnYucnVsZXNcblxubGV0IGZvbGRfcGVydHVyYmF0aW9ucyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBwIC0+IGYgaSB4IHApIHggZW52LmludGVydmVudGlvbnNcblxubGV0IGdldF9ydWxlIGVudiBpID0gZW52LnJ1bGVzLihpKVxubGV0IGdldF9hc3RfcnVsZV93aXRoX2xhYmVsIGVudiBpID0gZW52LmFzdF9ydWxlcy4oaSAtIDEpXG5sZXQgZ2V0X2FzdF9ydWxlIGVudiBpID0gZnN0IChzbmQgKGdldF9hc3RfcnVsZV93aXRoX2xhYmVsIGVudiBpKSlcblxubGV0IGZvbGRfYXN0X3J1bGVzIGYgeCBlbnYgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIHggKF8sIF9ydWxlKSAtPlxuICAgICAgbGV0IGxrYXBwYV9ydWxlID0gZ2V0X2FzdF9ydWxlIGVudiBpIGluXG4gICAgICBmIGkgeCBsa2FwcGFfcnVsZSlcbiAgICB4IGVudi5hc3RfcnVsZXNcblxubGV0IGdldF9hc3RfcnVsZV9yYXRlX3BvcyB+dW5hcnkgZW52IGkgPVxuICBpZiB1bmFyeSB0aGVuIChcbiAgICBtYXRjaCAoZnN0IChzbmQgZW52LmFzdF9ydWxlcy4oaSAtIDEpKSkuTEthcHBhLnJfdW5fcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTm8gdW5hcnkgcmF0ZSB0byBnZXQgcG9zaXRpb24gb2ZcIlxuICAgIHwgU29tZSAoKF8sIHBvcyksIF8pIC0+IHBvc1xuICApIGVsc2VcbiAgICBzbmQgKGZzdCAoc25kIGVudi5hc3RfcnVsZXMuKGkgLSAxKSkpLkxLYXBwYS5yX3JhdGVcblxubGV0IG5iX3J1bGVzIGVudiA9IEFycmF5Lmxlbmd0aCBlbnYucnVsZXNcblxubGV0IG51bXNfb2ZfcnVsZSBuYW1lIGVudiA9XG4gIGZvbGRfcnVsZXNcbiAgICAoZnVuIGkgYWNjIHIgLT5cbiAgICAgIG1hdGNoIGVudi5hc3RfcnVsZXMuKHByZWQgci5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlKSB3aXRoXG4gICAgICB8IFNvbWUgKHgsIF8pLCBfIC0+XG4gICAgICAgIGlmIHggPSBuYW1lIHRoZW5cbiAgICAgICAgICBpIDo6IGFjY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgYWNjXG4gICAgICB8IE5vbmUsIF8gLT4gYWNjKVxuICAgIFtdIGVudlxuXG5sZXQgbmJfc3ludGFjdGljX3J1bGVzIGVudiA9IEFycmF5Lmxlbmd0aCBlbnYuYXN0X3J1bGVzXG5sZXQgbnVtX29mX2FsZyBzIGVudiA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwidmFyaWFibGVcIiBlbnYuYWxncyBzXG5sZXQgZ2V0X2FsZyBlbnYgaSA9IGZzdCBAQCBOYW1lZERlY2xzLmVsdF92YWwgZW52LmFsZ3MgaVxubGV0IGdldF9hbGdzIGVudiA9IGVudi5hbGdzLk5hbWVkRGVjbHMuZGVjbHNcbmxldCBuYl9hbGdzIGVudiA9IE5hbWVkRGVjbHMuc2l6ZSBlbnYuYWxnc1xubGV0IG51bV9vZl90b2tlbiBzdHIgZW52ID0gTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJ0b2tlblwiIGVudi50b2tlbnMgc3RyXG5sZXQgbmJfdG9rZW5zIGVudiA9IE5hbWVkRGVjbHMuc2l6ZSBlbnYudG9rZW5zXG5sZXQgZ2V0X3BlcnR1cmJhdGlvbiBlbnYgaSA9IGVudi5pbnRlcnZlbnRpb25zLihpKVxubGV0IG5iX3BlcnR1cmJhdGlvbnMgZW52ID0gQXJyYXkubGVuZ3RoIGVudi5pbnRlcnZlbnRpb25zXG5sZXQgZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaSA9IGVudi5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzLihpKVxubGV0IGdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaSA9IGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMuKGkpXG5cbmxldCBhbGxfZGVwZW5kZW5jaWVzIGVudiA9XG4gICggZW52LmRlcGVuZGVuY2llc19pbl90aW1lLFxuICAgIGVudi5kZXBlbmRlbmNpZXNfaW5fZXZlbnQsXG4gICAgZW52LnRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyxcbiAgICBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyApXG5cbmxldCBwcmludF9hZ2VudCA/ZW52IGYgaSA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX19hZ2VudF8laVwiIGlcbiAgfCBTb21lIGVudiAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgKHNpZ25hdHVyZXMgZW52KSBmIGlcblxubGV0IHByaW50X2FsZyA/ZW52IGYgaWQgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYWxnXyVpXCIgaWRcbiAgfCBTb21lIGVudiAtPlxuICAgIGxldCBuYW1lID0gTmFtZWREZWNscy5lbHRfbmFtZSBlbnYuYWxncyBpZCBpblxuICAgIGxldCBzcGVjaWFsID0gVG9vbHMubm90X2FuX2lkIG5hbWUgaW5cbiAgICBsZXQgKCkgPSBpZiBzcGVjaWFsIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiJ1wiIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIG5hbWUgaW5cbiAgICBpZiBzcGVjaWFsIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiJ1wiXG5cbmxldCBwcmludF90b2tlbiA/ZW52IGYgaWQgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fdG9rZW5fJWlcIiBpZFxuICB8IFNvbWUgZW52IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIChOYW1lZERlY2xzLmVsdF9uYW1lIGVudi50b2tlbnMgaWQpXG5cbmxldCBwcmludF9hc3RfcnVsZSB+bm9Db3VudGVycyA/ZW52IGYgaSA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX19hc3RfcnVsZV8laVwiIGlcbiAgfCBTb21lIGVudiAtPlxuICAgIGxldCBzaWdzID0gc2lnbmF0dXJlcyBlbnYgaW5cbiAgICBsZXQgY291bnRlcnNfaW5mbyA9IGNvdW50ZXJzX2luZm8gZW52IGluXG4gICAgaWYgaSA9IDAgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiSW50ZXJ2ZW50aW9uc1wiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBlbnYuYXN0X3J1bGVzLihwcmVkIGkpIHdpdGhcbiAgICAgIHwgU29tZSAobmEsIF8pLCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBuYVxuICAgICAgfCBOb25lLCAociwgXykgLT5cbiAgICAgICAgTEthcHBhLnByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6ZmFsc2Ugc2lncyBjb3VudGVyc19pbmZvXG4gICAgICAgICAgKHByaW50X3Rva2VuIH5lbnYpIChwcmludF9hbGcgfmVudikgZiByXG4gICAgKVxuXG5sZXQgcHJpbnRfcnVsZSB+bm9Db3VudGVycyA/ZW52IGYgaWQgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fcnVsZV8laVwiIGlkXG4gIHwgU29tZSBlbnYgLT5cbiAgICBwcmludF9hc3RfcnVsZSB+bm9Db3VudGVycyB+ZW52IGYgZW52LnJ1bGVzLihpZCkuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZVxuXG5sZXQgbWFwX29ic2VydmFibGVzIGYgZW52ID0gQXJyYXkubWFwIChmdW4gKHgsIF8pIC0+IGYgeCkgZW52Lm9ic2VydmFibGVzXG5cbmxldCBwcmludF9rYXBwYSB+bm9Db3VudGVycyBwcl9hbGcgP3ByX3J1bGUgcHJfcGVydCBmIGVudiA9XG4gIGxldCBzaWdzID0gc2lnbmF0dXJlcyBlbnYgaW5cbiAgbGV0IGNvdW50ZXJzX2luZm8gPSBjb3VudGVyc19pbmZvIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWEldEAsJWEldCVhQCwldCV0JWFAXVwiXG4gICAgKENvbnRhY3RfbWFwLnByaW50X2thcHBhIH5ub0NvdW50ZXJzIHNpZ3MpXG4gICAgZW52LmNvbnRhY3RfbWFwXG4gICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIF8gbiBmICgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSV0b2tlbjogJXNcIiBuKSlcbiAgICBlbnYudG9rZW5zXG4gICAgKGZ1biBmIC0+IGlmIGVudi50b2tlbnMuTmFtZWREZWNscy5kZWNscyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gaSBuIGYgKGUsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJXZhcjovKiVpKi8gJyVzJyAlYUBdXCIgaSBuIChwcl9hbGcgZW52KSBlKSlcbiAgICBlbnYuYWxnc1xuICAgIChmdW4gZiAtPiBpZiBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzIDw+IFt8fF0gdGhlbiBQcC5zcGFjZSBmKVxuICAgIChQcC5hcnJheSBQcC5zcGFjZSB+dHJhaWxpbmc6UHAuc3BhY2UgKGZ1biBfIGYgKGUsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJXBsb3Q6ICVhQF1cIiAocHJfYWxnIGVudikgZSkpXG4gICAgZW52Lm9ic2VydmFibGVzXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCBwcl9ydWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBQcC5hcnJheSBQcC5zcGFjZSB+dHJhaWxpbmc6UHAuc3BhY2VcbiAgICAgICAgICAoZnVuIF8gZiAobmEsIChlLCBfKSkgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgICAgICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKG5hLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnIFwiIG5hKSlcbiAgICAgICAgICAgICAgbmFcbiAgICAgICAgICAgICAgKExLYXBwYS5wcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOnRydWUgc2lncyBjb3VudGVyc19pbmZvXG4gICAgICAgICAgICAgICAgIChwcmludF90b2tlbiB+ZW52KSAocHJpbnRfYWxnIH5lbnYpKVxuICAgICAgICAgICAgICBlKVxuICAgICAgICAgIGYgZW52LmFzdF9ydWxlc1xuICAgICAgfCBTb21lIHByX3J1bGUgLT5cbiAgICAgICAgUHAuYXJyYXkgUHAuc3BhY2UgfnRyYWlsaW5nOlBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBfIGYgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFs8Mj4lYUBdXCIgKHByX3J1bGUgZW52KSByKVxuICAgICAgICAgIGYgZW52LnJ1bGVzKVxuICAgIChmdW4gZiAtPiBpZiBlbnYuaW50ZXJ2ZW50aW9ucyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgcCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+LyolaSovJWFAXVwiIGkgKHByX3BlcnQgZW52KSBwKSlcbiAgICBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgcHJfYWxnIHByX3J1bGUgcHJfcGVydCBmIGVudiA9XG4gIGxldCAoKSA9IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHByX2FsZyBwcl9wZXJ0IGYgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJALEBbPHY+QFs8diAyPlJ1bGVzOkAsJWFAXUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgciAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWk6QCAlYUBdXCIgaSAocHJfcnVsZSBlbnYpIHIpKVxuICAgIGVudi5ydWxlc1xuXG5sZXQgY2hlY2tfaWZfY291bnRlcl9pc19maWxsZWRfZW5vdWdoIHggPVxuICBpZlxuICAgIG5vdFxuICAgIEBAIFByaW1pdGl2ZXMuZXhpc3RzX21vZGlmaWNhdGlvblxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TVE9QIF8gLT4gdHJ1ZVxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFIF8gfCBQcmltaXRpdmVzLlVQREFURSBfXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5ESU4gX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuRElOT0ZGIF8gfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBMT1RFTlRSWVxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuUFJJTlQgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICB4LmludGVydmVudGlvbnNcbiAgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiVGhlcmUgaXMgbm8gd2F5IGZvciB0aGUgc2ltdWxhdGlvbiB0byBzdG9wLlwiKSlcblxubGV0IG92ZXJ3cml0ZV92YXJzIGFsZ19vdmVyd3JpdGUgZW52ID1cbiAgbGV0IGFsZ3MnID1cbiAgICBBcnJheS5tYXBcbiAgICAgIChmdW4gKHgsIHkpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIHkpXG4gICAgICBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpLCB2KSAtPiBhbGdzJy4oaSkgPC0gZnN0IGFsZ3MnLihpKSwgTG9jLmFubm90X3dpdGhfZHVtbXkgdilcbiAgICAgIGFsZ19vdmVyd3JpdGVcbiAgaW5cbiAgeyBlbnYgd2l0aCBhbGdzID0gTmFtZWREZWNscy5jcmVhdGUgYWxncycgfVxuXG5sZXQgZm9sZF9hbGdfZXhwciBmX2FsZyBmX2Jvb2wgeCBlbnYgPVxuICBsZXQgeDEgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjYyAoXywgeSkgLT4gZl9hbGcgYWNjIHkpIHggZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgeDIgPSBBcnJheS5mb2xkX2xlZnQgZl9hbGcgeDEgZW52Lm9ic2VydmFibGVzIGluXG4gIGxldCB4MyA9IEFycmF5LmZvbGRfbGVmdCAoUHJpbWl0aXZlcy5mb2xkX2V4cHJfcnVsZSBmX2FsZykgeDIgZW52LnJ1bGVzIGluXG4gIEFycmF5LmZvbGRfbGVmdFxuICAgIChQcmltaXRpdmVzLmZvbGRfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sKVxuICAgIHgzIGVudi5pbnRlcnZlbnRpb25zXG5cbmxldCBmb2xkX21peHR1cmVfaW5fZXhwciBmID1cbiAgZm9sZF9hbGdfZXhwciAoQWxnX2V4cHIuZm9sZF9vbl9taXh0dXJlIGYpIChBbGdfZXhwci5mb2xkX2Jvb2xfb25fbWl4dHVyZSBmKVxuXG5sZXQgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgfmFsZ19vdmVyd3JpdGUgeCA9XG4gIGxldCBhbGdzJyA9XG4gICAgQXJyYXkubWFwIChmdW4gKHgsIHkpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIHkpIHguYWxncy5OYW1lZERlY2xzLmRlY2xzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpLCB2KSAtPiBhbGdzJy4oaSkgPC0gZnN0IGFsZ3MnLihpKSwgTG9jLmFubm90X3dpdGhfZHVtbXkgdilcbiAgICAgIGFsZ19vdmVyd3JpdGVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBBcnJheS5pdGVyaVxuICAgICAgKGZ1biBpIChuYSwgdikgLT5cbiAgICAgICAgYWxncycuKGkpIDwtXG4gICAgICAgICAgKCBuYSxcbiAgICAgICAgICAgIEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJyB2ICkpXG4gICAgICBhbGdzJ1xuICBpblxuICB7XG4gICAgZmlsZW5hbWVzID0geC5maWxlbmFtZXM7XG4gICAgZG9tYWluID0geC5kb21haW47XG4gICAgdG9rZW5zID0geC50b2tlbnM7XG4gICAgYWxncyA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ3MnO1xuICAgIG9ic2VydmFibGVzID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKVxuICAgICAgICB4Lm9ic2VydmFibGVzO1xuICAgIGFzdF9ydWxlcyA9IHguYXN0X3J1bGVzO1xuICAgIHJ1bGVzID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5tYXBfZXhwcl9ydWxlXG4gICAgICAgICAgIChBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpKVxuICAgICAgICB4LnJ1bGVzO1xuICAgIGNvdW50ZXJzX2luZm8gPSB4LmNvdW50ZXJzX2luZm87XG4gICAgaW50ZXJ2ZW50aW9ucyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKFByaW1pdGl2ZXMubWFwX2V4cHJfcGVydHVyYmF0aW9uXG4gICAgICAgICAgIChBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpXG4gICAgICAgICAgIChBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJykpXG4gICAgICAgIHguaW50ZXJ2ZW50aW9ucztcbiAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9IHguZGVwZW5kZW5jaWVzX2luX3RpbWU7XG4gICAgZGVwZW5kZW5jaWVzX2luX2V2ZW50ID0geC5kZXBlbmRlbmNpZXNfaW5fZXZlbnQ7XG4gICAgYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9IHguYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcztcbiAgICB0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSB4LnRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcztcbiAgICBjb250YWN0X21hcCA9IHguY29udGFjdF9tYXA7XG4gIH1cblxubGV0IGthcHBhX2luc3RhbmNlX3RvX3lvanNvbiA9XG4gIEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uKVxuXG5sZXQgdG9feW9qc29uIGVudiA9XG4gIGxldCBmaWxlcyA9XG4gICAgQXJyYXkub2ZfbGlzdCAoTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lIDo6IGVudi5maWxlbmFtZXMpXG4gIGluXG4gIGxldCBmaWxlbmFtZXMgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSBtYXAgeCAtPiBNb2RzLlN0cmluZ01hcC5hZGQgeCBpIG1hcClcbiAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5IGZpbGVzXG4gIGluXG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwiZmlsZW5hbWVzXCIsIEpzb25VdGlsLm9mX2FycmF5IEpzb25VdGlsLm9mX3N0cmluZyBmaWxlcztcbiAgICAgIFwidXBkYXRlXCIsIFBhdHRlcm4uRW52LnRvX3lvanNvbiAoZG9tYWluIGVudik7XG4gICAgICBcInRva2Vuc1wiLCBOYW1lZERlY2xzLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgZW52LnRva2VucztcbiAgICAgICggXCJhbGdzXCIsXG4gICAgICAgIE5hbWVkRGVjbHMudG9fanNvblxuICAgICAgICAgIChmdW4gKHgsIF8pIC0+XG4gICAgICAgICAgICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGthcHBhX2luc3RhbmNlX3RvX3lvanNvblxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQgeClcbiAgICAgICAgICBlbnYuYWxncyApO1xuICAgICAgKCBcIm9ic2VydmFibGVzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuICh4LCBfKSBsIC0+XG4gICAgICAgICAgICAgICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGthcHBhX2luc3RhbmNlX3RvX3lvanNvblxuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQgeFxuICAgICAgICAgICAgICAgOjogbClcbiAgICAgICAgICAgICBlbnYub2JzZXJ2YWJsZXMgW10pICk7XG4gICAgICAoIFwiYXN0X3J1bGVzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIChuLCAociwgXykpIGwgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGBOdWxsXG4gICAgICAgICAgICAgICAgICAgfCBTb21lIChuLCBfKSAtPiBgU3RyaW5nIG4pO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5ydWxlX3RvX2pzb24gfmZpbGVuYW1lcyByO1xuICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICA6OiBsKVxuICAgICAgICAgICAgIGVudi5hc3RfcnVsZXMgW10pICk7XG4gICAgICAoIFwiZWxlbWVudGFyeV9ydWxlc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSAoUHJpbWl0aXZlcy5ydWxlX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBlbnYucnVsZXMgKTtcbiAgICAgIFwiY29udGFjdF9tYXBcIiwgQ29udGFjdF9tYXAudG9feW9qc29uIGVudi5jb250YWN0X21hcDtcbiAgICAgICggXCJpbnRlcnZlbnRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5XG4gICAgICAgICAgKFByaW1pdGl2ZXMucGVydHVyYmF0aW9uX3RvX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIGVudi5pbnRlcnZlbnRpb25zICk7XG4gICAgICBcImRlcGVuZGVuY2llc19pbl90aW1lXCIsIE9wZXJhdG9yLmRlcHNldF90b195b2pzb24gZW52LmRlcGVuZGVuY2llc19pbl90aW1lO1xuICAgICAgKCBcImRlcGVuZGVuY2llc19pbl9ldmVudFwiLFxuICAgICAgICBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uIGVudi5kZXBlbmRlbmNpZXNfaW5fZXZlbnQgKTtcbiAgICAgICggXCJhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IE9wZXJhdG9yLmRlcHNldF90b195b2pzb25cbiAgICAgICAgICBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyApO1xuICAgICAgKCBcInRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uXG4gICAgICAgICAgZW52LnRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyApO1xuICAgIF1cblxubGV0IGthcHBhX2luc3RhbmNlX29mX3lvanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKVxuXG5sZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDEzIC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBmaWxlbmFtZXMgPVxuICAgICAgICAgSnNvblV0aWwudG9fYXJyYXlcbiAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgIChMaXN0LmFzc29jIFwiZmlsZW5hbWVzXCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCBkb21haW4gPSBQYXR0ZXJuLkVudi5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJ1cGRhdGVcIiBsKSBpblxuICAgICAgIHtcbiAgICAgICAgIGZpbGVuYW1lcyA9IExpc3QudGwgKEFycmF5LnRvX2xpc3QgZmlsZW5hbWVzKTtcbiAgICAgICAgIGRvbWFpbiA9IFBhdHRlcm4uRW52Lm9mX3lvanNvbiAoTGlzdC5hc3NvYyBcInVwZGF0ZVwiIGwpO1xuICAgICAgICAgY291bnRlcnNfaW5mbyA9XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5vZl95b2pzb24gfmZpbGVuYW1lcyAoTGlzdC5hc3NvYyBcImNvdW50ZXJzX2luZm9cIiBsKVxuICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gUGF0dGVybi5FbnYuY291bnRlcnNfaW5mbyBkb21haW4pO1xuICAgICAgICAgdG9rZW5zID0gTmFtZWREZWNscy5vZl9qc29uIChmdW4gXyAtPiAoKSkgKExpc3QuYXNzb2MgXCJ0b2tlbnNcIiBsKTtcbiAgICAgICAgIGFsZ3MgPVxuICAgICAgICAgICBOYW1lZERlY2xzLm9mX2pzb25cbiAgICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGthcHBhX2luc3RhbmNlX29mX3lvanNvblxuICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgICAgICAgICAgeCkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJhbGdzXCIgbCk7XG4gICAgICAgICBvYnNlcnZhYmxlcyA9XG4gICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwib2JzZXJ2YWJsZXNcIiBsIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdCBvIC0+XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGthcHBhX2luc3RhbmNlX29mX3lvanNvblxuICAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgICAgICAgICAgIHgpKVxuICAgICAgICAgICAgICAgb1xuICAgICAgICAgICB8IGBOdWxsIC0+IFt8fF1cbiAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICBhc3RfcnVsZXMgPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImFzdF9ydWxlc1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IG8gLT5cbiAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgYExpc3QgWyBgTnVsbDsgciBdIC0+XG4gICAgICAgICAgICAgICAgICAgTm9uZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5ydWxlX29mX2pzb24gfmZpbGVuYW1lcyByKVxuICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYFN0cmluZyBuOyByIF0gLT5cbiAgICAgICAgICAgICAgICAgICAoIFNvbWUgKExvYy5hbm5vdF93aXRoX2R1bW15IG4pLFxuICAgICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5ydWxlX29mX2pzb24gfmZpbGVuYW1lcyByKSApXG4gICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICBvXG4gICAgICAgICAgIHwgYE51bGwgLT4gW3x8XVxuICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIHJ1bGVzID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJlbGVtZW50YXJ5X3J1bGVzXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbyAtPlxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChQcmltaXRpdmVzLnJ1bGVfb2ZfeW9qc29uIH5maWxlbmFtZXMpIG9cbiAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICBpbnRlcnZlbnRpb25zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXlcbiAgICAgICAgICAgICAoUHJpbWl0aXZlcy5wZXJ0dXJiYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImludGVydmVudGlvbnNcIiB4KTtcbiAgICAgICAgIGRlcGVuZGVuY2llc19pbl90aW1lID1cbiAgICAgICAgICAgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJkZXBlbmRlbmNpZXNfaW5fdGltZVwiIHgpO1xuICAgICAgICAgZGVwZW5kZW5jaWVzX2luX2V2ZW50ID1cbiAgICAgICAgICAgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJkZXBlbmRlbmNpZXNfaW5fZXZlbnRcIiB4KTtcbiAgICAgICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIiB4KTtcbiAgICAgICAgIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5IE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIgeCk7XG4gICAgICAgICBjb250YWN0X21hcCA9IENvbnRhY3RfbWFwLm9mX3lvanNvbiAoTGlzdC5hc3NvYyBcImNvbnRhY3RfbWFwXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSlcblxubGV0IHVuYXJ5X3BhdHRlcm5zIGVudiA9XG4gIGZvbGRfcnVsZXNcbiAgICAoZnVuIF8gYWNjIHIgLT5cbiAgICAgIG1hdGNoIHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIFBhdHRlcm4uU2V0LmFkZFxuICAgICAgICAgIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMClcbiAgICAgICAgICAoUGF0dGVybi5TZXQuYWRkIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgYWNjKSlcbiAgICBQYXR0ZXJuLlNldC5lbXB0eSBlbnZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjY19taXggfm5vQ291bnRlcnMgP2VudiBmIG1peCA9XG4gIGxldCBkb21haW4gPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZSAtPiBTb21lIChNb2RlbC5kb21haW4gZSlcbiAgaW5cbiAgbWF0Y2ggbWl4IHdpdGhcbiAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiMFwiXG4gIHwgXyAtPlxuICAgIFBwLmxpc3RcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICtAIFwiKVxuICAgICAgKGZ1biBmIGNjcyAtPlxuICAgICAgICBQcC5hcnJheVxuICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiKlwiKVxuICAgICAgICAgIChmdW4gXyBmIGNjIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgIChQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgICAgIGNjKVxuICAgICAgICAgIGYgY2NzKVxuICAgICAgZiBtaXhcblxubGV0IGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYgPVxuICBBbGdfZXhwci5wcmludCAoY2NfbWl4IH5ub0NvdW50ZXJzID9lbnYpIChNb2RlbC5wcmludF90b2tlbiA/ZW52KVxuICAgIChNb2RlbC5wcmludF9hbGcgP2VudilcblxubGV0IGJvb2xfZXhwciB+bm9Db3VudGVycyA/ZW52ID1cbiAgQWxnX2V4cHIucHJpbnRfYm9vbCAoY2NfbWl4IH5ub0NvdW50ZXJzID9lbnYpXG4gICAgKGZ1biBmIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAoTW9kZWwucHJpbnRfdG9rZW4gP2VudikgaSlcbiAgICAoTW9kZWwucHJpbnRfYWxnID9lbnYpXG5cbmxldCBwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYgZiA9XG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHN0clxuICAgIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgKGFsZywgXykgLT4gYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudiBmIGFsZ1xuICBpblxuICBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSBdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgc3RyXG4gIHwgKFsgUHJpbWl0aXZlcy5BbGdfcGV4cHIgXyBdIHwgXyA6OiBfIDo6IF8pIGFzIGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhKVwiIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLlwiKSBhdXgpIGVcblxubGV0IHByaW50X2V4cHJfdmFsIGFsZ192YWwgZiBlID1cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IE5ici5wcmludCBmIChhbGdfdmFsIGFsZylcbiAgaW5cbiAgUHAubGlzdCAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X2N1dCBmICgpKSBhdXggZiBlXG5cbmxldCBkZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnMgfmZ1bGwgZW52IGYgciA9XG4gIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBlbnYgaW5cbiAgbGV0IGNvdW50ZXJzX2luZm8gPSBNb2RlbC5jb3VudGVyc19pbmZvIGVudiBpblxuICBsZXQgcl9taXgsIHJfY3JlYXRlZCA9XG4gICAgUGF0dGVybl9jb21waWxlci5sa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgKE1vZGVsLmRvbWFpbiBlbnYpIHJcbiAgaW5cbiAgbGV0IHByX2FsZyBmIChhLCBfKSA9IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYgZiBhIGluXG4gIGxldCBwcl90b2sgZiAodmEsIHRvaykgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIHByX2FsZyB2YSAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgdG9rXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhJXQlYSV0XCJcbiAgICAoTEthcHBhLnByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIGNvdW50ZXJzX2luZm8gfmx0eXBlczpmYWxzZVxuICAgICAgIHJfY3JlYXRlZClcbiAgICByX21peFxuICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDp0cnVlIH5pbml0aWFsX2NvbW1hOihyX21peCA8PiBbXSlcbiAgICAgICB+c2lncyB+Y291bnRlcnNfaW5mbylcbiAgICByX2NyZWF0ZWRcbiAgICAoaWYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucyA8PiBbXSB0aGVuXG4gICAgICAgZnVuIGYgLT5cbiAgICAgRm9ybWF0LmZwcmludGYgZiBcInxAIFwiXG4gICAgIGVsc2VcbiAgICAgICBQcC5lbXB0eSlcbiAgICAoUHAubGlzdCBQcC5jb21tYSBwcl90b2spIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnNcbiAgICAoZnVuIGYgLT5cbiAgICAgIGlmIGZ1bGwgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQCBAQCAlYSV0XCIgcHJfYWxnIHIuUHJpbWl0aXZlcy5yYXRlIChmdW4gZiAtPlxuICAgICAgICAgICAgbWF0Y2ggci5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgKHJhdGUsIGRpc3QpIC0+XG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJWF9XCIgcHJfYWxnIHJhdGVcbiAgICAgICAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiBtZCAtPlxuICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjolYVwiIChhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KSBtZCkpXG4gICAgICAgICAgICAgICAgZGlzdCkpXG5cbmxldCBlbGVtZW50YXJ5X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIHIgPVxuICBsZXQgZG9tYWluLCBzaWdzID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lLCBOb25lXG4gICAgfCBTb21lIGUgLT4gU29tZSAoTW9kZWwuZG9tYWluIGUpLCBTb21lIChNb2RlbC5zaWduYXR1cmVzIGUpXG4gIGluXG4gIGxldCBwcl9hbGcgZiAoYSwgXykgPSBhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52IGYgYSBpblxuICBsZXQgcHJfdG9rIGYgKHZhLCB0b2spID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgJWFcIiBwcl9hbGcgdmEgKE1vZGVsLnByaW50X3Rva2VuID9lbnYpIHRva1xuICBpblxuICBsZXQgcHJfdHJhbnMgZiB0ID0gUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5wcmludCA/c2lncyBmIHQgaW5cbiAgbGV0IGJveGVkX2NjIGkgZiBjYyA9XG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fYm94IGYgMiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiOiBcIiBpblxuICAgIGxldCAoKSA9IFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlIGYgY2MgaW5cbiAgICBGb3JtYXQucHBfY2xvc2VfYm94IGYgKClcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIihhc3Q6ICVpKUAgQFtAWyVhQF0ldEBbJWFAXUBdQCAtLSBAWyVhQF1AICsrIEBbJWFAXUAgQEAlYSV0XCJcbiAgICByLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGVcbiAgICAoUHAuYXJyYXkgUHAuY29tbWEgYm94ZWRfY2MpXG4gICAgci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzXG4gICAgKGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlblxuICAgICAgIGZ1biBmIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8QCBcIlxuICAgICBlbHNlXG4gICAgICAgUHAuZW1wdHkpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdG9rKSByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdHJhbnMpXG4gICAgci5QcmltaXRpdmVzLnJlbW92ZWRcbiAgICAoUHAubGlzdCBQcC5jb21tYSBwcl90cmFucylcbiAgICByLlByaW1pdGl2ZXMuaW5zZXJ0ZWQgcHJfYWxnIHIuUHJpbWl0aXZlcy5yYXRlXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAocmF0ZSwgZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWElYX1cIiBwcl9hbGcgcmF0ZVxuICAgICAgICAgIChQcC5vcHRpb24gKGZ1biBmIG1kIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCIgKGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYpIG1kKSlcbiAgICAgICAgICBkaXN0KVxuXG5sZXQgbW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzID9lbnYgZiBtID1cbiAgbGV0IGRvbWFpbiA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlIC0+IFNvbWUgKE1vZGVsLmRvbWFpbiBlKVxuICBpblxuICBtYXRjaCBtIHdpdGhcbiAgfCBQcmltaXRpdmVzLlBSSU5UIChubWUsIHZhKSAtPlxuICAgIGlmIG5tZSA8PiBbXSB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFBSSU5URiAlYSA+ICVhXCJcbiAgICAgICAgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgICAgdmFcbiAgICAgICAgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgICAgbm1lXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYgJWFcIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSB2YVxuICB8IFByaW1pdGl2ZXMuUExPVEVOVFJZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiRQTE9URU5UUllcIlxuICB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFICgobiwgXyksIHJ1bGUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRBUFBMWSAlYSAlYVwiXG4gICAgICAoYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgIG5cbiAgICAgIChtYXRjaCBlbnYgd2l0aFxuICAgICAgfCBOb25lIC0+IGVsZW1lbnRhcnlfcnVsZSB+bm9Db3VudGVycyA/ZW52XG4gICAgICB8IFNvbWUgZW52IC0+IGRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbDpmYWxzZSBlbnYpXG4gICAgICBydWxlXG4gIHwgUHJpbWl0aXZlcy5VUERBVEUgKGlkLCAodmEsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkVVBEQVRFICVhICVhXCIgKE1vZGVsLnByaW50X2FsZyA/ZW52KSBpZFxuICAgICAgKGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICB2YVxuICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgZm4pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTTkFQU0hPVCAlYSV0XCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm4gKGZ1biBmIC0+XG4gICAgICAgIGlmIHJhdyB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiBbdHJ1ZV1cIilcbiAgfCBQcmltaXRpdmVzLlNUT1AgZm4gLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNUT1AgJWFcIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICB8IFByaW1pdGl2ZXMuRElOIChraW5kLCBmbikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiAlYSAldFt0cnVlXVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG4gICAgICAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImFic29sdXRlXFxcIiBcIlxuICAgICAgICB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgLT4gKClcbiAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwicHJvYmFiaWxpdHlcXFwiIFwiKVxuICB8IFByaW1pdGl2ZXMuRElOT0ZGIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRESU4gJWEgW2ZhbHNlXVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG4gIHwgUHJpbWl0aXZlcy5DRkxPVyAoX25hbWUsIGNjLCBfKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkVFJBQ0sgQFslYUBdIFt0cnVlXVwiXG4gICAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBfIC0+XG4gICAgICAgICAgIFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDpmYWxzZSkpXG4gICAgICBjY1xuICB8IFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKF8sIGNjKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkVFJBQ0sgJWEgW2ZhbHNlXVwiXG4gICAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBfIC0+XG4gICAgICAgICAgIFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDpmYWxzZSkpXG4gICAgICBjY1xuICB8IFByaW1pdGl2ZXMuU1BFQ0lFUyAoZm4sIGNjLCBfKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU1BFQ0lFU19PRiBAWyVhQF0gW3RydWVdID4gJWFcIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICBmblxuICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgZm4gLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgW2ZhbHNlXSA+ICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cblxubGV0IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyA/ZW52IGYgcGVydCA9XG4gIGxldCBhdXhfYWxhcm0gZiA9XG4gICAgbWF0Y2ggcGVydC5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxhcm0gJWEgXCIgTmJyLnByaW50IG5cbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiUlbW9kOiAldCVhIGRvICVhcmVwZWF0ICVhXCIgYXV4X2FsYXJtXG4gICAgKGJvb2xfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgIChmc3QgcGVydC5QcmltaXRpdmVzLnByZWNvbmRpdGlvbilcbiAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb24gKG1vZGlmaWNhdGlvbiB+bm9Db3VudGVycyA/ZW52KSlcbiAgICBwZXJ0LlByaW1pdGl2ZXMuZWZmZWN0XG4gICAgKGJvb2xfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgIChmc3QgcGVydC5QcmltaXRpdmVzLnJlcGVhdClcblxubGV0IGVudiB+bm9Db3VudGVycyBmIGVudiA9XG4gIE1vZGVsLnByaW50IH5ub0NvdW50ZXJzXG4gICAgKGZ1biBlbnYgLT4gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudilcbiAgICAoZnVuIGVudiAtPiBlbGVtZW50YXJ5X3J1bGUgfm5vQ291bnRlcnMgfmVudilcbiAgICAoZnVuIGVudiAtPiBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgfmVudilcbiAgICBmIGVudlxuXG5sZXQgZW52X2thcHBhIH5ub0NvdW50ZXJzIGYgZW52ID1cbiAgTW9kZWwucHJpbnRfa2FwcGEgfm5vQ291bnRlcnNcbiAgICAoZnVuIGVudiAtPiBhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgIChmdW4gZW52IC0+IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyB+ZW52KVxuICAgIGYgZW52XG5cbmxldCBkZWNvbXBpbGVkX2VudiB+bm9Db3VudGVycyBmIGVudiA9XG4gIE1vZGVsLnByaW50X2thcHBhIH5ub0NvdW50ZXJzXG4gICAgKGZ1biBlbnYgLT4gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudilcbiAgICB+cHJfcnVsZTooZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOnRydWUpXG4gICAgKGZ1biBlbnYgLT4gcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgZiBlbnZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcGVyaW9kID0gREUgb2YgaW50IHwgRFQgb2YgZmxvYXRcblxudHlwZSB0ID0ge1xuICBwcm9ncmVzc1NpemU6IGludDtcbiAgcHJvZ3Jlc3NDaGFyOiBjaGFyO1xuICBkdW1wSWZEZWFkbG9ja2VkOiBib29sO1xuICBpbml0aWFsOiBmbG9hdCBvcHRpb247XG4gIG1heENvbnNlY3V0aXZlQ2xhc2g6IGludDtcbiAgb3V0cHV0RmlsZU5hbWU6IHN0cmluZyBvcHRpb247XG4gIHBsb3RQZXJpb2Q6IHBlcmlvZCBvcHRpb247XG4gIHNlZWQ6IGludCBvcHRpb247XG4gIHRyYWNlRmlsZU5hbWU6IHN0cmluZyBvcHRpb247XG4gIGRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xufVxuXG5sZXQgZW1wdHkgPVxuICB7XG4gICAgcHJvZ3Jlc3NTaXplID0gNzA7XG4gICAgcHJvZ3Jlc3NDaGFyID0gJyMnO1xuICAgIGR1bXBJZkRlYWRsb2NrZWQgPSB0cnVlO1xuICAgIGluaXRpYWwgPSBOb25lO1xuICAgIG1heENvbnNlY3V0aXZlQ2xhc2ggPSAzO1xuICAgIHNlZWQgPSBOb25lO1xuICAgIHRyYWNlRmlsZU5hbWUgPSBOb25lO1xuICAgIHBsb3RQZXJpb2QgPSBOb25lO1xuICAgIG91dHB1dEZpbGVOYW1lID0gTm9uZTtcbiAgICBkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZSA9IE5vbmU7XG4gIH1cblxubGV0IHBhcnNlIHJlc3VsdCA9XG4gIGxldCBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCBmID1cbiAgICBtYXRjaCB2YWx1ZV9saXN0IHdpdGhcbiAgICB8IFsgKHYsIHBvcykgXSAtPiBmIHYgcG9zXG4gICAgfCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBwYXJhbWV0ZXIgXCIgXiBwYXJhbSwgcG9zX3ApKVxuICBpblxuICBsZXQgZ2V0X2Jvb2xfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCA9XG4gICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2YWx1ZSBwb3NfdiAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICAgIHwgXCJ0cnVlXCIgfCBcInllc1wiIC0+IHRydWVcbiAgICAgICAgfCBcImZhbHNlXCIgfCBcIm5vXCIgLT4gZmFsc2VcbiAgICAgICAgfCBfIGFzIGVycm9yIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIGVycm9yIF4gXCIgc2hvdWxkIGJlIGVpdGhlciBcXFwieWVzXFxcIiBvciBcXFwibm9cXFwiXCIsIHBvc192KSkpXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biAoY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGUpXG4gICAgICAgICAoKHBhcmFtLCBwb3NfcCksIHZhbHVlX2xpc3QpIC0+XG4gICAgICBtYXRjaCBwYXJhbSB3aXRoXG4gICAgICB8IFwiZGlzcGxheUNvbXByZXNzaW9uXCIgLT5cbiAgICAgICAgbGV0IHJlYyBwYXJzZSAoYSwgYiwgYykgbCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCAoXCJzdHJvbmdcIiwgXykgOjogdGwgLT4gcGFyc2UgKGEsIGIsIHRydWUpIHRsXG4gICAgICAgICAgfCAoXCJ3ZWFrXCIsIF8pIDo6IHRsIC0+IHBhcnNlIChhLCB0cnVlLCBjKSB0bFxuICAgICAgICAgIHwgKFwibm9uZVwiLCBfKSA6OiB0bCAtPiBwYXJzZSAodHJ1ZSwgYiwgYykgdGxcbiAgICAgICAgICB8IFtdIC0+IGNvbmYsIChhLCBiLCBjKSwgZm9ybWF0Q2Zsb3csIGNmbG93RmlsZVxuICAgICAgICAgIHwgKGVycm9yLCBwb3MpIDo6IF8gLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgIChcIlVua25vd24gdmFsdWUgXCIgXiBlcnJvciBeIFwiIGZvciBjb21wcmVzc2lvbiBtb2RlXCIsIHBvcykpXG4gICAgICAgIGluXG4gICAgICAgIHBhcnNlIHN0b3J5X2NvbXByZXNzaW9uIHZhbHVlX2xpc3RcbiAgICAgIHwgXCJjZmxvd0ZpbGVOYW1lXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB4IF8gLT5cbiAgICAgICAgICAgIGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgU29tZSB4KVxuICAgICAgfCBcInNlZWRcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgcCAtPlxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggc2VlZCA9IFNvbWUgKGludF9vZl9zdHJpbmcgcykgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHApKSlcbiAgICAgIHwgXCJUMFwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBwIC0+XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBpbml0aWFsID0gU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBwKSkpXG4gICAgICB8IFwicGxvdFBlcmlvZFwiIC0+XG4gICAgICAgIChtYXRjaCB2YWx1ZV9saXN0IHdpdGhcbiAgICAgICAgfCBbIChzLCBwKSBdIC0+XG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICggeyBjb25mIHdpdGggcGxvdFBlcmlvZCA9IFNvbWUgKERUIChmbG9hdF9vZl9zdHJpbmcgcykpIH0sXG4gICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhIGZsb2F0XCIsIHApKSlcbiAgICAgICAgfCBbIChzLCBzcCk7ICh1LCB1cCkgXSAtPlxuICAgICAgICAgIGlmXG4gICAgICAgICAgICB1ID0gXCJlXCIgfHwgdSA9IFwiZXZlbnRcIiB8fCB1ID0gXCJldmVudHNcIiB8fCB1ID0gXCJFdmVudFwiXG4gICAgICAgICAgICB8fCB1ID0gXCJFdmVudHNcIlxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggcGxvdFBlcmlvZCA9IFNvbWUgKERFIChpbnRfb2Zfc3RyaW5nIHMpKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgc3ApKVxuICAgICAgICAgICkgZWxzZSBpZlxuICAgICAgICAgICAgICB1ID0gXCJ0LnUuXCIgfHwgdSA9IFwidGltZSB1bml0c1wiIHx8IHUgPSBcIlRpbWUgdW5pdHNcIlxuICAgICAgICAgICAgICB8fCB1ID0gXCJ0aW1lIHVuaXRcIiB8fCB1ID0gXCJUaW1lIHVuaXRcIlxuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBwbG90UGVyaW9kID0gU29tZSAoRFQgKGZsb2F0X29mX3N0cmluZyBzKSkgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhIGZsb2F0XCIsIHNwKSlcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIkluY29ycmVjdCB1bml0IFwiIF4gdSwgdXApKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgIChcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHBhcmFtZXRlciBcIiBeIHBhcmFtLCBwb3NfcCkpKVxuICAgICAgfCBcIm91dHB1dEZpbGVOYW1lXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIF8gLT5cbiAgICAgICAgICAgICggeyBjb25mIHdpdGggb3V0cHV0RmlsZU5hbWUgPSBTb21lIHMgfSxcbiAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICBjZmxvd0ZpbGUgKSlcbiAgICAgIHwgXCJ0cmFjZUZpbGVOYW1lXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIF8gLT5cbiAgICAgICAgICAgICggeyBjb25mIHdpdGggdHJhY2VGaWxlTmFtZSA9IFNvbWUgcyB9LFxuICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgIGNmbG93RmlsZSApKVxuICAgICAgfCBcImRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIF8gLT5cbiAgICAgICAgICAgICggeyBjb25mIHdpdGggZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWUgPSBTb21lIHMgfSxcbiAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICBjZmxvd0ZpbGUgKSlcbiAgICAgIHwgXCJwcm9ncmVzc0JhclNpemVcIiAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGNvbmYgd2l0aFxuICAgICAgICAgICAgcHJvZ3Jlc3NTaXplID1cbiAgICAgICAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIHZcbiAgICAgICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHYgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgIHwgXCJwcm9ncmVzc0JhclN5bWJvbFwiIC0+XG4gICAgICAgICgge1xuICAgICAgICAgICAgY29uZiB3aXRoXG4gICAgICAgICAgICBwcm9ncmVzc0NoYXIgPVxuICAgICAgICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHYgcCAtPlxuICAgICAgICAgICAgICAgICAgdHJ5IFN0cmluZy51bnNhZmVfZ2V0IHYgMFxuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHYgXiBcIiBzaG91bGQgYmUgYSBjaGFyYWN0ZXJcIiwgcCkpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICB8IFwiZHVtcElmRGVhZGxvY2tlZFwiIC0+XG4gICAgICAgICggeyBjb25mIHdpdGggZHVtcElmRGVhZGxvY2tlZCA9IGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgfSxcbiAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgfCBcIm1heENvbnNlY3V0aXZlQ2xhc2hcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHYgcCAtPlxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggbWF4Q29uc2VjdXRpdmVDbGFzaCA9IGludF9vZl9zdHJpbmcgdiB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gdiBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHApKSlcbiAgICAgIHwgXCJkb3RDZmxvd3NcIiAtPlxuICAgICAgICBsZXQgZm9ybWF0Q2Zsb3cgPSBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHYgXyAtPiB2KSBpblxuICAgICAgICBjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIGNmbG93RmlsZVxuICAgICAgKCogaWYgZ2V0X2Jvb2xfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCB0aGVuXG4gICAgICAgICAoc3RvcnlfY29tcHJlc3Npb24sIERvdCkgZWxzZVxuICAgICAgICAgKHN0b3J5X2NvbXByZXNzaW9uLCBIdG1sKSopXG4gICAgICB8IF8gYXMgZXJyb3IgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJVbmtub3duIHBhcmFtZXRlciBcIiBeIGVycm9yLCBwb3NfcCkpKVxuICAgIChlbXB0eSwgKGZhbHNlLCBmYWxzZSwgZmFsc2UpLCBcImRvdFwiLCBOb25lKVxuICAgIHJlc3VsdFxuXG5sZXQgcHJpbnQgZiBjb25mID1cbiAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBmIDAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJzZWVkXFxcIiBcXFwiJWlcXFwiQCxcIilcbiAgICAgIGYgY29uZi5zZWVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwiZHVtcElmRGVhZGxvY2tlZFxcXCIgXFxcIiViXFxcIkAsXCJcbiAgICAgIGNvbmYuZHVtcElmRGVhZGxvY2tlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcIm1heENvbnNlY3V0aXZlQ2xhc2hcXFwiIFxcXCIlaVxcXCJALFwiXG4gICAgICBjb25mLm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwcm9ncmVzc0JhclNpemVcXFwiIFxcXCIlaVxcXCJALFwiIGNvbmYucHJvZ3Jlc3NTaXplXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwicHJvZ3Jlc3NCYXJTeW1ib2xcXFwiIFxcXCIlY1xcXCJALFwiIGNvbmYucHJvZ3Jlc3NDaGFyXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwiVDBcXFwiIFxcXCIlZ1xcXCJALFwiKVxuICAgICAgZiBjb25mLmluaXRpYWxcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICB8IERFIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwicGxvdFBlcmlvZFxcXCIgXFxcIiVpXFxcIiBcXFwiZXZlbnRzXFxcIkAsXCIgaVxuICAgICAgICB8IERUIHQgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwicGxvdFBlcmlvZFxcXCIgXFxcIiVnXFxcIiBcXFwidC51LlxcXCJALFwiIHQpXG4gICAgICBmIGNvbmYucGxvdFBlcmlvZFxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcIm91dHB1dEZpbGVOYW1lXFxcIiBcXFwiJXNcXFwiQCxcIilcbiAgICAgIGYgY29uZi5vdXRwdXRGaWxlTmFtZVxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInRyYWNlRmlsZU5hbWVcXFwiIFxcXCIlc1xcXCJALFwiKVxuICAgICAgZiBjb25mLnRyYWNlRmlsZU5hbWVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZVxcXCIgXFxcIiVzXFxcIkAsXCIpXG4gICAgICBmIGNvbmYuZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWVcbiAgaW5cbiAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZGl2aWRlX2V4cHJfYnlfaW50IGUgaSA9XG4gIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgKEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAoT3BlcmF0b3IuRElWLCBlLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgKE5ici5JIGkpKSkpXG5cbnR5cGUgKCdhLCAnYikgY29ycmVjdGVkX3JhdGVfY29uc3QgPSB7XG4gIG51bTogTmJyLnQ7XG4gIGRlbjogTmJyLnQ7XG4gIHZhcjogKCdhLCAnYikgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb247XG59XG5cbmxldCByZWMgc2ltcGxpZnkgPyhyb290X29ubHkgPSBmYWxzZSkgZXhwciA9XG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jIC0+XG4gICAgbGV0IGEsIGIgPVxuICAgICAgaWYgcm9vdF9vbmx5IHRoZW5cbiAgICAgICAgYSwgYlxuICAgICAgZWxzZVxuICAgICAgICBzaW1wbGlmeSBhLCBzaW1wbGlmeSBiXG4gICAgaW5cbiAgICBsZXQgcm9vdF9vbmx5ID0gdHJ1ZSBpblxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5TVU0gLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5hZGQgYSBiKSwgbG9jXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgXyB3aGVuIE5ici5pc196ZXJvIGEgLT4gYlxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfemVybyBiIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTUlOVVMgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5zdWIgYSBiKSwgbG9jXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc196ZXJvIGIgLT4gYVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5NVUxUIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIubXVsdCBhIGIpLCBsb2NcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEnLCBfKSwgXyB3aGVuIE5ici5pc19lcXVhbCBhJyBOYnIuemVybyAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiJywgXykgd2hlbiBOYnIuaXNfZXF1YWwgYicgTmJyLnplcm8gLT4gYlxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIF8gd2hlbiBOYnIuaXNfZXF1YWwgYSBOYnIub25lIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCBjKSwgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgYywgKEFsZ19leHByLkNPTlNUIGIsIF8pKSwgXyApIClcbiAgICAgIHwgKCAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF9cbiAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGMsIChBbGdfZXhwci5DT05TVCBiLCBfKSksIF8gKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCkgKSAtPlxuICAgICAgICAoKiBhKihiKmMpIC0+IChhKmIpKmMgaWYgYSAmIGIgYXJlIGNvbnN0YW50ICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCAoTmJyLm11bHQgYSBiKSwgbG9jX2NzdCksIGMpLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCksXG4gICAgICAgICAgKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCBjKSwgXykgKVxuICAgICAgfCAoIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF8pLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSApIC0+XG4gICAgICAgICgqIGEqKGIvYykgLT4gKGEqYikvYyBpZiBhICYgYiBhcmUgY29uc3RhbnQgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgKE5ici5tdWx0IGEgYiksIGxvY19jc3QpLCBjKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgYiwgKEFsZ19leHByLkNPTlNUIGMsIF8pKSwgXyksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCksXG4gICAgICAgICAgKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgYiwgKEFsZ19leHByLkNPTlNUIGMsIF8pKSwgXykgKVxuICAgICAgICB3aGVuIChub3QgKE5ici5pc196ZXJvIGMpKSAmJiBOYnIuaXNfemVybyAoTmJyLnJlbSBhIGMpIC0+XG4gICAgICAgICgqIGEqKGIvYykgLT4gKChhL2MpKmIpIGlmIGEgJiBjIGFyZSBjb25zdGFudCAgYW5kIGN8YSAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICggT3BlcmF0b3IuTVVMVCxcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYSBjKSwgbG9jX2NzdCksXG4gICAgICAgICAgICAgICAgYiApLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICAgKCAoIE9wZXJhdG9yLkRJViB8IE9wZXJhdG9yLk1VTFQgfCBPcGVyYXRvci5TVU0gfCBPcGVyYXRvci5NSU5VU1xuICAgICAgICAgICAgICAgICAgfCBPcGVyYXRvci5QT1cgfCBPcGVyYXRvci5NT0RVTE8gfCBPcGVyYXRvci5NSU4gfCBPcGVyYXRvci5NQVhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF8sXG4gICAgICAgICAgICAgICAgICBfIClcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLkRJViAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXylcbiAgICAgICAgd2hlbiAobm90IChOYnIuaXNfemVybyBiKSkgJiYgTmJyLmlzX3plcm8gKE5ici5yZW0gYSBiKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBhIGIpLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBhLCBfKSwgYiksXG4gICAgICAgICAgICBsb2NfYmluICksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGMsIF8pIClcbiAgICAgICAgd2hlbiBOYnIuaXNfemVybyAoTmJyLnJlbSBhIGMpIC0+XG4gICAgICAgICgqIChhKmIvYykgJiBjfGEgLT4gKChjL2EpKmIpKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoIE9wZXJhdG9yLk1VTFQsXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGMgYSksIGxvY19iaW4pLFxuICAgICAgICAgICAgICAgIGIgKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBiLCAoQWxnX2V4cHIuQ09OU1QgYSwgXykpLFxuICAgICAgICAgICAgbG9jX2JpbiApLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBjLCBfKSApXG4gICAgICAgIHdoZW4gTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiAoYiphL2MpICYgY3xhIC0+ICgoYy9hKSpiKSopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKCBPcGVyYXRvci5NVUxULFxuICAgICAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBjIGEpLCBsb2NfYmluKSxcbiAgICAgICAgICAgICAgICBiICksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoIGEsXG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgKEFsZ19leHByLkNPTlNUIGMsIF8pKSxcbiAgICAgICAgICAgIGxvY2RpdiApICkgLT5cbiAgICAgICAgKCogKGEvYi9jKSAtPiBhLyhiKmMpICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLkRJViwgYSwgQWxnX2V4cHIuKENPTlNUIChOYnIubXVsdCBiIGMpLCBsb2NkaXYpKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAgICggKCBPcGVyYXRvci5ESVYgfCBPcGVyYXRvci5NVUxUIHwgT3BlcmF0b3IuU1VNIHwgT3BlcmF0b3IuTUlOVVNcbiAgICAgICAgICAgICAgICAgIHwgT3BlcmF0b3IuUE9XIHwgT3BlcmF0b3IuTU9EVUxPIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgXyApXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5QT1cgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pXG4gICAgICAgIHdoZW4gTmJyLmlzX3NtYWxsZXIgYSAoTmJyLkkgMTEpXG4gICAgICAgICAgICAgJiYgTmJyLmlzX2dyZWF0ZXIgYiBOYnIuemVyb1xuICAgICAgICAgICAgICYmIE5ici5pc19zbWFsbGVyIGIgKE5ici5JIDExKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLnBvdyBhIGIpLCBsb2NcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTU9EVUxPIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5NSU4gfCBPcGVyYXRvci5NQVggLT4gQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYyAtPlxuICAgIGxldCBhID0gc2ltcGxpZnkgYSBpblxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5VTUlOVVMgLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgIHwgQWxnX2V4cHIuQ09OU1QgYSwgXyAtPiBBbGdfZXhwci5DT05TVCAoTmJyLm5lZyBhKSwgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF8gfCBBbGdfZXhwci5VTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgXyApIC0+XG4gICAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5DT1NJTlVTIHwgT3BlcmF0b3IuRVhQIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IEFsZ19leHByLkNPTlNUIGEsIF8gd2hlbiBOYnIuaXNfemVybyBhIC0+IEFsZ19leHByLkNPTlNUIE5ici5vbmUsIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICBfICkgLT5cbiAgICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgICB8IE9wZXJhdG9yLlNJTlVTIHwgT3BlcmF0b3IuVEFOIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IEFsZ19leHByLkNPTlNUIGEsIF8gd2hlbiBOYnIuaXNfZXF1YWwgYSBOYnIub25lIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIE5ici56ZXJvLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgXyApIC0+XG4gICAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5TUVJUIHwgT3BlcmF0b3IuTE9HIHwgT3BlcmF0b3IuSU5UIC0+XG4gICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIG1peCksIGxvYyAtPlxuICAgIGxldCBleHByID0gc2ltcGxpZnkgZXhwciBpblxuICAgIChtYXRjaCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkNPTlNUIF8sIF8gLT4gQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8sIGxvY1xuICAgIHwgKCAoIEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgXyApIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXgpLCBsb2MpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pLCBsb2MgLT5cbiAgICBsZXQgZXhwciA9IHNpbXBsaWZ5IGV4cHIgaW5cbiAgICAobWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+IEFsZ19leHByLkNPTlNUIE5ici56ZXJvLCBsb2NcbiAgICB8ICggKCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF8gfCBBbGdfZXhwci5VTl9BTEdfT1AgX1xuICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pLCBsb2MpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8sIF9cbiAgfCBBbGdfZXhwci5BTEdfVkFSIF8sIF9cbiAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfLCBfXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgXywgX1xuICB8IEFsZ19leHByLkNPTlNUIF8sIF8gLT5cbiAgICBleHByXG4gIHwgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pLCBsb2MgLT5cbiAgICBsZXQgY29uZCwgeWVzLCBubyA9IHNpbXBsaWZ5X2Jvb2wgY29uZCwgc2ltcGxpZnkgeWVzLCBzaW1wbGlmeSBubyBpblxuICAgIChtYXRjaCBjb25kIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUsIF8gLT4geWVzXG4gICAgfCBBbGdfZXhwci5GQUxTRSwgXyAtPiBub1xuICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXyksIF9cbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKSwgX1xuICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXyksIF8gLT5cbiAgICAgIEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSwgbG9jKVxuXG5hbmQgc2ltcGxpZnlfYm9vbCBleHByX2Jvb2wgPVxuICBtYXRjaCBleHByX2Jvb2wgd2l0aFxuICB8IEFsZ19leHByLlRSVUUsIF8gfCBBbGdfZXhwci5GQUxTRSwgXyAtPiBleHByX2Jvb2xcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYSksIGxvYyAtPlxuICAgIChtYXRjaCBzaW1wbGlmeV9ib29sIGEgd2l0aFxuICAgIHwgQWxnX2V4cHIuVFJVRSwgXyAtPiBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgfCBBbGdfZXhwci5GQUxTRSwgXyAtPiBBbGdfZXhwci5UUlVFLCBsb2NcbiAgICB8ICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pLCBfXG4gICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pLCBfXG4gICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pLCBfICkgYXMgYScgLT5cbiAgICAgIEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhJyksIGxvYylcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBsb2MgLT5cbiAgICBsZXQgYSwgYiA9IHNpbXBsaWZ5X2Jvb2wgYSwgc2ltcGxpZnlfYm9vbCBiIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLkFORCAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuVFJVRSwgXyksIF8gLT4gYlxuICAgICAgfCAoQWxnX2V4cHIuRkFMU0UsIF8pLCBfIC0+IGFcbiAgICAgIHwgXywgKEFsZ19leHByLlRSVUUsIF8pIC0+IGFcbiAgICAgIHwgXywgKEFsZ19leHByLkZBTFNFLCBfKSAtPiBiXG4gICAgICB8ICggKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk9SIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5UUlVFLCBfKSwgXyAtPiBhXG4gICAgICB8IChBbGdfZXhwci5GQUxTRSwgXyksIF8gLT4gYlxuICAgICAgfCBfLCAoQWxnX2V4cHIuVFJVRSwgXykgLT4gYlxuICAgICAgfCBfLCAoQWxnX2V4cHIuRkFMU0UsIF8pIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgbG9jKSlcbiAgfCBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgYSwgYiksIGxvYyAtPlxuICAgIGxldCBhLCBiID0gc2ltcGxpZnkgYSwgc2ltcGxpZnkgYiBpblxuICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAobWF0Y2ggb3Agd2l0aFxuICAgICAgfCBPcGVyYXRvci5HUkVBVEVSIC0+XG4gICAgICAgIGlmIE5ici5pc19ncmVhdGVyIGEgYiB0aGVuXG4gICAgICAgICAgQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICB8IE9wZXJhdG9yLlNNQUxMRVIgLT5cbiAgICAgICAgaWYgTmJyLmlzX3NtYWxsZXIgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgIHwgT3BlcmF0b3IuRVFVQUwgLT5cbiAgICAgICAgaWYgTmJyLmlzX2VxdWFsIGEgYiB0aGVuXG4gICAgICAgICAgQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICB8IE9wZXJhdG9yLkRJRkYgLT5cbiAgICAgICAgaWYgTmJyLmlzX2VxdWFsIGEgYiB0aGVuXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuVFJVRSwgbG9jKVxuICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICBfICksXG4gICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyApLFxuICAgICAgICAgIF8gKSApIC0+XG4gICAgICBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgYSwgYiksIGxvYylcblxubGV0IHNpbXBsaWZ5IGV4cHIgPVxuICBsZXQgcm9vdF9vbmx5ID0gZmFsc2UgaW5cbiAgc2ltcGxpZnkgfnJvb3Rfb25seSBleHByXG5cbmxldCByZWMgY2xlYW4gZXhwciA9XG4gIGxldCBleHByID0gZnN0IGV4cHIgaW5cbiAgbWF0Y2ggZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBjbGVhbiBhLCBjbGVhbiBiKSlcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBjbGVhbiBhKSlcbiAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCBkdCkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuRElGRl9UT0tFTiAoY2xlYW4gZXhwciwgZHQpKVxuICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIGR0KSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChjbGVhbiBleHByLCBkdCkpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLkNPTlNUIF8gLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBleHByXG4gIHwgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLklGIChjbGVhbl9ib29sIGNvbmQsIGNsZWFuIHllcywgY2xlYW4gbm8pKVxuXG5hbmQgY2xlYW5fYm9vbCBleHByX2Jvb2wgPVxuICBsZXQgZXhwciA9IGZzdCBleHByX2Jvb2wgaW5cbiAgbWF0Y2ggZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuVFJVRSB8IEFsZ19leHByLkZBTFNFIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IGV4cHJcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYSkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGNsZWFuX2Jvb2wgYSkpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGNsZWFuX2Jvb2wgYSwgY2xlYW5fYm9vbCBiKSlcbiAgfCBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgYSwgYikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGNsZWFuIGEsIGNsZWFuIGIpKVxuXG5sZXQgcmVjIGdldF9jb3JyZWN0ZWRfcmF0ZSBlID1cbiAgbWF0Y2ggZSB3aXRoXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIGNzdCwgXyksIGUpLCBfXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgZSwgKEFsZ19leHByLkNPTlNUIGNzdCwgXykpLCBfIC0+XG4gICAgKG1hdGNoIGdldF9jb3JyZWN0ZWRfcmF0ZSBlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZSAtPlxuICAgICAgU29tZSB7IGNvcnJlY3RlZF9yYXRlIHdpdGggbnVtID0gTmJyLm11bHQgY3N0IGNvcnJlY3RlZF9yYXRlLm51bSB9KVxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgZSwgKEFsZ19leHByLkNPTlNUIGNzdCwgXykpLCBfIC0+XG4gICAgKG1hdGNoIGdldF9jb3JyZWN0ZWRfcmF0ZSBlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZSAtPlxuICAgICAgU29tZSB7IGNvcnJlY3RlZF9yYXRlIHdpdGggZGVuID0gTmJyLm11bHQgY3N0IGNvcnJlY3RlZF9yYXRlLmRlbiB9KVxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLlNVTSwgZTEsIGUyKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZTEgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlMSAtPlxuICAgICAgKG1hdGNoIGdldF9jb3JyZWN0ZWRfcmF0ZSBlMiB3aXRoXG4gICAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUyXG4gICAgICAgIHdoZW4gY29tcGFyZSBjb3JyZWN0ZWRfcmF0ZTEudmFyIGNvcnJlY3RlZF9yYXRlMi52YXIgPSAwXG4gICAgICAgICAgICAgJiYgTmJyLmlzX2VxdWFsIGNvcnJlY3RlZF9yYXRlMS5kZW4gY29ycmVjdGVkX3JhdGUyLmRlbiAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29ycmVjdGVkX3JhdGUxIHdpdGhcbiAgICAgICAgICAgIG51bSA9IE5ici5hZGQgY29ycmVjdGVkX3JhdGUxLm51bSBjb3JyZWN0ZWRfcmF0ZTIubnVtO1xuICAgICAgICAgIH1cbiAgICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZTJcbiAgICAgICAgd2hlbiBjb21wYXJlIGNvcnJlY3RlZF9yYXRlMS52YXIgY29ycmVjdGVkX3JhdGUyLnZhciA9IDAgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvcnJlY3RlZF9yYXRlMSB3aXRoXG4gICAgICAgICAgICBudW0gPVxuICAgICAgICAgICAgICBOYnIuYWRkXG4gICAgICAgICAgICAgICAgKE5ici5tdWx0IGNvcnJlY3RlZF9yYXRlMi5kZW4gY29ycmVjdGVkX3JhdGUxLm51bSlcbiAgICAgICAgICAgICAgICAoTmJyLm11bHQgY29ycmVjdGVkX3JhdGUxLmRlbiBjb3JyZWN0ZWRfcmF0ZTIubnVtKTtcbiAgICAgICAgICAgIGRlbiA9IE5ici5tdWx0IGNvcnJlY3RlZF9yYXRlMS5kZW4gY29ycmVjdGVkX3JhdGUyLmRlbjtcbiAgICAgICAgICB9XG4gICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSkpXG4gIHwgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICggKCBPcGVyYXRvci5NVUxUIHwgT3BlcmF0b3IuRElWIHwgT3BlcmF0b3IuTUlOVVMgfCBPcGVyYXRvci5QT1dcbiAgICAgICAgICB8IE9wZXJhdG9yLk1PRFVMTyB8IE9wZXJhdG9yLk1BWCB8IE9wZXJhdG9yLk1JTiApLFxuICAgICAgICAgIF8sXG4gICAgICAgICAgXyApLFxuICAgICAgXyApXG4gIHwgKCAoIEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF9cbiAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuSUYgXyApLFxuICAgICAgXyApIC0+XG4gICAgTm9uZVxuICB8IEFsZ19leHByLkFMR19WQVIgXywgXyAtPiBTb21lIHsgdmFyID0gU29tZSBlOyBudW0gPSBOYnIub25lOyBkZW4gPSBOYnIub25lIH1cbiAgfCBBbGdfZXhwci5DT05TVCBjc3QsIF8gLT4gU29tZSB7IHZhciA9IE5vbmU7IG51bSA9IGNzdDsgZGVuID0gTmJyLm9uZSB9XG5cbmxldCBnZXRfY29ycmVjdGVkX3JhdGUgZSA9IGdldF9jb3JyZWN0ZWRfcmF0ZSAoY2xlYW4gZSlcblxubGV0IHByaW50IHByX3ZhciBmIGNvcnJlY3RlZF9yYXRlX2NvbnN0ID1cbiAgbWF0Y2ggY29ycmVjdGVkX3JhdGVfY29uc3Qgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIk5vbmVcIlxuICB8IFNvbWUgYSAtPlxuICAgIChtYXRjaCBhLnZhciB3aXRoXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEvJWEpLiVhXCIgTmJyLnByaW50IGEubnVtIE5ici5wcmludCBhLmRlbiBwcl92YXIgYS52YXJcbiAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiglYS8lYSlcIiBOYnIucHJpbnQgYS5udW0gTmJyLnByaW50IGEuZGVuKVxuXG5sZXQgbmVjZXNzYXJpbHlfZXF1YWwgYV9vcHQgYl9vcHQgPVxuICBtYXRjaCBhX29wdCwgYl9vcHQgd2l0aFxuICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBhLCBTb21lIGIgLT5cbiAgICBPcHRpb25fdXRpbC5lcXVhbCBBbGdfZXhwci5lcXVhbCBhLnZhciBiLnZhclxuICAgICYmIE5ici5pc19lcXVhbCAoTmJyLm11bHQgYS5udW0gYi5kZW4pIChOYnIubXVsdCBhLmRlbiBiLm51bSlcblxubGV0IGRlcCBlbXB0eSBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiA/dGltZV92YXIgZXhwciA9XG4gIGxldCByZWMgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGV4cHIgYWNjdSA9XG4gICAgbWF0Y2ggZnN0IGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoXywgZTEsIGUyKSB8IEFsZ19leHByLklGIChfLCBlMSwgZTIpIC0+XG4gICAgICBhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZTFcbiAgICAgICAgKGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBlMiBhY2N1KVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChfLCBlKVxuICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZSwgXylcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGUsIF8pIC0+XG4gICAgICBhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZSBhY2N1XG4gICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIgLT5cbiAgICAgIChtYXRjaCB0aW1lX3ZhciB3aXRoXG4gICAgICB8IFNvbWUgaWQgLT4gYWRkX21peHR1cmUgaWQgYWNjdVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAoIFwiQSB2YXJpYWJsZSBmb3IgdGltZSBzaGFsbCBiZSBwcm92aWRlZCB0byBhbmFseXNlIHRoZSBcXFxuICAgICAgICAgICAgICAgIGRlcGVuZGVuY2VzIGluIGEgdGltZS1kZXBlbmRlbnQgZXhwcmVzc2lvblwiLFxuICAgICAgICAgICAgICAgc25kIGV4cHIgKSkpXG4gICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVJcbiAgICAgICAgfCBPcGVyYXRvci5UTUFYX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSICkgLT5cbiAgICAgIGFjY3VcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgLT4gdW5pb24gKGRlcF9lbnYgaWQpIGFjY3VcbiAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG1peCAtPiBhZGRfbWl4dHVyZSBtaXggYWNjdVxuICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgaWQgLT4gYWRkX3Rva2VuIGlkIGFjY3VcbiAgICB8IEFsZ19leHByLkNPTlNUIF8gLT4gYWNjdVxuICBpblxuICBhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZXhwciBlbXB0eVxuXG5sZXQgcmVjIGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBleHByID1cbiAgbWF0Y2ggZnN0IGV4cHIgd2l0aFxuICB8IEFsZ19leHByLklGIChiLCBlMSwgZTIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgIChBbGdfZXhwci5JRlxuICAgICAgICAgKCBiLFxuICAgICAgICAgICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEsXG4gICAgICAgICAgIGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMiApKVxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBlMSwgZTIpIC0+XG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlNVTSAtPlxuICAgICAgQWxnX2V4cHIuYWRkXG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpXG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpXG4gICAgfCBPcGVyYXRvci5NVUxUIC0+XG4gICAgICBBbGdfZXhwci5hZGRcbiAgICAgICAgKEFsZ19leHByLm11bHQgZTEgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMikpXG4gICAgICAgIChBbGdfZXhwci5tdWx0IGUyIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpKVxuICAgIHwgT3BlcmF0b3IuTUlOVVMgLT5cbiAgICAgIEFsZ19leHByLm1pbnVzXG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpXG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpXG4gICAgfCBPcGVyYXRvci5NSU4gfCBPcGVyYXRvci5NQVggLT4gQWxnX2V4cHIuaW50IDBcbiAgICB8IE9wZXJhdG9yLk1PRFVMTyAtPiBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTFcbiAgICB8IE9wZXJhdG9yLkRJViAtPlxuICAgICAgQWxnX2V4cHIuZGl2XG4gICAgICAgIChBbGdfZXhwci5taW51c1xuICAgICAgICAgICAoQWxnX2V4cHIubXVsdCAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKSBlMilcbiAgICAgICAgICAgKEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMikgZTEpKVxuICAgICAgICAoQWxnX2V4cHIucG93IGUyIChBbGdfZXhwci5pbnQgMikpXG4gICAgfCBPcGVyYXRvci5QT1cgLT5cbiAgICAgICgqICh1XnYpKih2Jypsbih1KSt2KnUnL3UpICopXG4gICAgICBBbGdfZXhwci5tdWx0IChBbGdfZXhwci5wb3cgZTEgZTIpXG4gICAgICAgIChBbGdfZXhwci5hZGRcbiAgICAgICAgICAgKEFsZ19leHByLm11bHRcbiAgICAgICAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMilcbiAgICAgICAgICAgICAgKEFsZ19leHByLmxuIGUxKSlcbiAgICAgICAgICAgKEFsZ19leHByLmRpdlxuICAgICAgICAgICAgICAoQWxnX2V4cHIubXVsdCBlMiAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKSlcbiAgICAgICAgICAgICAgZTEpKSlcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBlKSAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5VTUlOVVMgLT5cbiAgICAgIEFsZ19leHByLnVtaW51cyAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgfCBPcGVyYXRvci5DT1NJTlVTIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLnVtaW51cyAoQWxnX2V4cHIuc2luIGUpKVxuICAgIHwgT3BlcmF0b3IuU0lOVVMgLT5cbiAgICAgIEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKSAoQWxnX2V4cHIuY29zIGUpXG4gICAgfCBPcGVyYXRvci5MT0cgLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIuZGl2IChBbGdfZXhwci5pbnQgMSkgZSlcbiAgICB8IE9wZXJhdG9yLlNRUlQgLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIuZGl2IChBbGdfZXhwci5pbnQgKC0xKSkgKEFsZ19leHByLnNxcnQgZSkpXG4gICAgfCBPcGVyYXRvci5FWFAgLT4gQWxnX2V4cHIubXVsdCAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpIGVcbiAgICB8IE9wZXJhdG9yLlRBTiAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci5hZGQgKEFsZ19leHByLmludCAxKSAoQWxnX2V4cHIucG93IGUgKEFsZ19leHByLmludCAyKSkpXG4gICAgfCBPcGVyYXRvci5JTlQgLT4gQWxnX2V4cHIuaW50IDApXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSIC0+IGZfdGltZSAoKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUFxuICAgICAgKCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVJcbiAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApIC0+XG4gICAgQWxnX2V4cHIuaW50IDBcbiAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gZl9taXggbWl4XG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgaWQgLT4gZl90b2tlbiBpZFxuICB8IEFsZ19leHByLkNPTlNUIF8gLT4gQWxnX2V4cHIuaW50IDBcbiAgfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAtPlxuICAgIGZfc3ltYiBleHByXG5cbmxldCBkaWZmX3Rva2VuIGV4cHIgdG9rZW4gPVxuICBsZXQgZl9taXggXyA9IEFsZ19leHByLmludCAwIGluXG4gIGxldCBmX3Rva2VuIGEgPVxuICAgIGlmIGEgPSB0b2tlbiB0aGVuXG4gICAgICBBbGdfZXhwci5pbnQgMVxuICAgIGVsc2VcbiAgICAgIEFsZ19leHByLmludCAwXG4gIGluXG4gIGxldCBmX3N5bWIgZXhwciA9IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgTG9jLmR1bW15IGluXG4gIGxldCBmX3RpbWUgXyA9IEFsZ19leHByLmludCAwIGluXG4gIGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBleHByXG5cbmxldCBkaWZmX21peHR1cmUgP3RpbWVfdmFyIGV4cHIgbWl4dHVyZSA9XG4gIGxldCBmX21peCBhID1cbiAgICBpZiBhID0gbWl4dHVyZSB0aGVuXG4gICAgICBBbGdfZXhwci5pbnQgMVxuICAgIGVsc2VcbiAgICAgIEFsZ19leHByLmludCAwXG4gIGluXG4gIGxldCBmX3Rva2VuIF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBsZXQgZl9zeW1iIGV4cHIgPSBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXh0dXJlKSwgTG9jLmR1bW15IGluXG4gIGxldCBmX3RpbWUgKCkgPVxuICAgIG1hdGNoIHRpbWVfdmFyIHdpdGhcbiAgICB8IFNvbWUgYiB3aGVuIG1peHR1cmUgPSBiIC0+IEFsZ19leHByLmludCAxXG4gICAgfCBTb21lIF8gLT4gQWxnX2V4cHIuaW50IDBcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJBIHRpbWUtZGVwZW5kZW50IGV4cHJlc3Npb24gY2Fubm90IGJlIGRpZmZlcmVudGlhdGVkIHdpdGhvdXQgXFxcbiAgICAgICAgICAgICAgc3BlY2lmeWluZyBhIHZhcmlhYmxlIGZvciB0aW1lIHByb2dyZXNzXCIsXG4gICAgICAgICAgICAgTG9jLmR1bW15ICkpXG4gIGluXG4gIGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBleHByXG5cbmxldCBmb2xkX292ZXJfbWl4X2luX2xpc3QgZiBtaXggYWNjdSA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2N1IGFycmF5X2lkIC0+XG4gICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2N1IHBpZCAtPiBmIHBpZCBhY2N1KSBhY2N1IGFycmF5X2lkKVxuICAgIGFjY3UgbWl4XG5cbmxldCBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgZXhwciBhY2N1ID1cbiAgbGV0IGwgPSBBbGdfZXhwci5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIGV4cHIgaW5cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2N1IG1peCAtPiBmb2xkX292ZXJfbWl4X2luX2xpc3QgZiBtaXggYWNjdSkgYWNjdSBsXG5cbmxldCBmb2xkX292ZXJfbWl4dHVyZXNfaW5fYWxnX2V4cHJzIGYgbW9kZWwgYWNjdSA9XG4gIGxldCBhbGdzX2V4cHIgPSBNb2RlbC5nZXRfYWxncyBtb2RlbCBpblxuICBsZXQgb2JzZXJ2YWJsZXMgPSBNb2RlbC5nZXRfb2JzIG1vZGVsIGluXG4gICgqYWxncyopXG4gIGxldCBhY2N1ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjdSAoXywgbWl4KSAtPiBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgbWl4IGFjY3UpXG4gICAgICBhY2N1IGFsZ3NfZXhwclxuICBpblxuICAoKm9ic2VydmF0aW9ucyopXG4gIGxldCBhY2N1ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjdSBtaXggLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIG1peCBhY2N1KVxuICAgICAgYWNjdSBvYnNlcnZhYmxlc1xuICBpblxuICAoKnJ1bGVzKilcbiAgbGV0IHJ1bGVzID0gTW9kZWwuZ2V0X3J1bGVzIG1vZGVsIGluXG4gICgqcmF0ZSopXG4gIGxldCBhY2N1ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjdSBlbGVtZW50YXJ5X3J1bGUgLT5cbiAgICAgICAgbGV0IHJhdGUgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy5yYXRlIGluXG4gICAgICAgIGxldCBhY2N1ID0gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIHJhdGUgYWNjdSBpblxuICAgICAgICAoKnVuYXJ5X3JhdGUqKVxuICAgICAgICBsZXQgdW5hcnlfcmF0ZSA9IGVsZW1lbnRhcnlfcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgaW5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIG1hdGNoIHVuYXJ5X3JhdGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgfCBTb21lIChleHByLCBfKSAtPiBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgZXhwciBhY2N1XG4gICAgICAgIGluXG4gICAgICAgICgqZGVsdGEgdG9rZW5zKilcbiAgICAgICAgbGV0IGRlbHRhX3Rva2VucyA9IGVsZW1lbnRhcnlfcnVsZS5QcmltaXRpdmVzLmRlbHRhX3Rva2VucyBpblxuICAgICAgICBsZXQgYWNjdSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjdSAoZXhwciwgXykgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdSlcbiAgICAgICAgICAgIGFjY3UgZGVsdGFfdG9rZW5zXG4gICAgICAgIGluXG4gICAgICAgIGFjY3UpXG4gICAgICBhY2N1IHJ1bGVzXG4gIGluXG4gIGFjY3VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBTaW11bGF0aW9uX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIHN0b3J5X2lkOiBpbnQ7XG4gICAgc3RvcnlfdGltZTogZmxvYXQ7XG4gICAgc3RvcnlfZXZlbnQ6IGludDtcbiAgICBwcm9maWxpbmdfaW5mbzogJ2E7XG4gIH1cbiAgKCogdHlwZSBvZiBkYXRhIHRvIGJlIGdpdmVuIHdpdGggb2JzZXJ2YWJsZXMgZm9yIHN0b3J5IGNvbXByZXNzaW9uXG4gICAgIChzdWNoIGFzIGRhdGUgd2hlbiB0aGUgb2JzIGlzIHRyaWdnZXJlZCopXG5cbiAgbGV0IHVwZGF0ZV9wcm9maWxpbmdfaW5mbyBhIGluZm8gPVxuICAgIHtcbiAgICAgIHN0b3J5X2lkID0gaW5mby5zdG9yeV9pZDtcbiAgICAgIHN0b3J5X3RpbWUgPSBpbmZvLnN0b3J5X3RpbWU7XG4gICAgICBzdG9yeV9ldmVudCA9IGluZm8uc3RvcnlfZXZlbnQ7XG4gICAgICBwcm9maWxpbmdfaW5mbyA9IGE7XG4gICAgfVxuXG4gIGxldCBldmVudCBhID0gYS5zdG9yeV9ldmVudFxuICBsZXQgc3RvcnlfaWQgYSA9IGEuc3RvcnlfaWRcbiAgbGV0IGNvbXBhcmVfYnlfc3RvcnlfaWQgeCB5ID0gTW9kcy5pbnRfY29tcGFyZSB4LnN0b3J5X2lkIHkuc3RvcnlfaWRcblxuICBsZXQgZHVtbXkgYSA9XG4gICAgeyBzdG9yeV9pZCA9IDA7IHN0b3J5X3RpbWUgPSAwLjsgc3RvcnlfZXZlbnQgPSAwOyBwcm9maWxpbmdfaW5mbyA9IGEgfVxuXG4gIGxldCBqc29uX2RpY3Rpb25uYXJ5ID1cbiAgICBcIlxcXCJzaW11bGF0aW9uX2luZm9cXFwiOntcXFwiaWRcXFwiOjAsXFxcInRpbWVcXFwiOjEsXFxcImV2ZW50XFxcIjoyLFxcXCJwcm9maWxpbmdcXFwiOjN9XCJcblxuICBsZXQgdG9fanNvbiBmIHggPVxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgeC5zdG9yeV9pZDtcbiAgICAgICAgYEZsb2F0IHguc3RvcnlfdGltZTtcbiAgICAgICAgYEludCB4LnN0b3J5X2V2ZW50O1xuICAgICAgICBmIHgucHJvZmlsaW5nX2luZm87XG4gICAgICBdXG5cbiAgbGV0IG9mX2pzb24gZiA9IGZ1bmN0aW9uXG4gICAgfCBgTGlzdCBbIGBJbnQgc3RvcnlfaWQ7IGBGbG9hdCBzdG9yeV90aW1lOyBgSW50IHN0b3J5X2V2ZW50OyBpbmZvIF0gLT5cbiAgICAgIHsgc3RvcnlfaWQ7IHN0b3J5X3RpbWU7IHN0b3J5X2V2ZW50OyBwcm9maWxpbmdfaW5mbyA9IGYgaW5mbyB9XG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHNpbXVsYXRpb25faW5mb1wiLCB4KSlcblxuICBsZXQgd3JpdGVfanNvbiBmIG9iIHggPVxuICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8geC5zdG9yeV9pZCk7XG4gICAgICAgICgqIFwiT25seVwiIDEzIHNpZ25pZmljYW50IGRpZ2l0cyBhcyBtYXggcHJlYyBjYXVzZXMgaXNzdWVzIHdpdGggb3BhbSBDSSBvbiBmcmVlYnNkLlxuICAgICAgICAgKiAoU2VlIGh0dHBzOi8vb3BhbS5jaS5vY2FtbC5vcmcvZ2l0aHViL29jYW1sL29wYW0tcmVwb3NpdG9yeS9jb21taXQvOTFiODgzN2JkNjkzYWI3ZmI2MjIxNWZhMzk2ZTk2OTIzYjk4ZDQ0My92YXJpYW50L2ZyZWVic2QsZnJlZWJzZC1vY2FtbC00LjE0LWFtZDY0LGthcHBhLWJpbmFyaWVzLjQuMS4zLHRlc3RzICkgKilcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdF9wcmVjIDEzIG8geC5zdG9yeV90aW1lKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4LnN0b3J5X2V2ZW50KTtcbiAgICAgICAgKGZ1biBvIC0+IGYgbyB4LnByb2ZpbGluZ19pbmZvKTtcbiAgICAgIF1cblxuICBsZXQgcmVhZF9qc29uIGYgc3QgYiA9XG4gICAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgKGZ1biBzdCBiIHN0b3J5X2lkIC0+XG4gICAgICAgIGxldCBzdG9yeV90aW1lID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RvcnlfZXZlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgcHJvZmlsaW5nX2luZm8gPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgeyBzdG9yeV9pZDsgc3RvcnlfdGltZTsgc3RvcnlfZXZlbnQ7IHByb2ZpbGluZ19pbmZvIH0pXG4gICAgICBzdCBiXG5lbmRcblxudHlwZSBldmVudF9raW5kID1cbiAgfCBSVUxFIG9mIGludFxuICB8IElOSVQgb2YgaW50IGxpc3QgKCogdGhlIGFnZW50cyAqKVxuICB8IFBFUlQgb2Ygc3RyaW5nICgqIHRoZSBydWxlICopXG5cbmxldCBwcmludF9ldmVudF9raW5kID9lbnYgZiB4ID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgUlVMRSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJSVUxFKCVpKVwiIGlcbiAgICB8IElOSVQgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIklOSVQoJWEpXCIgKFBwLmxpc3QgUHAuY29tbWEgRm9ybWF0LnBwX3ByaW50X2ludCkgbFxuICAgIHwgUEVSVCBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJQRVJUKCVzKVwiIHMpXG4gIHwgU29tZSBlbnYgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBQRVJUIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHNcbiAgICB8IFJVTEUgcl9pZCAtPiBNb2RlbC5wcmludF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYgZiByX2lkXG4gICAgfCBJTklUIHMgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJbnRybyBAWzxoPiVhQF1cIlxuICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICAgIHMpXG5cbmxldCBwcmludF9ldmVudF9raW5kX2RvdF9hbm5vdCBlbnYgZiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSByX2lkIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJWFcXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvciA9ICVzXVwiXG4gICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KVxuICAgICAgcl9pZCBcImludmhvdXNlXCIgXCJmaWxsZWRcIiBcImxpZ2h0Ymx1ZVwiXG4gIHwgSU5JVCBzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJbbGFiZWw9XFxcIkludHJvIEBbPGg+JWFAXVxcXCIsIHNoYXBlPSVzLCBzdHlsZT0lcywgZmlsbGNvbG9yPWdyZWVuXVwiXG4gICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICBzIFwiaG91c2VcIiBcImZpbGxlZFwiXG4gIHwgUEVSVCBzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJXNcXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvciA9ICVzXVwiIHNcbiAgICAgIFwiaW52aG91c2VcIiBcImZpbGxlZFwiIFwiZ3JlZW5cIlxuXG50eXBlIHN0ZXAgPVxuICB8IFN1YnMgb2YgaW50ICogaW50XG4gIHwgUnVsZSBvZlxuICAgICAgaW50ICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmV2ZW50ICogdW5pdCBTaW11bGF0aW9uX2luZm8udFxuICB8IFBlcnQgb2ZcbiAgICAgIHN0cmluZ1xuICAgICAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uZXZlbnRcbiAgICAgICogdW5pdCBTaW11bGF0aW9uX2luZm8udFxuICB8IEluaXQgb2YgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0XG4gIHwgT2JzIG9mXG4gICAgICBzdHJpbmdcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0XG4gICAgICAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBEdW1teSBvZiBzdHJpbmdcblxudHlwZSB0ID0gc3RlcCBsaXN0XG5cbmxldCBzdWJzX3N0ZXAgYSBiID0gU3VicyAoYSwgYilcbmxldCBkdW1teV9zdGVwIHggPSBEdW1teSB4XG5sZXQgcHJpbnRfc3VicyBfZiAoX2EsIF9iKSA9ICgpXG5cbmxldCBwcmludF9zaXRlID9lbnYgZiAoKGFnX2lkLCBhZyksIHMpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhXyVpLiVhXCIgKE1vZGVsLnByaW50X2FnZW50ID9lbnYpIGFnIGFnX2lkXG4gICAgKG1hdGNoIGVudiB3aXRoXG4gICAgfCBTb21lIGVudiAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIGFnXG4gICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgc1xuXG5sZXQgcHJpbnRfaW5pdCB+Y29tcGFjdCA/ZW52IGxvZyBhY3Rpb25zID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBsb2cgXCJJTklUXCJcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGxvZyBcIioqKkBbPDE+SU5JVDolYUBdKioqXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncykpXG4gICAgICBhY3Rpb25zXG5cbmxldCBwcmludF9zaWRlX2VmZmVjdHMgP2VudiA9XG4gIFBwLmxpc3RcbiAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFwiKVxuICAgIChmdW4gZiAoc2l0ZSwgc3RhdGUpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiU2lkZV9lZmZlY3RzKCVhLCVhKVwiIChwcmludF9zaXRlID9lbnYpIHNpdGVcbiAgICAgICAgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZVxuICAgICAgICAgICA/c2lnczooT3B0aW9uX3V0aWwubWFwIE1vZGVsLnNpZ25hdHVyZXMgZW52KSlcbiAgICAgICAgc3RhdGUpXG5cbmxldCBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGxvZyAoZXZfa2luZCwgZSkgPVxuICBsZXQgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlbnYgLT4gU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gIGluXG4gIGlmIGNvbXBhY3QgdGhlblxuICAgIHByaW50X2V2ZW50X2tpbmQgP2VudiBsb2cgZXZfa2luZFxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgbG9nXG4gICAgICBcIkBbKioqUmVmaW5lZCBldmVudDoqKipALCogS2FwcGFfcnVsZSAlYSBTdG9yeSBlbmNvZGluZzolYSVhJWFAXVwiXG4gICAgICAocHJpbnRfZXZlbnRfa2luZCA/ZW52KSBldl9raW5kXG4gICAgICAoUHAubGlzdCBQcC5lbXB0eVxuICAgICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCA/c2lncykpKVxuICAgICAgKGUuSW5zdGFudGlhdGlvbi50ZXN0cyBAIFsgZS5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyBdKVxuICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uID9zaWdzKSlcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zIChwcmludF9zaWRlX2VmZmVjdHMgP2VudilcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjXG5cbmxldCBwcmludF9vYnMgfmNvbXBhY3QgP2VudiBmIChldl9raW5kLCB0ZXN0cywgXykgPVxuICBsZXQgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlbnYgLT4gU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gIGluXG4gIGlmIGNvbXBhY3QgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJPQlMgJXNcIiBldl9raW5kXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKioqQFs8MT5PQlMgJXM6JWFAXSoqKlwiIGV2X2tpbmRcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlXG4gICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV90ZXN0ID9zaWdzKSkpXG4gICAgICB0ZXN0c1xuXG5sZXQgcHJpbnRfc3RlcCA/KGNvbXBhY3QgPSBmYWxzZSkgP2VudiBmID0gZnVuY3Rpb25cbiAgfCBTdWJzIChhLCBiKSAtPiBwcmludF9zdWJzIGYgKGEsIGIpXG4gIHwgUnVsZSAoeCwgeSwgX3opIC0+IHByaW50X2V2ZW50IH5jb21wYWN0ID9lbnYgZiAoUlVMRSB4LCB5KVxuICB8IFBlcnQgKHgsIHksIF96KSAtPiBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGYgKFBFUlQgeCwgeSlcbiAgfCBJbml0IGEgLT4gcHJpbnRfaW5pdCB+Y29tcGFjdCA/ZW52IGYgYVxuICB8IE9icyAoYSwgYiwgYykgLT4gcHJpbnRfb2JzIH5jb21wYWN0ID9lbnYgZiAoYSwgYiwgYylcbiAgfCBEdW1teSBfIC0+ICgpXG5cbmxldCBnZXRfdHlwZXNfZnJvbV9pbml0IGEgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGFjdGlvbiAtPlxuICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChfLCBhdHlwZSksIF8pIC0+IGF0eXBlIDo6IGFjY1xuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF9cbiAgICAgICAgLT5cbiAgICAgICAgYWNjKVxuICAgIFtdIGFcblxubGV0IHByaW50X2xhYmVsX29mX3N0ZXAgP2VudiBmIHggPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBTdWJzIF8gLT4gKClcbiAgICB8IFJ1bGUgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaVwiIHhcbiAgICB8IFBlcnQgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHhcbiAgICB8IEluaXQgYSAtPlxuICAgICAgbGV0IGwgPSBnZXRfdHlwZXNfZnJvbV9pbml0IGEgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJTklUKCVhKVwiIChQcC5saXN0IFBwLmNvbW1hIEZvcm1hdC5wcF9wcmludF9pbnQpIGxcbiAgICB8IE9icyAoeCwgXywgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgeFxuICAgIHwgRHVtbXkgXyAtPiAoKSlcbiAgfCBTb21lIGVudiAtPlxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IFN1YnMgXyAtPiAoKVxuICAgIHwgUnVsZSAoeCwgXywgXykgLT4gTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52IGYgeFxuICAgIHwgUGVydCAoeCwgXywgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICB8IEluaXQgYSAtPlxuICAgICAgbGV0IGwgPSBnZXRfdHlwZXNfZnJvbV9pbml0IGEgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJbnRybyBAWzxoPiVhQF1cIlxuICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICAgIGxcbiAgICB8IE9icyAoeCwgXywgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICB8IER1bW15IF8gLT4gKCkpXG5cbmxldCBqc29uX2RpY3Rpb25uYXJ5ID1cbiAgXCJcXFwic3RlcFxcXCI6W1xcXCJTdWJzXFxcIixcXFwiUnVsZVxcXCIsXFxcIlBlcnRcXFwiLFxcXCJJbml0XFxcIixcXFwiT2JzXFxcIixcXFwiRHVtbXlcXFwiXVwiXG5cbmxldCB3cml0ZV9zdGVwIG9iIHMgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBzIHdpdGhcbiAgICB8IFN1YnMgKGEsIGIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gYSk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gYik7XG4gICAgICBdXG4gICAgfCBSdWxlICh4LCB5LCB6KSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIHgpO1xuICAgICAgICAoZnVuIG8gLT4gSW5zdGFudGlhdGlvbi53cml0ZV9ldmVudCBBZ2VudC53cml0ZV9qc29uIG8geSk7XG4gICAgICAgIChmdW4gbyAtPiBTaW11bGF0aW9uX2luZm8ud3JpdGVfanNvbiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvIHopO1xuICAgICAgXVxuICAgIHwgUGVydCAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+IEluc3RhbnRpYXRpb24ud3JpdGVfZXZlbnQgQWdlbnQud3JpdGVfanNvbiBvIHkpO1xuICAgICAgICAoZnVuIG8gLT4gU2ltdWxhdGlvbl9pbmZvLndyaXRlX2pzb24gWW9qc29uLkJhc2ljLndyaXRlX251bGwgbyB6KTtcbiAgICAgIF1cbiAgICB8IEluaXQgYSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0IChJbnN0YW50aWF0aW9uLndyaXRlX2FjdGlvbiBBZ2VudC53cml0ZV9qc29uKSBvIGEpO1xuICAgICAgXVxuICAgIHwgT2JzICh4LCB5LCB6KSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvIHgpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfbGlzdCAoSW5zdGFudGlhdGlvbi53cml0ZV90ZXN0IEFnZW50LndyaXRlX2pzb24pKVxuICAgICAgICAgICAgbyB5KTtcbiAgICAgICAgKGZ1biBvIC0+IFNpbXVsYXRpb25faW5mby53cml0ZV9qc29uIFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG8geik7XG4gICAgICBdXG4gICAgfCBEdW1teSBfIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA1KSBdKVxuXG5sZXQgcmVhZF9zdGVwIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IGEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgYiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIFN1YnMgKGEsIGIpXG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfZXZlbnQgQWdlbnQucmVhZF9qc29uKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIFJ1bGUgKHgsIHksIHopXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfZXZlbnQgQWdlbnQucmVhZF9qc29uKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIFBlcnQgKHgsIHksIHopXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGwgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdF9yZXZcbiAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfYWN0aW9uIEFnZW50LnJlYWRfanNvbikpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIEluaXQgKExpc3QucmV2IGwpXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24ucmVhZF90ZXN0IEFnZW50LnJlYWRfanNvbikpKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIE9icyAoeCwgeSwgeilcbiAgICAgIHwgNSAtPiBEdW1teSBcIlwiXG4gICAgICB8IF8gLT4gcmFpc2UgKFlvanNvbi5qc29uX2Vycm9yIFwiSW52YWxpZCBzdGVwXCIpXG4gICAgICAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCBzdGVwX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgU3VicyAoYSwgYikgLT4gYExpc3QgWyBgSW50IDA7IGBJbnQgYTsgYEludCBiIF1cbiAgfCBSdWxlICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMTtcbiAgICAgICAgYEludCB4O1xuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gQWdlbnQudG9fanNvbiB5O1xuICAgICAgICBTaW11bGF0aW9uX2luZm8udG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSB6O1xuICAgICAgXVxuICB8IFBlcnQgKHgsIHksIHopIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCAyO1xuICAgICAgICBgU3RyaW5nIHg7XG4gICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfdG9fanNvbiBBZ2VudC50b19qc29uIHk7XG4gICAgICAgIFNpbXVsYXRpb25faW5mby50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHo7XG4gICAgICBdXG4gIHwgSW5pdCBhIC0+XG4gICAgbGV0IHJldl9hY3Rpb25zID1cbiAgICAgIExpc3QucmV2X21hcCAoSW5zdGFudGlhdGlvbi5hY3Rpb25fdG9fanNvbiBBZ2VudC50b19qc29uKSBhXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgMzsgYExpc3QgKExpc3QucmV2IHJldl9hY3Rpb25zKSBdXG4gIHwgT2JzICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgNDtcbiAgICAgICAgYFN0cmluZyB4O1xuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW4geiAtPlxuICAgICAgICAgICAgICAgYExpc3QgKExpc3QubWFwIChJbnN0YW50aWF0aW9uLnRlc3RfdG9fanNvbiBBZ2VudC50b19qc29uKSB6KSlcbiAgICAgICAgICAgICB5KTtcbiAgICAgICAgU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgejtcbiAgICAgIF1cbiAgfCBEdW1teSBfIC0+IGBMaXN0IFsgYEludCA1IF1cblxubGV0IHdyaXRlX2pzb24gPSBKc29uVXRpbC53cml0ZV9saXN0IHdyaXRlX3N0ZXBcbmxldCByZWFkX2pzb24gc3QgYiA9IExpc3QucmV2IChZb2pzb24uQmFzaWMucmVhZF9saXN0X3JldiByZWFkX3N0ZXAgc3QgYilcblxubGV0IHN0cmluZ19vZl9zdGVwID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3N0ZXAgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCBzdGVwX29mX3N0cmluZyBzID1cbiAgcmVhZF9zdGVwIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBzdGVwX2lzX29icyA9IGZ1bmN0aW9uXG4gIHwgT2JzIF8gLT4gdHJ1ZVxuICB8IFJ1bGUgXyB8IFBlcnQgXyB8IFN1YnMgXyB8IER1bW15IF8gfCBJbml0IF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfaW5pdCA9IGZ1bmN0aW9uXG4gIHwgSW5pdCBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfc3VicyA9IGZ1bmN0aW9uXG4gIHwgU3VicyBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBJbml0IF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfcnVsZSA9IGZ1bmN0aW9uXG4gIHwgUnVsZSBfIC0+IHRydWVcbiAgfCBQZXJ0IF8gfCBJbml0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfcGVydCA9IGZ1bmN0aW9uXG4gIHwgUGVydCBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBJbml0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHNpbXVsYXRpb25faW5mb19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBPYnMgKF8sIF8sIGluZm8pIHwgUnVsZSAoXywgXywgaW5mbykgfCBQZXJ0IChfLCBfLCBpbmZvKSAtPiBTb21lIGluZm9cbiAgfCBJbml0IF8gLT4gU29tZSAoU2ltdWxhdGlvbl9pbmZvLmR1bW15ICgpKVxuICB8IFN1YnMgXyB8IER1bW15IF8gLT4gTm9uZVxuXG5sZXQgY3JlYXRpb25fb2ZfYWN0aW9ucyBvcCBhY3Rpb25zID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGwgLT4gZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKHgsIF8pIC0+IG9wIHggOjogbFxuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF9cbiAgICAgICAgLT5cbiAgICAgICAgbClcbiAgICBbXSBhY3Rpb25zXG5cbmxldCBjcmVhdGlvbl9vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBSdWxlIChfLCB7IEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGFjOyBfIH0sIF8pXG4gIHwgUGVydCAoXywgeyBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhYzsgXyB9LCBfKVxuICB8IEluaXQgYWMgLT5cbiAgICBjcmVhdGlvbl9vZl9hY3Rpb25zIGZzdCBhY1xuICB8IE9icyBfIHwgRHVtbXkgXyB8IFN1YnMgXyAtPiBbXVxuXG5sZXQgaGFzX2NyZWF0aW9uX29mX3N0ZXAgeCA9IGNyZWF0aW9uX29mX3N0ZXAgeCA8PiBbXVxuXG5sZXQgdGVzdHNfb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgU3VicyBfIC0+IFtdXG4gIHwgUnVsZSAoXywgZSwgXykgfCBQZXJ0IChfLCBlLCBfKSAtPlxuICAgIExpc3QuZm9sZF9yaWdodCBMaXN0LmFwcGVuZCBlLkluc3RhbnRpYXRpb24udGVzdHNcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHNcbiAgfCBJbml0IF8gLT4gW11cbiAgfCBPYnMgKF8sIHgsIF8pIC0+IExpc3QuY29uY2F0IHhcbiAgfCBEdW1teSBfIC0+IFtdXG5cbmxldCBhY3Rpb25zX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiBbXSwgW11cbiAgfCBSdWxlIChfLCBlLCBfKSB8IFBlcnQgKF8sIGUsIF8pIC0+XG4gICAgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnMsIGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjXG4gIHwgSW5pdCB5IC0+IHksIFtdXG4gIHwgT2JzIChfLCBfLCBfKSAtPiBbXSwgW11cbiAgfCBEdW1teSBfIC0+IFtdLCBbXVxuXG5sZXQgc2lkZV9lZmZlY3RzX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFJ1bGUgKF8sIGUsIF8pIHwgUGVydCAoXywgZSwgXykgLT4gZS5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgfCBTdWJzIF8gfCBPYnMgXyB8IER1bW15IF8gfCBJbml0IF8gLT4gW11cblxubGV0IGluaXRfdHJhY2VfZmlsZSB+dXVpZCBlbnYgZGVzYyA9XG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIntcXG5cXFwidXVpZFxcXCIgOiBcXFwiXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIChzdHJpbmdfb2ZfaW50IHV1aWQpIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIlxcXCIsXFxuXFxcImRpY3RcXFwiOntcIiBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgQWdlbnQuanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIEluc3RhbnRpYXRpb24uanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFNpbXVsYXRpb25faW5mby5qc29uX2RpY3Rpb25uYXJ5IGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIixcIiBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MganNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJ9LFxcblxcXCJtb2RlbFxcXCI6XCIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgZGVzYyAoTW9kZWwudG9feW9qc29uIGVudikgaW5cbiAgb3V0cHV0X3N0cmluZyBkZXNjIFwiLFxcblxcXCJ0cmFjZVxcXCI6W1wiXG5cbmxldCBhc3NlcnRfZmllbGQgaWRlbnQgeCA9XG4gIGlmIGlkZW50IDw+IHggdGhlblxuICAgIFlvanNvbi5qc29uX2Vycm9yXG4gICAgICAoXCJ0cmFjZSBsYWNrcyB0aGUgZmllbGQgXFxcIlwiIF4geCBeIFwiXFxcIiAoYXQgdGhlIHJpZ2h0IHBsYWNlKVwiKVxuXG5sZXQgcmVhZF90cmFjZV9oZWFkZXJzIGxleF9zdCBsZXhfYnVmID1cbiAgbGV0IGlkZW50ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmXG4gIGluXG4gIGxldCBpZGVudCcsIHV1aWQgPVxuICAgIGlmIGlkZW50ID0gXCJ1dWlkXCIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICAgICAgbGV0IHV1aWQgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBsZXhfc3QgbGV4X2J1ZlxuICAgICAgaW5cbiAgICAgIGxldCB1dWlkID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgdXVpZCkgd2l0aCBfIC0+IE5vbmUgaW5cbiAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmLCB1dWlkXG4gICAgKSBlbHNlXG4gICAgICBpZGVudCwgTm9uZVxuICBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQnIFwiZGljdFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnNraXBfanNvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICB1dWlkXG5cbmxldCBmb2xkX3RyYWNlIGYgaW5pdCBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xjdXJsIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBfID0gcmVhZF90cmFjZV9oZWFkZXJzIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBpZGVudCA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IGFzc2VydF9maWVsZCBpZGVudCBcIm1vZGVsXCIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29sb24gbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IGVudiA9XG4gICAgTW9kZWwub2ZfeW9qc29uXG4gICAgICAoSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9qc29uIGxleF9zdCBsZXhfYnVmKVxuICBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJ0cmFjZVwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBvdXQgPVxuICAgIEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXNcbiAgICAgIChZb2pzb24uQmFzaWMucmVhZF9zZXF1ZW5jZVxuICAgICAgICAgKGZ1biBhY2MgeCB5IC0+IGYgZW52IGFjYyAocmVhZF9zdGVwIHggeSkpXG4gICAgICAgICAoaW5pdCBlbnYpKVxuICAgICAgbGV4X3N0IGxleF9idWZcbiAgaW5cbiAgbGV0ICgpID1cbiAgICB0cnkgWW9qc29uLkJhc2ljLnJlYWRfb2JqZWN0X2VuZCBsZXhfYnVmIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKClcbiAgaW5cbiAgZW52LCBvdXRcblxubGV0IGZvbGRfdHJhY2VfZmlsZSBmIGluaXQgZm5hbWUgPVxuICBsZXQgZGVzYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGRlc2MgaW5cbiAgbGV0IGxleF9zdCA9IFlvanNvbi5pbml0X2xleGVyIH5mbmFtZSAoKSBpblxuICBsZXQgb3V0ID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyAoZm9sZF90cmFjZSBmIGluaXQpIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IGNsb3NlX2luIGRlc2MgaW5cbiAgb3V0XG5cbmxldCBnZXRfaGVhZGVyc19mcm9tX2ZpbGUgZm5hbWUgPVxuICBsZXQgZGVzYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGRlc2MgaW5cbiAgbGV0IGxleF9zdCA9IFlvanNvbi5pbml0X2xleGVyIH5mbmFtZSAoKSBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sY3VybCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgdXVpZCA9IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJtb2RlbFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLm9mX3lvanNvblxuICAgICAgKEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBsZXhfc3QgbGV4X2J1ZilcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfaW4gZGVzYyBpblxuICB1dWlkLCBlbnZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBFZmZpY2llbmN5IDogc2lnXG4gIHR5cGUgdCA9IHtcbiAgICBjb25zZWN1dGl2ZTogaW50IGFycmF5O1xuICAgIG11dGFibGUgY29uc2VjdXRpdmVfYmxvY2tlZDogaW50O1xuICAgIG11dGFibGUgbm9fbW9yZV9iaW5hcnk6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfdW5hcnk6IGludDtcbiAgICBtdXRhYmxlIGNsYXNoaW5nX2luc3RhbmNlOiBpbnQ7XG4gICAgbXV0YWJsZSB0aW1lX2NvcnJlY3Rpb246IGludDtcbiAgfVxuXG4gIHZhbCBpbml0IDogaW50IC0+IHRcbiAgdmFsIG5iIDogdCAtPiBpbnRcbiAgdmFsIG5iX2NvbnNlY3V0aXZlIDogcnVsZV9pZDppbnQgLT4gdCAtPiBpbnRcbiAgdmFsIG5iX2NvbnNlY3V0aXZlX2Jsb2NrZWQgOiB0IC0+IGludFxuICB2YWwgcHJpbnRfZGV0YWlsIDogY3VycmVudF9ldmVudDppbnQgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0X2NvbnNlY3V0aXZlIDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCByZXNldF9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiB0XG4gIHZhbCBpbmNyX25vX21vcmVfYmluYXJ5IDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX25vX21vcmVfdW5hcnkgOiBydWxlX2lkOmludCAtPiB0IC0+IHRcbiAgdmFsIGluY3JfY2xhc2hpbmdfaW5zdGFuY2UgOiBydWxlX2lkOmludCAtPiB0IC0+IHRcbiAgdmFsIGluY3JfdGltZV9jb3JyZWN0aW9uIDogdCAtPiB0XG4gIHZhbCBpbmNyX2NvbnNlY3V0aXZlX2Jsb2NrZWQgOiB0IC0+IHRcbiAgdmFsIHdyaXRlX3QgOiBCdWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHN0cmluZ19vZl90IDogP2xlbjppbnQgLT4gdCAtPiBzdHJpbmdcbiAgdmFsIHJlYWRfdCA6IFlvanNvbi5TYWZlLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdFxuICB2YWwgdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25zZWN1dGl2ZTogaW50IGFycmF5O1xuICAgIG11dGFibGUgY29uc2VjdXRpdmVfYmxvY2tlZDogaW50O1xuICAgIG11dGFibGUgbm9fbW9yZV9iaW5hcnk6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfdW5hcnk6IGludDtcbiAgICBtdXRhYmxlIGNsYXNoaW5nX2luc3RhbmNlOiBpbnQ7XG4gICAgbXV0YWJsZSB0aW1lX2NvcnJlY3Rpb246IGludDtcbiAgfVxuXG4gIGxldCBpbml0IHNpemUgPVxuICAgIHtcbiAgICAgIGNvbnNlY3V0aXZlID0gQXJyYXkubWFrZSBzaXplIDA7XG4gICAgICBjb25zZWN1dGl2ZV9ibG9ja2VkID0gMDtcbiAgICAgIG5vX21vcmVfYmluYXJ5ID0gMDtcbiAgICAgIG5vX21vcmVfdW5hcnkgPSAwO1xuICAgICAgY2xhc2hpbmdfaW5zdGFuY2UgPSAwO1xuICAgICAgdGltZV9jb3JyZWN0aW9uID0gMDtcbiAgICB9XG5cbiAgbGV0IG5iIHQgPVxuICAgIHQubm9fbW9yZV9iaW5hcnkgKyB0Lm5vX21vcmVfdW5hcnkgKyB0LmNsYXNoaW5nX2luc3RhbmNlICsgdC50aW1lX2NvcnJlY3Rpb25cblxuICBsZXQgbmJfY29uc2VjdXRpdmUgfnJ1bGVfaWQgdCA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpXG4gIGxldCBuYl9jb25zZWN1dGl2ZV9ibG9ja2VkIHQgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWRcblxuICBsZXQgcmVzZXRfY29uc2VjdXRpdmUgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gMCBpblxuICAgIHRcblxuICBsZXQgcmVzZXRfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgPC0gMCBpblxuICAgIHRcblxuICBsZXQgaW5jcl9jb25zZWN1dGl2ZV9ibG9ja2VkIHQgPVxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmVfYmxvY2tlZCA8LSBzdWNjIHQuY29uc2VjdXRpdmVfYmxvY2tlZCBpblxuICAgIHRcblxuICBsZXQgaW5jcl9ub19tb3JlX2JpbmFyeSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0Lm5vX21vcmVfYmluYXJ5IDwtIHN1Y2MgdC5ub19tb3JlX2JpbmFyeSBpblxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIHN1Y2MgdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgaW5cbiAgICB0XG5cbiAgbGV0IGluY3Jfbm9fbW9yZV91bmFyeSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0Lm5vX21vcmVfdW5hcnkgPC0gc3VjYyB0Lm5vX21vcmVfdW5hcnkgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSA8LSBzdWNjIHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIGluXG4gICAgdFxuXG4gIGxldCBpbmNyX2NsYXNoaW5nX2luc3RhbmNlIH5ydWxlX2lkIHQgPVxuICAgIGxldCAoKSA9IHQuY2xhc2hpbmdfaW5zdGFuY2UgPC0gc3VjYyB0LmNsYXNoaW5nX2luc3RhbmNlIGluXG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gc3VjYyB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSBpblxuICAgIHRcblxuICBsZXQgaW5jcl90aW1lX2NvcnJlY3Rpb24gdCA9XG4gICAgbGV0ICgpID0gdC50aW1lX2NvcnJlY3Rpb24gPC0gc3VjYyB0LnRpbWVfY29ycmVjdGlvbiBpblxuICAgIHRcblxuICBsZXQgcHJpbnRfZGV0YWlsIH5jdXJyZW50X2V2ZW50IGYgdCA9XG4gICAgbGV0IGFsbCA9IGZsb2F0X29mX2ludCAobmIgdCkgaW5cbiAgICBsZXQgZXZlbnRzID0gZmxvYXRfb2ZfaW50IGN1cnJlbnRfZXZlbnQgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl92Ym94IGYgMCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBhbGwgPiAwLiB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIkBbJS4yZiUlIG9mIGV2ZW50IGxvb3BzIHdlcmUgcHJvZHVjdGl2ZS5AIE51bGwgZXZlbnQgY2F1c2U6QF1ALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZXZlbnRzIC8uIChhbGwgKy4gZXZlbnRzKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiB0Lm5vX21vcmVfdW5hcnkgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFx0VmFsaWQgZW1iZWRkaW5nIGJ1dCBubyBsb25nZXIgdW5hcnkgd2hlbiByZXF1aXJlZDogJS4yZiUlQCxcIlxuICAgICAgICAgICgxMDAuICouIGZsb2F0X29mX2ludCB0Lm5vX21vcmVfdW5hcnkgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQubm9fbW9yZV9iaW5hcnkgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFx0VmFsaWQgZW1iZWRkaW5nIGJ1dCBub3QgYmluYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5ub19tb3JlX2JpbmFyeSAvLiBhbGwpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC5jbGFzaGluZ19pbnN0YW5jZSA+IDAgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFx0Q2xhc2hpbmcgaW5zdGFuY2U6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5jbGFzaGluZ19pbnN0YW5jZSAvLiBhbGwpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC50aW1lX2NvcnJlY3Rpb24gPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcdFBlcnR1cmJhdGlvbiBpbnRlcnJ1cHRpbmcgdGltZSBhZHZhbmNlOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQudGltZV9jb3JyZWN0aW9uIC8uIGFsbClcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXVwiXG5cbiAgbGV0IHRvX3lvanNvbiB0ID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJjb25zZWN1dGl2ZVwiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9pbnQgdC5jb25zZWN1dGl2ZTtcbiAgICAgICAgXCJjb25zZWN1dGl2ZV9ibG9ja2VkXCIsIGBJbnQgdC5jb25zZWN1dGl2ZV9ibG9ja2VkO1xuICAgICAgICBcIm5vX21vcmVfYmluYXJ5XCIsIGBJbnQgdC5ub19tb3JlX2JpbmFyeTtcbiAgICAgICAgXCJub19tb3JlX3VuYXJ5XCIsIGBJbnQgdC5ub19tb3JlX3VuYXJ5O1xuICAgICAgICBcImNsYXNoaW5nX2luc3RhbmNlXCIsIGBJbnQgdC5jbGFzaGluZ19pbnN0YW5jZTtcbiAgICAgICAgXCJ0aW1lX2NvcnJlY3Rpb25cIiwgYEludCB0LnRpbWVfY29ycmVjdGlvbjtcbiAgICAgIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICAge1xuICAgICAgICBjb25zZWN1dGl2ZSA9XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludClcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25zZWN1dGl2ZVwiIHgpO1xuICAgICAgICBjb25zZWN1dGl2ZV9ibG9ja2VkID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25zZWN1dGl2ZV9ibG9ja2VkXCIgeCk7XG4gICAgICAgIG5vX21vcmVfYmluYXJ5ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vX21vcmVfYmluYXJ5XCIgeCk7XG4gICAgICAgIG5vX21vcmVfdW5hcnkgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibm9fbW9yZV91bmFyeVwiIHgpO1xuICAgICAgICBjbGFzaGluZ19pbnN0YW5jZSA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY2xhc2hpbmdfaW5zdGFuY2VcIiB4KTtcbiAgICAgICAgdGltZV9jb3JyZWN0aW9uID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0aW1lX2NvcnJlY3Rpb25cIiB4KTtcbiAgICAgIH1cbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc2ltdWxhdGlvbiBlZmZpY2llbmN5XCIsIHgpKVxuXG4gIGxldCB3cml0ZV90IG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b195b2pzb24gZilcblxuICBsZXQgc3RyaW5nX29mX3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlX3Qgb2IgeDtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgcmVhZF90IHAgbGIgPSBvZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcbiAgbGV0IHRfb2Zfc3RyaW5nIHMgPSByZWFkX3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmVuZFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGltZTogZmxvYXQ7XG4gIG11dGFibGUgZXZlbnRzOiBpbnQ7XG4gIG11dGFibGUgc3RvcmllczogaW50O1xuICBtdXRhYmxlIGxhc3RfcG9pbnQ6IGludDtcbiAgbXV0YWJsZSBzdGF0X251bGw6IEVmZmljaWVuY3kudDtcbiAgaW5pdF90aW1lOiBmbG9hdDtcbiAgaW5pdF9ldmVudDogaW50O1xuICBtdXRhYmxlIHBsb3RfcGVyaW9kOiBDb25maWd1cmF0aW9uLnBlcmlvZDtcbiAgbXV0YWJsZSBtYXhfdGltZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIG1heF9ldmVudDogaW50IG9wdGlvbjtcbn1cblxubGV0IGN1cnJlbnRfc3RvcnkgYyA9IGMuc3Rvcmllc1xubGV0IGN1cnJlbnRfdGltZSBjID0gYy50aW1lXG5sZXQgY3VycmVudF9ldmVudCBjID0gYy5ldmVudHNcbmxldCBuYl9udWxsX2V2ZW50IGMgPSBFZmZpY2llbmN5Lm5iIGMuc3RhdF9udWxsXG5cbmxldCBjb25zZWN1dGl2ZV9udWxsX2V2ZW50IH5ydWxlX2lkIGMgPVxuICBFZmZpY2llbmN5Lm5iX2NvbnNlY3V0aXZlIH5ydWxlX2lkIGMuc3RhdF9udWxsXG5cbmxldCBjb25zZWN1dGl2ZV9ibG9ja2VkIGMgPSBFZmZpY2llbmN5Lm5iX2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGxcbmxldCBpbmNfc3RvcmllcyBjID0gYy5zdG9yaWVzIDwtIGMuc3RvcmllcyArIDFcbmxldCBpbmNfZXZlbnRzIGMgPSBjLmV2ZW50cyA8LSBjLmV2ZW50cyArIDFcblxubGV0IGNoZWNrX3RpbWUgYyA9XG4gIG1hdGNoIGMubWF4X3RpbWUgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbWF4IC0+IGMudGltZSA8PSBtYXhcblxubGV0IGNoZWNrX291dHB1dF90aW1lIGMgb3QgPVxuICBtYXRjaCBjLm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBvdCA8PSBtYXhcblxubGV0IGNoZWNrX2V2ZW50cyBjID1cbiAgbWF0Y2ggYy5tYXhfZXZlbnQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbWF4IC0+IGMuZXZlbnRzIDwgbWF4XG5cbmxldCBvbmVfdGltZV9hZHZhbmNlIGMgZHQgPVxuICBsZXQgKCkgPSBjLnRpbWUgPC0gYy50aW1lICsuIGR0IGluXG4gIGNoZWNrX3RpbWUgY1xuXG5sZXQgb25lX2NvbnN0cnVjdGl2ZV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5yZXNldF9jb25zZWN1dGl2ZSB+cnVsZV9pZCBjLnN0YXRfbnVsbCBpblxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LnJlc2V0X2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGwgaW5cbiAgbGV0ICgpID0gaW5jX2V2ZW50cyBjIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX25vX21vcmVfYmluYXJ5X2V2ZW50IH5ydWxlX2lkIGMgPVxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3Jfbm9fbW9yZV9iaW5hcnkgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfbm9fbW9yZV91bmFyeV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX25vX21vcmVfdW5hcnkgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9XG4gICAgYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX2NsYXNoaW5nX2luc3RhbmNlIH5ydWxlX2lkIGMuc3RhdF9udWxsXG4gIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCA/dGkgYyA9XG4gIG1hdGNoIE9wdGlvbl91dGlsLmJpbmQgTmJyLnRvX2Zsb2F0IHRpIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB0aSAtPlxuICAgIGxldCAoKSA9IGMudGltZSA8LSB0aSBpblxuICAgIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl90aW1lX2NvcnJlY3Rpb24gYy5zdGF0X251bGwgaW5cbiAgICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV9ibG9ja2VkX2V2ZW50IGMgPVxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3JfY29uc2VjdXRpdmVfYmxvY2tlZCBjLnN0YXRfbnVsbCBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IGdldF9lZmZpY2llbmN5IGMgPSBjLnN0YXRfbnVsbFxuXG5sZXQgcHJpbnRfZWZmaWNpZW5jeSBmIGMgPVxuICBFZmZpY2llbmN5LnByaW50X2RldGFpbCB+Y3VycmVudF9ldmVudDooY3VycmVudF9ldmVudCBjKSBmIGMuc3RhdF9udWxsXG5cbmxldCBpbml0X3RpbWUgYyA9IGMuaW5pdF90aW1lXG5sZXQgbWF4X3RpbWUgYyA9IGMubWF4X3RpbWVcbmxldCBtYXhfZXZlbnRzIGMgPSBjLm1heF9ldmVudFxubGV0IHBsb3RfcGVyaW9kIGMgPSBjLnBsb3RfcGVyaW9kXG5cbmxldCB0aW1lX3JhdGlvIHQgPVxuICBtYXRjaCB0Lm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHRtYXggLT5cbiAgICBpZiB0bWF4ID4gdC5pbml0X3RpbWUgdGhlblxuICAgICAgU29tZSAoKHQudGltZSAtLiB0LmluaXRfdGltZSkgLy4gKHRtYXggLS4gdC5pbml0X3RpbWUpKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxubGV0IGV2ZW50X3JhdGlvIHQgPVxuICBtYXRjaCB0Lm1heF9ldmVudCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbWF4IC0+XG4gICAgaWYgZW1heCA9IDAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWVcbiAgICAgICAgKGZsb2F0X29mX2ludCAodC5ldmVudHMgLSB0LmluaXRfZXZlbnQpXG4gICAgICAgIC8uIGZsb2F0X29mX2ludCAoZW1heCAtIHQuaW5pdF9ldmVudCkpXG5cbmxldCBzZXRfbWF4X3RpbWUgYyB0ID0gYy5tYXhfdGltZSA8LSB0XG5sZXQgc2V0X21heF9ldmVudHMgYyBlID0gYy5tYXhfZXZlbnQgPC0gZVxuXG5sZXQgdHJhY2tlZF9ldmVudHMgKGNvdW50ZXIgOiB0KSA6IGludCBvcHRpb24gPVxuICBpZiBjb3VudGVyLnN0b3JpZXMgPj0gMCB0aGVuXG4gICAgU29tZSBjb3VudGVyLnN0b3JpZXNcbiAgZWxzZVxuICAgIE5vbmVcblxubGV0IHNldF9wbG90X3BlcmlvZCAodCA6IHQpIHBsb3RfcGVyaW9kIDogdW5pdCA9IHQucGxvdF9wZXJpb2QgPC0gcGxvdF9wZXJpb2RcblxubGV0IGNyZWF0ZSA/KGluaXRfdCA9IDAuKSA/KGluaXRfZSA9IDApID9tYXhfdGltZSA/bWF4X2V2ZW50IH5wbG90X3BlcmlvZFxuICAgIH5uYl9ydWxlcyAoKSA9XG4gIHtcbiAgICB0aW1lID0gaW5pdF90O1xuICAgIGV2ZW50cyA9IGluaXRfZTtcbiAgICBzdG9yaWVzID0gLTE7XG4gICAgc3RhdF9udWxsID0gRWZmaWNpZW5jeS5pbml0IG5iX3J1bGVzO1xuICAgIHBsb3RfcGVyaW9kO1xuICAgIGluaXRfdGltZSA9IGluaXRfdDtcbiAgICBpbml0X2V2ZW50ID0gaW5pdF9lO1xuICAgIG1heF90aW1lO1xuICAgIG1heF9ldmVudDtcbiAgICBsYXN0X3BvaW50ID0gMDtcbiAgfVxuXG5sZXQgcmVpbml0aWFsaXplIGNvdW50ZXIgPVxuICBjb3VudGVyLnRpbWUgPC0gY291bnRlci5pbml0X3RpbWU7XG4gIGNvdW50ZXIuZXZlbnRzIDwtIGNvdW50ZXIuaW5pdF9ldmVudDtcbiAgY291bnRlci5zdG9yaWVzIDwtIC0xO1xuICBjb3VudGVyLmxhc3RfcG9pbnQgPC0gMDtcbiAgY291bnRlci5zdGF0X251bGwgPC1cbiAgICBFZmZpY2llbmN5LmluaXQgKEFycmF5Lmxlbmd0aCBjb3VudGVyLnN0YXRfbnVsbC5FZmZpY2llbmN5LmNvbnNlY3V0aXZlKVxuXG5sZXQgbmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyBjID1cbiAge1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGN1cnJlbnRfc3RvcnkgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSA9IGN1cnJlbnRfdGltZSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCA9IGN1cnJlbnRfZXZlbnQgYyArIDE7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnByb2ZpbGluZ19pbmZvID0gKCk7XG4gIH1cblxubGV0IGN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIGMgPVxuICB7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID0gY3VycmVudF9zdG9yeSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lID0gY3VycmVudF90aW1lIGM7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50ID0gY3VycmVudF9ldmVudCBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5wcm9maWxpbmdfaW5mbyA9ICgpO1xuICB9XG5cbmxldCBuZXh0X3N0b3J5IGMgPVxuICBsZXQgKCkgPSBpbmNfc3RvcmllcyBjIGluXG4gIG5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gY1xuXG5sZXQgcG9zaXRpdmVfcGxvdF9wZXJpb2QgY291bnRlciA9XG4gIG1hdGNoIHBsb3RfcGVyaW9kIGNvdW50ZXIgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uREUgZSAtPiBlID4gMFxuICB8IENvbmZpZ3VyYXRpb24uRFQgdCAtPiB0ID4gMC5cblxubGV0IG5leHRfcG9pbnQgY291bnRlciBkdCA9XG4gIG1hdGNoIGNvdW50ZXIucGxvdF9wZXJpb2Qgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uRFQgZFQgLT5cbiAgICBpZiBkVCA8PSAwLiB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaW50X29mX2Zsb2F0XG4gICAgICAgICgobWluXG4gICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lIGluZmluaXR5IChtYXhfdGltZSBjb3VudGVyKSlcbiAgICAgICAgICAgIChkdCArLiBjdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgIC0uIGNvdW50ZXIuaW5pdF90aW1lKVxuICAgICAgICAvLiBkVClcbiAgfCBDb25maWd1cmF0aW9uLkRFIGRFIC0+XG4gICAgaWYgZEUgPD0gMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgKGN1cnJlbnRfZXZlbnQgY291bnRlciAtIGNvdW50ZXIuaW5pdF9ldmVudCkgLyBkRVxuXG5sZXQgdG9fcGxvdF9wb2ludHMgY291bnRlciBkdCA9XG4gIGxldCBuZXh0ID0gbmV4dF9wb2ludCBjb3VudGVyIGR0IGluXG4gIGxldCBsYXN0ID0gY291bnRlci5sYXN0X3BvaW50IGluXG4gIGxldCAoKSA9IGNvdW50ZXIubGFzdF9wb2ludCA8LSBuZXh0IGluXG4gIGxldCBuID0gbmV4dCAtIGxhc3QgaW5cbiAgbWF0Y2ggY291bnRlci5wbG90X3BlcmlvZCB3aXRoXG4gIHwgQ29uZmlndXJhdGlvbi5EVCBkVCAtPlxuICAgICggc25kXG4gICAgICAgIChUb29scy5yZWN0aVxuICAgICAgICAgICAoZnVuICh0aW1lLCBhY2MpIF8gLT5cbiAgICAgICAgICAgICAoIHRpbWUgLS4gZFQsXG4gICAgICAgICAgICAgICBpZiBjaGVja19vdXRwdXRfdGltZSBjb3VudGVyIHRpbWUgdGhlblxuICAgICAgICAgICAgICAgICB0aW1lIDo6IGFjY1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBhY2MgKSlcbiAgICAgICAgICAgKGNvdW50ZXIuaW5pdF90aW1lICsuIChmbG9hdF9vZl9pbnQgbmV4dCAqLiBkVCksIFtdKVxuICAgICAgICAgICBuKSxcbiAgICAgIGNvdW50ZXIgKVxuICB8IENvbmZpZ3VyYXRpb24uREUgXyAtPlxuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIFsgY291bnRlci50aW1lIF0sIGNvdW50ZXJcbiAgICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICAgIFtdLCBjb3VudGVyXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgKFwiQ291bnRlci50b19wbG90X3BvaW50czogaW52YWxpZCBpbmNyZW1lbnQgXCIgXiBzdHJpbmdfb2ZfaW50IG4pXG5cbmxldCBmaWxsIH5vdXRwdXRzIGNvdW50ZXIgfmR0ID1cbiAgbGV0IHBvaW50cywgY291bnRlcicgPSB0b19wbG90X3BvaW50cyBjb3VudGVyIGR0IGluXG4gIExpc3QuaXRlciAoZnVuIHRpbWUgLT4gb3V0cHV0cyBjb3VudGVyJyB0aW1lKSBwb2ludHNcblxubGV0IGZha2VfdGltZSB0IHRpbWUgPSB7IHQgd2l0aCB0aW1lIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBwcmludF9pbml0aWFsX2lucHV0cyA/dXVpZCBjb25mIGVudiBpbnB1dHNfZm9ybSBpbml0ID1cbiAgbGV0IG5vQ291bnRlcnMgPSBmYWxzZSBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHV1aWQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB1dWlkIC0+IEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAuXCIgdXVpZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiJWFALiVhQC5cIiBDb25maWd1cmF0aW9uLnByaW50IGNvbmZcbiAgICAgIChLYXBwYV9wcmludGVyLmVudl9rYXBwYSB+bm9Db3VudGVycylcbiAgICAgIGVudlxuICBpblxuICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gIGxldCBjb3VudGVyc19pbmZvID0gTW9kZWwuY291bnRlcnNfaW5mbyBlbnYgaW5cbiAgRm9ybWF0LmZwcmludGYgaW5wdXRzX2Zvcm0gXCJALkBbPHY+JWFAXUAuXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKG4sIHIpIC0+XG4gICAgICAgICBsZXQgXywgaW5zX2ZyZXNoID1cbiAgICAgICAgICAgUGF0dGVybl9jb21waWxlci5sa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgKE1vZGVsLmRvbWFpbiBlbnYpIHJcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBpZiBpbnNfZnJlc2ggPD4gW10gdGhlbiAoXG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj4lJWluaXQ6QCBAWyVhQF1AIEBbJWFAXUBdXCJcbiAgICAgICAgICAgICAgICAgKEthcHBhX3ByaW50ZXIuYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudilcbiAgICAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICAgICAoUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmNyZWF0ZWQ6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6ZmFsc2UgfnNpZ3MgfmNvdW50ZXJzX2luZm8pXG4gICAgICAgICAgICAgICAgIGluc19mcmVzaFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucyA8PiBbXSB0aGVuIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmICgpXG4gICAgICAgICAgIClcbiAgICAgICAgIGluXG4gICAgICAgICBQcC5saXN0IFBwLnNwYWNlXG4gICAgICAgICAgIChmdW4gZiAobmIsIHRrKSAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj4lJWluaXQ6QCBAWyVhQF1AICVhQF1cIlxuICAgICAgICAgICAgICAgKEthcHBhX3ByaW50ZXIuYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudilcbiAgICAgICAgICAgICAgIChmc3QgKEFsZ19leHByLm11bHQgKExvYy5hbm5vdF93aXRoX2R1bW15IG4pIG5iKSlcbiAgICAgICAgICAgICAgIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSB0aylcbiAgICAgICAgICAgZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zKSlcbiAgICBpbml0XG5cbnR5cGUgc25hcHNob3QgPSB7XG4gIHNuYXBzaG90X2V2ZW50OiBpbnQ7XG4gIHNuYXBzaG90X3RpbWU6IGZsb2F0O1xuICBzbmFwc2hvdF9hZ2VudHM6IChpbnQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3Q7XG4gIHNuYXBzaG90X3Rva2VuczogKHN0cmluZyAqIE5ici50KSBhcnJheTtcbn1cblxubGV0IHByaW50X3NuYXBzaG90ID91dWlkIGYgcyA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+Ly8gU25hcHNob3QgW0V2ZW50OiAlZF1ALFwiXG4gICAgICAoKlwiLCBUaW1lOiAlZlwiKikgcy5zbmFwc2hvdF9ldmVudFxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWElJWRlZjogXFxcIlQwXFxcIiBcXFwiJXNcXFwiQCxALCVhQCwlYUBdQC5cIlxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIHggLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiQCxcIiB4KSlcbiAgICB1dWlkXG4gICAgKEpzb25VdGlsLnN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCBzLnNuYXBzaG90X3RpbWUpXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChpLCBtaXgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OiAlaSAvKiVpIGFnZW50cyovICVhQF1cIiBpXG4gICAgICAgICAgIChBcnJheS5mb2xkX2xlZnQgKGZ1biBzIGUgLT4gcyArIEFycmF5Lmxlbmd0aCBlKSAwIG1peClcbiAgICAgICAgICAgVXNlcl9ncmFwaC5wcmludF9jYyBtaXgpKVxuICAgIHMuc25hcHNob3RfYWdlbnRzXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gXyBmIChuYSwgZWwpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVpbml0OiAlYSAlc1wiIE5ici5wcmludCBlbCBuYSkpXG4gICAgcy5zbmFwc2hvdF90b2tlbnNcblxubGV0IHByaW50X2RvdF9zbmFwc2hvdCA/dXVpZCBmIHMgPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2Pi8vIFNuYXBzaG90IFtFdmVudDogJWRdQCxcIlxuICAgICAgKCpcIiwgVGltZTogJWZcIiopIHMuc25hcHNob3RfZXZlbnRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhZGlncmFwaCBHe0AsJWFALCVhfUBdQC5cIlxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIHggLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiQCxcIiB4KSlcbiAgICB1dWlkXG4gICAgKFBwLmxpc3RpIFBwLmN1dCAoZnVuIGkgZiAobmIsIG1peCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+c3ViZ3JhcGggY2x1c3RlciVke0AsXCIgaTtcbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgXCJjb3VudGVyJWQgW2xhYmVsID0gXFxcIiVkIGluc3RhbmNlKHMpXFxcIiwgc2hhcGU9bm9uZV07QCwlYX1AXVwiIGkgbmJcbiAgICAgICAgICAgKFVzZXJfZ3JhcGgucHJpbnRfZG90X2NjIGkpXG4gICAgICAgICAgIG1peCkpXG4gICAgcy5zbmFwc2hvdF9hZ2VudHNcbiAgICAoUHAuYXJyYXkgUHAuY3V0IChmdW4gaSBmIChuYSwgZWwpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwidG9rZW5fJWQgW2xhYmVsID0gXFxcIiVzICglYSlcXFwiICwgc2hhcGU9bm9uZV1cIiBpIG5hXG4gICAgICAgICAgIE5ici5wcmludCBlbCkpXG4gICAgcy5zbmFwc2hvdF90b2tlbnNcblxubGV0IHdyaXRlX3NuYXBzaG90IG9iIHMgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF9ldmVudFwiIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2JcbiAgICAgIHMuc25hcHNob3RfZXZlbnRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X3RpbWVcIiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQgb2JcbiAgICAgIHMuc25hcHNob3RfdGltZVxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfYWdlbnRzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnRcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgud3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCkpXG4gICAgICBvYiBzLnNuYXBzaG90X2FnZW50c1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfdG9rZW5zXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheVxuICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIE5ici53cml0ZV90KSlcbiAgICAgIG9iIHMuc25hcHNob3RfdG9rZW5zXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfc25hcHNob3QgcCBsYiA9XG4gIGxldCBzbmFwc2hvdF9ldmVudCwgc25hcHNob3RfdGltZSwgc25hcHNob3RfYWdlbnRzLCBzbmFwc2hvdF90b2tlbnMgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAoZSwgdGksIGEsIHQpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic25hcHNob3RfZXZlbnRcIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIsIHRpLCBhLCB0XG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJzbmFwc2hvdF90aW1lXCIgdGhlblxuICAgICAgICAgIGUsIFlvanNvbi5CYXNpYy5yZWFkX251bWJlciBwIGxiLCBhLCB0XG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJzbmFwc2hvdF9hZ2VudHNcIiB0aGVuXG4gICAgICAgICAgKCBlLFxuICAgICAgICAgICAgdGksXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5yZWFkX2Nvbm5lY3RlZF9jb21wb25lbnQpXG4gICAgICAgICAgICAgIHAgbGIsXG4gICAgICAgICAgICB0IClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInNuYXBzaG90X3Rva2Vuc1wiKSBpblxuICAgICAgICAgICggZSxcbiAgICAgICAgICAgIHRpLFxuICAgICAgICAgICAgYSxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5XG4gICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgTmJyLnJlYWRfdClcbiAgICAgICAgICAgICAgcCBsYiApXG4gICAgICAgICkpXG4gICAgICAoLTEsIG5hbiwgW10sIFt8fF0pIHAgbGJcbiAgaW5cbiAgeyBzbmFwc2hvdF9ldmVudDsgc25hcHNob3RfdGltZTsgc25hcHNob3RfYWdlbnRzOyBzbmFwc2hvdF90b2tlbnMgfVxuXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90ID0gSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlIHdyaXRlX3NuYXBzaG90XG5cbmxldCBzbmFwc2hvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxudHlwZSBkaW5fZGF0YSA9IHtcbiAgZGluX2tpbmQ6IFByaW1pdGl2ZXMuZGluX2tpbmQ7XG4gIGRpbl9zdGFydDogZmxvYXQ7XG4gIGRpbl9oaXRzOiBpbnQgYXJyYXk7XG4gIGRpbl9mbHV4czogZmxvYXQgYXJyYXkgYXJyYXk7XG59XG5cbnR5cGUgZGluID0geyBkaW5fcnVsZXM6IHN0cmluZyBhcnJheTsgZGluX2RhdGE6IGRpbl9kYXRhOyBkaW5fZW5kOiBmbG9hdCB9XG5cbmxldCB3cml0ZV9kaW4gb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9raW5kXCIgUHJpbWl0aXZlcy53cml0ZV9kaW5fa2luZCBvYlxuICAgICAgZi5kaW5fZGF0YS5kaW5fa2luZFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX3N0YXJ0XCIgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG9iXG4gICAgICBmLmRpbl9kYXRhLmRpbl9zdGFydFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2VuZFwiIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvYiBmLmRpbl9lbmRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9ydWxlc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZylcbiAgICAgIG9iIGYuZGluX3J1bGVzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5faGl0c1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgIG9iIGYuZGluX2RhdGEuZGluX2hpdHNcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9mbHV4c1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCkpXG4gICAgICBvYiBmLmRpbl9kYXRhLmRpbl9mbHV4c1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCByZWFkX2RpbiBwIGxiID1cbiAgbGV0IGRpbl9raW5kLCBkaW5fc3RhcnQsIGRpbl9oaXRzLCBkaW5fZmx1eHMsIGRpbl9ydWxlcywgZGluX2VuZCA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChrLCBzLCBoLCBmLCByLCBlKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcImRpbl9raW5kXCIgdGhlblxuICAgICAgICAgIFByaW1pdGl2ZXMucmVhZF9kaW5fa2luZCBwIGxiLCBzLCBoLCBmLCByLCBlXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5fc3RhcnRcIiB0aGVuXG4gICAgICAgICAgaywgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHAgbGIsIGgsIGYsIHIsIGVcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9oaXRzXCIgdGhlblxuICAgICAgICAgIGssIHMsIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiLCBmLCByLCBlXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5fZmx1eHNcIiB0aGVuXG4gICAgICAgICAgKCBrLFxuICAgICAgICAgICAgcyxcbiAgICAgICAgICAgIGgsXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9hcnJheVxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyKVxuICAgICAgICAgICAgICBwIGxiLFxuICAgICAgICAgICAgcixcbiAgICAgICAgICAgIGUgKVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX2VuZFwiIHRoZW5cbiAgICAgICAgICBrLCBzLCBoLCBmLCByLCBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgcCBsYlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwiZGluX3J1bGVzXCIpIGluXG4gICAgICAgICAgaywgcywgaCwgZiwgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIGVcbiAgICAgICAgKSlcbiAgICAgIChQcmltaXRpdmVzLkFCU09MVVRFLCBuYW4sIFt8fF0sIFt8fF0sIFt8fF0sIG5hbilcbiAgICAgIHAgbGJcbiAgaW5cbiAge1xuICAgIGRpbl9ydWxlcztcbiAgICBkaW5fZW5kO1xuICAgIGRpbl9kYXRhID0geyBkaW5fa2luZDsgZGluX3N0YXJ0OyBkaW5faGl0czsgZGluX2ZsdXhzIH07XG4gIH1cblxubGV0IHN0cmluZ19vZl9kaW4gPSBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGUgd3JpdGVfZGluXG5cbmxldCBkaW5fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2RpbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgcHJpbnRfZG90X2RpbiA/dXVpZCBkZXNjIGZsdXggPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJAWzx2PiVhXCJcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIHggLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCIsQCxcIiB4KSlcbiAgICAgIHV1aWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjXG4gICAgICBcImRpZ3JhcGggR3sgbGFiZWw9XFxcIkR5bmFtaWMgaW5mbHVlbmNlIG5ldHdvcmtcXFwiIDsgbGFiZWxsb2M9XFxcInRcXFwiIDsgXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwibm9kZSBbc2hhcGU9Ym94LHN0eWxlPWZpbGxlZCxmaWxsY29sb3I9bGlnaHRza3libHVlXUAsXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5hcnJheVxuICAgICAgKGZ1biBfIC0+ICgpKVxuICAgICAgKGZ1biBzIC0+XG4gICAgICAgIFBwLmFycmF5IFBwLmVtcHR5IChmdW4gZCBmIHYgLT5cbiAgICAgICAgICAgIGlmIHYgPSAwLiB0aGVuXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGNvbG9yLCBhcnJvd2hlYWQgPVxuICAgICAgICAgICAgICAgIGlmIHYgPCAwLiB0aGVuXG4gICAgICAgICAgICAgICAgICBcInJlZDNcIiwgXCJ0ZWVcIlxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFwiZ3JlZW4zXCIsIFwibm9ybWFsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgIFwiQFs8aD5cXFwiJXNcXFwiIC0+IFxcXCIlc1xcXCIgXFxcbiAgICAgICAgICAgICAgICAgW3dlaWdodD0lZCxsYWJlbD1cXFwiJS4zZlxcXCIsY29sb3I9JXMsYXJyb3doZWFkPSVzXTtAXUAsXCJcbiAgICAgICAgICAgICAgICBmbHV4LmRpbl9ydWxlcy4ocykgZmx1eC5kaW5fcnVsZXMuKGQpXG4gICAgICAgICAgICAgICAgKGFicyAoaW50X29mX2Zsb2F0IHYpKVxuICAgICAgICAgICAgICAgIHYgY29sb3IgYXJyb3doZWFkXG4gICAgICAgICAgICApKSlcbiAgICAgIGRlc2MgZmx1eC5kaW5fZGF0YS5kaW5fZmx1eHNcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZGVzYyBcIn1AXUAuXCJcblxubGV0IHByaW50X2h0bWxfZGluIGRlc2MgZmx1eCA9XG4gIFBwX2h0bWwuZ3JhcGhfcGFnZVxuICAgIChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJEeW5hbWljIGluZmx1ZW5jZSBtYXBcIilcbiAgICB+c3VidGl0bGU6KGZ1biBmIC0+XG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgXCJiZXR3ZWVuIHQgPSA8c3BhbiBpZD1cXFwiYmVnaW5fdGltZVxcXCI+PC9zcGFuPnMgYW5kIHQgPSA8c3BhbiBcXFxuICAgICAgICAgaWQ9XFxcImVuZF90aW1lXFxcIj48L3NwYW4+cyAoPHNwYW4gaWQ9XFxcIm5iX2V2ZW50c1xcXCI+PC9zcGFuPiBldmVudHMpXCIpXG4gICAgW1xuICAgICAgXCJodHRwOi8vZDNqcy5vcmcvZDMudjQubWluLmpzXCI7XG4gICAgICBcImh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0zLjMuMS5taW4uanNcIjtcbiAgICBdXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALC5jaG9yZCBwYXRoIHtAIGZpbGwtb3BhY2l0eTogLjY3O0AgXCJcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwic3Ryb2tlOiAjMDAwO0Agc3Ryb2tlLXdpZHRoOiAuNXB4O0AgfUBdQCw8L3N0eWxlPlwiKVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxkaXYgaWQ9XFxcImZsdXhfY29udGFpbmVyXFxcIj48L2Rpdj5ALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj48Zm9ybT5ALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8bGFiZWwgZm9yPVxcXCJjb3JyZWN0aW9uXFxcIj5Db3JyZWN0aW9uPC9sYWJlbD5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiPHNlbGVjdCBpZD1cXFwic2VsZWN0X2NvcnJlY3Rpb25cXFwiIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiIFxcXG4gICAgICAgICAgIGlkPVxcXCJjb3JyZWN0aW9uXFxcIj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxvcHRpb24gdmFsdWU9XFxcIm5vbmVcXFwiPk5vbmU8L29wdGlvbj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPG9wdGlvbiB2YWx1ZT1cXFwiaGl0c1xcXCI+UnVsZSBvY2N1cmVuY2VzPC9vcHRpb24+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxvcHRpb24gdmFsdWU9XFxcInRpbWVcXFwiPlRpbWU8L29wdGlvbj5AXUAsPC9zZWxlY3Q+QCw8L2Rpdj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiPGlucHV0IGlkPVxcXCJ0b2dnbGVfc2VsZWN0ZWRfcnVsZXNcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCIgdmFsdWU9XFxcIlRvZ2dsZSBcXFxuICAgICAgICAgICBzZWxlY3RlZCBydWxlc1xcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGxhYmVsIGNsYXNzPVxcXCJjaGVja2JveC1pbmxpbmVcXFwiPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxpbnB1dCBpZD1cXFwiY2hlY2tib3hfc2VsZl9pbmZsdWVuY2VcXFwiIHR5cGU9XFxcImNoZWNrYm94XFxcIj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlJ1bGVzIHNlbGYgaW5mbHVlbmNlQF1ALDwvbGFiZWw+QF1ALDwvZm9ybT5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxmb3JtIGlkPVxcXCJtZW51XFxcIj48L2Zvcm0+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c2NyaXB0PkAsJXNALDwvc2NyaXB0PkBdQCxcIlxuICAgICAgICAgIFJlc291cmNlX3N0cmluZ3MuY29tbW9uX2pzXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c2NyaXB0PkAsJXNALDwvc2NyaXB0PkBdQCxcIlxuICAgICAgICAgIFJlc291cmNlX3N0cmluZ3MuZmx1eF9qc1xuICAgICAgaW5cblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiQFs8diAyPjxzY3JpcHQ+QCxcXFwidXNlIHN0cmljdFxcXCJALEBbdmFyIGZsdXggPUAgJXM7QF1ALFwiXG4gICAgICAgICAgKHN0cmluZ19vZl9kaW4gZmx1eClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGlkcyA9IHtAW0AsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiYmVnaW5UaW1lSWRcXFwiIDogXFxcImJlZ2luX3RpbWVcXFwiLEAgXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiZW5kVGltZUlkXFxcIiA6IFxcXCJlbmRfdGltZVxcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcXCJzZWxlY3RDb3JyZWN0aW9uSWRcXFwiIDogXFxcInNlbGVjdF9jb3JyZWN0aW9uXFxcIixAIFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJuYkV2ZW50c0lkXFxcIiA6IFxcXCJuYl9ldmVudHNcXFwiLEAgXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwicnVsZXNDaGVja2JveGVzSWRcXFwiIDogXFxcIm1lbnVcXFwiLEAgXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwidG9nZ2xlUnVsZXNJZFxcXCIgOiBcXFwidG9nZ2xlX3NlbGVjdGVkX3J1bGVzXFxcIixAIFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFxcImNoZWNrYm94U2VsZkluZmx1ZW5jZUlkXFxcIiA6IFxcXCJjaGVja2JveF9zZWxmX2luZmx1ZW5jZVxcXCJ9O0BdQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKXsgQFtALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGZsdXhfbWFwID0gbmV3IGZsdXhNYXAoaWRzKTtAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiZmx1eF9tYXAuc2V0Rmx1eChmbHV4KTsgfTsgQF1ALFwiIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc2NyaXB0PlwiKVxuICAgIGRlc2NcblxudHlwZSBwbG90ID0geyBwbG90X2xlZ2VuZDogc3RyaW5nIGFycmF5OyBwbG90X3NlcmllczogZmxvYXQgb3B0aW9uIGFycmF5IGxpc3QgfVxuXG5sZXQgYWRkX3Bsb3RfbGluZSBuZXdfb2JzZXJ2YWJsZXMgcGxvdCA9XG4gIGxldCBuZXdfdmFsdWVzID0gQXJyYXkubWFwIChmdW4gbmJyIC0+IE5ici50b19mbG9hdCBuYnIpIG5ld19vYnNlcnZhYmxlcyBpblxuICB7XG4gICAgcGxvdF9sZWdlbmQgPSBwbG90LnBsb3RfbGVnZW5kO1xuICAgIHBsb3Rfc2VyaWVzID0gbmV3X3ZhbHVlcyA6OiBwbG90LnBsb3Rfc2VyaWVzO1xuICB9XG5cbmxldCBpbml0X3Bsb3QgZW52ID1cbiAgbGV0IG5vQ291bnRlcnMgPSBmYWxzZSBpblxuICBsZXQgcGxvdF9sZWdlbmQgPVxuICAgIE1vZGVsLm1hcF9vYnNlcnZhYmxlc1xuICAgICAgKGZ1biBvIC0+XG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpIG8pXG4gICAgICBlbnZcbiAgaW5cbiAgeyBwbG90X2xlZ2VuZDsgcGxvdF9zZXJpZXMgPSBbXSB9XG5cbmxldCB3cml0ZV9wbG90IG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJsZWdlbmRcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcpXG4gICAgICBvYiBmLnBsb3RfbGVnZW5kXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzZXJpZXNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSAoSnNvblV0aWwud3JpdGVfb3B0aW9uIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCkpKVxuICAgICAgb2IgZi5wbG90X3Nlcmllc1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCByZWFkX3Bsb3QgcCBsYiA9XG4gIGxldCBwbG90X2xlZ2VuZCwgcGxvdF9zZXJpZXMgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAobCwgcykga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzZXJpZXNcIiB0aGVuXG4gICAgICAgICAgKCBsLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfYXJyYXlcbiAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfb3B0aW9uIFlvanNvbi5CYXNpYy5yZWFkX251bWJlcikpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwibGVnZW5kXCIpIGluXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHNcbiAgICAgICAgKSlcbiAgICAgIChbfHxdLCBbXSkgcCBsYlxuICBpblxuICB7IHBsb3RfbGVnZW5kOyBwbG90X3NlcmllcyB9XG5cbmxldCBzdHJpbmdfb2ZfcGxvdCA9IEpzb25VdGlsLnN0cmluZ19vZl93cml0ZSB3cml0ZV9wbG90XG5cbmxldCBwbG90X29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBwcmludF9wbG90X3NlcCBpc190c3YgZiA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBpc190c3YgdGhlblxuICAgICAgIFwiXFx0XCJcbiAgICAgZWxzZVxuICAgICAgIFwiLFwiKVxuXG5sZXQgcHJpbnRfcGxvdF9sZWdlbmQgfmlzX3RzdiBmIGEgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYUBdQC5cIlxuICAgIChQcC5hcnJheSAocHJpbnRfcGxvdF9zZXAgaXNfdHN2KSAoZnVuIF8gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgeCkpXG4gICAgYVxuXG5sZXQgcHJpbnRfcGxvdF9saW5lIH5pc190c3YgcHAgZiBsID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWFAXUAuXCJcbiAgICAoUHAuYXJyYXkgKHByaW50X3Bsb3Rfc2VwIGlzX3RzdikgKGZ1biBfIC0+IHBwKSlcbiAgICBsXG5cbmxldCBleHBvcnRfcGxvdCB+aXNfdHN2IHBsb3QgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYSVhXCJcbiAgICAocHJpbnRfcGxvdF9sZWdlbmQgfmlzX3RzdilcbiAgICBwbG90LnBsb3RfbGVnZW5kXG4gICAgKFBwLmxpc3QgUHAuZW1wdHlcbiAgICAgICAocHJpbnRfcGxvdF9saW5lIH5pc190c3YgKFBwLm9wdGlvbiAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVlXCIpKSkpXG4gICAgKExpc3QucmV2IHBsb3QucGxvdF9zZXJpZXMpXG5cbmxldCBwcmludF93YXJuaW5nID9wb3MgZiBtc2cgPVxuICBsZXQgcHIgZiAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJXYXJuaW5nOiBAWyV0QF1cIiBtc2cgaW5cbiAgbWF0Y2ggcG9zIHdpdGhcbiAgfCBTb21lIHBvcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdQC5cIiAoTG9jLnByaW50X2Fubm90ZWQgcHIpICgoKSwgcG9zKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXUAuXCIgcHIgKClcblxudHlwZSBmaWxlX2xpbmUgPSB7IGZpbGVfbGluZV9uYW1lOiBzdHJpbmcgb3B0aW9uOyBmaWxlX2xpbmVfdGV4dDogc3RyaW5nIH1cblxudHlwZSB0ID1cbiAgfCBESU4gb2Ygc3RyaW5nICogZGluXG4gIHwgRGVsdGFBY3Rpdml0aWVzIG9mIGludCAqIChpbnQgKiAoZmxvYXQgKiBmbG9hdCkpIGxpc3RcbiAgfCBQbG90IG9mIE5ici50IGFycmF5ICAoKiogTXVzdCBoYXZlIGxlbmd0aCA+PSAxIChhdCBsZWFzdCBbVF0gb3IgW0VdKSAqKVxuICB8IFByaW50IG9mIGZpbGVfbGluZVxuICB8IFRyYWNlU3RlcCBvZiBUcmFjZS5zdGVwXG4gIHwgU25hcHNob3Qgb2Ygc3RyaW5nICogc25hcHNob3RcbiAgfCBMb2cgb2Ygc3RyaW5nXG4gIHwgU3BlY2llcyBvZiBzdHJpbmcgKiBmbG9hdCAqIFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudFxuICB8IFdhcm5pbmcgb2YgTG9jLnQgb3B0aW9uICogKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjcmVhdGVfZmx1eCBlbnYgY291bnRlciBkaW5fa2luZCA9XG4gIGxldCBzaXplID0gTW9kZWwubmJfc3ludGFjdGljX3J1bGVzIGVudiArIDEgaW5cbiAge1xuICAgIERhdGEuZGluX2tpbmQ7XG4gICAgRGF0YS5kaW5fc3RhcnQgPSBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyO1xuICAgIERhdGEuZGluX2hpdHMgPSBBcnJheS5tYWtlIHNpemUgMDtcbiAgICBEYXRhLmRpbl9mbHV4cyA9IEFycmF5Lm1ha2VfbWF0cml4IHNpemUgc2l6ZSAwLjtcbiAgfVxuXG5sZXQgaW5jcl9mbHV4X2ZsdXggb2ZfcnVsZSBvbl9ydWxlIHYgZmx1eCA9XG4gIGZsdXguRGF0YS5kaW5fZmx1eHMuKG9mX3J1bGUpLihvbl9ydWxlKSA8LVxuICAgIGZsdXguRGF0YS5kaW5fZmx1eHMuKG9mX3J1bGUpLihvbl9ydWxlKSArLiB2XG5cbmxldCBpbmNyX2ZsdXhfaGl0IG9mX3J1bGUgZmx1eCA9XG4gIGZsdXguRGF0YS5kaW5faGl0cy4ob2ZfcnVsZSkgPC0gc3VjYyBmbHV4LkRhdGEuZGluX2hpdHMuKG9mX3J1bGUpXG5cbmxldCBzdG9wX2ZsdXggZW52IGNvdW50ZXIgZGluX2RhdGEgPVxuICBsZXQgc2l6ZSA9IE1vZGVsLm5iX3N5bnRhY3RpY19ydWxlcyBlbnYgKyAxIGluXG4gIGxldCBkaW5fcnVsZXMgPVxuICAgIEFycmF5LmluaXQgc2l6ZSAoZnVuIHggLT5cbiAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoTW9kZWwucHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudikgeClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBkaW5fZGF0YS5EYXRhLmRpbl9raW5kIHdpdGhcbiAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gKClcbiAgICB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGkgLT5cbiAgICAgICAgICBBcnJheS5pdGVyaSAoZnVuIGogeCAtPlxuICAgICAgICAgICAgICBkaW5fZGF0YS5EYXRhLmRpbl9mbHV4cy4oaSkuKGopIDwtXG4gICAgICAgICAgICAgICAgKGlmIGRpbl9kYXRhLkRhdGEuZGluX2hpdHMuKGkpID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgeCAvLiBmbG9hdF9vZl9pbnQgZGluX2RhdGEuRGF0YS5kaW5faGl0cy4oaSkpKSlcbiAgICAgICAgZGluX2RhdGEuRGF0YS5kaW5fZmx1eHNcbiAgaW5cbiAgeyBEYXRhLmRpbl9ydWxlczsgRGF0YS5kaW5fZGF0YTsgRGF0YS5kaW5fZW5kID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gICgqIHBhdCAtPiBzZXQgb2Ygcm9vdHMgKilcbiAgb2ZfcGF0dGVybnM6IEludENvbGxlY3Rpb24udCBQYXR0ZXJuLk9ic01hcC50O1xuICAoKiBwYXQgLT4gY2MgLT4gc2V0IG9mIHJvb3RzICopXG4gIG9mX3VuYXJ5X3BhdHRlcm5zOiBNb2RzLkludFNldC50IE1vZHMuSW50TWFwLnQgUGF0dGVybi5PYnNNYXAudDtcbn1cblxudHlwZSBtb2RfY2NzX2NhY2hlID0gKGludCwgdW5pdCkgSGFzaHRibC50XG5cbmxldCBlbXB0eSBlbnYgPVxuICB7XG4gICAgb2ZfcGF0dGVybnMgPVxuICAgICAgUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPlxuICAgICAgICAgIEludENvbGxlY3Rpb24uY3JlYXRlIDY0KTtcbiAgICBvZl91bmFyeV9wYXR0ZXJucyA9XG4gICAgICBQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+IE1vZHMuSW50TWFwLmVtcHR5KTtcbiAgfVxuXG5sZXQgaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiBzdGF0ZSBwYXR0ZXJuIG1hdGNoaW5ncyA9XG4gIGlmIEludENvbGxlY3Rpb24uaXNfZW1wdHkgKFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuKSB0aGVuXG4gICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3BhdHRlcm5zIHBhdHRlcm4gbWF0Y2hpbmdzXG5cbmxldCBhZGRfaW50c2V0X2luX2ludG1hcCBpZCBzZXQgbWFwID1cbiAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgc2V0IHRoZW5cbiAgICBNb2RzLkludE1hcC5yZW1vdmUgaWQgbWFwXG4gIGVsc2VcbiAgICBNb2RzLkludE1hcC5hZGQgaWQgc2V0IG1hcFxuXG4oKiBCcmVhayBhcGFydCBjb25uZWN0ZWQgY29tcG9uZW50OlxuICAgVXBkYXRlIFwicm9vdHMgb2YgdW5hcnkgcGF0dGVybnNcIlxuICAgRWFzeSwgSSBzaG91bGQgbm90IGhhdmUgdG8gcmV3cml0ZSB0aGlzLlxuICAgU2hvdWxkIGNhY2hlcyBiZSBoYW5kbGVkIGF0IHRoaXMgbGV2ZWwgPyBJIGRvIG50IHRoaW5rIHNvXG4gICBhbmQgSSB3aWxsIHByb2JhYmx5IGNsZWFuIHRoaXMuXG4qKVxubGV0IGJyZWFrX2FwYXJ0X2NjIHN0YXRlIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAob3JpZ2luX2NjLCBuZXdfY2MpIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgbW9kX2Nvbm4gLT5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uIG5ld19jYyAoKSBpblxuICAgICAgICBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm4gb3JpZ2luX2NjICgpXG4gICAgaW5cbiAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgKGZ1biBjY19pZCBjY19tYXAgLT5cbiAgICAgICAgbGV0IG9zZXQgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBvcmlnaW5fY2MgY2NfbWFwXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5vdCAoTW9kcy5JbnRTZXQuaXNfZW1wdHkgb3NldCkgdGhlbiAoXG4gICAgICAgICAgbGV0IG5zZXQsIG9zZXQnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LnBhcnRpdGlvblxuICAgICAgICAgICAgICAoZnVuIHggLT4gRWRnZXMuZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgeCBlZGdlcyA9IFNvbWUgbmV3X2NjKVxuICAgICAgICAgICAgICBvc2V0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnMgY2NfaWRcbiAgICAgICAgICAgIChhZGRfaW50c2V0X2luX2ludG1hcCBuZXdfY2MgbnNldFxuICAgICAgICAgICAgICAgKGFkZF9pbnRzZXRfaW5faW50bWFwIG9yaWdpbl9jYyBvc2V0JyBjY19tYXApKVxuICAgICAgICApKVxuICAgICAgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnNcblxuKCogU2FtZTogbm90IHZlcnkgc3VidGxlLiBZb3UganVzdCBwcm9wYWdhdGUuICopXG5sZXQgbWVyZ2VfY2Mgc3RhdGUgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChjYzEsIGNjMikgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBtb2RfY29ubmVjdGl2aXR5IC0+XG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubmVjdGl2aXR5IGNjMiAoKSBpblxuICAgICAgICBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjYzEgKClcbiAgICBpblxuICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAoZnVuIGNjX2lkIGNjX21hcCAtPlxuICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5wb3AgY2MyIGNjX21hcCB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyAtPiAoKVxuICAgICAgICB8IFNvbWUgc2V0MiwgY2NfbWFwJyAtPlxuICAgICAgICAgIGxldCBzZXQxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjMSBjY19tYXAgaW5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnMgY2NfaWRcbiAgICAgICAgICAgIChhZGRfaW50c2V0X2luX2ludG1hcCBjYzEgKE1vZHMuSW50U2V0LnVuaW9uIHNldDEgc2V0MikgY2NfbWFwJykpXG4gICAgICBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJuc1xuXG4oKiBNb3N0IG9mIHRoZSBjb2RlIGlzIHRvIGRlYWwgd2l0aCB1bmFyeV9pbnN0YW5jZXMuXG4gICBEb2VzIG5vdGhpbmcgZmFuY3kuXG4gICBBbHNvIHRha2VzIHRoZSBjYWNoZSBhcyBhbiBhcmd1bWVudCAqKVxubGV0IHVwZGF0ZV9yb290cyBzdGF0ZSBpc19hZGQgdW5hcnlfY2NzIGVkZ2VzIG1vZF9jb25uZWN0aXZpdHkgcGF0dGVybiByb290ID1cbiAgbGV0IHZhID0gUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3BhdHRlcm5zIHBhdHRlcm4gaW5cbiAgbGV0ICgpID1cbiAgICAoaWYgaXNfYWRkIHRoZW5cbiAgICAgICBJbnRDb2xsZWN0aW9uLmFkZFxuICAgICBlbHNlXG4gICAgICAgSW50Q29sbGVjdGlvbi5yZW1vdmUpXG4gICAgICByb290IHZhXG4gIGluXG4gIGlmIFBhdHRlcm4uU2V0Lm1lbSBwYXR0ZXJuIHVuYXJ5X2NjcyB0aGVuIChcbiAgICBsZXQgY2NfbWFwID0gUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdHRlcm4gaW5cbiAgICBsZXQgY2NfaWQgPVxuICAgICAgKCogVGhlIG9ubHkgY2FzZSB3aGVyZSBnZXRfY29ubmVjdGVkX2NvbXBvbmVudCBpcyBOb25lIGlzIHdoZW5cbiAgICAgICAgIFtub3QgaXNfYWRkXSBhbmQgW3Jvb3RdIGhhcyBqdXN0IGJlZW4gZXJhc2VkISBCdXQsIGp1c3RcbiAgICAgICAgIGJlZm9yZSBiZWluZyBlcmFzZWQsIHdlIGtub3cgdGhhdCBhbiBhZ2VudCBpcyBpbiBpdHMgb3duXG4gICAgICAgICBjb25uZWN0ZWQgY29tcG9uZW50Li4uICopXG4gICAgICBPcHRpb25fdXRpbC51bnNvbWUgcm9vdCAoRWRnZXMuZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgcm9vdCBlZGdlcylcbiAgICBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubmVjdGl2aXR5IGNjX2lkICgpIGluXG4gICAgbGV0IHNldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjY19pZCBjY19tYXAgaW5cbiAgICBsZXQgc2V0JyA9XG4gICAgICAoaWYgaXNfYWRkIHRoZW5cbiAgICAgICAgIE1vZHMuSW50U2V0LmFkZFxuICAgICAgIGVsc2VcbiAgICAgICAgIE1vZHMuSW50U2V0LnJlbW92ZSlcbiAgICAgICAgcm9vdCBzZXRcbiAgICBpblxuICAgIGxldCBjY19tYXAnID0gYWRkX2ludHNldF9pbl9pbnRtYXAgY2NfaWQgc2V0JyBjY19tYXAgaW5cbiAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnMgcGF0dGVybiBjY19tYXAnXG4gIClcblxubGV0IG51bWJlciByIHBhdCA9IEludENvbGxlY3Rpb24uc2l6ZSAoUGF0dGVybi5PYnNNYXAuZ2V0IHIub2ZfcGF0dGVybnMgcGF0KVxuXG5sZXQgcHJpbnRfaW5qZWN0aW9ucyB+bm9Db3VudGVycyA/ZG9tYWluIGYgcm9vdHNfb2ZfcGF0dGVybnMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCJcbiAgICAoUGF0dGVybi5PYnNNYXAucHJpbnQgUHAuc3BhY2UgKGZ1biBwYXR0ZXJuIGYgcm9vdHMgLT5cbiAgICAgICAgIGlmIEludENvbGxlY3Rpb24uc2l6ZSByb290cyA+IDAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFsjIEBbJWFAXSA9PT5AIEBbJWFAXUBdXCJcbiAgICAgICAgICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOnRydWUpXG4gICAgICAgICAgICAgcGF0dGVybiBJbnRDb2xsZWN0aW9uLnByaW50IHJvb3RzKSlcbiAgICByb290c19vZl9wYXR0ZXJuc1xuXG5sZXQgcHJpbnRfdW5hcnlfaW5qZWN0aW9ucyB+bm9Db3VudGVycyA/ZG9tYWluIGYgcm9vdHNfb2ZfcGF0dGVybnMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92PiVhQF1cIlxuICAgIChQYXR0ZXJuLk9ic01hcC5wcmludCBQcC5zcGFjZSAoZnVuIHBhdHRlcm4gZiByb290X21hcHMgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyMgQFslYUBdID09PkAgQFslYUBdQF1cIlxuICAgICAgICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOnRydWUpXG4gICAgICAgICAgIHBhdHRlcm5cbiAgICAgICAgICAgKFBwLnNldCBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5zcGFjZSAoZnVuIGYgKF9jY19pZCwgcm9vdHMpIC0+XG4gICAgICAgICAgICAgICAgTW9kcy5JbnRTZXQucHJpbnQgZiByb290cykpXG4gICAgICAgICAgIHJvb3RfbWFwcykpXG4gICAgcm9vdHNfb2ZfcGF0dGVybnNcblxubGV0IGRlYnVnX3ByaW50IGYgc3RhdGUgPVxuICBsZXQgbm9Db3VudGVycyA9IHRydWUgaW5cbiAgbGV0IGRvbWFpbiA9IE5vbmUgaW5cbiAgbGV0ICgpID0gcHJpbnRfaW5qZWN0aW9ucyB+bm9Db3VudGVycyA/ZG9tYWluIGYgc3RhdGUub2ZfcGF0dGVybnMgaW5cbiAgcHJpbnRfdW5hcnlfaW5qZWN0aW9ucyB+bm9Db3VudGVycyA/ZG9tYWluIGYgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnNcblxuKCogVXNlZnVsIHNob3J0Y3V0cyAqKVxuXG5sZXQgb2ZfcGF0dGVybiBwYXRfaWQgc3RhdGUgPVxuICB0cnkgUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3BhdHRlcm5zIHBhdF9pZFxuICB3aXRoIE5vdF9mb3VuZCAtPiBJbnRDb2xsZWN0aW9uLmNyZWF0ZSAxXG5cbmxldCBvZl91bmFyeV9wYXR0ZXJuIHBhdF9pZCBzdGF0ZSA9XG4gIHRyeSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnMgcGF0X2lkXG4gIHdpdGggTm90X2ZvdW5kIC0+IE1vZHMuSW50TWFwLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gICgqIEZvciBjb3VudGVyZmFjdHVhbCBzaW11bGF0aW9uLCB0aGVyZSB3b3VsZCBiZSB0d28gb2YgdGhlc2UuICopXG4gIHJvb3RzOiBSb290cy50O1xufVxuXG50eXBlIG1lc3NhZ2UgPSB1bml0XG5cbmxldCByZWNlaXZlX21lc3NhZ2UgXyBzdCA9IHN0XG5sZXQgZW1wdHkgZW52ID0geyByb290cyA9IFJvb3RzLmVtcHR5IGVudiB9XG5cbmxldCBpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlIHBhdHRlcm4gbWF0Y2hpbmdzID1cbiAgUm9vdHMuaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiBzdGF0ZS5yb290cyBwYXR0ZXJuIG1hdGNoaW5nc1xuXG5sZXQgYnJlYWtfYXBhcnRfY2Mgc3RhdGUgZWRnZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzID1cbiAgUm9vdHMuYnJlYWtfYXBhcnRfY2Mgc3RhdGUucm9vdHMgZWRnZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzXG5cbmxldCBtZXJnZV9jYyBzdGF0ZSA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBjY3MgPVxuICBSb290cy5tZXJnZV9jYyBzdGF0ZS5yb290cyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBjY3NcblxubGV0IHVwZGF0ZV9yb290cyBzdGF0ZSBpc19hZGQgdW5hcnlfY2NzIGVkZ2VzIG1vZF9jb25uZWN0aXZpdHkgcGF0dGVybiByb290ID1cbiAgUm9vdHMudXBkYXRlX3Jvb3RzIHN0YXRlLnJvb3RzIGlzX2FkZCB1bmFyeV9jY3MgZWRnZXMgbW9kX2Nvbm5lY3Rpdml0eSBwYXR0ZXJuXG4gICAgcm9vdFxuXG4oKiogezIgQ2hlY2tpbmcgaW5zdGFuY2VzfSAqKVxuXG5sZXQgaXNfdmFsaWQgc3RhdGUgcGF0IHJvb3QgPVxuICBJbnRDb2xsZWN0aW9uLm1lbSByb290IChSb290cy5vZl9wYXR0ZXJuIHBhdCBzdGF0ZS5yb290cylcblxuKCoqIHsyIENvbXB1dGUgdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgfSAqKVxuXG5sZXQgbnVtYmVyX29mX2luc3RhbmNlcyA/cnVsZV9pZDpfIHN0IHBhdHMgPVxuICBBcnJheS5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyBwYXR0ZXJuIC0+IGFjYyAqIFJvb3RzLm51bWJlciBzdC5yb290cyBwYXR0ZXJuKVxuICAgIDEgcGF0c1xuXG5sZXQgbnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyA/cnVsZV9pZDpfIHN0IChwYXQxLCBwYXQyKSA9XG4gIGxldCBtYXAxID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQxIHN0LnJvb3RzIGluXG4gIGxldCBtYXAyID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQyIHN0LnJvb3RzIGluXG4gIGZ1biBjYyAtPlxuICAgIGxldCBzZXQxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDEgaW5cbiAgICBsZXQgc2V0MiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAyIGluXG4gICAgTW9kcy5JbnRTZXQuc2l6ZSBzZXQxICogTW9kcy5JbnRTZXQuc2l6ZSBzZXQyXG5cbigqIHs2IFBpY2sgaW5zdGFuY2VzIH0gKilcblxubGV0IHBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MgP3J1bGVfaWQ6XyBzdCByYW5kb21fc3RhdGUgKHBhdDEsIHBhdDIpID1cbiAgbGV0IG1hcDEgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDEgc3Qucm9vdHMgaW5cbiAgbGV0IG1hcDIgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDIgc3Qucm9vdHMgaW5cbiAgZnVuIGNjIC0+XG4gICAgbGV0IHJvb3QxID1cbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoLTEpXG4gICAgICAgIChNb2RzLkludFNldC5yYW5kb20gcmFuZG9tX3N0YXRlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMSkpXG4gICAgaW5cbiAgICBsZXQgcm9vdDIgPVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lICgtMSlcbiAgICAgICAgKE1vZHMuSW50U2V0LnJhbmRvbSByYW5kb21fc3RhdGVcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAyKSlcbiAgICBpblxuICAgIHJvb3QxLCByb290MlxuXG4oKiBXZSBwcm92aWRlIGEgY3VzdG9tIG1vbmFkaWMgZm9sZCBmdW5jdGlvbiB0byBiZVxuICAgbGF6eSBpbiBkcmF3aW5nIHJhbmRvbSBudW1iZXJzICopXG5sZXQgZm9sZF9waWNrZWRfaW5zdGFuY2UgP3J1bGVfaWQ6XyBzdCByYW5kb21fc3RhdGUgcGF0cyB+aW5pdCBmID1cbiAgbGV0IHJlYyBhdXggaSBhY2MgPVxuICAgIGlmIGkgPj0gQXJyYXkubGVuZ3RoIHBhdHMgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBhY2MgLT5cbiAgICAgICAgbGV0IHBhdCA9IHBhdHMuKGkpIGluXG4gICAgICAgIGxldCByb290X29wdCA9XG4gICAgICAgICAgSW50Q29sbGVjdGlvbi5yYW5kb20gcmFuZG9tX3N0YXRlIChSb290cy5vZl9wYXR0ZXJuIHBhdCBzdC5yb290cylcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHJvb3Rfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHJvb3QgLT5cbiAgICAgICAgICBsZXQgYWNjID0gZiBpIHBhdCByb290IGFjYyBpblxuICAgICAgICAgIGF1eCAoaSArIDEpIGFjYylcbiAgICApXG4gIGluXG4gIGF1eCAwIChTb21lIGluaXQpXG5cbigqKiB7NiBFbnVtZXJhdGUgaW5zdGFuY2VzfSAqKVxuXG5sZXQgcHJvY2Vzc19leGNwID1cbiAgbGV0IG5vX25vX25vIF8gPSBmYWxzZSBpblxuICBmdW4gcGF0cyAtPiBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub19ub19ubywgLTFcbiAgICB8IFNvbWUgKHBhdCwgcm9vdCkgLT5cbiAgICAgIGxldCBzZW50X3RvX2ZpeGVkX3Jvb3QgaiA9IFBhdHRlcm4uaXNfZXF1YWxfY2Fub25pY2FscyBwYXQgcGF0cy4oaikgaW5cbiAgICAgIHNlbnRfdG9fZml4ZWRfcm9vdCwgcm9vdFxuXG4oKiBUaGlzIGlzIHRoZSBsZWdpdGltYXRlIGFuZCBlZmZpY2llbnQgdmVyc2lvbi4gKilcbmxldCBmb2xkX2luc3RhbmNlcyA/cnVsZV9pZDpfID9leGNwIHN0IHBhdHMgfmluaXQgZiA9XG4gIGxldCBzZW50X3RvX2V4Y3Bfcm9vdCwgZXhjcF9yb290ID0gcHJvY2Vzc19leGNwIHBhdHMgZXhjcCBpblxuXG4gIGxldCBuID0gQXJyYXkubGVuZ3RoIHBhdHMgaW5cbiAgbGV0IHRhYiA9IEFycmF5Lm1ha2UgbiAoLTEpIGluXG4gIGxldCByZWMgYXV4IGkgYWNjID1cbiAgICBpZiBpID49IG4gdGhlblxuICAgICAgZiB0YWIgYWNjXG4gICAgZWxzZSBpZiBzZW50X3RvX2V4Y3Bfcm9vdCBpIHRoZW4gKFxuICAgICAgdGFiLihpKSA8LSBleGNwX3Jvb3Q7XG4gICAgICBhdXggKGkgKyAxKSBhY2NcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGl0aF9yb290cyA9IFJvb3RzLm9mX3BhdHRlcm4gcGF0cy4oaSkgc3Qucm9vdHMgaW5cbiAgICAgIEludENvbGxlY3Rpb24uZm9sZFxuICAgICAgICAoZnVuIHIgYWNjIC0+XG4gICAgICAgICAgdGFiLihpKSA8LSByO1xuICAgICAgICAgIGF1eCAoaSArIDEpIGFjYylcbiAgICAgICAgaXRoX3Jvb3RzIGFjY1xuICAgIClcbiAgaW5cbiAgYXV4IDAgaW5pdFxuXG5sZXQgbWFwX2ZvbGQyIG1hcDEgbWFwMiB+aW5pdCBmID1cbiAgTW9kcy5JbnRNYXAubW9uYWRpY19mb2xkMl9zcGFyc2UgKCkgKClcbiAgICAoZnVuICgpICgpIGtleSB4MSB4MiBhY2MgLT4gKCksIGYga2V5IHgxIHgyIGFjYylcbiAgICBtYXAxIG1hcDIgaW5pdFxuICB8PiBzbmRcblxubGV0IGZvbGRfdW5hcnlfaW5zdGFuY2VzID9ydWxlX2lkOl8gc3QgKHBhdDEsIHBhdDIpIH5pbml0IGYgPVxuICBsZXQgbWFwMSA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MSBzdC5yb290cyBpblxuICBsZXQgbWFwMiA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MiBzdC5yb290cyBpblxuICBtYXBfZm9sZDIgbWFwMSBtYXAyIH5pbml0IChmdW4gXyBzZXQxIHNldDIgYWNjIC0+XG4gICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgIChmdW4gcm9vdDEgYWNjIC0+XG4gICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZCAoZnVuIHJvb3QyIGFjYyAtPiBmIChyb290MSwgcm9vdDIpIGFjYykgc2V0MiBhY2MpXG4gICAgICAgIHNldDEgYWNjKVxuXG4oKiogezYgRGVidWcgZnVuY3Rpb25zfSAqKVxuXG5sZXQgZGVidWdfcHJpbnQgZiBzdGF0ZSA9IFJvb3RzLmRlYnVnX3ByaW50IGYgc3RhdGUucm9vdHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCB2YWx1ZV9zdGF0ZV9hbGdfb3AgY291bnRlciA/KHRpbWUgPSBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyKSA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuQ1BVVElNRSAtPiBOYnIuRiAoU3lzLnRpbWUgKCkpXG4gIHwgT3BlcmF0b3IuVElNRV9WQVIgLT4gTmJyLkYgdGltZVxuICB8IE9wZXJhdG9yLkVWRU5UX1ZBUiAtPiBOYnIuSSAoQ291bnRlci5jdXJyZW50X2V2ZW50IGNvdW50ZXIpXG4gIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgLT4gTmJyLkkgKENvdW50ZXIubmJfbnVsbF9ldmVudCBjb3VudGVyKVxuICB8IE9wZXJhdG9yLkVNQVhfVkFSIC0+XG4gICAgKG1hdGNoIENvdW50ZXIubWF4X2V2ZW50cyBjb3VudGVyIHdpdGhcbiAgICB8IFNvbWUgbiAtPiBOYnIuSSBuXG4gICAgfCBOb25lIC0+IE5ici5GIGluZmluaXR5KVxuICB8IE9wZXJhdG9yLlRNQVhfVkFSIC0+XG4gICAgKG1hdGNoIENvdW50ZXIubWF4X3RpbWUgY291bnRlciB3aXRoXG4gICAgfCBTb21lIHQgLT4gTmJyLkYgdFxuICAgIHwgTm9uZSAtPiBOYnIuRiBpbmZpbml0eSlcblxudHlwZSAoXywgXykgc3RhY2sgPVxuICB8IFJFVFVSTiA6ICgnYSwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19BTEcgOlxuICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcCAqIFByaW1pdGl2ZXMuYWxnX2V4cHIgKiAoTmJyLnQsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0NPTVAgOlxuICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcCAqIFByaW1pdGl2ZXMuYWxnX2V4cHIgKiAoYm9vbCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoTmJyLnQsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfSUYgOlxuICAgICAgUHJpbWl0aXZlcy5hbGdfZXhwciAqIFByaW1pdGl2ZXMuYWxnX2V4cHIgKiAoTmJyLnQsICdhKSBzdGFja1xuICAgICAgLT4gKGJvb2wsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfQk9PTCA6XG4gICAgICBPcGVyYXRvci5iaW5fYm9vbF9vcFxuICAgICAgKiAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2xcbiAgICAgICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKGJvb2wsICdhKSBzdGFja1xuICB8IFRPX0NPTVBVVEVfQUxHIDpcbiAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3AgKiBOYnIudCAqIChOYnIudCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoTmJyLnQsICdhKSBzdGFja1xuICB8IFRPX0NPTVBVVEVfQ09NUCA6XG4gICAgICBPcGVyYXRvci5jb21wYXJlX29wICogTmJyLnQgKiAoYm9vbCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoTmJyLnQsICdhKSBzdGFja1xuICB8IFRPX0NPTVBVVEVfVU4gOiBPcGVyYXRvci51bl9hbGdfb3AgKiAoTmJyLnQsICdhKSBzdGFjayAtPiAoTmJyLnQsICdhKSBzdGFja1xuICB8IFRPX0NPTVBVVEVfQk9PTCA6IE9wZXJhdG9yLnVuX2Jvb2xfb3AgKiAoYm9vbCwgJ2EpIHN0YWNrIC0+IChib29sLCAnYSkgc3RhY2tcblxubGV0IHJlYyBleGVjX2FsZyA6XG4gICAgdHlwZSBhLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmUgLT5cbiAgICAoTmJyLnQsIGEpIHN0YWNrIC0+XG4gICAgYSA9XG4gZnVuIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnIHNrIC0+XG4gIG1hdGNoIGFsZyB3aXRoXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0VYRUNfQUxHIChvcCwgYiwgc2spKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIChhLCBfKSkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGEgKFRPX0NPTVBVVEVfVU4gKG9wLCBzaykpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIG9wIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAodmFsdWVfc3RhdGVfYWxnX29wIGNvdW50ZXIgP3RpbWUgb3ApXG4gICAgICBza1xuICB8IEFsZ19leHByLkFMR19WQVIgaSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKGdldF9hbGcgaSkgc2tcbiAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBjY3MgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKGdldF9taXggY2NzKSBza1xuICB8IEFsZ19leHByLlRPS0VOX0lEIGkgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKGdldF90b2sgaSkgc2tcbiAgfCBBbGdfZXhwci5DT05TVCBuIC0+IHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBuIHNrXG4gIHwgQWxnX2V4cHIuSUYgKChjb25kLCBfKSwgKHllcywgXyksIChubywgXykpIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgY29uZFxuICAgICAgKFRPX0VYRUNfSUYgKHllcywgbm8sIHNrKSlcbiAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChcIkNhbm5vdCBldmFsdXRhdGUgZGVyaXZhdGl2ZXMgaW4gZXhwcmVzc2lvblwiLCBMb2MuZHVtbXkpKVxuXG5hbmQgZXhlY19ib29sIDpcbiAgICB0eXBlIGEuXG4gICAgQ291bnRlci50IC0+XG4gICAgP3RpbWU6ZmxvYXQgLT5cbiAgICBnZXRfYWxnOihpbnQgLT4gUHJpbWl0aXZlcy5hbGdfZXhwcikgLT5cbiAgICBnZXRfbWl4OihQYXR0ZXJuLmlkIGFycmF5IGxpc3QgLT4gTmJyLnQpIC0+XG4gICAgZ2V0X3RvazooaW50IC0+IE5ici50KSAtPlxuICAgIChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbCAtPlxuICAgIChib29sLCBhKSBzdGFjayAtPlxuICAgIGEgPVxuIGZ1biBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgc2sgLT5cbiAgbWF0Y2ggZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuVFJVRSAtPiB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgdHJ1ZSBza1xuICB8IEFsZ19leHByLkZBTFNFIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGZhbHNlIHNrXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIChhLCBfKSkgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhXG4gICAgICAoVE9fQ09NUFVURV9CT09MIChvcCwgc2spKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0VYRUNfQk9PTCAob3AsIGIsIHNrKSlcbiAgfCBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhXG4gICAgICAoVE9fRVhFQ19DT01QIChvcCwgYiwgc2spKVxuXG5hbmQgd2l0aF92YWx1ZSA6XG4gICAgdHlwZSBhIGIuXG4gICAgQ291bnRlci50IC0+XG4gICAgP3RpbWU6ZmxvYXQgLT5cbiAgICBnZXRfYWxnOihpbnQgLT4gUHJpbWl0aXZlcy5hbGdfZXhwcikgLT5cbiAgICBnZXRfbWl4OihQYXR0ZXJuLmlkIGFycmF5IGxpc3QgLT4gTmJyLnQpIC0+XG4gICAgZ2V0X3RvazooaW50IC0+IE5ici50KSAtPlxuICAgIGEgLT5cbiAgICAoYSwgYikgc3RhY2sgLT5cbiAgICBiID1cbiBmdW4gY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBuIC0+IGZ1bmN0aW9uXG4gIHwgUkVUVVJOIC0+IG5cbiAgfCBUT19FWEVDX0FMRyAob3AsIGFsZywgc2spIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGdcbiAgICAgIChUT19DT01QVVRFX0FMRyAob3AsIG4sIHNrKSlcbiAgfCBUT19DT01QVVRFX0FMRyAob3AsIG4xLCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgIChOYnIub2ZfYmluX2FsZ19vcCBvcCBuMSBuKVxuICAgICAgc2tcbiAgfCBUT19DT01QVVRFX1VOIChvcCwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChOYnIub2ZfdW5fYWxnX29wIG9wIG4pXG4gICAgICBza1xuICB8IFRPX0VYRUNfQ09NUCAob3AsIGFsZywgc2spIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGdcbiAgICAgIChUT19DT01QVVRFX0NPTVAgKG9wLCBuLCBzaykpXG4gIHwgVE9fQ09NUFVURV9DT01QIChvcCwgbjEsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKE5ici5vZl9jb21wYXJlX29wIG9wIG4xIG4pXG4gICAgICBza1xuICB8IFRPX0VYRUNfSUYgKHllcywgbm8sIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgIChpZiBuIHRoZW5cbiAgICAgICAgIHllc1xuICAgICAgIGVsc2VcbiAgICAgICAgIG5vKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0JPT0wgKE9wZXJhdG9yLk9SLCBfLCBzaykgd2hlbiBuIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIHRydWUgc2tcbiAgfCBUT19FWEVDX0JPT0wgKE9wZXJhdG9yLkFORCwgXywgc2spIHdoZW4gbm90IG4gLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZmFsc2Ugc2tcbiAgfCBUT19FWEVDX0JPT0wgKChPcGVyYXRvci5PUiB8IE9wZXJhdG9yLkFORCksIGV4cHIsIHNrKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgc2tcbiAgfCBUT19DT01QVVRFX0JPT0wgKE9wZXJhdG9yLk5PVCwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChub3Qgbikgc2tcblxubGV0IHZhbHVlX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByID1cbiAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciBSRVRVUk5cblxubGV0IHZhbHVlX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyA9XG4gIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnIFJFVFVSTlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwcmVjb21wdXRlZCA9IHtcbiAgdW5hcnlfcGF0dGVybnM6IFBhdHRlcm4uU2V0LnQ7XG4gIGFsd2F5c19vdXRkYXRlZDogT3BlcmF0b3IuRGVwU2V0LnQ7XG59XG5cbm1vZHVsZSBNYWtlIChJbnN0YW5jZXMgOiBJbnN0YW5jZXNfc2lnLlMpID0gc3RydWN0XG4gIHR5cGUgZXZlbnRfcHJlZGljYXRlID1cbiAgICBpbnQgb3B0aW9uIC0+XG4gICAgTWF0Y2hpbmcudCAtPlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgLT5cbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgLT5cbiAgICBib29sXG5cbiAgdHlwZSBpbXBlcmF0aXZlX2ZpZWxkcyA9IHtcbiAgICBwcmVjb21wdXRlZDogcHJlY29tcHV0ZWQ7XG4gICAgaW5zdGFuY2VzOiBJbnN0YW5jZXMudDtcbiAgICB2YXJpYWJsZXNfY2FjaGU6IE5ici50IGFycmF5O1xuICAgIHZhcmlhYmxlc19vdmVyd3JpdGU6IFByaW1pdGl2ZXMuYWxnX2V4cHIgb3B0aW9uIGFycmF5O1xuICAgIHRva2VuczogTmJyLnQgYXJyYXk7XG4gICAgYWN0aXZpdGllczogUmFuZG9tX3RyZWUudHJlZTtcbiAgICAgICAgKCogcGFpciBudW1iZXJzIGFyZSByZWd1bGFyIHJ1bGUsIG9kZCB1bmFyeSBpbnN0YW5jZXMgKilcbiAgICByYW5kb21fc3RhdGU6IFJhbmRvbS5TdGF0ZS50O1xuICAgIHN0b3J5X21hY2hpbmVyeTpcbiAgICAgIChzdHJpbmcgKCpvYnMgbmFtZSopXG4gICAgICAqIFBhdHRlcm4uaWQgYXJyYXlcbiAgICAgICogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0KVxuICAgICAgbGlzdFxuICAgICAgUGF0dGVybi5PYnNNYXAudFxuICAgICAgKCpjdXJyZW50bHkgdHJhY2tlZCBjY3MgKilcbiAgICAgIG9wdGlvbjtcbiAgICBzcGVjaWVzOlxuICAgICAgKHN0cmluZyAoKmZpbGVuYW1lKilcbiAgICAgICogUGF0dGVybi5pZCBhcnJheSAoKndpdGggb25seSBvbmUgcGF0dGVybiopXG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdClcbiAgICAgIGxpc3RcbiAgICAgIFBhdHRlcm4uT2JzTWFwLnQ7XG4gICAgY2hhbmdlZF9jb25uZWN0aXZpdHk6IChpbnQsIHVuaXQpIEhhc2h0YmwudDtcbiAgICAgICAgKCogc2V0IG9mIGNjcyB0aGF0IGhhdmUgY2hhbmdlZCAqKVxuICB9XG5cbiAgdHlwZSBpbnN0YW5jZSA9XG4gICAgYm9vbFxuICAgICogaW50XG4gICAgKiAoS2FwcGFfdGVybXMuTWF0Y2hpbmcudCAqIGludCBsaXN0ICogS2FwcGFfc2l0ZV9ncmFwaHMuRWRnZXMucGF0aCBvcHRpb24pXG4gICAgICBvcHRpb25cblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSBvdXRkYXRlZDogYm9vbDtcbiAgICAoKiBXaXRob3V0IHJlY3Rhbmd1bGFyIGFwcHJveGltYXRpb24gKilcbiAgICBtYXRjaGluZ3Nfb2ZfcnVsZTogKE1hdGNoaW5nLnQgKiBpbnQgbGlzdCkgbGlzdCBNb2RzLkludE1hcC50O1xuICAgIHVuYXJ5X2NhbmRpZGF0ZXM6XG4gICAgICAoKiBydWxlX2lkIC0+IGxpc3Qgb2YgbWF0Y2hpbmdzICopXG4gICAgICAoTWF0Y2hpbmcudCAqIGludCBsaXN0ICogRWRnZXMucGF0aCBvcHRpb24pIGxpc3QgTW9kcy5JbnRNYXAudDtcbiAgICAoKiBydWxlIC0+IGNjIC0+IG51bWJlcl9pbnN0YW5jZXMgKGFjdGl2aXR5IHBlciBjYykgKilcbiAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2M6IFZhbE1hcC50IE1vZHMuSW50TWFwLnQ7XG4gICAgZWRnZXM6IEVkZ2VzLnQ7XG4gICAgaW1wOiBpbXBlcmF0aXZlX2ZpZWxkcztcbiAgICBvdXRkYXRlZF9lbGVtZW50czogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgZXZlbnRzX3RvX2Jsb2NrOiBldmVudF9wcmVkaWNhdGUgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGdldF9lZGdlcyBzdCA9IHN0LmVkZ2VzXG5cbiAgbGV0IHN1bV9pbnN0YW5jZXNfbnVtYmVycyA/cnVsZV9pZCBpbnN0cyBsID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhYyB4IC0+IGFjICsgSW5zdGFuY2VzLm51bWJlcl9vZl9pbnN0YW5jZXMgP3J1bGVfaWQgaW5zdHMgeClcbiAgICAgIDAgbFxuXG4gIHR5cGUgcmVzdWx0ID0gQ2xhc2ggfCBDb3JyZWN0ZWQgfCBCbG9ja2VkIHwgU3VjY2VzcyBvZiB0XG5cbiAgbGV0IHJhd19nZXRfYWxnIGVudiBvdmVyd3IgaSA9XG4gICAgbWF0Y2ggb3ZlcndyLihpKSB3aXRoXG4gICAgfCBOb25lIC0+IE1vZGVsLmdldF9hbGcgZW52IGlcbiAgICB8IFNvbWUgZXhwciAtPiBleHByXG5cbiAgbGV0IHZhbHVlX2Jvb2wgY291bnRlciBzdGF0ZSBleHByID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBFeHByX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgY291bnRlclxuICAgICAgfmdldF9hbGc6KGZ1biBpIC0+IEFsZ19leHByLkNPTlNUIHN0YXRlLmltcC52YXJpYWJsZXNfY2FjaGUuKGkpKVxuICAgICAgfmdldF9taXg6KGZ1biBwYXR0ZXJucyAtPlxuICAgICAgICBOYnIuSSAoc3VtX2luc3RhbmNlc19udW1iZXJzIHN0YXRlLmltcC5pbnN0YW5jZXMgcGF0dGVybnMpKVxuICAgICAgfmdldF90b2s6KGZ1biBpIC0+IHN0YXRlLmltcC50b2tlbnMuKGkpKVxuICAgICAgZXhwclxuXG4gIGxldCB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSBhbGcgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIEV4cHJfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXJcbiAgICAgIH5nZXRfYWxnOihmdW4gaSAtPiBBbGdfZXhwci5DT05TVCBzdGF0ZS5pbXAudmFyaWFibGVzX2NhY2hlLihpKSlcbiAgICAgIH5nZXRfbWl4OihmdW4gcGF0dGVybnMgLT5cbiAgICAgICAgTmJyLkkgKHN1bV9pbnN0YW5jZXNfbnVtYmVycyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHBhdHRlcm5zKSlcbiAgICAgIH5nZXRfdG9rOihmdW4gaSAtPiBzdGF0ZS5pbXAudG9rZW5zLihpKSlcbiAgICAgIGFsZ1xuXG4gIGxldCByZWNvbXB1dGUgZW52IGNvdW50ZXIgc3RhdGUgaSA9XG4gICAgc3RhdGUuaW1wLnZhcmlhYmxlc19jYWNoZS4oaSkgPC1cbiAgICAgIHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIChyYXdfZ2V0X2FsZyBlbnYgc3RhdGUuaW1wLnZhcmlhYmxlc19vdmVyd3JpdGUgaSlcblxuICBsZXQgYWN0aXZpdHkgc3RhdGUgPSBSYW5kb21fdHJlZS50b3RhbCBzdGF0ZS5pbXAuYWN0aXZpdGllc1xuICBsZXQgZ2V0X2FjdGl2aXR5IHJ1bGUgc3RhdGUgPSBSYW5kb21fdHJlZS5maW5kIHJ1bGUgc3RhdGUuaW1wLmFjdGl2aXRpZXNcbiAgbGV0IHNldF9hY3Rpdml0eSBydWxlIHYgc3RhdGUgPSBSYW5kb21fdHJlZS5hZGQgcnVsZSB2IHN0YXRlLmltcC5hY3Rpdml0aWVzXG4gIGxldCBwaWNrX3J1bGUgcnQgc3RhdGUgPSBmc3QgKFJhbmRvbV90cmVlLnJhbmRvbSBydCBzdGF0ZS5pbXAuYWN0aXZpdGllcylcblxuICBsZXQgaW5pdGlhbF9hY3Rpdml0eSB+b3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSA9XG4gICAgTW9kZWwuZm9sZF9ydWxlc1xuICAgICAgKGZ1biBpICgpIHJ1bGUgLT5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyA9IDAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE5ici50b19mbG9hdCBAQCB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSAoZnN0IHJ1bGUuUHJpbWl0aXZlcy5yYXRlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgICAoIFNvbWUgKHNuZCBydWxlLlByaW1pdGl2ZXMucmF0ZSksXG4gICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cblxuICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlByb2JsZW1hdGljIHJ1bGUgcmF0ZSByZXBsYWNlZCBieSAwXCI7XG4gICAgICAgICAgICAgICAgICAgICBLYXBwYV9wcmludGVyLmVsZW1lbnRhcnlfcnVsZSB+ZW52IH5ub0NvdW50ZXJzIGYgcnVsZSApKVxuICAgICAgICAgIHwgU29tZSByYXRlIC0+IHNldF9hY3Rpdml0eSAoMiAqIGkpIHJhdGUgc3RhdGVcbiAgICAgICAgKSlcbiAgICAgICgpIGVudlxuXG4gIGxldCBlbXB0eSB+b3V0cHV0cyB+d2l0aF90cmFjZSByYW5kb21fc3RhdGUgZW52IGNvdW50ZXIgPVxuICAgIGxldCBhY3Rpdml0eV90cmVlID0gUmFuZG9tX3RyZWUuY3JlYXRlICgyICogTW9kZWwubmJfcnVsZXMgZW52KSBpblxuICAgIGxldCB1bmFyeV9wYXR0ZXJucyA9IE1vZGVsLnVuYXJ5X3BhdHRlcm5zIGVudiBpblxuICAgIGxldCBhbHdheXNfb3V0ZGF0ZWQgPVxuICAgICAgbGV0IGRlcHNfaW5fdCwgZGVwc19pbl9lLCBfLCBfID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBkZXBzX2luX3QgZGVwc19pbl9lXG4gICAgaW5cbiAgICBsZXQgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyA9IG5vdCAoUGF0dGVybi5TZXQuaXNfZW1wdHkgdW5hcnlfcGF0dGVybnMpIGluXG4gICAgbGV0IHZhcmlhYmxlc19vdmVyd3JpdGUgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9hbGdzIGVudikgTm9uZSBpblxuICAgIGxldCB2YXJpYWJsZXNfY2FjaGUgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9hbGdzIGVudikgTmJyLnplcm8gaW5cbiAgICBsZXQgY2FuZCA9XG4gICAgICB7XG4gICAgICAgIGltcCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aXZpdGllcyA9IGFjdGl2aXR5X3RyZWU7XG4gICAgICAgICAgICBwcmVjb21wdXRlZCA9IHsgdW5hcnlfcGF0dGVybnM7IGFsd2F5c19vdXRkYXRlZCB9O1xuICAgICAgICAgICAgaW5zdGFuY2VzID0gSW5zdGFuY2VzLmVtcHR5IGVudjtcbiAgICAgICAgICAgIHZhcmlhYmxlc19vdmVyd3JpdGU7XG4gICAgICAgICAgICB2YXJpYWJsZXNfY2FjaGU7XG4gICAgICAgICAgICB0b2tlbnMgPSBBcnJheS5tYWtlIChNb2RlbC5uYl90b2tlbnMgZW52KSBOYnIuemVybztcbiAgICAgICAgICAgIHJhbmRvbV9zdGF0ZTtcbiAgICAgICAgICAgIHN0b3J5X21hY2hpbmVyeSA9XG4gICAgICAgICAgICAgIChpZiB3aXRoX3RyYWNlIHRoZW5cbiAgICAgICAgICAgICAgICAgU29tZSAoUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPiBbXSkpXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIE5vbmUpO1xuICAgICAgICAgICAgc3BlY2llcyA9IFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT4gW10pO1xuICAgICAgICAgICAgY2hhbmdlZF9jb25uZWN0aXZpdHkgPSBIYXNodGJsLmNyZWF0ZSAzMjtcbiAgICAgICAgICB9O1xuICAgICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgICB1bmFyeV9jYW5kaWRhdGVzID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgICBlZGdlcyA9IEVkZ2VzLmVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgICBvdXRkYXRlZF9lbGVtZW50cyA9IGFsd2F5c19vdXRkYXRlZDtcbiAgICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gTm9uZTtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCAoKSA9IFRvb2xzLml0ZXJpIChyZWNvbXB1dGUgZW52IGNvdW50ZXIgY2FuZCkgKE1vZGVsLm5iX2FsZ3MgZW52KSBpblxuICAgIGxldCAoKSA9IGluaXRpYWxfYWN0aXZpdHkgfm91dHB1dHMgZW52IGNvdW50ZXIgY2FuZCBpblxuICAgIGNhbmRcblxuICBsZXQgY29uY3JldGVfYWN0aW9uc19mb3JfaW5jb21wbGV0ZV9pbmogfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyA9XG4gICAgbGV0IGFic3RyYWN0X2FjdGlvbnMgPVxuICAgICAgcnVsZS5QcmltaXRpdmVzLmluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGluaiA9IG1hdGNoaW5nLCBNb2RzLkludE1hcC5lbXB0eSBpblxuICAgIExpc3RfdXRpbC5tYXBfb3B0aW9uXG4gICAgICAoSW5zdGFudGlhdGlvbi50cnlfY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qKVxuICAgICAgYWJzdHJhY3RfYWN0aW9uc1xuXG4gIGxldCBjb25jcmV0ZV90ZXN0cyB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nID1cbiAgICBsZXQgYWJzdHJhY3RfdGVzdHMgPVxuICAgICAgcnVsZS5QcmltaXRpdmVzLmluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24udGVzdHMgfD4gTGlzdC5jb25jYXRcbiAgICBpblxuICAgIGxldCBpbmogPSBtYXRjaGluZywgTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgICBMaXN0Lm1hcCAoSW5zdGFudGlhdGlvbi5jb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGUgaW5qKSBhYnN0cmFjdF90ZXN0c1xuXG4gIGxldCBpc19ibG9ja2VkIH5kZWJ1Z19tb2RlIHN0YXRlID9ydWxlX2lkIHJ1bGUgbWF0Y2hpbmcgPVxuICAgIG1hdGNoIHN0YXRlLmV2ZW50c190b19ibG9jayB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIHRvX2Jsb2NrIC0+XG4gICAgICBsZXQgYWN0aW9ucyA9XG4gICAgICAgIGNvbmNyZXRlX2FjdGlvbnNfZm9yX2luY29tcGxldGVfaW5qIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmdcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdHMgPSBjb25jcmV0ZV90ZXN0cyB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nIGluXG4gICAgICB0b19ibG9jayBydWxlX2lkIG1hdGNoaW5nIHRlc3RzIGFjdGlvbnNcblxuICBsZXQgc2V0X2V2ZW50c190b19ibG9jayBwcmVkaWNhdGUgc3RhdGUgPVxuICAgIHtcbiAgICAgIHN0YXRlIHdpdGhcbiAgICAgIGV2ZW50c190b19ibG9jayA9IHByZWRpY2F0ZTtcbiAgICAgIG1hdGNoaW5nc19vZl9ydWxlID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICB1bmFyeV9jYW5kaWRhdGVzID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgfVxuXG4gIGxldCBpbnN0YW5jZV90b19tYXRjaGluZyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5zdGFuY2UgcGF0dGVybnMgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSBtYXRjaGluZyByb290IC0+XG4gICAgICAgIG1hdGNoIG1hdGNoaW5nIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIG1hdGNoaW5nIC0+XG4gICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIG1hdGNoaW5nIGkgcGF0dGVybnMuKGkpXG4gICAgICAgICAgICByb290KVxuICAgICAgKFNvbWUgTWF0Y2hpbmcuZW1wdHkpIGluc3RhbmNlXG5cbiAgbGV0IGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlID9leGNwID91bmFyeV9yYXRlID9ydWxlX2lkIHN0YXRlX2luc3RzIGRvbWFpblxuICAgICAgZWRnZXMgcGF0dGVybmEgPVxuICAgIGxldCBvdXQgPVxuICAgICAgSW5zdGFuY2VzLmZvbGRfaW5zdGFuY2VzID9leGNwID9ydWxlX2lkIHN0YXRlX2luc3RzIHBhdHRlcm5hIH5pbml0OltdXG4gICAgICAgIChmdW4gaW5zdGFuY2UgYWNjIC0+XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGluc3RhbmNlX3RvX21hdGNoaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbnN0YW5jZSBwYXR0ZXJuYVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgfCBTb21lIG1hdGNoaW5nIC0+XG4gICAgICAgICAgICBsZXQgcmV2X3Jvb3RzID0gQXJyYXkuZm9sZF9sZWZ0IChmdW4gdCBoIC0+IGggOjogdCkgW10gaW5zdGFuY2UgaW5cbiAgICAgICAgICAgIChtYXRjaGluZywgcmV2X3Jvb3RzKSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYXRjaCB1bmFyeV9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gb3V0XG4gICAgfCBTb21lIChfLCBOb25lKSAtPlxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBfLCBbIHIxOyByMiBdIC0+IG5vdCAoRWRnZXMuaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHIxIHIyIGVkZ2VzKVxuICAgICAgICAgIHwgXywgXyAtPiBmYWxzZSlcbiAgICAgICAgb3V0XG4gICAgfCBTb21lIChfLCAoU29tZSBfIGFzIG1heF9kaXN0YW5jZSkpIC0+XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuIChpbmosIF8pIC0+XG4gICAgICAgICAgbGV0IG5vZGVzID0gTWF0Y2hpbmcuZWxlbWVudHNfd2l0aF90eXBlcyBkb21haW4gcGF0dGVybmEgaW5qIGluXG4gICAgICAgICAgTm9uZSA9IEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBlZGdlcyBub2Rlcy4oMCkgbm9kZXMuKDEpKVxuICAgICAgICBvdXRcblxuICBsZXQgcG9wX2V4YWN0X21hdGNoaW5ncyBtYXRjaGluZ3Nfb2ZfcnVsZSBydWxlID1cbiAgICBzbmQgKE1vZHMuSW50TWFwLnBvcCBydWxlIG1hdGNoaW5nc19vZl9ydWxlKVxuXG4gIGxldCBwaWNrX2FfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSByYW5kb21fc3RhdGUgZG9tYWluIGVkZ2VzID9ydWxlX2lkXG4gICAgICBydWxlID1cbiAgICBsZXQgZnJvbV9wYXR0ZXJucyAoKSA9XG4gICAgICBsZXQgcGF0cyA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpblxuICAgICAgSW5zdGFuY2VzLmZvbGRfcGlja2VkX2luc3RhbmNlID9ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXMgcmFuZG9tX3N0YXRlXG4gICAgICAgIHBhdHMgfmluaXQ6KE1hdGNoaW5nLmVtcHR5LCBbXSwgTm9uZSlcbiAgICAgICAgKGZ1biBpZCBwYXR0ZXJuIHJvb3QgKGluaiwgcmV2X3Jvb3RzLCBfKSAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5qIGlkIHBhdHRlcm4gcm9vdFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBpbmonIC0+IFNvbWUgKGluaicsIHJvb3QgOjogcmV2X3Jvb3RzLCBOb25lKSlcbiAgICBpblxuICAgIG1hdGNoIHJ1bGVfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiBmcm9tX3BhdHRlcm5zICgpXG4gICAgfCBTb21lIGlkIC0+XG4gICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgc3RhdGUubWF0Y2hpbmdzX29mX3J1bGUgd2l0aFxuICAgICAgfCBTb21lIFtdIC0+IE5vbmVcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGxldCBhLCBiID0gTGlzdF91dGlsLnJhbmRvbSByYW5kb21fc3RhdGUgbCBpblxuICAgICAgICBTb21lIChhLCBiLCBOb25lKVxuICAgICAgfCBOb25lIC0+IGZyb21fcGF0dGVybnMgKCkpXG5cbiAgbGV0IGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCA/dW5hcnlfcmF0ZSBzdGF0ZSBkb21haW4gZWRnZXNcbiAgICAgIGNjcyBydWxlID1cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSA/dW5hcnlfcmF0ZSB+cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzIGRvbWFpblxuICAgICAgICBlZGdlcyBjY3NcbiAgICBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIGlmIHN0YXRlLmV2ZW50c190b19ibG9jayA9IE5vbmUgdGhlblxuICAgICAgICBtYXRjaGVzXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoZXNcbiAgICAgICAgfD4gTGlzdC5maWx0ZXIgKGZ1biAobWF0Y2hpbmcsIF8pIC0+XG4gICAgICAgICAgICAgICBub3QgKGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgfnJ1bGVfaWQgcnVsZSBtYXRjaGluZykpXG4gICAgaW5cbiAgICAoIExpc3QubGVuZ3RoIG1hdGNoZXMsXG4gICAgICB7XG4gICAgICAgIHN0YXRlIHdpdGhcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBydWxlX2lkIG1hdGNoZXMgc3RhdGUubWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICB9IClcblxuICAoKiBXaXRoIHJlY3Rhbmd1bGFyIGFwcHJveGltYXRpb24gKilcbiAgbGV0IGNvbXB1dGVfdW5hcnlfbnVtYmVyIGluc3RhbmNlc1xuICAgICAgKG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgdW5hcnlfY2FuZGlkYXRlcykgbW9kaWZpZWRfY2NzIHJ1bGVcbiAgICAgIHJ1bGVfaWQgPVxuICAgIGxldCBwYXQxID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKSBpblxuICAgIGxldCBwYXQyID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigxKSBpblxuXG4gICAgbGV0IG51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fY2MgPVxuICAgICAgSW5zdGFuY2VzLm51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fY2MgfnJ1bGVfaWQgaW5zdGFuY2VzIChwYXQxLCBwYXQyKVxuICAgIGluXG5cbiAgICBsZXQgb2xkX3BhY2sgPVxuICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFZhbE1hcC5lbXB0eSBydWxlX2lkXG4gICAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jY1xuICAgIGluXG4gICAgbGV0IG5ld19wYWNrID1cbiAgICAgIEhhc2h0YmwuZm9sZFxuICAgICAgICAoZnVuIGNjICgpIGlfaW5zdCAtPlxuICAgICAgICAgIGxldCBuZXdfdiA9IG51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fY2MgY2MgaW5cbiAgICAgICAgICBpZiBuZXdfdiA9IDAgdGhlblxuICAgICAgICAgICAgVmFsTWFwLnJlbW92ZSBjYyBpX2luc3RcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBWYWxNYXAuYWRkIGNjIG5ld192IGlfaW5zdClcbiAgICAgICAgbW9kaWZpZWRfY2NzIG9sZF9wYWNrXG4gICAgaW5cbiAgICBsZXQgdmEgPSBWYWxNYXAudG90YWwgbmV3X3BhY2sgaW5cbiAgICBsZXQgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJyA9XG4gICAgICBpZiB2YSA9IDBMIHRoZW5cbiAgICAgICAgTW9kcy5JbnRNYXAucmVtb3ZlIHJ1bGVfaWQgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjXG4gICAgICBlbHNlXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBydWxlX2lkIG5ld19wYWNrIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jY1xuICAgIGluXG4gICAgbGV0IF8sIHVuYXJ5X2NhbmRpZGF0ZXMnID1cbiAgICAgICgqIEludmFsaWRhdGVzIHRoZSBjYWNoZSAqKVxuICAgICAgTW9kcy5JbnRNYXAucG9wIHJ1bGVfaWQgdW5hcnlfY2FuZGlkYXRlc1xuICAgIGluXG4gICAgdmEsIChuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MnLCB1bmFyeV9jYW5kaWRhdGVzJylcblxuICBsZXQgcGlja19hX3VuYXJ5X3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgcmFuZG9tX3N0YXRlIGRvbWFpbiBlZGdlc1xuICAgICAgfnJ1bGVfaWQgcnVsZSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gcnVsZV9pZCBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzIHdpdGhcbiAgICB8IFNvbWUgbCAtPlxuICAgICAgbGV0IGluaiwgcm9vdHMsIHBhdGggPSBMaXN0X3V0aWwucmFuZG9tIHJhbmRvbV9zdGF0ZSBsIGluXG4gICAgICBTb21lIChpbmosIHJvb3RzLCBwYXRoKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHBhdDEgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApIGluXG4gICAgICBsZXQgcGF0MiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cbiAgICAgIGxldCBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjID1cbiAgICAgICAgSW5zdGFuY2VzLnBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MgfnJ1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAgIHJhbmRvbV9zdGF0ZSAocGF0MSwgcGF0MilcbiAgICAgIGluXG4gICAgICBsZXQgY2NfaWQgPVxuICAgICAgICBWYWxNYXAucmFuZG9tIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgVmFsTWFwLmVtcHR5IHJ1bGVfaWRcbiAgICAgICAgICAgICBzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MpXG4gICAgICBpblxuICAgICAgbGV0IHJvb3QxLCByb290MiA9IHBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MgY2NfaWQgaW5cblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIEZvcm1hdC5wcmludGYgXCJAW09uIHJvb3RzOkAgJWlAICVpQF1ALlwiIHJvb3QxIHJvb3QyXG4gICAgICBpblxuICAgICAgbGV0IHBhdHRlcm4xID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKSBpblxuICAgICAgbGV0IHBhdHRlcm4yID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigxKSBpblxuICAgICAgbGV0IGluajEgPVxuICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgTWF0Y2hpbmcuZW1wdHkgMCBwYXR0ZXJuMVxuICAgICAgICAgIHJvb3QxXG4gICAgICBpblxuICAgICAgKG1hdGNoIGluajEgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBpbmogLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbmogMSBwYXR0ZXJuMiByb290MlxuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaW5qX291dCAtPiBTb21lIChpbmpfb3V0LCBbIHJvb3QyOyByb290MSBdLCBOb25lKSkpXG5cbiAgbGV0IGFkanVzdF91bmFyeV9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCA/bWF4X2Rpc3RhbmNlIHN0YXRlXG4gICAgICBkb21haW4gZ3JhcGggcGF0cyBydWxlID1cbiAgICBsZXQgcGF0dGVybjEgPSBwYXRzLigwKSBpblxuICAgIGxldCBwYXR0ZXJuMiA9IHBhdHMuKDEpIGluXG4gICAgbGV0IGNhbmRzLCBsZW4gPVxuICAgICAgSW5zdGFuY2VzLmZvbGRfdW5hcnlfaW5zdGFuY2VzIH5ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgKHBhdHRlcm4xLCBwYXR0ZXJuMikgfmluaXQ6KFtdLCAwKVxuICAgICAgICAoZnVuIChyb290MSwgcm9vdDIpICgobGlzdCwgbGVuKSBhcyBvdXQpIC0+XG4gICAgICAgICAgbGV0IGluajEgPVxuICAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIE1hdGNoaW5nLmVtcHR5IDBcbiAgICAgICAgICAgICAgcGF0dGVybjEgcm9vdDFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGluajEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRcbiAgICAgICAgICB8IFNvbWUgaW5qIC0+XG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBpbmogMSBwYXR0ZXJuMlxuICAgICAgICAgICAgICAgICByb290MlxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvdXRcbiAgICAgICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBtYXhfZGlzdGFuY2Ugd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gKGluaicsIFsgcm9vdDI7IHJvb3QxIF0sIE5vbmUpIDo6IGxpc3QsIHN1Y2MgbGVuXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWF0Y2hpbmcuZWxlbWVudHNfd2l0aF90eXBlcyBkb21haW4gcGF0cyBpbmonIGluXG4gICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIGdyYXBoIG5vZGVzLigwKSBub2Rlcy4oMSlcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvdXRcbiAgICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBwIC0+XG4gICAgICAgICAgICAgICAgICBpZiBpc19ibG9ja2VkIH5kZWJ1Z19tb2RlIHN0YXRlIH5ydWxlX2lkIHJ1bGUgaW5qJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIG91dFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAoaW5qJywgWyByb290Mjsgcm9vdDEgXSwgcCkgOjogbGlzdCwgc3VjYyBsZW4pKSkpXG4gICAgaW5cbiAgICBsZXQgdW5hcnlfY2FuZGlkYXRlcyA9XG4gICAgICBpZiBsZW4gPSAwIHRoZW5cbiAgICAgICAgTW9kcy5JbnRNYXAucmVtb3ZlIHJ1bGVfaWQgc3RhdGUudW5hcnlfY2FuZGlkYXRlc1xuICAgICAgZWxzZVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBjYW5kcyBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzXG4gICAgaW5cbiAgICBsZW4sIHsgc3RhdGUgd2l0aCB1bmFyeV9jYW5kaWRhdGVzIH1cblxuICBsZXQgcHJpbnQgZW52IGYgc3RhdGUgPVxuICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBlbnYgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGksIG1peCkgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiUlaW5pdDogJWkgQFs8aD4lYUBdXCIgaSBVc2VyX2dyYXBoLnByaW50X2NjIG1peCkpXG4gICAgICAoRWRnZXMuYnVpbGRfdXNlcl9zbmFwc2hvdCB+ZGVidWdfbW9kZTpmYWxzZSB+cmF3OmZhbHNlIHNpZ3Mgc3RhdGUuZWRnZXMpXG4gICAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgZWwgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiUlaW5pdDogJWEgJWFcIiBOYnIucHJpbnQgZWxcbiAgICAgICAgICAgICAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgaSkpXG4gICAgICBzdGF0ZS5pbXAudG9rZW5zXG5cbiAgbGV0IGRlYnVnX3ByaW50IGYgc3RhdGUgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCwlYUAsJWFAXVwiIEVkZ2VzLmRlYnVnX3ByaW50IHN0YXRlLmVkZ2VzXG4gICAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgZWwgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhIHRva2VuXyVpXCIgTmJyLnByaW50IGVsIGkpKVxuICAgICAgc3RhdGUuaW1wLnRva2VucyBJbnN0YW5jZXMuZGVidWdfcHJpbnQgc3RhdGUuaW1wLmluc3RhbmNlc1xuXG4gIHR5cGUgc3RhdHMgPSB7IG1peHR1cmVfc3RhdHM6IEVkZ2VzLnN0YXRzIH1cblxuICBsZXQgc3RhdHMgc3RhdGUgPSB7IG1peHR1cmVfc3RhdHMgPSBFZGdlcy5zdGF0cyBzdGF0ZS5lZGdlcyB9XG5cbiAgbGV0IHByaW50X3N0YXRzIGYgc3RhdGUgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaSBhZ2VudHNcIiAoc3RhdHMgc3RhdGUpLm1peHR1cmVfc3RhdHMuRWRnZXMubmJfYWdlbnRzXG5cbiAgbGV0IG5ld19wbGFjZSBmcmVlX2lkIChpbmpfbm9kZXMsIGlual9mcmVzaCkgPSBmdW5jdGlvblxuICAgIHwgTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXyAtPiBmYWlsd2l0aCBcIlJ1bGVfaW50ZXJwcmV0ZXIubmV3X3BsYWNlXCJcbiAgICB8IE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCkgLT5cbiAgICAgIGlual9ub2RlcywgTW9kcy5JbnRNYXAuYWRkIGlkIGZyZWVfaWQgaW5qX2ZyZXNoXG5cbiAgbGV0IGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGluc3RhbmNlc1xuICAgICAgKHNpZGVfZWZmZWN0cywgZWRnZXMpID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKGlkLCBfKSAtPlxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBlZGdlcyBpblxuICAgICAgc2lkZV9lZmZlY3RzLCBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKChpZCwgXyksIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMucmVtb3ZlX2ZyZWUgaWQgcyBlZGdlcyBpblxuICAgICAgc2lkZV9lZmZlY3RzLCBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgoKGlkLCBfKSwgcyksICgoaWQnLCBfKSwgcycpKSAtPlxuICAgICAgbGV0IGVkZ2VzJywgY2NfbW9kaWYgPSBFZGdlcy5yZW1vdmVfbGluayBpZCBzIGlkJyBzJyBlZGdlcyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSW5zdGFuY2VzLmJyZWFrX2FwYXJ0X2NjIGluc3RhbmNlcyBlZGdlcycgP21vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICBjY19tb2RpZlxuICAgICAgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgKCgoaWQsIF8pLCBzKSBhcyBuKSAtPlxuICAgICAgKG1hdGNoIExpc3QucGFydGl0aW9uIChmdW4geCAtPiB4ID0gbikgc2lkZV9lZmZlY3RzIHdpdGhcbiAgICAgIHwgXyA6OiBfLCBzaWRlX2VmZmVjdHMnIC0+IHNpZGVfZWZmZWN0cycsIGVkZ2VzXG4gICAgICB8IFtdLCBfIC0+XG4gICAgICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGlkIHMgZWRnZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2lkZV9lZmZlY3RzLCBFZGdlcy5yZW1vdmVfZnJlZSBpZCBzIGVkZ2VzXG4gICAgICAgIHwgU29tZSAoKChpZCcsIF8pIGFzIG5jJyksIHMnKSAtPlxuICAgICAgICAgIGxldCBlZGdlcycsIGNjX21vZGlmID0gRWRnZXMucmVtb3ZlX2xpbmsgaWQgcyBpZCcgcycgZWRnZXMgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgSW5zdGFuY2VzLmJyZWFrX2FwYXJ0X2NjIGluc3RhbmNlcyBlZGdlcycgP21vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgICAgY2NfbW9kaWZcbiAgICAgICAgICBpblxuICAgICAgICAgIChuYycsIHMnKSA6OiBzaWRlX2VmZmVjdHMsIGVkZ2VzJykpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIlBvc2l0aXZlSW50ZXJuYWxpemVkIGluIG5lZ2F0aXZlIHVwZGF0ZVwiKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKChpZCwgXyksIHMpIC0+XG4gICAgICBsZXQgXywgZWRnZXMnID0gRWRnZXMucmVtb3ZlX2ludGVybmFsIGlkIHMgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG5cbiAgbGV0IGFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIHNpZ3MgP21vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgIGluc3RhbmNlcyAoaW5qMmdyYXBoLCBzaWRlX2VmZmVjdHMsIGVkZ2VzKSA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IG4gLT5cbiAgICAgIGxldCBuYywgaW5qMmdyYXBoJywgZWRnZXMnID1cbiAgICAgICAgbGV0IHR5ID0gTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgbiBpblxuICAgICAgICBsZXQgaWQsIGVkZ2VzJyA9IEVkZ2VzLmFkZF9hZ2VudCBzaWdzIHR5IGVkZ2VzIGluXG4gICAgICAgIChpZCwgdHkpLCBuZXdfcGxhY2UgaWQgaW5qMmdyYXBoIG4sIGVkZ2VzJ1xuICAgICAgaW5cbiAgICAgIChpbmoyZ3JhcGgnLCBzaWRlX2VmZmVjdHMsIGVkZ2VzJyksIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgbmNcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKG4sIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBsZXQgKChpZCwgXykgYXMgbmMpID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiBpblxuICAgICAgKCooQSwyMykqKVxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9mcmVlIGlkIHMgZWRnZXMgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHMnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X2ZpbHRlciAoZnVuIHggLT4geCA8PiAobmMsIHMpKSBzaWRlX2VmZmVjdHNcbiAgICAgIGluXG4gICAgICAoaW5qMmdyYXBoLCBzaWRlX2VmZmVjdHMnLCBlZGdlcycpLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcylcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobiwgcyksIChuJywgcycpKSAtPlxuICAgICAgbGV0IG5jID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiBpblxuICAgICAgbGV0IG5jJyA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4nIGluXG4gICAgICBsZXQgZWRnZXMnLCBtb2RpZl9jYyA9IEVkZ2VzLmFkZF9saW5rIG5jIHMgbmMnIHMnIGVkZ2VzIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9maWx0ZXJcbiAgICAgICAgICAoZnVuIHggLT4geCA8PiAobmMsIHMpICYmIHggPD4gKG5jJywgcycpKVxuICAgICAgICAgIHNpZGVfZWZmZWN0c1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEluc3RhbmNlcy5tZXJnZV9jYyBpbnN0YW5jZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgbW9kaWZfY2MgaW5cbiAgICAgICggKGluajJncmFwaCwgc2lkZV9lZmZlY3RzJywgZWRnZXMnKSxcbiAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChuYywgcyksIChuYycsIHMnKSkgKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIk5lZ2F0aXZlV2hhdEV2ZXIgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAobiwgcywgaSkgLT5cbiAgICAgIGxldCAoKGlkLCBfKSBhcyBuYykgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuIGluXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ludGVybmFsIGlkIHMgaSBlZGdlcyBpblxuICAgICAgKCAoaW5qMmdyYXBoLCBzaWRlX2VmZmVjdHMsIGVkZ2VzJyksXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG5jLCBzLCBpKSApXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIk5lZ2F0aXZlSW50ZXJuYWxpemVkIGluIHBvc2l0aXZlIHVwZGF0ZVwiKSlcblxuICBsZXQgYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gc2lncyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgaW5zdGFuY2VzIGVkZ2VzID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKGlkLCB0eSkgLT5cbiAgICAgIGxldCBfLCBlZGdlcycgPSBFZGdlcy5hZGRfYWdlbnQgfmlkIHNpZ3MgdHkgZWRnZXMgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoKGlkLCBfKSwgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfZnJlZSBpZCBzIGVkZ2VzIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIC0+XG4gICAgICBsZXQgZWRnZXMnLCBtb2RpZl9jYyA9IEVkZ2VzLmFkZF9saW5rIG5jIHMgbmMnIHMnIGVkZ2VzIGluXG4gICAgICBsZXQgKCkgPSBJbnN0YW5jZXMubWVyZ2VfY2MgaW5zdGFuY2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIG1vZGlmX2NjIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZVdoYXRFdmVyIGluIHBvc2l0aXZlIHVwZGF0ZVwiKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKChpZCwgXyksIHMsIGkpIC0+XG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ludGVybmFsIGlkIHMgaSBlZGdlcyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIk5lZ2F0aXZlSW50ZXJuYWxpemVkIGluIHBvc2l0aXZlIHVwZGF0ZVwiKSlcblxuICBsZXQgb2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IG5jIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2FnZW50IGRvbWFpbiBlZGdlcyBhY2MgbmNcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKG5jLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9mcmVlIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgc1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChuYywgcyksIChuYycsIHMnKSkgLT5cbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fbGluayB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgbmMnIHMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChuYywgcywgaSkgLT5cbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21faW50ZXJuYWwgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzIGlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKCgoaWQsIF8pIGFzIG5jKSwgcykgLT5cbiAgICAgIGxldCBpID0gRWRnZXMuZ2V0X2ludGVybmFsIGlkIHMgZWRnZXMgaW5cbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21faW50ZXJuYWwgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzIGlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciAoKChpZCwgXykgYXMgbmMpLCBzKSAtPlxuICAgICAgKG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gaWQgcyBlZGdlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9mcmVlIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgc1xuICAgICAgfCBTb21lIChuYycsIHMnKSAtPlxuICAgICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2xpbmsgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzIG5jJyBzJylcblxuICBsZXQgb2JzX2Zyb21fdHJhbnNmb3JtYXRpb25zIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyB0cmFucyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMpXG4gICAgICAoKFtdLCBPcGVyYXRvci5EZXBTZXQuZW1wdHkpLCBNYXRjaGluZy5lbXB0eV9jYWNoZSlcbiAgICAgIHRyYW5zXG4gICAgfD4gZnN0XG5cbiAgbGV0IHBhdGhfdGVzdHMgcGF0aCB0ZXN0cyA9XG4gICAgbGV0IGtub3duX2FnZW50cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgKGlkLCBfKSAtPiBNb2RzLkludFNldC5hZGQgaWQgYWNjXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byBfIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gLT5cbiAgICAgICAgICAgICBhY2MpKVxuICAgICAgICBNb2RzLkludFNldC5lbXB0eSB0ZXN0c1xuICAgIGluXG4gICAgbGV0IHByZXRlc3RzID1cbiAgICAgIExpc3RfdXRpbC5tYXBfb3B0aW9uXG4gICAgICAgIChmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgICAoTGlzdC5mb3JfYWxsIChmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIHggPD4gYSAmJiB4IDw+IGIgJiYgeSA8PiBhICYmIHkgPD4gYlxuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF8gfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICB0ZXN0c1xuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFNvbWUgKEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHgsIHkpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICAgIHBhdGhcbiAgICBpblxuICAgIGxldCBfLCBwYXRoX3Rlc3RzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGFnLCB0ZSkgKCgoKGlkLCBfKSBhcyBhKSwgXyksICgoKGlkJywgXykgYXMgYScpLCBfKSkgLT5cbiAgICAgICAgICBsZXQgYWcnLCB0ZScgPVxuICAgICAgICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGlkIGFnIHRoZW5cbiAgICAgICAgICAgICAgYWcsIHRlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE1vZHMuSW50U2V0LmFkZCBpZCBhZywgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGEgOjogdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpZCcgYWcnIHRoZW5cbiAgICAgICAgICAgIGFnJywgdGUnXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuYWRkIGlkJyBhZycsIEluc3RhbnRpYXRpb24uSXNfSGVyZSBhJyA6OiB0ZScpXG4gICAgICAgIChrbm93bl9hZ2VudHMsIHByZXRlc3RzKSBwYXRoXG4gICAgaW5cbiAgICBwYXRoX3Rlc3RzXG5cbiAgbGV0IHN0ZXBfb2ZfZXZlbnQgY291bnRlciA9IGZ1bmN0aW9uXG4gICAgfCBUcmFjZS5JTklUIF8sIGUgLT4gVHJhY2UuSW5pdCBlLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgIHwgVHJhY2UuUlVMRSByLCB4IC0+XG4gICAgICBUcmFjZS5SdWxlIChyLCB4LCBDb3VudGVyLm5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gY291bnRlcilcbiAgICB8IFRyYWNlLlBFUlQgcCwgeCAtPlxuICAgICAgVHJhY2UuUGVydCAocCwgeCwgQ291bnRlci5jdXJyZW50X3NpbXVsYXRpb25faW5mbyBjb3VudGVyKVxuXG4gIGxldCBzdG9yZV9ldmVudCB+ZGVidWdfbW9kZSBjb3VudGVyIGluajJncmFwaCBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzXG4gICAgICBldmVudF9raW5kID9wYXRoIGV4dHJhX3NpZGVfZWZmZWN0cyBydWxlIG91dHB1dHMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBfIC0+XG4gICAgICBsZXQgY2V2ZW50ID1cbiAgICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0aXplX2V2ZW50IH5kZWJ1Z19tb2RlIGluajJncmFwaFxuICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9uc1xuICAgICAgaW5cbiAgICAgIGxldCBmdWxsX2NvbmNyZXRlX2V2ZW50ID1cbiAgICAgICAge1xuICAgICAgICAgIEluc3RhbnRpYXRpb24udGVzdHMgPSBjZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBjZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9IGNldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgICAgIExpc3QucmV2X2FwcGVuZCBleHRyYV9zaWRlX2VmZmVjdHNcbiAgICAgICAgICAgICAgY2V2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAobWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgIHwgU29tZSBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIChTb21lIHBhdGgpIC0+IHBhdGhfdGVzdHMgcGF0aCBjZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0cyk7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuVHJhY2VTdGVwXG4gICAgICAgICAgICAgKHN0ZXBfb2ZfZXZlbnQgY291bnRlciAoZXZlbnRfa2luZCwgZnVsbF9jb25jcmV0ZV9ldmVudCkpKVxuICAgICAgaW5cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChpLCB4KSAtPlxuICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgIChEYXRhLlRyYWNlU3RlcCAoVHJhY2UuT2JzIChpLCB4LCBDb3VudGVyLm5leHRfc3RvcnkgY291bnRlcikpKSlcbiAgICAgICAgbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlc1xuXG4gIGxldCBnZXRfc3BlY2llc19vYnMgfmRlYnVnX21vZGUgc2lncyBlZGdlcyBvYnMgYWNjIHRyYWNrZWQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAocGF0dGVybiwgKHJvb3QsIF8pKSAtPlxuICAgICAgICB0cnlcbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhY2MgKGZuLCBwYXR0ZXJucywgXykgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gb2sgcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgIFBhdHRlcm4uY29tcGFyZV9jYW5vbmljYWxzIHBpZCBwYXR0ZXJuID0gMCB8fCBvaylcbiAgICAgICAgICAgICAgICAgIGZhbHNlIHBhdHRlcm5zXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBzcGVjID0gRWRnZXMuc3BlY2llcyB+ZGVidWdfbW9kZSBzaWdzIHJvb3QgZWRnZXMgaW5cbiAgICAgICAgICAgICAgICAoZm4sIHBhdHRlcm5zLCBzcGVjKSA6OiBhY2NcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAoUGF0dGVybi5PYnNNYXAuZ2V0IHRyYWNrZWQgcGF0dGVybilcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gYWNjKVxuICAgICAgYWNjIG9ic1xuXG4gIGxldCBzdG9yZV9vYnMgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluc3RhbmNlcyBvYnMgYWNjID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIHRyYWNrZWQgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYWNjIChwYXR0ZXJuLCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIGFjYyAoZXYsIHBhdHRlcm5zLCB0ZXN0cykgLT5cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgKGluaiwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5qLCBNb2RzLkludE1hcC5lbXB0eSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKGV2LCB0ZXN0cycpIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgKGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlIGluc3RhbmNlcyB+ZXhjcDoocGF0dGVybiwgcm9vdClcbiAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiBlZGdlcyBwYXR0ZXJucykpXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAoUGF0dGVybi5PYnNNYXAuZ2V0IHRyYWNrZWQgcGF0dGVybilcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBhY2MpXG4gICAgICAgIGFjYyBvYnNcblxuICBsZXQgdXBkYXRlX2VkZ2VzIH5kZWJ1Z19tb2RlIG91dHB1dHMgY291bnRlciBkb21haW4gaW5qX25vZGVzIHN0YXRlIGV2ZW50X2tpbmRcbiAgICAgID9wYXRoIHJ1bGUgc2lncyA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgIGxldCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlID0gc3RhdGUuaW1wLmNoYW5nZWRfY29ubmVjdGl2aXR5IGluXG4gICAgKCpOZWdhdGl2ZSB1cGRhdGUqKVxuICAgIGxldCBjb25jcmV0ZV9yZW1vdmVkID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLmNvbmNyZXRpemUgfmRlYnVnX21vZGVcbiAgICAgICAgICAgKGlual9ub2RlcywgTW9kcy5JbnRNYXAuZW1wdHkpKVxuICAgICAgICBydWxlLlByaW1pdGl2ZXMucmVtb3ZlZFxuICAgIGluXG4gICAgbGV0IChkZWxfb2JzLCBkZWxfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZS5lZGdlcylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdHMsIGVkZ2VzX2FmdGVyX25lZyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoYXBwbHlfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb24gfm1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgc3RhdGUuaW1wLmluc3RhbmNlcylcbiAgICAgICAgKFtdLCBzdGF0ZS5lZGdlcykgY29uY3JldGVfcmVtb3ZlZFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgZmFsc2VcbiAgICAgICAgICAgIHN0YXRlLmltcC5wcmVjb21wdXRlZC51bmFyeV9wYXR0ZXJucyBlZGdlc19hZnRlcl9uZWdcbiAgICAgICAgICAgIG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgcGF0IHJvb3QpXG4gICAgICAgIGRlbF9vYnNcbiAgICBpblxuICAgICgqUG9zaXRpdmUgdXBkYXRlKilcbiAgICBsZXQgKGZpbmFsX2luajJncmFwaCwgcmVtYWluaW5nX3NpZGVfZWZmZWN0cywgZWRnZXMnKSwgY29uY3JldGVfaW5zZXJ0ZWQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoeCwgcCkgaCAtPlxuICAgICAgICAgIGxldCB4JywgaCcgPVxuICAgICAgICAgICAgYXBwbHlfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGVcbiAgICAgICAgICAgICAgKFBhdHRlcm4uRW52LnNpZ25hdHVyZXMgZG9tYWluKVxuICAgICAgICAgICAgICB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBzdGF0ZS5pbXAuaW5zdGFuY2VzIHggaFxuICAgICAgICAgIGluXG4gICAgICAgICAgeCcsIGgnIDo6IHApXG4gICAgICAgICgoKGlual9ub2RlcywgTW9kcy5JbnRNYXAuZW1wdHkpLCBzaWRlX2VmZmVjdHMsIGVkZ2VzX2FmdGVyX25lZyksIFtdKVxuICAgICAgICBydWxlLlByaW1pdGl2ZXMuaW5zZXJ0ZWRcbiAgICBpblxuICAgIGxldCBlZGdlcycnLCBjb25jcmV0ZV9pbnNlcnRlZCcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZSwgaSkgKCgoaWQsIF8pIGFzIG5jKSwgcykgLT5cbiAgICAgICAgICBFZGdlcy5hZGRfZnJlZSBpZCBzIGUsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKG5jLCBzKSA6OiBpKVxuICAgICAgICAoZWRnZXMnLCBjb25jcmV0ZV9pbnNlcnRlZClcbiAgICAgICAgcmVtYWluaW5nX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgbGV0IChuZXdfb2JzLCBuZXdfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcycnKVxuICAgICAgICAoKFtdLCBPcGVyYXRvci5EZXBTZXQuZW1wdHkpLCBNYXRjaGluZy5lbXB0eV9jYWNoZSlcbiAgICAgICAgY29uY3JldGVfaW5zZXJ0ZWQnXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyB0cnVlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXMnJyBtb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgICBwYXQgcm9vdClcbiAgICAgICAgbmV3X29ic1xuICAgIGluXG4gICAgKCpTdG9yZSBldmVudCopXG4gICAgbGV0IG5ld190cmFja2VkX29ic19pbnN0YW5jZXMgPVxuICAgICAgc3RvcmVfb2JzIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcycnIHN0YXRlLmltcC5pbnN0YW5jZXMgbmV3X29icyBbXVxuICAgICAgICBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc3RvcmVfZXZlbnQgfmRlYnVnX21vZGUgY291bnRlciBmaW5hbF9pbmoyZ3JhcGggbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlc1xuICAgICAgICBldmVudF9raW5kID9wYXRoIHJlbWFpbmluZ19zaWRlX2VmZmVjdHMgcnVsZSBvdXRwdXRzXG4gICAgICAgIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnlcbiAgICBpblxuICAgICgqUHJpbnQgc3BlY2llcyopXG4gICAgbGV0IHNwZWNpZXMgPVxuICAgICAgZ2V0X3NwZWNpZXNfb2JzIH5kZWJ1Z19tb2RlIHNpZ3MgZWRnZXMnJyBuZXdfb2JzIFtdIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGZpbGUsIF8sIG1peHR1cmUpIC0+XG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5TcGVjaWVzIChmaWxlLCBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyLCBtaXh0dXJlKSkpXG4gICAgICAgIHNwZWNpZXNcbiAgICBpblxuICAgIGxldCByZXZfZGVwcyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHNcbiAgICAgICAgKE9wZXJhdG9yLkRlcFNldC51bmlvbiBkZWxfZGVwcyBuZXdfZGVwcylcbiAgICBpblxuICAgIHtcbiAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXM7XG4gICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MgPSBzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2M7XG4gICAgICBlZGdlcyA9IGVkZ2VzJyc7XG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9IHJldl9kZXBzO1xuICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gc3RhdGUuZXZlbnRzX3RvX2Jsb2NrO1xuICAgIH1cblxuICBsZXQgdXBkYXRlX2VkZ2VzX2Zyb21fYWN0aW9ucyB+ZGVidWdfbW9kZSB+b3V0cHV0cyBzaWdzIGNvdW50ZXIgZG9tYWluIHN0YXRlXG4gICAgICAoYWN0aW9ucywgc2lkZV9lZmZlY3RfZHN0KSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgIGxldCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlID0gc3RhdGUuaW1wLmNoYW5nZWRfY29ubmVjdGl2aXR5IGluXG4gICAgKCpOZWdhdGl2ZSB1cGRhdGUqKVxuICAgIGxldCBsbmtfZHN0ICgoYSwgXyksIHMpID0gRWRnZXMubGlua19kZXN0aW5hdGlvbiBhIHMgc3RhdGUuZWRnZXMgaW5cbiAgICBsZXQgY29uY3JldGVfcmVtb3ZlZCA9XG4gICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLm5lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3MgbG5rX2RzdFxuICAgICAgICBhY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgKGRlbF9vYnMsIGRlbF9kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIHN0YXRlLmVkZ2VzKVxuICAgICAgICAoKFtdLCBPcGVyYXRvci5EZXBTZXQuZW1wdHkpLCBNYXRjaGluZy5lbXB0eV9jYWNoZSlcbiAgICAgICAgY29uY3JldGVfcmVtb3ZlZFxuICAgIGluXG4gICAgbGV0IF9zaWRlX2VmZmVjdHMsIGVkZ2VzX2FmdGVyX25lZyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoYXBwbHlfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb24gfm1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgc3RhdGUuaW1wLmluc3RhbmNlcylcbiAgICAgICAgKFtdLCBzdGF0ZS5lZGdlcykgY29uY3JldGVfcmVtb3ZlZFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgZmFsc2VcbiAgICAgICAgICAgIHN0YXRlLmltcC5wcmVjb21wdXRlZC51bmFyeV9wYXR0ZXJucyBlZGdlc19hZnRlcl9uZWdcbiAgICAgICAgICAgIG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgcGF0IHJvb3QpXG4gICAgICAgIGRlbF9vYnNcbiAgICBpblxuICAgICgqUG9zaXRpdmUgdXBkYXRlKilcbiAgICBsZXQgY29uY3JldGVfaW5zZXJ0ZWQgPVxuICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzXG4gICAgICAgIHNpZGVfZWZmZWN0X2RzdCBhY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgZWRnZXMnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4geCBoIC0+XG4gICAgICAgICAgYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAgIChQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGRvbWFpbilcbiAgICAgICAgICAgIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlIHN0YXRlLmltcC5pbnN0YW5jZXMgeCBoKVxuICAgICAgICBlZGdlc19hZnRlcl9uZWcgY29uY3JldGVfaW5zZXJ0ZWRcbiAgICBpblxuICAgIGxldCAobmV3X29icywgbmV3X2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnKVxuICAgICAgICAoKFtdLCBPcGVyYXRvci5EZXBTZXQuZW1wdHkpLCBNYXRjaGluZy5lbXB0eV9jYWNoZSlcbiAgICAgICAgY29uY3JldGVfaW5zZXJ0ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHRydWVcbiAgICAgICAgICAgIHN0YXRlLmltcC5wcmVjb21wdXRlZC51bmFyeV9wYXR0ZXJucyBlZGdlcycgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICAgcGF0IHJvb3QpXG4gICAgICAgIG5ld19vYnNcbiAgICBpblxuICAgICgqUHJpbnQgc3BlY2llcyopXG4gICAgbGV0IHNwZWNpZXMgPVxuICAgICAgZ2V0X3NwZWNpZXNfb2JzIH5kZWJ1Z19tb2RlIHNpZ3MgZWRnZXMnIG5ld19vYnMgW10gc3RhdGUuaW1wLnNwZWNpZXNcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoZmlsZSwgXywgbWl4dHVyZSkgLT5cbiAgICAgICAgICBvdXRwdXRzIChEYXRhLlNwZWNpZXMgKGZpbGUsIENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIsIG1peHR1cmUpKSlcbiAgICAgICAgc3BlY2llc1xuICAgIGluXG4gICAgbGV0IHJldl9kZXBzID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50c1xuICAgICAgICAoT3BlcmF0b3IuRGVwU2V0LnVuaW9uIGRlbF9kZXBzIG5ld19kZXBzKVxuICAgIGluXG4gICAge1xuICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgIGltcCA9IHN0YXRlLmltcDtcbiAgICAgIG1hdGNoaW5nc19vZl9ydWxlID0gc3RhdGUubWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MgPSBzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2M7XG4gICAgICB1bmFyeV9jYW5kaWRhdGVzID0gc3RhdGUudW5hcnlfY2FuZGlkYXRlcztcbiAgICAgIGVkZ2VzID0gZWRnZXMnO1xuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSByZXZfZGVwcztcbiAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICB9XG5cbiAgbGV0IG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQgPSBOYnIudG9faW50ICh2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSBkKVxuXG4gICgqIGNjX3ZhIGlzIHRoZSBudW1iZXIgb2YgZW1iZWRkaW5ncy4gSXQgb25seSBoYXNcbiAgICAgdG8gYmUgbXVsdGlwbGllZCBieSB0aGUgcmF0ZSBjb25zdGFudCBvZiB0aGUgcnVsZSAqKVxuICBsZXQgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGUgc3RvcmUgZW52IGNvdW50ZXIgc3RhdGUgaWQgc3ludGF4X2lkIHJhdGUgY2NfdmFcbiAgICAgID1cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJAWyVzdWxlICVhIGhhcyBub3cgJWkgaW5zdGFuY2VzLkBdQC5cIlxuICAgICAgICAgIChpZiBpZCBtb2QgMiA9IDEgdGhlblxuICAgICAgICAgICAgIFwiVW5hcnkgclwiXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBcIlJcIilcbiAgICAgICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczp0cnVlIH5lbnYpXG4gICAgICAgICAgKGlkIC8gMikgY2NfdmFcbiAgICBpblxuICAgIGxldCBhY3QgPVxuICAgICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IEBAIHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIHJhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGlmIGNjX3ZhID0gMCB0aGVuXG4gICAgICAgICAgMC5cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGluZmluaXR5XG4gICAgICB8IFNvbWUgcmF0ZSAtPiByYXRlICouIGZsb2F0X29mX2ludCBjY192YVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGFjdCA8IDAuIHRoZW4gKFxuICAgICAgICBsZXQgdW5hcnkgPSBpZCBtb2QgMiA9IDEgaW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQXQgdD0lLjJmICVzY3Rpdml0eSBvZiBydWxlICVhIGhhcyBiZWNvbWUgbmVnYXRpdmUgKCVmKVwiXG4gICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAoaWYgdW5hcnkgdGhlblxuICAgICAgICAgICAgICAgICAgICBcIlVuYXJ5IFwiXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFwiXCIpXG4gICAgICAgICAgICAgICAgIChNb2RlbC5wcmludF9ydWxlIH5ub0NvdW50ZXJzOmRlYnVnX21vZGUgfmVudilcbiAgICAgICAgICAgICAgICAgaWQgYWN0LFxuICAgICAgICAgICAgICAgTW9kZWwuZ2V0X2FzdF9ydWxlX3JhdGVfcG9zIH51bmFyeSBlbnYgc3ludGF4X2lkICkpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgb2xkX2FjdCA9IGdldF9hY3Rpdml0eSBpZCBzdGF0ZSBpblxuICAgIGxldCAoKSA9IHNldF9hY3Rpdml0eSBpZCBhY3Qgc3RhdGUgaW5cbiAgICBzdG9yZSBzeW50YXhfaWQgb2xkX2FjdCBhY3RcblxuICBsZXQgdXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGUgc3RvcmUgZW52IGNvdW50ZXIgc3RhdGUga25vd25fcGVydHNcbiAgICAgID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgdW5hcnlfcnVsZV91cGRhdGUgbW9kaWZpZWRfY2MgaW5zdGFuY2VzIGkgcGFjayBydWxlID1cbiAgICAgIG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBwYWNrXG4gICAgICB8IFNvbWUgKHVucmF0ZSwgXykgLT5cbiAgICAgICAgbGV0IHZhLCBwYWNrJyA9XG4gICAgICAgICAgY29tcHV0ZV91bmFyeV9udW1iZXIgaW5zdGFuY2VzIHBhY2sgbW9kaWZpZWRfY2MgcnVsZSBpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGUgc3RvcmUgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgICAgICAgICgoMiAqIGkpICsgMSlcbiAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSAoZnN0IHVucmF0ZSkgKEludDY0LnRvX2ludCB2YSlcbiAgICAgICAgaW5cbiAgICAgICAgcGFjaydcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGRlcCBhY2MgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LmZvbGRcbiAgICAgICAgKGZ1biBkZXAgKChleGFjdF9tYXRjaGluZ3MsIHBlcnRzKSBhcyBhY2MpIC0+XG4gICAgICAgICAgbWF0Y2ggZGVwIHdpdGhcbiAgICAgICAgICB8IE9wZXJhdG9yLkFMRyBqIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSByZWNvbXB1dGUgZW52IGNvdW50ZXIgc3RhdGUgaiBpblxuICAgICAgICAgICAgYXV4IChNb2RlbC5nZXRfYWxnX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBqKSBhY2NcbiAgICAgICAgICB8IE9wZXJhdG9yLk1PRElGIHAgLT4gZXhhY3RfbWF0Y2hpbmdzLCBwIDo6IHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5SVUxFIGkgLT5cbiAgICAgICAgICAgIGxldCBydWxlID0gTW9kZWwuZ2V0X3J1bGUgZW52IGkgaW5cbiAgICAgICAgICAgIGxldCBwYXR0ZXJuX3ZhID1cbiAgICAgICAgICAgICAgSW5zdGFuY2VzLm51bWJlcl9vZl9pbnN0YW5jZXMgfnJ1bGVfaWQ6aSBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGUgc3RvcmUgZW52IGNvdW50ZXIgc3RhdGUgKDIgKiBpKVxuICAgICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSAoZnN0IHJ1bGUuUHJpbWl0aXZlcy5yYXRlKVxuICAgICAgICAgICAgICAgIHBhdHRlcm5fdmFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwb3BfZXhhY3RfbWF0Y2hpbmdzIGV4YWN0X21hdGNoaW5ncyBpLCBwZXJ0cylcbiAgICAgICAgZGVwIGFjY1xuICAgIGluXG4gICAgbGV0IG1hdGNoaW5nc19vZl9ydWxlLCBwZXJ0cyA9XG4gICAgICBhdXggc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHMgKHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlLCBrbm93bl9wZXJ0cylcbiAgICBpblxuICAgIGxldCBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHVuYXJ5X2NhbmRpZGF0ZXMgPVxuICAgICAgaWYgSGFzaHRibC5sZW5ndGggc3RhdGUuaW1wLmNoYW5nZWRfY29ubmVjdGl2aXR5ID0gMCB0aGVuXG4gICAgICAgIHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgc3RhdGUudW5hcnlfY2FuZGlkYXRlc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgICAgICAgICh1bmFyeV9ydWxlX3VwZGF0ZSBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHlcbiAgICAgICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgICAgICAoc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzKVxuICAgICAgICAgICAgZW52XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVzZXQgc3RhdGUuaW1wLmNoYW5nZWRfY29ubmVjdGl2aXR5IGluXG4gICAgICAgIG91dFxuICAgICAgKVxuICAgIGluXG4gICAgKCB7XG4gICAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICAgIGltcCA9IHN0YXRlLmltcDtcbiAgICAgICAgZWRnZXMgPSBzdGF0ZS5lZGdlcztcbiAgICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gc3RhdGUuZXZlbnRzX3RvX2Jsb2NrO1xuICAgICAgICBtYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgICB1bmFyeV9jYW5kaWRhdGVzO1xuICAgICAgICBvdXRkYXRlZF9lbGVtZW50cyA9IHN0YXRlLmltcC5wcmVjb21wdXRlZC5hbHdheXNfb3V0ZGF0ZWQ7XG4gICAgICB9LFxuICAgICAgcGVydHMgKVxuXG4gIGxldCBvdmVyd3JpdGVfdmFyIGkgY291bnRlciBzdGF0ZSBleHByID1cbiAgICBsZXQgKCkgPVxuICAgICAgc3RhdGUuaW1wLnZhcmlhYmxlc19vdmVyd3JpdGUuKGkpIDwtXG4gICAgICAgIFNvbWUgKEFsZ19leHByLkNPTlNUICh2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSBleHByKSlcbiAgICBpblxuICAgIHtcbiAgICAgIHN0YXRlIHdpdGhcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgICAgT3BlcmF0b3IuRGVwU2V0LmFkZCAoT3BlcmF0b3IuQUxHIGkpIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzO1xuICAgIH1cblxuICBsZXQgdXBkYXRlX3Rva2VucyBlbnYgY291bnRlciBzdGF0ZSBpbmplY3RlZCA9XG4gICAgbGV0IGluamVjdGVkJyA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAoKGV4cHIsIF8pLCBpKSAtPiB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSBleHByLCBpKVxuICAgICAgICBpbmplY3RlZFxuICAgIGluXG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gcmRlcHMgKHZhLCBpKSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gc3RhdGUuaW1wLnRva2Vucy4oaSkgPC0gTmJyLmFkZCBzdGF0ZS5pbXAudG9rZW5zLihpKSB2YSBpblxuICAgICAgICAgICAgbGV0IGRlcHMnID0gTW9kZWwuZ2V0X3Rva2VuX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBpIGluXG4gICAgICAgICAgICBpZiBPcGVyYXRvci5EZXBTZXQuaXNfZW1wdHkgZGVwcycgdGhlblxuICAgICAgICAgICAgICByZGVwc1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gcmRlcHMgZGVwcycpXG4gICAgICAgICAgc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHMgaW5qZWN0ZWQnO1xuICAgIH1cblxuICBsZXQgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmQgP3BhdGhcbiAgICAgIHJ1bGUgP3J1bGVfaWQgaW5qID1cbiAgICBpZiBpc19ibG9ja2VkIH5kZWJ1Z19tb2RlIHN0YXRlID9ydWxlX2lkIHJ1bGUgaW5qIHRoZW5cbiAgICAgIEJsb2NrZWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgIHVwZGF0ZV90b2tlbnMgZW52IGNvdW50ZXIgc3RhdGUgcnVsZS5QcmltaXRpdmVzLmRlbHRhX3Rva2Vuc1xuICAgICAgaW5cbiAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgIHVwZGF0ZV9lZGdlcyB+ZGVidWdfbW9kZSBvdXRwdXRzIGNvdW50ZXIgKE1vZGVsLmRvbWFpbiBlbnYpIGluaiBzdGF0ZVxuICAgICAgICAgIGV2ZW50X2tpbmQgP3BhdGggcnVsZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gICAgICBpblxuICAgICAgU3VjY2VzcyBzdGF0ZVxuICAgIClcblxuICBsZXQgYXBwbHlfZ2l2ZW5fdW5hcnlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IENsYXNoXG4gICAgfCBTb21lIChpbmosIF9yZXZfcm9vdHMsIHBhdGgpIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICAgIGxldCBzdGF0ZScgPVxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGUgd2l0aFxuICAgICAgICAgIG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgICAgICAgIE9wZXJhdG9yLkRlcFNldC5hZGQgKE9wZXJhdG9yLlJVTEUgcnVsZV9pZCkgc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHM7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICAobWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUnIGV2ZW50X2tpbmRcbiAgICAgICAgICB+cGF0aCBydWxlIH5ydWxlX2lkIGlualxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtYXhfZGlzdGFuY2UgPVxuICAgICAgICAgIG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSAoXywgZGlzdF9vcHQpIC0+XG4gICAgICAgICAgICAobWF0Y2ggZGlzdF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBkIC0+IFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlJyBkKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAgICAgbGV0IG5vZGVzID1cbiAgICAgICAgICBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpblxuICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGlualxuICAgICAgICBpblxuICAgICAgICBpZiBtYXhfZGlzdGFuY2UgPSBOb25lICYmIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnkgPSBOb25lIHRoZW5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgRWRnZXMuaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50XG4gICAgICAgICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXMuKDApKSlcbiAgICAgICAgICAgICAgKGZzdCAoTGlzdC5oZCBub2Rlcy4oMSkpKVxuICAgICAgICAgICAgICBzdGF0ZS5lZGdlc1xuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSdcbiAgICAgICAgICAgICAgZXZlbnRfa2luZCB+cGF0aDpOb25lIHJ1bGUgfnJ1bGVfaWQgaW5qXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQ29ycmVjdGVkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2Ugc3RhdGUuZWRnZXMgbm9kZXMuKDApIG5vZGVzLigxKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gQ29ycmVjdGVkXG4gICAgICAgICAgfCBTb21lIF8gYXMgcGF0aCAtPlxuICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlJ1xuICAgICAgICAgICAgICBldmVudF9raW5kIH5wYXRoIHJ1bGUgfnJ1bGVfaWQgaW5qXG4gICAgICAgICkpXG5cbiAgbGV0IGFwcGx5X2dpdmVuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBDbGFzaFxuICAgIHwgU29tZSAoaW5qLCByZXZfcm9vdHMsIF9wYXRoKSAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCByb290cyA9IFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IHJldl9yb290cyBpblxuICAgICAgICAgIEZvcm1hdC5wcmludGYgXCJAW09uIHJvb3RzOkAgQFslYUBdQF1ALlwiXG4gICAgICAgICAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBfIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpKVxuICAgICAgICAgICAgcm9vdHNcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmRcbiAgICAgICAgICBydWxlID9ydWxlX2lkIGlualxuICAgICAgfCBTb21lIChfLCBtYXhfZGlzdGFuY2UpIC0+XG4gICAgICAgIChtYXRjaCBtYXhfZGlzdGFuY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggcmV2X3Jvb3RzIHdpdGhcbiAgICAgICAgICB8IFsgcm9vdDE7IHJvb3QwIF0gLT5cbiAgICAgICAgICAgIGlmIEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCByb290MCByb290MSBzdGF0ZS5lZGdlcyB0aGVuXG4gICAgICAgICAgICAgIENvcnJlY3RlZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgICAgICAgICAgICBldmVudF9raW5kIHJ1bGUgP3J1bGVfaWQgaW5qXG4gICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiYXBwbHlfZ2l2ZW5fcnVsZSB1bmFyeSBydWxlIHdpdGhvdXQgMiBwYXR0ZXJuc1wiKVxuICAgICAgICB8IFNvbWUgZGlzdCAtPlxuICAgICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgICAgbGV0IGRpc3QnID0gU29tZSAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUgZGlzdCkgaW5cbiAgICAgICAgICBsZXQgbm9kZXMgPVxuICAgICAgICAgICAgTWF0Y2hpbmcuZWxlbWVudHNfd2l0aF90eXBlcyBkb21haW5cbiAgICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGlualxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlOmRpc3QnIHN0YXRlLmVkZ2VzIG5vZGVzLigwKVxuICAgICAgICAgICAgICAgbm9kZXMuKDEpXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgICAgIHJ1bGUgP3J1bGVfaWQgaW5qXG4gICAgICAgICAgfCBTb21lIF8gLT4gQ29ycmVjdGVkKSkpXG5cbiAgbGV0IGFwcGx5X2dpdmVuX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSA9XG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgaW5zdCA9XG4gICAgICBwaWNrX2FfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIGRvbWFpblxuICAgICAgICBzdGF0ZS5lZGdlcyA/cnVsZV9pZCBydWxlXG4gICAgaW5cbiAgICBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlIGluc3RcblxuICBsZXQgZm9yY2VfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kID9ydWxlX2lkIHJ1bGVcbiAgICAgID1cbiAgICBtYXRjaFxuICAgICAgYXBwbHlfZ2l2ZW5fcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICBldmVudF9raW5kIHJ1bGVcbiAgICB3aXRoXG4gICAgfCBTdWNjZXNzIG91dCAtPiBTb21lIG91dFxuICAgIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCB8IENsYXNoIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICAgIGxldCB1bmFyeV9yYXRlID1cbiAgICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgKGxvYywgZGlzdF9vcHQpIC0+XG4gICAgICAgICAgKG1hdGNoIGRpc3Rfb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gU29tZSAobG9jLCBOb25lKVxuICAgICAgICAgIHwgU29tZSBkIC0+IFNvbWUgKGxvYywgU29tZSAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUgZCkpKVxuICAgICAgaW5cbiAgICAgIChtYXRjaFxuICAgICAgICAgYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgP3J1bGVfaWQgP3VuYXJ5X3JhdGUgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAgICAoTW9kZWwuZG9tYWluIGVudikgc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzXG4gICAgICAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQXQgdD0lZiwgJWEgZG9lcyBub3QgYXBwbHkgKGFueW1vcmUpXCJcbiAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgKFRyYWNlLnByaW50X2V2ZW50X2tpbmQgfmVudilcbiAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2tpbmQgKSlcbiAgICAgICAgaW5cbiAgICAgICAgTm9uZVxuICAgICAgfCBsIC0+XG4gICAgICAgIGxldCBoLCBfID0gTGlzdF91dGlsLnJhbmRvbSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIGwgaW5cbiAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmRcbiAgICAgICAgICAgIHJ1bGUgP3J1bGVfaWQgaFxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggb3V0IHdpdGhcbiAgICAgICAgfCBTdWNjZXNzIG91dCAtPiBTb21lIG91dFxuICAgICAgICB8IEJsb2NrZWQgLT4gTm9uZVxuICAgICAgICB8IENsYXNoIHwgQ29ycmVjdGVkIC0+IGFzc2VydCBmYWxzZSkpXG5cbiAgbGV0IGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZSBydWxlID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgIGxldCB1bmFyeV9yYXRlID1cbiAgICAgIG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKGxvYywgZGlzdF9vcHQpIC0+XG4gICAgICAgIChtYXRjaCBkaXN0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChsb2MsIE5vbmUpXG4gICAgICAgIHwgU29tZSBkIC0+IFNvbWUgKGxvYywgU29tZSAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUgZCkpKVxuICAgIGluXG4gICAgbGV0IGFjdCwgc3RhdGUgPVxuICAgICAgYWRqdXN0X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID91bmFyeV9yYXRlIHN0YXRlIGRvbWFpblxuICAgICAgICBzdGF0ZS5lZGdlcyBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgcnVsZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlXG4gICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgIGVudiBjb3VudGVyIHN0YXRlICgyICogcnVsZV9pZCkgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlXG4gICAgICAgIChmc3QgcnVsZS5QcmltaXRpdmVzLnJhdGUpIGFjdFxuICAgIGluXG4gICAgc3RhdGVcblxuICAoKiBSZWRlZmluZXMgYGFkanVzdF91bmFyeV9ydWxlX2luc3RhbmNlc2AgKilcbiAgbGV0IGFkanVzdF91bmFyeV9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZSBydWxlID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgIGxldCBtYXhfZGlzdGFuY2UgPVxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIChfLCBkaXN0X29wdCkgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlKSBkaXN0X29wdClcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGVcbiAgICBpblxuICAgIGxldCBhY3QsIHN0YXRlID1cbiAgICAgIGFkanVzdF91bmFyeV9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCA/bWF4X2Rpc3RhbmNlIHN0YXRlXG4gICAgICAgIGRvbWFpbiBzdGF0ZS5lZGdlcyBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgcnVsZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSAodW5yYXRlLCBfKSAtPlxuICAgICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZVxuICAgICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgICAgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgICAgICAoKDIgKiBydWxlX2lkKSArIDEpXG4gICAgICAgICAgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlIChmc3QgdW5yYXRlKSBhY3RcbiAgICBpblxuICAgIHN0YXRlXG5cbiAgbGV0IGluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gfmRlYnVnX21vZGUgZG9tYWluIHN0YXRlIHBhdHRlcm4gPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBJbnN0YW5jZXMuaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiBzdGF0ZS5pbXAuaW5zdGFuY2VzIHBhdHRlcm5cbiAgICAgICAgKE1hdGNoaW5nLnJvb3RzX29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZS5lZGdlcyBwYXR0ZXJuKVxuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfVxuXG4gIGxldCBzbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IGVudiBjb3VudGVyIHN0YXRlID1cbiAgICB7XG4gICAgICBEYXRhLnNuYXBzaG90X2V2ZW50ID0gQ291bnRlci5jdXJyZW50X2V2ZW50IGNvdW50ZXI7XG4gICAgICBEYXRhLnNuYXBzaG90X3RpbWUgPSBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyO1xuICAgICAgRGF0YS5zbmFwc2hvdF9hZ2VudHMgPVxuICAgICAgICBFZGdlcy5idWlsZF91c2VyX3NuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXcgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICAgICAgICAgIHN0YXRlLmVkZ2VzO1xuICAgICAgRGF0YS5zbmFwc2hvdF90b2tlbnMgPVxuICAgICAgICBBcnJheS5tYXBpXG4gICAgICAgICAgKGZ1biBpIHggLT4gRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgaSwgeClcbiAgICAgICAgICBzdGF0ZS5pbXAudG9rZW5zO1xuICAgIH1cblxuICBsZXQgcGlja19hbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSBlbnYgc3RhdGUgPVxuICAgIGxldCBjaG9pY2UgPSBwaWNrX3J1bGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBzdGF0ZSBpblxuICAgIGxldCBydWxlX2lkID0gY2hvaWNlIC8gMiBpblxuICAgIGxldCBydWxlID0gTW9kZWwuZ2V0X3J1bGUgZW52IHJ1bGVfaWQgaW5cbiAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICggY2hvaWNlIG1vZCAyID0gMSxcbiAgICAgIHJ1bGVfaWQsXG4gICAgICBpZiBjaG9pY2UgbW9kIDIgPSAxIHRoZW5cbiAgICAgICAgcGlja19hX3VuYXJ5X3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZVxuICAgICAgICAgIGRvbWFpbiBzdGF0ZS5lZGdlcyB+cnVsZV9pZCBydWxlXG4gICAgICBlbHNlXG4gICAgICAgIHBpY2tfYV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgZG9tYWluXG4gICAgICAgICAgc3RhdGUuZWRnZXMgfnJ1bGVfaWQgcnVsZSApXG5cbiAgbGV0IGlzX2NvcnJlY3RfaW5zdGFuY2UgZW52IGdyYXBoIChpc191bmFyeSwgcnVsZV9pZCwgaW5zdGFuY2UpID1cbiAgICBtYXRjaCBpbnN0YW5jZSB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgKF9pbmosIGludl9yb290cywgcGF0aCkgLT5cbiAgICAgIGxldCBydWxlID0gTW9kZWwuZ2V0X3J1bGUgZW52IHJ1bGVfaWQgaW5cbiAgICAgIGxldCBwYXRzID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGluXG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAoZnVuIF8gYiBjYyByIC0+IGIgJiYgSW5zdGFuY2VzLmlzX3ZhbGlkIGdyYXBoLmltcC5pbnN0YW5jZXMgY2MgcilcbiAgICAgICAgdHJ1ZSBwYXRzXG4gICAgICAgIChUb29scy5hcnJheV9yZXZfb2ZfbGlzdCBpbnZfcm9vdHMpXG4gICAgICAmJiAoKG5vdCBpc191bmFyeSlcbiAgICAgICAgIHx8XG4gICAgICAgICBtYXRjaCBwYXRoIHdpdGhcbiAgICAgICAgIHwgU29tZSBwIC0+IEVkZ2VzLmlzX3ZhbGlkX3BhdGggcCBncmFwaC5lZGdlc1xuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCBpbnZfcm9vdHMgd2l0aFxuICAgICAgICAgICB8IFsgeDsgeSBdIC0+IEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCB4IHkgZ3JhcGguZWRnZXNcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG5cbiAgbGV0IGFwcGx5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9tYXhDb25zZWN1dGl2ZUJsb2NrZWRcbiAgICAgIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyIGdyYXBoIChpc191bmFyeSwgcnVsZV9pZCwgaW5zdGFuY2UpID1cbiAgICBsZXQgY2F1c2UgPSBUcmFjZS5SVUxFIHJ1bGVfaWQgaW5cbiAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFs8dj5AW0FwcGxpZWRAICV0JWk6QF1AIEBbJWFAXUBdQC5cIlxuICAgICAgICAgIChmdW4gZiAtPiBpZiBpc191bmFyeSB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJ1bmFyeUAgXCIpXG4gICAgICAgICAgcnVsZV9pZFxuICAgICAgICAgIChLYXBwYV9wcmludGVyLmRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVyczp0cnVlIH5mdWxsOnRydWUgZW52KVxuICAgICAgICAgIHJ1bGVcbiAgICAgICgqUnVsZV9pbnRlcnByZXRlci5wcmludF9kaXN0IGVudiBncmFwaCBydWxlX2lkKilcbiAgICBpblxuICAgIGxldCBhcHBseV9naXZlbiA9XG4gICAgICBpZiBpc191bmFyeSB0aGVuXG4gICAgICAgIGFwcGx5X2dpdmVuX3VuYXJ5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5ydWxlX2lkXG4gICAgICBlbHNlXG4gICAgICAgIGFwcGx5X2dpdmVuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5ydWxlX2lkXG4gICAgaW5cbiAgICBtYXRjaCBhcHBseV9naXZlbiBlbnYgY291bnRlciBncmFwaCBjYXVzZSBydWxlIGluc3RhbmNlIHdpdGhcbiAgICB8IFN1Y2Nlc3MgZ3JhcGgnIC0+XG4gICAgICBsZXQgZmluYWxfc3RlcCA9IG5vdCAoQ291bnRlci5vbmVfY29uc3RydWN0aXZlX2V2ZW50IH5ydWxlX2lkIGNvdW50ZXIpIGluXG4gICAgICBTb21lIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSwgZmluYWxfc3RlcCwgZ3JhcGgnXG4gICAgfCAoQ2xhc2ggfCBDb3JyZWN0ZWQgfCBCbG9ja2VkKSBhcyBvdXQgLT5cbiAgICAgIGxldCBjb250aW51ZSA9XG4gICAgICAgIGlmIG91dCA9IENsYXNoIHRoZW5cbiAgICAgICAgICBDb3VudGVyLm9uZV9jbGFzaGluZ19pbnN0YW5jZV9ldmVudCB+cnVsZV9pZCBjb3VudGVyXG4gICAgICAgIGVsc2UgaWYgb3V0ID0gQmxvY2tlZCB0aGVuXG4gICAgICAgICAgQ291bnRlci5vbmVfYmxvY2tlZF9ldmVudCBjb3VudGVyXG4gICAgICAgIGVsc2UgaWYgaXNfdW5hcnkgdGhlblxuICAgICAgICAgIENvdW50ZXIub25lX25vX21vcmVfdW5hcnlfZXZlbnQgfnJ1bGVfaWQgY291bnRlclxuICAgICAgICBlbHNlXG4gICAgICAgICAgQ291bnRlci5vbmVfbm9fbW9yZV9iaW5hcnlfZXZlbnQgfnJ1bGVfaWQgY291bnRlclxuICAgICAgaW5cbiAgICAgIGlmXG4gICAgICAgIENvdW50ZXIuY29uc2VjdXRpdmVfbnVsbF9ldmVudCB+cnVsZV9pZCBjb3VudGVyIDwgbWF4Q29uc2VjdXRpdmVDbGFzaFxuICAgICAgICAmJlxuICAgICAgICBtYXRjaCBtYXhDb25zZWN1dGl2ZUJsb2NrZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbiAtPiBDb3VudGVyLmNvbnNlY3V0aXZlX2Jsb2NrZWQgY291bnRlciA8IG5cbiAgICAgIHRoZW5cbiAgICAgICAgTm9uZSwgbm90IGNvbnRpbnVlLCBncmFwaFxuICAgICAgZWxzZVxuICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgbm90IGNvbnRpbnVlLFxuICAgICAgICAgIGlmIGlzX3VuYXJ5IHRoZW5cbiAgICAgICAgICAgIGFkanVzdF91bmFyeV9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCBlbnYgY291bnRlciBncmFwaFxuICAgICAgICAgICAgICBydWxlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRqdXN0X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIGdyYXBoIHJ1bGUgKVxuXG4gIGxldCBhdXhfYWRkX3RyYWNrZWQgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSB0cGF0dGVybiA9XG4gICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gcGF0dGVybiAtPlxuICAgICAgICAgIGxldCBhY2MgPSBQYXR0ZXJuLk9ic01hcC5nZXQgdHBhdHRlcm4gcGF0dGVybiBpblxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCB0cGF0dGVybiBwYXR0ZXJuICgobmFtZSwgcGF0dGVybnMsIHRlc3RzKSA6OiBhY2MpKVxuICAgICAgICBwYXR0ZXJuc1xuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfVxuXG4gIGxldCBhZGRfdHJhY2tlZCB+b3V0cHV0cyBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBtYXRjaCBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgIFwiT2JzZXJ2YWJsZSAlcyBzaG91bGQgYmUgdHJhY2tlZCBidXQgdGhlIHRyYWNlIGlzIG5vdCBzdG9yZWRcIlxuICAgICAgICAgICAgICAgICAgIG5hbWUgKSlcbiAgICAgIGluXG4gICAgICBzdGF0ZVxuICAgIHwgU29tZSB0cGF0dGVybiAtPiBhdXhfYWRkX3RyYWNrZWQgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSB0cGF0dGVyblxuXG4gIGxldCByZW1vdmVfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHN0YXRlID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBtYXRjaCBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhdGVcbiAgICB8IFNvbWUgdHBhdHRlcm4gLT5cbiAgICAgIChtYXRjaCBuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgICAgIGxldCB0ZXN0ZXIgKF8sIGVsLCBfKSA9XG4gICAgICAgICAgbm90XG4gICAgICAgICAgQEAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAgKGZ1biBpIGIgeCAtPiBiICYmIFBhdHRlcm4uaXNfZXF1YWxfY2Fub25pY2FscyB4IGVsLihpKSlcbiAgICAgICAgICAgICAgIHRydWUgcGF0dGVybnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBBcnJheS5pdGVyXG4gICAgICAgICAgICAoZnVuIHBhdHRlcm4gLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IFBhdHRlcm4uT2JzTWFwLmdldCB0cGF0dGVybiBwYXR0ZXJuIGluXG4gICAgICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCB0cGF0dGVybiBwYXR0ZXJuIChMaXN0LmZpbHRlciB0ZXN0ZXIgYWNjKSlcbiAgICAgICAgICAgIHBhdHRlcm5zXG4gICAgICAgIGluXG4gICAgICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cbiAgICAgIHwgU29tZSBuYW1lIC0+XG4gICAgICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICAgICAgbGV0IHRlc3RlciAobiwgXywgXykgPSBub3QgKFN0cmluZy5jb21wYXJlIG5hbWUgbiA9IDApIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgICAgICAgIChmdW4gY2NfaWQgcGxpc3QgLT5cbiAgICAgICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHRwYXR0ZXJuIGNjX2lkIChMaXN0LmZpbHRlciB0ZXN0ZXIgcGxpc3QpKVxuICAgICAgICAgICAgdHBhdHRlcm5cbiAgICAgICAgaW5cbiAgICAgICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfSlcblxuICBsZXQgYWRkX3RyYWNrZWRfc3BlY2llcyBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlID1cbiAgICBhdXhfYWRkX3RyYWNrZWQgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSBzdGF0ZS5pbXAuc3BlY2llc1xuXG4gIGxldCByZW1vdmVfdHJhY2tlZF9zcGVjaWVzIG5hbWUgc3RhdGUgPVxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgdGVzdGVyIChuLCBfLCBfKSA9IG5vdCAoU3RyaW5nLmNvbXBhcmUgbmFtZSBuID0gMCkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgICAgKGZ1biBjY19pZCBwbGlzdCAtPlxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5pbXAuc3BlY2llcyBjY19pZCAoTGlzdC5maWx0ZXIgdGVzdGVyIHBsaXN0KSlcbiAgICAgICAgc3RhdGUuaW1wLnNwZWNpZXNcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgZ2V0X3JhbmRvbV9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmltcC5yYW5kb21fc3RhdGVcblxuICBsZXQgc2VuZF9pbnN0YW5jZXNfbWVzc2FnZSBtc2cgc3RhdGUgPVxuICAgIHtcbiAgICAgIHN0YXRlIHdpdGhcbiAgICAgIGltcCA9XG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0ZS5pbXAgd2l0aFxuICAgICAgICAgIGluc3RhbmNlcyA9IEluc3RhbmNlcy5yZWNlaXZlX21lc3NhZ2UgbXNnIHN0YXRlLmltcC5pbnN0YW5jZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBhZGRfb3V0ZGF0ZWRfZGVwZW5kZW5jaWVzIG5ld19kZXBzIHN0YXRlID1cbiAgICBsZXQgb3V0ZGF0ZWRfZWxlbWVudHMgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIG5ld19kZXBzIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWRfZWxlbWVudHMgfVxuXG4gIGxldCBkZWJ1Z19wcmludF9pbnN0YW5jZXMgZiBzdCA9IEluc3RhbmNlcy5kZWJ1Z19wcmludCBmIHN0LmltcC5pbnN0YW5jZXNcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICBpbml0X3N0b3BwaW5nX3RpbWVzOiAoTmJyLnQgKiBpbnQpIGxpc3Q7XG4gIG11dGFibGUgc3RvcHBpbmdfdGltZXM6IChOYnIudCAqIGludCkgbGlzdDtcbiAgcGVydHVyYmF0aW9uc19hbGl2ZTogYm9vbCBhcnJheTtcbiAgdGltZV9kZXBlbmRlbnRfcGVydHM6IGludCBsaXN0O1xuICBtdXRhYmxlIGZvcmNlX3Rlc3RfcGVydHVyYmF0aW9uczogaW50IGxpc3Q7XG4gIHBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0OiBib29sIGFycmF5O1xuICAoKiBpbnRlcm5hbCBhcnJheSBmb3IgcGVydHVyYmF0ZSBmdW5jdGlvbiAoZ2xvYmFsIHRvIGF2b2lkIHVzZWxlc3MgYWxsb2MpICopXG4gIG11dGFibGUgZmx1eDogKHN0cmluZyAqIERhdGEuZGluX2RhdGEpIGxpc3Q7XG4gIHdpdGhfZGVsdGFfYWN0aXZpdGllczogYm9vbDtcbn1cblxubGV0IGNvbXBhcmVfc3RvcHMgKHQxLCBwMSkgKHQyLCBwMikgPVxuICBsZXQgdCA9IE5ici5jb21wYXJlIHQxIHQyIGluXG4gIGlmIHQgPSAwIHRoZW5cbiAgICBjb21wYXJlIHAxIHAyXG4gIGVsc2VcbiAgICB0XG5cbmxldCBlbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzIGNvdW50ZXIgZW52ID1cbiAgbGV0IHQwID0gQ291bnRlci5pbml0X3RpbWUgY291bnRlciBpblxuICBsZXQgc3RvcHBpbmdfdGltZXMgPVxuICAgIGxldCBhbGdzX2RlcHMgPSBNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudiBpblxuICAgIE1vZGVsLmZvbGRfcGVydHVyYmF0aW9uc1xuICAgICAgKGZ1biBpIGFjYyB4IC0+XG4gICAgICAgIG1hdGNoIHguUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgbGV0IGsgPSAxLiArLiBmbG9vciAodDAgLy4gT3B0aW9uX3V0aWwudW5zb21lIDAuIChOYnIudG9fZmxvYXQgbikpIGluXG4gICAgICAgICAgKE5ici5tdWx0IChOYnIuRiBrKSBuLCBpKSA6OiBhY2NcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIEFsZ19leHByLmlzX2VxdWFsaXR5X3Rlc3RfdGltZSBhbGdzX2RlcHNcbiAgICAgICAgICAgICAgICAoZnN0IHguUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoIFwiRXF1YWxpdHkgdGVzdCBvbiB0aW1lIHJlcXVpcmVzIGFuIGFsYXJtXCIsXG4gICAgICAgICAgICAgICAgICAgICBzbmQgeC5QcmltaXRpdmVzLnByZWNvbmRpdGlvbiApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIEFsZ19leHByLmlzX2VxdWFsaXR5X3Rlc3RfdGltZSBhbGdzX2RlcHMgKGZzdCB4LlByaW1pdGl2ZXMucmVwZWF0KVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKCBcIkVxdWFsaXR5IHRlc3Qgb24gdGltZSByZXF1aXJlcyBhbiBhbGFybVwiLFxuICAgICAgICAgICAgICAgICAgICAgc25kIHguUHJpbWl0aXZlcy5yZXBlYXQgKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGFjYylcbiAgICAgIFtdIGVudlxuICBpblxuICBsZXQgc3RvcHMgPSBMaXN0LnNvcnQgY29tcGFyZV9zdG9wcyBzdG9wcGluZ190aW1lcyBpblxuICBsZXQgdGltZV9kZXBlbmRlbnRfcGVydHMgPVxuICAgIGxldCByZWMgYXV4IGRlcCBhY2MgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LmZvbGRcbiAgICAgICAgKGZ1biBkZXAgcGVydHMgLT5cbiAgICAgICAgICBtYXRjaCBkZXAgd2l0aFxuICAgICAgICAgIHwgT3BlcmF0b3IuQUxHIGogLT5cbiAgICAgICAgICAgIGF1eCAoTW9kZWwuZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaikgcGVydHNcbiAgICAgICAgICB8IE9wZXJhdG9yLk1PRElGIHAgLT5cbiAgICAgICAgICAgIExpc3RfdXRpbC5tZXJnZV91bmlxIE1vZHMuaW50X2NvbXBhcmUgWyBwIF0gcGVydHNcbiAgICAgICAgICB8IE9wZXJhdG9yLlJVTEUgXyAtPiBwZXJ0cylcbiAgICAgICAgZGVwIGFjY1xuICAgIGluXG4gICAgYXV4XG4gICAgICAobGV0IHgsIF8sIF8sIF8gPSBNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudiBpblxuICAgICAgIHgpXG4gICAgICBbXVxuICBpblxuICB7XG4gICAgaW5pdF9zdG9wcGluZ190aW1lcyA9IHN0b3BzO1xuICAgIHN0b3BwaW5nX3RpbWVzID0gc3RvcHM7XG4gICAgcGVydHVyYmF0aW9uc19hbGl2ZSA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX3BlcnR1cmJhdGlvbnMgZW52KSB0cnVlO1xuICAgIGZvcmNlX3Rlc3RfcGVydHVyYmF0aW9ucyA9IFtdO1xuICAgIHRpbWVfZGVwZW5kZW50X3BlcnRzO1xuICAgIHBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0ID0gQXJyYXkubWFrZSAoTW9kZWwubmJfcGVydHVyYmF0aW9ucyBlbnYpIHRydWU7XG4gICAgZmx1eCA9IFtdO1xuICAgIHdpdGhfZGVsdGFfYWN0aXZpdGllcztcbiAgfVxuXG5sZXQgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCBjb3VudGVyID1cbiAgTW9kZWwubWFwX29ic2VydmFibGVzIChSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIGdyYXBoKSBlbnZcblxubGV0IGRvX21vZGlmaWNhdGlvbiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBleHRyYVxuICAgIG1vZGlmaWNhdGlvbiA9XG4gIGxldCBwcmludF9leHByX3ZhbCA9XG4gICAgS2FwcGFfcHJpbnRlci5wcmludF9leHByX3ZhbCAoUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBncmFwaClcbiAgaW5cbiAgbWF0Y2ggbW9kaWZpY2F0aW9uIHdpdGhcbiAgfCBQcmltaXRpdmVzLklURVJfUlVMRSAoKHYsIF8pLCByKSAtPlxuICAgIGxldCB0ZXh0ID1cbiAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiXG4gICAgICAgIChLYXBwYV9wcmludGVyLm1vZGlmaWNhdGlvbiB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5lbnYpXG4gICAgICAgIG1vZGlmaWNhdGlvblxuICAgIGluXG4gICAgbGV0IGdyYXBoJyA9XG4gICAgICBOYnIubWF5YmVfaXRlcmlcbiAgICAgICAgKGZ1biBfIGcgLT5cbiAgICAgICAgICBSdWxlX2ludGVycHJldGVyLmZvcmNlX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ1xuICAgICAgICAgICAgKFRyYWNlLlBFUlQgdGV4dCkgcilcbiAgICAgICAgZ3JhcGhcbiAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgZ3JhcGggdilcbiAgICBpblxuICAgIGxldCBncmFwaCcnLCBleHRyYScgPVxuICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBncmFwaCcgZXh0cmFcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCcnLCBzdGF0ZSwgZXh0cmEnXG4gIHwgUHJpbWl0aXZlcy5VUERBVEUgKGksIChleHByLCBfKSkgLT5cbiAgICBsZXQgZ3JhcGgnID0gUnVsZV9pbnRlcnByZXRlci5vdmVyd3JpdGVfdmFyIGkgY291bnRlciBncmFwaCBleHByIGluXG4gICAgbGV0IGdyYXBoJycsIGV4dHJhJyA9XG4gICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgIGVudiBjb3VudGVyIGdyYXBoJyBleHRyYVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoJycsIHN0YXRlLCBleHRyYSdcbiAgfCBQcmltaXRpdmVzLlNUT1AgcGV4cHIgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgcGV4cHIgPD4gW10gdGhlbiAoXG4gICAgICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGV4cHIgaW5cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLlNuYXBzaG90XG4gICAgICAgICAgICAgKCBmaWxlLFxuICAgICAgICAgICAgICAgUnVsZV9pbnRlcnByZXRlci5zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3OmZhbHNlIGVudiBjb3VudGVyXG4gICAgICAgICAgICAgICAgIGdyYXBoICkpXG4gICAgICApXG4gICAgaW5cbiAgICB0cnVlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5QUklOVCAocGVfZmlsZSwgcGVfZXhwcikgLT5cbiAgICBsZXQgZmlsZV9vcHQgPVxuICAgICAgbWF0Y2ggcGVfZmlsZSB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgXyAtPiBTb21lIChGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBwZV9maWxlKVxuICAgIGluXG4gICAgbGV0IGxpbmUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBwZV9leHByIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG91dHB1dHNcbiAgICAgICAgKERhdGEuUHJpbnRcbiAgICAgICAgICAgeyBEYXRhLmZpbGVfbGluZV9uYW1lID0gZmlsZV9vcHQ7IERhdGEuZmlsZV9saW5lX3RleHQgPSBsaW5lIH0pXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuUExPVEVOVFJZIC0+XG4gICAgbGV0ICgpID0gb3V0cHV0cyAoRGF0YS5QbG90IChvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIGNvdW50ZXIpKSBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCAocmF3LCBwZXhwcikgLT5cbiAgICBsZXQgZmlsZSA9XG4gICAgICBpZiBwZXhwciA9IFtdIHRoZW5cbiAgICAgICAgXCJzbmFwLmthXCJcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGV4cHJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBvdXRwdXRzXG4gICAgICAgIChEYXRhLlNuYXBzaG90XG4gICAgICAgICAgIChmaWxlLCBSdWxlX2ludGVycHJldGVyLnNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXcgZW52IGNvdW50ZXIgZ3JhcGgpKVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLkNGTE9XIChuYW1lLCBjYywgdGVzdHMpIC0+XG4gICAgbGV0IG5hbWUgPVxuICAgICAgbWF0Y2ggbmFtZSB3aXRoXG4gICAgICB8IFNvbWUgcyAtPiBzXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCJcbiAgICAgICAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzOmRlYnVnX21vZGUgfmRvbWFpbiB+d2l0aF9pZDpmYWxzZSkpXG4gICAgICAgICAgY2NcbiAgICBpblxuICAgICggZmFsc2UsXG4gICAgICBSdWxlX2ludGVycHJldGVyLmFkZF90cmFja2VkIH5vdXRwdXRzIGNjIG5hbWUgdGVzdHMgZ3JhcGgsXG4gICAgICBzdGF0ZSxcbiAgICAgIGV4dHJhIClcbiAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIChuYW1lLCBjYykgLT5cbiAgICBmYWxzZSwgUnVsZV9pbnRlcnByZXRlci5yZW1vdmVfdHJhY2tlZCBjYyBuYW1lIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlNQRUNJRVNfT0ZGIGZuIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBmbiBpblxuICAgIGZhbHNlLCBSdWxlX2ludGVycHJldGVyLnJlbW92ZV90cmFja2VkX3NwZWNpZXMgZmlsZSBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5ESU4gKHJlbCwgcykgLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHMgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAoZnVuIChuYW1lLCB4KSAtPiBmaWxlID0gbmFtZSAmJiB4LkRhdGEuZGluX2tpbmQgPSByZWwpXG4gICAgICAgICAgc3RhdGUuZmx1eFxuICAgICAgdGhlblxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICBcIkF0IHQ9JWYsIGU9JWk6IHRyYWNraW5nIERJTiBpbnRvIFxcXCIlc1xcXCIgd2FzIGFscmVhZHkgb25cIlxuICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICBmaWxlICkpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc3RhdGUuZmx1eCA8LSAoZmlsZSwgRmx1eG1hcC5jcmVhdGVfZmx1eCBlbnYgY291bnRlciByZWwpIDo6IHN0YXRlLmZsdXhcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5ESU5PRkYgcyAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcyBpblxuICAgIGxldCB0aGVzZSwgb3RoZXJzID1cbiAgICAgIExpc3QucGFydGl0aW9uIChmdW4gKG5hbWUsIF8pIC0+IG5hbWUgPSBmaWxlKSBzdGF0ZS5mbHV4XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKG5hbWUsIHgpIC0+XG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5ESU4gKG5hbWUsIEZsdXhtYXAuc3RvcF9mbHV4IGVudiBjb3VudGVyIHgpKSlcbiAgICAgICAgdGhlc2VcbiAgICBpblxuICAgIGxldCAoKSA9IHN0YXRlLmZsdXggPC0gb3RoZXJzIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlNQRUNJRVMgKHMsIGNjLCB0ZXN0cykgLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHMgaW5cbiAgICAoIGZhbHNlLFxuICAgICAgUnVsZV9pbnRlcnByZXRlci5hZGRfdHJhY2tlZF9zcGVjaWVzIGNjIGZpbGUgdGVzdHMgZ3JhcGgsXG4gICAgICBzdGF0ZSxcbiAgICAgIGV4dHJhIClcblxubGV0IHJlYyBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgIG1peF9jaGFuZ2VkID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBtaXhfY2hhbmdlZFxuICB8IGkgOjogdGFpbCAtPlxuICAgIGxldCBwZXJ0ID0gTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgaSBpblxuICAgIGxldCBtb2RfYWxhcm0gPVxuICAgICAgbWF0Y2ggcGVydC5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgXyAtPiBpc19hbGFybVxuICAgIGluXG4gICAgaWZcbiAgICAgIHN0YXRlLnBlcnR1cmJhdGlvbnNfYWxpdmUuKGkpXG4gICAgICAmJiBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSlcbiAgICAgICYmIFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgIChmc3QgcGVydC5QcmltaXRpdmVzLnByZWNvbmRpdGlvbilcbiAgICAgICYmIG1vZF9hbGFybVxuICAgIHRoZW4gKFxuICAgICAgbGV0IG1peF9jaGFuZ2VkID0gbWl4X2NoYW5nZWQgJiYgcGVydC5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjayBpblxuICAgICAgbGV0IHN0b3AsIGdyYXBoLCBzdGF0ZSwgdGFpbCcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKChzdG9wLCBncmFwaCwgc3RhdGUsIGV4dHJhKSBhcyBhY2MpIGVmZmVjdCAtPlxuICAgICAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICAgICAgICAgICAgICBlZmZlY3QpXG4gICAgICAgICAgKGZhbHNlLCBncmFwaCwgc3RhdGUsIHRhaWwpXG4gICAgICAgICAgcGVydC5QcmltaXRpdmVzLmVmZmVjdFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKSA8LSBmYWxzZSBpblxuICAgICAgbGV0IGFsaXZlID1cbiAgICAgICAgUnVsZV9pbnRlcnByZXRlci52YWx1ZV9ib29sIGNvdW50ZXIgZ3JhcGggKGZzdCBwZXJ0LlByaW1pdGl2ZXMucmVwZWF0KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGFsaXZlICYmIHBlcnQuUHJpbWl0aXZlcy5hbGFybSA9IE5vbmUgdGhlblxuICAgICAgICAgIHN0YXRlLmZvcmNlX3Rlc3RfcGVydHVyYmF0aW9ucyA8LSBpIDo6IHN0YXRlLmZvcmNlX3Rlc3RfcGVydHVyYmF0aW9uc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHN0YXRlLnBlcnR1cmJhdGlvbnNfYWxpdmUuKGkpIDwtIGFsaXZlIGluXG4gICAgICBsZXQgbWl4X2NoYW5nZWQnID0gbWl4X2NoYW5nZWQgfHwgcGVydC5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjayBpblxuICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgIHN0b3AsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWQnXG4gICAgICBlbHNlXG4gICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgICAgbWl4X2NoYW5nZWQnIHRhaWwnXG4gICAgKSBlbHNlXG4gICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgICBtaXhfY2hhbmdlZCB0YWlsXG5cbmxldCBkb19tb2RpZmljYXRpb25zIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGxpc3QgPVxuICBsZXQgc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKChzdG9wLCBncmFwaCwgc3RhdGUsIGV4dHJhKSBhcyBhY2MpIGVmZmVjdCAtPlxuICAgICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgICBhY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGRvX21vZGlmaWNhdGlvbiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBleHRyYVxuICAgICAgICAgICAgZWZmZWN0KVxuICAgICAgKGZhbHNlLCBncmFwaCwgc3RhdGUsIFtdKSBsaXN0XG4gIGluXG4gIGlmIHN0b3AgdGhlblxuICAgIHN0b3AsIGdyYXBoLCBzdGF0ZSwgZmFsc2VcbiAgZWxzZVxuICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICBmYWxzZSBleHRyYVxuXG5sZXQgaW5pdGlhbGl6ZSB+YmluZCB+cmV0dXJuIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoMCBzdGF0ZTBcbiAgICBpbml0X2wgPVxuICBsZXQgbWdyYXBoID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBtc3RhdGUgKGFsZywgY29tcGlsZWRfcnVsZSkgLT5cbiAgICAgICAgYmluZCBtc3RhdGUgKGZ1biAoc3RvcCwgc3RhdGUsIHN0YXRlMCkgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgYWxnIGluXG4gICAgICAgICAgICBsZXQgYWN0aW9ucyA9XG4gICAgICAgICAgICAgIGNvbXBpbGVkX3J1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgY3JlYXRpb25zX3NvcnQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gbCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoeCwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgeCA6OiBsXG4gICAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLkJpbmQgX1xuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfXG4gICAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICAgICAgICBbXSBhY3Rpb25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICggc3RvcCxcbiAgICAgICAgICAgICAgICBOYnIuaXRlcmlcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBzIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgUnVsZV9pbnRlcnByZXRlci5hcHBseV9naXZlbl9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudlxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlciBzIChUcmFjZS5JTklUIGNyZWF0aW9uc19zb3J0KSBjb21waWxlZF9ydWxlXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBSdWxlX2ludGVycHJldGVyLlN1Y2Nlc3MgcyAtPiBzXG4gICAgICAgICAgICAgICAgICAgIHwgUnVsZV9pbnRlcnByZXRlci5DbGFzaCB8IFJ1bGVfaW50ZXJwcmV0ZXIuQ29ycmVjdGVkXG4gICAgICAgICAgICAgICAgICAgIHwgUnVsZV9pbnRlcnByZXRlci5CbG9ja2VkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJCdWdnZWQgaW5pdGlhbCBydWxlXCIpKSlcbiAgICAgICAgICAgICAgICAgIHN0YXRlIHZhbHVlLFxuICAgICAgICAgICAgICAgIHN0YXRlMCApKSlcbiAgICAgIChyZXR1cm4gKGZhbHNlLCBncmFwaDAsIHN0YXRlMCkpXG4gICAgICBpbml0X2xcbiAgaW5cbiAgYmluZCBtZ3JhcGggKGZ1biAoXywgZ3JhcGgsIHN0YXRlMCkgLT5cbiAgICAgIGxldCBtaWRfZ3JhcGgsIF8gPVxuICAgICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgICBlbnYgY291bnRlciBncmFwaCBbXVxuICAgICAgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCwgc3RhdGUsIF8gPVxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgKGZ1biBpICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBtaXhfY2hhbmdlZCkgYXMgYWNjKSBfIC0+XG4gICAgICAgICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgICBzdGF0ZSBtaXhfY2hhbmdlZCBbIGkgXSlcbiAgICAgICAgICAoZmFsc2UsIG1pZF9ncmFwaCwgc3RhdGUwLCBmYWxzZSlcbiAgICAgICAgICBzdGF0ZTAucGVydHVyYmF0aW9uc19hbGl2ZVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgICAgKGZ1biBpIF8gLT4gc3RhdGUwLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKSA8LSB0cnVlKVxuICAgICAgICAgIHN0YXRlMC5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldFxuICAgICAgaW5cbiAgICAgIHJldHVybiAoc3RvcCwgZ3JhcGgsIHN0YXRlKSlcblxubGV0IG9uZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgaW5zdGFuY2UgPVxuICBsZXQgcHJldl9hY3Rpdml0eSA9IFJ1bGVfaW50ZXJwcmV0ZXIuYWN0aXZpdHkgZ3JhcGggaW5cbiAgbGV0IGFjdF9zdGFjayA9IHJlZiBbXSBpblxuICBsZXQgZmluYWxpemVfcmVnaXN0cmF0aW9uIG15X3N5bnRheF9yZF9pZCA9XG4gICAgbWF0Y2ggc3RhdGUuZmx1eCwgc3RhdGUud2l0aF9kZWx0YV9hY3Rpdml0aWVzIHdpdGhcbiAgICB8IFtdLCBmYWxzZSAtPiAoKVxuICAgIHwgbCwgXyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgc3RhdGUud2l0aF9kZWx0YV9hY3Rpdml0aWVzIHRoZW5cbiAgICAgICAgICBvdXRwdXRzIChEYXRhLkRlbHRhQWN0aXZpdGllcyAobXlfc3ludGF4X3JkX2lkLCAhYWN0X3N0YWNrKSlcbiAgICAgIGluXG4gICAgICBsZXQgbl9hY3Rpdml0eSA9IFJ1bGVfaW50ZXJwcmV0ZXIuYWN0aXZpdHkgZ3JhcGggaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gKF8sIGZsKSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gRmx1eG1hcC5pbmNyX2ZsdXhfaGl0IG15X3N5bnRheF9yZF9pZCBmbCBpblxuICAgICAgICAgICAgbWF0Y2ggZmwuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+ICgpXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgKGZ1biAoc3ludGF4X3JkX2lkLCAoXywgbmV3X2FjdCkpIC0+XG4gICAgICAgICAgICAgICAgICBGbHV4bWFwLmluY3JfZmx1eF9mbHV4IG15X3N5bnRheF9yZF9pZCBzeW50YXhfcmRfaWRcbiAgICAgICAgICAgICAgICAgICAgKGxldCBjYW5kID0gbmV3X2FjdCAvLiBuX2FjdGl2aXR5IGluXG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBjYW5kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfbmFuIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3QgPSBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQW4gaW5maW5pdGUgKG9yIE5hTikgYWN0aXZpdHkgdmFyaWF0aW9uIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gaWdub3JlZCBhdCB0PSVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0ICkpXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIDAuXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX3plcm8gfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgLT4gY2FuZClcbiAgICAgICAgICAgICAgICAgICAgZmwpXG4gICAgICAgICAgICAgICAgIWFjdF9zdGFjaylcbiAgICAgICAgICBsXG4gICAgICBpblxuICAgICAgYWN0X3N0YWNrIDo9IFtdXG4gIGluXG4gICgqIGxldCAoKSA9ICopXG4gICgqICAgRm9ybWF0LmVwcmludGYgXCIlYUAuXCIgKFJ1bGVfaW50ZXJwcmV0ZXIucHJpbnRfaW5qZWN0aW9ucyBlbnYpIGdyYXBoIGluICopXG4gIGxldCBhcHBsaWVkX3JpZF9zeW50YXgsIGZpbmFsX3N0ZXAsIGdyYXBoJyA9XG4gICAgUnVsZV9pbnRlcnByZXRlci5hcHBseV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaFxuICAgICAgZW52IGNvdW50ZXIgZ3JhcGggaW5zdGFuY2VcbiAgaW5cbiAgbWF0Y2ggYXBwbGllZF9yaWRfc3ludGF4IHdpdGhcbiAgfCBOb25lIC0+IGZpbmFsX3N0ZXAsIGdyYXBoJywgc3RhdGVcbiAgfCBTb21lIHN5bnRheF9yaWQgLT5cbiAgICBsZXQgcmVnaXN0ZXJfbmV3X2FjdGl2aXR5IHN5bnRheF9yZF9pZCBvbGRfYWN0IG5ld19hY3QgPVxuICAgICAgbWF0Y2ggc3RhdGUuZmx1eCwgc3RhdGUud2l0aF9kZWx0YV9hY3Rpdml0aWVzIHdpdGhcbiAgICAgIHwgW10sIGZhbHNlIC0+ICgpXG4gICAgICB8IGwsIF8gLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBhY3Rfc3RhY2sgOj0gKHN5bnRheF9yZF9pZCwgKG9sZF9hY3QsIG5ld19hY3QpKSA6OiAhYWN0X3N0YWNrXG4gICAgICAgIGluXG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gKF8sIGZsKSAtPlxuICAgICAgICAgICAgRmx1eG1hcC5pbmNyX2ZsdXhfZmx1eCBzeW50YXhfcmlkIHN5bnRheF9yZF9pZFxuICAgICAgICAgICAgICAobGV0IGNhbmQgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBmbC5EYXRhLmRpbl9raW5kIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+IG5ld19hY3QgLS4gb2xkX2FjdFxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT4gLS4ob2xkX2FjdCAvLiBwcmV2X2FjdGl2aXR5KVxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgLT5cbiAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgb2xkX2FjdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX3plcm8gfCBGUF9uYW4gfCBGUF9pbmZpbml0ZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIChuZXdfYWN0IC0uIG9sZF9hY3QpIC8uIG9sZF9hY3RcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBuZXdfYWN0IC0uIG9sZF9hY3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBjYW5kIHdpdGhcbiAgICAgICAgICAgICAgIHwgRlBfbmFuIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICBsZXQgY3QgPSBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyIGluXG4gICAgICAgICAgICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQW4gaW5maW5pdGUgKG9yIE5hTikgYWN0aXZpdHkgdmFyaWF0aW9uIGhhcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gaWdub3JlZCBhdCB0PSVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0ICkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIDAuXG4gICAgICAgICAgICAgICB8IEZQX3plcm8gfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgLT4gY2FuZClcbiAgICAgICAgICAgICAgZmwpXG4gICAgICAgICAgbFxuICAgIGluXG4gICAgbGV0IGZvcmNlX3Rlc3RlZCA9IHN0YXRlLmZvcmNlX3Rlc3RfcGVydHVyYmF0aW9ucyBpblxuICAgIGxldCAoKSA9IHN0YXRlLmZvcmNlX3Rlc3RfcGVydHVyYmF0aW9ucyA8LSBbXSBpblxuICAgIGxldCBncmFwaCcnLCBleHRyYV9wZXJ0ID1cbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgcmVnaXN0ZXJfbmV3X2FjdGl2aXR5IGVudiBjb3VudGVyIGdyYXBoJyBmb3JjZV90ZXN0ZWRcbiAgICBpblxuICAgIGxldCAoKSA9IGZpbmFsaXplX3JlZ2lzdHJhdGlvbiBzeW50YXhfcmlkIGluXG4gICAgbGV0IHN0b3AsIGdyYXBoJycnLCBzdGF0ZScsIF9taXhfY2hhbmdlZCA9XG4gICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCcnIHN0YXRlXG4gICAgICAgIGZhbHNlIGV4dHJhX3BlcnRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGkgXyAtPiBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbPHY+T2J0YWluZWRAICVhQF1ALlwiXG4gICAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIucHJpbnQgZW52KVxuICAgICAgICAgIGdyYXBoJycnXG4gICAgaW5cbiAgICBmaW5hbF9zdGVwIHx8IHN0b3AsIGdyYXBoJycnLCBzdGF0ZSdcblxubGV0IHJlYyBwZXJ0dXJiYXRlX3VudGlsX2ZpcnN0X2JhY2t0cmFjayB+ZGVidWdfbW9kZSBlbnYgY291bnRlciB+b3V0cHV0c1xuICAgIChzdG9wLCBncmFwaCwgc3RhdGUsIGR0KSA9XG4gIG1hdGNoIHN0YXRlLnN0b3BwaW5nX3RpbWVzIHdpdGhcbiAgfCBbXSAtPiBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCBmYWxzZVxuICB8ICh0aSwgcGUpIDo6IHRhaWwgLT5cbiAgICBpZiBOYnIuaXNfc21hbGxlciB0aSAoTmJyLkYgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgKy4gZHQpKSB0aGVuIChcbiAgICAgIGxldCBwZXJ0ID0gTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUgaW5cbiAgICAgIGlmIG5vdCBwZXJ0LlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrIHRoZW4gKFxuICAgICAgICBsZXQgc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBkdCcgPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBOYnIudG9fZmxvYXQgKE5ici5zdWIgdGkgKE5ici5GIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyKSkpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBkdFxuICAgICAgICAgIHwgU29tZSBkdGkgLT5cbiAgICAgICAgICAgIGxldCBkdCcgPSBkdCAtLiBkdGkgaW5cbiAgICAgICAgICAgICgqc2V0IHRpbWUgZm9yIHBlcnR1cmJhdGUgKilcbiAgICAgICAgICAgIGlmIENvdW50ZXIub25lX3RpbWVfYWR2YW5jZSBjb3VudGVyIGR0aSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IHN0b3AnLCBncmFwaCcsIHN0YXRlJywgXyA9XG4gICAgICAgICAgICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06dHJ1ZSBlbnYgY291bnRlciBncmFwaFxuICAgICAgICAgICAgICAgICAgc3RhdGUgZmFsc2UgWyBwZSBdXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0YWlsJyA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcGVydC5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdGFpbFxuICAgICAgICAgICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgICAgICAgICBpZiBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihwZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBjb21wYXJlX3N0b3BzIFsgTmJyLmFkZCB0aSBuLCBwZSBdIHRhaWxcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGFpbFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBzdGF0ZScuc3RvcHBpbmdfdGltZXMgPC0gdGFpbCcgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc3RhdGUnLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihwZSkgPC0gdHJ1ZSBpblxuICAgICAgICAgICAgICAoKiBBcmd1bWVudCB0byByZXNldCBvbmx5IHBlIGFuZCBub3QgYWxsIHBlcnRzIGlzIFwiaWZcbiAgICAgICAgICAgICAgICAgeW91J3JlIG5vdCBiYWNrdHJhY2tpbmcsIG5vdGhpbmcgZGVwZW5kcyB1cG9uXG4gICAgICAgICAgICAgICAgIHlvdVwiLi4uIFdlJ2QgYmV0dGVyIGdldCBzdXJlIG9mIHRoYXQgOi0pICopXG4gICAgICAgICAgICAgIHN0b3AnLCBncmFwaCcsIHN0YXRlJywgZHQnXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlLCBkdCdcbiAgICAgICAgaW5cblxuICAgICAgICBwZXJ0dXJiYXRlX3VudGlsX2ZpcnN0X2JhY2t0cmFjayB+ZGVidWdfbW9kZSBlbnYgY291bnRlciB+b3V0cHV0c1xuICAgICAgICAgIChzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIGR0JylcbiAgICAgICAgKCogaWYgc29tZSBwZXJ0dXJiYXRpb24gbmVlZHMgYmFja3RyYWNrLCByZXR1cm4gdGhlIHBlcnR1cmJhdGlvbiAqKVxuICAgICAgKSBlbHNlXG4gICAgICAgIHN0b3AsIGdyYXBoLCBzdGF0ZSwgZHQsIHRydWVcbiAgICApIGVsc2VcbiAgICAgIHN0b3AsIGdyYXBoLCBzdGF0ZSwgZHQsIGZhbHNlXG5cbmxldCBwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlID1cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCAodGksIHBlKSA6OiB0YWlsIC0+XG4gICAgbGV0IHRhaWwnID1cbiAgICAgIG1hdGNoIChNb2RlbC5nZXRfcGVydHVyYmF0aW9uIGVudiBwZSkuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdGFpbFxuICAgICAgfCBTb21lIG4gLT4gTGlzdF91dGlsLm1lcmdlX3VuaXEgY29tcGFyZV9zdG9wcyBbIE5ici5hZGQgdGkgbiwgcGUgXSB0YWlsXG4gICAgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5zdG9wcGluZ190aW1lcyA8LSB0YWlsJyBpblxuICAgIGlmIENvdW50ZXIub25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCB+dGkgY291bnRlciB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGxldCBvdXRwdXRzIGNvdW50ZXInIHRpbWUgPVxuICAgICAgICAgIGxldCBjYW5kID1cbiAgICAgICAgICAgIG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggKENvdW50ZXIuZmFrZV90aW1lIGNvdW50ZXInIHRpbWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICAgICAgaW5cbiAgICAgICAgQ291bnRlci5maWxsIH5vdXRwdXRzIGNvdW50ZXIgfmR0OjAuXG4gICAgICBpblxuICAgICAgbGV0IHN0b3AsIGdyYXBoJywgc3RhdGUnLCBfID1cbiAgICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06dHJ1ZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgICAgIGZhbHNlIFsgcGUgXVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgICAgKGZ1biBpIF8gLT4gc3RhdGUnLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKSA8LSB0cnVlKVxuICAgICAgICAgIHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldFxuICAgICAgaW5cbiAgICAgIHN0b3AsIGdyYXBoJywgc3RhdGUnXG4gICAgKSBlbHNlXG4gICAgICB0cnVlLCBncmFwaCwgc3RhdGVcblxubGV0IHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyXG4gICAgZ3JhcGggc3RhdGUgZHQgPVxuICBsZXQgKCkgPVxuICAgIGxldCBvdXRwdXRzIGNvdW50ZXInIHRpbWUgPVxuICAgICAgbGV0IGNhbmQgPVxuICAgICAgICBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIChDb3VudGVyLmZha2VfdGltZSBjb3VudGVyJyB0aW1lKVxuICAgICAgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCBjYW5kID4gMSB0aGVuIG91dHB1dHMgKERhdGEuUGxvdCBjYW5kKVxuICAgIGluXG4gICAgQ291bnRlci5maWxsIH5vdXRwdXRzIGNvdW50ZXIgfmR0XG4gIGluXG4gIGxldCBjb250aW51ZSA9IENvdW50ZXIub25lX3RpbWVfYWR2YW5jZSBjb3VudGVyIGR0IGluXG4gIGxldCBwaWNrZWRfaW5zdGFuY2UgPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIucGlja19hbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSBlbnYgZ3JhcGhcbiAgaW5cbiAgbGV0IHN0b3AsIGdyYXBoJywgc3RhdGUnLCBtaXhfY2hhbmdlZCA9XG4gICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgIGZhbHNlIHN0YXRlLnRpbWVfZGVwZW5kZW50X3BlcnRzXG4gIGluXG4gIGlmIChub3QgY29udGludWUpIHx8IHN0b3AgdGhlblxuICAgIHRydWUsIGdyYXBoJywgc3RhdGUnXG4gIGVsc2UgaWZcbiAgICAobm90IG1peF9jaGFuZ2VkKVxuICAgIHx8IFJ1bGVfaW50ZXJwcmV0ZXIuaXNfY29ycmVjdF9pbnN0YW5jZSBlbnYgZ3JhcGgnIHBpY2tlZF9pbnN0YW5jZVxuICB0aGVuXG4gICAgb25lX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXIgZ3JhcGgnIHN0YXRlJ1xuICAgICAgcGlja2VkX2luc3RhbmNlXG4gIGVsc2VcbiAgICBDb3VudGVyLm9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgY291bnRlciwgZ3JhcGgnLCBzdGF0ZSdcblxubGV0IGFfbG9vcCB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+ZHVtcElmRGVhZGxvY2tlZCB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnZcbiAgICBjb3VudGVyIGdyYXBoIHN0YXRlID1cbiAgbGV0IGFjdGl2aXR5ID0gUnVsZV9pbnRlcnByZXRlci5hY3Rpdml0eSBncmFwaCBpblxuICBsZXQgcmQgPSBSYW5kb20uU3RhdGUuZmxvYXQgKFJ1bGVfaW50ZXJwcmV0ZXIuZ2V0X3JhbmRvbV9zdGF0ZSBncmFwaCkgMS4wIGluXG4gIGxldCBkdCA9IGFic19mbG9hdCAobG9nIHJkIC8uIGFjdGl2aXR5KSBpblxuXG4gIGxldCBvdXQgPVxuICAgICgqQWN0aXZpdHkgaXMgbnVsbCBvciBkdCBpcyBpbmZpbml0ZSopXG4gICAgaWYgKG5vdCAoYWN0aXZpdHkgPiAwLikpIHx8IGNsYXNzaWZ5X2Zsb2F0IGR0ID0gRlBfaW5maW5pdGUgdGhlblxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAoZnVuIChfLCBwZSkgLT5cbiAgICAgICAgICAgIChNb2RlbC5nZXRfcGVydHVyYmF0aW9uIGVudiBwZSkuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2spXG4gICAgICAgICAgc3RhdGUuc3RvcHBpbmdfdGltZXNcbiAgICAgIHRoZW5cbiAgICAgICAgcGVydHVyYmF0ZV93aXRoX2JhY2t0cmFjayB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgICAgIHN0YXRlLnN0b3BwaW5nX3RpbWVzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBkdW1wSWZEZWFkbG9ja2VkIHRoZW5cbiAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgKERhdGEuU25hcHNob3RcbiAgICAgICAgICAgICAgICAgKCBcImRlYWRsb2NrLmthXCIsXG4gICAgICAgICAgICAgICAgICAgUnVsZV9pbnRlcnByZXRlci5zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3OmZhbHNlIGVudiBjb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICBncmFwaCApKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICBcIkEgZGVhZGxvY2sgd2FzIHJlYWNoZWQgYWZ0ZXIgJWQgZXZlbnRzIGFuZCAlRXMgKEFjdGl2aXR5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgPSAlLjVmKVwiXG4gICAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5ICkpXG4gICAgICAgIGluXG4gICAgICAgIHRydWUsIGdyYXBoLCBzdGF0ZVxuICAgICAgKVxuICAgIGVsc2UgKFxuICAgICAgKCphY3Rpdml0eSBpcyBwb3NpdGl2ZSopXG4gICAgICBtYXRjaCBzdGF0ZS5zdG9wcGluZ190aW1lcyB3aXRoXG4gICAgICB8ICh0aSwgXykgOjogX1xuICAgICAgICB3aGVuIE5ici5pc19zbWFsbGVyIHRpIChOYnIuRiAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciArLiBkdCkpIC0+XG4gICAgICAgIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgZHQnLCBuZWVkc19iYWNrdHJhY2sgPVxuICAgICAgICAgIHBlcnR1cmJhdGVfdW50aWxfZmlyc3RfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIGVudiBjb3VudGVyIH5vdXRwdXRzXG4gICAgICAgICAgICAoZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZHQpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5lZWRzX2JhY2t0cmFjayB0aGVuXG4gICAgICAgICAgcGVydHVyYmF0ZV93aXRoX2JhY2t0cmFjayB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCdcbiAgICAgICAgICAgIHN0YXRlJyBzdGF0ZScuc3RvcHBpbmdfdGltZXNcbiAgICAgICAgZWxzZSBpZiBzdG9wIHRoZW5cbiAgICAgICAgICBzdG9wLCBncmFwaCcsIHN0YXRlJ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmVndWxhcl9sb29wX2JvZHkgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52XG4gICAgICAgICAgICBjb3VudGVyIGdyYXBoJyBzdGF0ZScgZHQnXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmVndWxhcl9sb29wX2JvZHkgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXJcbiAgICAgICAgICBncmFwaCBzdGF0ZSBkdFxuICAgIClcbiAgaW5cbiAgb3V0XG5cbmxldCBlbmRfb2Zfc2ltdWxhdGlvbiB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGxldCBfID0gc3RhdGUuaW5pdF9zdG9wcGluZ190aW1lcyBpblxuICBsZXQgKCkgPVxuICAgIGxldCBvdXRwdXRzIGNvdW50ZXInIHRpbWUgPVxuICAgICAgbGV0IGNhbmQgPVxuICAgICAgICBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIChDb3VudGVyLmZha2VfdGltZSBjb3VudGVyJyB0aW1lKVxuICAgICAgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCBjYW5kID4gMSB0aGVuIG91dHB1dHMgKERhdGEuUGxvdCBjYW5kKVxuICAgIGluXG4gICAgQ291bnRlci5maWxsIH5vdXRwdXRzIGNvdW50ZXIgfmR0OjAuXG4gIGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKG5hbWUsIGUpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICBcIlRyYWNraW5nIERJTiBpbnRvIFxcXCIlc1xcXCIgd2FzIG5vdCBzdG9wcGVkIGJlZm9yZSBlbmQgb2YgXFxcbiAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgbmFtZSApKVxuICAgICAgaW5cbiAgICAgIG91dHB1dHMgKERhdGEuRElOIChuYW1lLCBGbHV4bWFwLnN0b3BfZmx1eCBlbnYgY291bnRlciBlKSkpXG4gICAgc3RhdGUuZmx1eFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ZSA9IHtcbiAgZ3JhcGg6IEVkZ2VzLnQ7XG4gIHRpbWU6IGZsb2F0O1xuICBldmVudDogaW50O1xuICBjb25uZWN0ZWRfY29tcG9uZW50czogQWdlbnQuU2V0TWFwLlNldC50IE1vZHMuSW50TWFwLnQgb3B0aW9uO1xufVxuXG50eXBlIHN1bW1hcnkgPSB7IHVuYXJ5X2Rpc3RhbmNlczogKGludCAqIGludCkgb3B0aW9uIH1cblxubGV0IGluaXRfc3RhdGUgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICB7XG4gICAgZ3JhcGggPSBFZGdlcy5lbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICB0aW1lID0gMC47XG4gICAgZXZlbnQgPSAwO1xuICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIChpZiB3aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzIHRoZW5cbiAgICAgICAgIFNvbWUgTW9kcy5JbnRNYXAuZW1wdHlcbiAgICAgICBlbHNlXG4gICAgICAgICBOb25lKTtcbiAgfVxuXG5sZXQgY2Nfb2ZfYWdlbnQgYWcgZSB3b3JrID1cbiAgbGV0IHJlYyBmb2xkX2FyaXR5X2xpc3QgZiB4IGFyaXR5IGFjYyA9XG4gICAgaWYgeCA9IGFyaXR5IHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGZvbGRfYXJpdHlfbGlzdCBmIChzdWNjIHgpIGFyaXR5IChmIGFjYyB4KVxuICBpblxuXG4gIGxldCBhZGRfYWdlbnQgYSBlICh3b3JrLCBtb3JwaGlzbSwgdG9kb3MpID1cbiAgICBsZXQgYWlkID0gQWdlbnQuaWQgYSBpblxuICAgIGxldCBhdHlwZSA9IEFnZW50LnNvcnQgYSBpblxuICAgIGxldCBhcml0eSA9IEVkZ2VzLmdldF9zaXRlcyBhaWQgZSBpblxuICAgIGxldCB3X2FnZW50LCB3b3JrJyA9IFBhdHRlcm4ubmV3X25vZGUgd29yayBhdHlwZSBpblxuICAgIGxldCB0b2RvcycgPSBmb2xkX2FyaXR5X2xpc3QgKGZ1biBhY2MgeCAtPiAoYWlkLCB4KSA6OiBhY2MpIDAgYXJpdHkgdG9kb3MgaW5cbiAgICBsZXQgd29yaycnID1cbiAgICAgIGZvbGRfYXJpdHlfbGlzdFxuICAgICAgICAoZnVuIHcgeCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGludGVybmFsID0gRWRnZXMuZ2V0X2ludGVybmFsIGFpZCB4IGUgaW5cbiAgICAgICAgICAgIFBhdHRlcm4ubmV3X2ludGVybmFsX3N0YXRlIHcgKHdfYWdlbnQsIHgpIGludGVybmFsXG4gICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gdylcbiAgICAgICAgMCBhcml0eSB3b3JrJ1xuICAgIGluXG4gICAgd19hZ2VudCwgd29yaycnLCAoYWlkLCB3X2FnZW50KSA6OiBtb3JwaGlzbSwgdG9kb3MnXG4gIGluXG5cbiAgbGV0IGFkZF9saW5rcyAod29yaywgbW9ycGhpc20sIHRvZG9zKSAoYWlkLCB4KSBlID1cbiAgICBsZXQgXywgd19hZ2VudCA9IExpc3QuZmluZCAoZnVuIChpZCwgXykgLT4gaWQgPSBhaWQpIG1vcnBoaXNtIGluXG4gICAgbGV0IG5vdF9hZ2VudCAoaWQsIHMpID0gbm90IChpZCA9IGFpZCAmJiB4ID0gcykgaW5cbiAgICBtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGFpZCB4IGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHdvcmsnID0gUGF0dGVybi5uZXdfZnJlZSB3b3JrICh3X2FnZW50LCB4KSBpblxuICAgICAgbGV0IHRvZG9zJyA9IExpc3QuZmlsdGVyIG5vdF9hZ2VudCB0b2RvcyBpblxuICAgICAgd29yaycsIG1vcnBoaXNtLCB0b2RvcydcbiAgICB8IFNvbWUgKGIsIHkpIC0+XG4gICAgICBsZXQgYmlkID0gQWdlbnQuaWQgYiBpblxuICAgICAgbGV0IG5vdF9hZ2VudHMgKGlkLCBzKSA9XG4gICAgICAgIG5vdF9hZ2VudCAoaWQsIHMpICYmIG5vdCAoaWQgPSBBZ2VudC5pZCBiICYmIHMgPSB5KVxuICAgICAgaW5cbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBfLCB3Yl9hZ2VudCA9IExpc3QuZmluZCAoZnVuIChpZCwgXykgLT4gaWQgPSBiaWQpIG1vcnBoaXNtIGluXG4gICAgICAgICBsZXQgd29yaycgPSBQYXR0ZXJuLm5ld19saW5rIHdvcmsgKHdfYWdlbnQsIHgpICh3Yl9hZ2VudCwgeSkgaW5cbiAgICAgICAgIGxldCB0b2RvcycgPSBMaXN0LmZpbHRlciBub3RfYWdlbnRzIHRvZG9zIGluXG4gICAgICAgICB3b3JrJywgbW9ycGhpc20sIHRvZG9zJ1xuICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICBsZXQgd2JfYWdlbnQsIHdvcmsnLCBtb3JwaGlzbScsIHRvZG9zJyA9XG4gICAgICAgICAgIGFkZF9hZ2VudCBiIGUgKHdvcmssIG1vcnBoaXNtLCB0b2RvcylcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgd29yaycnID0gUGF0dGVybi5uZXdfbGluayB3b3JrJyAod19hZ2VudCwgeCkgKHdiX2FnZW50LCB5KSBpblxuICAgICAgICAgbGV0IHRvZG9zJycgPSBMaXN0LmZpbHRlciBub3RfYWdlbnRzIHRvZG9zJyBpblxuICAgICAgICAgd29yaycnLCBtb3JwaGlzbScsIHRvZG9zJycpXG4gIGluXG5cbiAgbGV0IHJlYyB3b3JraW5nX3RvZG8gKHdvcmssIG1vcnBoaXNtLCB0b2RvKSA9XG4gICAgbWF0Y2ggdG9kbyB3aXRoXG4gICAgfCBbXSAtPiBtb3JwaGlzbSwgd29ya1xuICAgIHwgcG9ydCA6OiBfIC0+XG4gICAgICBsZXQgd29yaycsIG1vcnBoaXNtJywgdG9kbycgPSBhZGRfbGlua3MgKHdvcmssIG1vcnBoaXNtLCB0b2RvKSBwb3J0IGUgaW5cbiAgICAgIHdvcmtpbmdfdG9kbyAod29yaycsIG1vcnBoaXNtJywgdG9kbycpXG4gIGluXG5cbiAgbGV0IF8sIHcsIG0sIHQgPSBhZGRfYWdlbnQgYWcgZSAod29yaywgW10sIFtdKSBpblxuICB3b3JraW5nX3RvZG8gKHcsIG0sIHQpXG5cbmxldCBjY19vZl9zdGF0ZSB+ZGVidWdfbW9kZSBzIGVudiA9XG4gIGxldCBjY19vZl9yb290IGFnZW50IGUnID1cbiAgICBsZXQgd29yayA9IFBhdHRlcm4uYmVnaW5fbmV3IGUnIGluXG4gICAgbGV0IG1vcnBoaXNtLCB3b3JrJyA9IGNjX29mX2FnZW50IGFnZW50IHMuZ3JhcGggd29yayBpblxuICAgIGxldCBlbiwgXywgYywgaSA9IFBhdHRlcm4uZmluaXNoX25ldyB+ZGVidWdfbW9kZSB3b3JrJyBpblxuICAgIGVuLCBMaXN0Lm1hcCAoZnVuIChjaWQsIChhaWQsIF8pKSAtPiBjaWQsIGFpZCkgbW9ycGhpc20sIGMsIGlcbiAgaW5cbiAgbWF0Y2ggcy5jb25uZWN0ZWRfY29tcG9uZW50cyB3aXRoXG4gIHwgU29tZSBjY19tYXBzIC0+XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biByb290IGNjX21hcCAoZSwgYWNjKSAtPlxuICAgICAgICBBZ2VudC5TZXRNYXAuU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIGFnZW50IChlJywgYWNjJykgLT5cbiAgICAgICAgICAgIGlmIEFnZW50LmlkIGFnZW50ID0gcm9vdCB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVuLCByLCBjLCBpID0gY2Nfb2Zfcm9vdCBhZ2VudCBlJyBpblxuICAgICAgICAgICAgICBlbiwgKHIsIGMsIGkpIDo6IGFjYydcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlJywgYWNjJylcbiAgICAgICAgICBjY19tYXAgKGUsIGFjYykpXG4gICAgICBjY19tYXBzIChlbnYsIFtdKVxuICB8IE5vbmUgLT4gZW52LCBbXVxuXG5sZXQgYnJlYWtfYXBhcnRfY2MgZ3JhcGggY2NzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGNjc1xuICB8IFNvbWUgKG9yaWdpbl9jYywgbmV3X2NjKSAtPlxuICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgQWdlbnQuU2V0TWFwLlNldC5lbXB0eSBvcmlnaW5fY2MgY2NzIGluXG4gICAgaWYgQWdlbnQuU2V0TWFwLlNldC5pc19lbXB0eSBzZXQgdGhlblxuICAgICAgY2NzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnNldCwgb3NldCcgPVxuICAgICAgICBBZ2VudC5TZXRNYXAuU2V0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW4gKHgsIF8pIC0+IEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHggZ3JhcGggPSBTb21lIG5ld19jYylcbiAgICAgICAgICBzZXRcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgbmV3X2NjIG5zZXQgKE1vZHMuSW50TWFwLmFkZCBvcmlnaW5fY2Mgb3NldCcgY2NzKVxuICAgIClcblxubGV0IG1lcmdlX2NjIGNjcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBjY3NcbiAgfCBTb21lIChjYzEsIGNjMikgLT5cbiAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBBZ2VudC5TZXRNYXAuU2V0LmVtcHR5IGNjMSBjY3MgaW5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucG9wIGNjMiBjY3Mgd2l0aFxuICAgIHwgTm9uZSwgXyAtPiBjY3NcbiAgICB8IFNvbWUgc2V0MiwgY2NzJyAtPlxuICAgICAgTW9kcy5JbnRNYXAuYWRkIGNjMSAoQWdlbnQuU2V0TWFwLlNldC51bmlvbiBzZXQxIHNldDIpIGNjcycpXG5cbmxldCBkb19uZWdhdGl2ZV9wYXJ0ICgoYSwgXyksIHMpIChncmFwaCwgY2NzKSA9XG4gIG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gYSBzIGdyYXBoIHdpdGhcbiAgfCBOb25lIC0+IEVkZ2VzLnJlbW92ZV9mcmVlIGEgcyBncmFwaCwgY2NzXG4gIHwgU29tZSAoKGEnLCBfKSwgcycpIC0+XG4gICAgbGV0IGdyYXBoJywgY2NfY2hhbmdlID0gRWRnZXMucmVtb3ZlX2xpbmsgYSBzIGEnIHMnIGdyYXBoIGluXG4gICAgKCBncmFwaCcsXG4gICAgICAobWF0Y2ggY2NzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgY2NzIC0+IFNvbWUgKGJyZWFrX2FwYXJ0X2NjIGdyYXBoJyBjY3MgY2NfY2hhbmdlKSkgKVxuXG5sZXQgZG9fYWN0aW9uIHNpZ3MgKChncmFwaCwgY2NzKSBhcyBwYWNrKSA9IGZ1bmN0aW9uXG4gIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKCgoaWQsIHR5KSBhcyBhZyksIF9ncmFwaHMpIC0+XG4gICAgKCBzbmQgQEAgRWRnZXMuYWRkX2FnZW50IH5pZCBzaWdzIHR5IGdyYXBoLFxuICAgICAgT3B0aW9uX3V0aWwubWFwIChNb2RzLkludE1hcC5hZGQgaWQgKEFnZW50LlNldE1hcC5TZXQuc2luZ2xldG9uIGFnKSkgY2NzIClcbiAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKChhLCBfKSwgcyksIGkpIC0+XG4gICAgRWRnZXMuYWRkX2ludGVybmFsIGEgcyBpIGdyYXBoLCBjY3NcbiAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKCgoYTEsIHMxKSBhcyB4MSksICgoYTIsIHMyKSBhcyB4MikpXG4gIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvICgoKGExLCBzMSkgYXMgeDEpLCAoKGEyLCBzMikgYXMgeDIpKSAtPlxuICAgIGxldCBncmFwaCcsIGNjcycgPSBkb19uZWdhdGl2ZV9wYXJ0IHgyIChkb19uZWdhdGl2ZV9wYXJ0IHgxIHBhY2spIGluXG4gICAgbGV0IGdyYXBoJycsIGNjX2NoYW5nZSA9IEVkZ2VzLmFkZF9saW5rIGExIHMxIGEyIHMyIGdyYXBoJyBpblxuICAgICggZ3JhcGgnJyxcbiAgICAgIChtYXRjaCBjY3MnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgY2NzJyAtPiBTb21lIChtZXJnZV9jYyBjY3MnIGNjX2NoYW5nZSkpIClcbiAgfCBJbnN0YW50aWF0aW9uLkZyZWUgKCgoYSwgXyksIHMpIGFzIHgpIC0+XG4gICAgbGV0IGdyYXBoJywgY2NzJyA9IGRvX25lZ2F0aXZlX3BhcnQgeCBwYWNrIGluXG4gICAgRWRnZXMuYWRkX2ZyZWUgYSBzIGdyYXBoJywgY2NzJ1xuICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoaWQsIHR5KSBhcyBhKSAtPlxuICAgIGxldCBncmFwaCcsIGNjcycgPVxuICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgKGZ1biBzdCBzIC0+IGRvX25lZ2F0aXZlX3BhcnQgKGEsIHMpIHN0KVxuICAgICAgICBwYWNrIChTaWduYXR1cmUuYXJpdHkgc2lncyB0eSlcbiAgICBpblxuICAgIChtYXRjaCBjY3MnIHdpdGhcbiAgICB8IE5vbmUgLT4gRWRnZXMucmVtb3ZlX2FnZW50IGlkIGdyYXBoJywgTm9uZVxuICAgIHwgU29tZSBjY3MnIC0+XG4gICAgICAobWF0Y2ggTW9kcy5JbnRNYXAucG9wIGlkIGNjcycgd2l0aFxuICAgICAgfCBOb25lLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIHgsIGNjcycnIC0+XG4gICAgICAgIGxldCAoKSA9IGFzc2VydCAoQWdlbnQuU2V0TWFwLlNldC5pc19zaW5nbGV0b24geCkgaW5cbiAgICAgICAgRWRnZXMucmVtb3ZlX2FnZW50IGlkIGdyYXBoJywgU29tZSBjY3MnJykpXG5cbmxldCBpbnZvbHZlZF9hZ2VudHMgbCA9XG4gIExpc3RfdXRpbC5tYXBfb3B0aW9uXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhIC0+IFNvbWUgYVxuICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfIC0+XG4gICAgICAgIE5vbmUpXG4gICAgbFxuXG5sZXQgc3RvcmVfZGlzdGFuY2VzIHIgZ3JhcGggPSBmdW5jdGlvblxuICB8IFtdIHwgWyBfIF0gfCBfIDo6IF8gOjogXyA6OiBfIC0+IE5vbmVcbiAgfCBbIGNjMTsgY2MyIF0gLT5cbiAgICBsZXQgY2MxX2FncyA9IGludm9sdmVkX2FnZW50cyBjYzEgaW5cbiAgICBsZXQgY2MyX2FncyA9IGludm9sdmVkX2FnZW50cyBjYzIgaW5cbiAgICAobWF0Y2ggRWRnZXMuYXJlX2Nvbm5lY3RlZCBncmFwaCBjYzFfYWdzIGNjMl9hZ3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBhdGggLT4gU29tZSAociwgTGlzdC5sZW5ndGggcGF0aCkpXG5cbmxldCB0ZXN0X3Bhc3Nfb24gZ3JhcGggPSBmdW5jdGlvblxuICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZyAtPiBFZGdlcy5pc19hZ2VudCBhZyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgoYWcsIHMpLCBzdCkgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBFZGdlcy5pc19pbnRlcm5hbCBzdCAoQWdlbnQuaWQgYWcpIHMgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgKGFnLCBzKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIEVkZ2VzLmlzX2ZyZWUgKEFnZW50LmlkIGFnKSBzIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCAoYWcsIHMpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgbm90IChFZGdlcy5pc19mcmVlIChBZ2VudC5pZCBhZykgcyBncmFwaClcbiAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICgoYWcsIHMpLCAoYWcnLCBzJykpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgRWRnZXMuaXNfYWdlbnQgYWcnIGdyYXBoXG4gICAgJiYgRWRnZXMubGlua19leGlzdHMgKEFnZW50LmlkIGFnKSBzIChBZ2VudC5pZCBhZycpIHMnIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlICgoYWcsIHMpLCAoYWdfdHksIHMnKSkgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaFxuICAgICYmXG4gICAgKG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gKEFnZW50LmlkIGFnKSBzIGdyYXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgKChfLCBkc3RfYWdfdHkpLCBkc3RfcykgLT4gZHN0X2FnX3R5ID0gYWdfdHkgJiYgZHN0X3MgPSBzJylcblxubGV0IHRlc3RzX3Bhc3Nfb24gZ3JhcGggdGVzdHMgPVxuICBMaXN0LmZvcl9hbGwgKHRlc3RfcGFzc19vbiBncmFwaCkgKExpc3QuY29uY2F0IHRlc3RzKVxuXG5sZXQgaXNfc3RlcF90cmlnZ2VyYWJsZV9vbl9lZGdlcyBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuRHVtbXkgXyAtPiB0cnVlXG4gIHwgVHJhY2UuUnVsZSAoX3IsIGV2ZW50LCBfaW5mbykgLT5cbiAgICB0ZXN0c19wYXNzX29uIGdyYXBoIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgfCBUcmFjZS5PYnMgKF8sIHRlc3RzLCBfKSAtPiB0ZXN0c19wYXNzX29uIGdyYXBoIHRlc3RzXG5cbmxldCBpc19zdGVwX3RyaWdnZXJhYmxlIHN0YXRlID0gaXNfc3RlcF90cmlnZ2VyYWJsZV9vbl9lZGdlcyBzdGF0ZS5ncmFwaFxuXG4oKiBUaGVyZSBpcyBhIHN1YnRlbHR5IHdoZW4gZXhlY3V0aW5nIGEgc2VxdWVuY2Ugb2YgYWN0aW9ucy4gSW5kZWVkLFxuICAgd2hlbmV2ZXIgYSBydWxlIGJvdGggY3JlYXRlcyBhbmQgcmVtb3ZlcyBhZ2VudHMsIHRoZXJlIGlzIGN1cnJlbnRseVxuICAgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIGNyZWF0aW9uIGFjdGlvbnMgYXJlIHBsYWNlZCBiZWZvcmUgdGhlIHJlbW92YWxcbiAgIGFjdGlvbnMgaW4gW2V2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc10uIFRoaXMgY2FuIGJlIGFuIGlzc3VlIGluIGFcbiAgIGNhc2Ugd2hlcmUgYW4gZXZlbnQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyB0d28gYWN0aW9ucyBmb3IgZXhhbXBsZTpcbiAgIFtcImNyZWF0ZSBhZ2VudCB3aXRoIGlkIDhcIiwgXCJyZW1vdmUgYWdlbnQgd2l0aCBpZCA4XCJdLiBJbiB0aGlzIGNhc2UsXG4gICBhZ2VudCBpZCA4IGlzIG5vdCBhdmFpbGFibGUgd2hlbiB0aGUgY3JlYXRpb24gYWN0aW9uIGlzIHBlcmZvcm1lZCBhbmRcbiAgIHNvIHRoZSBbRWRnZXNdIG1vZHVsZSB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuXG4gICBBcyBhIHRlbXBvcmFyeSBmaXgsIHdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBkZWxldGlvbiBhY3Rpb25zIGFyZVxuICAgZXhlY3V0ZWQgZmlyc3QuIFRoaXMgaW1wbGljaXRseSBhc3N1bWVzIHRoYXQgYSBzdGVwIGRlbGV0aW5nIGFuIGFnZW50XG4gICBjYW5ub3QgcGVyZm9ybSBhbnkgb3RoZXIgYWN0aW9uIGludm9sdmluZyB0aGlzIGFnZW50LlxuXG4gICBUT0RPOiBTaG91bGRuJ3Qgd2UgcmF0aGVyIGVuc3VyZSB0aGF0IGFjdGlvbnMgYXJlIHByb3Blcmx5IHNvcnRlZCBpblxuICAgdGhlIHRyYWNlIGZpbGUgaW4gdGhlIGZpcnN0IHBsYWNlPyAqKVxubGV0IGRvX2FjdGlvbnMgc2lncyBzdCBhY3Rpb25zID1cbiAgbGV0IGlzX3JlbW92YWwgPVxuICAgIGxldCBvcGVuIEluc3RhbnRpYXRpb24gaW5cbiAgICBmdW5jdGlvblxuICAgIHwgUmVtb3ZlIF8gLT4gdHJ1ZVxuICAgIHwgQ3JlYXRlIF8gfCBNb2RfaW50ZXJuYWwgXyB8IEJpbmQgXyB8IEJpbmRfdG8gXyB8IEZyZWUgXyAtPiBmYWxzZVxuICBpblxuICBsZXQgcmVtb3ZhbHMsIG90aGVycyA9IExpc3QucGFydGl0aW9uIGlzX3JlbW92YWwgYWN0aW9ucyBpblxuICBsZXQgZG9faW5fb3JkZXIgYWN0aW9ucyBzdCA9IExpc3QuZm9sZF9sZWZ0IChkb19hY3Rpb24gc2lncykgc3QgYWN0aW9ucyBpblxuICBzdCB8PiBkb19pbl9vcmRlciByZW1vdmFscyB8PiBkb19pbl9vcmRlciBvdGhlcnNcblxubGV0IGRvX3N0ZXAgc2lncyBzdGF0ZSA9IGZ1bmN0aW9uXG4gIHwgVHJhY2UuU3VicyBfIC0+IHN0YXRlLCB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfVxuICB8IFRyYWNlLlJ1bGUgKGtpbmQsIGV2ZW50LCBpbmZvKSAtPlxuICAgIGxldCB1bmFyeV9kaXN0YW5jZXMgPVxuICAgICAgaWYgc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHMgPSBOb25lIHRoZW5cbiAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBzdG9yZV9kaXN0YW5jZXMga2luZCBzdGF0ZS5ncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzXG4gICAgaW5cbiAgICBsZXQgcHJlZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lnc1xuICAgICAgICAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBncmFwaCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGdyYXBoICgoaWQsIF8pLCBzKSAtPiBFZGdlcy5hZGRfZnJlZSBpZCBzIGdyYXBoKVxuICAgICAgICBwcmVncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICBpblxuICAgICgge1xuICAgICAgICBncmFwaDtcbiAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICAgIHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lO1xuICAgICAgICBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzIH0gKVxuICB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBpbmZvKSAtPlxuICAgIGxldCBwcmVncmFwaCwgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgZG9fYWN0aW9ucyBzaWdzXG4gICAgICAgIChzdGF0ZS5ncmFwaCwgc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHMpXG4gICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGdyYXBoID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZ3JhcGggKChpZCwgXyksIHMpIC0+IEVkZ2VzLmFkZF9mcmVlIGlkIHMgZ3JhcGgpXG4gICAgICAgIHByZWdyYXBoIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuICAgIGluXG4gICAgKCB7XG4gICAgICAgIGdyYXBoO1xuICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgICAgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQ7XG4gICAgICB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLkluaXQgYWN0aW9ucyAtPlxuICAgIGxldCBncmFwaCwgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgZG9fYWN0aW9ucyBzaWdzIChzdGF0ZS5ncmFwaCwgc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHMpIGFjdGlvbnNcbiAgICBpblxuICAgICggeyBncmFwaDsgY29ubmVjdGVkX2NvbXBvbmVudHM7IHRpbWUgPSBzdGF0ZS50aW1lOyBldmVudCA9IHN0YXRlLmV2ZW50IH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfSApXG4gIHwgVHJhY2UuT2JzIChfLCBfLCBpbmZvKSAtPlxuICAgICgge1xuICAgICAgICBncmFwaCA9IHN0YXRlLmdyYXBoO1xuICAgICAgICB0aW1lID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgZXZlbnQgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudDtcbiAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPSBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgIH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfSApXG4gIHwgVHJhY2UuRHVtbXkgXyAtPiBzdGF0ZSwgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3ludGF4X3ZlcnNpb24gPSBWMyB8IFY0XG5cbmxldCBtZXJnZV92ZXJzaW9uIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFY0LCBfIHwgXywgVjQgLT4gVjRcbiAgfCBWMywgVjMgLT4gVjNcblxudHlwZSBpbnRlcm5hbCA9IHN0cmluZyBvcHRpb24gTG9jLmFubm90ZWQgbGlzdFxuXG50eXBlIHBvcnQgPSB7XG4gIHBvcnRfbmFtZTogc3RyaW5nIExvYy5hbm5vdGVkO1xuICBwb3J0X2ludDogaW50ZXJuYWw7XG4gIHBvcnRfaW50X21vZDogc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbjtcbiAgcG9ydF9saW5rOiAoc3RyaW5nIExvYy5hbm5vdGVkLCB1bml0KSBMS2FwcGEubGluayBMb2MuYW5ub3RlZCBsaXN0O1xuICBwb3J0X2xpbmtfbW9kOiBpbnQgTG9jLmFubm90ZWQgb3B0aW9uIG9wdGlvbjtcbn1cblxuKCogVE9ETyBjaGFuZ2UgbmFtZSwgQ1ZBUiBpcyBub3QgYSB0ZXN0PyAqKVxuKCogVE9ETyBkaXNjcmltaW5hdGUgYmV0d2VlbiBjb3VudGVyIGRlZmluaXRpb24gYW5kIGNvdW50ZXIgdGVzdCA/ICopXG4oKiBUT0RPOiBjaGFuZ2UgdGhpcyB0byBDVFlQRSA9IENURVNUIChDVEVTVFRZUEUgKiBpbnQpIHwgQ1ZBUiBzdHJpbmc/ICopXG5cbnR5cGUgY291bnRlcl90ZXN0ID0gQ0VRIG9mIGludCB8IENHVEUgb2YgaW50IHwgQ0xURSBvZiBpbnQgfCBDVkFSIG9mIHN0cmluZ1xuXG50eXBlIGNvdW50ZXIgPSB7XG4gIGNvdW50ZXJfbmFtZTogc3RyaW5nIExvYy5hbm5vdGVkO1xuICBjb3VudGVyX3Rlc3Q6IGNvdW50ZXJfdGVzdCBMb2MuYW5ub3RlZCBvcHRpb247XG4gICAgICAoKiogSW4gYSBydWxlOiB3aGF0IHRlc3QgaXMgZG9uZSwgaW4gYW4gYWdlbnQgZGVjbGFyYXRpb246IHRoZSBtaW4gdmFsdWUsIGluIGFuIGluaXQgZGVjbGFyYXRpb246IHRoZSBpbml0IHZhbHVlLCBOb25lIGlmIGFic2VudCAqKVxuICBjb3VudGVyX2RlbHRhOiBpbnQgTG9jLmFubm90ZWQ7XG4gICAgICAoKiogSW4gYSBydWxlOiBjaGFuZ2UgaW4gY291bnRlciB2YWx1ZSwgaW4gYW4gYWdlbnQgZGVjbGFyYXRpb246IG1heCB2YWx1ZSBvZiB0aGUgY291bnRlciwgMCBpZiBhYnNlbnQgKilcbn1cblxubGV0IGNvdW50ZXJfc2lnX29mX2NvdW50ZXIgKGMgOiBjb3VudGVyKSA6IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWcgPVxuICBsZXQgKGNvdW50ZXJfc2lnX21pbiwgY291bnRlcl9zaWdfZGVmYXVsdCkgOiAoaW50IG9wdGlvbiAqIExvYy50KSBvcHRpb24gKiBpbnRcbiAgICAgID1cbiAgICBtYXRjaCBjLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgfCBTb21lIChDRVEgaSwgbG9jKSAtPiBTb21lIChTb21lIGksIGxvYyksIGlcbiAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBfIHwgQ0xURSBfIHwgQ1ZBUiBfKSwgXykgLT4gTm9uZSwgMFxuICBpblxuICBsZXQgY291bnRlcl9zaWdfbWF4ID1cbiAgICBtYXRjaCBjLmNvdW50ZXJfZGVsdGEgd2l0aFxuICAgIHwgaSwgbG9jIC0+IFNvbWUgKFNvbWUgaSwgbG9jKVxuICBpblxuICB7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gYy5jb3VudGVyX25hbWU7XG4gICAgY291bnRlcl9zaWdfbWluO1xuICAgIGNvdW50ZXJfc2lnX21heDtcbiAgICBjb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPSBGcm9tX29yaWdpbmFsX2FzdDtcbiAgfVxuXG50eXBlICdjb3VudGVyIHNpdGUgPSBQb3J0IG9mIHBvcnQgfCBDb3VudGVyIG9mICdjb3VudGVyXG5cbmxldCBtYXBfY291bnRlcnNfaW5fc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBQb3J0IF8gYXMgeCAtPiB4XG4gIHwgQ291bnRlciBjbyAtPiBDb3VudGVyIChmIGNvKVxuXG50eXBlIGFnZW50X21vZCA9IE5vTW9kIHwgRXJhc2UgfCBDcmVhdGVcblxudHlwZSAnY291bnRlciBwYXJhbWV0cmljX2FnZW50ID1cbiAgfCBQcmVzZW50IG9mIHN0cmluZyBMb2MuYW5ub3RlZCAqICdjb3VudGVyIHNpdGUgbGlzdCAqIGFnZW50X21vZFxuICB8IEFic2VudCBvZiBMb2MudFxuXG50eXBlIGFnZW50ID0gY291bnRlciBwYXJhbWV0cmljX2FnZW50XG50eXBlIGFnZW50X3NpZyA9IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWcgcGFyYW1ldHJpY19hZ2VudFxuXG4oKiBUT0RPOiBkb2N1bWVudCB3aHkgbGlzdCBsaXN0ICopXG50eXBlIG1peHR1cmUgPSBhZ2VudCBsaXN0IGxpc3RcblxudHlwZSBlZGl0X25vdGF0aW9uID0ge1xuICBtaXg6IG1peHR1cmU7XG4gIGRlbHRhX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xufVxuXG50eXBlIGFycm93X25vdGF0aW9uID0ge1xuICBsaHM6IG1peHR1cmU7XG4gIHJtX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xuICByaHM6IG1peHR1cmU7XG4gIGFkZF90b2tlbjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdDtcbn1cblxudHlwZSBydWxlX2NvbnRlbnQgPSBFZGl0IG9mIGVkaXRfbm90YXRpb24gfCBBcnJvdyBvZiBhcnJvd19ub3RhdGlvblxuXG50eXBlIHJ1bGUgPSB7XG4gIHJld3JpdGU6IHJ1bGVfY29udGVudDtcbiAgYmlkaXJlY3Rpb25hbDogYm9vbDtcbiAga19kZWY6IChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQ7XG4gIGtfdW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgKCprXzE6cmFkaXVzX29wdCopXG4gIGtfb3A6IChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uO1xuICBrX29wX3VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gICAgKiAobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICBvcHRpb247XG4gICAgICAoKnJhdGUgZm9yIGJhY2t3YXJkIHJ1bGUqKVxufVxuXG5sZXQgZmxpcF9sYWJlbCBzdHIgPSBzdHIgXiBcIl9vcFwiXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciA9XG4gIHwgQVBQTFkgb2YgKCgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogJ3J1bGUgTG9jLmFubm90ZWQpXG4gIHwgVVBEQVRFIG9mICgnaWQgTG9jLmFubm90ZWQgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZClcbiAgfCBTVE9QIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgU05BUFNIT1Qgb2YgYm9vbCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgUFJJTlQgb2ZcbiAgICAgICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gICAgICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgUExPVEVOVFJZXG4gIHwgQ0ZMT1dMQUJFTCBvZiAoYm9vbCAqIHN0cmluZyBMb2MuYW5ub3RlZClcbiAgfCBDRkxPV01JWCBvZiAoYm9vbCAqICdwYXR0ZXJuIExvYy5hbm5vdGVkKVxuICB8IERJTiBvZlxuICAgICAgUHJpbWl0aXZlcy5kaW5fa2luZFxuICAgICAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IERJTk9GRiBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IFNQRUNJRVNfT0Ygb2ZcbiAgICAgIGJvb2xcbiAgICAgICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgICAgICogJ3BhdHRlcm4gTG9jLmFubm90ZWRcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb24gPVxuICAoTmJyLnQgb3B0aW9uXG4gICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQgb3B0aW9uXG4gICogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciBsaXN0XG4gICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQgb3B0aW9uKVxuICBMb2MuYW5ub3RlZFxuXG50eXBlIGNvbmZpZ3VyYXRpb24gPSBzdHJpbmcgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdFxuXG50eXBlICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgPVxuICBzdHJpbmcgTG9jLmFubm90ZWQgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuXG50eXBlICgnbWl4dHVyZSwgJ2lkKSBpbml0X3QgPVxuICB8IElOSVRfTUlYIG9mICdtaXh0dXJlIExvYy5hbm5vdGVkXG4gIHwgSU5JVF9UT0sgb2YgJ2lkIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50ID1cbiAgKCogIHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAoKnZvbHVtZSopKilcbiAgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiAoJ21peHR1cmUsICdpZCkgaW5pdF90XG5cbnR5cGUgKCdhZ2VudCwgJ2FnZW50X2lkLCAncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGluc3RydWN0aW9uID1cbiAgfCBTSUcgb2YgJ2FnZW50X2lkXG4gIHwgVE9LRU5TSUcgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG4gIHwgVk9MU0lHIG9mIHN0cmluZyAqIGZsb2F0ICogc3RyaW5nICgqIHR5cGUsIHZvbHVtZSwgcGFyYW1ldGVyKilcbiAgfCBJTklUIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCkgaW5pdF9zdGF0ZW1lbnRcbiAgKCp2b2x1bWUsIGluaXQsIHBvc2l0aW9uICopXG4gIHwgREVDTEFSRSBvZiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmXG4gIHwgT0JTIG9mICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSopXG4gIHwgUExPVCBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICB8IFBFUlQgb2YgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uXG4gIHwgQ09ORklHIG9mIGNvbmZpZ3VyYXRpb25cbiAgfCBSVUxFIG9mIChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogJ3J1bGUgTG9jLmFubm90ZWQpXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgY29tbWFuZCA9XG4gIHwgUlVOIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkXG4gIHwgTU9ESUZZIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIG1vZGlmX2V4cHIgbGlzdFxuICB8IFFVSVRcblxudHlwZSAoJ2FnZW50LCAnYWdlbnRfc2lnLCAncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGNvbXBpbCA9IHtcbiAgZmlsZW5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgdmFyaWFibGVzOiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmIGxpc3Q7XG4gICAgICAoKiogcGF0dGVybiBkZWNsYXJhdGlvbiBmb3IgcmV1c2luZyBhcyB2YXJpYWJsZSBpbiBwZXJ0dXJiYXRpb25zXG4gICAgb3Iga2luZXRpYyByYXRlICopXG4gIHNpZ25hdHVyZXM6ICdhZ2VudF9zaWcgbGlzdDsgICgqKiBhZ2VudCBzaWduYXR1cmUgZGVjbGFyYXRpb24gKilcbiAgcnVsZXM6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogJ3J1bGUgTG9jLmFubm90ZWQpIGxpc3Q7XG4gICAgICAoKiogcnVsZXMgKHBvc3NpYmx5IG5hbWVkKTogW25hbWVfb3B0aW9uICogcnVsZV9kZWZpbml0aW9uXSAqKVxuICBvYnNlcnZhYmxlczogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgbGlzdDtcbiAgICAgICgqKiBsaXN0IG9mIHBhdHRlcm5zIHRvIHBsb3QgKilcbiAgaW5pdDogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkKSBpbml0X3N0YXRlbWVudCBsaXN0O1xuICAgICAgKCoqIGluaXRpYWwgZ3JhcGggZGVjbGFyYXRpb24gKilcbiAgcGVydHVyYmF0aW9uczogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uIGxpc3Q7XG4gIGNvbmZpZ3VyYXRpb25zOiBjb25maWd1cmF0aW9uIGxpc3Q7XG4gIHRva2Vuczogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3Q7XG4gIHZvbHVtZXM6IChzdHJpbmcgKiBmbG9hdCAqIHN0cmluZykgbGlzdDtcbn1cblxudHlwZSBwYXJzaW5nX2NvbXBpbCA9IChhZ2VudCwgYWdlbnRfc2lnLCBtaXh0dXJlLCBtaXh0dXJlLCBzdHJpbmcsIHJ1bGUpIGNvbXBpbFxuXG50eXBlIHBhcnNpbmdfaW5zdHJ1Y3Rpb24gPVxuICAoYWdlbnQsIGFnZW50X3NpZywgbWl4dHVyZSwgbWl4dHVyZSwgc3RyaW5nLCBydWxlKSBpbnN0cnVjdGlvblxuXG5sZXQgbm9fbW9yZV9zaXRlX29uX3JpZ2h0IGVycm9yIGxlZnQgcmlnaHQgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bnRlciBfIC0+IHRydWVcbiAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IENvdW50ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBQb3J0IHAnIC0+IGZzdCBwLnBvcnRfbmFtZSA9IGZzdCBwJy5wb3J0X25hbWUpXG4gICAgICAgICAgbGVmdFxuICAgICAgICB8fFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGVycm9yIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJTaXRlICdcIiBeIGZzdCBwLnBvcnRfbmFtZVxuICAgICAgICAgICAgICAgICAgIF4gXCInIHdhcyBub3QgbWVudGlvbm5lZCBpbiB0aGUgbGVmdC1oYW5kIHNpZGUuXCIsXG4gICAgICAgICAgICAgICAgICAgc25kIHAucG9ydF9uYW1lICkpXG4gICAgICAgIGluXG4gICAgICAgIGZhbHNlKVxuICAgIHJpZ2h0XG5cbmxldCBlbXB0eV9jb21waWwgPVxuICB7XG4gICAgZmlsZW5hbWVzID0gW107XG4gICAgdmFyaWFibGVzID0gW107XG4gICAgc2lnbmF0dXJlcyA9IFtdO1xuICAgIHJ1bGVzID0gW107XG4gICAgaW5pdCA9IFtdO1xuICAgIG9ic2VydmFibGVzID0gW107XG4gICAgcGVydHVyYmF0aW9ucyA9IFtdO1xuICAgIGNvbmZpZ3VyYXRpb25zID0gW107XG4gICAgdG9rZW5zID0gW107XG4gICAgdm9sdW1lcyA9IFtdO1xuICB9XG5cbigqXG4gIGxldCByZXZlcnNlIHJlcyA9XG4gIGxldCBsX3BhdCA9IExpc3QucmV2ICFyZXMucGF0dGVybnNcbiAgYW5kIGxfc2lnID0gTGlzdC5yZXYgIXJlcy5zaWduYXR1cmVzXG4gIGFuZCBsX3J1bCA9IExpc3QucmV2ICFyZXMucnVsZXNcbiAgYW5kIGxfaW5pID0gTGlzdC5yZXYgIXJlcy5pbml0XG4gIGFuZCBsX29icyA9IExpc3QucmV2ICFyZXMub2JzZXJ2YWJsZXNcbiAgaW5cbiAgcmVzOj17cGF0dGVybnM9bF9wYXQgOyBzaWduYXR1cmVzPWxfc2lnIDtcbiAgICAgICAgcnVsZXM9bF9ydWwgOyBpbml0ID0gbF9pbmkgOyBvYnNlcnZhYmxlcyA9IGxfb2JzfVxuKilcblxubGV0IHByaW50X2FzdF9saW5rIG1vZF9sIGYgbCA9XG4gIGlmIGwgPD4gW10gfHwgbW9kX2wgPD4gTm9uZSB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlslYSVhXVwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHgsIF8pIC0+XG4gICAgICAgICAgIExLYXBwYS5wcmludF9saW5rXG4gICAgICAgICAgICAgKGZ1biBfIGYgKHgsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4KVxuICAgICAgICAgICAgIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpXG4gICAgICAgICAgICAgKGZ1biBfICgpIC0+ICgpKVxuICAgICAgICAgICAgIGYgeCkpXG4gICAgICBsXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvJWFcIlxuICAgICAgICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBTb21lIChsLCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgbFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIilcbiAgICAgICAgICAgICB4KSlcbiAgICAgIG1vZF9sXG5cbmxldCBwcmludF9hc3RfaW50ZXJuYWwgbW9kX2kgZiBsID1cbiAgaWYgbCA8PiBbXSB8fCBtb2RfaSA8PiBOb25lIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhJWF9XCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgfCBTb21lIHgsIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICAgICAgIHwgTm9uZSwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCIpKVxuICAgICAgbFxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKGksIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJXNcIiBpKSlcbiAgICAgIG1vZF9pXG5cbmxldCBwcmludF9hc3RfcG9ydCBmIHAgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYSVhXCIgKGZzdCBwLnBvcnRfbmFtZSlcbiAgICAocHJpbnRfYXN0X2ludGVybmFsIHAucG9ydF9pbnRfbW9kKVxuICAgIHAucG9ydF9pbnRcbiAgICAocHJpbnRfYXN0X2xpbmsgcC5wb3J0X2xpbmtfbW9kKVxuICAgIHAucG9ydF9saW5rXG5cbmxldCBwcmludF9jb3VudGVyX3Rlc3QgZiA9IGZ1bmN0aW9uXG4gIHwgQ0VRIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj0laVwiIHhcbiAgfCBDR1RFIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiB4XG4gIHwgQ0xURSB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI8PSVpXCIgeFxuICB8IENWQVIgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVzXCIgeFxuXG5sZXQgcHJpbnRfY291bnRlcl9taW4gZiAoeCwgXykgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIj0lZFwiIHhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9LW9vXCJcblxubGV0IHByaW50X2NvdW50ZXJfbWF4IGYgKHgsIF8pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJWRcIiB4XG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLytvb1wiXG5cbmxldCBwcmludF9jb3VudGVyX2RlZmF1bHQgbWluIGYgeCA9XG4gIG1hdGNoIG1pbiB3aXRoXG4gIHwgU29tZSAoU29tZSBpLCBfKSB3aGVuIGkgPSB4IC0+ICgpXG4gIHwgTm9uZSB8IFNvbWUgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiKCVkKVwiIHhcblxubGV0IHByaW50X2NvdW50ZXJfZGVsdGEgdGVzdCBmIChkZWx0YSwgXykgPVxuICBpZiBkZWx0YSA8PiAwIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWErPSVkXCJcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiL1wiKSlcbiAgICAgIHRlc3QgZGVsdGFcblxubGV0IHByaW50X2NvdW50ZXIgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzeyVhJWF9XCIgKGZzdCBjLmNvdW50ZXJfbmFtZSlcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIHByaW50X2NvdW50ZXJfdGVzdClcbiAgICBjLmNvdW50ZXJfdGVzdFxuICAgIChwcmludF9jb3VudGVyX2RlbHRhIGMuY291bnRlcl90ZXN0KVxuICAgIGMuY291bnRlcl9kZWx0YVxuXG5sZXQgcHJpbnRfY291bnRlcl9zaWcgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzeyVhJWF9JWFcIlxuICAgIChmc3QgYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUpXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSBwcmludF9jb3VudGVyX21pbilcbiAgICBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSBwcmludF9jb3VudGVyX21heClcbiAgICBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4XG4gICAgKHByaW50X2NvdW50ZXJfZGVmYXVsdCBjLmNvdW50ZXJfc2lnX21pbilcbiAgICBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdFxuXG5sZXQgcHJpbnRfYXN0X3NpdGUgfnByaW50X2NvdW50ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgUG9ydCBwIC0+IHByaW50X2FzdF9wb3J0IGYgcFxuICB8IENvdW50ZXIgYyAtPiBwcmludF9jb3VudGVyIGYgY1xuXG5sZXQgY291bnRlcl90ZXN0X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IENFUSB4IC0+IGBBc3NvYyBbIFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDR1RFIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDTFRFIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJsdGVcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDVkFSIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiOyBcInZhbFwiLCBgU3RyaW5nIHggXVxuXG5sZXQgY291bnRlcl90ZXN0X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpIF0gLT5cbiAgICBDRVEgeFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIikgXVxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXSAtPlxuICAgIENHVEUgeFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJsdGVcIikgXVxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImx0ZVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXSAtPlxuICAgIENMVEUgeFxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpOyAoXCJ2YWxcIiwgYFN0cmluZyB4KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBTdHJpbmcgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpIF0gLT5cbiAgICBDVkFSIHhcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBjb3VudGVyIHRlc3RcIiwgeCkpXG5cbmxldCBwb3J0X3RvX2pzb24gZmlsZW5hbWVzIHAgPVxuICBsZXQgbW9kX2wgPVxuICAgIEpzb25VdGlsLm9mX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBgU3RyaW5nIFwiRlJFRVwiXG4gICAgICB8IFNvbWUgeCAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9pbnQgeClcbiAgaW5cbiAgbGV0IG1vZF9pID1cbiAgICBKc29uVXRpbC5vZl9vcHRpb24gKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZylcbiAgaW5cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcInBvcnRfbmFtZVwiLCBMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzIHAucG9ydF9uYW1lO1xuICAgICAgKCBcInBvcnRfaW50XCIsXG4gICAgICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKCBcInN0YXRlXCIsXG4gICAgICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgICAgICAoTG9jLnN0cmluZ19vcHRpb25fYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgcC5wb3J0X2ludCApO1xuICAgICAgICAgICAgXCJtb2RcIiwgbW9kX2kgcC5wb3J0X2ludF9tb2Q7XG4gICAgICAgICAgXSApO1xuICAgICAgKCBcInBvcnRfbGlua1wiLFxuICAgICAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggXCJzdGF0ZVwiLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKExLYXBwYS5saW5rX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IFtdKSkpXG4gICAgICAgICAgICAgICAgcC5wb3J0X2xpbmsgKTtcbiAgICAgICAgICAgIFwibW9kXCIsIG1vZF9sIHAucG9ydF9saW5rX21vZDtcbiAgICAgICAgICBdICk7XG4gICAgXVxuXG5sZXQgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgbCA9XG4gIGxldCBtb2RfbCA9XG4gICAgSnNvblV0aWwudG9fb3B0aW9uIChmdW5jdGlvblxuICAgICAgfCBgU3RyaW5nIFwiRlJFRVwiIC0+IE5vbmVcbiAgICAgIHwgeCAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSB4KSlcbiAgaW5cbiAgbGV0IG1vZF9pID1cbiAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpXG4gIGluXG4gIGxldCBwb3J0X2ludCwgcG9ydF9pbnRfbW9kID1cbiAgICBtYXRjaCBpIHdpdGhcbiAgICB8IGBBc3NvYyBbXSB8IGBOdWxsIC0+IFtdLCBOb25lXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBpKSBdIC0+XG4gICAgICBKc29uVXRpbC50b19saXN0IChMb2Muc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcykgaSwgTm9uZVxuICAgIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pIF0gLT4gW10sIG1vZF9pIG1cbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGkpOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic3RhdGVcIiwgaSkgXVxuICAgICAgLT5cbiAgICAgIEpzb25VdGlsLnRvX2xpc3QgKExvYy5zdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzKSBpLCBtb2RfaSBtXG4gICAgfCBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBpbnRlcm5hbCBzdGF0ZXNcIiwgaSkpXG4gIGluXG4gIGxldCBwb3J0X2xpbmssIHBvcnRfbGlua19tb2QgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgYEFzc29jIFtdIHwgYE51bGwgLT4gW10sIE5vbmVcbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGwpIF0gLT5cbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChMS2FwcGEubGlua19vZl9qc29uXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+IExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKSkpXG4gICAgICAgICAgbCxcbiAgICAgICAgTm9uZSApXG4gICAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSkgXSAtPiBbXSwgbW9kX2wgbVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgbCk7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJzdGF0ZVwiLCBsKSBdXG4gICAgICAtPlxuICAgICAgKCBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKExLYXBwYS5saW5rX29mX2pzb25cbiAgICAgICAgICAgICAgICAoZnVuIF8gLT4gTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpKSlcbiAgICAgICAgICBsLFxuICAgICAgICBtb2RfbCBtIClcbiAgICB8IF8gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGxpbmsgc3RhdGVzXCIsIGkpKVxuICBpblxuICBQb3J0XG4gICAge1xuICAgICAgcG9ydF9uYW1lID0gTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcyBuO1xuICAgICAgcG9ydF9pbnQ7XG4gICAgICBwb3J0X2ludF9tb2Q7XG4gICAgICBwb3J0X2xpbms7XG4gICAgICBwb3J0X2xpbmtfbW9kO1xuICAgIH1cblxubGV0IHNpdGVfc2lnX29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF0gLT5cbiAgICBDb3VudGVyXG4gICAgICB7XG4gICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9XG4gICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgWW9qc29uLkJhc2ljLlV0aWwudG9fc3RyaW5nIG47XG4gICAgICAgIGNvdW50ZXJfc2lnX21pbiA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KSlcbiAgICAgICAgICAgIG1pbjtcbiAgICAgICAgY291bnRlcl9zaWdfbWF4ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvbiBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpKVxuICAgICAgICAgICAgbWF4O1xuICAgICAgICBjb3VudGVyX3NpZ19kZWZhdWx0ID0gWW9qc29uLkJhc2ljLlV0aWwudG9faW50IGRlZmF1bHQ7XG4gICAgICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPSBGcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgIH1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgYE51bGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT4gYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGBOdWxsIGBOdWxsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gQVNUIGFnZW50XCIsIHgpKVxuXG5sZXQgc2l0ZV9vZl9qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl9uYW1lXCIsIG4pOyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfZGVsdGFcIiwgZCkgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfZGVsdGFcIiwgZCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKSBdIC0+XG4gICAgQ291bnRlclxuICAgICAge1xuICAgICAgICBjb3VudGVyX25hbWUgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX3N0cmluZyBuO1xuICAgICAgICBjb3VudGVyX3Rlc3QgPVxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGNvdW50ZXJfdGVzdF9vZl9qc29uKVxuICAgICAgICAgICAgdDtcbiAgICAgICAgY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IGQ7XG4gICAgICB9XG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGBOdWxsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKSBdIC0+IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBgTnVsbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IGNvdW50ZXJfdG9fanNvbiB+ZmlsZW5hbWVzIGMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY291bnRlcl9uYW1lXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBjLmNvdW50ZXJfbmFtZSApO1xuICAgICAgKCBcImNvdW50ZXJfdGVzdFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgY291bnRlcl90ZXN0X3RvX2pzb24pXG4gICAgICAgICAgYy5jb3VudGVyX3Rlc3QgKTtcbiAgICAgICggXCJjb3VudGVyX2RlbHRhXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX2ludCBjLmNvdW50ZXJfZGVsdGEgKTtcbiAgICBdXG5cbmxldCBjb3VudGVyX3NpZ190b19qc29uIH5maWxlbmFtZXMgYyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJjb3VudGVyX3NpZ19uYW1lXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgICAgIGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lICk7XG4gICAgICAoIFwiY291bnRlcl9taW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpKVxuICAgICAgICAgIGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gKTtcbiAgICAgICggXCJjb3VudGVyX21heFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCkpXG4gICAgICAgICAgYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCApO1xuICAgICAgXCJjb3VudGVyX2RlZmF1bHRcIiwgSnNvblV0aWwub2ZfaW50IGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgIF1cblxubGV0IHNpdGVfdG9fanNvbiB+Y291bnRlcl90b19qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgUG9ydCBwIC0+IHBvcnRfdG9fanNvbiBmaWxlbmFtZXMgcFxuICB8IENvdW50ZXIgYyAtPiBjb3VudGVyX3RvX2pzb24gfmZpbGVuYW1lcyBjXG5cbmxldCBwcmludF9hZ2VudF9tb2QgZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIitcIlxuICB8IEVyYXNlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi1cIlxuICB8IE5vTW9kIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlwiXG5cbmxldCBwcmludF9hc3RfYWdlbnQgfnByaW50X2NvdW50ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgUHJlc2VudCAoKGFnZW50X25hbWUsIF8pLCBsLCBtKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyglYSklYVwiIGFnZW50X25hbWVcbiAgICAgIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIFwiKSAocHJpbnRfYXN0X3NpdGUgfnByaW50X2NvdW50ZXIpKVxuICAgICAgbCBwcmludF9hZ2VudF9tb2QgbVxuXG5sZXQgYWdlbnRfbW9kX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIC0+IGBTdHJpbmcgXCJjcmVhdGVkXCJcbiAgfCBFcmFzZSAtPiBgU3RyaW5nIFwiZXJhc2VcIlxuICB8IE5vTW9kIC0+IGBTdHJpbmcgXCJub19tb2RcIlxuXG5sZXQgYWdlbnRfbW9kX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcImNyZWF0ZWRcIiAtPiBDcmVhdGVcbiAgfCBgU3RyaW5nIFwiZXJhc2VcIiAtPiBFcmFzZVxuICB8IGBTdHJpbmcgXCJub19tb2RcIiAtPiBOb01vZFxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYWdlbnQgbW9kaWZpY2F0aW9uXCIsIHgpKVxuXG5sZXQgYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gYE51bGxcbiAgfCBQcmVzZW50IChuYSwgbCwgbSkgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcIm5hbWVcIiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nIG5hO1xuICAgICAgICBcInNpZ1wiLCBKc29uVXRpbC5vZl9saXN0IChzaXRlX3RvX2pzb24gfmNvdW50ZXJfdG9fanNvbiBmaWxlbmFtZXMpIGw7XG4gICAgICAgIFwibW9kXCIsIGFnZW50X21vZF90b195b2pzb24gbTtcbiAgICAgIF1cblxubGV0IGFnZW50X29mX2pzb24gfnNpdGVfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEFic2VudCBMb2MuZHVtbXlcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcyk7IChcIm1vZFwiLCBtKSBdXG4gIHwgYEFzc29jIFsgKFwic2lnXCIsIHMpOyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSkgXVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbik7IChcIm1vZFwiLCBtKTsgKFwic2lnXCIsIHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJzaWdcIiwgcyk7IChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcykgXVxuICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic2lnXCIsIHMpOyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBKc29uVXRpbC50b19saXN0IChzaXRlX29mX2pzb24gZmlsZW5hbWVzKSBzLFxuICAgICAgICBhZ2VudF9tb2Rfb2ZfeW9qc29uIG0gKVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbik7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBbXSxcbiAgICAgICAgYWdlbnRfbW9kX29mX3lvanNvbiBtIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcykgXSB8IGBBc3NvYyBbIChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoc2l0ZV9vZl9qc29uIGZpbGVuYW1lcykgcyxcbiAgICAgICAgTm9Nb2QgKVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbikgXSAtPlxuICAgIFByZXNlbnRcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpIG4sXG4gICAgICAgIFtdLFxuICAgICAgICBOb01vZCApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gQVNUIGFnZW50XCIsIHgpKVxuXG5sZXQgYWdlbnRfc2lnX29mX2pzb24gPSBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb246c2l0ZV9zaWdfb2ZfanNvblxuXG4oKiBUTyBETyBUcmFuc2ZlciBiYWNrIGludmVydGVkIGNvdW50ZXJzICopXG5sZXQgYWdlbnRfc2lnX3RvX2pzb24gPSBhZ2VudF90b19qc29uIH5jb3VudGVyX3RvX2pzb246Y291bnRlcl9zaWdfdG9fanNvblxubGV0IGFnZW50X29mX2pzb24gPSBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb25cbmxldCBhZ2VudF90b19qc29uID0gYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uXG5cbmxldCBwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyID1cbiAgUHAubGlzdFxuICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcXEAgXCIpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgKHByaW50X2FzdF9hZ2VudCB+cHJpbnRfY291bnRlcikpXG5cbmxldCB0b19lcmFzZWRfbWl4dHVyZSA9XG4gIExpc3QubWFwXG4gICAgKExpc3QubWFwIChmdW5jdGlvblxuICAgICAgfCBBYnNlbnQgcG9zIC0+IEFic2VudCBwb3NcbiAgICAgIHwgUHJlc2VudCAobiwgcywgXykgLT4gUHJlc2VudCAobiwgcywgRXJhc2UpKSlcblxubGV0IHRvX2NyZWF0ZWRfbWl4dHVyZSA9XG4gIExpc3QubWFwXG4gICAgKExpc3QubWFwIChmdW5jdGlvblxuICAgICAgfCBBYnNlbnQgcG9zIC0+IEFic2VudCBwb3NcbiAgICAgIHwgUHJlc2VudCAobiwgcywgXykgLT4gUHJlc2VudCAobiwgcywgQ3JlYXRlKSkpXG5cbmxldCB0b19kdW1teV91c2VyX2xpbmsgPSBmdW5jdGlvblxuICB8IFtdIHwgWyAoTEthcHBhLkxOS19BTlksIF8pIF0gLT4gVXNlcl9ncmFwaC5XSEFURVZFUlxuICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFtdXG4gIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoeCwgXyksIF8pIF0gLT4gVXNlcl9ncmFwaC5MSU5LUyBbICgtMSwgLTEpLCB4IF1cbiAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT4gVXNlcl9ncmFwaC5MSU5LUyBbXVxuICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXSAtPiBVc2VyX2dyYXBoLlNPTUVcbiAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKCh0eSwgXyksIChzaSwgXykpLCBfKSBdIC0+IFVzZXJfZ3JhcGguVFlQRSAodHksIHNpKVxuICB8IF8gOjogXyA6OiBfIC0+IGFzc2VydCBmYWxzZSAoKiBUT0RPICopXG5cbmxldCB0b19kdW1teV91c2VyX2ludGVybmFsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTb21lIFtdXG4gIHwgWyAoTm9uZSwgXykgXSAtPiBOb25lXG4gIHwgWyAoU29tZSBzdCwgXykgXSAtPiBTb21lIFsgc3QgXVxuICB8IF8gOjogXyA6OiBfIGFzIGwgLT4gU29tZSAoTGlzdF91dGlsLm1hcF9vcHRpb24gZnN0IGwpXG5cbmxldCB0b19kdW1teV91c2VyX3NpdGUgPSBmdW5jdGlvblxuICB8IFBvcnQgeyBwb3J0X25hbWU7IHBvcnRfaW50OyBwb3J0X2ludF9tb2QgPSBfOyBwb3J0X2xpbms7IHBvcnRfbGlua19tb2QgPSBfIH1cbiAgICAtPlxuICAgIHtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gZnN0IHBvcnRfbmFtZTtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAge1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gdG9fZHVtbXlfdXNlcl9saW5rIHBvcnRfbGluaztcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgPSB0b19kdW1teV91c2VyX2ludGVybmFsIHBvcnRfaW50O1xuICAgICAgICAgIH07XG4gICAgfVxuICB8IENvdW50ZXIgeyBjb3VudGVyX25hbWU7IGNvdW50ZXJfdGVzdCA9IF87IGNvdW50ZXJfZGVsdGEgPSBfIH0gLT5cbiAgICB7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9IGZzdCBjb3VudGVyX25hbWU7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9IFVzZXJfZ3JhcGguQ291bnRlciAoLTEpO1xuICAgICAgKCogVE9ETyAqKVxuICAgIH1cblxubGV0IHRvX2R1bW15X3VzZXJfYWdlbnQgPSBmdW5jdGlvblxuICB8IEFic2VudCBfIC0+IE5vbmVcbiAgfCBQcmVzZW50ICgobmEsIF8pLCBzLCBfbW9kcykgLT5cbiAgICBTb21lXG4gICAgICB7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV90eXBlID0gbmE7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV9pZCA9IE5vbmU7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV9zaXRlcyA9IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHRvX2R1bW15X3VzZXJfc2l0ZSBzO1xuICAgICAgfVxuXG5sZXQgc2V0dXBfbGluayBtICgobGluZSwgcm93KSwgc2l0ZSkgdmEgPVxuICBtYXRjaCBtLihsaW5lKS4ocm93KSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyBVc2VyX2dyYXBoLm5vZGVfc2l0ZXM7IF8gfSAtPlxuICAgIGxldCBzID0gbm9kZV9zaXRlcy4oc2l0ZSkgaW5cbiAgICAobWF0Y2ggcy5Vc2VyX2dyYXBoLnNpdGVfdHlwZSB3aXRoXG4gICAgfCBVc2VyX2dyYXBoLkNvdW50ZXIgXyAtPiAoKVxuICAgIHwgVXNlcl9ncmFwaC5Qb3J0IHAgLT5cbiAgICAgIG5vZGVfc2l0ZXMuKHNpdGUpIDwtXG4gICAgICAgIHtcbiAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9IHMuVXNlcl9ncmFwaC5zaXRlX25hbWU7XG4gICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFsgdmEgXTtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzID0gcC5Vc2VyX2dyYXBoLnBvcnRfc3RhdGVzO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICB9KVxuXG5sZXQgbWl4dHVyZV90b191c2VyX2dyYXBoIG0gPVxuICBsZXQgb3V0ID1cbiAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAoVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgdG9fZHVtbXlfdXNlcl9hZ2VudCkgbVxuICBpblxuICBsZXQgYWNjID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGxpbmUgLT5cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIHJvdyBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgfCBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzOyBfIH0gLT5cbiAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgKGZ1biBzaXRlIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7IFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgW107IF8gfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgKF8gOjogXyA6OiBfKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVXNlcl9ncmFwaC5XSEFURVZFUiB8IFVzZXJfZ3JhcGguU09NRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5UWVBFIChfLCBfKSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwgeyBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9IFVzZXJfZ3JhcGguQ291bnRlciBfOyBfIH0gLT4gYWNjXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbIChfLCBpZCkgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAucG9wIGlkIGFjYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUsIGFjYycgLT4gTW9kcy5JbnRNYXAuYWRkIGlkICgobGluZSwgcm93KSwgc2l0ZSkgYWNjJ1xuICAgICAgICAgICAgICAgICAgfCBTb21lIHZhLCBhY2MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YScgPSAobGluZSwgcm93KSwgc2l0ZSBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBzZXR1cF9saW5rIG91dCB2YSB2YScgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0dXBfbGluayBvdXQgdmEnIHZhIGluXG4gICAgICAgICAgICAgICAgICAgIGFjYycpKVxuICAgICAgICAgICAgICBhY2Mgbm9kZV9zaXRlcykpXG4gICAgICBNb2RzLkludE1hcC5lbXB0eSBvdXRcbiAgaW5cbiAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludE1hcC5pc19lbXB0eSBhY2MpIGluXG4gIG91dFxuXG5sZXQgaW5pdF90b19qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IElOSVRfTUlYIG0gLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJtaXh0dXJlXCI7IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfbWl4IG0gXVxuICB8IElOSVRfVE9LIHQgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwidG9rZW5cIjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl92YXIpIHQ7XG4gICAgICBdXG5cbmxldCBpbml0X29mX2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwibWl4dHVyZVwiOyBtIF0gLT5cbiAgICBJTklUX01JWCAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJ0b2tlblwiOyB0IF0gLT5cbiAgICBJTklUX1RPS1xuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiSU5JVF9UT0tcIilcbiAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX3ZhcilcbiAgICAgICAgIHQpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIEFzdCBpbml0IHN0YXRlbWVudFwiLCB4KSlcblxubGV0IHByaW50X3RvayBwcl9taXggcHJfdG9rIHByX3ZhciBmICgobmIsIF8pLCAobiwgXykpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBuYiBwcl90b2sgblxuXG5sZXQgcHJpbnRfb25lX3NpemUgdGsgZiBtaXggPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldCVhXCJcbiAgICAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcilcbiAgICBtaXhcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHRrIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB8IFwiKVxuICAgIChQcC5saXN0XG4gICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiArIFwiKVxuICAgICAgIChwcmludF90b2tcbiAgICAgICAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAgICAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpKSlcbiAgICB0a1xuXG5sZXQgcHJpbnRfYXJyb3cgZiBiaWRpciA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBiaWRpciB0aGVuXG4gICAgICAgXCI8LT5cIlxuICAgICBlbHNlXG4gICAgICAgXCItPlwiKVxuXG5sZXQgcHJpbnRfcmF3X3JhdGUgcHJfbWl4IHByX3RvayBwcl92YXIgb3AgZiAoZGVmLCBfKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBkZWYgKGZ1biBmIC0+XG4gICAgICBtYXRjaCBvcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoZCwgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiwgJWFcIiAoQWxnX2V4cHIucHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpIGQpXG5cbmxldCBwcmludF9hc3RfYWxnX2V4cHIgPVxuICBBbGdfZXhwci5wcmludFxuICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpIG0pXG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnXCIgeClcblxubGV0IHByaW50X3JhdGVzX29uZV9kaXIgdW4gZiBkZWYgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiXG4gICAgKHByaW50X3Jhd19yYXRlXG4gICAgICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuICAgICAgIE5vbmUpXG4gICAgZGVmXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCB1biB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoKGQsIF8pLCBtYXhfZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWEldH1cIiBwcmludF9hc3RfYWxnX2V4cHIgZCAoZnVuIGYgLT5cbiAgICAgICAgICAgIFBwLm9wdGlvblxuICAgICAgICAgICAgICAoZnVuIGYgKG1kLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCIgcHJpbnRfYXN0X2FsZ19leHByIG1kKVxuICAgICAgICAgICAgICBmIG1heF9kaXN0KSlcblxubGV0IHByaW50X3J1bGVfY29udGVudCB+YmlkaXJlY3Rpb25hbCBmID0gZnVuY3Rpb25cbiAgfCBFZGl0IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgQF1cIiAocHJpbnRfb25lX3NpemUgci5kZWx0YV90b2tlbikgci5taXhcbiAgfCBBcnJvdyByIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgJWFAICVhQF1cIlxuICAgICAgKHByaW50X29uZV9zaXplIHIucm1fdG9rZW4pXG4gICAgICByLmxocyBwcmludF9hcnJvdyBiaWRpcmVjdGlvbmFsXG4gICAgICAocHJpbnRfb25lX3NpemUgci5hZGRfdG9rZW4pXG4gICAgICByLnJoc1xuXG5sZXQgcHJpbnRfYXN0X3J1bGUgZiByID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgQEAgJWEldEBdXCJcbiAgICAocHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsOnIuYmlkaXJlY3Rpb25hbCkgci5yZXdyaXRlXG4gICAgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX3VuKSByLmtfZGVmIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5rX29wLCByLmtfb3BfdW4gd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+ICgpXG4gICAgICB8IE5vbmUsIF8gLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAsICVhXCJcbiAgICAgICAgICAocHJpbnRfcmF0ZXNfb25lX2RpciByLmtfb3BfdW4pXG4gICAgICAgICAgKEFsZ19leHByLmNvbnN0IE5ici56ZXJvKVxuICAgICAgfCBTb21lIGEsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAsICVhXCIgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX29wX3VuKSBhKVxuXG5sZXQgcHJpbnRfY29uZmlndXJhdGlvbiBmICgobiwgXyksIGwpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVkZWY6IFxcXCIlc1xcXCIgQFslYUBdQF1cIiBuXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmICh4LCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHgpKVxuICAgIGxcblxubGV0IHByaW50X2luaXQgZiA9IGZ1bmN0aW9uXG4gIHwgKG4sIF8pLCBJTklUX01JWCAobSwgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJWluaXQ6IEBbJWFAXUAgQFslYUBdQF1cIiBwcmludF9hc3RfYWxnX2V4cHIgblxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBtXG4gIHwgKG4sIF8pLCBJTklUX1RPSyB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVpbml0OiAlYSAlYUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpKVxuICAgICAgdFxuXG5sZXQgcHJpbnRfYXN0X2Jvb2xfZXhwciA9XG4gIEFsZ19leHByLnByaW50X2Jvb2xcbiAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG5cbmxldCBwcmludF9wcmludF9leHByIGYgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IHByaW50X2FzdF9hbGdfZXhwciBmIGFsZ1xuICBpblxuICBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSBdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgXFxcIiVzXFxcIlwiIHN0clxuICB8IChbIFByaW1pdGl2ZXMuQWxnX3BleHByIF8gXSB8IF8gOjogXyA6OiBfKSBhcyBlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkAgKEBbJWFAXSlcIlxuICAgICAgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIuXCIpIGF1eClcbiAgICAgIGVcblxubGV0IHByaW50X21vZGlmIGYgPSBmdW5jdGlvblxuICB8IEFQUExZICgobiwgXyksIChyLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJEFQUExZIEBbJWFAXSBAWyVhQF07XCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChwcmludF9ydWxlX2NvbnRlbnQgfmJpZGlyZWN0aW9uYWw6ZmFsc2UpXG4gICAgICByLnJld3JpdGVcbiAgfCBVUERBVEUgKChzLCBfKSwgKG4sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkVVBEQVRFICclc0AnIEBbJWFAXTtcIiBzIHByaW50X2FzdF9hbGdfZXhwciBuXG4gIHwgU1RPUCBwIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIkU1RPUCVhO1wiIHByaW50X3ByaW50X2V4cHIgcFxuICB8IFNOQVBTSE9UIChyYXcsIHApIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTTkFQU0hPVCVhJXQ7XCIgcHJpbnRfcHJpbnRfZXhwciBwIChmdW4gZiAtPlxuICAgICAgICBpZiByYXcgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgW3RydWVdXCIpXG4gIHwgUFJJTlQgKFtdLCB4KSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJFBSSU5URiVhXCIgcHJpbnRfcHJpbnRfZXhwciB4XG4gIHwgUFJJTlQgKGZpbGUsIHgpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYlYSA+JWFcIiBwcmludF9wcmludF9leHByIHggcHJpbnRfcHJpbnRfZXhwciBmaWxlXG4gIHwgUExPVEVOVFJZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiRQTE9UTk9XO1wiXG4gIHwgQ0ZMT1dMQUJFTCAob24sIChzLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLICclcycgJXM7XCIgc1xuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgfCBDRkxPV01JWCAob24sIChwLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLIEBbJWFAXSAlcztcIlxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBwXG4gICAgICAoaWYgb24gdGhlblxuICAgICAgICAgXCJbdHJ1ZV1cIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiW2ZhbHNlXVwiKVxuICB8IERJTiAoaywgcCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiVhICV0W3RydWVdXCIgcHJpbnRfcHJpbnRfZXhwciBwIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBrIHdpdGhcbiAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiYWJzb2x1dGVcXFwiIFwiXG4gICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJwcm9iYWJpbGl0eVxcXCIgXCIpXG4gIHwgRElOT0ZGIHAgLT4gRm9ybWF0LmZwcmludGYgZiBcIiRESU4lYSBbZmFsc2VdXCIgcHJpbnRfcHJpbnRfZXhwciBwXG4gIHwgU1BFQ0lFU19PRiAob24sIHAsIChtLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgQFslYUBdICVzID4lYTtcIlxuICAgICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgICBtXG4gICAgICAoaWYgb24gdGhlblxuICAgICAgICAgXCJbdHJ1ZV1cIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiW2ZhbHNlXVwiKVxuICAgICAgcHJpbnRfcHJpbnRfZXhwciBwXG5cbmxldCBwcmludF9wZXJ0dXJiYXRpb24gZiAoKGFsYXJtLCBjb25kLCBtb2RpZiwgcmVwKSwgXykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJW1vZDolYSVhIGRvQCBAWyVhQF0lYUBdXCJcbiAgICAoUHAub3B0aW9uIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJhbGFybSAlYVwiIE5ici5wcmludCBpKSlcbiAgICBhbGFybVxuICAgIChQcC5vcHRpb24gKGZ1biBmIChyLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdXCIgcHJpbnRfYXN0X2Jvb2xfZXhwciByKSlcbiAgICBjb25kXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfbW9kaWYpXG4gICAgbW9kaWZcbiAgICAoUHAub3B0aW9uIChmdW4gZiAociwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJyZXBlYXQgQFslYUBdXCIgcHJpbnRfYXN0X2Jvb2xfZXhwciByKSlcbiAgICByZXBcblxubGV0IHByaW50X3BhcnNpbmdfY29tcGlsX2thcHBhIGYgYyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCxALCVhQCwlYUAsQCwlYUAsQCwlYUAsJWFALEAsJWFALEAsJWFAXUAuXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9jb25maWd1cmF0aW9uKVxuICAgIGMuY29uZmlndXJhdGlvbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgYSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVhZ2VudDpAIEBbJWFAXUBdXCJcbiAgICAgICAgICAgKHByaW50X2FzdF9hZ2VudCB+cHJpbnRfY291bnRlcjpwcmludF9jb3VudGVyX3NpZylcbiAgICAgICAgICAgYSkpXG4gICAgYy5zaWduYXR1cmVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChzLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSV0b2tlbjogJXNcIiBzKSlcbiAgICBjLnRva2Vuc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoKHMsIF8pLCAoYSwgXykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJXZhcjogJyVzJ0AgQFslYUBdQF1cIiBzIHByaW50X2FzdF9hbGdfZXhwciBhKSlcbiAgICBjLnZhcmlhYmxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoYSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlcGxvdDpAIEBbJWFAXUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIGEpKVxuICAgIGMub2JzZXJ2YWJsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHMsIChyLCBfKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAW0BbJWElYUBdQF1cIlxuICAgICAgICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAocywgXykgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ0AgXCIgcykpXG4gICAgICAgICAgIHMgcHJpbnRfYXN0X3J1bGUgcikpXG4gICAgYy5ydWxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X3BlcnR1cmJhdGlvbilcbiAgICBjLnBlcnR1cmJhdGlvbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9pbml0KVxuICAgIGMuaW5pdFxuXG5sZXQgYXJyb3dfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByID1cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcImxoc1wiLCBmX21peCByLmxocztcbiAgICAgICggXCJybV90b2tlblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgIHIucm1fdG9rZW4gKTtcbiAgICAgIFwicmhzXCIsIGZfbWl4IHIucmhzO1xuICAgICAgKCBcImFkZF90b2tlblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgIHIuYWRkX3Rva2VuICk7XG4gICAgXVxuXG5sZXQgYXJyb3dfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPD0gNCAtPlxuICAgIHtcbiAgICAgIGxocyA9IGZfbWl4IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJsaHNcIiB4KTtcbiAgICAgIHJtX3Rva2VuID1cbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicm1fdG9rZW5cIiB4KTtcbiAgICAgIHJocyA9IGZfbWl4IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJyaHNcIiB4KTtcbiAgICAgIGFkZF90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFkZF90b2tlblwiIHgpO1xuICAgIH1cbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBhcnJvd19ub3RhdGlvblwiLCB4KSlcblxubGV0IGVkaXRfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyByID1cbiAgbGV0IG1peF90b19qc29uID1cbiAgICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9saXN0IChhZ2VudF90b19qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJtaXhcIiwgbWl4X3RvX2pzb24gci5taXg7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gSnNvblV0aWwub2Zfc3RyaW5nKSlcbiAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX3RvX2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgci5kZWx0YV90b2tlbiApO1xuICAgIF1cblxubGV0IGVkaXRfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyByID1cbiAgbGV0IG1peF9vZl9qc29uID1cbiAgICBKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19saXN0IChhZ2VudF9vZl9qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIG1hdGNoIHIgd2l0aFxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDwgMyAtPlxuICAgIHtcbiAgICAgIG1peCA9IG1peF9vZl9qc29uIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJtaXhcIiB4KTtcbiAgICAgIGRlbHRhX3Rva2VuID1cbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpKVxuICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVsdGFfdG9rZW5cIiB4KTtcbiAgICB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIGVkaXRfbm90YXRpb25cIiwgeCkpXG5cbmxldCBydWxlX2NvbnRlbnRfdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgRWRpdCByIC0+IGBMaXN0IFsgYFN0cmluZyBcImVkaXRcIjsgZWRpdF9ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIHIgXVxuICB8IEFycm93IHIgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJhcnJvd1wiOyBhcnJvd19ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIgXVxuXG5sZXQgcnVsZV9jb250ZW50X29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcImVkaXRcIjsgciBdIC0+IEVkaXQgKGVkaXRfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyByKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcImFycm93XCI7IHIgXSAtPlxuICAgIEFycm93IChhcnJvd19ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGUgY29udGVudFwiLCB4KSlcblxubGV0IHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgciA9XG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJyZXdyaXRlXCIsIHJ1bGVfY29udGVudF90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIucmV3cml0ZTtcbiAgICAgIFwiYmlkaXJlY3Rpb25hbFwiLCBgQm9vbCByLmJpZGlyZWN0aW9uYWw7XG4gICAgICAoIFwia19kZWZcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICByLmtfZGVmICk7XG4gICAgICAoIFwia191blwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgci5rX3VuICk7XG4gICAgICAoIFwia19vcFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgci5rX29wICk7XG4gICAgICAoIFwia19vcF91blwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgci5rX29wX3VuICk7XG4gICAgXVxuXG5sZXQgcnVsZV9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPD0gNiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICByZXdyaXRlID1cbiAgICAgICAgICAgcnVsZV9jb250ZW50X29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXJcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicmV3cml0ZVwiIHgpO1xuICAgICAgICAgYmlkaXJlY3Rpb25hbCA9XG4gICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYmlkaXJlY3Rpb25hbFwiIHgpO1xuICAgICAgICAga19kZWYgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJrX2RlZlwiIHgpO1xuICAgICAgICAga191biA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia191blwiIHgpO1xuICAgICAgICAga19vcCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19vcFwiIHgpO1xuICAgICAgICAga19vcF91biA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19vcF91blwiIHgpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlXCIsIHgpKVxuXG5sZXQgbW9kaWZfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IEFQUExZIChhbGcsIHIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkFQUExZXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAocnVsZV90b19qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhcikgcjtcbiAgICAgIF1cbiAgfCBVUERBVEUgKGlkLCBhbGcpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIlVQREFURVwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX3ZhciBpZDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGc7XG4gICAgICBdXG4gIHwgU1RPUCBsIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nIFwiU1RPUFwiXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IFNOQVBTSE9UIChyYXcsIGwpIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nXG4gICAgICAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAgICAgIFwiUkFXX1NOQVBTSE9UXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIlNOQVBTSE9UXCIpXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IFBSSU5UIChmaWxlLCBleHByKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJQUklOVFwiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBleHByO1xuICAgICAgXVxuICB8IFBMT1RFTlRSWSAtPiBgU3RyaW5nIFwiUExPVEVOVFJZXCJcbiAgfCBDRkxPV0xBQkVMIChiLCBpZCkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiQ0ZMT1dMQUJFTFwiOyBgQm9vbCBiOyBMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzIGlkO1xuICAgICAgXVxuICB8IENGTE9XTUlYIChiLCBtKSAtPlxuICAgIGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XXCI7IGBCb29sIGI7IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfbWl4IG0gXVxuICB8IERJTiAoYiwgZmlsZSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElOXCI7XG4gICAgICAgIFByaW1pdGl2ZXMuZGluX2tpbmRfdG9feW9qc29uIGI7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGU7XG4gICAgICBdXG4gIHwgRElOT0ZGIGZpbGUgLT5cbiAgICBgTGlzdFxuICAgICAgKGBTdHJpbmcgXCJESU5PRkZcIlxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgZmlsZVxuICAgICAgKVxuICB8IFNQRUNJRVNfT0YgKGIsIGwsIG0pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIlNQRUNJRVNfT0ZcIjtcbiAgICAgICAgYEJvb2wgYjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgbDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbTtcbiAgICAgIF1cblxubGV0IG1vZGlmX29mX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJBUFBMWVwiOyBhbGc7IG1peCBdIC0+XG4gICAgQVBQTFlcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGcsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKHJ1bGVfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgbWl4IClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJVUERBVEVcIjsgaWQ7IGFsZyBdIC0+XG4gICAgVVBEQVRFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfdmFyIGlkLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZyApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJTVE9QXCIgOjogbCkgLT5cbiAgICBTVE9QIChMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiU05BUFNIT1RcIiA6OiBsKSAtPlxuICAgIFNOQVBTSE9UXG4gICAgICAoIGZhbHNlLFxuICAgICAgICBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsIClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIlJBV19TTkFQU0hPVFwiIDo6IGwpIC0+XG4gICAgU05BUFNIT1RcbiAgICAgICh0cnVlLCBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlBSSU5UXCI7IGZpbGU7IGV4cHIgXSAtPlxuICAgIFBSSU5UXG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGV4cHIgKVxuICB8IGBTdHJpbmcgXCJQTE9URU5UUllcIiAtPiBQTE9URU5UUllcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV0xBQkVMXCI7IGBCb29sIGI7IGlkIF0gLT5cbiAgICBDRkxPV0xBQkVMIChiLCBMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzIGlkKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XXCI7IGBCb29sIGI7IG0gXSAtPlxuICAgIENGTE9XTUlYIChiLCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJTlwiOyBiOyBmaWxlIF0gLT5cbiAgICBESU5cbiAgICAgICggUHJpbWl0aXZlcy5kaW5fa2luZF9vZl95b2pzb24gYixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZSApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJESU5PRkZcIiA6OiBmaWxlKSAtPlxuICAgIERJTk9GRlxuICAgICAgKExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGZpbGUpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiU1BFQ0lFU19PRlwiOyBgQm9vbCBiOyBmaWxlOyBtIF0gLT5cbiAgICBTUEVDSUVTX09GXG4gICAgICAoIGIsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IG0gKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbmxldCBtZXJnZV9pbnRlcm5hbF9tb2QgYWNjID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGFjY1xuICB8IFNvbWUgKHgsIHBvcykgLT5cbiAgICBsZXQgeF9vcCA9IFNvbWUgeCBpblxuICAgIGlmIExpc3QuZXhpc3RzIChmdW4gKHgnLCBfKSAtPiB4X29wID0geCcpIGFjYyB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICAoeF9vcCwgcG9zKSA6OiBhY2NcblxubGV0IG1lcmdlX2ludGVybmFscyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjICgoeCwgXykgYXMgeSkgLT5cbiAgICAgIGlmXG4gICAgICAgIHggPSBOb25lXG4gICAgICAgIHx8IExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgKGZ1biAoeCcsIF8pIC0+XG4gICAgICAgICAgICAgICBPcHRpb25fdXRpbC5lcXVhbCAoZnVuIHggeCcgLT4gU3RyaW5nLmNvbXBhcmUgeCB4JyA9IDApIHggeCcpXG4gICAgICAgICAgICAgYWNjXG4gICAgICB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICB5IDo6IGFjYylcblxubGV0IHJlYyBtZXJnZV9zaXRlc19jb3VudGVyIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFsgQ291bnRlciBjIF1cbiAgfCBDb3VudGVyIGMnIDo6IF8gYXMgbFxuICAgIHdoZW4gZnN0IGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lXG4gICAgICAgICA9IGZzdCBjJy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgLT5cbiAgICBsXG4gIHwgKChQb3J0IF8gfCBDb3VudGVyIF8pIGFzIGgpIDo6IHQgLT4gaCA6OiBtZXJnZV9zaXRlc19jb3VudGVyIGMgdFxuXG5sZXQgcmVjIG1lcmdlX3NpdGVzX3BvcnQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gWyBQb3J0IHsgcCB3aXRoIHBvcnRfbGluayA9IFtdIH0gXVxuICB8IFBvcnQgaCA6OiB0IHdoZW4gZnN0IHAucG9ydF9uYW1lID0gZnN0IGgucG9ydF9uYW1lIC0+XG4gICAgUG9ydFxuICAgICAge1xuICAgICAgICBoIHdpdGhcbiAgICAgICAgcG9ydF9pbnQgPVxuICAgICAgICAgIG1lcmdlX2ludGVybmFsX21vZFxuICAgICAgICAgICAgKG1lcmdlX2ludGVybmFscyBoLnBvcnRfaW50IHAucG9ydF9pbnQpXG4gICAgICAgICAgICBwLnBvcnRfaW50X21vZDtcbiAgICAgIH1cbiAgICA6OiB0XG4gIHwgKChQb3J0IF8gfCBDb3VudGVyIF8pIGFzIGgpIDo6IHQgLT4gaCA6OiBtZXJnZV9zaXRlc19wb3J0IHAgdFxuXG5sZXQgbWVyZ2Vfc2l0ZXMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgIHwgUG9ydCBwIC0+IG1lcmdlX3NpdGVzX3BvcnQgcCBhY2NcbiAgICB8IENvdW50ZXIgYyAtPiBtZXJnZV9zaXRlc19jb3VudGVyIChjb3VudGVyX3NpZ19vZl9jb3VudGVyIGMpIGFjYylcblxubGV0IG1lcmdlX2FnZW50cyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gKGFjYyA6IGFnZW50X3NpZyBsaXN0KSAtPiBmdW5jdGlvblxuICAgICAgIHwgQWJzZW50IF8gLT4gYWNjXG4gICAgICAgfCBQcmVzZW50ICgoKG5hLCBfKSBhcyB4KSwgKHMgOiBjb3VudGVyIHNpdGUgbGlzdCksIF8pIC0+XG4gICAgICAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICBQcmVzZW50XG4gICAgICAgICAgICAgICAgICggeCxcbiAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+IFBvcnQgeyBwIHdpdGggcG9ydF9saW5rID0gW10gfVxuICAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgXyBhcyB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWFwX2NvdW50ZXJzX2luX3NpdGUgY291bnRlcl9zaWdfb2ZfY291bnRlciB4KVxuICAgICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICAgICBOb01vZCApO1xuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgfCBQcmVzZW50ICgobmEnLCBfKSwgcycsIF8pIDo6IHQgd2hlbiBTdHJpbmcuY29tcGFyZSBuYSBuYScgPSAwIC0+XG4gICAgICAgICAgICAgUHJlc2VudCAoeCwgbWVyZ2Vfc2l0ZXMgcycgcywgTm9Nb2QpIDo6IHRcbiAgICAgICAgICAgfCAoKFByZXNlbnQgXyB8IEFic2VudCBfKSBhcyBoKSA6OiB0IC0+IGggOjogYXV4IHRcbiAgICAgICAgIGluXG4gICAgICAgICBhdXggYWNjKSlcblxubGV0IG1lcmdlX3Rva2VucyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIChfLCAoKG5hLCBfKSBhcyB0b2spKSAtPlxuICAgICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFsgdG9rIF1cbiAgICAgICAgfCAobmEnLCBfKSA6OiBfIGFzIGwgd2hlbiBTdHJpbmcuY29tcGFyZSBuYSBuYScgPSAwIC0+IGxcbiAgICAgICAgfCBoIDo6IHQgYXMgbCAtPlxuICAgICAgICAgIGxldCBvID0gYXV4IHQgaW5cbiAgICAgICAgICBpZiB0ID09IG8gdGhlblxuICAgICAgICAgICAgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGggOjogb1xuICAgICAgaW5cbiAgICAgIGF1eCBhY2MpXG5cbmxldCBzaWdfZnJvbV9pbml0cyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gKGFncywgdG9rcykgLT4gZnVuY3Rpb25cbiAgICB8IF8sIElOSVRfTUlYIChtLCBfKSAtPiBtZXJnZV9hZ2VudHMgYWdzIG0sIHRva3NcbiAgICB8IG5hLCBJTklUX1RPSyBsIC0+IGFncywgbWVyZ2VfdG9rZW5zIHRva3MgKExpc3QubWFwIChmdW4geCAtPiBuYSwgeCkgbCkpXG5cbmxldCBzaWdfZnJvbV9ydWxlIChhZ3MsIHRva3MpIHIgPVxuICBtYXRjaCByLnJld3JpdGUgd2l0aFxuICB8IEVkaXQgZSAtPiBtZXJnZV9hZ2VudHMgYWdzIGUubWl4LCBtZXJnZV90b2tlbnMgdG9rcyBlLmRlbHRhX3Rva2VuXG4gIHwgQXJyb3cgYSAtPlxuICAgIGxldCBhZ3MnLCB0b2tzJyA9XG4gICAgICBpZiByLmJpZGlyZWN0aW9uYWwgdGhlblxuICAgICAgICBtZXJnZV9hZ2VudHMgYWdzIGEucmhzLCBtZXJnZV90b2tlbnMgdG9rcyBhLmFkZF90b2tlblxuICAgICAgZWxzZVxuICAgICAgICBhZ3MsIHRva3NcbiAgICBpblxuICAgIG1lcmdlX2FnZW50cyBhZ3MnIGEubGhzLCBtZXJnZV90b2tlbnMgdG9rcycgYS5ybV90b2tlblxuXG5sZXQgc2lnX2Zyb21fcnVsZXMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHAgKF8sIChyLCBfKSkgLT4gc2lnX2Zyb21fcnVsZSBwIHIpXG5cbmxldCBzaWdfZnJvbV9wZXJ0cyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjICgoXywgXywgcCwgXyksIF8pIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHAgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IEFQUExZIChfLCAociwgXykpIC0+IHNpZ19mcm9tX3J1bGUgcCByXG4gICAgICAgICAgfCBVUERBVEUgXyB8IFNUT1AgXyB8IFNOQVBTSE9UIF8gfCBQUklOVCBfIHwgUExPVEVOVFJZIHwgQ0ZMT1dMQUJFTCBfXG4gICAgICAgICAgfCBDRkxPV01JWCBfIHwgRElOIF8gfCBESU5PRkYgXyB8IFNQRUNJRVNfT0YgXyAtPlxuICAgICAgICAgICAgcClcbiAgICAgICAgYWNjIHApXG5cbmxldCBpbmZlcl9hZ2VudF9zaWduYXR1cmVzIHIgPVxuICBsZXQgYWNjID0gc2lnX2Zyb21faW5pdHMgKHIuc2lnbmF0dXJlcywgci50b2tlbnMpIHIuaW5pdCBpblxuICBsZXQgYWNjJyA9IHNpZ19mcm9tX3J1bGVzIGFjYyByLnJ1bGVzIGluXG4gIGxldCBhZ3MsIHRva3MgPSBzaWdfZnJvbV9wZXJ0cyBhY2MnIHIucGVydHVyYmF0aW9ucyBpblxuICB7IHIgd2l0aCBzaWduYXR1cmVzID0gYWdzOyB0b2tlbnMgPSB0b2tzIH1cblxubGV0IHNwbGl0X21peHR1cmUgbSA9XG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4gbCAobGhzLCByaHMpIC0+XG4gICAgICBsZXQgbGwsIHJyID1cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgICAgKGZ1biBhZyAoKGxocywgcmhzKSBhcyBwYWNrKSAtPlxuICAgICAgICAgICAgbWF0Y2ggYWcgd2l0aFxuICAgICAgICAgICAgfCBBYnNlbnQgXyAtPiBwYWNrXG4gICAgICAgICAgICB8IFByZXNlbnQgKCgoXywgcG9zKSBhcyBuYSksIGludGYsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbW9kaWYgd2l0aFxuICAgICAgICAgICAgICB8IENyZWF0ZSAtPiBBYnNlbnQgcG9zIDo6IGxocywgUHJlc2VudCAobmEsIGludGYsIE5vTW9kKSA6OiByaHNcbiAgICAgICAgICAgICAgfCBFcmFzZSAtPiBQcmVzZW50IChuYSwgaW50ZiwgTm9Nb2QpIDo6IGxocywgQWJzZW50IHBvcyA6OiByaHNcbiAgICAgICAgICAgICAgfCBOb01vZCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbnRmbCwgaW50ZnIgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAobCwgcikgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBQb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lID0gcC5wb3J0X25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludCA9IHAucG9ydF9pbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludF9tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rID0gcC5wb3J0X2xpbms7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmtfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X25hbWUgPSBwLnBvcnRfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHAucG9ydF9pbnRfbW9kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHAucG9ydF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lICh4LCBwb3MpIC0+IFsgU29tZSB4LCBwb3MgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludF9tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHAucG9ydF9saW5rX21vZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBwLnBvcnRfbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIChpLCBwb3MpKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmtfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHIgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGMgd2l0aCBjb3VudGVyX2RlbHRhID0gTG9jLmFubm90X3dpdGhfZHVtbXkgMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIgeyBjIHdpdGggY291bnRlcl90ZXN0ID0gTm9uZSB9IDo6IHIgKSlcbiAgICAgICAgICAgICAgICAgICAgKFtdLCBbXSkgaW50ZlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBQcmVzZW50IChuYSwgaW50ZmwsIE5vTW9kKSA6OiBsaHMsXG4gICAgICAgICAgICAgICAgICBQcmVzZW50IChuYSwgaW50ZnIsIE5vTW9kKSA6OiByaHMgKSkpXG4gICAgICAgICAgbCAoW10sIFtdKVxuICAgICAgaW5cbiAgICAgIGxsIDo6IGxocywgcnIgOjogcmhzKVxuICAgIG0gKFtdLCBbXSlcblxubGV0IGNvbXBpbF90b19qc29uIGMgPVxuICBsZXQgZmlsZXMgPVxuICAgIEFycmF5Lm9mX2xpc3QgKExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZSA6OiBjLmZpbGVuYW1lcylcbiAgaW5cbiAgbGV0IGZpbGVuYW1lcyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIG1hcCB4IC0+IE1vZHMuU3RyaW5nTWFwLmFkZCB4IGkgbWFwKVxuICAgICAgTW9kcy5TdHJpbmdNYXAuZW1wdHkgZmlsZXNcbiAgaW5cbiAgbGV0IG1peF90b19qc29uID1cbiAgICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9saXN0IChhZ2VudF90b19qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIGxldCB2YXJfdG9fanNvbiA9IEpzb25VdGlsLm9mX3N0cmluZyBpblxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcImZpbGVuYW1lc1wiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9zdHJpbmcgZmlsZXM7XG4gICAgICBcInNpZ25hdHVyZXNcIiwgSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfc2lnX3RvX2pzb24gZmlsZW5hbWVzKSBjLnNpZ25hdHVyZXM7XG4gICAgICAoIFwidG9rZW5zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgKExvYy5zdHJpbmdfYW5ub3RlZF90b19qc29uIH5maWxlbmFtZXMpIGMudG9rZW5zICk7XG4gICAgICAoIFwidmFyaWFibGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSkpXG4gICAgICAgICAgYy52YXJpYWJsZXMgKTtcbiAgICAgICggXCJydWxlc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIChMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAocnVsZV90b19qc29uIGZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpKVxuICAgICAgICAgIGMucnVsZXMgKTtcbiAgICAgICggXCJvYnNlcnZhYmxlc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKVxuICAgICAgICAgIGMub2JzZXJ2YWJsZXMgKTtcbiAgICAgICggXCJpbml0XCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAoaW5pdF90b19qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKVxuICAgICAgICAgIGMuaW5pdCApO1xuICAgICAgKCBcInBlcnR1cmJhdGlvbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZnVuIChhbGFybSwgcHJlLCBtb2RpZiwgcG9zdCkgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gTmJyLnRvX3lvanNvbiBhbGFybTtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHByZTtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAobW9kaWZfdG9fanNvbiBmaWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pXG4gICAgICAgICAgICAgICAgICAgICBtb2RpZjtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHBvc3Q7XG4gICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIGMucGVydHVyYmF0aW9ucyApO1xuICAgICAgKCBcImNvbmZpZ3VyYXRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IChMb2Muc3RyaW5nX2Fubm90ZWRfdG9fanNvbiB+ZmlsZW5hbWVzKSkpXG4gICAgICAgICAgYy5jb25maWd1cmF0aW9ucyApO1xuICAgIF1cblxubGV0IGNvbXBpbF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDkgLT5cbiAgICBsZXQgdmFyX29mX2pzb24gPSBKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lIGluXG4gICAgKHRyeVxuICAgICAgIGxldCBmaWxlbmFtZXMgPVxuICAgICAgICAgSnNvblV0aWwudG9fYXJyYXlcbiAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgIChMaXN0LmFzc29jIFwiZmlsZW5hbWVzXCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCBtaXhfb2ZfanNvbiA9XG4gICAgICAgICBKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19saXN0IChhZ2VudF9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlbmFtZXMgPSBMaXN0LnRsIChBcnJheS50b19saXN0IGZpbGVuYW1lcyk7XG4gICAgICAgICBzaWduYXR1cmVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiQVNUIHNpZ25hdHVyZVwiKVxuICAgICAgICAgICAgIChhZ2VudF9zaWdfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJzaWduYXR1cmVzXCIgbCk7XG4gICAgICAgICB0b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJBU1QgdG9rZW4gc2lnXCIpXG4gICAgICAgICAgICAgKExvYy5zdHJpbmdfYW5ub3RlZF9vZl9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ0b2tlbnNcIiBsKTtcbiAgICAgICAgIHZhcmlhYmxlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIkFTVCB2YXJpYWJsZXNcIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ2YXJpYWJsZXNcIiBsKTtcbiAgICAgICAgIHJ1bGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiQVNUIHJ1bGVzXCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChMb2Muc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAocnVsZV9vZl9qc29uIGZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicnVsZXNcIiBsKTtcbiAgICAgICAgIG9ic2VydmFibGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6XG4gICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJBU1Qgb2JzZXJ2YWJsZXNcIilcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJvYnNlcnZhYmxlc1wiIGwpO1xuICAgICAgICAgaW5pdCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIkFTVCBpbml0XCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgKGluaXRfb2ZfanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImluaXRcIiBsKTtcbiAgICAgICAgIHBlcnR1cmJhdGlvbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzpcbiAgICAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIkFTVCBwZXJ0dXJiYXRpb25zXCIpXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBgTGlzdCBbIGFsYXJtOyBwcmU7IG1vZGlmOyBwb3N0IF0gLT5cbiAgICAgICAgICAgICAgICAgKCBKc29uVXRpbC50b19vcHRpb24gTmJyLm9mX3lvanNvbiBhbGFybSxcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHByZSxcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgICAgICAgICAobW9kaWZfb2ZfanNvbiBmaWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICAgICBtb2RpZixcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHBvc3QgKVxuICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHBlcnR1cmJhdGlvblwiLCB4KSkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicGVydHVyYmF0aW9uc1wiIGwpO1xuICAgICAgICAgY29uZmlndXJhdGlvbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzpcbiAgICAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIkFTVCBjb25maWd1cmF0aW9uXCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fbGlzdCAoTG9jLnN0cmluZ19hbm5vdGVkX29mX2pzb24gfmZpbGVuYW1lcykpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiY29uZmlndXJhdGlvbnNcIiBsKTtcbiAgICAgICAgIHZvbHVtZXMgPSBbXTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUXCIsIHgpKVxuXG5sZXQgd3JpdGVfcGFyc2luZ19jb21waWwgYiBhc3QgPSBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiIChjb21waWxfdG9fanNvbiBhc3QpXG5sZXQgcmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiID0gY29tcGlsX29mX2pzb24gKFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYilcbmxldCBwcmludF9hc3RfbWl4ID0gcHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB3aXRoX2FnZW50X2NvdW50ZXJzID0ge1xuICBhZ2VudDogJ2E7XG4gIGNvdW50ZXJzOiAoQXN0LmNvdW50ZXIgKiBMS2FwcGEuc3dpdGNoaW5nKSBvcHRpb24gYXJyYXk7XG59XG5cbnR5cGUgcnVsZV9taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMgPVxuICBMS2FwcGEucnVsZV9hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzIGxpc3RcblxudHlwZSByYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgUmF3X21peHR1cmUuYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycyBsaXN0XG5cbnR5cGUgY3Zhcl92YWx1ZSA9IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogaW50IH1cblxuKCoqIFtjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwIGxzMSBsczJdXG4gKiBFYWNoIGVsZW1lbnQgb2YgW2xzMV0gZGVzY3JpYmVzIGEgc2V0dXAgb2YgY291bnRlciB2YXJpYWJsZXMsIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGJlaW5nIHRoZSBsaXN0IG9mIGVudGl0aWVzIHRvIGJlIHVzZWQgaW4gdGhlIG1vZGVsLCB3aGVyZSB2YXJpYWJsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBjb3VudGVycywgYW5kIHRoZSBzZWNvbmQgb25lIHRoZSBtYXBwaW5nIG9mIHZhcmlhYmxlcyB0byB0aGVpciB2YWx1ZXMsIHRoYXQgYWxsb3dzIHRvIGtub3cgd2hpY2ggaW5zdGFuY2Ugb2YgbW9kZWwgZW50aXRpZXMgd291bGQgYmUgY2hvc2VuIGluIHRoaXMgZ2l2ZW4gc2V0dXAuXG4gKiBbbHMyXSBhZGRzIGEgbmV3IGVudGl0eSB3aXRoIGRpZmZlcmVudCBraW5kcyBhY2NvcmRpbmcgdG8gdGhlIHZhcmlhYmxlIHZhbHVlcyBnaXZlbiBpbiB0aGUgbGlzdCBhcyBzZWNvbmQgbWVtYmVyIG9mIHRoZSB0dXBsZSwgd2hpY2ggaXMgdGhlbiBjb21iaW5lZCBpbiB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIG90aGVyIHNldHVwcywgY29tYmluaW5nIHRoZSBkaWZmZXJlbnQgdmFyaWFibGUgdmFsdWVzIHdoaWNoIHRob3NlIGFscmVhZHkgZGVmaW5lZC5cbiAqIE5vIGNoZWNrIGlzIGRvbmUgb24gdGhlIHVuaWNpdHkgb2YgdGhlIGRlc2NyaWJlZCB2YXJpYWJsZXMgYW5kIHRoZWlyIHZhbHVlcyAqKVxubGV0IGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXAgKGxzMSA6ICgnYSBsaXN0ICogJ2IgbGlzdCkgbGlzdClcbiAgICAobHMyIDogKCdhICogJ2IgbGlzdCkgbGlzdCkgOiAoJ2EgbGlzdCAqICdiIGxpc3QpIGxpc3QgPVxuICBpZiBsczEgPSBbXSB0aGVuXG4gICAgcmFpc2UgRXhpdCAoKkxpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIChiLCBkcykgLT4gKFsgYiBdLCBkcykgOjogYWNjKSBbXSBsczIqKVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChhLCBjcykgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MnIChiLCBkcykgLT4gKGIgOjogYSwgZHMgQCBjcykgOjogYWNjJykgYWNjIGxzMilcbiAgICAgIFtdIGxzMVxuXG5sZXQgdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIChrLCBhKSA9XG4gIGxldCB1cGRhdGVfaWQgcyBrID1cbiAgICBsZXQgY291bnRlcnNfbWF0Y2hpbmdfcywgXyA9XG4gICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAoZnVuIHZhcl92YWx1ZSAtPiBTdHJpbmcuY29tcGFyZSBzIHZhcl92YWx1ZS5uYW1lID0gMClcbiAgICAgICAgY291bnRlcl92YXJfdmFsdWVzXG4gICAgaW5cbiAgICBtYXRjaCBjb3VudGVyc19tYXRjaGluZ19zIHdpdGhcbiAgICB8IFsgdmFyX3ZhbHVlIF0gLT4gQWxnX2V4cHIuQ09OU1QgKE5ici5JIHZhcl92YWx1ZS52YWx1ZSlcbiAgICB8IFtdIC0+IGtcbiAgICB8IF8gOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKCBGb3JtYXQuc3ByaW50ZiBcIkNvdW50ZXIgdmFyaWFibGUgJXMgYXBwZWFycyB0d2ljZSBpbiBydWxlXCIgcyxcbiAgICAgICAgICAgICBMb2MuZHVtbXkgKSlcbiAgaW5cblxuICBsZXQgcmVjIHVwZGF0ZV9ib29sX2V4cHIgayA9XG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4ga1xuICAgIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUFxuICAgICAgICAob3AsICh1cGRhdGVfYm9vbF9leHByIGsxLCBhMSksICh1cGRhdGVfYm9vbF9leHByIGsyLCBhMikpXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgKGssIGEpKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsICh1cGRhdGVfYm9vbF9leHByIGssIGEpKVxuICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIChrMSwgYTEpLCAoazIsIGEyKSkgLT5cbiAgICAgIEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAodXBkYXRlX2V4cHIgazEsIGExKSwgKHVwZGF0ZV9leHByIGsyLCBhMikpXG4gIGFuZCB1cGRhdGVfZXhwciBrID1cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKGsxLCBhMSkpIC0+XG4gICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCAodXBkYXRlX2V4cHIgazEsIGExKSlcbiAgICB8IEFsZ19leHByLklGICgoazEsIGExKSwgKGsyLCBhMiksIChrMywgYTMpKSAtPlxuICAgICAgQWxnX2V4cHIuSUZcbiAgICAgICAgKCh1cGRhdGVfYm9vbF9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpLCAodXBkYXRlX2V4cHIgazMsIGEzKSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKChrMSwgYTEpLCBrMikgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU4gKCh1cGRhdGVfZXhwciBrMSwgYTEpLCBrMilcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKChrLCBhKSwgbSkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKCh1cGRhdGVfZXhwciBrLCBhKSwgbSlcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiB1cGRhdGVfaWQgaWQga1xuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgICAga1xuICBpblxuICB1cGRhdGVfZXhwciBrLCBhXG5cbmxldCBjb2xsZWN0X2lkcyBleHByX2xpc3QgOiBNb2RzLlN0cmluZ1NldC50ID1cbiAgbGV0IHJlYyBhdXhfZXhwciBleHByIGFjYyA9XG4gICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPiBhdXhfZXhwciBrMiAoYXV4X2V4cHIgazEgYWNjKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChfLCAoazEsIF8pKVxuICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoKGsxLCBfKSwgXylcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKChrMSwgXyksIF8pIC0+XG4gICAgICBhdXhfZXhwciBrMSBhY2NcbiAgICB8IEFsZ19leHByLklGICgoazEsIF8pLCAoazIsIF8pLCAoazMsIF8pKSAtPlxuICAgICAgYXV4X2V4cHIgazMgKGF1eF9leHByIGsyIChhdXhfYm9vbCBrMSBhY2MpKVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBpZCB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGF1eF9pZCBpZCBhY2NcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgIGFjY1xuICBhbmQgYXV4X2lkIGlkIGFjYyA9IE1vZHMuU3RyaW5nU2V0LmFkZCBpZCBhY2NcbiAgYW5kIGF1eF9ib29sIGV4cHIgYWNjID1cbiAgICBtYXRjaCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSAtPiBhY2NcbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPlxuICAgICAgYXV4X2Jvb2wgazIgKGF1eF9ib29sIGsxIGFjYylcbiAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIChrLCBfKSkgLT4gYXV4X2Jvb2wgayBhY2NcbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIChrMSwgXyksIChrMiwgXykpIC0+IGF1eF9leHByIGsyIChhdXhfZXhwciBrMSBhY2MpXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgZXhwcl9vcHQgLT5cbiAgICAgIG1hdGNoIGV4cHJfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSAoZXhwciwgXykgLT4gYXV4X2V4cHIgZXhwciBhY2MpXG4gICAgTW9kcy5TdHJpbmdTZXQuZW1wdHkgZXhwcl9saXN0XG5cbmxldCBuYW1lX21hdGNoIChzLCBfKSAocycsIF8pID0gU3RyaW5nLmNvbXBhcmUgcyBzJyA9IDBcblxubGV0IHByZXBhcmVfYWdlbnQgcnNpdGVzIGxzaXRlcyA9XG4gIGxldCByZWMgcHJlcGFyZV9zaXRlIHNpdGVzIGMgPVxuICAgIG1hdGNoIHNpdGVzIHdpdGhcbiAgICB8IFtdIC0+IFsgQXN0LkNvdW50ZXIgYyBdXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGhkIHdpdGhcbiAgICAgIHwgQXN0LkNvdW50ZXIgYycgd2hlbiBuYW1lX21hdGNoIGMuQXN0LmNvdW50ZXJfbmFtZSBjJy5Bc3QuY291bnRlcl9uYW1lIC0+XG4gICAgICAgIEFzdC5Db3VudGVyIHsgYycgd2l0aCBBc3QuY291bnRlcl9kZWx0YSA9IGMuQXN0LmNvdW50ZXJfZGVsdGEgfSA6OiB0bFxuICAgICAgfCBBc3QuQ291bnRlciBfIHwgQXN0LlBvcnQgXyAtPiBoZCA6OiBwcmVwYXJlX3NpdGUgdGwgYylcbiAgaW5cbiAgbGV0IGNvdW50ZXJzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MnIHJzaXRlIC0+XG4gICAgICAgIG1hdGNoIHJzaXRlIHdpdGhcbiAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYydcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+IGMgOjogYWNjJylcbiAgICAgIFtdIHJzaXRlc1xuICBpblxuICBMaXN0LmZvbGRfbGVmdCBwcmVwYXJlX3NpdGUgbHNpdGVzIGNvdW50ZXJzXG5cbigqIC0gYWRkIGluIHRoZSBsaHMgOiAoaSkgY291bnRlcnMgb25seSBtZW50aW9uZWQgaW4gdGhlIHJocyBhbmQgKGlpKSB0aGUgZGVsdGFzXG4gICAtIHN5bnRhY3RpYyBjaGVja3Mgb2Ygbm8gdGVzdCBpbiByaHM7IG5vIG1vZGlmIGluIGxocyAqKVxubGV0IHByZXBhcmVfY291bnRlcnMgcnVsZXMgPVxuICBsZXQgY2hlY2tfc3ludGF4IHNpdGVzIGYgZXJyb3IgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlBvcnQgXyAtPiAoKVxuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgICAgICBpZiBmIGMgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLkFzdC5jb3VudGVyX25hbWUgXiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuQXN0LmNvdW50ZXJfbmFtZSApKSlcbiAgICAgIHNpdGVzXG4gIGluXG5cbiAgbGV0IHJlYyBwcmVwYXJlX2xoc19ydWxlIHJocyBsaHMgPVxuICAgIG1hdGNoIHJocywgbGhzIHdpdGhcbiAgICB8IEFzdC5QcmVzZW50IChybmEsIHJzaXRlcywgXykgOjogciwgQXN0LlByZXNlbnQgKGxuYSwgbHNpdGVzLCBiKSA6OiBsIC0+XG4gICAgICBjaGVja19zeW50YXggbHNpdGVzXG4gICAgICAgIChmdW4gYyAtPiBub3QgKExvYy52IGMuY291bnRlcl9kZWx0YSA9IDApKVxuICAgICAgICBcIiBoYXMgYSBtb2RpZiBpbiB0aGUgbGhzXCI7XG4gICAgICBjaGVja19zeW50YXggcnNpdGVzXG4gICAgICAgIChmdW4gYyAtPiBub3QgKGMuY291bnRlcl90ZXN0ID0gTm9uZSkpXG4gICAgICAgIFwiIGhhcyBhIHRlc3QgaW4gdGhlIHJoc1wiO1xuICAgICAgaWYgU3RyaW5nLmNvbXBhcmUgKExvYy52IHJuYSkgKExvYy52IGxuYSkgPSAwIHRoZW4gKFxuICAgICAgICBsZXQgbHNpdGVzJyA9IHByZXBhcmVfYWdlbnQgcnNpdGVzIGxzaXRlcyBpblxuICAgICAgICBBc3QuUHJlc2VudCAobG5hLCBsc2l0ZXMnLCBiKSA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgICAgKSBlbHNlXG4gICAgICAgIGxoc1xuICAgICAgKCpUT0RPIHdlIHN0b3Agb3VyIGpvYiBoZXJlLiBMS2FwcGFfY29tcGlsZXIgd2lsbCBkZXRlY3RcbiAgICAgICAgbGF0ZXIgdGhhdCB0aGVyZSBpcyBhIHByb2JsZW0gKilcbiAgICB8IF8gOjogciwgKEFzdC5BYnNlbnQgXyBhcyBsYWdlbnQpIDo6IGwgLT5cbiAgICAgICgqY3JlYXRlZCBhZ2VudCopXG4gICAgICAoKiBUT0RPIE1heWJlIHNvbWUgc3ludGF4IGNoZWNrIG9uIHJocyBhcmUgbmVjZXNzYXJ5IGhlcmUgKilcbiAgICAgIGxhZ2VudCA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgIHwgQXN0LkFic2VudCBfIDo6IHIsIChBc3QuUHJlc2VudCAoXywgbHNpdGVzLCBfKSBhcyBsYWdlbnQpIDo6IGwgLT5cbiAgICAgICgqZGVsZXRlZCAgYWdlbnQqKVxuICAgICAgY2hlY2tfc3ludGF4IGxzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChMb2MudiBjLkFzdC5jb3VudGVyX2RlbHRhID0gMCkpXG4gICAgICAgIFwiIGhhcyBhIG1vZGlmIGluIHRoZSBsaHNcIjtcbiAgICAgIGxhZ2VudCA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgIHwgW10sIHggLT5cbiAgICAgIHhcbiAgICAgICgqIFRPRE8geCBtdXN0IGJlIFtdIGJ1dCBpdCBpcyBmb3Igbm93IExLYXBwYV9jb21waWxlclxuICAgICAgICAgZHV0eSB0byBjb21wbGFpbiAqKVxuICAgIHwgX3gsIFtdIC0+ICgqVE9ETyBsZXQgKCkgPSBhc3NlcnQgKF94ID0gW10pIGluKikgW11cbiAgaW5cblxuICBsZXQgYXV4IChydWxlIDogQXN0LnJ1bGUpIDogQXN0LnJ1bGUgPVxuICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgfCBBc3QuRWRpdCBfIC0+IHJ1bGVcbiAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+XG4gICAgICB7XG4gICAgICAgIHJ1bGUgd2l0aFxuICAgICAgICByZXdyaXRlID1cbiAgICAgICAgICBBc3QuQXJyb3dcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29udGVudCB3aXRoXG4gICAgICAgICAgICAgIEFzdC5saHMgPVxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHByZXBhcmVfbGhzX3J1bGUgKExpc3QuZmxhdHRlbiBjb250ZW50LnJocylcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZmxhdHRlbiBjb250ZW50Lmxocyk7XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH07XG4gICAgICB9XG4gIGluXG4gIExpc3QubWFwIChmdW4gKHMsIChyLCBhKSkgLT4gcywgKGF1eCByLCBhKSkgcnVsZXNcblxubGV0IGNvdW50ZXJzX3NpZ25hdHVyZSBzIGFnZW50cyA9XG4gIG1hdGNoXG4gICAgTGlzdC5maW5kXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgICAgfCBBc3QuUHJlc2VudCAocycsIF8sIF8pIC0+IG5hbWVfbWF0Y2ggcyBzJylcbiAgICAgIGFnZW50c1xuICB3aXRoXG4gIHwgQXN0LkFic2VudCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IEFzdC5QcmVzZW50IChfLCBzaXRlcycsIF8pIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHMgLT5cbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBjIDo6IGFjY1xuICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjKVxuICAgICAgW10gc2l0ZXMnXG5cbigqKiBbc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZSB2YXJfbmFtZSBhbm5vdCBjb3VudGVyX2RlbHRhIGNvdW50ZXJfZGVmXSB0cmFuc2xhdGVzIGEgY291bnRlciBDVkFSIHdob3NlIHZhbHVlIGFjdHMgdXBvbiB0aGUgcmF0ZSBleHByZXNzaW9uIGludG8gYSBydWxlIHBlciBwb3NzaWJsZSB2YWx1ZSwgdGhhdCBhcmUgc2VsZWN0ZWQgYnkgYSBDRVHCoGV4cHJlc3Npb24uXG4gKiAqKVxubGV0IHNwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgKHZhcl9uYW1lIDogc3RyaW5nKSAoYW5ub3QgOiBMb2MudClcbiAgICAoY291bnRlcl9kZWx0YSA6IGludCBMb2MuYW5ub3RlZCkgKGNvdW50ZXJfZGVmIDogQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZylcbiAgICA6IChBc3QuY291bnRlciBBc3Quc2l0ZSAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9XG4gIGxldCAobWluX3ZhbHVlLCBtYXhfdmFsdWUpIDogaW50ICogaW50ID1cbiAgICBtYXRjaCBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgfCBTb21lIChTb21lIG1pbl9sb2MsIF8pLCBTb21lIChTb21lIG1heF9sb2MsIF8pIC0+IG1pbl9sb2MsIG1heF9sb2NcbiAgICB8IChOb25lIHwgU29tZSAoTm9uZSwgXykpLCBfIHwgXywgKE5vbmUgfCBTb21lIChOb25lLCBfKSkgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICggXCJJbnZhbGlkIGNvdW50ZXIgc2lnbmF0dXJlIC0gaGF2ZSB0byBzcGVjaWZ5IG1pbi9tYXggYm91bmRcIixcbiAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX25hbWUgKSlcbiAgaW5cbiAgKCogTWFrZSBDRVEgY291bnRlcnMgd2l0aCBhbGwgcG9zc2libGUgdmFsdWVzIG9mIHZhcmlhYmxlICopXG4gIGxldCByZWMgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSA6IGludCkgOlxuICAgICAgKEFzdC5jb3VudGVyIEFzdC5zaXRlICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID1cbiAgICBpZiB2YWx1ZSA+IG1heF92YWx1ZSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2UgaWZcbiAgICAgIHZhbHVlICsgTG9jLnYgY291bnRlcl9kZWx0YSA8PSBtYXhfdmFsdWVcbiAgICAgICYmIHZhbHVlICsgTG9jLnYgY291bnRlcl9kZWx0YSA+PSBtaW5fdmFsdWVcbiAgICB0aGVuXG4gICAgICAoIEFzdC5Db3VudGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9IGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX25hbWU7XG4gICAgICAgICAgICBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0VRIHZhbHVlLCBhbm5vdCk7XG4gICAgICAgICAgICBjb3VudGVyX2RlbHRhO1xuICAgICAgICAgIH0sXG4gICAgICAgIFsgeyBuYW1lID0gdmFyX25hbWU7IHZhbHVlIH0gXSApXG4gICAgICA6OiBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlICsgMSlcbiAgICBlbHNlXG4gICAgICBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlICsgMSlcbiAgaW5cbiAgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzIG1pbl92YWx1ZVxuXG5sZXQgaGFzX2NvdW50ZXJzIGNvbXBpbCA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEFzdC5BYnNlbnQgXyAtPiBmYWxzZVxuICAgICAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMsIF8pIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5Db3VudGVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHNpdGVzKVxuICAgIGNvbXBpbC5Bc3Quc2lnbmF0dXJlc1xuXG4oKiogW3NwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXNdIH53YXJuaW5nIHJ1bGVzIHNpZ25hdHVyZXNdIHJlcGxhY2VzIGNvdW50ZXJzIHdpdGggQ1ZBUiBjb250cmFpbnRzIHdpdGggY291bnRlcnMgd2l0aCBDRVEgY29udHJhaW50cyBpbiBbcnVsZXNdLCBpbiBsaXN0cyB3aXRoIHRoZSB2YXJpYWJsZSB2YWx1ZXMgYXNzb2NpYXRlZCwgc28gdGhhdCBpbiBzaW11bGF0aW9uLCBjb3JyZWN0IGNvdW50ZXIgY29uZGl0aW9ucyBhcmUgYmVpbmcgc2VsZWN0ZWQuIFRoZSBtYWluIG9wZXJhdGlvbiBoYXBwZW5zIGluIFtzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlXSAqKVxubGV0IHNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmcgcnVsZXMgc2lnbmF0dXJlcyA9XG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlIGlkcyBjb3VudGVyX2RlZnMgPSBmdW5jdGlvblxuICAgIHwgQXN0LlBvcnQgcCAtPiBbIEFzdC5Qb3J0IHAsIFtdIF1cbiAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgIGxldCBjb3VudGVyX2RlZiA6IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWcgPVxuICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAoZnVuIGNvdW50ZXIgLT5cbiAgICAgICAgICAgIG5hbWVfbWF0Y2ggYy5Bc3QuY291bnRlcl9uYW1lIGNvdW50ZXIuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lKVxuICAgICAgICAgIGNvdW50ZXJfZGVmc1xuICAgICAgaW5cbiAgICAgIGxldCAobWluX3ZhbHVlLCBtYXhfdmFsdWUpIDogaW50ICogaW50ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICAoIGNvdW50ZXJfZGVmLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluLFxuICAgICAgICAgICAgY291bnRlcl9kZWYuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZSAoU29tZSBtaW5fbG9jLCBfKSwgU29tZSAoU29tZSBtYXhfbG9jLCBfKSAtPiBtaW5fbG9jLCBtYXhfbG9jXG4gICAgICAgIHwgKE5vbmUgfCBTb21lIChOb25lLCBfKSksIF8gfCBfLCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcIkludmFsaWQgY291bnRlciBzaWduYXR1cmUgLSBoYXZlIHRvIHNwZWNpZnkgbWluL21heCBib3VuZFwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfZGVmLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSApKVxuICAgICAgaW5cbiAgICAgIGxldCBkZWx0YSA9IExvYy52IGMuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgICAgIChtYXRjaCBjLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICB8IFNvbWUgKEFzdC5DRVEgdmFsdWUsIF8pIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgKGRlbHRhID4gMCB8fCBtaW5fdmFsdWUgPD0gdmFsdWUgKyBkZWx0YSlcbiAgICAgICAgICAmJiAoZGVsdGEgPCAwIHx8IHZhbHVlICsgZGVsdGEgPD0gbWF4X3ZhbHVlKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgWyBBc3QuQ291bnRlciBjLCBbXSBdXG4gICAgICAgIGVsc2UgaWYgZGVsdGEgPiAwIHx8IG1pbl92YWx1ZSA8PSB2YWx1ZSArIGRlbHRhIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgXiBcIiBiZWNvbWVzIGxlc3MgdGhhbiB0aGUgICBtaW5pbWFsIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBtaW5fdmFsdWUsXG4gICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgYy5jb3VudGVyX25hbWUgKSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLmNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICBeIFwiIGJlY29tZXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbWFsIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBtYXhfdmFsdWUsXG4gICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgYy5jb3VudGVyX25hbWUgKSlcbiAgICAgIHwgU29tZSAoQXN0LkNMVEUgX3ZhbHVlLCBfYW5ub3QpIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCI8PSBTaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgbm90IGltcGxlbWVudGVkXCIpKVxuICAgICAgICAoKiBUT0RPwqBOT1cgKilcbiAgICAgIHwgU29tZSAoQXN0LkNHVEUgdmFsdWUsIGFubm90KSAtPlxuICAgICAgICBpZiB2YWx1ZSArIGRlbHRhIDwgbWluX3ZhbHVlIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgXiBcIiBiZWNvbWVzIGxlc3MgdGhhbiB0aGEgbWluaW1hbCB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgbWluX3ZhbHVlLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuY291bnRlcl9uYW1lICkpO1xuICAgICAgICBpZiB2YWx1ZSA9IG1pbl92YWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWUgXiBcIj0+XCIgXiBzdHJpbmdfb2ZfaW50IG1pbl92YWx1ZVxuICAgICAgICAgICAgXiBcIiAgYWx3YXlzIGhvbGRzXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIHdhcm5pbmcgfnBvczphbm5vdCAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIGVycm9yKVxuICAgICAgICApO1xuICAgICAgICBbIEFzdC5Db3VudGVyIGMsIFtdIF1cbiAgICAgIHwgU29tZSAoQXN0LkNWQVIgdmFyX25hbWUsIGFubm90KSB3aGVuIE1vZHMuU3RyaW5nU2V0Lm1lbSB2YXJfbmFtZSBpZHMgLT5cbiAgICAgICAgKCogSWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQgaW4gYW4gcmF0ZSBkZWZpbml0aW9uIGV4cHJlc3Npb24gKilcbiAgICAgICAgc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZSB2YXJfbmFtZSBhbm5vdCBjLmNvdW50ZXJfZGVsdGFcbiAgICAgICAgICBjb3VudGVyX2RlZlxuICAgICAgfCBOb25lIHwgU29tZSAoQXN0LkNWQVIgXywgXykgLT5cbiAgICAgICAgaWYgZGVsdGEgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBjb3VudGVyX2RlbHRhIDogQXN0LmNvdW50ZXIgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjIHdpdGhcbiAgICAgICAgICAgICAgY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNHVEUgKGFicyBkZWx0YSArIG1pbl92YWx1ZSksIExvYy5kdW1teSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBbIEFzdC5Db3VudGVyIGNvdW50ZXJfZGVsdGEsIFtdIF1cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKCBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgIHsgYyB3aXRoIGNvdW50ZXJfdGVzdCA9IFNvbWUgKEFzdC5DR1RFIG1pbl92YWx1ZSwgTG9jLmR1bW15KSB9LFxuICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgIF0pXG4gIGluXG5cbiAgbGV0IHJlYyBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlcyAoaWRzIDogTW9kcy5TdHJpbmdTZXQudClcbiAgICAgIChjb3VudGVyX2RlZnMgOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnIGxpc3QpIDpcbiAgICAgIEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgLT5cbiAgICAgIChBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFsgW10sIFtdIF1cbiAgICB8IHMgOjogdCAtPlxuICAgICAgY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cFxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZXMgaWRzIGNvdW50ZXJfZGVmcyB0KVxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZSBpZHMgY291bnRlcl9kZWZzIHMpXG4gIGluXG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9hZ2VudCAoaWRzIDogTW9kcy5TdHJpbmdTZXQudCkgOlxuICAgICAgQXN0LmFnZW50IC0+IChBc3QuYWdlbnQgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgQXN0LkFic2VudCBsIC0+IFsgQXN0LkFic2VudCBsLCBbXSBdXG4gICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgbGV0IGNvdW50ZXJfZGVmcyA9IGNvdW50ZXJzX3NpZ25hdHVyZSBhZ2VudF9uYW1lIHNpZ25hdHVyZXMgaW5cbiAgICAgIGxldCBzaXRlc19mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZXMgPVxuICAgICAgICBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlcyBpZHMgY291bnRlcl9kZWZzIHNpdGVzXG4gICAgICBpblxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biAoc2l0ZXMnLCB2YXJfdmFsdWVzKSAtPlxuICAgICAgICAgIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lLCBzaXRlcycsIG1vZGlmKSwgdmFyX3ZhbHVlcylcbiAgICAgICAgc2l0ZXNfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVzXG4gIGluXG4gIGxldCByZWMgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfbWl4dHVyZSAoaWRzIDogTW9kcy5TdHJpbmdTZXQudCkgOlxuICAgICAgQXN0LmFnZW50IGxpc3QgLT4gKEFzdC5hZ2VudCBsaXN0ICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFsgW10sIFtdIF1cbiAgICB8IGFzdF9hZ2VudCA6OiB0IC0+XG4gICAgICBjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9taXh0dXJlIGlkcyB0KVxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfYWdlbnQgaWRzIGFzdF9hZ2VudClcbiAgaW5cblxuICBsZXQgdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgciAtPiBTb21lICh1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcilcbiAgaW5cbiAgbGV0IHVwZGF0ZV9wYWlyX3JhdGUgY291bnRlcl92YXJfdmFsdWVzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAocjEsIHIyKSAtPlxuICAgICAgU29tZVxuICAgICAgICAoIHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyByMSxcbiAgICAgICAgICB1cGRhdGVfb3B0X3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHIyIClcbiAgaW5cblxuICAoKiBUT0RPIFtzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9ydWxlXSBydWxlIGV2YWx1ZXMgdG8gYSBsaXN0IG9mIHJ1bGVzIHdpdGggdGhlaXIgbmFtZXMgKilcbiAgbGV0IHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGVcbiAgICAgIChydWxlX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgICAgKChydWxlLCBhbm5vdCkgOiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgOlxuICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgbGlzdCA9XG4gICAgbGV0IG1peF9saHMgPVxuICAgICAgbWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgIHwgQXN0LkVkaXQgY29udGVudCAtPiBjb250ZW50Lm1peFxuICAgICAgfCBBc3QuQXJyb3cgY29udGVudCAtPiBjb250ZW50Lmxoc1xuICAgIGluXG5cbiAgICAoKiBGZXRjaCBpZHMgZnJvbSBydWxlIHJhdGVzICopXG4gICAgbGV0IGV4cHJzX2Zyb21fcmF0ZXMgOlxuICAgICAgICAoQXN0Lm1peHR1cmUsIHN0cmluZykgS2FwcGFfdGVybXMuQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24gbGlzdCA9XG4gICAgICBbIFNvbWUgcnVsZS5rX2RlZjsgcnVsZS5rX29wIF1cbiAgICAgIEAgKG1hdGNoIHJ1bGUua191biB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgcl9rdW5fcmF0ZXMgLT4gWyBTb21lIChmc3Qgcl9rdW5fcmF0ZXMpOyBzbmQgcl9rdW5fcmF0ZXMgXSlcbiAgICAgIEBcbiAgICAgIG1hdGNoIHJ1bGUua19vcF91biB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSByX2tfb3BfdW5fcmF0ZXMgLT5cbiAgICAgICAgWyBTb21lIChmc3Qgcl9rX29wX3VuX3JhdGVzKTsgc25kIHJfa19vcF91bl9yYXRlcyBdXG4gICAgaW5cbiAgICBsZXQgaWRzID0gY29sbGVjdF9pZHMgZXhwcnNfZnJvbV9yYXRlcyBpblxuXG4gICAgbGV0IG1peHR1cmVfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWUgOlxuICAgICAgICAoQXN0LmFnZW50IGxpc3QgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPVxuICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfbWl4dHVyZSBpZHMgKExpc3QuZmxhdHRlbiBtaXhfbGhzKVxuICAgIGluXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKGxocywgY291bnRlcl92YXJfdmFsdWVzKSAtPlxuICAgICAgICAoKiBBcHBseSBjb3VudGVyIHZhciB2YWx1ZXMgdG8gcmF0ZXMgKilcbiAgICAgICAgbGV0IGtfZGVmID0gdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHJ1bGUua19kZWYgaW5cbiAgICAgICAgbGV0IGtfdW4gPSB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfdW4gaW5cbiAgICAgICAgbGV0IGtfb3AgPSB1cGRhdGVfb3B0X3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHJ1bGUua19vcCBpblxuICAgICAgICBsZXQga19vcF91biA9IHVwZGF0ZV9wYWlyX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHJ1bGUua19vcF91biBpblxuICAgICAgICBsZXQgbGhzID0gWyBsaHMgXSBpblxuICAgICAgICBsZXQgbmV3X3J1bGVfbmFtZSA6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gPVxuICAgICAgICAgIGlmIGNvdW50ZXJfdmFyX3ZhbHVlcyA9IFtdIHRoZW5cbiAgICAgICAgICAgIHJ1bGVfbmFtZVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogQnVpbGQgY291bnRlcnNfaWRzX2FzX3N0cmluZywgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYnVpbGQgbmV3IHJ1bGUgbmFtZXMgKilcbiAgICAgICAgICAgIGxldCBjb3VudGVyc19pZHNfYXNfc3RyaW5nID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoKiBUT0RPIHNob3VsZCB3ZSBhZGQgYSBzZXBhcmF0b3IuIG1heWJlIGFsc28gYWRkIG5hbWUgb2YgdmFyaWFibGU/ICopXG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyB2YXJfdmFsdWUgLT4gc3RyaW5nX29mX2ludCB2YXJfdmFsdWUudmFsdWUgXiBhY2MpXG4gICAgICAgICAgICAgICAgXCJcIiBjb3VudGVyX3Zhcl92YWx1ZXNcbiAgICAgICAgICAgIGluXG5cbiAgICAgICAgICAgIG1hdGNoIHJ1bGVfbmFtZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSAoKiBObyBydWxlIG5hbWUsIG5ldyBydWxlcyB3aWxsIGhhdmUgbm8gbmFtZSB0b28gKilcbiAgICAgICAgICAgIHwgU29tZSAocnVsZV9uYW1lX3N0cmluZywgbG9jYWxpdHkpIC0+XG4gICAgICAgICAgICAgICgqIE1ha2UgYSBuZXcgbmFtZSBmb3IgbmV3IHJ1bGUgaW5jbHVkaW5nIGNvdW50ZXJfdmFyX3ZhbHVlcyBpbmZvICopXG4gICAgICAgICAgICAgIFNvbWUgKHJ1bGVfbmFtZV9zdHJpbmcgXiBcIl9fXCIgXiBjb3VudGVyc19pZHNfYXNfc3RyaW5nLCBsb2NhbGl0eSlcbiAgICAgICAgICApXG4gICAgICAgIGluXG5cbiAgICAgICAgKCBuZXdfcnVsZV9uYW1lLFxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBBc3QucmV3cml0ZSA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBBc3QuRWRpdCBjb250ZW50IC0+IEFzdC5FZGl0IHsgY29udGVudCB3aXRoIEFzdC5taXggPSBsaHMgfVxuICAgICAgICAgICAgICAgIHwgQXN0LkFycm93IGNvbnRlbnQgLT4gQXN0LkFycm93IHsgY29udGVudCB3aXRoIEFzdC5saHMgfSk7XG4gICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBydWxlLmJpZGlyZWN0aW9uYWw7XG4gICAgICAgICAgICAgIGtfZGVmO1xuICAgICAgICAgICAgICBrX3VuO1xuICAgICAgICAgICAgICBrX29wO1xuICAgICAgICAgICAgICBrX29wX3VuO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFubm90ICkgKSlcbiAgICAgIG1peHR1cmVfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVcbiAgaW5cblxuICBsZXQgcnVsZXMgPSBwcmVwYXJlX2NvdW50ZXJzIHJ1bGVzIGluXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgKHJ1bGVfbmFtZSwgcnVsZV9hbm5vdGVkKSAtPlxuICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZSBydWxlX25hbWUgcnVsZV9hbm5vdGVkIEAgYWNjKVxuICAgIFtdIHJ1bGVzXG4gICgqIFRPRE86IGlzIHJldiByZWxldmFudCBoZXJlPyAqKVxuICB8PiBMaXN0LnJldlxuXG5sZXQgc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZyB+ZGVidWdfbW9kZVxuICAgIChjb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nIGNvbXBpbC5ydWxlc1xuICAgICAgY29tcGlsLnNpZ25hdHVyZXNcbiAgaW5cbiAgKCogRGVidWcgcHJpbnRpbmcgKilcbiAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiQC5hc3QgcnVsZXNALlwiO1xuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAocywgKHIsIF8pKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPVxuICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsLCBfKSAtPiBsXG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJALiVzID0gJWFcIiBsYWJlbCBBc3QucHJpbnRfYXN0X3J1bGUgcilcbiAgICAgIHJ1bGVzXG4gICk7XG4gIHsgY29tcGlsIHdpdGggQXN0LnJ1bGVzIH1cblxubGV0IG1ha2VfY291bnRlcl9hZ2VudCBzaWdzIChpc19maXJzdCwgKGRzdCwgcmFfZXJhc2VkKSkgKGlzX2xhc3QsIGVxdWFsKSBpIGpcbiAgICBsb2MgKGNyZWF0ZWQgOiBib29sKSA6IExLYXBwYS5ydWxlX2FnZW50ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiwgcG9ydF9hID0gY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCByYV90eXBlID0gY291bnRlcl9hZ2VudF9pbmZvLmlkIGluXG5cbiAgbGV0IHJhX3BvcnRzID1cbiAgICBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eVxuICAgICAgKChMS2FwcGEuTE5LX0ZSRUUsIGxvYyksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgYmVmb3JlX3N3aXRjaCA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgaWYgY3JlYXRlZCB0aGVuXG4gICAgICAgIExLYXBwYS5MaW5rZWQgaVxuICAgICAgZWxzZSBpZiByYV9lcmFzZWQgdGhlblxuICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICBlbHNlXG4gICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgZWxzZVxuICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaSwgZHN0KSwgbG9jXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaSwgKHJhX3R5cGUsIHBvcnRfYSkpLCBsb2NcbiAgaW5cbiAgbGV0ICgpID0gcmFfcG9ydHMuKHBvcnRfYikgPC0gYmVmb3JlLCBiZWZvcmVfc3dpdGNoIGluXG4gIGxldCBhZnRlciA9XG4gICAgaWYgaXNfbGFzdCAmJiBlcXVhbCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX0ZSRUUsIGxvY1xuICAgIGVsc2UgaWYgaXNfbGFzdCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX0FOWSwgbG9jXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaiwgKHJhX3R5cGUsIHBvcnRfYikpLCBsb2NcbiAgaW5cbiAgbGV0ICgpID1cbiAgICByYV9wb3J0cy4ocG9ydF9hKSA8LVxuICAgICAgKCBhZnRlcixcbiAgICAgICAgaWYgcmFfZXJhc2VkIHRoZW5cbiAgICAgICAgICBMS2FwcGEuRXJhc2VkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gIGluXG4gIGxldCByYV9pbnRzID0gQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIHtcbiAgICBMS2FwcGEucmFfdHlwZTtcbiAgICByYV9lcmFzZWQ7XG4gICAgcmFfcG9ydHM7XG4gICAgcmFfaW50cztcbiAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpO1xuICB9XG5cbmxldCByYXdfY291bnRlcl9hZ2VudCAoaXNfZmlyc3QsIGZpcnN0X2xpbmspIChpc19sYXN0LCBsYXN0X2xpbmspIGkgaiBzaWdzIGVxdWFsXG4gICAgOiBSYXdfbWl4dHVyZS5hZ2VudCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcG9ydHMgPSBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eSBSYXdfbWl4dHVyZS5GUkVFIGluXG4gIGxldCBpbnRlcm5hbHMgPVxuICAgIEFycmF5LmluaXQgY291bnRlcl9hZ2VudF9pbmZvLmFyaXR5IChmdW4gaSAtPlxuICAgICAgICBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBjb3VudGVyX2FnZW50X2luZm8uaWQgaSBzaWdzKVxuICBpblxuICBsZXQgYmVmb3JlID1cbiAgICBpZiBpc19maXJzdCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgZmlyc3RfbGlua1xuICAgIGVsc2VcbiAgICAgIFJhd19taXh0dXJlLlZBTCBpXG4gIGluXG4gIGxldCAoKSA9IHBvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSBpblxuICBsZXQgYWZ0ZXIgPVxuICAgIGlmIGlzX2xhc3QgJiYgZXF1YWwgdGhlblxuICAgICAgUmF3X21peHR1cmUuRlJFRVxuICAgIGVsc2UgaWYgaXNfbGFzdCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgbGFzdF9saW5rXG4gICAgZWxzZVxuICAgICAgUmF3X21peHR1cmUuVkFMIGpcbiAgaW5cbiAgbGV0ICgpID0gcG9ydHMuKHBvcnRfYSkgPC0gYWZ0ZXIgaW5cbiAge1xuICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IGNvdW50ZXJfYWdlbnRfaW5mby5pZDtcbiAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgUmF3X21peHR1cmUuYV9pbnRzID0gaW50ZXJuYWxzO1xuICB9XG5cbmxldCByZWMgYWRkX2luY3IgKGkgOiBpbnQpIChmaXJzdF9saW5rIDogaW50KSAobGFzdF9saW5rIDogaW50KVxuICAgIChtaW5fdmFsdWUgOiBpbnQpIChkZWx0YSA6IGludCkgKGVxdWFsIDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucykgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IGxpc3QgPVxuICBpZiBpID0gZGVsdGEgdGhlblxuICAgIFtdXG4gIGVsc2UgKFxuICAgIGxldCBpc19maXJzdCA9IGkgPSAwIGluXG4gICAgbGV0IGlzX2xhc3QgPSBpID0gZGVsdGEgLSAxIGluXG4gICAgbGV0IHJhd19pbmNyID1cbiAgICAgIHJhd19jb3VudGVyX2FnZW50IChpc19maXJzdCwgZmlyc3RfbGluaykgKGlzX2xhc3QsIGxhc3RfbGluaylcbiAgICAgICAgKGZpcnN0X2xpbmsgKyBpKVxuICAgICAgICAoZmlyc3RfbGluayArIGkgKyAxKVxuICAgICAgICBzaWdzIGVxdWFsXG4gICAgaW5cbiAgICByYXdfaW5jciA6OiBhZGRfaW5jciAoaSArIDEpIGZpcnN0X2xpbmsgbGFzdF9saW5rIG1pbl92YWx1ZSBkZWx0YSBlcXVhbCBzaWdzXG4gIClcblxubGV0IHJlYyBsaW5rX2luY3IgKHNpZ3MgOiBTaWduYXR1cmUucykgKGkgOiBpbnQpIChuYiA6IGludClcbiAgICAoYWdfaW5mbyA6IChpbnQgKiBpbnQpICogYm9vbCkgKGVxdWFsIDogYm9vbCkgKGxpbmsgOiBpbnQpIChsb2MgOiBMb2MudClcbiAgICAobWluX3ZhbHVlIDogaW50KSAoZGVsdGEgOiBpbnQpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGlmIGkgPSBuYiB0aGVuXG4gICAgW11cbiAgZWxzZSAoXG4gICAgbGV0IGlzX2ZpcnN0ID0gaSA9IDAgaW5cbiAgICBsZXQgaXNfbGFzdCA9IGkgPSBuYiAtIDEgaW5cbiAgICBsZXQgcmFfYWdlbnQgPVxuICAgICAgbWFrZV9jb3VudGVyX2FnZW50IHNpZ3MgKGlzX2ZpcnN0LCBhZ19pbmZvKSAoaXNfbGFzdCwgZXF1YWwpIChsaW5rICsgaSlcbiAgICAgICAgKGxpbmsgKyBpICsgMSlcbiAgICAgICAgbG9jIChkZWx0YSA+IDApXG4gICAgaW5cbiAgICByYV9hZ2VudCA6OiBsaW5rX2luY3Igc2lncyAoaSArIDEpIG5iIGFnX2luZm8gZXF1YWwgbGluayBsb2MgbWluX3ZhbHVlIGRlbHRhXG4gIClcblxubGV0IHJlYyBlcmFzZV9pbmNyIChzaWdzIDogU2lnbmF0dXJlLnMpIChpIDogaW50KSAoaW5jcnMgOiBMS2FwcGEucnVsZV9taXh0dXJlKVxuICAgIChkZWx0YSA6IGludCkgKGxpbmsgOiBpbnQpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIG1hdGNoIGluY3JzIHdpdGhcbiAgfCBpbmNyIDo6IGluY3JfcyAtPlxuICAgIGlmIGkgPSBhYnMgZGVsdGEgdGhlbiAoXG4gICAgICBsZXQgYmVmb3JlLCBfID0gaW5jci5MS2FwcGEucmFfcG9ydHMuKHBvcnRfYikgaW5cbiAgICAgIGluY3IuTEthcHBhLnJhX3BvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSwgTEthcHBhLkxpbmtlZCBsaW5rO1xuICAgICAgaW5jciA6OiBpbmNyX3NcbiAgICApIGVsc2UgKFxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIChhLCBfKSAtPiBpbmNyLkxLYXBwYS5yYV9wb3J0cy4oaSkgPC0gYSwgTEthcHBhLkVyYXNlZClcbiAgICAgICAgaW5jci5MS2FwcGEucmFfcG9ydHM7XG4gICAgICBsZXQgcnVsZV9hZ2VudCA9IHsgaW5jciB3aXRoIExLYXBwYS5yYV9lcmFzZWQgPSB0cnVlIH0gaW5cbiAgICAgIHJ1bGVfYWdlbnQgOjogZXJhc2VfaW5jciBzaWdzIChpICsgMSkgaW5jcl9zIGRlbHRhIGxpbmtcbiAgICApXG4gIHwgW10gLT4gW11cblxuKCoqIFJldHVybnMgbWl4dHVyZXMgZm9yIGFnZW50IHdpdGggc2l0ZSBjaGFuZ2VkIGZyb20gY291bnRlciB0byBwb3J0LCBhcyB3ZWxsIGFzIG5ldyBbbGlua19uYl0gYWZ0ZXIgcHJldmlvdXMgYWRkaXRpb25zXG4gKiBVc2VkIGJ5IFtjb21waWxlX2NvdW50ZXJfaW5fcnVsZV9hZ2VudF0qKVxubGV0IGNvdW50ZXJfYmVjb21lc19wb3J0IChzaWdzIDogU2lnbmF0dXJlLnMpIChyYSA6IExLYXBwYS5ydWxlX2FnZW50KVxuICAgIChwb3J0X2lkIDogaW50KSAoY291bnRlcl9kZWYgOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnKVxuICAgIChjb3VudGVyIDogQXN0LmNvdW50ZXIpIChzdGFydF9saW5rX25iIDogaW50KSA6XG4gICAgKExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50KSAqIGludCA9XG4gICgqIFJldHVybnMgcG9zaXRpdmUgcGFydCBvZiB2YWx1ZSAqKVxuICBsZXQgcG9zaXRpdmVfcGFydCAoaSA6IGludCkgOiBpbnQgPVxuICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlXG4gICAgICBpXG4gIGluXG4gIGxldCAobWluX3ZhbHVlLCBfbWF4X3ZhbHVlKSA6IGludCAqIGludCA9XG4gICAgbWF0Y2ggY291bnRlcl9kZWYuY291bnRlcl9zaWdfbWluLCBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19tYXggd2l0aFxuICAgIHwgU29tZSAoU29tZSBtaW5fbG9jLCBfKSwgU29tZSAoU29tZSBtYXhfbG9jLCBfKSAtPiBtaW5fbG9jLCBtYXhfbG9jXG4gICAgfCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSwgXyB8IF8sIChOb25lIHwgU29tZSAoTm9uZSwgXykpIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoIFwiSW52YWxpZCBjb3VudGVyIHNpZ25hdHVyZSAtIGhhdmUgdG8gc3BlY2lmeSBtaW4vbWF4IGJvdW5kXCIsXG4gICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19uYW1lICkpXG4gIGluXG4gIGxldCBsb2MgOiBMb2MudCA9IExvYy5nZXRfYW5ub3QgY291bnRlci5Bc3QuY291bnRlcl9uYW1lIGluXG4gIGxldCAoZGVsdGEsIGxvY19kZWx0YSkgOiBpbnQgKiBMb2MudCA9IGNvdW50ZXIuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgbGV0IGNvdW50ZXJfdGVzdCA6IEFzdC5jb3VudGVyX3Rlc3QgTG9jLmFubm90ZWQgPVxuICAgIE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZVxuICAgICAgfmV4Y2VwOlxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIlxuICAgICAgICAgICAgIF4gTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgXiBcIiBzaG91bGQgaGF2ZSBhIHRlc3QgYnkgbm93XCIsXG4gICAgICAgICAgICAgbG9jICkpXG4gICAgICBjb3VudGVyLkFzdC5jb3VudGVyX3Rlc3RcbiAgaW5cbiAgbGV0ICh0ZXN0LCBlcXVhbCkgOiBpbnQgKiBib29sID1cbiAgICBtYXRjaCBMb2MudiBjb3VudGVyX3Rlc3Qgd2l0aFxuICAgIHwgQXN0LkNWQVIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkNvdW50ZXIgXCJcbiAgICAgICAgICAgICBeIExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgIF4gXCIgZGVmaW5lcyBhIHZhcmlhYmxlLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IENFUSBcXFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMgYWZ0ZXIgcnVsZSBzcGxpdHRpbmdcIixcbiAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfdGVzdCApKVxuICAgIHwgQXN0LkNFUSBqIC0+IGosIHRydWVcbiAgICB8IEFzdC5DR1RFIGogLT4gaiwgZmFsc2VcbiAgICB8IEFzdC5DTFRFIF9qIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgXCJQT1JUIDogPD0gc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkLCBub3QgaW1wbGVtZW50ZWRcIikpXG4gICAgKCogVE9ET8Kgbm93ICopXG4gIGluXG4gIGxldCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkIDogaW50ID0gc3RhcnRfbGlua19uYiArICh0ZXN0IC0gbWluX3ZhbHVlICsgMSkgaW5cbiAgbGV0IGxpbmtfZm9yX2VyYXNlZCA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyBhYnMgZGVsdGEgKCorIG1pbl92YWx1ZSopIGluXG4gIGxldCBhZ19pbmZvIDogKGludCAqIGludCkgKiBib29sID1cbiAgICAocG9ydF9pZCwgcmEuTEthcHBhLnJhX3R5cGUpLCByYS5MS2FwcGEucmFfZXJhc2VkXG4gIGluXG5cbiAgbGV0IHRlc3RfaW5jciA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICAgIGxpbmtfaW5jciBzaWdzIDBcbiAgICAgICh0ZXN0ICsgMSAtIG1pbl92YWx1ZSlcbiAgICAgIGFnX2luZm8gZXF1YWwgc3RhcnRfbGlua19uYiBsb2MgbWluX3ZhbHVlIGRlbHRhXG4gIGluXG4gIGxldCBhZGp1c3RfZGVsdGEgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgICBpZiBkZWx0YSA8IDAgdGhlblxuICAgICAgZXJhc2VfaW5jciBzaWdzIDAgdGVzdF9pbmNyIGRlbHRhIGxpbmtfZm9yX2VyYXNlZFxuICAgIGVsc2VcbiAgICAgIHRlc3RfaW5jclxuICBpblxuICBsZXQgY3JlYXRlZCA6IFJhd19taXh0dXJlLnQgPVxuICAgIGlmIGRlbHRhID4gMCB0aGVuXG4gICAgICBhZGRfaW5jciAwIHN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQgc3RhcnRfbGlua19uYiBtaW5fdmFsdWUgZGVsdGEgZmFsc2Ugc2lnc1xuICAgIGVsc2VcbiAgICAgIFtdXG4gIGluXG5cbiAgaWYgdGVzdCArIGRlbHRhIDwgbWluX3ZhbHVlIHRoZW5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChcIkNvdW50ZXIgdGVzdCArIGRlbHRhIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gbWluX3ZhbHVlXCIsIGxvY19kZWx0YSkpO1xuXG4gIGxldCBzd2l0Y2ggOiBMS2FwcGEuc3dpdGNoaW5nID1cbiAgICBpZiBkZWx0YSA9IDAgdGhlblxuICAgICAgaWYgcmEuTEthcHBhLnJhX2VyYXNlZCB0aGVuXG4gICAgICAgIExLYXBwYS5FcmFzZWRcbiAgICAgIGVsc2VcbiAgICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgICBlbHNlIGlmIGRlbHRhID4gMCB0aGVuXG4gICAgICBMS2FwcGEuTGlua2VkIHN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWRcbiAgICBlbHNlXG4gICAgICBMS2FwcGEuTGlua2VkIGxpbmtfZm9yX2VyYXNlZFxuICBpblxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iIDogaW50ID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICByYS5MS2FwcGEucmFfcG9ydHMuKHBvcnRfaWQpIDwtXG4gICAgKCAoTEthcHBhLkxOS19WQUxVRSAoc3RhcnRfbGlua19uYiwgKHBvcnRfYiwgY291bnRlcl9hZ2VudF9pbmZvLmlkKSksIGxvYyksXG4gICAgICBzd2l0Y2ggKTtcbiAgbGV0IG5ld19saW5rX25iIDogaW50ID1cbiAgICBzdGFydF9saW5rX25iICsgMSArIHRlc3QgKyBwb3NpdGl2ZV9wYXJ0IGRlbHRhIC0gbWluX3ZhbHVlXG4gIGluXG5cbiAgKGFkanVzdF9kZWx0YSwgY3JlYXRlZCksIG5ld19saW5rX25iXG5cbigqKiBDb21waWxlcyB0aGUgY291bnRlciBwcmVjb25kaXRpb24gaW4gYSBsZWZ0IGhhbmQgc2lkZSBtaXh0dXJlIG9mIGEgcnVsZSBpbnRvIGEgbWl4dHVyZSB3aGljaCB0ZXN0cyBkdW1teSBwb3NpdGlvbnNcbiAqIHJ1bGVfYWdlbnRfIC0gYWdlbnQgd2l0aCBjb3VudGVycyBpbiBhIHJ1bGVcbiAgIGxua19uYiAtIHRoZSBtYXggbGluayBudW1iZXIgdXNlZCBpbiB0aGUgcnVsZTtcbiAgIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIC0gaW5mbyBvbiB0aGUgY291bnRlciBhZ2VudFxuICAgcmV0dXJuczogYWdlbnQgd2l0aCBleHBsaWNpdCBjb3VudGVyczsgY3JlYXRlZCBpbmNyIGFnZW50cztcbiAgICAgICAgICAgIHRoZSBuZXh0IGxpbmsgbnVtYmVyIHRvIHVzZSAqKVxubGV0IGNvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50IChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKGNvdW50ZXJzX2RlZnMgOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnIG9wdGlvbiBBcnJheS50KVxuICAgIChydWxlX2FnZW50XyA6IExLYXBwYS5ydWxlX2FnZW50IHdpdGhfYWdlbnRfY291bnRlcnMpIChsbmtfbmIgOiBpbnQpIDpcbiAgICBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCAqIGludCA9XG4gIGxldCAoaW5jcnMsIGxua19uYicpIDogKExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50KSBsaXN0ICogaW50ID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGlkIChhY2NfaW5jcnMsIGxua19uYikgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGFjY19pbmNycywgbG5rX25iXG4gICAgICAgIHwgU29tZSAoY291bnRlciwgXykgLT5cbiAgICAgICAgICAobWF0Y2ggY291bnRlcnNfZGVmcy4oaWQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICBcIlNJR05BVFVSRSBvZiBDT1VOVEVSUyBJUyBOT1QgSU5JVElBTElaRURcIikpXG4gICAgICAgICAgfCBTb21lIGNvdW50ZXJfc2lnIC0+XG4gICAgICAgICAgICAoKmxldCBjb3VudGVyX2RlZnMgPSAoU2lnbmF0dXJlLmdldCBzaWdzIHJ1bGVfYWdlbnQucmFfdHlwZSkgaW4qKVxuICAgICAgICAgICAgKCpsZXQgY291bnRlcl9kZWZzID0gKCogVE8gRE8gKilcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgPSAgTG9jLmFubm90X3dpdGhfZHVtbXkgXCJcIjtcbiAgICAgICAgICAgICAgICBjb3VudGVyX3NpZ19taW4gPSBOb25lO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJfc2lnX21heCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdDtcbiAgICAgICAgICAgICAgICBjb3VudGVyX3NpZ19kZWZhdWx0ID0gMDtcbiAgICAgICAgICAgICAgfSBpbiopXG4gICAgICAgICAgICBsZXQgbmV3X2luY3JzLCBuZXdfbG5rX25iID1cbiAgICAgICAgICAgICAgY291bnRlcl9iZWNvbWVzX3BvcnQgc2lncyBydWxlX2FnZW50Xy5hZ2VudCBpZCBjb3VudGVyX3NpZyBjb3VudGVyXG4gICAgICAgICAgICAgICAgbG5rX25iXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbmV3X2luY3JzIDo6IGFjY19pbmNycywgbmV3X2xua19uYilcbiAgICAgICAgKCogSkY6IGxpbmsgaWRzIHdlcmUgY29sbGlkaW5nIGFmdGVyIGNvdW50ZXIgZGVjcmVtZW50YXRpb25zIC0+IEkgZG8gbm90IHRoaW5rIHRoYXQgd2Ugc2hvdWxkIGFkZCBkZWx0YSB3aGVuIG5lZ2F0aXZlICopKVxuICAgICAgKFtdLCBsbmtfbmIpIHJ1bGVfYWdlbnRfLmNvdW50ZXJzXG4gIGluXG4gIGxldCAoYWxzLCBibHMpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gKGFscywgYmxzKSAoYSwgYikgLT4gYSBAIGFscywgYiBAIGJscykgKFtdLCBbXSkgaW5jcnNcbiAgaW5cbiAgYWxzLCBibHMsIGxua19uYidcblxuKCoqIENvbXBpbGVzIHRoZSBjb3VudGVyIHZhbHVlIGNoYW5nZSBpbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIGEgcnVsZSBpbnRvIGR1bW15IGNoYWluIGNoYW5nZXMgKilcbmxldCBjb21waWxlX2NvdW50ZXJfaW5fcmF3X2FnZW50IChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKGNvdW50ZXJzX2luZm8gOiBDb3VudGVyc19pbmZvLnQpXG4gICAgKHJhd19hZ2VudF8gOiBSYXdfbWl4dHVyZS5hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzKSAobG5rX25iIDogaW50KSA6XG4gICAgUmF3X21peHR1cmUuYWdlbnQgbGlzdCAqIGludCA9XG4gIGxldCByYXdfYWdlbnQgOiBSYXdfbWl4dHVyZS5hZ2VudCA9IHJhd19hZ2VudF8uYWdlbnQgaW5cbiAgbGV0IHBvcnRzIDogUmF3X21peHR1cmUubGluayBhcnJheSA9IHJhd19hZ2VudC5SYXdfbWl4dHVyZS5hX3BvcnRzIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHBvcnRfaWQgKGFjYywgbG5rX25iKSAtPiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGFjYywgbG5rX25iXG4gICAgICB8IFNvbWUgKGMsIF8pIC0+XG4gICAgICAgIChtYXRjaCBjLkFzdC5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9XG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgIHJhd19hZ2VudC5SYXdfbWl4dHVyZS5hX3R5cGVcbiAgICAgICAgICBpblxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiY291bnRlclwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICB8IFNvbWUgKHRlc3QsIF8pIC0+XG4gICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICByYXdfYWdlbnQuUmF3X21peHR1cmUuYV90eXBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiQFslc0BdXCIgKExvYy52IGMuQXN0LmNvdW50ZXJfbmFtZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEFzdC5DR1RFIF8gfCBBc3QuQ0xURSBfIHwgQXN0LkNWQVIgXyAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJjb3VudGVyXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IEFzdC5DRVEgaiAtPlxuICAgICAgICAgICAgbGV0IHAgPSBSYXdfbWl4dHVyZS5WQUwgbG5rX25iIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocG9ydF9pZCkgPC0gcCBpblxuICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnID1cbiAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5nZXRfY291bnRlcl9zaWcgc2lncyBjb3VudGVyc19pbmZvXG4gICAgICAgICAgICAgICAgcmF3X2FnZW50LlJhd19taXh0dXJlLmFfdHlwZSBwb3J0X2lkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1pbl92YWx1ZSA9XG4gICAgICAgICAgICAgIG1hdGNoIGNvdW50ZXJfc2lnLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb3VudGVyICVzIG9mIGFnZW50ICVzIHNob3VsZCBoYXZlIGEgbG93ZXIgYm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9uYW1lIGFnZW50X25hbWUpKSlcbiAgICAgICAgICAgICAgfCBTb21lIChTb21lIG1pbl92YWx1ZSwgXykgLT4gbWluX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGNvcnJlY3RlZF9qID0gaiAtIG1pbl92YWx1ZSBpblxuICAgICAgICAgICAgbGV0IGZpbmFsX2xua19uYiA9IGxua19uYiArIGNvcnJlY3RlZF9qIGluXG4gICAgICAgICAgICBsZXQgaW5jcnMgPVxuICAgICAgICAgICAgICBhZGRfaW5jciAwIGxua19uYiBmaW5hbF9sbmtfbmIgbWluX3ZhbHVlIChjb3JyZWN0ZWRfaiArIDEpIHRydWVcbiAgICAgICAgICAgICAgICBzaWdzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjIEAgaW5jcnMsIGZpbmFsX2xua19uYiArIDEpKSlcbiAgICAoW10sIGxua19uYikgcmF3X2FnZW50Xy5jb3VudGVyc1xuXG5sZXQgcmF3X2FnZW50X2hhc19jb3VudGVycyAoYWdfIDogJ2Egd2l0aF9hZ2VudF9jb3VudGVycykgOiBib29sID1cbiAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gb2sgeCAtPiB4IDw+IE5vbmUgfHwgb2spIGZhbHNlIGFnXy5jb3VudGVyc1xuXG5sZXQgcnVsZV9hZ2VudF9oYXNfY291bnRlcnMgKHJ1bGVfYWdlbnQgOiBMS2FwcGEucnVsZV9hZ2VudClcbiAgICAoc2lncyA6IFNpZ25hdHVyZS5zKSA6IGJvb2wgPVxuICBTaWduYXR1cmUuaGFzX2NvdW50ZXIgKFNpZ25hdHVyZS5nZXQgc2lncyBydWxlX2FnZW50LnJhX3R5cGUpXG5cbigqKiBbY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBtaXggY3JlYXRlZF0gdGFrZXMgdGhlIGludGlhbCBtaXh0dXJlIGZyb20gYSBydWxlIFttaXhdLFxuICogYW5kIHRoZSBtaXh0dXJlIG9idGFpbmVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBydWxlIFtjcmVhdGVkXSxcbiAqIGJvdGggd2l0aCBjb3VudGVyIGluZm9ybWF0aW9uLCBhbmQgcmV0dXJucyB0d28gbWl4dHVyZXMgZm9yIGEgbmV3IHJ1bGUgd2l0aG91dCBjb3VudGVycywgaGF2aW5nIGNvbXBpbGVkIHRoZSBjb3VudGVyIGxvZ2ljIGluc2lkZSB0aGUgcnVsZS5cbiAqXG4gKiAtIGFkZHMgaW5jcmVtZW50IGFnZW50cyB0byB0aGUgcnVsZV9hZ2VudCBtaXh0dXJlXG4gICAtIGFkZHMgaW5jcmVtZW50IGFnZW50cyB0byB0aGUgcmF3IG1peHR1cmVcbiAgIC0gbGlua3MgdGhlIGFnZW50cyBpbiB0aGUgbWl4dHVyZShsaHMscmhzLG1peCkgb3IgaW4gdGhlIHJhdyBtaXh0dXJlKGNyZWF0ZWQpXG4gICAgIHRvIHRoZSBpbmNyZW1lbnRzICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3J1bGUgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAoY291bnRlcnNfaW5mbyA6IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWcgb3B0aW9uIEFycmF5LnQgQXJyYXkudClcbiAgICAobWl4IDogcnVsZV9taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMpXG4gICAgKGNyZWF0ZWQgOiByYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzKSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgPVxuICBsZXQgaGFzX2NvdW50ZXJzIDogYm9vbCA9XG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF9oYXNfY291bnRlcnMgcnVsZV9hZ2VudF8uYWdlbnQgc2lncylcbiAgICAgIG1peFxuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfaGFzX2NvdW50ZXJzIHJhd19hZ2VudF8pIGNyZWF0ZWRcbiAgaW5cbiAgaWYgaGFzX2NvdW50ZXJzIHRoZW4gKFxuICAgIGxldCBsbmtfbmIgOiBpbnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAobSA6IGludCkgcnVsZV9hZ2VudF8gLT5cbiAgICAgICAgICBtYXggbSAoTEthcHBhLm1heF9saW5rX2lkIFsgcnVsZV9hZ2VudF8uYWdlbnQgXSkpXG4gICAgICAgIDAgbWl4XG4gICAgaW5cbiAgICBsZXQgKGluY3JzLCBpbmNyc19jcmVhdGVkLCBsbmtfbmInKSA6XG4gICAgICAgIExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ICogaW50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG1peF9pbmNyLCBjcmVhdGVkX2luY3IsIGxua19uYikgcnVsZV9hZ2VudF8gLT5cbiAgICAgICAgICBsZXQgcnVsZV9hZ2VudCA6IExLYXBwYS5ydWxlX2FnZW50ID0gcnVsZV9hZ2VudF8uYWdlbnQgaW5cbiAgICAgICAgICBsZXQgY291bnRlcl9kZWZzID0gY291bnRlcnNfaW5mby4ocnVsZV9hZ2VudC5MS2FwcGEucmFfdHlwZSkgaW5cbiAgICAgICAgICBsZXQgbWl4X2luY3JfbmV3LCBjcmVhdGVkX2luY3JfbmV3LCBsbmtfbmInID1cbiAgICAgICAgICAgIGNvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50IHNpZ3MgY291bnRlcl9kZWZzIHJ1bGVfYWdlbnRfIGxua19uYlxuICAgICAgICAgIGluXG4gICAgICAgICAgbWl4X2luY3JfbmV3IEAgbWl4X2luY3IsIGNyZWF0ZWRfaW5jcl9uZXcgQCBjcmVhdGVkX2luY3IsIGxua19uYicgKyAxKVxuICAgICAgICAoW10sIFtdLCBsbmtfbmIgKyAxKVxuICAgICAgICBtaXhcbiAgICBpblxuXG4gICAgbGV0IGluY3JzX2NyZWF0ZWQnIDogUmF3X21peHR1cmUudCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChjcmVhdGVkX2luY3IsIGxua19uYikgcmF3X2FnZW50XyAtPlxuICAgICAgICAgIGxldCBjcmVhdGVkX2luY3JfbmV3LCBsbmtfbmInJyA9XG4gICAgICAgICAgICBjb21waWxlX2NvdW50ZXJfaW5fcmF3X2FnZW50IHNpZ3MgY291bnRlcnNfaW5mbyByYXdfYWdlbnRfIGxua19uYlxuICAgICAgICAgIGluXG4gICAgICAgICAgY3JlYXRlZF9pbmNyX25ldyBAIGNyZWF0ZWRfaW5jciwgbG5rX25iJycpXG4gICAgICAgIChbXSwgbG5rX25iJyArIDEpXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgIHw+IGZzdFxuICAgICAgKCogV2UgZHJvcCB0aGUgbG5rX25iIGFzIHdlIGRvbid0IG5lZWQgaW4gdGhlIGZvbGxvd2luZyAqKVxuICAgIGluXG4gICAgKCogUmV0dXJuIGluaXRpYWwgbWl4dHVyZXMgd2l0aCBuZXcgYWdlbnRzIGluIHJ1bGUgZnJvbSBjb3VudGVyIGNvbXBpbGF0aW9uICopXG4gICAgbGV0IHJ1bGVfYWdlbnRfbWl4IDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gICAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmQgKGZ1biBydWxlX2FnZW50XyAtPiBydWxlX2FnZW50Xy5hZ2VudCkgbWl4IGluY3JzXG4gICAgaW5cbiAgICBsZXQgcmF3X21peCA6IFJhd19taXh0dXJlLnQgPVxuICAgICAgTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAgIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfLmFnZW50KVxuICAgICAgICBjcmVhdGVkXG4gICAgICAgIChpbmNyc19jcmVhdGVkIEAgaW5jcnNfY3JlYXRlZCcpXG4gICAgaW5cbiAgICBydWxlX2FnZW50X21peCwgcmF3X21peFxuICApIGVsc2VcbiAgICAoIExpc3QucmV2X21hcCAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfLmFnZW50KSAoTGlzdC5yZXYgbWl4KSxcbiAgICAgIExpc3QucmV2X21hcCAoZnVuIHJhd19hZ2VudF8gLT4gcmF3X2FnZW50Xy5hZ2VudCkgKExpc3QucmV2IGNyZWF0ZWQpIClcblxubGV0IHJ1bGVfYWdlbnRfd2l0aF9tYXhfY291bnRlciBzaWdzIGMgKChhZ2VudF9uYW1lLCBsb2NfYWcpIGFzIGFnZW50X3R5cGUpIDpcbiAgICBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ2VudF90eXBlIHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPSBBcnJheS5tYWtlIGFyaXR5IExLYXBwYS5JX0FOWSBpblxuICBsZXQgY19uYSA9IGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lIGluXG4gIGxldCBjX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIGNfbmEgc2lnbiBpblxuICBsZXQgbWF4X3ZhbCwgbG9jID1cbiAgICBtYXRjaCBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4IHdpdGhcbiAgICB8IFNvbWUgKFNvbWUgbWF4LCBsb2MpIC0+IG1heCwgbG9jXG4gICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gZnN0IGNfbmEgXiBcIiBpbiBcIiBeIGFnZW50X25hbWVcbiAgICAgICAgICAgICBeIFwiIHNob3VsZCBoYXZlIGFuIHVwcGVyIGJvdW5kXCIsXG4gICAgICAgICAgICAgbG9jX2FnICkpXG4gIGluXG4gIGxldCBtYXhfdmFsJyA9IG1heF92YWwgKyAxIGluXG4gIGxldCBtaW5fdmFsdWUgPVxuICAgIG1hdGNoIGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgIHwgU29tZSAoU29tZSBtaW4sIF8pIC0+IG1pblxuICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIGZzdCBjX25hIF4gXCIgaW4gXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgXiBcIiBzaG91bGQgaGF2ZSBhIGxvd2VyIGJvdW5kXCIsXG4gICAgICAgICAgICAgbG9jX2FnICkpXG4gIGluXG4gIGxldCBpbmNycyA9XG4gICAgbGlua19pbmNyIHNpZ3MgMFxuICAgICAgKG1heF92YWwnICsgMSAtIG1pbl92YWx1ZSlcbiAgICAgICgoY19pZCwgYWdfaWQpLCBmYWxzZSlcbiAgICAgIGZhbHNlIDEgbG9jIG1pbl92YWx1ZSAoLTEpXG4gIGluXG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCBwID0gTEthcHBhLkxOS19WQUxVRSAoMSwgKHBvcnRfYiwgY291bnRlcl9hZ2VudF9pbmZvLmlkKSksIGxvYyBpblxuICBwb3J0cy4oY19pZCkgPC0gcCwgTEthcHBhLk1haW50YWluZWQ7XG4gIGxldCByYSA6IExLYXBwYS5ydWxlX2FnZW50ID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gIHJhIDo6IGluY3JzXG5cbmxldCBjb3VudGVyX3BlcnR1cmJhdGlvbiBzaWdzIGMgYWdlbnRfdHlwZSA9XG4gIGxldCBhbm5vdCA9IExvYy5nZXRfYW5ub3QgYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgaW5cbiAgbGV0IGZpbGVuYW1lID0gWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoXCJjb3VudGVyX3BlcnR1cmJhdGlvbi5rYVwiLCBhbm5vdCkgXSBpblxuICBsZXQgc3RvcF9tZXNzYWdlID1cbiAgICBcIkNvdW50ZXIgXCJcbiAgICBeIExvYy52IGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lXG4gICAgXiBcIiBvZiBhZ2VudCBcIiBeIExvYy52IGFnZW50X3R5cGUgXiBcIiByZWFjaGVkIG1heGltdW1cIlxuICBpblxuICBsZXQgbW9kcyA9XG4gICAgW1xuICAgICAgQXN0LlBSSU5UIChbXSwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoXCJcIiwgYW5ub3QpIF0pO1xuICAgICAgQXN0LlBSSU5UIChbXSwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RvcF9tZXNzYWdlLCBhbm5vdCkgXSk7XG4gICAgICBBc3QuU1RPUCBmaWxlbmFtZTtcbiAgICBdXG4gIGluXG4gIGxldCB2YWxfb2ZfY291bnRlciA9XG4gICAgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgKHJ1bGVfYWdlbnRfd2l0aF9tYXhfY291bnRlciBzaWdzIGMgYWdlbnRfdHlwZSlcbiAgaW5cbiAgbGV0IHByZSA9XG4gICAgQWxnX2V4cHIuQ09NUEFSRV9PUFxuICAgICAgKCBPcGVyYXRvci5FUVVBTCxcbiAgICAgICAgKHZhbF9vZl9jb3VudGVyLCBhbm5vdCksXG4gICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLkkgMSksIGFubm90KSApXG4gIGluXG4gICggTm9uZSxcbiAgICBTb21lIChwcmUsIExvYy5nZXRfYW5ub3QgYWdlbnRfdHlwZSksXG4gICAgbW9kcyxcbiAgICBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgKVxuXG5sZXQgY291bnRlcnNfcGVydHVyYmF0aW9ucyBzaWdzIGFzdF9zaWdzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhY2NcbiAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgXykgLT5cbiAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgIChmdW4gYWNjJyBzaXRlIC0+XG4gICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYydcbiAgICAgICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgICAgICAgICAgIChjb3VudGVyX3BlcnR1cmJhdGlvbiBzaWdzIGMgYWdlbnRfdHlwZSwgTG9jLmdldF9hbm5vdCBhZ2VudF90eXBlKVxuICAgICAgICAgICAgICAgOjogYWNjJylcbiAgICAgICAgICAgYWNjIHNpdGVzKSlcbiAgICBbXSBhc3Rfc2lnc1xuXG5sZXQgbWFrZV9jb3VudGVyIGkgbmFtZSA9XG4gIHtcbiAgICBBc3QuY291bnRlcl9uYW1lID0gTG9jLmFubm90X3dpdGhfZHVtbXkgbmFtZTtcbiAgICBjb3VudGVyX3Rlc3QgPSBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQXN0LkNFUSBpKSk7XG4gICAgY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDA7XG4gIH1cblxubGV0IGFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIHNpZ3MgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iLCBwb3J0X2EgPSBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgYWRkX2xpbmtfY29udGFjdF9tYXAgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYSBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9iXG5cbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb24gKGRlbHRhLCBsb2MpID1cbiAgaWYgZGVsdGEgIT0gMCB0aGVuIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gbG9jIChTb21lIGRlbHRhKVxuXG5sZXQgYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyBzaWduIGFzdF9jb3VudGVycyByYSBhcml0eSBhZ2VudF9uYW1lIGF1eCA9XG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByYWlzZV9pZl9tb2RpZmljYXRpb24gYy5Bc3QuY291bnRlcl9kZWx0YSBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF1eCB3aXRoXG4gICAgICAgICAgfCBTb21lIGYgLT4gZiBwb3J0X2lkXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LSBTb21lIChjLCBMS2FwcGEuRXJhc2VkKTtcbiAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBhc3RfY291bnRlcnNcbiAgaW5cbiAgeyBhZ2VudCA9IHJhOyBjb3VudGVycyA9IHJhX2NvdW50ZXJzIH1cblxubGV0IGFubm90YXRlX2VkaXRfY291bnRlcnMgc2lncyAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5cGUpIGNvdW50ZXJzIHJhXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnX2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuICBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByZWdpc3Rlcl9jb3VudGVyX21vZGlmIHBvcnRfaWQgaW5cbiAgICAgICAgbGV0ICgpID0gcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtIFNvbWUgKGMsIExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICBwc2V0JylcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGNvdW50ZXJzXG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9jb3VudGVyc193aXRoX2RpZmYgc2lncyAoKGFnZW50X25hbWUsIGxvYykgYXMgYWdlbnRfdHlwZSkgbGMgcmMgcmFcbiAgICBhZGRfbGlua19jb250YWN0X21hcCA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfdHlwZSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGMgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGxldCAoKSA9IGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnX2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYiBpblxuICAgIGMsIExLYXBwYS5NYWludGFpbmVkXG4gIGluXG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgcmNfciwgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHJjLCBjc2V0KSBjIC0+XG4gICAgICAgIGxldCAoKG5hLCBfKSBhcyBjb3VudGVyX25hbWUpID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBjX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIGNvdW50ZXJfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCBjc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBjX2lkIGNzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBjc2V0ID09IGNzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgY291bnRlcl9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjJywgcmMnID1cbiAgICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgICAgKGZ1biBwIC0+IFN0cmluZy5jb21wYXJlIChMb2MudiBwLkFzdC5jb3VudGVyX25hbWUpIG5hID0gMClcbiAgICAgICAgICAgIHJjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjJycgPVxuICAgICAgICAgIG1hdGNoIGMnIHdpdGhcbiAgICAgICAgICB8IF8gOjogW10gfCBbXSAtPiByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGMgY19pZFxuICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByYV9jb3VudGVycy4oY19pZCkgPC0gU29tZSBjJycgaW5cbiAgICAgICAgcmMnLCBjc2V0JylcbiAgICAgIChyYywgTW9kcy5JbnRTZXQuZW1wdHkpIGxjXG4gIGluXG4gIGxldCBfID1cbiAgICAoKiB0ZXN0IGlmIGNvdW50ZXIgb2YgcmhzIGlzIGluIHRoZSBzaWduYXR1cmUgKilcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBjIC0+IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWUgc2lnbilcbiAgICAgIHJjX3JcbiAgaW5cbiAgaWYgKG5vdCAocmMgPSBbXSkpICYmIG5vdCAocmNfciA9IFtdKSB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDb3VudGVycyBpbiBcIiBeIGFnZW50X25hbWUgXiBcIiBzaG91bGQgaGF2ZSB0ZXN0cyBieSBub3dcIiwgbG9jKSk7XG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eXBlKSBjb3VudGVyX2xpc3RcbiAgICBhZGRfbGlua19jb250YWN0X21hcCByYSA9XG4gIGxldCBhZ2VudF9pZCA6IGludCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfdHlwZSBzaWdzIGluXG4gIGxldCBhZ2VudF9zaWduYXR1cmUgOiBTaWduYXR1cmUudCA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ2VudF9pZCBpblxuICBsZXQgYXJpdHkgOiBpbnQgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ2VudF9pZCBpblxuICBsZXQgcmFfY291bnRlcnMgOiAoQXN0LmNvdW50ZXIgKiBMS2FwcGEuc3dpdGNoaW5nKSBvcHRpb24gYXJyYXkgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgTm9uZVxuICBpblxuXG4gICgqIHJlZ2lzdGVyIGFsbCBjb3VudGVycyAoc3BlY2lmaWVkIG9yIG5vdCkgd2l0aCBkZWZhdWx0IHZhbHVlICopXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBwb3J0X2lkIF8gLT5cbiAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcG9ydF9pZCBhZ2VudF9zaWduYXR1cmUgd2l0aFxuICAgICAgfCBTb21lIGNvdW50ZXJfaW5mbyAtPlxuICAgICAgICBsZXQgY291bnRlcl9uYW1lID0gU2lnbmF0dXJlLnNpdGVfb2ZfbnVtIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIGluXG4gICAgICAgICh0cnlcbiAgICAgICAgICAgKCogZmluZCBjb3VudGVyIG1hdGNoaW5nIHBvcnQgKilcbiAgICAgICAgICAgbGV0IGMgOiBBc3QuY291bnRlciA9XG4gICAgICAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgICAgICAoZnVuIGMnIC0+XG4gICAgICAgICAgICAgICAgIFN0cmluZy5jb21wYXJlIChMb2MudiBjJy5Bc3QuY291bnRlcl9uYW1lKSBjb3VudGVyX25hbWUgPSAwKVxuICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9IGMuQXN0LmNvdW50ZXJfdGVzdDtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9IDAsIExvYy5kdW1teTtcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtXG4gICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9IGNvdW50ZXJfbmFtZSB8PiBMb2MuYW5ub3Rfd2l0aF9kdW1teTtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DRVEgY291bnRlcl9pbmZvLmNvdW50ZXJfZGVmYXVsdF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIHw+IExvYy5hbm5vdF93aXRoX2R1bW15KTtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9IDAsIExvYy5kdW1teTtcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKSlcbiAgICAgIHwgTm9uZSAtPiAoKSlcbiAgICByYV9jb3VudGVycztcblxuICBsZXQgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjX2lkID1cbiAgICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICAgIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgYWdlbnRfaWQgY19pZCBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9iXG4gIGluXG4gIGxldCBfIDogTW9kcy5JbnRTZXQudCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBvcnRfaWQgPVxuICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgYWdlbnRfc2lnbmF0dXJlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcG9ydF9pZCBhZ2VudF9zaWduYXR1cmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICgpO1xuICAgICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwb3J0X2lkIHBzZXQgaW5cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgIHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgcG9ydF9pZDtcbiAgICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC0gU29tZSAoYywgTEthcHBhLk1haW50YWluZWQpO1xuICAgICAgICAgIHBzZXQnKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgY291bnRlcl9saXN0XG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbWFwX29wdCBmIG9wdCA9XG4gIG1hdGNoIG9wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcblxuKCogVE9ETyBvcmlnaW5hbGx5X2Zyb20gdGVybS9sS2FwcGEubWwsIHNlZSBpZiBpdCBtYWtlcyBzZW5zZSBoZXJlICopXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IChwb3MgOiBMb2MudCkgPSBmdW5jdGlvblxuICB8IEFzdC5Ob01vZCAtPiAoKVxuICB8IEFzdC5FcmFzZSB8IEFzdC5DcmVhdGUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQSBtb2RpZmljYXRpb24gaXMgZm9yYmlkZGVuIGhlcmUuXCIsIHBvcykpXG5cbmxldCBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIHN3aXRjaCA9XG4gIGxldCB0eV9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgZHN0X3R5IHNpZ3MgaW5cbiAgbGV0IHBfaWQgPSBTaWduYXR1cmUuaWRfb2Zfc2l0ZSBkc3RfdHkgZHN0X3Agc2lncyBpblxuICAoTEthcHBhLkxOS19UWVBFIChwX2lkLCB0eV9pZCksIHBvcyksIHN3aXRjaFxuXG5sZXQgYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwIHN0eSBzcCBkdHkgZHAgPVxuICBtYXRjaCBjb250YWN0X21hcCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29udGFjdF9tYXAgLT5cbiAgICBsZXQgc2ksIHNsID0gY29udGFjdF9tYXAuKHN0eSkuKHNwKSBpblxuICAgIGxldCBkaSwgZGwgPSBjb250YWN0X21hcC4oZHR5KS4oZHApIGluXG4gICAgbGV0ICgpID0gY29udGFjdF9tYXAuKHN0eSkuKHNwKSA8LSBzaSwgTW9kcy5JbnQyU2V0LmFkZCAoZHR5LCBkcCkgc2wgaW5cbiAgICBjb250YWN0X21hcC4oZHR5KS4oZHApIDwtIGRpLCBNb2RzLkludDJTZXQuYWRkIChzdHksIHNwKSBkbFxuXG5sZXQgcnVsZV9pbmR1Y2VzX2xpbmtfcGVybXV0YXRpb24gfndhcm5pbmcgfnBvcyA/ZHN0X3R5IHNpZ3Mgc29ydCBzaXRlID1cbiAgbGV0IHdhcm5pbmdfZm9yX2NvdW50ZXJzID1cbiAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIHNvcnQgdGhlblxuICAgICAgdHJ1ZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZHN0X3R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIHMgLT4gU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBzXG4gICAgKVxuICBpblxuXG4gIGlmIG5vdCB3YXJuaW5nX2Zvcl9jb3VudGVycyB0aGVuXG4gICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJydWxlIGluZHVjZXMgYSBsaW5rIHBlcm11dGF0aW9uIG9uIHNpdGUgJyVhJyBvZiBhZ2VudCAnJWEnXCJcbiAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBzb3J0KVxuICAgICAgICAgIHNpdGVcbiAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgc29ydClcblxubGV0IHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgYWdfdHkgcF9pZCBwb3MgPVxuICBMS2FwcGEucmFpc2VfbGlua19zaG91bGRfYmVfcmVtb3ZlZCBpXG4gICAgKGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgXCIlYVwiXG4gICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICBhZ190eVxuICAgICBpblxuICAgICBGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSlcbiAgICAoIChsZXQgKCkgPVxuICAgICAgICAgRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgXCIlYVwiXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICBwX2lkXG4gICAgICAgaW5cbiAgICAgICBGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSksXG4gICAgICBwb3MgKVxuXG5sZXQgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX3R5IHBfaWQgc3dpdGNoXG4gICAgKGxpbmtzX29uZSwgbGlua3NfdHdvKSA9XG4gIGlmIE1vZHMuSW50TWFwLm1lbSBpIGxpbmtzX3R3byB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAoIFwiVGhpcyBpcyB0aGUgdGhpcmQgb2NjdXJlbmNlIG9mIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIF4gXCInIGluIHRoZSBzYW1lIG1peHR1cmUuXCIsXG4gICAgICAgICAgIHBvcyApKVxuICBlbHNlIChcbiAgICBtYXRjaCBNb2RzLkludE1hcC5wb3AgaSBsaW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSwgb25lJyAtPlxuICAgICAgbGV0IG5ld19saW5rID1cbiAgICAgICAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgICAgICAgfCBMS2FwcGEuTGlua2VkIGogLT4gU29tZSBqXG4gICAgICAgIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5NYWludGFpbmVkIC0+IE5vbmVcbiAgICAgIGluXG4gICAgICAoICgoTEthcHBhLkxOS19WQUxVRSAoaSwgKC0xLCAtMSkpLCBwb3MpLCBzd2l0Y2gpLFxuICAgICAgICAoTW9kcy5JbnRNYXAuYWRkIGkgKGFnX3R5LCBwX2lkLCBuZXdfbGluaywgcG9zLCBzd2l0Y2gpIG9uZScsIGxpbmtzX3R3bylcbiAgICAgIClcbiAgICB8IFNvbWUgKGRzdF90eSwgZHN0X3AsIGRzdF9pZCwgcG9zJywgc3dpdGNoJyksIG9uZScgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5hbGxvd2VkX2xpbmsgYWdfdHkgcF9pZCBkc3RfdHkgZHN0X3Agc2lncyB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwIGFnX3R5IHBfaWQgZHN0X3R5IGRzdF9wIGluXG4gICAgICAgIGxldCBtYWludGFpbmVkID1cbiAgICAgICAgICBtYXRjaCBzd2l0Y2ggd2l0aFxuICAgICAgICAgIHwgTEthcHBhLkxpbmtlZCBqIC0+XG4gICAgICAgICAgICBsZXQgbGlua19zd2FwID0gU29tZSBqIDw+IGRzdF9pZCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgbGlua19zd2FwIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIHdhcm5fb25fc3dhcCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIHdhcm5pbmcgLT5cbiAgICAgICAgICAgICAgICAgIHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgfmRzdF90eSBzaWdzIGFnX3R5XG4gICAgICAgICAgICAgICAgICAgIHBfaWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG5vdCBsaW5rX3N3YXBcbiAgICAgICAgICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgX2NoZWNrX2NvbXBhdGliaWx0eSA9XG4gICAgICAgICAgbWF0Y2ggc3dpdGNoLCBzd2l0Y2gnIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5NYWludGFpbmVkLCBMS2FwcGEuTWFpbnRhaW5lZCAtPiAoKVxuICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQsIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgIHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgYWdfdHkgcF9pZCBwb3NcbiAgICAgICAgICB8IChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGRzdF90eSBkc3RfcCBwb3MnXG4gICAgICAgICAgfCAoIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSxcbiAgICAgICAgICAgICAgKExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pICkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgICggKCAoTEthcHBhLkxOS19WQUxVRSAoaSwgKGRzdF9wLCBkc3RfdHkpKSwgcG9zKSxcbiAgICAgICAgICAgIGlmIG1haW50YWluZWQgdGhlblxuICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBzd2l0Y2ggKSxcbiAgICAgICAgICAob25lJywgTW9kcy5JbnRNYXAuYWRkIGkgKGFnX3R5LCBwX2lkLCBtYWludGFpbmVkKSBsaW5rc190d28pIClcbiAgICAgICkgZWxzZVxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJGb3JiaWRkZW4gbGluayB0byBhICVhLiVhIGZyb20gc2lnbmF0dXJlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgZHN0X3R5KVxuICAgICAgICAgICAgICAgICBkc3RfcFxuICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgICAgIGRzdF90eSxcbiAgICAgICAgICAgICAgIHBvcyApKVxuICApXG5cbmxldCBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlIHNpZ3NcbiAgICBsaW5rc19hbm5vdCAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdCA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuRXJhc2VkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGFyaXR5IChmdW4gaSAtPlxuICAgICAgICBtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ19pZCBpIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTEthcHBhLklfQU5ZXG4gICAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5JX0FOWV9FUkFTRUQpXG4gIGluXG4gIGxldCBsYW5ub3QsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChsYW5ub3QsIHBzZXQpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGlua19tb2QsIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICAgICAgfCBOb25lLCBfIC0+ICgpXG4gICAgICAgICAgfCBTb21lIE5vbmUsIFsgKExLYXBwYS5MTktfVkFMVUUgKF8sICgpKSwgXykgXVxuICAgICAgICAgICgqIFtpLy5dIGlzIGFsbG93ZWQgaW4gZGVncmFkZWQgYWdlbnQuXG4gICAgICAgICAgICAgSXQgd2lsbCBiZSBjaGVja2VkIGxhdGVyIHRoYXQgdGhlIG90aGVyIHNpdGUgd2l0aCBsaW5rIGlkIGkgaXMgYWxzbyBmcmVlZCBpbiB0aGUgcnVsZSAqKVxuICAgICAgICAgICgqIFBsZWFzZSBub3RlIHRoYXQgYSBydWxlIHdyaXR0ZW4gYXMgQSh4WzFdKS0sQih4WzEvLl0pLSBpcyBhbGxvd2VkICopXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8ICggU29tZSAoTm9uZSB8IFNvbWUgXyksXG4gICAgICAgICAgICAgICggW11cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSksIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoXywgXyksIF8pIF1cbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyApICkgLT5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQgd2l0aFxuICAgICAgICAgIHwgW10gfCBbIChOb25lLCBfKSBdIC0+ICgpXG4gICAgICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0gLT5cbiAgICAgICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgTEthcHBhLklfVkFMX0VSQVNFRFxuICAgICAgICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24pXG4gICAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgTEthcHBhLkVyYXNlZCBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdIC0+XG4gICAgICAgICAgbGV0IHBvcnRfbmFtZSwgcG9zID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5FcmFzZWQgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0gLT5cbiAgICAgICAgICBsZXQgcG9ydF9uYW1lLCBwb3MgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LVxuICAgICAgICAgICAgICBidWlsZF9sX3R5cGUgc2lncyBwb3NfbGluayBkc3RfdHkgZHN0X3AgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IChbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gfCBbXSkgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuRXJhc2VkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10gLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5BTllfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuRXJhc2VkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgdmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgbGV0IHdhcm5fb25fc3dhcCA9XG4gICAgICAgICAgICAgIGlmIHJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgU29tZSB3YXJuaW5nXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgcG9zIGkgYWdfaWQgcF9pZCBMS2FwcGEuRXJhc2VkIGxhbm5vdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICAgICAgbGFubm90JywgcHNldCdcbiAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKSlcbiAgICAgIChsaW5rc19hbm5vdCwgTW9kcy5JbnRTZXQuZW1wdHkpXG4gICAgICBzaW1wbGVfcG9ydF9saXN0XG4gIGluXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gdHJ1ZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyBzaWduIGNvdW50ZXJfbGlzdCByYSBhcml0eVxuICAgICAgYWdlbnRfbmFtZSBOb25lLFxuICAgIGxhbm5vdCApXG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlIHNpZ3NcbiAgICA/Y29udGFjdF9tYXAgcmFubm90ICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIHNpbXBsZV9wb3J0X2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID0gQXJyYXkubWFrZSBhcml0eSBSYXdfbWl4dHVyZS5GUkVFIGluXG4gIGxldCBpbnRlcm5hbHMgPVxuICAgIEFycmF5LmluaXQgYXJpdHkgKGZ1biBpIC0+IFNpZ25hdHVyZS5kZWZhdWx0X2ludGVybmFsX3N0YXRlIGFnX2lkIGkgc2lncylcbiAgaW5cbiAgbGV0IF8sIHJhbm5vdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHBzZXQsIHJhbm5vdCkgcCAtPlxuICAgICAgICBsZXQgKChfLCBwX3BvcykgYXMgcG9ydF9uYW1lKSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZCBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfaW50IHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBbIChOb25lLCBfKSBdIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImludGVybmFsXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgYWdlbnRfbmFtZSBwb3J0X25hbWVcbiAgICAgICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSAtPlxuICAgICAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgICAgICBTb21lIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24pXG4gICAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIF8sIF8pIF1cbiAgICAgICAgfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIHBvcnRfbmFtZVxuICAgICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlY0IC0+XG4gICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgIGFnZW50X25hbWUgcG9ydF9uYW1lXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gUmF3X21peHR1cmUuVkFMIGkgaW5cbiAgICAgICAgICBsZXQgXywgcmFubm90JyA9XG4gICAgICAgICAgICBsZXQgd2Fybl9vbl9zd2FwID1cbiAgICAgICAgICAgICAgaWYgcl9lZGl0X3N0eWxlIHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBTb21lIHdhcm5pbmdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBidWlsZF9saW5rID93YXJuX29uX3N3YXAgc2lncyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfaWQgcF9pZFxuICAgICAgICAgICAgICBMS2FwcGEuRnJlZWQgcmFubm90XG4gICAgICAgICAgaW5cbiAgICAgICAgICBwc2V0JywgcmFubm90J1xuICAgICAgICB8IFsgKChMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0ZSRUUpLCBfKSBdIHwgW10gLT4gcHNldCcsIHJhbm5vdClcbiAgICAgIChNb2RzLkludFNldC5lbXB0eSwgcmFubm90KVxuICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICBpblxuICAoIHJhbm5vdCxcbiAgICB7XG4gICAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSBhZ19pZDtcbiAgICAgIFJhd19taXh0dXJlLmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIFJhd19taXh0dXJlLmFfaW50cyA9IGludGVybmFscztcbiAgICB9IClcblxubGV0IHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCA/d2Fybl9pbmZvXG4gICAgKChsaHNfbGlua3MsIHJoc19saW5rcykgYXMgbGlua3NfYW5ub3QpID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IExLYXBwYS5NYWludGFpbmVkLCBsaW5rc19hbm5vdFxuICB8IFNvbWUgeCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCB3YXJuX2luZm8gd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKHNpdGVfbmFtZSwgcG9zKSAtPlxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIlxuICAgICAgICAgICAgICBzaXRlX25hbWUpXG4gICAgaW5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IExLYXBwYS5GcmVlZCwgbGlua3NfYW5ub3RcbiAgICB8IFNvbWUgKGosIHBvc19qKSAtPlxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rID93YXJuX29uX3N3YXA6Tm9uZSBzaWdzID9jb250YWN0X21hcCBwb3NfaiBqIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgTEthcHBhLkxpbmtlZCBqLCAobGhzX2xpbmtzLCByaHNfbGlua3MnKSlcblxubGV0IGFubm90YXRlX2VkaXRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgbGlua3NfYW5ub3Qgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPSBBcnJheS5tYWtlIGFyaXR5IExLYXBwYS5JX0FOWSBpblxuICBsZXQgc2Nhbl9wb3J0IChsaW5rc19hbm5vdCwgcHNldCkgcCA9XG4gICAgbGV0IHBvcnRfbmFtZSwgXyA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZSBzaWduIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICBpblxuICAgIGxldCBsaW5rc19hbm5vdCcgPVxuICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgIHwgWyAoKExLYXBwYS5MTktfU09NRSwgcG9zKSBhcyB4KSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIH53YXJuX2luZm86KHBvcnRfbmFtZSwgcG9zKSBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB4LCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IChbXSB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSkgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyA/d2Fybl9pbmZvOk5vbmUgc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgW10gd2hlbiBwLkFzdC5wb3J0X2xpbmtfbW9kID0gTm9uZSAtPiBsaW5rc19hbm5vdFxuICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gfCBbXSAtPlxuICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyA/d2Fybl9pbmZvOk5vbmUgc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zKSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIH53YXJuX2luZm86KHBvcnRfbmFtZSwgcG9zKSBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIChsaHNfbGlua3MsIHJoc19saW5rcykgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgICBidWlsZF9saW5rIHNpZ3NcbiAgICAgICAgICAgID9jb250YWN0X21hcDpcbiAgICAgICAgICAgICAgKGlmIGlzX3J1bGUgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNvbnRhY3RfbWFwKVxuICAgICAgICAgICAgP3dhcm5fb25fc3dhcDpOb25lIHBvcyBpIGFnX2lkIHBfaWQgbW9kaWYgbGhzX2xpbmtzXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBwLkFzdC5wb3J0X2ludCwgcC5Bc3QucG9ydF9pbnRfbW9kIHdpdGhcbiAgICAgIHwgKFsgKE5vbmUsIF8pIF0gfCBbXSksIE5vbmUgLT4gKClcbiAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBTb21lIHZhJyAtPlxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgTEthcHBhLklfVkFMX0NIQU5HRURcbiAgICAgICAgICAgICggU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduLFxuICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgdmEnIHNpZ24gKVxuICAgICAgfCBbXSwgU29tZSAoKF8sIHBvcykgYXMgdmEpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgdGhlblxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiaW50ZXJuYWwgc3RhdGUgb2Ygc2l0ZSAnJXMnIG9mIGFnZW50ICclcycgaXMgbW9kaWZpZWQgXFxcbiAgICAgICAgICAgICAgICAgICBhbHRob3VnaCBpdCBpcyBsZWZ0IHVucGVjaWZpZWQgaW4gdGhlIGxlZnQgaGFuZCBzaWRlXCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSBhZ2VudF9uYW1lKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgIChcIk1vZGlmaWVkIGludGVybmFsIHN0YXRlIG11c3QgYXBwZWFyIG9uIHRoZSBsZWZ0XCIsIHBvcykpXG4gICAgICAgIGluXG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRCAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhIHNpZ24pXG4gICAgICB8IFsgKE5vbmUsIF8pIF0sIFNvbWUgdmEgLT5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgdmEgc2lnbilcbiAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBOb25lIC0+XG4gICAgICAgIGxldCBpX2lkID0gU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduIGluXG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGlfaWQsIGlfaWQpXG4gICAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyAtPiBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMgcG9zXG4gICAgaW5cbiAgICBsaW5rc19hbm5vdCcsIHBzZXQnXG4gIGluXG4gIGxldCBhbm5vdGVkJywgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgc2Nhbl9wb3J0IChsaW5rc19hbm5vdCwgTW9kcy5JbnRTZXQuZW1wdHkpIHNpbXBsZV9wb3J0X2xpc3RcbiAgaW5cbiAgbGV0IHJhID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfZWRpdF9jb3VudGVycyBzaWdzIGFnX3R5IGNvdW50ZXJfbGlzdCByYVxuICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCksXG4gICAgYW5ub3RlZCcgKVxuXG5sZXQgYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGxpbmtzX2Fubm90IGxwIHJwIGxjIHJjID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IHJlZ2lzdGVyX3BvcnRfbW9kaWYgcF9pZCBsbmsxIHAnICgobGhzX2xpbmtzLCByaHNfbGlua3MpIGFzIGxpbmtzX2Fubm90KSA9XG4gICAgbGV0ICgpID1cbiAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb25cbiAgICAgICAgKExvYy5nZXRfYW5ub3QgcCcuQXN0LnBvcnRfbmFtZSlcbiAgICAgICAgcCcuQXN0LnBvcnRfbGlua19tb2RcbiAgICBpblxuICAgIG1hdGNoIGxuazEsIHAnLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSwgWyAoTEthcHBhLkxOS19BTlksIF8pIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkFOWV9GUkVFLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgcG9zKSBdLCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggW1xuICAgICAgICAgICggTEthcHBhLkxOS19UWVBFICgoKGRzdF9wJycsIF8pIGFzIGRzdF9wKSwgKChkc3RfdHknJywgXykgYXMgZHN0X3R5KSksXG4gICAgICAgICAgICBwb3MgKTtcbiAgICAgICAgXSxcbiAgICAgICAgWyAoTEthcHBhLkxOS19UWVBFICgoZHN0X3AnLCBfKSwgKGRzdF90eScsIF8pKSwgXykgXSApXG4gICAgICB3aGVuIGRzdF9wJycgPSBkc3RfcCcgJiYgZHN0X3R5JycgPSBkc3RfdHknIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIF8sXG4gICAgICAgICggWyAoTEthcHBhLkxOS19BTlksIF8pIF1cbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF1cbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgXywgXykgXSApICkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFtdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5GcmVlZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdLCBbXVxuICAgICAgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5GcmVlZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIChbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSB8IFtdKSxcbiAgICAgICAgKFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdIHwgW10pIClcbiAgICAgIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgdmEsIGxoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkZyZWVkXG4gICAgICAgICAgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgdmEsIGxoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkZyZWVkXG4gICAgICAgICAgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3NcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3NfbGluaykgXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19BTlksIHBvc19saW5rKSwgTEthcHBhLkxpbmtlZCBpIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcycpIF0gLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSwgTEthcHBhLkxpbmtlZCBpIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcycgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSxcbiAgICAgICAgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MnKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtXG4gICAgICAgICAgYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIChMS2FwcGEuTGlua2VkIGkpXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MnIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8ICggWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdICkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5MaW5rZWQgaVxuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8IFtdLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCAoIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zX2kpIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGosICgpKSwgcG9zX2opIF0gKSAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3NfaSBpIGFnX2lkIHBfaWRcbiAgICAgICAgICAoTEthcHBhLkxpbmtlZCBqKSBsaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvc19qIGogYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgIGxoc19saW5rcycsIHJoc19saW5rcydcbiAgICB8ICggW1xuICAgICAgICAgICggKCBMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSlcbiAgICAgICAgICAgIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfVFlQRSAoXywgXylcbiAgICAgICAgICAgIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19BTlkgKSxcbiAgICAgICAgICAgIF8gKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgcCcuQXN0LnBvcnRfbmFtZVxuICAgIHwgW10sIFsgKChMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1ZBTFVFIChfLCBfKSksIF8pIF1cbiAgICAgIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpXG4gICAgfCBfLCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKVxuICBpblxuICBsZXQgcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBpbnQxIHAnID1cbiAgICBsZXQgKCkgPVxuICAgICAgTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvblxuICAgICAgICAoTG9jLmdldF9hbm5vdCBwJy5Bc3QucG9ydF9uYW1lKVxuICAgICAgICBwJy5Bc3QucG9ydF9pbnRfbW9kXG4gICAgaW5cbiAgICBtYXRjaCBpbnQxLCBwJy5Bc3QucG9ydF9pbnQgd2l0aFxuICAgIHwgW10sIFtdIHwgWyAoTm9uZSwgXykgXSwgWyAoTm9uZSwgXykgXSAtPiAoKVxuICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdLCBbIChTb21lIHZhJywgcG9zJykgXSAtPlxuICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICBMS2FwcGEuSV9WQUxfQ0hBTkdFRFxuICAgICAgICAgICggU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduLFxuICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YScsIHBvcycpIHNpZ24gKVxuICAgIHwgW10sIFsgKFNvbWUgdmEsIHZhcG9zKSBdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImludGVybmFsIHN0YXRlIG9mIHNpdGUgJyVzJyBvZiBhZ2VudCAnJXMnIGlzIG1vZGlmaWVkIGFsdGhvdWdoIFxcXG4gICAgICAgICAgICAgICBpdCBpcyBsZWZ0IHVucGVjaWZpZWQgaW4gdGhlIGxlZnQgaGFuZCBzaWRlXCJcbiAgICAgICAgICAgICAgbmEgYWdlbnRfbmFtZSlcbiAgICAgIGluXG4gICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEXG4gICAgICAgICAgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHZhcG9zKSBzaWduKVxuICAgIHwgWyAoTm9uZSwgXykgXSwgWyAoU29tZSB2YSwgdmFwb3MpIF0gLT5cbiAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRURcbiAgICAgICAgICAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgdmFwb3MpIHNpZ24pXG4gICAgfCBbXSwgWyBfIF0gLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiaW50ZXJuYWxcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFsgXyBdLCAoWyAoTm9uZSwgXykgXSB8IFtdKSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJpbnRlcm5hbFwiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IF8gOjogKF8sIHBvcykgOjogXywgXyB8IF8sIF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICBpblxuICBsZXQgZmluZF9pbl9yIChuYSwgcG9zKSBycCA9XG4gICAgbGV0IHAnLCByID1cbiAgICAgIExpc3QucGFydGl0aW9uIChmdW4gcCAtPiBTdHJpbmcuY29tcGFyZSAoTG9jLnYgcC5Bc3QucG9ydF9uYW1lKSBuYSA9IDApIHJwXG4gICAgaW5cbiAgICBtYXRjaCBwJyB3aXRoXG4gICAgfCBbIHAnIF0gLT4gcCcsIHJcbiAgICB8IFtdIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSAobmEsIHBvcylcbiAgICB8IF8gOjogXyAtPiBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIChuYSwgcG9zKVxuICBpblxuICBsZXQgcnBfciwgYW5ub3RlZCwgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHJwLCBhbm5vdGVkLCBwc2V0KSBwIC0+XG4gICAgICAgIGxldCAoKF8sIHBfcG9zKSBhcyBwb3J0X25hbWUpID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZCBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuXG4gICAgICAgIGxldCBwJywgcnAnID0gZmluZF9pbl9yIHBvcnRfbmFtZSBycCBpblxuICAgICAgICBsZXQgYW5ub3RlZCcgPSByZWdpc3Rlcl9wb3J0X21vZGlmIHBfaWQgcC5Bc3QucG9ydF9saW5rIHAnIGFubm90ZWQgaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBwLkFzdC5wb3J0X2ludCBwJyBpblxuICAgICAgICBycCcsIGFubm90ZWQnLCBwc2V0JylcbiAgICAgIChycCwgbGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KVxuICAgICAgbHBcbiAgaW5cbiAgbGV0IGFubm90ZWQnID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhbm5vdGVkIHAgLT5cbiAgICAgICAgbGV0IHBvcnRfbmFtZSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPSByZWdpc3Rlcl9pbnRlcm5hbF9tb2RpZiBwX2lkIFtdIHAgaW5cbiAgICAgICAgcmVnaXN0ZXJfcG9ydF9tb2RpZiBwX2lkXG4gICAgICAgICAgWyBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSBdXG4gICAgICAgICAgcCBhbm5vdGVkKVxuICAgICAgYW5ub3RlZCBycF9yXG4gIGluXG5cbiAgbGV0IHJhID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gICggQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIHNpZ3MgYWdfdHkgbGMgcmMgcmFcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApLFxuICAgIGFubm90ZWQnIClcblxubGV0IHJlZmVyX2xpbmtzX2Fubm90ID93YXJuaW5nIHNpZ3MgbGlua3NfYW5ub3QgbWl4ID1cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAocmFfIDogTEthcHBhLnJ1bGVfYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycykgLT5cbiAgICAgIGxldCByYSA9IHJhXy5hZ2VudCBpblxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSAoaiwgKC0xLCAtMSkpLCBwb3MpLCBtb2RzIC0+XG4gICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBsaW5rc19hbm5vdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAoZHN0X3R5LCBkc3RfcCwgbWFpbnRhaW5lZCkgLT5cbiAgICAgICAgICAgICAgbGV0IG1vZHMnID1cbiAgICAgICAgICAgICAgICBpZiBtYWludGFpbmVkIHRoZW5cbiAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbW9kc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIG1vZHMnIHdpdGhcbiAgICAgICAgICAgICAgICB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiAoKVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkxpbmtlZCBfIC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggd2FybmluZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB3YXJuaW5nIC0+XG4gICAgICAgICAgICAgICAgICAgIHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgfmRzdF90eSBzaWdzXG4gICAgICAgICAgICAgICAgICAgICAgcmEuTEthcHBhLnJhX3R5cGUgaSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcmEuTEthcHBhLnJhX3BvcnRzLihpKSA8LVxuICAgICAgICAgICAgICAgIChMS2FwcGEuTE5LX1ZBTFVFIChqLCAoZHN0X3AsIGRzdF90eSkpLCBwb3MpLCBtb2RzJylcbiAgICAgICAgICB8ICggKCAoIExLYXBwYS5MTktfVkFMVUUgXyB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgXyB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSApLFxuICAgICAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAgICAgXyApIC0+XG4gICAgICAgICAgICAoKSlcbiAgICAgICAgcmEuTEthcHBhLnJhX3BvcnRzKVxuICAgIG1peFxuXG5sZXQgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbHMgPVxuICBsZXQgYSwgYiA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHBzLCBjcykgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuUG9ydCBwIC0+IHAgOjogcHMsIGNzXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBwcywgYyA6OiBjcylcbiAgICAgIChbXSwgW10pIGxzXG4gIGluXG4gIExpc3QucmV2IGEsIGJcblxubGV0IGZpbmFsX3J1bGVfc2FuaXR5ID93YXJuaW5nIHNpZ3NcbiAgICAoKGxoc19saW5rc19vbmUsIGxoc19saW5rc190d28pLCAocmhzX2xpbmtzX29uZSwgXykpIG1peCA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCBsaHNfbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGksIChfLCBfLCBfLCBwb3MsIF8pKSAtPiBMS2FwcGEucmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3NcbiAgaW5cbiAgbGV0ICgpID0gcmVmZXJfbGlua3NfYW5ub3QgP3dhcm5pbmcgc2lncyBsaHNfbGlua3NfdHdvIG1peCBpblxuICBtYXRjaCBNb2RzLkludE1hcC5yb290IHJoc19saW5rc19vbmUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChpLCAoXywgXywgXywgcG9zLCBfKSkgLT4gTEthcHBhLnJhaXNlX2xpbmtfb25seV9vbmVfb2NjdXJlbmNlIGkgcG9zXG5cbigqXG5JcyByZXNwb25zaWJsZSBmb3IgdGhlIGNoZWNrIHRoYXQ6XG4tIGFnZW50IGV4aXN0c1xuLSBzaXRlcyBleGlzdFxuLSB1bmlxdWUgc2l0ZSBvY2N1cmVuY2UgLyBhZ2VudFxuLSBpbnRlcm5hbF9zdGF0ZXMgZXhpc3Rcbi0gdW5pcXVlIGludGVybmFsX3N0YXRlIC8gc2l0ZVxuLSBsaW5rcyBhcHBlYXIgZXhhY3RseSB0d2ljZVxuKilcbmxldCBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmX3YzIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGxocyByaHMgPVxuICBsZXQgc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgaW5cbiAgbGV0IHJlYyBhdXggbGlua3NfYW5ub3QgYWNjIGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IEFzdC5BYnNlbnQgcG9zIDo6IF8sIF8gfCAoQXN0LlByZXNlbnQgXyA6OiBfIHwgW10pLCBBc3QuQWJzZW50IHBvcyA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICB8ICggQXN0LlByZXNlbnQgKCgobGFnZW50X25hbWUsIGxwb3MpIGFzIGFnX3R5KSwgbGFnX3MsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuUHJlc2VudCAoKHJhZ2VudF9uYW1lLCBycG9zKSwgcmFnX3MsIHJtb2QpIDo6IHJ0IClcbiAgICAgIHdoZW4gU3RyaW5nLmNvbXBhcmUgbGFnZW50X25hbWUgcmFnZW50X25hbWUgPSAwXG4gICAgICAgICAgICYmIEFzdC5ub19tb3JlX3NpdGVfb25fcmlnaHQgdHJ1ZSBsYWdfcyByYWdfcyAtPlxuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IGxwb3MgbG1vZDtcbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBycG9zIHJtb2Q7XG4gICAgICBsZXQgbGFnX3AsIGxhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbGFnX3MgaW5cbiAgICAgIGxldCByYWdfcCwgcmFnX2MgPSBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyByYWdfcyBpblxuICAgICAgbGV0IHJhLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICBhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgYWdfdHkgbGlua3NfYW5ub3QgbGFnX3AgcmFnX3AgbGFnX2MgcmFnX2NcbiAgICAgIGluXG4gICAgICBhdXggbGlua3NfYW5ub3QnIChyYSA6OiBhY2MpIGx0IHJ0XG4gICAgfCAoKEFzdC5QcmVzZW50IF8gOjogXyB8IFtdKSBhcyBlcmFzZWQpLCBhZGRlZCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgYWRkZWQgPD4gW10gdGhlblxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+ICgpXG4gICAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKChsYWcsIHBvcyksIGxhZ19wLCBfKSAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKChyYWcsIF8pLCByYWdfcCwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5jb21wYXJlIGxhZyByYWcgPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IGZhbHNlIGxhZ19wIHJhZ19wKVxuICAgICAgICAgICAgICAgICAgICBhZGRlZFxuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlJ1bGUgaW5kdWNlZCBkZWxldGlvbiBBTkQgY3JlYXRpb24gb2YgdGhlIGFnZW50ICVzXCIgbGFnKSlcbiAgICAgICAgICAgIGVyYXNlZFxuICAgICAgaW5cbiAgICAgIGxldCBtaXgsIGxsaW5rcyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoYWNjLCBsYW5ub3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF9uYW1lKSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIG1vZGlmO1xuICAgICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3MgbGFubm90IGFnZW50X25hbWUgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhIDo6IGFjYywgbGFubm90JylcbiAgICAgICAgICAoYWNjLCBmc3QgbGlua3NfYW5ub3QpXG4gICAgICAgICAgZXJhc2VkXG4gICAgICBpblxuICAgICAgbGV0IGNtaXgsIHJsaW5rcyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoYWNjLCByYW5ub3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF9uYW1lKSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIG1vZGlmO1xuICAgICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3MgP2NvbnRhY3RfbWFwIHJhbm5vdCBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICBzaW1wbGVfcG9ydF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB4JycgPVxuICAgICAgICAgICAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMgc2lncyBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgICAgICAgICB4J1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB4JycgOjogYWNjLCByYW5ub3QnKVxuICAgICAgICAgIChbXSwgc25kIGxpbmtzX2Fubm90KVxuICAgICAgICAgIGFkZGVkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gZmluYWxfcnVsZV9zYW5pdHkgfndhcm5pbmcgc2lncyAobGxpbmtzLCBybGlua3MpIG1peCBpblxuICAgICAgTGlzdC5yZXYgbWl4LCBMaXN0LnJldiBjbWl4XG4gIGluXG4gIGF1eFxuICAgICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApXG4gICAgW10gKExpc3QuZmxhdHRlbiBsaHMpIChMaXN0LmZsYXR0ZW4gcmhzKVxuXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92NCB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gQXN0LlY0IGluXG4gIGxldCByZWMgYXV4IGxpbmtzX2Fubm90IG1peCBjbWl4IGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiBsaW5rc19hbm5vdCwgbWl4LCBjbWl4XG4gICAgfCBBc3QuQWJzZW50IF8gOjogbHQsIEFzdC5BYnNlbnQgXyA6OiBydCAtPiBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggbHQgcnRcbiAgICB8ICggQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF90eXBlKSwgc2l0ZXMsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuQWJzZW50IF8gOjogcnQgKSAtPlxuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBsbW9kO1xuICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgIHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHNpdGVzXG4gICAgICBpblxuICAgICAgbGV0IHJhLCBsYW5ub3QnID1cbiAgICAgICAgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzXG4gICAgICAgICAgKGZzdCBsaW5rc19hbm5vdCkgYWdlbnRfdHlwZSBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdFxuICAgICAgaW5cbiAgICAgIGF1eCAobGFubm90Jywgc25kIGxpbmtzX2Fubm90KSAocmEgOjogbWl4KSBjbWl4IGx0IHJ0XG4gICAgfCAoIEFzdC5BYnNlbnQgXyA6OiBsdCxcbiAgICAgICAgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBhZ2VudF90eXBlKSwgc2l0ZXMsIHJtb2QpIDo6IHJ0ICkgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3Mgcm1vZDtcbiAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgaW5cbiAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6ZmFsc2Ugc2lnc1xuICAgICAgICAgID9jb250YWN0X21hcCAoc25kIGxpbmtzX2Fubm90KSBhZ2VudF90eXBlIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgeCcnID1cbiAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGUgY291bnRlcl9saXN0XG4gICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICB4J1xuICAgICAgaW5cbiAgICAgIGF1eCAoZnN0IGxpbmtzX2Fubm90LCByYW5ub3QnKSBtaXggKHgnJyA6OiBjbWl4KSBsdCBydFxuICAgIHwgKCBBc3QuUHJlc2VudCAoKChsYWdlbnRfbmFtZSwgbHBvcykgYXMgYWdfdHkpLCBsYWdfcywgbG1vZCkgOjogbHQsXG4gICAgICAgIEFzdC5QcmVzZW50ICgocmFnZW50X25hbWUsIHJwb3MpLCByYWdfcywgcm1vZCkgOjogcnQgKSAtPlxuICAgICAgaWZcbiAgICAgICAgU3RyaW5nLmNvbXBhcmUgbGFnZW50X25hbWUgcmFnZW50X25hbWUgPSAwXG4gICAgICAgICYmIEFzdC5ub19tb3JlX3NpdGVfb25fcmlnaHQgdHJ1ZSBsYWdfcyByYWdfc1xuICAgICAgdGhlbiAoXG4gICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBscG9zIGxtb2Q7XG4gICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBycG9zIHJtb2Q7XG4gICAgICAgIGxldCBsYWdfcCwgbGFnX2MgPSBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBsYWdfcyBpblxuICAgICAgICBsZXQgcmFnX3AsIHJhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgcmFnX3MgaW5cbiAgICAgICAgbGV0IHJhLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX3R5IGxpbmtzX2Fubm90IGxhZ19wIHJhZ19wIGxhZ19jIHJhZ19jXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBsaW5rc19hbm5vdCcgKHJhIDo6IG1peCkgY21peCBsdCBydFxuICAgICAgKSBlbHNlXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcnBvcykpXG4gICAgfCAoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfLCBbXVxuICAgIHwgW10sIChBc3QuUHJlc2VudCAoKF8sIHBvcyksIF8sIF8pIHwgQXN0LkFic2VudCBwb3MpIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIkxlZnQgaGFuZCBzaWRlL3JpZ2h0IGhhbmQgc2lkZSBhZ2VudCBtaXNtYXRjaFwiLCBwb3MpKVxuICBpblxuICBsZXQgcmVjIGF1eF9saW5lIGxpbmtzX2Fubm90IG1peCBjbWl4IGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgbGV0ICgpID0gZmluYWxfcnVsZV9zYW5pdHkgfndhcm5pbmcgc2lncyBsaW5rc19hbm5vdCBtaXggaW5cbiAgICAgIExpc3QucmV2IG1peCwgTGlzdC5yZXYgY21peFxuICAgIHwgaGwgOjogdGwsIGhyIDo6IHRyIC0+XG4gICAgICBsZXQgbGlua3NfYW5ub3QnLCBtaXgnLCBjbWl4JyA9IGF1eCBsaW5rc19hbm5vdCBtaXggY21peCBobCBociBpblxuICAgICAgYXV4X2xpbmUgbGlua3NfYW5ub3QnIG1peCcgY21peCcgdGwgdHJcbiAgICB8ICgoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfKSA6OiBfLCBbXVxuICAgIHwgW10sICgoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcG9zKSlcbiAgICB8IFtdIDo6IF8sIFtdIHwgW10sIFtdIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkludmFyaWFudCB2aW9sYXRpb24gaW4gYW5ub3RhdGVfbGhzX3dpdGguLi5cIikpXG4gIGluXG4gIGF1eF9saW5lXG4gICAgKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgIChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpIClcbiAgICBbXSBbXSBsaHMgcmhzXG5cbmxldCBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICB8IEFzdC5WMyAtPiBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmX3YzIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGxocyByaHNcbiAgfCBBc3QuVjQgLT4gYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92NCB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzXG5cbmxldCBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKG0gOiBBc3QubWl4dHVyZSkgOlxuICAgIENvdW50ZXJzX2NvbXBpbGVyLnJ1bGVfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzXG4gICAgKiBDb3VudGVyc19jb21waWxlci5yYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgKCogbWl4IGlzIHRoZSBtaXh0dXJlIGZyb20gaW5pdGlhbCBzdGF0ZSBvZiB0aGUgcnVsZSwgY21peCBpcyB0aGUgbWl4dHVyZSBhZnRlciB0aGUgcnVsZSB3YXMgYXBwbGllZCAqKVxuICBsZXQgbGlua3NfYW5ub3QsIG1peCwgY21peCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChsYW5ub3QsIGFjYywgbmV3cykgLT4gZnVuY3Rpb25cbiAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGxhbm5vdCwgYWNjLCBuZXdzXG4gICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgbW9kaWYpIC0+XG4gICAgICAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICAgICAgIHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHNpdGVzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBtb2RpZiB3aXRoXG4gICAgICAgICAgIHwgQXN0Lk5vTW9kIC0+XG4gICAgICAgICAgICAgbGV0IGEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfZWRpdF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGUgc2lnc1xuICAgICAgICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdlbnRfdHlwZSBsYW5ub3Qgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxhbm5vdCcsIGEgOjogYWNjLCBuZXdzXG4gICAgICAgICAgIHwgQXN0LkNyZWF0ZSAtPlxuICAgICAgICAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOnRydWUgc2lncyA/Y29udGFjdF9tYXAgKHNuZCBsYW5ub3QpIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHgnJyA9XG4gICAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgICBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChmc3QgbGFubm90LCByYW5ub3QnKSwgYWNjLCB4JycgOjogbmV3c1xuICAgICAgICAgICB8IEFzdC5FcmFzZSAtPlxuICAgICAgICAgICAgIGxldCByYSwgbGFubm90JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOnRydWUgc2lncyAoZnN0IGxhbm5vdCkgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgICBzaW1wbGVfcG9ydF9saXN0IGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKGxhbm5vdCcsIHNuZCBsYW5ub3QpLCByYSA6OiBhY2MsIG5ld3MpKSlcbiAgICAgICggKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApLFxuICAgICAgICBbXSxcbiAgICAgICAgW10gKVxuICAgICAgbVxuICBpblxuICBmaW5hbF9ydWxlX3Nhbml0eSA/d2FybmluZzpOb25lIHNpZ3MgbGlua3NfYW5ub3QgbWl4O1xuICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcblxubGV0IGFubm90YXRlX2NyZWF0ZWRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAobSA6IEFzdC5taXh0dXJlKSA6XG4gICAgUmF3X21peHR1cmUuYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0ID1cbiAgbGV0IChyaHNfbGlua3Nfb25lLCBfKSwgY21peCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChyYW5ub3QsIG5ld3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgY2Fubm90IG9jY3VycyBpbiBjcmVhdGVkIG1peHR1cmVzXCIsIHBvcykpXG4gICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF90eXBlLCBzaXRlcywgX21vZGlmKSAtPlxuICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6dHJ1ZVxuICAgICAgICAgICAgICAgc2lncyA/Y29udGFjdF9tYXAgcmFubm90IGFnZW50X3R5cGUgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgeCcnID1cbiAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfdHlwZVxuICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKVxuICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcmFubm90JywgeCcnIDo6IG5ld3MpKVxuICAgICAgKChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpLCBbXSlcbiAgICAgIG1cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5yb290IHJoc19saW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuICBpblxuICBMaXN0LnJldiBjbWl4XG5cbmxldCBnaXZlX3J1bGVfbGFiZWwgYmlkaXJlY3Rpb25hbCAoaWQsIHNldCkgcHJpbnRlciByID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IChzdWNjIGlkLCBzZXQpLCBGb3JtYXQuYXNwcmludGYgXCJyJWk6ICVhXCIgaWQgcHJpbnRlciByXG4gIHwgU29tZSAobGFiLCBwb3MpIC0+XG4gICAgbGV0IHNldCcgPSBNb2RzLlN0cmluZ1NldC5hZGQgbGFiIHNldCBpblxuICAgIGlmIHNldCA9PSBzZXQnIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIkEgcnVsZSBuYW1lZCAnXCIgXiBsYWIgXiBcIicgYWxyZWFkeSBleGlzdHMuXCIsIHBvcykpXG4gICAgZWxzZSBpZiBiaWRpcmVjdGlvbmFsIHRoZW4gKFxuICAgICAgbGV0IHNldCcnID0gTW9kcy5TdHJpbmdTZXQuYWRkIChBc3QuZmxpcF9sYWJlbCBsYWIpIHNldCcgaW5cbiAgICAgIGlmIHNldCcgPT0gc2V0JycgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiQSBydWxlIG5hbWVkICdcIiBeIEFzdC5mbGlwX2xhYmVsIGxhYiBeIFwiJyBhbHJlYWR5IGV4aXN0cy5cIiwgcG9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgKGlkLCBzZXQnJyksIGxhYlxuICAgICkgZWxzZVxuICAgICAgKGlkLCBzZXQnKSwgbGFiXG5cbmxldCBtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvID9jb250YWN0X21hcFxuICAgIChwb3MgOiBMb2MudCkgKG1peCA6IEFzdC5taXh0dXJlKSA9XG4gIG1hdGNoXG4gICAgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZTpmYWxzZSBzaWdzXG4gICAgICA/Y29udGFjdF9tYXAgbWl4XG4gIHdpdGhcbiAgfCByLCBbXSAtPlxuICAgIGZzdCAoQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBjb3VudGVyc19pbmZvIHIgW10pXG4gIHwgXywgXyAtPlxuICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yIChcIkEgbWl4dHVyZSBjYW5ub3QgY3JlYXRlIGFnZW50c1wiLCBwb3MpKVxuXG5sZXQgcmF3X21peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzXG4gICAgKGNvdW50ZXJzX2luZm8gOiBDb3VudGVyc19pbmZvLnQpID9jb250YWN0X21hcCAobWl4IDogQXN0Lm1peHR1cmUpID1cbiAgbGV0IGIgPVxuICAgIGFubm90YXRlX2NyZWF0ZWRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgbWl4XG4gIGluXG4gIHNuZCAoQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBjb3VudGVyc19pbmZvIFtdIGIpXG5cbmxldCBjb252ZXJ0X2FsZ192YXIgP21heF9hbGxvd2VkX3ZhciBhbGdzIGxhYiBwb3MgPVxuICBsZXQgaSA9XG4gICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIGFsZ3Mgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChsYWIgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB2YXJpYWJsZVwiLCBwb3MpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG1heF9hbGxvd2VkX3ZhciB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiUmVmZXJlbmNlIHRvIG5vdCB5ZXQgZGVmaW5lZCAnXCIgXiBsYWIgXiBcIicgaXMgZm9yYmlkZGVuLlwiLCBwb3MpKVxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiAoKVxuICBpblxuICBpXG5cbmxldCBjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gdGtfbmFtZSB0b2sgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAodGtfbmFtZSBeIFwiIGlzIG5vdCBhIGRlY2xhcmVkIHRva2VuXCIsIHBvcykpXG5cbmxldCByZWMgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICA/bWF4X2FsbG93ZWRfdmFyIChhbGcsIHBvcykgPVxuICAoIChtYXRjaCBhbGcgd2l0aFxuICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgYXN0IC0+XG4gICAgICBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRVxuICAgICAgICAobWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyBwb3MgYXN0KVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBsYWIgLT5cbiAgICAgIEFsZ19leHByLkFMR19WQVIgKGNvbnZlcnRfYWxnX3ZhciA/bWF4X2FsbG93ZWRfdmFyIGFsZ3MgbGFiIHBvcylcbiAgICB8IEFsZ19leHByLlRPS0VOX0lEIHRrX25hbWUgLT5cbiAgICAgIEFsZ19leHByLlRPS0VOX0lEIChjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zKVxuICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgYXN0KSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRVxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGV4cHIsXG4gICAgICAgICAgbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyBwb3MgYXN0IClcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRrX25hbWUpIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX1RPS0VOXG4gICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgZXhwcixcbiAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zIClcbiAgICB8IChBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkNPTlNUIF8pIGFzIHggLT4geFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYSxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBiIClcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpIC0+XG4gICAgICBBbGdfZXhwci5VTl9BTEdfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBhIClcbiAgICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgICAgQWxnX2V4cHIuSUZcbiAgICAgICAgKCBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgY29uZCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ZXMsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgbm8gKSksXG4gICAgcG9zIClcblxuYW5kIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgID9tYXhfYWxsb3dlZF92YXIgPSBmdW5jdGlvblxuICB8ICgoQWxnX2V4cHIuVFJVRSB8IEFsZ19leHByLkZBTFNFKSwgXykgYXMgeCAtPiB4XG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCB4LCB5KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5CSU5fQk9PTF9PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4LFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ICksXG4gICAgICBwb3MgKVxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCB4KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5VTl9CT09MX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHggKSxcbiAgICAgIHBvcyApXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIHgsIHkpLCBwb3MgLT5cbiAgICAoIEFsZ19leHByLkNPTVBBUkVfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4LFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHkgKSxcbiAgICAgIHBvcyApXG5cbmxldCBwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzID1cbiAgZnVuY3Rpb25cbiAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBfIGFzIHggLT4geFxuICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIHggLT5cbiAgICBQcmltaXRpdmVzLkFsZ19wZXhwclxuICAgICAgKGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzIHgpXG5cbigqIEludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiBmb3IgYSBydWxlLCB1c2VkIGJldHdlZW4gaW50ZXJuYWwgdHJhbnNsYXRpb25zICopXG50eXBlIHJ1bGVfaW50ZXJfcmVwID0ge1xuICBsYWJlbF9vcHQ6IChzdHJpbmcgKiBMb2MudCkgb3B0aW9uO1xuICBiaWRpcmVjdGlvbmFsOiBib29sOyAoKiBUT0RPIGNoZWNrICopXG4gIG1peHR1cmU6IExLYXBwYS5ydWxlX2FnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdDtcbiAgY3JlYXRlZF9taXg6IFJhd19taXh0dXJlLmFnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdDtcbiAgcm1fdG9rZW46XG4gICAgKCgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkpIGxpc3Q7XG4gIGFkZF90b2tlbjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSkgbGlzdDtcbiAga19kZWY6IChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQ7XG4gIGtfdW46XG4gICAgKCgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KVxuICAgICogKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpIG9wdGlvbilcbiAgICBvcHRpb247XG4gIHBvczogTG9jLnQ7XG59XG4oKiogSW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uIGZvciBydWxlIHR5cGUgKilcblxuKCoqIFthc3NlbWJsZV9ydWxlXSB0cmFuc2xhdGVzIGEgcnVsZV9pbnRlcl9yZXAgaW50byBhIExLYXBwYS5ydWxlICopXG5sZXQgYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gKHJ1bGUgOiBydWxlX2ludGVyX3JlcClcbiAgICAoc2lncyA6IFNpZ25hdHVyZS5zKSBjb3VudGVyc19pbmZvICh0b2sgOiBpbnQgTW9kcy5TdHJpbmdNYXAudClcbiAgICAoYWxncyA6IGludCBNb2RzLlN0cmluZ01hcC50KSA6IExLYXBwYS5ydWxlID1cbiAgbGV0IChyX21peCwgcl9jcmVhdGVkKSA6IExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgICBDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIGNvdW50ZXJzX2luZm8gcnVsZS5taXh0dXJlXG4gICAgICBydWxlLmNyZWF0ZWRfbWl4XG4gIGluXG5cbiAgbGV0IHJfZGVsdGFfdG9rZW5zID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gKGFsLCAodGssIHBvcykpIC0+XG4gICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuVU5fQUxHX09QIChPcGVyYXRvci5VTUlOVVMsIGFsKSkpLFxuICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0ayB0b2sgcG9zICkpXG4gICAgICBydWxlLnJtX3Rva2VuXG4gICAgfD4gTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAgICAoZnVuIChhbCwgKHRrLCBwb3MpKSAtPlxuICAgICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRva1xuICAgICAgICAgICAgICAgYWxncyBhbCxcbiAgICAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGsgdG9rIHBvcyApKVxuICAgICAgICAgcnVsZS5hZGRfdG9rZW5cbiAgICB8PiBMaXN0LnJldlxuICBpblxuICBsZXQgcl9yYXRlID1cbiAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgICAgcnVsZS5rX2RlZlxuICBpblxuICBsZXQgcl91bl9yYXRlID1cbiAgICBsZXQgcl9kaXN0IGQgPVxuICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgP21heF9hbGxvd2VkX3ZhcjpOb25lIGRcbiAgICBpblxuICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgKGZ1biAodW5fcmF0ZScsIGRpc3QpIC0+XG4gICAgICAgIGxldCB1bl9yYXRlJycgPVxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyOk5vbmUgdW5fcmF0ZSdcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZGlzdCB3aXRoXG4gICAgICAgIHwgU29tZSBkIC0+IHVuX3JhdGUnJywgU29tZSAocl9kaXN0IGQpXG4gICAgICAgIHwgTm9uZSAtPiB1bl9yYXRlJycsIE5vbmUpXG4gICAgICBydWxlLmtfdW5cbiAgaW5cbiAge1xuICAgIExLYXBwYS5yX21peDtcbiAgICByX2NyZWF0ZWQ7XG4gICAgcl9lZGl0X3N0eWxlID0gcnVsZS5iaWRpcmVjdGlvbmFsO1xuICAgIHJfZGVsdGFfdG9rZW5zO1xuICAgIHJfcmF0ZTtcbiAgICByX3VuX3JhdGU7XG4gIH1cblxubGV0IG1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICBjb250YWN0X21hcCBtb2RpZiBhY2MgPVxuICBtYXRjaCBtb2RpZiB3aXRoXG4gIHwgQXN0LkFQUExZIChuYiwgKGFzdF9ydWxlLCBwb3MpKSAtPlxuICAgIGxldCBydWxlIDogcnVsZV9pbnRlcl9yZXAgPVxuICAgICAgbWF0Y2ggYXN0X3J1bGUuQXN0LnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBydWxlX2NvbnRlbnQgLT5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNCB+aXNfcnVsZTp0cnVlXG4gICAgICAgICAgICBzaWdzIH5jb250YWN0X21hcCBydWxlX2NvbnRlbnQubWl4XG4gICAgICAgIGluXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQgPSBOb25lO1xuICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSB0cnVlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBydWxlX2NvbnRlbnQuZGVsdGFfdG9rZW47XG4gICAgICAgICAga19kZWYgPSBhc3RfcnVsZS5rX2RlZjtcbiAgICAgICAgICBrX3VuID0gYXN0X3J1bGUua191bjtcbiAgICAgICAgICBwb3M7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LkFycm93IHJ1bGVfY29udGVudCAtPlxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBydWxlX2NvbnRlbnQubGhzIHJ1bGVfY29udGVudC5yaHNcbiAgICAgICAgaW5cbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsX29wdCA9IE5vbmU7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBydWxlX2NvbnRlbnQucm1fdG9rZW47XG4gICAgICAgICAgYWRkX3Rva2VuID0gcnVsZV9jb250ZW50LmFkZF90b2tlbjtcbiAgICAgICAgICBrX2RlZiA9IGFzdF9ydWxlLmtfZGVmO1xuICAgICAgICAgIGtfdW4gPSBhc3RfcnVsZS5rX3VuO1xuICAgICAgICAgIHBvcztcbiAgICAgICAgfVxuICAgIGluXG4gICAgKCBBc3QuQVBQTFlcbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxncyBuYixcbiAgICAgICAgICAoIGFzc2VtYmxlX3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHJ1bGUgc2lncyBjb3VudGVyc19pbmZvIHRva1xuICAgICAgICAgICAgICBhbGdzLFxuICAgICAgICAgICAgcG9zICkgKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LlVQREFURSAoKGxhYiwgcG9zKSwgaG93KSAtPlxuICAgIGxldCBpID1cbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZVxuICAgICAgICB+ZXhjZXA6XG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJWYXJpYWJsZSBcIiBeIGxhYiBeIFwiIGlzIG5vdCBkZWZpbmVkXCIsIHBvcykpXG4gICAgICAgIChNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBsYWIgYWxncylcbiAgICBpblxuICAgICggQXN0LlVQREFURVxuICAgICAgICAoIChpLCBwb3MpLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICBob3cgKSxcbiAgICAgIGkgOjogYWNjIClcbiAgfCBBc3QuU1RPUCBwIC0+XG4gICAgKCBBc3QuU1RPUFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rXG4gICAgICAgICAgICAgIGFsZ3MpXG4gICAgICAgICAgIHApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuU05BUFNIT1QgKHJhdywgcCkgLT5cbiAgICAoIEFzdC5TTkFQU0hPVFxuICAgICAgICAoIHJhdyxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rXG4gICAgICAgICAgICAgICBhbGdzKVxuICAgICAgICAgICAgcCApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuRElOIChyZWwsIHApIC0+XG4gICAgKCBBc3QuRElOXG4gICAgICAgICggcmVsLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2tcbiAgICAgICAgICAgICAgIGFsZ3MpXG4gICAgICAgICAgICBwICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5ESU5PRkYgcCAtPlxuICAgICggQXN0LkRJTk9GRlxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rXG4gICAgICAgICAgICAgIGFsZ3MpXG4gICAgICAgICAgIHApLFxuICAgICAgYWNjIClcbiAgfCAoQXN0LlBMT1RFTlRSWSB8IEFzdC5DRkxPV0xBQkVMIChfLCBfKSkgYXMgeCAtPiB4LCBhY2NcbiAgfCBBc3QuUFJJTlQgKHAsIHAnKSAtPlxuICAgICggQXN0LlBSSU5UXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRva1xuICAgICAgICAgICAgICAgYWxncylcbiAgICAgICAgICAgIHAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRva1xuICAgICAgICAgICAgICAgYWxncylcbiAgICAgICAgICAgIHAnICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5DRkxPV01JWCAoYiwgKG0sIHBvcykpIC0+XG4gICAgKCBBc3QuQ0ZMT1dNSVhcbiAgICAgICAgKCBiLFxuICAgICAgICAgIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHBvcyBtLCBwb3MpXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5TUEVDSUVTX09GIChiLCBwLCAobSwgcG9zKSkgLT5cbiAgICAoIEFzdC5TUEVDSUVTX09GXG4gICAgICAgICggYixcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rXG4gICAgICAgICAgICAgICBhbGdzKVxuICAgICAgICAgICAgcCxcbiAgICAgICAgICAobWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyBwb3MgbSwgcG9zKVxuICAgICAgICApLFxuICAgICAgYWNjIClcblxubGV0IHBlcnR1cmJhdGlvbl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxnc1xuICAgIGNvbnRhY3RfbWFwICgoYWxhcm0sIHByZSwgbW9kcywgcG9zdCksIHBvcykgdXBfdmFycyA6XG4gICAgKF8sIF8sIF8sIF8pIEFzdC5wZXJ0dXJiYXRpb24gKiBpbnQgbGlzdCA9XG4gIGxldCBtb2RzJywgdXBfdmFycycgPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKG1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gdG9rIGFsZ3NcbiAgICAgICAgIGNvbnRhY3RfbWFwKVxuICAgICAgbW9kcyB1cF92YXJzXG4gIGluXG4gIGxldCBtYXhfYWxsb3dlZF92YXIgPSBOb25lIGluXG4gICggKCAoIGFsYXJtLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAoYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcilcbiAgICAgICAgICBwcmUsXG4gICAgICAgIG1vZHMnLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAoYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBhbGdzXG4gICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcilcbiAgICAgICAgICBwb3N0ICksXG4gICAgICBwb3MgKSxcbiAgICB1cF92YXJzJyApXG5cbmxldCBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBjb250YWN0X21hcCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0LklOSVRfTUlYICh3aG8sIHBvcykgLT5cbiAgICBBc3QuSU5JVF9NSVhcbiAgICAgICggcmF3X21peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm9cbiAgICAgICAgICB+Y29udGFjdF9tYXAgd2hvLFxuICAgICAgICBwb3MgKVxuICB8IEFzdC5JTklUX1RPSyBsYWIgLT5cbiAgICBBc3QuSU5JVF9UT0tcbiAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgKGZ1biAobGFiLCBwb3MpIC0+XG4gICAgICAgICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiB0b2sgd2l0aFxuICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBwb3NcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAobGFiIF4gXCIgaXMgbm90IGEgZGVjbGFyZWQgdG9rZW5cIiwgcG9zKSkpXG4gICAgICAgICBsYWIpXG5cbmxldCBhZGRfdW5fdmFyaWFibGUga191biBhY2MgcmF0ZV92YXIgPVxuICBtYXRjaCBrX3VuIHdpdGhcbiAgfCBOb25lIC0+IGFjYywgTm9uZVxuICB8IFNvbWUgKGssIGRpc3QpIC0+XG4gICAgbGV0IGFjY191biwgaycgPVxuICAgICAgaWYgQWxnX2V4cHIuaGFzX21peCAoTG9jLnYgaykgdGhlblxuICAgICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgaykgOjogYWNjLFxuICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKSApXG4gICAgICBlbHNlXG4gICAgICAgIGFjYywga1xuICAgIGluXG4gICAgYWNjX3VuLCBTb21lIChrJywgZGlzdClcblxudHlwZSBhY2NfZnVuY3Rpb25fcnVsZXMgPSB7XG4gIHJ1bGVfbmFtZXM6IGludCAqIE1vZHMuU3RyaW5nU2V0LnQ7XG4gIGV4dHJhX3ZhcnM6XG4gICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkKSBsaXN0O1xuICBjbGVhbmVkX3J1bGVzOiBydWxlX2ludGVyX3JlcCBsaXN0O1xufVxuXG4oKiogW25hbWVfYW5kX3B1cmlmeV0gY29tcGlsZXMgdGhlIHJ1bGVzIGZyb20gQXN0LnJ1bGVzIGludG8gcnVsZV9pbnRlcl9yZXAsIGNhbGxlZCBpbiBhIGZvbGQgKilcbmxldCBuYW1lX2FuZF9wdXJpZnlfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAoYWNjIDogYWNjX2Z1bmN0aW9uX3J1bGVzKVxuICAgICgobGFiZWxfb3B0LCAoYXN0X3J1bGUsIHJfcG9zKSkgOlxuICAgICAgc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSA6IGFjY19mdW5jdGlvbl9ydWxlcyA9XG4gIGxldCBydWxlX25hbWVzJywgcnVsZV9sYWJlbCA9XG4gICAgZ2l2ZV9ydWxlX2xhYmVsIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwgYWNjLnJ1bGVfbmFtZXMgQXN0LnByaW50X2FzdF9ydWxlXG4gICAgICBhc3RfcnVsZSBsYWJlbF9vcHRcbiAgaW5cbiAgbGV0IGFjYycsIGtfZGVmID1cbiAgICBpZiBBbGdfZXhwci5oYXNfbWl4IChMb2MudiBhc3RfcnVsZS5rX2RlZikgdGhlbiAoXG4gICAgICBsZXQgcmF0ZV92YXIgPSBydWxlX2xhYmVsIF4gXCJfcmF0ZVwiIGluXG4gICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgYXN0X3J1bGUua19kZWYpIDo6IGFjYy5leHRyYV92YXJzLFxuICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3ZhcikgKVxuICAgICkgZWxzZVxuICAgICAgYWNjLmV4dHJhX3ZhcnMsIGFzdF9ydWxlLkFzdC5rX2RlZlxuICBpblxuICBsZXQgYWNjJycsIGtfdW4gPVxuICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX3VuIGFjYycgKHJ1bGVfbGFiZWwgXiBcIl91bl9yYXRlXCIpXG4gIGluXG4gIG1hdGNoIGFzdF9ydWxlLnJld3JpdGUgd2l0aFxuICB8IEFzdC5FZGl0IGUgLT5cbiAgICBpZlxuICAgICAgYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCB8fCBhc3RfcnVsZS5rX29wIDw+IE5vbmVcbiAgICAgIHx8IGFzdF9ydWxlLmtfb3BfdW4gPD4gTm9uZVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlJ1bGVzIGluIGVkaXQgbm90YXRpb24gY2Fubm90IGJlIGJpZGlyZWN0aW9uYWxcIiwgcl9wb3MpKTtcbiAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZTp0cnVlIHNpZ3NcbiAgICAgICAgfmNvbnRhY3RfbWFwIGUuQXN0Lm1peFxuICAgIGluXG4gICAge1xuICAgICAgcnVsZV9uYW1lcyA9IHJ1bGVfbmFtZXMnO1xuICAgICAgZXh0cmFfdmFycyA9IGFjYycnO1xuICAgICAgY2xlYW5lZF9ydWxlcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQ7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHRydWU7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IFtdO1xuICAgICAgICAgIGFkZF90b2tlbiA9IGUuQXN0LmRlbHRhX3Rva2VuO1xuICAgICAgICAgIGtfZGVmO1xuICAgICAgICAgIGtfdW47XG4gICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgIH1cbiAgICAgICAgOjogYWNjLmNsZWFuZWRfcnVsZXM7XG4gICAgfVxuICB8IEFzdC5BcnJvdyBhIC0+XG4gICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgIGEuQXN0LmxocyBhLkFzdC5yaHNcbiAgICBpblxuICAgIGxldCBydWxlcycgPVxuICAgICAge1xuICAgICAgICBsYWJlbF9vcHQ7XG4gICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgIHJtX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAga19kZWY7XG4gICAgICAgIGtfdW47XG4gICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgfVxuICAgICAgOjogYWNjLmNsZWFuZWRfcnVsZXNcbiAgICBpblxuICAgIGxldCBhY2MnJycsIHJ1bGVzJycgPVxuICAgICAgbWF0Y2ggYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCwgYXN0X3J1bGUua19vcCB3aXRoXG4gICAgICB8IHRydWUsIFNvbWUgayB3aGVuIEFsZ19leHByLmhhc19taXggKExvYy52IGspIC0+XG4gICAgICAgIGxldCByYXRlX3ZhciA9IEFzdC5mbGlwX2xhYmVsIHJ1bGVfbGFiZWwgXiBcIl9yYXRlXCIgaW5cbiAgICAgICAgbGV0IHJhdGVfdmFyX3VuID0gQXN0LmZsaXBfbGFiZWwgcnVsZV9sYWJlbCBeIFwiX3VuX3JhdGVcIiBpblxuICAgICAgICBsZXQgYWNjX3VuLCBrX29wX3VuID1cbiAgICAgICAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua19vcF91biBhY2MnJyByYXRlX3Zhcl91blxuICAgICAgICBpblxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBhLkFzdC5yaHMgYS5Bc3QubGhzXG4gICAgICAgIGluXG4gICAgICAgICggKExvYy5hbm5vdF93aXRoX2R1bW15IHJhdGVfdmFyLCBrKSA6OiBhY2NfdW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWxfb3B0ID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gKGwsIHApIC0+IEFzdC5mbGlwX2xhYmVsIGwsIHApIGxhYmVsX29wdDtcbiAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICAgIHJtX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgICAgICBrX2RlZiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKTtcbiAgICAgICAgICAgIGtfdW4gPSBrX29wX3VuO1xuICAgICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgICAgfVxuICAgICAgICAgIDo6IHJ1bGVzJyApXG4gICAgICB8IHRydWUsIFNvbWUgcmF0ZSAtPlxuICAgICAgICBsZXQgcmF0ZV92YXJfdW4gPSBBc3QuZmxpcF9sYWJlbCBydWxlX2xhYmVsIF4gXCJfdW5fcmF0ZVwiIGluXG4gICAgICAgIGxldCBhY2NfdW4sIGtfb3BfdW4gPVxuICAgICAgICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX29wX3VuIGFjYycnIHJhdGVfdmFyX3VuXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGEuQXN0LnJocyBhLkFzdC5saHNcbiAgICAgICAgaW5cbiAgICAgICAgKCBhY2NfdW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWxfb3B0ID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gKGwsIHApIC0+IEFzdC5mbGlwX2xhYmVsIGwsIHApIGxhYmVsX29wdDtcbiAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICAgIHJtX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgICAgICBrX2RlZiA9IHJhdGU7XG4gICAgICAgICAgICBrX3VuID0ga19vcF91bjtcbiAgICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICA6OiBydWxlcycgKVxuICAgICAgfCBmYWxzZSwgTm9uZSAtPiBhY2MnJywgcnVsZXMnXG4gICAgICB8IGZhbHNlLCBTb21lIF8gfCB0cnVlLCBOb25lIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIFwiSW5jb21wYXRpYmxlIGFycm93IGFuZCBraW5lY3RpYyByYXRlIGZvciBpbnZlcnNlIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgIHJfcG9zICkpXG4gICAgaW5cbiAgICB7IHJ1bGVfbmFtZXMgPSBydWxlX25hbWVzJzsgZXh0cmFfdmFycyA9IGFjYycnJzsgY2xlYW5lZF9ydWxlcyA9IHJ1bGVzJycgfVxuXG50eXBlIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgPVxuICAoc3RyaW5nIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0IFNpZ25hdHVyZS5zaXRlX3NpZ1xuKCoqIFRlbXBvcmFyeSB0eXBlIHRvIHN0b3JlIHNpdGUgc2lnbmF0dXJlIHdpdGggbGlzdCBsaW5rcyBpbnN0ZWFkIG9mIGFycmF5IGFycmF5IGxpbmtzICopXG5cbigqKiBbcHJlcGFyZV9hZ2VudF9zaWcgfnNpdGVzIGV2YWx1YXRlcyB0byAoc2l0ZV9zaWdzLCBjb3VudGVyX2xpc3QpIHdoaWNoIGRlc2NyaWJlIGRhdGEgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBTaWduYXR1cmUudCBmb3IgYSBzaW5nbGUgYWdlbnQqKVxubGV0IHByZXBhcmVfYWdlbnRfc2lnIH4oc2l0ZXMgOiBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnIEFzdC5zaXRlIGxpc3QpIDpcbiAgICBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0ID1cbiAgbGV0ICggKHNpdGVfc2lnc19wcmVfbmFtZWRkZWNscyA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMpIGxpc3QpLFxuICAgICAgICAoY291bnRlcl9uYW1lcyA6IHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0KSApID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gc2l0ZSAoYWNjX3NpdGVfc2lncywgYWNjX2NvdW50ZXJfbmFtZXMpIC0+XG4gICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAoKiBUT0RPIHNlZSBpZiBjYW4gcmVtb3ZlIEFzdCBoZXJlICopXG4gICAgICAgIHwgQXN0LlBvcnQgcCAtPlxuICAgICAgICAgICggKCBwLnBvcnRfbmFtZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgICBOYW1lZERlY2xzLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAoVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHgsIHBvcyAtPiAoeCwgcG9zKSwgKClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUsIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBpbnRlcm5hbCBzdGF0ZSBpbnNpZGUgc2lnbmF0dXJlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIHAucG9ydF9pbnQpO1xuICAgICAgICAgICAgICAgIGxpbmtzID1cbiAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjX2xpbmtzJyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCAoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19BTlkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19saW5rcydcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1ZBTFVFIF8pLCBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJGb3JiaWRkZW4gbGluayBzdGF0dXMgaW5zaWRlIHNpZ25hdHVyZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKGEsIGIpLCBfIC0+IChhLCBiKSA6OiBhY2NfbGlua3MnKVxuICAgICAgICAgICAgICAgICAgICAgICBbXSBwLnBvcnRfbGluayk7XG4gICAgICAgICAgICAgICAgY291bnRlcl9pbmZvID0gTm9uZTtcbiAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICA6OiBhY2Nfc2l0ZV9zaWdzLFxuICAgICAgICAgICAgYWNjX2NvdW50ZXJfbmFtZXMgKVxuICAgICAgICB8IENvdW50ZXIgYyAtPlxuICAgICAgICAgICgqIFdlIGFyZSByZWFkaW5nIGhlcmUgYSBzaWduYXR1cmUsIG9ubHkgQ0VRIHRlc3RzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgICAgICggKCBjLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGludGVybmFsX3N0YXRlID0gTmFtZWREZWNscy5jcmVhdGUgW3x8XTtcbiAgICAgICAgICAgICAgICAoKiBBZ2VudCB3aXRoIGNvdW50ZXIgY2FuIGxpbmsgdG8gcG9ydCBbYl0gb24gY291bnRlciBhZ2VudCBbX19jb3VudGVyX2FnZW50XSAqKVxuICAgICAgICAgICAgICAgIGxpbmtzID1cbiAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgXCJiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIl9fY291bnRlcl9hZ2VudFwiICk7XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgY291bnRlcl9pbmZvID1cbiAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19taW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGMuQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIGksIF8pIC0+IFNvbWUgaVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXykgLT4gTm9uZSk7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21heCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSwgXykgLT4gU29tZSBpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKSAtPiBOb25lKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2RlZmF1bHRfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgYy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgOjogYWNjX3NpdGVfc2lncyxcbiAgICAgICAgICAgIGMuY291bnRlcl9zaWdfbmFtZSA6OiBhY2NfY291bnRlcl9uYW1lcyApKVxuICAgICAgc2l0ZXMgKFtdLCBbXSlcbiAgaW5cbiAgTmFtZWREZWNscy5jcmVhdGVfZnJvbV9saXN0IHNpdGVfc2lnc19wcmVfbmFtZWRkZWNscywgY291bnRlcl9uYW1lc1xuXG4oKiogW21ha2VfY291bnRlcl9hZ2VudF9zaXRlX3NpZ3MgY291bnRlcnNfcGVyX2FnZW50XSBldmFsdWF0ZXMgdG9cbiAgKGNvdW50ZXJfYWdlbnRfbmFtZSwgc2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQpIHdoaWNoIGRlc2NyaWJlIHRoZSBjb3VudGVyXG4gICAgICBhZ2VudCBhbmQgaXRzIHNpdGUgc2lnbmF0dXJlcyB3aXRoIHBvc3NpYmxlIGxpbmtzIHRvIG90aGVyIGFnZW50cy5cbiAgICAgIFtjb3VudGVyX2luZm9dIGFzc29jaWF0ZXMgZWFjaCBhZ2VudCB0byBhIGxpc3Qgb2YgY291bnRlciBwb3J0cywgb25lIGZvciBlYWNoIGRlZmluZWQgY291bnRlciAqKVxubGV0IG1ha2VfY291bnRlcl9hZ2VudF9zaXRlX3NpZ3NcbiAgICAoY291bnRlcnNfcGVyX2FnZW50IDogKChzdHJpbmcgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpIGxpc3QpIGxpc3QpIDpcbiAgICAoc3RyaW5nICogTG9jLnQpXG4gICAgKiAoKHN0cmluZyAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkpIGxpc3QgU2lnbmF0dXJlLnNpdGVfc2lnIE5hbWVkRGVjbHMudFxuICAgID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfbmFtZSA9IFwiX19jb3VudGVyX2FnZW50XCIsIExvYy5kdW1teSBpblxuICBsZXQgYV9wb3J0X25hbWUgPSBcImFcIiwgTG9jLmR1bW15IGluXG4gICgqIGFmdGVyIHBvcnQgKilcbiAgbGV0IGJfcG9ydF9uYW1lID0gXCJiXCIsIExvYy5kdW1teSBpblxuXG4gICgqIGJlZm9yZSBwb3J0ICopXG5cbiAgKCogUG9ydCBbYV0gY2FuIGxpbmsgdG8gcG9ydCBiIG9mIGFnZW50IG9mIHR5cGUgY291bnRlciBhZ2VudCAqKVxuICBsZXQgYV9wb3J0X3NpZyA9XG4gICAge1xuICAgICAgU2lnbmF0dXJlLmludGVybmFsX3N0YXRlID0gTmFtZWREZWNscy5jcmVhdGUgW3x8XTtcbiAgICAgIGxpbmtzID0gU29tZSBbIGJfcG9ydF9uYW1lLCBjb3VudGVyX2FnZW50X25hbWUgXTtcbiAgICAgIGNvdW50ZXJfaW5mbyA9IE5vbmU7XG4gICAgfVxuICBpblxuICAoKiBQb3J0IFtiXSBjYW4gbGluayB0byBwb3J0IGEgb2YgYWdlbnQgb2YgdHlwZSBjb3VudGVyIGFnZW50XG4gICAqIE9SIGZvciBlYWNoIGFnZW50IFthZ2VudF9uYW1lXSB3aXRoIGNvdW50ZXJzLCB0byB0aGVpciBwb3J0c1xuICAgKiBbYWdlbnRfY291bnRlcl9wb3J0X25hbWVdICopXG4gIGxldCBiX2xpbmtzID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKGFnZW50X25hbWUsIGNvdW50ZXJzX2Zyb21fYWdlbnQpIGFjYyAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnRfY291bnRlcl9wb3J0X25hbWUgLT4gYWdlbnRfY291bnRlcl9wb3J0X25hbWUsIGFnZW50X25hbWUpXG4gICAgICAgICAgY291bnRlcnNfZnJvbV9hZ2VudFxuICAgICAgICBAIGFjYylcbiAgICAgIGNvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgWyBhX3BvcnRfbmFtZSwgY291bnRlcl9hZ2VudF9uYW1lIF1cbiAgaW5cbiAgbGV0IGJfcG9ydF9zaWcgPVxuICAgIHtcbiAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICBsaW5rcyA9IFNvbWUgYl9saW5rcztcbiAgICAgIGNvdW50ZXJfaW5mbyA9IE5vbmU7XG4gICAgfVxuICBpblxuICBsZXQgc2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQgPVxuICAgIE5hbWVkRGVjbHMuY3JlYXRlIFt8IGFfcG9ydF9uYW1lLCBhX3BvcnRfc2lnOyBiX3BvcnRfbmFtZSwgYl9wb3J0X3NpZyB8XVxuICBpblxuICBjb3VudGVyX2FnZW50X25hbWUsIHNpdGVfc2lnc19jb3VudGVyX2FnZW50XG5cbmxldCBhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF9saW5rc19hc19saXN0cyB+KGJ1aWxkX2NvbnRhY3RfbWFwIDogYm9vbClcbiAgICAoYWdlbnRfc2lnc19wcmUgOiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCBOYW1lZERlY2xzLnQpIDpcbiAgICBTaWduYXR1cmUudCBOYW1lZERlY2xzLnQgPVxuICBsZXQgc2l6ZV9zaWdzID0gTmFtZWREZWNscy5zaXplIGFnZW50X3NpZ3NfcHJlIGluXG4gIE5hbWVkRGVjbHMubWFwaVxuICAgIChmdW4gYWdfaWQgYWdfbmFtZSAtPlxuICAgICAgTmFtZWREZWNscy5tYXAgKGZ1biBzaXRlX25hbWVfYWcxIHNpdGVfc2lnIC0+XG4gICAgICAgICAgaWYgbm90IGJ1aWxkX2NvbnRhY3RfbWFwIHRoZW5cbiAgICAgICAgICAgIHsgc2l0ZV9zaWcgd2l0aCBTaWduYXR1cmUubGlua3MgPSBOb25lIH1cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFVwZGF0ZSBsaW5rcyAqKVxuICAgICAgICAgICAgKCogVE9ETyBpbXByb3ZlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgICAgICAgIGxldCBzaXRlX2xpbmtzID1cbiAgICAgICAgICAgICAgQXJyYXkuaW5pdCAoc2l6ZV9zaWdzIC0gYWdfaWQpIChmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgQXJyYXkubWFrZVxuICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5zaXplXG4gICAgICAgICAgICAgICAgICAgICAgIChOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lnc19wcmUgKGkgKyBhZ19pZCkpKVxuICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoKChzaXRlX25hbWVfYWcyLCBwb3MpIGFzIHNpdGVfbmFtZSksICgoYWcyX25hbWUsIF8pIGFzIGFnKSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWcyX2lkID0gTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJhZ1wiIGFnZW50X3NpZ3NfcHJlIGFnIGluXG4gICAgICAgICAgICAgICAgbGV0IHNpdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJzaXRlIG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3NfcHJlIGFnMl9pZClcbiAgICAgICAgICAgICAgICAgICAgc2l0ZV9uYW1lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBhZzJfaWQgPj0gYWdfaWQgdGhlblxuICAgICAgICAgICAgICAgICAgc2l0ZV9saW5rcy4oYWcyX2lkIC0gYWdfaWQpLihzaXRlX2lkKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayA9XG4gICAgICAgICAgICAgICAgICBub3RcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCh4LCBfKSwgKHksIF8pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzaXRlX25hbWVfYWcxICYmIHkgPSBhZ19uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAoKE5hbWVkRGVjbHMuZWx0X3ZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzX3ByZSBhZzJfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAubGlua3MgfD4gT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmIHNob3VsZF9yYWlzZV9mb3JfbWlzc2luZ19saW5rIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmIFwiTm8gbGluayB0byAlcy4lcyBmcm9tICVzLiVzLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlX25hbWVfYWcxIGFnX25hbWUgc2l0ZV9uYW1lX2FnMiBhZzJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgICAgICAgIChPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2Ugc2l0ZV9zaWcubGlua3MpO1xuICAgICAgICAgICAgeyBzaXRlX3NpZyB3aXRoIFNpZ25hdHVyZS5saW5rcyA9IFNvbWUgc2l0ZV9saW5rcyB9XG4gICAgICAgICAgKSkpXG4gICAgYWdlbnRfc2lnc19wcmVcblxubGV0IGNyZWF0ZV9zaWdzIChsIDogQXN0LmFnZW50X3NpZyBsaXN0KSA6IFNpZ25hdHVyZS5zID1cbiAgKCogQ29udGFjdCBtYXAgc2hvdWxkIGJlIGJ1aWx0IG9ubHkgaWYgYSBzcGVjaWZpYyBsaW5rIGlzIGRlc2NyaWJlZCBpbiB0aGUgZGVmaW5pdGlvbiBvZiBzaWduYXR1cmUgKilcbiAgbGV0IGJ1aWxkX2NvbnRhY3RfbWFwIDogYm9vbCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjMCAtPiBmdW5jdGlvblxuICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIGZvcmJpZGRlbiBpbiBzaWduYXR1cmVcIiwgcG9zKSlcbiAgICAgICAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMsIF8pIC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjMSBzaXRlIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICB8IEFzdC5Db3VudGVyIF8gLT4gYWNjMVxuICAgICAgICAgICAgICB8IEFzdC5Qb3J0IHAgLT5cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSB8IExLYXBwYS5MTktfQU5ZKSwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGFjYzJcbiAgICAgICAgICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19WQUxVRSBfKSwgcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiRm9yYmlkZGVuIGxpbmsgc3RhdHVzIGluc2lkZSBhIGRlZmluaXRpb24gb2YgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSlcbiAgICAgICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKF8sIF8pLCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICBhY2MxIHAuQXN0LnBvcnRfbGluaylcbiAgICAgICAgICAgIGFjYzAgc2l0ZXMpXG4gICAgICBmYWxzZSBsXG4gIGluXG5cbiAgbGV0ICggKHNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgTmFtZWREZWNscy50KSBsaXN0KSxcbiAgICAgICAgKGNvdW50ZXJzX3Blcl9hZ2VudCA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0KSBsaXN0KSApID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gYWdlbnQgKGFjY19zaWdzLCBhY2NfY291bnRlcnNfcGVyX2FnZW50KSAtPlxuICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFjY19zaWdzLCBhY2NfY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzLCBfKSAtPlxuICAgICAgICAgIGxldCBzaXRlX3NpZ3NfbmQsIGNvdW50ZXJzX2FnZW50ID0gcHJlcGFyZV9hZ2VudF9zaWcgfnNpdGVzIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJzJyA9XG4gICAgICAgICAgICBpZiBjb3VudGVyc19hZ2VudCA9IFtdIHRoZW5cbiAgICAgICAgICAgICAgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoYWdlbnRfbmFtZSwgY291bnRlcnNfYWdlbnQpIDo6IGFjY19jb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICAgICBpblxuICAgICAgICAgIChhZ2VudF9uYW1lLCBzaXRlX3NpZ3NfbmQpIDo6IGFjY19zaWdzLCBjb3VudGVycycpXG4gICAgICBsIChbXSwgW10pXG4gIGluXG5cbiAgbGV0IGFnZW50X3NpZ3MgOiBTaWduYXR1cmUudCBOYW1lZERlY2xzLnQgPVxuICAgIChpZiBjb3VudGVyc19wZXJfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgc2lnc193aXRoX2xpbmtzX2FzX2xpc3RzXG4gICAgIGVsc2VcbiAgICAgICBtYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzIGNvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgIDo6IHNpZ3Nfd2l0aF9saW5rc19hc19saXN0cylcbiAgICB8PiBOYW1lZERlY2xzLmNyZWF0ZV9mcm9tX2xpc3RcbiAgICB8PiBhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF9saW5rc19hc19saXN0cyB+YnVpbGRfY29udGFjdF9tYXBcbiAgaW5cblxuICAoKiBUT0RPIHNlZSBhZ2VudF9zaWdzIG5hbWluZ3MgKilcbiAgU2lnbmF0dXJlLmNyZWF0ZSB+Y291bnRlcnNfcGVyX2FnZW50IGFnZW50X3NpZ3NcblxubGV0IGluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvdW50ZXJzX2luZm8gY29udGFjdF9tYXAgdG9rIGFsZ3NcbiAgICBpbml0cyA9XG4gIExpc3QubWFwXG4gICAgKGZ1biAoZXhwciwgaW5pKSAtPlxuICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY291bnRlcnNfaW5mbyB0b2sgYWxncyBleHByLFxuICAgICAgICBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb3VudGVyc19pbmZvIHRvayBjb250YWN0X21hcFxuICAgICAgICAgIGluaSApKVxuICAgIGluaXRzXG5cbnR5cGUgYXN0X2NvbXBpbGVkX2RhdGEgPSB7XG4gIGFnZW50c19zaWc6IFNpZ25hdHVyZS5zO1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgY291bnRlcnNfaW5mbzogQ291bnRlcnNfaW5mby50O1xuICB0b2tlbl9uYW1lczogdW5pdCBOYW1lZERlY2xzLnQ7XG4gIGFsZ192YXJzX2ZpbmRlcjogaW50IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIHVwZGF0ZWRfYWxnX3ZhcnM6IGludCBsaXN0O1xuICByZXN1bHQ6XG4gICAgKCBBc3QuYWdlbnQsXG4gICAgICBBc3QuYWdlbnRfc2lnLFxuICAgICAgTEthcHBhLnJ1bGVfbWl4dHVyZSxcbiAgICAgIFJhd19taXh0dXJlLnQsXG4gICAgICBpbnQsXG4gICAgICBMS2FwcGEucnVsZSApXG4gICAgQXN0LmNvbXBpbDtcbiAgICAgICgqKiBDb21waWxlZCBkYXRhIHdoZXJlIGlkZW50aWZpZXJzIGFyZSBpIEFzdC5jb21waWwgd2hlcmUgaWRlbnRpZmllcnNcbiAgICAgKiBhcmUgaW50ZWdlcnMgYW5kIG5vdCBzdHJpbmcsIHN5bnRhY3RpYyBzdWdhciBvbiBydWxlcyBhcmUgZXhwYW5zZWRcbiAgICAgKiAoc3ludGFjdGljIHN1Z2FyIG9uIG1peHR1cmUgYXJlIG5vdCkgKilcbn1cblxubGV0IGludmVydGVkX2NvdW50ZXJfbmFtZSAobmFtZSA6IHN0cmluZykgOiBzdHJpbmcgPVxuICBuYW1lIF4gU2lnbmF0dXJlLmludmVydGVkX2NvdW50ZXJfc3VmZml4XG5cbigqKiBFdmFsdWF0ZXMgdG8gYSBhc3RfY29tcGlsIHdoZXJlIGNsdGUgdGVzdHMgaGF2ZSBiZWVuIGNoYW5nZWQgdG8gY2d0ZSB0ZXN0cy5cbiAqIEZvciB0aGlzLCBmb3IgZWFjaCBjb3VudGVyIHdoZXJlIGEgQ0xURSB0ZXN0IGlzIHByZXNlbnQsIHdob3NlIHZhbHVlcyBhcmUgaW4gW1xcW2EsIGJcXF1dLCBpbml0aWFsaXplZCBhdCBbaV0gYW5kIGFkZCBhIG5ldyBjb3VudGVyIGJlbG9uZ2luZyBpbiBbYSwgYl0gaW5pdGlhbGl6ZWQgYXQgW2ErYi1pXS5cbiAqIEVhY2ggdGVzdCBbPiB2YWx1ZV0gaXMgdGhlbiB0cmFuc2xhdGVkIGludG8gYSB0ZXN0IHRvIHRoZSBcImludmVydGVkXCIgY291bnRlciBhcyBbPCBhK2ItdmFsdWVdLlxuICogRWFjaCBkZWx0YSBbKyBkZWx0YV0gaXMgdHJhbnNsYXRlZCBpbnRvIGEgWy0gZGVsdGFdICopXG5cbmxldCB0cmFuc2xhdGVfY2x0ZV9pbnRvX2NndGUgKGFzdF9jb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpID1cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIG1peHR1cmUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYzIgYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjMyBhZ2VudCAtPlxuICAgICAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWNjM1xuICAgICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZV9saXN0LCBfKSAtPlxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gYWNjNCBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2M0XG4gICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPiBmIGFjYzQgKExvYy52IGFnZW50X25hbWUpIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgYWNjMyBzaXRlX2xpc3QpXG4gICAgICAgICAgYWNjMiBhZ2VudF9saXN0KVxuICAgICAgYWNjIG1peHR1cmVcbiAgaW5cbiAgbGV0IHJlYyBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBleHByID1cbiAgICBtYXRjaCBMb2MudiBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKF8sIGUxLCBlMikgLT5cbiAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUxKSBlMlxuICAgIHwgVU5fQUxHX09QIChfLCBlKSB8IERJRkZfVE9LRU4gKGUsIF8pIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICB8IFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gLT4gYWNjXG4gICAgfCBLQVBQQV9JTlNUQU5DRSBtaXh0dXJlIC0+IGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIG1peHR1cmVcbiAgICB8IElGIChlYiwgZTEsIGUyKSAtPlxuICAgICAgY291bnRlcl9mb2xkX2luX2JleHByIGZcbiAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUxKSBlMilcbiAgICAgICAgZWJcbiAgICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGUsIG1peHR1cmUpIC0+XG4gICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlKSBlXG4gIGFuZCBjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiBhY2MgYmV4cHIgPVxuICAgIG1hdGNoIExvYy52IGJleHByIHdpdGhcbiAgICB8IFRSVUUgfCBGQUxTRSAtPiBhY2NcbiAgICB8IEJJTl9CT09MX09QIChfLCBiZTEsIGJlMikgLT5cbiAgICAgIGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiBhY2MgYmUxKSBiZTJcbiAgICB8IFVOX0JPT0xfT1AgKF8sIGJlKSAtPiBjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiBhY2MgYmVcbiAgICB8IENPTVBBUkVfT1AgKF8sIGUxLCBlMikgLT5cbiAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUxKSBlMlxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX2JleHByX29wdCBmIGFjYyBiZXhwciA9XG4gICAgbWF0Y2ggYmV4cHIgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgZSAtPiBjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiBhY2MgZVxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX3J1bGUgZiBhY2MgcnVsZSA9XG4gICAgbGV0IHJ1bGUgOiBBc3QucnVsZSA9IHJ1bGUgfD4gTG9jLnYgaW5cbiAgICBsZXQgYWNjID1cbiAgICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgICB8IEFzdC5FZGl0IF8gLT5cbiAgICAgICAgYWNjXG4gICAgICAgICgqIG5vIGNvdW50ZXIgdGVzdCBhbGxvd2VkIGluIGVkaXQgcnVsZSAqKVxuICAgICAgICAoKiB0byBkbyAqKVxuICAgICAgfCBBc3QuQXJyb3cgY29udGVudCAtPiBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBjb250ZW50Lmxoc1xuICAgIGluXG4gICAgbGV0IGFjYyA9XG4gICAgICBtYXRjaCBydWxlLmtfdW4gd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIChlLCBTb21lIGUnKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlJykgZVxuICAgICAgfCBTb21lIChlLCBOb25lKSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgaW5cbiAgICBsZXQgYWNjID0gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgcnVsZS5rX2RlZiBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5rX29wX3VuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSAoZSwgU29tZSBlJykgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZScpIGVcbiAgICAgIHwgU29tZSAoZSwgTm9uZSkgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIGluXG4gICAgbGV0IGFjYyA9XG4gICAgICBtYXRjaCBydWxlLmtfb3Agd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIGUgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIGluXG4gICAgYWNjXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fdmFyaWFibGUgZiBhY2MgdmFyaWFibGVfZGVmID1cbiAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyAoc25kIHZhcmlhYmxlX2RlZilcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9vYnNlcnZhYmxlIGYgYWNjIG9ic19kZWYgPVxuICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIG9ic19kZWZcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9pbml0IGYgYWNjIGluaXQgPVxuICAgIGxldCBlLCBfID0gaW5pdCBpblxuICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9wcmludCBmIGFjYyBwID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gLT4gYWNjXG4gICAgfCBBbGdfcGV4cHIgZSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fbW9kIGYgYWNjIG1vZF9kZWYgPVxuICAgIG1hdGNoIG1vZF9kZWYgd2l0aFxuICAgIHwgQXN0LkFQUExZIChlLCByKSAtPlxuICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX3J1bGUgZiBhY2MgcikgZVxuICAgIHwgVVBEQVRFIChfLCBlKSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgfCBTVE9QIGwgfCBTTkFQU0hPVCAoXywgbCkgfCBESU4gKF8sIGwpIHwgRElOT0ZGIGwgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChjb3VudGVyX2ZvbGRfaW5fcHJpbnQgZikgYWNjIGxcbiAgICB8IFBSSU5UIChsLCBsJykgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChjb3VudGVyX2ZvbGRfaW5fcHJpbnQgZilcbiAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChjb3VudGVyX2ZvbGRfaW5fcHJpbnQgZikgYWNjIGwnKVxuICAgICAgICBsXG4gICAgfCBQTE9URU5UUlkgfCBDRkxPV0xBQkVMIF8gLT4gYWNjXG4gICAgfCBDRkxPV01JWCAoXywgcCkgLT4gY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgKExvYy52IHApXG4gICAgfCBTUEVDSUVTX09GIChfLCBsLCBtKSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKVxuICAgICAgICAoY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgKExvYy52IG0pKVxuICAgICAgICBsXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fcGVydHVyYmF0aW9uIGYgYWNjIHBlcnR1cmJhdGlvbiA9XG4gICAgbGV0IF8sIGIxX29wdCwgbW9kX2xpc3QsIGIyX29wdCA9IExvYy52IHBlcnR1cmJhdGlvbiBpblxuICAgIGNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQgZlxuICAgICAgKGNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQgZlxuICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChjb3VudGVyX2ZvbGRfaW5fbW9kIGYpIGFjYyBtb2RfbGlzdClcbiAgICAgICAgIGIyX29wdClcbiAgICAgIGIxX29wdFxuICBpblxuICBsZXQgY291bnRlcl9mb2xkIGYgaW5pdCA9XG4gICAgbGV0IGwxID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYWNjIHIgLT4gY291bnRlcl9mb2xkX2luX3J1bGUgZiBhY2MgKHNuZCByKSlcbiAgICAgICAgaW5pdCBhc3RfY29tcGlsLnJ1bGVzXG4gICAgaW5cbiAgICBsZXQgbDIgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGNvdW50ZXJfZm9sZF9pbl92YXJpYWJsZSBmKSBsMSBhc3RfY29tcGlsLnZhcmlhYmxlc1xuICAgIGluXG4gICAgbGV0IGwzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChjb3VudGVyX2ZvbGRfaW5fb2JzZXJ2YWJsZSBmKSBsMiBhc3RfY29tcGlsLm9ic2VydmFibGVzXG4gICAgaW5cbiAgICBsZXQgbDQgPSBMaXN0LmZvbGRfbGVmdCAoY291bnRlcl9mb2xkX2luX2luaXQgZikgbDMgYXN0X2NvbXBpbC5pbml0IGluXG4gICAgbGV0IGw1ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChjb3VudGVyX2ZvbGRfaW5fcGVydHVyYmF0aW9uIGYpXG4gICAgICAgIGw0IGFzdF9jb21waWwucGVydHVyYmF0aW9uc1xuICAgIGluXG4gICAgbDVcbiAgaW5cbiAgKCogRmluZCBjb3VudGVycyB0aGF0IGhhdmUgQ0xURSB0ZXN0cywgYW5kIGJ1aWxkIGxpc3Q6IGFnZW50X25hbWUsIGNvdW50ZXJfbmFtZSwgc3VtX2JvdW5kc19yZWYgbGlzdC5cbiAgICogc3VtX2JvdW5kc19yZWYgaXMgdGhlbiBmaWxsZWQgd2hlbiByZWFkaW5nIHRoZSBzaWduYXR1cmUgYW5kIHVzZWQgdG8gc3BlY2lmeSBmb3IgaW52ZXJ0ZWQgY291bnRlciBpbml0IHZhbHVlIG9yIHRlc3QgdmFsdWUgYXMgW3N1bV9ib3VuZHNfcmVmIC0gdmFsdWVdICopXG4gIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHMgOiBNb2RzLlN0cmluZ1NldC50IE1vZHMuU3RyaW5nTWFwLnQgPVxuICAgIGNvdW50ZXJfZm9sZFxuICAgICAgKGZ1biBtYXAgYWdlbnRfbmFtZSBjb3VudGVyIC0+XG4gICAgICAgIGxldCBjb3VudGVyX25hbWUgPSBMb2MudiBjb3VudGVyLmNvdW50ZXJfbmFtZSBpblxuICAgICAgICAoKiBGb3JiaWQgcHJlZml4IHRvIGF2b2lkIG5vbnNlbnNlIGluIGNvdW50ZXIgZGVmaW5pdGlvbiAqKVxuICAgICAgICBpZiBTaWduYXR1cmUuaXNfaW52ZXJ0ZWRfY291bnRlciBjb3VudGVyX25hbWUgdGhlblxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcImNhbm5vdCBlbmQgY291bnRlciBuYW1lIGJ5IFxcXCJcIlxuICAgICAgICAgICAgICAgICBeIFNpZ25hdHVyZS5pbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCBeIFwiXFxcIlwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuY291bnRlcl9uYW1lICkpO1xuICAgICAgICAoKiBSZXR1cm4gY291bnRlciBuYW1lIGFsb25nIHdpdGggbWF0Y2hpbmcgYWdlbnRfbmFtZSAqKVxuICAgICAgICBtYXRjaCBPcHRpb25fdXRpbC5tYXAgTG9jLnYgY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgKEFzdC5DTFRFIF8pIC0+XG4gICAgICAgICAgbGV0IHNpdGVzID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBNb2RzLlN0cmluZ1NldC5lbXB0eSBhZ2VudF9uYW1lIG1hcFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgTW9kcy5TdHJpbmdTZXQubWVtIGNvdW50ZXJfbmFtZSBzaXRlcyB0aGVuXG4gICAgICAgICAgICBtYXBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAoTW9kcy5TdHJpbmdTZXQuYWRkIGNvdW50ZXJfbmFtZSBzaXRlcylcbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgIHwgU29tZSAoQXN0LkNFUSBfKSB8IFNvbWUgKEFzdC5DR1RFIF8pIHwgU29tZSAoQXN0LkNWQVIgXykgfCBOb25lIC0+IG1hcClcbiAgICAgIE1vZHMuU3RyaW5nTWFwLmVtcHR5XG4gIGluXG4gIGxldCBhZGQgKHgsIHkpIGRhdGEgbWFwID1cbiAgICBNb2RzLlN0cmluZ01hcC5hZGQgeFxuICAgICAgKE1vZHMuU3RyaW5nTWFwLmFkZCB5IGRhdGFcbiAgICAgICAgIChNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgTW9kcy5TdHJpbmdNYXAuZW1wdHkgeCBtYXApKVxuICAgICAgbWFwXG4gIGluXG4gICgqIENyZWF0ZSBvcHBvc2l0ZSBjb3VudGVycyB0aGF0IGhhdmUgdGhlIHNhbWUgdGVzdHMgKilcbiAgbGV0ICggKHNpZ25hdHVyZXMgOiBBc3QuYWdlbnRfc2lnIGxpc3QpLFxuICAgICAgICAoY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwIDpcbiAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnIE1vZHMuU3RyaW5nTWFwLnQgTW9kcy5TdHJpbmdNYXAudCkgKSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGFjYywgbWFwKSBhZ2VudCAtPlxuICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50IDo6IGFjYywgbWFwXG4gICAgICAgIHwgUHJlc2VudCAoYWdlbnRfbmFtZV8sIHNpdGVfbGlzdCwgYWdlbnRfbW9kKSAtPlxuICAgICAgICAgIGxldCBhZ2VudF9uYW1lID0gTG9jLnYgYWdlbnRfbmFtZV8gaW5cbiAgICAgICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOiBNb2RzLlN0cmluZ1NldC50ID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBNb2RzLlN0cmluZ1NldC5lbXB0eSBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IChuZXdfY291bnRlcl9zaXRlcyA6IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWcgQXN0LnNpdGUgbGlzdCksIG1hcFxuICAgICAgICAgICAgICA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ1NldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gY291bnRlcl9uYW1lIChhY2MsIG1hcCkgLT5cbiAgICAgICAgICAgICAgICAoKiBGaW5kIGNvdW50ZXIgdG8gaW52ZXJ0ICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfb3JpZyA6IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWcgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5maW5kX21hcFxuICAgICAgICAgICAgICAgICAgICAoZnVuIHNpdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjb3VudGVyIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MudiBjb3VudGVyLkNvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAgICAgICAgc2l0ZV9saXN0XG4gICAgICAgICAgICAgICAgICB8PiBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgICAgICAgICBpblxuXG4gICAgICAgICAgICAgICAgKCogTWFrZSBpbnZlcnRlZCBjb3VudGVyIGRlY2xhcmF0aW9uICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgPVxuICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIG5hbWUgLT4gaW52ZXJ0ZWRfY291bnRlcl9uYW1lIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19uYW1lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgX2NvdW50ZXJfc2lnX2RlZmF1bHQsIF9pbmZfYm91bmQsIF9zdXBfYm91bmQgPVxuICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX21pbiwgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX21heFxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIG1pbiwgXyksIFNvbWUgKFNvbWUgbWF4LCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXggKyBtaW4gLSBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfZGVmYXVsdCwgbWluLCBtYXhcbiAgICAgICAgICAgICAgICAgIHwgKE5vbmUgfCBTb21lIChOb25lLCBfKSksIF8gfCBfLCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNhbm5vdCB0YWtlIHRoZSBvcHBvc2l0ZSBvZiBhbiB1bmJvdW5kZWQgY291bnRlcnMgIFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZSApKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5CQVNJU19NSU5VU19JTlBVVCAwICgqKGluZl9ib3VuZCArIHN1cF9ib3VuZCkqKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZGVsdGEgPSBDb3VudGVyc19pbmZvLkJBU0lTX01JTlVTX0lOUFVUIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlIHggPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBTb21lIChOb25lLCBsb2MpIC0+IFNvbWUgKE5vbmUsIGxvYylcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLCBsb2MpIC0+XG4gICAgICAgICAgICAgICAgICAgIFNvbWUgKFNvbWUgKENvdW50ZXJzX2luZm8uYXBwbHlfaW50IGNvbnZlcnRfdmFsdWUgaSksIGxvYylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCByZWZfbWluLCByZWZfbWF4ID1cbiAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8ucmVvcmRlcl9ib3VuZHMgY29udmVydF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX21pbiwgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX21heClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZ19taW4gPSB1cGRhdGUgcmVmX21pbiBpblxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZ19tYXggPSB1cGRhdGUgcmVmX21heCBpblxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZ19kZWZhdWx0ID1cbiAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uYXBwbHlfaW50IGNvbnZlcnRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX2RlZmF1bHRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2luZm8gPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmZyb21fc2lnX25hbWUgPSBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgY29udmVydF92YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udmVydF9kZWx0YTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZ192aXNpYmxlID1cbiAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uRnJvbV9jbHRlX2VsaW1pbmF0aW9uIGNvbnZlcnRfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogV3JpdGUgaW4gc3VtX2JvdW5kc19yZWYgdGhlIHN1bSBvZiB0aGUgY291bnRlciBib3VuZHMgYWJvdmUgKilcbiAgICAgICAgICAgICAgICBsZXQgY291bnRlciA9XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW47XG4gICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4O1xuICAgICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggQXN0LkNvdW50ZXIgY291bnRlciA6OiBhY2MsXG4gICAgICAgICAgICAgICAgICBhZGRcbiAgICAgICAgICAgICAgICAgICAgKGFnZW50X25hbWUsIExvYy52IGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19uYW1lKVxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyIG1hcCApKVxuICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCAoW10sIG1hcClcbiAgICAgICAgICBpblxuICAgICAgICAgICggQXN0LlByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QgQCBuZXdfY291bnRlcl9zaXRlcywgYWdlbnRfbW9kKVxuICAgICAgICAgICAgOjogYWNjLFxuICAgICAgICAgICAgbWFwICkpXG4gICAgICAoW10sIE1vZHMuU3RyaW5nTWFwLmVtcHR5KVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwuc2lnbmF0dXJlcylcbiAgaW5cblxuICAoKiBJbiBydWxlcywgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBjb3VudGVyIHRlc3RzIGFuZCB0aGUgY291bnRlciBtb2RpZmljYXRpb25zICopXG4gIGxldCByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IChtaXggOiBBc3QubWl4dHVyZSkgOiBBc3QubWl4dHVyZSA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50XG4gICAgICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgOiBzdHJpbmcgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOlxuICAgICAgICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZyBNb2RzLlN0cmluZ01hcC50ID1cbiAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgTW9kcy5TdHJpbmdNYXAuZW1wdHkgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgY291bnRlcl9jb252ZXJzaW9uX2luZm9fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIEFkZCBkZWx0YSB0byBjb3VudGVyIGFzIG9wcG9zaXRlIGRlbHRhcyB0byBjb3VudGVyX2RlbHRhICopXG4gICAgICAgICAgICAgIGxldCAoYWRkZWRfc2l0ZXMsIHNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcykgOlxuICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCAqIEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0X21hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2Mgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgY291bnRlcl9zaWcnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBBcyB3ZSBrbm93IHRoYXQgdGhpcyBjb3VudGVyIHVzZXMgYSBDTFRFIHRlc3QsIFdlIGludHJvZHVjZSB0aGUgaW52ZXJ0ZWQgY291bnRlciAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKCogW2NsdGVfdmFsdWVfb3Jfbm9uZV0gZGlzY3JpbWluYXRlcyB0aGUgY2FzZSB3aGVyZSB0aGlzIHNpdGUgaW4gdGhpcyBleHByZXNzaW9uIGhhcyBhIENMVEUgdGVzdCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlcnNpb25faW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uZ2V0X2NvbnZlcnNpb25faW5mbyBjb3VudGVyX3NpZydcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2x0ZV92YWx1ZV9vcl9ub25lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBMb2MudiB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DRVEgXyB8IENHVEUgXyB8IENWQVIgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0xURSB2YWx1ZSAtPiBTb21lIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjbHRlX3ZhbHVlX29yX25vbmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZXJlIGlzIGEgdGVzdCwgaXQgZG9lc24ndCBuZWVkIGludmVyc2lvbjogd2UgYWRkIGludmVydGVkIGNvdW50ZXIgd2l0aG91dCB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA9PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlIGNvdW50ZXIgdmFsdWUgaXMgY2hhbmdpbmcsIHdlIG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGludmVydGVkX2NvdW50ZXJfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90IGludmVydGVkX2NvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyc19pbmZvLmFwcGx5X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJzaW9uX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQ291bnRlcnNfaW5mby5jb252ZXJ0X2RlbHRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfZGVsdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVydGVkX2NvdW50ZXJfc2l0ZSA6OiBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRoZSB0ZXN0IGlzIENMVEUsIHdlIGludmVydCBpdCAqKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFNpdGUgd2l0aCBpbnZlcnRlZCBjb3VudGVyIHdpdGggQ0dURSB0ZXN0IGluc3RlYWQgb2YgQ0xURSB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdCBpbnZlcnRlZF9jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkNHVEVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyc19pbmZvLmFwcGx5X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2lvbl9pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5Db3VudGVyc19pbmZvLmNvbnZlcnRfdmFsdWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBMb2MuY29weV9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl90ZXN0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlcnNfaW5mby5hcHBseV9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25faW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQ291bnRlcnNfaW5mby5jb252ZXJ0X2RlbHRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX2RlbHRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMb2MudiBjb3VudGVyLmNvdW50ZXJfZGVsdGEgPT0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLCBuZXdfc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZiB0aGUgY291bnRlciB2YWx1ZSBpcyBjaGFuZ2luZywgd2UgbmVlZCB0byBhZGQgaXQgdG8gdGhlIG9yaWdpbmFsIGNvdW50ZXIgdG9vICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsX2NvdW50ZXJfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlciB7IGNvdW50ZXIgd2l0aCBjb3VudGVyX3Rlc3QgPSBOb25lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2NvdW50ZXJfc2l0ZSA6OiBhY2MsIG5ld19zaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKSlcbiAgICAgICAgICAgICAgICAgIFtdIHNpdGVfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmV3X3NpdGVfbGlzdCA6IEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIHNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcyBAIGFkZGVkX3NpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgbmV3X3NpdGVfbGlzdCwgYWdlbnRfbW9kKSlcbiAgICAgICAgICBhZ2VudF9saXN0KVxuICAgICAgbWl4XG4gIGluXG4gIGxldCBhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X21peHR1cmUgKG1peCA6IEFzdC5taXh0dXJlKSA6IEFzdC5taXh0dXJlID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBhZ2VudF9saXN0IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBhZ2VudCAtPlxuICAgICAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWdlbnRcbiAgICAgICAgICAgIHwgUHJlc2VudCAoYWdlbnRfbmFtZV8sIHNpdGVfbGlzdCwgYWdlbnRfbW9kKSAtPlxuICAgICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA6IHN0cmluZyA9IExvYy52IGFnZW50X25hbWVfIGluXG4gICAgICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnIE1vZHMuU3RyaW5nTWFwLnQgPVxuICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBNb2RzLlN0cmluZ01hcC5lbXB0eSBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2NvbnZlcnNpb25faW5mb19tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCpcbiAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgICAoc3RyaW5nICogc3RyaW5nICogaW50IHJlZikgbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gKGFnZW50X25hbWVfY291bnRlciwgXywgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRfbmFtZSA9IGFnZW50X25hbWVfY291bnRlcilcbiAgICAgICAgICAgICAgICAgIChmc3QgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzKVxuICAgICAgICAgICAgICBpbiopXG4gICAgICAgICAgICAgICgqIEFkZCBkZWx0YSB0byBjb3VudGVyIGFzIG9wcG9zaXRlIGRlbHRhcyB0byBjb3VudGVyX2RlbHRhICopXG4gICAgICAgICAgICAgIGxldCBhZGRlZF9zaXRlcyA6IEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjb3VudGVyIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBjb3VudGVyX3NpZyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXJzX2luZm8uZ2V0X2NvbnZlcnNpb25faW5mbyBjb3VudGVyX3NpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEFzIHdlIGtub3cgdGhhdCB0aGlzIGNvdW50ZXIgdXNlcyBhIENMVEUgdGVzdCwgV2UgaW50cm9kdWNlIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBzaG91bGQgaGF2ZSBDRVEgdGVzdCB2YWx1ZSBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuY291bnRlcl9uYW1lICkpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggTG9jLnYgdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNHVEUgXyB8IENMVEUgXyB8IENWQVIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgc2hvdWxkIGhhdmUgQ0VRIHRlc3QgdmFsdWUgaW4gaW5pdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgdGVzdCApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DRVEgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMb2MudiBjb3VudGVyLmNvdW50ZXJfZGVsdGEgPD4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBkZWx0YSBzaG91bGQgYmUgMCBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgdGVzdCApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3QgaW52ZXJ0ZWRfY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy5jb3B5X2Fubm90IHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DRVFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXJzX2luZm8uYXBwbHlfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5Db3VudGVyc19pbmZvLmNvbnZlcnRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5Bc3QuY291bnRlcl9kZWx0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMCB3aXRoIGFubm90IGFzIHRlc3RlZCBhYm92ZSAqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKSkpKVxuICAgICAgICAgICAgICAgICAgW10gc2l0ZV9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZXdfc2l0ZV9saXN0IDogQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCA9XG4gICAgICAgICAgICAgICAgc2l0ZV9saXN0IEAgYWRkZWRfc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgQXN0LlByZXNlbnQgKGFnZW50X25hbWVfLCBuZXdfc2l0ZV9saXN0LCBhZ2VudF9tb2QpKVxuICAgICAgICAgIGFnZW50X2xpc3QpXG4gICAgICBtaXhcbiAgaW5cblxuICBsZXQgbWFwX2V4cHIgZXhwciA9XG4gICAgQWxnX2V4cHIubWFwX29uX21peHR1cmVcbiAgICAgIChmdW4geCAtPiBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAocmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCB4KSlcbiAgICAgIGV4cHJcbiAgaW5cbiAgbGV0IG1hcF9iZXhwciBleHByID1cbiAgICBBbGdfZXhwci5tYXBfYm9vbF9vbl9taXh0dXJlXG4gICAgICAoZnVuIHggLT4gQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgKHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgeCkpXG4gICAgICBleHByXG4gIGluXG4gIGxldCBtYXBfcnVsZSBydWxlID1cbiAgICBsZXQgcmV3cml0ZSA9XG4gICAgICBtYXRjaCBydWxlLkFzdC5yZXdyaXRlIHdpdGhcbiAgICAgIHwgRWRpdCBjb250ZW50IC0+XG4gICAgICAgIEFzdC5FZGl0IHsgY29udGVudCB3aXRoIG1peCA9IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgY29udGVudC5taXggfVxuICAgICAgfCBBcnJvdyBjb250ZW50IC0+XG4gICAgICAgIEFycm93XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29udGVudCB3aXRoXG4gICAgICAgICAgICBsaHMgPSByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IGNvbnRlbnQubGhzO1xuICAgICAgICAgICAgcmhzID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50LnJocztcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQga19kZWYgPSBtYXBfZXhwciBydWxlLmtfZGVmIGluXG4gICAgbGV0IGtfb3AgPSBtYXBfb3B0IG1hcF9leHByIHJ1bGUua19vcCBpblxuICAgIGxldCBrX3VuID1cbiAgICAgIG1hcF9vcHQgKGZ1biAoYSwgYikgLT4gbWFwX2V4cHIgYSwgbWFwX29wdCBtYXBfZXhwciBiKSBydWxlLmtfdW5cbiAgICBpblxuICAgIGxldCBrX29wX3VuID1cbiAgICAgIG1hcF9vcHQgKGZ1biAoYSwgYikgLT4gbWFwX2V4cHIgYSwgbWFwX29wdCBtYXBfZXhwciBiKSBydWxlLmtfb3BfdW5cbiAgICBpblxuICAgIHsgcnVsZSB3aXRoIHJld3JpdGU7IGtfZGVmOyBrX29wOyBrX3VuOyBrX29wX3VuIH1cbiAgaW5cbiAgbGV0IHJ1bGVzIDogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgbGlzdCA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIHJ1bGVfZGVmIC0+IGZzdCBydWxlX2RlZiwgTG9jLm1hcF9hbm5vdCBtYXBfcnVsZSAoc25kIHJ1bGVfZGVmKSlcbiAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLnJ1bGVzKVxuICBpblxuXG4gIGxldCBpbml0IDogKEFzdC5taXh0dXJlLCBBc3QubWl4dHVyZSwgc3RyaW5nKSBBc3QuaW5pdF9zdGF0ZW1lbnQgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKHF1YW50aXR5X2FsZ19leHByLCBpbml0X2tpbmQpIC0+XG4gICAgICAgICggcXVhbnRpdHlfYWxnX2V4cHIsXG4gICAgICAgICAgbWF0Y2ggaW5pdF9raW5kIHdpdGhcbiAgICAgICAgICB8IEFzdC5JTklUX1RPSyBfIC0+IGluaXRfa2luZFxuICAgICAgICAgIHwgSU5JVF9NSVggbWl4XyAtPlxuICAgICAgICAgICAgSU5JVF9NSVggKExvYy5tYXBfYW5ub3QgYWRkX2ludmVydGVkX2NvdW50ZXJfdG9faW5pdF9taXh0dXJlIG1peF8pICkpXG4gICAgICBhc3RfY29tcGlsLmluaXRcbiAgaW5cbiAgbGV0IHZhcmlhYmxlcyA9XG4gICAgTGlzdC5yZXZfbWFwIChmdW4gKGEsIGIpIC0+IGEsIG1hcF9leHByIGIpIChMaXN0LnJldiBhc3RfY29tcGlsLnZhcmlhYmxlcylcbiAgaW5cbiAgbGV0IG9ic2VydmFibGVzID0gTGlzdC5yZXZfbWFwIG1hcF9leHByIChMaXN0LnJldiBhc3RfY29tcGlsLm9ic2VydmFibGVzKSBpblxuICBsZXQgbWFwX3ByaW50IGEgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgXyAtPiBhXG4gICAgfCBBbGdfcGV4cHIgZSAtPiBBbGdfcGV4cHIgKG1hcF9leHByIGUpXG4gIGluXG4gIGxldCBtYXBfbW9kaWYgbW9kaWYgPVxuICAgIG1hdGNoIG1vZGlmIHdpdGhcbiAgICB8IEFzdC5BUFBMWSAoYSwgcikgLT4gQXN0LkFQUExZIChtYXBfZXhwciBhLCBMb2MubWFwX2Fubm90IG1hcF9ydWxlIHIpXG4gICAgfCBVUERBVEUgKGEsIGUpIC0+IFVQREFURSAoYSwgbWFwX2V4cHIgZSlcbiAgICB8IFNUT1AgbCAtPiBTVE9QIChMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICB8IFNOQVBTSE9UIChiLCBsKSAtPiBTTkFQU0hPVCAoYiwgTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCkpXG4gICAgfCBQUklOVCAobCwgbCcpIC0+XG4gICAgICBQUklOVFxuICAgICAgICAoIExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpLFxuICAgICAgICAgIExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwnKSApXG4gICAgfCBQTE9URU5UUlkgfCBDRkxPV0xBQkVMIF8gLT4gbW9kaWZcbiAgICB8IENGTE9XTUlYIChiLCBtaXh0dXJlKSAtPlxuICAgICAgQ0ZMT1dNSVggKGIsIExvYy5tYXBfYW5ub3QgcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBtaXh0dXJlKVxuICAgIHwgRElOIChhLCBsKSAtPiBESU4gKGEsIExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpKVxuICAgIHwgRElOT0ZGIGwgLT4gRElOT0ZGIChMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICB8IFNQRUNJRVNfT0YgKGIsIGwsIG0pIC0+XG4gICAgICBTUEVDSUVTX09GXG4gICAgICAgIChiLCBMaXN0LnJldl9tYXAgbWFwX3ByaW50IGwsIExvYy5tYXBfYW5ub3QgcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBtKVxuICBpblxuICBsZXQgcGVydHVyYmF0aW9ucyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuICgoYSwgYiwgYywgZCksIGV4dCkgLT5cbiAgICAgICAgKCAoIGEsXG4gICAgICAgICAgICBtYXBfb3B0IG1hcF9iZXhwciBiLFxuICAgICAgICAgICAgTGlzdC5yZXZfbWFwIG1hcF9tb2RpZiAoTGlzdC5yZXYgYyksXG4gICAgICAgICAgICBtYXBfb3B0IG1hcF9iZXhwciBkICksXG4gICAgICAgICAgZXh0ICkpXG4gICAgICAoTGlzdC5yZXYgYXN0X2NvbXBpbC5wZXJ0dXJiYXRpb25zKVxuICBpblxuICAoIHtcbiAgICAgIGFzdF9jb21waWwgd2l0aFxuICAgICAgc2lnbmF0dXJlcztcbiAgICAgIHJ1bGVzO1xuICAgICAgaW5pdDtcbiAgICAgIHZhcmlhYmxlcztcbiAgICAgIG9ic2VydmFibGVzO1xuICAgICAgcGVydHVyYmF0aW9ucztcbiAgICB9LFxuICAgIGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcCApXG5cbmxldCBjb21waWxfb2ZfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIH5zeW50YXhfdmVyc2lvbiB+dmFyX292ZXJ3cml0ZSBhc3RfY29tcGlsXG4gICAgPVxuICAoKiBUT0RPIHRlc3QgdGhpcyAqKVxuICAoKiBUcmFuc2xhdGUgQ0xURSB0ZXN0cyBpbiBhc3RfY29tcGlsIGludG8gQ0dURSB0ZXN0cyAqKVxuICBsZXQgYXN0X2NvbXBpbCwgX2NvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcCA9XG4gICAgdHJhbnNsYXRlX2NsdGVfaW50b19jZ3RlIGFzdF9jb21waWxcbiAgaW5cbiAgbGV0IGhhc19jb3VudGVycyA9IENvdW50ZXJzX2NvbXBpbGVyLmhhc19jb3VudGVycyBhc3RfY29tcGlsIGluXG4gIGxldCBhZ2VudF9zaWdfaXNfaW1wbGljaXQgPVxuICAgIGFzdF9jb21waWwuQXN0LnNpZ25hdHVyZXMgPSBbXSAmJiBhc3RfY29tcGlsLkFzdC50b2tlbnMgPSBbXVxuICBpblxuICAoKiBJbmZlciBhZ2VudCBzaWduYXR1cmVzIGlmIHRoZSBzaWduYXR1cmUgaXMgaW1wbGljaXQgKilcbiAgbGV0IGFzdF9jb21waWwgPVxuICAgIGlmIGFnZW50X3NpZ19pc19pbXBsaWNpdCAmJiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiaW1wbGljaXQgc2lnbmF0dXJlIGlzIGluY29tcGF0aWJsZSB3aXRoIGNvdW50ZXJzXCIsIExvYy5kdW1teSkpXG4gICAgZWxzZSBpZiBhZ2VudF9zaWdfaXNfaW1wbGljaXQgdGhlblxuICAgICAgQXN0LmluZmVyX2FnZW50X3NpZ25hdHVyZXMgYXN0X2NvbXBpbFxuICAgIGVsc2VcbiAgICAgIGFzdF9jb21waWxcbiAgaW5cbiAgKCogUmVtb3ZlIGNvdW50ZXIgZXF1YWxpdHkgdGVzdCB3aXRoIGEgdmFyaWFibGUgYnkgc3BsaXR0aW5nIGluIG9uZSBydWxlIHBlciB2YXJpYWJsZSB2YWx1ZSAqKVxuICBsZXQgYXN0X2NvbXBpbCA9XG4gICAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICAgIENvdW50ZXJzX2NvbXBpbGVyLnNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmdcbiAgICAgICAgfmRlYnVnX21vZGUgYXN0X2NvbXBpbFxuICAgIGVsc2VcbiAgICAgIGFzdF9jb21waWxcbiAgaW5cblxuICBsZXQgYWdlbnRzX3NpZyA6IFNpZ25hdHVyZS5zID0gY3JlYXRlX3NpZ3MgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyBpblxuICAoKiBTZXQgYW4gZW1wdHkgY29udGFjdCBtYXAgKilcbiAgbGV0IGNvdW50ZXJzX2luZm8gPVxuICAgIGxldCBzaXplID0gU2lnbmF0dXJlLnNpemUgYWdlbnRzX3NpZyBpblxuICAgIGxldCB0ID0gQXJyYXkubWFrZSBzaXplIFt8fF0gaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPSBzaXplIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSB0LihrKSA8LSBBcnJheS5tYWtlIChTaWduYXR1cmUuYXJpdHkgYWdlbnRzX3NpZyBrKSBOb25lIGluXG4gICAgICAgIGF1eCAoayArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBhdXggMCBpblxuICAgIHRcbiAgaW5cbiAgKCpsZXQgKCkgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgICAgICAoZnVuIGFnZW50X25hbWUgbSAtPlxuICAgICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lID0gTG9jLmFubm90X3dpdGhfZHVtbXkgYWdlbnRfbmFtZSBpblxuICAgICAgICAgICAgICAgIGxldCBhZ2VudF9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfbmFtZSBhZ2VudHNfc2lnICBpblxuICAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gc2l0ZV9uYW1lIGNvdW50ZXJfc2lnIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBzaXRlX2lkID0gU2lnbmF0dXJlLmlkX29mX3NpdGUgYWdlbnRfbmFtZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgc2l0ZV9uYW1lKSBhZ2VudHNfc2lnIGluXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX2luZm8uKGFnZW50X2lkKS4oc2l0ZV9pZCk8LVNvbWUgY291bnRlcl9zaWcpXG4gICAgICAgICAgICBtKSBjb3VudGVyX2NvbnZlcnNpb25faW5mb19tYXBcbiAgICBpbiopXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgaW50ZXJmYWNlLCBfKSAtPlxuICAgICAgICAgIGxldCBhZ2VudF9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdlbnRfbmFtZSBhZ2VudHNfc2lnIGluXG5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gKClcbiAgICAgICAgICAgICAgfCBBc3QuQ291bnRlciBjb3VudGVyX3NpZyAtPlxuICAgICAgICAgICAgICAgIGxldCBzaXRlX25hbWUgPSBjb3VudGVyX3NpZy5Db3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgc2l0ZV9pZCA9XG4gICAgICAgICAgICAgICAgICBTaWduYXR1cmUuaWRfb2Zfc2l0ZSBhZ2VudF9uYW1lIHNpdGVfbmFtZSBhZ2VudHNfc2lnXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBjb3VudGVyc19pbmZvLihhZ2VudF9pZCkuKHNpdGVfaWQpIDwtIFNvbWUgY291bnRlcl9zaWcpXG4gICAgICAgICAgICBpbnRlcmZhY2VcbiAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gKCkpXG4gICAgICBhc3RfY29tcGlsLkFzdC5zaWduYXR1cmVzXG4gIGluXG4gIGxldCBjb250YWN0X21hcCA6IChNb2RzLkludFNldC50ICogTW9kcy5JbnQyU2V0LnQpIGFycmF5IGFycmF5ID1cbiAgICBBcnJheS5pbml0IChTaWduYXR1cmUuc2l6ZSBhZ2VudHNfc2lnKSAoZnVuIGkgLT5cbiAgICAgICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLmFyaXR5IGFnZW50c19zaWcgaSkgKGZ1biBzIC0+XG4gICAgICAgICAgICAoIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAgKGZ1biBhIGsgLT4gTW9kcy5JbnRTZXQuYWRkIGsgYSlcbiAgICAgICAgICAgICAgICBNb2RzLkludFNldC5lbXB0eVxuICAgICAgICAgICAgICAgIChTaWduYXR1cmUuaW50ZXJuYWxfc3RhdGVzX251bWJlciBpIHMgYWdlbnRzX3NpZyksXG4gICAgICAgICAgICAgIE1vZHMuSW50MlNldC5lbXB0eSApKSlcbiAgaW5cbiAgbGV0IHJ1bGVfbmFtZXMsIGV4dHJhX3ZhcnMsIGNsZWFuZWRfcnVsZXMgPVxuICAgIGxldCBhY2MgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG5hbWVfYW5kX3B1cmlmeV9ydWxlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBhZ2VudHNfc2lnIH5jb250YWN0X21hcClcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVfbmFtZXMgPSAwLCBNb2RzLlN0cmluZ1NldC5lbXB0eTtcbiAgICAgICAgICBleHRyYV92YXJzID0gW107XG4gICAgICAgICAgY2xlYW5lZF9ydWxlcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGFzdF9jb21waWwuQXN0LnJ1bGVzXG4gICAgaW5cbiAgICBzbmQgYWNjLnJ1bGVfbmFtZXMsIGFjYy5leHRyYV92YXJzLCBhY2MuY2xlYW5lZF9ydWxlc1xuICBpblxuXG4gIGxldCBvdmVyd3JpdGVfdmFycyAodmFyX292ZXJ3cml0ZSA6IChzdHJpbmcgKiBOYnIudCkgbGlzdClcbiAgICAgICh2YXJzIDogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC52YXJpYWJsZV9kZWYgbGlzdCkgOlxuICAgICAgKHN0cmluZyAqIE5ici50KSBsaXN0ICogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC52YXJpYWJsZV9kZWYgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKG92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZywgYWNjX3ZhcnMpICgoKHgsIF8pLCBfKSBhcyB2YXIpIC0+XG4gICAgICAgIGxldCBtYXRjaHMsIG90aGVyX292ZXJ3cml0ZV92YXJzID1cbiAgICAgICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuICh4JywgXykgLT4geCA9IHgnKSBvdmVyd3JpdGVfdmFyc19yZW1haW5pbmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcHJlc2VudCA9XG4gICAgICAgICAgbWF0Y2ggbWF0Y2hzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IHZhciA6OiBhY2NfdmFyc1xuICAgICAgICAgIHwgWyAoeCwgdikgXSAtPiAoTG9jLmFubm90X3dpdGhfZHVtbXkgeCwgQWxnX2V4cHIuY29uc3QgdikgOjogYWNjX3ZhcnNcbiAgICAgICAgICB8ICh4LCBfKSA6OiBfIDo6IF8gLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJ2YXJpYWJsZSAnXCIgXiB4IF4gXCInIGlzIG92ZXJ3cml0dGVuIG1vcmUgdGhhbiBvbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgTG9jLmR1bW15ICkpXG4gICAgICAgIGluXG5cbiAgICAgICAgb3RoZXJfb3ZlcndyaXRlX3ZhcnMsIGFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcHJlc2VudClcbiAgICAgICh2YXJfb3ZlcndyaXRlLCBbXSkgdmFyc1xuICAgIHw+IGZ1biAodmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgcmV2X2FsZ192YXJzKSAtPlxuICAgIHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQsIExpc3QucmV2IHJldl9hbGdfdmFyc1xuICBpblxuICBsZXQgdmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFycyA9XG4gICAgb3ZlcndyaXRlX3ZhcnMgdmFyX292ZXJ3cml0ZSAoYXN0X2NvbXBpbC5Bc3QudmFyaWFibGVzIEAgZXh0cmFfdmFycylcbiAgaW5cbiAgbGV0IGFsZ192YXJzX2FycmF5ID1cbiAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgIChmdW4gKHgsIHYpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIEFsZ19leHByLmNvbnN0IHYpXG4gICAgICB2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkIGFsZ192YXJzX3dpdGhfcmV3cml0dGVuX3ZhcnNcbiAgICB8PiBBcnJheS5vZl9saXN0XG4gIGluXG4gIGxldCBhbGdfdmFyc19maW5kZXIgPVxuICAgIGFsZ192YXJzX2FycmF5IHw+IE5hbWVkRGVjbHMuY3JlYXRlIH5mb3JiaWRkZW46cnVsZV9uYW1lcyB8PiBmdW4gbmQgLT5cbiAgICBuZC5OYW1lZERlY2xzLmZpbmRlclxuICBpblxuXG4gIGxldCB0b2tlbl9uYW1lcyA9XG4gICAgYXN0X2NvbXBpbC5Bc3QudG9rZW5zXG4gICAgfD4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKGZ1biB4IC0+IHgsICgpKVxuICAgIHw+IE5hbWVkRGVjbHMuY3JlYXRlXG4gIGluXG4gIGxldCB0b2tlbnNfZmluZGVyID0gdG9rZW5fbmFtZXMuTmFtZWREZWNscy5maW5kZXIgaW5cblxuICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgIENvdW50ZXJzX2NvbXBpbGVyLmFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIGFnZW50c19zaWdcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCB+Y29udGFjdF9tYXApO1xuXG4gIGxldCBwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVycywgdXBkYXRlZF9hbGdfdmFycyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAocGVydHVyYmF0aW9uX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyBjb3VudGVyc19pbmZvXG4gICAgICAgICB0b2tlbnNfZmluZGVyIGFsZ192YXJzX2ZpbmRlciBjb250YWN0X21hcClcbiAgICAgIGFzdF9jb21waWwuQXN0LnBlcnR1cmJhdGlvbnMgW11cbiAgaW5cbiAgbGV0IHBlcnR1cmJhdGlvbnMgPVxuICAgIGlmIGhhc19jb3VudGVycyB0aGVuXG4gICAgICBDb3VudGVyc19jb21waWxlci5jb3VudGVyc19wZXJ0dXJiYXRpb25zIGFnZW50c19zaWdcbiAgICAgICAgWyBhc3RfY29tcGlsLkFzdC5zaWduYXR1cmVzIF1cbiAgICAgIEAgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnNcbiAgICBlbHNlXG4gICAgICBwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVyc1xuICBpblxuXG4gIGxldCBydWxlcyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIChydWxlIDogcnVsZV9pbnRlcl9yZXApIC0+XG4gICAgICAgICggcnVsZS5sYWJlbF9vcHQsXG4gICAgICAgICAgKCBhc3NlbWJsZV9ydWxlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBydWxlIGFnZW50c19zaWcgY291bnRlcnNfaW5mb1xuICAgICAgICAgICAgICB0b2tlbnNfZmluZGVyIGFsZ192YXJzX2ZpbmRlcixcbiAgICAgICAgICAgIHJ1bGUucG9zICkgKSlcbiAgICAgIGNsZWFuZWRfcnVsZXNcbiAgaW5cblxuICBsZXQgdmFyaWFibGVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX3JpZ2h0aVxuICAgICAgKGZ1biBpIChsYWIsIGV4cHIpIGFjYyAtPlxuICAgICAgICAoIGxhYixcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5tYXhfYWxsb3dlZF92YXI6KHByZWQgaSlcbiAgICAgICAgICAgIGFnZW50c19zaWcgY291bnRlcnNfaW5mbyB0b2tlbnNfZmluZGVyIGFsZ192YXJzX2ZpbmRlciBleHByIClcbiAgICAgICAgOjogYWNjKVxuICAgICAgYWxnX3ZhcnNfYXJyYXkgW11cbiAgaW5cblxuICBsZXQgb2JzZXJ2YWJsZXMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biBleHByIC0+XG4gICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyBjb3VudGVyc19pbmZvXG4gICAgICAgICAgdG9rZW5zX2ZpbmRlciBhbGdfdmFyc19maW5kZXIgZXhwcilcbiAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLm9ic2VydmFibGVzKVxuICBpblxuXG4gIGxldCBpbml0ID1cbiAgICBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyBjb3VudGVyc19pbmZvIGNvbnRhY3RfbWFwXG4gICAgICB0b2tlbnNfZmluZGVyIGFsZ192YXJzX2ZpbmRlciBhc3RfY29tcGlsLmluaXRcbiAgaW5cblxuICB7XG4gICAgYWdlbnRzX3NpZztcbiAgICBjb250YWN0X21hcDtcbiAgICBjb3VudGVyc19pbmZvO1xuICAgIHRva2VuX25hbWVzO1xuICAgIGFsZ192YXJzX2ZpbmRlcjtcbiAgICB1cGRhdGVkX2FsZ192YXJzO1xuICAgIHJlc3VsdCA9XG4gICAgICB7XG4gICAgICAgIGZpbGVuYW1lcyA9IGFzdF9jb21waWwuZmlsZW5hbWVzO1xuICAgICAgICB2YXJpYWJsZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBvYnNlcnZhYmxlcztcbiAgICAgICAgaW5pdDtcbiAgICAgICAgcGVydHVyYmF0aW9ucztcbiAgICAgICAgdm9sdW1lcyA9IGFzdF9jb21waWwudm9sdW1lcztcbiAgICAgICAgdG9rZW5zID0gYXN0X2NvbXBpbC50b2tlbnM7XG4gICAgICAgIHNpZ25hdHVyZXMgPSBhc3RfY29tcGlsLnNpZ25hdHVyZXM7XG4gICAgICAgIGNvbmZpZ3VyYXRpb25zID0gYXN0X2NvbXBpbC5jb25maWd1cmF0aW9ucztcbiAgICAgIH07XG4gIH1cbiIsInR5cGUgdG9rZW4gPVxuICB8IEVPRlxuICB8IENPTU1BXG4gIHwgRE9UXG4gIHwgT1BfUEFSXG4gIHwgQ0xfUEFSXG4gIHwgT1BfQ1VSXG4gIHwgQ0xfQ1VSXG4gIHwgT1BfQlJBXG4gIHwgQ0xfQlJBXG4gIHwgQVRcbiAgfCBTRU1JQ09MT05cbiAgfCBQTFVTXG4gIHwgTUlOVVNcbiAgfCBNVUxUXG4gIHwgRElWXG4gIHwgTU9EXG4gIHwgTUFYXG4gIHwgTUlOXG4gIHwgU0lOVVNcbiAgfCBDT1NJTlVTXG4gIHwgVEFOXG4gIHwgUE9XXG4gIHwgQUJTXG4gIHwgU1FSVFxuICB8IEVYUE9ORU5UXG4gIHwgTE9HXG4gIHwgT1JcbiAgfCBBTkRcbiAgfCBOT1RcbiAgfCBUSEVOXG4gIHwgRUxTRVxuICB8IERJRkZcbiAgfCBFUVVBTFxuICB8IFNNQUxMRVJcbiAgfCBHUkVBVEVSXG4gIHwgVFJVRVxuICB8IEZBTFNFXG4gIHwgSU5GSU5JVFlcbiAgfCBTSEFSUFxuICB8IFVOREVSU0NPUkVcbiAgfCBQSVBFXG4gIHwgUkFSXG4gIHwgTFJBUlxuICB8IExBUlxuICB8IEVNQVhcbiAgfCBUTUFYXG4gIHwgQ1BVVElNRVxuICB8IFRJTUVcbiAgfCBFVkVOVFxuICB8IE5VTExfRVZFTlRcbiAgfCBDT0xPTlxuICB8IE5FV0xJTkVcbiAgfCBCQUNLU0xBU0hcbiAgfCBTSUdOQVRVUkVcbiAgfCBUT0tFTlxuICB8IElOSVRcbiAgfCBPQlNcbiAgfCBQTE9UXG4gIHwgUEVSVFxuICB8IENPTkZJR1xuICB8IEFQUExZXG4gIHwgREVMRVRFXG4gIHwgSU5UUk9cbiAgfCBTTkFQU0hPVFxuICB8IFNUT1BcbiAgfCBGTFVYXG4gIHwgVFJBQ0tcbiAgfCBBU1NJR05cbiAgfCBQUklOVEZcbiAgfCBQTE9URU5UUllcbiAgfCBTUEVDSUVTX09GXG4gIHwgRE9cbiAgfCBSRVBFQVRcbiAgfCBBTEFSTVxuICB8IFJVTlxuICB8IExFVFxuICB8IElOVCBvZiAoaW50KVxuICB8IEZMT0FUIG9mIChmbG9hdClcbiAgfCBJRCBvZiAoc3RyaW5nKVxuICB8IExBQkVMIG9mIChzdHJpbmcpXG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG4gIHwgU1BBQ0Ugb2YgKHN0cmluZylcbiAgfCBDT01NRU5UIG9mIChzdHJpbmcpXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgbGV0IGFkZF9wb3MgZSB4ID1cbiAgICAoeCxcbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGUpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiAgbGV0IGVuZF9wb3MgPSBQYXJzaW5nLnJoc19lbmRfcG9zXG4gIGxldCBzdGFydF9wb3MgPSBQYXJzaW5nLnJoc19zdGFydF9wb3NcblxuICBsZXQgaW50ZXJuYWxfbWVtb3J5ID0gcmVmIFtdXG4gIGxldCBhZGQgeCA9IGludGVybmFsX21lbW9yeSA6PSB4IDo6ICFpbnRlcm5hbF9tZW1vcnlcbiAgbGV0IG91dHB1dCAoKSA9XG4gICAgbGV0IG8gPSBMaXN0LnJldiAhaW50ZXJuYWxfbWVtb3J5IGluIGxldCAoKSA9IGludGVybmFsX21lbW9yeSA6PSBbXSBpbiBvXG4jIDEwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAgIDAgKCogRU9GICopO1xuICAyNTcgKCogQ09NTUEgKik7XG4gIDI1OCAoKiBET1QgKik7XG4gIDI1OSAoKiBPUF9QQVIgKik7XG4gIDI2MCAoKiBDTF9QQVIgKik7XG4gIDI2MSAoKiBPUF9DVVIgKik7XG4gIDI2MiAoKiBDTF9DVVIgKik7XG4gIDI2MyAoKiBPUF9CUkEgKik7XG4gIDI2NCAoKiBDTF9CUkEgKik7XG4gIDI2NSAoKiBBVCAqKTtcbiAgMjY2ICgqIFNFTUlDT0xPTiAqKTtcbiAgMjY3ICgqIFBMVVMgKik7XG4gIDI2OCAoKiBNSU5VUyAqKTtcbiAgMjY5ICgqIE1VTFQgKik7XG4gIDI3MCAoKiBESVYgKik7XG4gIDI3MSAoKiBNT0QgKik7XG4gIDI3MiAoKiBNQVggKik7XG4gIDI3MyAoKiBNSU4gKik7XG4gIDI3NCAoKiBTSU5VUyAqKTtcbiAgMjc1ICgqIENPU0lOVVMgKik7XG4gIDI3NiAoKiBUQU4gKik7XG4gIDI3NyAoKiBQT1cgKik7XG4gIDI3OCAoKiBBQlMgKik7XG4gIDI3OSAoKiBTUVJUICopO1xuICAyODAgKCogRVhQT05FTlQgKik7XG4gIDI4MSAoKiBMT0cgKik7XG4gIDI4MiAoKiBPUiAqKTtcbiAgMjgzICgqIEFORCAqKTtcbiAgMjg0ICgqIE5PVCAqKTtcbiAgMjg1ICgqIFRIRU4gKik7XG4gIDI4NiAoKiBFTFNFICopO1xuICAyODcgKCogRElGRiAqKTtcbiAgMjg4ICgqIEVRVUFMICopO1xuICAyODkgKCogU01BTExFUiAqKTtcbiAgMjkwICgqIEdSRUFURVIgKik7XG4gIDI5MSAoKiBUUlVFICopO1xuICAyOTIgKCogRkFMU0UgKik7XG4gIDI5MyAoKiBJTkZJTklUWSAqKTtcbiAgMjk0ICgqIFNIQVJQICopO1xuICAyOTUgKCogVU5ERVJTQ09SRSAqKTtcbiAgMjk2ICgqIFBJUEUgKik7XG4gIDI5NyAoKiBSQVIgKik7XG4gIDI5OCAoKiBMUkFSICopO1xuICAyOTkgKCogTEFSICopO1xuICAzMDAgKCogRU1BWCAqKTtcbiAgMzAxICgqIFRNQVggKik7XG4gIDMwMiAoKiBDUFVUSU1FICopO1xuICAzMDMgKCogVElNRSAqKTtcbiAgMzA0ICgqIEVWRU5UICopO1xuICAzMDUgKCogTlVMTF9FVkVOVCAqKTtcbiAgMzA2ICgqIENPTE9OICopO1xuICAzMDcgKCogTkVXTElORSAqKTtcbiAgMzA4ICgqIEJBQ0tTTEFTSCAqKTtcbiAgMzA5ICgqIFNJR05BVFVSRSAqKTtcbiAgMzEwICgqIFRPS0VOICopO1xuICAzMTEgKCogSU5JVCAqKTtcbiAgMzEyICgqIE9CUyAqKTtcbiAgMzEzICgqIFBMT1QgKik7XG4gIDMxNCAoKiBQRVJUICopO1xuICAzMTUgKCogQ09ORklHICopO1xuICAzMTYgKCogQVBQTFkgKik7XG4gIDMxNyAoKiBERUxFVEUgKik7XG4gIDMxOCAoKiBJTlRSTyAqKTtcbiAgMzE5ICgqIFNOQVBTSE9UICopO1xuICAzMjAgKCogU1RPUCAqKTtcbiAgMzIxICgqIEZMVVggKik7XG4gIDMyMiAoKiBUUkFDSyAqKTtcbiAgMzIzICgqIEFTU0lHTiAqKTtcbiAgMzI0ICgqIFBSSU5URiAqKTtcbiAgMzI1ICgqIFBMT1RFTlRSWSAqKTtcbiAgMzI2ICgqIFNQRUNJRVNfT0YgKik7XG4gIDMyNyAoKiBETyAqKTtcbiAgMzI4ICgqIFJFUEVBVCAqKTtcbiAgMzI5ICgqIEFMQVJNICopO1xuICAzMzAgKCogUlVOICopO1xuICAzMzEgKCogTEVUICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAzMzIgKCogSU5UICopO1xuICAzMzMgKCogRkxPQVQgKik7XG4gIDMzNCAoKiBJRCAqKTtcbiAgMzM1ICgqIExBQkVMICopO1xuICAzMzYgKCogU1RSSU5HICopO1xuICAzMzcgKCogU1BBQ0UgKik7XG4gIDMzOCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXFxuXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXFxuXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXFxuXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXFxuXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXFxuXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzNlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXFxuXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXFxuXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXFxuXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwOFxcMDAwXFwwMTBcXDAwMFxcMDA2XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDA3XFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0N1xcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDBcXDI0OFxcMDAwXFxcblxcMDAwXFwwMDBcXDI0OVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjM4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjZcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTlcXDAwMFxcMjAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIwXFwwMDBcXDEyMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDA3XFwwMDBcXDAwNlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4MVxcMDAwXFwwOTNcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFxcblxcMTA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU1XFwwMDBcXDAwMFxcMDAwXFwxNTRcXDAwMFxcMjM3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMTk4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMlxcMDAwXFwxMjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQwXFwwMDBcXDIyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyN1xcMDAwXFwwMDBcXDAwMFxcMTY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM0XFwwMDBcXDE2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzM1xcMDAwXFxcblxcMjMxXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwxODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMFxcMTcyXFwwMDBcXDExN1xcMDAwXFwxMThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk4XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMlxcMDAwXFwwOTdcXDAwMFxcMTAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMTIyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDAwXFxcblxcMTY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMTQxXFwwMDBcXDEzOVxcMDAwXFxcblxcMTQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMDAwXFwxODdcXDAwMFxcMTg1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MlxcMDAwXFwwMDBcXDAwMFxcMjQyXFwwMDBcXDAwMFxcMDAwXFwxOTdcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAwXFxcblxcMDkyXFwwMDBcXDExOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFxcblxcMTA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTI2XFwwMDBcXDEyNVxcMDAwXFxcblxcMTI0XFwwMDBcXDEyOVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDBcXDE1N1xcMDAwXFwxNThcXDAwMFxcMTU2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNlxcMDAwXFxcblxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDE4MVxcMDAwXFwxNzhcXDAwMFxcMTc5XFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMFxcMTk2XFwwMDBcXDA5NVxcMDAwXFxcblxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjIzXFwwMDBcXDIxOVxcMDAwXFwyMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDE4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIyXFwwMDBcXDIyMFxcMDAwXFwxNjlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1M1xcMDAwXFxcblxcMTczXFwwMDBcXDE3NFxcMDAwXFwxODNcXDAwMFxcMTk1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAwXFxcblxcMjA3XFwwMDBcXDIxN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDMwXFwwMDBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDAwXFwwMDBcXDE0OFxcMDAwXFxcblxcMTQ5XFwwMDBcXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMTE2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDQxXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAyMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAzN1xcMDAwXFwwNDBcXDAwMFxcMDM5XFwwMDBcXDAyNVxcMDAwXFxcblxcMDI3XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxNlxcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDA1M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFxcblxcMDQ3XFwwMDBcXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDAwMFxcMDAwXFwwNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0NVxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDEzXFwwMDBcXDAxNlxcMDAwXFwwMThcXDAwMFxcMTMxXFwwMDBcXDA5M1xcMDAwXFwyNDJcXDAwMVxcMjQzXFwwMDFcXFxuXFwwMTVcXDAwMlxcMjMwXFwwMDFcXDIzMVxcMDAxXFwwMDhcXDAwMlxcMjA1XFwwMDFcXDIzMlxcMDAxXFwyMzNcXDAwMVxcMDI5XFwwMDJcXFxuXFwyMzRcXDAwMVxcMjM1XFwwMDFcXDAyMFxcMDAyXFwxNjJcXDAwMVxcMDk5XFwwMDFcXDEwMFxcMDAxXFwxNjNcXDAwMVxcMTc5XFwwMDFcXFxuXFwwMzhcXDAwMFxcMTgxXFwwMDBcXDAzOVxcMDAwXFwwOTRcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwyMzZcXDAwMFxcMDk3XFwwMDBcXFxuXFwwOThcXDAwMFxcMDk5XFwwMDBcXDE4NlxcMDAwXFwxODdcXDAwMFxcMjIzXFwwMDBcXDEwMlxcMDAwXFwxMDNcXDAwMFxcMTA0XFwwMDBcXFxuXFwwNDBcXDAwMFxcMTc3XFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMTQ5XFwwMDFcXDAzNlxcMDAxXFwxMjZcXDAwMFxcMDQzXFwwMDBcXFxuXFwxOTJcXDAwMFxcMDE3XFwwMDFcXDE4OFxcMDAwXFwwOTZcXDAwMVxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMzJcXDAwMFxcMDYyXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwOTJcXDAwMVxcMDkzXFwwMDFcXDExM1xcMDAwXFwxMzhcXDAwMVxcMTM5XFwwMDFcXFxuXFwxMTRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDI1MFxcMDAyXFxcblxcMTI1XFwyNTVcXDEyOVxcMjU1XFwxNDdcXDI1NVxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTE4XFwwMDdcXDAwMFxcMDAwXFwyNTJcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwNDhcXDI1NVxcMDI0XFwyNTVcXDIwOFxcMDAwXFxcblxcMTkwXFwyNTVcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDY0XFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwNzNcXDI1NVxcMjA4XFwwMDBcXDIwM1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMjU1XFxcblxcMDAyXFwwMDFcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3NlxcMDAwXFwyMzlcXDI1NVxcMjU1XFwwMDJcXDA2NVxcMDAxXFwyMDhcXDAwMFxcMDcyXFwwMDBcXDA4MFxcMDAwXFxcblxcMDAwXFwwMDBcXDAxMFxcMDExXFwxMDRcXDI1NVxcMDMzXFwwMDBcXDA2NFxcMDA5XFwwMzdcXDI1NVxcMTMyXFwwMDlcXDA2N1xcMDAwXFxcblxcMTU4XFwwMTJcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDM3XFwyNTVcXDA5MlxcMDAxXFwyMjNcXDAwMVxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIxNlxcMjU1XFwyMDhcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MlxcMDE0XFxcblxcMjAwXFwwMDlcXDAxMlxcMDEwXFwyNTFcXDAxMVxcMDg5XFwwMDBcXDAwMFxcMDAwXFwyNTFcXDAxMVxcMjQ4XFwyNTVcXDEzNVxcMDAxXFxcblxcMTYzXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDI1NVxcMjI4XFwwMTJcXDAwMFxcMDAwXFwxMThcXDAwN1xcMDAwXFwwMDBcXDE3OFxcMDAwXFxcblxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwNDJcXDAxNFxcMTM2XFwwMTRcXDEzNlxcMDE0XFwxMzZcXDAxNFxcMTM2XFwwMTRcXDEzNlxcMDE0XFxcblxcMTM2XFwwMTRcXDEzNlxcMDE0XFwxMzZcXDAxNFxcMTM2XFwwMTRcXDEzNlxcMDE0XFwwNTFcXDI1NVxcMTIxXFwyNTVcXDAxMVxcMDAxXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMDc4XFwwMDBcXDI1NVxcMDAyXFwwMTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTRcXDAwMFxcMjA4XFwwMDBcXDI0MFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMjU1XFwwOTJcXDI1NVxcMDYwXFwwMTFcXDAwMFxcMDAwXFxcblxcMjE2XFwyNTVcXDAxOVxcMDEzXFwyMzNcXDAwMVxcMDAwXFwwMDBcXDA5MlxcMjU1XFwwMDBcXDAwMFxcMDkyXFwyNTVcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDA4NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDE1N1xcMjU1XFxcblxcMjA4XFwwMDBcXDA4OVxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwODlcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFxcblxcMDgxXFwwMDFcXDE5NlxcMDAwXFwxMThcXDAwN1xcMDk2XFwwMDFcXDIwMVxcMjU1XFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwNjhcXDAwMVxcMjA4XFwwMDBcXDEzNlxcMDE0XFwxMzZcXDAxNFxcMTM2XFwwMTRcXDEzNlxcMDE0XFxcblxcMTM2XFwwMTRcXDA0MlxcMDE0XFwwNDJcXDAxNFxcMDQyXFwwMTRcXDA0MlxcMDE0XFwwNDJcXDAxNFxcMDQyXFwwMTRcXDA0MlxcMDE0XFxcblxcMDI3XFwwMDFcXDAwMFxcMDAwXFwxODJcXDAwMVxcMDAwXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwODBcXDAxMFxcMTQ4XFwwMTBcXDAwMFxcMDAwXFwxNTlcXDI1NVxcMTg2XFwwMDdcXDIwOFxcMDAwXFxcblxcMDQ0XFwwMDFcXDEyNlxcMjU1XFwwNjJcXDAwMVxcMDQyXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOFxcMDAwXFwxNTVcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDExXFxcblxcMTc5XFwwMDFcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwODlcXDAwMFxcMjA4XFwwMDBcXDA0MlxcMDE0XFxcblxcMDQyXFwwMTRcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDQyXFwwMTRcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAxNFxcMTM2XFwwMTRcXDA0MlxcMDE0XFwwNTFcXDAwMVxcMDAwXFwwMDBcXDEzNlxcMDE0XFxcblxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMjM5XFwyNTVcXDIzOVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDA0MlxcMDE0XFxcblxcMDkyXFwyNTVcXDAwM1xcMDAyXFwwNDJcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDE3NlxcMDAxXFwxOTVcXDAwMVxcMTM2XFwwMDFcXDEzNlxcMDAxXFwxODZcXDAwN1xcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwNDNcXDI1NVxcMjIyXFwwMDFcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDQyXFwwMTRcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwxMzdcXDAwM1xcMjMyXFwwMDFcXDIwOFxcMDAwXFwyNTFcXDAxMVxcMDg5XFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAyXFwxNDNcXDI1NVxcMTg4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDM4XFwwMDJcXDIwOFxcMDAwXFwwMTRcXDAwMlxcMDAwXFwwMDBcXDExOFxcMDA3XFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMDFcXDEzNlxcMDAxXFwwNDRcXDAwMVxcMTU0XFwwMDFcXDIwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwNDVcXDAwMlxcMDY0XFwwMDJcXDE1NVxcMDAyXFwwNDJcXDAxNFxcMDE5XFwwMTNcXDE3OVxcMDAxXFxcblxcMjA4XFwwMDBcXDI1MVxcMDExXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDIxMlxcMjU1XFwxNjBcXDAwMlxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwODdcXDAwMlxcMjA4XFwwMDBcXDE2NFxcMDAyXFxcblxcMDA4XFwwMDRcXDExOFxcMDA3XFwwNDJcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMTI2XFwyNTVcXDIzNlxcMDAxXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMTc1XFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNlxcMDE0XFwxOTRcXDAwMVxcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDE2OFxcMDAyXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAxNFxcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMDA1XFwwMDFcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMTI2XFwyNTVcXDA0MlxcMDE0XFwwNDJcXDAxNFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDE0M1xcMjU1XFxcblxcMDAwXFwwMDBcXDIwOFxcMDAwXFwxODFcXDAwMlxcMjA4XFwwMDBcXDE3NlxcMDAyXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMTczXFwwMDJcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwxNzRcXDAwMlxcMTg0XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNThcXDI1NVxcMjA4XFwwMDBcXDAwMFxcMDAwXFwxNDNcXDI1NVxcMDAwXFwwMDBcXDIwOFxcMDAwXFxcblxcMTU5XFwwMDJcXDE3OVxcMDAyXFwwNzBcXDAwMFxcMTg1XFwwMDJcXDE4N1xcMDAyXFwxODdcXDI1NVxcMjA4XFwwMDBcXDE4OFxcMDAyXFxcblxcMTk5XFwwMDJcXDIwMVxcMDAyXFwxMzVcXDAwMFxcMjQzXFwwMDFcXDE2NVxcMDAyXFwyMDhcXDAwMFxcMjA4XFwwMDJcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAyXFwyMTZcXDAwMlxcMDAwXFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3N1xcMjU1XFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwyNTVcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMjU1XFxcblxcMjMyXFwwMDJcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMTk2XFwyNTVcXDExNlxcMDAyXFwxNjZcXDAwMlxcMDcyXFwyNTVcXDA3MlxcMjU1XFxcblxcMTgyXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDJcXDE2N1xcMDAyXFxcblxcMTAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTUzXFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMTkyXFwwMDJcXDIzNFxcMDAyXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAyXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIzOFxcMDAyXFxcblxcMjA4XFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDk1XFwwMDhcXDI1NFxcMDA1XFwxNjVcXDAwOFxcMjE2XFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDJcXDA2M1xcMDAyXFxcblxcMDYzXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDA2XFxcblxcMTEwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDE4MlxcMDAyXFwyMTZcXDAxMFxcMDYzXFwyNTVcXDIxNlxcMDEwXFxcblxcMDg5XFwwMTJcXDE3MVxcMDAyXFwwNjNcXDI1NVxcMjI4XFwwMDFcXDIwNlxcMDAyXFwxNjFcXDAwNlxcMTI4XFwwMDFcXDA2M1xcMDAxXFxcblxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMTRcXDIxNlxcMDEwXFxcblxcMjE2XFwwMTBcXDIxMlxcMDA0XFwxMDVcXDAwNVxcMDQyXFwwMTJcXDEyNFxcMDAwXFwyMzRcXDAwMVxcMDM0XFwwMDVcXDA0MVxcMDAwXFxcblxcMTg0XFwyNTVcXDA2NlxcMDEzXFwwMDBcXDAwMFxcMTY1XFwwMDhcXDIxOFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAxNFxcMTgzXFwwMTRcXDE4M1xcMDE0XFwxODNcXDAxNFxcMTgzXFwwMTRcXDE4M1xcMDE0XFxcblxcMTgzXFwwMTRcXDE4M1xcMDE0XFwxODNcXDAxNFxcMTgzXFwwMTRcXDE4M1xcMDE0XFwxNzdcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4NFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAxXFxcblxcMDAwXFwwMDBcXDIyM1xcMDAyXFwyMzBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwNlxcMDEzXFwwMDdcXDA3MVxcMDA3XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDEzXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg0XFwyNTVcXDE4NFxcMjU1XFxcblxcMTEwXFwwMTFcXDAwMFxcMDAwXFwxOThcXDAwNFxcMDAwXFwwMDBcXDE4MlxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAyXFxcblxcMTgzXFwwMTRcXDE4M1xcMDE0XFwxODNcXDAxNFxcMTgzXFwwMTRcXDE4M1xcMDE0XFwwODlcXDAxNFxcMDg5XFwwMTRcXDA4OVxcMDE0XFxcblxcMDg5XFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMTRcXDA4OVxcMDE0XFwwMDBcXDAwMFxcMDg5XFwwMTRcXDE4MlxcMDAyXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTVcXDAwOFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwwOTVcXDAwOFxcMDAwXFwwMDBcXDA1MFxcMDA4XFxcblxcMDAwXFwwMDBcXDE2MlxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAxMFxcMjE2XFwwMTBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcMTY1XFwwMDhcXDAwMFxcMDAwXFwxNzFcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDE4XFwwMDBcXDE4MlxcMDAyXFwwODlcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDExXFxcblxcMDM4XFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDIzXFwwMDJcXDAwMFxcMDAwXFwwODlcXDAxNFxcMDg5XFwwMTRcXDEwNVxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDE0XFwwMjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMTRcXDE4M1xcMDE0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDE0XFxcblxcMDAwXFwwMDBcXDIwNlxcMDAxXFwwMDBcXDAwMFxcMTgzXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDE0XFwxODRcXDI1NVxcMTE2XFwwMDdcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NVxcMDA4XFxcblxcMDAwXFwwMDBcXDAwMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDE0XFwwMDRcXDAwN1xcMTA1XFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUwXFwwMDBcXDA0MlxcMDEyXFwwMDBcXDAwMFxcMDIzXFwwMDJcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzZcXDAwMlxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0N1xcMDAzXFwxNTBcXDAwM1xcMDU0XFwwMDRcXDEzNFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMThcXDAwMFxcMTgyXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzNlxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyOVxcMDEzXFxcblxcMTY1XFwwMDhcXDAwMFxcMDAwXFwyMDBcXDAwMlxcMDAwXFwwMDBcXDE2M1xcMDA4XFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDI0OVxcMDAwXFwwMDJcXDAwM1xcMDAwXFwwMDBcXDAxNVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDE0XFxcblxcMTgyXFwwMTNcXDAxN1xcMDAzXFwwMjNcXDAwM1xcMDAwXFwwMDBcXDA0MlxcMDEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDQxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMFxcMDAzXFwwMjVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4MlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDAwMVxcMTgxXFwwMDZcXDA4OVxcMDE0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDA4XFwyMDRcXDAwOFxcMDYxXFwyNTVcXDAxOFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0NVxcMDA2XFwwMDBcXDAwMFxcMDI4XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDAwMFxcMDAwXFwxMDVcXDAwNVxcMTgzXFwwMTRcXDAwMFxcMDAwXFxcblxcMjQ5XFwwMDBcXDAyNVxcMDAzXFwwMDBcXDAwMFxcMDE1XFwwMDNcXDA5NVxcMDA4XFwwMDBcXDAwMFxcMTgzXFwwMTRcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDdcXDIxOVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM4XFwwMDFcXDAwOFxcMDAxXFxcblxcMDAyXFwwMDNcXDEzM1xcMDA2XFwwMDBcXDAwMFxcMDE4XFwwMDBcXDA4OVxcMDE0XFwwODlcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDI1NVxcMDE4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDU0XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDdcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMjU1XFwwMDBcXDAwMFxcMDczXFwwMDZcXDA3M1xcMDA2XFxcblxcMDAyXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDdcXDAwMFxcMDAwXFwxODVcXDI1NVxcMDA4XFwwMDFcXDAyNVxcMDAzXFxcblxcMDAwXFwwMDBcXDAxOFxcMDAwXFwxMzZcXDAwOFxcMjIxXFwwMDVcXDIzNVxcMDA3XFwwMDBcXDAwMFxcMDA0XFwwMDNcXDAwNFxcMDAzXFxcblxcMTcwXFwwMDBcXDAwNFxcMDAzXFwwMDRcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzNcXDAwMVxcMDMxXFwwMDNcXDEyOVxcMDAxXFxcblxcMDM0XFwwMDNcXDI1MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDIxXFwwMDJcXDE0MVxcMDA0XFwwMzNcXDAwM1xcMjM4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwM1xcMDAwXFwwMDBcXDAzN1xcMDA4XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMVxcMDY5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMjU1XFwyMjhcXDAwMFxcMDAwXFwwMDBcXDEyM1xcMDAwXFxcblxcMDQ1XFwwMDZcXDIyMlxcMDAwXFwxMjlcXDAwMVxcMDAwXFwwMDBcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyMlxcMDAwXFxcblxcMjI0XFwwMDJcXDIyNFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjJcXDAwMFxcMjIyXFwwMDBcXDIzMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDE0NFxcMDAxXFwxNDRcXDAwMVxcMTQwXFwwMDJcXDAwMFxcMDAwXFxcblxcMTgyXFwwMDJcXDE5M1xcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTQ5XFwwMDFcXDEyM1xcMDAwXFwwNTRcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwM1xcMTQ0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwM1xcMDM1XFwwMDNcXDE0NFxcMDAxXFwyNTFcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIyNFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE0NFxcMDAxXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMVxcMTQwXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDNcXDAwMFxcMDAwXFxcblxcMTQ0XFwwMDFcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDAwXFwwMDBcXDIwMlxcMjU1XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDI1NFxcMDAwXFwwMDBcXDA2M1xcMjU0XFwxOThcXDI1NVxcMjM1XFwyNTNcXDA1MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODJcXDI1NFxcMTg2XFwyNTRcXDA4MVxcMjU0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODhcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMTA3XFwwMDFcXDE3NlxcMjU1XFxcblxcMTYxXFwwMDJcXDE2MlxcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDEyM1xcMjU1XFwxNTNcXDAwM1xcMDAwXFwwMDBcXDA1N1xcMDAzXFxcblxcMDIzXFwwMDRcXDA1NFxcMjU1XFwxNDlcXDI1NVxcMTEzXFwwMDNcXDE3OFxcMDAyXFwxODBcXDAwMlxcMDAwXFwwMDBcXDIwN1xcMDAzXFxcblxcMjI0XFwwMDNcXDE4M1xcMDAyXFwwMDBcXDAwMFxcMjEyXFwwMDJcXDEzNFxcMjU1XFwwMzBcXDAwM1xcMjE0XFwyNTVcXDI1MlxcMjU1XFxcblxcMDU1XFwyNTVcXDAwMFxcMDAwXFwxMzNcXDI1NVxcMjQ3XFwwMDJcXDE3NlxcMjU0XFwwMDBcXDAwMFxcMjA0XFwyNTRcXDIwNVxcMDAyXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDJcXDAwNFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDQxMDJcbmxldCB5eXRhYmxlID0gXCJcXDAxMVxcMDAwXFxcblxcMDE0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMjAzXFwwMDBcXDAzMlxcMDAxXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAyMlxcMDAwXFxcblxcMTMzXFwwMDBcXDA1OVxcMDAwXFwxNDZcXDAwMFxcMjI0XFwwMDBcXDEzN1xcMDAwXFwxNDFcXDAwMVxcMjA4XFwwMDBcXDEwMFxcMDAwXFxcblxcMTAxXFwwMDBcXDIxN1xcMDAxXFwyMzNcXDAwMFxcMjAyXFwwMDBcXDE3MVxcMDAwXFwyNTJcXDAwMVxcMTA1XFwwMDBcXDEwNlxcMDAwXFxcblxcMTQ1XFwwMDFcXDAwMVxcMDAwXFwxMDdcXDAwMFxcMTA4XFwwMDBcXDEwOVxcMDAwXFwxMTBcXDAwMFxcMTExXFwwMDBcXDExMlxcMDAwXFxcblxcMTE1XFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTE4XFwwMDBcXDE4OVxcMDAwXFwwMDFcXDAwMFxcMTIyXFwwMDBcXDEzN1xcMDAxXFxcblxcMDAxXFwwMDBcXDA4M1xcMDAyXFwwOTdcXDAwMVxcMTQ0XFwwMDFcXDAwMVxcMDAwXFwxMjhcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFxcblxcMTE5XFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEzNlxcMDAwXFwyNDhcXDAwMFxcMTM4XFwwMDBcXDEzOVxcMDAwXFxcblxcMTQwXFwwMDBcXDIyMlxcMDAxXFwxNDJcXDAwMFxcMTQ0XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDAxXFwwMDBcXDEyMVxcMDAwXFxcblxcMDU4XFwwMDBcXDE0N1xcMDAwXFwxNDhcXDAwMFxcMTQ5XFwwMDBcXDE1MFxcMDAwXFwxNTFcXDAwMFxcMTUyXFwwMDBcXDE1M1xcMDAwXFxcblxcMTU0XFwwMDBcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMTU3XFwwMDBcXDE1OFxcMDAwXFwwOTFcXDAwMVxcMDc4XFwwMDBcXDEwM1xcMDAyXFxcblxcMTU5XFwwMDBcXDAzM1xcMDAyXFwxNDFcXDAwMFxcMDI2XFwwMDJcXDE3NlxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDE3MlxcMDAxXFxcblxcMjAwXFwwMDFcXDAxOFxcMDAyXFwwNDVcXDAwMVxcMTkyXFwwMDFcXDA0N1xcMDAxXFwwMjRcXDAwMFxcMTYwXFwwMDBcXDIyOFxcMDAxXFxcblxcMDUxXFwwMDFcXDA0N1xcMDAyXFwwNjBcXDAwMlxcMTIwXFwwMDBcXDE3MVxcMDAwXFwwMzNcXDAwMVxcMjA2XFwwMDFcXDE3OFxcMDAwXFxcblxcMTg5XFwwMDBcXDE3OVxcMDAwXFwwNjZcXDAwMlxcMTc2XFwwMDBcXDA2N1xcMDAyXFwxMDBcXDAwMFxcMTk3XFwwMDBcXDA1NlxcMDAxXFxcblxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDA1MlxcMDAwXFwyMDVcXDAwMFxcMjA2XFwwMDBcXDIwN1xcMDAwXFxcblxcMDk4XFwwMDFcXDIwOVxcMDAwXFwwMjRcXDAwMFxcMjEwXFwwMDBcXDAwNlxcMDAwXFwwOTdcXDAwMVxcMTQ0XFwwMDBcXDIxOFxcMDAwXFxcblxcMDEyXFwwMDBcXDAwMVxcMDAwXFwyMThcXDAwMFxcMDczXFwwMDJcXDA4MFxcMDAyXFwwOTBcXDAwMlxcMjQ3XFwwMDFcXDIyOVxcMDAxXFxcblxcMTAwXFwwMDBcXDIzMlxcMDAwXFwwNThcXDAwMFxcMTkzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTYwXFwwMDFcXDIzNVxcMDAwXFxcblxcMjM3XFwwMDBcXDI1M1xcMDAxXFwwMTVcXDAwMFxcMDI3XFwwMDJcXDA5MVxcMDAxXFwyMzhcXDAwMFxcMjM5XFwwMDBcXDI0MFxcMDAwXFxcblxcMjQxXFwwMDBcXDI0MlxcMDAwXFwyNDNcXDAwMFxcMjQ0XFwwMDBcXDI0NVxcMDAwXFwyNDZcXDAwMFxcMjQ3XFwwMDBcXDI1M1xcMDAwXFxcblxcMjU0XFwwMDBcXDI1NVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMTEzXFwwMDFcXDAzNlxcMDAwXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDA2NVxcMDAxXFwwMDhcXDAwMVxcMDA5XFwwMDFcXDAwN1xcMDAwXFxcblxcMDU4XFwwMDJcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDA3XFwwMDBcXDAxMlxcMDAxXFwxODBcXDAwMFxcMDY4XFwwMDJcXDAyMlxcMDAyXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNTBcXDAwMVxcMDMyXFwwMDJcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDUyXFwwMDBcXDIyMVxcMDAwXFxcblxcMjIyXFwwMDBcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDAyNVxcMDAxXFwwMDdcXDAwMFxcMjUwXFwwMDBcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwxNDNcXDAwMFxcMDk4XFwwMDFcXDA1OFxcMDAxXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDA3NFxcMDAyXFxcblxcMTc2XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMTYwXFwwMDFcXDE5MVxcMDAxXFwwMTRcXDAwMFxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDAxXFwwMDBcXDAyNFxcMDAwXFwxNDVcXDAwMFxcMDE0XFwwMDBcXDE2MVxcMDAxXFwwNDNcXDAwMVxcMDAxXFwwMDBcXDA0NlxcMDAxXFxcblxcMjI4XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMThcXDAwMVxcMDI2XFwwMDBcXDAyN1xcMDAwXFxcblxcMDU1XFwwMDFcXDE1NlxcMDAxXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA0NFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDEyNFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTNcXDAwMVxcMTU1XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDYxXFwwMDFcXDAwMVxcMDAwXFxcblxcMDYyXFwwMDFcXDAyNFxcMDAwXFwwNjRcXDAwMVxcMTYyXFwwMDBcXDE2M1xcMDAwXFwwMDdcXDAwMFxcMDU5XFwwMDJcXDAyNVxcMDAwXFxcblxcMjIyXFwwMDFcXDE0NlxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDA3NVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwM1xcMDAwXFxcblxcMjI5XFwwMDFcXDE2OFxcMDAxXFwxNDZcXDAwMFxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMTQ2XFwwMDBcXDA3NVxcMDAyXFxcblxcMDgzXFwwMDFcXDAwMVxcMDAwXFwwOTBcXDAwMVxcMTQ2XFwwMDBcXDE0NlxcMDAwXFwwMDFcXDAwMFxcMDk0XFwwMDFcXDIwMlxcMDAwXFxcblxcMTcxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDFcXDAwMFxcMTcxXFwwMDBcXDE4NlxcMDAxXFxcblxcMTAzXFwwMDFcXDE2MVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwN1xcMDAxXFwwMzZcXDAwMFxcMjI4XFwwMDFcXDAwMVxcMDAwXFxcblxcMTEwXFwwMDFcXDAwMVxcMDAwXFwxMTFcXDAwMVxcMTEyXFwwMDFcXDAwMVxcMDAwXFwxMTRcXDAwMVxcMjAxXFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDExN1xcMDAxXFwwMDFcXDAwMFxcMTE4XFwwMDFcXDAwMVxcMDAwXFwxNzBcXDAwMFxcMTcxXFwwMDBcXDE3MVxcMDAwXFxcblxcMTcxXFwwMDBcXDEwMFxcMDAwXFwxMjJcXDAwMVxcMTcwXFwwMDBcXDEyMFxcMDAxXFwxMjFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTcwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMzZcXDAwMFxcMjI1XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjVcXDAwMVxcMjAzXFwwMDBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMjI5XFwwMDFcXDAyNFxcMDAwXFxcblxcMDE0XFwwMDFcXDAyNlxcMDAyXFwxNDZcXDAwMFxcMTcwXFwwMDBcXDE3MFxcMDAwXFwxNzBcXDAwMFxcMTMyXFwwMDFcXDEzM1xcMDAxXFxcblxcMTc2XFwwMDBcXDA5MFxcMDAxXFwxNjFcXDAwMFxcMjAyXFwwMDBcXDE3MVxcMDAwXFwxNDJcXDAwMVxcMTc2XFwwMDBcXDAwMVxcMDAwXFxcblxcMTQzXFwwMDFcXDAwMVxcMDAwXFwxNzJcXDAwMFxcMTQ3XFwwMDFcXDE3MVxcMDAwXFwyMzdcXDAwMVxcMTUwXFwwMDFcXDE1MVxcMDAxXFxcblxcMTUyXFwwMDFcXDE3M1xcMDAwXFwyMThcXDAwMFxcMTU0XFwwMDFcXDE4OVxcMDAwXFwwMDFcXDAwMFxcMTgyXFwwMDBcXDE1N1xcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxODlcXDAwMFxcMTg4XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcblxcMTc2XFwwMDBcXDE3MFxcMDAwXFwwMDFcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwwMDFcXDAwMFxcMTQ0XFwwMDBcXDEzOFxcMDAwXFxcblxcMTY2XFwwMDFcXDE3MFxcMDAwXFwxNDRcXDAwMFxcMDAxXFwwMDBcXDE2OVxcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE0NFxcMDAwXFxcblxcMTQ0XFwwMDBcXDIzOFxcMDAxXFwyMzlcXDAwMVxcMTk1XFwwMDBcXDAzOFxcMDAyXFwwMDFcXDAwMFxcMTc3XFwwMDFcXDE5M1xcMDAwXFxcblxcMTc4XFwwMDFcXDAyN1xcMDAyXFwwMDFcXDAwMFxcMDI4XFwwMDJcXDAzOVxcMDAyXFwxOTNcXDAwMFxcMjE4XFwwMDBcXDE4NVxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxODdcXDAwMVxcMDE1XFwwMDFcXDE3NlxcMDAwXFwxODlcXDAwMVxcMDk0XFwwMDJcXDE5MFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTRcXDAwMVxcMTk1XFwwMDFcXDA5MFxcMDAxXFwxOThcXDAwMVxcMDk1XFwwMDJcXDEwMFxcMDAwXFxcblxcMjAyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5OFxcMDAwXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDI0MFxcMDAxXFxcblxcMTg5XFwwMDBcXDI0MVxcMDAxXFwyMDlcXDAwMVxcMjEwXFwwMDFcXDIxMVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTZcXDAwMVxcMTc2XFwwMDBcXDE3OFxcMDAxXFxcblxcMDE5XFwwMDJcXDAyMVxcMDAxXFwyMTlcXDAwMVxcMDU0XFwwMDFcXDIyOVxcMDAwXFwyMjFcXDAwMVxcMTQ0XFwwMDBcXDIyMFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjQ0XFwwMDFcXDAwMVxcMDAwXFwyNDVcXDAwMVxcMjQ2XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTBcXDAwMVxcMTkzXFwwMDBcXDI1MVxcMDAxXFwyMDRcXDAwMVxcMDQzXFwwMDJcXDE4NVxcMDAwXFxcblxcMjU0XFwwMDFcXDE5NFxcMDAwXFwyNTVcXDAwMVxcMjI4XFwwMDFcXDIzNFxcMDAwXFwwMDFcXDAwMlxcMDAyXFwwMDJcXDAwM1xcMDAyXFxcblxcMDA0XFwwMDJcXDAwNVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNlxcMDAyXFwwMDFcXDAwMFxcMDA5XFwwMDJcXDAxMFxcMDAyXFxcblxcMDExXFwwMDJcXDAwMVxcMDAwXFwyMTFcXDAwMFxcMjEzXFwwMDBcXDIxNVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDAxMlxcMDAyXFxcblxcMDEzXFwwMDJcXDA1NVxcMDAwXFwwMTNcXDAwMVxcMDY5XFwwMDJcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMjFcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDIzXFwwMDJcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMjI5XFwwMDFcXDIzNlxcMDAxXFwwMzRcXDAwMlxcMjM3XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwODVcXDAwMlxcMDAxXFwwMDBcXDA0NFxcMDAyXFwwOTFcXDAwMlxcMDQ2XFwwMDJcXDE3OFxcMDAxXFxcblxcMDQ4XFwwMDJcXDA0OVxcMDAyXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDUyXFwwMDJcXDA1M1xcMDAyXFxcblxcMDU0XFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA1NVxcMDAyXFwwNTZcXDAwMlxcMDU3XFwwMDJcXDI1MlxcMDAwXFxcblxcMDA4XFwwMDBcXDAwOVxcMDAwXFwyMDRcXDAwMVxcMDYxXFwwMDJcXDA2MlxcMDAyXFwwNjNcXDAwMlxcMDE4XFwwMDFcXDA2NFxcMDAyXFxcblxcMDY1XFwwMDJcXDAwMVxcMDAwXFwyMzhcXDAwMVxcMjM5XFwwMDFcXDAyM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDcyXFwwMDJcXDE3OFxcMDAxXFwyMDBcXDAwMFxcMDAxXFwwMDBcXDAyM1xcMDAwXFwyMDFcXDAwMFxcMDI0XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDA4MVxcMDAyXFwwODJcXDAwMlxcMDU1XFwwMDBcXDAzNVxcMDAxXFwwNTJcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDA4NlxcMDAyXFwwODdcXDAwMlxcMDg4XFwwMDJcXDA4OVxcMDAyXFwyMDRcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDkyXFwwMDJcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTZcXDAwMFxcMTI0XFwwMDBcXDA0OVxcMDAwXFxcblxcMjQwXFwwMDFcXDA5M1xcMDAyXFwyNDFcXDAwMVxcMDAxXFwwMDBcXDA1M1xcMDAxXFwwMDFcXDAwMFxcMDQyXFwwMDFcXDEyNVxcMDAwXFxcblxcMDk2XFwwMDJcXDA5N1xcMDAyXFwxMjNcXDAwMVxcMjAwXFwwMDBcXDEwMFxcMDAyXFwxMDFcXDAwMlxcMjAxXFwwMDBcXDE2NFxcMDAwXFxcblxcMTY1XFwwMDBcXDEwMlxcMDAyXFwwNzBcXDAwMlxcMDU3XFwwMDFcXDIwMlxcMDAwXFwxMDRcXDAwMlxcMDAxXFwwMDBcXDEwNlxcMDAyXFxcblxcMDc2XFwwMDFcXDA3OFxcMDAyXFwwNzlcXDAwMlxcMDYzXFwwMDFcXDA3MFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDk1XFwwMDFcXDAwMVxcMDAwXFwwODVcXDAwMVxcMDg3XFwwMDFcXDEzOFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTM4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTAyXFwwMDFcXDAwMVxcMDAwXFxcblxcMTM4XFwwMDBcXDEzOFxcMDAwXFwwMDFcXDAwMFxcMTAxXFwwMDFcXDAwMVxcMDAwXFwyMDJcXDAwMFxcMTA1XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDIyMlxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMTA1XFwwMDFcXDA1NlxcMDAwXFxcblxcMDUwXFwwMDBcXDA0OVxcMDAwXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDIyM1xcMDAxXFwyMjRcXDAwMVxcMTc1XFwwMDFcXDEwNFxcMDAxXFxcblxcMTc2XFwwMDFcXDExOVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTM4XFwwMDBcXDEzOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDIyNVxcMDAxXFwyMjZcXDAwMVxcMjI3XFwwMDFcXDEwOVxcMDAxXFwwNzdcXDAwMVxcMDAxXFwwMDBcXDIyOFxcMDAxXFxcblxcMDc4XFwwMDFcXDEzNFxcMDAxXFwxMjhcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMzFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjE0XFwwMDFcXDEzOFxcMDAwXFxcblxcMjE1XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEzNVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEzNlxcMDAxXFxcblxcMDAxXFwwMDBcXDE0OFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA5XFwwMDBcXDIyOVxcMDAxXFxcblxcMDI0XFwwMDBcXDE0NlxcMDAxXFwwNTBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA3OVxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMjRcXDAwMFxcMTUzXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTU4XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNDBcXDAwMlxcMDU4XFwwMDFcXDA0MVxcMDAyXFwwMDFcXDAwMFxcMjA3XFwwMDFcXDIwOFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMTQ4XFwwMDFcXDAzNVxcMDAxXFwyMDBcXDAwMFxcMTMwXFwwMDFcXDE1OVxcMDAxXFwyMDFcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFxcblxcMDI3XFwwMDBcXDE2NFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE2NVxcMDAxXFwwMDFcXDAwMFxcMTY3XFwwMDFcXDAzNlxcMDAwXFwwMDFcXDAwMFxcMTEwXFwwMDBcXDE4MFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMjNcXDAwMVxcMjI0XFwwMDFcXDIwMlxcMDAwXFwwMDFcXDAwMFxcMDM2XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI0OFxcMDAxXFwyNDlcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE4MVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwNVxcMDAwXFxcblxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMTFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMDY2XFwwMDFcXDA2N1xcMDAxXFxcblxcMTgyXFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMTkzXFwwMDFcXDE5NlxcMDAxXFwwNDJcXDAwMlxcMjM3XFwwMDFcXDE5OVxcMDAxXFxcblxcMTA1XFwwMDBcXDEwNVxcMDAwXFwyMThcXDAwMVxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFxcblxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMDAxXFwwMDBcXDIxMlxcMDAxXFwxMzBcXDAwMVxcMTA1XFwwMDBcXDEwNVxcMDAwXFxcblxcMTA1XFwwMDBcXDAwMFxcMDAyXFwwMDdcXDAwMlxcMDE0XFwwMDJcXDAxNlxcMDAyXFwwMTdcXDAwMlxcMDI0XFwwMDJcXDA3NlxcMDAyXFxcblxcMTA1XFwwMDBcXDAzNVxcMDAyXFwwMDFcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwNVxcMDAwXFxcblxcMTA1XFwwMDBcXDEwNVxcMDAwXFwyMzhcXDAwMVxcMjM5XFwwMDFcXDAwMVxcMDAwXFwwMzZcXDAwMlxcMDM3XFwwMDJcXDAwMVxcMDAwXFxcblxcMDUwXFwwMDJcXDEzNlxcMDAwXFwwMjVcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDA0NVxcMDAyXFxcblxcMDMwXFwwMDJcXDEwNVxcMDAwXFwwMzFcXDAwMlxcMDUxXFwwMDJcXDEwNVxcMDAwXFwxMDVcXDAwMFxcMTA1XFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMTJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwwMDFcXDAwMFxcMDcxXFwwMDJcXDA5OVxcMDAyXFxcblxcMjQwXFwwMDFcXDA3N1xcMDAyXFwyNDFcXDAwMVxcMTA1XFwwMDJcXDA4NFxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwwMDFcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNTlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDE2NFxcMDAwXFwxNjVcXDAwMFxcMDk4XFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwNlxcMDAwXFxcblxcMTA5XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFxcblxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMTVcXDAwMFxcMDAxXFwwMDBcXDA2M1xcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFxcblxcMTY5XFwwMDBcXDE0N1xcMDAwXFwyMDVcXDAwMFxcMDAxXFwwMDBcXDAyNlxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDAwMVxcMDAwXFxcblxcMDE3XFwwMDBcXDEwOVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTNcXDAwMFxcMjQ5XFwwMDBcXDAwMVxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwODhcXDAwMVxcMDc0XFwwMDFcXDEyM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMjZcXDAwMFxcMDM3XFwwMDFcXDIwNFxcMDAwXFwxMDhcXDAwMVxcMjMwXFwwMDBcXDE4M1xcMDAxXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxODRcXDAwMVxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTk5XFwwMDBcXDE0MFxcMDAxXFwxMjdcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDE3M1xcMDAxXFwyNTFcXDAwMFxcMDAwXFwwMDBcXDE5N1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTEwXFwwMDBcXDE3NFxcMDAxXFwwMDBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAxXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwNDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMzlcXDAwMVxcMTY0XFwwMDBcXDE2NVxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAwXFxcblxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFxcblxcMTExXFwwMDBcXDEzNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMFxcMTM2XFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMFxcMTM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDExMlxcMDAwXFwwODlcXDAwMVxcMDAwXFwwMDBcXDEyOVxcMDAxXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFxcblxcMDQ2XFwwMDBcXDEzNlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFxcblxcMTEyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFxcblxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFxcblxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFxcblxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDExNFxcMDAwXFxcblxcMTE0XFwwMDBcXDExNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNFxcMDAwXFxcblxcMTE0XFwwMDBcXDExNVxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFxcblxcMTE0XFwwMDBcXDExNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFxcblxcMTE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE0XFwwMDBcXDExNFxcMDAwXFwxMTRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFxcblxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgwXFwwMDBcXDAwMFxcMDAwXFwxMTVcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFxcblxcMTE1XFwwMDBcXDExNVxcMDAwXFwxMTVcXDAwMFxcMTE1XFwwMDBcXDExNVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMTE1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNVxcMDAwXFxcblxcMTE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwyMTBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFxcblxcMDY3XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcblxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDgwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwxNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMTI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyOFxcMDAwXFwwMDFcXDAwMFxcMTUxXFwwMDBcXDE1MVxcMDAwXFwxNTFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMTUxXFwwMDBcXDE1MVxcMDAwXFwxNTFcXDAwMFxcMTUxXFwwMDBcXDE1MVxcMDAwXFwxNTFcXDAwMFxcMTUxXFwwMDBcXDAyM1xcMDAwXFxcblxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFxcblxcMTMwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXDAwMFxcMDAwXFxcblxcMTMwXFwwMDBcXDE1MVxcMDAwXFwxNTFcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFxcblxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDYxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY4XFwwMDBcXDAwMFxcMDAwXFwyMTBcXDAwMFxcMjEwXFwwMDBcXDIxMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTBcXDAwMFxcMjEwXFwwMDBcXDIxMFxcMDAwXFwyMTBcXDAwMFxcMjEwXFwwMDBcXDIxMFxcMDAwXFxcblxcMjEwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwOFxcMDAwXFwyMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEwXFwwMDBcXDIxMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFxcblxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA4XFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg3XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFxcblxcMDI2XFwwMDBcXDAyN1xcMDAwXFwxNTJcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMVxcMDAwXFxcblxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE2MVxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFxcblxcMTUyXFwwMDBcXDE1MlxcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMTUyXFwwMDBcXDE1MlxcMDAwXFxcblxcMTUyXFwwMDBcXDE1MlxcMDAwXFwxNTJcXDAwMFxcMTUyXFwwMDBcXDIxOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDE2MVxcMDAwXFxcblxcMTYxXFwwMDBcXDE2MVxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXDE1MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MVxcMDAwXFwxNjFcXDAwMFxcMTYxXFwwMDBcXDE2MVxcMDAwXFxcblxcMTYxXFwwMDBcXDE2MVxcMDAwXFwxNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMFxcMjE4XFwwMDBcXDIxOFxcMDAwXFwxNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjFcXDAwMFxcMTYxXFwwMDBcXDIxOFxcMDAwXFxcblxcMjE4XFwwMDBcXDIxOFxcMDAwXFwyMThcXDAwMFxcMjE4XFwwMDBcXDIxOFxcMDAwXFwyMThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjE4XFwwMDBcXDIxOFxcMDAwXFwwMDFcXDAwMFxcMTY4XFwwMDBcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMTY4XFwwMDBcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTY4XFwwMDBcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTY4XFwwMDBcXDA2OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMTY4XFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcblxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFxcblxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwxODRcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcblxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFxcblxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcblxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFxcblxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcblxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFxcblxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA4OVxcMDAwXFxcblxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFxcblxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFxcblxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDEwNlxcMDAxXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDY3XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcblxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA4OVxcMDAwXFxcblxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjE0XFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcMjE0XFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDBcXDIxNFxcMDAwXFxcblxcMjE0XFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcMjE0XFwwMDBcXDIxNFxcMDAwXFxcblxcMjE0XFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwyMTRcXDAwMFxcMjE0XFwwMDBcXDIxNFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDIwN1xcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFxcblxcMDUxXFwwMDBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA1NVxcMDAwXFwwOTRcXDAwMVxcMTIyXFwwMDBcXDAxOVxcMDAwXFxcblxcMDE5XFwwMDBcXDE5M1xcMDAxXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTVcXDAwMVxcMDI0XFwwMDBcXDAyNVxcMDAwXFxcblxcMDk5XFwwMDFcXDAwMFxcMDAwXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFxcblxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDA5MlxcMDAxXFxcblxcMDAwXFwwMDBcXDA2M1xcMDAyXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFxcblxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwMDNcXDAwMVxcMDU2XFwwMDBcXDA1N1xcMDAwXFxcblxcMDU4XFwwMDBcXDAwMFxcMDAxXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDA0MFxcMDAxXFxcblxcMDA0XFwwMDFcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwwMjNcXDAwMVxcMDI4XFwwMDFcXDEwMVxcMDAyXFxcblxcMDgyXFwwMDBcXDAwNlxcMDAyXFwwMTBcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDE0MFxcMDAxXFxcblxcMTY5XFwwMDFcXDAzMlxcMDAxXFwyMjRcXDAwMFxcMTYyXFwwMDFcXDIyNlxcMDAwXFwwMDJcXDAwMVxcMDk2XFwwMDBcXDAzOFxcMDAxXFxcblxcMjMwXFwwMDBcXDAxN1xcMDAyXFwwMzZcXDAwMlxcMDUyXFwwMDFcXDEwMlxcMDAwXFwyMDlcXDAwMFxcMTc3XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMTA2XFwwMDBcXDAwMlxcMDAxXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDIzNVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwNFxcMDAxXFwxMTlcXDAwMFxcMTIwXFwwMDBcXDEyMVxcMDAwXFxcblxcMDc4XFwwMDFcXDEyM1xcMDAwXFwwMDJcXDAwMVxcMTI1XFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDEzMVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDUxXFwwMDJcXDA1N1xcMDAyXFwwNzFcXDAwMlxcMjA5XFwwMDFcXDA3OFxcMDAxXFxcblxcMTQwXFwwMDBcXDE0MFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAwXFwwMDFcXDE0NVxcMDAwXFxcblxcMTQ3XFwwMDBcXDIxNlxcMDAxXFwwMDBcXDAwMVxcMDc2XFwwMDFcXDA5NFxcMDAxXFwxNDhcXDAwMFxcMTQ5XFwwMDBcXDE1MFxcMDAwXFxcblxcMTUxXFwwMDBcXDE1MlxcMDAwXFwxNTNcXDAwMFxcMTU0XFwwMDBcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMTU3XFwwMDBcXDE2MVxcMDAwXFxcblxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjRcXDAwMFxcMTY1XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFxcblxcMDQ2XFwwMDFcXDA3OFxcMDAxXFwxNzJcXDAwMFxcMTczXFwwMDBcXDI1M1xcMDAwXFwxNzVcXDAwMFxcMTc2XFwwMDBcXDA1MVxcMDAxXFxcblxcMDAwXFwwMDFcXDE3OVxcMDAwXFwxODBcXDAwMFxcMDUxXFwwMDFcXDE4MlxcMDAwXFwwNzhcXDAwMVxcMDc2XFwwMDFcXDI1NFxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMlxcMDAxXFwyMjlcXDAwMFxcMDAxXFwwMDFcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMDc4XFwwMDFcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDE5NVxcMDAwXFwxOTZcXDAwMFxcMDM3XFwwMDFcXDE5OFxcMDAwXFwwNTFcXDAwMVxcMDc4XFwwMDFcXDIwMVxcMDAwXFxcblxcMjAyXFwwMDBcXDIwM1xcMDAwXFwwMDBcXDAwMVxcMDc4XFwwMDFcXDAwNFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAxMlxcMDAxXFxcblxcMjA3XFwwMDBcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDhcXDAwMVxcMjE2XFwwMDBcXDIxN1xcMDAwXFxcblxcMDMyXFwwMDFcXDAwMlxcMDAxXFwwMTBcXDAwMVxcMDE0XFwwMDFcXDA3OFxcMDAxXFwyMjNcXDAwMFxcMDM4XFwwMDFcXDIyNVxcMDAwXFxcblxcMDM4XFwwMDFcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMjlcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjM0XFwwMDBcXDExMVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA4MFxcMDAxXFwyMzlcXDAwMFxcMjQwXFwwMDBcXDA2NFxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwxODlcXDAwMVxcMTEwXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMjQ4XFwwMDBcXDAwMFxcMDAwXFxcblxcMjUwXFwwMDBcXDAwMlxcMDAxXFwyNTJcXDAwMFxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwNTFcXDAwMVxcMDc4XFwwMDFcXDA0MFxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwN1xcMDAxXFwwNzhcXDAwMVxcMDc4XFwwMDFcXDAwNFxcMDAxXFxcblxcMDc4XFwwMDFcXDEzM1xcMDAxXFwwMDBcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMTVcXDAwMVxcMDA0XFwwMDFcXDA3NlxcMDAxXFxcblxcMDE4XFwwMDFcXDAwMFxcMDAxXFwwMjNcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwMDRcXDAwMVxcMDI0XFwwMDFcXDAwNFxcMDAxXFxcblxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMDRcXDAwMVxcMDEwXFwwMDFcXDE1NFxcMDAxXFxcblxcMDM0XFwwMDFcXDA3OFxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA0MFxcMDAxXFwwNzhcXDAwMVxcMDM4XFwwMDFcXDAwMlxcMDAxXFxcblxcMDQyXFwwMDFcXDAwNFxcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDAwNFxcMDAxXFwwNDdcXDAwMVxcMTcwXFwwMDFcXDAxMFxcMDAxXFxcblxcMDA0XFwwMDFcXDA1MVxcMDAxXFwwMTBcXDAwMVxcMDUzXFwwMDFcXDAwMFxcMDAwXFwwMDRcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDA2MVxcMDAxXFwwNjFcXDAwMVxcMDEwXFwwMDFcXDA1OVxcMDAxXFwwNjBcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMlxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAzNFxcMDAxXFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwNzZcXDAwMVxcMDcyXFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDc4XFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAxMlxcMDAxXFwwNzJcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDg4XFwwMDFcXDA4OVxcMDAxXFxcblxcMDA0XFwwMDFcXDA5NFxcMDAxXFwwMTVcXDAwMVxcMDcyXFwwMDFcXDA3MlxcMDAxXFwwOTVcXDAwMVxcMDEwXFwwMDFcXDA3OFxcMDAxXFxcblxcMDk4XFwwMDFcXDA3MlxcMDAxXFwwMjdcXDAwMVxcMTAxXFwwMDFcXDA4MFxcMDAxXFwwMDJcXDAwMVxcMTA0XFwwMDFcXDEwNVxcMDAxXFxcblxcMTA2XFwwMDFcXDAyNlxcMDAxXFwxMTBcXDAwMVxcMTA5XFwwMDFcXDAwNFxcMDAxXFwwNzJcXDAwMVxcMDc4XFwwMDFcXDExM1xcMDAxXFxcblxcMDcyXFwwMDFcXDAzN1xcMDAxXFwwMTBcXDAwMVxcMTU4XFwwMDFcXDA3MlxcMDAxXFwwODBcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDA3MlxcMDAxXFwwMDBcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFxcblxcMTMwXFwwMDFcXDA4MFxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDEzNFxcMDAxXFwxMzVcXDAwMVxcMTM2XFwwMDFcXDAwOVxcMDAxXFxcblxcMDEwXFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDczXFwwMDFcXDAwNlxcMDAxXFwwNzhcXDAwMVxcMTQ0XFwwMDFcXDAwNFxcMDAxXFxcblxcMTQ2XFwwMDFcXDA3NlxcMDAxXFwwNzhcXDAwMVxcMDc4XFwwMDFcXDAxNFxcMDAxXFwwMTBcXDAwMVxcMTU0XFwwMDFcXDE1M1xcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwxNTZcXDAwMVxcMDc4XFwwMDFcXDA3MlxcMDAxXFwxNTlcXDAwMVxcMDA2XFwwMDFcXDE2MVxcMDAxXFxcblxcMDM4XFwwMDFcXDAwMFxcMDAwXFwxNjRcXDAwMVxcMTY1XFwwMDFcXDE2OVxcMDAxXFwxNjdcXDAwMVxcMDE0XFwwMDFcXDE3MVxcMDAxXFxcblxcMTcxXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA4MFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDA3NlxcMDAxXFxcblxcMDcyXFwwMDFcXDA3OFxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwwMTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwxOTFcXDAwMVxcMTg5XFwwMDFcXDE5M1xcMDAxXFxcblxcMjUxXFwwMDFcXDAwMFxcMDAxXFwxOTZcXDAwMVxcMDAwXFwwMDFcXDAzNFxcMDAxXFwxOTlcXDAwMVxcMDcyXFwwMDFcXDE5OFxcMDAxXFxcblxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjA1XFwwMDFcXDA3NVxcMDAxXFwyMDdcXDAwMVxcMjA4XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyMTJcXDAwMVxcMDcyXFwwMDFcXDIxNFxcMDAxXFwyMTVcXDAwMVxcMDEzXFwwMDJcXDEwOVxcMDAwXFxcblxcMjE4XFwwMDFcXDExMVxcMDAwXFwyMjBcXDAwMVxcMDM4XFwwMDFcXDA0M1xcMDAxXFwyMjNcXDAwMVxcMjI0XFwwMDFcXDIyNVxcMDAxXFxcblxcMjI2XFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDIzMFxcMDAxXFwwMDJcXDAwMVxcMjMyXFwwMDFcXDIzM1xcMDAxXFxcblxcMjM0XFwwMDFcXDAxMlxcMDAxXFwxMjhcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDI0MVxcMDAxXFxcblxcMjQyXFwwMDFcXDAwNFxcMDAxXFwwNDNcXDAwMVxcMDQ2XFwwMDJcXDA1MVxcMDAxXFwwNzZcXDAwMVxcMDUxXFwwMDFcXDA3OFxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwyNTJcXDAwMVxcMDA0XFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDAwXFwwMDJcXDAwN1xcMDAxXFxcblxcMDA2XFwwMDFcXDAxMFxcMDAxXFwwNTFcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMDdcXDAwMlxcMDAyXFwwMDFcXDAwMFxcMDAxXFxcblxcMDE0XFwwMDFcXDAwMlxcMDAxXFwwNjVcXDAwMlxcMDM4XFwwMDFcXDAxNFxcMDAyXFwwNzJcXDAwMlxcMDE2XFwwMDJcXDAxN1xcMDAyXFxcblxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwODFcXDAwMVxcMDgyXFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDI0XFwwMDJcXDAyNVxcMDAyXFxcblxcMDI2XFwwMDJcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDAyMVxcMDAxXFxcblxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMzZcXDAwMlxcMDM3XFwwMDJcXDAzOFxcMDAyXFwwMzlcXDAwMlxcMDI5XFwwMDFcXDA0MVxcMDAyXFxcblxcMDQyXFwwMDJcXDA3NlxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAwNlxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA3NlxcMDAxXFxcblxcMDUwXFwwMDJcXDA1MVxcMDAyXFwwMDBcXDAwMVxcMDc4XFwwMDFcXDAxNFxcMDAxXFwwMDNcXDAwMVxcMDcxXFwwMDFcXDAwM1xcMDAxXFxcblxcMDA0XFwwMDFcXDA1OVxcMDAyXFwwNjBcXDAwMlxcMDc4XFwwMDFcXDIxMFxcMDAwXFwwMTBcXDAwMVxcMDAwXFwwMDBcXDA3MlxcMDAxXFxcblxcMDAyXFwwMDFcXDA2N1xcMDAyXFwwNjhcXDAwMlxcMDY5XFwwMDJcXDA3MFxcMDAyXFwwNzFcXDAwMlxcMDc4XFwwMDFcXDA4MFxcMDAxXFxcblxcMDc0XFwwMDJcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwNFxcMDAxXFxcblxcMDc2XFwwMDFcXDA4M1xcMDAyXFwwNzhcXDAwMVxcMDc2XFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDAyXFwwMDFcXDAwOVxcMDAxXFxcblxcMDkwXFwwMDJcXDA5MVxcMDAyXFwwNDBcXDAwMVxcMDAwXFwwMDFcXDA5NFxcMDAyXFwwOTVcXDAwMlxcMDAzXFwwMDFcXDAxMVxcMDAxXFxcblxcMDEyXFwwMDFcXDA5OVxcMDAyXFwwNDhcXDAwMlxcMDA0XFwwMDFcXDA1MFxcMDAxXFwxMDNcXDAwMlxcMDQwXFwwMDFcXDEwNVxcMDAyXFxcblxcMDc4XFwwMDFcXDA1NVxcMDAyXFwwNTZcXDAwMlxcMDQwXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFxcblxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDgwXFwwMDFcXDA3MlxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXDAwNFxcMDAxXFwwMDFcXDAwMVxcMDI4XFwwMDFcXDAwN1xcMDAxXFxcblxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwMDZcXDAwMVxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMTRcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDA3OFxcMDAxXFxcblxcMDA0XFwwMDFcXDA3OFxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDA1XFwwMDFcXDAwNVxcMDAxXFxcblxcMDA3XFwwMDFcXDA1NVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMzhcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMDE1XFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDIxXFwwMDFcXDAzOFxcMDAxXFxcblxcMDAzXFwwMDFcXDAxMFxcMDAxXFwwODBcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwODNcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDA1XFwwMDFcXDA3MlxcMDAxXFxcblxcMDA3XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAxMFxcMDAxXFwwMDBcXDAwMVxcMDc4XFwwMDFcXDA3MlxcMDAxXFxcblxcMDAzXFwwMDFcXDEwM1xcMDAxXFwwNzhcXDAwMVxcMDUwXFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDA3OFxcMDAxXFxcblxcMDAyXFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDAzXFwwMDFcXDA1MFxcMDAxXFxcblxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwMDJcXDAwMVxcMDA0XFwwMDFcXDA3NVxcMDAxXFwwMDBcXDAwMVxcMDM0XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDBcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFwwNDBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFxcblxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDMyXFwwMDFcXDA1MFxcMDAxXFxcblxcMTUwXFwwMDFcXDE1MVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDNcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA3OFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDM4XFwwMDFcXDAwMFxcMDAxXFwwNTBcXDAwMVxcMDAyXFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFxcblxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFxcblxcMDcwXFwwMDFcXDAwNFxcMDAxXFwwNzJcXDAwMVxcMDMwXFwwMDFcXDA3OFxcMDAxXFwwNzVcXDAwMVxcMDAwXFwwMDBcXDAwM1xcMDAxXFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA1MFxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc4XFwwMDFcXDIxMFxcMDAxXFwyMTFcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAwOVxcMDAxXFxcblxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMTVcXDAwMVxcMDE2XFwwMDFcXDAxN1xcMDAxXFxcblxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDUwXFwwMDFcXDA1MFxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFxcblxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFxcblxcMDc0XFwwMDFcXDA3NVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMFxcMDExXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMTVcXDAwMVxcMjU0XFwwMDBcXDI1NVxcMDAwXFxcblxcMDA2XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDA0XFwwMDFcXDA3OFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwNFxcMDAxXFxcblxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMDNcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDAzXFwwMDFcXDAwNlxcMDAxXFwwMDFcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDAxMFxcMDAxXFwwMTRcXDAwMVxcMDE0XFwwMDFcXDAwNVxcMDAxXFwwMDRcXDAwMVxcMDMyXFwwMDFcXDA3NlxcMDAxXFxcblxcMDUwXFwwMDFcXDAwNlxcMDAxXFwwMDJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAyOFxcMDAxXFwwMDdcXDAwMVxcMDA2XFwwMDFcXDAwMlxcMDAxXFxcblxcMDA1XFwwMDFcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwOFxcMDAxXFxcblxcMDMyXFwwMDFcXDA3NVxcMDAxXFwwMzJcXDAwMVxcMDA0XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMzJcXDAwMVxcMDA3XFwwMDFcXDAwNlxcMDAxXFxcblxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwNzhcXDAwMVxcMDA2XFwwMDFcXDA3OFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwODBcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc4XFwwMDFcXDA0M1xcMDAxXFwwMDRcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwMzRcXDAwMVxcMDc4XFwwMDFcXDA3MlxcMDAxXFxcblxcMDUwXFwwMDFcXDAwM1xcMDAxXFwwMDJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDRcXDAwMVxcMDc4XFwwMDFcXDAwNFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDM0XFwwMDFcXDAwNlxcMDAxXFwwNzJcXDAwMVxcMDMyXFwwMDFcXDAwNlxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwNlxcMDAxXFxcblxcMDA4XFwwMDFcXDA3NVxcMDAxXFwwMDhcXDAwMVxcMDc2XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMFxcMTU4XFwwMDBcXDAwMlxcMDAxXFxcblxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMjJcXDAwMVxcMDA2XFwwMDFcXDA0MVxcMDAwXFxcblxcMDExXFwwMDFcXDAxMlxcMDAxXFwxMzVcXDAwMFxcMjExXFwwMDBcXDExOFxcMDAwXFwwNDBcXDAwMVxcMTM5XFwwMDBcXDE1MFxcMDAxXFxcblxcMDI2XFwwMDFcXDAyN1xcMDAxXFwxNTFcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMTE2XFwwMDBcXDA5NFxcMDAxXFwwNDRcXDAwMFxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDE0MVxcMDAxXFwxNTlcXDAwMFxcMjU1XFwyNTVcXDE2NlxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDUwXFwwMDFcXDE0MlxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjA1XFwwMDBcXDIwNlxcMDAwXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjEzXFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMFxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFxcblxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFxcblxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDA4MVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFxcblxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFxcblxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAxMFxcMDAxXFxcblxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDAwMFxcMDAwXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcMDM5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFxcblxcMjU1XFwyNTVcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDc2XFwwMDFcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDAwMFxcMDAwXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDBcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFxcblxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFxcblxcMjU1XFwyNTVcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFxcblxcMDEyXFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFxcblxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA3NFxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAwXFwwMDBcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFxcblxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDI1NVxcMjU1XFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFxcblxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFxcblxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFxcblxcMDcyXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDc1XFwwMDFcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFxcblxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyOVxcMDAxXFwwNzFcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDc1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAwXFxcblxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDEwXFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDEwXFwwMDFcXDAwMlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFxcblxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDc4XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFxcblxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFxcblxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMDE1XFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFxcblxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODFcXDAwMVxcMDgyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDAwMlxcMDAxXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFxcblxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFxcblxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFxcblxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNzhcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDAyOFxcMDAxXFxcblxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFxcblxcMDAzXFwwMDFcXDA3M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFxcblxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFxcblxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBFT0ZcXDAwMFxcXG4gIENPTU1BXFwwMDBcXFxuICBET1RcXDAwMFxcXG4gIE9QX1BBUlxcMDAwXFxcbiAgQ0xfUEFSXFwwMDBcXFxuICBPUF9DVVJcXDAwMFxcXG4gIENMX0NVUlxcMDAwXFxcbiAgT1BfQlJBXFwwMDBcXFxuICBDTF9CUkFcXDAwMFxcXG4gIEFUXFwwMDBcXFxuICBTRU1JQ09MT05cXDAwMFxcXG4gIFBMVVNcXDAwMFxcXG4gIE1JTlVTXFwwMDBcXFxuICBNVUxUXFwwMDBcXFxuICBESVZcXDAwMFxcXG4gIE1PRFxcMDAwXFxcbiAgTUFYXFwwMDBcXFxuICBNSU5cXDAwMFxcXG4gIFNJTlVTXFwwMDBcXFxuICBDT1NJTlVTXFwwMDBcXFxuICBUQU5cXDAwMFxcXG4gIFBPV1xcMDAwXFxcbiAgQUJTXFwwMDBcXFxuICBTUVJUXFwwMDBcXFxuICBFWFBPTkVOVFxcMDAwXFxcbiAgTE9HXFwwMDBcXFxuICBPUlxcMDAwXFxcbiAgQU5EXFwwMDBcXFxuICBOT1RcXDAwMFxcXG4gIFRIRU5cXDAwMFxcXG4gIEVMU0VcXDAwMFxcXG4gIERJRkZcXDAwMFxcXG4gIEVRVUFMXFwwMDBcXFxuICBTTUFMTEVSXFwwMDBcXFxuICBHUkVBVEVSXFwwMDBcXFxuICBUUlVFXFwwMDBcXFxuICBGQUxTRVxcMDAwXFxcbiAgSU5GSU5JVFlcXDAwMFxcXG4gIFNIQVJQXFwwMDBcXFxuICBVTkRFUlNDT1JFXFwwMDBcXFxuICBQSVBFXFwwMDBcXFxuICBSQVJcXDAwMFxcXG4gIExSQVJcXDAwMFxcXG4gIExBUlxcMDAwXFxcbiAgRU1BWFxcMDAwXFxcbiAgVE1BWFxcMDAwXFxcbiAgQ1BVVElNRVxcMDAwXFxcbiAgVElNRVxcMDAwXFxcbiAgRVZFTlRcXDAwMFxcXG4gIE5VTExfRVZFTlRcXDAwMFxcXG4gIENPTE9OXFwwMDBcXFxuICBORVdMSU5FXFwwMDBcXFxuICBCQUNLU0xBU0hcXDAwMFxcXG4gIFNJR05BVFVSRVxcMDAwXFxcbiAgVE9LRU5cXDAwMFxcXG4gIElOSVRcXDAwMFxcXG4gIE9CU1xcMDAwXFxcbiAgUExPVFxcMDAwXFxcbiAgUEVSVFxcMDAwXFxcbiAgQ09ORklHXFwwMDBcXFxuICBBUFBMWVxcMDAwXFxcbiAgREVMRVRFXFwwMDBcXFxuICBJTlRST1xcMDAwXFxcbiAgU05BUFNIT1RcXDAwMFxcXG4gIFNUT1BcXDAwMFxcXG4gIEZMVVhcXDAwMFxcXG4gIFRSQUNLXFwwMDBcXFxuICBBU1NJR05cXDAwMFxcXG4gIFBSSU5URlxcMDAwXFxcbiAgUExPVEVOVFJZXFwwMDBcXFxuICBTUEVDSUVTX09GXFwwMDBcXFxuICBET1xcMDAwXFxcbiAgUkVQRUFUXFwwMDBcXFxuICBBTEFSTVxcMDAwXFxcbiAgUlVOXFwwMDBcXFxuICBMRVRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBJTlRcXDAwMFxcXG4gIEZMT0FUXFwwMDBcXFxuICBJRFxcMDAwXFxcbiAgTEFCRUxcXDAwMFxcXG4gIFNUUklOR1xcMDAwXFxcbiAgU1BBQ0VcXDAwMFxcXG4gIENPTU1FTlRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBbXSApXG4jIDE2NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXCJcXG5cIjo6XzIgKVxuIyAxNjU1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIF8xOjpfMiApXG4jIDE2NjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMTo6XzIgKVxuIyAxNjcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBOYnIuRiBpbmZpbml0eSApXG4jIDE2NzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBmbG9hdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIE5ici5GIF8xIClcbiMgMTY4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBOYnIuSSBfMSApXG4jIDE2OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX0ZSRUUgKVxuIyAxNjk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgKExLYXBwYS5MTktfVkFMVUUgKF8xLCgpKSkgKVxuIyAxNzA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX1NPTUUgKVxuIyAxNzEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKExLYXBwYS5MTktfVFlQRSAoKF8xLHJoc19wb3MgMSksKF81LHJoc19wb3MgNSkpKSApXG4jIDE3MjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX0FOWSApXG4jIDE3MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIHN0YXRlXCIpKSApXG4jIDE3MzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAxNzQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMyApXG4jIDE3NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgNzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF81IClcbiMgMTc2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIE5vbmUgKVxuIyAxNzY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgTm9uZSApXG4jIDE3NzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IGludCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChTb21lIChfMywgcmhzX3BvcyAzKSkgKVxuIyAxNzg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgKVxuIyAxNzkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgOTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAoIGFkZF9wb3MgMSAoU29tZSBfMSkgKVxuIyAxNzk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIE5vbmUgKVxuIyAxODA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbXzFdIClcbiMgMTgxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMyApXG4jIDE4MjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzUgKVxuIyAxODMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBOb25lIClcbiMgMTgzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChfMywgcmhzX3BvcyAzKSApXG4jIDE4NDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIClcbiMgMTg1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzIsIF8zKSApXG4jIDE4NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9saW5rKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgbGlua2luZyBzdGF0ZSBvciBtaXNzaW5nICddJ1wiLHJoc19wb3MgMikpIClcbiMgMTg3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2xpbmspKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZXMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSwgXzIpIClcbiMgMTg4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2ludGVybmFsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBpbnRlcm5hbCBzdGF0ZSBvciBtaXNzaW5nICd9J1wiLHJoc19wb3MgMykpIClcbiMgMTg4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2ludGVybmFsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF81LCByaHNfcG9zIDUpIClcbiMgMTg5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKC0gXzcsIHJoc19wb3MgNykgKVxuIyAxOTA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKC0gXzUsIHJoc19wb3MgNSkgKVxuIyAxOTE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKF8xKVxuIyAxOTIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ppbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKC1fMylcbiMgMTkzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd6aW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ppbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ0VRIF8zLHJoc19wb3MgMykgKVxuIyAxOTM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnemludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ0dURSBfNSxyaHNfcG9zIDUpIClcbiMgMTk0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ppbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ0xURSBfNSxyaHNfcG9zIDUpIClcbiMgMTk1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNWQVIgXzMscmhzX3BvcyAzKSApXG4jIDE5NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl9tb2RpZikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoTm9uZSwgXzEpIClcbiMgMTk3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoU29tZSBfMSwgTG9jLmFubm90X3dpdGhfZHVtbXkgMCkgKVxuIyAxOTgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl9tb2RpZikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChTb21lIF8xLF81KSApXG4jIDE5OTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ3ppbnQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfbW9kaWYpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMTAgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBTb21lIChTb21lIChfMykscmhzX3BvcyAzKSxtYXRjaCBfNyB3aXRoIChhLGxvYykgLT4gU29tZSAoU29tZSAoYSksbG9jKSApXG4jIDIwMDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICd6aW50KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIFNvbWUgKFNvbWUgKF8zKSxyaHNfcG9zIDMpLE5vbmUgKVxuIyAyMDE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgICAgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9IF84IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIwMzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9IF81IGluXG4gICAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF84IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIwNTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMDY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9IF81IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107XG4gICAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gKVxuIyAyMDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NpdGVfY291bnRlcl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKGNvdW50ZXJfc2lnX21pbixjb3VudGVyX3NpZ19tYXgpID0gXzUgaW5cbiAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZT0oXzEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluO1xuICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXg7XG4gICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQ9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvdW50ZXJfc2lnX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKS0+IDBcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLF8pIC0+IGkgKTtcbiAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfdmlzaWJsZT1Db3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0O1xuICAgICAgICAgICAgfSApXG4jIDIwOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgICBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gKVxuIyAyMTA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9IF84IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIxMjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9IF81IGluXG4gICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMTQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyMDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjE1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyMTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50OyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjE2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NpdGVfY291bnRlcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGNvdW50ZXJfdGVzdCxjb3VudGVyX2RlbHRhKSA9IF81IGluXG4gICAgICBBc3QuQ291bnRlclxuICAgICAgICB7IEFzdC5jb3VudGVyX25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5jb3VudGVyX3Rlc3Q7IEFzdC5jb3VudGVyX2RlbHRhIH0gKVxuIyAyMTgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gKVxuIyAyMTkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggW10gKVxuIyAyMTk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgKFwiTWFsZm9ybWVkIHNpdGUgZXhwcmVzc2lvblwiKSkpIClcbiMgMjIwNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8yIClcbiMgMjIxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdzaXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF80IClcbiMgMjIyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBbXSApXG4jIDIyMjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSApXG4jIDIyMzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfc2lnKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzIgKVxuIyAyMjQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdzaXRlX3NpZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2Vfc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF80IClcbiMgMjI1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2Vfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIEFzdC5Ob01vZCxzdGFydF9wb3MgMSxfMSApXG4jIDIyNTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuQ3JlYXRlLGVuZF9wb3MgMixfMyApXG4jIDIyNjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LkVyYXNlLGVuZF9wb3MgMixfMyApXG4jIDIyNzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAoIChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSxfMikgKVxuIyAyMjgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZSkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCBtb2RpZixwZW5kLGFuID0gXzcgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF81LCBtb2RpZikscGVuZCxhbikgKVxuIyAyMjkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEwIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDkgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJmYWNlKSBpblxuICAgIGxldCBfMTEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCBtb2RpZixwZW5kLGFuID0gXzExIGluXG4gICAgICAoQXN0LlByZXNlbnQgKChfNSxyaHNfcG9zIDUpLCBfOSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjMwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl5fMV5cIidcIikpKSApXG4jIDIzMTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggKEFzdC5BYnNlbnQgKHJoc19wb3MgMSksZW5kX3BvcyAxLF8yKSApXG4jIDIzMjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMjY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCBtb2RpZixwZW5kLGFuID0gXzcgaW5cbiAgICAgICAgKEFzdC5QcmVzZW50ICgoXzEscmhzX3BvcyAxKSwgXzUsIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIzMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEwIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDkgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJmYWNlX3NpZykgaW5cbiAgICBsZXQgXzExID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMjcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCBtb2RpZixwZW5kLGFuID0gXzExIGluXG4gICAgICAgIChBc3QuUHJlc2VudCAoKF81LHJoc19wb3MgNSksIF85LCBtb2RpZikscGVuZCxhbikgKVxuIyAyMzUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzFeXCInXCIpKSkgKVxuIyAyMzYwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FnZW50KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuKCBsZXQgKHgsXyxfKSA9IF8xIGluXG4gIG1hdGNoIF80IHdpdGhcbiAgfCAoeTo6eixwZW5kLHApIC0+ICgoeDo6eSk6OnoscGVuZCxwKVxuICB8IChbXSxfLF8pIC0+XG4gICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgIChhZGRfcG9zIDQgKFwiYXNzZXJ0aW9uIGZhaWx1cmUgaW4gcGF0dGVybiBwYXJzaW5nXCIpKSkgKVxuIyAyMzc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhZ2VudCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAyODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiggbGV0ICh4LF8sXykgPSBfMSBpbiBsZXQgKHkscGVuZCxwKSA9IF80IGluIChbeF06OnkscGVuZCxwKSApXG4jIDIzODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAyODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGxldCAoeCxwZW5kLHApID0gXzEgaW4gKFtbeF1dLHBlbmQscCkgKVxuIyAyMzkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduYnIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuQ09OU1QgXzEpIClcbiMgMjM5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FTUFYX1ZBUikpIClcbiMgMjQwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpIClcbiMgMjQwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSkgKVxuIyAyNDE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZF9wb3MgNSAoQWxnX2V4cHIuVE9LRU5fSUQgKF8zKSkgKVxuIyAyNDI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMyBpbiBhZGRfcG9zIDQgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIHApIClcbiMgMjQzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSApXG4jIDI0MzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKF8xKSkgKVxuIyAyNDQ2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSkgKVxuIyAyNDUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSApXG4jIDI0NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkgKVxuIyAyNDY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHgsXyxfKSA9IF8zIGluIHggKVxuIyAyNDcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29uc3RhbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggXzEgKVxuIyAyNDc5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggXzEgKVxuIyAyNDg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsXzMsXzUpKSApXG4jIDI0OTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTixfMyxfNSkpIClcbiMgMjUwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5FWFAsXzMpKSApXG4jIDI1MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU0lOVVMsXzMpKSApXG4jIDI1MjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuQ09TSU5VUyxfMykpIClcbiMgMjUzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5UQU4sXzMpKSApXG4jIDI1MzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULF8zKSkgKVxuIyAyNTQ2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsXzMpKSApXG4jIDI1NTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLF8zKSkgKVxuIyAyNTYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUyxfMykpIClcbiMgMjU3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzM2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxlbmRfcG9zIDEsXzIpIClcbiMgMjU3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeCx5LHopID0gXzUgaW5cbiAgICAgIChhZGRfcG9zIDQgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuUE9XLF8xLHgpKSx5LHopIClcbiMgMjU4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjU5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19wcm9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTU9EVUxPLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI2MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULHgseSksXG4gICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjYyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19zdW0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLkRJVix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3N1bSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyNjQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX2lmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2NjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9faWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX2lmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyNjgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGksXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHQsXyxfKSA9IF80IGluXG4gICgoQWxnX2V4cHIuSUYoaSx0LF83KSxcbiAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgKGVuZF9wb3MgNykpLGVuZF9wb3MgNyxfOCkgKVxuIyAyNjk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggdHJ1ZSApXG4jIDI3MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbGVhbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBmYWxzZSApXG4jIDI3MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbGVhbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHgsXyxfKSA9IF8zIGluIHggKVxuIyAyNzE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIGFkZF9wb3MgMSBBbGdfZXhwci5UUlVFIClcbiMgMjcyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIEFsZ19leHByLkZBTFNFIClcbiMgMjcyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsXzMpKSApXG4jIDI3MzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYm9vbF9leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsZW5kX3BvcyAxLCBfMikgKVxuIyAyNzQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjc3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjc4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRElGRix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNzk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByX2NvbXApIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyODA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9ub19vcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xfZXhwcl9jb21wKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcl9ub19vcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDM2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjgxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfbm9fb3IpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHJfbm9fb3IpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjgyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHJfbm9fb3IpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI4MzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMiBpbiB4IClcbiMgMjg0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMiBcIlByb2JsZW1hdGljIGJvb2xlYW4gZXhwcmVzc2lvblwiKSkgKVxuIyAyODUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgIChmYWxzZSlcbiMgMjg1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhcnJvdykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAodHJ1ZSlcbiMgMjg2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhcnJvdykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggWyhfMSwoXzMscmhzX3BvcyAzKSldLGVuZF9wb3MgMyxfNCApXG4jIDI4NzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGwscGVuZCxhbikgPSBfNyBpbiAoXzEsKF8zLHJoc19wb3MgMykpIDo6IGwscGVuZCxhbiApXG4jIDI4ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNDcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIGxldCAocCxwZW5kLGFuKSA9IF8xIGluIChwLFtdLHBlbmQsYW4pIClcbiMgMjg5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHQscGVuZCxhbikgPSBfNCBpbiAocCwgdCwgcGVuZCwgYW4pIClcbiMgMjkwNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh0LHBlbmQsYW4pID0gXzMgaW4gKFtdLCB0LCBwZW5kLCBhbikgKVxuIyAyOTEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyA0IFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgKVxuIyAyOTIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSApXG4jIDI5MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncnVsZV9zaWRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9zaWRlKSBpblxuICAgIE9iai5yZXByKFxuIyA0ODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobGhzLHJtX3Rva2VuLF8sXykgPSBfMSBpblxuICAgICAgbGV0IChyaHMsYWRkX3Rva2VuLHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM7IEFzdC5ybV90b2tlbjsgQXN0LnJoczsgQXN0LmFkZF90b2tlbn0sXzIscGVuZCxhbikgKVxuIyAyOTQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGxocyxybV90b2tlbixfLF8pID0gXzEgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM7IEFzdC5ybV90b2tlbjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbj1bXX0sXzIsZW5kX3BvcyAyLF8zKSApXG4jIDI5NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9zaWRlKSBpblxuICAgIE9iai5yZXByKFxuIyA0OTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9IF8zIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW49W107IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LF8xLHBlbmQsYW4pIClcbiMgMjk2MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX3NpZGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChtaXgsZGVsdGFfdG9rZW4scGVuZCxhbikgPSBfMSBpblxuICAgICAgKEFzdC5FZGl0IHtBc3QubWl4OyBBc3QuZGVsdGFfdG9rZW59LGZhbHNlLHBlbmQsYW4pIClcbiMgMjk3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBsZXQgKHgsXyxfKSA9IF8xIGluICh4LE5vbmUpIClcbiMgMjk3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHgsXyxfKSA9IF8xIGluIGxldCAoeSxfLF8pID0gXzQgaW4gKHgsIFNvbWUgeSkgKVxuIyAyOTg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChiLHBlbmQsYW4pID0gXzYgaW4gKGIsU29tZSBfMyxwZW5kLGFuKSApXG4jIDI5OTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiAoeCxTb21lIF80LGVuZF9wb3MgNSxfNikgKVxuIyAzMDA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBsZXQgKGEscGVuZCxhbikgPSBfMSBpbiAoYSxOb25lLHBlbmQsYW4pIClcbiMgMzAxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIGxldCAoazIsazEscGVuZCxhbikgPSBfMyBpbiAoazIsazEsTm9uZSxOb25lLHBlbmQsYW4pIClcbiMgMzAyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncmF0ZSkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1MjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoazIsazEsXyxfKSA9IF8zIGluXG4gICAgICBsZXQgKGtiYWNrLGtiYWNrMSxwZW5kLGFuKSA9IF82IGluXG4gICAgICAoazIsazEsU29tZSBrYmFjayxrYmFjazEscGVuZCxhbikgKVxuIyAzMDM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2JpcmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuLHBvc19lbmQsX2Fubm90KSA9IF8yIGluXG4gICAgICBsZXQgKHJld3JpdGUsYmlkaXJlY3Rpb25hbCxfLF8pID0gXzEgaW5cbiAgICAgICh7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwb3NfZW5kKSApXG4jIDMwNDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMiBcInJ1bGUgcmF0ZSBleHBlY3RlZFwiKSkgKVxuIyAzMDU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodixwZW5kLGFuKSA9IF8zIGluICgoXzEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIClcbiMgMzA2MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh2LHBlbmQsYW4pID0gXzMgaW4gKChfMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgKVxuIyAzMDcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMzA4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQ0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl5fMV5cIidcIikpKSApXG4jIDMwOTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgKFwibGFiZWwgZXhwZWN0ZWRcIikpKSApXG4jIDMwOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgKCBbIF8xLHJoc19wb3MgMSBdIClcbiMgMzEwNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLHJoc19wb3MgMSkgOjogXzUgKVxuIyAzMTE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSBfMiBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAyKSBwZW5kKSkgKVxuIyAzMTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHAscGVuZCxfKSA9IF80IGluXG4gICAgICAodixBc3QuSU5JVF9NSVggKHAsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSApXG4jIDMxMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaWRfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF8xIGluICh2LEFzdC5JTklUX1RPSyBfMikgKVxuIyAzMTQ0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF80IGluICh2LEFzdC5JTklUX1RPSyBbXzEscmhzX3BvcyAxXSkpXG4jIDMxNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpIClcbiMgMzE2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoW18xLCByaHNfcG9zIDFdKVxuIyAzMTY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1NzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEscmhzX3BvcyAxKTo6XzMpXG4jIDMxNzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCAoW1ByaW1pdGl2ZXMuU3RyX3BleHByIChhZGRfcG9zIDEgXzEpXSxlbmRfcG9zIDEsXzIpIClcbiMgMzE4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChhLHBlbmQscCkgPSBfMSBpbiAoW1ByaW1pdGl2ZXMuQWxnX3BleHByIGFdLHBlbmQscCkgKVxuIyAzMTkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMzE5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3ByaW50X2V4cHJfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sYW4pID0gXzMgaW4gKHYsZW5kX3BvcyA0LGFuIEAgXzUpIClcbiMgMzIwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsLHBlbmQscCkgPSBfNSBpbiAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKF8xLCByaHNfcG9zIDEpOjpsLHBlbmQscCkgKVxuIyAzMjE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHJfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsLHBlbmQscCkgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMSBpblxuICAgICAgKFByaW1pdGl2ZXMuQWxnX3BleHByIHY6OmwscGVuZCxwKSApXG4jIDMyMjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcl9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIChbXSxzdGFydF9wb3MgMSxfMSkgKVxuIyAzMjM2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAzMjQ0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChhLHBlbmQscCkgPSBfNSBpbiAoQXN0LlVQREFURSAoKF8zLHJoc19wb3MgMyksYSkscGVuZCxwKSApXG4jIDMyNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzUgaW4gKEFzdC5VUERBVEUgKChfMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgKVxuIyAzMjY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCAoQXN0LkNGTE9XTEFCRUwgKF81LChfMyxyaHNfcG9zIDMpKSxlbmRfcG9zIDUsXzYpIClcbiMgMzI3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocGF0LGVwYXQsXykgPSBfMyBpblxuICAgICAgKEFzdC5DRkxPV01JWCAoXzQsKHBhdCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgZXBhdCkpLGVuZF9wb3MgNCwgXzUpIClcbiMgMzI4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzMgaW5cbiAgICAgICgoaWYgXzQgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApIGVsc2UgQXN0LkRJTk9GRiBwKSxcbiAgICAgICBlbmRfcG9zIDQsXzUpIClcbiMgMzI5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2MjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzMgaW5cbiAgICAgIGlmIF82ICYmIF80ID0gXCJhYnNvbHV0ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUscCksZW5kX3BvcyA2LF83KVxuICAgICAgZWxzZSBpZiBfNiAmJiBfNCA9IFwicHJvYmFiaWxpdHlcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLHApLGVuZF9wb3MgNixfNylcbiAgICAgIGVsc2UgaWYgXzYgJiYgXzQgPSBcInJlbGF0aXZlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSxlbmRfcG9zIDYsXzcpXG4gICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDQpKSApXG4jIDMzMTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9jb250ZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA2MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocmV3cml0ZSxfLHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAodixfLF8pID0gXzMgaW5cbiAgICAgIEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICh7IEFzdC5yZXdyaXRlOyBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgcGVuZCkpLFxuICAgICAgcGVuZCxhblxuICAgIClcbiMgMzMzNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA2NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobSxwZW5kLHApID0gXzQgaW5cbiAgICAgIGxldCAodixfLF8pID0gXzMgaW5cbiAgICAgIChBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0ICAgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2NyZWF0ZWRfbWl4dHVyZSBtO1xuICAgICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0ICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSxcbiAgICAgICBwZW5kLHApIClcbiMgMzM1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyBcXFxuJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIClcbiMgMzM2MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA2NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobSxwZW5kLHApID0gXzQgaW5cbiAgICAgIGxldCAodixfLF8pID0gXzMgaW5cbiAgICAgIChBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fZXJhc2VkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSxcbiAgICAgICBwZW5kLHApIClcbiMgMzM4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgKVxuIyAzMzkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHMscGVuZCxwKSA9IF8yIGluIChBc3QuU05BUFNIT1QgKGZhbHNlLHMpLHBlbmQscCkgKVxuIyAzMzk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHMsXyxfKSA9IF8yIGluIChBc3QuU05BUFNIT1QgKF8zLHMpLGVuZF9wb3MgMyxfNCkgKVxuIyAzNDA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIGxldCAocyxwZW5kLHApID0gXzIgaW4gKEFzdC5TVE9QIHMscGVuZCxwKSApXG4jIDM0MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChmLHBlbmQscCkgPSBfNCBpbiBsZXQgKGMsXyxfKSA9IF8yIGluIChBc3QuUFJJTlQgKGYsYykscGVuZCxwKSApXG4jIDM0MjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGMscGVuZCxwKSA9IF8yIGluIChBc3QuUFJJTlQgKFtdLGMpLHBlbmQscCkgKVxuIyAzNDI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggKEFzdC5QTE9URU5UUlksZW5kX3BvcyAxLF8yKSApXG4jIDM0MzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgIChcbiAgICAgIGxldCAoZmlsZSxwZW5kLHApID0gXzcgaW5cbiAgICAgIGxldCAocGF0LHBlbmRwLF8pID0gXzMgaW5cbiAgICAgIChBc3QuU1BFQ0lFU19PRiAoXzQsZmlsZSwocGF0LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgcGVuZHApKSxcbiAgICAgICBwZW5kLHApIClcbiMgMzQ1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgIGxldCAodixwZW5kLHApID0gXzUgaW5cbiAgIGxldCB0ayA9IChfMSxyaHNfcG9zIDEpIGluXG4gICAgKEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAoe0FzdC5yZXdyaXRlID1cbiAgICAgICAgICAgICAgQXN0LkVkaXRcbiAgICAgICAgICAgICAgICAgIHtBc3QubWl4PVtdO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHYsKEFsZ19leHByLlRPS0VOX0lEIF8xLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zICA0KSBwZW5kKSkscGVuZCxwKVxuICAgKVxuIyAzNDc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICdJRCA8LSBhbGdfZXhwcmVzc2lvbidcIikpIClcbiMgMzQ4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcwNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuICAgZXhwZWN0aW5nICdJRCA8LSBhbGdfZXhwcmVzc2lvbidcIikpIClcbiMgMzQ5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgKF8xKVxuIyAzNTAwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9vcl9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaWRpbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoXzEpXG4jIDM1MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X29yX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMyApXG4jIDM1MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdF9vcl9pZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDM1MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9vcl9pZGluKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoIGxldCAoZSxwLGEpID0gXzEgaW4gKFtlXSxwLGEpIClcbiMgMzUzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnZWZmZWN0X29yX2lkaW4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIGxldCAobCxwZW5kLGEpID0gXzQgaW4gKGU6OmwscGVuZCxhKSApXG4jIDM1NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2lkaW4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gKFtlXSxlbmRfcG9zIDIsXzMpIClcbiMgMzU0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaWRpbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBsZXQgKGUscCxhKSA9IF8xIGluIChbZV0scCxhKSApXG4jIDM1NTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2lkaW4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIGxldCAobCxwZW5kLGEpID0gXzQgaW4gKGU6OmwscGVuZCxhKSApXG4jIDM1NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8zIClcbiMgMzU3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoZSxfLF8pID0gIF8zIGluIGUsZW5kX3BvcyA2LF83IClcbiMgMzU4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gKFtlXSxlbmRfcG9zIDIsXzMpIClcbiMgMzU5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2VmZmVjdCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIGxldCAobCxwZW5kLGEpID0gXzQgaW4gKGU6OmwscGVuZCxhKSApXG4jIDM2MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzIgaW4gZSApXG4jIDM2MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiUHJvYmxlbWF0aWMgZWZmZWN0IGxpc3RcIikpIClcbiMgMzYxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggTm9uZSApXG4jIDM2MjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICduYnIpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIF80IClcbiMgMzYzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiYWxhcm0gdGFrZXMgYSBudW1iZXIgYXMgYXJndW1lbnRcIikpIClcbiMgMzYzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGIscGVuZCxwKSA9IF8zIGluIChTb21lIGIscGVuZCxwKSApXG4jIDM2NDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3NTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChOb25lLCBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCksW10pIClcbiMgMzY1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzU1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMzY1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSBpblxuICAgIE9iai5yZXByKFxuIyA3NjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocHJlLF8sXykgPSBfMiBpblxuICAgICAgbGV0IChlLF8sXykgPSBfNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSBfNiBpblxuICAgICAgKF8xLFNvbWUgcHJlLGUscG9zdCkgKVxuIyAzNjczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSBpblxuICAgIE9iai5yZXByKFxuIyA3NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZSxfLF8pID0gXzQgaW4gbGV0IChwb3N0LF8sXykgPSBfNSBpbiAoXzEsTm9uZSxlLHBvc3QpIClcbiMgMzY4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHByZSxfLF8pID0gXzIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gXzUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gXzYgaW5cbiAgICAgIChfMSxTb21lIHByZSxlLHBvc3QpIClcbiMgMzY5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggbGV0IChlLF8sXykgPSBfNCBpblxuICAgICAgICAgIGxldCAocG9zdCxfLF8pID0gXzUgaW5cbiAgICAgICAgICAoXzEsTm9uZSxlLHBvc3QpIClcbiMgMzcwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZCAoQXN0LlJVTEUoU29tZSAoXzEsIHJoc19wb3MgMSksXzMpKSApXG4jIDM3MTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfNSBpbiBhZGQgKEFzdC5ERUNMQVJFICgoXzEscmhzX3BvcyAxKSx2KSkgKVxuIyAzNzI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNzgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIGFkZCAoQXN0LlJVTEUgKE5vbmUsXzEpKSApXG4jIDM3MzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGEsXyxfKSA9IF8zIGluIGFkZCAoQXN0LlNJRyBhKSApXG4jIDM3NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGFnZW50IHNpZ25hdHVyZVwiKSkgKVxuIyAzNzUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzg4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkIChBc3QuVE9LRU5TSUcgKF8zLHJoc19wb3MgMykpIClcbiMgMzc2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzg5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh2LF8sXykgPSBfMyBpbiBhZGQgKEFzdC5QTE9UIHYpIClcbiMgMzc2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzXG4gICAgICAgICAgICAgICAgICBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBcXFxuYW4gYWxnZWJyYWljIGV4cHJlc3Npb24gaXMgZXhwZWN0ZWRcIikpIClcbiMgMzc3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGksdixfLF8pID0gXzMgaW4gYWRkIChBc3QuREVDTEFSRSAoaSx2KSkgKVxuIyAzNzg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3OTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoaSx2LF8sXykgPSBfMyBpbiBhZGQgKEFzdC5PQlMgKGksdikpIClcbiMgMzc5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbml0X2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3OTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYWxnLGluaXQpID0gXzMgaW4gYWRkIChBc3QuSU5JVCAoYWxnLGluaXQpKSApXG4jIDM4MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDgwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkIChBc3QuUEVSVCAoXzIsIHJoc19wb3MgMikpIClcbiMgMzgwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA4MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZCAoQXN0LkNPTkZJRyAoKF8zLHJoc19wb3MgMyksXzUpKSApXG4jIDM4MTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZW50ZW5jZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21vZGVsX2JvZHkpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDM4MjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kZWxfYm9keSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggb3V0cHV0ICgpIClcbiMgMzgzMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RlbF9ib2R5KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21vZGVsX2JvZHkpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMzg0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2luc3RydWN0aW9uIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiSW5jb3JyZWN0IGJlZ2lubmluZyBvZiBzZW50ZW5jZSAhISFcIikpIClcbiMgMzg0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2luc3RydWN0aW9uIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgKVxuIyAzODU2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgODE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChwYXVzZSxfLF8pID0gXzQgaW4gQXN0LlJVTiBwYXVzZSApXG4jIDM4NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoZWZmLF8sXykgPSBfMiBpbiBBc3QuTU9ESUZZIFtlZmZdIClcbiMgMzg3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCBBc3QuUVVJVCApXG4jIDM4ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKSApXG4jIDM4ODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG4oKiBFbnRyeSBtb2RlbCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBpbnRlcmFjdGl2ZV9jb21tYW5kICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9ib29sX2V4cHIgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgbW9kZWwgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IEFzdC5wYXJzaW5nX2luc3RydWN0aW9uIGxpc3QpXG5sZXQgaW50ZXJhY3RpdmVfY29tbWFuZCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpXG5sZXQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdClcbmxldCBzdGFuZGFsb25lX2Jvb2xfZXhwciAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZClcbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKi9cbi8qIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKi9cbi8qIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiV7XG4gIGxldCBhZGRfcG9zIGUgeCA9XG4gICAgKHgsXG4gICAgTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBlKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gICAgTG9jLm9mX3BvcyAoUGFyc2luZy5yaHNfc3RhcnRfcG9zIGkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGkpXG4gIGxldCBlbmRfcG9zID0gUGFyc2luZy5yaHNfZW5kX3Bvc1xuICBsZXQgc3RhcnRfcG9zID0gUGFyc2luZy5yaHNfc3RhcnRfcG9zXG5cbiAgbGV0IGludGVybmFsX21lbW9yeSA9IHJlZiBbXVxuICBsZXQgYWRkIHggPSBpbnRlcm5hbF9tZW1vcnkgOj0geCA6OiAhaW50ZXJuYWxfbWVtb3J5XG4gIGxldCBvdXRwdXQgKCkgPVxuICAgIGxldCBvID0gTGlzdC5yZXYgIWludGVybmFsX21lbW9yeSBpbiBsZXQgKCkgPSBpbnRlcm5hbF9tZW1vcnkgOj0gW10gaW4gb1xuJX1cblxuJXRva2VuIEVPRiBDT01NQSBET1QgT1BfUEFSIENMX1BBUiBPUF9DVVIgQ0xfQ1VSIE9QX0JSQSBDTF9CUkEgQVQgU0VNSUNPTE9OXG4ldG9rZW4gUExVUyBNSU5VUyBNVUxUIERJViBNT0QgTUFYIE1JTiBTSU5VUyBDT1NJTlVTIFRBTiBQT1cgQUJTIFNRUlQgRVhQT05FTlRcbiV0b2tlbiBMT0cgT1IgQU5EIE5PVCBUSEVOIEVMU0UgRElGRiBFUVVBTCBTTUFMTEVSIEdSRUFURVIgVFJVRSBGQUxTRSBJTkZJTklUWVxuJXRva2VuIFNIQVJQIFVOREVSU0NPUkUgUElQRSBSQVIgTFJBUiBMQVIgRU1BWCBUTUFYIENQVVRJTUUgVElNRSBFVkVOVCBOVUxMX0VWRU5UXG4ldG9rZW4gQ09MT04gTkVXTElORSBCQUNLU0xBU0ggU0lHTkFUVVJFIFRPS0VOIElOSVQgT0JTIFBMT1QgUEVSVCBDT05GSUcgQVBQTFlcbiV0b2tlbiBERUxFVEUgSU5UUk8gU05BUFNIT1QgU1RPUCBGTFVYIFRSQUNLIEFTU0lHTiBQUklOVEYgUExPVEVOVFJZIFNQRUNJRVNfT0ZcbiV0b2tlbiBETyBSRVBFQVQgQUxBUk0gUlVOIExFVFxuJXRva2VuIDxpbnQ+IElOVFxuJXRva2VuIDxmbG9hdD4gRkxPQVRcbiV0b2tlbiA8c3RyaW5nPiBJRCBMQUJFTCBTVFJJTkdcbiV0b2tlbiA8c3RyaW5nPiBTUEFDRSBDT01NRU5UXG5cbiVzdGFydCBtb2RlbFxuJXR5cGUgPEFzdC5wYXJzaW5nX2luc3RydWN0aW9uIGxpc3Q+IG1vZGVsXG5cbiVzdGFydCBpbnRlcmFjdGl2ZV9jb21tYW5kXG4ldHlwZSA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQ+IGludGVyYWN0aXZlX2NvbW1hbmRcblxuJXN0YXJ0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcbiV0eXBlXG4gIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0PiBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG5cbiVzdGFydCBzdGFuZGFsb25lX2Jvb2xfZXhwclxuJXR5cGUgPChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQ+IHN0YW5kYWxvbmVfYm9vbF9leHByXG5cbiUlXG5cbmFubm90ZWQ6XG4gIHwgeyBbXSB9XG4gIHwgTkVXTElORSBhbm5vdGVkIHsgXCJcXG5cIjo6JDIgfVxuICB8IFNQQUNFIGFubm90ZWQgeyAkMTo6JDIgfVxuICB8IENPTU1FTlQgYW5ub3RlZCB7ICQxOjokMiB9XG4gIDtcblxubmJyOlxuICB8IElORklOSVRZIHsgTmJyLkYgaW5maW5pdHkgfVxuICB8IEZMT0FUIHsgTmJyLkYgJDEgfVxuICB8IElOVCB7IE5ici5JICQxIH1cbiAgO1xuXG5saW5rX3N0YXRlOlxuICB8IERPVCB7IGFkZF9wb3MgMSBMS2FwcGEuTE5LX0ZSRUUgfVxuICB8IElOVCB7IGFkZF9wb3MgMSAoTEthcHBhLkxOS19WQUxVRSAoJDEsKCkpKSB9XG4gIHwgVU5ERVJTQ09SRSB7IGFkZF9wb3MgMSBMS2FwcGEuTE5LX1NPTUUgfVxuICB8IElEIGFubm90ZWQgRE9UIGFubm90ZWQgSURcbiAgICB7IGFkZF9wb3MgNSAoTEthcHBhLkxOS19UWVBFICgoJDEscmhzX3BvcyAxKSwoJDUscmhzX3BvcyA1KSkpIH1cbiAgfCBTSEFSUCB7IGFkZF9wb3MgMSBMS2FwcGEuTE5LX0FOWSB9XG4gIHwgSUQgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgc3RhdGVcIikpIH1cbiAgO1xuXG5saW5rX3N0YXRlczpcbiAgfCBsaW5rX3N0YXRlIGFubm90ZWQgeyBbJDFdIH1cbiAgfCBsaW5rX3N0YXRlIGFubm90ZWQgbGlua19zdGF0ZXMgeyAkMSA6OiAkMyB9XG4gIHwgbGlua19zdGF0ZSBhbm5vdGVkIENPTU1BIGFubm90ZWQgbGlua19zdGF0ZXMgeyAkMSA6OiAkNSB9XG4gIDtcblxubGlua19tb2RpZjpcbiAgfCB7IE5vbmUgfVxuICB8IERJViBhbm5vdGVkIERPVCBhbm5vdGVkIHsgU29tZSBOb25lIH1cbiAgfCBESVYgYW5ub3RlZCBJTlQgYW5ub3RlZCB7IFNvbWUgKFNvbWUgKCQzLCByaHNfcG9zIDMpKSB9XG4gIHwgRElWIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIH1cbiAgO1xuXG5pbnRlcm5hbF9zdGF0ZTpcbiAgfCBJRCB7IGFkZF9wb3MgMSAoU29tZSAkMSkgfVxuICB8IFNIQVJQIHsgYWRkX3BvcyAxIE5vbmUgfVxuICA7XG5cbmludGVybmFsX3N0YXRlczpcbiAgfCBpbnRlcm5hbF9zdGF0ZSBhbm5vdGVkIHsgWyQxXSB9XG4gIHwgaW50ZXJuYWxfc3RhdGUgYW5ub3RlZCBpbnRlcm5hbF9zdGF0ZXMgeyAkMSA6OiAkMyB9XG4gIHwgaW50ZXJuYWxfc3RhdGUgYW5ub3RlZCBDT01NQSBhbm5vdGVkIGludGVybmFsX3N0YXRlcyB7ICQxIDo6ICQ1IH1cbiAgO1xuXG5pbnRlcm5hbF9tb2RpZjpcbiAgfCB7IE5vbmUgfVxuICB8IERJViBhbm5vdGVkIElEIGFubm90ZWQgeyBTb21lICgkMywgcmhzX3BvcyAzKSB9XG4gIHwgRElWIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIH1cbiAgO1xuXG5zaXRlX2xpbms6XG4gIHwgYW5ub3RlZCBsaW5rX3N0YXRlcyBsaW5rX21vZGlmIENMX0JSQSB7ICgkMiwgJDMpIH1cbiAgfCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgbGlua2luZyBzdGF0ZSBvciBtaXNzaW5nICddJ1wiLHJoc19wb3MgMikpIH1cbiAgO1xuXG5zaXRlX2ludGVybmFsOlxuICB8IGludGVybmFsX3N0YXRlcyBpbnRlcm5hbF9tb2RpZiBDTF9DVVIgeyAoJDEsICQyKSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBpbnRlcm5hbCBzdGF0ZSBvciBtaXNzaW5nICd9J1wiLHJoc19wb3MgMykpIH1cbiAgO1xuXG5jb3VudGVyX21vZGlmOlxuICB8IFBMVVMgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7ICgkNSwgcmhzX3BvcyA1KSB9XG4gIHwgUExVUyBhbm5vdGVkIEVRVUFMIGFubm90ZWQgTUlOVVMgYW5ub3RlZCBJTlQgeyAoLSAkNywgcmhzX3BvcyA3KSB9XG4gIHwgTUlOVVMgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7ICgtICQ1LCByaHNfcG9zIDUpIH1cbiAgO1xuXG56aW50OlxuICAgIHwgSU5UIHskMX1cbiAgICB8IE1JTlVTIGFubm90ZWQgSU5UIHstJDN9XG5cbmNvdW50ZXJfdGVzdDpcbiAgfCBFUVVBTCBhbm5vdGVkIHppbnQgeyAoQXN0LkNFUSAkMyxyaHNfcG9zIDMpIH1cbiAgfCBHUkVBVEVSIGFubm90ZWQgRVFVQUwgYW5ub3RlZCB6aW50IHsgKEFzdC5DR1RFICQ1LHJoc19wb3MgNSkgfVxuICB8IFNNQUxMRVIgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIHppbnR7IChBc3QuQ0xURSAkNSxyaHNfcG9zIDUpIH1cbiAgfCBFUVVBTCBhbm5vdGVkIElEIHsgKEFzdC5DVkFSICQzLHJoc19wb3MgMykgfVxuICA7XG5cbnNpdGVfY291bnRlcjpcbiAgfCBjb3VudGVyX21vZGlmIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWQgeyAoTm9uZSwgJDEpIH1cbiAgfCBjb3VudGVyX3Rlc3QgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZCB7IChTb21lICQxLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwKSB9XG4gIHwgY291bnRlcl90ZXN0IGFubm90ZWQgRElWIGFubm90ZWQgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkXG4gICAgeyAoU29tZSAkMSwkNSkgfVxuICA7XG5cbnNpdGVfY291bnRlcl9zaWc6XG4gICAgfCBFUVVBTCBhbm5vdGVkIHppbnQgIGFubm90ZWQgRElWIGFubm90ZWQgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkXG4gICAgICB7IFNvbWUgKFNvbWUgKCQzKSxyaHNfcG9zIDMpLG1hdGNoICQ3IHdpdGggKGEsbG9jKSAtPiBTb21lIChTb21lIChhKSxsb2MpIH1cbiAgICB8IEVRVUFMIGFubm90ZWQgemludCAgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZFxuICAgICAgICB7IFNvbWUgKFNvbWUgKCQzKSxyaHNfcG9zIDMpLE5vbmUgfVxuICAgICAgO1xuXG4gIHNpdGVfc2lnOlxuICAgIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107XG4gICAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2NvdW50ZXJfc2lnXG4gICAgICB7IGxldCAoY291bnRlcl9zaWdfbWluLGNvdW50ZXJfc2lnX21heCkgPSAkNSBpblxuICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgIHsgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lPSgkMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW47XG4gICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heDtcbiAgICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdD1cbiAgICAgICAgICAgICAgICAobWF0Y2ggY291bnRlcl9zaWdfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pLT4gMFxuICAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIGksXykgLT4gaSApO1xuICAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlPUNvdW50ZXJzX2luZm8uRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICAgICAgICB9IH1cbiAgICB8IElEIGFubm90ZWRcbiAgICAgIHsgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgICA7XG5cbnNpdGU6XG4gIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkNCBpblxuICAgICAgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ4IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ4IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9jb3VudGVyXG4gICAgeyBsZXQgKGNvdW50ZXJfdGVzdCxjb3VudGVyX2RlbHRhKSA9ICQ1IGluXG4gICAgICBBc3QuQ291bnRlclxuICAgICAgICB7IEFzdC5jb3VudGVyX25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5jb3VudGVyX3Rlc3Q7IEFzdC5jb3VudGVyX2RlbHRhIH0gfVxuICB8IElEIGFubm90ZWRcbiAgICB7IEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgO1xuXG5pbnRlcmZhY2U6XG4gIHwgeyBbXSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgfVxuICB8IHNpdGUgaW50ZXJmYWNlIHsgJDEgOjogJDIgfVxuICB8IHNpdGUgQ09NTUEgYW5ub3RlZCBpbnRlcmZhY2UgeyAkMSA6OiAkNCB9XG4gIDtcblxuaW50ZXJmYWNlX3NpZzpcbiAgICB8IHsgW10gfVxuICAgIHwgZXJyb3JcbiAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDEgKFwiTWFsZm9ybWVkIHNpdGUgZXhwcmVzc2lvblwiKSkpIH1cbiAgICB8IHNpdGVfc2lnIGludGVyZmFjZV9zaWcgeyAkMSA6OiAkMiB9XG4gICAgfCBzaXRlX3NpZyBDT01NQSBhbm5vdGVkIGludGVyZmFjZV9zaWcgeyAkMSA6OiAkNCB9XG4gICAgO1xuXG5hZ2VudF9tb2RpZjpcbiAgfCBhbm5vdGVkIHsgQXN0Lk5vTW9kLHN0YXJ0X3BvcyAxLCQxIH1cbiAgfCBhbm5vdGVkIFBMVVMgYW5ub3RlZCB7IEFzdC5DcmVhdGUsZW5kX3BvcyAyLCQzIH1cbiAgfCBhbm5vdGVkIE1JTlVTIGFubm90ZWQgeyBBc3QuRXJhc2UsZW5kX3BvcyAyLCQzIH1cbiAgO1xuXG5hZ2VudDpcbiAgfCBET1QgYW5ub3RlZCB7IChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSwkMikgfVxuICB8IElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkNyBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDUsIG1vZGlmKSxwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBDT0xPTiBhbm5vdGVkIElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkMTEgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKCQ1LHJoc19wb3MgNSksICQ5LCBtb2RpZikscGVuZCxhbikgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgO1xuXG5hZ2VudF9zaWc6XG4gICAgfCBET1QgYW5ub3RlZCB7IChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSwkMikgfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2Vfc2lnIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQ3IGluXG4gICAgICAgIChBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQ1LCBtb2RpZikscGVuZCxhbikgfVxuICAgIHwgSUQgYW5ub3RlZCBDT0xPTiBhbm5vdGVkIElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlX3NpZyBDTF9QQVIgYWdlbnRfbW9kaWZcbiAgICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkMTEgaW5cbiAgICAgICAgKEFzdC5QcmVzZW50ICgoJDUscmhzX3BvcyA1KSwgJDksIG1vZGlmKSxwZW5kLGFuKSB9XG4gICAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDFeXCInXCIpKSkgfVxuICAgIDtcbnBhdHRlcm46XG4gIHwgYWdlbnQgQ09NTUEgYW5ub3RlZCBwYXR0ZXJuXG57IGxldCAoeCxfLF8pID0gJDEgaW5cbiAgbWF0Y2ggJDQgd2l0aFxuICB8ICh5Ojp6LHBlbmQscCkgLT4gKCh4Ojp5KTo6eixwZW5kLHApXG4gIHwgKFtdLF8sXykgLT5cbiAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgKGFkZF9wb3MgNCAoXCJhc3NlcnRpb24gZmFpbHVyZSBpbiBwYXR0ZXJuIHBhcnNpbmdcIikpKSB9XG4gIHwgYWdlbnQgQkFDS1NMQVNIIGFubm90ZWQgcGF0dGVyblxueyBsZXQgKHgsXyxfKSA9ICQxIGluIGxldCAoeSxwZW5kLHApID0gJDQgaW4gKFt4XTo6eSxwZW5kLHApIH1cbiAgfCBhZ2VudCB7IGxldCAoeCxwZW5kLHApID0gJDEgaW4gKFtbeF1dLHBlbmQscCkgfVxuICA7XG5cbmNvbnN0YW50OlxuICB8IG5iciB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQ09OU1QgJDEpIH1cbiAgfCBFTUFYIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkgfVxuICB8IFRNQVggeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSB9XG4gIHwgQ1BVVElNRSB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSkgfVxuICA7XG5cbnZhcmlhYmxlOlxuICB8IFBJUEUgYW5ub3RlZCBJRCBhbm5vdGVkIFBJUEUgeyBhZGRfcG9zIDUgKEFsZ19leHByLlRPS0VOX0lEICgkMykpIH1cbiAgfCBQSVBFIGFubm90ZWQgcGF0dGVybiBQSVBFXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQzIGluIGFkZF9wb3MgNCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgcCkgfVxuICB8IElEIHsgYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSICgkMSkpIH1cbiAgfCBMQUJFTCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKSB9XG4gIHwgVElNRSB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpIH1cbiAgfCBFVkVOVCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSB9XG4gIHwgTlVMTF9FVkVOVFxuICAgIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkgfVxuICA7XG5cbnNtYWxsX2FsZ19leHByOlxuICB8IE9QX1BBUiBhbm5vdGVkIGFsZ19leHByIENMX1BBUiB7IGxldCAoeCxfLF8pID0gJDMgaW4geCB9XG4gIHwgY29uc3RhbnQgeyAkMSB9XG4gIHwgdmFyaWFibGUgeyAkMSB9XG4gIHwgTUFYIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCwkMywkNSkpIH1cbiAgfCBNSU4gYW5ub3RlZCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLCQzLCQ1KSkgfVxuICB8IEVYUE9ORU5UIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCwkMykpIH1cbiAgfCBTSU5VUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUywkMykpIH1cbiAgfCBDT1NJTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsJDMpKSB9XG4gIHwgVEFOIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTiwkMykpIH1cbiAgfCBBQlMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULCQzKSkgfVxuICB8IFNRUlQgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCwkMykpIH1cbiAgfCBMT0cgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLCQzKSkgfVxuICB8IE1JTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUywkMykpIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19tb2Q6XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCB7ICgkMSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIFBPVyBhbm5vdGVkIGFsZ19leHByX3VwX3RvX21vZFxuICAgIHsgbGV0ICh4LHkseikgPSAkNSBpblxuICAgICAgKGFkZF9wb3MgNCAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csJDEseCkpLHkseikgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX3Byb2Q6XG4gIHwgYWxnX2V4cHJfdXBfdG9fbW9kIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX3Byb2QgTU9EIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fbW9kXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NT0RVTE8seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19zdW06XG4gIHwgYWxnX2V4cHJfdXBfdG9fcHJvZCB7ICQxIH1cbiAgfCBhbGdfZXhwcl91cF90b19zdW0gTVVMVCBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3Byb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCx4LHkpLFxuICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIERJViBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3Byb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9faWY6XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIFBMVVMgYW5ub3RlZCBhbGdfZXhwcl91cF90b19zdW1cbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgTUlOVVMgYW5ub3RlZCBhbGdfZXhwcl91cF90b19zdW1cbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cblxuYWxnX2V4cHI6XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgeyAkMSB9XG4gIHwgYm9vbF9leHByIFRIRU4gYW5ub3RlZCBhbGdfZXhwciBFTFNFIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZFxuICAgIHsgbGV0IChpLF8sXykgPSAkMSBpblxuICAgICAgbGV0ICh0LF8sXykgPSAkNCBpblxuICAoKEFsZ19leHByLklGKGksdCwkNyksXG4gICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIChlbmRfcG9zIDcpKSxlbmRfcG9zIDcsJDgpIH1cbiAgO1xuXG5ib29sZWFuOlxuICB8IFRSVUUgeyB0cnVlIH1cbiAgfCBGQUxTRSB7IGZhbHNlIH1cbiAgO1xuXG5zbWFsbF9ib29sX2V4cHI6XG4gIHwgT1BfUEFSIGFubm90ZWQgYm9vbF9leHByIENMX1BBUiB7IGxldCAoeCxfLF8pID0gJDMgaW4geCB9XG4gIHwgVFJVRSB7IGFkZF9wb3MgMSBBbGdfZXhwci5UUlVFIH1cbiAgfCBGQUxTRSB7IGFkZF9wb3MgMSBBbGdfZXhwci5GQUxTRSB9XG4gIHwgTk9UIGFubm90ZWQgc21hbGxfYm9vbF9leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULCQzKSkgfVxuICA7XG5cbmJvb2xfZXhwcl9jb21wOlxuICB8IHNtYWxsX2Jvb2xfZXhwciBhbm5vdGVkIHsgKCQxLGVuZF9wb3MgMSwgJDIpIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBHUkVBVEVSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIFNNQUxMRVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgRVFVQUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIERJRkYgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYm9vbF9leHByX25vX29yOlxuICB8IGJvb2xfZXhwcl9jb21wIHsgJDEgfVxuICB8IGJvb2xfZXhwcl9jb21wIEFORCBhbm5vdGVkIGJvb2xfZXhwcl9ub19vclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYm9vbF9leHByOlxuICB8IGJvb2xfZXhwcl9ub19vciB7ICQxIH1cbiAgfCBib29sX2V4cHJfbm9fb3IgT1IgYW5ub3RlZCBib29sX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuc3RhbmRhbG9uZV9ib29sX2V4cHI6XG4gIHwgYW5ub3RlZCBib29sX2V4cHIgRU9GIHsgbGV0ICh4LF8sXykgPSAkMiBpbiB4IH1cbiAgfCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJQcm9ibGVtYXRpYyBib29sZWFuIGV4cHJlc3Npb25cIikpIH1cbiAgO1xuXG5hcnJvdzpcbiAgfCBSQVIge2ZhbHNlfVxuICB8IExSQVIge3RydWV9XG4gIDtcblxuc3VtX3Rva2VuOlxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgSUQgYW5ub3RlZCB7IFsoJDEsKCQzLHJoc19wb3MgMykpXSxlbmRfcG9zIDMsJDQgfVxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgSUQgYW5ub3RlZCBDT01NQSBhbm5vdGVkIHN1bV90b2tlblxuICAgIHsgbGV0IChsLHBlbmQsYW4pID0gJDcgaW4gKCQxLCgkMyxyaHNfcG9zIDMpKSA6OiBsLHBlbmQsYW4gfVxuICA7XG5cbnJ1bGVfc2lkZTpcbiAgfCBwYXR0ZXJuIHsgbGV0IChwLHBlbmQsYW4pID0gJDEgaW4gKHAsW10scGVuZCxhbikgfVxuICB8IHBhdHRlcm4gUElQRSBhbm5vdGVkIHN1bV90b2tlblxuICAgIHsgbGV0IChwLF8sXykgPSAkMSBpblxuICAgICAgbGV0ICh0LHBlbmQsYW4pID0gJDQgaW4gKHAsIHQsIHBlbmQsIGFuKSB9XG4gIHwgUElQRSBhbm5vdGVkIHN1bV90b2tlbiB7IGxldCAodCxwZW5kLGFuKSA9ICQzIGluIChbXSwgdCwgcGVuZCwgYW4pIH1cbiAgfCBwYXR0ZXJuIFBJUEUgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDQgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSB9XG4gIHwgUElQRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgMyBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIH1cbiAgO1xuXG5ydWxlX2NvbnRlbnQ6XG4gIHwgcnVsZV9zaWRlIGFycm93IGFubm90ZWQgcnVsZV9zaWRlXG4gICAgeyBsZXQgKGxocyxybV90b2tlbixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9ICQ0IGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LCQyLHBlbmQsYW4pIH1cbiAgfCBydWxlX3NpZGUgYXJyb3cgYW5ub3RlZFxuICAgIHsgbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9ICQxIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW49W119LCQyLGVuZF9wb3MgMiwkMykgfVxuICB8IGFycm93IGFubm90ZWQgcnVsZV9zaWRlXG4gICAgeyBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSAkMyBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuPVtdOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSwkMSxwZW5kLGFuKSB9XG4gIHwgcnVsZV9zaWRlXG4gICAgeyBsZXQgKG1peCxkZWx0YV90b2tlbixwZW5kLGFuKSA9ICQxIGluXG4gICAgICAoQXN0LkVkaXQge0FzdC5taXg7IEFzdC5kZWx0YV90b2tlbn0sZmFsc2UscGVuZCxhbikgfVxuICA7XG5cbmFsZ193aXRoX3JhZGl1czpcbiAgfCBhbGdfZXhwciB7IGxldCAoeCxfLF8pID0gJDEgaW4gKHgsTm9uZSkgfVxuICB8IGFsZ19leHByIENPTE9OIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeCxfLF8pID0gJDEgaW4gbGV0ICh5LF8sXykgPSAkNCBpbiAoeCwgU29tZSB5KSB9XG4gIDtcblxucmF0ZTpcbiAgfCBPUF9DVVIgYW5ub3RlZCBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoYixwZW5kLGFuKSA9ICQ2IGluIChiLFNvbWUgJDMscGVuZCxhbikgfVxuICB8IGFsZ19leHByIE9QX0NVUiBhbm5vdGVkIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgYW5ub3RlZFxuICAgIHsgbGV0ICh4LF8sXykgPSAkMSBpbiAoeCxTb21lICQ0LGVuZF9wb3MgNSwkNikgfVxuICB8IGFsZ19leHByIHsgbGV0IChhLHBlbmQsYW4pID0gJDEgaW4gKGEsTm9uZSxwZW5kLGFuKSB9XG4gIDtcblxuYmlyYXRlOlxuICB8IEFUIGFubm90ZWQgcmF0ZSB7IGxldCAoazIsazEscGVuZCxhbikgPSAkMyBpbiAoazIsazEsTm9uZSxOb25lLHBlbmQsYW4pIH1cbiAgfCBBVCBhbm5vdGVkIHJhdGUgQ09NTUEgYW5ub3RlZCByYXRlXG4gICAgeyBsZXQgKGsyLGsxLF8sXykgPSAkMyBpblxuICAgICAgbGV0IChrYmFjayxrYmFjazEscGVuZCxhbikgPSAkNiBpblxuICAgICAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxLHBlbmQsYW4pIH1cbiAgO1xuXG5ydWxlOlxuICB8IHJ1bGVfY29udGVudCBiaXJhdGVcbiAgICB7IGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4scG9zX2VuZCxfYW5ub3QpID0gJDIgaW5cbiAgICAgIGxldCAocmV3cml0ZSxiaWRpcmVjdGlvbmFsLF8sXykgPSAkMSBpblxuICAgICAgKHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0sTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBvc19lbmQpIH1cbiAgfCBydWxlX2NvbnRlbnQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAyIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSB9XG4gIDtcblxudmFyaWFibGVfZGVjbGFyYXRpb246XG4gIHwgTEFCRUwgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixwZW5kLGFuKSA9ICQzIGluICgoJDEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIH1cbiAgfCBJRCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LHBlbmQsYW4pID0gJDMgaW4gKCgkMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgfVxuICB8IExBQkVMIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl4kMV5cIidcIikpKSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIChcImxhYmVsIGV4cGVjdGVkXCIpKSkgfVxuICA7XG5cbmlkX2xpc3Q6XG4gIHwgSUQgYW5ub3RlZCB7IFsgJDEscmhzX3BvcyAxIF0gfVxuICB8IElEIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBpZF9saXN0IHsgKCQxLHJoc19wb3MgMSkgOjogJDUgfVxuICA7XG5cbmluaXRfZGVjbGFyYXRpb246XG4gIHwgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0ICh2LF8sXykgPSAkMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSAkMiBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAyKSBwZW5kKSkgfVxuICB8IGFsZ19leHByIE9QX1BBUiBhbm5vdGVkIHBhdHRlcm4gQ0xfUEFSIGFubm90ZWRcbiAgICB7IGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gJDQgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpIH1cbiAgfCBhbGdfZXhwciBpZF9saXN0XG4gICAgeyBsZXQgKHYsXyxfKSA9ICQxIGluICh2LEFzdC5JTklUX1RPSyAkMikgfVxuLypcbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIGluaXRfZGVjbGFyYXRpb24gQ0xfQ1VSIGFubm90ZWRcbiAgICB7IGxldCAoXyxhbGcsaW5pdCkgPSAkNSBpbiAoU29tZSAoJDEscmhzX3BvcyAxKSxhbGcsaW5pdCkgfVxuKi9cbiAgfCBJRCBMQVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh2LF8sXykgPSAkNCBpbiAodixBc3QuSU5JVF9UT0sgWyQxLHJoc19wb3MgMV0pfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpIH1cbiAgO1xuXG52YWx1ZV9saXN0OlxuICB8IFNUUklORyBhbm5vdGVkIHtbJDEsIHJoc19wb3MgMV19XG4gIHwgU1RSSU5HIGFubm90ZWQgdmFsdWVfbGlzdCB7KCQxLHJoc19wb3MgMSk6OiQzfVxuICA7XG5cbm5vbmVtcHR5X3ByaW50X2V4cHI6XG4gIHwgU1RSSU5HIGFubm90ZWRcbiAgICB7IChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgMSAkMSldLGVuZF9wb3MgMSwkMikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmXG4gICAgeyBsZXQgKGEscGVuZCxwKSA9ICQxIGluIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgYV0scGVuZCxwKSB9XG4gIHwgcHJpbnRfZXhwcl9saXN0IHsgJDEgfVxuICB8IE9QX1BBUiBhbm5vdGVkIHByaW50X2V4cHJfbGlzdCBDTF9QQVIgYW5ub3RlZFxuICAgIHsgbGV0ICh2LF8sYW4pID0gJDMgaW4gKHYsZW5kX3BvcyA0LGFuIEAgJDUpIH1cbiAgO1xuXG5wcmludF9leHByX2xpc3Q6XG4gIHwgU1RSSU5HIGFubm90ZWQgRE9UIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwclxuICAgIHsgbGV0IChsLHBlbmQscCkgPSAkNSBpbiAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKCQxLCByaHNfcG9zIDEpOjpsLHBlbmQscCkgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIERPVCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHJcbiAgICB7IGxldCAobCxwZW5kLHApID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciB2OjpsLHBlbmQscCkgfVxuICA7XG5cbnByaW50X2V4cHI6XG4gIHwgYW5ub3RlZCB7IChbXSxzdGFydF9wb3MgMSwkMSkgfVxuICB8IGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwciB7ICQyIH1cbiAgO1xuXG5lZmZlY3Q6XG4gIHwgQVNTSUdOIGFubm90ZWQgSUQgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkNSBpbiAoQXN0LlVQREFURSAoKCQzLHJoc19wb3MgMyksYSkscGVuZCxwKSB9XG4gIHwgQVNTSUdOIGFubm90ZWQgTEFCRUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkNSBpbiAoQXN0LlVQREFURSAoKCQzLHJoc19wb3MgMyksYSkscGVuZCxwKSB9XG4gIHwgVFJBQ0sgYW5ub3RlZCBMQUJFTCBhbm5vdGVkIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgKEFzdC5DRkxPV0xBQkVMICgkNSwoJDMscmhzX3BvcyAzKSksZW5kX3BvcyA1LCQ2KSB9XG4gIHwgVFJBQ0sgYW5ub3RlZCBwYXR0ZXJuIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwYXQsZXBhdCxfKSA9ICQzIGluXG4gICAgICAoQXN0LkNGTE9XTUlYICgkNCwocGF0LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBlcGF0KSksZW5kX3BvcyA0LCAkNSkgfVxuICB8IEZMVVggYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpblxuICAgICAgKChpZiAkNCB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCkgZWxzZSBBc3QuRElOT0ZGIHApLFxuICAgICAgIGVuZF9wb3MgNCwkNSkgfVxuICB8IEZMVVggYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIFNUUklORyBhbm5vdGVkIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpblxuICAgICAgaWYgJDYgJiYgJDQgPSBcImFic29sdXRlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxwKSxlbmRfcG9zIDYsJDcpXG4gICAgICBlbHNlIGlmICQ2ICYmICQ0ID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkscCksZW5kX3BvcyA2LCQ3KVxuICAgICAgZWxzZSBpZiAkNiAmJiAkNCA9IFwicmVsYXRpdmVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApLGVuZF9wb3MgNiwkNylcbiAgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgNCkpIH1cbiAgfCBBUFBMWSBhbm5vdGVkIGFsZ19leHByIHJ1bGVfY29udGVudFxuICAgIHsgbGV0IChyZXdyaXRlLF8scGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgKHsgQXN0LnJld3JpdGU7IEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kKSksXG4gICAgICBwZW5kLGFuXG4gICAgfVxuICB8IElOVFJPIGFubm90ZWQgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0IChtLHBlbmQscCkgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgICBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fY3JlYXRlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgfVxuICB8IElOVFJPIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyBcXFxuJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIH1cbiAgfCBERUxFVEUgYW5ub3RlZCBhbGdfZXhwciBwYXR0ZXJuXG4gICAgeyBsZXQgKG0scGVuZCxwKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQzIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2VyYXNlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSB9XG4gIHwgREVMRVRFIGFubm90ZWQgZXJyb3JcbiAgICAgICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgfVxuICB8IFNOQVBTSE9UIHByaW50X2V4cHIgeyBsZXQgKHMscGVuZCxwKSA9ICQyIGluIChBc3QuU05BUFNIT1QgKGZhbHNlLHMpLHBlbmQscCkgfVxuICB8IFNOQVBTSE9UIHByaW50X2V4cHIgYm9vbGVhbiBhbm5vdGVkIHsgbGV0IChzLF8sXykgPSAkMiBpbiAoQXN0LlNOQVBTSE9UICgkMyxzKSxlbmRfcG9zIDMsJDQpIH1cbiAgfCBTVE9QIHByaW50X2V4cHIgeyBsZXQgKHMscGVuZCxwKSA9ICQyIGluIChBc3QuU1RPUCBzLHBlbmQscCkgfVxuICB8IFBSSU5URiBwcmludF9leHByIEdSRUFURVIgcHJpbnRfZXhwclxuICAgIHsgbGV0IChmLHBlbmQscCkgPSAkNCBpbiBsZXQgKGMsXyxfKSA9ICQyIGluIChBc3QuUFJJTlQgKGYsYykscGVuZCxwKSB9XG4gIHwgUFJJTlRGIHByaW50X2V4cHIgeyBsZXQgKGMscGVuZCxwKSA9ICQyIGluIChBc3QuUFJJTlQgKFtdLGMpLHBlbmQscCkgfVxuICB8IFBMT1RFTlRSWSBhbm5vdGVkIHsgKEFzdC5QTE9URU5UUlksZW5kX3BvcyAxLCQyKSB9XG4gIHwgU1BFQ0lFU19PRiBhbm5vdGVkIHBhdHRlcm4gYm9vbGVhbiBhbm5vdGVkIEdSRUFURVIgcHJpbnRfZXhwclxuICAgIHtcbiAgICAgIGxldCAoZmlsZSxwZW5kLHApID0gJDcgaW5cbiAgICAgIGxldCAocGF0LHBlbmRwLF8pID0gJDMgaW5cbiAgICAgIChBc3QuU1BFQ0lFU19PRiAoJDQsZmlsZSwocGF0LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgcGVuZHApKSxcbiAgICAgICBwZW5kLHApIH1cbiAgO1xuXG5pZGluOlxufCBJRCBhbm5vdGVkIExBUiBhbm5vdGVkIGFsZ19leHByIHtcbiAgIGxldCAodixwZW5kLHApID0gJDUgaW5cbiAgIGxldCB0ayA9ICgkMSxyaHNfcG9zIDEpIGluXG4gICAgKEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAoe0FzdC5yZXdyaXRlID1cbiAgICAgICAgICAgICAgQXN0LkVkaXRcbiAgICAgICAgICAgICAgICAgIHtBc3QubWl4PVtdO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHYsKEFsZ19leHByLlRPS0VOX0lEICQxLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zICA0KSBwZW5kKSkscGVuZCxwKVxuICAgfVxufCBJRCBhbm5vdGVkIExBUiBlcnJvclxuICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICdJRCA8LSBhbGdfZXhwcmVzc2lvbidcIikpIH1cbnwgSUQgZXJyb3JcbiAgICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbiAgIGV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSB9O1xuO1xuXG5lZmZlY3Rfb3JfaWRpbjpcbiAgfCBlZmZlY3QgeyQxfVxuICB8IGlkaW4geyQxfVxuXG5wYXJ0aWFsX2VmZmVjdF9saXN0OlxuICB8IE9QX1BBUiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgQ0xfUEFSIGFubm90ZWQgeyAkMyB9XG4gIHwgZWZmZWN0X29yX2lkaW4gU0VNSUNPTE9OIGFubm90ZWQgeyBsZXQgKGUsXyxfKSA9ICQxIGluIChbZV0sZW5kX3BvcyAyLCQzKSB9XG4gIHwgZWZmZWN0X29yX2lkaW4geyBsZXQgKGUscCxhKSA9ICQxIGluIChbZV0scCxhKSB9XG4gIHwgZWZmZWN0X29yX2lkaW4gU0VNSUNPTE9OIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdFxuICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuXG5wYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluOlxuICAgICAgfCBpZGluIFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICAgICAgfCBpZGluIHsgbGV0IChlLHAsYSkgPSAkMSBpbiAoW2VdLHAsYSkgfVxuICAgICAgfCBpZGluIFNFTUlDT0xPTiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RcbiAgICAgICAgICB7IGxldCAoZSxfLF8pID0gJDEgaW4gbGV0IChsLHBlbmQsYSkgPSAkNCBpbiAoZTo6bCxwZW5kLGEpIH1cblxuZWZmZWN0X2xpc3Q6XG4gIHwgT1BfUEFSIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBDTF9QQVIgYW5ub3RlZCB7ICQzIH1cbiAgfCBPUF9QQVIgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IENMX1BBUiBhbm5vdGVkIFNFTUlDT0xPTiBhbm5vdGVkIHtsZXQgKGUsXyxfKSA9ICAkMyBpbiBlLGVuZF9wb3MgNiwkNyB9XG4gIHwgZWZmZWN0IFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICB8IGVmZmVjdCBTRU1JQ09MT04gYW5ub3RlZCBlZmZlY3RfbGlzdFxuICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuICA7XG5cbnN0YW5kYWxvbmVfZWZmZWN0X2xpc3Q6XG4gIHwgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IEVPRiB7IGxldCAoZSxfLF8pID0gJDIgaW4gZSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiUHJvYmxlbWF0aWMgZWZmZWN0IGxpc3RcIikpIH1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fYWxhcm06XG4gIHwgYW5ub3RlZCB7IE5vbmUgfVxuICB8IGFubm90ZWQgQUxBUk0gYW5ub3RlZCBuYnIgYW5ub3RlZCB7IFNvbWUgJDQgfVxuICB8IGFubm90ZWQgQUxBUk0gZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiYWxhcm0gdGFrZXMgYSBudW1iZXIgYXMgYXJndW1lbnRcIikpIH1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQ6XG4gIHwgUkVQRUFUIGFubm90ZWQgYm9vbF9leHByIHsgbGV0IChiLHBlbmQscCkgPSAkMyBpbiAoU29tZSBiLHBlbmQscCkgfVxuXG5wZXJ0dXJiYXRpb25fcG9zdDpcbiAgfCB7IChOb25lLCBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCksW10pIH1cbiAgfCBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQgeyQxfVxuICA7XG5cbnBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbjpcbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGFubm90ZWQgZWZmZWN0X2xpc3QgcGVydHVyYmF0aW9uX3Bvc3RcbiAgICB7IGxldCAocHJlLF8sXykgPSAkMiBpblxuICAgICAgbGV0IChlLF8sXykgPSAkNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSAkNiBpblxuICAgICAgKCQxLFNvbWUgcHJlLGUscG9zdCkgfVxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBhbm5vdGVkIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyBsZXQgKGUsXyxfKSA9ICQ0IGluIGxldCAocG9zdCxfLF8pID0gJDUgaW4gKCQxLE5vbmUsZSxwb3N0KSB9XG5cbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbiBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWRcbiAgICB7IGxldCAocHJlLF8sXykgPSAkMiBpblxuICAgICAgbGV0IChlLF8sXykgPSAkNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSAkNiBpblxuICAgICAgKCQxLFNvbWUgcHJlLGUscG9zdCkgfVxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4gcGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkXG4gICAgICAgIHsgbGV0IChlLF8sXykgPSAkNCBpblxuICAgICAgICAgIGxldCAocG9zdCxfLF8pID0gJDUgaW5cbiAgICAgICAgICAoJDEsTm9uZSxlLHBvc3QpIH1cbiAgO1xuXG5zZW50ZW5jZTpcbiAgfCBMQUJFTCBhbm5vdGVkIHJ1bGVcbiAgICB7IGFkZCAoQXN0LlJVTEUoU29tZSAoJDEsIHJoc19wb3MgMSksJDMpKSB9XG4gIHwgTEFCRUwgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQ1IGluIGFkZCAoQXN0LkRFQ0xBUkUgKCgkMSxyaHNfcG9zIDEpLHYpKSB9XG4gIHwgcnVsZSB7IGFkZCAoQXN0LlJVTEUgKE5vbmUsJDEpKSB9XG4gIHwgU0lHTkFUVVJFIGFubm90ZWQgYWdlbnRfc2lnIHsgbGV0IChhLF8sXykgPSAkMyBpbiBhZGQgKEFzdC5TSUcgYSkgfVxuICB8IFNJR05BVFVSRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmVcIikpIH1cbiAgfCBUT0tFTiBhbm5vdGVkIElEIGFubm90ZWQgeyBhZGQgKEFzdC5UT0tFTlNJRyAoJDMscmhzX3BvcyAzKSkgfVxuICB8IFBMT1QgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixfLF8pID0gJDMgaW4gYWRkIChBc3QuUExPVCB2KSB9XG4gIHwgUExPVCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDNcbiAgICAgICAgICAgICAgICAgIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIFxcXG5hbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkgfVxuICB8IExFVCBhbm5vdGVkIHZhcmlhYmxlX2RlY2xhcmF0aW9uXG4gICAgeyBsZXQgKGksdixfLF8pID0gJDMgaW4gYWRkIChBc3QuREVDTEFSRSAoaSx2KSkgfVxuICB8IE9CUyBhbm5vdGVkIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHsgbGV0IChpLHYsXyxfKSA9ICQzIGluIGFkZCAoQXN0Lk9CUyAoaSx2KSkgfVxuICB8IElOSVQgYW5ub3RlZCBpbml0X2RlY2xhcmF0aW9uXG4gICAgeyBsZXQgKGFsZyxpbml0KSA9ICQzIGluIGFkZCAoQXN0LklOSVQgKGFsZyxpbml0KSkgfVxuICB8IFBFUlQgcGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uIHsgYWRkIChBc3QuUEVSVCAoJDIsIHJoc19wb3MgMikpIH1cbiAgfCBDT05GSUcgYW5ub3RlZCBTVFJJTkcgYW5ub3RlZCB2YWx1ZV9saXN0XG4gICAgeyBhZGQgKEFzdC5DT05GSUcgKCgkMyxyaHNfcG9zIDMpLCQ1KSkgfVxuICA7XG5cbm1vZGVsX2JvZHk6XG4gIHwgc2VudGVuY2UgbW9kZWxfYm9keSB7ICQyIH1cbiAgfCBFT0YgeyBvdXRwdXQgKCkgfVxuICA7XG5cbm1vZGVsOlxuICB8IGFubm90ZWQgbW9kZWxfYm9keSB7ICQyIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiSW5jb3JyZWN0IGJlZ2lubmluZyBvZiBzZW50ZW5jZSAhISFcIikpIH1cbiAgO1xuXG5pbnRlcmFjdGl2ZV9jb21tYW5kOlxuICB8IGFubm90ZWQgUlVOIGFubm90ZWQgU0VNSUNPTE9OIHsgQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIH1cbiAgfCBhbm5vdGVkIFJVTiBhbm5vdGVkIGJvb2xfZXhwciBTRU1JQ09MT04geyBsZXQgKHBhdXNlLF8sXykgPSAkNCBpbiBBc3QuUlVOIHBhdXNlIH1cbiAgfCBhbm5vdGVkIGVmZmVjdCBTRU1JQ09MT04geyBsZXQgKGVmZixfLF8pID0gJDIgaW4gQXN0Lk1PRElGWSBbZWZmXSB9XG4gIHwgYW5ub3RlZCBFT0YgeyBBc3QuUVVJVCB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpIH1cbiAgO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGFwcGVuZF90b19hc3RfY29tcGlsIHJldl9pbnN0ciBjb21waWwgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gciAtPiBmdW5jdGlvblxuICAgICAgfCBBc3QuUlVMRSBydSAtPiB7IHIgd2l0aCBBc3QucnVsZXMgPSBydSA6OiByLkFzdC5ydWxlcyB9XG4gICAgICB8IEFzdC5TSUcgYWcgLT4geyByIHdpdGggQXN0LnNpZ25hdHVyZXMgPSBhZyA6OiByLkFzdC5zaWduYXR1cmVzIH1cbiAgICAgIHwgQXN0LlRPS0VOU0lHIHN0cl9wb3MgLT4geyByIHdpdGggQXN0LnRva2VucyA9IHN0cl9wb3MgOjogci5Bc3QudG9rZW5zIH1cbiAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsIHZvbCwgdm9sX3BhcmFtKSAtPlxuICAgICAgICB7IHIgd2l0aCBBc3Qudm9sdW1lcyA9ICh2b2xfdHlwZSwgdm9sLCB2b2xfcGFyYW0pIDo6IHIuQXN0LnZvbHVtZXMgfVxuICAgICAgfCBBc3QuSU5JVCAoYWxnLCBpbml0X3QpIC0+XG4gICAgICAgIHsgciB3aXRoIEFzdC5pbml0ID0gKGFsZywgaW5pdF90KSA6OiByLkFzdC5pbml0IH1cbiAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+IHsgciB3aXRoIEFzdC52YXJpYWJsZXMgPSB2YXIgOjogci5Bc3QudmFyaWFibGVzIH1cbiAgICAgIHwgQXN0Lk9CUyAoKChsYmwsIHBvcyksIF8pIGFzIHZhcikgLT5cbiAgICAgICAgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG4gICAgICAgIHtcbiAgICAgICAgICByIHdpdGhcbiAgICAgICAgICBBc3QudmFyaWFibGVzID0gdmFyIDo6IHIuQXN0LnZhcmlhYmxlcztcbiAgICAgICAgICBBc3Qub2JzZXJ2YWJsZXMgPSAoQWxnX2V4cHIuQUxHX1ZBUiBsYmwsIHBvcykgOjogci5Bc3Qub2JzZXJ2YWJsZXM7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LlBMT1QgZXhwciAtPiB7IHIgd2l0aCBBc3Qub2JzZXJ2YWJsZXMgPSBleHByIDo6IHIuQXN0Lm9ic2VydmFibGVzIH1cbiAgICAgIHwgQXN0LlBFUlQgKChhbGFybSwgcHJlLCBlZmZlY3QsIG9wdCksIHBvcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC5wZXJ0dXJiYXRpb25zID1cbiAgICAgICAgICAgICgoYWxhcm0sIHByZSwgZWZmZWN0LCBvcHQpLCBwb3MpIDo6IHIuQXN0LnBlcnR1cmJhdGlvbnM7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSwgdmFsdWVfbGlzdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLCB2YWx1ZV9saXN0KSA6OiByLkFzdC5jb25maWd1cmF0aW9ucztcbiAgICAgICAgfSlcbiAgICBjb21waWwgKExpc3QucmV2IHJldl9pbnN0cilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbntcbm9wZW4gS3BhcnNlcjRcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cbn1cblxubGV0IGVvbCA9ICdcXHInPyAnXFxuJ1xubGV0IGJsYW5rID0gWycgJyAnXFx0J11cbmxldCBpbnRlZ2VyID0gWycwJy0nOSddK1xubGV0IHJlYWwgPVxuICAoWycwJy0nOSddKyBbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKSB8XG4gICgoKFsnMCctJzknXSsgJy4nIFsnMCctJzknXSopIHwgKCcuJyBbJzAnLSc5J10rKSlcbiAgICAoWydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKyk/KVxubGV0IGlkID0gWydfJyAnfiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJ34nICctJyAnKyddKyB8XG4gICAgICAgICBbJ2EnLSd6JyAnQSctJ1onXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICd+JyAnLScgJysnXSpcblxucnVsZSB0b2tlbiA9IHBhcnNlXG4gIHwgJy8nICcvJyAoW14nXFxyJydcXG4nXSogYXMgcykgKGVvbCB8IGVvZikge0xleGluZy5uZXdfbGluZSBsZXhidWY7IENPTU1FTlQgc31cbiAgfCAnLycgJyonIHtDT01NRU5UIChpbmxpbmVfY29tbWVudCBbXSBsZXhidWYpfVxuICB8IGVvbCB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IE5FV0xJTkUgfVxuICB8IGJsYW5rICsgYXMgeCB7IFNQQUNFIHggfVxuICB8ICcjJyB7IFNIQVJQIH1cbiAgfCBcIiYmXCIgeyBBTkQgfVxuICB8IFwifHxcIiB7IE9SIH1cbiAgfCBcIjwtPlwiIHsgTFJBUiB9XG4gIHwgXCI8LVwiIHtMQVJ9XG4gIHwgXCItPlwiIHsgUkFSIH1cbiAgfCBcIjw+XCIgeyBESUZGIH1cbiAgfCAnOicgeyBDT0xPTiB9XG4gIHwgJzsnIHsgU0VNSUNPTE9OIH1cbiAgfCAnQCcgeyBBVCB9XG4gIHwgJywnIHsgQ09NTUEgfVxuICB8ICdcXFxcJyB7QkFDS1NMQVNIfVxuICB8ICcoJyB7IE9QX1BBUiB9XG4gIHwgJyknIHsgQ0xfUEFSIH1cbiAgfCAnWycgeyBPUF9CUkEgfVxuICB8ICddJyB7IENMX0JSQSB9XG4gIHwgJ3snIHsgT1BfQ1VSIH1cbiAgfCAnfScgeyBDTF9DVVIgfVxuICB8ICd8JyB7IFBJUEUgfVxuICB8ICcuJyB7IERPVCB9XG4gIHwgJ18nIHsgVU5ERVJTQ09SRSB9XG4gIHwgJysnIHsgUExVUyB9XG4gIHwgJyonIHsgTVVMVCB9XG4gIHwgJy0nIHsgTUlOVVMgfVxuICB8ICdeJyB7IFBPVyB9XG4gIHwgJy8nIHsgRElWIH1cbiAgfCAnPCcgeyBTTUFMTEVSIH1cbiAgfCAnPicgeyBHUkVBVEVSIH1cbiAgfCAnPScgeyBFUVVBTCB9XG4gIHwgaW50ZWdlciBhcyBuIHsgSU5UIChpbnRfb2Zfc3RyaW5nIG4pIH1cbiAgfCByZWFsIGFzIGYgeyBGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpIH1cbiAgfCAnXFwnJyAoW14nXFxuJyAnXFwnJ10rIGFzIHgpICdcXCcneyBMQUJFTCh4KSB9XG4gIHwgJ1xcXCInIChbXidcXG4nICdcXFwiJ10qIGFzIHgpICdcXFwiJ3sgU1RSSU5HKHgpIH1cbiAgfCAnXFwnJyAoW14nXFxuJyAnXFwnJ10rIGFzIHMpIChlb2YgfCAnXFxuJylcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIGxhYmVsOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgJ1xcXCInIChbXidcXG4nICdcXFwiJ10rIGFzIHMpIChlb2YgfCAnXFxuJylcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZzogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8IGlkIGFzIHN0ciB7IGtleXdvcmRfb3JfaWQgc3RyIH1cbiAgfCAnJScgKGlkIGFzIGxhYikgJzonIHtcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuICAgIHwgXCJpbml0XCIgLT4gSU5JVFxuICAgIHwgXCJ2YXJcIiAtPiBMRVRcbiAgICB8IFwicGxvdFwiIC0+IFBMT1RcbiAgICB8IFwibW9kXCIgLT4gUEVSVFxuICAgIHwgXCJvYnNcIiAtPiBPQlNcbiAgICB8IFwiZGVmXCIgLT4gQ09ORklHXG4gICAgfCBcInRva2VuXCIgLT4gVE9LRU5cbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gZGlyZWN0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICB9XG4gIHwgJ1snIGJsYW5rKiAnPycgYmxhbmsqICddJyB7IFRIRU4gfVxuICB8ICdbJyBibGFuayogJzonIGJsYW5rKiAnXScgeyBFTFNFIH1cbiAgfCAnWycgYmxhbmsqIChpZCBhcyBsYWIpIGJsYW5rKiAnXScge1xuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcIkVcIiAtPiBFVkVOVFxuICAgIHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcbiAgICB8IFwiVFwiIC0+IFRJTUVcbiAgICB8IFwiVHNpbVwiIC0+IENQVVRJTUVcbiAgICB8IFwibG9nXCIgLT4gTE9HXG4gICAgfCBcInNpblwiIC0+IFNJTlVTXG4gICAgfCBcImNvc1wiIC0+IENPU0lOVVNcbiAgICB8IFwidGFuXCIgLT4gVEFOXG4gICAgfCBcImV4cFwiIC0+IEVYUE9ORU5UXG4gICAgfCBcImludFwiIC0+IEFCU1xuICAgIHwgXCJtb2RcIiAtPiBNT0RcbiAgICB8IFwic3FydFwiIC0+IFNRUlRcbiAgICB8IFwidHJ1ZVwiIC0+IFRSVUVcbiAgICB8IFwiZmFsc2VcIiAtPiBGQUxTRVxuICAgIHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuICAgIHwgXCJtYXhcIiAtPiBNQVhcbiAgICB8IFwibWluXCIgLT4gTUlOXG4gICAgfCBcIkVtYXhcIiAtPiBFTUFYXG4gICAgfCBcIlRtYXhcIiAtPiBUTUFYXG4gICAgfCBcIm5vdFwiIC0+IE5PVFxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBwcmltaXRpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCAnJCcgKGlkIGFzIHMpIHtcbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFwiQVBQTFlcIiAtPiBBUFBMWVxuICAgIHwgXCJERUxcIiAtPiBERUxFVEVcbiAgICB8IFwiQUREXCIgLT4gSU5UUk9cbiAgICB8IFwiU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuICAgIHwgXCJTVE9QXCIgLT4gU1RPUFxuICAgIHwgXCJESU5cIiAtPiBGTFVYXG4gICAgfCBcIlRSQUNLXCIgLT4gVFJBQ0tcbiAgICB8IFwiVVBEQVRFXCIgLT4gQVNTSUdOXG4gICAgfCBcIlBSSU5UXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBSSU5URlwiIC0+IFBSSU5URlxuICAgIHwgXCJQTE9URU5UUllcIiAtPiBQTE9URU5UUllcbiAgICB8IFwiUlVOXCIgLT4gUlVOXG4gICAgfCBcIlNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG4gICAgfCBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBpbnRlcnZlbnRpb246IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCBlb2YgeyBsZXhidWYuTGV4aW5nLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyBFT0YgfVxuICB8IF8gYXMgYyB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBjaGFyYWN0ZXI6IFwiXlN0cmluZy5tYWtlIDEgYyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpIH1cblxuYW5kIGlubGluZV9jb21tZW50IGFjYyA9IHBhcnNlXG4gIHwgKFteJ1xcbicgJyonICdcXFwiJyAnLyddICopIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgnLycgJy8nIFteJ1xccicnXFxuJ10qIGFzIHgpIGVvbFxuICAgIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCBlb2wgYXMgeCB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCcqJyBbXicvJyAnXFxuJyAnXFxcIiddKSBhcyB4IHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoJy8nIFteJyonICdcXG4nICdcXFwiJ10pIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICcqJyAnLycgeyBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgfVxuICB8IGVvZiB7IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSB9XG4gIHwgJyonICdcXG4nIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiKlxcblwiOjphY2MpIGxleGJ1ZiB9XG4gIHwgKCgnKicgfCAnLycpPyAnXFxcIicgW14nXFxuJyAnXFxcIiddKyAnXFxcIicpIGFzIHhcbiAgICB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCgnKicgfCAnLycpPyAnXFxcIicgW14nXFxuJyAnXFxcIiddKyAoZW9mIHwgJ1xcbicpKSBhcyB4XG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmcgaW4gY29tbWVudDogXCJeeCxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8ICcvJyAnKidcbiAgICB7IGlubGluZV9jb21tZW50IChcIiovXCI6OihpbmxpbmVfY29tbWVudCBbXCIvKlwiXSBsZXhidWYpOjogYWNjKSBsZXhidWYgfVxuICB8ICcvJyAnXFxuJyB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIi9cXG5cIjo6YWNjKSBsZXhidWYgfVxuXG5hbmQgcmVjb3ZlcnkgPSBwYXJzZVxuICB8IFteJ1xccicnXFxuJ10qIChlb2wgfCBlb2YpIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmfVxuXG57XG4gIGxldCByZWMgYXV4X21vZGVsIGVyciBsZXggPVxuICB0cnkgbGV0IG91dCA9IEtwYXJzZXI0Lm1vZGVsIHRva2VuIGxleCBpbiAob3V0LCBMaXN0LnJldiBlcnIpXG4gIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgZSAtPlxuICAgIGxldCAoKSA9IHJlY292ZXJ5IGxleCBpblxuICAgIGF1eF9tb2RlbCAoZTo6ZXJyKSBsZXhcblxuICBsZXQgbW9kZWwgbGV4ID0gYXV4X21vZGVsIFtdIGxleFxuXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmljID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmljIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAge2xleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCB3aXRoIExleGluZy5wb3NfZm5hbWUgPSBmaWN9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpYyA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmljIGluXG4gICAgbGV0IChvdXQsZXJyKSA9IG1vZGVsIGxleGJ1ZiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgbGV0ICgpID0gbWF0Y2ggZXJyIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgKG1zZyxwb3MpOjpfIC0+XG4gICAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICAgIGV4aXQgMyBpblxuICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICBDc3QuYXBwZW5kX3RvX2FzdF9jb21waWwgb3V0IGNvbXBpbFxufVxuIiwiIyA5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiBcbm9wZW4gS3BhcnNlcjRcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cblxuIyAxNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIwOVxcMjU1XFwyMTBcXDI1NVxcMDYyXFwwMDBcXDEyNFxcMDAwXFwyMDlcXDAwMFxcMDMzXFwwMDFcXDIzN1xcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxMTJcXDAwMVxcMjIzXFwyNTVcXDIyNFxcMjU1XFwyMjdcXDI1NVxcMjI5XFwyNTVcXDIzMFxcMjU1XFwxNzNcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMjM0XFwyNTVcXDIzNVxcMjU1XFwyMzZcXDI1NVxcMDMxXFwwMDJcXDIzOFxcMjU1XFwyMzlcXDI1NVxcMjQwXFwyNTVcXFxuICAgIFxcMjQxXFwyNTVcXDI0MlxcMjU1XFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMDI5XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDI1MVxcMjU1XFwyNDBcXDAwMFxcMjUzXFwyNTVcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMjU0XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMjUwXFwyNTVcXDI0OVxcMjU1XFwyNDVcXDI1NVxcMDkyXFwwMDBcXDI0OFxcMjU1XFwyNDZcXDI1NVxcMTQ1XFwwMDJcXFxuICAgIFxcMjI1XFwwMDJcXDE3MVxcMDAxXFwwMzJcXDAwMlxcMDgzXFwwMDNcXDIxNFxcMjU1XFwyMTNcXDI1NVxcMTk3XFwwMDNcXDIxMlxcMjU1XFxcbiAgICBcXDA2M1xcMDAyXFwwNzNcXDAwM1xcMjU1XFwwMDFcXDE0NFxcMDAxXFwwMjVcXDAwMlxcMDIxXFwwMDRcXDEwMFxcMDA0XFwxMTVcXDAwMlxcXG4gICAgXFwxMzBcXDAwMlxcMDQ4XFwwMDNcXDE3N1xcMDAwXFwyMThcXDI1NVxcMjIwXFwyNTVcXDIxOVxcMjU1XFwwODNcXDAwM1xcMjE3XFwyNTVcXFxuICAgIFxcMTM3XFwwMDRcXDIxN1xcMDA0XFwwNDFcXDAwNVxcMjE1XFwyNTVcXDEyMVxcMDA1XFwyMDFcXDAwNVxcMDI1XFwwMDZcXDE5N1xcMDAzXFxcbiAgICBcXDA4NFxcMDAzXFwyNDlcXDI1NVxcMTM0XFwwMDRcXDI1M1xcMjU1XFwxMzhcXDAwNlxcMTM5XFwwMDZcXDE0MFxcMDA2XFwyNDRcXDI1NVxcXG4gICAgXFwyNDVcXDI1NVxcMjUxXFwyNTVcXDAxM1xcMDAwXFwyNTRcXDI1NVxcMDA0XFwwMDBcXDAxN1xcMDAwXFwyNDhcXDI1NVxcMjUwXFwyNTVcXFxuICAgIFxcMjUyXFwyNTVcXDE5OFxcMDAzXFwyNDZcXDI1NVxcMjQ3XFwyNTVcXDIwN1xcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDAzOVxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMjJcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzlcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODVcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM5XFwwMDBcXDAzNVxcMDAwXFwwOTFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMzJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMVxcMDAwXFwwMTNcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMjhcXDAwMFxcMDE2XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAyN1xcMDAwXFwwMjZcXDAwMFxcMDI5XFwwMDBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMTlcXDAwMFxcMDEyXFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAxOFxcMDAwXFwwMzBcXDAwMFxcMDE3XFwwMDBcXDAwNlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDQyXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY3XFwwMDBcXDA3N1xcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA2OFxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwxMDJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzdcXDAwMFxcMDMzXFwwMDBcXDA3M1xcMDAwXFwwNDRcXDAwMFxcMDA1XFwwMDBcXDAzOFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAzOVxcMDAwXFwwNDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDYzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNDhcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1MVxcMDAwXFwwNzFcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTZcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMDk4XFwwMDBcXDA0OFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDk1XFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDk4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4M1xcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDkwXFwwMDBcXFxuICAgIFxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMzBcXDAwMFxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwNjZcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDEwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAzNlxcMDAwXFwwMzNcXDAwMFxcMDA0XFwwMDBcXDAyOVxcMDAwXFwwMDVcXDAwMFxcMDM2XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDM4XFwwMDBcXDAyOVxcMDAwXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwOTNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA4XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwMDlcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDA1MFxcMDAwXFwwNThcXDAwMFxcMDE1XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA1NlxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcXG4gICAgXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDU2XFwwMDBcXDAyMFxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDUxXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA3MFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDUxXFwwMDBcXDA3OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzlcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwODJcXDAwMFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAwXFwwODJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAyXFwwMDFcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDM4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDkzXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA4NFxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDQ4XFwwMDBcXDA2NlxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcXDI1NVxcMDAyXFwyNTVcXDI1NVxcMDA2XFwyNTVcXDI1NVxcMDA1XFwyNTVcXDI1NVxcMDA0XFwyNTVcXDI1NVxcMDAzXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwM1xcMjU1XFwwMDBcXDAwMlxcMDAxXFwwMDRcXDI1NVxcMDAwXFwwMDVcXDI1NVxcMDAwXFwwMDZcXDI1NVxcMDAxXFwyNTVcXFxuICAgIFxcMjU1XFwwMDBcXDAwMVxcMjU1XCI7XG59XG5cbmxldCByZWMgdG9rZW4gbGV4YnVmID1cbiAgbGV4YnVmLkxleGluZy5sZXhfbWVtIDwtIEFycmF5Lm1ha2UgNyAoLTEpOyBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLm5ld19lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzNSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgNzU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgMzUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgQ09NTUVOVCBzKVxuIyA3NjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgIChDT01NRU5UIChpbmxpbmVfY29tbWVudCBbXSBsZXhidWYpKVxuIyA3NjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBORVdMSU5FIClcbiMgNzczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMyAtPlxubGV0XG4jIDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIHhcbiMgNzc5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBTUEFDRSB4IClcbiMgNzgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNCAtPlxuIyAzOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU0hBUlAgKVxuIyA3ODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggQU5EIClcbiMgNzkzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNiAtPlxuIyA0MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIE9SIClcbiMgNzk4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNyAtPlxuIyA0MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgKCBMUkFSIClcbiMgODAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgOCAtPlxuIyA0MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoTEFSKVxuIyA4MDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA5IC0+XG4jIDQ0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggUkFSIClcbiMgODEzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNDUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBESUZGIClcbiMgODE4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNDYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENPTE9OIClcbiMgODIzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTIgLT5cbiMgNDcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNFTUlDT0xPTiApXG4jIDgyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEzIC0+XG4jIDQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBBVCApXG4jIDgzMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE0IC0+XG4jIDQ5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDT01NQSApXG4jIDgzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE1IC0+XG4jIDUwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgIChCQUNLU0xBU0gpXG4jIDg0MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE2IC0+XG4jIDUxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBPUF9QQVIgKVxuIyA4NDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA1MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ0xfUEFSIClcbiMgODUzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTggLT5cbiMgNTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE9QX0JSQSApXG4jIDg1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE5IC0+XG4jIDU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDTF9CUkEgKVxuIyA4NjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMCAtPlxuIyA1NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggT1BfQ1VSIClcbiMgODY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjEgLT5cbiMgNTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENMX0NVUiApXG4jIDg3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIyIC0+XG4jIDU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQSVBFIClcbiMgODc4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjMgLT5cbiMgNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIERPVCApXG4jIDg4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI0IC0+XG4jIDU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBVTkRFUlNDT1JFIClcbiMgODg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjUgLT5cbiMgNjAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBMVVMgKVxuIyA4OTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNiAtPlxuIyA2MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggTVVMVCApXG4jIDg5OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI3IC0+XG4jIDYyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBNSU5VUyApXG4jIDkwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI4IC0+XG4jIDYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQT1cgKVxuIyA5MDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyOSAtPlxuIyA2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggRElWIClcbiMgOTEzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzAgLT5cbiMgNjUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNNQUxMRVIgKVxuIyA5MTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMSAtPlxuIyA2NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggR1JFQVRFUiApXG4jIDkyMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMyIC0+XG4jIDY3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBFUVVBTCApXG4jIDkyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMzIC0+XG5sZXRcbiMgNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgblxuIyA5MzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIElOVCAoaW50X29mX3N0cmluZyBuKSApXG4jIDkzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM0IC0+XG5sZXRcbiMgNjkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgZlxuIyA5NDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNjkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAoIEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikgKVxuIyA5NDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzNSAtPlxubGV0XG4jIDcwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgOTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA3MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMQUJFTCh4KSApXG4jIDk1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM2IC0+XG5sZXRcbiMgNzEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA5NjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDcxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNUUklORyh4KSApXG4jIDk2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM3IC0+XG5sZXRcbiMgNzIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA5NzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyA3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBsYWJlbDogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyA5ODEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzOCAtPlxubGV0XG4jIDc3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgOTg3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgNzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDk5NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM5IC0+XG5sZXRcbiMgODIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgIHN0clxuIyAxMDAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDgyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgKCBrZXl3b3JkX29yX2lkIHN0ciApXG4jIDEwMDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MCAtPlxubGV0XG4jIDgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIGxhYlxuIyAxMDEwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcbiAgICB8IFwiaW5pdFwiIC0+IElOSVRcbiAgICB8IFwidmFyXCIgLT4gTEVUXG4gICAgfCBcInBsb3RcIiAtPiBQTE9UXG4gICAgfCBcIm1vZFwiIC0+IFBFUlRcbiAgICB8IFwib2JzXCIgLT4gT0JTXG4gICAgfCBcImRlZlwiIC0+IENPTkZJR1xuICAgIHwgXCJ0b2tlblwiIC0+IFRPS0VOXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGRpcmVjdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMDI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDEgLT5cbiMgOTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUSEVOIClcbiMgMTAzMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQyIC0+XG4jIDk5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRUxTRSApXG4jIDEwMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MyAtPlxubGV0XG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiXG4jIDEwNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMSkgaW5cbiMgMTAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcIkVcIiAtPiBFVkVOVFxuICAgIHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcbiAgICB8IFwiVFwiIC0+IFRJTUVcbiAgICB8IFwiVHNpbVwiIC0+IENQVVRJTUVcbiAgICB8IFwibG9nXCIgLT4gTE9HXG4gICAgfCBcInNpblwiIC0+IFNJTlVTXG4gICAgfCBcImNvc1wiIC0+IENPU0lOVVNcbiAgICB8IFwidGFuXCIgLT4gVEFOXG4gICAgfCBcImV4cFwiIC0+IEVYUE9ORU5UXG4gICAgfCBcImludFwiIC0+IEFCU1xuICAgIHwgXCJtb2RcIiAtPiBNT0RcbiAgICB8IFwic3FydFwiIC0+IFNRUlRcbiAgICB8IFwidHJ1ZVwiIC0+IFRSVUVcbiAgICB8IFwiZmFsc2VcIiAtPiBGQUxTRVxuICAgIHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuICAgIHwgXCJtYXhcIiAtPiBNQVhcbiAgICB8IFwibWluXCIgLT4gTUlOXG4gICAgfCBcIkVtYXhcIiAtPiBFTUFYXG4gICAgfCBcIlRtYXhcIiAtPiBUTUFYXG4gICAgfCBcIm5vdFwiIC0+IE5PVFxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBwcmltaXRpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIClcbiMgMTA3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQ0IC0+XG5sZXRcbiMgMTI3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIHNcbiMgMTA4MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgXCJBUFBMWVwiIC0+IEFQUExZXG4gICAgfCBcIkRFTFwiIC0+IERFTEVURVxuICAgIHwgXCJBRERcIiAtPiBJTlRST1xuICAgIHwgXCJTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG4gICAgfCBcIlNUT1BcIiAtPiBTVE9QXG4gICAgfCBcIkRJTlwiIC0+IEZMVVhcbiAgICB8IFwiVFJBQ0tcIiAtPiBUUkFDS1xuICAgIHwgXCJVUERBVEVcIiAtPiBBU1NJR05cbiAgICB8IFwiUFJJTlRcIiAtPiBQUklOVEZcbiAgICB8IFwiUFJJTlRGXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICAgIHwgXCJSVU5cIiAtPiBSVU5cbiAgICB8IFwiU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0ZcbiAgICB8IHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGludGVydmVudGlvbjogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMTAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDUgLT5cbiMgMTQ3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBsZXhidWYuTGV4aW5nLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyBFT0YgKVxuIyAxMTA4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDYgLT5cbmxldFxuIyAxNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgY1xuIyAxMTE0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gY2hhcmFjdGVyOiBcIl5TdHJpbmcubWFrZSAxIGMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSApXG4jIDExMjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGlubGluZV9jb21tZW50IGFjYyBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSAyICgtMSk7IF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBhY2MgbGV4YnVmIDc5XG5hbmQgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTEzNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTEzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyAxNTUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyAxNTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICB4XG4jIDExNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgaW5cbiMgMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGluXG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE3OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDUgLT5cbiMgMTYwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICggU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIClcbiMgMTE4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDYgLT5cbiMgMTYxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgKVxuIyAxMTg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNyAtPlxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiKlxcblwiOjphY2MpIGxleGJ1ZiApXG4jIDExOTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA4IC0+XG5sZXRcbiMgMTYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExOTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDEyMDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA5IC0+XG5sZXRcbiMgMTY1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTIwOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGluIGNvbW1lbnQ6IFwiXngsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgMTIxNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEwIC0+XG4jIDE3MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCBpbmxpbmVfY29tbWVudCAoXCIqL1wiOjooaW5saW5lX2NvbW1lbnQgW1wiLypcIl0gbGV4YnVmKTo6IGFjYykgbGV4YnVmIClcbiMgMTIyMSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDExIC0+XG4jIDE3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIvXFxuXCI6OmFjYykgbGV4YnVmIClcbiMgMTIyNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlY292ZXJ5IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIDEwMFxuYW5kIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmKVxuIyAxMjM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTc3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiBcbiAgbGV0IHJlYyBhdXhfbW9kZWwgZXJyIGxleCA9XG4gIHRyeSBsZXQgb3V0ID0gS3BhcnNlcjQubW9kZWwgdG9rZW4gbGV4IGluIChvdXQsIExpc3QucmV2IGVycilcbiAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciBlIC0+XG4gICAgbGV0ICgpID0gcmVjb3ZlcnkgbGV4IGluXG4gICAgYXV4X21vZGVsIChlOjplcnIpIGxleFxuXG4gIGxldCBtb2RlbCBsZXggPSBhdXhfbW9kZWwgW10gbGV4XG5cbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWMgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWMgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICB7bGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIHdpdGggTGV4aW5nLnBvc19mbmFtZSA9IGZpY30gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmljIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWMgaW5cbiAgICBsZXQgKG91dCxlcnIpID0gbW9kZWwgbGV4YnVmIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICBsZXQgKCkgPSBtYXRjaCBlcnIgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCAobXNnLHBvcyk6Ol8gLT5cbiAgICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgICAgZXhpdCAzIGluXG4gICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgIENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBvdXQgY29tcGlsXG5cbiMgMTI3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgaXRlbSA9IHsgcmFuazogaW50OyBjb250ZW50OiBzdHJpbmcgfVxuXG50eXBlIGNhdGFsb2cgPSB7XG4gIGVsZW1lbnRzOiAoc3RyaW5nLCBpdGVtKSBIYXNodGJsLnQ7XG4gIGluZGV4OiBzdHJpbmcgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgYXN0OiBBc3QucGFyc2luZ19jb21waWwgb3B0aW9uIHJlZjtcbn1cblxudHlwZSBjYXRhbG9nX2l0ZW0gPSB7IHBvc2l0aW9uOiBpbnQ7IGlkOiBzdHJpbmcgfVxuXG5sZXQgd3JpdGVfY2F0YWxvZ19pdGVtIG9iIHsgcG9zaXRpb247IGlkIH0gPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiaWRcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIGlkIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicG9zaXRpb25cIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIHBvc2l0aW9uIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfY2F0YWxvZ19pdGVtIHAgbGIgPVxuICBsZXQgcG9zaXRpb24sIGlkLCBjb3VudCA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChwb3MsIGksIGMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwicG9zaXRpb25cIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIsIGksIHN1Y2MgY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwiaWRcIikgaW5cbiAgICAgICAgICBwb3MsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzdWNjIGNcbiAgICAgICAgKSlcbiAgICAgICgtMSwgXCJcIiwgMCkgcCBsYlxuICBpblxuICBsZXQgKCkgPSBhc3NlcnQgKGNvdW50ID0gMikgaW5cbiAgeyBwb3NpdGlvbjsgaWQgfVxuXG5sZXQgY3JlYXRlICgpID1cbiAge1xuICAgIGVsZW1lbnRzID0gSGFzaHRibC5jcmVhdGUgMTtcbiAgICBpbmRleCA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDEgTm9uZTtcbiAgICBhc3QgPSByZWYgTm9uZTtcbiAgfVxuXG5sZXQgcHV0IH5wb3NpdGlvbjpyYW5rIH5pZCB+Y29udGVudCBjYXRhbG9nID1cbiAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGNhdGFsb2cuZWxlbWVudHMgaWQgeyByYW5rOyBjb250ZW50IH0gaW5cbiAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgY2F0YWxvZy5pbmRleCByYW5rIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIChTb21lIGlkKSBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcbiAgfCBTb21lIGFpZSAtPlxuICAgIFJlc3VsdC5FcnJvclxuICAgICAgKFwiU2xvdCBcIiBeIHN0cmluZ19vZl9pbnQgcmFuayBeIFwiIGlzIG5vdCBhdmFpbGFibGUuIFRoZXJlIGlzIGFscmVhZHkgXCJcbiAgICAgXiBhaWUpXG5cbmxldCBmaWxlX2NyZWF0ZSB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2cgPVxuICBpZiBIYXNodGJsLm1lbSBjYXRhbG9nLmVsZW1lbnRzIGlkIHRoZW5cbiAgICBSZXN1bHQuRXJyb3JcbiAgICAgIChcIkEgZmlsZSBjYWxsZWQgXFxcIlwiIF4gaWQgXiBcIlxcXCIgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBjYXRhbG9nXCIpXG4gIGVsc2VcbiAgICBwdXQgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG5cbmxldCBmaWxlX21vdmUgfnBvc2l0aW9uIH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiTWlzc2luZyBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGluIHRoZSBjYXRhbG9nXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiRmlsZSBjYXRhbG9nIGhhcyBzZXJpb3VzIHByb2JsZW1zXCJcbiAgfCBbIHsgcmFuazsgY29udGVudCB9IF0gLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgTm9uZSBpblxuICAgIHB1dCB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcblxubGV0IGZpbGVfcGF0Y2ggfmlkIGNvbnRlbnQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIlVua25vd24gZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIlwiKVxuICB8IF8gOjogXyA6OiBfIC0+IFJlc3VsdC5FcnJvciBcIlNlcmlvdXMgcHJvYmxlbXMgaW4gZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgXyB9IF0gLT5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgY2F0YWxvZy5lbGVtZW50cyBpZCB7IHJhbms7IGNvbnRlbnQgfSBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcblxubGV0IGZpbGVfZGVsZXRlIH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiTm8gZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIlwiKVxuICB8IF8gOjogXyA6OiBfIC0+IGZhaWx3aXRoIFwiQmlnIHRyb3VibGVzIGluIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IF8gfSBdIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlbW92ZSBjYXRhbG9nLmVsZW1lbnRzIGlkIGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuXG5sZXQgZmlsZV9nZXQgfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJGaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGRvZXMgbm90IGV4aXN0XCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiQ29ycnVwdGVkIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IGNvbnRlbnQgfSBdIC0+IFJlc3VsdC5PayAoY29udGVudCwgcmFuaylcblxubGV0IGNhdGFsb2cgY2F0YWxvZyA9XG4gIE1vZHMuRHluQXJyYXkuZm9sZF9yaWdodGlcbiAgICAoZnVuIHBvc2l0aW9uIHggYWNjIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSBpZCAtPiB7IHBvc2l0aW9uOyBpZCB9IDo6IGFjYylcbiAgICBjYXRhbG9nLmluZGV4IFtdXG5cbmxldCBwYXJzZSB5aWVsZCBjYXRhbG9nID1cbiAgbWF0Y2ggIShjYXRhbG9nLmFzdCkgd2l0aFxuICB8IFNvbWUgY29tcGlsZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBjb21waWxlKVxuICB8IE5vbmUgLT5cbiAgICBNb2RzLkR5bkFycmF5LmZvbGRfcmlnaHRpXG4gICAgICAoZnVuIF8geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZmlsZSA9IEhhc2h0YmwuZmluZCBjYXRhbG9nLmVsZW1lbnRzIHggaW5cbiAgICAgICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGZpbGUuY29udGVudCBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAgICAgICAgeyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3Agd2l0aCBMZXhpbmcucG9zX2ZuYW1lID0geCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhY2MgPj49IGZ1biAoY29tcGlsZSwgZXJyKSAtPlxuICAgICAgICAgIGxldCBjb21waWxlID1cbiAgICAgICAgICAgIHsgY29tcGlsZSB3aXRoIEFzdC5maWxlbmFtZXMgPSB4IDo6IGNvbXBpbGUuQXN0LmZpbGVuYW1lcyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QuY2F0Y2hcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LndyYXAxIEtsZXhlcjQubW9kZWwgbGV4YnVmID4+PSBmdW4gKGluc3RzLCBlcnInKSAtPlxuICAgICAgICAgICAgICB5aWVsZCAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBpbnN0cyBjb21waWxlLCBlcnInIEAgZXJyKSlcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSlcbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChtZXNzYWdlLCByYW5nZSlcbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChjb21waWxlLCAobWVzc2FnZSwgcmFuZ2UpIDo6IGVycilcbiAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgKCBjb21waWxlLFxuICAgICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoXCJSdW50aW1lIGVycm9yIFwiIF4gZXJyb3IpIDo6IGVyciApXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBQcmludGV4Yy50b19zdHJpbmcgZXhuIGluXG4gICAgICAgICAgICAgICAgTHd0LnJldHVybiAoY29tcGlsZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgbWVzc2FnZSA6OiBlcnIpKSlcbiAgICAgIGNhdGFsb2cuaW5kZXhcbiAgICAgIChMd3QucmV0dXJuIChBc3QuZW1wdHlfY29tcGlsLCBbXSkpXG4gICAgPj49ICggZnVuY3Rpb25cbiAgICB8IGNvbXBpbGUsIFtdIC0+XG4gICAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBTb21lIGNvbXBpbGUgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGNvbXBpbGUpXG4gICAgfCBfLCBlcnIgLT5cbiAgICAgIGxldCBlcnIgPVxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gKCh0ZXh0LCBwKSBhcyB4KSAtPlxuICAgICAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICAgICAgaWYgTG9jLmlzX2Fubm90ZWRfd2l0aF9kdW1teSB4IHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBTb21lIHBcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjsgcmFuZ2U7IHRleHQgfSlcbiAgICAgICAgICBlcnJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlcnIpIClcblxubGV0IG92ZXJ3cml0ZSBmaWxlbmFtZSBhc3QgY2F0YWxvZyA9XG4gIGxldCBjb250ZW50ID0gRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBBc3QucHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEgYXN0IGluXG4gIGxldCBpdCA9IHsgcmFuayA9IDA7IGNvbnRlbnQgfSBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlc2V0IGNhdGFsb2cuZWxlbWVudHMgaW5cbiAgbGV0ICgpID0gSGFzaHRibC5hZGQgY2F0YWxvZy5lbGVtZW50cyBmaWxlbmFtZSBpdCBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSBfIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggaSBOb25lKVxuICAgICAgY2F0YWxvZy5pbmRleFxuICBpblxuICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IDAgKFNvbWUgZmlsZW5hbWUpIGluXG4gIGNhdGFsb2cuYXN0IDo9IFNvbWUgYXN0XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBFT0ZcbiAgfCBORVdMSU5FXG4gIHwgU0VNSUNPTE9OXG4gIHwgQ09NTUFcbiAgfCBET1RcbiAgfCBPUF9QQVJcbiAgfCBDTF9QQVJcbiAgfCBPUF9DVVJcbiAgfCBDTF9DVVJcbiAgfCBBVFxuICB8IFRZUEVcbiAgfCBMQVJcbiAgfCBDUFVUSU1FXG4gIHwgRU1BWFxuICB8IFRNQVhcbiAgfCBQTE9URU5UUllcbiAgfCBERUxFVEVcbiAgfCBJTlRST1xuICB8IFRSQUNLXG4gIHwgRE9cbiAgfCBTRVRcbiAgfCBSRVBFQVRcbiAgfCBTUEVDSUVTX09GXG4gIHwgVU5USUxcbiAgfCBMT0dcbiAgfCBQTFVTXG4gIHwgTVVMVFxuICB8IE1JTlVTXG4gIHwgTUFYXG4gIHwgTUlOXG4gIHwgRElWXG4gIHwgU0lOVVNcbiAgfCBDT1NJTlVTXG4gIHwgVEFOXG4gIHwgUE9XXG4gIHwgQUJTXG4gIHwgTU9EVUxPXG4gIHwgU1FSVFxuICB8IEVYUE9ORU5UXG4gIHwgSU5GSU5JVFlcbiAgfCBUSU1FXG4gIHwgRVZFTlRcbiAgfCBOVUxMX0VWRU5UXG4gIHwgUElQRVxuICB8IEVRVUFMXG4gIHwgQU5EXG4gIHwgT1JcbiAgfCBOT1RcbiAgfCBHUkVBVEVSXG4gIHwgU01BTExFUlxuICB8IFRSVUVcbiAgfCBGQUxTRVxuICB8IERJRkZcbiAgfCBLQVBQQV9SQVJcbiAgfCBLQVBQQV9MUkFSXG4gIHwgS0FQUEFfTE5LXG4gIHwgU0lHTkFUVVJFXG4gIHwgSU5JVFxuICB8IExFVFxuICB8IFBMT1RcbiAgfCBQRVJUXG4gIHwgT0JTXG4gIHwgVE9LRU5cbiAgfCBDT05GSUdcbiAgfCBLQVBQQV9XTERcbiAgfCBLQVBQQV9TRU1JXG4gIHwgRkxVWFxuICB8IEFTU0lHTlxuICB8IFBSSU5URlxuICB8IFNUT1BcbiAgfCBTTkFQU0hPVFxuICB8IFJVTlxuICB8IFRIRU5cbiAgfCBFTFNFXG4gIHwgQUxBUk1cbiAgfCBBUFBMWVxuICB8IElOVCBvZiAoaW50KVxuICB8IElEIG9mIChzdHJpbmcpXG4gIHwgS0FQUEFfTVJLIG9mIChzdHJpbmcpXG4gIHwgTEFCRUwgb2YgKHN0cmluZylcbiAgfCBGTE9BVCBvZiAoZmxvYXQpXG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgbGV0IGFkZF9wb3MgeCA9XG4gICAgKHgsTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiMgOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgICAwICgqIEVPRiAqKTtcbiAgMjU3ICgqIE5FV0xJTkUgKik7XG4gIDI1OCAoKiBTRU1JQ09MT04gKik7XG4gIDI1OSAoKiBDT01NQSAqKTtcbiAgMjYwICgqIERPVCAqKTtcbiAgMjYxICgqIE9QX1BBUiAqKTtcbiAgMjYyICgqIENMX1BBUiAqKTtcbiAgMjYzICgqIE9QX0NVUiAqKTtcbiAgMjY0ICgqIENMX0NVUiAqKTtcbiAgMjY1ICgqIEFUICopO1xuICAyNjYgKCogVFlQRSAqKTtcbiAgMjY3ICgqIExBUiAqKTtcbiAgMjY4ICgqIENQVVRJTUUgKik7XG4gIDI2OSAoKiBFTUFYICopO1xuICAyNzAgKCogVE1BWCAqKTtcbiAgMjcxICgqIFBMT1RFTlRSWSAqKTtcbiAgMjcyICgqIERFTEVURSAqKTtcbiAgMjczICgqIElOVFJPICopO1xuICAyNzQgKCogVFJBQ0sgKik7XG4gIDI3NSAoKiBETyAqKTtcbiAgMjc2ICgqIFNFVCAqKTtcbiAgMjc3ICgqIFJFUEVBVCAqKTtcbiAgMjc4ICgqIFNQRUNJRVNfT0YgKik7XG4gIDI3OSAoKiBVTlRJTCAqKTtcbiAgMjgwICgqIExPRyAqKTtcbiAgMjgxICgqIFBMVVMgKik7XG4gIDI4MiAoKiBNVUxUICopO1xuICAyODMgKCogTUlOVVMgKik7XG4gIDI4NCAoKiBNQVggKik7XG4gIDI4NSAoKiBNSU4gKik7XG4gIDI4NiAoKiBESVYgKik7XG4gIDI4NyAoKiBTSU5VUyAqKTtcbiAgMjg4ICgqIENPU0lOVVMgKik7XG4gIDI4OSAoKiBUQU4gKik7XG4gIDI5MCAoKiBQT1cgKik7XG4gIDI5MSAoKiBBQlMgKik7XG4gIDI5MiAoKiBNT0RVTE8gKik7XG4gIDI5MyAoKiBTUVJUICopO1xuICAyOTQgKCogRVhQT05FTlQgKik7XG4gIDI5NSAoKiBJTkZJTklUWSAqKTtcbiAgMjk2ICgqIFRJTUUgKik7XG4gIDI5NyAoKiBFVkVOVCAqKTtcbiAgMjk4ICgqIE5VTExfRVZFTlQgKik7XG4gIDI5OSAoKiBQSVBFICopO1xuICAzMDAgKCogRVFVQUwgKik7XG4gIDMwMSAoKiBBTkQgKik7XG4gIDMwMiAoKiBPUiAqKTtcbiAgMzAzICgqIE5PVCAqKTtcbiAgMzA0ICgqIEdSRUFURVIgKik7XG4gIDMwNSAoKiBTTUFMTEVSICopO1xuICAzMDYgKCogVFJVRSAqKTtcbiAgMzA3ICgqIEZBTFNFICopO1xuICAzMDggKCogRElGRiAqKTtcbiAgMzA5ICgqIEtBUFBBX1JBUiAqKTtcbiAgMzEwICgqIEtBUFBBX0xSQVIgKik7XG4gIDMxMSAoKiBLQVBQQV9MTksgKik7XG4gIDMxMiAoKiBTSUdOQVRVUkUgKik7XG4gIDMxMyAoKiBJTklUICopO1xuICAzMTQgKCogTEVUICopO1xuICAzMTUgKCogUExPVCAqKTtcbiAgMzE2ICgqIFBFUlQgKik7XG4gIDMxNyAoKiBPQlMgKik7XG4gIDMxOCAoKiBUT0tFTiAqKTtcbiAgMzE5ICgqIENPTkZJRyAqKTtcbiAgMzIwICgqIEtBUFBBX1dMRCAqKTtcbiAgMzIxICgqIEtBUFBBX1NFTUkgKik7XG4gIDMyMiAoKiBGTFVYICopO1xuICAzMjMgKCogQVNTSUdOICopO1xuICAzMjQgKCogUFJJTlRGICopO1xuICAzMjUgKCogU1RPUCAqKTtcbiAgMzI2ICgqIFNOQVBTSE9UICopO1xuICAzMjcgKCogUlVOICopO1xuICAzMjggKCogVEhFTiAqKTtcbiAgMzI5ICgqIEVMU0UgKik7XG4gIDMzMCAoKiBBTEFSTSAqKTtcbiAgMzMxICgqIEFQUExZICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAzMzIgKCogSU5UICopO1xuICAzMzMgKCogSUQgKik7XG4gIDMzNCAoKiBLQVBQQV9NUksgKik7XG4gIDMzNSAoKiBMQUJFTCAqKTtcbiAgMzM2ICgqIEZMT0FUICopO1xuICAzMzcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEzXFwwMDBcXFxuXFwwMTNcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMDRcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAwNlxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXFxuXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzZcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAxNFxcMDAwXFwwMTRcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXFxuXFwwMzhcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXFxuXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXFxuXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQ0XFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1MFxcMDAwXFwxNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDBcXDIwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwM1xcMDAwXFwxMDFcXDAwMFxcMTAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5N1xcMDAwXFwxMDhcXDAwMFxcMTA5XFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA5OVxcMDAwXFwxMDZcXDAwMFxcMTA3XFwwMDBcXDA5OFxcMDAwXFwyMDdcXDAwMFxcMDAwXFwwMDBcXDEwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyNFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDExMlxcMDAwXFwxMTNcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXDAxN1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE4XFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFxcblxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MVxcMDAwXFxcblxcMTk5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMTE4XFwwMDBcXDExOVxcMDAwXFxcblxcMTIwXFwwMDBcXDEyMVxcMDAwXFwxMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDI3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDE0NVxcMDAwXFwxNTVcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFxcblxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwNDZcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMTExXFwwMDBcXDA2OFxcMDAwXFwxMTRcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFxcblxcMTA0XFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU4XFwwMDBcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMDQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDg1XFwwMDBcXDE4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFxcblxcMDg4XFwwMDBcXDAwMFxcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDBcXDA4N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMFxcMTY1XFwwMDBcXDAwMFxcMDAwXFwxODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5NVxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDEzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDBcXDAwMFxcMDAwXFwxNjBcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDAwXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDE3OVxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwxOTFcXDAwMFxcMTkzXFwwMDBcXDE5MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzZcXDAwMFxcMTk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTcwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE2N1xcMDAwXFwxNDhcXDAwMFxcMTgwXFwwMDBcXDAwMFxcMDAwXFwxODFcXDAwMFxcMTg4XFwwMDBcXDE4OVxcMDAwXFxcblxcMTc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTcxXFwwMDBcXDAwMFxcMDAwXFwxNzJcXDAwMFxcMTY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMTgyXFwwMDBcXDE3OFxcMDAwXFwxOTRcXDAwMFxcMTczXFwwMDBcXDE2OVxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMjJcXDAwMFxcMDQ3XFwwMDBcXDA1MFxcMDAwXFwwNzhcXDAwMFxcMDIzXFwwMDBcXDAyNFxcMDAwXFwwNzlcXDAwMFxcMDI1XFwwMDBcXFxuXFwwOTZcXDAwMFxcMTAwXFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMjAzXFwwMDBcXDE2NVxcMDAwXFwxMDlcXDAwMFxcMDgwXFwwMDBcXFxuXFwwNDZcXDAwMVxcMDkyXFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMjIyXFwwMDBcXDAyNlxcMDAwXFwxNDFcXDAwMFxcMDgyXFwwMDBcXFxuXFwwMjdcXDAwMFxcMTQyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDI4XFwwMDBcXDA5M1xcMDAwXFwxMjRcXDAwMFxcMTIxXFwwMDBcXFxuXFwwODVcXDAwMFxcMDg2XFwwMDBcXDIxMFxcMDAwXFwwMTdcXDAwMVxcMDI5XFwwMDBcXDAyM1xcMDAxXFwwMzBcXDAwMFxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDI0XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDc1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwwMDNcXDAwMlxcXG5cXDA4NVxcMDAyXFwxNjBcXDAwMlxcMTQ0XFwyNTVcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMlxcXG5cXDE4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDA0XFwwMzJcXDI1NVxcMTQ3XFwwMDRcXDIzM1xcMjU0XFwyMDFcXDAwNFxcXG5cXDAwNFxcMjU1XFwyMzNcXDI1NFxcMjE1XFwyNTRcXDIxN1xcMjU0XFwyMTJcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMDZcXDI1NVxcMTM4XFwyNTVcXDE3MlxcMDAwXFwwODlcXDI1NVxcMjMyXFwyNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0NFxcMjU1XFwwMDBcXDAwMFxcMjU1XFwwMDRcXDA1M1xcMDA1XFwwNjRcXDI1NVxcMjE1XFwwMDVcXDIxNVxcMDA1XFwxMDZcXDI1NVxcXG5cXDIxNVxcMDA1XFwyMTVcXDAwNVxcMjE1XFwwMDVcXDE2MVxcMDA1XFwxNDBcXDAwN1xcMDY4XFwyNTVcXDAwMFxcMDAwXFwwNTlcXDI1NVxcXG5cXDEzN1xcMjU1XFwwMDBcXDAwMFxcMTI3XFwwMDBcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwxNDBcXDAwN1xcMTQwXFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwyNTVcXDE0MVxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDI1NVxcXG5cXDAwMFxcMDAwXFwwMzJcXDAwN1xcMDE1XFwwMDFcXDI1MFxcMjU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMTlcXDI1NVxcMDc2XFwyNTVcXDAwMFxcMDAwXFwyMzRcXDAwNlxcMTA3XFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAxXFwyMzRcXDAwNlxcMTI5XFwyNTVcXDAwMFxcMDAwXFwwMThcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjBcXDI1NVxcXG5cXDIzNFxcMDA2XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwNFxcMTcyXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwNlxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwxODJcXDAwMVxcMjQ0XFwyNTVcXDI1MVxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDE4MFxcMDAwXFwxODBcXDAwMFxcMjM0XFwwMDZcXDA5NlxcMDAwXFwyNDVcXDI1NVxcXG5cXDE2MlxcMDAzXFwwOTBcXDI1NVxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDlcXDI1NVxcMTAxXFwwMDFcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMTQ0XFwyNTVcXDAwMFxcMDAwXFwxNzRcXDI1NVxcXG5cXDA0MlxcMjU1XFwwMDBcXDAwMFxcMTgwXFwwMDFcXDE0MFxcMDA3XFwxNDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMjU1XFwwOTlcXDAwMFxcMjM0XFwwMDZcXDAwMFxcMDAwXFwyMzRcXDAwNlxcXG5cXDIzNFxcMDA2XFwyMzRcXDAwNlxcMjM0XFwwMDZcXDAwMFxcMDAwXFwyMzRcXDAwNlxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDAwXFwwMDBcXDEyNVxcMjU1XFwxMTFcXDAwMFxcXG5cXDA4MFxcMDAwXFwxNjFcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFwyMzRcXDAwNlxcMjQ1XFwyNTVcXDIwNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAxXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMTcwXFwyNTVcXDAwMFxcMDAwXFwxNDRcXDI1NVxcXG5cXDA5MVxcMjU1XFwxNjBcXDI1NVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwyMzRcXDAwNlxcXG5cXDE3NVxcMDAwXFwyMThcXDAwMFxcMDA2XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTVcXDAwNVxcXG5cXDE4MFxcMDAwXFwyMTVcXDAwNVxcMTgwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDgzXFwwMDFcXDIxNVxcMDA1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDA4M1xcMDAxXFwwODNcXDAwMVxcMDgzXFwwMDFcXDIwN1xcMDAwXFwwMDBcXDI1NVxcXG5cXDA4OVxcMDAxXFwxODBcXDAwMVxcMDY1XFwwMDBcXDE4MFxcMDAxXFwwNjVcXDAwMFxcMDE2XFwwMDFcXDAxNlxcMDAxXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAxXFwwMzJcXDAwN1xcMDA4XFwyNTVcXDA0M1xcMDAxXFwwNTJcXDAwMVxcMDgzXFwwMDFcXDA4MFxcMDAxXFwxNDRcXDI1NVxcXG5cXDExN1xcMDAwXFwxNDRcXDI1NVxcMTQ0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwyNTVcXDAwMFxcMDAwXFwwOTVcXDAwMFxcXG5cXDA1MFxcMDAxXFwyMzRcXDAwNlxcMTI2XFwwMDZcXDA3MlxcMDA2XFwwMDBcXDAwMFxcMDI3XFwyNTVcXDA4MVxcMDAxXFwwOTdcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMTE5XFwwMDFcXDE0MFxcMDA3XFwwMzJcXDAwN1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc2XFwyNTVcXDA4NVxcMDAxXFwwMDdcXDI1NVxcMTA1XFwwMDFcXDE0MlxcMjU1XFwwMDBcXDAwMFxcXG5cXDEyMVxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDFcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzRcXDAwNlxcMDAwXFwwMDBcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwOTZcXDAwMVxcXG5cXDEyMFxcMDAxXFwyMzdcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcMTYzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5MVxcMDAxXFwwOTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDI1NVxcMDAwXFwwMDBcXDEyNVxcMDAxXFwwMTJcXDI1NVxcXG5cXDAzMVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAxXFwxNDBcXDI1NVxcMDAwXFwwMDBcXDIzNFxcMDA2XFwyNTBcXDI1NFxcXG5cXDI1MFxcMjU0XFwwMDBcXDAwMFxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwyNTVcXDEzM1xcMDAxXFwwMjFcXDI1NVxcXG5cXDAwMFxcMDAwXFwxNDNcXDAwMVxcMDAwXFwwMDBcXDE4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwwMDBcXDAwMFxcXG5cXDA1N1xcMjU1XFwwMDBcXDAwMFxcMDIyXFwyNTVcXDAyNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE3N1xcMDAxXFwwMzhcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTBcXDI1NFxcMTM1XFwwMDFcXDAwMFxcMDAwXFwxMThcXDI1NVxcXG5cXDAyNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDNcXDAwMVxcMTM4XFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDNcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDE2NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMVxcXG5cXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE4MFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDhcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE2OVxcMDAxXFwwOTZcXDAwMlxcMDk2XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDJcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMzXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NFxcMDAyXFwwMDBcXDAwMFxcXG5cXDA1N1xcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjhcXDAwM1xcMDAwXFwwMDBcXDIxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDNcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNjJcXDAwMFxcMTYxXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxOVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODVcXDAwMlxcMDM4XFwwMDNcXDE3OFxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNzlcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTlcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDJcXDE5OFxcMDAyXFwyMTNcXDAwMlxcMjQxXFwwMDJcXDAwNlxcMDAzXFwwNzRcXDAwM1xcXG5cXDAwMFxcMDAwXFwxNTFcXDAwMVxcMTY0XFwwMDBcXDIzMlxcMDAxXFwyNDVcXDAwMFxcMDAxXFwwMDBcXDA4M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA5NlxcMDAzXFwwMDBcXDAwMFxcMTI2XFwyNTVcXDAwMFxcMDAwXFwyMjNcXDAwMVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYxXFwwMDNcXDAwMFxcMDAwXFwxNDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwyNTVcXDAwMFxcMDAwXFwyNDFcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDI1NVxcMjI4XFwyNTVcXDIzN1xcMjU1XFwwMDBcXDAwMFxcXG5cXDIxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3M1xcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDIxOVxcMDAxXFwwMDBcXDAwMFxcMTIyXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMjU1XFwxNDVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMTczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIzN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzdcXDI1NVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDI0MlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjI4XFwwMDJcXDEyM1xcMDA0XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM2XFwwMDJcXDAwMFxcMDAwXFwwNTZcXDAwMlxcMjAwXFwyNTVcXDAwMFxcMDAwXFwxNTlcXDAwMlxcXG5cXDIyMVxcMDAxXFwwMTNcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwxMzNcXDI1NVxcMjQ3XFwyNTVcXDIzMVxcMjU1XFwyMTdcXDI1NVxcXG5cXDEzMlxcMDAyXFwyMThcXDI1NVxcMTg4XFwwMDRcXDIxNlxcMDAyXFwyMzNcXDI1NVxcMTY4XFwyNTVcXDE3MVxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDJcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDQ2XFwyNTVcXDAwMFxcMDAwXFwyNTBcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDJcXDE5OFxcMjU1XFwwNTRcXDI1NVxcMDY1XFwyNTVcXDAwMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjI2OFxubGV0IHl5dGFibGUgPSBcIlxcMDg4XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTg0XFwwMDBcXDExOFxcMDAwXFwxNDNcXDAwMFxcMTQ0XFwwMDBcXDE0N1xcMDAwXFwwMzRcXDAwMVxcMDM0XFwwMDFcXFxuXFwxNDFcXDAwMFxcMjIzXFwwMDBcXDA1MVxcMDAwXFwwOThcXDAwMVxcMTM2XFwwMDBcXDEzOFxcMDAwXFwyMjhcXDAwMFxcMDA3XFwwMDBcXFxuXFwwODFcXDAwMFxcMDM1XFwwMDFcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMDk4XFwwMDFcXDE3MlxcMDAwXFwxMTVcXDAwMFxcMTE2XFwwMDBcXFxuXFwxMDZcXDAwMFxcMTE5XFwwMDFcXDAzNFxcMDAxXFwxMzNcXDAwMFxcMjA2XFwwMDBcXDAzMFxcMDAxXFwxMDFcXDAwMVxcMDk0XFwwMDBcXFxuXFwwMzZcXDAwMVxcMDE2XFwwMDBcXDEwMlxcMDAxXFwxMTFcXDAwMFxcMDM1XFwwMDFcXDA5OFxcMDAxXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTEyXFwwMDBcXDE5MlxcMDAwXFwyNDBcXDAwMFxcMTczXFwwMDBcXDE5N1xcMDAwXFwwMjNcXDAwMFxcMjM3XFwwMDBcXFxuXFwxMTdcXDAwMFxcMjMyXFwwMDBcXDA5NVxcMDAxXFwwNTZcXDAwMVxcMTI2XFwwMDBcXDEwMVxcMDAwXFwwNjZcXDAwMFxcMTAyXFwwMDBcXFxuXFwxNDZcXDAwMFxcMTM4XFwwMDBcXDA2NVxcMDAwXFwxNDlcXDAwMFxcMDI0XFwwMDBcXDEzM1xcMDAwXFwwMjJcXDAwMFxcMDI4XFwwMDBcXFxuXFwxNTNcXDAwMFxcMTc1XFwwMDBcXDA5OVxcMDAxXFwxNDFcXDAwMFxcMDA5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMTc1XFwwMDBcXFxuXFwyMThcXDAwMFxcMDMzXFwwMDBcXDIxOVxcMDAwXFwwOTlcXDAwMVxcMTEwXFwwMDFcXDEwN1xcMDAwXFwxNDhcXDAwMFxcMjI1XFwwMDBcXFxuXFwxOTBcXDAwMFxcMjQxXFwwMDBcXDEzMFxcMDAwXFwxMTdcXDAwMVxcMDM3XFwwMDFcXDAzN1xcMDAxXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwwMTBcXDAwMFxcMTAwXFwwMDFcXDAxMVxcMDAwXFwxMjVcXDAwMFxcMDk5XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMTAzXFwwMDFcXFxuXFwwMDdcXDAwMFxcMTIwXFwwMDFcXDExM1xcMDAxXFwwOTZcXDAwMVxcMjEyXFwwMDBcXDAyNlxcMDAxXFwxNTNcXDAwMFxcMDI4XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDkxXFwwMDFcXDEwNFxcMDAxXFwxMDVcXDAwMVxcMDk1XFwwMDBcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDg5XFwwMDFcXFxuXFwyMDVcXDAwMFxcMTc1XFwwMDBcXDIxMVxcMDAwXFwyMTNcXDAwMFxcMjM4XFwwMDBcXDIzOVxcMDAwXFwxOThcXDAwMFxcMTY4XFwwMDBcXFxuXFwxNzVcXDAwMFxcMjAxXFwwMDBcXDA5MFxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDExMVxcMDAxXFwxNTFcXDAwMFxcMTcxXFwwMDBcXFxuXFwxODRcXDAwMFxcMTA3XFwwMDFcXDIzNlxcMDAwXFwxODRcXDAwMFxcMTE4XFwwMDFcXDAwN1xcMDAxXFwxODVcXDAwMFxcMTczXFwwMDBcXFxuXFwxNzRcXDAwMFxcMTE5XFwwMDBcXDE1MFxcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEwOFxcMDAxXFwxMzJcXDAwMFxcMTE0XFwwMDFcXFxuXFwxMjVcXDAwMVxcMTY2XFwwMDBcXDEyMFxcMDAwXFwxOThcXDAwMFxcMDMzXFwwMDBcXDE4N1xcMDAwXFwxOThcXDAwMFxcMDgwXFwwMDBcXFxuXFwxOTFcXDAwMFxcMTIxXFwwMDFcXDE4OFxcMDAwXFwxODRcXDAwMFxcMTY0XFwwMDBcXDIzNVxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDE3NVxcMDAwXFwxMjVcXDAwMFxcMTIyXFwwMDFcXDAzOFxcMDAwXFwxMjdcXDAwMVxcMDY2XFwwMDBcXFxuXFwxNjhcXDAwMFxcMDMzXFwwMDFcXDIyN1xcMDAwXFwwNzJcXDAwMVxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxOThcXDAwMFxcMTMwXFwwMDFcXFxuXFwxNzFcXDAwMFxcMTI4XFwwMDFcXDE1M1xcMDAwXFwyMzZcXDAwMFxcMTg0XFwwMDBcXDEzM1xcMDAxXFwxMzlcXDAwMFxcMDE1XFwwMDFcXFxuXFwxNDBcXDAwMFxcMjQ3XFwwMDBcXDI0OFxcMDAwXFwwMjFcXDAwMVxcMDA4XFwwMDFcXDE4NFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwMjlcXDAwMVxcMTI2XFwwMDFcXDA3M1xcMDAxXFwxODJcXDAwMFxcMDczXFwwMDFcXDAxNFxcMDAxXFwwMjVcXDAwMVxcMDY0XFwwMDFcXFxuXFwwMjdcXDAwMVxcMTg2XFwwMDBcXDAxM1xcMDAxXFwwNzRcXDAwMVxcMDc0XFwwMDBcXDA3NFxcMDAxXFwxMDZcXDAwMFxcMDA5XFwwMDFcXFxuXFwwNzdcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwwMDlcXDAwMFxcMTY4XFwwMDBcXDA0NVxcMDAwXFwwNThcXDAwMVxcMDQ2XFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMDY1XFwwMDFcXFxuXFwwNjZcXDAwMVxcMTcxXFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDE4OVxcMDAwXFwxODNcXDAwMFxcMTA2XFwwMDBcXFxuXFwwOTJcXDAwMFxcMTgzXFwwMDBcXDA3MFxcMDAxXFwxMDZcXDAwMFxcMDEwXFwwMDBcXDEwNlxcMDAwXFwwMTFcXDAwMFxcMTg3XFwwMDBcXFxuXFwyMDJcXDAwMFxcMTc1XFwwMDBcXDE4N1xcMDAwXFwyMTRcXDAwMFxcMTI3XFwwMDBcXDEwNlxcMDAwXFwwNDlcXDAwMVxcMDYzXFwwMDFcXFxuXFwyMTVcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDEwNlxcMDAwXFwwMTJcXDAwMFxcMTEzXFwwMDBcXFxuXFwyMTZcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTQxXFwwMDBcXDEyOVxcMDAwXFwxNDFcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDQzXFwwMDFcXFxuXFwwMDhcXDAwMFxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMDZcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAxNlxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDIzXFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDY2XFwwMDBcXFxuXFwwODBcXDAwMVxcMDgxXFwwMDFcXDEzOFxcMDAwXFwwNjVcXDAwMFxcMTM4XFwwMDBcXDAyNFxcMDAwXFwxMzNcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjhcXDAwMFxcMjE3XFwwMDBcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMTQxXFwwMDBcXDEyM1xcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAzM1xcMDAwXFwxNzRcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxNzRcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDExNVxcMDAxXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMDlcXDAwMVxcMTMwXFwwMDBcXDE3NVxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMDA4XFwwMDBcXDE4MFxcMDAwXFwyMjRcXDAwMFxcMTgxXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwwNTBcXDAwMVxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDFcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMjMxXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMDQ0XFwwMDFcXDE2OFxcMDAwXFwwNDVcXDAwMVxcMTY4XFwwMDBcXDI0MlxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDE3MVxcMDAwXFwxNDJcXDAwMFxcMTcxXFwwMDBcXDE0MlxcMDAwXFwxMjZcXDAwMFxcMDgwXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwwODBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMDgwXFwwMDBcXDEyNVxcMDAwXFwwODBcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDE0M1xcMDAwXFwwMThcXDAwMVxcMTQzXFwwMDBcXDAxOVxcMDAxXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMDAyXFwwMDFcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDAwM1xcMDAxXFwxMjVcXDAwMFxcMDA5XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDI0MFxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDE2OFxcMDAwXFwwMTBcXDAwMFxcMDIwXFwwMDFcXDAxMVxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxMjJcXDAwMFxcMTIzXFwwMDBcXDE3MVxcMDAwXFwwMjJcXDAwMVxcMTQ5XFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTI4XFwwMDBcXFxuXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDExN1xcMDAwXFwwOTJcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMDkyXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA5MlxcMDAwXFwxMjdcXDAwMFxcMDkyXFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA4OFxcMDAxXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxNzVcXDAwMFxcMTI3XFwwMDBcXFxuXFwxODVcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwNzNcXDAwMVxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwNTZcXDAwMFxcMDc0XFwwMDFcXDA1MlxcMDAxXFwwNTRcXDAwMVxcMTY4XFwwMDBcXFxuXFwwNDBcXDAwMVxcMTgwXFwwMDBcXDAzMlxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDEwNlxcMDAxXFwwNDFcXDAwMVxcMTcxXFwwMDBcXFxuXFwwNTdcXDAwMFxcMDUxXFwwMDFcXDE2OFxcMDAwXFwwODBcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE3MVxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNzNcXDAwMVxcMTIzXFwwMDBcXFxuXFwyMTdcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDA3XFwwMDBcXDA0MlxcMDAxXFwwNTlcXDAwMVxcMDc0XFwwMDFcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxODZcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYwXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjBcXDAwMVxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYxXFwwMDFcXFxuXFwxMjNcXDAwMFxcMDA5XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDc3XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYyXFwwMDFcXDAxMFxcMDAwXFwxNjhcXDAwMFxcMDExXFwwMDBcXFxuXFwwNjlcXDAwMVxcMDcxXFwwMDFcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTY4XFwwMDBcXDA3OVxcMDAxXFwxNzFcXDAwMFxcMDg0XFwwMDFcXFxuXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDA4NVxcMDAxXFwwODZcXDAwMVxcMTcxXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDEyXFwwMDBcXFxuXFwwODdcXDAwMVxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMzFcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDMyXFwwMDBcXFxuXFwxMjZcXDAwMFxcMDMxXFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDA5MlxcMDAxXFwwOTNcXDAwMVxcMDk0XFwwMDFcXFxuXFwwOTdcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTA2XFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMTJcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTIzXFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwwMzlcXDAwMFxcMTI2XFwwMDBcXDAwOVxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDA3NVxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDE3N1xcMDAwXFwwMTBcXDAwMFxcMTE2XFwwMDFcXFxuXFwwMTFcXDAwMFxcMTc5XFwwMDBcXDEyNFxcMDAxXFwxMjlcXDAwMVxcMDc2XFwwMDBcXDE4MFxcMDAwXFwxMzFcXDAwMVxcMTgxXFwwMDBcXFxuXFwxMzJcXDAwMVxcMDYwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTQ5XFwwMDBcXDE1NlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxNTlcXDAwMFxcMDYwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTU4XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwwNzhcXDAwMFxcMTI4XFwwMDBcXDE0OVxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxNjFcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxMTRcXDAwMFxcMDg3XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDExMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDEyXFwwMDFcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDA3M1xcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTk5XFwwMDBcXDEyOFxcMDAwXFwwODJcXDAwMVxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwyMzNcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxNjdcXDAwMFxcMDkzXFwwMDBcXFxuXFwyMDdcXDAwMFxcMDU1XFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDU3XFwwMDFcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTZcXDAwMFxcMDgwXFwwMDBcXDA1NlxcMDAwXFwwODRcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXFxuXFwwODBcXDAwMFxcMTA2XFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDg2XFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA3N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTZcXDAwMFxcMTQ3XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAxNFxcMDAwXFwwMTVcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwODBcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwMjFcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXFxuXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMTMxXFwwMDBcXFxuXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwNzVcXDAwMFxcMTMxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzFcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3NVxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNDZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMTQ2XFwwMDBcXDA3NVxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDkzXFwwMDBcXFxuXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXFxuXFwwOTNcXDAwMFxcMTQ2XFwwMDBcXDE0NlxcMDAwXFwwNDBcXDAwMFxcMTQ2XFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMTc4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3OVxcMDAwXFwwODRcXDAwMFxcMDg0XFwwMDBcXDA4NFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODFcXDAwMFxcMDg0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODRcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODZcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMDg2XFwwMDBcXDEwNlxcMDAwXFwwODZcXDAwMFxcMDc0XFwwMDBcXFxuXFwwODRcXDAwMFxcMDg0XFwwMDBcXDE0N1xcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDEwNlxcMDAwXFwwOTFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTlcXDAwMFxcMDM3XFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXDIyNlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMTQ3XFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXDE4MVxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXFxuXFwxOTZcXDAwMFxcMTM3XFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDEzN1xcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwxNTRcXDAwMFxcMTU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDBcXFxuXFwxNTlcXDAwMFxcMTYwXFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyOVxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDI0M1xcMDAwXFwyNDRcXDAwMFxcMjQ1XFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjQ5XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDA2XFwwMDFcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTBcXDAwMFxcMjUxXFwwMDBcXDI1MlxcMDAwXFwyNTNcXDAwMFxcMjU0XFwwMDBcXFxuXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDFcXDAxNlxcMDAxXFwyMDlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDk4XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXFxuXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMTk1XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMjAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMTM1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwMjZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDU2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMjZcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDBcXDEzM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDFcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAxXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFxcblxcMDIxXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDM3XFwwMDBcXDExN1xcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFxcblxcMDI1XFwwMDFcXDAwMFxcMDAwXFwwMDRcXDAwMVxcMDc3XFwwMDFcXDAxMFxcMDAxXFwwMDBcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDMzXFwwMDBcXDA4MVxcMDAxXFwwOTlcXDAwMFxcMDA1XFwwMDFcXDA0NVxcMDAxXFwxMDJcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAxXFxcblxcMDQzXFwwMDFcXDAwMVxcMDAxXFwwMjdcXDAwMVxcMDI1XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDA3OVxcMDAxXFxcblxcMDQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUyXFwwMDBcXDA3MlxcMDAxXFwwNTVcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFxcblxcMTI5XFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMDU1XFwwMDFcXDAyN1xcMDAxXFwwNzRcXDAwMVxcMDExXFwwMDFcXDEzNlxcMDAwXFxcblxcMDA1XFwwMDFcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDI3XFwwMDFcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDI1XFwwMDFcXDA3OFxcMDAxXFwwMjdcXDAwMVxcMDAzXFwwMDFcXDA1NVxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA2NVxcMDAxXFxcblxcMDAwXFwwMDBcXDA3NlxcMDAxXFwwNzhcXDAwMVxcMDc2XFwwMDFcXDEyNFxcMDAwXFwyMjVcXDAwMFxcMDkwXFwwMDBcXDIyN1xcMDAwXFxcblxcMDc4XFwwMDFcXDA2MFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDA1OFxcMDAxXFxcblxcMTE0XFwwMDBcXDA3MlxcMDAxXFwxMjRcXDAwMFxcMTI1XFwwMDBcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMTA2XFwwMDBcXDA0NFxcMDAxXFxcblxcMDcyXFwwMDFcXDEwOVxcMDAwXFwwNThcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDA1MlxcMDAxXFxcblxcMDAzXFwwMDFcXDA3NlxcMDAxXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFwxOTBcXDAwMFxcMDEwXFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNzdcXDAwMVxcMDc5XFwwMDFcXDA5MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAwNVxcMDAxXFwwMDlcXDAwMVxcMDAzXFwwMDFcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDc3XFwwMDFcXDEwMFxcMDAxXFwwMDVcXDAwMVxcMDMwXFwwMDFcXDA3N1xcMDAxXFwxNTBcXDAwMFxcMDE1XFwwMDFcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAxXFwwMjJcXDAwMVxcMTEzXFwwMDFcXDAzOVxcMDAxXFxcblxcMDQ0XFwwMDFcXDAwMlxcMDAxXFwwODFcXDAwMVxcMDMwXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDMwXFwwMDFcXDEyMlxcMDAxXFxcblxcMDUyXFwwMDFcXDExM1xcMDAxXFwxNjZcXDAwMFxcMDA2XFwwMDFcXDA1NVxcMDAxXFwxMjhcXDAwMVxcMDc3XFwwMDFcXDIwN1xcMDAwXFxcblxcMDc5XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMjExXFwwMDBcXDAxOVxcMDAxXFwwNjRcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMjMxXFwwMDBcXDA3NlxcMDAxXFwwNTVcXDAwMVxcMDA2XFwwMDFcXDA1NVxcMDAxXFwyMDdcXDAwMFxcMjI0XFwwMDBcXDAzMlxcMDAxXFxcblxcMjI2XFwwMDBcXDA3N1xcMDAxXFwyMDRcXDAwMFxcMDY0XFwwMDFcXDA3NlxcMDAxXFwwNjRcXDAwMVxcMDA1XFwwMDFcXDIwMFxcMDAwXFxcblxcMDgwXFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDA1XFwwMDFcXDA0NFxcMDAxXFwwNzVcXDAwMVxcMDIyXFwwMDFcXDA3N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA1MlxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMTFcXDAwMVxcMDAzXFwwMDFcXDAzMFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwNlxcMDAxXFwwMzdcXDAwMVxcMDM0XFwwMDFcXDAyNVxcMDAxXFwwMzZcXDAwMVxcMDI3XFwwMDFcXDAwM1xcMDAxXFxcblxcMDgxXFwwMDFcXDA3MlxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwNDRcXDAwMVxcMDE0XFwwMDFcXDAzMVxcMDAxXFxcblxcMDA1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNTJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFxcblxcMDA2XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFxcblxcMDA4XFwwMDFcXDAwMVxcMDAxXFwwMTBcXDAwMVxcMDAzXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwOFxcMDAxXFxcblxcMDAxXFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDc3XFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMDFcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMVxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwMVxcMDAxXFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwM1xcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAxXFwwMDFcXDA3N1xcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwMDFcXDAwMVxcMDAzXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwOTJcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDc5XFwwMDFcXDAxMFxcMDAxXFwwNzJcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDAwMVxcMDAxXFwwMzRcXDAwMVxcMDA0XFwwMDFcXDAzNlxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFxcblxcMDEwXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwNlxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDA0OVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDAyMVxcMDAxXFwwNDRcXDAwMVxcMDIzXFwwMDFcXDA0NFxcMDAxXFwwNDNcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTJcXDAwMVxcMDA2XFwwMDFcXDA1MlxcMDAxXFwwMDhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDA5XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAyMVxcMDAxXFwwMTBcXDAwMVxcMDIzXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDZcXDAwMVxcMDA1XFwwMDFcXDAwOFxcMDAxXFwwMDdcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDIxXFwwMDFcXDAyNVxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwNzdcXDAwMVxcMDM1XFwwMDFcXDAwNVxcMDAxXFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNDRcXDAwMVxcMDI1XFwwMDFcXDAwM1xcMDAxXFwwMjdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTJcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNDNcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAwOVxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMjFcXDAwMVxcMDEwXFwwMDFcXDAyM1xcMDAxXFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMzBcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFxcblxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDcyXFwwMDFcXDAzNVxcMDAxXFxcblxcMDEwXFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDU1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDA0NFxcMDAxXFxcblxcMDA2XFwwMDFcXDAzNFxcMDAxXFwwMjVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMzBcXDAwMVxcMDAzXFwwMDFcXDA1MlxcMDAxXFxcblxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwNDRcXDAwMVxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNTJcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDU1XFwwMDFcXDAxMFxcMDAxXFxcblxcMDc3XFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDA2NFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDc3XFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAwMFxcMDAwXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDAzXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDA0OFxcMDAxXFxcblxcMDM1XFwwMDFcXDAwNVxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAwXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwNlxcMDAxXFwwMjVcXDAwMVxcMDQ0XFwwMDFcXDAyN1xcMDAxXFxcblxcMDQ0XFwwMDFcXDAyNVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA0NFxcMDAxXFwwMjNcXDAwMVxcMDUyXFwwMDFcXDAwNlxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDhcXDAwMVxcMDQ0XFwwMDFcXDA1MlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA0M1xcMDAxXFxcblxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDEwXFwwMDFcXDA3M1xcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDNcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFxcblxcMDQ0XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAzMFxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMDQ0XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAwNFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDAwXFwwMDBcXDAzNVxcMDAxXFwwMDVcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDBcXDAwMFxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMjZcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFxcblxcMDI3XFwwMDFcXDAzMFxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDAwMFxcMDAwXFwwMzRcXDAwMVxcMDc3XFwwMDFcXDAzNlxcMDAxXFxcblxcMDc2XFwwMDFcXDA0OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFxcblxcMDA2XFwwMDFcXDA0OFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAwNlxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFxcblxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNzdcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDIxXFwwMDBcXDAwOFxcMDAwXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMThcXDAwMFxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDIwMlxcMDAwXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMDBcXDAwMFxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDEwN1xcMDAwXFwwMzVcXDAwMVxcMDQ3XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMTQ3XFwwMDBcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDcxXFwwMDBcXDAwMFxcMDAwXFxcblxcMTE4XFwwMDBcXDAyMFxcMDAxXFwwNDFcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFxcblxcMDczXFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDAwNlxcMDAxXFwwMjNcXDAwMVxcMDAwXFwwMDBcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMDIxXFwwMDFcXDAwMFxcMDAwXFwwMjNcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMjU1XFwyNTVcXDAyN1xcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwwMDFcXDAwMVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDA4MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMjU1XFwyNTVcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDA4MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDBcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDc5XFwwMDFcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDFcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMDA2XFwwMDFcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA1MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc3XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA5XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDAyMVxcMDAxXFwwNzJcXDAwMVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDA5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDA2XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDcyXFwwMDFcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDM0XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM2XFwwMDFcXDAwNlxcMDAxXFwwMDFcXDAwMVxcMjU1XFwyNTVcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA5XFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDAyMVxcMDAxXFwwMzZcXDAwMVxcMDIzXFwwMDFcXDA0NlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMjU1XFwyNTVcXDAwNlxcMDAxXFxcblxcMjU1XFwyNTVcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwNTJcXDAwMVxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcblxcMDE0XFwwMDBcXDAwNlxcMDAxXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFxcblxcMDIzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM2XFwwMDBcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA0M1xcMDAxXFwwMDRcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMDUyXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwwMzZcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwMVxcMDAwXFxcblxcMTAyXFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMjU1XFwyNTVcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExN1xcMDAwXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAwXFxcblxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMTM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzlcXDAwMFxcMTQwXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQ4XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxNzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDE3NVxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDE4OVxcMDAwXFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTc2XFwwMDBcXDE3N1xcMDAwXFwxNzhcXDAwMFxcMTc5XFwwMDBcXDE4MFxcMDAwXFxcblxcMTgxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMVxcMjI0XFwwMDBcXDI1NVxcMjU1XFwyMjZcXDAwMFxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFxcblxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAxOVxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDA3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgRU9GXFwwMDBcXFxuICBORVdMSU5FXFwwMDBcXFxuICBTRU1JQ09MT05cXDAwMFxcXG4gIENPTU1BXFwwMDBcXFxuICBET1RcXDAwMFxcXG4gIE9QX1BBUlxcMDAwXFxcbiAgQ0xfUEFSXFwwMDBcXFxuICBPUF9DVVJcXDAwMFxcXG4gIENMX0NVUlxcMDAwXFxcbiAgQVRcXDAwMFxcXG4gIFRZUEVcXDAwMFxcXG4gIExBUlxcMDAwXFxcbiAgQ1BVVElNRVxcMDAwXFxcbiAgRU1BWFxcMDAwXFxcbiAgVE1BWFxcMDAwXFxcbiAgUExPVEVOVFJZXFwwMDBcXFxuICBERUxFVEVcXDAwMFxcXG4gIElOVFJPXFwwMDBcXFxuICBUUkFDS1xcMDAwXFxcbiAgRE9cXDAwMFxcXG4gIFNFVFxcMDAwXFxcbiAgUkVQRUFUXFwwMDBcXFxuICBTUEVDSUVTX09GXFwwMDBcXFxuICBVTlRJTFxcMDAwXFxcbiAgTE9HXFwwMDBcXFxuICBQTFVTXFwwMDBcXFxuICBNVUxUXFwwMDBcXFxuICBNSU5VU1xcMDAwXFxcbiAgTUFYXFwwMDBcXFxuICBNSU5cXDAwMFxcXG4gIERJVlxcMDAwXFxcbiAgU0lOVVNcXDAwMFxcXG4gIENPU0lOVVNcXDAwMFxcXG4gIFRBTlxcMDAwXFxcbiAgUE9XXFwwMDBcXFxuICBBQlNcXDAwMFxcXG4gIE1PRFVMT1xcMDAwXFxcbiAgU1FSVFxcMDAwXFxcbiAgRVhQT05FTlRcXDAwMFxcXG4gIElORklOSVRZXFwwMDBcXFxuICBUSU1FXFwwMDBcXFxuICBFVkVOVFxcMDAwXFxcbiAgTlVMTF9FVkVOVFxcMDAwXFxcbiAgUElQRVxcMDAwXFxcbiAgRVFVQUxcXDAwMFxcXG4gIEFORFxcMDAwXFxcbiAgT1JcXDAwMFxcXG4gIE5PVFxcMDAwXFxcbiAgR1JFQVRFUlxcMDAwXFxcbiAgU01BTExFUlxcMDAwXFxcbiAgVFJVRVxcMDAwXFxcbiAgRkFMU0VcXDAwMFxcXG4gIERJRkZcXDAwMFxcXG4gIEtBUFBBX1JBUlxcMDAwXFxcbiAgS0FQUEFfTFJBUlxcMDAwXFxcbiAgS0FQUEFfTE5LXFwwMDBcXFxuICBTSUdOQVRVUkVcXDAwMFxcXG4gIElOSVRcXDAwMFxcXG4gIExFVFxcMDAwXFxcbiAgUExPVFxcMDAwXFxcbiAgUEVSVFxcMDAwXFxcbiAgT0JTXFwwMDBcXFxuICBUT0tFTlxcMDAwXFxcbiAgQ09ORklHXFwwMDBcXFxuICBLQVBQQV9XTERcXDAwMFxcXG4gIEtBUFBBX1NFTUlcXDAwMFxcXG4gIEZMVVhcXDAwMFxcXG4gIEFTU0lHTlxcMDAwXFxcbiAgUFJJTlRGXFwwMDBcXFxuICBTVE9QXFwwMDBcXFxuICBTTkFQU0hPVFxcMDAwXFxcbiAgUlVOXFwwMDBcXFxuICBUSEVOXFwwMDBcXFxuICBFTFNFXFwwMDBcXFxuICBBTEFSTVxcMDAwXFxcbiAgQVBQTFlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBJTlRcXDAwMFxcXG4gIElEXFwwMDBcXFxuICBLQVBQQV9NUktcXDAwMFxcXG4gIExBQkVMXFwwMDBcXFxuICBGTE9BVFxcMDAwXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSBpblxuICAgIE9iai5yZXByKFxuIyA1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTA3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduZXdsaW5lKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgIChmdW4gYyAtPiBjKVxuIyAxMDgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25ld2xpbmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoXzEpXG4jIDEwODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAobGV0IG91dCA9IChTb21lIChfMSwgcmhzX3BvcyAxKSxfMikgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSBfMyBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gb3V0OjpyLkFzdC5ydWxlc30pXG4jIDEwOTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKGZ1biBjIC0+IGxldCByID0gXzIgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IChOb25lLF8xKTo6ci5Bc3QucnVsZXN9KVxuIyAxMTA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAobGV0IG91dCA9ICgoXzEscmhzX3BvcyAxKSxfMykgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSBfNCBjIGluIHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IG91dDo6ci5Bc3QudmFyaWFibGVzfSlcbiMgMTExNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnN0cnVjdGlvbikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBmdW4gYyAtPiBsZXQgciA9IF8yIGMgaW5cblx0XHQgICAgICBtYXRjaCBfMSB3aXRoXG5cdFx0ICAgICAgfCBBc3QuUlVMRSBydSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnJ1bGVzID0gcnU6OnIuQXN0LnJ1bGVzfVxuXHRcdCAgICAgIHwgQXN0LlNJRyBhZyAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnNpZ25hdHVyZXM9YWc6OnIuQXN0LnNpZ25hdHVyZXN9XG5cdFx0ICAgICAgfCBBc3QuVE9LRU5TSUcgKHN0cl9wb3MpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudG9rZW5zPXN0cl9wb3M6OnIuQXN0LnRva2Vuc31cblx0XHQgICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qudm9sdW1lcz0odm9sX3R5cGUsdm9sLHZvbF9wYXJhbSk6OnIuQXN0LnZvbHVtZXN9XG5cdFx0ICAgICAgfCBBc3QuSU5JVCAoYWxnLGluaXRfdCkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5pbml0PShhbGcsaW5pdF90KTo6ci5Bc3QuaW5pdH1cblx0XHQgICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzfVxuXHRcdCAgICAgIHwgQXN0Lk9CUyAoKGxibCxwb3MpLF8gYXMgdmFyKSAtPlxuXHRcdFx0ICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuXHRcdFx0ICAge3Igd2l0aFxuXHRcdFx0ICAgICBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXM7XG5cdFx0XHQgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCxwb3MpXG5cdFx0XHRcdFx0XHQgOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QTE9UIGV4cHIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHI6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBFUlQgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuXHRcdFx0ICAgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKTo6ci5Bc3QucGVydHVyYmF0aW9uc31cblx0XHQgICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsdmFsdWVfbGlzdCkgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpOjpyLkFzdC5jb25maWd1cmF0aW9uc31cblx0XHQgIClcbiMgMTE1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJTeW50YXggZXJyb3JcIikpKVxuIyAxMTU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNJRyBfMilcbiMgMTE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChBc3QuVE9LRU5TSUcgKF8yLHJoc19wb3MgMikpXG4jIDExNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdFx0KGFkZF9wb3MgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlLCBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG9mIHRoZSBmb3JtICclYWdlbnQ6IEEoeCx5fnV+dix6KSdcIikpKVxuIyAxMTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW5pdF9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5JTklUIF8yKVxuIyAxMTg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSlcbiMgMTE5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkRFQ0xBUkUgXzIpXG4jIDEyMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5PQlMgXzIpXG4jIDEyMDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgIChBc3QuUExPVCBfMilcbiMgMTIxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIGFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSlcbiMgMTIyMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlBFUlQgKGFkZF9wb3MgXzIpKVxuIyAxMjI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChBc3QuQ09ORklHICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEyMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxBc3QuSU5JVF9NSVggKF8yLHJoc19wb3MgMikpIClcbiMgMTI0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsQXN0LklOSVRfTUlYIChfMywgcmhzX3BvcyAzKSkgKVxuIyAxMjUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoKF8zLEFzdC5JTklUX1RPSyBbXzEscmhzX3BvcyAxXSkpXG4jIDEyNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKChfMSxBc3QuSU5JVF9UT0sgW18yLHJoc19wb3MgMl0pKVxuIyAxMjY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKFtfMSwgcmhzX3BvcyAxXSlcbiMgMTI3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICgoXzEscmhzX3BvcyAxKTo6XzIpXG4jIDEyODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChOb25lKVxuIyAxMjkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChTb21lIF8yKVxuIyAxMjk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChOb25lKVxuIyAxMzAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIF8yKVxuIyAxMzEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsXzIpKSkpXG4jIDEzMTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxTb21lIF8yLF80LF81KSApXG4jIDEzMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsTm9uZSxfMyxfNCkgKVxuIyAxMzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICggKE5vbmUsU29tZSBfMixfNCxTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsXzYpKSkpKVxuIyAxMzQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCAoXzEsU29tZSBfMixfNCxOb25lKSlcbiMgMTM1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxMzYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxMzY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoW18xXSlcbiMgMTM3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMylcbiMgMTM4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKEFzdC5VUERBVEUgKChfMixyaHNfcG9zIDIpLF8zKSlcbiMgMTM5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChBc3QuVVBEQVRFICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEzOTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgKEFzdC5DRkxPV0xBQkVMIChfMywoXzIscmhzX3BvcyAyKSkpXG4jIDE0MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAoQXN0LkNGTE9XTUlYIChfMywoW18yXSxyaHNfcG9zIDIpKSlcbiMgMTQxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKGlmIF8zIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxfMikgZWxzZSBBc3QuRElOT0ZGIF8yKVxuIyAxNDIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChpZiBfNCAmJiBfMyA9IFwiYWJzb2x1dGVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUsXzIpXG5cdCAgIGVsc2UgaWYgXzQgJiYgXzMgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuXHQgICAgIEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFksXzIpXG5cdCAgIGVsc2UgaWYgXzQgJiYgXzMgPSBcInJlbGF0aXZlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLF8yKVxuXHQgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDMpKSlcbiMgMTQzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIEFzdC5BUFBMWShcblx0XHQgICBfMixcblx0XHQgICAoeyBBc3QucmV3cml0ZSA9IGZzdCBfMztcblx0XHQgICAgICBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuXHRcdCAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuXHRcdCAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG5cdFx0IClcbiMgMTQ1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKCBBc3QuQVBQTFkoXzIsXG4gICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0ICBBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgQXN0LnJocz1fMzsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0ICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgIClcbiMgMTQ2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpKVxuIyAxNDczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICggQXN0LkFQUExZKF8yLFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5BcnJvdyB7QXN0Lmxocz1fMzsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgIEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgIClcbiMgMTQ4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpKVxuIyAxNDk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChcbiAgICAgICBsZXQgdGsgPSAoXzEscmhzX3BvcyAxKSBpblxuICAgICAgICBBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgICAgYWRkX3Bvc1xuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0XG5cdFx0IHtBc3QubWl4PVtdO1xuXHRcdCAgQXN0LmRlbHRhX3Rva2VuID1cblx0XHQgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyxfMywoQWxnX2V4cHIuVE9LRU5fSUQgXzEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSkpXG4gICAgICAgKVxuIyAxNTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNOQVBTSE9UIChmYWxzZSxfMikpXG4jIDE1MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKEFzdC5TVE9QIF8yKVxuIyAxNTMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlBSSU5UIChfMixfNCkgKVxuIyAxNTM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKCBBc3QuUExPVEVOVFJZIClcbiMgMTU0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlNQRUNJRVNfT0YgKF80LF8yLChfMywgcmhzX3BvcyAzKSkpXG4jIDE1NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgIChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgXzEpXSlcbiMgMTU2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoW1ByaW1pdGl2ZXMuQWxnX3BleHByIF8xXSlcbiMgMTU2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKF8xLCByaHNfcG9zIDEpOjpfMylcbiMgMTU3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuQWxnX3BleHByIF8xOjpfMylcbiMgMTU4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKFtdKVxuIyAxNTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxNTk2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAodHJ1ZSlcbiMgMTYwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChmYWxzZSlcbiMgMTYwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoKF8xLHJoc19wb3MgMSksKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8yLHJoc19wb3MgMikpKVxuIyAxNjE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoKChfMSxyaHNfcG9zIDEpLF8yKSlcbiMgMTYyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCgoXzEscmhzX3BvcyAxKSxfMikpXG4jIDE2MzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgIChyYWlzZVxuXHQgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXl8xXlwiJ1wiKSkpXG5cdCAgICApXG4jIDE2NDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNjQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIEFsZ19leHByLlRSVUUpXG4jIDE2NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIEFsZ19leHByLkZBTFNFKVxuIyAxNjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE2NjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULF8yKSkpXG4jIDE2NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQsXzEsXzMpKSlcbiMgMTY4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IsXzEsXzMpKSlcbiMgMTY5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIsXzEsXzMpKSlcbiMgMTY5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIsXzEsXzMpKSlcbiMgMTcwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLF8xLF8zKSkpXG4jIDE3MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLF8xLF8zKSkpXG4jIDE3MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMTczMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAxNzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNzQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zICBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCArIC4uLiArIGFfbiB0X24sIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSlcbiMgMTc1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd0b2tlbl9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTc1NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgIChbKF8xLChfMixyaHNfcG9zIDIpKV0pXG4jIDE3NjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGwgPSBfNCBpbiAoXzEsKF8yLHJoc19wb3MgMikpOjpsKVxuIyAxNzc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoWyhfMSwoXzMscmhzX3BvcyAzKSldKVxuIyAxNzgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGwgPSBfNSBpbiAoXzEsKF8zLHJoc19wb3MgMykpOjpsKVxuIyAxNzkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYXJyb3cpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXzFdOyBBc3Qucm1fdG9rZW4gPSBfMjsgQXN0LnJocz1bXzRdOyBBc3QuYWRkX3Rva2VuID0gXzV9LFxuICAgICBfMylcbiMgMTgwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fycm93KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXzFdOyBBc3Qucm1fdG9rZW4gPSBfMjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IF80fSxcbiAgICAgXzMpXG4jIDE4MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IF8xOyBBc3QucmhzPVtfM107IEFzdC5hZGRfdG9rZW4gPSBfNH0sXG4gICAgIF8yKVxuIyAxODI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IF8xOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gXzN9LFxuICAgICBfMilcbiMgMTgzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzIxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBBc3QuRWRpdCB7QXN0Lm1peCA9IFtfMV07IEFzdC5kZWx0YV90b2tlbiA9IF8yfSxmYWxzZSApXG4jIDE4NDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIEFzdC5FZGl0IHtBc3QubWl4ID0gW107IEFzdC5kZWx0YV90b2tlbiA9IF8yfSxmYWxzZSApXG4jIDE4NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYmlyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4pID0gXzIgaW5cbiAgICAgIGxldCByZXdyaXRlLGJpZGlyZWN0aW9uYWwgPSBfMSBpblxuICAgICAgYWRkX3BvcyB7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9IClcbiMgMTg2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChmYWxzZSlcbiMgMTg2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhcnJvdykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICh0cnVlKVxuIyAxODc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICggTmJyLkYgaW5maW5pdHkgKVxuIyAxODgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogZmxvYXQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKCBOYnIuRiBfMSApXG4jIDE4ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICggTmJyLkkgXzEgKVxuIyAxODk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMzQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTlNUIF8xKSlcbiMgMTkwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQ2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkpXG4jIDE5MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpKVxuIyAxOTE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpKVxuIyAxOTIwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5UT0tFTl9JRCAoXzIpKSlcbiMgMTkyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZF9wb3MgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8yKSApXG4jIDE5MzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSlcbiMgMTk0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSIChfMSkpKVxuIyAxOTQ4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSlcbiMgMTk1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSlcbiMgMTk2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkpXG4jIDE5NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTk3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbnN0YW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzNjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChfMSlcbiMgMTk4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChfMSlcbiMgMTk4NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLF8yLF8zKSkpXG4jIDE5OTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTixfMixfMykpKVxuIyAyMDAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCxfMikpKVxuIyAyMDEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLF8yKSkpXG4jIDIwMTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLF8yKSkpXG4jIDIwMjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTixfMikpKVxuIyAyMDMxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsXzIpKSlcbiMgMjAzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsXzIpKSlcbiMgMjA0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLF8yKSkpXG4jIDIwNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUyxfMikpIClcbiMgMjA1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjA2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQsXzEsXzMpKSlcbiMgMjA3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSxfMSxfMykpKVxuIyAyMDgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYsXzEsXzMpKSlcbiMgMjA5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyxfMSxfMykpKVxuIyAyMDk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csXzEsXzMpKSlcbiMgMjEwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTU9EVUxPLF8xLF8zKSkpXG4jIDIxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDIxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLklGKF8xLF8zLF81KSkpXG4jIDIxMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKGxldCAoazIsazEpID0gXzIgaW4gKGsyLGsxLE5vbmUsTm9uZSkpXG4jIDIxMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncmF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKGsyLGsxKSA9IF8yIGluXG5cdFx0XHQgIGxldCAoa2JhY2ssa2JhY2sxKSA9IF80IGluXG5cdFx0XHQgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSkpXG4jIDIxNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpKVxuIyAyMTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEsU29tZSBfMykpXG4jIDIxNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLFNvbWUgXzMpIClcbiMgMjE2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKChfMSxOb25lKSlcbiMgMjE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICgoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxTb21lIF8yKSlcbiMgMjE4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKChfMSxTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLE5vbmUpKSlcbiMgMjE5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJtaXNzaW5nIHJ1bGUgcmF0ZVwiKSkpXG4jIDIxOTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICgoXzEsTm9uZSkpXG4jIDIyMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDEzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEsIFNvbWUgXzMpKVxuIyAyMjExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMjIxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSA6OiBfMylcbiMgMjIyNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMjMzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIFtbQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKV1dIClcbiMgMjI0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25fZW1wdHlfbWl4dHVyZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIFtBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF8zLCBBc3QuTm9Nb2QpIDo6IF82XSlcbiMgMjI1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25fZW1wdHlfbWl4dHVyZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIEFzdC5Ob01vZCApXG4jIDIyNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kX2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKCBBc3QuQ3JlYXRlIClcbiMgMjI2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RfYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuRXJhc2UgKVxuIyAyMjY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZF9hZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKSlcbiMgMjI3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzFeXCInXCIpKSkpXG4jIDIyODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdtb2RfYWdlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKEFzdC5QcmVzZW50ICgoXzIscmhzX3BvcyAyKSwgXzQsIF8xKSlcbiMgMjI5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbW9kX2FnZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8yXlwiJ1wiKSkpKVxuIyAyMzAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ0OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoW10pXG4jIDIzMDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncG9ydF9leHByZXNzaW9uX3NpZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8zKVxuIyAyMzE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW18xXSlcbiMgMjMyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAyMzI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncG9ydF9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzMpXG4jIDIzMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwb3J0X2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DRVEgXzIscmhzX3BvcyAyKSlcbiMgMjM1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChBc3QuQ0dURSBfMyxyaHNfcG9zIDMpKVxuIyAyMzU4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DTFRFIF8zLHJoc19wb3MgMykpXG4jIDIzNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICggU29tZSAoQXN0LkNWQVIgXzIscmhzX3BvcyAyKSlcbiMgMjM3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfMzsgfSApXG4jIDIzODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fMztcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF80OyB9IClcbiMgMjM5NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzU7IH0gKVxuIyAyNDA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fNTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzY7IH0gKVxuIyAyNDIwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKF80LHJoc19wb3MgNCl9IClcbiMgMjQzMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtXzUscmhzX3BvcyA1KX0gKVxuIyAyNDQyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IF8yO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IChfNSxyaHNfcG9zIDUpfSApXG4jIDI0NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gXzI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC0gXzYscmhzX3BvcyA2KX0gKVxuIyAyNDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1MDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBfMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwfSApXG4jIDI0NzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzM7IH0gKVxuIyAyNDg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9XzM7XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzQ7IH0gKVxuIyAyNTAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPVtdO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzU7IH0gKVxuIyAyNTEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fNTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZShfNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9IF82OyB9IClcbiMgMjUyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTI3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKCBBc3QuQ291bnRlclxuICAgIFx0ICAgeyBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gPSBOb25lO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgXzQsIHJoc19wb3MgNCk7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdCA9IF80O1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgPSBDb3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjUzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChBc3QuQ291bnRlclxuICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC1fNSksIHJoc19wb3MgNSk7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0ID0gLV81O1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfdmlzaWJsZSA9IENvdW50ZXJzX2luZm8uRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoIGxldCBtaW4gPVxuICAgICAgICAgICAgbWF0Y2ggXzIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICAgaW4gQXN0LkNvdW50ZXJcbiAgICAgICAgIHsgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gKF8xLHJoc19wb3MgMSk7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSBfNSwgcmhzX3BvcyA1KTtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0ID0gbWluO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgPSBDb3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjU3MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCBfMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gKF8xLHJoc19wb3MgMSk7XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC1fNiksIHJoc19wb3MgNik7XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0ID0gbWluIDtcbiAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgPSBDb3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjU5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBsZXQgbWluID1cbiAgICAgICAgICAgbWF0Y2ggXzIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICBpblxuICAgICAgIEFzdC5Db3VudGVyXG4gIHsgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gKF8xLHJoc19wb3MgMSk7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCA9IE5vbmU7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0ID0gbWluO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfdmlzaWJsZSA9IENvdW50ZXJzX2luZm8uRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNjA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAyNjE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTb21lIF8xLHJoc19wb3MgMSk6Ol8yKVxuIyAyNjIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBhZnRlciBpbnRlcm5hbCBzdGF0ZVwiKSkpXG4jIDI2MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKE5vbmUpXG4jIDI2MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgTm9uZSlcbiMgMjY0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIChTb21lIChfMyxyaHNfcG9zIDMpKSlcbiMgMjY0OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgIChhZGRfcG9zIFwiSW5jb3JyZWN0IGxpbmsgbW9kaWZpY2F0aW9uXCIpKSlcbiMgMjY1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICgoTEthcHBhLkxOS19GUkVFLHJoc19wb3MgMikpXG4jIDI2NjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfVkFMVUUgKF8yLCgpKSxyaHNfcG9zIDIpKVxuIyAyNjY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfU09NRSxyaHNfcG9zIDIpKVxuIyAyNjc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoTEthcHBhLkxOS19UWVBFXG5cdFx0XHRcdCAgICAgICgoXzIscmhzX3BvcyAyKSwoXzQscmhzX3BvcyA0KSkpKVxuIyAyNjg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgTEthcHBhLkxOS19BTlkpXG4jIDI2OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyBcIkludmFsaWQgbGluayBzdGF0ZVwiKSkpXG4jIDI2OTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYV9saW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8yKVxuIyAyNzA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhX2xpbmtfc3RhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyNzEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYxNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKEFzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKSlcbiMgMjcxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlJVTiBfMilcbiMgMjcyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoQXN0Lk1PRElGWSBfMSlcbiMgMjczMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoQXN0LlFVSVQpXG4jIDI3MzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKSlcbiMgMjc0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbigqIEVudHJ5IHN0YXJ0X3J1bGUgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgaW50ZXJhY3RpdmVfY29tbWFuZCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2VmZmVjdF9saXN0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfYm9vbF9leHByICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHN0YXJ0X3J1bGUgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpXG5sZXQgaW50ZXJhY3RpdmVfY29tbWFuZCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpXG5sZXQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdClcbmxldCBzdGFuZGFsb25lX2Jvb2xfZXhwciAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZClcbjs7XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICovXG4vKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICovXG4vKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4le1xuICBsZXQgYWRkX3BvcyB4ID1cbiAgICAoeCxMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuJX1cblxuJXRva2VuIEVPRiBORVdMSU5FIFNFTUlDT0xPTiBDT01NQSBET1QgT1BfUEFSIENMX1BBUiBPUF9DVVIgQ0xfQ1VSIEFUIFRZUEUgTEFSXG4ldG9rZW4gQ1BVVElNRSBFTUFYIFRNQVggUExPVEVOVFJZIERFTEVURSBJTlRSTyBUUkFDSyBETyBTRVQgUkVQRUFUIFNQRUNJRVNfT0ZcbiV0b2tlbiBVTlRJTCBMT0cgUExVUyBNVUxUIE1JTlVTIE1BWCBNSU4gRElWIFNJTlVTIENPU0lOVVMgVEFOIFBPVyBBQlMgTU9EVUxPXG4ldG9rZW4gU1FSVCBFWFBPTkVOVCBJTkZJTklUWSBUSU1FIEVWRU5UIE5VTExfRVZFTlQgUElQRSBFUVVBTCBBTkQgT1IgTk9UXG4ldG9rZW4gR1JFQVRFUiBTTUFMTEVSIFRSVUUgRkFMU0UgRElGRiBLQVBQQV9SQVIgS0FQUEFfTFJBUiBLQVBQQV9MTktcbiV0b2tlbiBTSUdOQVRVUkUgSU5JVCBMRVQgUExPVCBQRVJUIE9CUyBUT0tFTiBDT05GSUcgS0FQUEFfV0xEIEtBUFBBX1NFTUlcbiV0b2tlbiBGTFVYIEFTU0lHTiBQUklOVEYgU1RPUCBTTkFQU0hPVCBSVU4gVEhFTiBFTFNFIEFMQVJNIEFQUExZXG4ldG9rZW4gPGludD4gSU5UXG4ldG9rZW4gPHN0cmluZz4gSURcbiV0b2tlbiA8c3RyaW5nPiBLQVBQQV9NUksgTEFCRUxcbiV0b2tlbiA8ZmxvYXQ+IEZMT0FUXG4ldG9rZW4gPHN0cmluZz4gU1RSSU5HXG5cbiVsZWZ0IE1JTlVTIFBMVVNcbiVsZWZ0IE1VTFQgRElWXG4lbGVmdCBNT0RVTE9cbiVyaWdodCBQT1dcbiVub25hc3NvYyBMT0cgU1FSVCBFWFBPTkVOVCBTSU5VUyBDT1NJTlVTIEFCUyBUQU5cblxuJWxlZnQgT1JcbiVsZWZ0IEFORFxuXG4lbm9uYXNzb2MgVEhFTlxuXG4lc3RhcnQgc3RhcnRfcnVsZVxuJXR5cGUgPEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWw+IHN0YXJ0X3J1bGVcblxuJXN0YXJ0IGludGVyYWN0aXZlX2NvbW1hbmRcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZD4gaW50ZXJhY3RpdmVfY29tbWFuZFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3Q+IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcblxuJXN0YXJ0IHN0YW5kYWxvbmVfYm9vbF9leHByXG4ldHlwZSA8KEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZD4gc3RhbmRhbG9uZV9ib29sX2V4cHJcblxuJSUgLypHcmFtbWFyIHJ1bGVzKi9cblxubmV3bGluZTpcbiAgICB8IE5FV0xJTkUgc3RhcnRfcnVsZSB7JDJ9XG4gICAgfCBFT0Yge2Z1biBjIC0+IGN9O1xuXG5zdGFydF9ydWxlOlxuICAgIHwgbmV3bGluZSB7JDF9XG4gICAgfCBMQUJFTCBydWxlX2V4cHJlc3Npb24gbmV3bGluZVxuICAgICAgICB7bGV0IG91dCA9IChTb21lICgkMSwgcmhzX3BvcyAxKSwkMikgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSAkMyBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gb3V0OjpyLkFzdC5ydWxlc319XG4gICAgfCBydWxlX2V4cHJlc3Npb24gbmV3bGluZVxuICAgICAgICB7ZnVuIGMgLT4gbGV0IHIgPSAkMiBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gKE5vbmUsJDEpOjpyLkFzdC5ydWxlc319XG4gICAgfCBMQUJFTCBFUVVBTCBhbGdfZXhwciBuZXdsaW5lXG4gICAgICAgIHtsZXQgb3V0ID0gKCgkMSxyaHNfcG9zIDEpLCQzKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9ICQ0IGMgaW4ge3Igd2l0aCBBc3QudmFyaWFibGVzID0gb3V0OjpyLkFzdC52YXJpYWJsZXN9fVxuICAgIHwgaW5zdHJ1Y3Rpb24gbmV3bGluZVxuXHRcdCAgeyBmdW4gYyAtPiBsZXQgciA9ICQyIGMgaW5cblx0XHQgICAgICBtYXRjaCAkMSB3aXRoXG5cdFx0ICAgICAgfCBBc3QuUlVMRSBydSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnJ1bGVzID0gcnU6OnIuQXN0LnJ1bGVzfVxuXHRcdCAgICAgIHwgQXN0LlNJRyBhZyAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnNpZ25hdHVyZXM9YWc6OnIuQXN0LnNpZ25hdHVyZXN9XG5cdFx0ICAgICAgfCBBc3QuVE9LRU5TSUcgKHN0cl9wb3MpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudG9rZW5zPXN0cl9wb3M6OnIuQXN0LnRva2Vuc31cblx0XHQgICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qudm9sdW1lcz0odm9sX3R5cGUsdm9sLHZvbF9wYXJhbSk6OnIuQXN0LnZvbHVtZXN9XG5cdFx0ICAgICAgfCBBc3QuSU5JVCAoYWxnLGluaXRfdCkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5pbml0PShhbGcsaW5pdF90KTo6ci5Bc3QuaW5pdH1cblx0XHQgICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzfVxuXHRcdCAgICAgIHwgQXN0Lk9CUyAoKGxibCxwb3MpLF8gYXMgdmFyKSAtPlxuXHRcdFx0ICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuXHRcdFx0ICAge3Igd2l0aFxuXHRcdFx0ICAgICBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXM7XG5cdFx0XHQgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCxwb3MpXG5cdFx0XHRcdFx0XHQgOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QTE9UIGV4cHIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHI6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBFUlQgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuXHRcdFx0ICAgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKTo6ci5Bc3QucGVydHVyYmF0aW9uc31cblx0XHQgICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsdmFsdWVfbGlzdCkgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpOjpyLkFzdC5jb25maWd1cmF0aW9uc31cblx0XHQgIH1cbiAgICB8IGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJTeW50YXggZXJyb3JcIikpfVxuICAgIDtcblxuaW5zdHJ1Y3Rpb246XG4gICAgfCBTSUdOQVRVUkUgYWdlbnRfZXhwcmVzc2lvbl9zaWcge0FzdC5TSUcgJDJ9XG4gICAgfCBUT0tFTiBJRCB7QXN0LlRPS0VOU0lHICgkMixyaHNfcG9zIDIpfVxuICAgIHwgU0lHTkFUVVJFIGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdFx0KGFkZF9wb3MgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlLCBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG9mIHRoZSBmb3JtICclYWdlbnQ6IEEoeCx5fnV+dix6KSdcIikpfVxuXG4gICAgfCBJTklUIGluaXRfZGVjbGFyYXRpb24ge0FzdC5JTklUICQyfVxuICAgIHwgSU5JVCBlcnJvclxuXHR7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKX1cblxuICAgIHwgTEVUIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHtBc3QuREVDTEFSRSAkMn1cbiAgICB8IE9CUyB2YXJpYWJsZV9kZWNsYXJhdGlvbiB7QXN0Lk9CUyAkMn1cbiAgICB8IFBMT1QgYWxnX2V4cHIge0FzdC5QTE9UICQyfVxuICAgIHwgUExPVCBlcnJvciB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBhbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSl9XG4gICAgfCBQRVJUIHBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbiB7QXN0LlBFUlQgKGFkZF9wb3MgJDIpfVxuICAgIHwgQ09ORklHIFNUUklORyB2YWx1ZV9saXN0XG5cdCAgICAge0FzdC5DT05GSUcgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICA7XG5cbmluaXRfZGVjbGFyYXRpb246XG4gICAgfCBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgIHsgKCQxLEFzdC5JTklUX01JWCAoJDIscmhzX3BvcyAyKSkgfVxuICAgIHwgYWxnX2V4cHIgT1BfUEFSIG5vbl9lbXB0eV9taXh0dXJlIENMX1BBUlxuICAgIHsgKCQxLEFzdC5JTklUX01JWCAoJDMsIHJoc19wb3MgMykpIH1cbiAgICB8IElEIExBUiBhbGdfZXhwciB7KCQzLEFzdC5JTklUX1RPSyBbJDEscmhzX3BvcyAxXSl9XG4gICAgfCBhbGdfZXhwciBJRCB7KCQxLEFzdC5JTklUX1RPSyBbJDIscmhzX3BvcyAyXSl9XG4gICAgO1xuXG52YWx1ZV9saXN0OlxuICAgIHwgU1RSSU5HIHtbJDEsIHJoc19wb3MgMV19XG4gICAgfCBTVFJJTkcgdmFsdWVfbGlzdCB7KCQxLHJoc19wb3MgMSk6OiQyfVxuICAgIDtcblxucGVydHVyYmF0aW9uX2FsYXJtOlxuICB7Tm9uZX1cbiAgfCBBTEFSTSBuYnIge1NvbWUgJDJ9XG5cbnBlcnR1cmJhdGlvbl9wb3N0OlxuICB7Tm9uZX1cbiAgfCBSRVBFQVQgYm9vbF9leHByIHtTb21lICQyfVxuICB8IFVOVElMIGJvb2xfZXhwclxuICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuXHQgeyBTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsJDIpKSl9XG5cblxucGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uOlxuICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBETyBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgKCQxLFNvbWUgJDIsJDQsJDUpIH1cbiAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgKCQxLE5vbmUsJDMsJDQpIH1cbiAgICB8IFJFUEVBVCBib29sX2V4cHIgRE8gZWZmZWN0X2xpc3QgVU5USUwgYm9vbF9leHByXG4gICAgICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuXHQgIHsgKE5vbmUsU29tZSAkMiwkNCxTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsJDYpKSkpfVxuICAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgU0VUIGVmZmVjdF9saXN0XG5cdFx0eyAoJDEsU29tZSAkMiwkNCxOb25lKX0gLypGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSovXG4gICAgO1xuXG5zdGFuZGFsb25lX2VmZmVjdF9saXN0OiBlZmZlY3RfbGlzdCBFT0YgeyQxfVxuXG5lZmZlY3RfbGlzdDpcbiAgICB8IE9QX1BBUiBlZmZlY3RfbGlzdCBDTF9QQVIgeyQyfVxuICAgIHwgZWZmZWN0IHtbJDFdfVxuICAgIHwgZWZmZWN0IFNFTUlDT0xPTiBlZmZlY3RfbGlzdCB7JDE6OiQzfVxuICAgIDtcblxuZWZmZWN0OlxuICAgIHwgQVNTSUdOIElEIGFsZ19leHByIC8qdXBkYXRpbmcgdGhlIHJhdGUgb2YgYSBydWxlKi9cblx0XHRcdFx0XHRcdCAgICAgIHtBc3QuVVBEQVRFICgoJDIscmhzX3BvcyAyKSwkMyl9XG4gICAgfCBBU1NJR04gTEFCRUwgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgcmF0ZSBvZiBhIHJ1bGUqL1xuXHRcdFx0XHRcdFx0ICAgICAge0FzdC5VUERBVEUgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICB8IFRSQUNLIExBQkVMIGJvb2xlYW5cblx0ICAgIHtBc3QuQ0ZMT1dMQUJFTCAoJDMsKCQyLHJoc19wb3MgMikpfVxuICAgIHwgVFJBQ0sgcGF0dGVybiBib29sZWFuXG5cdCAgICB7QXN0LkNGTE9XTUlYICgkMywoWyQyXSxyaHNfcG9zIDIpKX1cbiAgICB8IEZMVVggbm9uZW1wdHlfcHJpbnRfZXhwciBib29sZWFuXG5cdCAgIHtpZiAkMyB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsJDIpIGVsc2UgQXN0LkRJTk9GRiAkMn1cbiAgICB8IEZMVVggbm9uZW1wdHlfcHJpbnRfZXhwciBTVFJJTkcgYm9vbGVhblxuXHQgICB7aWYgJDQgJiYgJDMgPSBcImFic29sdXRlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLCQyKVxuXHQgICBlbHNlIGlmICQ0ICYmICQzID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cblx0ICAgICBBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLCQyKVxuXHQgICBlbHNlIGlmICQ0ICYmICQzID0gXCJyZWxhdGl2ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSwkMilcblx0ICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyAzKSl9XG4gICAgfCBBUFBMWSBzbWFsbF9hbGdfZXhwciBydWxlX2NvbnRlbnRcblx0XHQgeyBBc3QuQVBQTFkoXG5cdFx0ICAgJDIsXG5cdFx0ICAgKHsgQXN0LnJld3JpdGUgPSBmc3QgJDM7XG5cdFx0ICAgICAgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcblx0XHQgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcblx0XHQgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuXHRcdCB9XG4gICAgfCBJTlRSTyBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgICAgICB7IEFzdC5BUFBMWSgkMixcbiAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgIEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgICBBc3QucmhzPSQzOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICAgfVxuICAgIHwgSU5UUk8gZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKX1cbiAgICB8IERFTEVURSBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgICAgIHsgQXN0LkFQUExZKCQyLFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5BcnJvdyB7QXN0Lmxocz0kMzsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgIEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgIH1cblxuICAgIHwgREVMRVRFIGVycm9yXG4gICAgICAge3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSl9XG4gICAgfCBJRCBMQVIgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgdmFsdWUgb2YgYSB0b2tlbiovXG4gICAgICAge1xuICAgICAgIGxldCB0ayA9ICgkMSxyaHNfcG9zIDEpIGluXG4gICAgICAgIEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAgICBhZGRfcG9zXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXRcblx0XHQge0FzdC5taXg9W107XG5cdFx0ICBBc3QuZGVsdGFfdG9rZW4gPVxuXHRcdCAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLCQzLChBbGdfZXhwci5UT0tFTl9JRCAkMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9KSlcbiAgICAgICB9XG4gICAgfCBTTkFQU0hPVCBwcmludF9leHByIHtBc3QuU05BUFNIT1QgKGZhbHNlLCQyKX1cbiAgICB8IFNUT1AgcHJpbnRfZXhwciB7QXN0LlNUT1AgJDJ9XG4gICAgfCBQUklOVEYgcHJpbnRfZXhwciBTTUFMTEVSIHByaW50X2V4cHIgR1JFQVRFUiB7IEFzdC5QUklOVCAoJDIsJDQpIH1cbiAgICB8IFBMT1RFTlRSWSB7IEFzdC5QTE9URU5UUlkgfVxuICAgIHwgU1BFQ0lFU19PRiBub25lbXB0eV9wcmludF9leHByIG5vbl9lbXB0eV9taXh0dXJlIGJvb2xlYW4geyBBc3QuU1BFQ0lFU19PRiAoJDQsJDIsKCQzLCByaHNfcG9zIDMpKX1cbiAgICA7XG5cbm5vbmVtcHR5X3ByaW50X2V4cHI6XG4gICAgfCBTVFJJTkcge1tQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAkMSldfVxuICAgIHwgbWlkX2FsZ19leHByIHtbUHJpbWl0aXZlcy5BbGdfcGV4cHIgJDFdfVxuICAgIHwgU1RSSU5HIERPVCBub25lbXB0eV9wcmludF9leHByIHtQcmltaXRpdmVzLlN0cl9wZXhwciAoJDEsIHJoc19wb3MgMSk6OiQzfVxuICAgIHwgbWlkX2FsZ19leHByIERPVCBub25lbXB0eV9wcmludF9leHByIHtQcmltaXRpdmVzLkFsZ19wZXhwciAkMTo6JDN9XG4gICAgO1xucHJpbnRfZXhwcjpcbiAgICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgbm9uZW1wdHlfcHJpbnRfZXhwciB7JDF9XG5cbmJvb2xlYW46XG4gICAgfCBUUlVFIHt0cnVlfVxuICAgIHwgRkFMU0Uge2ZhbHNlfVxuICAgIDtcblxudmFyaWFibGVfZGVjbGFyYXRpb246XG4gICAgfCBMQUJFTCBub25fZW1wdHlfbWl4dHVyZVxuXHQgICB7ICgoJDEscmhzX3BvcyAxKSwoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgJDIscmhzX3BvcyAyKSl9XG4gICAgfCBMQUJFTCBhbGdfZXhwciB7KCgkMSxyaHNfcG9zIDEpLCQyKX1cbiAgICB8IElEIGFsZ19leHByIHsoKCQxLHJoc19wb3MgMSksJDIpfVxuICAgIHwgTEFCRUwgZXJyb3Jcblx0ICAgIHtyYWlzZVxuXHQgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpXG5cdCAgICB9XG4gICAgO1xuXG5zbWFsbF9ib29sX2V4cHI6XG4gICAgfCBPUF9QQVIgYm9vbF9leHByIENMX1BBUiB7JDJ9XG4gICAgfCBUUlVFIHthZGRfcG9zIEFsZ19leHByLlRSVUV9XG4gICAgfCBGQUxTRSB7YWRkX3BvcyBBbGdfZXhwci5GQUxTRX1cblxuYm9vbF9leHByOlxuICAgIHwgc21hbGxfYm9vbF9leHByIHsgJDEgfVxuICAgIHwgTk9UIHNtYWxsX2Jvb2xfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsJDIpKX1cbiAgICB8IGJvb2xfZXhwciBBTkQgYm9vbF9leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQsJDEsJDMpKX1cbiAgICB8IGJvb2xfZXhwciBPUiBib29sX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBHUkVBVEVSIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBTTUFMTEVSIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBFUVVBTCBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIERJRkYgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYsJDEsJDMpKX1cbiAgICA7XG5cbnN0YW5kYWxvbmVfYm9vbF9leHByOiBib29sX2V4cHIgRU9GIHskMX1cblxudG9rZW5fZXhwcjpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IFBJUEUgc3VtX3Rva2VuIHskMn1cbiAgICB8IFBJUEUgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wICsgLi4uICsgYV9uIHRfbiwgd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpfVxuICAgIDtcblxuc3VtX3Rva2VuOlxuICAgIHwgT1BfUEFSIHN1bV90b2tlbiBDTF9QQVIgeyQyfVxuICAgIHwgYWxnX2V4cHIgSUQge1soJDEsKCQyLHJoc19wb3MgMikpXX1cbiAgICB8IGFsZ19leHByIElEIFBMVVMgc3VtX3Rva2VuIHtsZXQgbCA9ICQ0IGluICgkMSwoJDIscmhzX3BvcyAyKSk6Omx9XG4gICAgfCBhbGdfZXhwciBUWVBFIElEIHtbKCQxLCgkMyxyaHNfcG9zIDMpKV19XG4gICAgfCBhbGdfZXhwciBUWVBFIElEIFBMVVMgc3VtX3Rva2VuIHtsZXQgbCA9ICQ1IGluICgkMSwoJDMscmhzX3BvcyAzKSk6Omx9XG5cbnJ1bGVfY29udGVudDpcbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHIgYXJyb3cgcGF0dGVybiB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bJDFdOyBBc3Qucm1fdG9rZW4gPSAkMjsgQXN0LnJocz1bJDRdOyBBc3QuYWRkX3Rva2VuID0gJDV9LFxuICAgICAkM31cbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHIgYXJyb3cgdG9rZW5fZXhwclxuICAgIHtBc3QuQXJyb3cge0FzdC5saHM9WyQxXTsgQXN0LnJtX3Rva2VuID0gJDI7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSAkNH0sXG4gICAgICQzfVxuICB8IHRva2VuX2V4cHIgYXJyb3cgcGF0dGVybiB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gJDE7IEFzdC5yaHM9WyQzXTsgQXN0LmFkZF90b2tlbiA9ICQ0fSxcbiAgICAgJDJ9XG4gIHwgdG9rZW5fZXhwciBhcnJvdyB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gJDE7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSAkM30sXG4gICAgICQyfVxuICB8IHBhdHRlcm4gdG9rZW5fZXhwclxuICAgIHsgQXN0LkVkaXQge0FzdC5taXggPSBbJDFdOyBBc3QuZGVsdGFfdG9rZW4gPSAkMn0sZmFsc2UgfTtcbiAgfCBQSVBFIHN1bV90b2tlblxuICAgIHsgQXN0LkVkaXQge0FzdC5taXggPSBbXTsgQXN0LmRlbHRhX3Rva2VuID0gJDJ9LGZhbHNlIH07XG5cbnJ1bGVfZXhwcmVzc2lvbjpcbiAgfCBydWxlX2NvbnRlbnQgYmlyYXRlXG4gICAgeyBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuKSA9ICQyIGluXG4gICAgICBsZXQgcmV3cml0ZSxiaWRpcmVjdGlvbmFsID0gJDEgaW5cbiAgICAgIGFkZF9wb3Mge1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSB9O1xuXG5hcnJvdzpcbiAgICB8IEtBUFBBX1JBUiB7ZmFsc2V9XG4gICAgfCBLQVBQQV9MUkFSIHt0cnVlfVxuICAgIDtcblxubmJyOlxuICAgIHwgSU5GSU5JVFkgeyBOYnIuRiBpbmZpbml0eSB9XG4gICAgfCBGTE9BVCB7IE5ici5GICQxIH1cbiAgICB8IElOVCB7IE5ici5JICQxIH1cblxuY29uc3RhbnQ6XG4gICAgfCBuYnIge2FkZF9wb3MgKEFsZ19leHByLkNPTlNUICQxKX1cbiAgICB8IEVNQVgge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKX1cbiAgICB8IFRNQVgge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKX1cbiAgICB8IENQVVRJTUUge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpfVxuICAgIDtcblxudmFyaWFibGU6XG4gICAgfCBQSVBFIElEIFBJUEUge2FkZF9wb3MgKEFsZ19leHByLlRPS0VOX0lEICgkMikpfVxuICAgIHwgUElQRSBub25fZW1wdHlfbWl4dHVyZSBQSVBFIHsgYWRkX3BvcyAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgJDIpIH1cbiAgICB8IElEIHthZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSICgkMSkpfVxuICAgIHwgTEFCRUwge2FkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKCQxKSl9XG4gICAgfCBUSU1FIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSl9XG4gICAgfCBFVkVOVCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKX1cbiAgICB8IE5VTExfRVZFTlQge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKX1cbiAgICA7XG5cbnNtYWxsX2FsZ19leHByOlxuICAgIHwgT1BfUEFSIGFsZ19leHByIENMX1BBUiB7JDJ9XG4gICAgfCBjb25zdGFudCB7JDF9XG4gICAgfCB2YXJpYWJsZSB7JDF9XG4gICAgfCBNQVggc21hbGxfYWxnX2V4cHIgc21hbGxfYWxnX2V4cHJcblx0ICB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsJDIsJDMpKX1cbiAgICB8IE1JTiBzbWFsbF9hbGdfZXhwciBzbWFsbF9hbGdfZXhwclxuXHQgIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTiwkMiwkMykpfVxuICAgIHwgRVhQT05FTlQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLCQyKSl9XG4gICAgfCBTSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUywkMikpfVxuICAgIHwgQ09TSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLCQyKSl9XG4gICAgfCBUQU4gbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLCQyKSl9XG4gICAgfCBBQlMgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULCQyKSl9XG4gICAgfCBTUVJUIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsJDIpKX1cbiAgICB8IExPRyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csJDIpKX1cbiAgICA7XG5cbm1pZF9hbGdfZXhwcjpcbiAgICB8IE1JTlVTIG1pZF9hbGdfZXhwciB7IGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsJDIpKSB9XG4gICAgfCBzbWFsbF9hbGdfZXhwciB7ICQxIH1cbiAgICB8IG1pZF9hbGdfZXhwciBNVUxUIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgUExVUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgRElWIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBNSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBQT1cgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVywkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIE1PRFVMTyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTU9EVUxPLCQxLCQzKSl9XG5cbmFsZ19leHByOlxuICAgIHwgbWlkX2FsZ19leHByIHskMX1cbiAgICB8IGJvb2xfZXhwciBUSEVOIGFsZ19leHByIEVMU0Ugc21hbGxfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLklGKCQxLCQzLCQ1KSl9XG5cbmJpcmF0ZTpcbiAgICB8IEFUIHJhdGUge2xldCAoazIsazEpID0gJDIgaW4gKGsyLGsxLE5vbmUsTm9uZSl9XG4gICAgfCBBVCByYXRlIENPTU1BIHJhdGUge2xldCAoazIsazEpID0gJDIgaW5cblx0XHRcdCAgbGV0IChrYmFjayxrYmFjazEpID0gJDQgaW5cblx0XHRcdCAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxKX1cbiAgICB8IGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpfVxuICAgIDtcblxucmF0ZTpcbiAgICB8IGFsZ19leHByIE9QX0NVUiBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIHsoJDEsU29tZSAkMyl9XG4gICAgfCBhbGdfZXhwciBPUF9QQVIgYWxnX3dpdGhfcmFkaXVzIENMX1BBUiB7ICgkMSxTb21lICQzKSB9XG4gICAgfCBhbGdfZXhwciB7KCQxLE5vbmUpfVxuICAgIHwgT1BfQ1VSIGFsZ193aXRoX3JhZGl1cyBDTF9DVVJcbiAgICAgIHsoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxTb21lICQyKX1cbiAgICB8IGFsZ19leHByIE9QX0NVUiBDTF9DVVJcbiAgICAgIHsoJDEsU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxOb25lKSl9XG4gICAgfCB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwibWlzc2luZyBydWxlIHJhdGVcIikpfVxuICAgIDtcblxuYWxnX3dpdGhfcmFkaXVzOlxuICAgIHwgYWxnX2V4cHIgeygkMSxOb25lKX1cbiAgICB8IGFsZ19leHByIFRZUEUgYWxnX2V4cHIgeygkMSwgU29tZSAkMyl9XG4gICAgO1xuXG5wYXR0ZXJuOlxuICAgIHwgT1BfUEFSIHBhdHRlcm4gQ0xfUEFSIHskMn1cbiAgICB8IGFnZW50X2V4cHJlc3Npb24gQ09NTUEgcGF0dGVybiB7JDEgOjogJDN9XG4gICAgfCBhZ2VudF9leHByZXNzaW9uIHtbJDFdfVxuO1xuXG5ub25fZW1wdHlfbWl4dHVyZTpcbiAgICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVJcbiAgICB7IFtbQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKV1dIH1cbiAgICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVIgQ09NTUEgcGF0dGVyblxuICAgIHsgW0FzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDMsIEFzdC5Ob01vZCkgOjogJDZdfVxuICAgIDtcblxubW9kX2FnZW50OlxuXHR8IHsgQXN0Lk5vTW9kIH1cblx0fCBQTFVTIHsgQXN0LkNyZWF0ZSB9XG5cdHwgTUlOVVMgeyBBc3QuRXJhc2UgfTtcblxuYWdlbnRfZXhwcmVzc2lvbl9zaWc6XG4gIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uX3NpZyBDTF9QQVIge0FzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDMsIEFzdC5Ob01vZCl9XG4gIHwgSUQgZXJyb3IgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQxXlwiJ1wiKSkpfVxuXG5hZ2VudF9leHByZXNzaW9uOlxuICAgIHwgbW9kX2FnZW50IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVJcblx0IHtBc3QuUHJlc2VudCAoKCQyLHJoc19wb3MgMiksICQ0LCAkMSl9XG4gICAgfCBtb2RfYWdlbnQgSUQgZXJyb3Jcblx0IHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDJeXCInXCIpKSl9XG4gICAgO1xuXG5pbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWc6XG4gICAgLyplbXB0eSovIHtbXX1cbiAgICB8IHBvcnRfZXhwcmVzc2lvbl9zaWcgQ09NTUEgaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnIHskMTo6JDN9XG4gICAgfCBwb3J0X2V4cHJlc3Npb25fc2lnIHtbJDFdfVxuICAgIDtcblxuaW50ZXJmYWNlX2V4cHJlc3Npb246XG4gIC8qZW1wdHkqLyB7W119XG4gICAgfCBwb3J0X2V4cHJlc3Npb24gQ09NTUEgaW50ZXJmYWNlX2V4cHJlc3Npb24geyQxOjokM31cbiAgICB8IHBvcnRfZXhwcmVzc2lvbiB7WyQxXX1cbiAgICA7XG5cbmNvdW50ZXJfdGVzdDpcbiAgIHwgVFlQRSBJTlQgeyBTb21lIChBc3QuQ0VRICQyLHJoc19wb3MgMil9XG4gICB8IFRZUEUgR1JFQVRFUiBJTlQgeyBTb21lIChBc3QuQ0dURSAkMyxyaHNfcG9zIDMpfVxuICAgfCBUWVBFIFNNQUxMRVIgSU5UIHsgU29tZSAoQXN0LkNMVEUgJDMscmhzX3BvcyAzKX1cbiAgIHwgVFlQRSBJRCB7IFNvbWUgKEFzdC5DVkFSICQyLHJoc19wb3MgMil9XG5cbnBvcnRfZXhwcmVzc2lvbjpcbiAgICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkMzsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDM7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNDsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ1OyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZSBsaW5rX3N0YXRlX21vZFxuXHQgeyBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQ1O1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNjsgfSB9XG4gICAgfCBJRCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKCQ0LHJoc19wb3MgNCl9IH1cbiAgICB8IElEIFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLSQ1LHJoc19wb3MgNSl9IH1cbiAgICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgkNSxyaHNfcG9zIDUpfSB9XG4gICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIE1JTlVTIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtICQ2LHJoc19wb3MgNil9IH1cbiAgIHwgSUQgY291bnRlcl90ZXN0XG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gTG9jLmFubm90X3dpdGhfZHVtbXkgMH0gfVxuICAgIDtcblxucG9ydF9leHByZXNzaW9uX3NpZzpcbiAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgbGlua19zdGF0ZV9tb2RcbiAgICBcdCB7IEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPVtdO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQzOyB9IH1cbiAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kMztcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNDsgfSB9XG4gIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlX21vZFxuICAgIFx0IHsgQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNTsgfSB9XG4gIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kNTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ2OyB9IH1cbiAgfCBJRCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgICAgIHsgQXN0LkNvdW50ZXJcbiAgICBcdCAgIHsgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gKCQxLHJoc19wb3MgMSk7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICQ0LCByaHNfcG9zIDQpO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQgPSAkNDtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlID0gQ291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgICAge0FzdC5Db3VudGVyXG4gIHsgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gKCQxLHJoc19wb3MgMSk7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gPSBOb25lO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLSQ1KSwgcmhzX3BvcyA1KTtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX2RlZmF1bHQgPSAtJDU7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlID0gQ291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgSU5UXG4gICAgICAgeyBsZXQgbWluID1cbiAgICAgICAgICAgIG1hdGNoICQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgIGluIEFzdC5Db3VudGVyXG4gICAgICAgICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgJDUsIHJoc19wb3MgNSk7XG4gICAgICAgICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbjtcbiAgICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ192aXNpYmxlID0gQ291bnRlcnNfaW5mby5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICB7IGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCAkMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19uYW1lID0gKCQxLHJoc19wb3MgMSk7XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC0kNiksIHJoc19wb3MgNik7XG4gICAgICAgICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19kZWZhdWx0ID0gbWluIDtcbiAgICAgICAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgPSBDb3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBjb3VudGVyX3Rlc3RcbiAgICAgIHsgbGV0IG1pbiA9XG4gICAgICAgICAgIG1hdGNoICQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgaW5cbiAgICAgICBBc3QuQ291bnRlclxuICB7IENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgQ291bnRlcnNfaW5mby5jb3VudGVyX3NpZ19tYXggPSBOb25lO1xuICAgIENvdW50ZXJzX2luZm8uY291bnRlcl9zaWdfZGVmYXVsdCA9IG1pbjtcbiAgICBDb3VudGVyc19pbmZvLmNvdW50ZXJfc2lnX3Zpc2libGUgPSBDb3VudGVyc19pbmZvLkZyb21fb3JpZ2luYWxfYXN0fX1cblxuXG5pbnRlcm5hbF9zdGF0ZTpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IEtBUFBBX01SSyBpbnRlcm5hbF9zdGF0ZSB7KFNvbWUgJDEscmhzX3BvcyAxKTo6JDJ9XG4gICAgfCBlcnJvclxuICAgICAgIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyBcIklzc3VlIGFmdGVyIGludGVybmFsIHN0YXRlXCIpKX1cbiAgICA7XG5cbmxpbmtfc3RhdGVfbW9kOlxuXHR8IHtOb25lfVxuXHR8IERJViBLQVBQQV9MTksgRE9UIHtTb21lIE5vbmV9XG5cdHwgRElWIEtBUFBBX0xOSyBJTlQge1NvbWUgKFNvbWUgKCQzLHJoc19wb3MgMykpfVxuXHR8IERJViBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgKGFkZF9wb3MgXCJJbmNvcnJlY3QgbGluayBtb2RpZmljYXRpb25cIikpfTtcblxuXG5hX2xpbmtfc3RhdGU6XG4gICAgfCBLQVBQQV9MTksgRE9UIHsoTEthcHBhLkxOS19GUkVFLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgSU5UIHsoTEthcHBhLkxOS19WQUxVRSAoJDIsKCkpLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgS0FQUEFfU0VNSSB7KExLYXBwYS5MTktfU09NRSxyaHNfcG9zIDIpfVxuICAgIHwgS0FQUEFfTE5LIElEIERPVCBJRCB7YWRkX3BvcyAoTEthcHBhLkxOS19UWVBFXG5cdFx0XHRcdCAgICAgICgoJDIscmhzX3BvcyAyKSwoJDQscmhzX3BvcyA0KSkpfVxuICAgIHwgS0FQUEFfV0xEIHthZGRfcG9zIExLYXBwYS5MTktfQU5ZfVxuICAgIHwgS0FQUEFfTE5LIGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIFwiSW52YWxpZCBsaW5rIHN0YXRlXCIpKX1cbjtcblxubGlua19zdGF0ZTpcblx0fCBhX2xpbmtfc3RhdGUgbGlua19zdGF0ZSB7JDE6OiQyfVxuXHR8IGFfbGlua19zdGF0ZSB7WyQxXX07XG5cbmludGVyYWN0aXZlX2NvbW1hbmQ6XG5cdHwgUlVOIE5FV0xJTkUge0FzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKX1cblx0fCBSVU4gYm9vbF9leHByIE5FV0xJTkUge0FzdC5SVU4gJDJ9XG5cdHwgZWZmZWN0X2xpc3QgTkVXTElORSB7QXN0Lk1PRElGWSAkMX1cblx0fCBFT0Yge0FzdC5RVUlUfVxuXHR8IGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSl9XG4lJVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxue1xuICBvcGVuIExleGluZ1xuICBvcGVuIEthcHBhUGFyc2VyXG5cbiAgbGV0IHJlYWNoX2VvZiBsZXhidWYgPVxuICAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZVxuXG4gbGV0IHJlc2V0X2VvZiBsZXhidWYgPVxuICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSBmYWxzZVxuXG4gbGV0IHBvc2l0aW9uIGxleGJ1ZiA9XG4gICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgIChwb3MucG9zX2ZuYW1lLCBwb3MucG9zX2xudW0sIHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJzZXRcIiBTRVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwidW50aWxcIiBVTlRJTCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5sZXQgc3BhY2VfY2hhcnMgPSBbJyAnOydcXG4nOydcXHQnXVxufVxuXG5sZXQgZW9sID0gJ1xccic/ICdcXG4nXG5sZXQgYmxhbmsgPSBbJyAnICdcXHQnXVxubGV0IGludGVnZXIgPSAoWycwJy0nOSddKylcbmxldCByZWFsID1cbiAgICAgKCgoKFsnMCctJzknXSsgKCcuJyBbJzAnLSc5J10qKT8pIHwgKCcuJyBbJzAnLSc5J10rKSlcblx0WydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKylcbiAgfCAoKFsnMCctJzknXSsgJy4nIFsnMCctJzknXSogKSB8IChbJzAnLSc5J10qICcuJyBbJzAnLSc5J10rKSkpXG5sZXQgaWQgPSAoJ18nKiBbJ2EnLSd6JyAnQSctJ1onXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICctJyAnKyddKiApXG5sZXQgaW50ZXJuYWxfc3RhdGUgPSAnficgKFsnMCctJzknICdhJy0neicgJ0EnLSdaJyAnXycgJy0nICcrJ10rKVxubGV0IHBlcnQgPSAnJCcgaWRcblxucnVsZSB0b2tlbiA9IHBhcnNlXG5cdCB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgdG9rZW4gbGV4YnVmfVxuXHQgfCBcIiYmXCIge0FORH1cblx0IHwgXCJ8fFwiIHtPUn1cblx0IHwgXCI8LT5cIiB7S0FQUEFfTFJBUn1cblx0IHwgXCItPlwiIHtLQVBQQV9SQVJ9XG5cdCB8IFwiPC1cIiB7TEFSfVxuXHQgfCBcIjw+XCIge0RJRkZ9XG5cdCB8IHBlcnQgYXMgcyB7bWF0Y2ggcyB3aXRoXG5cdFx0ICAgICAgfCBcIiRERUxcIiAtPiBERUxFVEVcblx0XHQgICAgICB8IFwiJEFERFwiIC0+IElOVFJPXG5cdFx0ICAgICAgfCBcIiRBUFBMWVwiIC0+IEFQUExZXG5cdFx0ICAgICAgfCBcIiRTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG5cdFx0ICAgICAgfCBcIiRTVE9QXCIgLT4gU1RPUFxuXHRcdCAgICAgIHwgXCIkRkxVWFwiIC0+IEZMVVhcblx0XHQgICAgICB8IFwiJFRSQUNLXCIgLT4gVFJBQ0tcblx0XHQgICAgICB8IFwiJFVQREFURVwiIC0+IEFTU0lHTlxuXHRcdCAgICAgIHwgXCIkUFJJTlRcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBSSU5URlwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG5cdFx0ICAgICAgfCBcIiRSVU5cIiAtPiBSVU5cblx0XHQgICAgICB8IFwiJFNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG5cdFx0ICAgICAgfCBzIC0+XG5cdFx0XHQgcmFpc2Vcblx0XHRcdCAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAgKFwiUGVydHVyYmF0aW9uIGVmZmVjdCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHQoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgICAgIH1cblx0IHwgJ1snIGJsYW5rKiAoaWQgYXMgbGFiKSBibGFuayogJ10nIHtcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJFXCIgLT4gRVZFTlRcblx0XHR8IFwiRS1cIiAtPiBOVUxMX0VWRU5UXG5cdFx0fCBcIlRcIiAtPiBUSU1FXG5cdFx0fCBcIlRzaW1cIiAtPiBDUFVUSU1FXG5cdFx0fCBcImxvZ1wiIC0+IExPR1xuXHRcdHwgXCJzaW5cIiAtPiBTSU5VU1xuXHRcdHwgXCJjb3NcIiAtPiBDT1NJTlVTXG5cdFx0fCBcInRhblwiIC0+IFRBTlxuXHRcdHwgXCJleHBcIiAtPiBFWFBPTkVOVFxuXHRcdHwgXCJpbnRcIiAtPiBBQlNcblx0XHR8IFwibW9kXCIgLT4gTU9EVUxPXG5cdFx0fCBcInNxcnRcIiAtPiBTUVJUXG5cdFx0fCBcInRydWVcIiAtPiBUUlVFXG5cdFx0fCBcImZhbHNlXCIgLT4gRkFMU0Vcblx0XHR8IFwicGlcIiAtPiBGTE9BVCAoMy4xNDE1OTI2NSlcblx0XHR8IFwibWF4XCIgLT4gTUFYXG5cdFx0fCBcIm1pblwiIC0+IE1JTlxuXHRcdHwgXCJFbWF4XCIgLT4gRU1BWFxuXHRcdHwgXCJUbWF4XCIgLT4gVE1BWFxuXHRcdHwgXCI/XCIgLT4gVEhFTlxuXHRcdHwgXCI6XCIgLT4gRUxTRVxuXHRcdHwgXCJub3RcIiAtPiBOT1Rcblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgIChcIlN5bWJvbCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgfVxuXHQgfCAnOicge1RZUEV9XG5cdCB8ICc7JyB7U0VNSUNPTE9OfVxuXHQgfCAnXFxcIicge2xldCBzdHIgPSByZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1ZiBpblxuXHRcdCBTVFJJTkcgc3RyfVxuXHQgfCBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FfVxuXHQgfCAnIycge2NvbW1lbnQgbGV4YnVmfVxuXHQgfCAnLycgJyonIHtpbmxpbmVfY29tbWVudCBsZXhidWY7IHRva2VuIGxleGJ1Zn1cblx0IHwgaW50ZWdlciBhcyBuIHt0cnkgSU5UIChpbnRfb2Zfc3RyaW5nIG4pXG5cdCB3aXRoIEZhaWx1cmUgXyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0IChuXlwiIGlzIGEgaW5jb3JyZWN0IGludGVnZXJcIixcblx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cblxuXHQgfCByZWFsIGFzIGYge0ZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZil9XG5cdCB8ICdcXCcnIChbXidcXG4nJ1xcJyddKyBhcyB4KSAnXFwnJ3tMQUJFTCh4KX1cblx0IHwgaWQgYXMgc3RyIHtrZXl3b3JkX29yX2lkIHN0cn1cblx0IHwgJ0AnIHtBVH1cblx0IHwgJywnIHtDT01NQX1cblx0IHwgJygnIHtPUF9QQVJ9XG5cdCB8ICcpJyB7Q0xfUEFSfVxuXHQgfCAneycge09QX0NVUn1cblx0IHwgJ30nIHtDTF9DVVJ9XG5cdCB8ICd8JyB7UElQRX1cblx0IHwgJy4nIHtET1R9XG5cdCB8ICcrJyB7UExVU31cblx0IHwgJyonIHtNVUxUfVxuXHQgfCAnLScge01JTlVTfVxuXHQgfCAnXicge1BPV31cblx0IHwgJy8nIHtESVZ9XG5cdCB8ICc8JyB7U01BTExFUn1cblx0IHwgJz4nIHtHUkVBVEVSfVxuXHQgfCAnPScge0VRVUFMfVxuXHQgfCAnJScgKGlkIGFzIGxhYikgJzonIHtcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuXHRcdHwgXCJpbml0XCIgLT4gSU5JVFxuXHRcdHwgXCJ2YXJcIiAtPiBMRVRcblx0XHR8IFwicGxvdFwiIC0+IFBMT1Rcblx0XHR8IFwibW9kXCIgLT4gUEVSVFxuXHRcdHwgXCJvYnNcIiAtPiBPQlNcblx0XHR8IFwiZGVmXCIgLT4gQ09ORklHXG5cdFx0fCBcInRva2VuXCIgLT4gVE9LRU5cblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChcIkluc3RydWN0aW9uIFxcXCJcIl5zXlwiXFxcIiBub3QgcmVjb2duaXplZFwiLFxuXHRcdFx0XHRcdExvYy5vZl9wb3Ncblx0XHRcdFx0XHQoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0XHQgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICB9XG5cdCB8ICchJyB7S0FQUEFfTE5LfVxuXHQgfCBpbnRlcm5hbF9zdGF0ZSBhcyBzIHtsZXQgaSA9IFN0cmluZy5pbmRleCBzICd+JyBpblxuXHRcdFx0XHRsZXQgciA9IFN0cmluZy5zdWIgcyAoaSsxKSAoU3RyaW5nLmxlbmd0aCBzLWktMSkgaW5cblx0XHRcdFx0S0FQUEFfTVJLIHJcblx0XHRcdCAgICAgICB9XG5cdCB8ICc/JyB7S0FQUEFfV0xEfVxuXHQgfCAnXycge0tBUFBBX1NFTUl9XG5cdCB8IGJsYW5rICB7dG9rZW4gbGV4YnVmfVxuXHQgfCBlb2Yge3JlYWNoX2VvZiBsZXhidWY7IEVPRn1cblx0IHwgXyBhcyBjIHtcblx0XHQgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgIChcImludmFsaWQgdXNlIG9mIGNoYXJhY3RlciBcIl4gU3RyaW5nLm1ha2UgMSBjLFxuXHRcdFx0ICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgIH1cblxuYW5kIHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCA9XG4gIHBhcnNlXG4gIHwgZW9mIHtTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpfVxuICB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1Zn1cbiAgfCBfIGFzIGMge2lmIExpc3QubWVtIGMgY2hhcl9saXN0XG5cdCAgICB0aGVuIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYylcblx0ICAgIGVsc2UgcmVhZF9sYWJlbCAoYzo6YWNjKSBjaGFyX2xpc3QgbGV4YnVmfVxuXG5hbmQgY29tbWVudCA9IHBhcnNlXG5cdCAgICB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkV9XG5cdCAgICB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyB0b2tlbiBsZXhidWZ9XG5cdCAgICB8IGVvZiB7RU9GfVxuXHQgICAgfCBfIHtjb21tZW50IGxleGJ1Zn1cblxuYW5kIGlubGluZV9jb21tZW50ID0gcGFyc2Vcblx0XHQgICB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmfVxuXHRcdCAgIHwgJyonICcvJyB7ICgpIH1cblx0XHQgICB8ICdcXFwiJ1xuXHRcdCAgICAgICB7aWdub3JlIChyZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1Zik7XG5cdFx0XHRpbmxpbmVfY29tbWVudCBsZXhidWZ9XG5cdFx0ICAgfCAnLycgJyonIHtpbmxpbmVfY29tbWVudCBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1Zn1cblx0XHQgICB8IF8ge2lubGluZV9jb21tZW50IGxleGJ1Zn1cbntcbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWxlID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmaWxlfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWxlIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICB0cnlcbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpbGUgaW5cbiAgICAgIGxldCBvdXQgPSBLYXBwYVBhcnNlci5zdGFydF9ydWxlIHRva2VuIGxleGJ1ZiBjb21waWwgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluIG91dFxuICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1zZyxwb3MpIC0+XG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgZXhpdCAzXG59XG4iLCIjIDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuIFxuICBvcGVuIExleGluZ1xuICBvcGVuIEthcHBhUGFyc2VyXG5cbiAgbGV0IHJlYWNoX2VvZiBsZXhidWYgPVxuICAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZVxuXG4gbGV0IHJlc2V0X2VvZiBsZXhidWYgPVxuICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSBmYWxzZVxuXG4gbGV0IHBvc2l0aW9uIGxleGJ1ZiA9XG4gICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgIChwb3MucG9zX2ZuYW1lLCBwb3MucG9zX2xudW0sIHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJzZXRcIiBTRVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwidW50aWxcIiBVTlRJTCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5sZXQgc3BhY2VfY2hhcnMgPSBbJyAnOydcXG4nOydcXHQnXVxuXG4jIDMxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjEzXFwyNTVcXDIxNFxcMjU1XFwyMTVcXDI1NVxcMjE3XFwyNTVcXDA4NFxcMDAwXFwyMTlcXDI1NVxcMTYwXFwwMDBcXFxuICAgIFxcMjIxXFwyNTVcXDIyMlxcMjU1XFwyMjVcXDI1NVxcMjI3XFwyNTVcXDIyOFxcMjU1XFwyMzFcXDI1NVxcMjMyXFwyNTVcXDIzM1xcMjU1XFxcbiAgICBcXDIzNFxcMjU1XFwyMzVcXDI1NVxcMjM2XFwyNTVcXDI0MFxcMDAwXFwwNDJcXDAwMVxcMTM2XFwwMDBcXDE1OVxcMDAwXFwxMTlcXDAwMVxcXG4gICAgXFwwNTFcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFwwMDFcXDAwMFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMTU3XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDAzNFxcMDAwXFwwODNcXDAwMFxcMDA2XFwwMDBcXDA5M1xcMDAwXFwxNjhcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDE3MFxcMDAxXFwyNTRcXDI1NVxcMjUzXFwyNTVcXDI0OVxcMjU1XFwwODBcXDAwMFxcMjUyXFwyNTVcXDI1MVxcMjU1XFwwMzlcXDAwMlxcXG4gICAgXFwwOTdcXDAwMlxcMjExXFwwMDJcXDAxM1xcMDAzXFwxMjdcXDAwM1xcMjQ3XFwyNTVcXDIxMlxcMDAyXFwyNDFcXDI1NVxcMTQyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDNcXDE1NVxcMDAxXFwxNzRcXDAwMlxcMTE3XFwwMDNcXDEzOFxcMDAwXFwyMzhcXDI1NVxcMTg1XFwwMDNcXDAwOVxcMDA0XFxcbiAgICBcXDA2N1xcMDA0XFwyMjBcXDI1NVxcMTQ3XFwwMDRcXDI0N1xcMDAxXFwyNTNcXDI1NVxcMjIzXFwwMDJcXDI1NVxcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjI1XFwwMDJcXDE3OFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzOVxcMDAyXFwyNTVcXDI1NVxcMDA1XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDAwNlxcMDAwXFwxNDNcXDAwM1xcMDA0XFwwMDVcXDI1MVxcMjU1XFwxMDFcXDAwMFxcMjUzXFwyNTVcXDA5N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMjU0XFwyNTVcXDI1MlxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDJcXDAwMFxcMjU1XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDM5XFwwMDBcXDA0MlxcMDAwXFwwMjZcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMjlcXDAwMFxcMDMyXFwwMDBcXDAyNVxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMzhcXDAwMFxcMDI3XFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDZcXDAwMFxcMDI4XFwwMDBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDA3XFwwMDBcXDAzNlxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAzM1xcMDAwXFwwMjJcXDAwMFxcMDI0XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDMwXFwwMDBcXDAyOVxcMDAwXFwwMzRcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMzFcXDAwMFxcMDM3XFwwMDBcXDA1NFxcMDAwXFwwMTBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE0XFwwMDBcXDAzNVxcMDAwXFwwMTNcXDAwMFxcMDA1XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNjZcXDAwMFxcMDQyXFwwMDBcXDA0MVxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNDVcXDAwMFxcMDkxXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA0M1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDU2XFwwMDBcXDA1MVxcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwNTVcXDAwMFxcMDUxXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNjlcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3MVxcMDAwXFwwNzNcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjdcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMzRcXDAwMFxcMDA1XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDQ0XFwwMDBcXDA4NVxcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwMzRcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDYwXFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjFcXDAwMFxcMDIwXFwwMDBcXDA2MFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMzFcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDM3XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDIzXFwwMDBcXDAzMVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwNDdcXDAwMFxcMDY3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1M1xcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNjlcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA2OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OVxcMDAwXFwwNTNcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwODJcXDAwMFxcMDgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgyXFwwMDBcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NFxcMDAwXFwyNTVcXDI1NVxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwxMzhcXDAwMFxcMjUyXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcXDI1NVxcMDAyXFwyNTVcXDI1NVxcMDAzXFwyNTVcXDI1NVxcMDAwXFwwMDJcXDAwMVxcMDAzXFwyNTVcIjtcbn1cblxubGV0IHJlYyB0b2tlbiBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSA0ICgtMSk7IF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgdG9rZW4gbGV4YnVmKVxuIyA2NDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDUxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChBTkQpXG4jIDY0NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKE9SKVxuIyA2NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAoS0FQUEFfTFJBUilcbiMgNjU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyA1NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoS0FQUEFfUkFSKVxuIyA2NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChMQVIpXG4jIDY2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDYgLT5cbiMgNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKERJRkYpXG4jIDY3MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDcgLT5cbmxldFxuIyA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICBzXG4jIDY3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChtYXRjaCBzIHdpdGhcblx0XHQgICAgICB8IFwiJERFTFwiIC0+IERFTEVURVxuXHRcdCAgICAgIHwgXCIkQUREXCIgLT4gSU5UUk9cblx0XHQgICAgICB8IFwiJEFQUExZXCIgLT4gQVBQTFlcblx0XHQgICAgICB8IFwiJFNOQVBTSE9UXCIgLT4gU05BUFNIT1Rcblx0XHQgICAgICB8IFwiJFNUT1BcIiAtPiBTVE9QXG5cdFx0ICAgICAgfCBcIiRGTFVYXCIgLT4gRkxVWFxuXHRcdCAgICAgIHwgXCIkVFJBQ0tcIiAtPiBUUkFDS1xuXHRcdCAgICAgIHwgXCIkVVBEQVRFXCIgLT4gQVNTSUdOXG5cdFx0ICAgICAgfCBcIiRQUklOVFwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUFJJTlRGXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQTE9URU5UUllcIiAtPiBQTE9URU5UUllcblx0XHQgICAgICB8IFwiJFJVTlwiIC0+IFJVTlxuXHRcdCAgICAgIHwgXCIkU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0Zcblx0XHQgICAgICB8IHMgLT5cblx0XHRcdCByYWlzZVxuXHRcdFx0ICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgICAoXCJQZXJ0dXJiYXRpb24gZWZmZWN0IFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgICAgKVxuIyA3MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA4IC0+XG5sZXRcbiMgNzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYlxuIyA3MDYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMSkgaW5cbiMgNzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiRVwiIC0+IEVWRU5UXG5cdFx0fCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuXHRcdHwgXCJUXCIgLT4gVElNRVxuXHRcdHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuXHRcdHwgXCJsb2dcIiAtPiBMT0dcblx0XHR8IFwic2luXCIgLT4gU0lOVVNcblx0XHR8IFwiY29zXCIgLT4gQ09TSU5VU1xuXHRcdHwgXCJ0YW5cIiAtPiBUQU5cblx0XHR8IFwiZXhwXCIgLT4gRVhQT05FTlRcblx0XHR8IFwiaW50XCIgLT4gQUJTXG5cdFx0fCBcIm1vZFwiIC0+IE1PRFVMT1xuXHRcdHwgXCJzcXJ0XCIgLT4gU1FSVFxuXHRcdHwgXCJ0cnVlXCIgLT4gVFJVRVxuXHRcdHwgXCJmYWxzZVwiIC0+IEZBTFNFXG5cdFx0fCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG5cdFx0fCBcIm1heFwiIC0+IE1BWFxuXHRcdHwgXCJtaW5cIiAtPiBNSU5cblx0XHR8IFwiRW1heFwiIC0+IEVNQVhcblx0XHR8IFwiVG1heFwiIC0+IFRNQVhcblx0XHR8IFwiP1wiIC0+IFRIRU5cblx0XHR8IFwiOlwiIC0+IEVMU0Vcblx0XHR8IFwibm90XCIgLT4gTk9UXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAoXCJTeW1ib2wgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIClcbiMgNzM5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMDggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoVFlQRSlcbiMgNzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbiMgMTA5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFNFTUlDT0xPTilcbiMgNzQ5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTEwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChsZXQgc3RyID0gcmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYgaW5cblx0XHQgU1RSSU5HIHN0cilcbiMgNzU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTIgLT5cbiMgMTEyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FKVxuIyA3NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMyAtPlxuIyAxMTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoY29tbWVudCBsZXhidWYpXG4jIDc2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE0IC0+XG4jIDExNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAoaW5saW5lX2NvbW1lbnQgbGV4YnVmOyB0b2tlbiBsZXhidWYpXG4jIDc3MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE1IC0+XG5sZXRcbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIG5cbiMgNzc2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDExNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICh0cnkgSU5UIChpbnRfb2Zfc3RyaW5nIG4pXG5cdCB3aXRoIEZhaWx1cmUgXyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0IChuXlwiIGlzIGEgaW5jb3JyZWN0IGludGVnZXJcIixcblx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgNzg0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTYgLT5cbmxldFxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgZlxuIyA3OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgKEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikpXG4jIDc5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE3IC0+XG5sZXRcbiMgMTIyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA4MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDEyMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTEFCRUwoeCkpXG4jIDgwNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE4IC0+XG5sZXRcbiMgMTIzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICBzdHJcbiMgODEwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChrZXl3b3JkX29yX2lkIHN0cilcbiMgODE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTkgLT5cbiMgMTI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEFUKVxuIyA4MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMCAtPlxuIyAxMjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQ09NTUEpXG4jIDgyNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIxIC0+XG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChPUF9QQVIpXG4jIDgyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIyIC0+XG4jIDEyNyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDTF9QQVIpXG4jIDgzNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIzIC0+XG4jIDEyOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChPUF9DVVIpXG4jIDgzOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI0IC0+XG4jIDEyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDTF9DVVIpXG4jIDg0NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI1IC0+XG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChQSVBFKVxuIyA4NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNiAtPlxuIyAxMzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRE9UKVxuIyA4NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNyAtPlxuIyAxMzIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoUExVUylcbiMgODU5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjggLT5cbiMgMTMzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE1VTFQpXG4jIDg2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI5IC0+XG4jIDEzNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChNSU5VUylcbiMgODY5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzAgLT5cbiMgMTM1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFBPVylcbiMgODc0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzEgLT5cbiMgMTM2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKERJVilcbiMgODc5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzIgLT5cbiMgMTM3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFNNQUxMRVIpXG4jIDg4NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMzIC0+XG4jIDEzOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChHUkVBVEVSKVxuIyA4ODkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNCAtPlxuIyAxMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRVFVQUwpXG4jIDg5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM1IC0+XG5sZXRcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIGxhYlxuIyA5MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoXG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcblx0XHR8IFwiaW5pdFwiIC0+IElOSVRcblx0XHR8IFwidmFyXCIgLT4gTEVUXG5cdFx0fCBcInBsb3RcIiAtPiBQTE9UXG5cdFx0fCBcIm1vZFwiIC0+IFBFUlRcblx0XHR8IFwib2JzXCIgLT4gT0JTXG5cdFx0fCBcImRlZlwiIC0+IENPTkZJR1xuXHRcdHwgXCJ0b2tlblwiIC0+IFRPS0VOXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoXCJJbnN0cnVjdGlvbiBcXFwiXCJec15cIlxcXCIgbm90IHJlY29nbml6ZWRcIixcblx0XHRcdFx0XHRMb2Mub2ZfcG9zXG5cdFx0XHRcdFx0KExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdFx0IChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgKVxuIyA5MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNiAtPlxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoS0FQUEFfTE5LKVxuIyA5MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNyAtPlxubGV0XG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgc1xuIyA5MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgaSA9IFN0cmluZy5pbmRleCBzICd+JyBpblxuXHRcdFx0XHRsZXQgciA9IFN0cmluZy5zdWIgcyAoaSsxKSAoU3RyaW5nLmxlbmd0aCBzLWktMSkgaW5cblx0XHRcdFx0S0FQUEFfTVJLIHJcblx0XHRcdCAgICAgICApXG4jIDkzOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM4IC0+XG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9XTEQpXG4jIDk0MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM5IC0+XG4jIDE2MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9TRU1JKVxuIyA5NDggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MCAtPlxuIyAxNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAodG9rZW4gbGV4YnVmKVxuIyA5NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MSAtPlxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAocmVhY2hfZW9mIGxleGJ1ZjsgRU9GKVxuIyA5NTggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MiAtPlxubGV0XG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICBjXG4jIDk2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChcblx0XHQgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgIChcImludmFsaWQgdXNlIG9mIGNoYXJhY3RlciBcIl4gU3RyaW5nLm1ha2UgMSBjLFxuXHRcdFx0ICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgIClcbiMgOTczIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGFiZWxfcmVjIGFjYyBjaGFyX2xpc3QgbGV4YnVmIDY3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpKVxuIyA5ODUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1ZilcbiMgOTkwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICBjXG4jIDk5NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChpZiBMaXN0Lm1lbSBjIGNoYXJfbGlzdFxuXHQgICAgdGhlbiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpXG5cdCAgICBlbHNlIHJlYWRfbGFiZWwgKGM6OmFjYykgY2hhcl9saXN0IGxleGJ1ZilcbiMgMTAwMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGNvbW1lbnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiA3NFxuYW5kIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTgyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FKVxuIyAxMDE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxODMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgdG9rZW4gbGV4YnVmKVxuIyAxMDE5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxODQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoRU9GKVxuIyAxMDI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAxODUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGNvbW1lbnQgbGV4YnVmKVxuIyAxMDI5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGlubGluZV9jb21tZW50IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgbGV4YnVmIDgzXG5hbmQgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTg4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA0MSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTg5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICggKCkgKVxuIyAxMDQ2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxOTEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGlnbm9yZSAocmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYpO1xuXHRcdFx0aW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDUyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAxOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAxOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA2MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDE5NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmlsZSA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZmlsZX0gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmlsZSA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgdHJ5XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWxlIGluXG4gICAgICBsZXQgb3V0ID0gS2FwcGFQYXJzZXIuc3RhcnRfcnVsZSB0b2tlbiBsZXhidWYgY29tcGlsIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpbiBvdXRcbiAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtc2cscG9zKSAtPlxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgIGV4aXQgM1xuXG4jIDEwODYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2F0YWxvZyA9IEtmaWxlcy5jcmVhdGUgKClcblxudHlwZSBfIGhhbmRsZSA9XG4gIHwgTm90aGluZyA6IHVuaXQgaGFuZGxlXG4gIHwgQ2F0YWxvZyA6IEtmaWxlcy5jYXRhbG9nX2l0ZW0gbGlzdCBoYW5kbGVcbiAgfCBJbmZvIDogKHN0cmluZyAqIGludCkgaGFuZGxlXG4gIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZVxuXG50eXBlIGJveCA9XG4gIHwgQiA6ICdhIGhhbmRsZSAqIGludCAqICgnYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IC0+IGJveFxuXG5sZXQgcmVwbHkgcG9zdCB3cml0ZV92IGlkIHYgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlXG4gICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpO1xuICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgIFJlc3VsdF91dGlsLndyaXRlX3Qgd3JpdGVfdlxuICAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9saXN0IFJlc3VsdF91dGlsLndyaXRlX21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgYiB2KTtcbiAgICAgICAgICBdKVxuICAgICAgKClcbiAgaW5cbiAgcG9zdCBtZXNzYWdlXG5cbmxldCB3cml0ZV9jYXRhbG9nX2l0ZW1zID0gSnNvblV0aWwud3JpdGVfbGlzdCBLZmlsZXMud3JpdGVfY2F0YWxvZ19pdGVtXG5cbmxldCBsaWZ0X2Fuc3dlciA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciB0ZXh0IC0+XG4gICAgUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgIFsgeyBSZXN1bHRfdXRpbC5yYW5nZSA9IE5vbmU7IHNldmVyaXR5ID0gTG9ncy5FcnJvcjsgdGV4dCB9IF1cblxubGV0IG9uX21lc3NhZ2UgeWllbGQgcG9zdCA9XG4gIGxldCBjdXJyZW50X2lkID0gcmVmIE5vbmUgaW5cbiAgZnVuIHRleHQgLT5cbiAgICB0cnlcbiAgICAgIEx3dC5iaW5kXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgICAgICAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCAoZnVuIHN0IGIgbXNnX2lkIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gY3VycmVudF9pZCA6PSBTb21lIG1zZ19pZCBpblxuICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyAoZnVuIHN0IGIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlQ2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuY2F0YWxvZyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKENhdGFsb2csIG1zZ19pZCwgUmVzdWx0X3V0aWwub2sgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlQ3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBLZmlsZXMuZmlsZV9jcmVhdGUgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlR2V0XCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfZ2V0IH5pZCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKEluZm8sIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlTW92ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfbW92ZSB+cG9zaXRpb24gfmlkIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVVcGRhdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfcGF0Y2ggfmlkIGNvbnRlbnQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZURlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX2RlbGV0ZSB+aWQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiUHJvamVjdFBhcnNlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LmJpbmQgKEtmaWxlcy5wYXJzZSB5aWVsZCBjYXRhbG9nKSAoZnVuIG91dCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoQXN0LCBtc2dfaWQsIG91dCkpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIlByb2plY3RPdmVyd3JpdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IEtmaWxlcy5vdmVyd3JpdGUgaWQgY29udGVudCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoQlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTm90aGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJJbnZhbGlkIGRpcmVjdGl2ZTogXCIgXiB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gKSkpKVxuICAgICAgICAgICAgICAgICAgc3QgYikpXG4gICAgICAgICAgIHRleHQpXG4gICAgICAgIChmdW4gYW5zd2VyIC0+XG4gICAgICAgICAgbGV0ICgpID0gY3VycmVudF9pZCA6PSBOb25lIGluXG4gICAgICAgICAgbWF0Y2ggYW5zd2VyIHdpdGhcbiAgICAgICAgICB8IEIgKENhdGFsb2csIG1zZ19pZCwgeCkgLT4gcmVwbHkgcG9zdCB3cml0ZV9jYXRhbG9nX2l0ZW1zIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChOb3RoaW5nLCBtc2dfaWQsIHgpIC0+XG4gICAgICAgICAgICByZXBseSBwb3N0IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChBc3QsIG1zZ19pZCwgeCkgLT4gcmVwbHkgcG9zdCBBc3Qud3JpdGVfcGFyc2luZ19jb21waWwgbXNnX2lkIHhcbiAgICAgICAgICB8IEIgKEluZm8sIG1zZ19pZCwgeCkgLT5cbiAgICAgICAgICAgIHJlcGx5IHBvc3RcbiAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nXG4gICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICAgICAgICAgIG1zZ19pZCB4KVxuICAgIHdpdGggZSAtPlxuICAgICAgKG1hdGNoICFjdXJyZW50X2lkIHdpdGhcbiAgICAgIHwgU29tZSBtc2dfaWQgLT5cbiAgICAgICAgcmVwbHkgcG9zdCBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBtc2dfaWRcbiAgICAgICAgICAoUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjtcbiAgICAgICAgICAgICAgICAgcmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJFeGNlcHRpb24gcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBlO1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICBdKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgfCBZb2pzb24uSnNvbl9lcnJvciB4IC0+XG4gICAgICAgICAgcG9zdFxuICAgICAgICAgICAgKFlvanNvbi50b19zdHJpbmdcbiAgICAgICAgICAgICAgIChgU3RyaW5nXG4gICAgICAgICAgICAgICAgICh4IF4gXCJcXG5NZXNzYWdlIGZvcm1hdCBtdXN0IGJlIFsgaWQsIFtcXFwiUmVxdWVzdFxcXCIsIC4uLiBdIF1cIikpKVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBTdHJpbmdcbiAgICAgICAgICAgICAgICAgKFwidW5leHBlY3RlZCBleGNlcHRpb246IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGVcbiAgICAgICAgICAgICAgICBeIFwiXFxuTWVzc2FnZSBmb3JtYXQgbXVzdCBiZSBbIGlkLCBbXFxcIlJlcXVlc3RcXFwiLCAuLi4gXSBdXCIpKSkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBBc3RcblxubGV0IHJlYyBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiAoYWxnLCBwb3MpID1cbiAgbWF0Y2ggYWxnIHdpdGhcbiAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBhc3QgLT5cbiAgICAobWF0Y2ggZG9tYWluIHdpdGhcbiAgICB8IFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikgLT5cbiAgICAgIGxldCBkb21haW4nLCBjY3MgPVxuICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZVxuICAgICAgICAgIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluID9vcmlnaW4gYXN0XG4gICAgICBpblxuICAgICAgbGV0IG91dF9jY3MgPSBMaXN0Lm1hcCAoZnVuICh4LCBfKSAtPiBBcnJheS5tYXAgZnN0IHgpIGNjcyBpblxuICAgICAgU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluJyksIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBvdXRfY2NzLCBwb3MpXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoXCJUaGVvcml0aWNhbGx5IHB1cmUgYWxnX2V4cHIgaGFzIGEgbWl4dHVyZVwiLCBwb3MpKSlcbiAgfCBBbGdfZXhwci5BTEdfVkFSIGkgLT4gZG9tYWluLCAoQWxnX2V4cHIuQUxHX1ZBUiBpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgaSAtPiBkb21haW4sIChBbGdfZXhwci5UT0tFTl9JRCBpLCBwb3MpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIG9wIC0+IGRvbWFpbiwgKEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCwgcG9zKVxuICB8IEFsZ19leHByLkNPTlNUIG4gLT4gZG9tYWluLCAoQWxnX2V4cHIuQ09OU1QgbiwgcG9zKVxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBsZXQgZG9tYWluJycsIGInID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhJywgYicpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgZG9tYWluJywgKEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEnKSwgcG9zKVxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIGxldCBkb21haW4nLCBjb25kJyA9XG4gICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gY29uZFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCB5ZXMnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIHllcyBpblxuICAgIGxldCBkb21haW4nJycsIG5vJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJycgbm8gaW5cbiAgICBkb21haW4nJycsIChBbGdfZXhwci5JRiAoY29uZCcsIHllcycsIG5vJyksIHBvcylcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChcIkNhbm5vdCBkZWFsIHdpdGggZGVyaXZhdGl2ZSBpbiBleHByZXNzaW9uc1wiLCBwb3MpKVxuXG5hbmQgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluID0gZnVuY3Rpb25cbiAgfCBBbGdfZXhwci5UUlVFLCBwb3MgLT4gZG9tYWluLCAoQWxnX2V4cHIuVFJVRSwgcG9zKVxuICB8IEFsZ19leHByLkZBTFNFLCBwb3MgLT4gZG9tYWluLCAoQWxnX2V4cHIuRkFMU0UsIHBvcylcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBkb21haW4nLCAoQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEnKSwgcG9zKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgYiBpblxuICAgIGRvbWFpbicnLCAoQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEnLCBiJyksIHBvcylcblxubGV0IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiAoYWxnLCBwb3MpID1cbiAgc25kIEBAIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gTm9uZSAoYWxnLCBwb3MpXG5cbmxldCBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uID9vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgKGFsZywgcG9zKSA9XG4gIG1hdGNoXG4gICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgKFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikpXG4gICAgICAoYWxnLCBwb3MpXG4gIHdpdGhcbiAgfCBTb21lIChfLCBfLCBkb21haW4pLCBhbGcgLT4gZG9tYWluLCBhbGdcbiAgfCBOb25lLCBfIC0+IGZhaWx3aXRoIFwiZG9tYWluIGhhcyBiZWVuIGxvc3QgaW4gRXhwci5jb21waWxlX2FsZ1wiXG5cbmxldCBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiA/b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgIChhbGcsIHBvcykgPVxuICBtYXRjaFxuICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAoU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluKSlcbiAgICAgIChhbGcsIHBvcylcbiAgd2l0aFxuICB8IFNvbWUgKF8sIF8sIGRvbWFpbiksIGFsZyAtPiBkb21haW4sIGFsZ1xuICB8IE5vbmUsIF8gLT4gZmFpbHdpdGggXCJkb21haW4gaGFzIGJlZW4gbG9zdCBpbiBFeHByLmNvbXBpbGVfYWxnXCJcblxubGV0IHRva2VuaWZ5IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGwgPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIChhbGdfZXhwciwgaWQpIChkb21haW4sIG91dCkgLT5cbiAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgICAgaW5cbiAgICAgIGRvbWFpbicsIChhbGcsIGlkKSA6OiBvdXQpXG4gICAgbCAoZG9tYWluLCBbXSlcblxuKCogdHJhbnNmb3JtIGFuIExLYXBwYSBydWxlIGludG8gYSBQcmltaXRpdmVzIHJ1bGUgKilcbmxldCBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgP2RlcHNfbWFjaGluZXJ5IH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBkb21haW4gfnN5bnRheF9yZWYgKHJ1bGUsIF8pID1cbiAgbGV0IGRvbWFpbicsIGRlbHRhX3Rva3MgPVxuICAgIHRva2VuaWZ5IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICBydWxlLkxLYXBwYS5yX2RlbHRhX3Rva2Vuc1xuICBpblxuICAoKiBsZXQgb25lX3NpZGUgc3ludGF4X3JlZiBsYWJlbCAoZG9tYWluLGRlcHNfbWFjaGluZXJ5LHVuYXJ5X2NjcyxhY2MpXG4gICAgICAgcmF0ZSB1bmFyeV9yYXRlIGxocyByaHMgcm0gYWRkID0qKVxuICBsZXQgb3JpZ2luLCBkZXBzID1cbiAgICBtYXRjaCBkZXBzX21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgKG8sIGQpIC0+IFNvbWUgbywgU29tZSBkXG4gIGluXG4gIGxldCB1bmFyeV9pbmZvcyA9XG4gICAgbGV0IGNycCA9XG4gICAgICBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gcnVsZS5MS2FwcGEucl9yYXRlXG4gICAgaW5cbiAgICBtYXRjaCBydWxlLkxLYXBwYS5yX3VuX3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmdW4gXyAtPiBjcnAsIE5vbmVcbiAgICB8IFNvbWUgKCgoXywgcG9zKSBhcyByYXRlKSwgZGlzdCkgLT5cbiAgICAgIGxldCBkaXN0JyA9XG4gICAgICAgIG1hdGNoIGRpc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZCAtPlxuICAgICAgICAgIGxldCBkJywgXyA9IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkIGluXG4gICAgICAgICAgU29tZSBkJ1xuICAgICAgaW5cbiAgICAgIGxldCB1bnJhdGUgPSBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gcmF0ZSBpblxuICAgICAgZnVuIChjY3MsIGJvb2wpIC0+XG4gICAgICAgIChtYXRjaCBBcnJheS5sZW5ndGggY2NzIHdpdGhcbiAgICAgICAgfCAwIHwgMSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBub3QgYm9vbCB0aGVuXG4gICAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF90ZXh0IGZcbiAgICAgICAgICAgICAgICAgICAgXCJVc2VsZXNzIG1vbGVjdWxhciBhbWJpZ3VpdHksIHRoZSBydWxlcyBpcyBhbHdheXMgXFxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNpZGVyZWQgYXMgdW5hcnkuXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB1bnJhdGUsIE5vbmVcbiAgICAgICAgfCAyIC0+IGNycCwgU29tZSAodW5yYXRlLCBkaXN0JylcbiAgICAgICAgfCBuIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiVW5hcnkgcnVsZSBkb2VzIG5vdCBkZWFsIHdpdGggXCIgXiBzdHJpbmdfb2ZfaW50IG5cbiAgICAgICAgICAgICAgICAgXiBcIiBjb25uZWN0ZWQgY29tcG9uZW50cy5cIixcbiAgICAgICAgICAgICAgICAgcG9zICkpKVxuICBpblxuICBsZXQgYnVpbGQgZGVwcyAoKG9yaWdpbiwgY2NzLCBzeW50YXgsIChuZWcsIHBvcykpLCBib29sKSA9XG4gICAgbGV0IGNjcycgPSBBcnJheS5tYXAgZnN0IGNjcyBpblxuICAgIGxldCByYXRlLCB1bnJhdGUgPSB1bmFyeV9pbmZvcyAoY2NzJywgYm9vbCkgaW5cbiAgICAoIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgIG1hdGNoIG9yaWdpbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbyAtPiBvXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJ1Z2x5IEV2YWwucnVsZV9vZl9hc3RcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHgnID1cbiAgICAgICAgICAgIG1hdGNoIHVucmF0ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4geFxuICAgICAgICAgICAgfCBTb21lICh1ciwgXykgLT4gQWxnX2V4cHIuYWRkX2RlcCB4IG9yaWdpbiB1clxuICAgICAgICAgIGluXG4gICAgICAgICAgQWxnX2V4cHIuYWRkX2RlcCB4JyBvcmlnaW4gcmF0ZSlcbiAgICAgICAgZGVwcyxcbiAgICAgIHtcbiAgICAgICAgUHJpbWl0aXZlcy51bmFyeV9yYXRlID0gdW5yYXRlO1xuICAgICAgICBQcmltaXRpdmVzLnJhdGU7XG4gICAgICAgIFByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgPSBjY3MnO1xuICAgICAgICBQcmltaXRpdmVzLnJlbW92ZWQgPSBuZWc7XG4gICAgICAgIFByaW1pdGl2ZXMuaW5zZXJ0ZWQgPSBwb3M7XG4gICAgICAgIFByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zID0gZGVsdGFfdG9rcztcbiAgICAgICAgUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSA9IHN5bnRheF9yZWY7XG4gICAgICAgIFByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMgPSBzeW50YXg7XG4gICAgICB9IClcbiAgaW5cbiAgbGV0IHJ1bGVfbWl4dHVyZXMsIChkb21haW4nLCBvcmlnaW4nKSA9XG4gICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX3J1bGUgfmRlYnVnX21vZGVcbiAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyA/b3JpZ2luIHJ1bGUuTEthcHBhLnJfbWl4XG4gICAgICBydWxlLkxLYXBwYS5yX2NyZWF0ZWRcbiAgaW5cbiAgbGV0IGRlcHNfYWxncycsIHJ1bGVzX2wgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biByIChkZXBzX2FsZ3MsIG91dCkgLT5cbiAgICAgICAgbGV0IGRlcHNfYWxncycsIHInJyA9IGJ1aWxkIGRlcHNfYWxncyByIGluXG4gICAgICAgIGRlcHNfYWxncycsIHInJyA6OiBvdXQpXG4gICAgICBydWxlX21peHR1cmVzIChkZXBzLCBbXSlcbiAgaW5cbiAgKCBkb21haW4nLFxuICAgIChtYXRjaCBvcmlnaW4nIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBvIC0+XG4gICAgICBTb21lXG4gICAgICAgICggbyxcbiAgICAgICAgICBtYXRjaCBkZXBzX2FsZ3MnIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwidWdseSBFdmFsLnJ1bGVfb2ZfYXN0XCIgKSksXG4gICAgcnVsZXNfbCApXG5cbmxldCBvYnNfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19kZXBzIHJlcyA9XG4gIGxldCBkb21haW4sIG91dCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGRvbWFpbiwgY29udCkgYWxnX2V4cHIgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIGFsZ19wb3MgPVxuICAgICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIGFsZ19wb3MgOjogY29udClcbiAgICAgIChkb21haW4sIFtdKSByZXMub2JzZXJ2YWJsZXNcbiAgaW5cbiAgaWYgTGlzdC5leGlzdHMgKEFsZ19leHByLmhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZTpmYWxzZSBhbGdfZGVwcykgb3V0IHRoZW5cbiAgICBkb21haW4sIExpc3QucmV2IG91dFxuICBlbHNlXG4gICAgKCBkb21haW4sXG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSKVxuICAgICAgOjogTGlzdC5yZXYgb3V0IClcblxubGV0IGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBleCA9XG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4gZWwgKGRvbWFpbiwgb3V0KSAtPlxuICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBzIC0+IGRvbWFpbiwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgcyA6OiBvdXRcbiAgICAgIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgYXN0X2FsZyAtPlxuICAgICAgICBsZXQgZG9tYWluJywgYWxnID1cbiAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhc3RfYWxnXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuQWxnX3BleHByIGFsZyA6OiBvdXQpXG4gICAgZXggKGRvbWFpbiwgW10pXG5cbmxldCBjZmxvd3Nfb2ZfbGFiZWwgfmRlYnVnX21vZGUgb3JpZ2luIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIG9uXG4gICAgYWxncyBydWxlcyAobGFiZWwsIHBvcykgcmV2X2VmZmVjdHMgPVxuICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgIGlmIG9uIHRoZW5cbiAgICAgIFByaW1pdGl2ZXMuQ0ZMT1cgKFNvbWUgbGFiZWwsIHgsIHRlc3RzKSA6OiBsXG4gICAgZWxzZVxuICAgICAgUHJpbWl0aXZlcy5DRkxPV09GRiAoU29tZSBsYWJlbCwgeCkgOjogbFxuICBpblxuICBsZXQgbWl4ID1cbiAgICB0cnlcbiAgICAgIGxldCBfLCAocnVsZSwgXykgPVxuICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSwgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIChsLCBfKSwgXyAtPiBsID0gbGFiZWwpXG4gICAgICAgICAgcnVsZXNcbiAgICAgIGluXG4gICAgICBMS2FwcGEudG9fbWFpbnRhaW5lZCBydWxlLkxLYXBwYS5yX21peFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgXywgKHZhciwgXykgPSBMaXN0LmZpbmQgKGZ1biAoKGwsIF8pLCBfKSAtPiBsID0gbGFiZWwpIGFsZ3MgaW5cbiAgICAgICAgIG1hdGNoIHZhciB3aXRoXG4gICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG1peCAtPiBtaXhcbiAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfXG4gICAgICAgICB8IEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfXG4gICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgKCBcIkxhYmVsICdcIiBeIGxhYmVsXG4gICAgICAgICAgICAgICAgXiBcIicgZG9lcyBub3QgcmVmZXIgdG8gYSBub24gYW1iaWd1b3VzIEthcHBhIGV4cHJlc3Npb25cIixcbiAgICAgICAgICAgICAgICBwb3MgKSkpXG4gIGluXG4gIGxldCBkb21haW4nLCBjY3MgPVxuICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiB+b3JpZ2luIG1peFxuICBpblxuICAoIGRvbWFpbicsXG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSkgcmV2X2VmZmVjdHMgY2NzXG4gIClcblxubGV0IGVmZmVjdHNfb2ZfbW9kaWYgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgKGRvbWFpbiwgcmV2X2VmZmVjdHMpID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoYWxnX2V4cHIsICgoXywgcG9zKSBhcyBwYWNrKSkgLT5cbiAgICBsZXQgZG9tYWluJywgYWxnX3BvcyA9XG4gICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBfLCBlbGVtX3J1bGVzID1cbiAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbidcbiAgICAgICAgfnN5bnRheF9yZWY6MCBwYWNrXG4gICAgaW5cbiAgICBsZXQgZWxlbV9ydWxlID1cbiAgICAgIG1hdGNoIGVsZW1fcnVsZXMgd2l0aFxuICAgICAgfCBbIHIgXSAtPiByXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIkFtYmlndW91cyBydWxlIGluIG1vZGlmaXRpb24gaXMgaW1wb3NzaWJsZVwiLCBwb3MpKVxuICAgIGluXG4gICAgZG9tYWluJycsIFByaW1pdGl2ZXMuSVRFUl9SVUxFIChhbGdfcG9zLCBlbGVtX3J1bGUpIDo6IHJldl9lZmZlY3RzXG4gIHwgVVBEQVRFICgoaSwgXyksIGFsZ19leHByKSAtPlxuICAgIGxldCBkb21haW4nLCBhbGdfcG9zID1cbiAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLlVQREFURSAoaSwgYWxnX3BvcykgOjogcmV2X2VmZmVjdHNcbiAgfCBTTkFQU0hPVCAocmF3LCBwZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgKCp3aGVuIHNwZWNpYWxpemluZyBzbmFwc2hvdHMgdG8gcGFydGljdWxhciBtaXh0dXJlcywgYWRkIHZhcmlhYmxlcyBiZWxvdyopXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5TTkFQU0hPVCAocmF3LCBwZXhwcicpIDo6IHJldl9lZmZlY3RzXG4gIHwgU1RPUCBwZXhwciAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLlNUT1AgcGV4cHInIDo6IHJldl9lZmZlY3RzXG4gIHwgQ0ZMT1dMQUJFTCAob24sIGxhYikgLT5cbiAgICBjZmxvd3Nfb2ZfbGFiZWwgfmRlYnVnX21vZGUgb3JpZ2luIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIG9uXG4gICAgICBhc3RfYWxncyBhc3RfcnVsZXMgbGFiIHJldl9lZmZlY3RzXG4gIHwgQ0ZMT1dNSVggKG9uLCAoYXN0LCBfKSkgLT5cbiAgICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgICAgaWYgb24gdGhlblxuICAgICAgICBQcmltaXRpdmVzLkNGTE9XIChOb25lLCB4LCB0ZXN0cykgOjogbFxuICAgICAgZWxzZVxuICAgICAgICBQcmltaXRpdmVzLkNGTE9XT0ZGIChOb25lLCB4KSA6OiBsXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJywgY2NzID1cbiAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIH5vcmlnaW4gYXN0XG4gICAgaW5cbiAgICAoIGRvbWFpbicsXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggKHksIHQpIC0+IGFkZHMgdCB4IChBcnJheS5tYXAgZnN0IHkpKVxuICAgICAgICByZXZfZWZmZWN0cyBjY3MgKVxuICB8IERJTiAocmVsLCBwZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5ESU4gKHJlbCwgcGV4cHInKSA6OiByZXZfZWZmZWN0c1xuICB8IERJTk9GRiBwZXhwciAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLkRJTk9GRiBwZXhwcicgOjogcmV2X2VmZmVjdHNcbiAgfCBBc3QuUFJJTlQgKHBleHByLCBwcmludCkgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBwcmludCcgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyBwcmludFxuICAgIGluXG4gICAgZG9tYWluJycsIFByaW1pdGl2ZXMuUFJJTlQgKHBleHByJywgcHJpbnQnKSA6OiByZXZfZWZmZWN0c1xuICB8IFBMT1RFTlRSWSAtPiBkb21haW4sIFByaW1pdGl2ZXMuUExPVEVOVFJZIDo6IHJldl9lZmZlY3RzXG4gIHwgU1BFQ0lFU19PRiAob24sIHBleHByLCAoYXN0LCBwb3MpKSAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBsZXQgYWRkcyB0ZXN0cyBsIHggPVxuICAgICAgaWYgb24gdGhlblxuICAgICAgICBQcmltaXRpdmVzLlNQRUNJRVMgKHBleHByJywgeCwgdGVzdHMpIDo6IGxcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBwZXhwcicgOjogbFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCBjY3MgPVxuICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmUgfmRlYnVnX21vZGVcbiAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nIH5vcmlnaW4gYXN0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGFyciwgXykgLT5cbiAgICAgICAgICBpZiBBcnJheS5sZW5ndGggYXJyID4gMSB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoIFwiU1BFQ0lFU19PRiBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG9uZSBjb25uZWN0ZWQgY29tcG9uZW50XCIsXG4gICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICBjY3NcbiAgICBpblxuICAgICggZG9tYWluJycsXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggKHksIHQpIC0+IGFkZHMgdCB4IChBcnJheS5tYXAgZnN0IHkpKVxuICAgICAgICByZXZfZWZmZWN0cyBjY3MgKVxuXG5sZXQgZWZmZWN0c19vZl9tb2RpZnMgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGwgPVxuICBsZXQgZG9tYWluJywgcmV2X2VmZmVjdHMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZWZmZWN0c19vZl9tb2RpZiB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwKVxuICAgICAgKGRvbWFpbiwgW10pIGxcbiAgaW5cbiAgZG9tYWluJywgTGlzdC5yZXYgcmV2X2VmZmVjdHNcblxubGV0IGNvbXBpbGVfbW9kaWZpY2F0aW9uc19ub190cmFjayA9XG4gIGVmZmVjdHNfb2ZfbW9kaWZzIFtdIFtdIChPcGVyYXRvci5NT0RJRiAoLTEpKVxuXG4oKiBpbnRlcnZlbnRpb25zIHdpdGhvdXQgcHJlIGFuZCBwb3N0LCBidXQgd2l0aCBhbGFybSBhcmUgbm90IGFwcGxpZWRcbiAgIGF0IGluaXRpYWxpc2F0aW9uICopXG5sZXQgcGVydF9ub3RfaW5pdCBvdmVyd3JpdGVfdDAgeCB5IHogPVxuICBtYXRjaCB4LCB5LCB6IHdpdGhcbiAgfCBfLCBTb21lIHAsIF8gLT4gcFxuICB8IFNvbWUgXywgTm9uZSwgTm9uZSAtPlxuICAgIGxldCB0X3ZhciA9XG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSKVxuICAgIGluXG4gICAgbGV0IHQwID0gT3B0aW9uX3V0aWwuZm9sZCAoZnVuIF8geCAtPiBOYnIuRiB4KSBOYnIuemVybyBvdmVyd3JpdGVfdDAgaW5cbiAgICBsZXQgaW5pdF90ID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIHQwKSBpblxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT01QQVJFX09QIChPcGVyYXRvci5HUkVBVEVSLCB0X3ZhciwgaW5pdF90KSlcbiAgfCBOb25lLCBOb25lLCBOb25lIHwgU29tZSBfLCBOb25lLCBTb21lIF8gfCBOb25lLCBOb25lLCBTb21lIF8gLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5UUlVFXG5cbmxldCBwZXJ0X29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/b3ZlcndyaXRlX3QwIGFzdF9hbGdzIGFzdF9ydWxlc1xuICAgIGFsZ19kZXBzIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHJlcyA9XG4gIGxldCBkb21haW4sIG91dF9hbGdfZGVwcywgXywgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChkb21haW4sIGFsZ19kZXBzLCBwX2lkLCBscGVydCwgdHJhY2tpbmdfZW5hYmxlZClcbiAgICAgICAgICAgKChhbGFybSwgcHJlX2V4cHIsIG1vZGlmX2V4cHJfbGlzdCwgb3B0X3Bvc3QpLCBwb3MpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYWxhcm0gd2l0aFxuICAgICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgICBpZiBOYnIuY29tcGFyZSBuIE5ici56ZXJvIDw9IDAgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiYWxhcm0gaGFzIHRvIGJlIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLjBcIiwgcG9zKSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9yaWdpbiA9IE9wZXJhdG9yLk1PRElGIHBfaWQgaW5cbiAgICAgICAgbGV0IHByZV9leHByJyA9IHBlcnRfbm90X2luaXQgb3ZlcndyaXRlX3QwIGFsYXJtIHByZV9leHByIG9wdF9wb3N0IGluXG4gICAgICAgIGxldCBkb21haW4nLCBwcmUgPVxuICAgICAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIH5vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICAgICAgICBwcmVfZXhwcidcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFsZ19kZXBzJyA9XG4gICAgICAgICAgbWF0Y2ggYWxhcm0gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IGFsZ19kZXBzXG4gICAgICAgICAgfCBOb25lIC0+IEFsZ19leHByLmFkZF9kZXBfYm9vbCBhbGdfZGVwcyBvcmlnaW4gcHJlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4sIGVmZmVjdHMgPVxuICAgICAgICAgIGVmZmVjdHNfb2ZfbW9kaWZzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICAgICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyBtb2RpZl9leHByX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRvbWFpbiwgb3B0ID1cbiAgICAgICAgICBtYXRjaCBvcHRfcG9zdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRvbWFpbiwgTm9uZVxuICAgICAgICAgIHwgU29tZSBwb3N0X2V4cHIgLT5cbiAgICAgICAgICAgIGxldCBkb21haW4nLCAocG9zdCwgcG9zdF9wb3MpID1cbiAgICAgICAgICAgICAgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICAgICAgICAgICAgcG9zdF9leHByXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZG9tYWluJywgU29tZSAocG9zdCwgcG9zdF9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYXNfdHJhY2tpbmcgPVxuICAgICAgICAgIHRyYWNraW5nX2VuYWJsZWRcbiAgICAgICAgICB8fCBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5TUEVDSUVTIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1dPRkYgXyB8IFByaW1pdGl2ZXMuUFJJTlQgX1xuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuVVBEQVRFIF8gfCBQcmltaXRpdmVzLlNOQVBTSE9UIF9cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkRJTiBfIHwgUHJpbWl0aXZlcy5ESU5PRkYgXyB8IFByaW1pdGl2ZXMuUExPVEVOVFJZXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TVE9QIF8gfCBQcmltaXRpdmVzLklURVJfUlVMRSBfXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICBlZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZWVkc19iYWNrdHJhY2sgPVxuICAgICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlVQREFURSBfIHwgUHJpbWl0aXZlcy5TVE9QIF8gfCBQcmltaXRpdmVzLklURVJfUlVMRSBfXG4gICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5TUEVDSUVTIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBSSU5UIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIF8gfCBQcmltaXRpdmVzLkRJTiBfIHwgUHJpbWl0aXZlcy5ESU5PRkYgX1xuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuUExPVEVOVFJZIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICBlZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXBlYXQgPVxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFXG4gICAgICAgICAgfCBTb21lIHAgLT4gcFxuICAgICAgICBpblxuICAgICAgICBsZXQgcGVydCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5hbGFybTtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMucHJlY29uZGl0aW9uID0gcHJlO1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5lZmZlY3QgPSBlZmZlY3RzO1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5yZXBlYXQ7XG4gICAgICAgICAgICBQcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjaztcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbiwgYWxnX2RlcHMnLCBzdWNjIHBfaWQsIHBlcnQgOjogbHBlcnQsIGhhc190cmFja2luZylcbiAgICAgIChkb21haW4sIGFsZ19kZXBzLCAwLCBbXSwgZmFsc2UpXG4gICAgICByZXMucGVydHVyYmF0aW9uc1xuICBpblxuICBkb21haW4sIG91dF9hbGdfZGVwcywgTGlzdC5yZXYgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWRcblxubGV0IGNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGUgfndhcm5pbmcgP3Jlc2NhbGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBlbnZcbiAgICBpbml0cyA9XG4gIGxldCBpbml0X2wsIF8gPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKGZ1biAoYWxnLCBpbml0X3QpIHByZWVudiAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIEFsZ19leHByLmhhc19taXggfnZhcl9kZWNsczooTW9kZWwuZ2V0X2FsZyBlbnYpIChmc3QgYWxnKSB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoIFwiSW5pdGlhbCBxdWFudGl0aWVzIGNhbm5vdCBkZXBlbmQgb24gYSBudW1iZXIgb2Ygb2NjdXJlbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgc25kIGFsZyApKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWxnID1cbiAgICAgICAgICBtYXRjaCByZXNjYWxlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWxnXG4gICAgICAgICAgfCBTb21lIHIgLT4gQWxnX2V4cHIubXVsdCBhbGcgKEFsZ19leHByLmZsb2F0IHIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGluaXRfdCB3aXRoXG4gICAgICAgIHwgSU5JVF9NSVggKHJhd19taXgsIG1peF9wb3MpIC0+XG4gICAgICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgICAgICAgIGxldCBjb3VudGVyc19pbmZvID0gTW9kZWwuY291bnRlcnNfaW5mbyBlbnYgaW5cbiAgICAgICAgICBsZXQgcHJlZW52JywgYWxnJyA9XG4gICAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudiBhbGdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmYWtlX3J1bGUgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBMS2FwcGEucl9taXggPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfY3JlYXRlZCA9IHJhd19taXg7XG4gICAgICAgICAgICAgIExLYXBwYS5yX2RlbHRhX3Rva2VucyA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9yYXRlID0gQWxnX2V4cHIuY29uc3QgTmJyLnplcm87XG4gICAgICAgICAgICAgIExLYXBwYS5yX3VuX3JhdGUgPSBOb25lO1xuICAgICAgICAgICAgICBMS2FwcGEucl9lZGl0X3N0eWxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVlbnYnJywgc3RhdGUnID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgICAgcHJlZW52JyB+c3ludGF4X3JlZjowIChmYWtlX3J1bGUsIG1peF9wb3MpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGRvbWFpbicnLCBfLCBbIGNvbXBpbGVkX3J1bGUgXSAtPlxuICAgICAgICAgICAgICAoZnN0IGFsZycsIGNvbXBpbGVkX3J1bGUpLCBkb21haW4nJ1xuICAgICAgICAgICAgfCBfLCBfLCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZiBcImluaXRpYWwgbWl4dHVyZSAlYSBpcyBwYXJ0aWFsbHkgZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6ZmFsc2UgfnNpZ3MgfmNvdW50ZXJzX2luZm8pXG4gICAgICAgICAgICAgICAgICAgICAgIHJhd19taXgsXG4gICAgICAgICAgICAgICAgICAgICBtaXhfcG9zICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmVlbnYnJywgc3RhdGUnXG4gICAgICAgIHwgSU5JVF9UT0sgdGtfbCAtPlxuICAgICAgICAgIGxldCByX2RlbHRhX3Rva2VucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoZnVuICh0a19pZCwgX3Bvc190aykgLT4gYWxnLCB0a19pZCkgdGtfbFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZha2VfcnVsZSA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIExLYXBwYS5yX21peCA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9jcmVhdGVkID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX2RlbHRhX3Rva2VucztcbiAgICAgICAgICAgICAgTEthcHBhLnJfcmF0ZSA9IEFsZ19leHByLmNvbnN0IE5ici56ZXJvO1xuICAgICAgICAgICAgICBMS2FwcGEucl91bl9yYXRlID0gTm9uZTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZWRpdF9zdHlsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICAgICAgICAgICAgIHByZWVudiB+c3ludGF4X3JlZjowXG4gICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgZmFrZV9ydWxlKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBkb21haW4nJywgXywgWyBjb21waWxlZF9ydWxlIF0gLT5cbiAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCBOYnIub25lLCBjb21waWxlZF9ydWxlKSwgZG9tYWluJydcbiAgICAgICAgICB8IF8sIF8sIF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIGluaXRzXG4gICAgICAoUGF0dGVybi5QcmVFbnYuZW1wdHkgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSAoTW9kZWwuY291bnRlcnNfaW5mbyBlbnYpKVxuICBpblxuICBpbml0X2xcblxubGV0IGNvbXBpbGVfYWxnX3ZhcnMgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gdmFycyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdF9tYXBpXG4gICAgKGZ1biBpIGRvbWFpbiAobGJsX3BvcywgYXN0KSAtPlxuICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gfm9yaWdpbjooT3BlcmF0b3IuQUxHIGkpXG4gICAgICAgICAgY29udGFjdF9tYXAgZG9tYWluIGFzdFxuICAgICAgaW5cbiAgICAgIGRvbWFpbicsIChsYmxfcG9zLCBhbGcpKVxuICAgIGRvbWFpbiAoQXJyYXkub2ZfbGlzdCB2YXJzKVxuXG5sZXQgY29tcGlsZV9ydWxlcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgZG9tYWluIHJ1bGVzID1cbiAgbWF0Y2hcbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZG9tYWluLCBzeW50YXhfcmVmLCBkZXBzX21hY2hpbmVyeSwgYWNjKSAoXywgcnVsZSkgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIG9yaWdpbicsIGNyID1cbiAgICAgICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgP2RlcHNfbWFjaGluZXJ5IH5jb21waWxlX21vZGVfb25cbiAgICAgICAgICAgIGNvbnRhY3RfbWFwIGRvbWFpbiB+c3ludGF4X3JlZiBydWxlXG4gICAgICAgIGluXG4gICAgICAgIGRvbWFpbicsIHN1Y2Mgc3ludGF4X3JlZiwgb3JpZ2luJywgTGlzdC5hcHBlbmQgY3IgYWNjKVxuICAgICAgKGRvbWFpbiwgMSwgU29tZSAoT3BlcmF0b3IuUlVMRSAwLCBhbGdfZGVwcyksIFtdKVxuICAgICAgcnVsZXNcbiAgd2l0aFxuICB8IGZkb21haW4sIF8sIFNvbWUgKF8sIGZhbGdfZGVwcyksIGZydWxlcyAtPlxuICAgIGZkb21haW4sIGZhbGdfZGVwcywgTGlzdC5yZXYgZnJ1bGVzXG4gIHwgXywgXywgTm9uZSwgXyAtPiBmYWlsd2l0aCBcIlRoZSBvcmlnaW4gb2YgRXZhbC5jb21waWxlX3J1bGVzIGhhcyBiZWVuIGxvc3RcIlxuXG4oKmxldCB0cmFuc2xhdGVfY29udGFjdF9tYXAgc2lncyBrYXNhX2NvbnRhY3RfbWFwID1cbiAgICBsZXQgd2RsID0gTG9jLmFubm90X3dpdGhfZHVtbXkgaW5cbiAgICBsZXQgc29sID0gQXJyYXkuaW5pdFxuICAgICAgICAoU2lnbmF0dXJlLnNpemUgc2lncylcbiAgICAgICAgKGZ1biBpIC0+IEFycmF5Lm1ha2UgKFNpZ25hdHVyZS5hcml0eSBzaWdzIGkpIChbXSxbXSkpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgKGZ1biBhZ2VudF9uYW1lIHNpdGVzIC0+XG4gICAgICAgICAgIGxldCBpZF9hID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCAod2RsIGFnZW50X25hbWUpIHNpZ3MgaW5cbiAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAgICAgIChmdW4gc2l0ZV9uYW1lIChzdGF0ZXMsbGlua3MpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGlkX3MgPVxuICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9zaXRlXG4gICAgICAgICAgICAgICAgICAgIH5hZ2VudF9uYW1lICh3ZGwgc2l0ZV9uYW1lKSAoU2lnbmF0dXJlLmdldCBzaWdzIGlkX2EpIGluXG4gICAgICAgICAgICAgICAgc29sLihpZF9hKS4oaWRfcykgPC1cbiAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBzdGF0ZSAtPiBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWRfcyAod2RsIHN0YXRlKSAoU2lnbmF0dXJlLmdldCBzaWdzIGlkX2EpKVxuICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLFxuICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIChhZ2VudF9uYW1lLGIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWRfYSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgKHdkbCBhZ2VudF9uYW1lKSBzaWdzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWRfYiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5hZ2VudF9uYW1lICh3ZGwgYikgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKGlkX2EsaWRfYikpXG4gICAgICAgICAgICAgICAgICAgICBsaW5rcykpIHNpdGVzKSBrYXNhX2NvbnRhY3RfbWFwIGluXG4gICAgc29sXG5cbiAgbGV0IGluaXRfa2FzYSBjYWxsZWRfZnJvbSBzaWdzIHJlc3VsdCA9XG4gICAgbGV0IHByZV9rYXNhX3N0YXRlID0gRXhwb3J0X3RvX0thU2ltLmluaXQgfmNvbXBpbDpyZXN1bHQgfmNhbGxlZF9mcm9tICgpIGluXG4gICAgbGV0IGthc2Ffc3RhdGUsY29udGFjdF9tYXAgPSBFeHBvcnRfdG9fS2FTaW0uZ2V0X2NvbnRhY3RfbWFwIHByZV9rYXNhX3N0YXRlIGluXG4gICAgbGV0ICgpID0gRXhwb3J0X3RvX0thU2ltLmR1bXBfZXJyb3JzX2xpZ2h0IGthc2Ffc3RhdGUgaW5cbiAgICB0cmFuc2xhdGVfY29udGFjdF9tYXAgc2lncyBjb250YWN0X21hcCxcbiAgICBFeHBvcnRfdG9fS2FTaW0uZmx1c2hfZXJyb3JzIGthc2Ffc3RhdGVcbiopXG5sZXQgY29tcGlsZSB+b3V0cHV0cyB+cGF1c2UgfnJldHVybiB+c2hhcmluZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgP292ZXJ3cml0ZV9pbml0ID9vdmVyd3JpdGVfdDAgP3Jlc2NhbGVfaW5pdCBzaWdzX25kIGNvdW50ZXJzX2luZm8gdGtfbmRcbiAgICBjb250YWN0X21hcCByZXN1bHQgPVxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IG91dHB1dHMgKERhdGEuV2FybmluZyAoU29tZSBwb3MsIG1zZykpIGluXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiKyBCdWlsZGluZyBpbml0aWFsIHNpbXVsYXRpb24gY29uZGl0aW9ucy4uLlwiKTtcbiAgbGV0IHByZWVudiA9IFBhdHRlcm4uUHJlRW52LmVtcHR5IHNpZ3NfbmQgY291bnRlcnNfaW5mbyBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtdmFyaWFibGUgZGVjbGFyYXRpb25zXCIpO1xuICBsZXQgcHJlZW52JywgYWxnX2EgPVxuICAgIGNvbXBpbGVfYWxnX3ZhcnMgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnZcbiAgICAgIHJlc3VsdC5Bc3QudmFyaWFibGVzXG4gIGluXG4gIGxldCBhbGdfbmQgPSBOYW1lZERlY2xzLmNyZWF0ZSBhbGdfYSBpblxuICBsZXQgYWxnX2RlcHMgPSBBbGdfZXhwci5zZXR1cF9hbGdfdmFyc19yZXZfZGVwIHRrX25kIGFsZ19hIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1ydWxlc1wiKTtcbiAgbGV0IHByZWVudicsIGFsZ19kZXBzJywgY29tcGlsZWRfcnVsZXMgPVxuICAgIGNvbXBpbGVfcnVsZXMgfmRlYnVnX21vZGUgfndhcm5pbmcgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgICAgcHJlZW52JyByZXN1bHQuQXN0LnJ1bGVzXG4gIGluXG4gIGxldCBydWxlX25kID0gQXJyYXkub2ZfbGlzdCBjb21waWxlZF9ydWxlcyBpblxuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLWludGVydmVudGlvbnNcIik7XG4gIGxldCBwcmVlbnYsIGFsZ19kZXBzJycsIHBlcnQsIGhhc190cmFja2luZyA9XG4gICAgcGVydF9vZl9yZXN1bHQgfmRlYnVnX21vZGUgfndhcm5pbmcgP292ZXJ3cml0ZV90MCByZXN1bHQudmFyaWFibGVzXG4gICAgICByZXN1bHQucnVsZXMgYWxnX2RlcHMnIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52JyByZXN1bHRcbiAgaW5cblxuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLW9ic2VydmFibGVzXCIpO1xuICBsZXQgcHJlZW52LCBvYnMgPVxuICAgIG9ic19vZl9yZXN1bHQgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnYgYWxnX2RlcHNcbiAgICAgIHJlc3VsdFxuICBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtdXBkYXRlX2RvbWFpbiBjb25zdHJ1Y3Rpb25cIik7XG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBsZXQgZG9tYWluLCBkb21fc3RhdHMgPVxuICAgIFBhdHRlcm4uZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgcHJlZW52IGNvbnRhY3RfbWFwXG4gIGluXG4gIG91dHB1dHNcbiAgICAoRGF0YS5Mb2dcbiAgICAgICAoXCJcXHQgXCJcbiAgICAgICBeIHN0cmluZ19vZl9pbnQgZG9tX3N0YXRzLlBhdHRlcm4uUHJlRW52LnN0YXRfbm9kZXNcbiAgICAgICBeIFwiIChzdWIpb2JzZXJ2YWJsZXMgXCJcbiAgICAgICBeIHN0cmluZ19vZl9pbnQgZG9tX3N0YXRzLlBhdHRlcm4uUHJlRW52LnN0YXRfbmF2X3N0ZXBzXG4gICAgICAgXiBcIiBuYXZpZ2F0aW9uIHN0ZXBzXCIpKTtcblxuICBsZXQgZW52ID1cbiAgICBNb2RlbC5pbml0IH5maWxlbmFtZXM6cmVzdWx0LmZpbGVuYW1lcyBkb21haW4gdGtfbmQgYWxnX25kIGFsZ19kZXBzJydcbiAgICAgIChBcnJheS5vZl9saXN0IHJlc3VsdC5ydWxlcywgcnVsZV9uZClcbiAgICAgIChBcnJheS5vZl9saXN0IG9icykgKEFycmF5Lm9mX2xpc3QgcGVydCkgY29udGFjdF9tYXAgY291bnRlcnNfaW5mb1xuICBpblxuXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1pbml0aWFsIGNvbmRpdGlvbnNcIik7XG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBsZXQgaW5pdF9sID1cbiAgICBjb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlIH53YXJuaW5nID9yZXNjYWxlOnJlc2NhbGVfaW5pdCB+Y29tcGlsZV9tb2RlX29uXG4gICAgICBjb250YWN0X21hcCBlbnZcbiAgICAgIChPcHRpb25fdXRpbC51bnNvbWUgcmVzdWx0LkFzdC5pbml0IG92ZXJ3cml0ZV9pbml0KVxuICBpblxuICByZXR1cm4gKGVudiwgaGFzX3RyYWNraW5nLCBpbml0X2wpXG5cbmxldCBidWlsZF9pbml0aWFsX3N0YXRlIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgY291bnRlciBlbnZcbiAgICB+d2l0aF90cmFjZSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzIHJhbmRvbV9zdGF0ZSBpbml0X2wgPVxuICBsZXQgZ3JhcGgwID1cbiAgICBSdWxlX2ludGVycHJldGVyLmVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlIHJhbmRvbV9zdGF0ZSBlbnYgY291bnRlclxuICBpblxuICBsZXQgc3RhdGUwID0gU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllcyBjb3VudGVyIGVudiBpblxuICBTdGF0ZV9pbnRlcnByZXRlci5pbml0aWFsaXplIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXJcbiAgICBncmFwaDAgc3RhdGUwIGluaXRfbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRvX2ludGVyYWN0aXZlX2RpcmVjdGl2ZXMgfmRlYnVnX21vZGUgfm91dHB1dHMgfnNoYXJpbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgY29udGFjdF9tYXAgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZSA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgbGV0IGNjX3ByZWVudiA9IFBhdHRlcm4uUHJlRW52Lm9mX2VudiAoTW9kZWwuZG9tYWluIGVudikgaW5cbiAgbGV0IGNvbnRhY3RfbWFwJyA9IEFycmF5Lm1hcCBBcnJheS5jb3B5IGNvbnRhY3RfbWFwIGluXG4gIGxldCBlJywgXyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAoTEthcHBhX2NvbXBpbGVyLm1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSAoTW9kZWwuY291bnRlcnNfaW5mbyBlbnYpXG4gICAgICAgICAoTW9kZWwudG9rZW5zX2ZpbmRlciBlbnYpIChNb2RlbC5hbGdzX2ZpbmRlciBlbnYpIGNvbnRhY3RfbWFwJylcbiAgICAgIGUgW11cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZlxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIG4gLT5cbiAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcyBiIHggLT4gYiB8fCB4ICE9IGNvbnRhY3RfbWFwLihuKS4ocykpKVxuICAgICAgICBmYWxzZSBjb250YWN0X21hcCdcbiAgICB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJDcmVhdGluZyBuZXcgbGluayB0eXBlIGlzIGZvcmJpZGRlblwiKSlcbiAgaW5cbiAgbGV0IGNjX3ByZWVudicsIGUnJyA9XG4gICAgRXZhbC5jb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2sgfmRlYnVnX21vZGUgfndhcm5pbmdcbiAgICAgIH5jb21waWxlX21vZGVfb246ZmFsc2UgY29udGFjdF9tYXAgY2NfcHJlZW52IGUnXG4gIGluXG4gIGxldCBlbnYnLCBncmFwaCcgPVxuICAgIGlmIGNjX3ByZWVudiA9PSBjY19wcmVlbnYnIHRoZW5cbiAgICAgIGVudiwgZ3JhcGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBmZW52LCBfID1cbiAgICAgICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBjY19wcmVlbnYnIGNvbnRhY3RfbWFwXG4gICAgICBpblxuICAgICAgKCBNb2RlbC5uZXdfZG9tYWluIGZlbnYgZW52LFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gfmRlYnVnX21vZGUgZmVudilcbiAgICAgICAgICBncmFwaFxuICAgICAgICAgIChQcmltaXRpdmVzLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9ucyBlJycpIClcbiAgICApXG4gIGluXG4gIGxldCBvc3RvcCwgb2dyYXBoLCBvc3RhdGUsIF8gPVxuICAgIFN0YXRlX2ludGVycHJldGVyLmRvX21vZGlmaWNhdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52JyBjb3VudGVyIGdyYXBoJ1xuICAgICAgc3RhdGUgZScnXG4gIGluXG4gIGUnJywgKGVudicsIChvc3RvcCwgb2dyYXBoLCBvc3RhdGUpKVxuXG5sZXQgZ2V0X3BhdXNlX2NyaXRlcmlhIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5zaGFyaW5nIH5zeW50YXhfdmVyc2lvbiBjb250YWN0X21hcFxuICAgIGVudiBncmFwaCBiID1cbiAgbGV0IHdhcm5pbmcgfnBvcyBtc2cgPSBvdXRwdXRzIChEYXRhLldhcm5pbmcgKFNvbWUgcG9zLCBtc2cpKSBpblxuICBsZXQgY2NfcHJlZW52ID0gUGF0dGVybi5QcmVFbnYub2ZfZW52IChNb2RlbC5kb21haW4gZW52KSBpblxuICBsZXQgYicgPVxuICAgIExLYXBwYV9jb21waWxlci5ib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSAoTW9kZWwuY291bnRlcnNfaW5mbyBlbnYpIChNb2RlbC50b2tlbnNfZmluZGVyIGVudilcbiAgICAgIChNb2RlbC5hbGdzX2ZpbmRlciBlbnYpIGJcbiAgaW5cbiAgbGV0IGNjX3ByZWVudicsICgoYicnLCBwb3NfYicnKSBhcyBicG9zJycpID1cbiAgICBFdmFsLmNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIGNvbnRhY3RfbWFwIGNjX3ByZWVudlxuICAgICAgYidcbiAgaW5cbiAgbGV0IGVudicsIGdyYXBoJyA9XG4gICAgaWYgY2NfcHJlZW52ID09IGNjX3ByZWVudicgdGhlblxuICAgICAgZW52LCBncmFwaFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGZlbnYsIF8gPVxuICAgICAgICBQYXR0ZXJuLmZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIGNjX3ByZWVudicgY29udGFjdF9tYXBcbiAgICAgIGluXG4gICAgICAoIE1vZGVsLm5ld19kb21haW4gZmVudiBlbnYsXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiB+ZGVidWdfbW9kZSBmZW52KVxuICAgICAgICAgIGdyYXBoXG4gICAgICAgICAgKFByaW1pdGl2ZXMuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIGJwb3MnJykgKVxuICAgIClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgKE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52KSBiJycgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiW1RdIGNhbiBvbmx5IGJlIHVzZWQgaW4gaW5lcXVhbGl0aWVzXCIsIHBvc19iJycpKVxuICBpblxuICBlbnYnLCBncmFwaCcsIGInJ1xuXG5sZXQgZmluZF9hbGxfZW1iZWRkaW5ncyB+ZGVidWdfbW9kZSBlbnYgdHIgPVxuICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICBsZXQgZHVtbXlfaW5zdGFuY2VzID0gSW5zdGFuY2VzLmVtcHR5IGVudiBpblxuICBsZXQgZ3JhcGggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoUnVsZV9pbnRlcnByZXRlci5hcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZTpOb25lIGR1bW15X2luc3RhbmNlcylcbiAgICAgIChFZGdlcy5lbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50czpmYWxzZSlcbiAgICAgIHRyXG4gIGluXG4gIGxldCBvdXQsIF8gPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIub2JzX2Zyb21fdHJhbnNmb3JtYXRpb25zIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCB0clxuICBpblxuICBMaXN0Lm1hcFxuICAgIChmdW4gKHAsIChyb290LCBfKSkgLT5cbiAgICAgIHAsIE1hdGNoaW5nLnJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBwIHJvb3QpXG4gICAgb3V0XG4iLCIoKiBTaW1pbGFyIHRvIE9DYW1sJ3Mgc3RhbmRhcmQgQXJnIG1vZHVsZSBidXQgd2l0aCBzb21lIGltcHJvdmVtZW50czpcbiAgIC0gb3B0aW9ucyBhcmUgY2xhc3NpZmllZCB3aXRoIHJlc3BlY3QgdG8gY2F0ZWdvcmllc1xuICAgLSBuZW9waHl0ZSAvIGV4cGVydCBtb2Rlc1xuICAgLSBoaWRkZW4gb3B0aW9uc1xuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWMgdHlwZSBpcyByZWFsbHkgZGlmZmVyZW50LlxuXG4gICBDb3B5cmlnaHQgKEMpIEFudG9pbmUgTWluZScgMjAwNlxuKilcblxubGV0IGV4cGVydF9tb2RlID0gcmVmIGZhbHNlICgqIHNob3dzIGV4cGVydCBvcHRpb25zICopXG5sZXQgZGV2X21vZGUgPSByZWYgZmFsc2UgKCogYWNjZXB0IF9BTExfIG9wdGlvbnMgKilcblxuKCogVHlwZXMgKilcbigqICoqKioqICopXG5cbnR5cGUga2V5ID0gc3RyaW5nICgqIGNvbW1hbmQtbGluZSBhcmd1bWVudCAqKVxudHlwZSBtc2cgPSBzdHJpbmcgKCogaGVscCBtZXNzYWdlICopXG5cbigqIHR5cGUgb2Ygb3B0aW9uICopXG50eXBlIGxldmVsID1cbiAgfCBOb3JtYWwgKCogYWx3YXlzIHNob3duICYgYWNjZXB0ZWQgKilcbiAgfCBFeHBlcnQgKCogc2hvd24gaW4gZXhwZXJ0IG9yIGRldmVsb3BwZXIgbW9kZSwgYWx3YXlzIGFjY2VwdGVkICopXG4gIHwgRGV2ZWxvcHBlciAoKiBvbmx5IHNob3duICYgYWNjZXB0ZWQgaW4gZGV2ZWxvcHBlciBtb2RlICopXG4gIHwgSGlkZGVuICgqIG5ldmVyIHNob3duICopXG5cbm1vZHVsZSBTdHJpbmdJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogaW50ICogbGV2ZWwgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKGEsIGIsIF8pIChjLCBkLCBfKSA9XG4gICAgbGV0IGNtcCA9IGNvbXBhcmUgYiBkIGluXG4gICAgaWYgY21wID0gMCB0aGVuXG4gICAgICBjb21wYXJlIGEgY1xuICAgIGVsc2VcbiAgICAgIGNtcFxuXG4gIGxldCBwcmludCBmbXQgKGEsIGIsIF8pID0gRm9ybWF0LmZwcmludGYgZm10IFwiJXM6JWlcIiBhIGJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nSW50U2V0TWFwID0gU2V0TWFwLk1ha2UgKFN0cmluZ0ludClcbm1vZHVsZSBTdHJpbmdJbnRNYXAgPSBTdHJpbmdJbnRTZXRNYXAuTWFwXG5tb2R1bGUgU3RyaW5nSW50U2V0ID0gU3RyaW5nSW50U2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ1NldE1hcCA9IE1vZHMuU3RyaW5nU2V0TWFwXG5tb2R1bGUgU3RyaW5nU2V0ID0gU3RyaW5nU2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ01hcCA9IFN0cmluZ1NldE1hcC5NYXBcblxubGV0IG1pbl9sZXZlbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb3JtYWwsIF8gfCBfLCBOb3JtYWwgLT4gTm9ybWFsXG4gIHwgRXhwZXJ0LCBfIHwgXywgRXhwZXJ0IC0+IEV4cGVydFxuICB8IERldmVsb3BwZXIsIF8gfCBfLCBEZXZlbG9wcGVyIC0+IERldmVsb3BwZXJcbiAgfCBIaWRkZW4sIEhpZGRlbiAtPiBIaWRkZW5cblxubGV0IG1heF9sZXZlbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBIaWRkZW4sIF8gfCBfLCBIaWRkZW4gLT4gSGlkZGVuXG4gIHwgRGV2ZWxvcHBlciwgXyB8IF8sIERldmVsb3BwZXIgLT4gRGV2ZWxvcHBlclxuICB8IEV4cGVydCwgXyB8IF8sIEV4cGVydCAtPiBFeHBlcnRcbiAgfCBOb3JtYWwsIE5vcm1hbCAtPiBOb3JtYWxcblxubGV0IG1heF9sZXZlbF9vcHQgYSBiID1cbiAgbWF0Y2ggYiB3aXRoXG4gIHwgTm9uZSAtPiBhXG4gIHwgU29tZSBiIC0+IG1heF9sZXZlbCBhIGJcblxudHlwZSBwb3NpdGlvbiA9IGludFxudHlwZSBjYXRlZ29yeSA9IHN0cmluZyAqIHBvc2l0aW9uICogbGV2ZWwgb3B0aW9uXG5cbnR5cGUgc3BlYyA9XG4gIHwgVm9pZCAoKiBUbyBza2lwIGEgbGluZSAqKVxuICB8IEJvb2wgb2YgYm9vbCByZWYgKCogU2V0cyBhIGJvb2xlYW4gdmFsdWUgKilcbiAgfCBJbnQgb2YgaW50IHJlZiAoKiBTZXRzIGFuIGludGVnZXIgdmFsdWUgKilcbiAgfCBJbnRfb3B0IG9mIGludCBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgaW50ZWdlciB2YWx1ZSAqKVxuICB8IFN0cmluZyBvZiBzdHJpbmcgcmVmICgqIFNldHMgYSBzdHJpbmcgdmFsdWUgKilcbiAgfCBTdHJpbmdfb3B0IG9mIHN0cmluZyBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgc3RyaW5nIHZhbHVlICopXG4gIHwgU3RyaW5nX2xpc3Qgb2Ygc3RyaW5nIGxpc3QgcmVmICgqIFNldHMgYSBsaXN0IG9mIHN0cmluZ3MgKilcbiAgfCBTdHJpbmdOYnJfbGlzdCBvZlxuICAgICAgKHN0cmluZyAqIHN0cmluZykgbGlzdCByZWYgKCogU2V0cyBhIGxpc3Qgb2YgcGFpcnMgb2Ygc3RyaW5ncyAqKVxuICB8IEZsb2F0IG9mIGZsb2F0IHJlZiAoKiBTZXRzIGEgZmxvYXQgdmFsdWUgKilcbiAgfCBGbG9hdF9vcHQgb2YgZmxvYXQgb3B0aW9uIHJlZiAoKiBTZXRzIGFuIG9wdGlvbmFsICBmbG9hdCB2YWx1ZSAqKVxuICAoKiBvbmUgb3Igc2V2ZXJhbCBvcHRpb25zIGFtb25nIGEgbGlzdCAqKVxuICB8IENob2ljZSBvZiAoa2V5ICogbXNnKSBsaXN0ICoga2V5IGxpc3QgKiBrZXkgcmVmXG4gIHwgQ2hvaWNlX2xpc3Qgb2YgKGtleSAqIG1zZykgbGlzdCAqIGtleSBsaXN0IHJlZlxuICAoKiBtZXRhLW9wdGlvbnMgdG8gc2V0IHNldmVyYWwgb3B0aW9ucyBhdCBvbmNlOlxuICAgICAtIDFzdCBvcHRpb24gbGlzdCBpcyBhcHBlbmRlZCBhcy1pcyB3aGVuIHRoZSBvcHRpb24gaXMgdXNlZFxuICAgICAtIHdoZW4gMi1zdCBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlIG1ldGEgb3B0aW9uIHRha2VzIGFuIGFyZ3VtZW50IHRoYXRcbiAgICAgaXMgcGFzc2VkIHRvIGVhY2ggb3B0aW9uIGluIHRoZSBsaXN0XG4gICAgIC0gdGhlIGtleXMgaW4gYm90aCBsaXN0cyBtdXN0IGFwcGVhciBhcyByZWd1bGFyIG9wdGlvbnMgYXMgd2VsbCFcbiAgKilcbiAgfCBNdWx0aSBvZiBrZXkgbGlzdCAqIGtleSBsaXN0XG4gICAgKCogbWV0YS1vcHRpb25zLCB0YWtlIGEgbGlzdCBvZiAoayxleHQpOmtleSpzdHJpbmcgYW5kIGdpdmUgdG8gdGhlIG9wdGlvbiBrIHRoZSBwYXJhbWV0ZXIgc15leHQgKilcbiAgfCBNdWx0aUV4dCBvZiAoa2V5ICogc3RyaW5nKSBsaXN0XG5cbnR5cGUgdCA9IChrZXkgKiBzcGVjICogbXNnICogKGNhdGVnb3J5ICogcG9zaXRpb24pIGxpc3QgKiBsZXZlbCkgbGlzdFxuXG4oKiBVdGlsaXRpZXMgKilcbigqICoqKioqKioqKiAqKVxuXG5sZXQgc2hvd19sZXZlbCAobHZsIDogbGV2ZWwpIDogYm9vbCA9XG4gIG1hdGNoIGx2bCB3aXRoXG4gIHwgTm9ybWFsIC0+IHRydWVcbiAgfCBFeHBlcnQgLT4gIWV4cGVydF9tb2RlXG4gIHwgRGV2ZWxvcHBlciAtPiAhZGV2X21vZGUgJiYgIWV4cGVydF9tb2RlXG4gIHwgSGlkZGVuIC0+IGZhbHNlXG5cbmxldCBzaG93X2xldmVsX29wdCAobHZsX29wdCA6IGxldmVsIG9wdGlvbikgOiBib29sID1cbiAgbWF0Y2ggbHZsX29wdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBsdmwgLT4gc2hvd19sZXZlbCBsdmxcblxubGV0IGFjY2VwdF9sZXZlbF9kaXNwbGF5IChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgfCBFeHBlcnQgLT4gdHJ1ZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlXG4gIHwgSGlkZGVuIC0+IGZhbHNlXG5cbmxldCBhY2NlcHRfbGV2ZWxfdXNlIChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgfCBFeHBlcnQgfCBIaWRkZW4gLT4gdHJ1ZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlXG5cbmxldCBpc2tleSAoayA6IGtleSkgPSBTdHJpbmcubGVuZ3RoIGsgPiAyICYmIGsuWzBdID0gJy0nICYmIGsuWzFdID0gJy0nXG5cbigqIC0tWFhYID0+IC0tbm8tWFhYICopXG5sZXQgbm9rZXkgKGsgOiBrZXkpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBrID4gMiAmJiBrLlswXSA9ICctJyAmJiBrLlsxXSA9ICctJyB0aGVuXG4gICAgXCItLW5vLVwiIF4gU3RyaW5nLnN1YiBrIDIgKFN0cmluZy5sZW5ndGggayAtIDIpXG4gIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBrID4gMSAmJiBrLlswXSA9ICctJyB0aGVuXG4gICAgXCItbm8tXCIgXiBTdHJpbmcuc3ViIGsgMSAoU3RyaW5nLmxlbmd0aCBrIC0gMSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChrIF4gXCIgb3B0aW9uIChubykgZG9lcyBub3QgYmVnaW4gd2l0aCAtLSBub3IgLVwiKVxuXG4oKiAtLVhYWCA9PiAtLShuby0pWFhYICopXG5sZXQgYWx0a2V5IChrIDoga2V5KSA9XG4gIGlmIFN0cmluZy5sZW5ndGggayA+IDIgJiYgay5bMF0gPSAnLScgJiYgay5bMV0gPSAnLScgdGhlblxuICAgIFwiLS0obm8tKVwiIF4gU3RyaW5nLnN1YiBrIDIgKFN0cmluZy5sZW5ndGggayAtIDIpXG4gIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBrID4gMSAmJiBrLlswXSA9ICctJyB0aGVuXG4gICAgXCItKG5vLSlcIiBeIFN0cmluZy5zdWIgayAxIChTdHJpbmcubGVuZ3RoIGsgLSAxKVxuICBlbHNlXG4gICAgZmFpbHdpdGggKGsgXiBcIiBvcHRpb24gKGFsdCkgZG9lcyBub3QgYmVnaW4gd2l0aCAtLSBub3QgLSBcIilcblxuKCogY3V0cyBhIHN0cmluZyBpbnRvIHNwYWNlLXNlcGFyYXRlZCBzdWItc3RyaW5ncyAqKVxubGV0IGN1dF9saXN0IChzIDogc3RyaW5nKSA6IHN0cmluZyBsaXN0ID1cbiAgbGV0IHJlYyBkb2l0IGFjY3VtIHBvcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgaSA9IFN0cmluZy5pbmRleF9mcm9tIHMgcG9zICcgJyBpblxuICAgICAgaWYgaSA9IHBvcyB0aGVuXG4gICAgICAgIGRvaXQgYWNjdW0gKGkgKyAxKVxuICAgICAgZWxzZVxuICAgICAgICBkb2l0IChTdHJpbmcuc3ViIHMgcG9zIChpIC0gcG9zKSA6OiBhY2N1bSkgKGkgKyAxKVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBpZiBwb3MgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBTdHJpbmcuc3ViIHMgcG9zIChTdHJpbmcubGVuZ3RoIHMgLSBwb3MpIDo6IGFjY3VtXG4gICAgICBlbHNlXG4gICAgICAgIGFjY3VtXG4gIGluXG4gIExpc3QucmV2IChkb2l0IFtdIDApXG5cbigqIG9yZGVyIGJ5IGNhdGVnb3J5ICopXG5sZXQgcCAoXywgXywgXywgbCwgXykgKF8sIF8sIF8sIGwnLCBfKSA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgfCBbIChfLCBpKSBdLCBbIChfLCBpJykgXSAtPiBjb21wYXJlIGkgaSdcbiAgfCAoW10gfCBfIDo6IF8gOjogXyksIF8gfCBfLCAoW10gfCBfIDo6IF8gOjogXykgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvcmRlciAoYSA6IHQpID1cbiAgbGV0IG9yZGVyZWQgPSByZWYgU3RyaW5nSW50TWFwLmVtcHR5IGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGEsIGIsIGMsIGNhdCwgbHZsKSAtPlxuICAgICAgaWYgYWNjZXB0X2xldmVsX3VzZSBsdmwgdGhlblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChjYXQsIGkpIC0+XG4gICAgICAgICAgICBsZXQgYXNzbywgb2xkX2x2bCA9XG4gICAgICAgICAgICAgIFN0cmluZ0ludE1hcC5maW5kX2RlZmF1bHQgKFtdLCBIaWRkZW4pIGNhdCAhb3JkZXJlZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG9yZGVyZWQgOj1cbiAgICAgICAgICAgICAgU3RyaW5nSW50TWFwLmFkZCBjYXRcbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIFsgY2F0LCBpIF0sIGx2bCkgOjogYXNzbywgbWluX2xldmVsIGx2bCBvbGRfbHZsKVxuICAgICAgICAgICAgICAgICFvcmRlcmVkKVxuICAgICAgICAgIGNhdClcbiAgICBhO1xuICBvcmRlcmVkIDo9IFN0cmluZ0ludE1hcC5tYXAgKGZ1biAoYSwgYikgLT4gTGlzdC5zb3J0IHAgYSwgYikgIW9yZGVyZWQ7XG4gICFvcmRlcmVkXG5cbigqIHNhbml0eSBjaGVja2luZyAqKVxubGV0IGNoZWNrIChhIDogdCkgPVxuICAoKiBjaGVjayBkdXBsaWNhdGVzICYgY29tcHV0ZSBvcHRpb24gbGlzdCAqKVxuICBsZXQgb3B0cyA9IHJlZiBTdHJpbmdTZXQuZW1wdHkgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoa2V5LCBiLCBfLCBfLCBfKSAtPlxuICAgICAgaWYgYiA9IFZvaWQgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSBpZiBTdHJpbmdTZXQubWVtIGtleSAhb3B0cyB8fCBTdHJpbmdTZXQubWVtIChub2tleSBrZXkpICFvcHRzIHRoZW5cbiAgICAgICAgZmFpbHdpdGggKFwiRHVwbGljYXRlIG9wdGlvbiBcIiBeIGtleSk7XG4gICAgICBvcHRzIDo9IFN0cmluZ1NldC5hZGQga2V5ICFvcHRzO1xuICAgICAgb3B0cyA6PSBTdHJpbmdTZXQuYWRkIChub2tleSBrZXkpICFvcHRzKVxuICAgIGE7XG4gICgqIGNoZWNrIHN1Yi1vcHRpb25zIGluIE11bGktb3B0aW9ucyAqKVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChrZXksIHQsIF8sIF8sIF8pIC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTXVsdGkgKGEsIGIpIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biBzIC0+XG4gICAgICAgICAgICAgIGlmIGlza2V5IHMgJiYgbm90IChTdHJpbmdTZXQubWVtIHMgIW9wdHMpIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCAoXCJVbmtub3duIG9wdGlvbiBcIiBeIHMgXiBcIiBpbiBtdWx0aS1vcHRpb24gXCIgXiBrZXkpKVxuICAgICAgICBpblxuICAgICAgICBmIGE7XG4gICAgICAgIGYgYlxuICAgICAgfCBWb2lkIHwgSW50IF8gfCBGbG9hdCBfIHwgQ2hvaWNlIF8gfCBCb29sIF8gfCBJbnRfb3B0IF8gfCBTdHJpbmcgX1xuICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfIHwgU3RyaW5nX29wdCBfIHwgU3RyaW5nX2xpc3QgXyB8IEZsb2F0X29wdCBfXG4gICAgICB8IENob2ljZV9saXN0IChfLCBfKVxuICAgICAgfCBNdWx0aUV4dCBfIC0+XG4gICAgICAgICgpKVxuICAgIGFcblxuKCogQ29tbWFuZC1saW5lIGludGVyZmFjZSAqKVxuKCogKioqKioqKioqKioqKioqKioqKioqKiAqKVxuXG4oKiBwcmludHMgYSBzdHJpbmcgd2l0aCBicmVha3MgaW5zdGVhZCBvZiBzcGFjZSAqKVxubGV0IHByaW50X21zZyBmIChzIDogc3RyaW5nKSA9XG4gIFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChjdXRfbGlzdCBzKVxuXG4oKiBkb2N1bWVudCB0aGUgb3B0aW9ucyBvbiB0aGUgc3RhbmRhcmQgb3V0cHV0ISAqKVxubGV0IHByaW50X29wdGlvbiB2ZXJib3NlIGYgKGtleSwgc3BlYywgbXNnLCBfY2F0LCBfbHZsKSA9XG4gIGxldCBrZXkyID0gYWx0a2V5IGtleSBpblxuICAobWF0Y2ggc3BlYyB3aXRoXG4gIHwgQm9vbCByIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgICAgKGRlZmF1bHQ6ICVzKUAuXCIga2V5MlxuICAgICAgKGlmICFyIHRoZW5cbiAgICAgICAgIFwiZW5hYmxlZFwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJkaXNhYmxlZFwiKVxuICB8IFZvaWQgLT4gKClcbiAgfCBJbnQgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8aW50PiAgIChkZWZhdWx0OiAlaSlALlwiIGtleSAhclxuICB8IEludF9vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6ICVpKUAuXCIga2V5MiBpKVxuICB8IFN0cmluZyByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IFwiXCIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5XG4gICAgfCBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0OiAlcylALlwiIGtleSBzKVxuICB8IFN0cmluZ19vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBcIlwiIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBTb21lIHMgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQgJXMpQC5cIiBrZXkyIHMpXG4gIHwgU3RyaW5nX2xpc3QgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IC4uLiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gLi4uICAgKGRlZmF1bHQgJWEpQC5cIiBrZXkyXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcpXG4gICAgICAgIGwpXG4gIHwgU3RyaW5nTmJyX2xpc3QgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IDwuLi4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBsIC0+XG4gICAgICBsZXQgcmVjIGF1eCBsaXN0ID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgKGgxLCBoMikgOjogdGFpbCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IDx2YWx1ZT4gKGRlZmF1bHQgJXMgJXMpXCIga2V5MiBoMSBoMlxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IHRhaWxcbiAgICAgICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIlxuICAgICAgaW5cbiAgICAgIGF1eCBsKVxuICB8IEZsb2F0IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGZsb2F0PiAgIChkZWZhdWx0ICVmKUAuXCIga2V5ICFyXG4gIHwgRmxvYXRfb3B0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8ZmxvYXQ+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSB2IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxmbG9hdD4gICAoZGVmYXVsdDogJWYpQC5cIiBrZXkyIHYpXG4gIHwgQ2hvaWNlIChsLCBfLCByKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIEBbJWFAXSBAICAoZGVmYXVsdDogJXMpQC5cIiBrZXlcbiAgICAgIChQcC5saXN0XG4gICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiB8QCBcIilcbiAgICAgICAgIChmdW4gZiAoa2V5LCBfbXNnKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYga2V5KSlcbiAgICAgIGwgIXJcbiAgfCBDaG9pY2VfbGlzdCAobCwgcikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyBAWyVhQF1ALlwiIGtleTJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoa2V5LCBfbXNnKSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVzJXNdXCIga2V5XG4gICAgICAgICAgICAgKGlmIExpc3QubWVtIGtleSAhciB0aGVuXG4gICAgICAgICAgICAgICAgXCIgKGRlZmF1bHQpXCJcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFwiXCIpKSlcbiAgICAgIGxcbiAgfCBNdWx0aSAoXywgW10pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzQC5cIiBrZXlcbiAgfCBNdWx0aSBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDx2YWx1ZT5ALlwiIGtleVxuICB8IE11bHRpRXh0IF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPHZhbHVlPkAuXCIga2V5KTtcblxuICAoKiBzaG93cyBkZXNjcmlwdGlvbiBpZiBpbiB2ZXJib3NlIG1vZGUgKilcbiAgaWYgdmVyYm9zZSAmJiBtc2cgPD4gXCJcIiB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIgICAgICBAWyVhQF1ALlwiIHByaW50X21zZyBtc2dcblxubGV0IHByaW50X2hlbHAgKGhlYWRlciA6IGJvb2wpICh2ZXJib3NlIDogYm9vbCkgZiAoYSA6IHQpID1cbiAgbGV0IG5iID0gcmVmIDAgaW5cblxuICAoKiBnZW5lcmFsIG9wdGlvbnMgKilcbiAgaWYgaGVhZGVyIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAuR2VuZXJhbCBvcHRpb25zQC5cIjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS1oZWxwICAgICAgICAgICAgVmVyYm9zZSBoZWxwQC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgIC1oICAgICAgICAgICAgICAgU2hvcnQgaGVscEAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0tdmVyc2lvbiAgICAgICAgIFNob3cgdmVyc2lvbiBudW1iZXJALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLWd1aSAgICAgICAgICAgICBHVUkgdG8gc2VsZWN0QC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS0obm8tKWV4cGVydCAgICAgRXhwZXJ0IG1vZGUgKG1vcmUgb3B0aW9ucylALlwiO1xuICBpbmNyIG5iO1xuICBpZiB2ZXJib3NlICYmIGhlYWRlciB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJALlwiO1xuXG4gICgqIGR1bXAgKilcbiAgU3RyaW5nSW50TWFwLml0ZXJcbiAgICAoZnVuIChjYXQsIF8sIGx2bF9vcHQpIChsLCBsdmwpIC0+XG4gICAgICBpZiBzaG93X2xldmVsX29wdCBsdmxfb3B0ICYmIHNob3dfbGV2ZWwgbHZsIHRoZW4gKFxuICAgICAgICBpZiBoZWFkZXIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiJXNALlwiIGNhdDtcbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoKF8sIF8sIF8sIF8sIGx2bCkgYXMgeCkgLT5cbiAgICAgICAgICAgIGlmIHNob3dfbGV2ZWwgbHZsIHRoZW4gKFxuICAgICAgICAgICAgICBpbmNyIG5iO1xuICAgICAgICAgICAgICBwcmludF9vcHRpb24gdmVyYm9zZSBmIHhcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgbDtcbiAgICAgICAgaWYgaGVhZGVyICYmIHZlcmJvc2UgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIlxuICAgICAgKSlcbiAgICAob3JkZXIgYSk7XG5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiglaSBvcHRpb25zKUAuXCIgIW5iXG5cbigqIHBhcnNlIHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBnaXZlbiBhcyBhIGxpc3Qgb2Ygc3RyaW5ncyxcbiAgIHJldHVybnMgdGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbnMgKGZpbGVuYW1lcykgaW4gcmV2ZXJzZSBvcmRlcilcbiopXG5sZXQgcGFyc2VfbGlzdCB+d2l0aF90ayA/dGl0bGUgKGEgOiB0KSAobCA6IHN0cmluZyBsaXN0KSA6IHN0cmluZyBsaXN0ID1cbiAgbGV0IGxvbmdfaGVscCA9IHJlZiBmYWxzZVxuICBhbmQgc2hvcnRfaGVscCA9IHJlZiBmYWxzZVxuICBhbmQgc2hvd192ZXJzaW9uID0gcmVmIGZhbHNlIGluXG5cbiAgbGV0IHJlYyBkb2l0IGFjY3VtID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBvcHQgOjogcmVtIC0+XG4gICAgICAoKiAtIG1lYW5zIG5vIG1vcmUgb3B0aW9uczogdGhlIHJlc3QgYXJlIGZpbGVuYW1lcyAqKVxuICAgICAgaWYgb3B0ID0gXCItXCIgdGhlblxuICAgICAgICBMaXN0LnJldl9hcHBlbmQgcmVtIGFjY3VtXG4gICAgICAoKiBoZWxwIG9wdGlvbnMgKilcbiAgICAgIGVsc2UgaWYgb3B0ID0gXCItaGVscFwiIHx8IG9wdCA9IFwiLS1oZWxwXCIgdGhlbiAoXG4gICAgICAgIGxvbmdfaGVscCA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLWhcIiB0aGVuIChcbiAgICAgICAgKCogc2hvcnRlciBsaXN0ICopXG4gICAgICAgIHNob3J0X2hlbHAgOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogdmVyc2lvbiBudW1iZXIgKilcbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi0tdmVyc2lvblwiIHRoZW4gKFxuICAgICAgICBzaG93X3ZlcnNpb24gOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogZXhwZXJ0ICopXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItLWV4cGVydFwiIHRoZW4gKFxuICAgICAgICBleHBlcnRfbW9kZSA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLS1uby1leHBlcnRcIiB0aGVuIChcbiAgICAgICAgZXhwZXJ0X21vZGUgOj0gZmFsc2U7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtICgqIHJlZ3VsYXIgb3B0aW9uLCBzdGFydGluZyB3aXRoIFwiLVwiICopXG4gICAgICApIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBvcHQgPiAxICYmIG9wdC5bMF0gPSAnLScgdGhlbiAoXG4gICAgICAgIGxldCAoKGtleSwgc3BlYywgXywgXywgXykgYXMgYWEpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgICAoZnVuIChrZXksIF9zcGVjLCBfbXNnLCBfY2F0LCBsdmwpIC0+XG4gICAgICAgICAgICAgICAgYWNjZXB0X2xldmVsX3VzZSBsdmwgJiYgKG9wdCA9IGtleSB8fCBvcHQgPSBub2tleSBrZXkpKVxuICAgICAgICAgICAgICBhXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIEZvcm1hdC5wcmludGZcbiAgICAgICAgICAgICAgXCJIZXJlIGlzIHRoZSBsaXN0IG9mIHJlY29nbml6ZWQgb3B0aW9uc0AuJWFALlVucmVjb2duaXplZCBcXFxuICAgICAgICAgICAgICAgb3B0aW9uOiAlc0AuQC5cIlxuICAgICAgICAgICAgICAocHJpbnRfaGVscCB0cnVlIGZhbHNlKSBhIG9wdDtcbiAgICAgICAgICAgIGZhaWx3aXRoIFwiYmFkIG9wdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW0gPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbWF0Y2ggc3BlYywgcmVtIHdpdGhcbiAgICAgICAgICAgIHwgQm9vbCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBvcHQgPSBrZXk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAwO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gaW50X29mX3N0cmluZyB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50X29wdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnRfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSAoaW50X29mX3N0cmluZyB2KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludF9vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZyByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmcgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gXCJcIjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX29wdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IFNvbWUgdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19saXN0IF8sIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+IHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IHYgOjogIXI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBbXTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IF8sIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+IHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfLCBbIF8gXSB3aGVuIG9wdCA9IGtleSAtPiBmYWlsd2l0aCBcImludmFsaWQgcGFpclwiXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IHIsIHYnIDo6IHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gKHYsIHYnKSA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAwLjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gZmxvYXRfb2Zfc3RyaW5nIHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdF9vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHYpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2UgKGwsIGwnLCByKSwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAobm90IChMaXN0LmV4aXN0cyAoZnVuIChrLCBfKSAtPiB2ID0gaykgbCkpXG4gICAgICAgICAgICAgICAgJiYgbm90IChMaXN0LmV4aXN0cyAoZnVuIGsgLT4gdiA9IGspIGwnKVxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIGNob2ljZVwiO1xuICAgICAgICAgICAgICByIDo9IHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2VfbGlzdCAobCwgciksIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgKGZ1biAoaywgXykgLT4gdiA9IGspIGwpIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImludmFsaWQgY2hvaWNlXCI7XG4gICAgICAgICAgICAgIHIgOj0gdiA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IENob2ljZV9saXN0IChfbCwgciksIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGkgKHgsIFtdKSwgcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZSAoZG9pdCBbXSB4KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpICh4LCB5KSwgdiA6OiByZW0gLT5cbiAgICAgICAgICAgICAgaWdub3JlIChkb2l0IFtdIHgpO1xuICAgICAgICAgICAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0IChmdW4gXyBsIC0+IGRvaXQgW10gWyBsOyB2IF0pIGFjY3VtIHkpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGlFeHQgbCwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gXyAobCwgcykgLT4gZG9pdCBbXSBbIGw7IHYgXiBzIF0pIGFjY3VtIGwpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGlFeHQgbCwgcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgIChmdW4gXyAobCwgcykgLT4gZG9pdCBbXSBbIG5va2V5IGw7IHMgXSlcbiAgICAgICAgICAgICAgICAgICBhY2N1bSBsKTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpIF8sIFtdIHwgKFZvaWQgfCBJbnQgXyB8IEZsb2F0IF8gfCBDaG9pY2UgXyksIF8gLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIG9wdGlvbiBvciBhcmd1bWVudFwiXG4gICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICBGb3JtYXQucHJpbnRmIFwiV3Jvbmcgb3B0aW9uIG9yIGFyZ3VtZW50IGZvciAlc0AuJWFcIiBvcHRcbiAgICAgICAgICAgICAgKHByaW50X29wdGlvbiBmYWxzZSkgYWE7XG4gICAgICAgICAgICBmYWlsd2l0aCBcImJhZCBvcHRpb25cIlxuICAgICAgICBpblxuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgICAoKiBkb2VzIG5vdCBzdGFydCB3aXRoIC0gPT4gdGhpcyBpcyBmaWxlbmFtZSAqKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGRvaXQgKG9wdCA6OiBhY2N1bSkgcmVtXG4gIGluXG5cbiAgbGV0IGZpbGVuYW1lcyA9IGRvaXQgW10gbCBpblxuICBpZiAhc2hvd192ZXJzaW9uIHRoZW4gKFxuICAgIEZvcm1hdC5wcmludGYgXCIlcyBALih3aXRoJXMgVGsgaW50ZXJmYWNlKUAuXCJcbiAgICAgIChtYXRjaCB0aXRsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lXG4gICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgKGlmIHdpdGhfdGsgdGhlblxuICAgICAgICAgXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwib3V0XCIpO1xuICAgIGV4aXQgMFxuICApIGVsc2UgaWYgIWxvbmdfaGVscCB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJWFcIiAocHJpbnRfaGVscCB0cnVlIHRydWUpIGE7XG4gICAgZXhpdCAwXG4gICkgZWxzZSBpZiAhc2hvcnRfaGVscCB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJWFcIiAocHJpbnRfaGVscCB0cnVlIGZhbHNlKSBhO1xuICAgIGV4aXQgMFxuICApO1xuICAoKiBMaXN0LmNvbmNhdCopIGZpbGVuYW1lcyAoKihMaXN0Lm1hcCBXb3JkZXhwLndvcmRleHAgZmlsZW5hbWVzKSopXG4iLCIoKiBMYWJsVEsgR1VJIGZvciBvcHRpb24gc2VsZWN0aW9uIFN1cGVyYXJnLlxuXG4gICBDb3B5cmlnaHQgKEMpIEFudG9pbmUgTWluZScgMjAwNlxuICAgTGlnaHQgVmVyc2lvbiAoSmVyb21lIEZlcmV0KVxuICAgVGhpcyBMSUdIVCB2ZXJzaW9uIGRvZXMgbm90IHJlcXVpcmUgbGFibHRrXG4qKVxuXG5leGNlcHRpb24gRXhpdCBvZiBzdHJpbmcgbGlzdFxuXG4oKiBNQUlOICopXG4oKiAqKioqICopXG5cbmxldCBwYXJzZSA/dGl0bGUgKGEgOiBTdXBlcmFyZy50KSAoZGVmIDogc3RyaW5nIGxpc3QgcmVmKSA9XG4gIFN1cGVyYXJnLmNoZWNrIGE7XG4gICgqIGRyb3AgdGhlIGZpcnN0IGNvbW1hbmQtbGluZSBhcmd1bWVudDogaXQgaXMgdGhlIGV4ZWN1dGFibGUgbmFtZSAqKVxuICBsZXQgYXJncyA9IExpc3QudGwgKEFycmF5LnRvX2xpc3QgU3lzLmFyZ3YpIGluXG4gICgqIGlmIG5vIGFyZ3VtZW50IG9yIFwiLS1ndWlcIiBnaXZlbiwgbGF1bmNoIHRoZSBndWksIG90aGVyd2lzZSwgcGFyc2UgYXJncyAqKVxuICBsZXQgcmVtID1cbiAgICBpZlxuICAgICAgYXJncyA9IFtdIHx8IGFyZ3MgPSBbIFwiLS1leHBlcnRcIiBdIHx8IGFyZ3MgPSBbIFwiLS1uby1leHBlcnRcIiBdXG4gICAgICB8fCBMaXN0LmV4aXN0cyAoKCA9ICkgXCItLWd1aVwiKSBhcmdzXG4gICAgdGhlblxuICAgICAgU3VwZXJhcmcucGFyc2VfbGlzdCB+d2l0aF90azpmYWxzZSA/dGl0bGUgYVxuICAgICAgICAoaWYgTGlzdC5leGlzdHMgKCggPSApIFwiLS1leHBlcnRcIikgYXJncyB0aGVuXG4gICAgICAgICAgIFsgXCItLWhlbHBcIjsgXCItLWV4cGVydFwiIF1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgWyBcIi0taGVscFwiIF0pXG4gICAgZWxzZVxuICAgICAgU3VwZXJhcmcucGFyc2VfbGlzdCB+d2l0aF90azpmYWxzZSA/dGl0bGUgYSBhcmdzXG4gIGluXG4gIGlmIHJlbSA8PiBbXSB0aGVuIGRlZiA6PSByZW1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkYXRhX3NldCA9IFwiRGF0YSBzZXRcIiwgMCwgTm9uZVxubGV0IG91dHB1dCA9IFwiT3V0cHV0XCIsIDEsIE5vbmVcbmxldCBzZW1hbnRpY3MgPSBcIlNlbWFudGljc1wiLCAyLCBOb25lXG5sZXQgaW50ZWdyYXRpb25fc2V0dGluZ3MgPSBcIkludGVncmF0aW9uIHNldHRpbmdzXCIsIDMsIE5vbmVcbmxldCBtb2RlbF9yZWR1Y3Rpb24gPSBcIk1vZGVsIHJlZHVjdGlvblwiLCA0LCBOb25lXG5sZXQgc3RhdGljX2FuYWx5c2lzID0gXCJTdGF0aWMgYW5hbHlzaXNcIiwgNSwgU29tZSBTdXBlcmFyZy5FeHBlcnRcbmxldCBkZWJ1Z19tb2RlID0gXCJEZWJ1ZyBtb2RlXCIsIDYsIFNvbWUgU3VwZXJhcmcuRXhwZXJ0XG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBiYWNrdHJhY2U6IGJvb2w7IG11dGFibGUgZGVidWc6IGJvb2wgfVxuXG50eXBlIHRfZ3VpID0ge1xuICBiYWNrdHJhY2VfZ3VpOiBib29sIHJlZjtcbiAgZGVidWdfZ3VpOiBib29sIHJlZjtcbiAgdmVyc2lvbl9ndWk6IGJvb2wgcmVmO1xuICBnbHV0dG9ueV9ndWk6IGJvb2wgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPSB7IGJhY2t0cmFjZSA9IGZhbHNlOyBkZWJ1ZyA9IGZhbHNlIH1cblxubGV0IGRlZmF1bHRfZ3VpID1cbiAge1xuICAgIGJhY2t0cmFjZV9ndWkgPSByZWYgZmFsc2U7XG4gICAgZGVidWdfZ3VpID0gcmVmIGZhbHNlO1xuICAgIHZlcnNpb25fZ3VpID0gcmVmIGZhbHNlO1xuICAgIGdsdXR0b255X2d1aSA9IHJlZiBmYWxzZTtcbiAgfVxuXG5sZXQgZG9fdmVyc2lvbiAoKSA9XG4gIEZvcm1hdC5wcmludF9zdHJpbmcgVmVyc2lvbi52ZXJzaW9uX21zZztcbiAgRm9ybWF0LnByaW50X25ld2xpbmUgKCk7XG4gIGV4aXQgMFxuXG5sZXQgZG9fZ2x1dHRvbnkgKCkgPVxuICBHYy5zZXQgeyAoR2MuZ2V0ICgpKSB3aXRoIEdjLnNwYWNlX292ZXJoZWFkID0gNTAwICgqZGVmYXVsdCA4MCopIH1cblxubGV0IGdldF9mcm9tX2d1aSB0X2d1aSA9XG4gIGxldCAoKSA9IGlmICEodF9ndWkudmVyc2lvbl9ndWkpIHRoZW4gZG9fdmVyc2lvbiAoKSBpblxuICBsZXQgKCkgPSBpZiAhKHRfZ3VpLmdsdXR0b255X2d1aSkgdGhlbiBkb19nbHV0dG9ueSAoKSBpblxuICB7IGJhY2t0cmFjZSA9ICEodF9ndWkuYmFja3RyYWNlX2d1aSk7IGRlYnVnID0gISh0X2d1aS5kZWJ1Z19ndWkpIH1cblxubGV0IGNvcHlfZnJvbV9ndWkgdF9ndWkgdCA9XG4gIGxldCB0X3RtcCA9IGdldF9mcm9tX2d1aSB0X2d1aSBpblxuICB0LmJhY2t0cmFjZSA8LSB0X3RtcC5iYWNrdHJhY2U7XG4gIHQuZGVidWcgPC0gdF90bXAuZGVidWdcblxubGV0IG9wdGlvbnNfZ2VuIHQgdF9ndWkgOlxuICAgIChzdHJpbmdcbiAgICAqIEFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBzdHJpbmdcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItLXZlcnNpb25cIixcbiAgICAgIEFyZy5Vbml0IGRvX3ZlcnNpb24sXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLnZlcnNpb25fZ3VpLFxuICAgICAgXCJkaXNwbGF5IHZlcnNpb24gbnVtYmVyXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItLWRlYnVnXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuZGVidWcgPC0gdHJ1ZSksXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLmRlYnVnX2d1aSxcbiAgICAgIFwiRW5hYmxlIGRlYnVnIG1vZGVcIixcbiAgICAgIFsgZGVidWdfbW9kZSwgMSBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gICAgKCBcIi0tYmFja3RyYWNlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuYmFja3RyYWNlIDwtIHRydWUpLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS5iYWNrdHJhY2VfZ3VpLFxuICAgICAgXCJCYWNrdHJhY2luZyBleGNlcHRpb25zXCIsXG4gICAgICBbIGRlYnVnX21vZGUsIDIgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItLWdsdXR0b255XCIsXG4gICAgICBBcmcuVW5pdCBkb19nbHV0dG9ueSxcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkuZ2x1dHRvbnlfZ3VpLFxuICAgICAgXCJMb3dlciBnYyBhY3Rpdml0eSBmb3IgYSBmYXN0ZXIgYnV0IG1lbW9yeSBpbnRlbnNpdmUgc2ltdWxhdGlvblwiLFxuICAgICAgWyBkZWJ1Z19tb2RlLCAzIF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgXVxuXG5sZXQgb3B0aW9ucyB0ID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgYiwgXywgYywgXywgXykgLT4gYSwgYiwgYylcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIHQgZGVmYXVsdF9ndWkpKVxuXG5sZXQgb3B0aW9uc19ndWkgdF9ndWkgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBfLCBiLCBjLCBkLCBlKSAtPiBhLCBiLCBjLCBkLCBlKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gZGVmYXVsdCB0X2d1aSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgaW5wdXRLYXBwYUZpbGVOYW1lczogc3RyaW5nIGxpc3Q7XG4gIG11dGFibGUgbWluVmFsdWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBtYXhWYWx1ZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIHBsb3RQZXJpb2Q6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBvdXRwdXREYXRhRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbiAgbXV0YWJsZSBiYXRjaG1vZGU6IGJvb2w7XG4gIG11dGFibGUgaW50ZXJhY3RpdmU6IGJvb2w7XG4gIG11dGFibGUgc3ludGF4VmVyc2lvbjogQXN0LnN5bnRheF92ZXJzaW9uO1xufVxuXG50eXBlIHRfZ3VpID0ge1xuICBpbnB1dEthcHBhRmlsZU5hbWVzX2d1aTogc3RyaW5nIGxpc3QgcmVmO1xuICBtaW5WYWx1ZV9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIG1heFZhbHVlX2d1aTogZmxvYXQgb3B0aW9uIHJlZjtcbiAgcGxvdFBlcmlvZF9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIG91dHB1dERhdGFGaWxlX2d1aTogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG91dHB1dERpcmVjdG9yeV9ndWk6IHN0cmluZyByZWY7XG4gIHN5bnRheFZlcnNpb25fZ3VpOiBzdHJpbmcgcmVmO1xuICBiYXRjaG1vZGVfZ3VpOiBzdHJpbmcgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lcyA9IFtdO1xuICAgIG1pblZhbHVlID0gTm9uZTtcbiAgICBtYXhWYWx1ZSA9IE5vbmU7XG4gICAgcGxvdFBlcmlvZCA9IE5vbmU7XG4gICAgb3V0cHV0RGF0YUZpbGUgPSBOb25lO1xuICAgIG91dHB1dERpcmVjdG9yeSA9IFwiLlwiO1xuICAgIHN5bnRheFZlcnNpb24gPSBBc3QuVjQ7XG4gICAgYmF0Y2htb2RlID0gZmFsc2U7XG4gICAgaW50ZXJhY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZGVmYXVsdF9ndWkgPVxuICB7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lc19ndWkgPSByZWYgW107XG4gICAgbWluVmFsdWVfZ3VpID0gcmVmIChTb21lIDAuKTtcbiAgICBtYXhWYWx1ZV9ndWkgPSByZWYgKFNvbWUgMS4pO1xuICAgIHBsb3RQZXJpb2RfZ3VpID0gcmVmIChTb21lIDAuMDEpO1xuICAgIG91dHB1dERhdGFGaWxlX2d1aSA9IHJlZiAoU29tZSBcImRhdGEuY3N2XCIpO1xuICAgIG91dHB1dERpcmVjdG9yeV9ndWkgPSByZWYgXCIuXCI7XG4gICAgc3ludGF4VmVyc2lvbl9ndWkgPSByZWYgXCI0XCI7XG4gICAgYmF0Y2htb2RlX2d1aSA9IHJlZiBcImludGVyYWN0aXZlXCI7XG4gIH1cblxubGV0IHJlYyBhdXggbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgKHYsIHZhcl92YWwpIDo6IHRhaWwgLT5cbiAgICBhdXggdGFpbFxuICAgICAgKCggdixcbiAgICAgICAgIHRyeSBOYnIub2Zfc3RyaW5nIHZhcl92YWxcbiAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgIHJhaXNlIChBcmcuQmFkIChcIlxcXCJcIiBeIHZhcl92YWwgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcIikpIClcbiAgICAgIDo6IGFjY3UpXG4gIHwgW10gLT4gYWNjdVxuXG5sZXQgZ2V0X2Zyb21fZ3VpIHRfZ3VpID1cbiAge1xuICAgIG1pblZhbHVlID0gISh0X2d1aS5taW5WYWx1ZV9ndWkpO1xuICAgIG1heFZhbHVlID0gISh0X2d1aS5tYXhWYWx1ZV9ndWkpO1xuICAgIHBsb3RQZXJpb2QgPSAhKHRfZ3VpLnBsb3RQZXJpb2RfZ3VpKTtcbiAgICBpbnB1dEthcHBhRmlsZU5hbWVzID0gISh0X2d1aS5pbnB1dEthcHBhRmlsZU5hbWVzX2d1aSk7XG4gICAgb3V0cHV0RGF0YUZpbGUgPSAhKHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSk7XG4gICAgb3V0cHV0RGlyZWN0b3J5ID0gISh0X2d1aS5vdXRwdXREaXJlY3RvcnlfZ3VpKTtcbiAgICBzeW50YXhWZXJzaW9uID1cbiAgICAgIChtYXRjaCAhKHRfZ3VpLnN5bnRheFZlcnNpb25fZ3VpKSB3aXRoXG4gICAgICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IEFzdC5WM1xuICAgICAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiBBc3QuVjRcbiAgICAgIHwgX3MgLT4gQXN0LlY0KTtcbiAgICBiYXRjaG1vZGUgPSBUb29scy5sb3dlcmNhc2UgISh0X2d1aS5iYXRjaG1vZGVfZ3VpKSA9IFwiYmF0Y2hcIjtcbiAgICBpbnRlcmFjdGl2ZSA9IFRvb2xzLmxvd2VyY2FzZSAhKHRfZ3VpLmJhdGNobW9kZV9ndWkpID0gXCJpbnRlcmFjdGl2ZVwiO1xuICB9XG5cbmxldCBjb3B5X2Zyb21fZ3VpIHRfZ3VpIHQgPVxuICBsZXQgdF90bXAgPSBnZXRfZnJvbV9ndWkgdF9ndWkgaW5cbiAgdC5taW5WYWx1ZSA8LSB0X3RtcC5taW5WYWx1ZTtcbiAgdC5tYXhWYWx1ZSA8LSB0X3RtcC5tYXhWYWx1ZTtcbiAgdC5wbG90UGVyaW9kIDwtIHRfdG1wLnBsb3RQZXJpb2Q7XG4gIHQuaW5wdXRLYXBwYUZpbGVOYW1lcyA8LSB0X3RtcC5pbnB1dEthcHBhRmlsZU5hbWVzO1xuICB0Lm91dHB1dERhdGFGaWxlIDwtIHRfdG1wLm91dHB1dERhdGFGaWxlO1xuICB0Lm91dHB1dERpcmVjdG9yeSA8LSB0X3RtcC5vdXRwdXREaXJlY3Rvcnk7XG4gIHQuc3ludGF4VmVyc2lvbiA8LSB0X3RtcC5zeW50YXhWZXJzaW9uO1xuICB0LmJhdGNobW9kZSA8LSB0X3RtcC5iYXRjaG1vZGU7XG4gIHQuaW50ZXJhY3RpdmUgPC0gdF90bXAuaW50ZXJhY3RpdmVcblxubGV0IG9wdGlvbnNfZ2VuICh0IDogdCkgKHRfZ3VpIDogdF9ndWkpIDpcbiAgICAoc3RyaW5nXG4gICAgKiBBcmcuc3BlY1xuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogc3RyaW5nXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLWlcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBmaWMgLT4gdC5pbnB1dEthcHBhRmlsZU5hbWVzIDwtIGZpYyA6OiB0LmlucHV0S2FwcGFGaWxlTmFtZXMpLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX2xpc3QgdF9ndWkuaW5wdXRLYXBwYUZpbGVOYW1lc19ndWksXG4gICAgICBcIm5hbWUgb2YgYSBrYXBwYSBmaWxlIHRvIHVzZSBhcyBpbnB1dCAoY2FuIGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgZm9yIFxcXG4gICAgICAgbXVsdGlwbGUgaW5wdXQgZmlsZXMpXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItaW5pdGlhbFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gdGltZSAtPiB0Lm1pblZhbHVlIDwtIFNvbWUgdGltZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWluVmFsdWVfZ3VpLFxuICAgICAgXCJNaW4gdGltZSBvZiBzaW11bGF0aW9uIChhcmJpdHJhcnkgdGltZSB1bml0KVwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMDsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDAgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItbFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gdGltZSAtPiB0Lm1heFZhbHVlIDwtIFNvbWUgdGltZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWF4VmFsdWVfZ3VpLFxuICAgICAgXCJMaW1pdCBvZiB0aGUgc2ltdWxhdGlvblwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMTsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItdFwiLFxuICAgICAgQXJnLkZsb2F0XG4gICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAgICAgKFwiT3B0aW9uICctdCcgaGFzIGJlZW4gcmVwbGFjZSBieSAnWy11IHRpbWVdIC1sIFwiXG4gICAgICAgICAgICAgIF4gc3RyaW5nX29mX2Zsb2F0IGYgXiBcIidcIikpKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5tYXhWYWx1ZV9ndWksXG4gICAgICBcIkRlcHJlY2F0ZWQgb3B0aW9uXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItcFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gcG9pbnROdW1iZXJWYWx1ZSAtPiB0LnBsb3RQZXJpb2QgPC0gU29tZSBwb2ludE51bWJlclZhbHVlKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5wbG90UGVyaW9kX2d1aSxcbiAgICAgIFwicGxvdCBwZXJpb2Q6IHRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBwb2ludHMgaW4gcGxvdCAoZGVmYXVsdDogMS4wKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMjsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDIgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItb1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIG91dHB1dERhdGFGaWxlIC0+IHQub3V0cHV0RGF0YUZpbGUgPC0gU29tZSBvdXRwdXREYXRhRmlsZSksXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMztcbiAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAzO1xuICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMztcbiAgICAgIF0sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBvdXRwdXREaXJlY3RvcnkgLT4gdC5vdXRwdXREaXJlY3RvcnkgPC0gb3V0cHV0RGlyZWN0b3J5KSxcbiAgICAgIFN1cGVyYXJnLlN0cmluZyB0X2d1aS5vdXRwdXREaXJlY3RvcnlfZ3VpLFxuICAgICAgXCJTcGVjaWZpZXMgZGlyZWN0b3J5IG5hbWUgd2hlcmUgb3V0cHV0IGZpbGUocykgc2hvdWxkIGJlIHN0b3JlZFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMTAwO1xuICAgICAgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItbW9kZVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICBpZiBtID0gXCJiYXRjaFwiIHRoZW5cbiAgICAgICAgICAgIHQuYmF0Y2htb2RlIDwtIHRydWVcbiAgICAgICAgICBlbHNlIGlmIG0gPSBcImludGVyYWN0aXZlXCIgdGhlblxuICAgICAgICAgICAgdC5pbnRlcmFjdGl2ZSA8LSB0cnVlKSxcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFsgXCJiYXRjaFwiLCBcImJhdGNoIG1vZGVcIjsgXCJpbnRlcmFjdGl2ZVwiLCBcImludGVyYWN0aXZlIG1vZGVcIiBdLFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHRfZ3VpLmJhdGNobW9kZV9ndWkgKSxcbiAgICAgIFwiZWl0aGVyIFxcXCJiYXRjaFxcXCIgdG8gbmV2ZXIgYXNrIGFueXRoaW5nIHRvIHRoZSB1c2VyIG9yIFxcXCJpbnRlcmFjdGl2ZVxcXCIgXFxcbiAgICAgICB0byBhc2sgc29tZXRoaW5nIGJlZm9yZSBkb2luZyBhbnl0aGluZ1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDc7IENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDcgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItc3ludGF4XCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IHQuc3ludGF4VmVyc2lvbiA8LSBBc3QuVjNcbiAgICAgICAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiB0LnN5bnRheFZlcnNpb24gPC0gQXN0LlY0XG4gICAgICAgIHwgcyAtPiByYWlzZSAoQXJnLkJhZCAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiIGlzIG5vdCBhIHZhbGlkIHN5bnRheCB2ZXJzaW9uXCIpKSksXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwidjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwiVjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwiNFwiLCBcIm5ld1wiO1xuICAgICAgICAgICAgXCJ2NFwiLCBcIm5ld1wiO1xuICAgICAgICAgICAgXCJWNFwiLCBcIm5ld1wiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgdF9ndWkuc3ludGF4VmVyc2lvbl9ndWkgKSxcbiAgICAgIFwiVXNlIGV4cGxpY2l0IG5vdGF0aW9uIGZvciBmcmVlIHNpdGVcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA4IF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgXVxuXG5sZXQgb3B0aW9ucyB0ID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgYiwgXywgYywgXywgXykgLT4gYSwgYiwgYylcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIHQgZGVmYXVsdF9ndWkpKVxuXG5sZXQgb3B0aW9uc19ndWkgdF9ndWkgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBfLCBiLCBjLCBkLCBlKSAtPiBhLCBiLCBjLCBkLCBlKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gZGVmYXVsdCB0X2d1aSkpXG4gIEAgW1xuICAgICAgKCBcIi0tb3V0cHV0LXBsb3RcIixcbiAgICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMTtcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMTtcbiAgICAgICAgXSxcbiAgICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgICAoIFwiLS1kYXRhLWZpbGVcIixcbiAgICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMjtcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMztcbiAgICAgICAgXSxcbiAgICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgXVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYXIgPSB7IG11dGFibGUgdGlja3M6IGludDsgYmFyX3NpemU6IGludDsgYmFyX2NoYXI6IGNoYXIgfVxuXG50eXBlIHRleHQgPSB7XG4gIG11dGFibGUgbGFzdF9sZW5ndGg6IGludDtcbiAgbXV0YWJsZSBsYXN0X2V2ZW50X25iOiBpbnQ7XG4gIG11dGFibGUgbGFzdF90aW1lOiBmbG9hdDtcbn1cblxudHlwZSB0ID0gQmFyIG9mIGJhciB8IFRleHQgb2YgdGV4dFxuXG5sZXQgaW5jX3RpY2sgYyA9IGMudGlja3MgPC0gYy50aWNrcyArIDFcblxubGV0IGNyZWF0ZSBiYXJfc2l6ZSBiYXJfY2hhciA9XG4gIGlmIFVuaXguaXNhdHR5IFVuaXguc3Rkb3V0IHRoZW5cbiAgICBUZXh0IHsgbGFzdF9sZW5ndGggPSAwOyBsYXN0X3RpbWUgPSAtNS47IGxhc3RfZXZlbnRfbmIgPSAwIH1cbiAgZWxzZSAoXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBfID0gYmFyX3NpemUgZG93bnRvIDEgZG9cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIl9cIlxuICAgICAgZG9uZVxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgICBCYXIgeyB0aWNrcyA9IDA7IGJhcl9zaXplOyBiYXJfY2hhciB9XG4gIClcblxubGV0IHBwX25vdF9udWxsIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICglLjJmJSUpXCIgKHggKi4gMTAwLilcbiAgfCBOb25lIC0+ICgpXG5cbmxldCBwcF90ZXh0IGRlbHRhX3QgdGltZSB0X3IgZXZlbnQgZV9yIGYgcyA9XG4gIGxldCBzdHJpbmcgPVxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiUuMmYgdGltZSB1bml0cyVhIGluICVpIGV2ZW50cyVhJXRcIiB0aW1lIHBwX25vdF9udWxsIHRfclxuICAgICAgZXZlbnQgcHBfbm90X251bGwgZV9yIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBkZWx0YV90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBkdCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgKGp1c3QgZGlkICUuMWYgZXZlbnRzL3MpXCJcbiAgICAgICAgICAgIChmbG9hdF9vZl9pbnQgKGV2ZW50IC0gcy5sYXN0X2V2ZW50X25iKSAvLiBkdCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJXMlc0A/XCJcbiAgICAgIChTdHJpbmcubWFrZSBzLmxhc3RfbGVuZ3RoICdcXGInKVxuICAgICAgc3RyaW5nXG4gICAgICAoU3RyaW5nLm1ha2UgKG1heCAwIChzLmxhc3RfbGVuZ3RoIC0gU3RyaW5nLmxlbmd0aCBzdHJpbmcpKSAnICcpXG4gIGluXG4gIHMubGFzdF9sZW5ndGggPC0gU3RyaW5nLmxlbmd0aCBzdHJpbmdcblxubGV0IHJlYyBhdXhfdGljayBzb21ldGhpbmcgcyBuID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBpZiBzb21ldGhpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpXG4gICAgZWxzZVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2NoYXIgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgcy5iYXJfY2hhciBpblxuICAgIGxldCAoKSA9IGluY190aWNrIHMgaW5cbiAgICBhdXhfdGljayB0cnVlIHMgKHByZWQgbilcbiAgKVxuXG5sZXQgdGljayB+ZWZmaWNpZW5jeSB0aW1lIHRfciBldmVudCBlX3IgPSBmdW5jdGlvblxuICB8IEJhciBzIC0+XG4gICAgbGV0IG5fdCA9IE9wdGlvbl91dGlsLnVuc29tZSAwLiB0X3IgKi4gZmxvYXRfb2ZfaW50IHMuYmFyX3NpemUgaW5cbiAgICBsZXQgbl9lID0gT3B0aW9uX3V0aWwudW5zb21lIDAuIGVfciAqLiBmbG9hdF9vZl9pbnQgcy5iYXJfc2l6ZSBpblxuICAgIGF1eF90aWNrIGZhbHNlIHMgKGludF9vZl9mbG9hdCAobWF4IG5fdCBuX2UpIC0gcy50aWNrcylcbiAgfCBUZXh0IHMgLT5cbiAgICBsZXQgcnVuID0gU3lzLnRpbWUgKCkgaW5cbiAgICBsZXQgZHQgPSBydW4gLS4gcy5sYXN0X3RpbWUgaW5cbiAgICBpZiBkdCA+IDAuNSB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBwX3RleHRcbiAgICAgICAgICAoaWYgZWZmaWNpZW5jeSB0aGVuXG4gICAgICAgICAgICAgU29tZSBkdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICB0aW1lIHRfciBldmVudCBlX3IgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHMubGFzdF9ldmVudF9uYiA8LSBldmVudCBpblxuICAgICAgcy5sYXN0X3RpbWUgPC0gU3lzLnRpbWUgKClcbiAgICApXG5cbmxldCBjb21wbGV0ZV9wcm9ncmVzc19iYXIgdGltZSBldmVudCB0ID1cbiAgKG1hdGNoIHQgd2l0aFxuICB8IEJhciB0IC0+IGF1eF90aWNrIGZhbHNlIHQgKHQuYmFyX3NpemUgLSB0LnRpY2tzKVxuICB8IFRleHQgcyAtPiBwcF90ZXh0IE5vbmUgdGltZSBOb25lIGV2ZW50IE5vbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgcyk7XG4gIEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb3V0cHV0RGlyTmFtZSA9IHJlZiBcIlwiXG5sZXQgbWFyc2hhbGl6ZWRPdXRGaWxlID0gcmVmIFwiXCJcbmxldCBjZmxvd0ZpbGVOYW1lID0gcmVmIFwiY2Zsb3cuZG90XCJcbmxldCBicmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nTmFtZSA9IHJlZiBcImNvbXByZXNzaW9uX3N0YXR1cy50eHRcIlxubGV0IHRhc2tzX3Byb2ZpbGluZ05hbWUgPSByZWYgXCJwcm9maWxpbmcuaHRtbFwiXG5sZXQgZmx1eEZpbGVOYW1lID0gcmVmIFwiXCJcblxubGV0IG1rX2Rpcl9yIGQgPVxuICBsZXQgcmVjIGF1eCBkID1cbiAgICBpZiBub3QgKFN5cy5maWxlX2V4aXN0cyBkKSB0aGVuIChcbiAgICAgIGxldCAoKSA9IGF1eCAoRmlsZW5hbWUuZGlybmFtZSBkKSBpblxuICAgICAgVW5peC5ta2RpciBkIDBvNzc1XG4gICAgKVxuICBpblxuICBVbml4LmhhbmRsZV91bml4X2Vycm9yIGF1eCBkXG5cbmxldCBvdmVyd3JpdGVfcGVybWlzc2lvbiA9IHJlZiBmYWxzZVxuXG5sZXQgcGF0aCBmID1cbiAgaWYgRmlsZW5hbWUuaXNfaW1wbGljaXQgZiB0aGVuXG4gICAgRmlsZW5hbWUuY29uY2F0ICFvdXRwdXREaXJOYW1lIGZcbiAgZWxzZVxuICAgIGZcblxubGV0IG9wZW5fb3V0IGYgPVxuICBsZXQgeCA9IHBhdGggZiBpblxuICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSB4KSBpblxuICBvcGVuX291dCB4XG5cbmxldCByZWMgYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UgdiBleHQgPVxuICB0cnlcbiAgICBvcGVuX291dF9nZW5cbiAgICAgIFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbDsgT3Blbl90ZXh0IF1cbiAgICAgIDBvNjY2XG4gICAgICAoYmFzZSBeIFwiflwiIF4gc3RyaW5nX29mX2ludCB2IF4gZXh0KVxuICB3aXRoIFN5c19lcnJvciBfIC0+IGF1eF9vcGVuX291dF9mcmVzaCBiYXNlIChzdWNjIHYpIGV4dFxuXG5sZXQgb3Blbl9vdXRfZnJlc2ggbmFtZSBjb25jYXRfbGlzdCBmYWN1bHRhdGl2ZSBleHQgPVxuICBsZXQgbmFtZSA9IHBhdGggbmFtZSBpblxuICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSBuYW1lKSBpblxuICBsZXQgdG1wX25hbWUgPSBUb29scy5jaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgaW5cbiAgbGV0IGJhc2UgPSBTdHJpbmcuY29uY2F0IFwiX1wiICh0bXBfbmFtZSA6OiBjb25jYXRfbGlzdCkgaW5cbiAgbGV0IG92ZXJfZmxhZyA9XG4gICAgaWYgIW92ZXJ3cml0ZV9wZXJtaXNzaW9uIHRoZW5cbiAgICAgIE9wZW5fdHJ1bmNcbiAgICBlbHNlXG4gICAgICBPcGVuX2V4Y2xcbiAgaW5cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgb3Zlcl9mbGFnOyBPcGVuX3RleHQgXSBpblxuICB0cnkgb3Blbl9vdXRfZ2VuIGZsYWdzIDBvNjY2IChiYXNlIF4gZXh0KVxuICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgbGV0IGJhc2UnID1cbiAgICAgIGlmIGZhY3VsdGF0aXZlIDw+IFwiXCIgdGhlblxuICAgICAgICBiYXNlIF4gXCJfXCIgXiBmYWN1bHRhdGl2ZVxuICAgICAgZWxzZVxuICAgICAgICBiYXNlXG4gICAgaW5cbiAgICAodHJ5IG9wZW5fb3V0X2dlbiBmbGFncyAwbzY2NiAoYmFzZScgXiBleHQpXG4gICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UnIDAgZXh0KVxuXG5sZXQgc2V0IG5hbWUgZXh0X29wdCA9XG4gIGlmICFuYW1lIDw+IFwiXCIgdGhlbiAoXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGV4dF9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICFuYW1lXG4gICAgICB8IFNvbWUgZXh0IC0+XG4gICAgICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCAhbmFtZSBleHQgdGhlblxuICAgICAgICAgICFuYW1lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAhbmFtZSBeIFwiLlwiIF4gZXh0XG4gICAgaW5cbiAgICBuYW1lIDo9IGZuYW1lXG4gIClcblxubGV0IHNldE91dHB1dE5hbWUgKCkgPVxuICBzZXQgZmx1eEZpbGVOYW1lIChTb21lIFwiZG90XCIpO1xuICBzZXQgbWFyc2hhbGl6ZWRPdXRGaWxlIE5vbmVcblxubGV0IGNoZWNrX25vdF9leGlzdHMgPSBmdW5jdGlvblxuICB8IFwiXCIgLT4gKClcbiAgfCBmaWxlIC0+XG4gICAgbGV0IGZpbGUgPSBwYXRoIGZpbGUgaW5cbiAgICBpZiBTeXMuZmlsZV9leGlzdHMgZmlsZSB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiRmlsZSAnJXMnIGFscmVhZHkgZXhpc3RzIGRvIHlvdSB3YW50IHRvIGVyYXNlICh5L04pP0AuXCJcbiAgICAgICAgICBmaWxlXG4gICAgICBpblxuICAgICAgbGV0IGFuc3dlciA9IFRvb2xzLnJlYWRfaW5wdXQgKCkgaW5cbiAgICAgIGlmXG4gICAgICAgIGFuc3dlciA8PiBcInlcIiAmJiBhbnN3ZXIgPD4gXCJZXCIgJiYgYW5zd2VyIDw+IFwieWVzXCIgJiYgYW5zd2VyIDw+IFwiWUVTXCJcbiAgICAgICAgJiYgYW5zd2VyIDw+IFwiWWVzXCJcbiAgICAgIHRoZW5cbiAgICAgICAgZXhpdCAxXG4gICAgICBlbHNlXG4gICAgICAgIG92ZXJ3cml0ZV9wZXJtaXNzaW9uIDo9IHRydWVcbiAgICApXG5cbmxldCBzZXRDaGVja0ZpbGVFeGlzdHMgfmJhdGNobW9kZSBvdXRwdXRGaWxlID1cbiAgbGV0ICgpID0gc2V0T3V0cHV0TmFtZSAoKSBpblxuICBpZiBiYXRjaG1vZGUgdGhlblxuICAgIG92ZXJ3cml0ZV9wZXJtaXNzaW9uIDo9IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gY2hlY2tfbm90X2V4aXN0cyAhZmx1eEZpbGVOYW1lIGluXG4gICAgbGV0ICgpID0gY2hlY2tfbm90X2V4aXN0cyAhbWFyc2hhbGl6ZWRPdXRGaWxlIGluXG4gICAgY2hlY2tfbm90X2V4aXN0cyBvdXRwdXRGaWxlXG4gIClcblxubGV0IHdpdGhfY2hhbm5lbCBzdHIgZiA9XG4gIGlmIHN0ciA8PiBcIlwiIHRoZW4gKFxuICAgIGxldCBkZXNjID0gb3Blbl9vdXQgc3RyIGluXG4gICAgbGV0ICgpID0gZiBkZXNjIGluXG4gICAgY2xvc2Vfb3V0IGRlc2NcbiAgKVxuXG5sZXQgd3JhcF9mb3JtYXR0ZXIgZiBkZXNjID1cbiAgbGV0IGZyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkZXNjIGluXG4gIGxldCAoKSA9IGYgZnIgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZyICgpXG5cbmxldCBzZXRfZGlyIHMgPVxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IHMpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBzO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IG1rX2Rpcl9yIHNcbiAgaW5cbiAgb3V0cHV0RGlyTmFtZSA6PSBzXG5cbmxldCBnZXRfZGlyICgpID0gIW91dHB1dERpck5hbWVcbmxldCBzZXRfbWFyc2hhbGl6ZWQgZiA9IG1hcnNoYWxpemVkT3V0RmlsZSA6PSBmXG5cbmxldCB3aXRoX21hcnNoYWxpemVkIGYgPVxuICBtYXRjaCAhbWFyc2hhbGl6ZWRPdXRGaWxlIHdpdGhcbiAgfCBcIlwiIC0+ICgpXG4gIHwgZmlsZSAtPlxuICAgIGxldCB4ID0gcGF0aCBmaWxlIGluXG4gICAgbGV0ICgpID0gbWtfZGlyX3IgKEZpbGVuYW1lLmRpcm5hbWUgeCkgaW5cbiAgICBsZXQgZCA9IG9wZW5fb3V0X2JpbiB4IGluXG4gICAgbGV0ICgpID0gZiBkIGluXG4gICAgY2xvc2Vfb3V0IGRcblxubGV0IHNldF9jZmxvdyBzID0gY2Zsb3dGaWxlTmFtZSA6PSBzXG5cbmxldCB3aXRoX2NmbG93X2ZpbGUgbCBlIGYgPVxuICBsZXQgZGVzYyA9IG9wZW5fb3V0X2ZyZXNoICFjZmxvd0ZpbGVOYW1lIGwgXCJcIiBlIGluXG4gIGxldCAoKSA9IHdyYXBfZm9ybWF0dGVyIGYgZGVzYyBpblxuICBjbG9zZV9vdXQgZGVzY1xuXG5sZXQgb3Blbl90YXNrc19wcm9maWxpbmcgKCkgPSBvcGVuX291dCAhdGFza3NfcHJvZmlsaW5nTmFtZVxuXG5sZXQgb3Blbl9icmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nICgpID1cbiAgb3Blbl9vdXQgIWJyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmdOYW1lXG5cbmxldCBzZXRfZmx1eCBubWUgZXZlbnQgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG5tZSB3aXRoXG4gICAgfCBcIlwiIC0+IGZsdXhGaWxlTmFtZSA6PSBcImZsdXhcIiBeIFwiX1wiIF4gc3RyaW5nX29mX2ludCBldmVudFxuICAgIHwgXyAtPiBmbHV4RmlsZU5hbWUgOj0gbm1lXG4gIGluXG4gIHNldCBmbHV4RmlsZU5hbWUgKFNvbWUgXCJkb3RcIilcblxubGV0IHdpdGhfZmx1eCBzdHIgZiA9XG4gIHdpdGhfY2hhbm5lbFxuICAgIChtYXRjaCBzdHIgd2l0aFxuICAgIHwgXCJcIiAtPiAhZmx1eEZpbGVOYW1lXG4gICAgfCBfIC0+IHN0cilcbiAgICBmXG5cbmxldCB3aXRoX3NuYXBzaG90IHN0ciBleHQgZXZlbnQgZiA9XG4gIGxldCBkZXNjID0gb3Blbl9vdXRfZnJlc2ggc3RyIFtdIChzdHJpbmdfb2ZfaW50IGV2ZW50KSBleHQgaW5cbiAgbGV0ICgpID0gZiBkZXNjIGluXG4gIGNsb3NlX291dCBkZXNjXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0b3JlID0ge1xuICBmaWxlOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyOiBzdHJpbmc7XG4gIGxlZ2VuZDogc3RyaW5nIGFycmF5O1xuICBtdXRhYmxlIHBvaW50czogTmJyLnQgYXJyYXkgbGlzdDtcbn1cblxubGV0IG5ld19maWxlIG5hbWUgPVxuICBsZXQgY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IG5hbWUgaW5cbiAgbGV0IGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW4gaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PD94bWwgdmVyc2lvbj1cXFwiMS4wXFxcIj8+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PCFET0NUWVBFQCBzdmdAIFBVQkxJQ0AgXFxcIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOXFxcIkAgXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIlxcXCJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGRcXFwiPkBdQCxALFwiXG4gIGluXG4gIGYsIGNoYW5cblxubGV0IGNsb3NlX2ZpbGUgZm9ybSBjaGFuID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZm9ybSBcIkBdQC5cIiBpblxuICBjbG9zZV9vdXQgY2hhblxuXG5sZXQgc3R5bGUgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3R5bGUgdHlwZT1cXFwidGV4dC9jc3NcXFwiID5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8IVtDREFUQVtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNsZWdlbmQgdGV4dCB7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidGV4dC1hbmNob3I6ZW5kO0AgYmFzZWxpbmUtc2hpZnQ6LS40ZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhpc190IHRleHQge0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInRleHQtYW5jaG9yOm1pZGRsZTtAIGJhc2VsaW5lLXNoaWZ0Oi0xZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhpc192YSB0ZXh0IHtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ0ZXh0LWFuY2hvcjplbmQ7QCBiYXNlbGluZS1zaGlmdDotLjRlbTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ9QF1ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2F4ZXMge0AsY29sb3I6YmxhY2s7QCxzdHJva2U6Y3VycmVudENvbG9yO1wiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALHN0cm9rZS1zaXplOjFweDtALH1AXUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIkBbPGh2IDI+I2F4ZXMgdGV4dCB7QCxzdHJva2U6bm9uZTtALGZpbGw6Y3VycmVudENvbG9yO0AsfUBdQCxcIlxuICBpblxuICAoKiBsZXQgKCkgPVxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jZGF0YSB1c2U6aG92ZXIge0AsZmlsbDpncmVlbjtALH1AXUAsXCIgaW4qKVxuICBGb3JtYXQuZnByaW50ZiBmIFwiXV0+QCw8L3N0eWxlPkAsQCxcIlxuXG5sZXQgY29sb3JzID0gW3wgXCJwZXJ1XCI7IFwiYmx1ZVwiOyBcInB1cnBsZVwiOyBcImdyZWVuXCIgfF1cbmxldCBzdHlsZXMgPSBbfCBcInBvaW50XCI7IFwicGx1c1wiOyBcImNyb3NzXCIgfF1cblxubGV0IGRlZnMgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGVmcz5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxwYXRoIGlkPVxcXCJwbHVzXFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIlwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgZD1cXFwiTS0zLjUsMCBoNyBNMCwtMy41IHY3XFxcIi8+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiPHBhdGggaWQ9XFxcImNyb3NzXFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIlwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiBkPVxcXCJNLTMuNSwtMy41IEwzLjUsMy41IE0zLjUsLTMuNSBMLTMuNSwzLjVcXFwiLz5ALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8Y2lyY2xlIGlkPVxcXCJwb2ludFxcXCIgY2xhc3M9XFxcInBvaW50XFxcIiByPVxcXCIyLjVcXFwiXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBzdHJva2U9XFxcIm5vbmVcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPkAsXCIgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjwvZGVmcz5ALEAsXCJcblxubGV0IGxlZ2VuZCB3IGYgYSA9XG4gIGxldCBwcF9saW5lIGknIGYgcyA9XG4gICAgaWYgaScgPiAwIHRoZW4gKFxuICAgICAgbGV0IGkgPSBwcmVkIGknIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD48dGV4dCB4PVxcXCIlaVxcXCIgeT1cXFwiJWlcXFwiPiVzPC90ZXh0PkBdQCxcIiAodyAtIDE1KVxuICAgICAgICAgICgxMCArIChpICogMTUpKVxuICAgICAgICAgIHNcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiPHVzZSB4bGluazpocmVmPVxcXCIjJXNcXFwiIHN0eWxlPVxcXCJjb2xvcjolc1xcXCIgeD1cXFwiJWlcXFwiIHk9XFxcIiVpXFxcIi8+XCJcbiAgICAgICAgc3R5bGVzLihpJyBtb2QgQXJyYXkubGVuZ3RoIHN0eWxlcylcbiAgICAgICAgY29sb3JzLihpJyBtb2QgQXJyYXkubGVuZ3RoIGNvbG9ycylcbiAgICAgICAgKHcgLSA3KVxuICAgICAgICAoMTAgKyAoaSAqIDE1KSlcbiAgICApXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxnIGlkPVxcXCJsZWdlbmRcXFwiPkAsJWFAXUAsPC9nPkAsQCxcIlxuICAgIChQcC5hcnJheSBQcC5jdXQgcHBfbGluZSkgYVxuXG5sZXQgZ2V0X2xpbWl0cyBsID1cbiAgbGV0IGR1bW15X3ZhbHVlcyA9IDAuLCAtMS4sIDEuIGluXG4gIGxldCByZWMgYXV4IHRfbWF4IHZhX21pbiB2YV9tYXggPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIHZhX21pbiA9IHZhX21heCB0aGVuXG4gICAgICAgIHRfbWF4LCB2YV9taW4gLS4gMS4sIHZhX21heCArLiAxLlxuICAgICAgZWxzZVxuICAgICAgICB0X21heCwgbWluIHZhX21pbiAwLiwgdmFfbWF4XG4gICAgfCB2YSA6OiBxIC0+XG4gICAgICBhdXhcbiAgICAgICAgKG1heCAoT3B0aW9uX3V0aWwudW5zb21lIDAuIChOYnIudG9fZmxvYXQgdmEuKDApKSkgdF9tYXgpXG4gICAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgIChmdW4gaSBhIHggLT5cbiAgICAgICAgICAgICBtYXRjaCBOYnIudG9fZmxvYXQgeCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHggd2hlbiBpIDw+IDAgLT4gbWluIGEgeFxuICAgICAgICAgICAgIHwgXyAtPiBhKVxuICAgICAgICAgICB2YV9taW4gdmEpXG4gICAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgIChmdW4gaSBhIHggLT5cbiAgICAgICAgICAgICBtYXRjaCBOYnIudG9fZmxvYXQgeCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHggd2hlbiBpIDw+IDAgLT4gbWF4IGEgeFxuICAgICAgICAgICAgIHwgXyAtPiBhKVxuICAgICAgICAgICB2YV9tYXggdmEpXG4gICAgICAgIHFcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZHVtbXlfdmFsdWVzXG4gIHwgdmEgOjogXyB3aGVuIEFycmF5Lmxlbmd0aCB2YSA8IDIgLT4gZHVtbXlfdmFsdWVzXG4gIHwgbCAtPiBhdXggMC4gaW5maW5pdHkgMC4gbFxuXG5sZXQgZHJhd19pbl9kYXRhICgodF9tYXgsIHZhX21pbiwgdmFfbWF4KSwgKHplcm9fdywgemVyb19oLCBkcmF3X3csIGRyYXdfaCkpID1cbiAgbGV0IGRlbHRhX3ZhID0gdmFfbWF4IC0uIHZhX21pbiBpblxuICBsZXQgemVyb193JyA9IGZsb2F0X29mX2ludCB6ZXJvX3cgaW5cbiAgbGV0IHplcm9faCcgPSBmbG9hdF9vZl9pbnQgemVyb19oIGluXG4gIGxldCBkcmF3X3cnID0gZmxvYXRfb2ZfaW50IGRyYXdfdyBpblxuICBsZXQgZHJhd19oJyA9IGZsb2F0X29mX2ludCBkcmF3X2ggaW5cbiAgZnVuIGYgeCB5IC0+XG4gICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IHkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5JyAtPlxuICAgICAgZlxuICAgICAgICAoemVyb193J1xuICAgICAgICArLiAoKE9wdGlvbl91dGlsLnVuc29tZSAwLiBAQCBOYnIudG9fZmxvYXQgeCkgKi4gZHJhd193JyAvLiB0X21heCkpXG4gICAgICAgICh6ZXJvX2gnIC0uICgoeScgLS4gdmFfbWluKSAqLiBkcmF3X2gnIC8uIGRlbHRhX3ZhKSlcblxubGV0IGdyYWR1YXRpb25fc3RlcCBkcmF3X2wgbWluX2dyYWRfbCB2YV9taW4gdmFfbWF4ID1cbiAgbGV0IG5icl9kZWx0YSA9IHZhX21heCAtLiB2YV9taW4gaW5cbiAgbGV0IGRlbHRhX3ZhID1cbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBuYnJfZGVsdGEgd2l0aFxuICAgIHwgRlBfemVybyAtPiAxLlxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gbmJyX2RlbHRhXG4gIGluXG4gIGxldCBuYl9ncmFkID0gY2VpbCAoZmxvYXQgZHJhd19sIC8uIGZsb2F0IG1pbl9ncmFkX2wpIGluXG4gIGxldCBleGFjdF9zdGVwID0gZGVsdGFfdmEgLy4gbmJfZ3JhZCBpblxuICBsZXQgZGVsdGFfZ3JhZCA9IDEwLiAqKiBsb2cxMCBleGFjdF9zdGVwIGluXG4gIGxldCB2YV9taW4nID0gZGVsdGFfZ3JhZCAqLiBmbG9vciAodmFfbWluIC8uIGV4YWN0X3N0ZXApIGluXG4gIGxldCB2YV9tYXgnID1cbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBuYnJfZGVsdGEgd2l0aFxuICAgIHwgRlBfemVybyAtPiB2YV9taW4nICsuIDEuXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPlxuICAgICAgZGVsdGFfZ3JhZCAqLiBjZWlsICh2YV9tYXggLy4gZXhhY3Rfc3RlcClcbiAgaW5cbiAgdmFfbWluJywgaW50X29mX2Zsb2F0IG5iX2dyYWQsIGRlbHRhX2dyYWQsIHZhX21heCdcblxubGV0IGF4aXMgKHcsIGgpIChiX29wLCBiX3csIGJfaCkgZiBsID1cbiAgbGV0IHRfbWF4LCB2YV9taW4sIHZhX21heCA9IGdldF9saW1pdHMgbCBpblxuICBsZXQgZGF0YV93ID0gdyAtIChiX29wICsgYl93KSBpblxuICBsZXQgZGF0YV9oID0gaCAtIChiX29wICsgYl9oKSBpblxuICBsZXQgXywgbmJfdywgZ3JhZF93LCB0X21heCcgPSBncmFkdWF0aW9uX3N0ZXAgZGF0YV93IGJfdyAwLiB0X21heCBpblxuICBsZXQgdmFfbWluJywgbmJfaCwgZ3JhZF9oLCB2YV9tYXgnID1cbiAgICBncmFkdWF0aW9uX3N0ZXAgZGF0YV9oIGJfdyB2YV9taW4gdmFfbWF4XG4gIGluXG4gIGxldCBkcmF3X2Z1biA9XG4gICAgZHJhd19pbl9kYXRhICgodF9tYXgnLCB2YV9taW4nLCB2YV9tYXgnKSwgKGJfdywgaCAtIGJfaCwgZGF0YV93LCBkYXRhX2gpKVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGcgaWQ9XFxcImF4ZXNcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGcgaWQ9XFxcImF4aXNfdmFcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT5PYnNlcnZhYmxlIHZhbHVlczwvdGl0bGU+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHBhdGggZD1cXFwiTSAlaSwlaSBMICVpLCVpXFxcIi8+QF1ALFwiIGJfdyBiX29wIGJfd1xuICAgICAgKGRhdGFfaCArIGJfb3ApXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgdiA9IGdyYWRfaCAqLiBmbG9hdCBpIGluXG4gICAgICAgIGRyYXdfZnVuXG4gICAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGV4dCB4PVxcXCIlZlxcXCIgeT1cXFwiJWZcXFwiPiUuM2c8L3RleHQ+QCxcIiAoeCAtLiA4LilcbiAgICAgICAgICAgICAgICB5IHZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxpbmUgeDE9XFxcIiVmXFxcIiB5MT1cXFwiJWZcXFwiIHgyPVxcXCIlZlxcXCIgeTI9XFxcIiVmXFxcIi8+QCxcIlxuICAgICAgICAgICAgICAoeCAtLiA1LikgeSAoeCArLiA1LikgeSlcbiAgICAgICAgICBOYnIuemVybyAoTmJyLkYgdikpXG4gICAgICAoc3VjYyBuYl9oKVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF08L2c+QCxAWzxodiAyPjxnIGlkPVxcXCJheGlzX3RcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT5UaW1lIChhcmJpdHJhcnkgdW5pdCk8L3RpdGxlPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxwYXRoIGQ9XFxcIk0gJWksJWkgTCAlaSwlaVxcXCIvPkBdQCxcIiBiX3cgKGggLSBiX2gpXG4gICAgICAodyAtIGJfb3ApIChoIC0gYl9oKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHYgPSBncmFkX3cgKi4gZmxvYXQgaSBpblxuICAgICAgICBkcmF3X2Z1blxuICAgICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRleHQgeD1cXFwiJWZcXFwiIHk9XFxcIiVmXFxcIj4lLjNnPC90ZXh0PkAsXCIgeFxuICAgICAgICAgICAgICAgICh5ICsuIDguKSB2XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsaW5lIHgxPVxcXCIlZlxcXCIgeTE9XFxcIiVmXFxcIiB4Mj1cXFwiJWZcXFwiIHkyPVxcXCIlZlxcXCIvPkAsXCJcbiAgICAgICAgICAgICAgeCAoeSAtLiA1LikgeCAoeSArLiA1LikpXG4gICAgICAgICAgKE5ici5GIHYpIChOYnIuRiB2YV9taW4nKSlcbiAgICAgIChzdWNjIG5iX3cpXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXTwvZz5ALDwvZz5ALEAsXCIgaW5cbiAgZHJhd19mdW5cblxubGV0IGRhdGEgZHJhd19mdW4gbCBmIHAgPVxuICBsZXQgb25lX3BvaW50IHMgdCBpIGYgdmEgPVxuICAgIGRyYXdfZnVuXG4gICAgICAoZnVuIHggeSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHVzZSB4bGluazpocmVmPVxcXCIjJXNcXFwiIHg9XFxcIiVmXFxcIiB5PVxcXCIlZlxcXCI+QCxcIlxuICAgICAgICAgICAgc3R5bGVzLihpIG1vZCBBcnJheS5sZW5ndGggc3R5bGVzKVxuICAgICAgICAgICAgeCB5XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXMgdD0lYSB2PSVhPC90aXRsZT5ALDwvdXNlPkBdQCxcIiBzXG4gICAgICAgICAgTmJyLnByZXR0eV9wcmludCB0IE5ici5wcmludCB2YSlcbiAgICAgIHQgdmFcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjxnIGlkPVxcXCJkYXRhXFxcIj5ALCVhPC9nPkAsQCxcIlxuICAgIChQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGkgZiBzIC0+XG4gICAgICAgICBpZiBpID4gMCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICBcIkBbPGh2IDI+PGcgaWQ9XFxcImRhdGFfJWlcXFwiIHN0eWxlPVxcXCJjb2xvcjolc1xcXCI+QCwlYUBdPC9nPkAsXCJcbiAgICAgICAgICAgICAocHJlZCBpKVxuICAgICAgICAgICAgIGNvbG9ycy4oaSBtb2QgQXJyYXkubGVuZ3RoIGNvbG9ycylcbiAgICAgICAgICAgICAoUHAubGlzdCBQcC5lbXB0eSAoZnVuIGYgZSAtPiBvbmVfcG9pbnQgcyBlLigwKSBpIGYgZS4oaSkpKVxuICAgICAgICAgICAgIHApKVxuICAgIGxcblxubGV0IGRyYXcgKCh3LCBoKSBhcyBzaXplKSBib3JkZXIgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxzdmdAIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCJAIFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ4bWxuczp4bGluaz1cXFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1xcXCJAIFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ3aWR0aD1cXFwiJWlcXFwiQCBoZWlnaHQ9XFxcIiVpXFxcIj5AXUAsXCIgdyBoIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lczwvdGl0bGU+QCw8ZGVzY3I+JXM8L2Rlc2NyPkAsQCxcIiBzLnRpdGxlIHMuZGVzY3JcbiAgaW5cbiAgbGV0ICgpID0gc3R5bGUgZiBpblxuICBsZXQgKCkgPSBkZWZzIGYgaW5cbiAgbGV0IGRyYXdfZnVuID0gYXhpcyBzaXplIGJvcmRlciBmIHMucG9pbnRzIGluXG4gIGxldCAoKSA9IGxlZ2VuZCB3IGYgcy5sZWdlbmQgaW5cbiAgbGV0ICgpID0gZGF0YSBkcmF3X2Z1biBzLmxlZ2VuZCBmIHMucG9pbnRzIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCI8L3N2Zz5cIlxuXG5sZXQgdG9fc3RyaW5nID8od2lkdGggPSA4MDApIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IHNpemUgPSB3aWR0aCwgaW50X29mX2Zsb2F0IChmbG9hdCB3aWR0aCAvLiBzcXJ0IDIuKSBpblxuICBsZXQgYm9yZGVyID0gMTAsIDcwLCAyNSBpblxuICBsZXQgKCkgPSBkcmF3IHNpemUgYm9yZGVyIGYgcyBpblxuICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBmICgpIGluXG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCB0b19maWxlIHMgPVxuICBsZXQgZm9ybSwgY2hhbiA9IG5ld19maWxlIHMuZmlsZSBpblxuICBsZXQgc2l6ZSA9IDgwMCwgNjAwIGluXG4gIGxldCBib3JkZXIgPSAxMCwgNzAsIDI1IGluXG4gIGxldCAoKSA9IGRyYXcgc2l6ZSBib3JkZXIgZm9ybSBzIGluXG4gIGNsb3NlX2ZpbGUgZm9ybSBjaGFuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKkV4cGVydCBtb2RlIHZhbHVlcyopXG5sZXQgZGVmYXVsdEV4dEFycmF5U2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdEdyYXBoU2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdExpZnRTZXRTaXplID0gcmVmIDVcbmxldCBkZWZhdWx0SGVhcFNpemUgPSByZWYgNVxubGV0IGRlYnVnX21vZGVPbiA9IHJlZiBmYWxzZVxuXG4oKiBleHBlcnQgb3B0aW9uIGZvciBzdG9yaWVzICopXG5cbigqIE51bWJlciBvZiBwb3RlbnRpYWwgc3RhdGVzIHRoYXQgYXJlIHB1dCBpbiB0aGUgY2FjaGUgcGVyIGJpbmRpbmcgc2l0ZSwgc28gYXMgdG8gaGFuZGxlciB3aXRoIHNpZGUgZWZmZWN0cyBpbiBzdG9yaWVzLiBOb25lIC0+IFVubGltaXRlZCBjYWNoZSAqKVxuXG4oKiogTWVtb3J5ICoqKVxubGV0IGNhY2hlX3NpemUgPSByZWYgKE5vbmUgOiBpbnQgb3B0aW9uKVxuXG4oKiBDdXQgY29uY3VycmVudCBldmVudHMgKGZvciBhbGwgb2JzZXJ2YWJsZXMpIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBibGFja2JvYXJkICopXG5cbigqKiBQcmVjb21wdXRhdGlvbiAqKilcbmxldCBkb19nbG9iYWxfY3V0ID0gdHJ1ZVxuXG4oKiBDdXQgcHNldWRvLWludmVyc2UgZXZlbnRzICopXG5sZXQgY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50ID0gdHJ1ZVxuXG4oKiBDdXQgY29uY3VycmVudCBldmVudHMgKGZvciB0aGUgY3VycmVudCBvYnNlcnZhbGUpIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBibGFja2JvYXJkICopXG5sZXQgZG9fbG9jYWxfY3V0ID0gdHJ1ZVxuXG4oKiBDdXQgc2VwYXJhYmxlIGNvbXBvbmVudHMgKilcbmxldCBkb19kZXRlY3Rfc2VwYXJhYmxlX2NvbXBvbmVudHMgPSB0cnVlXG5cbigqIFdoZW5ldmVyIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgYW4gZXZlbnQgaGFzIHRvIGJlIHNlbGVjdGVkIG9yLCBub3QsIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBub3QgdGhlIGxhc3Qgb25lIHRoYXQgY2FuIHBhcmZvcm0gYSByZXF1ZXN0ZWQgYWN0aW9uICopXG5cbigqKiBQcm9wYWdhdGlvbiBoZXVyaXN0aWNzICoqKVxubGV0IGxvb2tfdXBfZm9yX2JldHRlcl9jdXQgPSB0cnVlXG5cbigqIFdoZW5ldmVyIGFuIGV2ZW50IGlzIHJlbW92ZWQsIGNoZWNrZWQgd2hldGhlciB0aGVyZSBpcyBub3Qgb25seSBvbmUgbGVmdCB0byBwZXJmb3JtIGEgcmVxdWlyZWQgYWN0aW9uICopXG5sZXQgbG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0ID0gdHJ1ZVxubGV0IGxvZ19udW1iZXJfb2ZfY2F1c2FsX2Zsb3dzID0gdHJ1ZVxuXG4oKlVzZXIgZGVmaW5hYmxlIHZhbHVlcyopXG5sZXQgdGltZV9pbmRlcGVuZGVudCA9IHJlZiBmYWxzZVxubGV0IGJsYWNrbGlzdF9ldmVudHMgPSByZWYgZmFsc2VcblxuKCpYTFMgb3V0cHV0IGZvciB0aGUgZ3JpZHMgZHVyaW5nIGNvbXByZXNzaW9uKilcbmxldCBkdW1wX2dyaWRfYmVmb3JlX3dlYWtfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IGR1bXBfZ3JpZF9iZWZvcmVfc3Ryb25nX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ19zdHJvbmdfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IHhsc3dlYWtGaWxlTmFtZSA9IFwiZ3JpZF93ZWFrX2NvbXByZXNzaW9uXCJcbmxldCB4bHNzdHJvbmdGaWxlTmFtZSA9IFwiZ3JpZF9zdHJvbmdfY29tcHJlc3Npb25cIlxubGV0IGdldF9jYWNoZV9zaXplICgpID0gIWNhY2hlX3NpemVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBwcmludF9kZXNjIDogKHN0cmluZywgb3V0X2NoYW5uZWwgKiBGb3JtYXQuZm9ybWF0dGVyKSBIYXNodGJsLnQgPVxuICBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCBzcGVjaWVzX2Rlc2MgOiAoc3RyaW5nLCBvdXRfY2hhbm5lbCAqIEZvcm1hdC5mb3JtYXR0ZXIpIEhhc2h0YmwudCA9XG4gIEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHV1aWQgPSBSYW5kb20uU3RhdGUuYml0cyAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgZ2V0X2Rlc2MgZmlsZSB0YmwgPVxuICB0cnkgc25kIChIYXNodGJsLmZpbmQgdGJsIGZpbGUpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGRfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGUgaW5cbiAgICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gICAgSGFzaHRibC5hZGQgdGJsIGZpbGUgKGRfY2hhbiwgZCk7XG4gICAgZFxuXG5sZXQgY2xvc2VfZGVzYyAoKSA9XG4gIEhhc2h0YmwuaXRlciAoZnVuIF9maWxlIChkX2NoYW4sIF9kKSAtPiBjbG9zZV9vdXQgZF9jaGFuKSBwcmludF9kZXNjO1xuICBIYXNodGJsLml0ZXIgKGZ1biBfZmlsZSAoZF9jaGFuLCBfZCkgLT4gY2xvc2Vfb3V0IGRfY2hhbikgc3BlY2llc19kZXNjXG5cbmxldCBvdXRwdXRfZmx1eCBkaW5fbmFtZSBmbHV4ID1cbiAgS2FwcGFfZmlsZXMud2l0aF9mbHV4IGRpbl9uYW1lXG4gICAgKGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5odG1sXCIgdGhlblxuICAgICAgIEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2h0bWxfZGluIGYgZmx1eClcbiAgICAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuanNvblwiIHRoZW5cbiAgICAgICBmdW4gZCAtPlxuICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIERhdGEud3JpdGVfZGluIGQgZmx1eFxuICAgICBlbHNlXG4gICAgICAgS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfZG90X2RpbiB+dXVpZCBmIGZsdXgpKVxuXG5sZXQgYWN0c0Rlc2NyID0gcmVmIE5vbmVcbmxldCBlbXB0eUFjdHMgPSByZWYgdHJ1ZVxuXG5sZXQgaW5pdF9hY3Rpdml0aWVzIGVudiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgcyAtPlxuICAgIGxldCBub0NvdW50ZXJzID0gIVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gaW5cbiAgICBsZXQgZGVzYyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IHMgaW5cbiAgICBsZXQgZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZGVzYyBpblxuICAgIGxldCBuYl9yID0gTW9kZWwubmJfc3ludGFjdGljX3J1bGVzIGVudiBpblxuICAgIGxldCAoKSA9IGFjdHNEZXNjciA6PSBTb21lIChkZXNjLCBmb3JtLCBuYl9yKSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PntALHJ1bGVzOkBbW1wiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWFcXFwiLEAsXCJcbiAgICAgICAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgeClcbiAgICAgICAgbmJfclxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIlxcXCIlYVxcXCJdQF0sQCxkYXRhOltALFwiXG4gICAgICAoTW9kZWwucHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudilcbiAgICAgIG5iX3JcblxubGV0IGNsb3NlX2FjdGl2aXRpZXMgKCkgPVxuICBtYXRjaCAhYWN0c0Rlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoYywgZiwgXykgLT5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCxdfUBdQC5cIiBpblxuICAgIGNsb3NlX291dCBjXG5cbmxldCBvdXRwdXRfYWN0aXZpdGllcyByIGZsdXggPVxuICBtYXRjaCAhYWN0c0Rlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoXywgZiwgbGFzdCkgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgIWVtcHR5QWN0cyB0aGVuXG4gICAgICAgIGVtcHR5QWN0cyA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLEAsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAW1slaVwiIHIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIGkgPSAwIHRvIGxhc3QgZG9cbiAgICAgICAgbGV0IGssIGsnID0gdHJ5IExpc3QuYXNzb2MgaSBmbHV4IHdpdGggTm90X2ZvdW5kIC0+IDAuLCAwLiBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLCVmXCIgKGsnIC0uIGspXG4gICAgICBkb25lXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiXUBdXCJcblxudHlwZSBmZCA9IHsgZGVzYzogb3V0X2NoYW5uZWw7IGZvcm06IEZvcm1hdC5mb3JtYXR0ZXI7IGlzX3RzdjogYm9vbCB9XG5cbnR5cGUgZm9ybWF0ID1cbiAgfCBTdGFuZEJ5IG9mIChzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgYXJyYXkpXG4gIHwgUmF3IG9mIGZkXG4gIHwgU3ZnIG9mIFBwX3N2Zy5zdG9yZVxuXG5sZXQgcGxvdERlc2NyID0gcmVmIE5vbmVcblxubGV0IGNsb3NlX3Bsb3QgKCkgPVxuICBtYXRjaCAhcGxvdERlc2NyIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoU3RhbmRCeSBfKSAtPiAoKVxuICB8IFNvbWUgKFJhdyBwbG90KSAtPiBjbG9zZV9vdXQgcGxvdC5kZXNjXG4gIHwgU29tZSAoU3ZnIHMpIC0+IFBwX3N2Zy50b19maWxlIHNcblxubGV0IHRyYWNlRGVzY3IgPSByZWYgTm9uZVxubGV0IHRyYWNlTm90RW1wdHkgPSByZWYgZmFsc2VcblxubGV0IGNsb3NlX3RyYWNlICgpID1cbiAgbWF0Y2ggIXRyYWNlRGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRlc2MgLT5cbiAgICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJdXFxufVxcblwiIGluXG4gICAgbGV0ICgpID0gY2xvc2Vfb3V0IGRlc2MgaW5cbiAgICB0cmFjZURlc2NyIDo9IE5vbmVcblxubGV0IGluaXRpYWxpemUgYWN0aXZpdGllc19maWxlIHRyYWNlX2ZpbGUgcGxvdFBhY2sgZW52ID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCB0cmFjZV9maWxlIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPlxuICAgICAgbGV0IGRlc2MgPSBLYXBwYV9maWxlcy5vcGVuX291dCBzIGluXG4gICAgICBsZXQgKCkgPSBUcmFjZS5pbml0X3RyYWNlX2ZpbGUgfnV1aWQgZW52IGRlc2MgaW5cbiAgICAgIHRyYWNlRGVzY3IgOj0gU29tZSBkZXNjXG4gIGluXG4gIGxldCAoKSA9IGluaXRfYWN0aXZpdGllcyBlbnYgYWN0aXZpdGllc19maWxlIGluXG4gIG1hdGNoIHBsb3RQYWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBwYWNrIC0+IHBsb3REZXNjciA6PSBTb21lIChTdGFuZEJ5IHBhY2spXG5cbmxldCBsYXVuY2hfcGxvdCAoZmlsZW5hbWUsIHRpdGxlLCBoZWFkKSA9XG4gIGxldCBmb3JtYXQgPVxuICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlbmFtZSBcIi5zdmdcIiB0aGVuXG4gICAgICBTdmdcbiAgICAgICAge1xuICAgICAgICAgIFBwX3N2Zy5maWxlID0gZmlsZW5hbWU7XG4gICAgICAgICAgUHBfc3ZnLnRpdGxlO1xuICAgICAgICAgIFBwX3N2Zy5kZXNjciA9IFwiXFxcInV1aWRcXFwiIDogXFxcIlwiIF4gc3RyaW5nX29mX2ludCB1dWlkIF4gXCJcXFwiXCI7XG4gICAgICAgICAgUHBfc3ZnLmxlZ2VuZCA9IGhlYWQ7XG4gICAgICAgICAgUHBfc3ZnLnBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgZmlsZW5hbWUgaW5cbiAgICAgIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgICAgIGxldCBpc190c3YgPSBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZW5hbWUgXCIudHN2XCIgaW5cbiAgICAgIGxldCAoKSA9IGlmIG5vdCBpc190c3YgdGhlbiBGb3JtYXQuZnByaW50ZiBkIFwiIyAlc0AuXCIgdGl0bGUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIG5vdCBpc190c3YgdGhlbiBGb3JtYXQuZnByaW50ZiBkIFwiIyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiQC5cIiB1dWlkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRGF0YS5wcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2IGQgaGVhZCBpblxuICAgICAgUmF3IHsgZGVzYyA9IGRfY2hhbjsgZm9ybSA9IGQ7IGlzX3RzdiB9XG4gICAgKVxuICBpblxuICBwbG90RGVzY3IgOj0gU29tZSBmb3JtYXRcblxubGV0IHJlYyBwbG90X25vdyBsID1cbiAgbWF0Y2ggIXBsb3REZXNjciB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIChTdGFuZEJ5IHApIC0+XG4gICAgbGV0ICgpID0gbGF1bmNoX3Bsb3QgcCBpblxuICAgIHBsb3Rfbm93IGxcbiAgfCBTb21lIChSYXcgZmQpIC0+XG4gICAgRGF0YS5wcmludF9wbG90X2xpbmUgfmlzX3RzdjpmZC5pc190c3YgTmJyLnByaW50X29wdGlvbiBmZC5mb3JtIGxcbiAgfCBTb21lIChTdmcgcykgLT4gcy5QcF9zdmcucG9pbnRzIDwtIGwgOjogcy5QcF9zdmcucG9pbnRzXG5cbmxldCBzbmFwc2hvdCBmaWxlIHMgPVxuICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZSBcIi5kb3RcIiB0aGVuXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmRvdFwiIHMuRGF0YS5zbmFwc2hvdF9ldmVudFxuICAgICAgKEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2RvdF9zbmFwc2hvdCB+dXVpZCBmIHMpKVxuICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlIFwiLmpzb25cIiB0aGVuXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmpzb25cIiBzLkRhdGEuc25hcHNob3RfZXZlbnQgKGZ1biBkIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX3RvX2NoYW5uZWwgRGF0YS53cml0ZV9zbmFwc2hvdCBkIHMpXG4gIGVsc2VcbiAgICBLYXBwYV9maWxlcy53aXRoX3NuYXBzaG90IGZpbGUgXCIua2FcIiBzLkRhdGEuc25hcHNob3RfZXZlbnRcbiAgICAgIChLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9zbmFwc2hvdCB+dXVpZCBmIHMpKVxuXG5sZXQgcHJpbnRfc3BlY2llcyB0aW1lIGYgbWl4dHVyZSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlZzogQFs8aD4lYUBdQC5cIiB0aW1lIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4dHVyZVxuXG5sZXQgd2FybmluZ19idWZmZXIgOiAoTG9jLnQgb3B0aW9uICogKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkpIGxpc3QgcmVmID1cbiAgcmVmIFtdXG5cbmxldCBnbyA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5TbmFwc2hvdCAoZiwgcykgLT4gc25hcHNob3QgZiBzXG4gIHwgRGF0YS5ESU4gKG4sIGYpIC0+IG91dHB1dF9mbHV4IG4gZlxuICB8IERhdGEuRGVsdGFBY3Rpdml0aWVzIChyLCBmbHV4KSAtPiBvdXRwdXRfYWN0aXZpdGllcyByIGZsdXhcbiAgfCBEYXRhLlBsb3QgeCAtPiBwbG90X25vdyB4XG4gIHwgRGF0YS5QcmludCBwIC0+XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggcC5EYXRhLmZpbGVfbGluZV9uYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIHN0ZG91dFxuICAgICAgfCBTb21lIGZpbGUgLT4gZ2V0X2Rlc2MgZmlsZSBwcmludF9kZXNjXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiJXNALlwiIHAuRGF0YS5maWxlX2xpbmVfdGV4dFxuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LnByaW50ZiBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gd2FybmluZ19idWZmZXIgOj0gKHBvcywgbXNnKSA6OiAhd2FybmluZ19idWZmZXJcbiAgfCBEYXRhLlRyYWNlU3RlcCBzdGVwIC0+XG4gICAgKG1hdGNoICF0cmFjZURlc2NyIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgIXRyYWNlTm90RW1wdHkgdGhlblxuICAgICAgICAgIG91dHB1dF9jaGFyIGQgJywnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0cmFjZU5vdEVtcHR5IDo9IHRydWVcbiAgICAgIGluXG4gICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIFRyYWNlLndyaXRlX3N0ZXAgZCBzdGVwKVxuICB8IERhdGEuU3BlY2llcyAoZmlsZSwgdGltZSwgbWl4dHVyZSkgLT5cbiAgICBsZXQgZGVzYyA9IGdldF9kZXNjIGZpbGUgc3BlY2llc19kZXNjIGluXG4gICAgcHJpbnRfc3BlY2llcyB0aW1lIGRlc2MgbWl4dHVyZVxuXG5sZXQgaW5wdXRzRGVzYyA9IHJlZiBOb25lXG5cbmxldCBmbHVzaF93YXJuaW5nICgpID1cbiAgbGV0IGwgPSBMaXN0LnJldiAhd2FybmluZ19idWZmZXIgaW5cbiAgbGV0ICgpID0gd2FybmluZ19idWZmZXIgOj0gW10gaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIEZvcm1hdC5lcnJfZm9ybWF0dGVyIG1zZylcbiAgICBsXG5cbmxldCBjbG9zZV9pbnB1dCA/ZXZlbnQgKCkgPVxuICBtYXRjaCAhaW5wdXRzRGVzYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaW5wdXRzIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAgICAgKEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzKVxuICAgICAgICAgIFwiQC4lJW1vZDogW0VdID0gJWkgZG8gJFNUT1A7QC5cIiBldmVudFxuICAgIGluXG4gICAgY2xvc2Vfb3V0IGlucHV0c1xuXG5sZXQgY2xvc2UgP2V2ZW50ICgpID1cbiAgbGV0ICgpID0gY2xvc2VfcGxvdCAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV90cmFjZSAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV9hY3Rpdml0aWVzICgpIGluXG4gIGxldCAoKSA9IGZsdXNoX3dhcm5pbmcgKCkgaW5cbiAgbGV0ICgpID0gY2xvc2VfaW5wdXQgP2V2ZW50ICgpIGluXG4gIGNsb3NlX2Rlc2MgKClcblxubGV0IGluaXRpYWxfaW5wdXRzIGNvbmYgZW52IGluaXQgfmZpbGVuYW1lID1cbiAgbGV0IGlucHV0cyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0X2ZyZXNoIGZpbGVuYW1lIFtdIFwiXCIgXCIua2FcIiBpblxuICBsZXQgaW5wdXRzX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGlucHV0cyBpblxuICBsZXQgKCkgPSBEYXRhLnByaW50X2luaXRpYWxfaW5wdXRzIH51dWlkIGNvbmYgZW52IGlucHV0c19mb3JtIGluaXQgaW5cbiAgaW5wdXRzRGVzYyA6PSBTb21lIGlucHV0c1xuXG5sZXQgaW5wdXRfbW9kaWZpY2F0aW9ucyBlbnYgZXZlbnQgbW9kcyA9XG4gIG1hdGNoICFpbnB1dHNEZXNjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpbnB1dHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzKVxuICAgICAgXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiIGV2ZW50XG4gICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgIChLYXBwYV9wcmludGVyLm1vZGlmaWNhdGlvbiB+bm9Db3VudGVyczohUGFyYW1ldGVyLmRlYnVnX21vZGVPbiB+ZW52KSlcbiAgICAgIG1vZHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZGlyZWN0aXZlX3VuaXQgPSBUaW1lIHwgRXZlbnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGFsZ192YXJfb3ZlcndyaXRlOiAoc3RyaW5nICogTmJyLnQpIGxpc3Q7XG4gIG11dGFibGUgbWFyc2hhbGl6ZWRJbkZpbGU6IHN0cmluZztcbiAgbXV0YWJsZSBpbml0aWFsTWl4OiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIHJlc2NhbGU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBzZWVkVmFsdWU6IGludCBvcHRpb247XG4gIG11dGFibGUgdW5pdDogZGlyZWN0aXZlX3VuaXQ7XG4gIG11dGFibGUgbWFyc2hhbGl6ZU91dEZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgZG9tYWluT3V0cHV0RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSB0cmFjZUZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgbG9nRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBjb21waWxlX21vZGU6IGJvb2w7XG4gIG11dGFibGUgc2hhcmluZzogUGF0dGVybi5zaGFyaW5nX2xldmVsO1xuICBtdXRhYmxlIHNob3dFZmZpY2llbmN5OiBib29sO1xuICBtdXRhYmxlIHRpbWVJbmRlcGVuZGVudDogYm9vbDtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGFsZ192YXJfb3ZlcndyaXRlID0gW107XG4gICAgcmVzY2FsZSA9IE5vbmU7XG4gICAgbWFyc2hhbGl6ZWRJbkZpbGUgPSBcIlwiO1xuICAgIGluaXRpYWxNaXggPSBOb25lO1xuICAgIHNlZWRWYWx1ZSA9IE5vbmU7XG4gICAgdW5pdCA9IFRpbWU7XG4gICAgbWFyc2hhbGl6ZU91dEZpbGUgPSBOb25lO1xuICAgIGRvbWFpbk91dHB1dEZpbGUgPSBOb25lO1xuICAgIHRyYWNlRmlsZSA9IE5vbmU7XG4gICAgbG9nRmlsZSA9IFNvbWUgXCJpbnB1dHNcIjtcbiAgICBjb21waWxlX21vZGUgPSBmYWxzZTtcbiAgICBzaGFyaW5nID0gUGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zO1xuICAgIHNob3dFZmZpY2llbmN5ID0gZmFsc2U7XG4gICAgdGltZUluZGVwZW5kZW50ID0gZmFsc2U7XG4gIH1cblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6IChzdHJpbmcgKiBBcmcuc3BlYyAqIHN0cmluZykgbGlzdCA9XG4gIFtcbiAgICAoIFwiLW1peHR1cmVcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBmaWMgLT4gdC5pbml0aWFsTWl4IDwtIFNvbWUgZmljKSxcbiAgICAgIFwiVGFrZSB0aGUgaW5pdGlhbCBzdGF0ZSBmcm9tIHRoaXMgZmlsZSAoaWdub3JlICVpbml0IGZyb20gb3RoZXIgZmlsZXMpXCIgKTtcbiAgICAoIFwiLXZhclwiLFxuICAgICAgQXJnLlR1cGxlXG4gICAgICAgIChsZXQgdG1wX3Zhcl9uYW1lID0gcmVmIFwiXCIgaW5cbiAgICAgICAgIFtcbiAgICAgICAgICAgQXJnLlN0cmluZyAoZnVuIG5hbWUgLT4gdG1wX3Zhcl9uYW1lIDo9IG5hbWUpO1xuICAgICAgICAgICBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgKGZ1biB2YXJfdmFsIC0+XG4gICAgICAgICAgICAgICB0LmFsZ192YXJfb3ZlcndyaXRlIDwtXG4gICAgICAgICAgICAgICAgICggIXRtcF92YXJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICB0cnkgTmJyLm9mX3N0cmluZyB2YXJfdmFsXG4gICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChBcmcuQmFkIChcIlxcXCJcIiBeIHZhcl92YWwgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcIikpIClcbiAgICAgICAgICAgICAgICAgOjogdC5hbGdfdmFyX292ZXJ3cml0ZSk7XG4gICAgICAgICBdKSxcbiAgICAgIFwiU2V0IGEgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZVwiICk7XG4gICAgKCBcIi1sb2FkLXNpbVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIGZpbGUgLT4gdC5tYXJzaGFsaXplZEluRmlsZSA8LSBmaWxlKSxcbiAgICAgIFwibG9hZCBzaW11bGF0aW9uIHBhY2thZ2UgaW5zdGVhZCBvZiBrYXBwYSBmaWxlc1wiICk7XG4gICAgKCBcIi1yZXNjYWxlXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biBpIC0+IHQucmVzY2FsZSA8LSBTb21lIGkpLFxuICAgICAgXCJBcHBseSByZXNjYWxpbmcgZmFjdG9yIHRvIGluaXRpYWwgY29uZGl0aW9uXCIgKTtcbiAgICAoIFwiLXVcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXCJ0aW1lXCIgfCBcIlRpbWVcIiB8IFwidFwiIC0+IHQudW5pdCA8LSBUaW1lXG4gICAgICAgIHwgXCJldmVudFwiIHwgXCJldmVudHNcIiB8IFwiZVwiIHwgXCJFdmVudFwiIHwgXCJFdmVudHNcIiAtPiB0LnVuaXQgPC0gRXZlbnRcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlVucmVjb2duaXplZCB1bml0OiBcIiBeIHMpKSksXG4gICAgICBcInVuaXQgKHRpbWUvZXZlbnQpIGluIHdoaWNoIGxpbWl0IGFuZCBwbG90IHBlcmlvZCBhcmUgc3BlY2lmaWVkXCIgKTtcbiAgICAoIFwiLWVcIixcbiAgICAgIEFyZy5JbnRcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAoXCJPcHRpb24gJy1lJyBoYXMgYmVlbiByZXBsYWNlIGJ5ICctdSBldmVudCAtbCBcIlxuICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgZSBeIFwiJ1wiKSkpLFxuICAgICAgXCJEZXByZWNhdGVkIG9wdGlvblwiICk7XG4gICAgKCBcIi1tYWtlLXNpbVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIG1hcnNoYWxpemVPdXRGaWxlIC0+IHQubWFyc2hhbGl6ZU91dEZpbGUgPC0gU29tZSBtYXJzaGFsaXplT3V0RmlsZSksXG4gICAgICBcInNhdmUga2FwcGEgZmlsZXMgYXMgYSBzaW11bGF0aW9uIHBhY2thZ2VcIiApO1xuICAgICggXCItZHVtcC1jY1wiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIGRvbWFpbk91dHB1dEZpbGUgLT4gdC5kb21haW5PdXRwdXRGaWxlIDwtIFNvbWUgZG9tYWluT3V0cHV0RmlsZSksXG4gICAgICBcImZpbGUgbmFtZSBmb3IgZHVtcGluZyB0aGUgZG9tYWluIG9mIG9ic2VydmFibGVzXCIgKTtcbiAgICAoIFwiLXRyYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gdHJhY2VGaWxlIC0+IHQudHJhY2VGaWxlIDwtIFNvbWUgdHJhY2VGaWxlKSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkdW1waW5nIHRoZSBzaW11bGF0aW9uIHRyYWNlXCIgKTtcbiAgICAoIFwiLS10aW1lLWluZGVwZW5kZW50XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQudGltZUluZGVwZW5kZW50IDwtIHRydWUpLFxuICAgICAgXCJEaXNhYmxlIHRoZSB1c2Ugb2YgdGltZSBpcyBzdG9yeSBoZXVyaXRpY3MgKGZvciB0ZXN0IHN1aXRlKVwiICk7XG4gICAgKCBcIi1zZWVkXCIsXG4gICAgICBBcmcuSW50IChmdW4gaSAtPiB0LnNlZWRWYWx1ZSA8LSBTb21lIGkpLFxuICAgICAgXCJTZWVkIGZvciB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcIiApO1xuICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5zaG93RWZmaWNpZW5jeSA8LSB0cnVlKSxcbiAgICAgIFwiS2FTaW0gdGVsbHMgaG93IGZhc3QgaXQgcnVuc1wiICk7XG4gICAgKCBcIi1zaGFyaW5nXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwibm9cIiB8IFwibm9uZVwiIHwgXCJOb25lXCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTm9fc2hhcmluZ1xuICAgICAgICB8IFwiQ29tcGF0aWJsZVwiIC0+IHQuc2hhcmluZyA8LSBQYXR0ZXJuLk1heF9zaGFyaW5nXG4gICAgICAgIHwgXCJtYXhcIiB8IFwiTWF4XCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTWF4X3NoYXJpbmdcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlVucmVjb2duaXplZCBzaGFyaW5nIGxldmVsOiBcIiBeIHMpKSksXG4gICAgICBcIkxldmVsIG9mIHNoYXJpbmcgY29tcHV0ZWQgYmV0d2VlbiBwYXR0ZXJucyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gXFxcbiAgICAgICAoTm9uZS9Db21wYXRpYmxlL01heClcIiApO1xuICAgICggXCItLWNvbXBpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5jb21waWxlX21vZGUgPC0gdHJ1ZSksXG4gICAgICBcIkRpc3BsYXkgcnVsZSBjb21waWxhdGlvbiBhcyBhY3Rpb24gbGlzdFwiICk7XG4gICAgKCBcIi1sb2dcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBsb2dGaWxlIC0+IHQubG9nRmlsZSA8LSBTb21lIGxvZ0ZpbGUpLFxuICAgICAgXCJmaWxlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcmVnZW5lcmF0ZSB0aGUgZXhhY3Qgc2FtZSBzaW11bGF0aW9uXCIgKTtcbiAgICAoIFwiLS1uby1sb2dcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5sb2dGaWxlIDwtIE5vbmUpLFxuICAgICAgXCJEbyBub3QgZ2VuZXJhdGUgYSBmaWxlIHRvIHJlZG8gdGhlIGV4YWN0IHNhbWUgc2ltdWxhdGlvblwiICk7XG4gIF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcHJlcHJvY2Vzc2VkX2FzdCA9IHtcbiAgY29uZjogQ29uZmlndXJhdGlvbi50O1xuICBzdG9yeV9jb21wcmVzc2lvbjogYm9vbCAqIGJvb2wgKiBib29sO1xuICBmb3JtYXRDZmxvdzogc3RyaW5nO1xuICBjZmxvd0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIGFzdF9jb21waWxlZF9kYXRhOiBMS2FwcGFfY29tcGlsZXIuYXN0X2NvbXBpbGVkX2RhdGE7XG4gIG92ZXJ3cml0ZV9pbml0OlxuICAgIChMS2FwcGEucnVsZV9taXh0dXJlLCBSYXdfbWl4dHVyZS50LCBpbnQpIEFzdC5pbml0X3N0YXRlbWVudCBsaXN0IG9wdGlvbjtcbiAgb3ZlcndyaXRlX3QwOiBmbG9hdCBvcHRpb247XG59XG5cbnR5cGUgY29tcGlsYXRpb25fcmVzdWx0ID0ge1xuICBjb25mOiBDb25maWd1cmF0aW9uLnQ7XG4gIGNvdW50ZXJzX2luZm86IENvdW50ZXJzX2luZm8udDtcbiAgZW52OiBNb2RlbC50O1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgdXBkYXRlZF9hbGdfdmFyczogaW50IGxpc3Q7XG4gIHN0b3J5X2NvbXByZXNzaW9uOiAoYm9vbCAqIGJvb2wgKiBib29sKSBvcHRpb247XG4gIGZvcm1hdENmbG93OiBzdHJpbmc7XG4gIGNmbG93RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgaW5pdF9sOiAoUHJpbWl0aXZlcy5hbGdfZXhwciAqIFByaW1pdGl2ZXMuZWxlbWVudGFyeV9ydWxlKSBsaXN0O1xuICBjb3VudGVyX29wdDogQ291bnRlci50IG9wdGlvbjtcbn1cblxubGV0IHByZXByb2Nlc3NfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlID9rYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgKGFzdCA6IChfLCBfLCBfLCBfLCBfLCBfKSBBc3QuY29tcGlsKSA6IHByZXByb2Nlc3NlZF9hc3QgPVxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBzaW11bGF0aW9uIHBhcmFtZXRlcnNALlwiIGluXG4gIGxldCBjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIGNmbG93RmlsZSA9XG4gICAgQ29uZmlndXJhdGlvbi5wYXJzZSBhc3QuQXN0LmNvbmZpZ3VyYXRpb25zXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcmludGYgXCIrIFNhbml0eSBjaGVja3NALlwiIGluXG4gIGxldCBzeW50YXhfdmVyc2lvbiA9IGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uIGluXG4gIGxldCB2YXJfb3ZlcndyaXRlLCBpbml0aWFsTWl4ID1cbiAgICBtYXRjaCBrYXNpbV9hcmdzIHdpdGhcbiAgICB8IE5vbmUgLT4gW10sIE5vbmVcbiAgICB8IFNvbWUga2FzaW1fYXJncyAtPlxuICAgICAga2FzaW1fYXJncy5LYXNpbV9hcmdzLmFsZ192YXJfb3ZlcndyaXRlLCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuaW5pdGlhbE1peFxuICBpblxuICBsZXQgYXN0X2NvbXBpbGVkX2RhdGEgOiBMS2FwcGFfY29tcGlsZXIuYXN0X2NvbXBpbGVkX2RhdGEgPVxuICAgIExLYXBwYV9jb21waWxlci5jb21waWxfb2ZfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIH5zeW50YXhfdmVyc2lvblxuICAgICAgfnZhcl9vdmVyd3JpdGUgYXN0XG4gIGluXG4gIGxldCBvdmVyd3JpdGVfaW5pdCwgb3ZlcndyaXRlX3QwID1cbiAgICBtYXRjaCBpbml0aWFsTWl4IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSBmaWxlIC0+XG4gICAgICBsZXQgY29tcGlsID1cbiAgICAgICAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICAgICAgICB8IEFzdC5WNCAtPiBLbGV4ZXI0LmNvbXBpbGUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgQXN0LmVtcHR5X2NvbXBpbCBmaWxlXG4gICAgICAgIHwgQXN0LlYzIC0+XG4gICAgICAgICAgS2FwcGFMZXhlci5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyIEFzdC5lbXB0eV9jb21waWwgZmlsZVxuICAgICAgaW5cbiAgICAgIGxldCBjb25mLCBfLCBfLCBfID0gQ29uZmlndXJhdGlvbi5wYXJzZSBjb21waWwuQXN0LmNvbmZpZ3VyYXRpb25zIGluXG4gICAgICAoIFNvbWVcbiAgICAgICAgICAoTEthcHBhX2NvbXBpbGVyLmluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmFnZW50c19zaWcgYXN0X2NvbXBpbGVkX2RhdGEuY291bnRlcnNfaW5mb1xuICAgICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXMuTmFtZWREZWNscy5maW5kZXJcbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hbGdfdmFyc19maW5kZXIgY29tcGlsLkFzdC5pbml0KSxcbiAgICAgICAgY29uZi5Db25maWd1cmF0aW9uLmluaXRpYWwgKVxuICBpblxuICB7XG4gICAgY29uZjtcbiAgICBzdG9yeV9jb21wcmVzc2lvbjtcbiAgICBmb3JtYXRDZmxvdztcbiAgICBjZmxvd0ZpbGU7XG4gICAgYXN0X2NvbXBpbGVkX2RhdGE7XG4gICAgb3ZlcndyaXRlX2luaXQ7XG4gICAgb3ZlcndyaXRlX3QwO1xuICB9XG5cbmxldCBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBzeW50YXhfdmVyc2lvbiBmaWxlX2xpc3QgPVxuICBsZXQgY29tcGlsaW5nX2Z1bmN0aW9uID1cbiAgICBtYXRjaCBzeW50YXhfdmVyc2lvbiB3aXRoXG4gICAgfCBBc3QuVjQgLT4gS2xleGVyNC5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gICAgfCBBc3QuVjMgLT4gS2FwcGFMZXhlci5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0IGNvbXBpbGluZ19mdW5jdGlvbiBBc3QuZW1wdHlfY29tcGlsIGZpbGVfbGlzdFxuXG5sZXQgZ2V0X2FzdF9mcm9tX2NsaV9hcmdzIGNsaV9hcmdzID1cbiAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb25cbiAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lc1xuXG5sZXQgZ2V0X3ByZXByb2Nlc3NlZF9hc3RfZnJvbV9jbGlfYXJncyB+d2FybmluZyB+ZGVidWdfbW9kZVxuICAgID8oa2FzaW1fYXJncyA9IEthc2ltX2FyZ3MuZGVmYXVsdCkgY2xpX2FyZ3MgPVxuICBsZXQgYXN0IDpcbiAgICAgICggQXN0LmFnZW50LFxuICAgICAgICBBc3QuYWdlbnRfc2lnLFxuICAgICAgICBBc3QubWl4dHVyZSxcbiAgICAgICAgQXN0Lm1peHR1cmUsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgQXN0LnJ1bGUgKVxuICAgICAgQXN0LmNvbXBpbCA9XG4gICAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb25cbiAgICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5pbnB1dEthcHBhRmlsZU5hbWVzXG4gIGluXG4gIHByZXByb2Nlc3NfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIGNsaV9hcmdzIH5rYXNpbV9hcmdzIGFzdFxuXG50eXBlIGNvbXBpbGF0aW9uX3BhY2sgPSB7XG4gIGNvbXBpbGF0aW9uX3Jlc3VsdDogY29tcGlsYXRpb25fcmVzdWx0O1xuICBhbGdfb3ZlcndyaXRlOiAoaW50ICogUHJpbWl0aXZlcy5hbGdfZXhwcikgbGlzdDtcbiAgb3ZlcndyaXRlX3QwOiBmbG9hdCBvcHRpb247XG59XG5cbmxldCBnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3Qga2FzaW1fYXJncyB+KGNvbXBpbGVfbW9kZV9vbiA6IGJvb2wpXG4gICAgKHByZXByb2Nlc3NlZF9hc3QgOiBwcmVwcm9jZXNzZWRfYXN0KSA6IGNvbXBpbGF0aW9uX3BhY2sgPVxuICBsZXQgbiwgdywgcyA9IHByZXByb2Nlc3NlZF9hc3Quc3RvcnlfY29tcHJlc3Npb24gaW5cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgQ29tcGlsaW5nLi4uQC5cIiBpblxuICBsZXQgZW52LCBoYXNfdHJhY2tpbmcsIGluaXRfbCA9XG4gICAgRXZhbC5jb21waWxlIH5vdXRwdXRzOk91dHB1dHMuZ29cbiAgICAgIH5wYXVzZTooZnVuIGYgLT4gZiAoKSlcbiAgICAgIH5yZXR1cm46KGZ1biB4IC0+IHgpXG4gICAgICB+ZGVidWdfbW9kZTohUGFyYW1ldGVyLmRlYnVnX21vZGVPbiB+c2hhcmluZzprYXNpbV9hcmdzLkthc2ltX2FyZ3Muc2hhcmluZ1xuICAgICAgP3Jlc2NhbGVfaW5pdDprYXNpbV9hcmdzLkthc2ltX2FyZ3MucmVzY2FsZVxuICAgICAgP292ZXJ3cml0ZV9pbml0OnByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX2luaXRcbiAgICAgID9vdmVyd3JpdGVfdDA6cHJlcHJvY2Vzc2VkX2FzdC5vdmVyd3JpdGVfdDAgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvdW50ZXJzX2luZm9cbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXNcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXBcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEucmVzdWx0XG4gIGluXG4gIGxldCBzdG9yeV9jb21wcmVzc2lvbiA9XG4gICAgaWYgaGFzX3RyYWNraW5nICYmIChuIHx8IHcgfHwgcykgdGhlblxuICAgICAgU29tZSBwcmVwcm9jZXNzZWRfYXN0LnN0b3J5X2NvbXByZXNzaW9uXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICBpblxuICB7XG4gICAgY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgICAgIHtcbiAgICAgICAgY29uZiA9IHByZXByb2Nlc3NlZF9hc3QuY29uZjtcbiAgICAgICAgZW52O1xuICAgICAgICBjb3VudGVyc19pbmZvID0gcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS5jb3VudGVyc19pbmZvO1xuICAgICAgICBjb250YWN0X21hcCA9IHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXA7XG4gICAgICAgIHVwZGF0ZWRfYWxnX3ZhcnMgPSBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnVwZGF0ZWRfYWxnX3ZhcnM7XG4gICAgICAgIHN0b3J5X2NvbXByZXNzaW9uO1xuICAgICAgICBmb3JtYXRDZmxvdyA9IHByZXByb2Nlc3NlZF9hc3QuZm9ybWF0Q2Zsb3c7XG4gICAgICAgIGNmbG93RmlsZSA9IHByZXByb2Nlc3NlZF9hc3QuY2Zsb3dGaWxlO1xuICAgICAgICBpbml0X2w7XG4gICAgICAgIGNvdW50ZXJfb3B0ID0gTm9uZTtcbiAgICAgIH07XG4gICAgYWxnX292ZXJ3cml0ZSA9IFtdO1xuICAgIG92ZXJ3cml0ZV90MCA9IHByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX3QwO1xuICB9XG5cbmxldCBnZXRfcGFja19mcm9tX21hcnNoYWxpemVkZmlsZSB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzIG1hcnNoYWxpemVkX2ZpbGVcbiAgICA6IGNvbXBpbGF0aW9uX3BhY2sgPVxuICBhc3NlcnQgKG1hcnNoYWxpemVkX2ZpbGUgPD4gXCJcIik7XG4gIHRyeVxuICAgIGxldCBkID0gb3Blbl9pbl9iaW4gbWFyc2hhbGl6ZWRfZmlsZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lcyA8PiBbXSB0aGVuXG4gICAgICAgIHdhcm5pbmcgfnBvczpMb2MuZHVtbXkgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgXCJTaW11bGF0aW9uIHBhY2thZ2UgbG9hZGVkLCBhbGwga2FwcGEgZmlsZXMgYXJlIGlnbm9yZWRcIilcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQucHJpbnRmIFwiKyBMb2FkaW5nIHNpbXVsYXRpb24gcGFja2FnZSAlcy4uLkAuXCIgbWFyc2hhbGl6ZWRfZmlsZVxuICAgIGluXG4gICAgbGV0IGNvbXBpbGF0aW9uX3Jlc3VsdCA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9IE1hcnNoYWwuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBTdGRsaWIuY2xvc2VfaW4gZCBpblxuICAgIGxldCBhbGdfb3ZlcndyaXRlID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKHMsIHYpIC0+XG4gICAgICAgICAgKCBNb2RlbC5udW1fb2ZfYWxnIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBzKSBjb21waWxhdGlvbl9yZXN1bHQuZW52LFxuICAgICAgICAgICAgQWxnX2V4cHIuQ09OU1QgdiApKVxuICAgICAgICBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuYWxnX3Zhcl9vdmVyd3JpdGVcbiAgICBpblxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5pbml0aWFsTWl4IHdpdGhcbiAgICB8IE5vbmUgLT4geyBjb21waWxhdGlvbl9yZXN1bHQ7IGFsZ19vdmVyd3JpdGU7IG92ZXJ3cml0ZV90MCA9IE5vbmUgfVxuICAgIHwgU29tZSBmaWxlIC0+XG4gICAgICBsZXQgY29tcGlsID1cbiAgICAgICAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb24gWyBmaWxlIF1cbiAgICAgIGluXG4gICAgICBsZXQgb3ZlcndyaXRlX3QwIDogZmxvYXQgb3B0aW9uID1cbiAgICAgICAgKENvbmZpZ3VyYXRpb24ucGFyc2UgY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyB8PiBmdW4gKGEsIF8sIF8sIF8pIC0+IGEpXG4gICAgICAgIHw+IGZ1biBjb25mIC0+IGNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsXG4gICAgICBpblxuXG4gICAgICBsZXQgcmF3X2luaXRzID1cbiAgICAgICAgTEthcHBhX2NvbXBpbGVyLmluaXRfb2ZfYXN0IH53YXJuaW5nXG4gICAgICAgICAgfnN5bnRheF92ZXJzaW9uOmNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uXG4gICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICBjb21waWxhdGlvbl9yZXN1bHQuY291bnRlcnNfaW5mbyBjb21waWxhdGlvbl9yZXN1bHQuY29udGFjdF9tYXBcbiAgICAgICAgICAoTW9kZWwudG9rZW5zX2ZpbmRlciBjb21waWxhdGlvbl9yZXN1bHQuZW52KVxuICAgICAgICAgIChNb2RlbC5hbGdzX2ZpbmRlciBjb21waWxhdGlvbl9yZXN1bHQuZW52KVxuICAgICAgICAgIGNvbXBpbC5Bc3QuaW5pdFxuICAgICAgaW5cbiAgICAgIGxldCBpbml0X2wgPVxuICAgICAgICBFdmFsLmNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGU6IVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gfndhcm5pbmdcbiAgICAgICAgICA/cmVzY2FsZTprYXNpbV9hcmdzLkthc2ltX2FyZ3MucmVzY2FsZSB+Y29tcGlsZV9tb2RlX29uOmZhbHNlXG4gICAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0LmNvbnRhY3RfbWFwIGNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYgcmF3X2luaXRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBjb21waWxhdGlvbl9yZXN1bHQgPSB7IGNvbXBpbGF0aW9uX3Jlc3VsdCB3aXRoIGluaXRfbCB9O1xuICAgICAgICBhbGdfb3ZlcndyaXRlO1xuICAgICAgICBvdmVyd3JpdGVfdDA7XG4gICAgICB9XG4gIHdpdGhcbiAgfCBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIF8gYXMgZSAtPiByYWlzZSBlXG4gIHwgZXhuIC0+XG4gICAgRm9ybWF0LnByaW50ZlxuICAgICAgXCJTaW11bGF0aW9uIHBhY2thZ2Ugc2VlbXMgdG8gaGF2ZSBiZWVuIGNyZWF0ZWQgd2l0aCBhIGRpZmZlcmVudCB2ZXJzaW9uIFxcXG4gICAgICAgb2YgS2FTaW0sIGFib3J0aW5nLi4uXCI7XG4gICAgRm9ybWF0LmVwcmludGYgXCJFeGNlcHRpb24gcmFpc2VkIHdoZW4gb3BlbmluZyBtYXJzaGFsaXplZCBmaWxlOiBcIjtcbiAgICBVdGlscy5wcF9leGNlcHRpb24gRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIGV4aXQgMVxuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgKHBhY2sgOiBjb21waWxhdGlvbl9wYWNrKSA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gIGxldCBpbml0X3RfZnJvbV9maWxlcyA9XG4gICAgT3B0aW9uX3V0aWwudW5zb21lXG4gICAgICAoT3B0aW9uX3V0aWwudW5zb21lIDAuIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsKVxuICAgICAgcGFjay5vdmVyd3JpdGVfdDBcbiAgaW5cbiAgbGV0IGluaXRfdCwgbWF4X3RpbWUsIGluaXRfZSwgbWF4X2V2ZW50LCBwbG90X3BlcmlvZCA9XG4gICAgbWF0Y2gga2FzaW1fYXJncy5LYXNpbV9hcmdzLnVuaXQgd2l0aFxuICAgIHwgS2FzaW1fYXJncy5UaW1lIC0+XG4gICAgICAoIE9wdGlvbl91dGlsLnVuc29tZSBpbml0X3RfZnJvbV9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWluVmFsdWUsXG4gICAgICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5tYXhWYWx1ZSxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgKG1hdGNoIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5wbG90UGVyaW9kIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gQ29uZmlndXJhdGlvbi5EVCBhXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoQ29uZmlndXJhdGlvbi5EVCAxLilcbiAgICAgICAgICAgIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5wbG90UGVyaW9kKSApXG4gICAgfCBLYXNpbV9hcmdzLkV2ZW50IC0+XG4gICAgICAoIGluaXRfdF9mcm9tX2ZpbGVzLFxuICAgICAgICBOb25lLFxuICAgICAgICBTb21lXG4gICAgICAgICAgKGludF9vZl9mbG9hdCAoT3B0aW9uX3V0aWwudW5zb21lIDAuIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5taW5WYWx1ZSkpLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXAgaW50X29mX2Zsb2F0IGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5tYXhWYWx1ZSxcbiAgICAgICAgKG1hdGNoIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5wbG90UGVyaW9kIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gQ29uZmlndXJhdGlvbi5ERSAoaW50X29mX2Zsb2F0IChjZWlsIGEpKVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgKENvbmZpZ3VyYXRpb24uREUgMSlcbiAgICAgICAgICAgIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5wbG90UGVyaW9kKSApXG4gIGluXG4gIGxldCBjb3VudGVyID1cbiAgICBDb3VudGVyLmNyZWF0ZSB+aW5pdF90ID9pbml0X2UgP21heF90aW1lID9tYXhfZXZlbnQgfnBsb3RfcGVyaW9kXG4gICAgICB+bmJfcnVsZXM6KE1vZGVsLm5iX3J1bGVzIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICgpXG4gIGluXG4gIGxldCBlbnYgPVxuICAgIGlmXG4gICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuYmF0Y2htb2RlXG4gICAgICAmJiBrYXNpbV9hcmdzLkthc2ltX2FyZ3MubWFyc2hhbGl6ZU91dEZpbGUgPSBOb25lXG4gICAgdGhlblxuICAgICAgTW9kZWwucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZTooQ291bnRlci5tYXhfdGltZSBjb3VudGVyKVxuICAgICAgICA/bWF4X2V2ZW50czooQ291bnRlci5tYXhfZXZlbnRzIGNvdW50ZXIpXG4gICAgICAgIH51cGRhdGVkX3ZhcnM6cGFjay5jb21waWxhdGlvbl9yZXN1bHQudXBkYXRlZF9hbGdfdmFyc1xuICAgICAgICB+YWxnX292ZXJ3cml0ZTpwYWNrLmFsZ19vdmVyd3JpdGUgcGFjay5jb21waWxhdGlvbl9yZXN1bHQuZW52XG4gICAgZWxzZVxuICAgICAgTW9kZWwub3ZlcndyaXRlX3ZhcnMgcGFjay5hbGdfb3ZlcndyaXRlIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudlxuICBpblxuICB7IHBhY2suY29tcGlsYXRpb25fcmVzdWx0IHdpdGggZW52OyBjb3VudGVyX29wdCA9IFNvbWUgY291bnRlciB9XG5cbmxldCBnZXRfY29tcGlsYXRpb25fZnJvbV9wcmVwcm9jZXNzZWRfYXN0IH53YXJuaW5nID8oY29tcGlsZV9tb2RlX29uID0gZmFsc2UpXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyBwcmVwcm9jZXNzZWRfYXN0IDpcbiAgICBjb21waWxhdGlvbl9yZXN1bHQgPVxuICBsZXQgcGFjayA9XG4gICAgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3MgfmNvbXBpbGVfbW9kZV9vbiBwcmVwcm9jZXNzZWRfYXN0XG4gIGluXG4gIGdldF9jb21waWxhdGlvbl9mcm9tX3BhY2sgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJncyBwYWNrXG5cbmxldCBnZXRfY29tcGlsYXRpb24gfndhcm5pbmcgfmRlYnVnX21vZGUgPyhjb21waWxlX21vZGVfb24gPSBmYWxzZSlcbiAgICA/KGthc2ltX2FyZ3MgPSBLYXNpbV9hcmdzLmRlZmF1bHQpIGNsaV9hcmdzIDogY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgbGV0IChwYWNrIDogY29tcGlsYXRpb25fcGFjaykgPVxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5tYXJzaGFsaXplZEluRmlsZSB3aXRoXG4gICAgfCBcIlwiIC0+XG4gICAgICBsZXQgcHJlcHJvY2Vzc2VkX2FzdCA9XG4gICAgICAgIGdldF9wcmVwcm9jZXNzZWRfYXN0X2Zyb21fY2xpX2FyZ3Mgfndhcm5pbmcgfmRlYnVnX21vZGUgY2xpX2FyZ3NcbiAgICAgIGluXG4gICAgICBnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3Qga2FzaW1fYXJncyB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAgIHByZXByb2Nlc3NlZF9hc3RcbiAgICB8IG1hcnNoYWxpemVkX2ZpbGUgLT5cbiAgICAgIGdldF9wYWNrX2Zyb21fbWFyc2hhbGl6ZWRmaWxlIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3NcbiAgICAgICAgbWFyc2hhbGl6ZWRfZmlsZVxuICBpblxuICBnZXRfY29tcGlsYXRpb25fZnJvbV9wYWNrIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3MgcGFja1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0geyBtdXRhYmxlIGRlbGltaXRlcjogY2hhciB9XG5cbmxldCBkZWZhdWx0IDogdCA9IHsgZGVsaW1pdGVyID0gVG9vbHMuZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIH1cblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6IChzdHJpbmcgKiBBcmcuc3BlYyAqIHN0cmluZykgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS1kZWxpbWl0ZXJcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBkIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZCA9IFNjYW5mLnVuZXNjYXBlZCBkIGluXG4gICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgIGlmIDEgPSBTdHJpbmcubGVuZ3RoIGQgdGhlblxuICAgICAgICAgICAgICAgIFN0cmluZy5nZXQgZCAwXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcImRlbGltZXRlciBoYXMgbXVsdGlwbGUgY2hhcmFjdGVycyAnJXMnXCIgZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gdC5kZWxpbWl0ZXIgPC0gZCBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB3aXRoIFNjYW5mLlNjYW5fZmFpbHVyZSBfIC0+XG4gICAgICAgICAgICByYWlzZSAoQXJnLkJhZCAoRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcGFyc2UgZGVsaW1ldGVyICclcydcIiBkKSkpLFxuICAgICAgXCJEZWxpbWl0ZXIgZm9yIG1lc3NhZ2UgcGFzc2luZ1wiICk7XG4gIF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKioqKioqKioqKioqKilcbigqIEpTb24gbGFiZWxzKilcbigqKioqKioqKioqKioqKilcblxubGV0IGFnZW50ID0gXCJhZ2VudCBuYW1lXCJcbmxldCBjb250YWN0bWFwID0gXCJjb250YWN0IG1hcFwiXG5sZXQgYWNjdXJhY3lfc3RyaW5nID0gXCJhY2N1cmFjeVwiXG5sZXQgZGVhZF9ydWxlcyA9IFwiZGVhZCBydWxlc1wiXG5sZXQgZGVhZF9hZ2VudHMgPSBcImRlYWQgYWdlbnRzXCJcbmxldCBtYXAgPSBcIm1hcFwiXG5sZXQgaW50ZXJmYWNlID0gXCJpbnRlcmZhY2VcIlxubGV0IHNpdGUgPSBcInNpdGUgbmFtZVwiXG5sZXQgc3RhdGVzbGlzdCA9IFwic3RhdGVzIGxpc3RcIlxubGV0IHNpdGVuYW1lID0gXCJzaXRlX25hbWVcIlxubGV0IHNpdGV0eXBlID0gXCJzaXRlX3R5cGVcIlxubGV0IHNpdGVsaW5rcyA9IFwicG9ydF9saW5rc1wiXG5sZXQgc2l0ZXN0YXRlcyA9IFwicG9ydF9zdGF0ZXNcIlxubGV0IHNpdGVub2RlbmFtZSA9IFwibm9kZV90eXBlXCJcbmxldCBzaXRlbm9kZWlkID0gXCJub2RlX2lkXCJcbmxldCBzaXRlbm9kZXNpdGVzID0gXCJub2RlX3NpdGVzXCJcbmxldCBoeXAgPSBcInNpdGUgZ3JhcGhcIlxubGV0IHJlZmluZW1lbnQgPSBcInNpdGUgZ3JhcGggbGlzdFwiXG5sZXQgZG9tYWluX25hbWUgPSBcImRvbWFpbiBuYW1lXCJcbmxldCByZWZpbmVtZW50c19saXN0ID0gXCJyZWZpbmVtZW50cyBsaXN0XCJcbmxldCByZWZpbmVtZW50X2xlbW1hcyA9IFwicmVmaW5lbWVudCBsZW1tYXNcIlxubGV0IHJ1bGVfaWQgPSBcImlkXCJcbmxldCBhZ2VudF9pZCA9IFwiaWRcIlxubGV0IGxhYmVsID0gXCJsYWJlbFwiXG5sZXQgYXN0ID0gXCJhc3RcIlxubGV0IHBvc2l0aW9uID0gXCJsb2NhdGlvblwiXG5sZXQgcG9zaXRpb25fbGlzdCA9IFwibG9jYXRpb24gbGlzdFwiXG5sZXQgdmFyaWFibGUgPSBcInZhcmlhYmxlXCJcbmxldCBydWxlID0gXCJydWxlXCJcbmxldCBkaXJlY3QgPSBcImRpcmVjdFwiXG5sZXQgc2lkZV9lZmZlY3QgPSBcInNpZGUgZWZmZWN0XCJcbmxldCBzb3VyY2UgPSBcInNvdXJjZVwiXG5sZXQgdGFyZ2V0X21hcCA9IFwidGFyZ2V0IG1hcFwiXG5sZXQgdGFyZ2V0ID0gXCJ0YXJnZXRcIlxubGV0IGxvY2F0aW9uX3BhaXJfbGlzdCA9IFwibG9jYXRpb24gcGFpciBsaXN0XCJcbmxldCByaHMgPSBcIlJIU1wiXG5sZXQgbGhzID0gXCJMSFNcIlxubGV0IGluZmx1ZW5jZW1hcCA9IFwiaW5mbHVlbmNlIG1hcFwiXG5sZXQgbm9kZXNvZmluZmx1ZW5jZW1hcCA9IFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiXG5sZXQgd2FrZXVwID0gXCJ3YWtlLXVwIG1hcFwiXG5sZXQgaW5oaWJpdGlvbiA9IFwiaW5oaWJpdGlvbiBtYXBcIlxubGV0IG5vZGVzID0gXCJub2Rlc1wiXG5sZXQgdG90YWxfc3RyaW5nID0gXCJ0b3RhbFwiXG5sZXQgZndkX3N0cmluZyA9IFwiZndkXCJcbmxldCBid2Rfc3RyaW5nID0gXCJid2RcIlxubGV0IG9yaWdpbiA9IFwib3JpZ2luXCJcbmxldCBkaXJlY3Rpb24gPSBcImRpcmVjdGlvblwiXG5sZXQgcnVsZV9oaWRkZW4gPSBcImhpZGRlblwiXG5sZXQgc2NjID0gXCJzY2NcIlxubGV0IGFjY3VyYWN5X2NtID0gXCJhY2N1cmFjeV9jbVwiXG5sZXQgYWNjdXJhY3lfc2NjID0gXCJhY2N1cmFjeV9zY2NcIlxubGV0IGNvbnRhY3RtYXBzY2MgPSBcImNvbnRhY3QgbWFwIHNjY1wiXG5sZXQgY291bnRlciA9IFwiY291bnRlclwiXG5sZXQgaW5mID0gXCJtaW5cIlxubGV0IHN1cCA9IFwibWF4XCJcbmxldCBrZXkgPSBcImtleVwiXG5sZXQgbG9jYWxpdHkgPSBcImxvY2FsaXR5XCJcblxuKCoqKioqKioqKioqKioqKioqKiopXG4oKiBBY2N1cmFjeSBsZXZlbHMgKilcbigqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGFjY3VyYWN5X2xldmVsID0gTG93IHwgTWVkaXVtIHwgSGlnaCB8IEZ1bGxcblxubGV0IGFjY3VyYWN5X2xldmVscyA9IFsgTG93OyBNZWRpdW07IEhpZ2g7IEZ1bGwgXVxubGV0IGNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVscyA9IFsgTG93OyBIaWdoIF1cbmxldCBpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVscyA9IFsgTG93OyBNZWRpdW07IEhpZ2ggXVxubGV0IHJlZHVjdGlvbl9hY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgSGlnaCBdXG5cbmxldCBhY2N1cmFjeV90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IExvdyAtPiBcImxvd1wiXG4gIHwgTWVkaXVtIC0+IFwibWVkaXVtXCJcbiAgfCBIaWdoIC0+IFwiaGlnaFwiXG4gIHwgRnVsbCAtPiBcImZ1bGxcIlxuXG5sZXQgYWNjdXJhY3lfdG9fanNvbiB4ID0gSnNvblV0aWwub2Zfc3RyaW5nIChhY2N1cmFjeV90b19zdHJpbmcgeClcblxubGV0IGFjY3VyYWN5X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJsb3dcIiAtPiBTb21lIExvd1xuICB8IFwibWVkaXVtXCIgLT4gU29tZSBNZWRpdW1cbiAgfCBcImhpZ2hcIiAtPiBTb21lIEhpZ2hcbiAgfCBcImZ1bGxcIiAtPiBTb21lIEZ1bGxcbiAgfCBfIC0+IE5vbmVcblxubGV0IGFjY3VyYWN5X29mX2pzb24ganNvbiA9XG4gIG1hdGNoIGFjY3VyYWN5X29mX3N0cmluZyAoSnNvblV0aWwudG9fc3RyaW5nIGpzb24pIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImFjY3VyYWN5IGxldmVsXCIsIGpzb24pKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQWNjdXJhY3lTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGFjY3VyYWN5X2xldmVsXG5cbiAgbGV0IGNvbXBhcmUgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IExvdywgTG93IC0+IDBcbiAgICB8IExvdywgXyAtPiAtMVxuICAgIHwgXywgTG93IC0+IDFcbiAgICB8IE1lZGl1bSwgTWVkaXVtIC0+IDBcbiAgICB8IE1lZGl1bSwgXyAtPiAtMVxuICAgIHwgXywgTWVkaXVtIC0+IDFcbiAgICB8IEhpZ2gsIEhpZ2ggLT4gMFxuICAgIHwgSGlnaCwgXyAtPiAtMVxuICAgIHwgXywgSGlnaCAtPiAxXG4gICAgfCBGdWxsLCBGdWxsIC0+IDBcblxuICBsZXQgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gICAgfCBGdWxsIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJGdWxsXCJcbiAgICB8IEhpZ2ggLT4gRm9ybWF0LmZwcmludGYgZiBcIkhpZ2hcIlxuICAgIHwgTWVkaXVtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJNZWRpdW1cIlxuICAgIHwgTG93IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJMb3dcIlxuZW5kKVxuXG5tb2R1bGUgQWNjdXJhY3lNYXAgPSBBY2N1cmFjeVNldE1hcC5NYXBcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKioqKioqKioqKioqKilcbigqIENvbnRhY3QgbWFwICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvbnRhY3RfbWFwID0gVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG5cbmxldCBzaXRlX3R5cGVfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgVXNlcl9ncmFwaC5Db3VudGVyIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiY291bnRlclwiOyBgSW50IGkgXVxuICB8IFVzZXJfZ3JhcGguUG9ydCBwIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcInBvcnRcIjtcbiAgICAgICAgYEFzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKCBzaXRlbGlua3MsXG4gICAgICAgICAgICAgIG1hdGNoIHAuVXNlcl9ncmFwaC5wb3J0X2xpbmtzIHdpdGhcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLkxJTktTIGwgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAoZnVuICgoeGwsIHhyKSwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICAgYExpc3QgWyBgTGlzdCBbIGBJbnQgeGw7IGBJbnQgeHIgXTsgYEludCB5IF0pXG4gICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5XSEFURVZFUiAtPiBgTnVsbFxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguU09NRSAtPiBgQm9vbCB0cnVlXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5UWVBFIChzaSwgdHkpIC0+XG4gICAgICAgICAgICAgICAgYEFzc29jIFsgXCJzaXRlX25hbWVcIiwgYFN0cmluZyBzaTsgXCJwb3J0X25hbWVcIiwgYFN0cmluZyB0eSBdICk7XG4gICAgICAgICAgICAoIHNpdGVzdGF0ZXMsXG4gICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAgICAgICAgICAgICBwLlVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgKTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuXG5sZXQgc2l0ZV90b19qc29uIHNpdGUgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBzaXRlbmFtZSwgSnNvblV0aWwub2Zfc3RyaW5nIHNpdGUuVXNlcl9ncmFwaC5zaXRlX25hbWU7XG4gICAgICBzaXRldHlwZSwgc2l0ZV90eXBlX3RvX2pzb24gc2l0ZS5Vc2VyX2dyYXBoLnNpdGVfdHlwZTtcbiAgICBdXG5cbmxldCBzaXRlX3R5cGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiY291bnRlclwiOyBgSW50IGkgXSAtPiBVc2VyX2dyYXBoLkNvdW50ZXIgaVxuICB8IGBMaXN0IFsgYFN0cmluZyBcInBvcnRcIjsgYEFzc29jIGwgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBwb3J0X2xpbmtzID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlbGlua3MgbCBpblxuICAgICAgICAgVXNlcl9ncmFwaC5saW5rc19vZl95b2pzb24ganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IHBvcnRfc3RhdGVzID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlc3RhdGVzIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic3RhdGUgbGlzdFwiXG4gICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInN0YXRlXCIpKVxuICAgICAgICAgICBqc29uXG4gICAgICAgaW5cbiAgICAgICBVc2VyX2dyYXBoLlBvcnQgeyBVc2VyX2dyYXBoLnBvcnRfbGlua3M7IFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgfVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInNpdGUgbm9kZSB0eXBlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJzaXRlIG5vZGUgdHlwZVwiLCB4KSlcblxubGV0IHNpdGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgc2l0ZV9uYW1lID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlbmFtZSBsIGluXG4gICAgICAgICBKc29uVXRpbC50b19zdHJpbmcganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IHNpdGVfdHlwZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZXR5cGUgbCBpblxuICAgICAgICAgc2l0ZV90eXBlX29mX2pzb24ganNvblxuICAgICAgIGluXG4gICAgICAgeyBVc2VyX2dyYXBoLnNpdGVfbmFtZTsgVXNlcl9ncmFwaC5zaXRlX3R5cGUgfVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInNpdGUgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwic2l0ZSBub2RlXCIsIHgpKVxuXG5sZXQgc2l0ZV9ub2RlX3NpdGVzX3RvX2pzb24gbGlzdCA9IEpzb25VdGlsLm9mX2FycmF5IHNpdGVfdG9fanNvbiBsaXN0XG5cbmxldCBzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2FycmF5IH5lcnJvcl9tc2c6XCJzaXRlIG5vZGUgc2l0ZXNcIiBzaXRlX29mX2pzb25cblxubGV0IHNpdGVfbm9kZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSBub2RlIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIHNpdGVub2RlbmFtZSwgSnNvblV0aWwub2Zfc3RyaW5nIG5vZGUuVXNlcl9ncmFwaC5ub2RlX3R5cGU7XG4gICAgICAgIHNpdGVub2Rlc2l0ZXMsIHNpdGVfbm9kZV9zaXRlc190b19qc29uIG5vZGUuVXNlcl9ncmFwaC5ub2RlX3NpdGVzO1xuICAgICAgXVxuXG5sZXQgc2l0ZV9ub2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IG5vZGVfaWQgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jX29wdCBzaXRlbm9kZWlkIGwgaW5cbiAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IG5vZGVfdHlwZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5vZGVuYW1lIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgbm9kZV9zaXRlcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5vZGVzaXRlcyBsIGluXG4gICAgICAgICBzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3R5cGU7IFVzZXJfZ3JhcGgubm9kZV9pZDsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJzaXRlIG5vZGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInNpdGUgbm9kZVwiLCB4KSlcblxubGV0IGNvbnRhY3RfbWFwX3RvX2pzb24gY29udGFjdF9tYXAgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGNvbnRhY3RtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX2FycmF5IChKc29uVXRpbC5vZl9hcnJheSBzaXRlX25vZGVfdG9fanNvbikpXG4gICAgICAgICAgY29udGFjdF9tYXAgKTtcbiAgICBdXG5cbmxldCBjb250YWN0X21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBjb250YWN0bWFwIGwgaW5cbiAgICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiY29udGFjdCBtYXBcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAgfmVycm9yX21zZzpcbiAgICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwic2l0ZSBub2RlcyBsaXN0XCIpXG4gICAgICAgICAgICAoSnNvblV0aWwudG9fYXJyYXlcbiAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6XG4gICAgICAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInNpdGUgbm9kZXMgbGlzdFwiKVxuICAgICAgICAgICAgICAgc2l0ZV9ub2RlX29mX2pzb24pKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImNvbnRhY3QgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJjb250YWN0IG1hcFwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKnN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnQqKVxuXG50eXBlIHNjYyA9ICgoc3RyaW5nICogc3RyaW5nKSAqIChzdHJpbmcgKiBzdHJpbmcpKSBsaXN0IGxpc3RcblxubGV0IHN0cmluZ19wYWlyX3RvX2pzb24gKGEsIGIpID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphZ2VudCB+bGFiMjpzaXRlbmFtZSBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICBKc29uVXRpbC5vZl9zdHJpbmcgKGEsIGIpXG5cbmxldCBzdHJpbmdfcGFpcl9vZl9qc29uIChqc29uIDogWW9qc29uLkJhc2ljLnQpIDogc3RyaW5nICogc3RyaW5nID1cbiAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphZ2VudCB+bGFiMjpzaXRlbmFtZSB+ZXJyb3JfbXNnOlwic2l0ZVwiXG4gICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInNpdGVfbmFtZVwiKVxuICAgIGpzb25cblxubGV0IHN0cmluZ19wYWlyX3BhaXJfdG9fanNvbiAoYSwgYikgPVxuICBKc29uVXRpbC5vZl9wYWlyIHN0cmluZ19wYWlyX3RvX2pzb24gc3RyaW5nX3BhaXJfdG9fanNvbiAoYSwgYilcblxubGV0IHN0cmluZ19wYWlyX3BhaXJfb2ZfanNvbiBqc29uIDogKHN0cmluZyAqIHN0cmluZykgKiAoc3RyaW5nICogc3RyaW5nKSA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcImJvbmRcIiBzdHJpbmdfcGFpcl9vZl9qc29uIHN0cmluZ19wYWlyX29mX2pzb25cbiAgICBqc29uXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfdG9fanNvbiBsID1cbiAgSnNvblV0aWwub2ZfbGlzdCBzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24gbFxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImxpc3Rfb2ZfYm9uZHNcIiBzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24ganNvblxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fanNvbiBsID1cbiAgSnNvblV0aWwub2ZfbGlzdCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfdG9fanNvbiBsXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0X29mX2xpc3RzX29mX2JvbmRzXCJcbiAgICBzdHJpbmdfcGFpcl9wYWlyX2xpc3Rfb2ZfanNvbiBqc29uXG5cbmxldCBzY2NfdG9fanNvbiAoY21fYWNjLCBzY2NfYWNjLCBzY2MpID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBjb250YWN0bWFwc2NjLFxuICAgICAgICBKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6YWNjdXJhY3lfY20gfmxhYjI6YWNjdXJhY3lfc2NjIH5sYWIzOm1hcFxuICAgICAgICAgIGFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfdG9fanNvbiBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF90b19qc29uXG4gICAgICAgICAgKGNtX2FjYywgc2NjX2FjYywgc2NjKSApO1xuICAgIF1cblxubGV0IHNjY19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBjb250YWN0bWFwc2NjIGwgaW5cbiAgICAgICBKc29uVXRpbC50b190cmlwbGUgfmxhYjE6YWNjdXJhY3lfY20gfmxhYjI6YWNjdXJhY3lfc2NjIH5sYWIzOm1hcFxuICAgICAgICAgfmVycm9yX21zZzpcInNjYyBkZWNvbXBvc2l0aW9uXCIgYWNjdXJhY3lfb2ZfanNvbiBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF9vZl9qc29uIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJzY2MgZGVjb21wb3NpdGlvblwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwic2NjIGRlY29tcG9zaXRpb25cIiwgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKioqKioqKioqKioqKilcbigqIGRlYWQgcnVsZXMgKilcbigqKioqKioqKioqKioqKilcblxudHlwZSBydWxlX2RpcmVjdGlvbiA9XG4gIHwgRGlyZWN0X3J1bGVcbiAgfCBSZXZlcnNlX3J1bGVcbiAgfCBCb3RoX2RpcmVjdGlvbnNcbiAgfCBEdW1teV9ydWxlX2RpcmVjdGlvblxuICB8IFZhcmlhYmxlXG5cbnR5cGUgcnVsZSA9IHtcbiAgcnVsZV9pZDogaW50O1xuICBydWxlX2xhYmVsOiBzdHJpbmc7XG4gIHJ1bGVfYXN0OiBzdHJpbmc7XG4gIHJ1bGVfcG9zaXRpb246IExvYy50O1xuICBydWxlX2RpcmVjdGlvbjogcnVsZV9kaXJlY3Rpb247XG4gIHJ1bGVfaGlkZGVuOiBib29sO1xufVxuXG5sZXQgZGlyZWN0aW9uX3RvX2pzb24gZCA9XG4gIG1hdGNoIGQgd2l0aFxuICB8IERpcmVjdF9ydWxlIC0+IGBTdHJpbmcgXCJkaXJlY3RcIlxuICB8IFJldmVyc2VfcnVsZSAtPiBgU3RyaW5nIFwicmV2ZXJzZVwiXG4gIHwgQm90aF9kaXJlY3Rpb25zIC0+IGBTdHJpbmcgXCJib3RoXCJcbiAgfCBEdW1teV9ydWxlX2RpcmVjdGlvbiAtPiBgU3RyaW5nIFwiZHVtbXlcIlxuICB8IFZhcmlhYmxlIC0+IGBTdHJpbmcgXCJ2YXJpYWJsZVwiXG5cbmxldCBqc29uX3RvX2RpcmVjdGlvbiBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgYFN0cmluZyBcImRpcmVjdFwiIC0+IERpcmVjdF9ydWxlXG4gIHwgYFN0cmluZyBcInJldmVyc2VcIiAtPiBSZXZlcnNlX3J1bGVcbiAgfCBgU3RyaW5nIFwiYm90aFwiIC0+IEJvdGhfZGlyZWN0aW9uc1xuICB8IGBTdHJpbmcgXCJkdW1teVwiIC0+IER1bW15X3J1bGVfZGlyZWN0aW9uXG4gIHwgYFN0cmluZyBcInZhcmlhYmxlXCIgLT4gVmFyaWFibGVcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcInJ1bGUgZGlyZWN0aW9uXCIsIHgpKVxuXG5sZXQgcnVsZV90b19qc29uIHJ1bGUgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBydWxlX2lkLCBKc29uVXRpbC5vZl9pbnQgcnVsZS5ydWxlX2lkO1xuICAgICAgbGFiZWwsIEpzb25VdGlsLm9mX3N0cmluZyBydWxlLnJ1bGVfbGFiZWw7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyBydWxlLnJ1bGVfYXN0O1xuICAgICAgcG9zaXRpb24sIExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgcnVsZS5ydWxlX3Bvc2l0aW9uKTtcbiAgICAgIGRpcmVjdGlvbiwgZGlyZWN0aW9uX3RvX2pzb24gcnVsZS5ydWxlX2RpcmVjdGlvbjtcbiAgICAgIHJ1bGVfaGlkZGVuLCBKc29uVXRpbC5vZl9ib29sIHJ1bGUucnVsZV9oaWRkZW47XG4gICAgXVxuXG5sZXQganNvbl90b19ydWxlID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcnVsZV9pZCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBydWxlX2lkIGwpO1xuICAgICAgICAgcnVsZV9sYWJlbCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBsYWJlbCBsKTtcbiAgICAgICAgIHJ1bGVfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIHJ1bGVfcG9zaXRpb24gPVxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICB+ZXJyb3JfbXNnOlxuICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgcG9zaXRpb24gbCkpO1xuICAgICAgICAgcnVsZV9kaXJlY3Rpb24gPSBqc29uX3RvX2RpcmVjdGlvbiAoTGlzdC5hc3NvYyBkaXJlY3Rpb24gbCk7XG4gICAgICAgICBydWxlX2hpZGRlbiA9IEpzb25VdGlsLnRvX2Jvb2wgKExpc3QuYXNzb2MgcnVsZV9oaWRkZW4gbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiIHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwicnVsZVwiLCB4KSlcblxudHlwZSB2YXIgPSB7XG4gIHZhcl9pZDogaW50O1xuICB2YXJfbGFiZWw6IHN0cmluZztcbiAgdmFyX2FzdDogc3RyaW5nO1xuICB2YXJfcG9zaXRpb246IExvYy50O1xufVxuXG5sZXQgdmFyX3RvX2pzb24gdmFyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgcnVsZV9pZCwgSnNvblV0aWwub2ZfaW50IHZhci52YXJfaWQ7XG4gICAgICBsYWJlbCwgSnNvblV0aWwub2Zfc3RyaW5nIHZhci52YXJfbGFiZWw7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyB2YXIudmFyX2FzdDtcbiAgICAgIHBvc2l0aW9uLCBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIHZhci52YXJfcG9zaXRpb24pO1xuICAgIF1cblxubGV0IGpzb25fdG9fdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgdmFyX2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHJ1bGVfaWQgbCk7XG4gICAgICAgICB2YXJfbGFiZWwgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgbGFiZWwgbCk7XG4gICAgICAgICB2YXJfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIHZhcl9wb3NpdGlvbiA9XG4gICAgICAgICAgIHNuZFxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdFxuICAgICAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6XG4gICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbiBsKSk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiIHZhclwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJ2YXJcIiwgeCkpXG5cbnR5cGUgKCdydWxlLCAndmFyKSBpbmZsdWVuY2Vfbm9kZSA9IFJ1bGUgb2YgJ3J1bGUgfCBWYXIgb2YgJ3ZhclxudHlwZSBzaG9ydF9pbmZsdWVuY2Vfbm9kZSA9IChpbnQsIGludCkgaW5mbHVlbmNlX25vZGVcbnR5cGUgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSA9IChydWxlLCB2YXIpIGluZmx1ZW5jZV9ub2RlXG50eXBlIHBvc19vZl9ydWxlc19hbmRfdmFycyA9IHJlZmluZWRfaW5mbHVlbmNlX25vZGUgTG9jLmFubm90ZWQgbGlzdFxuXG5sZXQgaW5mbHVlbmNlX25vZGVfdG9fanNvbiBydWxlX3RvX2pzb24gdmFyX3RvX2pzb24gYSA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IFZhciBpIC0+IGBBc3NvYyBbIHZhcmlhYmxlLCB2YXJfdG9fanNvbiBpIF1cbiAgfCBSdWxlIGkgLT4gYEFzc29jIFsgcnVsZSwgcnVsZV90b19qc29uIGkgXVxuXG5sZXQgaW5mbHVlbmNlX25vZGVfb2ZfanNvbiBqc29uX3RvX3J1bGUganNvbl90b192YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IHZhcmlhYmxlIC0+IFZhciAoanNvbl90b192YXIganNvbilcbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSBydWxlIC0+IFJ1bGUgKGpzb25fdG9fcnVsZSBqc29uKVxuICB8IHggLT5cbiAgICBsZXQgZXJyb3JfbXNnID0gXCJOb3QgYSBjb3JyZWN0IGluZmx1ZW5jZSBub2RlXCIgaW5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV90b19qc29uIEpzb25VdGlsLm9mX2ludCBKc29uVXRpbC5vZl9pbnRcblxubGV0IHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgKEpzb25VdGlsLnRvX2ludFxuICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwicnVsZSBpZFwiKSlcbiAgICAoSnNvblV0aWwudG9faW50XG4gICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJ2YXIgaWRcIikpXG5cbmxldCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV90b19qc29uIHJ1bGVfdG9fanNvbiB2YXJfdG9fanNvblxuXG5sZXQgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfb2ZfanNvbiBqc29uX3RvX3J1bGUganNvbl90b192YXJcblxubGV0IHBvc19vZl9ydWxlc19hbmRfdmFyc190b19qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmtleSB+bGFiMjpsb2NhbGl0eSByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAoZnVuIGxvYyAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIGxvYykpKVxuXG5sZXQgcG9zX29mX3J1bGVzX2FuZF92YXJzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0XG4gICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6a2V5IH5sYWIyOmxvY2FsaXR5IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgIChmdW4geCAtPlxuICAgICAgICAgc25kXG4gICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgeCkpKVxuXG5sZXQgc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgcnVsZSAtPiBSdWxlIHJ1bGUucnVsZV9pZFxuICB8IFZhciB2YXIgLT4gVmFyIHZhci52YXJfaWRcblxubGV0IHBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgciAtPiByLnJ1bGVfcG9zaXRpb25cbiAgfCBWYXIgdiAtPiB2LnZhcl9wb3NpdGlvblxuXG5tb2R1bGUgSW5mbHVlbmNlTm9kZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc2hvcnRfaW5mbHVlbmNlX25vZGVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcblxuICBsZXQgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gICAgfCBSdWxlIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIlJ1bGUgJWlcIiByXG4gICAgfCBWYXIgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiVmFyICVpXCIgclxuZW5kKVxuXG5tb2R1bGUgSW5mbHVlbmNlTm9kZU1hcCA9IEluZmx1ZW5jZU5vZGVTZXRNYXAuTWFwXG5cbigqIFJlbGF0aW9ucyAqKVxuXG50eXBlICdhIHBhaXIgPSAnYSAqICdhXG50eXBlIGxvY2F0aW9uID0gRGlyZWN0IG9mIGludCB8IFNpZGVfZWZmZWN0IG9mIGludFxuXG5sZXQgZHVtcF9sb2NhdGlvbiBmbXQgPSBmdW5jdGlvblxuICB8IERpcmVjdCBpbnQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiJWlcIiBpbnRcbiAgfCBTaWRlX2VmZmVjdCBpbnQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiJWkqXCIgaW50XG5cbmxldCBkdW1wX2xvY2F0aW9uX3BhaXIgZm10IChhLCBiKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiglYSwlYSlcIiBkdW1wX2xvY2F0aW9uIGEgZHVtcF9sb2NhdGlvbiBiXG5cbmxldCBkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCBmbXQgbCA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIlslYV1cIlxuICAgIChQcC5saXN0IChmdW4gZm10IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiO1wiKSBkdW1wX2xvY2F0aW9uX3BhaXIpXG4gICAgbFxuXG5sZXQgc3RyaW5nX29mX2xhYmVsX2xpc3QgbCA9IEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgZHVtcF9sb2NhdGlvbl9wYWlyX2xpc3QgbFxuXG50eXBlIGhhbGZfaW5mbHVlbmNlX21hcCA9XG4gIGxvY2F0aW9uIHBhaXIgbGlzdCBJbmZsdWVuY2VOb2RlTWFwLnQgSW5mbHVlbmNlTm9kZU1hcC50XG5cbnR5cGUgaW5mbHVlbmNlX21hcCA9IHtcbiAgbm9kZXM6IHJlZmluZWRfaW5mbHVlbmNlX25vZGUgbGlzdDtcbiAgcG9zaXRpdmU6IGhhbGZfaW5mbHVlbmNlX21hcDtcbiAgbmVnYXRpdmU6IGhhbGZfaW5mbHVlbmNlX21hcDtcbn1cblxuKCogTG9jYXRpb24gbGFiZWxzICopXG5sZXQgbG9jYXRpb25fdG9fanNvbiBhID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgRGlyZWN0IGkgLT4gYEFzc29jIFsgZGlyZWN0LCBKc29uVXRpbC5vZl9pbnQgaSBdXG4gIHwgU2lkZV9lZmZlY3QgaSAtPiBgQXNzb2MgWyBzaWRlX2VmZmVjdCwgSnNvblV0aWwub2ZfaW50IGkgXVxuXG5sZXQgbG9jYXRpb25fb2ZfanNvbiA/KGVycm9yX21zZyA9IFwiTm90IGEgY29ycmVjdCBsb2NhdGlvblwiKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gZGlyZWN0IC0+IERpcmVjdCAoSnNvblV0aWwudG9faW50IGpzb24pXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gc2lkZV9lZmZlY3QgLT5cbiAgICBTaWRlX2VmZmVjdCAoSnNvblV0aWwudG9faW50IGpzb24pXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uID1cbiAgSW5mbHVlbmNlTm9kZU1hcC50b19qc29uIH5sYWJfa2V5OnNvdXJjZSB+bGFiX3ZhbHVlOnRhcmdldF9tYXBcbiAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgKEluZmx1ZW5jZU5vZGVNYXAudG9fanNvbiB+bGFiX2tleTp0YXJnZXQgfmxhYl92YWx1ZTpsb2NhdGlvbl9wYWlyX2xpc3RcbiAgICAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpyaHMgfmxhYjI6bGhzIGxvY2F0aW9uX3RvX2pzb25cbiAgICAgICAgICAgICBsb2NhdGlvbl90b19qc29uKSkpXG5cbmxldCBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiA9XG4gIEluZmx1ZW5jZU5vZGVNYXAub2ZfanNvblxuICAgIH5lcnJvcl9tc2c6XG4gICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJhY3RpdmF0aW9uIG9yIGluaGliaXRpb24gbWFwXCIpXG4gICAgfmxhYl9rZXk6c291cmNlIH5sYWJfdmFsdWU6dGFyZ2V0X21hcCBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgKEluZmx1ZW5jZU5vZGVNYXAub2ZfanNvbiB+bGFiX2tleTp0YXJnZXQgfmxhYl92YWx1ZTpsb2NhdGlvbl9wYWlyX2xpc3RcbiAgICAgICB+ZXJyb3JfbXNnOlwibWFwIG9mIGxpc3RzIG9mIHBhaXJzIG9mIGxvY2F0aW9uc1wiXG4gICAgICAgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0IG9mIHBhaXIgb2YgbG9jYXRpb25zXCJcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwiXCIgfmxhYjE6cmhzIH5sYWIyOmxoc1xuICAgICAgICAgICAgIChsb2NhdGlvbl9vZl9qc29uXG4gICAgICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJsb2NhdGlvblwiKSlcbiAgICAgICAgICAgICAobG9jYXRpb25fb2ZfanNvblxuICAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibG9jYXRpb25cIikpKSkpXG5cbigqIEluZmx1ZW5jZSBtYXAgKilcblxubGV0IG5vZGVzX2xpc3RfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG5sZXQgbm9kZXNfbGlzdF9vZl9qc29uID0gSnNvblV0aWwudG9fbGlzdCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cblxubGV0IGluZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBpbmZsdWVuY2VtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKGZ1biBpbmZsdWVuY2VfbWFwIC0+XG4gICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gaW5mbHVlbmNlX21hcC5ub2RlcztcbiAgICAgICAgICAgICAgICB3YWtldXAsIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAucG9zaXRpdmU7XG4gICAgICAgICAgICAgICAgaW5oaWJpdGlvbiwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5uZWdhdGl2ZTtcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICBpbmZsdWVuY2VfbWFwICk7XG4gICAgXVxuXG5sZXQgbm9kZXNfb2ZfaW5mbHVlbmNlX21hcF90b19qc29uIG5vZGVzX2xpc3QgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIG5vZGVzb2ZpbmZsdWVuY2VtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKGZ1biBub2Rlc19saXN0IC0+IGBBc3NvYyBbIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gbm9kZXNfbGlzdCBdKVxuICAgICAgICAgIG5vZGVzX2xpc3QgKTtcbiAgICBdXG5cbmxldCBub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIG5vZGVzb2ZpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcFxuICAgICAgICAgfmVycm9yX21zZzpcbiAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcDFcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMSAtPlxuICAgICAgICAgICAgICh0cnkgbm9kZXNfbGlzdF9vZl9qc29uIChMaXN0LmFzc29jIG5vZGVzIGwpXG4gICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoIEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgIHggKSkpXG4gICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKCBKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvblxuICAgICAgICAgICAgICAgICAgICAgIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICAgICAgICAgICAgICB4ICkpKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpXG5cbmxldCBsb2NhbF9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcCA9XG4gIGxldCBhY2N1cmFjeSwgdG90YWwsIGJ3ZCwgZndkLCBvcmlnaW5fb3B0LCBpbmZsdWVuY2VfbWFwID0gaW5mbHVlbmNlX21hcCBpblxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGluZmx1ZW5jZW1hcCxcbiAgICAgICAgYEFzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgYWNjdXJhY3lfc3RyaW5nLCBhY2N1cmFjeV90b19qc29uIGFjY3VyYWN5O1xuICAgICAgICAgICAgdG90YWxfc3RyaW5nLCBKc29uVXRpbC5vZl9pbnQgdG90YWw7XG4gICAgICAgICAgICBmd2Rfc3RyaW5nLCBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGZ3ZDtcbiAgICAgICAgICAgIGJ3ZF9zdHJpbmcsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgYndkO1xuICAgICAgICAgICAgb3JpZ2luLCBKc29uVXRpbC5vZl9vcHRpb24gcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIG9yaWdpbl9vcHQ7XG4gICAgICAgICAgICAoIG1hcCxcbiAgICAgICAgICAgICAgKGZ1biBpbmZsdWVuY2VfbWFwIC0+XG4gICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gaW5mbHVlbmNlX21hcC5ub2RlcztcbiAgICAgICAgICAgICAgICAgICAgd2FrZXVwLCBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLnBvc2l0aXZlO1xuICAgICAgICAgICAgICAgICAgICAoIGluaGliaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5uZWdhdGl2ZSApO1xuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBpbmZsdWVuY2VfbWFwICk7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IGluZmx1ZW5jZV9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgaW5mbHVlbmNlbWFwIGwgaW5cbiAgICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiaW5mbHVlbmNlIG1hcDFcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBub2RlcyA9IG5vZGVzX2xpc3Rfb2ZfanNvbiAoTGlzdC5hc3NvYyBub2RlcyBsKTtcbiAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2Mgd2FrZXVwIGwpO1xuICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgPVxuICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyBpbmhpYml0aW9uIGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImluZmx1ZW5jZSBtYXBcIiwgeCkpXG5cbmxldCBsb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIGluZmx1ZW5jZW1hcCBsIGluXG4gICAgICAgbWF0Y2gganNvbiB3aXRoXG4gICAgICAgfCBgQXNzb2MgbCcgLT5cbiAgICAgICAgIGxldCBhY2N1cmFjeSA9IGFjY3VyYWN5X29mX2pzb24gKExpc3QuYXNzb2MgYWNjdXJhY3lfc3RyaW5nIGwnKSBpblxuICAgICAgICAgbGV0IHRvdGFsID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHRvdGFsX3N0cmluZyBsJykgaW5cbiAgICAgICAgIGxldCBlcnJvcl9tc2cgPSBKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImZ3ZCByYWRpdXNcIiBpblxuICAgICAgICAgbGV0IGZ3ZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBmd2Rfc3RyaW5nIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBlcnJvcl9tc2cgPSBKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImJ3ZCByYWRpdXNcIiBpblxuICAgICAgICAgbGV0IGJ3ZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBid2Rfc3RyaW5nIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAgKExpc3QuYXNzb2Mgb3JpZ2luIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBpbmZsdWVuY2VfbWFwID1cbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMgPSBub2Rlc19saXN0X29mX2pzb24gKExpc3QuYXNzb2Mgbm9kZXMgbCk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2Mgd2FrZXVwIGwpO1xuICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2MgaW5oaWJpdGlvbiBsKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKCBKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsb2NhbCBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgeCApKSlcbiAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICggSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWwgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHggKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgbWFwIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGFjY3VyYWN5LCB0b3RhbCwgZndkLCBid2QsIG9yaWdpbiwgaW5mbHVlbmNlX21hcFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSlcbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogZGVhZCBydWxlcyAgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgZGVhZF9ydWxlcyA9IHJ1bGUgbGlzdFxuXG5sZXQgZGVhZF9ydWxlc190b19qc29uIGpzb24gPVxuICBgQXNzb2MgWyBkZWFkX3J1bGVzLCBKc29uVXRpbC5vZl9saXN0IHJ1bGVfdG9fanNvbiBqc29uIF1cblxubGV0IGRlYWRfcnVsZXNfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gYXMgeCB3aGVuIHMgPSBkZWFkX3J1bGVzIC0+XG4gICAgKHRyeSBKc29uVXRpbC50b19saXN0IGpzb25fdG9fcnVsZSBqc29uXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gZGVhZF9ydWxlcywgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBkZWFkX3J1bGVzLCB4KSlcblxuKCoqKioqKioqKioqKioqKilcbigqIGRlYWQgYWdlbnRzICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGFnZW50X2tpbmQgPSB7XG4gIGFnZW50X2lkOiBpbnQ7XG4gIGFnZW50X2FzdDogc3RyaW5nO1xuICBhZ2VudF9wb3NpdGlvbjogTG9jLnQgbGlzdDtcbn1cblxubGV0IGpzb25fdG9fYWdlbnRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGFnZW50X2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIGFnZW50X2lkIGwpO1xuICAgICAgICAgYWdlbnRfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIGFnZW50X3Bvc2l0aW9uID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibG9jYWxpdHkgbGlzdFwiKVxuICAgICAgICAgICAgIChmdW4ganNvbiAtPlxuICAgICAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yX21zZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgICAgICAganNvbikpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgcG9zaXRpb25fbGlzdCBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJhZ2VudCBraW5kXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImFnZW50IGtpbmRcIiwgeCkpXG5cbmxldCBhZ2VudF9raW5kX3RvX2pzb24gYWdlbnRfa2luZCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIGFnZW50X2lkLCBKc29uVXRpbC5vZl9pbnQgYWdlbnRfa2luZC5hZ2VudF9pZDtcbiAgICAgIGFzdCwgSnNvblV0aWwub2Zfc3RyaW5nIGFnZW50X2tpbmQuYWdlbnRfYXN0O1xuICAgICAgKCBwb3NpdGlvbl9saXN0LFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKGZ1biBhIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgYSkpXG4gICAgICAgICAgYWdlbnRfa2luZC5hZ2VudF9wb3NpdGlvbiApO1xuICAgIF1cblxudHlwZSBkZWFkX2FnZW50cyA9IGFnZW50X2tpbmQgbGlzdFxuXG5sZXQganNvbl9vZl9kZWFkX2FnZW50cyBqc29uID1cbiAgYEFzc29jIFsgZGVhZF9hZ2VudHMsIEpzb25VdGlsLm9mX2xpc3QgYWdlbnRfa2luZF90b19qc29uIGpzb24gXVxuXG5sZXQganNvbl90b19kZWFkX2FnZW50cyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gYXMgeCB3aGVuIHMgPSBkZWFkX2FnZW50cyAtPlxuICAgICh0cnkgSnNvblV0aWwudG9fbGlzdCBqc29uX3RvX2FnZW50X2tpbmQganNvblxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIGRlYWRfYWdlbnRzLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIGRlYWRfYWdlbnRzLCB4KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnMgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPSAocnVsZSAqIChzdHJpbmcgKiBzdHJpbmcpIGxpc3QpIGxpc3RcblxubGV0IHNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX2xpc3RcbiAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInJ1bGVcIiB+bGFiMjpcInBvdGVudGlhbC1jb250ZXh0c1wiIHJ1bGVfdG9fanNvblxuICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJzMVwiIH5sYWIyOlwiczJcIiBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9zdHJpbmcpKSlcblxubGV0IHNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInNlcGFyYXRpbmcgdHJhbnNpdGlvbnMgbGlzdFwiXG4gICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcInNlcGFyYXRpbmcgdHJhbnNpdGlvblwiIH5sYWIxOlwicnVsZVwiXG4gICAgICAgfmxhYjI6XCJwb3RlbnRpYWwtY29udGV4dHNcIiBqc29uX3RvX3J1bGVcbiAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic2VwYXJhdGluZyB0cmFuc2l0aW9uc1wiXG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcInRyYW5zaXRpb25cIiB+bGFiMTpcInMxXCIgfmxhYjI6XCJzMlwiXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKSkpXG5cbigqKioqKioqKioqKioqKiopXG4oKiBDb25zdHJhaW50cyAqKVxuKCoqKioqKioqKioqKioqKilcblxudHlwZSBiaW5kaW5nX3N0YXRlID1cbiAgfCBGcmVlXG4gIHwgV2lsZGNhcmRcbiAgfCBCb3VuZF90b191bmtub3duXG4gIHwgQm91bmRfdG8gb2YgaW50XG4gIHwgQmluZGluZ190eXBlIG9mIHN0cmluZyAqIHN0cmluZ1xuXG50eXBlIGFnZW50ID1cbiAgc3RyaW5nXG4gICogKHN0cmluZ1xuICAgICogc3RyaW5nIG9wdGlvblxuICAgICogYmluZGluZ19zdGF0ZSBvcHRpb25cbiAgICAqIChpbnQgb3B0aW9uICogaW50IG9wdGlvbikgb3B0aW9uKVxuICAgIGxpc3RcblxudHlwZSAnc2l0ZV9ncmFwaCBsZW1tYSA9IHsgaHlwOiAnc2l0ZV9ncmFwaDsgcmVmaW5lbWVudDogJ3NpdGVfZ3JhcGggbGlzdCB9XG50eXBlICdzaXRlX2dyYXBoIHBvbHlfY29uc3RyYWludHNfbGlzdCA9IChzdHJpbmcgKiAnc2l0ZV9ncmFwaCBsZW1tYSBsaXN0KSBsaXN0XG5cbmxldCBsZW1tYV90b19qc29uIHNpdGVfZ3JhcGhfdG9fanNvbiBqc29uID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTpoeXAgfmxhYjI6cmVmaW5lbWVudCBzaXRlX2dyYXBoX3RvX2pzb25cbiAgICAoSnNvblV0aWwub2ZfbGlzdCBzaXRlX2dyYXBoX3RvX2pzb24pXG4gICAgKGpzb24uaHlwLCBqc29uLnJlZmluZW1lbnQpXG5cbmxldCBsZW1tYV9vZl9qc29uIHNpdGVfZ3JhcGhfb2ZfanNvbiBqc29uID1cbiAgbGV0IGEsIGIgPVxuICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6aHlwIH5sYWIyOnJlZmluZW1lbnQgfmVycm9yX21zZzpcImxlbW1hXCJcbiAgICAgIHNpdGVfZ3JhcGhfb2ZfanNvblxuICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInJlZmluZW1lbnRzIGxpc3RcIiBzaXRlX2dyYXBoX29mX2pzb24pXG4gICAgICBqc29uXG4gIGluXG4gIHsgaHlwID0gYTsgcmVmaW5lbWVudCA9IGIgfVxuXG5sZXQgZ2V0X2h5cCBoID0gaC5oeXBcbmxldCBnZXRfcmVmaW5lbWVudCByID0gci5yZWZpbmVtZW50XG5sZXQgZnJlZSA9IFwiXCJcbmxldCB3aWxkY2FyZCA9IFwiP1wiXG5sZXQgYm91bmQgPSBcIiFfXCJcbmxldCBib25kX2lkID0gXCJib25kIGlkXCJcbmxldCBib3VuZF90byA9IFwiYm91bmQgdG9cIlxubGV0IGJpbmRpbmdfdHlwZSA9IFwiYmluZGluZyB0eXBlXCJcbmxldCBwcm9wID0gXCJwcm9wZXJ0eSBzdGF0ZVwiXG5sZXQgYmluZCA9IFwiYmluZGluZyBzdGF0ZVwiXG5sZXQgYmluZGluZ190eXBlX2JhY2tlbmRfc3ltYm9sID0gXCIuXCJcbmxldCBmcmVlX2JhY2tlbmRfc3ltYm9sID0gXCIuXCJcbmxldCBtaXNzaW5nX2JpbmRpbmdfc2l0ZV9iYWNrZW5kX3N5bWJvbCA9IFwiXCJcbmxldCB3aWxkY2FyZF9iYWNrZW5kX3N5bWJvbCA9IFwiI1wiXG5sZXQgYm91bmRfdG9fdW5rbm93bl9iYWNrZW5kX3N5bWJvbCA9IFwiX1wiXG5sZXQgaW50ZXJuYWxfc3RhdGVfaW50cm9kdWN0aW9uX2JhY2tlbmRfc3ltYm9sID0gXCJ+XCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9kZWxpbWl0ZXJfYmFja2VuZF9zeW1ib2wgPSBcIixcIlxubGV0IGJpbmRpbmdfc3RhdGVfZGVsaW1pdGVyX2JhY2tlbmRfc3ltYm9sID0gXCIsXCJcbmxldCBiaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2wgPSBcIltcIlxubGV0IGJpbmRpbmdfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCA9IFwiXVwiXG5sZXQgaW50ZXJuYWxfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbCA9IFwie1wiXG5sZXQgaW50ZXJuYWxfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCA9IFwifVwiXG5sZXQgY291bnRlcl9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ7XCJcbmxldCBjb3VudGVyX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgPSBcIn1cIlxubGV0IGNvdW50ZXJfc3RhdGVfcmFuZ2VfYmFja2VuZF9zeW1ib2wgPSBcIiAuLiBcIlxubGV0IG9wZW5faW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9IFwiW1wiXG5sZXQgY2xvc2VfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9IFwiXVwiXG5sZXQgb3Blbl9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sID0gXCJdXCJcbmxldCBjbG9zZV9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sID0gXCJbXCJcbmxldCBwbHVzX2luZmluaXR5X3N5bWJvbCA9IFwiK29vXCJcbmxldCBtaW51c19pbmZpbml0eV9zeW1ib2wgPSBcIi1vb1wiXG5cbmxldCBzdHJpbmdfb2ZfYmluZGluZ190eXBlID8oYmluZGluZ190eXBlX3N5bWJvbCA9IFwiLlwiKSB+YWdlbnRfbmFtZSB+c2l0ZV9uYW1lXG4gICAgKCkgPVxuICBGb3JtYXQuc3ByaW50ZiBcIiVzJXMlc1wiIHNpdGVfbmFtZSBiaW5kaW5nX3R5cGVfc3ltYm9sIGFnZW50X25hbWVcblxubGV0IGJpbmRpbmdfc3RhdGVfbGlnaHRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGBOdWxsKSBdIHdoZW4gcyA9IGZyZWUgLT4gRnJlZVxuICB8IGBBc3NvYyBbIChzLCBgTnVsbCkgXSB3aGVuIHMgPSB3aWxkY2FyZCAtPiBXaWxkY2FyZFxuICB8IGBBc3NvYyBbIChzLCBgTnVsbCkgXSB3aGVuIHMgPSBib3VuZF90byAtPiBCb3VuZF90b191bmtub3duXG4gIHwgYEFzc29jIFsgKHMsIGopIF0gd2hlbiBzID0gYm9uZF9pZCAtPlxuICAgIGxldCBpID0gSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6XCJ3cm9uZyBiaW5kaW5nIGlkXCIgaiBpblxuICAgIGxldCBib25kX2luZGV4ID0gaSBpblxuICAgIEJvdW5kX3RvIGJvbmRfaW5kZXhcbiAgfCBgQXNzb2MgWyAocywgaikgXSB3aGVuIHMgPSBiaW5kaW5nX3R5cGUgLT5cbiAgICBsZXQgYWdlbnRfbmFtZSwgc2l0ZV9uYW1lID1cbiAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJhZ2VudFwiIH5sYWIyOlwic2l0ZVwiIH5lcnJvcl9tc2c6XCJiaW5kaW5nIHR5cGVcIlxuICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhZ2VudCBuYW1lXCIpXG4gICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInNpdGUgbmFtZVwiKVxuICAgICAgICBqXG4gICAgaW5cbiAgICBCaW5kaW5nX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIndyb25nIGJpbmRpbmcgc3RhdGVcIiwgeCkpXG5cbmxldCBiaW5kaW5nX3N0YXRlX2xpZ2h0X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEZyZWUgLT4gYEFzc29jIFsgZnJlZSwgYE51bGwgXVxuICB8IFdpbGRjYXJkIC0+IGBBc3NvYyBbIHdpbGRjYXJkLCBgTnVsbCBdXG4gIHwgQm91bmRfdG9fdW5rbm93biAtPiBgQXNzb2MgWyBib3VuZF90bywgYE51bGwgXVxuICB8IEJvdW5kX3RvIGJvbmRfaW5kZXggLT4gYEFzc29jIFsgYm9uZF9pZCwgSnNvblV0aWwub2ZfaW50IGJvbmRfaW5kZXggXVxuICB8IEJpbmRpbmdfdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKSAtPlxuICAgIGxldCBqID1cbiAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJhZ2VudFwiIH5sYWIyOlwic2l0ZVwiIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgICBKc29uVXRpbC5vZl9zdHJpbmcgKGFnZW50X25hbWUsIHNpdGVfbmFtZSlcbiAgICBpblxuICAgIGBBc3NvYyBbIGJpbmRpbmdfdHlwZSwgaiBdXG5cbmxldCBjb3VudGVyX3N0YXRlX2xpZ2h0X29mX2pzb24gPVxuICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmluZiB+bGFiMjpzdXAgfmVycm9yX21zZzpcIndyb25nIGNvdW50ZXIgc3RhdGVcIlxuICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOmNvdW50ZXIpKVxuICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOmNvdW50ZXIpKVxuXG5sZXQgY291bnRlcl9zdGF0ZV9saWdodF90b19qc29uID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTppbmYgfmxhYjI6c3VwXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpXG5cbmxldCBpbnRlcmZhY2VfbGlnaHRfdG9fanNvbiBpbnRmID1cbiAgSnNvblV0aWwub2ZfbWFwIH5sYWJfa2V5OnNpdGUgfmxhYl92YWx1ZTpzdGF0ZXNsaXN0XG4gICAgfmZvbGQ6KGZ1biBmIGEgeCAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IChrLCBhLCBiLCBjKSAtPiBmIGsgKGEsIGIsIGMpIGxpc3QpIHggYSlcbiAgICAoKmpzb24gLT4gZWx0KilcbiAgICAgIChmdW4gc2l0ZSAtPiBKc29uVXRpbC5vZl9zdHJpbmcgc2l0ZSlcbiAgICAoKmpzb24gLT4gJ3ZhbHVlKilcbiAgICAoSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOnByb3AgfmxhYjI6YmluZCB+bGFiMzpjb3VudGVyXG4gICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBiaW5kaW5nX3N0YXRlX2xpZ2h0X3RvX2pzb24pXG4gICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBjb3VudGVyX3N0YXRlX2xpZ2h0X3RvX2pzb24pKVxuICAgIGludGZcblxubGV0IGludGVyZmFjZV9saWdodF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19tYXAgfmxhYl9rZXk6c2l0ZSB+bGFiX3ZhbHVlOnN0YXRlc2xpc3QgfmVycm9yX21zZzppbnRlcmZhY2VcbiAgICB+ZW1wdHk6W11cbiAgICB+YWRkOihmdW4gayAoYSwgYiwgYykgbGlzdCAtPiAoaywgYSwgYiwgYykgOjogbGlzdClcbiAgICAoKmpzb24gLT4gZWx0KilcbiAgICAgIChmdW4ganNvbiAtPiBKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpzaXRlIGpzb24pXG4gICAgKCpqc29uIC0+ICd2YWx1ZSopXG4gICAgKEpzb25VdGlsLnRvX3RyaXBsZSB+bGFiMTpwcm9wIH5sYWIyOmJpbmQgfmxhYjM6Y291bnRlclxuICAgICAgIH5lcnJvcl9tc2c6XCJ3cm9uZyBiaW5kaW5nIHN0YXRlXCJcbiAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpwcm9wKSlcbiAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIGJpbmRpbmdfc3RhdGVfbGlnaHRfb2ZfanNvbilcbiAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIGNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbikpXG4gICAganNvblxuXG5sZXQgYWdlbnRfZ2VuX29mX2pzb24gaW50ZXJmYWNlX29mX2pzb24gPVxuICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFnZW50IH5sYWIyOmludGVyZmFjZSB+ZXJyb3JfbXNnOlwiYWdlbnRcIlxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICBpbnRlcmZhY2Vfb2ZfanNvblxuXG5sZXQgcG9seV9jb25zdHJhaW50c19saXN0X29mX2pzb24gc2l0ZV9ncmFwaF9vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdFxuICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJjb25zdHJhaW50cyBsaXN0XCIgfmxhYjE6ZG9tYWluX25hbWVcbiAgICAgICB+bGFiMjpyZWZpbmVtZW50c19saXN0XG4gICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWJzdHJhY3QgZG9tYWluXCIpXG4gICAgICAgKEpzb25VdGlsLnRvX2xpc3QgKGxlbW1hX29mX2pzb24gc2l0ZV9ncmFwaF9vZl9qc29uKSkpXG5cbmxldCBsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiBpbnRlcmZhY2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgcmVmaW5lbWVudF9sZW1tYXMgbCBpblxuICAgICAgIHBvbHlfY29uc3RyYWludHNfbGlzdF9vZl9qc29uXG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic2l0ZSBncmFwaFwiXG4gICAgICAgICAgICAoYWdlbnRfZ2VuX29mX2pzb24gaW50ZXJmYWNlX29mX2pzb24pKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInJlZmluZW1lbnQgbGVtbWFzIGxpc3RcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcInJlZmluZW1lbnQgbGVtbWFzIGxpc3RcIiwgeCkpXG5cbmxldCBsZW1tYXNfbGlzdF9vZl9qc29uIGpzb24gPVxuICBsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiBpbnRlcmZhY2VfbGlnaHRfb2ZfanNvbiBqc29uXG5cbmxldCBhZ2VudF9nZW5fdG9fanNvbiBpbnRlcmZhY2VfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6aW50ZXJmYWNlIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgIGludGVyZmFjZV90b19qc29uXG5cbmxldCBwb2x5X2NvbnN0cmFpbnRzX2xpc3RfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24gY29uc3RyYWludHMgPVxuICBKc29uVXRpbC5vZl9saXN0XG4gICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6ZG9tYWluX25hbWUgfmxhYjI6cmVmaW5lbWVudHNfbGlzdFxuICAgICAgIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgIChKc29uVXRpbC5vZl9saXN0IChsZW1tYV90b19qc29uIHNpdGVfZ3JhcGhfdG9fanNvbikpKVxuICAgIGNvbnN0cmFpbnRzXG5cbmxldCBsZW1tYXNfbGlzdF90b19qc29uX2dlbiBpbnRlcmZhY2VfdG9fanNvbiBjb25zdHJhaW50cyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggcmVmaW5lbWVudF9sZW1tYXMsXG4gICAgICAgIHBvbHlfY29uc3RyYWludHNfbGlzdF90b19qc29uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X2dlbl90b19qc29uIGludGVyZmFjZV90b19qc29uKSlcbiAgICAgICAgICBjb25zdHJhaW50cyApO1xuICAgIF1cblxubGV0IGxlbW1hc19saXN0X3RvX2pzb24gY29uc3RyYWludHMgPVxuICBsZW1tYXNfbGlzdF90b19qc29uX2dlbiBpbnRlcmZhY2VfbGlnaHRfdG9fanNvbiBjb25zdHJhaW50c1xuIiwiKCoqXG4gICogbG9nZ2Vycy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyNi8wMS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgZW5jb2RpbmcgPVxuICB8IE1hdHJpeFxuICB8IEhUTUxfR3JhcGhcbiAgfCBKc19HcmFwaFxuICB8IEhUTUxcbiAgfCBIVE1MX1RhYnVsYXJcbiAgfCBET1RcbiAgfCBUWFRcbiAgfCBUWFRfVGFidWxhclxuICB8IFhMU1xuICB8IE9jdGF2ZVxuICB8IE1hdGxhYlxuICB8IE1hcGxlXG4gIHwgTWF0aGVtYXRpY2FcbiAgfCBTQk1MXG4gIHwgRE9UTkVUXG4gIHwgSnNvblxuICB8IEdFUEhJXG5cbm1vZHVsZSB0eXBlIEZvcm1hdE1hcCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYWRkIDogZW5jb2RpbmcgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBmaW5kIDogZW5jb2RpbmcgLT4gJ2EgdCAtPiAnYVxuICB2YWwgZW1wdHkgOiAnYSB0XG5lbmRcblxubW9kdWxlIEZvcm1hdE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gZW5jb2RpbmdcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbmVuZClcblxudHlwZSB0b2tlbiA9IFN0cmluZyBvZiBzdHJpbmcgfCBCcmVha2FibGVfc3BhY2UgfCBCcmVha2FibGVfaGludFxuXG50eXBlIGxvZ2dlciA9XG4gIHwgREVWTlVMXG4gIHwgRm9ybWF0dGVyIG9mIEZvcm1hdC5mb3JtYXR0ZXJcbiAgfCBDaXJjdWxhcl9idWZmZXIgb2Ygc3RyaW5nIENpcmN1bGFyX2J1ZmZlcnMudCByZWZcbiAgfCBJbmZpbml0ZV9idWZmZXIgb2Ygc3RyaW5nIEluZmluaXRlX2J1ZmZlcnMudCByZWZcblxubGV0IGJyZWFrYWJsZSB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIHwgSFRNTCB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCB8IFRYVCAtPiB0cnVlXG4gIHwgTWF0cml4IHwgSnNvbiB8IE1hdGhlbWF0aWNhIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUIHwgRE9UXG4gIHwgR0VQSEkgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgIGZhbHNlXG5cbnR5cGUgdCA9IHtcbiAgZW5jb2Rpbmc6IGVuY29kaW5nO1xuICBsb2dnZXI6IGxvZ2dlcjtcbiAgY2hhbm5lbF9vcHQ6IG91dF9jaGFubmVsIG9wdGlvbjtcbiAgbXV0YWJsZSBjdXJyZW50X2xpbmU6IHRva2VuIGxpc3Q7XG59XG5cbmxldCBnZXRfZW5jb2RpbmdfZm9ybWF0IHQgPSB0LmVuY29kaW5nXG5cbmxldCBkdW1teV9odG1sX2xvZ2dlciA9XG4gIHtcbiAgICAoKiAgaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eSA7KilcbiAgICBlbmNvZGluZyA9IEhUTUw7XG4gICAgbG9nZ2VyID0gREVWTlVMO1xuICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAoKiBmcmVzaF9pZCA9IHJlZiAxO1xuICAgICAgIG5vZGVzID0gcmVmIFtdO1xuICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gIH1cblxubGV0IGR1bW15X3R4dF9sb2dnZXIgPVxuICB7XG4gICAgKCogIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHkgOyopXG4gICAgZW5jb2RpbmcgPSBUWFQ7XG4gICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgIGxvZ2dlciA9IERFVk5VTDtcbiAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAoKiBmcmVzaF9pZCA9IHJlZiAxO1xuICAgICAgIG5vZGVzID0gcmVmIFtdO1xuICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gIH1cblxuKCogV2FybmluZywgd2UgaGF2ZSB0byBrZWVwIHRoZSBjaGFyYWN0ZXIgQCB3aGVuIGl0IGlzIGZvbGxvd2VkIGJ5IGEgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGEgZGlnaXQgc2hvdWxkIGJlIHByZXNlcnZlZCAqKVxuXG5sZXQgZHVtcF9jbGVhbl9zdHJpbmcgZm10ID1cbiAgU3RyaW5nLml0ZXIgKGZ1biBhIC0+XG4gICAgICBpZiBhID0gJ1xcbicgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlY1wiIGEpXG5cbmxldCBjbGVhbl9zdHJpbmcgcyA9XG4gIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgbGV0IGZtdF9idWZmZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWZmZXIgaW5cbiAgbGV0ICgpID0gZHVtcF9jbGVhbl9zdHJpbmcgZm10X2J1ZmZlciBzIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXRfYnVmZmVyICgpIGluXG4gIEJ1ZmZlci5jb250ZW50cyBidWZmZXJcblxubGV0IGNsZWFuIGZtdCA9XG4gIGxldCBzID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gIGxldCBmbXRfYnVmZmVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgcyBpblxuICBGb3JtYXQua2ZwcmludGZcbiAgICAoZnVuIF8gLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXRfYnVmZmVyICgpIGluXG4gICAgICBkdW1wX2NsZWFuX3N0cmluZyBmbXQgKEJ1ZmZlci5jb250ZW50cyBzKSlcbiAgICBmbXRfYnVmZmVyXG5cbmxldCBmcHJpbnRmID8oZnByaW50bmV3bGluZSA9IGZhbHNlKSBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyLCBmcHJpbnRuZXdsaW5lIHx8IGJyZWFrYWJsZSBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IERFVk5VTCwgXyAtPiBGb3JtYXQuaWZwcmludGYgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbiAgfCBGb3JtYXR0ZXIgZm10LCB0cnVlIC0+IEZvcm1hdC5mcHJpbnRmIGZtdFxuICB8IEZvcm1hdHRlciBmbXQsIGZhbHNlIC0+IGNsZWFuIGZtdFxuICB8IENpcmN1bGFyX2J1ZmZlciBfLCBib29sIHwgSW5maW5pdGVfYnVmZmVyIF8sIGJvb2wgLT5cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICAgIGxldCBmbXRfYnVmZmVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICAgIEZvcm1hdC5rZnByaW50ZlxuICAgICAgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXRfYnVmZmVyICgpIGluXG4gICAgICAgIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgYiBpblxuICAgICAgICBsb2dnZXIuY3VycmVudF9saW5lIDwtXG4gICAgICAgICAgU3RyaW5nXG4gICAgICAgICAgICAoaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICBzdHJcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBjbGVhbl9zdHJpbmcgc3RyKVxuICAgICAgICAgIDo6IGxvZ2dlci5jdXJyZW50X2xpbmUpXG4gICAgICBmbXRfYnVmZmVyXG5cbmxldCBwcmludF9icmVha2FibGVfc3BhY2UgbG9nZ2VyID1cbiAgaWYgYnJlYWthYmxlIGxvZ2dlci5lbmNvZGluZyB0aGVuIChcbiAgICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+IGZwcmludGYgbG9nZ2VyIFwiQCBcIlxuICAgIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPlxuICAgICAgbG9nZ2VyLmN1cnJlbnRfbGluZSA8LSBCcmVha2FibGVfc3BhY2UgOjogbG9nZ2VyLmN1cnJlbnRfbGluZVxuICApIGVsc2VcbiAgICBmcHJpbnRmIGxvZ2dlciBcIiBcIlxuXG5sZXQgcHJpbnRfYnJlYWthYmxlX2hpbnQgbG9nZ2VyID1cbiAgaWYgYnJlYWthYmxlIGxvZ2dlci5lbmNvZGluZyB0aGVuIChcbiAgICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+IGZwcmludGYgbG9nZ2VyIFwiQCxcIlxuICAgIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPlxuICAgICAgbG9nZ2VyLmN1cnJlbnRfbGluZSA8LSBCcmVha2FibGVfaGludCA6OiBsb2dnZXIuY3VycmVudF9saW5lXG4gICkgZWxzZVxuICAgIGZwcmludGYgbG9nZ2VyIFwiXCJcblxubGV0IGVuZF9vZl9saW5lX3N5bWJvbCBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IEhUTUwgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggLT4gXCI8QnI+XCJcbiAgfCBNYXRyaXggfCBNYXRsYWIgfCBNYXRoZW1hdGljYSB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVCB8IEpzb25cbiAgfCBHRVBISSB8IEhUTUxfVGFidWxhciB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgWExTIC0+XG4gICAgXCJcIlxuXG5sZXQgZHVtcF90b2tlbiBmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgc1xuICB8IEJyZWFrYWJsZV9zcGFjZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQCBcIlxuICB8IEJyZWFrYWJsZV9oaW50IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJALFwiXG5cbmxldCBwcmludF9uZXdsaW5lIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgZnByaW50ZiB+ZnByaW50bmV3bGluZTp0cnVlIGxvZ2dlciBcIiVzJXRcIiAoZW5kX29mX2xpbmVfc3ltYm9sIGxvZ2dlcilcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBmICgpKVxuICBpblxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBiZiAtPlxuICAgIGxldCBiZicgPVxuICAgICAgQ2lyY3VsYXJfYnVmZmVycy5hZGRcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgKFBwLmxpc3QgKGZ1biBfIC0+ICgpKSBkdW1wX3Rva2VuKVxuICAgICAgICAgICAoTGlzdC5yZXYgbG9nZ2VyLmN1cnJlbnRfbGluZSkpXG4gICAgICAgICFiZlxuICAgIGluXG4gICAgbGV0ICgpID0gYmYgOj0gYmYnIGluXG4gICAgbGV0ICgpID0gbG9nZ2VyLmN1cnJlbnRfbGluZSA8LSBbXSBpblxuICAgICgpXG4gIHwgSW5maW5pdGVfYnVmZmVyIGJmIC0+XG4gICAgbGV0IGJmJyA9XG4gICAgICBJbmZpbml0ZV9idWZmZXJzLmFkZFxuICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAoUHAubGlzdCAoZnVuIF8gLT4gKCkpIGR1bXBfdG9rZW4pXG4gICAgICAgICAgIChMaXN0LnJldiBsb2dnZXIuY3VycmVudF9saW5lKSlcbiAgICAgICAgIWJmXG4gICAgaW5cbiAgICBsZXQgKCkgPSBiZiA6PSBiZicgaW5cbiAgICBsZXQgKCkgPSBsb2dnZXIuY3VycmVudF9saW5lIDwtIFtdIGluXG4gICAgKClcblxubGV0IHByaW50X2NlbGwgbG9nZ2VyIHMgPVxuICBsZXQgb3Blbl9jZWxsX3N5bWJvbCwgY2xvc2VfY2VsbF9zeW1ib2wgPVxuICAgIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gICAgfCBIVE1MX1RhYnVsYXIgLT4gXCI8VEQ+XCIsIFwiPC9URD5cIlxuICAgIHwgVFhUX1RhYnVsYXIgLT4gXCJcIiwgXCJcXHRcIlxuICAgIHwgTWF0cml4IHwgR0VQSEkgfCBKc29uIHwgTWF0aGVtYXRpY2EgfCBNYXRsYWIgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUxcbiAgICB8IERPVE5FVCB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCB8IEhUTUwgfCBET1QgfCBUWFQgfCBYTFMgLT5cbiAgICAgIFwiXCIsIFwiXCJcbiAgaW5cbiAgZnByaW50ZiBsb2dnZXIgXCIlcyVzJXNcIiBvcGVuX2NlbGxfc3ltYm9sIHMgY2xvc2VfY2VsbF9zeW1ib2xcblxubGV0IGZsdXNoX2xvZ2dlciBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgLT4gKClcbiAgfCBGb3JtYXR0ZXIgZm10IC0+IEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXQgKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgXyB8IEluZmluaXRlX2J1ZmZlciBfIC0+ICgpXG5cbmxldCBjbG9zZV9sb2dnZXIgbG9nZ2VyID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICAgIHwgSFRNTCAtPiBmcHJpbnRmIGxvZ2dlciBcIjwvZGl2PlxcbjwvYm9keT5cXG5cIlxuICAgIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPC9UQUJMRT5cXG48L2Rpdj5cXG48L2JvZHk+XCJcbiAgICB8IE1hdHJpeCAtPiBmcHJpbnRmIGxvZ2dlciBcIn1cXG5cIlxuICAgIHwgR0VQSEkgfCBKc29uIHwgTWF0bGFiIHwgTWF0aGVtYXRpY2EgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVRcbiAgICB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgWExTIC0+XG4gICAgICAoKVxuICBpblxuICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgbG9nZ2VyIGluXG4gICgpXG5cbmxldCBwcmludF9wcmVhbWJsZSBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IEhUTUwgLT4gZnByaW50ZiBsb2dnZXIgXCI8Ym9keT5cXG48ZGl2PlxcblwiXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPGJvZHk+XFxuPGRpdj5cXG48VEFCTEU+XFxuXCJcbiAgfCBNYXRyaXggLT5cbiAgICBsZXQgKCkgPSBmcHJpbnRmIGxvZ2dlciBcIntcIiBpblxuICAgIGxldCAoKSA9IHByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gZnByaW50ZiBsb2dnZXIgXCJcXFwiYmlvQmVnaW5UaW1lXFxcIiA6IDAuMDAwMDAwZSswMCxcIiBpblxuICAgIGxldCAoKSA9IHByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gZnByaW50ZiBsb2dnZXIgXCJcXFwiYmlvRW5kVGltZVxcXCIgOiAwLjAwMDAwMGUrMDAsXCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgICgpXG4gIHwgR0VQSEkgfCBKc29uIHwgTWF0bGFiIHwgTWF0aGVtYXRpY2EgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVRcbiAgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgICgpXG5cbmxldCBvcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgPyhtb2RlID0gVFhUKSBjaGFubmVsID1cbiAgbGV0IGZvcm1hdHRlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgY2hhbm5lbCBpblxuICBsZXQgbG9nZ2VyID1cbiAgICB7XG4gICAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgICAgbG9nZ2VyID0gRm9ybWF0dGVyIGZvcm1hdHRlcjtcbiAgICAgIGNoYW5uZWxfb3B0ID0gU29tZSBjaGFubmVsO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyID8obW9kZSA9IFRYVCkgZm9ybWF0dGVyID1cbiAgbGV0IGxvZ2dlciA9XG4gICAge1xuICAgICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICAgIGxvZ2dlciA9IEZvcm1hdHRlciBmb3JtYXR0ZXI7XG4gICAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgICBlbmNvZGluZyA9IG1vZGU7XG4gICAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfcHJlYW1ibGUgbG9nZ2VyIGluXG4gIGxvZ2dlclxuXG5sZXQgb3Blbl9jaXJjdWxhcl9idWZmZXIgPyhtb2RlID0gVFhUKSA/KHNpemUgPSAxMCkgKCkgPVxuICB7XG4gICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgbG9nZ2VyID0gQ2lyY3VsYXJfYnVmZmVyIChyZWYgKENpcmN1bGFyX2J1ZmZlcnMuY3JlYXRlIHNpemUgXCJcIikpO1xuICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICBlbmNvZGluZyA9IG1vZGU7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgfVxuXG5sZXQgb3Blbl9pbmZpbml0ZV9idWZmZXIgPyhtb2RlID0gVFhUKSAoKSA9XG4gIGxldCBsb2dnZXIgPVxuICAgIHtcbiAgICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgICBsb2dnZXIgPSBJbmZpbml0ZV9idWZmZXIgKHJlZiAoSW5maW5pdGVfYnVmZmVycy5jcmVhdGUgMCBcIlwiKSk7XG4gICAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgICBlbmNvZGluZyA9IG1vZGU7XG4gICAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfcHJlYW1ibGUgbG9nZ2VyIGluXG4gIGxvZ2dlclxuXG5sZXQgb3Blbl9yb3cgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MX1RhYnVsYXIgLT4gZnByaW50ZiBsb2dnZXIgXCI8dHI+XCJcbiAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJbXCJcbiAgfCBKc29uIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWF0aGVtYXRpY2EgfCBNYXBsZSB8IFNCTUwgfCBET1RORVQgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGggfCBYTFMgfCBIVE1MIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBHRVBISSAtPlxuICAgICgpXG5cbmxldCBjbG9zZV9yb3cgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MX1RhYnVsYXIgLT4gZnByaW50ZiBsb2dnZXIgXCI8dHI+QC5cIlxuICB8IE1hdHJpeCAtPiBmcHJpbnRmIGxvZ2dlciBcIl1cXG5cIlxuICB8IEpzb24gfCBNYXRsYWIgfCBPY3RhdmUgfCBNYXBsZSB8IE1hdGhlbWF0aWNhIHwgU0JNTCB8IERPVE5FVCB8IEhUTUxfR3JhcGhcbiAgfCBKc19HcmFwaCB8IFhMUyB8IEhUTUwgfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IEdFUEhJIC0+XG4gICAgZnByaW50ZiBsb2dnZXIgXCJALlwiXG5cbmxldCBmb3JtYXR0ZXJfb2ZfbG9nZ2VyIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IEZvcm1hdHRlciBmbXQgLT4gU29tZSBmbXRcbiAgfCBERVZOVUwgfCBDaXJjdWxhcl9idWZmZXIgXyB8IEluZmluaXRlX2J1ZmZlciBfIC0+IE5vbmVcblxubGV0IHJlZGlyZWN0IGxvZ2dlciBmbXQgPSB7IGxvZ2dlciB3aXRoIGxvZ2dlciA9IEZvcm1hdHRlciBmbXQgfVxubGV0IHByaW50X2FzX2xvZ2dlciBsb2dnZXIgZiA9IGZwcmludGYgbG9nZ2VyIFwiJXRcIiBmXG5cbmxldCBmbHVzaF9idWZmZXIgbG9nZ2VyIGZtdCA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGEgLT4gQ2lyY3VsYXJfYnVmZmVycy5pdGVyIChGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiKSAhYVxuICB8IEluZmluaXRlX2J1ZmZlciBiIC0+IEluZmluaXRlX2J1ZmZlcnMuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikgIWJcblxubGV0IGZsdXNoX2FuZF9jbGVhbiBsb2dnZXIgZm10ID1cbiAgbGV0ICgpID0gZmx1c2hfYnVmZmVyIGxvZ2dlciBmbXQgaW5cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgYSAtPiBhIDo9IENpcmN1bGFyX2J1ZmZlcnMuY2xlYW4gIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBiIDo9IEluZmluaXRlX2J1ZmZlcnMuY2xlYW4gIWJcblxubGV0IGZwcmludGYgbG9nZ2VyID0gZnByaW50ZiB+ZnByaW50bmV3bGluZTpmYWxzZSBsb2dnZXJcbmxldCBjaGFubmVsX29mX2xvZ2dlciBsb2dnZXIgPSBsb2dnZXIuY2hhbm5lbF9vcHRcblxubGV0IHByaW50X2JpbmRpbmdfdHlwZSB0ID8oYmluZGluZ190eXBlX3N5bWJvbCA9IFwiLlwiKSB+YWdlbnRfbmFtZSB+c2l0ZV9uYW1lICgpXG4gICAgPVxuICBmcHJpbnRmIHQgXCIlc1wiXG4gICAgKFB1YmxpY19kYXRhLnN0cmluZ19vZl9iaW5kaW5nX3R5cGUgfmJpbmRpbmdfdHlwZV9zeW1ib2wgfmFnZW50X25hbWVcbiAgICAgICB+c2l0ZV9uYW1lICgpKVxuXG5sZXQgZHVtcF9qc29uIGxvZ2dlciBqc29uID1cbiAgbGV0IGNoYW5uZWxfb3B0ID0gY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2hhbm5lbF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjaGFubmVsIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMudG9fY2hhbm5lbCBjaGFubmVsIGpzb24gaW5cbiAgICAgICgpXG4gIGluXG4gICgpXG5cbmxldCBsaW5lX3RvX2pzb24gbGluZSA9IGBBc3NvYyBbIFwibGluZVwiLCBKc29uVXRpbC5vZl9zdHJpbmcgbGluZSBdXG5cbmxldCBsaW5lX29mX2pzb24ganNvbiA9XG4gIG1hdGNoIGpzb24gd2l0aFxuICB8IGBBc3NvYyBbIChcImxpbmVcIiwgYFN0cmluZyBzKSBdIC0+IHNcbiAgfCBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJsaW5lXCIsIGpzb24pKVxuXG5sZXQgZ2VuX2l0ZXIgaXRlciBsaXN0ID1cbiAgbGV0IG91dHB1dCA9IHJlZiBbXSBpblxuICBsZXQgKCkgPSBpdGVyIChmdW4gbGluZSAtPiBvdXRwdXQgOj0gbGluZSA6OiAhb3V0cHV0KSBsaXN0IGluXG4gIEpzb25VdGlsLm9mX2xpc3QgbGluZV90b19qc29uIChMaXN0LnJldiAhb3V0cHV0KVxuXG5sZXQgb2ZfanNvbiA9IEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImxpbmUgbGlzdFwiIGxpbmVfb2ZfanNvblxuXG5sZXQgdG9fanNvbiBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBgTGlzdCBbXVxuICB8IENpcmN1bGFyX2J1ZmZlciBhIC0+IGdlbl9pdGVyIENpcmN1bGFyX2J1ZmZlcnMuaXRlciAhYVxuICB8IEluZmluaXRlX2J1ZmZlciBiIC0+IGdlbl9pdGVyIEluZmluaXRlX2J1ZmZlcnMuaXRlciAhYlxuIiwibGV0IHN0cmluZ19vZl91bl9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bWludXMvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIi1cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTE9HIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bG9nLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJsb2dcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuU1FSVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHJvb3QvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcInNxcnRcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuRVhQIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8ZXhwLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJleHBcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuU0lOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxzaW4vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcInNpblwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5DT1NJTlVTIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8Y29zLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJjb3NcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuVEFOIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8dGFuLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJ0YW5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuSU5UIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8Zmxvb3IvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImZsb29yXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX2NvbXBhcmVfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLkVRVUFMIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8ZXEvPlwiXG4gICAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIC0+IFwiPT1cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPiBcIj1cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuRElGRiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG5lcS8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiIT1cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuU01BTExFUiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGx0Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCI8XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkdSRUFURVIgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxndC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiPlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl9iaW5fb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLk1PRFVMTyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHJlbS8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwibW9kXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLk1BWCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1heC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwibWF4XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLk1JTiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbi8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwibWluXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkRJViAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGRpdmlkZS8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiL1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TVU0gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxwbHVzLz5cIlxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCIrXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bWludXMvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIi1cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHRpbWVzLz5cIlxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCIqXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlBPVyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHBvd2VyLz5cIlxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCIqKlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl9iaW5fYm9vbF9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuQU5EIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8YW5kLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCImXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLk9SIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8b3IvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcInxcIlxuICAgIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfdW5fYm9vbF9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuTk9UIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bm90Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCIhXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuIiwiKCoqXG4gICogZ3JhcGhfbG9nZ2Vyc19zaWcubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjMvMDUvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIGRpcmVjdGlvbiA9IERpcmVjdCB8IFJldmVyc2UgfCBVbmRpcmVjdGVkIHwgQm90aFxudHlwZSBzaGFwZSA9IEludmlzaWJsZSB8IEhvdXNlIHwgUmVjdCB8IEVsbGlwc2UgfCBDaXJjbGUgfCBJbnZob3VzZVxudHlwZSBoZWFka2luZCA9IE5vcm1hbCB8IFZlZSB8IFRlZSB8IE5vX2hlYWRcbnR5cGUgbGluZXN0eWxlID0gUGxhaW4gfCBEb3R0ZWQgfCBEYXNoZWRcblxudHlwZSBjb2xvciA9XG4gIHwgUmVkXG4gIHwgR3JlZW5cbiAgfCBXaGl0ZVxuICB8IEJsdWVcbiAgfCBCbGFja1xuICB8IExpZ2h0U2t5Qmx1ZVxuICB8IFBhbGVHcmVlblxuICB8IEJyb3duXG4gIHwgWWVsbG93XG4gIHwgR3JleVxuXG50eXBlIG9wdGlvbnMgPVxuICB8IENvbG9yIG9mIGNvbG9yXG4gIHwgRmlsbENvbG9yIG9mIGNvbG9yXG4gIHwgTGFiZWwgb2Ygc3RyaW5nXG4gIHwgV2lkdGggb2YgaW50ICgqcGl4ZWwqKVxuICB8IEhlaWdodCBvZiBpbnQgKCpwaXhlbCopXG4gIHwgRGlyZWN0aW9uIG9mIGRpcmVjdGlvblxuICB8IFNoYXBlIG9mIHNoYXBlXG4gIHwgQXJyb3dIZWFkIG9mIGhlYWRraW5kXG4gIHwgQXJyb3dUYWlsIG9mIGhlYWRraW5kXG4gIHwgTGluZVN0eWxlIG9mIGxpbmVzdHlsZVxuICB8IE9uQ2xpY2sgb2YgWW9qc29uLkJhc2ljLnRcbiAgfCBDb250ZXh0dWFsX2hlbHAgb2Ygc3RyaW5nXG4gIHwgUG9zaXRpb24gb2YgTG9jLnQgbGlzdFxuXG50eXBlIGdyYXBoID1cbiAgKHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdCAqIChzdHJpbmcgKiBzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3RcblxudHlwZSB0ID0ge1xuICBsb2dnZXI6IExvZ2dlcnMudDtcbiAgaWRfbWFwOiBpbnQgTW9kcy5TdHJpbmdNYXAudCByZWY7XG4gIGZyZXNoX2lkOiBpbnQgcmVmO1xuICBub2RlczogKHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdCByZWY7XG4gIGVkZ2VzOiAoc3RyaW5nICogc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0IHJlZjtcbiAgZWRnZXNfbWFwOiBvcHRpb25zIGxpc3QgbGlzdCBNb2RzLlN0cmluZzJNYXAudCByZWY7XG59XG5cbmxldCBsaWZ0IHQgPSB0LmxvZ2dlclxuXG5sZXQgZXh0ZW5kX2xvZ2dlciBsb2dnZXIgPVxuICB7XG4gICAgbG9nZ2VyO1xuICAgIGlkX21hcCA9IHJlZiBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBmcmVzaF9pZCA9IHJlZiAxO1xuICAgIG5vZGVzID0gcmVmIFtdO1xuICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7XG4gIH1cblxubGV0IHJlZnJlc2hfaWQgdCA9XG4gIGxldCAoKSA9IHQuaWRfbWFwIDo9IE1vZHMuU3RyaW5nTWFwLmVtcHR5IGluXG4gIGxldCAoKSA9IHQubm9kZXMgOj0gW10gaW5cbiAgbGV0ICgpID0gdC5lZGdlcyA6PSBbXSBpblxuICBsZXQgKCkgPSB0LmZyZXNoX2lkIDo9IDEgaW5cbiAgKClcblxubGV0IGFkZF9ub2RlIHQgcyBkID0gdC5ub2RlcyA6PSAocywgZCkgOjogISh0Lm5vZGVzKVxuXG5sZXQgYWRkX2VkZ2UgdCBzMSBzMiBkID1cbiAgbGV0ICgpID0gdC5lZGdlcyA6PSAoczEsIHMyLCBkKSA6OiAhKHQuZWRnZXMpIGluXG4gIGxldCBtYXAgPSAhKHQuZWRnZXNfbWFwKSBpblxuICBsZXQgb2xkX2xpc3QgPVxuICAgIG1hdGNoIE1vZHMuU3RyaW5nMk1hcC5maW5kX29wdGlvbiAoczEsIHMyKSBtYXAgd2l0aFxuICAgIHwgU29tZSBsIC0+IGxcbiAgICB8IE5vbmUgLT4gW11cbiAgaW5cbiAgbGV0ICgpID0gdC5lZGdlc19tYXAgOj0gTW9kcy5TdHJpbmcyTWFwLmFkZCAoczEsIHMyKSAoZCA6OiBvbGRfbGlzdCkgbWFwIGluXG4gICgpXG5cbmxldCBncmFwaF9vZl9sb2dnZXIgbG9nZ2VyID0gTGlzdC5yZXYgIShsb2dnZXIubm9kZXMpLCBMaXN0LnJldiAhKGxvZ2dlci5lZGdlcylcbmxldCBnZXRfZWRnZV9tYXAgdCA9ICEodC5lZGdlc19tYXApXG5sZXQgZ2V0X25vZGVzIHQgPSAhKHQubm9kZXMpXG5sZXQgZnJlc2hfaWQgbG9nZ2VyID0gVG9vbHMuZ2V0X3JlZiBsb2dnZXIuZnJlc2hfaWRcblxubGV0IGludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIHN0cmluZyA9XG4gIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIHN0cmluZyAhKGxvZ2dlci5pZF9tYXApIHdpdGhcbiAgfCBTb21lIGEgLT4gYVxuICB8IE5vbmUgLT5cbiAgICBsZXQgaSA9IGZyZXNoX2lkIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGxvZ2dlci5pZF9tYXAgOj0gTW9kcy5TdHJpbmdNYXAuYWRkIHN0cmluZyBpICEobG9nZ2VyLmlkX21hcCkgaW5cbiAgICBpXG4iLCIoKipcbiAgKiBncmFwaF9sb2dnZXJzLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRvdF9jb2xvcl9lbmNvZGluZyB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93IC0+IFwieWVsbG93XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5IC0+IFwiZ3JleVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IFwicmVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBcImdyZWVuXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaGl0ZSAtPiBcIndoaXRlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IFwiYmx1ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gXCJibGFja1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlIC0+IFwiIzg3Y2VlYlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IFwiIzk4ZmI5OFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd24gLT4gXCJicm93blwiXG5cbmxldCBzdmdfY29sb3JfZW5jb2RpbmcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBcIiNmZjNcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gXCIjYWFhXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgLT4gXCIjZjAwXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBcIiMwZjBcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IFwiI2ZmZlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBcIiMwMGZcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrIC0+IFwiIzAwMFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlIC0+IFwiIzhjZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IFwiIzlmOVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd24gLT4gXCIjZmM5XCJcblxudHlwZSBub2RlX2F0dHJpYnV0ZSA9IHtcbiAgbm9kZV9jb2xvcjogR3JhcGhfbG9nZ2Vyc19zaWcuY29sb3Igb3B0aW9uO1xuICBub2RlX2ZpbGxjb2xvcjogR3JhcGhfbG9nZ2Vyc19zaWcuY29sb3Igb3B0aW9uO1xuICBub2RlX2xhYmVsOiBzdHJpbmcgb3B0aW9uO1xuICBub2RlX3dpZHRoOiBpbnQgb3B0aW9uO1xuICBub2RlX2hlaWdodDogaW50IG9wdGlvbjtcbiAgbm9kZV9zaGFwZTogR3JhcGhfbG9nZ2Vyc19zaWcuc2hhcGUgb3B0aW9uO1xuICBub2RlX3Bvc2l0aW9uczogTG9jLnQgbGlzdDtcbiAgbm9kZV9jb250ZXh0dWFsX2hlbHA6IHN0cmluZyBvcHRpb247XG4gIG5vZGVfb25fY2xpY2s6IFlvanNvbi5CYXNpYy50IG9wdGlvbjtcbn1cblxudHlwZSBlZGdlX2F0dHJpYnV0ZSA9IHtcbiAgZWRnZV9jb2xvcjogR3JhcGhfbG9nZ2Vyc19zaWcuY29sb3Igb3B0aW9uO1xuICBlZGdlX2xhYmVsOiBzdHJpbmcgbGlzdCBvcHRpb247XG4gIGVkZ2Vfc3R5bGU6IEdyYXBoX2xvZ2dlcnNfc2lnLmxpbmVzdHlsZTtcbiAgZWRnZV9kaXJlY3Rpb246IEdyYXBoX2xvZ2dlcnNfc2lnLmRpcmVjdGlvbjtcbiAgZWRnZV9hcnJvd2hlYWQ6IEdyYXBoX2xvZ2dlcnNfc2lnLmhlYWRraW5kO1xuICBlZGdlX2Fycm93dGFpbDogR3JhcGhfbG9nZ2Vyc19zaWcuaGVhZGtpbmQ7XG4gIGVkZ2VfcG9zaXRpb25zOiBMb2MudCBsaXN0O1xuICBlZGdlX2NvbnRleHR1YWxfaGVscDogc3RyaW5nIG9wdGlvbjtcbiAgZWRnZV9vbl9jbGljazogWW9qc29uLkJhc2ljLnQgb3B0aW9uO1xufVxuXG5sZXQgZHVtbXlfbm9kZSA9XG4gIHtcbiAgICBub2RlX2NvbG9yID0gTm9uZTtcbiAgICBub2RlX2ZpbGxjb2xvciA9IE5vbmU7XG4gICAgbm9kZV9sYWJlbCA9IE5vbmU7XG4gICAgbm9kZV93aWR0aCA9IE5vbmU7XG4gICAgbm9kZV9oZWlnaHQgPSBOb25lO1xuICAgIG5vZGVfc2hhcGUgPSBOb25lO1xuICAgIG5vZGVfcG9zaXRpb25zID0gW107XG4gICAgbm9kZV9vbl9jbGljayA9IE5vbmU7XG4gICAgbm9kZV9jb250ZXh0dWFsX2hlbHAgPSBOb25lO1xuICB9XG5cbmxldCBkdW1teV9lZGdlID1cbiAge1xuICAgIGVkZ2VfY29sb3IgPSBOb25lO1xuICAgIGVkZ2VfbGFiZWwgPSBOb25lO1xuICAgIGVkZ2Vfc3R5bGUgPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbjtcbiAgICBlZGdlX2RpcmVjdGlvbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdDtcbiAgICBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbDtcbiAgICBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbDtcbiAgICBlZGdlX3Bvc2l0aW9ucyA9IFtdO1xuICAgIGVkZ2Vfb25fY2xpY2sgPSBOb25lO1xuICAgIGVkZ2VfY29udGV4dHVhbF9oZWxwID0gTm9uZTtcbiAgfVxuXG5sZXQgaXNfbm9fbm9kZV9hdHRyaWJ1dGVzIG5vZGVfYXR0cmlidXRlID0gbm9kZV9hdHRyaWJ1dGUgPSBkdW1teV9ub2RlXG5cbmxldCBpc19ub19lZGdlX2F0dHJpYnV0ZXMgZWRnZV9hdHRyaWJ1dGUgPVxuICBkdW1teV9lZGdlXG4gID0ge1xuICAgICAgZWRnZV9hdHRyaWJ1dGUgd2l0aFxuICAgICAgZWRnZV9kaXJlY3Rpb24gPSBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Q7XG4gICAgICBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbDtcbiAgICAgIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgIH1cblxubGV0IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgPVxuICBpZiBib29sIHRoZW5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiBcIlxuICBlbHNlXG4gICAgKClcblxubGV0IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsIFwiXG4gIGVsc2VcbiAgICAoKVxuXG5sZXQgaHRtbF9kZXBzID1cbiAgW1xuICAgIFwiaHR0cDovL2QzanMub3JnL2QzLnYzLm1pbi5qc1wiO1xuICAgIFwiaHR0cDovL2NwZXR0aXR0LmdpdGh1Yi5pby9wcm9qZWN0L2RhZ3JlLWQzL2xhdGVzdC9kYWdyZS1kMy5taW4uanNcIjtcbiAgXVxuXG5sZXQgc2hhbGxfSV9kb19pdCBmb3JtYXQgZmlsdGVyX2luIGZpbHRlcl9vdXQgPVxuICBsZXQgYjEgPVxuICAgIG1hdGNoIGZpbHRlcl9pbiB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgbCAtPiBMaXN0Lm1lbSBmb3JtYXQgbFxuICBpblxuICBiMSAmJiBub3QgKExpc3QubWVtIGZvcm1hdCBmaWx0ZXJfb3V0KVxuXG5sZXQgcHJpbnRfcHJlYW1ibGVfc2hhcmVkX2h0bWxfanMgZiB0aXRsZSA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGl2IGNsYXNzPVxcXCJjb250YWluZXJcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxoMT5AWyVzQF08L2gxPkAsXCIgdGl0bGUgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxzdmcgd2lkdGg9OTYwIGhlaWdodD02MDA+PGcvPjwvc3ZnPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxzY3JpcHQ+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ3JlYXRlIGEgbmV3IGRpcmVjdGVkIGdyYXBoQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgZyA9IG5ldyBkYWdyZUQzLmdyYXBobGliLkdyYXBoKCkuc2V0R3JhcGgoe30pO0AsXCJcbiAgaW5cblxuICAoKVxuXG5sZXQgcHJpbnRfZ3JhcGhfcHJlYW1ibGUgbG9nZ2VyID8oZmlsdGVyX2luID0gTm9uZSkgPyhmaWx0ZXJfb3V0ID0gW10pXG4gICAgPyhoZWFkZXIgPSBbXSkgdGl0bGUgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgaWYgc2hhbGxfSV9kb19pdCBmb3JtYXQgZmlsdGVyX2luIGZpbHRlcl9vdXQgdGhlbiAoXG4gICAgbWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIyVzXCIgeCBpblxuICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICAgICgpKVxuICAgICAgICAgIGhlYWRlclxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiZGlncmFwaCBHe1wiIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKClcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICAgICgqIElOIFBST0dFU1MgKilcbiAgICAgIGxldCBmX29wdCA9IExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAobWF0Y2ggZl9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZiAtPiBwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyBmIHRpdGxlKVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKG1hdGNoIGZfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCI8IS0tQCxcIiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIiB4IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgaGVhZGVyXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLS0+QCxcIiBpblxuICAgICAgICBsZXQgZGVwZW5kZW5jeSBmIHQgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8c2NyaXB0IHNyYz1cXFwiJXNcXFwiIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj48L3NjcmlwdD5cIiB0XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PjwhZG9jdHlwZSBodG1sPkAsQCw8aHRtbD5ALFwiIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGhlYWQ+QCw8bWV0YSBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPiVzPC90aXRsZT5ALFwiIHRpdGxlIGluXG4gICAgICAgIGxldCAoKSA9IFBwLmxpc3QgfnRyYWlsaW5nOlBwLnNwYWNlIFBwLnNwYWNlIGRlcGVuZGVuY3kgZiBodG1sX2RlcHMgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXRAXUAsPC9oZWFkPkAsXCIgKGZ1biBmIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHN0eWxlPkAsXCIgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZHQge2Zsb2F0OiBsZWZ0OyBjbGVhcjogbGVmdDsgd2lkdGg6IDIwZW07fUAsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZGQge2ZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW46IDAgMCAwIDIxZW07fUAsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLm5vZGUgcmVjdCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjZmZmO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgXCIuZWRnZVBhdGggcGF0aCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjMzMzOyBzdHJva2Utd2lkdGg6IFxcXG4gICAgICAgICAgICAgICAgICAgMS41cHg7fVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAsPC9zdHlsZT5cIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48Ym9keT5ALFwiIGluXG4gICAgICAgIGxldCAoKSA9IHByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIGYgdGl0bGUgaW5cbiAgICAgICAgKCkpXG4gICAgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdGhlbWF0aWNhXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUXG4gICAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgICgpXG4gIClcblxubGV0IHN0cmluZ19vZl9hcnJvd19pbl9odG1sIGxvZ2dlciBib29sIHRpdGxlIHN0eWxlID1cbiAgbWF0Y2ggc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBib29sXG4gICgqfCBUZWUgLT5cbiAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiJXM6IFxcXCJ0ZWVcXFwiXCIgdGl0bGVcbiAgICAgICAgaW5cbiAgICAgICAgdHJ1ZSopXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+XG4gICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlczogXFxcInZlZVxcXCJcIiB0aXRsZVxuICAgIGluXG4gICAgdHJ1ZVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT5cbiAgICAoKiBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIiVzOiBcXFwibm9uZVxcXCJcIiB0aXRsZVxuICAgICAgIGluXG4gICAgICAgdHJ1ZSopXG4gICAgYm9vbFxuXG5sZXQgbWVyZ2UgcyBzJyA9XG4gIGlmIHMgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIHRoZW5cbiAgICBzJ1xuICBlbHNlXG4gICAgc1xuXG5sZXQgbWF0cml4X3N0cmluZ19vZl9vcHRpb25zIGwgPVxuICBsZXQgaSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGkgbCAtPlxuICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciB4IC0+XG4gICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd24gLT4gaSAqIDdcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrIC0+IGlcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IGkgKiAzXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgLT4gaSAqIC0xXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IGkgKiA1XG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaGl0ZSAtPiBpXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gaSAqIDExXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gaSAqIDEzXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5IC0+IGkgKiAxN1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93IC0+IGkgKiAxOSlcbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIF8gLT5cbiAgICAgICAgICAgICBpKSlcbiAgICAgIDEgbFxuICBpblxuICBzdHJpbmdfb2ZfaW50IGlcblxubGV0IHByaW50X2Zvb3Rfc2hhcmVkX2h0bWxfanMgbG9nZ2VyID1cbiAgbGV0ICgpID1cbiAgICBNb2RzLlN0cmluZzJNYXAuaXRlclxuICAgICAgKGZ1biAoaWQxLCBpZDIpIGxpc3QgLT5cbiAgICAgICAgbGV0IGxpc3QgPSBMaXN0LnJldiBsaXN0IGluXG4gICAgICAgIGxldCBpZDFfaW50ID0gR3JhcGhfbG9nZ2Vyc19zaWcuaW50X29mX3N0cmluZ19pZCBsb2dnZXIgaWQxIGluXG4gICAgICAgIGxldCBpZDJfaW50ID0gR3JhcGhfbG9nZ2Vyc19zaWcuaW50X29mX3N0cmluZ19pZCBsb2dnZXIgaWQyIGluXG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID0gZHVtbXlfZWRnZSBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYXR0cmlidXRlcyBvcHRpb25fbGlzdCAtPlxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gYXR0cmlidXRlcyBvcHRpb24gLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2xhYmVsID0gU29tZSBbIHMgXSB9XG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBzJyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfbGFiZWwgPSBTb21lIChzIDo6IFwiLFwiIDo6IHMnKSB9KVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBzIC0+XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29sb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9jb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBzJyB3aGVuIHMgPSBzJyAtPiBhdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGdlX2NvbG9yID0gU29tZSBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93bjtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgcyAtPlxuICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3N0eWxlID0gcyB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfZGlyZWN0aW9uID0gcyB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX2Fycm93dGFpbCA9IG1lcmdlIHMgYXR0cmlidXRlcy5lZGdlX2Fycm93dGFpbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgcyAtPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgZWRnZV9hcnJvd2hlYWQgPSBtZXJnZSBzIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd2hlYWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgZWRnZV9wb3NpdGlvbnMgPSBwIEAgYXR0cmlidXRlcy5lZGdlX3Bvc2l0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgcyAtPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgZWRnZV9jb250ZXh0dWFsX2hlbHAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFNvbWUgc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+IFNvbWUgKHMnIF4gcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPlxuICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX29uX2NsaWNrID0gU29tZSBqc29uIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgX1xuICAgICAgICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgb3B0aW9uX2xpc3QpXG4gICAgICAgICAgICBhdHRyaWJ1dGVzIGxpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgIFwiZy5zZXRFZGdlKCVpLCVpLHsgXCIgaWQxX2ludCBpZDJfaW50XG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfZGlyZWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZDtcbiAgICAgICAgICAgICAgZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZSAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGggLT4gYXR0cmlidXRlc1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9IGZhbHNlIGluXG4gICAgICAgIGxldCBib29sLCBzX29wdCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbCwgTm9uZVxuICAgICAgICAgIHwgU29tZSBzdHJpbmdfbGlzdCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJsYWJlbDogXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgKGZ1biBmbXQgLT4gTGlzdC5pdGVyIChGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgc3RyaW5nX2xpc3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHNfb3B0LCBzJyA9XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA+IDEwMCB0aGVuXG4gICAgICAgICAgICAgICAgU29tZSBzLCBTdHJpbmcuc3ViIHMgMCAxMDAgXiBcIi4uLlwiXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBOb25lLCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1xcXCJcIiBzJ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWUsIHNfb3B0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgY29sb3IgPSBzdmdfY29sb3JfZW5jb2RpbmcgcyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwic3R5bGU6IFxcXCJzdHJva2U6ICVzOyBmaWxsOiB3aGl0ZVxcXCIsIGFycm93aGVhZFN0eWxlOiBcXFwiZmlsbDogXFxcbiAgICAgICAgICAgICAgICAgJXM7IHN0cm9rZTogJXNcXFwiXCJcbiAgICAgICAgICAgICAgICBjb2xvciBjb2xvciBjb2xvclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIHN0cmluZ19vZl9hcnJvd19pbl9odG1sIGxvZ2dlciBib29sIFwiYXJyb3doZWFkXCJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd2hlYWRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIHN0cmluZ19vZl9hcnJvd19pbl9odG1sIGxvZ2dlciBib29sIFwiYXJyb3d0YWlsXCJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd3RhaWxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgfSk7QCxcIiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHNfb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCI8IS0tJXMtLT5cXG5cIiBzXG4gICAgICAgIGluXG4gICAgICAgICgpKVxuICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmdldF9lZGdlX21hcCBsb2dnZXIpXG4gIGluXG4gIGxldCBmX29wdCA9IExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gIG1hdGNoIGZfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJ2YXIgc3ZnID0gZDMuc2VsZWN0KFxcXCJzdmdcXFwiKSxpbm5lciA9IHN2Zy5zZWxlY3QoXFxcImdcXFwiKTtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gU2V0IHVwIHpvb20gc3VwcG9ydEAsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcInZhciB6b29tID0gZDMuYmVoYXZpb3Iuem9vbSgpLm9uKFxcXCJ6b29tXFxcIiwgZnVuY3Rpb24oKSB7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJpbm5lci5hdHRyKFxcXCJ0cmFuc2Zvcm1cXFwiLCBcXFwidHJhbnNsYXRlKFxcXCIgKyBkMy5ldmVudC50cmFuc2xhdGUgKyBcXFwiKVxcXCIgXFxcbiAgICAgICAgICtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIlxcXCJzY2FsZShcXFwiICsgZDMuZXZlbnQuc2NhbGUgKyBcXFwiKVxcXCIpO0AsfSk7QCxzdmcuY2FsbCh6b29tKTtcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCIvLyBDcmVhdGUgdGhlIHJlbmRlcmVyQCwgdmFyIHJlbmRlciA9IG5ldyBkYWdyZUQzLnJlbmRlcigpO0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiLy8gUnVuIHRoZSByZW5kZXJlci4gVGhpcyBpcyB3aGF0IGRyYXdzIHRoZSBmaW5hbCBncmFwaC5ALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwicmVuZGVyKGlubmVyLCBnKTtALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDZW50ZXIgdGhlIGdyYXBoQCx2YXIgaW5pdGlhbFNjYWxlID0gMC43NTtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiem9vbUAsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIi50cmFuc2xhdGUoWyhzdmcuYXR0cihcXFwid2lkdGhcXFwiKSAtIGcuZ3JhcGgoKS53aWR0aCAqIGluaXRpYWxTY2FsZSkgLyBcXFxuICAgICAgICAgMiwgMjBdKUAsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIuc2NhbGUoaW5pdGlhbFNjYWxlKUAsLmV2ZW50KHN2Zyk7QCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwic3ZnLmF0dHIoJ2hlaWdodCcsIGcuZ3JhcGgoKS5oZWlnaHQgKiBpbml0aWFsU2NhbGUgKyA0MCk7XCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALDwvc2NyaXB0PlwiIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsPC9kaXY+XCIgaW5cbiAgICAoKVxuXG5sZXQgcHJpbnRfZ3JhcGhfZm9vdCBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIn1cIiBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gIHwgTG9nZ2Vycy5NYXRyaXggLT5cbiAgICBsZXQgbm9kZXMgPSBHcmFwaF9sb2dnZXJzX3NpZy5nZXRfbm9kZXMgbG9nZ2VyIGluXG4gICAgbGV0IGVkZ2VzID0gR3JhcGhfbG9nZ2Vyc19zaWcuZ2V0X2VkZ2VfbWFwIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcInJ1bGVzXFxcIiA6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc2VwIChzLCBfKSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXFxcIiVzXFxcIlwiIHNlcCBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBcIiwgXCIpXG4gICAgICAgIFwiXCIgbm9kZXNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIixcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiaGl0c1xcXCIgOlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlcCBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlczFcIiBzZXAgaW5cbiAgICAgICAgICBcIiwgXCIpXG4gICAgICAgIFwiXCIgbm9kZXNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIixcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiZmx1eHNcXFwiIDpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBiIChzMSwgXykgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgYiB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gc2VwIChzMiwgXykgLT5cbiAgICAgICAgICAgICAgICBsZXQgY29sb3JfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggTW9kcy5TdHJpbmcyTWFwLmZpbmRfb3B0aW9uIChzMSwgczIpIGVkZ2VzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIjBcIlxuICAgICAgICAgICAgICAgICAgfCBTb21lIG9wdGlvbnMgLT4gbWF0cml4X3N0cmluZ19vZl9vcHRpb25zIG9wdGlvbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgICAgICBcIiVzJXNcIiBzZXAgY29sb3JfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFwiLCBcIilcbiAgICAgICAgICAgICAgXCJcIiBub2Rlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgIHRydWUpXG4gICAgICAgIGZhbHNlIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAoKVxuICB8IExvZ2dlcnMuSnNfR3JhcGggLT4gcHJpbnRfZm9vdF9zaGFyZWRfaHRtbF9qcyBsb2dnZXJcbiAgfCBMb2dnZXJzLkhUTUxfR3JhcGggLT5cbiAgICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIChtYXRjaCBmX29wdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT5cbiAgICAgIGxldCAoKSA9IHByaW50X2Zvb3Rfc2hhcmVkX2h0bWxfanMgbG9nZ2VyIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCw8L2JvZHk+QF1ALDwvaHRtbD5AXUAuXCIgaW5cbiAgICAgICgpKVxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZVxuICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuU0JNTFxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfY29tbWVudCBsb2dnZXIgPyhmaWx0ZXJfaW4gPSBOb25lKSA/KGZpbHRlcl9vdXQgPSBbXSkgc3RyaW5nID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gIGlmIHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0IHRoZW4gKFxuICAgIG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLkRPVCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIjJXNcIiBzdHJpbmdcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIiBzdHJpbmdcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXJcbiAgICB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICAgKClcbiAgKVxuXG5sZXQgb3Blbl9hc3NvIGxvZ2dlciA9XG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXHQ8cD48ZGw+XFxuXCJcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5NYXBsZVxuICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0cml4XG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUXG4gIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBjbG9zZV9hc3NvIGxvZ2dlciA9XG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXHRcXHQ8L2RsPjwvcD5cXG5cIlxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5NYXRyaXhcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRcbiAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgKClcblxubGV0IHByaW50X2Fzc28gbG9nZ2VyIHN0cmluZzEgc3RyaW5nMiA9XG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLyolcyAlcyovXCIgc3RyaW5nMSBzdHJpbmcyXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgXCJcXHRcXHRcXHQ8ZHQ+JXM8L2R0PjxkZD4lczwvZGQ+XCIgc3RyaW5nMSBzdHJpbmcyXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuU0JNTFxuICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYVxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgKClcblxubGV0IHNoYXBlX2luX2RvdCBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gXCJzdHlsZT1pbnZpc1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2UgLT4gXCJzaGFwZT1pbnZob3VzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2UgLT4gXCJzaGFwZT1ob3VzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdCAtPiBcInNoYXBlPWJveFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZSAtPiBcInNoYXBlPWVsbGlwc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZSAtPiBcInNoYXBlPWNpcmNsZVwiXG5cbmxldCBzaGFwZV9pbl9odG1sIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSAtPiBTb21lIFwic3R5bGU6IFxcXCJ2aXNpYmlsaXR5OmhpZGRlblxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlIC0+IFNvbWUgXCJzaGFwZTogXFxcImludmhvdXNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2UgLT4gU29tZSBcInNoYXBlOiBcXFwiaG91c2VcXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0IC0+IFNvbWUgXCJzaGFwZTogXFxcInJlY3RcXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlIC0+IFNvbWUgXCJzaGFwZTogXFxcImVsbGlwc2VcXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGUgLT4gU29tZSBcInNoYXBlOiBcXFwiZWxsaXBzZVxcXCJcIlxuXG5sZXQgc3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90IF8gPSBcIi1cIlxubGV0IHN0cmluZ190d29fb2ZfbGluZXN0eWxlX2luX2RvdCBfID0gXCItLVwiXG5cbmxldCBzdHJpbmdfb2ZfYXJyb3dfaGVhZF9pbl9kb3Qgc3R5bGUgPVxuICBtYXRjaCBzdHlsZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IFwiPlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IFwifD5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBcInxcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gXCJcIlxuXG5sZXQgc3RyaW5nX29mX2Fycm93X3RhaWxfaW5fZG90IHN0eWxlID1cbiAgbWF0Y2ggc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBcIjxcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcIjx8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gXCJ8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IFwiXCJcblxubGV0IHByaW50X25vZGUgbG9nZ2VyID8oZGlyZWN0aXZlcyA9IFtdKSBpZCA9XG4gIGxldCBhdHRyaWJ1dGVzID0gZHVtbXlfbm9kZSBpblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICAgIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5UWFRcbiAgICB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYXR0cmlidXRlcyBvcHRpb24gLT5cbiAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX2xhYmVsID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9jb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9maWxsY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggaSAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX3dpZHRoID0gU29tZSBpIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX2hlaWdodCA9IFNvbWUgaSB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfc2hhcGUgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9wb3NpdGlvbnMgPSBwIEAgYXR0cmlidXRlcy5ub2RlX3Bvc2l0aW9ucyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfb25fY2xpY2sgPSBTb21lIGpzb24gfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgIG5vZGVfY29udGV4dHVhbF9oZWxwID1cbiAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5ub2RlX2NvbnRleHR1YWxfaGVscCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFNvbWUgc1xuICAgICAgICAgICAgICAgIHwgU29tZSBzJyAtPiBTb21lIChzJyBeIHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIF9cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIF8gLT5cbiAgICAgICAgICAgIGF0dHJpYnV0ZXMpXG4gICAgICAgIGF0dHJpYnV0ZXMgZGlyZWN0aXZlc1xuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0aGVtYXRpY2FcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MXG4gICAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuSFRNTCAtPlxuICAgICAgYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCIlc1xcXCJcIiBpZCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBpc19ub19ub2RlX2F0dHJpYnV0ZXMgYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgW1wiIGluXG4gICAgICAgIGxldCBib29sID0gZmFsc2UgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJsYWJlbD1cXFwiJXNcXFwiXCIgc3RyaW5nXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3NoYXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzaGFwZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiJXNcIiAoc2hhcGVfaW5fZG90IHNoYXBlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV93aWR0aCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgaSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJ3aWR0aD1cXFwiJWlweFxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2hlaWdodCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgaSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0PVxcXCIlaXB4XFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImNvbG9yPVxcXCIlc1xcXCJcIiAoZG90X2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2ZpbGxjb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiZmlsbGNvbG9yPVxcXCIlc1xcXCIgc3R5bGU9ZmlsbGVkXCIgKGRvdF9jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gaWYgYm9vbCB0aGVuICgpIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXTtcIiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkhUTUxfR3JhcGggLT5cbiAgICBsZXQgaWRfaW50ID0gR3JhcGhfbG9nZ2Vyc19zaWcuaW50X29mX3N0cmluZ19pZCBsb2dnZXIgaWQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJnLnNldE5vZGUoJWksIHsgXCIgaWRfaW50XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgaXNfbm9fbm9kZV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzdHJpbmcgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlkXG4gICAgICAgICAgfCBTb21lIHN0cmluZyAtPiBzdHJpbmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0cmluZyA9IFN0cmluZy5lc2NhcGVkIHN0cmluZyBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwibGFiZWw6IFxcXCIlc1xcXCJcIiBzdHJpbmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfc2hhcGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzaGFwZSAtPlxuICAgICAgICAgICAgKG1hdGNoIHNoYXBlX2luX2h0bWwgc2hhcGUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIHRydWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgc2hhcGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3dpZHRoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgaSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIHRydWUgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwid2lkdGg6IFxcXCIlaVxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfaGVpZ2h0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgaSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIHRydWUgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiaGVpZ2h0OiBcXFwiJWlcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIHRydWUgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImNvbG9yOiBcXFwiJXNcXFwiXCIgKHN2Z19jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2ZpbGxjb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJzdHlsZTogXFxcImZpbGw6ICVzXFxcIiBcIiAoc3ZnX2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIH0pO0AsXCIgaW5cbiAgICAoKVxuICB8IExvZ2dlcnMuVFhUIC0+XG4gICAgKG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9sYWJlbCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIk5vZGU6ICVzXCIgaWQgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAoKVxuICAgIHwgU29tZSBsYWJlbCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgIFwiTm9kZTolcywgTGFiZWw6JXNcIiBpZCBsYWJlbFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAoKSlcbiAgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5Kc29uIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuYWRkX25vZGUgbG9nZ2VyIGlkIGRpcmVjdGl2ZXNcbiAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWJcbiAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyXG4gIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgKClcblxubGV0IHByaW50X2VkZ2UgbG9nZ2VyID8oZGlyZWN0aXZlcyA9IFtdKSA/KHByZWZpeCA9IFwiXCIpIGlkMSBpZDIgPVxuICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X2VkZ2UgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgICB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYXR0cmlidXRlcyBvcHRpb24gLT5cbiAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9sYWJlbCA9IFNvbWUgWyBzIF0gfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2NvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfc3R5bGUgPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2RpcmVjdGlvbiA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3d0YWlsID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd2hlYWQgPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMuZWRnZV9wb3NpdGlvbnMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgIGVkZ2VfY29udGV4dHVhbF9oZWxwID1cbiAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbnRleHR1YWxfaGVscCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFNvbWUgc1xuICAgICAgICAgICAgICAgIHwgU29tZSBzJyAtPiBTb21lIChzJyBeIHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9vbl9jbGljayA9IFNvbWUganNvbiB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggX1xuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgXyAtPlxuICAgICAgICAgICAgYXR0cmlidXRlcylcbiAgICAgICAgYXR0cmlidXRlcyBkaXJlY3RpdmVzXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWJcbiAgICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciAtPlxuICAgICAgYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICBsZXQgZGlyZWN0aW9uID1cbiAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9kaXJlY3Rpb24gd2l0aFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3QgLT5cbiAgICAgICAgc3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgICAgICBeIHN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZCAtPlxuICAgICAgICBzdHJpbmdfdHdvX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGggLT5cbiAgICAgICAgc3RyaW5nX29mX2Fycm93X3RhaWxfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgICBeIHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICAgICAgXiBzdHJpbmdfb2ZfYXJyb3dfaGVhZF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT5cbiAgICAgICAgc3RyaW5nX29mX2Fycm93X3RhaWxfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgICBeIHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICBcIlxcXCIlc1xcXCIgJXMgXFxcIiVzXFxcIlwiIGlkMSBkaXJlY3Rpb24gaWQyXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgaXNfbm9fZWRnZV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIFtcIiBpblxuICAgICAgICBsZXQgYm9vbCA9IGZhbHNlIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHN0cmluZ19saXN0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImxhYmVsPVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIpXG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHN0cmluZ19saXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcIlwiIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGUgd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4gLT4gYm9vbFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcInN0eWxlPVxcXCJkb3R0ZWRcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EYXNoZWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwic3R5bGU9XFxcImRhc2hlZFxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiY29sb3I9XFxcIiVzXFxcIlwiIChkb3RfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBib29sXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93aGVhZD1cXFwidGVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcInZlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93aGVhZD1cXFwibm9uZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd3RhaWwgd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGJvb2xcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3d0YWlsPVxcXCJ0ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwidmVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3d0YWlsPVxcXCJub25lXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBpZiBib29sIHRoZW4gKCkgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJdO1wiIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICAoKVxuICB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5IVE1MIC0+XG4gICAgbGV0IGxhYmVsID1cbiAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gWyBcIlwiIF1cbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICBpblxuICAgIGxldCBhcnJvdyA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkIHdpdGhcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBcIi0tXCJcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IFwiLT5cIlxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gXCItfFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgXCIlcyVzICVzICVzXCIgcHJlZml4IGlkMSBhcnJvdyBpZDJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIilcbiAgICAgICAgKExpc3QucmV2IGxhYmVsKVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAoKVxuICB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5hZGRfZWRnZSBsb2dnZXIgaWQxIGlkMiBkaXJlY3RpdmVzXG4gIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlhMUyAtPlxuICAgICgpXG5cbmxldCBwcmludF9vbmVfdG9fbl9yZWxhdGlvbiBsb2dnZXIgPyhkaXJlY3RpdmVzID0gW10pXG4gICAgPyhzdHlsZV9vbmUgPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbikgPyhzdHlsZV9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4pXG4gICAgaWQgaWRsaXN0ID1cbiAgbGV0IGZpY3RpdGlvdXMgPSBcIkZpY3RpdGlvdXNfXCIgXiBpZCBpblxuICBsZXQgZGlyZWN0aXZlc19maWN0ID1cbiAgICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggLT5cbiAgICAgIExpc3QucmV2XG4gICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBcIlwiXG4gICAgICAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlXG4gICAgICAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggMCA6OiBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgMFxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xuICAgICAgIDo6IExpc3QucmV2IGRpcmVjdGl2ZXMpXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLkRPVFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIExpc3QucmV2XG4gICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBcIlwiXG4gICAgICAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlXG4gICAgICAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggMCA6OiBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgMFxuICAgICAgIDo6IExpc3QucmV2IGRpcmVjdGl2ZXMpXG4gIGluXG4gIGxldCBkaXJlY3RpdmVzX29uZSA9XG4gICAgaWYgc3R5bGVfb25lID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4gdGhlblxuICAgICAgZGlyZWN0aXZlc1xuICAgIGVsc2VcbiAgICAgIExpc3QucmV2IChHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgc3R5bGVfb25lIDo6IExpc3QucmV2IGRpcmVjdGl2ZXMpXG4gIGluXG4gIGxldCBkaXJlY3RpdmVzX24gPVxuICAgIGlmIHN0eWxlX24gPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiB0aGVuXG4gICAgICBkaXJlY3RpdmVzXG4gICAgZWxzZVxuICAgICAgTGlzdC5yZXYgKEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBzdHlsZV9uIDo6IExpc3QucmV2IGRpcmVjdGl2ZXMpXG4gIGluXG4gIGxldCBfID0gcHJpbnRfbm9kZSBsb2dnZXIgZmljdGl0aW91cyB+ZGlyZWN0aXZlczpkaXJlY3RpdmVzX2ZpY3QgaW5cbiAgbGV0IF8gPSBwcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlczpkaXJlY3RpdmVzX29uZSBmaWN0aXRpb3VzIGlkIGluXG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gaWQnIC0+IHByaW50X2VkZ2UgbG9nZ2VyIH5kaXJlY3RpdmVzOmRpcmVjdGl2ZXNfbiBmaWN0aXRpb3VzIGlkJylcbiAgICAgIGlkbGlzdFxuICBpblxuICAoKVxuXG5sZXQgXyA9XG4gIGxldCBmIHQgdCcgPSB0LmVkZ2Vfb25fY2xpY2ssIHQnLm5vZGVfb25fY2xpY2sgaW5cbiAgZlxuIiwiKCoqXG4gICogZ3JhcGhfanMubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjMvMDUvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGlyZWN0aW9uX3RvX2pzb24gZGlyZWN0aW9uID1cbiAgbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3QgLT4gYFN0cmluZyBcIkRpcmVjdFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZSAtPiBgU3RyaW5nIFwiUmV2ZXJzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZCAtPiBgU3RyaW5nIFwiVW5kaXJlY3RlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQm90aCAtPiBgU3RyaW5nIFwiQm90aFwiXG5cbmxldCBzaGFwZV90b19qc29uIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSAtPiBgU3RyaW5nIFwiSW52aXNpYmxlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZSAtPiBgU3RyaW5nIFwiSG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlIC0+IGBTdHJpbmcgXCJJbnZob3VzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdCAtPiBgU3RyaW5nIFwicmVjdFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZSAtPiBgU3RyaW5nIFwiZWxsaXBzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlIC0+IGBTdHJpbmcgXCJjaXJjbGVcIlxuXG5sZXQgaGVhZGtpbmRfdG9fanNvbiBoZWFka2luZCA9XG4gIG1hdGNoIGhlYWRraW5kIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gYFN0cmluZyBcInZlZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IGBTdHJpbmcgXCJUZWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gYFN0cmluZyBcInVuZGlyZWN0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBgU3RyaW5nIFwibm9ybWFsXCJcblxubGV0IGxpbmVzdHlsZV90b19qc29uIGxpbmVzdHlsZSA9XG4gIG1hdGNoIGxpbmVzdHlsZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4gLT4gYFN0cmluZyBcIlBsYWluXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWQgLT4gYFN0cmluZyBcIkRvdHRlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGFzaGVkIC0+IGBTdHJpbmcgXCJEYXNoZWRcIlxuXG5sZXQgY29sb3JfdG9fanNvbiBjb2xvciA9XG4gIG1hdGNoIGNvbG9yIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgLT4gYFN0cmluZyBcInJlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gYFN0cmluZyBcImdyZWVuXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaGl0ZSAtPiBgU3RyaW5nIFwid2hpdGVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gYFN0cmluZyBcImJsdWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrIC0+IGBTdHJpbmcgXCJibGFja1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlIC0+IGBTdHJpbmcgXCJsaWdodHNreWJsdWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBgU3RyaW5nIFwicGFsZWdyZWVuXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBgU3RyaW5nIFwiYnJvd25cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBgU3RyaW5nIFwieWVsbG93XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5IC0+IGBTdHJpbmcgXCJncmV5XCJcblxubGV0IGRpcmVjdGl2ZV90b19qc29uIG9wdGlvbiA9XG4gIG1hdGNoIG9wdGlvbiB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgY29sb3IgLT4gXCJjb2xvclwiLCBjb2xvcl90b19qc29uIGNvbG9yXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIGNvbG9yIC0+IFwiZmlsbGNvbG9yXCIsIGNvbG9yX3RvX2pzb24gY29sb3JcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzdHJpbmcgLT4gXCJsYWJlbFwiLCBgU3RyaW5nIHN0cmluZ1xuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGludCAtPiBcIndpZHRoXCIsIGBJbnQgaW50XG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IGludCAtPiBcImhlaWdodFwiLCBgSW50IGludFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBkaXJlY3Rpb24gLT5cbiAgICBcImRpcmVjdGlvblwiLCBkaXJlY3Rpb25fdG9fanNvbiBkaXJlY3Rpb25cbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBzaGFwZSAtPiBcInNoYXBlXCIsIHNoYXBlX3RvX2pzb24gc2hhcGVcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgaGVhZGtpbmQgLT5cbiAgICBcImFycm93aGVhZFwiLCBoZWFka2luZF90b19qc29uIGhlYWRraW5kXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIGhlYWRraW5kIC0+XG4gICAgXCJhcnJvd3RhaWxcIiwgaGVhZGtpbmRfdG9fanNvbiBoZWFka2luZFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBsaW5lc3R5bGUgLT5cbiAgICBcImxpbmVzdHlsZVwiLCBsaW5lc3R5bGVfdG9fanNvbiBsaW5lc3R5bGVcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgKCBcInBvc2l0aW9uXCIsXG4gICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgIChmdW4ganNvbiAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIGpzb24pKVxuICAgICAgICBwIClcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgcyAtPlxuICAgIFwiY29udGV4dHVhbCBoZWxwXCIsIEpzb25VdGlsLm9mX3N0cmluZyBzXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+IFwib25fY2xpY2tcIiwganNvblxuXG5sZXQgZGlyZWN0aXZlc190b19qc29uID0gSnNvblV0aWwub2ZfYXNzb2MgZGlyZWN0aXZlX3RvX2pzb25cblxubGV0IG5vZGVfdG9fanNvbiAoaWQsIGRpcmVjdGl2ZXMpID1cbiAgYEFzc29jIFsgXCJpZFwiLCBgU3RyaW5nIGlkOyBcImRpcmVjdGl2ZXNcIiwgZGlyZWN0aXZlc190b19qc29uIGRpcmVjdGl2ZXMgXVxuXG5sZXQgZWRnZV90b19qc29uIChpZDEsIGlkMiwgZGlyZWN0aXZlcykgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcInNvdXJjZVwiLCBgU3RyaW5nIGlkMTtcbiAgICAgIFwidGFyZ2V0XCIsIGBTdHJpbmcgaWQyO1xuICAgICAgXCJkaXJlY3RpdmVzXCIsIGRpcmVjdGl2ZXNfdG9fanNvbiBkaXJlY3RpdmVzO1xuICAgIF1cblxubGV0IG5vZGVzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IG5vZGVfdG9fanNvblxubGV0IGVkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvblxuXG5sZXQgdG9fanNvbiBncmFwaCA6IFlvanNvbi5CYXNpYy50ID1cbiAgYEFzc29jXG4gICAgWyBcIm5vZGVzXCIsIG5vZGVzX3RvX2pzb24gKGZzdCBncmFwaCk7IFwiZWRnZXNcIiwgZWRnZXNfdG9fanNvbiAoc25kIGdyYXBoKSBdXG5cbmxldCBsaW5lc3R5bGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIlBsYWluXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW5cbiAgfCBgU3RyaW5nIFwiRG90dGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkXG4gIHwgYFN0cmluZyBcIkRhc2hlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRhc2hlZFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBoZWFka2luZFwiLCB4KSlcblxubGV0IGhlYWRraW5kX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJ2ZWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5WZWVcbiAgfCBgU3RyaW5nIFwiVGVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVGVlXG4gIHwgYFN0cmluZyBcInVuZGlyZWN0ZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkXG4gIHwgYFN0cmluZyBcIm5vcm1hbFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBoZWFka2luZFwiLCB4KSlcblxubGV0IHNoYXBlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJJbnZpc2libGVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGVcbiAgfCBgU3RyaW5nIFwiSG91c2VcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZVxuICB8IGBTdHJpbmcgXCJJbnZob3VzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlXG4gIHwgYFN0cmluZyBcInJlY3RcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0XG4gIHwgYFN0cmluZyBcImVsbGlwc2VcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlXG4gIHwgYFN0cmluZyBcImNpcmNsZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzaGFwZVwiLCB4KSlcblxubGV0IGRpcmVjdGlvbl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiRGlyZWN0XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0XG4gIHwgYFN0cmluZyBcIlJldmVyc2VcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlXG4gIHwgYFN0cmluZyBcIlVuZGlyZWN0ZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkXG4gIHwgYFN0cmluZyBcIkJvdGhcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGRpcmVjdGlvblwiLCB4KSlcblxubGV0IGNvbG9yX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJncmV5XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuR3JleVxuICB8IGBTdHJpbmcgXCJ5ZWxsb3dcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3dcbiAgfCBgU3RyaW5nIFwicmVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmVkXG4gIHwgYFN0cmluZyBcImdyZWVuXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW5cbiAgfCBgU3RyaW5nIFwid2hpdGVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5XaGl0ZVxuICB8IGBTdHJpbmcgXCJibHVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZVxuICB8IGBTdHJpbmcgXCJibGFja1wiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrXG4gIHwgYFN0cmluZyBcImxpZ2h0c2t5Ymx1ZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZVxuICB8IGBTdHJpbmcgXCJwYWxlZ3JlZW5cIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW5cbiAgfCBgU3RyaW5nIFwiYnJvd25cIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93blxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBjb2xvclwiLCB4KSlcblxubGV0IGRpcmVjdGl2ZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBcImNvbG9yXCIsIGNvbG9yIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIChjb2xvcl9vZl9qc29uIGNvbG9yKVxuICB8IFwiZmlsbGNvbG9yXCIsIGNvbG9yIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciAoY29sb3Jfb2ZfanNvbiBjb2xvcilcbiAgfCBcImxhYmVsXCIsIGBTdHJpbmcgc3RyaW5nIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHN0cmluZ1xuICB8IFwid2lkdGhcIiwgYEludCBpbnQgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggaW50XG4gIHwgXCJoZWlnaHRcIiwgYEludCBpbnQgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IGludFxuICB8IFwiZGlyZWN0aW9uXCIsIGRpcmVjdGlvbiAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiAoZGlyZWN0aW9uX29mX2pzb24gZGlyZWN0aW9uKVxuICB8IFwic2hhcGVcIiwgc2hhcGUgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgKHNoYXBlX29mX2pzb24gc2hhcGUpXG4gIHwgXCJhcnJvd2hlYWRcIiwgaGVhZGtpbmQgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgKGhlYWRraW5kX29mX2pzb24gaGVhZGtpbmQpXG4gIHwgXCJhcnJvd3RhaWxcIiwgaGVhZGtpbmQgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgKGhlYWRraW5kX29mX2pzb24gaGVhZGtpbmQpXG4gIHwgXCJsaW5lc3R5bGVcIiwgbGluZXN0eWxlIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIChsaW5lc3R5bGVfb2ZfanNvbiBsaW5lc3R5bGUpXG4gIHwgXCJwb3NpdGlvblwiLCBwb3NfbGlzdCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uXG4gICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgKGZ1biBqc29uIC0+XG4gICAgICAgICAgIHNuZFxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdFxuICAgICAgICAgICAgICAgICAgID9lcnJvcl9tc2c6XG4gICAgICAgICAgICAgICAgICAgICAoU29tZSAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJwb3NpdGlvblwiKSkpXG4gICAgICAgICAgICAgICAganNvbikpXG4gICAgICAgICBwb3NfbGlzdClcbiAgfCBcImNvbnRleHR1YWwgaGVscFwiLCBjb250ZXh0dWFsX2hlbHAgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgKEpzb25VdGlsLnRvX3N0cmluZyBjb250ZXh0dWFsX2hlbHApXG4gIHwgXCJvbl9jbGlja1wiLCBqc29uIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvblxuICB8IF8sIHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBkaXJlY3RpdmVcIiwgeCkpXG5cbmxldCBkaXJlY3RpdmVzX29mX2pzb24gZGlyZWN0aXZlcyA9XG4gIEpzb25VdGlsLnRvX2Fzc29jXG4gICAgfmVycm9yX21zZzooSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJsaXN0IG9mIGRpcmVjdGl2ZXNcIilcbiAgICBkaXJlY3RpdmVfb2ZfanNvbiBkaXJlY3RpdmVzXG5cbmxldCBpZF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHN0cmluZyAtPiBzdHJpbmdcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaWRcIiwgeCkpXG5cbmxldCBub2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICAoIGlkX29mX2pzb24gKExpc3QuYXNzb2MgXCJpZFwiIGwpLFxuICAgICAgICAgZGlyZWN0aXZlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZGlyZWN0aXZlc1wiIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5vZGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBub2RlXCIsIHgpKVxuXG5sZXQgZWRnZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAgKCBpZF9vZl9qc29uIChMaXN0LmFzc29jIFwic291cmNlXCIgbCksXG4gICAgICAgICBpZF9vZl9qc29uIChMaXN0LmFzc29jIFwidGFyZ2V0XCIgbCksXG4gICAgICAgICBkaXJlY3RpdmVzX29mX2pzb24gKExpc3QuYXNzb2MgXCJkaXJlY3RpdmVzXCIgbCkgKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWRnZVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVkZ2VcIiwgeCkpXG5cbmxldCBub2Rlc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdFxuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwibm9kZSBsaXN0XCIpXG4gICAgbm9kZV9vZl9qc29uXG5cbmxldCBlZGdlc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdFxuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwiZWRnZSBsaXN0XCIpXG4gICAgZWRnZV9vZl9qc29uXG5cbmxldCBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5XG4gICAgICAgKCBub2Rlc19vZl9qc29uIChMaXN0LmFzc29jIFwibm9kZXNcIiBsKSxcbiAgICAgICAgIGVkZ2VzX29mX2pzb24gKExpc3QuYXNzb2MgXCJlZGdlc1wiIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpXG4iLCJ0eXBlIGJyZWFrX2hpbnQgPSBTcGFjZSB8IE5vX3NwYWNlXG5cbnR5cGUgc3ltYm9sX3RhYmxlID0ge1xuICBhZ2VudF9vcGVuOiBzdHJpbmc7XG4gIGFnZW50X2Nsb3NlOiBzdHJpbmc7XG4gIGFnZW50X3NlcF9jb21tYTogc3RyaW5nICogYnJlYWtfaGludDtcbiAgYWdlbnRfc2VwX2RvdDogc3RyaW5nICogYnJlYWtfaGludDtcbiAgYWdlbnRfc2VwX3BsdXM6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGdob3N0X2FnZW50OiBzdHJpbmc7XG4gIHNob3dfZ2hvc3Q6IGJvb2w7XG4gIGludGVybmFsX3N0YXRlX3N5bWJvbDogc3RyaW5nO1xuICBvcGVuX2ludGVybmFsX3N0YXRlOiBzdHJpbmc7XG4gIGNsb3NlX2ludGVybmFsX3N0YXRlOiBzdHJpbmc7XG4gIG9wZW5faW50ZXJuYWxfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGNsb3NlX2ludGVybmFsX3N0YXRlX21vZDogc3RyaW5nO1xuICBpbnRlcm5hbF9zdGF0ZV9tb2Rfc3ltYm9sOiBzdHJpbmc7XG4gIGludGVybmFsX3N0YXRlX2FueTogc3RyaW5nO1xuICBvcGVuX2JpbmRpbmdfc3RhdGU6IHN0cmluZztcbiAgY2xvc2VfYmluZGluZ19zdGF0ZTogc3RyaW5nO1xuICBtaXNzaW5nX2JpbmRpbmdfc3RhdGU6IHN0cmluZztcbiAgb3Blbl9iaW5kaW5nX3N0YXRlX21vZDogc3RyaW5nO1xuICBiaW5kaW5nX3N0YXRlX21vZF9zeW1ib2w6IHN0cmluZztcbiAgY2xvc2VfYmluZGluZ19zdGF0ZV9tb2Q6IHN0cmluZztcbiAgZnJlZTogc3RyaW5nO1xuICBib3VuZDogc3RyaW5nO1xuICBsaW5rX3RvX2FueTogc3RyaW5nO1xuICBsaW5rX3RvX3NvbWU6IHN0cmluZztcbiAgYXQ6IHN0cmluZztcbiAgc2l0ZV9zZXA6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGJ0eXBlX3NlcDogc3RyaW5nO1xuICB1bmlfYXJyb3c6IHN0cmluZztcbiAgcmV2X2Fycm93OiBzdHJpbmc7XG4gIGJpX2Fycm93OiBzdHJpbmc7XG4gIHVuaV9hcnJvd19ub3BvbHk6IHN0cmluZztcbiAgcmV2X2Fycm93X25vcG9seTogc3RyaW5nO1xuICBiaV9hcnJvd19ub3BvbHk6IHN0cmluZztcbiAgYnJlYWthYmxlOiBib29sO1xuICBvcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmU6IHN0cmluZztcbiAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlOiBzdHJpbmc7XG4gIG9wZW5faW50X2ludGVydmFsX2luZmluaXR5OiBzdHJpbmc7XG4gIGNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmU6IHN0cmluZztcbiAgY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZTogc3RyaW5nO1xuICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHk6IHN0cmluZztcbiAgaW50X2ludGVydmFsX3NlcGFyYXRvcjogc3RyaW5nO1xuICBwbHVzX2luZmluaXR5OiBzdHJpbmc7XG4gIG1pbnVzX2luZmluaXR5OiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcl9zdGF0ZTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJjZXE6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY2d0ZTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJjdmFyOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmRlbHRhOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcnZhbDogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyX3N0YXRlOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjZXE6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcmNndGU6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcmN2YXI6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcmRlbHRhOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJ2YWw6IHN0cmluZztcbiAgY291bnRlcmNlcV9zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmNndGVfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJjdmFyX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyZGVsdGFwbHVzX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyZGVsdGFtaW51c19zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcnZhbF9zeW1ib2w6IHN0cmluZztcbn1cblxubGV0IHN5bWJvbF90YWJsZV9WMyA9XG4gIHtcbiAgICBib3VuZCA9IFwiIVwiO1xuICAgIG9wZW5fYmluZGluZ19zdGF0ZSA9IFwiXCI7XG4gICAgY2xvc2VfYmluZGluZ19zdGF0ZSA9IFwiXCI7XG4gICAgbWlzc2luZ19iaW5kaW5nX3N0YXRlID0gXCI/XCI7XG4gICAgbGlua190b19hbnkgPSBcIj9cIjtcbiAgICBsaW5rX3RvX3NvbWUgPSBcIiFfXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfc3ltYm9sID0gXCJ+XCI7XG4gICAgb3Blbl9pbnRlcm5hbF9zdGF0ZSA9IFwiXCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGUgPSBcIlwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGludGVybmFsX3N0YXRlX21vZF9zeW1ib2wgPSBcIi9cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9hbnkgPSBcIlwiO1xuICAgIG9wZW5fYmluZGluZ19zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBiaW5kaW5nX3N0YXRlX21vZF9zeW1ib2wgPSBcIlwiO1xuICAgIGZyZWUgPSBcIlwiO1xuICAgIGF0ID0gXCIuXCI7XG4gICAgYWdlbnRfb3BlbiA9IFwiKFwiO1xuICAgIGFnZW50X2Nsb3NlID0gXCIpXCI7XG4gICAgYWdlbnRfc2VwX2NvbW1hID0gXCIsXCIsIFNwYWNlO1xuICAgIGFnZW50X3NlcF9wbHVzID0gXCIsXCIsIFNwYWNlO1xuICAgIGFnZW50X3NlcF9kb3QgPSBcIixcIiwgU3BhY2U7XG4gICAgYnR5cGVfc2VwID0gXCIuXCI7XG4gICAgc2l0ZV9zZXAgPSBcIixcIiwgTm9fc3BhY2U7XG4gICAgZ2hvc3RfYWdlbnQgPSBcIi5cIjtcbiAgICBzaG93X2dob3N0ID0gZmFsc2U7XG4gICAgdW5pX2Fycm93ID0gXCItPlwiO1xuICAgIHJldl9hcnJvdyA9IFwiPC1cIjtcbiAgICBiaV9hcnJvdyA9IFwiPC0+XCI7XG4gICAgdW5pX2Fycm93X25vcG9seSA9IFwiLSEtPlwiO1xuICAgIHJldl9hcnJvd19ub3BvbHkgPSBcIjwtIS1cIjtcbiAgICBiaV9hcnJvd19ub3BvbHkgPSBcIjwtIS0+XCI7XG4gICAgYnJlYWthYmxlID0gdHJ1ZTtcbiAgICBvcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmUgPSBcIltcIjtcbiAgICBvcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIl1cIjtcbiAgICBvcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eSA9IFwiXVwiO1xuICAgIHBsdXNfaW5maW5pdHkgPSBcIitvb1wiO1xuICAgIG1pbnVzX2luZmluaXR5ID0gXCItb29cIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJdXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZSA9IFwiW1wiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eSA9IFwiW1wiO1xuICAgIGludF9pbnRlcnZhbF9zZXBhcmF0b3IgPSBcIiAuLiBcIjtcbiAgICBvcGVuX2NvdW50ZXJfc3RhdGUgPSBcIntcIjtcbiAgICBvcGVuX2NvdW50ZXJjZXEgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcmNndGUgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcmN2YXIgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcmRlbHRhID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJfc3RhdGUgPSBcIn1cIjtcbiAgICBjbG9zZV9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyY2d0ZSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmN2YXIgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcnZhbCA9IFwiXCI7XG4gICAgY291bnRlcmNlcV9zeW1ib2wgPSBcIj1cIjtcbiAgICBjb3VudGVyY2d0ZV9zeW1ib2wgPSBcIj49XCI7XG4gICAgY291bnRlcmN2YXJfc3ltYm9sID0gXCI6XCI7XG4gICAgY291bnRlcnZhbF9zeW1ib2wgPSBcIjo9XCI7XG4gICAgY291bnRlcmRlbHRhcGx1c19zeW1ib2wgPSBcIitcIjtcbiAgICBjb3VudGVyZGVsdGFtaW51c19zeW1ib2wgPSBcIi1cIjtcbiAgfVxuXG5sZXQgbGlnaHRlbiBzeW1ib2xfdGFibGUgPVxuICB7IHN5bWJvbF90YWJsZSB3aXRoIHNpdGVfc2VwID0gXCIgXCIsIHNuZCBzeW1ib2xfdGFibGUuc2l0ZV9zZXAgfVxuXG5sZXQgdG9fZG90bmV0IHN5bWJvbF90YWJsZSA9XG4gIHtcbiAgICBzeW1ib2xfdGFibGUgd2l0aFxuICAgIGFnZW50X3NlcF9wbHVzID0gXCIgK1wiLCBzbmQgc3ltYm9sX3RhYmxlLmFnZW50X3NlcF9wbHVzO1xuICAgIGFnZW50X3NlcF9kb3QgPSBcIi5cIiwgTm9fc3BhY2U7XG4gIH1cblxubGV0IHN5bWJvbF90YWJsZV9WNCA9XG4gIHtcbiAgICBib3VuZCA9IFwiXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlID0gXCJbXCI7XG4gICAgY2xvc2VfYmluZGluZ19zdGF0ZSA9IFwiXVwiO1xuICAgIG1pc3NpbmdfYmluZGluZ19zdGF0ZSA9IFwiXCI7XG4gICAgbGlua190b19hbnkgPSBcIiNcIjtcbiAgICBsaW5rX3RvX3NvbWUgPSBcIl9cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9zeW1ib2wgPSBcIlwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGUgPSBcIntcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZSA9IFwifVwiO1xuICAgIGludGVybmFsX3N0YXRlX2FueSA9IFwieyN9XCI7XG4gICAgb3Blbl9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfbW9kX3N5bWJvbCA9IFwiL1wiO1xuICAgIG9wZW5fYmluZGluZ19zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBiaW5kaW5nX3N0YXRlX21vZF9zeW1ib2wgPSBcIlwiO1xuICAgIGZyZWUgPSBcIi5cIjtcbiAgICBhdCA9IFwiLlwiO1xuICAgIGFnZW50X29wZW4gPSBcIihcIjtcbiAgICBhZ2VudF9jbG9zZSA9IFwiKVwiO1xuICAgIGFnZW50X3NlcF9jb21tYSA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIsXCIsIFNwYWNlO1xuICAgIGJ0eXBlX3NlcCA9IFwiLlwiO1xuICAgIHNpdGVfc2VwID0gXCIsXCIsIE5vX3NwYWNlO1xuICAgIGdob3N0X2FnZW50ID0gXCIuXCI7XG4gICAgc2hvd19naG9zdCA9IHRydWU7XG4gICAgdW5pX2Fycm93ID0gXCItPlwiO1xuICAgIHJldl9hcnJvdyA9IFwiPC1cIjtcbiAgICBiaV9hcnJvdyA9IFwiPC0+XCI7XG4gICAgdW5pX2Fycm93X25vcG9seSA9IFwiLSEtPlwiO1xuICAgIHJldl9hcnJvd19ub3BvbHkgPSBcIjwtIS1cIjtcbiAgICBiaV9hcnJvd19ub3BvbHkgPSBcIjwtIS0+XCI7XG4gICAgYnJlYWthYmxlID0gdHJ1ZTtcbiAgICBvcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmUgPSBcIltcIjtcbiAgICBvcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIl1cIjtcbiAgICBvcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eSA9IFwiXVwiO1xuICAgIHBsdXNfaW5maW5pdHkgPSBcIitvb1wiO1xuICAgIG1pbnVzX2luZmluaXR5ID0gXCItb29cIjtcbiAgICBvcGVuX2NvdW50ZXJfc3RhdGUgPSBcIntcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJdXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZSA9IFwiW1wiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eSA9IFwiW1wiO1xuICAgIGludF9pbnRlcnZhbF9zZXBhcmF0b3IgPSBcIiAuLiBcIjtcbiAgICBvcGVuX2NvdW50ZXJjZXEgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcmNndGUgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcmN2YXIgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcmRlbHRhID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJfc3RhdGUgPSBcIn1cIjtcbiAgICBjbG9zZV9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyY2d0ZSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmN2YXIgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcnZhbCA9IFwiXCI7XG4gICAgY291bnRlcmNlcV9zeW1ib2wgPSBcIj1cIjtcbiAgICBjb3VudGVyY2d0ZV9zeW1ib2wgPSBcIj49XCI7XG4gICAgY291bnRlcmN2YXJfc3ltYm9sID0gXCI6XCI7XG4gICAgY291bnRlcnZhbF9zeW1ib2wgPSBcIjo9XCI7XG4gICAgY291bnRlcmRlbHRhcGx1c19zeW1ib2wgPSBcIitcIjtcbiAgICBjb3VudGVyZGVsdGFtaW51c19zeW1ib2wgPSBcIi1cIjtcbiAgfVxuXG5sZXQgbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGUgPSB7IHN5bWJvbF90YWJsZSB3aXRoIGJyZWFrYWJsZSA9IGZhbHNlIH1cbmxldCBzeW1ib2xfdGFibGVfVjNfbGlnaHQgPSBsaWdodGVuIHN5bWJvbF90YWJsZV9WM1xubGV0IHN5bWJvbF90YWJsZV9kb3RuZXQgPSB0b19kb3RuZXQgc3ltYm9sX3RhYmxlX1YzXG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1YzID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfVjNcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfVjQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9WNFxubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WM19saWdodCA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX1YzX2xpZ2h0XG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldCA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX2RvdG5ldFxuXG5sZXQgd2l0aF9kb3RfYW5kX3BsdXMgc3ltYm9sX3RhYmxlID1cbiAge1xuICAgIHN5bWJvbF90YWJsZSB3aXRoXG4gICAgYWdlbnRfc2VwX3BsdXMgPSB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfZG90bmV0LmFnZW50X3NlcF9wbHVzO1xuICAgIGFnZW50X3NlcF9kb3QgPSB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfZG90bmV0LmFnZW50X3NlcF9kb3Q7XG4gIH1cbiIsIigqKlxuICAgICogcmVtYW5lbnRfc3RhdGVfc2lnbmF0dXJlLm1sXG4gICAgKlxuICAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDEyLzEwLzIwMTBcbiAgICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8Tm92IDI4IDIwMTg+XG4gICAgKiAqXG4gICAgKiBTaWduYXR1cmUgZm9yIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBtZW1vcnlcbiAgICAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHJ1bGVfa2V5ID0gaW50XG5cbnR5cGUgZW5naW5lX3N0YXRlID0ge1xuICBjb21tYW5kX2xpbmU6IHN0cmluZyBvcHRpb247XG4gIHdha2VfdXBfbWFwOiAocnVsZV9rZXkgLT4gcnVsZV9rZXkgbGlzdCkgb3B0aW9uO1xufVxuXG5sZXQgZW1wdHlfZW5naW5lX3N0YXRlID0geyBjb21tYW5kX2xpbmUgPSBOb25lOyB3YWtlX3VwX21hcCA9IE5vbmUgfVxubGV0IHdha2VfdXBfbWFwIGVycm9yIGVuZ2luZV9zdGF0ZSA9IGVycm9yLCBlbmdpbmVfc3RhdGUud2FrZV91cF9tYXBcbiIsIigqKlxuICAgICogZXhjZXB0aW9uLm1sXG4gICAgKiBvcGVua2FwcGFcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAwOC8wMy8yMDEwXG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAwNCAyMDE4PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IGRlY2xhcmVzIGV4Y2VwdGlvbnNcbiAgICAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSB1bmNhdWdodF9leGNlcHRpb24gPSB7XG4gIGZpbGVfbmFtZTogc3RyaW5nIG9wdGlvbjtcbiAgbWVzc2FnZTogc3RyaW5nIG9wdGlvbjtcbiAgYWxhcm06IGV4bjtcbn1cblxudHlwZSBjYXVnaHRfZXhjZXB0aW9uID0ge1xuICB1bmNhdWdodF9leGNlcHRpb246IHVuY2F1Z2h0X2V4Y2VwdGlvbjtcbiAgY2FsbGluZ19zdGFjazogc3RyaW5nIGxpc3Q7XG59XG5cbmV4Y2VwdGlvbiBVbmNhdWdodF9leGNlcHRpb24gb2YgdW5jYXVnaHRfZXhjZXB0aW9uXG5leGNlcHRpb24gQ2F1Z2h0X2V4Y2VwdGlvbiBvZiBjYXVnaHRfZXhjZXB0aW9uXG5cbmxldCByZWMgZXhuX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEV4aXQgLT4gYEFzc29jIFsgXCJFeGl0XCIsIGBOdWxsIF1cbiAgfCBOb3RfZm91bmQgLT4gYEFzc29jIFsgXCJOb3RfZm91bmRcIiwgYE51bGwgXVxuICB8IEFyZy5CYWQgeCAtPiBgQXNzb2MgWyBcIkFyZy5CYWRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IFN5cy5CcmVhayAtPiBgQXNzb2MgWyBcIlN5cy5CcmVha1wiLCBgTnVsbCBdXG4gIHwgU3RhY2suRW1wdHkgLT4gYEFzc29jIFsgXCJTdGFjay5FbXB0eVwiLCBgTnVsbCBdXG4gIHwgUXVldWUuRW1wdHkgLT4gYEFzc29jIFsgXCJRdWV1ZS5FbXB0eVwiLCBgTnVsbCBdXG4gIHwgU3RyZWFtLkVycm9yIHggLT4gYEFzc29jIFsgXCJTdHJlYW0uRXJyb3JcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IFN0cmVhbS5GYWlsdXJlIC0+IGBBc3NvYyBbIFwiU3RyZWFtLkZhaWx1cmVcIiwgYE51bGwgXVxuICB8IEFyZy5IZWxwIHggLT4gYEFzc29jIFsgXCJBcmcuSGVscFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBgQXNzb2MgWyBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIiwgYE51bGwgXVxuICB8IFNjYW5mLlNjYW5fZmFpbHVyZSB4IC0+IGBBc3NvYyBbIFwiU2Nhbl9mYWlsdXJlXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBMYXp5LlVuZGVmaW5lZCAtPiBgQXNzb2MgWyBcIkxhenkuVW5kZWZpbmVkXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLlVuaXhfZXJyb3IgKGEsIGIsIGMpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIixcbiAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJmc3RcIiwgSnNvblV0aWwub2ZfdW5peF9sYWJlbCBhO1xuICAgICAgICAgICAgICBcInNuZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYjtcbiAgICAgICAgICAgICAgXCJ0cmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGM7XG4gICAgICAgICAgICBdICk7XG4gICAgICBdXG4gIHwgVW5peC5Vbml4X2Vycm9yIChhLCBiLCBjKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwiVW5peC5Vbml4LmVycm9yXCIsXG4gICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwiZnN0XCIsIEpzb25VdGlsLm9mX3VuaXhfZXJyb3IgYTtcbiAgICAgICAgICAgICAgXCJzbmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGI7XG4gICAgICAgICAgICAgIFwidHJkXCIsIEpzb25VdGlsLm9mX3N0cmluZyBjO1xuICAgICAgICAgICAgXSApO1xuICAgICAgXVxuICB8IEZhaWx1cmUgeCAtPiBgQXNzb2MgWyBcIkZhaWx1cmVcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IFN0YWNrX292ZXJmbG93IC0+IGBBc3NvYyBbIFwiU3RhY2tfb3ZlcmZsb3dcIiwgYE51bGwgXVxuICB8IENhdWdodF9leGNlcHRpb24geCAtPiBgQXNzb2MgWyBcIkNhdWdodFwiLCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24geCBdXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT4gYEFzc29jIFsgXCJVbmNhdWdodFwiLCB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvbiB4IF1cbiAgfCBfIC0+IGBBc3NvYyBbIFwiVW5rbm93blwiLCBgTnVsbCBdXG5cbmFuZCB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvbiB1bmNhdWdodCA9XG4gIEpzb25VdGlsLm9mX3RyaXBsZSB+bGFiMTpcImZpbGVfbmFtZVwiIH5sYWIyOlwibWVzc2FnZVwiIH5sYWIzOlwiZXhuXCJcbiAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZylcbiAgICBleG5fdG9fanNvblxuICAgICh1bmNhdWdodC5maWxlX25hbWUsIHVuY2F1Z2h0Lm1lc3NhZ2UsIHVuY2F1Z2h0LmFsYXJtKVxuXG5hbmQgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIGNhdWdodCA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJ1bmNhdWdodF9leGNlcHRpb25cIiB+bGFiMjpcImNhbGxpbmdfc3RhY2tcIlxuICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgKEpzb25VdGlsLm9mX2xpc3QgSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgIChjYXVnaHQudW5jYXVnaHRfZXhjZXB0aW9uLCBjYXVnaHQuY2FsbGluZ19zdGFjaylcblxubGV0IHJlYyBleG5fb2ZfanNvbiAoanNvbiA6IFlvanNvbi5CYXNpYy50KSA9XG4gIG1hdGNoIGpzb24gd2l0aFxuICB8IGBBc3NvYyBbIChcIkV4aXRcIiwgYE51bGwpIF0gLT4gRXhpdFxuICB8IGBBc3NvYyBbIChcIk5vdF9mb3VuZFwiLCBgTnVsbCkgXSAtPiBOb3RfZm91bmRcbiAgfCBgQXNzb2MgWyAoXCJBcmcuQmFkXCIsIHgpIF0gLT4gQXJnLkJhZCAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiU3lzLkJyZWFrXCIsIGBOdWxsKSBdIC0+IFN5cy5CcmVha1xuICB8IGBBc3NvYyBbIChcIlN0YWNrLkVtcHR5XCIsIGBOdWxsKSBdIC0+IFN0YWNrLkVtcHR5XG4gIHwgYEFzc29jIFsgKFwiUXVldWUuRW1wdHlcIiwgYE51bGwpIF0gLT4gUXVldWUuRW1wdHlcbiAgfCBgQXNzb2MgWyAoXCJTdHJlYW0uRXJyb3JcIiwgeCkgXSAtPiBTdHJlYW0uRXJyb3IgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN0cmVhbS5GYWlsdXJlXCIsIGBOdWxsKSBdIC0+IFN0cmVhbS5GYWlsdXJlXG4gIHwgYEFzc29jIFsgKFwiQXJnLkhlbHBcIiwgeCkgXSAtPiBBcmcuSGVscCAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiUGFyc2luZy5QYXJzZV9lcnJvclwiLCBgTnVsbCkgXSAtPiBQYXJzaW5nLlBhcnNlX2Vycm9yXG4gIHwgYEFzc29jIFsgKFwiU2Nhbl9mYWlsdXJlXCIsIHgpIF0gLT4gU2NhbmYuU2Nhbl9mYWlsdXJlIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJMYXp5LlVuZGVmaW5lZFwiLCBgTnVsbCkgXSAtPiBMYXp5LlVuZGVmaW5lZFxuICB8IGBBc3NvYyBbIChcIlVuaXhMYWJlbHMuVW5peF9lcnJvclwiLCBgQXNzb2MgbCkgXSB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIFVuaXhMYWJlbHMuVW5peF9lcnJvclxuICAgICAgICAgKCBKc29uVXRpbC50b191bml4X2xhYmVsIChMaXN0LmFzc29jIFwiZnN0XCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInNuZFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJ0cmRcIiBsKSApXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwidW5peCBsYWJlbHMgZXJyb3JcIiwganNvbikpKVxuICB8IGBBc3NvYyBbIChcIlVuaXguVW5peF9lcnJvclwiLCBgQXNzb2MgbCkgXSB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIFVuaXguVW5peF9lcnJvclxuICAgICAgICAgKCBKc29uVXRpbC50b191bml4X2xhYmVsIChMaXN0LmFzc29jIFwiZnN0XCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInNuZFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJ0cmRcIiBsKSApXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmV4bl9tc2dfY2FudF9pbXBvcnRfZnJvbV9qc29uIFwidW5peCBlcnJvclwiLCBqc29uKSkpXG4gIHwgYEFzc29jIFsgKFwiRmFpbHVyZVwiLCB4KSBdIC0+IEZhaWx1cmUgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN0YWNrX292ZXJmbG93XCIsIGBOdWxsKSBdIC0+IFN0YWNrX292ZXJmbG93XG4gIHwgYEFzc29jIFsgKFwiQ2F1Z2h0XCIsIHgpIF0gLT4gQ2F1Z2h0X2V4Y2VwdGlvbiAoY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIHgpXG4gIHwgYEFzc29jIFsgKFwiVW5jYXVnaHRcIiwgeCkgXSAtPlxuICAgIFVuY2F1Z2h0X2V4Y2VwdGlvbiAodW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24geClcbiAgfCBgQXNzb2MgWyAoXCJVbmtub3duXCIsIGBOdWxsKSBdIC0+IEZhaWx1cmUgXCJVbmtub3duXCJcbiAgfCBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuZXhuX21zZ19jYW50X2ltcG9ydF9mcm9tX2pzb24gXCJleGNlcHRpb25cIiwganNvbikpXG5cbmFuZCB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbiBqc29uID1cbiAgbGV0IGEsIGIsIGMgPVxuICAgIEpzb25VdGlsLnRvX3RyaXBsZSB+bGFiMTpcImZpbGVfbmFtZVwiIH5sYWIyOlwibWVzc2FnZVwiIH5sYWIzOlwiZXhuXCJcbiAgICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiZmlsZV9uYW1lXCIpKVxuICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJtZXNzYWdlXCIpKVxuICAgICAgZXhuX29mX2pzb24ganNvblxuICBpblxuICB7IGZpbGVfbmFtZSA9IGE7IG1lc3NhZ2UgPSBiOyBhbGFybSA9IGMgfVxuXG5hbmQgY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIGpzb24gPVxuICBsZXQgYSwgYiA9XG4gICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTpcInVuY2F1Z2h0X2V4Y2VwdGlvblwiIH5sYWIyOlwiY2FsbGluZ19zdGFja1wiXG4gICAgICB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvblxuICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImNhbGxpbmcgc3RhY2tcIlxuICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwic3RhY2sgZWx0XCIpKVxuICAgICAganNvblxuICBpblxuICB7IHVuY2F1Z2h0X2V4Y2VwdGlvbiA9IGE7IGNhbGxpbmdfc3RhY2sgPSBiIH1cblxubGV0IGJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4biA9XG4gIHsgZmlsZV9uYW1lOyBtZXNzYWdlOyBhbGFybSA9IGV4biB9XG5cbmxldCBidWlsZF9jYXVnaHRfZXhjZXB0aW9uIGZpbGVfbmFtZSBtZXNzYWdlIGV4biBzdGFjayA9XG4gIHtcbiAgICB1bmNhdWdodF9leGNlcHRpb24gPSBidWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG47XG4gICAgY2FsbGluZ19zdGFjayA9IHN0YWNrO1xuICB9XG5cbmxldCByYWlzZV9leGNlcHRpb24gZmlsZV9uYW1lIF9rZXkgbWVzc2FnZSBleG4gPVxuICByYWlzZSAoVW5jYXVnaHRfZXhjZXB0aW9uIHsgZmlsZV9uYW1lOyBtZXNzYWdlOyBhbGFybSA9IGV4biB9KVxuXG5sZXQgcmVjIHBwX2V4Y2VwdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBVbmNhdWdodF9leGNlcHRpb24geCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbmNhdWdodF9leGNlcHRpb24oJWEpXCIgcHBfdW5jYXVnaHQgeFxuICB8IENhdWdodF9leGNlcHRpb24geCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQ2F1Z2h0X2V4Y2VwdGlvbiglYSlcIiBwcF9jYXVnaHQgeFxuICB8IGV4YyAtPiBVdGlscy5wcF9leGNlcHRpb24gZiBleGNcblxuYW5kIHBwX3VuY2F1Z2h0IGYgeCA9XG4gIGxldCB3aXRoX3NwYWNlID0gZmFsc2UgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWElYWV4Y2VwdGlvbjpAICVhQF1cIlxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2UgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcImZpbGVfbmFtZTogJXM7IFwiIHgpKVxuICAgIHguZmlsZV9uYW1lXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZSAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwibWVzc2FnZTogJXM7IFwiIHgpKVxuICAgIHgubWVzc2FnZSBwcF9leGNlcHRpb24geC5hbGFybVxuXG5hbmQgcHBfY2F1Z2h0IGYgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPmNhbGxpbmdfc3RhY2s6ICVhOyAlYUBdXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKVxuICAgIHguY2FsbGluZ19zdGFjayBwcF91bmNhdWdodCB4LnVuY2F1Z2h0X2V4Y2VwdGlvblxuXG5sZXQgcmVjIHN0cmluZ2xpc3Rfb2ZfZXhjZXB0aW9uIHggc3RhY2sgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBFeGl0IC0+IFwiRXhpdFwiIDo6IHN0YWNrXG4gIHwgTm90X2ZvdW5kIC0+IFwiTm90X2ZvdW5kXCIgOjogc3RhY2tcbiAgfCBBcmcuQmFkIHggLT4gXCJBcmcuQmFkKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBTeXMuQnJlYWsgLT4gXCJTeXMuQnJlYWtcIiA6OiBzdGFja1xuICB8IFN0YWNrLkVtcHR5IC0+IFwiU3RhY2suRW1wdHlcIiA6OiBzdGFja1xuICB8IFF1ZXVlLkVtcHR5IC0+IFwiUXVldWUuRW1wdHlcIiA6OiBzdGFja1xuICB8IFN0cmVhbS5FcnJvciB4IC0+IFwiU3RyZWFtLkVycm9yXCIgOjogeCA6OiBzdGFja1xuICB8IFN0cmVhbS5GYWlsdXJlIC0+IFwiU3RyZWFtLkZhaWx1cmVcIiA6OiBzdGFja1xuICB8IEFyZy5IZWxwIHggLT4gXCJBcmcuSGVscChcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIiA6OiBzdGFja1xuICB8IFNjYW5mLlNjYW5fZmFpbHVyZSB4IC0+IFwiU2NhbmYuU2Nhbi5mYWlsdXJlKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBMYXp5LlVuZGVmaW5lZCAtPiBcIkxhenkuVW5kZWZpbmVkXCIgOjogc3RhY2tcbiAgfCBVbml4TGFiZWxzLlVuaXhfZXJyb3IgXyAtPiBcIlVuaXhMYWJlbHMuVW5peF9lcnJvclwiIDo6IHN0YWNrXG4gIHwgVW5peC5Vbml4X2Vycm9yIF8gLT4gXCJVbml4LlVuaXguZXJyb3JcIiA6OiBzdGFja1xuICB8IEZhaWx1cmUgeCAtPiBcIkZhaWx1cmUoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IFN0YWNrX292ZXJmbG93IC0+IFwiU3RhY2tfb3ZlcmZsb3dcIiA6OiBzdGFja1xuICB8IENhdWdodF9leGNlcHRpb24geCAtPlxuICAgIFwiQ2F1Z2h0X2V4Y2VwdGlvbihcIiA6OiBzdHJpbmdsaXN0X29mX2NhdWdodCB4IChcIilcIiA6OiBzdGFjaylcbiAgfCBVbmNhdWdodF9leGNlcHRpb24geCAtPlxuICAgIFwiVW5jYXVnaHRfZXhjZXB0aW9uKFwiIDo6IHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgeCAoXCIpXCIgOjogc3RhY2spXG4gIHwgXyAtPiBcIlVua25vd25cIiA6OiBzdGFja1xuXG5hbmQgc3RyaW5nbGlzdF9vZl91bmNhdWdodCB4IHN0YWNrID1cbiAgKG1hdGNoIHguZmlsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGZpbGVfbmFtZSAtPiBcImZpbGVfbmFtZTogXCIgXiBmaWxlX25hbWUgXiBcIjsgXCIpXG4gIDo6IChtYXRjaCB4Lm1lc3NhZ2Ugd2l0aFxuICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICB8IFNvbWUgbWVzc2FnZSAtPiBcIm1lc3NhZ2U6IFwiIF4gbWVzc2FnZSBeIFwiOyBcIilcbiAgOjogXCJleGNlcHRpb246XCJcbiAgOjogc3RyaW5nbGlzdF9vZl9leGNlcHRpb24geC5hbGFybSBzdGFja1xuXG5hbmQgc3RyaW5nbGlzdF9vZl9jYXVnaHQgeCBzdGFjayA9XG4gIFwiY2FsbGluZ19zdGFjazogXCJcbiAgOjogKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc29sIHN0cmluZyAtPiBzdHJpbmcgOjogXCIsIFwiIDo6IHNvbClcbiAgICAgICAgKFwiOyBcIiA6OiBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHgudW5jYXVnaHRfZXhjZXB0aW9uIChcIjsgXCIgOjogc3RhY2spKSlcbiAgICAgICB4LmNhbGxpbmdfc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHRfbGlnaHQgeCBzdGFjayA9XG4gIChtYXRjaCB4LmZpbGVfbmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBmaWxlX25hbWUgLT4gXCJmaWxlX25hbWU6IFwiIF4gZmlsZV9uYW1lIF4gXCI7IFwiKVxuICA6OiAobWF0Y2ggeC5tZXNzYWdlIHdpdGhcbiAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgfCBTb21lIG1lc3NhZ2UgLT4gXCJtZXNzYWdlOiBcIiBeIG1lc3NhZ2UgXiBcIjsgXCIpXG4gIDo6IFwiZXhjZXB0aW9uOlwiXG4gIDo6IHN0cmluZ2xpc3Rfb2ZfZXhjZXB0aW9uIHguYWxhcm0gc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfY2F1Z2h0X2xpZ2h0IHggc3RhY2sgPVxuICBcImNhbGxpbmdfc3RhY2s6IFwiXG4gIDo6IChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNvbCBzdHJpbmcgLT4gc3RyaW5nIDo6IFwiLCBcIiA6OiBzb2wpXG4gICAgICAgIChcIjsgXCJcbiAgICAgICAgOjogc3RyaW5nbGlzdF9vZl91bmNhdWdodF9saWdodCB4LnVuY2F1Z2h0X2V4Y2VwdGlvbiAoXCI7IFwiIDo6IHN0YWNrKSkpXG4gICAgICAgeC5jYWxsaW5nX3N0YWNrXG5cbnR5cGUgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID0ge1xuICBjYXVnaHRfZXJyb3JfbGlzdDogY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xuICBjYXVnaHRfZXJyb3JfbGlzdF90b191aTogY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xuICB1bmNhdWdodF9lcnJvcl9saXN0OiB1bmNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aTogdW5jYXVnaHRfZXhjZXB0aW9uIGxpc3Q7XG59XG5cbmxldCB0b19qc29uIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJjYXVnaHRcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAgICAgICBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQuY2F1Z2h0X2Vycm9yX2xpc3QgKTtcbiAgICAgICggXCJjYXVnaHRfdG9fdWlcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAgICAgICBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgKTtcbiAgICAgICggXCJ1bmNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0LnVuY2F1Z2h0X2Vycm9yX2xpc3QgKTtcbiAgICAgICggXCJ1bmNhdWdodF90b191aVwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0LnVuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgKTtcbiAgICBdXG5cbmxldCBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGNhdWdodCA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCBjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24pIChMaXN0LmFzc29jIFwiY2F1Z2h0XCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCBjYXVnaHRfdG9fdWkgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImNhdWdodF90b191aVwiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgdW5jYXVnaHQgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24pIChMaXN0LmFzc29jIFwidW5jYXVnaHRcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IHVuY2F1Z2h0X3RvX3VpID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcInVuY2F1Z2h0X3RvX3VpXCIgbClcbiAgICAgICBpblxuICAgICAgIHtcbiAgICAgICAgIGNhdWdodF9lcnJvcl9saXN0ID0gY2F1Z2h0O1xuICAgICAgICAgY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSBjYXVnaHRfdG9fdWk7XG4gICAgICAgICB1bmNhdWdodF9lcnJvcl9saXN0ID0gdW5jYXVnaHQ7XG4gICAgICAgICB1bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gdW5jYXVnaHRfdG9fdWk7XG4gICAgICAgfVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImVycm9yIGhhbmRsZXJcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5leG5fbXNnX2NhbnRfaW1wb3J0X2Zyb21fanNvbiBcImVycm9yIGhhbmRsZXJcIiwgeCkpXG5cbmxldCBlbXB0eV9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgPVxuICB7XG4gICAgY2F1Z2h0X2Vycm9yX2xpc3QgPSBbXTtcbiAgICBjYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IFtdO1xuICAgIHVuY2F1Z2h0X2Vycm9yX2xpc3QgPSBbXTtcbiAgICB1bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gW107XG4gIH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvcl90b191aSB1bmNhdWdodCBlcnJvciA9XG4gIHtcbiAgICBlcnJvciB3aXRoXG4gICAgdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IHVuY2F1Z2h0IDo6IGVycm9yLnVuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk7XG4gIH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvcl90b19vdGhlcnMgdW5jYXVnaHQgZXJyb3IgPVxuICB7IGVycm9yIHdpdGggdW5jYXVnaHRfZXJyb3JfbGlzdCA9IHVuY2F1Z2h0IDo6IGVycm9yLnVuY2F1Z2h0X2Vycm9yX2xpc3QgfVxuXG5sZXQgYWRkX3VuY2F1Z2h0X2Vycm9yID90b191aSB1bmNhdWdodCBlcnJvciA9XG4gIGxldCBlcnJvciA9XG4gICAgbWF0Y2ggdG9fdWkgd2l0aFxuICAgIHwgU29tZSBmYWxzZSB8IE5vbmUgLT4gZXJyb3JcbiAgICB8IFNvbWUgdHJ1ZSAtPiBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fdWkgdW5jYXVnaHQgZXJyb3JcbiAgaW5cbiAgYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX290aGVycyB1bmNhdWdodCBlcnJvclxuXG5sZXQgZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBlcnJvciA9IGVycm9yLmNhdWdodF9lcnJvcl9saXN0XG5sZXQgZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdF90b191aSBlcnJvciA9IGVycm9yLmNhdWdodF9lcnJvcl9saXN0X3RvX3VpXG5sZXQgZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGVycm9yID0gZXJyb3IudW5jYXVnaHRfZXJyb3JfbGlzdFxubGV0IGdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdF90b191aSBlcnJvciA9IGVycm9yLnVuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWlcblxubGV0IGlzX2VtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCB4ID1cbiAgeC5jYXVnaHRfZXJyb3JfbGlzdCA9IFtdICYmIHgudW5jYXVnaHRfZXJyb3JfbGlzdCA9IFtdXG4iLCIoKipcbiAgKiBjb25maWcubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uL0FudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAyOCAyMDE4PlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnNcbiAgKiByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNVxuICAqIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxuXG5sZXQgZGF0ZSA9IFwiPDIwMTUuMDEuMjNcIlxubGV0IHZlcnNpb24gPSBcIjQuMDFcIlxubGV0IG91dHB1dF9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9jbV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9pbV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IHVuc2FmZSA9IHJlZiB0cnVlXG5sZXQgdHJhY2UgPSByZWYgZmFsc2VcbmxldCBzeW50YXhfdmVyc2lvbiA9IHJlZiBcIlY0XCJcbmxldCBkdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1ciA9IHJlZiBmYWxzZVxubGV0IGxvZyA9IHJlZiBzdGRvdXRcbmxldCBmb3JtYXR0ZXIgPSByZWYgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbmxldCBmaWxlID0gcmVmIChOb25lIDogc3RyaW5nIG9wdGlvbilcbmxldCBsaW5rX21vZGUgPSByZWYgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQm91bmRfaW5kaWNlc1xuXG4oKiogaW5mbHVlbmNlIG1hcCAqKVxubGV0IGRvX2luZmx1ZW5jZV9tYXAgPSByZWYgdHJ1ZVxuXG5sZXQgcnVsZV9zaGFwZSA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0XG5cbmxldCBydWxlX2NvbG9yID1cbiAgcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAoKlwiIzg3Y2VlYlwiICgqIGxpZ2h0IHNreSBibHVlICopKilcblxubGV0IHZhcmlhYmxlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcblxubGV0IHZhcmlhYmxlX2NvbG9yID1cbiAgcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAoKiBcIiM5OGZiOThcIiAoKlBhbGUgZ3JlZW4qKSopXG5cbmxldCBjZW50ZXJfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkXG5sZXQgd2FrZV91cF9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAoKlwiIzAwZmYwMFwiICgqR3JlZW4gKikqKVxubGV0IGluaGliaXRpb25fY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkICgqXCIjZmYwMDAwXCIgKCpyZWQqKSopXG5sZXQgd2FrZV91cF9hcnJvdyA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbmxldCBpbmhpYml0aW9uX2Fycm93ID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlRlZVxubGV0IGluZmx1ZW5jZV9tYXBfZmlsZSA9IHJlZiBcImluZmx1ZW5jZVwiXG5sZXQgaW5mbHVlbmNlX21hcF9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IHByb21wdF9mdWxsX3Zhcl9kZWYgPSByZWYgZmFsc2VcbmxldCBwcm9tcHRfZnVsbF9ydWxlX2RlZiA9IHJlZiBmYWxzZVxuXG5sZXQgbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdCA9XG4gIHJlZiBbICdcXFwiJywgWyAnXFxcXCc7ICdcXFwiJyBdOyAnXFxcXCcsIFsgJ1xcXFwnOyAnXFxcXCcgXSBdXG5cbigqKiBjb250YWN0IG1hcCopXG5sZXQgZG9fY29udGFjdF9tYXAgPSByZWYgdHJ1ZVxuXG5sZXQgZG9fc2NjID0gcmVmIGZhbHNlXG5sZXQgcHVyZV9jb250YWN0ID0gcmVmIGZhbHNlXG5sZXQgY29udGFjdF9tYXBfZmlsZSA9IHJlZiBcImNvbnRhY3RcIlxubGV0IGNvbnRhY3RfbWFwX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgYmluZGluZ19zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxubGV0IGJpbmRpbmdfc2l0ZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3dcbmxldCBpbnRlcm5hbF9zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcbmxldCBpbnRlcm5hbF9zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuXG5sZXQgY291bnRlcl9zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlXG5sZXQgY291bnRlcl9zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXlcbmxldCBhZ2VudF9zaGFwZV9hcnJheSA9IHJlZiAoW3x8XSA6IEdyYXBoX2xvZ2dlcnNfc2lnLnNoYXBlIG9wdGlvbiBhcnJheSlcbmxldCBhZ2VudF9jb2xvcl9hcnJheSA9IHJlZiAoW3x8XSA6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbiBhcnJheSlcbmxldCBhZ2VudF9zaGFwZV9kZWYgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxubGV0IGFnZW50X2NvbG9yX2RlZiA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlXG5sZXQgbGlua19jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xubGV0IGluZmx1ZW5jZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbmxldCBpbmZsdWVuY2VfYXJyb3cgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG5cbigqKmZsb3cgb2YgaW5mb3JtYXRpb246IGludGVybmFsOyBleHRlcm5hbCBmbG93KilcbmxldCBkb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiA9IHJlZiBmYWxzZVxuXG5sZXQgZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uID0gcmVmIGZhbHNlXG5cbigqY292ZXJpbmcgY2xhc3NlczogdGhpcyBwYXJhbWV0ZXIgZG9lcyBub3QgbWF0dGVyIGlmIGl0IGlzIHRydWUvZmFsc2UqKVxubGV0IGRvX3NpdGVfZGVwZW5kZW5jaWVzID0gcmVmIGZhbHNlXG5cbigqc2V0IHRvIHRydWUgaWYgb25lIHdhbnRzIHRvIHByaW50IGNvdmVyaW5nIGNsYXNzZXMqKVxubGV0IGR1bXBfc2l0ZV9kZXBlbmRlbmNpZXMgPSByZWYgZmFsc2VcblxuKCpSRU1BUks6IG9uZSBuZWVkcyB0byBzZXQgZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIHRvIHRydWUgZmlyc3QgdG8gYmVcbiAgYWJsZSB0byBhY3RpdmUgZGlmZmVyZW50IG91dHB1dCAqKVxubGV0IGRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgdmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgPSByZWYgXCJMb3dcIlxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IHJlZiB0cnVlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPSByZWYgZmFsc2VcbmxldCBoaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9IHJlZiB0cnVlXG5sZXQgaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9IHJlZiB0cnVlXG5sZXQgc21hc2hfcmVsYXRpb25zID0gcmVmIHRydWVcbmxldCB1c2VfbmF0dXJhbF9sYW5ndWFnZSA9IHJlZiBcImthcHBhXCJcbmxldCBjb21wdXRlX2xvY2FsX3RyYWNlcyA9IHJlZiBmYWxzZVxubGV0IHNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPSByZWYgdHJ1ZVxubGV0IHVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IHJlZiBmYWxzZVxubGV0IGFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9IHJlZiBmYWxzZVxubGV0IGFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9IHJlZiBmYWxzZVxubGV0IGRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZ2VzID0gcmVmIGZhbHNlXG5sZXQgbG9jYWxfdHJhY2VfcHJlZml4ID0gcmVmIFwiQWdlbnRfdHJhY2VfXCJcbmxldCBsb2NhbF90cmFjZV9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IGNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxuXG4oKiogYWNjdXJhY3kgKilcblxubGV0IHdpdGhfdmlld3NfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfZHluYW1pY19jb250YWN0X21hcCA9IHJlZiBcImR5bmFtaWNcIlxubGV0IHdpdGhfY291bnRlcnNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IGNvdW50ZXJfYW5hbHlzaXNfZG9tYWluID0gcmVmIFwibWlcIlxubGV0IHZpZXdfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJIaWdoXCJcbmxldCBpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiRGlyZWN0XCJcbmxldCBjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkxvd1wiXG5sZXQgc2NjX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiSGlnaFwiXG5cbigqIFN5bW1ldHJpZXMgKilcbmxldCBkb19zeW1tZXRyaWVzID0gcmVmIGZhbHNlXG5sZXQgcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiYmlvY2hlbWlzdFwiXG5cbigqIEJhY2tkb29ycyAtIHN0YXRzIGZvciBiZW5jaG1hcmtpbmcgKilcbmxldCBwcmludF9lZmZpY2llbmN5ID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3NjYyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ydWxlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX3RpbWluZyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX2ZpbGUgPSByZWYgXCJiZW5jaG1hcmsudGV4XCJcbmxldCBiYWNrZG9vcl9kaXJlY3RvcnkgPSByZWYgXCJcIlxuIiwiKCoqXG4gICogcGFyYW1ldGVycy5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24vQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMjAxMCwgdGhlIDE5dGggb2YgRGVjZW1iZXJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEphbiAwOCAyMDIwPlxuICAqICpcbiAgKiBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgd2hpY2ggYXJlIHBhc3NlZCB0aHJvdWdoIGZ1bmN0aW9ucyBjb21wdXRhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcblxubGV0IGFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbWVudGlvbmVkIGEgZXh0ID1cbiAgbGV0IHNpemVfYSA9IFN0cmluZy5sZW5ndGggYSBpblxuICBsZXQgc2l6ZV9leHQgPSBTdHJpbmcubGVuZ3RoIGV4dCBpblxuICB0cnlcbiAgICBpZiBzaXplX2EgPCBzaXplX2V4dCB8fCBTdHJpbmcuc3ViIGEgKHNpemVfYSAtIHNpemVfZXh0KSBzaXplX2V4dCA9IGV4dCB0aGVuXG4gICAgICBhXG4gICAgZWxzZVxuICAgICAgYSBeIGV4dFxuICB3aXRoIF8gLT4gYSBeIGV4dFxuXG5sZXQgb3Blbl9vdXQgYSBleHQgPVxuICAoKiBpdCB3b3VsZCBiZSBlYXNpZXIgd2l0aCBPQ2FtbCAzLjA0ICopXG4gIGxldCBhID0gYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tZW50aW9uZWQgYSBleHQgaW5cbiAgbGV0IGQgPSBGaWxlbmFtZS5kaXJuYW1lIGEgaW5cbiAgbGV0ICgpID1cbiAgICB0cnlcbiAgICAgIGlmIG5vdCAoU3lzLmlzX2RpcmVjdG9yeSBkKSB0aGVuIChcbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCInJXMnIGlzIG5vdCBhIGRpcmVjdG9yeUAuXCIgZDtcbiAgICAgICAgZXhpdCAxXG4gICAgICApXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBLYXBwYV9maWxlcy5ta19kaXJfciBkXG4gIGluXG4gIG9wZW5fb3V0IGFcblxubGV0IG9wZW5fYXBwZW5kIGEgZXh0ID1cbiAgbGV0IGEgPSBhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X21lbnRpb25lZCBhIGV4dCBpblxuICBsZXQgZCA9IEZpbGVuYW1lLmRpcm5hbWUgYSBpblxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IGQpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBkO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IEthcHBhX2ZpbGVzLm1rX2Rpcl9yIGRcbiAgaW5cbiAgdHJ5IG9wZW5fb3V0X2dlbiBbIE9wZW5fYXBwZW5kIF0gNTExIGEgd2l0aCBfIC0+IG9wZW5fb3V0IGEgZXh0XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxuXG5sZXQgZXh0X2Zvcm1hdCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UIC0+IFwiLmRvdFwiXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTCAtPiBcIi5odG1sXCJcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU0gLT4gXCIuZGltLmpzb25cIlxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJIC0+IFwiLmdleGZcIlxuXG5sZXQgZmV0Y2hfbGV2ZWxfZ2VuIHMgciA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhciB3aXRoXG4gIHwgXCJtdXRlXCIgfCBcIm5vbmVcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lXG4gIHwgXCJsb3dcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3dcbiAgfCBcIm1lZGl1bVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bVxuICB8IFwiaGlnaFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2hcbiAgfCBcImNvbXBsZXRlXCIgfCBcImZ1bGxcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsXG4gIHwgeCAtPlxuICAgIGxldCAoKSA9IFByaW50Zi5lcHJpbnRmIFwiJXM6ICVzIGlzIG5vdCBhIHZhbGlkIGxldmVsICEhIVwiIHMgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGZldGNoX2dyYXBoX2Zvcm1hdCBmID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFmIHdpdGhcbiAgfCBcImRvdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVFxuICB8IFwiaHRtbFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUxcbiAgfCBcImRpbVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTVxuICB8IFwiZ2VwaGlcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5HRVBISVxuICB8IHggLT5cbiAgICBsZXQgKCkgPSBQcmludGYuZXByaW50ZiBcIiVzIGlzIG5vdCBhIHZhbGlkIGdyYXBoIGZvcm1hdCAhISFcIiB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgciA9IGZldGNoX2xldmVsX2dlbiBcImFuIGFjY3VyYWN5XCIgclxubGV0IGZldGNoX3ZlcmJvc2l0eV9sZXZlbCByID0gZmV0Y2hfbGV2ZWxfZ2VuIFwiYSB2ZXJib3NpdHlcIiByXG5cbmxldCBmZXRjaF9yYXRlX2NvbnZlbnRpb24gZiA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhZiB3aXRoXG4gIHwgXCJrYXNpbVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vX2NvcnJlY3Rpb25cbiAgfCBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5EaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1xuICB8IFwiYmlvY2hlbWlzdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkJpb2NoZW1pc3RcbiAgfCB4IC0+XG4gICAgbGV0ICgpID0gUHJpbnRmLmVwcmludGYgXCIlcyBpcyBub3QgYSB2YWxpZCByYXRlIGNvbnZlbnRpb24gISEhXCIgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGdldF9zeW50YXhfdmVyc2lvbiAoKSA9XG4gIG1hdGNoICFDb25maWcuc3ludGF4X3ZlcnNpb24gd2l0aFxuICB8IFwiNFwiIHwgXCJ2NFwiIHwgXCJWNFwiIC0+IEFzdC5WNFxuICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IEFzdC5WM1xuICB8IF8gLT4gZmFpbHdpdGggXCJTeW50YXggdmVyc2lvbiBzaG91bGQgYmUgZWl0aGVyIFYzIG9yIFY0XCJcblxubGV0IGdldF9zeW1ib2xzICgpID1cbiAgbWF0Y2ggZ2V0X3N5bnRheF92ZXJzaW9uICgpIHdpdGhcbiAgfCBBc3QuVjMgLT4gU3ltYm9sX3RhYmxlLnN5bWJvbF90YWJsZV9WM1xuICB8IEFzdC5WNCAtPiBTeW1ib2xfdGFibGUuc3ltYm9sX3RhYmxlX1Y0XG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcCAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9mb3JtYXQgPVxuICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5pbmZsdWVuY2VfbWFwX2Zvcm1hdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9maWxlID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLmluZmx1ZW5jZV9tYXBfZmlsZSB3aXRoXG4gICAgICB8IFwiXCIgLT4gTm9uZVxuICAgICAgfCB4IC0+IFNvbWUgeCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZGlyZWN0b3J5ID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9pbV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgfCBcIlwiIC0+IFNvbWUgXCJcIlxuICAgICAgfCB4IC0+IFNvbWUgKHggXiBcIi9cIikpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfc2hhcGUgPSAhQ29uZmlnLnJ1bGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9jb2xvciA9ICFDb25maWcucnVsZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9zaGFwZSA9ICFDb25maWcudmFyaWFibGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfY29sb3IgPSAhQ29uZmlnLnZhcmlhYmxlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfY29sb3IgPSAhQ29uZmlnLndha2VfdXBfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9jb2xvciA9ICFDb25maWcuaW5oaWJpdGlvbl9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2Fycm93ID0gIUNvbmZpZy53YWtlX3VwX2Fycm93O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fYXJyb3cgPSAhQ29uZmlnLmluaGliaXRpb25fYXJyb3c7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfdmFyX2RlZiA9ICFDb25maWcucHJvbXB0X2Z1bGxfdmFyX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZiA9ICFDb25maWcucHJvbXB0X2Z1bGxfcnVsZV9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAoYSwgbCkgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5hZGQgYSBsIG1hcClcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5lbXB0eVxuICAgICAgICAhQ29uZmlnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3Q7XG4gIH1cblxubGV0IGdldF9jb250YWN0X21hcCAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9mb3JtYXQgPVxuICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5jb250YWN0X21hcF9mb3JtYXQ7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZmlsZSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5jb250YWN0X21hcF9maWxlIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICB8IHggLT4gU29tZSB4KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2NtX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gU29tZSBcIlwiXG4gICAgICB8IHggLT4gU29tZSAoeCBeIFwiL1wiKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHVyZV9jb250YWN0ID0gIUNvbmZpZy5wdXJlX2NvbnRhY3Q7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX3NoYXBlID0gIUNvbmZpZy5iaW5kaW5nX3NpdGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX2NvbG9yID0gIUNvbmZpZy5iaW5kaW5nX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9zaGFwZSA9ICFDb25maWcuaW50ZXJuYWxfc2l0ZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX2NvbG9yID0gIUNvbmZpZy5pbnRlcm5hbF9zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9zaGFwZSA9ICFDb25maWcuY291bnRlcl9zaXRlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9jb2xvciA9ICFDb25maWcuY291bnRlcl9zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X3NoYXBlX2FycmF5ID0gIUNvbmZpZy5hZ2VudF9zaGFwZV9hcnJheTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9hcnJheSA9ICFDb25maWcuYWdlbnRfY29sb3JfYXJyYXk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfZGVmID0gIUNvbmZpZy5hZ2VudF9zaGFwZV9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfZGVmID0gIUNvbmZpZy5hZ2VudF9jb2xvcl9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19jb2xvciA9ICFDb25maWcubGlua19jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfY29sb3IgPSAhQ29uZmlnLmluZmx1ZW5jZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfYXJyb3cgPSAhQ29uZmlnLmluZmx1ZW5jZV9hcnJvdztcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8wID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gICAgICBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pZ25vcmVfdHJpdmlhbF9sb3NhbmdlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9ucyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgICAgIHRydWU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgPSBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlcyA9XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1Q7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4ID0gXCJBZ2VudF90cmFjZV9cIjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCB4IC0+IHggXiBcIi9cIik7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMSA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzAgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMiA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzEgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMyA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSB0cnVlO1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzQgPVxuICB7XG4gICAgcmVhY2hhYmlsaXR5X21hcF8zIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IHRydWU7XG4gIH1cblxubGV0IGFkZF9kZWJ1Z2dpbmdfcGFyYW1ldGVyc190b19yZWFjaGFiaWxpdHlfbWFwIHJlYWNoYWJpbGl0eSA9XG4gIGxldCB0cmFjZSA9ICFDb25maWcudHJhY2UgaW5cbiAgbGV0IHJlYWNoYWJpbGl0eSA9XG4gICAge1xuICAgICAgcmVhY2hhYmlsaXR5IHdpdGhcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgICAgICAgIUNvbmZpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICAgICAgICAhQ29uZmlnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb247XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zbWFzaF9yZWxhdGlvbnMgPSAhQ29uZmlnLnNtYXNoX3JlbGF0aW9ucztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlID1cbiAgICAgICAgKG1hdGNoICFDb25maWcudXNlX25hdHVyYWxfbGFuZ3VhZ2Ugd2l0aFxuICAgICAgICB8IFwicmF3XCIgfCBcIlJBV1wiIHwgXCJSYXdcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5SYXdcbiAgICAgICAgfCBcImthcHBhXCIgfCBcIktBUFBBXCIgfCBcIkthcHBhXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FwcGFcbiAgICAgICAgfCBcIkVuZ2xpc2hcIiB8IFwiRU5HTElTSFwiIHwgXCJlbmdsaXNoXCIgLT5cbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5OYXR1cmFsX2xhbmd1YWdlXG4gICAgICAgIHwgXyAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYSk7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgICFDb25maWcuY29tcHV0ZV9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPVxuICAgICAgICAhQ29uZmlnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmlnbm9yZV90cml2aWFsX2xvc2FuZ2VzID1cbiAgICAgICAgIUNvbmZpZy5kb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmdlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9XG4gICAgICAgICFDb25maWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID1cbiAgICAgICAgIUNvbmZpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgIGZldGNoX2dyYXBoX2Zvcm1hdCBDb25maWcubG9jYWxfdHJhY2VfZm9ybWF0O1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4ID0gIUNvbmZpZy5sb2NhbF90cmFjZV9wcmVmaXg7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnkgPVxuICAgICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgICAgfCB4IC0+IHggXiBcIi9cIik7XG4gICAgfVxuICBpblxuICBpZiB0cmFjZSB0aGVuXG4gICAge1xuICAgICAgcmVhY2hhYmlsaXR5IHdpdGhcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWM7XG4gICAgfVxuICBlbHNlXG4gICAgcmVhY2hhYmlsaXR5XG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X21hcCAoKSA9XG4gIGFkZF9kZWJ1Z2dpbmdfcGFyYW1ldGVyc190b19yZWFjaGFiaWxpdHlfbWFwXG4gICAgKG1hdGNoXG4gICAgICAgZmV0Y2hfdmVyYm9zaXR5X2xldmVsIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpc1xuICAgICB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIC0+IHJlYWNoYWJpbGl0eV9tYXBfMFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93IC0+IHJlYWNoYWJpbGl0eV9tYXBfMVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtIC0+IHJlYWNoYWJpbGl0eV9tYXBfMlxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaCAtPiByZWFjaGFiaWxpdHlfbWFwXzNcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGwgLT4gcmVhY2hhYmlsaXR5X21hcF80KVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9wYXJhbWV0ZXJzICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdzID0gIUNvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNpdGVfYWNyb3NzX2JvbmRzID1cbiAgICAgICFDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbGxlbF9ib25kcyA9XG4gICAgICAhQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcnMgPSAhQ29uZmlnLndpdGhfY291bnRlcnNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHluYW1pY19jb250YWN0X21hcCA9XG4gICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcud2l0aF9keW5hbWljX2NvbnRhY3RfbWFwIHdpdGhcbiAgICAgIHwgXCJkeW5hbWljXCIgLT4gdHJ1ZVxuICAgICAgfCBcInN0YXRpY1wiIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9kb21haW4gPVxuICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLmNvdW50ZXJfYW5hbHlzaXNfZG9tYWluIHdpdGhcbiAgICAgIHwgXCJtaVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1pXG4gICAgICB8IFwib2N0YWdvblwiIHwgXCJvY3RcIiB8IFwib2N0b1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk9jdGFnb25zXG4gICAgICB8IFwiYWJzdHJhY3QtbXVsdGlzZXRcIiB8IFwiYW1cIiB8IFwiYWJzdHJhY3RfbXVsdGlzZXRcIiAtPlxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5BYnN0cmFjdF9tdWx0aXNldFxuICAgICAgfCBcIm5vbi1yZWxhdGlvbmFsXCIgfCBcIm5yXCIgfCBcIm5vbi1yZWxcIiB8IFwibm9uX3JlbFwiIHwgXCJub25fcmVsYXRpb25hbFwiIC0+XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbl9yZWxhdGlvbmFsXG4gICAgICB8IF8gLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWkpO1xuICB9XG5cbmxldCBvcGVuX3Rhc2tzX3Byb2ZpbGluZyA9XG4gIGxldCBjYWNoZSA9IHJlZiBOb25lIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFjYWNoZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgY2hhbm5lbCA9IEthcHBhX2ZpbGVzLm9wZW5fdGFza3NfcHJvZmlsaW5nICgpIGluXG4gICAgICBsZXQgKCkgPSBjYWNoZSA6PSBTb21lIGNoYW5uZWwgaW5cbiAgICAgIGNoYW5uZWxcbiAgICB8IFNvbWUgY2hhbm5lbCAtPiBjaGFubmVsXG5cbmxldCBmZXRjaF9iYWNrZG9vcnMgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3NjYyA9ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3NjYztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWdcbiAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX3RpbWluZyA9ICFDb25maWcuYmFja2Rvb3JfdGltaW5nO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2ZpbGUgPSAhQ29uZmlnLmJhY2tkb29yX2ZpbGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZGlyZWN0b3J5ID0gIUNvbmZpZy5iYWNrZG9vcl9kaXJlY3Rvcnk7XG4gIH1cblxubGV0IGdldF9wYXJhbWV0ZXJzID8oaHRtbF9tb2RlID0gdHJ1ZSkgfmNhbGxlZF9mcm9tICgpID1cbiAgbGV0IGNoYW5uZWwsIGNoYW5uZWxfZXJyLCBjaGFubmVsX2JhY2tkb29yLCBodG1sX21vZGUsIGNvbW1hbmQgPVxuICAgIG1hdGNoIGNhbGxlZF9mcm9tIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciAtPlxuICAgICAgTm9uZSwgTm9uZSwgTm9uZSwgZmFsc2UgfHwgaHRtbF9tb2RlLCBbfCBcIkthU2FcIjsgXCIoSW50ZXJyYWN0aXZlIG1vZGUpXCIgfF1cbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkludGVybmFsaXNlZCAtPlxuICAgICAgKCBTb21lIHN0ZG91dCxcbiAgICAgICAgU29tZSBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgU29tZSBzdGRvdXQsXG4gICAgICAgIGZhbHNlIHx8IGh0bWxfbW9kZSxcbiAgICAgICAgU3lzLmFyZ3YgKVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTaW0gLT5cbiAgICAgIFNvbWUgKG9wZW5fdGFza3NfcHJvZmlsaW5nICgpKSwgTm9uZSwgTm9uZSwgZmFsc2UgfHwgaHRtbF9tb2RlLCBTeXMuYXJndlxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAtPlxuICAgICAgKCAobWF0Y2hcbiAgICAgICAgICAgIUNvbmZpZy5vdXRwdXRfZGlyZWN0b3J5LCBcInByb2ZpbGluZ1wiLCBcIi5odG1sXCJcbiAgICAgICAgICAgKCp0ZW1wb3JhcnksIHRvIGRvOiBwcm92aWRlIGEgcGFyYW1ldGVyaXNhYmxlIGZpbGVuYW1lKilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBfLCBcIlwiLCBfIC0+IFNvbWUgc3Rkb3V0XG4gICAgICAgIHwgXCJcIiwgYSwgZXh0IC0+IFNvbWUgKG9wZW5fb3V0IGEgZXh0KVxuICAgICAgICB8IGEsIGIsIGV4dCAtPiBTb21lIChvcGVuX291dCAoYSBeIFwiL1wiIF4gYikgZXh0KSksXG4gICAgICAgIFNvbWUgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICAoICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZ1xuICAgICAgICAgICAgICAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfdGltaW5nXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyxcbiAgICAgICAgICAgICAhQ29uZmlnLmJhY2tkb29yX2RpcmVjdG9yeSxcbiAgICAgICAgICAgICAhQ29uZmlnLmJhY2tkb29yX2ZpbGUsXG4gICAgICAgICAgICAgXCIudGV4XCIgKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IGZhbHNlLCBfLCBfLCBfIC0+IE5vbmVcbiAgICAgICAgfCBfLCBfLCBcIlwiLCBfIC0+IFNvbWUgc3Rkb3V0XG4gICAgICAgIHwgXywgXCJcIiwgYSwgZXh0IC0+IFNvbWUgKG9wZW5fYXBwZW5kIGEgZXh0KVxuICAgICAgICB8IF8sIGEsIGIsIGV4dCAtPiBTb21lIChvcGVuX2FwcGVuZCAoYSBeIFwiL1wiIF4gYikgZXh0KSksXG4gICAgICAgIGZhbHNlIHx8IGh0bWxfbW9kZSxcbiAgICAgICAgU3lzLmFyZ3YgKVxuICBpblxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ludGF4X3ZlcnNpb24gPSBnZXRfc3ludGF4X3ZlcnNpb24gKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2NvbnRhY3RfbWFwID0gIUNvbmZpZy5kb19jb250YWN0X21hcDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2NjID0gIUNvbmZpZy5kb19zY2M7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2luZmx1ZW5jZV9tYXAgPSAhQ29uZmlnLmRvX2luZmx1ZW5jZV9tYXA7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAhQ29uZmlnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICFDb25maWcuZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zaXRlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIUNvbmZpZy5kb19zaXRlX2RlcGVuZGVuY2llcztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3ltbWV0cmllc19hbmFseXNpcyA9ICFDb25maWcuZG9fc3ltbWV0cmllcztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmF0ZV9jb252ZW50aW9uID1cbiAgICAgICAgICBmZXRjaF9yYXRlX2NvbnZlbnRpb24gQ29uZmlnLnJhdGVfY29udmVudGlvbjtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIUNvbmZpZy5kdW1wX3NpdGVfZGVwZW5kZW5jaWVzO1xuICAgICAgICAoKmRpZmZlcmVudCByZWFjaGFiaWxpdHkgb3V0cHV0KilcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzID1cbiAgICAgICAgICAhQ29uZmlnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcztcbiAgICAgICAgKCpHRVQgU1lNQk9MUyopXG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZpbGUgPSAhQ29uZmlnLmZpbGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnN5bWJvbHMgPSBnZXRfc3ltYm9scyAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9vdXRwdXQgPSBnZXRfaW5mbHVlbmNlX21hcCAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfb3V0cHV0ID0gZ2V0X2NvbnRhY3RfbWFwICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICAgICAgZ2V0X3JlYWNoYWJpbGl0eV9tYXAgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzID1cbiAgICAgICAgICBnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVuc2FmZSA9ICFDb25maWcudW5zYWZlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZSA9ICFDb25maWcudHJhY2U7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID1cbiAgICAgICAgICAhQ29uZmlnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXggPSBcIlwiO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrID0gW107XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfbW9kZSA9ICFDb25maWcubGlua19tb2RlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5rYXNhX3N0YXRlID1cbiAgICAgICAgICBSZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUuZW1wdHlfZW5naW5lX3N0YXRlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sYXVuY2hpbmdfZGF0ZSA9XG4gICAgICAgICAgVW5peC5sb2NhbHRpbWUgKFVuaXguZ2V0dGltZW9mZGF5ICgpKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGltZV9zaGlmdCA9XG4gICAgICAgICAgKGxldCB4ID0gVW5peC5nZXR0aW1lb2ZkYXkgKCkgaW5cbiAgICAgICAgICAgKFVuaXgubG9jYWx0aW1lIHgpLlVuaXgudG1faG91ciAtIChVbml4LmdtdGltZSB4KS5Vbml4LnRtX2hvdXIpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ob3N0bmFtZSA9XG4gICAgICAgICAgKHRyeSBVbml4LmdldGhvc3RuYW1lICgpIHdpdGggXyAtPiBcImphdmFzY3JpcHRcIik7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbW1hbmRfbGluZSA9IGNvbW1hbmQ7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3J0X3ZlcnNpb24gPSBWZXJzaW9uLnZlcnNpb25fc3RyaW5nO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uID0gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50a19pbnRlcmZhY2UgPSAhVmVyc2lvbi50a19pc19pbml0aWFsaXplZDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgd2l0aFxuICAgICAgICAgIHwgXCJpbmRpcmVjdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvd1xuICAgICAgICAgIHwgXCJkaXJlY3RcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW1cbiAgICAgICAgICB8IFwicmVhbGlzYWJsZVwiIHwgXCJyZWFsaXphYmxlXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaFxuICAgICAgICAgIHwgXyAtPiBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNjY19hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLnNjY19hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld19hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLnZpZXdfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxlZF9mcm9tO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5odG1sX21vZGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmVtcHR5X2hhc2h0Ymxfc2l6ZSA9IDE7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29ycyA9IGZldGNoX2JhY2tkb29ycyAoKTtcbiAgICAgIH07XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0ID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgXyAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyICFDb25maWcuZm9ybWF0dGVyKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfZXJyID1cbiAgICAgIChtYXRjaCBjaGFubmVsX2VyciB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgZm10IC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgZm10KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfYmFja2Rvb3IgPVxuICAgICAgKG1hdGNoIGNoYW5uZWxfYmFja2Rvb3Igd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGNoYW5uZWwgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgY2hhbm5lbCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHJlc3Npb25fc3RhdHVzID0gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByaW50X2VmZmljaWVuY3kgPSAhQ29uZmlnLnByaW50X2VmZmljaWVuY3k7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvZmlsZXIgPVxuICAgICAgKG1hdGNoIGNoYW5uZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGEgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6TG9nZ2Vycy5IVE1MX1RhYnVsYXIgYSk7XG4gIH1cblxubGV0IGR1bW15X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tID1cbiAgbGV0IGNhY2hlID0gcmVmIE5vbmUgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIWNhY2hlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwID0gZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpIGluXG4gICAgICBsZXQgKCkgPSBjYWNoZSA6PSBTb21lIHAgaW5cbiAgICAgIHBcbiAgICB8IFNvbWUgcCAtPiBwXG5cbmxldCBnZXRfYm91bmRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5ib3VuZFxubGV0IGdldF9vcGVuX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fYmluZGluZ19zdGF0ZVxubGV0IGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9iaW5kaW5nX3N0YXRlXG5cbmxldCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5taXNzaW5nX2JpbmRpbmdfc3RhdGVcblxubGV0IGdldF9saW5rX3RvX2FueV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubGlua190b19hbnlcbmxldCBnZXRfbGlua190b19zb21lXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5saW5rX3RvX3NvbWVcblxubGV0IGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmludGVybmFsX3N0YXRlX3N5bWJvbFxuXG5sZXQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50ZXJuYWxfc3RhdGVcbmxldCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludGVybmFsX3N0YXRlXG5sZXQgZ2V0X2ZyZWVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmZyZWVcbmxldCBnZXRfYXRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5hdFxubGV0IGdldF9hZ2VudF9vcGVuX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfb3BlblxubGV0IGdldF9hZ2VudF9jbG9zZV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X2Nsb3NlXG5cbmxldCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xIHN5bWJvbCA9XG4gIGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9jb21tYVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xIHN5bWJvbCA9IGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9wbHVzXG5sZXQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX2RvdFxubGV0IGdldF9idHlwZV9zZXBfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5idHlwZV9zZXBcbmxldCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuc2l0ZV9zZXBcbmxldCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5naG9zdF9hZ2VudFxubGV0IGdldF9kb193ZV9zaG93X2dob3N0XzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5zaG93X2dob3N0XG5sZXQgZ2V0X3VuaV9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnVuaV9hcnJvd1xubGV0IGdldF9yZXZfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5yZXZfYXJyb3dcbmxldCBnZXRfYmlfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5iaV9hcnJvd1xubGV0IGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYmlfYXJyb3dfbm9wb2x5XG5sZXQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUudW5pX2Fycm93X25vcG9seVxubGV0IGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnJldl9hcnJvd19ub3BvbHlcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2luZmluaXR5XG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eVxuXG5sZXQgZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5wbHVzX2luZmluaXR5XG5sZXQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubWludXNfaW5maW5pdHlcblxubGV0IGdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuaW50X2ludGVydmFsX3NlcGFyYXRvclxuXG5sZXQgZ2V0X29wZW5fY291bnRlcl9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyX3N0YXRlXG5sZXQgZ2V0X29wZW5fY291bnRlcmNlcV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY2VxXG5sZXQgZ2V0X29wZW5fY291bnRlcmN2YXJfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcmN2YXJcbmxldCBnZXRfb3Blbl9jb3VudGVyY2d0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY2d0ZVxubGV0IGdldF9vcGVuX2NvdW50ZXJkZWx0YV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyZGVsdGFcbmxldCBnZXRfb3Blbl9jb3VudGVydmFsXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJ2YWxcbmxldCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcl9zdGF0ZVxubGV0IGdldF9jbG9zZV9jb3VudGVyY2VxXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY2VxXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY3ZhclxubGV0IGdldF9jbG9zZV9jb3VudGVyY2d0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcmNndGVcbmxldCBnZXRfY2xvc2VfY291bnRlcmRlbHRhXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyZGVsdGFcbmxldCBnZXRfY2xvc2VfY291bnRlcnZhbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcnZhbFxubGV0IGdldF9jb3VudGVyY2VxX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmNlcV9zeW1ib2xcbmxldCBnZXRfY291bnRlcmN2YXJfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY3Zhcl9zeW1ib2xcbmxldCBnZXRfY291bnRlcmNndGVfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY2d0ZV9zeW1ib2xcblxubGV0IGdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmRlbHRhcGx1c19zeW1ib2xcblxubGV0IGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVydmFsX3N5bWJvbFxuXG4oKkluZmx1ZW5jZSopXG5sZXQgZ2V0X2ltX2Zvcm1hdF8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9mb3JtYXRcbmxldCBnZXRfaW1fZmlsZV8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9maWxlXG5cbmxldCBnZXRfaW1fZGlyZWN0b3J5XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2RpcmVjdG9yeVxuXG5sZXQgZ2V0X3J1bGVfc2hhcGVfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9zaGFwZVxubGV0IGdldF9ydWxlX2NvbG9yXzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfY29sb3JcblxubGV0IGdldF92YXJpYWJsZV9zaGFwZV8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9zaGFwZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX2NvbG9yXG5cbmxldCBnZXRfd2FrZV91cF9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2NvbG9yXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2NvbG9yXG5cbmxldCBnZXRfd2FrZV91cF9hcnJvd18xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2Fycm93XG5cbmxldCBnZXRfaW5oaWJpdGlvbl9hcnJvd18xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2Fycm93XG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF92YXJfZGVmXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWZfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfcnVsZV9kZWZcblxubGV0IGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGVcblxubGV0IGdldF9wdXJlX2NvbnRhY3RfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnB1cmVfY29udGFjdFxubGV0IGdldF9jbV9mb3JtYXRfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2Zvcm1hdFxubGV0IGdldF9jbV9maWxlXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9maWxlXG5sZXQgZ2V0X2NtX2RpcmVjdG9yeV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZGlyZWN0b3J5XG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX3NoYXBlXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX2NvbG9yXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xIGNtID1cbiAgY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9zaGFwZVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMSBjbSA9XG4gIGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfY29sb3JcblxubGV0IGdldF9jb3VudGVyX3NpdGVfc2hhcGVfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9zaGFwZVxubGV0IGdldF9jb3VudGVyX3NpdGVfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9jb2xvclxubGV0IGdldF9hZ2VudF9zaGFwZV9hcnJheV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfYXJyYXlcbmxldCBnZXRfYWdlbnRfY29sb3JfYXJyYXlfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2FycmF5XG5sZXQgZ2V0X2FnZW50X3NoYXBlX2RlZl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfZGVmXG5sZXQgZ2V0X2FnZW50X2NvbG9yX2RlZl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfZGVmXG5sZXQgZ2V0X2xpbmtfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfY29sb3JcbmxldCBnZXRfaW5mbHVlbmNlX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfY29sb3JcbmxldCBnZXRfaW5mbHVlbmNlX2Fycm93XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfYXJyb3dcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25fMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25cblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pY1xuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmZfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bFxuXG5sZXQgZ2V0X3NtYXNoX3JlbGF0aW9uc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9uc1xuXG5sZXQgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25fMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXG5cbmxldCBnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlc1xuXG5sZXQgZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xIHIgPVxuICBtYXRjaCByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5SYXcgLT4gZmFsc2VcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5hdHVyYWxfbGFuZ3VhZ2UgLT5cbiAgICB0cnVlXG5cbmxldCBnZXRfYmFja2VuZF9tb2RlXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2VcblxubGV0IGdldF9sb2NhbF90cmFjZV9mb3JtYXRfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9sb2NhbF90cmFjZXNcblxubGV0IGdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNcblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMSByIGIgPVxuICB7IHIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPSBiIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18xIHIgYiA9XG4gIHsgciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IGIgfVxuXG5sZXQgZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNcblxubGV0IGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc1xuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlc1xuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX3ByZWZpeFxubGV0IGdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnlfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnlcbmxldCBnZXRfdmlld19hbmFseXNpc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdzXG5cbmxldCBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaXRlX2Fjcm9zc19ib25kc1xuXG5sZXQgZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYWxsZWxfYm9uZHNcbmxldCBnZXRfZHluYW1pY19jb250YWN0X21hcF8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR5bmFtaWNfY29udGFjdF9tYXBcbmxldCBnZXRfY291bnRlcnNfYW5hbHlzaXNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyc1xubGV0IGdldF9jb3VudGVyc19kb21haW5fMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX2RvbWFpblxuXG5sZXQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N5bW1ldHJpZXNfYW5hbHlzaXNcblxubGV0IGdldF9yYXRlX2NvbnZlbnRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yYXRlX2NvbnZlbnRpb25cblxubGV0IGdldF9lbXB0eV9oYXNodGJsX3NpemVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5lbXB0eV9oYXNodGJsX3NpemVcblxubGV0IGdldF9zeW1ib2xzXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ltYm9sc1xubGV0IGdldF9maWxlXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZmlsZVxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX291dHB1dFxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfb3V0cHV0XG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dFxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNcblxubGV0IGdldF91bnNhZmVfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51bnNhZmVcbmxldCBnZXRfdHJhY2VfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZVxuXG5sZXQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJcblxubGV0IGdldF9wcmVmaXhfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXhcblxubGV0IGdldF9jYWxsX3N0YWNrXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbF9zdGFja1xuXG5sZXQgZ2V0X2xpbmtfbW9kZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfbW9kZVxuXG5sZXQgZ2V0X2thc2Ffc3RhdGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5rYXNhX3N0YXRlXG5cbmxldCBnZXRfZG9fY29udGFjdF9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19jb250YWN0X21hcFxuXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ludGF4X3ZlcnNpb25cblxubGV0IGdldF9kb19zY2NfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zY2NcblxubGV0IGdldF9kb19pbmZsdWVuY2VfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9faW5mbHVlbmNlX21hcFxuXG5sZXQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25cblxubGV0IGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25cblxubGV0IGdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NpdGVfZGVwZW5kZW5jaWVzXG5cbmxldCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfc2l0ZV9kZXBlbmRlbmNpZXNcblxuKCpyZWFjaGFiaWxpdHkgZGlmZmVyZW50IG91dHB1dCopXG5sZXQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpc1xuXG4oKiopXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNjY19hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3X2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfbGF1bmNoaW5nX2RhdGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbGV0IHQgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxhdW5jaGluZ19kYXRlIGluXG4gIGxldCBnbXQgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRpbWVfc2hpZnQgaW5cbiAgUHJpbnRmLnNwcmludGYgXCJBbmFseXNpcyBsYXVuY2hlZCBhdCAlMDRpLyUwMmkvJTAyaSAlMDJpOiUwMmk6JTAyaSAoR01UJStpKVwiXG4gICAgKHQuVW5peC50bV95ZWFyICsgMTkwMCkgKHQuVW5peC50bV9tb24gKyAxKSB0LlVuaXgudG1fbWRheSB0LlVuaXgudG1faG91clxuICAgIHQuVW5peC50bV9taW4gdC5Vbml4LnRtX3NlYyBnbXRcblxubGV0IGdldF9zaG9ydF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmVyc2lvblxuXG5sZXQgZ2V0X2Z1bGxfdmVyc2lvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBQcmludGYuc3ByaW50ZiBcIiVzICh3aXRoJXMgVGsgaW50ZXJmYWNlKVwiXG4gICAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uXG4gICAgKGlmIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGtfaW50ZXJmYWNlIHRoZW5cbiAgICAgICBcIlwiXG4gICAgIGVsc2VcbiAgICAgICBcIm91dFwiKVxuXG5sZXQgZ2V0X2xhdW5jaGVkX3doZXJlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaG9zdG5hbWVcblxubGV0IGdldF9jb21tYW5kX2xpbmVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21tYW5kX2xpbmVcblxubGV0IGdldF9tYXJzaGFsaXNhYmxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcblxubGV0IGdldF9sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlclxubGV0IGdldF9sb2dnZXJfZXJyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfZXJyXG5cbmxldCBnZXRfbG9nZ2VyX2JhY2tkb29yIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfYmFja2Rvb3JcblxuKCpsZXQgZ2V0X2Zvcm1hdHRlciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0dGVyXG4gIGxldCBzZXRfZm9ybWF0dGVyIHBhcmFtZXRlciBsb2dnZXIgPSB7cGFyYW1ldGVyIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0dGVyID0gbG9nZ2VyfSopXG5cbmxldCB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2NvbW1hbmRfbGluZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb21tYW5kX2xpbmVfMVxubGV0IGdldF9zaG9ydF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3Nob3J0X3ZlcnNpb25fMVxubGV0IGdldF9sYXVuY2hlZF93aGVyZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9sYXVuY2hlZF93aGVyZV8xXG5sZXQgZ2V0X2Z1bGxfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9mdWxsX3ZlcnNpb25fMVxubGV0IGdldF9sYXVuY2hpbmdfZGF0ZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9sYXVuY2hpbmdfZGF0ZV8xXG5cbmxldCBnZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUgcGFyYW1ldGVycyA9XG4gIFByaW50Zi5zcHJpbnRmIFwiJXMgb24gJXNcIlxuICAgIChnZXRfbGF1bmNoaW5nX2RhdGUgcGFyYW1ldGVycylcbiAgICAoZ2V0X2xhdW5jaGVkX3doZXJlIHBhcmFtZXRlcnMpXG5cbmxldCBnZXRfZG9fY29udGFjdF9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fY29udGFjdF9tYXBfMVxubGV0IGdldF9zeW50YXhfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zeW50YXhfdmVyc2lvbl8xXG5sZXQgZ2V0X2RvX3NjYyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zY2NfMVxubGV0IGdldF9kb19pbmZsdWVuY2VfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMVxuXG5sZXQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXzFcblxubGV0IGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uXzFcblxubGV0IGdldF9kb19zaXRlX2RlcGVuZGVuY2llcyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xXG5cbmxldCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzFcbigqcmVhY2hhYmlsaXR5IGFuYWx5c2lzIGluIGRpZmZlcmVudCBvdXRwdXQqKVxuXG4oKiopXG5sZXQgZ2V0X3N5bWJvbHMgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc3ltYm9sc18xXG5sZXQgZ2V0X2ZpbGUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZmlsZV8xXG5sZXQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllcyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb21wdXRlX3N5bW1ldHJpZXNfMVxubGV0IGdldF9yYXRlX2NvbnZlbnRpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmF0ZV9jb252ZW50aW9uXzFcbmxldCBnZXRfaW5mbHVlbmNlX21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9pbmZsdWVuY2VfbWFwXzFcbmxldCBnZXRfY29udGFjdF9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29udGFjdF9tYXBfMVxuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IGdldF9yZWFjaGFiaWxpdHlfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXzFcblxubGV0IGdldF91bnNhZmUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdW5zYWZlXzFcbmxldCBnZXRfdHJhY2UgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdHJhY2VfMVxuXG5sZXQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXzFcblxubGV0IGdldF9wcmVmaXggPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcHJlZml4XzFcbmxldCBnZXRfY2FsbF9zdGFjayA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jYWxsX3N0YWNrXzFcbmxldCBnZXRfbGlua19tb2RlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xpbmtfbW9kZV8xXG5cbmxldCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfdmlld19hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF92aWV3X2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF9lbXB0eV9oYXNodGJsX3NpemUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZW1wdHlfaGFzaHRibF9zaXplXzFcbmxldCB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9pbmZsdWVuY2VfbWFwXG5sZXQgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X2NvbnRhY3RfbWFwXG5sZXQgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfc3ltYm9sc1xuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X3JlYWNoYWJpbGl0eV9tYXBcblxubGV0IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBmID1cbiAgY29tcG9zZSBmIGdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc1xuXG4oKnN5bWJvbHMqKVxubGV0IGdldF9ib3VuZF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYm91bmRfc3ltYm9sXzFcbmxldCBnZXRfb3Blbl9iaW5kaW5nX3N0YXRlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xXG5cbmxldCBnZXRfY2xvc2VfYmluZGluZ19zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludGVybmFsX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzFcblxubGV0IGdldF9saW5rX3RvX2FueSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9saW5rX3RvX2FueV8xXG5sZXQgZ2V0X2xpbmtfdG9fc29tZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9saW5rX3RvX3NvbWVfMVxubGV0IGdldF9mcmVlX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9mcmVlXzFcbmxldCBnZXRfYXRfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2F0X3N5bWJvbF8xXG5sZXQgZ2V0X2FnZW50X29wZW5fc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X29wZW5fc3ltYm9sXzFcbmxldCBnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xXG5cbmxldCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbF8xXG5cbmxldCBnZXRfYnR5cGVfc2VwX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9idHlwZV9zZXBfc3ltYm9sXzFcblxubGV0IGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzFcblxubGV0IGdldF9naG9zdF9hZ2VudF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzFcbmxldCBnZXRfZG9fd2Vfc2hvd19naG9zdCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9kb193ZV9zaG93X2dob3N0XzFcbmxldCBnZXRfdW5pX2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF91bmlfYXJyb3dfc3ltYm9sXzFcbmxldCBnZXRfcmV2X2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9yZXZfYXJyb3dfc3ltYm9sXzFcbmxldCBnZXRfYmlfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2JpX2Fycm93X3N5bWJvbF8xXG5cbmxldCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2NvdW50ZXJfc3RhdGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY2VxID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmNlcV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmNndGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY2d0ZV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmN2YXIgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY3Zhcl8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmRlbHRhID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmRlbHRhXzFcbmxldCBnZXRfb3Blbl9jb3VudGVydmFsID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcnZhbF8xXG5cbmxldCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzFcblxubGV0IGdldF9jbG9zZV9jb3VudGVyY2VxID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMVxubGV0IGdldF9jbG9zZV9jb3VudGVyY2d0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyY2d0ZV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcmRlbHRhID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJ2YWwgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcnZhbF8xXG5sZXQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzFcbmxldCBnZXRfY291bnRlcmNndGVfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbF8xXG5sZXQgZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVydmFsX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVydmFsX3N5bWJvbF8xXG5sZXQgZ2V0X2ltX2Zvcm1hdCA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbV9mb3JtYXRfMVxubGV0IGdldF9pbV9maWxlID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2ltX2ZpbGVfMVxubGV0IGdldF9pbV9kaXJlY3RvcnkgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW1fZGlyZWN0b3J5XzFcbmxldCBnZXRfcnVsZV9zaGFwZSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9ydWxlX3NoYXBlXzFcbmxldCBnZXRfcnVsZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9ydWxlX2NvbG9yXzFcbmxldCBnZXRfdmFyaWFibGVfc2hhcGUgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfdmFyaWFibGVfc2hhcGVfMVxubGV0IGdldF92YXJpYWJsZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF92YXJpYWJsZV9jb2xvcl8xXG5sZXQgZ2V0X3dha2VfdXBfY29sb3IgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfd2FrZV91cF9jb2xvcl8xXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbmhpYml0aW9uX2NvbG9yXzFcblxubGV0IGdldF93YWtlX3VwX2Fycm93ID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3dha2VfdXBfYXJyb3dfMVxuXG5sZXQgZ2V0X2luaGliaXRpb25fYXJyb3cgPVxuICB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW5oaWJpdGlvbl9hcnJvd18xXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZiA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzFcblxubGV0IGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZiA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xXG5cbmxldCBnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdCA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzFcblxubGV0IGdldF9wdXJlX2NvbnRhY3QgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X3B1cmVfY29udGFjdF8xXG5sZXQgZ2V0X2NtX2Zvcm1hdCA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZm9ybWF0XzFcbmxldCBnZXRfY21fZmlsZSA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZmlsZV8xXG5sZXQgZ2V0X2NtX2RpcmVjdG9yeSA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZGlyZWN0b3J5XzFcblxubGV0IGdldF9iaW5kaW5nX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xXG5cbmxldCBnZXRfYmluZGluZ19zaXRlX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9iaW5kaW5nX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY291bnRlcl9zaXRlX3NoYXBlXzFcblxubGV0IGdldF9jb3VudGVyX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfYWdlbnRfc2hhcGVfYXJyYXkgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X3NoYXBlX2FycmF5XzFcblxubGV0IGdldF9hZ2VudF9jb2xvcl9hcnJheSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfY29sb3JfYXJyYXlfMVxuXG5sZXQgZ2V0X2FnZW50X3NoYXBlX2RlZiA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfc2hhcGVfZGVmXzFcbmxldCBnZXRfYWdlbnRfY29sb3JfZGVmID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9jb2xvcl9kZWZfMVxubGV0IGdldF9saW5rX2NvbG9yID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9saW5rX2NvbG9yXzFcbmxldCBnZXRfaW5mbHVlbmNlX2NvbG9yID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9pbmZsdWVuY2VfY29sb3JfMVxubGV0IGdldF9pbmZsdWVuY2VfYXJyb3cgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2luZmx1ZW5jZV9hcnJvd18xXG5cbigqYWRkIHJlYWNoYWJsaXR5KilcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHQgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0XzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWNfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZl8xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xfMVxuXG5sZXQgZ2V0X3Bvc3RfcHJvY2Vzc2luZyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9wb3N0X3Byb2Nlc3NpbmdfMVxuXG5sZXQgZ2V0X2JhY2tlbmRfbW9kZSA9IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9iYWNrZW5kX21vZGVfMVxuXG5sZXQgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZFxuICAgIGdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXzFcblxubGV0IGdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkXG4gICAgZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzXzFcblxubGV0IGdldF9zbWFzaF9yZWxhdGlvbnMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfc21hc2hfcmVsYXRpb25zXzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9mb3JtYXQgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzFcblxubGV0IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9jb21wdXRlX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xXG5cbmxldCBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzIgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgIHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMVxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0IGI7XG4gIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18yIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbl9pbl9sb2NhbF90cmFjZXNfMVxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0IGI7XG4gIH1cblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzJcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgYjtcbiAgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18yXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzIGI7XG4gIH1cblxubGV0IGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X2lnbm9yZV9sb2NhbF9sb3NhbmdlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xXG5cbmxldCBnZXRfdmlld19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfdmlld19hbmFseXNpc18xXG5cbmxldCBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGRcbiAgICBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkXG4gICAgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzXzFcblxubGV0IGdldF9keW5hbWljX2NvbnRhY3RfbWFwID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9keW5hbWljX2NvbnRhY3RfbWFwXzFcblxubGV0IGdldF9jb3VudGVyc19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfY291bnRlcnNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X2NvdW50ZXJzX2RvbWFpbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfY291bnRlcnNfZG9tYWluXzFcblxubGV0IGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgcCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSBwXG4gIHx8IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyBwXG5cbmxldCBzZXRfcHJlZml4XzEgbWFyc2hhbGlzYWJsZSBwcmVmaXggPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXggfVxuXG5sZXQgc2V0X2NhbGxfc3RhY2tfMSBtYXJzaGFsaXNhYmxlIGNhbGxfc3RhY2sgPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrIH1cblxubGV0IHNldF90cmFjZV8xIG1hcnNoYWxpc2FibGUgYm9vbCA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlID0gYm9vbCB9XG5cbmxldCB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgZiBwYXJhbWV0ZXJzIHByZWZpeCA9XG4gIHtcbiAgICBwYXJhbWV0ZXJzIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAgZiAoZ2V0X21hcnNoYWxpc2FibGUgcGFyYW1ldGVycykgcHJlZml4O1xuICB9XG5cbmxldCBzZXRfcHJlZml4ID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF9wcmVmaXhfMVxubGV0IHNldF9jYWxsX3N0YWNrID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF9jYWxsX3N0YWNrXzFcbmxldCBzZXRfdHJhY2UgPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X3RyYWNlXzFcblxubGV0IHVwZGF0ZV9wcmVmaXggcGFyYW1ldGVycyBzdWZmaXggPVxuICBzZXRfcHJlZml4IHBhcmFtZXRlcnMgKGdldF9wcmVmaXggcGFyYW1ldGVycyBeIHN1ZmZpeClcblxubGV0IHVwZGF0ZV9jYWxsX3N0YWNrIHBhcmFtZXRlcnMgYm9vbCBuYW1lID1cbiAgbGV0IHJlcF9ib29sID0gZ2V0X3RyYWNlIHBhcmFtZXRlcnMgfHwgYm9vbCBpblxuICBtYXRjaCBuYW1lLCBnZXRfdHJhY2UgcGFyYW1ldGVycyA9IGJvb2wgd2l0aFxuICB8IE5vbmUsIHRydWUgLT4gcGFyYW1ldGVyc1xuICB8IE5vbmUsIGZhbHNlIC0+IHNldF90cmFjZSBwYXJhbWV0ZXJzIHJlcF9ib29sXG4gIHwgU29tZSB4LCB0cnVlIC0+IHNldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMgKHggOjogZ2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycylcbiAgfCBTb21lIHgsIGZhbHNlIC0+XG4gICAgc2V0X2NhbGxfc3RhY2tcbiAgICAgIChzZXRfdHJhY2UgcGFyYW1ldGVycyByZXBfYm9vbClcbiAgICAgICh4IDo6IGdldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMpXG5cbmxldCBvcGVuX2luZmx1ZW5jZV9tYXBfZmlsZSBwYXJhbWV0ZXJzID1cbiAgbGV0IGNoYW5uZWwgPVxuICAgIG1hdGNoXG4gICAgICAoIGdldF9pbV9maWxlIHBhcmFtZXRlcnMsXG4gICAgICAgIGdldF9pbV9kaXJlY3RvcnkgcGFyYW1ldGVycyxcbiAgICAgICAgZXh0X2Zvcm1hdCAoZ2V0X2ltX2Zvcm1hdCBwYXJhbWV0ZXJzKSApXG4gICAgd2l0aFxuICAgIHwgTm9uZSwgXywgXyAtPiBzdGRvdXRcbiAgICB8IFNvbWUgYSwgTm9uZSwgZXh0IC0+IG9wZW5fb3V0IGEgZXh0XG4gICAgfCBTb21lIGEsIFNvbWUgZCwgZXh0IC0+IG9wZW5fb3V0IChkIF4gYSkgZXh0XG4gIGluXG4gIGxldCBmb3JtYXQgPVxuICAgIG1hdGNoIGdldF9pbV9mb3JtYXQgcGFyYW1ldGVycyB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1QgLT4gTG9nZ2Vycy5ET1RcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUwgLT4gTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU0gLT4gTG9nZ2Vycy5NYXRyaXhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJIC0+IExvZ2dlcnMuR0VQSElcbiAgaW5cbiAgbGV0IGxvZ2dlciA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOmZvcm1hdCBjaGFubmVsIGluXG4gIHsgcGFyYW1ldGVycyB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciB9XG5cbmxldCBvcGVuX2NvbnRhY3RfbWFwX2ZpbGUgcGFyYW1ldGVycyA9XG4gIGxldCBjaGFubmVsID1cbiAgICBtYXRjaFxuICAgICAgKCBnZXRfY21fZmlsZSBwYXJhbWV0ZXJzLFxuICAgICAgICBnZXRfY21fZGlyZWN0b3J5IHBhcmFtZXRlcnMsXG4gICAgICAgIGV4dF9mb3JtYXQgKGdldF9jbV9mb3JtYXQgcGFyYW1ldGVycykgKVxuICAgIHdpdGhcbiAgICB8IE5vbmUsIF8sIF8gLT4gc3Rkb3V0XG4gICAgfCBTb21lIGEsIE5vbmUsIGV4dCAtPiBvcGVuX291dCBhIGV4dFxuICAgIHwgU29tZSBhLCBTb21lIGQsIGV4dCAtPiBvcGVuX291dCAoZCBeIGEpIGV4dFxuICBpblxuICB7XG4gICAgcGFyYW1ldGVycyB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgY2hhbm5lbDtcbiAgfVxuXG5sZXQgcGVyc2lzdGVudF9tb2RlID0gZmFsc2VcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2luZmx1ZW5jZV9tYXBcbiAgICBwYXJhbWV0ZXIgPVxuICAobWF0Y2ggZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgcGFyYW1ldGVyIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaCB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvdyAtPlxuICAgIHRydWVcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIC0+IGZhbHNlKVxuICAmJiBnZXRfZG9faW5mbHVlbmNlX21hcCBwYXJhbWV0ZXJcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX3BlcnNpc3RlbnRfbW9kZVxuICAgIF8gPVxuICBwZXJzaXN0ZW50X21vZGVcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2NvbnRhY3RfbWFwXG4gICAgcGFyYW1ldGVyID1cbiAgZ2V0X2RvX2NvbnRhY3RfbWFwIHBhcmFtZXRlclxuICAmJlxuICBtYXRjaCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgcGFyYW1ldGVyIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW0gfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3cgLT4gdHJ1ZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbCAtPlxuICAgIGZhbHNlXG5cbmxldCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zIHBhcmFtZXRlciA9XG4gIGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX3BlcnNpc3RlbnRfbW9kZVxuICAgIHBhcmFtZXRlclxuICB8fCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9jb250YWN0X21hcFxuICAgICAgIHBhcmFtZXRlclxuICB8fCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9pbmZsdWVuY2VfbWFwXG4gICAgICAgcGFyYW1ldGVyXG5cbmxldCBnZXRfY2FsbGVkX2Zyb20gcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3NjY1xuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50c1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMSBiYWNrZG9vcnNcbiAgICA9XG4gIGJhY2tkb29yc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZ1xuICAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29yc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG5cbmxldCBnZXRfYmFja2Rvb3JfdGltaW5nXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX3RpbWluZ1xuXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGVfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZmlsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9kaXJlY3RvcnlcblxubGV0IGdldF9iYWNrZG9vcnMgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xXG4gICAgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX3RpbWluZ18yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfdGltaW5nXzEgZ2V0X2JhY2tkb29yc1xubGV0IGdldF9iYWNrZG9vcl9maWxlXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9maWxlXzEgZ2V0X2JhY2tkb29yc1xubGV0IGdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjYyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yXG4gICAgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yXG4gICAgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl90aW1pbmcgPSBjb21wb3NlIGdldF9iYWNrZG9vcl90aW1pbmdfMiBnZXRfbWFyc2hhbGlzYWJsZVxubGV0IGdldF9iYWNrZG9vcl9maWxlID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZmlsZV8yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeSA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9maWxlclxuXG5sZXQgZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXByZXNzaW9uX3N0YXR1c1xuXG5sZXQgZ2V0X2thc2Ffc3RhdGUgPSBjb21wb3NlIGdldF9rYXNhX3N0YXRlXzEgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IHNldF9wcmludF9lZmZpY2llbmN5IHBhcmFtZXRlciBib29sID1cbiAgeyBwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmludF9lZmZpY2llbmN5ID0gYm9vbCB9XG5cbmxldCBnZXRfcHJpbnRfZWZmaWNpZW5jeSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJpbnRfZWZmaWNpZW5jeVxuXG5sZXQgc2V0X2xvZ2dlciBwYXJhbWV0ZXIgbG9nZ2VyID1cbiAgeyBwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgfVxuXG5sZXQgc2F2ZV9lcnJvcl9saXN0IHBhcmFtZXRlciBlcnJvciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgZXJyb3JcblxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBiYXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgYmFyXG5cbmxldCByZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhclxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVcblxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVcbiIsIm9wZW4gU3VwZXJhcmdcblxudHlwZSBjb3VudCA9IEVtYmVkZGluZ3MgfCBPY2N1cnJlbmNlc1xuXG50eXBlIHQgPSB7XG4gIGJhY2tlbmQ6IHN0cmluZyByZWY7XG4gIHJ1bGVfcmF0ZV9jb252ZW50aW9uOiBzdHJpbmcgcmVmO1xuICByZWFjdGlvbl9yYXRlX2NvbnZlbnRpb246IHN0cmluZyByZWY7XG4gIGNvdW50OiBzdHJpbmcgcmVmO1xuICBpbnRlcm5hbF9tZWFuaW5nOiBzdHJpbmcgcmVmO1xuICBzaG93X3JlYWN0aW9uczogYm9vbCByZWY7XG4gIGNvbXB1dGVfamFjb2JpYW46IGJvb2wgcmVmO1xuICBvY3RhdmVfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWF0bGFiX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hcGxlX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hdGhlbWF0aWNhX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIHNibWxfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgZG90bmV0X291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIGRhdGFfZmlsZTogc3RyaW5nIG9wdGlvbiByZWY7XG4gIHdpdGhfc3ltbWV0cmllczogc3RyaW5nIHJlZjtcbiAgc2hvd19zeW1tZXRyaWVzOiBib29sIHJlZjtcbiAgdmlld3M6IGJvb2wgcmVmO1xuICBkYm9uZHM6IGJvb2wgcmVmO1xuICBzaXRlX2Fjcm9zczogYm9vbCByZWY7XG4gIG5vbm5lZ2F0aXZlOiBib29sIHJlZjtcbiAgc2hvd190aW1lX2FkdmFuY2U6IGJvb2wgcmVmO1xuICBpbml0aWFsX3N0ZXA6IGZsb2F0IHJlZjtcbiAgbWF4X3N0ZXA6IGZsb2F0IHJlZjtcbiAgcmVsYXRpdmVfdG9sZXJhbmNlOiBmbG9hdCByZWY7XG4gIGFic29sdXRlX3RvbGVyYW5jZTogZmxvYXQgcmVmO1xuICBzbWFzaF9yZWFjdGlvbnM6IGJvb2wgcmVmO1xuICBwcm9wYWdhdGVfY29uc3RhbnRzOiBib29sIHJlZjtcbiAgcHJpbnRfZWZmaWNpZW5jeTogYm9vbCByZWY7XG4gIG1heF9zaXplX2Zvcl9zcGVjaWVzOiBpbnQgb3B0aW9uIHJlZjtcbiAgY3N2X3NlcDogc3RyaW5nIHJlZjtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGJhY2tlbmQgPSByZWYgXCJvY3RhdmVcIjtcbiAgICBydWxlX3JhdGVfY29udmVudGlvbiA9IHJlZiBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgcmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICBjb3VudCA9IHJlZiBcIkVtYmVkZGluZ3NcIjtcbiAgICBpbnRlcm5hbF9tZWFuaW5nID0gcmVmIFwiRW1iZWRkaW5nc1wiO1xuICAgIHNob3dfcmVhY3Rpb25zID0gcmVmIHRydWU7XG4gICAgY29tcHV0ZV9qYWNvYmlhbiA9IHJlZiB0cnVlO1xuICAgIGRvdG5ldF9vdXRwdXQgPSByZWYgKFNvbWUgXCJuZXR3b3JrLm5ldFwiKTtcbiAgICBvY3RhdmVfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm1cIik7XG4gICAgbWF0bGFiX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5tXCIpO1xuICAgIG1hcGxlX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5td3NcIik7XG4gICAgbWF0aGVtYXRpY2Ffb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm5iXCIpO1xuICAgIHNibWxfb3V0cHV0ID0gcmVmIChTb21lIFwibmV0d29yay54bWxcIik7XG4gICAgZGF0YV9maWxlID0gcmVmIChTb21lIFwiZGF0YS5jc3ZcIik7XG4gICAgd2l0aF9zeW1tZXRyaWVzID0gcmVmIFwiTm9uZVwiO1xuICAgIHNob3dfc3ltbWV0cmllcyA9IHJlZiBmYWxzZTtcbiAgICB2aWV3cyA9IHJlZiB0cnVlO1xuICAgIGRib25kcyA9IHJlZiB0cnVlO1xuICAgIHNpdGVfYWNyb3NzID0gcmVmIHRydWU7XG4gICAgbm9ubmVnYXRpdmUgPSByZWYgZmFsc2U7XG4gICAgc2hvd190aW1lX2FkdmFuY2UgPSByZWYgZmFsc2U7XG4gICAgaW5pdGlhbF9zdGVwID0gcmVmIDAuMDAwMDE7XG4gICAgbWF4X3N0ZXAgPSByZWYgMC4wMjtcbiAgICBhYnNvbHV0ZV90b2xlcmFuY2UgPSByZWYgMC4wMDE7XG4gICAgcmVsYXRpdmVfdG9sZXJhbmNlID0gcmVmIDAuMDAxO1xuICAgIHNtYXNoX3JlYWN0aW9ucyA9IHJlZiBmYWxzZTtcbiAgICBwcm9wYWdhdGVfY29uc3RhbnRzID0gcmVmIGZhbHNlO1xuICAgIHByaW50X2VmZmljaWVuY3kgPSByZWYgZmFsc2U7XG4gICAgbWF4X3NpemVfZm9yX3NwZWNpZXMgPSByZWYgTm9uZTtcbiAgICBjc3Zfc2VwID0gcmVmIFwiIFwiO1xuICB9XG5cbmxldCBjb21iaW5lIGwxIGwyID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGxpc3QgYTEgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCAoYTIgOiBpbnQpIC0+IChhMSwgYTIpIDo6IGxpc3QpIGxpc3QgbDIpXG4gICAgW10gbDFcblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6XG4gICAgKFN1cGVyYXJnLmtleVxuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogU3VwZXJhcmcubXNnXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS12b2lkXCIsXG4gICAgICBTdXBlcmFyZy5Wb2lkLFxuICAgICAgXCJcIixcbiAgICAgIGNvbWJpbmVcbiAgICAgICAgW1xuICAgICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0O1xuICAgICAgICAgIENvbW1vbl9hcmdzLm91dHB1dDtcbiAgICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3M7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3M7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcztcbiAgICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlO1xuICAgICAgICBdXG4gICAgICAgIFsgNTA7IDUxOyA1MiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5NdWx0aUV4dFxuICAgICAgICBbXG4gICAgICAgICAgXCItLWRvdG5ldC1vdXRwdXRcIiwgXCIubmV0XCI7XG4gICAgICAgICAgXCItLW1hcGxlLW91dHB1dFwiLCBcIi5td3NcIjtcbiAgICAgICAgICBcIi0tbWF0aGVtYXRpY2Etb3V0cHV0XCIsIFwiLm5iXCI7XG4gICAgICAgICAgXCItLW1hdGxhYi1vdXRwdXRcIiwgXCIubVwiO1xuICAgICAgICAgIFwiLS1vY3RhdmUtb3V0cHV0XCIsIFwiLm1cIjtcbiAgICAgICAgICBcIi0tc2JtbC1vdXRwdXRcIiwgXCIueG1sXCI7XG4gICAgICAgIF0sXG4gICAgICBcIlByZWZpeCBmb3IgZmlsZSBuYW1lIG91dHB1dFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMTAxO1xuICAgICAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW9kZS1iYWNrZW5kXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcImRvdG5ldFwiLCBcImRvdG5ldCAoQk5HTCkgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJtYXBsZVwiLCBcIm1hcGxlIGJhY2tlbmQgKGluIHByb2dyZXNzKVwiO1xuICAgICAgICAgICAgXCJtYXRoZW1hdGljYVwiLCBcIm1hdGhlbWF0aWNhIGJhY2tlbmQgKGluIHByb2dyZXNzKVwiO1xuICAgICAgICAgICAgXCJtYXRsYWJcIiwgXCJtYXRsYWIgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJvY3RhdmVcIiwgXCJvY3RhdmUgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJzYm1sXCIsIFwic2JtbCBiYWNrZW5kXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIkRvdG5ldFwiO1xuICAgICAgICAgICAgXCJET1RORVRcIjtcbiAgICAgICAgICAgIFwiT2N0YXZlXCI7XG4gICAgICAgICAgICBcIk9DVEFWRVwiO1xuICAgICAgICAgICAgXCJNYXRsYWJcIjtcbiAgICAgICAgICAgIFwiTUFUTEFCXCI7XG4gICAgICAgICAgICBcIk1hdGhlbWF0aWNhXCI7XG4gICAgICAgICAgICBcIk1BVEhFTUFUSUNBXCI7XG4gICAgICAgICAgICBcIk1hcGxlXCI7XG4gICAgICAgICAgICBcIk1BUExFXCI7XG4gICAgICAgICAgICBcIlNibWxcIjtcbiAgICAgICAgICAgIFwiU0JNTFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5iYWNrZW5kICksXG4gICAgICBcIlNlbGVjdCB0aGUgYmFja2VuZCBmb3JtYXRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1kb3RuZXQtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQuZG90bmV0X291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBkb3RuZXQgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDIgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW1hcGxlLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm1hcGxlX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXBsZSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMyBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tbWF0aGVtYXRpY2Etb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWF0aGVtYXRpY2Ffb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hdGhlbWF0aWNhIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA0IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1tYXRsYWItb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWF0bGFiX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXRsYWIgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDUgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW9jdGF2ZS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5vY3RhdmVfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG9jdGF2ZSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNiBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tc2JtbC1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5zYm1sX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBzYm1sIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA3IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1wcm9wYWdhdGUtY29uc3RhbnRzXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJvcGFnYXRlX2NvbnN0YW50cyxcbiAgICAgIFwicHJvcGFnYXRlIGNvbnN0YW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDggXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLWNvbnN0YW50LXByb3BhZ2F0aW9uXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJvcGFnYXRlX2NvbnN0YW50cyxcbiAgICAgIFwicHJvcGFnYXRlIGNvbnN0YW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDkgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNzdi1zZXBhcmF0b3JcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZyB0LmNzdl9zZXAsXG4gICAgICBcInNlcGFyYXRvciBzeW1ib2wgaW4gQ1NWIGZpbGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJhdGUtY29udmVudGlvblwiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJLYVNpbVwiLCBcImRvIG5vdCBkaXZpZGUgYnkgYW55dGhpbmdcIjtcbiAgICAgICAgICAgICggXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzIHRoYXQgaW5kdWNlIFxcXG4gICAgICAgICAgICAgICBhbiBhdXRvIGFsc28gaW4gdGhlIHJoc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImthc2ltXCI7XG4gICAgICAgICAgICBcIktBU0lNXCI7XG4gICAgICAgICAgICBcIkthc2ltXCI7XG4gICAgICAgICAgICBcIkRJVklERV9CWV9OQlJfT0ZfQVVUT1NfSU5fTEhTXCI7XG4gICAgICAgICAgICBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgICAgICAgICBcImJpb2JoZW1pc3RcIjtcbiAgICAgICAgICAgIFwiQklPQ0hFTUlTVFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5ydWxlX3JhdGVfY29udmVudGlvbiApLFxuICAgICAgXCJjb252ZW50aW9uIGZvciBkaXZpZGluZyBjb25zdGFudCByYXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXJ1bGUtcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXMgdGhhdCBpbmR1Y2UgXFxcbiAgICAgICAgICAgICAgIGFuIGF1dG8gYWxzbyBpbiB0aGUgcmhzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwia2FzaW1cIjtcbiAgICAgICAgICAgIFwiS0FTSU1cIjtcbiAgICAgICAgICAgIFwiS2FzaW1cIjtcbiAgICAgICAgICAgIFwiRElWSURFX0JZX05CUl9PRl9BVVRPU19JTl9MSFNcIjtcbiAgICAgICAgICAgIFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICAgICAgICAgIFwiYmlvYmhlbWlzdFwiO1xuICAgICAgICAgICAgXCJCSU9DSEVNSVNUXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LnJ1bGVfcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzIChmb3IgcnVsZXMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmVhY3Rpb24tcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiByZWFjdGlvbnNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJlYWN0aW9ucyB0aGF0IFxcXG4gICAgICAgICAgICAgICBpbmR1Y2UgYW4gYXV0byBhbHNvIGluIHRoZSByaHNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJrYXNpbVwiO1xuICAgICAgICAgICAgXCJLQVNJTVwiO1xuICAgICAgICAgICAgXCJLYXNpbVwiO1xuICAgICAgICAgICAgXCJESVZJREVfQllfTkJSX09GX0FVVE9TX0lOX0xIU1wiO1xuICAgICAgICAgICAgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgICAgICAgICAgXCJiaW9iaGVtaXN0XCI7XG4gICAgICAgICAgICBcIkJJT0NIRU1JU1RcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQucmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzIChmb3IgcmVhY3Rpb25zKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNvdW50XCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICAoIFwiRW1iZWRkaW5nc1wiLFxuICAgICAgICAgICAgICBcImNvdW50IHRoZSBudW1iZXIgb2YgZW1iZWRkaW5ncyBvZiBwYXR0ZXJucyBpbnRvIHNwZWNpZXNcIiApO1xuICAgICAgICAgICAgXCJPY2N1cnJlbmNlc1wiLCBcImNvdW50IHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2Ygc3BlY2llc1wiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgWyBcImVtYmVkZGluZ3NcIjsgXCJFTUJFRERJTkdTXCI7IFwib2NjdXJyZW5jZXNcIjsgXCJPQ0NVUlJFTkNFU1wiIF0sXG4gICAgICAgICAgdC5jb3VudCApLFxuICAgICAgXCJ0dW5lIHdoZXRoZXIgd2UgY291bnQgaW4gZW1iZWRkaW5ncyBvciBpbiBvY2N1cnJlbmNlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDMgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWludGVybmFsLW1lYW5pbmdcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgICggXCJFbWJlZGRpbmdzXCIsXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGZvciBLYXBwYSBzcGVjaWVzIGRlbm90ZSBudW1iZXJzIG9mIGVtYmVkZGluZ3NcIiApO1xuICAgICAgICAgICAgKCBcIk9jY3VycmVuY2VzXCIsXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGZvciBLYXBwYSBzcGVjaWVzIGRlbm90ZSBudW1iZXJzIG9mIG9jY3VycmVuY2VzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFsgXCJlbWJlZGRpbmdzXCI7IFwiRU1CRURESU5HU1wiOyBcIm9jY3VycmVuY2VzXCI7IFwiT0NDVVJSRU5DRVNcIiBdLFxuICAgICAgICAgIHQuaW50ZXJuYWxfbWVhbmluZyApLFxuICAgICAgXCJ0dW5lIHRoZSBtZWFuaW5nIG9mIHZhcmlhYmxlIGZvciBLYXBwYSBzcGVjaWVzICh3aGV0aGVyIGl0IGlzIHRoZSBcXFxuICAgICAgIG51bWJlciBvZiBlbWJlZGRpbmdzIG9yIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNCBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tdHJ1bmNhdGVcIixcbiAgICAgIFN1cGVyYXJnLkludF9vcHQgdC5tYXhfc2l6ZV9mb3Jfc3BlY2llcyxcbiAgICAgIFwidHJ1bmNhdGUgdGhlIG5ldHdvcmsgYnkgZGlzY2FyZGluZyBzcGVjaWVzIHdpdGggc2l6ZSBncmVhdGVyIHRoYW4gdGhlIFxcXG4gICAgICAgYXJndW1lbnRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA0IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1tYXgtc2l6ZS1mb3Itc3BlY2llc1wiLFxuICAgICAgU3VwZXJhcmcuSW50X29wdCB0Lm1heF9zaXplX2Zvcl9zcGVjaWVzLFxuICAgICAgXCJ0cnVuY2F0ZSB0aGUgbmV0d29yayBieSBkaXNjYXJkaW5nIHNwZWNpZXMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiB0aGUgXFxcbiAgICAgICBhcmd1bWVudFwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDUgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXNob3ctcmVhY3Rpb25zXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd19yZWFjdGlvbnMsXG4gICAgICBcIkFubm90YXRlIE9ERXMgYnkgdGhlIGNvcnJlc3BvbmRpbmcgY2hlbWljYWwgcmVhY3Rpb25zXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXNtYXNoLXJlYWN0aW9uc1wiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNtYXNoX3JlYWN0aW9ucyxcbiAgICAgIFwiR2F0aGVyIGlkZW50aWNhbCByZWFjdGlvbnMgaW4gdGhlIE9ERXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMTsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNvbXB1dGUtamFjb2JpYW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5jb21wdXRlX2phY29iaWFuLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgY29tcHV0YXRpb24gb2YgdGhlIEphY29iaWFuIG9mIHRoZSBPREVzIFxcblxcXG4gICAgICAgXFx0IChub3QgYXZhaWxhYmxlIHlldClcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXdpdGgtc3ltbWV0cmllc1wiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJOb25lXCIsIFwibm8gc3ltbWV0cmllcyByZWR1Y3Rpb25cIjtcbiAgICAgICAgICAgICggXCJCYWNrd2FyZFwiLFxuICAgICAgICAgICAgICBcInVzZSB0aGUgc3ltbWV0cmllcyBzYXRpc2ZpZWQgYnkgdGhlIHJ1bGVzIGFuZCB0aGUgYWxnZWJyYWljIFxcXG4gICAgICAgICAgICAgICBleHByZXNzaW9uc1wiICk7XG4gICAgICAgICAgICAoIFwiRm9yd2FyZFwiLFxuICAgICAgICAgICAgICBcInVzZSB0aGUgc3ltbWV0cmllcyBzYXRpc2ZpZWQgYnkgdGhlIHJ1bGVzIGFuZCB0aGUgaW5pdGlhbCBzdGF0ZVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJub25lXCI7XG4gICAgICAgICAgICBcIk5PTkVcIjtcbiAgICAgICAgICAgIFwiQkFDS1dBUkRcIjtcbiAgICAgICAgICAgIFwiYmFja3dhcmRcIjtcbiAgICAgICAgICAgIFwiZm9yd2FyZFwiO1xuICAgICAgICAgICAgXCJGT1JXQVJEXCI7XG4gICAgICAgICAgICBcInRydWVcIjtcbiAgICAgICAgICAgIFwiVFJVRVwiO1xuICAgICAgICAgICAgXCJUcnVlXCI7XG4gICAgICAgICAgICBcImZhbHNlXCI7XG4gICAgICAgICAgICBcIkZBTFNFXCI7XG4gICAgICAgICAgICBcIkZhbHNlXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LndpdGhfc3ltbWV0cmllcyApLFxuICAgICAgXCJUdW5lIHdoaWNoIGtpbmQgb2YgYmlzaW11bGF0aW9uIGlzIHVzZWQgdG8gcmVkdWNlIHRoZSBzZXQgb2Ygc3BlY2llc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDU7IENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc2hvdy1zeW1tZXRyaWVzXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd19zeW1tZXRyaWVzLFxuICAgICAgXCJEaXNwbGF5IHRoZSBlcXVpdmFsZW5jZSByZWxhdGlvbnMgb3ZlciB0aGUgc2l0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS12aWV3cy1kb21haW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC52aWV3cyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdmlld3MgYW5hbHlzaXMgd2hlbiBkZXRlY3Rpbmcgc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMSBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LmRib25kcyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgZG91YmxlIGJvbmRzIGFuYWx5c2lzIHdoZW4gZGV0ZWN0aW5nIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDIgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLXNpdGUtYWNyb3NzLWJvbmRzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNpdGVfYWNyb3NzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgYW5hbHlzaXMgb2YgdGhlIHJlbGF0aW9uIGFtb25kIHRoZSBzdGF0ZXMgb2Ygc2l0ZXMgXFxcbiAgICAgICBpbiBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMyBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tbm9ubmVnYXRpdmVcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5ub25uZWdhdGl2ZSxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdGhlIGNvcnJlY3Rpb24gb2YgbmVnYXRpdmUgY29uY2VudHJhdGlvbnMgaW4gc3RpZmYgT0RFIFxcXG4gICAgICAgc3lzdGVtc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc2hvdy10aW1lLWFkdmFuY2VcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3RpbWVfYWR2YW5jZSxcbiAgICAgIFwiRGlzcGxheSB0aW1lIGFkdmFuY2UgZHVyaW5nIG51bWVyaWNhbCBpbnRlZ3JhdGlvblwiLFxuICAgICAgWyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1pbml0aWFsLXN0ZXBcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQuaW5pdGlhbF9zdGVwLFxuICAgICAgXCJJbml0aWFsIGludGVncmF0aW9uIHN0ZXBcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDQgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW1heC1zdGVwXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0Lm1heF9zdGVwLFxuICAgICAgXCJNYXhpbXVtIGludGVncmF0aW9uIHN0ZXBcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDUgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJlbGF0aXZlLXRvbGVyYW5jZVwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5yZWxhdGl2ZV90b2xlcmFuY2UsXG4gICAgICBcInRvbGVyYW5jZSB0byByZWxhdGl2ZSByb3VuZGluZyBlcnJvcnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDYgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWFic29sdXRlLXRvbGVyYW5jZVwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5hYnNvbHV0ZV90b2xlcmFuY2UsXG4gICAgICBcInRvbGVyYW5jZSB0byBhYnNvbHV0ZSByb3VuZGluZyBlcnJvcnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDcgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcmludF9lZmZpY2llbmN5LFxuICAgICAgXCJwcm9tcHQgQ1BVIHRpbWUgYW5kIHZhcmlvdXMgZGF0YXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMiBdLFxuICAgICAgRXhwZXJ0ICk7XG4gIF1cblxubGV0IGdldF9vcHRpb24gb3B0aW9ucyA9XG4gIGxldCB0aXRsZSA9IFZlcnNpb24udmVyc2lvbl9rYWRlX2Z1bGxfbmFtZSBpblxuICBsZXQgaW5wdXQgPSByZWYgW10gaW5cbiAgbGV0ICgpID0gU3VwZXJhcmdUay5wYXJzZSB+dGl0bGUgb3B0aW9ucyBpbnB1dCBpblxuICAhaW5wdXRcblxubGV0IGJ1aWxkX2thc2FfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gdCB0X2NvbW1vbiA9XG4gIENvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzIDo9ICEodC52aWV3cyk7XG4gIENvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIDo9ICEodC5kYm9uZHMpO1xuICBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyA6PSAhKHQuc2l0ZV9hY3Jvc3MpO1xuICBDb25maWcudHJhY2UgOj0gdF9jb21tb24uQ29tbW9uX2FyZ3MuZGVidWc7XG4gIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpXG4iLCIoKipcbiAqIGhlYWRlcnMubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbi9BbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMTQgMjAxNj5cbiAqICpcbiAqIFNvbWUgcGFyYW1ldGVyc1xuICogcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAqXG4gKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTVcbiAqIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcbmxldCBkb3RfY29tbWVudCA9IFwiI1wiXG5cbmxldCBoZWFkIHBhcmFtZXRlcnMgPVxuICBbXG4gICAgXCJUaGlzIGZpbGUgaGFzIGJlZW4gY29tcHV0ZWQgYnkgS2FTYTogYSBTdGF0aWMgQW5hbHl6ZXIgZm9yIEthcHBhIChcIlxuICAgIF4gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfc2hvcnRfdmVyc2lvbiBwYXJhbWV0ZXJzXG4gICAgXiBcIilcIjtcbiAgICBcIkRvd25sb2FkIHNvdXJjZXMvYmluYXJpZXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbVwiO1xuICAgIFwiXCI7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUgcGFyYW1ldGVycztcbiAgICBcIkNvbW1hbmQgbGluZSBpczogXCJcbiAgICBeIFN0cmluZy5jb25jYXQgXCIgXCJcbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIEFycmF5LnRvX2xpc3QgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbW1hbmRfbGluZSBwYXJhbWV0ZXJzKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IF90IDo6IHEgLT4gXCJLYVNhXCIgOjogcVxuICAgICAgICB8IFtdIC0+IFtdKTtcbiAgICBcIlwiO1xuICBdXG5cbmxldCBkb3RfdG9fcGRmID1cbiAgXCJQbGVhc2UgdXNlIGdyYXBodml6IChodHRwOi8vd3d3LmdyYXBodml6Lm9yZykgb3IgT21uaUdyYWZmbGUgdG8gZXhwb3J0IGl0IFxcXG4gICB0byBhIFBERlwiXG5cbmxldCBoZWFkX2luZmx1ZW5jZV9tYXBfaW5fZG90ID1cbiAgW1xuICAgIFwiVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mbHVlbmNlIG1hcCBpbiBkb3QuXCI7XG4gICAgZG90X3RvX3BkZjtcbiAgICBcIlwiO1xuICBdXG5cbmxldCBoZWFkX2NvbnRhY3RfbWFwX2luX2RvdCA9XG4gIFtcbiAgICBcIlRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnRhY3QgbWFwIGluIGRvdC5cIjtcbiAgICBkb3RfdG9fcGRmO1xuICAgIFwiXCI7XG4gIF1cbiIsIigqZmlsZSBuYW1lcyopXG5cbmxldCBpbnB1dCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXSAoKm5hbWUgb2YgdGhlIGthcHBhIGZpbGVzKilcbmxldCBvdXRwdXQgPSByZWYgXCJkYXRhLm91dFwiXG4iLCIoKipcbiAgKiBnZXRfb3B0aW9uLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMTgvMTIvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SmFuIDA4IDIwMjA+XG4gICogKlxuICAqIHByaW1pdGl2ZSB0byBwYXJzZSBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5vcGVuIFN1cGVyYXJnXG5cbmxldCBhY3Rpb25zID0gXCJBY3Rpb25zXCIsIDAsIE5vbmVcbmxldCBzeW50YXggPSBcIlN5bnRheFwiLCAxLCBOb25lXG5sZXQgb3V0cHV0ID0gXCJPdXRwdXRcIiwgMiwgTm9uZVxubGV0IHJlYWNoYWJpbGl0eSA9IFwiUmVhY2hhYmlsaXR5IGFuYWx5c2lzXCIsIDMsIE5vbmVcbmxldCB0cmFjZXMgPSBcIlRyYWNlIGFuYWx5c2lzXCIsIDQsIE5vbmVcbmxldCBjb250YWN0X21hcCA9IFwiQ29udGFjdCBtYXBcIiwgNSwgTm9uZVxubGV0IGluZmx1ZW5jZV9tYXAgPSBcIkluZmx1ZW5jZSBtYXBcIiwgNiwgTm9uZVxubGV0IGZsb3cgPSBcIkZsb3cgb2YgaW5mb3JtYXRpb25cIiwgNywgTm9uZVxubGV0IGRlYnVnID0gXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIiwgOCwgTm9uZVxuXG5sZXQgb3B0aW9ucyA9XG4gIExpc3QucmV2XG4gICAgW1xuICAgICAgKCBcIi0tZG8tYWxsXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLWNvbnRhY3QtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLWluZmx1ZW5jZS1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtcG90ZW50aWFsLWN5Y2xlc1wiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1zdG9jaGFzdGljLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJsYXVuY2ggZXZlcnl0aGluZ1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1yZXNldC1hbGxcIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtY29udGFjdC1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtaW5mbHVlbmNlLW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1wb3RlbnRpYWwtY3ljbGVzXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImxhdW5jaCBub3RoaW5nXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgIFwiLS12b2lkXCIsIFZvaWQsIFwiXCIsIFsgYWN0aW9ucywgMiBdLCBOb3JtYWw7XG4gICAgICAoIFwiLXN5bnRheFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJWM1wiLCBcInByZXZpb3VzIHZlcnNpb25cIjsgXCJWNFwiLCBcImN1cnJlbnQgdmVyc2lvblwiIF0sXG4gICAgICAgICAgICBbIFwiVjNcIjsgXCJWNFwiOyBcIjNcIjsgXCI0XCI7IFwidjNcIjsgXCJ2NFwiIF0sXG4gICAgICAgICAgICBDb25maWcuc3ludGF4X3ZlcnNpb24gKSxcbiAgICAgICAgXCJWZXJzaW9uIG9mIHRoZSBsZXhlci9wYXJzZXJcIixcbiAgICAgICAgWyBzeW50YXgsIDE7IGFjdGlvbnMsIDMwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1jb250YWN0LW1hcFwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19jb250YWN0X21hcCxcbiAgICAgICAgXCJjb21wdXRlIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIGFjdGlvbnMsIDI7IGNvbnRhY3RfbWFwLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1pbmZsdWVuY2UtbWFwXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX2luZmx1ZW5jZV9tYXAsXG4gICAgICAgIFwiY29tcHV0ZSB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIGFjdGlvbnMsIDM7IGluZmx1ZW5jZV9tYXAsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1pbmZsdWVuY2UtbWFwLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkluZGlyZWN0XCIsIFwiSWdub3JlIGdsdWluZyBjb21wYXRpYmlsaXR5XCI7XG4gICAgICAgICAgICAgIFwiRGlyZWN0XCIsIFwiSWdub3JlIHJlYWNoYWJsZSBzdGF0ZXNcIjtcbiAgICAgICAgICAgICAgXCJSZWFsaXNhYmxlXCIsIFwiVGFrZSBpbnRvIGFjY291bnQgcmVhY2hhYmxlIHN0YXRlc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsgXCJMb3dcIjsgXCJNZWRpdW1cIjsgXCJIaWdoXCI7IFwiRnVsbFwiIF0sXG4gICAgICAgICAgICBDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgaW5mbHVlbmNlX21hcCwgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24sXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBmbG93IG9mIGluZm9ybWF0aW9uIGluIHRoZSBPREUgXFxcbiAgICAgICAgIHNlbWFudGljc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDQ7IGZsb3csIDYgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXBvdGVudGlhbC1jeWNsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fc2NjLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIGJvbmRzIHRoYXQgbWF5IGJlIGludm9sdmVkIGluIHBvbHltZXJpc2F0aW9uXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNTsgY29udGFjdF9tYXAsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24sXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBmbG93IG9mIGluZm9ybWF0aW9uIGluIHRoZSBzdG9jaGFzdGljIFxcXG4gICAgICAgICBzZW1hbnRpY3NcIixcbiAgICAgICAgWyBhY3Rpb25zLCA2OyBmbG93LCA2IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzLFxuICAgICAgICBcIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgc3RhdGVzIG9mIGFnZW50IHNpdGVzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNzsgcmVhY2hhYmlsaXR5LCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZW5hYmxlLWV2ZXJ5LWRvbWFpblwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tY29udGFjdC1tYXAtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiZHluYW1pY1wiO1xuICAgICAgICAgICAgICBcIi0tdmlld3MtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJlbmFibGUgZXZlcnkgYWJzdHJhY3QgZG9tYWluXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZGlzYWJsZS1ldmVyeS1kb21haW5cIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcInN0YXRpY1wiO1xuICAgICAgICAgICAgICBcIi0tbm8tdmlld3MtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1kb3VibGUtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJkaXNhYmxlIGV2ZXJ5IGFic3RyYWN0IGRvbWFpblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgKCBcInN0YXRpY1wiLFxuICAgICAgICAgICAgICAgIFwiVmVyeSBjb2Fyc2Ugc3RhdGljIGFic3RyYWN0aW9uOiBldmVyeSBib25kIHRoYXQgb2NjdXJzIGluIFxcXG4gICAgICAgICAgICAgICAgIGluaXRpYWwgc3RhdGVzIGFuZCByaHMgb2YgcnVsZXMgaXMgY29uc2lkZXJlZFwiICk7XG4gICAgICAgICAgICAgICggXCJkeW5hbWljXCIsXG4gICAgICAgICAgICAgICAgXCJNb3JlIGFjY3VyYXRlIGFic3RyYWN0aW9uOiBvbmx5IHRoZSBib25kcyB0aGF0IG9jY3VyIGluIHRoZSBcXFxuICAgICAgICAgICAgICAgICBpbml0aWFsIHN0YXRlIG9yIGEgcnVsZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCBcXFxuICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHksIGFyZSBjb25zaWRlcmVkXCIgKTtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy53aXRoX2R5bmFtaWNfY29udGFjdF9tYXAgKSxcbiAgICAgICAgXCJjb250YWN0IG1hcCBkb21haW4gaXMgdXNlZCB0byBvdmVyLWFwcHJveGltYXRlIHNpZGUtZWZmZWN0c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXZpZXdzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBsb2NhbCB2aWV3cyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvdW50ZXJzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX2NvdW50ZXJzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBjb3VudGVyIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA1IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY291bnRlcnMtYWNjdXJhY3lcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwibm9uLXJlbGF0aW9uYWxcIiwgXCJMb3dlciBhbmQgdXBwZXIgYm91bmRzIGZvciBlYWNoIHZhcmlhYmxlXCI7XG4gICAgICAgICAgICAgICggXCJvY3RhZ29uc1wiLFxuICAgICAgICAgICAgICAgIFwiTG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBmb3IgZWFjaCB2YXJpYWJsZSwgIGFuIGVhY2ggc3VtIGFuZCBcXFxuICAgICAgICAgICAgICAgICBlYWNoIGRpZmZlcmVuY2UgYW1vbmcgdHdvIHZhcmlhYmxlc1wiICk7XG4gICAgICAgICAgICAgICggXCJtaVwiLFxuICAgICAgICAgICAgICAgIFwiQXBwcm94aW1hdGUgcmVkdWNlZCBwcm9kdWN0IGJldHdlZW4gaW50ZXJ2YWxzIGFuZCBhZmZpbmUgXFxcbiAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1wiICk7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcIm9jdFwiO1xuICAgICAgICAgICAgICBcIm9jdG9cIjtcbiAgICAgICAgICAgICAgXCJvY3RhZ29uXCI7XG4gICAgICAgICAgICAgIFwiTUlcIjtcbiAgICAgICAgICAgICAgXCJNaVwiO1xuICAgICAgICAgICAgICBcIk9jdFwiO1xuICAgICAgICAgICAgICBcIk9jdG9cIjtcbiAgICAgICAgICAgICAgXCJPY3RhZ29uXCI7XG4gICAgICAgICAgICAgIFwiT2N0YWdvbnNcIjtcbiAgICAgICAgICAgICAgXCJub24tcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIm5yXCI7XG4gICAgICAgICAgICAgIFwibm9uLXJlbFwiO1xuICAgICAgICAgICAgICBcIm5vbl9yZWxcIjtcbiAgICAgICAgICAgICAgXCJub25fcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIk5vbi1yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwiTnJcIjtcbiAgICAgICAgICAgICAgXCJOb24tcmVsXCI7XG4gICAgICAgICAgICAgIFwiTm9uX3JlbFwiO1xuICAgICAgICAgICAgICBcIk5vbl9yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgQ29uZmlnLmNvdW50ZXJfYW5hbHlzaXNfZG9tYWluICksXG4gICAgICAgIFwiQWJzdHJhY3QgZG9tYWluIGZvciBjb3VudGVyIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBkb3VibGUgYm9uZHMgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDcgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmcgdGhlIHN0YXRlcyBvZiBzaXRlcyBpbiBcXFxuICAgICAgICAgY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXNpdGVzLWFjY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmcgdGhlIHN0YXRlcyBvZiBzaXRlcyBpbiBcXFxuICAgICAgICAgY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOCBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWNvbXB1dGUtc3ltbWV0cmllc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zeW1tZXRyaWVzLFxuICAgICAgICBcIkxvb2sgdXAgZm9yIHBhaXJzIG9mIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDggXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS12ZXJib3NpdHktbGV2ZWwtZm9yLXZpZXctYW5hbHlzaXNcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTXV0ZVwiLCBcIk5vIGluZm9ybWF0aW9uIGRpc3BsYXllZFwiO1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcIlNob3cgYW5hbHlzaXMgcmVzdWx0IG9ubHlcIjtcbiAgICAgICAgICAgICAgXCJNZWRpdW1cIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIGFwcGxpZWRcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwiQWxzbyBzaG93IHdoZW4gbmV3IHZpZXdzIGFyZSBkaXNjb3ZlcmVkXCI7XG4gICAgICAgICAgICAgIFwiRnVsbFwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgcHV0IGluIHRoZSB3b3JraW5nIGxpc3RcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyApLFxuICAgICAgICBcIlR1bmUgdGhlIHZlcmJvc2l0eSBsZXZlbCBmb3IgdGhlIHZpZXcgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDkgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS12ZXJib3NpdHktbGV2ZWwtZm9yLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJNdXRlXCIsIFwiTm8gaW5mb3JtYXRpb24gZGlzcGxheWVkXCI7XG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiU2hvdyBhbmFseXNpcyByZXN1bHQgb25seVwiO1xuICAgICAgICAgICAgICBcIk1lZGl1bVwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgYXBwbGllZFwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJBbHNvIHNob3cgd2hlbiBwYXR0ZXJucyBhcmUgZGlzY292ZXJlZFwiO1xuICAgICAgICAgICAgICBcIkZ1bGxcIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIHB1dCBpbiB0aGUgd29ya2luZyBsaXN0XCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgKSxcbiAgICAgICAgXCJUdW5lIHRoZSB2ZXJib3NpdHkgbGV2ZWwgZm9yIHRoZSByZWFjaGFiaWxpdHkgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taGlkZS1vbmUtZC1yZWxhdGlvbnMtZnJvbS1jYXJ0ZXNpYW4tZGVjb21wb3NpdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uLFxuICAgICAgICBcIkZpbHRlciBvdXQgMS1kIHJlbGF0aW9ucyBmcm9tIHRoZSBDYXJ0ZXNpYW4gZGVjb21wb3NpdGlvblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTEgXSxcbiAgICAgICAgRGV2ZWxvcHBlciApO1xuICAgICAgKCBcIi0tc21hc2gtcmVsYXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnNtYXNoX3JlbGF0aW9ucyxcbiAgICAgICAgXCJSZWNvbWJpbmUgcmVsYXRpb25zIHRvIGdldCBhIG1vcmUgcHJlY2lzZSAmIGNvbXBhY3Qgb3V0cHV0XCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMiBdLFxuICAgICAgICBEZXZlbG9wcGVyICk7XG4gICAgICAoIFwiLS1vdXRwdXQtbW9kZS1mb3ItcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcInJhd1wiLCBcIm5vIHBvc3QtcHJvY2Vzc2luZ1wiO1xuICAgICAgICAgICAgICBcImthcHBhXCIsIFwia2FwcGEgbW9kZVwiO1xuICAgICAgICAgICAgICBcImVuZ2xpc2hcIiwgXCJuYXR1cmFsIGxhbmd1YWdlXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgKSxcbiAgICAgICAgXCJwb3N0LXByb2Nlc3MgcmVsYXRpb24gYW5kIG91dHB1dCB0aGUgcmVzdWx0IGluIHRoZSBjaG9zZW4gZm9ybWF0XCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtbG9jYWwtdHJhY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmNvbXB1dGVfbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIGxvY2FsIHRyYWNlcyBvZiBpbnRlcmVzdGluZyBwYXJ0cyBvZiBhZ2VudCBpbnRlcmZhY2VzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgOTsgdHJhY2VzLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tc2hvdy1ydWxlLW5hbWVzLWluLWxvY2FsLXRyYWNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIkFubm90YXRlIGVhY2ggdHJhbnNpdGlvbiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBydWxlcyBpbiB0cmFjZSBcXFxuICAgICAgICAgYWJzdHJhY3Rpb25cIixcbiAgICAgICAgWyB0cmFjZXMsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS11c2UtbWFjcm90cmFuc2l0aW9ucy1pbi1sb2NhbC10cmFjZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIlVzZSBtYWNyb3RyYW5zaXRpb25zIHRvIGdldCBhIGNvbXBhY3QgdHJhY2UgdXAgdG8gY2hhbmdlIG9mIHRoZSBcXFxuICAgICAgICAgaW50ZXJsZWF2aW5nIG9yZGVyIG9mIGNvbW11dGluZyBtaWNyb3RyYW5zaXRpb25zXCIsXG4gICAgICAgIFsgdHJhY2VzLCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taWdub3JlLXRyaXZpYWwtbG9zYW5nZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nZXMsXG4gICAgICAgIFwiRG8gbm90IHVzZSBtYWNyb3RyYW5zaXRpb25zIGZvciBzaW1wbGlmeWluZyB0cml2aWFsIGxvc2FuZ2VzXCIsXG4gICAgICAgIFsgdHJhY2VzLCAzIF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tYWRkLXNpbmd1bGFyLW1hY3Jvc3RhdGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyxcbiAgICAgICAgXCJDb21wbGV0ZSB0aGUgc2ltcGxpY2lhbCBjb21wbGV4ZXMgd2l0aCBzaW5ndWxhciBpbnRlcnNlY3Rpb24gb2YgXFxcbiAgICAgICAgIGhpZ2hlci1kaW1lbnNpb24gZmFjZXNcIixcbiAgICAgICAgWyB0cmFjZXMsIDQgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1hZGQtc2luZ3VsYXItbWljcm9zdGF0ZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzLFxuICAgICAgICBcIkNvbXBsZXRlIHRoZSBzaW1wbGljaWFsIGNvbXBsZXhlcyB3aXRoIHNpbmd1bGFyIGludGVyc2VjdGlvbiBvZiBcXFxuICAgICAgICAgaGlnaGVyLWRpbWVuc2lvbiBmYWNlc1wiLFxuICAgICAgICBbIHRyYWNlcywgNSBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWNvbXB1dGUtc2VwYXJhdGluZy10cmFuc2l0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgdHJhbnNpdGlvbnMgdGhhdCBzZXBhcmF0ZXMgc3Ryb25nbHkgY29ubmVjdGVkIHNldCBvZiBcXFxuICAgICAgICAgY29uZmlndXJhdGlvbnNcIixcbiAgICAgICAgWyBhY3Rpb25zLCAxMDsgdHJhY2VzLCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWRpcmVjdG9yeVwiLFxuICAgICAgICBNdWx0aUV4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtY29udGFjdC1tYXAtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXAtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWxvY2FsLXRyYWNlcy1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtbG9nLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgIF0sXG4gICAgICAgIFwiRGVmYXVsdCByZXBvc2l0b3J5IGZvciBvdXRwdXRzXCIsXG4gICAgICAgIFsgb3V0cHV0LCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCogQ09OVEFDVCBNQVAgKilcbiAgICAgICggXCItLW91dHB1dC1jb250YWN0LW1hcC1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfY21fZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgY29udGFjdCBtYXAgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgMDsgY29udGFjdF9tYXAsIDMgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtY29udGFjdC1tYXBcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5jb250YWN0X21hcF9maWxlLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgdGhlIGNvbnRhY3QgbWFwIG91dHB1dFwiLFxuICAgICAgICBbIG91dHB1dCwgMTsgY29udGFjdF9tYXAsIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb250YWN0LW1hcC1mb3JtYXRcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiRE9UXCIsIFwiZG90IGZvcm1hdFwiO1xuICAgICAgICAgICAgICBcIkdFUEhJXCIsIFwiR2VwaGkgZm9ybWF0XCI7XG4gICAgICAgICAgICAgICgqXCJIVE1MXCIsXCJIVE1MIGZvcm1hdFwiKilcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5jb250YWN0X21hcF9mb3JtYXQgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDI7IGNvbnRhY3RfbWFwLCA1IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29udGFjdC1tYXAtYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiQ29sbGVjdCBpbmZvIGZyb20gcmhzIG9mIHJ1bGVzIGFuZCBpbml0aWFsIHN0YXRlXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcIk9ubHkgY29uc2lkZXIgcmVhY2hhYmxlIHJ1bGVzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBhY2N1cmFjeSBsZXZlbCBvZiB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgNiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXBvbHltZXItZGV0ZWN0aW9uLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcImJhc2VkIG9ubHkgb24gdGhlIGNvbnRhY3QgbWFwXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcInVzZSByZWFjaGFiaWxpdHkgYW5hbHlzaXMgYXMgd2VsbFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnNjY19hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBkZXRlY3Rpb24gb2YgcG9seW1lcnNcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgNyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXB1cmUtY29udGFjdFwiLFxuICAgICAgICBCb29sIENvbmZpZy5wdXJlX2NvbnRhY3QsXG4gICAgICAgIFwic2hvdyBpbiB0aGUgY29udGFjdCBtYXAgIG9ubHkgdGhlIHNpdGVzIHdpdGggYSBiaW5kaW5nIHN0YXRlXCIsXG4gICAgICAgIFsgY29udGFjdF9tYXAsIDggXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoKiBJTkZMVUVOQ0UgTUFQICopXG4gICAgICAoIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcC1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfaW1fZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgaW5mbHVlbmNlIG1hcCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCAzOyBpbmZsdWVuY2VfbWFwLCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXBcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5pbmZsdWVuY2VfbWFwX2ZpbGUsXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgMzsgaW5mbHVlbmNlX21hcCwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWluZmx1ZW5jZS1tYXAtZm9ybWF0XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIkRPVFwiLCBcImRvdCBmb3JtYXRcIjsgXCJESU1cIiwgXCJESU0gZm9ybWF0XCI7IFwiSFRNTFwiLCBcIkhUTUwgZm9ybWF0XCIgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZm9ybWF0ICksXG4gICAgICAgIFwiVHVuZSB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDQ7IGluZmx1ZW5jZV9tYXAsIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoKiBMT0NBTCBUUkFDRVMgKilcbiAgICAgICggXCItLW91dHB1dC1sb2NhbC10cmFjZXMtZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSxcbiAgICAgICAgXCJwdXQgdGhlIGZpbGVzIGFib3V0IGxvY2FsIHRyYWNlcyBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgNTsgdHJhY2VzLCA3IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tbG9jYWwtdHJhY2VzLWZvcm1hdFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJET1RcIiwgXCJkb3QgZm9ybWF0XCI7IFwiSFRNTFwiLCBcIkhUTUwgZm9ybWF0XCIgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmxvY2FsX3RyYWNlX2Zvcm1hdCApLFxuICAgICAgICBcIlR1bmUgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBsb2NhbCB0cmFuc2l0aW9uIHN5c3RlbXNcIixcbiAgICAgICAgWyBvdXRwdXQsIDY7IHRyYWNlcywgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICgqIExPRyAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWxvZy1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgbG9nIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCA3OyBkZWJ1ZywgMCBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWRlYnVnXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDEgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1kZWJ1Zy1tb2RlXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDIgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1kZWJ1Z2dpbmctbW9kZVwiLFxuICAgICAgICBCb29sIENvbmZpZy50cmFjZSxcbiAgICAgICAgXCJkdW1wIGRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbIGRlYnVnLCAzIF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tdW5zYWZlLW1vZGVcIixcbiAgICAgICAgQm9vbCBDb25maWcudW5zYWZlLFxuICAgICAgICBcImV4Y2VwdGlvbnMgYXJlIGdhdGhlcmVkIGF0IHRoZSBlbmQgb2YgdGhlIGNvbXB1dGF0aW9uLCBpbnN0ZWFkIG9mIFxcXG4gICAgICAgICBoYWx0aW5nIGl0IFwiLFxuICAgICAgICBbIGRlYnVnLCA0IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgICBCb29sIENvbmZpZy5wcmludF9lZmZpY2llbmN5LFxuICAgICAgICBcInByb21wdCBDUFUgdGltZSBhbmQgdmFyaW91cyBkYXRhc1wiLFxuICAgICAgICBbIGRlYnVnLCA1IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItcnVsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBydWxlc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1jb25zdHJhaW50c1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHJlZmluZW1lbnQgY29uc3RyYWludHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItbnItY29uc3RyYWludHNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBub24gcmVsYXRpb25hbCByZWZpbmVtZW50IGNvbnN0cmFpbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLWluZmx1ZW5jZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIGluZmx1ZW5jZSByZWxhdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItZGVhZC1ydWxlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgZGVhZCBydWxlc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1ub24td2Vha2x5LXJldmVyc2libGUtdHJhbnNpdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2Ygbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLW9mLXJ1bGVzLXdpdGgtbm9uLXdlYWtseS1yZXZlcnNpYmxlLXRyYW5zaXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgcnVsZXMgd2l0aCBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItc2NjXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9zY2MsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtYXZlcmFnZS1zY2NcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyxcbiAgICAgICAgXCJkdW1wIHRoZSBhdmVyYWdlIHNpemUgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC10aW1pbmdcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfdGltaW5nLFxuICAgICAgICBcImR1bXAgQ1BVIHRpbWVcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZmlsZVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmJhY2tkb29yX2ZpbGUsXG4gICAgICAgIFwic2VsZWN0IHRoZSBmaWxlIHRvIGR1bXAgYmFja2Rvb3IgaW5mb3JtYXRpb25cIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuYmFja2Rvb3JfZGlyZWN0b3J5LFxuICAgICAgICBcInNlbGVjdCB0aGUgZGlyZWN0b3J5IGZvciB0aGUgZmlsZSB0byBkdW1wIGJhY2tkb29yIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICBdXG5cbmxldCBnZXRfb3B0aW9uIGVycm9yID1cbiAgbGV0IHRpdGxlID0gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lIGluXG4gIGxldCAoKSA9IFN1cGVyYXJnVGsucGFyc2UgfnRpdGxlIG9wdGlvbnMgRmlsZU5hbWVzLmlucHV0IGluXG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhXG4gICAgICAoKVxuICBpblxuICBlcnJvciwgcGFyYW1ldGVycywgIUZpbGVOYW1lcy5pbnB1dFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogbmVlZCB0byBzcGVjaWZ5IG1lc3NhZ2VzIHdoZXJlIHRoZXJlIGlzIGFuIGVycm9yICopXG5sZXQgdG9zcyA6ICdhICdiLiAnYSAtPiAnYiA9XG4gZnVuIGUgLT5cbiAgbGV0ICgpID1cbiAgICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwidG9zc1wiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IGUgfF1cbiAgaW5cbiAgYXNzZXJ0IGZhbHNlXG5cbmxldCBpZCB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJpZFwiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBkZWJ1ZyB+bG9jIHZhbHVlID1cbiAgbGV0ICgpID1cbiAgICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAgIChKcy5VbnNhZmUuanNfZXhwciBcImRlYnVnXCIpXG4gICAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlOyBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgKFwiXFxuICBcIiBeIGxvYykpIHxdXG4gIGluXG4gICgpXG5cbmxldCBsb2cgfmxvYyB2YWx1ZSA9XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImxvZ1wiKVxuICAgICAgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZTsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChcIlxcbiAgXCIgXiBsb2MpKSB8XVxuICBpblxuICAoKVxuXG5sZXQgaW5mbyB+bG9jIHZhbHVlID1cbiAgbGV0ICgpID1cbiAgICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaW5mb1wiKVxuICAgICAgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZTsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChcIlxcbiAgXCIgXiBsb2MpKSB8XVxuICBpblxuICAoKVxuXG5sZXQgd2FybiB+bG9jIHZhbHVlID1cbiAgbGV0ICgpID1cbiAgICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwid2FyblwiKVxuICAgICAgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZTsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChcIlxcbiAgXCIgXiBsb2MpKSB8XVxuICBpblxuICAoKVxuXG5sZXQgZXJyb3IgfmxvYyB2YWx1ZSA9XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJlcnJvclwiKVxuICAgICAgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZTsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChcIlxcbiAgXCIgXiBsb2MpKSB8XVxuICBpblxuICAoKVxuXG5sZXQgbG9nX2dyb3VwIGxhYmVsID1cbiAgbGV0ICgpID1cbiAgICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAgIChKcy5VbnNhZmUuanNfZXhwciBcImxvZ19ncm91cFwiKVxuICAgICAgW3wgSnMuVW5zYWZlLmluamVjdCBsYWJlbCB8XVxuICBpblxuICAoKVxuXG5sZXQgbG9nX2dyb3VwX2VuZCAoKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwibG9nX2dyb3VwX2VuZFwiKSBbfHxdIGluXG4gICgpXG5cbmxldCBqcXVlcnlfb24gKHNlbGVjdG9yIDogc3RyaW5nKSAoZXZlbnQgOiBzdHJpbmcpIGhhbmRsZXIgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJqcXVlcnlPblwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgc2VsZWN0b3IpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGV2ZW50KTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgaGFuZGxlcjtcbiAgICB8XVxuXG5sZXQgb3B0aW9uX3N0cmluZyAoaWQgOiBzdHJpbmcgb3B0aW9uKSA9XG4gIG1hdGNoIGlkIHdpdGhcbiAgfCBTb21lIGlkIC0+IEpzLnNvbWUgKEpzLnN0cmluZyBpZClcbiAgfCBOb25lIC0+IEpzLm51bGxcblxubGV0IHBsb3RQTkcgPyhwbG90U3R5bGVJZCA6IHN0cmluZyBvcHRpb24pIChwbG90RGl2SWQgOiBzdHJpbmcpICh0aXRsZSA6IHN0cmluZylcbiAgICAocGxvdE5hbWUgOiBzdHJpbmcpID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwicGxvdFBOR1wiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdERpdklkKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB0aXRsZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdE5hbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAob3B0aW9uX3N0cmluZyBwbG90U3R5bGVJZCk7XG4gICAgfF1cblxubGV0IHBsb3RTVkcgPyhwbG90U3R5bGVJZCA6IHN0cmluZyBvcHRpb24pIChwbG90RGl2SWQgOiBzdHJpbmcpICh0aXRsZSA6IHN0cmluZylcbiAgICAocGxvdE5hbWUgOiBzdHJpbmcpID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwicGxvdFNWR1wiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdERpdklkKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB0aXRsZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdE5hbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAob3B0aW9uX3N0cmluZyBwbG90U3R5bGVJZCk7XG4gICAgfF1cblxubGV0IHNhdmVGaWxlIH4oZGF0YSA6ICdhIEpzLnQpIH4obWltZSA6IHN0cmluZykgfihmaWxlbmFtZSA6IHN0cmluZykgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwic2F2ZUZpbGVcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCBkYXRhO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIG1pbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGZpbGVuYW1lKTtcbiAgICB8XVxuXG50eXBlIG1ldGggPSBbIGBERUxFVEUgfCBgR0VUIHwgYEhFQUQgfCBgT1BUSU9OUyB8IGBQQVRDSCB8IGBQT1NUIHwgYFBVVCBdXG5cbmxldCBtZXRob2RfdG9fc3RyaW5nIDogbWV0aCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IGBERUxFVEUgLT4gXCJERUxFVEVcIlxuICB8IGBHRVQgLT4gXCJHRVRcIlxuICB8IGBIRUFEIC0+IFwiSEVBRFwiXG4gIHwgYE9QVElPTlMgLT4gXCJPUFRJT05TXCJcbiAgfCBgUEFUQ0ggLT4gXCJQQVRDSFwiXG4gIHwgYFBPU1QgLT4gXCJQT1NUXCJcbiAgfCBgUFVUIC0+IFwiUFVUXCJcblxubGV0IGFqYXhfcmVxdWVzdCA/KHRpbWVvdXQgOiBmbG9hdCBvcHRpb24pIH4odXJsIDogc3RyaW5nKSB+KG1ldGggOiBtZXRoKVxuICAgID8oZGF0YSA6IHN0cmluZyBvcHRpb24pIH4oaGFuZGxlciA6IGludCAtPiBzdHJpbmcgLT4gdW5pdCkgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJhamF4UmVxdWVzdFwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdXJsKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAobWV0aG9kX3RvX3N0cmluZyBtZXRoKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy5PcHQub3B0aW9uXG4gICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gU29tZSAoSnMuc3RyaW5nIGRhdGEpKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4gc3RhdHVzIHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIGRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIChcInJlcXVlc3QgXCIgXiB1cmwgXiBcIiBhbnN3ZXI6IFwiIF4gc3RyaW5nX29mX2ludCBzdGF0dXMpKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gZGVidWcgfmxvYzpfX0xPQ19fIHJlc3BvbnNlIGluXG4gICAgICAgICAgICAgaGFuZGxlciBzdGF0dXMgKEpzLnRvX3N0cmluZyByZXNwb25zZSkpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLk9wdC5vcHRpb25cbiAgICAgICAgICAgKG1hdGNoIHRpbWVvdXQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICB8IFNvbWUgdGltZW91dCAtPiBTb21lIHRpbWVvdXQpKTtcbiAgICB8XVxuXG4oKiBUaGlzIGlzIHRvIGhhbmRsZSBlcnJvcnMgYmVpbmcgbG9zdCBpbiBhc3luY3NcbiAgIHNvIHRoZXJlIHNob3VsZCBiZSBubyBvdGhlciBhc3luYyBjYWxscyBpbiB0aGVcbiAgIGNvZGUuXG4qKVxubGV0IGFzeW5jIGxvYyAodGFzayA6IHVuaXQgLT4gJ2EgTHd0LnQpIDogdW5pdCA9XG4gIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmFzeW5jIChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYXRjaCB0YXNrIChmdW4gZXhuIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm4gfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgIChKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgKFwiQXN5bmMgZXJyb3IgYXQgXCIgXiBsb2MgXiBcIjpcXG5cIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ190cmFjZSA9XG4gICAgICAgICAgICBpZiBQcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzICgpIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgdHJhY2UgPSBQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpIGluXG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggdHJhY2UgPiAwIHRoZW5cbiAgICAgICAgICAgICAgICBcIkJhY2t0cmFjZTogXCIgXiB0cmFjZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgXCJDb3VsZG4ndCBnZXQgYmFja3RyYWNlIHdoaWxlIGJhY2t0cmFjZSByZWNvcmQgaXMgZW5hYmxlZCwgXFxcbiAgICAgICAgICAgICAgICAgbWlnaHQgYmUgYmVjYXVzZSBvZiBqc29vIG9yIHJlYWN0IDovXCJcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBcIkVuYWJsZSBiYWNrdHJhY2UgcmVjb3JkaW5nIHRvIChob3BlZnVsbHk/KSBnZXQgYmFja3RyYWNlXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHdhcm4gfmxvYzpfX0xPQ19fIChKcy5zdHJpbmcgbG9nX3RyYWNlKSBpblxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBndWlkICgpIDogc3RyaW5nID1cbiAgSnMudG9fc3RyaW5nIChKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiZ3VpZFwiKSBbfHxdKVxuXG5sZXQgbW9kYWwgfihpZCA6IHN0cmluZykgfihhY3Rpb24gOiBzdHJpbmcpIDogdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcIm1vZGFsXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGFjdGlvbikgfF1cblxubGV0IGVsZW1lbnRfZGF0YSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgKGxhYmVsIDogc3RyaW5nKSA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwiZWxlbWVudERhdGFcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQ7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBsYWJlbCkgfF1cblxubGV0IGNyZWF0ZV9zb3J0IChpZCA6IHN0cmluZykgKGhhbmRsZXIgOiBEb21faHRtbC5ldmVudCBKcy50IC0+ICdiIC0+IHVuaXQpIDpcbiAgICB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwiY3JlYXRlU29ydFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgaGFuZGxlciB8XVxuXG5sZXQgY2hpbGRyZW5fdmFsdWUgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIChzZWxlY3RvciA6IHN0cmluZylcbiAgICAobWFwIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+ICdhKSA6ICdhIGxpc3QgPVxuICBBcnJheS50b19saXN0XG4gICAgKEpzLnRvX2FycmF5XG4gICAgICAgKEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgICAgICAgIChKcy5VbnNhZmUuanNfZXhwciBcImNoaWxkcmVuVmFsdWVcIilcbiAgICAgICAgICBbfFxuICAgICAgICAgICAgSnMuVW5zYWZlLmluamVjdCBlbGVtZW50O1xuICAgICAgICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHNlbGVjdG9yKTtcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgbWFwO1xuICAgICAgICAgIHxdKSlcblxubGV0IGhpZGVfY29kZW1pcnJvciAoKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaGlkZUNvZGVNaXJyb3JcIikgW3x8XVxuXG5sZXQgc2hvd19jb2RlbWlycm9yICgpIDogdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJzaG93Q29kZU1pcnJvclwiKSBbfHxdXG5cbmxldCBzdHJpbmdfb2Zfb3B0aW9uIHN0cmluZ19vZl92YWx1ZSBpX29wdCA9XG4gIG1hdGNoIGlfb3B0IHdpdGhcbiAgfCBOb25lIC0+IFwiTm9uZVwiXG4gIHwgU29tZSBpIC0+IFwiU29tZSBcIiBeIHN0cmluZ19vZl92YWx1ZSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBvcHRpb25fbGFiZWwgPyhtYXhfc2l6ZSA9IDI0KSBsYWJlbCA9XG4gIGlmIFN0cmluZy5sZW5ndGggbGFiZWwgPiBtYXhfc2l6ZSB0aGVuXG4gICAgU3RyaW5nLnN1YiBsYWJlbCAwIChtYXhfc2l6ZSAtIDEpIF4gXCIuLi5cIlxuICBlbHNlXG4gICAgbGFiZWxcblxubGV0IGV4cG9ydF9jb250cm9scyB+KGV4cG9ydF9zZWxlY3RfaWQgOiBzdHJpbmcpIH4oZXhwb3J0X2ZpbGVuYW1lX2lkIDogc3RyaW5nKVxuICAgIH4oZXhwb3J0X2J1dHRvbl9pZCA6IHN0cmluZykgfihleHBvcnRfZGF0YV9sYWJlbCA6IHN0cmluZykgPVxuICBsZXQgZXhwb3J0X2Zvcm1hdHMgOiBzdHJpbmcgbGlzdCA9IFsgZXhwb3J0X2RhdGFfbGFiZWwgXSBpblxuICBsZXQgZXhwb3J0X2ZpbGVuYW1lID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBleHBvcnRfZmlsZW5hbWVfaWQ7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImZpbGUgbmFtZVwiO1xuICAgICAgICBdXG4gICAgICAoKVxuICBpblxuICBsZXQgZXhwb3J0X2J1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGV4cG9ydF9idXR0b25faWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJwdWxsLXJpZ2h0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiZXhwb3J0XCIgXVxuICBpblxuICBsZXQgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBmb3JtYXQgLT5cbiAgICAgICAgWyVodG1sXG4gICAgICAgICAge3w8b3B0aW9uIHZhbHVlPVwifH0gZm9ybWF0IHt8XCI+fH0gKEh0bWwuY2RhdGEgZm9ybWF0KSB7fDwvb3B0aW9uPnx9XSlcbiAgICAgIGV4cG9ydF9mb3JtYXRzXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWlubGluZVwiPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICBpZD1cInx9XG4gICAgICBleHBvcnRfc2VsZWN0X2lkXG4gICAgICB7fFwiPjxvcHRpb24gdmFsdWU9XCJwbmdcIj5wbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwic3ZnXCI+c3ZnPC9vcHRpb24+fH1cbiAgICAgIGV4cG9ydF9mb3JtYXRzX3NlbGVjdFxuICAgICAge3w8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94LWlubGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfH1cbiAgICAgIFsgZXhwb3J0X2ZpbGVuYW1lIF1cbiAgICAgIHt8XG4gICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveC1pbmxpbmVcIj5cbiAgICAgICAgICAgICAgfH1cbiAgICAgIFsgZXhwb3J0X2J1dHRvbiBdXG4gICAgICB7fFxuICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+fH1dXG5cbmxldCBkb2N1bWVudCA9IERvbV9odG1sLndpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBhcmd1bWVudHMgKGtleSA6IHN0cmluZykgOiBzdHJpbmcgbGlzdCA9XG4gIExpc3QubWFwIHNuZCAoTGlzdC5maWx0ZXIgKGZ1biAoaywgXykgLT4ga2V5ID0gaykgVXJsLkN1cnJlbnQuYXJndW1lbnRzKVxuXG5sZXQgdmVyc2lvbiA/KHRlc3QgOiAnYSBvcHRpb24gPSBOb25lKSB+KHByb2QgOiAnYSkgfihkZXYgOiAnYSkgOiAnYSA9XG4gIGxldCB2ZXJzaW9uIDogc3RyaW5nIGxpc3QgPSBhcmd1bWVudHMgXCJ2ZXJzaW9uXCIgaW5cbiAgbWF0Y2ggdGVzdCwgdmVyc2lvbiB3aXRoXG4gIHwgU29tZSB0ZXN0LCBbIFwidGVzdFwiIF0gLT4gdGVzdFxuICB8IF8sIFsgXCJkZXZcIiBdIC0+IGRldlxuICB8IF8gLT4gcHJvZFxuXG5sZXQgbmF2bGkgbGFiZWwgZm9yY2VfY2xhc3MgZGVjb3JhdGlvbnMgPVxuICBsZXQgZGVmYXVsdF9hdHRyaWJ1dGVzID1cbiAgICBbIEh0bWwuYV9pZCAoXCJuYXZcIiBeIGxhYmVsKTsgSHRtbC5hX3JvbGUgWyBcInByZXNlbnRhdGlvblwiIF0gXVxuICBpblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgbWF0Y2ggZm9yY2VfY2xhc3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBkZWZhdWx0X2F0dHJpYnV0ZXNcbiAgICB8IFNvbWUgbCAtPiBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3MgbCA6OiBkZWZhdWx0X2F0dHJpYnV0ZXNcbiAgaW5cbiAgbGV0IHRleHQgPVxuICAgIFJlYWN0aXZlRGF0YS5STGlzdC5jb25jYXRcbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3Quc2luZ2xldG9uIChIdG1sLmNkYXRhIGxhYmVsKSlcbiAgICAgIGRlY29yYXRpb25zXG4gIGluXG4gIEh0bWwubGkgfmE6YXR0cmlidXRlc1xuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbC5hXG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLXRvZ2dsZVwiIFwidGFiXCI7XG4gICAgICAgICAgICBIdG1sLmFfcm9sZSBbIFwidGFiXCIgXTtcbiAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWNvbnRyb2xzXCIgbGFiZWw7XG4gICAgICAgICAgICBIdG1sLmFfaHJlZiAoXCIjXCIgXiBsYWJlbCk7XG4gICAgICAgICAgXVxuICAgICAgICB0ZXh0O1xuICAgIF1cblxubGV0IG5hdnRhYnMgbmF2dGFic19pZCA9IGZ1bmN0aW9uXG4gIHwgW10gfCAoXywgU29tZSBfLCBfKSA6OiBfIC0+IENvbW1vbi50b3NzIFwidWlfY29tbW9uLm5hdnRhYnMgOiBtaXNzaW5nIHRhYnNcIlxuICB8ICh0aSwgTm9uZSwgbCkgOjogdCAtPlxuICAgIEh0bWwudWxcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIG5hdnRhYnNfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJuYXZcIjsgXCJuYXYtdGFic1wiIF07XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcInRhYmxpc3RcIjtcbiAgICAgICAgXVxuICAgICAgKG5hdmxpIHRpIChTb21lIChSZWFjdC5TLmNvbnN0IFsgXCJhY3RpdmVcIiBdKSkgbFxuICAgICAgOjogTGlzdC5tYXAgKGZ1biAodCwgYV9jbGFzcywgbGkpIC0+IG5hdmxpIHQgYV9jbGFzcyBsaSkgdClcblxubGV0IG9uZW5hdmNvbnRlbnQgbGFiZWwgYWN0aXZlIGNsYXNzZXMgY29udGVudCA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBsYWJlbDtcbiAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKGlmIGFjdGl2ZSB0aGVuXG4gICAgICAgICAgICAgXCJmbGV4LWNvbnRlbnRcIiA6OiBcInRhYi1wYW5lXCIgOjogXCJhY3RpdmVcIiA6OiBjbGFzc2VzXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBcImZsZXgtY29udGVudFwiIDo6IFwidGFiLXBhbmVcIiA6OiBjbGFzc2VzKTtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcInRhYnBhbmVsXCI7XG4gICAgICBdXG4gICAgY29udGVudFxuXG5sZXQgbmF2Y29udGVudCA/aWQgY2xhc3NlcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gQ29tbW9uLnRvc3MgXCJ1aV9jb21tb24ubmF2Y29udGVudCA6IG1pc3NpbmcgY29udGVudFwiXG4gIHwgKHQsIGNsLCBjKSA6OiBsIC0+XG4gICAgbGV0IGlkIDogWz4gYElkIF0gSHRtbC5hdHRyaWIgbGlzdCA9XG4gICAgICBtYXRjaCBpZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSBpZCAtPiBbIEh0bWwuYV9pZCBpZCBdXG4gICAgaW5cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIChbXG4gICAgICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgIChbIFwicGFuZWwtY29udGVudFwiOyBcInRhYi1jb250ZW50XCI7IFwiZmxleC1jb250ZW50XCIgXSBAIGNsYXNzZXMpO1xuICAgICAgICAgXVxuICAgICAgICBAIGlkKVxuICAgICAgKG9uZW5hdmNvbnRlbnQgdCB0cnVlIGNsIGNcbiAgICAgIDo6IExpc3QubWFwIChmdW4gKHQsIGNsLCBjKSAtPiBvbmVuYXZjb250ZW50IHQgZmFsc2UgY2wgYykgbClcblxubGV0IGxldmVsID9kZWJ1ZyA/aW5mbyA/bG9nID93YXJuaW5nID9lcnJvciAoKSA6ICdhIGxpc3QgPVxuICBsZXQgbGV2ZWwgOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcImxldmVsXCIgaW5cbiAgbGV0IGV4dHJhY3Qga2V5IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBpZiBMaXN0Lm1lbSBrZXkgbGV2ZWwgdGhlblxuICAgICAgICBbIHZhbHVlIF1cbiAgICAgIGVsc2VcbiAgICAgICAgW11cbiAgaW5cbiAgZXh0cmFjdCBcImRlYnVnXCIgZGVidWcgQCBleHRyYWN0IFwiaW5mb1wiIGluZm8gQCBleHRyYWN0IFwibG9nXCIgbG9nXG4gIEAgZXh0cmFjdCBcIndhcm5pbmdcIiB3YXJuaW5nIEAgZXh0cmFjdCBcImVycm9yXCIgZXJyb3IgQCBbXVxuXG5sZXQgZmVhdHVyZXMgPyhkZWZhdWx0ID0gW10pIChvcHRpb25zIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdhIGxpc3QgPVxuICBsZXQgZmVhdHVyZXMgOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcImZlYXR1cmVcIiBpblxuICBsZXQgbWF0Y2hlcyA6ICdhIGxpc3QgPVxuICAgIExpc3QubWFwIHNuZFxuICAgICAgKExpc3QuZmlsdGVyIChmdW4gKGZlYXR1cmUsIF8pIC0+IExpc3QubWVtIGZlYXR1cmUgZmVhdHVyZXMpIG9wdGlvbnMpXG4gIGluXG4gIG1hdGNoIG1hdGNoZXMgd2l0aFxuICB8IFtdIC0+IGRlZmF1bHRcbiAgfCBfIDo6IF8gLT4gbWF0Y2hlc1xuXG5sZXQgaW5wdXRfY2hhbmdlIGlucHV0X2RvbSBzaWduYWxfaGFuZGxlciA9XG4gIGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9XG4gICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2lnbmFsX2hhbmRsZXIgKEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSkgaW5cbiAgICAgICAgSnMuX3RydWUpXG5cbm1vZHVsZSB0eXBlIE1lbnUgPSBzaWdcbiAgdmFsIGNvbnRlbnQgOlxuICAgIHVuaXQgLT5cbiAgICBbPiBgQnV0dG9uIHwgYERpdiB8IGBVbCB8IGBBIG9mIFs+IGBQQ0RBVEEgfCBgU3BhbiBdIF0gVHl4bWxfanMuSHRtbDUuZWx0XG4gICAgbGlzdFxuXG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBEaXYgPSBzaWdcbiAgdmFsIGlkIDogc3RyaW5nXG4gIHZhbCBjb250ZW50IDogdW5pdCAtPiBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBUYWIgPSBzaWdcbiAgdmFsIG5hdmxpIDpcbiAgICB1bml0IC0+XG4gICAgSHRtbF90eXBlcy5mbG93NV93aXRob3V0X2ludGVyYWN0aXZlIFR5eG1sX2pzLkh0bWw1LmVsdCBSZWFjdGl2ZURhdGEuUkxpc3QudFxuXG4gIHZhbCBjb250ZW50IDogdW5pdCAtPiBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBUeXhtbF9qcy5IdG1sNS5lbHQgbGlzdFxuICB2YWwgb25sb2FkIDogdW5pdCAtPiB1bml0XG4gIHZhbCBvbnJlc2l6ZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN1YlRhYiA9IHNpZ1xuICBpbmNsdWRlIFRhYlxuXG4gIHZhbCBwYXJlbnRfaGlkZSA6IHVuaXQgLT4gdW5pdFxuICB2YWwgcGFyZW50X3Nob3duIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgUGFuZWwgPSBzaWdcbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2IFR5eG1sX2pzLkh0bWw1LmVsdFxuICB2YWwgb25sb2FkIDogdW5pdCAtPiB1bml0XG4gIHZhbCBvbnJlc2l6ZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbmxldCBpZF9kb20gKGlkIDogc3RyaW5nKSA6ICdhIEpzLnQgPVxuICBKcy5VbnNhZmUuY29lcmNlXG4gICAgKEpzLk9wdC5nZXRcbiAgICAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIENvbW1vbi50b3NzXG4gICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcInVpX2NvbW1vbi5pZF9kb20gOiBjb3VsZCBub3QgZmluZCBpZCAlc1wiIGlkKSlcbiAgICAgIDogRG9tX2h0bWwuZWxlbWVudCBKcy50KVxuXG5sZXQgc3dpdGNoX2NsYXNzIGVsdF9pZCBhZGRfbGlzdCByZW1vdmVfbGlzdCA9XG4gIGxldCBkb21fZWx0IDogJ2EgSnMudCA9IGlkX2RvbSBlbHRfaWQgfD4gSnMuVW5zYWZlLmNvZXJjZSBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChjbGFzc19zdHIgOiBzdHJpbmcpIC0+XG4gICAgICBKcy5VbnNhZmUubWV0aF9jYWxsIGRvbV9lbHQjIy5jbGFzc0xpc3QgXCJhZGRcIlxuICAgICAgICBbfCBKcy5zdHJpbmcgY2xhc3Nfc3RyIHw+IEpzLlVuc2FmZS5jb2VyY2UgfF0pXG4gICAgYWRkX2xpc3Q7XG4gIExpc3QuaXRlclxuICAgIChmdW4gKGNsYXNzX3N0ciA6IHN0cmluZykgLT5cbiAgICAgIEpzLlVuc2FmZS5tZXRoX2NhbGwgZG9tX2VsdCMjLmNsYXNzTGlzdCBcInJlbW92ZVwiXG4gICAgICAgIFt8IEpzLnN0cmluZyBjbGFzc19zdHIgfD4gSnMuVW5zYWZlLmNvZXJjZSB8XSlcbiAgICByZW1vdmVfbGlzdFxuXG4oKiBtb2RhbHMgKilcblxubGV0IGNyZWF0ZV9tb2RhbF90ZXh0X2lucHV0IH4oaWQgOiBzdHJpbmcpIH4odGl0bGVfbGFiZWwgOiBzdHJpbmcpXG4gICAgfihib2R5IDogWzwgSHRtbF90eXBlcy5kaXZfY29udGVudF9mdW4gXSBIdG1sLmVsdCBIdG1sLmxpc3Rfd3JhcClcbiAgICB+KHN1Ym1pdF9sYWJlbCA6IHN0cmluZykgfihzdWJtaXQgOiAoJ3NlbGYgSnMudCwgXyBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIpXG4gICAgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIEh0bWwuZWx0ID1cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQ7IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLXByaW1hcnlcIiBdIF1cbiAgICAgIFsgSHRtbC50eHQgc3VibWl0X2xhYmVsIF1cbiAgaW5cbiAgbGV0IGZvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWNvbnRlbnRcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtaGVhZGVyXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjbG9zZVwiIF07XG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1kaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtbGFiZWxcIiBcIkNsb3NlXCI7XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWhpZGRlblwiIFwidHJ1ZVwiIF1cbiAgICAgICAgICAgICAgICAgIFsgSHRtbC5lbnRpdHkgXCJ0aW1lc1wiIF07XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBIdG1sLmg0IFsgSHRtbC5jZGF0YSB0aXRsZV9sYWJlbCBdO1xuICAgICAgICAgIF07XG4gICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1ib2R5XCIgXSBdIGJvZHk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWZvb3RlclwiIF0gXVxuICAgICAgICAgIChbXG4gICAgICAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLWRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIFsgSHRtbC5jZGF0YSBcIkNhbmNlbFwiIF07XG4gICAgICAgICAgIF1cbiAgICAgICAgICBAIFsgYnV0dG9uIF0pO1xuICAgICAgXVxuICBpblxuICBsZXQgKCkgPSAoVHl4bWxfanMuVG9fZG9tLm9mX2Zvcm0gZm9ybSkjIy5vbnN1Ym1pdCA6PSBzdWJtaXQgaW5cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbFwiOyBcImZhZGVcIiBdO1xuICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0YWJpbmRleFwiIFwiLTFcIjtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImRpYWxvZ1wiO1xuICAgICAgXVxuICAgIFtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZGlhbG9nXCIgXTtcbiAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJkb2N1bWVudFwiO1xuICAgICAgICAgIF1cbiAgICAgICAgWyBmb3JtIF07XG4gICAgXVxuXG4oKiBEdXBsaWNhdGVkIGluIGpzIGluIGNvbW1vbi5qcy4gVE9ETzogbWVyZ2UgdGhlIGxvZ2ljPyAqKVxubGV0IGNyZWF0ZV9tb2RhbF9lcnJvciB+KGlkIDogc3RyaW5nKSB+KGlzX2NyaXRpY2FsIDogYm9vbClcbiAgICB+KGVycm9yX2NvbnRlbnQgOiBzdHJpbmcpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBIdG1sLmVsdCA9XG4gIGxldCBidXR0b25fdHlwZSA6IHN0cmluZyA9XG4gICAgaWYgaXNfY3JpdGljYWwgdGhlblxuICAgICAgXCJidG4tZGFuZ2VyXCJcbiAgICBlbHNlXG4gICAgICBcImJ0bi1wcmltYXJ5XCJcbiAgaW5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgYnV0dG9uX3R5cGUgXTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1kaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwudHh0IFwiUmV0dXJuIHRvIGFwcFwiIF1cbiAgaW5cblxuICBsZXQgdGl0bGVfbGFiZWwgPVxuICAgIGlmIGlzX2NyaXRpY2FsIHRoZW5cbiAgICAgIFwiQ3JpdGljYWwgZXJyb3IuXCJcbiAgICBlbHNlXG4gICAgICBcIkVycm9yLlwiXG4gIGluXG5cbiAgbGV0IGJvZHkgPVxuICAgIFtcbiAgICAgIEh0bWwudHh0XG4gICAgICAgIChcIlRoZSBLYXBwYSBhcHAgaGFzIGVuY291bnRlcmVkIGEgXCJcbiAgICAgICAgXiAoaWYgaXNfY3JpdGljYWwgdGhlblxuICAgICAgICAgICAgIFwiY3JpdGljYWwgXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgICAgIF4gXCJlcnJvcjpcIik7XG4gICAgICBIdG1sLnByZSBbIEh0bWwuY29kZSBbIEh0bWwudHh0IGVycm9yX2NvbnRlbnQgXSBdO1xuICAgIF1cbiAgICBAXG4gICAgaWYgaXNfY3JpdGljYWwgdGhlblxuICAgICAgW1xuICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgIFwiU29tZSBwYXJ0cyBvZiB0aGUgYXBwIG1pZ2h0IG5vdCBiZWhhdmUgcHJvcGVybHkgYWZ0ZXIgdGhpcy4gSW4gdGhpcyBcXFxuICAgICAgICAgICBjYXNlLCBzYXZlIHlvdXIgd29yayBhbmQgcmVsb2FkIHRoZSBhcHAuXCI7XG4gICAgICBdXG4gICAgZWxzZVxuICAgICAgW11cbiAgaW5cblxuICBsZXQgYmFja2Ryb3BfYXR0cmliID1cbiAgICBpZiBpc19jcml0aWNhbCB0aGVuXG4gICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1iYWNrZHJvcFwiIFwic3RhdGljXCJcbiAgICBlbHNlXG4gICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1iYWNrZHJvcFwiIFwidHJ1ZVwiXG4gIGluXG5cbiAgbGV0IGZvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWNvbnRlbnRcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtaGVhZGVyXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjbG9zZVwiIF07XG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1kaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtbGFiZWxcIiBcIkNsb3NlXCI7XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWhpZGRlblwiIFwidHJ1ZVwiIF1cbiAgICAgICAgICAgICAgICAgIFsgSHRtbC5lbnRpdHkgXCJ0aW1lc1wiIF07XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBIdG1sLmg0IFsgSHRtbC5jZGF0YSB0aXRsZV9sYWJlbCBdO1xuICAgICAgICAgIF07XG4gICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1ib2R5XCIgXSBdIGJvZHk7XG4gICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1mb290ZXJcIiBdIF0gWyBidXR0b24gXTtcbiAgICAgIF1cbiAgaW5cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbFwiOyBcImZhZGVcIiBdO1xuICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0YWJpbmRleFwiIFwiLTFcIjtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImRpYWxvZ1wiO1xuICAgICAgICBiYWNrZHJvcF9hdHRyaWI7XG4gICAgICBdXG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1kaWFsb2dcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImRvY3VtZW50XCI7XG4gICAgICAgICAgXVxuICAgICAgICBbIGZvcm0gXTtcbiAgICBdXG5cbmxldCAoKSA9IFJhbmRvbS5zZWxmX2luaXQgKClcbmxldCBpbmRleF9tb2RhbCA9IHJlZiAwXG5cbmxldCBuZXdfbW9kYWxfZXJyb3JfaWQgKCkgPVxuICBpbmNyIGluZGV4X21vZGFsO1xuICBcIm1vZGFsX2Vycm9yX2lkLVwiIF4gc3RyaW5nX29mX2ludCAhaW5kZXhfbW9kYWxcblxubGV0IG9wZW5fbW9kYWxfZXJyb3Igfihpc19jcml0aWNhbCA6IGJvb2wpIH4oZXJyb3JfY29udGVudCA6IHN0cmluZykgOiB1bml0ID1cbiAgbGV0IGlkID0gbmV3X21vZGFsX2Vycm9yX2lkICgpIGluXG5cbiAgbGV0IG1vZGFsID1cbiAgICBUeXhtbF9qcy5Ub19kb20ub2ZfZGl2IChjcmVhdGVfbW9kYWxfZXJyb3IgfmlkIH5pc19jcml0aWNhbCB+ZXJyb3JfY29udGVudClcbiAgaW5cbiAgbGV0IG1haW4gPSBpZF9kb20gXCJtYWluXCIgaW5cbiAgRG9tLmFwcGVuZENoaWxkIG1haW4gbW9kYWw7XG4gIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gaWQpIH5hY3Rpb246XCJzaG93XCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxudHlwZSBoYW5kbGVyID0geyBzdWZmaXg6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgZXhwb3J0OiBzdHJpbmcgLT4gdW5pdCB9XG5cbnR5cGUgY29uZmlndXJhdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaGFuZGxlcnM6IGhhbmRsZXIgbGlzdDtcbiAgc2hvdzogYm9vbCBSZWFjdC5zaWduYWw7XG59XG5cbmxldCBleHBvcnRfZm9ybWF0X2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19zZWxlY3RcIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfZmlsZW5hbWVfaWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2ZpbGVuYW1lXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2J1dHRvbl9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfYnV0dG9uXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2RhdGFfbGFiZWwgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2xhYmVsXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2Zvcm1faWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2Zvcm1cIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBpbmxpbmVfY29udGVudCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pID1cbiAgbGV0IGV4cG9ydF9maWxlbmFtZSA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgKGV4cG9ydF9maWxlbmFtZV9pZCBjb25maWd1cmF0aW9uKTtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgKGV4cG9ydF9idXR0b25faWQgY29uZmlndXJhdGlvbik7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2Rpc2FibGVkICgpKVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwIG5vdCBjb25maWd1cmF0aW9uLnNob3cpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJleHBvcnRcIiBdXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0c19zZWxlY3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGhhbmRsZXIgLT5cbiAgICAgICAgWyVodG1sXG4gICAgICAgICAge3w8b3B0aW9uIHZhbHVlPVwifH0gaGFuZGxlci5sYWJlbCB7fFwiPnx9IChIdG1sLmNkYXRhIGhhbmRsZXIubGFiZWwpXG4gICAgICAgICAgICB7fDwvb3B0aW9uPnx9XSlcbiAgICAgIGNvbmZpZ3VyYXRpb24uaGFuZGxlcnNcbiAgaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInx9XG4gICAgICAoZXhwb3J0X2Zvcm1hdF9pZCBjb25maWd1cmF0aW9uKVxuICAgICAge3xcIj5cbiAgICAgICAgICAgICAgIHx9XG4gICAgICBleHBvcnRfZm9ybWF0c19zZWxlY3RcbiAgICAgIHt8XG4gICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9fH1cbiAgICAgIChleHBvcnRfZmlsZW5hbWVfaWQgY29uZmlndXJhdGlvbilcbiAgICAgIHt8PjwvbGFiZWw+XG4gICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfZmlsZW5hbWUgXVxuICAgICAge3xcbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICB8fV1cbiAgQCBbIGV4cG9ydF9idXR0b24gXVxuXG5sZXQgY29udGVudCBjb25maWd1cmF0aW9uID1cbiAgSHRtbC5mb3JtXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCAoZXhwb3J0X2Zvcm1faWQgY29uZmlndXJhdGlvbik7IEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1pbmxpbmVcIiBdO1xuICAgICAgXVxuICAgIChpbmxpbmVfY29udGVudCBjb25maWd1cmF0aW9uKVxuXG5sZXQgb25sb2FkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgPVxuICBsZXQgZXhwb3J0X2J1dHRvbiA6IERvbV9odG1sLmJ1dHRvbkVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSAoZXhwb3J0X2J1dHRvbl9pZCBjb25maWd1cmF0aW9uKVxuICBpblxuICBsZXQgZXhwb3J0X2ZpbGVuYW1lIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gKGV4cG9ydF9maWxlbmFtZV9pZCBjb25maWd1cmF0aW9uKVxuICBpblxuICBsZXQgZXhwb3J0X2Zvcm1hdCA6IERvbV9odG1sLnNlbGVjdEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSAoZXhwb3J0X2Zvcm1hdF9pZCBjb25maWd1cmF0aW9uKVxuICBpblxuICBsZXQgZXhwb3J0X2J1dHRvbl90b2dnbGUgKCkgOiB1bml0ID1cbiAgICBsZXQgaXNfZGlzYWJsZWQgOiBib29sIEpzLnQgPVxuICAgICAgSnMuYm9vbFxuICAgICAgICAoKG5vdCAoUmVhY3QuUy52YWx1ZSBjb25maWd1cmF0aW9uLnNob3cpKVxuICAgICAgICB8fCBleHBvcnRfZmlsZW5hbWUjIy52YWx1ZSMjdHJpbSMjLmxlbmd0aCA9IDApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBleHBvcnRfYnV0dG9uIyMuZGlzYWJsZWQgOj0gaXNfZGlzYWJsZWQgaW5cbiAgICAoKVxuICBpblxuICBsZXQgKCkgPSBleHBvcnRfYnV0dG9uX3RvZ2dsZSAoKSBpblxuICBsZXQgKCkgPVxuICAgIGV4cG9ydF9maWxlbmFtZSMjLm9uaW5wdXQgOj1cbiAgICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gZXhwb3J0X2J1dHRvbl90b2dnbGUgKCkgaW5cbiAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgZXhwb3J0X2J1dHRvbiMjLm9uY2xpY2sgOj1cbiAgICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgbGV0IGhhbmRsZXIgOiBoYW5kbGVyID1cbiAgICAgICAgICAgIExpc3QubnRoIGNvbmZpZ3VyYXRpb24uaGFuZGxlcnMgZXhwb3J0X2Zvcm1hdCMjLnNlbGVjdGVkSW5kZXhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmaWxlbmFtZSBkZWZhdWx0IDogc3RyaW5nID1cbiAgICAgICAgICAgIGxldCByb290IDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGV4cG9ydF9maWxlbmFtZSMjLnZhbHVlIGluXG4gICAgICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcm9vdCAnLicgdGhlblxuICAgICAgICAgICAgICByb290XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHJvb3QgXiBcIi5cIiBeIGRlZmF1bHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGhhbmRsZXIuZXhwb3J0IChmaWxlbmFtZSBoYW5kbGVyLnN1ZmZpeCkgaW5cbiAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gICgpXG5cbmxldCBleHBvcnRfc3ZnID9zdmdfc3R5bGVfaWQgfihzdmdfZGl2X2lkIDogc3RyaW5nKSAoKSA6IGhhbmRsZXIgPVxuICB7XG4gICAgc3VmZml4ID0gXCJzdmdcIjtcbiAgICBsYWJlbCA9IFwic3ZnXCI7XG4gICAgZXhwb3J0ID1cbiAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgQ29tbW9uLnBsb3RTVkcgP3Bsb3RTdHlsZUlkOnN2Z19zdHlsZV9pZCBzdmdfZGl2X2lkIGZpbGVuYW1lIGZpbGVuYW1lKTtcbiAgfVxuXG5sZXQgZXhwb3J0X3BuZyA/c3ZnX3N0eWxlX2lkIH4oc3ZnX2Rpdl9pZCA6IHN0cmluZykgKCkgOiBoYW5kbGVyID1cbiAge1xuICAgIHN1ZmZpeCA9IFwicG5nXCI7XG4gICAgbGFiZWwgPSBcInBuZ1wiO1xuICAgIGV4cG9ydCA9XG4gICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgIENvbW1vbi5wbG90UE5HID9wbG90U3R5bGVJZDpzdmdfc3R5bGVfaWQgc3ZnX2Rpdl9pZCBmaWxlbmFtZSBmaWxlbmFtZSk7XG4gIH1cblxubGV0IGV4cG9ydF9qc29uIH4oc2VyaWFsaXplX2pzb24gOiB1bml0IC0+IHN0cmluZykgOiBoYW5kbGVyID1cbiAge1xuICAgIHN1ZmZpeCA9IFwianNvblwiO1xuICAgIGxhYmVsID0gXCJqc29uXCI7XG4gICAgZXhwb3J0ID1cbiAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKHNlcmlhbGl6ZV9qc29uICgpKSBpblxuICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lKTtcbiAgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBzdG9yeV9yZW5kZXJpbmcgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9zdG9yeV9yZW5kZXJpbmcgKGlkIDogc3RyaW5nKSA6IHN0b3J5X3JlbmRlcmluZyBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIlN0b3J5UmVuZGVyaW5nXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKSB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBzbmFwc2hvdCA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6XG4gICAgY29udGFjdF9tYXA6SnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9zbmFwc2hvdCAoaWQgOiBzdHJpbmcpIChjb2xvcmluZyA6IHVuaXQgSnMudCkgOiBzbmFwc2hvdCBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIlNuYXBzaG90XCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBjb2xvcmluZyB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCptb2R1bGUgQXBpVHlwZXMgPSBBcGlfdHlwZXNfaiopXG5cbmNsYXNzIHR5cGUgb2JzZXJ2YWJsZV9wbG90ID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBjbGVhckRhdGEgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfb2JzZXJ2YWJsZV9wbG90IG1haW5fZGl2X2lkIDogb2JzZXJ2YWJsZV9wbG90IEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JzZXJ2YWJsZVBsb3RcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbWFpbl9kaXZfaWQpIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIGdyYXBoX2xvZ2dlciA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9ncmFwaF9sb2dnZXIgKGlkIDogc3RyaW5nKSAob25fY2xpY2sgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSA6XG4gICAgZ3JhcGhfbG9nZ2VyIEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiR3JhcGhMb2dnZXJcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IG9uX2NsaWNrIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIGZsdXhfY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICB2YWwgYmVnaW5UaW1lSWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIHZhbCBlbmRUaW1lSWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIHZhbCBzZWxlY3RDb3JyZWN0aW9uSWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIHZhbCBjaGVja2JveFNlbGZJbmZsdWVuY2VJZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgdmFsIHRvZ2dsZVJ1bGVzSWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIHZhbCBuYkV2ZW50c0lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICB2YWwgc3ZnSWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIHZhbCBydWxlc0NoZWNrYm94ZXNJZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgdmFsIGhlaWdodCA6IGludCBKcy50IEpzLnByb3BcbiAgdmFsIHdpZHRoIDogaW50IEpzLnQgSnMucHJvcFxuICB2YWwgc2hvcnRMYWJlbHMgOiBib29sIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9jb25maWd1cmF0aW9uIDogZmx1eF9jb25maWd1cmF0aW9uIEpzLnQgSnMuY29uc3RyID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfY29uZmlndXJhdGlvbiB+KHNob3J0X2xhYmVscyA6IGJvb2wpIH4oYmVnaW5fdGltZV9pZCA6IHN0cmluZylcbiAgICB+KGVuZF90aW1lX2lkIDogc3RyaW5nKSB+KHNlbGVjdF9jb3JyZWN0aW9uX2lkIDogc3RyaW5nKVxuICAgIH4odG9nZ2xlX3J1bGVzX2lkIDogc3RyaW5nKSB+KGNoZWNrYm94X3NlbGZfaW5mbHVlbmNlX2lkIDogc3RyaW5nKVxuICAgIH4obmJfZXZlbnRzX2lkIDogc3RyaW5nKSB+KHN2Z19pZCA6IHN0cmluZykgfihydWxlc19jaGVja2JveGVzX2lkIDogc3RyaW5nKVxuICAgIH4oaGVpZ2h0IDogaW50KSB+KHdpZHRoIDogaW50KSA6IGZsdXhfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgbGV0IGNvbmZpZ3VyYXRpb24gOiBmbHV4X2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gICAgbmV3JWpzIGNvbnN0cnVjdG9yX2NvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBjb25maWd1cmF0aW9uKSMjLmJlZ2luVGltZUlkIDo9IEpzLnN0cmluZyBiZWdpbl90aW1lX2lkO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGNvbmZpZ3VyYXRpb24pIyMuZW5kVGltZUlkIDo9IEpzLnN0cmluZyBlbmRfdGltZV9pZDtcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBjb25maWd1cmF0aW9uKSMjLnNlbGVjdENvcnJlY3Rpb25JZFxuICAgIDo9IEpzLnN0cmluZyBzZWxlY3RfY29ycmVjdGlvbl9pZDtcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBjb25maWd1cmF0aW9uKSMjLmNoZWNrYm94U2VsZkluZmx1ZW5jZUlkXG4gICAgOj0gSnMuc3RyaW5nIGNoZWNrYm94X3NlbGZfaW5mbHVlbmNlX2lkO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGNvbmZpZ3VyYXRpb24pIyMudG9nZ2xlUnVsZXNJZFxuICAgIDo9IEpzLnN0cmluZyB0b2dnbGVfcnVsZXNfaWQ7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgY29uZmlndXJhdGlvbikjIy5uYkV2ZW50c0lkIDo9IEpzLnN0cmluZyBuYl9ldmVudHNfaWQ7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgY29uZmlndXJhdGlvbikjIy5zdmdJZCA6PSBKcy5zdHJpbmcgc3ZnX2lkO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGNvbmZpZ3VyYXRpb24pIyMucnVsZXNDaGVja2JveGVzSWRcbiAgICA6PSBKcy5zdHJpbmcgcnVsZXNfY2hlY2tib3hlc19pZDtcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBjb25maWd1cmF0aW9uKSMjLmhlaWdodCA6PSBoZWlnaHQ7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgY29uZmlndXJhdGlvbikjIy53aWR0aCA6PSB3aWR0aDtcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBjb25maWd1cmF0aW9uKSMjLnNob3J0TGFiZWxzIDo9IHNob3J0X2xhYmVsc1xuICBpblxuICBjb25maWd1cmF0aW9uXG5cbmNsYXNzIHR5cGUgZmx1eF9kYXRhID0gb2JqZWN0XG4gIHZhbCBiaW9CZWdpblRpbWUgOiBmbG9hdCBKcy50IEpzLnByb3BcbiAgdmFsIGJpb0VuZFRpbWUgOiBmbG9hdCBKcy50IEpzLnByb3BcbiAgdmFsIG5vcm1hbGl6ZWQgOiBib29sIEpzLnQgSnMucHJvcFxuICB2YWwgcnVsZXMgOiBKcy5qc19zdHJpbmcgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG4gIHZhbCBoaXRzIDogaW50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICB2YWwgZmx1eHMgOiBpbnQgSnMuanNfYXJyYXkgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2RhdGEgOiBmbHV4X2RhdGEgSnMudCBKcy5jb25zdHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9kYXRhIH4oZmx1eF9iZWdpbl90aW1lIDogZmxvYXQpIH4oZmx1eF9lbmRfdGltZSA6IGZsb2F0KVxuICAgIH4obm9ybWFsaXplZCA6IGJvb2wpIH4oZmx1eF9ydWxlcyA6IHN0cmluZyBhcnJheSkgfihmbHV4X2hpdHMgOiBpbnQgYXJyYXkpXG4gICAgfihmbHV4X2ZsdXhzIDogZmxvYXQgYXJyYXkgYXJyYXkpIDogZmx1eF9kYXRhIEpzLnQgPVxuICBsZXQgZGF0YSA6IGZsdXhfZGF0YSBKcy50ID0gbmV3JWpzIGNvbnN0cnVjdG9yX2RhdGEgaW5cbiAgbGV0ICgpID1cbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBkYXRhKSMjLmJpb0JlZ2luVGltZSA6PSBmbHV4X2JlZ2luX3RpbWU7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgZGF0YSkjIy5iaW9FbmRUaW1lIDo9IGZsdXhfZW5kX3RpbWU7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgZGF0YSkjIy5ub3JtYWxpemVkIDo9IG5vcm1hbGl6ZWQ7XG4gICAgKEpzLlVuc2FmZS5jb2VyY2UgZGF0YSkjIy5ydWxlcyA6PSBKcy5hcnJheSAoQXJyYXkubWFwIEpzLnN0cmluZyBmbHV4X3J1bGVzKTtcbiAgICAoSnMuVW5zYWZlLmNvZXJjZSBkYXRhKSMjLmhpdHMgOj0gSnMuYXJyYXkgZmx1eF9oaXRzO1xuICAgIChKcy5VbnNhZmUuY29lcmNlIGRhdGEpIyMuZmx1eHMgOj0gSnMuYXJyYXkgKEFycmF5Lm1hcCBKcy5hcnJheSBmbHV4X2ZsdXhzKTtcbiAgICAoKVxuICBpblxuICBkYXRhXG5cbmNsYXNzIHR5cGUgZmx1eF9tYXAgPSBvYmplY3RcbiAgbWV0aG9kIGV4cG9ydEpTT04gOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHNldEZsdXggOiBmbHV4X2RhdGEgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX2ZsdXhfbWFwIChjb25maWd1cmF0aW9uIDogZmx1eF9jb25maWd1cmF0aW9uIEpzLnQpIDogZmx1eF9tYXAgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJmbHV4TWFwXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCBjb25maWd1cmF0aW9uIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIGNvbnRhY3RfbWFwID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfY29udGFjdF9tYXAgKGlkIDogc3RyaW5nKSAoY29sb3JpbmcgOiB1bml0IEpzLnQpIDogY29udGFjdF9tYXAgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJDb250YWN0TWFwXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBjb2xvcmluZyB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgcHJpbnRfc3RyaW5nIHMgbGlzdCA9IEh0bWwudHh0IHMgOjogbGlzdFxubGV0IHByaW50X25ld2xpbmUgbGlzdCA9IHByaW50X3N0cmluZyBcIlxcblwiIGxpc3RcblxubGV0IHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIGEgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5iaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfc3RyaW5nIGFcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmJpbmRpbmdfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X3NpbmdsZV9pbnRlcm5hbF9zdGF0ZSBhIGxpc3QgPVxuICBwcmludF9zdHJpbmcgUHVibGljX2RhdGEuaW50ZXJuYWxfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbFxuICAgIChwcmludF9zdHJpbmcgYVxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuaW50ZXJuYWxfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X2NvdW50ZXJfaW50ZXJ2YWwgKGEsIGIpIGxpc3QgPVxuICBsZXQgb3Blbl9yYW5nZSwgaW5mID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICggUHVibGljX2RhdGEub3Blbl9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sLFxuICAgICAgICBQdWJsaWNfZGF0YS5taW51c19pbmZpbml0eV9zeW1ib2wgKVxuICAgIHwgU29tZSBhIC0+IFB1YmxpY19kYXRhLm9wZW5faW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCwgc3RyaW5nX29mX2ludCBhXG4gIGluXG4gIGxldCBjbG9zZV9yYW5nZSwgc3VwID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICggUHVibGljX2RhdGEuY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCxcbiAgICAgICAgUHVibGljX2RhdGEucGx1c19pbmZpbml0eV9zeW1ib2wgKVxuICAgIHwgU29tZSBiIC0+IFB1YmxpY19kYXRhLmNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wsIHN0cmluZ19vZl9pbnQgYlxuICBpblxuICBwcmludF9zdHJpbmcgb3Blbl9yYW5nZVxuICAgIChwcmludF9zdHJpbmcgaW5mXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3ltYm9sXG4gICAgICAgICAgKHByaW50X3N0cmluZyBzdXAgKHByaW50X3N0cmluZyBjbG9zZV9yYW5nZSBsaXN0KSkpKVxuXG5sZXQgcHJpbnRfY291bnRlcl9zdGF0ZSAoYSwgYikgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfY291bnRlcl9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X3NpdGUgc2l0ZSBsaXN0ID1cbiAgbGV0IHNpdGVfbmFtZSwgcHJvcF9vcHQsIGJpbmRpbmdfb3B0LCBjb3VudGVyX29wdCA9IHNpdGUgaW5cbiAgbGV0IGxpc3QgPVxuICAgIG1hdGNoIGJpbmRpbmdfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLm1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfc3ltYm9sIGxpc3RcbiAgICB8IFNvbWUgUHVibGljX2RhdGEuRnJlZSAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgUHVibGljX2RhdGEuZnJlZV9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLldpbGRjYXJkIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBQdWJsaWNfZGF0YS53aWxkY2FyZF9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLkJvdW5kX3RvX3Vua25vd24gLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIFB1YmxpY19kYXRhLmJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ib2xcbiAgICAgICAgbGlzdFxuICAgIHwgU29tZSAoUHVibGljX2RhdGEuQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpKSAtPlxuICAgICAgbGV0IGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBQdWJsaWNfZGF0YS5iaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wgaW5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlXG4gICAgICAgIChQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfYmluZGluZ190eXBlIH5iaW5kaW5nX3R5cGVfc3ltYm9sIH5hZ2VudF9uYW1lXG4gICAgICAgICAgIH5zaXRlX25hbWUgKCkpXG4gICAgICAgIGxpc3RcbiAgICB8IFNvbWUgKFB1YmxpY19kYXRhLkJvdW5kX3RvIGkpIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSAoc3RyaW5nX29mX2ludCBpKSBsaXN0XG4gIGluXG4gIGxldCBsaXN0ID1cbiAgICBtYXRjaCBjb3VudGVyX29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxpc3RcbiAgICB8IFNvbWUgYSAtPiBwcmludF9jb3VudGVyX3N0YXRlIGEgbGlzdFxuICBpblxuICBsZXQgbGlzdCA9XG4gICAgbWF0Y2ggcHJvcF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgfCBTb21lIGEgLT4gcHJpbnRfc2luZ2xlX2ludGVybmFsX3N0YXRlIGEgbGlzdFxuICBpblxuICBwcmludF9zdHJpbmcgc2l0ZV9uYW1lIGxpc3RcblxubGV0IHByaW50X2FnZW50IGFnZW50IGxpc3QgPVxuICBsZXQgYWdlbnRfbmFtZSwgaW50ZXJmYWNlID0gYWdlbnQgaW5cbiAgbGV0IGxpc3QgPSBwcmludF9zdHJpbmcgXCIpXCIgbGlzdCBpblxuICBsZXQgbGlzdCA9XG4gICAgc25kXG4gICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gKGIsIGxpc3QpIHNpdGUgLT5cbiAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgICAgcHJpbnRfc3RyaW5nIFwiLFwiIGxpc3RcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBsaXN0ID0gcHJpbnRfc2l0ZSBzaXRlIGxpc3QgaW5cbiAgICAgICAgICAgdHJ1ZSwgbGlzdClcbiAgICAgICAgIChmYWxzZSwgbGlzdCkgaW50ZXJmYWNlKVxuICBpblxuICBsZXQgbGlzdCA9IEh0bWwudHh0IFwiKFwiIDo6IGxpc3QgaW5cbiAgbGV0IGxpc3QgPSBIdG1sLnR4dCBhZ2VudF9uYW1lIDo6IGxpc3QgaW5cbiAgbGlzdFxuXG5sZXQgcHJpbnRfc2l0ZV9ncmFwaCBhZ2VudF9saXN0IGxpc3QgPVxuICBzbmRcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIChiLCBsaXN0KSBhZ2VudCAtPlxuICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICBwcmludF9zdHJpbmcgXCIsXCIgbGlzdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbGlzdFxuICAgICAgICAgaW5cbiAgICAgICAgIHRydWUsIHByaW50X2FnZW50IGFnZW50IGxpc3QpXG4gICAgICAgKGZhbHNlLCBsaXN0KSAoTGlzdC5yZXYgYWdlbnRfbGlzdCkpXG5cbmxldCBwcmludF9leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgbWggPVxuICBsZXQgdW5jYXVnaHQgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IG1oIGluXG4gIGxldCBjYXVnaHQgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBtaCBpblxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIHggbCAtPlxuICAgICAgSHRtbC5wXG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX2NhdWdodCB4KTtcbiAgICAgICAgXVxuICAgICAgOjogbClcbiAgICBjYXVnaHRcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHggLT5cbiAgICAgICAgIEh0bWwucFxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF91bmNhdWdodCB4KTtcbiAgICAgICAgICAgXSlcbiAgICAgICB1bmNhdWdodClcbiIsIm1vZHVsZSBEZWJ1Z1ByaW50IDogS2FwcGFfd2ViYXBwX2xpYl9ub19qc29vLkhvb2tlZC5EZWJ1Z1ByaW50ID0gc3RydWN0XG4gIGxldCBkZWJ1Z19wcmludCBzID1cbiAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIHMgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBTID0gS2FwcGFfd2ViYXBwX2xpYl9ub19qc29vLkhvb2tlZC5NYWtlUyAoRGVidWdQcmludClcbm1vZHVsZSBFID0gS2FwcGFfd2ViYXBwX2xpYl9ub19qc29vLkhvb2tlZC5NYWtlRSAoRGVidWdQcmludClcblxudHlwZSAnYSBzaWduYWwgPSAnYSBTLnRcbnR5cGUgJ2EgZXZlbnQgPSAnYSBFLnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEpzIHV0aWwgKilcbigqIHJlZmVyZW5jZXNcbiAgIGh0dHA6Ly90b3NzLnNvdXJjZWZvcmdlLm5ldC9vY2FtbC5odG1sXG4gICBodHRwOi8vcGVwcGVybWludC5qcC90ZW1wL2FvL2FvLm1sXG4qKVxubGV0IHByb3RvdHlwZSA9IEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvci5wcm90b3R5cGVcIlxuXG5sZXQgY3JlYXRlX2hhbmRsZXIgbGFiZWwgPVxuICBsZXQgaGVhZCA6IGNoYXIgPSBDaGFyLnVwcGVyY2FzZV9hc2NpaSAoU3RyaW5nLmdldCBsYWJlbCAwKSBpblxuICBsZXQgdGFpbCA6IHN0cmluZyA9IFN0cmluZy5zdWIgbGFiZWwgMSAoU3RyaW5nLmxlbmd0aCBsYWJlbCAtIDEpIGluXG4gIGxldCBvbl9sYWJlbCA9IFwib25cIiBeIENoYXIuZXNjYXBlZCBoZWFkIF4gdGFpbCBpblxuICBsZXQgd3JhcHBlciBoYW5kbGVyID0gKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0aGlzXCIpIyNvbiBsYWJlbCBoYW5kbGVyIGluXG4gIGxldCAoKSA9IEpzLlVuc2FmZS5zZXQgcHJvdG90eXBlIChKcy5zdHJpbmcgb25fbGFiZWwpIHdyYXBwZXIgaW5cbiAgKClcblxuKCogYWRkIG9uIGhhbmRsZXJzIHRvIHRoZSBwcm90b3R5cGVzIHNvIHRoZXkgY2FuIGJlIHN0cm9uZ2x5IHR5cGVkICopXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXIgY3JlYXRlX2hhbmRsZXJcbiAgICBbXG4gICAgICBcImJlZm9yZUNoYW5nZVwiO1xuICAgICAgXCJiZWZvcmVDdXJzb3JFbnRlclwiO1xuICAgICAgXCJiZWZvcmVTZWxlY3Rpb25DaGFuZ2VcIjtcbiAgICAgIFwiYmx1clwiO1xuICAgICAgXCJjaGFuZ2VzXCI7XG4gICAgICBcImNsZWFyXCI7XG4gICAgICBcImNvbnRleHRtZW51XCI7XG4gICAgICBcImNvcHlcIjtcbiAgICAgIFwiY3Vyc29yQWN0aXZpdHlcIjtcbiAgICAgIFwiY3V0XCI7XG4gICAgICBcImRibGNsaWNrXCI7XG4gICAgICBcImRlbGV0ZVwiO1xuICAgICAgXCJkcmFnZW50ZXJcIjtcbiAgICAgIFwiZHJhZ2xlYXZlXCI7XG4gICAgICBcImRyYWdvdmVyXCI7XG4gICAgICBcImRyYWdzdGFydFwiO1xuICAgICAgXCJkcm9wXCI7XG4gICAgICBcImVsZWN0cmljSW5wdXRcIjtcbiAgICAgIFwiZm9jdXNcIjtcbiAgICAgIFwiZ3V0dGVyQ2xpY2tcIjtcbiAgICAgIFwiZ3V0dGVyQ29udGV4dE1lbnVcIjtcbiAgICAgIFwiaGlkZVwiO1xuICAgICAgXCJpbnB1dFJlYWRcIjtcbiAgICAgIFwia2V5SGFuZGxlZFwiO1xuICAgICAgXCJrZXlwcmVzc1wiO1xuICAgICAgXCJrZXl1cFwiO1xuICAgICAgXCJtb3VzZWRvd25cIjtcbiAgICAgIFwicGFzdGVcIjtcbiAgICAgIFwicmVkcmF3XCI7XG4gICAgICBcInJlbmRlckxpbmVcIjtcbiAgICAgIFwic2Nyb2xsXCI7XG4gICAgICBcInNjcm9sbEN1cnNvckludG9WaWV3XCI7XG4gICAgICBcInN3YXBEb2NcIjtcbiAgICAgIFwidG91Y2hzdGFydFwiO1xuICAgICAgXCJ1bmhpZGVcIjtcbiAgICAgIFwidXBkYXRlXCI7XG4gICAgICBcInZpZXdwb3J0Q2hhbmdlXCI7XG4gICAgICBcImNoYW5nZVwiO1xuICAgICAgXCJrZXlkb3duXCI7XG4gICAgXVxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjaCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCBsaW5lIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGRpbWVuc2lvbiA9IG9iamVjdFxuICBtZXRob2QgbGVmdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCByaWdodCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCB0b3AgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgYm90dG9tIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgcG9zaXRpb24gOiAoaW50IC0+IGludCAtPiBwb3NpdGlvbiBKcy50KSBKcy5jb25zdHIgPVxuICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyMuX1Bvc1xuXG50eXBlIHNldmVyaXR5ID0gRXJyb3IgfCBXYXJuaW5nXG5cbmNsYXNzIHR5cGUgbGludCA9IG9iamVjdFxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHNldmVyaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBtZXRob2QgZnJvbSA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdG9fIDogcG9zaXRpb24gSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2xpbnQgOiBsaW50IEpzLnQgSnMuY29uc3RyID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfbGludCB+KG1lc3NhZ2UgOiBzdHJpbmcpIH4oc2V2ZXJpdHkgOiBzZXZlcml0eSlcbiAgICB+KGZyb20gOiBwb3NpdGlvbiBKcy50KSB+KHRvXyA6IHBvc2l0aW9uIEpzLnQpIDogbGludCBKcy50ID1cbiAgbGV0IHJlc3VsdCA9IG5ldyVqcyBjb25zdHJ1Y3Rvcl9saW50IGluXG4gIGxldCAoKSA9IHJlc3VsdCMjLm1lc3NhZ2UgOj0gSnMuc3RyaW5nIG1lc3NhZ2UgaW5cbiAgbGV0ICgpID1cbiAgICByZXN1bHQjIy5zZXZlcml0eSA6PVxuICAgICAgbWF0Y2ggc2V2ZXJpdHkgd2l0aFxuICAgICAgfCBFcnJvciAtPiBKcy5zdHJpbmcgXCJlcnJvclwiXG4gICAgICB8IFdhcm5pbmcgLT4gSnMuc3RyaW5nIFwid2FybmluZ1wiXG4gIGluXG4gIGxldCAoKSA9IHJlc3VsdCMjLmZyb20gOj0gZnJvbSBpblxuICBsZXQgKCkgPSByZXN1bHQjIy50b18gOj0gdG9fIGluXG4gIHJlc3VsdFxuXG5jbGFzcyB0eXBlIGNoYW5nZSA9IG9iamVjdFxuICBtZXRob2QgZnJvbSA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdG9fIDogcG9zaXRpb24gSnMudCBKcy5wcm9wXG4gIG1ldGhvZCB0ZXh0IDogSnMuc3RyaW5nX2FycmF5IEpzLnQgSnMucHJvcFxuICBtZXRob2QgcmVtb3ZlZCA6IHN0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIG9yaWdpbiA6IHN0cmluZyBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfY2hhbmdlIDogY2hhbmdlIEpzLnQgSnMuY29uc3RyID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5sZXQgY3JlYXRlX2NoYW5nZSAoKSA6IGNoYW5nZSBKcy50ID0gbmV3JWpzIGNvbnN0cnVjdG9yX2NoYW5nZVxuXG5jbGFzcyB0eXBlIGNvZGVtaXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGdldFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuICBtZXRob2Qgc2V0VmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBKcy5tZXRoXG5cbiAgKCogUHJvZ3JhbW1hdGljYWxseSBzZXQgdGhlIHNpemUgb2YgdGhlIGVkaXRvciAob3ZlcnJpZGluZyB0aGVcbiAgICAgYXBwbGljYWJsZSBDU1MgcnVsZXMpLiB3aWR0aCBhbmQgaGVpZ2h0IGNhbiBiZSBlaXRoZXIgbnVtYmVyc1xuICAgICAoaW50ZXJwcmV0ZWQgYXMgcGl4ZWxzKSBvciBDU1MgdW5pdHMgKFwiMTAwJVwiLCBmb3IgZXhhbXBsZSkuXG4gICAgIFlvdSBjYW4gcGFzcyBudWxsIGZvciBlaXRoZXIgb2YgdGhlbSB0byBpbmRpY2F0ZSB0aGF0IHRoYXRcbiAgICAgZGltZW5zaW9uIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAgKilcbiAgbWV0aG9kIHNldFNpemUgOiBpbnQgSnMudCBKcy5vcHQgLT4gaW50IEpzLnQgSnMub3B0IC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIFNjcm9sbCB0aGUgZWRpdG9yIHRvIGEgZ2l2ZW4gKHBpeGVsKSBwb3NpdGlvbi4gQm90aCBhcmd1bWVudHNcbiAgICAgbWF5IGJlIGxlZnQgYXMgbnVsbCBvciB1bmRlZmluZWQgdG8gaGF2ZSBubyBlZmZlY3QuICopXG4gIG1ldGhvZCBzY3JvbGxUbyA6IGludCBKcy5vcHQgLT4gaW50IEpzLm9wdCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2hhckNvb3JkcyA6XG4gICAgcG9zaXRpb24gSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gZGltZW5zaW9uIEpzLnQgSnMubWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JvbGxlckVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuICBtZXRob2Qgb24gOiBKcy5qc19zdHJpbmcgSnMudCAtPiAoRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBmaXJlZCB3aGVuIGNvbnRlbnQgaXMgY2hhbmdlZCAqKVxuICBtZXRob2Qgb25DaGFuZ2UgOiAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJhdGNoZWQgY2hhbmdlZCBvcGVyYXRpb24gKilcbiAgbWV0aG9kIG9uQ2hhbmdlcyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMuanNfYXJyYXkgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiZWZvcmUgYSBjaGFuZ2UgaXMgYXBwbGllZCAqKVxuICBtZXRob2Qgb25CZWZvcmVDaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogY3Vyc29yIG1vdmVzLCBvciBhbnkgY2hhbmdlICopXG4gIG1ldGhvZCBvbkN1cnNvckFjdGl2aXR5IDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIG5ldyBpbnB1dCBpcyByZWFkICopXG4gIG1ldGhvZCBvbktleUhhbmRsZWQgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIHdoZW4gbmV3IGlucHV0IGlzIHJlYWQgKilcbiAgbWV0aG9kIG9uSW5wdXRSZWFkIDogKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIHRleHQgbWF0Y2hlcyBlbGVjdHJpYyBwYXR0ZXJuICopXG4gIG1ldGhvZCBvbkVsZWN0cmljSW5wdXQgOiAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJlZm9yZSBhIHNlbGVjdGlvbiBpcyBtb3ZlZCBUT0RPICopXG4gIG1ldGhvZCBvbkJlZm9yZVNlbGVjdGlvbkNoYW5nZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiAnYSAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB0aGUgdmlldyBwb3J0IGNoYW5nZWQgKilcbiAgbWV0aG9kIG9uVmlld3BvcnRDaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gaW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogIGRvY3VtZW50IHN3YXBwZWQgKilcbiAgbWV0aG9kIG9uU3dhcERvYyA6IChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZ3V0dGVyIGNsaWNrZWQgKilcbiAgbWV0aG9kIG9uR3V0dGVyQ2xpY2sgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT5cbiAgICB1bml0IEpzLm1ldGhcblxuICAoKiBjb250ZXh0IG1lbnUgZXZlbnQgZnJvbSBndXR0ZXIgKilcbiAgbWV0aG9kIG9uR3V0dGVyQ29udGV4dE1lbnUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT5cbiAgICB1bml0IEpzLm1ldGhcblxuICAoKiBmb2N1cyAqKVxuICBtZXRob2Qgb25Gb2N1cyA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmx1ciAqKVxuICBtZXRob2Qgb25CbHVyIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBzY3JvbGwgKilcbiAgbWV0aG9kIG9uU2Nyb2xsIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBjdXJzb3Igc2Nyb2xsZWQgaW4gdmlldyopXG4gIG1ldGhvZCBvblNjcm9sbEN1cnNvckludG9WaWV3IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZG9tIHVwZGF0ZWQgKilcbiAgbWV0aG9kIG9uVXBkYXRlIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBsaW5lIHJlbmRlcmVkICopXG4gIG1ldGhvZCBvblJlbmRlckxpbmUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Nb3VzZWRvd24gOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EYmxjbGljayA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvblRvdWNoc3RhcnQgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Db250ZXh0bWVudSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbktleWRvd24gOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXlwcmVzcyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbktleXVwIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ3V0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ29weSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvblBhc3RlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ3N0YXJ0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ2VudGVyIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ292ZXIgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EcmFnbGVhdmUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Ecm9wIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRGVsZXRlIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkJlZm9yZUN1cnNvckVudGVyIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkNsZWFyIDogKHBvc2l0aW9uIEpzLnQgLT4gcG9zaXRpb24gSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uSGlkZSA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25VbmhpZGUgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uUmVkcmF3IDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBzZXRDdXJzb3IgOiBwb3NpdGlvbiBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgZ2V0Q3Vyc29yIDogcG9zaXRpb24gSnMudCBKcy5tZXRoXG4gIG1ldGhvZCBzZXRTZWxlY3Rpb24gOiBwb3NpdGlvbiBKcy50IC0+IHBvc2l0aW9uIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBwZXJmb3JtTGludCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgbGludF9jb25maWd1cmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBkZWxheSA6IGludCBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGFzeW5jIDogYm9vbCBKcy50IEpzLnByb3BcblxuICBtZXRob2QgZ2V0QW5ub3RhdGlvbnMgOlxuICAgIChKcy5qc19zdHJpbmcgLT5cbiAgICBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCAtPlxuICAgIGNvZGVtaXJyb3IgSnMudCAtPlxuICAgIGxpbnQgSnMudCBKcy5qc19hcnJheSBKcy50KVxuICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbnRPbkNoYW5nZSA6IGJvb2wgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvbiA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50IEpzLmNvbnN0ciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX2xpbnRfY29uZmlndXJhdGlvbiAoKSA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgbmV3JWpzIGNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvblxuXG5jbGFzcyB0eXBlIGNvbmZpZ3VyYXRpb24gPSBvYmplY3RcbiAgKCogVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBlZGl0b3IuICopXG4gIG1ldGhvZCB2YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgbW9kZSB0byB1c2UuICopXG4gIG1ldGhvZCBtb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIEV4cGxpY2l0bHkgc2V0IHRoZSBsaW5lIHNlcGFyYXRvciBmb3IgdGhlIGVkaXRvci4gICopXG4gIG1ldGhvZCBsaW5lU2VwYXJhdG9yIDogSnMuanNfc3RyaW5nIEpzLm9wdCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgdGhlbWUgdG8gc3R5bGUgdGhlIGVkaXRvciB3aXRoLiAqKVxuICBtZXRob2QgdGhlbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogSG93IG1hbnkgc3BhY2VzIGEgYmxvY2sgc2hvdWxkIGJlIGluZGVudGVkLiAgKilcbiAgbWV0aG9kIGluZGVudFVuaXQgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogV2hldGhlciB0byB1c2UgdGhlIGNvbnRleHQtc2Vuc2l0aXZlIGluZGVudGF0aW9uICopXG4gIG1ldGhvZCBzbWFydEluZGVudCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIHdpZHRoIG9mIGEgdGFiIGNoYXJhY3Rlci4gKilcbiAgbWV0aG9kIHRhYlNpemUgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIGZpcnN0IE4qdGFiU2l6ZSBpbiBpbmRlbnRhdGlvbiBzaG91bGQgTiB0YWJzLiAqKVxuICBtZXRob2QgaW5kZW50V2l0aFRhYnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSBlZGl0b3Igc2hvdWxkIHJlLWluZGVudCB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtZXRob2QgZWxlY3RyaWNDaGFycyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBkZXRlcm1pbmUgc3BlY2lhbCBwbGFjZWhvbGRlci4gKilcbiAgbWV0aG9kIHNwZWNpYWxDaGFycyA6IEpzLnJlZ0V4cCBKcy50IEpzLnByb3BcblxuICAoKiBBIGZ1bmN0aW9uIGlkZW50aWZpZXMgc3BlY2lhbENoYXJzIGFuZCBwcm9kdWNlcyBhIERPTSBub2RlICopXG4gIG1ldGhvZCBzcGVjaWFsQ2hhclBsYWNlaG9sZGVyIDogKGludCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQpIEpzLnByb3BcblxuICAoKiBIb3Jpem9udGFsIGN1cnNvciBtb3ZlbWVudCB0aHJvdWdoIHJpZ2h0LXRvLWxlZnQuICopXG4gIG1ldGhvZCBydGxNb3ZlVmlzdWFsbHkgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIENvbmZpZ3VyZXMgdGhlIGtleSBtYXAgdG8gdXNlLiAqKVxuICBtZXRob2Qga2V5TWFwIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIHNwZWNpZnkgZXh0cmEga2V5IGJpbmRpbmdzIGZvciB0aGUgZWRpdG9yICopXG4gIG1ldGhvZCBleHRyYUtleXMgOiAnYSBKcy5wcm9wXG5cbiAgKCogU2Nyb2xsIG9yIHdyYXAgZm9yIGxvbmcgbGluZXMgKilcbiAgbWV0aG9kIGxpbmVXcmFwcGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogIFNob3cgbGluZSBudW1iZXJzIHRvIHRoZSBsZWZ0IG9mIHRoZSBlZGl0b3IgKilcbiAgbWV0aG9kIGxpbmVOdW1iZXJzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBBdCB3aGljaCBudW1iZXIgdG8gc3RhcnQgY291bnRpbmcgbGluZXMuIERlZmF1bHQgaXMgMS4gKilcbiAgbWV0aG9kIGZpcnN0TGluZU51bWJlciA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZm9ybWF0IGxpbmUgbnVtYmVycy4gKilcbiAgbWV0aG9kIGxpbmVOdW1iZXJGb3JtYXR0ZXIgOiAoaW50IEpzLnQgLT4gSnMuanNfc3RyaW5nKSBKcy50IEpzLnByb3BcblxuICAoKiBBZGQgZXh0cmEgZ3V0dGVycyAqKVxuICBtZXRob2QgZ3V0dGVycyA6IEpzLnN0cmluZ19hcnJheSBKcy50IEpzLnByb3BcblxuICAoKiBHdXR0ZXIgc2Nyb2xscyBhbG9uZyB3aXRoIHRoZSBjb250ZW50IGhvcml6b250YWxseSAqKVxuICBtZXRob2QgZml4ZWRHdXR0ZXIgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIENob29zZXMgYSBzY3JvbGxiYXIgaW1wbGVtZW50YXRpb24uICopXG4gIG1ldGhvZCBzY3JvbGxiYXJTdHlsZSA6IHN0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBjb3ZlciBndXR0ZXIgd2l0aCB3aXRoIGNsYXNzIENvZGVNaXJyb3ItZ3V0dGVyLWZpbGxlci4gKilcbiAgbWV0aG9kIGNvdmVyR3V0dGVyTmV4dFRvU2Nyb2xsYmFyIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBTZWxlY3RzIHRoZSB3YXkgQ29kZU1pcnJvciBoYW5kbGVzIGlucHV0IGFuZCBmb2N1cy4gKilcbiAgbWV0aG9kIGlucHV0U3R5bGUgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogZGlzYWJsZSBlZGl0aW5nIG9mIHRoZSBlZGl0b3IgY29udGVudCAqKVxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHRoZSBjdXJzb3Igc2hvdWxkIGJlIGRyYXduIHdoZW4gYSBzZWxlY3Rpb24gaXMgYWN0aXZlLiAqKVxuICBtZXRob2Qgc2hvd0N1cnNvcldoZW5TZWxlY3RpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGNvcHkgb3IgY3V0IHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0aW9uIHdpbGwgY29weSBvciBjdXQgd2hvbGUgbGluZXMgKilcbiAgbWV0aG9kIGxpbmVXaXNlQ29weUN1dCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogV2hlbiBwYXN0aW5nIHNvbWV0aGluZyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZSAobm90IGZyb20gdGhlXG4gICAgIGVkaXRvciBpdHNlbGYpLCBpZiB0aGUgbnVtYmVyIG9mIGxpbmVzIG1hdGNoZXMgdGhlIG51bWJlciBvZlxuICAgICBzZWxlY3Rpb24sIENvZGVNaXJyb3Igd2lsbCBieSBkZWZhdWx0IGluc2VydCBvbmUgbGluZSBwZXJcbiAgICAgc2VsZWN0aW9uLiBZb3UgY2FuIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgdGhhdFxuICAgICBiZWhhdmlvci4gKilcbiAgbWV0aG9kIHBhc3RlTGluZXNQZXJTZWxlY3Rpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIERldGVybWluZXMgd2hldGhlciBtdWx0aXBsZSBzZWxlY3Rpb25zIGFyZSBqb2luZWQgYXMgc29vbiBhc1xuICAgICB0aGV5IHRvdWNoICh0aGUgZGVmYXVsdCkgb3Igb25seSB3aGVuIHRoZXkgb3ZlcmxhcCAodHJ1ZSkuICopXG4gIG1ldGhvZCBzZWxlY3Rpb25zTWF5VG91Y2ggOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIG1heGltdW0gbnVtYmVyIG9mIHVuZG8gKilcbiAgbWV0aG9kIHVuZG9EZXB0aCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBtaWxsaXNlY29uZHMgb2YgaW5hY3Rpdml0eSB0byBjcmVhdGUgYSBuZXcgaGlzdG9yeSBldmVudCAqKVxuICBtZXRob2QgaGlzdG9yeUV2ZW50RGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogdGFiIGluZGV4IG9mIGVkaXRvciAqKVxuICBtZXRob2QgdGFiaW5kZXggOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQ29kZU1pcnJvciBmb2N1cyBpdHNlbGYgb24gaW5pdGlhbGl6YXRpb24gKilcbiAgbWV0aG9kIGF1dG9mb2N1cyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogZW5hYmxlIGRyYWctYW5kLWRyb3AgKilcbiAgbWV0aG9kIGRyYWdEcm9wIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiB3aGVuIHNldCBmaWxlcyB3aXQgbWltZSB0eXBlIGNhbiBiZSBkcm9wcGVkIGludG8gdGhlIGVkaXRvciAqKVxuICBtZXRob2QgYWxsb3dEcm9wRmlsZVR5cGVzIDogSnMuc3RyaW5nX2FycmF5IEpzLm9wdCBKcy50IEpzLnByb3BcblxuICAoKiBIYWxmLXBlcmlvZCBpbiBtaWxsaXNlY29uZHMgdXNlZCBmb3IgY3Vyc29yIGJsaW5raW5nLiAqKVxuICBtZXRob2QgY3Vyc29yQmxpbmtSYXRlIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIEhvdyBtdWNoIGV4dHJhIHNwYWNlIHRvIGFsd2F5cyBrZWVwIGFib3ZlIGFuZCBiZWxvdyB0aGUgY3Vyc29yICopXG4gIG1ldGhvZCBjdXJzb3JTY3JvbGxNYXJnaW4gOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogRGV0ZXJtaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSBjdXJzb3IuICopXG4gIG1ldGhvZCBjdXJzb3JIZWlnaHQgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogdGhlIGNvbnRleHQgbWVudSBpcyBvcGVuZWQgd2l0aCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlXG4gICAgIGN1cnJlbnQgc2VsZWN0aW9uLCBtb3ZlIGN1cnNvciB0byB0aGUgcG9pbnQgb2YgdGhlIGNsaWNrKilcbiAgbWV0aG9kIHJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudSA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogdGltZSB0byBydW4gaGlnaGxpZ2h0aW5nIHRocmVhZCAqKVxuICBtZXRob2Qgd29ya1RpbWUgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogZGVsYXkgdG8gcnVuIGhpZ2hsaWdodGluZyB0aHJlYWQgKilcbiAgbWV0aG9kIHdvcmtEZWxheSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBob3cgb2Z0ZW4gdG8gcG9sbCBmb3IgY2hhbmdlcyAqKVxuICBtZXRob2QgcG9sbEludGVydmFsIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIGNvbWJpbmUgdG9rZW5zIHRvIGEgc2luZ2xlIHNwYW4gKilcbiAgbWV0aG9kIGZsYXR0ZW5TcGFucyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogcHJlZml4IGNzcyAqKVxuICBtZXRob2QgYWRkTW9kZUNsYXNzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBsZW5ndGggdG8gaGlnaGxpZ2h0ICopXG4gIG1ldGhvZCBtYXhIaWdobGlnaHRMZW5ndGggOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGFtb3VudCBvZiBsaW5lcyB0aGF0IGFyZSByZW5kZXJlZCBhYm92ZSBhbmQgYmVsb3cgdGhlXG4gICAgIHZpc2libGUgZG9jdW1lbnQqKVxuICBtZXRob2Qgdmlld3BvcnRNYXJnaW4gOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQURET04gc2VsZWN0aW9uL2FjdGl2ZS1saW5lLmpzICopXG4gIG1ldGhvZCBzdHlsZUFjdGl2ZUxpbmUgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIEFERE9OIGxpbnQvbGludC5qcyAqKVxuICBtZXRob2QgbGludCA6IGxpbnRfY29uZmlndXJhdGlvbiBKcy50IEpzLnByb3BcblxuICAoKiBBRERPTiBlZGl0L21hdGNoYnJhY2tldHMuanMgKilcbiAgbWV0aG9kIG1hdGNoQnJhY2tldHMgOiBib29sIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uIEpzLnQgPVxuICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyMuZGVmYXVsdHNcblxubGV0IGZyb21UZXh0QXJlYSAoZG9tIDogRG9tX2h0bWwuZWxlbWVudCBKcy50KVxuICAgIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbiBKcy50KSA6IGNvZGVtaXJyb3IgSnMudCA9XG4gICgqIGxldCAoKSA9IEpzLmRlYnVnZ2VyKCkgaW4gKilcbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjZnJvbVRleHRBcmVhXG4gICAgKEpzLlVuc2FmZS5pbmplY3QgZG9tKVxuICAgIChKcy5VbnNhZmUuaW5qZWN0IGNvbmZpZ3VyYXRpb24pXG5cbmxldCBzZXRMaW50Q29uZmlnIChjbSA6IGNvZGVtaXJyb3IgSnMudCkgPVxuICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpICMjIExpbnRTdGF0ZSBjbVxuXG5jbGFzcyB0eXBlIGNvbW1hbmRzID0gb2JqZWN0XG4gIG1ldGhvZCBzYXZlIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSBKcy5wcm9wXG5lbmRcblxubGV0IGNvbW1hbmRzIDogY29tbWFuZHMgSnMudCA9IChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjIy5jb21tYW5kc1xuIiwibGV0IHJldl9zcGxpdCBsID1cbiAgbGV0IHJlYyBpbm5lciB4cyB5cyA9IGZ1bmN0aW9uXG4gICAgfCAoeCwgeSkgOjogeHlzIC0+XG4gICAgICAgaW5uZXIgKHg6OnhzKSAoeTo6eXMpIHh5c1xuICAgIHwgW10gLT4gKHhzLCB5cylcbiAgaW5cbiAgaW5uZXIgW10gW10gbFxuXG50eXBlIHdyYXAgPSBbXG4gIHwgYFdyYXBfYXRvbXNcbiAgfCBgQWx3YXlzX3dyYXBcbiAgfCBgTmV2ZXJfd3JhcFxuICB8IGBGb3JjZV9icmVha3NcbiAgfCBgRm9yY2VfYnJlYWtzX3JlY1xuICB8IGBOb19icmVha3Ncbl1cblxudHlwZSBsYWJlbF9icmVhayA9IFtcbiAgfCBgQXV0b1xuICB8IGBBbHdheXNcbiAgfCBgQWx3YXlzX3JlY1xuICB8IGBOZXZlclxuXVxuXG50eXBlIHN0eWxlX25hbWUgPSBzdHJpbmdcbnR5cGUgc3R5bGUgPSB7XG4gIHRhZ19vcGVuIDogc3RyaW5nO1xuICB0YWdfY2xvc2UgOiBzdHJpbmdcbn1cblxudHlwZSBhdG9tX3BhcmFtID0ge1xuICBhdG9tX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBhdG9tID0ge1xuICBhdG9tX3N0eWxlID0gTm9uZVxufVxuXG50eXBlIGxpc3RfcGFyYW0gPSB7XG4gIHNwYWNlX2FmdGVyX29wZW5pbmcgOiBib29sO1xuICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgOiBib29sO1xuICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yIDogYm9vbDtcbiAgc2VwYXJhdG9yc19zdGlja19sZWZ0IDogYm9vbDtcbiAgc3BhY2VfYmVmb3JlX2Nsb3NpbmcgOiBib29sO1xuICBzdGlja190b19sYWJlbCA6IGJvb2w7XG4gIGFsaWduX2Nsb3NpbmcgOiBib29sO1xuICB3cmFwX2JvZHkgOiB3cmFwO1xuICBpbmRlbnRfYm9keSA6IGludDtcbiAgbGlzdF9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBvcGVuaW5nX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIGJvZHlfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgc2VwYXJhdG9yX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIGNsb3Npbmdfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbn1cblxubGV0IGxpc3QgPSB7XG4gIHNwYWNlX2FmdGVyX29wZW5pbmcgPSB0cnVlO1xuICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgPSB0cnVlO1xuICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gZmFsc2U7XG4gIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWU7XG4gIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gdHJ1ZTtcbiAgc3RpY2tfdG9fbGFiZWwgPSB0cnVlO1xuICBhbGlnbl9jbG9zaW5nID0gdHJ1ZTtcbiAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gIGluZGVudF9ib2R5ID0gMjtcbiAgbGlzdF9zdHlsZSA9IE5vbmU7XG4gIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICBib2R5X3N0eWxlID0gTm9uZTtcbiAgc2VwYXJhdG9yX3N0eWxlID0gTm9uZTtcbiAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG59XG5cbnR5cGUgbGFiZWxfcGFyYW0gPSB7XG4gIGxhYmVsX2JyZWFrOiBsYWJlbF9icmVhaztcbiAgc3BhY2VfYWZ0ZXJfbGFiZWwgOiBib29sO1xuICBpbmRlbnRfYWZ0ZXJfbGFiZWwgOiBpbnQ7XG4gIGxhYmVsX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBsYWJlbCA9IHtcbiAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgc3BhY2VfYWZ0ZXJfbGFiZWwgPSB0cnVlO1xuICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICBsYWJlbF9zdHlsZSA9IE5vbmU7XG59XG5cbnR5cGUgdCA9XG4gICAgQXRvbSBvZiBzdHJpbmcgKiBhdG9tX3BhcmFtXG4gIHwgTGlzdCBvZiAoc3RyaW5nICogc3RyaW5nICogc3RyaW5nICogbGlzdF9wYXJhbSkgKiB0IGxpc3RcbiAgfCBMYWJlbCBvZiAodCAqIGxhYmVsX3BhcmFtKSAqIHRcbiAgfCBDdXN0b20gb2YgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdClcblxudHlwZSBlc2NhcGUgPVxuICAgIFsgYE5vbmVcbiAgICB8IGBFc2NhcGUgb2ZcbiAgICAgICAgKChzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0KSAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0KVxuICAgIHwgYEVzY2FwZV9zdHJpbmcgb2YgKHN0cmluZyAtPiBzdHJpbmcpIF1cblxudHlwZSBzdHlsZXMgPSAoc3R5bGVfbmFtZSAqIHN0eWxlKSBsaXN0XG5cbigqXG4gICBUcmFuc2Zvcm0gYSB0cmVlIHN0YXJ0aW5nIGZyb20gdGhlIGxlYXZlcywgcHJvcGFnYXRpbmcgYW5kIG1lcmdpbmdcbiAgIGFjY3VtdWxhdG9ycyB1bnRpbCByZWFjaGluZyB0aGUgcm9vdC5cbiopXG5sZXQgcHJvcGFnYXRlX2Zyb21fbGVhZl90b19yb290XG4gIH5pbml0X2FjYyAgKCogY3JlYXRlIGluaXRpYWwgYWNjdW11bGF0b3IgZm9yIGEgbGVhZiAqKVxuICB+bWVyZ2VfYWNjICgqIG1lcmdlIHR3byBhY2N1bXVsYXRvcnMgY29taW5nIGZyb20gY2hpbGQgbm9kZXMgKilcbiAgfm1hcF9ub2RlICAoKiAobm9kZSwgYWNjKSAtPiAobm9kZSwgYWNjKSAqKVxuICB4ID1cblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEF0b20gXyAtPlxuICAgICAgICBsZXQgYWNjID0gaW5pdF9hY2MgeCBpblxuICAgICAgICBtYXBfbm9kZSB4IGFjY1xuICAgIHwgTGlzdCAocGFyYW0sIGNoaWxkcmVuKSAtPlxuICAgICAgICBsZXQgbmV3X2NoaWxkcmVuLCBhY2NzID0gcmV2X3NwbGl0IChMaXN0LnJldl9tYXAgYXV4IGNoaWxkcmVuKSBpblxuICAgICAgICBsZXQgYWNjID0gTGlzdC5mb2xkX2xlZnQgbWVyZ2VfYWNjIChpbml0X2FjYyB4KSBhY2NzIGluXG4gICAgICAgIG1hcF9ub2RlIChMaXN0IChwYXJhbSwgbmV3X2NoaWxkcmVuKSkgYWNjXG4gICAgfCBMYWJlbCAoKHgxLCBwYXJhbSksIHgyKSAtPlxuICAgICAgICBsZXQgYWNjMCA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbGV0IG5ld194MSwgYWNjMSA9IGF1eCB4MSBpblxuICAgICAgICBsZXQgbmV3X3gyLCBhY2MyID0gYXV4IHgyIGluXG4gICAgICAgIGxldCBhY2MgPSBtZXJnZV9hY2MgKG1lcmdlX2FjYyBhY2MwIGFjYzEpIGFjYzIgaW5cbiAgICAgICAgbWFwX25vZGUgKExhYmVsICgobmV3X3gxLCBwYXJhbSksIG5ld194MikpIGFjY1xuICAgIHwgQ3VzdG9tIF8gLT5cbiAgICAgICAgbGV0IGFjYyA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbWFwX25vZGUgeCBhY2NcbiAgaW5cbiAgYXV4IHhcblxuKCpcbiAgIENvbnZlcnQgd3JhcHBhYmxlIGxpc3RzIGludG8gdmVydGljYWwgbGlzdHMgaWYgYW55IG9mIHRoZWlyIGRlc2NlbmRhbnRzXG4gICBoYXMgdGhlIGF0dHJpYnV0ZSB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYy5cbiopXG5sZXQgcHJvcGFnYXRlX2ZvcmNlZF9icmVha3MgeCA9XG4gICgqIGFjYyA9IHdoZXRoZXIgdG8gZm9yY2UgYnJlYWtzIGluIHdyYXBwYWJsZSBsaXN0cyBvciBsYWJlbHMgKilcbiAgbGV0IGluaXRfYWNjID0gZnVuY3Rpb25cbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3NfcmVjOyBfIH0pLCBfKVxuICAgIHwgTGFiZWwgKChfLCB7IGxhYmVsX2JyZWFrID0gYEFsd2F5c19yZWM7IF8gfSksIF8pIC0+IHRydWVcbiAgICB8IEF0b20gX1xuICAgIHwgTGFiZWwgX1xuICAgIHwgQ3VzdG9tIF9cbiAgICB8IExpc3QgXyAtPiBmYWxzZVxuICBpblxuICBsZXQgbWVyZ2VfYWNjIGZvcmNlX2JyZWFrczEgZm9yY2VfYnJlYWtzMiA9XG4gICAgZm9yY2VfYnJlYWtzMSB8fCBmb3JjZV9icmVha3MyXG4gIGluXG4gIGxldCBtYXBfbm9kZSB4IGZvcmNlX2JyZWFrcyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYzsgXyB9KSwgXykgLT4geCwgdHJ1ZVxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrczsgXyB9KSwgXykgLT4geCwgZm9yY2VfYnJlYWtzXG5cbiAgICB8IExpc3QgKChvcCwgc2VwLCBjbCwgKHsgd3JhcF9ib2R5ID0gKGBXcmFwX2F0b21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYE5ldmVyX3dyYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQWx3YXlzX3dyYXApOyBfIH0gYXMgcCkpLFxuICAgICAgICAgICAgY2hpbGRyZW4pIC0+XG4gICAgICAgIGlmIGZvcmNlX2JyZWFrcyB0aGVuXG4gICAgICAgICAgbGV0IHAgPSB7IHAgd2l0aCB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzIH0gaW5cbiAgICAgICAgICBMaXN0ICgob3AsIHNlcCwgY2wsIHApLCBjaGlsZHJlbiksIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHgsIGZhbHNlXG5cbiAgICB8IExhYmVsICgoYSwgKHsgbGFiZWxfYnJlYWsgPSBgQXV0bzsgXyB9IGFzIGxwKSksIGIpIC0+XG4gICAgICAgIGlmIGZvcmNlX2JyZWFrcyB0aGVuXG4gICAgICAgICAgbGV0IGxwID0geyBscCB3aXRoIGxhYmVsX2JyZWFrID0gYEFsd2F5cyB9IGluXG4gICAgICAgICAgTGFiZWwgKChhLCBscCksIGIpLCB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB4LCBmYWxzZVxuXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgTm9fYnJlYWtzOyBfIH0pLCBfKVxuICAgIHwgTGFiZWwgKChfLCB7IGxhYmVsX2JyZWFrID0gKGBBbHdheXMgfCBgQWx3YXlzX3JlYyB8IGBOZXZlcik7IF8gfSksIF8pXG4gICAgfCBBdG9tIF9cbiAgICB8IEN1c3RvbSBfIC0+IHgsIGZvcmNlX2JyZWFrc1xuICBpblxuICBsZXQgbmV3X3gsIF9mb3JjZWRfYnJlYWtzID1cbiAgICBwcm9wYWdhdGVfZnJvbV9sZWFmX3RvX3Jvb3RcbiAgICAgIH5pbml0X2FjY1xuICAgICAgfm1lcmdlX2FjY1xuICAgICAgfm1hcF9ub2RlXG4gICAgICB4XG4gIGluXG4gIG5ld194XG5cbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4gICgqXG4gICAgIFJld3JpdGUgdGhlIHRyZWUgdG8gYmUgcHJpbnRlZC5cbiAgICAgQ3VycmVudGx5LCB0aGlzIGlzIHVzZWQgb25seSB0byBoYW5kbGUgYEZvcmNlX2JyZWFrc19yZWMuXG4gICopXG4gIGxldCByZXdyaXRlIHggPSBwcm9wYWdhdGVfZm9yY2VkX2JyZWFrcyB4XG5cbiAgKCpcbiAgICBSZWxpZXMgb24gdGhlIGZhY3QgdGhhdCBtYXJrX29wZW5fdGFnIGFuZCBtYXJrX2Nsb3NlX3RhZ1xuICAgIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSBjYWxsaW5nIHBwX291dHB1dF9zdHJpbmcgb25jZS5cbiAgICBJdCdzIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9uIGFsdGhvdWdoIG5vdCBndWFyYW50ZWVkIGJ5IHRoZVxuICAgIGRvY3VtZW50YXRpb24gb2YgdGhlIEZvcm1hdCBtb2R1bGUuXG4gICopXG4gIGxldCBzZXRfZXNjYXBlIGZtdCBlc2NhcGUgPVxuICAgIGxldCBwcmludDAsIGZsdXNoMCA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgZm10ICgpIGluXG4gICAgbGV0IHRhZ2YwID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG5cbiAgICBsZXQgaXNfdGFnID0gcmVmIGZhbHNlIGluXG5cbiAgICBsZXQgbW90IHRhZyA9XG4gICAgICBpc190YWcgOj0gdHJ1ZTtcbiAgICAgIHRhZ2YwLm1hcmtfb3Blbl9zdGFnIHRhZ1xuICAgIGluXG5cbiAgICBsZXQgbWN0IHRhZyA9XG4gICAgICBpc190YWcgOj0gdHJ1ZTtcbiAgICAgIHRhZ2YwLm1hcmtfY2xvc2Vfc3RhZyB0YWdcbiAgICBpblxuXG4gICAgbGV0IHByaW50IHMgcCBuID1cbiAgICAgIGlmICFpc190YWcgdGhlblxuICAgICAgICAocHJpbnQwIHMgcCBuO1xuICAgICAgICAgaXNfdGFnIDo9IGZhbHNlKVxuICAgICAgZWxzZVxuICAgICAgICBlc2NhcGUgcHJpbnQwIHMgcCBuXG4gICAgaW5cblxuICAgIGxldCB0YWdmID0ge1xuICAgICAgdGFnZjAgd2l0aFxuICAgICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0XG4gICAgfVxuICAgIGluXG4gICAgRm9ybWF0LnBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBmbXQgcHJpbnQgZmx1c2gwO1xuICAgIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCB0YWdmXG5cblxuICBsZXQgc2V0X2VzY2FwZV9zdHJpbmcgZm10IGVzYyA9XG4gICAgbGV0IGVzY2FwZSBwcmludCBzIHAgbiA9XG4gICAgICBsZXQgczAgPSBTdHJpbmcuc3ViIHMgcCBuIGluXG4gICAgICBsZXQgczEgPSBlc2MgczAgaW5cbiAgICAgIHByaW50IHMxIDAgKFN0cmluZy5sZW5ndGggczEpXG4gICAgaW5cbiAgICBzZXRfZXNjYXBlIGZtdCBlc2NhcGVcblxuXG4gIGxldCBkZWZpbmVfc3R5bGVzIGZtdCBlc2NhcGUgbCA9XG4gICAgaWYgbCA8PiBbXSB0aGVuIChcbiAgICAgIEZvcm1hdC5wcF9zZXRfdGFncyBmbXQgdHJ1ZTtcbiAgICAgIGxldCB0YmwxID0gSGFzaHRibC5jcmVhdGUgKDIgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgbGV0IHRibDIgPSBIYXNodGJsLmNyZWF0ZSAoMiAqIExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBMaXN0Lml0ZXIgKFxuICAgICAgICBmdW4gKHN0eWxlX25hbWUsIHN0eWxlKSAtPlxuICAgICAgICAgIEhhc2h0YmwuYWRkIHRibDEgc3R5bGVfbmFtZSBzdHlsZS50YWdfb3BlbjtcbiAgICAgICAgICBIYXNodGJsLmFkZCB0YmwyIHN0eWxlX25hbWUgc3R5bGUudGFnX2Nsb3NlXG4gICAgICApIGw7XG4gICAgICBsZXQgbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRm9ybWF0LlN0cmluZ190YWcgc3R5bGVfbmFtZSAtPlxuICAgICAgICAgICAgKHRyeSBIYXNodGJsLmZpbmQgdGJsMSBzdHlsZV9uYW1lXG4gICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gXCJcIilcbiAgICAgICAgfCBfIC0+IFwiXCJcbiAgICAgIGluXG4gICAgICBsZXQgbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICAgICAgICB8IEZvcm1hdC5TdHJpbmdfdGFnIHN0eWxlX25hbWUgLT5cbiAgICAgICAgICAgICh0cnkgSGFzaHRibC5maW5kIHRibDIgc3R5bGVfbmFtZVxuICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgXCJcIlxuICAgICAgaW5cblxuICAgICAgbGV0IHRhZ2YgPSB7XG4gICAgICAgIChGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkpIHdpdGhcbiAgICAgICAgICBtYXJrX29wZW5fc3RhZyA9IG1hcmtfb3Blbl90YWc7XG4gICAgICAgICAgbWFya19jbG9zZV9zdGFnID0gbWFya19jbG9zZV90YWdcbiAgICAgIH1cbiAgICAgIGluXG4gICAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgdGFnZlxuICAgICk7XG5cbiAgICAobWF0Y2ggZXNjYXBlIHdpdGhcbiAgICAgICAgIGBOb25lIC0+ICgpXG4gICAgICAgfCBgRXNjYXBlIGVzYyAtPiBzZXRfZXNjYXBlIGZtdCBlc2NcbiAgICAgICB8IGBFc2NhcGVfc3RyaW5nIGVzYyAtPiBzZXRfZXNjYXBlX3N0cmluZyBmbXQgZXNjKVxuXG5cbiAgbGV0IHBwX29wZW5feGJveCBmbXQgcCBpbmRlbnQgPVxuICAgIG1hdGNoIHAud3JhcF9ib2R5IHdpdGhcbiAgICAgICAgYEFsd2F5c193cmFwXG4gICAgICB8IGBOZXZlcl93cmFwXG4gICAgICB8IGBXcmFwX2F0b21zIC0+IEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYEZvcmNlX2JyZWFrc1xuICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlYyAtPiBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5vX2JyZWFrcyAtPiBGb3JtYXQucHBfb3Blbl9oYm94IGZtdCAoKVxuXG4gIGxldCBleHRyYV9ib3ggcCBsID1cbiAgICBsZXQgd3JhcCA9XG4gICAgICBtYXRjaCBwLndyYXBfYm9keSB3aXRoXG4gICAgICAgICAgYEFsd2F5c193cmFwIC0+IHRydWVcbiAgICAgICAgfCBgTmV2ZXJfd3JhcFxuICAgICAgICB8IGBGb3JjZV9icmVha3NcbiAgICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlY1xuICAgICAgICB8IGBOb19icmVha3MgLT4gZmFsc2VcbiAgICAgICAgfCBgV3JhcF9hdG9tcyAtPlxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsIChmdW5jdGlvbiBBdG9tIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcbiAgICBpblxuICAgIGlmIHdyYXAgdGhlblxuICAgICAgKChmdW4gZm10IC0+IEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgMCksXG4gICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCkpKVxuICAgIGVsc2VcbiAgICAgICgoZnVuIF8gLT4gKCkpLFxuICAgICAgIChmdW4gXyAtPiAoKSkpXG5cblxuICBsZXQgcHBfb3Blbl9ub25hbGlnbmVkX2JveCBmbXQgcCBpbmRlbnQgbCA9XG4gICAgbWF0Y2ggcC53cmFwX2JvZHkgd2l0aFxuICAgICAgICBgQWx3YXlzX3dyYXAgLT4gRm9ybWF0LnBwX29wZW5faG92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5ldmVyX3dyYXAgLT4gRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgV3JhcF9hdG9tcyAtPlxuICAgICAgICAgIGlmIExpc3QuZm9yX2FsbCAoZnVuY3Rpb24gQXRvbSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgaW5kZW50XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgRm9yY2VfYnJlYWtzXG4gICAgICB8IGBGb3JjZV9icmVha3NfcmVjIC0+IEZvcm1hdC5wcF9vcGVuX3Zib3ggZm10IGluZGVudFxuICAgICAgfCBgTm9fYnJlYWtzIC0+IEZvcm1hdC5wcF9vcGVuX2hib3ggZm10ICgpXG5cblxuICBsZXQgb3Blbl90YWcgZm10ID0gZnVuY3Rpb25cbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPiBGb3JtYXQucHBfb3Blbl9zdGFnIGZtdCAoRm9ybWF0LlN0cmluZ190YWcgcylcblxuICBsZXQgY2xvc2VfdGFnIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIF8gLT4gRm9ybWF0LnBwX2Nsb3NlX3N0YWcgZm10ICgpXG5cbiAgbGV0IHRhZ19zdHJpbmcgZm10IG8gcyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgICAgIE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgc1xuICAgICAgfCBTb21lIHRhZyAtPlxuICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX3N0YWcgZm10IChGb3JtYXQuU3RyaW5nX3RhZyB0YWcpO1xuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHM7XG4gICAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX3N0YWcgZm10ICgpXG5cbiAgbGV0IHJlYyBmcHJpbnRfdCBmbXQgPSBmdW5jdGlvblxuICAgICAgQXRvbSAocywgcCkgLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5hdG9tX3N0eWxlIHM7XG5cbiAgICB8IExpc3QgKChfLCBfLCBfLCBwKSBhcyBwYXJhbSwgbCkgLT5cbiAgICAgICAgb3Blbl90YWcgZm10IHAubGlzdF9zdHlsZTtcbiAgICAgICAgaWYgcC5hbGlnbl9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdCBmbXQgTm9uZSBwYXJhbSBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdDIgZm10IHBhcmFtIGw7XG4gICAgICAgIGNsb3NlX3RhZyBmbXQgcC5saXN0X3N0eWxlXG5cbiAgICB8IExhYmVsIChsYWJlbCwgeCkgLT4gZnByaW50X3BhaXIgZm10IGxhYmVsIHhcbiAgICB8IEN1c3RvbSBmIC0+IGYgZm10XG5cbiAgYW5kIGZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCBmbXQgcCBzZXAgaGQgdGwgPVxuICAgIG9wZW5fdGFnIGZtdCBwLmJvZHlfc3R5bGU7XG4gICAgZnByaW50X3QgZm10IGhkO1xuICAgIExpc3QuaXRlciAoXG4gICAgICBmdW4geCAtPlxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuICAgIGNsb3NlX3RhZyBmbXQgcC5ib2R5X3N0eWxlXG5cbiAgYW5kIGZwcmludF9saXN0X2JvZHlfc3RpY2tfcmlnaHQgZm10IHAgc2VwIGhkIHRsID1cbiAgICBvcGVuX3RhZyBmbXQgcC5ib2R5X3N0eWxlO1xuICAgIGZwcmludF90IGZtdCBoZDtcbiAgICBMaXN0Lml0ZXIgKFxuICAgICAgZnVuIHggLT5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcbiAgICBjbG9zZV90YWcgZm10IHAuYm9keV9zdHlsZVxuXG4gIGFuZCBmcHJpbnRfb3B0X2xhYmVsIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIChsYWIsIGxwKSAtPlxuICAgICAgICBvcGVuX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgIGZwcmludF90IGZtdCBsYWI7XG4gICAgICAgIGNsb3NlX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIlxuXG4gICgqIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGxpc3QgKilcbiAgYW5kIGZwcmludF9saXN0IGZtdCBsYWJlbCAoKG9wLCBfc2VwLCBjbCwgcCkgYXMgcGFyYW0pID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+XG4gICAgICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB8fCBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsXG5cbiAgICB8IGhkIDo6IHRsIGFzIGwgLT5cblxuICAgICAgICBpZiB0bCA9IFtdIHx8IHAuc2VwYXJhdG9yc19zdGlja19sZWZ0IHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdF9zdGlja19sZWZ0IGZtdCBsYWJlbCBwYXJhbSBoZCB0bCBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdF9zdGlja19yaWdodCBmbXQgbGFiZWwgcGFyYW0gaGQgdGwgbFxuXG5cbiAgYW5kIGZwcmludF9saXN0X3N0aWNrX2xlZnQgZm10IGxhYmVsIChvcCwgc2VwLCBjbCwgcCkgaGQgdGwgbCA9XG4gICAgbGV0IGluZGVudCA9IHAuaW5kZW50X2JvZHkgaW5cbiAgICBwcF9vcGVuX3hib3ggZm10IHAgaW5kZW50O1xuICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuXG4gICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuXG4gICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcblxuICAgIGxldCBvcGVuX2V4dHJhLCBjbG9zZV9leHRyYSA9IGV4dHJhX2JveCBwIGwgaW5cbiAgICBvcGVuX2V4dHJhIGZtdDtcbiAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsO1xuICAgIGNsb3NlX2V4dHJhIGZtdDtcblxuICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtaW5kZW50KVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLWluZGVudCk7XG4gICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cbiAgYW5kIGZwcmludF9saXN0X3N0aWNrX3JpZ2h0IGZtdCBsYWJlbCAob3AsIHNlcCwgY2wsIHApIGhkIHRsIGwgPVxuICAgIGxldCBiYXNlX2luZGVudCA9IHAuaW5kZW50X2JvZHkgaW5cbiAgICBsZXQgc2VwX2luZGVudCA9XG4gICAgICBTdHJpbmcubGVuZ3RoIHNlcCArIChpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuIDEgZWxzZSAwKVxuICAgIGluXG4gICAgbGV0IGluZGVudCA9IGJhc2VfaW5kZW50ICsgc2VwX2luZGVudCBpblxuXG4gICAgcHBfb3Blbl94Ym94IGZtdCBwIGluZGVudDtcbiAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcblxuICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcblxuICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG5cbiAgICBsZXQgb3Blbl9leHRyYSwgY2xvc2VfZXh0cmEgPSBleHRyYV9ib3ggcCBsIGluXG4gICAgb3Blbl9leHRyYSBmbXQ7XG5cbiAgICBmcHJpbnRfdCBmbXQgaGQ7XG4gICAgTGlzdC5pdGVyIChcbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtc2VwX2luZGVudClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLXNlcF9pbmRlbnQpO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuXG4gICAgY2xvc2VfZXh0cmEgZm10O1xuXG4gICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDEgKC1pbmRlbnQpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwICgtaW5kZW50KTtcbiAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2w7XG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuXG5cbiAgKCogYWxpZ25fY2xvc2luZyA9IGZhbHNlICopXG4gIGFuZCBmcHJpbnRfbGlzdDIgZm10IChvcCwgc2VwLCBjbCwgcCkgPSBmdW5jdGlvblxuICAgICAgW10gLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgfHwgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG4gICAgfCBoZCA6OiB0bCBhcyBsIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcblxuICAgICAgICBwcF9vcGVuX25vbmFsaWduZWRfYm94IGZtdCBwIDAgbCA7XG4gICAgICAgIGlmIHAuc2VwYXJhdG9yc19zdGlja19sZWZ0IHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX3JpZ2h0IGZtdCBwIHNlcCBoZCB0bDtcbiAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCk7XG5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG5cbiAgKCogUHJpbnRpbmcgYSBsYWJlbDp2YWx1ZSBwYWlyLlxuXG4gICAgIFRoZSBvcGVuaW5nIGJyYWNrZXQgc3RheXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUga2V5LCBubyBtYXR0ZXIgd2hhdCxcbiAgICAgYW5kIHRoZSBjbG9zaW5nIGJyYWNrZXQgaXMgZWl0aGVyIG9uIHRoZSBzYW1lIGxpbmVcbiAgICAgb3IgdmVydGljYWxseSBhbGlnbmVkIHdpdGggdGhlIGJlZ2lubmluZyBvZiB0aGUga2V5LlxuICAqKVxuICBhbmQgZnByaW50X3BhaXIgZm10ICgobGFiLCBscCkgYXMgbGFiZWwpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgICBMaXN0ICgob3AsIHNlcCwgY2wsIHApLCBsKSB3aGVuIHAuc3RpY2tfdG9fbGFiZWwgJiYgcC5hbGlnbl9jbG9zaW5nIC0+XG4gICAgICAgICAgZnByaW50X2xpc3QgZm10IChTb21lIGxhYmVsKSAob3AsIHNlcCwgY2wsIHApIGxcblxuICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGluZGVudCA9IGxwLmluZGVudF9hZnRlcl9sYWJlbCBpblxuICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCAwO1xuXG4gICAgICAgICAgb3Blbl90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICAgIGZwcmludF90IGZtdCBsYWI7XG4gICAgICAgICAgY2xvc2VfdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcblxuICAgICAgICAgIChtYXRjaCBscC5sYWJlbF9icmVhayB3aXRoXG4gICAgICAgICAgIHwgYEF1dG8gLT5cbiAgICAgICAgICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxIGluZGVudFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgaW5kZW50XG4gICAgICAgICAgIHwgYEFsd2F5c1xuICAgICAgICAgICB8IGBBbHdheXNfcmVjIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfZm9yY2VfbmV3bGluZSBmbXQgKCk7XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCAoU3RyaW5nLm1ha2UgaW5kZW50ICcgJylcbiAgICAgICAgICAgfCBgTmV2ZXIgLT5cbiAgICAgICAgICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2NoYXIgZm10ICcgJ1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICk7XG4gICAgICAgICAgZnByaW50X3QgZm10IHg7XG4gICAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuICBsZXQgdG9fZm9ybWF0dGVyIGZtdCB4ID1cbiAgICBsZXQgeCA9IHJld3JpdGUgeCBpblxuICAgIGZwcmludF90IGZtdCB4O1xuICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXQgKClcblxuICBsZXQgdG9fYnVmZmVyID8oZXNjYXBlID0gYE5vbmUpID8oc3R5bGVzID0gW10pIGJ1ZiB4ID1cbiAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgZGVmaW5lX3N0eWxlcyBmbXQgZXNjYXBlIHN0eWxlcztcbiAgICB0b19mb3JtYXR0ZXIgZm10IHhcblxuICBsZXQgdG9fc3RyaW5nID9lc2NhcGUgP3N0eWxlcyB4ID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA1MDAgaW5cbiAgICB0b19idWZmZXIgP2VzY2FwZSA/c3R5bGVzIGJ1ZiB4O1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgdG9fY2hhbm5lbCA/KGVzY2FwZSA9IGBOb25lKSA/KHN0eWxlcyA9IFtdKSBvYyB4ID1cbiAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgIGRlZmluZV9zdHlsZXMgZm10IGVzY2FwZSBzdHlsZXM7XG4gICAgdG9fZm9ybWF0dGVyIGZtdCB4XG5cbiAgbGV0IHRvX3N0ZG91dCA/ZXNjYXBlID9zdHlsZXMgeCA9IHRvX2NoYW5uZWwgP2VzY2FwZSA/c3R5bGVzIHN0ZG91dCB4XG4gIGxldCB0b19zdGRlcnIgP2VzY2FwZSA/c3R5bGVzIHggPSB0b19jaGFubmVsID9lc2NhcGUgP3N0eWxlcyBzdGRlcnIgeFxuXG5lbmRcblxuXG5cblxubW9kdWxlIENvbXBhY3QgPVxuc3RydWN0XG4gIG9wZW4gUHJpbnRmXG5cbiAgbGV0IHJlYyBmcHJpbnRfdCBidWYgPSBmdW5jdGlvblxuICAgICAgQXRvbSAocywgXykgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHNcbiAgICB8IExpc3QgKHBhcmFtLCBsKSAtPiBmcHJpbnRfbGlzdCBidWYgcGFyYW0gbFxuICAgIHwgTGFiZWwgKGxhYmVsLCB4KSAtPiBmcHJpbnRfcGFpciBidWYgbGFiZWwgeFxuICAgIHwgQ3VzdG9tIGYgLT5cbiAgICAgICAgKCogV2lsbCBtb3N0IGxpa2VseSBub3QgYmUgY29tcGFjdCAqKVxuICAgICAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgICAgIGYgZm10O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgYW5kIGZwcmludF9saXN0IGJ1ZiAob3AsIHNlcCwgY2wsIF8pID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+IGJwcmludGYgYnVmIFwiJXMlc1wiIG9wIGNsXG4gICAgfCB4IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBvcDtcbiAgICAgICAgZnByaW50X3QgYnVmIHg7XG4gICAgICAgIExpc3QuaXRlciAoXG4gICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgICAgICAgICBmcHJpbnRfdCBidWYgeFxuICAgICAgICApIHRsO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgY2xcblxuICBhbmQgZnByaW50X3BhaXIgYnVmIChsYWJlbCwgXykgeCA9XG4gICAgZnByaW50X3QgYnVmIGxhYmVsO1xuICAgIGZwcmludF90IGJ1ZiB4XG5cblxuICBsZXQgdG9fYnVmZmVyIGJ1ZiB4ID0gZnByaW50X3QgYnVmIHhcblxuICBsZXQgdG9fc3RyaW5nIHggPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDUwMCBpblxuICAgIHRvX2J1ZmZlciBidWYgeDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHRvX2Zvcm1hdHRlciBmbXQgeCA9XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgeCBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIgcztcbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgbGV0IHRvX2NoYW5uZWwgb2MgeCA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNTAwIGluXG4gICAgdG9fYnVmZmVyIGJ1ZiB4O1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIGJ1ZlxuXG4gIGxldCB0b19zdGRvdXQgeCA9IHRvX2NoYW5uZWwgc3Rkb3V0IHhcbiAgbGV0IHRvX3N0ZGVyciB4ID0gdG9fY2hhbm5lbCBzdGRlcnIgeFxuZW5kXG5cblxuXG5cbigqIE9ic29sZXRlICopXG5tb2R1bGUgUGFyYW0gPVxuc3RydWN0XG4gIGxldCBsaXN0X3RydWUgPSB7XG4gICAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IHRydWU7XG4gICAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlO1xuICAgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gdHJ1ZTtcbiAgICBzdGlja190b19sYWJlbCA9IHRydWU7XG4gICAgYWxpZ25fY2xvc2luZyA9IHRydWU7XG4gICAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gICAgaW5kZW50X2JvZHkgPSAyO1xuICAgIGxpc3Rfc3R5bGUgPSBOb25lO1xuICAgIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICAgIGJvZHlfc3R5bGUgPSBOb25lO1xuICAgIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gICAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGlzdF9mYWxzZSA9IHtcbiAgICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gZmFsc2U7XG4gICAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gZmFsc2U7XG4gICAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IGZhbHNlO1xuICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IGZhbHNlO1xuICAgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gZmFsc2U7XG4gICAgc3RpY2tfdG9fbGFiZWwgPSBmYWxzZTtcbiAgICBhbGlnbl9jbG9zaW5nID0gZmFsc2U7XG4gICAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gICAgaW5kZW50X2JvZHkgPSAyO1xuICAgIGxpc3Rfc3R5bGUgPSBOb25lO1xuICAgIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICAgIGJvZHlfc3R5bGUgPSBOb25lO1xuICAgIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gICAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGFiZWxfdHJ1ZSA9IHtcbiAgICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICAgIHNwYWNlX2FmdGVyX2xhYmVsID0gdHJ1ZTtcbiAgICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICAgIGxhYmVsX3N0eWxlID0gTm9uZTtcbiAgfVxuXG4gIGxldCBsYWJlbF9mYWxzZSA9IHtcbiAgICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICAgIHNwYWNlX2FmdGVyX2xhYmVsID0gZmFsc2U7XG4gICAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgICBsYWJlbF9zdHlsZSA9IE5vbmU7XG4gIH1cbmVuZFxuIiwiZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgZXJyb3IgcyA9IHJhaXNlIChFcnJvciBzKVxuXG5cbigqXG4gIERlYnVnZ2luZyB1dGlsaXRpZXMuXG4qKVxuXG5sZXQgc3RyaW5nOF9vZl9pbnQgeCA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgZm9yIGkgPSAwIHRvIDcgZG9cbiAgICBCeXRlcy5zZXQgcyAoNy1pKSAoQ2hhci5jaHIgKDB4ZmYgbGFuZCAoeCBsc3IgKDggKiBpKSkpKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc1xuXG5sZXQgc3RyaW5nNF9vZl9pbnQgeCA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgZm9yIGkgPSAwIHRvIDMgZG9cbiAgICBCeXRlcy5zZXQgcyAoMy1pKSAoQ2hhci5jaHIgKDB4ZmYgbGFuZCAoeCBsc3IgKDggKiBpKSkpKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc1xuXG5sZXQgcHJpbnRfYml0cyA/KHBvcyA9IDApID9sZW4gcyA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHBvcyA8IDAgfHwgKHBvcyA+IDAgJiYgcG9zID49IHNsZW4pIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJpX3V0aWwucHJpbnRfYml0c1wiO1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICBOb25lIC0+IHNsZW4gLSBwb3NcbiAgICAgIHwgU29tZSBsZW4gLT5cbiAgICAgICAgICBpZiBsZW4gPiBzbGVuIC0gcG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaV91dGlsLnByaW50X2JpdHNcIlxuICAgICAgICAgIGVsc2UgbGVuXG4gIGluXG5cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDkpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGsgPSBpICogOSBpblxuICAgIGxldCB4ID0gQ2hhci5jb2RlIHMuW3BvcytpXSBpblxuICAgIGZvciBqID0gMCB0byA3IGRvXG4gICAgICBCeXRlcy5zZXQgciAoaytqKSAoaWYgKHggbHNyICg3IC0gaikpIGxhbmQgMSA9IDAgdGhlbiAnMCcgZWxzZSAnMScpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgciAoays4KSAoaWYgKGkgKyAxKSBtb2QgOCA9IDAgdGhlbiAnXFxuJyBlbHNlICcgJylcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHJcblxuKCogaW50IHNpemUgaW4gYml0cyAqKVxubGV0IGludF9zaXplID1cbiAgbGV0IGMgPSByZWYgMCBpblxuICBsZXQgciA9IHJlZiAoLTEpIGluXG4gIHdoaWxlICFyIDw+IDAgZG9cbiAgICByIDo9ICFyIGxzciAxO1xuICAgIGluY3IgY1xuICBkb25lO1xuICAhY1xuIiwidHlwZSB0eXBlX2lkID0gaW50XG5cbmxldCBkdW1teV90eXBlX2lkID0gMFxuXG5sZXQgY3JlYXRlX3R5cGVfaWQgPVxuICBsZXQgbiA9IHJlZiBkdW1teV90eXBlX2lkIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgbjtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgZmFpbHdpdGggXCJCaV9zaGFyZS5SZF9wb2x5LmNyZWF0ZV90eXBlX2lkOiBcXFxuICAgICAgICAgICAgICAgIGV4aGF1c3RlZCBhdmFpbGFibGUgdHlwZV9pZCdzXCJcbiAgICBlbHNlXG4gICAgICAhblxuXG5tb2R1bGUgV3IgPVxuc3RydWN0XG4gIG1vZHVsZSBIID0gSGFzaHRibC5NYWtlIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE9iai50ICogdHlwZV9pZFxuICAgICAgbGV0IGVxdWFsICh4MSwgdDEpICh4MiwgdDIpID0geDEgPT0geDIgJiYgdDEgPT0gdDJcbiAgICAgIGxldCBoYXNoID0gSGFzaHRibC5oYXNoXG4gICAgZW5kXG4gIClcblxuICB0eXBlIHRibCA9IGludCBILnRcblxuICBsZXQgY3JlYXRlID0gSC5jcmVhdGVcbiAgbGV0IGNsZWFyIHRibCA9XG4gICAgaWYgSC5sZW5ndGggdGJsID4gMCB0aGVuXG4gICAgICBILmNsZWFyIHRibFxuXG4gIGxldCBwdXQgdGJsIGsgcG9zID1cbiAgICB0cnlcbiAgICAgIGxldCBwb3MwID0gSC5maW5kIHRibCAoT2JqLm1hZ2ljIGspIGluXG4gICAgICBwb3MgLSBwb3MwXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIEguYWRkIHRibCAoT2JqLm1hZ2ljIGspIHBvcztcbiAgICAgIDBcbmVuZFxuXG5tb2R1bGUgUmQgPVxuc3RydWN0XG4gIHR5cGUgdGJsID0gKChpbnQgKiB0eXBlX2lkKSwgT2JqLnQpIEhhc2h0YmwudFxuXG4gIGxldCBjcmVhdGUgbiA9IEhhc2h0YmwuY3JlYXRlIG5cbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuXG4gIGxldCBwdXQgdGJsIHBvcyB4ID1cbiAgICBIYXNodGJsLmFkZCB0YmwgcG9zIHhcblxuICBsZXQgZ2V0IHRibCBwb3MgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQgdGJsIHBvc1xuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgcmVmZXJlbmNlKVwiXG5lbmRcbiIsInR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpX3MgOiBieXRlcztcbiAgbXV0YWJsZSBpX3BvcyA6IGludDtcbiAgbXV0YWJsZSBpX2xlbiA6IGludDtcbiAgbXV0YWJsZSBpX29mZnMgOiBpbnQ7XG4gIG11dGFibGUgaV9tYXhfbGVuIDogaW50O1xuICBpX3JlZmlsbCA6ICh0IC0+IGludCAtPiB1bml0KTtcbiAgaV9zaGFyZWQgOiBCaV9zaGFyZS5SZC50Ymw7XG59XG5cbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxubGV0IHRyeV9wcmVyZWFkIGliIG4gPVxuICBpZiBpYi5pX2xlbiAtIGliLmlfcG9zIDwgbiB0aGVuIChcbiAgICBpYi5pX3JlZmlsbCBpYiBuO1xuICAgIG1pbiAoaWIuaV9sZW4gLSBpYi5pX3BvcykgblxuICApXG4gIGVsc2VcbiAgICBuXG5cbmxldCByZWFkIGliIG4gPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPj0gbiB0aGVuIChcbiAgICBpYi5pX3BvcyA8LSBwb3MgKyBuO1xuICAgIHBvc1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiBuID49IG4gdGhlblxuICAgICAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gICAgICBpYi5pX3BvcyA8LSBpYi5pX3BvcyArIG47XG4gICAgICBwb3NcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IHJlYWRfY2hhciBpYiA9XG4gIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICBpZiBpYi5pX2xlbiAtIHBvcyA+IDAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3MgaW5cbiAgICBpYi5pX3BvcyA8LSBwb3MgKyAxO1xuICAgIGNcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgMSA+IDAgdGhlblxuICAgICAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gICAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvcyBpblxuICAgICAgaWIuaV9wb3MgPC0gcG9zICsgMTtcbiAgICAgIGNcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IHBlZWsgaWIgPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPiAwIHRoZW4gKFxuICAgIEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvc1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiAxID4gMCB0aGVuXG4gICAgICBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBpYi5pX3Bvc1xuICAgIGVsc2VcbiAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuXG5sZXQgZnJvbV9ieXRlcyA/KHBvcyA9IDApID8oc2hybGVuID0gMTYpIHMgPSB7XG4gIGlfcyA9IHM7XG4gIGlfcG9zID0gcG9zO1xuICBpX2xlbiA9IEJ5dGVzLmxlbmd0aCBzO1xuICBpX29mZnMgPSAtcG9zO1xuICBpX21heF9sZW4gPSBCeXRlcy5sZW5ndGggcztcbiAgaV9yZWZpbGwgPSAoZnVuIGliIG4gLT4gKCkpO1xuICBpX3NoYXJlZCA9IEJpX3NoYXJlLlJkLmNyZWF0ZSBzaHJsZW47XG59XG5cbmxldCBmcm9tX3N0cmluZyA/cG9zID9zaHJsZW4gcyA9IGZyb21fYnl0ZXMgP3BvcyA/c2hybGVuIChCeXRlcy5vZl9zdHJpbmcgcylcblxuKCpcbiAgTGlrZSBQZXJ2YXNpdmVzLnJlYWxseV9pbnB1dCBidXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gIHJlYWQgaW5zdGVhZCBvZiByYWlzaW5nIEVuZF9vZl9maWxlIHdoZW4gdGhlIGVuZCBvZiBmaWxlIGlzIHJlYWNoZWQuXG4qKVxubGV0IHJlYyBub3RfcmVhbGx5X2lucHV0IGljIHMgcG9zIGxlbiBhY2N1ID1cbiAgbGV0IG4gPSBpbnB1dCBpYyBzIHBvcyBsZW4gaW5cbiAgaWYgbiA8IGxlbiAmJiBuID4gMCB0aGVuXG4gICAgbm90X3JlYWxseV9pbnB1dCBpYyBzIChwb3MgKyBuKSAobGVuIC0gbikgKGFjY3UgKyBuKVxuICBlbHNlXG4gICAgYWNjdSArIG5cblxubGV0IHJlZmlsbF9mcm9tX2NoYW5uZWwgaWMgaWIgbiA9XG4gIGlmIG4gPiBpYi5pX21heF9sZW4gdGhlblxuICAgIGludmFsaWRfYXJnIFwiQmlfaW5idWYucmVmaWxsX2Zyb21fY2hhbm5lbFwiXG4gIGVsc2UgKFxuICAgIGxldCByZW1fbGVuID0gaWIuaV9sZW4gLSBpYi5pX3BvcyBpblxuICAgIGlmIHJlbV9sZW4gPCBuIHRoZW5cbiAgICAgIGxldCBzID0gaWIuaV9zIGluXG4gICAgICBCeXRlcy5ibGl0IHMgaWIuaV9wb3MgcyAwIHJlbV9sZW47XG4gICAgICBsZXQgdG9fcmVhZCA9IG4gLSByZW1fbGVuIGluXG4gICAgICBsZXQgcmVhbGx5X3JlYWQgPSBub3RfcmVhbGx5X2lucHV0IGljIHMgcmVtX2xlbiB0b19yZWFkIDAgaW5cbiAgICAgIGliLmlfb2ZmcyA8LSBpYi5pX29mZnMgKyBpYi5pX3BvcztcbiAgICAgIGliLmlfcG9zIDwtIDA7XG4gICAgICBpYi5pX2xlbiA8LSByZW1fbGVuICsgcmVhbGx5X3JlYWRcbiAgKVxuXG5sZXQgZnJvbV9jaGFubmVsID8obGVuID0gNDA5NikgPyhzaHJsZW4gPSAxNikgaWMgPSB7XG4gIGlfcyA9IEJ5dGVzLmNyZWF0ZSBsZW47XG4gIGlfcG9zID0gMDtcbiAgaV9sZW4gPSAwO1xuICBpX29mZnMgPSAwO1xuICBpX21heF9sZW4gPSBsZW47XG4gIGlfcmVmaWxsID0gcmVmaWxsX2Zyb21fY2hhbm5lbCBpYztcbiAgaV9zaGFyZWQgPSBCaV9zaGFyZS5SZC5jcmVhdGUgc2hybGVuO1xufVxuIiwidHlwZSB0ID0ge1xuICBtdXRhYmxlIG9fcyA6IGJ5dGVzO1xuICBtdXRhYmxlIG9fbWF4X2xlbiA6IGludDtcbiAgbXV0YWJsZSBvX2xlbiA6IGludDtcbiAgbXV0YWJsZSBvX29mZnMgOiBpbnQ7XG4gIG9faW5pdF9sZW4gOiBpbnQ7XG4gIG9fbWFrZV9yb29tIDogKHQgLT4gaW50IC0+IHVuaXQpO1xuICBtdXRhYmxlIG9fc2hhcmVkIDogQmlfc2hhcmUuV3IudGJsO1xuICBvX3NoYXJlZF9pbml0X2xlbiA6IGludDtcbn1cblxubGV0IHJlYWxseV9leHRlbmQgYiBuID1cbiAgbGV0IHNsZW4wID0gYi5vX21heF9sZW4gaW5cbiAgbGV0IHJlcWxlbiA9IGIub19sZW4gKyBuIGluXG4gIGxldCBzbGVuID1cbiAgICBsZXQgeCA9IG1heCByZXFsZW4gKDIgKiBzbGVuMCkgaW5cbiAgICBpZiB4IDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIHhcbiAgICBlbHNlXG4gICAgICBpZiBTeXMubWF4X3N0cmluZ19sZW5ndGggPCByZXFsZW4gdGhlblxuXHRpbnZhbGlkX2FyZyBcIkJ1Zi5leHRlbmQ6IHJlYWNoZWQgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXCJcbiAgICAgIGVsc2Vcblx0U3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIHNsZW4gaW5cbiAgQnl0ZXMuYmxpdCBiLm9fcyAwIHMgMCBiLm9fbGVuO1xuICBiLm9fcyA8LSBzO1xuICBiLm9fbWF4X2xlbiA8LSBzbGVuXG5cbmxldCBmbHVzaF90b19vdXRwdXQgYWJzdHJhY3Rfb3V0cHV0IGIgbiA9XG4gIGFic3RyYWN0X291dHB1dCAoQnl0ZXMudG9fc3RyaW5nIGIub19zKSAwIGIub19sZW47XG4gIGIub19vZmZzIDwtIGIub19vZmZzICsgYi5vX2xlbjtcbiAgYi5vX2xlbiA8LSAwO1xuICBpZiBuID4gYi5vX21heF9sZW4gdGhlblxuICAgIHJlYWxseV9leHRlbmQgYiBuXG5cbmxldCBmbHVzaF90b19jaGFubmVsIG9jID0gZmx1c2hfdG9fb3V0cHV0IChvdXRwdXRfc3Vic3RyaW5nIG9jKVxuXG5cbmxldCBjcmVhdGUgPyhtYWtlX3Jvb20gPSByZWFsbHlfZXh0ZW5kKSA/KHNocmxlbiA9IDE2KSBuID0ge1xuICBvX3MgPSBCeXRlcy5jcmVhdGUgbjtcbiAgb19tYXhfbGVuID0gbjtcbiAgb19sZW4gPSAwO1xuICBvX29mZnMgPSAwO1xuICBvX2luaXRfbGVuID0gbjtcbiAgb19tYWtlX3Jvb20gPSBtYWtlX3Jvb207XG4gIG9fc2hhcmVkID0gQmlfc2hhcmUuV3IuY3JlYXRlIHNocmxlbjtcbiAgb19zaGFyZWRfaW5pdF9sZW4gPSBzaHJsZW47XG59XG5cbmxldCBjcmVhdGVfY2hhbm5lbF93cml0ZXIgPyhsZW4gPSA0MDk2KSA/c2hybGVuIG9jID1cbiAgY3JlYXRlIH5tYWtlX3Jvb206KGZsdXNoX3RvX2NoYW5uZWwgb2MpID9zaHJsZW4gbGVuXG5cbmxldCBmbHVzaF9jaGFubmVsX3dyaXRlciBiID1cbiAgYi5vX21ha2Vfcm9vbSBiIDBcblxubGV0IGNyZWF0ZV9vdXRwdXRfd3JpdGVyID8obGVuID0gNDA5NikgP3NocmxlbiBvdXQgPVxuICBjcmVhdGUgfm1ha2Vfcm9vbTooZmx1c2hfdG9fb3V0cHV0IG91dCNvdXRwdXQpID9zaHJsZW4gbGVuXG5cbmxldCBmbHVzaF9vdXRwdXRfd3JpdGVyID0gZmx1c2hfY2hhbm5lbF93cml0ZXJcblxuXG4oKlxuICBHdWFyYW50ZWUgdGhhdCB0aGUgYnVmZmVyIHN0cmluZyBoYXMgZW5vdWdoIHJvb20gZm9yIG4gYWRkaXRpb25hbCBieXRlcy5cbiopXG5sZXQgZXh0ZW5kIGIgbiA9XG4gIGlmIGIub19sZW4gKyBuID4gYi5vX21heF9sZW4gdGhlblxuICAgIGIub19tYWtlX3Jvb20gYiBuXG5cbmxldCBhbGxvYyBiIG4gPVxuICBleHRlbmQgYiBuO1xuICBsZXQgcG9zID0gYi5vX2xlbiBpblxuICBiLm9fbGVuIDwtIHBvcyArIG47XG4gIHBvc1xuXG5sZXQgYWRkX3N1YiBibGl0IGIgcyBwb3MgbGVuID1cbiAgZXh0ZW5kIGIgbGVuO1xuICBibGl0IHMgcG9zIGIub19zIGIub19sZW4gbGVuO1xuICBiLm9fbGVuIDwtIGIub19sZW4gKyBsZW5cblxubGV0IGFkZF9zdWJzdHJpbmcgPSBhZGRfc3ViIFN0cmluZy5ibGl0XG5sZXQgYWRkX3N1YmJ5dGVzID0gYWRkX3N1YiBCeXRlcy5ibGl0XG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkZF9ieXRlcyBiIHMgPVxuICBhZGRfc3ViYnl0ZXMgYiBzIDAgKEJ5dGVzLmxlbmd0aCBzKVxuXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYWxsb2MgYiAxIGluXG4gIEJ5dGVzLnNldCBiLm9fcyBwb3MgY1xuXG5sZXQgdW5zYWZlX2FkZF9jaGFyIGIgYyA9XG4gIGxldCBsZW4gPSBiLm9fbGVuIGluXG4gIEJ5dGVzLnNldCBiLm9fcyBsZW4gYztcbiAgYi5vX2xlbiA8LSBsZW4gKyAxXG5cbmxldCBhZGRfY2hhcjIgYiBjMSBjMiA9XG4gIGxldCBwb3MgPSBhbGxvYyBiIDIgaW5cbiAgbGV0IHMgPSBiLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIGMxO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSBjMlxuXG5sZXQgYWRkX2NoYXI0IGIgYzEgYzIgYzMgYzQgPVxuICBsZXQgcG9zID0gYWxsb2MgYiA0IGluXG4gIGxldCBzID0gYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyBjMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgYzI7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzIpIGMzO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcyszKSBjNFxuXG5cblxubGV0IGNsZWFyIGIgPVxuICBiLm9fb2ZmcyA8LSAwO1xuICBiLm9fbGVuIDwtIDA7XG4gIEJpX3NoYXJlLldyLmNsZWFyIGIub19zaGFyZWRcblxubGV0IHJlc2V0IGIgPVxuICBpZiBCeXRlcy5sZW5ndGggYi5vX3MgPD4gYi5vX2luaXRfbGVuIHRoZW5cbiAgICBiLm9fcyA8LSBCeXRlcy5jcmVhdGUgYi5vX2luaXRfbGVuO1xuICBiLm9fb2ZmcyA8LSAwO1xuICBiLm9fbGVuIDwtIDA7XG4gIGIub19zaGFyZWQgPC0gQmlfc2hhcmUuV3IuY3JlYXRlIGIub19zaGFyZWRfaW5pdF9sZW5cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIub19zIDAgYi5vX2xlblxuIiwiKCogVmFyaWFibGUtYnl0ZSBlbmNvZGluZyBvZiA4LWJ5dGUgaW50ZWdlcnMgKHN0YXJ0aW5nIGZyb20gMCkuICopXG5cbm9wZW4gUHJpbnRmXG5vcGVuIEJpX291dGJ1Zlxub3BlbiBCaV9pbmJ1ZlxuXG50eXBlIHVpbnQgPSBpbnRcblxuKCogTWF4aW11bSBsZW5ndGggb2YgYSB2aW50IGRlY29kYWJsZSBpbnRvIGFuIE9DYW1sIGludCxcbiAgIG1heGltdW0gdmFsdWUgb2YgdGhlIGhpZ2hlc3QgYnl0ZSBvZiB0aGUgbGFyZ2VzdCB2aW50IHN1cHBvcnRlZCAqKVxubGV0IG1heF92aW50X2J5dGVzLCBtYXhfaGlnaGVzdF9ieXRlID1cbiAgaWYgQmlfdXRpbC5pbnRfc2l6ZSBtb2QgNyA9IDAgdGhlblxuICAgIGxldCBtID0gQmlfdXRpbC5pbnRfc2l6ZSAvIDcgaW5cbiAgICBsZXQgaCA9IDEgbHNsIDcgLSAxIGluXG4gICAgbSwgaFxuICBlbHNlXG4gICAgbGV0IG0gPSBCaV91dGlsLmludF9zaXplIC8gNyArIDEgaW5cbiAgICBsZXQgaCA9IDEgbHNsIChCaV91dGlsLmludF9zaXplIG1vZCA3KSAtIDEgaW5cbiAgICBtLCBoXG5cbmxldCBjaGVja19oaWdoZXN0X2J5dGUgeCA9XG4gIGlmIHggPiBtYXhfaGlnaGVzdF9ieXRlIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiVmludCBleGNlZWRpbmcgcmFuZ2Ugb2YgT0NhbWwgaW50c1wiXG5cblxubGV0IHVuc2lnbmVkX29mX3NpZ25lZCBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICAoKlxuICAgICAgMCAtPiAwXG4gICAgICAxIC0+IDJcbiAgICAgIDIgLT4gNFxuICAgICAgMyAtPiA2XG4gICAgKilcbiAgICBpIGxzbCAxXG4gIGVsc2VcbiAgICAoKlxuICAgICAgLTEgLT4gMVxuICAgICAgLTIgLT4gM1xuICAgICAgLTMgLT4gNVxuICAgICopXG4gICAgKCgtMS1pKSBsc2wgMSkgbG9yIDFcblxubGV0IHNpZ25lZF9vZl91bnNpZ25lZCBpID1cbiAgaWYgaSBsYW5kIDEgPSAwIHRoZW4gaSBsc3IgMVxuICBlbHNlIC0xIC0gKGkgbHNyIDEpXG5cbmxldCB3cml0ZV91dmludCBidWYgaSAgPVxuICBCaV9vdXRidWYuZXh0ZW5kIGJ1ZiBtYXhfdmludF9ieXRlcztcblxuICBsZXQgeCA9IHJlZiBpIGluXG4gIHdoaWxlICF4IGxzciA3IDw+IDAgZG9cbiAgICBsZXQgYnl0ZSA9IDB4ODAgbG9yICgheCBsYW5kIDB4N2YpIGluXG4gICAgQmlfb3V0YnVmLnVuc2FmZV9hZGRfY2hhciBidWYgKENoYXIuY2hyIGJ5dGUpO1xuICAgIHggOj0gIXggbHNyIDc7XG4gIGRvbmU7XG4gIEJpX291dGJ1Zi51bnNhZmVfYWRkX2NoYXIgYnVmIChDaGFyLmNociAheClcblxubGV0IHdyaXRlX3N2aW50IGJ1ZiBpID1cbiAgd3JpdGVfdXZpbnQgYnVmICh1bnNpZ25lZF9vZl9zaWduZWQgaSlcblxuKCogY29udmVuaWVuY2UgKilcbmxldCB1dmludF9vZl91aW50ID9idWYgaSA9XG4gIGxldCBidWZmZXIgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gQmlfb3V0YnVmLmNyZWF0ZSAxMFxuICAgICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBCaV9vdXRidWYuY2xlYXIgYnVmZmVyO1xuICB3cml0ZV91dmludCBidWZmZXIgaTtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIGJ1ZmZlclxuXG5sZXQgc3ZpbnRfb2ZfaW50ID9idWYgaSA9XG4gIHV2aW50X29mX3VpbnQgP2J1ZiAodW5zaWduZWRfb2Zfc2lnbmVkIGkpXG5cblxubGV0IHJlYWRfdXZpbnQgaWIgPVxuICBsZXQgYXZhaWwgPSBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiBtYXhfdmludF9ieXRlcyBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgbGV0IHggPSByZWYgMCBpblxuICAodHJ5XG4gICAgIGZvciBpID0gMCB0byBhdmFpbCAtIDEgZG9cbiAgICAgICBsZXQgYiA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKHBvcytpKSkgaW5cbiAgICAgICB4IDo9ICgoYiBsYW5kIDB4N2YpIGxzbCAoNyppKSkgbG9yICF4O1xuICAgICAgIGlmIGIgPCAweDgwIHRoZW4gKFxuXHQgaWIuaV9wb3MgPC0gcG9zICsgaSArIDE7XG5cdCBpZiBpICsgMSA9IG1heF92aW50X2J5dGVzIHRoZW5cblx0ICAgY2hlY2tfaGlnaGVzdF9ieXRlIGI7XG5cdCByYWlzZSBFeGl0XG4gICAgICAgKVxuICAgICBkb25lO1xuICAgICBCaV91dGlsLmVycm9yIFwiVW50ZXJtaW5hdGVkIHZpbnQgb3IgdmludCBleGNlZWRpbmcgcmFuZ2Ugb2YgT0NhbWwgaW50c1wiXG4gICB3aXRoIEV4aXQgLT4gKClcbiAgKTtcbiAgIXhcblxuXG5sZXQgcmVhZF9zdmludCBpYiA9XG4gIHNpZ25lZF9vZl91bnNpZ25lZCAocmVhZF91dmludCBpYilcblxuKCogY29udmVuaWVuY2UgKilcblxubGV0IGNoZWNrX2VuZF9vZl9pbnB1dCBpYiA9XG4gIGlmIEJpX2luYnVmLnRyeV9wcmVyZWFkIGliIDEgPiAwIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiSnVuayBpbnB1dCBhZnRlciBlbmQgb2YgdmludFwiXG5cbmxldCB1aW50X29mX3V2aW50IHMgPVxuICBsZXQgaWIgPSBCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzIGluXG4gIGxldCB4ID0gcmVhZF91dmludCBpYiBpblxuICBjaGVja19lbmRfb2ZfaW5wdXQgaWI7XG4gIHhcblxubGV0IGludF9vZl9zdmludCBzID1cbiAgbGV0IGliID0gQmlfaW5idWYuZnJvbV9zdHJpbmcgcyBpblxuICBsZXQgeCA9IHJlYWRfc3ZpbnQgaWIgaW5cbiAgY2hlY2tfZW5kX29mX2lucHV0IGliO1xuICB4XG5cblxuKCpcbiAgVGVzdGluZ1xuKilcblxubGV0IHN0cmluZ19vZl9saXN0IGwgPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDEwMCBpblxuICBMaXN0Lml0ZXIgKHdyaXRlX3V2aW50IG9iKSBsO1xuICBCaV9vdXRidWYuY29udGVudHMgb2JcblxubGV0IHJlYyByZWFkX2xpc3QgaWIgPVxuICBpZiBpYi5pX3BvcyA8IGliLmlfbGVuIHRoZW5cbiAgICBsZXQgeCA9IHJlYWRfdXZpbnQgaWIgaW5cbiAgICB4IDo6IHJlYWRfbGlzdCBpYlxuICBlbHNlXG4gICAgW11cblxubGV0IGxpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xpc3QgKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpXG5cbmxldCBwcmludF9saXN0IGwgPVxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biBpIC0+XG4gICAgICBwcmludGYgXCJkZWMgJWlcXG5oZXggJXhcXG5iaW4gJXNcXG5cIiBpIGlcblx0KEJpX3V0aWwucHJpbnRfYml0cyAoQmlfdXRpbC5zdHJpbmc4X29mX2ludCBpKSlcbiAgKSBsXG5cbmxldCB0ZXN0ICgpID1cbiAgbGV0IGwgPSBbXG4gICAgMDtcbiAgICAweGZmZmZmZmY7XG4gICAgKDB4MDEwMjAzMDQgbHNsIDMyKSBsb3IgMHgwNTA2MDcwODtcbiAgICBtYXhfaW50O1xuICAgIG1pbl9pbnRcbiAgXSBpblxuICBwcmludGYgXCJJbnB1dDpcXG5cIjtcbiAgcHJpbnRfbGlzdCBsO1xuICBsZXQgbCcgPSBsaXN0X29mX3N0cmluZyAoc3RyaW5nX29mX2xpc3QgbCkgaW5cbiAgcHJpbnRmIFwiT3V0cHV0OlxcblwiO1xuICBwcmludF9saXN0IGwnO1xuICBpZiBsID0gbCcgdGhlblxuICAgIHByaW50X2VuZGxpbmUgXCJTVUNDRVNTXCJcbiAgZWxzZVxuICAgIHByaW50X2VuZGxpbmUgXCJGQUlMVVJFXCJcbiIsIm9wZW4gUHJpbnRmXG5cbmxldCBlcnJvciBzID0gZmFpbHdpdGggKFwiQmlfc3RyZWFtOiBcIiBeIHMpXG5cbmxldCBpbnB1dF9pbnQ2NCBpYyA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgICAgNjQgLT5cbiAgICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gOCBkb1xuICAgICAgICAgIG4gOj0gKCFuIGxzbCA4KSBsb3IgKGlucHV0X2J5dGUgaWMpO1xuICAgICAgICBkb25lO1xuICAgICAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgICAgIGVycm9yIFwiQ29ycnVwdGVkIHN0cmVhbTogZXhjZXNzaXZlIGNodW5rIGxlbmd0aFwiO1xuICAgICAgICAhblxuICAgIHwgMzIgLT5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBpZiBpbnB1dF9ieXRlIGljIDw+IDAgdGhlblxuICAgICAgICAgICAgZXJyb3IgXCJDaHVuayBsZW5ndGggZXhjZWVkcyBzdXBwb3J0ZWQgcmFuZ2Ugb24gdGhpcyBwbGF0Zm9ybVwiXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBuIDo9ICghbiBsc2wgOCkgbG9yIChpbnB1dF9ieXRlIGljKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgICAgICBlcnJvciBcIkNodW5rIGxlbmd0aCBleGNlZWRzIHN1cHBvcnRlZCByYW5nZSBvbiB0aGlzIHBsYXRmb3JtXCI7XG4gICAgICAgICFuXG4gICAgfCBuIC0+XG4gICAgICAgIGVycm9yIChzcHJpbnRmIFwidW5zdXBwb3J0ZWQgd29yZCBzaXplICglaSlcIiBuKVxuXG5sZXQgb3V0cHV0X2ludDY0IG9jIG4gPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICAgIDY0IC0+XG4gICAgICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDggZG9cbiAgICAgICAgICBvdXRwdXRfY2hhciBvYyAoY2hhcl9vZl9pbnQgKCFuIGxzciA1NikpO1xuICAgICAgICAgIG4gOj0gIW4gbHNsIDhcbiAgICAgICAgZG9uZVxuICAgIHwgMzIgLT5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gICAgICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBvdXRwdXRfY2hhciBvYyAoY2hhcl9vZl9pbnQgKCFuIGxzciAyNCkpO1xuICAgICAgICAgIG4gOj0gIW4gbHNsIDhcbiAgICAgICAgZG9uZVxuICAgIHwgbiAtPlxuICAgICAgICBlcnJvciAoc3ByaW50ZiBcInVuc3VwcG9ydGVkIHdvcmQgc2l6ZSAoJWkpXCIgbilcblxubGV0IHJlYyByZWFkX2NodW5rIG9mX3N0cmluZyBpYyA9XG4gIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgICAgJ1xcMDAxJyAtPlxuICAgICAgICBsZXQgbGVuID0gaW5wdXRfaW50NjQgaWMgaW5cbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgIFwiQ29ycnVwdGVkIHN0cmVhbTogZXhjZXNzaXZlIGNodW5rIGxlbmd0aCAoJWkgYnl0ZXMpXCIgbGVuKTtcbiAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICAgICAgICBTb21lIChvZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKSlcblxuICAgIHwgJ1xcMDAwJyAtPiBOb25lXG5cbiAgICB8IGMgLT4gZXJyb3IgKHNwcmludGYgXCJDb3JydXB0ZWQgc3RyZWFtOiAlQ1wiIGMpXG5cblxubGV0IGZsYXR0ZW4gc3QgPVxuICBsZXQgYSA9IHJlZiBbfCB8XSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IHJlYyBuZXh0IGkgPVxuICAgIGlmICFwb3MgPj0gQXJyYXkubGVuZ3RoICFhIHRoZW4gKFxuICAgICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3Qgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgYScgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0O1xuICAgICAgICAgICAgYSA6PSBhJztcbiAgICAgICAgICAgIHBvcyA6PSAwO1xuICAgICAgICAgICAgbmV4dCBpXG4gICAgKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHggPSAoIWEpLighcG9zKSBpblxuICAgICAgaW5jciBwb3M7XG4gICAgICBTb21lIHhcbiAgICApXG4gIGluXG4gIFN0cmVhbS5mcm9tIG5leHRcblxuXG5sZXQgcmVhZF9zdHJlYW0gb2Zfc3RyaW5nIGljID1cbiAgZmxhdHRlbiAoU3RyZWFtLmZyb20gKGZ1biBpIC0+IHJlYWRfY2h1bmsgb2Zfc3RyaW5nIGljKSlcblxubGV0IHJldl9hcnJheV9vZl9saXN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+IFt8fF1cbiAgICB8IHggOjogdGwgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgICAgICAgICAgaGQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBhLihpKSA8LSBoZDtcbiAgICAgICAgICAgICAgICByIDo9IHRsO1xuICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYVxuXG5sZXQgd3JpdGVfc3RyZWFtID8oY2h1bmtfbGVuID0gMTAyNCkgdG9fc3RyaW5nIG9jIHN0ID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGxldCBmbHVzaF9jaHVuayAoKSA9XG4gICAgbGV0IGEgPSByZXZfYXJyYXlfb2ZfbGlzdCAhYWNjIGluXG4gICAgYWNjIDo9IFtdO1xuICAgIG4gOj0gMDtcbiAgICBsZXQgcyA9IHRvX3N0cmluZyBhIGluXG4gICAgb3V0cHV0X2NoYXIgb2MgJ1xcMDAxJztcbiAgICBvdXRwdXRfaW50NjQgb2MgKFN0cmluZy5sZW5ndGggcyk7XG4gICAgb3V0cHV0X3N0cmluZyBvYyBzXG4gIGluXG4gIFN0cmVhbS5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgaW5jciBuO1xuICAgICAgYWNjIDo9IHggOjogIWFjYztcbiAgICAgIGlmICFuID49IGNodW5rX2xlbiB0aGVuXG4gICAgICAgIGZsdXNoX2NodW5rICgpXG4gICkgc3Q7XG4gIGlmICFuID4gMCB0aGVuXG4gICAgZmx1c2hfY2h1bmsgKCk7XG4gIG91dHB1dF9jaGFyIG9jICdcXDAwMCdcblxuXG5sZXQgdGVzdCBsID1cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBhc3NlcnQgKHggPj0gMCAmJiB4IDw9IDkpKSBsO1xuICBsZXQgdG9fc3RyaW5nIGEgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCAoQXJyYXkudG9fbGlzdCBhKSlcbiAgaW5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChmdW4gaSAtPiBpbnRfb2Zfc3RyaW5nIChTdHJpbmcubWFrZSAxIHMuW2ldKSlcbiAgaW5cbiAgbGV0IHN0ID0gU3RyZWFtLm9mX2xpc3QgbCBpblxuICBsZXQgb2MgPSBvcGVuX291dCBcInRlc3Qtc3RyZWFtLmRhdFwiIGluXG4gIHdyaXRlX3N0cmVhbSB+Y2h1bmtfbGVuOjIgdG9fc3RyaW5nIG9jIHN0O1xuICBjbG9zZV9vdXQgb2M7XG5cbiAgbGV0IGljID0gb3Blbl9pbiBcInRlc3Qtc3RyZWFtLmRhdFwiIGluXG4gIGxldCBzdCcgPSByZWFkX3N0cmVhbSBvZl9zdHJpbmcgaWMgaW5cbiAgbGV0IGwnID0gcmVmIFtdIGluXG4gIFN0cmVhbS5pdGVyIChmdW4gaSAtPiBsJyA6PSBpIDo6ICFsJykgc3QnO1xuICBjbG9zZV9pbiBpYztcbiAgbCA9IExpc3QucmV2ICFsJ1xuIiwib3BlbiBQcmludGZcblxub3BlbiBCaV9vdXRidWZcbm9wZW4gQmlfaW5idWZcblxudHlwZSBub2RlX3RhZyA9IGludFxuXG5sZXQgYm9vbF90YWcgPSAwXG5sZXQgaW50OF90YWcgPSAxXG5sZXQgaW50MTZfdGFnID0gMlxubGV0IGludDMyX3RhZyA9IDNcbmxldCBpbnQ2NF90YWcgPSA0XG5sZXQgZmxvYXQzMl90YWcgPSAxMVxubGV0IGZsb2F0NjRfdGFnID0gMTJcbmxldCB1dmludF90YWcgPSAxNlxubGV0IHN2aW50X3RhZyA9IDE3XG5sZXQgc3RyaW5nX3RhZyA9IDE4XG5sZXQgYXJyYXlfdGFnID0gMTlcbmxldCB0dXBsZV90YWcgPSAyMFxubGV0IHJlY29yZF90YWcgPSAyMVxubGV0IG51bV92YXJpYW50X3RhZyA9IDIyXG5sZXQgdmFyaWFudF90YWcgPSAyM1xubGV0IHVuaXRfdGFnID0gMjRcbmxldCB0YWJsZV90YWcgPSAyNVxubGV0IHNoYXJlZF90YWcgPSAyNlxuXG50eXBlIGhhc2ggPSBpbnRcblxuKCpcbiAgRGF0YSB0cmVlLCBmb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiopXG50eXBlIHRyZWUgPVxuICAgIFsgYFVuaXRcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQ4IG9mIGNoYXJcbiAgICB8IGBJbnQxNiBvZiBpbnRcbiAgICB8IGBJbnQzMiBvZiBJbnQzMi50XG4gICAgfCBgSW50NjQgb2YgSW50NjQudFxuICAgIHwgYEZsb2F0MzIgb2YgZmxvYXRcbiAgICB8IGBGbG9hdDY0IG9mIGZsb2F0XG4gICAgfCBgVXZpbnQgb2YgaW50XG4gICAgfCBgU3ZpbnQgb2YgaW50XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFycmF5IG9mIChub2RlX3RhZyAqIHRyZWUgYXJyYXkpIG9wdGlvblxuICAgIHwgYFR1cGxlIG9mIHRyZWUgYXJyYXlcbiAgICB8IGBSZWNvcmQgb2YgKHN0cmluZyBvcHRpb24gKiBoYXNoICogdHJlZSkgYXJyYXlcbiAgICB8IGBOdW1fdmFyaWFudCBvZiAoaW50ICogdHJlZSBvcHRpb24pXG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nIG9wdGlvbiAqIGhhc2ggKiB0cmVlIG9wdGlvbilcbiAgICB8IGBUYWJsZSBvZlxuXHQoKHN0cmluZyBvcHRpb24gKiBoYXNoICogbm9kZV90YWcpIGFycmF5ICogdHJlZSBhcnJheSBhcnJheSkgb3B0aW9uXG4gICAgfCBgU2hhcmVkIG9mIHRyZWUgXVxuXG4oKiBleHRlbmQgc2lnbiBiaXQgKilcbmxldCBtYWtlX3NpZ25lZCB4ID1cbiAgaWYgeCA+IDB4M0ZGRkZGRkYgdGhlbiB4IC0gKDEgbHNsIDMxKSBlbHNlIHhcblxuKCpcbiAgU2FtZSBmdW5jdGlvbiBhcyB0aGUgb25lIHVzZWQgZm9yIE9DYW1sIHZhcmlhbnRzIGFuZCBvYmplY3QgbWV0aG9kcy5cbiopXG5sZXQgaGFzaF9uYW1lIHMgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbWFrZV9zaWduZWQgIWFjY3VcblxuXG4oKlxuICBTdHJ1Y3R1cmUgb2YgYSBoYXNodGFnOiA0IGJ5dGVzLFxuXG4gIGFyZ2JpdCA3Yml0cyA4Yml0cyA4Yml0cyA4Yml0c1xuICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgICAgICAgICAgMzEtYml0IGhhc2hcblxuICBhcmdiaXQgPSAxIGlmZiBoYXNodGFnIGlzIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50LCB0aGlzIGlzIGFsd2F5cyAxIGZvclxuICAgICAgICAgICByZWNvcmQgZmllbGRzLlxuXG4qKVxuXG5sZXQgbWFza18zMWJpdCA9XG4gIGxldCBuID0gQmlfdXRpbC5pbnRfc2l6ZSAtIDMxIGluXG4gIGFzc2VydCAobiA+PSAwKTtcbiAgZnVuIHggLT4gKHggbHNsIG4pIGxzciBuXG5cbmxldCB3cml0ZV9oYXNodGFnIG9iIGggaGFzX2FyZyA9XG4gIGxldCBoID0gbWFza18zMWJpdCBoIGluXG4gIGxldCBwb3MgPSBCaV9vdXRidWYuYWxsb2Mgb2IgNCBpblxuICBsZXQgcyA9IG9iLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcyszKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysyKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIChcbiAgICBDaGFyLmNociAoXG4gICAgICBpZiBoYXNfYXJnIHRoZW4gaCBsb3IgMHg4MFxuICAgICAgZWxzZSBoXG4gICAgKVxuICApXG5cbmxldCBzdHJpbmdfb2ZfaGFzaHRhZyBoIGhhc19hcmcgPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDQgaW5cbiAgd3JpdGVfaGFzaHRhZyBvYiBoIGhhc19hcmc7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9oYXNodGFnIGliIGNvbnQgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDAgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpIGluXG4gIGxldCBoYXNfYXJnID0geDAgPj0gMHg4MCBpblxuICBsZXQgeDEgPSAoeDAgbGFuZCAweDdmKSBsc2wgMjQgaW5cbiAgbGV0IHgyID0gKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMSkpKSBsc2wgMTYgaW5cbiAgbGV0IHgzID0gKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMikpKSBsc2wgOCBpblxuICBsZXQgeDQgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzMpKSBpblxuICBsZXQgaCA9IG1ha2Vfc2lnbmVkICh4MSBsb3IgeDIgbG9yIHgzIGxvciB4NCkgaW5cblxuICBjb250IGliIGggaGFzX2FyZ1xuXG5cbmxldCByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDAgPSBDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyBpKSBpblxuICBpZiB4MCA8IDB4ODAgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCBmaWVsZCBoYXNodGFnKVwiO1xuICBsZXQgeDEgPSAoeDAgbGFuZCAweDdmKSBsc2wgMjQgaW5cbiAgbGV0IHgyID0gKENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzEpKSkgbHNsIDE2IGluXG4gIGxldCB4MyA9IChDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSsyKSkpIGxzbCA4IGluXG4gIGxldCB4NCA9IENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzMpKSBpblxuICBtYWtlX3NpZ25lZCAoeDEgbG9yIHgyIGxvciB4MyBsb3IgeDQpXG5cblxudHlwZSBpbnQ3ID0gaW50XG5cbmxldCB3cml0ZV9udW10YWcgb2IgaSBoYXNfYXJnID1cbiAgaWYgaSA8IDAgfHwgaSA+IDB4N2YgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCBudW10YWcpXCI7XG4gIGxldCB4ID1cbiAgICBpZiBoYXNfYXJnIHRoZW4gaSBsb3IgMHg4MFxuICAgIGVsc2UgaVxuICBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIHgpXG5cbmxldCByZWFkX251bXRhZyBpYiBjb250ID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDEgaW5cbiAgbGV0IHggPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBpYi5pX3MgaSkgaW5cbiAgbGV0IGhhc19hcmcgPSB4ID49IDB4ODAgaW5cbiAgY29udCBpYiAoeCBsYW5kIDB4N2YpIGhhc19hcmdcblxubGV0IG1ha2VfdW5oYXNoIGwgPVxuICBsZXQgdGJsID0gSGFzaHRibC5jcmVhdGUgKDQgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biBzIC0+XG4gICAgICBsZXQgaCA9IGhhc2hfbmFtZSBzIGluXG4gICAgICB0cnlcblx0bWF0Y2ggSGFzaHRibC5maW5kIHRibCBoIHdpdGhcblx0ICAgIFNvbWUgcycgLT5cblx0ICAgICAgaWYgcyA8PiBzJyB0aGVuXG5cdFx0ZmFpbHdpdGggKFxuXHRcdCAgc3ByaW50ZlxuXHRcdCAgICBcIkJpX2lvLm1ha2VfdW5oYXNoOiBcXFxuICAgICAgICAgICAgICAgICAgICAgJVMgYW5kICVTIGhhdmUgdGhlIHNhbWUgaGFzaCwgcGxlYXNlIHBpY2sgYW5vdGhlciBuYW1lXCJcblx0XHQgICAgcyBzJ1xuXHRcdClcblx0ICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG5cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IEhhc2h0YmwuYWRkIHRibCBoIChTb21lIHMpXG4gICkgbDtcbiAgZnVuIGggLT5cbiAgICB0cnkgSGFzaHRibC5maW5kIHRibCBoXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5cbmxldCB3cml0ZV90YWcgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgeClcblxubGV0IHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKCkgPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChpZiB4IHRoZW4gJ1xceDAxJyBlbHNlICdcXHgwMCcpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgeFxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50OCBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociB4KVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHggbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeCBsYW5kIDB4ZmYpKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeCA9XG4gIGxldCBoaWdoID0gSW50MzIudG9faW50IChJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIHggMTYpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKGhpZ2ggbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoaGlnaCBsYW5kIDB4ZmYpKTtcbiAgbGV0IGxvdyA9IEludDMyLnRvX2ludCB4IGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKChsb3cgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIChsb3cgbGFuZCAweGZmKSlcblxubGV0IHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeCA9XG4gIHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIChJbnQzMi5iaXRzX29mX2Zsb2F0IHgpXG5cbmxldCBmbG9hdF9lbmRpYW5uZXNzID0gbGF6eSAoXG4gIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgMS4wKSAwIHdpdGhcbiAgICAgICdcXHgzZicgLT4gYEJpZ1xuICAgIHwgJ1xceDAwJyAtPiBgTGl0dGxlXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDggaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5kb3VibGVfdGFnIDggaW5cbiAgKG1hdGNoIExhenkuZm9yY2UgZmxvYXRfZW5kaWFubmVzcyB3aXRoXG4gICAgICAgYExpdHRsZSAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCAoT2JqLm9iaiB4KSAoNy1qKSAoQnl0ZXMudW5zYWZlX2dldCBzIChpK2opKVxuXHQgZG9uZVxuICAgICB8IGBCaWcgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgKE9iai5vYmogeCkgaiAoQnl0ZXMudW5zYWZlX2dldCBzIChpK2opKVxuXHQgZG9uZVxuICApO1xuICAoT2JqLm9iaiB4IDogZmxvYXQpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHggPVxuICBsZXQgaSA9IEJpX291dGJ1Zi5hbGxvYyBvYiA4IGluXG4gIGxldCBzID0gb2Iub19zIGluXG4gIChtYXRjaCBMYXp5LmZvcmNlIGZsb2F0X2VuZGlhbm5lc3Mgd2l0aFxuICAgICAgIGBMaXR0bGUgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgcyAoaStqKSAoU3RyaW5nLnVuc2FmZV9nZXQgKE9iai5tYWdpYyB4KSAoNy1qKSlcblx0IGRvbmVcbiAgICAgfCBgQmlnIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IHMgKGkraikgKFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgeCkgailcblx0IGRvbmVcbiAgKVxuXG4oKlxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHggPVxuICBsZXQgeDQgPSBJbnQ2NC50b19pbnQgKEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCA0OCkgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDQgbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDQgbGFuZCAweGZmKSk7XG4gIGxldCB4MyA9IEludDY0LnRvX2ludCAoSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDMyKSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDMgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MyBsYW5kIDB4ZmYpKTtcbiAgbGV0IHgyID0gSW50NjQudG9faW50IChJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMTYpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKCh4MiBsc3IgOCkgbGFuZCAweGZmKSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHgyIGxhbmQgMHhmZikpO1xuICBsZXQgeDEgPSBJbnQ2NC50b19pbnQgeCBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDEgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MSBsYW5kIDB4ZmYpKVxuKilcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHggPVxuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIChJbnQ2NC5mbG9hdF9vZl9iaXRzIHgpXG5cblxubGV0IHNhZmV0eV90ZXN0ICgpID1cbiAgbGV0IHMgPSBcIlxceDNmXFx4ZjBcXHgwNlxceDA1XFx4MDRcXHgwM1xceDAyXFx4MDFcIiBpblxuICBsZXQgeCA9IDEuMDAxNDY5NjI3MDY2NTEyODggaW5cbiAgbGV0IHkgPSByZWFkX3VudGFnZ2VkX2Zsb2F0NjQgKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpIGluXG4gIGlmIHggPD4geSB0aGVuXG4gICAgYXNzZXJ0IGZhbHNlO1xuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDggaW5cbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4O1xuICBpZiBCaV9vdXRidWYuY29udGVudHMgb2IgPD4gcyB0aGVuXG4gICAgYXNzZXJ0IGZhbHNlXG5cblxuXG5sZXQgd3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHMgPVxuICBCaV92aW50LndyaXRlX3V2aW50IG9iIChTdHJpbmcubGVuZ3RoIHMpO1xuICBCaV9vdXRidWYuYWRkX3N0cmluZyBvYiBzXG5cbmxldCB3cml0ZV91bnRhZ2dlZF91dmludCA9IEJpX3ZpbnQud3JpdGVfdXZpbnRcbmxldCB3cml0ZV91bnRhZ2dlZF9zdmludCA9IEJpX3ZpbnQud3JpdGVfc3ZpbnRcblxubGV0IHdyaXRlX3VuaXQgb2IgKCkgPVxuICB3cml0ZV90YWcgb2IgdW5pdF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKClcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBib29sX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4XG5cbmxldCB3cml0ZV9jaGFyIG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50OF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2NoYXIgb2IgeFxuXG5sZXQgd3JpdGVfaW50OCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQ4IG9iIHhcblxubGV0IHdyaXRlX2ludDE2IG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50MTZfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4XG5cbmxldCB3cml0ZV9pbnQzMiBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDMyX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeFxuXG5sZXQgd3JpdGVfaW50NjQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQ2NF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHhcblxubGV0IHdyaXRlX2Zsb2F0MzIgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBmbG9hdDMyX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4XG5cbmxldCB3cml0ZV9mbG9hdDY0IG9iIHggPVxuICB3cml0ZV90YWcgb2IgZmxvYXQ2NF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeFxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHggPVxuICB3cml0ZV90YWcgb2Igc3RyaW5nX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHhcblxubGV0IHdyaXRlX3V2aW50IG9iIHggPVxuICB3cml0ZV90YWcgb2IgdXZpbnRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF91dmludCBvYiB4XG5cbmxldCB3cml0ZV9zdmludCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHN2aW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfc3ZpbnQgb2IgeFxuXG5cblxuXG5sZXQgcmVjIHdyaXRlX3Qgb2IgdGFnZ2VkICh4IDogdHJlZSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBVbml0IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHVuaXRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpXG5cbiAgICB8IGBCb29sIHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgYm9vbF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeFxuXG4gICAgfCBgSW50OCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHhcblxuICAgIHwgYEludDE2IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50MTZfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4XG5cbiAgICB8IGBJbnQzMiB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDMyX3RhZztcblx0d3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeFxuXG4gICAgfCBgSW50NjQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQ2NF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHhcblxuICAgIHwgYEZsb2F0MzIgeCAtPlxuICAgICAgICBpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBmbG9hdDMyX3RhZztcblx0d3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4XG5cbiAgICB8IGBGbG9hdDY0IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgZmxvYXQ2NF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeFxuXG4gICAgfCBgVXZpbnQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB1dmludF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgeFxuXG4gICAgfCBgU3ZpbnQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBzdmludF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfc3ZpbnQgb2IgeFxuXG4gICAgfCBgU3RyaW5nIHMgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2Igc3RyaW5nX3RhZztcblx0d3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHNcblxuICAgIHwgYEFycmF5IG8gLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgYXJyYXlfdGFnO1xuXHQobWF0Y2ggbyB3aXRoXG5cdCAgICAgTm9uZSAtPiBCaV92aW50LndyaXRlX3V2aW50IG9iIDBcblx0ICAgfCBTb21lIChub2RlX3RhZywgYSkgLT5cblx0ICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuXHQgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiBsZW47XG5cdCAgICAgICBpZiBsZW4gPiAwIHRoZW4gKFxuXHRcdCB3cml0ZV90YWcgb2Igbm9kZV90YWc7XG5cdFx0IEFycmF5Lml0ZXIgKHdyaXRlX3Qgb2IgZmFsc2UpIGFcblx0ICAgICAgIClcblx0KVxuXG4gICAgfCBgVHVwbGUgYSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB0dXBsZV90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgKEFycmF5Lmxlbmd0aCBhKTtcblx0QXJyYXkuaXRlciAod3JpdGVfdCBvYiB0cnVlKSBhXG5cbiAgICB8IGBSZWNvcmQgYSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiByZWNvcmRfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIChBcnJheS5sZW5ndGggYSk7XG4gICAgICAgIEFycmF5Lml0ZXIgKHdyaXRlX2ZpZWxkIG9iKSBhXG5cbiAgICB8IGBOdW1fdmFyaWFudCAoaSwgeCkgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgbnVtX3ZhcmlhbnRfdGFnO1xuXHR3cml0ZV9udW10YWcgb2IgaSAoeCA8PiBOb25lKTtcblx0KG1hdGNoIHggd2l0aFxuXHQgICAgIE5vbmUgLT4gKClcblx0ICAgfCBTb21lIHYgLT4gd3JpdGVfdCBvYiB0cnVlIHYpXG5cbiAgICB8IGBWYXJpYW50IChvLCBoLCB4KSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB2YXJpYW50X3RhZztcblx0d3JpdGVfaGFzaHRhZyBvYiBoICh4IDw+IE5vbmUpO1xuXHQobWF0Y2ggeCB3aXRoXG5cdCAgICAgTm9uZSAtPiAoKVxuXHQgICB8IFNvbWUgdiAtPiB3cml0ZV90IG9iIHRydWUgdilcblxuICAgIHwgYFRhYmxlIG8gLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdGFibGVfdGFnO1xuXHQobWF0Y2ggbyB3aXRoXG5cdCAgICAgTm9uZSAtPiBCaV92aW50LndyaXRlX3V2aW50IG9iIDBcblx0ICAgfCBTb21lIChmaWVsZHMsIGEpIC0+XG5cdCAgICAgICBsZXQgcm93X251bSA9IEFycmF5Lmxlbmd0aCBhIGluXG5cdCAgICAgICBCaV92aW50LndyaXRlX3V2aW50IG9iIHJvd19udW07XG5cdCAgICAgICBpZiByb3dfbnVtID4gMCB0aGVuXG5cdFx0IGxldCBjb2xfbnVtID0gQXJyYXkubGVuZ3RoIGZpZWxkcyBpblxuXHRcdCBCaV92aW50LndyaXRlX3V2aW50IG9iIGNvbF9udW07XG5cdFx0IEFycmF5Lml0ZXIgKFxuXHRcdCAgIGZ1biAobmFtZSwgaCwgdGFnKSAtPlxuXHRcdCAgICAgd3JpdGVfaGFzaHRhZyBvYiBoIHRydWU7XG5cdFx0ICAgICB3cml0ZV90YWcgb2IgdGFnXG5cdFx0ICkgZmllbGRzO1xuXHRcdCBpZiByb3dfbnVtID4gMCB0aGVuIChcblx0XHQgICBmb3IgaSA9IDAgdG8gcm93X251bSAtIDEgZG9cblx0XHQgICAgIGxldCBhaSA9IGEuKGkpIGluXG5cdFx0ICAgICBpZiBBcnJheS5sZW5ndGggYWkgPD4gY29sX251bSB0aGVuXG5cdFx0ICAgICAgIGludmFsaWRfYXJnIFwiQmlfaW8ud3JpdGVfdDogTWFsZm9ybWVkIGBUYWJsZVwiO1xuXHRcdCAgICAgZm9yIGogPSAwIHRvIGNvbF9udW0gLSAxIGRvXG5cdFx0ICAgICAgIHdyaXRlX3Qgb2IgZmFsc2UgYWkuKGopXG5cdFx0ICAgICBkb25lXG5cdFx0ICAgZG9uZVxuXHRcdCApXG5cdClcblxuICAgIHwgYFNoYXJlZCB4IC0+XG4gICAgICAgIGlmIHRhZ2dlZCB0aGVuXG4gICAgICAgICAgd3JpdGVfdGFnIG9iIHNoYXJlZF90YWc7XG4gICAgICAgIGxldCBvZmZzZXQgPVxuICAgICAgICAgIEJpX3NoYXJlLldyLnB1dCBvYi5vX3NoYXJlZFxuICAgICAgICAgICAgKHgsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIChvYi5vX29mZnMgKyBvYi5vX2xlbikgaW5cbiAgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiBvZmZzZXQ7XG4gICAgICAgIGlmIG9mZnNldCA9IDAgdGhlblxuICAgICAgICAgIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmFuZCB3cml0ZV9maWVsZCBvYiAocywgaCwgeCkgPVxuICB3cml0ZV9oYXNodGFnIG9iIGggdHJ1ZTtcbiAgd3JpdGVfdCBvYiB0cnVlIHhcblxubGV0IHdyaXRlX3RyZWUgb2IgeCA9XG4gIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmxldCBzdHJpbmdfb2ZfdHJlZSB4ID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSAxMDAwIGluXG4gIHdyaXRlX3RyZWUgb2IgeDtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIG9iXG5cbmxldCB0YWdfb2ZfdHJlZSAoeCA6IHRyZWUpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgVW5pdCAtPiB1bml0X3RhZ1xuICAgIHwgYEJvb2wgXyAtPiBib29sX3RhZ1xuICAgIHwgYEludDggXyAtPiBpbnQ4X3RhZ1xuICAgIHwgYEludDE2IF8gLT4gaW50MTZfdGFnXG4gICAgfCBgSW50MzIgXyAtPiBpbnQzMl90YWdcbiAgICB8IGBJbnQ2NCBfIC0+IGludDY0X3RhZ1xuICAgIHwgYEZsb2F0MzIgXyAtPiBmbG9hdDMyX3RhZ1xuICAgIHwgYEZsb2F0NjQgXyAtPiBmbG9hdDY0X3RhZ1xuICAgIHwgYFV2aW50IF8gLT4gdXZpbnRfdGFnXG4gICAgfCBgU3ZpbnQgXyAtPiBzdmludF90YWdcbiAgICB8IGBTdHJpbmcgXyAtPiBzdHJpbmdfdGFnXG4gICAgfCBgQXJyYXkgXyAtPiBhcnJheV90YWdcbiAgICB8IGBUdXBsZSBfIC0+IHR1cGxlX3RhZ1xuICAgIHwgYFJlY29yZCBfIC0+IHJlY29yZF90YWdcbiAgICB8IGBOdW1fdmFyaWFudCBfIC0+IG51bV92YXJpYW50X3RhZ1xuICAgIHwgYFZhcmlhbnQgXyAtPiB2YXJpYW50X3RhZ1xuICAgIHwgYFRhYmxlIF8gLT4gdGFibGVfdGFnXG4gICAgfCBgU2hhcmVkIF8gLT4gc2hhcmVkX3RhZ1xuXG5cbmxldCByZWFkX3RhZyBpYiA9XG4gIENoYXIuY29kZSAoQmlfaW5idWYucmVhZF9jaGFyIGliKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF91bml0IGliID1cbiAgbWF0Y2ggQmlfaW5idWYucmVhZF9jaGFyIGliIHdpdGhcbiAgICAgICdcXHgwMCcgLT4gKClcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhICh1bml0IHZhbHVlKVwiXG5cbmxldCByZWFkX3VudGFnZ2VkX2Jvb2wgaWIgPVxuICBtYXRjaCBCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIgd2l0aFxuICAgICAgJ1xceDAwJyAtPiBmYWxzZVxuICAgIHwgJ1xceDAxJyAtPiB0cnVlXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoYm9vbCB2YWx1ZSlcIlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9jaGFyIGliID0gQmlfaW5idWYucmVhZF9jaGFyIGliXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDggaWIgPVxuICBDaGFyLmNvZGUgKEJpX2luYnVmLnJlYWRfY2hhciBpYilcblxubGV0IHJlYWRfdW50YWdnZWRfaW50MTYgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgMiBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICAoKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkpIGxzbCA4KSBsb3IgKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMSkpKVxuXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDMyIGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IGdldF9jb2RlIHMgaSA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkgaW5cbiAgbGV0IHgxID1cbiAgICBJbnQzMi5vZl9pbnQgKCgoZ2V0X2NvZGUgcyAoaSAgKSkgbHNsIDgpIGxvciAoZ2V0X2NvZGUgcyAoaSsxKSkpIGluXG4gIGxldCB4MiA9XG4gICAgSW50MzIub2ZfaW50ICgoKGdldF9jb2RlIHMgKGkrMikpIGxzbCA4KSBsb3IgKGdldF9jb2RlIHMgKGkrMykpKSBpblxuICBJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCB4MSAxNikgeDJcblxubGV0IHJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYiA9XG4gIEludDMyLmZsb2F0X29mX2JpdHMgKHJlYWRfdW50YWdnZWRfaW50MzIgaWIpXG5cbigqXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ2NCBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA4IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4MSA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpICBdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSsxXSkpIGluXG4gIGxldCB4MiA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzJdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSszXSkpIGluXG4gIGxldCB4MyA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzRdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSs1XSkpIGluXG4gIGxldCB4NCA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzZdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSs3XSkpIGluXG4gIEludDY0LmxvZ29yIChJbnQ2NC5zaGlmdF9sZWZ0IHgxIDQ4KVxuICAgIChJbnQ2NC5sb2dvciAoSW50NjQuc2hpZnRfbGVmdCB4MiAzMilcbiAgICAgICAoSW50NjQubG9nb3IgKEludDY0LnNoaWZ0X2xlZnQgeDMgMTYpIHg0KSlcbiopXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDY0IGliID1cbiAgSW50NjQuYml0c19vZl9mbG9hdCAocmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliKVxuXG5cblxubGV0IHJlYWRfdW50YWdnZWRfc3RyaW5nIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IHJlbSA9IHJlZiBsZW4gaW5cbiAgd2hpbGUgIXJlbSA+IDAgZG9cbiAgICBsZXQgYnl0ZXNfcmVhZCA9IEJpX2luYnVmLnRyeV9wcmVyZWFkIGliICFyZW0gaW5cbiAgICBpZiBieXRlc19yZWFkID0gMCB0aGVuXG4gICAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKHN0cmluZylcIlxuICAgIGVsc2UgKFxuICAgICAgQnl0ZXMuYmxpdCBpYi5pX3MgaWIuaV9wb3Mgc3RyICFwb3MgYnl0ZXNfcmVhZDtcbiAgICAgIGliLmlfcG9zIDwtIGliLmlfcG9zICsgYnl0ZXNfcmVhZDtcbiAgICAgIHBvcyA6PSAhcG9zICsgYnl0ZXNfcmVhZDtcbiAgICAgIHJlbSA6PSAhcmVtIC0gYnl0ZXNfcmVhZFxuICAgIClcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHN0clxuXG5sZXQgcmVhZF91bnRhZ2dlZF91dmludCA9IEJpX3ZpbnQucmVhZF91dmludFxubGV0IHJlYWRfdW50YWdnZWRfc3ZpbnQgPSBCaV92aW50LnJlYWRfc3ZpbnRcblxubGV0IHJlYWRfdW5pdCBpYiA9IHJlYWRfdW50YWdnZWRfdW5pdCBpYjsgYFVuaXRcblxubGV0IHJlYWRfYm9vbCBpYiA9IGBCb29sIChyZWFkX3VudGFnZ2VkX2Jvb2wgaWIpXG5cbmxldCByZWFkX2ludDggaWIgPSBgSW50OCAocmVhZF91bnRhZ2dlZF9jaGFyIGliKVxuXG5sZXQgcmVhZF9pbnQxNiBpYiA9IGBJbnQxNiAocmVhZF91bnRhZ2dlZF9pbnQxNiBpYilcblxubGV0IHJlYWRfaW50MzIgaWIgPSBgSW50MzIgKHJlYWRfdW50YWdnZWRfaW50MzIgaWIpXG5cbmxldCByZWFkX2ludDY0IGliID0gYEludDY0IChyZWFkX3VudGFnZ2VkX2ludDY0IGliKVxuXG5sZXQgcmVhZF9mbG9hdDMyIGliID1cbiAgYEZsb2F0MzIgKHJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYilcblxubGV0IHJlYWRfZmxvYXQ2NCBpYiA9XG4gIGBGbG9hdDY0IChyZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWIpXG5cbmxldCByZWFkX3V2aW50IGliID0gYFV2aW50IChyZWFkX3VudGFnZ2VkX3V2aW50IGliKVxubGV0IHJlYWRfc3ZpbnQgaWIgPSBgU3ZpbnQgKHJlYWRfdW50YWdnZWRfc3ZpbnQgaWIpXG5cbmxldCByZWFkX3N0cmluZyBpYiA9IGBTdHJpbmcgKHJlYWRfdW50YWdnZWRfc3RyaW5nIGliKVxuXG5sZXQgcHJpbnQgcyA9IHByaW50X3N0cmluZyBzOyBwcmludF9uZXdsaW5lICgpXG5cbmxldCByZWFkX3RyZWUgPyh1bmhhc2ggPSBtYWtlX3VuaGFzaCBbXSkgaWIgOiB0cmVlID1cblxuICBsZXQgcmVjIHJlYWRfYXJyYXkgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiBsZW4gPSAwIHRoZW4gYEFycmF5IE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgdGFnID0gcmVhZF90YWcgaWIgaW5cbiAgICAgIGxldCByZWFkID0gcmVhZGVyX29mX3RhZyB0YWcgaW5cbiAgICAgIGBBcnJheSAoU29tZSAodGFnLCBBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZCBpYikpKVxuXG4gIGFuZCByZWFkX3R1cGxlIGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgYFR1cGxlIChBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZF90cmVlIGliKSlcblxuICBhbmQgcmVhZF9maWVsZCBpYiA9XG4gICAgbGV0IGggPSByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgaW5cbiAgICBsZXQgbmFtZSA9IHVuaGFzaCBoIGluXG4gICAgbGV0IHggPSByZWFkX3RyZWUgaWIgaW5cbiAgICAobmFtZSwgaCwgeClcblxuICBhbmQgcmVhZF9yZWNvcmQgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBgUmVjb3JkIChBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZF9maWVsZCBpYikpXG5cbiAgYW5kIHJlYWRfbnVtX3ZhcmlhbnRfY29udCBpYiBpIGhhc19hcmcgPVxuICAgIGxldCB4ID1cbiAgICAgIGlmIGhhc19hcmcgdGhlblxuXHRTb21lIChyZWFkX3RyZWUgaWIpXG4gICAgICBlbHNlXG5cdE5vbmVcbiAgICBpblxuICAgIGBOdW1fdmFyaWFudCAoaSwgeClcblxuICBhbmQgcmVhZF9udW1fdmFyaWFudCBpYiA9XG4gICAgcmVhZF9udW10YWcgaWIgcmVhZF9udW1fdmFyaWFudF9jb250XG5cbiAgYW5kIHJlYWRfdmFyaWFudF9jb250IGliIGggaGFzX2FyZyA9XG4gICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuICAgIGxldCB4ID1cbiAgICAgIGlmIGhhc19hcmcgdGhlblxuXHRTb21lIChyZWFkX3RyZWUgaWIpXG4gICAgICBlbHNlXG5cdE5vbmVcbiAgICBpblxuICAgIGBWYXJpYW50IChuYW1lLCBoLCB4KVxuXG4gIGFuZCByZWFkX3ZhcmlhbnQgaWIgPVxuICAgIHJlYWRfaGFzaHRhZyBpYiByZWFkX3ZhcmlhbnRfY29udFxuXG4gIGFuZCByZWFkX3RhYmxlIGliID1cbiAgICBsZXQgcm93X251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGlmIHJvd19udW0gPSAwIHRoZW5cbiAgICAgIGBUYWJsZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IGNvbF9udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICAgIGxldCBmaWVsZHMgPVxuXHRBcnJheS5pbml0IGNvbF9udW0gKFxuXHQgIGZ1biBfIC0+XG5cdCAgICBsZXQgaCA9IHJlYWRfZmllbGRfaGFzaHRhZyBpYiBpblxuXHQgICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuXHQgICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG5cdCAgICAobmFtZSwgaCwgdGFnKVxuXHQpXG4gICAgICBpblxuICAgICAgbGV0IHJlYWRlcnMgPVxuXHRBcnJheS5tYXAgKGZ1biAobmFtZSwgaCwgdGFnKSAtPiByZWFkZXJfb2ZfdGFnIHRhZykgZmllbGRzIGluXG4gICAgICBsZXQgYSA9XG5cdEFycmF5LmluaXQgcm93X251bVxuXHQgIChmdW4gXyAtPlxuXHQgICAgIEFycmF5LmluaXQgY29sX251bSAoZnVuIGogLT4gcmVhZGVycy4oaikgaWIpKVxuICAgICAgaW5cbiAgICAgIGBUYWJsZSAoU29tZSAoZmllbGRzLCBhKSlcblxuICBhbmQgcmVhZF9zaGFyZWQgaWIgPVxuICAgIGxldCBwb3MgPSBpYi5pX29mZnMgKyBpYi5pX3BvcyBpblxuICAgIGxldCBvZmZzZXQgPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiBvZmZzZXQgPSAwIHRoZW5cbiAgICAgIGxldCByZWMgciA9IGBTaGFyZWQgciBpblxuICAgICAgQmlfc2hhcmUuUmQucHV0IGliLmlfc2hhcmVkXG4gICAgICAgIChwb3MsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIChPYmoucmVwciByKTtcbiAgICAgIGxldCB4ID0gcmVhZF90cmVlIGliIGluXG4gICAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciByKSAxIChPYmoucmVwciB4KTtcbiAgICAgIHJcbiAgICBlbHNlXG4gICAgICBPYmoub2JqIChCaV9zaGFyZS5SZC5nZXQgaWIuaV9zaGFyZWRcbiAgICAgICAgICAgICAgICAgKHBvcyAtIG9mZnNldCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkpXG5cbiAgYW5kIHJlYWRlcl9vZl90YWcgPSBmdW5jdGlvblxuICAgICAgMCAoKiBib29sICopIC0+IHJlYWRfYm9vbFxuICAgIHwgMSAoKiBpbnQ4ICopIC0+IHJlYWRfaW50OFxuICAgIHwgMiAoKiBpbnQxNiAqKSAtPiByZWFkX2ludDE2XG4gICAgfCAzICgqIGludDMyICopIC0+IHJlYWRfaW50MzJcbiAgICB8IDQgKCogaW50NjQgKikgLT4gcmVhZF9pbnQ2NFxuICAgIHwgMTEgKCogZmxvYXQzMiAqKSAtPiByZWFkX2Zsb2F0MzJcbiAgICB8IDEyICgqIGZsb2F0NjQgKikgLT4gcmVhZF9mbG9hdDY0XG4gICAgfCAxNiAoKiB1dmludCAqKSAtPiByZWFkX3V2aW50XG4gICAgfCAxNyAoKiBzdmludCAqKSAtPiByZWFkX3N2aW50XG4gICAgfCAxOCAoKiBzdHJpbmcgKikgLT4gcmVhZF9zdHJpbmdcbiAgICB8IDE5ICgqIGFycmF5ICopIC0+IHJlYWRfYXJyYXlcbiAgICB8IDIwICgqIHR1cGxlICopIC0+IHJlYWRfdHVwbGVcbiAgICB8IDIxICgqIHJlY29yZCAqKSAtPiByZWFkX3JlY29yZFxuICAgIHwgMjIgKCogbnVtX3ZhcmlhbnQgKikgLT4gcmVhZF9udW1fdmFyaWFudFxuICAgIHwgMjMgKCogdmFyaWFudCAqKSAtPiByZWFkX3ZhcmlhbnRcbiAgICB8IDI0ICgqIHVuaXQgKikgLT4gcmVhZF91bml0XG4gICAgfCAyNSAoKiB0YWJsZSAqKSAtPiByZWFkX3RhYmxlXG4gICAgfCAyNiAoKiBzaGFyZWQgKikgLT4gcmVhZF9zaGFyZWRcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIHRhZylcIlxuXG4gIGFuZCByZWFkX3RyZWUgaWIgOiB0cmVlID1cbiAgICByZWFkZXJfb2ZfdGFnIChyZWFkX3RhZyBpYikgaWJcblxuICBpblxuICByZWFkX3RyZWUgaWJcblxubGV0IHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcyA9IHJlYWRfdHJlZSA/dW5oYXNoIChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKVxuXG5cbmxldCBza2lwX2J5dGVzIGliIG4gPSBpZ25vcmUgKEJpX2luYnVmLnJlYWQgaWIgbilcblxubGV0IHNraXBfdW5pdCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfYm9vbCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfaW50OCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfaW50MTYgaWIgPSBza2lwX2J5dGVzIGliIDJcbmxldCBza2lwX2ludDMyIGliID0gc2tpcF9ieXRlcyBpYiA0XG5sZXQgc2tpcF9pbnQ2NCBpYiA9IHNraXBfYnl0ZXMgaWIgOFxubGV0IHNraXBfZmxvYXQzMiBpYiA9IHNraXBfYnl0ZXMgaWIgNFxubGV0IHNraXBfZmxvYXQ2NCBpYiA9IHNraXBfYnl0ZXMgaWIgOFxubGV0IHNraXBfdXZpbnQgaWIgPSBpZ25vcmUgKHJlYWRfdW50YWdnZWRfdXZpbnQgaWIpXG5sZXQgc2tpcF9zdmludCBpYiA9IGlnbm9yZSAocmVhZF91bnRhZ2dlZF9zdmludCBpYilcblxubGV0IHNraXBfc3RyaW5nIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBza2lwX2J5dGVzIGliIGxlblxuXG5sZXQgcmVjIHNraXBfYXJyYXkgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG4gICAgbGV0IHJlYWQgPSBza2lwcGVyX29mX3RhZyB0YWcgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIGRvXG4gICAgICByZWFkIGliXG4gICAgZG9uZVxuXG5hbmQgc2tpcF90dXBsZSBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgZm9yIGkgPSAxIHRvIGxlbiBkb1xuICAgIHNraXAgaWJcbiAgZG9uZVxuXG5hbmQgc2tpcF9maWVsZCBpYiA9XG4gIGlnbm9yZSAocmVhZF9maWVsZF9oYXNodGFnIGliKTtcbiAgc2tpcCBpYlxuXG5hbmQgc2tpcF9yZWNvcmQgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGZvciBpID0gMSB0byBsZW4gZG9cbiAgICBza2lwX2ZpZWxkIGliXG4gIGRvbmVcblxuYW5kIHNraXBfbnVtX3ZhcmlhbnRfY29udCBpYiBpIGhhc19hcmcgPVxuICBpZiBoYXNfYXJnIHRoZW5cbiAgICBza2lwIGliXG5cbmFuZCBza2lwX251bV92YXJpYW50IGliID1cbiAgcmVhZF9udW10YWcgaWIgc2tpcF9udW1fdmFyaWFudF9jb250XG5cbmFuZCBza2lwX3ZhcmlhbnRfY29udCBpYiBoIGhhc19hcmcgPVxuICBpZiBoYXNfYXJnIHRoZW5cbiAgICBza2lwIGliXG5cbmFuZCBza2lwX3ZhcmlhbnQgaWIgPVxuICByZWFkX2hhc2h0YWcgaWIgc2tpcF92YXJpYW50X2NvbnRcblxuYW5kIHNraXBfdGFibGUgaWIgPVxuICBsZXQgcm93X251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiByb3dfbnVtID0gMCB0aGVuXG4gICAgKClcbiAgZWxzZVxuICAgIGxldCBjb2xfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgbGV0IHJlYWRlcnMgPVxuICAgICAgQXJyYXkuaW5pdCBjb2xfbnVtIChcblx0ZnVuIF8gLT5cblx0ICBpZ25vcmUgKHJlYWRfZmllbGRfaGFzaHRhZyBpYik7XG5cdCAgc2tpcHBlcl9vZl90YWcgKHJlYWRfdGFnIGliKVxuICAgICAgKVxuICAgIGluXG4gICAgZm9yIGkgPSAxIHRvIHJvd19udW0gZG9cbiAgICAgIGZvciBqID0gMSB0byBjb2xfbnVtIGRvXG5cdHJlYWRlcnMuKGopIGliXG4gICAgICBkb25lXG4gICAgZG9uZVxuXG5hbmQgc2tpcHBlcl9vZl90YWcgPSBmdW5jdGlvblxuICAgIDAgKCogYm9vbCAqKSAtPiBza2lwX2Jvb2xcbiAgfCAxICgqIGludDggKikgLT4gc2tpcF9pbnQ4XG4gIHwgMiAoKiBpbnQxNiAqKSAtPiBza2lwX2ludDE2XG4gIHwgMyAoKiBpbnQzMiAqKSAtPiBza2lwX2ludDMyXG4gIHwgNCAoKiBpbnQ2NCAqKSAtPiBza2lwX2ludDY0XG4gIHwgMTEgKCogZmxvYXQzMiAqKSAtPiBza2lwX2Zsb2F0MzJcbiAgfCAxMiAoKiBmbG9hdDY0ICopIC0+IHNraXBfZmxvYXQ2NFxuICB8IDE2ICgqIHV2aW50ICopIC0+IHNraXBfdXZpbnRcbiAgfCAxNyAoKiBzdmludCAqKSAtPiBza2lwX3N2aW50XG4gIHwgMTggKCogc3RyaW5nICopIC0+IHNraXBfc3RyaW5nXG4gIHwgMTkgKCogYXJyYXkgKikgLT4gc2tpcF9hcnJheVxuICB8IDIwICgqIHR1cGxlICopIC0+IHNraXBfdHVwbGVcbiAgfCAyMSAoKiByZWNvcmQgKikgLT4gc2tpcF9yZWNvcmRcbiAgfCAyMiAoKiBudW1fdmFyaWFudCAqKSAtPiBza2lwX251bV92YXJpYW50XG4gIHwgMjMgKCogdmFyaWFudCAqKSAtPiBza2lwX3ZhcmlhbnRcbiAgfCAyNCAoKiB1bml0ICopIC0+IHNraXBfdW5pdFxuICB8IDI1ICgqIHRhYmxlICopIC0+IHNraXBfdGFibGVcbiAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCB0YWcpXCJcblxuYW5kIHNraXAgaWIgOiB1bml0ID1cbiAgc2tpcHBlcl9vZl90YWcgKHJlYWRfdGFnIGliKSBpYlxuXG5cbigqIEVxdWl2YWxlbnQgb2YgQXJyYXkubWFwIHRoYXQgZ3VhcmFudGVlcyBhIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbmxldCBhcnJheV9tYXAgZiBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGlmIGxlbiA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCByID0gQXJyYXkubWFrZSBsZW4gKGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgKVxuXG5cbm1vZHVsZSBQcCA9XG5zdHJ1Y3RcbiAgb3BlbiBFYXN5X2Zvcm1hdFxuXG4gIGxldCBhcnJheSA9IGxpc3RcbiAgbGV0IHJlY29yZCA9IGxpc3RcbiAgbGV0IHR1cGxlID0geyBsaXN0IHdpdGhcblx0XHQgIHNwYWNlX2FmdGVyX29wZW5pbmcgPSBmYWxzZTtcblx0XHQgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gZmFsc2U7XG5cdFx0ICBhbGlnbl9jbG9zaW5nID0gZmFsc2UgfVxuICBsZXQgdmFyaWFudCA9IHsgbGlzdCB3aXRoXG5cdFx0ICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWUgfVxuXG4gIGxldCBtYXAgZiBhID0gQXJyYXkudG9fbGlzdCAoYXJyYXlfbWFwIGYgYSlcblxuICBsZXQgcmVjIGZvcm1hdCBzaGFyZWQgKHggOiB0cmVlKSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIGBVbml0IC0+IEF0b20gKFwidW5pdFwiLCBhdG9tKVxuICAgICAgfCBgQm9vbCB4IC0+IEF0b20gKChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpLCBhdG9tKVxuICAgICAgfCBgSW50OCB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwMnhcIiAoQ2hhci5jb2RlIHgpLCBhdG9tKVxuICAgICAgfCBgSW50MTYgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDR4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEludDMyIHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTA4bHhcIiB4LCBhdG9tKVxuICAgICAgfCBgSW50NjQgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDE2THhcIiB4LCBhdG9tKVxuICAgICAgfCBgRmxvYXQzMiB4IC0+IEF0b20gKHN0cmluZ19vZl9mbG9hdCB4LCBhdG9tKVxuICAgICAgfCBgRmxvYXQ2NCB4IC0+IEF0b20gKHN0cmluZ19vZl9mbG9hdCB4LCBhdG9tKVxuICAgICAgfCBgVXZpbnQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfaW50IHgsIGF0b20pXG4gICAgICB8IGBTdmludCB4IC0+IEF0b20gKHN0cmluZ19vZl9pbnQgeCwgYXRvbSlcbiAgICAgIHwgYFN0cmluZyBzIC0+IEF0b20gKHNwcmludGYgXCIlU1wiIHMsIGF0b20pXG4gICAgICB8IGBBcnJheSBOb25lIC0+IEF0b20gKFwiW11cIiwgYXRvbSlcbiAgICAgIHwgYEFycmF5IChTb21lIChfLCBhKSkgLT5cbiAgICAgICAgICBMaXN0ICgoXCJbXCIsIFwiLFwiLCBcIl1cIiwgYXJyYXkpLCBtYXAgKGZvcm1hdCBzaGFyZWQpIGEpXG4gICAgICB8IGBUdXBsZSBhIC0+IExpc3QgKChcIihcIiwgXCIsXCIsIFwiKVwiLCB0dXBsZSksIG1hcCAoZm9ybWF0IHNoYXJlZCkgYSlcbiAgICAgIHwgYFJlY29yZCBhIC0+IExpc3QgKChcIntcIiwgXCIsXCIsIFwifVwiLCByZWNvcmQpLCBtYXAgKGZvcm1hdF9maWVsZCBzaGFyZWQpIGEpXG4gICAgICB8IGBOdW1fdmFyaWFudCAoaSwgbykgLT5cblx0ICBsZXQgc3VmZml4ID1cblx0ICAgIGlmIGkgPSAwIHRoZW4gXCJcIlxuXHQgICAgZWxzZSBzdHJpbmdfb2ZfaW50IGlcblx0ICBpblxuXHQgIChtYXRjaCBvIHdpdGhcblx0ICAgICAgIE5vbmUgLT4gQXRvbSAoXCJOb25lXCIgXiBzdWZmaXgsIGF0b20pXG5cdCAgICAgfCBTb21lIHggLT5cblx0XHQgbGV0IGNvbnMgPSBBdG9tIChcIlNvbWVcIiBeIHN1ZmZpeCwgYXRvbSkgaW5cblx0XHQgTGFiZWwgKChjb25zLCBsYWJlbCksIGZvcm1hdCBzaGFyZWQgeCkpXG4gICAgICB8IGBWYXJpYW50IChvcHRfbmFtZSwgaCwgbykgLT5cblx0ICBsZXQgbmFtZSA9XG5cdCAgICBtYXRjaCBvcHRfbmFtZSB3aXRoXG5cdFx0Tm9uZSAtPiBzcHJpbnRmIFwiIyUwOGx4XCIgKEludDMyLm9mX2ludCBoKVxuXHQgICAgICB8IFNvbWUgcyAtPiBzcHJpbnRmIFwiJVNcIiBzXG5cdCAgaW5cblx0ICAobWF0Y2ggbyB3aXRoXG5cdCAgICAgICBOb25lIC0+IEF0b20gKFwiPFwiIF4gbmFtZSBeIFwiPlwiLCBhdG9tKVxuXHQgICAgIHwgU29tZSB4IC0+XG5cdFx0IExpc3QgKChcIjxcIiwgXCJcIiwgXCI+XCIsIHR1cGxlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgWyBMYWJlbCAoKEF0b20gKG5hbWUgXiBcIjpcIiwgYXRvbSksIGxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IHNoYXJlZCB4KSBdKVxuXHQgIClcbiAgICAgIHwgYFRhYmxlIE5vbmUgLT4gQXRvbSAoXCJbXVwiLCBhdG9tKVxuICAgICAgfCBgVGFibGUgKFNvbWUgKGhlYWRlciwgYWEpKSAtPlxuXHQgIGxldCByZWNvcmRfYXJyYXkgPVxuXHQgICAgYEFycmF5IChcblx0ICAgICAgU29tZSAoXG5cdFx0cmVjb3JkX3RhZyxcblx0XHRBcnJheS5tYXAgKFxuXHRcdCAgZnVuIGEgLT5cblx0XHQgICAgYFJlY29yZCAoXG5cdFx0ICAgICAgQXJyYXkubWFwaSAoXG5cdFx0XHRmdW4gaSB4IC0+XG5cdFx0XHQgIGxldCBzLCBoLCBfID0gaGVhZGVyLihpKSBpblxuXHRcdFx0ICAocywgaCwgeClcblx0XHQgICAgICApIGFcblx0XHQgICAgKVxuXHRcdCkgYWFcblx0ICAgICAgKVxuXHQgICAgKSBpblxuXHQgIGZvcm1hdCBzaGFyZWQgcmVjb3JkX2FycmF5XG5cbiAgICAgIHwgYFNoYXJlZCB4IC0+XG4gICAgICAgICAgbGV0IHRibCwgcCA9IHNoYXJlZCBpblxuICAgICAgICAgIGluY3IgcDtcbiAgICAgICAgICBsZXQgcG9zID0gIXAgaW5cbiAgICAgICAgICBsZXQgb2Zmc2V0ID0gQmlfc2hhcmUuV3IucHV0IHRibCAoeCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkgcG9zIGluXG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMCB0aGVuXG4gICAgICAgICAgICBMYWJlbCAoKEF0b20gKHNwcmludGYgXCJzaGFyZWQlaSAtPlwiIHBvcywgYXRvbSksIGxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICBmb3JtYXQgc2hhcmVkIHgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXRvbSAoc3ByaW50ZiBcInNoYXJlZCVpXCIgKHBvcyAtIG9mZnNldCksIGF0b20pXG5cbiAgYW5kIGZvcm1hdF9maWVsZCBzaGFyZWQgKG8sIGgsIHgpID1cbiAgICBsZXQgcyA9XG4gICAgICBtYXRjaCBvIHdpdGhcblx0ICBOb25lIC0+IHNwcmludGYgXCIjJTA4bHhcIiAoSW50MzIub2ZfaW50IGgpXG5cdHwgU29tZSBzIC0+IHNwcmludGYgXCIlU1wiIHNcbiAgICBpblxuICAgIExhYmVsICgoQXRvbSAoc3ByaW50ZiBcIiVzOlwiIHMsIGF0b20pLCBsYWJlbCksIGZvcm1hdCBzaGFyZWQgeClcbmVuZFxuXG5sZXQgaW5pdCAoKSA9IChCaV9zaGFyZS5Xci5jcmVhdGUgNTEyLCByZWYgMClcblxubGV0IHZpZXdfb2ZfdHJlZSB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX3N0cmluZyAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgcHJpbnRfdmlld19vZl90cmVlIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fc3Rkb3V0IChQcC5mb3JtYXQgKGluaXQgKCkpIHQpXG5cbmxldCBvdXRwdXRfdmlld19vZl90cmVlIG9jIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fY2hhbm5lbCBvYyAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgdmlldyA/dW5oYXNoIHMgPVxuICB2aWV3X29mX3RyZWUgKHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcylcblxubGV0IHByaW50X3ZpZXcgP3VuaGFzaCBzID1cbiAgcHJpbnRfdmlld19vZl90cmVlICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG5cbmxldCBvdXRwdXRfdmlldyA/dW5oYXNoIG9jIHMgPVxuICBvdXRwdXRfdmlld19vZl90cmVlIG9jICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG4iLCJvcGVuIFByaW50ZlxuXG4oKlxubGV0IHNwbGl0IHMgPSBTdHIuc3BsaXQgKFN0ci5yZWdleHAgXCIsXCIpIHNcbiopXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBsZXQgc3RvcCA9IHJlZiAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBmb3IgaSA9ICFzdG9wIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHMuW2ldID0gJywnIHRoZW4gKFxuICAgICAgbGV0IHN0YXJ0ID0gaSArIDEgaW5cbiAgICAgIGFjYyA6PSBTdHJpbmcuc3ViIHMgc3RhcnQgKCFzdG9wIC0gc3RhcnQpIDo6ICFhY2M7XG4gICAgICBzdG9wIDo9IGlcbiAgICApXG4gIGRvbmU7XG4gIFN0cmluZy5zdWIgcyAwICFzdG9wIDo6ICFhY2NcblxuXG5sZXQgbG9hZF9saW5lcyBhY2N1IHMgPVxuICBsZXQgaWMgPSBvcGVuX2luIHMgaW5cbiAgbGV0IGwgPSByZWYgYWNjdSBpblxuICAodHJ5XG4gICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICBsIDo9IGlucHV0X2xpbmUgaWMgOjogTGlzdC5yZXYgIWxcbiAgICAgZG9uZVxuICAgd2l0aCBFbmRfb2ZfZmlsZSAtPlxuICAgICBjbG9zZV9pbiBpY1xuICApO1xuICAhbFxuXG5sZXQgbG9hZCBpYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEwMDAgaW5cbiAgdHJ5XG4gICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoaW5wdXRfY2hhciBpYyk7XG4gICAgZG9uZTtcbiAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aCBFbmRfb2ZfZmlsZSAtPlxuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0ICggLy8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG5sZXQgZGVmYXVsdF9kaWN0X3BhdGggKCkgPVxuICB0cnlcbiAgICBtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgIFwiVW5peFwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FXCIgLy8gXCIuYmR1bXAtZGljdFwiKVxuICAgICAgfCBcIldpbjMyXCIgLT4gU29tZSAoU3lzLmdldGVudiBcIkhPTUVQQVRIXCIgLy8gXCJfYmR1bXAtZGljdFwiKVxuICAgICAgfCBcIkN5Z3dpblwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FXCIgLy8gXCIuYmR1bXAtZGljdFwiKVxuICAgICAgfCBfIC0+IE5vbmVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBOb25lXG5cbmxldCBsb2FkX2RpY3Rpb25hcnkgZGljX2ZpbGUgYWNjdSA9XG4gIG1hdGNoIGRpY19maWxlIHdpdGhcbiAgICAgIE5vbmUgLT4gYWNjdVxuICAgIHwgU29tZSBmbiAtPlxuICAgICAgICBpZiBTeXMuZmlsZV9leGlzdHMgZm4gdGhlblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbG9hZF9saW5lcyBhY2N1IGZuXG4gICAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkNhbm5vdCBsb2FkIGRpY3Rpb25hcnkgZnJvbSAlUzogJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmbiAoUHJpbnRleGMudG9fc3RyaW5nIGUpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWNjdVxuXG5sZXQgd3JpdGVfdW5pcSBvYyBhID1cbiAgaWYgQXJyYXkubGVuZ3RoIGEgPiAwIHRoZW4gKFxuICAgIGZwcmludGYgb2MgXCIlc1xcblwiIGEuKDApO1xuICAgIGlnbm9yZSAoXG4gICAgICBBcnJheS5mb2xkX2xlZnQgKFxuICAgICAgICBmdW4gbGFzdCB4IC0+XG4gICAgICAgICAgaWYgbGFzdCA8PiB4IHRoZW5cbiAgICAgICAgICAgIGZwcmludGYgb2MgXCIlc1xcblwiIHg7XG4gICAgICAgICAgeFxuICAgICAgKSBhLigwKSBhXG4gICAgKVxuICApXG5cbmxldCBzYXZlX2RpY3Rpb25hcnkgZGljX2ZpbGUgbCA9XG4gIG1hdGNoIGRpY19maWxlIHdpdGhcbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZm4gLT5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgICAgQXJyYXkuc29ydCBTdHJpbmcuY29tcGFyZSBhO1xuICAgICAgICBsZXQgb2MgPSBvcGVuX291dCBmbiBpblxuICAgICAgICBsZXQgZmluYWxseSAoKSA9IGNsb3NlX291dF9ub2VyciBvYyBpblxuICAgICAgICB0cnlcbiAgICAgICAgICB3cml0ZV91bmlxIG9jIGE7XG4gICAgICAgICAgZmluYWxseSAoKVxuICAgICAgICB3aXRoIGUgLT5cbiAgICAgICAgICBmaW5hbGx5ICgpO1xuICAgICAgICAgIHJhaXNlIGVcbiIsIlxudHlwZSAnYSBvY2FtbF9hcnJheSA9ICdhIGFycmF5XG5cbmxldCBpbnB1dF9maWxlIGZuYW1lIHJlYWQgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICB0cnlcbiAgICBsZXQgeCA9IHJlYWQgaWMgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICB4XG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGVcblxubGV0IG91dHB1dF9maWxlIGZuYW1lIHdyaXRlID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZuYW1lIGluXG4gIHRyeVxuICAgIHdyaXRlIG9jO1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5tb2R1bGUgQmluaW91ID1cbnN0cnVjdFxuICB0eXBlICdhIHJlYWRlciA9IEJpX2luYnVmLnQgLT4gJ2FcbiAgdHlwZSAnYSB3cml0ZXIgPSBCaV9vdXRidWYudCAtPiAnYSAtPiB1bml0XG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/bGVuID8oc2hybGVuID0gMCkgcmVhZCBpYyA9XG4gICAgbGV0IGliID0gQmlfaW5idWYuZnJvbV9jaGFubmVsID9sZW4gfnNocmxlbiBpYyBpblxuICAgIHJlYWQgaWJcblxuICBsZXQgZnJvbV9maWxlID9sZW4gPyhzaHJsZW4gPSAwKSByZWFkIGZuYW1lID1cbiAgICBpbnB1dF9maWxlIGZuYW1lIChmdW4gaWMgLT4gZnJvbV9jaGFubmVsID9sZW4gfnNocmxlbiByZWFkIGljKVxuXG4gIGxldCB0b19jaGFubmVsID9sZW4gPyhzaHJsZW4gPSAwKSB3cml0ZSBvYyB4ID1cbiAgICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlX2NoYW5uZWxfd3JpdGVyID9sZW4gfnNocmxlbiBvYyBpblxuICAgIHdyaXRlIG9iIHg7XG4gICAgQmlfb3V0YnVmLmZsdXNoX2NoYW5uZWxfd3JpdGVyIG9iXG5cbiAgbGV0IHRvX2ZpbGUgP2xlbiA/KHNocmxlbiA9IDApIHdyaXRlIGZuYW1lIHggPVxuICAgIG91dHB1dF9maWxlIGZuYW1lIChmdW4gb2MgLT4gdG9fY2hhbm5lbCA/bGVuIH5zaHJsZW4gd3JpdGUgb2MgeClcbmVuZFxuXG5tb2R1bGUgSnNvbiA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSByZWFkZXIgPSBZb2pzb24uU2FmZS5sZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+ICdhXG4gIHR5cGUgJ2Egd3JpdGVyID0gQnVmZmVyLnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGxldCBmaW5pc2ggbHMgbGV4YnVmID1cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIGxzIGxleGJ1ZjtcbiAgICBpZiBub3QgKFlvanNvbi5TYWZlLnJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgWW9qc29uLmpzb25fZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlXCJcblxuICBsZXQgZnJvbV9sZXhidWYgPyhzdHJlYW0gPSBmYWxzZSkgcmVhZCBscyBsZXhidWYgPVxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgbHMgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgWW9qc29uLlNhZmUucmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgWW9qc29uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkIGxzIGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCBscyBsZXhidWY7XG5cbiAgICB4XG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHJlYWQgcyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIGZyb21fbGV4YnVmIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBmcm9tX2xleGJ1ZiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWU6c3JjID9sbnVtIHJlYWQgZm5hbWUgPVxuICAgIGxldCBmbmFtZTAgPVxuICAgICAgbWF0Y2ggc3JjIHdpdGhcbiAgICAgICAgICBOb25lIC0+IGZuYW1lXG4gICAgICAgIHwgU29tZSBzIC0+IHNcbiAgICBpblxuICAgIGlucHV0X2ZpbGUgZm5hbWUgKGZ1biBpYyAtPiBmcm9tX2NoYW5uZWwgP2J1ZiB+Zm5hbWU6Zm5hbWUwID9sbnVtIHJlYWQgaWMpXG5cbiAgKCogc2VxX3VuZm9sZCBpcyBTZXEudW5mb2xkLCBuZWVkZWQgZm9yIG9jYW1sIDwgNC4xMSAqKVxuICBsZXQgcmVjIHNlcV91bmZvbGQgZiB1ICgpID1cbiAgICBtYXRjaCBmIHUgd2l0aFxuICAgIHwgTm9uZSAtPiBTZXEuTmlsXG4gICAgfCBTb21lICh4LCB1JykgLT4gU2VxLkNvbnMgKHgsIHNlcV91bmZvbGQgZiB1JylcblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSByZWFkIGxzIGxleGJ1ZiA9XG4gICAgbGV0IGYgKCkgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCB2ID0gZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHJlYWQgbHMgbGV4YnVmIGluXG4gICAgICAgIFNvbWUgKHYsICgpKVxuICAgICAgd2l0aFxuICAgICAgICAgIFlvanNvbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIF8gLT4gKCkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgKCogU2VxLnVuZm9sZCBpcyBvbmx5IGF2YWlsYWJsZSBmcm9tIG9jYW1sIDQuMTEgKilcbiAgICBzZXFfdW5mb2xkIGYgKClcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBpYyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgP2ZpbiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmID9maW4gcmVhZCBscyBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWU6c3JjID9sbnVtIHJlYWQgZm5hbWUgPVxuICAgIGxldCBmbmFtZTAgPVxuICAgICAgbWF0Y2ggc3JjIHdpdGhcbiAgICAgICAgICBOb25lIC0+IGZuYW1lXG4gICAgICAgIHwgU29tZSBzIC0+IHNcbiAgICBpblxuICAgIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luX25vZXJyIGljOyBmaW4gKCkgaW5cbiAgICBzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiB+Zm5hbWU6Zm5hbWUwID9sbnVtIHJlYWQgaWNcblxuICBsZXQgbGlzdF9mcm9tX3N0cmluZyA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBzZXEgPSBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljIGluXG4gICAgTGlzdC5vZl9zZXEgc2VxXG5cbiAgbGV0IGxpc3RfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IHNlcSA9IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljIGluXG4gICAgTGlzdC5vZl9zZXEgc2VxXG5cbiAgbGV0IGxpc3RfZnJvbV9maWxlID9idWYgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbl9ub2VyciBpYyBpblxuICAgIGxpc3RfZnJvbV9jaGFubmVsID9idWYgfmZpbiB+Zm5hbWU6Zm5hbWUwID9sbnVtIHJlYWQgaWNcblxuICBsZXQgdG9fc3RyaW5nID8obGVuID0gMTAyNCkgd3JpdGUgeCA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICB3cml0ZSBvYiB4O1xuICAgIEJ1ZmZlci5jb250ZW50cyBvYlxuXG4gIGxldCB0b19jaGFubmVsID8obGVuID0gMTAyNCkgd3JpdGUgb2MgeCA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICB3cml0ZSBvYiB4O1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iXG5cbiAgbGV0IHRvX2ZpbGUgP2xlbiB3cml0ZSBmbmFtZSB4ID1cbiAgICBvdXRwdXRfZmlsZSBmbmFtZSAoZnVuIG9jIC0+IHRvX2NoYW5uZWwgP2xlbiB3cml0ZSBvYyB4KVxuXG4gIGxldCBzZXFfdG9fc3RyaW5nID8obGVuID0gMTAyNCkgPyhsZiA9IFwiXFxuXCIpIHdyaXRlIHNlcSA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBTZXEuaXRlciAoZnVuIHggLT4gd3JpdGUgb2IgeDsgQnVmZmVyLmFkZF9zdHJpbmcgb2IgbGYpIHNlcTtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgc2VxX3RvX2NoYW5uZWwgPyhsZW4gPSAxMDI0KSA/KGxmID0gXCJcXG5cIikgd3JpdGUgb2Mgc2VxID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIFNlcS5pdGVyIChmdW4geCAtPiB3cml0ZSBvYiB4OyBCdWZmZXIuYWRkX3N0cmluZyBvYiBsZikgc2VxO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iXG5cbiAgbGV0IHNlcV90b19maWxlID9sZW4gP2xmIHdyaXRlIGZuYW1lIHNlcSA9XG4gICAgb3V0cHV0X2ZpbGUgZm5hbWUgKGZ1biBvYyAtPiBzZXFfdG9fY2hhbm5lbCA/bGVuID9sZiB3cml0ZSBvYyBzZXEpXG5cbiAgbGV0IGxpc3RfdG9fc3RyaW5nID9sZW4gP2xmIHdyaXRlIGwgPVxuICAgIHNlcV90b19zdHJpbmcgP2xlbiA/bGYgd3JpdGUgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IGxpc3RfdG9fY2hhbm5lbCA/bGVuID9sZiB3cml0ZSBvYyBsID1cbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuID9sZiB3cml0ZSBvYyAoTGlzdC50b19zZXEgbClcblxuICBsZXQgbGlzdF90b19maWxlID9sZW4gP2xmIHdyaXRlIGZuYW1lICBsID1cbiAgICBzZXFfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSAoTGlzdC50b19zZXEgbClcblxuICBsZXQgcHJlc2V0X3Vua25vd25fZmllbGRfaGFuZGxlciBsb2MgbmFtZSA9XG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIkZvdW5kIHVua25vd24gSlNPTiBmaWVsZCAlcyB3aGlsZSBleHBlY3RpbmcgdHlwZSBkZWZpbmVkIGF0OiAlc1wiXG4gICAgICAgIG5hbWUgbG9jXG4gICAgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBsZXQgdW5rbm93bl9maWVsZF9oYW5kbGVyID0gcmVmIHByZXNldF91bmtub3duX2ZpZWxkX2hhbmRsZXJcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGlvbiA9XG5zdHJ1Y3RcbiAgdHlwZSBwYXRoX2VsZW0gPSBbIGBGaWVsZCBvZiBzdHJpbmcgfCBgSW5kZXggb2YgaW50IF1cbiAgdHlwZSBwYXRoID0gcGF0aF9lbGVtIGxpc3RcblxuICBsZXQgc3RyaW5nX29mX3BhdGggbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIChcbiAgICAgIExpc3QucmV2X21hcCAoXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBgRmllbGQgcyAtPiBcIi5cIiBeIHNcbiAgICAgICAgICB8IGBJbmRleCBuIC0+IFwiW1wiIF4gc3RyaW5nX29mX2ludCBuIF4gXCJdXCJcbiAgICAgICkgbFxuICAgIClcblxuICB0eXBlIGVycm9yID0ge1xuICAgIGVycm9yX3BhdGggOiBwYXRoO1xuICAgIGVycm9yX21zZyA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZXJyb3IgP21zZyBwYXRoID0ge1xuICAgIGVycm9yX3BhdGggPSBwYXRoO1xuICAgIGVycm9yX21zZyA9IG1zZztcbiAgfVxuXG4gIGxldCBzdHJpbmdfb2ZfZXJyb3IgeCA9XG4gICAgbGV0IHBhdGggPSBzdHJpbmdfb2ZfcGF0aCB4LmVycm9yX3BhdGggaW5cbiAgICBtYXRjaCB4LmVycm9yX21zZyB3aXRoXG4gICAgICAgIE5vbmUgLT5cbiAgICAgICAgICBcIlZhbGlkYXRpb24gZXJyb3I7IHBhdGggPSA8cm9vdD5cIiBeIHBhdGhcbiAgICAgIHwgU29tZSBtc2cgLT5cbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIlZhbGlkYXRpb24gZXJyb3I6ICVzOyBwYXRoID0gPHJvb3Q+JXNcIiBtc2cgcGF0aFxuZW5kXG4iLCJsZXQgdmFsaWRhdGVfbGlzdCBmIHBhdGggbCA9XG4gIGxldCByZWMgbG9vcCBmIHBhdGggaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IHN1YnBhdGggPSBgSW5kZXggaSA6OiBwYXRoIGluXG4gICAgICAgIG1hdGNoIGYgc3VicGF0aCB4IHdpdGhcbiAgICAgICAgICAgIE5vbmUgLT4gbG9vcCBmIHBhdGggKGkrMSkgbFxuICAgICAgICAgIHwgZXJyIC0+IGVyclxuICBpblxuICBsb29wIGYgcGF0aCAwIGxcblxubGV0IHZhbGlkYXRlX2FycmF5IGYgcGF0aCBhID1cbiAgbGV0IHJlYyBsb29wIGYgcGF0aCBhIGxlbiBpID1cbiAgICBpZiBpID49IGxlbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmIChgSW5kZXggaSA6OiBwYXRoKSBhLihpKSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBsb29wIGYgcGF0aCBhIGxlbiAoaSsxKVxuICAgICAgICB8IGVyciAtPiBlcnJcbiAgaW5cbiAgbG9vcCBmIHBhdGggYSAoQXJyYXkubGVuZ3RoIGEpIDBcblxubGV0IHZhbGlkYXRlX29wdGlvbiBmIHBhdGggPSBmdW5jdGlvblxuICAgIE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBmIHBhdGggeFxuIiwiKCpcbiAgUnVudGltZSBsaWJyYXJ5IGZvciBKU09OXG4qKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlICdhIHdyaXRlID0gQnVmZmVyLnQgLT4gJ2EgLT4gdW5pdFxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbigqXG4gIEVycm9yIG1lc3NhZ2VzXG4qKVxubGV0IGVycm9yIHMgPSByYWlzZSAoRXJyb3IgcylcblxubGV0IGVycm9yX3dpdGhfbGluZSBwIHMgPVxuICBsZXQgczIgPVxuICAgIG1hdGNoIHAuWW9qc29uLkxleGVyX3N0YXRlLmZuYW1lIHdpdGhcbiAgICAgIFNvbWUgZiAtPiBzcHJpbnRmIFwiRmlsZSAlcywgbGluZSAlaTpcXG4lc1wiIGYgcC5Zb2pzb24uTGV4ZXJfc3RhdGUubG51bSBzXG4gICAgfCBOb25lIC0+IHNwcmludGYgXCJMaW5lICVpOlxcbiVzXCIgcC5Zb2pzb24uTGV4ZXJfc3RhdGUubG51bSBzXG4gIGluXG4gIHJhaXNlIChFcnJvciBzMilcblxuXG5sZXQgbGlzdF9pdGVyIGYgc2VwIHggbCA9XG4gIGxldCByZWMgYXV4IGYgc2VwIHggPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgICBzZXAgeDtcbiAgICAgICAgZiB4IHk7XG4gICAgICAgIGF1eCBmIHNlcCB4IGxcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPiAoKVxuICAgIHwgeSA6OiBsIC0+XG4gICAgICAgIGYgeCB5O1xuICAgICAgICBhdXggZiBzZXAgeCBsXG5cbmxldCBhcnJheV9pdGVyIGYgc2VwIHggYSA9XG4gIGxldCBuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgaWYgbiA+IDAgdGhlbiAoXG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IGEgMCk7XG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBzZXAgeDtcbiAgICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZVxuICApXG5cbmxldCB3cml0ZV9jb21tYSBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHdyaXRlX2xpc3Qgd3JpdGVfaXRlbSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgbGlzdF9pdGVyIHdyaXRlX2l0ZW0gd3JpdGVfY29tbWEgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgd3JpdGVfYXJyYXkgd3JpdGVfaXRlbSBvYiBhID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgYXJyYXlfaXRlciB3cml0ZV9pdGVtIHdyaXRlX2NvbW1hIG9iIGE7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHdyaXRlX2Fzc29jX2xpc3Qgd3JpdGVfa2V5IHdyaXRlX2l0ZW0gb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGxpc3RfaXRlciAoXG4gICAgZnVuIG9iIChrLCB2KSAtPlxuICAgICAgd3JpdGVfa2V5IG9iIGs7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgd3JpdGVfaXRlbSBvYiB2XG4gICkgd3JpdGVfY29tbWEgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgd3JpdGVfYXNzb2NfYXJyYXkgd3JpdGVfa2V5IHdyaXRlX2l0ZW0gb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGFycmF5X2l0ZXIgKFxuICAgIGZ1biBvYiAoaywgdikgLT5cbiAgICAgIHdyaXRlX2tleSBvYiBrO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgIHdyaXRlX2l0ZW0gb2IgdlxuICApIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxuXG5sZXQgd3JpdGVfb3B0aW9uIHdyaXRlX2l0ZW0gb2IgPSBmdW5jdGlvblxuICAgIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI8XFxcIk5vbmVcXFwiPlwiXG4gIHwgU29tZSB4IC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjxcXFwiU29tZVxcXCI6XCI7XG4gICAgICB3cml0ZV9pdGVtIG9iIHg7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIj5cIlxuXG5sZXQgd3JpdGVfc3RkX29wdGlvbiB3cml0ZV9pdGVtIG9iID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIk5vbmVcXFwiXCJcbiAgfCBTb21lIHggLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTb21lXFxcIixcIjtcbiAgICAgIHdyaXRlX2l0ZW0gb2IgeDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXVwiXG5cbmxldCB3cml0ZV9udWxsYWJsZSB3cml0ZV9pdGVtIG9iID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG4gIHwgU29tZSB4IC0+IHdyaXRlX2l0ZW0gb2IgeFxuXG5sZXQgd3JpdGVfaW50X2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIFlvanNvbi5TYWZlLndyaXRlX2ludCBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgd3JpdGVfaW50OCBvYiB4ID1cbiAgWW9qc29uLlNhZmUud3JpdGVfaW50IG9iIChpbnRfb2ZfY2hhciB4KVxuXG5sZXQgd3JpdGVfaW50OF9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9pbnQ4IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCB3cml0ZV9pbnQzMiBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKEludDMyLnRvX3N0cmluZyB4KVxuXG5sZXQgd3JpdGVfaW50MzJfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50MzIgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHdyaXRlX2ludDY0IG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoSW50NjQudG9fc3RyaW5nIHgpXG5cbmxldCB3cml0ZV9pbnQ2NF9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9pbnQ2NCBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgbWluX2Zsb2F0ID0gZmxvYXQgbWluX2ludFxubGV0IG1heF9mbG9hdCA9IGZsb2F0IG1heF9pbnRcblxubGV0IHdyaXRlX2Zsb2F0X2FzX2ludCBvYiB4ID1cbiAgaWYgeCA+PSBtaW5fZmxvYXQgJiYgeCA8PSBtYXhfZmxvYXQgdGhlblxuICAgIFlvanNvbi5TYWZlLndyaXRlX2ludCBvYlxuICAgICAgKGludF9vZl9mbG9hdCAoaWYgeCA8IDAuIHRoZW4geCAtLiAwLjUgZWxzZSB4ICsuIDAuNSkpXG4gIGVsc2VcbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICAgICAgRlBfbm9ybWFsXG4gICAgICB8IEZQX3N1Ym5vcm1hbFxuICAgICAgfCBGUF96ZXJvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChQcmludGYuc3ByaW50ZiBcIiUuMGZcIiB4KVxuICAgICAgfCBGUF9pbmZpbml0ZSAtPiBlcnJvciBcIkNhbm5vdCBjb252ZXJ0IGluZiBvciAtaW5mIGludG8gYSBKU09OIGludFwiXG4gICAgICB8IEZQX25hbiAtPiBlcnJvciBcIkNhbm5vdCBjb252ZXJ0IE5hTiBpbnRvIGEgSlNPTiBpbnRcIlxuXG5sZXQgd3JpdGVfZmxvYXRfYXNfaW50X3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2Zsb2F0X2FzX2ludCBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG50eXBlICdhIHJlYWQgPSBZb2pzb24ubGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiAnYVxuXG5sZXQgcmVhZF9udWxsIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfbnVsbCBwIGxiXG5cbmxldCByZWFkX2Jvb2wgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9ib29sIHAgbGJcblxubGV0IHJlYWRfaW50IHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50IHAgbGJcblxubGV0IHJlYWRfaW50OCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludDggcCBsYlxuXG5sZXQgcmVhZF9pbnQzMiBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludDMyIHAgbGJcblxubGV0IHJlYWRfaW50NjQgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQ2NCBwIGxiXG5cbmxldCByZWFkX251bWJlciBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX251bWJlciBwIGxiXG5cbmxldCByZWFkX3N0cmluZyBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX3N0cmluZyBwIGxiXG5cbmxldCByZWFkX2pzb24gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9qc29uIHAgbGJcblxubGV0IHJlYWRfbGlzdCByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9saXN0IHJlYWRfaXRlbSBwIGxiXG5cbmxldCByZWFkX2FycmF5IHJlYWRfaXRlbSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2FycmF5IHJlYWRfaXRlbSBwIGxiXG5cbmxldCByZWFkX2Fzc29jX2xpc3RfcmV2IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBsZXQgcmVhZCBhY2MgayBwIGxiID0gKGssIHJlYWRfaXRlbSBwIGxiKSA6OiBhY2MgaW5cbiAgWW9qc29uLlNhZmUucmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZCBbXSBwIGxiXG5cbmxldCByZWFkX2Fzc29jX2xpc3QgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIgPVxuICBMaXN0LnJldiAocmVhZF9hc3NvY19saXN0X3JldiByZWFkX2tleSByZWFkX2l0ZW0gcCBsYilcblxubGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+IFt8IHxdXG4gICAgfCB4IDo6IHRsIC0+XG4gICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICBkb25lO1xuICAgICAgICBhXG5cbmxldCByZWFkX2Fzc29jX2FycmF5IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiID1cbiAgYXJyYXlfb2ZfcmV2X2xpc3QgKHJlYWRfYXNzb2NfbGlzdF9yZXYgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIpXG5cbmxldCByZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfY29sb24gcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiXG5cbmxldCBtaXNzaW5nX3R1cGxlX2ZpZWxkcyBwIGxlbiByZXFfZmllbGRzID1cbiAgbGV0IG1pc3NpbmcgPVxuICAgIExpc3QuZm9sZF9yaWdodCAoXG4gICAgICBmdW4gaSBhY2MgLT4gaWYgaSA+PSBsZW4gdGhlbiBpIDo6IGFjYyBlbHNlIGFjY1xuICAgICkgcmVxX2ZpZWxkcyBbXVxuICBpblxuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIk1pc3NpbmcgdHVwbGUgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCBtaXNzaW5nID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfaW50IG1pc3NpbmcpKSlcblxubGV0IG1pc3NpbmdfZmllbGQgcCBmaWVsZF9uYW1lID1cbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJNaXNzaW5nIHJlY29yZCBmaWVsZCAlc1wiIGZpZWxkX25hbWUpXG5cbmxldCBtaXNzaW5nX2ZpZWxkcyBwIGJpdF9maWVsZHMgZmllbGRfbmFtZXMgPVxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGZvciB6ID0gQXJyYXkubGVuZ3RoIGZpZWxkX25hbWVzIC0gMSBkb3dudG8gMCBkb1xuICAgIGxldCBpID0geiAvIDMxIGluXG4gICAgbGV0IGogPSB6IG1vZCAzMSBpblxuICAgIGlmIGJpdF9maWVsZHMuKGkpIGxhbmQgKDEgbHNsIGopID0gMCB0aGVuXG4gICAgICBhY2MgOj0gZmllbGRfbmFtZXMuKHopIDo6ICFhY2NcbiAgZG9uZTtcbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJNaXNzaW5nIHJlY29yZCBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoICFhY2MgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgIWFjYykpXG5cbmxldCBpbnZhbGlkX3ZhcmlhbnRfdGFnIHAgcyA9XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiVW5zdXBwb3J0ZWQgdmFyaWFudCAlU1wiIHMpXG5cbmxldCByZWFkX3dpdGhfYWRhcHRlciBub3JtYWxpemUgcmVhZGVyIHAgbGIgPVxuICBsZXQgYXN0ID0gWW9qc29uLlNhZmUucmVhZF9qc29uIHAgbGIgaW5cbiAgbGV0IGFzdCcgPSBub3JtYWxpemUgYXN0IGluXG4gIGxldCBzJyA9IFlvanNvbi5TYWZlLnRvX3N0cmluZyBhc3QnIGluXG4gIGxldCBsYicgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcycgaW5cbiAgcmVhZGVyIHAgbGInXG5cbmxldCB3cml0ZV93aXRoX2FkYXB0ZXIgcmVzdG9yZSB3cml0ZXIgb2IgeCA9XG4gIGxldCBvYl90bXAgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgd3JpdGVyIG9iX3RtcCB4O1xuICBsZXQgc190bXAgPSBCdWZmZXIuY29udGVudHMgb2JfdG1wIGluXG4gIGxldCBhc3QgPSBZb2pzb24uU2FmZS5mcm9tX3N0cmluZyBzX3RtcCBpblxuICBsZXQgYXN0JyA9IHJlc3RvcmUgYXN0IGluXG4gIFlvanNvbi5TYWZlLnRvX2J1ZmZlciBvYiBhc3QnXG5cbigqXG4gIENoZWNraW5nIGF0IHJ1bnRpbWUgdGhhdCBvdXIgYXNzdW1wdGlvbnMgb24gdW5zcGVjaWZpZWQgY29tcGlsZXIgYmVoYXZpb3JcbiAgc3RpbGwgaG9sZC5cbiAgIFRPRE86IHdoYXQgYXJlIHRoZXNlIGFzc3VtcHRpb25zIGFuZCB3aGljaCBjb21wb25lbnQgbWFrZXMgdGhlbT9cbiopXG50eXBlIHQgPSB7XG4gIF9hIDogaW50IG9wdGlvbjtcbiAgX2IgOiBpbnQ7XG59XG5cbigqIFRoaXMgbXVzdCBiZSBhIHRlc3QgZm9yIHRoZSB0eXBlIGNoZWNrZXIgc2luY2UgdGhlIGZ1bmN0aW9uIGlzbid0IHVzZWRcbiAgIGFueXdoZXJlLiAqKVxubGV0IF90ZXN0ICgpID1cbiAgeyB7IF9hID0gTm9uZTsgX2IgPSBBcnJheS5sZW5ndGggU3lzLmFyZ3YgfSB3aXRoIF9hID0gTm9uZSB9XG4iLCJbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4oKlxuICBSdW50aW1lIGxpYnJhcnlcbiopXG5cbm9wZW4gUHJpbnRmXG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxuKCpcbiAgRXJyb3IgbWVzc2FnZXNcbiopXG5sZXQgZXJyb3IgcyA9IHJhaXNlIChFcnJvciBzKVxuXG5sZXQgcmVhZF9lcnJvciAoKSA9XG4gIGVycm9yIFwiUmVhZCBlcnJvclwiXG5cbmxldCByZWFkX2Vycm9yX2F0IGliID1cbiAgZXJyb3IgKHNwcmludGYgXCJSZWFkIGVycm9yICglaSlcIiBpYi5CaV9pbmJ1Zi5pX3BvcylcblxubGV0IHRhZ19lcnJvciB0YWcgcyA9XG4gIGVycm9yIChzcHJpbnRmIFwiRm91bmQgd3JvbmcgdGFnICVpIGZvciAlc1wiIHRhZyBzKVxuXG5sZXQgdW5zdXBwb3J0ZWRfdmFyaWFudCBoIGhhc19hcmcgPVxuICBlcnJvciAoc3ByaW50ZiBcIlVuc3VwcG9ydGVkIHZhcmlhbnQgKGhhc2g9JWksIGFyZz0lQilcIiBoIGhhc19hcmcpXG5cblxubGV0IG1pc3NpbmdfdHVwbGVfZmllbGRzIGxlbiByZXFfZmllbGRzID1cbiAgbGV0IG1pc3NpbmcgPVxuICAgIExpc3QuZm9sZF9yaWdodCAoXG4gICAgICBmdW4gaSBhY2MgLT4gaWYgaSA+PSBsZW4gdGhlbiBpIDo6IGFjYyBlbHNlIGFjY1xuICAgICkgcmVxX2ZpZWxkcyBbXVxuICBpblxuICBlcnJvciAoc3ByaW50ZiBcIk1pc3NpbmcgdHVwbGUgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCBtaXNzaW5nID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfaW50IG1pc3NpbmcpKSlcblxuXG5sZXQgbWlzc2luZ19maWVsZHMgYml0X2ZpZWxkcyBmaWVsZF9uYW1lcyA9XG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgZm9yIHogPSBBcnJheS5sZW5ndGggZmllbGRfbmFtZXMgLSAxIGRvd250byAwIGRvXG4gICAgbGV0IGkgPSB6IC8gMzEgaW5cbiAgICBsZXQgaiA9IHogbW9kIDMxIGluXG4gICAgaWYgYml0X2ZpZWxkcy4oaSkgbGFuZCAoMSBsc2wgaikgPSAwIHRoZW5cbiAgICAgIGFjYyA6PSBmaWVsZF9uYW1lcy4oeikgOjogIWFjY1xuICBkb25lO1xuICBlcnJvciAoc3ByaW50ZiBcIk1pc3NpbmcgcmVjb3JkIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggIWFjYyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAhYWNjKSlcblxuXG4oKlxuICBSZWFkZXJzXG4qKVxuXG5sZXQgZ2V0X3VuaXRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLnVuaXRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3VuaXRcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJ1bml0XCJcblxubGV0IHJlYWRfdW5pdCBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8udW5pdF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfdW5pdCBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2Jvb2xfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmJvb2xfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Jvb2xcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJib29sXCJcblxubGV0IHJlYWRfYm9vbCBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uYm9vbF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfYm9vbCBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludF9yZWFkZXIgdGFnID1cbiAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgIDEgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQ4XG4gICAgfCAyIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MTZcbiAgICB8IDE2IC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfdXZpbnRcbiAgICB8IDE3IC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfc3ZpbnRcbiAgICB8IF8gLT4gdGFnX2Vycm9yIHRhZyBcImludFwiXG5cbmxldCByZWFkX2ludCBpYiA9XG4gIG1hdGNoIEJpX2lvLnJlYWRfdGFnIGliIHdpdGhcbiAgICAgIDEgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQ4IGliXG4gICAgfCAyIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MTYgaWJcbiAgICB8IDE2IC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfdXZpbnQgaWJcbiAgICB8IDE3IC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfc3ZpbnQgaWJcbiAgICB8IF8gLT4gcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2NoYXJfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDhfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2NoYXJcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJjaGFyXCJcblxubGV0IHJlYWRfY2hhciBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50OF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfY2hhciBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludDE2X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQxNl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MTZcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJpbnQxNlwiXG5cbmxldCByZWFkX2ludDE2IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQxNl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MTYgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnQzMl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50MzJfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDMyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiaW50MzJcIlxuXG5sZXQgcmVhZF9pbnQzMiBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50MzJfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDMyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50NjRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDY0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQ2NFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImludDY0XCJcblxubGV0IHJlYWRfaW50NjQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDY0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQ2NCBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2Zsb2F0MzJfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmZsb2F0MzJfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0MzJcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJmbG9hdDMyXCJcblxubGV0IGdldF9mbG9hdDY0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5mbG9hdDY0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDY0XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiZmxvYXQ2NFwiXG5cbmxldCBnZXRfZmxvYXRfcmVhZGVyID0gZ2V0X2Zsb2F0NjRfcmVhZGVyXG5cbmxldCByZWFkX2Zsb2F0MzIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmZsb2F0MzJfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0MzIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfZmxvYXQ2NCBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uZmxvYXQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQ2NCBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9mbG9hdCA9IHJlYWRfZmxvYXQ2NFxuXG5sZXQgZ2V0X3N0cmluZ19yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uc3RyaW5nX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9zdHJpbmdcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJzdHJpbmdcIlxuXG5sZXQgcmVhZF9zdHJpbmcgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLnN0cmluZ190YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfc3RyaW5nIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGlmIGxlbiA9IDAgdGhlbiBbfCB8XVxuICBlbHNlXG4gICAgbGV0IHJlYWRlciA9IGdldF9yZWFkZXIgKEJpX2lvLnJlYWRfdGFnIGliKSBpblxuICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4gKHJlYWRlciBpYikgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgKHJlYWRlciBpYilcbiAgICBkb25lO1xuICAgIGFcblxubGV0IHJlYWRfbGlzdF92YWx1ZSBnZXRfcmVhZGVyIGliID1cbiAgQXJyYXkudG9fbGlzdCAocmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliKVxuXG5sZXQgZ2V0X2FycmF5X3JlYWRlciBnZXRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmFycmF5X3RhZyB0aGVuXG4gICAgcmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiYXJyYXlcIlxuXG5sZXQgZ2V0X2xpc3RfcmVhZGVyIGdldF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uYXJyYXlfdGFnIHRoZW5cbiAgICBmdW4gaWIgLT4gQXJyYXkudG9fbGlzdCAocmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliKVxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImxpc3RcIlxuXG5sZXQgcmVhZF9hcnJheSBnZXRfcmVhZGVyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5hcnJheV90YWcgdGhlblxuICAgIHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9saXN0IHJlYWQgaWIgPVxuICBBcnJheS50b19saXN0IChyZWFkX2FycmF5IHJlYWQgaWIpXG5cblxuKCpcbiAgV3JpdGVyc1xuKilcblxubGV0IHdyaXRlX3RhZ2dlZCB0YWcgd3JpdGUgYnVmIHggPVxuICBCaV9pby53cml0ZV90YWcgYnVmIHRhZztcbiAgd3JpdGUgYnVmIHhcblxubGV0IHdyaXRlX3VudGFnZ2VkX29wdGlvbiB3cml0ZSBidWYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgTm9uZSAtPiBCaV9pby53cml0ZV9udW10YWcgYnVmIDAgZmFsc2VcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCaV9pby53cml0ZV9udW10YWcgYnVmIDAgdHJ1ZTtcbiAgICAgICAgd3JpdGUgYnVmIHhcblxubGV0IHdyaXRlX29wdGlvbiB3cml0ZSBidWYgeCA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgQmlfaW8ubnVtX3ZhcmlhbnRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9vcHRpb24gd3JpdGUgYnVmIHhcblxubGV0IGFycmF5X2luaXQyIGxlbiB4IGYgPVxuICBpZiBsZW4gPSAwIHRoZW4gW3wgfF1cbiAgZWxzZVxuICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4gKGYgMCB4KSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSAoZiBpIHgpXG4gICAgZG9uZTtcbiAgICBhXG5cbmxldCBhcnJheV9pbml0MyBsZW4geCB5IGYgPVxuICBpZiBsZW4gPSAwIHRoZW4gW3wgfF1cbiAgZWxzZVxuICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4gKGYgMCB4IHkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIChmIGkgeCB5KVxuICAgIGRvbmU7XG4gICAgYVxuXG5sZXQgYXJyYXlfaXRlcjIgZiB4IGEgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuXG5sZXQgYXJyYXlfaXRlcjMgZiB4IHkgYSA9XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICBmIHggeSAoQXJyYXkudW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcblxuXG5sZXQgcmVjIGxpc3RfaXRlcjIgZiB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZiB4IHk7XG4gICAgICBsaXN0X2l0ZXIyIGYgeCBsXG5cbmxldCByZWMgbGlzdF9pdGVyMyBmIHggeSA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB6IDo6IGwgLT5cbiAgICAgIGYgeCB5IHo7XG4gICAgICBsaXN0X2l0ZXIzIGYgeCB5IGxcblxuXG5sZXQgd3JpdGVfdW50YWdnZWRfYXJyYXkgY2VsbF90YWcgd3JpdGUgYnVmIGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgQmlfdmludC53cml0ZV91dmludCBidWYgbGVuO1xuICBpZiBsZW4gPiAwIHRoZW4gKFxuICAgIEJpX2lvLndyaXRlX3RhZyBidWYgY2VsbF90YWc7XG4gICAgYXJyYXlfaXRlcjIgd3JpdGUgYnVmIGFcbiAgKVxuXG5sZXQgd3JpdGVfYXJyYXkgY2VsbF90YWcgd3JpdGUgYnVmIGEgPVxuICBCaV9pby53cml0ZV90YWcgYnVmIEJpX2lvLmFycmF5X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfYXJyYXkgY2VsbF90YWcgd3JpdGUgYnVmIGFcblxubGV0IHdyaXRlX3VudGFnZ2VkX2xpc3QgY2VsbF90YWcgd3JpdGUgYnVmIGwgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICBCaV92aW50LndyaXRlX3V2aW50IGJ1ZiBsZW47XG4gIGlmIGxlbiA+IDAgdGhlbiAoXG4gICAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBjZWxsX3RhZztcbiAgICBsaXN0X2l0ZXIyIHdyaXRlIGJ1ZiBsXG4gIClcblxubGV0IHdyaXRlX2xpc3QgY2VsbF90YWcgd3JpdGUgYnVmIGwgPVxuICBCaV9pby53cml0ZV90YWcgYnVmIEJpX2lvLmFycmF5X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfbGlzdCBjZWxsX3RhZyB3cml0ZSBidWYgbFxuXG4oKlxuICBzaG9ydGN1dCBmb3IgZ2V0dGluZyB0aGUgdGFnIG9mIGEgcG9seW1vcnBoaWMgdmFyaWFudCBzaW5jZVxuICBiaW5pb3UgdXNlcyB0aGUgc2FtZSByZXByZXNlbnRhdGlvblxuICAodXNlZnVsbmVzcz8pXG4qKVxubGV0IGdldF9wb2x5X3RhZyAoeCA6IFs+IF0pID1cbiAgbGV0IHIgPSBPYmoucmVwciB4IGluXG4gIGlmIE9iai5pc19ibG9jayByIHRoZW5cbiAgICAoT2JqLm9iaiAoT2JqLmZpZWxkIHIgMCkgOiBpbnQpXG4gIGVsc2VcbiAgICAoT2JqLm9iaiByIDogaW50KVxuXG4oKiBXZSB3YW50IGFuIGlkZW50aXR5IGZ1bmN0aW9uIHRoYXQgaXMgbm90IGlubGluZWQgKilcbnR5cGUgaWRlbnRpdHlfdCA9IHsgbXV0YWJsZSBfaWRlbnRpdHkgOiAnYS4gJ2EgLT4gJ2EgfVxubGV0IGlkZW50aXR5X3JlZiA9IHsgX2lkZW50aXR5ID0gKGZ1biB4IC0+IHgpIH1cbmxldCBpZGVudGl0eSB4ID0gaWRlbnRpdHlfcmVmLl9pZGVudGl0eSB4XG5cbigqXG4gIENoZWNraW5nIGF0IHJ1bnRpbWUgdGhhdCBvdXIgYXNzdW1wdGlvbnMgb24gdW5zcGVjaWZpZWQgY29tcGlsZXIgYmVoYXZpb3JcbiAgc3RpbGwgaG9sZC5cbiopXG5cbnR5cGUgdCA9IHtcbiAgX2EgOiBpbnQgb3B0aW9uO1xuICBfYiA6IGludDtcbn1cblxubGV0IGNyZWF0ZSAoKSA9XG4gIHsgeyBfYSA9IE5vbmU7IF9iID0gQXJyYXkubGVuZ3RoIFN5cy5hcmd2IH0gd2l0aCBfYSA9IE5vbmUgfVxuXG4oKlxuICAgVGhpcyBpcyBhIHJ1bnRpbWUgdGVzdCB0aGF0IGNoZWNrcyB3aGV0aGVyIG91ciBhc3N1bXB0aW9ucyBhYm91dFxuICAgdGhlIGNvbXBpbGVyIHN0aWxsIGhvbGQuXG5cbiAgIFdlIGdldCB0aGUgZm9sbG93aW5nIHdhcm5pbmcgd2hlbiB1c2luZyBhbiBPQ2FtbCBjb21waWxlciBidWlsdFxuICAgd2l0aCB0aGUgZmxhbWJkYSBvcHRpbWl6YXRpb24uIFRoaXMgaXMgcHJvYmFibHkgYSBnb29kIHdhcm5pbmdcbiAgIGFuZCBzaG91bGRuJ3QgYmUgaWdub3JlZCBpZiB0aGUgT0NhbWwvYmluaW91IGlzIHRvIGJlIHVzZWQuXG4gICBUaGlzIHdvbid0IGFmZmVjdCB0aGUgT0NhbWwvSlNPTiBiYWNrZW5kLlxuXG4gICA+IFdhcm5pbmcgNTkgW2ZsYW1iZGEtYXNzaWdubWVudC10by1ub24tbXV0YWJsZS12YWx1ZV06IEEgcG90ZW50aWFsXG4gICA+IGFzc2lnbm1lbnQgdG8gYSBub24tbXV0YWJsZSB2YWx1ZSB3YXMgZGV0ZWN0ZWQgaW4gdGhpcyBzb3VyY2UgZmlsZS5cbiAgID4gU3VjaCBhc3NpZ25tZW50cyBtYXkgZ2VuZXJhdGUgaW5jb3JyZWN0IGNvZGUgd2hlbiB1c2luZyBGbGFtYmRhLlxuKilcbmxldCB0ZXN0ICgpID1cbiAgbGV0IHIgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHYgPSBTb21lIDE3IGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIHIpIDAgKE9iai5yZXByIHYpO1xuICBsZXQgc2FmZV9yID0gaWRlbnRpdHkgciBpblxuICAoKiByLl9hIGlzIGlubGluZWQgYnkgb2NhbWxvcHQgYW5kIGVxdWFscyBOb25lXG4gICAgIGJlY2F1c2UgdGhlIGZpZWxkIGlzIHN1cHBvc2VkIHRvIGJlIGltbXV0YWJsZS4gKilcbiAgYXNzZXJ0IChzYWZlX3IuX2EgPSB2KVxuXG5sZXQgKCkgPSB0ZXN0ICgpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4iLCIoKiBKc29uIGFkYXB0ZXJzLiBTZWUgLm1saS4gKilcblxubGV0IG5vcm1hbGl6ZV90eXBlX2ZpZWxkIHR5cGVfZmllbGRfbmFtZSAoeCA6IFlvanNvbi5TYWZlLnQpIDogWW9qc29uLlNhZmUudCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBBc3NvYyBmaWVsZHMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmFzc29jIHR5cGVfZmllbGRfbmFtZSBmaWVsZHMgd2l0aFxuICAgICAgIHwgYFN0cmluZyB0eXBlXyAtPiBgTGlzdCBbIGBTdHJpbmcgdHlwZV87IHggXVxuICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiB4XG4gICAgICAgfCBfIC0+IHggKCogbWFsZm9ybWVkICopXG4gICAgICApXG4gIHwgYFN0cmluZyB0eXBlXyBhcyB4IC0+IHhcbiAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbmxldCByZXN0b3JlX3R5cGVfZmllbGQgdHlwZV9maWVsZF9uYW1lICh4IDogWW9qc29uLlNhZmUudCkgOiBZb2pzb24uU2FmZS50ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYExpc3QgWyBgU3RyaW5nIHR5cGVfOyBgQXNzb2MgZmllbGRzIF0gLT5cbiAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAodHlwZV9maWVsZF9uYW1lLCBgU3RyaW5nIHR5cGVfKSA6OlxuICAgICAgICBMaXN0LmZpbHRlciAoZnVuIChrLCB2KSAtPiBrIDw+IHR5cGVfZmllbGRfbmFtZSkgZmllbGRzXG4gICAgICBpblxuICAgICAgYEFzc29jIGZpZWxkc1xuICB8IGBTdHJpbmcgdHlwZV8gYXMgeCAtPiB4XG4gIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHZhbCBub3JtYWxpemUgOiBZb2pzb24uU2FmZS50IC0+IFlvanNvbi5TYWZlLnRcbiAgdmFsIHJlc3RvcmUgOiBZb2pzb24uU2FmZS50IC0+IFlvanNvbi5TYWZlLnRcbmVuZFxuXG5tb2R1bGUgVHlwZV9maWVsZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBQYXJhbSA9IHNpZ1xuICAgIHZhbCB0eXBlX2ZpZWxkX25hbWUgOiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFBhcmFtIDogUGFyYW0pIDogUyA9IHN0cnVjdFxuICAgIGxldCBub3JtYWxpemUgPSBub3JtYWxpemVfdHlwZV9maWVsZCBQYXJhbS50eXBlX2ZpZWxkX25hbWVcblxuICAgIGxldCByZXN0b3JlID0gcmVzdG9yZV90eXBlX2ZpZWxkIFBhcmFtLnR5cGVfZmllbGRfbmFtZVxuICBlbmRcblxuICBtb2R1bGUgRGVmYXVsdF9wYXJhbSA6IFBhcmFtID0gc3RydWN0XG4gICAgbGV0IHR5cGVfZmllbGRfbmFtZSA9IFwidHlwZVwiXG4gIGVuZFxuXG4gIGluY2x1ZGUgTWFrZSAoRGVmYXVsdF9wYXJhbSlcbmVuZFxuXG5tb2R1bGUgT25lX2ZpZWxkID0gc3RydWN0XG4gIG9wZW4gWW9qc29uLlNhZmVcblxuICBsZXQgbm9ybWFsaXplICh4IDogdCkgOiB0ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IGBBc3NvYyBbbmFtZSwgdmFsdWVdIC0+IGBMaXN0IFtgU3RyaW5nIG5hbWU7IHZhbHVlXVxuICAgIHwgYFN0cmluZyBfIGFzIHggLT4geFxuICAgIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuXG4gIGxldCByZXN0b3JlICh4IDogdCkgOiB0ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IGBMaXN0IFtgU3RyaW5nIG5hbWU7IHZhbHVlXSAtPiBgQXNzb2MgW25hbWUsIHZhbHVlXVxuICAgIHwgYFN0cmluZyBfIGFzIHggLT4geFxuICAgIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuZW5kXG5cbm1vZHVsZSBUeXBlX2FuZF92YWx1ZV9maWVsZHMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUGFyYW0gPSBzaWdcbiAgICB2YWwgdHlwZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbHVlX2ZpZWxkX25hbWUgOiBzdHJpbmdcbiAgICB2YWwga25vd25fdGFncyA6IChzdHJpbmcgbGlzdCAqIHN0cmluZykgb3B0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChQYXJhbSA6IFBhcmFtKSA6IFMgPSBzdHJ1Y3RcbiAgICBvcGVuIFlvanNvbi5TYWZlXG4gICAgb3BlbiBQYXJhbVxuXG4gICAgbGV0IGlzX2tub3duX3RhZyA9XG4gICAgICBtYXRjaCBrbm93bl90YWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoZnVuIF8gLT4gdHJ1ZSlcbiAgICAgIHwgU29tZSAobCwgXykgLT5cbiAgICAgICAgICBsZXQgdGJsID0gSGFzaHRibC5jcmVhdGUgKDIgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHggLT4gSGFzaHRibC5hZGQgdGJsIHggKCkpIGw7XG4gICAgICAgICAgSGFzaHRibC5tZW0gdGJsXG5cbiAgICBsZXQgaXNfY2F0Y2hfYWxsX3RhZyA9XG4gICAgICBtYXRjaCBrbm93bl90YWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoZnVuIF8gLT4gZmFsc2UpXG4gICAgICB8IFNvbWUgKF8sIHMpIC0+ICgoPSkgcylcblxuICAgIGxldCBjYXRjaF9hbGxfdGFnICgpID1cbiAgICAgIG1hdGNoIGtub3duX3RhZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIChfLCBzKSAtPiBzXG5cbiAgICBsZXQgd3JhcF92YXJpYW50IHR5cGVfIHZhbHVlID1cbiAgICAgIGxldCB2YXJpYW50ID0gYExpc3QgW2BTdHJpbmcgdHlwZV87IHZhbHVlXSBpblxuICAgICAgaWYgaXNfa25vd25fdGFnIHR5cGVfIHRoZW5cbiAgICAgICAgdmFyaWFudFxuICAgICAgZWxzZVxuICAgICAgICBgTGlzdCBbIGBTdHJpbmcgKGNhdGNoX2FsbF90YWcgKCkpOyB2YXJpYW50IF1cblxuICAgIGxldCB3cmFwX2VudW0gdHlwZV8gPVxuICAgICAgaWYgaXNfa25vd25fdGFnIHR5cGVfIHRoZW5cbiAgICAgICAgYFN0cmluZyB0eXBlX1xuICAgICAgZWxzZVxuICAgICAgICBgTGlzdCBbIGBTdHJpbmcgKGNhdGNoX2FsbF90YWcgKCkpOyBgTnVsbCBdXG5cbiAgICBsZXQgbm9ybWFsaXplICh4IDogdCkgOiB0ID1cbiAgICAgIGxldCBvcGVuIFlvanNvbi5TYWZlLlV0aWwgaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgQXNzb2MgZmllbGRzIC0+XG4gICAgICAgICAgbGV0IHR5cGVfID0gbWVtYmVyIHR5cGVfZmllbGRfbmFtZSB4IHw+IHRvX3N0cmluZyBpblxuICAgICAgICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGZ1biAoKGssIHYpIGFzIGZpZWxkKSAtPlxuICAgICAgICAgICAgICBpZiBrID0gdmFsdWVfZmllbGRfbmFtZSB0aGVuIChcbiAgICAgICAgICAgICAgICBmb3VuZCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgIChrLCB3cmFwX3ZhcmlhbnQgdHlwZV8gdilcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmllbGRcbiAgICAgICAgICAgICkgZmllbGRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIGlmICFmb3VuZCB0aGVuXG4gICAgICAgICAgICAgIGZpZWxkc1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAodmFsdWVfZmllbGRfbmFtZSwgd3JhcF9lbnVtIHR5cGVfKSA6OiBmaWVsZHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGBBc3NvYyBmaWVsZHNcbiAgICAgIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuXG4gICAgbGV0IHVud3JhcF92YWx1ZSAoeCA6IHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgU3RyaW5nIHRhZyAtPiAodGFnLCBOb25lKVxuICAgICAgfCBgTGlzdCBbYFN0cmluZyB0YWc7IHZdIC0+XG4gICAgICAgICAgaWYgaXNfY2F0Y2hfYWxsX3RhZyB0YWcgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgICAgIHwgYExpc3QgW2BTdHJpbmcgcmVhbF90YWc7IGBOdWxsXSAtPiAocmVhbF90YWcsIE5vbmUpXG4gICAgICAgICAgICB8IGBMaXN0IFtgU3RyaW5nIHJlYWxfdGFnOyByZWFsX3ZdIC0+IChyZWFsX3RhZywgU29tZSByZWFsX3YpXG4gICAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggKFwiTWFsZm9ybWVkIGpzb24gZmllbGQgXCIgXiB2YWx1ZV9maWVsZF9uYW1lKVxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAodGFnLCBTb21lIHYpXG4gICAgICB8IG1hbGZvcm1lZCAtPiBmYWlsd2l0aCAoXCJNYWxmb3JtZWQganNvbiBmaWVsZCBcIiBeIHZhbHVlX2ZpZWxkX25hbWUpXG5cbiAgICBsZXQgcmVzdG9yZSAoeCA6IHQpIDogdCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYEFzc29jIGZpZWxkcyAtPlxuICAgICAgICAgIGxldCB0eXBlXyA9IHJlZiBOb25lIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAoKGssIHRhZ2dlZCkgYXMgZmllbGQpIGFjYyAtPlxuICAgICAgICAgICAgICBpZiBrID0gdmFsdWVfZmllbGRfbmFtZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgdGFnLCBvcHRfdmFsdWUgPSB1bndyYXBfdmFsdWUgdGFnZ2VkIGluXG4gICAgICAgICAgICAgICAgdHlwZV8gOj0gU29tZSB0YWc7XG4gICAgICAgICAgICAgICAgbWF0Y2ggb3B0X3ZhbHVlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gKHZhbHVlX2ZpZWxkX25hbWUsIHYpIDo6IGFjY1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGVsc2UgaWYgayA9IHR5cGVfZmllbGRfbmFtZSB0aGVuXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBmaWVsZCA6OiBhY2NcbiAgICAgICAgICAgICAgKSBmaWVsZHMgW11cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgbWF0Y2ggIXR5cGVfIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmaWVsZHNcbiAgICAgICAgICAgIHwgU29tZSB0YWcgLT4gKHR5cGVfZmllbGRfbmFtZSwgYFN0cmluZyB0YWcpIDo6IGZpZWxkc1xuICAgICAgICAgIGluXG4gICAgICAgICAgYEFzc29jIGZpZWxkc1xuICAgICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG4gIGVuZFxuZW5kXG4iLCIoKipcbiAqIGV4Y2VwdGlvbi5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBdWcgMTUgMjAxNj5cbiAqICpcbiAqIFRoaXMgbGlicmFyeSBkZWNsYXJlcyBleGNlcHRpb25zXG4gKlxuICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID1cbiAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuXG5sZXQgZW1wdHlfZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID1cbiAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuXG5sZXQgaXNfZW1wdHlfZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID1cbiAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmlzX2VtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuXG5sZXQgc2FmZV93YXJuIHBhcmFtZXRlcnMgX2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCBmaWxlX25hbWUgbWVzc2FnZSBleG5cbiAgICBfZGVmYXVsdCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4blxuICBpblxuICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgdW5jYXVnaHRcbiAgICAgIFsgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMgXVxuICBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgc3RyaW5nbGlzdFxuICBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIGluXG4gIHJhaXNlIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuVW5jYXVnaHRfZXhjZXB0aW9uIHVuY2F1Z2h0KVxuXG5sZXQgdW5zYWZlX3dhcm4gX3BhcmFtZXRlcnMgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID90b191aSBmaWxlX25hbWVcbiAgICBtZXNzYWdlIGV4biBkZWZhdWx0ID1cbiAgbGV0IHVuY2F1Z2h0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuXG4gIGluXG4gICggRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmFkZF91bmNhdWdodF9lcnJvciB1bmNhdWdodCA/dG9fdWlcbiAgICAgIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCxcbiAgICBkZWZhdWx0ICgpIClcblxubGV0IHdhcm5fYXV4IHBhcmFtZXRlcnMgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ID90b191aSBmaWxlIG1lc3NhZ2UgZXhuXG4gICAgZGVmYXVsdCA9XG4gIGxldCBlcnJvciwgZGZ0ID1cbiAgICBpZiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF91bnNhZmUgcGFyYW1ldGVycyB0aGVuXG4gICAgICB1bnNhZmVfd2FybiBwYXJhbWV0ZXJzIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA/dG9fdWkgZmlsZSBtZXNzYWdlXG4gICAgICAgIGV4biBkZWZhdWx0XG4gICAgZWxzZVxuICAgICAgc2FmZV93YXJuIHBhcmFtZXRlcnMgZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IGZpbGUgbWVzc2FnZSBleG5cbiAgICAgICAgZGVmYXVsdFxuICBpblxuICBsZXQgKCkgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfZXJyb3JfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIGVycm9yLCBkZnRcblxubGV0IHdhcm5fd2l0aF9leG4gcGFyYW1ldGVycyBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgP3RvX3VpXG4gICAgKGZpbGUsIGxpbmUsIF8sIF8pID8obWVzc2FnZSA9IFwiXCIpID8ocG9zID0gTm9uZSkgZXhuIGRlZmF1bHQgPVxuICBsZXQgbGlhaXNvbiA9XG4gICAgaWYgbWVzc2FnZSA9IFwiXCIgJiYgcG9zID0gTm9uZSB0aGVuXG4gICAgICBcIlwiXG4gICAgZWxzZVxuICAgICAgXCI6IFwiXG4gIGluXG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgcyAtPiBcIiwgXCIgXiBMb2MudG9fc3RyaW5nIHNcbiAgaW5cbiAgd2Fybl9hdXggcGFyYW1ldGVycyBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgP3RvX3VpIChTb21lIGZpbGUpXG4gICAgKFNvbWUgKFwibGluZSBcIiBeIHN0cmluZ19vZl9pbnQgbGluZSBeIHBvcyBeIGxpYWlzb24gXiBtZXNzYWdlKSlcbiAgICBleG4gZGVmYXVsdFxuXG5sZXQgd2FybiBwYXJhbWV0ZXJzIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCA/dG9fdWkgZmlsZV9saW5lXG4gICAgPyhtZXNzYWdlID0gXCJcIikgP3BvcyBleG4gZGVmYXVsdCA9XG4gIHdhcm5fd2l0aF9leG4gcGFyYW1ldGVycyBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgP3RvX3VpIGZpbGVfbGluZVxuICAgIH5tZXNzYWdlIH5wb3MgZXhuIChmdW4gKCkgLT4gZGVmYXVsdClcblxubGV0IHByaW50X2Zvcl9LYVNpbSBwYXJhbWV0ZXJzIGhhbmRsZXJzID1cbiAgbGV0IHBhcmFtZXRlcnMgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXggcGFyYW1ldGVycyBcImVycm9yOiBcIiBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIGNhdWdodCAtPlxuICAgICAgICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICA6OiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl9jYXVnaHQgY2F1Z2h0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVzXCIpXG4gICAgICAgICAgICBzdHJpbmdsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgICAgIChMaXN0LnJldlxuICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzKSlcbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biB1bmNhdWdodCAtPlxuICAgICAgICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICA6OiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl91bmNhdWdodCB1bmNhdWdodCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgICAgICAgc3RyaW5nbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzKSlcbiAgaW5cbiAgKClcblxubGV0IHByaW50IHBhcmFtZXRlcnMgaGFuZGxlcnMgPVxuICBpZlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgICAmJiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgdGhlbiAoXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIFwiJXNleGVjdXRpb24gZmluaXNoZWQgd2l0aG91dCBhbnkgZXhjZXB0aW9uXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICAoKVxuICApIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzU29tZSBleGNlcHRpb25zIGhhdmUgYmVlbiByYWlzZWRcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICBpblxuICAgIHByaW50X2Zvcl9LYVNpbSBwYXJhbWV0ZXJzIGhhbmRsZXJzXG4gIClcblxubGV0IHByaW50X2Vycm9yc19saWdodF9mb3Jfa2FzaW0gcGFyYW1ldGVycyBoYW5kbGVycyA9XG4gIGlmXG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgaGFuZGxlcnMgPSBbXVxuICAgICYmIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgaGFuZGxlcnMgPSBbXVxuICB0aGVuXG4gICAgKClcbiAgZWxzZSAoXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIFwiJXNTb21lIGV4Y2VwdGlvbnMgaGF2ZSBiZWVuIHJhaXNlZCBkdXJpbmcgdGhlIHN0YXRpYyBhbmFseXNpcywgcGxlYXNlIFxcXG4gICAgICAgICBhbmFseXNlIHlvdXIgZmlsZSB3aXRoIEthU2FcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICBpblxuICAgICgpXG4gIClcblxubGV0IHdyYXAgcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgc3RyaW5nX29wdCBleG4gPVxuICBmc3QgKHdhcm5fYXV4IHBhcmFtZXRlcnMgZXJyb3IgKFNvbWUgc3RyaW5nKSBzdHJpbmdfb3B0IGV4biAoZnVuICgpIC0+ICgpKSlcblxubGV0IF9saWZ0X2Vycm9yX2xvZ3NfZm9yX0thU2EgZiA9XG4gIGYgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZyBzdHJpbmdfb3B0IGV4biAtPlxuICAgICAgZnN0XG4gICAgICAgICh3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yIChTb21lIHN0cmluZykgc3RyaW5nX29wdCBleG4gKGZ1biAoKSAtPiAoKSkpKVxuXG5sZXQgY2hlY2tfcG9pbnRcbiAgICAod2FybiA6XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgICBleGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAgID90b191aTpib29sIC0+XG4gICAgICAnYSAtPlxuICAgICAgP21lc3NhZ2U6c3RyaW5nIC0+XG4gICAgICA/cG9zOkxvYy50IC0+XG4gICAgICBleG4gLT5cbiAgICAgIHVuaXQgLT5cbiAgICAgIGV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHVuaXQpIHBhcmFtZXRlciBlcnJvciBlcnJvcicgcyA/dG9fdWlcbiAgICA/bWVzc2FnZSA/cG9zIGV4biA9XG4gIGlmIGVycm9yID09IGVycm9yJyB0aGVuXG4gICAgZXJyb3JcbiAgZWxzZSAoXG4gICAgbGV0IGVycm9yLCAoKSA9IHdhcm4gcGFyYW1ldGVyIGVycm9yJyA/dG9fdWkgcyA/bWVzc2FnZSA/cG9zIGV4biAoKSBpblxuICAgIGVycm9yXG4gIClcbiIsIigqKiBUaW1lLXN0YW1wOiA8SnVsIDAyIDIwMTY+ICopXG5cbmxldCBmb3JfS2FTaW0gZiA9IGYgKGZ1biBfIF8gXyBfIF8gLT4gKCkpICgpICgpXG5sZXQgbGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gZiBhIGIgPSBzbmQgKGZvcl9LYVNpbSBmIGEgYilcblxubGV0IGxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2Zvcl9LYVNpbSBmIGEgYiA9XG4gIGxldCBfLCBiLCBjID0gZm9yX0thU2ltIGYgYSBiIGluXG4gIGIsIGNcblxubGV0IGxpZnRfZ2VuZXJpY190ZXJuYXJ5X2Zvcl9LYVNpbSBmIGEgYiBjID0gc25kIChmb3JfS2FTaW0gZiBhIGIgYylcblxubGV0IGxpZnRfZ2VuX3VuYXJ5IGR1bXAgZiBhID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF9nZW5fYmluYXJ5IGR1bXAgZiBhIGIgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IGluXG4gIGxldCBlcnJvciwgb3V0cHV0ID0gZiBwYXJhbWV0ZXJzIGVycm9yIGEgYiBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfZ2VuX3Rlcm5hcnkgZHVtcCBmIGEgYiBjID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGIgYyBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdW5hcnkgZiBhID0gbGlmdF9nZW5fdW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYVxuXG5sZXQgbGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iaW5hcnkgZiBhIGIgPVxuICBsaWZ0X2dlbl9iaW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYSBiXG5cbmxldCBsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3Rlcm5hcnkgZiBhIGIgYyA9XG4gIGxpZnRfZ2VuX2JpbmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhIGIgY1xuXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfdW5hcnkgZiBhID0gbGlmdF9nZW5fdW5hcnkgKGZ1biBfIF8gLT4gKCkpIGYgYVxubGV0IGxpZnRfd2l0aG91dF9sb2dnaW5nX2JpbmFyeSBmIGEgYiA9IGxpZnRfZ2VuX2JpbmFyeSAoZnVuIF8gXyBfIC0+ICgpKSBmIGEgYlxuXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfdGVybmFyeSBmIGEgYiBjID1cbiAgbGlmdF9nZW5fdGVybmFyeSAoZnVuIF8gXyBfIF8gLT4gKCkpIGYgYSBiIGNcbiIsIigqKlxuICAqIHN0b3J5UHJvZmlsaW5nLm1sXG4gICpcbiAgKiBHZW5lcmF0ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gZm9yIHN0b3JpZXMgaW4gS2FTaW1cbiAgKlxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAwOS8wNC8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDE1LzA2LzIwMTJcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgc3RlcF9raW5kID1cbiAgfCBEdW1teVxuICB8IEJlZ2lubmluZ1xuICB8IENvbGxlY3RfdHJhY2VzXG4gIHwgQ2F1c2FsX2NvbXByZXNzaW9uXG4gIHwgV2Vha19jb21wcmVzc2lvblxuICB8IFN0cm9uZ19jb21wcmVzc2lvblxuICB8IEl0ZXJhdGlvbiBvZiBpbnRcbiAgfCBTdG9yeSBvZiBpbnRcbiAgfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvblxuICB8IFNpcGhvbl9kZXRlY3Rpb25cbiAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZVxuICB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuICB8IFBzZXVkb19pbnZlcnNlX2RlbGV0aW9uXG4gIHwgUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGVcbiAgfCBDb21wcmVzc2lvblxuICB8IEJ1aWxkX2dyaWRcbiAgfCBCdWlsZF9jb25maWd1cmF0aW9uXG4gIHwgVHJhbnNpdGl2ZV9jbG9zdXJlXG4gIHwgR3JhcGhfcmVkdWN0aW9uXG4gIHwgR3JhcGhfY29udmVyc2lvblxuICB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb25cbiAgfCBTdG9yZV90cmFjZVxuICB8IFJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50c1xuICB8IEJsYWNrbGlzdGluZ19ldmVudHNcbiAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb25cbiAgfCBEb21haW5zX2luaXRpYWxpemF0aW9uXG4gIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIG9mIHN0cmluZ1xuICB8IEFwcGx5X3J1bGUgb2YgaW50XG4gIHwgSW5pdGlhbF9zdGF0ZSBvZiBpbnRcbiAgfCBTY2FuX3J1bGVfc3RhdGljIG9mIGludFxuICB8IFNjYW5fcnVsZV9keW5hbWljIG9mIGludFxuICB8IFJlZ3VsYXJfaW5mbHVlbmNlc1xuICB8IFNpZGVfZWZmZWN0c19pbmZsdWVuY2VzXG4gIHwgTWVyZ2VfaW5mbHVlbmNlc1xuICB8IEthU2ltX2NvbXBpbGF0aW9uXG4gIHwgS2FTYV9wcmVjb21waWxhdGlvblxuICB8IEthU2FfbGV4aW5nXG4gIHwgS2FTYV9saW5raW5nXG4gIHwgSW5mbHVlbmNlX21hcCBvZiBzdHJpbmdcbiAgfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIG9mIHN0cmluZ1xuICB8IExLYXBwYV9zaWduYXR1cmVcblxubGV0IHN0cmluZ19vZl9zdGVwX2tpbmQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IER1bW15IHwgQmVnaW5uaW5nIC0+IFwiXCJcbiAgfCBCdWlsZF9jb25maWd1cmF0aW9uIC0+IFwiQnVpbGQgY29uZmlndXJhdGlvblwiXG4gIHwgQ29sbGVjdF90cmFjZXMgLT4gXCJDb2xsZWN0IHRyYWNlc1wiXG4gIHwgQ2F1c2FsX2NvbXByZXNzaW9uIC0+IFwiQ2F1c2FsIGNvbXByZXNzaW9uXCJcbiAgfCBXZWFrX2NvbXByZXNzaW9uIC0+IFwiV2VhayBjb21wcmVzc2lvblwiXG4gIHwgU3Ryb25nX2NvbXByZXNzaW9uIC0+IFwiU3Ryb25nIGNvbXByZXNzaW9uXCJcbiAgfCBJdGVyYXRpb24gaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiSXRlcmF0aW9uICVpXCIgaW50XG4gIHwgU3RvcnkgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU3RvcnkgJWlcIiBpbnRcbiAgfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvbiAtPiBcIlBhcnRpYWwgb3JkZXIgcmVkdWN0aW9uXCJcbiAgfCBTaXBob25fZGV0ZWN0aW9uIC0+IFwiRGV0ZWN0aW9uIG9mIHNpcGhvbnNcIlxuICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlIC0+IFwiU3BsaXR0aW5nIGluaXRpYWwgc3RhdGVzXCJcbiAgfCBBZ2VudF9pZHNfZGlzYW1iaWd1YXRpb24gLT4gXCJSZW5hbWluZyBhZ2VudHMgdG8gYXZvaWQgY29uZmxpY3RzXCJcbiAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvbiAtPiBcIkRlbGV0aW9uIG9mIHBzZXVkbyBpbnZlcnNlIGV2ZW50c1wiXG4gIHwgUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGUgLT5cbiAgICBcIlJlbW92aW5nIGV2ZW50cyBhZnRlciB0aGUgbGFzdCBvYnNlcnZhYmxlc1wiXG4gIHwgQ29tcHJlc3Npb24gLT4gXCJDb21wcmVzc2lvblwiXG4gIHwgVHJhbnNpdGl2ZV9jbG9zdXJlIC0+IFwiVHJhbnNpdGl2ZSBjbG9zdXJlXCJcbiAgfCBCdWlsZF9ncmlkIC0+IFwiR3JpZCBjb21wdXRhdGlvblwiXG4gIHwgR3JhcGhfcmVkdWN0aW9uIC0+IFwiVHJhbnNpdGl2ZSByZWR1Y3Rpb25cIlxuICB8IEdyYXBoX2NvbnZlcnNpb24gLT4gXCJHcmFwaCBjb252ZXJzaW9uXCJcbiAgfCBDYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIC0+IFwiQ29tcHV0aW5nIHRoZSBjYW5ub25pYyBmb3JtXCJcbiAgfCBTdG9yZV90cmFjZSAtPiBcIlN0b3JlIHRyYWNlXCJcbiAgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMgLT4gXCJSZW1vdmluZyBibGFjay1saXN0ZWQgZXZlbnRzXCJcbiAgfCBCbGFja2xpc3RpbmdfZXZlbnRzIC0+IFwiQmxha2xpc3RpbmcgZXZlbnRzXCJcbiAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb24gLT4gXCJHbG9iYWwgaW5pdGlhbGl6YXRpb25cIlxuICB8IERvbWFpbnNfaW5pdGlhbGl6YXRpb24gLT4gXCJEb21haW5zIGluaXRpYWxpemF0aW9uXCJcbiAgfCBEb21haW5faW5pdGlhbGl6YXRpb24gc3RyaW5nIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJEb21haW4gaW5pdGlhbGl6YXRpb24gKCVzKVwiIHN0cmluZ1xuICB8IEFwcGx5X3J1bGUgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiQXBwbHkgcnVsZSAlaVwiIGludFxuICB8IEluaXRpYWxfc3RhdGUgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiSW5pdGlhbCBzdGF0ZSAlaVwiIGludFxuICB8IFNjYW5fcnVsZV9zdGF0aWMgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU2NhbiBydWxlICVpIChzdGF0aWMpXCIgaW50XG4gIHwgU2Nhbl9ydWxlX2R5bmFtaWMgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU2NhbiBydWxlICVpIChkeW5hbWljKVwiIGludFxuICB8IFJlZ3VsYXJfaW5mbHVlbmNlcyAtPiBQcmludGYuc3ByaW50ZiBcIlJlZ3VsYXIgaW5mbHVlbmNlcyBjb21wdXRhdGlvblwiXG4gIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXMgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIlNpZGUtZWZmZWN0cyBpbmZsdWVuY2VzIGNvbXB1dGF0aW9uXCJcbiAgfCBNZXJnZV9pbmZsdWVuY2VzIC0+IFByaW50Zi5zcHJpbnRmIFwiTWVyZ2luZyBpbmZsdWVuY2VzXCJcbiAgfCBLYVNpbV9jb21waWxhdGlvbiAtPiBQcmludGYuc3ByaW50ZiBcIkthU2ltIGZyb250ZW5kXCJcbiAgfCBLYVNhX3ByZWNvbXBpbGF0aW9uIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBwcmVjb21waWxhdGlvblwiXG4gIHwgS2FTYV9sZXhpbmcgLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIExleGluZ1wiXG4gIHwgS2FTYV9saW5raW5nIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBMaW5raW5nXCJcbiAgfCBJbmZsdWVuY2VfbWFwIHN0cmluZyAtPiBQcmludGYuc3ByaW50ZiBcIkluZmx1ZW5jZSBtYXAgKCVzKVwiIHN0cmluZ1xuICB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgc3RyaW5nIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJJbmZsdWVuY2UgbWFwIChpbnRlcm5hbCAlcylcIiBzdHJpbmdcbiAgfCBMS2FwcGFfc2lnbmF0dXJlIC0+IFByaW50Zi5zcHJpbnRmIFwiTEthcHBhIHNpZ25hdHVyZVwiXG5cbmxldCBwcmludF9zdGVwX2tpbmQgcGFyYW1ldGVycyB4ID1cbiAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcnMpXG4gICAgKHN0cmluZ19vZl9zdGVwX2tpbmQgeClcblxubW9kdWxlIHR5cGUgU3RvcnlTdGF0cyA9IHNpZ1xuICB0eXBlIGxvZ19pbmZvXG5cbiAgdmFsIGluY19yZW1vdmVkX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfc2VsZWN0ZWRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGxvZ19pbmZvX3RvX2pzb24gOiBsb2dfaW5mbyAtPiBZb2pzb24uQmFzaWMudFxuICB2YWwgbG9nX2luZm9fb2ZfanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfY3V0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfa19jdXRfZXZlbnRzIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCByZXNldF9jdXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX2thc2ltX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9pbml0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9zaWRlX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9vYnNfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19icmFuY2ggOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2N1dCA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCByZXNldF9sb2cgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgZHVtcF9jb21wbGV0ZV9sb2cgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IGxvZ19pbmZvIC0+IHVuaXRcbiAgdmFsIGR1bXBfc2hvcnRfbG9nIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBsb2dfaW5mbyAtPiB1bml0XG4gIHZhbCBhZGRfcHJvcGFnYXRpb25fY2FzZV91cCA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX2xvb2tfdXBfY2FzZSA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX2xvb2tfZG93bl9jYXNlIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBjb3B5IDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGlzX2R1bW15IDogc3RlcF9raW5kIC0+IGJvb2xcblxuICB2YWwgYWRkX2V2ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHN0ZXBfa2luZCAtPlxuICAgICh1bml0IC0+IGludCkgb3B0aW9uIC0+XG4gICAgbG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogbG9nX2luZm9cblxuICB2YWwgY2xvc2VfZXZlbnQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgc3RlcF9raW5kIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBsb2dfaW5mb1xuXG4gIHZhbCBhZGRfZXZlbnRfb3B0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHN0ZXBfa2luZCBvcHRpb24gLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIGxvZ19pbmZvXG5cbiAgdmFsIGNsb3NlX2V2ZW50X29wdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBzdGVwX2tpbmQgb3B0aW9uIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBsb2dfaW5mb1xuXG4gIHZhbCBzZXRfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfc3RlcF90aW1lIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9nbG9iYWxfY3V0IDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfcHNldWRvX2ludiA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0YXJ0X2NvbXByZXNzaW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9ncmlkX2dlbmVyYXRpb24gOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2Nhbm9uaWNhbGlzYXRpb24gOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfc3RvcnlfcmVzZWFyY2hfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBlbGxhcHNlZF9nbG9iYWxfdGltZSA6IGxvZ19pbmZvIC0+IGZsb2F0XG4gIHZhbCBlbGxhcHNlZF90aW1lIDogbG9nX2luZm8gLT4gZmxvYXRcbiAgdmFsIGluaXRfbG9nX2luZm8gOiB1bml0IC0+IGxvZ19pbmZvXG4gIHZhbCB0aWNrIDogbG9nX2luZm8gLT4gYm9vbCAqIGxvZ19pbmZvXG4gIHZhbCBjbG9zZV9sb2dnZXIgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHVuaXRcbiAgdmFsIGZsdXNoX2xvZ2dlciA6IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBTdG9yeVN0YXRzIDogU3RvcnlTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHN0YWNrX2hlYWQgPSB7XG4gICAgY3VycmVudF9icmFuY2g6IGludDtcbiAgICBzZWxlY3RlZF9ldmVudHM6IGludDtcbiAgICByZW1haW5pbmdfZXZlbnRzOiBpbnQ7XG4gICAgcmVtb3ZlZF9ldmVudHM6IGludDtcbiAgICBzdGFja19zaXplOiBpbnQ7XG4gIH1cblxuICB0eXBlIHN0ZXAgPSB7XG4gICAgdGFnOiBzdGVwX2tpbmQ7XG4gICAgc2l6ZV9iZWZvcmU6IGludCBvcHRpb247XG4gICAgc2l6ZV9hZnRlcjogaW50IG9wdGlvbjtcbiAgICB0aW1lX3N0YXJ0OiBmbG9hdDtcbiAgICBkdXJhdGlvbjogZmxvYXQgb3B0aW9uO1xuICAgIGRlcHRoOiBpbnQ7XG4gIH1cblxuICBsZXQga19maXJzdCBfcGFyYW1ldGVyIGsgbCA9XG4gICAgbGV0IHJlYyBhdXggayBsIG91dHB1dCA9XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgIFtdLCBMaXN0LnJldiBvdXRwdXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICggKGxldCByZWMgYXV4IGsgb3V0cHV0ID1cbiAgICAgICAgICAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgb3V0cHV0XG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGF1eCAoayAtIDEpIChcIlwiIDo6IG91dHB1dClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGF1eCBrIFtdKSxcbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dCApXG4gICAgICAgIHwgdCA6OiBxIC0+IGF1eCAoayAtIDEpIHEgKHQgOjogb3V0cHV0KVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IGsgbCBbXVxuXG4gIGxldCBwcmludF90YXNrIHBhcmFtZXRlciAoYSwgYikgPVxuICAgIGxldCBfID0gcHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlciBhLnRhZyBpblxuICAgIGxldCB0YWIsIGIgPSBrX2ZpcnN0IHBhcmFtZXRlciA0IGIgaW5cbiAgICBsZXQgXyA9IExpc3QuaXRlciAocHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlcikgYiBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoTG9nZ2Vycy5wcmludF9jZWxsIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpKVxuICAgICAgICB0YWJcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5zaXplX2JlZm9yZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpIC0+IHN0cmluZ19vZl9pbnQgaSlcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5zaXplX2FmdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGkgLT4gc3RyaW5nX29mX2ludCBpKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgIChtYXRjaCBhLmR1cmF0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHRpbWUgLT4gc3RyaW5nX29mX2Zsb2F0IHRpbWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBjbG9zZV9sb2dnZXIgcGFyYW1ldGVyID1cbiAgICBMb2dnZXJzLmNsb3NlX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuXG4gIGxldCBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyID1cbiAgICBMb2dnZXJzLmZsdXNoX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuXG4gIHR5cGUgbG9nX2luZm8gPSB7XG4gICAgZ2xvYmFsX3RpbWU6IGZsb2F0O1xuICAgIHN0b3J5X3RpbWU6IGZsb2F0O1xuICAgIHN0ZXBfdGltZTogZmxvYXQ7XG4gICAgY3VycmVudF90YXNrOiBzdGVwIGxpc3Q7XG4gICAgbmV4dF9kZXB0aDogaW50O1xuICAgIGJyYW5jaDogaW50O1xuICAgIGN1dDogaW50O1xuICAgIHN0YWNrOiBzdGFja19oZWFkIGxpc3Q7XG4gICAgY3VycmVudF9zdGFjazogc3RhY2tfaGVhZDtcbiAgICBwcm9wYWdhdGlvbjogaW50IGFycmF5O1xuICAgIGxhc3RfdGljazogZmxvYXQ7XG4gIH1cblxuICBsZXQgaXNfZHVtbXkgc3RlcF9raW5kID1cbiAgICBtYXRjaCBzdGVwX2tpbmQgd2l0aFxuICAgIHwgRHVtbXkgLT4gdHJ1ZVxuICAgIHwgQmVnaW5uaW5nIHwgQ29sbGVjdF90cmFjZXMgfCBDYXVzYWxfY29tcHJlc3Npb24gfCBXZWFrX2NvbXByZXNzaW9uXG4gICAgfCBTdHJvbmdfY29tcHJlc3Npb24gfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvbiB8IFNpcGhvbl9kZXRlY3Rpb25cbiAgICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlIHwgQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG4gICAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvbiB8IFJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlXG4gICAgfCBDb21wcmVzc2lvbiB8IEJ1aWxkX2dyaWQgfCBCdWlsZF9jb25maWd1cmF0aW9uIHwgVHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgfCBHcmFwaF9yZWR1Y3Rpb24gfCBHcmFwaF9jb252ZXJzaW9uIHwgQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvblxuICAgIHwgU3RvcmVfdHJhY2UgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMgfCBCbGFja2xpc3RpbmdfZXZlbnRzXG4gICAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb24gfCBEb21haW5zX2luaXRpYWxpemF0aW9uIHwgUmVndWxhcl9pbmZsdWVuY2VzXG4gICAgfCBTaWRlX2VmZmVjdHNfaW5mbHVlbmNlcyB8IE1lcmdlX2luZmx1ZW5jZXMgfCBLYVNpbV9jb21waWxhdGlvblxuICAgIHwgS2FTYV9wcmVjb21waWxhdGlvbiB8IEthU2FfbGV4aW5nIHwgS2FTYV9saW5raW5nIHwgTEthcHBhX3NpZ25hdHVyZVxuICAgIHwgSXRlcmF0aW9uIF8gfCBTdG9yeSBfIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIF8gfCBBcHBseV9ydWxlIF9cbiAgICB8IEluaXRpYWxfc3RhdGUgXyB8IFNjYW5fcnVsZV9zdGF0aWMgXyB8IFNjYW5fcnVsZV9keW5hbWljIF9cbiAgICB8IEluZmx1ZW5jZV9tYXAgXyB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvciBzdGVwX2tpbmQgZiBsb2dfaW5mbyA9XG4gICAgaWYgaXNfZHVtbXkgc3RlcF9raW5kIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcIkluY29uc2lzdGVudCBwcm9maWxpbmcgaW5mb3JtYXRpb24sIGFkZF9ldmVudCBzaG91bGQgbm90IGJlIFxcXG4gICAgICAgICAgICAgY2FsbGVkIHdpdGggYSBkdW1teSBldmVudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJEdW1teSBldmVudCBpbiBhZGRfZXZlbnRcIikgKClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IG5leHRfZGVwdGggPSBsb2dfaW5mby5uZXh0X2RlcHRoIGluXG4gICAgICBsZXQgdGFzayA9XG4gICAgICAgIHtcbiAgICAgICAgICB0YWcgPSBzdGVwX2tpbmQ7XG4gICAgICAgICAgc2l6ZV9iZWZvcmUgPVxuICAgICAgICAgICAgKG1hdGNoIGYgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IFNvbWUgKGYgKCkpKTtcbiAgICAgICAgICBzaXplX2FmdGVyID0gTm9uZTtcbiAgICAgICAgICB0aW1lX3N0YXJ0ID0gU3lzLnRpbWUgKCk7XG4gICAgICAgICAgZHVyYXRpb24gPSBOb25lO1xuICAgICAgICAgIGRlcHRoID0gbmV4dF9kZXB0aDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBMb2dnZXJzLnByaW50X2NlbGwgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgXCJTdGFydFwiXG4gICAgICBpblxuICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgIHRhc2ssIExpc3QucmV2X21hcCAoZnVuIHggLT4geC50YWcpIChMaXN0LnJldiBsb2dfaW5mby5jdXJyZW50X3Rhc2spXG4gICAgICBpblxuICAgICAgbGV0IF8gPSBwcmludF90YXNrIHBhcmFtZXRlciB0ZXJtaW5hdGVkX3Rhc2sgaW5cbiAgICAgIGxldCBfID0gTG9nZ2Vycy5jbG9zZV9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgaW5cbiAgICAgIGxldCBfID0gZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyXG4gICAgICAgICAgKHN0cmluZ19vZl9zdGVwX2tpbmQgc3RlcF9raW5kKVxuICAgICAgaW5cbiAgICAgIGxldCBjdXJyZW50X3Rhc2sgPSB0YXNrIDo6IGxvZ19pbmZvLmN1cnJlbnRfdGFzayBpblxuICAgICAgZXJyb3IsIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCArIDE7IGN1cnJlbnRfdGFzayB9XG4gICAgKVxuXG4gIGxldCBjbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3Igc3RlcF9raW5kIGYgbG9nX2luZm8gPVxuICAgIGlmIGlzX2R1bW15IHN0ZXBfa2luZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBjbG9zZV9ldmVudCBzaG91bGQgbm90IGJlIFxcXG4gICAgICAgICAgICAgY2FsbGVkIHdpdGggYSBkdW1teSBldmVudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJEdW1teSBldmVudCBpbiBjbG9zZV9ldmVudFwiKSAoKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBpbnRlcnJ1cHRlZCA9XG4gICAgICAgIGxldCBuZXh0X2RlcHRoID0gbG9nX2luZm8ubmV4dF9kZXB0aCBpblxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICBpZiBuZXh0X2RlcHRoID0gMSB0aGVuXG4gICAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICBcIkluY29uc2lzdGVudCBwcm9maWxpbmcgaW5mb3JtYXRpb24sIGRlcHRoIHNob3VsZCBub3QgYmUgZXF1YWwgXFxcbiAgICAgICAgICAgICAgICAgdG8gMSB3aGVuIGNsb3NpbmcgYW4gZXZlbnRcIlxuICAgICAgICAgICAgICAoRmFpbHVyZSBcIkRlcHRoPTEgaW4gY2xvc2VfZXZlbnRcIikgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKClcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbG9nX2luZm8uY3VycmVudF90YXNrIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBubyBjdXJyZW50IHRhc2sgd2hlbiBcXFxuICAgICAgICAgICAgICAgY2xvc2luZyBhbiBldmVudFwiXG4gICAgICAgICAgICAoRmFpbHVyZSBcIk5vIGN1cnJlbnQgdGFza3MgaW4gY2xvc2VfZXZlbnRcIikgbG9nX2luZm9cbiAgICAgICAgfCBjdXJyZW50X3Rhc2sgOjogdGFpbCB3aGVuIGN1cnJlbnRfdGFzay50YWcgPSBzdGVwX2tpbmQgLT5cbiAgICAgICAgICBsZXQgc2l6ZV9hZnRlciA9XG4gICAgICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IFNvbWUgKGYgKCkpXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSAtLiBjdXJyZW50X3Rhc2sudGltZV9zdGFydCBpblxuICAgICAgICAgIGxldCB0YXNrID0geyBjdXJyZW50X3Rhc2sgd2l0aCBzaXplX2FmdGVyOyBkdXJhdGlvbiA9IFNvbWUgdGltZSB9IGluXG4gICAgICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgICAgICB0YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgdGFpbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLm9wZW5fcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIChpZiBpbnRlcnJ1cHRlZCB0aGVuXG4gICAgICAgICAgICAgICAgIFwiSW50ZXJydXB0ZWRcIlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBcIkVuZFwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCAtIDE7IGN1cnJlbnRfdGFzayA9IHRhaWwgfSApXG4gICAgICAgIHwgY3VycmVudF90YXNrIDo6IHRhaWwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgICAgICBjdXJyZW50X3Rhc2ssIExpc3QucmV2X21hcCAoZnVuIHggLT4geC50YWcpIChMaXN0LnJldiB0YWlsKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJJbnRlcnJ1cHRlZFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF90YXNrIHBhcmFtZXRlciB0ZXJtaW5hdGVkX3Rhc2sgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5jbG9zZV9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGZsdXNoX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICAgICAgICBhdXhcbiAgICAgICAgICAgIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCAtIDE7IGN1cnJlbnRfdGFzayA9IHRhaWwgfVxuICAgICAgICAgICAgZXJyb3IgdHJ1ZVxuICAgICAgaW5cbiAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBmYWxzZVxuICAgIClcblxuICBsZXQgZ2VuX29wdCBnZW4gcGFyYW1ldGVyIGVycm9yIHN0ZXBfa2luZCBmIGxvZ19pbmZvID1cbiAgICBtYXRjaCBzdGVwX2tpbmQgd2l0aFxuICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICB8IFNvbWUgZSAtPiBnZW4gcGFyYW1ldGVyIGVycm9yIGUgZiBsb2dfaW5mb1xuXG4gIGxldCBhZGRfZXZlbnRfb3B0ID0gZ2VuX29wdCBhZGRfZXZlbnRcbiAgbGV0IGNsb3NlX2V2ZW50X29wdCA9IGdlbl9vcHQgY2xvc2VfZXZlbnRcblxuICBsZXQgcHJvcGFnYXRpb25fbGFiZWxzID1cbiAgICBbfFxuICAgICAgXCJOb25lXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxIFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMiBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDMgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA0IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNSBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDYgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA3IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgOCBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDkgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxMFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTFcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDEyXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxM1wiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTRcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDE1XCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxNlwiO1xuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMSBcIjtcbiAgICAgICgqMTcqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMiBcIjtcbiAgICAgICgqMTgqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMyBcIjtcbiAgICAgICgqMTkqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNCBcIjtcbiAgICAgICgqMjAqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNSBcIjtcbiAgICAgICgqMjEqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNiBcIjtcbiAgICAgICgqMjIqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNyBcIjtcbiAgICAgICgqMjMqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgOCBcIjtcbiAgICAgICgqMjQqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgOSBcIjtcbiAgICAgICgqMjUqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTBcIjtcbiAgICAgICgqMjYqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTFcIjtcbiAgICAgICgqMjcqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTJcIjtcbiAgICAgICgqMjgqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTNcIjtcbiAgICAgICgqMjkqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTRcIjtcbiAgICAgICgqMzAqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTVcIjtcbiAgICAgICgqMzEqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTZcIjtcbiAgICAgICgqMzIqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDFcIjtcbiAgICAgICgqMzMqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDJcIjtcbiAgICAgICgqMzQqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDNcIjtcbiAgICAgICgqMzUqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDRcIjtcbiAgICAgICgqMzYqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDFcIjtcbiAgICAgICgqMzcqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDJcIjtcbiAgICAgICgqMzgqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDNcIjtcbiAgICAgICgqMzkqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDRcIjtcbiAgICAgICgqNDAqKVxuICAgIHxdXG5cbiAgbGV0IHByb3BhZ2F0aW9uX2Nhc2VzID0gQXJyYXkubGVuZ3RoIHByb3BhZ2F0aW9uX2xhYmVsc1xuXG4gIGxldCBjb3B5IGxvZ19pbmZvID1cbiAgICB7IGxvZ19pbmZvIHdpdGggcHJvcGFnYXRpb24gPSBBcnJheS5jb3B5IGxvZ19pbmZvLnByb3BhZ2F0aW9uIH1cblxuICBsZXQgaW5pdF9sb2dfaW5mbyAoKSA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHtcbiAgICAgIG5leHRfZGVwdGggPSAxO1xuICAgICAgZ2xvYmFsX3RpbWUgPSB0aW1lO1xuICAgICAgc3RvcnlfdGltZSA9IHRpbWU7XG4gICAgICBzdGVwX3RpbWUgPSB0aW1lO1xuICAgICAgY3VycmVudF90YXNrID0gW107XG4gICAgICBwcm9wYWdhdGlvbiA9IEFycmF5Lm1ha2UgcHJvcGFnYXRpb25fY2FzZXMgMDtcbiAgICAgIGJyYW5jaCA9IDA7XG4gICAgICBjdXQgPSAwO1xuICAgICAgY3VycmVudF9zdGFjayA9XG4gICAgICAgIHtcbiAgICAgICAgICBjdXJyZW50X2JyYW5jaCA9IDA7XG4gICAgICAgICAgc2VsZWN0ZWRfZXZlbnRzID0gMDtcbiAgICAgICAgICByZW1haW5pbmdfZXZlbnRzID0gMDtcbiAgICAgICAgICByZW1vdmVkX2V2ZW50cyA9IDA7XG4gICAgICAgICAgc3RhY2tfc2l6ZSA9IDA7XG4gICAgICAgIH07XG4gICAgICBzdGFjayA9IFtdO1xuICAgICAgbGFzdF90aWNrID0gMC47XG4gICAgfVxuXG4gIGxldCBsb2dfaW5mb190b19qc29uIGxvZ19pbmZvID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJnbG9iYWxfdGltZVwiLCBgRmxvYXQgbG9nX2luZm8uZ2xvYmFsX3RpbWU7XG4gICAgICAgIFwic3RvcnlfdGltZVwiLCBgRmxvYXQgbG9nX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgXCJzdGVwX3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLnN0ZXBfdGltZTtcbiAgICAgICAgXCJuZXh0X2RlcHRoXCIsIGBJbnQgbG9nX2luZm8ubmV4dF9kZXB0aDtcbiAgICAgICAgXCJicmFuY2hcIiwgYEludCBsb2dfaW5mby5icmFuY2g7XG4gICAgICAgIFwiY3V0XCIsIGBJbnQgbG9nX2luZm8uY3V0O1xuICAgICAgXVxuXG4gIGxldCBmbG9hdF9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBGbG9hdCBmIC0+IGZcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBmbG9hdFwiLCB4KSlcblxuICBsZXQgaW50X29mX2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEludCBmIC0+IGZcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBmbG9hdFwiLCB4KSlcblxuICBsZXQgbG9nX2luZm9fb2ZfanNvbiB4ID1cbiAgICBsZXQgaW5pdCA9IGluaXRfbG9nX2luZm8gKCkgaW5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IGBBc3NvYyBsIHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgaW5pdCB3aXRoXG4gICAgICAgICAgIGdsb2JhbF90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImdsb2JhbF90aW1lXCIgbCk7XG4gICAgICAgICAgIHN0b3J5X3RpbWUgPSBmbG9hdF9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlfdGltZVwiIGwpO1xuICAgICAgICAgICBzdGVwX3RpbWUgPSBmbG9hdF9vZl9qc29uIChMaXN0LmFzc29jIFwic3RlcF90aW1lXCIgbCk7XG4gICAgICAgICAgIG5leHRfZGVwdGggPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcIm5leHRfZGVwdGhcIiBsKTtcbiAgICAgICAgICAgYnJhbmNoID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJicmFuY2hcIiBsKTtcbiAgICAgICAgICAgY3V0ID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJjdXRcIiBsKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBsb2dfaW5mb1wiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgbG9nX2luZm9cIiwgeCkpXG5cbiAgbGV0IGR1bXBfc2hvcnRfbG9nIHBhcmFtZXRlciBsb2dfaW5mbyA9XG4gICAgbGV0IF8gPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCJSZW1haW5pbmcgZXZlbnRzOiAlaSA7IFN0YWNrIHNpemU6ICVpIDsgXCJcbiAgICAgICAgbG9nX2luZm8uY3VycmVudF9zdGFjay5yZW1haW5pbmdfZXZlbnRzXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2suc3RhY2tfc2l6ZVxuICAgIGluXG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICBcIlRvdGFsIGJyYW5jaDogJWkgOyBUb3RhbCBjdXQ6ICVpIDsgQ3VycmVudCBkZXB0aDogJWkgQC5cIiBsb2dfaW5mby5icmFuY2hcbiAgICAgIGxvZ19pbmZvLmN1dCBsb2dfaW5mby5jdXJyZW50X3N0YWNrLmN1cnJlbnRfYnJhbmNoXG5cbiAgbGV0IHJlc2V0X2xvZyBsb2cgPVxuICAgIGxldCB0ID0gbG9nLnByb3BhZ2F0aW9uIGluXG4gICAgbGV0IF8gPSBBcnJheS5maWxsIHQgMCAoQXJyYXkubGVuZ3RoIHQpIDAgaW5cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgeyBsb2cgd2l0aCBzdGVwX3RpbWUgPSB0aW1lOyBzdG9yeV90aW1lID0gdGltZSB9XG5cbiAgbGV0IHByb3BhZ2F0ZV91cCBpID0gaVxuICBsZXQgcHJvcGFnYXRlX2Rvd24gaSA9IGkgKyAxNlxuICBsZXQgbG9va191cCBpID0gaSArIDMyXG4gIGxldCBsb29rX2Rvd24gaSA9IGkgKyAzNlxuXG4gIGxldCBlbGxhcHNlZF90aW1lIGxvZyA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHRpbWUgLS4gbG9nLnN0b3J5X3RpbWVcblxuICBsZXQgZWxsYXBzZWRfZ2xvYmFsX3RpbWUgbG9nID1cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgdGltZSAtLiBsb2cuZ2xvYmFsX3RpbWVcblxuICBsZXQgc2V0X3RpbWUgbG9nID1cbiAgICB7IGxvZyB3aXRoIHN0b3J5X3RpbWUgPSBTeXMudGltZSAoKTsgc3RlcF90aW1lID0gU3lzLnRpbWUgKCkgfVxuXG4gIGxldCBzZXRfc3RlcF90aW1lIGxvZyA9IHsgbG9nIHdpdGggc3RlcF90aW1lID0gU3lzLnRpbWUgKCkgfVxuICBsZXQgc2V0X3N0YXJ0X2NvbXByZXNzaW9uID0gc2V0X3RpbWVcblxuICBsZXQgc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgbG9nID1cbiAgICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gICAgbGV0IHN0ID0gbG9nLnN0ZXBfdGltZSBpblxuICAgIHsgbG9nIHdpdGggc3RvcnlfdGltZSA9IHQgLS4gc3Q7IHN0ZXBfdGltZSA9IHQgfVxuXG4gIGxldCBzZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb25fdGltZSBsb2cgPSBsb2dcbiAgbGV0IHNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nID0gbG9nXG4gIGxldCBzZXRfZ3JpZF9nZW5lcmF0aW9uIGxvZyA9IGxvZ1xuICBsZXQgc2V0X2Nhbm9uaWNhbGlzYXRpb24gbG9nID0gbG9nXG5cbiAgbGV0IGFkZF9jYXNlIGkgbG9nID1cbiAgICBsZXQgdCA9IGxvZy5wcm9wYWdhdGlvbiBpblxuICAgIGxldCBfID0gdC4oaSkgPC0gdC4oaSkgKyAxIGluXG4gICAgbG9nXG5cbiAgbGV0IGFkZF9sb29rX2Rvd25fY2FzZSBpID0gYWRkX2Nhc2UgKGxvb2tfZG93biBpKVxuICBsZXQgYWRkX2xvb2tfdXBfY2FzZSBpID0gYWRkX2Nhc2UgKGxvb2tfdXAgaSlcbiAgbGV0IGFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gaSA9IGFkZF9jYXNlIChwcm9wYWdhdGVfZG93biBpKVxuICBsZXQgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgaSA9IGFkZF9jYXNlIChwcm9wYWdhdGVfdXAgaSlcblxuICBsZXQgaW5jX2N1dCBsb2cgPVxuICAgIG1hdGNoIGxvZy5zdGFjayB3aXRoXG4gICAgfCBbXSAtPiBsb2dcbiAgICB8IHQgOjogcSAtPiB7IGxvZyB3aXRoIGN1cnJlbnRfc3RhY2sgPSB0OyBzdGFjayA9IHE7IGN1dCA9IGxvZy5jdXQgKyAxIH1cblxuICBsZXQgaW5jX2JyYW5jaCBsb2cgPVxuICAgIHtcbiAgICAgIGxvZyB3aXRoXG4gICAgICBzdGFjayA9IGxvZy5jdXJyZW50X3N0YWNrIDo6IGxvZy5zdGFjaztcbiAgICAgIGJyYW5jaCA9IGxvZy5icmFuY2ggKyAxO1xuICAgICAgY3VycmVudF9zdGFjayA9XG4gICAgICAgIHtcbiAgICAgICAgICBsb2cuY3VycmVudF9zdGFjayB3aXRoXG4gICAgICAgICAgY3VycmVudF9icmFuY2ggPSBsb2cuY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaCArIDE7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBpbmNfbl9rYXNpbV9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfbl9vYnNfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25fc2lkZV9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfbl9pbml0X2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19jdXRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX2tfY3V0X2V2ZW50cyBfayBsb2cgPSBsb2dcbiAgbGV0IHJlc2V0X2N1dF9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfc2VsZWN0ZWRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX3JlbW92ZWRfZXZlbnRzIGxvZyA9IGxvZ1xuXG4gIGxldCBkdW1wX2NvbXBsZXRlX2xvZyBwYXJhbWV0ZXIgbG9nX2luZm8gPVxuICAgIGxldCBsb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIvKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJTdG9yeSBwcm9maWxpbmdcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkVsbGFwc2VkX3RpbWU6ICAgICAgICAgICAgICAgICAgJWZcIlxuICAgICAgICAoZWxsYXBzZWRfdGltZSBsb2dfaW5mbylcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIlN0b3J5IHJlc2VhcmNoIHRpbWU6ICAgICAgICAgICAgJWZcIlxuICAgICAgICBsb2dfaW5mby5zdG9yeV90aW1lXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJFeHBsb3JhdGlvbiBkZXB0aDogICAgICAgICAgICAgICVpXCJcbiAgICAgICAgbG9nX2luZm8uY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiRXhwbG9yYXRpb24gY3V0czogICAgICAgICAgICAgICAlaVwiIGxvZ19pbmZvLmN1dFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIqKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiUHJvcGFnYXRpb24gSGl0czpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPj0gcHJvcGFnYXRpb25fY2FzZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIgICAgICAgICVzICVpXCIgcHJvcGFnYXRpb25fbGFiZWxzLihrKVxuICAgICAgICAgICAgICBsb2dfaW5mby5wcm9wYWdhdGlvbi4oaylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IF8gPSBhdXggMSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIqL1wiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgICgpXG5cbiAgbGV0IHRpY2sgbG9nX2luZm8gPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICBpZiB0aW1lIC0uIGxvZ19pbmZvLmxhc3RfdGljayA+IDYwMC4gdGhlblxuICAgICAgdHJ1ZSwgeyBsb2dfaW5mbyB3aXRoIGxhc3RfdGljayA9IHRpbWUgfVxuICAgIGVsc2VcbiAgICAgIGZhbHNlLCBsb2dfaW5mb1xuXG4gIGxldCBzZXRfZ2xvYmFsX2N1dCBfbiBsb2dfaW5mbyA9IGxvZ19pbmZvXG4gIGxldCBzZXRfcHNldWRvX2ludiBfbiBsb2dfaW5mbyA9IGxvZ19pbmZvXG5lbmRcbiIsIigqKlxuICAgVGltZS1zdGFtcDogPEZlYiAyMiAyMDE4PlxuKilcblxubW9kdWxlIHR5cGUgU2V0X3dpdGhfbG9ncyA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIGlzX3NpbmdsZXRvbiA6IHQgLT4gYm9vbFxuXG4gIHZhbCBhZGQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB0XG5cbiAgdmFsIGFkZF93aGVuX25vdF9pbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHRcblxuICB2YWwgcmVtb3ZlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCBtaW51cyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB0XG5cbiAgdmFsIHVuaW9uIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHRcblxuICB2YWwgZGlzam9pbnRfdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCBpbnRlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB0XG5cbiAgdmFsIGRpZmYgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCBjYXJkaW5hbCA6IHQgLT4gaW50XG4gIHZhbCBtZW0gOiBlbHQgLT4gdCAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgdmFsIGZvcl9hbGwgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICB2YWwgcGFydGl0aW9uIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3Vic2V0IDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGZvbGRfaW52IDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXBfd2l0aF9sb2dzID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgc2V0XG4gIHR5cGUgKydhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIG1lbSA6IGVsdCAtPiAnYSB0IC0+IGJvb2xcblxuICB2YWwgZmluZF9vcHRpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSBvcHRpb25cblxuICB2YWwgZmluZF9kZWZhdWx0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYVxuXG4gIHZhbCBmaW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYVxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSBvcHRpb25cblxuICB2YWwgYWRkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSB0XG5cbiAgdmFsIG92ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgdFxuXG4gIHZhbCBhZGRfb3Jfb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSB0XG5cbiAgdmFsIHJlbW92ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIHRcblxuICB2YWwgcmVtb3ZlX29yX25vdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIHRcblxuICB2YWwgdXBkYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIHRcblxuICB2YWwgbWFwMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjIHRcblxuICB2YWwgbWFwMnogOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSkgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSB0XG5cbiAgdmFsIGZvbGQyeiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnY1xuXG4gIHZhbCBmb2xkMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2NcblxuICB2YWwgZm9sZDJfc3BhcnNlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdjXG5cbiAgdmFsIGl0ZXIyX3NwYXJzZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCkgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxuICB2YWwgZGlmZiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSB0ICogJ2EgdFxuXG4gIHZhbCBkaWZmX3ByZWQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKCdhIC0+ICdhIC0+IGJvb2wpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgdCAqICdhIHRcblxuICB2YWwgbWVyZ2UgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgdFxuXG4gIHZhbCB1bmlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYSB0XG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKGVsdCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYlxuXG4gIHZhbCBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgKGVsdCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiKSAtPlxuICAgIChlbHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IpIC0+XG4gICAgc2V0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiXG5cbiAgdmFsIGl0ZXIgOiAoZWx0IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gIHZhbCBpdGVyMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0KSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0KSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuXG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICB2YWwgbWFwaSA6IChlbHQgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIGZvcl9hbGwgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgZmlsdGVyX29uZSA6IChlbHQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgY29tcGFyZSA6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBiaW5kaW5ncyA6ICdhIHQgLT4gKGVsdCAqICdhKSBsaXN0XG5cbiAgdmFsIG9mX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgP2Vycm9yX21zZzpzdHJpbmcgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gZWx0KSAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiAndmFsdWUpIC0+XG4gICAgWW9qc29uLkJhc2ljLnQgLT5cbiAgICAndmFsdWUgdFxuXG4gIHZhbCB0b19qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgIChlbHQgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgKCd2YWx1ZSAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAndmFsdWUgdCAtPlxuICAgIFlvanNvbi5CYXNpYy50XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRoX2xvZ3MgPSBzaWdcbiAgdHlwZSBlbHRcblxuICBtb2R1bGUgU2V0IDogU2V0X3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gZWx0XG4gIG1vZHVsZSBNYXAgOiBNYXBfd2l0aF9sb2dzIHdpdGggdHlwZSBlbHQgPSBlbHQgYW5kIHR5cGUgc2V0ID0gU2V0LnRcbmVuZFxuXG5sZXQgbGlmdCBmID0gZiBFeGNlcHRpb24ud3JhcFxuXG5tb2R1bGUgTWFrZSAoU19ib3RoIDogU2V0TWFwLlMpIDpcbiAgU193aXRoX2xvZ3NcbiAgICB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgICBhbmQgdHlwZSAnYSBNYXAudCA9ICdhIFNfYm90aC5NYXAudFxuICAgICBhbmQgdHlwZSBTZXQudCA9IFNfYm90aC5TZXQudCA9IHN0cnVjdFxuICB0eXBlIGVsdCA9IFNfYm90aC5lbHRcblxuICBtb2R1bGUgU2V0IDpcbiAgICBTZXRfd2l0aF9sb2dzIHdpdGggdHlwZSBlbHQgPSBTX2JvdGguZWx0IGFuZCB0eXBlIHQgPSBTX2JvdGguU2V0LnQgPSBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICB0eXBlIHQgPSBTX2JvdGguU2V0LnRcblxuICAgIGxldCBlbXB0eSA9IFNfYm90aC5TZXQuZW1wdHlcbiAgICBsZXQgaXNfZW1wdHkgPSBTX2JvdGguU2V0LmlzX2VtcHR5XG4gICAgbGV0IHNpbmdsZXRvbiA9IFNfYm90aC5TZXQuc2luZ2xldG9uXG4gICAgbGV0IGlzX3NpbmdsZXRvbiA9IFNfYm90aC5TZXQuaXNfc2luZ2xldG9uXG4gICAgbGV0IGFkZCA9IGxpZnQgU19ib3RoLlNldC5hZGRfd2l0aF9sb2dzXG5cbiAgICBsZXQgYWRkX3doZW5fbm90X2luIHAgZSB4IHMgPVxuICAgICAgbGV0IGUsIF8sIHMgPSAobGlmdCBTX2JvdGguU2V0LmFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcykgcCBlIHggcyBpblxuICAgICAgZSwgc1xuXG4gICAgbGV0IHJlbW92ZSA9IGxpZnQgU19ib3RoLlNldC5yZW1vdmVfd2l0aF9sb2dzXG4gICAgbGV0IHVuaW9uID0gbGlmdCBTX2JvdGguU2V0LnVuaW9uX3dpdGhfbG9nc1xuICAgIGxldCBkaXNqb2ludF91bmlvbiA9IGxpZnQgU19ib3RoLlNldC5kaXNqb2ludF91bmlvbl93aXRoX2xvZ3NcbiAgICBsZXQgaW50ZXIgPSBsaWZ0IFNfYm90aC5TZXQuaW50ZXJfd2l0aF9sb2dzXG4gICAgbGV0IGRpZmYgPSBsaWZ0IFNfYm90aC5TZXQuZGlmZl93aXRoX2xvZ3NcbiAgICBsZXQgbWludXMgPSBsaWZ0IFNfYm90aC5TZXQubWludXNfd2l0aF9sb2dzXG4gICAgbGV0IGNhcmRpbmFsID0gU19ib3RoLlNldC5zaXplXG4gICAgbGV0IG1lbSA9IFNfYm90aC5TZXQubWVtXG4gICAgbGV0IGV4aXN0cyA9IFNfYm90aC5TZXQuZXhpc3RzXG4gICAgbGV0IGZpbHRlciA9IFNfYm90aC5TZXQuZmlsdGVyXG4gICAgbGV0IGZvcl9hbGwgPSBTX2JvdGguU2V0LmZvcl9hbGxcbiAgICBsZXQgcGFydGl0aW9uID0gU19ib3RoLlNldC5wYXJ0aXRpb25cbiAgICBsZXQgY29tcGFyZSA9IFNfYm90aC5TZXQuY29tcGFyZVxuICAgIGxldCBlcXVhbCA9IFNfYm90aC5TZXQuZXF1YWxcbiAgICBsZXQgc3Vic2V0ID0gU19ib3RoLlNldC5zdWJzZXRcbiAgICBsZXQgaXRlciA9IFNfYm90aC5TZXQuaXRlclxuICAgIGxldCBmb2xkID0gU19ib3RoLlNldC5mb2xkXG4gICAgbGV0IGZvbGRfaW52ID0gU19ib3RoLlNldC5mb2xkX2ludlxuICAgIGxldCBlbGVtZW50cyA9IFNfYm90aC5TZXQuZWxlbWVudHNcbiAgICBsZXQgY2hvb3NlID0gU19ib3RoLlNldC5jaG9vc2VcbiAgICBsZXQgbWluX2VsdCA9IFNfYm90aC5TZXQubWluX2VsdFxuICAgIGxldCBtYXhfZWx0ID0gU19ib3RoLlNldC5tYXhfZWx0XG4gIGVuZFxuXG4gIG1vZHVsZSBNYXAgOlxuICAgIE1hcF93aXRoX2xvZ3NcbiAgICAgIHdpdGggdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgICAgYW5kIHR5cGUgJ2EgdCA9ICdhIFNfYm90aC5NYXAudFxuICAgICAgIGFuZCB0eXBlIHNldCA9IFNfYm90aC5TZXQudFxuICAgICAgIGFuZCB0eXBlIHNldCA9IFNldC50ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgdHlwZSBzZXQgPSBTX2JvdGguU2V0LnRcbiAgICB0eXBlICsnZGF0YSB0ID0gJ2RhdGEgU19ib3RoLk1hcC50XG5cbiAgICBsZXQgZW1wdHkgPSBTX2JvdGguTWFwLmVtcHR5XG4gICAgbGV0IGlzX2VtcHR5ID0gU19ib3RoLk1hcC5pc19lbXB0eVxuICAgIGxldCBtaW5fZWx0ID0gU19ib3RoLk1hcC5taW5fZWx0XG4gICAgbGV0IG1lbSA9IFNfYm90aC5NYXAubWVtXG4gICAgbGV0IGZpbmRfb3B0aW9uIGEgYiBjIGQgPSBsaWZ0IFNfYm90aC5NYXAuZmluZF9vcHRpb25fd2l0aF9sb2dzIGEgYiBjIGRcbiAgICBsZXQgZmluZF9kZWZhdWx0IGEgYiBjIGQgPSBsaWZ0IFNfYm90aC5NYXAuZmluZF9kZWZhdWx0X3dpdGhfbG9ncyBhIGIgYyBkXG4gICAgbGV0IGZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyBfYSBiIGMgZCA9IGIsIFNfYm90aC5NYXAuZmluZF9vcHRpb24gYyBkXG4gICAgbGV0IGZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgX2EgYiBjIGQgZSA9IGIsIFNfYm90aC5NYXAuZmluZF9kZWZhdWx0IGMgZCBlXG4gICAgbGV0IGFkZCBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmFkZF93aXRoX2xvZ3MgYSBiIGMgZFxuXG4gICAgbGV0IG92ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3IgYyBkIGUgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAuYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHBhcmFtZXRlciBlcnJvciBjIGQgZVxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiYXR0ZW1wdCB0byBvdmVyd3JpdGUgYW4gYXNzb2NpYXRpb24gdGhhdCBkb2VzIG5vdCBleGlzdFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJBdHRlbXB0IHRvIG92ZXJ3cml0ZSBhbiBhc3NvY2lhdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0XCIpXG4gICAgICAgICAgbWFwXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBtYXBcblxuICAgIGxldCBhZGRfb3Jfb3ZlcndyaXRlIGEgYiBjIGQgZSA9XG4gICAgICBsZXQgZXJyb3IsIF8sIG1hcCA9XG4gICAgICAgIGxpZnQgU19ib3RoLk1hcC5hZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgYSBiIGMgZCBlXG4gICAgICBpblxuICAgICAgZXJyb3IsIG1hcFxuXG4gICAgbGV0IHJlbW92ZSBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLnJlbW92ZV93aXRoX2xvZ3MgYSBiIGMgZFxuXG4gICAgbGV0IHJlbW92ZV9vcl9ub3QgYSBiIGMgZCA9XG4gICAgICBsZXQgZXJyb3IsIF8sIG1hcCA9XG4gICAgICAgIGxpZnQgU19ib3RoLk1hcC5yZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgYSBiIGMgZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBtYXBcblxuICAgIGxldCB1cGRhdGUgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAudXBkYXRlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBtYXAyIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLm1hcDJfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IG1hcDJ6IGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLm1hcDJ6X3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBmb2xkMnogYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZm9sZDJ6X3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBmb2xkMiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5mb2xkMl93aXRoX2xvZ3MgYSBiIGNcblxuICAgIGxldCBpdGVyMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggbWFwZiBtYXBnID1cbiAgICAgIGZzdFxuICAgICAgICAoU19ib3RoLk1hcC5mb2xkMl93aXRoX2xvZ3MgRXhjZXB0aW9uLndyYXAgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgIChmdW4gYSBiIGMgZCAoKSAtPiBmIGEgYiBjIGQsICgpKVxuICAgICAgICAgICAoZnVuIGEgYiBjIGQgKCkgLT4gZyBhIGIgYyBkLCAoKSlcbiAgICAgICAgICAgKGZ1biBhIGIgYyBkIGUgKCkgLT4gaCBhIGIgYyBkIGUsICgpKVxuICAgICAgICAgICBtYXBmIG1hcGcgKCkpXG5cbiAgICBsZXQgZm9sZDJfc3BhcnNlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmZvbGQyX3NwYXJzZV93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgaXRlcjJfc3BhcnNlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLml0ZXIyX3NwYXJzZV93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZGlmZiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5kaWZmX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBkaWZmX3ByZWQgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZGlmZl9wcmVkX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBtZXJnZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tZXJnZV93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgdW5pb24gYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAudW5pb25fd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbiBhIGIgYyA9XG4gICAgICBsaWZ0IFNfYm90aC5NYXAuZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3MgYSBiIGNcblxuICAgIGxldCBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnMgYSBiIGMgPVxuICAgICAgbGlmdCBTX2JvdGguTWFwLmZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3MgYSBiIGNcblxuICAgIGxldCBpdGVyID0gU19ib3RoLk1hcC5pdGVyXG4gICAgbGV0IGZvbGQgPSBTX2JvdGguTWFwLmZvbGRcbiAgICBsZXQgbWFwaSA9IFNfYm90aC5NYXAubWFwaVxuICAgIGxldCBtYXAgPSBTX2JvdGguTWFwLm1hcFxuICAgIGxldCBmb3JfYWxsID0gU19ib3RoLk1hcC5mb3JfYWxsXG4gICAgbGV0IGZpbHRlcl9vbmUgPSBTX2JvdGguTWFwLmZpbHRlcl9vbmVcbiAgICBsZXQgY29tcGFyZSA9IFNfYm90aC5NYXAuY29tcGFyZVxuICAgIGxldCBlcXVhbCA9IFNfYm90aC5NYXAuZXF1YWxcbiAgICBsZXQgYmluZGluZ3MgPSBTX2JvdGguTWFwLmJpbmRpbmdzXG4gICAgbGV0IHRvX2pzb24gPSBTX2JvdGguTWFwLnRvX2pzb25cbiAgICBsZXQgb2ZfanNvbiA9IFNfYm90aC5NYXAub2ZfanNvblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uID0gc2lnXG4gIHR5cGUgZWx0X2FcbiAgdHlwZSBlbHRfYlxuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSBzZXRfYVxuICB0eXBlIHNldF9iXG5cbiAgdmFsIHByb2pfbWFwIDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYiAtPlxuICAgICgnYiAtPiAnYSAtPiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYiBtYXBfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfbWFwIDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdiIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAnYiBtYXBfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfbWFwX2kgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYiAtPlxuICAgIGVsdF9hIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2IgbWFwX2JcblxuICB2YWwgcHJval9zZXQgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHNldF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9zZXQgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgc2V0X2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogc2V0X2JcblxuICB2YWwgcGFydGl0aW9uX3NldCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgc2V0X2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogc2V0X2EgbWFwX2JcblxuICB2YWwgbW9uYWRpY19wYXJ0aXRpb25fc2V0IDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHNldF9hIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2ogKEEgOiBTX3dpdGhfbG9ncykgKEIgOiBTX3dpdGhfbG9ncykgOlxuICBQcm9qZWN0aW9uXG4gICAgd2l0aCB0eXBlIGVsdF9hID0gQS5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2IgPSBCLmVsdFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYSA9ICdhIEEuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2IgPSAnYSBCLk1hcC50XG4gICAgIGFuZCB0eXBlIHNldF9hID0gQS5TZXQudFxuICAgICBhbmQgdHlwZSBzZXRfYiA9IEIuU2V0LnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIFNBID0gQS5TZXRcbiAgbW9kdWxlIFNCID0gQi5TZXRcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBzZXRfYSA9IFNBLnRcbiAgdHlwZSBzZXRfYiA9IFNCLnRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcblxuICBsZXQgcHJval9tYXAgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iXG4gICAgICAgICAgICAobWVyZ2UgaWRlbnRpdHlfZWx0IGRhdGFfYSlcbiAgICAgICAgICAgIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgKG1lcmdlIG9sZCBkYXRhX2EpIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9tYXBfaSBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gbWVyZ2UgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBrZXlfYSBkYXRhX2EgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBtZXJnZSBwYXJhbWV0ZXIgZXJyb3Igb2xkIGtleV9hIGRhdGFfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9tYXAgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgbW9uYWRpY19wcm9qX21hcF9pIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdFxuICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3Igb2xkIF8gZGF0YV9hIC0+IG1lcmdlIHBhcmFtZXRlciBlcnJvciBvbGQgZGF0YV9hKVxuICAgICAgbWFwXG5cbiAgbGV0IHBhcnRpdGlvbl9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0ID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiAoU0Euc2luZ2xldG9uIGtleV9hKSBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbmV3c2V0ID0gU0EuYWRkIHBhcmFtZXRlciBlcnJvciBrZXlfYSBvbGQgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBuZXdzZXQgbWFwX2IpXG4gICAgICBzZXQgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wYXJ0aXRpb25fc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldCA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gZXJyb3IsIFNBLnNpbmdsZXRvbiBrZXlfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IFNBLmFkZF93aGVuX25vdF9pbiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Egb2xkIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2IpXG4gICAgICBzZXQgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgcHJval9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBzZXRfYikgLT5cbiAgICAgICAgU0IuYWRkX3doZW5fbm90X2luIHBhcmFtZXRlciBlcnJvciAoZiBrZXlfYSkgc2V0X2IpXG4gICAgICBzZXRfYSAoZXJyb3IsIFNCLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3Byb2pfc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgc2V0X2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBTQi5hZGRfd2hlbl9ub3RfaW4gcGFyYW1ldGVyIGVycm9yIGtleV9iIHNldF9iKVxuICAgICAgc2V0X2EgKGVycm9yLCBTQi5lbXB0eSlcbmVuZFxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uMiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSBlbHRfY1xuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSAnYSBtYXBfY1xuXG4gIHZhbCBwcm9qMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9jKSAtPlxuICAgICdiIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiIG1hcF9jIG1hcF9iXG5cbiAgdmFsIHByb2oyX21vbmFkaWMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ212YmR1X2hhbmRsZXIgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9jKSAtPlxuICAgICdiIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ212YmR1X2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdtdmJkdV9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ212YmR1X2hhbmRsZXIgKiAnYiBtYXBfYyBtYXBfYlxuZW5kXG5cbm1vZHVsZSBQcm9qMiAoQSA6IFNfd2l0aF9sb2dzKSAoQiA6IFNfd2l0aF9sb2dzKSAoQyA6IFNfd2l0aF9sb2dzKSA6XG4gIFByb2plY3Rpb24yXG4gICAgd2l0aCB0eXBlIGVsdF9hID0gQS5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2IgPSBCLmVsdFxuICAgICBhbmQgdHlwZSBlbHRfYyA9IEMuZWx0XG4gICAgIGFuZCB0eXBlICdhIG1hcF9hID0gJ2EgQS5NYXAudFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYiA9ICdhIEIuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2MgPSAnYSBDLk1hcC50ID0gc3RydWN0XG4gIG1vZHVsZSBNQSA9IEEuTWFwXG4gIG1vZHVsZSBNQiA9IEIuTWFwXG4gIG1vZHVsZSBNQyA9IEMuTWFwXG5cbiAgdHlwZSBlbHRfYSA9IE1BLmVsdFxuICB0eXBlIGVsdF9iID0gTUIuZWx0XG4gIHR5cGUgZWx0X2MgPSBNQy5lbHRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcbiAgdHlwZSAnYSBtYXBfYyA9ICdhIE1DLnRcblxuICBsZXQgcHJvajIgcGFyYW1ldGVyIGVycm9yIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBrZXlfYyA9IGcga2V5X2EgaW5cbiAgICAgICAgbGV0IGVycm9yLCBzdWJtYXAgPVxuICAgICAgICAgIE1CLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIE1DLmVtcHR5IGtleV9iIG1hcF9iXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZmluZF9kZWZhdWx0ID1cbiAgICAgICAgICBNQy5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQga2V5X2Mgc3VibWFwXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgc3VibWFwID1cbiAgICAgICAgICBNQy5hZGQgcGFyYW1ldGVyIGVycm9yIGtleV9jXG4gICAgICAgICAgICAobWVyZ2UgcGFyYW1ldGVyIGVycm9yIGZpbmRfZGVmYXVsdCBkYXRhX2EpXG4gICAgICAgICAgICBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Igc3VibWFwIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IHByb2oyX21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgbXZiZHVfaGFuZGxlciBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGhhbmRsZXIsIG12YmR1X2hhbmRsZXIsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBrZXlfYyA9IGcga2V5X2EgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIHN1Ym1hcCA9XG4gICAgICAgICAgTUIuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgaGFuZGxlciBNQy5lbXB0eSBrZXlfYiBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgZmluZF9kZWZhdWx0ID1cbiAgICAgICAgICBNQy5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBoYW5kbGVyIGlkZW50aXR5X2VsdCBrZXlfY1xuICAgICAgICAgICAgc3VibWFwXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBkYXRhJyA9XG4gICAgICAgICAgbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXIgbXZiZHVfaGFuZGxlciBmaW5kX2RlZmF1bHQgZGF0YV9hXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBzdWJtYXAgPSBNQy5hZGQgcGFyYW1ldGVyIGhhbmRsZXIga2V5X2MgZGF0YScgc3VibWFwIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBhZGQgPVxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIga2V5X2Igc3VibWFwIG1hcF9iXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZXIsIG12YmR1X2hhbmRsZXIsIGFkZClcbiAgICAgIG1hcFxuICAgICAgKGhhbmRsZXIsIG12YmR1X2hhbmRsZXIsIE1CLmVtcHR5KVxuZW5kXG4iLCIoKipcbiAgKiBmaWZvLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQgJiBMeSBLaW0gUXV5ZW4sIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMjAxNSwgdGhlIDI3dGggb2YgSnVseVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXVnIDA2IDIwMTY+XG4gICpcbiAgKiBXb3JrIGxpc3QgLSBGSUZPXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxub3BlbiBTZXRNYXBcblxubGV0IGxvY2FsX3RyYWNlID0gZmFsc2VcblxubW9kdWxlIHR5cGUgV29ya19saXN0ID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5cbiAgdmFsIHB1c2ggOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB0XG5cbiAgdmFsIHBvcCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIChlbHQgb3B0aW9uICogdClcblxuICB2YWwgZm9sZF9sZWZ0IDogKCdhIC0+IGVsdCAtPiAnYSkgLT4gJ2EgLT4gdCAtPiAnYVxuICB2YWwgcHJpbnRfd2wgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBXbE1ha2UgKE9yZCA6IE9yZGVyZWRUeXBlIHdpdGggdHlwZSB0ID0gaW50KSA9IHN0cnVjdFxuICBtb2R1bGUgV1NldE1hcCA9IE1hcF93cmFwcGVyLk1ha2UgKFNldE1hcC5NYWtlIChPcmQpKVxuICBtb2R1bGUgV1NldCA9IFdTZXRNYXAuU2V0XG5cbiAgdHlwZSBlbHQgPSBPcmQudFxuICB0eXBlIHQgPSBlbHQgbGlzdCAqIGVsdCBsaXN0ICogV1NldC50XG5cbiAgbGV0IGVtcHR5ID0gW10sIFtdLCBXU2V0LmVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5IHggPVxuICAgIGxldCBfLCBfLCBwb29sID0geCBpblxuICAgIFdTZXQuaXNfZW1wdHkgcG9vbFxuXG4gIGxldCBwdXNoIHBhcmFtZXRlciBlcnJvciBlIHggPVxuICAgIGxldCBpbl9saXN0LCBvdXRfbGlzdCwgcG9vbCA9IHggaW5cbiAgICBpZiBXU2V0Lm1lbSBlIHBvb2wgdGhlblxuICAgICAgZXJyb3IsIHhcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvcicsIGFkZF9lbHQgPSBXU2V0LmFkZCBwYXJhbWV0ZXIgZXJyb3IgZSBwb29sIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBFeGNlcHRpb24uY2hlY2tfcG9pbnQgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIGVycm9yJyBfX1BPU19fIEV4aXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgKGUgOjogaW5fbGlzdCwgb3V0X2xpc3QsIGFkZF9lbHQpXG4gICAgKVxuXG4gIGxldCBmb2xkX2xlZnQgZiBhY2MgeCA9XG4gICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBfID0geCBpblxuICAgIExpc3QuZm9sZF9sZWZ0IGYgKExpc3QuZm9sZF9sZWZ0IGYgYWNjIG91dF9saXN0KSAoTGlzdC5yZXYgaW5fbGlzdClcblxuICBsZXQgcHJpbnRfd2wgcGFyYW1ldGVycyB3bCA9XG4gICAgKCpsZXQgXyA9IGZvbGRfbGVmdFxuICAgICAgKGZ1biAgKCkgYSAtPiBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcnMpIFwiJWkgXCIgYSlcbiAgICAgICgpIHdsXG4gICAgICBpblxuICAgICAgKCpwcmludF9uZXdsaW5lKCkqKVxuICAgICAgbGV0IF8gPSBwcmludF9uZXdsaW5lICgpIGluKilcbiAgICBsZXQgXywgXywgc2V0ID0gd2wgaW5cbiAgICBXU2V0Lml0ZXJcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVpIFwiIGkpXG4gICAgICBzZXQ7XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJcXG5cIlxuXG4gIGxldCByZWMgcG9wIHBhcmFtZXRlciBlcnJvciB4ID1cbiAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgaWYgaXNfZW1wdHkgeCB0aGVuXG4gICAgICBlcnJvciwgKE5vbmUsIHgpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBvdXRfbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IHBvcCBwYXJhbWV0ZXIgZXJyb3IgKFtdLCBMaXN0LnJldiBpbl9saXN0LCBwb29sKVxuICAgICAgfCBoIDo6IHRsIC0+XG4gICAgICAgIGxldCBlcnJvciwgcmVtb3ZlX2VsdCA9IFdTZXQucmVtb3ZlIHBhcmFtZXRlciBlcnJvciBoIHBvb2wgaW5cbiAgICAgICAgZXJyb3IsIChTb21lIGgsIChpbl9saXN0LCB0bCwgcmVtb3ZlX2VsdCkpXG4gICAgKVxuXG4gICgqZm9yIGRlYnVnKilcbiAgKCogbGV0IHJlYyBwb3AgcGFyYW1ldGVyIGVycm9yIHggPVxuICAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgIGlmIGlzX2VtcHR5IHhcbiAgICAgdGhlblxuICAgICBlcnJvciwgKE5vbmUsIHgpXG4gICAgIGVsc2VcbiAgICAgYmVnaW5cbiAgICAgbWF0Y2ggb3V0X2xpc3Qgd2l0aFxuICAgICB8IFtdIC0+IHBvcCBwYXJhbWV0ZXIgZXJyb3IgKFtdLCAoTGlzdC5yZXYgaW5fbGlzdCksIHBvb2wpXG4gICAgIHwgaCA6OiB0bCAtPlxuICAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcilcbiAgICAgXCJCRUZPUkUgUkVNT1ZFICVpIFwiIGggaW5cbiAgICAgbGV0IF8gPSAgV1NldC5pdGVyIChmdW4gaSAtPlxuICAgICBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcikgXCIlaSBcIiBpKSBwb29sIGluXG4gICAgIGxldCBlcnJvcixyZW1vdmVfZWx0ID0gV1NldC5yZW1vdmUgcGFyYW1ldGVyIGVycm9yIGggcG9vbCBpblxuICAgICBsZXQgXyA9ICBXU2V0Lml0ZXIgKGZ1biBpIC0+XG4gICAgIFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcGFyYW1ldGVyKSBcIiVpIFwiIGkpIHJlbW92ZV9lbHRcbiAgICAgaW5cbiAgICAgZXJyb3IsICgoU29tZSBoKSwgKGluX2xpc3QsIHRsLCByZW1vdmVfZWx0KSlcbiAgICAgZW5kKilcblxuICAoKmZvciBkZWJ1ZyopXG4gICgqbGV0IHB1c2ggcCBlIGYgeCA9XG4gICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwKSBcIkJFRk9SRSBQVVVTSCAlaVxcbiBcIiBmIGluXG4gICAgbGV0IF8gPSBwcmludF93bCBwIHggaW5cbiAgICBsZXQgZXJyb3Isd2wgPSBwdXNoIHAgZSBmIHggaW5cbiAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJPVVRQVVRcXG5cIiBpblxuICAgIGxldCBfID0gcHJpbnRfd2wgcCB3bCBpblxuICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwKSBcIlxcblwiIGluXG4gICAgZXJyb3Isd2wgKilcbmVuZFxuXG5tb2R1bGUgSW50V0wgPSBNb2RzLkludE1hcFxuIiwiKCoqXG4gICAqIGludF9zdG9yYWdlLm1sXG4gICAqXG4gICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMC0wNy0yNyBmZXJldD5cbiAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBcHIgMTMgMjAxOD5cbiAgICpcbiAgICogb3BlbmthcHBhXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKlxuICAgKlxuICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIHdpdGggc3RvcmFnZSBmdW5jdGlvbnNcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1IEluc3RpdHV0IE5hdGlvbmFsXG4gICAqIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuXG4gICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgKCdhLCAnYikgdW5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgJ2EgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdiXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAnYSAtPlxuICAnYiAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2NcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgJ2MgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdkXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAnYSAtPlxuICAnYiAtPlxuICAnYyAtPlxuICAnZCAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2VcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZiwgJ2cpIHNleHRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgJ2MgLT5cbiAgJ2QgLT5cbiAgJ2UgLT5cbiAgJ2YgLT5cbiAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdnXG5cbnR5cGUgJ2EgdW5hcnlfbm9fb3V0cHV0ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICdhIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxudHlwZSAoJ2EsICdiKSBiaW5hcnlfbm9fb3V0cHV0ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICdhIC0+XG4gICdiIC0+XG4gIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxubW9kdWxlIHR5cGUgU3RvcmFnZSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSBrZXlcbiAgdHlwZSBkaW1lbnNpb25cblxuICB2YWwgY3JlYXRlIDogKGRpbWVuc2lvbiwgJ2EgdCkgdW5hcnlcbiAgdmFsIGNyZWF0ZV9iaWdnZXN0X2tleSA6IChrZXksICdhIHQpIHVuYXJ5XG4gIHZhbCBleHBhbmRfYW5kX2NvcHkgOiAoJ2EgdCwgZGltZW5zaW9uLCAnYSB0KSBiaW5hcnlcbiAgdmFsIGluaXQgOiAoZGltZW5zaW9uLCAoa2V5LCAnYSkgdW5hcnksICdhIHQpIGJpbmFyeVxuICB2YWwgc2V0IDogKGtleSwgJ2EsICdhIHQsICdhIHQpIHRlcm5hcnlcbiAgdmFsIGZyZWUgOiAoa2V5LCAnYSB0LCAnYSB0KSBiaW5hcnlcbiAgdmFsIGdldCA6IChrZXksICdhIHQsICdhIG9wdGlvbikgYmluYXJ5XG4gIHZhbCB1bnNhZmVfZ2V0IDogKGtleSwgJ2EgdCwgJ2Egb3B0aW9uKSBiaW5hcnlcbiAgdmFsIGRpbWVuc2lvbiA6ICgnYSB0LCBkaW1lbnNpb24pIHVuYXJ5XG4gIHZhbCBwcmludCA6ICgnYSB1bmFyeV9ub19vdXRwdXQsICdhIHQpIGJpbmFyeV9ub19vdXRwdXRcbiAgdmFsIGtleV9saXN0IDogKCdhIHQsIGtleSBsaXN0KSB1bmFyeVxuICB2YWwgaXRlciA6ICgoa2V5LCAnYSkgYmluYXJ5X25vX291dHB1dCwgJ2EgdCkgYmluYXJ5X25vX291dHB1dFxuICB2YWwgZm9sZF93aXRoX2ludGVycnVwdGlvbiA6ICgoa2V5LCAnYSwgJ2IsICdiKSB0ZXJuYXJ5LCAnYSB0LCAnYiwgJ2IpIHRlcm5hcnlcbiAgdmFsIGZvbGQgOiAoKGtleSwgJ2EsICdiLCAnYikgdGVybmFyeSwgJ2EgdCwgJ2IsICdiKSB0ZXJuYXJ5XG5cbiAgdmFsIGZvbGQyIDpcbiAgICAoIChrZXksICdhLCAnYywgJ2MpIHRlcm5hcnksXG4gICAgICAoa2V5LCAnYiwgJ2MsICdjKSB0ZXJuYXJ5LFxuICAgICAgKGtleSwgJ2EsICdiLCAnYywgJ2MpIHF1YXRlcm5hcnksXG4gICAgICAnYSB0LFxuICAgICAgJ2IgdCxcbiAgICAgICdjLFxuICAgICAgJ2MgKVxuICAgIHNleHRlcm5hcnlcblxuICB2YWwgZm9sZDJfY29tbW9uIDpcbiAgICAoKGtleSwgJ2EsICdiLCAnYywgJ2MpIHF1YXRlcm5hcnksICdhIHQsICdiIHQsICdjLCAnYykgcXVhdGVybmFyeVxuXG4gIHZhbCBmb3JfYWxsIDogKChrZXksICdhLCBib29sKSBiaW5hcnksICdhIHQsIGJvb2wpIGJpbmFyeVxuICB2YWwgZnJlZV9hbGwgOiAoJ2EgdCwgJ2EgdCkgdW5hcnlcbmVuZFxuXG5sZXQgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBtaCBwb3MgZXhuIHZhbHVlID1cbiAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBtaCBwb3MgZXhuIHZhbHVlXG5cbm1vZHVsZSBJbnRfc3RvcmFnZV9pbXBlcmF0aWYgOlxuICBTdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgZGltZW5zaW9uID0gaW50ID0gc3RydWN0XG4gIHR5cGUga2V5ID0gaW50XG4gIHR5cGUgZGltZW5zaW9uID0gaW50XG4gIHR5cGUgJ2EgdCA9IHsgYXJyYXk6ICdhIG9wdGlvbiBhcnJheTsgc2l6ZTogaW50IH1cblxuICBsZXQgZGltZW5zaW9uIF8gZXJyb3IgYSA9IGVycm9yLCBhLnNpemVcblxuICBsZXQga2V5X2xpc3QgX3BhcmVtZXRlcnMgZXJyb3IgdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBzb2wgPVxuICAgICAgaWYgayA8IDAgdGhlblxuICAgICAgICBlcnJvciwgc29sXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayAtIDEpIHNvbFxuICAgICAgICB8IFNvbWUgXyAtPiBhdXggKGsgLSAxKSAoayA6OiBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggc2l6ZSBbXVxuXG4gIGxldCByZWMgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3Igc2l6ZSA9XG4gICAgaWYgc2l6ZSA8IDAgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMCBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCB7IGFycmF5ID0gQXJyYXkubWFrZSAoc2l6ZSArIDEpIE5vbmU7IHNpemUgfVxuXG4gIGxldCBjcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciB4ID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgeFxuXG4gIGxldCBleHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheSBzaXplID1cbiAgICBsZXQgZXJyb3IsIGRpbWVuc2lvbiA9IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGluXG4gICAgaWYgZGltZW5zaW9uIDwgc2l6ZSB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgYXJyYXknID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3Igc2l6ZSBpblxuICAgICAgbGV0IF8gPSBBcnJheS5ibGl0IGFycmF5LmFycmF5IDAgYXJyYXknLmFycmF5IDAgZGltZW5zaW9uIGluXG4gICAgICBlcnJvciwgYXJyYXknXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgeyBhcnJheSA9IEFycmF5LnN1YiBhcnJheS5hcnJheSAwIHNpemU7IHNpemUgfVxuXG4gIGxldCBzZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCAoKSA9IFByaW50Zi5mcHJpbnRmIHN0ZG91dCBcIiVpICVpXCIga2V5IGFycmF5LnNpemUgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBfID0gYXJyYXkuYXJyYXkuKGtleSkgPC0gU29tZSB2YWx1ZSBpblxuICAgICAgZXJyb3IsIGFycmF5XG4gICAgKVxuXG4gIGxldCBpbml0IHBhcmFtZXRlcnMgZXJyb3Igc2l6ZSBmID1cbiAgICBpZiBzaXplIDwgMCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciAwIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3Igc2l6ZSBpblxuICAgICAgbGV0IHJlYyBhdXggayBlcnJvciBhcnJheSA9XG4gICAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgICBlcnJvciwgYXJyYXlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCB2YWx1ZSA9IGYgcGFyYW1ldGVycyBlcnJvciBrIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBhcnJheSA9IHNldCBwYXJhbWV0ZXJzIGVycm9yIGsgdmFsdWUgYXJyYXkgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSBlcnJvciBhcnJheVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IDAgZXJyb3IgYXJyYXlcbiAgICApXG5cbiAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgaWYga2V5ID4gYXJyYXkuc2l6ZSB8fCBrZXkgPCAwIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgIFwiMTMwOiVpXFxuXCIga2V5XG4gICAgICBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZVxuICAgICkgZWxzZSAoXG4gICAgICBtYXRjaCBhcnJheS5hcnJheS4oa2V5KSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIFwiMTMzOiVpXFxuXCIga2V5XG4gICAgICAgIGluXG4gICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcbiAgICAgIHwgYSAtPiBlcnJvciwgYVxuICAgIClcblxuICBsZXQgZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgaWYga2V5ID4gYXJyYXkuc2l6ZSB8fCBrZXkgPCAwIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZSBpblxuICAgICAgZXJyb3IsIGFycmF5XG4gICAgKSBlbHNlIChcbiAgICAgIG1hdGNoIGFycmF5LmFycmF5LihrZXkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lIGluXG4gICAgICAgIGVycm9yLCBhcnJheVxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCAoKSA9IGFycmF5LmFycmF5LihrZXkpIDwtIE5vbmUgaW5cbiAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgKVxuXG4gIGxldCB1bnNhZmVfZ2V0IF9wYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgaWYga2V5ID4gYXJyYXkuc2l6ZSB8fCBrZXkgPCAwIHRoZW5cbiAgICAgIGVycm9yLCBOb25lXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGFycmF5LmFycmF5LihrZXkpXG5cbiAgbGV0IHByaW50IHBhcmFtZXRlcnMgZXJyb3IgcHJpbnRfZWx0IGFycmF5ID1cbiAgICBsZXQgcmVjIGF1eCBpIGVycm9yID1cbiAgICAgIGlmIGkgPiBhcnJheS5zaXplIHRoZW5cbiAgICAgICAgZXJyb3JcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIGFycmF5LmFycmF5LihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIFwiJXMlZDpcIlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXggcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVycyA9XG4gICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMudXBkYXRlX3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSBeIFwiOlwiKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IHByaW50X2VsdCBwYXJhbWV0ZXJzIGVycm9yIGVsdCBpblxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChpICsgMSkgZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIGVycm9yXG5cbiAgbGV0IGl0ZXIgcGFyYW1ldGVyIGVycm9yIGYgdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBlcnJvciA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIGVycm9yXG4gICAgICAgIHwgU29tZSB4IC0+IGF1eCAoayArIDEpIChmIHBhcmFtZXRlciBlcnJvciBrIHgpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBmb2xkIHBhcmFtZXRlciBlcnJvciBmIHQgaW5pdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICAgIGF1eCAoayArIDEpIChmIHBhcmFtZXRlciBlcnJvciBrIHggc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgKGVycm9yLCBpbml0KVxuXG4gIGxldCBmb3JfYWxsIHBhcmFtZXRlciBlcnJvciBmIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgZXJyb3IgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICBlcnJvciwgdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSBlcnJvclxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCA9IGYgcGFyYW1ldGVyIGVycm9yIGsgeCBpblxuICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgYXV4IChrICsgMSkgZXJyb3JcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgZmFsc2VcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIGVycm9yXG5cbiAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgdCBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgcmVtYW5lbnRcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgICAgbGV0IG91dHB1dF9vcHQgPVxuICAgICAgICAgICAgdHJ5IFNvbWUgKGYgcGFyYW1ldGVyIGVycm9yIGsgeCBzb2wpIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmVtYW5lbnRcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhdXggKGsgKyAxKSBhKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgKGVycm9yLCBpbml0KVxuXG4gIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgdDEgdDIgaW5pdCA9XG4gICAgbGV0IHNpemUgPSBtaW4gdDEuc2l6ZSB0Mi5zaXplIGluXG4gICAgbGV0IGFycmF5MSA9IHQxLmFycmF5IGluXG4gICAgbGV0IGFycmF5MiA9IHQyLmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkxLihrKSwgYXJyYXkyLihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYXV4IChrICsgMSkgcmVtYW5lbnRcbiAgICAgICAgfCBTb21lIHgxLCBTb21lIHgyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICAgIGF1eCAoayArIDEpIChmIHBhcmFtZXRlciBlcnJvciBrIHgxIHgyIHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9sZDIgcGFyYW1ldGVyIGVycm9yIGYgZyBoIHQxIHQyIGluaXQgPVxuICAgIGxldCBzaXplID0gbWluIHQxLnNpemUgdDIuc2l6ZSBpblxuICAgIGxldCBhcnJheTEgPSB0MS5hcnJheSBpblxuICAgIGxldCBhcnJheTIgPSB0Mi5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgbWF0Y2ggYXJyYXkxLihrKSwgYXJyYXkyLihrKSB3aXRoXG4gICAgICAgIHwgU29tZSB4MSwgTm9uZSAtPiBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4MSBzb2wpXG4gICAgICAgIHwgTm9uZSwgU29tZSB4MiAtPiBhdXggKGsgKyAxKSAoZyBwYXJhbWV0ZXIgZXJyb3IgayB4MiBzb2wpXG4gICAgICAgIHwgU29tZSB4MSwgU29tZSB4MiAtPiBhdXggKGsgKyAxKSAoaCBwYXJhbWV0ZXIgZXJyb3IgayB4MSB4MiBzb2wpXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiBhdXggKGsgKyAxKSAoZXJyb3IsIHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZnJlZV9hbGwgcGFyYW1ldGVyIGVycm9yIHQgPVxuICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICB0IHRcbmVuZFxuXG5tb2R1bGUgTmVhcmx5X2luZmluaXRlX2FycmF5cyA9XG5mdW5jdG9yXG4gIChCYXNpYyA6IFN0b3JhZ2Ugd2l0aCB0eXBlIGRpbWVuc2lvbiA9IGludCBhbmQgdHlwZSBrZXkgPSBpbnQpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gQmFzaWMuZGltZW5zaW9uXG4gICAgICB0eXBlIGtleSA9IEJhc2ljLmtleVxuICAgICAgdHlwZSAnYSB0ID0gJ2EgQmFzaWMudFxuXG4gICAgICBsZXQgY3JlYXRlID0gQmFzaWMuY3JlYXRlXG4gICAgICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5ID0gQmFzaWMuY3JlYXRlX2JpZ2dlc3Rfa2V5XG4gICAgICBsZXQgZGltZW5zaW9uID0gQmFzaWMuZGltZW5zaW9uXG4gICAgICBsZXQga2V5X2xpc3QgPSBCYXNpYy5rZXlfbGlzdFxuXG4gICAgICBsZXQgZXhwYW5kIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZF9kaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgICAgICBpZiBvbGRfZGltZW5zaW9uID0gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBCYXNpYy5leHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheVxuICAgICAgICAgICAgKG1heCAxIChtaW4gU3lzLm1heF9hcnJheV9sZW5ndGggKDIgKiBvbGRfZGltZW5zaW9uKSkpXG5cbiAgICAgIGxldCBnZXQgPSBCYXNpYy5nZXRcbiAgICAgIGxldCB1bnNhZmVfZ2V0ID0gQmFzaWMudW5zYWZlX2dldFxuICAgICAgbGV0IGV4cGFuZF9hbmRfY29weSA9IEJhc2ljLmV4cGFuZF9hbmRfY29weVxuICAgICAgbGV0IGluaXQgPSBCYXNpYy5pbml0XG4gICAgICBsZXQgZnJlZSA9IEJhc2ljLmZyZWVcblxuICAgICAgbGV0IHJlYyBzZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIGRpbWVuc2lvbiA9IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGluXG4gICAgICAgIGlmIGtleSA+PSBkaW1lbnNpb24gdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBhcnJheScgPSBleHBhbmQgcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgICAgICAgIGlmIGFycmF5ID09IGFycmF5JyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSdcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgQmFzaWMuc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5XG5cbiAgICAgIGxldCBwcmludCA9IEJhc2ljLnByaW50XG5cbiAgICAgICgqIGxldCBwcmludF92YXJfZiA9IEJhc2ljLnByaW50X3Zhcl9mXG4gICAgICAgICBsZXQgcHJpbnRfc2l0ZV9mID0gQmFzaWMucHJpbnRfc2l0ZV9mKilcbiAgICAgIGxldCBpdGVyID0gQmFzaWMuaXRlclxuICAgICAgbGV0IGZvbGQgPSBCYXNpYy5mb2xkXG4gICAgICBsZXQgZm9sZDIgPSBCYXNpYy5mb2xkMlxuICAgICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gPSBCYXNpYy5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICBsZXQgZm9sZDJfY29tbW9uID0gQmFzaWMuZm9sZDJfY29tbW9uXG4gICAgICBsZXQgZm9yX2FsbCA9IEJhc2ljLmZvcl9hbGxcbiAgICAgIGxldCBmcmVlX2FsbCA9IEJhc2ljLmZyZWVfYWxsXG4gICAgZW5kIDpcbiAgICAgIFN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IGludCBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQpXG5cbm1vZHVsZSBFeHRlbmQgPVxuZnVuY3RvclxuICAoRXh0ZW5zaW9uIDogU3RvcmFnZSlcbiAgKFVuZGVybHlpbmcgOiBTdG9yYWdlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEV4dGVuc2lvbi5kaW1lbnNpb24gKiBVbmRlcmx5aW5nLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBFeHRlbnNpb24ua2V5ICogVW5kZXJseWluZy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9IHsgbWF0cml4OiAnYSBVbmRlcmx5aW5nLnQgRXh0ZW5zaW9uLnQ7IGRpbWVuc2lvbjogZGltZW5zaW9uIH1cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIGRpbWVuc2lvbiA9XG4gICAgICAgIGxldCBlcnJvciwgbWF0cml4ID0gRXh0ZW5zaW9uLmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIChmc3QgZGltZW5zaW9uKSBpblxuICAgICAgICBlcnJvciwgeyBtYXRyaXg7IGRpbWVuc2lvbiB9XG5cbiAgICAgIGxldCBjcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciBrZXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG1hdHJpeCA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIChmc3Qga2V5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG1hdHJpeCcgPVxuICAgICAgICAgIFVuZGVybHlpbmcuY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3IgKHNuZCBrZXkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZGltZW5zaW9uID0gRXh0ZW5zaW9uLmRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIG1hdHJpeCBpblxuICAgICAgICBsZXQgZXJyb3IsIGRpbWVuc2lvbicgPSBVbmRlcmx5aW5nLmRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIG1hdHJpeCcgaW5cbiAgICAgICAgZXJyb3IsIHsgbWF0cml4OyBkaW1lbnNpb24gPSBkaW1lbnNpb24sIGRpbWVuc2lvbicgfVxuXG4gICAgICBsZXQga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciB0ID1cbiAgICAgICAgbGV0IGVycm9yLCBleHRfbGlzdCA9IEV4dGVuc2lvbi5rZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIHQubWF0cml4IGluXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoZXJyb3IsIGxpc3QpIGtleSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCB0MiA9IEV4dGVuc2lvbi5nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdC5tYXRyaXggaW5cbiAgICAgICAgICAgIG1hdGNoIHQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBsaXN0XG4gICAgICAgICAgICB8IFNvbWUgdDIgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsMiA9IFVuZGVybHlpbmcua2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciB0MiBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGxpc3Qga2V5MiAtPiAoa2V5LCBrZXkyKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgbGlzdCAoTGlzdC5yZXYgbDIpICkpXG4gICAgICAgICAgKGVycm9yLCBbXSkgKExpc3QucmV2IGV4dF9saXN0KVxuXG4gICAgICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgX2RpbWVuc2lvbiA9XG4gICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG5cbiAgICAgIGxldCBpbml0IHBhcmFtZXRlcnMgZXJyb3IgZGltIGYgPVxuICAgICAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgICAgICBFeHRlbnNpb24uaW5pdCBwYXJhbWV0ZXJzIGVycm9yIChmc3QgZGltKSAoZnVuIHAgZSBpIC0+XG4gICAgICAgICAgICAgIFVuZGVybHlpbmcuaW5pdCBwIGUgKHNuZCBkaW0pIChmdW4gcCcgZScgaiAtPiBmIHAnIGUnIChpLCBqKSkpXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IG1hdHJpeCA9IGFycmF5OyBkaW1lbnNpb24gPSBkaW0gfVxuXG4gICAgICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3IgKGksIGopIHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfdW5kZXJseWluZyA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZF91bmRlcmx5aW5nID1cbiAgICAgICAgICBtYXRjaCBvbGRfdW5kZXJseWluZyB3aXRoXG4gICAgICAgICAgfCBTb21lIG9sZF91bmRlcmx5aW5nIC0+IGVycm9yLCBvbGRfdW5kZXJseWluZ1xuICAgICAgICAgIHwgTm9uZSAtPiBVbmRlcmx5aW5nLmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIChzbmQgYXJyYXkuZGltZW5zaW9uKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG5ld191bmRlcmx5aW5nID1cbiAgICAgICAgICBVbmRlcmx5aW5nLnNldCBwYXJhbWV0ZXJzIGVycm9yIGogdmFsdWUgb2xkX3VuZGVybHlpbmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBuZXdfbWF0cml4ID1cbiAgICAgICAgICBFeHRlbnNpb24uc2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBuZXdfdW5kZXJseWluZyBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgKCogbGV0IG9yZGVyZWQgPSBvcmRlcmVkICYmIEV4dGVuc2lvbi5vcmRlcmVkIG5ld19tYXRyaXggaW4qKVxuICAgICAgICBlcnJvciwgeyBhcnJheSB3aXRoIG1hdHJpeCA9IG5ld19tYXRyaXggfVxuXG4gICAgICBsZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3IgKGksIGopIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCB1bmRlcmx5aW5nID0gRXh0ZW5zaW9uLmdldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4IGluXG4gICAgICAgIG1hdGNoIHVuZGVybHlpbmcgd2l0aFxuICAgICAgICB8IFNvbWUgdW5kZXJseWluZyAtPiBVbmRlcmx5aW5nLmdldCBwYXJhbWV0ZXJzIGVycm9yIGogdW5kZXJseWluZ1xuICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZVxuXG4gICAgICBsZXQgdW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgdW5kZXJseWluZyA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCB1bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgfCBTb21lIHVuZGVybHlpbmcgLT4gVW5kZXJseWluZy51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaiB1bmRlcmx5aW5nXG4gICAgICAgIHwgXyAtPiBlcnJvciwgTm9uZVxuXG4gICAgICBsZXQgZnJlZSBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkX3VuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cblxuICAgICAgICBtYXRjaCBvbGRfdW5kZXJseWluZyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmUgaW5cbiAgICAgICAgICBlcnJvciwgYXJyYXlcbiAgICAgICAgfCBTb21lIG9sZF91bmRlcmx5aW5nIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBuZXdfdW5kZXJseWluZyA9XG4gICAgICAgICAgICBVbmRlcmx5aW5nLmZyZWUgcGFyYW1ldGVycyBlcnJvciBqIG9sZF91bmRlcmx5aW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG5ld19tYXRyaXggPVxuICAgICAgICAgICAgRXh0ZW5zaW9uLnNldCBwYXJhbWV0ZXJzIGVycm9yIGkgbmV3X3VuZGVybHlpbmcgYXJyYXkubWF0cml4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgeyBhcnJheSB3aXRoIG1hdHJpeCA9IG5ld19tYXRyaXggfVxuXG4gICAgICBsZXQgZGltZW5zaW9uIF8gZXJyb3IgYSA9IGVycm9yLCBhLmRpbWVuc2lvblxuXG4gICAgICBsZXQgcHJpbnQgcGFyYW1ldGVycyBlcnJvciBwcmludF9vZiBhID1cbiAgICAgICAgRXh0ZW5zaW9uLnByaW50IHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoZnVuIHAgZXJyb3IgLT4gVW5kZXJseWluZy5wcmludCBwIGVycm9yIHByaW50X29mKVxuICAgICAgICAgIGEubWF0cml4XG5cbiAgICAgICgqIGxldCBwcmludF92YXJfZiBlcnJvciBwcmludF9vZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgRXh0ZW5zaW9uLnByaW50IGVycm9yXG4gICAgICAgICAgIChmdW4gZXJyb3IgLT4gVW5kZXJseWluZy5wcmludCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICAgcGFyYW1ldGVyc1xuICAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICAgICBsZXQgcHJpbnRfc2l0ZV9mIGVycm9yIHByaW50X29mIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBFeHRlbnNpb24ucHJpbnQgZXJyb3JcbiAgICAgICAgICAgKGZ1biBlcnJvciAtPiBVbmRlcmx5aW5nLnByaW50IGVycm9yIHByaW50X29mKVxuICAgICAgICAgICBwYXJhbWV0ZXJzXG4gICAgICAgICAgIGEubWF0cml4KilcblxuICAgICAgbGV0IGl0ZXIgcGFyYW1ldGVyIGVycm9yIGYgYSA9XG4gICAgICAgIEV4dGVuc2lvbi5pdGVyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSAtPlxuICAgICAgICAgICAgVW5kZXJseWluZy5pdGVyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrJyBhJyAtPiBmIHBhcmFtZXRlciBlcnJvciAoaywgaycpIGEnKVxuICAgICAgICAgICAgICBhKVxuICAgICAgICAgIGEubWF0cml4XG5cbiAgICAgIGxldCBmb3JfYWxsIHBhcmFtZXRlciBlcnJvciBmIGEgPVxuICAgICAgICBFeHRlbnNpb24uZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgLT5cbiAgICAgICAgICAgIFVuZGVybHlpbmcuZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgKGssIGsnKSBhJylcbiAgICAgICAgICAgICAgYSlcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICBsZXQgZm9sZF9nZW4gZm9sZDEgZm9sZDIgcGFyYW1ldGVyIGVycm9yIGYgYSBiID1cbiAgICAgICAgZm9sZDEgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgLT5cbiAgICAgICAgICAgIGZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrJyBhJyBiIC0+IGYgcGFyYW1ldGVyIGVycm9yIChrLCBrJykgYScgYilcbiAgICAgICAgICAgICAgYSBiKVxuICAgICAgICAgIGEubWF0cml4IGJcblxuICAgICAgbGV0IGZvbGQgcGFyYW1ldGVyIGVycm9yIGYgYSBiID1cbiAgICAgICAgZm9sZF9nZW4gRXh0ZW5zaW9uLmZvbGQgVW5kZXJseWluZy5mb2xkIHBhcmFtZXRlciBlcnJvciBmIGEgYlxuXG4gICAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgPVxuICAgICAgICBmb2xkX2dlbiBFeHRlbnNpb24uZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgICAgIFVuZGVybHlpbmcuZm9sZF93aXRoX2ludGVycnVwdGlvbiBwYXJhbWV0ZXIgZXJyb3IgZiBhIGJcblxuICAgICAgbGV0IGZvbGQyX2NvbW1vbiBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgYyA9XG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBjXG4gICAgICAgICAgICB8IFNvbWUgYiAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgIGEgY1xuXG4gICAgICBsZXQgZm9sZDIgcGFyYW1ldGVyIGVycm9yIGYgZyBoIGEgYiBjID1cbiAgICAgICAgbGV0IGVycm9yLCBjID1cbiAgICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIGMgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGIgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGYgcGFyYW1ldGVyIGVycm9yIGsgYSBjXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGggcGFyYW1ldGVyIGVycm9yIGsgYSBiIGMpXG4gICAgICAgICAgICBhIGNcbiAgICAgICAgaW5cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGIgYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGEgaW5cbiAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZyBwYXJhbWV0ZXIgZXJyb3IgayBiIGNcbiAgICAgICAgICAgIHwgU29tZSBfIC0+IGVycm9yLCBjKVxuICAgICAgICAgIGIgY1xuXG4gICAgICBsZXQgZnJlZV9hbGwgcGFyYW1ldGVyIGVycm9yIHQgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGEgXyB0IC0+IGZyZWUgcGFyYW1ldGVyIGVycm9yIGEgdClcbiAgICAgICAgICB0IHRcbiAgICBlbmQgOlxuICAgICAgU3RvcmFnZVxuICAgICAgICB3aXRoIHR5cGUga2V5ID0gRXh0ZW5zaW9uLmtleSAqIFVuZGVybHlpbmcua2V5XG4gICAgICAgICBhbmQgdHlwZSBkaW1lbnNpb24gPSBFeHRlbnNpb24uZGltZW5zaW9uICogVW5kZXJseWluZy5kaW1lbnNpb24pXG5cbm1vZHVsZSBRdWlja19rZXlfbGlzdCA9XG5mdW5jdG9yXG4gIChCYXNpYyA6IFN0b3JhZ2UpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gQmFzaWMuZGltZW5zaW9uXG4gICAgICB0eXBlIGtleSA9IEJhc2ljLmtleVxuICAgICAgdHlwZSAnYSB0ID0geyBiYXNpYzogJ2EgQmFzaWMudDsga2V5czoga2V5IGxpc3QgfVxuXG4gICAgICBsZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgaSA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPSBCYXNpYy5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciBpIGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzID0gW10gfVxuXG4gICAgICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3Iga2V5ID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIGtleSBpblxuICAgICAgICBlcnJvciwgeyBiYXNpYzsga2V5cyA9IFtdIH1cblxuICAgICAgbGV0IGtleV9saXN0IF9wYXJhbWV0ZXJzIGVycm9yIHQgPSBlcnJvciwgdC5rZXlzXG5cbiAgICAgIGxldCBleHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheSBqID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9XG4gICAgICAgICAgQmFzaWMuZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkuYmFzaWMgalxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBiYXNpYzsga2V5cyA9IGFycmF5LmtleXMgfVxuXG4gICAgICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gZiA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPSBCYXNpYy5pbml0IHBhcmFtZXRlcnMgZXJyb3IgbiBmIGluXG4gICAgICAgIGxldCBlcnJvciwga2V5cyA9XG4gICAgICAgICAgQmFzaWMuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgICAoZnVuIF8gZSBrIF8gbGlzdCAtPiBlLCBrIDo6IGxpc3QpXG4gICAgICAgICAgICBiYXNpYyBbXVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBiYXNpYzsga2V5cyB9XG5cbiAgICAgIGxldCBzZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZCA9IEJhc2ljLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWMgaW5cbiAgICAgICAgbGV0IG5ld19hcnJheSA9XG4gICAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBhcnJheVxuICAgICAgICAgIHwgTm9uZSAtPiB7IGFycmF5IHdpdGgga2V5cyA9IGtleSA6OiBhcnJheS5rZXlzIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBuZXdfYmFzaWMgPVxuICAgICAgICAgIEJhc2ljLnNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBuZXdfYXJyYXkuYmFzaWNcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgbmV3X2FycmF5IHdpdGggYmFzaWMgPSBuZXdfYmFzaWMgfVxuXG4gICAgICBsZXQgZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPSBCYXNpYy5mcmVlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljIGluXG4gICAgICAgIGVycm9yLCB7IGFycmF5IHdpdGggYmFzaWMgfVxuXG4gICAgICBsZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICAgICAgQmFzaWMuZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljXG5cbiAgICAgIGxldCB1bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICAgICAgQmFzaWMudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpY1xuXG4gICAgICBsZXQgZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYSA9XG4gICAgICAgIEJhc2ljLmRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGEuYmFzaWNcblxuICAgICAgbGV0IHByaW50IGVycm9yIGYgcGFyYW1ldGVycyBhID0gQmFzaWMucHJpbnQgZXJyb3IgZiBwYXJhbWV0ZXJzIGEuYmFzaWNcblxuICAgICAgKCogbGV0IHByaW50X3Zhcl9mIGVycm9yIGYgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEJhc2ljLnByaW50X3Zhcl9mIGVycm9yIGYgcGFyYW1ldGVycyBhLmJhc2ljXG5cbiAgICAgICAgIGxldCBwcmludF9zaXRlX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgQmFzaWMucHJpbnRfc2l0ZV9mIGVycm9yIGYgcGFyYW1ldGVycyBhLmJhc2ljKilcblxuICAgICAgbGV0IGl0ZXIgcGFyYW1ldGVycyBlcnJvciBmIGEgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGVycm9yIGsgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgaW0gPSBnZXQgcGFyYW1ldGVycyBlcnJvciBrIGEgaW5cbiAgICAgICAgICAgIG1hdGNoIGltIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoKSBpblxuICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgfCBTb21lIGltIC0+IGYgcGFyYW1ldGVycyBlcnJvciBrIGltKVxuICAgICAgICAgIGVycm9yIChMaXN0LnJldiBsaXN0KVxuXG4gICAgICBsZXQgZm9sZCBwYXJhbWV0ZXJzIGVycm9yIGYgYSBiID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoZXJyb3IsIGIpIGsgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgaW0gPSBnZXQgcGFyYW1ldGVycyBlcnJvciBrIGEgaW5cbiAgICAgICAgICAgIG1hdGNoIGltIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBiXG4gICAgICAgICAgICB8IFNvbWUgaW0gLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGsgaW0gYilcbiAgICAgICAgICAoZXJyb3IsIGIpIChMaXN0LnJldiBsaXN0KVxuXG4gICAgICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXJzIGVycm9yIGYgYSA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBsZXQgcmVjIGF1eCBsIGVycm9yID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGVycm9yLCB0cnVlXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIChtYXRjaCBnZXQgcGFyYW1ldGVycyBlcnJvciBoIGEgd2l0aFxuICAgICAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsICgpID0gRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKCkgaW5cbiAgICAgICAgICAgICAgYXV4IHQgZXJyb3JcbiAgICAgICAgICAgIHwgZXJyb3IsIFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wgPSBmIHBhcmFtZXRlcnMgZXJyb3IgaCBkYXRhIGluXG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIGF1eCB0IGVycm9yXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgZmFsc2UpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBsaXN0IGVycm9yXG5cbiAgICAgIGxldCBmcmVlX2FsbCBwYXJhbWV0ZXIgZXJyb3IgdCA9XG4gICAgICAgIGxldCBlcnJvciwgdCA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGEgXyB0IC0+IGZyZWUgcGFyYW1ldGVyIGVycm9yIGEgdClcbiAgICAgICAgICAgIHQgdFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyB0IHdpdGgga2V5cyA9IFtdIH1cblxuICAgICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVycyBlcnJvciBmIGEgYiA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBsZXQgcmVjIGF1eCBsaXN0IG91dHB1dCA9XG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBvdXRwdXRcbiAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgbGV0IG91dHB1dF9vcHQgPVxuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaGVhZCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzbmQgb3V0cHV0IGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggaW0gd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIChpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBiKVxuICAgICAgICAgICAgICAgIHwgU29tZSBpbSAtPiBTb21lIChmIHBhcmFtZXRlcnMgZXJyb3IgaGVhZCBpbSBiKVxuICAgICAgICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG91dHB1dFxuICAgICAgICAgICAgfCBTb21lIG91dHB1dCAtPiBhdXggdGFpbCBvdXRwdXQpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBsaXN0IChlcnJvciwgYilcblxuICAgICAgbGV0IGZvbGQyX2NvbW1vbiBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgYyA9XG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBjXG4gICAgICAgICAgICB8IFNvbWUgYiAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgIGEgY1xuXG4gICAgICBsZXQgZm9sZDIgcGFyYW1ldGVyIGVycm9yIGYgZyBoIGEgYiBjID1cbiAgICAgICAgbGV0IGVycm9yLCBjID1cbiAgICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIGMgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGIgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGYgcGFyYW1ldGVyIGVycm9yIGsgYSBjXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGggcGFyYW1ldGVyIGVycm9yIGsgYSBiIGMpXG4gICAgICAgICAgICBhIGNcbiAgICAgICAgaW5cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGIgYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGEgaW5cbiAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZyBwYXJhbWV0ZXIgZXJyb3IgayBiIGNcbiAgICAgICAgICAgIHwgU29tZSBfIC0+IGVycm9yLCBjKVxuICAgICAgICAgIGIgY1xuICAgIGVuZCA6XG4gICAgICBTdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBCYXNpYy5rZXkgYW5kIHR5cGUgZGltZW5zaW9uID0gQmFzaWMuZGltZW5zaW9uKVxuXG5tb2R1bGUgTmVhcmx5X2luZl9JbXBlcmF0aWYgPSBOZWFybHlfaW5maW5pdGVfYXJyYXlzIChJbnRfc3RvcmFnZV9pbXBlcmF0aWYpXG5tb2R1bGUgUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYgPSBRdWlja19rZXlfbGlzdCAoTmVhcmx5X2luZl9JbXBlcmF0aWYpXG5cbm1vZHVsZSBJbnRfSW50X3N0b3JhZ2VfSW1wZXJhdGlmX0ltcGVyYXRpZiA9XG4gIEV4dGVuZCAoSW50X3N0b3JhZ2VfaW1wZXJhdGlmKSAoSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxuXG5tb2R1bGUgTmVhcmx5X0luZl9JbnRfSW50X3N0b3JhZ2VfSW1wZXJhdGlmX0ltcGVyYXRpZiA9XG4gIEV4dGVuZCAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZilcblxubW9kdWxlIE5lYXJseV9JbmZfSW50X0ludF9JbnRfc3RvcmFnZV9JbXBlcmF0aWZfSW1wZXJhdGlmX0ltcGVyYXRpZiA9XG4gIEV4dGVuZFxuICAgIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZilcbiAgICAoRXh0ZW5kIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZikgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKSlcbiIsIigqKlxuICAgICogdW5pb25fZmluZC5tbFxuICAgICogb3BlbmthcHBhXG4gICAgKiBKw6lyw7RtZSBGZXJldCAmIEx5IEtpbSBRdXllbiwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICAqXG4gICAgKiBDcmVhdGlvbjogMjAxNSwgdGhlIDExdGggb2YgTWFyY2hcbiAgICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXByIDE4IDIwMTg+XG4gICAgKiAqXG4gICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIHdpdGggdW5pb24gZmluZCBhbGdvcml0aG0gd2l0aFxuICAgICogcGF0aCBjb21wcmVzc2lvblxuICAgICpcbiAgICAqIENvcHlyaWdodCAyMDEwLDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIFVuaW9uX2ZpbmQgPSBzaWdcbiAgdHlwZSBrZXlcbiAgdHlwZSBkaW1lbnNpb25cbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBkaW1lbnNpb24gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogdFxuXG4gIHZhbCB1bmlvbl9saXN0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHQgLT5cbiAgICBrZXkgbGlzdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiB0XG5cbiAgdmFsIGl0ZXJpIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGtleSAtPlxuICAgIGtleSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQpIC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxuICB2YWwgZ2V0X3JlcHJlc2VudGVudCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBrZXkgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIHQgKiBrZXlcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChTdG9yYWdlIDogSW50X3N0b3JhZ2UuU3RvcmFnZSlcbiAgLT5cbiAgKCogICAgZnVuY3RvciAoTWFwOiBNYXBfd3JhcHBlci5NYXBfd2l0aF9sb2dzKSAtPiopXG4gICAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBrZXkgPSBTdG9yYWdlLmtleVxuICAgICAgdHlwZSB0ID0ga2V5IFN0b3JhZ2UudFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBTdG9yYWdlLmRpbWVuc2lvblxuXG4gICAgICBsZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbiA9XG4gICAgICAgIFN0b3JhZ2UuaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gKGZ1biBfIGUgeCAtPiBlLCB4KVxuXG4gICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgKCogZmluZFNldChlKTogd2hpY2ggcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVwcmVzZW50YXRpdmUgb2YgdGhlIHNldFxuICAgICAgICAgY29udGFpbmluZyBlLiBTaW5jZSB0aGUgc2V0IGFyZSBkaXNqb2ludCwgZSBjb250YWludGVkIGluIG9uZSBzZXRcbiAgICAgICAgIG9ubHkuIFRoZXJlZm9yZSwgdGhlIHJldHVybmVkIHJlcHJlc2VudGF0aXZlIGNhbiBiZSB1bmlxdWVseSBkZXRlcm1pbmVkLlxuICAgICAgKilcblxuICAgICAgbGV0IGZpbmRTZXQgcGFyYW1ldGVyIGVycm9yIGUgdCA9XG4gICAgICAgIGxldCBwb2ludFRvUm9vdCBwYXJhbWV0ZXIgZXJyb3Igcm9vdCBsIHQgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgdCkgaSAtPiBTdG9yYWdlLnNldCBwYXJhbWV0ZXIgZXJyb3IgaSByb290IHQpXG4gICAgICAgICAgICAoZXJyb3IsIHQpIGxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBoZWxwZXIgcGFyYW1ldGVyIGVycm9yIGUgbCB0ID1cbiAgICAgICAgICBsZXQgZXJyb3IsIHBhcmVudCA9IFN0b3JhZ2UudW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgZSB0IGluXG4gICAgICAgICAgbWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsICh0LCBlKVxuICAgICAgICAgIHwgU29tZSBwIHdoZW4gcCA8PiBlIC0+IGhlbHBlciBwYXJhbWV0ZXIgZXJyb3IgcCAoZSA6OiBsKSB0XG4gICAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICAgICgqIGJhc2UgY2FzZTogd2UgaGl0IHRoZSByb290IG5vZGUgbWFrZSBhbGwgY29sbGVjdGVkIG5vZGVzIG9uIHRoZVxuICAgICAgICAgICAgICAgcGF0aCBwb2ludCB0byB0aGUgcm9vdC4gQW5kIHJldHVybiB0aGUgcm9vdCBhZnRlcndhcmRzICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHQgPSBwb2ludFRvUm9vdCBwYXJhbWV0ZXIgZXJyb3IgcCBsIHQgaW5cbiAgICAgICAgICAgIGVycm9yLCAodCwgcClcbiAgICAgICAgaW5cbiAgICAgICAgaGVscGVyIHBhcmFtZXRlciBlcnJvciBlIFtdIHRcblxuICAgICAgbGV0IGdldF9yZXByZXNlbnRlbnQgcGFyYW1ldGVycyBlcnJvciBlIHQgPVxuICAgICAgICBsZXQgZXJyb3IsICh1bmlvbiwgZWx0KSA9IGZpbmRTZXQgcGFyYW1ldGVycyBlcnJvciBlIHQgaW5cbiAgICAgICAgZXJyb3IsIHVuaW9uLCBlbHRcbiAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAoKlVOSU9OKilcblxuICAgICAgbGV0IHVuaW9uIHBhcmFtZXRlciBlcnJvciB4IHkgdCA9XG4gICAgICAgIGxldCBlcnJvciwgKHQsIHJvb3RfeCkgPSBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciB4IHQgaW5cbiAgICAgICAgbGV0IGVycm9yLCAodCwgcm9vdF95KSA9IGZpbmRTZXQgcGFyYW1ldGVyIGVycm9yIHkgdCBpblxuICAgICAgICBTdG9yYWdlLnNldCBwYXJhbWV0ZXIgZXJyb3Igcm9vdF94IHJvb3RfeSB0XG5cbiAgICAgICgqbGV0IGVxX2NsYXNzZXNfbWFwIHBhcmFtZXRlciBlcnJvciBhID1cbiAgICAgICAgKCogIGxldCBjbGFzc2VzID0gQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuZW1wdHkgaW4qKVxuICAgICAgICA9PT09PT09XG4gICAgICAgIGxldCB1bmlvbiB4IHkgYSA9XG4gICAgICAgIGxldCByb290X3ggPSBmaW5kU2V0IHggYSBpblxuICAgICAgICBsZXQgcm9vdF95ID0gZmluZFNldCB5IGEgaW5cbiAgICAgICAgbGV0IF8gPSBhLihyb290X3gpIDwtIHJvb3RfeSBpblxuICAgICAgICAoKmxldCBfID0gcHJpbnRfc3RyaW5nIFwiZHVtcDogXCI7IGR1bXAgYTsgcHJpbnRfc3RyaW5nIFwiXFxuXCIgaW4qKVxuICAgICAgICBhXG5cbiAgICAgICAgbGV0IGVxX2NsYXNzZXNfbWFwIHBhcmFtZXRlciBlcnJvciBhID1cbiAgICAgICAgbGV0IGNsYXNzZXMgPSBDa2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmVtcHR5IGluXG4gICAgICAgID4+Pj4+Pj4gcmVtb3ZlIGRvdWJsaWNhdGUgbW9kdWxlLCB0b2RvOiBoaWRkZW4gdHlwZSBzaXRlX25hbWVcbiAgICAgICAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBsZXQgcmVjIGF1eCBrIChjbGFzc2VzLHVuaW9uX2xpc3QpID1cbiAgICAgICAgICBpZiAgayA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBjbGFzc2VzLCB1bmlvbl9saXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCpmaW5kIHRoZSBwYXJlbnQgb2YgdGhlIHVuaW9uKilcbiAgICAgICAgICAgIGxldCByZXAgPSBmaW5kU2V0IGsgYSBpblxuICAgICAgICAgICAgKCpjaGVjayBpZiBpbnNpZGUgY2xhc3NlcyBoYXMgYWxyZWFkeSBoYXMgdGhpcyBwYXJlbnQqKVxuICAgICAgICA8PDw8PDw8IEhFQURcbiAgICAgICAgICAgIGxldCBlcnJvcicsZ2V0X3JlcCA9XG4gICAgICAgICgqICAgICAgICBDY2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5maW5kX2RlZmF1bHQgcGFyYW1ldGVyIGVycm9yIFtdIHJlcCBjbGFzc2VzIGluKilcbiAgICAgICAgICAgIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5jaGVjayB3YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgKFNvbWUgXCJsaW5lIDczXCIpIEV4aXQgaW5cbiAgICAgICAgICAgICgqc3RvcmUgdGhlIHJlc3VsdCBpbnNpZGUgY2xhc3NlcyopXG4gICAgICAgICgqICAgICAgbGV0IGVycm9yLGNsYXNzZXMgPVxuICAgICAgICBDY2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5hZGRfb3Jfb3ZlcndyaXRlXG4gICAgICAgID09PT09PT1cbiAgICAgICAgICAgIGxldCBlcnJvcicsIGdldF9yZXAgPVxuICAgICAgICAgICAgICBDa2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICByZXBcbiAgICAgICAgICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmNoZWNrIHdhcm4gcGFyYW1ldGVyIGVycm9yIGVycm9yJyAoU29tZSBcImxpbmUgNzNcIikgRXhpdCBpblxuICAgICAgICAgICAgKCpzdG9yZSB0aGUgcmVzdWx0IGluc2lkZSBjbGFzc2VzKilcbiAgICAgICAgICAgIGxldCBlcnJvcixjbGFzc2VzID1cbiAgICAgICAgQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5hZGRfb3Jfb3ZlcndyaXRlXG4gICAgICAgID4+Pj4+Pj4gcmVtb3ZlIGRvdWJsaWNhdGUgbW9kdWxlLCB0b2RvOiBoaWRkZW4gdHlwZSBzaXRlX25hbWVcbiAgICAgICAgcGFyYW1ldGVyXG4gICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgcmVwXG4gICAgICAgIChrIDo6IGdldF9yZXApXG4gICAgICAgIGNsYXNzZXNcbiAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgIGF1eCAoayAtIDEpIChjbGFzc2VzLCB1bmlvbl9saXN0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgY2xhc3NlcywgYSA9IGF1eCAoc2l6ZSAtIDEpIChjbGFzc2VzLCBhKSBpblxuICAgICAgICBjbGFzc2VzLCBhKilcblxuICAgICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICgqIGNvbXB1dGUgdW5pb24tZmluZCBpbiBhIGxpc3QqKVxuXG4gICAgICBsZXQgdW5pb25fbGlzdCBwYXJhbWV0ZXIgZXJyb3IgYSAobGlzdCA6IGtleSBsaXN0KSA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBhXG4gICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgbGV0IHJlYyBhdXggcGFyYW1ldGVyIHRvX3Zpc2l0IGVycm9yIGEgPVxuICAgICAgICAgICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiBlcnJvciwgYVxuICAgICAgICAgICAgfCB0JyA6OiBxJyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIHVuaW9uX2FycmF5ID0gdW5pb24gcGFyYW1ldGVyIGVycm9yIHQgdCcgYSBpblxuICAgICAgICAgICAgICBhdXggcGFyYW1ldGVyIHEnIGVycm9yIHVuaW9uX2FycmF5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggcGFyYW1ldGVyIHEgZXJyb3IgYVxuXG4gICAgICBsZXQgaXRlcmkgPSBTdG9yYWdlLml0ZXJcbiAgICBlbmQgOlxuICAgICAgVW5pb25fZmluZFxuICAgICAgICB3aXRoIHR5cGUga2V5ID0gU3RvcmFnZS5rZXlcbiAgICAgICAgIGFuZCB0eXBlIHQgPSBTdG9yYWdlLmtleSBTdG9yYWdlLnRcbiAgICAgICAgIGFuZCB0eXBlIGRpbWVuc2lvbiA9IFN0b3JhZ2UuZGltZW5zaW9uKVxuIiwibGV0IGZzdF9vcHRpb24geCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgKHgsIF8pIC0+IFNvbWUgeFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc25kX29wdGlvbiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSAoXywgeCkgLT4gU29tZSB4XG4gIHwgXyAtPiBOb25lXG5cbigqIE9DYW1sIG1hbnVhbDogSW4gcGFydGljdWxhciwgaWYgeW91IHdhbnQgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdFxuICAgbWF0Y2hlcyBhIHNpbmdsZSBiYWNrc2xhc2ggY2hhcmFjdGVyLCB5b3UgbmVlZCB0byBxdW90ZSBpdCBpbiB0aGVcbiAgIGFyZ3VtZW50IHRvIHJlZ2V4cCAoYWNjb3JkaW5nIHRvIHRoZSBsYXN0IGl0ZW0gb2YgdGhlIGxpc3QgYWJvdmUpIGJ5XG4gICBhZGRpbmcgYSBzZWNvbmQgYmFja3NsYXNoLiBUaGVuIHlvdSBuZWVkIHRvIHF1b3RlIGJvdGggYmFja3NsYXNoZXNcbiAgIChhY2NvcmRpbmcgdG8gdGhlIHN5bnRheCBvZiBzdHJpbmcgY29uc3RhbnRzIGluIE9DYW1sKSBieSBkb3VibGluZ1xuICAgdGhlbSBhZ2Fpbiwgc28geW91IG5lZWQgdG8gd3JpdGUgZm91ciBiYWNrc2xhc2ggY2hhcmFjdGVyczogU3RyLnJlZ2V4cFxuICAgXCJcXFxcXFxcXFwiLiAqKVxuXG4oKiogZG90IG91dHB1dCopXG5sZXQgZXNjYXBlX2xhYmVsX2luX2RvdCBzID1cbiAgU3RyLmdsb2JhbF9zdWJzdGl0dXRlIChTdHIucmVnZXhwIFwiW1xcXFxcXFwiXFxcXFxcXFxdXCIpXG4gICAgKGZ1biB4IC0+XG4gICAgICBtYXRjaCBTdHIubWF0Y2hlZF9zdHJpbmcgeCB3aXRoXG4gICAgICB8IFwiXFxcIlwiIC0+IFwiXFxcXFxcXCJcIlxuICAgICAgfCBcIlxcXFxcIiAtPiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgc1xuXG5sZXQgbWFrZV9pZF9jb21wYXRpYmxlX3dpdGhfZG90X2Zvcm1hdCBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZyA9XG4gIGxldCB0YWIgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3QgcGFyYW1ldGVyc1xuICBpblxuICBsZXQgcmVjIGF1eCBwb3MgbCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuXG4gICAgICBsXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhciA9IFN0cmluZy5nZXQgc3RyaW5nIHBvcyBpblxuICAgICAgbWF0Y2ggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5maW5kX29wdGlvbiBjaGFyIHRhYiB3aXRoXG4gICAgICB8IFNvbWUgbGlzdGVfY2hhciAtPlxuICAgICAgICBhdXggKHBvcyAtIDEpXG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGNoYXIgLT4gY2hhciA6OiBsaXN0KVxuICAgICAgICAgICAgIGwgKExpc3QucmV2IGxpc3RlX2NoYXIpKVxuICAgICAgfCBOb25lIC0+IGF1eCAocG9zIC0gMSkgKGNoYXIgOjogbClcbiAgICApXG4gIGluXG4gIGxldCBsID0gYXV4IChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIDEpIFtdIGluXG4gIGVycm9yLCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoU3RyaW5nLm1ha2UgMSkgKExpc3QucmV2IGwpKVxuXG5sZXQgc29ydGVkX3BhcnRzX29mX2xpc3QgbiBsaXN0ID1cbiAgbGV0IGxpc3QgPSBMaXN0LnNvcnQgKGZ1biBhIGIgLT4gY29tcGFyZSBiIGEpIGxpc3QgaW5cbiAgbGV0IHJlYyBhdXggayBsaXN0IHN1ZmZpeCBvdXRwdXQgPVxuICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgIHN1ZmZpeCA6OiBvdXRwdXRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoIDo6IHQgLT4gYXV4IGsgdCBzdWZmaXggKGF1eCAoayAtIDEpIHQgKGggOjogc3VmZml4KSBvdXRwdXQpXG4gICAgICB8IFtdIC0+IG91dHB1dFxuICAgIClcbiAgaW5cbiAgYXV4IG4gbGlzdCBbXSBbXVxuXG5sZXQgc29ydF9saXN0IGtleSBwYXJhbWV0ZXIgZXJyb3IgbGlzdCA9XG4gIGxldCBlcnJvciwgcmVmaW5lZF9saXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIHJlZmluZWRfbGlzdCkgYSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleSA9IGtleSBwYXJhbWV0ZXIgZXJyb3IgYSBpblxuICAgICAgICBlcnJvciwgKGtleSwgYSkgOjogcmVmaW5lZF9saXN0KVxuICAgICAgKGVycm9yLCBbXSkgbGlzdFxuICBpblxuICBsZXQgcmVmaW5lZF9zb3J0ZWRfbGlzdCA9XG4gICAgTGlzdC5zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBjb21wYXJlIGIgYSkgcmVmaW5lZF9saXN0XG4gIGluXG4gIGVycm9yLCBMaXN0LnJldl9tYXAgc25kIHJlZmluZWRfc29ydGVkX2xpc3RcbiIsIigqKlxuICAqIG1pc2Nfc2EubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAxNi8xMi8yMDEwXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKdWwgMDIgMjAxNj5cbiAgKiAqXG4gICogVmFyaW91cyBmdW5jdGlvbnNcbiAgKlxuICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGNvbnN0X3VuaXQgXyA9ICgpXG5cbmxldCBhcnJheV9vZl9saXN0IGNyZWF0ZSBzZXQgcGFyYW1ldGVycyBlcnJvciBsaXN0ID1cbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCBhID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbiBpblxuICBsZXQgcmVjIGF1eCBsIGsgYSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhXG4gICAgfCB0IDo6IHEgLT4gYXV4IHEgKGsgKyAxKSAoc2V0IHBhcmFtZXRlcnMgKGZzdCBhKSBrIHQgKHNuZCBhKSlcbiAgaW5cbiAgYXV4IGxpc3QgMCBhXG5cbmxldCB1bnNvbWUgKGVycm9yLCB4KSBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiBmIGVycm9yXG4gIHwgU29tZSB4IC0+IGVycm9yLCB4XG5cbmxldCByZXZfaW50ZXJfbGlzdCBjb21wYXJlIGwxIGwyID1cbiAgbGV0IHJlYyBhdXggbDEgbDIgcmVwID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBMaXN0LnJldiByZXBcbiAgICB8IGEgOjogYiwgYyA6OiBkIC0+XG4gICAgICBpZiBjb21wYXJlIGEgYyA9IDAgdGhlblxuICAgICAgICBhdXggYiBkIChhIDo6IHJlcClcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBhIGMgPCAwIHRoZW5cbiAgICAgICAgYXV4IGIgbDIgcmVwXG4gICAgICBlbHNlXG4gICAgICAgIGF1eCBsMSBkIHJlcFxuICBpblxuICBhdXggbDEgbDIgW11cblxubGV0IHRyYWNlIHBhcmFtZXRlcnMgc3RyaW5nID1cbiAgaWZcbiAgICBwYXJhbWV0ZXJzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlXG4gIHRoZW5cbiAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgIFwiJXMlc1wiXG4gICAgICBwYXJhbWV0ZXJzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgICAgICAuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJlZml4IChzdHJpbmcgKCkpXG5cbmxldCBpbnRlcl9saXN0IGNvbXBhcmUgbDEgbDIgPSBMaXN0LnJldiAocmV2X2ludGVyX2xpc3QgY29tcGFyZSBsMSBsMilcblxubGV0IGxpc3RfMF9uIGsgPVxuICBsZXQgcmVjIGF1eCBrIHNvbCA9XG4gICAgaWYgayA8IDAgdGhlblxuICAgICAgc29sXG4gICAgZWxzZVxuICAgICAgYXV4IChrIC0gMSkgKGsgOjogc29sKVxuICBpblxuICBhdXggayBbXVxuXG5sZXQgbGlzdF9taW51cyBsMSBsMiA9XG4gIGxldCByZWMgYXV4IGwxIGwyIHJlcCA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IHQxIDo6IHExLCB0MiA6OiBxMiB3aGVuIHQxID0gdDIgLT4gYXV4IHExIHEyIHJlcFxuICAgIHwgdDEgOjogcTEsIF8gLT4gYXV4IHExIGwyICh0MSA6OiByZXApXG4gICAgfCBbXSwgXyAtPiByZXBcbiAgaW5cbiAgTGlzdC5yZXYgKGF1eCBsMSBsMiBbXSlcblxubGV0IHByaW50X2NvbW1hIHBhcmFtZXRlciBib29sIGNvbW1hID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIiVzXCIgY29tbWFcblxubGV0IGZldGNoX2FycmF5IGkgYXJyYXkgZGVmID1cbiAgdHJ5XG4gICAgbWF0Y2ggYXJyYXkuKGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gZGVmXG4gICAgfCBTb21lIGkgLT4gaVxuICB3aXRoIF8gLT4gZGVmXG4iLCIoKipcbiAgICAqIGhhc2gubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDE4LzEwLzIwMTBcbiAgICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA0IDIwMTc+XG4gICAgKiAqXG4gICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgc2lnbmF0dXJlIGZvciBoYXNoIHRhYmxlcyBhbmQgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnNcbiAgICAqICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2ggPSBzaWdcbiAgdHlwZSBrZXlcbiAgdHlwZSAnYSBoYXNoXG5cbiAgdmFsIGNyZWF0ZSA6IGludCAtPiAnYSBoYXNoXG5cbiAgdmFsIGFkZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBrZXkgLT5cbiAgICAnYSAtPlxuICAgIGludCAtPlxuICAgICdhIGhhc2ggLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgaGFzaFxuXG4gIHZhbCBvdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqICdhIGhhc2hcblxuICB2YWwgYWRkX29yX292ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBrZXkgLT5cbiAgICAnYSAtPlxuICAgIGludCAtPlxuICAgICdhIGhhc2ggLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogJ2EgaGFzaFxuXG4gIHZhbCBmaW5kX29wdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBrZXkgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIChpbnQgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBrZXkgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIChpbnQgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5IDoga2V5IC0+ICdhIGhhc2ggLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IGludCAtPiB1bml0KSAtPiAnYSBoYXNoIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoa2V5IC0+ICdiIC0+IGludCAtPiAnYSAtPiAnYSkgLT4gJ2IgaGFzaCAtPiAnYSAtPiAnYVxuZW5kXG5cbm1vZHVsZSBIYXNoID1cbmZ1bmN0b3JcbiAgKE1hcCA6IE1hcF93cmFwcGVyLlNfd2l0aF9sb2dzKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGtleSA9IE1hcC5lbHRcbiAgICAgIHR5cGUgJ2EgaGFzaCA9IChpbnQgKiAnYSkgTWFwLk1hcC50XG5cbiAgICAgIGxldCBjcmVhdGUgXyA9IE1hcC5NYXAuZW1wdHlcblxuICAgICAgbGV0IGFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5IGFzc28gaW50ID1cbiAgICAgICAgTWFwLk1hcC5hZGQgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBhZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgZmluZF9vcHRpb24gcGFyYW1ldGVyIGVycm9yIGEgYiA9XG4gICAgICAgIGxldCBlcnJvcicsIG91dHB1dCA9IE1hcC5NYXAuZmluZF9vcHRpb24gcGFyYW1ldGVyIGVycm9yIGEgYiBpblxuICAgICAgICBpZiBlcnJvciA9PSBlcnJvcicgdGhlblxuICAgICAgICAgIGVycm9yJywgb3V0cHV0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3InIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiYXR0ZW1wdCB0byByZWFkIGFuIHVuZXhpc3RpbmcgYXNzb2NpYXRpb25cIiBOb3RfZm91bmRcbiAgICAgICAgICAgIG91dHB1dFxuXG4gICAgICBsZXQgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzID0gTWFwLk1hcC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcblxuICAgICAgbGV0IGZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5IGEgYiA9XG4gICAgICAgIExpZnRfZXJyb3JfbG9ncy5saWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2JpbmFyeSBmaW5kX29wdGlvbiBhIGJcblxuICAgICAgbGV0IGl0ZXIgZiA9IE1hcC5NYXAuaXRlciAoZnVuIChhIDoga2V5KSAoYiwgYykgLT4gZiBhIGMgYilcbiAgICAgIGxldCBmb2xkIGYgPSBNYXAuTWFwLmZvbGQgKGZ1biBhIChiLCBjKSBkIC0+IGYgYSBjIGIgZClcbiAgICBlbmQgOlxuICAgICAgSGFzaCB3aXRoIHR5cGUga2V5ID0gTWFwLmVsdClcblxubW9kdWxlIEhhc2hfb2ZfT3JkID1cbmZ1bmN0b3IgKE8gOiBTZXRNYXAuT3JkZXJlZFR5cGUpIC0+IEhhc2ggKE1hcF93cmFwcGVyLk1ha2UgKFNldE1hcC5NYWtlIChPKSkpXG4iLCJsZXQgbG9jYWxfdHJhY2UgPSBmYWxzZVxuXG50eXBlIG5vZGUgPSBpbnRcblxubGV0IG5vZGVfb2ZfaW50IHggPSB4XG5sZXQgaW50X29mX25vZGUgKHggOiBub2RlKSA6IGludCA9IHhcblxubW9kdWxlIE5vZGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IG5vZGVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kKVxuXG5tb2R1bGUgTm9kZU1hcCA9IE5vZGVTZXRNYXAuTWFwXG5cbm1vZHVsZSBGaXhlZF9zaXplX2FycmF5IDpcbiAgSW50X3N0b3JhZ2UuU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gbm9kZSBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPVxuICBJbnRfc3RvcmFnZS5RdWlja19rZXlfbGlzdCAoSW50X3N0b3JhZ2UuSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxuXG5tb2R1bGUgTm9kZWFycmF5IDpcbiAgSW50X3N0b3JhZ2UuU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gbm9kZSBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPVxuICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZlxuXG50eXBlICgnbm9kZV9sYWJlbHMsICdlZGdlX2xhYmVscykgZ3JhcGggPSB7XG4gIG5vZGVfbGFiZWxzOiAnbm9kZV9sYWJlbHMgRml4ZWRfc2l6ZV9hcnJheS50O1xuICBlZGdlczogKG5vZGUgKiAnZWRnZV9sYWJlbHMpIGxpc3QgRml4ZWRfc2l6ZV9hcnJheS50O1xufVxuXG5sZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3Igbm9kZV9vZl9ub2RlX2xhYmVsIG5vZGVfbGlzdCBlZGdlX2xpc3QgPVxuICBsZXQgbWF4X25vZGUgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbSBpIC0+IG1heCBtIChpbnRfb2Zfbm9kZSBpKSkgMCBub2RlX2xpc3RcbiAgaW5cbiAgbGV0IGVycm9yLCBub2RlcyA9IEZpeGVkX3NpemVfYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbWF4X25vZGUgaW5cbiAgbGV0IGVycm9yLCBub2RlcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBub2RlcykgaSAtPlxuICAgICAgICBGaXhlZF9zaXplX2FycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGkgOiBub2RlKVxuICAgICAgICAgIChub2RlX29mX25vZGVfbGFiZWwgaSkgbm9kZXMpXG4gICAgICAoZXJyb3IsIG5vZGVzKSAoTGlzdC5yZXYgbm9kZV9saXN0KVxuICBpblxuICBsZXQgZXJyb3IsIGVkZ2VzID0gRml4ZWRfc2l6ZV9hcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciBtYXhfbm9kZSBpblxuICBsZXQgYWRkX2VkZ2UgcGFyYW1ldGVycyBlcnJvciAobjEsIGxhYmVsLCBuMikgZWRnZXMgPVxuICAgIGxldCBlcnJvciwgb2xkID1cbiAgICAgIG1hdGNoIEZpeGVkX3NpemVfYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIG4xIGVkZ2VzIHdpdGhcbiAgICAgIHwgZXJyb3IsIE5vbmUgLT4gZXJyb3IsIFtdXG4gICAgICB8IGVycm9yLCBTb21lIGEgLT4gZXJyb3IsIGFcbiAgICBpblxuICAgIEZpeGVkX3NpemVfYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgbjEgKChuMiwgbGFiZWwpIDo6IG9sZCkgZWRnZXNcbiAgaW5cbiAgbGV0IGVycm9yLCBlZGdlcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBlZGdlcykgZWRnZSAtPiBhZGRfZWRnZSBwYXJhbWV0ZXJzIGVycm9yIGVkZ2UgZWRnZXMpXG4gICAgICAoZXJyb3IsIGVkZ2VzKSBlZGdlX2xpc3RcbiAgaW5cbiAgZXJyb3IsIHsgbm9kZV9sYWJlbHMgPSBub2RlczsgZWRnZXMgfVxuXG5sZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSB0ID1cbiAgbWF0Y2ggTm9kZWFycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgd2l0aFxuICB8IGVycm9yLCBTb21lIGkgLT4gZXJyb3IsIGlcbiAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgLTFcblxubGV0IGdldF9iIHBhcmFtZXRlcnMgZXJyb3IgaSB0ID1cbiAgbWF0Y2ggTm9kZWFycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgd2l0aFxuICB8IGVycm9yLCBTb21lIGkgLT4gZXJyb3IsIGlcbiAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgZmFsc2VcblxubGV0IGNvbXB1dGVfc2NjID9sb3cgP3ByZSA/b25fc3RhY2sgcGFyYW1ldGVycyBlcnJvciBuX3RvX3N0cmluZyBncmFwaCA9XG4gIGxldCBlcnJvciA9XG4gICAgaWYgbG9jYWxfdHJhY2UgfHwgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2UgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBcIkNPTVBVVEUgQlJJREdFOiBcXG4gR3JhcGg6IFxcbiBOb2RlczogXFxuXCJcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5Lml0ZXIgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBpIGogLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVpICVzO1xcblwiIGkgKG5fdG9fc3RyaW5nIGopXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5Lml0ZXIgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBpIGwgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVpOlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gZXJyb3IgKGosIF8pIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgICAgXCIlaSxcIiBqXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgICAgICAgZXJyb3IgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgZ3JhcGguZWRnZXNcbiAgICAgIGluXG4gICAgICBlcnJvclxuICAgICkgZWxzZVxuICAgICAgZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb3csIHByZSwgb25fc3RhY2sgPVxuICAgIG1hdGNoIGxvdywgcHJlLCBvbl9zdGFjayB3aXRoXG4gICAgfCBTb21lIGxvdywgU29tZSBwcmUsIFNvbWUgb25fc3RhY2sgLT4gZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFja1xuICAgIHwgTm9uZSwgXywgXyB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIF9tYXhfbm9kZSA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBfcGFyYW1ldGVyIGVycm9yIGkgXyBqIC0+IGVycm9yLCBtYXggKGludF9vZl9ub2RlIGkpIGopXG4gICAgICAgICAgZ3JhcGgubm9kZV9sYWJlbHMgMFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgfCBTb21lIGxvdyAtPiBlcnJvciwgbG93XG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgcHJlID1cbiAgICAgICAgbWF0Y2ggcHJlIHdpdGhcbiAgICAgICAgfCBTb21lIHByZSAtPiBlcnJvciwgcHJlXG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgb25fc3RhY2sgPVxuICAgICAgICBtYXRjaCBvbl9zdGFjayB3aXRoXG4gICAgICAgIHwgU29tZSBvbl9zdGFjayAtPiBlcnJvciwgb25fc3RhY2tcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFja1xuICBpblxuICBsZXQgcmVjIGF1eCBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciB2ID1cbiAgICBsZXQgZXJyb3IsIHByZSA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IGNvdW50ZXIgcHJlIGluXG4gICAgbGV0IGVycm9yLCBsb3cgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBjb3VudGVyIGxvdyBpblxuICAgIGxldCBzdGFjayA9IHYgOjogc3RhY2sgaW5cbiAgICBsZXQgZXJyb3IsIG9uX3N0YWNrID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgdHJ1ZSBvbl9zdGFjayBpblxuICAgIGxldCBjb3VudGVyID0gc3VjYyBjb3VudGVyIGluXG4gICAgbGV0IGVycm9yLCBlZGdlc192ID1cbiAgICAgIG1hdGNoIEZpeGVkX3NpemVfYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIHYgZ3JhcGguZWRnZXMgd2l0aFxuICAgICAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgIHwgZXJyb3IsIFNvbWUgYSAtPiBlcnJvciwgYVxuICAgIGluXG4gICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKSAodywgXykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHByZV93ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdyBwcmUgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgICAgICAgaWYgcHJlX3cgPSAtMSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgICAgICAgICAgICBhdXggcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvd192ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBsb3cgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3dfdyA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHcgbG93IGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiAobWluIGxvd192IGxvd193KSBsb3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgYiA9IGdldF9iIHBhcmFtZXRlcnMgZXJyb3IgdyBvbl9zdGFjayBpblxuICAgICAgICAgICAgICBpZiBiIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgcHJlX3cgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB3IHByZSBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IChtaW4gbG93X3YgcHJlX3cpIGxvd1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgICAoZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICAgIGVkZ2VzX3ZcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgIGxldCBlcnJvciwgcHJlX3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IHByZSBpblxuICAgIGlmIGxvd192ID0gcHJlX3YgdGhlbiAoXG4gICAgICBsZXQgcmVjIGF1eDIgcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgY2MgdlxuICAgICAgICAgID1cbiAgICAgICAgbWF0Y2ggc3RhY2sgd2l0aFxuICAgICAgICB8IHcnIDo6IHN0YWNrIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvbl9zdGFjayA9XG4gICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdycgZmFsc2Ugb25fc3RhY2tcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBjYyA9IHcnIDo6IGNjIGluXG4gICAgICAgICAgaWYgdiA9IHcnIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBjYyA6OiBzY2NfbGlzdCwgc3RhY2spXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBjYyB2XG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICBpblxuICAgICAgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBbXSB2XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICBpblxuICBsZXQgZXJyb3IsIChwcmUsIGxvdywgX2NvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgX3N0YWNrKSA9XG4gICAgRml4ZWRfc2l6ZV9hcnJheS5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciB2IF8gKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIHByZV92ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBwcmUgaW5cbiAgICAgICAgaWYgcHJlX3YgPSAtMSB0aGVuXG4gICAgICAgICAgYXV4IHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIHZcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgIChwcmUsIGxvdywgMSwgb25fc3RhY2ssIFtdLCBbXSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBsb2NhbF90cmFjZSB8fCBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJTQ0NcIlxuICAgICAgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBsaXN0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgIFwiJWk7XCIpXG4gICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiXFxuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBzY2NfbGlzdFxuICAgICAgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgKVxuICBpblxuICBsZXQgZXJyb3IsIHByZSA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIHByZSBpblxuICBsZXQgZXJyb3IsIGxvdyA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIGxvdyBpblxuICBsZXQgZXJyb3IsIG9uX3N0YWNrID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3Igb25fc3RhY2sgaW5cbiAgZXJyb3IsIHByZSwgbG93LCBvbl9zdGFjaywgc2NjX2xpc3RcblxubGV0IGRldGVjdF9icmlkZ2VzIHBhcmFtZXRlcnMgZXJyb3IgYWRkIGdyYXBoIHN0cmluZ19vZl9uIHN0cmluZ19vZl9lIHNjY1xuICAgIGJyaWRnZXMgPVxuICBGaXhlZF9zaXplX2FycmF5LmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBuaSBsIGJyaWRnZXMgLT5cbiAgICAgIGxldCBlcnJvciwgc2NjaSA9XG4gICAgICAgIG1hdGNoIE5vZGVhcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaSBzY2Mgd2l0aFxuICAgICAgICB8IGVycm9yLCBTb21lIHNjY2kgLT4gZXJyb3IsIHNjY2lcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPiBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoLTEpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGJyaWRnZXMpIChuaiwgbGFiZWwpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzY2NqID1cbiAgICAgICAgICAgIG1hdGNoIE5vZGVhcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaiBzY2Mgd2l0aFxuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBzY2NqIC0+IGVycm9yLCBzY2NqXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgtMilcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHNjY2kgPSBzY2NqIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBicmlkZ2VzXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBGaXhlZF9zaXplX2FycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5pIGdyYXBoLm5vZGVfbGFiZWxzXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJyaWRnZXNcbiAgICAgICAgICAgIHwgZXJyb3IsIFNvbWUgbnN0cmluZ2kgLT5cbiAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbmogZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJyaWRnZXNcbiAgICAgICAgICAgICAgfCBlcnJvciwgU29tZSBuc3RyaW5naiAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBpZiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHx8IGxvY2FsX3RyYWNlXG4gICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJXMgJXMgJXNcIiAoc3RyaW5nX29mX24gbnN0cmluZ2kpIChzdHJpbmdfb2ZfZSBsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfbiBuc3RyaW5nailcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGFkZCAobnN0cmluZ2ksIGxhYmVsLCBuc3RyaW5naikgYnJpZGdlcylcbiAgICAgICAgICApKVxuICAgICAgICAoZXJyb3IsIGJyaWRnZXMpIGwpXG4gICAgZ3JhcGguZWRnZXMgYnJpZGdlc1xuXG5sZXQgYWRkX2JyaWRnZXMgP2xvdyA/cHJlID9vbl9zdGFjayA/c2NjIGFkZCBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZ19vZl9uXG4gICAgc3RyaW5nX29mX2UgZ3JhcGggYnJpZGdlcyA9XG4gIGxldCBlcnJvciwgc2NjID1cbiAgICBtYXRjaCBzY2Mgd2l0aFxuICAgIHwgU29tZSBzY2MgLT4gZXJyb3IsIHNjY1xuICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICBpblxuICBsZXQgZXJyb3IsIHByZSwgbG93LCBvbl9zdGFjaywgc2NjX2xpc3QgPVxuICAgIGNvbXB1dGVfc2NjID9sb3cgP3ByZSA/b25fc3RhY2sgcGFyYW1ldGVycyBlcnJvciBzdHJpbmdfb2ZfbiBncmFwaFxuICBpblxuICBsZXQgZXJyb3IsIF8sIHNjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBuLCBzY2MpIGNjIC0+XG4gICAgICAgIGxldCBlcnJvciwgbiwgc2NjID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIG4sIHNjYykgbm9kZSAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIHNjYyA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciBub2RlIG4gc2NjIGluXG4gICAgICAgICAgICAgIGVycm9yLCBuLCBzY2MpXG4gICAgICAgICAgICAoZXJyb3IsIG4sIHNjYykgY2NcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG4gKyAxLCBzY2MpXG4gICAgICAoZXJyb3IsIDEsIHNjYykgc2NjX2xpc3RcbiAgaW5cbiAgbGV0IGVycm9yLCBicmlkZ2VzID1cbiAgICBkZXRlY3RfYnJpZGdlcyBwYXJhbWV0ZXJzIGVycm9yIGFkZCBncmFwaCBzdHJpbmdfb2ZfbiBzdHJpbmdfb2ZfZSBzY2NcbiAgICAgIGJyaWRnZXNcbiAgaW5cbiAgbGV0IGVycm9yLCBzY2MgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBzY2MgaW5cbiAgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFjaywgc2NjLCBicmlkZ2VzXG4iLCIoKipcbiAqIGRpY3Rpb25hcnkubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDIwMTAsIHRoZSAxOHRoIG9mIE9jdG9iZXJcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA1IDIwMTc+XG4gKiAqXG4gKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIGluZGV4ZWQgc2V0IG9mIHZhbHVlc1xuICogRHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24gbWVtYmVyc2hpcCwgdHJhbmR1Y3Rpb24sIGFuZCBuZXcga2V5IGNhblxuICogYmUgaGFuZGxlZCBpbiBPKGxvZyBuKVxuICogQWZ0ZXIgdGhlIGNvbnN0cnVjdGlvbiBrZXkgY2FuIGJlIHRyYW5zbGF0ZWQgaW4gTygxKVxuICogKlxuICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgRGljdGlvbmFyeSA9IHNpZ1xuICB0eXBlIGtleVxuICB0eXBlIHZhbHVlXG4gIHR5cGUgKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBpbml0IDogdW5pdCAtPiAoJ2EsICdiKSBkaWN0aW9uYXJ5XG5cbiAgdmFsIG1lbWJlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICB2YWx1ZSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogYm9vbFxuXG4gIHZhbCBhbGxvY2F0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ2EgLT4gJ2EgLT4ga2V5KSAtPlxuICAgIHZhbHVlIC0+XG4gICAgJ2EgLT5cbiAgICAoa2V5IC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvblxuXG4gIHZhbCBhbGxvY2F0ZV91bmlxdWVseSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ2EgLT4gJ2EgLT4ga2V5KSAtPlxuICAgIHZhbHVlIC0+XG4gICAgJ2EgLT5cbiAgICAoa2V5IC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvblxuXG4gICgqICB2YWwgYWxsb2NhdGVfZl9pZDogRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiB2YWx1ZSAtPiAoaW50IC0+ICdhKSAtPiAnYSBkaWN0aW9uYXJ5IC0+IEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgKiAoaW50ICogJ2EgKiAnYSBkaWN0aW9uYXJ5KSBvcHRpb24qKVxuICB2YWwgYWxsb2NhdGVfYm9vbCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ2EgLT4gJ2EgLT4ga2V5KSAtPlxuICAgIHZhbHVlIC0+XG4gICAgJ2EgLT5cbiAgICAoa2V5IC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiAoYm9vbCAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uKVxuXG4gIHZhbCB1bnNhZmVfYWxsb2NhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcbiAgICAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSlcblxuICB2YWwgdHJhbnNsYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGtleSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0ICogKHZhbHVlICogJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIHN0YWJpbGl6ZSA6ICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT4gKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBpdGVyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIGtleSAtPlxuICAgIHZhbHVlIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcblxuICB2YWwgbGFzdF9lbnRyeSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAqIGtleVxuXG4gIHZhbCBmb2xkIDpcbiAgICAodmFsdWUgLT4gJ2EgKiAnYiAtPiBrZXkgLT4gJ2MgLT4gJ2MpIC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT4gJ2MgLT4gJ2NcbmVuZFxuXG5leGNlcHRpb25cbiAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcblxuZXhjZXB0aW9uIEFzc29jaWF0aW9uX2lzX25vdF9kZWZpbmVkXG5cbm1vZHVsZSBEaWN0aW9uYXJ5ID1cbmZ1bmN0b3JcbiAgKEhhc2ggOiBIYXNoLkhhc2gpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gaW50XG4gICAgICB0eXBlIHZhbHVlID0gSGFzaC5rZXlcblxuICAgICAgdHlwZSAoJ2EsICdiKSBpbl9jb25zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIGhhc2hfdGFibGU6ICgnYSAqICdiKSBIYXNoLmhhc2g7XG4gICAgICAgIGZyZXNoOiBpbnQ7XG4gICAgICB9XG5cbiAgICAgIHR5cGUgKCdhLCAnYikgc3RhYmlsaXplZCA9ICh2YWx1ZSAqICdhICogJ2IpIG9wdGlvbiBhcnJheVxuXG4gICAgICB0eXBlICgnYSwgJ2IpIGRpY3Rpb25hcnkgPSB7XG4gICAgICAgIGlzX3N0YWJpbGl6ZWQ6IGJvb2w7XG4gICAgICAgIHN0YWJpbGl6ZWQ6ICgnYSwgJ2IpIHN0YWJpbGl6ZWQ7XG4gICAgICAgIGluX2NvbnN0cnVjdGlvbjogKCdhLCAnYikgaW5fY29uc3RydWN0aW9uO1xuICAgICAgfVxuXG4gICAgICBsZXQgaW52YWxpZCB4IHBhcmFtZXRlcnMgbWggX19QT1NfXyBtZXNzYWdlIGV4biA9XG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgbWggX19QT1NfXyB+bWVzc2FnZSBleG4geFxuXG4gICAgICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkIE5vbmVcbiAgICAgIGxldCBpbnZhbGlkX2FyZ19ib29sID0gaW52YWxpZCAoZmFsc2UsIE5vbmUpXG4gICAgICBsZXQgcHJlaW5pdCAoKSA9IHsgaGFzaF90YWJsZSA9IEhhc2guY3JlYXRlIDE7IGZyZXNoID0gMCB9XG5cbiAgICAgIGxldCBwcmVtZW1iZXIgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBpbl9jb25zdHJ1Y3Rpb24gPVxuICAgICAgICBsZXQgZXJyb3IsIG91dHB1dCA9XG4gICAgICAgICAgSGFzaC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcbiAgICAgICAgICAgICgqIGluZGVlZCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRlc3Qgd2hldGhlciBvciBub3QgdGhlcmUgaXMgYW4gYXNzb2NpYXRpb24gKilcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uLmhhc2hfdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG91dHB1dCAhPSBOb25lXG5cbiAgICAgIGxldCBwcmV0cmFuc2xhdGUgcGFyYW1ldGVycyBlcnJvciBrZXkgc3RhYmlsaXplZCA9XG4gICAgICAgIGlmIGtleSA+PSAwICYmIGtleSA8IEFycmF5Lmxlbmd0aCBzdGFiaWxpemVkIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIHN0YWJpbGl6ZWQuKGtleSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGVycm9yLCBTb21lIGFcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm1pc3NpbmcgZW50cnlcIlxuICAgICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuICAgICAgICApIGVsc2UgaWYga2V5IDwgMCB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIFwibmVnYXRpdmUga2V5IGFyZSBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIFwibWlzc2luZyBlbnRyeVwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuXG4gICAgICBsZXQgcHJlc3RhYmlsaXplIGluX2NvbnN0cnVjdGlvbiA9XG4gICAgICAgIGxldCBhcnJheSA9IEFycmF5Lm1ha2UgaW5fY29uc3RydWN0aW9uLmZyZXNoIE5vbmUgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBIYXNoLml0ZXJcbiAgICAgICAgICAgIChmdW4gYSAoYXNzbywgYXNzbycpIGkgLT4gYXJyYXkuKGkpIDwtIFNvbWUgKGEsIGFzc28sIGFzc28nKSlcbiAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGFycmF5XG5cbiAgICAgIGxldCBpbml0ICgpID1cbiAgICAgICAge1xuICAgICAgICAgIGluX2NvbnN0cnVjdGlvbiA9IHByZWluaXQgKCk7XG4gICAgICAgICAgc3RhYmlsaXplZCA9IEFycmF5Lm1ha2UgMCBOb25lO1xuICAgICAgICAgIGlzX3N0YWJpbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgIGxldCBtZW1iZXIgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBkaWN0aW9uYXJ5ID1cbiAgICAgICAgcHJlbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb25cblxuICAgICAgbGV0IHN0YWJpbGl6ZSBkaWN0aW9uYXJ5ID1cbiAgICAgICAgaWYgZGljdGlvbmFyeS5pc19zdGFiaWxpemVkIHRoZW5cbiAgICAgICAgICBkaWN0aW9uYXJ5XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24gPSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbjtcbiAgICAgICAgICAgIGlzX3N0YWJpbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhYmlsaXplZCA9IHByZXN0YWJpbGl6ZSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbjtcbiAgICAgICAgICB9XG5cbiAgICAgIGxldCB0cmFuc2xhdGUgcGFyYW1ldGVycyBlcnJvciBrZXkgZGljdGlvbmFyeSA9XG4gICAgICAgIGxldCBkaWN0aW9uYXJ5ID0gc3RhYmlsaXplIGRpY3Rpb25hcnkgaW5cbiAgICAgICAgcHJldHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGRpY3Rpb25hcnkuc3RhYmlsaXplZFxuXG4gICAgICBsZXQgYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IHVuaXF1ZWx5IHBhcmFtZXRlcnMgZXJyb3IgY29tcGFyZVxuICAgICAgICAgICh2YWx1ZSA6IHZhbHVlKSBhc3NvIGJ1aWxkIGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb24gaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNoLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9nc1xuICAgICAgICAgICAgKCogaW5kZWVkLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sgdGhhdCBlaXRoZXIgdGhlcmUgaXMgbm8gYXNzb2NpYXRpb24sIG9yIHRoYXQgdGhpcyBpcyB0aGUgc2FtZSBhc3NvY2lhdGlvbiAqKVxuICAgICAgICAgICAgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZnJlc2ggPSBpbl9jb25zdHJ1Y3Rpb24uZnJlc2ggaW5cbiAgICAgICAgICBsZXQgYXNzb19pZCA9IGJ1aWxkIGZyZXNoIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBoYXNoX3RhYmxlID1cbiAgICAgICAgICAgIEhhc2guYWRkIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgKGFzc28sIGFzc29faWQpIGZyZXNoXG4gICAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgaGFzaCA9IHsgaGFzaF90YWJsZTsgZnJlc2ggPSBmcmVzaCArIDEgfSBpblxuICAgICAgICAgIGxldCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgICAgIGlmIGRpY3Rpb25hcnkuaXNfc3RhYmlsaXplZCB0aGVuXG4gICAgICAgICAgICAgIHsgZGljdGlvbmFyeSB3aXRoIGlzX3N0YWJpbGl6ZWQgPSBmYWxzZSB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGRpY3Rpb25hcnlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkaWN0aW9uYXJ5ID0geyBkaWN0aW9uYXJ5IHdpdGggaW5fY29uc3RydWN0aW9uID0gaGFzaCB9IGluXG4gICAgICAgICAgZXJyb3IsICh0cnVlLCBTb21lIChmcmVzaCwgYXNzbywgYXNzb19pZCwgZGljdGlvbmFyeSkpXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgKGksIChhc3NvJywgYXNzbydfaWQpKSB3aGVuIGFzc28nID09IGFzc28gLT5cbiAgICAgICAgICBlcnJvciwgKGZhbHNlLCBTb21lIChpLCBhc3NvJywgYXNzbydfaWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIChpLCAoYXNzbycsIGFzc28nX2lkKSkgd2hlbiBjb21wYXJlIGFzc28gYXNzbycgPSAwIC0+XG4gICAgICAgICAgaWYgdW5pcXVlbHkgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmdfYm9vbCBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgXCJ3cm9uZyBhc3NvY2lhdGlvbiAodGhlIGltYWdlIGlzIG5vdCB1bmlxdWVseSBkZXNjcmliZWQgaW4gXFxcbiAgICAgICAgICAgICAgIG1lbW9yeSlcIlxuICAgICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19leGlzdGluZ193aXRoX3RoZV9zYW1lX3ZhbHVlX2luX2FfZGlmZmVyZW50X2xvY2F0aW9uX21lbW9yeVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCAoZmFsc2UsIFNvbWUgKGksIGFzc28nLCBhc3NvJ19pZCwgZGljdGlvbmFyeSkpXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgXyAtPlxuICAgICAgICAgIGludmFsaWRfYXJnX2Jvb2wgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICBcIndyb25nIGFzc29jaWF0aW9uIChzZXZlcmFsIGltYWdlcyBmb3IgdGhlIHNhbWUga2V5KVwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19leGlzdGluZ193aXRoX3RoZV9zYW1lX3ZhbHVlX2luX2FfZGlmZmVyZW50X2xvY2F0aW9uX21lbW9yeVxuXG4gICAgICBsZXQgYWxsb2NhdGUgYWEgZSB4IHYgYSBkIGYgPVxuICAgICAgICBsZXQgYSwgKF8sIGMpID0gYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IGZhbHNlIGFhIGUgeCB2IGEgZCBmIGluXG4gICAgICAgIGEsIGNcblxuICAgICAgbGV0IGFsbG9jYXRlX3VuaXF1ZWx5IGFhIGUgeCB2IGEgZCBmID1cbiAgICAgICAgbGV0IGEsIChfLCBjKSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCB0cnVlIGFhIGUgeCB2IGEgZCBmIGluXG4gICAgICAgIGEsIGNcblxuICAgICAgbGV0IGFsbG9jYXRlX2Jvb2wgYWEgZSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCBmYWxzZSBhYSBlXG5cbiAgICAgIGxldCB1bnNhZmVfYWxsb2NhdGUgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBhc3NvIGJ1aWxkIGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb24gaW5cbiAgICAgICAgbGV0IGZyZXNoID0gaW5fY29uc3RydWN0aW9uLmZyZXNoIGluXG4gICAgICAgIGxldCBhc3NvX2lkID0gYnVpbGQgZnJlc2ggaW5cbiAgICAgICAgbGV0IGVycm9yLCBoYXNoX3RhYmxlID1cbiAgICAgICAgICBIYXNoLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSAoYXNzbywgYXNzb19pZCkgZnJlc2hcbiAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYXNoID0geyBoYXNoX3RhYmxlOyBmcmVzaCA9IGZyZXNoICsgMSB9IGluXG4gICAgICAgIGxldCBkaWN0aW9uYXJ5ID0geyBkaWN0aW9uYXJ5IHdpdGggaW5fY29uc3RydWN0aW9uID0gaGFzaCB9IGluXG4gICAgICAgIGVycm9yLCAoZnJlc2gsIGFzc28sIGFzc29faWQsIGRpY3Rpb25hcnkpXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlcnMgZXJyb3IgZiBkaWMgPVxuICAgICAgICBsZXQgZGljJyA9IHN0YWJpbGl6ZSBkaWMgaW5cbiAgICAgICAgbGV0IGcga2V5IGVycm9yID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3JcbiAgICAgICAgICB8IFNvbWUgKHZhbHVlLCBhLCBiKSAtPiBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGEgYlxuICAgICAgICBpblxuICAgICAgICAoKiBpZiBkaWMuaXNfc3RhYmlsaXplZFxuICAgICAgICAgICB0aGVuKilcbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSBnIGVycm9yIGRpYycuc3RhYmlsaXplZFxuICAgICAgKCplbHNlIEhhc2guZm9sZFxuICAgICAgICAoZnVuIHZhbHVlIChhLGIpIGtleSBlcnJvciAtPiBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGEgYilcbiAgICAgICAgZGljLmluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlIGVycm9yKilcblxuICAgICAgbGV0IGZvbGQgZiBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIEhhc2guZm9sZCBmIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG5cbiAgICAgIGxldCBsYXN0X2VudHJ5IF9wYXJhbWV0ZXJzIGVycm9yIGRpYyA9XG4gICAgICAgIGVycm9yLCBkaWMuaW5fY29uc3RydWN0aW9uLmZyZXNoIC0gMVxuICAgIGVuZCA6XG4gICAgICBEaWN0aW9uYXJ5IHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgdmFsdWUgPSBIYXNoLmtleSlcblxubW9kdWxlIERpY3Rpb25hcnlfb2ZfT3JkID1cbmZ1bmN0b3IgKE8gOiBTZXRNYXAuT3JkZXJlZFR5cGUpIC0+IERpY3Rpb25hcnkgKEhhc2guSGFzaF9vZl9PcmQgKE8pKVxuIiwiKCoqXG4gICAqIHRpY2tfc3Rvcmllcy5tbFxuICAgKlxuICAgKiBQcm9ncmVzcyBiYXIgKGNvbWluZyBmcm9tIE1vZHMubWwpXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgICpcbiAgICogS2FTaW1cbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICAqXG4gICAqIENyZWF0aW9uOiAxNy8wNS8yMDE2XG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxNy8wNS8yMDE2XG4gICAqICpcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgdGlja19zdG9yaWVzIGYgY29uZiBzYXZlX3Byb2dyZXNzX2JhciAoaW5pdCwgbGFzdCwgY291bnRlciwgbl9zdG9yaWVzKSA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IGluaXQgdGhlbiAoXG4gICAgICBsZXQgYyA9IHJlZiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NTaXplIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZiBpblxuICAgICAgd2hpbGUgIWMgPiAwIGRvXG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBmIFwiX1wiO1xuICAgICAgICBjIDo9ICFjIC0gMVxuICAgICAgZG9uZTtcbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBmXG4gICAgKVxuICBpblxuICBsZXQgbiA9XG4gICAgaWYgbl9zdG9yaWVzIDw9IDAgJiYgY291bnRlciA9IDAgdGhlblxuICAgICAgY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZVxuICAgIGVsc2UgaWYgY291bnRlciA+IG5fc3RvcmllcyB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmMgPSBjb3VudGVyICogY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZSAvIG5fc3RvcmllcyBpblxuICAgICAgbGV0IG5sID0gbGFzdCAqIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemUgLyBuX3N0b3JpZXMgaW5cbiAgICAgIG5jIC0gbmxcbiAgICApXG4gIGluXG4gIGxldCByZWMgYXV4IG4gPVxuICAgIGlmIG4gPD0gMCB0aGVuXG4gICAgICAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGYgXCIlY1wiIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc0NoYXIgaW5cbiAgICAgIGF1eCAobiAtIDEpXG4gICAgKVxuICBpblxuICBsZXQgKCkgPSBhdXggbiBpblxuICBsZXQgKCkgPSBMb2dnZXJzLmZsdXNoX2xvZ2dlciBmIGluXG4gIGxldCAoKSA9IGlmIGNvdW50ZXIgPSBuX3N0b3JpZXMgdGhlbiBMb2dnZXJzLnByaW50X25ld2xpbmUgZiBpblxuICBsZXQgYmFyID0gdHJ1ZSwgY291bnRlciwgY291bnRlciArIDEsIG5fc3RvcmllcyBpblxuICBsZXQgKCkgPSBzYXZlX3Byb2dyZXNzX2JhciBiYXIgaW5cbiAgYmFyXG4iLCIoKipcbiAgICogZ3JhcGhfY2xvc3VyZS5tbFxuICAgKlxuICAgKiBBbGdvcml0aG1zIHRvIGNvbXB1dGUgdHJhbnNpdGl2ZSBjbG9zdXJlIG9mIG9iZXJ2YWJsZXMgaW4gdHJhY2VzXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgICpcbiAgICogS2FTaW1cbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICAqXG4gICAqIENyZWF0aW9uOiAxNy8wOC8yMDEzXG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxMC8wOS8yMDEzXG4gICAqICpcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgQSA9IEFycmF5XG5tb2R1bGUgUyA9IE1vZHMuSW50U2V0XG5tb2R1bGUgTSA9IE1vZHMuSW50TWFwXG5cbmxldCBpZ25vcmVfZmxvd19mcm9tX291dGdvaW5nX3NpcGhvbiA9IHRydWVcbmxldCBjaGVja19tb2RlID0gZmFsc2VcblxudHlwZSBhbGdvX3R5cGUgPSBUb3BfZG93biB8IEJvdHRvbV91cCB8IENoZWNrXG50eXBlIG9yZGVyID0gSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgfCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudFxuXG50eXBlIGNvbmZpZyA9IHtcbiAgZG9fdGljazogYm9vbDtcbiAga2VlcF9hbGxfbm9kZXM6IGJvb2w7XG4gIGN1dF90cmFuc2l0aXZlX3BhdGg6IGJvb2w7XG4gIHN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBoczogYm9vbDtcbiAgbWF4X2luZGV4OiBpbnQ7XG4gIGFsZ286IGFsZ29fdHlwZTtcbn1cblxubGV0IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgPVxuICB7XG4gICAgZG9fdGljayA9IHRydWU7XG4gICAga2VlcF9hbGxfbm9kZXMgPSBmYWxzZTtcbiAgICBjdXRfdHJhbnNpdGl2ZV9wYXRoID0gdHJ1ZTtcbiAgICBzdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHMgPSB0cnVlO1xuICAgIG1heF9pbmRleCA9IDMwMDtcbiAgICBhbGdvID0gQm90dG9tX3VwICgqaWYgY2hlY2tfbW9kZSB0aGVuIENoZWNrIGVsc2UgVG9wX2Rvd24qKTtcbiAgfVxuXG5sZXQgY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhciA9XG4gIHsgY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhciB3aXRoIGRvX3RpY2sgPSBmYWxzZSB9XG5cbmxldCBjb25maWdfc21hbGxfZ3JhcGggPVxuICB7XG4gICAgZG9fdGljayA9IGZhbHNlO1xuICAgIGtlZXBfYWxsX25vZGVzID0gdHJ1ZTtcbiAgICBjdXRfdHJhbnNpdGl2ZV9wYXRoID0gZmFsc2U7XG4gICAgc3RhdF90cmFuc19jbG9zdXJlX2Zvcl9iaWdfZ3JhcGhzID0gdHJ1ZTtcbiAgICBhbGdvID0gQm90dG9tX3VwO1xuICAgIG1heF9pbmRleCA9IDMwMDtcbiAgfVxuXG5sZXQgc3dhcCBmIGEgYiA9IGYgYiBhXG5sZXQgaWdub3JlX2ZzdCBmIF8gPSBmXG5cbmxldCByZWMgY29tcGFyZV9zdWNjIHAgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICB8IGEgOjogcSAtPlxuICAgIChtYXRjaCBxIHdpdGhcbiAgICB8IGIgOjogXyB3aGVuIHAgYSBiIC0+IGNvbXBhcmVfc3VjYyBwIHFcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBzdHJpY3RseV9pbmNyZWFzaW5nID0gY29tcGFyZV9zdWNjIChmdW4gKGEgOiBpbnQpIGIgLT4gYSA8IGIpXG5sZXQgc3RyaWN0bHlfZGVjcmVhc2luZyA9IGNvbXBhcmVfc3VjYyAoZnVuIChhIDogaW50KSBiIC0+IGEgPiBiKVxubGV0IGNvbmNhdCBhID0gTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBhKVxuXG5sZXQgcHJpbnRfbGlzdCBmIGwgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdQC5cIiAoUHAubGlzdCBQcC5jb21tYSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKSBsXG5cbmxldCBjaGVjayBmb3JtIHAgZiBzdHJpbmcgYSBiID1cbiAgbWF0Y2ggcCBhLCBwIGIgd2l0aFxuICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSBhIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGIgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMV8yXCIpXG4gIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYiBpblxuICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9hcmcyXCIpXG4gIHwgZmFsc2UsIHRydWUgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYSBpblxuICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9hcmcxXCIpXG4gIHwgdHJ1ZSwgdHJ1ZSAtPlxuICAgIGxldCByZXAgPSBmIGEgYiBpblxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSByZXAgaW5cbiAgICBpZiBwIHJlcCB0aGVuXG4gICAgICByZXBcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2xpc3QgZm9ybSBhO1xuICAgICAgcHJpbnRfbGlzdCBmb3JtIGI7XG4gICAgICBwcmludF9saXN0IGZvcm0gcmVwO1xuICAgICAgZmFpbHdpdGggKHN0cmluZyBeIFwiX291dHB1dFwiKVxuICAgIClcblxubGV0IGlzX3N0cmljdF9zdWJsaXN0IHAgYSBiID1cbiAgbGV0IHJlYyBhdXggYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCBbXSwgXyA6OiBfIC0+IHRydWVcbiAgICB8IGggOjogdCwgaCcgOjogdCcgd2hlbiBoID0gaCcgLT4gYXV4IHQgdCdcbiAgICB8IGggOjogXywgaCcgOjogXyB3aGVuIHAgaCBoJyAtPiBmYWxzZVxuICAgIHwgXywgXyA6OiB0JyAtPiBhdXggYSB0J1xuICBpblxuICBhdXggYSBiXG5cbmxldCBpbnNlcnRfZWx0IHAgZSA9IExpc3RfdXRpbC5tZXJnZV91bmlxIHAgWyBlIF1cblxubGV0IGRpZmZfbGlzdCBwIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiBhY2N1ID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IGIsIFtdIC0+IExpc3QucmV2IChMaXN0LnJldl9hcHBlbmQgYiBhY2N1KVxuICAgIHwgW10sIF8gOjogXyAtPiBMaXN0LnJldiBhY2N1XG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IHQnIGFjY3VcbiAgICB8IGggOjogdCwgaCcgOjogXyB3aGVuIHAgaCBoJyAtPiBhdXggdCBiIChoIDo6IGFjY3UpXG4gICAgfCBfLCBfIDo6IHQnIC0+IGF1eCBhIHQnIGFjY3VcbiAgaW5cbiAgYXV4IGEgYiBbXVxuXG5sZXQgY29tcGFyZV9ib29sIGEgYiA9IGNvbXBhcmUgYSBiIDwgMFxubGV0IGRpZmZfbGlzdF9kZWNyZWFzaW5nID0gZGlmZl9saXN0IChzd2FwIGNvbXBhcmVfYm9vbClcbmxldCBtZXJnZV9saXN0X2RlY3JlYXNpbmcgPSBMaXN0X3V0aWwubWVyZ2VfdW5pcSAoZnVuIHggeSAtPiBTdGRsaWIuY29tcGFyZSB5IHgpXG5cbmxldCBjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnQgY29uZmlnXG4gICAgcHJlYyBpc19vYnMgZiBhID1cbiAgbGV0IGVycl9sb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gIGxldCBpc19vYnMgPVxuICAgIGlmIGNvbmZpZy5rZWVwX2FsbF9ub2RlcyB0aGVuXG4gICAgICBmdW4gXyAtPlxuICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBpc19vYnNcbiAgaW5cbiAgbGV0IG1heF9pbmRleCA9IE0uZm9sZCAoZnVuIGkgXyAtPiBtYXggaSkgcHJlYyAwIGluXG4gIGxldCAoKSA9XG4gICAgaWYgY29uZmlnLnN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBocyAmJiBjb25maWcubWF4X2luZGV4ID4gMzAwIHRoZW4gKFxuICAgICAgbGV0IG5fZWRnZXMgPSBNLmZvbGQgKGlnbm9yZV9mc3QgKFMuZm9sZCAoaWdub3JlX2ZzdCBzdWNjKSkpIHByZWMgMCBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBlcnJfbG9nZ2VyIFwiXFx0XFx0VHJhbnNpdGl2ZSBjbG9zdXJlICglaSBub2RlcywgJWkgZWRnZXMpXCJcbiAgICAgICAgICBtYXhfaW5kZXggbl9lZGdlc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICAoKVxuICAgIClcbiAgaW5cbiAgbGV0IGRvX3RpY2ssIHRpY2ssIGNsb3NlX3RpY2sgPVxuICAgIGlmIG1heF9pbmRleCA+IDMwMCAmJiBjb25maWcuZG9fdGljayB0aGVuIChcbiAgICAgIGxldCB0aWNrID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgKGZhbHNlLCAwLCAwLCBtYXhfaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGYgPVxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGVycl9sb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICBsZXQgY2xvc2UgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZXJyX2xvZ2dlciBpblxuICAgICAgZiwgdGljaywgY2xvc2VcbiAgICApIGVsc2VcbiAgICAgIChmdW4geCAtPiB4KSwgKGZhbHNlLCAwLCAwLCAwKSwgZnVuICgpIC0+ICgpXG4gIGluXG4gIGxldCBzX3ByZWRfc3RhciA9IEEubWFrZSAobWF4X2luZGV4ICsgMSkgW10gaW5cbiAgbGV0IGNsZWFuLCBfbWF4X3N1Y2MgPVxuICAgIGxldCBtYXhfc3VjYyA9IEEuaW5pdCAobWF4X2luZGV4ICsgMSkgKGZ1biBpIC0+IGkpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTS5pdGVyXG4gICAgICAgIChmdW4gc3VjYyAtPlxuICAgICAgICAgIFMuaXRlciAoZnVuIHByZWQgLT5cbiAgICAgICAgICAgICAgQS5zZXQgbWF4X3N1Y2MgcHJlZCAobWF4IHN1Y2MgKEEuZ2V0IG1heF9zdWNjIHByZWQpKSkpXG4gICAgICAgIHByZWNcbiAgICBpblxuICAgIGxldCBpc19sYXN0X3N1Y2Nfb2YgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gICAgbGV0IGFkZCBub2RlIG1heF9zdWNjID1cbiAgICAgIGxldCBvbGRfbCA9IEEuZ2V0IGlzX2xhc3Rfc3VjY19vZiBtYXhfc3VjYyBpblxuICAgICAgbGV0IGwnID0gbm9kZSA6OiBvbGRfbCBpblxuICAgICAgQS5zZXQgaXNfbGFzdF9zdWNjX29mIG1heF9zdWNjIGwnXG4gICAgaW5cbiAgICBsZXQgXyA9IEEuaXRlcmkgYWRkIG1heF9zdWNjIGluXG4gICAgbGV0IF8gPSBBLnNldCBpc19sYXN0X3N1Y2Nfb2YgMCBbXSBpblxuICAgIGxldCBnY193aGVuX3Zpc2l0IG5vZGUgPVxuICAgICAgTGlzdC5pdGVyIChmdW4gayAtPiBBLnNldCBzX3ByZWRfc3RhciBrIFtdKSAoQS5nZXQgaXNfbGFzdF9zdWNjX29mIG5vZGUpXG4gICAgaW5cbiAgICBnY193aGVuX3Zpc2l0LCBmdW4gaSAtPiBBLmdldCBtYXhfc3VjYyBpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgfCBTb21lIGUgLT5cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgTS5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAoZnVuIHN1Y2Mgc19wcmVkICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIGNvdW50ZXIsIGEpIC0+XG4gICAgICAgIGxldCByZWMgYXV4IChsIDogaW50IGxpc3QpIChhY2N1IDogaW50IGxpc3QpID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFjY3VcbiAgICAgICAgICB8IHByZWQgOjogdCAtPlxuICAgICAgICAgICAgbGV0IG5ld19sID0gQS5nZXQgc19wcmVkX3N0YXIgcHJlZCBpblxuICAgICAgICAgICAgbGV0IGRpZmYgPVxuICAgICAgICAgICAgICBpZiBjb25maWcuY3V0X3RyYW5zaXRpdmVfcGF0aCB0aGVuXG4gICAgICAgICAgICAgICAgZGlmZl9saXN0X2RlY3JlYXNpbmcgdCBuZXdfbFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBkaWZmIChtZXJnZV9saXN0X2RlY3JlYXNpbmcgKHByZWQgOjogbmV3X2wpIGFjY3UpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmVkX3N0YXIgPVxuICAgICAgICAgIGxldCBsX3ByZWQgPSBTLmZvbGQgKGZ1biBpIGogLT4gaSA6OiBqKSBzX3ByZWQgW10gaW5cbiAgICAgICAgICBsZXQgcyA9IEEuZ2V0IHNfcHJlZF9zdGFyIHN1Y2MgaW5cbiAgICAgICAgICBhdXggbF9wcmVkIHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPSBBLnNldCBzX3ByZWRfc3RhciBzdWNjIHByZWRfc3RhciBpblxuICAgICAgICBsZXQgXyA9IGNsZWFuIHN1Y2MgaW5cbiAgICAgICAgbGV0IHRpY2sgPSBkb190aWNrIHRpY2sgaW5cbiAgICAgICAgaWYgaXNfb2JzIHN1Y2MgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYSA9XG4gICAgICAgICAgICBmIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN1Y2MgcHJlZF9zdGFyIGFcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAoZnVuIGEgLT4gU3RvcC5zdWNjZXNzICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIGNvdW50ZXIgKyAxLCBhKSlcbiAgICAgICAgICAgIChmdW4gYiAtPiBTdG9wLnN0b3AgKGVycm9yLCBsb2dfaW5mbywgYikpXG4gICAgICAgICAgICBhXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIFN0b3Auc3VjY2VzcyAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyLCBhKSlcbiAgICAgIHByZWNcbiAgICAgICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIDEsIGEpXG4gIGluXG4gIGxldCBfID0gY2xvc2VfdGljayAoKSBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKF8sIGVycm9yLCBsb2dfaW5mbywgXywgYSkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBTdG9wLnN1Y2Nlc3MgKGVycm9yLCBsb2dfaW5mbywgYSkpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBiKSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yIGUgTm9uZSBsb2dfaW5mb1xuICAgICAgaW5cbiAgICAgIFN0b3Auc3RvcCAoZXJyb3IsIGxvZ19pbmZvLCBiKSlcbiAgICBvdXRwdXRcblxubGV0IGNsb3N1cmVfYm90dG9tX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgIGlzX29icyA9XG4gIGxldCBtYXhfaW5kZXggPSBNLmZvbGQgKGZ1biBpIF8gLT4gbWF4IGkpIHByZWMgMCBpblxuICBsZXQgc19wcmVkX3N0YXIgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBmIF9wIF9oIGMgZSBpIHMgYSA9XG4gICAgbGV0IF8gPSBBLnNldCBhIGkgcyBpblxuICAgIGUsIGMsIFN0b3Auc3VjY2VzcyBhXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIGNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHRcbiAgICAgIGNvbmZpZyBwcmVjIGlzX29icyBmIHNfcHJlZF9zdGFyXG4gIGluXG4gIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBncmFwaCkgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGdyYXBoLCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCkpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBfKSAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoc19wcmVkX3N0YXIsIERlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50KSlcbiAgICBvdXRwdXRcblxubGV0IGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIF9ldmVudF9vcHQgY29uZmlnIHByZWNcbiAgICBpc19vYnMgZGVsdGEgPVxuICBsZXQgZXJyX2xvZ2dlciA9IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgbGV0IGlzX29icyA9XG4gICAgaWYgY29uZmlnLmtlZXBfYWxsX25vZGVzIHRoZW5cbiAgICAgIGZ1biBfIC0+XG4gICAgdHJ1ZVxuICAgIGVsc2VcbiAgICAgIGlzX29ic1xuICBpblxuICBsZXQgbWF4X2luZGV4ID0gTS5mb2xkIChmdW4gaSBfIC0+IG1heCBpKSBwcmVjIDAgaW5cbiAgbGV0IHByZWMgPSBNLmZvbGQgKGZ1biBpIHNfcHJlZCBsIC0+IChpLCBzX3ByZWQpIDo6IGwpIHByZWMgW10gaW5cbiAgbGV0IGNyZWF0ZV90YWludHMgaSA9XG4gICAgbGV0IHJlYyBhdXggZGVsdGEgb3V0cHV0ID1cbiAgICAgIGlmIGRlbHRhID0gMCB0aGVuXG4gICAgICAgIG91dHB1dFxuICAgICAgZWxzZVxuICAgICAgICBhdXggKGRlbHRhIC0gMSkgKFMuZW1wdHkgOjogb3V0cHV0KVxuICAgIGluXG4gICAgYXV4IGRlbHRhIFsgUy5zaW5nbGV0b24gaSBdXG4gIGluXG4gIGxldCBzaGlmdF90YWludHMgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCB0IDo6IHQnIDo6IHEgLT4gUy51bmlvbiB0IHQnIDo6IHFcbiAgICB8IF8gLT4gbFxuICBpblxuICBsZXQgcmVjIG1lcmdlX3RhaW50cyBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IF8sIFtdIC0+IGwxXG4gICAgfCBbXSwgXyAtPiBsMlxuICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPiBTLnVuaW9uIHQgdCcgOjogbWVyZ2VfdGFpbnRzIHEgcSdcbiAgaW5cbiAgbGV0IHNfcHJlZF9zdGFyID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgdGFpbnQgaSB0YWludHMgPVxuICAgIG1hdGNoIHRhaW50cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdCA6OiBfcSAtPlxuICAgICAgUy5pdGVyXG4gICAgICAgIChmdW4gdGFpbnQgLT4gQS5zZXQgc19wcmVkX3N0YXIgdGFpbnQgKGkgOjogQS5nZXQgc19wcmVkX3N0YXIgdGFpbnQpKVxuICAgICAgICB0XG4gIGluXG4gIGxldCBkb190aWNrLCB0aWNrLCBjbG9zZV90aWNrID1cbiAgICBpZiBtYXhfaW5kZXggPiAzMDAgJiYgY29uZmlnLmRvX3RpY2sgdGhlbiAoXG4gICAgICBsZXQgdGljayA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbWF4X2luZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBmID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgbGV0IGNsb3NlICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGYsIHRpY2ssIGNsb3NlXG4gICAgKSBlbHNlXG4gICAgICAoZnVuIHggLT4geCksIChmYWxzZSwgMCwgMCwgMCksIGZ1biAoKSAtPiAoKVxuICBpblxuICBsZXQgdGFpbnRpbmcgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biB0aWNrIChpLCBzX3ByZWQpIC0+XG4gICAgICAgIGxldCBuZXdfdGFpbnQgPVxuICAgICAgICAgIGlmIGlzX29icyBpIHRoZW5cbiAgICAgICAgICAgIGNyZWF0ZV90YWludHMgaVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0YWludHMgPSBtZXJnZV90YWludHMgbmV3X3RhaW50IChBLmdldCB0YWludGluZyBpKSBpblxuICAgICAgICBsZXQgKCkgPSB0YWludCBpIHRhaW50cyBpblxuICAgICAgICBsZXQgc2hpZnRlZF90YWludHMgPSBzaGlmdF90YWludHMgdGFpbnRzIGluXG4gICAgICAgIGxldCB0YWludCB4ID1cbiAgICAgICAgICBBLnNldCB0YWludGluZyB4IChtZXJnZV90YWludHMgc2hpZnRlZF90YWludHMgKEEuZ2V0IHRhaW50aW5nIHgpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBTLml0ZXIgdGFpbnQgc19wcmVkIGluXG4gICAgICAgIGxldCAoKSA9IEEuc2V0IHRhaW50aW5nIGkgW10gaW5cbiAgICAgICAgZG9fdGljayB0aWNrKVxuICAgICAgdGljayBwcmVjXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3RpY2sgKCkgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAoc19wcmVkX3N0YXIsIEluY3JlYXNpbmdfd2l0aF9sYXN0X2V2ZW50KVxuXG5sZXQgZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnQgaSAobSwgbW9kZSkgPVxuICBtYXRjaCBtb2RlIHdpdGhcbiAgfCBJbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudCAtPiBtLihpKVxuICB8IERlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50IC0+XG4gICAgKG1hdGNoIG0uKGkpIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBsIC0+IExpc3QucmV2IChpIDo6IGwpKVxuXG5sZXQgY2xvc3VyZV9jaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzXG4gICAgPVxuICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIChhLCBhJykgPVxuICAgIGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnMgMFxuICBpblxuICBsZXQgdCcgPSBTeXMudGltZSAoKSBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYiwgYicpID1cbiAgICBjbG9zdXJlX2JvdHRvbV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHRcbiAgICAgIHsgY29uZmlnIHdpdGggZG9fdGljayA9IGZhbHNlIH1cbiAgICAgIHByZWMgaXNfb2JzXG4gIGluXG4gIGxldCB0JycgPSBTeXMudGltZSAoKSBpblxuICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIk5FVzogJWYgT0xEOiAlZiBcXG5cIiAodCcgLS4gdCkgKHQnJyAtLiB0JykgaW5cbiAgbGV0IF8gPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBfcyAtPlxuICAgICAgICBsZXQgcyA9IGdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50IGkgKGEsIGEnKSBpblxuICAgICAgICBsZXQgcycgPSBnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudCBpIChiLCBiJykgaW5cbiAgICAgICAgaWYgcyA9IHMnIHRoZW5cbiAgICAgICAgICAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIkRJRkZFUiAlaVxcblwiIGkgaW5cbiAgICAgICAgICBsZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksIFwiKSBzIGluXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpblxuICAgICAgICAgIGxldCBfID0gTGlzdC5pdGVyIChQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlaSwgXCIpIHMnIGluXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpblxuICAgICAgICAgICgpXG4gICAgICAgICkpXG4gICAgICBhXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKGEsIGEnKVxuXG5sZXQgY2xvc3VyZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzID1cbiAgbWF0Y2ggY29uZmlnLmFsZ28gd2l0aFxuICB8IENoZWNrIC0+XG4gICAgY2xvc3VyZV9jaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzXG4gIHwgQm90dG9tX3VwIC0+XG4gICAgY2xvc3VyZV9ib3R0b21fdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnNcbiAgfCBUb3BfZG93biAtPlxuICAgIGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnMgMFxuXG5sZXQgcmVkdWN0aW9uX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWMgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkdyYXBoX3JlZHVjdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVjX3N0YXIsIF8pID1cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5UcmFuc2l0aXZlX2Nsb3N1cmUgY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhclxuICAgICAgcHJlY1xuICAgICAgKGZ1biBfIC0+IHRydWUpXG4gICAgICAyXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIE0uZm9sZFxuICAgICAgKGZ1biBlaWQgbmVpZ2ggb3V0IC0+XG4gICAgICAgIGxldCB0b19yZW1vdmUgPSBBLmdldCBwcmVjX3N0YXIgZWlkIGluXG4gICAgICAgIGxldCBzID0gUy5mb2xkIChmdW4gaSBsIC0+IGkgOjogbCkgbmVpZ2ggW10gaW5cbiAgICAgICAgbGV0IHMgPSBMaXN0LnJldiBzIGluXG4gICAgICAgIGxldCByZWMgYXV4IGwxIGwyIG91dHB1dCA9XG4gICAgICAgICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICAgICAgICB8IF8sIFtdIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIHNldCBpIC0+IFMuYWRkIGkgc2V0KSBvdXRwdXQgbDFcbiAgICAgICAgICAgICgqIFRoaXMgaXMgcXVpdGUgYW5ub3lpbmcsIHdoeSBwcmVjIGlzIG5vdCBkZXNjcmliZWQgd2l0aCBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgICB8IFtdLCBfIC0+IG91dHB1dFxuICAgICAgICAgIHwgaCA6OiBxLCBoJyA6OiBxJyAtPlxuICAgICAgICAgICAgbGV0IGNtcCA9IGNvbXBhcmUgaCBoJyBpblxuICAgICAgICAgICAgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGF1eCBxIGwyIChTLmFkZCBoIG91dHB1dClcbiAgICAgICAgICAgIGVsc2UgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgICAgIGF1eCBxIHEnIG91dHB1dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggKGggOjogcSkgcScgb3V0cHV0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBzID0gYXV4IHMgdG9fcmVtb3ZlIFMuZW1wdHkgaW5cbiAgICAgICAgTS5hZGQgZWlkIHMgb3V0KVxuICAgICAgcHJlYyBwcmVjXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5HcmFwaF9yZWR1Y3Rpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5sZXQgcmVkdWN0aW9uID0gcmVkdWN0aW9uX3RvcF9kb3duXG4iLCJ0eXBlIHF1YXJrX2xpc3RzID0ge1xuICBzaXRlX3Rlc3RlZDogKGludCAqIGludCkgbGlzdDtcbiAgc2l0ZV9tb2RpZmllZDogKGludCAqIGludCkgbGlzdDtcbiAgaW50ZXJuYWxfc3RhdGVfdGVzdGVkOiAoaW50ICogaW50KSBsaXN0O1xuICBpbnRlcm5hbF9zdGF0ZV9tb2RpZmllZDogKGludCAqIGludCkgbGlzdDtcbn1cblxudHlwZSBldmVudF9raW5kID0gT0JTIG9mIHN0cmluZyB8IEVWRU5UIG9mIFRyYWNlLmV2ZW50X2tpbmRcblxubGV0IGF0b21fdGVzdGVkID0gMVxubGV0IGF0b21fbW9kaWZpZWQgPSAyXG5sZXQgYXRvbV90ZXN0ZWRtb2RpZmllZCA9IDNcblxudHlwZSBhdG9tID0ge1xuICBjYXVzYWxfaW1wYWN0OiBpbnQ7ICgqKDEpIHRlc3RlZCAoMikgbW9kaWZpZWQsICgzKSB0ZXN0ZWQgKyBtb2RpZmllZCopXG4gIGVpZDogaW50OyAoKmV2ZW50IGlkZW50aWZpZXIqKVxuICBraW5kOiBldmVudF9raW5kOyAoKm9ic2VydmF0aW9uOiBzdHJpbmcgbGlzdCopXG59XG5cbnR5cGUgYXR0cmlidXRlID0gYXRvbSBsaXN0ICgqdmVydGljYWwgc2VxdWVuY2Ugb2YgYXRvbXMqKVxuXG50eXBlIGdyaWQgPSB7XG4gIGZsb3c6IChpbnQgKiBpbnQgKiBpbnQsIGF0dHJpYnV0ZSkgSGFzaHRibC50O1xuICAoKihuX2ksc19pLHFfaSkgLT4gYXR0X2kgd2l0aCBuX2k6IG5vZGVfaWQsIHNfaTogc2l0ZV9pZCwgcV9pOlxuICAgIGxpbmsgKDEpIG9yIGludGVybmFsIHN0YXRlICgwKSAqKVxuICBwaWRfdG9faW5pdDogKGludCAqIGludCAqIGludCwgaW50KSBIYXNodGJsLnQ7XG4gIG9iczogaW50IGxpc3Q7XG4gIGluaXRfdGJsOiAoaW50LCBNb2RzLkludFNldC50KSBIYXNodGJsLnQ7ICgqZGVjcmVhc2luZyopXG4gIGluaXRfdG9fZWlkbWF4OiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbn1cblxudHlwZSBjb25maWcgPSB7XG4gIGV2ZW50c19raW5kOiBldmVudF9raW5kIE1vZHMuSW50TWFwLnQ7XG4gIHByZWNfMTogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50O1xuICBjb25mbGljdDogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50O1xufVxuXG50eXBlIGVucmljaGVkX2dyaWQgPSB7XG4gIGNvbmZpZzogY29uZmlnO1xuICBkZXB0aDogaW50O1xuICBwcmVjX3N0YXI6IGludCBsaXN0IGFycmF5ICogR3JhcGhfY2xvc3VyZS5vcmRlcjsgKCpkZWNyZWFzaW5nKilcbiAgZGVwdGhfb2ZfZXZlbnQ6IGludCBNb2RzLkludE1hcC50O1xuICBzaXplOiBpbnQ7XG59XG5cbnR5cGUgZm9ybWF0Q2Zsb3cgPSBEb3QgfCBIdG1sIHwgSnNvblxuXG5sZXQgZW1wdHlfY29uZmlnID1cbiAge1xuICAgIGV2ZW50c19raW5kID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgY29uZmxpY3QgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICBwcmVjXzEgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgfVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgPSBmdW5jdGlvblxuICB8IEVWRU5UIGUgLT4gVHJhY2UucHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgZVxuICB8IE9CUyBpIC0+XG4gICAgKG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJPQlMoJXMpXCIgaVxuICAgIHwgU29tZSBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBpKVxuXG5sZXQgZGVidWdfcHJpbnRfY2F1c2FsIGYgaSA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBpID0gYXRvbV90ZXN0ZWQgdGhlblxuICAgICAgIFwidGVzdGVkXCJcbiAgICAgZWxzZSBpZiBpID0gYXRvbV9tb2RpZmllZCB0aGVuXG4gICAgICAgXCJtb2RpZmllZFwiXG4gICAgIGVsc2UgaWYgaSA9IGF0b21fdGVzdGVkIGxvciBhdG9tX21vZGlmaWVkIHRoZW5cbiAgICAgICBcInRlc3RlZCZtb2RpZmllZFwiXG4gICAgIGVsc2VcbiAgICAgICBcIkNBVVNBTCBJTVBBQ1QgVU5ERUZJTkVEXCIpXG5cbmxldCBkZWJ1Z19wcmludF9hdG9tIGYgYSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJ7IyVpOiAlYSAlYX1cIiBhLmVpZCBkZWJ1Z19wcmludF9jYXVzYWwgYS5jYXVzYWxfaW1wYWN0XG4gICAgKHByaW50X2V2ZW50X2tpbmQgP2VudjpOb25lKVxuICAgIGEua2luZFxuXG5sZXQgZGVidWdfcHJpbnRfZ3JpZCBmIGcgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj5GbG93OkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWkuJWklczpALCVhQF1ALFwiIG5vZGVfaWQgc2l0ZV9pZFxuICAgICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICAgXCJ+XCJcbiAgICAgICAgICAgZWxzZSBpZiBxID0gMSB0aGVuXG4gICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJVTkRFRklORURcIilcbiAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBkZWJ1Z19wcmludF9hdG9tKVxuICAgICAgICAgIGwpXG4gICAgICBnLmZsb3dcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBdQC5cIlxuXG5sZXQgZW1wdHlfZ3JpZCAoKSA9XG4gIHtcbiAgICBmbG93ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIHBpZF90b19pbml0ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIG9icyA9IFtdO1xuICAgIGluaXRfdGJsID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIGluaXRfdG9fZWlkbWF4ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICB9XG5cbmxldCBidWlsZF9zdWJzIGwgPVxuICBzbmRcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIChuLCBtYXApIGEgLT4gc3VjYyBuLCBNb2RzLkludE1hcC5hZGQgYSBuIG1hcClcbiAgICAgICAoMSwgTW9kcy5JbnRNYXAuZW1wdHkpIGwpXG5cbmxldCBzdWJtYXAgc3VicyBsIG0gZGVmYXVsdCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBtJyBhIC0+XG4gICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhIHN1YnMgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBTb21lIG5ld19hIC0+XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBuZXdfYVxuICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhIG0gd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgIHwgU29tZSBhIC0+IGEpKVxuICAgICAgICAgIG0nKVxuICAgIE1vZHMuSW50TWFwLmVtcHR5IGxcblxubGV0IGFkZF9pbml0X3BpZCBlaWQgcGlkIGdyaWQgPVxuICBsZXQgZWlkX2luaXQgPSBIYXNodGJsLmZpbmQgZ3JpZC5waWRfdG9faW5pdCBwaWQgaW5cbiAgbGV0IG9sZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBncmlkLmluaXRfdGJsIGVpZCB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludFNldC5lbXB0eVxuICBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgZ3JpZC5pbml0X3RibCBlaWQgKE1vZHMuSW50U2V0LmFkZCBlaWRfaW5pdCBvbGQpIGluXG4gIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBncmlkLmluaXRfdG9fZWlkbWF4IGVpZF9pbml0IGVpZCBpblxuICBncmlkXG5cbmxldCBfc3Vic2V0IHN1YnMgbCBzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIHMnIGEgLT5cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBhIHMgdGhlblxuICAgICAgICBNb2RzLkludFNldC5hZGRcbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBzdWJzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICBzJ1xuICAgICAgZWxzZVxuICAgICAgICBzJylcbiAgICBNb2RzLkludFNldC5lbXB0eSBsXG5cbmxldCBzdWJjb25maWdfd2l0aF9zdWJzIHN1YnMgY29uZmlnIGwgPVxuICB7XG4gICAgZXZlbnRzX2tpbmQgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5ldmVudHNfa2luZCBOb25lO1xuICAgIHByZWNfMSA9IHN1Ym1hcCBzdWJzIGwgY29uZmlnLnByZWNfMSAoU29tZSBNb2RzLkludFNldC5lbXB0eSk7XG4gICAgY29uZmxpY3QgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5jb25mbGljdCAoU29tZSBNb2RzLkludFNldC5lbXB0eSk7XG4gIH1cblxubGV0IHN1YmVucmljaGVkX2dyaWRfd2l0aF9zdWJzIHN1YnMgZ3JpZCBsID1cbiAgbGV0IGRlcHRoX29mX2V2ZW50ID0gc3VibWFwIHN1YnMgbCBncmlkLmRlcHRoX29mX2V2ZW50IChTb21lIDApIGluXG4gIGxldCBkZXB0aCA9IE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIC0+IG1heCkgZGVwdGhfb2ZfZXZlbnQgMCBpblxuICB7XG4gICAgcHJlY19zdGFyID0gZ3JpZC5wcmVjX3N0YXI7XG4gICAgY29uZmlnID0gc3ViY29uZmlnX3dpdGhfc3VicyBzdWJzIGdyaWQuY29uZmlnIGw7XG4gICAgZGVwdGhfb2ZfZXZlbnQ7XG4gICAgZGVwdGg7XG4gICAgc2l6ZSA9IExpc3QubGVuZ3RoIGw7XG4gIH1cblxubGV0IF9zdWJjb25maWcgY29uZmlnIGwgPSBzdWJjb25maWdfd2l0aF9zdWJzIChidWlsZF9zdWJzIGwpIGNvbmZpZyBsXG5sZXQgX3N1YmVucmljaGVkX2dyaWQgZ3JpZCBsID0gc3ViZW5yaWNoZWRfZ3JpZF93aXRoX3N1YnMgKGJ1aWxkX3N1YnMgbCkgZ3JpZCBsXG5sZXQgYWRkX29ic19laWQgZWlkIGdyaWQgPSB7IGdyaWQgd2l0aCBvYnMgPSBlaWQgOjogZ3JpZC5vYnMgfVxuXG5sZXQgZ3JpZF9maW5kIChub2RlX2lkLCBzaXRlX2lkLCBxdWFyaykgZ3JpZCA9XG4gIEhhc2h0YmwuZmluZCBncmlkLmZsb3cgKG5vZGVfaWQsIHNpdGVfaWQsIHF1YXJrKVxuXG5sZXQgX2lzX2VtcHR5X2dyaWQgZ3JpZCA9IEhhc2h0YmwubGVuZ3RoIGdyaWQuZmxvdyA9IDBcblxubGV0IGdyaWRfYWRkIHF1YXJrIGVpZCAoYXR0cmlidXRlIDogYXR0cmlidXRlKSBncmlkID1cbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKEhhc2h0YmwubWVtIGdyaWQuZmxvdyBxdWFyaykgdGhlblxuICAgICAgSGFzaHRibC5hZGQgZ3JpZC5waWRfdG9faW5pdCBxdWFyayBlaWRcbiAgaW5cbiAgSGFzaHRibC5yZXBsYWNlIGdyaWQuZmxvdyBxdWFyayBhdHRyaWJ1dGU7XG4gIGdyaWRcblxubGV0IF9sYXN0X2V2ZW50IGF0dHJpYnV0ZSA9XG4gIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGEgOjogXyAtPiBTb21lIGEuZWlkXG5cbigqYWRkcyBhdG9tIGEgdG8gYXR0cmlidXRlIGF0dC5cbiAgQ29sbGFwc2VzIGxhc3QgYXRvbSBpZiBpZiBiZWFycyB0aGUgc2FtZSBpZCBhcyBhIC0taW4gdGhlIGNhc2Ugb2YgYSBub24gYXRvbWljIGFjdGlvbiopXG5sZXQgcHVzaCAoYSA6IGF0b20pIChhdHQgOiBhdG9tIGxpc3QpID1cbiAgbWF0Y2ggYXR0IHdpdGhcbiAgfCBbXSAtPiBbIGEgXVxuICB8IGEnIDo6IGF0dCcgLT5cbiAgICBpZiBhJy5laWQgPSBhLmVpZCB0aGVuIChcbiAgICAgIGxldCAoKSA9IGFzc2VydCAoYScua2luZCA9IGEua2luZCkgaW5cbiAgICAgIHsgYScgd2l0aCBjYXVzYWxfaW1wYWN0ID0gYS5jYXVzYWxfaW1wYWN0IGxvciBhJy5jYXVzYWxfaW1wYWN0IH0gOjogYXR0J1xuICAgICkgZWxzZVxuICAgICAgYSA6OiBhdHRcblxuKCoqc2lkZV9lZmZlY3QgSW50MlNldC50OiBwYWlycyAoYWdlbnRzLHBvcnRzKSB0aGF0IGhhdmUgYmVlbiBmcmVlZCBhcyBhIHNpZGUgZWZmZWN0IC0tdmlhIGEgREVMIG9yIGEgRlJFRSBhY3Rpb24qKVxuKCpOQiBubyBpbnRlcm5hbCBzdGF0ZSBtb2RpZiBhcyBzaWRlIGVmZmVjdCopXG5cbigqbGV0IGltcGFjdCBpc19saW5rIGMgPVxuICBpZiBpc19saW5rIHRoZW5cbiAgICBpZiBQcmltaXRpdmVzLkNhdXNhbGl0eS5pc19saW5rX21vZGlmIGMgdGhlblxuICAgICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfbGlua190ZXN0ZWQgYyB0aGVuIGF0b21fdGVzdGVkbW9kaWZpZWQgZWxzZSBhdG9tX21vZGlmaWVkXG4gICAgZWxzZSBhdG9tX3Rlc3RlZFxuICBlbHNlICgqaW50ZXJuYWwgc3RhdGUqKVxuICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2ludGVybmFsX21vZGlmIGMgdGhlblxuICAgICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfaW50ZXJuYWxfdGVzdGVkIGMgdGhlbiBhdG9tX3Rlc3RlZG1vZGlmaWVkIGVsc2UgYXRvbV9tb2RpZmllZFxuICAgIGVsc2UgYXRvbV90ZXN0ZWRcbiopXG5sZXQgYWRkICgobm9kZV9pZCwgXyksIHNpdGVfaWQpIGlzX2xpbmsgdmEgZ3JpZCBldmVudF9udW1iZXIga2luZCA9XG4gIGxldCBxID1cbiAgICBpZiBpc19saW5rIHRoZW5cbiAgICAgIGF0b21fdGVzdGVkXG4gICAgZWxzZVxuICAgICAgMFxuICBpblxuICBsZXQgYXR0ID0gdHJ5IGdyaWRfZmluZCAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZ3JpZCB3aXRoIE5vdF9mb3VuZCAtPiBbXSBpblxuICBsZXQgYXR0ID1cbiAgICBwdXNoXG4gICAgICB7IGNhdXNhbF9pbXBhY3QgPSB2YTsgZWlkID0gZXZlbnRfbnVtYmVyOyBraW5kICgqOyBvYnNlcnZhdGlvbiA9IG9icyopIH1cbiAgICAgIGF0dFxuICBpblxuICBsZXQgZ3JpZCA9IGdyaWRfYWRkIChub2RlX2lkLCBzaXRlX2lkLCBxKSBldmVudF9udW1iZXIgYXR0IGdyaWQgaW5cbiAgYWRkX2luaXRfcGlkIGV2ZW50X251bWJlciAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZ3JpZFxuXG5sZXQgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgYWN0aW9ucyA9XG4gIGxldCByZWMgYXV4IGdyaWQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gZ3JpZFxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIDo6IHEgLT5cbiAgICAgIGF1eCAoYWRkIHNpdGUgZmFsc2UgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMikgOjogcSAtPlxuICAgICAgbGV0IGdyaWQnID0gYWRkIHNpdGUyIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICBhdXggKGFkZCBzaXRlMSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpIHFcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIF8pIDo6IHEgLT5cbiAgICAgIGF1eCAoYWRkIHNpdGUxIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgc2l0ZSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCAoIEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKF8sIG5hKSBhcyBhZyksIF8pXG4gICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoXywgbmEpIGFzIGFnKSApXG4gICAgICA6OiBxIC0+XG4gICAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgICBsZXQgYWdfaW50ZiA9IFNpZ25hdHVyZS5nZXQgc2lncyBuYSBpblxuICAgICAgbGV0IGdyaWQgPSBhZGQgKGFnLCAtMSkgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgaW5cbiAgICAgIGxldCBncmlkID1cbiAgICAgICAgU2lnbmF0dXJlLmZvbGRcbiAgICAgICAgICAoZnVuIHNpdGUgXyBncmlkIC0+XG4gICAgICAgICAgICBsZXQgZ3JpZCcgPVxuICAgICAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBuYSBzaXRlIHNpZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZ3JpZFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgIGFkZCAoYWcsIHNpdGUpIGZhbHNlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFkZCAoYWcsIHNpdGUpIHRydWUgYXRvbV9tb2RpZmllZCBncmlkJyBldmVudF9udW1iZXIga2luZClcbiAgICAgICAgICBncmlkIGFnX2ludGZcbiAgICAgIGluXG4gICAgICBhdXggZ3JpZCBxXG4gIGluXG4gIGF1eCBncmlkIGFjdGlvbnNcblxubGV0IGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciBraW5kIHRlc3RzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBncmlkIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWcgLT5cbiAgICAgICAgIGFkZCAoYWcsIC0xKSB0cnVlIGF0b21fdGVzdGVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgYWRkIHNpdGUgZmFsc2UgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNpdGVcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc2l0ZVxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKSAtPlxuICAgICAgICAgYWRkIHNpdGUgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICBsZXQgZ3JpZCcgPSBhZGQgc2l0ZTIgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICAgICBhZGQgc2l0ZTEgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkJyBldmVudF9udW1iZXIga2luZCkpXG4gICAgZ3JpZCB0ZXN0c1xuXG5sZXQgcmVjb3JkIChraW5kLCBldmVudCwgXykgZXZlbnRfbnVtYmVyIGVudiBncmlkID1cbiAgbGV0IGdyaWQgPVxuICAgIGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkgZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICBpblxuICBsZXQgZ3JpZCA9XG4gICAgYWRkX3Rlc3RzIGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKVxuICAgICAgWyBldmVudC5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyBdXG4gIGluXG4gIGxldCBncmlkID1cbiAgICBhZGRfYWN0aW9ucyBlbnYgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIGtpbmQpIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gZ3JpZCBzaXRlIC0+XG4gICAgICBhZGRcbiAgICAgICAgKGZzdCBzaXRlLCAtMSlcbiAgICAgICAgdHJ1ZSBhdG9tX3Rlc3RlZFxuICAgICAgICAoYWRkIHNpdGUgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSlcbiAgICAgICAgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSlcbiAgICBncmlkIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuXG5sZXQgcmVjb3JkX29icyAoa2luZCwgdGVzdHMsIF8pIHNpZGVfZWZmZWN0cyBldmVudF9udW1iZXIgZ3JpZCA9XG4gIGxldCBncmlkID0gYWRkX29ic19laWQgZXZlbnRfbnVtYmVyIGdyaWQgaW5cbiAgbGV0IGdyaWQgPSBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIgKE9CUyBraW5kKSB0ZXN0cyBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gZ3JpZCBzaXRlIC0+IGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciAoT0JTIGtpbmQpKVxuICAgIGdyaWQgc2lkZV9lZmZlY3RzXG5cbmxldCByZWNvcmRfaW5pdCAobGJsLCBhY3Rpb25zKSBldmVudF9udW1iZXIgZW52IGdyaWQgPVxuICBhZGRfYWN0aW9ucyBlbnYgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIChUcmFjZS5JTklUIGxibCkpIGFjdGlvbnNcblxubGV0IGFkZF9wcmVkIGVpZCBhdG9tIGNvbmZpZyA9XG4gIGxldCBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY29uZmlnLmV2ZW50c19raW5kIGluXG4gIGxldCBwcmVkX3NldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBlaWQgY29uZmlnLnByZWNfMSBpblxuICBsZXQgcHJlY18xID1cbiAgICBNb2RzLkludE1hcC5hZGQgZWlkIChNb2RzLkludFNldC5hZGQgYXRvbS5laWQgcHJlZF9zZXQpIGNvbmZpZy5wcmVjXzFcbiAgaW5cbiAgeyBjb25maWcgd2l0aCBwcmVjXzE7IGV2ZW50c19raW5kIH1cblxubGV0IGFkZF9jb25mbGljdCBlaWQgYXRvbSBjb25maWcgPVxuICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICBsZXQgY2ZsY3Rfc2V0ID1cbiAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZWlkIGNvbmZpZy5jb25mbGljdFxuICBpblxuICBsZXQgY2ZsY3QgPVxuICAgIE1vZHMuSW50TWFwLmFkZCBlaWQgKE1vZHMuSW50U2V0LmFkZCBhdG9tLmVpZCBjZmxjdF9zZXQpIGNvbmZpZy5jb25mbGljdFxuICBpblxuICB7IGNvbmZpZyB3aXRoIGNvbmZsaWN0ID0gY2ZsY3Q7IGV2ZW50c19raW5kIH1cblxubGV0IHJlYyBwYXJzZV9hdHRyaWJ1dGUgbGFzdF9tb2RpZiBsYXN0X3Rlc3RlZCBhdHRyaWJ1dGUgY29uZmlnID1cbiAgbWF0Y2ggYXR0cmlidXRlIHdpdGhcbiAgfCBbXSAtPiBjb25maWdcbiAgfCBhdG9tIDo6IGF0dCAtPlxuICAgIGxldCBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY29uZmlnLmV2ZW50c19raW5kIGluXG4gICAgbGV0IHByZWNfMSA9XG4gICAgICBsZXQgcHJlZHMgPVxuICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgYXRvbS5laWQgY29uZmlnLnByZWNfMVxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBwcmVkcyBjb25maWcucHJlY18xXG4gICAgaW5cbiAgICBsZXQgY29uZmlnID0geyBjb25maWcgd2l0aCBldmVudHNfa2luZDsgcHJlY18xIH0gaW5cbiAgICAoKmF0b20gaGFzIGEgbW9kaWZpY2F0aW9uKilcbiAgICBpZlxuICAgICAgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV9tb2RpZmllZFxuICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNvbmZpZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBjb25maWcgcHJlZF9pZCAtPiBhZGRfcHJlZCBwcmVkX2lkIGF0b20gY29uZmlnKVxuICAgICAgICAgIGNvbmZpZyBsYXN0X3Rlc3RlZFxuICAgICAgaW5cbiAgICAgIGxldCB0ZXN0ZWQgPVxuICAgICAgICBpZlxuICAgICAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkXG4gICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWQgbG9yIGF0b21fbW9kaWZpZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgIFsgYXRvbS5laWQgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgW11cbiAgICAgIGluXG4gICAgICBwYXJzZV9hdHRyaWJ1dGUgKFNvbWUgYXRvbS5laWQpIHRlc3RlZCBhdHQgY29uZmlnXG4gICAgKSBlbHNlIChcbiAgICAgICgqIGF0b20gaXMgYSBwdXJlIHRlc3QqKVxuICAgICAgbGV0IGNvbmZpZyA9XG4gICAgICAgIG1hdGNoIGxhc3RfbW9kaWYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY29uZmlnXG4gICAgICAgIHwgU29tZSBlaWQgLT5cbiAgICAgICAgICBhZGRfY29uZmxpY3QgZWlkIGF0b21cbiAgICAgICAgICAgIGNvbmZpZyAoKmFkZGluZyBjb25mbGljdCB3aXRoIGxhc3QgbW9kaWZpY2F0aW9uKilcbiAgICAgIGluXG4gICAgICBwYXJzZV9hdHRyaWJ1dGUgbGFzdF9tb2RpZiAoYXRvbS5laWQgOjogbGFzdF90ZXN0ZWQpIGF0dCBjb25maWdcbiAgICApXG5cbmxldCBjdXQgPyh3aXRoX3JlZHVjdGlvbiA9IHRydWUpIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGF0dHJpYnV0ZV9pZHNcbiAgICBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5CdWlsZF9jb25maWd1cmF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IHJlYyBidWlsZF9jb25maWcgYXR0cmlidXRlX2lkcyBjZmcgPVxuICAgIG1hdGNoIGF0dHJpYnV0ZV9pZHMgd2l0aFxuICAgIHwgW10gLT4gY2ZnXG4gICAgfCAobm9kZV9pLCBzaXRlX2ksIHR5cGVfaSkgOjogdGwgLT5cbiAgICAgIGxldCBhdHRyaWJ1dGUgPVxuICAgICAgICB0cnkgZ3JpZF9maW5kIChub2RlX2ksIHNpdGVfaSwgdHlwZV9pKSBncmlkXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGludmFsaWRfYXJnIFwiQ2F1c2FsLmN1dFwiXG4gICAgICBpblxuICAgICAgbGV0IGNmZyA9XG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gICAgICAgIHwgW10gLT4gY2ZnXG4gICAgICAgIHwgYXRvbSA6OiBhdHQgLT5cbiAgICAgICAgICBsZXQgZXZlbnRzX2tpbmQgPVxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIGF0b20ua2luZCBjZmcuZXZlbnRzX2tpbmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVjXzEgPVxuICAgICAgICAgICAgbGV0IHByZWRzID1cbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGF0b20uZWlkIGNmZy5wcmVjXzFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgcHJlZHMgY2ZnLnByZWNfMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RlZCA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZFxuICAgICAgICAgICAgICB8fCBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFsgYXRvbS5laWQgXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vZGlmID1cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fbW9kaWZpZWRcbiAgICAgICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTb21lIGF0b20uZWlkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2F0dHJpYnV0ZSBtb2RpZiB0ZXN0ZWQgYXR0IHsgY2ZnIHdpdGggcHJlY18xOyBldmVudHNfa2luZCB9XG4gICAgICBpblxuICAgICAgYnVpbGRfY29uZmlnIHRsIGNmZ1xuICBpblxuICBsZXQgY2ZnID0gYnVpbGRfY29uZmlnIGF0dHJpYnV0ZV9pZHMgZW1wdHlfY29uZmlnIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5CdWlsZF9jb25maWd1cmF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgcmVkdWN0aW9uID1cbiAgICBpZiB3aXRoX3JlZHVjdGlvbiB0aGVuXG4gICAgICBHcmFwaF9jbG9zdXJlLnJlZHVjdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjZmcucHJlY18xXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjZmcucHJlY18xXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgeyBjZmcgd2l0aCBwcmVjXzEgPSByZWR1Y3Rpb24gfVxuXG5sZXQgcHBfYXRvbSBmIGF0b20gPVxuICBsZXQgaW1wX3N0ciA9XG4gICAgbWF0Y2ggYXRvbS5jYXVzYWxfaW1wYWN0IHdpdGhcbiAgICB8IDEgLT4gXCJvXCJcbiAgICB8IDIgLT4gXCJ4XCJcbiAgICB8IDMgLT4gXCIlXCJcbiAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJDYXVzYWwuc3RyaW5nX29mX2F0b21cIlxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXNfJWRcIiBpbXBfc3RyIGF0b20uZWlkXG5cbmxldCBfZHVtcCBncmlkIGZpYyA9XG4gIGxldCBkX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCAoRmlsZW5hbWUuY2hvcF9leHRlbnNpb24gZmljIF4gXCIudHh0XCIpIGluXG4gIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBkIDAgaW5cbiAgSGFzaHRibC5mb2xkXG4gICAgKGZ1biAobl9pZCwgc19pZCwgcSkgYXR0IF8gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGQgXCIjJWkuJWklYzolYUAsXCIgbl9pZCBzX2lkXG4gICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICd+J1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICAnIScpXG4gICAgICAgIChQcC5saXN0IFBwLmVtcHR5IHBwX2F0b20pIGF0dClcbiAgICBncmlkLmZsb3cgKCk7XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGQgXCJAXUAuXCIgaW5cbiAgY2xvc2Vfb3V0IGRfY2hhblxuXG5sZXQgaWRzX29mX2dyaWQgZ3JpZCA9IEhhc2h0YmwuZm9sZCAoZnVuIGtleSBfIGwgLT4ga2V5IDo6IGwpIGdyaWQuZmxvdyBbXVxubGV0IGNvbmZpZ19vZl9ncmlkID0gY3V0XG5cbigqbGV0IHByZWNfc3Rhcl9vZl9jb25maWdfb2xkICBjb25maWcgPVxuICBsZXQgcmVjIHByZWNfY2xvc3VyZSBjb25maWcgdG9kbyBhbHJlYWR5X2RvbmUgY2xvc3VyZSA9XG4gICAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgdG9kbyB0aGVuIGNsb3N1cmVcbiAgICBlbHNlXG4gICAgICBsZXQgZWlkID0gTW9kcy5JbnRTZXQuY2hvb3NlIHRvZG8gaW5cbiAgICAgIGxldCB0b2RvJyA9IE1vZHMuSW50U2V0LnJlbW92ZSBlaWQgdG9kbyBpblxuICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGVpZCBhbHJlYWR5X2RvbmVcbiAgICAgIHRoZW5cbiAgICAgICAgcHJlY19jbG9zdXJlIGNvbmZpZyB0b2RvJyBhbHJlYWR5X2RvbmUgY2xvc3VyZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcHJlYyA9IHRyeSBJbnRNYXAuZmluZCBlaWQgY29uZmlnLnByZWNfMSB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludFNldC5lbXB0eVxuICAgICAgICBpblxuICAgICAgcHJlY19jbG9zdXJlIGNvbmZpZyAoSW50U2V0LnVuaW9uIHRvZG8nIHByZWMpIChJbnRTZXQuYWRkIGVpZCBhbHJlYWR5X2RvbmUpIChJbnRTZXQudW5pb24gcHJlYyBjbG9zdXJlKVxuICBpblxuICBJbnRNYXAuZm9sZFxuICAgIChmdW4gZWlkIGtpbmQgcHJlY19zdGFyIC0+XG4gICAgICBsZXQgc2V0ID0gcHJlY19jbG9zdXJlIGNvbmZpZyAoSW50U2V0LnNpbmdsZXRvbiBlaWQpIE1vZHMuSW50U2V0LmVtcHR5IE1vZHMuSW50U2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgSW50TWFwLmFkZCBlaWQgc2V0IHByZWNfc3RhclxuICAgICkgY29uZmlnLmV2ZW50cyBJbnRNYXAuZW1wdHkgKilcblxubGV0IHByZWNfc3Rhcl9vZl9jb25maWcgPSBHcmFwaF9jbG9zdXJlLmNsb3N1cmVcblxubGV0IGRlcHRoX2FuZF9zaXplX29mX2V2ZW50IGNvbmZpZyA9XG4gIE1vZHMuSW50TWFwLmZvbGRcbiAgICAoZnVuIGVpZCBwcmVjX2VpZHMgKGVtYXAsIF8pIC0+XG4gICAgICBsZXQgZCA9XG4gICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAoZnVuIGVpZCcgZCAtPlxuICAgICAgICAgICAgbGV0IGQnID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IDAgZWlkJyBlbWFwIGluXG4gICAgICAgICAgICBtYXggKGQnICsgMSkgZClcbiAgICAgICAgICBwcmVjX2VpZHMgMFxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBlaWQgZCBlbWFwLCBkKVxuICAgIGNvbmZpZy5wcmVjXzEgKE1vZHMuSW50TWFwLmVtcHR5LCAwKVxuXG5sZXQgZW5yaWNoX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY29uZmlnX2Nsb3N1cmUgZ3JpZCA9XG4gIGxldCBrZWVwX2wgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYSBiIC0+IE1vZHMuSW50U2V0LmFkZCBiIGEpIE1vZHMuSW50U2V0LmVtcHR5IGdyaWQub2JzXG4gIGluXG4gIGxldCB0b19rZWVwIGkgPSBNb2RzLkludFNldC5tZW0gaSBrZWVwX2wgaW5cbiAgbGV0IGlkcyA9IGlkc19vZl9ncmlkIGdyaWQgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uZmlnID1cbiAgICBjb25maWdfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHMgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVjX3N0YXIgPVxuICAgIHByZWNfc3Rhcl9vZl9jb25maWcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIChTb21lIFN0b3J5UHJvZmlsaW5nLlRyYW5zaXRpdmVfY2xvc3VyZSkgY29uZmlnX2Nsb3N1cmUgY29uZmlnLnByZWNfMVxuICAgICAgdG9fa2VlcFxuICBpblxuICBsZXQgZGVwdGhfb2ZfZXZlbnQsIGRlcHRoID0gZGVwdGhfYW5kX3NpemVfb2ZfZXZlbnQgY29uZmlnIGluXG4gICggZXJyb3IsXG4gICAgbG9nX2luZm8sXG4gICAge1xuICAgICAgY29uZmlnO1xuICAgICAgcHJlY19zdGFyO1xuICAgICAgZGVwdGg7XG4gICAgICBkZXB0aF9vZl9ldmVudDtcbiAgICAgIHNpemUgPSBNb2RzLkludE1hcC5zaXplIGNvbmZpZy5wcmVjXzE7XG4gICAgfSApXG5cbmxldCBmb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlXG4gICAgZ3JpZCBmIGEgPVxuICBsZXQga2VlcF9sID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhKSBNb2RzLkludFNldC5lbXB0eSBncmlkLm9ic1xuICBpblxuICBsZXQgdG9fa2VlcCBpID0gTW9kcy5JbnRTZXQubWVtIGkga2VlcF9sIGluXG4gIGxldCBpZHMgPSBpZHNfb2ZfZ3JpZCBncmlkIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmZpZyA9XG4gICAgY29uZmlnX29mX2dyaWQgfndpdGhfcmVkdWN0aW9uOmZhbHNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkc1xuICAgICAgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIEdyYXBoX2Nsb3N1cmUuY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgKFNvbWUgU3RvcnlQcm9maWxpbmcuQ29sbGVjdF90cmFjZXMpIGNvbmZpZ19jbG9zdXJlIGNvbmZpZy5wcmVjXzEgdG9fa2VlcCBmXG4gICAgYVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgPSBmdW5jdGlvblxuICB8IE9CUyBuYW1lIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJXNcXFwiLCBzdHlsZT1maWxsZWQsIGZpbGxjb2xvcj1yZWRdXCIgbmFtZVxuICB8IEVWRU5UIGUgLT4gVHJhY2UucHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgZVxuXG5sZXQgZG90X29mX2dyaWQgcHJvZmlsaW5nIGVudiBlbnJpY2hlZF9ncmlkIGZvcm0gPVxuICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gIGxldCBjb25maWcgPSBlbnJpY2hlZF9ncmlkLmNvbmZpZyBpblxuICBsZXQgcHJlY19zdGFyID0gZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIgaW5cbiAgbGV0IGRlcHRoX29mX2V2ZW50ID0gZW5yaWNoZWRfZ3JpZC5kZXB0aF9vZl9ldmVudCBpblxuICBsZXQgc29ydGVkX2V2ZW50cyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgZCBkbWFwIC0+XG4gICAgICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZCBkbWFwIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBkIChNb2RzLkludFNldC5hZGQgZWlkIHNldCkgZG1hcClcbiAgICAgIGRlcHRoX29mX2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PiV0QCxkaWdyYXBoIEd7QCwgcmFua3NlcD0uNSA7QCxcIiBwcm9maWxpbmc7XG4gIE1vZHMuSW50TWFwLml0ZXJcbiAgICAoZnVuIGQgZWlkc19hdF9kIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8aHY+eyByYW5rID0gc2FtZSA7IFxcXCIlZFxcXCIgW3NoYXBlPXBsYWludGV4dF0gO0AsXCIgZDtcbiAgICAgIE1vZHMuSW50U2V0Lml0ZXJcbiAgICAgICAgKGZ1biBlaWQgLT5cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgY29uZmlnLmV2ZW50c19raW5kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBTb21lIGF0b21fa2luZCAtPlxuICAgICAgICAgICAgaWYgZWlkIDw+IDAgdGhlblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwibm9kZV8lZCAlYSA7QCxcIiBlaWRcbiAgICAgICAgICAgICAgICAocHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52KVxuICAgICAgICAgICAgICAgIGF0b21fa2luZFxuICAgICAgICAgICgqIExpc3QuaXRlciAoZnVuIG9icyAtPiBmcHJpbnRmIGRlc2MgXCJvYnNfJWQgW2xhYmVsID1cXFwiJXNcXFwiLCBzdHlsZT1maWxsZWQsIGZpbGxjb2xvcj1yZWRdIDtcXG4gbm9kZV8lZCAtPiBvYnNfJWQgW2Fycm93aGVhZD12ZWVdO1xcblwiIGVpZCBvYnMgZWlkIGVpZCkgYXRvbS5vYnNlcnZhdGlvbiA7KikpXG4gICAgICAgIGVpZHNfYXRfZDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJ9QF1ALFwiKVxuICAgIHNvcnRlZF9ldmVudHM7XG4gIGxldCBjcHQgPSByZWYgMCBpblxuICB3aGlsZSAhY3B0ICsgMSA8IE1vZHMuSW50TWFwLnNpemUgc29ydGVkX2V2ZW50cyBkb1xuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWRcXFwiIC0+IFxcXCIlZFxcXCIgW3N0eWxlPVxcXCJpbnZpc1xcXCJdO0AsXCIgIWNwdCAoIWNwdCArIDEpO1xuICAgIGNwdCA6PSAhY3B0ICsgMVxuICBkb25lO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBlaWQgcHJlZF9zZXQgLT5cbiAgICAgIGlmIGVpZCA8PiAwIHRoZW5cbiAgICAgICAgTW9kcy5JbnRTZXQuaXRlclxuICAgICAgICAgIChmdW4gZWlkJyAtPlxuICAgICAgICAgICAgaWYgZWlkJyA9IDAgdGhlblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwibm9kZV8lZCAtPiBub2RlXyVkQCxcIiBlaWQnIGVpZClcbiAgICAgICAgICBwcmVkX3NldClcbiAgICBjb25maWcucHJlY18xO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBlaWQgY2ZsY3Rfc2V0IC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgbGV0IHByZWMgPSB0cnkgKGZzdCBwcmVjX3N0YXIpLihlaWQpIHdpdGggXyAtPiBbXSBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZF9pbnZcbiAgICAgICAgICAgIChmdW4gZWlkJyBwcmVjIC0+XG4gICAgICAgICAgICAgIGxldCBib29sLCBwcmVjID1cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBwcmVjID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBoID0gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBoID4gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgYXV4IHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHByZWNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGF1eCBwcmVjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtXG4gICAgICAgICAgICAgICAgICAgIFwibm9kZV8lZCAtPiBub2RlXyVkIFtzdHlsZT1kb3R0ZWQsIGFycm93aGVhZCA9IHRlZV1AIFwiIGVpZFxuICAgICAgICAgICAgICAgICAgICBlaWQnXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHByZWMpXG4gICAgICAgICAgICBjZmxjdF9zZXQgcHJlY1xuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKSlcbiAgICBjb25maWcuY29uZmxpY3Q7XG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJ9QCxcIjtcbiAgRm9ybWF0LmZwcmludGYgZm9ybSBcIi8qQCwgRG90IGdlbmVyYXRpb24gdGltZTogJWZALCovQF1ALlwiIChTeXMudGltZSAoKSAtLiB0KVxuXG5sZXQganNfb2ZfZ3JpZCBlbnYgZW5yaWNoZWRfZ3JpZCBmID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIENyZWF0ZSBhIG5ldyBkaXJlY3RlZCBncmFwaEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGcgPSBuZXcgZGFncmVEMy5ncmFwaGxpYi5HcmFwaCgpLnNldEdyYXBoKHt9KTtALFwiXG4gIGluXG5cbiAgbGV0ICgpID1cbiAgICBQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLnNwYWNlXG4gICAgICAoZnVuIGYgKGVpZCwgYXRvbV9raW5kKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJnLnNldE5vZGUoJWksIHsgbGFiZWw6IFxcXCIlYVxcXCIsIHN0eWxlOiBcXFwiZmlsbDogJXNcXFwiIH0pO1wiIGVpZFxuICAgICAgICAgIChwcmludF9ldmVudF9raW5kIH5lbnYpIGF0b21fa2luZFxuICAgICAgICAgIChtYXRjaCBhdG9tX2tpbmQgd2l0aFxuICAgICAgICAgIHwgT0JTIF8gLT4gXCIjZjc3XCJcbiAgICAgICAgICB8IEVWRU5UIChUcmFjZS5JTklUIF8gfCBUcmFjZS5QRVJUIF8pIC0+IFwiIzdmN1wiXG4gICAgICAgICAgfCBFVkVOVCAoVHJhY2UuUlVMRSBfKSAtPiBcIiM3N2ZcIikpXG4gICAgICBmIGVucmljaGVkX2dyaWQuY29uZmlnLmV2ZW50c19raW5kXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLmVtcHR5XG4gICAgICAoZnVuIGYgKGVpZCwgc2V0KSAtPlxuICAgICAgICBQcC5zZXQgTW9kcy5JbnRTZXQuZWxlbWVudHMgfnRyYWlsaW5nOlBwLnNwYWNlIFBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBmIGVpZCcgLT4gRm9ybWF0LmZwcmludGYgZiBcImcuc2V0RWRnZSglaSwlaSx7fSk7XCIgZWlkJyBlaWQpXG4gICAgICAgICAgZiBzZXQpXG4gICAgICBmIGVucmljaGVkX2dyaWQuY29uZmlnLnByZWNfMVxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBzdmcgPSBkMy5zZWxlY3QoXFxcInN2Z1xcXCIpLGlubmVyID0gc3ZnLnNlbGVjdChcXFwiZ1xcXCIpO0AsXCJcbiAgaW5cblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gU2V0IHVwIHpvb20gc3VwcG9ydEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIHpvb20gPSBkMy5iZWhhdmlvci56b29tKCkub24oXFxcInpvb21cXFwiLCBmdW5jdGlvbigpIHtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJpbm5lci5hdHRyKFxcXCJ0cmFuc2Zvcm1cXFwiLCBcXFwidHJhbnNsYXRlKFxcXCIgKyBkMy5ldmVudC50cmFuc2xhdGUgKyBcXFwiKVxcXCIgK0AsXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIlxcXCJzY2FsZShcXFwiICsgZDMuZXZlbnQuc2NhbGUgKyBcXFwiKVxcXCIpO0AsfSk7QCxzdmcuY2FsbCh6b29tKTtcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLy8gQ3JlYXRlIHRoZSByZW5kZXJlckAsIHZhciByZW5kZXIgPSBuZXcgZGFncmVEMy5yZW5kZXIoKTtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCIvLyBSdW4gdGhlIHJlbmRlcmVyLiBUaGlzIGlzIHdoYXQgZHJhd3MgdGhlIGZpbmFsIGdyYXBoLkAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInJlbmRlcihpbm5lciwgZyk7QCxcIiBpblxuXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDZW50ZXIgdGhlIGdyYXBoQCx2YXIgaW5pdGlhbFNjYWxlID0gMC43NTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ6b29tQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLnRyYW5zbGF0ZShbKHN2Zy5hdHRyKFxcXCJ3aWR0aFxcXCIpIC0gZy5ncmFwaCgpLndpZHRoICogaW5pdGlhbFNjYWxlKSAvIDIsIFxcXG4gICAgICAgMjBdKUAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5zY2FsZShpbml0aWFsU2NhbGUpQCwuZXZlbnQoc3ZnKTtALFwiIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJzdmcuYXR0cignaGVpZ2h0JywgZy5ncmFwaCgpLmhlaWdodCAqIGluaXRpYWxTY2FsZSArIDQwKTtcIlxuXG5sZXQgaHRtbF9vZl9ncmlkIHByb2ZpbGluZyBjb21wcmVzc2lvbl90eXBlIGNwdCBlbnYgZW5yaWNoZWRfZ3JpZCA9XG4gIGxldCB0aXRsZSBmID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMgY29tcHJlc3NlZCBzdG9yeSBudW1iZXIgJWlcIiBjb21wcmVzc2lvbl90eXBlIGNwdFxuICBpblxuICBQcF9odG1sLmdyYXBoX3BhZ2UgdGl0bGVcbiAgICBbXG4gICAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52My5taW4uanNcIjtcbiAgICAgIFwiaHR0cDovL2NwZXR0aXR0LmdpdGh1Yi5pby9wcm9qZWN0L2RhZ3JlLWQzL2xhdGVzdC9kYWdyZS1kMy5taW4uanNcIjtcbiAgICBdXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZHQge2Zsb2F0OiBsZWZ0OyBjbGVhcjogbGVmdDsgd2lkdGg6IDIwZW07fUAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZGQge2ZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW46IDAgMCAwIDIxZW07fUAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLm5vZGUgcmVjdCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjZmZmO31ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCIuZWRnZVBhdGggcGF0aCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O31cIlxuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAsPC9zdHlsZT5cIilcbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3ZnIHdpZHRoPVxcXCI5NjBcXFwiPjxnPjwvZz48L3N2Zz5ALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHA+QFsldEBdPC9wPkAsXCIgcHJvZmlsaW5nIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwldEBdQCw8L3NjcmlwdD5cIlxuICAgICAgICAoanNfb2ZfZ3JpZCBlbnYgZW5yaWNoZWRfZ3JpZCkpXG5cbmxldCBjaGVja19jcmVhdGVfcXVhcmtzIGFpZCBzaXRlcyBxdWFya3MgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuIChzaXRlLCBpbnRlcm5hbCkgLT5cbiAgICAgIG1hdGNoIGludGVybmFsIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAwKSkgcXVhcmtzXG4gICAgICAgICYmIExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAxKSkgcXVhcmtzXG4gICAgICB8IE5vbmUgLT4gTGlzdC5tZW0gKGF0b21fbW9kaWZpZWQsIChhaWQsIHNpdGUsIDEpKSBxdWFya3MpXG4gICAgc2l0ZXNcblxubGV0IGNoZWNrX21vZGlmaWVkX3F1YXJrcyAoKGFpZCwgXyksIHNpdGUpIG1vZGlmIHF1YXJrcyA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoYywgKG4sIHMsIG0pKSAtPlxuICAgICAgKGMgPSBhdG9tX21vZGlmaWVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKVxuICAgICAgJiYgbiA9IGFpZCAmJiBzID0gc2l0ZSAmJiBtID0gbW9kaWYpXG4gICAgcXVhcmtzXG5cbmxldCBjaGVja190ZXN0ZWRfcXVhcmtzICgoYWlkLCBfKSwgc2l0ZSkgbW9kaWYgcXVhcmtzID1cbiAgTGlzdC5leGlzdHNcbiAgICAoZnVuIChjLCAobiwgcywgbSkpIC0+XG4gICAgICAoYyA9IGF0b21fdGVzdGVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKVxuICAgICAgJiYgbiA9IGFpZCAmJiBzID0gc2l0ZSAmJiBtID0gbW9kaWYpXG4gICAgcXVhcmtzXG5cbmxldCBjaGVja19ldmVudF9xdWFya3MgYWN0aW9ucyB0ZXN0cyBxdWFya3MgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChhaWQsIF8pLCBzaXRlcykgLT5cbiAgICAgICAgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBhc2l0ZSAtPiBjaGVja19tb2RpZmllZF9xdWFya3MgYXNpdGUgMSBxdWFya3NcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChhc2l0ZTEsIGFzaXRlMilcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChhc2l0ZTEsIGFzaXRlMikgLT5cbiAgICAgICAgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlMSAxIHF1YXJrc1xuICAgICAgICAmJiBjaGVja19tb2RpZmllZF9xdWFya3MgYXNpdGUyIDEgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChhc2l0ZSwgXykgLT5cbiAgICAgICAgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlIDAgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIChhaWQsIF8pIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAoYywgKG4sIF8sIF8pKSAtPlxuICAgICAgICAgICAgKGMgPSBhdG9tX21vZGlmaWVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKSAmJiBuID0gYWlkKVxuICAgICAgICAgIHF1YXJrcylcbiAgICBhY3Rpb25zXG4gICYmIExpc3QuZm9yX2FsbFxuICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSAoYWlkLCBfKSAtPlxuICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgIChmdW4gKGMsIChuLCBfLCBfKSkgLT5cbiAgICAgICAgICAgICAgIChjID0gYXRvbV90ZXN0ZWQgfHwgYyA9IGF0b21fdGVzdGVkbW9kaWZpZWQpICYmIG4gPSBhaWQpXG4gICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChhc2l0ZSwgXykgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZSAwIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgYXNpdGVcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBhc2l0ZVxuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKGFzaXRlLCBfKSAtPlxuICAgICAgICAgICBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlIDEgcXVhcmtzXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKGFzaXRlMSwgYXNpdGUyKSAtPlxuICAgICAgICAgICBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlMSAxIHF1YXJrc1xuICAgICAgICAgICAmJiBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlMiAxIHF1YXJrcykpXG4gICAgICAgdGVzdHNcblxubGV0IGxvZ19ldmVudCBpZCBxdWFya3MgZXZlbnRfa2luZCBzdGVwcyA9XG4gIG1hdGNoIGV2ZW50X2tpbmQgd2l0aFxuICB8IEVWRU5UIChUcmFjZS5JTklUIF8pIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWlkLCBfKSwgc2l0ZXMpIC0+XG4gICAgICAgICAgICAgICAgICBjaGVja19jcmVhdGVfcXVhcmtzIGFpZCBzaXRlcyBxdWFya3NcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5pdCBldmVudCBoYXMgYWN0aW9ucyBub3QgYWxsb3dlZFwiKSkpXG4gICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLlBlcnQgXyB8IFRyYWNlLk9icyBfIHwgVHJhY2UuU3VicyBfXG4gICAgICAgICAgfCBUcmFjZS5EdW1teSBfIC0+XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgc3RlcHNcbiAgICBpblxuICAgIGBMaXN0IFsgYEludCBpZDsgVHJhY2Uuc3RlcF90b195b2pzb24gc3RwIF1cbiAgfCBFVkVOVCAoVHJhY2UuUlVMRSByaWQpIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChyaWQnLCBlLCBfKSAtPlxuICAgICAgICAgICAgcmlkID0gcmlkJ1xuICAgICAgICAgICAgJiYgY2hlY2tfZXZlbnRfcXVhcmtzIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICAgICAgIChlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzIDo6IGUuSW5zdGFudGlhdGlvbi50ZXN0cylcbiAgICAgICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF9cbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgT0JTIF8gLT5cbiAgICBsZXQgc3RwID1cbiAgICAgIExpc3QuZmluZFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFRyYWNlLk9icyBfIC0+IHRydWVcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5SdWxlIF9cbiAgICAgICAgICB8IFRyYWNlLlBlcnQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgRVZFTlQgKFRyYWNlLlBFUlQgcGVydCkgLT5cbiAgICBsZXQgc3RwID1cbiAgICAgIExpc3QuZmluZFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFRyYWNlLlBlcnQgKHBlcnQnLCBlLCBfKSAtPlxuICAgICAgICAgICAgcGVydCA9IHBlcnQnXG4gICAgICAgICAgICAmJiBjaGVja19ldmVudF9xdWFya3MgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgICAgICAgKGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgOjogZS5JbnN0YW50aWF0aW9uLnRlc3RzKVxuICAgICAgICAgICAgICAgICBxdWFya3NcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLk9icyBfIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuRHVtbXkgX1xuICAgICAgICAgIHwgVHJhY2UuSW5pdCBfIC0+XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgc3RlcHNcbiAgICBpblxuICAgIGBMaXN0IFsgYEludCBpZDsgVHJhY2Uuc3RlcF90b195b2pzb24gc3RwIF1cblxubGV0IGpzb25fb2ZfZ3JpZCBlbnJpY2hlZF9ncmlkIGdyaWRfc3Rvcnkgc3RlcHMgPVxuICBsZXQgY29uZmlnID0gZW5yaWNoZWRfZ3JpZC5jb25maWcgaW5cbiAgbGV0IHByZWNfc3RhciA9IGVucmljaGVkX2dyaWQucHJlY19zdGFyIGluXG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IGVucmljaGVkX2dyaWQuZGVwdGhfb2ZfZXZlbnQgaW5cbiAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZSBpblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuaXRlclxuICAgICAgKGZ1biBxdWFyayBhdHRfbHMgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBhdG9tIC0+IEhhc2h0YmwuYWRkIHRibCBhdG9tLmVpZCAoYXRvbS5jYXVzYWxfaW1wYWN0LCBxdWFyaykpXG4gICAgICAgICAgYXR0X2xzKVxuICAgICAgZ3JpZF9zdG9yeS5mbG93XG4gIGluXG4gIGxldCBzb3J0ZWRfZXZlbnRzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGVpZCBkIGRtYXAgLT5cbiAgICAgICAgbGV0IHNldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBkIGRtYXAgaW5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGQgKE1vZHMuSW50U2V0LmFkZCBlaWQgc2V0KSBkbWFwKVxuICAgICAgZGVwdGhfb2ZfZXZlbnQgTW9kcy5JbnRNYXAuZW1wdHlcbiAgaW5cbiAgbGV0IG5vZGVfdG9fanNvbiBlaWQgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGVpZCBjb25maWcuZXZlbnRzX2tpbmQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IFNvbWUgYXRvbV9raW5kIC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgbGV0IHF1YXJrcyA9IEhhc2h0YmwuZmluZF9hbGwgdGJsIGVpZCBpblxuICAgICAgICBsb2dfZXZlbnQgZWlkIHF1YXJrcyBhdG9tX2tpbmQgc3RlcHNcbiAgICAgICkgZWxzZVxuICAgICAgICBgTnVsbFxuICBpblxuICBsZXQgbm9kZXNfdG9fbGlzdCA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBfIGVpZHNfYXRfZCBscyAtPlxuICAgICAgICBsZXQgbHMnJyA9IE1vZHMuSW50U2V0LmZvbGQgKGZ1biBlaWQgbHMnIC0+IGVpZCA6OiBscycpIGVpZHNfYXRfZCBbXSBpblxuICAgICAgICBscycnIEAgbHMpXG4gICAgICBzb3J0ZWRfZXZlbnRzIFtdXG4gIGluXG4gIGxldCBub2Rlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBub2RlX3RvX2pzb24gbm9kZXNfdG9fbGlzdCBpblxuICBsZXQgZWRnZV90b19qc29uIChlaWQsIGVpZCcpID0gYEFzc29jIFsgXCJmcm9tXCIsIGBJbnQgZWlkJzsgXCJ0b1wiLCBgSW50IGVpZCBdIGluXG4gIGxldCBwcmVjX2VkZ2VzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGVpZCBwcmVkX3NldCBscyAtPlxuICAgICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgICBsZXQgbHMnJyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gZWlkJyBscycgLT5cbiAgICAgICAgICAgICAgICBpZiBlaWQnID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICBscydcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAoZWlkLCBlaWQnKSA6OiBscycpXG4gICAgICAgICAgICAgIHByZWRfc2V0IFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBscycnIEAgbHNcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbHMpXG4gICAgICBjb25maWcucHJlY18xIFtdXG4gIGluXG4gIGxldCBwcmVjX2VkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvbiBwcmVjX2VkZ2VzIGluXG4gIGxldCBjb25mbF9lZGdlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgY2ZsY3Rfc2V0IGxzIC0+XG4gICAgICAgIGlmIGVpZCA8PiAwIHRoZW4gKFxuICAgICAgICAgIGxldCBwcmVjID0gdHJ5IChmc3QgcHJlY19zdGFyKS4oZWlkKSB3aXRoIF8gLT4gW10gaW5cbiAgICAgICAgICBsZXQgXywgbHMnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRfaW52XG4gICAgICAgICAgICAgIChmdW4gZWlkJyAocHJlYywgbHMnKSAtPlxuICAgICAgICAgICAgICAgIGxldCBib29sLCBwcmVjID1cbiAgICAgICAgICAgICAgICAgIGxldCByZWMgYXV4IHByZWMgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgaCA9IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIGggPiBlaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF1eCB0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGF1eCBwcmVjXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbHMnJyA9XG4gICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKGVpZCwgZWlkJykgOjogbHMnXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGxzJ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcHJlYywgbHMnJylcbiAgICAgICAgICAgICAgY2ZsY3Rfc2V0IChwcmVjLCBscylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxzJ1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBscylcbiAgICAgIGNvbmZpZy5jb25mbGljdCBbXVxuICBpblxuICBsZXQgY29uZmxfZWRnZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgZWRnZV90b19qc29uIGNvbmZsX2VkZ2VzIGluXG4gIChgQXNzb2NcbiAgICAgW1xuICAgICAgIFwibm9kZXNcIiwgbm9kZXNfdG9fanNvbjtcbiAgICAgICBcImNhdXNlXCIsIHByZWNfZWRnZXNfdG9fanNvbjtcbiAgICAgICBcImluaGliaXRcIiwgY29uZmxfZWRnZXNfdG9fanNvbjtcbiAgICAgXVxuICAgIDogWW9qc29uLkJhc2ljLnQpXG5cbigqc3RvcnlfbGlzdDpbKGtleV9pLGxpc3RfaSldIGV0IGxpc3RfaTpbKGdyaWQsXyxzaW1faW5mbyBvcHRpb24pLi4uXVxuICBldCBzaW1faW5mbzp7d2l0aCBzdG9yeV9pZDppbnQgc3RvcnlfdGltZTogZmxvYXQgOyBzdG9yeV9ldmVudDogaW50fSopXG5sZXQgcHJldHR5X3ByaW50IH5kb3RGb3JtYXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IGNvbmZpZ19jbG9zdXJlXG4gICAgY29tcHJlc3Npb25fdHlwZSBsYWJlbCBncmlkX2xpc3QgPVxuICBtYXRjaFxuICAgIExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gIHwgU29tZSBlcnJfZm10IC0+XG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBncmlkX2xpc3QgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgY29tcHJlc3Npb25fdHlwZSA9IFwiXCIgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBlcnJfZm10IFwiKyBQcmV0dHkgcHJpbnRpbmcgJWQgZmxvdyVzQC5cIiBuXG4gICAgICAgICAgKGlmIG4gPiAxIHRoZW5cbiAgICAgICAgICAgICBcInNcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJcIilcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZXJyX2ZtdCBcIisgUHJldHR5IHByaW50aW5nICVkICVzY29tcHJlc3NlZCBmbG93JXNALlwiIG5cbiAgICAgICAgICBsYWJlbFxuICAgICAgICAgIChpZiBuID4gMSB0aGVuXG4gICAgICAgICAgICAgXCJzXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgaW5cbiAgICBsZXQgY29tcHJlc3Npb25fdHlwZSA9XG4gICAgICBpZiBjb21wcmVzc2lvbl90eXBlID0gXCJcIiB0aGVuXG4gICAgICAgIFwibm9uZVwiXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXByZXNzaW9uX3R5cGVcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0b3J5X2xpc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0KSAoeiwgeCwgeSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB4ID1cbiAgICAgICAgICAgIGVucmljaF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKHosIHgsIHkpIDo6IGxpc3QpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIFtdKSBncmlkX2xpc3RcbiAgICBpblxuICAgIGxldCBzdG9yeV9saXN0ID0gTGlzdC5yZXYgc3RvcnlfbGlzdCBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gY3B0IChzdGVwcywgZW5yaWNoZWRfY29uZmlnLCBzdG9yaWVzKSAtPlxuICAgICAgICAgIGxldCBhdl90LCBpZHMsIG4gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoYXZfdCwgaWRzLCBuKSBpbmZvIC0+XG4gICAgICAgICAgICAgICAgKCBhdl90ICsuIGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUsXG4gICAgICAgICAgICAgICAgICBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA6OiBpZHMsXG4gICAgICAgICAgICAgICAgICBuICsgMSApKVxuICAgICAgICAgICAgICAoMC4sIFtdLCAwKSAoTGlzdC5yZXYgc3RvcmllcylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAoKmR1bXAgZ3JpZCBmaWMgc3RhdGUgZW52IDsgKilcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGRvdEZvcm1hdCA9IEpzb24gdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IF8sIGdyaWRfc3RvcnksIF8gPSBMaXN0Lm50aCBncmlkX2xpc3QgY3B0IGluXG4gICAgICAgICAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlXG4gICAgICAgICAgICAgICAgICBbIGNvbXByZXNzaW9uX3R5cGU7IHN0cmluZ19vZl9pbnQgY3B0IF1cbiAgICAgICAgICAgICAgICAgIFwiLmpzb25cIlxuICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCJcbiAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIChqc29uX29mX2dyaWQgZW5yaWNoZWRfY29uZmlnIGdyaWRfc3Rvcnkgc3RlcHMpKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGRvdEZvcm1hdCB3aXRoXG4gICAgICAgICAgICB8IERvdCB8IEpzb24gLT5cbiAgICAgICAgICAgICAgbGV0IHByb2ZpbGluZyBkZXNjID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiLyogQFtDb21wcmVzc2lvbiBvZiAlZCBjYXVzYWwgZmxvd3NcIiBuO1xuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJAIG9idGFpbmVkIGluIGF2ZXJhZ2UgYXQgJUUgdC51QF0gKi9ALFwiXG4gICAgICAgICAgICAgICAgICAoYXZfdCAvLiBmbG9hdF9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJAWy8qIENvbXByZXNzZWQgY2F1c2FsIGZsb3dzIHdlcmU6QCBbJWFdICovQF1cIlxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiO0AsXCIpXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgICAgICAgICAgICAgaWRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgIFsgY29tcHJlc3Npb25fdHlwZTsgc3RyaW5nX29mX2ludCBjcHQgXVxuICAgICAgICAgICAgICAgIFwiLmRvdFwiXG4gICAgICAgICAgICAgICAgKGRvdF9vZl9ncmlkIHByb2ZpbGluZyBlbnYgZW5yaWNoZWRfY29uZmlnKVxuICAgICAgICAgICAgfCBIdG1sIC0+XG4gICAgICAgICAgICAgIGxldCBwcm9maWxpbmcgZGVzYyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJAWzx2IDI+PGRsPkAsPGR0PkNvbXByZXNzaW9uIG9mPC9kdD48ZGQ+JWQgY2F1c2FsIGZsb3dzPC9kZD5cIlxuICAgICAgICAgICAgICAgICAgbjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjXG4gICAgICAgICAgICAgICAgICBcIkAsPGR0Pm9idGFpbmVkIGluIGF2ZXJhZ2UgYXQ8L2R0PjxkZD4lRSB0LnU8L2RkPkAsXCJcbiAgICAgICAgICAgICAgICAgIChhdl90IC8uIGZsb2F0X29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiPGR0PkNvbXByZXNzZWQgY2F1c2FsIGZsb3dzIHdlcmU6PC9kdD5cIjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQCA8ZGQ+W0BbJWFAXV08L2RkPkBdQCw8L2RsPlwiXG4gICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI7QCxcIilcbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICAgICAgICAgICAgICBpZHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlXG4gICAgICAgICAgICAgICAgWyBjb21wcmVzc2lvbl90eXBlOyBzdHJpbmdfb2ZfaW50IGNwdCBdXG4gICAgICAgICAgICAgICAgXCIuaHRtbFwiXG4gICAgICAgICAgICAgICAgKGh0bWxfb2ZfZ3JpZCBwcm9maWxpbmcgY29tcHJlc3Npb25fdHlwZSBjcHQgZW52IGVucmljaGVkX2NvbmZpZylcbiAgICAgICAgICBpblxuICAgICAgICAgIGNwdCArIDEpXG4gICAgICAgIDAgc3RvcnlfbGlzdFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIGRvdEZvcm1hdCB3aXRoXG4gICAgICB8IEpzb24gLT5cbiAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlIFsgY29tcHJlc3Npb25fdHlwZTsgXCJlbnZcIiBdIFwiLmpzb25cIlxuICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzQC5cIlxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoTW9kZWwudG9feW9qc29uIGVudikpKVxuICAgICAgfCBEb3QgfCBIdG1sIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBLYXBwYV9maWxlcy53aXRoX2NmbG93X2ZpbGUgWyBjb21wcmVzc2lvbl90eXBlOyBcIlN1bW1hcnlcIiBdIFwiLmRhdFwiXG4gICAgICAgIChmdW4gZm9ybSAtPlxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PiNpZFxcdEVcXHRUXFx0XFx0ZGVwdGhcXHRzaXplXFx0QCxcIiBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBQcC5saXN0aSBQcC5lbXB0eVxuICAgICAgICAgICAgICAoZnVuIGNwdCBmIChfLCBlbnJpY2hlZF9jb25maWcsIHN0b3J5KSAtPlxuICAgICAgICAgICAgICAgIGxldCBkZXB0aCA9IGVucmljaGVkX2NvbmZpZy5kZXB0aCBpblxuICAgICAgICAgICAgICAgIGxldCBzaXplID0gZW5yaWNoZWRfY29uZmlnLnNpemUgaW5cbiAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpXFx0JWlcXHQlRVxcdCVpXFx0JWlcXHRALFwiIGNwdCBldmVudCB0aW1lXG4gICAgICAgICAgICAgICAgICAgICAgZGVwdGggc2l6ZSlcbiAgICAgICAgICAgICAgICAgIHN0b3J5KVxuICAgICAgICAgICAgICBmb3JtIHN0b3J5X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAXUA/XCIpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm9cblxubGV0IHByaW50X3N0YXQgZiBfcGFyYW1ldGVyIF9oYW5kbGVyIGVucmljaGVkX2dyaWQgPVxuICBsZXQgY291bnRfb2JzID1cbiAgICBtYXRjaCBzbmQgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIgd2l0aFxuICAgIHwgR3JhcGhfY2xvc3VyZS5JbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudCAtPiBmdW4geCAtPiB4XG4gICAgfCBHcmFwaF9jbG9zdXJlLkRlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50IC0+IHN1Y2NcbiAgaW5cbiAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggKGZzdCBlbnJpY2hlZF9ncmlkLnByZWNfc3RhcikgaW5cbiAgbGV0IHJlYyBhdXggayBuX3N0ZXAgbG9uZ2VzdF9zdG9yeSBuX25vbmVtcHR5IGxlbmd0aF9zdW0gbGVuZ3RoX3NxdWFyZV9zdW0gPVxuICAgIGlmIGsgPj0gc2l6ZSB0aGVuXG4gICAgICBuX3N0ZXAsIGxvbmdlc3Rfc3RvcnksIG5fbm9uZW1wdHksIGxlbmd0aF9zdW0sIGxlbmd0aF9zcXVhcmVfc3VtXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2MgPSBMaXN0Lmxlbmd0aCAoQXJyYXkuZ2V0IChmc3QgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIpIGspIGluXG4gICAgICBsZXQgY2MnID1cbiAgICAgICAgaWYgY2MgPiAwIHRoZW5cbiAgICAgICAgICBjb3VudF9vYnMgY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNjXG4gICAgICBpblxuICAgICAgYXV4IChrICsgMSkgKG5fc3RlcCArIDEpIChtYXggbG9uZ2VzdF9zdG9yeSBjYycpXG4gICAgICAgIChpZiBjYyA+IDAgdGhlblxuICAgICAgICAgICBuX25vbmVtcHR5ICsgMVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBuX25vbmVtcHR5KVxuICAgICAgICAobGVuZ3RoX3N1bSArIGNjJylcbiAgICAgICAgKGxlbmd0aF9zcXVhcmVfc3VtICsgKGNjJyAqIGNjJykpXG4gICAgKVxuICBpblxuICBsZXQgbl9zdGVwLCBsb25nZXN0X3N0b3J5LCBuX25vbmVtcHR5LCBsZW5ndGhfc3VtLCBsZW5ndGhfc3F1YXJlX3N1bSA9XG4gICAgYXV4IDAgMCAwIDAgMCAwXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PlN0YXRzOkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBudW1iZXIgb2Ygc3RlcCAgIDogJWlALFwiIG5fc3RlcCBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiIGxvbmdlc3Qgc3RvcnkgICAgOiAlaUAsXCIgbG9uZ2VzdF9zdG9yeSBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgYXZlcmFnZSBsZW5ndGggICA6ICUuNGdALFwiXG4gICAgICAoZmxvYXQgbGVuZ3RoX3N1bSAvLiBmbG9hdCBuX25vbmVtcHR5KVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgZ2VvbWV0cmljIG1lYW4gICA6ICUuNGdALFwiXG4gICAgICAoc3FydCAoZmxvYXQgbGVuZ3RoX3NxdWFyZV9zdW0gLy4gZmxvYXQgbl9ub25lbXB0eSkpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAuXCJcbiIsInR5cGUgcHJlZGljYXRlX3ZhbHVlID1cbiAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBvZiBpbnRcbiAgfCBVbmRlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIG5vdCBleGlzdCB5ZXQgKilcbiAgfCBQcmVzZW50ICAoKiogZm9yIGFnZW50IHByZXNlbmNlICopXG4gIHwgRnJlZSAgKCoqIGZvciBiaW5kaW5nIHNpdGVzICopXG4gIHwgQm91bmRfdG8gb2YgaW50ICogSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICAgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuXG5tb2R1bGUgQSA9IE1vZHMuRHluQXJyYXlcblxudHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gIHwgSGVyZSBvZiBpbnRcbiAgfCBCb3VuZF9zaXRlIG9mIGludCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gIHwgSW50ZXJuYWxfc3RhdGUgb2YgaW50ICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxubGV0IHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyBwaSA9XG4gIG1hdGNoIHBpIHdpdGhcbiAgfCBIZXJlIGFnIC0+IFwiSGVyZSBcIiBeIHN0cmluZ19vZl9pbnQgYWdcbiAgfCBCb3VuZF9zaXRlIChhZywgcykgLT5cbiAgICBcIkJvdW5kX3N0YXRlIFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIFwiIF4gc3RyaW5nX29mX2ludCBzXG4gIHwgSW50ZXJuYWxfc3RhdGUgKGFnLCBzKSAtPlxuICAgIFwiSW50ZXJuYWxfc3RhdGUgXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgXCIgXiBzdHJpbmdfb2ZfaW50IHNcblxubW9kdWxlIFByZWRpY2F0ZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gcHJlZGljYXRlX2luZm9cblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50IGYgeCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHgpXG5lbmQpXG5cbm1vZHVsZSBQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVTZXRNYXAuTWFwXG5cbm1vZHVsZSBRUHJlZGljYXRlTWFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByZWRpY2F0ZU1hcC50IEEudFxuXG4gIGxldCBlbXB0eSBuID0gQS5tYWtlIG4gUHJlZGljYXRlTWFwLmVtcHR5XG4gIGxldCBpdGVyIGYgdCA9IEEuaXRlciAoUHJlZGljYXRlTWFwLml0ZXIgZikgdFxuXG4gIGxldCBoYXNoIHByZWRpY2F0ZSA9XG4gICAgbWF0Y2ggcHJlZGljYXRlIHdpdGhcbiAgICB8IEhlcmUgYWcgfCBCb3VuZF9zaXRlIChhZywgXykgfCBJbnRlcm5hbF9zdGF0ZSAoYWcsIF8pIC0+IGFnXG5cbiAgbGV0IGxpZnQgZiBwcmVkaWNhdGVfaWQgdGFiID0gZiBwcmVkaWNhdGVfaWQgKEEuZ2V0IHRhYiAoaGFzaCBwcmVkaWNhdGVfaWQpKVxuICBsZXQgZmluZF9kZWZhdWx0IGRlZiBwIHQgPSBsaWZ0IChQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IGRlZikgcCB0XG4gIGxldCBmaW5kX29wdGlvbiBwIHQgPSBsaWZ0IFByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwIHRcbiAgbGV0IG1lbSBwIHQgPSBsaWZ0IFByZWRpY2F0ZU1hcC5tZW0gcCB0XG5cbiAgbGV0IGFkZCBwcmVkaWNhdGVfaWQgeCB0YWIgPVxuICAgIGxldCBoYXNoID0gaGFzaCBwcmVkaWNhdGVfaWQgaW5cbiAgICBsZXQgb2xkID0gQS5nZXQgdGFiIGhhc2ggaW5cbiAgICBsZXQgXyA9IEEuc2V0IHRhYiBoYXNoIChQcmVkaWNhdGVNYXAuYWRkIHByZWRpY2F0ZV9pZCB4IG9sZCkgaW5cbiAgICB0YWJcblxuICBsZXQgcmVjeWNsZSB0YWIgaSA9IEEuc2V0IHRhYiBpIFByZWRpY2F0ZU1hcC5lbXB0eVxuZW5kXG5cbm1vZHVsZSBNUHJlZGljYXRlTWFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByZWRpY2F0ZU1hcC50XG5cbiAgbGV0IHByZWRpY2F0ZV9tYXggX3BhcmFtZXRlciBfaGFuZGxlciBpbmZvIGVycm9yIF9saXN0ID0gZXJyb3IsIGluZm8sIDBcbiAgbGV0IGVtcHR5IF9uID0gUHJlZGljYXRlTWFwLmVtcHR5XG4gIGxldCBpdGVyID0gUHJlZGljYXRlTWFwLml0ZXJcbiAgbGV0IGZpbmRfZGVmYXVsdCA9IFByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHRcbiAgbGV0IGZpbmRfb3B0aW9uID0gUHJlZGljYXRlTWFwLmZpbmRfb3B0aW9uXG4gIGxldCBtZW0gPSBQcmVkaWNhdGVNYXAubWVtXG4gIGxldCBhZGQgPSBQcmVkaWNhdGVNYXAuYWRkXG5lbmRcblxubW9kdWxlIENQcmVkaWNhdGVNYXAgPSBNUHJlZGljYXRlTWFwXG4iLCIoKipcbiAgKiBwcmlvcml0eS5tbFxuICAqXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTMtMDctMzAgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE5IDE0OjIxOjE5IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHNlbGVjdGlvbl9zdHJhdGVneSA9XG4gIHwgQWxsX3JlbWFpbmluZ19ldmVudHNcbiAgfCBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHNcbiAgfCBXaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50c1xuXG50eXBlIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cyB8IEVhcmx5X2V2ZW50c1xuXG50eXBlIGxldmVsID1cbiAgfCBIaWdoZXN0XG4gIHwgSGlnaFxuICB8IEFib3ZlX2F2ZXJhZ2VcbiAgfCBBdmVyYWdlXG4gIHwgQmVsbG93X2F2ZXJhZ2VcbiAgfCBMb3dcbiAgfCBMb3dlc3RcblxubGV0IHdlaWdodCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgSGlnaGVzdCAtPiAwXG4gIHwgSGlnaCAtPiAxXG4gIHwgQWJvdmVfYXZlcmFnZSAtPiAyXG4gIHwgQXZlcmFnZSAtPiAzXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gNFxuICB8IExvdyAtPiA1XG4gIHwgTG93ZXN0IC0+IDZcblxubGV0IF9jb21wYXJlX2xldmVsIGx2bDEgbHZsMiA9IGNvbXBhcmUgKHdlaWdodCBsdmwxKSAod2VpZ2h0IGx2bDIpXG5cbmxldCBtaW5fbGV2ZWwgYSBiID1cbiAgaWYgY29tcGFyZSBhIGIgPD0gMCB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgYlxuXG5sZXQgX21heF9sZXZlbCBhIGIgPVxuICBpZiBjb21wYXJlIGEgYiA8PSAwIHRoZW5cbiAgICBiXG4gIGVsc2VcbiAgICBhXG5cbmxldCBoaWdoZXN0ID0gSGlnaGVzdFxubGV0IGhpZ2ggPSBIaWdoXG5sZXQgYWJvdmVfYXZlcmFnZSA9IEFib3ZlX2F2ZXJhZ2VcbmxldCBhdmVyYWdlID0gQXZlcmFnZVxubGV0IGJlbGxvd19hdmVyYWdlID0gQmVsbG93X2F2ZXJhZ2VcbmxldCBsb3cgPSBMb3dcbmxldCBsb3dlc3QgPSBMb3dlc3RcblxubGV0IHN0cmluZ19vZl9sZXZlbCBsZXZlbCA9XG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCBIaWdoZXN0IC0+IFwiaGlnaGVzdFwiXG4gIHwgSGlnaCAtPiBcImhpZ2hcIlxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gXCJhYm92ZSBhdmVyYWdlXCJcbiAgfCBBdmVyYWdlIC0+IFwiYXZlcmFnZVwiXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gXCJiZWxsb3cgYXZlcmFnZVwiXG4gIHwgTG93IC0+IFwibG93XCJcbiAgfCBMb3dlc3QgLT4gXCJsb3dlc3RcIlxuXG5sZXQgbG93ZXIgbGV2ZWwgPVxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgSGlnaGVzdCAtPiBTb21lIEhpZ2hcbiAgfCBIaWdoIC0+IFNvbWUgQWJvdmVfYXZlcmFnZVxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gU29tZSBBdmVyYWdlXG4gIHwgQXZlcmFnZSAtPiBTb21lIEJlbGxvd19hdmVyYWdlXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gU29tZSBMb3dcbiAgfCBMb3cgLT4gU29tZSBMb3dlc3RcbiAgfCBMb3dlc3QgLT4gTm9uZVxuXG5sZXQgaGlnaGVyIGxldmVsID1cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IEhpZ2hlc3QgLT4gTm9uZVxuICB8IEhpZ2ggLT4gU29tZSBIaWdoZXN0XG4gIHwgQWJvdmVfYXZlcmFnZSAtPiBTb21lIEhpZ2hcbiAgfCBBdmVyYWdlIC0+IFNvbWUgQWJvdmVfYXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFNvbWUgQXZlcmFnZVxuICB8IExvdyAtPiBTb21lIEJlbGxvd19hdmVyYWdlXG4gIHwgTG93ZXN0IC0+IFNvbWUgTG93XG5cbm1vZHVsZSBMZXZlbFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV2ZWxcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50IGYgeCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RyaW5nX29mX2xldmVsIHgpXG5lbmQpXG5cbm1vZHVsZSBMZXZlbE1hcCA9IExldmVsU2V0TWFwLk1hcFxuXG50eXBlIHByaW9yaXRpZXMgPSB7XG4gIGNyZWF0aW9uOiBsZXZlbDtcbiAgdW5iaW5kaW5nOiBsZXZlbDtcbiAgcmVtb3ZhbDogbGV2ZWw7XG4gIG90aGVyX2V2ZW50czogbGV2ZWw7XG4gIHN1YnN0aXR1dGlvbjogbGV2ZWw7XG4gIHNpZGVfZWZmZWN0czogbGV2ZWw7XG4gIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzOiBzZWxlY3Rpb25fc3RyYXRlZ3k7XG4gIHRyeV90b19yZW1vdmVfZmlyc3Q6IHRyeV90b19yZW1vdmVfZmlyc3Q7XG59XG4oKiogZWFjaCBldmVudCBpcyBhc3NvY2lhdGVkIHdpdGggYSBsZXZlbCBjb3JyZXNwb25kaW5nIG9mIGl0cyBhY3Rpb25zIChpZiBtdWx0aXBsZSBhY3Rpb24sIHRoZW4sIHRoZSBsZWFzdCBjb3JyZXNwb25kaW5nIGxldmVsIGlzIHNlbGVjdGVkXG4gRXZlbnRzIHdpdGggdGhlIGxlYXN0IGxldmVsIG9mIHByaW9yaXR5IGFyZSByZW1vdmVkIGZpcnN0XG4gQW1vbmcgdGhlbSwgdGhlIGNob2ljZSBpcyBkcml2ZW4gYnkgdGhlIGZpZWxkcyAnY2FuZGlkYXRlX3NldF9vZl9ldmVudHMnIGFuZCAndHJ5X3RvX3JlbW92ZV9maXJzdCcgKilcblxubGV0IGNhdXNhbCA9XG4gIHtcbiAgICBjcmVhdGlvbiA9IEhpZ2hlc3Q7XG4gICAgdW5iaW5kaW5nID0gSGlnaGVzdDtcbiAgICByZW1vdmFsID0gSGlnaGVzdDtcbiAgICBvdGhlcl9ldmVudHMgPSBIaWdoZXN0O1xuICAgIHN1YnN0aXR1dGlvbiA9IEhpZ2hlc3Q7XG4gICAgc2lkZV9lZmZlY3RzID0gSGlnaGVzdDtcbiAgICBjYW5kaWRhdGVfc2V0X29mX2V2ZW50cyA9IFdpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cztcbiAgICB0cnlfdG9fcmVtb3ZlX2ZpcnN0ID0gTGF0ZV9ldmVudHM7XG4gIH1cblxubGV0IHdlYWsgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2hlc3Q7XG4gICAgcmVtb3ZhbCA9IEhpZ2hlc3Q7XG4gICAgb3RoZXJfZXZlbnRzID0gSGlnaGVzdDtcbiAgICBzdWJzdGl0dXRpb24gPSBIaWdoO1xuICAgIHNpZGVfZWZmZWN0cyA9IEhpZ2g7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCBzdHJvbmcgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2g7XG4gICAgcmVtb3ZhbCA9IEFib3ZlX2F2ZXJhZ2U7XG4gICAgb3RoZXJfZXZlbnRzID0gQXZlcmFnZTtcbiAgICBzdWJzdGl0dXRpb24gPSBCZWxsb3dfYXZlcmFnZTtcbiAgICBzaWRlX2VmZmVjdHMgPSBMb3c7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCBuX3N0b3J5ID0gcmVmIDFcbmxldCBuX2JyYW5jaCA9IHJlZiAxXG4iLCJ0eXBlIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFdlYWsgfCBTdHJvbmcgfCBDYXVzYWxcbnR5cGUgbmV3X3N0b3J5ID0geyBpZDogaW50OyBncmFwaDogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGggfVxudHlwZSBzdG9yeSA9IE5ldyBvZiBuZXdfc3RvcnkgfCBTYW1lX2FzIG9mIGludFxuXG50eXBlICdhIG9uZV9jb21wcmVzc2lvbiA9IHtcbiAgbG9nX2luZm86ICdhIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3Q7XG4gIHN0b3J5X21vZGU6IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZTtcbiAgc3Rvcnk6IHN0b3J5O1xufVxuXG5sZXQgc3RyaW5nX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0cmluZ1wiLCB4KSlcblxubGV0IGludF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IHMgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBpbnRcIiwgeCkpXG5cbmxldCBuZXdfc3RvcnlfdG9fanNvbiBuZXdfc3RvcnkgPVxuICBgQXNzb2NcbiAgICBbIFwiaWRcIiwgYEludCBuZXdfc3RvcnkuaWQ7IFwiZ3JhcGhcIiwgR3JhcGhfanNvbi50b19qc29uIG5ld19zdG9yeS5ncmFwaCBdXG5cbmxldCBuZXdfc3Rvcnlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGlkID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJpZFwiIGwpO1xuICAgICAgICAgZ3JhcGggPSBHcmFwaF9qc29uLm9mX2pzb24gKExpc3QuYXNzb2MgXCJncmFwaFwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5ldyBzdG9yeVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5ldyBzdG9yeVwiLCB4KSlcblxubGV0IHN0b3J5X3RvX2pzb24gc3RvcnkgPVxuICBtYXRjaCBzdG9yeSB3aXRoXG4gIHwgTmV3IG5ld19zdG9yeSAtPiBgQXNzb2MgWyBcIm5ld1wiLCBuZXdfc3RvcnlfdG9fanNvbiBuZXdfc3RvcnkgXVxuICB8IFNhbWVfYXMgaW50IC0+IGBBc3NvYyBbIFwic2FtZV9hc1wiLCBgSW50IGludCBdXG5cbmxldCBzdG9yeV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJuZXdcIiwgbmV3X3N0b3J5KSBdIC0+IE5ldyAobmV3X3N0b3J5X29mX2pzb24gbmV3X3N0b3J5KVxuICB8IGBBc3NvYyBbIChcInNhbWVfYXNcIiwgYEludCBpbnQpIF0gLT4gU2FtZV9hcyBpbnRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnlcIiwgeCkpXG5cbmxldCBzdG9yeV9tb2RlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IENhdXNhbCAtPiBgU3RyaW5nIFwiQ2F1c2FsXCJcbiAgfCBXZWFrIC0+IGBTdHJpbmcgXCJXZWFrXCJcbiAgfCBTdHJvbmcgLT4gYFN0cmluZyBcIlN0cm9uZ1wiXG5cbmxldCBzdG9yeV9tb2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJDYXVzYWxcIiAtPiBDYXVzYWxcbiAgfCBgU3RyaW5nIFwiV2Vha1wiIC0+IFdlYWtcbiAgfCBgU3RyaW5nIFwiU3Ryb25nXCIgLT4gU3Ryb25nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5IG1vZGVcIiwgeCkpXG5cbmxldCB0b19qc29uIGxvZ19pbmZvX3RvX2pzb24gb25lX2NvbXByZXNzaW9uID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImxvZ19pbmZvXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKExpc3QucmV2X21hcFxuICAgICAgICAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8udG9fanNvbiBsb2dfaW5mb190b19qc29uKVxuICAgICAgICAgICAgIChMaXN0LnJldiBvbmVfY29tcHJlc3Npb24ubG9nX2luZm8pKSApO1xuICAgICAgXCJzdG9yeV9tb2RlXCIsIHN0b3J5X21vZGVfdG9fanNvbiBvbmVfY29tcHJlc3Npb24uc3RvcnlfbW9kZTtcbiAgICAgIFwic3RvcnlcIiwgc3RvcnlfdG9fanNvbiBvbmVfY29tcHJlc3Npb24uc3Rvcnk7XG4gICAgXVxuXG5sZXQgb2ZfanNvbiBsb2dfaW5mb19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgbG9nX2luZm8gPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImxvZ19pbmZvXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgICAgKFRyYWNlLlNpbXVsYXRpb25faW5mby5vZl9qc29uIGxvZ19pbmZvX29mX2pzb24pXG4gICAgICAgICAgICAgICAoTGlzdC5yZXYgbClcbiAgICAgICAgICAgfCBfeSAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSkpO1xuICAgICAgICAgc3RvcnkgPSBzdG9yeV9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlcIiBsKTtcbiAgICAgICAgIHN0b3J5X21vZGUgPSBzdG9yeV9tb2RlX29mX2pzb24gKExpc3QuYXNzb2MgXCJzdG9yeV9tb2RlXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5IGNvbXB1dGF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSlcblxudHlwZSBwaGFzZSA9IFN0YXJ0IHwgSW5wcm9ncmVzcyB8IFN1Y2Nlc3MgfCBGYWlsbHVyZVxuXG5sZXQgc3RhcnQgPSBcInN0YXJ0aW5nIGNvbXB1dGF0aW9uXCJcbmxldCBpbnByb2dyZXNzID0gXCJjb21wdXRhdGlvbiBpbiBwcm9ncmVzc1wiXG5sZXQgc3VjY2VzcyA9IFwiY29tcHV0YXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiXG5sZXQgZmFpbGx1cmUgPSBcImNvbXB1dGF0aW9uIChwYXJ0aWFsbHkpIGZhaWxlZFwiXG5cbmxldCBwaGFzZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBTdGFydCAtPiBgU3RyaW5nIHN0YXJ0XG4gIHwgSW5wcm9ncmVzcyAtPiBgU3RyaW5nIGlucHJvZ3Jlc3NcbiAgfCBTdWNjZXNzIC0+IGBTdHJpbmcgc3VjY2Vzc1xuICB8IEZhaWxsdXJlIC0+IGBTdHJpbmcgZmFpbGx1cmVcblxubGV0IHBoYXNlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBzdGFydCAtPiBTdGFydFxuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBpbnByb2dyZXNzIC0+IElucHJvZ3Jlc3NcbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gc3VjY2VzcyAtPiBTdWNjZXNzXG4gIHwgYFN0cmluZyBzIHdoZW4gcyA9IGZhaWxsdXJlIC0+IEZhaWxsdXJlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHBoYXNlXCIsIHgpKVxuXG50eXBlIHByb2dyZXNzX2JhciA9IHsgYm9vbDogc3RyaW5nOyBjdXJyZW50OiBpbnQ7IHRvdGFsOiBpbnQgfVxuXG5sZXQgcHJvZ3Jlc3NfYmFyX3RvX2pzb24gcHJvZ3Jlc3NfYmFyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcInByb2dyZXNzX2JhclwiLFxuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImJvb2xcIiwgYFN0cmluZyBwcm9ncmVzc19iYXIuYm9vbDtcbiAgICAgICAgICAgIFwiY3VycmVudFwiLCBgSW50IHByb2dyZXNzX2Jhci5jdXJyZW50O1xuICAgICAgICAgICAgXCJ0b3RhbFwiLCBgSW50IHByb2dyZXNzX2Jhci50b3RhbDtcbiAgICAgICAgICBdICk7XG4gICAgXVxuXG5sZXQgcHJvZ3Jlc3NfYmFyX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMSAtPlxuICAgIChtYXRjaCBMaXN0LmFzc29jIFwicHJvZ3Jlc3NfYmFyXCIgbCB3aXRoXG4gICAgfCBgQXNzb2MgbCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGJvb2wgPSBzdHJpbmdfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImJvb2xcIiBsKTtcbiAgICAgICAgICAgY3VycmVudCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiY3VycmVudFwiIGwpO1xuICAgICAgICAgICB0b3RhbCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwidG90YWxcIiBsKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpKVxuICAgIHwgeCAtPlxuICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpXG5cbnR5cGUgJ2EgbWVzc2FnZSA9XG4gIHwgUGhhc2Ugb2YgcGhhc2UgKiBzdHJpbmdcbiAgfCBQcm9ncmVzcyBvZiBwcm9ncmVzc19iYXJcbiAgfCBTdG9yeSBvZiAnYSBvbmVfY29tcHJlc3Npb25cblxubGV0IG1lc3NhZ2VfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgUGhhc2UgKHAsIG0pIC0+IGBMaXN0IFsgYFN0cmluZyBcIlBIQVNFXCI7IHBoYXNlX3RvX2pzb24gcDsgYFN0cmluZyBtIF1cbiAgfCBQcm9ncmVzcyBwIC0+IGBMaXN0IFsgYFN0cmluZyBcIlBST0dSRVNTXCI7IHByb2dyZXNzX2Jhcl90b19qc29uIHAgXVxuICB8IFN0b3J5IHMgLT4gYExpc3QgWyBgU3RyaW5nIFwiU1RPUllcIjsgdG9fanNvbiAoZnVuIF8gLT4gYE51bGwpIHMgXVxuXG5sZXQgbWVzc2FnZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQSEFTRVwiOyBwOyBgU3RyaW5nIG0gXSAtPiBQaGFzZSAocGhhc2Vfb2ZfanNvbiBwLCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlBST0dSRVNTXCI7IHAgXSAtPiBQcm9ncmVzcyAocHJvZ3Jlc3NfYmFyX29mX2pzb24gcClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJTVE9SWVwiOyBzIF0gLT4gU3RvcnkgKG9mX2pzb24gKGZ1biBfIC0+ICgpKSBzKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBzdG9yeSBtZXNzYWdlXCIsIHgpKVxuIiwiKCoqXG4gICogY2Zsb3dfaGFuZGxlci5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDEzLTA4LTAyIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxNDozMDo0MCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBDZmxvd19oYW5kbGVyID0gc2lnXG4gIHR5cGUgc29ydF9hbGdvX2Zvcl9zdG9yaWVzXG4gIHR5cGUgY29tcHJlc3Npb25fbW9kZVxuXG4gIHZhbCBnZXRfY2F1c2FsX3RyYWNlIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfY2F1c2FsX3RyYWNlX29ubHkgOiBjb21wcmVzc2lvbl9tb2RlIC0+IGJvb2xcbiAgdmFsIGdldF93ZWFrX2NvbXByZXNzaW9uIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG5cbiAgdHlwZSBwYXJhbWV0ZXIgPSB7XG4gICAgY2FjaGVfc2l6ZTogaW50IG9wdGlvbjtcbiAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU6IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvbjtcbiAgICBjb21wcmVzc2lvbl9tb2RlOiBjb21wcmVzc2lvbl9tb2RlO1xuICAgIHByaW9yaXRpZXNfd2VhazogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX3N0cm9uZzogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX2NhdXNhbDogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBjb21wdXRlX2FsbF9zdG9yaWVzOiBib29sO1xuICAgIHNvcnRfYWxnb19mb3Jfc3Rvcmllczogc29ydF9hbGdvX2Zvcl9zdG9yaWVzO1xuICAgIGxvZ2dlcl9lcnI6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfcHJvZmlsaW5nOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX291dDogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9zZXJ2ZXI6IExvZ2dlcnMudDtcbiAgICBqc29uX2J1ZmZlcjpcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIEZpZm8udCByZWYgb3B0aW9uO1xuICAgIGxvZ19zdGVwOiBib29sO1xuICAgIGRlYnVnX21vZGU6IGJvb2w7XG4gICAgbG9nZ2VyX3N0ZXA6IExvZ2dlcnMudDtcbiAgICBrYXNhOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzO1xuICAgIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXM6IGJvb2w7XG4gICAgYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXI6IGludCBvcHRpb247XG4gICAgdGltZV9pbmRlcGVuZGVudDogYm9vbDtcbiAgICBibGFja2xpc3RfZXZlbnRzOiBib29sO1xuICAgIHNlcnZlcjogYm9vbDtcbiAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbjogYm9vbDtcbiAgICBkdW1wOiBzdHJpbmcgLT4gdW5pdDtcbiAgfVxuICAoKiogYSBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgcGFyYW1ldGVyaXphYmxlIG9wdGlvbnMgKilcblxuICB2YWwgZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA6XG4gICAgcGFyYW1ldGVyIC0+IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvblxuXG4gIHR5cGUgaGFuZGxlciA9IHtcbiAgICAoKmhhbmRsZXIgdG8gaW50ZXJwcmV0IGFic3RyYWN0IHZhbHVlcyopXG4gICAgZW52OiBNb2RlbC50O1xuICAgIHJ1bGVfbmFtZV9jYWNoZTogc3RyaW5nIGFycmF5O1xuICAgIGFnZW50X25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBzdGVwc19ieV9jb2x1bW46XG4gICAgICAoaW50ICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdFxuICAgICAgUHJlZGljYXRlX21hcHMuUVByZWRpY2F0ZU1hcC50O1xuICB9XG5cbiAgdHlwZSAnYSB6ZXJvYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICAgKiAnYVxuXG4gIHR5cGUgKCdhLCAnYikgdW5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2JcblxuICB0eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICAgKiAnY1xuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICAgKiAnZFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ2QgLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICAgKiAnZVxuXG4gIHZhbCBkb19ub3RfYm91bmRfaXR0ZXJhdGlvbnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfaXR0ZXJhdGlvbl9ib3VuZCA6IHBhcmFtZXRlciAtPiBpbnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgOiBwYXJhbWV0ZXIgLT4gaW50IG9wdGlvblxuICB2YWwgc2V0X2ZpcnN0X3N0b3J5X3Blcl9vYnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfYWxsX3N0b3JpZXNfcGVyX29icyA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcblxuICB2YWwgYnVpbGRfcGFyYW1ldGVyIDpcbiAgICBjYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbSAtPlxuICAgID9zZW5kX21lc3NhZ2U6KHN0cmluZyAtPiB1bml0KSAtPlxuICAgIG5vbmU6Ym9vbCAtPlxuICAgIHdlYWs6Ym9vbCAtPlxuICAgIHN0cm9uZzpib29sIC0+XG4gICAgdW5pdCAtPlxuICAgIHBhcmFtZXRlclxuXG4gIHZhbCBzdHJpbmdfb2ZfZXhuIDogZXhuIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIGlzX3NlcnZlcl9tb2RlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9jb21wcmVzc2lvbl93ZWFrIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2NvbXByZXNzaW9uX3N0cm9uZyA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9jb21wcmVzc2lvbl9ub25lIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X3ByaW9yaXRpZXMgOiBwYXJhbWV0ZXIgLT4gUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb25cbiAgdmFsIGdldF9hbGxfc3Rvcmllc19wZXJfb2JzIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9sb2dfc3RlcCA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2xvZ19zdGVwIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9kZWJ1Z2dpbmdfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2RlYnVnZ2luZ19tb2RlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIGdldF9wcm9maWxpbmdfbG9nZ2VyIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgZ2V0X3NlcnZlcl9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgaXNfc2VydmVyX2NoYW5uZWxfb24gOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2xvZ2dlciA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9sb2dnZXIgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X291dF9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgc2V0X291dF9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9kZWJ1Z2dpbmdfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9kZWJ1Z2dpbmdfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfa2FzYV9wYXJhbWV0ZXJzIDogcGFyYW1ldGVyIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnNcblxuICB2YWwgc2V0X2thc2FfcGFyYW1ldGVycyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIGRvX3dlX3VzZV9idWNrZXRfc29ydCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCB1c2VfYnVja2V0X3NvcnQgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCB1c2VfZnVzaW9uX3NvcnQgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBhbHdheXNfZGlzYW1iaWd1YXRlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9hbHdheXNfZGlzYW1iaWd1YXRlIDogcGFyYW1ldGVyIC0+IGJvb2wgLT4gcGFyYW1ldGVyXG4gIHZhbCBpbml0X2hhbmRsZXIgOiBNb2RlbC50IC0+IGhhbmRsZXJcbiAgdmFsIHN0cmluZ19vZl9ydWxlX2lkIDogaGFuZGxlciAtPiBpbnQgLT4gc3RyaW5nXG4gIHZhbCBzdHJpbmdfb2ZfYWdlbnRfaWQgOiBoYW5kbGVyIC0+IGludCAtPiBzdHJpbmdcblxuICB2YWwgZ2V0X3ByZWRpY2F0ZV9tYXAgOlxuICAgIGhhbmRsZXIgLT5cbiAgICAoaW50ICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdFxuICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudFxuXG4gIHZhbCBnZXRfaXNfdGltZV9pbmRlcGVuZGVudCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBnZXRfYmxhY2tsaXN0X2V2ZW50cyA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gc3RyaW5nIC0+IHVuaXRcbiAgdmFsIHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gdW5pdFxuICB2YWwgc2F2ZV9wcm9ncmVzc19iYXIgOiBwYXJhbWV0ZXIgLT4gYm9vbCAqIGludCAqIGludCAqIGludCAtPiB1bml0XG4gIHZhbCByZXNldF9wcm9ncmVzc19iYXIgOiBwYXJhbWV0ZXIgLT4gdW5pdFxuICB2YWwgc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSA6IHBhcmFtZXRlciAtPiAoc3RyaW5nIC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gKHVuaXQgLT4gdW5pdCkgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIHNldF9zYXZlX3Byb2dyZXNzX2JhciA6XG4gICAgcGFyYW1ldGVyIC0+IChib29sICogaW50ICogaW50ICogaW50IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+ICh1bml0IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzYXZlX2Vycm9yX2xvZyA6XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgIHVuaXRcblxuICB2YWwgc2V0X3NhdmVfZXJyb3JfbG9nIDpcbiAgICBwYXJhbWV0ZXIgLT5cbiAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPiB1bml0KSAtPlxuICAgIHBhcmFtZXRlclxuXG4gIHZhbCBwdXNoX2pzb24gOlxuICAgIHBhcmFtZXRlciAtPiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSAtPiB1bml0XG5cbiAgdmFsIHBvcF9qc29uIDpcbiAgICBwYXJhbWV0ZXIgLT4gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBTdG9yeV9qc29uLm1lc3NhZ2Ugb3B0aW9uXG5lbmRcblxubW9kdWxlIENmbG93X2hhbmRsZXIgOiBDZmxvd19oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gQnVja2V0IHwgRnVzaW9uXG5cbiAgdHlwZSBjb21wcmVzc2lvbl9tb2RlID0ge1xuICAgIGNhdXNhbF90cmFjZTogYm9vbDtcbiAgICB3ZWFrX2NvbXByZXNzaW9uOiBib29sO1xuICAgIHN0cm9uZ19jb21wcmVzc2lvbjogYm9vbDtcbiAgfVxuXG4gIGxldCBnZXRfY2F1c2FsX3RyYWNlIHggPSB4LmNhdXNhbF90cmFjZVxuICBsZXQgZ2V0X2NhdXNhbF90cmFjZV9vbmx5IHggPSBub3QgKHgud2Vha19jb21wcmVzc2lvbiB8fCB4LnN0cm9uZ19jb21wcmVzc2lvbilcbiAgbGV0IGdldF93ZWFrX2NvbXByZXNzaW9uIHggPSB4LndlYWtfY29tcHJlc3Npb25cbiAgbGV0IGdldF9zdHJvbmdfY29tcHJlc3Npb24geCA9IHguc3Ryb25nX2NvbXByZXNzaW9uXG5cbiAgdHlwZSBwYXJhbWV0ZXIgPSB7XG4gICAgY2FjaGVfc2l6ZTogaW50IG9wdGlvbjtcbiAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU6IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvbjtcbiAgICBjb21wcmVzc2lvbl9tb2RlOiBjb21wcmVzc2lvbl9tb2RlO1xuICAgIHByaW9yaXRpZXNfd2VhazogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX3N0cm9uZzogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX2NhdXNhbDogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBjb21wdXRlX2FsbF9zdG9yaWVzOiBib29sO1xuICAgIHNvcnRfYWxnb19mb3Jfc3Rvcmllczogc29ydF9hbGdvX2Zvcl9zdG9yaWVzO1xuICAgIGxvZ2dlcl9lcnI6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfcHJvZmlsaW5nOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX291dDogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9zZXJ2ZXI6IExvZ2dlcnMudDtcbiAgICBqc29uX2J1ZmZlcjpcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIEZpZm8udCByZWYgb3B0aW9uO1xuICAgIGxvZ19zdGVwOiBib29sO1xuICAgIGRlYnVnX21vZGU6IGJvb2w7XG4gICAgbG9nZ2VyX3N0ZXA6IExvZ2dlcnMudDtcbiAgICBrYXNhOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzO1xuICAgIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXM6IGJvb2w7XG4gICAgYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXI6IGludCBvcHRpb247XG4gICAgdGltZV9pbmRlcGVuZGVudDogYm9vbDtcbiAgICBibGFja2xpc3RfZXZlbnRzOiBib29sO1xuICAgIHNlcnZlcjogYm9vbDtcbiAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbjogYm9vbDtcbiAgICBkdW1wOiBzdHJpbmcgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBnZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZVxuXG4gIGxldCBidWlsZF9wYXJhbWV0ZXIgfmNhbGxlZF9mcm9tXG4gICAgICA/KHNlbmRfbWVzc2FnZSA9XG4gICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlciBcIiVzXCIgeDtcbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyKSB+bm9uZSB+d2VhayB+c3Ryb25nICgpXG4gICAgICA9XG4gICAgbGV0ICggc2VydmVyLFxuICAgICAgICAgIG91dF9zZXJ2ZXIsXG4gICAgICAgICAgb3V0X2NoYW5uZWwsXG4gICAgICAgICAgb3V0X2NoYW5uZWxfZXJyLFxuICAgICAgICAgIG91dF9jaGFubmVsX3Byb2ZpbGluZyxcbiAgICAgICAgICBsb2dfc3RlcF9jaGFubmVsICkgPVxuICAgICAgbWF0Y2ggY2FsbGVkX2Zyb20gd2l0aFxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgLT5cbiAgICAgICAgKCB0cnVlLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuSnNvbiBzdGRvdXQsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2luZmluaXRlX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2luZmluaXRlX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2NpcmN1bGFyX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2NpcmN1bGFyX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUxfVGFidWxhciAoKSApXG4gICAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNpbVxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5JbnRlcm5hbGlzZWQgLT5cbiAgICAgICAgbGV0IGNoYW5uZWwgPSBLYXBwYV9maWxlcy5vcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmcgKCkgaW5cbiAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIEZvcm1hdC5lcnJfZm9ybWF0dGVyLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXJcbiAgICAgICAgICAgIChGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW5uZWwpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKVxuICAgIGluXG4gICAge1xuICAgICAgc2VydmVyO1xuICAgICAgaXNfc2VydmVyX2NoYW5uZWxfb24gPSBzZXJ2ZXI7XG4gICAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBOb25lO1xuICAgICAgcHJpb3JpdGllc193ZWFrID0gUHJpb3JpdHkud2VhaztcbiAgICAgIHByaW9yaXRpZXNfc3Ryb25nID0gUHJpb3JpdHkuc3Ryb25nO1xuICAgICAgcHJpb3JpdGllc19jYXVzYWwgPSBQcmlvcml0eS5jYXVzYWw7XG4gICAgICBjb21wdXRlX2FsbF9zdG9yaWVzID0gZmFsc2U7XG4gICAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXQ7XG4gICAgICBsb2dnZXJfc2VydmVyID0gb3V0X3NlcnZlcjtcbiAgICAgIGxvZ2dlcl9vdXQgPSBvdXRfY2hhbm5lbDtcbiAgICAgIGxvZ2dlcl9lcnIgPSBvdXRfY2hhbm5lbF9lcnI7XG4gICAgICBsb2dnZXJfcHJvZmlsaW5nID0gb3V0X2NoYW5uZWxfcHJvZmlsaW5nO1xuICAgICAganNvbl9idWZmZXIgPSBOb25lO1xuICAgICAgY29tcHJlc3Npb25fbW9kZSA9XG4gICAgICAgIHtcbiAgICAgICAgICBjYXVzYWxfdHJhY2UgPSBub25lO1xuICAgICAgICAgIHdlYWtfY29tcHJlc3Npb24gPSB3ZWFrO1xuICAgICAgICAgIHN0cm9uZ19jb21wcmVzc2lvbiA9IHN0cm9uZztcbiAgICAgICAgfTtcbiAgICAgIGNhY2hlX3NpemUgPSBQYXJhbWV0ZXIuZ2V0X2NhY2hlX3NpemUgKCk7XG4gICAgICBkZWJ1Z19tb2RlID0gZmFsc2U7XG4gICAgICBsb2dfc3RlcCA9IHRydWU7XG4gICAgICBsb2dnZXJfc3RlcCA9IGxvZ19zdGVwX2NoYW5uZWw7XG4gICAgICBrYXNhID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKCk7XG4gICAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzID0gdHJ1ZTtcbiAgICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyID0gTm9uZTtcbiAgICAgIHRpbWVfaW5kZXBlbmRlbnQgPSAhUGFyYW1ldGVyLnRpbWVfaW5kZXBlbmRlbnQ7XG4gICAgICBibGFja2xpc3RfZXZlbnRzID0gIVBhcmFtZXRlci5ibGFja2xpc3RfZXZlbnRzO1xuICAgICAgZHVtcCA9IHNlbmRfbWVzc2FnZTtcbiAgICB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl93ZWFrIHAgPVxuICAgIHsgcCB3aXRoIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFNvbWUgU3RvcnlfanNvbi5XZWFrIH1cblxuICBsZXQgc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwID1cbiAgICB7IHAgd2l0aCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBTb21lIFN0b3J5X2pzb24uU3Ryb25nIH1cblxuICBsZXQgc2V0X2NvbXByZXNzaW9uX25vbmUgcCA9XG4gICAgeyBwIHdpdGggY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gU29tZSBTdG9yeV9qc29uLkNhdXNhbCB9XG5cbiAgdHlwZSBoYW5kbGVyID0ge1xuICAgIGVudjogTW9kZWwudDtcbiAgICBydWxlX25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBhZ2VudF9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgc3RlcHNfYnlfY29sdW1uOlxuICAgICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudDtcbiAgfVxuXG4gIHR5cGUgJ2EgemVyb2FyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2FcblxuICB0eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHRcbiAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgICAqICdiXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2NcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2RcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdkIC0+XG4gICAgRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuICAgICogJ2VcblxuICBsZXQgaW5pdF9oYW5kbGVyIGVudiA9XG4gICAgbGV0IG5fcnVsZXMgPSBNb2RlbC5uYl9ydWxlcyBlbnYgaW5cbiAgICBsZXQgcnVsZV9uYW1lX2NhY2hlID0gQXJyYXkubWFrZSBuX3J1bGVzIFwiXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kZWwuZm9sZF9ydWxlc1xuICAgICAgICAoZnVuIHggKCkgciAtPlxuICAgICAgICAgIHJ1bGVfbmFtZV9jYWNoZS4oeCkgPC1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYpXG4gICAgICAgICAgICAgIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSlcbiAgICAgICAgKCkgZW52XG4gICAgaW5cbiAgICBsZXQgbl9hZ2VudHMgPSBTaWduYXR1cmUuc2l6ZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIGluXG4gICAgbGV0IGFnZW50X25hbWVfY2FjaGUgPVxuICAgICAgQXJyYXkuaW5pdCBuX2FnZW50cyAoZnVuIHggLT5cbiAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF9hZ2VudCB+ZW52KSB4KVxuICAgIGluXG4gICAgbGV0IHN0ZXBzX2J5X2NvbHVtbiA9IFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAuZW1wdHkgMCBpblxuICAgIHsgZW52OyBydWxlX25hbWVfY2FjaGU7IGFnZW50X25hbWVfY2FjaGU7IHN0ZXBzX2J5X2NvbHVtbiB9XG5cbiAgbGV0IHN0cmluZ19vZl9leG4gX3ggPSBTb21lIFwiXCJcblxuICBsZXQgZ2V0X3ByaW9yaXRpZXMgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBwYXJhbWV0ZXIuY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT4gU29tZSBwYXJhbWV0ZXIucHJpb3JpdGllc193ZWFrXG4gICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfc3Ryb25nXG4gICAgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfY2F1c2FsXG5cbiAgbGV0IHNldF9maXJzdF9zdG9yeV9wZXJfb2JzIHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBjb21wdXRlX2FsbF9zdG9yaWVzID0gZmFsc2UgfVxuXG4gIGxldCBzZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggY29tcHV0ZV9hbGxfc3RvcmllcyA9IHRydWUgfVxuXG4gIGxldCBnZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuY29tcHV0ZV9hbGxfc3Rvcmllc1xuICBsZXQgZ2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciA9IHBhcmFtZXRlci5kZWJ1Z19tb2RlXG4gIGxldCBzZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVyIGJvb2wgPSB7IHBhcmFtZXRlciB3aXRoIGRlYnVnX21vZGUgPSBib29sIH1cbiAgbGV0IGdldF9sb2dfc3RlcCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nX3N0ZXBcbiAgbGV0IHNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgYm9vbCA9IHsgcGFyYW1ldGVyIHdpdGggbG9nX3N0ZXAgPSBib29sIH1cbiAgbGV0IGdldF9sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9zdGVwXG4gIGxldCBzZXRfbG9nZ2VyIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9zdGVwID0gZm10IH1cbiAgbGV0IGdldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nZ2VyX291dFxuICBsZXQgc2V0X291dF9jaGFubmVsIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9vdXQgPSBmbXQgfVxuICBsZXQgZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfZXJyXG4gIGxldCBzZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGZtdCA9IHsgcGFyYW1ldGVyIHdpdGggbG9nZ2VyX2VyciA9IGZtdCB9XG4gIGxldCBnZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlciA9IHBhcmFtZXRlci5rYXNhXG5cbiAgbGV0IHNldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyIHBhcmFtZXRlcicgPVxuICAgIHsgcGFyYW1ldGVyJyB3aXRoIGthc2EgPSBwYXJhbWV0ZXIgfVxuXG4gIGxldCBkb193ZV91c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldFxuXG4gIGxldCB1c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldCB9XG5cbiAgbGV0IHVzZV9mdXNpb25fc29ydCBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gRnVzaW9uIH1cblxuICBsZXQgYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5hbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzXG5cbiAgbGV0IHNldF9hbHdheXNfZGlzYW1iaWd1YXRlIHBhcmFtZXRlciBib29sID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXMgPSBib29sIH1cblxuICBsZXQgZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IE5vbmUgfVxuXG4gIGxldCBzZXRfaXR0ZXJhdGlvbl9ib3VuZCBwYXJhbWV0ZXIgaW50ID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyID0gU29tZSBpbnQgfVxuXG4gIGxldCBnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIuYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXJcblxuICBsZXQgZ2V0X3Byb2ZpbGluZ19sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9wcm9maWxpbmdcbiAgbGV0IHN0cmluZ19vZl9ydWxlX2lkIGhhbmRsZXIgaSA9IGhhbmRsZXIucnVsZV9uYW1lX2NhY2hlLihpKVxuICBsZXQgc3RyaW5nX29mX2FnZW50X2lkIGhhbmRsZXIgaSA9IGhhbmRsZXIuYWdlbnRfbmFtZV9jYWNoZS4oaSlcbiAgbGV0IGdldF9wcmVkaWNhdGVfbWFwIGhhbmRsZXIgPSBoYW5kbGVyLnN0ZXBzX2J5X2NvbHVtblxuICBsZXQgZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnRpbWVfaW5kZXBlbmRlbnRcbiAgbGV0IGdldF9ibGFja2xpc3RfZXZlbnRzIHBhcmFtZXRlciA9IHBhcmFtZXRlci5ibGFja2xpc3RfZXZlbnRzXG4gIGxldCBpc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuc2VydmVyXG4gIGxldCBnZXRfc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9zZXJ2ZXJcblxuICBsZXQgc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlciA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGxvZ2dlcl9zZXJ2ZXIgPSBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXI7XG4gICAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbiA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyID0gcGFyYW1ldGVyLmlzX3NlcnZlcl9jaGFubmVsX29uXG5cbiAgbGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgeCA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHhcblxuICBsZXQgZHVtcF9qc29uIHBhcmFtZXRlciBtZXNzYWdlID1cbiAgICBpZiBpc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgcGFyYW1ldGVyLmR1bXBcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKFN0b3J5X2pzb24ubWVzc2FnZV90b19qc29uIG1lc3NhZ2UpKVxuXG4gIGxldCBzYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgeCA9XG4gICAgbGV0IGIsIGksIF9qLCBuX3N0b3JpZXMgPSB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGR1bXBfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgKFN0b3J5X2pzb24uUHJvZ3Jlc3NcbiAgICAgICAgICAge1xuICAgICAgICAgICAgIFN0b3J5X2pzb24uYm9vbCA9XG4gICAgICAgICAgICAgICAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICBcInRydWVcIlxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFwiZmFsc2VcIik7XG4gICAgICAgICAgICAgU3RvcnlfanNvbi5jdXJyZW50ID0gaTtcbiAgICAgICAgICAgICBTdG9yeV9qc29uLnRvdGFsID0gbl9zdG9yaWVzO1xuICAgICAgICAgICB9KVxuICAgIGluXG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgeFxuXG4gIGxldCByZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgKClcblxuICBsZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgKClcblxuICBsZXQgc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1ldGVyLmthc2Egd2l0aFxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IGY7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBzZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1ldGVyLmthc2Egd2l0aFxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBmO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgc2V0X3NhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9XG4gICAgICAgIHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHNldF9yZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAgeyBwYXJhbWV0ZXIua2FzYSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhciA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHNhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciB4ID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgeFxuXG4gIGxldCBzZXRfc2F2ZV9lcnJvcl9sb2cgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID0geyBwYXJhbWV0ZXIua2FzYSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfZXJyb3JfbGlzdCA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHB1c2hfanNvbiBwYXJhbWV0ZXIganNvbiA9XG4gICAgbWF0Y2ggcGFyYW1ldGVyLmpzb25fYnVmZmVyIHdpdGhcbiAgICB8IE5vbmUgLT4gZHVtcF9qc29uIHBhcmFtZXRlciBqc29uXG4gICAgfCBTb21lIHJlZiAtPiByZWYgOj0gRmlmby5wdXNoIGpzb24gIXJlZlxuXG4gIGxldCBwb3BfanNvbiBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIHBhcmFtZXRlci5qc29uX2J1ZmZlciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcmVmIC0+XG4gICAgICBsZXQgZmlmbywgZWx0X29wdCA9IEZpZm8ucG9wICFyZWYgaW5cbiAgICAgIGxldCAoKSA9IHJlZiA6PSBmaWZvIGluXG4gICAgICBlbHRfb3B0XG5lbmRcbiIsIigqKlxuICAqIGthcHBhX2luc3RhbnRpYXRpb24ubWxcbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjkvMDgvMjAxMVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAwMi8wOC8yMDE1XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcblxubGV0IGNvbXBvc2Vfd2l0aF9oYW5kbGVyIGYgZyBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB4ID1cbiAgbGV0IGVycm9yLCB5ID0gZyBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB4IGluXG4gIGYgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeVxuXG5tb2R1bGUgUCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHNcblxubW9kdWxlIHR5cGUgQ2Zsb3dfc2lnbmF0dXJlID0gc2lnXG4gIG1vZHVsZSBIIDogQ2Zsb3dfaGFuZGxlci5DZmxvd19oYW5kbGVyXG5cbiAgdHlwZSBhZ2VudF9pZCA9IGludFxuXG4gIG1vZHVsZSBBZ2VudElkU2V0IDogU2V0TWFwLlNldCB3aXRoIHR5cGUgZWx0ID0gYWdlbnRfaWRcblxuICB0eXBlIGludGVybmFsX3N0YXRlID0gaW50XG4gIHR5cGUgc2lkZV9lZmZlY3QgPSBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0XG5cbiAgdmFsIGVtcHR5X3NpZGVfZWZmZWN0IDogc2lkZV9lZmZlY3RcblxuICB2YWwgYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgOlxuICAgIEluc3RhbnRpYXRpb24uYmluZGluZ190eXBlIC0+IEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuXG4gIHZhbCBzaXRlX25hbWVfb2ZfYmluZGluZ190eXBlIDpcbiAgICBJbnN0YW50aWF0aW9uLmJpbmRpbmdfdHlwZSAtPiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuXG4gIHZhbCBhZ2VudF9pZF9vZl9hZ2VudCA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgLT4gaW50XG4gIHZhbCBhZ2VudF9uYW1lX29mX2FnZW50IDogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSAtPiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcblxuICB2YWwgYWdlbnRfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5jb25jcmV0ZVxuXG4gIHZhbCBhZ2VudF9pZF9vZl9zaXRlIDogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gaW50XG5cbiAgdmFsIGFnZW50X25hbWVfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG5cbiAgdmFsIHNpdGVfbmFtZV9vZl9zaXRlIDpcbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSAtPiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuXG4gIHZhbCBidWlsZF9ncmlkIDpcbiAgICAoVHJhY2Uuc3RlcCAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIGxpc3QpIGxpc3QgLT5cbiAgICBib29sIC0+XG4gICAgSC5oYW5kbGVyIC0+XG4gICAgQ2F1c2FsLmdyaWRcblxuICB2YWwgcHJpbnRfc2lkZV9lZmZlY3QgOiBMb2dnZXJzLnQgLT4gc2lkZV9lZmZlY3QgLT4gdW5pdFxuXG4gIHZhbCBzaWRlX2VmZmVjdF9vZl9saXN0IDpcbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0IC0+IHNpZGVfZWZmZWN0XG5cbiAgdmFsIGdldF9pZF9vZl9yZWZpbmVkX3N0ZXAgOiBUcmFjZS5zdGVwIC0+IGludCBvcHRpb25cbiAgdmFsIGdldF90aW1lX29mX3JlZmluZWRfc3RlcCA6IFRyYWNlLnN0ZXAgLT4gZmxvYXQgb3B0aW9uXG5cbiAgdmFsIGxldmVsX29mX2V2ZW50IDpcbiAgICBQcmlvcml0eS5wcmlvcml0aWVzIG9wdGlvbiAtPlxuICAgIChUcmFjZS5zdGVwLCBhZ2VudF9pZCAtPiBib29sLCBQcmlvcml0eS5sZXZlbCkgSC5iaW5hcnlcblxuICB2YWwgZGlzYW1iaWd1YXRlIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBjbGVhbl9ldmVudHMgOiBUcmFjZS50IC0+IFRyYWNlLnRcbiAgdmFsIGZpbGxfc2lwaG9uIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBzcGxpdF9pbml0IDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBhZ2VudF9pZF9pbl9vYnMgOiAoVHJhY2Uuc3RlcCwgQWdlbnRJZFNldC50KSBILnVuYXJ5XG5lbmRcblxubW9kdWxlIENmbG93X2xpbmtlciA6IENmbG93X3NpZ25hdHVyZSA9IHN0cnVjdFxuICBtb2R1bGUgSCA9IENmbG93X2hhbmRsZXIuQ2Zsb3dfaGFuZGxlclxuICBtb2R1bGUgUEkgPSBJbnN0YW50aWF0aW9uXG5cbiAgdHlwZSBhZ2VudF9pZCA9IGludFxuICB0eXBlIHNpZGVfZWZmZWN0ID0gUEkuY29uY3JldGUgUEkuc2l0ZSBsaXN0XG5cbiAgbW9kdWxlIEFnZW50SWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBTaXRlTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIFNpdGVTZXQgPSBNb2RzLkludFNldFxuXG4gIHR5cGUgaW50ZXJuYWxfc3RhdGUgPSBpbnRcblxuICBsZXQgZW1wdHlfc2lkZV9lZmZlY3QgPSBbXVxuICBsZXQgc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSA9IHNuZFxuICBsZXQgYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgPSBmc3RcbiAgbGV0IGFnZW50X2lkX29mX2FnZW50ID0gZnN0XG4gIGxldCBhZ2VudF9uYW1lX29mX2FnZW50ID0gc25kXG4gIGxldCBhZ2VudF9vZl9zaXRlID0gZnN0XG4gIGxldCBhZ2VudF9pZF9vZl9zaXRlIHggPSBhZ2VudF9pZF9vZl9hZ2VudCBAQCBhZ2VudF9vZl9zaXRlIHhcbiAgbGV0IGFnZW50X25hbWVfb2Zfc2l0ZSB4ID0gYWdlbnRfbmFtZV9vZl9hZ2VudCBAQCBhZ2VudF9vZl9zaXRlIHhcbiAgbGV0IHNpdGVfbmFtZV9vZl9zaXRlID0gc25kXG5cbiAgbGV0IGdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIGYgeCA9XG4gICAgbWF0Y2ggVHJhY2Uuc2ltdWxhdGlvbl9pbmZvX29mX3N0ZXAgeCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG5cbiAgbGV0IGdldF90aW1lX29mX3JlZmluZWRfc3RlcCB4ID1cbiAgICBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCAoZnVuIHggLT4geC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSkgeFxuXG4gIGxldCBnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIHggPVxuICAgIGdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIChmdW4geCAtPiB4LlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCkgeFxuXG4gIGxldCBidWlsZF9ncmlkIGxpc3QgYm9vbCBoYW5kbGVyID1cbiAgICBsZXQgZW52ID0gaGFuZGxlci5ILmVudiBpblxuICAgIGxldCBlbXB0eV9zZXQgPSBbXSBpblxuICAgIGxldCBncmlkID0gQ2F1c2FsLmVtcHR5X2dyaWQgKCkgaW5cbiAgICBsZXQgZ3JpZCwgXywgXywgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChncmlkLCBzaWRlX2VmZmVjdCwgY291bnRlciwgc3VicykgKGssIHNpZGUpIC0+XG4gICAgICAgICAgbGV0IG1heWJlX3NpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICBmdW4gc2UgLT5cbiAgICAgICAgICAgIHNlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZ1biBfIC0+XG4gICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgc2lkZV9lZmZlY3Qgc2lkZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zbGF0ZSB5ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IHkgeSBzdWJzIGluXG4gICAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChpZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgZXZlbnQnID0gUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IHRyYW5zbGF0ZSBldmVudCBpblxuICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkXG4gICAgICAgICAgICAgICAgKCBUcmFjZS5SVUxFIGlkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQnLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluZm8gKVxuICAgICAgICAgICAgICAgIGNvdW50ZXIgZW52IGdyaWQsXG4gICAgICAgICAgICAgIGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLlBlcnQgKGlkLCBldmVudCwgaW5mbykgLT5cbiAgICAgICAgICAgIGxldCBldmVudCcgPSBQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgdHJhbnNsYXRlIGV2ZW50IGluXG4gICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICAgIG1heWJlX3NpZGVfZWZmZWN0IGV2ZW50Jy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRcbiAgICAgICAgICAgICAgICAoIFRyYWNlLlBFUlQgaWQsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24udGVzdHMgPSBldmVudCcuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gZXZlbnQnLkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgICAgICAgICAgICBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgICAgICAgICAgICBldmVudCcuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaW5mbyApXG4gICAgICAgICAgICAgICAgY291bnRlciBlbnYgZ3JpZCxcbiAgICAgICAgICAgICAgZW1wdHlfc2V0LFxuICAgICAgICAgICAgICBjb3VudGVyICsgMSxcbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgKVxuICAgICAgICAgIHwgVHJhY2UuT2JzIChpZCwgdGVzdHMsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IHRyYW5zbGF0ZSkpXG4gICAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRfb2JzIChpZCwgdGVzdHMnLCBpbmZvKSBzaWRlX2VmZmVjdCBjb3VudGVyIGdyaWQsXG4gICAgICAgICAgICAgIG1heWJlX3NpZGVfZWZmZWN0IGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgKGEsIGIpIC0+XG4gICAgICAgICAgICBncmlkLCBzaWRlX2VmZmVjdCwgY291bnRlciwgTW9kcy5JbnRNYXAuYWRkIGEgYiBzdWJzXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICAgICAgICAgIGxldCBhY3Rpb25zJyA9XG4gICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAoUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQ2F1c2FsLnJlY29yZF9pbml0XG4gICAgICAgICAgICAgICAgKFRyYWNlLmNyZWF0aW9uX29mX2FjdGlvbnMgc25kIGFjdGlvbnMnLCBhY3Rpb25zJylcbiAgICAgICAgICAgICAgICBjb3VudGVyIGVudiBncmlkLFxuICAgICAgICAgICAgICBzaWRlX2VmZmVjdCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLkR1bW15IF8gLT4gZ3JpZCwgbWF5YmVfc2lkZV9lZmZlY3QgZW1wdHlfc2V0LCBjb3VudGVyLCBzdWJzKVxuICAgICAgICAoZ3JpZCwgZW1wdHlfc2V0LCAxLCBNb2RzLkludE1hcC5lbXB0eSlcbiAgICAgICAgbGlzdFxuICAgIGluXG4gICAgZ3JpZFxuXG4gIGxldCBjbGVhbl9ldmVudHMgPVxuICAgIExpc3QuZmlsdGVyIChmdW5jdGlvblxuICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLkluaXQgXyAtPiB0cnVlXG4gICAgICB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5TdWJzIF8gLT4gZmFsc2UpXG5cbiAgbGV0IHByaW50X3NpZGVfZWZmZWN0IGxvZyA9XG4gICAgTGlzdC5pdGVyIChmdW4gKChhLCBfKSwgYikgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiglaSwlaSksXCIgYSBiKVxuXG4gIGxldCBzaWRlX2VmZmVjdF9vZl9saXN0IGwgPSBsXG5cbiAgbGV0IGxldmVsX29mX2V2ZW50IHByaW9yaXR5X29wdCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgZSBzZXQgPVxuICAgIG1hdGNoIHByaW9yaXR5X29wdCwgSC5nZXRfcHJpb3JpdGllcyBwYXJhbWV0ZXIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIFByaW9yaXR5LmhpZ2hlc3RcbiAgICB8IFNvbWUgcHJpb3JpdGllcywgXyB8IE5vbmUsIFNvbWUgcHJpb3JpdGllcyAtPlxuICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgfCBUcmFjZS5PYnMgXyAtPiBlcnJvciwgbG9nX2luZm8sIHByaW9yaXRpZXMuUHJpb3JpdHkub3RoZXJfZXZlbnRzXG4gICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLlBlcnQgXyAtPlxuICAgICAgICBsZXQgYWN0aW9ucyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBlIGluXG4gICAgICAgIGxldCBwcmlvcml0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gcHJpb3JpdHkgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQSS5DcmVhdGUgKGFnLCBfKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhZ19pZCA9IGFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICAgICAgICAgICAgaWYgc2V0IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgIHByaW9yaXR5XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgUHJpb3JpdHkubWluX2xldmVsIHByaW9yaXR5IHByaW9yaXRpZXMuUHJpb3JpdHkuY3JlYXRpb25cbiAgICAgICAgICAgICAgfCBQSS5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LnJlbW92YWxcbiAgICAgICAgICAgICAgfCBQSS5Nb2RfaW50ZXJuYWwgXyAtPiBwcmlvcml0eVxuICAgICAgICAgICAgICB8IFBJLkZyZWUgXyAtPlxuICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LnVuYmluZGluZ1xuICAgICAgICAgICAgICB8IFBJLkJpbmQgKF8sIF8pIHwgUEkuQmluZF90byAoXywgXykgLT4gcHJpb3JpdHkpXG4gICAgICAgICAgICBwcmlvcml0aWVzLlByaW9yaXR5Lm90aGVyX2V2ZW50cyAoZnN0IGFjdGlvbnMpXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgcHJpb3JpdHlcbiAgICAgIHwgVHJhY2UuRHVtbXkgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHByaW9yaXRpZXMuUHJpb3JpdHkuc3Vic3RpdHV0aW9uKVxuXG4gIGxldCBzdWJzX2FnZW50X2luX2V2ZW50IG1hcHBpbmcgbWFwcGluZycgPSBmdW5jdGlvblxuICAgICgqIG1hcHBpbmcgLT4gYmVmb3JlIHRoZSBldmVudCwgaW5jbHVkaW5nIGFnZW50cyB0byBiZSByZW1vdmVkICopXG4gICAgKCogbWFwcGluZycgLT4gYWZ0ZXIgdGhlIGV2ZW50LCBpbmNsdWRpbmcgYWdlbnRzIHRvIGJlIGNyZWF0ZWQgKilcbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIG9uZSBhZ2VudCBpcyByZW1vdmVkLCBhbmQgb25lIGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBpZCBpbiBhIHNpbmdsZSBldmVudCAqKVxuICAgIHwgVHJhY2UuUnVsZSAoYSwgZXZlbnQsIGluZm8pIC0+XG4gICAgICBUcmFjZS5SdWxlXG4gICAgICAgICggYSxcbiAgICAgICAgICBQSS5zdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpXG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKVxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgaW5mbyApXG4gICAgfCBUcmFjZS5QZXJ0IChhLCBldmVudCwgaW5mbykgLT5cbiAgICAgIFRyYWNlLlBlcnRcbiAgICAgICAgKCBhLFxuICAgICAgICAgIFBJLnN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZXZlbnRcbiAgICAgICAgICAgIChmdW4geCAtPiBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCB4IHggbWFwcGluZylcbiAgICAgICAgICAgIChmdW4geCAtPiBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCB4IHggbWFwcGluZycpXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICBpbmZvIClcbiAgICB8IFRyYWNlLk9icyAoYSwgYiwgYykgLT5cbiAgICAgIFRyYWNlLk9ic1xuICAgICAgICAoIGEsXG4gICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCAoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpKSlcbiAgICAgICAgICAgIGIsXG4gICAgICAgICAgYyApXG4gICAgfCBUcmFjZS5Jbml0IGIgLT5cbiAgICAgIFRyYWNlLkluaXRcbiAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKSlcbiAgICAgICAgICAgYilcbiAgICB8IChUcmFjZS5EdW1teSBfIHwgVHJhY2UuU3VicyBfKSBhcyBldmVudCAtPiBldmVudFxuXG4gIGxldCBkaXNhbWJpZ3VhdGUgZXZlbnRfbGlzdCA9XG4gICAgbGV0IF8sIF8sIF8sIGV2ZW50X2xpc3RfcmV2ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG1heF9pZCwgdXNlZCwgbWFwcGluZywgZXZlbnRfbGlzdCkgZXZlbnQgLT5cbiAgICAgICAgICBsZXQgbWF4X2lkLCB1c2VkLCBtYXBwaW5nJyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcpIHggLT5cbiAgICAgICAgICAgICAgICBpZiBBZ2VudElkU2V0Lm1lbSB4IHVzZWQgdGhlblxuICAgICAgICAgICAgICAgICAgKCBtYXhfaWQgKyAxLFxuICAgICAgICAgICAgICAgICAgICBBZ2VudElkU2V0LmFkZCAobWF4X2lkICsgMSkgdXNlZCxcbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCAobWF4X2lkICsgMSkgbWFwcGluZyApXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF4IHggbWF4X2lkLCBBZ2VudElkU2V0LmFkZCB4IHVzZWQsIG1hcHBpbmcpXG4gICAgICAgICAgICAgIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcpXG4gICAgICAgICAgICAgIChUcmFjZS5jcmVhdGlvbl9vZl9zdGVwIGV2ZW50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbWFwcGluZyBjYW4gYmUgc2FmZWx5IGFwcGxpZWQgdG8gYWxsIGFnZW50cyBleGNlcHQgdGhlIG5ld2x5IGNyZWF0ZWQgb25lcyAqKVxuICAgICAgICAgICgqIG1hcHBpbmcnIGNhbiBiZSBzYWZlbHkgYXBwbGllZCB0byBhbGwgYWdlbnRzIGV4Y2VwdCB0aGUgb25lcyB0aGF0IGhhdmUgYmVlbiBqdXN0IHJlbW92ZXMgKilcbiAgICAgICAgICBsZXQgbGlzdCA9IHN1YnNfYWdlbnRfaW5fZXZlbnQgbWFwcGluZyBtYXBwaW5nJyBldmVudCA6OiBldmVudF9saXN0IGluXG4gICAgICAgICAgbWF4X2lkLCB1c2VkLCBtYXBwaW5nJywgbGlzdClcbiAgICAgICAgKDAsIEFnZW50SWRTZXQuZW1wdHksIEFnZW50SWRNYXAuZW1wdHksIFtdKVxuICAgICAgICBldmVudF9saXN0XG4gICAgaW5cbiAgICBMaXN0LnJldiBldmVudF9saXN0X3JldlxuXG4gIHR5cGUgYWdlbnRfaW5mbyA9IHtcbiAgICBpbml0aWFsX3N0ZXA6IFRyYWNlLnN0ZXA7XG4gICAgaW50ZXJuYWxfc3RhdGVzOiBpbnRlcm5hbF9zdGF0ZSBTaXRlTWFwLnQ7XG4gICAgYm91bmRfc2l0ZXM6IFNpdGVTZXQudDtcbiAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlOiBTaXRlU2V0LnQ7XG4gIH1cblxuICBsZXQgY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBhY3Rpb25fbGlzdCA9XG4gICAgbGV0IGV4dHJhY3RfYWdlbnQgaWQgc291cCA9XG4gICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFBJLkNyZWF0ZSAoKGlkJywgXyksIF8pXG4gICAgICAgICAgfCBQSS5Nb2RfaW50ZXJuYWwgKCgoaWQnLCBfKSwgXyksIF8pXG4gICAgICAgICAgfCBQSS5GcmVlICgoaWQnLCBfKSwgXylcbiAgICAgICAgICB8IFBJLkJpbmRfdG8gKCgoaWQnLCBfKSwgXyksIF8pIC0+XG4gICAgICAgICAgICBpZCA9IGlkJ1xuICAgICAgICAgIHwgUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gLT4gZmFpbHdpdGggXCJQcm9ibGVtYXRpYyBpbml0aWFsIGV2ZW50XCIpXG4gICAgICAgIHNvdXBcbiAgICBpblxuICAgIGxldCByZWMgYXV4IHJlY3VyIGFjYyBzb3VwID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCAoaWYgc291cCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgVHJhY2UuSW5pdCBzb3VwIDo6IGFjY1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYWNjKSxcbiAgICAgICAgICByZWN1ciApXG4gICAgICB8IFBJLkZyZWUgXyA6OiB0IC0+IGF1eCByZWN1ciBhY2Mgc291cCB0XG4gICAgICB8IChQSS5CaW5kIF8gfCBQSS5SZW1vdmUgXyB8IFBJLkJpbmRfdG8gXyB8IFBJLk1vZF9pbnRlcm5hbCBfKSA6OiB0IC0+XG4gICAgICAgIGF1eCByZWN1ciBhY2Mgc291cCB0XG4gICAgICB8IFBJLkNyZWF0ZSAoKGlkLCBfKSwgc2l0ZV9saXN0KSA6OiB0IC0+XG4gICAgICAgIGxldCB0aGlzLCBzb3VwJyA9IGV4dHJhY3RfYWdlbnQgaWQgc291cCBpblxuICAgICAgICBsZXQgc3RhbmRhbG9uZSA9XG4gICAgICAgICAgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQSS5DcmVhdGUgXyB8IFBJLkZyZWUgXyB8IFBJLk1vZF9pbnRlcm5hbCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgfCBQSS5CaW5kX3RvIF8gfCBQSS5CaW5kIF8gfCBQSS5SZW1vdmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIHRoaXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXMgPSBUcmFjZS5Jbml0IHRoaXMgaW5cbiAgICAgICAgaWYgc3RhbmRhbG9uZSB0aGVuIChcbiAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gbWFwIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBzLCBTb21lIHUgLT4gU2l0ZU1hcC5hZGQgcyB1IG1hcFxuICAgICAgICAgICAgICAgIHwgXywgTm9uZSAtPiBtYXApXG4gICAgICAgICAgICAgIFNpdGVNYXAuZW1wdHkgc2l0ZV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYWdlbnRfaW5mbyA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGluaXRpYWxfc3RlcCA9IHRoaXM7XG4gICAgICAgICAgICAgIGludGVybmFsX3N0YXRlcyA9IG1hcDtcbiAgICAgICAgICAgICAgYm91bmRfc2l0ZXMgPSBTaXRlU2V0LmVtcHR5O1xuICAgICAgICAgICAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlID0gU2l0ZVNldC5lbXB0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCAoQWdlbnRJZE1hcC5hZGQgaWQgYWdlbnRfaW5mbyByZWN1cikgKHRoaXMgOjogYWNjKSBzb3VwJyB0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eCByZWN1ciAodGhpcyA6OiBhY2MpIHNvdXAnIHRcbiAgICBpblxuICAgIGF1eCByZW1hbmVudCBzdGVwX2xpc3QgYWN0aW9uX2xpc3QgYWN0aW9uX2xpc3RcblxuICBsZXQgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ2VudF9pbmZvID1cbiAgICBsZXQgcmVzdHJpY3Rpb24gPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgU2l0ZVNldC5lbXB0eSBhZ2lkIHJlc3RyaWN0aW9uX21hcFxuICAgIGluXG4gICAgU2l0ZVNldC5pc19lbXB0eSAoU2l0ZVNldC5pbnRlciBhZ2VudF9pbmZvLmJvdW5kX3NpdGVzIHJlc3RyaWN0aW9uKVxuICAgICYmIFNpdGVTZXQuaXNfZW1wdHlcbiAgICAgICAgIChTaXRlU2V0LmludGVyIGFnZW50X2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSByZXN0cmljdGlvbilcblxuICBsZXQgbW9kX3NpdGUgcmVzdHJpY3Rpb25fbWFwIHNpdGUgc3RhdGUgKHJlbWFuZW50LCBzZXQpID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBhZ2lkIHJlbWFuZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtYW5lbnQsIHNldFxuICAgIHwgU29tZSBhZ19pbmZvIC0+XG4gICAgICAobWF0Y2ggU2l0ZU1hcC5maW5kX29wdGlvbiBzX25hbWUgYWdfaW5mby5pbnRlcm5hbF9zdGF0ZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICAgIHwgU29tZSBzdGF0ZV9yZWYgLT5cbiAgICAgICAgaWYgc3RhdGVfcmVmID0gc3RhdGUgKCogQmFjayB0byB0aGUgb3JpZ2luYWwgaW50ZXJuYWwgc3RhdGUqKSB0aGVuXG4gICAgICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFnX2luZm8gd2l0aFxuICAgICAgICAgICAgICAgIHNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgU2l0ZVNldC5yZW1vdmUgc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQuYWRkIGFnaWQgc2V0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZSBpZlxuICAgICAgICAgICgqIE5vIGxvbmdlciB0aGUgZGVmYXVsdCBzdGF0ZSAqKVxuICAgICAgICAgIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGFnX2luZm8gPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgU2l0ZVNldC5hZGQgc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQucmVtb3ZlIGFnaWQgc2V0XG4gICAgICAgICkpXG5cbiAgbGV0IHVuYmluZF9zaWRlIHJlc3RyaWN0aW9uX21hcCAoYWdpZCwgc19uYW1lKSAocmVtYW5lbnQsIHNldCkgPVxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgdGhlbiAoXG4gICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5yZW1vdmUgc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgQWdlbnRJZFNldC5hZGQgYWdpZCBzZXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICkgZWxzZVxuICAgICAgICByZW1hbmVudCwgc2V0XG5cbiAgbGV0IHVuYmluZCByZXN0cmljdGlvbl9tYXAgc2l0ZSByZW0gPVxuICAgIGxldCBhZ2lkID0gYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNfbmFtZSA9IHNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgaW5cbiAgICB1bmJpbmRfc2lkZSByZXN0cmljdGlvbl9tYXAgKGFnaWQsIHNfbmFtZSkgcmVtXG5cbiAgbGV0IGJpbmQgcmVzdHJpY3Rpb25fbWFwIHNpdGUgKHJlbWFuZW50LCBzZXQpID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBhZ2lkIHJlbWFuZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtYW5lbnQsIHNldFxuICAgIHwgU29tZSBhZ19pbmZvIC0+XG4gICAgICBpZiBTaXRlU2V0Lm1lbSBzX25hbWUgYWdfaW5mby5ib3VuZF9zaXRlcyB0aGVuXG4gICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAgeyBhZ19pbmZvIHdpdGggYm91bmRfc2l0ZXMgPSBTaXRlU2V0LmFkZCBzX25hbWUgYWdfaW5mby5ib3VuZF9zaXRlcyB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICBpZiBhc19pbml0IHJlc3RyaWN0aW9uX21hcCBhZ2lkIGFnX2luZm8gdGhlblxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LnJlbW92ZSBhZ2lkIHNldFxuICAgICAgKVxuXG4gIGxldCBzcGxpdF9pbml0IHJlZmluZWRfc3RlcF9saXN0ID1cbiAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgZnN0XG4gICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgICBtYXRjaCByZWZpbmVkX3N0ZXAgd2l0aFxuICAgICAgICAgICB8IFRyYWNlLkluaXQgaW5pdCAtPiBjb252ZXJ0X2luaXQgcmVtYW5lbnQgc3RlcF9saXN0IGluaXRcbiAgICAgICAgICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5SdWxlIF9cbiAgICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgICAgICByZWZpbmVkX3N0ZXAgOjogc3RlcF9saXN0LCByZW1hbmVudClcbiAgICAgICAgIChbXSwgcmVtYW5lbnQpXG4gICAgICAgICAoTGlzdC5yZXYgcmVmaW5lZF9zdGVwX2xpc3QpKVxuXG4gIGxldCBhZGRfaW5fc2NvcGUgc2l0ZSBzY29wZSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBvbGRfc2V0ID0gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgU2l0ZVNldC5lbXB0eSBhZ2lkIHNjb3BlIGluXG4gICAgbGV0IG5ld19zZXQgPSBTaXRlU2V0LmFkZCBzX25hbWUgb2xkX3NldCBpblxuICAgIGlmIG9sZF9zZXQgPT0gbmV3X3NldCB0aGVuXG4gICAgICBzY29wZVxuICAgIGVsc2VcbiAgICAgIEFnZW50SWRNYXAuYWRkIGFnaWQgbmV3X3NldCBzY29wZVxuXG4gIGxldCBkZWFsX3dpdGhfdGVzdHMgdGVzdHMgc2NvcGUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzY29wZSB4IC0+XG4gICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICB8IFBJLklzX0hlcmUgXyAtPiBzY29wZVxuICAgICAgICAgICB8IFBJLklzX0JvdW5kIHNpdGVcbiAgICAgICAgICAgfCBQSS5Jc19GcmVlIHNpdGVcbiAgICAgICAgICAgfCBQSS5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKVxuICAgICAgICAgICB8IFBJLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgICAgICBhZGRfaW5fc2NvcGUgc2l0ZSBzY29wZVxuICAgICAgICAgICB8IFBJLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICAgYWRkX2luX3Njb3BlIHNpdGUxIChhZGRfaW5fc2NvcGUgc2l0ZTIgc2NvcGUpKSlcbiAgICAgIHNjb3BlIHRlc3RzXG5cbiAgbGV0IGZpbGxfc2lwaG9uIHJlZmluZWRfc3RlcF9saXN0ID1cbiAgICBsZXQgcmV2X3RyYWNlID0gTGlzdC5yZXYgcmVmaW5lZF9zdGVwX2xpc3QgaW5cbiAgICBsZXQgc2NvcGUgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgbGV0IHJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3QsIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoc3RlcF9saXN0LCBzY29wZSkgcmVmaW5lZF9zdGVwIC0+XG4gICAgICAgICAgbWF0Y2ggcmVmaW5lZF9zdGVwIHdpdGhcbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPiAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZVxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoXywgZXZlbnQsIF8pIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIF8pIC0+XG4gICAgICAgICAgICBsZXQgc2NvcGUnID0gZGVhbF93aXRoX3Rlc3RzIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMgc2NvcGUgaW5cbiAgICAgICAgICAgIChyZWZpbmVkX3N0ZXAsIHNjb3BlKSA6OiBzdGVwX2xpc3QsIHNjb3BlJ1xuICAgICAgICAgIHwgVHJhY2UuT2JzIChfLCB0ZXN0cywgXykgLT5cbiAgICAgICAgICAgIGxldCBzY29wZScgPSBkZWFsX3dpdGhfdGVzdHMgdGVzdHMgc2NvcGUgaW5cbiAgICAgICAgICAgIChyZWZpbmVkX3N0ZXAsIHNjb3BlKSA6OiBzdGVwX2xpc3QsIHNjb3BlJ1xuICAgICAgICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuRHVtbXkgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChbXSwgc2NvcGUpIHJldl90cmFjZVxuICAgIGluXG4gICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGxldCBhLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgIG1hdGNoIHJlZmluZWRfc3RlcCB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGluaXQsIF8gLT4gY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBpbml0XG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChfLCBldmVudCwgXyksIHNjb3BlIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIF8pLCBzY29wZSAtPlxuICAgICAgICAgICAgbGV0IHJlbWFuZW50LCBzZXQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gcmVjdXIgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIF8gLT4gcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsIChzaXRlLCBzdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgbW9kX3NpdGUgc2NvcGUgc2l0ZSBzdGF0ZSByZWN1clxuICAgICAgICAgICAgICAgICAgfCBQSS5CaW5kIChzaXRlMSwgc2l0ZTIpIHwgUEkuQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5kIHNjb3BlIHNpdGUxIChiaW5kIHNjb3BlIHNpdGUyIHJlY3VyKVxuICAgICAgICAgICAgICAgICAgfCBQSS5GcmVlIHNpdGUgLT4gdW5iaW5kIHNjb3BlIHNpdGUgcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuUmVtb3ZlIF8gLT4gcmVjdXIpXG4gICAgICAgICAgICAgICAgKHJlbWFuZW50LCBBZ2VudElkU2V0LmVtcHR5KVxuICAgICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCwgc2V0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0ICh1bmJpbmQgc2NvcGUpXG4gICAgICAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IChyZW1hbmVudCwgc2V0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQWdlbnRJZFNldC5mb2xkXG4gICAgICAgICAgICAgICAgKGZ1biBpZCBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIGlkIHJlbWFuZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB4IC0+IHguaW5pdGlhbF9zdGVwIDo6IGxpc3RcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0KVxuICAgICAgICAgICAgICAgIHNldFxuICAgICAgICAgICAgICAgIChmc3QgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCksXG4gICAgICAgICAgICAgIHJlbWFuZW50IClcbiAgICAgICAgICB8IFRyYWNlLk9icyBfLCBfIC0+IGZzdCByZWZpbmVkX3N0ZXAgOjogc3RlcF9saXN0LCByZW1hbmVudFxuICAgICAgICAgIHwgVHJhY2UuU3VicyBfLCBfIHwgVHJhY2UuRHVtbXkgXywgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChbXSwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3RcbiAgICBpblxuICAgIExpc3QucmV2IGFcblxuICBsZXQgYWdlbnRfaWRfaW5fb2JzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgaW5mbyBlcnJvciA9IGZ1bmN0aW9uXG4gICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5EdW1teSBfXG4gICAgICAtPlxuICAgICAgZXJyb3IsIGluZm8sIEFnZW50SWRTZXQuZW1wdHlcbiAgICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBpbmZvLFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGwgeCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IFBJLklzX0hlcmUgeCAtPiBBZ2VudElkU2V0LmFkZCAoYWdlbnRfaWRfb2ZfYWdlbnQgeCkgbFxuICAgICAgICAgICAgICAgfCBQSS5Jc19Cb3VuZCBfIHwgUEkuSXNfRnJlZSBfIHwgUEkuSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgICAgICB8IFBJLklzX0JvdW5kX3RvIF8gfCBQSS5IYXNfSW50ZXJuYWwgXyAtPlxuICAgICAgICAgICAgICAgICBsKSlcbiAgICAgICAgICBBZ2VudElkU2V0LmVtcHR5IHRlc3RzIClcbmVuZFxuIiwiKCoqXG4gICogcG9fY3V0Lm1sXG4gICpcbiAgKiBDdXQgY29uY3VycmVudCBldmVudHM6IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAxNi8wNC8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDAyLzA4LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXIgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgUG9fY3V0ID0gc2lnXG4gIG1vZHVsZSBLIDogS2FwcGFfaW5zdGFudGlhdGlvbi5DZmxvd19zaWduYXR1cmVcblxuICB2YWwgY3V0IDogKFRyYWNlLnQsIFRyYWNlLnQgKiBpbnQpIEsuSC51bmFyeVxuXG4gIHR5cGUgb25fdGhlX2ZseV9zdGF0ZVxuXG4gIHZhbCBpbml0X2N1dCA6IG9uX3RoZV9mbHlfc3RhdGVcbiAgdmFsIGN1dF9zdGVwIDogb25fdGhlX2ZseV9zdGF0ZSAtPiBUcmFjZS5zdGVwIC0+IG9uX3RoZV9mbHlfc3RhdGVcbiAgdmFsIGZpbmFsaXplX2N1dCA6IG9uX3RoZV9mbHlfc3RhdGUgLT4gVHJhY2Uuc3RlcCBsaXN0ICogaW50XG5cbiAgdmFsIGN1dF9yZXZfdHJhY2UgOlxuICAgIFRyYWNlLnN0ZXAgbGlzdCAoKnJldmVyc2Ugb3JkZXIqKSAtPlxuICAgIFRyYWNlLnN0ZXAgbGlzdCAoKiBjb3JyZWN0IG9yZGVyICopICogaW50XG5lbmRcblxubW9kdWxlIFBvX2N1dCA6IFBvX2N1dCA9IHN0cnVjdFxuICBtb2R1bGUgSyA9IEthcHBhX2luc3RhbnRpYXRpb24uQ2Zsb3dfbGlua2VyXG5cbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gICAgfCBIZXJlIG9mIEsuYWdlbnRfaWRcbiAgICB8IEJvdW5kX3NpdGUgb2YgSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBJbnRlcm5hbF9zdGF0ZSBvZiBLLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICBtb2R1bGUgUFNNID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWRpY2F0ZV9pbmZvXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBQUyA9IFBTTS5TZXRcblxuICBsZXQgY3JlYXRlZF9wcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBsaXN0ID0gQm91bmRfc2l0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIF8gLT4gSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0KVxuICAgICAgICBbIEhlcmUgYWdfaWQgXSBpbnRlcmZhY2VcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGxpc3QgPSBCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkgOjogbGlzdCBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgXyAtPiBJbnRlcm5hbF9zdGF0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QpXG4gICAgICAgIFsgSGVyZSBhZ19pZCBdIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICBbIEludGVybmFsX3N0YXRlIChLLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMxLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMxKTtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMyLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMyKTtcbiAgICAgIF1cbiAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBzIC0+XG4gICAgICBbIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT4gW11cblxuICBsZXQgcHJlZGljYXRlc19vZl90ZXN0IHRlc3QgPVxuICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnZW50IC0+IFsgSGVyZSAoSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICBbIEludGVybmFsX3N0YXRlIChLLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgc1xuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIF8pIC0+XG4gICAgICBbIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMxLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMxKTtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMyLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMyKTtcbiAgICAgIF1cblxuICBsZXQgcHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgc2lkZXMgPVxuICAgIExpc3QubWFwIChmdW4gKChhZ19pZCwgXyksIHNfaWQpIC0+IEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSkgc2lkZXNcblxuICB0eXBlIG9uX3RoZV9mbHlfc3RhdGUgPSBQUy50ICogVHJhY2Uuc3RlcCBsaXN0ICogaW50XG5cbiAgbGV0IGluaXRfY3V0ID0gUFMuZW1wdHksIFtdLCAwXG4gIGxldCBmaW5hbGl6ZV9jdXQgKF9hLCBiLCBjKSA9IGIsIGNcblxuICBsZXQgY3V0X3N0ZXAgKHNlZW4sIGtlcHQsIG5fY3V0KSBldmVudCA9XG4gICAgbGV0IHJlYyBrZWVwIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICB8IHQwIDo6IHEwIC0+XG4gICAgICAgIGxldCByZWMgYXV4MSBsID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGtlZXAgcTBcbiAgICAgICAgICB8IHQxIDo6IHExIC0+XG4gICAgICAgICAgICBpZiBQUy5tZW0gdDEgc2VlbiB0aGVuXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4MSBxMVxuICAgICAgICBpblxuICAgICAgICBhdXgxIChwcmVkaWNhdGVzX29mX2FjdGlvbiB0MClcbiAgICBpblxuICAgIGxldCByZWMga2VlcDIgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGlmIFBTLm1lbSB0IHNlZW4gdGhlblxuICAgICAgICAgIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGtlZXAyIHFcbiAgICBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBldmVudCBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc2VlbiBhY3Rpb24gLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBzZWVuIGVsdCAtPiBQUy5yZW1vdmUgZWx0IHNlZW4pXG4gICAgICAgICAgICBzZWVuXG4gICAgICAgICAgICAoY3JlYXRlZF9wcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24pKVxuICAgICAgICBzZWVuIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgYWN0aW9ucywgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBldmVudCBpblxuICAgIGlmXG4gICAgICBUcmFjZS5zdGVwX2lzX29icyBldmVudCB8fCBrZWVwIGFjdGlvbnNcbiAgICAgIHx8IGtlZXAyIChwcmVkaWNhdGVzX29mX3NpZGVfZWZmZWN0cyAoVHJhY2Uuc2lkZV9lZmZlY3RzX29mX3N0ZXAgZXZlbnQpKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGtlcHQgPSBldmVudCA6OiBrZXB0IGluXG4gICAgICBsZXQgdGVzdHMgPSBUcmFjZS50ZXN0c19vZl9zdGVwIGV2ZW50IGluXG4gICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgcHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgKFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIGV2ZW50KVxuICAgICAgaW5cbiAgICAgIGxldCBzZWVuID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNlZW4gdGVzdCAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBzZWVuIHByZWRpY2F0ZV9pbmZvIC0+IFBTLmFkZCBwcmVkaWNhdGVfaW5mbyBzZWVuKVxuICAgICAgICAgICAgICBzZWVuIChwcmVkaWNhdGVzX29mX3Rlc3QgdGVzdCkpXG4gICAgICAgICAgc2VlbiB0ZXN0c1xuICAgICAgaW5cbiAgICAgIGxldCBzZWVuID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNlZW4gcHJlZGljYXRlX2luZm8gLT4gUFMuYWRkIHByZWRpY2F0ZV9pbmZvIHNlZW4pXG4gICAgICAgICAgc2VlbiB0ZXN0cydcbiAgICAgIGluXG4gICAgICBzZWVuLCBrZXB0LCBuX2N1dFxuICAgICkgZWxzZVxuICAgICAgc2Vlbiwga2VwdCwgbl9jdXQgKyAxXG5cbiAgbGV0IGN1dF9yZXZfdHJhY2UgcmV2X2V2ZW50X2xpc3QgPVxuICAgIGxldCBfLCBldmVudF9saXN0LCBuID0gTGlzdC5mb2xkX2xlZnQgY3V0X3N0ZXAgaW5pdF9jdXQgcmV2X2V2ZW50X2xpc3QgaW5cbiAgICBldmVudF9saXN0LCBuXG5cbiAgbGV0IGN1dCBfcGFyYW1ldGVyIF9oYW5kbGVyIGluZm8gZXJyb3IgZXZlbnRfbGlzdCA9XG4gICAgbGV0IHRyYWNlID0gY3V0X3Jldl90cmFjZSAoTGlzdC5yZXYgZXZlbnRfbGlzdCkgaW5cbiAgICBlcnJvciwgaW5mbywgdHJhY2VcbmVuZFxuIiwiKCoqXG4gICAqIHBzZXVkb19pbnZlcnNlLm1sXG4gICAqXG4gICAqIEN1dCBwc2V1ZG8gaW52ZXJzZSBldmVudHM6IGEgbW9kdWxlIGZvciBLYVNpbVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDQvMjAxMlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjEvMTEvMjAxM1xuICAgKiAqXG4gICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwgMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ3V0X3BzZXVkb19pbnZlcnNlID0gc2lnXG4gIG1vZHVsZSBQbyA6IFBvX2N1dC5Qb19jdXRcbiAgbW9kdWxlIEEgOiBHZW5BcnJheS5HZW5BcnJheVxuXG4gIHZhbCBjdXQgOiAoVHJhY2UudCwgVHJhY2UudCAqIGludCkgUG8uSy5ILnVuYXJ5XG5lbmRcblxubW9kdWxlIFBzZXVkb19pbnYgOiBDdXRfcHNldWRvX2ludmVyc2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBvID0gUG9fY3V0LlBvX2N1dFxuICBtb2R1bGUgQSA9IE1vZHMuRHluQXJyYXlcbiAgbW9kdWxlIENQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwXG4gIG1vZHVsZSBQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVfbWFwcy5QcmVkaWNhdGVNYXBcblxuICB0eXBlIHByZWRpY2F0ZV9pbmZvID0gUHJlZGljYXRlX21hcHMucHJlZGljYXRlX2luZm9cbiAgdHlwZSBzdGVwX2lkID0gaW50XG5cbiAgbGV0IHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyA9IFByZWRpY2F0ZV9tYXBzLnN0cmluZ19vZl9wcmVkaWNhdGVfaW5mb1xuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHBpID1cbiAgICBtYXRjaCBwaSB3aXRoXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZV9pcyBzIC0+IHN0cmluZ19vZl9pbnQgc1xuICAgIHwgUHJlZGljYXRlX21hcHMuVW5kZWZpbmVkIC0+IFwiI1VuZGVmXCJcbiAgICB8IFByZWRpY2F0ZV9tYXBzLlByZXNlbnQgLT4gXCIjSGVyZVwiXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5GcmVlIC0+IFwiI0ZyZWVcIlxuICAgIHwgUHJlZGljYXRlX21hcHMuQm91bmRfdG8gKGFnLCBhZ2VudF9uYW1lLCBzKSAtPlxuICAgICAgXCJCb3VuZF90byBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBcIiBeIHN0cmluZ19vZl9pbnQgYWdlbnRfbmFtZSBeIFwiIFwiXG4gICAgICBeIHN0cmluZ19vZl9pbnQgc1xuXG4gIHR5cGUgcHNldWRvX2ludl9ibGFja2JvYXJkID0ge1xuICAgIHN0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChzdGVwX2lkICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdCBDUHJlZGljYXRlTWFwLnQ7XG4gICAgbnN0ZXBzOiBzdGVwX2lkO1xuICAgIHByZWRpY2F0ZXNfb2ZfZXZlbnQ6IHByZWRpY2F0ZV9pbmZvIGxpc3QgQS50O1xuICAgIGlzX3JlbW92ZV9hY3Rpb246IGJvb2wgQS50O1xuICAgIG1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQ6IGludCBBLnQ7XG4gICAgaGFzX21vZF93aXRob3V0X3Rlc3Q6IGJvb2wgQS50O1xuICAgIGV2ZW50OiBUcmFjZS5zdGVwIG9wdGlvbiBBLnQ7XG4gICAgYWdlbnRfbGlzdDogaW50IGxpc3Q7XG4gIH1cblxuICBsZXQgaW5pdF9ibGFja2JvYXJkIG5fc3RlcHMgaGFuZGxlciA9XG4gICAge1xuICAgICAgc3RlcHNfYnlfY29sdW1uID0gUG8uSy5ILmdldF9wcmVkaWNhdGVfbWFwIGhhbmRsZXI7XG4gICAgICBuc3RlcHMgPSAtMTtcbiAgICAgIHByZWRpY2F0ZXNfb2ZfZXZlbnQgPSBBLm1ha2Ugbl9zdGVwcyBbXTtcbiAgICAgIGlzX3JlbW92ZV9hY3Rpb24gPSBBLm1ha2Ugbl9zdGVwcyBmYWxzZTtcbiAgICAgIGhhc19tb2Rfd2l0aG91dF90ZXN0ID0gQS5tYWtlIG5fc3RlcHMgZmFsc2U7XG4gICAgICBtb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50ID0gQS5jcmVhdGUgbl9zdGVwcyAwO1xuICAgICAgZXZlbnQgPSBBLm1ha2Ugbl9zdGVwcyBOb25lO1xuICAgICAgYWdlbnRfbGlzdCA9IFtdO1xuICAgIH1cblxuICBsZXQgX3ByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgIFwiQmxhY2tib2FyZCBmb3IgcmVtb3ZpbmcgcHNldWRvIGludmVyc2UgZWxlbWVudFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIm5fZXZlbnRzOiAlaVwiIGJsYWNrYm9hcmQubnN0ZXBzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIlN0ZXBzX2J5X2NvbHVtbjpcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIENQcmVkaWNhdGVNYXAuaXRlclxuICAgICAgICAoZnVuIHByZWQgbGlzdCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIiVzOiBcIlxuICAgICAgICAgICAgICAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHByZWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZWlkLCB2YWx1ZSwgYm9vbCkgLT5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKCVpLCVzJXMpLFwiIGVpZFxuICAgICAgICAgICAgICAgICAgKHN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAoaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBcIihNb2QpXCJcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBcIlwiKSlcbiAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpXG4gICAgICAgIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBcIkV2ZW50czpcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPSBibGFja2JvYXJkLm5zdGVwcyB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGV2ZW50ID1cbiAgICAgICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5ldmVudCBrXG4gICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIkVSUkVVUiAlaSAxMjNcIiBrXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYWlzZSBFeGl0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgXCJFdmVudCAlaSVhXCIga1xuICAgICAgICAgICAgICAgICAgIChUcmFjZS5wcmludF9zdGVwIH5jb21wYWN0OmZhbHNlIH5lbnY6aGFuZGxlci5Qby5LLkguZW52KVxuICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgXCJQcmVkaWNhdGVzOiBcIlxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBsaXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGsgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICBcIiVzLFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gcGlkKSlcbiAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgYm9vbCA9IEEuZ2V0IGJsYWNrYm9hcmQuaXNfcmVtb3ZlX2FjdGlvbiBrIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRhaW4gYSBkZWxldGlvblwiXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBpbnQgPSBBLmdldCBibGFja2JvYXJkLm1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQgayBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiJWkgbW9kaWZpZWQgcHJlZGljYXRlc1wiIGludFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZXJyb3IpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoayArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPSBhdXggMCBpblxuICAgIGVycm9yXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIF9wYXJhbWV0ZXIgX2hhbmRsZXIgX2Vycm9yIGJsYWNrYm9hcmQgYWN0aW9uID1cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBpbnRlcmZhY2UpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuSGVyZSBhZ19pZCBpblxuICAgICAgbGV0IGxpc3QxLCBsaXN0MiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAobGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSBpblxuICAgICAgICAgICAgbGV0IGxpc3QxID0gKHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuRnJlZSkgOjogbGlzdDEgaW5cbiAgICAgICAgICAgIGxldCBsaXN0MiA9IHByZWRpY2F0ZV9pZCA6OiBsaXN0MiBpblxuICAgICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0MSwgbGlzdDJcbiAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZSAoYWdfaWQsIHNfaWQpIGluXG4gICAgICAgICAgICAgICggKHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGxpc3QyICkpXG4gICAgICAgICAgKFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5QcmVzZW50IF0sIFsgcHJlZGljYXRlX2lkIF0pXG4gICAgICAgICAgaW50ZXJmYWNlXG4gICAgICBpblxuICAgICAgKCB7IGJsYWNrYm9hcmQgd2l0aCBhZ2VudF9saXN0ID0gYWdfaWQgOjogYmxhY2tib2FyZC5hZ2VudF9saXN0IH0sXG4gICAgICAgIGxpc3QxLFxuICAgICAgICBsaXN0MixcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgIChQby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlX2lzIGludCBdLFxuICAgICAgICBbXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBQby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQyID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgUHJlZGljYXRlX21hcHMuQm91bmRfdG8gKGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10sXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuRnJlZSBdLCBbXSwgZmFsc2UsIGZhbHNlXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWQgXSwgW10sIHRydWUsIGZhbHNlXG5cbiAgbGV0IG5vX3JlbW92ZSBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgbm90IChBLmdldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gZWlkKVxuXG4gIGxldCBzYW1lX2xlbmd0aCBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGVpZDEgZWlkMiA9XG4gICAgQS5nZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBlaWQxXG4gICAgfHwgQS5nZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBlaWQyXG4gICAgfHwgQS5nZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IGVpZDFcbiAgICAgICA9IEEuZ2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBlaWQyXG5cbiAgbGV0IGNsZWFuIHQgY29sdW1uIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW4sIGJsYWNrYm9hcmRcbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbGV0IHJlYyBhdXggbGlzdCBib29sID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgKGVpZCwgXywgZmFsc2UpIDo6IHEgLT5cbiAgICAgICAgICBpZiBlaWQgPSAtMSB0aGVuXG4gICAgICAgICAgICBsaXN0LCBib29sXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBBLmdldCBibGFja2JvYXJkLmV2ZW50IGVpZCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXV4IHEgdHJ1ZVxuICAgICAgICAgICAgfCBfIC0+IGxpc3QsIGJvb2xcbiAgICAgICAgICApXG4gICAgICAgIHwgXyAtPiBsaXN0LCBib29sXG4gICAgICBpblxuICAgICAgbGV0IGxpc3QsIGJvb2wgPSBhdXggdGFpbCBmYWxzZSBpblxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGhlYWQgOjogbGlzdCBpblxuICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBzdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmFkZCB0IGNvbHVtbiBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGNvbHVtbiwgYmxhY2tib2FyZFxuICAgICAgKSBlbHNlXG4gICAgICAgIGNvbHVtbiwgYmxhY2tib2FyZFxuXG4gIGxldCBjaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZWlkID0gYmxhY2tib2FyZC5uc3RlcHMgaW5cbiAgICBsZXQgcHJlZGljYXRlX2xpc3QgPSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkIGluXG4gICAgbGV0IHJlYyBzY2FuIHByZWRpY2F0ZV9saXN0ID1cbiAgICAgIG1hdGNoIHByZWRpY2F0ZV9saXN0IHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIE5vbmUsIGJsYWNrYm9hcmQsIFtdXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBbXSB0IGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb2x1bW4sIGJsYWNrYm9hcmQgPSBjbGVhbiB0IGNvbHVtbiBibGFja2JvYXJkIGluXG4gICAgICAgIChtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICB8IChfLCBfLCBmYWxzZSkgOjogXyAtPiBzY2FuIHEgKCogbm8gbW9kaWYgb24gYSAqKVxuICAgICAgICB8IChfLCB4LCB0cnVlKSA6OiAoXywgeSwgXykgOjogXyB3aGVuIHggPSB5IC0+XG4gICAgICAgICAgc2NhbiBxICgqIG11dGUgbW9kaWYgb24gYSAqKVxuICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gLT5cbiAgICAgICAgICBpZiBhID0gZWlkICYmIHggPSB5IHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBTb21lIChhLCBiKSwgYmxhY2tib2FyZCwgcSAoKiBhIGNhbmNlbHMgYiBtb2RpZiAqKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBOb25lLCBibGFja2JvYXJkLCBxXG4gICAgICAgIHwgXyAtPiBlcnJvciwgTm9uZSwgYmxhY2tib2FyZCwgcSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgY2FuZGlkYXRlcywgYmxhY2tib2FyZCwgcSA9IHNjYW4gcHJlZGljYXRlX2xpc3QgaW5cbiAgICBtYXRjaCBjYW5kaWRhdGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIE5vbmVcbiAgICB8IFNvbWUgKGVpZGEsIGVpZGIpIC0+XG4gICAgICBpZlxuICAgICAgICBub19yZW1vdmUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBlaWRiXG4gICAgICAgICYmIHNhbWVfbGVuZ3RoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkYSBlaWRiXG4gICAgICAgICYmIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiwgX2JsYWNrYm9hcmQgPSBjbGVhbiBwaWQgY29sdW1uIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICB8IChfLCBfLCBmYWxzZSkgOjogXyAtPiB0cnVlICgqIG5vIG1vZGlmIG9uIGEgKilcbiAgICAgICAgICAgICAgIHwgKGEsIHgsIHRydWUpIDo6IChiLCBfLCB0cnVlKSA6OiAoXywgeSwgXykgOjogX1xuICAgICAgICAgICAgICAgICB3aGVuIGIgPSBlaWRiICYmIGEgPSBlaWRhIC0+XG4gICAgICAgICAgICAgICAgIHggPSB5ICgqIGlmIHllcywgYSBjYW5jZWxzIGIgbW9kaWYqKVxuICAgICAgICAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBpcyBhIG1vZGlmIGlzIG11dGUgPyAqKVxuICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgIHFcbiAgICAgICAgJiYgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAgKGZ1biBwaWQgLT5cbiAgICAgICAgICAgICAgIGxldCBjb2x1bW4gPVxuICAgICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBbXSBwaWQgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgY29sdW1uLCBfYmxhY2tib2FyZCA9IGNsZWFuIHBpZCBjb2x1bW4gYmxhY2tib2FyZCBpblxuICAgICAgICAgICAgICAgbGV0IHJlYyBjaGVja19hdXggY29sdW1uID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY29sdW1uIHdpdGhcbiAgICAgICAgICAgICAgICAgfCAoYiwgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiBiID0gZWlkYiAtPlxuICAgICAgICAgICAgICAgICAgIHggPSB5ICgqIGlzIGIgbW9kaWYgaXMgbXV0ZSA/ICopXG4gICAgICAgICAgICAgICAgIHwgKGIsIF8sIGJvb2wpIDo6IF8gd2hlbiBiID0gZWlkYiAtPlxuICAgICAgICAgICAgICAgICAgIG5vdCBib29sICgqIGlmIHllcywgYiBkb2VzIG5vdCBkbyBtb2RpZiAqKVxuICAgICAgICAgICAgICAgICB8IChfLCBfLCBfKSA6OiB0YWlsIC0+IGNoZWNrX2F1eCB0YWlsXG4gICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF9cbiAgICAgICAgICAgICAgICAgd2hlbiBiID0gZWlkYiAmJiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBhIGNhbmNlbHMgYiBtb2RpZiopXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgY2hlY2tfYXV4IGNvbHVtbiAoKiBvdGhlcndpc2UgY2hlY2sgdGhhdCBiIGhhcyBubyBlZmZlY3QgICopKVxuICAgICAgICAgICAgIChBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkYilcbiAgICAgIHRoZW5cbiAgICAgICAgZXJyb3IsIFNvbWUgKGVpZGEsIGVpZGIpXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBOb25lXG5cbiAgbGV0IHBvcCBfcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICBsZXQgcHJlZGljYXRlX2xpc3QgPSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkIGluXG4gICAgbGV0IHJlYyBhdXggbCBlcnJvciBibGFja2JvYXJkID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlcnJvciwgYmxhY2tib2FyZFxuICAgICAgfCBwaWQgOjogdGFpbCAtPlxuICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggQ1ByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwaWQgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW4gd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgRXhpdFxuICAgICAgICBpblxuICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCAoYSwgXywgXykgOjogcSB3aGVuIGEgPSBlaWQgLT4gcVxuICAgICAgICAgIHwgXyAtPiBsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGF1eCB0YWlsIGVycm9yXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBzdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmFkZCBwaWQgbGlzdCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPSBhdXggcHJlZGljYXRlX2xpc3QgZXJyb3IgYmxhY2tib2FyZCBpblxuICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgTm9uZSBpblxuICAgIGVycm9yLCBibGFja2JvYXJkXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfdGVzdCBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBfYmxhY2tib2FyZCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfaW50KSAtPlxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlXG4gICAgICAgICAgKFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlLCBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUpXG4gICAgICBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHNpdGVfaWQxID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IHNpdGVfaWQyID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZDEgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZDIgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQxOyBwcmVkaWNhdGVfaWQyIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIF8pIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cblxuICBsZXQgYWRkX3N0ZXAgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgPVxuICAgIGxldCBwcmVfZXZlbnQgPSBibGFja2JvYXJkLmV2ZW50IGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IFRyYWNlLnRlc3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IHNpZGVfZWZmZWN0ID0gVHJhY2Uuc2lkZV9lZmZlY3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlX21hcHMuUHJlZGljYXRlTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYnVpbGRfbWFwX3Rlc3QgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtYXAgaWQgLT4gUHJlZGljYXRlTWFwLmFkZCBpZCB0cnVlIG1hcCkgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPSBQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IChmYWxzZSwgTm9uZSkgcGlkIG1hcCBpblxuICAgICAgbGV0IHRlc3QgPSB0ZXN0IHx8IHRlc3QnIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgbWF0Y2ggYWN0aW9uJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgICAgfCBfIC0+IGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlTWFwLmFkZCBwaWQgKHRlc3QsIGFjdGlvbikgbWFwIGluXG4gICAgICBtYXBcbiAgICBpblxuICAgIGxldCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgPSBzaWRlX2VmZmVjdCBpblxuICAgIGxldCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCB0ZXN0IC0+XG4gICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBidWlsZF9tYXBfdGVzdCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICBQcmVkaWNhdGVNYXAuZW1wdHkgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGFjdGlvbl9tYXAsXG4gICAgICAgICAgdGVzdF9tYXAsXG4gICAgICAgICAgaXNfcmVtb3ZlX2FjdGlvbixcbiAgICAgICAgICBfaXNfY3JlYXRlX2FjdGlvbiApID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCwgYm9vbCwgYm9vbF9jcmVhdGlvbilcbiAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCwgYm9vbCcsIGJvb2xfY3JlYXRpb24nID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgYWN0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwX3Rlc3QgdGVzdF9saXN0IHRlc3RfbWFwLFxuICAgICAgICAgICAgYm9vbCB8fCBib29sJyxcbiAgICAgICAgICAgIGJvb2xfY3JlYXRpb24gfHwgYm9vbF9jcmVhdGlvbicgKSlcbiAgICAgICAgKGVycm9yLCBibGFja2JvYXJkLCBQcmVkaWNhdGVNYXAuZW1wdHksIHRlc3RfbWFwLCBmYWxzZSwgZmFsc2UpXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVNYXAuYWRkIGtleSAodGVzdCwgU29tZSBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZU1hcC5hZGQga2V5ICh0ZXN0LCBOb25lKSBhY2MpXG4gICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgZSwgUHJlZGljYXRlTWFwLmFkZCBrZXkgKGZhbHNlLCBTb21lIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZU1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIChmdW4gKChhLCBfKSwgYikgbWFwIC0+XG4gICAgICAgICAgbGV0IHBpZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGEsIGIpIGluXG4gICAgICAgICAgYWRkX3N0YXRlIHBpZCAoZmFsc2UsIFNvbWUgUHJlZGljYXRlX21hcHMuRnJlZSkgbWFwKVxuICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbWVyZ2VkX21hcFxuICAgIGluXG4gICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLm5zdGVwcyArIDEgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuZXZlbnQgbnNpZCAoU29tZSBzdGVwKSBpblxuICAgIGxldCBuX21vZGlmaWNhdGlvbnMsIHByZV9zdGVwc19ieV9jb2x1bW4sIGxpc3QsIG1vZF93aXRob3V0X3Rlc3QgPVxuICAgICAgUHJlZGljYXRlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSAobl9tb2RpZmljYXRpb25zLCBtYXAsIGxpc3QsIG1vZF93aXRob3V0X3Rlc3QpIC0+XG4gICAgICAgICAgbGV0IG9sZF9saXN0ID1cbiAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgIFsgLTEsIFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZCwgZmFsc2UgXVxuICAgICAgICAgICAgICBpZCBtYXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvbGRfdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggb2xkX2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCAoXywgdiwgXykgOjogXyAtPiB2XG4gICAgICAgICAgICB8IFtdIC0+IFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld192YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5fbW9kaWZpY2F0aW9ucywgYm9vbF9hY3Rpb24sIG1vZF93aXRob3V0X3Rlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBuX21vZGlmaWNhdGlvbnMsIGZhbHNlLCBtb2Rfd2l0aG91dF90ZXN0XG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBuX21vZGlmaWNhdGlvbnMgKyAxLCB0cnVlLCBtb2Rfd2l0aG91dF90ZXN0IHx8IHRlc3RcbiAgICAgICAgICBpblxuICAgICAgICAgICggbl9tb2RpZmljYXRpb25zLFxuICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgaWRcbiAgICAgICAgICAgICAgKChuc2lkLCBuZXdfdmFsdWUsIGJvb2xfYWN0aW9uKSA6OiBvbGRfbGlzdClcbiAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgKGlkLCBuZXdfdmFsdWUpIDo6IGxpc3QsXG4gICAgICAgICAgICBtb2Rfd2l0aG91dF90ZXN0ICkpXG4gICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgKDAsIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uLCBbXSwgZmFsc2UpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBpZiBpc19yZW1vdmVfYWN0aW9uIHRoZW4gKFxuICAgICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuaXNfcmVtb3ZlX2FjdGlvbiBuc2lkIHRydWUgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLnNldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAoTGlzdC5yZXZfbWFwIGZzdCAoTGlzdC5yZXYgbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IG5zaWQgbl9tb2RpZmljYXRpb25zXG4gICAgaW5cbiAgICBsZXQgKCkgPSBBLnNldCBibGFja2JvYXJkLmhhc19tb2Rfd2l0aG91dF90ZXN0IG5zaWQgbW9kX3dpdGhvdXRfdGVzdCBpblxuICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIGV2ZW50ID0gcHJlX2V2ZW50O1xuICAgICAgICBzdGVwc19ieV9jb2x1bW4gPSBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICBuc3RlcHMgPSBuc2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IG5fc3RlcHMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IGJsYWNrYm9hcmQgPSBpbml0X2JsYWNrYm9hcmQgbl9zdGVwcyBoYW5kbGVyIGluXG4gICAgbGV0IGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCBuX2N1dCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQpIHN0ZXAgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgYWRkX3N0ZXAgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgdG9fcG9wID0gY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBpblxuICAgICAgICAgIG1hdGNoIHRvX3BvcCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCBuX2N1dFxuICAgICAgICAgIHwgU29tZSAoZTEsIGUyKSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID0gcG9wIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZTEgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9IHBvcCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGUyIGluXG4gICAgICAgICAgICBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQgKyAyKVxuICAgICAgICAoZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIDApXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGxldCBsaXN0ID1cbiAgICAgIGxldCByZWMgYXV4IGsgbGlzdCA9XG4gICAgICAgIGlmIGsgPSAtMSB0aGVuXG4gICAgICAgICAgbGlzdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBBLmdldCBibGFja2JvYXJkLmV2ZW50IGsgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGF1eCAoayAtIDEpIChhIDo6IGxpc3QpXG4gICAgICAgICAgfCBOb25lIC0+IGF1eCAoayAtIDEpIGxpc3RcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBibGFja2JvYXJkLm5zdGVwcyBbXVxuICAgIGluXG4gICAgbGV0IHRhYiA9IGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uIGluXG4gICAgbGV0IF8gPSBMaXN0Lml0ZXIgKENQcmVkaWNhdGVNYXAucmVjeWNsZSB0YWIpIGJsYWNrYm9hcmQuYWdlbnRfbGlzdCBpblxuICAgIGVycm9yLCBpbmZvLCAobGlzdCwgbl9jdXQpXG5cbiAgKCogIGxldCBjdXQgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBsaXN0ID0gZXJyb3IsIGluZm8sIChsaXN0LDApKilcbmVuZFxuIiwiKCoqXG4gICogY2Zsb3dfaGFuZGxlci5tbFxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyOS8wOC8yMDExXG4gICogTGFzdCBtb2RpZmljYXRpb246IDI5LzAxLzIwMTZcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXIgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIFByZUJsYWNrYm9hcmQgPSBzaWdcbiAgbW9kdWxlIEEgOiBHZW5BcnJheS5HZW5BcnJheVxuICBtb2R1bGUgQ0kgOiBQc2V1ZG9faW52ZXJzZS5DdXRfcHNldWRvX2ludmVyc2VcblxuICB0eXBlIHN0ZXBfaWRcblxuICB2YWwgemVyb19zdGVwX2lkIDogc3RlcF9pZFxuICB2YWwgZHVtbXlfc3RlcF9pZCA6IHN0ZXBfaWRcbiAgdmFsIGludF9vZl9zdGVwX2lkIDogc3RlcF9pZCAtPiBpbnRcbiAgdmFsIHN0ZXBfaWRfb2ZfaW50IDogaW50IC0+IHN0ZXBfaWRcbiAgdmFsIGRlY19zdGVwX2lkIDogc3RlcF9pZCAtPiBzdGVwX2lkXG4gIHZhbCBpbmNfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gc3RlcF9pZFxuXG4gIHR5cGUgc3RlcF9zaG9ydF9pZFxuXG4gIHZhbCB6ZXJvX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkXG4gIHZhbCBkdW1teV9zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZFxuICB2YWwgaW50X29mX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkIC0+IGludFxuICB2YWwgc3RlcF9zaG9ydF9pZF9vZl9pbnQgOiBpbnQgLT4gc3RlcF9zaG9ydF9pZFxuICB2YWwgaW5jX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkIC0+IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGRlY19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBzdGVwX3Nob3J0X2lkXG5cbiAgKCoqIGJsYWNrYm9hcmQgcHJlZGljYXRlcyopXG5cbiAgdHlwZSBwcmVkaWNhdGVfaWQgPSBpbnRcbiAgdHlwZSBwcmVkaWNhdGVfaW5mb1xuICB0eXBlIHByZWRpY2F0ZV92YWx1ZVxuXG4gIG1vZHVsZSBDIDogQ2FjaGUuQ2FjaGUgd2l0aCB0eXBlIE8udCA9IHByZWRpY2F0ZV92YWx1ZVxuXG4gIHR5cGUgcHJlX2JsYWNrYm9hcmQgKCpibGFja2JvYXJkIGR1cmluZyBpdHMgY29uc3RydWN0aW9uKilcblxuICB2YWwgd2Vha2VuaW5nIDogcHJlZGljYXRlX3ZhbHVlIC0+IHByZWRpY2F0ZV92YWx1ZSBsaXN0XG5cbiAgdmFsIGNvbmogOlxuICAgIChwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSwgcHJlZGljYXRlX3ZhbHVlKSBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGRpc2p1bmN0aW9uIDpcbiAgICAocHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCB1bmRlZmluZWQgOiBwcmVkaWNhdGVfdmFsdWVcbiAgdmFsIHVua25vd24gOiBwcmVkaWNhdGVfdmFsdWVcbiAgdmFsIGlzX3Vua25vd24gOiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgaXNfdW5kZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIG1vcmVfcmVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgY29tcGF0aWJsZSA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlIC0+IHByZWRpY2F0ZV92YWx1ZSAtPiBib29sXG4gIHZhbCBnZXRfcHJlX2NvbHVtbl9tYXBfaW52IDogcHJlX2JsYWNrYm9hcmQgLT4gcHJlZGljYXRlX2luZm8gQS50XG5cbiAgKCoqIGdlbmVyYXRpb24qKVxuXG4gIHZhbCBpbml0IDogcHJlX2JsYWNrYm9hcmQgQ0kuUG8uSy5ILnplcm9hcnlcblxuICB2YWwgYWRkX3N0ZXAgOlxuICAgICggVHJhY2Uuc3RlcCxcbiAgICAgIHByZV9ibGFja2JvYXJkLFxuICAgICAgc3RlcF9pZCxcbiAgICAgIHByZV9ibGFja2JvYXJkICogc3RlcF9pZCApXG4gICAgQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgYWRkX3N0ZXBfdXBfdG9faXNvIDpcbiAgICAoIFRyYWNlLnN0ZXAsXG4gICAgICBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHN0ZXBfaWQsXG4gICAgICBwcmVfYmxhY2tib2FyZCAqIHN0ZXBfaWQgKVxuICAgIENJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGZpbmFsaXplIDpcbiAgICBQcmlvcml0eS5wcmlvcml0aWVzIG9wdGlvbiAtPlxuICAgIChwcmVfYmxhY2tib2FyZCwgcHJlX2JsYWNrYm9hcmQpIENJLlBvLksuSC51bmFyeVxuXG4gICgqKnByZXR0eSBwcmludGluZyopXG5cbiAgdmFsIHN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgOiBwcmVkaWNhdGVfdmFsdWUgLT4gc3RyaW5nXG4gIHZhbCBwcmludF9wcmVkaWNhdGVfdmFsdWUgOiBMb2dnZXJzLnQgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IHVuaXRcbiAgdmFsIHByaW50X3ByZWJsYWNrYm9hcmQgOiAocHJlX2JsYWNrYm9hcmQsIHVuaXQpIENJLlBvLksuSC51bmFyeVxuXG4gICgqKmludGVyZmFjZSopXG5cbiAgdmFsIG5fZXZlbnRzIDogKHByZV9ibGFja2JvYXJkLCBpbnQpIENJLlBvLksuSC51bmFyeVxuICB2YWwgbl9wcmVkaWNhdGVzIDogKHByZV9ibGFja2JvYXJkLCBpbnQpIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBuX2V2ZW50c19wZXJfcHJlZGljYXRlIDpcbiAgICAocHJlX2JsYWNrYm9hcmQsIGludCwgcHJlZGljYXRlX2lkKSBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIDpcbiAgICAoIHByZV9ibGFja2JvYXJkLFxuICAgICAgcHJlZGljYXRlX2lkLFxuICAgICAgKHN0ZXBfaWQgKiBpbnQgKiBwcmVkaWNhdGVfdmFsdWUgKiBwcmVkaWNhdGVfdmFsdWUpIGxpc3QgKVxuICAgIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgbWFuZGF0b3J5X2V2ZW50cyA6XG4gICAgKCBwcmVfYmxhY2tib2FyZCxcbiAgICAgIChzdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdCApXG4gICAgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9wcmVfZXZlbnQgOiAocHJlX2JsYWNrYm9hcmQsIFRyYWNlLnN0ZXAgQS50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZ2V0X3NpZGVfZWZmZWN0IDpcbiAgICAocHJlX2JsYWNrYm9hcmQsIENJLlBvLksuc2lkZV9lZmZlY3QgQS50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBzdGVwX2lkIG9wdGlvbikgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9sZXZlbF9vZl9ldmVudCA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBzdGVwX2lkLCBQcmlvcml0eS5sZXZlbCkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBsZXZlbHMgOiBwcmVfYmxhY2tib2FyZCAtPiBQcmlvcml0eS5sZXZlbCBBLnRcbiAgdmFsIHByaW50X3ByZWRpY2F0ZV9pbmZvIDogTG9nZ2Vycy50IC0+IHByZWRpY2F0ZV9pbmZvIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUHJlYmxhY2tib2FyZCA6IFByZUJsYWNrYm9hcmQgPSBzdHJ1Y3RcbiAgKCoqIFVzZWZ1bCBtb2R1bGVzICopXG5cbiAgbW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG4gIG1vZHVsZSBDSSA9IFBzZXVkb19pbnZlcnNlLlBzZXVkb19pbnZcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBsZXQgZXJyb3IsIHggPVxuICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHhcblxuICAoKiogYmxhY2tib2FyZCBtYXRyaXgqKVxuXG4gIHR5cGUgc3RlcF9pZCA9IGludFxuICAoKiogZ2xvYmFsIGlkIG9mIGFuIGV2ZW50ICopXG5cbiAgbGV0IHplcm9fc3RlcF9pZCA9IDBcbiAgbGV0IGR1bW15X3N0ZXBfaWQgPSAtMVxuICBsZXQgaW50X29mX3N0ZXBfaWQgaSA9IGlcbiAgbGV0IHN0ZXBfaWRfb2ZfaW50IGkgPSBpXG4gIGxldCBkZWNfc3RlcF9pZCBpID0gaSAtIDFcbiAgbGV0IGluY19zdGVwX2lkIGkgPSBpICsgMVxuXG4gIHR5cGUgc3RlcF9zaG9ydF9pZCA9IGludFxuICAoKiogcG9zaXRpb24gb2YgYW4gZXZlbnQgb24gYSB3aXJlICopXG5cbiAgbGV0IHplcm9fc3RlcF9zaG9ydF9pZCA9IDBcbiAgbGV0IGR1bW15X3N0ZXBfc2hvcnRfaWQgPSAtMVxuICBsZXQgaW50X29mX3N0ZXBfc2hvcnRfaWQgaSA9IGlcbiAgbGV0IHN0ZXBfc2hvcnRfaWRfb2ZfaW50IGkgPSBpXG4gIGxldCBpbmNfc3RlcF9zaG9ydF9pZCBpID0gaSArIDFcbiAgbGV0IGRlY19zdGVwX3Nob3J0X2lkIGkgPSBpIC0gMVxuXG4gICgqKiBibGFja2JvYXJkIHByZWRpY2F0ZXMqKVxuXG4gICgqKiBraW5kIG9mIGV2ZW50cyopXG4gIHR5cGUgcnVsZV90eXBlID1cbiAgICB8IFN1YnNcbiAgICB8IER1bW15XG4gICAgfCBJbml0XG4gICAgfCBPYnNlcnZhYmxlXG4gICAgfCBSdWxlXG4gICAgfCBTaWRlX2VmZmVjdF9vZiBvZlxuICAgICAgICAoc3RlcF9pZCAqIChDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWUpIGxpc3QpXG5cbiAgdHlwZSBwcmVkaWNhdGVfaWQgPSBpbnRcbiAgKCoqIHdpcmUgaWRlbnRpZmllcnMgKilcblxuICB0eXBlIG11dGV4ID1cbiAgICB8IExvY2tfc2lkZV9lZmZlY3Qgb2ZcbiAgICAgICAgc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWQgKiBDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICB8IExvY2tfYWdlbnQgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWRcbiAgICB8IExvY2tfcmVjdGFuZ3VsYXIgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWRcbiAgICB8IExvY2tfbGlua3Mgb2Ygc3RlcF9pZCAqIChDSS5Qby5LLmFnZW50X2lkICogQ0kuUG8uSy5hZ2VudF9pZClcblxuICAoKiogd2lyZSBsYWJlbHMgKilcbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gICAgfCBGaWN0aXRpb3VzICgqdG8gaGFuZGxlIHdpdGggYW1iaWd1b3VzIHNpdGUgZWZmZWN0cyAqKVxuICAgIHwgSGVyZSBvZiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBCb3VuZF9zaXRlIG9mIENJLlBvLksuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgSW50ZXJuYWxfc3RhdGUgb2YgQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBQb2ludGVyIG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBNdXRleCBvZiBtdXRleFxuICAgIHwgTGluayBvZiBzdGVwX2lkICogQ0kuUG8uSy5hZ2VudF9pZCAqIENJLlBvLksuYWdlbnRfaWRcblxuICBsZXQgXyA9IExpbmsgKDAsIDAsIDApXG4gICgqIGRvIG5vdCByZW1vdmUsIGl0IHdpbGwgYmUgbmVjZXNzYXJ5IGZvciBkZWFsaW5nIGVmZmVjdGl2ZWx5IHdpdGggdW5hcnkvYmluYXJ5IHJ1bGUgKilcblxuICB0eXBlIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgfCBDb3VudGVyIG9mIGludFxuICAgIHwgUG9pbnRlcl90b19hZ2VudCBvZiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcbiAgICB8IEludGVybmFsX3N0YXRlX2lzIG9mIENJLlBvLksuaW50ZXJuYWxfc3RhdGVcbiAgICB8IERlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIGV4aXN0LCBidXQgd2UgZG8gbm90IGtub3cgd2hhdCB0aGUgdmFsdWUgaXMgKilcbiAgICB8IFVuZGVmaW5lZCAgKCoqIHRoZSB3aXJlIGRvZXMgbm90IGV4aXN0IHlldCAqKVxuICAgIHwgUHJlc2VudCAgKCoqIGZvciBhZ2VudCBwcmVzZW5jZSAqKVxuICAgIHwgRnJlZSAgKCoqIGZvciBiaW5kaW5nIHNpdGVzICopXG4gICAgfCBCb3VuZCAgKCoqIGZvciBiaW5kaW5nIHNpdGVzIChwYXJ0aWFsIGluZm9ybWF0aW9uKSAqKVxuICAgIHwgQm91bmRfdG8gb2ZcbiAgICAgICAgcHJlZGljYXRlX2lkXG4gICAgICAgICogQ0kuUG8uSy5hZ2VudF9pZFxuICAgICAgICAqIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuICAgICAgICAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAgICgqKiBmb3IgYmluZGluZiBzaXRlcyAoY29tcGxldGUgaW5mb3JtYXRpb24pICopXG4gICAgfCBCb3VuZF90b190eXBlIG9mIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAgICgqKiBmb3IgYmluZGluZyBzaXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbiAqKVxuICAgIHwgVW5rbm93blxuICAgICAgICAoKiogIGZvciBhZ2VudCBwcmVzZW5jZSwgaW50ZXJuYWwgc3RhdGVzLCBiaW5kaW5nIHN0YXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbiAqKVxuXG4gIG1vZHVsZSBDIDogQ2FjaGUuQ2FjaGUgd2l0aCB0eXBlIE8udCA9IHByZWRpY2F0ZV92YWx1ZSA9IENhY2hlLkNhY2hlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfdmFsdWVcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbGV0IHdlYWtlbmluZyBwID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50IHwgRnJlZVxuICAgIHwgQm91bmQgLT5cbiAgICAgIFsgcDsgRGVmaW5lZCBdXG4gICAgfCBCb3VuZF90byAoXywgXywgYWcsIHNpdGUpIC0+XG4gICAgICBbIHA7IEJvdW5kX3RvX3R5cGUgKGFnLCBzaXRlKTsgQm91bmQ7IERlZmluZWQgXVxuICAgIHwgQm91bmRfdG9fdHlwZSBfIC0+IFsgcDsgQm91bmQ7IERlZmluZWQgXVxuICAgIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPiBbIHAgXVxuICAgIHwgVW5rbm93biAtPiBbXVxuXG4gIGxldCBkZWZpbmVkID0gRGVmaW5lZFxuICBsZXQgdW5kZWZpbmVkID0gVW5kZWZpbmVkXG4gIGxldCB1bmtub3duID0gVW5rbm93blxuICBsZXQgaXNfdW5rbm93biB4ID0geCA9IFVua25vd25cbiAgbGV0IGlzX3VuZGVmaW5lZCB4ID0geCA9IFVuZGVmaW5lZFxuXG4gICgqKiBtYXBzIGFuZCBzZXRzICopXG5cbiAgbW9kdWxlIFByZWRpY2F0ZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfaW5mb1xuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUHJlZGljYXRlU2V0ID0gUHJlZGljYXRlU2V0TWFwLlNldFxuICBtb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlU2V0TWFwLk1hcFxuXG4gIG1vZHVsZSBDYXNlVmFsdWVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX3ZhbHVlXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBDYXNlVmFsdWVTZXQgPSBDYXNlVmFsdWVTZXRNYXAuU2V0XG4gIG1vZHVsZSBQcmVkaWNhdGVpZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBQcmVkaWNhdGVpZE1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBTaWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZE1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBBZ2VudElkMk1hcCA9IE1vZHMuSW50Mk1hcFxuICBtb2R1bGUgQWdlbnRJZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBBZ2VudElkMlNldCA9IE1vZHMuSW50MlNldFxuICBtb2R1bGUgU2l0ZUlkU2V0ID0gTW9kcy5JbnQyU2V0XG4gIG1vZHVsZSBTaXRlSWRNYXAgPSBNb2RzLkludDJNYXBcblxuICB0eXBlIHByZV9ibGFja2JvYXJkID0ge1xuICAgIHByZV9maWN0aXRpb3VzX2xpc3Q6IHByZWRpY2F0ZV9pZCBsaXN0O1xuICAgICAgICAoKiogbGlzdCBvZiB3aXJlIGZvciBtdXR1YWwgZXhjbHVzaW9ucywgdGhlIHN0YXRlIG11c3QgYmUgdW5kZWZpbmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRyYWNlICopXG4gICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChzdGVwX3Nob3J0X2lkXG4gICAgICAqIChzdGVwX2lkICogc3RlcF9zaG9ydF9pZCAqIHByZWRpY2F0ZV92YWx1ZSAqIHByZWRpY2F0ZV92YWx1ZSkgbGlzdClcbiAgICAgIEEudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIHRvIHRoZSBsYXN0IGtub3duIHZhbHVlIGFuZCB0aGUgbGlzdCBvZiBzdGVwIChzdGVwIGlkLHRlc3QsYWN0aW9uKSopXG4gICAgcHJlX2tpbmRfb2ZfZXZlbnQ6IHJ1bGVfdHlwZSBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggZXZlbnQgaWQgdG8gdGhlIGtpbmQgb2YgZXZlbnQgKilcbiAgICBwcmVfZXZlbnQ6IFRyYWNlLnN0ZXAgQS50OyAgKCoqIG1hcHMgZWFjaCBldmVudCB0byB0aGUgc3RlcCAqKVxuICAgIHByZV9uc3RlcHM6IHN0ZXBfaWQ7ICAoKippZCBvZiB0aGUgbGFzdCBldmVudCAqKVxuICAgIHByZV9uY29sdW1uOiBwcmVkaWNhdGVfaWQ7ICAoKippZCBvZiB0aGUgbGFzdCB3aXJlICopXG4gICAgcHJlX2NvbHVtbl9tYXA6IHByZWRpY2F0ZV9pZCBQcmVkaWNhdGVNYXAudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIGxhYmVsIHRvIGl0cyB3aXJlIGlkICopXG4gICAgcHJlX2NvbHVtbl9tYXBfaW52OiBwcmVkaWNhdGVfaW5mbyBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCB0byBpdHMgd2lyZSBsYWJlbCAqKVxuICAgIHByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkOiBQcmVkaWNhdGVpZFNldC50IEEudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIGlkIGZvciB0aGUgcHJlc2VuY2Ugb2YgYW4gYWdlbnQgdG8gdGhlIHNldCBvZiB3aXJlcyBmb3IgaXRzIGF0dGlidXRlICh1c2VmdWwsIHdoZW4gYW4gYWdlbnQgZ2V0IHJlbW92ZWQsIGFsbCBpdHMgYXR0cmlidXRlcyBnZXQgdW5kZWZpbmVkICopXG4gICAgaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZDogQy50IEEudDtcbiAgICAgICAgKCogbWFwcyBlYWNoIHdpcmUgdG8gdGhlIHNldCBvZiBpdHMgcHJldmlvdXMgc3RhdGVzLCB0aGlzIHN1bW1hcml6ZSB0aGUgcG90ZW50aWFsIHN0YXRlIG9mIGEgc2l0ZSB0aGF0IGlzIGZyZWVkLCBzbyBhcyB0byBvdmVyYXBwcm94aW1hdGUgdGhlIHNldCBvZiBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzKilcbiAgICBoaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlOiBDSS5Qby5LLmFnZW50X2lkIGxpc3QgQS50O1xuICAgIHByZV9vYnNlcnZhYmxlX2xpc3Q6XG4gICAgICAoc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3Q7XG4gICAgcHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50OiBDSS5Qby5LLnNpZGVfZWZmZWN0IEEudDtcbiAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlOiBzdGVwX2lkIG9wdGlvbjtcbiAgICAgICAgKCppZCBvZiB0aGUgc3RlcCB0aGF0IGNsb3NlcyBhbGwgdGhlIHNpZGUtZWZmZWN0IG11dGV4ICopXG4gICAgcHJlX2xldmVsX29mX2V2ZW50OiBQcmlvcml0eS5sZXZlbCBBLnQ7XG4gIH1cblxuICBsZXQgbGV2ZWxzIGIgPSBiLnByZV9sZXZlbF9vZl9ldmVudFxuICBsZXQgZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiB4ID0geC5wcmVfY29sdW1uX21hcF9pbnZcblxuICBsZXQgZ2V0X3ByZV9ldmVudCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggPVxuICAgIGVycm9yLCBsb2dfaW5mbywgeC5wcmVfZXZlbnRcblxuICAoKiogcHJldHR5IHByaW50aW5nICopXG5cbiAgbGV0IHByaW50X3ByZWRpY2F0ZV9pbmZvIGxvZyB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEhlcmUgaSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiQWdlbnRfSGVyZSAlaVwiIGlcbiAgICB8IEJvdW5kX3NpdGUgKGksIHMpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJCaW5kaW5nX3N0YXRlICglaSwlaSlcIiBpIHNcbiAgICB8IEludGVybmFsX3N0YXRlIChpLCBzKSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiSW50ZXJuYWxfc3RhdGUgKCVpLCVpKVwiIGkgc1xuICAgIHwgUG9pbnRlciAoZWlkLCBpZCkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlBvaW50ZXIoZWlkOiVpLGFnX2lkOiVpKVwiIGVpZCBpZFxuICAgIHwgTGluayAoZWlkLCBpZDEsIGlkMikgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJMaW5rKGVpZDolaSwlaS0laSlcIiBlaWQgaWQxIGlkMlxuICAgIHwgTXV0ZXggKExvY2tfYWdlbnQgKGludCwgaW50MikpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXggKFN0ZXAtaWQ6JWksQWdlbnRfaWQ6JWkpXCIgaW50IGludDJcbiAgICB8IE11dGV4IChMb2NrX3JlY3Rhbmd1bGFyIChpbnQsIGludDIpKSAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk11dGV4X2ludiAoU3RlcC1pZDolaSxBZ2VudF9pZDolaSlcIiBpbnQgaW50MlxuICAgIHwgTXV0ZXggKExvY2tfbGlua3MgKGludCwgKGludDIsIGludDMpKSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9saW5rcyAoU3RlcC1pZDolaSwlaS0laSlcIiBpbnQgaW50MiBpbnQzXG4gICAgfCBNdXRleCAoTG9ja19zaWRlX2VmZmVjdCAoaW50LCBpbnQyLCBpbnQzLCBpbnQ0KSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9zaWRlX2VmZmVjdCAoU3RlcC1pZDolaSwlaS8laS4laSlcIiBpbnQgaW50MlxuICAgICAgICBpbnQzIGludDRcbiAgICB8IEZpY3RpdGlvdXMgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkZpY3RpdGlvdXNcIlxuXG4gIGxldCBwcmludF9rbm93biBsb2cgdCB4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFVua25vd24gLT4gKClcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50IHwgRnJlZVxuICAgIHwgQm91bmQgfCBCb3VuZF90byBfIHwgQm91bmRfdG9fdHlwZSBfIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgeFxuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQ291bnRlciBpbnQgLT4gXCJDb3VudGVyIFwiIF4gc3RyaW5nX29mX2ludCBpbnRcbiAgICB8IERlZmluZWQgLT4gXCJEZWZpbmVkXCJcbiAgICB8IEludGVybmFsX3N0YXRlX2lzIGludGVybmFsX3N0YXRlIC0+IHN0cmluZ19vZl9pbnQgaW50ZXJuYWxfc3RhdGVcbiAgICB8IFVuZGVmaW5lZCAtPiBcIlVuZGVmaW5lZFwiXG4gICAgfCBQcmVzZW50IC0+IFwiUHJlc2VudFwiXG4gICAgfCBGcmVlIC0+IFwiRnJlZVwiXG4gICAgfCBCb3VuZCAtPiBcIkJvdW5kXCJcbiAgICB8IEJvdW5kX3RvIChpZCwgYWdlbnRfaWQsIGFnZW50X25hbWUsIHNpdGUpIC0+XG4gICAgICBcIkJvdW5kKFwiIF4gc3RyaW5nX29mX2ludCBpZCBeIFwiLFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudF9pZCBeIFwiKFwiXG4gICAgICBeIHN0cmluZ19vZl9pbnQgYWdlbnRfbmFtZSBeIFwiKUBcIiBeIHN0cmluZ19vZl9pbnQgc2l0ZSBeIFwiKVwiXG4gICAgfCBCb3VuZF90b190eXBlIChhZ2VudCwgc2l0ZSkgLT5cbiAgICAgIFwiQm91bmQoXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50IF4gXCJAXCIgXiBzdHJpbmdfb2ZfaW50IHNpdGUgXiBcIilcIlxuICAgIHwgUG9pbnRlcl90b19hZ2VudCBhZ2VudF9pZCAtPiBcIlBvaW50ZXIoXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50X2lkIF4gXCIpXCJcbiAgICB8IFVua25vd24gLT4gXCJcIlxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHggPVxuICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIChzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHgpXG5cbiAgbGV0IHByaW50X3ByZWRpY2F0ZV9pZCBsb2cgYmxhY2tib2FyZCBpID1cbiAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlByZWRpY2F0ZTogJWkgXCIgaSBpblxuICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV9pbmZvIGxvZyBwcmVkaWNhdGVfaW5mbyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAoKVxuXG4gIGxldCBwcmludF9wcmVibGFja2JvYXJkIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbG9nID0gQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipQUkVCTEFDS0JPQVJEKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiAgYWdlbnQgdHlwZXMgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gbmFtZSAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJBZ2VudCBuYW1lOiAlaSBcIiBuYW1lIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiBpZDogJWkgXCIgeCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICgpKSlcbiAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogc3RlcHMgYnkgY29sdW1uICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIGlkIChuZXZlbnRzLCBsaXN0KSAtPlxuICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV9pZCBsb2cgYmxhY2tib2FyZCBpZCBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJuZXZlbnRzOiAlaSBcIiBuZXZlbnRzIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZWlkLCBzZWlkLCB0ZXN0LCBhY3Rpb24pIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkV2ZW50IGlkOiAlaSBcIiBlaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlNob3J0IGlkOiAlaSBcIiBzZWlkIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2tub3duIGxvZyB0ZXN0IFwiVEVTVDogICBcIiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgdGVzdCBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9rbm93biBsb2cgYWN0aW9uIFwiQUNUSU9OOiBcIiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgYWN0aW9uIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYgbGlzdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCItLS1cIiBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiBTaWRlIGVmZmVjdHMgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBsaXN0IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcImV2ZW50ICVpOiwgXCIgaSBpblxuICAgICAgICAgIGxldCAoKSA9IENJLlBvLksucHJpbnRfc2lkZV9lZmZlY3QgbG9nIGxpc3QgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqUHJlZGljYXRlX2lkIHJlbGF0ZWQgdG8gdGhlIHByZWRpY2F0ZSAqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBQcmVkaWNhdGVpZFNldC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlaVwiIHMgaW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICAgICAgICBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiLS0tXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqUGFzdCB2YWx1ZXMgb2YgYSBwcmVkaWNhdGUqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSBpblxuICAgICAgICAgIGxldCAoKSA9IEMuaXRlciAoZnVuIHMgLT4gcHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyBzKSBzIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIi0tLVwiIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqT2JzZXJ2YWJsZXMqXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGwsIF8pIC0+XG4gICAgICAgICAgbGV0IF8gPSBMaXN0Lml0ZXIgKExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlaSxcIikgbCBpblxuICAgICAgICAgIGxldCBfID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICAoKiogaW5mb3JtYXRpb24gbGF0dGljZSAqKVxuXG4gIGxldCBzdHJpY3RseV9tb3JlX3JlZmluZWQgeCB5ID1cbiAgICBtYXRjaCB5IHdpdGhcbiAgICB8IFVuZGVmaW5lZCB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50XG4gICAgfCBGcmVlIHwgQm91bmRfdG8gXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IEJvdW5kX3RvX3R5cGUgKGFnLCBzKSAtPlxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgfCBCb3VuZF90byAoXywgXywgYWcnLCBzJykgd2hlbiBhZyA9IGFnJyAmJiBzID0gcycgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgQm91bmQgLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgQm91bmRfdG8gXyB8IEJvdW5kX3RvX3R5cGUgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBEZWZpbmVkIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IFVua25vd24gfCBEZWZpbmVkIHwgVW5kZWZpbmVkIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSlcbiAgICB8IFVua25vd24gLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgVW5rbm93biAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpXG5cbiAgbGV0IG1vcmVfcmVmaW5lZCB4IHkgPSB4ID0geSB8fCBzdHJpY3RseV9tb3JlX3JlZmluZWQgeCB5XG5cbiAgbGV0IGNvbmogcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSA9XG4gICAgaWYgbW9yZV9yZWZpbmVkIHggeSB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIHhcbiAgICBlbHNlIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB5IHggdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB5XG4gICAgZWxzZVxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcImNvbmosICBBcmd1bWVudHMgaGF2ZSBubyBncmVhdGVzdCBsb3dlciBib3VuZFwiXG4gICAgICAgIChGYWlsdXJlIFwiQXJndW1lbnRzIGhhdmUgbm8gZ3JlYXRlc3QgbG93ZXIgYm91bmRcIikgVW5kZWZpbmVkXG5cbiAgbGV0IGNvbXBhdGlibGUgeCB5ID0geCA9IHkgfHwgbW9yZV9yZWZpbmVkIHggeSB8fCBtb3JlX3JlZmluZWQgeSB4XG5cbiAgbGV0IGRpc2p1bmN0aW9uIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5ID1cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBpZiB4ID0geSB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICAgICAgfCBVbmtub3duLCBfIHwgXywgVW5rbm93biB8IFVuZGVmaW5lZCwgXyB8IF8sIFVuZGVmaW5lZCAtPiBVbmtub3duXG4gICAgICAgIHwgRGVmaW5lZCwgXyB8IF8sIERlZmluZWQgLT4gRGVmaW5lZFxuICAgICAgICB8IENvdW50ZXIgXywgX1xuICAgICAgICB8IF8sIENvdW50ZXIgX1xuICAgICAgICB8IEZyZWUsIF9cbiAgICAgICAgfCBfLCBGcmVlXG4gICAgICAgIHwgUHJlc2VudCwgX1xuICAgICAgICB8IF8sIFByZXNlbnRcbiAgICAgICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBfLCBfXG4gICAgICAgIHwgXywgSW50ZXJuYWxfc3RhdGVfaXMgXyAtPlxuICAgICAgICAgIERlZmluZWRcbiAgICAgICAgfCBCb3VuZCwgXyB8IF8sIEJvdW5kIC0+IEJvdW5kXG4gICAgICAgIHwgQm91bmRfdG9fdHlwZSAoYSwgYiksIEJvdW5kX3RvIChfLCBfLCBjLCBkKVxuICAgICAgICB8IEJvdW5kX3RvIChfLCBfLCBhLCBiKSwgQm91bmRfdG8gKF8sIF8sIGMsIGQpXG4gICAgICAgIHwgQm91bmRfdG8gKF8sIF8sIGEsIGIpLCBCb3VuZF90b190eXBlIChjLCBkKVxuICAgICAgICAgIHdoZW4gYSA9IGMgJiYgYiA9IGQgLT5cbiAgICAgICAgICBCb3VuZF90b190eXBlIChhLCBiKVxuICAgICAgICB8IF8gLT4gQm91bmRcbiAgICAgICkgKVxuXG4gICgqKiBwcmVkaWNhdGUgaWQgYWxsb2NhdGlvbiAqKVxuXG4gICgqKiBpZiBhIHdpcmUgY29uY2VybnMgYW4gYWdlbnQsIHdoaWNoIG9uZSBpdCBpcyAqKVxuICBsZXQgYWdlbnRfaWRfb2ZfcHJlZGljYXRlIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgSGVyZSB4IC0+IFNvbWUgeFxuICAgIHwgQm91bmRfc2l0ZSAoeCwgXykgLT4gU29tZSB4XG4gICAgfCBJbnRlcm5hbF9zdGF0ZSAoeCwgXykgLT4gU29tZSB4XG4gICAgfCBQb2ludGVyIF8gfCBNdXRleCBfIHwgTGluayBfIHwgRmljdGl0aW91cyAtPiBOb25lXG5cbiAgbGV0IHJlYyBiaW5kIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgX3ByZWRpY2F0ZVxuICAgICAgcHJlZGljYXRlX2lkIGFnX2lkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICBpblxuICAgIGxldCBvbGRfc2V0ID1cbiAgICAgIHRyeSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHNpZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT4gUHJlZGljYXRlaWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBuZXdfc2V0ID0gUHJlZGljYXRlaWRTZXQuYWRkIHByZWRpY2F0ZV9pZCBvbGRfc2V0IGluXG4gICAgdHJ5XG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgc2lkIG5ld19zZXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcImJpbmQsIE91dCBvZiBib3VuZCBhY2Nlc3NcIlxuICAgICAgICAoRmFpbHVyZSBcImJpbmRcIikgYmxhY2tib2FyZFxuXG4gIGFuZCBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZSA9XG4gICAgbGV0IGFnX2lkID0gYWdlbnRfaWRfb2ZfcHJlZGljYXRlIHByZWRpY2F0ZSBpblxuICAgIGxldCBtYXAgPSBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwIGluXG4gICAgbGV0IG1hcF9pbnYgPSBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBpblxuICAgIG1hdGNoIFByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwcmVkaWNhdGUgbWFwIHdpdGhcbiAgICB8IFNvbWUgc2lkIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgc2lkJyA9IGJsYWNrYm9hcmQucHJlX25jb2x1bW4gKyAxIGluXG4gICAgICBsZXQgbWFwJyA9IFByZWRpY2F0ZU1hcC5hZGQgcHJlZGljYXRlIHNpZCcgbWFwIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IG1hcF9pbnYgc2lkJyBwcmVkaWNhdGUgaW5cbiAgICAgIGxldCBtYXBfaW52JyA9IG1hcF9pbnYgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkIHNpZCdcbiAgICAgICAgICAoQy5jcmVhdGUgcGFyYW1ldGVyLkNJLlBvLksuSC5jYWNoZV9zaXplKVxuICAgICAgaW5cbiAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAge1xuICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgIHByZV9uY29sdW1uID0gc2lkJztcbiAgICAgICAgICBwcmVfY29sdW1uX21hcCA9IG1hcCc7XG4gICAgICAgICAgcHJlX2NvbHVtbl9tYXBfaW52ID0gbWFwX2ludic7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgbWF0Y2ggYWdfaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIHwgU29tZSBhZ19pZCAtPlxuICAgICAgICAgIGJpbmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGUgc2lkJyBhZ19pZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkJ1xuXG4gIGxldCBjcmVhdGVfYWdlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdlbnRfaWQgPVxuICAgIGxldCBvbGRfbGlzdCA9XG4gICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlIGFnZW50X25hbWVcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtdXG4gICAgaW5cbiAgICBsZXQgbmV3X2xpc3QgPSBhZ2VudF9pZCA6OiBvbGRfbGlzdCBpblxuICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlIGFnZW50X25hbWUgbmV3X2xpc3QgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBmcmVlX2FnZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWdlbnRfaWQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnZW50X2lkKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2V0ID1cbiAgICAgIHRyeVxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIHByZWRpY2F0ZV9pZCApXG4gICAgICB3aXRoIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiZnJlZV9hZ2VudCwgVHJ5IHRvIGZyZWUgYW4gdW5leGlzdGluZyBhZ2VudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJmcmVlX2FnZW50XCIpIFByZWRpY2F0ZWlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgKGZ1biBwcmVkaWNhdGVfaWQgbWFwIC0+XG4gICAgICAgICAgbGV0IHByZWRpY2F0ZSA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIFByZWRpY2F0ZU1hcC5yZW1vdmUgcHJlZGljYXRlIG1hcClcbiAgICAgICAgc2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggcHJlX2NvbHVtbl9tYXAgPSBtYXAgfVxuXG4gIGxldCBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBhZ2VudF9pZCA9XG4gICAgaWYgUHJlZGljYXRlTWFwLm1lbSAoSGVyZSBhZ2VudF9pZCkgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcCB0aGVuXG4gICAgICBmcmVlX2FnZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWdlbnRfaWRcbiAgICBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3VicyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpbml0IGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGFnZW50X25hbWUgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIGNyZWF0ZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0MSwgbGlzdDIpIChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIEZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgbGV0IGxpc3QyID0gKHByZWRpY2F0ZV9pZCwgVW5kZWZpbmVkKSA6OiBsaXN0MiBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAoSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF0sXG4gICAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdIClcbiAgICAgICAgaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSwgW11cbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdLFxuICAgICAgICBbXSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IHNldCA9XG4gICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgcHJlZGljYXRlX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkLCBsaXN0ID1cbiAgICAgICAgUHJlZGljYXRlaWRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gcHJlZGljYXRlaWQgKGVycm9yLCBibGFja2JvYXJkLCBsaXN0KSAtPlxuICAgICAgICAgICAgZXJyb3IsIGJsYWNrYm9hcmQsIChwcmVkaWNhdGVpZCwgVW5kZWZpbmVkKSA6OiBsaXN0KVxuICAgICAgICAgIHNldFxuICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCwgW11cblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb25fc3VicyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGluaXRcbiAgICAgIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGFnZW50X25hbWUgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIGNyZWF0ZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0MSwgbGlzdDIpIChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIEZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgbGV0IGxpc3QyID0gKHByZWRpY2F0ZV9pZCwgVW5kZWZpbmVkKSA6OiBsaXN0MiBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAoSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF0sXG4gICAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdIClcbiAgICAgICAgaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSwgW11cbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdLFxuICAgICAgICBbXSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICAoKiAgICAgICAgICAgICAgIGxldCBlcnJvcixibGFja2JvYXJkID0gZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnX2lkIGluICopXG4gICAgICBsZXQgc2V0ID1cbiAgICAgICAgQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCBwcmVkaWNhdGVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0ID1cbiAgICAgICAgUHJlZGljYXRlaWRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gcHJlZGljYXRlaWQgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCkgLT5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgKHByZWRpY2F0ZWlkLCBVbmRlZmluZWQpIDo6IGxpc3QpXG4gICAgICAgICAgc2V0XG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCwgW11cblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb24gYm9vbCA9XG4gICAgaWYgYm9vbCB0aGVuXG4gICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbl9zdWJzXG4gICAgZWxzZVxuICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3Vic1xuXG4gIGxldCBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBpbnQpIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEludGVybmFsX3N0YXRlXG4gICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIGludCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMSA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTIgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHNpdGVfaWQxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IHNpdGVfaWQyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkMSA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkpXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkMiA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikpXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBCb3VuZF90byAocHJlZGljYXRlX2lkMiwgYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDIsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQxLCBhZ19pZDEsIGFnZW50X25hbWUxLCBzaXRlX2lkMSk7XG4gICAgICAgIF0gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzIC0+XG4gICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIEJvdW5kIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAocywgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbIHByZWRpY2F0ZV9pZCwgQm91bmRfdG9fdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKSBdIClcblxuICBsZXQgdHlwZV9vZl9zdGVwIHggPVxuICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHggdGhlblxuICAgICAgT2JzZXJ2YWJsZVxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19pbml0IHggdGhlblxuICAgICAgSW5pdFxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19ydWxlIHggdGhlblxuICAgICAgUnVsZVxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19zdWJzIHggdGhlblxuICAgICAgU3Vic1xuICAgIGVsc2VcbiAgICAgIER1bW15XG5cbiAgKCoqIGluaXRpYWxpc2F0aW9uKilcbiAgbGV0IGluaXQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAge1xuICAgICAgICBwcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgPSBBLm1ha2UgMSBDSS5Qby5LLmVtcHR5X3NpZGVfZWZmZWN0O1xuICAgICAgICBwcmVfZXZlbnQgPSBBLm1ha2UgMSAoVHJhY2UuZHVtbXlfc3RlcCBcIlwiKTtcbiAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IFtdO1xuICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uID0gQS5tYWtlIDEgKDEsIFtdKTtcbiAgICAgICAgcHJlX25zdGVwcyA9IC0xO1xuICAgICAgICBwcmVfbmNvbHVtbiA9IC0xO1xuICAgICAgICBwcmVfY29sdW1uX21hcCA9IFByZWRpY2F0ZU1hcC5lbXB0eTtcbiAgICAgICAgcHJlX2NvbHVtbl9tYXBfaW52ID0gQS5tYWtlIDEgRmljdGl0aW91cztcbiAgICAgICAgcHJlX2tpbmRfb2ZfZXZlbnQgPSBBLm1ha2UgMSAoU2lkZV9lZmZlY3Rfb2YgKC0xLCBbXSkpO1xuICAgICAgICBoaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkID0gQS5tYWtlIDEgKEMuY3JlYXRlIE5vbmUpO1xuICAgICAgICBoaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlID0gQS5tYWtlIDEgW107XG4gICAgICAgIHByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkID1cbiAgICAgICAgICBBLm1ha2UgMSBQcmVkaWNhdGVpZFNldC5lbXB0eTtcbiAgICAgICAgcHJlX29ic2VydmFibGVfbGlzdCA9IFtdO1xuICAgICAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlID0gTm9uZTtcbiAgICAgICAgcHJlX2xldmVsX29mX2V2ZW50ID0gQS5tYWtlIDEgUHJpb3JpdHkuaGlnaGVzdDtcbiAgICAgIH0gKVxuXG4gIGxldCBnZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICB0cnkgZXJyb3IsIGxvZ19pbmZvLCBBLmdldCBibGFja2JvYXJkLnByZV9sZXZlbF9vZl9ldmVudCBlaWRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyAoRmFpbHVyZSBcIlVOa25vd24gZXZlbnRcIilcbiAgICAgICAgUHJpb3JpdHkuaGlnaGVzdFxuXG4gIGxldCBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkID1cbiAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvIGluXG4gICAgbGV0IHRlc3QgPSBVbmRlZmluZWQgaW5cbiAgICBsZXQgYWN0aW9uID0gQ291bnRlciAwIGluXG4gICAgbGV0IF8gPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZFxuICAgICAgICAoMiwgWyBuc2lkLCAxLCB0ZXN0LCBhY3Rpb24gXSlcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggcHJlX25zdGVwcyA9IG5zaWQgfVxuXG4gIGxldCBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uX2F0X25zaWQgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgbnNpZFxuICAgICAgPVxuICAgIGxldCB0ZXN0ID0gVW5kZWZpbmVkIGluXG4gICAgbGV0IGFjdGlvbiA9IENvdW50ZXIgMCBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgKDIsIFsgbnNpZCwgMSwgdGVzdCwgYWN0aW9uIF0pXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZCBpbml0X3N0ZXAgPVxuICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgU29tZSBibGFja2JvYXJkLnByZV9uc3RlcHNcbiAgICB8IFNvbWUgbnNpZCAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb25fYXRfbnNpZCBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgIG5zaWRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcFxuXG4gIGxldCBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgdGVzdCBhY3Rpb24gcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgPVxuICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzIGluXG4gICAgbGV0IG1hcCA9IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBpblxuICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBwcmVkaWNhdGVfaWQgaW5cbiAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgbGV0IF8gPVxuICAgICAgQS5zZXQgbWFwIHByZWRpY2F0ZV9pZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICBpblxuICAgIGVycm9yLCBibGFja2JvYXJkXG5cbiAgbGV0IHNpZGVfZWZmZWN0IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkIHMgc2l0ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBEZWZpbmVkIHwgQ291bnRlciBfIHwgSW50ZXJuYWxfc3RhdGVfaXMgXyB8IFVuZGVmaW5lZCB8IFBvaW50ZXJfdG9fYWdlbnQgX1xuICAgIHwgUHJlc2VudCB8IEJvdW5kIHwgQm91bmRfdG9fdHlwZSBfIHwgVW5rbm93biAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIklsbGVnYWwgc3RhdGUgZm9yIGEgc2lkZS1lZmZlY3RzXCJcbiAgICAgICAgKEZhaWx1cmUgXCJCbGFja2JvYXJkX2dlbmVyYXRpb24uc2lkZV9lZmZlY3RcIikgW11cbiAgICB8IEZyZWUgLT4gZXJyb3IsIGxvZ19pbmZvLCBbIHByZWRpY2F0ZV90YXJnZXRfaWQsIE5vbmUsIChGcmVlLCBVbmtub3duKSBdXG4gICAgfCBCb3VuZF90byAocGlkLCBhZywgYWdlbnRfbmFtZSwgc25hbWUpIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV90YXJnZXRfaWQsIE5vbmUsIChzLCBVbmtub3duKTtcbiAgICAgICAgICAoIHBpZCxcbiAgICAgICAgICAgIFNvbWUgKChhZywgYWdlbnRfbmFtZSksIHNuYW1lKSxcbiAgICAgICAgICAgICggQm91bmRfdG9cbiAgICAgICAgICAgICAgICAoIHByZWRpY2F0ZV90YXJnZXRfaWQsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSxcbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHNpdGUsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgKSxcbiAgICAgICAgICAgICAgRnJlZSApICk7XG4gICAgICAgIF0gKVxuXG4gIGxldCBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBJbnN0YW50aWF0aW9uLkFOWSAtPiBlcnJvciwgbG9nX2luZm8sIFVua25vd25cbiAgICB8IEluc3RhbnRpYXRpb24uRlJFRSAtPiBlcnJvciwgbG9nX2luZm8sIEZyZWVcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkQgLT4gZXJyb3IsIGxvZ19pbmZvLCBCb3VuZFxuICAgIHwgSW5zdGFudGlhdGlvbi5CT1VORF9UWVBFIGJ0IC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgQm91bmRfdG9fdHlwZVxuICAgICAgICAgICggQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2JpbmRpbmdfdHlwZSBidCxcbiAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSBidCApIClcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkRfdG8gXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIklsbGVnYWwgYmluZGluZyBzdGF0ZSBpbiBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZVwiXG4gICAgICAgIChGYWlsdXJlIFwicHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGVcIikgVW5rbm93blxuXG4gIGxldCBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc2l0ZVxuICAgICAgYmluZGluZ19zdGF0ZSA9XG4gICAgbGV0IGFnZW50X2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc2l0ZV9uYW1lID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX3RhcmdldF9pZCA9XG4gICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIChCb3VuZF9zaXRlIChhZ2VudF9pZCwgc2l0ZV9uYW1lKSlcbiAgICBpblxuICAgIGxldCBmb3JtZXJfc3RhdGVzID1cbiAgICAgIEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICBwcmVkaWNhdGVfdGFyZ2V0X2lkXG4gICAgaW5cbiAgICBtYXRjaCBwYXJhbWV0ZXIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgICAgbGV0IHMgPSBDLmxhc3QgZm9ybWVyX3N0YXRlcyBpblxuICAgICAgKG1hdGNoIHMgd2l0aFxuICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW11cbiAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJ0ID1cbiAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgICBpblxuICAgICAgICBpZiBtb3JlX3JlZmluZWQgcyBidCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsID1cbiAgICAgICAgICAgIHNpZGVfZWZmZWN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV90YXJnZXRfaWQgc1xuICAgICAgICAgICAgICBzaXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgbCBdXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10pXG4gICAgfCBTb21lIChTdG9yeV9qc29uLlN0cm9uZyB8IFN0b3J5X2pzb24uV2VhaykgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJ0ID1cbiAgICAgICAgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBiaW5kaW5nX3N0YXRlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIEMuZm9sZFxuICAgICAgICAgIChmdW4gcyAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0KSAtPlxuICAgICAgICAgICAgaWYgbW9yZV9yZWZpbmVkIHMgYnQgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGwgPVxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV90YXJnZXRfaWRcbiAgICAgICAgICAgICAgICAgIHMgc2l0ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGwgOjogbGlzdFxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdClcbiAgICAgICAgICBmb3JtZXJfc3RhdGVzIChlcnJvciwgbG9nX2luZm8sIFtdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdFxuXG4gIHR5cGUgZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nID0ge1xuICAgIG5ld19hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICBvbGRfYWdlbnRzOiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWUgQWdlbnRJZE1hcC50O1xuICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbjogQ0kuUG8uSy5hZ2VudF9pZCBsaXN0IEFnZW50SWRNYXAudDtcbiAgICBzdXJlX2FnZW50czogQWdlbnRJZFNldC50O1xuICAgIHN1cmVfbGlua3M6IEFnZW50SWQyU2V0LnQ7XG4gICAgb3RoZXJfbGlua3M6IEFnZW50SWQyU2V0LnQ7XG4gICAgc2l0ZXNfaW5fb3RoZXJfbGlua3M6IFNpdGVJZFNldC50O1xuICAgIHNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rczogU2l0ZUlkU2V0LnQ7XG4gICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlczogQ0kuUG8uSy5hZ2VudF9pZCBTaXRlSWRNYXAudDtcbiAgICBvdGhlcl9saW5rc19hY3Rpb25fc2l0ZXM6IENJLlBvLksuYWdlbnRfaWQgU2l0ZUlkTWFwLnQ7XG4gICAgc3VyZV90ZXN0czogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdDtcbiAgICBzdXJlX2FjdGlvbnM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdDtcbiAgICBjcmVhdGVfYWN0aW9uczogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0O1xuICAgIHN1cmVfc2lkZV9lZmZlY3RzOlxuICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3N0YXRlKVxuICAgICAgbGlzdDtcbiAgICBvdGhlcl9hZ2VudHNfdGVzdHM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IEFnZW50SWRNYXAudDtcbiAgICBvdGhlcl9hZ2VudHNfYWN0aW9uczpcbiAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfdGVzdHM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IEFnZW50SWQyTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfYWN0aW9uczpcbiAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCBBZ2VudElkMk1hcC50O1xuICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5OiBBZ2VudElkMlNldC50O1xuICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHM6XG4gICAgICAoSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmJpbmRpbmdfc3RhdGUpXG4gICAgICBsaXN0XG4gICAgICBBZ2VudElkTWFwLnQ7XG4gICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3M6IEFnZW50SWRTZXQudDtcbiAgICBydWxlX2FnZW50X2lkX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZE1hcC50O1xuICAgIHJ1bGVfYWdlbnRfaWRfc3ViczogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZE1hcC50O1xuICAgIGxpbmtzX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZDJNYXAudDtcbiAgICByZW1vdmVkX2FnZW50czogQWdlbnRJZFNldC50O1xuICAgIHJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M6IFNpdGVJZFNldC50O1xuICB9XG5cbiAgbGV0IGluaXRfZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nID1cbiAgICB7XG4gICAgICBuZXdfYWdlbnRzID0gQWdlbnRJZFNldC5lbXB0eTtcbiAgICAgIG9sZF9hZ2VudHMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIHN1cmVfYWdlbnRzID0gQWdlbnRJZFNldC5lbXB0eTtcbiAgICAgIHN1cmVfbGlua3MgPSBBZ2VudElkMlNldC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc190ZXN0X3NpdGVzID0gU2l0ZUlkTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzID0gU2l0ZUlkTWFwLmVtcHR5O1xuICAgICAgc2l0ZXNfaW5fb3RoZXJfbGlua3MgPSBTaXRlSWRTZXQuZW1wdHk7XG4gICAgICBzaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3MgPSBTaXRlSWRTZXQuZW1wdHk7XG4gICAgICBzdXJlX3Rlc3RzID0gW107XG4gICAgICBzdXJlX2FjdGlvbnMgPSBbXTtcbiAgICAgIGNyZWF0ZV9hY3Rpb25zID0gW107XG4gICAgICBzdXJlX3NpZGVfZWZmZWN0cyA9IFtdO1xuICAgICAgb3RoZXJfYWdlbnRzX3Rlc3RzID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2FnZW50c19hY3Rpb25zID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5ID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc190ZXN0cyA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfYWN0aW9ucyA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBzdWJzX2FnZW50c19pbnZvbHZlZF9pbl9saW5rcyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBydWxlX2FnZW50X2lkX211dGV4ID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBsaW5rc19tdXRleCA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICByZW1vdmVkX2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgIH1cblxuICBsZXQgcHJpbnRfZGF0YV9zdHJ1Y3R1cmUgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBfZGF0YSA9XG4gICAgKCogbGV0IHN0ZGVyciA9IHBhcmFtZXRlci5DSS5Qby5LLkgub3V0X2NoYW5uZWxfZXJyIGluXG4gICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGhhbmRsZXIuQ0kuUG8uSy5ILmVudiBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiTmV3IGFnZW50czogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkU2V0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaSBALlwiKSBkYXRhLm5ld19hZ2VudHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiT2xkIGFnZW50czogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiBpZDolaTogdHlwZTolaSBALlwiKSBkYXRhLm9sZF9hZ2VudHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiT2xkIGFnZW50cyBpbXBsaWVkIGluIGxpbmtzOiBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIEFnZW50SWRTZXQuaXRlciAoRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpIEAuXCIpIGRhdGEuc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3NcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiVGVzdGVkX2xpbmtzX21hcDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBTaXRlSWRNYXAuaXRlciAoZnVuIChhLGIpIC0+IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaS4laSAtPiAlaSBALlwiIGEgYiApIGRhdGEub3RoZXJfbGlua3NfdGVzdF9zaXRlcyBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiTW9kaWZpZWRfbGlua3NfbWFwOiBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIFNpdGVJZE1hcC5pdGVyIChmdW4gKGEsYikgLT4gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpLiVpIC0+ICVpIEAuXCIgYSBiICkgZGF0YS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiUG90ZW50aWFsIHN1YnN0aXR1dGlvbjogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXJcbiAgICAgICAgIChmdW4gaWQgbCAtPlxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiIGlkOiVpQC5cIiBpZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAgICVpQC5cIikgbClcbiAgICAgICAgIGRhdGEub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgYWdlbnRzOkAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZFNldC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWlALlwiKSBkYXRhLnN1cmVfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgdGVzdHM6QFs8diAxPiVhQF1ALlwiXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgZGF0YS5zdXJlX3Rlc3RzIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJUZXN0cyB0byBiZSBzdWJzdGl0dXRlZDpAWzx2IDE+QCwlYSVhQF1ALlwiXG4gICAgICAgKFBwLnNldCB+dHJhaWxpbmc6UHAuc3BhY2UgQWdlbnRJZE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoaWQsbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGZcIiVpQCwlYVwiIGlkXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgbFxuICAgICAgICkpXG4gICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfdGVzdHNcbiAgICAgICAoUHAuc2V0IEFnZW50SWQyTWFwLmJpbmRpbmdzIFBwLnNwYWNlXG4gICAgICAgKGZ1biBmICgoaWQxLGlkMiksbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGYgXCIoJWksJWkpQCwlYVwiIGlkMSBpZDJcbiAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV90ZXN0IH5zaWdzKSlcbiAgICAgICBsKSlcbiAgICAgICBkYXRhLm90aGVyX2xpbmtzX3Rlc3RzIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIGFjdGlvbnM6QFs8diAxPiVhQF1ALlwiXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBkYXRhLnN1cmVfYWN0aW9ucyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiQWN0aW9ucyB0byBiZSBzdWJzdGl0dXRlZDpAWzx2IDE+QCwlYSVhQF1ALlwiXG4gICAgICAgKFBwLnNldCB+dHJhaWxpbmc6UHAuc3BhY2UgQWdlbnRJZE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoaWQsbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGZcIiVpQCwlYVwiIGlkXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBsXG4gICAgICAgKSlcbiAgICAgICBkYXRhLm90aGVyX2FnZW50c19hY3Rpb25zXG4gICAgICAgKFBwLnNldCBBZ2VudElkMk1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoKGlkMSxpZDIpLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmIFwiKCVpLCVpKUAsJWFcIiBpZDEgaWQyXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBsKSlcbiAgICAgICBkYXRhLm90aGVyX2xpbmtzX2FjdGlvbnMgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgc2lkZV9lZmZlY3RzIEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAoQ0kuUG8uSy5wcmludF9zaWRlIHN0ZGVyciBoYW5kbGVyIFwiIFwiKVxuICAgICAgICAgZGF0YS5zdXJlX3NpZGVfZWZmZWN0c1xuICAgICAgIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTaWRlIGVmZmVjdCB0byBiZSBzdWJzdGl0dXRlZDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXJcbiAgICAgICAgIChmdW4gaWQgbCAtPlxuICAgICAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaUAuXCIgaWQgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgKENJLlBvLksucHJpbnRfc2lkZSBzdGRlcnIgaGFuZGxlciBcIiAgXCIpXG4gICAgICAgICAgICAgICBsXG4gICAgICAgICAgIGluICgpKVxuICAgICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzXG4gICAgICAgaW4qKVxuICAgIGVycm9yXG5cbiAgbGV0IGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc2l0ZXNfaW5fb3RoZXJfbGlua3MgPVxuICAgICAgICBTaXRlSWRTZXQuYWRkIHNpdGUgZGF0YV9zdHJ1Y3R1cmUuc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgfVxuXG4gIGxldCBhZGRfc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID0gYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyBzaXRlIGRhdGFfc3RydWN0dXJlIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzID1cbiAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rcztcbiAgICB9XG5cbiAgbGV0IG1lbV9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rcyBzaXRlIGRhdGFfc3RydWN0dXJlID1cbiAgICBTaXRlSWRTZXQubWVtIHNpdGUgZGF0YV9zdHJ1Y3R1cmUuc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG5cbiAgbGV0IGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfdGVzdHMgPSB0ZXN0IDo6IGRhdGFfc3RydWN0dXJlLnN1cmVfdGVzdHMgfVxuXG4gIGxldCBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBvbGQgPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gYWdfaWQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3Rlc3RzXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9hZ2VudHNfdGVzdHMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAodGVzdCA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c190ZXN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IGxpbmsgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBhLCBiID0gZnN0IGxpbmssIHNuZCBsaW5rIGluXG4gICAgbGV0IGxpbmsgPVxuICAgICAgaWYgYSA8IGIgdGhlblxuICAgICAgICBsaW5rXG4gICAgICBlbHNlXG4gICAgICAgIGIsIGFcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSwgb2xkID1cbiAgICAgIG1hdGNoIEFnZW50SWQyTWFwLmZpbmRfb3B0aW9uIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHMgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZGF0YV9zdHJ1Y3R1cmUsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuYWRkIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSApXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9saW5rc190ZXN0cyA9XG4gICAgICAgIEFnZW50SWQyTWFwLmFkZCBsaW5rICh0ZXN0IDo6IG9sZCkgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlID1cbiAgICB7IGRhdGFfc3RydWN0dXJlIHdpdGggc3VyZV9hY3Rpb25zID0gYWN0aW9uIDo6IGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9ucyB9XG5cbiAgbGV0IGFkZF9jcmVhdGVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgY3JlYXRlX2FjdGlvbnMgPSBhY3Rpb24gOjogZGF0YV9zdHJ1Y3R1cmUuY3JlYXRlX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19hY3Rpb24gYWN0aW9uIGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnX2lkIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19hY3Rpb25zXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9hZ2VudHNfYWN0aW9ucyA9XG4gICAgICAgIEFnZW50SWRNYXAuYWRkIGFnX2lkIChhY3Rpb24gOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9ucztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgYSwgYiA9IGZzdCBsaW5rLCBzbmQgbGluayBpblxuICAgIGxldCBsaW5rID1cbiAgICAgIGlmIGEgPCBiIHRoZW5cbiAgICAgICAgbGlua1xuICAgICAgZWxzZVxuICAgICAgICBiLCBhXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUsIG9sZCA9XG4gICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnMgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZGF0YV9zdHJ1Y3R1cmUsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuYWRkIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSApXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9saW5rc19hY3Rpb25zID1cbiAgICAgICAgQWdlbnRJZDJNYXAuYWRkIGxpbmsgKGFjdGlvbiA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3VyZV9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc3VyZV9zaWRlX2VmZmVjdHMgPSBzaWRlX2VmZmVjdCA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX3NpZGVfZWZmZWN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0IGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgc2l0ZSA9IGZzdCBzaWRlX2VmZmVjdCBpblxuICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IGFnZW50X2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgIGxldCBvbGQgPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gYWdlbnRfaWRcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cyA9XG4gICAgICAgIEFnZW50SWRNYXAuYWRkIGFnX2lkIChzaWRlX2VmZmVjdCA6OiBvbGQpXG4gICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdGVwX3N0cm9uZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgc3RlcF9pZCA9XG4gICAgbGV0IGluaXQgPSBUcmFjZS5zdGVwX2lzX2luaXQgc3RlcCBpblxuICAgIGxldCBwcmVfZXZlbnQgPSBibGFja2JvYXJkLnByZV9ldmVudCBpblxuICAgIGxldCB0ZXN0X2xpc3QgPSBUcmFjZS50ZXN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIHNpZGVfZWZmZWN0ID0gVHJhY2UuYWN0aW9uc19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPSBpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIF8pIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgbmV3X2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnKVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUubmV3X2FnZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnMV9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnMl9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHNpdGUxX2lkID0gYWcxX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTJfaWQgPSBhZzJfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICBvdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMgPVxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5hZGQgc2l0ZTFfaWQgYWcyX2lkXG4gICAgICAgICAgICAgICAgICAoU2l0ZUlkTWFwLmFkZCBzaXRlMl9pZCBhZzFfaWRcbiAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZ2VudCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIHJlbW92ZWRfYWdlbnRzID1cbiAgICAgICAgICAgICAgICBBZ2VudElkU2V0LmFkZFxuICAgICAgICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQpXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX2FnZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgdGVzdCAtPlxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb2xkX2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnKVxuICAgICAgICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWcxX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWcyX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTFfaWQgPSBhZzFfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlMl9pZCA9IGFnMl9pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0gYWcxX2lkIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlMV9pZFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICBpZiBBZ2VudElkU2V0Lm1lbSBhZzJfaWQgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICBTaXRlSWRTZXQuYWRkIHNpdGUyX2lkXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICBvdGhlcl9saW5rc190ZXN0X3NpdGVzID1cbiAgICAgICAgICAgICAgICBTaXRlSWRNYXAuYWRkIHNpdGUxX2lkIGFnMl9pZFxuICAgICAgICAgICAgICAgICAgKFNpdGVJZE1hcC5hZGQgc2l0ZTJfaWQgYWcxX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSB0ZXN0X2xpc3RcbiAgICBpblxuICAgIGxldCB0ZXN0ZWRfc2l0ZXMgPVxuICAgICAgU2l0ZUlkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBhIF8gLT4gU2l0ZUlkU2V0LmFkZCBhKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzIFNpdGVJZFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1vZF9zaXRlcyA9XG4gICAgICBTaXRlSWRNYXAuZm9sZFxuICAgICAgICAoZnVuIGEgXyAtPiBTaXRlSWRTZXQuYWRkIGEpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyBTaXRlSWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBwcmlvcml0eV9zaXRlcyA9IFNpdGVJZFNldC5pbnRlciB0ZXN0ZWRfc2l0ZXMgbW9kX3NpdGVzIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIHtcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICBvbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb24gPVxuICAgICAgICAgIEFnZW50SWRNYXAubWFwXG4gICAgICAgICAgICAoQS5nZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlKVxuICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50cztcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7IGRhdGFfc3RydWN0dXJlIHdpdGggc3VyZV9hZ2VudHMgPSBkYXRhX3N0cnVjdHVyZS5uZXdfYWdlbnRzIH1cbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgc3VyZV9hZ2VudHMgPVxuICAgICAgICAgIEFnZW50SWRNYXAuZm9sZFxuICAgICAgICAgICAgKGZ1biBpZCBsIHN1cmVfYWdlbnRzIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgXyBdIC0+IEFnZW50SWRTZXQuYWRkIGlkIHN1cmVfYWdlbnRzXG4gICAgICAgICAgICAgIHwgXyAtPiBzdXJlX2FnZW50cylcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHM7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgc3VyZV9hZ2VudCA9XG4gICAgICBpZiBpbml0IHRoZW5cbiAgICAgICAgZnVuIF8gLT5cbiAgICAgIHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgZnVuIHggLT5cbiAgICAgIEFnZW50SWRTZXQubWVtIHggZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHNcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID1cbiAgICAgICAgICBBZ2VudElkU2V0LmZvbGQgQWdlbnRJZE1hcC5yZW1vdmUgZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHNcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbjtcbiAgICAgIH1cbiAgICBpblxuXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgdGVzdCAtPlxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIF8gfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudDIgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MiBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZDFcbiAgICAgICAgICAgICAgJiYgKG5vdCAoU2l0ZUlkU2V0Lm1lbSAoYWdfaWQxLCBzaXRlX2lkMSkgcHJpb3JpdHlfc2l0ZXMpKVxuICAgICAgICAgICAgICAmJiBzdXJlX2FnZW50IGFnX2lkMlxuICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMiwgc2l0ZV9pZDIpIHByaW9yaXR5X3NpdGVzKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBtaXhfc2l0ZTEgPSBhZ19pZDEsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgICAgbGV0IG1peF9zaXRlMiA9IGFnX2lkMiwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICAgIGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MgbWl4X3NpdGUxXG4gICAgICAgICAgICAgICAgICAoYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyBtaXhfc2l0ZTIgZGF0YV9zdHJ1Y3R1cmUpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIFNpdGVJZFNldC5tZW0gbWl4X3NpdGUxIHByaW9yaXR5X3NpdGVzXG4gICAgICAgICAgICAgICAgICB8fCBTaXRlSWRTZXQubWVtIG1peF9zaXRlMiBwcmlvcml0eV9zaXRlc1xuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0IGFnX2lkMSwgYWdfaWQyID1cbiAgICAgICAgICAgICAgICAgICAgaWYgYWdfaWQxIDwgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBhZ19pZDEsIGFnX2lkMlxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYWdfaWQyLCBhZ19pZDFcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJfbGlua3NfcHJpb3JpdHkgPVxuICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWQyU2V0LmFkZCAoYWdfaWQxLCBhZ19pZDIpXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgdGVzdF9saXN0KVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMilcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQxICYmIHN1cmVfYWdlbnQgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG4gICAgICAgICAgICAgICAgKGFnX2lkMSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSlcbiAgICAgICAgICAgICAgICAoYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgKGFnX2lkMiwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMilcbiAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlIChMaXN0LnJldiBhY3Rpb25fbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgc2l0ZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzaXRlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZFxuICAgICAgICAgICAgICAmJiBub3RcbiAgICAgICAgICAgICAgICAgICAoU2l0ZUlkU2V0Lm1lbVxuICAgICAgICAgICAgICAgICAgICAgIChhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2xpbmtzKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgc2l0ZV9pZDEgPSBhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmZpbmRfb3B0aW9uIHNpdGVfaWQxXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgYWdfaWQyIC0+XG4gICAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudDEgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IHNpdGVfbmFtZTEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX25hbWUyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHdlYWsxID1cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlMSwgKGFnZW50X25hbWUyLCBzaXRlX25hbWUyKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgd2VhazIgPVxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHNpdGUyLCAoYWdlbnRfbmFtZTEsIHNpdGVfbmFtZTEpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgKCBzdXJlX2FnZW50IGFnX2lkMVxuICAgICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMSwgc2l0ZV9uYW1lMSkgcHJpb3JpdHlfc2l0ZXMpLFxuICAgICAgICAgICAgICAgICBzdXJlX2FnZW50IGFnX2lkMlxuICAgICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMiwgc2l0ZV9uYW1lMikgcHJpb3JpdHlfc2l0ZXMpIClcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IHRydWUsIHRydWUgLT4gYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgICAgIGFkZF9zdXJlX3Rlc3Qgd2VhazFcbiAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdCB3ZWFrMiBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3Qgd2VhazEgYWdfaWQxXG4gICAgICAgICAgICAgICAgKGFkZF9zdXJlX3Rlc3Qgd2VhazJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHdlYWsxIGFnX2lkMVxuICAgICAgICAgICAgICAgIChhZGRfc3Vic190ZXN0IHdlYWsyIGFnX2lkMlxuICAgICAgICAgICAgICAgICAgIChhZGRfc3Vic190ZXN0X2xpbmsgdGVzdCAoYWdfaWQxLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlKSkpKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgdGVzdF9saXN0KVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIF8gLT4gYWRkX2NyZWF0ZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZ2VudCAtPlxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHNpdGUgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50IGluXG4gICAgICAgICAgICBsZXQgc2l0ZV9pZDEgPSBhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBpZiBtZW1fc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZV9pZDEgZGF0YV9zdHJ1Y3R1cmUgdGhlblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmZpbmRfb3B0aW9uIHNpdGVfaWQxXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGFnX2lkMiAtPlxuICAgICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiAoYWdfaWQsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoc2l0ZTEsIHNpdGUyKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudDIgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MiBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZDEgJiYgc3VyZV9hZ2VudCBhZ19pZDIgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiAoYWdfaWQxLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgaW5cblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHNpZGVfZWZmZWN0IC0+XG4gICAgICAgICAgbGV0IHNpdGUsIF8gPSBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgYWRkX3N1cmVfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGRfc3Vic19zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBhZ19pZCBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgc2lkZV9lZmZlY3RcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3MgPVxuICAgICAgICAgIChsZXQgZiB4IHNldCA9XG4gICAgICAgICAgICAgQWdlbnRJZDJNYXAuZm9sZFxuICAgICAgICAgICAgICAgKGZ1biAoYTEsIGEyKSBfIHNldCAtPiBBZ2VudElkU2V0LmFkZCBhMSAoQWdlbnRJZFNldC5hZGQgYTIgc2V0KSlcbiAgICAgICAgICAgICAgIHggc2V0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHNcbiAgICAgICAgICAgICAoZiBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zIEFnZW50SWRTZXQuZW1wdHkpKTtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBpbml0X3N0ZXAgPSBOb25lIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBydWxlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgXyxcbiAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgKGZ1biB4IGxcbiAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAtPlxuICAgICAgICAgICgqIHRoZSBmb2xsb3dpbmcgbXV0ZXggaXMgdXNlZCB0byBlbmNvZGUgdGhlIGZhY3QgdGhhdCB0aGUgYWdlbnQgeCBpbiB0aGUgbGhzIG9mIHRoZSBydWxlIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGV4YWN0ZWx5IG9uZSBhZ2VudCBpbiB0aGUgbWl4dHVyZSAqKVxuICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IE11dGV4IChMb2NrX2FnZW50IChzdGVwX2lkLCB4KSkgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcnVsZV9hZ2VudF9pZF9tdXRleCA9XG4gICAgICAgICAgICBBZ2VudElkTWFwLmFkZCB4IHByZWRpY2F0ZV9pZCBydWxlX2FnZW50X2lkX211dGV4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcnVsZV9hZ2VudF9pZF9zdWJzLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0geCBkYXRhX3N0cnVjdHVyZS5zdWJzX2FnZW50c19pbnZvbHZlZF9pbl9saW5rc1xuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IFBvaW50ZXIgKHN0ZXBfaWQsIHgpIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJ1bGVfYWdlbnRfaWRfc3VicyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgcnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcnVsZV9hZ2VudF9pZF9zdWJzLCBpbml0X3N0ZXBcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcCApID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSBpZCAtPlxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiSUQgb2YgYWdlbnQgaW4gdGhlIHJ1bGU6ICVpLCBJRCBvZiB0aGUgYWdlbnQgaW4gdGhlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZTogJWlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgeCBpZFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgc2V0JyA9IEFnZW50SWRTZXQuYWRkIGlkIHNldCBpblxuICAgICAgICAgICAgICAgIGlmIHNldCA9PSBzZXQnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIEFnZW50SWRNYXAubWVtIGlkIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXggdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICgqIFRoZSBtdXRleCBpcyBhbHJlYWR5IGRlY2xhcmVkLCBub3RoaW5nIHRvIGRvICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNdXRleCBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICgqIFRoZSBtdXRleCBoYXMgdG8gYmUgYWxsb2NhdGVkICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDcmVhdGUgTXV0ZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBNdXRleCAoTG9ja19yZWN0YW5ndWxhciAoc3RlcF9pZCwgaWQpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBtaXh0dXJlX2FnZW50X2lkX211dGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBpZCBwcmVkaWNhdGVfaWQgbWl4dHVyZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXRfc3RlcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZXQnLFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAoKiBUaGUgYWdlbnQgaW4gdGhlIG1peHR1cmUgaXMgc2VlbiBmb3IgdGhlIGZpcnN0IHRpbWUsIG5vIG5lZWQgZm9yIGEgbXV0ZXggZm9yIHRoZSBtb21lbnQgKilcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBhZ2VudCBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZSwgbm8gbmVlZCBmb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGV4IHlldFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgIHNldCcsXG4gICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgIGxcbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBydWxlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9zdWJzLFxuICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIEFnZW50SWRNYXAuZW1wdHksXG4gICAgICAgICAgQWdlbnRJZE1hcC5lbXB0eSxcbiAgICAgICAgICBBZ2VudElkTWFwLmVtcHR5LFxuICAgICAgICAgIGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBBZ2VudElkU2V0LmVtcHR5LFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgaW5cbiAgICBsZXQgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5lbXB0eSBpblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICBBZ2VudElkMlNldC5mb2xkXG4gICAgICAgIChmdW4geFxuICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBsaW5rc19tdXRleCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgIGluaXRfc3RlcCApIC0+XG4gICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID0gTXV0ZXggKExvY2tfbGlua3MgKHN0ZXBfaWQsIHgpKSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaW5rc19tdXRleCA9IEFnZW50SWQyTWFwLmFkZCB4IHByZWRpY2F0ZV9pZCBsaW5rc19tdXRleCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0IGluXG4gICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgaW5pdF9zdGVwIClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgbGlua3NfbXV0ZXg7XG4gICAgICAgIHJ1bGVfYWdlbnRfaWRfbXV0ZXg7XG4gICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicztcbiAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleDtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3QgfVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0IF8gPSBwcmludF9kYXRhX3N0cnVjdHVyZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBkYXRhX3N0cnVjdHVyZSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlaWRNYXAuYWRkIGlkIHZhbHVlIG1hcClcbiAgICAgICAgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5maW5kX2RlZmF1bHQgKFVua25vd24sIFVua25vd24pIHBpZCBtYXBcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdCA9XG4gICAgICAgIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB0ZXN0IHRlc3QnIHRoZW5cbiAgICAgICAgICB0ZXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0ZXN0J1xuICAgICAgaW5cbiAgICAgIGxldCBhY3Rpb24gPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgYWN0aW9uIGFjdGlvbicgdGhlblxuICAgICAgICAgIGFjdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWN0aW9uJ1xuICAgICAgaW5cbiAgICAgIGxldCBtYXAgPSBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgZmFkZCBwaWQgcCBtYXAgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBEZWZpbmVkIHwgUHJlc2VudCB8IEJvdW5kXG4gICAgICB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgICAgKClcbiAgICAgIHwgRnJlZSB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IEJvdW5kX3RvIF8gLT5cbiAgICAgICAgbGV0IG9sZCA9IEEuZ2V0IG1hcCBwaWQgaW5cbiAgICAgICAgQS5zZXQgbWFwIHBpZCAoQy5hZGQgcCBvbGQpXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCBjcmVhdGVkIGFnZW50cyAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHN0ZXBfaWQgPVxuICAgICAgbWF0Y2ggaW5pdF9zdGVwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHN0ZXBfaWRcbiAgICAgIHwgU29tZSBuc2lkIC0+XG4gICAgICAgIGxldCBuc2lkID0gbnNpZCBpblxuICAgICAgICBsZXQgbnNpZF92b2lkID0gbnNpZCArIDEgaW5cbiAgICAgICAgbGV0IG5zaWRfbmV4dCA9IG5zaWQgKyAxIGluXG4gICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IFtdIGluXG4gICAgICAgIGxldCBhY3Rpb25fbGlzdCA9IGRhdGFfc3RydWN0dXJlLmNyZWF0ZV9hY3Rpb25zIGluXG4gICAgICAgIGxldCB0ZXN0X2xpc3QgPSBbXSBpblxuICAgICAgICBsZXQgZmljdGl0aW91c19saXN0ID0gW10gaW5cblxuICAgICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgX2ZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICBfaW5pdF9zdGVwICkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICBzaXRlIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBydWxlX2FnX2lkID1cbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgX3N0ZXBfaWQgPVxuICAgICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApIGFjdGlvbiAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBpZiBzaWRlX2VmZmVjdCA9IFtdICYmIFByZWRpY2F0ZWlkTWFwLmlzX2VtcHR5IG1lcmdlZF9tYXAgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbnNpZF92b2lkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWQgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHN0ZXAgdGhlblxuICAgICAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgIHByZV9ldmVudDtcbiAgICAgICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IG5zaWQ7XG4gICAgICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG5zaWRfbmV4dFxuICAgICAgICApXG4gICAgaW5cblxuICAgICgqKiogZGVhbCB3aXRoIHN1YnN0aXR1dGFibGUgYWdlbnRzICoqKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0ID1cbiAgICAgIEFnZW50SWRNYXAuZm9sZFxuICAgICAgICAoZnVuIHJ1bGVfYWdfaWQgbCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0KSAtPlxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAoIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfdGVzdHMsXG4gICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9ucyxcbiAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCkgbWl4dHVyZV9hZ19pZCAtPlxuICAgICAgICAgICAgICBsZXQgc3RlcCA9IFRyYWNlLnN1YnNfc3RlcCBydWxlX2FnX2lkIG1peHR1cmVfYWdfaWQgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgdGVzdF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gW10gaW5cbiAgICAgICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApIChzaXRlLCBiaW5kaW5nX3N0YXRlKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHNpdGUgYmluZGluZ19zdGF0ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwb3RlbnRpYWxfdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbIGwgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCB0IC0+IHQgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcGlkX3J1bGVfYWdlbnRfbXV0ZXggPVxuICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiBlcnJvciwgbG9nX2luZm8sIHhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIGFnZW50IGlkXCIpIDBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWRfcnVsZV9hZ2VudF9tdXRleCAoQ291bnRlciAwKSB0ZXN0X21hcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApXG4gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYWN0aW9uX21hcCA9XG4gICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIHBpZF9ydWxlX2FnZW50X211dGV4IChDb3VudGVyIDEpIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbWFwLCBhY3Rpb25fbWFwID1cbiAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgKCBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZCAoQ291bnRlciAwKSB0ZXN0X21hcCxcbiAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWQgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ19pZClcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwIClcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdGVzdF9tYXAsIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogVGhlIGZvbGxvd2luZyBibG9jayBzaG91bGQgYmUgbG9nZ2VkIGFuZCBjb3JyZWN0ZWQgKilcbiAgICAgICAgICAgICAgKCogbGV0IHRlc3RfbWFwLGFjdGlvbl9tYXAgPVxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5taXh0dXJlX2FnZW50X2lkX211dGV4IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIG1faWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyIDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlciAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRlc3RfbWFwLGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgICAgaW4qKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCwgbmxpc3QgPVxuICAgICAgICAgICAgICAgICgqIGVudW1lcmF0aW9uIG9mIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlLCBhY2NvcmRpbmcgdG8gYSBzdWJzdGl0dXRpb24gKilcbiAgICAgICAgICAgICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQsIGNoZWNrIHRoYXQgdGhlIHdpcmUgZW5kIGluIHRoZSBzdGF0ZSAwKilcbiAgICAgICAgICAgICAgICAoKiBVbmRlZi0+Q291bnRlciAwIDogb3BlbmluZyBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIENvdW50ZXIgMCAtPiBDb3VudGVyIDEgOiBwb3RlbnRpYWwgYmluZGluZyB0eXBlICopXG4gICAgICAgICAgICAgICAgKCogPT4gQ291bnRlciAxIC0+IENvdW50ZXIgMCA6IHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiBpcyBhcHBsaWVkICopXG4gICAgICAgICAgICAgICAgKCogQ291bnRlciAwIC0+IFVuZGVmIDogY2xvc2luZyBldmVudCwgY2hlY2sgdGhhdCBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gc2VsZWN0ZWQgKG9wZW4gYW5kIGNsb3NlZCksIHRoZW4gZXhhY3RlbHkgb25lIGJpbmRpbmcgc3RhdGUgaGFzIGJlZW4gc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiAqKVxuICAgICAgICAgICAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCAmIHRoZSBhY2NvcmRpbmcgc3Vic3RpdHV0aW9uIHRha2VuLCB0aGVuIG11dHVhbCBleGNsdXNpb24gYW1vbmcgdGhlIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlKilcbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biAobWFwLCBubGlzdCkgcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgICggUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBDb3VudGVyIDApIG1hcCxcbiAgICAgICAgICAgICAgICAgICAgICBwaWQgOjogbmxpc3QgKSlcbiAgICAgICAgICAgICAgICAgIChtZXJnZWRfbWFwLCBubGlzdCkgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBtYXAgKHBpZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zdGF0ZSBwaWQgKHRlc3QsIGFjdGlvbikgbWFwKVxuICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgW10gdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tYXBpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBpZCAodGVzdCwgYWN0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IFVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgcGlkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWdfaWQgPSBtaXh0dXJlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgfCBIZXJlIF8gfCBQb2ludGVyIF8gfCBNdXRleCBfIHwgTGluayBfIHwgSW50ZXJuYWxfc3RhdGUgX1xuICAgICAgICAgICAgICAgICAgICAgIHwgRmljdGl0aW91cyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHRlc3QsIFVua25vd25cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHRlc3QsIGFjdGlvbilcbiAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgbmxpc3RcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPSBBLnNldCBwcmVfZXZlbnQgbnNpZCBzdGVwIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGlkICh0ZXN0LCBhY3Rpb24pIG1hcCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IG1hcCBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIG1hcClcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0XG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0KVxuICAgICAgICAgICAgbClcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgW10pXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCBzdWJzdGl0dXRhYmxlIGFnZW50IGluIGxpbmtzKilcbiAgICBsZXQgZiBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkIHNldCA9XG4gICAgICBBZ2VudElkMlNldC5mb2xkXG4gICAgICAgIChmdW4gbGluayAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSAtPlxuICAgICAgICAgIGxldCBsaW5rX211dGV4ID1cbiAgICAgICAgICAgIG1hdGNoIEFnZW50SWQyTWFwLmZpbmRfb3B0aW9uIGxpbmsgZGF0YV9zdHJ1Y3R1cmUubGlua3NfbXV0ZXggd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJ1bGVfYWdfaWQxLCBydWxlX2FnX2lkMiA9IGxpbmsgaW5cbiAgICAgICAgICBsZXQgbF9hZ18xID1cbiAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFsgcnVsZV9hZ19pZDEgXSBydWxlX2FnX2lkMVxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsX2FnXzIgPVxuICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgWyBydWxlX2FnX2lkMiBdIHJ1bGVfYWdfaWQyXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBBZ2VudElkMk1hcC5maW5kX2RlZmF1bHQgW10gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgIEFnZW50SWQyTWFwLmZpbmRfZGVmYXVsdCBbXSBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIG1peHR1cmVfYWdfMSAtPlxuICAgICAgICAgICAgICBsZXQgc3VicyA9IEFnZW50SWRNYXAuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgICAgICgqIGlmIHJ1bGVfYWdfaWQxID0gbWl4dHVyZV9hZ18xXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgICAgICBlbHNlKilcbiAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBydWxlX2FnX2lkMSBtaXh0dXJlX2FnXzEgc3Vic1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbWl4dHVyZV9hZ18yIC0+XG4gICAgICAgICAgICAgICAgICBpZiBydWxlX2FnX2lkMSA9IHJ1bGVfYWdfaWQyID0gKG1peHR1cmVfYWdfMSA9IG1peHR1cmVfYWdfMilcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgVHJhY2UuZHVtbXlfc3RlcFxuICAgICAgICAgICAgICAgICAgICAgICAgKFwiTElOSyBcIiBeIHN0cmluZ19vZl9pbnQgbWl4dHVyZV9hZ18xIF4gXCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IHJ1bGVfYWdfaWQxIF4gXCIsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IG1peHR1cmVfYWdfMiBeIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBydWxlX2FnX2lkMiBeIFwiKVwiKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICAgICAgICAgICAgKCogaWYgcnVsZV9hZ19pZDIgPSBtaXh0dXJlX2FnXzJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgc3Vic1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UqKVxuICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHJ1bGVfYWdfaWQyIG1peHR1cmVfYWdfMiBzdWJzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBzdWJzID0gQWdlbnRJZE1hcC5lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZiB4ID0gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IHN1YnMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IGYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0IClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0ICkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHRydWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBpZCwgeCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRnJlZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnX2lkID0gbWl4dHVyZV9hZ18xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFNpdGVJZFNldC5tZW0gKHJ1bGVfYWdfaWQxLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhZ19pZCA9IG1peHR1cmVfYWdfMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkMiwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCBVbmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHBpZCwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHBpZCwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0LnJldiBhY3Rpb25fbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5lbXB0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBsaW5rX211dGV4IChDb3VudGVyIDAsIENvdW50ZXIgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogUG9pbnRlciAtPiAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUG9pbnRlcl90b19hZ2VudCBtaXh0dXJlX2FnXzEsIFVua25vd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2VkX21hcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUG9pbnRlcl90b19hZ2VudCBtaXh0dXJlX2FnXzIsIFVua25vd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2VkX21hcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBpZiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBBLnNldCBwcmVfZXZlbnQgbnNpZCBzdGVwIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGlkICh0ZXN0LCBhY3Rpb24pIG1hcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IG1hcCBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZV9vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBsX2FnXzIpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgbF9hZ18xKVxuICAgICAgICBzZXRcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb3RoZXJfbGlua3MgPVxuICAgICAgICAgIEFnZW50SWQyU2V0LmRpZmYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3ByaW9yaXR5O1xuICAgICAgfVxuICAgIGluXG5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIGYgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZCBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBmIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICBpblxuXG4gICAgKCogZGVhbCB3aXRoIHJpZ2lkIGVsZW1lbnRzICopXG4gICAgbGV0IHNpZGVfZWZmZWN0ID0gZGF0YV9zdHJ1Y3R1cmUuc3VyZV9zaWRlX2VmZmVjdHMgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QgPVxuICAgICAgbWF0Y2ggaW5pdF9zdGVwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhX3N0cnVjdHVyZS5jcmVhdGVfYWN0aW9ucyBAIGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9uc1xuICAgICAgfCBTb21lIF8gLT4gZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gZGF0YV9zdHJ1Y3R1cmUuc3VyZV90ZXN0cyBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgX2luaXRfc3RlcCApID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgIGluaXRfc3RlcCApIChzaXRlLCBiaW5kaW5nX3N0YXRlKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHBvdGVudGlhbF90YXJnZXQgPVxuICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHNpdGVcbiAgICAgICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgfCBbIGwgXSAtPlxuICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gbGlzdCB0IC0+IHQgOjogbGlzdClcbiAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBydWxlX2FnX2lkID1cbiAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCAoQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgTXV0ZXhcbiAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgX3N0ZXBfaWQgPVxuICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHRydWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT4gZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCBwaWQgLT4gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBVbmRlZmluZWQpIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCBmaWN0aXRpb3VzX2xvY2FsX2xpc3RcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPiBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCwgY2hlY2sgdGhhdCB0aGUgd2lyZSBlbmQgaW4gdGhlIHN0YXRlIDAqKVxuICAgICAgKCogVW5kZWYtPkNvdW50ZXIgMCA6IG9wZW5pbmcgZXZlbnQgKilcbiAgICAgICgqIENvdW50ZXIgMCAtPiBDb3VudGVyIDEgOiBwb3RlbnRpYWwgYmluZGluZyB0eXBlICopXG4gICAgICAoKiBDb3VudGVyIDEgLT4gQ291bnRlciAwIDogdGhlIGNvcnJlc3BvbmRpbmcgc3Vic3RpdHV0aW9uIGlzIGFwcGxpZWQgKilcbiAgICAgICgqID0+IENvdW50ZXIgMCAtPiBVbmRlZiA6IGNsb3NpbmcgZXZlbnQsIGNoZWNrIHRoYXQgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIChvcGVuIGFuZCBjbG9zZWQpLCB0aGVuIGV4YWN0ZWx5IG9uZSBiaW5kaW5nIHN0YXRlIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiAqKVxuICAgICAgKCogSWYgdGhlIGV2ZW50IGlzIHNlbGVjdGVkICYgdGhlIGFjY29yZGluZyBzdWJzdGl0dXRpb24gdGFrZW4sIHRoZW4gbXV0dWFsIGV4Y2x1c2lvbiBhbW9uZyB0aGUgcG90ZW50aWFsIGJpbmRpbmcgc3RhdGUqKVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IGFkZF9zdGF0ZSBwaWQgKENvdW50ZXIgMCwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgbmxpc3RcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0ZXBfaWQgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcClcbiAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5wcmVfa2luZF9vZl9ldmVudCBuc2lkICh0eXBlX29mX3N0ZXAgc3RlcCkgaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgOjogYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICApXG5cbiAgbGV0IGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXAgYmxhY2tib2FyZCBzdGVwX2lkID1cbiAgICBsZXQgaW5pdCA9IFRyYWNlLnN0ZXBfaXNfaW5pdCBzdGVwIGluXG4gICAgbGV0IGluaXRfc3RlcCA9IE5vbmUgaW5cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5wcmVfZXZlbnQgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IFtdIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlaWRNYXAuYWRkIGlkIHZhbHVlIG1hcClcbiAgICAgICAgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5maW5kX2RlZmF1bHQgKFVua25vd24sIFVua25vd24pIHBpZCBtYXBcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdCA9XG4gICAgICAgIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB0ZXN0IHRlc3QnIHRoZW5cbiAgICAgICAgICB0ZXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0ZXN0J1xuICAgICAgaW5cbiAgICAgIGxldCBhY3Rpb24gPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgYWN0aW9uIGFjdGlvbicgdGhlblxuICAgICAgICAgIGFjdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWN0aW9uJ1xuICAgICAgaW5cbiAgICAgIGxldCBtYXAgPSBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgZmFkZCBwaWQgcCBtYXAgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBEZWZpbmVkIHwgUHJlc2VudCB8IEJvdW5kXG4gICAgICB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgICAgKClcbiAgICAgIHwgRnJlZSB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IEJvdW5kX3RvIF8gLT5cbiAgICAgICAgbGV0IG9sZCA9IEEuZ2V0IG1hcCBwaWQgaW5cbiAgICAgICAgQS5zZXQgbWFwIHBpZCAoQy5hZGQgcCBvbGQpXG4gICAgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgIF9pbml0X3N0ZXAgKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzaXRlXG4gICAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgKExvY2tfc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgeyBibGFja2JvYXJkIHdpdGggcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgfVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID0gQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCkgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgdGVzdCBhY3Rpb24gcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICgocHJlZGljYXRlX2lkLCBOb25lLCAoQ291bnRlciAwLCBDb3VudGVyIDEpKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgc2lkZV9lZmZlY3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbWFwKSB0ZXN0IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHRlc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFByZWRpY2F0ZWlkTWFwLmVtcHR5KVxuICAgICAgICB0ZXN0X2xpc3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApIGFjdGlvbiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9saXN0LCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gZmFsc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT4gZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCBwaWQgLT4gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBVbmRlZmluZWQpIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCBmaWN0aXRpb3VzX2xvY2FsX2xpc3RcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPiBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0ZXBfaWQgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcClcbiAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5wcmVfa2luZF9vZl9ldmVudCBuc2lkICh0eXBlX29mX3N0ZXAgc3RlcCkgaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgOjogYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICApXG5cbiAgbGV0IGZpbmFsaXplIGhldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgfCBfIC0+XG4gICAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgaW5cbiAgICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm8gaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAoZnVuICh4LCBpbmZvKSAtPiBuc2lkIDo6IHgsIGluZm8pXG4gICAgICAgICAgKExpc3QucmV2IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdClcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX29ic2VydmFibGUgPSBTb21lIG5zaWQ7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKSBwcmVkaWNhdGVfaWQgLT5cbiAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciBVbmRlZmluZWQgVW5rbm93biBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQpIGxcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzZXQgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gc2V0IChzdGVwcywgXykgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgc2V0KSBlaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RlcCA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlX2V2ZW50IGVpZCBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGFnZW50c19pbl9vYnMgPVxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9pbl9vYnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDSS5Qby5LLkFnZW50SWRTZXQudW5pb24gc2V0IGFnZW50c19pbl9vYnMpXG4gICAgICAgICAgICAgIHNldCBzdGVwcylcbiAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBDSS5Qby5LLkFnZW50SWRTZXQuZW1wdHkpXG4gICAgICAgICAgb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IHNldCB4ID0gQ0kuUG8uSy5BZ2VudElkU2V0Lm1lbSB4IHNldCBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLml0ZXJpXG4gICAgICAgICAgKGZ1biBpIHN0ZXAgLT5cbiAgICAgICAgICAgIGxldCBfLCBfLCBsZXZlbCA9XG4gICAgICAgICAgICAgIENJLlBvLksubGV2ZWxfb2ZfZXZlbnQgaGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgc3RlcCBzZXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9sZXZlbF9vZl9ldmVudCBpIGxldmVsKVxuICAgICAgICAgIGJsYWNrYm9hcmQucHJlX2V2ZW50XG4gICAgICBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIHByaW50X3ByZWJsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIGxldCBhZGRfc3RlcF91cF90b19pc28gPSBhZGRfc3RlcF9zdHJvbmdcblxuICAoKiogaW50ZXJmYWNlICopXG5cbiAgbGV0IG5fcHJlZGljYXRlcyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfbmNvbHVtbiArIDFcblxuICBsZXQgZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIHByZWRpY2F0ZV9pZCA9XG4gICAgdHJ5IGVycm9yLCBsb2dfaW5mbywgc25kIChBLmdldCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gcHJlZGljYXRlX2lkKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gcHJlZGljYXRlIGlkXCJcbiAgICAgICAgKEZhaWx1cmUgXCJldmVudF9saXN0X29mX3ByZWRpY2F0ZVwiKSBbXVxuXG4gIGxldCBuX2V2ZW50c19wZXJfcHJlZGljYXRlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfaWQgPVxuICAgIHRyeSBlcnJvciwgbG9nX2luZm8sIGZzdCAoQS5nZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHByZWRpY2F0ZSBpZFwiXG4gICAgICAgIChGYWlsdXJlIFwibl9ldmVudHNfcGVyX3ByZWRpY2F0ZVwiKSAwXG5cbiAgbGV0IG5fZXZlbnRzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxXG5cbiAgbGV0IG1hbmRhdG9yeV9ldmVudHMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuXG4gIGxldCBnZXRfZmljdGl0aW91c19vYnNlcnZhYmxlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX29ic2VydmFibGVcblxuICBsZXQgZ2V0X3NpZGVfZWZmZWN0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuZW5kXG4iLCIoKipcbiAgKiBibGFja2JvYXJkLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTEtMDktMDUgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTAzIDIwOjQ4OjM0IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIEJsYWNrYm9hcmQgPSBzaWdcbiAgbW9kdWxlIFBCIDogQmxhY2tib2FyZF9nZW5lcmF0aW9uLlByZUJsYWNrYm9hcmRcblxuICB0eXBlIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAoKiogYmxhY2tib2FyZCBtYXRyaXggKilcblxuICB0eXBlIGNhc2VfaW5mb1xuICB0eXBlIGNhc2VfdmFsdWVcbiAgdHlwZSBjYXNlX2FkZHJlc3NcbiAgdHlwZSBwb2ludGVyXG5cbiAgKCoqIGJsYWNrYm9hcmQqKVxuXG4gIHR5cGUgYmxhY2tib2FyZCAoKmJsYWNrYm9hcmQsIG9uY2UgZmluYWxpemVkKilcbiAgdHlwZSBhc3NpZ25fcmVzdWx0XG5cbiAgdmFsIGlzX2ZhaWxlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgaXNfc3VjY2VlZGVkIDogYXNzaWduX3Jlc3VsdCAtPiBib29sXG4gIHZhbCBpc19pZ25vcmVkIDogYXNzaWduX3Jlc3VsdCAtPiBib29sXG4gIHZhbCBzdWNjZXNzIDogYXNzaWduX3Jlc3VsdFxuICB2YWwgaWdub3JlIDogYXNzaWduX3Jlc3VsdFxuICB2YWwgZmFpbCA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIHByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gUEIucHJlZGljYXRlX2lkXG4gIHZhbCBidWlsZF9wb2ludGVyIDogUEIuc3RlcF9zaG9ydF9pZCAtPiBwb2ludGVyXG4gIHZhbCBpc19iZWZvcmVfYmxhY2tib2FyZCA6IHBvaW50ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2V2ZW50IDogYmxhY2tib2FyZCAtPiBQQi5zdGVwX2lkIC0+IFRyYWNlLnN0ZXBcbiAgdmFsIGdldF9uX2VpZCA6IGJsYWNrYm9hcmQgLT4gaW50XG4gIHZhbCBnZXRfbnByZWRpY2F0ZV9pZCA6IGJsYWNrYm9hcmQgLT4gaW50XG5cbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCA6XG4gICAgYmxhY2tib2FyZCAtPiBQQi5wcmVkaWNhdGVfaWQgLT4gUHJpb3JpdHkubGV2ZWwgLT4gaW50XG5cbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCA6IGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IGludFxuICB2YWwgZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBnZXRfZmlyc3RfbGlua2VkX2V2ZW50IDpcbiAgICBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBQQi5zdGVwX3Nob3J0X2lkIG9wdGlvblxuXG4gIHZhbCBnZXRfbGFzdF9saW5rZWRfZXZlbnQgOlxuICAgIGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IFBCLnN0ZXBfc2hvcnRfaWQgb3B0aW9uXG5cbiAgdmFsIGdldF9zdGFja19kZXB0aCA6IGJsYWNrYm9hcmQgLT4gaW50XG5cbiAgdmFsIGlzX3NlbGVjdGVkX2V2ZW50IDpcbiAgICAoUEIuc3RlcF9pZCwgYmxhY2tib2FyZCwgYm9vbCBvcHRpb24pIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcblxuICB2YWwgcHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgOlxuICAgIChjYXNlX3ZhbHVlLCBQQi5wcmVkaWNhdGVfdmFsdWUpIFBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBmb2xsb3dfcG9pbnRlcl91cCA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgZXZlbnRfY2FzZV9hZGRyZXNzKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGZvbGxvd19wb2ludGVyX2Rvd24gOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGV2ZW50X2Nhc2VfYWRkcmVzcykgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBpc19ib3VuZGFyeSA6IChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGJvb2wpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIDpcbiAgICBQQi5wcmVkaWNhdGVfaWQgLT4gcG9pbnRlciAtPiBldmVudF9jYXNlX2FkZHJlc3NcblxuICB2YWwgZXhpc3RfY2FzZSA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgYm9vbCBvcHRpb24pIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgZ2V0X3N0YXRpYyA6XG4gICAgKCBibGFja2JvYXJkLFxuICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzLFxuICAgICAgUEIuc3RlcF9zaG9ydF9pZCAqIFBCLnN0ZXBfaWQgKiBQQi5wcmVkaWNhdGVfdmFsdWUgKiBQQi5wcmVkaWNhdGVfdmFsdWVcbiAgICApXG4gICAgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzZXQgOlxuICAgIChjYXNlX2FkZHJlc3MsIGNhc2VfdmFsdWUsIGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGdldCA6IChjYXNlX2FkZHJlc3MsIGJsYWNrYm9hcmQsIGNhc2VfdmFsdWUpIFBCLkNJLlBvLksuSC5iaW5hcnlcbiAgdmFsIGRlYyA6IChjYXNlX2FkZHJlc3MsIGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCByZWZpbmUgOlxuICAgICggY2FzZV9hZGRyZXNzLFxuICAgICAgY2FzZV92YWx1ZSxcbiAgICAgIGJsYWNrYm9hcmQsXG4gICAgICBibGFja2JvYXJkICogYXNzaWduX3Jlc3VsdCApXG4gICAgUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgYnJhbmNoIDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgcmVzZXRfbGFzdF9icmFuY2hpbmcgOiAoYmxhY2tib2FyZCwgYmxhY2tib2FyZCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gIHZhbCByZXNldF9pbml0IDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBpbXBvcnQgOlxuICAgID9oZXVyaXN0aWM6UHJpb3JpdHkucHJpb3JpdGllcyAtPlxuICAgIChUcmFjZS5zdGVwIGxpc3QsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICAoKiogaW5pdGlhbGlzYXRpb24qKVxuXG4gIHR5cGUgcmVzdWx0ID0gKFRyYWNlLnN0ZXAgKiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0KSBsaXN0XG4gICgqKiBvdXRwdXQgcmVzdWx0KilcblxuICB2YWwgaXNfbWF4aW1hbF9zb2x1dGlvbiA6IChibGFja2JvYXJkLCBib29sKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqIGl0ZXJhdGlvbiopXG5cbiAgdmFsIHRyYW5zbGF0ZV9ibGFja2JvYXJkIDogKGJsYWNrYm9hcmQsIHJlc3VsdCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKiBleHBvcnRpbmcgcmVzdWx0KilcblxuICB2YWwgcHJpbnRfYmxhY2tib2FyZCA6IChibGFja2JvYXJkLCB1bml0KSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqcHJldHR5IHByaW50aW5nKilcblxuICB2YWwgZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIDpcbiAgICAoc3RyaW5nLCBpbnQsIGludCwgYmxhY2tib2FyZCwgdW5pdCkgUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcblxuICB2YWwgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIDpcbiAgICAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCB1bml0KSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHByaW50X3N0YWNrIDogKGJsYWNrYm9hcmQsIHVuaXQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgZXhpc3QgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBib29sZWFuIDogYm9vbCBvcHRpb24gLT4gY2FzZV92YWx1ZVxuICB2YWwgcG9pbnRlcl90b19wcmV2aW91cyA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcbiAgdmFsIHBvaW50ZXJfdG9fbmV4dCA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcbiAgdmFsIHBvaW50ZXIgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV92YWx1ZVxuICB2YWwgdmFsdWVfYWZ0ZXIgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIGNhc2VfbGlzdF9vZl9laWQgOlxuICAgIChibGFja2JvYXJkLCBQQi5zdGVwX2lkLCBldmVudF9jYXNlX2FkZHJlc3MgbGlzdCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzdGF0ZSA6IFBCLnByZWRpY2F0ZV92YWx1ZSAtPiBjYXNlX3ZhbHVlXG4gIHZhbCBpc19leGlzdF9ldmVudCA6IFBCLnN0ZXBfaWQgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIDogUHJpb3JpdHkubGV2ZWwgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzIDogY2FzZV9hZGRyZXNzXG5cbiAgdmFsIG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIDpcbiAgICBldmVudF9jYXNlX2FkZHJlc3MgLT4gUHJpb3JpdHkubGV2ZWwgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBmb3JjZWRfZXZlbnRzIDpcbiAgICBibGFja2JvYXJkIC0+IChQQi5zdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdFxuXG4gIHZhbCBzaWRlX2VmZmVjdF9vZl9ldmVudCA6IGJsYWNrYm9hcmQgLT4gUEIuc3RlcF9pZCAtPiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0XG5cbiAgdmFsIGN1dCA6XG4gICAgKCBibGFja2JvYXJkLFxuICAgICAgUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgYmxhY2tib2FyZCAqIFBCLnN0ZXBfaWQgbGlzdCApXG4gICAgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCB0aWNrIDpcbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgYm9vbCAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgKCogdG8gZG86IG1vdmUgdG8gdGhlIG1vZHVsZSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzKilcblxuICB2YWwgbGV2ZWxfb2ZfZXZlbnQgOlxuICAgIChibGFja2JvYXJkLCBQQi5zdGVwX2lkLCBQcmlvcml0eS5sZXZlbCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuZW5kXG5cbm1vZHVsZSBCbGFja2JvYXJkIDogQmxhY2tib2FyZCA9IHN0cnVjdFxuICBtb2R1bGUgUEIgPSBCbGFja2JvYXJkX2dlbmVyYXRpb24uUHJlYmxhY2tib2FyZFxuICAoKiogYmxhY2tib2FyZCBtYXRyaXgqKVxuXG4gIHR5cGUgYXNzaWduX3Jlc3VsdCA9IEZhaWwgfCBTdWNjZXNzIHwgSWdub3JlXG4gIHR5cGUgcG9pbnRlciA9IFBCLnN0ZXBfc2hvcnRfaWRcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBsZXQgZXJyb3IsIGEgPVxuICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGFcblxuICBsZXQgc3VjY2VzcyA9IFN1Y2Nlc3NcbiAgbGV0IGlnbm9yZSA9IElnbm9yZVxuICBsZXQgZmFpbCA9IEZhaWxcblxuICBsZXQgaXNfaWdub3JlZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IElnbm9yZSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX2ZhaWxlZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEZhaWwgLT4gdHJ1ZVxuICAgIHwgU3VjY2VzcyB8IElnbm9yZSAtPiBmYWxzZVxuXG4gIGxldCBpc19zdWNjZWVkZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBTdWNjZXNzIC0+IHRydWVcbiAgICB8IEZhaWwgfCBJZ25vcmUgLT4gZmFsc2VcblxuICBsZXQgbnVsbF9wb2ludGVyID0gUEIuZHVtbXlfc3RlcF9zaG9ydF9pZFxuICBsZXQgaXNfbnVsbF9wb2ludGVyIHggPSB4ID0gbnVsbF9wb2ludGVyXG4gIGxldCBwb2ludGVyX2JlZm9yZV9ibGFja2JvYXJkID0gUEIuemVyb19zdGVwX3Nob3J0X2lkXG4gIGxldCBpc19udWxsX3BvaW50ZXJfc3RlcF9pZCB4ID0geCA9IFBCLmR1bW15X3N0ZXBfaWRcbiAgbGV0IGlzX2JlZm9yZV9ibGFja2JvYXJkIHggPSB4ID0gcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZFxuICBsZXQgYnVpbGRfcG9pbnRlciBpID0gaVxuXG4gIHR5cGUgZXZlbnRfY2FzZV9hZGRyZXNzID0ge1xuICAgIGNvbHVtbl9wcmVkaWNhdGVfaWQ6IFBCLnByZWRpY2F0ZV9pZDtcbiAgICByb3dfc2hvcnRfZXZlbnRfaWQ6IHBvaW50ZXI7XG4gIH1cblxuICBsZXQgcHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyB4ID0geC5jb2x1bW5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IGlzX2JvdW5kYXJ5IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgX2JsYWNrYm9hcmQgZXZlbnRfYWRkcmVzcyA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBpc19iZWZvcmVfYmxhY2tib2FyZCBldmVudF9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZFxuXG4gIGxldCBidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcGlkIHNlaWQgPVxuICAgIHsgY29sdW1uX3ByZWRpY2F0ZV9pZCA9IHBpZDsgcm93X3Nob3J0X2V2ZW50X2lkID0gc2VpZCB9XG5cbiAgdHlwZSBjYXNlX2FkZHJlc3MgPVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgb2YgaW50ICogUHJpb3JpdHkubGV2ZWxcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIG9mIGludFxuICAgIHwgUG9pbnRlcl90b19uZXh0IG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgVmFsdWVfYWZ0ZXIgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBWYWx1ZV9iZWZvcmUgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c1xuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBvZiBQcmlvcml0eS5sZXZlbFxuICAgIHwgRXhpc3Qgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBLZWVwX2V2ZW50IG9mIFBCLnN0ZXBfaWRcblxuICBsZXQgaXNfZXhpc3RfZXZlbnQgaSA9IEtlZXBfZXZlbnQgaVxuXG4gIGxldCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpID1cbiAgICBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpLmNvbHVtbl9wcmVkaWNhdGVfaWRcblxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgaSBqID1cbiAgICBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaS5jb2x1bW5fcHJlZGljYXRlX2lkLCBqKVxuXG4gIGxldCBwb2ludGVyX3RvX25leHQgZSA9IFBvaW50ZXJfdG9fbmV4dCBlXG4gIGxldCB2YWx1ZV9hZnRlciBlID0gVmFsdWVfYWZ0ZXIgZVxuICBsZXQgdmFsdWVfYmVmb3JlIGUgPSBWYWx1ZV9iZWZvcmUgZVxuICBsZXQgcG9pbnRlcl90b19wcmV2aW91cyBlID0gUG9pbnRlcl90b19wcmV2aW91cyBlXG4gIGxldCBuX3VucmVzb2x2ZWRfZXZlbnRzID0gTl91bnJlc29sdmVkX2V2ZW50c1xuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpID0gTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpXG4gIGxldCBleGlzdCBlID0gRXhpc3QgZVxuXG4gIHR5cGUgY2FzZV92YWx1ZSA9XG4gICAgfCBTdGF0ZSBvZiBQQi5wcmVkaWNhdGVfdmFsdWVcbiAgICB8IENvdW50ZXIgb2YgaW50XG4gICAgfCBQb2ludGVyIG9mIHBvaW50ZXJcbiAgICB8IEJvb2xlYW4gb2YgYm9vbCBvcHRpb25cblxuICBsZXQgcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBTdGF0ZSB4IC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBcIlN0YXRlISBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICB4XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICAoKVxuICAgIHwgQ291bnRlciBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJDb3VudGVyICVpXCIgaVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IFBvaW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiUG9pbnRlciAlaVwiXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICAoKVxuICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJCb29sZWFuICVzXCJcbiAgICAgICAgICAobWF0Y2ggYiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiP1wiXG4gICAgICAgICAgfCBTb21lIHRydWUgLT4gXCJ0cnVlXCJcbiAgICAgICAgICB8IF8gLT4gXCJmYWxzZVwiKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcblxuICBsZXQgc3RyaW5nX29mX3BvaW50ZXIgc2VpZCA9XG4gICAgXCJldmVudCBzZWlkIFwiIF4gc3RyaW5nX29mX2ludCAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgc2VpZClcblxuICBsZXQgcHJpbnRfcG9pbnRlciBsb2cgc2VpZCA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIChzdHJpbmdfb2ZfcG9pbnRlciBzZWlkKVxuICBsZXQgc3RhdGUgcHJlZGljYXRlX3ZhbHVlID0gU3RhdGUgcHJlZGljYXRlX3ZhbHVlXG4gIGxldCBwb2ludGVyIHAgPSBQb2ludGVyIHAucm93X3Nob3J0X2V2ZW50X2lkXG4gIGxldCBib29sZWFuIGIgPSBCb29sZWFuIGJcblxuICBsZXQgY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9hZGRyZXNzID1cbiAgICBWYWx1ZV9hZnRlciBldmVudF9hZGRyZXNzXG5cbiAgbGV0IHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX3ZhbHVlXG4gICAgICA9XG4gICAgbWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSB4IC0+IGVycm9yLCBsb2dfaW5mbywgeFxuICAgIHwgQ291bnRlciBfIHwgUG9pbnRlciBfIHwgQm9vbGVhbiBfIC0+XG4gICAgICBsZXQgXyA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJ3cm9uZyBraW5kIG9mIGNhc2VfdmFsdWUgaW4gcHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWVcIlxuICAgICAgICAoRmFpbHVyZSBcInByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlXCIpIFBCLnVua25vd25cblxuICB0eXBlIGFzc2lnbm1lbnQgPSBjYXNlX2FkZHJlc3MgKiBjYXNlX3ZhbHVlXG5cbiAgbGV0IGJvb2xfc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeSA9XG4gICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gdHJ1ZVxuICAgIHwgXywgXyAtPiBmYWxzZVxuXG4gIGxldCBnIHAgcDIgcG9zIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgU3RhdGUgeCwgU3RhdGUgeSAtPiBlcnJvciwgbG9nX2luZm8sIHAgeCB5XG4gICAgfCBCb29sZWFuIHgsIEJvb2xlYW4geSAtPiBlcnJvciwgbG9nX2luZm8sIHAyIHggeVxuICAgIHwgU3RhdGUgXywgXyB8IEJvb2xlYW4gXywgXyB8IENvdW50ZXIgXywgXyB8IFBvaW50ZXIgXywgXyAtPlxuICAgICAgbGV0IGZpbGUsIGxpbmUsIF8sIF8gPSBwb3MgaW5cbiAgICAgIGxldCBzdHJpbmcgPSBmaWxlIF4gXCIsIGxpbmU6IFwiIF4gc3RyaW5nX29mX2ludCBsaW5lIGluXG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBwb3NcbiAgICAgICAgfm1lc3NhZ2U6XCJDb3VudGVycyBhbmQvb3IgUG9pbnRlcnMgc2hvdWxkIG5vdCBiZSBjb21wYXJlZFwiXG4gICAgICAgIChGYWlsdXJlIChzdHJpbmcgXiBcIiBDb21wYXJpc29uIGJldHdlZW4gcG9pbnRlcnMgYW5kIGNvdW50ZXJzXCIpKVxuICAgICAgICBmYWxzZVxuXG4gIGxldCBzdHJpY3RseV9tb3JlX3JlZmluZWQgPVxuICAgIGcgUEIuc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGJvb2xfc3RyaWN0bHlfbW9yZV9yZWZpbmVkIF9fUE9TX19cblxuICB0eXBlIGNhc2VfaW5mb19zdGF0aWMgPSB7XG4gICAgcm93X3Nob3J0X2lkOiBQQi5zdGVwX3Nob3J0X2lkO1xuICAgIGV2ZW50X2lkOiBQQi5zdGVwX2lkO1xuICAgIHRlc3Q6IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgICBhY3Rpb246IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgfVxuXG4gIHR5cGUgY2FzZV9pbmZvX2R5bmFtaWMgPSB7XG4gICAgcG9pbnRlcl9wcmV2aW91czogcG9pbnRlcjtcbiAgICBwb2ludGVyX25leHQ6IHBvaW50ZXI7XG4gICAgc3RhdGVfYWZ0ZXI6IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgICBzZWxlY3RlZDogYm9vbCBvcHRpb247XG4gIH1cblxuICB0eXBlIGNhc2VfaW5mbyA9IHsgc3RhdGljOiBjYXNlX2luZm9fc3RhdGljOyBkeW5hbWljOiBjYXNlX2luZm9fZHluYW1pYyB9XG5cbiAgbGV0IGR1bW15X2Nhc2VfaW5mb19zdGF0aWMgPVxuICAgIHtcbiAgICAgIHJvd19zaG9ydF9pZCA9IFBCLmR1bW15X3N0ZXBfc2hvcnRfaWQ7XG4gICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICB0ZXN0ID0gUEIudW5rbm93bjtcbiAgICAgIGFjdGlvbiA9IFBCLnVua25vd247XG4gICAgfVxuXG4gIGxldCBkdW1teV9jYXNlX2luZm9fZHluYW1pYyA9XG4gICAge1xuICAgICAgcG9pbnRlcl9wcmV2aW91cyA9IG51bGxfcG9pbnRlcjtcbiAgICAgIHBvaW50ZXJfbmV4dCA9IG51bGxfcG9pbnRlcjtcbiAgICAgIHN0YXRlX2FmdGVyID0gUEIudW5rbm93bjtcbiAgICAgIHNlbGVjdGVkID0gTm9uZTtcbiAgICB9XG5cbiAgbGV0IGNvcnJlY3RfcG9pbnRlciBzZWlkIHNpemUgPVxuICAgIGxldCBpbnRfc2VpZCA9IFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQgaW5cbiAgICBpZiBpbnRfc2VpZCA8IDAgdGhlblxuICAgICAgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZFxuICAgIGVsc2UgaWYgaW50X3NlaWQgPj0gc2l6ZSB0aGVuXG4gICAgICBQQi5zdGVwX3Nob3J0X2lkX29mX2ludCBzaXplXG4gICAgZWxzZVxuICAgICAgc2VpZFxuXG4gIGxldCBpbml0X2luZm9fZHluYW1pYyBzZWlkIHNpemUgPVxuICAgIHtcbiAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBjb3JyZWN0X3BvaW50ZXIgKFBCLmRlY19zdGVwX3Nob3J0X2lkIHNlaWQpIHNpemU7XG4gICAgICBwb2ludGVyX25leHQgPSBjb3JyZWN0X3BvaW50ZXIgKFBCLmluY19zdGVwX3Nob3J0X2lkIHNlaWQpIHNpemU7XG4gICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICBzZWxlY3RlZCA9IE5vbmU7XG4gICAgfVxuXG4gIGxldCBpbml0X2luZm9fc3RhdGljIF9wX2lkIHNlaWQgKGVpZCwgXywgdGVzdCwgYWN0aW9uKSA9XG4gICAgeyByb3dfc2hvcnRfaWQgPSBzZWlkOyBldmVudF9pZCA9IGVpZDsgdGVzdDsgYWN0aW9uIH1cblxuICBsZXQgZ2V0X2VpZF9vZl90cmlwbGUgKHgsIF8sIF8sIF8pID0geFxuXG4gIGxldCBkdW1teV9jYXNlX2luZm8gPVxuICAgIHsgc3RhdGljID0gZHVtbXlfY2FzZV9pbmZvX3N0YXRpYzsgZHluYW1pYyA9IGR1bW15X2Nhc2VfaW5mb19keW5hbWljIH1cblxuICBsZXQgaW5pdF9pbmZvIHBfaWQgc2VpZCBzaXplIHRyaXBsZSA9XG4gICAge1xuICAgICAgc3RhdGljID0gaW5pdF9pbmZvX3N0YXRpYyBwX2lkIHNlaWQgdHJpcGxlO1xuICAgICAgZHluYW1pYyA9IGluaXRfaW5mb19keW5hbWljIHNlaWQgc2l6ZTtcbiAgICB9XG5cbiAgdHlwZSBzdGFjayA9IGFzc2lnbm1lbnQgbGlzdFxuICAoKiogYmxhY2tib2FyZCAqKVxuXG4gIHR5cGUgYmxhY2tib2FyZCA9IHtcbiAgICBldmVudDogVHJhY2Uuc3RlcCBQQi5BLnQ7XG4gICAgcHJlX2NvbHVtbl9tYXBfaW52OiBQQi5wcmVkaWNhdGVfaW5mbyBQQi5BLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCB0byBpdHMgd2lyZSBsYWJlbCAqKVxuICAgIGZvcmNlZF9ldmVudHM6IChQQi5zdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdDtcbiAgICBuX3ByZWRpY2F0ZV9pZDogaW50O1xuICAgIG5fZWlkOiBpbnQ7XG4gICAgbl9zZWlkOiBpbnQgUEIuQS50O1xuICAgIGN1cnJlbnRfc3RhY2s6IHN0YWNrO1xuICAgIHN0YWNrOiBzdGFjayBsaXN0O1xuICAgIGJsYWNrYm9hcmQ6IGNhc2VfaW5mbyBQQi5BLnQgUEIuQS50O1xuICAgIHNlbGVjdGVkX2V2ZW50czogYm9vbCBvcHRpb24gUEIuQS50O1xuICAgIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWQ6IGludCBQQi5BLnQ7XG4gICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbDogaW50IFBCLkEudCBQcmlvcml0eS5MZXZlbE1hcC50O1xuICAgIHVzZWRfcHJlZGljYXRlX2lkOiBib29sIFBCLkEudDtcbiAgICBuX3VucmVzb2x2ZWRfZXZlbnRzOiBpbnQ7XG4gICAgbl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbDogaW50IFByaW9yaXR5LkxldmVsTWFwLnQ7XG4gICAgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkOiBQQi5zdGVwX3Nob3J0X2lkIFBCLkEudDtcbiAgICBldmVudF9jYXNlX2xpc3Q6IGV2ZW50X2Nhc2VfYWRkcmVzcyBsaXN0IFBCLkEudDtcbiAgICBzaWRlX2VmZmVjdF9vZl9ldmVudDogUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdCBQQi5BLnQ7XG4gICAgZmljdGl0aW91c19vYnNlcnZhYmxlOiBQQi5zdGVwX2lkIG9wdGlvbjtcbiAgICBsZXZlbF9vZl9ldmVudDogUHJpb3JpdHkubGV2ZWwgUEIuQS50O1xuICB9XG5cbiAgbGV0IHRpY2sgcHJvZmlsaW5nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnRpY2sgcHJvZmlsaW5nX2luZm9cblxuICBsZXQgbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICB0cnlcbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBQQi5BLmdldCBibGFja2JvYXJkLmxldmVsX29mX2V2ZW50IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIClcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gZXZlbnQgaWRcIlxuICAgICAgICAoRmFpbHVyZSBcIlVua25vd24gZXZlbnQgaWRcIikgUHJpb3JpdHkuaGlnaGVzdFxuXG4gIGxldCBnZXRfZXZlbnQgYmxhY2tib2FyZCBrID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgaylcbiAgbGV0IGdldF9uX2VpZCBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX2VpZFxuICBsZXQgZ2V0X3N0YWNrX2RlcHRoIGJsYWNrYm9hcmQgPSBMaXN0Lmxlbmd0aCBibGFja2JvYXJkLnN0YWNrXG4gIGxldCBmb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgPSBibGFja2JvYXJkLmZvcmNlZF9ldmVudHNcblxuICBsZXQgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgYmxhY2tib2FyZCBpID1cbiAgICBQQi5BLmdldCBibGFja2JvYXJkLnNpZGVfZWZmZWN0X29mX2V2ZW50IChQQi5pbnRfb2Zfc3RlcF9pZCBpKVxuXG4gIGxldCBjYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudF9jYXNlX2xpc3QgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBbXVxuXG4gIGxldCBnZXRfY2FzZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmQgPVxuICAgIHRyeVxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFBCLkEuZ2V0XG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgY2FzZV9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZCkgKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBkdW1teV9jYXNlX2luZm9cblxuICBsZXQgZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3MgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgc3RhdGljID0gY2FzZS5zdGF0aWMgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICAoc3RhdGljLnJvd19zaG9ydF9pZCwgc3RhdGljLmV2ZW50X2lkLCBzdGF0aWMudGVzdCwgc3RhdGljLmFjdGlvbikgKVxuXG4gIGxldCBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIGVpZCwgXywgXykgPVxuICAgICAgZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCJFdmVudDogJWksIFByZWRpY2F0ZTogJWlALlwiIChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgIChwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIGNhc2UpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGksIGopIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIFwibl91bnJlc29sdmVkX2V2ZW50c19pbl9wcmVkICVpICVzQC5cIiBpXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBqKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX3ByZWQgJWkgQC5cIiBpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgUG9pbnRlcl90b19uZXh0IGUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlBvaW50ZXJcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgVmFsdWVfYWZ0ZXIgZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiVmFsdWVfYWZ0ZXIgIFwiXG4gICAgICBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgVmFsdWVfYmVmb3JlIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlZhbHVlX2JlZm9yZSBcIlxuICAgICAgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiUG9pbnRlcl9iZWZvcmUgXCJcbiAgICAgIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBcIlVucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsICVzXCJcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50cyAtPlxuICAgICAgbGV0IF8gPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJVbnJlc29sdmVkX2V2ZW50c1wiXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgRXhpc3QgZSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiRXhpc3QgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IEtlZXBfZXZlbnQgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBcIktlZXAgJWlcIiAoUEIuaW50X29mX3N0ZXBfaWQgaSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IGdldF9ucHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgPSBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIHBpZCBsZXZlbCA9XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLmZpbmRfb3B0aW9uIGxldmVsXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgIHdpdGhcbiAgICB8IFNvbWUgeCAtPiBQQi5BLmdldCB4IHBpZFxuICAgIHwgTm9uZSAtPiAwXG5cbiAgbGV0IGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCBibGFja2JvYXJkIHBpZCA9XG4gICAgUEIuQS5nZXQgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkIHBpZFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzXG4gIGxldCBnZXRfcG9pbnRlcl9uZXh0IGNhc2UgPSBjYXNlLmR5bmFtaWMucG9pbnRlcl9uZXh0XG5cbiAgbGV0IGZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgeyBhZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dCB9IClcblxuICBsZXQgZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgeyBhZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXMgfSApXG5cbiAgbGV0IGdldF9maXJzdF9saW5rZWRfZXZlbnQgYmxhY2tib2FyZCBwaWQgPVxuICAgIGlmIHBpZCA8IDAgfHwgcGlkID49IGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWQgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgUEIuemVyb19zdGVwX3Nob3J0X2lkXG5cbiAgbGV0IGdldF9sYXN0X2xpbmtlZF9ldmVudCBibGFja2JvYXJkIHBpZCA9XG4gICAgaWYgcGlkIDwgMCB8fCBwaWQgPj0gYmxhY2tib2FyZC5uX3ByZWRpY2F0ZV9pZCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSAoUEIuQS5nZXQgYmxhY2tib2FyZC5sYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGVfaWQgcGlkKVxuXG4gICgqKnByZXR0eSBwcmludGluZyopXG4gIGxldCBwcmludF9rbm93bl9jYXNlIGxvZyBwcmVmIGluZiBzdWYgY2FzZSA9XG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXN0ZXN0OlwiIHByZWYgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5zdGF0aWMudGVzdCBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIvZWlkOiVpL2FjdGlvbjpcIlxuICAgICAgICAoUEIuaW50X29mX3N0ZXBfaWQgY2FzZS5zdGF0aWMuZXZlbnRfaWQpXG4gICAgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5zdGF0aWMuYWN0aW9uIGluXG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiBpbmYgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5keW5hbWljLnN0YXRlX2FmdGVyIGluXG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiBzdWYgaW5cbiAgICAoKVxuXG4gIGxldCBwcmludF9jYXNlIGxvZyBjYXNlID1cbiAgICBsZXQgc3RhdHVzID0gY2FzZS5keW5hbWljLnNlbGVjdGVkIGluXG4gICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICB8IFNvbWUgZmFsc2UgLT4gKClcbiAgICB8IFNvbWUgdHJ1ZSAtPiBwcmludF9rbm93bl9jYXNlIGxvZyBcIlwiIFwiIFwiIFwiIFwiIGNhc2VcbiAgICB8IE5vbmUgLT4gcHJpbnRfa25vd25fY2FzZSBsb2cgXCI/KFwiIFwiKSBcIiBcIiBcIiBjYXNlXG5cbiAgbGV0IHByaW50X2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBtYXRjaCBhZGRyZXNzIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIklzIHRoZSBldmVudCAlaSBzZWxlY3RlZCA/IFwiIChQQi5pbnRfb2Zfc3RlcF9pZCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IEV4aXN0IGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJcyB0aGUgY2FzZSBcIiBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcInNlbGVjdGVkID8gXCIgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIChpLCBqKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ1xuICAgICAgICAgIFwiTnVtYmVyIG9mIHVucmVzb2x2ZWQgZXZlbnRzIGZvciB0aGUgcHJlZGljYXRlICVpIGF0IGxldmVsICVzXCIgaVxuICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgailcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTnVtYmVyIG9mIHVucmVzb2x2ZWQgZXZlbnRzIGZvciB0aGUgcHJlZGljYXRlICVpXCIgaVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUHJvY2hhaW4gw6l2w6luZW1lbnQgYWdpc3NhbnQgc3VyIFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBWYWx1ZV9hZnRlciBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiVmFsZXVyIGFwcsOocyBcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgIHwgVmFsdWVfYmVmb3JlIGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJWYWxldXIgYXZhbnQgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkV2ZW5lbWVudCBwcsOpY8Opc2VudCBhZ2lzc2FudCBzdXIgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJOb21icmUgZCfDqXbDqW5lbWVudHMgbm9uIHLDqXNvbHVcIiBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTm9tYnJlIGQnw6l2w6luZW1lbnRzIG5vbiByw6lzb2x1IGF0IGxldmVsICVzXCJcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBzdHJpbmdfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IFN0YXRlIHBiIC0+IFBCLnN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgcGJcbiAgICB8IENvdW50ZXIgaSAtPiBcIkNvdW50ZXIgXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICB8IFBvaW50ZXIgaSAtPiBzdHJpbmdfb2ZfcG9pbnRlciBpXG4gICAgfCBCb29sZWFuIGJvb2wgLT5cbiAgICAgIChtYXRjaCBib29sIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgfCBTb21lIHRydWUgLT4gXCJZZXNcIlxuICAgICAgfCBTb21lIGZhbHNlIC0+IFwiTm9cIilcblxuICBsZXQgcHJpbnRfdmFsdWUgbG9nIHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSBwYiAtPiBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHBiXG4gICAgfCBDb3VudGVyIGkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkNvdW50ZXIgJWlcIiBpXG4gICAgfCBQb2ludGVyIGkgLT4gcHJpbnRfcG9pbnRlciBsb2cgaVxuICAgIHwgQm9vbGVhbiBib29sIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIlxuICAgICAgICAobWF0Y2ggYm9vbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgICB8IFNvbWUgdHJ1ZSAtPiBcIlllc1wiXG4gICAgICAgIHwgU29tZSBmYWxzZSAtPiBcIk5vXCIpXG5cbiAgbGV0IHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgKGFkZHJlc3MsIHZhbHVlKSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgcHJpbnRfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICBpblxuICAgIGxldCBfID0gcHJpbnRfdmFsdWUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSB2YWx1ZSBpblxuICAgIGVycm9yLCBsb2dfaW5mb1xuXG4gIGxldCBwcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBsb2cgPSBQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKkJMQUNLQk9BUkQqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWkgd2lyZXMsICVpIGV2ZW50c1wiIGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWRcbiAgICAgICAgYmxhY2tib2FyZC5uX2VpZFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqd2lyZXM6KlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCBlcnIgPSByZWYgZXJyb3IgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIGkgYXJyYXkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWlcIiBpIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBQQi5BLmdldCBibGFja2JvYXJkLnVzZWRfcHJlZGljYXRlX2lkIGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqd2lyZXMgJWk6IFwiIGkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBqIGVycm9yID1cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiAlaTpcIiBqIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCBjYXNlID0gUEIuQS5nZXQgYXJyYXkgaiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2UgbG9nIGNhc2UgaW5cbiAgICAgICAgICAgICAgICBsZXQgaicgPSBnZXRfcG9pbnRlcl9uZXh0IGNhc2UgaW5cbiAgICAgICAgICAgICAgICBsZXQgaicgPSBQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBqJyBpblxuICAgICAgICAgICAgICAgIGlmIGogPSBqJyB0aGVuXG4gICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGF1eCBqJyBlcnJvclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICAgIGF1eCAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCkgIWVyclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgXyA9IGVyciA6PSBlcnJvciBpblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICBibGFja2JvYXJkLmJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciA9ICFlcnIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKnN0YWNrcypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pXG4gICAgICAgIChMaXN0LnJldiBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2spXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSBzdGFjayAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSAtPlxuICAgICAgICAgICAgICAgIHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgc3RhY2tcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8pXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pIGJsYWNrYm9hcmQuc3RhY2tcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqc2VsZWN0ZWRfZXZlbnRzKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gaSBib29sIC0+XG4gICAgICAgICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGIgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgIEV2ZW50OiVpICglcylcIiBpXG4gICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgIFwiS0VQVFwiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBcIlJFTU9WRURcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50c1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip1bnNvbHZlZF9ldmVudHMqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiAlaVwiIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50cyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndlaWdodCBvZiBwcmVkaWNhdGVfaWQqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBCLkEuaXRlcmlcbiAgICAgICAgKGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiICVpOiVpXCIgYSBiIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndlaWdodCBvZiBwcmVkaWNhdGVfaWRfYnlfbGV2ZWwqXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuaXRlclxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiBMZXZlbDolc1wiIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBQQi5BLml0ZXJpIChmdW4gYSBiIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgJWk6JWlcIiBhIGIgaW5cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZykpXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gICgqKiBwcm9wYWdhdGlvbiByZXF1ZXN0ICopXG5cbiAgbGV0IGFkZF9ldmVudCBlaWQgKHBpZCwgc2VpZCkgYXJyYXkgbGV2ZWwgdW5zb2x2ZWQgPVxuICAgIGxldCBldmVudF9jYXNlX2FkZHJlc3MgPSBidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcGlkIHNlaWQgaW5cbiAgICBsZXQgb2xkID0gUEIuQS5nZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgaW5cbiAgICBsZXQgdW5zb2x2ZWQgPVxuICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsXG4gICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5maW5kX2RlZmF1bHQgMCBsZXZlbCB1bnNvbHZlZCArIDEpXG4gICAgICAgIHVuc29sdmVkXG4gICAgaW5cbiAgICBQQi5BLnNldCBhcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSAoZXZlbnRfY2FzZV9hZGRyZXNzIDo6IG9sZCksIHVuc29sdmVkXG5cbiAgbGV0IGVtcHR5X3N0YWNrID0gW11cblxuICBsZXQgaW1wb3J0ID9oZXVyaXN0aWM6XyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbl9wcmVkaWNhdGVzID1cbiAgICAgIFBCLm5fcHJlZGljYXRlcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbl9ldmVudHMgPVxuICAgICAgUEIubl9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBzdGFjayA9IFtdIGluXG4gICAgbGV0IGN1cnJlbnRfc3RhY2sgPSBlbXB0eV9zdGFjayBpblxuICAgIGxldCBldmVudF9jYXNlX2xpc3QgPSBQQi5BLm1ha2Ugbl9ldmVudHMgW10gaW5cbiAgICBsZXQgbl9zZWlkID0gUEIuQS5tYWtlIG5fcHJlZGljYXRlcyAwIGluXG4gICAgbGV0IHVuc29sdmVkX2J5X2xldmVsID0gUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHkgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgKFBCLkEubWFrZSAxIGR1bW15X2Nhc2VfaW5mbykgaW5cbiAgICBsZXQgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbCA9XG4gICAgICBsZXQgcmVjIGF1eCBsZXZlbF9vcHQgbWFwID1cbiAgICAgICAgbWF0Y2ggbGV2ZWxfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1hcFxuICAgICAgICB8IFNvbWUgbGV2ZWwgLT5cbiAgICAgICAgICBhdXggKFByaW9yaXR5LmhpZ2hlciBsZXZlbClcbiAgICAgICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWwgKFBCLkEubWFrZSAwIDApIG1hcClcbiAgICAgIGluXG4gICAgICBhdXggKFNvbWUgUHJpb3JpdHkubG93ZXN0KSBQcmlvcml0eS5MZXZlbE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IGluY19kZXB0aCBsZXZlbCBwX2lkID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW9yaXR5LkxldmVsTWFwLmZpbmRfb3B0aW9uIGxldmVsIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgIGxldCBvbGQgPSB0cnkgUEIuQS5nZXQgYSBwX2lkIHdpdGggTm90X2ZvdW5kIC0+IDAgaW5cbiAgICAgICAgUEIuQS5zZXQgYSBwX2lkIChvbGQgKyAxKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cblxuICAgIGxldCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkID0gUEIuQS5tYWtlIDAgMCBpblxuICAgIGxldCBsYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGVfaWQgPVxuICAgICAgUEIuQS5tYWtlIG5fcHJlZGljYXRlcyBQQi56ZXJvX3N0ZXBfc2hvcnRfaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgbGV0IHJlYyBhdXgxIHBfaWQgbG9nX2luZm8gZXJyb3IgPVxuICAgICAgICBpZiBwX2lkIDwgMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNpemUgPVxuICAgICAgICAgICAgUEIubl9ldmVudHNfcGVyX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBwcmVfYmxhY2tib2FyZCBwX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc2l6ZSA9IHNpemUgKyAxIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgUEIuQS5zZXQgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkIHBfaWRcbiAgICAgICAgICAgICAgKFBCLnN0ZXBfc2hvcnRfaWRfb2ZfaW50IChzaXplIC0gMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IHdlaWd0aF9vZl9wcmVkaWNhdGVfaWQgcF9pZCAoc2l6ZSAtIDIpIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBuX3NlaWQgcF9pZCBzaXplIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICBQQi5ldmVudF9saXN0X29mX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBwcmVfYmxhY2tib2FyZCBwX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYXJyYXkgPSBQQi5BLm1ha2Ugc2l6ZSBkdW1teV9jYXNlX2luZm8gaW5cbiAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGJsYWNrYm9hcmQgcF9pZCBhcnJheSBpblxuICAgICAgICAgIGxldCByZWMgYXV4MiBzZWlkIGwgbG9nX2luZm8gPVxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkeW5hbWljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBQQi56ZXJvX3N0ZXBfc2hvcnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9uZXh0ID0gUEIuaW5jX3N0ZXBfc2hvcnRfaWQgUEIuemVyb19zdGVwX3Nob3J0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlX2FmdGVyID0gUEIudW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gU29tZSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc3RhdGljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd19zaG9ydF9pZCA9IFBCLnplcm9fc3RlcF9zaG9ydF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgYXJyYXkgMCBpbmZvIGluXG4gICAgICAgICAgICAgIGxldCBwcmVkX3NpemUgPVxuICAgICAgICAgICAgICAgIFBCLmRlY19zdGVwX3Nob3J0X2lkIChQQi5zdGVwX3Nob3J0X2lkX29mX2ludCBzaXplKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZHluYW1pYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3ByZXZpb3VzID0gcHJlZF9zaXplO1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfbmV4dCA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSBTb21lIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBzdGF0aWMgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcm93X3Nob3J0X2lkID0gcHJlZF9zaXplO1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2lkID0gUEIuZHVtbXlfc3RlcF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBhcnJheSAoc2l6ZSAtIDEpIGluZm8gaW5cbiAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgIHwgdHJpcGxlIDo6IHEgLT5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPSBpbml0X2luZm8gcF9pZCBzZWlkIChzaXplIC0gMSkgdHJpcGxlIGluXG4gICAgICAgICAgICAgIGxldCBlaWQgPSBnZXRfZWlkX29mX3RyaXBsZSB0cmlwbGUgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgX2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgUEIuZ2V0X3ByZV9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgX2Vycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgICAgICAgIFBCLmdldF9sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgZWlkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGluY19kZXB0aCBsZXZlbCBwX2lkIGluXG4gICAgICAgICAgICAgIGxldCAoKSwgXyA9XG4gICAgICAgICAgICAgICAgYWRkX2V2ZW50IGVpZCAocF9pZCwgc2VpZCkgZXZlbnRfY2FzZV9saXN0IGxldmVsXG4gICAgICAgICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5lbXB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBQQi5BLnNldCBhcnJheSAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgc2VpZCkgaW5mbyBpblxuICAgICAgICAgICAgICBhdXgyIChQQi5kZWNfc3RlcF9zaG9ydF9pZCBzZWlkKSBxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgYXV4MiAoUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgKHNpemUgLSAyKSkgbGlzdCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4MSAocF9pZCAtIDEpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXgxIChuX3ByZWRpY2F0ZXMgLSAxKSBsb2dfaW5mbyBlcnJvclxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZm9yY2VkX2V2ZW50cyA9XG4gICAgICBQQi5tYW5kYXRvcnlfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBldmVudCA9XG4gICAgICBQQi5nZXRfcHJlX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB1bnNvbHZlZF9ieV9sZXZlbCA9XG4gICAgICBsZXQgcmVjIGF1eCBrIGVycm9yIGxvZ19pbmZvIG1hcCA9XG4gICAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIG1hcFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsZXZlbCA9XG4gICAgICAgICAgICBQQi5nZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgKFBCLnN0ZXBfaWRfb2ZfaW50IGspXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgIFByaW9yaXR5LkxldmVsTWFwLmFkZCBsZXZlbFxuICAgICAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbGV2ZWwgbWFwICsgMSlcbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKGsgLSAxKSBlcnJvciBsb2dfaW5mbyBtYXBcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBuX2V2ZW50cyBlcnJvciBsb2dfaW5mbyB1bnNvbHZlZF9ieV9sZXZlbFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2lkZV9lZmZlY3RzID1cbiAgICAgIFBCLmdldF9zaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZmljdGl0aW91c19vYnMgPVxuICAgICAgUEIuZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGIgPVxuICAgICAge1xuICAgICAgICBldmVudDtcbiAgICAgICAgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgPSBzaWRlX2VmZmVjdHM7XG4gICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IFBCLmdldF9wcmVfY29sdW1uX21hcF9pbnYgcHJlX2JsYWNrYm9hcmQ7XG4gICAgICAgIGxldmVsX29mX2V2ZW50ID0gUEIubGV2ZWxzIHByZV9ibGFja2JvYXJkO1xuICAgICAgICBmb3JjZWRfZXZlbnRzO1xuICAgICAgICBuX2VpZCA9IG5fZXZlbnRzO1xuICAgICAgICBuX3NlaWQ7XG4gICAgICAgIGV2ZW50X2Nhc2VfbGlzdDtcbiAgICAgICAgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkO1xuICAgICAgICBuX3ByZWRpY2F0ZV9pZCA9IG5fcHJlZGljYXRlcztcbiAgICAgICAgY3VycmVudF9zdGFjaztcbiAgICAgICAgc3RhY2s7XG4gICAgICAgIGJsYWNrYm9hcmQ7XG4gICAgICAgIHNlbGVjdGVkX2V2ZW50cyA9IFBCLkEubWFrZSBuX2V2ZW50cyBOb25lO1xuICAgICAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkO1xuICAgICAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsO1xuICAgICAgICB1c2VkX3ByZWRpY2F0ZV9pZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgdHJ1ZTtcbiAgICAgICAgbl91bnJlc29sdmVkX2V2ZW50cyA9IG5fZXZlbnRzO1xuICAgICAgICBuX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsID0gdW5zb2x2ZWRfYnlfbGV2ZWw7XG4gICAgICAgIGZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA9IGZpY3RpdGlvdXNfb2JzO1xuICAgICAgfVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBiXG5cbiAgbGV0IGV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGluZm8gPVxuICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgaW5mby5keW5hbWljLnNlbGVjdGVkXG5cbiAgbGV0IHNldF9jYXNlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgdHJ5XG4gICAgICBsZXQgXyA9XG4gICAgICAgIFBCLkEuc2V0XG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgY2FzZV9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZClcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgd2l0aCBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwiRGVyZWZlcmVuY2luZyBOdWxsIHBvaW50ZXJcIlxuICAgICAgICAoRmFpbHVyZSBcIkRlcmVmZXJlbmNpbmcgbnVsbCBwb2ludGVyXCIpIGJsYWNrYm9hcmRcblxuICBsZXQgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNhc2VfYWRkcmVzcyB3aXRoXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaW50LCBsZXZlbCkgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQyIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgIGxldCAoKSA9IFBCLkEuc2V0IGEgaW50IGludDIgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgfCBQb2ludGVyIF8gfCBTdGF0ZSBfIHwgQm9vbGVhbiBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGludCAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBDb3VudGVyIGludDIgLT5cbiAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWQgaW50IGludDIgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuICAgIHwgUG9pbnRlcl90b19uZXh0IGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBQb2ludGVyIGludDIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHBvaW50ZXJfbmV4dCA9IGludDIgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBDb3VudGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFZhbHVlX2FmdGVyIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBTdGF0ZSBzdGF0ZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICB7IG9sZCB3aXRoIGR5bmFtaWMgPSB7IG9sZC5keW5hbWljIHdpdGggc3RhdGVfYWZ0ZXIgPSBzdGF0ZSB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IEJvb2xlYW4gXyB8IENvdW50ZXIgXyB8IFBvaW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJzZXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB2YWx1ZV9hZnRlclwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuICAgIHwgVmFsdWVfYmVmb3JlIF9jYXNlX2FkZHJlc3MgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJzZXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB2YWx1ZV9iZWZvcmVcIlxuICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICBibGFja2JvYXJkXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBQb2ludGVyIGludDIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHBvaW50ZXJfcHJldmlvdXMgPSBpbnQyIH0gfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyB8IENvdW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInNldCwgbGluZSA4OTYsIEluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQgLT5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB7IGJsYWNrYm9hcmQgd2l0aCBuX3VucmVzb2x2ZWRfZXZlbnRzID0gaW50IH1cbiAgICAgIHwgQm9vbGVhbiBfIHwgUG9pbnRlciBfIHwgU3RhdGUgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInNldCwgbGluZSA5MDUsIEluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbGV2ZWwgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQgLT5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgIG5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWwgPVxuICAgICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWwgaW50XG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsO1xuICAgICAgICAgIH0gKVxuICAgICAgfCBCb29sZWFuIF8gfCBTdGF0ZSBfIHwgUG9pbnRlciBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBCb29sZWFuIGIgLT5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIFBCLkEuc2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSBiXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBTdGF0ZSBfIHwgQ291bnRlciBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IEV4aXN0IGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBCb29sZWFuIGIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHNlbGVjdGVkID0gYiB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IFBvaW50ZXIgXyB8IENvdW50ZXIgXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuXG4gIGxldCBpc19zZWxlY3RlZF9ldmVudCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfaWQgYmxhY2tib2FyZCA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgKFBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpIClcblxuICBsZXQgcmVjIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZCA9XG4gICAgbWF0Y2ggY2FzZV9hZGRyZXNzIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIEJvb2xlYW5cbiAgICAgICAgICAoUEIuQS5nZXQgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgKFBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpKSApXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaW50LCBsZXZlbCkgLT5cbiAgICAgIGxldCBuID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICAgICAgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gUEIuQS5nZXQgYSBpbnRcbiAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgblxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaW50IC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgKFBCLkEuZ2V0IGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCBpbnQpXG4gICAgfCBFeGlzdCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQm9vbGVhbiBjYXNlLmR5bmFtaWMuc2VsZWN0ZWRcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgUG9pbnRlciBjYXNlLmR5bmFtaWMucG9pbnRlcl9uZXh0XG4gICAgfCBWYWx1ZV9hZnRlciBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RhdGUgY2FzZS5keW5hbWljLnN0YXRlX2FmdGVyXG4gICAgfCBWYWx1ZV9iZWZvcmUgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgcG9pbnRlciA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICBpZiBpc19udWxsX3BvaW50ZXIgcG9pbnRlciB0aGVuXG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIlZhbHVlIGJlZm9yZSBhbiB1bmV4aXN0aW5nIGVsZW1lbnQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIlZhbHVlIGJlZm9yZSBhbiB1bmV4aXN0aW5nIGVsZW1lbnQgcmVxdWVzdGVkXCIpXG4gICAgICAgICAgKFN0YXRlIFBCLnVuZGVmaW5lZClcbiAgICAgIGVsc2VcbiAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKFZhbHVlX2FmdGVyIHsgY2FzZV9hZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gcG9pbnRlciB9KVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFBvaW50ZXIgY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQ291bnRlciBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbHZsIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgQ291bnRlclxuICAgICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5maW5kX2RlZmF1bHQgMCBsdmxcbiAgICAgICAgICAgICBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWwpIClcblxuICBsZXQgZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWZpeCBpbnQgaW50MlxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgbGV0IGZpbGVfbmFtZSA9XG4gICAgICBwcmVmaXggXiBcIl9cIiBeIHN0cmluZ19vZl9pbnQgaW50IF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGludDIgXiBcIi5zeHdcIlxuICAgIGluXG4gICAgbGV0IGRlc2NfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGVfbmFtZSBpblxuICAgIGxldCBkZXNjID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6TG9nZ2Vycy5YTFMgZGVzY19jaGFuIGluXG4gICAgbGV0IHBhcmFtZXRlciA9IFBCLkNJLlBvLksuSC5zZXRfbG9nZ2VyIHBhcmFtZXRlciBkZXNjIGluXG4gICAgbGV0IG5jb2x1bW5zX2xlZnQgPSAzIGluXG4gICAgbGV0IG5yb3dzX2hlYWQgPSAyIGluXG4gICAgbGV0IHJvd19vZl9wcmVjb25kaXRpb24gZWlkID0gbnJvd3NfaGVhZCArICgzICogZWlkKSBpblxuICAgIGxldCByb3dfb2ZfcG9zdGNvbmRpdGlvbiBlaWQgPSAxICsgcm93X29mX3ByZWNvbmRpdGlvbiBlaWQgaW5cbiAgICBsZXQgY29sdW1uX29mX3BpZCBwaWQgPSBwaWQgKyBuY29sdW1uc19sZWZ0IGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJSRU0gICoqKioqICBCQVNJQyAgKioqKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0IGNvbG9ycyA9IFBCLkEubWFrZSBibGFja2JvYXJkLm5fZWlkIE5vbmUgaW5cbiAgICBsZXQgYmFja2NvbG9yIGxvZyBjb2xvciA9XG4gICAgICBtYXRjaCBjb2xvciB3aXRoXG4gICAgICB8IFNvbWUgY29sb3IgLT5cbiAgICAgICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgY29sb3IgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuQ2VsbEJhY2tDb2xvciA9IFJHQiglaSwlaSwlaSlcIiByIGcgYiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICgpXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBpblxuICAgIGxldCB0ZXh0Y29sb3IgbG9nIGNvbG9yID1cbiAgICAgIG1hdGNoIGNvbG9yIHdpdGhcbiAgICAgIHwgU29tZSBjb2xvciAtPlxuICAgICAgICBsZXQgciwgZywgYiA9IENvbG9yLnRyaXBsZV9vZl9jb2xvciBjb2xvciBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQy5DaGFyQ29sb3IgPSBSR0IoJWksJWksJWkpXCIgciBnIGIgaW5cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgZ2V0Y2VsbCBsb2cgcm93IGNvbCA9XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQyA9IFMuZ2V0Q2VsbEJ5UG9zaXRpb24oJWksJWkpXCIgY29sIHJvdyBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgIGluXG4gICAgbGV0IG92ZXJsaW5lX2Nhc2UgbG9nIHJvdyBfY29sIF9jb2xvciA9XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUj1TLlJvd3MoJWkpXCIgcm93IGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUi5Ub3BCb3JkZXIgPSB3aXRoQm9yZFwiIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG4gICAgaW5cbiAgICBsZXQgcHJpbnRfY2FzZSBsb2cgcm93IGNvbCBjb2xvcl9mb250IGNvbG9yX2JhY2sgc3RyaW5nID1cbiAgICAgIGlmIHN0cmluZyA8PiBcIlwiIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBnZXRjZWxsIGxvZyByb3cgY29sIGluXG4gICAgICAgIGxldCAoKSA9IHRleHRjb2xvciBsb2cgY29sb3JfZm9udCBpblxuICAgICAgICBsZXQgKCkgPSBiYWNrY29sb3IgbG9nIGNvbG9yX2JhY2sgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuc2V0Rm9ybXVsYShcXFwiJXNcXFwiKVwiIHN0cmluZyBpblxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgcHJpbnRfY2FzZV9mdW4gbG9nIHJvdyBjb2wgY29sb3JfZm9udCBjb2xvcl9iYWNrIGYgZXJyb3IgPVxuICAgICAgbGV0ICgpID0gZ2V0Y2VsbCBsb2cgcm93IGNvbCBpblxuICAgICAgbGV0ICgpID0gdGV4dGNvbG9yIGxvZyBjb2xvcl9mb250IGluXG4gICAgICBsZXQgKCkgPSBiYWNrY29sb3IgbG9nIGNvbG9yX2JhY2sgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLnNldEZvcm11bGEoXFxcIlwiIGluXG4gICAgICBsZXQgZXJyb3IgPSBmIGVycm9yIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiXFxcIilcIiBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgZXJyb3JcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiU3ViIE1haW5cIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgciwgZywgYiA9IENvbG9yLnRyaXBsZV9vZl9jb2xvciBDb2xvci5CbGFjayBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkRpbSB3aXRoQm9yZCBBcyBOZXcgY29tLnN1bi5zdGFyLnRhYmxlLkJvcmRlckxpbmVcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJXaXRoIHdpdGhCb3JkIHdpdGhCb3JkLkNvbG9yID0gUkdCKCVpLCVpLCVpKVwiIHIgZyBiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwid2l0aEJvcmQuT3V0ZXJMaW5lV2lkdGggPSA2MFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkVuZCBXaXRoXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiUyA9IFRoaXNDb21wb25lbnQuU2hlZXRzKDApXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCBfID1cbiAgICAgIG1hdGNoIGZvcmNlZF9ldmVudHMgYmxhY2tib2FyZCB3aXRoXG4gICAgICB8IFsgKGxpc3QsIF8pIF0gLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBlaWQgLT4gUEIuQS5zZXQgY29sb3JzIChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIChTb21lIENvbG9yLlJlZCkpXG4gICAgICAgICAgbGlzdFxuICAgICAgfCBfIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gcGlkIHBfaW5mbyAtPlxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2MgMCAoY29sdW1uX29mX3BpZCBwaWQpIE5vbmUgTm9uZVxuICAgICAgICAgICAgKGZ1biBfZXJyb3IgLT4gUEIucHJpbnRfcHJlZGljYXRlX2luZm8gZGVzYyBwX2luZm8pXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnZcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGVpZCBlcnJvciBsb2dfaW5mbyBzdGFjayA9XG4gICAgICBpZiBlaWQgPj0gYmxhY2tib2FyZC5uX2VpZCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgIGNhc2VfbGlzdF9vZl9laWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgKFBCLnN0ZXBfaWRfb2ZfaW50IGVpZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJvd19wcmVjb25kaXRpb24gPSByb3dfb2ZfcHJlY29uZGl0aW9uIGVpZCBpblxuICAgICAgICBsZXQgcm93X3Bvc3Rjb25kaXRpb24gPSByb3dfb2ZfcG9zdGNvbmRpdGlvbiBlaWQgaW5cbiAgICAgICAgbGV0IGNvbG9yLCBtYXliZWtlcHQgPVxuICAgICAgICAgIG1hdGNoIFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIGVpZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFBCLkEuZ2V0IGNvbG9ycyBlaWQsIHRydWVcbiAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPiBTb21lIENvbG9yLlJlZCwgdHJ1ZVxuICAgICAgICAgIHwgU29tZSBmYWxzZSAtPiBTb21lIENvbG9yLkdyZXksIGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYXV4MiBmIGcgbCBlcnJvciBsb2dfaW5mbyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBvdmVybGluZV9jYXNlIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb25cbiAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIHJvd19wcmVjb25kaXRpb25cbiAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgTm9uZSBjb2xvciAoZiB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIHJvd19wb3N0Y29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmUgY29sb3IgKGcgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgbWF5YmVrZXB0IHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHZhbHVlX2JlZm9yZSA9XG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yICh2YWx1ZV9iZWZvcmUgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBzdHJpbmdfb2ZfdmFsdWUgY2FzZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZXJyb3IsIGxvZ19pbmZvLCBcIlVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBwcmludF9jYXNlIGRlc2MgKHJvd19wcmVjb25kaXRpb24gLSAxKVxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgIChTb21lIENvbG9yLkxpZ2h0Ymx1ZSkgTm9uZSB2YWx1ZV9iZWZvcmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHZhbHVlX2FmdGVyID1cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICBnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKHZhbHVlX2FmdGVyIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3RyaW5nX29mX3ZhbHVlIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGVycm9yLCBsb2dfaW5mbywgXCJVbmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIChyb3dfcG9zdGNvbmRpdGlvbiArIDEpXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW5fb2ZfcGlkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgKFNvbWUgQ29sb3IuTGlnaHRibHVlKSBOb25lIHZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4MiBmIGcgcSBlcnJvciBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJpbnRfdGVzdCB0ID1cbiAgICAgICAgICBsZXQgY29sdW1uID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ibGFja2JvYXJkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIGxldCBjYXNlID1cbiAgICAgICAgICAgIFBCLkEuZ2V0IGNvbHVtbiAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgdC5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIGNhc2Uuc3RhdGljLnRlc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByaW50X2FjdGlvbiB0ID1cbiAgICAgICAgICBsZXQgY29sdW1uID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ibGFja2JvYXJkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIGxldCBjYXNlID1cbiAgICAgICAgICAgIFBCLkEuZ2V0IGNvbHVtbiAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgdC5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIGNhc2Uuc3RhdGljLmFjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RyaW5nX2VpZCBlcnJvciA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X2FzX2xvZ2dlciBkZXNjIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDp0cnVlIH5lbnY6aGFuZGxlci5QQi5DSS5Qby5LLkguZW52IGZcbiAgICAgICAgICAgICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkKSlcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiRXZlbnQ6JWlcIiBlaWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgcHJpbnRfY2FzZV9mdW4gZGVzYyByb3dfcHJlY29uZGl0aW9uIDEgTm9uZSBjb2xvciBzdHJpbmdfZWlkIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgcHJpbnRfY2FzZV9mdW4gZGVzYyByb3dfcG9zdGNvbmRpdGlvbiAxIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlIGRlc2Mgcm93X3ByZWNvbmRpdGlvbiAyIE5vbmUgY29sb3IgXCJQUkVDT05ESVRJT05cIiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcG9zdGNvbmRpdGlvbiAyIE5vbmUgY29sb3IgXCJQT1NUQ09ORElUSU9OXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgYXV4MiBwcmludF90ZXN0IHByaW50X2FjdGlvbiBsaXN0IGVycm9yIGxvZ19pbmZvXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBjYW5kID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgaW5cbiAgICAgICAgICAgIFRyYWNlLnN0ZXBfaXNfcnVsZSBjYW5kIHx8IFRyYWNlLnN0ZXBfaXNfcGVydCBjYW5kXG4gICAgICAgICAgICB8fCBUcmFjZS5zdGVwX2lzX29icyBjYW5kIHx8IFRyYWNlLnN0ZXBfaXNfaW5pdCBjYW5kXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBzdGFjayA9XG4gICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBlcnJvciByb3cgLT5cbiAgICAgICAgICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93IDAgTm9uZSBjb2xvciBzdHJpbmdfZWlkIGVycm9yKVxuICAgICAgICAgICAgICAgIGVycm9yIChMaXN0LnJldiBzdGFjaylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgW11cbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCByb3dfcHJlY29uZGl0aW9uIDo6IHJvd19wb3N0Y29uZGl0aW9uIDo6IHN0YWNrXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoZWlkICsgMSkgZXJyb3IgbG9nX2luZm8gc3RhY2tcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPSBhdXggMCBlcnJvciBsb2dfaW5mbyBbXSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiRW5kIFN1YlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9vdXQgZGVzY19jaGFuIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCByZWNvcmRfbW9kaWYgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICA9XG4gICAgKCBlcnJvcixcbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIGN1cnJlbnRfc3RhY2sgPSAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlKSA6OiBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2s7XG4gICAgICB9IClcblxuICBsZXQgcmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlIGJsYWNrYm9hcmRcbiAgICAgID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBjYXNlX3ZhbHVlID0gb2xkIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJALklHTk9SRUQqKipALlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgSWdub3JlKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgICAgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG9sZCBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALklHTk9SRUQqKipALlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgSWdub3JlKVxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgICAgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfdmFsdWUgb2xkXG4gICAgICAgIGluXG4gICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5TVUNDRVNTKioqQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFN1Y2Nlc3MpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALioqKkAuUkVGSU5FX1ZBTFVFQC5WYWx1ZSBiZWZvcmU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIG9sZCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgY2FzZV92YWx1ZSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALkZBSUwqKipALlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgRmFpbClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcblxuICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBjYXNlX3ZhbHVlID0gb2xkIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgcmVjb3JkX21vZGlmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGNhc2VfYWRkcmVzcyBvbGQgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIClcblxuICBsZXQgZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBtYXRjaCBvbGQgd2l0aFxuICAgIHwgQ291bnRlciBrIC0+XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3NcbiAgICAgICAgICAgIChDb3VudGVyIChrIC0gMSkpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgcmVjb3JkX21vZGlmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGNhc2VfYWRkcmVzcyBvbGQgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIClcbiAgICB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJXcm9uZyB0eXBlIG9mIGNhc2UgdmFsdWVcIlxuICAgICAgICAoRmFpbHVyZSBcIldyb25nIHR5cGUgb2YgY2FzZSB2YWx1ZVwiKSBibGFja2JvYXJkXG5cbiAgbGV0IGJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiAqIEJSQU5DSCAqQC4qKioqKioqQC5cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfYnJhbmNoIGxvZ19pbmZvIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAge1xuICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgOjogYmxhY2tib2FyZC5zdGFjaztcbiAgICAgICAgY3VycmVudF9zdGFjayA9IFtdO1xuICAgICAgfSApXG5cbiAgbGV0IHJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiKioqKioqKkAuKiBDdXQgKkAuKioqKioqKlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICBwcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSkgLT5cbiAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgIHN0YWNrXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiogQWZ0ZXJfQ3V0ICpALioqKioqKipcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfY3V0IGxvZ19pbmZvIGluXG4gICAgbWF0Y2ggYmxhY2tib2FyZC5zdGFjayB3aXRoXG4gICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIGN1cnJlbnRfc3RhY2sgPSBbXSB9XG4gICAgfCB0IDo6IHEgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggY3VycmVudF9zdGFjayA9IHQ7IHN0YWNrID0gcSB9XG5cbiAgbGV0IHJlc2V0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IHJlYyBhdXggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgPVxuICAgICAgbWF0Y2ggYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXV4IChyZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9IGF1eCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMucmVzZXRfbG9nIGxvZ19pbmZvIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgdHlwZSByZXN1bHQgPSAoVHJhY2Uuc3RlcCAqIFBCLkNJLlBvLksuc2lkZV9lZmZlY3QpIGxpc3RcbiAgKCoqIG91dHB1dCByZXN1bHQqKVxuXG4gICgqKiBpdGVyYXRpb24qKVxuICBsZXQgaXNfbWF4aW1hbF9zb2x1dGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzID0gMFxuXG4gICgqKiBleHBvcnRpbmcgcmVzdWx0KilcblxuICBsZXQgdHJhbnNsYXRlX2JsYWNrYm9hcmQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgYXJyYXkgPSBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyBpblxuICAgIGxldCBzdGVwX2FycmF5ID0gYmxhY2tib2FyZC5ldmVudCBpblxuICAgIGxldCBzaWRlX2FycmF5ID0gYmxhY2tib2FyZC5zaWRlX2VmZmVjdF9vZl9ldmVudCBpblxuICAgIGxldCBzaXplID0gUEIuQS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgaWYgayA9IHNpemUgdGhlblxuICAgICAgICBMaXN0LnJldiBsaXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGJvb2wgPSBQQi5BLmdldCBhcnJheSBrIGluXG4gICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgbGlzdFxuICAgICAgICB8IFNvbWUgZmFsc2UgLT4gYXV4IChrICsgMSkgbGlzdFxuICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgIGxldCBzdGVwID0gUEIuQS5nZXQgc3RlcF9hcnJheSBrIGluXG4gICAgICAgICAgbGV0IHNpZGUgPSBQQi5BLmdldCBzaWRlX2FycmF5IGsgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoKHN0ZXAsIHNpZGUpIDo6IGxpc3QpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IGF1eCAwIFtdIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbiAgbGV0IHByaW50X3N0YWNrIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBzdGFjayA9IGJsYWNrYm9hcmQuY3VycmVudF9zdGFjayBpblxuICAgIGxldCBsb2cgPSBQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiQ3VycmVudF9zdGFja19sZXZlbCAlaSBcIiAoTGlzdC5sZW5ndGggc3RhY2spXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgaSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkAuXCIgaW5cbiAgICAgICAgICBlcnJvcilcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgKExpc3QucmV2IHN0YWNrKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIHggLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiT3RoZXIgbGV2ZWwgJWkgXCIgKExpc3QubGVuZ3RoIHgpIGluXG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgKExpc3QucmV2IHgpKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoTGlzdC5yZXYgYmxhY2tib2FyZC5zdGFjaylcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgaXNfZmljdGl0aW91c19vYnMgYmxhY2tib2FyZCBlaWQgPVxuICAgIFNvbWUgZWlkID0gYmxhY2tib2FyZC5maWN0aXRpb3VzX29ic2VydmFibGVcblxuICBsZXQgdXNlbGVzc19wcmVkaWNhdGVfaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0ID1cbiAgICBsZXQgbl9ldmVudHMgPSBibGFja2JvYXJkLm5fZWlkIGluXG4gICAgaWYgUGFyYW1ldGVyLmRvX2xvY2FsX2N1dCB0aGVuIChcbiAgICAgIGxldCBldmVudF9hcnJheSA9IFBCLkEubWFrZSBuX2V2ZW50cyBmYWxzZSBpblxuICAgICAgbGV0IGtlcHRfZXZlbnRzID0gW10gaW5cbiAgICAgIGxldCBrZXB0X2V2ZW50cyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBrZXB0X2V2ZW50cyBpIC0+XG4gICAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGV2ZW50X2FycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBpKSB0cnVlIGluXG4gICAgICAgICAgICBpIDo6IGtlcHRfZXZlbnRzKVxuICAgICAgICAgIGtlcHRfZXZlbnRzIGxpc3RcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0IGtlcHRfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggZXZlbnRfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBrZXB0X2V2ZW50c1xuICAgICAgICB8IGVpZCA6OiBxIC0+XG4gICAgICAgICAgaWYgaXNfZmljdGl0aW91c19vYnMgYmxhY2tib2FyZCBlaWQgdGhlblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIHEga2VwdF9ldmVudHNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudF9jYXNlX2xpc3QgKFBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cykgZXZlbnRfY2FzZV9hZGRyZXNzIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgICAgICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIFBCLmlzX3VuZGVmaW5lZCBjYXNlLnN0YXRpYy50ZXN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2ludGVyID0gY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXMgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBzY2FuX2Rvd24gcG9pbnRlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dfc2hvcnRfZXZlbnRfaWQgPSBwb2ludGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF9lcnJvciwgX2xvZ19pbmZvLCBwcmV2X2Nhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfZXZlbnRfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9laWQgPSBwcmV2X2Nhc2Uuc3RhdGljLmV2ZW50X2lkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19udWxsX3BvaW50ZXJfc3RlcF9pZCBwcmV2X2VpZCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgUEIuaXNfdW5rbm93biBwcmV2X2Nhc2Uuc3RhdGljLmFjdGlvbiB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvaW50ZXIgPSBwcmV2X2Nhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5fZG93biBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwcmV2X2VpZFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2Nhbl9kb3duIHBvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZWlkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHByZXZfZWlkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IFBCLkEuZ2V0IGV2ZW50X2FycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBwcmV2X2VpZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHEsIGtlcHRfZXZlbnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQi5BLnNldCBldmVudF9hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBCLmludF9vZl9zdGVwX2lkIHByZXZfZWlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2VpZCA6OiBxLCBwcmV2X2VpZCA6OiBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cylcbiAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIHEga2VwdF9ldmVudHNcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcmVwID0gYXV4IGxvZ19pbmZvIGVycm9yIGxpc3Qga2VwdF9ldmVudHMgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgTGlzdC5zb3J0IGNvbXBhcmUgcmVwLCBuX2V2ZW50cyAtIExpc3QubGVuZ3RoIHJlcFxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXZlbnRzX3RvX2tlZXAgPVxuICAgICAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXggKGsgLSAxKSAoUEIuc3RlcF9pZF9vZl9pbnQgayA6OiBsaXN0KVxuICAgICAgICBpblxuICAgICAgICBhdXggKG5fZXZlbnRzIC0gMSkgW11cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50c190b19rZWVwLCAwXG4gICAgKVxuXG4gIGxldCBjdXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjdXRfY2F1c2FsX2Zsb3csIG5fZXZlbnRzX3JlbW92ZWQgPVxuICAgICAgdXNlbGVzc19wcmVkaWNhdGVfaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0XG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb25fdGltZSBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2tfY3V0X2V2ZW50cyBuX2V2ZW50c19yZW1vdmVkIGxvZ19pbmZvXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjdXRfY2F1c2FsX2Zsb3cpXG5cbiAgbGV0IGltcG9ydCA/aGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWJsYWNrYm9hcmQgPVxuICAgICAgUEIuaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIF9zdGVwX2lkLCBzdHJpbmcsIHRvX3hscykgPVxuICAgICAgbWF0Y2ggcGFyYW1ldGVyLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkNvbXByZXNzaW9uIG1vZGUgaGFzIG5vdCBiZWVuIHNldCB1cFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJDb21wcmVzc2lvbiBtb2RlIGhhcyBub3QgYmVlbiBzZXQgdXAuXCIpXG4gICAgICAgICAgKHByZWJsYWNrYm9hcmQsIFBCLnplcm9fc3RlcF9pZCwgXCJOb25lXCIsIGZhbHNlKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSkgcmVmaW5lZF9ldmVudCAtPlxuICAgICAgICAgICAgICBQQi5hZGRfc3RlcF91cF90b19pc28gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICByZWZpbmVkX2V2ZW50IHByZWJsYWNrYm9hcmQgaW50KVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIFBCLnplcm9fc3RlcF9pZCkpXG4gICAgICAgICAgICBsaXN0XG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgKCBwcmVibGFja2JvYXJkLFxuICAgICAgICAgICAgaW50LFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lLFxuICAgICAgICAgICAgUGFyYW1ldGVyLmR1bXBfZ3JpZF9iZWZvcmVfc3Ryb25nX2NvbXByZXNzaW9uICkgKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIGludCkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpKSByZWZpbmVkX2V2ZW50IC0+XG4gICAgICAgICAgICAgIFBCLmFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHJlZmluZWRfZXZlbnRcbiAgICAgICAgICAgICAgICBwcmVibGFja2JvYXJkIGludClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQpKVxuICAgICAgICAgICAgbGlzdFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICggcHJlYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGludCxcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHN3ZWFrRmlsZU5hbWUsXG4gICAgICAgICAgICBQYXJhbWV0ZXIuZHVtcF9ncmlkX2JlZm9yZV93ZWFrX2NvbXByZXNzaW9uICkgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlYmxhY2tib2FyZCA9XG4gICAgICBQQi5maW5hbGl6ZSBoZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBpbXBvcnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IF8gPSBQcmlvcml0eS5uX3N0b3J5IDo9ICFQcmlvcml0eS5uX3N0b3J5ICsgMSBpblxuICAgIGxldCBfID0gUHJpb3JpdHkubl9icmFuY2ggOj0gMSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgIGlmIHRvX3hscyB0aGVuXG4gICAgICAgIGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJpbmdcbiAgICAgICAgICAhUHJpb3JpdHkubl9zdG9yeSAwIGJsYWNrYm9hcmRcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5lbmRcbiIsIigqKlxuICAqIHByb3BhZ2F0aW9uX2hldXJpc3RpYy5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTA5LTA1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDowMzoxMSBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0ID0gUGFyYW1ldGVyLmxvb2tfdXBfZm9yX2JldHRlcl9jdXRcbmxldCBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgPSBQYXJhbWV0ZXIubG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0XG5cbm1vZHVsZSB0eXBlIEJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMgPSBzaWdcbiAgbW9kdWxlIEIgOiBCbGFja2JvYXJkLkJsYWNrYm9hcmRcblxuICB0eXBlIHVwZGF0ZV9vcmRlclxuICB0eXBlIHByb3BhZ2F0aW9uX2NoZWNrXG5cbiAgdmFsIGR1bW15X3VwZGF0ZV9vcmRlciA6IHVwZGF0ZV9vcmRlclxuXG4gIHZhbCBmb3JjZWRfZXZlbnRzIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgICh1cGRhdGVfb3JkZXIgbGlzdFxuICAgICAgKiBCLlBCLnN0ZXBfaWQgbGlzdFxuICAgICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbilcbiAgICAgIGxpc3QgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGZvcmJpZGRlbl9ldmVudHMgOlxuICAgIChCLlBCLnN0ZXBfaWQgbGlzdCwgdXBkYXRlX29yZGVyIGxpc3QpIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIG5leHRfY2hvaWNlIDogKEIuYmxhY2tib2FyZCwgdXBkYXRlX29yZGVyIGxpc3QpIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGFwcGx5X2luc3RydWN0aW9uIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgIHVwZGF0ZV9vcmRlcixcbiAgICAgIHVwZGF0ZV9vcmRlciBsaXN0LFxuICAgICAgcHJvcGFnYXRpb25fY2hlY2sgbGlzdCxcbiAgICAgIEIuYmxhY2tib2FyZFxuICAgICAgKiB1cGRhdGVfb3JkZXIgbGlzdFxuICAgICAgKiBwcm9wYWdhdGlvbl9jaGVjayBsaXN0XG4gICAgICAqIEIuYXNzaWduX3Jlc3VsdCApXG4gICAgQi5QQi5DSS5Qby5LLkgucXVhdGVybmFyeVxuXG4gIHZhbCBwcm9wYWdhdGUgOlxuICAgICggQi5ibGFja2JvYXJkLFxuICAgICAgcHJvcGFnYXRpb25fY2hlY2ssXG4gICAgICB1cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3QsXG4gICAgICBCLmJsYWNrYm9hcmRcbiAgICAgICogdXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogcHJvcGFnYXRpb25fY2hlY2sgbGlzdFxuICAgICAgKiBCLmFzc2lnbl9yZXN1bHQgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcbmVuZFxuXG5tb2R1bGUgUHJvcGFnYXRpb25faGV1cmlzdGljIDogQmxhY2tib2FyZF93aXRoX2hldXJpc3RpYyA9IHN0cnVjdFxuICBtb2R1bGUgQiA6IEJsYWNrYm9hcmQuQmxhY2tib2FyZCA9IEJsYWNrYm9hcmQuQmxhY2tib2FyZFxuXG4gIGxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBwb3Mgfm1lc3NhZ2UgZXhuIGRlZmF1bHRcblxuICB0eXBlIHVwZGF0ZV9vcmRlciA9XG4gICAgfCBLZWVwX2V2ZW50IG9mIEIuUEIuc3RlcF9pZFxuICAgIHwgRGlzY2FyZF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IEN1dF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IFJlZmluZV92YWx1ZV9hZnRlciBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzcyAqIEIuUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBSZWZpbmVfdmFsdWVfYmVmb3JlIG9mIEIuZXZlbnRfY2FzZV9hZGRyZXNzICogQi5QQi5wcmVkaWNhdGVfdmFsdWVcbiAgICB8IFNraXBcblxuICBsZXQgZHVtbXlfdXBkYXRlX29yZGVyID0gU2tpcFxuXG4gIHR5cGUgcHJvcGFnYXRpb25fY2hlY2sgPVxuICAgIHwgUHJvcGFnYXRlX3VwIG9mIEIuZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBQcm9wYWdhdGVfZG93biBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzc1xuXG4gIGxldCBfcHJpbnRfb3V0cHV0IGxvZyB4ID1cbiAgICBpZiBCLmlzX2ZhaWxlZCB4IHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJGQUlMRURcIlxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHggdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIklHTk9SRURcIlxuICAgIGVsc2VcbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJTVUNDRVNTXCJcblxuICBsZXQgZm9yY2VkX2V2ZW50cyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBsaXN0ID0gQi5mb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAobCwgaW5mbykgLT5cbiAgICAgICAgICBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IEtlZXBfZXZlbnQgeCkgKExpc3QucmV2IGwpLCBsLCBpbmZvKVxuICAgICAgICAoTGlzdC5yZXYgbGlzdCkgKVxuXG4gIGxldCBmb3JiaWRkZW5fZXZlbnRzIF9wYXJhbXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBlcnJvciwgbG9nX2luZm8sIExpc3QucmV2X21hcCAoZnVuIHggLT4gQ3V0X2V2ZW50IHgpIChMaXN0LnJldiBsaXN0KVxuXG4gIGxldCBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIGZpcnN0IGxhc3Qgc3VjYyBzdG9wIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWQgbGV2ZWwgPVxuICAgIGxldCBrX2luaXQgPSBmaXJzdCBibGFja2JvYXJkIHBfaWQgaW5cbiAgICBsZXQga19lbmQgPSBsYXN0IGJsYWNrYm9hcmQgcF9pZCBpblxuICAgIG1hdGNoIGtfaW5pdCwga19lbmQgd2l0aFxuICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgfCBTb21lIGksIFNvbWUgaiAtPlxuICAgICAgbGV0IHJlYyBhdXggaSBsb2dfaW5mbyBlcnJvciA9XG4gICAgICAgIGlmIHN0b3AgaSBqIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGV2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgICBCLmJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyBwX2lkIChCLmJ1aWxkX3BvaW50ZXIgaSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4aXN0ID1cbiAgICAgICAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZXhpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIF90ZXN0LCBfYWN0aW9uKSA9XG4gICAgICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWxfb2ZfZXZlbnQgPVxuICAgICAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbGV2ZWxfb2ZfZXZlbnQgPSBsZXZlbCB0aGVuXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgU29tZSBlaWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgfCBTb21lIHRydWUgfCBTb21lIGZhbHNlIC0+IGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IGkgbG9nX2luZm8gZXJyb3JcblxuICBsZXQgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBCLmdldF9sYXN0X2xpbmtlZF9ldmVudFxuICAgICAgQi5nZXRfZmlyc3RfbGlua2VkX2V2ZW50IEIuUEIuZGVjX3N0ZXBfc2hvcnRfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPCBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsXG5cbiAgbGV0IGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIEIuZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudFxuICAgICAgQi5nZXRfbGFzdF9saW5rZWRfZXZlbnQgQi5QQi5pbmNfc3RlcF9zaG9ydF9pZFxuICAgICAgKGZ1biBpIGogLT4gaSA+IGopXG4gICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWQgbGV2ZWxcblxuICBsZXQgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IGZpcnN0IGxhc3Qgc3VjYyBzdG9wIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICBlcnJvciBibGFja2JvYXJkIGxldmVsID1cbiAgICBsZXQgcmVjIGF1eCBpIGxvZ19pbmZvIGVycm9yID1cbiAgICAgIGlmIHN0b3AgaSBsYXN0IHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhpc3QgPVxuICAgICAgICAgIEIuaXNfc2VsZWN0ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaSBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWxfb2ZfZXZlbnQgPVxuICAgICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGxldmVsX29mX2V2ZW50ID0gbGV2ZWwgdGhlblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTb21lIGlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgfCBTb21lIHRydWUgfCBTb21lIGZhbHNlIC0+IGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IGZpcnN0IGxvZ19pbmZvIGVycm9yXG5cbiAgbGV0IGdldF9sYXN0X3VucmVzb2x2ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgbGV2ZWwgPVxuICAgIGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudFxuICAgICAgKEIuUEIuc3RlcF9pZF9vZl9pbnQgKEIuZ2V0X25fZWlkIGJsYWNrYm9hcmQpKVxuICAgICAgQi5QQi56ZXJvX3N0ZXBfaWQgQi5QQi5kZWNfc3RlcF9pZFxuICAgICAgKGZ1biBpIGogLT4gaSA8IGopXG4gICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxldmVsXG5cbiAgbGV0IGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnQgQi5QQi56ZXJvX3N0ZXBfaWRcbiAgICAgIChCLlBCLnN0ZXBfaWRfb2ZfaW50IChCLmdldF9uX2VpZCBibGFja2JvYXJkKSlcbiAgICAgIEIuUEIuaW5jX3N0ZXBfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPiBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsZXZlbFxuXG4gIGxldCBuZXh0X2Nob2ljZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgYm9vbCwgc3RyaW5nID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBOb25lIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPiBmYWxzZSwgXCJcIlxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uLFxuICAgICAgICAgIFBhcmFtZXRlci54bHN3ZWFrRmlsZU5hbWUgKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbixcbiAgICAgICAgICBQYXJhbWV0ZXIueGxzc3Ryb25nRmlsZU5hbWUgKVxuICAgIGluXG4gICAgbGV0ICgpID0gUHJpb3JpdHkubl9icmFuY2ggOj0gIVByaW9yaXR5Lm5fYnJhbmNoICsgMSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIEIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0cmluZ1xuICAgICAgICAgICAgIVByaW9yaXR5Lm5fc3RvcnkgIVByaW9yaXR5Lm5fYnJhbmNoIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByaW9yaXR5ID1cbiAgICAgIG1hdGNoIEIuUEIuQ0kuUG8uSy5ILmdldF9wcmlvcml0aWVzIHBhcmFtZXRlciB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiBlcnJvciwgeFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkNvbXByZXNzaW9uIG1vZGUgaGFzIHRvIGJlZW4gc2VsZWN0ZWRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQ29tcHJlc3Npb24gbW9kZSBoYXMgbm90IGJlZW4gc2VsZWN0ZWRcIikgUHJpb3JpdHkuY2F1c2FsXG4gICAgaW5cbiAgICBsZXQgbl9wX2lkID0gQi5nZXRfbnByZWRpY2F0ZV9pZCBibGFja2JvYXJkIGluXG4gICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICBtYXRjaCBwcmlvcml0eS5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkFsbF9yZW1haW5pbmdfZXZlbnRzIHN0cmF0ZWd5IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQWxsIHJlbWFpbmluZyBldmVudHMgc3RyYXRlZ3kgaXMgbm90IGltcGxlbWVudGVkIHlldFwiKSAoKVxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT4gZXJyb3IsICgpXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzIC0+IGVycm9yLCAoKVxuICAgIGluXG4gICAgbGV0IGJlc3RfcGFpciB4IGEgYiA9XG4gICAgICBtYXRjaCB4LlByaW9yaXR5LmNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzIHdpdGhcbiAgICAgIHwgUHJpb3JpdHkuQWxsX3JlbWFpbmluZ19ldmVudHNcbiAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgVG9vbHMubWF4X3Bvc19pbnRfbm90X3plcm8gYSBiXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cyAtPlxuICAgICAgICBUb29scy5taW5fcG9zX2ludF9ub3RfemVybyBhIGJcbiAgICBpblxuICAgIGxldCBnZXRfdW5yZXNvbHZlZF9ldmVudCB4IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcF9pZFxuICAgICAgICBsZXZlbCA9XG4gICAgICBtYXRjaCB4LlByaW9yaXR5LnRyeV90b19yZW1vdmVfZmlyc3Qgd2l0aFxuICAgICAgfCBQcmlvcml0eS5MYXRlX2V2ZW50cyAtPlxuICAgICAgICAobWF0Y2ggeC5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICAgIHwgUHJpb3JpdHkuQWxsX3JlbWFpbmluZ19ldmVudHMgLT5cbiAgICAgICAgICBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgICBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsKVxuICAgICAgfCBQcmlvcml0eS5FYXJseV9ldmVudHMgLT5cbiAgICAgICAgKG1hdGNoIHguUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2ZpcnN0X3VucmVzb2x2ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50c1xuICAgICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cyAtPlxuICAgICAgICAgIGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsaXN0ID1cbiAgICAgIGlmIG5fcF9pZCA9IDAgdGhlblxuICAgICAgICBlcnJvciwgW11cbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmVjIHRyeV9sZXZlbCBsZXZlbF9vcHQgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIGxldmVsX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBbXVxuICAgICAgICAgIHwgU29tZSBsZXZlbCAtPlxuICAgICAgICAgICAgbGV0IHJlYyBhdXggbGV2ZWwgbl9wX2lkIHN0ZXAgYmVzdCA9XG4gICAgICAgICAgICAgIGlmIHN0ZXAgPSBuX3BfaWQgdGhlblxuICAgICAgICAgICAgICAgIGJlc3RcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IGdyYWRlID1cbiAgICAgICAgICAgICAgICAgIEIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkX2J5X2xldmVsIGJsYWNrYm9hcmQgc3RlcFxuICAgICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXV4IGxldmVsIG5fcF9pZCAoc3RlcCArIDEpXG4gICAgICAgICAgICAgICAgICAoYmVzdF9wYWlyIHByaW9yaXR5IGJlc3QgKGdyYWRlLCBzdGVwKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuLCBwX2lkID1cbiAgICAgICAgICAgICAgYXV4IGxldmVsIG5fcF9pZCAxXG4gICAgICAgICAgICAgICAgKEIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkX2J5X2xldmVsIGJsYWNrYm9hcmQgMCBsZXZlbCwgMClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgIHRyeV9sZXZlbCAoUHJpb3JpdHkubG93ZXIgbGV2ZWwpIGVycm9yXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sIGV2ZW50X2lkID1cbiAgICAgICAgICAgICAgICBnZXRfdW5yZXNvbHZlZF9ldmVudCBwcmlvcml0eSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGV2ZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxvZyA9IEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAoXCJBbiBlbXB0eSB3aXJlIGhhcyBiZWVuIHNlbGVjdGVkXCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICAgICAgICAgICAgICAgIChGYWlsdXJlIFwiQW4gZW1wdHkgd2lyZSBoYXMgYmVlbiBzZWxlY3RlZFwiKSAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFUlJPUiAyNDk6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBsZXZlbClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHRyeV9sZXZlbCAoUHJpb3JpdHkubG93ZXIgbGV2ZWwpIGVycm9yXG4gICAgICAgICAgICAgIHwgU29tZSBldmVudF9pZCAtPlxuICAgICAgICAgICAgICAgIGVycm9yLCBbIERpc2NhcmRfZXZlbnQgZXZlbnRfaWQ7IEtlZXBfZXZlbnQgZXZlbnRfaWQgXVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICB0cnlfbGV2ZWwgKFNvbWUgUHJpb3JpdHkuaGlnaGVzdCkgZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG4gIGxldCBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIGVpZCwgXywgXykgPVxuICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJFdmVudDogJWksIFByZWRpY2F0ZTogJWlcIiAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgIChCLnByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgY2FzZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IHByb3BhZ2F0ZV9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAoKiB0aGUgY2FzZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJsYWNrYm9hcmQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcylcbiAgICB8IFNvbWUgdHJ1ZSB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGtub3cgdGhhdCB0aGUgcGFpciAodGVzdC9hY3Rpb24pIGNhbiBiZWVuIGV4ZWN1dGVkICopXG4gICAgICBsZXQgY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wyID1cbiAgICAgICAgQi5leGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIChtYXRjaCBib29sMiB3aXRoXG4gICAgICB8IFNvbWUgZmFsc2UgLT5cbiAgICAgICAgKCogVGhlIGJsYWNrYm9hcmQgaXMgaW5jb25zaXN0ZW50OiAqKVxuICAgICAgICAoKiBQb2ludGVycyBzaG91bGQgbm90IHBvaW50IHRvIHJlbW92ZWQgZXZlbnRzLiopXG4gICAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiaW5jb25zaXN0ZW50IHBvaW50ZXJzIGluIGJsYWNrYm9hcmRcIlxuICAgICAgICAgICAgKEZhaWx1cmUgXCJpbmNvbnNpc3RlbnQgcG9pbnRlcnMgaW4gYmxhY2tib2FyZFwiKSAoKVxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfbmV4dF9zZWlkLCBfbmV4dF9laWQsIG5leHRfdGVzdCwgbmV4dF9hY3Rpb24pID1cbiAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBuZXh0X3Rlc3QsIEIuUEIuaXNfdW5rbm93biBuZXh0X2FjdGlvbiB3aXRoXG4gICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPlxuICAgICAgICAgICgqIG5vIHRlc3QsIG5vIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gKGNhc2UgMSk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCBidXQgaGFzIG5vIHRlc3QgYW5kIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJWYWx1ZSBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgKCogbm8gdGVzdCwgbm8gYWN0aW9uIGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgKCogbm8gdGVzdCwgYnV0IGFuIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDIpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiTm90aGluZyB0byBiZSBkb25lXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgKCogbm8gdGVzdCwgYnV0IGFuIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKCogbm90aGluZyB0byBwcm9wYWdhdGUgZG93bndhcmQqKVxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpIClcbiAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZWRpY2F0ZV92YWx1ZSBuZXh0X3Rlc3QgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25qID1cbiAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAzKTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGUgbmV3IHByZWRpY2F0ZV92YWx1ZSBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBjb25qXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiBiZWZvcmUgYW5kIGFmdGVyIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICAgKCogbm8gYWN0aW9uLCBidXQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgbWVldCBvZiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAzIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb25qKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGFyZSBpbmNvbXBhdGlibGUgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA0KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgY3V0IHRoZSBleHBsb3JhdGlvbiAqKVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICAgKVxuICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICgqdGhlcmUgaXMgYSB0ZXN0IGFuZCBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJlZGljYXRlX3ZhbHVlIG5leHRfdGVzdCB0aGVuIChcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGFuZCB0aGUgdmFsdWUgYXJlIGNvbXBhdGlibGUgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmogPVxuICAgICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDUpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCwgYSB0ZXN0IGJ1dCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlIG5ldyBwcmVkaWNhdGVfdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29ualxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA1IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICAgKCogYW4gYWN0aW9uIGFuZCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSBtZWV0IG9mIHRoZSB0ZXN0IGFuZCB0aGUgdmFsdWUgYmVmb3JlIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb25qKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKiB0ZXN0IGFuZCB2YWx1ZSBhcmUgaW5jb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNik6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QsIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNiBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIGFuIGFjdGlvbiBhbmQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBjdXQgdGhlIGV4cGxvcmF0aW9uICopXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgICApKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9uZXh0X3NlaWQsIG5leHRfZWlkLCBuZXh0X3Rlc3QsIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF9hY3Rpb24gd2l0aFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfdGVzdCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKnRoZXJlIGlzIG5vIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA3KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIG5vIHRlc3QsIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgaXMgcHJvcGFnYXRlZCBhZnRlciBhbmQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlxcblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA3IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgKCp0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgdmFsdWUgYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgbmV4dF90ZXN0IHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgKCogdGVzdCBhbmQgcHJlZGljYXRlX3ZhbHVlIGFyZSBjb21wYXRpYmxlICopXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA4KTpcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIGFuZCBiZWZvcmUgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA4IGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIG5vIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgdmFsdWUgYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlciAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA5KTpcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAoJWkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBuZXh0X2VpZClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOSBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgKCogd2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgbmV4dF9laWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgIGlmIG5vdCAoQi5QQi5jb21wYXRpYmxlIG5leHRfYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSkgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTApOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEwIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgam9pbiBvZiB0aGUgdmFsdWUgYW5kIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXJcbiAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICgqdGhlIGFjdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF90ZXN0IHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAxMSk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIG5vIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMSBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIG5vIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXJcbiAgICAgICAgICAgICAgICAgICAgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIG5leHRfdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEyKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEyXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgam9pbiBvZiB0aGUgdmFsdWUgYW5kIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTMpOlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IHRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgKCVpKSBpcyBkaXNjYXJkZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgbmV4dF9laWQpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxM1xuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICAgKCogd2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBuZXh0X2VpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKSkpXG5cbiAgbGV0IHJlYyBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfdmFsdWUgZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+IGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBfZWlkLCBfdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgaWYgQi5QQi5pc191bmtub3duIGFjdGlvbiB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgICAgICBCLmlzX2JvdW5kYXJ5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDEgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbm90IChCLlBCLmlzX3VuZGVmaW5lZCBwcmVkaWNhdGVfdmFsdWUpLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWUgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDIgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICApXG4gICAgICApIGVsc2UgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9sb29rX3VwX2Nhc2UgMyBsb2dfaW5mbyBpblxuICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIClcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgX3Rlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgIGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDQgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICApXG4gICAgICApXG5cbiAgbGV0IGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlX3ZhbHVlXG4gICAgICBhZGRyZXNzID1cbiAgICBpZiBCLlBCLmlzX3Vua25vd24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICBlbHNlXG4gICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICBhZGRyZXNzXG5cbiAgbGV0IGxhc3RfY2hhbmNlX3VwID1cbiAgICBpZiBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IHRoZW5cbiAgICAgIGxhc3RfY2hhbmNlX3VwXG4gICAgZWxzZVxuICAgICAgZnVuIF8gXyBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIF8gXyAtPlxuICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgcHJvcGFnYXRlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAoKiB0aGUgY2FzZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJsYWNrYm9hcmQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcylcbiAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgKCogd2Uga25vdyB0aGF0IHRoZSBwYWlyICh0ZXN0L2FjdGlvbikgaGFzIGJlZW4gZXhlY3V0ZWQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlblxuICAgICAgICAoKiBubyBhY3Rpb24sIHdlIGtlZXAgb24gcHJvcGFnYXRpbmcgd2l0aCB0aGUgY29uam9uY3Rpb24gb2YgdGhlIHRlc3Qgb2YgdGhlIHZhbHVlICopXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSB0ZXN0IHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfdmFsdWUgPVxuICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3QgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBuZXdfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgbmV3X3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMik6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAyIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKVxuICAgICAgZWxzZSBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgaWYgQi5QQi5pc191bmRlZmluZWQgdGVzdCB0aGVuIChcbiAgICAgICAgICAoKnRoZSB3aXJlIGhhcyBqdXN0IGJlIGNyZWF0ZWQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJOb3RoaW5nIHRvIGJlIGRvbmVcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDMgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICAgICkgZWxzZSBpZlxuICAgICAgICAgICAgKCp3ZSBrbm93IHRoYXQgdGhlIHdpcmUgd2FzIGRlZmluZWQgYmVmb3JlKilcbiAgICAgICAgICAgIEIuUEIuY29tcGF0aWJsZSB0ZXN0IEIuUEIuZGVmaW5lZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0YXRlID1cbiAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0ZXN0IEIuUEIuZGVmaW5lZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA0KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDQgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBzdGF0ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDUpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA1IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqVGhlIGV2ZW50IGhhcyB0byBiZSBkaXNjYXJkZWQgd2hpY2ggaXMgYWJzdXJkICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNik6XCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgNiBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgIClcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIHBhaXIgKHRlc3QvYWN0aW9uKSBoYXMgYmVlbiBleGVjdXRlZCAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIGFjdGlvbiB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biB0ZXN0IHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA3KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBuZWl0aGVyIGEgdGVzdCwgbm9yICBhY3Rpb24gXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDcgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDgpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhICB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA4IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA5KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgIHRlc3QsIGJ1dCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiRXZlbnQgYmVmb3JlICglaSkgaXMgZGlzY2FyZGVkXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA5IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBEaXNjYXJkX2V2ZW50IGVpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApKVxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByZXZpZXdfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19jYXNlX3ZhbHVlID1cbiAgICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmV2aWV3X2Nhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICBwcmV2aWV3X2Nhc2VfdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxMCk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBpcyB0aGUgb25seSBvcHBvcnR1bml0eSB0byBzZXQgdXAgdGhlIHdpcmUsIHdlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGtlZXAgdGhlIGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDEwIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgS2VlcF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggQi5QQi5pc191bmtub3duIHRlc3Qgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdFxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTEpOlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYW4gYWN0aW9uLCBidXQgbm8gdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld19wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMSBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld19wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5ld190ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld19wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5kaXNqdW5jdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBuZXdfdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTIpOlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld19wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEzKTpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNjYXJkIHRoZSBldmVudCBiZWZvcmUgKCVpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTNcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldicgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHRlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDE0KTpcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2J1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIHByZXYnKVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNSk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBtYXliZSBhIHRlc3RcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkRpc2NhcmQgdGhlIGV2ZW50IGJlZm9yZSAoJWkpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNik6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcmV2aW91cyB3aXJlIHN0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJTZWxlY3QgdGhlIGV2ZW50IGJlZm9yZSAoJWkpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDE2IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIEtlZXBfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDE3IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKSlcblxuICBsZXQgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hlY2tcbiAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIG1hdGNoIGNoZWNrIHdpdGhcbiAgICB8IFByb3BhZ2F0ZV91cCB4IC0+XG4gICAgICBwcm9wYWdhdGVfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB4XG4gICAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFByb3BhZ2F0ZV9kb3duIHggLT5cbiAgICAgIHByb3BhZ2F0ZV9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgeFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG5cbiAgbGV0IGN1dF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9uZXh0ID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgICgqIHdlIHJlbW92ZSB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0XG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICAoKiB3ZSBwbHVnIHBvaW50ZXIgbmV4dCBvZiB0aGUgcHJldmlvdXMgZXZlbnQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChCLnBvaW50ZXJfdG9fbmV4dCBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgIChCLnBvaW50ZXIgcG9pbnRlcl9uZXh0KSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIHByZXZpb3VzIG9mIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5wb2ludGVyX3RvX3ByZXZpb3VzIHBvaW50ZXJfbmV4dClcbiAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgKVxuXG4gIGxldCBsb29rX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcm9wYWdhdGVfbGlzdCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIF8sIGFjdGlvbikgPVxuICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgIGluXG4gICAgaWYgQi5QQi5pc191bmtub3duIGFjdGlvbiB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGlzdF92YWx1ZXMgPSBCLlBCLndlYWtlbmluZyBhY3Rpb24gaW5cbiAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSB2YWx1ZSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBhdXggY2FzZSBib29sIGVycm9yIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgbGV0IGNhID0gQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGNhc2UgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2EgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgcHJlZGljYXRlX3ZhbHVlIHZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICAgICAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va19kb3duX2Nhc2UgMSBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBQcm9wYWdhdGVfdXAgcG9pbnRlcl9uZXh0IDo6IHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgKVxuICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5leHRfY2FzZSA9XG4gICAgICAgICAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleGlzdCA9XG4gICAgICAgICAgICAgICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBuZXh0X2Nhc2VcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va19kb3duX2Nhc2UgMiBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICB8IFNvbWUgZmFsc2UgLT4gYXV4IG5leHRfY2FzZSBib29sIGVycm9yIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoXywgXywgXywgbmV4dF9hY3Rpb24pID1cbiAgICAgICAgICAgICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X2Nhc2VcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBCLlBCLm1vcmVfcmVmaW5lZCBuZXh0X2FjdGlvbiB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYXV4IG5leHRfY2FzZSB0cnVlIGVycm9yIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGF1eCBuZXh0X2Nhc2UgYm9vbCBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGNhc2UgZmFsc2UgZXJyb3IgbG9nX2luZm8pXG4gICAgICAgICAgKHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgbGlzdF92YWx1ZXNcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0XG4gICAgKVxuXG4gIGxldCBsb29rX2Rvd24gPVxuICAgIGlmIGxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCB0aGVuXG4gICAgICBsb29rX2Rvd25cbiAgICBlbHNlXG4gICAgICBmdW4gXyBfIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCBfIC0+XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0XG5cbiAgbGV0IHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIGxldCBjYXNlX2FkZHJlc3MgPSBCLnZhbHVlX2FmdGVyIGFkZHJlc3MgaW5cbiAgICBsZXQgc3RhdGUgPSBCLnN0YXRlIHZhbHVlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHJlc3VsdCkgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIHN0YXRlIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfaWdub3JlZCByZXN1bHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHJlc3VsdClcbiAgICBlbHNlIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIHJlc3VsdClcbiAgICBlbHNlIChcbiAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgICAgIFByb3BhZ2F0ZV91cCBhZGRyZXNzIDo6IFByb3BhZ2F0ZV9kb3duIGFkZHJlc3MgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgcmVzdWx0KVxuICAgIClcblxuICBsZXQgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICBpblxuICAgIHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwb2ludGVyX3ByZXZpb3VzIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcblxuICBsZXQgZGlzY2FyZF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9uZXh0ID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgICgqIHdlIHJlbW92ZSB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0XG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2EgPSBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgY2FzZSBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBfLCByZXN1bHQnKSA9XG4gICAgICAgIHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgcG9pbnRlcl9wcmV2aW91cyBwcmVkaWNhdGVfdmFsdWUgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCcgdGhlblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbXSwgW10pLCByZXN1bHQnXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGNhc2UpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBldmVudCwgXywgXykgPVxuICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgIEIubGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBldmVudFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgY2FzZSBsZXZlbClcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIG5leHQgb2YgdGhlIHByZXZpb3VzIGV2ZW50ICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIub3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5wb2ludGVyX3RvX25leHQgcG9pbnRlcl9wcmV2aW91cylcbiAgICAgICAgICAgIChCLnBvaW50ZXIgcG9pbnRlcl9uZXh0KSBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBwcmV2aW91cyBvZiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIucG9pbnRlcl90b19wcmV2aW91cyBwb2ludGVyX25leHQpXG4gICAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgICAgICAgUHJvcGFnYXRlX3VwIHBvaW50ZXJfbmV4dCA6OiBQcm9wYWdhdGVfZG93biBwb2ludGVyX3ByZXZpb3VzXG4gICAgICAgICAgOjogUHJvcGFnYXRlX3VwIHBvaW50ZXJfcHJldmlvdXMgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIGxvb2tfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByb3BhZ2F0ZV9saXN0XG4gICAgICAgICAgICBjYXNlXG4gICAgICAgIGluXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgICApXG4gICAgKVxuXG4gIGxldCBrZWVwX2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgY2FzZVxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpID1cbiAgICAoKiB3ZSBrZWVwIHRoZSBjYXNlICopXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHJlc3VsdCkgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuZXhpc3QgY2FzZSlcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSB0cnVlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9wcmV2aW91cyA9XG4gICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgX3BvaW50ZXJfbmV4dCA9XG4gICAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIGVpZCwgdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgIHRlc3QgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBfLCByZXN1bHQnJykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgYWN0aW9uIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQnIHx8IEIuaXNfZmFpbGVkIHJlc3VsdCcnIHRoZW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgQi5mYWlsXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGNhc2UpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCBjYXNlIGxldmVsKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIFByb3BhZ2F0ZV91cCBjYXNlIDo6IFByb3BhZ2F0ZV9kb3duIGNhc2VcbiAgICAgICAgICA6OiBQcm9wYWdhdGVfZG93biBwb2ludGVyX3ByZXZpb3VzIDo6IFByb3BhZ2F0ZV91cCBwb2ludGVyX3ByZXZpb3VzXG4gICAgICAgICAgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLCByZXN1bHRcbiAgICAgIClcbiAgICApXG5cbiAgbGV0IGtlZXBfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3VjY2VzcykgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuaXNfZXhpc3RfZXZlbnQgc3RlcF9pZClcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSB0cnVlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgc3VjY2VzcyB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIHN1Y2Nlc3MpXG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzcyB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgc3VjY2VzcylcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX3NlbGVjdGVkX2V2ZW50cyBsb2dfaW5mbyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiV2Uga2VlcCBldmVudCAlaVwiXG4gICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgQi5uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgQi5jYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGwgeCBzdWNjZXNzID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4geCwgc3VjY2Vzc1xuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCB5LCBzdWNjZXNzMiA9IGtlZXBfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciB0IHggaW5cbiAgICAgICAgICBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzXG4gICAgICAgICAgZWxzZSBpZiBCLmlzX3N1Y2NlZWRlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3MyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeSwgc3VjY2VzczJcbiAgICAgIGluXG4gICAgICBsZXQgKCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksXG4gICAgICAgICAgICBzdWNjZXNzICkgPVxuICAgICAgICBhdXggbGlzdFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KVxuICAgICAgICAgIEIuaWdub3JlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgKVxuXG4gIGxldCBnZW5fZXZlbnQgZl9jYXNlIGcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3VjY2VzcykgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuaXNfZXhpc3RfZXZlbnQgc3RlcF9pZClcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSBmYWxzZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBzdWNjZXNzKVxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJXZSByZW1vdmUgZXZlbnQgJWlcIlxuICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGxvZ19pbmZvID0gZyBsb2dfaW5mbyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEIubl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbGV2ZWwpXG4gICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICBCLmNhc2VfbGlzdF9vZl9laWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggbCB4IHN1Y2Nlc3MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiB4LCBzdWNjZXNzXG4gICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgbGV0IHksIHN1Y2Nlc3MyID0gZl9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIHQgeCBpblxuICAgICAgICAgIGlmIEIuaXNfaWdub3JlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3NcbiAgICAgICAgICBlbHNlIGlmIEIuaXNfc3VjY2VlZGVkIHN1Y2Nlc3MyIHRoZW5cbiAgICAgICAgICAgIGF1eCBxIHkgc3VjY2VzczJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB5LCBzdWNjZXNzMlxuICAgICAgaW5cbiAgICAgIGxldCAoIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSxcbiAgICAgICAgICAgIHN1Y2Nlc3MgKSA9XG4gICAgICAgIGF1eCBsaXN0XG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpXG4gICAgICAgICAgQi5pZ25vcmVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgc3VjY2VzcylcbiAgICApXG5cbiAgbGV0IGN1dF9ldmVudCA9IGdlbl9ldmVudCBjdXRfY2FzZSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19jdXRfZXZlbnRzXG5cbiAgbGV0IGRpc2NhcmRfZXZlbnQgPVxuICAgIGdlbl9ldmVudCBkaXNjYXJkX2Nhc2UgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfcmVtb3ZlZF9ldmVudHNcblxuICBsZXQgYXBwbHlfaW5zdHJ1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpbnN0cnVjdGlvblxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbWF0Y2ggaW5zdHJ1Y3Rpb24gd2l0aFxuICAgIHwgS2VlcF9ldmVudCBzdGVwX2lkIC0+XG4gICAgICBrZWVwX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBDdXRfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgY3V0X2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBEaXNjYXJkX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIGRpc2NhcmRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFJlZmluZV92YWx1ZV9hZnRlciAoYWRkcmVzcywgdmFsdWUpIC0+XG4gICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFJlZmluZV92YWx1ZV9iZWZvcmUgKGFkZHJlc3MsIHZhbHVlKSAtPlxuICAgICAgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgICAgdmFsdWUgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgU2tpcCAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuaWdub3JlKVxuXG4gIGxldCBfa2VlcCB4ID0gS2VlcF9ldmVudCB4XG5lbmRcbiIsIigqKlxuICAqIGdlbmVyaWNfYnJhbmNoX2FuZF9jdXBfc29sdmVyLm1sXG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI5LzA4LzIwMTFcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTkvMDcvMjAxM1xuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBsb2dfc3RlcHMgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBTb2x2ZXIgPSBzaWdcbiAgbW9kdWxlIFBIIDogUHJvcGFnYXRpb25faGV1cmlzdGljcy5CbGFja2JvYXJkX3dpdGhfaGV1cmlzdGljXG5cbiAgdmFsIGNvbXByZXNzIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILnVwZGF0ZV9vcmRlciBsaXN0LFxuICAgICAgUEguQi5ibGFja2JvYXJkICogUEguQi5hc3NpZ25fcmVzdWx0ICogUEguQi5yZXN1bHQgbGlzdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGRldGVjdF9pbmRlcGVuZGVudF9ldmVudHMgOlxuICAgICggUEguQi5ibGFja2JvYXJkLFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGZpbHRlciA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIFBILkIuYmxhY2tib2FyZCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHN1YiA6IChUcmFjZS50LCBQSC5CLmJsYWNrYm9hcmQpIFBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gIHZhbCBjbGVhbiA6IChQSC5CLmJsYWNrYm9hcmQsIFBILkIuYmxhY2tib2FyZCkgUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgdHJhbnNsYXRlIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILkIuUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgVHJhY2UudCAqIFBILkIucmVzdWx0IClcbiAgICBQSC5CLlBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgdHJhbnNsYXRlX3Jlc3VsdCA6IFBILkIucmVzdWx0IC0+IFRyYWNlLnRcbmVuZFxuXG5tb2R1bGUgU29sdmVyID0gc3RydWN0XG4gIG1vZHVsZSBQSCA9IFByb3BhZ2F0aW9uX2hldXJpc3RpY3MuUHJvcGFnYXRpb25faGV1cmlzdGljXG4gICgqQmxhY2tib2FyZF93aXRoX2hldXJpc3RpYyopXG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgRXhjZXB0aW9uLndhcm5cbiAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuXG4gIGxldCBfY29tYmluZV9vdXRwdXQgbzEgbzIgPVxuICAgIGlmIFBILkIuaXNfaWdub3JlZCBvMiB0aGVuXG4gICAgICBvMVxuICAgIGVsc2VcbiAgICAgIG8yXG5cbiAgbGV0IHJlYyBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5zdHJ1Y3Rpb25fbGlzdFxuICAgICAgcHJvcGFnYXRlX2xpc3QgYmxhY2tib2FyZCA9XG4gICAgbGV0IGJvb2wsIGxvZ19pbmZvID0gUEguQi50aWNrIGxvZ19pbmZvIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuZHVtcF9jb21wbGV0ZV9sb2dcbiAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIG1hdGNoIGluc3RydWN0aW9uX2xpc3Qgd2l0aFxuICAgIHwgdCA6OiBxIC0+XG4gICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBhc3NpZ25fcmVzdWx0KSApID1cbiAgICAgICAgUEguYXBwbHlfaW5zdHJ1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0IHFcbiAgICAgICAgICBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuaXNfZmFpbGVkIGFzc2lnbl9yZXN1bHQgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBhc3NpZ25fcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5zdHJ1Y3Rpb25fbGlzdFxuICAgICAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmRcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggcHJvcGFnYXRlX2xpc3Qgd2l0aFxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIGFzc2lnbl9yZXN1bHQpICkgPVxuICAgICAgICAgIFBILnByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHRcbiAgICAgICAgICAgIGluc3RydWN0aW9uX2xpc3QgcVxuICAgICAgICBpblxuICAgICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBhc3NpZ25fcmVzdWx0IHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBhc3NpZ25fcmVzdWx0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmRcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgUEguQi5zdWNjZXNzKSlcblxuICB0eXBlIGNob2ljZXMgPSB7XG4gICAgY3VycmVudDogUEgudXBkYXRlX29yZGVyIGxpc3Q7XG4gICAgc3RhY2s6IFBILnVwZGF0ZV9vcmRlciBsaXN0IGxpc3Q7XG4gIH1cblxuICBsZXQgYnJhbmNoX2Nob2ljZV9saXN0IGNob2ljZV9saXN0ID1cbiAgICB7IGN1cnJlbnQgPSBbXTsgc3RhY2sgPSBjaG9pY2VfbGlzdC5jdXJyZW50IDo6IGNob2ljZV9saXN0LnN0YWNrIH1cblxuICBsZXQgdXBkYXRlX2N1cnJlbnQgY2hvaWNlX2xpc3QgbGlzdCA9IHsgY2hvaWNlX2xpc3Qgd2l0aCBjdXJyZW50ID0gbGlzdCB9XG5cbiAgbGV0IHBvcF9uZXh0X2Nob2ljZSBwYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3Igc3RhY2sgPVxuICAgIG1hdGNoIHN0YWNrLmN1cnJlbnQgd2l0aFxuICAgIHwgdCA6OiBxIC0+IGVycm9yLCAodCwgeyBzdGFjayB3aXRoIGN1cnJlbnQgPSBxIH0pXG4gICAgfCBbXSAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIkVtcHR5IGNob2ljZSBzdGFja1wiXG4gICAgICAgIChGYWlsdXJlIFwiRW1wdHkgY2hvaWNlIGxpc3QgaW4gcG9wX25leHRfY2hvaWNlXCIpXG4gICAgICAgIChQSC5kdW1teV91cGRhdGVfb3JkZXIsIHN0YWNrKVxuXG4gIGxldCBub19tb3JlX2Nob2ljZSBzdGFjayA9XG4gICAgbWF0Y2ggc3RhY2suY3VycmVudCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0ID1cbiAgICBsZXQgcmVjIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdCA9XG4gICAgICBtYXRjaCBjaG9pY2VfbGlzdC5jdXJyZW50IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIGNob2ljZV9saXN0LnN0YWNrIHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBOb25lKVxuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCBjaG9pY2VfbGlzdCA9IHsgY3VycmVudCA9IHQ7IHN0YWNrID0gcSB9IGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICBQSC5CLnJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdClcbiAgICAgIHwgXyAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBTb21lIGNob2ljZV9saXN0KVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLnJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuXG4gIGxldCBlbXB0eV9jaG9pY2VfbGlzdCA9IHsgc3RhY2sgPSBbXTsgY3VycmVudCA9IFtdIH1cblxuICBsZXQgcmVjIHN1Ymxpc3QgbCBsJyA9XG4gICAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIHwgW10sIF8gLT4gdHJ1ZVxuICAgIHwgXywgW10gLT4gZmFsc2VcbiAgICB8IGggOjogdCwgaCcgOjogdCcgd2hlbiBoID0gaCcgLT4gc3VibGlzdCB0IHQnXG4gICAgfCBfLCBfaCcgOjogdCcgLT4gc3VibGlzdCBsIHQnXG5cbiAgbGV0IHNvcnRfc3Rvcmllc19hY2NvcmRpbmdfdG9fbGVuZ3RoIGwgPVxuICAgIExpc3QucmV2X21hcCBmc3RcbiAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgIChmdW4gKF8sIGEpIChfLCBiKSAtPiBjb21wYXJlIGIgYSlcbiAgICAgICAgIChMaXN0LnJldl9tYXAgKGZ1biBhIC0+IGEsIExpc3QubGVuZ3RoIGEpIGwpKVxuXG4gIGxldCBmaWx0ZXJfb3V0X25vbl9taW5pbWFsX3N0b3J5IGwgPVxuICAgIGxldCByZWMgYXV4IHRvX3Zpc2l0IGdvb2RvbmVzID1cbiAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgZ29vZG9uZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGF1eFxuICAgICAgICAgIChMaXN0LmZpbHRlciAoZnVuIHN0b3J5IC0+IG5vdCAoc3VibGlzdCBoIHN0b3J5KSkgdClcbiAgICAgICAgICAoaCA6OiBMaXN0LmZpbHRlciAoZnVuIHN0b3J5IC0+IG5vdCAoc3VibGlzdCBoIHN0b3J5KSkgZ29vZG9uZXMpXG4gICAgaW5cbiAgICBhdXggKHNvcnRfc3Rvcmllc19hY2NvcmRpbmdfdG9fbGVuZ3RoIGwpIFtdXG5cbiAgbGV0IHJlYyBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgIHN0b3J5X2xpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgUEguQi5pc19tYXhpbWFsX3NvbHV0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAoKiBTVUNDRVNTICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgUEguQi50cmFuc2xhdGVfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgaWYgUEguQi5QQi5DSS5Qby5LLkguZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyIHRoZW4gKFxuICAgICAgICBsZXQgc3RvcnlfbGlzdCA9IGxpc3QgOjogc3RvcnlfbGlzdCBpblxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICBpZiBjaG9pY2VfbGlzdC5jdXJyZW50IDw+IFtdIHRoZW5cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyBzaG91bGQgYmUgXFxcbiAgICAgICAgICAgICAgICAgZW1wdHlcIlxuICAgICAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgICAgICBcIkluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIGN1cnJlbnQgbGlzdCBvZiBjaG9pY2VzIHNob3VsZCBiZSBcXFxuICAgICAgICAgICAgICAgICAgZW1wdHlcIikgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZV9saXN0ID1cbiAgICAgICAgICBtYXRjaCBjaG9pY2VfbGlzdC5zdGFjayB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBjaG9pY2VfbGlzdFxuICAgICAgICAgIHwgdCA6OiBxIC0+IHsgY3VycmVudCA9IHQ7IHN0YWNrID0gcSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICAgIGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNob2ljZV9saXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGNob2ljZV9saXN0IC0+XG4gICAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgICAgICBzdG9yeV9saXN0ICgqKHVwZGF0ZV9maXJzdF9zdG9yeSBmaXJzdF9zdG9yeSBsaXN0KSopXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIFBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIFwiRkFJTFwiICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdG9yeV9saXN0KVxuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFsgbGlzdCBdKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGNob2ljZV9saXN0ID1cbiAgICAgICAgaWYgbm9fbW9yZV9jaG9pY2UgY2hvaWNlX2xpc3QgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgUEgubmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHVwZGF0ZV9jdXJyZW50IGNob2ljZV9saXN0IGxpc3RcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGNob2ljZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIChjaG9pY2UsIGNob2ljZV9saXN0KSA9XG4gICAgICAgIHBvcF9uZXh0X2Nob2ljZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjaG9pY2VfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQpID1cbiAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIFsgY2hvaWNlIF0gW10gYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGNob2ljZV9saXN0KSA9XG4gICAgICAgICAgYmFja3RyYWNrIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2hvaWNlX2xpc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgY2hvaWNlX2xpc3QgLT5cbiAgICAgICAgICBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgICAgICAgIHN0b3J5X2xpc3RcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0b3J5X2xpc3QpXG4gICAgICApIGVsc2VcbiAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKGJyYW5jaF9jaG9pY2VfbGlzdCBjaG9pY2VfbGlzdClcbiAgICAgICAgICBzdG9yeV9saXN0XG4gICAgKVxuXG4gIGxldCBkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxpc3RfZWlkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsYWNrYm9hcmQsIGV2ZW50c190b19rZWVwKSA9XG4gICAgICBQSC5CLmN1dCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3RfZWlkXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50c190b19rZWVwXG5cbiAgbGV0IHRyYW5zbGF0ZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IGxpc3QnID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIGsgLT5cbiAgICAgICAgICAoIFBILkIuZ2V0X2V2ZW50IGJsYWNrYm9hcmQgKFBILkIuUEIuZGVjX3N0ZXBfaWQgayksXG4gICAgICAgICAgICBQSC5CLnNpZGVfZWZmZWN0X29mX2V2ZW50IGJsYWNrYm9hcmQgKFBILkIuUEIuZGVjX3N0ZXBfaWQgaykgKSlcbiAgICAgICAgKExpc3QucmV2IGxpc3QpXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IExpc3QucmV2X21hcCBmc3QgKExpc3QucmV2IGxpc3QnKSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKGxpc3QsIGxpc3QnKVxuXG4gIGxldCB0cmFuc2xhdGVfcmVzdWx0IHJlc3VsdCA9IExpc3QucmV2X21hcCBmc3QgQEAgTGlzdC5yZXYgcmVzdWx0XG5cbiAgbGV0IGNsZWFuIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgPVxuICAgIFBILkIucmVzZXRfaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkXG5cbiAgbGV0IGZpbHRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGV2ZW50c190b19rZWVwID1cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBldmVudHNfdG9fcmVtb3ZlID1cbiAgICAgIGxldCBuX2V2ZW50cyA9IFBILkIuZ2V0X25fZWlkIGJsYWNrYm9hcmQgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgbGlzdCBzb2wgPVxuICAgICAgICBpZiBrID0gbl9ldmVudHMgdGhlblxuICAgICAgICAgIExpc3QucmV2IHNvbFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgaWYgUEguQi5QQi5pbnRfb2Zfc3RlcF9pZCB0ID0gayB0aGVuXG4gICAgICAgICAgICAgIGF1eCAoayArIDEpIHEgc29sXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCAoayArIDEpIGxpc3QgKFBILkIuUEIuc3RlcF9pZF9vZl9pbnQgayA6OiBzb2wpXG4gICAgICAgICAgfCBbXSAtPiBhdXggKGsgKyAxKSBsaXN0IChQSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogc29sKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IDAgZXZlbnRzX3RvX2tlZXAgW11cbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZvcmJpZGRlbl9ldmVudHMgPVxuICAgICAgUEguZm9yYmlkZGVuX2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudHNfdG9fcmVtb3ZlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbG9nX3N0ZXBzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCJTdGFydCBjdXR0aW5nXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIF9vdXRwdXQpID1cbiAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBmb3JiaWRkZW5fZXZlbnRzIFtdIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIGxldCBzdWIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdG9fa2VlcCA9XG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmltcG9ydCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0b19rZWVwXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X29yZGVyID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIkFmdGVyIENhdXNhbCBDdXQgICVpXCJcbiAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQpID1cbiAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0X29yZGVyIFtdIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIFBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJBZnRlciBvYnNlcnZhYmxlIHByb3BhZ2F0aW9uICBGQUlMICVpIEAuXCJcbiAgICAgICAgICAgICAgKFBILkIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIG91dHB1dCwgW10pXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJBZnRlciBvYnNlcnZhYmxlIHByb3BhZ2F0aW9uICAlaSBALlwiXG4gICAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgYm9vbCwgc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggcGFyYW1ldGVyLlBILkIuUEIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT4gZmFsc2UsIFwiXCJcbiAgICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3dlYWtfY29tcHJlc3Npb24sXG4gICAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lIClcbiAgICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgICAgKCBQYXJhbWV0ZXIuZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfc3Ryb25nX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lIClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBQcmlvcml0eS5uX2JyYW5jaCA6PSAxICsgKCFQcmlvcml0eS5uX2JyYW5jaCArIDEpIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICBQSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBzdHJpbmcgIVByaW9yaXR5Lm5fc3RvcnkgIVByaW9yaXR5Lm5fYnJhbmNoIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RvcnlfbGlzdCkgPVxuICAgICAgICBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZW1wdHlfY2hvaWNlX2xpc3QgW11cbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgbWF0Y2ggc3RvcnlfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gUEguQi5mYWlsXG4gICAgICAgIHwgXyAtPiBQSC5CLnN1Y2Nlc3NcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgKGJsYWNrYm9hcmQsIG91dHB1dCwgZmlsdGVyX291dF9ub25fbWluaW1hbF9zdG9yeSAoTGlzdC5yZXYgc3RvcnlfbGlzdCkpXG4gICAgICApXG4gICAgKVxuZW5kXG4iLCIoKipcbiAgKiBibGFja19saXN0Lm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTYtMDItMTQgMTA6Mjk6NDIgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE0IDEwOjUwOjU3IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2XG4gICogIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlblxuICAqIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnlcbiAgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEV2ZW50ID0gc2lnXG4gIHR5cGUgZXZlbnRcbiAgdHlwZSBlaWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGtleV9vZl9ldmVudCA6IGV2ZW50IC0+IGVpZCBvcHRpb25cbiAgdmFsIGluaXQgOiBpbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2V0IDogJ2EgdCAtPiBlaWQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBlaWQgLT4gJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBCbGFja2xpc3QgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEV2ZW50IDogRXZlbnRcblxuICB2YWwgaW5pdCA6IGludCAtPiB0XG4gIHZhbCBibGFja19saXN0IDogRXZlbnQuZXZlbnQgLT4gdCAtPiB0XG4gIHZhbCBpc19ibGFja19saXN0ZWQgOiBFdmVudC5ldmVudCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChFdmVudCA6IEV2ZW50KVxuICAtPlxuICBzdHJ1Y3RcbiAgICBtb2R1bGUgRXZlbnQgPSBFdmVudFxuXG4gICAgdHlwZSB0ID0gYm9vbCBFdmVudC50XG5cbiAgICBsZXQgaW5pdCBuID0gRXZlbnQuaW5pdCBuIGZhbHNlXG5cbiAgICBsZXQgYmxhY2tfbGlzdCBldmVudCB0ID1cbiAgICAgIG1hdGNoIEV2ZW50LmtleV9vZl9ldmVudCBldmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIGVpZCAtPlxuICAgICAgICBsZXQgdCA9IEV2ZW50LnNldCB0IGVpZCB0cnVlIGluXG4gICAgICAgIHRcblxuICAgIGxldCBpc19ibGFja19saXN0ZWQgZXZlbnQgdCA9XG4gICAgICBtYXRjaCBFdmVudC5rZXlfb2ZfZXZlbnQgZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgZWlkIC0+IEV2ZW50LmdldCB0IGVpZFxuICBlbmRcbiIsIigqKlxuICAqIGRhZy5tbFxuICAqXG4gICogRGFnIGNvbXB1dGF0aW9uIGFuZCBjYW5vbmljYWwgZm9ybVxuICAqXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIyLzAzLzIwMTJcbiAgKiBMYXN0IG1vZHhpZmljYXRpb246IDE4LzA2LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIFMgPSBHZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5Tb2x2ZXJcblxubGV0IHdhcm4gcGFyYW1ldGVyIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gIEV4Y2VwdGlvbi53YXJuXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG5cbm1vZHVsZSB0eXBlIFN0b3J5VGFibGUgPSBzaWdcbiAgdHlwZSB0YWJsZVxuXG4gIHZhbCBmb2xkX3RhYmxlIDpcbiAgICAoICggVHJhY2UudCxcbiAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0LFxuICAgICAgICAnYSxcbiAgICAgICAgJ2EgKVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC50ZXJuYXJ5LFxuICAgICAgdGFibGUsXG4gICAgICAnYSxcbiAgICAgICdhIClcbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgaW5pdF90YWJsZSA6IHRhYmxlIFMuUEguQi5QQi5DSS5Qby5LLkguemVyb2FyeVxuICB2YWwgY291bnRfc3RvcmllcyA6IHRhYmxlIC0+IGludFxuXG4gIHZhbCBhZGRfc3RvcnkgOlxuICAgICggQ2F1c2FsLmdyaWQsXG4gICAgICBUcmFjZS50LFxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0LFxuICAgICAgdGFibGUsXG4gICAgICB0YWJsZSApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5cbiAgdmFsIGhhc2hfbGlzdCA6ICh0YWJsZSwgdGFibGUpIFMuUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgc29ydF9saXN0IDpcbiAgICAoIHRhYmxlLFxuICAgICAgKFRyYWNlLnRcbiAgICAgICogQ2F1c2FsLmdyaWRcbiAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0KVxuICAgICAgbGlzdCApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBIID0gUy5QSC5CLlBCLkNJLlBvLksuSFxubW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG5cbnR5cGUgbGFiZWwgPSBzdHJpbmdcbnR5cGUgbm9kZV9raW5kID0gT0JTIHwgUEVSVCB8IFJVTEUgfCBJTklUIHwgRklDVElUSU9VU1xudHlwZSBub2RlID0gbm9kZV9raW5kICogbGFiZWxcblxudHlwZSBncmFwaCA9IHtcbiAgcm9vdDogaW50O1xuICBsYWJlbHM6IG5vZGUgQS50O1xuICBwcmVkOiBpbnQgbGlzdCBBLnQ7XG4gIGNvbmZsaWN0X3ByZWQ6IGludCBsaXN0IEEudDtcbn1cblxubGV0IGR1bW15X2dyYXBoID1cbiAge1xuICAgIHJvb3QgPSAwO1xuICAgIGxhYmVscyA9IEEubWFrZSAxIChGSUNUSVRJT1VTLCBcIlwiKTtcbiAgICBwcmVkID0gQS5tYWtlIDEgW107XG4gICAgY29uZmxpY3RfcHJlZCA9IEEubWFrZSAxIFtdO1xuICB9XG5cbnR5cGUgcG9zaXRpb24gPSBpbnRcbnR5cGUga2V5ID0gRnJlc2ggb2Ygbm9kZSB8IEZvcm1lciBvZiBwb3NpdGlvbiB8IFN0b3BcbnR5cGUgY2Fub25pY2FsX2Zvcm0gPSBrZXkgbGlzdFxudHlwZSBwcmVoYXNoID0gKG5vZGUgKiBpbnQpIGxpc3RcblxubGV0IF9kdW1teV9jYW5ub25pY2FsX2Zvcm0gPSBbXVxubGV0IF9kdW1teV9wcmVoYXNoID0gW11cblxubGV0IF9wcmludF9zdG9yeV9pbmZvIGxvZ2dlciBfcGFyYW1ldGVyIGpzb24gPVxuICAoKkxpc3QuaXRlclxuICAgIChmdW5cbiAgICAgIHN0b3J5X2luZm8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIGxvZ2dlclxuICAgICAgICAgIFwiaWQ6JWksIHRpbWU6JWYsIGV2ZW50OiVpXCJcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZFxuICAgICAgICAgIHN0b3J5X2luZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWVcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudFxuICAgICAgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXJcbiAgICApXG4gICAgc3RvcnlfaW5mb19saXN0XG4gICopXG4gIGxldCBjaGFubmVsX29wdCA9IExvZ2dlcnMuY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2hhbm5lbF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjaGFubmVsIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMudG9fY2hhbm5lbCBjaGFubmVsIGpzb24gaW5cbiAgICAgICgpXG4gIGluXG4gIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgKClcblxubGV0IHByaW50X2dyYXBoIGxvZ2dlciBwYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgaWQgc3RvcnlfaW5mbyBncmFwaCA9XG4gIGxldCBsb2dnZXIgPSBHcmFwaF9sb2dnZXJzX3NpZy5leHRlbmRfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzX3NpZy5yZWZyZXNoX2lkIGxvZ2dlciBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzLnByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciBcInN0b3J5XCIgaW5cbiAgbGV0ICgpID1cbiAgICBBLml0ZXJpXG4gICAgICAoZnVuIGkgKG5vZGVfa2luZCwgaikgLT5cbiAgICAgICAgaWYgaSA9IDAgJiYgaiA9IFwiXCIgdGhlblxuICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBkaXJlY3RpdmVzID1cbiAgICAgICAgICAgIG1hdGNoIG5vZGVfa2luZCB3aXRoXG4gICAgICAgICAgICB8IE9CUyAtPiBbIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCBdXG4gICAgICAgICAgICB8IFBFUlQgLT5cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuO1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlO1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB8IFJVTEUgLT5cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZTtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBJTklUIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbjtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBGSUNUSVRJT1VTIC0+XG4gICAgICAgICAgICAgIFsgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfbm9kZSBsb2dnZXJcbiAgICAgICAgICAgIH5kaXJlY3RpdmVzOihHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBqIDo6IGRpcmVjdGl2ZXMpXG4gICAgICAgICAgICAoc3RyaW5nX29mX2ludCBpKVxuICAgICAgICApKVxuICAgICAgZ3JhcGgubGFiZWxzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBqIC0+XG4gICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyIChzdHJpbmdfb2ZfaW50IGopIChzdHJpbmdfb2ZfaW50IGkpKVxuICAgICAgICAgIGwpXG4gICAgICBncmFwaC5wcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBqIC0+XG4gICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyXG4gICAgICAgICAgICAgIH5kaXJlY3RpdmVzOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWQ7XG4gICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSkgKHN0cmluZ19vZl9pbnQgaikpXG4gICAgICAgICAgbClcbiAgICAgIGdyYXBoLmNvbmZsaWN0X3ByZWRcbiAgaW5cbiAgbGV0IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIEguZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBTdG9yeV9qc29uLkNhdXNhbFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAge1xuICAgICAgU3RvcnlfanNvbi5sb2dfaW5mbyA9IHN0b3J5X2luZm87XG4gICAgICBTdG9yeV9qc29uLnN0b3J5X21vZGUgPSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyO1xuICAgICAgU3RvcnlfanNvbi5zdG9yeSA9XG4gICAgICAgIFN0b3J5X2pzb24uTmV3XG4gICAgICAgICAge1xuICAgICAgICAgICAgU3RvcnlfanNvbi5ncmFwaCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoX29mX2xvZ2dlciBsb2dnZXI7XG4gICAgICAgICAgICBTdG9yeV9qc29uLmlkO1xuICAgICAgICAgIH07XG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBILnB1c2hfanNvbiBwYXJhbWV0ZXIgKFN0b3J5X2pzb24uU3RvcnkgcmVzdWx0KSBpblxuICBlcnJvclxuXG5sZXQgcHJpbnRfZWx0IGxvZyBlbHQgPVxuICBtYXRjaCBlbHQgd2l0aFxuICB8IFN0b3AgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiU1RPUFwiIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICB8IEZvcm1lciBpIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlBvaW50ZXIgJWlcIiBpIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICB8IEZyZXNoIChfLCBzKSAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVudCAlc1wiIHMgaW5cbiAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG5cbmxldCBfcHJpbnRfY2Fub25pY2FsX2Zvcm0gcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGRhZyA9XG4gIGxldCBfID0gTGlzdC5pdGVyIChwcmludF9lbHQgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpIGRhZyBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICBlcnJvclxuXG5sZXQgX3ByaW50X3ByZWhhc2ggcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIHJlcHJlc2VudGF0aW9uID1cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoKF8sIGIpLCBpKSAtPlxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCIlczolaSxcIiBiIGkpXG4gICAgICByZXByZXNlbnRhdGlvblxuICBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICBlcnJvclxuXG5sZXQgbGFiZWwgaGFuZGxlciA9IGZ1bmN0aW9uXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5SVUxFIGkpIC0+IEguc3RyaW5nX29mX3J1bGVfaWQgaGFuZGxlciBpXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5JTklUIFsgaSBdKSAtPiBILnN0cmluZ19vZl9hZ2VudF9pZCBoYW5kbGVyIGlcbiAgfCBDYXVzYWwuRVZFTlQgKChUcmFjZS5JTklUIF8gfCBUcmFjZS5QRVJUIF8pIGFzIHgpIC0+XG4gICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoVHJhY2UucHJpbnRfZXZlbnRfa2luZCB+ZW52OmhhbmRsZXIuSC5lbnYpIHhcbiAgfCBDYXVzYWwuT0JTIG5hbWUgLT4gbmFtZVxuXG5sZXQga2luZCBub2RlID1cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5JTklUIF8pIC0+IElOSVRcbiAgfCBDYXVzYWwuRVZFTlQgKFRyYWNlLlJVTEUgXykgLT4gUlVMRVxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuUEVSVCBfKSAtPiBQRVJUXG4gIHwgQ2F1c2FsLk9CUyBfIC0+IE9CU1xuXG5sZXQgY29tcGFyZV9lbHQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgU3RvcCwgU3RvcCAtPiAwXG4gIHwgU3RvcCwgXyAtPiAtMVxuICB8IF8sIFN0b3AgLT4gMVxuICB8IEZvcm1lciBpLCBGb3JtZXIgaiAtPiBjb21wYXJlIGkgalxuICB8IEZvcm1lciBfLCBfIC0+IC0xXG4gIHwgXywgRm9ybWVyIF8gLT4gMVxuICB8IEZyZXNoIHMsIEZyZXNoIHMnIC0+IGNvbXBhcmUgcyBzJ1xuXG5sZXQgcXVpY2tfY29tcGFyZSBnIHQxIHQyID0gY29tcGFyZV9lbHQgKGcgdDEpIChnIHQyKVxuXG5sZXQgcmVjIGF1eCBjb21wYXJlX2VsdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB0IDo6IHEsIHQnIDo6IHEnIC0+XG4gICAgbGV0IGNtcCA9IGNvbXBhcmVfZWx0IHQgdCcgaW5cbiAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgIGF1eCBjb21wYXJlX2VsdCBxIHEnXG4gICAgZWxzZVxuICAgICAgY21wXG5cbmxldCBjb21wYXJlX2Nhbm9uaWMgPSBhdXggY29tcGFyZV9lbHRcblxubGV0IGNvbXBhcmVfY2Fub25pY19vcHQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgeCwgU29tZSB5IC0+IGNvbXBhcmVfY2Fub25pYyB4IHlcblxubGV0IGNvbXBhcmVfcHJlaGFzaCA9IGF1eCBjb21wYXJlXG5cbmxldCBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5HcmFwaF9jb252ZXJzaW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGlkcyA9IEhhc2h0YmwuZm9sZCAoZnVuIGtleSBfIGwgLT4ga2V5IDo6IGwpIGdyaWQuQ2F1c2FsLmZsb3cgW10gaW5cbiAgbGV0IGxhYmVsID0gbGFiZWwgaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25maWcgPVxuICAgIENhdXNhbC5jdXRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHMgZ3JpZFxuICBpblxuICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGNvbmZpZy5DYXVzYWwucHJlY18xIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgZHVtbXlfZ3JhcGhcbiAgfCBTb21lIHNpemUgLT5cbiAgICBsZXQgc3VjY19zaXplID0gc3VjYyBzaXplIGluXG4gICAgbGV0IGxhYmVscyA9IEEubWFrZSBzdWNjX3NpemUgKEZJQ1RJVElPVVMsIFwiXCIpIGluXG4gICAgbGV0IHByZWQgPSBBLm1ha2Ugc3VjY19zaXplIFtdIGluXG4gICAgbGV0IGNvbmZsaWN0X3ByZWQgPSBBLm1ha2Ugc3VjY19zaXplIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBpIGF0b21fa2luZCAtPiBBLnNldCBsYWJlbHMgaSAoa2luZCBhdG9tX2tpbmQsIGxhYmVsIGF0b21fa2luZCkpXG4gICAgICAgIGNvbmZpZy5DYXVzYWwuZXZlbnRzX2tpbmRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEEuc2V0IHByZWQgaSAoTW9kcy5JbnRTZXQuZWxlbWVudHMgcykpXG4gICAgICAgIGNvbmZpZy5DYXVzYWwucHJlY18xXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIGkgcyAtPlxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBLnNldCBjb25mbGljdF9wcmVkIGkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIHMpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLmNvbmZsaWN0XG4gICAgaW5cbiAgICBsZXQgcm9vdCA9IHNpemUgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkdyYXBoX2NvbnZlcnNpb24gTm9uZSBsb2dfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHJvb3Q7IGxhYmVsczsgcHJlZDsgY29uZmxpY3RfcHJlZCB9XG5cbmxldCBjb25jYXQgbGlzdDEgbGlzdDIgPVxuICBsZXQgcmVjIGF1eCBsaXN0MSBsaXN0MiA9XG4gICAgbWF0Y2ggbGlzdDIgd2l0aFxuICAgIHwgW10gLT4gbGlzdDFcbiAgICB8IHQgOjogcSAtPiBhdXggKHQgOjogbGlzdDEpIHFcbiAgaW5cbiAgYXV4IGxpc3QyIChMaXN0LnJldiBsaXN0MSlcblxubGV0IGNvbXBhcmVfbm9kZSAoYSwgXykgKGIsIF8pID0gY29tcGFyZSBhIGJcblxubGV0IHNtYXNoIGwgPVxuICBsZXQgcmVjIGF1eCBsIGZvcm1lciB3ZWlnaHQgb3V0cHV0ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IExpc3QucmV2ICgoZm9ybWVyLCB3ZWlnaHQpIDo6IG91dHB1dClcbiAgICB8ICh0LCB3dCkgOjogcSB3aGVuIHQgPSBmb3JtZXIgLT4gYXV4IHEgZm9ybWVyICh3dCArIHdlaWdodCkgb3V0cHV0XG4gICAgfCAodCwgd3QpIDo6IHEgLT4gYXV4IHEgdCB3dCAoKGZvcm1lciwgd2VpZ2h0KSA6OiBvdXRwdXQpXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKHQsIHd0KSA6OiBxIC0+IGF1eCBxIHQgd3QgW11cblxubGV0IHByZWhhc2ggX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBncmFwaCA9XG4gICggZXJyb3IsXG4gICAgc21hc2hcbiAgICAgIChMaXN0LnNvcnQgY29tcGFyZV9ub2RlXG4gICAgICAgICAobGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBBLml0ZXJcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGSUNUSVRJT1VTLCBfIC0+ICgpXG4gICAgICAgICAgICAgICAgfCAoKE9CUyB8IFBFUlQgfCBSVUxFIHwgSU5JVCksIF8pIGFzIGEgLT4gbCA6PSAoYSwgMSkgOjogIWwpXG4gICAgICAgICAgICAgIGdyYXBoLmxhYmVsc1xuICAgICAgICAgIGluXG4gICAgICAgICAgIWwpKSApXG5cbmxldCBjYW5vbmljYWxpemUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoID1cbiAgbGV0IGFzc28gPSBNb2RzLkludE1hcC5lbXB0eSBpblxuICBsZXQgbGFiZWwgaSA9IHRyeSBBLmdldCBncmFwaC5sYWJlbHMgaSB3aXRoIF8gLT4gRklDVElUSU9VUywgXCJcIiBpblxuICBsZXQgcmVjIHBvcCAoY2FuZGlkYXRlIDoga2V5IGxpc3QpICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSA9XG4gICAgbWF0Y2ggY2FuZGlkYXRlLCB0b19iZWF0IHdpdGhcbiAgICB8IFtdLCBfIHwgXywgTm9uZSAtPlxuICAgICAgU29tZSB0b19iZWF0ICgqIGNhbmRpZGF0ZSBpcyBhIHByZWZpeCBvZiB0b19iZWF0LCB3ZSBvdXRwdXQgdGhlIHN1ZmZpeCAqKVxuICAgIHwgXyA6OiBfLCBTb21lIFtdIC0+IE5vbmUgKCogdGhlIGNhbmRpZGF0ZSBpcyB3b3JzZSAqKVxuICAgIHwgdCA6OiBxLCBTb21lICh0ciA6OiBxcikgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2VsdCB0IHRyIGluXG4gICAgICBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgU29tZSBOb25lICgqIHRoZSBjYW5kaWRhdGUgaXMgYmV0dGVyICopXG4gICAgICBlbHNlIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICBwb3AgcSAoU29tZSBxcilcbiAgICAgICgqIHdlIGRvIG5vdCBrbm93LCB3ZSBsb29rIGZ1cnRoZXIgKilcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICgqIHRoZSBjYW5kaWRhdGUgaXMgd29yc2UgKilcbiAgaW5cbiAgbGV0IHJlYyB2aXNpdCAoaSA6IGludCkgKG1hcCA6IGludCBNb2RzLkludE1hcC50KSAoZnJlc2hfcG9zIDogaW50KVxuICAgICAgKHRvX2JlYXQgOiBrZXkgbGlzdCBvcHRpb24pID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIG1hcCB3aXRoXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICgqIHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbiwgd2UgcHV0IGEgcG9pbnRlciAqKVxuICAgICAgKCowKilcbiAgICAgIChtYXRjaCBwb3AgWyBGb3JtZXIgaSBdIHRvX2JlYXQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIHRvIGJlYXQgaXMgYmV0dGVyLCB3ZSBjdXQgdGhlIGNvbnN0cnVjdGlvbiAqKVxuICAgICAgICBOb25lXG4gICAgICB8IFNvbWUgdG9fYmVhdCAtPlxuICAgICAgICAoKiB0byBiZWF0IG1heSBiZSBpbXByb3ZlZCwgd2UgZ28gb24gKilcbiAgICAgICAgU29tZSAoWyBGb3JtZXIgaSBdLCBtYXAsIGZyZXNoX3BvcywgdG9fYmVhdCkpXG4gICAgKCowKilcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHRoZSBub2RlIGlzIHNlZW4gZm9yIHRoZSBmaXJzdCB0aW1lICopXG4gICAgICBsZXQgbWFwID0gTW9kcy5JbnRNYXAuYWRkIGkgZnJlc2hfcG9zIG1hcCBpblxuICAgICAgbGV0IGZyZXNoX3BvcyA9IGZyZXNoX3BvcyArIDEgaW5cbiAgICAgICgqMCopXG4gICAgICAobWF0Y2ggcG9wIFsgRnJlc2ggKGxhYmVsIGkpIF0gdG9fYmVhdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSAtPlxuICAgICAgICAoKjEqKVxuICAgICAgICBsZXQgc2liYmxpbmcxID0gdHJ5IEEuZ2V0IGdyYXBoLnByZWQgaSB3aXRoIE5vdF9mb3VuZCAtPiBbXSBpblxuICAgICAgICBsZXQgc2liYmxpbmcyID1cbiAgICAgICAgICB0cnkgQS5nZXQgZ3JhcGguY29uZmxpY3RfcHJlZCBpIHdpdGggTm90X2ZvdW5kIC0+IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYmVzdF9zaWJibGluZyAobSA6IGludCBNb2RzLkludE1hcC50KSAoZiA6IGludClcbiAgICAgICAgICAgIChjYW5kaWRhdGVzIDogaW50IGxpc3QpIChub3RfYmVzdCA6IGludCBsaXN0KVxuICAgICAgICAgICAgKHRvX2JlYXQgOiBrZXkgbGlzdCBvcHRpb24pXG4gICAgICAgICAgICAocmVjb3JkIDpcbiAgICAgICAgICAgICAgKGludCAqIChrZXkgbGlzdCAqIGludCBNb2RzLkludE1hcC50ICogaW50ICoga2V5IGxpc3Qgb3B0aW9uKSlcbiAgICAgICAgICAgICAgb3B0aW9uKSA9XG4gICAgICAgICAgbWF0Y2ggY2FuZGlkYXRlcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgKCoyKilcbiAgICAgICAgICAgIChtYXRjaCByZWNvcmQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSByZWNvcmQgLT4gU29tZSAobm90X2Jlc3QsIHJlY29yZCkpXG4gICAgICAgICAgKCoyKilcbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgbGV0IHJlcCA9IHZpc2l0IHQgbSBmIHRvX2JlYXQgaW5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggcmVwIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBiZXN0X3NpYmJsaW5nIG0gZiBxICh0IDo6IG5vdF9iZXN0KSB0b19iZWF0IHJlY29yZFxuICAgICAgICAgICAgfCBTb21lICgoZW5jb2RpbmcgOiBrZXkgbGlzdCksIG1hcCwgZnJlc2gsIHJlc2lkdWUpIC0+XG4gICAgICAgICAgICAgICgqMyopXG4gICAgICAgICAgICAgIGxldCAodG9fYmVhdF9hZnRlciA6IGtleSBsaXN0IG9wdGlvbikgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlc2lkdWUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIGVuY29kaW5nXG4gICAgICAgICAgICAgICAgfCBfIC0+IHRvX2JlYXRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IChub3RfYmVzdCA6IGludCBsaXN0KSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVjb3JkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbm90X2Jlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgKGJlc3QsIF8pIC0+IGJlc3QgOjogbm90X2Jlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYmVzdF9zaWJibGluZyBtIGYgcSBub3RfYmVzdCB0b19iZWF0X2FmdGVyXG4gICAgICAgICAgICAgICAgKFNvbWUgKHQsIChlbmNvZGluZywgbWFwLCBmcmVzaCwgcmVzaWR1ZSkpKSlcbiAgICAgICAgICAoKjMqKVxuICAgICAgICAgICgqMiopXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYXV4IG0gZiBsIHNvbCB0b19iZWF0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFNvbWUgKG0sIGYsIHNvbCwgdG9fYmVhdClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggYmVzdF9zaWJibGluZyBtIGYgbCBbXSB0b19iZWF0IE5vbmUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAobm90X2Jlc3QsIHJlY29yZCkgLT5cbiAgICAgICAgICAgICAgbGV0IF8sIChiZXN0LCBtYXAsIGZyZXNoX3BvcywgdG9fYmVhdF9hZnRlcikgPSByZWNvcmQgaW5cbiAgICAgICAgICAgICAgYXV4IG1hcCBmcmVzaF9wb3Mgbm90X2Jlc3QgKGNvbmNhdCBzb2wgYmVzdCkgdG9fYmVhdF9hZnRlcilcbiAgICAgICAgICAoKjIqKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGlzdCA9IFsgRnJlc2ggKGxhYmVsIGkpIF0gaW5cbiAgICAgICAgKCoyKilcbiAgICAgICAgbGV0IGcgeCA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geCBtYXAgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IEZvcm1lciB4XG4gICAgICAgICAgfCBOb25lIC0+IEZyZXNoIChsYWJlbCB4KVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2liYmxpbmcxID0gTGlzdC5zb3J0IChxdWlja19jb21wYXJlIGcpIHNpYmJsaW5nMSBpblxuICAgICAgICAobWF0Y2ggYXV4IG1hcCBmcmVzaF9wb3Mgc2liYmxpbmcxIGxpc3QgdG9fYmVhdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAobWFwLCBmcmVzaF9wb3MsIGxpc3QsIHRvX2JlYXQpIC0+XG4gICAgICAgICAgKCozKilcbiAgICAgICAgICAobWF0Y2ggcG9wIFsgU3RvcCBdIHRvX2JlYXQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgICAgICgqNCopXG4gICAgICAgICAgICBsZXQgbGlzdCA9IGNvbmNhdCBsaXN0IFsgU3RvcCBdIGluXG4gICAgICAgICAgICAoKjUqKVxuICAgICAgICAgICAgbGV0IGcgeCA9XG4gICAgICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHggbWFwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4gRm9ybWVyIHhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEZyZXNoIChsYWJlbCB4KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzaWJibGluZzIgPSBMaXN0LnNvcnQgKHF1aWNrX2NvbXBhcmUgZykgc2liYmxpbmcyIGluXG4gICAgICAgICAgICAobWF0Y2ggYXV4IG1hcCBmcmVzaF9wb3Mgc2liYmxpbmcyIGxpc3QgdG9fYmVhdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIChtYXAsIGZyZXNoX3BvcywgbGlzdCwgdG9fYmVhdCkgLT5cbiAgICAgICAgICAgICAgKCo2KilcbiAgICAgICAgICAgICAgKG1hdGNoIHBvcCBbIFN0b3AgXSB0b19iZWF0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IGNvbmNhdCBsaXN0IFsgU3RvcCBdIGluXG4gICAgICAgICAgICAgICAgU29tZSAobGlzdCwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXQpKSlcbiAgICAgICAgICAgICgqNiopXG4gICAgICAgICAgICAoKjUqKSlcbiAgICAgICAgICAoKjQqKSlcbiAgICAgICAgKCozKilcbiAgICAgICAgKCoyKikpXG4gICAgKCoxKilcbiAgICAoKjAqKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5DYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPVxuICAgIG1hdGNoIHZpc2l0IGdyYXBoLnJvb3QgYXNzbyAwIE5vbmUgd2l0aFxuICAgIHwgU29tZSAocmVwLCBfLCBfLCBfKSAtPiBlcnJvciwgcmVwXG4gICAgfCBOb25lIC0+IGVycm9yLCBbXVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkNhbm5vbmljX2Zvcm1fY29tcHV0YXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5tb2R1bGUgTGlzdFRhYmxlIDogU3RvcnlUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHRhYmxlID1cbiAgICAocHJlaGFzaFxuICAgICogKENhdXNhbC5ncmlkXG4gICAgICAqIGdyYXBoXG4gICAgICAqIGNhbm9uaWNhbF9mb3JtIG9wdGlvblxuICAgICAgKiBUcmFjZS50XG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIGxpc3QpXG4gICAgbGlzdFxuXG4gIGxldCBpbml0X3RhYmxlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPSBlcnJvciwgbG9nX2luZm8sIFtdXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGUgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICAgIGdyYXBoX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmVoYXNoID0gcHJlaGFzaCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBncmFwaCBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKHByZWhhc2gsIFsgZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBpbmZvIF0pIDo6IHRhYmxlXG5cbiAgbGV0IHNvcnRfb3V0ZXIgPVxuICAgIGxldCBjb21wYXJlIChhLCBfKSAoYiwgXykgPSBjb21wYXJlX3ByZWhhc2ggYSBiIGluXG4gICAgTGlzdC5zb3J0IGNvbXBhcmVcblxuICBsZXQgc29ydF9pbm5lciA9XG4gICAgbGV0IGNvbXBhcmUgKF8sIF8sIGEsIF8sIF8pIChfLCBfLCBiLCBfLCBfKSA9IGNvbXBhcmVfY2Fub25pY19vcHQgYSBiIGluXG4gICAgTGlzdC5zb3J0IGNvbXBhcmVcblxuICBsZXQgaGFzaF9pbm5lciBfcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGNtcCBsaXN0ID1cbiAgICBsZXQgbGlzdCA9IHNvcnRfaW5uZXIgbGlzdCBpblxuICAgIGxldCByZWMgdmlzaXQgZWxlbWVudHNfdG9fc3RvcmUgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggZWxlbWVudHNfdG9fc3RvcmUsIGxhc3RfZWxlbWVudCB3aXRoXG4gICAgICB8IChfLCBfLCB0LCBfLCBsaXN0KSA6OiBxLCBTb21lIChfLCBfLCBvbGQsIF8pIHdoZW4gY29tcGFyZSB0IG9sZCA9IDAgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgIGxpc3QgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgfCAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50LCBsaXN0KSA6OiBxLCBTb21lIChncmlkJywgZ3JhcGgnLCBhLCBldmVudCcpIC0+XG4gICAgICAgIHZpc2l0IHFcbiAgICAgICAgICAoKGdyaWQnLCBncmFwaCcsIGEsIGV2ZW50JywgTGlzdC5zb3J0IGNtcCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpXG4gICAgICAgICAgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgICAgICAgIChTb21lIChncmlkLCBncmFwaCwgdCwgZXZlbnQpKVxuICAgICAgICAgICgqTGlzdC5yZXYqKSBsaXN0XG4gICAgICB8IChncmlkLCBncmFwaCwgdCwgZXZlbnQsIGxpc3QpIDo6IHEsIE5vbmUgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgKFNvbWUgKGdyaWQsIGdyYXBoLCB0LCBldmVudCkpIChMaXN0LnJldiBsaXN0KVxuICAgICAgfCBbXSwgTm9uZSAtPiBbXVxuICAgICAgfCBbXSwgU29tZSAoZ3JpZCwgZ3JhcGgsIGEsIGV2ZW50KSAtPlxuICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICgoZ3JpZCwgZ3JhcGgsIGEsIGV2ZW50LCBMaXN0LnNvcnQgY21wIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgICAgICA6OiBzdG9yZWRfZWxlbWVudHMpXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IHZpc2l0IGxpc3QgW10gTm9uZSBbXSBpblxuICAgIGVycm9yLCBsaXN0XG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgbGlzdCA9IHNvcnRfb3V0ZXIgKExpc3QucmV2IGxpc3QpIGluXG4gICAgbGV0IHJlYyB2aXNpdCBlbGVtZW50c190b19zdG9yZSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCBlbGVtZW50c190b19zdG9yZSwgbGFzdF9lbGVtZW50IHdpdGhcbiAgICAgIHwgKCh0IDogcHJlaGFzaCksIGxpc3QpIDo6IHEsIFNvbWUgb2xkIHdoZW4gY29tcGFyZSB0IG9sZCA9IDAgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgIGxpc3QgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgfCAodCwgbGlzdCkgOjogcSwgU29tZSBhIC0+XG4gICAgICAgIHZpc2l0IHEgKChhLCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpIDo6IHN0b3JlZF9lbGVtZW50cykgKFNvbWUgdCkgbGlzdFxuICAgICAgfCAodCwgbGlzdCkgOjogcSwgTm9uZSAtPiB2aXNpdCBxIHN0b3JlZF9lbGVtZW50cyAoU29tZSB0KSAoTGlzdC5yZXYgbGlzdClcbiAgICAgIHwgW10sIE5vbmUgLT4gW11cbiAgICAgIHwgW10sIFNvbWUgYSAtPiBMaXN0LnJldiAoKGEsIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcykgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSB2aXNpdCBsaXN0IFtdIE5vbmUgW10gaW5cbiAgICBsZXQgcmVjIHZpc2l0MiBsIGxvZ19pbmZvIGVycm9yIGFjYyA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBhY2NcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEgLT5cbiAgICAgICAgaWYgTGlzdC5sZW5ndGggbGlzdCA9IDEgdGhlblxuICAgICAgICAgIHZpc2l0MiBxIGxvZ19pbmZvIGVycm9yICgodCwgbGlzdCkgOjogYWNjKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0JyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGxpc3QnKSAoZ3JpZCwgZ3JhcGgsIGRhZywgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBkYWcnID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGRhZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgZGFnIC0+IGVycm9yLCBsb2dfaW5mbywgZGFnXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChncmlkLCBncmFwaCwgU29tZSBkYWcnLCBiLCBjKSA6OiBsaXN0JylcbiAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgW10pIGxpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGlzdCcgPVxuICAgICAgICAgICAgaGFzaF9pbm5lciBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvclxuICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uY29tcGFyZV9ieV9zdG9yeV9pZCBsaXN0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgdmlzaXQyIHEgbG9nX2luZm8gZXJyb3IgKCh0LCBsaXN0JykgOjogYWNjKVxuICAgICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID0gdmlzaXQyIGxpc3QgbG9nX2luZm8gZXJyb3IgW10gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxuICBsZXQgcHJvamVjdF90dXBsZSAoZ3JpZCwgXywgXywgdHJhY2UsIGxpc3QpID0gTGlzdC5oZCBsaXN0LCB0cmFjZSwgZ3JpZCwgbGlzdFxuXG4gIGxldCBzb3J0X2xpc3QgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgZmxhdF9saXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdF9vdXQgKF9wcmVoYXNoLCBsaXN0KSAtPlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGxpc3Rfb3V0IHR1cGxlIC0+IHByb2plY3RfdHVwbGUgdHVwbGUgOjogbGlzdF9vdXQpXG4gICAgICAgICAgICBsaXN0X291dCBsaXN0KVxuICAgICAgICBbXSBsaXN0XG4gICAgaW5cbiAgICBsZXQgY29tcGFyZV9wYWlyIChhLCBfLCBfLCBfKSAoYywgXywgXywgXykgPVxuICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgYSBjXG4gICAgaW5cbiAgICBsZXQgZmxhdF9saXN0ID0gTGlzdC5zb3J0IGNvbXBhcmVfcGFpciBmbGF0X2xpc3QgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBMaXN0LnJldl9tYXAgKGZ1biAoX2EsIGIsIGMsIGQpIC0+IGIsIGMsIGQpIChMaXN0LnJldiBmbGF0X2xpc3QpIClcblxuICBsZXQgY291bnRfc3RvcmllcyBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG4gbCAtPiBuICsgTGlzdC5sZW5ndGggKHNuZCBsKSkgMCBsaXN0XG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgIChlcnJvciA6IEV4Y2VwdGlvbi5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQpIGcgbGlzdCBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhIChfLCBsKSAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYSkgKF8sIF8sIF8sIHgsIHkpIC0+XG4gICAgICAgICAgICBnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSBhKVxuICAgICAgICAgIGEgbClcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGEpIChMaXN0LnJldiBsaXN0KVxuZW5kXG5cbm1vZHVsZSBCdWNrZXRUYWJsZSA6IFN0b3J5VGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBzdG9yeV9pZCA9IGludFxuXG4gIGxldCBzdWNjX3N0b3J5X2lkID0gc3VjY1xuXG4gIHR5cGUgcHJlaGFzaF9lbHQgPSBub2RlICogaW50XG5cbiAgbW9kdWxlIEtleVMgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0ga2V5XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBQcmVIYXNoUyA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVoYXNoX2VsdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgS2V5TWFwID0gS2V5Uy5NYXBcbiAgbW9kdWxlIFByZUhhc2hNYXAgPSBQcmVIYXNoUy5NYXBcblxuICB0eXBlIGlubmVyX3RyZWUgPVxuICAgIHwgSW5uZXJfbm9kZSBvZiAoaW5uZXJfdHJlZSBLZXlNYXAudCAqIHN0b3J5X2lkIG9wdGlvbilcbiAgICB8IElubmVyX2xlYXZlIG9mIChrZXkgbGlzdCAqIHN0b3J5X2lkKVxuXG4gIHR5cGUgb3V0ZXJfdHJlZSA9XG4gICAgfCBFbXB0eVxuICAgIHwgT3V0ZXJfbm9kZSBvZiAob3V0ZXJfdHJlZSBQcmVIYXNoTWFwLnQgKiBzdG9yeV9pZCBvcHRpb24pXG4gICAgfCBPdXRlcl9sZWF2ZSBvZiAocHJlaGFzaF9lbHQgbGlzdCAqIHN0b3J5X2lkKVxuICAgIHwgVG9faW5uZXIgb2YgKG91dGVyX3RyZWUgUHJlSGFzaE1hcC50ICogaW5uZXJfdHJlZSlcblxuICB0eXBlIHRhYmxlID0ge1xuICAgIHRyZWU6IG91dGVyX3RyZWU7XG4gICAgYXJyYXk6XG4gICAgICAoQ2F1c2FsLmdyaWRcbiAgICAgICogZ3JhcGhcbiAgICAgICogY2Fub25pY2FsX2Zvcm0gb3B0aW9uXG4gICAgICAqIFRyYWNlLnRcbiAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0KVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYudDtcbiAgICBmcmVzaF9pZDogc3RvcnlfaWQ7XG4gIH1cblxuICBsZXQgaW5pdF90YWJsZSBwYXJhbWV0ZXJzIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmNyZWF0ZVxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIDBcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyB0cmVlID0gRW1wdHk7IGFycmF5OyBmcmVzaF9pZCA9IDAgfVxuXG4gIGxldCBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGFzc29jID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmdldFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgaWQgdGFibGUuYXJyYXlcbiAgICBpblxuICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgYSA9XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJ1bmtub3duIHN0b3J5IGlkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29uc2lzdGVudCBzdG9yeSBpZFwiKSAodGFibGUsIFtdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYVxuICAgIHwgU29tZSAoXywgXywgU29tZSBjYW5ub25pYywgXywgXykgLT4gZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljKVxuICAgIHwgU29tZSAoZ3JpZCwgZ3JhcGgsIE5vbmUsIHRyYWNlLCBpbmZvKSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWMgPVxuICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGFycmF5JyA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIGlkXG4gICAgICAgICAgKGdyaWQsIGdyYXBoLCBTb21lIGNhbm5vbmljLCB0cmFjZSwgaW5mbylcbiAgICAgICAgICB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIGxldCB0YWJsZSA9IHsgdGFibGUgd2l0aCBhcnJheSA9IGFycmF5JyB9IGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWMpXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIHN0b3J5X2luZm8gdGFibGVcbiAgICAgID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgICBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJlaGFzaCA9IHByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZ3JhcGggaW5cbiAgICBsZXQgYXNzb2MgPSBncmlkLCBncmFwaCwgTm9uZSwgcHJldHJhY2UsIHN0b3J5X2luZm8gaW5cbiAgICBsZXQgYWRkX3N0b3J5IGVycm9yIHggdGFibGUgPVxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIHRhYmxlLmZyZXNoX2lkIHggdGFibGUuYXJyYXlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBpZlxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHByaW50X2dyYXBoXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHRhYmxlLmZyZXNoX2lkIHN0b3J5X2luZm8gZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIHRhYmxlLmZyZXNoX2lkLFxuICAgICAgICB7IHRhYmxlIHdpdGggYXJyYXk7IGZyZXNoX2lkID0gc3VjY19zdG9yeV9pZCB0YWJsZS5mcmVzaF9pZCB9IClcbiAgICBpblxuICAgIGxldCBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkIHRhYmxlID1cbiAgICAgIGxldCBlcnJvciwgYXNzb19vcHQgPVxuICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5nZXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBpZCB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGFzc29fb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiVW5rbm93biBzdG9yeSBpZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIHN0b3J5IGlkXCIpIHRhYmxlXG4gICAgICB8IFNvbWUgKGdyaWQsIGdyYXBoLCBjYW5vbmljLCB0cmFjZSwgaW5mbykgLT5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgICAgICAgIG1hdGNoIEguZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBTdG9yeV9qc29uLkNhdXNhbFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgU3RvcnlfanNvbi5zdG9yeV9tb2RlID0gY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlcjtcbiAgICAgICAgICAgIFN0b3J5X2pzb24ubG9nX2luZm8gPSBzdG9yeV9pbmZvO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5zdG9yeSA9IFN0b3J5X2pzb24uU2FtZV9hcyBpZDtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlciAoU3RvcnlfanNvbi5TdG9yeSByZXN1bHQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBlcnJvciBpZFxuICAgICAgICAgICAgKGdyaWQsIGdyYXBoLCBjYW5vbmljLCB0cmFjZSwgc3RvcnlfaW5mbyBAIGluZm8pXG4gICAgICAgICAgICB0YWJsZS5hcnJheVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyB0YWJsZSB3aXRoIGFycmF5IH1cbiAgICBpblxuICAgIGxldCB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fub25pY19mb3JtIGFzc29jID1cbiAgICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICAgIHwgZ3JpZCwgZ3JhcGgsIE5vbmUsIHRyYWNlLCBpbmZvIC0+XG4gICAgICAgIGVycm9yLCAoZ3JpZCwgZ3JhcGgsIFNvbWUgY2Fub25pY19mb3JtLCB0cmFjZSwgaW5mbylcbiAgICAgIHwgXywgXywgU29tZSBfLCBfLCBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHRoaXMgc3Rvcnkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCJcbiAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHN0b3JpZXMgIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiKVxuICAgICAgICAgIGFzc29jXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fub25pY19mb3JtIGNhbm9uaWNfZm9ybScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgID1cbiAgICAgIG1hdGNoIGNhbm9uaWNfZm9ybSwgY2Fub25pY19mb3JtJyB3aXRoXG4gICAgICB8IFtdLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIHRhYmxlID0gYWRkX3N0b3J5X2luZm8gZXJyb3Igc3RvcnlfaW5mbyBpZCcgdGFibGUgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbGVhdmUgKFtdLCBpZCcpXG4gICAgICB8IHQgOjogcSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IChJbm5lcl9sZWF2ZSAocSwgaWQpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQnKVxuICAgICAgICApXG4gICAgICB8IFtdLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlXG4gICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQpIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyB3aGVuIHQgPSB0JyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgdHJlZSA9XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBxIHEnIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgdHJlZSBLZXlNYXAuZW1wdHksIE5vbmUpXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZVxuICAgICAgICAgICAgKCBLZXlNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAoSW5uZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICBOb25lICkgKVxuICAgIGluXG4gICAgbGV0IHJlYyBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHByZWhhc2ggcHJlaGFzaCcgaWQnIHRhYmxlID1cbiAgICAgIG1hdGNoIHByZWhhc2gsIHByZWhhc2gnIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljX2Zvcm0gPVxuICAgICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIGNhbm5vbmljX2Zvcm0gYXNzb2MgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pY19mb3JtJykgPVxuICAgICAgICAgIGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQnIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5ub25pY19mb3JtIGNhbm5vbmljX2Zvcm0nIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBUb19pbm5lciAoUHJlSGFzaE1hcC5lbXB0eSwgaW5uZXIpXG4gICAgICB8IHQgOjogcSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIFByZUhhc2hNYXAuZW1wdHksIFNvbWUgaWQnKVxuICAgICAgICApXG4gICAgICB8IFtdLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSwgU29tZSBpZClcbiAgICAgICAgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIHdoZW4gdCA9IHQnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgICAgICBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHEgcScgaWQnIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZSAoUHJlSGFzaE1hcC5hZGQgdCB0cmVlIFByZUhhc2hNYXAuZW1wdHksIE5vbmUpIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSksXG4gICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBpbm5lcl90cmVlIHRhYmxlID1cbiAgICAgIG1hdGNoIHN1ZmZpeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBpbm5lcl90cmVlIHdpdGhcbiAgICAgICAgfCBJbm5lcl9ub2RlIChtYXAsIE5vbmUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbm9kZSAobWFwLCBTb21lIGlkKVxuICAgICAgICB8IElubmVyX25vZGUgKF8sIFNvbWUgaWQnKSB8IElubmVyX2xlYXZlIChbXSwgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyX3RyZWVcbiAgICAgICAgfCBJbm5lcl9sZWF2ZSAodCcgOjogcScsIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIElubmVyX25vZGVcbiAgICAgICAgICAgICAgKEtleU1hcC5hZGQgdCcgKElubmVyX2xlYXZlIChxJywgaWQnKSkgS2V5TWFwLmVtcHR5LCBTb21lIGlkKSApKVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgKG1hdGNoIGlubmVyX3RyZWUgd2l0aFxuICAgICAgICB8IElubmVyX25vZGUgKG1hcCwgYXNzb2MnKSAtPlxuICAgICAgICAgIChtYXRjaCBLZXlNYXAuZmluZF9vcHRpb24gdCBtYXAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgICBsZXQgaW5uZXJfdHJlZSA9XG4gICAgICAgICAgICAgIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCAoSW5uZXJfbGVhdmUgKHEsIGlkKSkgbWFwLCBhc3NvYycpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXJfdHJlZVxuICAgICAgICAgIHwgU29tZSBpbm5lcl90cmVlJyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBpbm5lcl90cmVlJycgPVxuICAgICAgICAgICAgICBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBxIGlubmVyX3RyZWUnIHRhYmxlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgaW5uZXJfdHJlZScnID09IGlubmVyX3RyZWUnIHRoZW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIGlubmVyX3RyZWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICB0YWJsZScsXG4gICAgICAgICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IGlubmVyX3RyZWUnJyBtYXAsIGFzc29jJykgKSlcbiAgICAgICAgfCBJbm5lcl9sZWF2ZSAobCcsIGlkJykgLT5cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIHN1ZmZpeCBsJyBpZCcgYXNzb2MgdGFibGUpXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBvdXRlcl90cmVlIHRhYmxlID1cbiAgICAgIG1hdGNoIHN1ZmZpeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBvdXRlcl90cmVlIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX2xlYXZlIChzdWZmaXgsIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgTm9uZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBPdXRlcl9ub2RlIChtYXAsIFNvbWUgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBTb21lIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGdyYXBoID1cbiAgICAgICAgICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICAgICAgICAgIHwgXywgZ3JhcGgsIE5vbmUsIF8sIF8gLT4gZXJyb3IsIGdyYXBoXG4gICAgICAgICAgICB8IF8sIGdyYXBoLCBTb21lIF8sIF8sIF8gLT5cbiAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2Ygc3RvcmllcyBpbiB0aGUgb3V0ZXIgdHJlZSBzaG91bGQgbm90IFxcXG4gICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiXG4gICAgICAgICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiBzdG9yaWVzIGluIHRoZSBvdXRlciB0cmVlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvbXB1dGUgeWV0XCIpXG4gICAgICAgICAgICAgICAgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljX2Zvcm0gPVxuICAgICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIGNhbm5vbmljX2Zvcm0gYXNzb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljX2Zvcm0nKSA9XG4gICAgICAgICAgICBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkJyB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fubm9uaWNfZm9ybSBjYW5ub25pY19mb3JtJyBpZCcgYXNzb2NcbiAgICAgICAgICAgICAgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChtYXAsIGlubmVyKVxuICAgICAgICB8IE91dGVyX2xlYXZlIChfcSwgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIG91dGVyX3RyZWVcbiAgICAgICAgfCBUb19pbm5lciAobWFwLCBpbm5lcikgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdWZmaXggPVxuICAgICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIHN1ZmZpeCBhc3NvYyBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgICBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBzdWZmaXggaW5uZXIgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChtYXAsIGlubmVyKSlcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIChtYXRjaCBvdXRlcl90cmVlIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX2xlYXZlIChzdWZmaXgsIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgYXNzb2MnKSAtPlxuICAgICAgICAgIChtYXRjaCBQcmVIYXNoTWFwLmZpbmRfb3B0aW9uIHQgbWFwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICAgbGV0IGlubmVyX3RyZWUgPVxuICAgICAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IChPdXRlcl9sZWF2ZSAocSwgaWQpKSBtYXAsIGFzc29jJylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lcl90cmVlXG4gICAgICAgICAgfCBTb21lIG91dGVyX3RyZWUnIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIG91dGVyX3RyZWUnJyA9XG4gICAgICAgICAgICAgIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHEgb3V0ZXJfdHJlZScgdGFibGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBvdXRlcl90cmVlJycgPT0gb3V0ZXJfdHJlZScgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgb3V0ZXJfdHJlZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIHRhYmxlJyxcbiAgICAgICAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IG91dGVyX3RyZWUnJyBtYXAsIGFzc29jJykgKSlcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAodCcgOjogcScsIGlkJykgd2hlbiBub3QgKHQgPSB0JykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgICAgKCBQcmVIYXNoTWFwLmFkZCB0XG4gICAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgICBOb25lICkgKVxuICAgICAgICB8IE91dGVyX2xlYXZlIChsJywgaWQnKSAtPiBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHN1ZmZpeCBsJyBpZCcgdGFibGVcbiAgICAgICAgfCBUb19pbm5lciAoX21hcCwgaW5uZXIpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICBUb19pbm5lclxuICAgICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIFByZUhhc2hNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICAgIGlubmVyICkgKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAoZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBzdG9yeV9pbmZvKVxuICAgICAgICBzdG9yeV9pbmZvIHByZWhhc2ggdGFibGUudHJlZSB0YWJsZVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHRhYmxlIHdpdGggdHJlZSB9XG5cbiAgKCogbGV0IHJlYyBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCBpbm5lcl90cmVlID1cbiAgICAgbWF0Y2hcbiAgICAgaW5uZXJfdHJlZVxuICAgICB3aXRoXG4gICAgIHwgSW5uZXJfbm9kZSAobWFwLGFzc29jJykgLT5cbiAgICAgbGV0ICgpID1cbiAgICAgbWF0Y2hcbiAgICAgYXNzb2MnXG4gICAgIHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNVbmZpbGxlZCBOb2RlXFxuXCIgcHJlZml4XG4gICAgIHwgU29tZSAoaWQpICAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzRmlsbGVkIE5vZGU6ICVpXFxuXCIgcHJlZml4IGlkXG4gICAgIGluXG4gICAgIGxldCBwcmVmaXgnID0gcHJlZml4XlwiIFwiIGluXG4gICAgIEtleU1hcC5pdGVyXG4gICAgIChmdW4gZWx0IG1hcCAtPlxuICAgICBwcmludF9lbHQgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgZWx0O1xuICAgICBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICBtYXBcbiAgICAgfCBJbm5lcl9sZWF2ZSAobCxpZCkgIC0+XG4gICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNMRUFWRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgbGV0IF8gPSBwcmludF9jYW5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsIGluXG4gICAgICgpKilcblxuICAoKlxubGV0IHJlYyBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCBvdXRlcl90cmVlID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG91dGVyX3RyZWVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNFTVBUWVxcblwiIHByZWZpeFxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCxhc3NvYycpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgIGFzc29jJ1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVW5maWxsZWQgTm9kZVxcblwiIHByZWZpeFxuICAgICAgICB8IFNvbWUgKGlkKSAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0ZpbGxlZCBOb2RlOiAlaVxcblwiIHByZWZpeCBpZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJlZml4JyA9IHByZWZpeF5cIiBcIiBpblxuICAgICAgICBQcmVIYXNoTWFwLml0ZXJcbiAgICAgICAgKGZ1biAoKF8sYiksaSkgIG1hcCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzJXM6JWktPlxcblwiIHByZWZpeCBiIGkgO1xuICAgICAgICBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICAgICBtYXBcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAobCxpZCkgIC0+XG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNMRUFWRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgICAgbGV0IF8gPSBwcmludF9wcmVoYXNoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGwgaW5cbiAgICAgICAgKClcbiAgICAgICAgfCBUb19pbm5lciAobWFwLGlubmVyKSAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVE8gSU5ORVIgVFJFRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgICAgbGV0IHByZWZpeCcgPSBwcmVmaXheXCIgXCIgaW5cbiAgICAgICAgbGV0ICgpID0gUHJlSGFzaE1hcC5pdGVyXG4gICAgICAgIChmdW4gKChfLGIpLGkpICBtYXAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlcyVzOiVpLT5cXG5cIiBwcmVmaXggYiBpIDtcbiAgICAgICAgcHJpbnRfb3V0ZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIG1hcClcbiAgICAgICAgbWFwXG4gICAgICAgIGluXG4gICAgICAgIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBpbm5lciAqKVxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIF8gbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZm9sZFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXInIGVycm9yIGkgKGEsIGIsIGMsIGQsIGUpIGFycmF5IC0+XG4gICAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0IHBhcmFtZXRlcicgZXJyb3IgaVxuICAgICAgICAgICAgKGEsIGIsIGMsIGQsIExpc3Quc29ydCBUcmFjZS5TaW11bGF0aW9uX2luZm8uY29tcGFyZV9ieV9zdG9yeV9pZCBlKVxuICAgICAgICAgICAgYXJyYXkpXG4gICAgICAgIHRhYmxlLmFycmF5IHRhYmxlLmFycmF5XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgdGFibGUgd2l0aCBhcnJheSB9XG5cbiAgbGV0IHNvcnRfbGlzdCBwYXJhbWV0ZXIgXyBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbGV0IGVycm9yLCBsID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmZvbGRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yXG4gICAgICAgIChmdW4gX3BhcmFtZXRlciBlcnJvciBfIChhLCBfYiwgX2MsIGQsIGUpIGwgLT4gZXJyb3IsIChkLCBhLCBlKSA6OiBsKVxuICAgICAgICB0YWJsZS5hcnJheSBbXVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgdGFibGUgPSB0YWJsZS5mcmVzaF9pZFxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGYgdGFibGUgYSA9XG4gICAgbGV0IGEsIChiLCBjKSA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcicgZXJyb3IgXyAoXywgXywgXywgZCwgZSkgKGxvZ19pbmZvLCBhKSAtPlxuICAgICAgICAgIGxldCBhLCBiLCBjID1cbiAgICAgICAgICAgIGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXInIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBkIGUgYVxuICAgICAgICAgIGluXG4gICAgICAgICAgYSwgKGIsIGMpKVxuICAgICAgICB0YWJsZS5hcnJheSAobG9nX2luZm8sIGEpXG4gICAgaW5cbiAgICBhLCBiLCBjXG5lbmRcblxubW9kdWxlIHR5cGUgU2VsZWN0b3IgPSBzaWdcbiAgdmFsIGNob29zZV9mc3QgOiBILnBhcmFtZXRlciAtPiBib29sXG5lbmRcblxubW9kdWxlIENob2ljZSAoUyA6IFNlbGVjdG9yKSAoQSA6IFN0b3J5VGFibGUpIChCIDogU3RvcnlUYWJsZSkgOiBTdG9yeVRhYmxlID1cbnN0cnVjdFxuICB0eXBlIHRhYmxlID0gQSBvZiBBLnRhYmxlIHwgQiBvZiBCLnRhYmxlXG5cbiAgbGV0IGluaXRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGlmIFMuY2hvb3NlX2ZzdCBwYXJhbWV0ZXIgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEIuaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuICAgIClcblxuICBsZXQgYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2UgaW5mbyB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEEgdGFibGVcbiAgICB8IEIgdGFibGUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQi5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBCLmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuXG4gIGxldCBzb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT4gQS5zb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcbiAgICB8IEIgdGFibGUgLT4gQi5zb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcblxuICBsZXQgY291bnRfc3RvcmllcyB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPiBBLmNvdW50X3N0b3JpZXMgdGFibGVcbiAgICB8IEIgdGFibGUgLT4gQi5jb3VudF9zdG9yaWVzIHRhYmxlXG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZyB0YWJsZSBhID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+IEEuZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBnIHRhYmxlIGFcbiAgICB8IEIgdGFibGUgLT4gQi5mb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGcgdGFibGUgYVxuZW5kXG5cbigqIG1vZHVsZSBTdG9yeVRhYmxlID0gTGlzdFRhYmxlKilcbigqIG1vZHVsZSBTdG9yeVRhYmxlID0gQnVja2V0VGFibGUqKVxubW9kdWxlIFN0b3J5VGFibGUgPVxuICBDaG9pY2VcbiAgICAoc3RydWN0XG4gICAgICBsZXQgY2hvb3NlX2ZzdCA9IFMuUEguQi5QQi5DSS5Qby5LLkguZG9fd2VfdXNlX2J1Y2tldF9zb3J0XG4gICAgZW5kKVxuICAgIChCdWNrZXRUYWJsZSlcbiAgICAoTGlzdFRhYmxlKVxuIiwiKCoqXG4gKiB1dGlsaXRpZXMubWxcbiAqXG4gKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTUtMDMtMjggZmVyZXQ+XG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMDMgMjA6NTM6MTQgZmVyZXQ+XG4gKlxuICogQVBJIGZvciBjYXVzYWwgY29tcHJlc3Npb25cbiAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICpcbiAqIENvcHlyaWdodCAyMDE1IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGVcbiAqIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgRCA9IERhZy5TdG9yeVRhYmxlXG5tb2R1bGUgUyA9IEdlbmVyaWNfYnJhbmNoX2FuZF9jdXRfc29sdmVyLlNvbHZlclxubW9kdWxlIFAgPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzXG5cbnR5cGUgZXJyb3JfbG9nID0gRXhjZXB0aW9uLmV4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxudHlwZSBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnBhcmFtZXRlclxudHlwZSBrYXBwYV9oYW5kbGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5oYW5kbGVyXG50eXBlIHByb2ZpbGluZ19pbmZvID0gUC5sb2dfaW5mb1xudHlwZSBzaGFsbF93ZSA9IHBhcmFtZXRlciAtPiBib29sXG50eXBlIHN0ZXAgPSBUcmFjZS5zdGVwXG50eXBlIHN0ZXBfd2l0aF9zaWRlX2VmZmVjdHMgPSBzdGVwICogUy5QSC5CLlBCLkNJLlBvLksuc2lkZV9lZmZlY3RcbnR5cGUgc3RlcF9pZCA9IFMuUEguQi5QQi5zdGVwX2lkXG5cbnR5cGUgdHJhY2UgPSB7XG4gIGNvbXByZXNzZWRfdHJhY2U6IHN0ZXBfd2l0aF9zaWRlX2VmZmVjdHMgbGlzdCBvcHRpb247XG4gIHByZXRyYWNlOiBzdGVwIGxpc3Q7XG4gIHdpdGhfcG90ZW50aWFsX2FtYmlndWl0eTogYm9vbDtcbn1cblxudHlwZSB0cmFjZV9ydW50aW1lX2luZm8gPSBwcm9maWxpbmdfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udFxuXG50eXBlICdhIHdpdGhfaGFuZGxlcnMgPVxuICBwYXJhbWV0ZXIgLT5cbiAgP3NoYWxsX3dlX2NvbXB1dGU6c2hhbGxfd2UgLT5cbiAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOnNoYWxsX3dlIC0+XG4gID9wcmludF9pZl96ZXJvOnNoYWxsX3dlIC0+XG4gIGthcHBhX2hhbmRsZXIgLT5cbiAgcHJvZmlsaW5nX2luZm8gLT5cbiAgZXJyb3JfbG9nIC0+XG4gICdhXG5cbnR5cGUgJ2EgemVyb2FyeSA9IChlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdhKSB3aXRoX2hhbmRsZXJzXG50eXBlICgnYSwgJ2IpIHVuYXJ5ID0gKCdhIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2IpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgKCdhIC0+ICdiIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2MpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZCkgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZSkgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBxdWludGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdmKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsICdnKSBzZXh0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdmIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2cpXG4gIHdpdGhfaGFuZGxlcnNcblxubGV0ICh3ZV9zaGFsbCA6IHNoYWxsX3dlKSA9IGZ1biBfIC0+IHRydWVcbmxldCAod2Vfc2hhbGxfbm90IDogc2hhbGxfd2UpID0gZnVuIF8gLT4gZmFsc2VcbmxldCBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgPSB0cmFjZS5wcmV0cmFjZVxubGV0IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UgPSBMaXN0Lmxlbmd0aCAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlKVxubGV0IG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSA9IHRyYWNlLndpdGhfcG90ZW50aWFsX2FtYmlndWl0eVxubGV0IHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UgeCA9IHsgdHJhY2Ugd2l0aCB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSB4IH1cbmxldCBfc2V0X3ByZXRyYWNlIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggcHJldHJhY2UgPSB4IH1cbmxldCBfc2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgeCA9IHsgdHJhY2Ugd2l0aCBjb21wcmVzc2VkX3RyYWNlID0geCB9XG5cbmxldCBnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSA9XG4gIG1hdGNoIHRyYWNlLmNvbXByZXNzZWRfdHJhY2Ugd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIExpc3QucmV2X21hcCAoZnVuIHggLT4geCwgW10pIChMaXN0LnJldiAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlKSlcblxubGV0IGlzX2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgPSB0cmFjZS5jb21wcmVzc2VkX3RyYWNlICE9IE5vbmVcblxubGV0IHRyYWNlX29mX3ByZXRyYWNlX3dpdGhfYW1iaWd1aXR5IHdpdGhfYW1iaWd1aXR5IHByZXRyYWNlID1cbiAge1xuICAgIHByZXRyYWNlO1xuICAgIGNvbXByZXNzZWRfdHJhY2UgPSBOb25lO1xuICAgIHdpdGhfcG90ZW50aWFsX2FtYmlndWl0eSA9IHdpdGhfYW1iaWd1aXR5O1xuICB9XG5cbmxldCB0cmFjZV9vZl9wcmV0cmFjZSA9IHRyYWNlX29mX3ByZXRyYWNlX3dpdGhfYW1iaWd1aXR5IHRydWVcblxubGV0IGJ1aWxkX2NvbXByZXNzZWRfdHJhY2UgeCB5ID1cbiAgeyBjb21wcmVzc2VkX3RyYWNlID0gU29tZSB5OyBwcmV0cmFjZSA9IHg7IHdpdGhfcG90ZW50aWFsX2FtYmlndWl0eSA9IGZhbHNlIH1cblxuKCpsZXQgZ2V0X2xvZ19zdGVwID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nX3N0ZXBcbiAgbGV0IGdldF9kZWJ1Z2dpbmdfbW9kZSA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19tb2RlXG4gIGxldCBnZXRfbG9nZ2VyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyKilcbmxldCBnZXRfaWRfb2ZfZXZlbnQgPSBTLlBILkIuUEIuQ0kuUG8uSy5nZXRfaWRfb2ZfcmVmaW5lZF9zdGVwXG5sZXQgZ2V0X3NpbXVsYXRpb25fdGltZV9vZl9ldmVudCA9IFMuUEguQi5QQi5DSS5Qby5LLmdldF90aW1lX29mX3JlZmluZWRfc3RlcFxuXG5sZXQgX2V4dGVuZF90cmFjZV93aXRoX2R1bW15X3NpZGVfZWZmZWN0cyBsID1cbiAgTGlzdC5yZXZfbWFwIChmdW4gYSAtPiBhLCBbXSkgKExpc3QucmV2IGwpXG5cbmxldCBwcmludF9wcmV0cmFjZSBwYXJhbWV0ZXIgX2hhbmRsZXIgPVxuICBMb2dnZXJzLmZwcmludGZcbiAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfb3V0X2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgIFwiQFs8dj4lYUBdQC5cIlxuICAgIChQcC5saXN0IFBwLnNwYWNlIChUcmFjZS5wcmludF9zdGVwIH5jb21wYWN0OnRydWUgP2VudjpOb25lKSlcblxubGV0IHByaW50X3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIHRyYWNlID1cbiAgcHJpbnRfcHJldHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSlcblxubGV0IHRyYW5zZm9ybV90cmFjZV9nZW4gZiBsb2dfbWVzc2FnZSBkZWJ1Z19tZXNzYWdlIHByb2ZpbGluZ19ldmVudCBwYXJhbWV0ZXJzXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGwpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIHByb2ZpbGluZ19ldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgbGV0IGJvb2wgPVxuICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nX3N0ZXAgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgICAgbWF0Y2ggbG9nX21lc3NhZ2Ugd2l0aFxuICAgICAgICB8IFNvbWUgbG9nX21lc3NhZ2UgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgXCIlcyVzXCJcbiAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpKVxuICAgICAgICAgICAgICBsb2dfbWVzc2FnZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZmx1c2hfbG9nZ2VyIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBpblxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICApIGVsc2VcbiAgICAgICAgZmFsc2VcbiAgICBpblxuICAgIGxldCBwcmV0cmFjZSA9IGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIChwcmV0cmFjZScsIG4pID1cbiAgICAgIGYgcGFyYW1ldGVycyBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHByZXRyYWNlXG4gICAgaW5cbiAgICBsZXQgdHJhY2UnID0gdHJhY2Vfb2ZfcHJldHJhY2UgcHJldHJhY2UnIGluXG4gICAgbGV0IHRyYWNlID1cbiAgICAgIGlmIHRyYWNlID09IHRyYWNlJyB0aGVuXG4gICAgICAgIHRyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UnIChtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBpZiBwcmludF9pZl96ZXJvIHBhcmFtZXRlcnMgdGhlblxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgXCI6IG5vdGhpbmcgaGFzIGNoYW5nZWQgQC5cIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiQC5cIlxuICAgICAgICBlbHNlIGlmIG4gPiAwIHRoZW5cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIFwiOiAtJWkgZXZlbnRzIEAuXCIgblxuICAgICAgICBlbHNlXG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjogKyVpIGV2ZW50cyBALlwiICgtbilcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfbW9kZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlclxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVycylcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lIGZtdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgZGVidWdfbWVzc2FnZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBwcmludF90cmFjZSBwYXJhbWV0ZXJzIGthcHBhX2hhbmRsZXIgdHJhY2VcbiAgICAgIClcbiAgICBpblxuXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycylcbiAgICAgICAgZXJyb3IgcHJvZmlsaW5nX2V2ZW50XG4gICAgICAgIChTb21lIChmdW4gKCkgLT4gc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSkpXG4gICAgICAgIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG4gICkgZWxzZVxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcblxudHlwZSBraW5kID0gKCogIHwgU29sdmVfYW1iaWd1aXRpZXMqKVxuICB8IE1heV9hZGRfYW1iaWd1aXRpZXMgfCBOZXV0cmFsXG5cbmxldCBoYW5kbGVfYW1iaWd1aXRpZXMga2luZCBiID1cbiAgbWF0Y2gga2luZCB3aXRoXG4gICgqICB8IFNvbHZlX2FtYmlndWl0aWVzIC0+IGZhbHNlKilcbiAgfCBOZXV0cmFsIC0+IGJcbiAgfCBNYXlfYWRkX2FtYmlndWl0aWVzIC0+IHRydWVcblxudHlwZSBhbWJpcXVpdGllc19wcmVjb25kaXRpb24gPVxuICB8IERvX25vdF9jYXJlXG4gIHwgUmVxdWlyZV90aGVfYWJzY2VuY2Vfb2ZfYW1iaWd1aXR5ICgqfCBCZXR0ZXJfd2hlbl9ub19hbWJpZ3VpdHkqKVxuXG5sZXQgbXVzdF93ZV9zb2x2ZV9hbWJpZ3VpdHkgX3BhcmFtZXRlcnMgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IERvX25vdF9jYXJlIC0+IGZhbHNlXG4gIHwgUmVxdWlyZV90aGVfYWJzY2VuY2Vfb2ZfYW1iaWd1aXR5IC0+IHRydWVcbigqICB8IEJldHRlcl93aGVuX25vX2FtYmlndWl0eSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILmFsd2F5c19kaXNhbWJpZ3VhdGUgcGFyYW1ldGVycyopXG5cbmxldCBtb25hZGljX2xpZnQgZiBfIF8gbG9nX2luZm8gZXJyb3IgdCA9XG4gIGxldCB0JyA9IGYgdCBpblxuICBlcnJvciwgbG9nX2luZm8sICh0JywgTGlzdC5sZW5ndGggdCAtIExpc3QubGVuZ3RoIHQnKVxuXG5sZXQgX2R1bW15X3Byb2ZpbGluZyBfIHAgPSBwXG5cbmxldCBkaXNhbWJpZ3VhdGUgPVxuICB0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgKG1vbmFkaWNfbGlmdCBTLlBILkIuUEIuQ0kuUG8uSy5kaXNhbWJpZ3VhdGUpXG4gICAgKFNvbWUgXCJcXHQtIGFscGhhLWNvbnZlcnNpb25cIikgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVuYW1lcyBhZ2VudHM6XFxuXCJcbiAgICBTdG9yeVByb2ZpbGluZy5BZ2VudF9pZHNfZGlzYW1iaWd1YXRpb25cblxubGV0IG1ha2VfdW5hbWJpZ3VvdXMgcGFyYW1ldGVycyA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGxfbm90KVxuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsX25vdCkga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZSA9XG4gIGlmIG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSB0aGVuIChcbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZScgPVxuICAgICAgZGlzYW1iaWd1YXRlIHBhcmFtZXRlcnNcbiAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGU6KGZ1biBwYXJhbWV0ZXJzIC0+XG4gICAgICAgICAgbWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlICYmIHNoYWxsX3dlX2NvbXB1dGUgcGFyYW1ldGVycylcbiAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uIH5wcmludF9pZl96ZXJvIGthcHBhX2hhbmRsZXJcbiAgICAgICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBwcm9maWxpbmdfaW5mbyxcbiAgICAgIGlmIHRyYWNlJyA9PSB0cmFjZSB0aGVuXG4gICAgICAgIHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZScgZmFsc2UgKVxuICApIGVsc2VcbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG5cbmxldCBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXMgZiByZXF1aXJlbWVudCBlZmZlY3QgcGFyYW1ldGVyc1xuICAgID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbClcbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbCkga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZSA9XG4gIGlmIHNoYWxsX3dlX2NvbXB1dGUgcGFyYW1ldGVycyB0aGVuIChcbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZSA9XG4gICAgICBpZiBtdXN0X3dlX3NvbHZlX2FtYmlndWl0eSBwYXJhbWV0ZXJzIHJlcXVpcmVtZW50IHRoZW5cbiAgICAgICAgbWFrZV91bmFtYmlndW91cyBwYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlIGthcHBhX2hhbmRsZXJcbiAgICAgICAgICBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAoZlxuICAgICAgICA6IFMuUEguQi5QQi5DSS5Qby5LLkgucGFyYW1ldGVyIC0+XG4gICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGU6c2hhbGxfd2UgLT5cbiAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246c2hhbGxfd2UgLT5cbiAgICAgICAgICA/cHJpbnRfaWZfemVybzpzaGFsbF93ZSAtPlxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaGFuZGxlciAtPlxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICAgICAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0IC0+XG4gICAgICAgICAgdHJhY2UgLT5cbiAgICAgICAgICBFeGNlcHRpb24uZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0XG4gICAgICAgICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICAgICAgICAgKiB0cmFjZSlcbiAgICAgICAgcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZSB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgfnByaW50X2lmX3plcm8ga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZVxuICAgIGluXG4gICAgbGV0IHRyYWNlID0gc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZSAoaGFuZGxlX2FtYmlndWl0aWVzIGVmZmVjdCB0cnVlKSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgdHJhY2VcbiAgKSBlbHNlXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuXG5sZXQgc3BsaXRfaW5pdCA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKG1vbmFkaWNfbGlmdCBTLlBILkIuUEIuQ0kuUG8uSy5zcGxpdF9pbml0KVxuICAgICAgIChTb21lIFwiXFx0LSBzcGxpdHRpbmcgaW5pdGlhbCBldmVudHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyBzcGxpdCBpbml0aWFsIGV2ZW50czpcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLkRlY29tcG9zZV9pbml0aWFsX3N0YXRlKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWxcblxubGV0IGN1dCA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuIFMuUEguQi5QQi5DSS5Qby5jdXRcbiAgICAgICAoU29tZSBcIlxcdC0gY3V0dGluZyBjb25jdXJyZW50IGV2ZW50c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgY29uY3VycmVudCBldmVudHM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5QYXJ0aWFsX29yZGVyX3JlZHVjdGlvbilcbiAgICBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgTmV1dHJhbFxuXG50eXBlIG9uX3RoZV9mbHlfY3V0X3N0YXRlID0gUy5QSC5CLlBCLkNJLlBvLm9uX3RoZV9mbHlfc3RhdGVcblxubGV0IG9uX3RoZV9mbHlfY3V0X2luaXQgPSBTLlBILkIuUEIuQ0kuUG8uaW5pdF9jdXRcbmxldCBvbl90aGVfZmx5X2N1dF9zdGVwID0gUy5QSC5CLlBCLkNJLlBvLmN1dF9zdGVwXG5cbmxldCBvbl90aGVfZmx5X2N1dF9maW5hbGl6ZSBjdXRfc3RhdGUgPVxuICBmc3QgKFMuUEguQi5QQi5DSS5Qby5maW5hbGl6ZV9jdXQgY3V0X3N0YXRlKVxuXG5sZXQgY3V0X3Jldl90cmFjZSByZXZfdHJhY2UgPVxuICBvbl90aGVfZmx5X2N1dF9maW5hbGl6ZVxuICAgIChMaXN0LmZvbGRfbGVmdCBvbl90aGVfZmx5X2N1dF9zdGVwIG9uX3RoZV9mbHlfY3V0X2luaXQgcmV2X3RyYWNlKVxuXG5sZXQgcmVtb3ZlX29ic19iZWZvcmUgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsYXN0X2VpZCB0cmFjZSA9XG4gICggZXJyb3IsXG4gICAgbG9nX2luZm8sXG4gICAgbGV0IHJlYyBhdXggbCBzY29yZSBvdXRwdXQgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IG91dHB1dCwgc2NvcmVcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHQgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggVHJhY2Uuc2ltdWxhdGlvbl9pbmZvX29mX3N0ZXAgdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGF1eCBxIHNjb3JlICh0IDo6IG91dHB1dClcbiAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgaWYgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkIHggPj0gbGFzdF9laWQgdGhlblxuICAgICAgICAgICAgICAoIExpc3QucmV2IChMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgYSAtPiBhIDo6IGxpc3QpIG91dHB1dCBsKSxcbiAgICAgICAgICAgICAgICBzY29yZSApXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCBxIChzdWNjIHNjb3JlKSBvdXRwdXRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgYXV4IHEgc2NvcmUgKHQgOjogb3V0cHV0KVxuICAgIGluXG4gICAgYXV4IHRyYWNlIDAgW10gKVxuXG5sZXQgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9pbmZvIHRyYWNlID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAoZnVuIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIC0+XG4gICAgICAgICByZW1vdmVfb2JzX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsYXN0X2luZm8pXG4gICAgICAgKFNvbWUgXCJcXHQtIFJlbW92aW5nIGFscmVhZHkgdmlzaXRlZCBvYnNlcnZhYmxlIGhpdHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIHNlZW4gb2JzZXJ2YWJsZSBoaXRzXFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5QYXJ0aWFsX29yZGVyX3JlZHVjdGlvbilcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG5cbmxldCByZW1vdmVfb2JzX2JlZm9yZSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIGxhc3RfaW5mbyB0cmFjZSA9XG4gIG1hdGNoIGxhc3RfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHRyYWNlXG4gIHwgU29tZSBsIC0+XG4gICAgbGV0IGxhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biByZXN1bHQgeCAtPlxuICAgICAgICAgIGxldCBsYXN0X2VpZCA9IFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCB4IGluXG4gICAgICAgICAgbWF4IHJlc3VsdCBsYXN0X2VpZClcbiAgICAgICAgMCBsXG4gICAgaW5cbiAgICByZW1vdmVfb2JzX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsYXN0IHRyYWNlXG5cbmxldCBmaWxsX3NpcGhvbiA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKG1vbmFkaWNfbGlmdCBTLlBILkIuUEIuQ0kuUG8uSy5maWxsX3NpcGhvbilcbiAgICAgICAoU29tZSBcIlxcdC0gZGV0ZWN0aW5nIHNpcGhvbnNcIikgXCJUcmFjZSBhZnRlciBoYXZpbmcgZGV0ZWN0ZWQgc2lwaG9uczpcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlNpcGhvbl9kZXRlY3Rpb24pXG4gICAgUmVxdWlyZV90aGVfYWJzY2VuY2Vfb2ZfYW1iaWd1aXR5IE1heV9hZGRfYW1iaWd1aXRpZXNcblxubGV0IChyZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIDogKHRyYWNlLCB0cmFjZSkgdW5hcnkpID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAobW9uYWRpY19saWZ0XG4gICAgICAgICAgKExpc3RfdXRpbC5yZW1vdmVfc3VmZml4X2FmdGVyX2xhc3Rfb2NjdXJyZW5jZSBUcmFjZS5zdGVwX2lzX29icykpXG4gICAgICAgKFNvbWUgXCJcXHQtIHJlbW92aW5nIGV2ZW50cyBvY2N1cnJpbmcgYWZ0ZXIgdGhlIGxhc3Qgb2JzZXJ2YWJsZVwiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgdGhlIGV2ZW50cyBhZnRlciB0aGUgbGFzdCBvYnNlcnZhYmxlXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5SZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZSlcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsXG5cbmxldCByZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW4gUy5QSC5CLlBCLkNJLmN1dFxuICAgICAgIChTb21lIFwiXFx0LSBkZXRlY3RpbmcgcHNldWRvIGludmVyc2UgZXZlbnRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCBwc2V1ZG8gaW52ZXJzZSBldmVudHM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5Qc2V1ZG9faW52ZXJzZV9kZWxldGlvbilcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsXG5cbnR5cGUgY2Zsb3dfZ3JpZCA9IENhdXNhbC5ncmlkXG50eXBlIGVucmljaGVkX2NmbG93X2dyaWQgPSBDYXVzYWwuZW5yaWNoZWRfZ3JpZFxudHlwZSBtdXNpY2FsX2dyaWQgPSBTLlBILkIuYmxhY2tib2FyZFxudHlwZSBzdG9yeV90YWJsZSA9IHsgc3RvcnlfY291bnRlcjogaW50OyBzdG9yeV9saXN0OiBELnRhYmxlIH1cblxubGV0IGNvdW50X3N0b3JpZXMgc3RvcnlfdGFibGUgPSBELmNvdW50X3N0b3JpZXMgc3RvcnlfdGFibGUuc3RvcnlfbGlzdFxuXG50eXBlIG9ic2VydmFibGVfaGl0ID0ge1xuICBsaXN0X29mX2FjdGlvbnM6IFMuUEgudXBkYXRlX29yZGVyIGxpc3Q7XG4gIGxpc3Rfb2ZfZXZlbnRzOiBzdGVwX2lkIGxpc3Q7XG4gIHJ1bnRpbWVfaW5mbzogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb247XG59XG5cbmxldCBnZXRfZXZlbnRfbGlzdF9mcm9tX29ic2VydmFibGVfaGl0IGEgPSBhLmxpc3Rfb2ZfZXZlbnRzXG5sZXQgZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IGEgPSBhLnJ1bnRpbWVfaW5mb1xubGV0IF9nZXRfbGlzdF9vcmRlciBhID0gYS5saXN0X29mX2FjdGlvbnNcbmxldCBlcnJvcl9pbml0ID0gRXhjZXB0aW9uLmVtcHR5X2V4Y2VwdGlvbnNfY2F1Z2h0X2FuZF91bmNhdWdodFxuXG5sZXQgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwcm9maWxpbmdfaW5mb1xuICAgIGMgZCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGwgPSBTLlBILmZvcmNlZF9ldmVudHMgYSBiIHByb2ZpbGluZ19pbmZvIGMgZCBpblxuICAoIGVycm9yLFxuICAgIHByb2ZpbGluZ19pbmZvLFxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgeyBsaXN0X29mX2FjdGlvbnMgPSBhOyBsaXN0X29mX2V2ZW50cyA9IGI7IHJ1bnRpbWVfaW5mbyA9IGMgfSlcbiAgICAgIChMaXN0LnJldiBsKSApXG5cbmxldCBleHRyYWN0X29ic2VydmFibGVfaGl0X2Zyb21fbXVzaWNhbF9ub3RhdGlvbiBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcHJvZmlsaW5nX2luZm9cbiAgICBjIHN0cmluZyBkID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgbCA9IFMuUEguZm9yY2VkX2V2ZW50cyBhIGIgcHJvZmlsaW5nX2luZm8gYyBkIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFsgKGEsIGIsIGMpIF0gLT5cbiAgICAoIGVycm9yLFxuICAgICAgcHJvZmlsaW5nX2luZm8sXG4gICAgICB7IGxpc3Rfb2ZfYWN0aW9ucyA9IGE7IGxpc3Rfb2ZfZXZlbnRzID0gYjsgcnVudGltZV9pbmZvID0gYyB9IClcbiAgfCBbXSAtPiBmYWlsd2l0aCAoc3RyaW5nIF4gXCIgbm8gc3RvcnlcIilcbiAgfCBfIDo6IF8gLT4gZmFpbHdpdGggKHN0cmluZyBeIFwiIHNldmVyYWwgc3Rvcmllc1wiKVxuXG5sZXQgdHJhbnNsYXRlIHAgaCBwcm9maWxpbmdfaW5mbyBlIGIgbGlzdCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIChsaXN0LCBfKSA9XG4gICAgUy50cmFuc2xhdGUgcCBoIHByb2ZpbGluZ19pbmZvIGUgYiBsaXN0XG4gIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2Vfb2ZfcHJldHJhY2UgbGlzdFxuXG5sZXQgY2F1c2FsX3ByZWZpeF9vZl9hbl9vYnNlcnZhYmxlX2hpdCBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHN0cmluZyBibGFja2JvYXJkIChlbnJpY2hlZF9ncmlkIDogZW5yaWNoZWRfY2Zsb3dfZ3JpZClcbiAgICBvYnNlcnZhYmxlX2lkID1cbiAgbGV0IGVpZCA9XG4gICAgbWF0Y2ggZ2V0X2V2ZW50X2xpc3RfZnJvbV9vYnNlcnZhYmxlX2hpdCBvYnNlcnZhYmxlX2lkIHdpdGhcbiAgICB8IFsgYSBdIC0+IGFcbiAgICB8IFtdIC0+IGZhaWx3aXRoIChcIm5vIG9ic2VydmFibGUgaW4gdGhhdCBzdG9yeVwiIF4gc3RyaW5nKVxuICAgIHwgXyAtPiBmYWlsd2l0aCAoXCJzZXZlcmFsIG9ic2VydmFibGVzIGluIHRoYXQgc3RvcnlcIiBeIHN0cmluZylcbiAgaW5cbiAgbGV0IGV2ZW50X2lkX2xpc3QgPVxuICAgIEdyYXBoX2Nsb3N1cmUuZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuaW50X29mX3N0ZXBfaWQgKFMuUEguQi5QQi5pbmNfc3RlcF9pZCBlaWQpKVxuICAgICAgZW5yaWNoZWRfZ3JpZC5DYXVzYWwucHJlY19zdGFyXG4gIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIG91dHB1dCA9XG4gICAgdHJhbnNsYXRlIHBhcmFtZXRlciBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIChMaXN0LnJldl9tYXAgUy5QSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IChMaXN0LnJldiBldmVudF9pZF9saXN0KSlcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBvdXRwdXRcblxubGV0IGV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYlxuICAgIChwIDogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbykgYyBkIGUgZiBnID1cbiAgUy5QSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBhIGIgcCBjIGQgZSBmIGdcblxubGV0IHByaW50X211c2ljYWxfZ3JpZCBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcCBjIGQgPVxuICBTLlBILkIucHJpbnRfYmxhY2tib2FyZCBhIGIgcCBjIGRcblxubGV0IGNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGluaXQgPVxuICAgIEQuaW5pdF90YWJsZSBwYXJhbWV0ZXJzIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3JcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB7IHN0b3J5X2NvdW50ZXIgPSAxOyBzdG9yeV9saXN0ID0gaW5pdCB9XG5cbmxldCBfZ2V0X3RyYWNlX29mX3N0b3J5IChfLCBfLCBfLCB5LCBfKSA9IHRyYWNlX29mX3ByZXRyYWNlIHlcbmxldCBfZ2V0X2luZm9fb2Zfc3RvcnkgKF8sIF8sIF8sIF8sIHQpID0gdFxuXG5sZXQgdGlja19vcHQgcGFyYW1ldGVyIGJhciA9XG4gIG1hdGNoIGJhciB3aXRoXG4gIHwgTm9uZSAtPiBiYXJcbiAgfCBTb21lIChsb2dnZXIsIGJhcikgLT5cbiAgICBTb21lXG4gICAgICAoIGxvZ2dlcixcbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBsb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICBiYXIgKVxuXG5sZXQgY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCBsb2dnZXIgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyXG5cbmxldCBwcmludF9mYWlscyBsb2dnZXIgcyBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgMCAtPiAoKVxuICB8IDEgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkAuXFx0IDEgJXMgaGFzIGZhaWxlZEAuXCIgc1xuICB8IF8gLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkAuXFx0ICVpICVzcyBoYXZlIGZhaWxlZEAuXCIgbiBzXG5cbmxldCBpbmNfZmFpbHMgYSBhJyBiID1cbiAgaWYgYSA9PSBhJyB0aGVuXG4gICAgc3VjYyBiXG4gIGVsc2VcbiAgICBiXG5cbmxldCBmb2xkX3N0b3J5X3RhYmxlX2dlbiBsb2dnZXIgcGFyYW1ldGVyID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbClcbiAgICAoaGFuZGxlciA6IGthcHBhX2hhbmRsZXIpIChwcm9maWxpbmdfaW5mbyA6IHByb2ZpbGluZ19pbmZvKSBlcnJvciBzXG4gICAgKGYgOiAodHJhY2UsIHRyYWNlX3J1bnRpbWVfaW5mbyBsaXN0LCAnYSwgJ2EpIHRlcm5hcnkpIGwgYSA9XG4gIGxldCBuX3N0b3JpZXNfaW5wdXQgPSBjb3VudF9zdG9yaWVzIGwgaW5cbiAgbGV0IHByb2dyZXNzX2JhciA9XG4gICAgU29tZVxuICAgICAgKCBsb2dnZXIsXG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgKGZhbHNlLCAwLCAwLCBuX3N0b3JpZXNfaW5wdXQpIClcbiAgaW5cbiAgbGV0IGcgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3Igc3RvcnkgaW5mb1xuICAgICAgKGssIHByb2dyZXNzX2JhciwgYSwgbl9mYWlscykgPVxuICAgIGxldCBldmVudCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5IGsgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFAuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBhJyA9XG4gICAgICBmIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZSB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICAgICAgICAodHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgZmFsc2Ugc3RvcnkpXG4gICAgICAgIGluZm8gYVxuICAgIGluXG4gICAgbGV0IHByb2dyZXNzX2JhciA9IHRpY2tfb3B0IHBhcmFtZXRlciBwcm9ncmVzc19iYXIgaW5cbiAgICBsZXQgbl9mYWlscyA9IGluY19mYWlscyBhIGEnIG5fZmFpbHMgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgKHN1Y2MgaywgcHJvZ3Jlc3NfYmFyLCBhJywgbl9mYWlscylcbiAgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKF8sIF8sIGEsIG5fZmFpbHMpID1cbiAgICBELmZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgZyBsLnN0b3J5X2xpc3RcbiAgICAgICgxLCBwcm9ncmVzc19iYXIsIGEsIDApXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3Byb2dyZXNzX2Jhcl9vcHQgbG9nZ2VyIGluXG4gIGxldCAoKSA9IHByaW50X2ZhaWxzIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnIgcyBuX2ZhaWxzIGluXG4gIGVycm9yLCAocHJvZmlsaW5nX2luZm8gOiBwcm9maWxpbmdfaW5mbyksIGFcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGEgPVxuICBmb2xkX3N0b3J5X3RhYmxlX2dlblxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZSA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGFcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfd2l0aG91dF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGEgPVxuICBmb2xkX3N0b3J5X3RhYmxlX2dlbiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYVxuXG5sZXQgZ2V0X2NvdW50ZXIgc3RvcnlfbGlzdCA9IHN0b3J5X2xpc3Quc3RvcnlfY291bnRlclxubGV0IGdldF9zdG9yaWVzIHN0b3J5X2xpc3QgPSBzdG9yeV9saXN0LnN0b3J5X2xpc3RcblxubGV0IF9pbmNfY291bnRlciBzdG9yeV9saXN0ID1cbiAgeyBzdG9yeV9saXN0IHdpdGggc3RvcnlfY291bnRlciA9IHN1Y2Mgc3RvcnlfbGlzdC5zdG9yeV9jb3VudGVyIH1cblxubGV0IGJ1aWxkX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZSBib29sID1cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5CdWlsZF9ncmlkIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBsZXQgZ3JpZCA9IFMuUEguQi5QQi5DSS5Qby5LLmJ1aWxkX2dyaWQgdHJhY2UgYm9vbCBoYW5kbGVyIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5CdWlsZF9ncmlkIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBlcnJvciwgY29tcHV0YXRpb25faW5mbywgZ3JpZFxuXG5sZXQgc3RvcmVfdHJhY2UgKHBhcmFtZXRlciA6IHBhcmFtZXRlcikgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIGNvbXB1dGF0aW9uX2luZm8gZXJyb3IgdHJhY2Ugb2JzX2luZm8gc3RvcnlfdGFibGUgPVxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLlN0b3JlX3RyYWNlIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBsZXQgcHJldHJhY2UgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgbGV0IHRyYWNlMiA9IGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIGluXG4gIGxldCBib29sID0gbm90IChpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlKSBpblxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8sIGdyaWQgPVxuICAgIGJ1aWxkX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZTIgYm9vbFxuICBpblxuICBsZXQgY29tcHV0YXRpb25faW5mbyA9IFAuc2V0X2dyaWRfZ2VuZXJhdGlvbiBjb21wdXRhdGlvbl9pbmZvIGluXG4gIGxldCBzdG9yeV9pbmZvID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIChQLmNvcHkgY29tcHV0YXRpb25faW5mbykpXG4gICAgICAoTGlzdC5yZXYgb2JzX2luZm8pXG4gIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbywgc3RvcnlfbGlzdCA9XG4gICAgRC5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciBncmlkIHByZXRyYWNlXG4gICAgICBzdG9yeV9pbmZvIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcbiAgaW5cbiAgbGV0IHN0b3J5X3RhYmxlID1cbiAgICB7IHN0b3J5X2xpc3Q7IHN0b3J5X2NvdW50ZXIgPSBzdG9yeV90YWJsZS5zdG9yeV9jb3VudGVyICsgMSB9XG4gIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5TdG9yZV90cmFjZSBOb25lIGNvbXB1dGF0aW9uX2luZm9cbiAgaW5cblxuICBlcnJvciwgY29tcHV0YXRpb25faW5mbywgc3RvcnlfdGFibGVcblxubGV0IGZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBzdG9yeV90YWJsZSA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgIEQuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCB7IHN0b3J5X3RhYmxlIHdpdGggc3RvcnlfbGlzdCA9IGxpc3QgfVxuXG5sZXQgY29tcHJlc3MgP2hldXJpc3RpYyBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlID1cbiAgbWF0Y2ggcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgWyB0cmFjZSBdXG4gIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZlxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgdGhlblxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIFwiU3RhcnQgb25lIGNhdXNhbCBjb21wcmVzc2lvblwiKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgIGN1dCBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBbIHRyYWNlIF1cbiAgfCBTb21lIChTdG9yeV9qc29uLldlYWsgfCBTdG9yeV9qc29uLlN0cm9uZykgLT5cbiAgICBsZXQgZXZlbnQsIHMgPVxuICAgICAgbWF0Y2ggcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgU3RvcnlQcm9maWxpbmcuV2Vha19jb21wcmVzc2lvbiwgXCJTdGFydCBvbmUgd2VhayBjb21wcmVzc2lvblwiXG4gICAgICB8IF8gLT4gU3RvcnlQcm9maWxpbmcuU3Ryb25nX2NvbXByZXNzaW9uLCBcIlN0YXJ0IG9uZSBzdHJvbmcgY29tcHJlc3Npb25cIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICB0aGVuXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIHMpKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBQLmFkZF9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBldmVudF9saXN0ID0gZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBTLlBILkIuaW1wb3J0ID9oZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICBTLlBILmZvcmNlZF9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGxpc3Rfb3JkZXIgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IChsaXN0X29yZGVyLCBfLCBfKSA6OiBfIC0+IGxpc3Rfb3JkZXJcbiAgICAgIHwgXyAtPiBbXVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIG91dHB1dCwgbGlzdCkgPVxuICAgICAgUy5jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3Rfb3JkZXJcbiAgICBpblxuICAgIGxldCBsaXN0ID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIHByZXRyYWNlIC0+XG4gICAgICAgICAgbGV0IGV2ZW50X2xpc3QgPSBTLnRyYW5zbGF0ZV9yZXN1bHQgcHJldHJhY2UgaW5cbiAgICAgICAgICBsZXQgZXZlbnRfbGlzdCA9IFMuUEguQi5QQi5DSS5Qby5LLmNsZWFuX2V2ZW50cyBldmVudF9saXN0IGluXG4gICAgICAgICAgYnVpbGRfY29tcHJlc3NlZF90cmFjZSBldmVudF9saXN0IHByZXRyYWNlKVxuICAgICAgICBsaXN0XG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBQLnNldF9zdG9yeV9yZXNlYXJjaF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBQLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICBpZiBTLlBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuXG4gICAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIk9uZSBjb21wcmVzc2lvbiBoYXMgZmFpbGVkXCIgRXhpdCAoKVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgKClcbiAgICBpblxuICAgIGxldCBlcnJvciA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyXG4gICAgICAgICAgICBcIlxcdFxcdCAqIHJlc3VsdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgaWYgUy5QSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIF9sb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBTLlBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgXCJGQUlMXCIgMCAwIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyclxuICAgICAgICAgICAgICAgIFwiRmFpbF90b19jb21wcmVzc1wiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnJcbiAgICAgICAgICAgICAgICBcIlN1Y2NlZWRfdG9fY29tcHJlc3NcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBlcnJvclxuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxubGV0IHN0cm9uZ2x5X2NvbXByZXNzID9oZXVyaXN0aWMgcGFyYW1ldGVyID1cbiAgY29tcHJlc3MgP2hldXJpc3RpYyAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fc3Ryb25nIHBhcmFtZXRlcilcblxubGV0IHdlYWtseV9jb21wcmVzcyA/aGV1cmlzdGljIHBhcmFtZXRlciA9XG4gIGNvbXByZXNzID9oZXVyaXN0aWMgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3dlYWsgcGFyYW1ldGVyKVxuXG5sZXQgY29udmVydF90cmFjZV9pbnRvX2dyaWQgdHJhY2UgaGFuZGxlciA9XG4gIGxldCBldmVudF9saXN0ID0gZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgaW5cbiAgUy5QSC5CLlBCLkNJLlBvLksuYnVpbGRfZ3JpZCBldmVudF9saXN0XG4gICAgKG5vdCAoaXNfY29tcHJlc3NlZF90cmFjZSB0cmFjZSkpXG4gICAgaGFuZGxlclxuXG5sZXQgY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVycyA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBrYXBwYV9oYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBTLlBILkIuaW1wb3J0IHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICAgIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZSBjb25maWcgbG9nZ2VyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0ID1cbiAgICBDYXVzYWwuZW5yaWNoX2dyaWRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgbG9nZ2VyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWcgZ3JpZFxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5sZXQgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcblxubGV0IF9lbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3Jlc3NfYmFyXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlIEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoXG5cbmxldCBzb3J0X3N0b3J5X2xpc3QgPSBELnNvcnRfbGlzdFxuXG5sZXQgZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgeCA9XG4gIGxldCBhLCBsb2dfaW5mbywgYiA9XG4gICAgc29ydF9zdG9yeV9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChnZXRfc3RvcmllcyB4KVxuICBpblxuICBhLCBsb2dfaW5mbywgYlxuXG5sZXQgaGFzX29icyB4ID0gTGlzdC5leGlzdHMgVHJhY2Uuc3RlcF9pc19vYnMgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB4KVxuXG5sZXQgZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyID8oZXZlbnQgPSBTdG9yeVByb2ZpbGluZy5EdW1teSkgcGFyYW1ldGVyXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBoYW5kbGVyIHByb2ZpbGluZ19pbmZvcm1hdGlvbiBlcnJvclxuICAgIChmIDogKCdhLCAnYiwgJ2EpIGJpbmFyeSkgYSBsaXN0ID1cbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCBzdHJpbmcsIChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uKSA9XG4gICAgaWYgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pc19kdW1teSBldmVudCB0aGVuXG4gICAgICBcIlwiLCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbilcbiAgICBlbHNlXG4gICAgICAoIFN0b3J5UHJvZmlsaW5nLnN0cmluZ19vZl9zdGVwX2tpbmQgZXZlbnQsXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgICAoU29tZSAoZnVuIF8gLT4gTGlzdC5sZW5ndGggbGlzdCkpXG4gICAgICAgICAgcHJvZmlsaW5nX2luZm9ybWF0aW9uIClcbiAgaW5cbiAgbGV0IHByb2dyZXNzX2JhciA9XG4gICAgVGlja19zdG9yaWVzLnRpY2tfc3Rvcmllc1xuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhclxuICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgKGZhbHNlLCAwLCAwLCBuKVxuICBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgXywgXywgYSwgbl9mYWlsID1cbiAgICBsZXQgcmVjIGF1eCBsaXN0IChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGssIGEsIG5fZmFpbCkgPVxuICAgICAgbGV0IGV2ZW50ID0gU3RvcnlQcm9maWxpbmcuU3RvcnkgayBpblxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgaywgYSwgbl9mYWlsXG4gICAgICB8IHggOjogdGFpbCAtPlxuICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgUC5hZGRfZXZlbnRcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dF9vcHQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGEnID1cbiAgICAgICAgICAgICAgZiBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGVcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gfnByaW50X2lmX3plcm8gaGFuZGxlclxuICAgICAgICAgICAgICAgIHByb2ZpbGluZ19pbmZvcm1hdGlvbiBlcnJvciBhIHhcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYmFyID1cbiAgICAgICAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3Rvcmllc1xuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhclxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICBiYXJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbl9mYWlsID0gaW5jX2ZhaWxzIGEgYScgbl9mYWlsIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWUgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgayArIDEsIGEnLCBuX2ZhaWwpXG4gICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGsgKyAxLCBhLCBuX2ZhaWxcbiAgICAgICAgfCBTb21lIHJlbWFuZW50IC0+IGF1eCB0YWlsIHJlbWFuZW50KVxuICAgIGluXG4gICAgYXV4IGxpc3QgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIHByb2dyZXNzX2JhciwgMSwgYSwgMClcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgIGlmIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaXNfZHVtbXkgZXZlbnQgdGhlblxuICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgIGVsc2VcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gIGluXG4gIGxldCAoKSA9IHByaW50X2ZhaWxzIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnIgc3RyaW5nIG5fZmFpbCBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBhXG5cbmxldCBfZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc190aHJvdWdoX2FfZ3JpZF93aXRoX2FfcHJvZ3Jlc3NfYmFyXG4gICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZiB0IGEgPVxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHQgaGFuZGxlciBpblxuICBDYXVzYWwuZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhciBncmlkIGYgKGVycm9yLCBsb2dfaW5mbywgYSlcblxubGV0IGZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXJcbiAgICA/c2hhbGxfd2VfY29tcHV0ZTpfID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxvZ19zdGVwIGRlYnVnX21vZGUgY291bnRlciBmIHQgYSA9XG4gIGxldCAoKSA9XG4gICAgaWYgbG9nX3N0ZXAgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdC0gYmxhY2tib2FyZCBnZW5lcmF0aW9uIEAuXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgIGNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICBlcnJvciBibGFja2JvYXJkXG4gIGluXG4gIGxldCBuX3N0b3JpZXMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCAoKSA9XG4gICAgaWYgbG9nX3N0ZXAgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdC0gY29tcHV0aW5nIGNhdXNhbCBwYXN0IG9mIGVhY2ggb2JzZXJ2ZWQgZXZlbnRzICglaSlALlwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICBuX3N0b3JpZXNcbiAgaW5cbiAgKCogZ2VuZXJhdGlvbiBvZiB1bmNvbXByZXNzZWQgc3RvcmllcyAqKVxuICBsZXQgKCkgPVxuICAgIGlmIGRlYnVnX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdFxcdCogY2F1c2FsIGNvbXByZXNzaW9uIFwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgbG9nX2luZm8gPSBQLnNldF9zdGFydF9jb21wcmVzc2lvbiBsb2dfaW5mbyBpblxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHQgaGFuZGxlciBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBDYXVzYWwuZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29ic1xuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhclxuICAgICAgZ3JpZFxuICAgICAgKGZ1biBwYXJhbWV0ZXInIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igb2JzZXJ2YWJsZV9oaXQgY2F1c2FsX3Bhc3RcbiAgICAgICAgICAgKGNvdW50ZXIsIGxpc3QsIGEpIC0+XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdWNjZXNzIChjb3VudGVyLCBsaXN0LCBhKVxuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyJyBlcnJvclxuICAgICAgICAgICAgICAoU3RvcnlQcm9maWxpbmcuU3RvcnkgY291bnRlcikgTm9uZSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9ic2VydmFibGVfaWQgPSBoZWFkIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID0gUC5yZXNldF9sb2cgbG9nX2luZm8gaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIiVzXFx0XFx0KiBjYXVzYWwgY29tcHJlc3Npb24gXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogd2UgdHJhbnNsYXRlIHRoZSBsaXN0IG9mIGV2ZW50IGlkcyBpbnRvIGEgdHJhY2UgdGhhbmtzIHRvIHRoZSBibGFja2JvYWQgKilcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICB0cmFuc2xhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIFMuUEguQi5QQi5zdGVwX2lkX29mX2ludFxuICAgICAgICAgICAgICAgICAob2JzZXJ2YWJsZV9oaXQgOjogY2F1c2FsX3Bhc3QpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogd2UgY29sbGVjdCBydW4gdGltZSBpbmZvIGFib3V0IHRoZSBvYnNlcnZhYmxlICopXG4gICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgbWF0Y2ggZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICB8IFNvbWUgaW5mbyAtPlxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgeyBpbmZvIHdpdGggVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID0gY291bnRlciB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIGxvZ19pbmZvIGluZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWyBpbmZvIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGEgPVxuICAgICAgICAgICAgKGYgOiAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm8gYVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlcicgZXJyb3JcbiAgICAgICAgICAgICAgKFN0b3J5UHJvZmlsaW5nLlN0b3J5IGNvdW50ZXIpIE5vbmUgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAgIChmdW4gYSAtPiBTdG9wLnN1Y2Nlc3MgKGNvdW50ZXIgKyAxLCB0YWlsLCBhKSlcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFN0b3Auc3RvcCAoYiwgY291bnRlcikpXG4gICAgICAgICAgICAgIGEgKSlcbiAgICAgIChjb3VudGVyLCBMaXN0LnJldiBsaXN0LCBhKVxuICBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIGEpKSAtPiBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3VjY2VzcyBhKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKGEsIGNvdW50ZXIpKSAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGEsIGNvdW50ZXIpKVxuICAgIG91dHB1dFxuXG5sZXQgY29weV9sb2dfaW5mbyA9IFAuY29weVxuXG50eXBlIGNhbm9uaWNhbF9mb3JtID0gRGFnLmNhbm9uaWNhbF9mb3JtXG5cbmxldCBjb21wYXJlX2Nhbm9uaWNhbF9mb3JtID0gRGFnLmNvbXBhcmVfY2Fub25pY1xuXG5sZXQgY29tcHV0ZV9jYW5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlID1cbiAgbGV0IGdyaWQgPSBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0cmFjZSBoYW5kbGVyIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICBEYWcuZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm9uaWMgPVxuICAgIERhZy5jYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgaW5cbiAgKGVycm9yIDogZXJyb3JfbG9nKSwgKGxvZ19pbmZvIDogcHJvZmlsaW5nX2luZm8pLCAoY2Fub25pYyA6IGNhbm9uaWNhbF9mb3JtKVxuXG5tb2R1bGUgRXZlbnQgOiBCbGFja19saXN0LkV2ZW50IHdpdGggdHlwZSBldmVudCA9IHN0ZXAgPSBzdHJ1Y3RcbiAgdHlwZSBldmVudCA9IHN0ZXBcbiAgdHlwZSBlaWQgPSBpbnRcbiAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICBsZXQga2V5X29mX2V2ZW50IGV2ZW50ID1cbiAgICBpZlxuICAgICAgKFRyYWNlLnN0ZXBfaXNfcnVsZSBldmVudCB8fCBUcmFjZS5zdGVwX2lzX3BlcnQgZXZlbnQpXG4gICAgICAmJiBub3QgKFRyYWNlLmhhc19jcmVhdGlvbl9vZl9zdGVwIGV2ZW50KVxuICAgIHRoZW5cbiAgICAgIGdldF9pZF9vZl9ldmVudCBldmVudFxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgaW5pdCBlaWQgZGVmYXVsdCA9IEFycmF5Lm1ha2UgZWlkIGRlZmF1bHRcblxuICBsZXQgc2V0IHQgZWlkIHZhbHVlID1cbiAgICBsZXQgKCkgPSBBcnJheS5zZXQgdCBlaWQgdmFsdWUgaW5cbiAgICB0XG5cbiAgbGV0IGdldCB0IGVpZCA9IEFycmF5LmdldCB0IGVpZFxuZW5kXG5cbm1vZHVsZSBCbGFja0xpc3QgOiBCbGFja19saXN0LkJsYWNrbGlzdCB3aXRoIHR5cGUgRXZlbnQuZXZlbnQgPSBzdGVwID1cbkJsYWNrX2xpc3QuTWFrZSAoKEV2ZW50IDogQmxhY2tfbGlzdC5FdmVudCB3aXRoIHR5cGUgZXZlbnQgPSBzdGVwKSlcblxudHlwZSBibGFja19saXN0ID0gQmxhY2tMaXN0LnRcblxubGV0IGNyZWF0ZV9ibGFja19saXN0IG4gPSBCbGFja0xpc3QuaW5pdCBuXG5cbmxldCBibGFja19saXN0IF9wYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gX2hhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB0cmFjZSBibGFja2xpc3QgPVxuICBsZXQgYmxhY2tsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBibGFja2xpc3QgKGV2ZW50LCBfKSAtPiBCbGFja0xpc3QuYmxhY2tfbGlzdCBldmVudCBibGFja2xpc3QpXG4gICAgICBibGFja2xpc3RcbiAgICAgIChnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSlcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3RcblxubGV0IHJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2xpc3QgdHJhY2UgPVxuICBsZXQgbGlzdCwgaW50ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAodHJhY2UsIGludCkgZXZlbnQgLT5cbiAgICAgICAgaWYgQmxhY2tMaXN0LmlzX2JsYWNrX2xpc3RlZCBldmVudCBibGFja2xpc3QgdGhlblxuICAgICAgICAgIHRyYWNlLCBzdWNjIGludFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZXZlbnQgOjogdHJhY2UsIGludClcbiAgICAgIChbXSwgMCkgdHJhY2VcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAoTGlzdC5yZXYgbGlzdCwgaW50KVxuXG5sZXQgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgYmxhY2tsaXN0IHRyYWNlID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAoZnVuIF9wYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAtPlxuICAgICAgICAgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tsaXN0KVxuICAgICAgIE5vbmUgXCJcIiBTdG9yeVByb2ZpbGluZy5SZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuXG5sZXQgbGFzdF9laWRfaW5fcHJldHJhY2UgdHJhY2UgPVxuICBsZXQgbCA9IExpc3QucmV2IChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpIGluXG4gIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IDBcbiAgICB8IGggOjogdCAtPlxuICAgICAgKG1hdGNoIGdldF9pZF9vZl9ldmVudCBoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggdFxuICAgICAgfCBTb21lIGVpZCAtPiBlaWQpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBwb3BfanNvbiA9IFMuUEguQi5QQi5DSS5Qby5LLkgucG9wX2pzb25cblxubGV0IHByb2ZpbGluZ19zdGF0ZV90b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwicHJvZmlsaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfcHJvZmlsaW5nX2xvZ2dlciBwYXJhbWV0ZXJzKSApO1xuICAgIF1cblxubGV0IGVycm9yX2xpc3RfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImVycm9yc1wiLFxuICAgICAgICBMb2dnZXJzLnRvX2pzb24gKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuXG5sZXQgY29tcHV0YXRpb25fc3RlcHNfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNvbXB1dGF0aW9uIHN0ZXBzXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuIiwiKCoqXG4gKiB1dGlsaXRpZXMubWxcbiAqXG4gKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTUtMDMtMjggZmVyZXQ+XG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMTkgMTE6Mjg6MDUgZmVyZXQ+XG4gKlxuICogQVBJIGZvciBjYXVzYWwgY29tcHJlc3Npb24gKGZvciBleHBlcnQpXG4gKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAqXG4gKiBDb3B5cmlnaHQgMjAxNSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlXG4gKiBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBfID0gZGVidWdfbW9kZVxuXG50eXBlIHBhcmFtZXRlcnMgPSB7XG4gIGl0ZXJhdGlvbl9iZWZvcmVfY2FsaWJyYXRpbmc6IGludDtcbiAgZ2xvYmFsX3RpbWVfZmFjdG9yX21pbjogZmxvYXQgb3B0aW9uO1xuICBnbG9iYWxfdGltZV9mYWN0b3JfbWF4OiBmbG9hdCBvcHRpb247XG4gIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9hZnRlcl9mYWN0b3JfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9iZWZvcmVfZmFjdG9yX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21heDogaW50IG9wdGlvbjtcbiAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWluOiBmbG9hdCBvcHRpb247XG4gIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heDogZmxvYXQgb3B0aW9uO1xufVxuXG5sZXQgcGFyYW1ldGVycyA9XG4gIHtcbiAgICBpdGVyYXRpb25fYmVmb3JlX2NhbGlicmF0aW5nID0gMTA7XG4gICAgZ2xvYmFsX3RpbWVfZmFjdG9yX21pbiA9IFNvbWUgNS47XG4gICAgZ2xvYmFsX3RpbWVfZmFjdG9yX21heCA9IFNvbWUgMjAuO1xuICAgIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWluID0gU29tZSAxMDtcbiAgICB0cmFjZV9hZnRlcl9mYWN0b3JfbWluID0gU29tZSAxMDtcbiAgICB0cmFjZV9iZWZvcmVfZmFjdG9yX21heCA9IFNvbWUgNTAwO1xuICAgIHRyYWNlX2FmdGVyX2ZhY3Rvcl9tYXggPSBTb21lIDUwMDtcbiAgICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9taW4gPSBTb21lIDEwLjtcbiAgICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXggPSBTb21lIDUwMC47XG4gIH1cblxudHlwZSBzdGF0dXNfZ2xvYmFsID0ge1xuICBjb3VudGVyX21pbjogaW50O1xuICBnbG9iYWxfdGltZV9taW46IGZsb2F0IG9wdGlvbjtcbiAgZ2xvYmFsX3RpbWVfbWF4OiBmbG9hdCBvcHRpb247XG4gIGNwdV90aW1lX21pbjogZmxvYXQgb3B0aW9uO1xuICBjcHVfdGltZV9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgY3B1X3RpbWVfcmVmOiBmbG9hdCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWY6IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9hZnRlcl9yZWY6IGludCBvcHRpb247XG59XG5cbnR5cGUgc3RhdHVzID0ge1xuICBjb3VudGVyOiBpbnQ7XG4gIGdsb2JhbF90aW1lOiBmbG9hdDtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZTogaW50O1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXI6IGludDtcbiAgY3B1X3RpbWU6IGZsb2F0O1xufVxuXG5sZXQgZ2V0X3N0YXR1c19iZWZvcmUgY291bnRlciB0cmFjZSA9XG4gIHtcbiAgICBjb3VudGVyO1xuICAgIGdsb2JhbF90aW1lID0gU3lzLnRpbWUgKCk7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZSA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIHRyYWNlO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlciA9IDA7XG4gICAgY3B1X3RpbWUgPSAwLjtcbiAgfVxuXG5sZXQgZ2V0X3N0YXR1c19hZnRlciBzdGF0dXNfYmVmb3JlIHRyYWNlID1cbiAge1xuICAgIHN0YXR1c19iZWZvcmUgd2l0aFxuICAgIGNwdV90aW1lID0gU3lzLnRpbWUgKCkgLS4gc3RhdHVzX2JlZm9yZS5nbG9iYWxfdGltZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXIgPSBVdGlsaXRpZXMuc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZTtcbiAgfVxuXG5sZXQgY21wX29wdCBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gMFxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGNtcCBhIGJcblxubGV0IGNtcF9mbG9hdF9vcHQgPSBjbXBfb3B0IChjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50KVxubGV0IGNtcF9pbnRfb3B0ID0gY21wX29wdCAoY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuXG5sZXQgZ2VuX2Jpbl9vcHQgb3AgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IFNvbWUgKG9wIGEgYilcblxubGV0IGFkZF9mbG9hdF9vcHQgPSBnZW5fYmluX29wdCAoICsuIClcbmxldCBtdWx0X2Zsb2F0X29wdCA9IGdlbl9iaW5fb3B0ICggKi4gKVxubGV0IG11bHRfaW50X29wdCA9IGdlbl9iaW5fb3B0ICggKiApXG5cbmxldCBtYXhfb3B0IGNtcCBhIGIgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+IFNvbWUgYlxuICB8IFNvbWUgYSAtPlxuICAgIFNvbWVcbiAgICAgIChpZiBjbXAgYSBiID4gMCB0aGVuXG4gICAgICAgICBhXG4gICAgICAgZWxzZVxuICAgICAgICAgYilcblxubGV0IHN0b3BfYmVmb3JlIGdsb2JhbCBzdGF0dXMgPVxuICBzdGF0dXMuY291bnRlciA+IGdsb2JhbC5jb3VudGVyX21pblxuICAmJiAoY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZSlcbiAgICAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2JlZm9yZV9taW5cbiAgICAgICAgICAgPj0gMClcblxubGV0IHN0b3BfYWZ0ZXIgZ2xvYmFsIHN0YXR1cyA9XG4gIHN0YXR1cy5jb3VudGVyID4gZ2xvYmFsLmNvdW50ZXJfbWluXG4gICYmIChjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuY3B1X3RpbWUpIGdsb2JhbC5jcHVfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcilcbiAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2FmdGVyX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5jcHVfdGltZSkgZ2xvYmFsLmNwdV90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21pblxuICAgICAgICAgICA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXIpXG4gICAgICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9hZnRlcl9taW5cbiAgICAgICAgICAgPj0gMClcblxubGV0IHNldF9zdGF0dXNfaW5pdCBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgZmxvYXQxIGZsb2F0MiBjb3VudGVyID1cbiAge1xuICAgIGNvdW50ZXJfbWluID0gY291bnRlciArIHBhcmFtZXRlcnMuaXRlcmF0aW9uX2JlZm9yZV9jYWxpYnJhdGluZztcbiAgICBnbG9iYWxfdGltZV9taW4gPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgYWRkX2Zsb2F0X29wdCAoU29tZSBmbG9hdDIpXG4gICAgICAgICAgIChtdWx0X2Zsb2F0X29wdFxuICAgICAgICAgICAgICAoU29tZSAoZmxvYXQyIC0uIGZsb2F0MSkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMuZ2xvYmFsX3RpbWVfZmFjdG9yX21pbikpO1xuICAgIGdsb2JhbF90aW1lX21heCA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBhZGRfZmxvYXRfb3B0IChTb21lIGZsb2F0MilcbiAgICAgICAgICAgKG11bHRfZmxvYXRfb3B0XG4gICAgICAgICAgICAgIChTb21lIChmbG9hdDIgLS4gZmxvYXQxKSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVycy5nbG9iYWxfdGltZV9mYWN0b3JfbWF4KSk7XG4gICAgY3B1X3RpbWVfbWluID0gTm9uZTtcbiAgICBjcHVfdGltZV9tYXggPSBOb25lO1xuICAgIGNwdV90aW1lX3JlZiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW4gPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9taW4gPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4ID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4ID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX3JlZiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX3JlZiA9IE5vbmU7XG4gIH1cblxubGV0IHVwZGF0ZV9zdGF0dXNfYmVmb3JlIGdsb2JhbCBzdGF0dXMgPVxuICBpZiBzdGF0dXMuY291bnRlciA8IGdsb2JhbC5jb3VudGVyX21pbiB0aGVuXG4gICAge1xuICAgICAgZ2xvYmFsIHdpdGhcbiAgICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmID1cbiAgICAgICAgbWF4X29wdCBjb21wYXJlIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICAgIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlO1xuICAgIH1cbiAgZWxzZVxuICAgIGdsb2JhbFxuXG5sZXQgdXBkYXRlX3N0YXR1c19hZnRlciBnbG9iYWwgc3RhdHVzID1cbiAgaWYgc3RhdHVzLmNvdW50ZXIgPCBnbG9iYWwuY291bnRlcl9taW4gdGhlblxuICAgIHtcbiAgICAgIGdsb2JhbCB3aXRoXG4gICAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmID1cbiAgICAgICAgbWF4X29wdCBjb21wYXJlIGdsb2JhbC50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXI7XG4gICAgICBjcHVfdGltZV9yZWYgPSBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLmNwdV90aW1lX3JlZiBzdGF0dXMuY3B1X3RpbWU7XG4gICAgfVxuICBlbHNlXG4gICAgZ2xvYmFsXG5cbmxldCBjb21wdXRlX3N0YXR1c19yYW5nZXMgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXIgZ2xvYmFsX3N0YXR1cyA9XG4gIHtcbiAgICBnbG9iYWxfc3RhdHVzIHdpdGhcbiAgICBjcHVfdGltZV9taW4gPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgbXVsdF9mbG9hdF9vcHQgZ2xvYmFsX3N0YXR1cy5jcHVfdGltZV9yZWZcbiAgICAgICAgICAgcGFyYW1ldGVyLmNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21pbik7XG4gICAgY3B1X3RpbWVfbWF4ID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIG11bHRfZmxvYXRfb3B0IGdsb2JhbF9zdGF0dXMuY3B1X3RpbWVfcmVmXG4gICAgICAgICAgIHBhcmFtZXRlci5jb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXgpO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9iZWZvcmVfZmFjdG9yX21pbjtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heCA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYmVmb3JlX2ZhY3Rvcl9tYXg7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21pbiA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9hZnRlcl9mYWN0b3JfbWluO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9tYXggPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYWZ0ZXJfZmFjdG9yX21heDtcbiAgfVxuXG5sZXQgZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyX3doaWxlX3Jlc2hha2luZ190aGVfdHJhY2VcbiAgICBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOl9cbiAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHdlX3NoYWxsXG4gICAgbmV2ZXIgcGFyYW1ldGVycyBnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24gZlxuICAgIChzdG9yZV9yZXN1bHQgOlxuICAgICAgKCBVdGlsaXRpZXMudHJhY2UsXG4gICAgICAgIFV0aWxpdGllcy50cmFjZV9ydW50aW1lX2luZm8gbGlzdCxcbiAgICAgICAgJ2EsXG4gICAgICAgICdhIClcbiAgICAgIFV0aWxpdGllcy50ZXJuYXJ5KSB0cmFjZSAodGFibGUgOiAnYSkgPVxuICBsZXQgZiBjZmxvd19wYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgKGxhc3RfaW5mbywgc3RvcF9uZXh0LCBnbG9iYWxfc3RhdHVzLCBjb3VudGVyLCB0YWJsZSkgPVxuICAgIGlmIHN0b3BfbmV4dCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAobGFzdF9pbmZvLCB0YWJsZSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBzdGF0dXNfYmVmb3JlID0gZ2V0X3N0YXR1c19iZWZvcmUgY291bnRlciB0cmFjZSBpblxuICAgICAgbGV0IHN0b3AgPSBzdG9wX2JlZm9yZSBnbG9iYWxfc3RhdHVzIHN0YXR1c19iZWZvcmUgaW5cbiAgICAgIGxldCBnbG9iYWxfc3RhdHVzID0gdXBkYXRlX3N0YXR1c19iZWZvcmUgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYmVmb3JlIGluXG4gICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGxhc3RfaW5mbywgdGFibGUpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgIGYgY2Zsb3dfcGFyYW1ldGVycyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdGF0dXNfYWZ0ZXIgPSBnZXRfc3RhdHVzX2FmdGVyIHN0YXR1c19iZWZvcmUgdHJhY2UgaW5cbiAgICAgICAgbGV0IHN0b3AgPSBzdG9wX2FmdGVyIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2FmdGVyIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgICBzdG9yZV9yZXN1bHQgY2Zsb3dfcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgIGVycm9yIHRyYWNlIGluZm8gdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxhc3RfaW5mbyA9IFNvbWUgaW5mbyBpblxuICAgICAgICBsZXQgZ2xvYmFsX3N0YXR1cyA9IHVwZGF0ZV9zdGF0dXNfYWZ0ZXIgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYWZ0ZXIgaW5cbiAgICAgICAgbGV0IGdsb2JhbF9zdGF0dXMgPVxuICAgICAgICAgIGlmIGNvdW50ZXIgPSBnbG9iYWxfc3RhdHVzLmNvdW50ZXJfbWluIHRoZW5cbiAgICAgICAgICAgIGNvbXB1dGVfc3RhdHVzX3JhbmdlcyBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgZ2xvYmFsX3N0YXR1c1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGdsb2JhbF9zdGF0dXNcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBTdG9wLnN1Y2Nlc3MgKGxhc3RfaW5mbywgc3RvcCwgZ2xvYmFsX3N0YXR1cywgc3VjYyBjb3VudGVyLCB0YWJsZSkgKVxuICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgY291bnRlciB0cmFjZSB0YWJsZSA9XG4gICAgaWYgVXRpbGl0aWVzLmhhc19vYnMgdHJhY2UgdGhlbiAoXG4gICAgICBsZXQgc3RhcnRfaXRlcmF0aW9uID0gU3lzLnRpbWUgKCkgaW5cbiAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICB0cnkgU29tZSAoZ2xvYmFsX3RyYWNlX3NpbXBsaWZpY2F0aW9uIDAgKGVycm9yLCBsb2dfaW5mbywgdHJhY2UpKVxuICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICBpblxuICAgICAgbWF0Y2ggb3V0cHV0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHRhYmxlXG4gICAgICB8IFNvbWUgKGVycm9yLCBsb2dfaW5mbywgdHJhY2UpIC0+XG4gICAgICAgIGxldCBlbmRfc2ltcGxpZmljYXRpb24gPSBTeXMudGltZSAoKSBpblxuICAgICAgICBsZXQgc3RhdHVzID1cbiAgICAgICAgICBzZXRfc3RhdHVzX2luaXQgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXJzIHN0YXJ0X2l0ZXJhdGlvblxuICAgICAgICAgICAgZW5kX3NpbXBsaWZpY2F0aW9uIGNvdW50ZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0ID1cbiAgICAgICAgICBVdGlsaXRpZXMuZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAgICBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgZXJyb3Igd2Vfc2hhbGwgbmV2ZXIgY291bnRlciBmIHRyYWNlXG4gICAgICAgICAgICAoTm9uZSwgZmFsc2UsIHN0YXR1cywgY291bnRlciwgdGFibGUpXG4gICAgICAgIGluXG4gICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgKGZ1biAoXywgXywgXywgXywgb3V0cHV0KSAtPiBlcnJvciwgbG9nX2luZm8sIG91dHB1dClcbiAgICAgICAgICAoZnVuICgobGFzdF9pbmZvLCB0YWJsZSksIGNvdW50ZXIpIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgIFV0aWxpdGllcy5yZW1vdmVfb2JzX2JlZm9yZSBjZmxvd19wYXJhbWV0ZXJzIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBsYXN0X2luZm8gdHJhY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhdXggbG9nX2luZm8gZXJyb3IgY291bnRlciB0cmFjZSB0YWJsZSlcbiAgICAgICAgICBvdXRwdXRcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGVcbiAgaW5cbiAgYXV4IGxvZ19pbmZvIGVycm9yIDEgdHJhY2UgdGFibGVcbiIsIigqXG4gICogY2Zsb3dfanNfaW50ZXJmYWNlLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTYtMDQtMzAgMTg6MzQ6MDAgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTA0LTMwIDE4OjI0OjAwIGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqICpcbiAgKiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBKYXZhLXNjcmlwdCBzZXJ2ZXJcbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW5cbiAgKiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzXG4gICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgY2Zsb3dfc3RhdGUgPSB7XG4gIHN0ZF9sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIGVycl9sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIHByb2ZpbGluZ19sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIHN0YXR1c19sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIGN1cnJlbnRfcGhhc2U6IHN0cmluZyBvcHRpb247XG4gIHByb2dyZXNzX2JhcjogKGJvb2wgKiBpbnQgKiBpbnQgKiBpbnQpIG9wdGlvbjtcbiAgY2F1c2FsX2Zsb3dzOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICB0cml2aWFsX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICB3ZWFrX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICBzdHJvbmdfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIGVycm9yX2xpc3Q6IFV0aWxpdGllcy5lcnJvcl9sb2cgb3B0aW9uO1xufVxuXG5sZXQgaW5pdCAoKSA9XG4gIHJlZlxuICAgIHtcbiAgICAgIHN0ZF9sb2dnZXIgPSBOb25lO1xuICAgICAgZXJyX2xvZ2dlciA9IE5vbmU7XG4gICAgICBwcm9maWxpbmdfbG9nZ2VyID0gTm9uZTtcbiAgICAgIHN0YXR1c19sb2dnZXIgPSBOb25lO1xuICAgICAgY3VycmVudF9waGFzZSA9IE5vbmU7XG4gICAgICBwcm9ncmVzc19iYXIgPSBOb25lO1xuICAgICAgY2F1c2FsX2Zsb3dzID0gTm9uZTtcbiAgICAgIHRyaXZpYWxfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgd2Vha19jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICBzdHJvbmdfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgZXJyb3JfbGlzdCA9IE5vbmU7XG4gICAgfVxuXG5sZXQgZ2V0X3N0ZF9idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5zdGRfbG9nZ2VyXG5sZXQgZ2V0X2Vycl9idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5lcnJfbG9nZ2VyXG5sZXQgZ2V0X3Byb2ZpbGluZ19idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5wcm9maWxpbmdfbG9nZ2VyXG5sZXQgZ2V0X2JyYW5jaF9hbmRfY3V0X3N0YXR1cyBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0YXR1c19sb2dnZXJcbmxldCBnZXRfcHJvZ3Jlc3NfYmFyIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUucHJvZ3Jlc3NfYmFyXG5sZXQgZ2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5jdXJyZW50X3BoYXNlXG5sZXQgZ2V0X2NhdXNhbF9mbG93X3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuY2F1c2FsX2Zsb3dzXG5sZXQgZ2V0X3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS50cml2aWFsX2NvbXByZXNzaW9uXG5sZXQgZ2V0X3dlYWtfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS53ZWFrX2NvbXByZXNzaW9uXG5sZXQgZ2V0X3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0cm9uZ19jb21wcmVzc2lvblxubGV0IGdldF9lcnJvcl9saXN0IGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuZXJyb3JfbGlzdFxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgc3RyaW5nID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY3VycmVudF9waGFzZSA9IFNvbWUgc3RyaW5nIH1cblxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IGNmbG93X3N0YXRlX3B0ciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGN1cnJlbnRfcGhhc2UgPSBOb25lIH1cblxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyX2F1eCBjZmxvd19zdGF0ZV9wdHIgYmFyID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggcHJvZ3Jlc3NfYmFyID0gU29tZSBiYXIgfVxuXG5sZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eCBjZmxvd19zdGF0ZV9wdHIgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9ncmVzc19iYXIgPSBOb25lIH1cblxubGV0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGNhdXNhbF9mbG93cyA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCB0cml2aWFsX2NvbXByZXNzaW9uID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHdlYWtfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBzdHJvbmdfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfZXJyb3JfbG9nX2F1eCBjZmxvd19zdGF0ZV9wdHIgZXJyb3IgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBlcnJvcl9saXN0ID0gU29tZSBlcnJvciB9XG5cbmxldCByZWRpcmVjdF9zdGRfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHN0ZF9sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IHJlZGlyZWN0X2Vycl9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggZXJyX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9maWxpbmdfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggc3RhdHVzX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgbGlmdCBmIGNmbG93X3N0YXRlX3B0cl9vcHQgZGF0YSA9XG4gIG1hdGNoIGNmbG93X3N0YXRlX3B0cl9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNmbG93X3N0YXRlX3B0ciAtPiBjZmxvd19zdGF0ZV9wdHIgOj0gZiBjZmxvd19zdGF0ZV9wdHIgZGF0YVxuXG5sZXQgbGlmdF9yZXNldCBmIGNmbG93X3N0YXRlX3B0cl9vcHQgPVxuICBsaWZ0IChmdW4geCAoKSAtPiBmIHgpIGNmbG93X3N0YXRlX3B0cl9vcHQgKClcblxubGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IGxpZnQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eFxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBsaWZ0X3Jlc2V0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4XG5sZXQgc2F2ZV9wcm9ncmVzc19iYXIgPSBsaWZ0IHNhdmVfcHJvZ3Jlc3NfYmFyX2F1eFxubGV0IHJlc2V0X3Byb2dyZXNzX2JhciA9IGxpZnRfcmVzZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eFxubGV0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGUgPSBsaWZ0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4XG5sZXQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlX2F1eFxubGV0IHNhdmVfZXJyb3JfbGlzdCA9IGxpZnQgc2F2ZV9lcnJvcl9sb2dfYXV4XG5sZXQgcmVkaXJlY3Rfc3RkX2J1ZmZlciA9IGxpZnQgcmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXhcbmxldCByZWRpcmVjdF9lcnJfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9lcnJfYnVmZmVyX2F1eFxubGV0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXJfYXV4XG5sZXQgcmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXJfYXV4XG4iLCIoKipcbiAgKiBjb21wcmVzc2lvbl9tYWluLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTEtMTAtMTkgMTY6NTI6NTUgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTA2LTEwIDExOjEwOjM0IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIFUgPSBVdGlsaXRpZXNcbm1vZHVsZSBTID0gVS5TXG5cbnR5cGUgc2VjcmV0X2xvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuXG5sZXQgaW5pdF9zZWNyZXRfbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluaXRfbG9nX2luZm9cblxudHlwZSBzZWNyZXRfcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXJcblxubGV0IGJ1aWxkX3BhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguYnVpbGRfcGFyYW1ldGVyXG5sZXQgZ2V0X2xvZ2dlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlclxubGV0IGxvZ19zdGVwID0gdHJ1ZVxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxubGV0IGR1bXBfcHJvZmlsaW5nX2luZm8gPSB0cnVlXG5sZXQgXyA9IGR1bXBfcHJvZmlsaW5nX2luZm9cbmxldCBidWNrZXRfc29ydCA9IHRydWVcblxuKCoqIGZhbHNlIC0+IG9ubHkgdGhlIGZpcnN0IHN0b3J5IHBlciBvYnNlcnZhYmxlIGhpdDsgdHJ1ZSAtPiBhbGwgc3RvcmllcyBwZXIgb2JzIGhpdCAqKVxubGV0IGdldF9hbGxfc3RvcmllcyA9IGZhbHNlXG5cbmxldCBtYXhfbnVtYmVyX29mX2l0dGVyYXRpb25zID0gTm9uZVxubGV0IHdlX3NoYWxsX25vdCBfID0gZmFsc2VcbmxldCB3ZV9zaGFsbCBfID0gdHJ1ZVxubGV0IGRvX25vdF9sb2cgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGZhbHNlXG5cbmxldCBjb21wcmVzc19hbmRfcHJpbnQgcGFyYW1ldGVyIH5kb3RGb3JtYXQgP2pzX2ludGVyZmFjZSBlbnYgbG9nX2luZm8gc3RlcF9saXN0XG4gICAgPVxuICAoKmxldCBjYWxsZWRfZnJvbSA9IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciBpbiopXG4gIGxldCBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgbG9nX3N0ZXAgaW5cbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciBkZWJ1Z19tb2RlIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIG1heF9udW1iZXJfb2ZfaXR0ZXJhdGlvbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILmRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyBwYXJhbWV0ZXJcbiAgICB8IFNvbWUgaSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9pdHRlcmF0aW9uX2JvdW5kIHBhcmFtZXRlciBpXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIGlmIGdldF9hbGxfc3RvcmllcyB0aGVuXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9hbGxfc3Rvcmllc19wZXJfb2JzIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBpZiBidWNrZXRfc29ydCB0aGVuXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnVzZV9idWNrZXRfc29ydCBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnVzZV9mdXNpb25fc29ydCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IG1vZGUgPSBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jb21wcmVzc2lvbl9tb2RlIGluXG4gIGxldCBjYXVzYWxfdHJhY2Vfb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9jYXVzYWxfdHJhY2UgbW9kZSBpblxuICBsZXQgd2Vha19jb21wcmVzc2lvbl9vbiA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3dlYWtfY29tcHJlc3Npb24gbW9kZSBpblxuICBsZXQgc3Ryb25nX2NvbXByZXNzaW9uX29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfc3Ryb25nX2NvbXByZXNzaW9uIG1vZGUgaW5cbiAgbGV0IGVycm9yID0gVS5lcnJvcl9pbml0IGluXG4gIGxldCBoYW5kbGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5pbml0X2hhbmRsZXIgZW52IGluXG4gIGxldCAoKSA9XG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdGFydCwgXCJTdGFydGluZyBDb21wcmVzc2lvblwiKSlcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUxID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMyA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGU0ID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgKCkgPSBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9jYXVzYWxfZmxvd190YWJsZSBqc19pbnRlcmZhY2UgdGFibGUxIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGUyXG4gIGluXG4gIGxldCAoKSA9IENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlIHRhYmxlMyBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGU0XG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X3N0ZF9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X2Vycl9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lXG4gICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlclxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKSlcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgbWF0Y2gganNfaW50ZXJmYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gcGFyYW1ldGVyXG4gICAgfCBTb21lIF9qc19pbnRlcmZhY2VfcHRyIC0+XG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciAoZnVuIHMgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUganNfaW50ZXJmYWNlIHMpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyXG4gICAgICAgICAgKENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3Byb2dyZXNzX2JhciBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3Jlc2V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlc2V0X3Byb2dyZXNzX2JhciBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3NhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9lcnJvcl9saXN0IGpzX2ludGVyZmFjZSBlcnJvcilcbiAgICAgIGluXG4gICAgICBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX25vbmUgcGFyYW1ldGVyIGluXG4gIGxldCBwYXJhbWV0ZXJfY2F1c2FsID1cbiAgICBpZiBjYXVzYWxfdHJhY2Vfb24gdGhlblxuICAgICAgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zaHV0X2Rvd25fc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXJfd2VhayA9XG4gICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlcl9zdHJvbmcgPVxuICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cblxuICBsZXQgZW1wdHlfY29tcHJlc3Npb24gPSBlcnJvciwgbG9nX2luZm8sIHRhYmxlMSwgdGFibGUyLCB0YWJsZTMsIHRhYmxlNCBpblxuICBsZXQgc3RlcF9saXN0ID0gVS50cmFjZV9vZl9wcmV0cmFjZSBzdGVwX2xpc3QgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsLCBfdHJpdmlhbCwgd2Vhaywgc3Ryb25nID1cbiAgICBpZlxuICAgICAgKG5vdCBjYXVzYWxfdHJhY2Vfb24pICYmIChub3Qgd2Vha19jb21wcmVzc2lvbl9vbilcbiAgICAgICYmIG5vdCBzdHJvbmdfY29tcHJlc3Npb25fb25cbiAgICB0aGVuXG4gICAgICBlbXB0eV9jb21wcmVzc2lvblxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RlcF9saXN0ID1cbiAgICAgICAgVS5yZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgc3RlcF9saXN0XG4gICAgICBpblxuICAgICAgaWYgbm90IChVLmhhc19vYnMgc3RlcF9saXN0KSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIrIE5vIGNhdXNhbCBmbG93IGZvdW5kQC5cIlxuICAgICAgICBpblxuICAgICAgICBlbXB0eV9jb21wcmVzc2lvblxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgKGlmIHdlYWtfY29tcHJlc3Npb25fb24gfHwgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgICAgICAgICAgIFwiKyBQcm9kdWNpbmcgY2F1c2FsIGNvbXByZXNzaW9uc0AuXCJcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBcIisgUHJvZHVjaW5nIGNhdXNhbCB0cmFjZXNALlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGFzdF9laWQgPSBVLmxhc3RfZWlkX2luX3ByZXRyYWNlIHN0ZXBfbGlzdCBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGVwX2xpc3QgPVxuICAgICAgICAgIFUuc3BsaXRfaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogY2F1c2FsIGNvbXByZXNzaW9uIHdpdGhvdXQgYW55IHNpbXBsaWZpY2F0aW9uIChqdXN0IHBhcnRpYWwgb3JkZXIgY29tcHJlc3Npb24pKilcbiAgICAgICAgKCogdGhpcyBpcyB2ZXJ5IGNvc3RseSwgYW5kIG1haW5seSBmb3IgdGVhY2hpbmcgcHVycG9zZSAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfdGFibGUgPVxuICAgICAgICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuIChcbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfY2F1c2FsIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gYmxhY2tib2FyZCBnZW5lcmF0aW9uQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0ZXBfbGlzdCA9XG4gICAgICAgICAgICAgIFUubWFrZV91bmFtYmlndW91cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgVS5jb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgJiYgbG9nX3N0ZXAgdGhlblxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlxcdCAtIHByZXR0eSBwcmludGluZyB0aGUgZ3JpZEAuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8sIGVycm9yID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBVLmV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIFwiYVwiIDAgMCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBVLnByaW50X211c2ljYWxfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsb2dfaW5mbywgZXJyb3JcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgIFUuZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuX3N0b3JpZXMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gY29tcHV0aW5nIGNhdXNhbCBwYXN0IG9mIGVhY2ggb2JzZXJ2ZWQgZXZlbnRzICglaSlALlwiXG4gICAgICAgICAgICAgICAgICBuX3N0b3JpZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0XFx0ICogY2F1c2FsIGNvbXByZXNzaW9uIEAuXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCpcdFx0bGV0IGxvZ19pbmZvID0gVS5TLlBILkIuUEIuQ0kuUG8uSy5QLnNldF9zdGFydF9jb21wcmVzc2lvbiBsb2dfaW5mbyBpbiAqKVxuICAgICAgICAgICAgICAoKiBXZSB1c2UgdGhlIGdyaWQgdG8gZ2V0IHRoZSBjYXVzYWwgcHJlY2VkZW5jZSAocHJlZCogKSBvZiBlYWNoIG9ic2VydmFibGUgKilcbiAgICAgICAgICAgICAgbGV0IGdyaWQgPSBVLmNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHN0ZXBfbGlzdCBoYW5kbGVyIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGVucmljaGVkX2dyaWQgPVxuICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICAuZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2ZfZWFjaF9ub2RlX3dpdGhvdXRfYV9wcm9ncmVzc19iYXJcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBQYXJhbWV0ZXIubG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGxvZ2dlciAtPlxuICAgICAgICAgICAgICAgICAgICBDYXVzYWwucHJpbnRfc3RhdCBsb2dnZXIgcGFyYW1ldGVyIGhhbmRsZXIgZW5yaWNoZWRfZ3JpZFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0IC0gY2F1c2FsIGZsb3cgY29tcHJlc3Npb24gKCVpKUAuXCIgbl9zdG9yaWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIHdlIGZvbGQgdGhlIGxpc3Qgb2Ygb2JlcnZhYmxlIGhpdCwgYW5kIGZvciBlYWNoIG9uZSBjb2xsZWN0IHRoZSBjYXVzYWwgcGFzdCAqKVxuICAgICAgICAgICAgICBVLmZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIH5ldmVudDpTdG9yeVByb2ZpbGluZy5Db2xsZWN0X3RyYWNlc1xuICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl9cbiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RvcnlfbGlzdCBvYnNlcnZhYmxlX2lkIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXHRcXHQgKiBjYXVzYWwgY29tcHJlc3Npb24gQC5cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgb25lIGNhdXNhbCBjb21wcmVzc2lvblwiICkpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uID1cbiAgICAgICAgICAgICAgICAgICAgVS5jYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGVfaGl0IHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgXCJjb21wcmVzc2lvbl9tYWluLCBsaW5lIDIwMTRcIiBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgZW5yaWNoZWRfZ3JpZCBvYnNlcnZhYmxlX2lkXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFUuZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWRcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGluZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuZ2V0X2NvdW50ZXIgc3RvcnlfbGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgWyBpbmZvIF1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfYXJyYXkgPVxuICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgdHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uIGluZm8gc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X2FycmF5KVxuICAgICAgICAgICAgICAgIHRhYmxlMSAoTGlzdC5yZXYgbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV9saXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdFxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTFcbiAgICAgICAgaW5cbiAgICAgICAgKCogTm93IGNhdXNhbCBjb21wcmVzc2lvbiwgd2l0aCBkZXRlY3Rpb24gb2Ygc2lwaG9ucyAmIGRldGVjdGlvbiBvZiBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgbGV0IHBhcmFtZXRlcl9kZWVwZXIgPVxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2thc2FfcGFyYW1ldGVyc1xuICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMudXBkYXRlX3ByZWZpeFxuICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBcIlxcdFxcdFxcdFwiKVxuICAgICAgICAgICAgcGFyYW1ldGVyX2NhdXNhbFxuICAgICAgICBpblxuICAgICAgICBsZXQgb25lX2l0ZXJhdGlvbl9vZl9jb21wcmVzc2lvbiAobG9nX2luZm8sIGVycm9yLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCA9XG4gICAgICAgICAgICBpZiBHcmFwaF9jbG9zdXJlLmlnbm9yZV9mbG93X2Zyb21fb3V0Z29pbmdfc2lwaG9uIHRoZW5cbiAgICAgICAgICAgICAgVS5maWxsX3NpcGhvbiBwYXJhbWV0ZXJfZGVlcGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiBVLnByaW50X3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGV2ZW50X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QgPVxuICAgICAgICAgICAgaWYgUGFyYW1ldGVyLmRvX2dsb2JhbF9jdXQgdGhlblxuICAgICAgICAgICAgICBVLmN1dCBwYXJhbWV0ZXJfZGVlcGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUGFyYW1ldGVyLmN1dF9wc2V1ZG9faW52ZXJzZV9ldmVudCB0aGVuXG4gICAgICAgICAgICBVLnJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgcGFyYW1ldGVyX2RlZXBlclxuICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgIGluXG4gICAgICAgICgqIFRoaXMgZm9uY3Rpb24gaXRlciB0aGUgY2F1c2FsIGNvbXByZXNzaW9uIHVudGlsIGEgZml4cG9pbnQgaXMgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgc2l6ZSA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgcGFyYW1ldGVyXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZSBrJyB3aGVuIGsgPj0gaycgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHQtIG1heCBudW1iZXIgb2YgaXRlcmF0aW9ucyByZWFjaGVkLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHRcXHQtIHN0YXJ0IGl0ZXJhdGlvbiAlaSwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAoayArIDEpIHNpemVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgIChvbmVfaXRlcmF0aW9uX29mX2NvbXByZXNzaW9uIChsb2dfaW5mbywgZXJyb3IsIGV2ZW50X2xpc3QpKVxuICAgICAgICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiJXNcXHQtIGl0ZXJhdGlvbnMgc3RvcHBlZCBieSB0aGUgZW5kLXVzZXIsICVpIGV2ZW50cyBcXFxuICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgICAgfCBTb21lIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnKSAtPlxuICAgICAgICAgICAgICBpZiBVLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdCcgPCBVLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IChrICsgMSkgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCcpXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiJXNcXHQtIGEgZml4cG9pbnQgaGFzIGJlZW4gcmVhY2hlZCwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnXG4gICAgICAgICAgICAgICkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIlc1xcdC0gc2ltcGxpZnkgdGhlIHRyYWNlLCAlaSBldmVudHMgQC5cIlxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgKFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB8fCBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfYmxhY2tsaXN0X2V2ZW50cyBwYXJhbWV0ZXIgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfd2VhayBpblxuICAgICAgICAgICAgICBsZXQgYmxhY2tsaXN0ID0gVS5jcmVhdGVfYmxhY2tfbGlzdCAobGFzdF9laWQgKyAxKSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtfc3RvcnlfdGFibGUpID1cbiAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0XG4gICAgICAgICAgICAgICAgLmZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2Jhcl93aGlsZV9yZXNoYWtpbmdfdGhlX3RyYWNlXG4gICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB3ZV9zaGFsbCB3ZV9zaGFsbF9ub3RcbiAgICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnQucGFyYW1ldGVycyBhdXhcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgcmVtb3ZlIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBjb2xsZWN0aW5nIG9uZSBuZXcgdHJhY2VcIiApKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5yZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIChkb19ub3RfbG9nIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgY29tcHV0ZSBjYXVzYWwgY29tcHJlc3Npb24gKilcbiAgICAgICAgICAgICAgICAgICAgVS5jdXQgKGRvX25vdF9sb2cgcGFyYW1ldGVyKSB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIgPVxuICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tsaXN0IHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIFUud2Vha2x5X2NvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMykgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvIHRhYmxlM1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuYmxhY2tfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGUyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlM1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKSlcbiAgICAgICAgICAgICAgICAgIHN0ZXBfbGlzdFxuICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgd2Vha19zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfY2F1c2FsIGluXG4gICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydFxuICAgICAgICAgICAgICAgIC5mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJfd2hpbGVfcmVzaGFraW5nX3RoZV90cmFjZVxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3Igd2Vfc2hhbGwgd2Vfc2hhbGxfbm90XG4gICAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0LnBhcmFtZXRlcnMgYXV4XG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIHdlIHJlbW92ZSBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU3RvcnlfanNvbi5JbnByb2dyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgY29sbGVjdGluZyBvbmUgbmV3IHRyYWNlXCIgKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICAgICAgICAgIFUucmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIHdlIGNvbXB1dGUgY2F1c2FsIGNvbXByZXNzaW9uICopXG4gICAgICAgICAgICAgICAgICAgIFUuY3V0IChkb19ub3RfbG9nIHBhcmFtZXRlcikgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5mbyB0cmFjZSB0YWJsZSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGluZm8sIHRhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluZm8gdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBpbmZvLCB0YWJsZSlcbiAgICAgICAgICAgICAgICAgIHN0ZXBfbGlzdCB0YWJsZTJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbl9jYXVzYWxfc3RvcmllcyA9IFUuY291bnRfc3RvcmllcyBjYXVzYWxfc3RvcnlfdGFibGUgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgd2Vha2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3dlYWsgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlxcdCAtIHdlYWsgZmxvdyBjb21wcmVzc2lvbiAoJWkpQC5cIiBuX2NhdXNhbF9zdG9yaWVzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgYmxhY2tsaXN0ID0gVS5jcmVhdGVfYmxhY2tfbGlzdCAobGFzdF9laWQgKyAxKSBpblxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fd2VhayBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfYmxhY2tsaXN0LCB3ZWFrbHlfc3RvcnlfdGFibGUpID1cbiAgICAgICAgICAgICAgICAgIFUuZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBcIndlYWsgY29tcHJlc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgbGlzdF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgc3RvcnlfbGlzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFUud2Vha2x5X2NvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlIGxpc3RfaW5mbyBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2Ugc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tsaXN0LCBzdG9yeV9saXN0KSlcbiAgICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlIChibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIsIHRhYmxlM1xuICAgICAgICBpblxuICAgICAgICBsZXQgbl93ZWFrX3N0b3JpZXMgPSBVLmNvdW50X3N0b3JpZXMgd2Vha2x5X3N0b3J5X3RhYmxlIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICBpZiBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlbiAoXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3N0cm9uZyBpblxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwYXJhbWV0ZXJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIlxcdCAtIHN0cm9uZyBmbG93IGNvbXByZXNzaW9uICglaSlALlwiIG5fd2Vha19zdG9yaWVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICBVLmZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBcInN0cm9uZ19jb21wcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86X1xuICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciByZWZpbmVkX2V2ZW50X2xpc3QgbGlzdF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICBzdHJvbmdseV9zdG9yeV90YWJsZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgIFUuY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICByZWZpbmVkX2V2ZW50X2xpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9pbmZvIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSlcbiAgICAgICAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGUgdGFibGU0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlNFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGNhdXNhbF90YWJsZSxcbiAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGUsXG4gICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlLFxuICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlIClcbiAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhdXNhbFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIlwiIFwiXCJcbiAgICAgICAgICBleHBvcnRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igd2Vha1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIldlYWtseVwiXG4gICAgICAgICAgXCJ3ZWFrbHkgXCIgZXhwb3J0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBfbG9nX2luZm8gPVxuICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0cm9uZ1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIlN0cm9uZ2x5XCJcbiAgICAgICAgICBcInN0cm9uZ2x5IFwiIGV4cG9ydFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdWNjZXNzLCBcIkNvbXByZXNzaW9uIGNvbXBsZXRlZFwiKSlcbiAgaW5cbiAgbGV0IF8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfbG9nZ2VyXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgaW5cbiAgbGV0IF8gPVxuICAgIEV4Y2VwdGlvbi5wcmludF9mb3JfS2FTaW1cbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3JcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvbl9tZXNzYWdlIH5ub25lIH53ZWFrIH5zdHJvbmcgfnNlbmRfbWVzc2FnZSA9XG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIHJlZlxuICAgICAgKENvbXByZXNzaW9uX21haW4uYnVpbGRfcGFyYW1ldGVyXG4gICAgICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIH5zZW5kX21lc3NhZ2Ugfm5vbmUgfndlYWtcbiAgICAgICAgIH5zdHJvbmcgKCkpXG4gIGluXG4gIGZ1biB0ZXh0IC0+XG4gICAgdHJ5XG4gICAgICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgXCJDT05GSUdcIiAtPlxuICAgICAgICAgICAgbGV0IGNvbmYgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9qc29uIHN0IGIgaW5cbiAgICAgICAgICAgIGxldCBub25lID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vbmVcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgd2VhayA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ3ZWFrXCIgY29uZilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gd2Vha1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHN0cm9uZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJzdHJvbmdcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdHJvbmdcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBhcmFtZXRlciA6PVxuICAgICAgICAgICAgICAgIENvbXByZXNzaW9uX21haW4uYnVpbGRfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIH5zZW5kX21lc3NhZ2VcbiAgICAgICAgICAgICAgICAgIH5ub25lIH53ZWFrIH5zdHJvbmcgKClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIHwgXCJSVU5cIiAtPlxuICAgICAgICAgICAgbGV0IGVudiwgc3RlcHMgPVxuICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgICAgIChUcmFjZS5mb2xkX3RyYWNlXG4gICAgICAgICAgICAgICAgICAgKGZ1biBfZW52IHN0ZXBzIHN0ZXAgLT4gc3RlcCA6OiBzdGVwcylcbiAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gW10pKVxuICAgICAgICAgICAgICAgIHN0IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBDb21wcmVzc2lvbl9tYWluLmNvbXByZXNzX2FuZF9wcmludCAhcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgfmRvdEZvcm1hdDpDYXVzYWwuSHRtbCBlbnZcbiAgICAgICAgICAgICAgICAoQ29tcHJlc3Npb25fbWFpbi5pbml0X3NlY3JldF9sb2dfaW5mbyAoKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgc3RlcHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5qc29uX2Vycm9yIChcIkludmFsaWQgS2FTdG9yIG1lc3NhZ2U6IFwiIF4geCkpKVxuICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyB0ZXh0KVxuICAgIHdpdGggZSAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmVwcmludGYgXCIlc0AuXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKSBpblxuICAgICAgKCkgKCpUT0RPKilcbiIsInR5cGUgJ2Egc3VwZXJsaXN0ID0gRWx0IG9mICdhIHwgU3VwZXJfbGlzdCBvZiAnYSBzdXBlcmxpc3QgbGlzdCBsaXN0XG5cbmxldCByZWMgZm9sZCBmIGEgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IEVsdCBlbHQgLT4gZiBhIGVsdFxuICB8IFN1cGVyX2xpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCAoTGlzdC5mb2xkX2xlZnQgKGZvbGQgZikpIGEgbFxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIGwyIHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IF8gLT4gLTEpXG4gIHwgaDEgOjogdDEgLT5cbiAgICAobWF0Y2ggbDIgd2l0aFxuICAgIHwgW10gLT4gMVxuICAgIHwgaDIgOjogdDIgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlIGgxIGgyIGluXG4gICAgICAobWF0Y2ggY21wIHdpdGhcbiAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSB0MSB0MlxuICAgICAgfCBfIC0+IGNtcCkpXG5cbmxldCByZWMgY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBFbHQgYSwgRWx0IGIgLT4gY29tcGFyZSBhIGJcbiAgfCBTdXBlcl9saXN0IGEsIFN1cGVyX2xpc3QgYiAtPlxuICAgIGNvbXBhcmVfbGlzdCAoY29tcGFyZV9saXN0IChjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlKSkgYSBiXG4gIHwgRWx0IF8sIFN1cGVyX2xpc3QgXyAtPiAtMVxuICB8IFN1cGVyX2xpc3QgXywgRWx0IF8gLT4gMVxuXG5sZXQgcmVjIHNvcnQgY29tcGFyZSBzdXBlcmxpc3QgPVxuICBtYXRjaCBzdXBlcmxpc3Qgd2l0aFxuICB8IEVsdCBhIC0+IEVsdCBhXG4gIHwgU3VwZXJfbGlzdCBhIC0+XG4gICAgU3VwZXJfbGlzdFxuICAgICAgKExpc3QucmV2X21hcFxuICAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIGxldCBsJyA9IExpc3QucmV2X21hcCAoc29ydCBjb21wYXJlKSBsIGluXG4gICAgICAgICAgIGxldCBsJyA9IExpc3Quc29ydCAoY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSkgbCcgaW5cbiAgICAgICAgICAgbCcpXG4gICAgICAgICAoTGlzdC5yZXYgYSkpXG5cbmxldCBkdW1wX3N1cGVyX2xpc3QgZiBzIGwgPVxuICBsZXQgcmVjIGF1eCBkZXB0aCBmIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgRWx0IGEgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzJWFALFwiIGRlcHRoIHMgYVxuICAgIHwgU3VwZXJfbGlzdCBsIC0+XG4gICAgICBQcC5saXN0IFBwLmN1dFxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AsJWFcIiBkZXB0aFxuICAgICAgICAgICAgKFBwLmxpc3QgUHAuY3V0IChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJXNALCVhXCIgZGVwdGggKGF1eCAoXCItLVwiIF4gZGVwdGgpKSBsKSlcbiAgICAgICAgICAgIGwpXG4gICAgICAgIGYgbFxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdQC5cIiAoYXV4IFwiLT5cIikgbFxuXG50eXBlICdhIGluZm8gPSB7IHByZWRfMTogaW50IGxpc3Q7IGNvbmZsaWN0XzE6IGludCBsaXN0OyBsYWJlbDogJ2E7IGRlcHRoOiBpbnQgfVxuXG5sZXQgY29tcGFyZV9mc3RfdHJpcGxlIChhLCBfLCBfKSAoYiwgXywgXykgPSBjb21wYXJlIGEgYlxuXG5sZXQgc21hc2ggY29tcGFyZSBsID1cbiAgbGV0IHJlYyBhdXggdG9fZG8gb2xkIGN1cnJlbnQgYWNjdSA9XG4gICAgbWF0Y2ggdG9fZG8gd2l0aFxuICAgIHwgW10gLT4gY3VycmVudCA6OiBhY2N1XG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGNvbXBhcmUgaCBvbGQgPSAwIHRoZW5cbiAgICAgICAgYXV4IHQgb2xkIChoIDo6IGN1cnJlbnQpIGFjY3VcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4IHQgaCBbIGggXSAoY3VycmVudCA6OiBhY2N1KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBFbHQgYSAtPiBFbHQgYVxuICB8IFN1cGVyX2xpc3QgbCAtPlxuICAgIFN1cGVyX2xpc3RcbiAgICAgIChMaXN0LnJldlxuICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjY3UgbCAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgaCA6OiB0IC0+IGF1eCB0IGggWyBoIF0gYWNjdSlcbiAgICAgICAgICAgIFtdIGwpKVxuXG4oKmxldCBsID1cbiAgICBTdXBlcl9saXN0XG4gICAgICBbXG4gICAgICAgIFtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFtFbHQgKDIsMCwwKTtFbHQgKDMsMCwwKTtFbHQgKDQsMCwwKV07XG4gICAgICAgICAgICAgIFtFbHQgKDEsMSwxKTtFbHQgKDIsMSwxKTtFbHQgKDMsMSwxKV07XG4gICAgICAgICAgICAgIFtFbHQgKDIsMiwyKTtFbHQgKDQsMiwyKTtFbHQgKDUsMywzKV07XG4gICAgICAgICAgICAgIFtFbHQgKDEsNCw0KTtFbHQgKDIsNCw0KTtFbHQgKDMsNCw0KV1dO1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtbRWx0ICgxLDUsNSk7RWx0ICgyLDUsNSldXTtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbW0VsdCAoMSw2LDYpO0VsdCAoMiw2LDYpXV1dXTs7XG5cbiAgbGV0IGR1bXBfdHJpcGxlIChhLGIsYykgPSAgIChcIihcIl4oc3RyaW5nX29mX2ludCBhKV5cIixcIl4oc3RyaW5nX29mX2ludCBiKV5cIixcIl4oc3RyaW5nX29mX2ludCBjKV5cIilcIilcblxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsXG4gIGxldCBsMSA9IHNvcnQgY29tcGFyZV9mc3RfdHJpcGxlIGxcbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbDFcbiAgbGV0IGwyID0gc21hc2ggKGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmVfZnN0X3RyaXBsZSkgbDFcbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbDIgKilcbigqXG5sZXQgbm9ybWFsX2Zvcm0gcm9vdCBjb21wYXJlIGYgPSBcbiAgbGV0IGRlYWxfd2l0aF9lbHQgZWx0ID0gXG4gICAgbGV0IGluZm8gPSBmIHggaW4gXG4gICAgbGV0IG5vZGUgPSAoaW5mby5sYWJlbCxpbmZvLmRlcHRoLExpc3QubGVuZ3RoIGluZm8ucHJlZF8xLExpc3QubGVuZ3RoIGluZm8uY29uZmxpY3RfMSkgaW4gXG4gICAgbm9kZSxpbmZvLnByZWRfMSxpbmZvLmNvbmZsaWN0XzEgXG4gIGluIFxuXG4gIFxuICBsZXQgcmVjIGF1eCBjdXJyZW50X2xheWVyIG5leHRfbGF5ZXIgYWNjdSA9IFxuICAgIG1hdGNoIFxuICAgICAgY3VycmVudF9sYXllciBcbiAgICB3aXRoIFxuICAgIHwgTGlzdCBsICAtPiBcblxuICAgIHwgU3VwZXJfbGlzdCBsIC0+IFxuICAgICAgICBsZXQgZXh0ZW5kZWRfbGlzdCA9IExpc3QucmV2X21hcCBkZWFsX3dpdGhfZWx0IGwgaW4gXG4gICAgICAgIGxldCBzb3J0ZWRfbGlzdCA9IExpc3Quc29ydCBjb21wYXJlX2ZzdF90cmlwbGUgZXh0ZW5kZWRfbGlzdCBpbiBcbiAgICAgICAgbGV0IHNtYXNoX2xpc3QgPSBzbWFzaCBjb21wYXJlX2ZzdF90cmlwbGUgZXh0ZW5kZWRfbGlzdCBpbiBcbiAgICAgICAgbGV0IGluZm9fb2YgeCA9IFxuICAgICAgICAgIGxldCBpbmZvID0gZiB4IGluIFxuICAgICAgICAgIChpbmZvLmxhYmVsLGluZm8uZGVwdGgsTGlzdC5sZW5ndGggaW5mby5wcmVkXzEsTGlzdC5sZW5ndGggaW5mby5jb25mbGljdF8xKVxuICAgICAgICBpbiBcbiAgICAgICAgXG4gICAgICAgICAgXG4gICAgICBlbmRcbiAgICB8IEh1YiBsIC0+IFxuICAgICAgYmVnaW4gXG4gICAgICBlbmQgXG4gICAgICAgIFxuKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbigqIEhlbHBlciBmdW5jdGlvbnMgZm9yIHJlc3VsdCAqKVxubGV0IGVycm9yX21zZyA/KHNldmVyaXR5ID0gTG9ncy5FcnJvcikgP3JhbmdlIHRleHQgOiBSZXN1bHRfdXRpbC5tZXNzYWdlID1cbiAgeyBSZXN1bHRfdXRpbC5zZXZlcml0eTsgUmVzdWx0X3V0aWwudGV4dDsgUmVzdWx0X3V0aWwucmFuZ2UgfVxuXG5sZXQgZXJyX3Jlc3VsdF9vZl9zdHJpbmcgP3NldmVyaXR5ID9yYW5nZSA/cmVzdWx0X2NvZGUgKG1lc3NhZ2UgOiBzdHJpbmcpIDpcbiAgICAnb2sgQXBpLnJlc3VsdCA9XG4gIFJlc3VsdF91dGlsLmVycm9yID9zdGF0dXM6cmVzdWx0X2NvZGUgWyBlcnJvcl9tc2cgP3NldmVyaXR5ID9yYW5nZSBtZXNzYWdlIF1cblxubGV0IGVycl9yZXN1bHRfb2ZfbXNncyA/cmVzdWx0X2NvZGUgbWVzc2FnZXMgOiAnb2sgQXBpLnJlc3VsdCA9XG4gIFJlc3VsdF91dGlsLmVycm9yID9zdGF0dXM6cmVzdWx0X2NvZGUgbWVzc2FnZXNcblxubGV0IGVycl9yZXN1bHRfb2ZfbXNnID9yZXN1bHRfY29kZSBtZXNzYWdlIDogJ29rIEFwaS5yZXN1bHQgPVxuICBlcnJfcmVzdWx0X29mX21zZ3MgP3Jlc3VsdF9jb2RlIFsgbWVzc2FnZSBdXG5cbmxldCBlcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiA/c2V2ZXJpdHkgP3Jlc3VsdF9jb2RlIChlIDogZXhuKSA6ICdvayBBcGkucmVzdWx0ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIHRyeSBQcmludGV4Yy50b19zdHJpbmcgZSB3aXRoIF8gLT4gXCJ1bnNwZWNpZmllZCBleGNlcHRpb24gdGhyb3duXCJcbiAgaW5cbiAgZXJyX3Jlc3VsdF9vZl9zdHJpbmcgP3NldmVyaXR5ID9yZXN1bHRfY29kZSBtZXNzYWdlXG5cbmxldCBtZXNzYWdlX29mX2NhdWdodF9leGNlcHRpb24gP3NldmVyaXR5IGNhdWdodF9leGNlcHRpb24gPVxuICBlcnJvcl9tc2cgP3NldmVyaXR5XG4gICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX2NhdWdodCBjYXVnaHRfZXhjZXB0aW9uKVxuXG5sZXQgbWVzc2FnZV9vZl91bmNhdWdodF9leGNlcHRpb24gP3NldmVyaXR5IHVuY2F1Z2h0X2V4Y2VwdGlvbiA9XG4gIGVycm9yX21zZyA/c2V2ZXJpdHlcbiAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIucHBfdW5jYXVnaHRcbiAgICAgICB1bmNhdWdodF9leGNlcHRpb24pXG5cbmxldCBtZXNzYWdlc19vZl9leGNlcHRpb25zID8oc2V2ZXJpdHkgOiBMb2dzLmxldmVsIG9wdGlvbilcbiAgICAoZXhjcyA6IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5leGNlcHRpb25zX2NhdWdodF9hbmRfdW5jYXVnaHQpIDpcbiAgICBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QgPVxuICBsZXQgdW5jYXVnaHQgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXhjc1xuICBpblxuICBsZXQgY2F1Z2h0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdF90b191aSBleGNzXG4gIGluXG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4geCBsIC0+IG1lc3NhZ2Vfb2ZfY2F1Z2h0X2V4Y2VwdGlvbiA/c2V2ZXJpdHkgeCA6OiBsKVxuICAgIGNhdWdodFxuICAgIChMaXN0Lm1hcCAobWVzc2FnZV9vZl91bmNhdWdodF9leGNlcHRpb24gP3NldmVyaXR5KSB1bmNhdWdodClcblxubGV0IGVycl9yZXN1bHRfb2ZfZXhjZXB0aW9ucyA/KHNldmVyaXR5IDogTG9ncy5sZXZlbCBvcHRpb24pXG4gICAgPyhyZXN1bHRfY29kZSA6IFJlc3VsdF91dGlsLnN0YXR1cyBvcHRpb24pXG4gICAgKGV4Y3MgOiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZXhjZXB0aW9uc19jYXVnaHRfYW5kX3VuY2F1Z2h0KSA6XG4gICAgJ2EgQXBpLnJlc3VsdCA9XG4gIGVycl9yZXN1bHRfb2ZfbXNncyA/cmVzdWx0X2NvZGUgKG1lc3NhZ2VzX29mX2V4Y2VwdGlvbnMgP3NldmVyaXR5IGV4Y3MpXG5cbmxldCByZXN1bHRfYmluZF93aXRoX2x3dCA6XG4gICAgb2s6KCdvayAtPiAnYV9vayBBcGkubHd0X3Jlc3VsdCkgLT4gJ29rIEFwaS5yZXN1bHQgLT4gJ2Ffb2sgQXBpLmx3dF9yZXN1bHQgPVxuIGZ1biB+KG9rIDogJ29rIC0+ICdhX29rIEFwaS5sd3RfcmVzdWx0KSB7IFJlc3VsdF91dGlsLnZhbHVlOyBzdGF0dXMgfSAtPlxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgUmVzdWx0Lk9rIGRhdGEgLT4gb2sgZGF0YVxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEx3dC5yZXR1cm4geyBSZXN1bHRfdXRpbC52YWx1ZSA9IFJlc3VsdC5FcnJvciBlOyBzdGF0dXMgfVxuXG5sZXQgcmVjIHJlc3VsdF9mb2xkX3dpdGhfbHd0IDpcbiAgICBmOignb2sgQXBpLnJlc3VsdCAtPiAndmFsdWUgLT4gJ29rIEFwaS5sd3RfcmVzdWx0KSAtPlxuICAgIGlkOidvayBBcGkucmVzdWx0IC0+XG4gICAgJ3ZhbHVlIGxpc3QgLT5cbiAgICAnYV9vayBBcGkubHd0X3Jlc3VsdCA9XG4gZnVuIH4oZiA6ICdvayBBcGkucmVzdWx0IC0+ICd2YWx1ZSAtPiAnb2sgQXBpLmx3dF9yZXN1bHQpXG4gICAgIH4oaWQgOiAnb2sgQXBpLnJlc3VsdCkgKGwgOiAndmFsdWUgbGlzdCkgLT5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTHd0LnJldHVybiBpZFxuICB8IGggOjogdCAtPiBmIGlkIGggPj49IGZ1biByZXN1bHQgLT4gcmVzdWx0X2ZvbGRfd2l0aF9sd3QgfmYgfmlkOnJlc3VsdCB0XG5cbmxldCByZXN1bHRfYmluZF9sd3QgOlxuICAgIG9rOignb2sgLT4gJ2Ffb2sgQXBpLmx3dF9yZXN1bHQpIC0+XG4gICAgJ29rIEFwaS5sd3RfcmVzdWx0IC0+XG4gICAgJ2Ffb2sgQXBpLmx3dF9yZXN1bHQgPVxuIGZ1biB+KG9rIDogJ29rIC0+ICdhX29rIEFwaS5sd3RfcmVzdWx0KSBsd3RfcmVzdWx0IC0+XG4gIGx3dF9yZXN1bHQgPj49IHJlc3VsdF9iaW5kX3dpdGhfbHd0IH5va1xuXG5sZXQgcmVjIHJlc3VsdF9jb21iaW5lIDogdW5pdCBBcGkucmVzdWx0IGxpc3QgLT4gdW5pdCBBcGkucmVzdWx0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBSZXN1bHRfdXRpbC5vayAoKVxuICB8IGwgOjogdCAtPlxuICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgIH5vazooZnVuICgpIC0+IHJlc3VsdF9jb21iaW5lIHQpXG4gICAgICB+ZXJyb3I6KGZ1biBkYXRhXzEgLT5cbiAgICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgIH5vazooZnVuICgpIC0+IGwpXG4gICAgICAgICAgfmVycm9yOihmdW4gZGF0YV9yIC0+XG4gICAgICAgICAgICBSZXN1bHRfdXRpbC5lcnJvciB+c3RhdHVzOmwuUmVzdWx0X3V0aWwuc3RhdHVzIChkYXRhXzEgQCBkYXRhX3IpKVxuICAgICAgICAgIChyZXN1bHRfY29tYmluZSB0KSlcbiAgICAgIGxcblxubGV0IG1kNXN1bSB0ZXh0ID0gRGlnZXN0LnRvX2hleCAoRGlnZXN0LnN0cmluZyB0ZXh0KVxuIiwiKCogQXV0by1nZW5lcmF0ZWQgZnJvbSBcImFwaV90eXBlcy5hdGRcIiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItMjctMzItMzMtMzUtMzlcIl1cblxudHlwZSBzbmFwc2hvdF9pZCA9IEFwaV90eXBlc190LnNuYXBzaG90X2lkXG5cbnR5cGUgc25hcHNob3QgPSBEYXRhLnNuYXBzaG90XG5cbnR5cGUgc25hcHNob3RfZGV0YWlsID0gQXBpX3R5cGVzX3Quc25hcHNob3RfZGV0YWlsXG5cbnR5cGUgc25hcHNob3RfY2F0YWxvZyA9IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2dcblxudHlwZSBzaXRlX2dyYXBoID0gVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG5cbnR5cGUgc2ltdWxhdGlvbl9zdGF0ZSA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fc3RhdGVcblxudHlwZSBzaW11bGF0aW9uX3NlZWQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWRcblxudHlwZSBzaW11bGF0aW9uX3Byb2dyZXNzID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcyA9IHtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lOiBmbG9hdDtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2U6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQ6IGludDtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmc6IGJvb2xcbn1cblxudHlwZSBzaW11bGF0aW9uX3BhcmFtZXRlciA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyID0ge1xuICBzaW11bGF0aW9uX3Bsb3RfcGVyaW9kICgqYXRkIHBsb3RfcGVyaW9kICopOiBmbG9hdDtcbiAgc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gKCphdGQgcGF1c2VfY29uZGl0aW9uICopOiBzdHJpbmc7XG4gIHNpbXVsYXRpb25fc2VlZCAoKmF0ZCBzZWVkICopOiBzaW11bGF0aW9uX3NlZWQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3N0b3JlX3RyYWNlICgqYXRkIHN0b3JlX3RyYWNlICopOiBib29sXG59XG5cbnR5cGUgKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0ID1cbiAgKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0ID0ge1xuICBzaW11bGF0aW9uX291dHB1dF9wbG90OiAncGxvdDtcbiAgc2ltdWxhdGlvbl9vdXRwdXRfZGluczogJ2RpbnM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM6ICdmaWxlX2xpbmVzO1xuICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHM6ICdzbmFwc2hvdHM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0czogJ2lucHV0cztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzOiAnbG9nX21lc3NhZ2VzXG59XG5cbnR5cGUgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvblxuXG50eXBlIHNpbXVsYXRpb25faW5mb19vdXRwdXQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvID0ge1xuICBzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3M6IHNpbXVsYXRpb25fcHJvZ3Jlc3M7XG4gIHNpbXVsYXRpb25faW5mb19vdXRwdXQ6IHNpbXVsYXRpb25faW5mb19vdXRwdXRcbn1cblxudHlwZSBzaW11bGF0aW9uX2lkID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pZFxuXG50eXBlIHNpbXVsYXRpb25fYXJ0aWZhY3QgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0ID0ge1xuICBzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZDogc2ltdWxhdGlvbl9zZWVkXG59XG5cbnR5cGUgc2hhcmluZ19sZXZlbCA9IFBhdHRlcm4uc2hhcmluZ19sZXZlbFxuXG50eXBlICgnb2ssICdlcnJvcikgcmVzdWx0ID0gKCdvaywgJ2Vycm9yKSBSZXN1bHRfdXRpbC50XG5cbnR5cGUgcGFyc2luZ19jb21waWwgPSBBc3QucGFyc2luZ19jb21waWxcblxudHlwZSBuYnIgPSBOYnIudFxuXG50eXBlIHByb2plY3RfcGFyc2UgPSBBcGlfdHlwZXNfdC5wcm9qZWN0X3BhcnNlID0ge1xuICBwYXR0ZXJuX3NoYXJpbmc6IHNoYXJpbmdfbGV2ZWw7XG4gIGFzdDogcGFyc2luZ19jb21waWw7XG4gIHZhcmlhYmxlX292ZXJ3cml0dGVuOiAoc3RyaW5nICogbmJyKSBsaXN0XG59XG5cbnR5cGUgcHJvamVjdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wcm9qZWN0X3BhcmFtZXRlciA9IHtcbiAgcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZDogc3RyaW5nXG59XG5cbnR5cGUgcGxvdF9saW1pdCA9IEFwaV90eXBlc190LnBsb3RfbGltaXQgPSB7XG4gIHBsb3RfbGltaXRfb2Zmc2V0OiBpbnQgb3B0aW9uO1xuICBwbG90X2xpbWl0X3BvaW50czogaW50IG9wdGlvblxufVxuXG50eXBlIHBsb3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXJcblxudHlwZSBwbG90ID0gRGF0YS5wbG90XG5cbnR5cGUgbWVzc2FnZSA9IFJlc3VsdF91dGlsLm1lc3NhZ2VcblxudHlwZSBsb2dfbWVzc2FnZSA9IEFwaV90eXBlc190LmxvZ19tZXNzYWdlXG5cbnR5cGUga2FwcGFfY29kZSA9IEFwaV90eXBlc190LmthcHBhX2NvZGVcblxudHlwZSBmaWxlX2xpbmUgPSBEYXRhLmZpbGVfbGluZSA9IHtcbiAgZmlsZV9saW5lX25hbWUgKCphdGQgbmFtZSAqKTogc3RyaW5nIG9wdGlvbjtcbiAgZmlsZV9saW5lX3RleHQgKCphdGQgdGV4dCAqKTogc3RyaW5nXG59XG5cbnR5cGUgZmlsZV9saW5lX2RldGFpbCA9IEFwaV90eXBlc190LmZpbGVfbGluZV9kZXRhaWxcblxudHlwZSBmaWxlX2xpbmVfY2F0YWxvZyA9IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nXG5cbnR5cGUgZW52aXJvbm1lbnRfaW5mbyA9IEFwaV90eXBlc190LmVudmlyb25tZW50X2luZm8gPSB7XG4gIGVudmlyb25tZW50X3Byb2plY3RzICgqYXRkIHByb2plY3RzICopOiBpbnQ7XG4gIGVudmlyb25tZW50X2J1aWxkICgqYXRkIGJ1aWxkICopOiBzdHJpbmdcbn1cblxudHlwZSBkaW5faWQgPSBBcGlfdHlwZXNfdC5kaW5faWRcblxudHlwZSBkaW5fY2F0YWxvZyA9IEFwaV90eXBlc190LmRpbl9jYXRhbG9nXG5cbnR5cGUgZGluID0gRGF0YS5kaW5cblxubGV0IHdyaXRlX3NuYXBzaG90X2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc25hcHNob3RfaWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3QgPSAoXG4gIERhdGEud3JpdGVfc25hcHNob3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdCA9IChcbiAgRGF0YS5yZWFkX3NuYXBzaG90XG4pXG5sZXQgc25hcHNob3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfZGV0YWlsID0gKFxuICB3cml0ZV9zbmFwc2hvdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfZGV0YWlsID0gKFxuICByZWFkX3NuYXBzaG90XG4pXG5sZXQgc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc25hcHNob3RfaWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX3NuYXBzaG90X2lkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3NuYXBzaG90X2lkX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc25hcHNob3RfaWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgcmVhZF9zbmFwc2hvdF9pZFxuICApXG4pXG5sZXQgX3NuYXBzaG90X2lkX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zbmFwc2hvdF9pZF9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgcmVhZF9fc25hcHNob3RfaWRfbGlzdFxuKVxubGV0IHNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaXRlX2dyYXBoID0gKFxuICBVc2VyX2dyYXBoLndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnRcbilcbmxldCBzdHJpbmdfb2Zfc2l0ZV9ncmFwaCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaXRlX2dyYXBoIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2l0ZV9ncmFwaCA9IChcbiAgVXNlcl9ncmFwaC5yZWFkX2Nvbm5lY3RlZF9jb21wb25lbnRcbilcbmxldCBzaXRlX2dyYXBoX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaXRlX2dyYXBoIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFJ1bm5pbmcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUnVubmluZ1xcXCJcIlxuICAgICAgfCBgUGF1c2VkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlBhdXNlZFxcXCJcIlxuICAgICAgfCBgU3RvcHBlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTdG9wcGVkXFxcIlwiXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fc3RhdGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fc3RhdGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlJ1bm5pbmdcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFJ1bm5pbmdcbiAgICAgICAgICAgIHwgXCJQYXVzZWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFBhdXNlZFxuICAgICAgICAgICAgfCBcIlN0b3BwZWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFN0b3BwZWRcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlJ1bm5pbmdcIiAtPlxuICAgICAgICAgICAgICBgUnVubmluZ1xuICAgICAgICAgICAgfCBcIlBhdXNlZFwiIC0+XG4gICAgICAgICAgICAgIGBQYXVzZWRcbiAgICAgICAgICAgIHwgXCJTdG9wcGVkXCIgLT5cbiAgICAgICAgICAgICAgYFN0b3BwZWRcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fc3RhdGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fc3RhdGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3NlZWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX2ludFxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3NlZWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9zZWVkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbilcbmxldCBzaW11bGF0aW9uX3NlZWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fc2VlZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19pbnRfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX2ludF9udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9faW50X251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2ludF9udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgKSBwIGxiKSA6IF8gb3B0aW9uKVxuKVxubGV0IF9pbnRfbnVsbGFibGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19pbnRfbnVsbGFibGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIDogXyAtPiBzaW11bGF0aW9uX3Byb2dyZXNzIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fcHJvZ3Jlc3MpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0ZF9mbG9hdFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2U7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2U7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfYm9vbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcHJvZ3Jlc3MgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wcm9ncmVzcyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3MgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2snICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM2IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNSkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2snICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM2IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM1KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fcHJvZ3Jlc3MpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9wcm9ncmVzc19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICApIHAgbGIpIDogXyBvcHRpb24pXG4pXG5sZXQgX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIDogXyAtPiBzaW11bGF0aW9uX3BhcmFtZXRlciAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX3BhcmFtZXRlcikgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBsb3RfcGVyaW9kXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdGRfZmxvYXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcGxvdF9wZXJpb2Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBhdXNlX2NvbmRpdGlvblxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbjtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2VlZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9zZWVkO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzdG9yZV90cmFjZVxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfYm9vbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9zdG9yZV90cmFjZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3NlZWQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDExIC0+IChcbiAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfCAncycgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAxMSAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncycgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcGxvdF9wZXJpb2RcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3NlZWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fc2VlZFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fc3RvcmVfdHJhY2VcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyA6IF8gLT4gKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6ICgncGxvdCwgJ2RpbnMsICdmaWxlX2xpbmVzLCAnc25hcHNob3RzLCAnaW5wdXRzLCAnbG9nX21lc3NhZ2VzKSBzaW11bGF0aW9uX291dHB1dCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19wbG90XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9wbG90O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZGluc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ZpbGVfbGluZXNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3NuYXBzaG90c1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnB1dHNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fbG9nX21lc3NhZ2VzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX291dHB1dCByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2RpbnNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19maWxlX2xpbmVzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zbmFwc2hvdHNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2lucHV0c1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fbG9nX21lc3NhZ2VzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19wbG90XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2RpbnNcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZmlsZV9saW5lc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3NuYXBzaG90c1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2lucHV0c1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2xvZ19tZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0KVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fb3V0cHV0X29mX3N0cmluZyByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX291dHB1dCByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX291dHB1dF85MzQwYWQ2IDogXyAtPiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogKF8sIF8sIF8sIF8sIF8sIF8pIHNpbXVsYXRpb25fb3V0cHV0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9wbG90O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9udWxsXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9pbnB1dHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfX291dHB1dF85MzQwYWQ2ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19vdXRwdXRfOTM0MGFkNiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19vdXRwdXRfOTM0MGFkNiA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bGxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI4IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udWxsXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9wbG90ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9wbG90XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQpXG4gICAgICApXG4pXG5sZXQgX291dHB1dF85MzQwYWQ2X29mX3N0cmluZyBzID1cbiAgcmVhZF9fb3V0cHV0XzkzNDBhZDYgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKFxuICB3cml0ZV9fb3V0cHV0XzkzNDBhZDZcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IChcbiAgcmVhZF9fb3V0cHV0XzkzNDBhZDZcbilcbmxldCBzaW11bGF0aW9uX2luZm9fb3V0cHV0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvIDogXyAtPiBzaW11bGF0aW9uX2luZm8gLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3M7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25faW5mb19vdXRwdXRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25faW5mb19vdXRwdXQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mbyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2luZm9fb3V0cHV0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9pbmZvKVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25faW5mb19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IHNpbXVsYXRpb25faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IDogXyAtPiBzaW11bGF0aW9uX2FydGlmYWN0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fYXJ0aWZhY3QpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBpZiBsZW4gPSAzNSAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIC0xXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9zZWVkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDM1ICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX2FydGlmYWN0KVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaGFyaW5nX2xldmVsID0gKFxuICBQYXR0ZXJuLndyaXRlX3NoYXJpbmdfbGV2ZWxcbilcbmxldCBzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaGFyaW5nX2xldmVsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2hhcmluZ19sZXZlbCA9IChcbiAgUGF0dGVybi5yZWFkX3NoYXJpbmdfbGV2ZWxcbilcbmxldCBzaGFyaW5nX2xldmVsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaGFyaW5nX2xldmVsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPSAoXG4gIFJlc3VsdF91dGlsLndyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvclxuKVxubGV0IHN0cmluZ19vZl9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciA9IChcbiAgUmVzdWx0X3V0aWwucmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yXG4pXG5sZXQgcmVzdWx0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wYXJzaW5nX2NvbXBpbCA9IChcbiAgQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsXG4pXG5sZXQgc3RyaW5nX29mX3BhcnNpbmdfY29tcGlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3BhcnNpbmdfY29tcGlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGFyc2luZ19jb21waWwgPSAoXG4gIEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsXG4pXG5sZXQgcGFyc2luZ19jb21waWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3BhcnNpbmdfY29tcGlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbmJyID0gKFxuICBOYnIud3JpdGVfdFxuKVxubGV0IHN0cmluZ19vZl9uYnIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbmJyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbmJyID0gKFxuICBOYnIucmVhZF90XG4pXG5sZXQgbmJyX29mX3N0cmluZyBzID1cbiAgcmVhZF9uYnIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX25icl9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgZnVuIG9iIHggLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAobGV0IHgsIF8gPSB4IGluXG4gICAgICAoXG4gICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgKSBvYiB4XG4gICAgICApO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIChsZXQgXywgeCA9IHggaW5cbiAgICAgIChcbiAgICAgICAgd3JpdGVfbmJyXG4gICAgICApIG9iIHhcbiAgICAgICk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nO1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbmJyX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19uYnJfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbmJyX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIGZ1biBwIGxiIC0+XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgc3RkX3R1cGxlID0gWW9qc29uLlNhZmUuc3RhcnRfYW55X3R1cGxlIHAgbGIgaW5cbiAgICAgIGxldCBsZW4gPSByZWYgMCBpblxuICAgICAgbGV0IGVuZF9vZl90dXBsZSA9IHJlZiBmYWxzZSBpblxuICAgICAgKHRyeVxuICAgICAgICBsZXQgeDAgPVxuICAgICAgICAgIGxldCB4ID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICBpblxuICAgICAgICAgIGluY3IgbGVuO1xuICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgeFxuICAgICAgICBpblxuICAgICAgICBsZXQgeDEgPVxuICAgICAgICAgIGxldCB4ID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgcmVhZF9uYnJcbiAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgIGluXG4gICAgICAgICAgaW5jciBsZW47XG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPiBlbmRfb2ZfdHVwbGUgOj0gdHJ1ZSk7XG4gICAgICAgICAgeFxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgIWVuZF9vZl90dXBsZSB0aGVuIChcbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPiAoKVxuICAgICAgICApO1xuICAgICAgICAoeDAsIHgxKVxuICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX3R1cGxlX2ZpZWxkcyBwICFsZW4gWyAwOyAxIF0pO1xuICApXG4pXG5sZXQgX3N0cmluZ19uYnJfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19uYnJfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Byb2plY3RfcGFyc2UgOiBfIC0+IHByb2plY3RfcGFyc2UgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcHJvamVjdF9wYXJzZSkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBhdHRlcm5fc2hhcmluZ1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2hhcmluZ19sZXZlbFxuICAgIClcbiAgICAgIG9iIHgucGF0dGVybl9zaGFyaW5nO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJhc3RcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3BhcnNpbmdfY29tcGlsXG4gICAgKVxuICAgICAgb2IgeC5hc3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInZhcmlhYmxlX292ZXJ3cml0dGVuXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc3RyaW5nX25icl9saXN0XG4gICAgKVxuICAgICAgb2IgeC52YXJpYWJsZV9vdmVyd3JpdHRlbjtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyc2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcnNlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3BhdHRlcm5fc2hhcmluZyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfYXN0ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMyAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAxNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDIwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfcGF0dGVybl9zaGFyaW5nIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaGFyaW5nX2xldmVsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9hc3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3BhcnNpbmdfY29tcGlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19uYnJfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDMgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDIwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3BhdHRlcm5fc2hhcmluZyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2hhcmluZ19sZXZlbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2FzdCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfcGFyc2luZ19jb21waWxcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19uYnJfbGlzdFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0dGVybl9zaGFyaW5nID0gKG1hdGNoICFmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBhdHRlcm5fc2hhcmluZ1wiKTtcbiAgICAgICAgICAgIGFzdCA9IChtYXRjaCAhZmllbGRfYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJhc3RcIik7XG4gICAgICAgICAgICB2YXJpYWJsZV9vdmVyd3JpdHRlbiA9IChtYXRjaCAhZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4gd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInZhcmlhYmxlX292ZXJ3cml0dGVuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcHJvamVjdF9wYXJzZSlcbiAgICAgIClcbilcbmxldCBwcm9qZWN0X3BhcnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgOiBfIC0+IHByb2plY3RfcGFyYW1ldGVyIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHByb2plY3RfcGFyYW1ldGVyKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicHJvamVjdF9pZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgaWYgbGVuID0gMTAgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgLTFcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gMTAgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgPSAobWF0Y2ggIWZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgIClcbilcbmxldCBwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X2xpbWl0IDogXyAtPiBwbG90X2xpbWl0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHBsb3RfbGltaXQpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJvZmZzZXRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnBsb3RfbGltaXRfb2Zmc2V0O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJuYl9wb2ludHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnBsb3RfbGltaXRfcG9pbnRzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3RfbGltaXQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9saW1pdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfbGltaXQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCA2IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDkgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X29mZnNldCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCA2IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA5IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBsb3RfbGltaXRfb2Zmc2V0ID0gKG1hdGNoICFmaWVsZF9wbG90X2xpbWl0X29mZnNldCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGxvdF9saW1pdF9vZmZzZXRcIik7XG4gICAgICAgICAgICBwbG90X2xpbWl0X3BvaW50cyA9IChtYXRjaCAhZmllbGRfcGxvdF9saW1pdF9wb2ludHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBsb3RfbGltaXRfcG9pbnRzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcGxvdF9saW1pdClcbiAgICAgIClcbilcbmxldCBwbG90X2xpbWl0X29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X2xpbWl0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgPSAoXG4gIHdyaXRlX3Bsb3RfbGltaXRcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X3BhcmFtZXRlciA9IChcbiAgcmVhZF9wbG90X2xpbWl0XG4pXG5sZXQgcGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdCA9IChcbiAgRGF0YS53cml0ZV9wbG90XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3QgPSAoXG4gIERhdGEucmVhZF9wbG90XG4pXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX21lc3NhZ2UgPSAoXG4gIFJlc3VsdF91dGlsLndyaXRlX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbWVzc2FnZSA9IChcbiAgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlXG4pXG5sZXQgbWVzc2FnZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2xvZ19tZXNzYWdlID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2ZfbG9nX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbG9nX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9sb2dfbWVzc2FnZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgbG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xvZ19tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfa2FwcGFfY29kZSA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX2thcHBhX2NvZGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfa2FwcGFfY29kZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2thcHBhX2NvZGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IGthcHBhX2NvZGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2thcHBhX2NvZGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX251bGxhYmxlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbnVsbGFibGUgKFxuICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbnVsbGFibGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19udWxsYWJsZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbnVsbGFibGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIChpZiBZb2pzb24uU2FmZS5yZWFkX251bGxfaWZfcG9zc2libGUgcCBsYiB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKChcbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICkgcCBsYikgOiBfIG9wdGlvbilcbilcbmxldCBfc3RyaW5nX251bGxhYmxlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX251bGxhYmxlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lIDogXyAtPiBmaWxlX2xpbmUgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogZmlsZV9saW5lKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwibmFtZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3N0cmluZ19udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguZmlsZV9saW5lX25hbWU7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInRleHRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgIClcbiAgICAgIG9iIHguZmlsZV9saW5lX3RleHQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9maWxlX2xpbmVfbmFtZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfZmlsZV9saW5lX3RleHQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIGlmIGxlbiA9IDQgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgIHwgJ24nIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgJ3QnIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAneCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAtMVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX25hbWUgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV90ZXh0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDQgdGhlbiAoXG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICB8ICduJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCAndCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfbmFtZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV90ZXh0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWxlX2xpbmVfbmFtZSA9IChtYXRjaCAhZmllbGRfZmlsZV9saW5lX25hbWUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImZpbGVfbGluZV9uYW1lXCIpO1xuICAgICAgICAgICAgZmlsZV9saW5lX3RleHQgPSAobWF0Y2ggIWZpZWxkX2ZpbGVfbGluZV90ZXh0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJmaWxlX2xpbmVfdGV4dFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IGZpbGVfbGluZSlcbiAgICAgIClcbilcbmxldCBmaWxlX2xpbmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19maWxlX2xpbmVfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX2ZpbGVfbGluZVxuICApXG4pXG5sZXQgc3RyaW5nX29mX19maWxlX2xpbmVfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fZmlsZV9saW5lX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fZmlsZV9saW5lX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfZmlsZV9saW5lXG4gIClcbilcbmxldCBfZmlsZV9saW5lX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19maWxlX2xpbmVfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIHdyaXRlX19maWxlX2xpbmVfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfZGV0YWlsID0gKFxuICByZWFkX19maWxlX2xpbmVfbGlzdFxuKVxubGV0IGZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgKVxuKVxubGV0IF9zdHJpbmdfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIHdyaXRlX19zdHJpbmdfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICByZWFkX19zdHJpbmdfbGlzdFxuKVxubGV0IGZpbGVfbGluZV9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Vudmlyb25tZW50X2luZm8gOiBfIC0+IGVudmlyb25tZW50X2luZm8gLT4gXyA9IChcbiAgZnVuIG9iICh4IDogZW52aXJvbm1lbnRfaW5mbykgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInByb2plY3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LmVudmlyb25tZW50X3Byb2plY3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJidWlsZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5lbnZpcm9ubWVudF9idWlsZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Vudmlyb25tZW50X2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgOCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50X3Byb2plY3RzID0gKG1hdGNoICFmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZW52aXJvbm1lbnRfcHJvamVjdHNcIik7XG4gICAgICAgICAgICBlbnZpcm9ubWVudF9idWlsZCA9IChtYXRjaCAhZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImVudmlyb25tZW50X2J1aWxkXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogZW52aXJvbm1lbnRfaW5mbylcbiAgICAgIClcbilcbmxldCBlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9lbnZpcm9ubWVudF9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2ZfZGluX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgZGluX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fZGluX2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9kaW5faWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fZGluX2lkX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX2Rpbl9pZF9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2Rpbl9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2Rpbl9pZFxuICApXG4pXG5sZXQgX2Rpbl9pZF9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fZGluX2lkX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5fY2F0YWxvZyA9IChcbiAgd3JpdGVfX2Rpbl9pZF9saXN0XG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2NhdGFsb2cgPSAoXG4gIHJlYWRfX2Rpbl9pZF9saXN0XG4pXG5sZXQgZGluX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluID0gKFxuICBEYXRhLndyaXRlX2RpblxuKVxubGV0IHN0cmluZ19vZl9kaW4gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluID0gKFxuICBEYXRhLnJlYWRfZGluXG4pXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IEJpZ1N0cmluZyA6IEJpZ2J1ZmZlci5iaWdzdHJpbmcgaGFuZGxlXG4gIHwgU3RyaW5nIDogc3RyaW5nIGhhbmRsZVxuICB8IFN0cmluZ3MgOiBzdHJpbmcgbGlzdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgKCogIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZSopXG4gIHwgSlNPTiA6IFlvanNvbi5CYXNpYy50IGhhbmRsZVxuICB8IEluZmx1ZW5jZV9tYXBcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogaW50XG4gICAgICAgICogaW50IG9wdGlvblxuICAgICAgICAqIGludCBvcHRpb25cbiAgICAgICAgKiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb25cbiAgICAgICAgKiBQdWJsaWNfZGF0YS5pbmZsdWVuY2VfbWFwKVxuICAgICAgICBoYW5kbGVcbiAgKCogQ29tbWVudGVkIGFzIHVudXNlZCBhdCB0aGUgbW9tZW50LiBTZWUgd2FybmluZyAzNyAqKVxuICAoKiAgIHwgU2hvcnRfaW5mbHVlbmNlX25vZGUgOiAoaW50LCBpbnQpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvbiBoYW5kbGUgKilcbiAgfCBJbmZsdWVuY2Vfbm9kZVxuICAgICAgOiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb25cbiAgICAgICAgaGFuZGxlXG4gIHwgSW5mbHVlbmNlX25vZGVzXG4gICAgICA6IChQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbFxuICAgICAgICAqIChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIGxpc3QpXG4gICAgICAgIGhhbmRsZVxuICB8IFJ1bGVzX2thc2EgOiBQdWJsaWNfZGF0YS5ydWxlIGxpc3QgaGFuZGxlXG4gIHwgQWdlbnRzX2thc2EgOiBQdWJsaWNfZGF0YS5kZWFkX2FnZW50cyBoYW5kbGVcbiAgfCBUcmFuc2l0aW9uc19rYXNhIDogKFB1YmxpY19kYXRhLnJ1bGUgKiAoc3RyaW5nICogc3RyaW5nKSBsaXN0KSBsaXN0IGhhbmRsZVxuICB8IENvbnN0cmFpbnRzX2thc2FcbiAgICAgIDogKHN0cmluZyAqIFB1YmxpY19kYXRhLmFnZW50IGxpc3QgUHVibGljX2RhdGEubGVtbWEgbGlzdCkgbGlzdCBoYW5kbGVcbiAgfCBQb2x5bWVyc19rYXNhXG4gICAgICA6IChQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbFxuICAgICAgICAqIFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogUHVibGljX2RhdGEuc2NjKVxuICAgICAgICBoYW5kbGVcbiAgfCBESU4gOiBEYXRhLmRpbiBoYW5kbGVcbiAgfCBQbG90IDogRGF0YS5wbG90IGhhbmRsZVxuICB8IFNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCBoYW5kbGVcbiAgfCBTaW11bGF0aW9uX2VmZmljaWVuY3kgOiBDb3VudGVyLkVmZmljaWVuY3kudCBoYW5kbGVcbiAgfCBTaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciBoYW5kbGVcbiAgfCBTaW11bGF0aW9uX2FydGlmYWN0IDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9hcnRpZmFjdCBoYW5kbGVcblxudHlwZSBib3ggPVxuICB8IEIgOiAnYSBoYW5kbGUgKiAoJ2EsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudSAtPiBib3hcblxudHlwZSBtYWlsYm94ID0gKGludCwgYm94KSBIYXNodGJsLnRcblxubGV0IG5ld19tYWlsYm94ICgpID0gSGFzaHRibC5jcmVhdGUgMlxuXG5sZXQgcmVhZF9yZXN1bHQgZiBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAoUmVzdWx0X3V0aWwucmVhZF90IGYgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlKSlcbiAgICBwIGxiXG5cbmxldCByZWNlaXZlIG1haWxib3ggeCA9XG4gIEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgKEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnQgKGZ1biBwIGxiIGlkIC0+XG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgbWFpbGJveCBpZCB3aXRoXG4gICAgICAgICAgIHwgQiAoTm90aGluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9udWxsIHAgbGIpXG4gICAgICAgICAgIHwgQiAoQmlnU3RyaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IG91dCA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgKEJhc2U2NC5kZWNvZGUgP2FscGhhYmV0Ok5vbmUpIG91dClcbiAgICAgICAgICAgfCBCIChTdHJpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIpXG4gICAgICAgICAgIHwgQiAoU3RyaW5ncywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZylcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgIHwgQiAoQ2F0YWxvZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IEtmaWxlcy5yZWFkX2NhdGFsb2dfaXRlbSlcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgIHwgQiAoSW5mbywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludClcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgICAgKCogfCBCIChBc3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0IEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsIHAgbGIpKilcbiAgICAgICAgICAgfCBCIChKU09OLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2VfbWFwLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5sb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24ganNvbilcbiAgICAgICAgICAgKCpcbiAgICAgICAgICAgfCBCIChTaG9ydF9pbmZsdWVuY2Vfbm9kZSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbilcbiAgICAgICAgICAgICAgICAgIGpzb24pXG4qKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9ub2RlLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICBqc29uKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9ub2RlcywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoUnVsZXNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoQWdlbnRzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmpzb25fdG9fZGVhZF9hZ2VudHMganNvbilcbiAgICAgICAgICAgfCBCIChUcmFuc2l0aW9uc19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24ganNvbilcbiAgICAgICAgICAgfCBCIChDb25zdHJhaW50c19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoUG9seW1lcnNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5zY2Nfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKERJTiwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfZGluIHAgbGIpXG4gICAgICAgICAgIHwgQiAoUGxvdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfcGxvdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNuYXBzaG90LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IERhdGEucmVhZF9zbmFwc2hvdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fZWZmaWNpZW5jeSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBDb3VudGVyLkVmZmljaWVuY3kucmVhZF90IHAgbGIpXG4gICAgICAgICAgIHwgQiAoU2ltdWxhdGlvbl9pbmZvLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25faW5mbyBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fcGFyYW1ldGVyLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyIHAgbGIpXG4gICAgICAgICAgIHwgQiAoU2ltdWxhdGlvbl9hcnRpZmFjdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IHAgbGIpXG4gICAgICAgICBpblxuICAgICAgICAgSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCkpXG4gICAgeFxuXG5sZXQgaXNfY29tcHV0aW5nIG1haWxib3ggPSBIYXNodGJsLmxlbmd0aCBtYWlsYm94IDw+IDBcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IG1haWxib3ggPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogdHlwZSBhLlxuICAgICAgICBhIGhhbmRsZSAtPlxuICAgICAgICAoQnVmZmVyLnQgLT4gdW5pdCkgLT5cbiAgICAgICAgKGEsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gICAgICBmdW4gaGFuZGxlIHJlcXVlc3QgLT5cbiAgICAgICAgaWYgaXNfcnVubmluZyAoKSB0aGVuIChcbiAgICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgICAgICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpOyByZXF1ZXN0IF0pXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3N0IG1lc3NhZ2UgaW5cbiAgICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCAoQiAoaGFuZGxlLCBmZWVkZXIpKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlkIDwtIHN1Y2MgaWQgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQgPSBcImthbW9oYSBhZ2VudCBoYXMgZGllZFwiO1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgXSlcblxuICAgICgqIEthTW9IYSAqKVxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVEZWxldGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVVcGRhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIGZpbGVfcG9zaXRpb24gZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlTW92ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmaWxlX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlR2V0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDcmVhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDYXRhbG9nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDYXRhbG9nXCIpIF0pXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgOiBBc3QucGFyc2luZ19jb21waWwgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZ1xuICAgICAgICAgICBcImxvdyBsZXZlbCBwcm9qZWN0X3BhcnNlIG11c3RuJ3QgYmUgdXNlZFwiKVxuXG4gICAgbWV0aG9kIHNlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzXG4gICAgICAgIDogUHVibGljX2RhdGEucG9zX29mX3J1bGVzX2FuZF92YXJzIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmdcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0T3ZlcndyaXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYVNhICopXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5JVFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBjb21waWwpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSlNPTiAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJDT05UQUNUX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9tYXAgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiTE9DQUxfSU5GTFVFTkNFX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZ3ZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGJ3ZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgdG90YWwpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIG9yaWdpbikpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfT1JJR0lOQUxfTk9ERVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBqc29uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX05FWFRfTk9ERVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICBqc29uKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIGpzb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9QUkVWSU9VU19OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIGpzb24pKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX05PREVfQVRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gTG9jLndyaXRlX3Bvc2l0aW9uIGIgcG9zKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlcyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX0FMTF9OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgc2VsZiNtZXNzYWdlIFJ1bGVzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiREVBRF9SVUxFU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQWdlbnRzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiREVBRF9BR0VOVFNcIikgXSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHNlbGYjbWVzc2FnZSBUcmFuc2l0aW9uc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiTk9OX1dFQUtMWV9SRVZFUlNJQkxFX1RSQU5TSVRJT05TXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfY29uc3RyYWludHNfbGlzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ29uc3RyYWludHNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJDT05TVFJBSU5UU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIHNlbGYjbWVzc2FnZSBQb2x5bWVyc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlBPTFlNRVJTXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfY20pKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X3NjYykpO1xuICAgICAgICAgICAgXSlcblxuICAgICgqIEthU2ltICopXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgKF8gOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWwpXG4gICAgICAgIChfIDogQXN0LnBhcnNpbmdfY29tcGlsKSAoXyA6IChzdHJpbmcgKiBOYnIudCkgbGlzdClcbiAgICAgICAgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmdcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgc2ltdWxhdGlvbl9sb2FkIG11c3RuJ3QgYmUgdXNlZFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdFBhcnNlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gUGF0dGVybi53cml0ZV9zaGFyaW5nX2xldmVsIGIgcGF0dGVyblNoYXJpbmcpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIE5ici53cml0ZV90KVxuICAgICAgICAgICAgICAgICAgYiBvdmVyd3JpdGVzKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jb250aW51ZSBwYXVzZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ29udGludWVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgcGF1c2UpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGVsZXRlXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZGluIGlkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBESU4gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbERJTlwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU25hcHNob3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGlkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9wbG90IHBhcmFtZXRlciA9XG4gICAgICBzZWxmI21lc3NhZ2UgUGxvdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFwaV90eXBlc19qLndyaXRlX3Bsb3RfcGFyYW1ldGVyIGIgcGFyYW1ldGVyKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmUgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmdzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9lZmZpY2llbmN5IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbmZvID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaW11bGF0aW9uX2luZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkluZm9cIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvbiBpbnRlcnZlbnRpb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGludGVydmVudGlvbik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fb3V0cHV0c196aXAgPVxuICAgICAgc2VsZiNtZXNzYWdlIEJpZ1N0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGF1c2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblBhdXNlXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fcGFyYW1ldGVyIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0IHBhcmFtZXRlciA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9hcnRpZmFjdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uU3RhcnRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBiIHBhcmFtZXRlcik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcmF3X3RyYWNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblRyYWNlXCIpIF0pXG5cbiAgICAoKiBtZXRob2QgcHJvamVjdF9wYXJzZSBvdmVyd3JpdGUgPSAoKVxuXG4gICAgICAgbWV0aG9kIHJhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gPSAoKVxuICAgICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24gbW9kZXMgPSBMd3RfcmVzdWx0LnJldHVybiAoKVxuICAgICAgIG1ldGhvZCBzdG9yeV9pc19jb21wdXRpbmcgPSBmYWxzZVxuICAgICAgIG1ldGhvZCBzdG9yeV9saXN0ID0gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfbG9nID0gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgPSAoKVxuXG4gICAgICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IHRydWVcbiAgICAgICAgIG1ldGhvZCB0ZXJtaW5hdGUgPSAoKSopXG4gIGVuZFxuIiwiKCogQXV0by1nZW5lcmF0ZWQgZnJvbSBcIm1waV9tZXNzYWdlLmF0ZFwiICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0yNy0zMi0zMy0zNS0zOVwiXVxuXG50eXBlIHNuYXBzaG90X2lkID0gQXBpX3R5cGVzX3Quc25hcHNob3RfaWRcblxudHlwZSBzbmFwc2hvdF9kZXRhaWwgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9kZXRhaWxcblxudHlwZSBzbmFwc2hvdF9jYXRhbG9nID0gQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZ1xuXG50eXBlIHNpbXVsYXRpb25fcGFyYW1ldGVyID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXJcblxudHlwZSBzaW11bGF0aW9uX2ludGVydmVudGlvbiA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvXG5cbnR5cGUgc2ltdWxhdGlvbl9lZmZpY2llbmN5ID0gQ291bnRlci5FZmZpY2llbmN5LnRcblxudHlwZSBzaW11bGF0aW9uX2FydGlmYWN0ID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9hcnRpZmFjdFxuXG50eXBlICgnb2ssICdlcnJvcikgYXBpX3Jlc3VsdCA9ICgnb2ssICdlcnJvcikgQXBpX3R5cGVzX3QucmVzdWx0XG5cbnR5cGUgYXBpX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5tZXNzYWdlXG5cbnR5cGUgJ29rIHJlc3VsdCA9ICdvayBNcGlfbWVzc2FnZV90LnJlc3VsdFxuXG50eXBlIHBsb3QgPSBBcGlfdHlwZXNfdC5wbG90XG5cbnR5cGUgbG9nX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZVxuXG50eXBlIGZpbGVfbGluZV9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2dcblxudHlwZSBlbnZpcm9ubWVudF9pbmZvID0gQXBpX3R5cGVzX3QuZW52aXJvbm1lbnRfaW5mb1xuXG50eXBlIGRpbl9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZGluX2NhdGFsb2dcblxudHlwZSBkaW4gPSBBcGlfdHlwZXNfdC5kaW5cblxudHlwZSByZXN0X3Jlc3BvbnNlX2NvbnRlbnQgPSBNcGlfbWVzc2FnZV90LnJlc3RfcmVzcG9uc2VfY29udGVudFxuXG50eXBlIHJlc3RfcmVzcG9uc2UgPSBNcGlfbWVzc2FnZV90LnJlc3RfcmVzcG9uc2VcblxudHlwZSBwcm9qZWN0X3BhcnNlID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJzZVxuXG50eXBlIHByb2plY3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJhbWV0ZXJcblxudHlwZSBwbG90X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnBsb3RfcGFyYW1ldGVyXG5cbnR5cGUgZGluX2lkID0gQXBpX3R5cGVzX3QuZGluX2lkXG5cbnR5cGUgcmVzdF9yZXF1ZXN0ID0gTXBpX21lc3NhZ2VfdC5yZXN0X3JlcXVlc3RcblxudHlwZSByZXNwb25zZV9jb250ZW50ID0gTXBpX21lc3NhZ2VfdC5yZXNwb25zZV9jb250ZW50XG5cbnR5cGUgcmVzcG9uc2UgPSBNcGlfbWVzc2FnZV90LnJlc3BvbnNlXG5cbnR5cGUgcmVxdWVzdCA9IE1waV9tZXNzYWdlX3QucmVxdWVzdFxuXG50eXBlIGlkID0gTXBpX21lc3NhZ2VfdC5pZFxuXG50eXBlICdkYXRhIG1lc3NhZ2UgPSAnZGF0YSBNcGlfbWVzc2FnZV90Lm1lc3NhZ2UgPSB7IGlkOiBpZDsgZGF0YTogJ2RhdGEgfVxuXG50eXBlIGZpbGVfbGluZV9kZXRhaWwgPSBBcGlfdHlwZXNfdC5maWxlX2xpbmVfZGV0YWlsXG5cbnR5cGUgZmlsZV9saW5lID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lXG5cbmxldCB3cml0ZV9zbmFwc2hvdF9pZCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfaWRcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9pZCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zbmFwc2hvdF9pZFxuKVxubGV0IHNuYXBzaG90X2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NuYXBzaG90X2RldGFpbCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfZGV0YWlsXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfZGV0YWlsXG4pXG5sZXQgc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zbmFwc2hvdF9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfY2F0YWxvZ1xuKVxubGV0IHNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuKVxubGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvblxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4pXG5sZXQgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX2luZm9cbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mbyA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2luZm9cbilcbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW5mbyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA9IChcbiAgQ291bnRlci5FZmZpY2llbmN5LndyaXRlX3RcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9lZmZpY2llbmN5ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA9IChcbiAgQ291bnRlci5FZmZpY2llbmN5LnJlYWRfdFxuKVxubGV0IHNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0ID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3RcbilcbmxldCBzaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvclxuKVxubGV0IHN0cmluZ19vZl9hcGlfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfYXBpX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3JcbilcbmxldCBhcGlfcmVzdWx0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF9hcGlfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfYXBpX21lc3NhZ2UgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfYXBpX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfYXBpX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9hcGlfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9tZXNzYWdlXG4pXG5sZXQgYXBpX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2FwaV9tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9hcGlfbWVzc2FnZVxuICApXG4pXG5sZXQgc3RyaW5nX29mX19hcGlfbWVzc2FnZV9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19hcGlfbWVzc2FnZV9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2FwaV9tZXNzYWdlX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfYXBpX21lc3NhZ2VcbiAgKVxuKVxubGV0IF9hcGlfbWVzc2FnZV9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fYXBpX21lc3NhZ2VfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19yZXN1bHRfZDFmOTgyNCB3cml0ZV9fYSA9IChcbiAgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fYSB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX2EgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19hIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX2EgPSAoXG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX19hIHJlYWRfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBfcmVzdWx0X2QxZjk4MjRfb2Zfc3RyaW5nIHJlYWRfX2EgcyA9XG4gIHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX2EgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN1bHQgd3JpdGVfX29rID0gKFxuICB3cml0ZV9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX29rXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3VsdCB3cml0ZV9fb2sgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdWx0IHdyaXRlX19vayBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3VsdCByZWFkX19vayA9IChcbiAgcmVhZF9fcmVzdWx0X2QxZjk4MjQgcmVhZF9fb2tcbilcbmxldCByZXN1bHRfb2Zfc3RyaW5nIHJlYWRfX29rIHMgPVxuICByZWFkX3Jlc3VsdCByZWFkX19vayAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3QgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3Bsb3RcbilcbmxldCBzdHJpbmdfb2ZfcGxvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wbG90XG4pXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2xvZ19tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9sb2dfbWVzc2FnZVxuKVxubGV0IHN0cmluZ19vZl9sb2dfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9sb2dfbWVzc2FnZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2xvZ19tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2xvZ19tZXNzYWdlXG4pXG5sZXQgbG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xvZ19tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2ZpbGVfbGluZV9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbilcbmxldCBmaWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9lbnZpcm9ubWVudF9pbmZvXG4pXG5sZXQgc3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Vudmlyb25tZW50X2luZm8gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZW52aXJvbm1lbnRfaW5mb1xuKVxubGV0IGVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Vudmlyb25tZW50X2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5fY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluX2NhdGFsb2dcbilcbmxldCBzdHJpbmdfb2ZfZGluX2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5fY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9kaW5fY2F0YWxvZ1xuKVxubGV0IGRpbl9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5fY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2RpbiA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluXG4pXG5sZXQgc3RyaW5nX29mX2RpbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW4gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW4gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluXG4pXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgKVxuKVxubGV0IF9zdHJpbmdfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50ID0gKFxuICBmdW4gb2IgeCAtPlxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgU2ltdWxhdGlvbkxvYWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkxvYWRcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfX3N0cmluZ19saXN0XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2RpblxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2xvZ19tZXNzYWdlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfcGxvdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkluZm8geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkluZm9cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uVHJhY2VcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRGVsZXRlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIkVudmlyb25tZW50SW5mb1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9lbnZpcm9ubWVudF9pbmZvXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgUHJvamVjdENyZWF0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0Q3JlYXRlXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3REZWxldGVcXFwiXCJcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RDYXRhbG9nXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZV9jb250ZW50ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkxvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Mb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZW52aXJvbm1lbnRfaW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZVxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3REZWxldGVcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZyB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uTG9hZFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uTG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlXG4gICAgICAgICAgICB8IFwiUHJvamVjdERlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2xvZ19tZXNzYWdlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Vudmlyb25tZW50X2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgcmVzdF9yZXNwb25zZV9jb250ZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0XzRjYTZiOGYgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50IHdyaXRlX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgc3RyaW5nX29mX19yZXN1bHRfNGNhNmI4ZiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzdWx0XzRjYTZiOGYgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fcmVzdWx0XzRjYTZiOGYgPSAoXG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF80Y2E2YjhmX29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdWx0XzRjYTZiOGYgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA9IChcbiAgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmXG4pXG5sZXQgc3RyaW5nX29mX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHJlYWRfX3Jlc3VsdF80Y2E2YjhmXG4pXG5sZXQgX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdF9yZXNwb25zZSA9IChcbiAgd3JpdGVfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRcbilcbmxldCBzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3Jlc3BvbnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdF9yZXNwb25zZSA9IChcbiAgcmVhZF9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHJlc3RfcmVzcG9uc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3RfcmVzcG9uc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcnNlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wcm9qZWN0X3BhcnNlXG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJzZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Byb2plY3RfcGFyc2UgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcHJvamVjdF9wYXJzZVxuKVxubGV0IHByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Byb2plY3RfcGFyc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcHJvamVjdF9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wcm9qZWN0X3BhcmFtZXRlclxuKVxubGV0IHByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3RfcGFyYW1ldGVyID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wbG90X3BhcmFtZXRlclxuKVxubGV0IHN0cmluZ19vZl9wbG90X3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfcGFyYW1ldGVyID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3Bsb3RfcGFyYW1ldGVyXG4pXG5sZXQgcGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2lkID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9kaW5faWRcbilcbmxldCBzdHJpbmdfb2ZfZGluX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9pZCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9kaW5faWRcbilcbmxldCBkaW5faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVxdWVzdCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFNpbXVsYXRpb25Mb2FkIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Mb2FkXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Byb2plY3RfcGFyc2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2lkXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25JbmZvXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblRyYWNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIkVudmlyb25tZW50SW5mb1xcXCJcIlxuICAgICAgfCBgUHJvamVjdENhdGFsb2cgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdENhdGFsb2dcXFwiXCJcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiUHJvamVjdENyZWF0ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFByb2plY3REZWxldGUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiUHJvamVjdERlbGV0ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVxdWVzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3JlcXVlc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN0X3JlcXVlc3QgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Mb2FkXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyc2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uTG9hZCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mb1xuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mb1xuICAgICAgICAgICAgfCBcIlByb2plY3RDYXRhbG9nXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIkVudmlyb25tZW50SW5mb1wiIC0+XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm9cbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Mb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyc2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkxvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDcmVhdGUgeFxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3RfcmVxdWVzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVzdF9yZXF1ZXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFNpbXVsYXRpb25Mb2FkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25Mb2FkXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbERJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9sb2dfbWVzc2FnZVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2RldGFpbFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbmZvXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25FZmZpY2llbmN5XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblRyYWNlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25PdXRwdXRzWmlwXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ29udGludWVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uU3RhcnRcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVzcG9uc2VfY29udGVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXNwb25zZV9jb250ZW50IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkxvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Mb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Mb2FkXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Mb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm8geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3BvbnNlX2NvbnRlbnRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3BvbnNlX2NvbnRlbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0Xzg5MGQ5ZmUgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfcmVzcG9uc2VfY29udGVudCB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0Xzg5MGQ5ZmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF84OTBkOWZlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF84OTBkOWZlID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9yZXNwb25zZV9jb250ZW50IHJlYWRfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBfcmVzdWx0Xzg5MGQ5ZmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19yZXN1bHRfODkwZDlmZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA9IChcbiAgd3JpdGVfX3Jlc3VsdF84OTBkOWZlXG4pXG5sZXQgc3RyaW5nX29mX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHJlYWRfX3Jlc3VsdF84OTBkOWZlXG4pXG5sZXQgX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXNwb25zZSA9IChcbiAgd3JpdGVfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgc3RyaW5nX29mX3Jlc3BvbnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3BvbnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzcG9uc2UgPSAoXG4gIHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgcmVzcG9uc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3BvbnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVxdWVzdCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFNpbXVsYXRpb25Mb2FkIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Mb2FkXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Byb2plY3RfcGFyc2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2lkXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25JbmZvXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblRyYWNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuKVxubGV0IHN0cmluZ19vZl9yZXF1ZXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3JlcXVlc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXF1ZXN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uTG9hZFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkxvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uTG9hZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Mb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXF1ZXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXF1ZXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfaWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX2ludFxuKVxubGV0IHN0cmluZ19vZl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbilcbmxldCBpZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9tZXNzYWdlIHdyaXRlX19kYXRhIDogXyAtPiAnZGF0YSBtZXNzYWdlIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6ICdkYXRhIG1lc3NhZ2UpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJpZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfaWRcbiAgICApXG4gICAgICBvYiB4LmlkO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJkYXRhXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZGF0YVxuICAgIClcbiAgICAgIG9iIHguZGF0YTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9tZXNzYWdlIHdyaXRlX19kYXRhID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX21lc3NhZ2Ugd3JpdGVfX2RhdGEgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9tZXNzYWdlIHJlYWRfX2RhdGEgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfaWQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2RhdGEgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdhJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2lkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfZGF0YSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2RhdGFcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnYScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2lkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9pZFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2RhdGEgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19kYXRhXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZCA9IChtYXRjaCAhZmllbGRfaWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImlkXCIpO1xuICAgICAgICAgICAgZGF0YSA9IChtYXRjaCAhZmllbGRfZGF0YSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZGF0YVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6ICdkYXRhIG1lc3NhZ2UpXG4gICAgICApXG4pXG5sZXQgbWVzc2FnZV9vZl9zdHJpbmcgcmVhZF9fZGF0YSBzID1cbiAgcmVhZF9tZXNzYWdlIHJlYWRfX2RhdGEgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmVfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVfZGV0YWlsXG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lX2RldGFpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZmlsZV9saW5lX2RldGFpbFxuKVxubGV0IGZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmUgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2ZpbGVfbGluZVxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZVxuKVxubGV0IGZpbGVfbGluZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgaW5pdF9jb21wcmVzc2lvbl9tb2RlID0gZnVuY3Rpb25cbiAgfCBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IHRydWU7IEFwaS53ZWFrID0gZmFsc2U7IEFwaS5zdHJvbmcgPSBmYWxzZSB9XG4gIHwgU3RvcnlfanNvbi5XZWFrIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gZmFsc2U7IEFwaS53ZWFrID0gdHJ1ZTsgQXBpLnN0cm9uZyA9IGZhbHNlIH1cbiAgfCBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IGZhbHNlOyBBcGkud2VhayA9IGZhbHNlOyBBcGkuc3Ryb25nID0gdHJ1ZSB9XG5cbmxldCBhZGRfY29tcHJlc3Npb25fbW9kZSB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uQ2F1c2FsIC0+IHsgQXBpLmNhdXNhbCA9IHRydWU7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH1cbiAgfCBTdG9yeV9qc29uLldlYWsgLT4geyBBcGkuY2F1c2FsOyBBcGkud2VhayA9IHRydWU7IEFwaS5zdHJvbmcgfVxuICB8IFN0b3J5X2pzb24uU3Ryb25nIC0+IHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgPSB0cnVlIH1cblxubGV0IHByaW50X2NvbXByZXNzaW9uX21vZGVzIGYgeyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID1cbiAgbGV0ICgpID0gaWYgY2F1c2FsIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiQ0FVU0FMXCIgaW5cbiAgbGV0ICgpID1cbiAgICBpZiB3ZWFrIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICAoaWYgY2F1c2FsIHRoZW5cbiAgICAgICAgICAgXCIsIFdFQUtcIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIldFQUtcIilcbiAgaW5cbiAgaWYgc3Ryb25nIHRoZW5cbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgIChpZiBjYXVzYWwgfHwgd2VhayB0aGVuXG4gICAgICAgICBcIiwgU1RST05HXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIlNUUk9OR1wiKVxuXG50eXBlIHN0YXRlX3QgPSB7XG4gIHJ1bm5pbmc6IGJvb2w7XG4gIHByb2dyZXNzOiBTdG9yeV9qc29uLnByb2dyZXNzX2JhciBvcHRpb247XG4gIGxvZzogc3RyaW5nIGxpc3Q7XG4gIHN0b3JpZXM6XG4gICAgKEFwaS5jb21wcmVzc2lvbl9tb2Rlc1xuICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0IGxpc3RcbiAgICAqIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoKVxuICAgIE1vZHMuSW50TWFwLnQ7XG59XG5cbnR5cGUgc3RhdGUgPSBzdGF0ZV90IHJlZlxuXG4oKmxldCBzdGF0ZV9lcSBhIGIgPVxuICBhLnJ1bm5pbmcgPSBiLnJ1bm5pbmcgJiZcbiAgT3B0aW9uX3V0aWwuZXF1YWwgKD0pIGEucHJvZ3Jlc3MgYi5wcm9ncmVzcyAmJlxuICAodHJ5IExpc3QuZm9yX2FsbDIgKGZ1biB4IHkgLT4gU3RyaW5nLmNvbXBhcmUgeCB5ID0gMCkgYS5sb2cgYi5sb2dcbiAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlKVxuICAmJiBNb2RzLkludE1hcC5lcXVhbCAoPSkgYS5zdG9yaWVzIGIuc3RvcmllcyopXG5cbmxldCBpbml0aWFsX3N0YXRlID1cbiAgeyBydW5uaW5nID0gZmFsc2U7IHByb2dyZXNzID0gTm9uZTsgbG9nID0gW107IHN0b3JpZXMgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5cbmxldCBjb250cm9sbGVyIHMgPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uUHJvZ3Jlc3MgcCAtPlxuICAgIHsgcnVubmluZyA9IHMucnVubmluZzsgcHJvZ3Jlc3MgPSBTb21lIHA7IGxvZyA9IHMubG9nOyBzdG9yaWVzID0gcy5zdG9yaWVzIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN0YXJ0LCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSB0cnVlO1xuICAgICAgcHJvZ3Jlc3MgPSBOb25lO1xuICAgICAgbG9nID0gWyBtIF07XG4gICAgICBzdG9yaWVzID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uRmFpbGx1cmUsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgIGxvZyA9IG0gOjogcy5sb2c7XG4gICAgICBzdG9yaWVzID0gcy5zdG9yaWVzO1xuICAgIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN1Y2Nlc3MsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uU3RvcnkgYyAtPlxuICAgIChtYXRjaCBjLlN0b3J5X2pzb24uc3Rvcnkgd2l0aFxuICAgIHwgU3RvcnlfanNvbi5OZXcgZSAtPlxuICAgICAge1xuICAgICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICAgIGxvZyA9IHMubG9nO1xuICAgICAgICBzdG9yaWVzID1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgZS5TdG9yeV9qc29uLmlkXG4gICAgICAgICAgICAoIGluaXRfY29tcHJlc3Npb25fbW9kZSBjLlN0b3J5X2pzb24uc3RvcnlfbW9kZSxcbiAgICAgICAgICAgICAgWyBjLlN0b3J5X2pzb24ubG9nX2luZm8gXSxcbiAgICAgICAgICAgICAgZS5TdG9yeV9qc29uLmdyYXBoIClcbiAgICAgICAgICAgIHMuc3RvcmllcztcbiAgICAgIH1cbiAgICB8IFN0b3J5X2pzb24uU2FtZV9hcyBpIC0+XG4gICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBzLnN0b3JpZXMgd2l0aFxuICAgICAgfCBTb21lIChjbSwgaW5mb3MsIGdyYXBoKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICAgICAgbG9nID0gcy5sb2c7XG4gICAgICAgICAgc3RvcmllcyA9XG4gICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAoIGFkZF9jb21wcmVzc2lvbl9tb2RlIGNtIGMuU3RvcnlfanNvbi5zdG9yeV9tb2RlLFxuICAgICAgICAgICAgICAgIGMuU3RvcnlfanNvbi5sb2dfaW5mbyA6OiBpbmZvcyxcbiAgICAgICAgICAgICAgICBncmFwaCApXG4gICAgICAgICAgICAgIHMuc3RvcmllcztcbiAgICAgICAgfVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCByZWNlaXZlIHVwZGF0ZV9zdGF0ZSB4ID1cbiAgdXBkYXRlX3N0YXRlIChTdG9yeV9qc29uLm1lc3NhZ2Vfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG5sZXQgaW5pdF9zdGF0ZSAoKSA9XG4gIGxldCBjdXJyZW50X3N0YXRlID0gcmVmIGluaXRpYWxfc3RhdGUgaW5cbiAgY3VycmVudF9zdGF0ZSwgZnVuIHggLT4gY3VycmVudF9zdGF0ZSA6PSBjb250cm9sbGVyICFjdXJyZW50X3N0YXRlIHhcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5wb3N0IGN1cnJlbnRfc3RhdGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBgU3RyaW5nIFwiQ09ORklHXCI7XG4gICAgICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgIFwibm9uZVwiLCBgQm9vbCBjYXVzYWw7XG4gICAgICAgICAgICAgICAgICAgICAgIFwid2Vha1wiLCBgQm9vbCB3ZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICBcInN0cm9uZ1wiLCBgQm9vbCBzdHJvbmc7XG4gICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LnJldHVybl9vayAoKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgYWdlbnQgaXMgZGVhZFwiXG5cbiAgICBtZXRob2QgcmF3X2xhdW5jaF9zdG9yeV9jb21wdXRhdGlvbiB0cmFjZV90ZXh0ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gY3VycmVudF9zdGF0ZSA6PSB7IGluaXRpYWxfc3RhdGUgd2l0aCBydW5uaW5nID0gdHJ1ZSB9IGluXG4gICAgICAgIGxldCAoKSA9IHBvc3QgKFwiW1xcXCJSVU5cXFwiLCBcIiBeIHRyYWNlX3RleHQgXiBcIl1cIikgaW5cbiAgICAgICAgTHd0LnJldHVybl9vayAoKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgYWdlbnQgaXMgZGVhZFwiXG5cbiAgICBtZXRob2Qgc3RvcnlfbG9nID0gIWN1cnJlbnRfc3RhdGUubG9nXG4gICAgbWV0aG9kIHN0b3J5X2lzX2NvbXB1dGluZyA9ICFjdXJyZW50X3N0YXRlLnJ1bm5pbmdcbiAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgPSAhY3VycmVudF9zdGF0ZS5wcm9ncmVzc1xuICAgIG1ldGhvZCBzdG9yeV9saXN0ID0gIWN1cnJlbnRfc3RhdGUuc3Rvcmllc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0ID1cbiAgKCBBcGlfdHlwZXNfdC5wbG90IG9wdGlvbixcbiAgICAoc3RyaW5nICogQXBpX3R5cGVzX3QuZGluKSBsaXN0LFxuICAgIHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQsXG4gICAgQXBpX3R5cGVzX3Quc25hcHNob3QgTW9kcy5TdHJpbmdNYXAudCxcbiAgICBzdHJpbmcsXG4gICAgc3RyaW5nIClcbiAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRcblxubGV0IGFwaV9zbmFwc2hvdF9kb3QgKHNuYXBzaG90IDogQXBpX3R5cGVzX3Quc25hcHNob3QpID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIChEYXRhLnByaW50X2RvdF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdFxuXG5sZXQgYXBpX3NuYXBzaG90X2thcHBhIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIChEYXRhLnByaW50X3NuYXBzaG90ID91dWlkOk5vbmUpIHNuYXBzaG90XG5cbmxldCBhcGlfc2ltdWxhdGlvbl9zdGF0dXMgKHByb2dyZXNzIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcylcbiAgICAoZGV0YWlsIDogc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyA9XG4gIGxldCBvdXRwdXQgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0ID1cbiAgICB7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90ID1cbiAgICAgICAgKG1hdGNoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgfCBTb21lIHBsb3QgLT4gTGlzdC5sZW5ndGggcGxvdC5EYXRhLnBsb3Rfc2VyaWVzKTtcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPVxuICAgICAgICBMaXN0Lmxlbmd0aCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5zaXplIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuc2l6ZSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKCk7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPVxuICAgICAgICBTdHJpbmcubGVuZ3RoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgfVxuICBpblxuICB7XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IG91dHB1dDtcbiAgfVxuXG4oKiByZXR1cm4gdGhlIGFnZW50IGNvdW50ICopXG5sZXQgYWdlbnRfY291bnQgKHNwZWNpZXMgOiBBcGlfdHlwZXNfdC5zaXRlX2dyYXBoKSA6IGludCA9IEFycmF5Lmxlbmd0aCBzcGVjaWVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG4oKiBFcnJvciBtZXNzYWdlcyAqKVxuXG4oKiogSW50ZXJmYWNlIHRvIGthcHBhIHJ1bnRpbWUgKilcbmxldCBtc2dfcHJvY2Vzc19ub3RfcGF1c2VkID0gXCJwcm9jZXNzIG5vdCBwYXVzZWRcIlxuXG4oKiogIFN5c3RlbSBwcm9jZXNzXG5cbiAgICAgVGhlc2UgYXJlIHN5c3RlbSBwcm9jZXNzIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdFxuICAgICB2YXJ5LlxuKilcbmNsYXNzIHR5cGUgc3lzdGVtX3Byb2Nlc3MgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6ID9leG46ZXhuIC0+IHN0cmluZyAtPiB1bml0IEx3dC50XG4gIG1ldGhvZCB5aWVsZCA6IHVuaXQgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgbWluX3J1bl9kdXJhdGlvbiA6IHVuaXQgLT4gZmxvYXRcbmVuZFxuXG4oKiogVHJpdmlhbCBpbXBsZW1lbnRhdGlvbiBwcmltYXJpbHkgZm9yIHVuaXQgdGVzdGluZy4gKilcbmNsYXNzIG51bGxfcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGxvZyA/ZXhuIChfIDogc3RyaW5nKSA9XG4gICAgICBpZ25vcmUgZXhuO1xuICAgICAgTHd0LnJldHVybl91bml0XG5cbiAgICBtZXRob2QgeWllbGQgKCkgPSBMd3QucmV0dXJuX3VuaXRcbiAgICBtZXRob2QgbWluX3J1bl9kdXJhdGlvbiAoKSA9IDAuMFxuICBlbmRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGlzX3J1bm5pbmc6IGJvb2w7XG4gIG11dGFibGUgcnVuX2ZpbmFsaXplOiBib29sO1xuICBtdXRhYmxlIHBhdXNlX2NvbmRpdGlvbjogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sO1xuICBwYXJzZWRfc2VlZDogaW50IG9wdGlvbjtcbiAgZHVtcElmRGVhZGxvY2tlZDogYm9vbDtcbiAgbWF4Q29uc2VjdXRpdmVDbGFzaDogaW50O1xuICBwYXR0ZXJuU2hhcmluZzogUGF0dGVybi5zaGFyaW5nX2xldmVsO1xuICBjb3VudGVyOiBDb3VudGVyLnQ7XG4gIGxvZ19idWZmZXI6IEJ1ZmZlci50O1xuICBsb2dfZm9ybTogRm9ybWF0LmZvcm1hdHRlcjtcbiAgbXV0YWJsZSBwbG90OiBEYXRhLnBsb3Q7XG4gIG11dGFibGUgc25hcHNob3RzOiBEYXRhLnNuYXBzaG90IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZGluczogKHN0cmluZyAqIERhdGEuZGluKSBsaXN0O1xuICBtdXRhYmxlIHNwZWNpZXM6XG4gICAgKGZsb2F0ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZmlsZXM6IHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZXJyb3JfbWVzc2FnZXM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgKCptdXRhYmxlKikgdHJhY2U6IEJ1ZmZlci50O1xuICBpbnB1dHNfYnVmZmVyOiBCdWZmZXIudDtcbiAgaW5wdXRzX2Zvcm06IEZvcm1hdC5mb3JtYXR0ZXI7XG4gIHBhcnNpbmdfY29tcGlsOiBBc3QucGFyc2luZ19jb21waWw7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICBtdXRhYmxlIGVudjogTW9kZWwudDtcbiAgbXV0YWJsZSBncmFwaDogUnVsZV9pbnRlcnByZXRlci50IG9wdGlvbjtcbiAgbXV0YWJsZSBzdGF0ZTogU3RhdGVfaW50ZXJwcmV0ZXIudDtcbiAgaW5pdF9sOiAoUHJpbWl0aXZlcy5hbGdfZXhwciAqIFByaW1pdGl2ZXMuZWxlbWVudGFyeV9ydWxlKSBsaXN0O1xuICBtdXRhYmxlIGxhc3R5aWVsZDogZmxvYXQ7XG59XG4oKiogU3RhdGUgb2YgdGhlIHJ1bm5pbmcgc2ltdWxhdGlvbi4gKilcblxubGV0IGNyZWF0ZV90IH5sb2dfZm9ybSB+bG9nX2J1ZmZlciB+Y29udGFjdF9tYXAgfmlucHV0c19idWZmZXIgfmlucHV0c19mb3JtXG4gICAgfmR1bXBJZkRlYWRsb2NrZWQgfm1heENvbnNlY3V0aXZlQ2xhc2ggfnBhdHRlcm5TaGFyaW5nIH5lbnYgfmNvdW50ZXIgfmdyYXBoXG4gICAgfnN0YXRlIH5pbml0X2wgfmxhc3R5aWVsZCB+cGFyc2luZ19jb21waWwgfnBhcnNlZF9zZWVkIDogdCA9XG4gIHtcbiAgICBpc19ydW5uaW5nID0gZmFsc2U7XG4gICAgcnVuX2ZpbmFsaXplID0gZmFsc2U7XG4gICAgcGF1c2VfY29uZGl0aW9uID0gQWxnX2V4cHIuRkFMU0U7XG4gICAgcGFyc2VkX3NlZWQ7XG4gICAgY291bnRlcjtcbiAgICBsb2dfYnVmZmVyO1xuICAgIGxvZ19mb3JtO1xuICAgIGR1bXBJZkRlYWRsb2NrZWQ7XG4gICAgbWF4Q29uc2VjdXRpdmVDbGFzaDtcbiAgICBwYXR0ZXJuU2hhcmluZztcbiAgICBwbG90ID0gRGF0YS5pbml0X3Bsb3QgZW52O1xuICAgIHNuYXBzaG90cyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGRpbnMgPSBbXTtcbiAgICBzcGVjaWVzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZmlsZXMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBlcnJvcl9tZXNzYWdlcyA9IFtdO1xuICAgIHRyYWNlID0gQnVmZmVyLmNyZWF0ZSAxMDI0O1xuICAgIGlucHV0c19idWZmZXI7XG4gICAgaW5wdXRzX2Zvcm07XG4gICAgcGFyc2luZ19jb21waWw7XG4gICAgY29udGFjdF9tYXA7XG4gICAgZW52O1xuICAgIGdyYXBoO1xuICAgIHN0YXRlO1xuICAgIGluaXRfbDtcbiAgICBsYXN0eWllbGQ7XG4gIH1cblxubGV0IHJlaW5pdGlhbGl6ZSB+b3V0cHV0cyByYW5kb21fc3RhdGUgdCA9XG4gIENvdW50ZXIucmVpbml0aWFsaXplIHQuY291bnRlcjtcbiAgKCogRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHQubG9nX2Zvcm0gKCk7XG4gICAgIEJ1ZmZlci5yZXNldCB0LmxvZ19idWZmZXI7KilcbiAgdC5pc19ydW5uaW5nIDwtIGZhbHNlO1xuICB0LnJ1bl9maW5hbGl6ZSA8LSBmYWxzZTtcbiAgdC5wYXVzZV9jb25kaXRpb24gPC0gQWxnX2V4cHIuRkFMU0U7XG4gIHQucGxvdCA8LSBEYXRhLmluaXRfcGxvdCB0LmVudjtcbiAgdC5zbmFwc2hvdHMgPC0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIHQuZGlucyA8LSBbXTtcbiAgdC5maWxlcyA8LSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgdC5lcnJvcl9tZXNzYWdlcyA8LSBbXTtcbiAgdC5ncmFwaCA8LVxuICAgIFNvbWVcbiAgICAgIChSdWxlX2ludGVycHJldGVyLmVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlOmZhbHNlIHJhbmRvbV9zdGF0ZSB0LmVudlxuICAgICAgICAgdC5jb3VudGVyKTtcbiAgdC5zdGF0ZSA8LVxuICAgIFN0YXRlX2ludGVycHJldGVyLmVtcHR5IH53aXRoX2RlbHRhX2FjdGl2aXRpZXM6ZmFsc2UgdC5jb3VudGVyIHQuZW52XG5cbmxldCBnZXRfZ3JhcGggKHQgOiB0KSA6IFJ1bGVfaW50ZXJwcmV0ZXIudCA9XG4gIE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZVxuICAgIH5leGNlcDpcbiAgICAgIChGYWlsdXJlIFwiTm8gcnVsZSBpbnRlcnByZXRlciBpbmZvIHJlYWR5OiBzaW11bGF0aW9uIG5vdCBzdGFydGVkIHByb3Blcmx5XCIpXG4gICAgdC5ncmFwaFxuXG5sZXQgc2V0X2dyYXBoICh0IDogdCkgKGdyYXBoIDogUnVsZV9pbnRlcnByZXRlci50KSA9IHQuZ3JhcGggPC0gU29tZSBncmFwaFxuXG5sZXQgY2F0Y2hfZXJyb3IgaGFuZGxlciA9IGZ1bmN0aW9uXG4gIHwgRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKChtZXNzYWdlLCByYW5nZSkgOiBzdHJpbmcgTG9jLmFubm90ZWQpIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoKG1lc3NhZ2UsIHJhbmdlKSA6IHN0cmluZyBMb2MuYW5ub3RlZCkgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgfCBFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yICgobWVzc2FnZSwgcmFuZ2UpIDogc3RyaW5nIExvYy5hbm5vdGVkKSAtPlxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICB8IEludmFsaWRfYXJndW1lbnQgZXJyb3IgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyAoXCJSdW50aW1lIGVycm9yIFwiIF4gZXJyb3IpKVxuICB8IGV4biAtPlxuICAgIGxldCBtZXNzYWdlID1cbiAgICAgIHRyeSBQcmludGV4Yy50b19zdHJpbmcgZXhuIHdpdGggXyAtPiBcInVuc3BlY2lmaWVkIGV4Y2VwdGlvbiB0aHJvd25cIlxuICAgIGluXG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSlcblxubGV0IHBhcnNlIH5wYXR0ZXJuU2hhcmluZyAocGFyc2luZ19jb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpIHZhcl9vdmVyd3JpdGVcbiAgICBzeXN0ZW1fcHJvY2VzcyA9XG4gIGxldCB5aWVsZCA9IHN5c3RlbV9wcm9jZXNzI3lpZWxkIGluXG4gIGxldCBsb2dfYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgbGV0IGxvZ19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgbG9nX2J1ZmZlciBpblxuICBsZXQgaW5wdXRzX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gIGxldCBpbnB1dHNfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGlucHV0c19idWZmZXIgaW5cbiAgbGV0IGNvbmYsIF8sIF8sIF8gPSBDb25maWd1cmF0aW9uLnBhcnNlIHBhcnNpbmdfY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyBpblxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IERhdGEucHJpbnRfd2FybmluZyB+cG9zIGxvZ19mb3JtIG1zZyBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBMd3Qud3JhcDJcbiAgICAgICAgKGZ1biB2YXJfb3ZlcndyaXRlIC0+XG4gICAgICAgICAgTEthcHBhX2NvbXBpbGVyLmNvbXBpbF9vZl9hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICAgIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQgfnZhcl9vdmVyd3JpdGUpXG4gICAgICAgIHZhcl9vdmVyd3JpdGUgcGFyc2luZ19jb21waWxcbiAgICAgID4+PSBmdW4gKGFzdF9jb21waWxlZF9kYXRhIDogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhKSAtPlxuICAgICAgeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgKCogVGhlIGxhc3QgeWllbGQgaXMgdXBkYXRlZCBhZnRlciB0aGUgbGFzdCB5aWVsZC5cbiAgICAgICAgIEl0IGlzIGdvdHRlbiBoZXJlIGZvciB0aGUgaW5pdGlhbCBsYXN0IHlpZWxkIHZhbHVlLiAqKVxuICAgICAgbGV0IGxhc3R5aWVsZCA9IFN5cy50aW1lICgpIGluXG4gICAgICB0cnlcbiAgICAgICAgKCogZXhjZXB0aW9uIHJhaXNlZCBieSBjb21waWxlIG11c3QgaGF2ZSB1c2VkIEx3dC5mYWlsLlxuICAgICAgICAgICBTb21ldGhpbmcgaXMgd3JvbmcgZm9yIG5vdyAqKVxuICAgICAgICBsZXQgb3V0cHV0cyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIGxvZ19mb3JtIFwiJXNALlwiIHNcbiAgICAgICAgICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIGxvZ19mb3JtIG1zZ1xuICAgICAgICAgIHwgRGF0YS5TbmFwc2hvdCBfIHwgRGF0YS5ESU4gXyB8IERhdGEuU3BlY2llcyBfXG4gICAgICAgICAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIHwgRGF0YS5QbG90IF8gfCBEYXRhLlRyYWNlU3RlcCBfXG4gICAgICAgICAgfCBEYXRhLlByaW50IF8gLT5cbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBFdmFsLmNvbXBpbGUgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICB+cGF1c2U6KGZ1biBmIC0+IEx3dC5iaW5kICh5aWVsZCAoKSkgZilcbiAgICAgICAgICB+cmV0dXJuOkx3dC5yZXR1cm4gP3Jlc2NhbGVfaW5pdDpOb25lID9vdmVyd3JpdGVfdDA6Tm9uZVxuICAgICAgICAgIH5jb21waWxlX21vZGVfb246ZmFsc2Ugfm91dHB1dHMgfnNoYXJpbmc6cGF0dGVyblNoYXJpbmdcbiAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnIGFzdF9jb21waWxlZF9kYXRhLmNvdW50ZXJzX2luZm9cbiAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS50b2tlbl9uYW1lcyBhc3RfY29tcGlsZWRfZGF0YS5jb250YWN0X21hcFxuICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLnJlc3VsdFxuICAgICAgICA+Pj0gZnVuIChlbnYsIF93aXRoX3RyYWNlLCBpbml0X2wpIC0+XG4gICAgICAgIGxldCBjb3VudGVyID1cbiAgICAgICAgICBDb3VudGVyLmNyZWF0ZVxuICAgICAgICAgICAgfmluaXRfdDooMC4gOiBmbG9hdClcbiAgICAgICAgICAgIH5pbml0X2U6KDAgOiBpbnQpXG4gICAgICAgICAgICA/bWF4X3RpbWU6Tm9uZSA/bWF4X2V2ZW50Ok5vbmUgfnBsb3RfcGVyaW9kOihDb25maWd1cmF0aW9uLkRUIDEuKVxuICAgICAgICAgICAgfm5iX3J1bGVzOihNb2RlbC5uYl9ydWxlcyBlbnYpICgpXG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IHBhcnNlZF9zZWVkID0gY29uZi5Db25maWd1cmF0aW9uLnNlZWQgaW5cbiAgICAgICAgRGF0YS5wcmludF9pbml0aWFsX2lucHV0cyA/dXVpZDpOb25lXG4gICAgICAgICAgeyBjb25mIHdpdGggQ29uZmlndXJhdGlvbi5zZWVkID0gcGFyc2VkX3NlZWQgfVxuICAgICAgICAgIGVudiBpbnB1dHNfZm9ybSBpbml0X2w7XG4gICAgICAgIGxldCBzaW11bGF0aW9uIDogdCA9XG4gICAgICAgICAgY3JlYXRlX3QgfmNvbnRhY3RfbWFwOmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwIH5sb2dfZm9ybVxuICAgICAgICAgICAgfmxvZ19idWZmZXIgfmlucHV0c19idWZmZXIgfmlucHV0c19mb3JtIH5wYXJzaW5nX2NvbXBpbCB+ZW52XG4gICAgICAgICAgICB+Y291bnRlciB+ZHVtcElmRGVhZGxvY2tlZDpjb25mLkNvbmZpZ3VyYXRpb24uZHVtcElmRGVhZGxvY2tlZFxuICAgICAgICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2g6Y29uZi5Db25maWd1cmF0aW9uLm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgICAgICAgIH5wYXR0ZXJuU2hhcmluZyB+Z3JhcGg6Tm9uZVxuICAgICAgICAgICAgfnN0YXRlOlxuICAgICAgICAgICAgICAoU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllczpmYWxzZSBjb3VudGVyIGVudilcbiAgICAgICAgICAgIH5pbml0X2wgfmxhc3R5aWVsZCB+cGFyc2VkX3NlZWRcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbilcbiAgICAgIHdpdGggZSAtPlxuICAgICAgICAoY2F0Y2hfZXJyb3IgKGZ1biB4IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgeCBdKSkpIGUpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgb3V0cHV0cyAoc2ltdWxhdGlvbiA6IHQpID0gZnVuY3Rpb25cbiAgfCBEYXRhLkRJTiAoZmx1eF9uYW1lLCBmbHV4X21hcCkgLT5cbiAgICBzaW11bGF0aW9uLmRpbnMgPC0gKGZsdXhfbmFtZSwgZmx1eF9tYXApIDo6IHNpbXVsYXRpb24uZGluc1xuICB8IERhdGEuRGVsdGFBY3Rpdml0aWVzIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRGF0YS5QbG90IG5ld19vYnNlcnZhYmxlcyAtPlxuICAgIHNpbXVsYXRpb24ucGxvdCA8LSBEYXRhLmFkZF9wbG90X2xpbmUgbmV3X29ic2VydmFibGVzIHNpbXVsYXRpb24ucGxvdFxuICB8IERhdGEuU3BlY2llcyAoZmlsZSwgdGltZSwgbWl4KSAtPlxuICAgIGxldCBwID0gTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IFtdIGZpbGUgc2ltdWxhdGlvbi5zcGVjaWVzIGluXG4gICAgc2ltdWxhdGlvbi5zcGVjaWVzIDwtXG4gICAgICBNb2RzLlN0cmluZ01hcC5hZGQgZmlsZSAoKHRpbWUsIG1peCkgOjogcCkgc2ltdWxhdGlvbi5zcGVjaWVzXG4gIHwgRGF0YS5QcmludCBmaWxlX2xpbmUgLT5cbiAgICAobWF0Y2ggZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX25hbWUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgc2ltdWxhdGlvbi5sb2dfZm9ybSBcIiVzQC5cIiBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfdGV4dFxuICAgIHwgU29tZSBuYSAtPlxuICAgICAgbGV0IGxpbmVzID0gTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IFtdIG5hIHNpbXVsYXRpb24uZmlsZXMgaW5cbiAgICAgIHNpbXVsYXRpb24uZmlsZXMgPC1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIG5hXG4gICAgICAgICAgKGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV90ZXh0IDo6IGxpbmVzKVxuICAgICAgICAgIHNpbXVsYXRpb24uZmlsZXMpXG4gIHwgRGF0YS5TbmFwc2hvdCAoZmlsZW5hbWUsIHNuYXBzaG90KSAtPlxuICAgIGxldCBhbHJlYWR5X3RoZXJlIHggPSBNb2RzLlN0cmluZ01hcC5tZW0geCBzaW11bGF0aW9uLnNuYXBzaG90cyBpblxuICAgIGxldCBzbmFwc2hvdF9maWxlID1cbiAgICAgIFRvb2xzLmZpbmRfYXZhaWxhYmxlX25hbWUgfmFscmVhZHlfdGhlcmUgZmlsZW5hbWVcbiAgICAgICAgfmZhY3VsdGF0aXZlOihzdHJpbmdfb2ZfaW50IHNuYXBzaG90LkRhdGEuc25hcHNob3RfZXZlbnQpXG4gICAgICAgIH5leHQ6Tm9uZVxuICAgIGluXG4gICAgc2ltdWxhdGlvbi5zbmFwc2hvdHMgPC1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBzbmFwc2hvdF9maWxlIHNuYXBzaG90IHNpbXVsYXRpb24uc25hcHNob3RzXG4gIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQuZnByaW50ZiBzaW11bGF0aW9uLmxvZ19mb3JtIFwiJXNALlwiIHNcbiAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBzaW11bGF0aW9uLmxvZ19mb3JtIG1zZ1xuICB8IERhdGEuVHJhY2VTdGVwIHN0IC0+XG4gICAgaWYgQnVmZmVyLmxlbmd0aCBzaW11bGF0aW9uLnRyYWNlIDw+IDAgdGhlblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHNpbXVsYXRpb24udHJhY2UgJywnO1xuICAgIFRyYWNlLndyaXRlX3N0ZXAgc2ltdWxhdGlvbi50cmFjZSBzdFxuXG5sZXQgaW50ZXJhY3RpdmVfb3V0cHV0cyBmb3JtYXR0ZXIgdCA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlc0AuXCIgc1xuICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIGZvcm1hdHRlciBtc2dcbiAgfCBEYXRhLlByaW50IGZpbGVfbGluZSB3aGVuIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV9uYW1lID0gTm9uZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiVzQC5cIiBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfdGV4dFxuICB8ICggRGF0YS5ESU4gXyB8IERhdGEuRGVsdGFBY3Rpdml0aWVzIF8gfCBEYXRhLlBsb3QgXyB8IERhdGEuU3BlY2llcyBfXG4gICAgfCBEYXRhLlByaW50IF8gfCBEYXRhLlNuYXBzaG90IF8gfCBEYXRhLlRyYWNlU3RlcCBfICkgYXMgdiAtPlxuICAgIG91dHB1dHMgdCB2XG5cbmxldCB0aW1lX3lpZWxkIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOiB1bml0IEx3dC50ID1cbiAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICBpZiB0aW1lIC0uIHQubGFzdHlpZWxkID4gc3lzdGVtX3Byb2Nlc3MjbWluX3J1bl9kdXJhdGlvbiAoKSB0aGVuIChcbiAgICB0Lmxhc3R5aWVsZCA8LSB0aW1lO1xuICAgIHN5c3RlbV9wcm9jZXNzI3lpZWxkICgpXG4gICkgZWxzZVxuICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgZmluYWxpemVfc2ltdWxhdGlvbiB+KHQgOiB0KSA6IHVuaXQgPVxuICBTdGF0ZV9pbnRlcnByZXRlci5lbmRfb2Zfc2ltdWxhdGlvbiB+b3V0cHV0czoob3V0cHV0cyB0KSB0LmVudiB0LmNvdW50ZXJcbiAgICAoZ2V0X2dyYXBoIHQpIHQuc3RhdGVcblxubGV0IHJ1bl9zaW11bGF0aW9uIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgc3RvcHBlZCA6XG4gICAgdW5pdCBMd3QudCA9XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCByc3RvcCA9IHJlZiBzdG9wcGVkIGluXG4gICAgICB0LmlzX3J1bm5pbmcgPC0gdHJ1ZTtcbiAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICh0cnlcbiAgICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgICAobm90ICFyc3RvcClcbiAgICAgICAgICAgICAmJiBTeXMudGltZSAoKSAtLiB0Lmxhc3R5aWVsZCA8IHN5c3RlbV9wcm9jZXNzI21pbl9ydW5fZHVyYXRpb24gKClcbiAgICAgICAgICAgZG9cbiAgICAgICAgICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScgPVxuICAgICAgICAgICAgICAgU3RhdGVfaW50ZXJwcmV0ZXIuYV9sb29wIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgICAgIH5kdW1wSWZEZWFkbG9ja2VkOnQuZHVtcElmRGVhZGxvY2tlZFxuICAgICAgICAgICAgICAgICB+bWF4Q29uc2VjdXRpdmVDbGFzaDp0Lm1heENvbnNlY3V0aXZlQ2xhc2ggdC5lbnYgdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgIChnZXRfZ3JhcGggdCkgdC5zdGF0ZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgcnN0b3AgOj1cbiAgICAgICAgICAgICAgIHN0b3BcbiAgICAgICAgICAgICAgIHx8IFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCB0LmNvdW50ZXIgZ3JhcGgnIHQucGF1c2VfY29uZGl0aW9uO1xuICAgICAgICAgICAgIHNldF9ncmFwaCB0IGdyYXBoJztcbiAgICAgICAgICAgICB0LnN0YXRlIDwtIHN0YXRlJ1xuICAgICAgICAgICBkb25lO1xuICAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgIHdpdGggZSAtPiBMd3QuZmFpbCBlKVxuICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgIGlmICFyc3RvcCB0aGVuIChcbiAgICAgICAgICB0LmlzX3J1bm5pbmcgPC0gZmFsc2U7XG4gICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICAgICkgZWxzZSBpZiB0LmlzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgICAgc3lzdGVtX3Byb2Nlc3MjeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgICAgIHQubGFzdHlpZWxkIDwtIFN5cy50aW1lICgpO1xuICAgICAgICAgIGl0ZXIgKClcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICBpblxuICAgICAgaXRlciAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICBpZiB0LnJ1bl9maW5hbGl6ZSB0aGVuIGZpbmFsaXplX3NpbXVsYXRpb24gfnQ7XG4gICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPlxuICAgICAgICAgdC5pc19ydW5uaW5nIDwtIGZhbHNlO1xuICAgICAgICAgdC5lcnJvcl9tZXNzYWdlcyA8LSBbIGUgXTtcbiAgICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG5cbigqKiBTdGFydCB0aGUgc2ltdWxhdGlvbiBmcm9tIHRoZSBwYXJhbWV0ZXJzIGFuZCB1c2luZyB0aGUgcGFyc2VkIHN0YXRlLlxuXG4gICAgICAgIFJldHVybnMgdGhlIHNlZWQgdXNlZCwgYXMgaXQgaXMgZGVmaW5lZCBoZXJlIGlmIG5vbiBzcGVjaWZpZWQgKilcbmxldCBzdGFydCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpXG4gICAgfihwYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcikgfih0IDogdCkgOlxuICAgIChpbnQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCBsZXhidWYgPVxuICAgIExleGluZy5mcm9tX3N0cmluZyBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb25cbiAgaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgKCpsZXQgKCkgPVxuICAgICAgICAgIENvdW50ZXIuc2V0X21heF90aW1lXG4gICAgICAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9tYXhfdGltZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBDb3VudGVyLnNldF9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgICBpbiAqKVxuICAgICAgbGV0IHNpbXVsYXRpb25fc2VlZCA6IGludCA9XG4gICAgICAgIG1hdGNoIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgd2l0aFxuICAgICAgICB8IFNvbWUgdXNlcl9zZWVkIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5sb2dfZm9ybSBcIlVzZXItc2V0IHNlZWQgdXNlZCBmb3Igc2ltdWxhdGlvbjogJWlALlwiXG4gICAgICAgICAgICB1c2VyX3NlZWQ7XG4gICAgICAgICAgKG1hdGNoIHQucGFyc2VkX3NlZWQgd2l0aFxuICAgICAgICAgIHwgU29tZSBwYXJzZWRfc2VlZCAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5sb2dfZm9ybSBcIldBUk5JTkc6IGlnbm9yZWQgc2VlZCBmcm9tIHBhcnNpbmc6ICVpQC5cIlxuICAgICAgICAgICAgICBwYXJzZWRfc2VlZFxuICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgICAgdXNlcl9zZWVkXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCB0LnBhcnNlZF9zZWVkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgcGFyc2VkX3NlZWQgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQubG9nX2Zvcm0gXCJQYXJzZWQgc2VlZCBzZXQgZm9yIHNpbXVsYXRpb246ICVpQC5cIlxuICAgICAgICAgICAgICBwYXJzZWRfc2VlZDtcbiAgICAgICAgICAgIHBhcnNlZF9zZWVkXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoKiBpbml0IHJhbmRvbSB0byBnZW5lcmF0ZSBzZWVkICopXG4gICAgICAgICAgICBSYW5kb20uc2VsZl9pbml0ICgpO1xuICAgICAgICAgICAgbGV0IHJhbmRvbV9zZWVkID0gUmFuZG9tLmJpdHMgKCkgaW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQubG9nX2Zvcm0gXCJSYW5kb20gc2VlZCB1c2VkIGZvciBzaW11bGF0aW9uOiAlaUAuXCJcbiAgICAgICAgICAgICAgcmFuZG9tX3NlZWQ7XG4gICAgICAgICAgICByYW5kb21fc2VlZClcbiAgICAgIGluXG4gICAgICBsZXQgcmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLm1ha2UgW3wgc2ltdWxhdGlvbl9zZWVkIHxdIGluXG4gICAgICByZWluaXRpYWxpemUgcmFuZG9tX3N0YXRlIH5vdXRwdXRzOihvdXRwdXRzIHQpIHQ7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBhdXNlID0gS3BhcnNlcjQuc3RhbmRhbG9uZV9ib29sX2V4cHIgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgTHd0LndyYXA0XG4gICAgICAgICAgKEV2YWx1YXRvci5nZXRfcGF1c2VfY3JpdGVyaWEgfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICB+c2hhcmluZzp0LnBhdHRlcm5TaGFyaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQpXG4gICAgICAgICAgdC5jb250YWN0X21hcCB0LmVudiAoZ2V0X2dyYXBoIHQpIHBhdXNlXG4gICAgICAgID4+PSBmdW4gKGVudicsIGdyYXBoJywgYicnKSAtPlxuICAgICAgICB0LmVudiA8LSBlbnYnO1xuICAgICAgICBzZXRfZ3JhcGggdCBncmFwaCc7XG4gICAgICAgIHQucGF1c2VfY29uZGl0aW9uIDwtIGInJztcbiAgICAgICAgQ291bnRlci5zZXRfcGxvdF9wZXJpb2QgdC5jb3VudGVyXG4gICAgICAgICAgKENvbmZpZ3VyYXRpb24uRFQgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fcGxvdF9wZXJpb2QpO1xuICAgICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICgqIGV4Y2VwdGlvbiByYWlzZWQgYnkgYnVpbGRfaW5pdGlhbF9zdGF0ZSBtdXN0IGhhdmUgYmVlblxuICAgICAgICAgICAgICAgICByYWlzZWQgd2l0aCBMd3QuZmFpbC4gU29tZXRoaW5nIGlzIHdyb25nIGZvciBub3cuLi4gKilcbiAgICAgICAgICAgICAgRXZhbC5idWlsZF9pbml0aWFsX3N0YXRlXG4gICAgICAgICAgICAgICAgfmJpbmQ6KGZ1biB4IGYgLT5cbiAgICAgICAgICAgICAgICAgIHRpbWVfeWllbGQgfnN5c3RlbV9wcm9jZXNzIH50ID4+PSBmdW4gKCkgLT4geCA+Pj0gZilcbiAgICAgICAgICAgICAgICB+cmV0dXJuOkx3dC5yZXR1cm4gfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICAgICB+d2l0aF90cmFjZTpwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zdG9yZV90cmFjZVxuICAgICAgICAgICAgICAgIH53aXRoX2RlbHRhX2FjdGl2aXRpZXM6ZmFsc2UgdC5jb3VudGVyIHQuZW52IHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAgICAgIHQuaW5pdF9sXG4gICAgICAgICAgICAgID4+PSBmdW4gKHN0b3AsIGdyYXBoLCBzdGF0ZSkgLT5cbiAgICAgICAgICAgICAgc2V0X2dyYXBoIHQgZ3JhcGg7XG4gICAgICAgICAgICAgIHQuc3RhdGUgPC0gc3RhdGU7XG4gICAgICAgICAgICAgIGxldCBmaXJzdF9vYnMgPVxuICAgICAgICAgICAgICAgIFN0YXRlX2ludGVycHJldGVyLm9ic2VydmFibGVzX3ZhbHVlcyB0LmVudiAoZ2V0X2dyYXBoIHQpXG4gICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgdC5wbG90IDwtIERhdGEuYWRkX3Bsb3RfbGluZSBmaXJzdF9vYnMgdC5wbG90O1xuICAgICAgICAgICAgICBydW5fc2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnQgc3RvcFxuICAgICAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgICAgIGNhdGNoX2Vycm9yXG4gICAgICAgICAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICB0LmVycm9yX21lc3NhZ2VzIDwtIFsgZSBdO1xuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgICAgIGUpO1xuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzaW11bGF0aW9uX3NlZWQpXG4gICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyB+cmFuZ2UgbWVzc2FnZSkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPlxuICAgICAgICAgdC5lcnJvcl9tZXNzYWdlcyA8LSBbIGUgXTtcbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwYXVzZSB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgaWdub3JlIHN5c3RlbV9wcm9jZXNzO1xuICBpZ25vcmUgdDtcbiAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICB0LmlzX3J1bm5pbmcgPC0gZmFsc2VcbiAgZWxzZVxuICAgICgpO1xuICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxubGV0IHN0b3AgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGlnbm9yZSBzeXN0ZW1fcHJvY2VzcztcbiAgaWdub3JlIHQ7XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIHQucnVuX2ZpbmFsaXplIDwtIHRydWU7XG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBwYXVzZSB+c3lzdGVtX3Byb2Nlc3MgfnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBmaW5hbGl6ZV9zaW11bGF0aW9uIH50O1xuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgcGVydHVyYmF0aW9uIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdClcbiAgICB+KHBlcnR1cmJhdGlvbiA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKSA6XG4gICAgKHN0cmluZywgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgaWdub3JlIHN5c3RlbV9wcm9jZXNzO1xuICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHBlcnR1cmJhdGlvbiBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIG1zZ19wcm9jZXNzX25vdF9wYXVzZWQpXG4gICAgICBlbHNlIChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGUgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2VmZmVjdF9saXN0IEtsZXhlcjQudG9rZW4gbGV4YnVmIGluXG4gICAgICAgICAgbGV0IGxvZ19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICAgICAgICAgIGxldCBsb2dfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGxvZ19idWZmZXIgaW5cbiAgICAgICAgICBMd3Qud3JhcDZcbiAgICAgICAgICAgIChFdmFsdWF0b3IuZG9faW50ZXJhY3RpdmVfZGlyZWN0aXZlcyB+ZGVidWdfbW9kZTpmYWxzZVxuICAgICAgICAgICAgICAgfm91dHB1dHM6KGludGVyYWN0aXZlX291dHB1dHMgbG9nX2Zvcm0gdClcbiAgICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICAgIHQuY29udGFjdF9tYXAgdC5lbnYgdC5jb3VudGVyIChnZXRfZ3JhcGggdCkgdC5zdGF0ZSBlXG4gICAgICAgICAgPj49IGZ1biAoZScsIChlbnYnLCAoXywgZ3JhcGgnJywgc3RhdGUnKSkpIC0+XG4gICAgICAgICAgdC5lbnYgPC0gZW52JztcbiAgICAgICAgICBzZXRfZ3JhcGggdCBncmFwaCcnO1xuICAgICAgICAgIHQuc3RhdGUgPC0gc3RhdGUnO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQubG9nX2Zvcm0gXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiXG4gICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IHQuY291bnRlcilcbiAgICAgICAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnY6dC5lbnYpKVxuICAgICAgICAgICAgZSc7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5pbnB1dHNfZm9ybSBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCJcbiAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgdC5jb3VudGVyKVxuICAgICAgICAgICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uXG4gICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZmFsc2UgfmVudjp0LmVudikpXG4gICAgICAgICAgICBlJztcbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoQnVmZmVyLmNvbnRlbnRzIGxvZ19idWZmZXIpKVxuICAgICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIH5yYW5nZSBtZXNzYWdlKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBjb250aW51ZSB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpXG4gICAgfihwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBwYXVzZV9jb25kaXRpb24gaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICBlbHNlIChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IHBhdXNlID0gS3BhcnNlcjQuc3RhbmRhbG9uZV9ib29sX2V4cHIgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgICBMd3Qud3JhcDRcbiAgICAgICAgICAgIChFdmFsdWF0b3IuZ2V0X3BhdXNlX2NyaXRlcmlhIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgICB+c2hhcmluZzp0LnBhdHRlcm5TaGFyaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQpXG4gICAgICAgICAgICB0LmNvbnRhY3RfbWFwIHQuZW52IChnZXRfZ3JhcGggdCkgcGF1c2VcbiAgICAgICAgICA+Pj0gZnVuIChlbnYnLCBncmFwaCcsIGInJykgLT5cbiAgICAgICAgICB0LmVudiA8LSBlbnYnO1xuICAgICAgICAgIHNldF9ncmFwaCB0IGdyYXBoJztcbiAgICAgICAgICB0LnBhdXNlX2NvbmRpdGlvbiA8LSBiJyc7XG4gICAgICAgICAgKCpsZXQgKCkgPVxuICAgICAgICAgICAgQ291bnRlci5zZXRfbWF4X3RpbWVcbiAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fbWF4X3RpbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgQ291bnRlci5zZXRfbWF4X2V2ZW50c1xuICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9tYXhfZXZlbnRzXG4gICAgICAgICAgICBpbiopXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEx3dC5hc3luYyAoZnVuICgpIC0+IHJ1bl9zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+dCBmYWxzZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIH5yYW5nZSBtZXNzYWdlKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwcm9ncmVzcyB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcywgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50XG4gICAgTHd0LnQgPVxuICBpZ25vcmUgc3lzdGVtX3Byb2Nlc3M7XG4gIGlnbm9yZSB0O1xuICBtYXRjaCB0LmVycm9yX21lc3NhZ2VzIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID1cbiAgICAgICAgICAgICAgICAgQ291bnRlci5jdXJyZW50X3RpbWUgdC5jb3VudGVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgPVxuICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAoZnVuIHggLT4gaW50X29mX2Zsb2F0ICh4ICouIDEwMC4pKVxuICAgICAgICAgICAgICAgICAgIChDb3VudGVyLnRpbWVfcmF0aW8gdC5jb3VudGVyKTtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgPVxuICAgICAgICAgICAgICAgICBDb3VudGVyLmN1cnJlbnRfZXZlbnQgdC5jb3VudGVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID1cbiAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgKGZ1biB4IC0+IGludF9vZl9mbG9hdCAoeCAqLiAxMDAuKSlcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5ldmVudF9yYXRpbyB0LmNvdW50ZXIpO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgIENvdW50ZXIudHJhY2tlZF9ldmVudHMgdC5jb3VudGVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nID0gdC5pc19ydW5uaW5nO1xuICAgICAgICAgICAgIH0pKVxuICAgICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuICB8IF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgdC5lcnJvcl9tZXNzYWdlcylcblxubGV0IG91dHB1dHMgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50XG4gICAgTHd0LnQgPVxuICBpZ25vcmUgc3lzdGVtX3Byb2Nlc3M7XG4gIGlnbm9yZSB0O1xuICBtYXRjaCB0LmVycm9yX21lc3NhZ2VzIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IFNvbWUgdC5wbG90O1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IHQuZGlucztcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSB0LmZpbGVzO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gdC5zbmFwc2hvdHM7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPVxuICAgICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgdC5pbnB1dHNfYnVmZmVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID1cbiAgICAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIHQubG9nX2J1ZmZlcjtcbiAgICAgICAgICAgICB9KSlcbiAgICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcbiAgfCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIHQuZXJyb3JfbWVzc2FnZXMpXG5cbmxldCBlZmZpY2llbmN5IHQgPSBDb3VudGVyLmdldF9lZmZpY2llbmN5IHQuY291bnRlclxuXG5sZXQgZ2V0X3Jhd190cmFjZSAodCA6IHQpIDogc3RyaW5nID1cbiAgSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlXG4gICAgKGZ1biBvYiB0IC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaWN0XCJcbiAgICAgICAgKGZ1biBvYiAoKSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgQWdlbnQuanNvbl9kaWN0aW9ubmFyeTtcbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9jb21tYSBvYjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBJbnN0YW50aWF0aW9uLmpzb25fZGljdGlvbm5hcnk7XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfY29tbWEgb2I7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmpzb25fZGljdGlvbm5hcnk7XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfY29tbWEgb2I7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgVHJhY2UuanNvbl9kaWN0aW9ubmFyeTtcbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nKVxuICAgICAgICBvYiAoKTtcbiAgICAgIEpzb25VdGlsLndyaXRlX2NvbW1hIG9iO1xuICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJtb2RlbFwiIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIG9iXG4gICAgICAgIChNb2RlbC50b195b2pzb24gdC5lbnYpO1xuICAgICAgSnNvblV0aWwud3JpdGVfY29tbWEgb2I7XG4gICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInRyYWNlXCIgQnVmZmVyLmFkZF9zdHJpbmcgb2JcbiAgICAgICAgKFwiW1wiIF4gQnVmZmVyLmNvbnRlbnRzIHQudHJhY2UpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJdfVwiKVxuICAgIHRcblxubGV0IGdldF9yYXdfYXN0IHQgPSBZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gdC5wYXJzaW5nX2NvbXBpbClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmNsYXNzIHNpbXVsYXRpb24gKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudClcbiAgKHNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIDpcbiAgQXBpX2Vudmlyb25tZW50LnNpbXVsYXRpb24gPVxuICBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBfcnVudGltZV9zdGF0ZSA9IHJ1bnRpbWVfc3RhdGVcbiAgICB2YWwgbXV0YWJsZSBfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgIG1ldGhvZCBnZXRfcnVudGltZV9zdGF0ZSAoKSA9IF9ydW50aW1lX3N0YXRlXG5cbiAgICBtZXRob2Qgc2V0X3J1bnRpbWVfc3RhdGUgKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudCkgPVxuICAgICAgX3J1bnRpbWVfc3RhdGUgPC0gcnVudGltZV9zdGF0ZVxuXG4gICAgbWV0aG9kIGdldF9zaW11bGF0aW9uX3BhcmFtZXRlciAoKSA9IF9zaW11bGF0aW9uX3BhcmFtZXRlclxuXG4gICAgbWV0aG9kIHNldF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOiB1bml0ID1cbiAgICAgIF9zaW11bGF0aW9uX3BhcmFtZXRlciA8LSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICBlbmRcblxuY2xhc3MgcHJvamVjdCA6IEFwaV9lbnZpcm9ubWVudC5wcm9qZWN0ID1cbiAgb2JqZWN0XG4gICAgdmFsIG11dGFibGUgX3NpbXVsYXRpb24gPSBOb25lXG5cbiAgICB2YWwgbXV0YWJsZSBfc3RhdGUgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgb3B0aW9uIEx3dC50ID1cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG4gICAgbWV0aG9kIGdldF9zaW11bGF0aW9uICgpID0gX3NpbXVsYXRpb25cbiAgICBtZXRob2QgdW5zZXRfc2ltdWxhdGlvbiAoKSA9IF9zaW11bGF0aW9uIDwtIE5vbmVcblxuICAgIG1ldGhvZCBzZXRfc2ltdWxhdGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudCkgPVxuICAgICAgX3NpbXVsYXRpb24gPC1cbiAgICAgICAgU29tZVxuICAgICAgICAgIChuZXcgc2ltdWxhdGlvbiBydW50aW1lX3N0YXRlIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICA6PiBBcGlfZW52aXJvbm1lbnQuc2ltdWxhdGlvbilcblxuICAgIG1ldGhvZCBzZXRfcGFyc2Vfc3RhdGUgKHN0YXRlIDogQXBpX2Vudmlyb25tZW50LnBhcnNlX3N0YXRlIEx3dC50KSA9XG4gICAgICBsZXQgKCkgPSBMd3QuY2FuY2VsIF9zdGF0ZSBpblxuICAgICAgX3N0YXRlIDwtIChzdGF0ZSA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoU29tZSB4KSlcblxuICAgIG1ldGhvZCBnZXRfcGFyc2Vfc3RhdGUgKCkgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgb3B0aW9uIEx3dC50ID1cbiAgICAgIF9zdGF0ZVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgKEZyb20pIFRoZSBDYW1sWmlwIGxpYnJhcnkgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMjAwMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKilcbigqICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogV3JpdGUgdW5lZmZpY2llbnRseSBidXQgaW4gcHVyZSBPQ2FtbCB1bmNvbXByZXNzZWQgWklQIGFyY2hpdmVzICopXG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IHdyaXRlMSBvYyBuID0gQmlnYnVmZmVyLmFkZF9jaGFyIG9jIChDaGFyLnVuc2FmZV9jaHIgbilcblxubGV0IHdyaXRlMiBvYyBuID1cbiAgd3JpdGUxIG9jIG47XG4gIHdyaXRlMSBvYyAobiBsc3IgOClcblxubGV0IHdyaXRlNCBvYyBuID1cbiAgd3JpdGUyIG9jIChJbnQzMi50b19pbnQgbik7XG4gIHdyaXRlMiBvYyAoSW50MzIudG9faW50IChJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIG4gMTYpKVxuXG5sZXQgd3JpdGU0X2ludCBvYyBuID1cbiAgd3JpdGUyIG9jIG47XG4gIHdyaXRlMiBvYyAobiBsc3IgMTYpXG5cbmxldCB3cml0ZXN0cmluZyBvYyBzID0gQmlnYnVmZmVyLmFkZF9zdHJpbmcgb2Mgc1xuXG50eXBlIGNvbXByZXNzaW9uX21ldGhvZCA9IFN0b3JlZFxuXG50eXBlIGVudHJ5ID0ge1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICBleHRyYTogc3RyaW5nO1xuICBjb21tZW50OiBzdHJpbmc7XG4gIG1ldGhkOiBjb21wcmVzc2lvbl9tZXRob2Q7XG4gIG10aW1lOiBmbG9hdDtcbiAgY3JjOiBpbnQzMjtcbiAgdW5jb21wcmVzc2VkX3NpemU6IGludDtcbiAgY29tcHJlc3NlZF9zaXplOiBpbnQ7XG4gICgqaXNfZGlyZWN0b3J5OiBib29sOyopXG4gIGZpbGVfb2Zmc2V0OiBpbnQzMjtcbn1cblxudHlwZSBvdXRfZmlsZSA9IHtcbiAgb2ZfZmlsZW5hbWU6IHN0cmluZztcbiAgb2ZfY2hhbm5lbDogQmlnYnVmZmVyLnQ7XG4gIG11dGFibGUgb2ZfZW50cmllczogZW50cnkgbGlzdDtcbiAgb2ZfY29tbWVudDogc3RyaW5nO1xufVxuXG4oKmxldCBmaWxlbmFtZV9pc19kaXJlY3RvcnkgbmFtZSA9XG4gIFN0cmluZy5sZW5ndGggbmFtZSA+IDAgJiYgbmFtZS5bU3RyaW5nLmxlbmd0aCBuYW1lIC0gMV0gPSAnLycqKVxuXG4oKiBDb252ZXJ0IGJldHdlZW4gVW5peCBkYXRlcyBhbmQgRE9TIGRhdGVzICopXG5cbmxldCBkb3N0aW1lX29mX3VuaXh0aW1lIHQgPVxuICBsZXQgdG0gPSBVbml4LmxvY2FsdGltZSB0IGluXG4gICggKHRtLlVuaXgudG1fc2VjIGxzciAxKSArICh0bS5Vbml4LnRtX21pbiBsc2wgNSkgKyAodG0uVW5peC50bV9ob3VyIGxzbCAxMSksXG4gICAgdG0uVW5peC50bV9tZGF5XG4gICAgKyAoKHRtLlVuaXgudG1fbW9uICsgMSkgbHNsIDUpXG4gICAgKyAoKHRtLlVuaXgudG1feWVhciAtIDgwKSBsc2wgOSkgKVxuXG4oKiBPcGVuIGEgWklQIGZpbGUgZm9yIHdyaXRpbmcgKilcblxubGV0IG9wZW5fb3V0ID8oY29tbWVudCA9IFwiXCIpIGZpbGVuYW1lID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBjb21tZW50ID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAoZmlsZW5hbWUsIFwiXCIsIFwiY29tbWVudCB0b28gbG9uZ1wiKSk7XG4gIHtcbiAgICBvZl9maWxlbmFtZSA9IGZpbGVuYW1lO1xuICAgIG9mX2NoYW5uZWwgPSBCaWdidWZmZXIuY3JlYXRlIDgxOTI7XG4gICAgb2ZfZW50cmllcyA9IFtdO1xuICAgIG9mX2NvbW1lbnQgPSBjb21tZW50O1xuICB9XG5cbigqIENsb3NlIGEgWklQIGZpbGUgZm9yIHdyaXRpbmcuICBBZGQgY2VudHJhbCBkaXJlY3RvcnkuICopXG5cbmxldCB3cml0ZV9kaXJlY3RvcnlfZW50cnkgb2MgZSA9XG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDIwMTRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgbGV0IHZlcnNpb24gPVxuICAgIG1hdGNoIGUubWV0aGQgd2l0aFxuICAgIHwgU3RvcmVkIC0+IDEwXG4gIGluXG4gIHdyaXRlMiBvYyB2ZXJzaW9uO1xuICAoKiB2ZXJzaW9uIG1hZGUgYnkgKilcbiAgd3JpdGUyIG9jIHZlcnNpb247XG4gICgqIHZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgKilcbiAgd3JpdGUyIG9jIDg7XG4gICgqIGZsYWdzICopXG4gIHdyaXRlMiBvY1xuICAgIChtYXRjaCBlLm1ldGhkIHdpdGhcbiAgICB8IFN0b3JlZCAtPiAwKTtcbiAgKCogbWV0aG9kICopXG4gIGxldCB0aW1lLCBkYXRlID0gZG9zdGltZV9vZl91bml4dGltZSBlLm10aW1lIGluXG4gIHdyaXRlMiBvYyB0aW1lO1xuICAoKiBsYXN0IG1vZCB0aW1lICopXG4gIHdyaXRlMiBvYyBkYXRlO1xuICAoKiBsYXN0IG1vZCBkYXRlICopXG4gIHdyaXRlNCBvYyBlLmNyYztcbiAgKCogQ1JDMzIgKilcbiAgd3JpdGU0X2ludCBvYyBlLmNvbXByZXNzZWRfc2l6ZTtcbiAgKCogY29tcHJlc3NlZCBzaXplICopXG4gIHdyaXRlNF9pbnQgb2MgZS51bmNvbXByZXNzZWRfc2l6ZTtcbiAgKCogdW5jb21wcmVzc2VkIHNpemUgKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGUuZmlsZW5hbWUpO1xuICAoKiBmaWxlbmFtZSBsZW5ndGggKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGUuZXh0cmEpO1xuICAoKiBleHRyYSBsZW5ndGggKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGUuY29tbWVudCk7XG4gICgqIGNvbW1lbnQgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAwO1xuICAoKiBkaXNrIG51bWJlciBzdGFydCAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogaW50ZXJuYWwgYXR0cmlidXRlcyAqKVxuICB3cml0ZTRfaW50IG9jIDA7XG4gICgqIGV4dGVybmFsIGF0dHJpYnV0ZXMgKilcbiAgd3JpdGU0IG9jIGUuZmlsZV9vZmZzZXQ7XG4gICgqIG9mZnNldCBvZiBsb2NhbCBoZWFkZXIgKilcbiAgd3JpdGVzdHJpbmcgb2MgZS5maWxlbmFtZTtcbiAgKCogZmlsZW5hbWUgKilcbiAgd3JpdGVzdHJpbmcgb2MgZS5leHRyYTtcbiAgKCogZXh0cmEgaW5mbyAqKVxuICB3cml0ZXN0cmluZyBvYyBlLmNvbW1lbnQgKCogZmlsZSBjb21tZW50ICopXG5cbmxldCBjbG9zZV9vdXQgb2ZpbGUgPVxuICBsZXQgb2MgPSBvZmlsZS5vZl9jaGFubmVsIGluXG4gIGxldCBzdGFydF9jZCA9IEJpZ2J1ZmZlci5sZW5ndGggb2MgaW5cbiAgTGlzdC5pdGVyICh3cml0ZV9kaXJlY3RvcnlfZW50cnkgb2MpIChMaXN0LnJldiBvZmlsZS5vZl9lbnRyaWVzKTtcbiAgbGV0IGNkX3NpemUgPSBCaWdidWZmZXIubGVuZ3RoIG9jIC0gc3RhcnRfY2QgaW5cbiAgbGV0IG51bV9lbnRyaWVzID0gTGlzdC5sZW5ndGggb2ZpbGUub2ZfZW50cmllcyBpblxuICBpZiBudW1fZW50cmllcyA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBcIlwiLCBcInRvbyBtYW55IGVudHJpZXNcIikpO1xuICB3cml0ZTQgb2MgKEludDMyLm9mX2ludCAweDA2MDU0YjUwKTtcbiAgKCogc2lnbmF0dXJlICopXG4gIHdyaXRlMiBvYyAwO1xuICAoKiBkaXNrIG51bWJlciAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogbnVtYmVyIG9mIGRpc2sgd2l0aCBjZW50cmFsIGRpciAqKVxuICB3cml0ZTIgb2MgbnVtX2VudHJpZXM7XG4gICgqICMgZW50cmllcyBpbiB0aGlzIGRpc2sgKilcbiAgd3JpdGUyIG9jIG51bV9lbnRyaWVzO1xuICAoKiAjIGVudHJpZXMgaW4gY2VudHJhbCBkaXIgKilcbiAgd3JpdGU0X2ludCBvYyBjZF9zaXplO1xuICAoKiBzaXplIG9mIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlNF9pbnQgb2Mgc3RhcnRfY2Q7XG4gICgqIG9mZnNldCBvZiBjZW50cmFsIGRpciAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggb2ZpbGUub2ZfY29tbWVudCk7XG4gICgqIGxlbmd0aCBvZiBjb21tZW50ICopXG4gIHdyaXRlc3RyaW5nIG9jIG9maWxlLm9mX2NvbW1lbnQ7XG4gICgqIGNvbW1lbnQgKilcbiAgQmlnYnVmZmVyLmNvbnRlbnRzIG9jXG5cbigqIFdyaXRlIGEgbG9jYWwgZmlsZSBoZWFkZXIgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSAqKVxuXG5sZXQgYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIGZpbGVuYW1lID1cbiAgaWYgbGV2ZWwgPD4gMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiZmFrZV96aXAgY2Fubm90IGNvbXByZXNzXCIpKTtcbiAgaWYgU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBmaWxlbmFtZSwgXCJmaWxlbmFtZSB0b28gbG9uZ1wiKSk7XG4gIGlmIFN0cmluZy5sZW5ndGggZXh0cmEgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiZXh0cmEgZGF0YSB0b28gbG9uZ1wiKSk7XG4gIGlmIFN0cmluZy5sZW5ndGggY29tbWVudCA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBmaWxlbmFtZSwgXCJjb21tZW50IHRvbyBsb25nXCIpKTtcbiAgbGV0IG9jID0gb2ZpbGUub2ZfY2hhbm5lbCBpblxuICBsZXQgcG9zID0gQmlnYnVmZmVyLmxlbmd0aCBvYyBpblxuICB3cml0ZTQgb2MgKEludDMyLm9mX2ludCAweDA0MDM0YjUwKTtcbiAgKCogc2lnbmF0dXJlICopXG4gIGxldCB2ZXJzaW9uID1cbiAgICBpZiBsZXZlbCA9IDAgdGhlblxuICAgICAgMTBcbiAgICBlbHNlXG4gICAgICAyMFxuICBpblxuICB3cml0ZTIgb2MgdmVyc2lvbjtcbiAgKCogdmVyc2lvbiBuZWVkZWQgdG8gZXh0cmFjdCAqKVxuICB3cml0ZTIgb2MgODtcbiAgKCogZmxhZ3MgKilcbiAgd3JpdGUyIG9jXG4gICAgKGlmIGxldmVsID0gMCB0aGVuXG4gICAgICAgMFxuICAgICBlbHNlXG4gICAgICAgOCk7XG4gICgqIG1ldGhvZCAqKVxuICBsZXQgdGltZSwgZGF0ZSA9IGRvc3RpbWVfb2ZfdW5peHRpbWUgbXRpbWUgaW5cbiAgd3JpdGUyIG9jIHRpbWU7XG4gICgqIGxhc3QgbW9kIHRpbWUgKilcbiAgd3JpdGUyIG9jIGRhdGU7XG4gICgqIGxhc3QgbW9kIGRhdGUgKilcbiAgd3JpdGU0IG9jIEludDMyLnplcm87XG4gICgqIENSQzMyIC0gdG8gYmUgZmlsbGVkIGxhdGVyICopXG4gIHdyaXRlNF9pbnQgb2MgMDtcbiAgKCogY29tcHJlc3NlZCBzaXplIC0gbGF0ZXIgKilcbiAgd3JpdGU0X2ludCBvYyAwO1xuICAoKiB1bmNvbXByZXNzZWQgc2l6ZSAtIGxhdGVyICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSk7XG4gICgqIGZpbGVuYW1lIGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZXh0cmEpO1xuICAoKiBleHRyYSBsZW5ndGggKilcbiAgd3JpdGVzdHJpbmcgb2MgZmlsZW5hbWU7XG4gICgqIGZpbGVuYW1lICopXG4gIHdyaXRlc3RyaW5nIG9jIGV4dHJhO1xuICAoKiBleHRyYSBpbmZvICopXG4gIHtcbiAgICBmaWxlbmFtZTtcbiAgICBleHRyYTtcbiAgICBjb21tZW50O1xuICAgIG1ldGhkID0gU3RvcmVkO1xuICAgIG10aW1lO1xuICAgIGNyYyA9IEludDMyLnplcm87XG4gICAgdW5jb21wcmVzc2VkX3NpemUgPSAwO1xuICAgIGNvbXByZXNzZWRfc2l6ZSA9IDA7XG4gICAgKCppc19kaXJlY3RvcnkgPSBmaWxlbmFtZV9pc19kaXJlY3RvcnkgZmlsZW5hbWU7KilcbiAgICBmaWxlX29mZnNldCA9IEludDMyLm9mX2ludCBwb3M7XG4gIH1cblxuKCogV3JpdGUgYSBkYXRhIGRlc2NyaXB0b3IgYW5kIHVwZGF0ZSB0aGUgZW50cnkgKilcblxubGV0IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgY3JjIGNvbXByX3NpemUgdW5jb21wcl9zaXplIGVudHJ5ID1cbiAgbGV0IG9jID0gb2ZpbGUub2ZfY2hhbm5lbCBpblxuICB3cml0ZTQgb2MgKEludDMyLm9mX2ludCAweDA4MDc0YjUwKTtcbiAgKCogc2lnbmF0dXJlICopXG4gIHdyaXRlNCBvYyBjcmM7XG4gICgqIENSQyAqKVxuICB3cml0ZTRfaW50IG9jIGNvbXByX3NpemU7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAqKVxuICB3cml0ZTRfaW50IG9jIHVuY29tcHJfc2l6ZTtcbiAgKCogdW5jb21wcmVzc2VkIHNpemUgKilcbiAge1xuICAgIGVudHJ5IHdpdGhcbiAgICBjcmM7XG4gICAgdW5jb21wcmVzc2VkX3NpemUgPSB1bmNvbXByX3NpemU7XG4gICAgY29tcHJlc3NlZF9zaXplID0gY29tcHJfc2l6ZTtcbiAgfVxuXG5sZXQgdXBkYXRlX2NyYyBjcmMgYnVmIHN0YXJ0IGxlbiA9IENyYzMyLnN0cmluZyB+Y3JjIGJ1ZiBzdGFydCBsZW5cblxuKCogQWRkIGFuIGVudHJ5IHdpdGggdGhlIGNvbnRlbnRzIG9mIGEgc3RyaW5nICopXG5cbmxldCBhZGRfZW50cnkgZGF0YSBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIikgPyhsZXZlbCA9IDApXG4gICAgPyhtdGltZSA9IFVuaXgudGltZSAoKSkgbmFtZSA9XG4gIGxldCBlID0gYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIG5hbWUgaW5cbiAgbGV0IGNyYyA9IHVwZGF0ZV9jcmMgSW50MzIuemVybyBkYXRhIDAgKFN0cmluZy5sZW5ndGggZGF0YSkgaW5cbiAgbGV0IGNvbXByX3NpemUgPVxuICAgIG1hdGNoIGxldmVsIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgIEJpZ2J1ZmZlci5hZGRfc3Vic3RyaW5nIG9maWxlLm9mX2NoYW5uZWwgZGF0YSAwIChTdHJpbmcubGVuZ3RoIGRhdGEpO1xuICAgICAgU3RyaW5nLmxlbmd0aCBkYXRhXG4gICAgfCBfIC0+IHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIG5hbWUsIFwiY29tcHJlc3Npb24gZXJyb3JcIikpXG4gIGluXG4gIGxldCBlJyA9IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgY3JjIGNvbXByX3NpemUgKFN0cmluZy5sZW5ndGggZGF0YSkgZSBpblxuICBvZmlsZS5vZl9lbnRyaWVzIDwtIGUnIDo6IG9maWxlLm9mX2VudHJpZXNcblxuKCpcbigqIEFkZCBhbiBlbnRyeSB3aXRoIHRoZSBjb250ZW50cyBvZiBhbiBpbiBjaGFubmVsICopXG5cbmxldCBjb3B5X2NoYW5uZWxfdG9fZW50cnkgaWMgb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8obGV2ZWwgPSAwKSA/KG10aW1lID0gVW5peC50aW1lKCkpIG5hbWUgPVxuICBsZXQgZSA9IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBuYW1lIGluXG4gIGxldCBjcmMgPSByZWYgSW50MzIuemVybyBpblxuICBsZXQgKGNvbXByX3NpemUsIHVuY29tcHJfc2l6ZSkgPVxuICAgIG1hdGNoIGxldmVsIHdpdGhcbiAgICAgIDAgLT5cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA0MDk2IGluXG4gICAgICAgIGxldCByZWMgY29weSBzeiA9XG4gICAgICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgMCAoQnl0ZXMubGVuZ3RoIGJ1ZikgaW5cbiAgICAgICAgICBpZiByID0gMCB0aGVuIHN6IGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGNyYyA6PSB1cGRhdGVfY3JjICFjcmMgYnVmIDAgcjtcbiAgICAgICAgICAgIEJpdEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9maWxlLm9mX2NoYW5uZWwgYnVmIDAgcjtcbiAgICAgICAgICAgIGNvcHkgKHN6ICsgcilcbiAgICAgICAgICBlbmQgaW5cbiAgICAgICAgbGV0IHNpemUgPSBjb3B5IDAgaW5cbiAgICAgICAgKHNpemUsIHNpemUpXG4gICAgfCBfIC0+IHJhaXNlIChFcnJvcihvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJjb21wcmVzc2lvbiBlcnJvclwiKSkgaW5cbiAgbGV0IGUnID0gYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSAhY3JjIGNvbXByX3NpemUgdW5jb21wcl9zaXplIGUgaW5cbiAgb2ZpbGUub2ZfZW50cmllcyA8LSBlJyA6OiBvZmlsZS5vZl9lbnRyaWVzXG5cbigqIEFkZCBhbiBlbnRyeSB3aXRoIHRoZSBjb250ZW50cyBvZiBhIGZpbGUgKilcblxubGV0IGNvcHlfZmlsZV90b19lbnRyeSBpbmZpbGVuYW1lIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8obGV2ZWwgPSAwKSA/bXRpbWUgbmFtZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGluZmlsZW5hbWUgaW5cbiAgbGV0IG10aW1lJyA9XG4gICAgbWF0Y2ggbXRpbWUgd2l0aFxuICAgICAgU29tZSB0IC0+IG10aW1lXG4gICAgfCBOb25lIC0+XG4gICAgICAgIHRyeSBTb21lKChVbml4LnN0YXQgaW5maWxlbmFtZSkuVW5peC5zdF9tdGltZSlcbiAgICAgICAgd2l0aCBVbml4LlVuaXhfZXJyb3IoXyxfLF8pIC0+IE5vbmUgaW5cbiAgdHJ5XG4gICAgY29weV9jaGFubmVsX3RvX2VudHJ5IGljIG9maWxlIH5leHRyYSB+Y29tbWVudCB+bGV2ZWwgP210aW1lOm10aW1lJyBuYW1lO1xuICAgIFBlcnZhc2l2ZXMuY2xvc2VfaW4gaWNcbiAgd2l0aCB4IC0+XG4gICAgUGVydmFzaXZlcy5jbG9zZV9pbiBpYzsgcmFpc2UgeFxuKilcblxuKCogQWRkIGFuIGVudHJ5IHdob3NlIGNvbnRlbnQgd2lsbCBiZSBwcm9kdWNlZCBieSB0aGUgY2FsbGVyICopXG5cbmxldCBhZGRfZW50cnlfZ2VuZXJhdG9yIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKSA/KGxldmVsID0gMClcbiAgICA/KG10aW1lID0gVW5peC50aW1lICgpKSBuYW1lID1cbiAgbGV0IGUgPSBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgbmFtZSBpblxuICBsZXQgY3JjID0gcmVmIEludDMyLnplcm8gaW5cbiAgbGV0IGNvbXByX3NpemUgPSByZWYgMCBpblxuICBsZXQgdW5jb21wcl9zaXplID0gcmVmIDAgaW5cbiAgbGV0IGZpbmlzaGVkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjaGVjayAoKSA9XG4gICAgaWYgIWZpbmlzaGVkIHRoZW5cbiAgICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIG5hbWUsIFwiZW50cnkgYWxyZWFkeSBmaW5pc2hlZFwiKSlcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgZmluaXNoZWQgOj0gdHJ1ZTtcbiAgICBsZXQgZScgPSBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlICFjcmMgIWNvbXByX3NpemUgIXVuY29tcHJfc2l6ZSBlIGluXG4gICAgb2ZpbGUub2ZfZW50cmllcyA8LSBlJyA6OiBvZmlsZS5vZl9lbnRyaWVzXG4gIGluXG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCAwIC0+XG4gICAgKCAoZnVuIGJ1ZiBwb3MgbGVuIC0+XG4gICAgICAgIGNoZWNrICgpO1xuICAgICAgICBCaWdidWZmZXIuYWRkX3N1YmJ5dGVzIG9maWxlLm9mX2NoYW5uZWwgYnVmIHBvcyBsZW47XG4gICAgICAgIGNvbXByX3NpemUgOj0gIWNvbXByX3NpemUgKyBsZW47XG4gICAgICAgIHVuY29tcHJfc2l6ZSA6PSAhdW5jb21wcl9zaXplICsgbGVuKSxcbiAgICAgIGZ1biAoKSAtPlxuICAgICAgICBjaGVjayAoKTtcbiAgICAgICAgZmluaXNoICgpIClcbiAgfCBfIC0+IHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIG5hbWUsIFwiY29tcHJlc3Npb24gZXJyb3JcIikpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gaGFuZGxlciA9XG4gIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICB8IFNvbWUgKF8sIHNpbXVsYXRpb24pIC0+IGhhbmRsZXIgc2ltdWxhdGlvblxuICB8IE5vbmUgLT5cbiAgICBsZXQgbSA9IFwiTm8gc2ltdWxhdGlvbiBhdmFpbGFibGVcIiBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbSlcblxubGV0IGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uXG4gICAgfihzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcylcbiAgICB+KHByb2plY3Rpb24gOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQgLT4gJ2EgQXBpLnJlc3VsdCkgOlxuICAgICdhIEFwaS5sd3RfcmVzdWx0ID1cbiAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICBLYXBwYV9mYWNhZGUub3V0cHV0cyB+c3lzdGVtX3Byb2Nlc3MgfnRcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6XG4gICAgICAgICAgICAgIChmdW4gKHNpbXVsYXRpb25fZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSAtPlxuICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChwcm9qZWN0aW9uIHNpbXVsYXRpb25fZGV0YWlsKVxuICAgICAgICAgICAgICAgIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0IC0+ICdhIEFwaS5sd3RfcmVzdWx0KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2dzIGVycm9ycykpKVxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfZmlsZV9saW5lIChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgaW5mb19maWxlX2xpbmUgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5maWxlX2xpbmVfY2F0YWxvZyBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmaWxlX2xpbmVzIDogc3RyaW5nIGxpc3QgTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfbGluZV9jYXRhbG9nIDogc3RyaW5nIGxpc3QgPVxuICAgICAgICBMaXN0Lm1hcCBmc3QgKE1vZHMuU3RyaW5nTWFwLmJpbmRpbmdzIGZpbGVfbGluZXMpXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgZmlsZV9saW5lX2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9maWxlX2xpbmUgfmZpbGVfbGluZV9pZFxuICAgICAgICAoc3RhdHVzIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IGZpbGVfbGluZV9saXN0ID0gc3RhdHVzLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgaW5cbiAgICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGZpbGVfbGluZV9pZCBmaWxlX2xpbmVfbGlzdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIGZpbGVfbGluZV9pZCBpblxuICAgICAgICBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cbiAgICAgIHwgU29tZSBsaW5lcyAtPiBSZXN1bHRfdXRpbC5vayAoTGlzdC5yZXYgbGluZXMpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICA6IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjpzZWxmI2luZm9fZmlsZV9saW5lXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIChmaWxlX2xpbmVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDogc3RyaW5nIGxpc3QgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9maWxlX2xpbmUgfmZpbGVfbGluZV9pZClcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9mbHV4X21hcCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fZmx1eF9tYXAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZyBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmbHV4X21hcF9jYXRhbG9nID1cbiAgICAgICAgTGlzdC5tYXAgZnN0IGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgZmx1eF9tYXBfY2F0YWxvZ1xuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X2ZsdXhfbWFwIChmbHV4X21hcF9pZCA6IEFwaV90eXBlc190LmRpbl9pZClcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW4gQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmx1eF9tYXBzX2xpc3QgPSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucyBpblxuICAgICAgdHJ5IFJlc3VsdF91dGlsLm9rIChMaXN0LmFzc29jIGZsdXhfbWFwX2lkIGZsdXhfbWFwc19saXN0KVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIGZsdXhfbWFwX2lkIGluXG4gICAgICAgIEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gOiBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX2ZsdXhfbWFwXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZGluIChmbHV4X21hcF9pZCA6IEFwaV90eXBlc190LmRpbl9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW4gQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9mbHV4X21hcCBmbHV4X21hcF9pZClcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9sb2dfbWVzc2FnZSAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpXG4gID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGxvZ19tZXNzYWdlIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCA9XG4gICAgICBSZXN1bHRfdXRpbC5vayBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZSBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnByb2plY3Rpb246c2VsZiNsb2dfbWVzc2FnZVxuICBlbmRcblxubGV0IHNlbGVjdF9vYnNlcnZhYmxlcyAocGxvdF9saW1pdCA6IEFwaV90eXBlc190LnBsb3RfbGltaXQpXG4gICAgKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSA6IEFwaV90eXBlc190LnBsb3QgPVxuICBsZXQgcGxvdF90aW1lX3NlcmllcyA9IFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IHBsb3QuRGF0YS5wbG90X3NlcmllcyBpblxuICBsZXQgcGxvdF9kZXRhaWxfc2l6ZSA9IEFycmF5Lmxlbmd0aCBwbG90X3RpbWVfc2VyaWVzIGluXG4gIGxldCBwbG90X2xpbWl0X29mZnNldCA9IHBsb3RfbGltaXQuQXBpX3R5cGVzX3QucGxvdF9saW1pdF9vZmZzZXQgaW5cbiAgbGV0IHBsb3RfbGltaXRfcG9pbnRzID0gcGxvdF9saW1pdC5BcGlfdHlwZXNfdC5wbG90X2xpbWl0X3BvaW50cyBpblxuICBsZXQgc3RhcnQsIGxlbiA9XG4gICAgbWF0Y2ggcGxvdF9saW1pdF9vZmZzZXQsIHBsb3RfbGltaXRfcG9pbnRzIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMCwgcGxvdF9kZXRhaWxfc2l6ZVxuICAgIHwgU29tZSBvZmZzZXQsIE5vbmUgLT4gb2Zmc2V0LCBtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG9mZnNldClcbiAgICB8IE5vbmUsIFNvbWUgbmIgLT4gbWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBuYiksIG1pbiBuYiBwbG90X2RldGFpbF9zaXplXG4gICAgfCBTb21lIG9mZnNldCwgU29tZSBuYiAtPiBvZmZzZXQsIG1pbiBuYiAobWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBvZmZzZXQpKVxuICBpblxuICBsZXQgbmV3X3Bsb3RfdGltZV9zZXJpZXMgPVxuICAgIExpc3QucmV2IChBcnJheS50b19saXN0IChBcnJheS5zdWIgcGxvdF90aW1lX3NlcmllcyBzdGFydCBsZW4pKVxuICBpblxuICB7IHBsb3Qgd2l0aCBEYXRhLnBsb3Rfc2VyaWVzID0gbmV3X3Bsb3RfdGltZV9zZXJpZXMgfVxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfcGxvdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9wbG90IChwbG90X2xpbWl0IDogQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QucGxvdCBBcGkucmVzdWx0ID1cbiAgICAgIG1hdGNoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgIHwgU29tZSBwbG90IC0+IFJlc3VsdF91dGlsLm9rIChzZWxlY3Rfb2JzZXJ2YWJsZXMgcGxvdF9saW1pdCBwbG90KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gXCJwbG90IG5vdCBhdmFpbGFibGVcIiBpblxuICAgICAgICBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9wbG90IChwbG90X3BhcmFtZXRlciA6IEFwaV90eXBlc190LnBsb3RfcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc190LnBsb3QgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9wbG90IHBsb3RfcGFyYW1ldGVyKVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX3NuYXBzaG90IChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgaW5mb19zbmFwc2hvdCAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgc25hcHNob3RzID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyBpblxuICAgICAgbGV0IHNuYXBzaG90X2NhdGFsb2cgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5mb2xkIChmdW4geCBfIGFjYyAtPiB4IDo6IGFjYykgc25hcHNob3RzIFtdXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgc25hcHNob3RfY2F0YWxvZ1xuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc190LnNuYXBzaG90X2lkKVxuICAgICAgICAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IHNuYXBzaG90X2xpc3QgPSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIGluXG4gICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzbmFwc2hvdF9pZCBzbmFwc2hvdF9saXN0IHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA6IHN0cmluZyA9IEZvcm1hdC5zcHJpbnRmIFwiaWQgJXMgbm90IGZvdW5kXCIgc25hcHNob3RfaWQgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICAoZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgICB+cHJvamVjdGlvbjpzZWxmI2luZm9fc25hcHNob3RcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nIEFwaS5sd3RfcmVzdWx0KVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc190LnNuYXBzaG90X2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIChkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9zbmFwc2hvdCBzbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkubHd0X3Jlc3VsdClcbiAgZW5kXG5cbmNsYXNzIG1hbmFnZXJfc2ltdWxhdGlvbiAocHJvamVjdCA6IEFwaV9lbnZpcm9ubWVudC5wcm9qZWN0KVxuICAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpIDpcbiAgQXBpLm1hbmFnZXJfc2ltdWxhdGlvbiA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBzaW11bGF0aW9uID0gTm9uZVxuXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgcGFyc2luZ19jb21waWwgb3ZlcndyaXRlcyA9XG4gICAgICAoKiBUT0RPOiB1bmRlcnN0YW5kIHdoeSB0aGlzIGxvZ2ljIDogd2hlcmUgaXMgdGhlIGNhbGwgdG8gY2hlY2sgZm9yIG1vZGlmaWVkIGZpbGVzPyAqKVxuICAgICAgbGV0IGhhcmFraXJpLCBfID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgIEx3dC5waWNrXG4gICAgICAgIFtcbiAgICAgICAgICBLYXBwYV9mYWNhZGUucGFyc2UgfnBhdHRlcm5TaGFyaW5nIHBhcnNpbmdfY29tcGlsIG92ZXJ3cml0ZXNcbiAgICAgICAgICAgIHN5c3RlbV9wcm9jZXNzO1xuICAgICAgICAgICggaGFyYWtpcmkgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICAgWyBBcGlfY29tbW9uLmVycm9yX21zZyBcIlBhcnNlIGNhbmNlbGxlZCBieSBtb2RpZmllZCBmaWxlc1wiIF1cbiAgICAgICAgICAgIHw+IEx3dC5yZXR1cm4gKTtcbiAgICAgICAgXVxuICAgICAgfD4gcHJvamVjdCNzZXRfcGFyc2Vfc3RhdGU7XG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNzaW11bGF0aW9uX3N0b3AgPj49IGZ1biBfIC0+XG4gICAgICBzaW11bGF0aW9uIDwtIE5vbmU7XG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0XG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgbWF0Y2ggc2ltdWxhdGlvbiB3aXRoXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgfnJlc3VsdF9jb2RlOmBDb25mbGljdFxuICAgICAgICAgICAgIFwiQSBzaW11bGF0aW9uIGFscmVhZHkgZXhpc3RzXCIpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogZnJvbSBBcGlfZW52aXJvbm1lbnQgKilcbiAgICAgICAgcHJvamVjdCNnZXRfcGFyc2Vfc3RhdGUgKCkgPj49ICggZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgIFwiQ2Fubm90IHN0YXJ0IHNpbXVsYXRpb246IFBhcnNlIG5vdCBkb25lXCIpXG4gICAgICAgIHwgU29tZSAocGFyc2UgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUpIC0+XG4gICAgICAgICAgcGFyc2VcbiAgICAgICAgICB8PiBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICB+b2s6KGZ1biAoZmFjYWRlIDogS2FwcGFfZmFjYWRlLnQpIC0+XG4gICAgICAgICAgICAgICAgIEthcHBhX2ZhY2FkZS5zdGFydCB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgICAgICAgICAgICB+cGFyYW1ldGVyOnNpbXVsYXRpb25fcGFyYW1ldGVyIH50OmZhY2FkZVxuICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biAoc2ltdWxhdGlvbl9zZWVkIDogaW50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIHNldCBzaW11bGF0aW9uIHN0YXRlICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyX3dpdGhfc2VlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25fcGFyYW1ldGVyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkID0gU29tZSBzaW11bGF0aW9uX3NlZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uIDwtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIChzaW11bGF0aW9uX3BhcmFtZXRlcl93aXRoX3NlZWQsIGZhY2FkZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogcmV0dXJuIHNpbXVsYXRpb24gYXJ0aWZhY3Qgd2l0aCBzZWVkICopXG4gICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uX3NlZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIHw+IFJlc3VsdF91dGlsLm9rIHw+IEx3dC5yZXR1cm4pXG4gICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2dzIGVycm9ycykpKVxuICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2dzIGVycm9ycykpIClcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICAgICAgfCBTb21lIChwYXJhbWV0ZXIsIF8pIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHBhcmFtZXRlcilcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA9IFwiTm8gc2ltdWxhdGlvbiBhdmFpbGFibGVcIiBpblxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9yYXdfdHJhY2UgOiBzdHJpbmcgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEthcHBhX2ZhY2FkZS5nZXRfcmF3X3RyYWNlIHQpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIGxldCBhZGRfc25hcHNob3QgZmlsZSBmaWxlbmFtZSBuYW1lIHNuYXBzaG90ID1cbiAgICAgICAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IG5hbWUgXCIuZG90XCIgdGhlblxuICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiXG4gICAgICAgICAgICAgICAoRGF0YS5wcmludF9kb3Rfc25hcHNob3QgP3V1aWQ6Tm9uZSlcbiAgICAgICAgICAgICAgIHNuYXBzaG90KVxuICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKVxuICAgICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgIChEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCA/bGVuOk5vbmUgc25hcHNob3QpXG4gICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBuYW1lJyA9IFRvb2xzLmNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIFwiLmthXCIgaW5cbiAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdClcbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gbmFtZScpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgYWRkX2RpbiBmaWxlIGZpbGVuYW1lIChkaW5fbmFtZSwgZmx1eCkgPVxuICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgIChpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuaHRtbFwiIHRoZW5cbiAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgRGF0YS5wcmludF9odG1sX2RpbiBmbHV4XG4gICAgICAgICAgIGVsc2UgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgICAgICAgRGF0YS5zdHJpbmdfb2ZfZGluIGZsdXhcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9kb3RfZGluID91dWlkOk5vbmUpIGZsdXgpXG4gICAgICAgICAgZmlsZVxuICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gZGluX25hbWUpXG4gICAgICBpblxuICAgICAgbGV0IHByb2plY3Rpb24gdCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFwic2ltdWxhdGlvbl9vdXRwdXRzXCIgaW5cbiAgICAgICAgICBsZXQgZmlsZSA9IEZha2V6aXAub3Blbl9vdXQgKGZpbGVuYW1lIF4gXCIuemlwXCIpIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5IHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIGZpbGVcbiAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvaW5wdXRzLmthXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnkgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgZmlsZVxuICAgICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9sb2cudHh0XCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgbWF0Y2ggdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHBsb3QgLT5cbiAgICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgICAgICAoRGF0YS5leHBvcnRfcGxvdCB+aXNfdHN2OmZhbHNlIHBsb3QpXG4gICAgICAgICAgICAgICAgZmlsZSAoZmlsZW5hbWUgXiBcIi9kYXRhLmNzdlwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgKGZ1biBuYW1lIGNvbnRlbnQgLT5cbiAgICAgICAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCJcXG5cIiAoTGlzdC5yZXYgY29udGVudCkpXG4gICAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUpKVxuICAgICAgICAgICAgICB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMaXN0Lml0ZXIgKGFkZF9kaW4gZmlsZSBmaWxlbmFtZSlcbiAgICAgICAgICAgICAgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAgICAgICAoYWRkX3NuYXBzaG90IGZpbGUgZmlsZW5hbWUpXG4gICAgICAgICAgICAgIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3V0ID0gRmFrZXppcC5jbG9zZV9vdXQgZmlsZSBpblxuICAgICAgICAgIFJlc3VsdF91dGlsLm9rIG91dFxuICAgICAgICB3aXRoIEZha2V6aXAuRXJyb3IgKF8sIGYsIGUpIC0+XG4gICAgICAgICAgQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyAoXCJaaXAgZXJyb3IgaW4gXCIgXiBmIF4gXCI6IFwiIF4gZSlcbiAgICAgIGluXG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnByb2plY3Rpb25cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUucGF1c2UgfnN5c3RlbV9wcm9jZXNzIH50ID4+PSBmdW4gXyAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcblxuICAgIG1ldGhvZCBwcml2YXRlIHNpbXVsYXRpb25fc3RvcCA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnN0b3AgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9wZXJ0dXJiYXRpb24gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgICAgOiBzdHJpbmcgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBlcnR1cmJhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnRcbiAgICAgICAgICAgIH5wZXJ0dXJiYXRpb246c2ltdWxhdGlvbl9wZXJ0dXJiYXRpb25cbiAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgIH5vazooZnVuIHMgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcykpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NvbnRpbnVlIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpIDogdW5pdCBBcGkubHd0X3Jlc3VsdFxuICAgICAgICA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUuY29udGludWUgfnN5c3RlbV9wcm9jZXNzIH50IH5wYXVzZV9jb25kaXRpb25cbiAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2dzIGVycm9ycykpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUucHJvZ3Jlc3MgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBwcm9ncmVzcyAtPlxuICAgICAgICAgICAgICAgICAgS2FwcGFfZmFjYWRlLm91dHB1dHMgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gb3V0cHV0cyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFwaV9kYXRhLmFwaV9zaW11bGF0aW9uX3N0YXR1cyBwcm9ncmVzcyBvdXRwdXRzKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX21zZ3MgZXJyb3JzKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEthcHBhX2ZhY2FkZS5lZmZpY2llbmN5IHQpKSlcblxuICAgIGluaGVyaXQgbWFuYWdlcl9maWxlX2xpbmUgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfZmx1eF9tYXAgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfbG9nX21lc3NhZ2Ugc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfcGxvdCBzeXN0ZW1fcHJvY2Vzc1xuICAgIGluaGVyaXQgbWFuYWdlcl9zbmFwc2hvdCBzeXN0ZW1fcHJvY2Vzc1xuICBlbmRcblxuY2xhc3MgbWFuYWdlciAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpIDpcbiAgKCogZ29vZCBvbGQgY2FrZSBwYXR0ZXJuICopXG4gIEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24gPVxuICBsZXQgcHJvamVjdCA9IG5ldyBFbnZpcm9ubWVudF9tZW1vcnkucHJvamVjdCBpblxuICBvYmplY3RcbiAgICBpbmhlcml0IG1hbmFnZXJfc2ltdWxhdGlvbiBwcm9qZWN0IHN5c3RlbV9wcm9jZXNzXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IG9uX21lc3NhZ2UgKG1hbmFnZXIgOiBBcGkubWFuYWdlcl9zaW11bGF0aW9uKVxuICAgIChwb3N0X21lc3NhZ2UgOiBzdHJpbmcgLT4gdW5pdCBMd3QudCkgKHRleHRfbWVzc2FnZSA6IHN0cmluZykgOiB1bml0IEx3dC50ID1cbiAgbGV0IG1lc3NhZ2UgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICBNcGlfbWVzc2FnZV9qLm1lc3NhZ2Vfb2Zfc3RyaW5nIE1waV9tZXNzYWdlX2oucmVhZF9yZXF1ZXN0IHRleHRfbWVzc2FnZVxuICBpblxuICBsZXQgaGFuZGxlciA6XG4gICAgICAgICdhLlxuICAgICAgICAoJ2EgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZV9jb250ZW50KSAtPiAnYSBBcGkucmVzdWx0IC0+IHVuaXQgTHd0LnQgPVxuICAgZnVuIHBhY2sgcmVzdWx0IC0+XG4gICAgbGV0IG1lc3NhZ2UgOiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgICB7XG4gICAgICAgIE1waV9tZXNzYWdlX2ouaWQgPSBtZXNzYWdlLk1waV9tZXNzYWdlX2ouaWQ7XG4gICAgICAgIE1waV9tZXNzYWdlX2ouZGF0YSA9IFJlc3VsdF91dGlsLm1hcCBwYWNrIHJlc3VsdDtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0ZXh0IDogc3RyaW5nID1cbiAgICAgIE1waV9tZXNzYWdlX2ouc3RyaW5nX29mX21lc3NhZ2UgTXBpX21lc3NhZ2Vfai53cml0ZV9yZXNwb25zZSBtZXNzYWdlXG4gICAgaW5cbiAgICBwb3N0X21lc3NhZ2UgdGV4dFxuICBpblxuICBtYXRjaCBtZXNzYWdlLk1waV9tZXNzYWdlX2ouZGF0YSB3aXRoXG4gIHwgYFNpbXVsYXRpb25Mb2FkIEFwaV90eXBlc190LnsgcGF0dGVybl9zaGFyaW5nOyBhc3Q7IHZhcmlhYmxlX292ZXJ3cml0dGVuIH1cbiAgICAtPlxuICAgIG1hbmFnZXIjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuX3NoYXJpbmcgYXN0IHZhcmlhYmxlX292ZXJ3cml0dGVuXG4gICAgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvbkxvYWQpXG4gIHwgYFNpbXVsYXRpb25Db250aW51ZSBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jb250aW51ZSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gKCkgLT4gYFNpbXVsYXRpb25Db250aW51ZSlcbiAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGUgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvbkRlbGV0ZSlcbiAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIGZpbGVfbGluZV9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIGRpbl9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsRElOIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3QgcGxvdF9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IHNuYXBzaG90X2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25JbmZvIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm8gPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25JbmZvIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRWZmaWNpZW5jeSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZGluXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nRElOIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uUGFyYW1ldGVyIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvblRyYWNlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uVHJhY2UgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9vdXRwdXRzX3ppcFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAoQmFzZTY0LmVuY29kZSByZXN1bHQpKVxuICB8IGBTaW11bGF0aW9uUGF1c2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcGF1c2UgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvblBhdXNlKVxuICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2ludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgID4+PSBoYW5kbGVyIChmdW4gcyAtPiBgU2ltdWxhdGlvbkludGVydmVudGlvbiBzKVxuICB8IGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fc3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvblN0YXJ0IHJlc3VsdClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmV4Y2VwdGlvbiBCYWRSZXNwb25zZSBvZiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlX2NvbnRlbnRcblxuY2xhc3MgdHlwZSB2aXJ0dWFsIG1hbmFnZXJfc2ltdWxhdGlvbl9tc2dfdHlwZSA9IG9iamVjdFxuICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIG1lc3NhZ2UgOlxuICAgIE1waV9tZXNzYWdlX2oucmVxdWVzdCAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC50XG5cbiAgaW5oZXJpdCBBcGkubWFuYWdlcl9zaW11bGF0aW9uXG5lbmRcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX3NpbXVsYXRpb25fbXNnICgpIDogbWFuYWdlcl9zaW11bGF0aW9uX21zZ190eXBlID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgbWVzc2FnZVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC50XG5cbiAgICBtZXRob2Qgc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuX3NoYXJpbmcgYXN0IHZhcmlhYmxlX292ZXJ3cml0dGVuXG4gICAgICAgIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2VcbiAgICAgICAgKGBTaW11bGF0aW9uTG9hZFxuICAgICAgICAgIEFwaV90eXBlc190LnsgcGF0dGVybl9zaGFyaW5nOyBhc3Q7IHZhcmlhYmxlX292ZXJ3cml0dGVuIH0pXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uTG9hZCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY29udGludWUgKHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZykgOiB1bml0IEFwaS5sd3RfcmVzdWx0XG4gICAgICAgID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25Db250aW51ZSBwYXVzZV9jb25kaXRpb24pXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIChmaWxlX2xpbmVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDogc3RyaW5nIGxpc3QgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9pZClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfbGlzdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmaWxlX2xpbmVfbGlzdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXBfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIGZsdXhfbWFwIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGZsdXhfbWFwKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICAgICAgOiBBcGlfdHlwZXNfai5sb2dfbWVzc2FnZSBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSBsb2dfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBsb2dfbWVzc2FnZSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX2oucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogQXBpX3R5cGVzX2oucGxvdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsUGxvdCBwbG90X3BhcmFtZXRlcilcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3QgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcGxvdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc19qLnNuYXBzaG90X2lkKVxuICAgICAgICA6IEFwaV90eXBlc19qLnNuYXBzaG90IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzbmFwc2hvdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25JbmZvXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uSW5mbyBzaW11bGF0aW9uX3N0YXR1cyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzaW11bGF0aW9uX3N0YXR1cylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA6IENvdW50ZXIuRWZmaWNpZW5jeS50IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IGVmZmljaWVuY3kgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZWZmaWNpZW5jeSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICAgICAgOiBBcGlfdHlwZXNfai5maWxlX2xpbmVfY2F0YWxvZyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgaW5mbyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBpbmZvKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA6IEFwaV90eXBlc19qLmRpbl9jYXRhbG9nIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIGluZm8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICA6IEFwaV90eXBlc19qLnNuYXBzaG90X2NhdGFsb2cgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IGluZm8gLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGF1c2UgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblBhdXNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA6IHN0cmluZyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIHJlc3VsdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHJlc3VsdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoQmFzZTY0LmRlY29kZSByZXN1bHQpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlciBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgcmVzdWx0IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHJlc3VsdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgIChzaW11bGF0aW9uX2ludGVydmVudGlvbiA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKVxuICAgICAgICA6IHN0cmluZyBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiBzIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHMpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0XG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fYXJ0aWZhY3QgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25faWQgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9pZClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuICBlbmRcblxubW9kdWxlIEludE1hcCA9IE1vZHMuSW50TWFwXG5cbnR5cGUgY29udGV4dCA9IHsgbWFpbGJveGVzOiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC51IEludE1hcC50OyBpZDogaW50IH1cblxuY2xhc3MgdHlwZSB2aXJ0dWFsIG1hbmFnZXJfc2ltdWxhdGlvbl9tcGkgPSBvYmplY3RcbiAgaW5oZXJpdCBBcGkubWFuYWdlcl9zaW11bGF0aW9uXG4gIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgc2xlZXAgOiBmbG9hdCAtPiB1bml0IEx3dC50XG4gIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuICBtZXRob2QgcHJpdmF0ZSByZWNlaXZlIDogc3RyaW5nIC0+IHVuaXRcbiAgbWV0aG9kIHByaXZhdGUgc2ltX2lzX2NvbXB1dGluZyA6IGJvb2xcbiAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcbmVuZFxuXG5jbGFzcyB2aXJ0dWFsIG5ld19jbGllbnQgfnBvc3QgKCkgOiBtYW5hZ2VyX3NpbXVsYXRpb25fbXBpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgbWFuYWdlcl9zaW11bGF0aW9uX21zZyAoKVxuICAgIHZhbCBtdXRhYmxlIGNvbnRleHQgPSB7IG1haWxib3hlcyA9IEludE1hcC5lbXB0eTsgaWQgPSAwIH1cbiAgICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHNsZWVwIDogZmxvYXQgLT4gdW5pdCBMd3QudFxuICAgIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByZWNlaXZlIChyZXNwb25zZV90ZXh0IDogc3RyaW5nKSA9XG4gICAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICAgICAgTXBpX21lc3NhZ2Vfai5tZXNzYWdlX29mX3N0cmluZyBNcGlfbWVzc2FnZV9qLnJlYWRfcmVzcG9uc2VcbiAgICAgICAgICByZXNwb25zZV90ZXh0XG4gICAgICBpblxuICAgICAgbWF0Y2ggSW50TWFwLnBvcCBtZXNzYWdlLk1waV9tZXNzYWdlX2ouaWQgY29udGV4dC5tYWlsYm94ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlLCBtYWlsYm94ZXMgLT5cbiAgICAgICAgbGV0ICgpID0gY29udGV4dCA8LSB7IGNvbnRleHQgd2l0aCBtYWlsYm94ZXMgfSBpblxuICAgICAgICBMd3Qud2FrZXVwIHZhbHVlIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5kYXRhXG4gICAgICB8IE5vbmUsIG1haWxib3hlcyAtPiBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIG1haWxib3hlcyB9XG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIChyZXF1ZXN0IDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0KVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnQgPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICBsZXQgKCkgPSBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIGlkID0gY29udGV4dC5pZCArIDEgfSBpblxuICAgICAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAgICAgIHsgTXBpX21lc3NhZ2Vfai5pZCA9IGNvbnRleHQuaWQ7IE1waV9tZXNzYWdlX2ouZGF0YSA9IHJlcXVlc3QgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgbWVzc2FnZV90ZXh0IDogc3RyaW5nID1cbiAgICAgICAgICBNcGlfbWVzc2FnZV9qLnN0cmluZ19vZl9tZXNzYWdlIE1waV9tZXNzYWdlX2oud3JpdGVfcmVxdWVzdCBtZXNzYWdlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvc3QgbWVzc2FnZV90ZXh0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgY29udGV4dCA8LVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb250ZXh0IHdpdGhcbiAgICAgICAgICAgICAgbWFpbGJveGVzID0gSW50TWFwLmFkZCBjb250ZXh0LmlkIGZlZWRlciBjb250ZXh0Lm1haWxib3hlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgcmVzdWx0XG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBcIkthc2ltIGhhcyBkaWVkXCIpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzaW1faXNfY29tcHV0aW5nID0gbm90IChJbnRNYXAuaXNfZW1wdHkgY29udGV4dC5tYWlsYm94ZXMpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBtYWlsYm94ID0gKGludCwgWW9qc29uLkJhc2ljLnQgQXBpLnJlc3VsdCBMd3QudSkgSGFzaHRibC50XG5cbmxldCByZXBseV9vZl9zdHJpbmcgKHggOiBzdHJpbmcpIDogaW50IG9wdGlvbiAqIFlvanNvbi5CYXNpYy50IEFwaS5yZXN1bHQgPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCB3aXRoXG4gIHwgYEFzc29jIFsgKFwiaWRcIiwgYEludCBpZCk7IChcImNvZGVcIiwgYFN0cmluZyBcIkVSUk9SXCIpOyAoXCJkYXRhXCIsIGVycikgXSAtPlxuICAgICggU29tZSBpZCxcbiAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5vZl9qc29uIGVyclxuICAgICAgfD4gQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX2V4Y2VwdGlvbnMgKVxuICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJjb2RlXCIsIGBTdHJpbmcgXCJTVUNDRVNTXCIpOyAoXCJkYXRhXCIsIGRhdGEpIF0gLT5cbiAgICBTb21lIGlkLCBSZXN1bHRfdXRpbC5vayBkYXRhXG4gIHwgeCAtPlxuICAgICggTm9uZSxcbiAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCJcbiAgICAgICAgfm1lc3NhZ2U6KFwiSW52YWxpZCByZXNwb25zZSBmcm9tIEthU2E6IFwiIF4gWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KVxuICAgICAgICBFeGl0XG4gICAgICB8PiBBcGlfY29tbW9uLm1lc3NhZ2Vfb2ZfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICB8PiBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNnIClcblxubGV0IHJlY2VpdmUgKG1haWxib3ggOiBtYWlsYm94KSAoeCA6IHN0cmluZykgOiB1bml0ID1cbiAgbWF0Y2ggcmVwbHlfb2Zfc3RyaW5nIHggd2l0aFxuICB8IFNvbWUgaWQsIG91dCAtPlxuICAgIGxldCB0aHJlYWQgPSBIYXNodGJsLmZpbmQgbWFpbGJveCBpZCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQgaW5cbiAgICBMd3Qud2FrZXVwIHRocmVhZCBvdXRcbiAgfCBOb25lLCBfIC0+ICgpXG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcbmxldCBpc19jb21wdXRpbmcgbWFpbGJveCA9IEhhc2h0YmwubGVuZ3RoIG1haWxib3ggPD4gMFxuXG5jbGFzcyBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IChtYWlsYm94IDogbWFpbGJveCkgOlxuICBBcGkubWFuYWdlcl9zdGF0aWNfYW5hbHlzaXMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByYXdfbWVzc2FnZSAocG9zdCA6IHN0cmluZyAtPiB1bml0KVxuICAgICAgICAocmVxdWVzdCA6IEJ1ZmZlci50IC0+IHVuaXQpIDogJ2EgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgaWYgaXNfcnVubmluZyAoKSB0aGVuIChcbiAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgbGV0IG91dGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJ7aWQ6XCIgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIChzdHJpbmdfb2ZfaW50IGlkKSBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCIsZGF0YTpcIiBpblxuICAgICAgICBsZXQgKCkgPSByZXF1ZXN0IG91dGJ1ZiBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJ9XCIgaW5cbiAgICAgICAgbGV0ICgpID0gcG9zdCAoQnVmZmVyLmNvbnRlbnRzIG91dGJ1ZikgaW5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgZmVlZGVyIGluXG4gICAgICAgIGxldCAoKSA9IGlkIDwtIGlkICsgMSBpblxuICAgICAgICAoKiBUT0RPOiBjaGFuZ2UgbWFpbGJveCB0byBoYXZlIEFwaS5yZXN1bHQgdHlwZSBpbnNpZGUgKilcbiAgICAgICAgcmVzdWx0XG4gICAgICApIGVsc2VcbiAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiIH5tZXNzYWdlOlwiS2FTYSBhZ2VudCBpcyBkZWFkXCIgRXhpdFxuICAgICAgICB8PiBBcGlfY29tbW9uLm1lc3NhZ2Vfb2ZfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgIHw+IEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2cgfD4gTHd0LnJldHVyblxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSByZXF1ZXN0ID1cbiAgICAgIHNlbGYjcmF3X21lc3NhZ2UgcG9zdCAoZnVuIG91dGIgLT4gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvdXRiIHJlcXVlc3QpXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGNvbXBpbCA9XG4gICAgICBsZXQgcmVxdWVzdCBvdXRidWYgPVxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJbIFxcXCJJTklUXFxcIiwgXCIgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIGNvbXBpbCBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJdXCJcbiAgICAgIGluXG4gICAgICBzZWxmI3Jhd19tZXNzYWdlIHBvc3QgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgTnVsbCAtPiBSZXN1bHRfdXRpbC5vayAoKSB8PiBMd3QucmV0dXJuXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiXG4gICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAoXCJOb3QgYSBLYVNhIElOSVQgcmVzcG9uc2U6IFwiIF4gWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KVxuICAgICAgICAgICAgICAgIEV4aXRcbiAgICAgICAgICAgICAgfD4gQXBpX2NvbW1vbi5tZXNzYWdlX29mX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICB8PiBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNnIHw+IEx3dC5yZXR1cm4pXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXIgY29tcGlsID1cbiAgICAgIHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3XG4gICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gY29tcGlsKSlcblxuICAgIG1ldGhvZCBnZXRfY29udGFjdF9tYXAgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiQ09OVEFDVF9NQVBcIlxuICAgICAgICAgIDo6XG4gICAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgYSAtPiBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSBdKSlcbiAgICAgIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuXG4gICAgbWV0aG9kIHNlY3JldF9nZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9OT0RFU19MT0NBVElPTlwiIF0gaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIFJlc3VsdF91dGlsLm9rIChQdWJsaWNfZGF0YS5wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiB4KVxuICAgICAgICAgICAgICB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgc2VsZiNtZXNzYWdlIHJlcXVlc3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIHggLT5cbiAgICAgICAgICAgICAgUmVzdWx0X3V0aWwub2sgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgeCkgfD4gTHd0LnJldHVybilcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUFwiXG4gICAgICAgICAgOjogKGZ1biBhY2N1cmFjeSBsIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gbFxuICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIDo6IGwpXG4gICAgICAgICAgICAgICBhY2N1cmFjeVxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGZ3ZDtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBid2Q7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB0b3RhbDtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICBvcmlnaW47XG4gICAgICAgICAgICAgICBdKVxuICAgICAgaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIFJlc3VsdF91dGlsLm9rIChQdWJsaWNfZGF0YS5sb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24geClcbiAgICAgICAgICAgICAgfD4gTHd0LnJldHVybilcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9PUklHSU5BTF9OT0RFXCIgXSBpblxuICAgICAgc2VsZiNtZXNzYWdlIHJlcXVlc3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIHggLT5cbiAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgICAgIHw+IFJlc3VsdF91dGlsLm9rIHw+IEx3dC5yZXR1cm4pXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBqc29uID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9ORVhUX05PREVcIjtcbiAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIGpzb247XG4gICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgICAgICB8PiBSZXN1bHRfdXRpbC5vayB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIGpzb24gPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX1BSRVZJT1VTX05PREVcIjtcbiAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIGpzb247XG4gICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgICAgICB8PiBSZXN1bHRfdXRpbC5vayB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGdldF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIklORkxVRU5DRV9NQVBfQUxMX05PREVTXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgc2VsZiNtZXNzYWdlIHJlcXVlc3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIHggLT5cbiAgICAgICAgICAgICAgUHVibGljX2RhdGEubm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uIHhcbiAgICAgICAgICAgICAgfD4gUmVzdWx0X3V0aWwub2sgfD4gTHd0LnJldHVybilcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIkRFQURfUlVMRVNcIiBdIGluXG4gICAgICBzZWxmI21lc3NhZ2UgcmVxdWVzdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4geCAtPlxuICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5kZWFkX3J1bGVzX29mX2pzb24geCB8PiBSZXN1bHRfdXRpbC5vayB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIkRFQURfQUdFTlRTXCIgXSBpblxuICAgICAgc2VsZiNtZXNzYWdlIHJlcXVlc3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIHggLT5cbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuanNvbl90b19kZWFkX2FnZW50cyB4IHw+IFJlc3VsdF91dGlsLm9rIHw+IEx3dC5yZXR1cm4pXG5cbiAgICBtZXRob2QgZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIk5PTl9XRUFLTFlfUkVWRVJTSUJMRV9UUkFOU0lUSU9OU1wiIF0gaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfb2ZfanNvbiB4XG4gICAgICAgICAgICAgIHw+IFJlc3VsdF91dGlsLm9rIHw+IEx3dC5yZXR1cm4pXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJDT05TVFJBSU5UU1wiIF0gaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLmxlbW1hc19saXN0X29mX2pzb24geCB8PiBSZXN1bHRfdXRpbC5vayB8PiBMd3QucmV0dXJuKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIlBPTFlNRVJTXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeV9jbSwgYWNjdXJhY3lfc2NjIHdpdGhcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgYSwgTm9uZSAtPiBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSBdXG4gICAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgICAgICAgICAgWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGE7IFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYiBdXG4gICAgICAgICAgfCBOb25lLCBTb21lIGIgLT5cbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBQdWJsaWNfZGF0YS5Mb3c7XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYjtcbiAgICAgICAgICAgIF0pKVxuICAgICAgaW5cbiAgICAgIHNlbGYjbWVzc2FnZSByZXF1ZXN0XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB4IC0+XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNjY19vZl9qc29uIHggfD4gUmVzdWx0X3V0aWwub2sgfD4gTHd0LnJldHVybilcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIF8gaGFuZGxlID1cbiAgfCBOb3RoaW5nIDogdW5pdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnUgLT4gYm94XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIGJveCkgSGFzaHRibC50XG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHJlYWRfcmVzdWx0IGYgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgKFJlc3VsdF91dGlsLnJlYWRfdCBmIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZSkpXG4gICAgcCBsYlxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gcCBsYiBpZCAtPlxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIG1haWxib3ggaWQgd2l0aFxuICAgICAgICAgICB8IEIgKE5vdGhpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfbnVsbCBwIGxiKVxuICAgICAgICAgICB8IEIgKENhdGFsb2csIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZm8sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEFzdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQpKVxuICAgIHhcblxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+cG9zdCBtYWlsYm94IDogQXBpLm1hbmFnZXJfbW9kZWwgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgOiB0eXBlIGEuXG4gICAgICAgIGEgaGFuZGxlIC0+XG4gICAgICAgIChCdWZmZXIudCAtPiB1bml0KSAtPlxuICAgICAgICAoYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgICAgIGZ1biBoYW5kbGUgcmVxdWVzdCAtPlxuICAgICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgICAgICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTsgcmVxdWVzdCBdKVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9zdCBtZXNzYWdlIGluXG4gICAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgKEIgKGhhbmRsZSwgZmVlZGVyKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZCA8LSBzdWNjIGlkIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0ID0gXCJrYW1vaGEgYWdlbnQgaGFzIGRpZWRcIjtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9kZWxldGUgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlRGVsZXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlVXBkYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZU1vdmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUdldFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ3JlYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ2F0YWxvZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ2F0YWxvZ1wiKSBdKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBBc3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdFBhcnNlXCIpIF0pXG5cbiAgICBtZXRob2QgcHJvamVjdF9vdmVyd3JpdGUgZmlsZV9pZCBhc3QgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdE92ZXJ3cml0ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFzdC53cml0ZV9wYXJzaW5nX2NvbXBpbCBiIGFzdCk7XG4gICAgICAgICAgICBdKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCB1cmxfYXJncyA/KGRlZmF1bHQgPSBbXSkga2V5IDogc3RyaW5nIGxpc3QgPVxuICAoKiBIb3N0cyB0aGUgdXNlciBzcGVjaWZpZWQgb24gdGhlIHVybCBpbiB0aGUgZm9ybVxuICAgICBrZXk9Li4uJmtleT0uLiYuLi5cbiAgKilcbiAgbGV0IGFyZ3MgPSBVcmwuQ3VycmVudC5hcmd1bWVudHMgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgc25kIChMaXN0LmZpbHRlciAoZnVuIChrLCBfKSAtPiBrID0ga2V5KSBhcmdzKSB3aXRoXG4gIHwgW10gLT4gZGVmYXVsdFxuICB8IHNvbWUgLT4gc29tZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvbW1hbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBhcmdzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBvblN0ZG91dCA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvblN0ZGVyciA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvbkNsb3NlIDogKHVuaXQgLT4gdW5pdCkgSnMucHJvcFxuICBtZXRob2Qgb25FcnJvciA6ICh1bml0IC0+IHVuaXQpIEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfcHJvY2Vzc19jb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgSnMuY29uc3RyID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfcHJvY2Vzc19jb25maWd1cmF0aW9uXG4gICAgPyhvblN0ZG91dCA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBvcHRpb24pXG4gICAgPyhvblN0ZGVyciA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBvcHRpb24pXG4gICAgPyhvbkNsb3NlIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uKSA/KG9uRXJyb3IgOiAodW5pdCAtPiB1bml0KSBvcHRpb24pXG4gICAgKGNvbW1hbmQgOiBzdHJpbmcpIChhcmdzIDogc3RyaW5nIGxpc3QpIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICBsZXQgY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgICBuZXclanMgY29uc3RydWN0b3JfcHJvY2Vzc19jb25maWd1cmF0aW9uXG4gIGluXG4gIGxldCAoKSA9XG4gICAgY29uZmlndXJhdGlvbiMjLmNvbW1hbmQgOj0gSnMuc3RyaW5nIGNvbW1hbmQ7XG4gICAgY29uZmlndXJhdGlvbiMjLmFyZ3MgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgKExpc3QubWFwIEpzLnN0cmluZyBhcmdzKSk7XG4gICAgKG1hdGNoIG9uU3Rkb3V0IHdpdGhcbiAgICB8IFNvbWUgb25TdGRvdXQgLT4gY29uZmlndXJhdGlvbiMjLm9uU3Rkb3V0IDo9IG9uU3Rkb3V0XG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAobWF0Y2ggb25TdGRlcnIgd2l0aFxuICAgIHwgU29tZSBvblN0ZGVyciAtPiBjb25maWd1cmF0aW9uIyMub25TdGRlcnIgOj0gb25TdGRlcnJcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvbkNsb3NlIHdpdGhcbiAgICB8IFNvbWUgb25DbG9zZSAtPiBjb25maWd1cmF0aW9uIyMub25DbG9zZSA6PSBvbkNsb3NlXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAobWF0Y2ggb25FcnJvciB3aXRoXG4gICAgfCBTb21lIG9uRXJyb3IgLT4gY29uZmlndXJhdGlvbiMjLm9uRXJyb3IgOj0gb25FcnJvclxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKClcbiAgaW5cbiAgY29uZmlndXJhdGlvblxuXG5jbGFzcyB0eXBlIHByb2Nlc3MgPSBvYmplY3RcbiAgbWV0aG9kIHdyaXRlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBraWxsIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHNwYXduX3Byb2Nlc3MgKGNvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCkgOlxuICAgIHByb2Nlc3MgSnMudCBKcy5vcHQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJzcGF3blByb2Nlc3NcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IGNvbmZpZ3VyYXRpb24gfF1cblxubGV0IGxhdW5jaF9hZ2VudCAob25DbG9zZSA6IHVuaXQgLT4gdW5pdCkgKG1lc3NhZ2VfZGVsaW1pdGVyIDogY2hhcilcbiAgICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgKGhhbmRsZXIgOiBzdHJpbmcgLT4gdW5pdCkgOlxuICAgIDwga2lsbCA6IHVuaXQgSnMubWV0aCA7IHdyaXRlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoID4gSnMudCA9XG4gIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgcmVjIG9uU3Rkb3V0IG1zZyA9XG4gICAgbWF0Y2ggVG9vbHMuc3RyaW5nX3NwbGl0X29uX2NoYXIgbWVzc2FnZV9kZWxpbWl0ZXIgKEpzLnRvX3N0cmluZyBtc2cpIHdpdGhcbiAgICB8IHByZWZpeCwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgcHJlZml4XG4gICAgfCBwcmVmaXgsIFNvbWUgc3VmZml4IC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgcHJlZml4O1xuICAgICAgaGFuZGxlciAoQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlcik7XG4gICAgICBCdWZmZXIucmVzZXQgYnVmZmVyO1xuICAgICAgb25TdGRvdXQgKEpzLnN0cmluZyBzdWZmaXgpXG4gIGluXG4gIGxldCBjb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICAgIGNyZWF0ZV9wcm9jZXNzX2NvbmZpZ3VyYXRpb24gfm9uU3Rkb3V0IH5vbkNsb3NlIGNvbW1hbmQgYXJnc1xuICBpblxuICBKcy5PcHQuY2FzZVxuICAgIChzcGF3bl9wcm9jZXNzIGNvbmZpZ3VyYXRpb24pXG4gICAgKGZ1biAoKSAtPlxuICAgICAgb25DbG9zZSAoKTtcbiAgICAgIGZhaWx3aXRoIChcIkxhdW5jaGluZyAnXCIgXiBjb21tYW5kIF4gXCInIGZhaWxlZFwiKSlcbiAgICAoZnVuIHggLT4geClcblxuKCoqIE1hbmFnZXIgaGVyZSBpcyBjb21tdW5pY2F0aW5nIHdpdGggcHJvY2Vzc2VzIG9mIGBrYXN0b3JgIGFuZCBgc3dpdGNobWFuYCwgd2hpY2ggaXRzZWxmIGNhbGxzIHRoZSBvdGhlciBjbGkgYWdlbnRzIFxuICAgIEthc3RvciBpcyBub3QgaW5jbHVkZWQgd2l0aCB0aGUgb3RoZXJzIGFzIGl0IGNhbiBiZSBjb21tdW5pY2F0ZWQgdG8gaW4gcmF3LCBhbmQgaXQgZG9lc24ndCBoYXZlIGFuIGludGVybmFsIHN0YXRlLlxuICopXG5jbGFzcyBtYW5hZ2VyID8obWVzc2FnZV9kZWxpbWl0ZXIgOiBjaGFyID0gVG9vbHMuZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyKVxuICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgOlxuICBBcGkuY29uY3JldGVfbWFuYWdlciA9XG4gIGxldCBzd2l0Y2hfcmUgPSBSZS5jb21waWxlIChSZS5zdHIgXCJLYXBwYVN3aXRjaG1hblwiKSBpblxuICBsZXQgc3Rvcl9jb21tYW5kID0gUmUucmVwbGFjZV9zdHJpbmcgc3dpdGNoX3JlIH5ieTpcIkthU3RvclwiIGNvbW1hbmQgaW5cbiAgbGV0IHN3aXRjaF9tYWlsYm94ID0gU3dpdGNobWFuX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQgc3Rvcl9zdGF0ZSwgdXBkYXRlX3N0b3Jfc3RhdGUgPSBLYXN0b3JfY2xpZW50LmluaXRfc3RhdGUgKCkgaW5cbiAgbGV0IHJ1bm5pbmdfcmVmID0gcmVmIHRydWUgaW5cbiAgbGV0IG9uQ2xvc2UgKCkgPSBydW5uaW5nX3JlZiA6PSBmYWxzZSBpblxuICBsZXQgc3Rvcl9wcm9jZXNzID1cbiAgICBsYXVuY2hfYWdlbnQgb25DbG9zZSBtZXNzYWdlX2RlbGltaXRlciBzdG9yX2NvbW1hbmQgYXJnc1xuICAgICAgKEthc3Rvcl9jbGllbnQucmVjZWl2ZSB1cGRhdGVfc3Rvcl9zdGF0ZSlcbiAgaW5cbiAgbGV0IHN3aXRjaF9wcm9jZXNzID1cbiAgICBsYXVuY2hfYWdlbnQgb25DbG9zZSBtZXNzYWdlX2RlbGltaXRlciBjb21tYW5kIGFyZ3NcbiAgICAgIChTd2l0Y2htYW5fY2xpZW50LnJlY2VpdmUgc3dpdGNoX21haWxib3gpXG4gIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgcHJpdmF0ZSBzbGVlcCB0aW1lb3V0ID0gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCB0aW1lb3V0XG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSAhcnVubmluZ19yZWZcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPVxuICAgICAgc3dpdGNoX3Byb2Nlc3MjI2tpbGw7XG4gICAgICBzdG9yX3Byb2Nlc3MjI2tpbGxcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPVxuICAgICAgU3dpdGNobWFuX2NsaWVudC5pc19jb21wdXRpbmcgc3dpdGNoX21haWxib3ggfHwgc2VsZiNzdG9yeV9pc19jb21wdXRpbmdcblxuICAgIGluaGVyaXRcbiAgICAgIEthc3Rvcl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIHN0b3JfcHJvY2VzcyMjd3JpdGVcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiJXMlY1wiIG1lc3NhZ2VfdGV4dCBtZXNzYWdlX2RlbGltaXRlcikpKVxuICAgICAgICBzdG9yX3N0YXRlXG5cbiAgICBpbmhlcml0XG4gICAgICBTd2l0Y2htYW5fY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfmlzX3J1bm5pbmc6KGZ1biAoKSAtPiB0cnVlKVxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIHN3aXRjaF9wcm9jZXNzIyN3cml0ZVxuICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCIlcyVjXCIgbWVzc2FnZV90ZXh0IG1lc3NhZ2VfZGVsaW1pdGVyKSkpXG4gICAgICAgIHN3aXRjaF9tYWlsYm94XG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCoqIE1hbmFnZXMgd29ya2VyIG1lc3NhZ2UgcmVjZXB0aW9uLlxuXG4gICAgTWFuYWdlcyB0aGUgbWVzc2FnZSByZWNlcHRpb24sIGFuZCBvcGVucyBhbiBlcnJvciBtb2RhbCB0byBhdmVydCB0aGUgdXNlciBieSBkZWZhdWx0LlxuICAgIFRoZSBtb2RhbCBjYW4gYmUgZGlzYWJsZWQgdG8ga2VlcCBvcmlnaW5hbCBleGNlcHRpb24gaW4gZGV2ZWxvcGVyIHRvb2xzIGJ5IHByb3ZpZGluZyB0byB0aGUgYXBwIHRoZSBgP25vX2V4Y19tb2RhbD10cnVlYCBhcmd1bWVudCAqKVxubGV0IHdvcmtlcl9vbm1lc3NhZ2UgfihkZWJ1Z19wcmludGluZyA6IGJvb2wpIH4od29ya2VyX25hbWUgOiBzdHJpbmcpXG4gICAgfihleGNlcHRpb25fY3JlYXRlc19tb2RhbCA6IGJvb2wpIH4od29ya2VyX3JlY2VpdmVfZiA6IHN0cmluZyAtPiB1bml0KSA6XG4gICAgKCAoc3RyaW5nLCBzdHJpbmcpIFdvcmtlci53b3JrZXIgSnMudCxcbiAgICAgIHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQgKVxuICAgIERvbS5ldmVudF9saXN0ZW5lciA9XG4gIGxldCBwcm9jZXNzX21lc3NhZ2VcbiAgICAgIChyZXNwb25zZV9tZXNzYWdlIDpcbiAgICAgICAgPCBkYXRhIDogPCBnZXQgOiBzdHJpbmcgOyAuLiA+IEpzLmdlbl9wcm9wIDsgLi4gPiBKcy50KSA6IGJvb2wgSnMudCA9XG4gICAgbGV0IHJlc3BvbnNlX3RleHQgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgIGlmIGRlYnVnX3ByaW50aW5nIHRoZW4gKFxuICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cCAoXCJNZXNzYWdlIHJlY2VpdmVkIGZyb20gXCIgXiB3b3JrZXJfbmFtZSkgaW5cbiAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX18gcmVzcG9uc2VfdGV4dCBpblxuICAgICAgQ29tbW9uLmxvZ19ncm91cF9lbmQgKClcbiAgICApO1xuICAgIGxldCAoKSA9IHdvcmtlcl9yZWNlaXZlX2YgcmVzcG9uc2VfdGV4dCBpblxuICAgIEpzLl90cnVlXG4gIGluXG4gIGxldCBoYW5kbGVyX2YgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50IC0+IGJvb2wgSnMudCA9XG4gICAgaWYgZXhjZXB0aW9uX2NyZWF0ZXNfbW9kYWwgdGhlbiAoXG4gICAgICBmdW4gcmVzcG9uc2VfbWVzc2FnZSAtPlxuICAgIHRyeSBwcm9jZXNzX21lc3NhZ2UgcmVzcG9uc2VfbWVzc2FnZVxuICAgIHdpdGggXyBhcyBlIC0+XG4gICAgICBLYXBwYV93ZWJhcHBfbGliLlVpX2NvbW1vbi5vcGVuX21vZGFsX2Vycm9yIH5pc19jcml0aWNhbDpmYWxzZVxuICAgICAgICB+ZXJyb3JfY29udGVudDpcbiAgICAgICAgICAoXCJXb3JrZXIgYFwiIF4gd29ya2VyX25hbWUgXiBcImAgcmFpc2VkIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOiBcXHJcIlxuICAgICAgICAgXiBQcmludGV4Yy50b19zdHJpbmcgZSk7XG4gICAgICByYWlzZSBlXG4gICAgKSBlbHNlXG4gICAgICBwcm9jZXNzX21lc3NhZ2VcbiAgaW5cbiAgRG9tLmhhbmRsZXIgaGFuZGxlcl9mXG5cbmxldCBub19leGNfbW9kYWxfYXJnIDogc3RyaW5nIGxpc3QgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJub19leGNfbW9kYWxcIlxuXG5sZXQgc2VuZF93b3JrZXJfZXhjZXB0aW9uc190b19tb2RhbCA9XG4gIG5vdFxuICAgIChtYXRjaCBub19leGNfbW9kYWxfYXJnIHdpdGhcbiAgICB8IHMgOjogXyB3aGVuIFN0cmluZy5lcXVhbCBzIFwidHJ1ZVwiIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBvbmVycm9yIH53b3JrZXJfbmFtZSB+YXBwbHlfb25lcnJvciA9XG4gIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX3N0cmluZyA6IHN0cmluZyA9IFwiRXJyb3IgaW4gYFwiIF4gd29ya2VyX25hbWUgXiBcImA6XCIgaW5cbiAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX18gZXJyb3Jfc3RyaW5nIGluXG4gICAgICBVaV9jb21tb24ub3Blbl9tb2RhbF9lcnJvciB+aXNfY3JpdGljYWw6ZmFsc2UgfmVycm9yX2NvbnRlbnQ6ZXJyb3Jfc3RyaW5nO1xuICAgICAgYXBwbHlfb25lcnJvciAoKTtcbiAgICAgIEpzLl90cnVlKVxuXG5jbGFzcyB0eXBlIGNvbmNyZXRlX21hbmFnZXJfd2l0aG91dF9rYXNpbSA9IG9iamVjdFxuICBpbmhlcml0IEFwaS5tYW5hZ2VyX21vZGVsXG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc3RhdGljX2FuYWx5c2lzXG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc3Rvcmllc1xuXG4gIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IDpcbiAgICBmaWxlbmFtZTpzdHJpbmcgLT5cbiAgICBMb2MucG9zaXRpb24gLT5cbiAgICBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlIG9wdGlvbiBBcGkubHd0X3Jlc3VsdFxuXG4gIG1ldGhvZCBpc19ydW5uaW5nIDogYm9vbFxuICBtZXRob2QgdGVybWluYXRlIDogdW5pdFxuICBtZXRob2QgaXNfY29tcHV0aW5nIDogYm9vbFxuXG4gICgqIHByb3RlY3RlZDogdXNlZCBpbiBpbmhlcml0YW5jZSwgc28gY2Fubm90IGJlIHByaXZhdGUsICAqKVxuICBtZXRob2QgcHJpdmF0ZSBhcHBseV9vbmVycm9yIDogdW5pdFxuXG4gIG1ldGhvZCBwcml2YXRlIHByb2plY3RfcGFyc2Vfd2l0aG91dF9rYXNpbSA6XG4gICAgc2ltdWxhdGlvbl9sb2FkOlxuICAgICAgKFBhdHRlcm4uc2hhcmluZ19sZXZlbCAtPlxuICAgICAgQXN0LnBhcnNpbmdfY29tcGlsIC0+XG4gICAgICAoc3RyaW5nICogTmJyLnQpIGxpc3QgLT5cbiAgICAgIHVuaXQgQXBpLmx3dF9yZXN1bHQpIC0+XG4gICAgcGF0dGVyblNoYXJpbmc6UGF0dGVybi5zaGFyaW5nX2xldmVsIC0+XG4gICAgKHN0cmluZyAqIE5ici50KSBsaXN0IC0+XG4gICAgdW5pdCBBcGkubHd0X3Jlc3VsdFxuZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl93aXRob3V0X2thc2ltICgpIDogY29uY3JldGVfbWFuYWdlcl93aXRob3V0X2thc2ltID1cbiAgbGV0IGthc2Ffd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU2FXb3JrZXIuanNcIiBpblxuICBsZXQga2FzYV9tYWlsYm94ID0gS2FzYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthbW9oYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FNb0hhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthbW9oYV9tYWlsYm94ID0gS2Ftb2hhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2FzdG9yX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVN0b3JXb3JrZXIuanNcIiBpblxuICBsZXQgc3Rvcl9zdGF0ZSwgdXBkYXRlX3N0b3Jfc3RhdGUgPSBLYXN0b3JfY2xpZW50LmluaXRfc3RhdGUgKCkgaW5cblxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaXNfcnVubmluZyA9IHRydWVcbiAgICBtZXRob2QgcHJpdmF0ZSBhcHBseV9vbmVycm9yID0gaXNfcnVubmluZyA8LSBmYWxzZVxuXG4gICAgaW5pdGlhbGl6ZXJcbiAgICAgICgqIFRoZSB1cmwgYXJndW1lbnQgYG5vX2V4Y19tb2RhbD10cnVlYCBkaXNhYmxlcyBleGNlcHRpb24gbW9kYWxzIHRvIGtlZXAgZXhjZXB0aW9uIGluZm8gY2xlYXIgaW4gY29uc29sZS4gKilcbiAgICAgIGthc2Ffd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgIHdvcmtlcl9vbm1lc3NhZ2UgfmRlYnVnX3ByaW50aW5nOnRydWUgfndvcmtlcl9uYW1lOlwia2FzYV93b3JrZXJcIlxuICAgICAgICAgIH5leGNlcHRpb25fY3JlYXRlc19tb2RhbDpzZW5kX3dvcmtlcl9leGNlcHRpb25zX3RvX21vZGFsXG4gICAgICAgICAgfndvcmtlcl9yZWNlaXZlX2Y6KEthc2FfY2xpZW50LnJlY2VpdmUga2FzYV9tYWlsYm94KTtcbiAgICAgIGthbW9oYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgd29ya2VyX29ubWVzc2FnZSB+ZGVidWdfcHJpbnRpbmc6dHJ1ZSB+d29ya2VyX25hbWU6XCJrYW1vaGFfd29ya2VyXCJcbiAgICAgICAgICB+ZXhjZXB0aW9uX2NyZWF0ZXNfbW9kYWw6c2VuZF93b3JrZXJfZXhjZXB0aW9uc190b19tb2RhbFxuICAgICAgICAgIH53b3JrZXJfcmVjZWl2ZV9mOihLYW1vaGFfY2xpZW50LnJlY2VpdmUga2Ftb2hhX21haWxib3gpO1xuICAgICAga2FzdG9yX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICB3b3JrZXJfb25tZXNzYWdlIH5kZWJ1Z19wcmludGluZzp0cnVlIH53b3JrZXJfbmFtZTpcImthc3Rvcl93b3JrZXJcIlxuICAgICAgICAgIH5leGNlcHRpb25fY3JlYXRlc19tb2RhbDpzZW5kX3dvcmtlcl9leGNlcHRpb25zX3RvX21vZGFsXG4gICAgICAgICAgfndvcmtlcl9yZWNlaXZlX2Y6KEthc3Rvcl9jbGllbnQucmVjZWl2ZSB1cGRhdGVfc3Rvcl9zdGF0ZSk7XG5cbiAgICAgIGxldCBhcHBseV9vbmVycm9yICgpID0gc2VsZiNhcHBseV9vbmVycm9yIGluXG4gICAgICBrYXNhX3dvcmtlciMjLm9uZXJyb3IgOj0gb25lcnJvciB+d29ya2VyX25hbWU6XCJrYXNhX3dvcmtlclwiIH5hcHBseV9vbmVycm9yO1xuICAgICAga2Ftb2hhX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgb25lcnJvciB+d29ya2VyX25hbWU6XCJrYW1vaGFfd29ya2VyXCIgfmFwcGx5X29uZXJyb3I7XG4gICAgICBrYXN0b3Jfd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICBvbmVycm9yIH53b3JrZXJfbmFtZTpcImthc3Rvcl93b3JrZXJcIiB+YXBwbHlfb25lcnJvclxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzYV9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+aXNfcnVubmluZzooZnVuICgpIC0+IHRydWUpXG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cCBcIk1lc3NhZ2UgcG9zdGVkIHRvIGthc2Ffd29ya2VyXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIChKcy5zdHJpbmcgbWVzc2FnZV90ZXh0KSBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG4gICAgICAgICAga2FzYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2FzYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYW1vaGFfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24ubG9nX2dyb3VwIFwiTWVzc2FnZSBwb3N0ZWQgdG8ga2Ftb2hhX3dvcmtlclwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24ubG9nX2dyb3VwX2VuZCAoKSBpblxuICAgICAgICAgIGthbW9oYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2Ftb2hhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthc3Rvcl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJNZXNzYWdlIHBvc3RlZCB0byBrYXN0b3Jfd29ya2VyXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIChKcy5zdHJpbmcgbWVzc2FnZV90ZXh0KSBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG4gICAgICAgICAga2FzdG9yX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBzdG9yX3N0YXRlXG5cbiAgICB2YWwgbXV0YWJsZSBrYXNhX2xvY2F0b3IgPSBbXVxuXG4gICAgbWV0aG9kIHByaXZhdGUgcHJvamVjdF9wYXJzZV93aXRob3V0X2thc2ltIH5zaW11bGF0aW9uX2xvYWQgfnBhdHRlcm5TaGFyaW5nXG4gICAgICAgIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNzZWNyZXRfcHJvamVjdF9wYXJzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3RcbiAgICAgICAgICAgIH5vazooZnVuIChwYXJzaW5nX2NvbXBpbCA6IEFzdC5wYXJzaW5nX2NvbXBpbCkgLT5cbiAgICAgICAgICAgICAgKCogbG9hZCB0aGUgc2ltIHNvIHRoYXQga2FzYSBjYW4gcnVuIG9uIGl0ICopXG4gICAgICAgICAgICAgIGxldCBsb2FkIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIHBhcnNpbmdfY29tcGlsIG92ZXJ3cml0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluaXRfa2FzYSA9IHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXIgcGFyc2luZ19jb21waWwgaW5cbiAgICAgICAgICAgICAgbGV0IGxvY2F0b3JzID1cbiAgICAgICAgICAgICAgICBpbml0X2thc2FcbiAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBpbmZvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gaW5mb3MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb2FkID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuICgpIC0+IGxvY2F0b3JzKSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBwb3MgOiBfIEFwaS5sd3RfcmVzdWx0ID1cbiAgICAgIExpc3QuZmluZF9vcHRcbiAgICAgICAgKGZ1biAoXywgeCkgLT4gTG9jLmlzX2luY2x1ZGVkX2luIGZpbGVuYW1lIHBvcyB4KVxuICAgICAgICBrYXNhX2xvY2F0b3JcbiAgICAgIHw+IE9wdGlvbl91dGlsLm1hcCBmc3RcbiAgICAgIHw+IFJlc3VsdF91dGlsLm9rID9zdGF0dXM6Tm9uZVxuICAgICAgfD4gTHd0LnJldHVyblxuXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSBpc19ydW5uaW5nXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9IGthc2Ffd29ya2VyIyN0ZXJtaW5hdGVcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPVxuICAgICAgS2FzYV9jbGllbnQuaXNfY29tcHV0aW5nIGthc2FfbWFpbGJveCB8fCBzZWxmI3N0b3J5X2lzX2NvbXB1dGluZ1xuICBlbmRcblxuY2xhc3MgcnVudGltZV9rYXNpbV9hc193ZWJfd29ya2VyICgpIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgPVxuICBsZXQga2FzaW1fd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU2ltV29ya2VyLmpzXCIgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgbWFuYWdlcl93aXRob3V0X2thc2ltICgpIGFzIHdpdGhvdXRfa2FzaW1cblxuICAgIGluaXRpYWxpemVyXG4gICAgICBrYXNpbV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgd29ya2VyX29ubWVzc2FnZSB+ZGVidWdfcHJpbnRpbmc6ZmFsc2Ugfndvcmtlcl9uYW1lOlwia2FzaW1fd29ya2VyXCJcbiAgICAgICAgICB+ZXhjZXB0aW9uX2NyZWF0ZXNfbW9kYWw6c2VuZF93b3JrZXJfZXhjZXB0aW9uc190b19tb2RhbFxuICAgICAgICAgIH53b3JrZXJfcmVjZWl2ZV9mOnNlbGYjcmVjZWl2ZTtcbiAgICAgIGxldCBhcHBseV9vbmVycm9yICgpID0gd2l0aG91dF9rYXNpbSNhcHBseV9vbmVycm9yIGluXG4gICAgICBrYXNpbV93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgIG9uZXJyb3Igfndvcmtlcl9uYW1lOlwia2FzaW1fd29ya2VyXCIgfmFwcGx5X29uZXJyb3JcblxuICAgIGluaGVyaXRcbiAgICAgIEthc2ltX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cCBcIk1lc3NhZ2UgcG9zdGVkIHRvIGthc2ltX3dvcmtlclwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24ubG9nX2dyb3VwX2VuZCAoKSBpblxuICAgICAgICAgIGthc2ltX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICAoKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgc2xlZXAgdGltZW91dCA9IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdGltZW91dFxuXG4gICAgbWV0aG9kIHRlcm1pbmF0ZSA9XG4gICAgICB3aXRob3V0X2thc2ltI3Rlcm1pbmF0ZTtcbiAgICAgIGthc2ltX3dvcmtlciMjdGVybWluYXRlXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID1cbiAgICAgIHdpdGhvdXRfa2FzaW0jaXNfY29tcHV0aW5nIHx8IHNlbGYjc2ltX2lzX2NvbXB1dGluZ1xuICAgICAgfHwgc2VsZiNzdG9yeV9pc19jb21wdXRpbmdcblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIGxldCBzaW11bGF0aW9uX2xvYWQgKHBhdHRlcm5TaGFyaW5nIDogUGF0dGVybi5zaGFyaW5nX2xldmVsKVxuICAgICAgICAgIChwYXJzaW5nX2NvbXBpbCA6IEFzdC5wYXJzaW5nX2NvbXBpbClcbiAgICAgICAgICAob3ZlcndyaXRlcyA6IChzdHJpbmcgKiBOYnIudCkgbGlzdCkgPVxuICAgICAgICBzZWxmI3NlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgcGFyc2luZ19jb21waWwgb3ZlcndyaXRlc1xuICAgICAgaW5cbiAgICAgIHdpdGhvdXRfa2FzaW0jcHJvamVjdF9wYXJzZV93aXRob3V0X2thc2ltIH5zaW11bGF0aW9uX2xvYWQgfnBhdHRlcm5TaGFyaW5nXG4gICAgICAgIG92ZXJ3cml0ZXNcbiAgZW5kXG5cbigqIFRPRE86IGRlcHJlY2F0ZSB0aGlzPyAqKVxuY2xhc3MgcnVudGltZV9rYXNpbV9lbWJlZGRlZF9pbl9tYWluX3RocmVhZCAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyID1cbiAgbGV0IHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzID1cbiAgICBvYmplY3RcbiAgICAgIG1ldGhvZCBtaW5fcnVuX2R1cmF0aW9uICgpID0gMC4xXG4gICAgICBtZXRob2QgeWllbGQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnlpZWxkXG5cbiAgICAgIG1ldGhvZCBsb2cgP2V4biAobXNnIDogc3RyaW5nKSA9XG4gICAgICAgIGlnbm9yZSBleG47XG4gICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiW1N0YXRlX3J1bnRpbWUuZW1iZWRkZWRdIGVtYmVkZGVkX21hbmFnZXIjbG9nOiAlc1wiXG4gICAgICAgICAgICAgICAgbXNnKSk7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVuZFxuICBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBtYW5hZ2VyX3dpdGhvdXRfa2FzaW0gKCkgYXMgd2l0aG91dF9rYXNpbVxuXG4gICAgKCogVXNlIGVtYmVkZGVkIGthc2ltIHJ1bnRpbWUgaGVyZSAqKVxuICAgIGluaGVyaXQgS2FzaW1fcnVudGltZS5tYW5hZ2VyIHN5c3RlbV9wcm9jZXNzXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSB0cnVlXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIHdpdGhvdXRfa2FzaW0jdGVybWluYXRlO1xuICAgICAgKCkgKCpUT0RPKilcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPVxuICAgICAgd2l0aG91dF9rYXNpbSNpc19jb21wdXRpbmcgfHwgc2VsZiNpc19jb21wdXRpbmcgfHwgc2VsZiNzdG9yeV9pc19jb21wdXRpbmdcblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIGxldCBzaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgcGFyc2luZ19jb21waWwgb3ZlcndyaXRlcyA9XG4gICAgICAgIHNlbGYjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuU2hhcmluZyBwYXJzaW5nX2NvbXBpbCBvdmVyd3JpdGVzXG4gICAgICBpblxuICAgICAgd2l0aG91dF9rYXNpbSNwcm9qZWN0X3BhcnNlX3dpdGhvdXRfa2FzaW0gfnNpbXVsYXRpb25fbG9hZCB+cGF0dGVyblNoYXJpbmdcbiAgICAgICAgb3ZlcndyaXRlc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY2xpID0geyB1cmw6IHN0cmluZzsgY29tbWFuZDogc3RyaW5nOyBhcmdzOiBzdHJpbmcgbGlzdCB9XG50eXBlIHByb3RvY29sID0gSFRUUCBvZiBzdHJpbmcgfCBDTEkgb2YgY2xpXG50eXBlIHJlbW90ZSA9IHsgbGFiZWw6IHN0cmluZzsgcHJvdG9jb2w6IHByb3RvY29sIH1cbnR5cGUgc3BlYyA9IEthc2ltQXNXZWJXb3JrZXIgfCBLYVNpbUFzRW1iZWRkZWQgfCBSZW1vdGUgb2YgcmVtb3RlXG50eXBlIHN0YXRlID0geyBzdGF0ZV9jdXJyZW50OiBzcGVjOyBzdGF0ZV9ydW50aW1lczogc3BlYyBsaXN0IH1cbnR5cGUgbW9kZWwgPSB7IG1vZGVsX2N1cnJlbnQ6IHNwZWM7IG1vZGVsX3J1bnRpbWVzOiBzcGVjIGxpc3QgfVxuXG5sZXQgc3BlY19sYWJlbCA6IHNwZWMgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBLYXNpbUFzV2ViV29ya2VyIC0+IFwiS2FzaW1Bc1dlYldvcmtlclwiXG4gIHwgS2FTaW1Bc0VtYmVkZGVkIC0+IFwiS2FTaW1Bc0VtYmVkZGVkXCJcbiAgfCBSZW1vdGUgcmVtb3RlIC0+IHJlbW90ZS5sYWJlbFxuXG5sZXQgc3BlY19pZCA6IHNwZWMgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBLYXNpbUFzV2ViV29ya2VyIC0+IFwiS2FzaW1Bc1dlYldvcmtlclwiXG4gIHwgS2FTaW1Bc0VtYmVkZGVkIC0+IFwiS2FTaW1Bc0VtYmVkZGVkXCJcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCBodHRwIH0gLT4gaHR0cFxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBDTEkgY2xpIH0gLT4gY2xpLnVybFxuXG5sZXQgcmVhZF9zcGVjIDogc3RyaW5nIC0+IHNwZWMgb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBcIkthc2ltQXNXZWJXb3JrZXJcIiAtPiBTb21lIEthc2ltQXNXZWJXb3JrZXJcbiAgfCBcIkthU2ltQXNFbWJlZGRlZFwiIC0+IFNvbWUgS2FTaW1Bc0VtYmVkZGVkXG4gIHwgdXJsIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIENvbW1vbi5sb2dfZ3JvdXBcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiW1N0YXRlX3J1bnRpbWUucmVhZF9zcGVjXSBwYXJzZV9yZW1vdGU6ICVzXCIgdXJsKVxuICAgIGluXG4gICAgbGV0IGZvcm1hdF91cmwgdXJsID1cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHVybCBpblxuICAgICAgaWYgbGVuZ3RoID4gMCAmJiBTdHJpbmcuZ2V0IHVybCAobGVuZ3RoIC0gMSkgPT0gJy8nIHRoZW5cbiAgICAgICAgU3RyaW5nLnN1YiB1cmwgMCAobGVuZ3RoIC0gMSlcbiAgICAgIGVsc2VcbiAgICAgICAgdXJsXG4gICAgaW5cbiAgICBsZXQgY2xlYW5lZF91cmwgaHR0cCA9XG4gICAgICBsZXQgY2xlYW5lZCA9XG4gICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXM6JWQvJXNcIiBodHRwLlVybC5odV9ob3N0IGh0dHAuVXJsLmh1X3BvcnRcbiAgICAgICAgICBodHRwLlVybC5odV9wYXRoX3N0cmluZ1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcImNsZWFuZWQgOiAlc1wiIGNsZWFuZWQpKVxuICAgICAgaW5cbiAgICAgIGZvcm1hdF91cmwgY2xlYW5lZFxuICAgIGluXG4gICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cblxuICAgIChtYXRjaCBVcmwudXJsX29mX3N0cmluZyB1cmwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJhd19wYXJzZWQgLT5cbiAgICAgICgqIE9uIHdpbmRvd3MsIHJlbW92ZXMgdGhlIGxlYWRpbmcgYC9gIGxlZnQgYnkganNfb2Zfb2NhbWwgdXJsIHBhcnNpbmcgb24gZmlsZTovLy9DOi9wYXRoYCB3aW5kb3dzIFVSTHMgKilcbiAgICAgIGxldCBjbGVhbl9wYXJzZWRfd2hlbl9vbl93aW5kb3dzIHJhd19wYXJzZWQgPVxuICAgICAgICBtYXRjaCByYXdfcGFyc2VkIHdpdGhcbiAgICAgICAgfCBVcmwuSHR0cCBfIHwgVXJsLkh0dHBzIF8gLT4gcmF3X3BhcnNlZFxuICAgICAgICB8IFVybC5GaWxlIGZpbGVfdXJsIC0+XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIGZpbGVfdXJsLlVybC5mdV9wYXRoX3N0cmluZy5bMF0gPT0gJy8nXG4gICAgICAgICAgICAmJiBmaWxlX3VybC5VcmwuZnVfcGF0aF9zdHJpbmcuWzJdID09ICc6J1xuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgICAgICAgICAgIFwiV2luZG93cyBmaWxlIGFkZHJlc3MgdHJhbnNsYXRlZCBmcm9tIGpzX29mX29jYW1sIGVycm9yXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBVcmwuRmlsZVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmlsZV91cmwgd2l0aFxuICAgICAgICAgICAgICAgIFVybC5mdV9wYXRoX3N0cmluZyA9XG4gICAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIGZpbGVfdXJsLlVybC5mdV9wYXRoX3N0cmluZyAxXG4gICAgICAgICAgICAgICAgICAgIChTdHJpbmcubGVuZ3RoIGZpbGVfdXJsLlVybC5mdV9wYXRoX3N0cmluZyAtIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByYXdfcGFyc2VkXG4gICAgICBpblxuICAgICAgbGV0IHBhcnNlZCA9IGNsZWFuX3BhcnNlZF93aGVuX29uX3dpbmRvd3MgcmF3X3BhcnNlZCBpblxuICAgICAgbGV0IHByb3RvY29sIDogcHJvdG9jb2wgPVxuICAgICAgICBtYXRjaCBwYXJzZWQgd2l0aFxuICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT4gSFRUUCAoXCJodHRwOi8vXCIgXiBjbGVhbmVkX3VybCBodHRwKVxuICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBIVFRQIChcImh0dHBzOi8vXCIgXiBjbGVhbmVkX3VybCBodHRwcylcbiAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+XG4gICAgICAgICAgQ0xJXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHVybCA9IFwiZmlsZTovL1wiIF4gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmc7XG4gICAgICAgICAgICAgIGNvbW1hbmQgPSBmaWxlLlVybC5mdV9wYXRoX3N0cmluZztcbiAgICAgICAgICAgICAgYXJncyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBsYWJlbCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIExpc3QuYXNzb2MgXCJsYWJlbFwiXG4gICAgICAgICAgICAobWF0Y2ggcGFyc2VkIHdpdGhcbiAgICAgICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPiBodHRwLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgIHwgVXJsLkh0dHBzIGh0dHBzIC0+IGh0dHBzLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPiBmaWxlLlVybC5mdV9hcmd1bWVudHMpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgKG1hdGNoIHBhcnNlZCB3aXRoXG4gICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+IGh0dHAuVXJsLmh1X2hvc3RcbiAgICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBodHRwcy5VcmwuaHVfaG9zdFxuICAgICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPiBmaWxlLlVybC5mdV9wYXRoX3N0cmluZylcbiAgICAgIGluXG4gICAgICBTb21lIChSZW1vdGUgeyBsYWJlbDsgcHJvdG9jb2wgfSkpXG5cbmxldCBzdGF0ZSwgc2V0X3N0YXRlID1cbiAgUmVhY3QuUy5jcmVhdGVcbiAgICB7XG4gICAgICBzdGF0ZV9jdXJyZW50ID0gS2FzaW1Bc1dlYldvcmtlcjtcbiAgICAgIHN0YXRlX3J1bnRpbWVzID0gWyBLYXNpbUFzV2ViV29ya2VyOyBLYVNpbUFzRW1iZWRkZWQgXTtcbiAgICB9XG5cbmxldCBjcmVhdGVfbWFuYWdlciB+aXNfbmV3IF9wcm9qZWN0X2lkID1cbiAgKCogTGluZSBiZWxvdyB0byBzcGVjaWZ5IHVudXNlZCB2YXIsIGFzIGplIGNhbm5vdCBjaGFuZ2UgdGhlIG5hbWVkIGFyZ3VtZW50IHRvIF9pc19uZXcgKilcbiAgbGV0IF91bnVzZWQgPSBpc19uZXcgaW5cblxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkuc3RhdGVfY3VycmVudCB3aXRoXG4gIHwgS2FzaW1Bc1dlYldvcmtlciAtPlxuICAgIEx3dC5yZXR1cm5cbiAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgKG5ldyBSdW50aW1lX3dlYl93b3JrZXJzLnJ1bnRpbWVfa2FzaW1fYXNfd2ViX3dvcmtlciAoKVxuICAgICAgICAgICA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSlcbiAgfCBLYVNpbUFzRW1iZWRkZWQgLT5cbiAgICBMd3QucmV0dXJuXG4gICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgIChuZXcgUnVudGltZV93ZWJfd29ya2Vycy5ydW50aW1lX2thc2ltX2VtYmVkZGVkX2luX21haW5fdGhyZWFkICgpXG4gICAgICAgICAgIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpKVxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBIVFRQIHVybCB9IC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZlxuICAgICAgICBcIlJFU1Qgc2VydmVyIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZSBhbmQgdXJsIFxcXCIlc1xcXCIgd2FzIHByb3ZpZGVkLlwiIHVybFxuICAgIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gIHwgUmVtb3RlIHsgbGFiZWw7IHByb3RvY29sID0gQ0xJIGNsaSB9IC0+XG4gICAgbGV0ICgpID1cbiAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAoXCJbU3RhdGVfcnVudGltZS5jcmVhdGVfbWFuYWdlcl0gc2V0X3J1bnRpbWVfdXJsIENMSTogXCIgXiBjbGkudXJsKSlcbiAgICBpblxuICAgICh0cnlcbiAgICAgICBsZXQganNfbm9kZV9ydW50aW1lID1cbiAgICAgICAgIG5ldyBSdW50aW1lX3Byb2Nlc3Nlcy5tYW5hZ2VyIGNsaS5jb21tYW5kIGNsaS5hcmdzXG4gICAgICAgaW5cbiAgICAgICBpZiBqc19ub2RlX3J1bnRpbWUjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgXCJbU3RhdGVfcnVudGltZS5jcmVhdGVfbWFuYWdlcl0gc2V0X3J1bnRpbWVfdXJsOiBzdWNjZXNzXCIpXG4gICAgICAgICBpblxuICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKGpzX25vZGVfcnVudGltZSA6PiBBcGkuY29uY3JldGVfbWFuYWdlcikpXG4gICAgICAgKSBlbHNlIChcbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgXCJbU3RhdGVfcnVudGltZS5jcmVhdGVfbWFuYWdlcl0gc2V0X3J1bnRpbWVfdXJsOiBmYWlsdXJlXCIpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiQ291bGQgbm90IHN0YXJ0IGNsaSBydW50aW1lICVzIFwiIGxhYmVsXG4gICAgICAgICBpblxuICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gICAgICAgKVxuICAgICB3aXRoIEZhaWx1cmUgeCAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIHgpKVxuXG5sZXQgc2V0X3NwZWMgcnVudGltZSA9XG4gIGxldCBjdXJyZW50X3N0YXRlID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICBzZXRfc3RhdGVcbiAgICB7IHN0YXRlX2N1cnJlbnQgPSBydW50aW1lOyBzdGF0ZV9ydW50aW1lcyA9IGN1cnJlbnRfc3RhdGUuc3RhdGVfcnVudGltZXMgfVxuXG5sZXQgY3JlYXRlX3NwZWMgfmxvYWQgKGlkIDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCA9XG4gIG1hdGNoIHJlYWRfc3BlYyBpZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgdG8gY3JlYXRlIHNwZWM6IGNvdWxkIG5vdCBwYXJzZSBpZGVudGlmaWVyICVzXCIgaWRcbiAgICBpblxuICAgIEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnXG4gIHwgU29tZSBydW50aW1lIC0+XG4gICAgbGV0IGN1cnJlbnRfc3RhdGUgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIG5vdCAoTGlzdC5tZW0gcnVudGltZSBjdXJyZW50X3N0YXRlLnN0YXRlX3J1bnRpbWVzKSB0aGVuXG4gICAgICAgIHNldF9zdGF0ZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRlX2N1cnJlbnQgPSBjdXJyZW50X3N0YXRlLnN0YXRlX2N1cnJlbnQ7XG4gICAgICAgICAgICBzdGF0ZV9ydW50aW1lcyA9IHJ1bnRpbWUgOjogY3VycmVudF9zdGF0ZS5zdGF0ZV9ydW50aW1lcztcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBpZiBsb2FkIHRoZW4gc2V0X3NwZWMgcnVudGltZSBpblxuICAgIFJlc3VsdF91dGlsLm9rICgpXG5cbmxldCBtb2RlbCA6IG1vZGVsIFJlYWN0LnNpZ25hbCA9XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBzdGF0ZSAtPlxuICAgICAge1xuICAgICAgICBtb2RlbF9jdXJyZW50ID0gc3RhdGUuc3RhdGVfY3VycmVudDtcbiAgICAgICAgbW9kZWxfcnVudGltZXMgPSBzdGF0ZS5zdGF0ZV9ydW50aW1lcztcbiAgICAgIH0pXG4gICAgc3RhdGVcblxuKCogcnVuIG9uIGFwcGxpY2F0aW9uIGluaXQgKilcbmxldCBpbml0ICgpID1cbiAgKCogZ2V0IHVybCBvZiBob3N0ICopXG4gIGxldCBob3N0cyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcImhvc3RcIiBpblxuICBsZXQgcmVjIGFkZF91cmxzIHVybHMgbG9hZCA9XG4gICAgbWF0Y2ggdXJscyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdXJsIDo6IHVybHMgLT5cbiAgICAgIChtYXRjaCBjcmVhdGVfc3BlYyB+bG9hZCB1cmwgd2l0aFxuICAgICAgfCB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0Lk9rICgpOyBfIH0gLT4gYWRkX3VybHMgdXJscyBmYWxzZVxuICAgICAgfCB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSAtPiBhZGRfdXJscyB1cmxzIGxvYWQpXG4gIGluXG4gIGxldCAoKSA9IGFkZF91cmxzIGhvc3RzIHRydWUgaW5cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnN0YXRlX2N1cnJlbnQgd2l0aFxuICB8IFJlbW90ZSB7IHByb3RvY29sID0gQ0xJIF87IF8gfSB8IEthc2ltQXNXZWJXb3JrZXIgfCBLYVNpbUFzRW1iZWRkZWQgLT5cbiAgICBMd3QucmV0dXJuX25pbFxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBIVFRQIHVybCB9IC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZlxuICAgICAgICBcIlJFU1Qgc2VydmVyIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZSBhbmQgdXJsIFxcXCIlc1xcXCIgd2FzIHByb3ZpZGVkLlwiIHVybFxuICAgIGluXG4gICAgbGV0ICgpID0gQ29tbW9uLmVycm9yIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIGVycm9yX21zZykgaW5cbiAgICBMd3QucmV0dXJuX25pbFxuXG4oKiB0byBzeW5jIHN0YXRlIG9mIGFwcGxpY2F0aW9uIHdpdGggcnVudGltZSAqKVxubGV0IHN5bmMgKCkgPSBMd3QucmV0dXJuX3VuaXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCBwbG90UGVyaW9kUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBQbG90UGVyaW9kXCJcbmxldCBwYXVzZUNvbmRpdGlvblBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwUGF1c2VDb25kaXRpb25cIlxubGV0IHNlZWRQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcERlZmF1bHRTZWVkXCJcbmxldCBzdG9yZVRyYWNlUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBTdG9yZVRyYWNlXCJcbmxldCBzaG93RGVhZFJ1bGVzUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBTaG93RGVhZFJ1bGVzXCJcbmxldCBzaG93RGVhZEFnZW50c1BhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0RlYWRBZ2VudHNcIlxuXG5sZXQgc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZCA9XG4gIEpzLnN0cmluZyBcImthcHBhcHBTaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvblwiXG5cbnR5cGUgcGFyYW1ldGVycyA9IHtcbiAgcGxvdF9wZXJpb2Q6IGZsb2F0O1xuICBwYXVzZV9jb25kaXRpb246IHN0cmluZztcbiAgc2VlZDogaW50IG9wdGlvbjtcbiAgc3RvcmVfdHJhY2U6IGJvb2w7XG4gIHNob3dfZGVhZF9ydWxlczogYm9vbDtcbiAgc2hvd19kZWFkX2FnZW50czogYm9vbDtcbiAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM6IGJvb2w7XG59XG5cbnR5cGUgYV9wcm9qZWN0ID0ge1xuICBwcm9qZWN0X2lkOiBzdHJpbmc7XG4gIHByb2plY3RfaXNfY29tcHV0aW5nOiBib29sIFJlYWN0LlMudDtcbiAgcHJvamVjdF93YXRjaGVyX2NhbmNlbDogYm9vbCByZWY7XG4gIHByb2plY3RfbWFuYWdlcjogQXBpLmNvbmNyZXRlX21hbmFnZXI7XG59XG5cbnR5cGUgc3RhdGUgPSB7XG4gIHByb2plY3RfY3VycmVudDogYV9wcm9qZWN0IG9wdGlvbjtcbiAgcHJvamVjdF9jYXRhbG9nOiBhX3Byb2plY3QgbGlzdDtcbiAgcHJvamVjdF92ZXJzaW9uOiBpbnQ7XG4gIGRlZmF1bHRfcGFyYW1ldGVyczogcGFyYW1ldGVycztcbiAgcHJvamVjdF9wYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzIE1vZHMuU3RyaW5nTWFwLnQ7XG59XG5cbnR5cGUgcHJvamVjdF9tb2RlbCA9IHtcbiAgbW9kZWxfcHJvamVjdF9pZDogc3RyaW5nO1xuICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZzogYm9vbCBSZWFjdC5TLnQ7XG59XG5cbnR5cGUgbW9kZWwgPSB7XG4gIG1vZGVsX2N1cnJlbnRfaWQ6IHN0cmluZyBvcHRpb247XG4gIG1vZGVsX2NhdGFsb2c6IHByb2plY3RfbW9kZWwgbGlzdDtcbiAgbW9kZWxfcHJvamVjdF92ZXJzaW9uOiBpbnQ7XG4gIG1vZGVsX3BhcmFtZXRlcnM6IHBhcmFtZXRlcnM7XG59XG5cbmxldCBwcm9qZWN0X2VxdWFsIGEgYiA9IGEucHJvamVjdF9pZCA9IGIucHJvamVjdF9pZFxuXG5sZXQgY2F0YWxvZ19lcXVhbCB4IHkgPVxuICB0cnkgTGlzdC5mb3JfYWxsMiBwcm9qZWN0X2VxdWFsIHggeSB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZVxuXG5sZXQgc3RhdGVfZXF1YWwgYSBiID1cbiAgT3B0aW9uX3V0aWwuZXF1YWwgcHJvamVjdF9lcXVhbCBhLnByb2plY3RfY3VycmVudCBiLnByb2plY3RfY3VycmVudFxuICAmJiBhLnByb2plY3RfdmVyc2lvbiA9IGIucHJvamVjdF92ZXJzaW9uXG4gICYmIGEuZGVmYXVsdF9wYXJhbWV0ZXJzID0gYi5kZWZhdWx0X3BhcmFtZXRlcnNcbiAgJiYgTW9kcy5TdHJpbmdNYXAuZXF1YWxcbiAgICAgICAoZnVuIHggeSAtPiBjb21wYXJlIHggeSA9IDApXG4gICAgICAgYS5wcm9qZWN0X3BhcmFtZXRlcnMgYi5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgJiYgY2F0YWxvZ19lcXVhbCBhLnByb2plY3RfY2F0YWxvZyBiLnByb2plY3RfY2F0YWxvZ1xuXG5sZXQgbW9kZWxfZXF1YWwgYSBiID1cbiAgT3B0aW9uX3V0aWwuZXF1YWxcbiAgICAoZnVuIHggeSAtPiBTdHJpbmcuY29tcGFyZSB4IHkgPSAwKVxuICAgIGEubW9kZWxfY3VycmVudF9pZCBiLm1vZGVsX2N1cnJlbnRfaWRcbiAgJiYgKHRyeVxuICAgICAgICBMaXN0LmZvcl9hbGwyXG4gICAgICAgICAgKGZ1biB4IHkgLT4geC5tb2RlbF9wcm9qZWN0X2lkID0geS5tb2RlbF9wcm9qZWN0X2lkKVxuICAgICAgICAgIGEubW9kZWxfY2F0YWxvZyBiLm1vZGVsX2NhdGFsb2dcbiAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlKVxuICAmJiBhLm1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IGIubW9kZWxfcHJvamVjdF92ZXJzaW9uXG4gICYmIGEubW9kZWxfcGFyYW1ldGVycyA9IGIubW9kZWxfcGFyYW1ldGVyc1xuXG5sZXQgaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnMgPVxuICB7XG4gICAgcGxvdF9wZXJpb2QgPSAxLjtcbiAgICBwYXVzZV9jb25kaXRpb24gPSBcIltmYWxzZV1cIjtcbiAgICBzZWVkID0gTm9uZTtcbiAgICBzdG9yZV90cmFjZSA9IGZhbHNlO1xuICAgIHNob3dfZGVhZF9ydWxlcyA9IHRydWU7XG4gICAgc2hvd19kZWFkX2FnZW50cyA9IHRydWU7XG4gICAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPSBmYWxzZTtcbiAgfVxuXG5sZXQgaW5pdF9zdGF0ZSA9XG4gIHtcbiAgICBwcm9qZWN0X2N1cnJlbnQgPSBOb25lO1xuICAgIHByb2plY3RfY2F0YWxvZyA9IFtdO1xuICAgIHByb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgIGRlZmF1bHRfcGFyYW1ldGVycyA9IGluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgIHByb2plY3RfcGFyYW1ldGVycyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICB9XG5cbmxldCBzdGF0ZSwgc2V0X3N0YXRlID0gUmVhY3QuUy5jcmVhdGUgfmVxOnN0YXRlX2VxdWFsIGluaXRfc3RhdGVcblxubGV0IHVwZGF0ZV9wYXJhbWV0ZXJzIGhhbmRsZXIgPVxuICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIGxldCBkZWZhdWx0X3BhcmFtZXRlcnMsIHByb2plY3RfcGFyYW1ldGVycyA9XG4gICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gaGFuZGxlciBzdC5kZWZhdWx0X3BhcmFtZXRlcnMsIHN0LnByb2plY3RfcGFyYW1ldGVyc1xuICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICAoIHN0LmRlZmF1bHRfcGFyYW1ldGVycyxcbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHByb2oucHJvamVjdF9pZFxuICAgICAgICAgIChoYW5kbGVyXG4gICAgICAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzKSlcbiAgICAgICAgICBzdC5wcm9qZWN0X3BhcmFtZXRlcnMgKVxuICBpblxuICBzZXRfc3RhdGVcbiAgICB7XG4gICAgICBwcm9qZWN0X2N1cnJlbnQgPSBzdC5wcm9qZWN0X2N1cnJlbnQ7XG4gICAgICBwcm9qZWN0X2NhdGFsb2cgPSBzdC5wcm9qZWN0X2NhdGFsb2c7XG4gICAgICBwcm9qZWN0X3ZlcnNpb24gPSBzdC5wcm9qZWN0X3ZlcnNpb247XG4gICAgICBkZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICBwcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgfVxuXG5sZXQgc2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCAoKSA9XG4gIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgbGV0IHBhID1cbiAgICBtYXRjaCBzdC5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdC5kZWZhdWx0X3BhcmFtZXRlcnNcbiAgICB8IFNvbWUgcHJvaiAtPlxuICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0LmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSnMuT3B0ZGVmLml0ZXIgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlIChmdW4gbHMgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBscyMjc2V0SXRlbSBwbG90UGVyaW9kUGFyYW1JZFxuICAgICAgICAgICAgKEpzLnN0cmluZyAoc3RyaW5nX29mX2Zsb2F0IHBhLnBsb3RfcGVyaW9kKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBscyMjc2V0SXRlbSBwYXVzZUNvbmRpdGlvblBhcmFtSWQgKEpzLnN0cmluZyBwYS5wYXVzZV9jb25kaXRpb24pXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcGEuc2VlZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxzIyNyZW1vdmVJdGVtIHNlZWRQYXJhbUlkXG4gICAgICAgICAgfCBTb21lIHZhIC0+IGxzIyNzZXRJdGVtIHNlZWRQYXJhbUlkIChKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgdmEpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnN0b3JlX3RyYWNlIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHN0b3JlVHJhY2VQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3JlbW92ZUl0ZW0gc3RvcmVUcmFjZVBhcmFtSWRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X2RlYWRfcnVsZXMgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRSdWxlc1BhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZFJ1bGVzUGFyYW1JZCAoSnMuc3RyaW5nIFwiZmFsc2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X2RlYWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkQWdlbnRzUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkQWdlbnRzUGFyYW1JZCAoSnMuc3RyaW5nIFwiZmFsc2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3JlbW92ZUl0ZW0gc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZFxuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgaW5cbiAgc2V0X3N0YXRlXG4gICAge1xuICAgICAgcHJvamVjdF9jdXJyZW50ID0gc3QucHJvamVjdF9jdXJyZW50O1xuICAgICAgcHJvamVjdF9jYXRhbG9nID0gc3QucHJvamVjdF9jYXRhbG9nO1xuICAgICAgcHJvamVjdF92ZXJzaW9uID0gc3QucHJvamVjdF92ZXJzaW9uO1xuICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzID0gc3QucHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzID0gcGE7XG4gICAgfVxuXG5sZXQgc2V0X3Bsb3RfcGVyaW9kIHBsb3RfcGVyaW9kID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggcGxvdF9wZXJpb2QgfSlcblxubGV0IHNldF9wYXVzZV9jb25kaXRpb24gcGF1c2VfY29uZGl0aW9uID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggcGF1c2VfY29uZGl0aW9uIH0pXG5cbmxldCBzZXRfc2VlZCBzZWVkID1cbiAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgIChKcy5zdHJpbmdcbiAgICAgICAoXCJbc3RhdGVfcHJvamVjdC5zZXRfc2VlZF0gc2V0IHNlZWQgdG8gXCJcbiAgICAgICBeIENvbW1vbi5zdHJpbmdfb2Zfb3B0aW9uIHN0cmluZ19vZl9pbnQgc2VlZCkpO1xuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzZWVkIH0pXG5cbmxldCBzZXRfc3RvcmVfdHJhY2Ugc3RvcmVfdHJhY2UgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzdG9yZV90cmFjZSB9KVxuXG5sZXQgc2V0X3Nob3dfZGVhZF9ydWxlcyBzaG93X2RlYWRfcnVsZXMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzaG93X2RlYWRfcnVsZXMgfSlcblxubGV0IHNldF9zaG93X2RlYWRfYWdlbnRzIHNob3dfZGVhZF9hZ2VudHMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzaG93X2RlYWRfYWdlbnRzIH0pXG5cbmxldCBzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT5cbiAgICAgIHsgcGFyYW0gd2l0aCBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyB9KVxuXG5sZXQgdXBkYXRlX3N0YXRlIHByb2plY3QgcHJvamVjdF9jYXRhbG9nIGRlZmF1bHRfcGFyYW1ldGVycyBwcm9qZWN0X3BhcmFtZXRlcnMgPVxuICBwcm9qZWN0LnByb2plY3RfbWFuYWdlciNwcm9qZWN0X3BhcnNlXG4gICAgfnBhdHRlcm5TaGFyaW5nOlBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJucyBbXVxuICA+Pj0gZnVuIChvdXQgOiB1bml0IEFwaS5yZXN1bHQpIC0+XG4gIHNldF9zdGF0ZVxuICAgIHtcbiAgICAgIHByb2plY3RfY3VycmVudCA9IFNvbWUgcHJvamVjdDtcbiAgICAgIHByb2plY3RfY2F0YWxvZztcbiAgICAgIGRlZmF1bHRfcGFyYW1ldGVycztcbiAgICAgIHByb2plY3RfcGFyYW1ldGVycztcbiAgICAgIHByb2plY3RfdmVyc2lvbiA9IDE7XG4gICAgfTtcbiAgTHd0LnJldHVybiBvdXRcblxubGV0IGNvbXB1dGluZ193YXRjaGVyIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIChzZXR0ZXIgOiBib29sIC0+IHVuaXQpID1cbiAgbGV0IGRlbGF5ID0gMS4gaW5cbiAgKCogTm90ZTogY2FuY2VsIGxvZ2ljIHNlZW1zIG5vdCB0byBiZSBpbXBsZW1lbnRlZD8gKilcbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIHNldHRlciBtYW5hZ2VyI2lzX2NvbXB1dGluZztcbiAgICBpZiAhY2FuY2VsbGVkIHRoZW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVsc2VcbiAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgZGVsYXkgPj49IGxvb3BcbiAgaW5cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gbG9vcDtcbiAgY2FuY2VsbGVkXG5cbmxldCBhZGRfcHJvamVjdCBpc19uZXcgcHJvamVjdF9pZCA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBsZXQgc3RhdGVfdmEgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICgqIFRPRE86IElzIGl0IG9rIHRvIGdldCB0aGUgdmFsdWUgbGlrZSB0aGlzID8gKilcbiAgbGV0IGNhdGFsb2cgPSBzdGF0ZV92YS5wcm9qZWN0X2NhdGFsb2cgaW5cbiAgKHRyeVxuICAgICBMd3QucmV0dXJuXG4gICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgKCBMaXN0LmZpbmQgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA9IHByb2plY3RfaWQpIGNhdGFsb2csXG4gICAgICAgICAgICBjYXRhbG9nLFxuICAgICAgICAgICAgc3RhdGVfdmEucHJvamVjdF9wYXJhbWV0ZXJzICkpXG4gICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICBTdGF0ZV9ydW50aW1lLmNyZWF0ZV9tYW5hZ2VyIH5pc19uZXcgcHJvamVjdF9pZFxuICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBwcm9qZWN0X21hbmFnZXIgLT5cbiAgICAgICAgICAgICBsZXQgcHJvamVjdF9pc19jb21wdXRpbmcsIHNldF9jb21wdXRlcyA9IFJlYWN0LlMuY3JlYXRlIHRydWUgaW5cbiAgICAgICAgICAgICBsZXQgcHJvamVjdF93YXRjaGVyX2NhbmNlbCA9XG4gICAgICAgICAgICAgICBjb21wdXRpbmdfd2F0Y2hlciBwcm9qZWN0X21hbmFnZXIgKHNldF9jb21wdXRlcyA/c3RlcDpOb25lKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHByb2plY3QgOiBhX3Byb2plY3QgPVxuICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X2lkO1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X21hbmFnZXI7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X3dhdGNoZXJfY2FuY2VsO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGRlZmF1bHRfcGFyYW1ldGVycyA9IHN0YXRlX3ZhLmRlZmF1bHRfcGFyYW1ldGVycyBpblxuICAgICAgICAgICAgIGxldCBwYXJhbXMgPVxuICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHByb2plY3RfaWQgZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgIHN0YXRlX3ZhLnByb2plY3RfcGFyYW1ldGVyc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHByb2plY3QsIHByb2plY3QgOjogY2F0YWxvZywgcGFyYW1zKSkpKVxuICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAocHJvamVjdCwgY2F0YWxvZywgcGFyYW1zKSAtPlxuICAgICAgICAgIHVwZGF0ZV9zdGF0ZSBwcm9qZWN0IGNhdGFsb2cgc3RhdGVfdmEuZGVmYXVsdF9wYXJhbWV0ZXJzIHBhcmFtcylcblxubGV0IGNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPSBhZGRfcHJvamVjdCB0cnVlIHByb2plY3RfaWRcbmxldCBzZXRfcHJvamVjdCBwcm9qZWN0X2lkID0gYWRkX3Byb2plY3QgZmFsc2UgcHJvamVjdF9pZFxuXG5sZXQgZHVtbXlfbW9kZWwgPVxuICB7XG4gICAgbW9kZWxfY3VycmVudF9pZCA9IE5vbmU7XG4gICAgbW9kZWxfY2F0YWxvZyA9IFtdO1xuICAgIG1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgIG1vZGVsX3BhcmFtZXRlcnMgPSBpbml0X2RlZmF1bHRfcGFyYW1ldGVycztcbiAgfVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcCB+ZXE6bW9kZWxfZXF1YWxcbiAgICAoZnVuIHN0YXRlIC0+XG4gICAgICBsZXQgbW9kZWxfY2F0YWxvZyA9XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBwIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaWQgPSBwLnByb2plY3RfaWQ7XG4gICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nID0gcC5wcm9qZWN0X2lzX2NvbXB1dGluZztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgc3RhdGUucHJvamVjdF9jYXRhbG9nXG4gICAgICBpblxuICAgICAgbGV0IG1vZGVsX3BhcmFtZXRlcnMgPVxuICAgICAgICBtYXRjaCBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3RhdGUuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0YXRlLmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAgIHN0YXRlLnByb2plY3RfcGFyYW1ldGVyc1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgbW9kZWxfY3VycmVudF9pZCA9XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4geCAtPiB4LnByb2plY3RfaWQpIHN0YXRlLnByb2plY3RfY3VycmVudDtcbiAgICAgICAgbW9kZWxfY2F0YWxvZztcbiAgICAgICAgbW9kZWxfcHJvamVjdF92ZXJzaW9uID0gc3RhdGUucHJvamVjdF92ZXJzaW9uO1xuICAgICAgICBtb2RlbF9wYXJhbWV0ZXJzO1xuICAgICAgfSlcbiAgICBzdGF0ZVxuXG5sZXQgc3luYyAoKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgY3VycmVudCAtPlxuICAgIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyI3Byb2plY3RfcGFyc2VcbiAgICAgIH5wYXR0ZXJuU2hhcmluZzpQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnMgW11cbiAgICA+Pj0gZnVuIG91dCAtPlxuICAgIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBzZXRfc3RhdGUgeyBzdCB3aXRoIHByb2plY3RfdmVyc2lvbiA9IHN1Y2Mgc3QucHJvamVjdF92ZXJzaW9uIH0gaW5cbiAgICBMd3QucmV0dXJuIG91dFxuXG5sZXQgcmVtb3ZlX2ZpbGVzIG1hbmFnZXIgPVxuICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgTHd0X2xpc3QuaXRlcl9wXG4gICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBtLktmaWxlcy5pZCA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgID4+PSBmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgcmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgdHJ5XG4gICAgbGV0IGN1cnJlbnQgPVxuICAgICAgTGlzdC5maW5kIChmdW4geCAtPiB4LnByb2plY3RfaWQgPSBwcm9qZWN0X2lkKSBzdGF0ZS5wcm9qZWN0X2NhdGFsb2dcbiAgICBpblxuICAgIHJlbW92ZV9maWxlcyBjdXJyZW50LnByb2plY3RfbWFuYWdlciA+Pj0gZnVuIG91dCcgLT5cbiAgICBsZXQgKCkgPSBjdXJyZW50LnByb2plY3Rfd2F0Y2hlcl9jYW5jZWwgOj0gdHJ1ZSBpblxuICAgIGxldCBwcm9qZWN0X2NhdGFsb2cgPVxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA8PiBjdXJyZW50LnByb2plY3RfaWQpXG4gICAgICAgIHN0YXRlLnByb2plY3RfY2F0YWxvZ1xuICAgIGluXG4gICAgbGV0IHByb2plY3RfY3VycmVudCA9XG4gICAgICBpZlxuICAgICAgICBtYXRjaCBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHYgLT4gdi5wcm9qZWN0X2lkID0gY3VycmVudC5wcm9qZWN0X2lkXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcHJvamVjdF9jYXRhbG9nIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgaCA6OiBfIC0+IFNvbWUgaFxuICAgICAgKSBlbHNlXG4gICAgICAgIHN0YXRlLnByb2plY3RfY3VycmVudFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNldF9zdGF0ZVxuICAgICAgICB7XG4gICAgICAgICAgcHJvamVjdF9jdXJyZW50O1xuICAgICAgICAgIHByb2plY3RfY2F0YWxvZztcbiAgICAgICAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBzdGF0ZS5kZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLnJlbW92ZSBwcm9qZWN0X2lkIHN0YXRlLnByb2plY3RfcGFyYW1ldGVycztcbiAgICAgICAgICBwcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gY3VycmVudC5wcm9qZWN0X21hbmFnZXIjdGVybWluYXRlIGluXG4gICAgc3luYyAoKSA+Pj0gZnVuIG91dCcnIC0+XG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIG91dCc7IG91dCcnIF0pXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgTHd0LnJldHVyblxuICAgICAgKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmdcbiAgICAgICAgIChcIlByb2plY3QgXCIgXiBwcm9qZWN0X2lkIF4gXCIgZG9lcyBub3QgZXhpc3RzXCIpKVxuXG5sZXQgcmVjIGluaXRfcGxvdF9wZXJpb2QgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiB0IC0+XG4gICAgKHRyeSBzZXRfcGxvdF9wZXJpb2QgKGZsb2F0X29mX3N0cmluZyBoKVxuICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCJbU3RhdGVfcHJvamVjdC5pbml0X3Bsb3RfcGVyaW9kXSBmYWlsZWQgdG8gcGFyc2UgaW5pdF9wbG90X3BlcmlvZCBcXFxuICAgICAgICAgICAgJyVzJ1wiXG4gICAgICAgICAgIGhcbiAgICAgICBpblxuICAgICAgIGxldCAoKSA9IENvbW1vbi5lcnJvciB+bG9jOl9fTE9DX18gKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgaW5pdF9wbG90X3BlcmlvZCB0KVxuXG5sZXQgaW5pdF9wYXVzZV9jb25kaXRpb24gKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9wYXVzZV9jb25kaXRpb24gaFxuXG5sZXQgcmVjIGluaXRfbW9kZWxfc2VlZCAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IHQgLT5cbiAgICAodHJ5IHNldF9wbG90X3BlcmlvZCAoZmxvYXRfb2Zfc3RyaW5nIGgpXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgbGV0IG1zZyA9XG4gICAgICAgICBGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIltTdGF0ZV9wcm9qZWN0LmluaXRfbW9kZWxfc2VlZF0gZmFpbGVkIHRvIHBhcnNlIG1vZGVsX3NlZWQgJyVzJ1wiIGhcbiAgICAgICBpblxuICAgICAgIGxldCAoKSA9IENvbW1vbi5lcnJvciB+bG9jOl9fTE9DX18gKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgaW5pdF9tb2RlbF9zZWVkIHQpXG5cbmxldCBpbml0X3N0b3JlX3RyYWNlIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc3RvcmVfdHJhY2UgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X2RlYWRfcnVsZXMgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zaG93X2RlYWRfcnVsZXMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X2RlYWRfYWdlbnRzIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19kZWFkX2FnZW50cyAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdCBleGlzdGluZ19wcm9qZWN0cyA6IHVuaXQgTHd0LnQgPVxuICBsZXQgYXJnX3Bsb3RfcGVyaW9kID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gcGxvdFBlcmlvZFBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJwbG90X3BlcmlvZFwiXG4gIGluXG4gIGxldCBhcmdfcGF1c2VfY29uZGl0aW9uID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gcGF1c2VDb25kaXRpb25QYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwicGF1c2VfY29uZGl0aW9uXCJcbiAgaW5cbiAgbGV0IGFyZ19tb2RlbF9zZWVkID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2VlZFBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJtb2RlbF9zZWVkXCJcbiAgaW5cbiAgbGV0IGFyZ19zdG9yZV90cmFjZSA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHN0b3JlVHJhY2VQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic3RvcmVfdHJhY2VcIlxuICBpblxuICBsZXQgYXJnX3Nob3dfZGVhZF9ydWxlcyA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19kZWFkX3J1bGVzXCJcbiAgaW5cbiAgbGV0IGFyZ19zaG93X2RlYWRfYWdlbnRzID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2hvd0RlYWRBZ2VudHNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19kZWFkX2FnZW50c1wiXG4gIGluXG4gIGxldCBhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcIlxuICBpblxuICBsZXQgKCkgPSBpbml0X3Bsb3RfcGVyaW9kIGFyZ19wbG90X3BlcmlvZCBpblxuICBsZXQgKCkgPSBpbml0X3BhdXNlX2NvbmRpdGlvbiBhcmdfcGF1c2VfY29uZGl0aW9uIGluXG4gIGxldCAoKSA9IGluaXRfbW9kZWxfc2VlZCBhcmdfbW9kZWxfc2VlZCBpblxuICBsZXQgKCkgPSBpbml0X3N0b3JlX3RyYWNlIGFyZ19zdG9yZV90cmFjZSBpblxuICBsZXQgKCkgPSBpbml0X3Nob3dfZGVhZF9ydWxlcyBhcmdfc2hvd19kZWFkX3J1bGVzIGluXG4gIGxldCAoKSA9IGluaXRfc2hvd19kZWFkX2FnZW50cyBhcmdfc2hvd19kZWFkX2FnZW50cyBpblxuICBsZXQgKCkgPVxuICAgIGluaXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgIGFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICBpblxuXG4gIGxldCBwcm9qZWN0cyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdDpbIFwiZGVmYXVsdFwiIF0gXCJwcm9qZWN0XCIgaW5cbiAgbGV0IHJlYyBhZGRfcHJvamVjdHMgcHJvamVjdHMgOiB1bml0IEx3dC50ID1cbiAgICBtYXRjaCBwcm9qZWN0cyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgQ29tbW9uLmxvZ19ncm91cF9lbmQgKCk7XG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICB8IHByb2plY3QgOjogcHJvamVjdHMgLT5cbiAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX18gKFwiYWRkIHByb2plY3QgYFwiIF4gcHJvamVjdCBeIFwiYFwiKSBpblxuICAgICAgYWRkX3Byb2plY3RcbiAgICAgICAgKExpc3QuZm9yX2FsbCAoZnVuIHggLT4geCA8PiBwcm9qZWN0KSBleGlzdGluZ19wcm9qZWN0cylcbiAgICAgICAgcHJvamVjdFxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuICgpIC0+IGFkZF9wcm9qZWN0cyBwcm9qZWN0cylcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJjcmVhdGluZyBwcm9qZWN0ICVzIGVycm9yIEBbJWFAXVwiIHByb2plY3RcbiAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uZXJyb3IgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIltTdGF0ZV9wcm9qZWN0LmluaXRdIDIgOiAlc1wiIG1zZykpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF9wcm9qZWN0cyBwcm9qZWN0cylcbiAgaW5cbiAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cCBcIltTdGF0ZV9wcm9qZWN0LmluaXRdIGFkZCBwcm9qZWN0c1wiIGluXG4gIGFkZF9wcm9qZWN0cyBleGlzdGluZ19wcm9qZWN0cyA+Pj0gZnVuICgpIC0+IGFkZF9wcm9qZWN0cyBwcm9qZWN0c1xuXG5sZXQgZXZhbF93aXRoX3Byb2plY3QgOlxuICAgICAgJ2EuXG4gICAgICBsYWJlbDpzdHJpbmcgLT5cbiAgICAgIChBcGkuY29uY3JldGVfbWFuYWdlciAtPiAnYSBBcGkubHd0X3Jlc3VsdCkgLT5cbiAgICAgICdhIEFwaS5sd3RfcmVzdWx0ID1cbiBmdW4gfmxhYmVsIGhhbmRsZXIgLT5cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnByb2plY3RfY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgJXMgZHVlIHRvIHVuYXZhaWxhYmxlIHByb2plY3QuXCIgbGFiZWxcbiAgICBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKVxuICB8IFNvbWUgY3VycmVudCAtPiBoYW5kbGVyIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyXG5cbmxldCBvbl9wcm9qZWN0X2NoYW5nZV9hc3luYyA/ZXEgfm9uID8ob3RoZXJzX2VxID0gKCA9ICkpIGluaXRfb3RoZXJzIG90aGVyc1xuICAgIGRlZmF1bHQgaGFuZGxlciA9XG4gIGxldCBlcV9wYWlyID0gTW9kcy5wYWlyX2VxdWFsIHN0YXRlX2VxdWFsIG90aGVyc19lcSBpblxuICBSZWFjdC5TLmhvbGQgP2VxIGRlZmF1bHRcbiAgICAoTHd0X3JlYWN0LkUubWFwX3BcbiAgICAgICAoZnVuIChzdCwgb3RoKSAtPlxuICAgICAgICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMd3QucmV0dXJuIGRlZmF1bHRcbiAgICAgICAgIHwgU29tZSBjdXJyZW50IC0+IGhhbmRsZXIgY3VycmVudC5wcm9qZWN0X21hbmFnZXIgb3RoKVxuICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAoUmVhY3QuUy5vbiB+ZXE6ZXFfcGFpciBvbiAoaW5pdF9zdGF0ZSwgaW5pdF9vdGhlcnMpXG4gICAgICAgICAgICAgKFJlYWN0LlMuUGFpci5wYWlyIH5lcTplcV9wYWlyIHN0YXRlIG90aGVycykpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgc2xvdCA9IHsgbG9jYWw6IHN0cmluZyBvcHRpb247IG5hbWU6IHN0cmluZyB9XG50eXBlIGFjdGl2ZSA9IHsgcmFuazogaW50OyBjdXJzb3JfcG9zOiBMb2MucG9zaXRpb247IG91dF9vZl9zeW5jOiBib29sIH1cbnR5cGUgbW9kZWwgPSB7IGN1cnJlbnQ6IGFjdGl2ZSBvcHRpb247IGRpcmVjdG9yeTogc2xvdCBNb2RzLkludE1hcC50IH1cblxubGV0IGR1bW15X2N1cnNvcl9wb3MgPSB7IExvYy5saW5lID0gLTE7IExvYy5jaHIgPSAwIH1cbmxldCBibGFua19zdGF0ZSA9IHsgY3VycmVudCA9IE5vbmU7IGRpcmVjdG9yeSA9IE1vZHMuSW50TWFwLmVtcHR5IH1cbmxldCBtb2RlbF9ob29rZWQsIHNldF9kaXJlY3Rvcnlfc3RhdGUgPSBIb29rZWQuUy5jcmVhdGUgYmxhbmtfc3RhdGVcbmxldCBtb2RlbCA9IEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBtb2RlbF9ob29rZWRcblxudHlwZSByZWZyZXNoID0geyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IGxpbmU6IGludCBvcHRpb24gfVxuXG5sZXQgcmVmcmVzaF9maWxlX2hvb2ssIHJlZnJlc2hfZmlsZV9ob29rX3NlbmQgPVxuICBIb29rZWQuRS5jcmVhdGUgfmRlYnVnOlwicmVmcmVzaF9maWxlX2hvb2tcIiAoKVxuXG5sZXQgY3VycmVudF9maWxlbmFtZSA9XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBtIC0+XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgKGZ1biB7IG5hbWU7IF8gfSAtPiBuYW1lKVxuICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgICAgIG0uY3VycmVudClcbiAgICBtb2RlbFxuXG5sZXQgYXBwbHlfb25fY3VycmVudF9wb3Nfb2ZfbW9kZWwgZiBtID1cbiAgT3B0aW9uX3V0aWwuYmluZFxuICAgIChmdW4geCAtPlxuICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgIChmdW4geyBuYW1lOyBfIH0gLT4gZiBuYW1lIHguY3Vyc29yX3BvcylcbiAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgbS5jdXJyZW50XG5cbmxldCB3aXRoX2N1cnJlbnRfcG9zID9lcSA/KG9uID0gSG9va2VkLlMuY29uc3QgdHJ1ZSkgZiBkZWZhdWx0ID1cbiAgSG9va2VkLlMuZm1hcCA/ZXFcbiAgICAoYXBwbHlfb25fY3VycmVudF9wb3Nfb2ZfbW9kZWwgZilcbiAgICBkZWZhdWx0XG4gICAgKEhvb2tlZC5TLm9uIG9uIGJsYW5rX3N0YXRlIG1vZGVsX2hvb2tlZClcblxubGV0IHdpdGhfY3VycmVudF9maWxlIGYgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHN0YXRlLmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID0gXCJBdHRlbXB0IHRvIGZldGNoIGZpbGUgd2l0aCBub25lIHNlbGVjdGVkLlwiIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gIHwgU29tZSBhY3RpdmUgLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYWN0aXZlLnJhbmsgc3RhdGUuZGlyZWN0b3J5IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkludGVybmFsIGluY29uc2lzdGVudGN5OiBObyBmaWxlIGF0IHNlbGVjdGVkIHJhbmsuXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZylcbiAgICB8IFNvbWUgeCAtPiBmIHN0YXRlIGFjdGl2ZSB4KVxuXG5sZXQgZ2V0X2ZpbGUgKCkgOiAoc3RyaW5nICogc3RyaW5nKSBBcGkubHd0X3Jlc3VsdCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gX3N0YXRlIGFjdGl2ZSAtPiBmdW5jdGlvblxuICAgIHwgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSAtPlxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJnZXRfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9nZXQgbmFtZVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuICh0ZXh0LCByYW5rJykgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGFjdGl2ZS5yYW5rID0gcmFuaycgdGhlblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAodGV4dCwgbmFtZSkpXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yX21zZyA9IFwiSW5jb25zaXN0ZW5jeSBpbiByYW5rIHdoaWxlIGdldF9maWxlLlwiIGluXG4gICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKVxuICAgICAgICAgICAgICAgICAgKSkpXG4gICAgfCB7IGxvY2FsID0gU29tZSB0ZXh0OyBuYW1lIH0gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHRleHQsIG5hbWUpKSlcblxubGV0IHNlbmRfcmVmcmVzaCAobGluZSA6IGludCBvcHRpb24pIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICgqIG9ubHkgc2VuZCByZWZyZXNoIGlmIHRoZXJlIGlzIGEgY3VycmVudCBmaWxlICopXG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIG1vZGVsKS5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgeyBvdXRfb2Zfc3luYzsgXyB9IC0+XG4gICAgaWYgb3V0X29mX3N5bmMgdGhlblxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZ1xuICAgICAgICAgICBcIkZpbGUgd2FzIG5vdCBpbiBzeW5jLiBTd2l0Y2hpbmcgbWF5IGxlYWQgdG8gZGF0YSBsb3N0LlwiKVxuICAgIGVsc2VcbiAgICAgIGdldF9maWxlICgpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoY29udGVudCwgZmlsZW5hbWUpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJSZWZyZXNoIGZpbGVcIiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcmVmcmVzaF9maWxlX2hvb2tfc2VuZCB7IGZpbGVuYW1lOyBjb250ZW50OyBsaW5lIH0gaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQgY3VycmVudCBjYXRhbG9nID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBsZXQgZGlyZWN0b3J5ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeyBLZmlsZXMucG9zaXRpb247IGlkIH0gLT5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHBvc2l0aW9uIHsgbmFtZSA9IGlkOyBsb2NhbCA9IE5vbmUgfSBhY2MpXG4gICAgICAoaWYgcmVzZXQgdGhlblxuICAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHlcbiAgICAgICBlbHNlXG4gICAgICAgICBzdGF0ZS5kaXJlY3RvcnkpXG4gICAgICBjYXRhbG9nXG4gIGluXG4gIHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50OyBkaXJlY3RvcnkgfVxuXG5sZXQgY3JlYXRlX2ZpbGUgfihmaWxlbmFtZSA6IHN0cmluZykgfihjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcImNyZWF0ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gY2F0YWxvZyAtPlxuICAgICAgICAgICAgICBsZXQgbWF0Y2hpbmdfZmlsZSA9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gZmlsZV9tZXRhZGF0YSAtPiBmaWxlbmFtZSA9IGZpbGVfbWV0YWRhdGEuS2ZpbGVzLmlkKVxuICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggbWF0Y2hpbmdfZmlsZSB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICBsZXQgbWF4X3BvcyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IC0+IG1heCBhY2MgcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2NyZWF0ZSAoc3VjYyBtYXhfcG9zKSBmaWxlbmFtZSBjb250ZW50XG4gICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBjYXRhbG9nJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rIChjYXRhbG9nJywgc3VjYyBtYXhfcG9zKSkpKVxuICAgICAgICAgICAgICB8IG1ldGFkYXRhIDo6IF8gLT5cbiAgICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfdXBkYXRlIGZpbGVuYW1lIGNvbnRlbnRcbiAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwub2sgKGNhdGFsb2csIG1ldGFkYXRhLktmaWxlcy5wb3NpdGlvbikpKSlcbiAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKGNhdGFsb2csIGN1cnJlbnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0OmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5rID0gY3VycmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luYyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBzZW5kX3JlZnJlc2ggTm9uZSkpKVxuXG5sZXQgcmVjIGNob29zZV9maWxlIGNob2ljZSA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgIEZvcm1hdC5zcHJpbnRmIFwiRmFpbGVkIHRvIHN3aXRjaCBmaWxlICVzLlwiIGNob2ljZVxuICAgIGluXG4gICAgQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2dcbiAgfCB7IEtmaWxlcy5pZDsgcG9zaXRpb24gfSA6OiB0IC0+XG4gICAgaWYgY2hvaWNlID0gaWQgdGhlblxuICAgICAgUmVzdWx0X3V0aWwub2sgcG9zaXRpb25cbiAgICBlbHNlXG4gICAgICBjaG9vc2VfZmlsZSBjaG9pY2UgdFxuXG5sZXQgc2VsZWN0X2ZpbGUgKGZpbGVuYW1lIDogc3RyaW5nKSAobGluZSA6IGludCBvcHRpb24pIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2VsZWN0X2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3RcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biByYW5rIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldDpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBzZW5kX3JlZnJlc2ggbGluZSlcbiAgICAgICAgICAgICAgICAoY2hvb3NlX2ZpbGUgZmlsZW5hbWUgY2F0YWxvZykpKVxuXG5sZXQgc2V0X2NvbnRlbnQgKGNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIC0+IGZ1bmN0aW9uXG4gICAgfCB7IGxvY2FsID0gU29tZSBfOyBuYW1lIH0gLT5cbiAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgYWN0aXZlLnJhbmtcbiAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJhbmsgPSBhY3RpdmUucmFuaztcbiAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBhY3RpdmUuY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IHN0YXRlLmRpcmVjdG9yeTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29udGVudFwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV91cGRhdGUgbmFtZSBjb250ZW50KSlcblxubGV0IHNldF9jb21waWxlIGZpbGVfaWQgKGNvbXBpbGUgOiBib29sKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gIHwgU29tZSAocmFuaywgeyBsb2NhbCA9IFNvbWUgY29udGVudDsgbmFtZSB9KSAtPlxuICAgIGlmIGNvbXBpbGUgdGhlbiAoXG4gICAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJhbmsgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb21waWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX2NyZWF0ZSByYW5rIG5hbWUgY29udGVudClcbiAgICApIGVsc2VcbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgKHJhbmssIHsgbG9jYWwgPSBOb25lOyBuYW1lIH0pIC0+XG4gICAgaWYgY29tcGlsZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICBlbHNlXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb21waWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX2dldCBuYW1lXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKGNvbnRlbnQsIHJhbmsnKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgcmFuayA9IHJhbmsnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgcmFua1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBsb2NhbCA9IFNvbWUgY29udGVudDsgbmFtZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2V0X2NvbXBpbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIG1hbmFnZXIgLT4gbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lKVxuICAgICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgICAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbmN5IGluIHJhbmsgd2hpbGUgc2V0X2NvbXBpbGUuXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gICAgICAgICAgICAgICAgICApKSlcblxubGV0IHJlbW92ZV9maWxlICgpIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIHsgbG9jYWw7IG5hbWUgfSAtPlxuICAgICAgbGV0IGRpcmVjdG9yeSA9IE1vZHMuSW50TWFwLnJlbW92ZSBhY3RpdmUucmFuayBzdGF0ZS5kaXJlY3RvcnkgaW5cbiAgICAgIGxldCBjdXJyZW50ID1cbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGZ1biAocmFuaywgXykgLT5cbiAgICAgICAgICAgIHsgcmFuazsgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7IG91dF9vZl9zeW5jID0gZmFsc2UgfSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAucm9vdCBkaXJlY3RvcnkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBsZXQgeCA9IHNlbmRfcmVmcmVzaCBOb25lIGluXG4gICAgICBtYXRjaCBsb2NhbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJyZW1vdmVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lID4+PSBmdW4geSAtPlxuICAgICAgICAgICAgeCA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHg7IHkgXSkpKVxuXG5sZXQgZG9fYV9tb3ZlIHN0YXRlIGZpbGVfaWQgcmFuayA9XG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG4gIHwgU29tZSAocmFuaycsICh7IGxvY2FsOyBfIH0gYXMgeCkpIC0+XG4gICAgbGV0IGRpcmVjdG9yeSA9XG4gICAgICBNb2RzLkludE1hcC5hZGQgcmFuayB4IChNb2RzLkludE1hcC5yZW1vdmUgcmFuaycgc3RhdGUuZGlyZWN0b3J5KVxuICAgIGluXG4gICAgbGV0IGN1cnJlbnQgPVxuICAgICAgbWF0Y2ggc3RhdGUuY3VycmVudCB3aXRoXG4gICAgICB8IFNvbWUgeyByYW5rID0gcG9zOyBjdXJzb3JfcG9zOyBvdXRfb2Zfc3luYyB9IHdoZW4gcG9zID0gcmFuaycgLT5cbiAgICAgICAgU29tZSB7IHJhbms7IGN1cnNvcl9wb3M7IG91dF9vZl9zeW5jIH1cbiAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBpZiBsb2NhbCA9IE5vbmUgdGhlblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJyZW1vdmVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9tb3ZlIHJhbmsgZmlsZV9pZFxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9KSkpXG4gICAgZWxzZVxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSlcblxubGV0IHJlYyBzZXRfcG9zaXRpb24gc3RhdGUgZmlsZV9pZCByYW5rID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gcmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICB8IFNvbWUgeyBuYW1lOyBfIH0gLT5cbiAgICBpZiBmaWxlX2lkID0gbmFtZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzdGF0ZSlcbiAgICBlbHNlXG4gICAgICBzZXRfcG9zaXRpb24gc3RhdGUgbmFtZSAoc3VjYyByYW5rKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gc3RhdGUnIC0+XG4gICAgICAgICAgICAgIGRvX2FfbW92ZSBzdGF0ZScgZmlsZV9pZCByYW5rKVxuICB8IE5vbmUgLT4gZG9fYV9tb3ZlIHN0YXRlIGZpbGVfaWQgcmFua1xuXG5sZXQgb3JkZXJfZmlsZXMgKGZpbGVuYW1lcyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBsZXQgcmVjIF9vcmRlcl9maWxlIGZpbGVuYW1lcyBzdGF0ZSBpbmRleCA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICAgIG1hdGNoIGZpbGVuYW1lcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSBzdGF0ZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgfCBmaWxlX2lkIDo6IHRhaWwgLT5cbiAgICAgIHNldF9wb3NpdGlvbiBzdGF0ZSBmaWxlX2lkIGluZGV4XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBzdGF0ZScgLT5cbiAgICAgICAgICAgICAgX29yZGVyX2ZpbGUgdGFpbCBzdGF0ZScgKGluZGV4ICsgMSkpXG4gIGluXG4gIF9vcmRlcl9maWxlIGZpbGVuYW1lcyAoUmVhY3QuUy52YWx1ZSBtb2RlbCkgMFxuXG5sZXQgY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaCA9XG4gIGxldCB2ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCB2LmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgcmFuazsgb3V0X29mX3N5bmM7IF8gfSAtPlxuICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgIHtcbiAgICAgICAgY3VycmVudCA9XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByYW5rO1xuICAgICAgICAgICAgICBjdXJzb3JfcG9zID0geyBMb2MubGluZSA9IHN1Y2MgbGluZTsgY2hyID0gY2ggfTtcbiAgICAgICAgICAgICAgb3V0X29mX3N5bmM7XG4gICAgICAgICAgICB9O1xuICAgICAgICBkaXJlY3RvcnkgPSB2LmRpcmVjdG9yeTtcbiAgICAgIH1cblxubGV0IG91dF9vZl9zeW5jIG91dF9vZl9zeW5jID1cbiAgbGV0IHYgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHYuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBfIH0gLT5cbiAgICBzZXRfZGlyZWN0b3J5X3N0YXRlXG4gICAgICB7XG4gICAgICAgIGN1cnJlbnQgPSBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfTtcbiAgICAgICAgZGlyZWN0b3J5ID0gdi5kaXJlY3Rvcnk7XG4gICAgICB9XG5cbmxldCBzeW5jID8ocmVzZXQgPSBmYWxzZSkgKCkgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZWxlY3RfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgbGV0IGNhbmQgPSAoUmVhY3QuUy52YWx1ZSBtb2RlbCkuY3VycmVudCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgcmVzZXRcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYW5kIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgIChmdW4geyBLZmlsZXMucG9zaXRpb247IF8gfSAtPiB4LnJhbmsgPSBwb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYXRhbG9nIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBjYW5kXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0IHBvcyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBOb25lKSlcblxubGV0IGxvYWRfZGVmYXVsdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWU6XCJtb2RlbC5rYVwiIH5jb250ZW50OlwiXCJcbiAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICBcIltTdGF0ZV9maWxlLmxvYWRfZGVmYXVsdF06IGNyZWF0aW5nIGRlZmF1bHQgZmlsZSBlcnJvckAgXFxcbiAgICAgICAgICAgICAgIEBbPHY+JWFAXVwiXG4gICAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICAgIGVycm9yc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmVycm9yIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBsb2FkX21vZGVscyAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgbW9kZWxzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwibW9kZWxcIiBpblxuICBsZXQgcmVjIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSA6IHVuaXQgTHd0LnQgPVxuICAgIG1hdGNoIG1vZGVscyB3aXRoXG4gICAgfCBbXSAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IG1vZGVsIDo6IG1vZGVscyAtPlxuICAgICAgKCogZmV0Y2ggbW9kZWwgKilcbiAgICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5nZXQgbW9kZWxcbiAgICAgID4+PSAoZnVuIGNvbnRlbnQgLT5cbiAgICAgICAgICAgIGlmIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPD4gMjAwIHRoZW5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiYmFkIHJlc3BvbnNlIGNvZGUgJWQgZmV0Y2hpbmcgdXJsICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlIG1vZGVsKSlcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFVybC51cmxfb2Zfc3RyaW5nIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LnVybFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcmV0cmlldmUgdXJsICVzXCIgbW9kZWwpKVxuICAgICAgICAgICAgICB8IFNvbWUgdSAtPlxuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBMaXN0X3V0aWwubGFzdFxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgVXJsLkh0dHAgaCB8IFVybC5IdHRwcyBoIC0+IGguVXJsLmh1X3BhdGhcbiAgICAgICAgICAgICAgICAgICAgfCBVcmwuRmlsZSBmIC0+IGYuVXJsLmZ1X3BhdGgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZWNvbnRlbnQgOiBzdHJpbmcgPVxuICAgICAgICAgICAgICAgICAgY29udGVudC5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29udGVudFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKGZpbGVuYW1lLCBmaWxlY29udGVudCkpXG4gICAgICAgICAgICApKVxuICAgICAgPj49ICgqIGFkZCBjb250ZW50ICopXG4gICAgICBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIChmaWxlbmFtZSwgY29udGVudCkgLT5cbiAgICAgICAgICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWUgfmNvbnRlbnRcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmlsZW5hbWUpKSlcbiAgICAgID4+PSAoKiBzZWxlY3QgbW9kZWwgaWYgbmVlZGVkICopXG4gICAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgICAgaWYgbG9hZF9maWxlIHRoZW5cbiAgICAgICAgICAgIHNlbGVjdF9maWxlIGZpbGVuYW1lIE5vbmVcbiAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IGFkZF9tb2RlbHMgbW9kZWxzIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcImNyZWF0aW5nIGxvYWRpbmcgdXJsICVzIGVycm9yQCBAWzx2PiVhQF1cIiBtb2RlbFxuICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDb21tb24uZXJyb3IgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiW1N0YXRlX2ZpbGUubG9hZF9tb2RlbF0gJXNcIiBtc2cpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICBpblxuICBtYXRjaCBtb2RlbHMgd2l0aFxuICB8IFtdIC0+IGxvYWRfZGVmYXVsdCAoKVxuICB8IF8gOjogXyAtPiBhZGRfbW9kZWxzIG1vZGVscyB0cnVlXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdCA+Pj0gbG9hZF9tb2RlbHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBmb250U2l6ZVBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwRm9udFNpemVcIlxubGV0IGRlZmF1bHRGb250U2l6ZSA9IDEuNFxubGV0IG1pbkZvbnRTaXplID0gMC4yXG5sZXQgbWF4Rm9udFNpemUgPSAzLlxubGV0IGN1cnJlbnRGb250U2l6ZSA9IHJlZiBkZWZhdWx0Rm9udFNpemVcblxubGV0IGluaXRGcm9tU3RvcmFnZSAoKSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgKGZ1biAoKSAtPiBjdXJyZW50Rm9udFNpemUgOj0gZGVmYXVsdEZvbnRTaXplKVxuICAgIChmdW4gc3QgLT5cbiAgICAgIGN1cnJlbnRGb250U2l6ZSA6PVxuICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgIChzdCMjZ2V0SXRlbSBmb250U2l6ZVBhcmFtSWQpXG4gICAgICAgICAgKGZ1biAoKSAtPiBkZWZhdWx0Rm9udFNpemUpXG4gICAgICAgICAgSnMucGFyc2VGbG9hdClcblxubGV0IHNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgPVxuICBsZXQgdicgPSBzdHJpbmdfb2ZfZmxvYXQgIWN1cnJlbnRGb250U2l6ZSBpblxuICBKcy5PcHRkZWYuaXRlciBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UgKGZ1biBzdCAtPlxuICAgICAgc3QjI3NldEl0ZW0gZm9udFNpemVQYXJhbUlkIChKcy5zdHJpbmcgdicpKVxuXG5sZXQgdXBkYXRlRm9udFNpemUgfmRlbHRhID1cbiAgbGV0ICgpID1cbiAgICBjdXJyZW50Rm9udFNpemUgOj1cbiAgICAgIG1heCBtaW5Gb250U2l6ZSAobWluICghY3VycmVudEZvbnRTaXplICsuIGRlbHRhKSBtYXhGb250U2l6ZSlcbiAgaW5cbiAgbGV0IHYnID0gc3RyaW5nX29mX2Zsb2F0ICFjdXJyZW50Rm9udFNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkjIy5zdHlsZSMjLmZvbnRTaXplIDo9IEpzLnN0cmluZyAodicgXiBcImVtXCIpXG4gIGluXG4gICgpXG5cbmxldCBhZ2VudF9jb2xvcmluZyA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgKCkgPSBpbml0RnJvbVN0b3JhZ2UgKCkgaW5cbiAgTHd0LnJldHVybl91bml0XG5cbmxldCBzeW5jICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogcHJpdmF0ZSBzaW11bGF0aW9uIHN0YXRlICopXG50eXBlIHNpbXVsYXRpb25fc3RhdGUgPVxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAoKiBzaW11bGF0aW9uIGlzIHVuYXZhaWxhYmxlICopXG4gIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAoKiBzaW11bGF0aW9uIGlzIGJsb2NrZWQgb24gYW4gb3BlcmF0aW9uICopXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBvZiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9cbigqIHRoZSBzaW11bGF0aW9uIGlzIHJlYWR5ICopXG5cbnR5cGUgdCA9IHsgc2ltdWxhdGlvbl9zdGF0ZTogc2ltdWxhdGlvbl9zdGF0ZSB9XG5cbmxldCBnZXRfc2ltdWxhdGlvbl9pbmZvIHNpbXVsYXRpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgbWF0Y2ggc2ltdWxhdGlvbi5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgLT4gTm9uZVxuICB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgLT4gTm9uZVxuICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IFNvbWUgc2ltdWxhdGlvbl9pbmZvXG5cbigqIHB1YmxpYyBzaW11bGF0aW9uIHN0YXR1cyAqKVxudHlwZSBzaW11bGF0aW9uX3N0YXR1cyA9IFNUT1BQRUQgfCBJTklUQUxJWklORyB8IFJVTk5JTkcgfCBQQVVTRURcblxubGV0IHNpbXVsYXRpb25fc3RhdHVzX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgU1RPUFBFRCAtPiBcIlN0b3BwZWRcIlxuICB8IElOSVRBTElaSU5HIC0+IFwiSW5pdGFsaXppbmdcIlxuICB8IFJVTk5JTkcgLT4gXCJSdW5uaW5nXCJcbiAgfCBQQVVTRUQgLT4gXCJQYXVzZWRcIlxuXG5sZXQgZHVtbXlfbW9kZWwgPSB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfVxuXG5sZXQgbW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbCA6IHNpbXVsYXRpb25fc3RhdHVzID1cbiAgbWF0Y2ggbW9kZWwuc2ltdWxhdGlvbl9zdGF0ZSB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IFNUT1BQRURcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IElOSVRBTElaSU5HXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gLT5cbiAgICBpZlxuICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgdGhlblxuICAgICAgUlVOTklOR1xuICAgIGVsc2VcbiAgICAgIFBBVVNFRFxuXG4oKiBwcml2YXRlIHN0YXRlICopXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIGR1bW15X21vZGVsXG5cbigqIHB1YmxpYyBtb2RlbCAqKVxubGV0IG1vZGVsID0gc3RhdGVcblxubGV0IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIChzaW11bGF0aW9uX3N0YXRlIDogc2ltdWxhdGlvbl9zdGF0ZSkgOiB1bml0ID1cbiAgbGV0ICgpID0gc2V0X3N0YXRlIHsgc2ltdWxhdGlvbl9zdGF0ZSB9IGluXG4gICgpXG5cbmxldCBldmFsX3dpdGhfc2ltX21hbmFnZXIgOlxuICAgICAgJ2EuXG4gICAgICBsYWJlbDpzdHJpbmcgLT5cbiAgICAgIChBcGkuY29uY3JldGVfbWFuYWdlciAtPiB0IC0+ICdhIEFwaS5sd3RfcmVzdWx0KSAtPlxuICAgICAgJ2EgQXBpLmx3dF9yZXN1bHQgPVxuIGZ1biB+bGFiZWwgaGFuZGxlciAtPlxuICBsZXQgcHJvamVjdF9oYW5kbGVyIG1hbmFnZXIgPSBoYW5kbGVyIG1hbmFnZXIgKFJlYWN0LlMudmFsdWUgc3RhdGUpIGluXG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsIHByb2plY3RfaGFuZGxlclxuXG5sZXQgZmFpbF9sd3QgZXJyb3JfbXNnID0gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpXG5cbmxldCBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfihsYWJlbCA6IHN0cmluZylcbiAgICA/KHN0b3BwZWQgOiBBcGkuY29uY3JldGVfbWFuYWdlciAtPiAnYSBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBmdW4gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gc3RvcHBlZFwiKVxuICAgID8oaW5pdGlhbGl6aW5nIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLmx3dF9yZXN1bHQgPVxuICAgICAgZnVuIF8gLT4gZmFpbF9sd3QgXCJTaW11bGF0aW9uIGluaXRhbGl6aW5nXCIpXG4gICAgPyhyZWFkeSA6XG4gICAgICAgIEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyAtPiAnYSBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICBmdW4gXyBfIC0+IGZhaWxfbHd0IFwiU2ltdWxhdGlvbiByZWFkeVwiKSAoKSA6ICdhIEFwaS5sd3RfcmVzdWx0ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyIH5sYWJlbCAoZnVuIG1hbmFnZXIgcyAtPlxuICAgICAgbWF0Y2ggcy5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgICAgIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IHN0b3BwZWQgbWFuYWdlclxuICAgICAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IGluaXRpYWxpemluZyBtYW5hZ2VyXG4gICAgICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IHJlYWR5IG1hbmFnZXIgc2ltdWxhdGlvbl9pbmZvKVxuXG5sZXQgZXZhbF93aGVuX3JlYWR5IH4obGFiZWwgOiBzdHJpbmcpXG4gICAgPyhoYW5kbGVyIDogdW5pdCBBcGkucmVzdWx0IC0+IHVuaXQgTHd0LnQgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4gICAgKG9wZXJhdGlvbiA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IHVuaXQgQXBpLmx3dF9yZXN1bHQpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWxcbiAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gOiB1bml0IEFwaS5sd3RfcmVzdWx0IC0+IG9wZXJhdGlvbiBtYW5hZ2VyKVxuICAgICAgICAoKVxuICAgICAgPj49IGhhbmRsZXIpXG5cbigqIHRvIHN5bmNoIHN0YXRlIG9mIGFwcGxpY2F0aW9uIHdpdGggcnVudGltZSAqKVxubGV0IHNsZWVwX3RpbWUgPSAxLjBcblxubGV0IHJlYyBzeW5jICgpID1cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnNpbXVsYXRpb25fc3RhdGUgd2l0aFxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgLT5cbiAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIF8gLT5cbiAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInN5bmNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgKCogZ2V0IGN1cnJlbnQgZGlyZWN0b3J5ICopXG4gICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIHNpbXVsYXRpb25faW5mbyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgc2xlZXBfdGltZSA+Pj0gc3luY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCByZWZyZXNoICgpID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzeW5jXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAoKiBnZXQgY3VycmVudCBkaXJlY3RvcnkgKilcbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc2V0X3N0YXRlXG4gICAgICAgICAgICAgICAgICB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbyB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHN5bmMgKCkpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc2V0X3N0YXRlIHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgY29udGludWVfc2ltdWxhdGlvbiAocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKSA6IHVuaXQgQXBpLmx3dF9yZXN1bHQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwiY29udGludWVfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gY29udGludWUgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBjb250aW51ZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NvbnRpbnVlIHBhdXNlX2NvbmRpdGlvblxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOnN5bmMpXG4gICAgKClcblxubGV0IHBhdXNlX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInBhdXNlX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gc3RvcHBlZFwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIChfIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3BhdXNlKVxuICAgICgpXG5cbmxldCBzdG9wX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5sd3RfcmVzdWx0ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInN0b3Bfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdG9wIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciAoXyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICAgICgpXG5cbmxldCBzdGFydF9zaW11bGF0aW9uIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6XG4gICAgdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJzdGFydF9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBvbl9lcnJvciBlcnJvcl9tc2dzIDogdW5pdCBBcGkubHd0X3Jlc3VsdCA9XG4gICAgICAgIHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRDtcbiAgICAgICAgKCogdHVybiB0aGUgbGlnaHRzIG9mZiAqKVxuICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGVsZXRlID4+PSBmdW4gXyAtPlxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyBlcnJvcl9tc2dzKVxuICAgICAgaW5cbiAgICAgIEx3dC5jYXRjaFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgKCogc2V0IHN0YXRlIHRvIGluaXRhbGl6ZSAqKVxuICAgICAgICAgIHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkc7XG4gICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3N0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm8pXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gc2ltdWxhdGlvbl9zdGF0dXMgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzaW11bGF0aW9uX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX3N0YXR1c1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIHNpbXVsYXRpb25fc3RhdGU7XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcl9tc2cgLT5cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRDtcbiAgICAgICAgICAgICAgICAgIG9uX2Vycm9yIGVycm9yX21zZylcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6c3luYylcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJSdW50aW1lIGVycm9yICVzXCIgZXJyb3IgaW5cbiAgICAgICAgICAgIG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbXNnIF1cbiAgICAgICAgICB8IFN5c19lcnJvciBtZXNzYWdlIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSBdXG4gICAgICAgICAgfCBfIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgXCJJbml0aWFsaXphdGlvbiBlcnJvclwiIF0pKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBfIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHJ1bm5pbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZXJyb3JfbXNnKSlcbiAgICAoKVxuXG5sZXQgaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKGNvZGUgOiBzdHJpbmcpIDogc3RyaW5nIEFwaS5sd3RfcmVzdWx0ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInBlcnR1cmJfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBydW5uaW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5lcnJfcmVzdWx0X29mX3N0cmluZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2ludGVydmVudGlvbiBjb2RlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgc3luYyAoKVxuICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIG91dCkpKSlcbiAgICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHN5bmMgKCkgOiB1bml0IEx3dC50ID1cbiAgU3RhdGVfcHJlZmVyZW5jZXMuc3luYyAoKSA+Pj0gU3RhdGVfcnVudGltZS5zeW5jID4+PSBTdGF0ZV9wcm9qZWN0LnN5bmNcbiAgPj49IGZ1biBfIC0+XG4gIFN0YXRlX2ZpbGUuc3luYyAoKSA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0XG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9XG4gIEx3dC5yZXR1cm5fdW5pdCA+Pj0gU3RhdGVfcHJlZmVyZW5jZXMuaW5pdCA+Pj0gU3RhdGVfcnVudGltZS5pbml0XG4gID4+PSBTdGF0ZV9wcm9qZWN0LmluaXQgPj49IFN0YXRlX2ZpbGUuaW5pdCA+Pj0gU3RhdGVfc2ltdWxhdGlvbi5pbml0ID4+PSBzeW5jXG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID0gQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPiBMd3QucmV0dXJuX3VuaXQgPj49IGluaXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbW9kZWxfaW50ZXJ2ZW50aW9uLCBzZXRfbW9kZWxfaW50ZXJ2ZW50aW9uID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSB0ID0ge1xuICBzdGF0ZV9lcnJvcl9lcnJvcnM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgX3N0YXRlX2Vycm9yX2xvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmxldCBzdGF0ZV9lcnJvciwgc3RhdGVfZXJyb3Jfc2V0ID0gSG9va2VkLlMuY3JlYXRlIH5kZWJ1ZzpcInN0YXRlX2Vycm9yXCIgW11cblxubGV0IGNsZWFyX2Vycm9ycyBsb2NhdGlvbiA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJDbGVhcl9lcnJvcnMgJXMgXCIgbG9jYXRpb24pKVxuICBpblxuICBzdGF0ZV9lcnJvcl9zZXQgfmRlYnVnOlwiW1N0YXRlX2Vycm9yLmNsZWFyX2Vycm9yc11cIiBbXVxuXG5sZXQgaGFzX2Vycm9ycyAoKSA9XG4gIG1hdGNoIEhvb2tlZC5TLnZhbHVlIHN0YXRlX2Vycm9yIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IF8gOjogXyAtPiB0cnVlXG5cbmxldCBhZGRfZXJyb3IgKGxvY2F0aW9uIDogc3RyaW5nKSAoZXJyb3JzIDogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSA9XG4gICgqIGxvZyBsb2NhdGlvbiBhbmQgZXJyb3JzIGlmIGRlYnVnZ2luZyBpcyBlbmFibGVkICopXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgXCJbU3RhdGVfZXJyb3IuYWRkX2Vycm9yXSB7IGxvY2F0aW9uIDogXFxcIiVzXFxcIiAsIGVycm9ycyA6IFtAWyVhQF1dIH1cIlxuICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICBlcnJvcnMpKVxuICBpblxuICBsZXQgY3VycmVudF9zdGF0ZV9lcnJvciA6IHQgbGlzdCA9IEhvb2tlZC5TLnZhbHVlIHN0YXRlX2Vycm9yIGluXG4gIGxldCBuZXdfc3RhdGVfZXJyb3IgOiB0IGxpc3QgPVxuICAgIHsgc3RhdGVfZXJyb3JfZXJyb3JzID0gZXJyb3JzOyBfc3RhdGVfZXJyb3JfbG9jYXRpb24gPSBsb2NhdGlvbiB9XG4gICAgOjogY3VycmVudF9zdGF0ZV9lcnJvclxuICBpblxuICBzdGF0ZV9lcnJvcl9zZXQgfmRlYnVnOlwiYWRkX2Vycm9yXCIgbmV3X3N0YXRlX2Vycm9yXG5cbmxldCBlcnJvcnMgPVxuICBIb29rZWQuUy5tYXAgfmRlYnVnOlwiZXJyb3JzXCJcbiAgICAoZnVuIHN0YXRlX2Vycm9yIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyB2YWx1ZSAtPiB2YWx1ZS5zdGF0ZV9lcnJvcl9lcnJvcnMgQCBhY2MpXG4gICAgICAgIFtdIHN0YXRlX2Vycm9yKVxuICAgIHN0YXRlX2Vycm9yXG5cbmxldCB3cmFwIDogJ2EuID9hcHBlbmQ6Ym9vbCAtPiBzdHJpbmcgLT4gJ2EgQXBpLmx3dF9yZXN1bHQgLT4gJ2EgQXBpLmx3dF9yZXN1bHRcbiAgICA9XG4gZnVuID8oYXBwZW5kID0gZmFsc2UpIGxvYyByIC0+XG4gIHJcbiAgPj49XG4gIGxldCAoKSA9IGlmIG5vdCBhcHBlbmQgdGhlbiBjbGVhcl9lcnJvcnMgbG9jIGluXG4gIFJlc3VsdF91dGlsLmZvbGRcbiAgICB+b2s6KGZ1biByIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHIpKVxuICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgbGV0ICgpID0gYWRkX2Vycm9yIGxvYyBlcnJvcnMgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2dzIGVycm9ycykpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0b2dnbGVfZWxlbWVudCAocHJvamVjdGlvbiA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24gLT4gYm9vbClcbiAgICAoY29udGVudCA6IFs8IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIF0gSHRtbC5lbHQgSHRtbC5saXN0X3dyYXApID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAoaWYgcHJvamVjdGlvbiAoU3RhdGVfc2ltdWxhdGlvbi5nZXRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsKVxuICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBbIFwic2hvd1wiIF1cbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgWyBcImhpZGRlblwiIF0pKSk7XG4gICAgICBdXG4gICAgY29udGVudFxuXG5sZXQgbGFiZWxfbmV3cyB0YWJfaXNfYWN0aXZlIGNvdW50ZXIgPVxuICBsZXQgbGFzdF92YWx1ZSA9XG4gICAgcmVmXG4gICAgICAobGV0IHNpbXVsYXRpb25faW5mbyA9XG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcbiAgICAgICBpblxuICAgICAgIGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvKVxuICBpblxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5sMlxuICAgICAgIChmdW4gdGFiX2FjdGl2ZSBtb2RlbCAtPlxuICAgICAgICAgaWYgdGFiX2FjdGl2ZSB0aGVuXG4gICAgICAgICAgIFtdXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdiA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICAgIGlmIHYgPD4gIWxhc3RfdmFsdWUgJiYgdiA+IDAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0ICgpID0gbGFzdF92YWx1ZSA6PSB2IGluXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImxhYmVsXCI7IFwibGFiZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmV3XCIgXTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgIFtdXG4gICAgICAgICApKVxuICAgICAgIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGJhZGdlIChjb3VudGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiAtPiBpbnQpID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgbGV0IGNvdW50ID0gY291bnRlciBzaW11bGF0aW9uX2luZm8gaW5cbiAgICAgICAgIGlmIGNvdW50ID4gMCB0aGVuXG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBIdG1sLnR4dCBcIiBcIjtcbiAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJiYWRnZVwiIF0gXVxuICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoc3RyaW5nX29mX2ludCBjb3VudCkgXTtcbiAgICAgICAgICAgXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbXSlcbiAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgbm9uZV9jaGVja2JveCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgd2Vha19jaGVja2JveCA9XG4gIEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7IEh0bWwuYV9jaGVja2VkICgpIF0gKClcblxubGV0IHN0cm9uZ19jaGVja2JveCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG5vbmVfYm94ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG5vbmVfY2hlY2tib3hcbmxldCB3ZWFrX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCB3ZWFrX2NoZWNrYm94XG5sZXQgc3Ryb25nX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBzdHJvbmdfY2hlY2tib3hcblxubGV0IGxhdW5jaF9idXR0b24gPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07IEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0IF1cbiAgICBbIEh0bWwudHh0IFwiTGF1bmNoXCIgXVxuXG5sZXQgc3RvcnlfbGlzdCwgbGlzdF9jb250cm9sID0gUmVhY3QuUy5jcmVhdGUgW11cblxubGV0IHN0b3J5X2xpc3RfaHRtbCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5tYXBcbiAgICAoZnVuIChpZCwgY20pIC0+XG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpbIEh0bWwuYV92YWx1ZSAoc3RyaW5nX29mX2ludCBpZCkgXVxuICAgICAgICAoSHRtbC50eHRcbiAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWkgKCVhKUBdXCIgaWRcbiAgICAgICAgICAgICAgS2FzdG9yX2NsaWVudC5wcmludF9jb21wcmVzc2lvbl9tb2RlcyBjbSkpKVxuICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc3RvcnlfbGlzdClcblxubGV0IHNlbGVjdF9zdG9yaWVzID0gVHl4bWxfanMuUi5IdG1sNS5zZWxlY3Qgc3RvcnlfbGlzdF9odG1sXG5sZXQgc2VsZWN0X3N0b3JpZXNfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBzZWxlY3Rfc3Rvcmllc1xuXG5sZXQlaHRtbCBzZXR1cF9mb3JtID1cbiAge3w8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWw+Q29tcHJlc3Npb24gbGV2ZWw8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgbm9uZV9jaGVja2JveCBdXG4gICAge3wgQ2F1c2FsPC9sYWJlbD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIHdlYWtfY2hlY2tib3ggXVxuICAgIHt8IFdlYWtseTwvbGFiZWw+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBzdHJvbmdfY2hlY2tib3ggXVxuICAgIHt8IFN0cm9uZ2x5PC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPnx9XG4gICAgWyBsYXVuY2hfYnV0dG9uIF1cbiAgICB7fDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsPlNlbGVjdGVkIHN0b3J5PC9sYWJlbD58fVxuICAgIFsgc2VsZWN0X3N0b3JpZXMgXVxuICAgIHt8XG4gICAgPC9kaXY+XG4gICAgPC9mb3JtPnx9XG5cbmxldCBzdG9yeV9sb2csIGxvZ19jb250cm9sID0gUmVhY3QuUy5jcmVhdGUgW11cbmxldCBjdXJyZW50X2luZm8sIHNldF9pbmZvID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuXG5sZXQgc3RvcnlfbG9nX2h0bWwgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QubWFwXG4gICAgKGZ1biBsaW5lIC0+IEh0bWwudHh0IChsaW5lIF4gXCJcXG5cIikpXG4gICAgKFJlYWN0aXZlRGF0YS5STGlzdC5yZXYgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBzdG9yeV9sb2cpKVxuXG5sZXQgbG9nX2RpdiA9XG4gIFR5eG1sX2pzLlIuSHRtbDUuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIiBdIF0gc3RvcnlfbG9nX2h0bWxcblxubGV0IGxvZ19wYW5lbCA9XG4gIFtcbiAgICBVaV9jb21tb24ubmF2dGFicyBcInN0b3J5bG9nbmF2dGFiXCJcbiAgICAgIFtcbiAgICAgICAgXCJzdG9yaWVzX2NvbXB1dGF0aW9uX2xvZ1wiLCBOb25lLCBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHk7XG4gICAgICAgIFwic3RvcnlfaW5mb19sb2dcIiwgTm9uZSwgUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5O1xuICAgICAgXTtcbiAgICBVaV9jb21tb24ubmF2Y29udGVudCBbIFwicGFuZWwtc2Nyb2xsXCIgXVxuICAgICAgW1xuICAgICAgICBcInN0b3JpZXNfY29tcHV0YXRpb25fbG9nXCIsIFtdLCBbIGxvZ19kaXYgXTtcbiAgICAgICAgXCJzdG9yeV9pbmZvX2xvZ1wiLCBbIFwicGFuZWwtcHJlXCIgXSwgWyBUeXhtbF9qcy5SLkh0bWw1LnR4dCBjdXJyZW50X2luZm8gXTtcbiAgICAgIF07XG4gIF1cblxubGV0IGdyYXBoX2Rpc3BsYXlfaWQgPSBcInN0b3J5X2dyYXBoX2Rpc3BsYXlcIlxubGV0IHN0b3J5X2dyYXBoID0gSnNfc3RvcnkuY3JlYXRlX3N0b3J5X3JlbmRlcmluZyBncmFwaF9kaXNwbGF5X2lkXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTVcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgIChzZXR1cF9mb3JtIDo6IGxvZ19wYW5lbCk7XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGdyYXBoX2Rpc3BsYXlfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtN1wiOyBcImZsZXgtY29udGVudFwiIF07XG4gICAgICAgIF1cbiAgICAgIFtdO1xuICBdXG5cbmxldCBsaWZ0X3Jlc3VsdCA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZVxuXG5sZXQgZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJDb25maWcgY29tcHJlc3Npb25cIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBjYXVzYWwgPSBKcy50b19ib29sIG5vbmVfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbGV0IHdlYWsgPSBKcy50b19ib29sIHdlYWtfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbGV0IHN0cm9uZyA9IEpzLnRvX2Jvb2wgc3Ryb25nX2JveCMjLmNoZWNrZWQgaW5cbiAgICAgIG1hbmFnZXIjY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICAgICAgPnw9IGxpZnRfcmVzdWx0KVxuXG5sZXQgdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsID1cbiAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgIGxldCBfID0gZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpIGluXG4gICAgICBKcy5fZmFsc2UpXG5cbmxldCBzZXRfYV9zdG9yeSA9XG4gIGxldCBwcmVkX2lkID0gcmVmIG1heF9pbnQgaW5cbiAgZnVuICgpIC0+XG4gICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHNlbGVjdF9zdG9yaWVzX2RvbSMjLnZhbHVlIGluXG4gICAgaWYgdmEgPSBcIlwiIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJlZF9pZCA6PSBtYXhfaW50IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGlkID0gaW50X29mX3N0cmluZyB2YSBpblxuICAgICAgaWYgIXByZWRfaWQgPD4gaWQgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHByZWRfaWQgOj0gaWQgaW5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJMYXVuY2ggc3Rvcmllc1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWFuYWdlciNzdG9yeV9saXN0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgU29tZSAoX2NtLCBkLCB2KSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHNldF9pbmZvXG4gICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFtpZHM6IEBbJWFAXUAgdD1AWyVhQF1AIGV2ZW50PUBbJWFAXUBdXCJcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCkpKVxuICAgICAgICAgICAgICAgICAgICAgZFxuICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWFcbiAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbG9hdCBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSkpKVxuICAgICAgICAgICAgICAgICAgICAgZFxuICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWFcbiAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50KSkpXG4gICAgICAgICAgICAgICAgICAgICBkKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHN0b3J5X2dyYXBoIyNzZXREYXRhXG4gICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChHcmFwaF9qc29uLnRvX2pzb24gdikpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgKVxuXG5sZXQgcmVjIGluc3BlY3Rfc3RvcmllcyAoKSA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiU3RvcmllcyBsaXN0XCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgc3RvcnlfbGlzdF9mcm9tX21hbmFnZXIgPVxuICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAoY20sIF8sIF8pIGFjYyAtPiAoaWQsIGNtKSA6OiBhY2MpXG4gICAgICAgICAgbWFuYWdlciNzdG9yeV9saXN0IFtdXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gbGlzdF9jb250cm9sIHN0b3J5X2xpc3RfZnJvbV9tYW5hZ2VyIGluXG4gICAgICBsZXQgbWFuYWdlcl9pc19jb21wdXRpbmcgPSBtYW5hZ2VyI2lzX2NvbXB1dGluZyBpblxuICAgICAgbGV0IGxvZ19saW5lcyA9XG4gICAgICAgIGlmIG1hbmFnZXJfaXNfY29tcHV0aW5nIHRoZW5cbiAgICAgICAgICBcIkNvbXB1dGluZyBzdG9yaWVz4oCmXCIgOjogbWFuYWdlciNzdG9yeV9sb2dcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIFRPRE86IGNoZWNrIGlmIHN0b3J5X2xvZyBiZWxvdyBzaG91bGQgYmUgbGl2ZSBhbmQgaXNuJ3Q/ICopXG4gICAgICAgICAgKHN0cmluZ19vZl9pbnQgKExpc3QubGVuZ3RoIHN0b3J5X2xpc3RfZnJvbV9tYW5hZ2VyKSBeIFwiIHN0b3JpZXNcIilcbiAgICAgICAgICA6OiBtYW5hZ2VyI3N0b3J5X2xvZ1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IGxvZ19jb250cm9sIGxvZ19saW5lcyBpblxuICAgICAgc2V0X2Ffc3RvcnkgKCkgPj49IGZ1biBfIC0+XG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBtYW5hZ2VyX2lzX2NvbXB1dGluZykpXG4gID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGlzX2NvbXB1dGluZyAtPlxuICAgICAgICAgIGlmIGlzX2NvbXB1dGluZyAmJiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlblxuICAgICAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCAxLiA+Pj0gaW5zcGVjdF9zdG9yaWVzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzdG9yaWVzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnN0b3JpZXNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIGxldCAoKSA9IHNldF90YWJfaXNfYWN0aXZlIHRydWUgaW5cbiAgICAgICAgbGV0IF8gPSBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgaW5cbiAgICAgICAgTHd0LmFzeW5jIGluc3BlY3Rfc3RvcmllcylcbiAgaW5cbiAgbGV0ICgpID0gbm9uZV9ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID0gd2Vha19ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID0gc3Ryb25nX2JveCMjLm9uY2hhbmdlIDo9IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCBpblxuICBsZXQgKCkgPVxuICAgIHNlbGVjdF9zdG9yaWVzX2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPSBzZXRfYV9zdG9yeSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gbGF1bmNoX2J1dHRvbikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiTGF1bmNoIHN0b3JpZXNcIlxuICAgICAgICAgICAgICAgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICAgICAgIGlmIG1hbmFnZXIjc3RvcnlfaXNfY29tcHV0aW5nIHRoZW5cbiAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9yYXdfdHJhY2VcbiAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNyYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA+fD0gbGlmdF9yZXN1bHQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSBMd3QuYXN5bmMgaW5zcGVjdF9zdG9yaWVzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZGlzcGxheV9pZCA9IFwiY29udGFjdC1tYXAtZGlzcGxheVwiXG5sZXQgZXhwb3J0X2lkID0gXCJjb250YWN0LWV4cG9ydFwiXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIHRydWVcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiB0cnVlXG5sZXQgYWNjdXJhY3ksIHNldF9hY2N1cmFjeSA9IFJlYWN0LlMuY3JlYXRlIChTb21lIFB1YmxpY19kYXRhLkxvdylcblxubGV0IGV4dHJhY3RfY29udGFjdF9tYXAgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvbnRhY3QgbWFwXCIsIGBBc3NvYyBbIChcImFjY3VyYWN5XCIsIGFjYyk7IChcIm1hcFwiLCBjb250YWN0KSBdKSBdXG4gICAgLT5cbiAgICBhY2MsIGNvbnRhY3RcbiAgfCBgQXNzb2MgWyAoXCJjb250YWN0IG1hcFwiLCBgQXNzb2MgWyAoXCJtYXBcIiwgY29udGFjdCk7IChcImFjY3VyYWN5XCIsIGFjYykgXSkgXVxuICAgIC0+XG4gICAgYWNjLCBjb250YWN0XG4gIHwgXyAtPiBmYWlsd2l0aCBcIldyb25nIHVnbHkgY29udGFjdF9tYXAgZXh0cmFjdG9yXCJcblxubGV0IGNvbnRhY3RfbWFwX2pzIDogSnNfY29udGFjdC5jb250YWN0X21hcCBKcy50ID1cbiAgSnNfY29udGFjdC5jcmVhdGVfY29udGFjdF9tYXAgZGlzcGxheV9pZCBTdGF0ZV9wcmVmZXJlbmNlcy5hZ2VudF9jb2xvcmluZ1xuXG5sZXQgY29udGFjdF9tYXBfdGV4dCA6IHN0cmluZyBSZWFjdC5zaWduYWwgPVxuICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlIE5vbmUgYWNjdXJhY3kgXCJudWxsXCJcbiAgICAoZnVuXG4gICAgICAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKVxuICAgICAgKGFjYyA6IFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsIG9wdGlvbilcbiAgICAtPlxuICAgICAgbWFuYWdlciNnZXRfY29udGFjdF9tYXAgYWNjXG4gICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gU3RhdGVfZXJyb3IuYWRkX2Vycm9yIFwidGFiX2NvbnRhY3RfbWFwXCIgbWggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdF9tYXBfanMjI2NsZWFyRGF0YSBpblxuICAgICAgICAgICAgICBcIm51bGxcIilcbiAgICAgICAgICAgIH5vazooZnVuIGNvbnRhY3RfanNvbiAtPlxuICAgICAgICAgICAgICBsZXQgXywgbWFwX2pzb24gPSBleHRyYWN0X2NvbnRhY3RfbWFwIGNvbnRhY3RfanNvbiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IFlvanNvbi5CYXNpYy50b19zdHJpbmcgbWFwX2pzb24gaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdF9tYXBfanMjI3NldERhdGEgKEpzLnN0cmluZyBkYXRhKSBpblxuICAgICAgICAgICAgICBkYXRhKSlcblxubGV0IGNvbmZpZ3VyYXRpb24gOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IGV4cG9ydF9pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfc3ZnIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9qc29uIH5zZXJpYWxpemVfanNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICBSZWFjdC5TLnZhbHVlIGNvbnRhY3RfbWFwX3RleHQpO1xuICAgICAgXTtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gIH1cblxubGV0IGFjY3VyYWN5X2Nob29zZXJfaWQgPSBcImNvbnRhY3RfbWFwLWFjY3VyYWN5XCJcblxubGV0IGFjY3VyYWN5X2Nob29zZXIgPVxuICBsZXQgb3B0aW9uX2dlbiB4ID1cbiAgICBIdG1sLm9wdGlvblxuICAgICAgfmE6XG4gICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgaWYgUmVhY3QuUy52YWx1ZSBhY2N1cmFjeSA9IFNvbWUgeCB0aGVuXG4gICAgICAgICAgICAgSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkgXSlcbiAgICAgIChIdG1sLnR4dCAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpKVxuICBpblxuICBIdG1sLnNlbGVjdFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgYWNjdXJhY3lfY2hvb3Nlcl9pZCBdXG4gICAgKExpc3QubWFwIG9wdGlvbl9nZW4gUHVibGljX2RhdGEuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBhY2N1cmFjeV9mb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWhvcml6b250YWxcIiBdO1xuICAgICAgICAgIEh0bWwuYV9pZCBcImNvbnRhY3RfbWFwX2FjY3VyYWN5X2Zvcm1cIjtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgYWNjdXJhY3lfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJBY2N1cmFjeVwiIF07XG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTEwXCIgXSBdIFsgYWNjdXJhY3lfY2hvb3NlciBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG4gIGluXG4gIFtcbiAgICBhY2N1cmFjeV9mb3JtO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9pZCBkaXNwbGF5X2lkOyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiIF0gXVxuICAgICAgWyBIdG1sLmVudGl0eSBcIm5ic3BcIiBdO1xuICAgIFdpZGdldF9leHBvcnQuY29udGVudCBjb25maWd1cmF0aW9uO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCBjb25maWd1cmF0aW9uIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYWNjdXJhY3lfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FjY3VyYWN5IChQdWJsaWNfZGF0YS5hY2N1cmFjeV9vZl9zdHJpbmcgdmEpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29udGFjdF9tYXBcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29udGFjdF9tYXBcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPVxuICBpZiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlbiBjb250YWN0X21hcF9qcyMjcmVkcmF3XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxuXG5sZXQgY3VycmVudF9zbmFwc2hvdCwgc2V0X2N1cnJlbnRfc25hcHNob3QgPVxuICBSZWFjdC5TLmNyZWF0ZSAoTm9uZSA6IChzdHJpbmcgKiBEYXRhLnNuYXBzaG90KSBvcHRpb24pXG5cbnR5cGUgZGlzcGxheV9mb3JtYXQgPSBLYXBwYSB8IEdyYXBoXG5cbmxldCBzdHJpbmdfdG9fZGlzcGxheV9mb3JtYXQgPSBmdW5jdGlvblxuICB8IFwiS2FwcGFcIiAtPiBTb21lIEthcHBhXG4gIHwgXCJHcmFwaFwiIC0+IFNvbWUgR3JhcGhcbiAgfCBfIC0+IE5vbmVcblxubGV0IGRpc3BsYXlfZm9ybWF0LCBzZXRfZGlzcGxheV9mb3JtYXQgPSBSZWFjdC5TLmNyZWF0ZSBLYXBwYVxuXG5sZXQgc25hcHNob3RfY291bnQgKHN0YXRlIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbikgOiBpbnQgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcblxubGV0IG5hdmxpICgpID0gVWlfdHJhY2tfc2ltX3N0YXR1cy5iYWRnZSAoZnVuIHN0YXRlIC0+IHNuYXBzaG90X2NvdW50IHN0YXRlKVxubGV0IHNlbGVjdF9pZCA9IFwic25hcHNob3Qtc2VsZWN0LWlkXCJcbmxldCBkaXNwbGF5X2lkID0gXCJzbmFwc2hvdC1tYXAtZGlzcGxheVwiXG5cbmxldCBjb25maWd1cmF0aW9uX3RlbXBsYXRlIGlkIGFkZGl0aW9uYWxfaGFuZGxlcnMgOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb25cbiAgICA9XG4gIGxldCBqc29uX2hhbmRsZXIgPVxuICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X2pzb24gfnNlcmlhbGl6ZV9qc29uOihmdW4gKCkgLT5cbiAgICAgICAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwibnVsbFwiXG4gICAgICAgIHwgU29tZSAoXywgcykgLT4gRGF0YS5zdHJpbmdfb2Zfc25hcHNob3QgcylcbiAgaW5cbiAgbGV0IGthcHBhX2hhbmRsZXIgPVxuICAgIHtcbiAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJrYVwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwia2FwcGFcIjtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgKGZ1biAoZmlsZW5hbWUgOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9rYXBwYSBzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZSk7XG4gICAgfVxuICBpblxuICBsZXQgZG90X2hhbmRsZXIgPVxuICAgIHtcbiAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJkb3RcIjtcbiAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImRvdFwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAoZnVuIChmaWxlbmFtZSA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSAoXywgcykgLT4gQXBpX2RhdGEuYXBpX3NuYXBzaG90X2RvdCBzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwidGV4dC92bmQuZ3JhcGh2aXpcIiB+ZmlsZW5hbWUpO1xuICAgIH1cbiAgaW5cbiAgbGV0IGRlZmF1bHRfaGFuZGxlcnMgPSBbIGpzb25faGFuZGxlcjsga2FwcGFfaGFuZGxlcjsgZG90X2hhbmRsZXIgXSBpblxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID0gZGVmYXVsdF9oYW5kbGVycyBAIGFkZGl0aW9uYWxfaGFuZGxlcnM7XG4gICAgV2lkZ2V0X2V4cG9ydC5zaG93ID1cbiAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5nZXRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgc25hcHNob3RfY291bnQgc2ltdWxhdGlvbl9pbmZvID4gMClcbiAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpO1xuICB9XG5cbigqIE9ubHkgYWxsb3cgdGhlIGV4cG9ydCBvZiBub24tZ3JhcGhpY2FsIGRhdGEuICopXG5sZXQgY29uZmlndXJhdGlvbl9rYXBwYSAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIGNvbmZpZ3VyYXRpb25fdGVtcGxhdGUgXCJzbmFwc2hvdF9rYXBwYVwiIFtdXG5cbigqIFRoZSBtYXBzIGFyZSByZW5kZXJlZCBzbyBhbGxvdyB0aGUgZXhwb3J0IG9mXG4gICBncmFwaGljYWwgZGF0YS4gKilcbmxldCBjb25maWd1cmF0aW9uX2dyYXBoICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBcInNuYXBzaG90X2dyYXBoXCJcbiAgICBbXG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgIF1cblxubGV0IGZvcm1hdF9zZWxlY3RfaWQgPSBcImZvcm1hdF9zZWxlY3RfaWRcIlxuXG5sZXQgcmVuZGVyX3NuYXBzaG90X2dyYXBoIChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpXG4gICAgKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkgOiB1bml0ID1cbiAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cCBcIlJlbmRlciBzbmFwc2hvdFwiIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyAoSnMuc3RyaW5nIChEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCBzbmFwc2hvdCkpXG4gIGluXG4gIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG4gIG1hdGNoIFJlYWN0LlMudmFsdWUgZGlzcGxheV9mb3JtYXQgd2l0aFxuICB8IEdyYXBoIC0+XG4gICAgbGV0IGpzb24gOiBzdHJpbmcgPSBEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCBzbmFwc2hvdCBpblxuICAgIGxldCBjb250YWN0X21hcCA9IFJlYWN0LlMudmFsdWUgU3VidGFiX2NvbnRhY3RfbWFwLmNvbnRhY3RfbWFwX3RleHQgaW5cbiAgICBzbmFwc2hvdF9qcyMjc2V0RGF0YSB+Y29udGFjdF9tYXA6KEpzLnN0cmluZyBjb250YWN0X21hcCkgKEpzLnN0cmluZyBqc29uKVxuICB8IEthcHBhIC0+ICgpXG5cbmxldCBzZWxlY3Rfc25hcHNob3QgKHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudCkgOiB1bml0ID1cbiAgbGV0IGluZGV4IDogaW50IEpzLm9wdCA9XG4gICAgSnMuT3B0LmJpbmRcbiAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgc2VsZWN0X2lkKSlcbiAgICAgIChmdW4gZG9tIC0+XG4gICAgICAgIGxldCBzbmFwc2hvdF9zZWxlY3RfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZG9tXG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWxlaW5kZXggOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgc25hcHNob3Rfc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gICAgICAgIHRyeSBKcy5zb21lIChpbnRfb2Zfc3RyaW5nIGZpbGVpbmRleCkgd2l0aCBfIC0+IEpzLm51bGwpXG4gIGluXG4gIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJTZWxlY3Qgc25hcHNob3RcIiBpblxuICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGluZGV4IGluXG4gIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG4gIGxldCBtb2RlbCA6IFN0YXRlX3NpbXVsYXRpb24udCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICBsZXQgc2ltdWxhdGlvbl9vdXRwdXQgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgICBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWxcbiAgaW5cbiAgbWF0Y2ggc2ltdWxhdGlvbl9vdXRwdXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IGluZGV4IDogaW50ID0gSnMuT3B0LmdldCBpbmRleCAoZnVuIF8gLT4gMCkgaW5cbiAgICBpZiBzbmFwc2hvdF9jb3VudCAoU29tZSBzdGF0ZSkgPiAwIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gc25hcHNob3RfaWRzIC0+XG4gICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzbmFwc2hvdF9pZCA6IHN0cmluZyA9IExpc3QubnRoIHNuYXBzaG90X2lkcyBpbmRleCBpblxuICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3Qgc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfY3VycmVudF9zbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTb21lIChzbmFwc2hvdF9pZCwgc25hcHNob3QpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9zbmFwc2hvdF9ncmFwaCBzbmFwc2hvdF9qcyBzbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgZilcbiAgICAgICAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLmVycl9yZXN1bHRfb2Zfc3RyaW5nIGYpKSlcbiAgICAgIGluXG4gICAgICAoKVxuICAgIClcblxubGV0IHNlbGVjdCAoc25hcHNob3RzIDogQXBpX3R5cGVzX2ouc25hcHNob3RfaWQgbGlzdCkgOlxuICAgIFs+IEh0bWxfdHlwZXMuc2VsZWN0b3B0aW9uIF0gSHRtbC5lbHQgbGlzdCA9XG4gIExpc3QubWFwaVxuICAgIChmdW4gaSBzbmFwc2hvdF9pZCAtPlxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIChzdHJpbmdfb2ZfaW50IGkpIF1cbiAgICAgICAgICBAXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoZmlsZW5hbWUsIF8pIC0+IGZpbGVuYW1lID0gc25hcHNob3RfaWRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgW10pXG4gICAgICAgIChIdG1sLnR4dCBzbmFwc2hvdF9pZCkpXG4gICAgc25hcHNob3RzXG5cbmxldCBzbmFwc2hvdF9jbGFzcyA6XG4gICAgZW1wdHk6KHVuaXQgLT4gJ2EpIC0+XG4gICAgc2luZ2xlOih1bml0IC0+ICdhKSAtPlxuICAgIG11bHRpcGxlOih1bml0IC0+ICdhKSAtPlxuICAgICdhIFJlYWN0LnNpZ25hbCA9XG4gZnVuIH5lbXB0eSB+c2luZ2xlIH5tdWx0aXBsZSAtPlxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgIG1hdGNoIHNuYXBzaG90X2NvdW50IHNpbXVsYXRpb25faW5mbyB3aXRoXG4gICAgICB8IDAgLT4gZW1wdHkgKClcbiAgICAgIHwgMSAtPiBzaW5nbGUgKClcbiAgICAgIHwgXyAtPiBtdWx0aXBsZSAoKSlcbiAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG5sZXQgc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50ID1cbiAgSnNfc25hcHNob3QuY3JlYXRlX3NuYXBzaG90IGRpc3BsYXlfaWQgU3RhdGVfcHJlZmVyZW5jZXMuYWdlbnRfY29sb3JpbmdcblxubGV0IHhtbCAoKSA9XG4gIGxldCBsaXN0ID1cbiAgICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2VsZWN0X3NuYXBzaG90IHNuYXBzaG90X2pzIGluXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gc25hcHNob3RfaWRzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChzZWxlY3Qgc25hcHNob3RfaWRzKSkpKVxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgIH5vazooZnVuIHggLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCB4KVxuICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpXG4gIGluXG4gIGxldCBzbmFwc2hvdF9sYWJlbCA9XG4gICAgSHRtbC5oNFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHNuYXBzaG90X2NsYXNzXG4gICAgICAgICAgICAgICB+ZW1wdHk6KGZ1biAoKSAtPiBbIFwiaGlkZGVuXCIgXSlcbiAgICAgICAgICAgICAgIH5zaW5nbGU6KGZ1biBfIC0+IFsgXCJvbmVsaW5lclwiOyBcInZpc2libGVcIiBdKVxuICAgICAgICAgICAgICAgfm11bHRpcGxlOihmdW4gXyAtPiBbIFwiaGlkZGVuXCIgXSkpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAoZnVuIHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICAgfCBTb21lIChzbmFwc2hvdF9maWxlLCBfKSAtPiBzbmFwc2hvdF9maWxlKVxuICAgICAgICAgICAgIGN1cnJlbnRfc25hcHNob3QpO1xuICAgICAgXVxuICBpblxuICBsZXQgc25hcHNob3Rfc2VsZWN0ID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuc2VsZWN0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoc25hcHNob3RfY2xhc3NcbiAgICAgICAgICAgICAgIH5lbXB0eTooZnVuICgpIC0+IFsgXCJoaWRkZW5cIiBdKVxuICAgICAgICAgICAgICAgfnNpbmdsZTooZnVuIF8gLT4gWyBcImhpZGRlblwiIF0pXG4gICAgICAgICAgICAgICB+bXVsdGlwbGU6KGZ1biBfIC0+IFsgXCJ2aXNpYmxlXCI7IFwiZm9ybS1jb250cm9sXCIgXSkpO1xuICAgICAgICAgIEh0bWwuYV9pZCBzZWxlY3RfaWQ7XG4gICAgICAgIF1cbiAgICAgIGxpc3RcbiAgaW5cbiAgbGV0IHNuYXBzaG90X2Nob29zZXIgPSBIdG1sLmRpdiBbIHNuYXBzaG90X2xhYmVsOyBzbmFwc2hvdF9zZWxlY3QgXSBpblxuICBsZXQgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYSB+Z3JhcGggPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IEthcHBhIC0+IGthcHBhXG4gICAgICAgICAgIHwgR3JhcGggLT4gZ3JhcGgpXG4gICAgICAgICBkaXNwbGF5X2Zvcm1hdClcbiAgaW5cbiAgbGV0IGV4cG9ydF9jb250cm9scyA9XG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6WyB0b2dnbGVfY29udHJvbHMgfmthcHBhOlsgXCJ2aXNpYmxlXCIgXSB+Z3JhcGg6WyBcImhpZGRlblwiIF0gXVxuICAgICAgICBbIFdpZGdldF9leHBvcnQuY29udGVudCAoY29uZmlndXJhdGlvbl9rYXBwYSAoKSkgXTtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlsgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYTpbIFwiaGlkZGVuXCIgXSB+Z3JhcGg6WyBcInZpc2libGVcIiBdIF1cbiAgICAgICAgWyBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgKGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkpIF07XG4gICAgXVxuICBpblxuICBsZXQga2FwcGFfc25hcHNob3RfZGlzcGxheSA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBkaXNwbGF5X2Zvcm1hdCAtPlxuICAgICAgICAgICAgICAgICBcInBhbmVsLXNjcm9sbFwiIDo6IFwia2FwcGEtY29kZVwiIDo6IFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHNuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICB8IFNvbWUgKF8sIHNuYXBzaG90KSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3Rfa2FwcGEgc25hcHNob3QpXG4gICAgICAgICAgICAgY3VycmVudF9zbmFwc2hvdCk7XG4gICAgICBdXG4gIGluXG4gIGxldCBrYXBwYV9ncmFwaF9kaXNwbGF5ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIGRpc3BsYXlfZm9ybWF0IC0+XG4gICAgICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICA8Zm9ybSAgY2xhc3M9XCJmb3JtLWlubGluZVwiIGlkPVwic25hcC1mb3JtXCI+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5TWFzc1wiIGNoZWNrZWQ+IE1hc3M8L2xhYmVsPlxuICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJzdW1CeUNvdW50XCIgPiBDb3VudDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5U2l6ZVwiID4gU2l6ZTwvbGFiZWw+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyZWNlbnRlclNuYXBCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPlJlc2V0IFpvb208L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInJvb3RCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPkJhY2sgdG8gcm9vdDwvYnV0dG9uPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRlbnRcIiBpZD1cInx9XG4gICAgICAgICAgZGlzcGxheV9pZCB7fFwiPjwvZGl2Pnx9XVxuICBpblxuICBsZXQgZm9ybWF0X2Nob29zZXIgPVxuICAgIFslaHRtbFxuICAgICAge3wgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwifH0gZm9ybWF0X3NlbGVjdF9pZFxuICAgICAgICB7fFwiPjxvcHRpb24gdmFsdWU9XCJLYXBwYVwiIHNlbGVjdGVkPmthcHBhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkdyYXBoXCI+Z3JhcGg8L29wdGlvbj48L3NlbGVjdD4gfH1dXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlldyBmbGV4LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4gOiA1cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIGNvbC14cy00XCI+XG4gICAgICAgICB8fVxuICAgICAgWyBmb3JtYXRfY2hvb3NlciBdXG4gICAgICB7fFxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwIGNvbC14cy04XCI+IHx9XG4gICAgICBbIHNuYXBzaG90X2Nob29zZXIgXVxuICAgICAge3wgPC9kaXY+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfH1cbiAgICAgIFsga2FwcGFfc25hcHNob3RfZGlzcGxheTsga2FwcGFfZ3JhcGhfZGlzcGxheSBdXG4gICAgICB7fFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LWNvbnRyb2xzXCI+XG4gICAgICAgICAgfH1cbiAgICAgIGV4cG9ydF9jb250cm9sc1xuICAgICAge3xcbiAgICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIFVpX3RyYWNrX3NpbV9zdGF0dXMudG9nZ2xlX2VsZW1lbnRcbiAgICAgIChmdW4gc3RhdGUgLT4gc25hcHNob3RfY291bnQgc3RhdGUgPiAwKVxuICAgICAgKHhtbCAoKSk7XG4gIF1cblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgc25hcHNob3Rfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIHNlbGVjdF9pZFxuICBpblxuICBsZXQgZm9ybWF0X3NlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSBmb3JtYXRfc2VsZWN0X2lkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgc25hcHNob3Rfc2VsZWN0X2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIFwiVHJpZ2dlciBvZiBzbmFwc2hvdF9zZWxlY3RfZG9tXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2VsZWN0X3NuYXBzaG90IHNuYXBzaG90X2pzIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgdXBkYXRlX2Zvcm1hdCAoKSA9XG4gICAgbGV0IGZvcm1hdF90ZXh0IDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGZvcm1hdF9zZWxlY3RfZG9tIyMudmFsdWUgaW5cbiAgICBtYXRjaCBzdHJpbmdfdG9fZGlzcGxheV9mb3JtYXQgZm9ybWF0X3RleHQgd2l0aFxuICAgIHwgU29tZSBmb3JtYXQgLT5cbiAgICAgIGxldCAoKSA9IHNldF9kaXNwbGF5X2Zvcm1hdCBmb3JtYXQgaW5cbiAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKF8sIHNuYXBzaG90KSAtPlxuICAgICAgICByZW5kZXJfc25hcHNob3RfZ3JhcGhcbiAgICAgICAgICAoc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50KVxuICAgICAgICAgIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpKVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgKCogZ2V0IGluaXRpYWwgdmFsdWUgZm9yIGRpc3BsYXkgZm9ybWF0ICopXG4gIGxldCAoKSA9IHVwZGF0ZV9mb3JtYXQgKCkgaW5cbiAgKCogdXBkYXRlIHZhbHVlIGZvciBkaXNwbGF5IGZvcm1hdCAqKVxuICBsZXQgKCkgPVxuICAgIGZvcm1hdF9zZWxlY3RfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfZm9ybWF0ICgpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c25hcHNob3RcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c25hcHNob3RcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgICgpKVxuICBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbl9rYXBwYSAoKSkgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgKGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkpIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSBpZiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlbiBzbmFwc2hvdF9qcyMjcmVkcmF3XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgZGl2X2Rpc3BsYXlfaWQgPSBcInBsb3QtbWFpbl9kaXZcIlxubGV0IGV4cG9ydF9pZCA9IFwicGxvdC1leHBvcnRcIlxuXG50eXBlIG9mZnNldCA9IHsgb2Zmc2V0X2N1cnJlbnQ6IGludDsgb2Zmc2V0X21heDogaW50IH1cblxubGV0IG9mZnNldCwgc2V0X29mZnNldCA9IFJlYWN0LlMuY3JlYXRlIChOb25lIDogb2Zmc2V0IG9wdGlvbilcbmxldCBkZWZhdWx0X3BvaW50ID0gMTAwMFxubGV0IHBvaW50LCBzZXRfcG9pbnRzID0gUmVhY3QuUy5jcmVhdGUgZGVmYXVsdF9wb2ludFxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBwbG90X3JlZiA9IHJlZiBOb25lXG5cbmxldCBoYXNfcGxvdCAoc3RhdGUgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uKSA6IGJvb2wgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBzdGF0ZS5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0LkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcbiAgICA+IDBcblxubGV0IGV4cG9ydF9qc29uIGZpbGVuYW1lID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3RcbiAgICAgICAge1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID0gTm9uZTtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IE5vbmU7XG4gICAgICAgIH1cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIChwbG90IDogQXBpX3R5cGVzX3QucGxvdCkgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKERhdGEuc3RyaW5nX29mX3Bsb3QgcGxvdCkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBleHBvcnQgbWltZSBmaWxlbmFtZSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90XG4gICAgICAgIHtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9IE5vbmU7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBOb25lO1xuICAgICAgICB9XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBKcy5zdHJpbmcgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjoobWltZSA9IFwidGV4dC90c3ZcIikgcGxvdClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lIH5maWxlbmFtZSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgcGxvdF9wb2ludHNfaW5wdXRfaWQgPSBcInBsb3RfcG9pbnRzX2lucHV0XCJcblxubGV0IHBsb3RfcG9pbnRzX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9wb2ludHNfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgNTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgcGxvdF9vZmZzZXRfaW5wdXRfaWQgPSBcInBsb3Rfb2Zmc2V0X2lucHV0XCJcblxubGV0IHBsb3Rfb2Zmc2V0X2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgWyBcImhpZGVcIiBdXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBSZWFjdC5TLmNvbnN0IFtdKSk7XG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2lucHV0X21heFxuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgMClcbiAgICAgICAgICAgIHwgU29tZSBtYXhfb2Zmc2V0IC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgbWF4X29mZnNldC5vZmZzZXRfbWF4KSkpO1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9vZmZzZXRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBSYW5nZTtcbiAgICAgICAgSHRtbC5hX2lucHV0X21pbiAoYE51bWJlciAwKTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwib2Zmc2V0XCI7XG4gICAgICBdXG4gICAgKClcblxubGV0IHNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4IChzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIDpcbiAgICBpbnQgPVxuICBsZXQgcGxvdF9zaXplID1cbiAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcbiAgaW5cbiAgbWF4IDAgKHBsb3Rfc2l6ZSAtIFJlYWN0LlMudmFsdWUgcG9pbnQpXG5cbmxldCB1cGRhdGVfb2Zmc2V0ICh1cGRhdGVfb2Zmc2V0X2lucHV0IDogYm9vbCkgOiB1bml0ID1cbiAgbGV0IHNpbXVsYXRpb25fbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uX21vZGVsIGluXG4gIG1hdGNoIHNpbXVsYXRpb25faW5mbyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgaWZcbiAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgIHRoZW5cbiAgICAgICgqIElmIGl0IGlzIHJ1bm5pbmcgbm8gc2xpZGVyIGJlY2F1c2UgdXBkYXRlIGNhdXNlcyBqaXR0ZXJzLiAqKVxuICAgICAgc2V0X29mZnNldCBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgb2Zmc2V0X21heCA9IHNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4IHNpbXVsYXRpb25faW5mbyBpblxuICAgICAgbGV0IG9sZF9vZmZzZXQgPSBSZWFjdC5TLnZhbHVlIG9mZnNldCBpblxuICAgICAgbGV0IG9mZnNldF9jdXJyZW50ID1cbiAgICAgICAgbWF0Y2ggb2xkX29mZnNldCB3aXRoXG4gICAgICAgIHwgU29tZSBvZmZzZXQgLT4gb2Zmc2V0Lm9mZnNldF9jdXJyZW50XG4gICAgICAgIHwgTm9uZSAtPiBvZmZzZXRfbWF4XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgdXBkYXRlX29mZnNldF9pbnB1dCB0aGVuIChcbiAgICAgICAgICBsZXQgcGxvdF9vZmZzZXRfaW5wdXRfZG9tID1cbiAgICAgICAgICAgIFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwbG90X29mZnNldF9pbnB1dFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAoXCJbVGFiX3Bsb3QudXBkYXRlX29mZnNldF0gXCIgXiBzdHJpbmdfb2ZfaW50IG9mZnNldF9jdXJyZW50KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwbG90X29mZnNldF9pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICAgOj0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IG9mZnNldF9jdXJyZW50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgKClcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X29mZnNldCA9XG4gICAgICAgIGlmIG9mZnNldF9tYXggPiAwIHRoZW5cbiAgICAgICAgICBTb21lIHsgb2Zmc2V0X2N1cnJlbnQ7IG9mZnNldF9tYXggfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgaW5cbiAgICAgIHNldF9vZmZzZXQgbmV3X29mZnNldFxuICAgIClcblxubGV0IHBsb3RfcGFyYW1ldGVyICgpIDogQXBpX3R5cGVzX2oucGxvdF9wYXJhbWV0ZXIgPVxuICBsZXQgcG9pbnQgPSBSZWFjdC5TLnZhbHVlIHBvaW50IGluXG4gIHtcbiAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9XG4gICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biB4IC0+IHgub2Zmc2V0X2N1cnJlbnQpIChSZWFjdC5TLnZhbHVlIG9mZnNldCk7XG4gICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBTb21lIHBvaW50O1xuICB9XG5cbmxldCB1cGRhdGVfcGxvdCAoanNfcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQpIDogdW5pdCA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbGV0ICgpID0gdXBkYXRlX29mZnNldCB0cnVlIGluXG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyICgpKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2ZfcGxvdCBwbG90KSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBqc19wbG90IyNzZXREYXRhIGRhdGEgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IG9ubG9hZF9wbG90X3BvaW50c19pbnB1dCAoanNfcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQpIDogdW5pdCA9XG4gIGxldCBwbG90X3BvaW50c19pbnB1dF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHBsb3RfcG9pbnRzX2lucHV0XG4gIGluXG4gIGxldCBqc19wb2ludCA6IEpzLmpzX3N0cmluZyBKcy50ID1cbiAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgKFJlYWN0LlMudmFsdWUgcG9pbnQpKVxuICBpblxuICBsZXQgKCkgPSBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZSA6PSBqc19wb2ludCBpblxuICBsZXQgKCkgPVxuICAgIHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLm9ua2V5cHJlc3NcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlblxuICAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgcGxvdF9wb2ludHNfc3RyaW5nIDogc3RyaW5nID1cbiAgICAgICAgICAgICBKcy50b19zdHJpbmcgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHBsb3RfcG9pbnRzX29wdGlvbiA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgbGV0IHBsb3RfcG9pbnQgPSBpbnRfb2Zfc3RyaW5nIHBsb3RfcG9pbnRzX3N0cmluZyBpblxuICAgICAgICAgICAgICAgaWYgcGxvdF9wb2ludCA+IDAgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIHBsb3RfcG9pbnRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBtYXRjaCBwbG90X3BvaW50c19vcHRpb24gd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBwbG90X3BvaW50cyAtPiBzZXRfcG9pbnRzIHBsb3RfcG9pbnRzXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgcGxvdF9wb2ludCA6IGludCA9IFJlYWN0LlMudmFsdWUgcG9pbnQgaW5cbiAgICAgICAgICAgICAgIGxldCBwbG90X3BvaW50X3N0cmluZyA9IHN0cmluZ19vZl9pbnQgcGxvdF9wb2ludCBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIHBsb3RfcG9pbnRfc3RyaW5nXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0X3BvaW50cyBkZWZhdWx0X3BvaW50IGluXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfcGxvdCBqc19wbG90IGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuXG5sZXQgY29uZmlndXJhdGlvbiAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gZXhwb3J0X2lkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGl2X2Rpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXZfZGlzcGxheV9pZCAoKTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0X2pzb247XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnQgXCJ0ZXh0L2NzdlwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0IFwidGV4dC90c3ZcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgc2hvdyA9XG4gICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgbGV0IG91dCA9IGhhc19wbG90IChTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwpIGluXG4gICAgICAgICAgbGV0ICgpID0gaWYgb3V0IHRoZW4gT3B0aW9uLml0ZXIgdXBkYXRlX3Bsb3QgIXBsb3RfcmVmIGluXG4gICAgICAgICAgb3V0KVxuICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCk7XG4gIH1cblxubGV0IHhtbCAoKSA9XG4gIGxldCBleHBvcnRfY29udHJvbHMgPSBXaWRnZXRfZXhwb3J0LmlubGluZV9jb250ZW50IChjb25maWd1cmF0aW9uICgpKSBpblxuICBbJWh0bWxcbiAgICB7fFxuICA8ZGl2IGNsYXNzPVwibmF2Y29udGVudC12aWV3IGZsZXgtY29udGVudFwiIGlkPVwifH0gZGl2X2Rpc3BsYXlfaWRcbiAgICAgIHt8XCI+PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtY29udHJvbHNcIj5cbiAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCIgaWQ9fH1cbiAgICAgIGV4cG9ydF9pZFxuICAgICAge3w+XG4gICAgICB8fVxuICAgICAgZXhwb3J0X2NvbnRyb2xzXG4gICAgICB7fFxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj18fVxuICAgICAgcGxvdF9wb2ludHNfaW5wdXRfaWRcbiAgICAgIHt8PlJvdyB0byBwbG90PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlBvaW50czwvc3Bhbj5cbiAgICAgICAgICB8fVxuICAgICAgWyBwbG90X3BvaW50c19pbnB1dCBdXG4gICAgICB7fFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj18fVxuICAgICAgcGxvdF9vZmZzZXRfaW5wdXRfaWRcbiAgICAgIHt8PlNlbGVjdGVkIHdpbmRvdzwvbGFiZWw+XG4gICAgICAgIHx9XG4gICAgICBbIHBsb3Rfb2Zmc2V0X2lucHV0IF1cbiAgICAgIHt8XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gICAgPC9kaXY+IHx9XVxuXG5sZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgbGlzdCA9XG4gIFsgVWlfdHJhY2tfc2ltX3N0YXR1cy50b2dnbGVfZWxlbWVudCAoZnVuIHMgLT4gaGFzX3Bsb3QgcykgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwbG90X29mZnNldF9pbnB1dCBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbiAoKSkgaW5cbiAgbGV0IHBsb3QgOiBKc19wbG90Lm9ic2VydmFibGVfcGxvdCBKcy50ID1cbiAgICBKc19wbG90LmNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QgZGl2X2Rpc3BsYXlfaWRcbiAgaW5cbiAgKCogVGhlIGVsZW1lbnRzIHNpemUgdGhlbXNlbHZlcyB1c2luZyB0aGUgZGl2J3MgaWYgdGhleSBhcmUgaGlkZGVuXG4gICAgIGl0IHdpbGwgZGVmYXVsdCB0byBzaXplIHplcm8uICBzbyB0aGV5IG5lZWQgdG8gYmUgc2l6ZWQgd2hlbiBzaG93bi5cbiAgKilcbiAgbGV0ICgpID0gb25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IHBsb3QgaW5cbiAgbGV0ICgpID0gcGxvdF9yZWYgOj0gU29tZSBwbG90IGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwbG90XCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBsb3RcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uX21vZGVsID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPVxuICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uX21vZGVsXG4gICAgICAgIGluXG4gICAgICAgIGlmIGhhc19wbG90IHNpbXVsYXRpb25faW5mbyB0aGVuXG4gICAgICAgICAgdXBkYXRlX3Bsb3QgcGxvdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVWlfY29tbW9uLmlucHV0X2NoYW5nZSBwbG90X29mZnNldF9pbnB1dF9kb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgc2V0X29mZnNldFxuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBvZmZzZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgb2Zmc2V0IC0+XG4gICAgICAgICAgICAgICAgU29tZSB7IG9mZnNldCB3aXRoIG9mZnNldF9jdXJyZW50ID0gaW50X29mX3N0cmluZyB2YWx1ZSB9KVxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHVwZGF0ZV9wbG90IHBsb3QgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gICgpXG5cbmxldCBwbG90X2NvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IG9wZW4gQXBpX3R5cGVzX3QgaW5cbiAgICBzdGF0ZS5zaW11bGF0aW9uX2luZm9fb3V0cHV0LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcblxubGV0IG5hdmxpICgpID1cbiAgVWlfdHJhY2tfc2ltX3N0YXR1cy5sYWJlbF9uZXdzIHRhYl9pc19hY3RpdmUgKGZ1biBzdGF0ZSAtPiBwbG90X2NvdW50IHN0YXRlKVxuXG5sZXQgb25yZXNpemUgKCkgPVxuICAoKiByZWNhbGN1YXRlIHNpemUgKilcbiAgbGV0ICgpID1cbiAgICBtYXRjaCAhcGxvdF9yZWYgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBwbG90IC0+XG4gICAgICBsZXQgbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgICAgIChtYXRjaCBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiB1cGRhdGVfcGxvdCBwbG90KVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IHNlbGVjdF9pZCA9IFwib3V0cHV0LXNlbGVjdC1pZFwiXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IGN1cnJlbnRfZmlsZSwgc2V0X2N1cnJlbnRfZmlsZSA9IFJlYWN0LlMuY3JlYXRlIE5vbmVcblxubGV0IHVwZGF0ZV9vdXRwdXRzIChrZXkgOiBzdHJpbmcpIDogdW5pdCA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUga2V5XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBsaW5lcyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBzZXRfY3VycmVudF9maWxlIChTb21lIChrZXksIGxpbmVzKSkgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGZpbGVfY291bnQgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgIC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG5cbmxldCBuYXZsaSAoKSA9IFVpX3RyYWNrX3NpbV9zdGF0dXMuYmFkZ2UgKGZ1biBzdGF0ZSAtPiBmaWxlX2NvdW50IHN0YXRlKVxuXG5sZXQgeG1sICgpID1cbiAgbGV0IHNlbGVjdCAoZmlsZV9saW5lX2lkcyA6IHN0cmluZyBsaXN0KSA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0IF0gSHRtbC5lbHQgPVxuICAgIGxldCBsaW5lcyA6IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgb3B0aW9uID0gUmVhY3QuUy52YWx1ZSBjdXJyZW50X2ZpbGUgaW5cbiAgICBsZXQgY3VycmVudF9maWxlX2lkIDogc3RyaW5nID1cbiAgICAgIG1hdGNoIGZpbGVfbGluZV9pZHMsIGxpbmVzIHdpdGhcbiAgICAgIHwgW10sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGZpbGUgOjogXywgTm9uZSB8IF8gOjogXywgU29tZSAoZmlsZSwgXykgLT4gZmlsZVxuICAgIGluXG4gICAgbGV0IGZpbGVfb3B0aW9ucyA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0b3B0aW9uIF0gSHRtbC5lbHQgbGlzdCA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIGtleSAtPlxuICAgICAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIGtleSBdXG4gICAgICAgICAgICAgIEBcbiAgICAgICAgICAgICAgaWYga2V5ID0gY3VycmVudF9maWxlX2lkIHRoZW5cbiAgICAgICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBbXSlcbiAgICAgICAgICAgIChIdG1sLnR4dCAoVWlfY29tbW9uLm9wdGlvbl9sYWJlbCBrZXkpKSlcbiAgICAgICAgZmlsZV9saW5lX2lkc1xuICAgIGluXG4gICAgbGV0ICgpID0gdXBkYXRlX291dHB1dHMgY3VycmVudF9maWxlX2lkIGluXG4gICAgVHl4bWxfanMuSHRtbC5zZWxlY3RcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgc2VsZWN0X2lkIF1cbiAgICAgIGZpbGVfb3B0aW9uc1xuICBpblxuICBsZXQgZmlsZV9zZWxlY3QgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJsaXN0LWdyb3VwLWl0ZW1cIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgICAgICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3RcbiAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVfbGluZV9pZHMgOiBBcGlfdHlwZXNfai5maWxlX2xpbmVfY2F0YWxvZykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdF9maWxlIDogWz4gYEg0IHwgYFNlbGVjdCBdIEh0bWwuZWx0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRPRE86IG5hbWUgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmaWxlX2xpbmVfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXkgOjogW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9vdXRwdXRzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmg0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoVWlfY29tbW9uLm9wdGlvbl9sYWJlbCBrZXkpIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiBbIHNlbGVjdCBmaWxlX2xpbmVfaWRzIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2VsZWN0X2ZpbGUpKSlcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biB4IC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgeClcbiAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IFtdKSlcbiAgICAgICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCkpKSlcbiAgaW5cbiAgbGV0IGZpbGVfY29udGVudCA9XG4gICAgW1xuICAgICAgVHl4bWxfanMuUi5IdG1sLmRpdlxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCI7IFwiZmxleC1jb250ZW50XCIgXSBdXG4gICAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgIHwgU29tZSAoXywgbGluZXMpIC0+XG4gICAgICAgICAgICAgICAgICBMaXN0Lm1hcCAoZnVuIGxpbmUgLT4gSHRtbC5wIFsgSHRtbC50eHQgbGluZSBdKSBsaW5lcylcbiAgICAgICAgICAgICAgY3VycmVudF9maWxlKSk7XG4gICAgXVxuICBpblxuICBbXG4gICAgWyVodG1sXG4gICAgICB7fDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LXZpZXdcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlci1ibG9jayBkaXNwbGF5LWhlYWRlclwiPlxuICAgICAgICAgICB8fVxuICAgICAgICBbIGZpbGVfc2VsZWN0IF1cbiAgICAgICAge3xcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICB8fVxuICAgICAgICBmaWxlX2NvbnRlbnRcbiAgICAgICAge3xcbiAgICAgICAgICAgICA8L2Rpdj4gfH1dO1xuICBdXG5cbmxldCBzZWxlY3Rfb3V0cHV0cyAoKSA6IHVuaXQgPVxuICBsZXQgc2VsZWN0X2RvbSA9IFVpX2NvbW1vbi5pZF9kb20gc2VsZWN0X2lkIGluXG4gIGxldCBmaWxlaW5kZXggPSBKcy50b19zdHJpbmcgc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gIHVwZGF0ZV9vdXRwdXRzIGZpbGVpbmRleFxuXG5sZXQgY29udGVudCAoKSA9XG4gIFsgVWlfdHJhY2tfc2ltX3N0YXR1cy50b2dnbGVfZWxlbWVudCAoZnVuIHQgLT4gZmlsZV9jb3VudCB0ID4gMCkgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdm91dHB1dHNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2b3V0cHV0c1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoRm9ybWF0LnNwcmludGYgXCIjJXNcIiBzZWxlY3RfaWQpIFwiY2hhbmdlXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNlbGVjdF9vdXRwdXRzICgpIGluXG4gICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuKCogVE9ET1xuICAgICBsZXQgc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAoKEpzLk9wdC5nZXRcbiAgICAgICAgICAgICAoVWlfY29tbW9uLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZFxuICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgc2VsZWN0X2lkKSlcbiAgICAgICAgICAgICAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICAgICAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIGluXG4gICAgIGxldCAoKSA9IHNlbGVjdF9kb20jIy5vbmNoYW5nZSA6PSBEb21faHRtbC5oYW5kbGVyXG4gICAoZnVuIF8gLT5cbiAgICAgIGxldCAoKSA9IHNlbGVjdF9vdXRwdXRzIHRcbiAgICAgaW4gSnMuX3RydWUpXG4gICAgIGluXG4qKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IEhvb2tlZC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5cbmxldCBsaW5lX2NvdW50IHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBsZXQgb3BlbiBBcGlfdHlwZXNfdCBpblxuICAgIHN0YXRlLnNpbXVsYXRpb25faW5mb19vdXRwdXQuc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXG5cbmxldCBuYXZsaSAoKSA9XG4gIFVpX3RyYWNrX3NpbV9zdGF0dXMubGFiZWxfbmV3cyAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIHRhYl9pc19hY3RpdmUpXG4gICAgKGZ1biBzdGF0ZSAtPiBsaW5lX2NvdW50IHN0YXRlKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBjb250ZW50X2xvZ19pZCA9IFwiY29udGVudF9sb2dfaWRcIiBpblxuICBsZXQgdXBkYXRlX2xvZ19jb250ZW50IChsb2cgOiBzdHJpbmcpID1cbiAgICBsZXQgZG9tX2VsdCA6ICdhIEpzLnQgPSBVaV9jb21tb24uaWRfZG9tIGNvbnRlbnRfbG9nX2lkIGluXG4gICAgZG9tX2VsdCMjLmlubmVyVGV4dCA6PSBKcy5zdHJpbmcgbG9nXG4gIGluXG4gIEhvb2tlZC5TLnJlZ2lzdGVyX2x3dFxuICAgIChIb29rZWQuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAoSG9va2VkLlMub2ZfcmVhY3Rfc2lnbmFsIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKVxuICAgIChmdW4gXyAtPlxuICAgICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfXyBcIlt0YWJfbG9nXSBVcGRhdGluZyBsb2dcIjtcbiAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPiBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlKVxuICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgXCJcIikpXG4gICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFwiXCIpKVxuICAgICAgICAoKVxuICAgICAgPnw9IGZ1biAoeCA6IHN0cmluZyBBcGkucmVzdWx0KSAtPlxuICAgICAgKG1hdGNoIHguUmVzdWx0X3V0aWwudmFsdWUgd2l0aFxuICAgICAgfCBPayB4IC0+IHhcbiAgICAgIHwgRXJyb3IgbGlzdCAtPlxuICAgICAgICBTdHJpbmcuY29uY2F0IFwiXFxuXCIgKExpc3QubWFwIChmdW4gUmVzdWx0X3V0aWwueyB0ZXh0OyBfIH0gLT4gdGV4dCkgbGlzdCkpXG4gICAgICB8PiB1cGRhdGVfbG9nX2NvbnRlbnQpO1xuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGNvbnRlbnRfbG9nX2lkOyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXByZVwiOyBcInBhbmVsLXNjcm9sbFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC50eHQgXCJObyBsb2cgeWV0LlwiIF07XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZsb2dcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2bG9nXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCB3aXRoX2ZpbGUgKGhhbmRsZXIgOiAoc3RyaW5nICogc3RyaW5nKSBBcGkucmVzdWx0IC0+IHVuaXQgQXBpLmx3dF9yZXN1bHQpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpID4+PSBoYW5kbGVyKSA+Pj0gZnVuIF8gLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9jb250ZW50IH4oZmlsZW5hbWUgOiBzdHJpbmcpIH4oZmlsZWNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIHdpdGhfZmlsZVxuICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIChfLCBjdXJyZW50X2ZpbGVuYW1lKSAtPlxuICAgICAgICAgaWYgZmlsZW5hbWUgPSBjdXJyZW50X2ZpbGVuYW1lIHRoZW5cbiAgICAgICAgICAgU3RhdGVfZmlsZS5zZXRfY29udGVudCBmaWxlY29udGVudCA+Pj0gZnVuIHIgLT5cbiAgICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgRm9ybWF0LnNwcmludGYgXCJmaWxlIG5hbWUgbWlzbWF0Y2ggJXMgJXNcIiBmaWxlbmFtZSBjdXJyZW50X2ZpbGVuYW1lXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9zdHJpbmcgbXNnKVxuICAgICAgICAgKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgY3JlYXRlX2ZpbGUgPyh0ZXh0ID0gTHd0LnJldHVybiAoSnMuc3RyaW5nIFwiXCIpKSAoZmlsZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgICggdGV4dCA+Pj0gZnVuIHR4dCAtPlxuICAgICAgICAgIGxldCBjb250ZW50ID0gSnMudG9fc3RyaW5nIHR4dCBpblxuICAgICAgICAgIFN0YXRlX2ZpbGUuY3JlYXRlX2ZpbGUgfmZpbGVuYW1lOmZpbGVfaWQgfmNvbnRlbnRcbiAgICAgICAgICA+Pj0gKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgICAgIGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlIChmaWxlX2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgIChKcy5zdHJpbmdcbiAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIltFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGVdIGZpbGUgYCVzYFwiXG4gICAgICAgICAgICBmaWxlX2lkKSlcbiAgaW5cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCBOb25lID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBjbG9zZV9maWxlICgpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUucmVtb3ZlX2ZpbGUgKCkgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlX2NvbXBpbGUgcmFuayAoY29tcGlsZSA6IGJvb2wpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2V0X2NvbXBpbGUgcmFuayBjb21waWxlID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvcmRlcl9maWxlcyAoZmlsZW5hbWVzIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUub3JkZXJfZmlsZXMgZmlsZW5hbWVzID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBleHBvcnRfY3VycmVudF9maWxlICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpKVxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIChkYXRhLCBmaWxlbmFtZSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGE6KEpzLnN0cmluZyBkYXRhKVxuICAgICAgICAgICAgICAgICAgfm1pbWU6XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZmlsZV9uZXdfbW9kYWxfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtbmV3LW1vZGFsXCJcbmxldCBmaWxlX25ld19pbnB1dF9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctaW5wdXRcIlxubGV0IGZpbGVfZHJvcGRvd25fbWVudV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1kcm9wZG93bi1tZW51XCJcbmxldCBmaWxlX25ld19saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctbGlcIlxubGV0IGZpbGVfb3Blbl9saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1vcGVuLWxpXCJcbmxldCBmaWxlX29wZW5fc2VsZWN0b3JfaWQgPSBcIm1lbnUtZWRpdG9yLW9wZW4tc2VsZWN0b3ItaWRcIlxubGV0IGZpbGVfY2xvc2VfbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtY2xvc2UtbGlcIlxubGV0IGZpbGVfZXhwb3J0X2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLWV4cG9ydC1saVwiXG5sZXQgZmlsZV9jb21waWxlX2NoZWNrYm94ID0gXCJtZW51LWVkaXRvci1maWxlLWNvbXBpbGUtY2hlY2tib3hcIlxuXG4oKiBsaXN0IGZpbGVuYW1lIGFubm90YXRpb24gKilcbmxldCBlbGVtZW50X2dldF9maWxlbmFtZSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIENvbW1vbi5lbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIFwiZmlsZS1pZFwiXG5cbmxldCBlbGVtZW50X3NldF9maWxlbmFtZSAobmFtZSA6IHN0cmluZykgPVxuICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1maWxlLWlkXCIgbmFtZVxuXG5sZXQgZmlsZV9uZXdfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBmaWxlX25ld19pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBmaWxlX25ld19pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgZmlsZV9uZXdfaW5wdXRcblxubGV0IGZpbGVfY2hlY2tib3ggZmlsZV9pZCBpc19jaGVja2VkID1cbiAgbGV0IGNoZWNrZWRfYXR0cmlidXRlID1cbiAgICBpZiBpc19jaGVja2VkIHRoZW5cbiAgICAgIFsgSHRtbC5hX2NoZWNrZWQgKCkgXVxuICAgIGVsc2VcbiAgICAgIFtdXG4gIGluXG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIChbXG4gICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7XG4gICAgICAgICBIdG1sLmFfY2xhc3MgWyBmaWxlX2NvbXBpbGVfY2hlY2tib3ggXTtcbiAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIGZpbGVfaWQ7XG4gICAgICAgXVxuICAgICAgQCBjaGVja2VkX2F0dHJpYnV0ZSlcbiAgICAoKVxuXG5sZXQgb3Blbl9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZpbGVfb3Blbl9zZWxlY3Rvcl9pZDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJoaWRkZW5cIiBdO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiZmlsZVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYWNjZXB0XCIgXCIua2FcIjtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZHJvcGRvd24gKG1vZGVsIDogU3RhdGVfZmlsZS5tb2RlbCkgPVxuICAoKiBkaXJlY3RvcmllcyAqKVxuICBsZXQgaGlkZV9vbl9lbXB0eSBsID1cbiAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2VcbiAgICAgIGxcbiAgaW5cbiAgbGV0IGZpbGVfbGkgPVxuICAgIGxldCBjdXJyZW50X2ZpbGVfcG9zID1cbiAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAoZnVuIHsgU3RhdGVfZmlsZS5yYW5rOyBfIH0gLT4gcmFuaylcbiAgICAgICAgbW9kZWwuU3RhdGVfZmlsZS5jdXJyZW50XG4gICAgaW5cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAocmFuaywgeyBTdGF0ZV9maWxlLm5hbWU7IFN0YXRlX2ZpbGUubG9jYWwgfSkgLT5cbiAgICAgICAgbGV0IGNvbXBpbGUgPSBsb2NhbCA9IE5vbmUgaW5cbiAgICAgICAgbGV0IGxpX2NsYXNzID1cbiAgICAgICAgICAoaWYgY3VycmVudF9maWxlX3BvcyA9IFNvbWUgcmFuayB0aGVuXG4gICAgICAgICAgICAgWyBcImFjdGl2ZVwiIF1cbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFtdKVxuICAgICAgICAgIEAgWyBcInVpLXN0YXRlLXNvcnRhYmxlXCIgXVxuICAgICAgICBpblxuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3M7IGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYVxuICAgICAgICAgICAgICB+YTpbIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjaGVja2JveC1jb250cm9sLWRpdlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBmaWxlX2NoZWNrYm94IG5hbWUgY29tcGlsZTtcbiAgICAgICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2hlY2tib3gtY29udHJvbC1sYWJlbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIG5hbWUgXTtcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXSlcbiAgICAgIChNb2RzLkludE1hcC5iaW5kaW5ncyBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSlcbiAgaW5cbiAgbGV0IHNlcGFyYXRvcl9saSA9XG4gICAgaGlkZV9vbl9lbXB0eVxuICAgICAgW1xuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJzZXBhcmF0b3JcIjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgWyBcImRpdmlkZXJcIjsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IG5ld19saSA9XG4gICAgW1xuICAgICAgSHRtbC5saVxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICBbIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX25ld19saV9pZCBdIFsgSHRtbC5jZGF0YSBcIk5ld1wiIF0gXTtcbiAgICBdXG4gIGluXG5cbiAgbGV0IG9wZW5fbGkgPVxuICAgIFtcbiAgICAgIEh0bWwubGlcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX29wZW5fbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJPcGVuXCIgXTtcbiAgICAgICAgICBvcGVuX2lucHV0O1xuICAgICAgICBdO1xuICAgIF1cbiAgaW5cblxuICBsZXQgY2xvc2VfbGkgPVxuICAgIGhpZGVfb25fZW1wdHlcbiAgICAgIFtcbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgICAgWyBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9jbG9zZV9saV9pZCBdIFsgSHRtbC5jZGF0YSBcIkNsb3NlXCIgXSBdO1xuICAgICAgXVxuICBpblxuICBsZXQgZXhwb3J0X2xpID1cbiAgICBoaWRlX29uX2VtcHR5XG4gICAgICBbXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICAgIFsgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfZXhwb3J0X2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiRXhwb3J0XCIgXSBdO1xuICAgICAgXVxuICBpblxuICBbXSBAIGZpbGVfbGkgQCBzZXBhcmF0b3JfbGkgQCBuZXdfbGkgQCBvcGVuX2xpIEAgY2xvc2VfbGkgQCBleHBvcnRfbGlcblxubGV0IGNvbnRlbnQgPVxuICBsZXQgbGlfbGlzdCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAoUmVhY3QuUy5tYXAgKGZ1biBtb2RlbCAtPiBkcm9wZG93biBtb2RlbCkgU3RhdGVfZmlsZS5tb2RlbClcbiAgaW5cbiAgW1xuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0biBidG4tZGVmYXVsdFwiOyBcImRyb3Bkb3duLXRvZ2dsZVwiIF07XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJkcm9wZG93blwiO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWhhc3BvcHVwXCIgXCJ0cnVlXCI7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtZXhwYW5kZWRcIiBcImZhbHNlXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5sMlxuICAgICAgICAgICAgICAgKGZ1biBtb2RlbCBmaWxlIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY3VycmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGZpbGUuU3RhdGVfZmlsZS5jdXJyZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgeyBTdGF0ZV9maWxlLm91dF9vZl9zeW5jOyBfIH0gLT4gb3V0X29mX3N5bmMpKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCBTdGF0ZV9maWxlLm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLnR4dCBcIkZpbGVcIjsgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjYXJldFwiIF0gXSBbXSBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbC51bFxuICAgICAgfmE6WyBIdG1sLmFfaWQgZmlsZV9kcm9wZG93bl9tZW51X2lkOyBIdG1sLmFfY2xhc3MgWyBcImRyb3Bkb3duLW1lbnVcIiBdIF1cbiAgICAgIGxpX2xpc3Q7XG4gICAgVWlfY29tbW9uLmNyZWF0ZV9tb2RhbF90ZXh0X2lucHV0IH5pZDpmaWxlX25ld19tb2RhbF9pZFxuICAgICAgfnRpdGxlX2xhYmVsOlwiTmV3IEZpbGVcIlxuICAgICAgfmJvZHk6XG4gICAgICAgIFsgWyVodG1sIHt8PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+fH0gWyBmaWxlX25ld19pbnB1dCBdIHt8PC9kaXY+fH1dIF1cbiAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgRmlsZVwiXG4gICAgICB+c3VibWl0OlxuICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZmlsZV9uZXdfaW5wdXRfZG9tIyMudmFsdWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSBFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuY3JlYXRlX2ZpbGUgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcImhpZGVcIlxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSnMuX2ZhbHNlKSk7XG4gIF1cblxubGV0IG9yZGVyX2ZpbGVzIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCBmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCA9XG4gICAgQ29tbW9uLmNoaWxkcmVuX3ZhbHVlIGVsZW1lbnQgXCJsaVtkYXRhLWZpbGUtaWRdXCIgKGZ1biBlbGVtZW50IC0+XG4gICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXAgXCJbRWRpdG9yX21lbnVfZmlsZS5vcmRlcl9maWxlc11cIiBpblxuICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGVsZW1lbnQgaW5cbiAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cbiAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAoZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAoZnVuICgpIC0+IGZhaWx3aXRoIFwibWlzc2luZyBmaWxlbmFtZVwiKVxuICAgICAgICAgIEpzLnRvX3N0cmluZylcbiAgaW5cbiAgbGV0ICgpID0gRWRpdG9yX21lbnVfZmlsZV9jb250cm9sbGVyLm9yZGVyX2ZpbGVzIGZpbGVuYW1lcyBpblxuICAoKVxuXG5sZXQgZmlsZV9zZWxlY3RfaGFuZGxlciBfIF8gOiB1bml0IEx3dC50ID1cbiAgbGV0IG9wZW5faW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQgaW5cbiAgbGV0IGZpbGVzID0gSnMuT3B0ZGVmLmdldCBvcGVuX2lucHV0X2RvbSMjLmZpbGVzIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSBpblxuICBsZXQgZmlsZSA9IEpzLk9wdC5nZXQgKGZpbGVzIyNpdGVtIDApIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSBpblxuICBsZXQgZmlsZV9pZCA9IEpzLnRvX3N0cmluZyBmaWxlIyMubmFtZSBpblxuICBsZXQgKCkgPVxuICAgIEVkaXRvcl9tZW51X2ZpbGVfY29udHJvbGxlci5jcmVhdGVfZmlsZVxuICAgICAgfnRleHQ6KEpzX29mX29jYW1sX2x3dC5GaWxlLnJlYWRBc1RleHQgZmlsZSlcbiAgICAgIGZpbGVfaWRcbiAgaW5cbiAgbGV0ICgpID0gb3Blbl9pbnB1dF9kb20jIy52YWx1ZSA6PSBKcy5zdHJpbmcgXCJcIiBpblxuICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCBvcGVuX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcGVuX2lucHV0IGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX25ld19saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcInNob3dcIiBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9vcGVuX2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAoKiBjbGljayA6IHVuaXQgSnMubWV0aDsgKilcbiAgICAgICAgICAgbGV0ICgpID0gb3Blbl9pbnB1dF9kb20jI2NsaWNrIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX2Nsb3NlX2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuY2xvc2VfZmlsZSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9leHBvcnRfbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IEVkaXRvcl9tZW51X2ZpbGVfY29udHJvbGxlci5leHBvcnRfY3VycmVudF9maWxlICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcInNwYW5bZGF0YS1maWxlLWlkXVwiIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biAoZXZlbnQgOiBEb21faHRtbC5ldmVudCBKcy50KSAtPlxuICAgICAgICAgICAoKlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIENvbW1vbi5sb2dfZ3JvdXAgXCJbRWRpdG9yX21lbnVfZmlsZV0gY2xpY2tlZCBzcGFuW2RhdGEtZmlsZS1pZF1cIlxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGV2ZW50IGluXG4gICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5sb2dfZ3JvdXBfZW5kICgpIGluXG4qKVxuICAgICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgICAgIGxldCBmaWxlX2lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgICAgICAgICAgICBKcy5PcHQuYmluZCB0YXJnZXQgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBKcy5PcHQuY2FzZSBmaWxlX2lkXG4gICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAgICAoZnVuIGZpbGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgRWRpdG9yX21lbnVfZmlsZV9jb250cm9sbGVyLnNldF9maWxlIChKcy50b19zdHJpbmcgZmlsZV9pZCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmNyZWF0ZV9zb3J0IGZpbGVfZHJvcGRvd25fbWVudV9pZCAoZnVuIGV2ZW50IF8gKCogdWkgKikgLT5cbiAgICAgICAgbGV0IHRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgPSBldmVudCMjLnRhcmdldCBpblxuICAgICAgICBKcy5PcHQuY2FzZSB0YXJnZXRcbiAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgIGxldCBpZCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBlbGVtZW50IyMuaWQgaW5cbiAgICAgICAgICAgIGlmIGZpbGVfZHJvcGRvd25fbWVudV9pZCA9IGlkIHRoZW5cbiAgICAgICAgICAgICAgb3JkZXJfZmlsZXMgZWxlbWVudFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fXG4gICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJbRWRpdG9yX21lbnVfZmlsZV0gZmlsZSBkcm9wZG93biA6IHVuZXhwZWN0ZWQgaWQgJXNcIiBpZCkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb25cbiAgICAgIChGb3JtYXQuc3ByaW50ZiBcImlucHV0LiVzXCIgZmlsZV9jb21waWxlX2NoZWNrYm94KVxuICAgICAgXCJjaGFuZ2VcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgICAgIGxldCBmaWxlX2lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgICAgICAgICAgICBKcy5PcHQuYmluZCB0YXJnZXQgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGlzX2NoZWNrZWQgOiBib29sID1cbiAgICAgICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgICAgICAoSnMuT3B0LmNhc2UgdGFyZ2V0XG4gICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKEpzLlVuc2FmZS5jb2VyY2UgZWxlbWVudCA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50KSMjLmNoZWNrZWQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEpzLk9wdC5jYXNlIGZpbGVfaWRcbiAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgICAgIChmdW4gZmlsZV9pZCAtPlxuICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5sb2dfZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgIFwiW0VkaXRvcl9tZW51X2ZpbGVdIHRyaWdnZXJlZCBcXFxuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmZpbGVfY29tcGlsZV9jaGVja2JveCwgZmlsZV9pZDpcIlxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fIGZpbGVfaWQgaW5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmxvZ19ncm91cF9lbmQgKCkgaW5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICBFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGVfY29tcGlsZVxuICAgICAgICAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBmaWxlX2lkKSBpc19jaGVja2VkXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEx3dC5hc3luYyAoZnVuICgpIC0+XG4gICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmNoYW5nZXNcbiAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQpXG4gICAgICAgICAgZmlsZV9zZWxlY3RfaGFuZGxlcilcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ29kZW1pcnJvclxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZWRpdG9yX2Z1bGwsIHNldF9lZGl0b3JfZnVsbCA9IFJlYWN0LlMuY3JlYXRlIChmYWxzZSA6IGJvb2wpXG5sZXQgZmlsZW5hbWUsIHNldF9maWxlbmFtZSA9IFJlYWN0LlMuY3JlYXRlIChOb25lIDogc3RyaW5nIG9wdGlvbilcblxubGV0IG1vdmVfY3Vyc29yX2hvb2ssIG1vdmVfY3Vyc29yX2hvb2tfc2VuZCA9XG4gIEhvb2tlZC5FLmNyZWF0ZSB+ZGVidWc6XCJtb3ZlX2N1cnNvcl9ob29rXCIgKClcblxubGV0IGZpbGVfbGFiZWwgPVxuICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgKFJlYWN0LlMubWFwIChPcHRpb25fdXRpbC51bnNvbWUgXCJcIikgU3RhdGVfZmlsZS5jdXJyZW50X2ZpbGVuYW1lKVxuXG5sZXQgdG9nZ2xlX2J1dHRvbl9pZCA9IFwidG9nZ2xlX2J1dHRvblwiXG5cbmxldCB0b2dnbGVfYnV0dG9uID1cbiAgSHRtbC5hXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0b2dnbGVfYnV0dG9uX2lkO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJwdWxsLXJpZ2h0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwuY2RhdGEgXCJ0b2dnbGVcIiBdXG5cbmxldCBwYW5lbF9oZWFkaW5nX2dyb3VwX2lkID0gXCJwYW5lbF9oZWFkaW5nX2dyb3VwXCJcblxubGV0IHBhbmVsX2hlYWRpbmcgPVxuICBsZXQgbWVudV9lZGl0b3JfZmlsZV9jb250ZW50IDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuLWdyb3VwXCIgXTsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImdyb3VwXCI7XG4gICAgICAgIF1cbiAgICAgIEVkaXRvcl9tZW51X2ZpbGUuY29udGVudFxuICBpblxuICBsZXQgYnV0dG9ucyA9IG1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCA6OiBbIHRvZ2dsZV9idXR0b24gXSBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICA8ZGl2IGlkPVwifH1cbiAgICAgIHBhbmVsX2hlYWRpbmdfZ3JvdXBfaWQge3xcIiBjbGFzcz1cImNvbC1tZC0xMCBidG4tZ3JvdXBcIj58fSBidXR0b25zXG4gICAgICB7fDwvZGl2PlxuICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIG9uZWxpbmVyIGZpbGVuYW1lXCI+fH1cbiAgICAgIFsgZmlsZV9sYWJlbCBdXG4gICAgICB7fDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj58fV1cblxubGV0IGNvZGVtaXJyb3JfaWQgPSBcImNvZGUtbWlycm9yXCJcbmxldCBlZGl0b3JfcGFuZWxfaWQgPSBcImVkaXRvci1wYW5lbFwiXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHRleHRhcmVhID0gSHRtbC50ZXh0YXJlYSB+YTpbIEh0bWwuYV9pZCBjb2RlbWlycm9yX2lkIF0gKEh0bWwudHh0IFwiXCIpIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiOyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgIFtcbiAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdIFsgcGFuZWxfaGVhZGluZyBdO1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9maWxlLmN1cnJlbnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmhpZGVfY29kZW1pcnJvciAoKSBpblxuICAgICAgICAgICAgICAgICAgICAgWyBcIm5vLXBhbmVsLWJvZHlcIjsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zaG93X2NvZGVtaXJyb3IgKCkgaW5cbiAgICAgICAgICAgICAgICAgICAgIFsgXCJwYW5lbC1ib2R5XCI7IFwiZmxleC1jb250ZW50XCIgXSlcbiAgICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgICAgICBIdG1sLmFfaWQgZWRpdG9yX3BhbmVsX2lkO1xuICAgICAgICAgIF1cbiAgICAgICAgWyB0ZXh0YXJlYSBdO1xuICAgIF1cblxubGV0IGVycm9yX2xpbnQgKGVycm9ycyA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgOlxuICAgIENvZGVtaXJyb3IubGludCBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICBsZXQgcG9zaXRpb24gcCA9IG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChwLkxvYy5saW5lIC0gMSkgcC5Mb2MuY2hyIGluXG4gIGxldCBoeWRyYXRlIChlcnJvciA6IEFwaV90eXBlc19qLm1lc3NhZ2UpIDogbGludCBKcy50IG9wdGlvbiA9XG4gICAgbWF0Y2ggZXJyb3IuUmVzdWx0X3V0aWwucmFuZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJhbmdlIC0+XG4gICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBTdGF0ZV9maWxlLmN1cnJlbnRfZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBmaWxlX2lkIC0+XG4gICAgICAgIGlmIHJhbmdlLkxvYy5maWxlID0gZmlsZV9pZCB0aGVuXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKENvZGVtaXJyb3IuY3JlYXRlX2xpbnRcbiAgICAgICAgICAgICAgIH5tZXNzYWdlOmVycm9yLlJlc3VsdF91dGlsLnRleHRcbiAgICAgICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgLi4uIGkgYW0gdHJ5aW5nIHRvIGtlZXBcbiAgICAgICAgICAgICAgICAgICAgICB0aGUgY29kZSBtaXJyb3IgY29kZSBpbmRlcGVuZGVudCBvZiB0aGUgYXBpIGNvZGUuXG4gICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICB+c2V2ZXJpdHk6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBlcnJvci5SZXN1bHRfdXRpbC5zZXZlcml0eSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5BcHAgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuRXJyb3IgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuV2FybmluZyAtPiBDb2RlbWlycm9yLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkluZm8gLT4gQ29kZW1pcnJvci5XYXJuaW5nXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5EZWJ1ZyAtPiBDb2RlbWlycm9yLldhcm5pbmcpXG4gICAgICAgICAgICAgICB+ZnJvbToocG9zaXRpb24gcmFuZ2UuTG9jLmZyb21fcG9zaXRpb24pXG4gICAgICAgICAgICAgICB+dG9fOihwb3NpdGlvbiByYW5nZS5Mb2MudG9fcG9zaXRpb24pKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZSlcbiAgaW5cbiAgSnMuYXJyYXlcbiAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIHZhbHVlIC0+XG4gICAgICAgICAgICBtYXRjaCBoeWRyYXRlIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZSA6OiBhY2MpXG4gICAgICAgICAgW10gZXJyb3JzKSlcblxuKCogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDU3NTM0My9jb2RlbWlycm9yLWlzLWl0LXBvc3NpYmxlLXRvLXNjcm9sbC10by1hLWxpbmUtc28tdGhhdC1pdC1pcy1pbi10aGUtbWlkZGxlLW9mLXcgKilcbmxldCBqdW1wX3RvX2xpbmUgKGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQpIChsaW5lIDogaW50KSA6IHVuaXQgPVxuICBsZXQgcG9zaXRpb24gOiBwb3NpdGlvbiBKcy50ID0gbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gbGluZSAwIGluXG4gIGxldCBtb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID0gSnMuc29tZSAoSnMuc3RyaW5nIFwibG9jYWxcIikgaW5cbiAgbGV0IGNvb3JkcyA6IENvZGVtaXJyb3IuZGltZW5zaW9uIEpzLnQgPVxuICAgIGNvZGVtaXJyb3IjI2NoYXJDb29yZHMgcG9zaXRpb24gbW9kZVxuICBpblxuICBsZXQgdG9wIDogaW50ID0gY29vcmRzIyMudG9wIGluXG4gIGxldCBlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50ID0gY29kZW1pcnJvciMjZ2V0U2Nyb2xsZXJFbGVtZW50IGluXG4gIGxldCBtaWRkbGVIZWlnaHQgOiBpbnQgPSBlbGVtZW50IyMub2Zmc2V0SGVpZ2h0IC8gMiBpblxuICBsZXQgc2Nyb2xsTGluZSA6IGludCA9IHRvcCAtIG1pZGRsZUhlaWdodCAtIDUgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2Nyb2xsVG8gSnMubnVsbCAoSnMuc29tZSBzY3JvbGxMaW5lKSBpblxuICAoKVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IEVkaXRvcl9tZW51X2ZpbGUub25sb2FkICgpIGluXG4gIGxldCBsaW50X2NvbmZpZyA9IENvZGVtaXJyb3IuY3JlYXRlX2xpbnRfY29uZmlndXJhdGlvbiAoKSBpblxuXG4gIGxldCAoKSA9XG4gICAgbGludF9jb25maWcjIy5nZXRBbm5vdGF0aW9ucyA6PSBmdW4gXyBfIF8gLT5cbiAgICBlcnJvcl9saW50IChIb29rZWQuUy52YWx1ZSBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gIGluXG4gIGxldCAoKSA9IGxpbnRfY29uZmlnIyMubGludE9uQ2hhbmdlIDo9IEpzLl9mYWxzZSBpblxuICBsZXQgY29uZmlndXJhdGlvbiA9IENvZGVtaXJyb3IuZGVmYXVsdF9jb25maWd1cmF0aW9uIGluXG4gIGxldCBndXR0ZXJfb3B0aW9ucyA9XG4gICAgSnMuc3RyaW5nIFwiYnJlYWtwb2ludHMsQ29kZU1pcnJvci1saW50LW1hcmtlcnMsQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXG4gIGluXG4gIGxldCBndXR0ZXJfb3B0aW9uIDogSnMuc3RyaW5nX2FycmF5IEpzLnQgPVxuICAgIGd1dHRlcl9vcHRpb25zIyNzcGxpdCAoSnMuc3RyaW5nIFwiLFwiKVxuICBpblxuICBsZXQgdGV4dGFyZWEgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgPSBVaV9jb21tb24uaWRfZG9tIFwiY29kZS1taXJyb3JcIiBpblxuICBsZXQgKCkgPVxuICAgIGNvbmZpZ3VyYXRpb24jIy5saW5lTnVtYmVycyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMubGluZVdyYXBwaW5nIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5zdHlsZUFjdGl2ZUxpbmUgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLm1hdGNoQnJhY2tldHMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmF1dG9mb2N1cyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMuZ3V0dGVycyA6PSBndXR0ZXJfb3B0aW9uO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5saW50IDo9IGxpbnRfY29uZmlnO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5tb2RlIDo9IEpzLnN0cmluZyBcIkthcHBhXCJcbiAgaW5cbiAgbGV0IGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAgIENvZGVtaXJyb3IuZnJvbVRleHRBcmVhIHRleHRhcmVhIGNvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgKEpzLnN0cmluZyBcIlwiKSBpblxuICBsZXQgKCkgPVxuICAgIEVkaXRvcl9jb250cm9sbGVyLndpdGhfZmlsZVxuICAgICAgKFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgIH5vazooZnVuIChjb250ZW50LCBpZCkgLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIGlkKSBpblxuICAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSAoSnMuc3RyaW5nIGNvbnRlbnQpIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgIH5lcnJvcjooZnVuIF8gLT5cbiAgICAgICAgICAgKCogaWdub3JlIGlmIG1pc3NpbmcgZmlsZSAqKVxuICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvZGVtaXJyb3IuY29tbWFuZHMjIy5zYXZlIDo9XG4gICAgICBmdW4gXyAtPiBFZGl0b3JfbWVudV9maWxlX2NvbnRyb2xsZXIuZXhwb3J0X2N1cnJlbnRfZmlsZSAoKVxuICBpblxuICBsZXQgdGltZW91dCA6IERvbV9odG1sLnRpbWVvdXRfaWQgb3B0aW9uIHJlZiA9IHJlZiBOb25lIGluXG4gIGxldCBoYW5kbGVyIGNvZGVtaXJyb3IgY2hhbmdlID1cbiAgICBsZXQgKCkgPSBTdGF0ZV9maWxlLm91dF9vZl9zeW5jIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggIXRpbWVvdXQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgdGltZW91dCAtPiBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCB0aW1lb3V0XG4gICAgaW5cbiAgICBsZXQgZGVsYXkgOiBmbG9hdCA9XG4gICAgICBpZiAoSnMuc3RyX2FycmF5IGNoYW5nZSMjLnRleHQpIyMubGVuZ3RoID4gMSB8fCBTdGF0ZV9lcnJvci5oYXNfZXJyb3JzICgpXG4gICAgICB0aGVuXG4gICAgICAgICgqIE5vdCBzdXJlIHdoeSB0aGlzIGxvZ2ljIGZvciBlcnJvcnMgKilcbiAgICAgICAgMC45ICouIDEwMDAuMFxuICAgICAgZWxzZVxuICAgICAgICAxLjAgKi4gMTAwMC4wXG4gICAgaW5cbiAgICBsZXQgaGFuZGxlX3RpbWVvdXQgKCkgPVxuICAgICAgbGV0ICgpID0gU3RhdGVfZmlsZS5vdXRfb2Zfc3luYyBmYWxzZSBpblxuICAgICAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBmaWxlbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmaWxlbmFtZSAtPlxuICAgICAgICBFZGl0b3JfY29udHJvbGxlci5zZXRfY29udGVudCB+ZmlsZW5hbWVcbiAgICAgICAgICB+ZmlsZWNvbnRlbnQ6KEpzLnRvX3N0cmluZyBjb2RlbWlycm9yIyNnZXRWYWx1ZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICB0aW1lb3V0IDo9XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoRG9tX2h0bWwud2luZG93IyNzZXRUaW1lb3V0XG4gICAgICAgICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGhhbmRsZV90aW1lb3V0ICgpKSlcbiAgICAgICAgICAgICBkZWxheSlcbiAgICBpblxuICAgICgpXG4gIGluXG4gIGxldCAoKSA9IGNvZGVtaXJyb3IjI29uQ2hhbmdlIGhhbmRsZXIgaW5cbiAgbGV0ICgpID1cbiAgICBjb2RlbWlycm9yIyNvbkN1cnNvckFjdGl2aXR5IChmdW4gX2NvZGVtaXJyb3IgLT5cbiAgICAgICAgbGV0IHBvcyA9IGNvZGVtaXJyb3IjI2dldEN1cnNvciBpblxuICAgICAgICBsZXQgbGluZSA9IHBvcyMjLmxpbmUgaW5cbiAgICAgICAgbGV0IGNoID0gcG9zIyMuY2ggaW5cbiAgICAgICAgU3RhdGVfZmlsZS5jdXJzb3JfYWN0aXZpdHkgfmxpbmUgfmNoKVxuICBpblxuICBsZXQgdG9nZ2xlX2J1dHRvbl9kb20gOiBEb21faHRtbC5saW5rRWxlbWVudCBKcy50ID1cbiAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAoSnMuT3B0LmdldFxuICAgICAgICAgKFVpX2NvbW1vbi5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyB0b2dnbGVfYnV0dG9uX2lkKSlcbiAgICAgICAgIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICB0b2dnbGVfYnV0dG9uX2RvbSMjLm9uY2xpY2tcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IGVkaXRvcl9mdWxsID0gUmVhY3QuUy52YWx1ZSBlZGl0b3JfZnVsbCBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZXRfZWRpdG9yX2Z1bGwgKG5vdCBlZGl0b3JfZnVsbCkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSG9va2VkLlMucmVnaXN0ZXIgU3RhdGVfZXJyb3IuZXJyb3JzIChmdW4gX2Vycm9ycyAtPlxuICAgICAgICBjb2RlbWlycm9yIyNwZXJmb3JtTGludClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBIb29rZWQuRS5yZWdpc3RlciBTdGF0ZV9maWxlLnJlZnJlc2hfZmlsZV9ob29rIChmdW4gcmVmcmVzaCAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfZmlsZW5hbWUgKFNvbWUgcmVmcmVzaC5TdGF0ZV9maWxlLmZpbGVuYW1lKSBpblxuICAgICAgICBsZXQgY2FuZCA9IEpzLnN0cmluZyByZWZyZXNoLlN0YXRlX2ZpbGUuY29udGVudCBpblxuICAgICAgICBpZiBjYW5kIDw+IGNvZGVtaXJyb3IjI2dldFZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9IGNvZGVtaXJyb3IjI3NldFZhbHVlIGNhbmQgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgbWF0Y2ggcmVmcmVzaC5TdGF0ZV9maWxlLmxpbmUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgbGluZSAtPiBqdW1wX3RvX2xpbmUgY29kZW1pcnJvciBsaW5lXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEhvb2tlZC5FLnJlZ2lzdGVyIG1vdmVfY3Vyc29yX2hvb2sgKGZ1biBwb3MgLT5cbiAgICAgICAgaWYgU29tZSBwb3MuTG9jLmZpbGUgPSBSZWFjdC5TLnZhbHVlIGZpbGVuYW1lIHRoZW4gKFxuICAgICAgICAgIGxldCBiZWcgPSBwb3MuTG9jLmZyb21fcG9zaXRpb24gaW5cbiAgICAgICAgICBsZXQgZmlyc3QgPVxuICAgICAgICAgICAgbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gKGJlZy5Mb2MubGluZSAtIDEpIGJlZy5Mb2MuY2hyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZW4gPSBwb3MuTG9jLmZyb21fcG9zaXRpb24gaW5cbiAgICAgICAgICBsZXQgbGFzdCA9IG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChlbi5Mb2MubGluZSAtIDEpIGVuLkxvYy5jaHIgaW5cbiAgICAgICAgICBjb2RlbWlycm9yIyNzZXRTZWxlY3Rpb24gZmlyc3QgbGFzdFxuICAgICAgICApKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5cbigqIHRvZG8gYWRkIGJ1dHRvbiB0byBzd2l0Y2ggb24vb2ZmIHRoZSBkaXNwbGF5IG9mIHRoZSBpbmZvcm1hdGlvbiBvZiBlYWNoIGFic3RyYWN0IGRvbWFpblxuICAgbGV0IG5vbl9yZWxhdGlvbmFsID0gcmVmIHRydWVcbiAgIGxldCByZWxhdGlvbmFsID0gcmVmIHRydWVcbiAgIGxldCBzaXRlX2FjY3Jvc3MgPSByZWYgdHJ1ZVxuICAgbGV0IHBhcmFsbGVsX2JvbmQgPSByZWYgdHJ1ZVxuKilcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgY29uc3RyYWludHNfZGl2ID1cbiAgICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlICgpXG4gICAgICAoUmVhY3QuUy5jb25zdCAoKSkgW10gKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAoKSAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9jb25zdHJhaW50c19saXN0XG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIGNvbnN0cmFpbnRzIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFuZWxzIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKm1hdGNoIGIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHBhbmVsc1xuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+KilcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRzID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGxlbW1hIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoeXAgPSBQdWJsaWNfZGF0YS5nZXRfaHlwIGxlbW1hIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25jbHVzaW9uID0gUHVibGljX2RhdGEuZ2V0X3JlZmluZW1lbnQgbGVtbWEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbmNsdXNpb24gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWyBzaXRlX2dyYXBoIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWxfdXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIHNpdGVfZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEh0bWxfdXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBIdG1sX3V0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IEh0bWxfdXRpbGl0eS5wcmludF9zdHJpbmcgXCIgXVwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYm9vbCwgbGlzdCkgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sX3V0aWxpdHkucHJpbnRfc3RyaW5nIFwiIHYgXCIgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbF91dGlsaXR5LnByaW50X3NpdGVfZ3JhcGggYSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UsIGxpc3QpIChMaXN0LnJldiBjb25jbHVzaW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IEh0bWxfdXRpbGl0eS5wcmludF9zdHJpbmcgXCJbIFwiIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBIdG1sX3V0aWxpdHkucHJpbnRfc3RyaW5nIFwiICA9PiAgXCIgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IEh0bWxfdXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIGh5cCBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSAoTGlzdC5yZXYgYilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWhlYWRpbmdcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgYSBdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1wcmVcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgIFsgdGl0bGU7IGNvbnRlbnQgXVxuICAgICAgICAgICAgICAgICAgICA6OiBwYW5lbHMpXG4gICAgICAgICAgICAgICAgICBbXSBjb25zdHJhaW50cylcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXVxuICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiS2FTYSBoYXMgZmFpbGVkXCIgXVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1wcmVcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWxcIjsgXCJwYW5lbC1kYW5nZXJcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgWyB0aXRsZTsgY29udGVudCBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBbIG91dCBdKSlcbiAgaW5cbiAgW1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIGNvbnN0cmFpbnRzX2Rpdik7XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb25zdHJhaW50c1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb25zdHJhaW50c1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIG1vZGVsX2dyYXBoID0geyBmd2Q6IGludCBvcHRpb247IGJ3ZDogaW50IG9wdGlvbjsgdG90YWw6IGludCB9XG5cbnR5cGUgaW5mbHVlbmNlX3NwaGVyZSA9IHtcbiAgcG9zaXRpdmVfb246XG4gICAgKFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xuICBuZWdhdGl2ZV9vbjpcbiAgICAoUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG4gIHBvc2l0aXZlX2J5OlxuICAgIChQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbiAgbmVnYXRpdmVfYnk6XG4gICAgKFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVcbiAgICAqIFB1YmxpY19kYXRhLmxvY2F0aW9uIFB1YmxpY19kYXRhLnBhaXIgbGlzdClcbiAgICBsaXN0O1xufVxuXG5sZXQgZW1wdHlfc3BoZXJlID1cbiAgeyBwb3NpdGl2ZV9vbiA9IFtdOyBwb3NpdGl2ZV9ieSA9IFtdOyBuZWdhdGl2ZV9vbiA9IFtdOyBuZWdhdGl2ZV9ieSA9IFtdIH1cblxudHlwZSBtb2RlbF9yZW5kZXJpbmcgPSBEcmF3R3JhcGggb2YgbW9kZWxfZ3JhcGggfCBEcmF3VGFidWxhciBvZiB1bml0XG5cbnR5cGUgbW9kZWwgPSB7XG4gIHJlbmRlcmluZzogbW9kZWxfcmVuZGVyaW5nO1xuICBhY2N1cmFjeTogUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWwgb3B0aW9uO1xuICBvcmlnaW46IFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlIG9wdGlvbjtcbiAgb3JpZ2luX2xhYmVsOiBzdHJpbmcgb3B0aW9uO1xufVxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID1cbiAgSG9va2VkLlMuY3JlYXRlIH5kZWJ1ZzpcInRhYl9pc19hY3RpdmVcIiBmYWxzZVxuXG5sZXQgdGFiX2lzX2FjdGl2ZV9zaWduYWwgPSBIb29rZWQuUy50b19yZWFjdF9zaWduYWwgdGFiX2lzX2FjdGl2ZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5sZXQgdHJhY2tfY3Vyc29yLCB0cmFja19jdXJzb3Jfc2V0ID0gSG9va2VkLlMuY3JlYXRlIH5kZWJ1ZzpcInRyYWNrX2N1cnNvclwiIGZhbHNlXG5sZXQgdHJhY2tfY3Vyc29yX3NpZ25hbCA9IEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCB0cmFja19jdXJzb3JcblxubGV0IGR1bW15X21vZGVsID1cbiAge1xuICAgIHJlbmRlcmluZyA9IERyYXdUYWJ1bGFyICgpO1xuICAgIGFjY3VyYWN5ID0gU29tZSBQdWJsaWNfZGF0YS5Mb3c7XG4gICAgb3JpZ2luID0gTm9uZTtcbiAgICBvcmlnaW5fbGFiZWwgPSBOb25lO1xuICB9XG5cbmxldCBtb2RlbCwgc2V0X21vZGVsID0gSG9va2VkLlMuY3JlYXRlIH5kZWJ1ZzpcIm1vZGVsXCIgZHVtbXlfbW9kZWxcbmxldCBtb2RlbF9zaWduYWwgPSBIb29rZWQuUy50b19yZWFjdF9zaWduYWwgbW9kZWxcbmxldCB0b3RhbF9pbnB1dF9pZCA9IFwidG90YWxfaW5wdXRcIlxubGV0IGZ3ZF9pbnB1dF9pZCA9IFwiZndkX2lucHV0XCJcbmxldCBid2RfaW5wdXRfaWQgPSBcImJ3ZF9pbnB1dFwiXG5cbmxldCBpbmZsdWVuY2Vfbm9kZV9sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgUHVibGljX2RhdGEuUnVsZSByIC0+XG4gICAgaWYgci5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsID0gXCJcIiB0aGVuXG4gICAgICByLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgZWxzZVxuICAgICAgci5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsXG4gIHwgUHVibGljX2RhdGEuVmFyIHIgLT5cbiAgICBpZiByLlB1YmxpY19kYXRhLnZhcl9sYWJlbCA9IFwiXCIgdGhlblxuICAgICAgci5QdWJsaWNfZGF0YS52YXJfYXN0XG4gICAgZWxzZVxuICAgICAgci5QdWJsaWNfZGF0YS52YXJfbGFiZWxcblxubGV0IHVwZGF0ZV9tb2RlbF9ncmFwaCBmID1cbiAgbGV0IG0gPSBIb29rZWQuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCBtLnJlbmRlcmluZyB3aXRoXG4gIHwgRHJhd1RhYnVsYXIgXyAtPiAoKVxuICB8IERyYXdHcmFwaCBnIC0+IHNldF9tb2RlbCB7IG0gd2l0aCByZW5kZXJpbmcgPSBEcmF3R3JhcGggKGYgZykgfVxuXG5sZXQgdXBkYXRlX21vZGVsIGYgPSBzZXRfbW9kZWwgKGYgKEhvb2tlZC5TLnZhbHVlIG1vZGVsKSlcbmxldCBkaXNwbGF5X2lkID0gXCJpbmZsdWVuY2VfbWFwX2Rpc3BsYXlcIlxuXG5sZXQgaW5mbHVlbmNlbWFwID1cbiAgSnNfZ3JhcGhsb2dnZXIuY3JlYXRlX2dyYXBoX2xvZ2dlciBkaXNwbGF5X2lkIChmdW4geCAtPlxuICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIChKcy50b19zdHJpbmcgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRWRpdG9yLm1vdmVfY3Vyc29yX2hvb2tfc2VuZFxuICAgICAgICAgICAgICAoUHVibGljX2RhdGEucG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSBub2RlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9yaWdpbiA9IFNvbWUgKFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG5vZGUpIGluXG4gICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9IFNvbWUgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIGluXG4gICAgICAgICAgeyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSkpXG5cbmxldCB0b3RhbF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIHRvdGFsX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfdmFsdWUgXCIxXCI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgMTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZndkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgZndkX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDE7XG4gICAgICBdXG4gICAgKClcblxubGV0IGJ3ZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGJ3ZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSAxO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBuZXh0X25vZGUgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIk5leHRcIiBdXG5cbmxldCBwcmV2X25vZGUgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIlByZXZpb3VzXCIgXVxuXG5sZXQgcmVjZW50ZXIgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIkZpcnN0IG5vZGVcIiBdXG5cbmxldCB0cmFja19jdXJzb3Jfc3dpdGNoID1cbiAgbGV0IHRyYWNrX2N1cnNvcl9zd2l0Y2hfaWQgPSBcInRyYWNrX2N1cnNvcl9zd2l0Y2hfaWRcIiBpblxuICBIb29rZWQuUy5yZWdpc3RlciB0cmFja19jdXJzb3IgKGZ1biB0cmFja19lbmFibGVkIC0+XG4gICAgICBsZXQgYWRkX2xpc3QsIHJlbW92ZV9saXN0ID1cbiAgICAgICAgaWYgdHJhY2tfZW5hYmxlZCB0aGVuXG4gICAgICAgICAgWyBcImJ0bi1saWdodFwiOyBcImFjdGl2ZVwiIF0sIFsgXCJidG4tZGVmYXVsdFwiIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIFsgXCJidG4tZGVmYXVsdFwiIF0sIFsgXCJidG4tbGlnaHRcIjsgXCJhY3RpdmVcIiBdXG4gICAgICBpblxuICAgICAgVWlfY29tbW9uLnN3aXRjaF9jbGFzcyB0cmFja19jdXJzb3Jfc3dpdGNoX2lkIGFkZF9saXN0IHJlbW92ZV9saXN0KTtcbiAgbGV0IG9uX2NsaWNrIF8gPVxuICAgIGxldCAoKSA9IHRyYWNrX2N1cnNvcl9zZXQgKG5vdCAoSG9va2VkLlMudmFsdWUgdHJhY2tfY3Vyc29yKSkgaW5cbiAgICBpZiBIb29rZWQuUy52YWx1ZSB0cmFja19jdXJzb3IgdGhlblxuICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPiB7IG0gd2l0aCBvcmlnaW4gPSBOb25lOyBvcmlnaW5fbGFiZWwgPSBOb25lIH0pO1xuICAgIHRydWVcbiAgaW5cbiAgKCogaHRtbCopXG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0cmFja19jdXJzb3Jfc3dpdGNoX2lkO1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIEh0bWwuYV9vbmNsaWNrIG9uX2NsaWNrO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJUcmFjayBjdXJzb3JcIiBdXG5cbmxldCBleHBvcnRfY29uZmlnID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBcImluZmx1ZW5jZS1leHBvcnRcIjtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgICAgICAgTHd0Lmlnbm9yZV9yZXN1bHRcbiAgICAgICAgICAgICAgICAoIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX2V4cG9ydFwiXG4gICAgICAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7IGFjY3VyYWN5OyBfIH0gPSBIb29rZWQuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5XG4gICAgICAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIGluZmx1ZW5jZXNfc3RyaW5nIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyBpbmZsdWVuY2VzX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSlcbiAgICAgICAgICAgICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0ICkpO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gIH1cblxubGV0IHJlbmRlcmluZ19jaG9vc2VyX2lkID0gXCJpbmZsdWVuY2UtcmVuZGVyaW5nXCJcblxubGV0IHJlbmRlcmluZ19jaG9vc2VyID1cbiAgbGV0IHsgcmVuZGVyaW5nOyBfIH0gPSBIb29rZWQuUy52YWx1ZSBtb2RlbCBpblxuICBIdG1sLnNlbGVjdFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgcmVuZGVyaW5nX2Nob29zZXJfaWQgXVxuICAgIFtcbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gbClcbiAgICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSBcInRhYnVsYXJcIiBdKVxuICAgICAgICAoSHRtbC50eHQgXCJUYWJ1bGFyXCIpO1xuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKChmdW4gbCAtPlxuICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBsKVxuICAgICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIFwiZ3JhcGhcIiBdKVxuICAgICAgICAoSHRtbC50eHQgXCJHcmFwaFwiKTtcbiAgICBdXG5cbmxldCBhY2N1cmFjeV9jaG9vc2VyX2lkID0gXCJpbmZsdWVuY2UtYWNjdXJhY3lcIlxuXG5sZXQgYWNjdXJhY3lfY2hvb3NlciA9XG4gIGxldCB7IGFjY3VyYWN5OyBfIH0gPSBIb29rZWQuUy52YWx1ZSBtb2RlbCBpblxuICBsZXQgb3B0aW9uX2dlbiB4ID1cbiAgICBIdG1sLm9wdGlvblxuICAgICAgfmE6XG4gICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgaWYgYWNjdXJhY3kgPSBTb21lIHggdGhlblxuICAgICAgICAgICAgIEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpIF0pXG4gICAgICAoSHRtbC50eHQgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSlcbiAgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIGFjY3VyYWN5X2Nob29zZXJfaWQgXVxuICAgIChMaXN0Lm1hcCBvcHRpb25fZ2VuIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzKVxuXG5sZXQgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSA9XG4gIG1hdGNoIG9yaWdpbl9zaG9ydF9vcHQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT4gci5QdWJsaWNfZGF0YS5ydWxlX2lkID0gMFxuICAgIHwgUHVibGljX2RhdGEuVmFyIF8gLT4gZmFsc2UpXG4gIHwgU29tZSBvcmlnaW4gLT5cbiAgICAobWF0Y2ggb3JpZ2luLCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgaWQsIFB1YmxpY19kYXRhLlJ1bGUgYSAtPiBhLlB1YmxpY19kYXRhLnJ1bGVfaWQgPSBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIGlkLCBQdWJsaWNfZGF0YS5WYXIgYSAtPiBhLlB1YmxpY19kYXRhLnZhcl9pZCA9IGlkXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgXywgUHVibGljX2RhdGEuUnVsZSBfXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIF8sIFB1YmxpY19kYXRhLlZhciBfIC0+XG4gICAgICBmYWxzZSlcblxubGV0IGpzb25fdG9fZ3JhcGggbG9nZ2VyIChfLCBfLCBfLCBfLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXApID1cbiAgbGV0IG9yaWdpbl9zaG9ydF9vcHQgPVxuICAgIE9wdGlvbl91dGlsLm1hcCBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBvcmlnaW5cbiAgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgXCJcIiBpblxuICBsZXQgbm9kZXMgPSBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5vZGVzIGluXG4gIGxldCBkaXJlY3RpdmVzX29mX25vZGUgbm9kZSA9XG4gICAgbGV0IGpzb24gPSBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gbm9kZSBpblxuICAgIGxldCBsYWJlbCA9IGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUgaW5cbiAgICBtYXRjaCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPlxuICAgICAgbGV0IHBvcyA9IHIuUHVibGljX2RhdGEucnVsZV9wb3NpdGlvbiBpblxuICAgICAgbGV0IGNvbnRleHR1YWxfaGVscCA9IExvYy50b19zdHJpbmcgcG9zIF4gXCIgXCIgXiByLlB1YmxpY19kYXRhLnJ1bGVfYXN0IGluXG4gICAgICBsZXQgZmlsbGNvbG9yID1cbiAgICAgICAgaWYgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSB0aGVuXG4gICAgICAgICAgIUNvbmZpZy5jZW50ZXJfY29sb3JcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFDb25maWcucnVsZV9jb2xvclxuICAgICAgaW5cbiAgICAgIFtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWw7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlICFDb25maWcucnVsZV9zaGFwZTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBbIHBvcyBdO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb247XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBjb250ZXh0dWFsX2hlbHA7XG4gICAgICBdXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgciAtPlxuICAgICAgbGV0IHBvcyA9IHIuUHVibGljX2RhdGEudmFyX3Bvc2l0aW9uIGluXG4gICAgICBsZXQgY29udGV4dHVhbF9oZWxwID0gTG9jLnRvX3N0cmluZyBwb3MgXiByLlB1YmxpY19kYXRhLnZhcl9hc3QgaW5cbiAgICAgIGxldCBmaWxsY29sb3IgPVxuICAgICAgICBpZiBpc19jZW50ZXIgb3JpZ2luX3Nob3J0X29wdCBub2RlIHRoZW5cbiAgICAgICAgICAhQ29uZmlnLmNlbnRlcl9jb2xvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgIUNvbmZpZy52YXJpYWJsZV9jb2xvclxuICAgICAgaW5cbiAgICAgIFtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWw7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlICFDb25maWcudmFyaWFibGVfc2hhcGU7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gWyBwb3MgXTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgY29udGV4dHVhbF9oZWxwO1xuICAgICAgXVxuICBpblxuICBsZXQgbWF4X3J1bGVfaWQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGJpZ2dlc3RfaWQgbiAtPlxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT4gbWF4IGJpZ2dlc3RfaWQgKDEgKyByLlB1YmxpY19kYXRhLnJ1bGVfaWQpXG4gICAgICAgIHwgUHVibGljX2RhdGEuVmFyIF8gLT4gYmlnZ2VzdF9pZClcbiAgICAgICgtMSkgbm9kZXNcbiAgaW5cbiAgbGV0IGdldF9pZF9vZl9ub2RlX2lkIG5vZGVfaWQgPVxuICAgIG1hdGNoIG5vZGVfaWQgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSBpZCAtPiBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIGlkIC0+IGlkICsgbWF4X3J1bGVfaWRcbiAgaW5cbiAgbGV0IGdldF9pZF9vZl9ub2RlIG5vZGUgPVxuICAgIGdldF9pZF9vZl9ub2RlX2lkIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBub2RlIC0+XG4gICAgICAgIGxldCBkaXJlY3RpdmVzID0gZGlyZWN0aXZlc19vZl9ub2RlIG5vZGUgaW5cbiAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9ub2RlIGxvZ2dlciB+ZGlyZWN0aXZlc1xuICAgICAgICAgIChzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZSBub2RlKSkpXG4gICAgICBub2Rlc1xuICBpblxuICBsZXQgcHJpbnRfbWFwcyA/KGRpcmVjdGl2ZXMgPSBbXSkgbG9nZ2VyIG1hcCA9XG4gICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5pdGVyXG4gICAgICAoZnVuIHNvdXJjZSBtYXAgLT5cbiAgICAgICAgbGV0IHNvdXJjZV9pZCA9IHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlX2lkIHNvdXJjZSkgaW5cbiAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5pdGVyXG4gICAgICAgICAgKGZ1biB0YXJnZXQgbGFiZWxfbGlzdCAtPlxuICAgICAgICAgICAgbGV0IHRhcmdldF9pZCA9IHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlX2lkIHRhcmdldCkgaW5cbiAgICAgICAgICAgICgqbGV0IGxhYmVsX3N0cmluZyA9IFwidG9kb1wiXG4gICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgIGxldCBsYWJlbF9zdHJpbmcgPSBQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfbGFiZWxfbGlzdCBsYWJlbF9saXN0IGluXG4gICAgICAgICAgICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsX3N0cmluZyA6OiBkaXJlY3RpdmVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlcyBzb3VyY2VfaWQgdGFyZ2V0X2lkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCkpXG4gICAgICAgICAgbWFwKVxuICAgICAgbWFwXG4gIGluXG4gIGxldCBkaXJlY3RpdmVzID1cbiAgICBbXG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAhQ29uZmlnLndha2VfdXBfY29sb3I7XG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgIUNvbmZpZy53YWtlX3VwX2Fycm93O1xuICAgIF1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfbWFwcyB+ZGlyZWN0aXZlcyBsb2dnZXIgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5wb3NpdGl2ZSBpblxuICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgW1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgIUNvbmZpZy5pbmhpYml0aW9uX2NvbG9yO1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkICFDb25maWcuaW5oaWJpdGlvbl9hcnJvdztcbiAgICBdXG4gIGluXG4gIGxldCAoKSA9IHByaW50X21hcHMgfmRpcmVjdGl2ZXMgbG9nZ2VyIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubmVnYXRpdmUgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9mb290IGxvZ2dlciBpblxuICAoKVxuXG5sZXQgdGFibGVfb2ZfaW5mbHVlbmNlc19qc29uIChfLCBfLCBfLCBfLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXApID1cbiAgbGV0IG5hbWVyID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZSAtPlxuICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmFkZFxuICAgICAgICAgIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBlKVxuICAgICAgICAgIGUgYWNjKVxuICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5lbXB0eSBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5vZGVzXG4gIGluXG4gIGxldCBvcmlnaW5faWRfb3B0ID1cbiAgICBPcHRpb25fdXRpbC5tYXAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgb3JpZ2luXG4gIGluXG4gIG1hdGNoIG9yaWdpbl9pZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlfc3BoZXJlXG4gIHwgU29tZSBvcmlnaW5faWQgLT5cbiAgICBsZXQgcG9zaXRpdmVfb24sIHBvc2l0aXZlX2J5ID1cbiAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZFxuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZCAoZnVuIGRzdCBkYXRhICgob24sIGJ5KSBhcyBhY2MpIC0+XG4gICAgICAgICAgICAgIGlmIHNyYyA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIGRzdCBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2LCBkYXRhKSA6OiBvbiwgYnlcbiAgICAgICAgICAgICAgKSBlbHNlIGlmIGRzdCA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIHNyYyBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IG9uLCAodiwgZGF0YSkgOjogYnlcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5wb3NpdGl2ZSAoW10sIFtdKVxuICAgIGluXG4gICAgbGV0IG5lZ2F0aXZlX29uLCBuZWdhdGl2ZV9ieSA9XG4gICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGQgKGZ1biBkc3QgZGF0YSAoKG9uLCBieSkgYXMgYWNjKSAtPlxuICAgICAgICAgICAgICBpZiBzcmMgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBkc3QgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodiwgZGF0YSkgOjogb24sIGJ5XG4gICAgICAgICAgICAgICkgZWxzZSBpZiBkc3QgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBzcmMgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBvbiwgKHYsIGRhdGEpIDo6IGJ5XG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubmVnYXRpdmUgKFtdLCBbXSlcbiAgICBpblxuICAgIHsgcG9zaXRpdmVfb247IHBvc2l0aXZlX2J5OyBuZWdhdGl2ZV9vbjsgbmVnYXRpdmVfYnkgfVxuXG5sZXQgcG9wX2NlbGwgPSBmdW5jdGlvblxuICB8IFtdIC0+IEh0bWwudGQgW10sIFtdXG4gIHwgKChub2RlLCBfbWFwcGluZ3MpLCBwb3NpdGl2ZSkgOjogdCAtPlxuICAgICggSHRtbC50ZFxuICAgICAgICB+YTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmFfb25jbGljayAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgRWRpdG9yLm1vdmVfY3Vyc29yX2hvb2tfc2VuZFxuICAgICAgICAgICAgICAgICAgICAoUHVibGljX2RhdGEucG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSBub2RlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICBTb21lIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9IFNvbWUgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT4geyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHRydWUpO1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoaWYgcG9zaXRpdmUgdGhlblxuICAgICAgICAgICAgICAgICAgIFwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBcImRhbmdlclwiKTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBdXG4gICAgICAgIFsgSHRtbC5jZGF0YSAoaW5mbHVlbmNlX25vZGVfbGFiZWwgbm9kZSkgXSxcbiAgICAgIHQgKVxuXG5sZXQgcmVjIGZpbGxfdGFibGUgYWNjIGJ5IG9uID1cbiAgaWYgb24gPSBbXSAmJiBieSA9IFtdIHRoZW5cbiAgICBMaXN0LnJldiBhY2NcbiAgZWxzZSAoXG4gICAgbGV0IGIsIGJ5JyA9IHBvcF9jZWxsIGJ5IGluXG4gICAgbGV0IG8sIG9uJyA9IHBvcF9jZWxsIG9uIGluXG4gICAgbGV0IGxpbmUgPSBIdG1sLnRyIFsgYjsgbyBdIGluXG4gICAgZmlsbF90YWJsZSAobGluZSA6OiBhY2MpIGJ5JyBvbidcbiAgKVxuXG5sZXQgZHJhd190YWJsZSBvcmlnaW5fbGFiZWxfb3B0XG4gICAgeyBwb3NpdGl2ZV9vbjsgcG9zaXRpdmVfYnk7IG5lZ2F0aXZlX29uOyBuZWdhdGl2ZV9ieSB9ID1cbiAgbGV0IG9yaWdpbl9sYWJlbCwgb3V0cyA9XG4gICAgbWF0Y2ggb3JpZ2luX2xhYmVsX29wdCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBub3QgKHRyYWNrX2N1cnNvciB8PiBIb29rZWQuUy52YWx1ZSkgdGhlblxuICAgICAgICBcIk5hdmlnYXRlIHRocm91Z2ggdGhlIG5vZGVzIHVzaW5nIHRoZSBjb250cm9scyBhYm92ZS5cIiwgW11cbiAgICAgIGVsc2VcbiAgICAgICAgXCJDbGljayBvbiBhIHJ1bGUgb3IgdmFyaWFibGUgaW4gdGhlIGVkaXRvci5cIiwgW11cbiAgICB8IFNvbWUgbGFiZWwgLT5cbiAgICAgIGxldCBieSA9XG4gICAgICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAgIChmdW4geCAtPiB4LCBmYWxzZSlcbiAgICAgICAgICBuZWdhdGl2ZV9ieVxuICAgICAgICAgIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIHRydWUpIHBvc2l0aXZlX2J5KVxuICAgICAgaW5cbiAgICAgIGxldCBvbiA9XG4gICAgICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAgIChmdW4geCAtPiB4LCBmYWxzZSlcbiAgICAgICAgICBuZWdhdGl2ZV9vblxuICAgICAgICAgIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIHRydWUpIHBvc2l0aXZlX29uKVxuICAgICAgaW5cbiAgICAgIGxldCBvdXRzID0gZmlsbF90YWJsZSBbXSBieSBvbiBpblxuICAgICAgbGFiZWwsIG91dHNcbiAgaW5cbiAgSHRtbC50YWJsZXhcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidGFibGVcIiBdIF1cbiAgICB+dGhlYWQ6XG4gICAgICAoSHRtbC50aGVhZFxuICAgICAgICAgW1xuICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgWyBIdG1sLnRoIH5hOlsgSHRtbC5hX2NvbHNwYW4gMiBdIFsgSHRtbC5jZGF0YSBvcmlnaW5fbGFiZWwgXSBdO1xuICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50aCBbIEh0bWwuY2RhdGEgXCJpcyBpbmZsdWVuY2VkIGJ5XCIgXTtcbiAgICAgICAgICAgICAgIEh0bWwudGggWyBIdG1sLmNkYXRhIFwiaW5mbHVlbmNlc1wiIF07XG4gICAgICAgICAgICAgXTtcbiAgICAgICAgIF0pXG4gICAgWyBIdG1sLnRib2R5IG91dHMgXVxuXG5sZXQgaW5mbHVlbmNlX3NwaGVyZSA6XG4gICAgKGluZmx1ZW5jZV9zcGhlcmUsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBSZWFjdC5zaWduYWwgPVxuICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlX3NpZ25hbCBkdW1teV9tb2RlbFxuICAgIG1vZGVsX3NpZ25hbCAoUmVzdWx0X3V0aWwub2sgZW1wdHlfc3BoZXJlKVxuICAgIChmdW4gbWFuYWdlciB7IHJlbmRlcmluZzsgYWNjdXJhY3k7IG9yaWdpbjsgb3JpZ2luX2xhYmVsID0gXyB9IC0+XG4gICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgfCBEcmF3VGFidWxhciBfIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZDpOb25lID9id2Q6Tm9uZSA/b3JpZ2luIH50b3RhbDoxXG4gICAgICAgICAgYWNjdXJhY3lcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCB0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb25cbiAgICAgIHwgRHJhd0dyYXBoIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZW1wdHlfc3BoZXJlKSlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgYWNjdXJhY3lfZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciByZW5kZXJpbmdfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJSZW5kZXJpbmdcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtNFwiIF0gXSBbIHJlbmRlcmluZ19jaG9vc2VyIF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciBhY2N1cmFjeV9jaG9vc2VyX2lkO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkFjY3VyYWN5XCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBhY2N1cmFjeV9jaG9vc2VyIF07XG4gICAgICAgICAgXTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgWyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0zXCIgXTsgSHRtbC5hX2xhYmVsX2ZvciB0b3RhbF9pbnB1dF9pZCBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJOYXZpZ2F0ZVwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgcHJldl9ub2RlIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgbmV4dF9ub2RlIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgcmVjZW50ZXIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyB0cmFja19jdXJzb3Jfc3dpdGNoIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGdyYXBoX2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTNcIiBdIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIlNpemUgUmFkaXVzXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyB0b3RhbF9pbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTFcIiBdIF0gWyBIdG1sLnR4dCBcImZ3ZFwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgZndkX2lucHV0IF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIEh0bWwudHh0IFwiYndkXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBid2RfaW5wdXQgXTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuICBpblxuICBsZXQgaW5mbHVlbmNlX3N0eWxlX2lkID0gXCJpbmZsdWVuY2Vfc3R5bGVfaWRcIiBpblxuICBbXG4gICAgYWNjdXJhY3lfZm9ybTtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaW5mbHVlbmNlX3N0eWxlX2lkO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIHsgcmVuZGVyaW5nOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBbIFwiZmxleC1jb250ZW50XCIgXVxuICAgICAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gW10pXG4gICAgICAgICAgICAgICBtb2RlbF9zaWduYWwpO1xuICAgICAgICAgICgqIEhpZGRlbiBpZiB0YWJ1bGFyICopXG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfaGlkZGVuICgpKVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIHsgcmVuZGVyaW5nOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgIG1vZGVsX3NpZ25hbCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgZ3JhcGhfZm9ybTtcbiAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfaWQgZGlzcGxheV9pZDsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4LWNvbnRlbnRcIiBdIF0gW107XG4gICAgICBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9pZCBcImluZmx1ZW5jZXMtdGFibGVcIjsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAgICAgIChSZWFjdC5TLmwzXG4gICAgICAgICAgICAoZnVuIHsgcmVuZGVyaW5nOyBvcmlnaW5fbGFiZWw7IF8gfSBzcGhlcmUgXyAtPlxuICAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IFtdXG4gICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgKCkgLT5cbiAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5mb2xkIHNwaGVyZVxuICAgICAgICAgICAgICAgICAgfm9rOihmdW4gc3BoZXJlIC0+IFsgZHJhd190YWJsZSBvcmlnaW5fbGFiZWwgc3BoZXJlIF0pXG4gICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvciAtPlxuICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlIG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yKSlcbiAgICAgICAgICAgIG1vZGVsX3NpZ25hbCBpbmZsdWVuY2Vfc3BoZXJlIHRyYWNrX2N1cnNvcl9zaWduYWwpKTtcbiAgICBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgZXhwb3J0X2NvbmZpZztcbiAgXVxuXG4oKiBUT0RPOiBncmFwaCBzdHVmZiB0aGF0IG1pZ2h0IGJlIEJST0tFTiAqKVxubGV0IG5laXRoZXJfZ2NfbWUgPVxuICBIb29rZWQuUy5sMlxuICAgIChmdW4gXyB7IHJlbmRlcmluZzsgYWNjdXJhY3k7IG9yaWdpbjsgb3JpZ2luX2xhYmVsID0gXyB9IC0+XG4gICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgfCBEcmF3VGFidWxhciBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgfCBEcmF3R3JhcGggeyBmd2Q7IGJ3ZDsgdG90YWwgfSAtPlxuICAgICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgbWFuYWdlciNnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3lcbiAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBpbmZsdWVuY2VzIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEwMDAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIH5tb2RlOkxvZ2dlcnMuSnNfR3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZtdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyX2dyYXBoID0gR3JhcGhfbG9nZ2Vyc19zaWcuZXh0ZW5kX2xvZ2dlciBsb2dnZXIgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ganNvbl90b19ncmFwaCBsb2dnZXJfZ3JhcGggaW5mbHVlbmNlcyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZ3JhcGggPVxuICAgICAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoX29mX2xvZ2dlciBsb2dnZXJfZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGdyYXBoX2pzb24gPSBHcmFwaF9qc29uLnRvX2pzb24gZ3JhcGggaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mbHVzaF9sb2dnZXIgbG9nZ2VyIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2VfbG9nZ2VyIGxvZ2dlciBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGluZmx1ZW5jZW1hcCMjc2V0RGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyBncmFwaF9qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGluZmx1ZW5jZW1hcCMjY2xlYXJEYXRhIGluXG4gICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yIGUpKVxuICAgICAgICB8PiBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcImluZmx1ZW5jZV9tYXBcIilcbiAgICAoSG9va2VkLlMub24gfmVxOlN0YXRlX3Byb2plY3QubW9kZWxfZXF1YWwgdGFiX2lzX2FjdGl2ZVxuICAgICAgIFN0YXRlX3Byb2plY3QuZHVtbXlfbW9kZWxcbiAgICAgICAoSG9va2VkLlMub2ZfcmVhY3Rfc2lnbmFsIH5lcTpTdGF0ZV9wcm9qZWN0Lm1vZGVsX2VxdWFsXG4gICAgICAgICAgfmRlYnVnOlwiU3RhdGVfcHJvamVjdC5tb2RlbCBpbiBzdGF0ZV9wcm9qZWN0XCIgU3RhdGVfcHJvamVjdC5tb2RlbCkpXG4gICAgbW9kZWxcblxubGV0IHVwZGF0ZV9tb2RlbF93aXRoX29yaWdpbl9yZWZpbmVkIG9yaWdpbl9yZWZpbmVkID1cbiAgbGV0IG9yaWdpbiA9XG4gICAgT3B0aW9uX3V0aWwubWFwIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG9yaWdpbl9yZWZpbmVkXG4gIGluXG4gIGxldCBvcmlnaW5fbGFiZWwgPSBPcHRpb25fdXRpbC5tYXAgaW5mbHVlbmNlX25vZGVfbGFiZWwgb3JpZ2luX3JlZmluZWQgaW5cbiAgdXBkYXRlX21vZGVsIChmdW4gbSAtPiB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KVxuXG4oKiBVcGRhdGUgaW5mbHVlbmNlIG1hcCBub2RlIGFjY29yZGluZyB0byBjdXJzb3JfcG9zICopXG5sZXQgXyA9XG4gIFN0YXRlX2ZpbGUud2l0aF9jdXJyZW50X3Bvc1xuICAgIH5vbjooSG9va2VkLlMubDIgKCAmJiApIHRhYl9pc19hY3RpdmUgdHJhY2tfY3Vyc29yKVxuICAgIChmdW4gZmlsZW5hbWUgY3Vyc29yX3BvcyAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfbm9kZV9hdFwiXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbmZsdWVuY2VfbWFwX25vZGVfYXQgfmZpbGVuYW1lIGN1cnNvcl9wb3NcbiAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIHVwZGF0ZV9tb2RlbF93aXRoX29yaWdpbl9yZWZpbmVkKSkpXG4gICAgKEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgfD4gSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5sZXQgZG9udF9nY19tZSA9IHJlZiBbXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gZG9udF9nY19tZSA6PSBbIG5laXRoZXJfZ2NfbWUgXSBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCBleHBvcnRfY29uZmlnIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgcmVuZGVyaW5nX2Nob29zZXIpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbSB3aXRoXG4gICAgICAgICAgICAgICAgICAgcmVuZGVyaW5nID1cbiAgICAgICAgICAgICAgICAgICAgIChpZiBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSA9IFwiZ3JhcGhcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBEcmF3R3JhcGggeyBmd2QgPSBOb25lOyBid2QgPSBOb25lOyB0b3RhbCA9IDEgfVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIERyYXdUYWJ1bGFyICgpKTtcbiAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYWNjdXJhY3lfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IGFjY3VyYWN5ID1cbiAgICAgICAgICAgICBQdWJsaWNfZGF0YS5hY2N1cmFjeV9vZl9zdHJpbmcgKEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+IHsgbSB3aXRoIGFjY3VyYWN5IH0pIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgdG90YWxfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICB1cGRhdGVfbW9kZWxfZ3JhcGggKGZ1biBtIC0+IHsgbSB3aXRoIHRvdGFsID0gaW50X29mX3N0cmluZyB2YSB9KVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSnMuX3RydWVcbiAgICAgICAgICAgd2l0aCBfIC0+IEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGZ3ZF9pbnB1dCkjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0IGZ3ZCA9XG4gICAgICAgICAgICAgICBpZiB2YSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFNvbWUgKGludF9vZl9zdHJpbmcgdmEpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfbW9kZWxfZ3JhcGggKGZ1biBtIC0+IHsgbSB3aXRoIGZ3ZCB9KSBpblxuICAgICAgICAgICAgIEpzLl90cnVlXG4gICAgICAgICAgIHdpdGggXyAtPiBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBid2RfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCBid2QgPVxuICAgICAgICAgICAgICAgaWYgdmEgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBTb21lIChpbnRfb2Zfc3RyaW5nIHZhKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCBid2QgfSkgaW5cbiAgICAgICAgICAgICBKcy5fdHJ1ZVxuICAgICAgICAgICB3aXRoIF8gLT4gSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHJlY2VudGVyKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBfIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX3JlY2VudGVyXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2luaXRpYWxfbm9kZVxuICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIHVwZGF0ZV9tb2RlbF93aXRoX29yaWdpbl9yZWZpbmVkKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gbmV4dF9ub2RlKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBfIF8gLT5cbiAgICAgICAgICAgbGV0IHsgb3JpZ2luOyBfIH0gPSBIb29rZWQuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfbmV4dF9ub2RlXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X25leHRfbm9kZSBvcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCB1cGRhdGVfbW9kZWxfd2l0aF9vcmlnaW5fcmVmaW5lZCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHByZXZfbm9kZSkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCB7IG9yaWdpbjsgXyB9ID0gSG9va2VkLlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX3ByZXZfbm9kZVwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9wcmV2aW91c19ub2RlIG9yaWdpblxuICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIHVwZGF0ZV9tb2RlbF93aXRoX29yaWdpbl9yZWZpbmVkKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZpbmZsdWVuY2VzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmluZmx1ZW5jZXNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5sZXQgc2l0ZSBhID0gWyBhLCBOb25lLCBTb21lIChQdWJsaWNfZGF0YS5Cb3VuZF90byAxKSwgTm9uZSBdXG5cbmxldCBwcmludF9lZGdlICgoYSwgYiksIChjLCBkKSkgbGlzdCA9XG4gIEh0bWxfdXRpbGl0eS5wcmludF9uZXdsaW5lXG4gICAgKEh0bWxfdXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIFsgYSwgc2l0ZSBiOyBjLCBzaXRlIGQgXSBsaXN0KVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBzY2MgPVxuICAgIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgKClcbiAgICAgIChSZWFjdC5TLmNvbnN0ICgpKSBbXSAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpICgpIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X3BvdGVudGlhbF9wb2x5bWVycyAoU29tZSBQdWJsaWNfZGF0YS5IaWdoKVxuICAgICAgICAgIChTb21lIFB1YmxpY19kYXRhLkhpZ2gpXG4gICAgICAgICgqVE9ETzogbWFrZSB0aGVzZSBvcHRpb25zIHR1bmFibGUgKilcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgfm9rOihmdW4gKF8sIF8sIHNjYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgc2NjID0gTGlzdC5yZXZfbWFwIExpc3QucmV2IHNjYyBpblxuICAgICAgICAgICAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgaWYgc2NjID0gW10gfHwgc2NjID0gWyBbXSBdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgSHRtbF91dGlsaXR5LnByaW50X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHNpemUgb2YgYmlvbW9sZWN1bGFyIGNvbXBvdW5kcyBpcyB1bmlmb3JtbHkgYm91bmRlZC5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgbGlzdF9lZGdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IEh0bWxfdXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKChhLCBiKSwgKGMsIGQpKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZWRnZSAoKGEsIGIpLCAoYywgZCkpIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCBsaXN0X2VkZ2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgW10gc2NjXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gSHRtbF91dGlsaXR5LnByaW50X25ld2xpbmUgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgSHRtbF91dGlsaXR5LnByaW50X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGUgZm9sbG93aW5nIGJvbmRzIG1heSBmb3JtIGFyYml0cmFyeSBsb25nIGNoYWlucyBvZiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50czpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBbIEh0bWwucCBvdXRwdXQgXSlcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT5cbiAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlIG0pO1xuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICBtaCkpXG4gIGluXG4gIFtcbiAgICBUeXhtbF9qcy5SLkh0bWw1LmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXByZVwiOyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBzY2MpO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cG9seW1lcnNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cG9seW1lcnNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgcmlnaHRzdWJwYW5lbF9pZCA6IHN0cmluZyA9IFwicmlnaHRzdWJwYW5lbFwiXG5cbmxldCByaWdodHN1YnBhbmVsICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIEVkaXRvci5lZGl0b3JfZnVsbCAoZnVuIGVkaXRvcl9mdWxsIC0+XG4gICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgIChpZiBlZGl0b3JfZnVsbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFsgXCJoaWRkZW5cIiBdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJjb2wtbWQtNlwiOyBcImhpZGRlbi14c1wiOyBcImhpZGRlbi1zbVwiOyBcImZsZXgtY29udGVudFwiIF0pKSk7XG4gICAgICBdXG4gICAgW1xuICAgICAgVWlfY29tbW9uLm5hdnRhYnMgXCJzdWJuYXZ0YWJcIlxuICAgICAgICBbXG4gICAgICAgICAgXCJjb250YWN0X21hcFwiLCBOb25lLCBTdWJ0YWJfY29udGFjdF9tYXAubmF2bGkgKCk7XG4gICAgICAgICAgXCJpbmZsdWVuY2VzXCIsIE5vbmUsIFN1YnRhYl9pbmZsdWVuY2VzLm5hdmxpICgpO1xuICAgICAgICAgIFwiY29uc3RyYWludHNcIiwgTm9uZSwgU3VidGFiX2NvbnN0cmFpbnRzLm5hdmxpICgpO1xuICAgICAgICAgIFwicG9seW1lcnNcIiwgTm9uZSwgU3VidGFiX3BvbHltZXJzLm5hdmxpICgpO1xuICAgICAgICBdO1xuICAgICAgVWlfY29tbW9uLm5hdmNvbnRlbnQgfmlkOnJpZ2h0c3VicGFuZWxfaWQgW11cbiAgICAgICAgW1xuICAgICAgICAgIFwiY29udGFjdF9tYXBcIiwgW10sIFN1YnRhYl9jb250YWN0X21hcC5jb250ZW50ICgpO1xuICAgICAgICAgIFwiaW5mbHVlbmNlc1wiLCBbXSwgU3VidGFiX2luZmx1ZW5jZXMuY29udGVudCAoKTtcbiAgICAgICAgICBcImNvbnN0cmFpbnRzXCIsIFtdLCBTdWJ0YWJfY29uc3RyYWludHMuY29udGVudCAoKTtcbiAgICAgICAgICBcInBvbHltZXJzXCIsIFtdLCBTdWJ0YWJfcG9seW1lcnMuY29udGVudCAoKTtcbiAgICAgICAgXTtcbiAgICBdXG5cbigqKiBbY2hpbGRzX2hpZGUgYl0gdHJpZ2dlcnMgY2hhbmdlIHRoZSBzdGF0ZSBvZiBjaGlsZCB0YWJzIHRvIGhpZGUgaWYgYiBpcyBUcnVlLCBvciBlbHNlIHRvIHNob3cgKilcbmxldCBjaGlsZHNfaGlkZSAoYiA6IGJvb2wpIDogdW5pdCA9XG4gIGlmIGIgdGhlbiAoXG4gICAgbGV0ICgpID0gU3VidGFiX2NvbnRhY3RfbWFwLnBhcmVudF9oaWRlICgpIGluXG4gICAgbGV0ICgpID0gU3VidGFiX2luZmx1ZW5jZXMucGFyZW50X2hpZGUgKCkgaW5cbiAgICBsZXQgKCkgPSBTdWJ0YWJfY29uc3RyYWludHMucGFyZW50X2hpZGUgKCkgaW5cbiAgICBTdWJ0YWJfcG9seW1lcnMucGFyZW50X2hpZGUgKClcbiAgKSBlbHNlIChcbiAgICBsZXQgKCkgPSBTdWJ0YWJfY29udGFjdF9tYXAucGFyZW50X3Nob3duICgpIGluXG4gICAgbGV0ICgpID0gU3VidGFiX2luZmx1ZW5jZXMucGFyZW50X3Nob3duICgpIGluXG4gICAgbGV0ICgpID0gU3VidGFiX2NvbnN0cmFpbnRzLnBhcmVudF9zaG93biAoKSBpblxuICAgIFN1YnRhYl9wb2x5bWVycy5wYXJlbnRfc2hvd24gKClcbiAgKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCBFZGl0b3IuZWRpdG9yX2Z1bGwgKGZ1biBlZGl0b3JfZnVsbCAtPlxuICAgICAgICAgICAgICAgICAoKiBjaGlsZCBoaWRpbmcgc2V0IGhlcmUgdG8gYXZvaWQgXCJnY1wiICopXG4gICAgICAgICAgICAgICAgIGxldCAoKSA9IGNoaWxkc19oaWRlIGVkaXRvcl9mdWxsIGluXG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgICAoaWYgZWRpdG9yX2Z1bGwgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJjb2wtbWQtMTJcIjsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTZcIjsgXCJmbGV4LWNvbnRlbnRcIiBdKSkpO1xuICAgICAgICBdXG4gICAgICBbIEVkaXRvci5jb250ZW50ICgpIF07XG4gICAgcmlnaHRzdWJwYW5lbCAoKTtcbiAgXVxuXG5sZXQgaW5pdF9kZWFkX3J1bGVzICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX3J1bGVcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXNcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9kZWFkX3J1bGVzXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBydWxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9oaWRkZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlYWQgcnVsZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAnXCIgXiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgXiBcIidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBydWxlLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGluaXRfZGVhZF9hZ2VudHMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfYWdlbnRcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfYWdlbnRzXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfZGVhZF9hZ2VudHNcbiAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB3YXJuaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGFnZW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlYWQgYWdlbnQgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludCBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHJhbmdlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5XYXJuaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9IFNvbWUgcmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X3Bvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiB3YXJuaW5ncylcbiAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+IG1oKVxuICAgICAgICAgICAgICAgPnw9IEFwaV9jb21tb24uZXJyX3Jlc3VsdF9vZl9tc2dzID9yZXN1bHRfY29kZTpOb25lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSkpXG4gICAgU3RhdGVfcHJvamVjdC5tb2RlbFxuXG5sZXQgaW5pdF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfcnVsZVwiXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyAocnVsZSwgY29udGV4dF9saXN0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaGlkZGVuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogaGludDogcmV2ZXJzaWJsZSBydWxlIGFyZSBhbHdheXMgd2Vha2x5IHJldmVyc2libGUgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBsdXJhbCwgc2tpcCwgdGFiID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbnRleHRfbGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gXCJcIiwgXCJcIiwgXCIgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+IFwic1wiLCBcIlxcblwiLCBcIlxcdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSdWxlICVzIG1heSBpbmR1Y2Ugbm9uIHdlYWtseSByZXZlcnNpYmxlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHMgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0JXM6JXMlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICdcIiBeIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCBeIFwiJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9hc3QgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuUHVibGljX2RhdGEucnVsZV9hc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludCBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbCBza2lwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZm10IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIgc2tpcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmbXQgKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXMlcyAtPiAlcyBcIiB0YWIgYSBiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB0byBkbywgYWRkIHRoZSBwb3RlbnRpYWwgY29udGV4dHMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBydWxlLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLmVycl9yZXN1bHRfb2ZfbXNncyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGRvbnRfZ2NfbWUgPSByZWYgW11cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IEVkaXRvci5vbmxvYWQgKCkgaW5cbiAgZG9udF9nY19tZSA6PSBpbml0X2RlYWRfcnVsZXMgKCkgOjogIWRvbnRfZ2NfbWU7XG4gIGRvbnRfZ2NfbWUgOj0gaW5pdF9kZWFkX2FnZW50cyAoKSA6OiAhZG9udF9nY19tZTtcbiAgZG9udF9nY19tZSA6PSBpbml0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyAoKSA6OiAhZG9udF9nY19tZTtcbiAgbGV0ICgpID0gU3VidGFiX2NvbnRhY3RfbWFwLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBTdWJ0YWJfaW5mbHVlbmNlcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gU3VidGFiX2NvbnN0cmFpbnRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBTdWJ0YWJfcG9seW1lcnMub25sb2FkICgpIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZlZGl0b3JcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+IGNoaWxkc19oaWRlIHRydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZlZGl0b3JcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPiBjaGlsZHNfaGlkZSBmYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IEVkaXRvci5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBTdWJ0YWJfY29udGFjdF9tYXAub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gU3VidGFiX2luZmx1ZW5jZXMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gU3VidGFiX2NvbnN0cmFpbnRzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFN1YnRhYl9wb2x5bWVycy5vbnJlc2l6ZSAoKSBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBkaW5faWQsIHNldF9kaW5faWQgPSBSZWFjdC5TLmNyZWF0ZSBcIlwiXG5cbmxldCBkaW5fbGlzdCA6XG4gICAgWzwgSHRtbF90eXBlcy5zZWxlY3RfY29udGVudF9mdW4gPiBgT3B0aW9uIF0gSHRtbC5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnQgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgIChMd3RfcmVhY3QuRS5tYXBfc1xuICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAoUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICB+b2s6KGZ1biBkaW5faWRzIC0+XG4gICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAtPiBIdG1sLm9wdGlvbiB+YTpbIEh0bWwuYV92YWx1ZSBpZCBdIChIdG1sLnR4dCBpZCkpXG4gICAgICAgICAgICAgICAgICAgIGRpbl9pZHNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgb3V0KVxuICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZGluKVxuICAgICAgICAgICAgICAoKSkpXG4gICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKSlcblxubGV0IGRpbl9zZWxlY3QgOiBbPiBIdG1sX3R5cGVzLnNlbGVjdCBdIEh0bWwuZWx0ID1cbiAgVHl4bWxfanMuUi5IdG1sNS5zZWxlY3QgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF0gXSBkaW5fbGlzdFxuXG5sZXQgZGluX2RhdGEgOiBEYXRhLmRpbiBvcHRpb24gUmVhY3Quc2lnbmFsID1cbiAgUmVhY3QuUy5iaW5kIChSZWFjdGl2ZURhdGEuUkxpc3Quc2lnbmFsIGRpbl9saXN0KSAoZnVuY3Rpb25cbiAgICB8IFtdIC0+IFJlYWN0LlMuY29uc3QgTm9uZVxuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBzZXRfZGluX2lkIChKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy52YWx1ZSlcbiAgICAgIGluXG4gICAgICBSZWFjdC5TLmJpbmQgZGluX2lkIChmdW4gZGluX2lkIC0+XG4gICAgICAgICAgUmVhY3QuUy5ob2xkIE5vbmVcbiAgICAgICAgICAgIChMd3RfcmVhY3QuRS5mcm9tIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5mb2xkIH5vazooZnVuIHggLT4geCkgfmVycm9yOihmdW4gXyAtPiBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBPcHRpb24uc29tZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKVxuXG5sZXQgZGluX2hlYWRlciA6IEh0bWxfdHlwZXMudHIgSHRtbC5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnQgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgfCBTb21lIGRpbiAtPlxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgICAgKEh0bWwudGggWyBIdG1sLnR4dCBcImFmZmVjdHNcIiBdXG4gICAgICAgICAgICAgICA6OiBBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gciBhY2MgLT4gSHRtbC50aCBbIEh0bWwudHh0IHIgXSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgIGRpbi5EYXRhLmRpbl9ydWxlcyBbXSk7XG4gICAgICAgICAgIF0pXG4gICAgICAgZGluX2RhdGEpXG5cbmxldCBkaW5fdGFibGUgOiBIdG1sX3R5cGVzLnRib2R5IEh0bWwuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50ID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgIHwgU29tZSBkaW4gLT5cbiAgICAgICAgICAgbGV0IG9wZW4gRGF0YSBpblxuICAgICAgICAgICBsZXQgYWxsID0gZGluLmRpbl9kYXRhLmRpbl9raW5kID0gUHJpbWl0aXZlcy5QUk9CQUJJTElUWSBpblxuICAgICAgICAgICBsZXQgYm9keSA9XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9yaWdodGlcbiAgICAgICAgICAgICAgIChmdW4gaSBkYXRhIGFjYyAtPlxuICAgICAgICAgICAgICAgICBpZiBhbGwgfHwgZGluLmRpbl9kYXRhLmRpbl9oaXRzLihpKSA+IDAgdGhlblxuICAgICAgICAgICAgICAgICAgIEh0bWwudHJcbiAgICAgICAgICAgICAgICAgICAgIChIdG1sLnRoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpbi5kaW5fcnVsZXMuKGkpIF4gXCIgKFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IGRpbi5kaW5fZGF0YS5kaW5faGl0cy4oaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIFwiIGhpdHMpXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOjogQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHYgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50ZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB2ID4gMC4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcInN1Y2Nlc3NcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiB2IDwgMC4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImluZm9cIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IChzdHJpbmdfb2ZfZmxvYXQgdikgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBbXSlcbiAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgIGRpbi5kaW5fZGF0YS5kaW5fZmx1eHMgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgWyBIdG1sLnRib2R5IGJvZHkgXSlcbiAgICAgICBkaW5fZGF0YSlcblxubGV0IGRpbl90YWJsZV9pZCA9IFwiZGluLXRhYmxlLWlkXCJcblxubGV0IGRpbiA6IFs+IEh0bWxfdHlwZXMudGFibGV4IF0gSHRtbC5lbHQgPVxuICBsZXQgdGhlYWQgPSBSZWFjdC5TLmNvbnN0IChUeXhtbF9qcy5SLkh0bWw1LnRoZWFkIGRpbl9oZWFkZXIpIGluXG4gIFR5eG1sX2pzLlIuSHRtbDUudGFibGV4XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwidGFibGVcIjsgXCJ0YWJsZS1jb25kZW5zZWRcIjsgXCJ0YWJsZS1ib3JkZXJlZFwiIF07XG4gICAgICAgIEh0bWwuYV9pZCBkaW5fdGFibGVfaWQ7XG4gICAgICBdXG4gICAgfnRoZWFkIGRpbl90YWJsZVxuXG5sZXQgZXhwb3J0X2N1cnJlbnRfZGluICh0b19zdHJpbmcgOiBEYXRhLmRpbiAtPiBzdHJpbmcpIChtaW1lIDogc3RyaW5nKVxuICAgIChmaWxlbmFtZSA6IHN0cmluZykgOiB1bml0ID1cbiAgbGV0IGRpbl9pZCA9IEpzLnRvX3N0cmluZyAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLnZhbHVlIGluXG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9kaW4gZGluX2lkXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF93aXRoX2x3dCB+b2s6KGZ1biBkaW4gLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKHRvX3N0cmluZyBkaW4pIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZSB+ZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGV4cG9ydF9jb25maWd1cmF0aW9uIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBcImRpbi1leHBvcnRcIjtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICBleHBvcnRfY3VycmVudF9kaW4gKERhdGEuc3RyaW5nX29mX2RpbiA/bGVuOk5vbmUpIFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImRvdFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImRvdFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIGV4cG9ydF9jdXJyZW50X2RpblxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgKERhdGEucHJpbnRfZG90X2RpbiA/dXVpZDpOb25lKSlcbiAgICAgICAgICAgICAgXCJ0ZXh0L3ZuZC5ncmFwaHZpelwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImh0bWxcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJodG1sXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgZXhwb3J0X2N1cnJlbnRfZGluXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiBEYXRhLnByaW50X2h0bWxfZGluKVxuICAgICAgICAgICAgICBcInRleHQvaHRtbFwiO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgfVxuXG5sZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgbGlzdCA9XG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXhfY29udGVudFwiOyBcInRhYmxlLXJlc3BvbnNpdmVcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5mb3JtIFsgZGluX3NlbGVjdCBdO1xuICAgICAgICBkaW47XG4gICAgICAgIFdpZGdldF9leHBvcnQuY29udGVudCBleHBvcnRfY29uZmlndXJhdGlvbjtcbiAgICAgIF07XG4gIF1cblxubGV0IG5hdmxpICgpIDogWz4gYFBDREFUQSB8IGBTcGFuIF0gSHRtbC5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnQgPVxuICBVaV90cmFja19zaW1fc3RhdHVzLmJhZGdlIChmdW4gc3RhdGUgLT5cbiAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgc3RhdGUgLT5cbiAgICAgICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9kaW5zKVxuXG5sZXQgb25sb2FkICgpIDogJ2EgPVxuICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLm9uY2hhbmdlXG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgc2V0X2Rpbl9pZFxuICAgICAgICAgICAoKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy52YWx1ZSB8PiBKcy50b19zdHJpbmcpO1xuICAgICAgICAgSnMuX2ZhbHNlKTtcbiAgV2lkZ2V0X2V4cG9ydC5vbmxvYWQgZXhwb3J0X2NvbmZpZ3VyYXRpb247XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZESU5cIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICBDb21tb24uanF1ZXJ5X29uIFwiI25hdkRJTlwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDI0IENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbJWh0bWxcbiAgICB7fFxuPGgyPlRoZSBLYXBwYSBMYW5ndWFnZTwvaDI+XG48cD5Db3B5cmlnaHQgMjAxMC0yMDI0IENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGPHA+XG48cD5LYXBwYSBMYW5ndWFnZSBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWxcIj5HTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzPC9hPi5cbiBTb3VyY2UgY29kZSBpcyBwdWJsaXNoZWQgb24gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9LYXBwYS1EZXYvS2FTaW1cIj5odHRwczovL2dpdGh1Yi5jb20vS2FwcGEtRGV2L0thU2ltPC9hPi48L3A+XG5cbjxwPlRoaXMgdXNlciBpbnRlcmZhY2Ugd2FzIGRldmVsb3BlZCBpbiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZm9udGFuYS5obXMuaGFydmFyZC5lZHVcIj5Gb250YW5hIExhYjwvYT4gdW5kZXIgREFSUEEgZ3JhbnQgVzkxMU5GLTE0LTEtMDM2Ny4gVmlzdWFsaXphdGlvbnMgd2VyZSBkZXZlbG9wZWQgaW4gdGhlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2NyZWF0aXZlY29kaW5nLnNvZS51Y3NjLmVkdS9uZXdzLnBocFwiPkNyZWF0aXZlIENvZGluZyBMYWI8L2E+IG9mIEFuZ3VzIEZvcmJlczwvcD5cblxuPHA+UmVmZXJlbmNlIG1hbnVhbCBpcyBvbmxpbmUgYXQgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3LmthcHBhbGFuZ3VhZ2Uub3JnXCI+aHR0cHM6Ly93d3cua2FwcGFsYW5ndWFnZS5vcmc8L2E+LjwvcD5cblxuPHVsPlxuPGxpPldyaXR0ZW4gaW4gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9vY2FtbC5vcmdcIj5cbiAgPCEtLTxpbWcgc3JjPVwiaHR0cDovL29jYW1sLm9yZy9sb2dvL0NvbG91ci9TVkcvY29sb3VyLWxvZ28uc3ZnXCJcbiAgICAgICBhbHQ9XCItLT5PQ2FtbDwhLS1cIlxuICAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lOyB3aWR0aDogMTUwcHg7XCIgLz4gLS0+XG48L2E+LiBDb21waWxlZCBieSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL29jc2lnZW4ub3JnL2pzX29mX29jYW1sL1wiPmpzX29mX29jYW1sPC9hPi48L2xpPlxuPGxpPlRleHQgZWRpdG9yIHVzZWQgaXMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9jb2RlbWlycm9yLm5ldFwiPkNvZGVNaXJyb3I8L2E+LiBJdCBjb21lcyB3aXRoIGEgbG90IG9mIGZlYXR1cmVzLiBDaGVjayBvdXQgaXRzIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vY29kZW1pcnJvci5uZXQvZG9jL21hbnVhbC5odG1sI2NvbW1hbmRzXCI+bWFudWFsPC9hPi48L2xpPlxuPGxpPlZpc3VhbGl6YXRpb24gcmVsaWVzIG9uIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2QzanMub3JnXCI+ZDM8L2E+LjwvbGk+XG48bGk+TGF5b3V0IHVzZXMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9nZXRib290c3RyYXAuY29tXCI+Ym9vdHN0cmFwPC9hPiBhbmQgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vanF1ZXJ5dWkuY29tXCI+alF1ZXJ5PC9hPi48L2xpPlxuPC91bD5cblxuPGgzPk5vbWluYWwgY29udHJpYnV0aW9uPC9oMz5cbjxkbCBjbGFzcz1cImRsLWhvcml6b250YWxcIj48ZHQ+UGllcnJlIEJvdXRpbGxpZXI8L2R0PjxkZD5HZW5lcmFsIGRlc2lnbiBhbmQgbWFpbnRlbmFuY2UsIHByb3RvY29sczwvZGQ+PGR0PlhpbmcgTGk8L2R0PjxkZD5PdXRwdXRzIHZpc3VhbGl6YXRpb25zLCBHZW5lcmFsIGxheW91dDwvZGQ+PGR0Pk11dGFhbWJhIE1hYXNoYTwvZHQ+PGRkPlRyYW5zcGFyZW50IG11bHRpIGJhY2tlbmQgYXJjaGl0ZWN0dXJlLCBwcm90b2NvbHMsIE91dHB1dCB2aXN1YWxpemF0aW9ucywgR2VuZXJhbCBsYXlvdXQ8L2RkPjxkdD5BbnRvaW5lIFBvdWlsbGU8L2R0PjxkZD5NYWludGVuYW5jZSBhbmQgaW1wcm92ZW1lbnRzPC9kZD48L2RsPlxufH1dXG5cbmxldCBvbmxvYWQgKCkgPSAoKVxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBuYXZ0YWJzX2lkID0gXCJuYXZ0YWJzXCJcblxubGV0IG5hdnRhYnMgKCkgPVxuICBsZXQgc3RvcnlfY2xhc3MgPVxuICAgIFNvbWVcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgIGlmIHMuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2UgdGhlblxuICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBbIFwiZGlzYWJsZWRcIiBdKVxuICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbClcbiAgaW5cbiAgVHl4bWxfanMuVG9fZG9tLm9mX3VsXG4gIEBAIFVpX2NvbW1vbi5uYXZ0YWJzIG5hdnRhYnNfaWRcbiAgICAgICBbXG4gICAgICAgICBcImVkaXRvclwiLCBOb25lLCBUYWJfZWRpdG9yLm5hdmxpICgpO1xuICAgICAgICAgXCJsb2dcIiwgTm9uZSwgVGFiX2xvZy5uYXZsaSAoKTtcbiAgICAgICAgIFwicGxvdFwiLCBOb25lLCBUYWJfcGxvdC5uYXZsaSAoKTtcbiAgICAgICAgIFwiRElOXCIsIE5vbmUsIFRhYl9kaW4ubmF2bGkgKCk7XG4gICAgICAgICBcInNuYXBzaG90XCIsIE5vbmUsIFRhYl9zbmFwc2hvdC5uYXZsaSAoKTtcbiAgICAgICAgIFwib3V0cHV0c1wiLCBOb25lLCBUYWJfb3V0cHV0cy5uYXZsaSAoKTtcbiAgICAgICAgIFwic3Rvcmllc1wiLCBzdG9yeV9jbGFzcywgVGFiX3N0b3JpZXMubmF2bGkgKCk7XG4gICAgICAgICBcImFib3V0XCIsIE5vbmUsIFRhYl9hYm91dC5uYXZsaSAoKTtcbiAgICAgICBdXG5cbmxldCBuYXZjb250ZW50c19pZCA6IHN0cmluZyA9IFwibmF2Y29udGVudHNcIlxuXG5sZXQgbmF2Y29udGVudHMgKCkgPVxuICBUeXhtbF9qcy5Ub19kb20ub2ZfZGl2XG4gIEBAIFVpX2NvbW1vbi5uYXZjb250ZW50IH5pZDpuYXZjb250ZW50c19pZCBbXVxuICAgICAgIFtcbiAgICAgICAgIFwiZWRpdG9yXCIsIFsgXCJyb3dcIiBdLCBUYWJfZWRpdG9yLmNvbnRlbnQgKCk7XG4gICAgICAgICBcImxvZ1wiLCBbXSwgVGFiX2xvZy5jb250ZW50ICgpO1xuICAgICAgICAgXCJwbG90XCIsIFtdLCBUYWJfcGxvdC5jb250ZW50ICgpO1xuICAgICAgICAgXCJESU5cIiwgW10sIFRhYl9kaW4uY29udGVudCAoKTtcbiAgICAgICAgIFwic25hcHNob3RcIiwgW10sIFRhYl9zbmFwc2hvdC5jb250ZW50ICgpO1xuICAgICAgICAgXCJvdXRwdXRzXCIsIFtdLCBUYWJfb3V0cHV0cy5jb250ZW50ICgpO1xuICAgICAgICAgXCJzdG9yaWVzXCIsIFsgXCJyb3dcIiBdLCBUYWJfc3Rvcmllcy5jb250ZW50ICgpO1xuICAgICAgICAgXCJhYm91dFwiLCBbIFwicGFuZWwtc2Nyb2xsXCIgXSwgVGFiX2Fib3V0LmNvbnRlbnQgKCk7XG4gICAgICAgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gVGFiX2VkaXRvci5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3Bsb3Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9kaW4ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9zbmFwc2hvdC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX291dHB1dHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9zdG9yaWVzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfYWJvdXQub25sb2FkICgpIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA9XG4gIGxldCAoKSA9IFRhYl9lZGl0b3Iub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfcGxvdC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfZGluLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9zbmFwc2hvdC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfb3V0cHV0cy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfc3Rvcmllcy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfYWJvdXQub25yZXNpemUgKCkgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCByZWZyZXNoIHJlc3VsdF9iZWZvcmUgPVxuICBsZXQgbHd0X3Jlc3VsdF9zdGF0ZV9maWxlX3N5bmMgPSBTdGF0ZV9maWxlLnN5bmMgfnJlc2V0OnRydWUgKCkgaW5cbiAgbGV0IGx3dF9yZXN1bHRfc2ltdWxhdGlvbl9yZWZyZXNoID0gU3RhdGVfc2ltdWxhdGlvbi5yZWZyZXNoICgpIGluXG4gIGx3dF9yZXN1bHRfc3RhdGVfZmlsZV9zeW5jID4+PSBmdW4gcmVzdWx0X3N0YXRlX2ZpbGVfc3luYyAtPlxuICBsd3RfcmVzdWx0X3NpbXVsYXRpb25fcmVmcmVzaCA+Pj0gZnVuIHJlc3VsdF9zaW11bGF0aW9uX3JlZnJlc2ggLT5cbiAgTHd0LnJldHVyblxuICAgIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lXG4gICAgICAgWyByZXN1bHRfYmVmb3JlOyByZXN1bHRfc3RhdGVfZmlsZV9zeW5jOyByZXN1bHRfc2ltdWxhdGlvbl9yZWZyZXNoIF0pXG5cbmxldCBjcmVhdGVfcHJvamVjdCAocHJvamVjdF9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPj49IHJlZnJlc2gpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X3Byb2plY3QgKHByb2plY3RfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfcHJvamVjdC5zZXRfcHJvamVjdCBwcm9qZWN0X2lkID4+PSByZWZyZXNoKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGNsb3NlX3Byb2plY3QgcHJvamVjdF9pZCA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3Byb2plY3QucmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA+Pj0gcmVmcmVzaClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfbWFuYWdlciAocnVudGltZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0XG4gICAgICAgICAgIH5vazooZnVuICgpIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgKFN0YXRlX3J1bnRpbWUuY3JlYXRlX3NwZWMgfmxvYWQ6dHJ1ZSBydW50aW1lX2lkKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWQgPSBcInNpbXVsYXRpb25fc2VlZF9pbnB1dFwiXG5sZXQgcHJlZmVyZW5jZXNfbW9kYWxfaWQgPSBcInByZWZlcmVuY2VzX21vZGFsXCJcbmxldCBwcmVmZXJlbmNlc19idXR0b24gPSBIdG1sLmEgWyBIdG1sLnR4dCBcIlByZWZlcmVuY2VzXCIgXVxuXG5sZXQgb3B0aW9uX3NlZWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgb3B0aW9uX3dpdGh0cmFjZSA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG9wdGlvbl93aXRoZGVhZHJ1bGVzID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgb3B0aW9uX3dpdGhpcnJldmVyc2libGUgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcblxubGV0IGRlY3JlYXNlX2ZvbnQgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcImJ0blwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIi1cIiBdXG5cbmxldCBpbmNyZWFzZV9mb250ID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJidG4tbGdcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCIrXCIgXVxuXG5sZXQgZHJvcGRvd24gKG1vZGVsIDogU3RhdGVfcnVudGltZS5tb2RlbCkgPVxuICBsZXQgY3VycmVudF9pZCA9IFN0YXRlX3J1bnRpbWUuc3BlY19pZCBtb2RlbC5TdGF0ZV9ydW50aW1lLm1vZGVsX2N1cnJlbnQgaW5cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChzcGVjIDogU3RhdGVfcnVudGltZS5zcGVjKSAtPlxuICAgICAgbGV0IHNwZWNfaWQgPSBTdGF0ZV9ydW50aW1lLnNwZWNfaWQgc3BlYyBpblxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKEh0bWwuYV92YWx1ZSBzcGVjX2lkXG4gICAgICAgICAgOjpcbiAgICAgICAgICAoaWYgY3VycmVudF9pZCA9IHNwZWNfaWQgdGhlblxuICAgICAgICAgICAgIFsgSHRtbC5hX3NlbGVjdGVkICgpIF1cbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFtdKSlcbiAgICAgICAgKEh0bWwudHh0IChTdGF0ZV9ydW50aW1lLnNwZWNfbGFiZWwgc3BlYykpKVxuICAgIG1vZGVsLlN0YXRlX3J1bnRpbWUubW9kZWxfcnVudGltZXNcblxubGV0IGJhY2tlbmRfb3B0aW9ucyA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLm1hcCAoZnVuIGxpc3RfdCAtPiBkcm9wZG93biBsaXN0X3QpIFN0YXRlX3J1bnRpbWUubW9kZWwpXG5cbmxldCBiYWNrZW5kX3NlbGVjdCA9XG4gIFR5eG1sX2pzLlIuSHRtbC5zZWxlY3QgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF0gXSBiYWNrZW5kX29wdGlvbnNcblxubGV0JWh0bWwgYm9kaWVzID1cbiAge3xcbiAgICA8aDQ+QXBwbGljYXRpb248L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTJcIj5Gb250IHNpemU8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBkZWNyZWFzZV9mb250OyBIdG1sLnR4dCBcIiAgXCI7IGluY3JlYXNlX2ZvbnQgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkJhY2tlbmQgZm9yIG5ldyBwcm9qZWN0czwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGJhY2tlbmRfc2VsZWN0IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5Qcm9qZWN0PC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWRcbiAgICB7fFwiPlNlZWQ8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBvcHRpb25fc2VlZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8aDQ+U3RvcmllczwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25fd2l0aHRyYWNlIF1cbiAgICB7fFN0b3JlIHRyYWNlXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8aDQ+U3RhdGljIGFuYWx5c2VzPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoZGVhZHJ1bGVzIF1cbiAgICB7fFNob3cgZGVhZCBydWxlc1xuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25fd2l0aGRlYWRhZ2VudHMgXVxuICAgIHt8U2hvdyBkZWFkIGFnZW50c1xuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSBdXG4gICAge3xTaG93IG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9uc1xuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG58fVxuXG5sZXQgc2V0X2J1dHRvbiA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdDsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tcHJpbWFyeVwiIF0gXVxuICAgIFsgSHRtbC50eHQgXCJTZXRcIiBdXG5cbmxldCBzYXZlX2J1dHRvbiA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF0gXVxuICAgIFsgSHRtbC50eHQgXCJTYXZlIGFzIGRlZmF1bHRcIiBdXG5cbmxldCBtb2RhbCA9XG4gIGxldCBoZWFkID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWhlYWRlclwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjbG9zZVwiIF07XG4gICAgICAgICAgICAgIEh0bWwuYV91c2VyX2RhdGEgXCJkaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIFsgSHRtbC5lbnRpdHkgXCJ0aW1lc1wiIF07XG4gICAgICAgIEh0bWwuaDQgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLXRpdGxlXCIgXSBdIFsgSHRtbC50eHQgXCJQcmVmZXJlbmNlc1wiIF07XG4gICAgICBdXG4gIGluXG4gIGxldCBib2R5ID0gSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWJvZHlcIiBdIF0gYm9kaWVzIGluXG4gIGxldCBmb290ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWZvb3RlclwiIF0gXVxuICAgICAgW1xuICAgICAgICBzZXRfYnV0dG9uO1xuICAgICAgICBzYXZlX2J1dHRvbjtcbiAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgICAgICBIdG1sLmFfdXNlcl9kYXRhIFwiZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbIEh0bWwudHh0IFwiQ2xvc2VcIiBdO1xuICAgICAgXVxuICBpblxuICBIdG1sLmZvcm1cbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtY29udGVudFwiOyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgIFsgaGVhZDsgYm9keTsgZm9vdCBdXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIHByZWZlcmVuY2VzX2J1dHRvbjtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsXCI7IFwiZmFkZVwiIF07XG4gICAgICAgICAgSHRtbC5hX2lkIHByZWZlcmVuY2VzX21vZGFsX2lkO1xuICAgICAgICAgIEh0bWwuYV9yb2xlIFsgXCJkaWFsb2dcIiBdO1xuICAgICAgICAgIEh0bWwuYV90YWJpbmRleCAoLTEpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWRpYWxvZ1wiIF07IEh0bWwuYV9yb2xlIFsgXCJkb2N1bWVudFwiIF0gXVxuICAgICAgICAgIFsgbW9kYWwgXTtcbiAgICAgIF07XG4gIF1cblxubGV0IHNldF9hY3Rpb24gKCkgPVxuICBsZXQgaW5wdXQgPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3NlZWRfaW5wdXQgaW5cbiAgbGV0IGlucHV0X3ZhbHVlIDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGlucHV0IyMudmFsdWUgaW5cbiAgbGV0IG1vZGVsX3NlZWQgPVxuICAgIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIGlucHV0X3ZhbHVlKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4gIGluXG4gIFN0YXRlX3Byb2plY3Quc2V0X3NlZWQgbW9kZWxfc2VlZDtcbiAgU3RhdGVfcHJvamVjdC5zZXRfc3RvcmVfdHJhY2VcbiAgICAoSnMudG9fYm9vbCAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRodHJhY2UpIyMuY2hlY2tlZCk7XG4gIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9ydWxlc1xuICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMpIyMuY2hlY2tlZCk7XG4gIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9hZ2VudHNcbiAgICAoSnMudG9fYm9vbCAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoZGVhZGFnZW50cykjIy5jaGVja2VkKTtcbiAgU3RhdGVfcHJvamVjdC5zZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAoSnMudG9fYm9vbCAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlKSMjLmNoZWNrZWQpO1xuXG4gIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuc2V0X21hbmFnZXJcbiAgICAoSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGJhY2tlbmRfc2VsZWN0KSMjLnZhbHVlKVxuXG5sZXQgc2V0X2FuZF9zYXZlX2FjdGlvbiAoKSA9XG4gIHNldF9hY3Rpb24gKCk7XG4gIFN0YXRlX3ByZWZlcmVuY2VzLnNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCk7XG4gIFN0YXRlX3Byb2plY3Quc2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCAoKVxuXG5sZXQgb25sb2FkICgpID1cbiAgKFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIG1vZGFsKSMjLm9uc3VibWl0XG4gIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biAoXyA6IF8gSnMudCkgLT5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJlZmVyZW5jZXNfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgKCkgPSBzZXRfYWN0aW9uICgpIGluXG4gICAgICAgICBKcy5fZmFsc2UpO1xuICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBzYXZlX2J1dHRvbikjIy5vbmNsaWNrXG4gIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICBsZXQgKCkgPSBzZXRfYW5kX3NhdmVfYWN0aW9uICgpIGluXG4gICAgICAgICBKcy5fZmFsc2UpO1xuICAoVHl4bWxfanMuVG9fZG9tLm9mX2EgcHJlZmVyZW5jZXNfYnV0dG9uKSMjLm9uY2xpY2tcbiAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgIGxldCBzcCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCBpblxuICAgICAgICAgbGV0IGlucHV0ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl9zZWVkX2lucHV0IGluXG4gICAgICAgICBpbnB1dCMjLnZhbHVlIDo9XG4gICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgIChtYXRjaCBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zZWVkIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgIHwgU29tZSBtb2RlbF9zZWVkIC0+IHN0cmluZ19vZl9pbnQgbW9kZWxfc2VlZCk7XG5cbiAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGh0cmFjZSkjIy5jaGVja2VkXG4gICAgICAgICA6PSBKcy5ib29sIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlO1xuICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRhZ2VudHMpIyMuY2hlY2tlZFxuICAgICAgICAgOj0gSnMuYm9vbFxuICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfYWdlbnRzO1xuICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRydWxlcykjIy5jaGVja2VkXG4gICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnNob3dfZGVhZF9ydWxlcztcbiAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhpcnJldmVyc2libGUpIyMuY2hlY2tlZFxuICAgICAgICAgOj0gSnMuYm9vbFxuICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucztcblxuICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWVcbiAgICAgICAgIDo9IEpzLnN0cmluZ1xuICAgICAgICAgICAgICAoU3RhdGVfcnVudGltZS5zcGVjX2lkXG4gICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3J1bnRpbWUubW9kZWwpLlN0YXRlX3J1bnRpbWUubW9kZWxfY3VycmVudCk7XG5cbiAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJlZmVyZW5jZXNfbW9kYWxfaWQpIH5hY3Rpb246XCJzaG93XCI7XG5cbiAgICAgICAgIEpzLl9mYWxzZSk7XG5cbiAgbGV0ICgpID0gU3RhdGVfcHJlZmVyZW5jZXMudXBkYXRlRm9udFNpemUgfmRlbHRhOjAuIGluXG4gIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGluY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgbGV0ICgpID0gU3RhdGVfcHJlZmVyZW5jZXMudXBkYXRlRm9udFNpemUgfmRlbHRhOjAuMiBpblxuICAgICAgICAgSnMuX2ZhbHNlKTtcbiAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gZGVjcmVhc2VfZm9udCkjIy5vbmNsaWNrXG4gIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICBsZXQgKCkgPSBTdGF0ZV9wcmVmZXJlbmNlcy51cGRhdGVGb250U2l6ZSB+ZGVsdGE6KC0wLjIpIGluXG4gICAgICAgICBKcy5fZmFsc2UpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBwcm9qZWN0X2lkX21vZGFsX2lkID0gXCJtZW51LWVkaXRvci1wcm9qZWN0LWlkLW1vZGFsXCJcbmxldCBwcm9qZWN0c190YWJzX2lkID0gXCJwcm9qZWN0c190YWJzXCJcblxubGV0IHByb2plY3RfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcInByb2plY3QgbmV3XCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBsaV9uZXcgPSBIdG1sLmxpIFsgSHRtbC5hIFsgSHRtbC5jZGF0YSBcIk5ldyBwcm9qZWN0XCIgXSBdXG5sZXQgbGlfcHJlZnMgPSBIdG1sLmxpIChQYW5lbF9wcmVmZXJlbmNlc19tb2RhbC5jb250ZW50ICgpKVxubGV0IHByb2plY3RfaWRfaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHByb2plY3RfaWRfaW5wdXRcblxubGV0IGNvbnRlbnQgKCkgPVxuICBIdG1sLmRpdlxuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbDUudWxcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX2lkIHByb2plY3RzX3RhYnNfaWQ7XG4gICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCI7IFwibmF2LWp1c3RpZmllZFwiIF07XG4gICAgICAgICAgXVxuICAgICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlfY2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGN1cnJlbnRfcHJvamVjdF9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcHJvamVjdF9pZCA9IG1vZGVsX3Byb2plY3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJhY3RpdmVcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Bhbl9jbG9zZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHNwYW5fY2xvc2UpIyMub25jbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLmNsb3NlX3Byb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gRG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uIGV2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2xhc3NlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImdseXBoaWNvblwiOyBcImdseXBoaWNvbi1yZWZyZXNoXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiZ2x5cGhpY29uXCI7IFwiZ2x5cGhpY29uLW9rXCIgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBjbGFzc2VzIF0gW11cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhX3Byb2plY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5jZGF0YSAoXCIgXCIgXiBtb2RlbF9wcm9qZWN0X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuX2Nsb3NlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9hIGFfcHJvamVjdCkjIy5vbmNsaWNrXG4gICAgICAgICAgICAgICAgICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5zZXRfcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwubGkgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3MgXSBbIGFfcHJvamVjdCBdKVxuICAgICAgICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2NhdGFsb2dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIExpc3QucmV2X2FwcGVuZCBhY2MgWyBsaV9uZXc7IGxpX3ByZWZzIF0pXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpKTtcbiAgICAgIFVpX2NvbW1vbi5jcmVhdGVfbW9kYWxfdGV4dF9pbnB1dCB+aWQ6cHJvamVjdF9pZF9tb2RhbF9pZFxuICAgICAgICB+dGl0bGVfbGFiZWw6XCJOZXcgUHJvamVjdFwiXG4gICAgICAgIH5ib2R5OlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFslaHRtbFxuICAgICAgICAgICAgICB7fDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPnx9IFsgcHJvamVjdF9pZF9pbnB1dCBdIHt8PC9kaXY+fH1dO1xuICAgICAgICAgIF1cbiAgICAgICAgfnN1Ym1pdF9sYWJlbDpcIkNyZWF0ZSBQcm9qZWN0XCJcbiAgICAgICAgfnN1Ym1pdDpcbiAgICAgICAgICAoRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICBsZXQgc2V0dGluZ3NfY2xpZW50X2lkIDogc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgSnMudG9fc3RyaW5nIHByb2plY3RfaWRfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLmNyZWF0ZV9wcm9qZWN0IHNldHRpbmdzX2NsaWVudF9pZFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJvamVjdF9pZF9tb2RhbF9pZCkgfmFjdGlvbjpcImhpZGVcIlxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIEpzLl9mYWxzZSkpO1xuICAgIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IFBhbmVsX3ByZWZlcmVuY2VzX21vZGFsLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb25cbiAgICAgIChcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpXG4gICAgICBcInNob3duLmJzLm1vZGFsXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBwcm9qZWN0X2lkX2lucHV0X2RvbSMjZm9jdXMgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gbGlfbmV3KSMjLm9uY2xpY2tcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpIH5hY3Rpb246XCJzaG93XCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IGNyZWF0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBwYXJhbSA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgIChKcy5zdHJpbmdcbiAgICAgICAoXCJbcGFuZWxfcHJlZmVyZW5jZXNfY29udHJvbGxlci5jcmVhdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJdIHNlZWQgPSBcIlxuICAgICAgIF4gQ29tbW9uLnN0cmluZ19vZl9vcHRpb24gc3RyaW5nX29mX2ludCBwYXJhbS5TdGF0ZV9wcm9qZWN0LnNlZWQpKTtcbiAge1xuICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kO1xuICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gcGFyYW0uU3RhdGVfcHJvamVjdC5wYXVzZV9jb25kaXRpb247XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9zZWVkID0gcGFyYW0uU3RhdGVfcHJvamVjdC5zZWVkO1xuICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlO1xuICB9XG5cbmxldCBjb250aW51ZV9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0IHBhdXNlX2NvbmRpdGlvbiA9XG4gICAgICAgIGxldCBvcGVuIFN0YXRlX3Byb2plY3QgaW5cbiAgICAgICAgKFJlYWN0LlMudmFsdWUgbW9kZWwpLm1vZGVsX3BhcmFtZXRlcnMucGF1c2VfY29uZGl0aW9uXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmNvbnRpbnVlX3NpbXVsYXRpb24gcGF1c2VfY29uZGl0aW9uKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHBhdXNlX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX3NpbXVsYXRpb24ucGF1c2Vfc2ltdWxhdGlvbiAoKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzdG9wX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBDb21tb24uZGVidWcgfmxvYzpfX0xPQ19fXG4gICAgICAgIChKcy5zdHJpbmcgXCJbc3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIuc3RvcF9zaW11bGF0aW9uXVwiKTtcbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfc2ltdWxhdGlvbi5zdG9wX3NpbXVsYXRpb24gKCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc3RhcnRfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIENvbW1vbi5kZWJ1ZyB+bG9jOl9fTE9DX19cbiAgICAgICAgKEpzLnN0cmluZyBcIltwYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLnN0YXJ0X3NpbXVsYXRpb25dXCIpO1xuICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgICAgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCkuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLnN0YXJ0X3NpbXVsYXRpb24gc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgbW9kZWxfcGVydHVyYmF0aW9uID1cbiAgICAgICAgUmVhY3QuUy52YWx1ZSBTdGF0ZV9wZXJ0dXJiYXRpb24ubW9kZWxfaW50ZXJ2ZW50aW9uXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmludGVydmVuZV9zaW11bGF0aW9uIG1vZGVsX3BlcnR1cmJhdGlvbilcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biB0ZXh0IC0+XG4gICAgICAgICAgICAgIFN0YXRlX2Vycm9yLmFkZF9lcnJvciBfX0xPQ19fXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuSW5mbztcbiAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBmb2N1c19yYW5nZSAocmFuZ2UgOiBMb2MudCkgOiB1bml0ID1cbiAgbGV0IGZpbGVfaWQgPSByYW5nZS5Mb2MuZmlsZSBpblxuICBsZXQgbGluZSA9IHJhbmdlLkxvYy5mcm9tX3Bvc2l0aW9uLkxvYy5saW5lIGluXG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCAoU29tZSBsaW5lKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzaW11bGF0aW9uX3RyYWNlICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfd2l0aF9sd3Qgfm9rOihmdW4gZGF0YV9zdHJpbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgZGF0YV9zdHJpbmcgaW5cbiAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcbiAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6XCJ0cmFjZS5qc29uXCI7XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBzaW11bGF0aW9uX291dHB1dHMgKCkgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyBtYW5hZ2VyI3NpbXVsYXRpb25fb3V0cHV0c196aXBcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIGRhdGFfYmlnc3RyaW5nIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGFfYmlnc3RyaW5nIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vemlwXCJcbiAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpcInNpbXVsYXRpb25fb3V0cHV0cy56aXBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcbm9wZW4gTGlzdF91dGlsLkluZml4XG5cbmxldCB2aXNpYmxlX29uX3N0YXRlcyA/KGFfY2xhc3MgPSBbXSlcbiAgICAoc3RhdGUgOiBTdGF0ZV9zaW11bGF0aW9uLnNpbXVsYXRpb25fc3RhdHVzIGxpc3QpIDogc3RyaW5nIGxpc3QgUmVhY3Quc2lnbmFsXG4gICAgPVxuICBsZXQgaGlkZGVuX2NsYXNzID0gWyBcImhpZGRlblwiIF0gaW5cbiAgbGV0IHZpc2libGVfY2xhc3MgPSBbIFwidmlzaWJsZVwiIF0gaW5cbiAgUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgbGV0IGN1cnJlbnRfc3RhdGUgPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgaW5cbiAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgKGlmIExpc3QubWVtIGN1cnJlbnRfc3RhdGUgc3RhdGUgdGhlblxuICAgICAgICAgICBhX2NsYXNzIEAgdmlzaWJsZV9jbGFzc1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBhX2NsYXNzIEAgaGlkZGVuX2NsYXNzKSlcblxubW9kdWxlIEZvcm1QZXJ0dXJiYXRpb24gOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfcGVydHVyYmF0aW9uXCJcblxuICBsZXQgaW5wdXQgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcIlNpbXVsYXRpb24gUGVydHVyYmF0aW9uXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQ7IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImludGVydmVudGlvblwiIF1cblxuICBsZXQgZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImZvcm0taG9yaXpvbnRhbFwiIF1cbiAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMTBcIjsgXCJjb2wteHMtOVwiIF0gXSBbIGlucHV0IF07XG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF0gXSBbIGJ1dHRvbiBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgPSBbIGZvcm0gXVxuXG4gIGxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgICBsZXQgZm9ybV9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBmb3JtIGluXG4gICAgbGV0IGlucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dCBpblxuICAgIGxldCBoYW5kbGVyIF8gPVxuICAgICAgbGV0IG1vZGVsX3BlcnR1cmJhdGlvbiA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSBpblxuICAgICAgbGV0ICgpID0gU3RhdGVfcGVydHVyYmF0aW9uLnNldF9tb2RlbF9pbnRlcnZlbnRpb24gbW9kZWxfcGVydHVyYmF0aW9uIGluXG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9ybV9kb20jIy5vbnN1Ym1pdCA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3ByZWZlcmVuY2VzX2NvbnRyb2xsZXIuaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl9mYWxzZSlcbiAgICBpblxuICAgIGxldCAoKSA9IGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9IERvbS5oYW5kbGVyIGhhbmRsZXIgaW5cbiAgICAoKVxuZW5kXG5cbmxldCBzaWduYWxfY2hhbmdlIGlucHV0X2RvbSBzaWduYWxfaGFuZGxlciA9XG4gIGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9XG4gICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2lnbmFsX2hhbmRsZXIgKEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSkgaW5cbiAgICAgICAgSnMuX3RydWUpXG5cbm1vZHVsZSBJbnB1dFBhdXNlQ29uZGl0aW9uIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX3BhdXNlX2NvbmRpdGlvblwiXG5cbiAgbGV0IGlucHV0ID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiW1RdID4gMTAwXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfdmFsdWVcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIG0uU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3QucGF1c2VfY29uZGl0aW9uKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGlucHV0IF1cbiAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dFxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCAoKSA9XG4gICAgICBzaWduYWxfY2hhbmdlIGRvbSAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgbGV0IHYnID1cbiAgICAgICAgICAgIGlmIHZhbHVlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgIFwiW2ZhbHNlXVwiXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnNldF9wYXVzZV9jb25kaXRpb24gdicpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBJbnB1dFBsb3RQZXJpb2QgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfcGxvdF9wZXJpb2RcIlxuXG4gIGxldCBmb3JtYXRfZmxvYXRfc3RyaW5nIHZhbHVlID1cbiAgICBsZXQgbiA9IHN0cmluZ19vZl9mbG9hdCB2YWx1ZSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIG4gaW5cbiAgICBpZiBsZW5ndGggPiAwICYmIFN0cmluZy5nZXQgbiAobGVuZ3RoIC0gMSkgPSAnLicgdGhlblxuICAgICAgbiBeIFwiMFwiXG4gICAgZWxzZVxuICAgICAgblxuXG4gIGxldCBpbnB1dCA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwidGltZSB1bml0c1wiO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF9taW4gKGBOdW1iZXIgMCk7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfdmFsdWVcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIGZvcm1hdF9mbG9hdF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICBtLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGlucHV0IF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGlucHV0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNpZ25hbF9jaGFuZ2UgaW5wdXRfZG9tIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICBsZXQgcmVzZXRfdmFsdWUgKCkgPVxuICAgICAgICAgICAgbGV0IG9sZF92YWx1ZSA9XG4gICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3Byb2plY3QubW9kZWwpLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgb2xkX3ZhbHVlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgbmV3X3ZhbHVlID0gZmxvYXRfb2Zfc3RyaW5nIHZhbHVlIGluXG4gICAgICAgICAgICBpZiBuZXdfdmFsdWUgPCAwLiB0aGVuXG4gICAgICAgICAgICAgIHJlc2V0X3ZhbHVlICgpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3Quc2V0X3Bsb3RfcGVyaW9kIG5ld192YWx1ZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+IHJlc2V0X3ZhbHVlICgpKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgRGl2RXJyb3JNZXNzYWdlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWRfZXJyb3IgPSBcImNvbmZpZ3VyYXRpb25fZXJyb3JfZGl2XCJcbiAgbGV0IGlkX2FsZXJ0ID0gXCJjb25maWd1cmF0aW9uX2FsZXJ0X2RpdlwiXG4gIGxldCBpZCA9IGlkX2Vycm9yXG4gICgqIFRPRE86IGNsZWFuIHRoaXMgaWQgbWF0dGVyICopXG5cbiAgbGV0IG1lc3NhZ2VfbmF2X2luY19pZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfbWVzc2FnZV9uYXZfaW5jX2lkXCJcbiAgbGV0IG1lc3NhZ2VfbmF2X2RlY19pZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfbWVzc2FnZV9uYXZfZGVjX2lkXCJcbiAgbGV0IG1lc3NhZ2VfZmlsZV9sYWJlbF9pZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfbWVzc2FnZV9maWxlX2xhYmVsXCJcbiAgbGV0IGVycm9yX2luZGV4LCBlcnJvcl9pbmRleF9zZXQgPSBIb29rZWQuUy5jcmVhdGUgfmRlYnVnOlwiZXJyb3JfaW5kZXhcIiBOb25lXG5cbiAgbGV0ICgpID1cbiAgICBIb29rZWQuUy5yZWdpc3RlciBTdGF0ZV9lcnJvci5lcnJvcnMgKGZ1biBlcnJvcnMgLT5cbiAgICAgICAgbWF0Y2ggZXJyb3JzIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgIChtYXRjaCBIb29rZWQuUy52YWx1ZSBlcnJvcl9pbmRleCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yX2luZGV4X3NldCAoU29tZSAwKVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpKSlcblxuICAoKiBpZiB0aGVyZSBhcmUgbGVzcyBvciBubyBlcnJvcnMgdGhlIGluZGV4IG5lZWRzIHRvIGJlIHVwZGF0ZWQgKilcbiAgbGV0IHNhbml0aXplX2luZGV4IChpbmRleCA6IGludCBvcHRpb24pIGVycm9ycyA6IGludCBvcHRpb24gPVxuICAgIG1hdGNoIGluZGV4LCBlcnJvcnMgd2l0aFxuICAgIHwgTm9uZSwgW10gLT4gTm9uZVxuICAgIHwgTm9uZSwgXyA6OiBfIC0+IFNvbWUgMFxuICAgIHwgU29tZSBfLCBbXSAtPiBOb25lXG4gICAgfCBTb21lIGluZGV4LCBlcnJvciAtPlxuICAgICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGVycm9yIGluXG4gICAgICBpZiBpbmRleCA+IGxlbmd0aCB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gZXJyb3JfaW5kZXhfc2V0IChTb21lIDApIGluXG4gICAgICAgIFNvbWUgMFxuICAgICAgKSBlbHNlIGlmIDAgPiBpbmRleCB0aGVuIChcbiAgICAgICAgbGV0IGluZGV4ID0gU29tZSAoTGlzdC5sZW5ndGggZXJyb3IgLSAxKSBpblxuICAgICAgICBsZXQgKCkgPSBlcnJvcl9pbmRleF9zZXQgaW5kZXggaW5cbiAgICAgICAgaW5kZXhcbiAgICAgICkgZWxzZVxuICAgICAgICBTb21lIGluZGV4XG5cbiAgbGV0IGdldF9tZXNzYWdlIChpbmRleCA6IGludCBvcHRpb24pIGVycm9ycyA6IEFwaV90eXBlc190Lm1lc3NhZ2Ugb3B0aW9uID1cbiAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAoZnVuIG4gLT4gU29tZSAoTGlzdC5udGggZXJyb3JzIG4pKVxuICAgICAgKHNhbml0aXplX2luZGV4IGluZGV4IGVycm9ycylcblxuICBsZXQgbWVzc2FnZV9uYXZfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBtYXRjaCBpbmRleCwgZXJyb3Igd2l0aFxuICAgICAgICB8IE5vbmUsIFtdIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIF8sIFtdIC0+IFwiXCJcbiAgICAgICAgfCBOb25lLCBfIDo6IF8gLT4gXCJcIlxuICAgICAgICB8IFNvbWUgaW5kZXgsIChfIDo6IF8gYXMgZXJyb3JzKSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJWQvJWRcIiAoaW5kZXggKyAxKSAoTGlzdC5sZW5ndGggZXJyb3JzKSlcbiAgICAgIChIb29rZWQuUy50b19yZWFjdF9zaWduYWwgZXJyb3JfaW5kZXgpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIFN0YXRlX2Vycm9yLmVycm9ycylcblxuICBsZXQgYV9jbGFzcyA9XG4gICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgIChSZWFjdC5TLmJpbmQgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgIChtYXRjaCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gWyBcImVycm9yLXNwYW5cIjsgXCJjbGlja2FibGVcIiBdKSkpXG5cbiAgbGV0IG1lc3NhZ2VfbmF2X2RlYyA9XG4gICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2lkIG1lc3NhZ2VfbmF2X2RlY19pZDsgYV9jbGFzcyBdIFsgSHRtbC50eHQgXCIgwqsgXCIgXVxuXG4gIGxldCBtZXNzYWdlX25hdl9pbmMgPVxuICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9pZCBtZXNzYWdlX25hdl9pbmNfaWQ7IGFfY2xhc3MgXSBbIEh0bWwudHh0IFwiIMK7IFwiIF1cblxuICBsZXQgbWVzc2FnZV9uYXYgPVxuICAgIFsgbWVzc2FnZV9uYXZfZGVjOyBUeXhtbF9qcy5SLkh0bWwudHh0IG1lc3NhZ2VfbmF2X3RleHQ7IG1lc3NhZ2VfbmF2X2luYyBdXG5cbiAgbGV0IGZpbGVfbGFiZWxfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBsZXQgcmFuZ2UgPVxuICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgIChmdW4gbWVzc2FnZSAtPiBtZXNzYWdlLlJlc3VsdF91dGlsLnJhbmdlKVxuICAgICAgICAgICAgKGdldF9tZXNzYWdlIGluZGV4IGVycm9yKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSByYW5nZSAtPiBGb3JtYXQuc3ByaW50ZiBcIlslc11cIiByYW5nZS5Mb2MuZmlsZSlcbiAgICAgIChIb29rZWQuUy50b19yZWFjdF9zaWduYWwgZXJyb3JfaW5kZXgpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIFN0YXRlX2Vycm9yLmVycm9ycylcblxuICBsZXQgZmlsZV9sYWJlbCA9XG4gICAgSHRtbC5zcGFuXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBtZXNzYWdlX2ZpbGVfbGFiZWxfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJlcnJvci1zcGFuXCI7IFwiY2xpY2thYmxlXCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBUeXhtbF9qcy5SLkh0bWwudHh0IGZpbGVfbGFiZWxfdGV4dCBdXG5cbiAgbGV0IGVycm9yX21lc3NhZ2VfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBtYXRjaCBnZXRfbWVzc2FnZSBpbmRleCBlcnJvciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBtZXNzYWdlIC0+IEZvcm1hdC5zcHJpbnRmIFwiICVzIFwiIG1lc3NhZ2UuUmVzdWx0X3V0aWwudGV4dClcbiAgICAgIChIb29rZWQuUy50b19yZWFjdF9zaWduYWwgZXJyb3JfaW5kZXgpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIFN0YXRlX2Vycm9yLmVycm9ycylcblxuICBsZXQgZXJyb3JfbWVzc2FnZSA9XG4gICAgSHRtbC5zcGFuXG4gICAgICB+YTpbIEh0bWwuYV9pZCBpZF9lcnJvcjsgSHRtbC5hX2NsYXNzIFsgXCJlcnJvci1zcGFuXCIgXSBdXG4gICAgICBbIFR5eG1sX2pzLlIuSHRtbC50eHQgZXJyb3JfbWVzc2FnZV90ZXh0IF1cblxuICBsZXQgYWxlcnRfbWVzc2FnZXMgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZF9hbGVydDtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgICAgIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBbIFwiYWxlcnQtc21cIjsgXCJhbGVydFwiIF1cbiAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPiBbIFwiYWxlcnQtc21cIjsgXCJhbGVydFwiOyBcImFsZXJ0LWRhbmdlclwiIF0pKSk7XG4gICAgICAgIF1cbiAgICAgIChtZXNzYWdlX25hdiBAIFsgZmlsZV9sYWJlbDsgZXJyb3JfbWVzc2FnZSBdKVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBbIGFsZXJ0X21lc3NhZ2VzIF1cblxuICBsZXQgZmlsZV9jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gZmlsZV9sYWJlbCBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgXCJbUGFuZWxfcHJlZmVyZW5jZXNdIGNsaWNrZWQgZmlsZV9jbGlja19oYW5kbGVyXCIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgOiBBcGlfdHlwZXNfdC5tZXNzYWdlIG9wdGlvbiA9XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlXG4gICAgICAgICAgICAgICAgKEhvb2tlZC5TLnZhbHVlIGVycm9yX2luZGV4KVxuICAgICAgICAgICAgICAgIChIb29rZWQuUy52YWx1ZSBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgIChmdW4gbWVzc2FnZSAtPiBtZXNzYWdlLlJlc3VsdF91dGlsLnJhbmdlKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByYW5nZSAtPiBQYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLmZvY3VzX3JhbmdlIHJhbmdlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gZGVsdGEgPVxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnIH5sb2M6X19MT0NfX1xuICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgXCJbUGFuZWxfcHJlZmVyZW5jZXNdIGNsaWNrZWQgaW5kZXhfY2xpY2tfaGFuZGxlclwiKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgICBzYW5pdGl6ZV9pbmRleFxuICAgICAgICAgICAgICAgIChIb29rZWQuUy52YWx1ZSBlcnJvcl9pbmRleClcbiAgICAgICAgICAgICAgICAoSG9va2VkLlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA9IE9wdGlvbl91dGlsLm1hcCBkZWx0YSBpbmRleCBpblxuICAgICAgICAgICAgbGV0IGluZGV4IDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgIHNhbml0aXplX2luZGV4IGluZGV4IChIb29rZWQuUy52YWx1ZSBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gZXJyb3JfaW5kZXhfc2V0IGluZGV4IGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5cbiAgbGV0IGluY19jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gbWVzc2FnZV9uYXZfZGVjIGluXG4gICAgbGV0ICgpID0gaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gKGZ1biBpbmRleCAtPiBpbmRleCArIDEpIGluXG4gICAgKClcblxuICBsZXQgZGVjX2NsaWNrX2hhbmRsZXIgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2Zfc3BhbiBtZXNzYWdlX25hdl9pbmMgaW5cbiAgICBsZXQgKCkgPSBpbmRleF9jbGlja19oYW5kbGVyIGRvbSAoZnVuIGluZGV4IC0+IGluZGV4IC0gMSkgaW5cbiAgICAoKVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCAoKSA9IGZpbGVfY2xpY2tfaGFuZGxlciAoKSBpblxuICAgIGxldCAoKSA9IGluY19jbGlja19oYW5kbGVyICgpIGluXG4gICAgbGV0ICgpID0gZGVjX2NsaWNrX2hhbmRsZXIgKCkgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25TdGFydCA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9wcmVmZXJlbmNlc19zdGFydF9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgIFN0YXRlX2ZpbGUuY3VycmVudCA9IFNvbWUgeyBTdGF0ZV9maWxlLm91dF9vZl9zeW5jOyBfIH07XG4gICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luY1xuICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICBTdGF0ZV9maWxlLm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwic3RhcnRcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IHN0YXJ0X2J1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdGFydF9idXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3ByZWZlcmVuY2VzX2NvbnRyb2xsZXIuc3RhcnRfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvbkNsZWFyIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3ByZWZlcmVuY2VzX2NsZWFyX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiY2xlYXJcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGRvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLnN0b3Bfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25QYXVzZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9wcmVmZXJlbmNlc19wYXVzZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcInBhdXNlXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLnBhdXNlX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uVHJhY2UgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfZ2V0X3RyYWNlX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgWyBcImRpc2FibGVkXCIgXSlcbiAgICAgICAgICAgICAgICAgQCBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImdldCB0cmFjZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJlZmVyZW5jZXNfY29udHJvbGxlci5zaW11bGF0aW9uX3RyYWNlICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvbk91dHB1dHMgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfcHJlZmVyZW5jZXNfb3V0cHV0c19idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcIkFsbCBvdXRwdXRzXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLnNpbXVsYXRpb25fb3V0cHV0cyAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25Db250aW51ZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9wcmVmZXJlbmNlc19jb250aW51ZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImNvbnRpbnVlXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlc19jb250cm9sbGVyLmNvbnRpbnVlX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgRGl2U3RhdHVzSW5kaWNhdG9yIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInNldHRpbmdfc3RhdHVzX2luZGljYXRvclwiXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPVxuICAgIGxldCBkZWJ1ZyA9XG4gICAgICBIdG1sLmRpdlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLnNpbXVsYXRpb25fc3RhdHVzX3RvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbClcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdCBsYWJlbCkpO1xuICAgICAgICBdXG4gICAgaW5cbiAgICBbIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2lkIGlkIF0gKFVpX2NvbW1vbi5sZXZlbCB+ZGVidWcgKCkpIF1cblxuICBsZXQgb25sb2FkICgpID0gKClcbmVuZFxuXG5tb2R1bGUgUnVubmluZ1BhbmVsTGF5b3V0IDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInNldHRpbmdzX3J1bmV0aW1lX2xheW91dFwiXG5cbiAgbGV0IHByb2dyZXNzX2JhciAocGVyY2VudF9zaWduYWwgOiBpbnQgVHl4bWxfanMuUi5IdG1sLndyYXApXG4gICAgICAodmFsdWVfc2lnbmFsIDogc3RyaW5nIFJlYWN0LnNpZ25hbCkgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJwcm9ncmVzc2JhclwiO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVub3dcIiBwZXJjZW50X3NpZ25hbDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5pbnRfYXR0cmliIFwiYXJpYS12YWx1ZW1pblwiIDA7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVtYXhcIiAxMDA7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIHMgLT4gRm9ybWF0LnNwcmludGYgXCJ3aWR0aDogJWQlJTtcIiBzKVxuICAgICAgICAgICAgICAgcGVyY2VudF9zaWduYWwpO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwicHJvZ3Jlc3MtYmFyXCIgXTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAgICAgKFJlYWN0LlMuYmluZCB2YWx1ZV9zaWduYWwgKGZ1biB2YWx1ZSAtPiBSZWFjdC5TLmNvbnN0IHZhbHVlKSk7XG4gICAgICBdXG5cbiAgbGV0IHRpbWVfcHJvZ3Jlc3NfYmFyICgpID1cbiAgICBwcm9ncmVzc19iYXJcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5nZXRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCB0aW1lX3BlcmNlbnQgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHRpbWVfcGVyY2VudCA6IGludCA9IE9wdGlvbl91dGlsLnVuc29tZSAxMDAgdGltZV9wZXJjZW50IGluXG4gICAgICAgICAgIHRpbWVfcGVyY2VudClcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdGltZSA6IGZsb2F0IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCB0aW1lIDogZmxvYXQgPSBPcHRpb25fdXRpbC51bnNvbWUgMC4wIHRpbWUgaW5cbiAgICAgICAgICAgc3RyaW5nX29mX2Zsb2F0IHRpbWUpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCBldmVudF9wcm9ncmVzc19iYXIgKCkgPVxuICAgIHByb2dyZXNzX2JhclxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50X3BlcmNlbnRhZ2UgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBldmVudF9wZXJjZW50YWdlIDogaW50ID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgMTAwIGV2ZW50X3BlcmNlbnRhZ2VcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZXZlbnRfcGVyY2VudGFnZSlcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgZXZlbnQgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50KVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBldmVudCA6IGludCA9IE9wdGlvbl91dGlsLnVuc29tZSAwIGV2ZW50IGluXG4gICAgICAgICAgIHN0cmluZ19vZl9pbnQgZXZlbnQpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCB0cmFja2VkX2V2ZW50cyBzdGF0ZSA9XG4gICAgbGV0IHRyYWNrZWRfZXZlbnRzIDogaW50IG9wdGlvbiA9XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cylcbiAgICAgICAgc3RhdGVcbiAgICBpblxuICAgIG1hdGNoIHRyYWNrZWRfZXZlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB0cmFja2VkX2V2ZW50cyAtPlxuICAgICAgaWYgdHJhY2tlZF9ldmVudHMgPiAwIHRoZW5cbiAgICAgICAgU29tZSB0cmFja2VkX2V2ZW50c1xuICAgICAgZWxzZVxuICAgICAgICBOb25lXG5cbiAgbGV0IHRyYWNrZWRfZXZlbnRzX2NvdW50ICgpID1cbiAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24uZ2V0X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBtYXRjaCB0cmFja2VkX2V2ZW50cyBzaW11bGF0aW9uX2luZm8gd2l0aFxuICAgICAgICAgICB8IFNvbWUgdHJhY2tlZF9ldmVudHMgLT4gc3RyaW5nX29mX2ludCB0cmFja2VkX2V2ZW50c1xuICAgICAgICAgICB8IE5vbmUgLT4gXCIgXCIpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCB0cmFja2VkX2V2ZW50c19sYWJlbCAoKSA9XG4gICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLmdldF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbWF0Y2ggdHJhY2tlZF9ldmVudHMgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgICAgICAgfCBTb21lIF8gLT4gXCJ0cmFja2VkIGV2ZW50c1wiXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIiBcIilcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IGVmZmljaWVuY3lfZGV0YWlsIH5jdXJyZW50X2V2ZW50IHQgPVxuICAgIGxldCBhbGwgPVxuICAgICAgZmxvYXRfb2ZfaW50XG4gICAgICAgICh0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX2JpbmFyeVxuICAgICAgICsgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeVxuICAgICAgICsgdC5Db3VudGVyLkVmZmljaWVuY3kuY2xhc2hpbmdfaW5zdGFuY2VcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5LnRpbWVfY29ycmVjdGlvbilcbiAgICBpblxuICAgIGxldCBldmVudHMgPSBmbG9hdF9vZl9pbnQgY3VycmVudF9ldmVudCBpblxuICAgIEh0bWwucFxuICAgICAgW1xuICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyUuMmYlJSBvZiBldmVudCBsb29wcyB3ZXJlIHByb2R1Y3RpdmUuJXRAXVwiXG4gICAgICAgICAgICAgKDEwMC4gKi4gZXZlbnRzIC8uIChhbGwgKy4gZXZlbnRzKSlcbiAgICAgICAgICAgICAoZnVuIGYgLT4gaWYgYWxsID4gMC4gdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQCBOdWxsIGV2ZW50IGNhdXNlOlwiKSk7XG4gICAgICBdXG4gICAgOjogKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX3VuYXJ5ID4gMCB0aGVuXG4gICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICBcIlZhbGlkIGVtYmVkZGluZyBidXQgbm8gbG9uZ2VyIHVuYXJ5IHdoZW4gcmVxdWlyZWQ6IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnQgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBOb25lKVxuICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnkgPiAwIHRoZW5cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVmFsaWQgZW1iZWRkaW5nIGJ1dCBub3QgYmluYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludCB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX2JpbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kuY2xhc2hpbmdfaW5zdGFuY2UgPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQ2xhc2hpbmcgaW5zdGFuY2U6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgJCQgKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb24gPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGVydHVyYmF0aW9uIGludGVycnVwdGluZyB0aW1lIGFkdmFuY2U6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuQ291bnRlci5FZmZpY2llbmN5LnRpbWVfY29ycmVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICAgICAgICQkIFtdKSkpKVxuXG4gIGxldCBkb250X2djX21lID0gcmVmIFtdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBIdG1sX3R5cGVzLmRpdl9jb250ZW50IFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPVxuICAgIGxldCBzdGF0ZV9sb2csIHNldF9zdGF0ZV9sb2cgPSBSZWFjdGl2ZURhdGEuUkxpc3QuY3JlYXRlIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGRvbnRfZ2NfbWUgOj1cbiAgICAgICAgW1xuICAgICAgICAgIEx3dF9yZWFjdC5TLm1hcF9zXG4gICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIHN0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX3dpdGhfbHd0IH5vazooZnVuIGVmZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudF9ldmVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdGl2ZURhdGEuUkxpc3Quc2V0IHNldF9zdGF0ZV9sb2dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZmZpY2llbmN5X2RldGFpbCB+Y3VycmVudF9ldmVudCBlZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG4gICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3Quc2V0IHNldF9zdGF0ZV9sb2cgW10gaW5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWw7XG4gICAgICAgIF1cbiAgICBpblxuXG4gICAgW1xuICAgICAgWyVodG1sXG4gICAgICAgIHt8XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBpZD1cInx9XG4gICAgICAgICAgaWRcbiAgICAgICAgICB7fFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICAgICAgfH1cbiAgICAgICAgICBbIGV2ZW50X3Byb2dyZXNzX2JhciAoKSBdXG4gICAgICAgICAge3xcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0zXCI+ZXZlbnRzPC9kaXY+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+XG4gICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdGltZV9wcm9ncmVzc19iYXIgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPnRpbWU8L2Rpdj5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgIHx9XG4gICAgICAgICAgWyB0cmFja2VkX2V2ZW50c19jb3VudCAoKSBdXG4gICAgICAgICAge3xcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPlxuICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdHJhY2tlZF9ldmVudHNfbGFiZWwgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInZpc2libGUtbWQtYmxvY2sgdmlzaWJsZS1sZy1ibG9ja1wiPlxufH1cbiAgICAgICAgICBbIFR5eG1sX2pzLlIuSHRtbC5kaXYgc3RhdGVfbG9nIF1cbiAgICAgICAgICB7fFxuPC9kaXY+XG48L2Rpdj5cbiAgIHx9XTtcbiAgICBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9ICgpXG5lbmRcblxubGV0IHN0b3BwZWRfYm9keSAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgbGV0IHN0b3BwZWRfcm93ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgICB+YV9jbGFzczpbIFwiZm9ybS1ncm91cFwiOyBcImZvcm0tZ3JvdXAtc21cIiBdXG4gICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRCBdKTtcbiAgICAgICAgXVxuICAgICAgWyVodG1sXG4gICAgICAgIHt8XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMSBjb2wtbWQtMiBjb2wteHMtMiBjb250cm9sLWxhYmVsXCIgZm9yPVwifH1cbiAgICAgICAgICBJbnB1dFBsb3RQZXJpb2QuaWRcbiAgICAgICAgICB7fFwiPlBsb3QgcGVyaW9kPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wteHMtM1wiPnx9XG4gICAgICAgICAgKElucHV0UGxvdFBlcmlvZC5jb250ZW50ICgpKVxuICAgICAgICAgIHt8PC9kaXY+fH1dXG4gIGluXG4gIGxldCBwYXVzZWRfcm93ID0gRm9ybVBlcnR1cmJhdGlvbi5jb250ZW50ICgpIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgfmFfY2xhc3M6WyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1jb250cm9sc1wiIF1cbiAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRDsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICBdXG4gICAgKFslaHRtbFxuICAgICAgIHt8XG4gICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMSBjb2wtc20tMiBoaWRkZW4teHMgY29udHJvbC1sYWJlbFwiIGZvcj1cInx9XG4gICAgICAgICBJbnB1dFBhdXNlQ29uZGl0aW9uLmlkXG4gICAgICAgICB7fFwiPlBhdXNlIGlmPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtc20tMyBjb2wteHMtNVwiPnx9XG4gICAgICAgICAoSW5wdXRQYXVzZUNvbmRpdGlvbi5jb250ZW50ICgpKVxuICAgICAgICAge3w8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBjb2wtbWQtOCBjb2wteHMtN1wiPnx9XG4gICAgICAgICAoRGl2RXJyb3JNZXNzYWdlLmNvbnRlbnQgKCkpXG4gICAgICAgICB7fDwvZGl2PlxuICAgICAgICAgIDwvZGl2Pnx9XG4gICAgICAgICBbIHN0b3BwZWRfcm93IF0ge3w8L2Zvcm0+fH1dXG4gICAgOjogcGF1c2VkX3JvdylcblxubGV0IGluaXRpYWxpemluZ19ib2R5ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtY29udHJvbHNcIiBdXG4gICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLklOSVRBTElaSU5HIF0pO1xuICAgICAgXVxuICAgIFsgSHRtbC5lbnRpdHkgXCJuYnNwXCIgXVxuXG5sZXQgcnVubmluZ19ib2R5ICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICB+YV9jbGFzczpbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLWNvbnRyb2xzXCIgXVxuICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgXVxuICAgIChSdW5uaW5nUGFuZWxMYXlvdXQuY29udGVudCAoKSlcblxubGV0IGZvb3RlciAoKSA9XG4gIFslaHRtbFxuICAgIHt8XG4gICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICB8fVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtNFwiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uU1RPUFBFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uU3RhcnQuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy0zXCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvbkNvbnRpbnVlLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25PdXRwdXRzLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25UcmFjZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTRcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlJVTk5JTkcgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvblBhdXNlLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLXhzLTJcIjsgXCJjb2wtc20tMVwiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEOyBTdGF0ZV9zaW11bGF0aW9uLlJVTk5JTkcgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvbkNsZWFyLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMVwiOyBcImNvbC14cy0zXCIgXSBdXG4gICAgICAgICAgKERpdlN0YXR1c0luZGljYXRvci5jb250ZW50ICgpIEAgWyBIdG1sLmVudGl0eSBcIm5ic3BcIiBdKTtcbiAgICAgIF1cbiAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICB8fV1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfcHJvamVjdC5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2N1cnJlbnRfaWQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgWyBcImhpZGVcIiBdXG4gICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBSZWFjdC5TLmNvbnN0IFsgXCJwYW5lbFwiOyBcInBhbmVsLWRlZmF1bHRcIiBdKSk7XG4gICAgICBdXG4gICAgWyBzdG9wcGVkX2JvZHkgKCk7IGluaXRpYWxpemluZ19ib2R5ICgpOyBydW5uaW5nX2JvZHkgKCk7IGZvb3RlciAoKSBdXG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgbGV0ICgpID0gRm9ybVBlcnR1cmJhdGlvbi5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gSW5wdXRQYXVzZUNvbmRpdGlvbi5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gSW5wdXRQbG90UGVyaW9kLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBEaXZFcnJvck1lc3NhZ2Uub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvblN0YXJ0Lm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25QYXVzZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uQ29udGludWUub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvblRyYWNlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25PdXRwdXRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25DbGVhci5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gRGl2U3RhdHVzSW5kaWNhdG9yLm9ubG9hZCAoKSBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvbmxvYWQgKF8gOiAnYSkgOiBib29sIEpzLnQgPVxuICBsZXQgKCkgPSBTdGF0ZV91aS5vbmxvYWQgKCkgaW5cbiAgbGV0IG1haW4gPSBVaV9jb21tb24uaWRfZG9tIFwibWFpblwiIGluXG4gIGxldCAoKSA9XG4gICAgRG9tLmFwcGVuZENoaWxkIG1haW4gKFR5eG1sX2pzLlRvX2RvbS5vZl9kaXYgKFBhbmVsX3Byb2plY3RzLmNvbnRlbnQgKCkpKVxuICBpblxuICBsZXQgKCkgPSBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoUGFuZWxfdGFicy5uYXZ0YWJzICgpKSBpblxuICBsZXQgKCkgPSBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoUGFuZWxfdGFicy5uYXZjb250ZW50cyAoKSkgaW5cbiAgbGV0ICgpID1cbiAgICBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoVHl4bWxfanMuVG9fZG9tLm9mX2RpdiAoUGFuZWxfcHJlZmVyZW5jZXMuY29udGVudCAoKSkpXG4gIGluXG5cbiAgbGV0ICgpID0gUGFuZWxfcHJvamVjdHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFBhbmVsX3RhYnMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFBhbmVsX3ByZWZlcmVuY2VzLm9ubG9hZCAoKSBpblxuXG4gIGxldCBfID1cbiAgICBEb21faHRtbC53aW5kb3cjIy5vbnJlc2l6ZSA6PVxuICAgICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcm9qZWN0cy5vbnJlc2l6ZSAoKSBpblxuICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3RhYnMub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9wcmVmZXJlbmNlcy5vbnJlc2l6ZSAoKSBpblxuICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBKcy5fdHJ1ZVxuXG5sZXQgXyA9IERvbV9odG1sLndpbmRvdyMjLm9ubG9hZCA6PSBEb21faHRtbC5oYW5kbGVyIG9ubG9hZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= diff --git a/try/index.html b/try/index.html index 0f9ec722..e9010937 100644 --- a/try/index.html +++ b/try/index.html @@ -31,22 +31,22 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - +